diff --git a/.gitmodules b/.gitmodules index 3459dd91fb44..696e6e3d7eb7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,3 +8,13 @@ url = https://github.com/mgba-emu/mgba.git branch = master shallow = true +[submodule "Externals/FFmpeg-bin"] + path = Externals/FFmpeg-bin + url = https://github.com/dolphin-emu/ext-win-ffmpeg.git + branch = master + shallow = true +[submodule "libusb"] + path = Externals/libusb/libusb + url = https://github.com/libusb/libusb.git + branch = master + shallow = true diff --git a/BuildMacOSUniversalBinary.py b/BuildMacOSUniversalBinary.py index dcc96da34395..5f9b45744c68 100755 --- a/BuildMacOSUniversalBinary.py +++ b/BuildMacOSUniversalBinary.py @@ -337,7 +337,7 @@ def build(config): if not os.path.exists(arch): os.mkdir(arch) - print("Building and running unit tests for: {arch}") + print(f"Building and running unit tests for: {arch}") unit_test_results[arch] = \ subprocess.call(["cmake", "--build", ".", "--config", config["build_type"], diff --git a/CMake/FindMBEDTLS.cmake b/CMake/FindMBEDTLS.cmake index 97c45150a7a0..687994806f66 100644 --- a/CMake/FindMBEDTLS.cmake +++ b/CMake/FindMBEDTLS.cmake @@ -10,7 +10,7 @@ set(MBEDTLS_LIBRARIES ${MBEDTLS_LIBRARY} ${MBEDX509_LIBRARY} ${MBEDCRYPTO_LIBRAR set(CMAKE_REQUIRED_INCLUDES ${MBEDTLS_INCLUDE_DIRS}) check_cxx_source_compiles(" #include - #if MBEDTLS_VERSION_NUMBER < 0x02040000 + #if MBEDTLS_VERSION_NUMBER < 0x021C0000 #error \"Your mbed TLS version is too old.\" #endif int main() {}" diff --git a/CMakeLists.txt b/CMakeLists.txt index 1058abb1bddd..634c15fd05ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,6 +50,7 @@ option(ENABLE_TESTS "Enables building the unit tests" ON) option(ENABLE_VULKAN "Enables vulkan video backend" ON) option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence, show the current game on Discord" ON) option(USE_MGBA "Enables GBA controllers emulation using libmgba" ON) +option(ENABLE_AUTOUPDATE "Enables support for automatic updates" ON) # Maintainers: if you consider blanket disabling this for your users, please # consider the following points: @@ -264,7 +265,7 @@ if(CMAKE_C_COMPILER_ID MATCHES "MSVC") # Fix non-conformant lambda behavior (constexpr variables shouldn't need capturing) add_compile_options(/experimental:newLambdaProcessor) # Fix various other non-conformant behaviors - add_compile_options(/Zc:externConstexpr,lambda,preprocessor) + add_compile_options(/Zc:__cplusplus,externConstexpr,lambda,preprocessor) # Temporarily disable warnings to enable /Zc:preprocessor compatibility with WinSDK headers. add_compile_options( @@ -484,8 +485,12 @@ if(ENABLE_EGL) endif() if(ENCODE_FRAMEDUMPS) - if(WIN32 AND _M_X86_64) - set(FFMPEG_DIR Externals/ffmpeg) + if(WIN32) + if(_M_X86_64) + set(FFMPEG_DIR Externals/FFmpeg-bin/x64) + elseif(_M_ARM_64) + set(FFMPEG_DIR Externals/FFmpeg-bin/ARM64) + endif() endif() find_package(FFmpeg COMPONENTS avcodec avformat avutil swresample swscale) if(FFmpeg_FOUND) @@ -536,6 +541,11 @@ if(ENABLE_ANALYTICS) add_definitions(-DUSE_ANALYTICS=1) endif() +if(ENABLE_AUTOUPDATE) + message(STATUS "Enabling automatic update support") + add_definitions(-DAUTOUPDATE=1) +endif() + ######################################## # Setup include directories (and make sure they are preferred over the Externals) # diff --git a/Data/Sys/GameSettings/D43E01.ini b/Data/Sys/GameSettings/D43E01.ini index 6fb32ca1b2b2..72b0283d871d 100644 --- a/Data/Sys/GameSettings/D43E01.ini +++ b/Data/Sys/GameSettings/D43E01.ini @@ -23,7 +23,7 @@ $Infinite Hover When Moving 02CA2AB2 0000000F $Infinite Rupees 02BE181C 000003E7 -$Swords/Shields/boots/tunics +$Swords/Shields/Boots/Tunics 02BE1884 00007777 $Have Quiver (Adult) 00BE1889 00000001 diff --git a/Data/Sys/GameSettings/GDK.ini b/Data/Sys/GameSettings/GDK.ini index c1a0a4c18797..61fef4b42aac 100644 --- a/Data/Sys/GameSettings/GDK.ini +++ b/Data/Sys/GameSettings/GDK.ini @@ -2,7 +2,7 @@ [Core] # Values set here will override the main Dolphin settings. -# This game does not work properly with large memorycards, use a 251 block card +# This game does not work properly with large memory cards, use a 251 block card # see https://www.nintendo.com/consumer/memorycard1019.jsp MemoryCardSize = 2 diff --git a/Data/Sys/GameSettings/GDQ.ini b/Data/Sys/GameSettings/GDQ.ini index 29a97d93da81..42f9e62ac282 100644 --- a/Data/Sys/GameSettings/GDQ.ini +++ b/Data/Sys/GameSettings/GDQ.ini @@ -2,7 +2,7 @@ [Core] # Values set here will override the main Dolphin settings. -# This game does not work properly with large memorycards, use a 251 block card +# This game does not work properly with large memory cards, use a 251 block card # see https://www.nintendo.com/consumer/memorycard1019.jsp MemoryCardSize = 2 diff --git a/Data/Sys/GameSettings/GMPE01.ini b/Data/Sys/GameSettings/GMPE01.ini index b48d546033b4..b77cbb6231e5 100644 --- a/Data/Sys/GameSettings/GMPE01.ini +++ b/Data/Sys/GameSettings/GMPE01.ini @@ -123,6 +123,11 @@ $QOL - Automatically Advance Text Boxes [gamemasterplc] 04044A90 60000000 *Automatically scrolls the text boxes without pushing A +$QOL - Disable Advance on Results [gamemasterplc] +20446468 4182FF60 +04446468 4BFFFF60 +E2000001 80008000 + $QOL - Faster Boot Time [Ralf] 04056168 38607FFF *Automatically advance through the initial cutscences. @@ -261,6 +266,9 @@ $Extra - Disable Music 041d3d1c 00000001 *Disables all in-game music. +$Mechanics - Battle Games Always Worth 20 Coins [Nora] +001D5DE0 00040032 + $Mechanics - Double the Amount of Turns [Airsola] C205BEF8 00000004 2C000032 4182000C @@ -295,12 +303,6 @@ e2000001 80008000 e2000001 80008000 *Access all board events regardless of Mega / Mini Mushrooms. -$Mechanics - Free Lottery Game [Celerizer] -0407b28c 38600005 -0407bd04 38800000 -*Makes the lottery cost nothing instead of the usual 5 coins. -*You need to have 5 coins but you do not lose them. - $Mechanics - Free Stars [gamemasterplc] 040843cc 2c030000 04084590 2c030000 @@ -347,6 +349,28 @@ c208a07c 0000001f *Item Deletion is now a thing. *Press B to view your items, then delete the item with R. +$Mechanics - Lose 0 Coins On Red Spaces [Nora] +0407FD74 60000000 +0407FD78 3BC00000 + +$Mechanics - Lose 20 Coins On Red Spaces [Nora] +0407FD74 60000000 +0407FD78 3BC00014 + +$Mechanics - Lottery 3rd Place Prize is Gaddlight or Warp Pipe [Nora] +021D5678 00000805 + +$Mechanics - Lottery 3rd Place Prize is Magic Lamp or Boo's Crystal Ball [Nora] +021D5678 00000BOC + +$Mechanics - Lottery Costs 0 Coins [Nora] +0407BD20 2C1E0000 +*Makes the lottery cost nothing instead of the usual 5 coins. + +$Mechanics - Lottery Costs 10 Coins [Nora] +0407BD20 2C1E000A +*Makes the lottery cost nothing instead of the usual 5 coins. + $Mechanics - Mega Status No Longer Steals Coins [gamemasterplc] 0406be70 38600000 0406beac 38600000 @@ -410,3 +434,18 @@ $Minigame: Take a Breather - Mash Only L [gamemasterplc] 044207f0 38600000 e2000001 80008000 *Mash just L in the minigame Take a Breather. + +$Minigame Replacement - Bowser's Bigger Blast ➜ Chain Chomp Fever [Nora] +2818fd2c 00000027 +0218fd2c 00000025 +e2000001 80008000 + +$Minigame Replacement - Dungeon Duos ➜ The Great Deflate [Nora] +2818fd2c 0000001F +0218fd2c 00000018 +e2000001 80008000 + +$Minigame Replacement - Three Throw ➜ Mr. Blizzard's Brigade [Nora] +2818fd2c 00000009 +0218fd2c 0000000B +e2000001 80008000 diff --git a/Data/Sys/GameSettings/GP5E01.ini b/Data/Sys/GameSettings/GP5E01.ini index 424c394f2f60..256ae9d2b82d 100644 --- a/Data/Sys/GameSettings/GP5E01.ini +++ b/Data/Sys/GameSettings/GP5E01.ini @@ -466,6 +466,7 @@ $Press L+X: Player Stops Moving [Datel] [Gecko] # Add gecko cheats here. + $QOL - Automatically Advance Text Boxes [gamemasterplc] F6000001 80008180 A81F019C 7C001838 @@ -473,6 +474,11 @@ A81F019C 7C001838 E0000000 80008000 *Automatically scrolls the text boxes without pushing A +$QOL - Disable Advance on Results [gamemasterplc] +20478F28 4182F754 +04478F1C 48000010 +E2000001 80008000 + $QOL - Faster Boot Time [gamemasterplc] F6000001 80008180 38610030 38800002 @@ -538,6 +544,12 @@ $QOL - Unlock Everything 04472838 3880FFFF 0446BFCC 38C0FFFF E2000001 80008000 +F6000002 80008180 +5460D808 54640FFE +7C040050 5400283E +14000020 3C80FFFF +14000024 6084FFFF +E0000000 80008000 *Unlocks Everything in the game. $Board: Bowser Nightmare - Bowser does not Steal Coins [gamemasterplc] @@ -561,10 +573,15 @@ $Board: Future Dream - Free Taxi Ride [gamemasterplc] E2000001 80008000 *Taxi does not charge you 10 coins in the board Future Dream. -$Board: Pirate Dream - Free Thwomps [gamemasterplc] +$Board: Pirate Dream - Free Thwomps & Whomps [gamemasterplc] 0412811C 4800002C 04128210 38800000 -*Thwomp is now free to pass in the board Pirate Dream. +F6000001 80008180 +4080002C 386003A0 +14000000 4800002C +140000C0 38800000 +E0000000 80008000 +*Thwomp and Whomp are now free to pass in the board Pirate Dream. $Board: Rainbow Dream - Free Bridge Crossings [gamemasterplc] 2046A0B0 2C030005 @@ -594,13 +611,6 @@ $Mechanics - Battle Minigames Don't Affect Mini-Game Star [gamemasterplc] e2000001 80008000 *Battle Minigames do not count towards the Mini-Game Star. -$Mechanics - Disable Bonus Stars [gamemasterplc] -20484E0C 40820020 -04484E0C 48000020 -04484E44 4800001C -E2000001 80008000 -*Disables the Bonus Stars - $Mechanics - Disable Capsules [gamemasterplc] F6000001 80008180 3BC50005 887E0000 @@ -675,7 +685,7 @@ E2100000 80008000 E2000001 80008000 *Last 5 Turns Event is always x3 Coins on Spaces. -$Mechanics- Last 5 Turns is 5 Star Spaces [gamemasterplc] +$Mechanics - Last 5 Turns is 5 Star Spaces [gamemasterplc] 20288860 00000076 045152BC 00000003 E2100000 80008000 @@ -710,11 +720,25 @@ E2100000 80008000 E2000001 80008000 *Last 5 Turns Event forces Red Spaces to turn into Bowser Spaces. -$Mechanics - Same Space Duels Don't Happen [gamemasterplc] -F6000001 80008180 -7C1D0000 40820048 -14000004 48000048 +$Mechanics - Lose 0 Coins On Red Spaces [Nora] +040AA160 38800000 + +$Mechanics - Lose 20 Coins On Red Spaces [Nora] +040AA160 3880FFEC + +$Mechanics – Obtain Capsules on Final Turn [gamemasterplc] +F6000001 80008180 +7C040040 40820024 +14000004 48000024 E0000000 80008000 +*Miracles can really happen + +$Mechanics - Same Space Duels Always Happen [Nora] +04094740 60000000 +*Duels never happen if you are on the same space. + +$Mechanics - Same Space Duels Don't Happen [Nora] +04094740 48000030 *Duels never happen if you are on the same space. $Mechanics - Use Capsules on Yourself For Free [gamemasterplc] @@ -743,6 +767,19 @@ $Minigame: Curvy Curves - 1 Player is Slower [Airsola] e2000001 00000000 *1 Player is slower in Curvy Curves. +$Minigame: Coney Island - No Slow Down +204763E4 3C608048 +044763E0 38000000 +0447663C 38000000 +E2000001 80008000 +*You do not slow down when gathering ice cream. + +$Minigame: Flower Shower - All Flowers are worth 3 Points [gamemasterplc] +20459BEC 801F003C +04459BEC 38000003 +E2000001 80008000 +*This makes the golden flowers the same value as the normal flowers. + $Minigame: Ground Pound Down - No Rocks Until End [gamemasterplc] 2046FCC4 4180FF6C 0446FCC4 60000000 @@ -755,15 +792,15 @@ $Minigame: Later Skater - Only 1 Lap [gamemasterplc] E2000001 80008000 *Only one lap around in the minigame Later Skater. -$Minigame: Mathletes - Always Multiplication [gamemasterplc] -2045D2AC 38030001 -C245D2AC 00000004 -3DC08047 81CE815C -7C0EF800 40820008 -38600000 38030001 -60000000 00000000 +$Minigame: Leaf Leap - Allow score to go above 180 [gamemasterplc] +20474848 408000FC +04474848 60000000 +E2000001 80008000 + +$Minigame: Leaf Leap - Leaves Display Quicker [gamemasterplc] +20474A04 38030001 +04474A04 3800003C E2000001 80008000 -*Multiplication is only present in the minigame Mathletes. $Minigame: Pop Star Piranhas - Halved Time to Pick [Airsola] 20288860 00000016 @@ -826,6 +863,11 @@ $Minigame Replacement - Scaldin' Cauldron ➜ Rain of Fire [gamemasterplc] 0222A4C4 0000003A E2000001 80008000 +$Minigame Replacement - Submarathon ➜ Defuse or Lose +2822a4c4 0000002F +0222a4c4 00000028 +e2000001 80008000 + $Minigame Replacement - Vicious Vending ➜ Coin Cache [gamemasterplc] 2822a4c4 00000017 0222a4c4 0000000f diff --git a/Data/Sys/GameSettings/GP6E01.ini b/Data/Sys/GameSettings/GP6E01.ini index 8b2b5dff0cb8..47eb810071c8 100644 --- a/Data/Sys/GameSettings/GP6E01.ini +++ b/Data/Sys/GameSettings/GP6E01.ini @@ -441,7 +441,6 @@ $Game - Orb Expansion [Airsola] 042bd36c 00000000 042bd37c 00000000 00000000 40000000 -# Almost all Orbs become obtainable on each board. Orb prices are rebalanced. [Gecko] # Add gecko cheats here. @@ -467,6 +466,11 @@ e2000001 80008000 E2000001 80008000 *Automatically advance through the initial cutscences. +$QOL - Disable Advance on Results [gamemasterplc] +20503FB0 41820054 +04503FB0 48000054 +E2000001 80008000 + $QOL - Increased Board Speed [Celerizer] 041556d4 7d170e70 042c31b4 41f00000 @@ -534,6 +538,14 @@ F6000001 80008180 E0000000 80008000 *Unlocks Everything in the game. +$Board - Faire Square: Free Whomps [gamemasterplc] +F6000001 80008180 +4080002C 386003A0 +14000000 4800002C +140000C0 38800000 +E0000000 80008000 +*Use Whomp paths without paying 10 coins + $Board - Snowflake Lake: Chomps Roll 7 during daytime, and 3 per dice during nighttime [gamemasterplc] 204cc818 4bcbbacd c24cc810 00000005 @@ -702,13 +714,6 @@ C214C75C 00000004 60000000 00000000 *50 becomes 99 due to integer cap. -$Mechanics - Get Items on Last Turn [gamemasterplc] -F6000001 80008180 -7C040040 4080041C -14000004 60000000 -E0000000 80008000 -*Items are obtainable on the final turn - $Mechanics - Faster Day and Night Cycles [Airsola] 20265b80 00000300 04265b80 00000100 @@ -716,6 +721,20 @@ $Mechanics - Faster Day and Night Cycles [Airsola] 04265b80 C0000100 *Day and Night Cycles take 1 turn instead of 3. +$Mechanics - Free Capsules from Shops [gamemasterplc] +F6000001 80008180 +2C17FFFE 41820198 +14000018 38000000 +14000800 38000000 +14000994 38000000 +E0000000 80008000 +F6000002 80008180 +809D0004 7C041800 +40810044 38600000 +14000000 38800000 +14000244 60000000 +E0000000 80008000 + $Mechanics - Free Stars [gamemasterplc] 0418333C 2C030000 0418342C 2C030000 @@ -748,6 +767,19 @@ $Mechanics - Last 5 Turns is Bowser Revolution [gamemasterplc] *Last 5 Turns Event is always a Bowser Revolution. *This makes everyones coins equal. +$Mechanics - Lose 0 Coins On Red Spaces [Ralf] +0415F278 38800000 + +$Mechanics - Lose 20 Coins On Red Spaces [Ralf] +0415F278 3880FFEC + +$Mechanics - Obtain Orbs on Last Turn [gamemasterplc] +F6000001 80008180 +7C040040 4080041C +14000004 60000000 +E0000000 80008000 +*Items are obtainable on the final turn + $Mechanics - Pink Boo Steals 15 Coins Minimum [Airsola] c21b3498 00000002 3884000d 9081002c @@ -772,6 +804,14 @@ $Mechanics - Sluggish Shroom Rolls 1-5 [Celerizer] 04186b80 4bfffff8 *Sluggish Shroom rolls 1-5 instead of a 1-10. +$Mechanics - Stars Cost 40 Coins [Ralf] +0418333c 2c030028 +0418342c 2c030028 +041834c4 2c030028 +c2183590 00000002 +38800029 7c8400d0 +60000000 00000000 + $Minigame: Body Builder - Faster Wheel [Airsola] 202c0254 0000002d 204d4d28 3fe66666 @@ -791,6 +831,12 @@ e2000002 80008000 e2000002 80008000 *Harder to time the wheel in the minigame Body Builder. +$Minigame: Catch You Letter - All Letters Give 3 Points +204CBD6C 80010028 +044CBD6C 38000003 +E2000001 80008000 +*This essentially nullifies love letters. + $Minigame: Crate & Peril - 3 Players can Jump [Airsola, gamemasterplc] 202c0254 00000025 0408074c 60fb0003 @@ -849,6 +895,21 @@ $Minigame: Memory Lane - No Trail [Airsola] e2000002 80008000 *Shy Guy will no longer leave a trail durning the demo in the minigame Memory Lane. +$Minigame: Mole It – All Moles are Worth 3 Points [gamemasterplc] +204D57F0 A8A10008 +044D57F0 38A00003 +E2000001 80008000 + +$Minigame: Snow Whirled – Just Mash A [gamemasterplc] +204CB568 38650001 +044CB568 38650004 +E2000001 80008000 + +$Minigame: Snow Whirled – Displayed Score Equals Rotations [gamemasterplc] +204CB66C 1C84005A +044CB66C 1C840001 +E2000001 80008000 + $Minigame: Odd Card Out - Spam Prevention [Airsola] 202c0254 00000007 204d0530 b0a30052 diff --git a/Data/Sys/GameSettings/GP7E01.ini b/Data/Sys/GameSettings/GP7E01.ini index bf05e3f55902..37ab3225a7de 100644 --- a/Data/Sys/GameSettings/GP7E01.ini +++ b/Data/Sys/GameSettings/GP7E01.ini @@ -568,17 +568,17 @@ $Mechanics - Orb Expansion [Airsola] 042ef744 00000000 00000000 40000000 -# Use with the Allow All Character Orbs cheat below. -# (Almost) all Orbs become obtainable on each board. Orb prices are rebalanced. -# CPUs cannot use character orbs that are not their own. -# Triple Shroom is removed, as this code is meant to be used in conjunction with the Orb balancing codes. - [Gecko] # Add gecko cheats here. + $QOL - Auto Advance Text Boxes [gamemasterplc] 04050ddc 60000000 *Automatically scrolls the text boxes without pushing A +$QOL - Controller Options Always Acesssible [Ralf] +0422D890 4800000C +*Controller options are always accessible in the pause menu + $QOL - Faster Boot Time [gamemasterplc] 204dd974 2c030000 044dd978 60000000 @@ -597,6 +597,11 @@ e2000001 80008000 e2000001 80008000 *Automatically advance through the initial cutscences. +$QOL - Disable Advance on Results [gamemasterplc] +204DF310 41820050 +044DF310 48000050 +E2000001 80008000 + $QOL - Increased Board Speed [gamemasterplc] 04160ad8 38030002 041604b0 38c0000a @@ -681,17 +686,18 @@ E2000001 80008000 *Unlocks everything in the game. *Permanent once saved! -$Board - Neon Heights: Balance Changes [gamemasterplc] +$Board - Neon Heights: Acting Minigame Only Awards if All Are Hit 202f2f3c 0000007d -c24ec2b0 00000003 -a87e02e8 2803000f -41a20008 38600000 -60000000 00000000 c24ec414 00000004 7c9e82ae 2804000f 41a2000c 38800000 48000008 3880000a 60000000 00000000 +e2000001 8000800 +*The shooting board event now awards 10 coins, but only if the player hits all the targets. + +$Board - Neon Heights: Bombs Now Give 20 Coins [Airsola] +202f2f3c 0000007d 044e0574 38000014 044e0bac 38a00014 044e08d8 38000014 @@ -701,11 +707,7 @@ c24ec414 00000004 044e2564 3b200014 044e269c 3b000014 e2000001 80008000 -202f2f3c 0000007d -28527bfa 00000256 -04527c78 4039999a -e2000002 80008000 -*All chests cost 20 coins, and the non-star chests both contain 20 coins. The shooting board event now awards 10 coins, but only if the player hits all the targets. It is now possible for 1 player to reach the star in the rocket happening event in the board Neon Heights. +*All chests cost 20 coins, and the non-star chests both contain 20 coins. $Board - Neon Heights: Bowser Path for Free [gamemasterplc] 204fdef4 2c03000a @@ -714,6 +716,19 @@ $Board - Neon Heights: Bowser Path for Free [gamemasterplc] e2000001 80008000 *Use Koopa Kid's path for free instead of paying 10 coins in the board Neon Heights. +$Board - Neon Heights: Rocket Minigame is Possible with 1 Player [Airsola] +202f2f3c 0000007d +28527bfa 00000256 +04527c78 4039999 +e2000002 80008000 +202f2f3c 0000007d +c24ec2b0 00000003 +a87e02e8 2803000f +41a20008 38600000 +60000000 00000000 +e2000001 80008000 +*It is now possible for 1 player to reach the star in the rocket happening event in the board Neon Heights. + $Board - Pagoda Peak: Bottle Rocket Launch Always Succeeds [gamemasterplc] 204df8a0 2803004b 044df8a4 60000000 @@ -896,6 +911,10 @@ c24e6288 00000006 e2000001 80008000 *Battle Minigames do not count towards the Mini-Game Star. +$Mechanics - Character Spaces Give 10 coins [Ralf] +041685BC 60000000 +041685C0 38800005 + $Mechanics - Disable Bonus Stars [gamemasterplc] 204DD870 88650004 044DD870 38600000 @@ -973,6 +992,21 @@ e2000001 80008000 e2000001 80008000 *Stars cost nothing instead of the usual 20 coins. +$Mechanics - Gain 5 Coins On Flower Orb Spaces [Ralf] +041C4F30 38A00005 + +$Mechanics - Koopa Kid Orb Is Found in Shops [Ralf] +0419EB0C 48000024 +04274ADC 00000001 +06004860 0000002C +88030000 28000028 +4082001C 3C80802E +6084F598 38A00010 +4BFFECC9 38000028 +98030000 3B9C0001 +481E5098 00000000 +041E991C 4BE1AF44 + $Mechanics - Hammer Bro Orb Steals 20 Coins [Ralf] 041A902C 3AC00014 041A9A28 38A0FFEC @@ -1004,25 +1038,40 @@ c21d8ed0 00000007 041d8f68 3aa00028 *(X) -> 40 Coins, 10 Coins -> 40 Coins, Half Coins -> 40 Coins, 2 Stars -> 1 Star -$Mechanics - Last 5 Turns Event Is Always x3 Coins on Spaces +$Mechanics - Improved Duel Results #2 [Airsola +C21D8ED0 00000003 +2C030003 40820008 +38600001 7C711B78 +60000000 00000000 +*(X) -> 1/2 Coins + +$Mechanics - Last 5 Turns Event Is Always x3 Coins on Spaces [gamemasterplc] 042311A8 38000000 -$Mechanics - Last 5 Turns Event Is Always 10 More Koopa Kid Spaces +$Mechanics - Last 5 Turns Event Is Always 10 More Koopa Kid Spaces [gamemasterplc] 042311A8 38000001 -$Mechanics - Last 5 Turns Event Is Always 40 Coin Bonus +$Mechanics - Last 5 Turns Event Is Always 40 Coin Bonus [gamemasterplc] 042311A8 38000002 -$Mechanics - Last 5 Turns Event Is Always Stars are 10 Coins +$Mechanics - Last 5 Turns Event Is Always Stars are 10 Coins [gamemasterplc] 042311A8 38000003 -$Mechanics - Last 5 Turns Event Is Always Red Spaces are Bowser Spaces +$Mechanics - Last 5 Turns Event Is Always Red Spaces are Bowser Spaces [gamemasterplc] 042311A8 38000004 -$Mechanics - Last 5 Turns Event Is Always Chain Chomp Ride for 5 Coins (Pyramid Park) +$Mechanics - Last 5 Turns Event Is Always Chain Chomp Ride for 5 Coins (Pyramid Park) [gamemasterplc] 042311A8 38000005 *Only use on Pyramid Park +$Mechanics - Lose 0 Coins On Red Spaces [Ralf] +04168600 60000000 +04168604 38800000 + +$Mechanics - Lose 20 Coins On Red Spaces [Ralf] +04168600 60000000 +04168604 3880FFEC + $Mechanics - Mic Minigames Have A 10% Chance Of Appearing Instead Of 20% [gamemasterplc] 042f7a04 41200000 *Less Mic Minigames and see more standard minigames. @@ -1035,14 +1084,23 @@ $Mechanics - Microphone Always Off [gamemasterplc] $Mechanics - Orbs Can Only Be Placed On Your Current Space [gamemasterplc] 041e7128 60000000 -*Orb is more aggressively balanced. +*Orbs are more aggressively balanced. + +$Mechanics - Piranha Plant Takes ALL Coins [gamemasterplc] +041AC0DC 38030000 +041AC0E8 7C771B78 $Mechanics - Slow Shroom Orb Rolls 1-5 [gamemasterplc] 0418ccc8 38000005 0418d1ac 40820020 *Orb is more balanced. -$Mechanics - Use Multiple Orbs in the Same Turn [Nora] +$Mechanics - Stars Cost 40 coins [Ralf] +0418876c 3b800014 +04188774 3b800028 +*Only works in Grand Canal and Bowser's Enchanted Inferno + +$Mechanics - Use Multiple Orbs in the Same Turn [Ralf] 041E3764 3860FFFF *Does not work with CPUs @@ -1084,6 +1142,11 @@ e2000002 80008000 e2000002 80008000 *Does not work with CPUs +$Minigame: Kart Wheeled - Only 1 Lap [gamemasterplc] +204DE978 28050005 +044DE978 28050001 +E2000001 80008000 + $Minigame: La Bomba - Always 4 Bombs [Airsola, Rain] 202f2f3c 0000001a 044e8cec 00000004 @@ -1098,12 +1161,22 @@ $Minigame: Pogo-a-Go-Go - Spin Faster/Less Airtime [Airsola] e2000001 80008000 *The 1P can spin the platform faster. The 3P have less airtime on their hops -$Mingiame: Spinner Cell - Faster Machines [Airsola, Rain] +$Minigame: Picture This - Only 1 Round [gamemasterplc] +204FF970 7C00F214 +044FF970 38000003 +E2000001 80008000 + +$Minigame: Spinner Cell - Faster Machines [Airsola, Rain] 202f2f3c 0000001d 044ef5d0 40c00000 044ef5d4 41100000 e2000001 80008000 +$Minigame: Target Tag - All Targets Worth 50 Points [gamemasterplc] +204EAC28 80840000 +044EAC28 38800032 +E2000001 80008000 + $Minigame: Spray Anything - Faster Bubbles/Less Cooldown [Airsola, gamemasterplc] 202f2f3c 0000001b 0450bc40 c10a872b diff --git a/Data/Sys/GameSettings/GRY.ini b/Data/Sys/GameSettings/GRY.ini index 3d5cd6962980..78779f4cb16a 100644 --- a/Data/Sys/GameSettings/GRY.ini +++ b/Data/Sys/GameSettings/GRY.ini @@ -1,4 +1,4 @@ -# GRYE41 - RAYMAN ARENA +# GRYE41 - Rayman Arena [Core] # Values set here will override the main Dolphin settings. diff --git a/Data/Sys/GameSettings/GRYE41.ini b/Data/Sys/GameSettings/GRYE41.ini new file mode 100644 index 000000000000..9449f1ec332d --- /dev/null +++ b/Data/Sys/GameSettings/GRYE41.ini @@ -0,0 +1,14 @@ +# GRYE41 - Rayman Arena + +[OnFrame] +$Disable Culling to Fix Rise and Shrine Hang +0x8005EE90:dword:0x38600001 +0x8005EE94:dword:0x4E800020 +0x8005EF08:dword:0x38600001 +0x8005EF0C:dword:0x4E800020 + +# This extremely minor patch that disables culling +# in this game. For some reason, this culling function +# causes the "Rise and Shrine" hang in Dolphin. +# There is no noticeable side-effects unless Dolphin's +# built-in Widescreen Hack is enabled. diff --git a/Data/Sys/GameSettings/GWT.ini b/Data/Sys/GameSettings/GWT.ini index 1be2190eebb4..675eb8a77e5f 100644 --- a/Data/Sys/GameSettings/GWT.ini +++ b/Data/Sys/GameSettings/GWT.ini @@ -2,7 +2,7 @@ [Core] # Values set here will override the main Dolphin settings. -# This game does not work properly with large memorycards, use a 251 block card +# This game does not work properly with large memory cards, use a 251 block card # see https://www.nintendo.com/consumer/memorycard1019.jsp MemoryCardSize = 2 CPUThread = False diff --git a/Data/Sys/GameSettings/REX.ini b/Data/Sys/GameSettings/REX.ini new file mode 100644 index 000000000000..0c9e6d537a77 --- /dev/null +++ b/Data/Sys/GameSettings/REX.ini @@ -0,0 +1,16 @@ +# REXE01, REXP01, REXJ01 - Excite Truck + +[Core] +# Values set here will override the main Dolphin settings. + +[OnLoad] +# Add memory patches to be loaded once on boot here. + +[OnFrame] +# Add memory patches to be applied every frame here. + +[ActionReplay] +# Add action replay cheats here. + +[Video_Hacks] +EFBToTextureEnable = False diff --git a/Data/Sys/GameSettings/RM8E01.ini b/Data/Sys/GameSettings/RM8E01.ini index ce96e76253ac..dae60fb48c40 100644 --- a/Data/Sys/GameSettings/RM8E01.ini +++ b/Data/Sys/GameSettings/RM8E01.ini @@ -205,6 +205,10 @@ $QOL - Increased Text Display [Nora] 0405DED4 60000000 *Text is displayed instantly. +$QOL - Invert IR Stick for GameCube Mod [gamemasterplc] +04106A24 83DE6404 +04106A28 60000000 + $QOL - Remove Explanations [Rain] 82200001 80228760 86300001 ffffbfff diff --git a/Data/Sys/GameSettings/SCY.ini b/Data/Sys/GameSettings/SCY.ini index fadeb34028bf..0f8964e56de6 100644 --- a/Data/Sys/GameSettings/SCY.ini +++ b/Data/Sys/GameSettings/SCY.ini @@ -2,7 +2,6 @@ [Core] # Values set here will override the main Dolphin settings. -MMU = 1 LowDCBZHack = 1 [OnLoad] diff --git a/Data/Sys/GameSettings/SQI.ini b/Data/Sys/GameSettings/SQI.ini index d43df7ba137f..bb7e3c496148 100644 --- a/Data/Sys/GameSettings/SQI.ini +++ b/Data/Sys/GameSettings/SQI.ini @@ -2,7 +2,6 @@ [Core] # Values set here will override the main Dolphin settings. -MMU = 1 LowDCBZHack = 1 [OnLoad] diff --git a/Data/Sys/GameSettings/STS.ini b/Data/Sys/GameSettings/STS.ini index fce0389aaba1..37214b6d6ad8 100644 --- a/Data/Sys/GameSettings/STS.ini +++ b/Data/Sys/GameSettings/STS.ini @@ -2,7 +2,6 @@ [Core] # Values set here will override the main Dolphin settings. -MMU = 1 [OnLoad] # Add memory patches to be loaded once on boot here. diff --git a/Data/Sys/Maps/GFZE01.map b/Data/Sys/Maps/GFZE01.map deleted file mode 100644 index 464dba3610af..000000000000 --- a/Data/Sys/Maps/GFZE01.map +++ /dev/null @@ -1,41 +0,0 @@ -.text -80003488 000000b8 80003488 0 __fill_mem -80003540 00000050 80003540 0 memcpy -8006cff8 0000004c 8006cff8 0 .LoadQuantizers -8006d044 0000002c 8006d044 0 .kill_infinites_helper -8006d070 00000018 8006d070 0 .kill_infinites -8006d088 0000002c 8006d088 0 .rsqrt -8006d0b4 00000034 8006d0b4 0 .sqrt_internal_fz -8006d0e8 00000030 8006d0e8 0 .rsqrt_internal_fz -8006d118 00000070 8006d118 0 .sqrt_fz -8006d188 00000030 8006d188 0 .wrapping_once_fp_lookup -8006d1b8 00000064 8006d1b8 0 .weird2 -8006d1c4 00000058 8006d1c4 0 .into_weird2 -8006d21c 00000030 8006d21c 0 .lookup_some_float_in_table_with_neg_wrap -8006d24c 00000184 8006d24c 0 .atan2 -8006d3d0 0000009c 8006d3d0 0 .asin_fz -8006d46c 000000c8 8006d46c 0 .acos_fz -8006d534 00000070 8006d534 0 .evil_vec_cosine -8006d5f0 00000078 8006d5f0 0 .evil_vec_setlength -8006d668 00000094 8006d668 0 .evil_vec_something -8006d6fc 0000005c 8006d6fc 0 .func -8006d784 0000002c 8006d784 0 .load_strange_matrix1 -8006d7b0 0000002c 8006d7b0 0 .load_strange_matrix2 -8006d7f4 0000003c 8006d7f4 0 .some_strange_destination -8006db30 00000044 8006db30 0 .push_matrix_3x3? -8006db74 00000038 8006db74 0 .write_top_3x3_matrix -8006dbe4 0000003c 8006dbe4 0 .read_current_3x3_matrix -8006dc20 00000014 8006dc20 0 .pop_matrix_stack -8006e424 00000074 8006e424 0 .weird_param_in_p1_p2 -8006e978 000001d4 8006e978 0 zz_006e978_ -8006eb4c 000001c0 8006eb4c 0 zz_006eb4c_ -8006f6a8 000000cc 8006f6a8 0 .z_last_skum_function -800798f0 000000ec 800798f0 0 __div2u -800799dc 00000138 800799dc 0 __div2i -80079b14 000000e0 80079b14 0 __mod2u -80079bf8 0000010c 80079bf8 0 __mod2i -80079d04 00000024 80079d04 0 __shl2i -80079d28 00000024 80079d28 0 __shr2u -80079d4c 00000028 80079d4c 0 __shr2i -8008596c 00000310 8008596c 0 big_matrix_trickery -80088538 00000020 80088538 0 zz_0088538_ diff --git a/Data/Sys/Maps/GMBE8P.map b/Data/Sys/Maps/GMBE8P.map deleted file mode 100644 index 7cbab7e984b6..000000000000 --- a/Data/Sys/Maps/GMBE8P.map +++ /dev/null @@ -1,34 +0,0 @@ -.text -800031f0 0000001c 800031f0 0 load_sp_rtoc -80007034 0000004c 80007034 0 .LoadQuantizers -80007080 00000030 80007080 0 .LoadInfinitiesEtc -800070b0 00000038 800070b0 0 .rsqrt -800070ec 00000040 800070ec 0 .sqrt_internal_needs_cr1 -8000712c 00000040 8000712c 0 .rsqrt_internal_needs_cr1 -800071e0 00000030 800071e0 0 .wrapping_once_fp_lookup -80007210 00000064 80007210 0 .weird2 -80007274 00000030 80007274 0 .lookup_some_float_in_table_with_neg_wrap -800072a4 00000180 800072a4 0 .atan2 -80007424 000000b8 80007424 0 .calls_sqrt -800074dc 0000005c 800074dc 0 .func -80007538 0000002c 80007538 0 .load_strange_matrix1 -80007564 0000002c 80007564 0 .load_strange_matrix3 -80007590 0000002c 80007590 0 .load_strange_matrix2 -80007834 00000044 80007834 0 .push_matrix_3x3? -80007878 00000038 80007878 0 .read_top_3x3matrix -800078b0 00000038 800078b0 0 .write_top_3x3_matrix -800078e8 0000003c 800078e8 0 .read_current_3x3_matrix -80007924 00000014 80007924 0 .pop_matrix_stack -80007a50 00000170 80007a50 0 .mult_matrix? -80007ecc 000000bc 80007ecc 0 .weird_vector_op_status_in_cr2 -80007f88 00000074 80007f88 0 .weird_param_in_p1_p2 -800080fc 00000078 800080fc 0 .evil_normalize -80008174 00000078 80008174 0 .evil_vec_setlength -800081ec 00000070 800081ec 0 .evil_vec_cosine -80008538 000000f0 80008538 0 .calls_evil1 -8000875c 00000088 8000875c 0 .another_caller -800087e4 0000008c 800087e4 0 .another_caller2 -80008d30 000001b4 80008d30 0 .another_caller3 -80036544 000001b4 80036544 0 .fctiwi_weird2 -8003dd1c 00000110 8003dd1c 0 .fctwi_weird -80043b48 000005bc 80043b48 0 .fctwi_weird3 diff --git a/Externals/Bochs_disasm/Bochs_disasm.vcxproj b/Externals/Bochs_disasm/Bochs_disasm.vcxproj index 436efa850061..ca6e249b7d95 100644 --- a/Externals/Bochs_disasm/Bochs_disasm.vcxproj +++ b/Externals/Bochs_disasm/Bochs_disasm.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/ExternalsReferenceAll.props b/Externals/ExternalsReferenceAll.props index 38ec0bd82726..b74dc4d42197 100644 --- a/Externals/ExternalsReferenceAll.props +++ b/Externals/ExternalsReferenceAll.props @@ -1,5 +1,5 @@ - + {D79392F7-06D6-4B4B-A39F-4D587C215D3A} @@ -34,6 +34,9 @@ {cbc76802-c128-4b17-bf6c-23b08c313e5e} + + {4BC5A148-0AB3-440F-A980-A29B4B999190} + {8498f2fa-5ca6-4169-9971-de5b1fe6132c} diff --git a/Externals/FFmpeg-bin b/Externals/FFmpeg-bin new file mode 160000 index 000000000000..9bc087fbca36 --- /dev/null +++ b/Externals/FFmpeg-bin @@ -0,0 +1 @@ +Subproject commit 9bc087fbca36ce5a85eb4fd73f0c73813593e5a2 diff --git a/Externals/FreeSurround/FreeSurround.vcxproj b/Externals/FreeSurround/FreeSurround.vcxproj index cfc29e5dc25b..ed717ea65c89 100644 --- a/Externals/FreeSurround/FreeSurround.vcxproj +++ b/Externals/FreeSurround/FreeSurround.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/FreeSurround/FreeSurround.vcxproj.filters b/Externals/FreeSurround/FreeSurround.vcxproj.filters index 65dd14ee6660..ade3fb0d19b2 100644 --- a/Externals/FreeSurround/FreeSurround.vcxproj.filters +++ b/Externals/FreeSurround/FreeSurround.vcxproj.filters @@ -1,5 +1,5 @@  - + source diff --git a/Externals/LZO/LZO.vcxproj b/Externals/LZO/LZO.vcxproj index fd30576fe3d3..df9855ccf9c0 100644 --- a/Externals/LZO/LZO.vcxproj +++ b/Externals/LZO/LZO.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/MoltenVK/CMakeLists.txt b/Externals/MoltenVK/CMakeLists.txt index 6accf5904b3f..c7e71824761b 100644 --- a/Externals/MoltenVK/CMakeLists.txt +++ b/Externals/MoltenVK/CMakeLists.txt @@ -1,6 +1,6 @@ include(ExternalProject) -set(MOLTENVK_VERSION "v1.1.6") +set(MOLTENVK_VERSION "v1.1.9") ExternalProject_Add(MoltenVK GIT_REPOSITORY https://github.com/KhronosGroup/MoltenVK.git diff --git a/Externals/SFML/build/vc2010/SFML_Network.vcxproj b/Externals/SFML/build/vc2010/SFML_Network.vcxproj index e5d944b7148f..ef90c1aea697 100644 --- a/Externals/SFML/build/vc2010/SFML_Network.vcxproj +++ b/Externals/SFML/build/vc2010/SFML_Network.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/SFML/build/vc2010/SFML_Network.vcxproj.filters b/Externals/SFML/build/vc2010/SFML_Network.vcxproj.filters index 2cf05dde91d4..3e941ca48bd5 100644 --- a/Externals/SFML/build/vc2010/SFML_Network.vcxproj.filters +++ b/Externals/SFML/build/vc2010/SFML_Network.vcxproj.filters @@ -1,5 +1,5 @@ - + diff --git a/Externals/Vulkan/Include/vulkan/vk_icd.h b/Externals/Vulkan/Include/vulkan/vk_icd.h index a2d960a6324f..41989ee35474 100644 --- a/Externals/Vulkan/Include/vulkan/vk_icd.h +++ b/Externals/Vulkan/Include/vulkan/vk_icd.h @@ -33,7 +33,7 @@ // Version 2 - Add Loader/ICD Interface version negotiation // via vk_icdNegotiateLoaderICDInterfaceVersion. // Version 3 - Add ICD creation/destruction of KHR_surface objects. -// Version 4 - Add unknown physical device extension qyering via +// Version 4 - Add unknown physical device extension querying via // vk_icdGetPhysicalDeviceProcAddr. // Version 5 - Tells ICDs that the loader is now paying attention to the // application version of Vulkan passed into the ApplicationInfo @@ -41,17 +41,45 @@ // that if the loader is older, it should automatically fail a // call for any API version > 1.0. Otherwise, the loader will // manually determine if it can support the expected version. -#define CURRENT_LOADER_ICD_INTERFACE_VERSION 5 +// Version 6 - Add support for vk_icdEnumerateAdapterPhysicalDevices. +#define CURRENT_LOADER_ICD_INTERFACE_VERSION 6 #define MIN_SUPPORTED_LOADER_ICD_INTERFACE_VERSION 0 #define MIN_PHYS_DEV_EXTENSION_ICD_INTERFACE_VERSION 4 -typedef VkResult(VKAPI_PTR *PFN_vkNegotiateLoaderICDInterfaceVersion)(uint32_t *pVersion); +// Old typedefs that don't follow a proper naming convention but are preserved for compatibility +typedef VkResult(VKAPI_PTR *PFN_vkNegotiateLoaderICDInterfaceVersion)(uint32_t *pVersion); // This is defined in vk_layer.h which will be found by the loader, but if an ICD is building against this // file directly, it won't be found. #ifndef PFN_GetPhysicalDeviceProcAddr typedef PFN_vkVoidFunction(VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char *pName); #endif +// Typedefs for loader/ICD interface +typedef VkResult (VKAPI_PTR *PFN_vk_icdNegotiateLoaderICDInterfaceVersion)(uint32_t* pVersion); +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vk_icdGetInstanceProcAddr)(VkInstance instance, const char* pName); +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vk_icdGetPhysicalDeviceProcAddr)(VkInstance instance, const char* pName); +#if defined(VK_USE_PLATFORM_WIN32_KHR) +typedef VkResult (VKAPI_PTR *PFN_vk_icdEnumerateAdapterPhysicalDevices)(VkInstance instance, LUID adapterLUID, + uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); +#endif + +// Prototypes for loader/ICD interface +#if !defined(VK_NO_PROTOTYPES) +#ifdef __cplusplus +extern "C" { +#endif + VKAPI_ATTR VkResult VKAPI_CALL vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pVersion); + VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(VkInstance instance, const char* pName); + VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetPhysicalDeviceProcAddr(VkInstance isntance, const char* pName); +#if defined(VK_USE_PLATFORM_WIN32_KHR) + VKAPI_ATTR VkResult VKAPI_CALL vk_icdEnumerateAdapterPhysicalDevices(VkInstance instance, LUID adapterLUID, + uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); +#endif +#ifdef __cplusplus +} +#endif +#endif + /* * The ICD must reserve space for a pointer for the loader's dispatch * table, at the start of . @@ -89,7 +117,12 @@ typedef enum { VK_ICD_WSI_PLATFORM_MACOS, VK_ICD_WSI_PLATFORM_IOS, VK_ICD_WSI_PLATFORM_DISPLAY, - VK_ICD_WSI_PLATFORM_HEADLESS + VK_ICD_WSI_PLATFORM_HEADLESS, + VK_ICD_WSI_PLATFORM_METAL, + VK_ICD_WSI_PLATFORM_DIRECTFB, + VK_ICD_WSI_PLATFORM_VI, + VK_ICD_WSI_PLATFORM_GGP, + VK_ICD_WSI_PLATFORM_SCREEN, } VkIcdWsiPlatform; typedef struct { @@ -136,6 +169,14 @@ typedef struct { } VkIcdSurfaceXlib; #endif // VK_USE_PLATFORM_XLIB_KHR +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT +typedef struct { + VkIcdSurfaceBase base; + IDirectFB *dfb; + IDirectFBSurface *surface; +} VkIcdSurfaceDirectFB; +#endif // VK_USE_PLATFORM_DIRECTFB_EXT + #ifdef VK_USE_PLATFORM_ANDROID_KHR typedef struct { VkIcdSurfaceBase base; @@ -157,6 +198,13 @@ typedef struct { } VkIcdSurfaceIOS; #endif // VK_USE_PLATFORM_IOS_MVK +#ifdef VK_USE_PLATFORM_GGP +typedef struct { + VkIcdSurfaceBase base; + GgpStreamDescriptor streamDescriptor; +} VkIcdSurfaceGgp; +#endif // VK_USE_PLATFORM_GGP + typedef struct { VkIcdSurfaceBase base; VkDisplayModeKHR displayMode; @@ -172,4 +220,26 @@ typedef struct { VkIcdSurfaceBase base; } VkIcdSurfaceHeadless; +#ifdef VK_USE_PLATFORM_METAL_EXT +typedef struct { + VkIcdSurfaceBase base; + const CAMetalLayer *pLayer; +} VkIcdSurfaceMetal; +#endif // VK_USE_PLATFORM_METAL_EXT + +#ifdef VK_USE_PLATFORM_VI_NN +typedef struct { + VkIcdSurfaceBase base; + void *window; +} VkIcdSurfaceVi; +#endif // VK_USE_PLATFORM_VI_NN + +#ifdef VK_USE_PLATFORM_SCREEN_QNX +typedef struct { + VkIcdSurfaceBase base; + struct _screen_context *context; + struct _screen_window *window; +} VkIcdSurfaceScreen; +#endif // VK_USE_PLATFORM_SCREEN_QNX + #endif // VKICD_H diff --git a/Externals/Vulkan/Include/vulkan/vk_layer.h b/Externals/Vulkan/Include/vulkan/vk_layer.h index fa7652008976..0651870c70a4 100644 --- a/Externals/Vulkan/Include/vulkan/vk_layer.h +++ b/Externals/Vulkan/Include/vulkan/vk_layer.h @@ -83,7 +83,8 @@ typedef VkResult(VKAPI_PTR *PFN_PhysDevExt)(VkPhysicalDevice phys_device); typedef enum VkLayerFunction_ { VK_LAYER_LINK_INFO = 0, VK_LOADER_DATA_CALLBACK = 1, - VK_LOADER_LAYER_CREATE_DEVICE_CALLBACK = 2 + VK_LOADER_LAYER_CREATE_DEVICE_CALLBACK = 2, + VK_LOADER_FEATURES = 3, } VkLayerFunction; typedef struct VkLayerInstanceLink_ { @@ -111,6 +112,12 @@ typedef VkResult (VKAPI_PTR *PFN_vkSetDeviceLoaderData)(VkDevice device, typedef VkResult (VKAPI_PTR *PFN_vkLayerCreateDevice)(VkInstance instance, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkDevice *pDevice, PFN_vkGetInstanceProcAddr layerGIPA, PFN_vkGetDeviceProcAddr *nextGDPA); typedef void (VKAPI_PTR *PFN_vkLayerDestroyDevice)(VkDevice physicalDevice, const VkAllocationCallbacks *pAllocator, PFN_vkDestroyDevice destroyFunction); + +typedef enum VkLoaderFeastureFlagBits { + VK_LOADER_FEATURE_PHYSICAL_DEVICE_SORTING = 0x00000001, +} VkLoaderFlagBits; +typedef VkFlags VkLoaderFeatureFlags; + typedef struct { VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO const void *pNext; @@ -119,9 +126,10 @@ typedef struct { VkLayerInstanceLink *pLayerInfo; PFN_vkSetInstanceLoaderData pfnSetInstanceLoaderData; struct { - PFN_vkLayerCreateDevice pfnLayerCreateDevice; - PFN_vkLayerDestroyDevice pfnLayerDestroyDevice; - } layerDevice; + PFN_vkLayerCreateDevice pfnLayerCreateDevice; + PFN_vkLayerDestroyDevice pfnLayerDestroyDevice; + } layerDevice; + VkLoaderFeatureFlags loaderFeatures; } u; } VkLayerInstanceCreateInfo; diff --git a/Externals/Vulkan/Include/vulkan/vk_platform.h b/Externals/Vulkan/Include/vulkan/vk_platform.h index 7289299240a3..3ff8c5d14671 100644 --- a/Externals/Vulkan/Include/vulkan/vk_platform.h +++ b/Externals/Vulkan/Include/vulkan/vk_platform.h @@ -2,19 +2,9 @@ // File: vk_platform.h // /* -** Copyright (c) 2014-2017 The Khronos Group Inc. +** Copyright 2014-2022 The Khronos Group Inc. ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. +** SPDX-License-Identifier: Apache-2.0 */ @@ -52,7 +42,7 @@ extern "C" #define VKAPI_CALL __stdcall #define VKAPI_PTR VKAPI_CALL #elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7 - #error "Vulkan isn't supported for the 'armeabi' NDK ABI" + #error "Vulkan is not supported for the 'armeabi' NDK ABI" #elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE) // On Android 32-bit ARM targets, Vulkan functions use the "hardfloat" // calling convention, i.e. float parameters are passed in registers. This @@ -68,7 +58,9 @@ extern "C" #define VKAPI_PTR #endif -#include +#if !defined(VK_NO_STDDEF_H) + #include +#endif // !defined(VK_NO_STDDEF_H) #if !defined(VK_NO_STDINT_H) #if defined(_MSC_VER) && (_MSC_VER < 1600) diff --git a/Externals/Vulkan/Include/vulkan/vulkan.h b/Externals/Vulkan/Include/vulkan/vulkan.h index 5f853f9fc8ee..004fa70952a4 100644 --- a/Externals/Vulkan/Include/vulkan/vulkan.h +++ b/Externals/Vulkan/Include/vulkan/vulkan.h @@ -2,19 +2,9 @@ #define VULKAN_H_ 1 /* -** Copyright (c) 2015-2019 The Khronos Group Inc. +** Copyright 2015-2022 The Khronos Group Inc. ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. +** SPDX-License-Identifier: Apache-2.0 */ #include "vk_platform.h" @@ -71,6 +61,12 @@ #endif +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT +#include +#include "vulkan_directfb.h" +#endif + + #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT #include #include @@ -83,4 +79,14 @@ #include "vulkan_ggp.h" #endif + +#ifdef VK_USE_PLATFORM_SCREEN_QNX +#include +#include "vulkan_screen.h" +#endif + +#ifdef VK_ENABLE_BETA_EXTENSIONS +#include "vulkan_beta.h" +#endif + #endif // VULKAN_H_ diff --git a/Externals/Vulkan/Include/vulkan/vulkan.hpp b/Externals/Vulkan/Include/vulkan/vulkan.hpp index ee748481230b..400bdbe94bba 100644 --- a/Externals/Vulkan/Include/vulkan/vulkan.hpp +++ b/Externals/Vulkan/Include/vulkan/vulkan.hpp @@ -1,71253 +1,14823 @@ -// Copyright (c) 2015-2019 The Khronos Group Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// ---- Exceptions to the Apache 2.0 License: ---- -// -// As an exception, if you use this Software to generate code and portions of -// this Software are embedded into the generated code as a result, you may -// redistribute such product without providing attribution as would otherwise -// be required by Sections 4(a), 4(b) and 4(d) of the License. -// -// In addition, if you combine or link code generated by this Software with -// software that is licensed under the GPLv2 or the LGPL v2.0 or 2.1 -// ("`Combined Software`") and if a court of competent jurisdiction determines -// that the patent provision (Section 3), the indemnity provision (Section 9) -// or other Section of the License conflicts with the conditions of the -// applicable GPL or LGPL license, you may retroactively and prospectively -// choose to deem waived or otherwise exclude such Section(s) of the License, -// but only in their entirety and only with respect to the Combined Software. -// +// Copyright 2015-2022 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// // This header is generated from the Khronos Vulkan XML API Registry. #ifndef VULKAN_HPP #define VULKAN_HPP +#if defined( _MSVC_LANG ) +# define VULKAN_HPP_CPLUSPLUS _MSVC_LANG +#else +# define VULKAN_HPP_CPLUSPLUS __cplusplus +#endif + +#if 201703L < VULKAN_HPP_CPLUSPLUS +# define VULKAN_HPP_CPP_VERSION 20 +#elif 201402L < VULKAN_HPP_CPLUSPLUS +# define VULKAN_HPP_CPP_VERSION 17 +#elif 201103L < VULKAN_HPP_CPLUSPLUS +# define VULKAN_HPP_CPP_VERSION 14 +#elif 199711L < VULKAN_HPP_CPLUSPLUS +# define VULKAN_HPP_CPP_VERSION 11 +#else +# error "vulkan.hpp needs at least c++ standard version 11" +#endif + #include #include #include #include #include +#include #include +#include #include #include #include #include #include +#if 17 <= VULKAN_HPP_CPP_VERSION +# include +#endif + +#if defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) +# if !defined( VULKAN_HPP_NO_SMART_HANDLE ) +# define VULKAN_HPP_NO_SMART_HANDLE +# endif +#else +# include +# include +#endif + +#if defined( VULKAN_HPP_NO_CONSTRUCTORS ) +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) +# define VULKAN_HPP_NO_STRUCT_CONSTRUCTORS +# endif +# if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) +# define VULKAN_HPP_NO_UNION_CONSTRUCTORS +# endif +#endif + +#if defined( VULKAN_HPP_NO_SETTERS ) +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) +# define VULKAN_HPP_NO_STRUCT_SETTERS +# endif +# if !defined( VULKAN_HPP_NO_UNION_SETTERS ) +# define VULKAN_HPP_NO_UNION_SETTERS +# endif +#endif + +#if !defined( VULKAN_HPP_ASSERT ) +# include +# define VULKAN_HPP_ASSERT assert +#endif + +#if !defined( VULKAN_HPP_ASSERT_ON_RESULT ) +# define VULKAN_HPP_ASSERT_ON_RESULT VULKAN_HPP_ASSERT +#endif + +#if !defined( VULKAN_HPP_STATIC_ASSERT ) +# define VULKAN_HPP_STATIC_ASSERT static_assert +#endif + +#if !defined( VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL ) +# define VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL 1 +#endif + +#if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL == 1 +# if defined( __unix__ ) || defined( __APPLE__ ) || defined( __QNXNTO__ ) || defined( __Fuchsia__ ) +# include +# elif defined( _WIN32 ) +typedef struct HINSTANCE__ * HINSTANCE; +# if defined( _WIN64 ) +typedef int64_t( __stdcall * FARPROC )(); +# else +typedef int( __stdcall * FARPROC )(); +# endif +extern "C" __declspec( dllimport ) HINSTANCE __stdcall LoadLibraryA( char const * lpLibFileName ); +extern "C" __declspec( dllimport ) int __stdcall FreeLibrary( HINSTANCE hLibModule ); +extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE hModule, const char * lpProcName ); +# endif +#endif + +#if !defined( __has_include ) +# define __has_include( x ) false +#endif -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -# include -# include +#if ( 201711 <= __cpp_impl_three_way_comparison ) && __has_include( ) && !defined( VULKAN_HPP_NO_SPACESHIP_OPERATOR ) +# define VULKAN_HPP_HAS_SPACESHIP_OPERATOR +#endif +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) +# include #endif -#if !defined(VULKAN_HPP_ASSERT) -# include -# define VULKAN_HPP_ASSERT assert +#if ( 201803 <= __cpp_lib_span ) +# define VULKAN_HPP_SUPPORT_SPAN +# include #endif -static_assert( VK_HEADER_VERSION == 121 , "Wrong VK_HEADER_VERSION!" ); +static_assert( VK_HEADER_VERSION == 204, "Wrong VK_HEADER_VERSION!" ); // 32-bit vulkan is not typesafe for handles, so don't allow copy constructors on this platform by default. // To enable this feature on 32-bit platforms please define VULKAN_HPP_TYPESAFE_CONVERSION -#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) -# if !defined( VULKAN_HPP_TYPESAFE_CONVERSION ) -# define VULKAN_HPP_TYPESAFE_CONVERSION -# endif +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) +# if !defined( VULKAN_HPP_TYPESAFE_CONVERSION ) +# define VULKAN_HPP_TYPESAFE_CONVERSION +# endif #endif // includes through some other header // this results in major(x) being resolved to gnu_dev_major(x) // which is an expression in a constructor initializer list. -#if defined(major) - #undef major +#if defined( major ) +# undef major #endif -#if defined(minor) - #undef minor +#if defined( minor ) +# undef minor #endif // Windows defines MemoryBarrier which is deprecated and collides -// with the vk::MemoryBarrier struct. -#if defined(MemoryBarrier) - #undef MemoryBarrier +// with the VULKAN_HPP_NAMESPACE::MemoryBarrier struct. +#if defined( MemoryBarrier ) +# undef MemoryBarrier #endif -#if !defined(VULKAN_HPP_HAS_UNRESTRICTED_UNIONS) -# if defined(__clang__) -# if __has_feature(cxx_unrestricted_unions) -# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS +#if !defined( VULKAN_HPP_HAS_UNRESTRICTED_UNIONS ) +# if defined( __clang__ ) +# if __has_feature( cxx_unrestricted_unions ) +# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS +# endif +# elif defined( __GNUC__ ) +# define GCC_VERSION ( __GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ ) +# if 40600 <= GCC_VERSION +# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS +# endif +# elif defined( _MSC_VER ) +# if 1900 <= _MSC_VER +# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS +# endif # endif -# elif defined(__GNUC__) -# define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) -# if 40600 <= GCC_VERSION -# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS +#endif + +#if !defined( VULKAN_HPP_INLINE ) +# if defined( __clang__ ) +# if __has_attribute( always_inline ) +# define VULKAN_HPP_INLINE __attribute__( ( always_inline ) ) __inline__ +# else +# define VULKAN_HPP_INLINE inline +# endif +# elif defined( __GNUC__ ) +# define VULKAN_HPP_INLINE __attribute__( ( always_inline ) ) __inline__ +# elif defined( _MSC_VER ) +# define VULKAN_HPP_INLINE inline +# else +# define VULKAN_HPP_INLINE inline # endif -# elif defined(_MSC_VER) -# if 1900 <= _MSC_VER -# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS +#endif + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) +# define VULKAN_HPP_TYPESAFE_EXPLICIT +#else +# define VULKAN_HPP_TYPESAFE_EXPLICIT explicit +#endif + +#if defined( __cpp_constexpr ) +# define VULKAN_HPP_CONSTEXPR constexpr +# if __cpp_constexpr >= 201304 +# define VULKAN_HPP_CONSTEXPR_14 constexpr +# else +# define VULKAN_HPP_CONSTEXPR_14 # endif -# endif +# define VULKAN_HPP_CONST_OR_CONSTEXPR constexpr +#else +# define VULKAN_HPP_CONSTEXPR +# define VULKAN_HPP_CONSTEXPR_14 +# define VULKAN_HPP_CONST_OR_CONSTEXPR const #endif -#if !defined(VULKAN_HPP_INLINE) -# if defined(__clang__) -# if __has_attribute(always_inline) -# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__ +#if !defined( VULKAN_HPP_NOEXCEPT ) +# if defined( _MSC_VER ) && ( _MSC_VER <= 1800 ) +# define VULKAN_HPP_NOEXCEPT # else -# define VULKAN_HPP_INLINE inline +# define VULKAN_HPP_NOEXCEPT noexcept +# define VULKAN_HPP_HAS_NOEXCEPT 1 +# if defined( VULKAN_HPP_NO_EXCEPTIONS ) +# define VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS noexcept +# else +# define VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS +# endif # endif -# elif defined(__GNUC__) -# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__ -# elif defined(_MSC_VER) -# define VULKAN_HPP_INLINE inline -# else -# define VULKAN_HPP_INLINE inline -# endif #endif -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) -# define VULKAN_HPP_TYPESAFE_EXPLICIT +#if 14 <= VULKAN_HPP_CPP_VERSION +# define VULKAN_HPP_DEPRECATED( msg ) [[deprecated( msg )]] #else -# define VULKAN_HPP_TYPESAFE_EXPLICIT explicit +# define VULKAN_HPP_DEPRECATED( msg ) #endif -#if defined(_MSC_VER) && (_MSC_VER <= 1800) -# define VULKAN_HPP_CONSTEXPR -# define VULKAN_HPP_CONST_OR_CONSTEXPR const +#if ( 17 <= VULKAN_HPP_CPP_VERSION ) && !defined( VULKAN_HPP_NO_NODISCARD_WARNINGS ) +# define VULKAN_HPP_NODISCARD [[nodiscard]] +# if defined( VULKAN_HPP_NO_EXCEPTIONS ) +# define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS [[nodiscard]] +# else +# define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS +# endif #else -# define VULKAN_HPP_CONSTEXPR constexpr -# define VULKAN_HPP_CONST_OR_CONSTEXPR constexpr +# define VULKAN_HPP_NODISCARD +# define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS #endif -#if !defined(VULKAN_HPP_NAMESPACE) -#define VULKAN_HPP_NAMESPACE vk +#if !defined( VULKAN_HPP_NAMESPACE ) +# define VULKAN_HPP_NAMESPACE vk #endif -#define VULKAN_HPP_STRINGIFY2(text) #text -#define VULKAN_HPP_STRINGIFY(text) VULKAN_HPP_STRINGIFY2(text) -#define VULKAN_HPP_NAMESPACE_STRING VULKAN_HPP_STRINGIFY(VULKAN_HPP_NAMESPACE) +#define VULKAN_HPP_STRINGIFY2( text ) #text +#define VULKAN_HPP_STRINGIFY( text ) VULKAN_HPP_STRINGIFY2( text ) +#define VULKAN_HPP_NAMESPACE_STRING VULKAN_HPP_STRINGIFY( VULKAN_HPP_NAMESPACE ) namespace VULKAN_HPP_NAMESPACE { -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) +#if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) template class ArrayProxy { public: - VULKAN_HPP_CONSTEXPR ArrayProxy(std::nullptr_t) - : m_count(0) - , m_ptr(nullptr) + VULKAN_HPP_CONSTEXPR ArrayProxy() VULKAN_HPP_NOEXCEPT + : m_count( 0 ) + , m_ptr( nullptr ) + {} + + VULKAN_HPP_CONSTEXPR ArrayProxy( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + : m_count( 0 ) + , m_ptr( nullptr ) + {} + + ArrayProxy( T & value ) VULKAN_HPP_NOEXCEPT + : m_count( 1 ) + , m_ptr( &value ) + {} + + template ::value, int>::type = 0> + ArrayProxy( typename std::remove_const::type & value ) VULKAN_HPP_NOEXCEPT + : m_count( 1 ) + , m_ptr( &value ) + {} + + ArrayProxy( uint32_t count, T * ptr ) VULKAN_HPP_NOEXCEPT + : m_count( count ) + , m_ptr( ptr ) {} - ArrayProxy(T & ptr) - : m_count(1) - , m_ptr(&ptr) + template ::value, int>::type = 0> + ArrayProxy( uint32_t count, typename std::remove_const::type * ptr ) VULKAN_HPP_NOEXCEPT + : m_count( count ) + , m_ptr( ptr ) {} - ArrayProxy(uint32_t count, T * ptr) - : m_count(count) - , m_ptr(ptr) +# if __GNUC__ >= 9 +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Winit-list-lifetime" +# endif + + ArrayProxy( std::initializer_list const & list ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( list.size() ) ) + , m_ptr( list.begin() ) {} - template - ArrayProxy(std::array::type, N> & data) - : m_count(N) - , m_ptr(data.data()) + template ::value, int>::type = 0> + ArrayProxy( std::initializer_list::type> const & list ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( list.size() ) ) + , m_ptr( list.begin() ) {} - template - ArrayProxy(std::array::type, N> const& data) - : m_count(N) - , m_ptr(data.data()) + ArrayProxy( std::initializer_list & list ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( list.size() ) ) + , m_ptr( list.begin() ) {} - template ::type>> - ArrayProxy(std::vector::type, Allocator> & data) - : m_count(static_cast(data.size())) - , m_ptr(data.data()) + template ::value, int>::type = 0> + ArrayProxy( std::initializer_list::type> & list ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( list.size() ) ) + , m_ptr( list.begin() ) {} - template ::type>> - ArrayProxy(std::vector::type, Allocator> const& data) - : m_count(static_cast(data.size())) - , m_ptr(data.data()) +# if __GNUC__ >= 9 +# pragma GCC diagnostic pop +# endif + + // Any type with a .data() return type implicitly convertible to T*, and a .size() return type implicitly + // convertible to size_t. The const version can capture temporaries, with lifetime ending at end of statement. + template ().data() ), T *>::value && + std::is_convertible().size() ), std::size_t>::value>::type * = nullptr> + ArrayProxy( V const & v ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( v.size() ) ) + , m_ptr( v.data() ) {} - ArrayProxy(std::initializer_list const& data) - : m_count(static_cast(data.end() - data.begin())) - , m_ptr(data.begin()) + template ().data() ), T *>::value && + std::is_convertible().size() ), std::size_t>::value>::type * = nullptr> + ArrayProxy( V & v ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( v.size() ) ) + , m_ptr( v.data() ) {} - const T * begin() const + const T * begin() const VULKAN_HPP_NOEXCEPT { return m_ptr; } - const T * end() const + const T * end() const VULKAN_HPP_NOEXCEPT { return m_ptr + m_count; } - const T & front() const + const T & front() const VULKAN_HPP_NOEXCEPT { - VULKAN_HPP_ASSERT(m_count && m_ptr); + VULKAN_HPP_ASSERT( m_count && m_ptr ); return *m_ptr; } - const T & back() const + const T & back() const VULKAN_HPP_NOEXCEPT { - VULKAN_HPP_ASSERT(m_count && m_ptr); - return *(m_ptr + m_count - 1); + VULKAN_HPP_ASSERT( m_count && m_ptr ); + return *( m_ptr + m_count - 1 ); } - bool empty() const + bool empty() const VULKAN_HPP_NOEXCEPT { - return (m_count == 0); + return ( m_count == 0 ); } - uint32_t size() const + uint32_t size() const VULKAN_HPP_NOEXCEPT { return m_count; } - T * data() const + T * data() const VULKAN_HPP_NOEXCEPT { return m_ptr; } private: - uint32_t m_count; - T * m_ptr; - }; -#endif - - template struct FlagTraits - { - enum { allFlags = 0 }; + uint32_t m_count; + T * m_ptr; }; - template - class Flags + template + class ArrayProxyNoTemporaries { public: - VULKAN_HPP_CONSTEXPR Flags() - : m_mask(0) + VULKAN_HPP_CONSTEXPR ArrayProxyNoTemporaries() VULKAN_HPP_NOEXCEPT + : m_count( 0 ) + , m_ptr( nullptr ) + {} + + VULKAN_HPP_CONSTEXPR ArrayProxyNoTemporaries( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + : m_count( 0 ) + , m_ptr( nullptr ) + {} + + ArrayProxyNoTemporaries( T & value ) VULKAN_HPP_NOEXCEPT + : m_count( 1 ) + , m_ptr( &value ) + {} + + template + ArrayProxyNoTemporaries( V && value ) = delete; + + template ::value, int>::type = 0> + ArrayProxyNoTemporaries( typename std::remove_const::type & value ) VULKAN_HPP_NOEXCEPT + : m_count( 1 ) + , m_ptr( &value ) + {} + + template ::value, int>::type = 0> + ArrayProxyNoTemporaries( typename std::remove_const::type && value ) = delete; + + ArrayProxyNoTemporaries( uint32_t count, T * ptr ) VULKAN_HPP_NOEXCEPT + : m_count( count ) + , m_ptr( ptr ) + {} + + template ::value, int>::type = 0> + ArrayProxyNoTemporaries( uint32_t count, typename std::remove_const::type * ptr ) VULKAN_HPP_NOEXCEPT + : m_count( count ) + , m_ptr( ptr ) + {} + + ArrayProxyNoTemporaries( std::initializer_list const & list ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( list.size() ) ) + , m_ptr( list.begin() ) + {} + + ArrayProxyNoTemporaries( std::initializer_list const && list ) = delete; + + template ::value, int>::type = 0> + ArrayProxyNoTemporaries( std::initializer_list::type> const & list ) + VULKAN_HPP_NOEXCEPT + : m_count( static_cast( list.size() ) ) + , m_ptr( list.begin() ) + {} + + template ::value, int>::type = 0> + ArrayProxyNoTemporaries( std::initializer_list::type> const && list ) = delete; + + ArrayProxyNoTemporaries( std::initializer_list & list ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( list.size() ) ) + , m_ptr( list.begin() ) + {} + + ArrayProxyNoTemporaries( std::initializer_list && list ) = delete; + + template ::value, int>::type = 0> + ArrayProxyNoTemporaries( std::initializer_list::type> & list ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( list.size() ) ) + , m_ptr( list.begin() ) + {} + + template ::value, int>::type = 0> + ArrayProxyNoTemporaries( std::initializer_list::type> && list ) = delete; + + // Any type with a .data() return type implicitly convertible to T*, and a // .size() return type implicitly + // convertible to size_t. + template ().data() ), T *>::value && + std::is_convertible().size() ), std::size_t>::value>::type * = nullptr> + ArrayProxyNoTemporaries( V & v ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( v.size() ) ) + , m_ptr( v.data() ) + {} + + const T * begin() const VULKAN_HPP_NOEXCEPT { + return m_ptr; } - Flags(BitType bit) - : m_mask(static_cast(bit)) + const T * end() const VULKAN_HPP_NOEXCEPT { + return m_ptr + m_count; } - Flags(Flags const& rhs) - : m_mask(rhs.m_mask) + const T & front() const VULKAN_HPP_NOEXCEPT { + VULKAN_HPP_ASSERT( m_count && m_ptr ); + return *m_ptr; } - explicit Flags(MaskType flags) - : m_mask(flags) + const T & back() const VULKAN_HPP_NOEXCEPT { + VULKAN_HPP_ASSERT( m_count && m_ptr ); + return *( m_ptr + m_count - 1 ); } - Flags & operator=(Flags const& rhs) + bool empty() const VULKAN_HPP_NOEXCEPT { - m_mask = rhs.m_mask; - return *this; + return ( m_count == 0 ); } - Flags & operator|=(Flags const& rhs) + uint32_t size() const VULKAN_HPP_NOEXCEPT { - m_mask |= rhs.m_mask; - return *this; + return m_count; } - Flags & operator&=(Flags const& rhs) + T * data() const VULKAN_HPP_NOEXCEPT { - m_mask &= rhs.m_mask; - return *this; + return m_ptr; } - Flags & operator^=(Flags const& rhs) + private: + uint32_t m_count; + T * m_ptr; + }; +#endif + + template + class ArrayWrapper1D : public std::array + { + public: + VULKAN_HPP_CONSTEXPR ArrayWrapper1D() VULKAN_HPP_NOEXCEPT : std::array() {} + + VULKAN_HPP_CONSTEXPR ArrayWrapper1D( std::array const & data ) VULKAN_HPP_NOEXCEPT : std::array( data ) + {} + +#if ( VK_USE_64_BIT_PTR_DEFINES == 0 ) + // on 32 bit compiles, needs overloads on index type int to resolve ambiguities + VULKAN_HPP_CONSTEXPR T const & operator[]( int index ) const VULKAN_HPP_NOEXCEPT { - m_mask ^= rhs.m_mask; - return *this; + return std::array::operator[]( index ); } - Flags operator|(Flags const& rhs) const + T & operator[]( int index ) VULKAN_HPP_NOEXCEPT { - Flags result(*this); - result |= rhs; - return result; + return std::array::operator[]( index ); } +#endif - Flags operator&(Flags const& rhs) const + operator T const *() const VULKAN_HPP_NOEXCEPT { - Flags result(*this); - result &= rhs; - return result; + return this->data(); } - Flags operator^(Flags const& rhs) const + operator T *() VULKAN_HPP_NOEXCEPT { - Flags result(*this); - result ^= rhs; - return result; + return this->data(); } - bool operator!() const + template ::value, int>::type = 0> + operator std::string() const { - return !m_mask; + return std::string( this->data() ); } - Flags operator~() const +#if 17 <= VULKAN_HPP_CPP_VERSION + template ::value, int>::type = 0> + operator std::string_view() const { - Flags result(*this); - result.m_mask ^= FlagTraits::allFlags; - return result; + return std::string_view( this->data() ); } +#endif - bool operator==(Flags const& rhs) const +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + template ::value, int>::type = 0> + std::strong_ordering operator<=>( ArrayWrapper1D const & rhs ) const VULKAN_HPP_NOEXCEPT { - return m_mask == rhs.m_mask; + return *static_cast const *>( this ) <=> *static_cast const *>( &rhs ); + } +#else + template ::value, int>::type = 0> + bool operator<( ArrayWrapper1D const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return *static_cast const *>( this ) < *static_cast const *>( &rhs ); } - bool operator!=(Flags const& rhs) const + template ::value, int>::type = 0> + bool operator<=( ArrayWrapper1D const & rhs ) const VULKAN_HPP_NOEXCEPT { - return m_mask != rhs.m_mask; + return *static_cast const *>( this ) <= *static_cast const *>( &rhs ); } - explicit operator bool() const + template ::value, int>::type = 0> + bool operator>( ArrayWrapper1D const & rhs ) const VULKAN_HPP_NOEXCEPT { - return !!m_mask; + return *static_cast const *>( this ) > *static_cast const *>( &rhs ); } - explicit operator MaskType() const + template ::value, int>::type = 0> + bool operator>=( ArrayWrapper1D const & rhs ) const VULKAN_HPP_NOEXCEPT { - return m_mask; + return *static_cast const *>( this ) >= *static_cast const *>( &rhs ); } +#endif - private: - MaskType m_mask; + template ::value, int>::type = 0> + bool operator==( ArrayWrapper1D const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return *static_cast const *>( this ) == *static_cast const *>( &rhs ); + } + + template ::value, int>::type = 0> + bool operator!=( ArrayWrapper1D const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return *static_cast const *>( this ) != *static_cast const *>( &rhs ); + } }; - template - Flags operator|(BitType bit, Flags const& flags) + // specialization of relational operators between std::string and arrays of chars + template + bool operator<( std::string const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT { - return flags | bit; + return lhs < rhs.data(); } - template - Flags operator&(BitType bit, Flags const& flags) + template + bool operator<=( std::string const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT { - return flags & bit; + return lhs <= rhs.data(); } - template - Flags operator^(BitType bit, Flags const& flags) + template + bool operator>( std::string const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT { - return flags ^ bit; + return lhs > rhs.data(); } - template - class Optional + template + bool operator>=( std::string const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT { - public: - Optional(RefType & reference) { m_ptr = &reference; } - Optional(RefType * ptr) { m_ptr = ptr; } - Optional(std::nullptr_t) { m_ptr = nullptr; } - - operator RefType*() const { return m_ptr; } - RefType const* operator->() const { return m_ptr; } - explicit operator bool() const { return !!m_ptr; } - - private: - RefType *m_ptr; - }; - - template struct isStructureChainValid { enum { value = false }; }; + return lhs >= rhs.data(); + } - template - struct TypeList + template + bool operator==( std::string const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT { - using list = P; - using last = T; - }; + return lhs == rhs.data(); + } - template - struct extendCheck + template + bool operator!=( std::string const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT { - static const bool valid = isStructureChainValid::value || extendCheck::valid; - }; + return lhs != rhs.data(); + } - template - struct extendCheck,X> + template + class ArrayWrapper2D : public std::array, N> { - static const bool valid = isStructureChainValid::value; - }; + public: + VULKAN_HPP_CONSTEXPR ArrayWrapper2D() VULKAN_HPP_NOEXCEPT : std::array, N>() {} - template - struct extendCheck - { - static const bool valid = true; + VULKAN_HPP_CONSTEXPR ArrayWrapper2D( std::array, N> const & data ) VULKAN_HPP_NOEXCEPT + : std::array, N>( *reinterpret_cast, N> const *>( &data ) ) + {} }; - template - class StructureChainElement + template + struct FlagTraits { - public: - explicit operator Element&() { return value; } - explicit operator const Element&() const { return value; } - private: - Element value; + enum + { + allFlags = 0 + }; }; - template - class StructureChain : private StructureChainElement... + template + class Flags { public: - StructureChain() - { - link(); - } - - StructureChain(StructureChain const &rhs) - { - linkAndCopy(rhs); - } + using MaskType = typename std::underlying_type::type; - StructureChain(StructureElements const &... elems) - { - linkAndCopyElements(elems...); - } + // constructors + VULKAN_HPP_CONSTEXPR Flags() VULKAN_HPP_NOEXCEPT : m_mask( 0 ) {} - StructureChain& operator=(StructureChain const &rhs) - { - linkAndCopy(rhs); - return *this; - } + VULKAN_HPP_CONSTEXPR Flags( BitType bit ) VULKAN_HPP_NOEXCEPT : m_mask( static_cast( bit ) ) {} - template ClassType& get() { return static_cast(*this);} + VULKAN_HPP_CONSTEXPR Flags( Flags const & rhs ) VULKAN_HPP_NOEXCEPT = default; - template - std::tuple get() - { - return std::tuple_cat( - std::make_tuple(get(),get()), - std::make_tuple(get()...) - ); - } + VULKAN_HPP_CONSTEXPR explicit Flags( MaskType flags ) VULKAN_HPP_NOEXCEPT : m_mask( flags ) {} - private: - template - void link() + // relational operators +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Flags const & ) const = default; +#else + VULKAN_HPP_CONSTEXPR bool operator<( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT { - static_assert(extendCheck::valid, "The structure chain is not valid!"); + return m_mask < rhs.m_mask; } - template - void link() + VULKAN_HPP_CONSTEXPR bool operator<=( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT { - static_assert(extendCheck::valid, "The structure chain is not valid!"); - X& x = static_cast(*this); - Y& y = static_cast(*this); - x.pNext = &y; - link, Y, Z...>(); + return m_mask <= rhs.m_mask; } - template - void linkAndCopy(StructureChain const &rhs) + VULKAN_HPP_CONSTEXPR bool operator>( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT { - static_assert(extendCheck::valid, "The structure chain is not valid!"); - static_cast(*this) = static_cast(rhs); + return m_mask > rhs.m_mask; } - template - void linkAndCopy(StructureChain const &rhs) + VULKAN_HPP_CONSTEXPR bool operator>=( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT { - static_assert(extendCheck::valid, "The structure chain is not valid!"); - X& x = static_cast(*this); - Y& y = static_cast(*this); - x = static_cast(rhs); - x.pNext = &y; - linkAndCopy, Y, Z...>(rhs); + return m_mask >= rhs.m_mask; } - template - void linkAndCopyElements(X const &xelem) + VULKAN_HPP_CONSTEXPR bool operator==( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT { - static_assert(extendCheck::valid, "The structure chain is not valid!"); - static_cast(*this) = xelem; + return m_mask == rhs.m_mask; } - template - void linkAndCopyElements(X const &xelem, Y const &yelem, Z const &... zelem) + VULKAN_HPP_CONSTEXPR bool operator!=( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT { - static_assert(extendCheck::valid, "The structure chain is not valid!"); - X& x = static_cast(*this); - Y& y = static_cast(*this); - x = xelem; - x.pNext = &y; - linkAndCopyElements, Y, Z...>(yelem, zelem...); + return m_mask != rhs.m_mask; } - }; - -#if !defined(VULKAN_HPP_NO_SMART_HANDLE) - template class UniqueHandleTraits; - - template - class UniqueHandle : public UniqueHandleTraits::deleter - { - private: - using Deleter = typename UniqueHandleTraits::deleter; - - public: - using element_type = Type; - - explicit UniqueHandle( Type const& value = Type(), Deleter const& deleter = Deleter() ) - : Deleter( deleter) - , m_value( value ) - {} - - UniqueHandle( UniqueHandle const& ) = delete; - - UniqueHandle( UniqueHandle && other ) - : Deleter( std::move( static_cast( other ) ) ) - , m_value( other.release() ) - {} +#endif - ~UniqueHandle() + // logical operator + VULKAN_HPP_CONSTEXPR bool operator!() const VULKAN_HPP_NOEXCEPT { - if ( m_value ) this->destroy( m_value ); + return !m_mask; } - UniqueHandle & operator=( UniqueHandle const& ) = delete; - - UniqueHandle & operator=( UniqueHandle && other ) + // bitwise operators + VULKAN_HPP_CONSTEXPR Flags operator&( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT { - reset( other.release() ); - *static_cast(this) = std::move( static_cast(other) ); - return *this; + return Flags( m_mask & rhs.m_mask ); } - explicit operator bool() const + VULKAN_HPP_CONSTEXPR Flags operator|( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT { - return m_value.operator bool(); + return Flags( m_mask | rhs.m_mask ); } - Type const* operator->() const + VULKAN_HPP_CONSTEXPR Flags operator^( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT { - return &m_value; + return Flags( m_mask ^ rhs.m_mask ); } - Type * operator->() + VULKAN_HPP_CONSTEXPR Flags operator~() const VULKAN_HPP_NOEXCEPT { - return &m_value; + return Flags( m_mask ^ FlagTraits::allFlags ); } - Type const& operator*() const - { - return m_value; - } + // assignment operators + VULKAN_HPP_CONSTEXPR_14 Flags & operator=( Flags const & rhs ) VULKAN_HPP_NOEXCEPT = default; - Type & operator*() + VULKAN_HPP_CONSTEXPR_14 Flags & operator|=( Flags const & rhs ) VULKAN_HPP_NOEXCEPT { - return m_value; + m_mask |= rhs.m_mask; + return *this; } - const Type & get() const - { - return m_value; - } - - Type & get() + VULKAN_HPP_CONSTEXPR_14 Flags & operator&=( Flags const & rhs ) VULKAN_HPP_NOEXCEPT { - return m_value; + m_mask &= rhs.m_mask; + return *this; } - void reset( Type const& value = Type() ) + VULKAN_HPP_CONSTEXPR_14 Flags & operator^=( Flags const & rhs ) VULKAN_HPP_NOEXCEPT { - if ( m_value != value ) - { - if ( m_value ) this->destroy( m_value ); - m_value = value; - } + m_mask ^= rhs.m_mask; + return *this; } - Type release() + // cast operators + explicit VULKAN_HPP_CONSTEXPR operator bool() const VULKAN_HPP_NOEXCEPT { - Type value = m_value; - m_value = nullptr; - return value; + return !!m_mask; } - void swap( UniqueHandle & rhs ) + explicit VULKAN_HPP_CONSTEXPR operator MaskType() const VULKAN_HPP_NOEXCEPT { - std::swap(m_value, rhs.m_value); - std::swap(static_cast(*this), static_cast(rhs)); + return m_mask; } +#if defined( VULKAN_HPP_FLAGS_MASK_TYPE_AS_PUBLIC ) + public: +#else private: - Type m_value; +#endif + MaskType m_mask; }; - template - VULKAN_HPP_INLINE std::vector uniqueToRaw(std::vector const& handles) +#if !defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + // relational operators only needed for pre C++20 + template + VULKAN_HPP_CONSTEXPR bool operator<( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT { - std::vector newBuffer(handles.size()); - std::transform(handles.begin(), handles.end(), newBuffer.begin(), [](UniqueType const& handle) { return handle.get(); }); - return newBuffer; + return flags.operator>( bit ); } - template - VULKAN_HPP_INLINE void swap( UniqueHandle & lhs, UniqueHandle & rhs ) + template + VULKAN_HPP_CONSTEXPR bool operator<=( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT { - lhs.swap( rhs ); + return flags.operator>=( bit ); } -#endif -#if !defined(VK_NO_PROTOTYPES) - class DispatchLoaderStatic + template + VULKAN_HPP_CONSTEXPR bool operator>( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT { - public: - VkResult vkCreateInstance( const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance ) const - { - return ::vkCreateInstance( pCreateInfo, pAllocator, pInstance ); - } + return flags.operator<( bit ); + } - VkResult vkEnumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties ) const - { - return ::vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, pProperties ); - } + template + VULKAN_HPP_CONSTEXPR bool operator>=( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT + { + return flags.operator<=( bit ); + } - VkResult vkEnumerateInstanceLayerProperties( uint32_t* pPropertyCount, VkLayerProperties* pProperties ) const - { - return ::vkEnumerateInstanceLayerProperties( pPropertyCount, pProperties ); - } + template + VULKAN_HPP_CONSTEXPR bool operator==( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT + { + return flags.operator==( bit ); + } - VkResult vkEnumerateInstanceVersion( uint32_t* pApiVersion ) const - { - return ::vkEnumerateInstanceVersion( pApiVersion ); - } + template + VULKAN_HPP_CONSTEXPR bool operator!=( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT + { + return flags.operator!=( bit ); + } +#endif - VkResult vkBeginCommandBuffer( VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo ) const + // bitwise operators + template + VULKAN_HPP_CONSTEXPR Flags operator&( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT + { + return flags.operator&( bit ); + } + + template + VULKAN_HPP_CONSTEXPR Flags operator|( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT + { + return flags.operator|( bit ); + } + + template + VULKAN_HPP_CONSTEXPR Flags operator^( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT + { + return flags.operator^( bit ); + } + + template + class Optional + { + public: + Optional( RefType & reference ) VULKAN_HPP_NOEXCEPT { - return ::vkBeginCommandBuffer( commandBuffer, pBeginInfo ); + m_ptr = &reference; } - - void vkCmdBeginConditionalRenderingEXT( VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin ) const + Optional( RefType * ptr ) VULKAN_HPP_NOEXCEPT { - return ::vkCmdBeginConditionalRenderingEXT( commandBuffer, pConditionalRenderingBegin ); + m_ptr = ptr; } - - void vkCmdBeginDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo ) const + Optional( std::nullptr_t ) VULKAN_HPP_NOEXCEPT { - return ::vkCmdBeginDebugUtilsLabelEXT( commandBuffer, pLabelInfo ); + m_ptr = nullptr; } - void vkCmdBeginQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags ) const + operator RefType *() const VULKAN_HPP_NOEXCEPT { - return ::vkCmdBeginQuery( commandBuffer, queryPool, query, flags ); + return m_ptr; } - - void vkCmdBeginQueryIndexedEXT( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index ) const + RefType const * operator->() const VULKAN_HPP_NOEXCEPT { - return ::vkCmdBeginQueryIndexedEXT( commandBuffer, queryPool, query, flags, index ); + return m_ptr; } - - void vkCmdBeginRenderPass( VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents ) const + explicit operator bool() const VULKAN_HPP_NOEXCEPT { - return ::vkCmdBeginRenderPass( commandBuffer, pRenderPassBegin, contents ); + return !!m_ptr; } - void vkCmdBeginRenderPass2KHR( VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo ) const + private: + RefType * m_ptr; + }; + + template + struct StructExtends + { + enum { - return ::vkCmdBeginRenderPass2KHR( commandBuffer, pRenderPassBegin, pSubpassBeginInfo ); - } + value = false + }; + }; + + template + struct IsPartOfStructureChain + { + static const bool valid = false; + }; + + template + struct IsPartOfStructureChain + { + static const bool valid = std::is_same::value || IsPartOfStructureChain::valid; + }; + + template + struct StructureChainContains + { + static const bool value = + std::is_same>::type>::value || + StructureChainContains::value; + }; + + template + struct StructureChainContains<0, T, ChainElements...> + { + static const bool value = + std::is_same>::type>::value; + }; + + template + struct StructureChainValidation + { + using TestType = typename std::tuple_element>::type; + static const bool valid = + StructExtends>::type>::value && + ( TestType::allowDuplicate || !StructureChainContains::value ) && + StructureChainValidation::valid; + }; + + template + struct StructureChainValidation<0, ChainElements...> + { + static const bool valid = true; + }; - void vkCmdBeginTransformFeedbackEXT( VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets ) const + template + class StructureChain : public std::tuple + { + public: + StructureChain() VULKAN_HPP_NOEXCEPT { - return ::vkCmdBeginTransformFeedbackEXT( commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets ); + static_assert( StructureChainValidation::valid, + "The structure chain is not valid!" ); + link(); } - void vkCmdBindDescriptorSets( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets ) const + StructureChain( StructureChain const & rhs ) VULKAN_HPP_NOEXCEPT : std::tuple( rhs ) { - return ::vkCmdBindDescriptorSets( commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets ); + static_assert( StructureChainValidation::valid, + "The structure chain is not valid!" ); + link( &std::get<0>( *this ), + &std::get<0>( rhs ), + reinterpret_cast( &std::get<0>( *this ) ), + reinterpret_cast( &std::get<0>( rhs ) ) ); } - void vkCmdBindIndexBuffer( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType ) const + StructureChain( StructureChain && rhs ) VULKAN_HPP_NOEXCEPT + : std::tuple( std::forward>( rhs ) ) { - return ::vkCmdBindIndexBuffer( commandBuffer, buffer, offset, indexType ); + static_assert( StructureChainValidation::valid, + "The structure chain is not valid!" ); + link( &std::get<0>( *this ), + &std::get<0>( rhs ), + reinterpret_cast( &std::get<0>( *this ) ), + reinterpret_cast( &std::get<0>( rhs ) ) ); } - void vkCmdBindPipeline( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline ) const + StructureChain( ChainElements const &... elems ) VULKAN_HPP_NOEXCEPT : std::tuple( elems... ) { - return ::vkCmdBindPipeline( commandBuffer, pipelineBindPoint, pipeline ); + static_assert( StructureChainValidation::valid, + "The structure chain is not valid!" ); + link(); } - void vkCmdBindShadingRateImageNV( VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout ) const + StructureChain & operator=( StructureChain const & rhs ) VULKAN_HPP_NOEXCEPT { - return ::vkCmdBindShadingRateImageNV( commandBuffer, imageView, imageLayout ); + std::tuple::operator=( rhs ); + link( &std::get<0>( *this ), + &std::get<0>( rhs ), + reinterpret_cast( &std::get<0>( *this ) ), + reinterpret_cast( &std::get<0>( rhs ) ) ); + return *this; } - void vkCmdBindTransformFeedbackBuffersEXT( VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes ) const + StructureChain & operator=( StructureChain && rhs ) = delete; + + template >::type, size_t Which = 0> + T & get() VULKAN_HPP_NOEXCEPT { - return ::vkCmdBindTransformFeedbackBuffersEXT( commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes ); + return std::get::value>( + static_cast &>( *this ) ); } - void vkCmdBindVertexBuffers( VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets ) const + template >::type, size_t Which = 0> + T const & get() const VULKAN_HPP_NOEXCEPT { - return ::vkCmdBindVertexBuffers( commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets ); + return std::get::value>( + static_cast const &>( *this ) ); } - void vkCmdBlitImage( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter ) const + template + std::tuple get() VULKAN_HPP_NOEXCEPT { - return ::vkCmdBlitImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter ); + return std::tie( get(), get(), get()... ); } - void vkCmdBuildAccelerationStructureNV( VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset ) const + template + std::tuple get() const VULKAN_HPP_NOEXCEPT { - return ::vkCmdBuildAccelerationStructureNV( commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset ); + return std::tie( get(), get(), get()... ); } - void vkCmdClearAttachments( VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects ) const + template + typename std::enable_if< + std::is_same>::type>::value && + ( Which == 0 ), + bool>::type + isLinked() const VULKAN_HPP_NOEXCEPT { - return ::vkCmdClearAttachments( commandBuffer, attachmentCount, pAttachments, rectCount, pRects ); + return true; } - void vkCmdClearColorImage( VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges ) const + template + typename std::enable_if< + !std::is_same>::type>::value || + ( Which != 0 ), + bool>::type + isLinked() const VULKAN_HPP_NOEXCEPT { - return ::vkCmdClearColorImage( commandBuffer, image, imageLayout, pColor, rangeCount, pRanges ); + static_assert( IsPartOfStructureChain::valid, + "Can't unlink Structure that's not part of this StructureChain!" ); + return isLinked( reinterpret_cast( &get() ) ); } - void vkCmdClearDepthStencilImage( VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges ) const + template + typename std::enable_if< + !std::is_same>::type>::value || + ( Which != 0 ), + void>::type + relink() VULKAN_HPP_NOEXCEPT { - return ::vkCmdClearDepthStencilImage( commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges ); + static_assert( IsPartOfStructureChain::valid, + "Can't relink Structure that's not part of this StructureChain!" ); + auto pNext = reinterpret_cast( &get() ); + VULKAN_HPP_ASSERT( !isLinked( pNext ) ); + auto & headElement = std::get<0>( static_cast &>( *this ) ); + pNext->pNext = reinterpret_cast( headElement.pNext ); + headElement.pNext = pNext; } - void vkCmdCopyAccelerationStructureNV( VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeNV mode ) const + template + typename std::enable_if< + !std::is_same>::type>::value || + ( Which != 0 ), + void>::type + unlink() VULKAN_HPP_NOEXCEPT { - return ::vkCmdCopyAccelerationStructureNV( commandBuffer, dst, src, mode ); + static_assert( IsPartOfStructureChain::valid, + "Can't unlink Structure that's not part of this StructureChain!" ); + unlink( reinterpret_cast( &get() ) ); } - void vkCmdCopyBuffer( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions ) const + private: + template + struct ChainElementIndex : ChainElementIndex + {}; + + template + struct ChainElementIndex::value, void>::type, + First, + Types...> : ChainElementIndex + {}; + + template + struct ChainElementIndex::value, void>::type, + First, + Types...> : ChainElementIndex + {}; + + template + struct ChainElementIndex::value, void>::type, + First, + Types...> : std::integral_constant + {}; + + bool isLinked( VkBaseInStructure const * pNext ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdCopyBuffer( commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions ); + VkBaseInStructure const * elementPtr = reinterpret_cast( + &std::get<0>( static_cast const &>( *this ) ) ); + while ( elementPtr ) + { + if ( elementPtr->pNext == pNext ) + { + return true; + } + elementPtr = elementPtr->pNext; + } + return false; } - void vkCmdCopyBufferToImage( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions ) const + template + typename std::enable_if::type link() VULKAN_HPP_NOEXCEPT { - return ::vkCmdCopyBufferToImage( commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions ); + auto & x = std::get( static_cast &>( *this ) ); + x.pNext = &std::get( static_cast &>( *this ) ); + link(); } - void vkCmdCopyImage( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions ) const + template + typename std::enable_if::type link() VULKAN_HPP_NOEXCEPT + {} + + void link( void * dstBase, void const * srcBase, VkBaseOutStructure * dst, VkBaseInStructure const * src ) { - return ::vkCmdCopyImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); + while ( src->pNext ) + { + std::ptrdiff_t offset = + reinterpret_cast( src->pNext ) - reinterpret_cast( srcBase ); + dst->pNext = reinterpret_cast( reinterpret_cast( dstBase ) + offset ); + dst = dst->pNext; + src = src->pNext; + } + dst->pNext = nullptr; } - void vkCmdCopyImageToBuffer( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions ) const + void unlink( VkBaseOutStructure const * pNext ) VULKAN_HPP_NOEXCEPT { - return ::vkCmdCopyImageToBuffer( commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions ); + VkBaseOutStructure * elementPtr = + reinterpret_cast( &std::get<0>( static_cast &>( *this ) ) ); + while ( elementPtr && ( elementPtr->pNext != pNext ) ) + { + elementPtr = elementPtr->pNext; + } + if ( elementPtr ) + { + elementPtr->pNext = pNext->pNext; + } + else + { + VULKAN_HPP_ASSERT( false ); // fires, if the ClassType member has already been unlinked ! + } } + }; + +#if !defined( VULKAN_HPP_NO_SMART_HANDLE ) + template + class UniqueHandleTraits; + + template + class UniqueHandle : public UniqueHandleTraits::deleter + { + private: + using Deleter = typename UniqueHandleTraits::deleter; + + public: + using element_type = Type; + + UniqueHandle() : Deleter(), m_value() {} + + explicit UniqueHandle( Type const & value, Deleter const & deleter = Deleter() ) VULKAN_HPP_NOEXCEPT + : Deleter( deleter ) + , m_value( value ) + {} + + UniqueHandle( UniqueHandle const & ) = delete; + + UniqueHandle( UniqueHandle && other ) VULKAN_HPP_NOEXCEPT + : Deleter( std::move( static_cast( other ) ) ) + , m_value( other.release() ) + {} - void vkCmdCopyQueryPoolResults( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags ) const + ~UniqueHandle() VULKAN_HPP_NOEXCEPT { - return ::vkCmdCopyQueryPoolResults( commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags ); + if ( m_value ) + { + this->destroy( m_value ); + } } - void vkCmdDebugMarkerBeginEXT( VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo ) const + UniqueHandle & operator=( UniqueHandle const & ) = delete; + + UniqueHandle & operator=( UniqueHandle && other ) VULKAN_HPP_NOEXCEPT { - return ::vkCmdDebugMarkerBeginEXT( commandBuffer, pMarkerInfo ); + reset( other.release() ); + *static_cast( this ) = std::move( static_cast( other ) ); + return *this; } - void vkCmdDebugMarkerEndEXT( VkCommandBuffer commandBuffer ) const + explicit operator bool() const VULKAN_HPP_NOEXCEPT { - return ::vkCmdDebugMarkerEndEXT( commandBuffer ); + return m_value.operator bool(); } - void vkCmdDebugMarkerInsertEXT( VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo ) const + Type const * operator->() const VULKAN_HPP_NOEXCEPT { - return ::vkCmdDebugMarkerInsertEXT( commandBuffer, pMarkerInfo ); + return &m_value; } - void vkCmdDispatch( VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const + Type * operator->() VULKAN_HPP_NOEXCEPT { - return ::vkCmdDispatch( commandBuffer, groupCountX, groupCountY, groupCountZ ); + return &m_value; } - void vkCmdDispatchBase( VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const + Type const & operator*() const VULKAN_HPP_NOEXCEPT { - return ::vkCmdDispatchBase( commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); + return m_value; } - void vkCmdDispatchBaseKHR( VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const + Type & operator*() VULKAN_HPP_NOEXCEPT { - return ::vkCmdDispatchBaseKHR( commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); + return m_value; } - void vkCmdDispatchIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset ) const + const Type & get() const VULKAN_HPP_NOEXCEPT { - return ::vkCmdDispatchIndirect( commandBuffer, buffer, offset ); + return m_value; } - void vkCmdDraw( VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const + Type & get() VULKAN_HPP_NOEXCEPT { - return ::vkCmdDraw( commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance ); + return m_value; } - void vkCmdDrawIndexed( VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const + void reset( Type const & value = Type() ) VULKAN_HPP_NOEXCEPT { - return ::vkCmdDrawIndexed( commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance ); + if ( m_value != value ) + { + if ( m_value ) + { + this->destroy( m_value ); + } + m_value = value; + } } - void vkCmdDrawIndexedIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride ) const + Type release() VULKAN_HPP_NOEXCEPT { - return ::vkCmdDrawIndexedIndirect( commandBuffer, buffer, offset, drawCount, stride ); + Type value = m_value; + m_value = nullptr; + return value; } - void vkCmdDrawIndexedIndirectCountAMD( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const + void swap( UniqueHandle & rhs ) VULKAN_HPP_NOEXCEPT { - return ::vkCmdDrawIndexedIndirectCountAMD( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); + std::swap( m_value, rhs.m_value ); + std::swap( static_cast( *this ), static_cast( rhs ) ); } - void vkCmdDrawIndexedIndirectCountKHR( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const + private: + Type m_value; + }; + + template + VULKAN_HPP_INLINE std::vector + uniqueToRaw( std::vector const & handles ) + { + std::vector newBuffer( handles.size() ); + std::transform( + handles.begin(), handles.end(), newBuffer.begin(), []( UniqueType const & handle ) { return handle.get(); } ); + return newBuffer; + } + + template + VULKAN_HPP_INLINE void swap( UniqueHandle & lhs, + UniqueHandle & rhs ) VULKAN_HPP_NOEXCEPT + { + lhs.swap( rhs ); + } +#endif + + class DispatchLoaderBase + { + public: + DispatchLoaderBase() = default; + DispatchLoaderBase( std::nullptr_t ) +#if !defined( NDEBUG ) + : m_valid( false ) +#endif + {} + +#if !defined( NDEBUG ) + size_t getVkHeaderVersion() const { - return ::vkCmdDrawIndexedIndirectCountKHR( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); + VULKAN_HPP_ASSERT( m_valid ); + return vkHeaderVersion; } - void vkCmdDrawIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride ) const + private: + size_t vkHeaderVersion = VK_HEADER_VERSION; + bool m_valid = true; +#endif + }; + +#if !defined( VK_NO_PROTOTYPES ) + class DispatchLoaderStatic : public DispatchLoaderBase + { + public: + //=== VK_VERSION_1_0 === + + VkResult vkCreateInstance( const VkInstanceCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkInstance * pInstance ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdDrawIndirect( commandBuffer, buffer, offset, drawCount, stride ); + return ::vkCreateInstance( pCreateInfo, pAllocator, pInstance ); } - void vkCmdDrawIndirectByteCountEXT( VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride ) const + void vkDestroyInstance( VkInstance instance, const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdDrawIndirectByteCountEXT( commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride ); + return ::vkDestroyInstance( instance, pAllocator ); } - void vkCmdDrawIndirectCountAMD( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const + VkResult vkEnumeratePhysicalDevices( VkInstance instance, + uint32_t * pPhysicalDeviceCount, + VkPhysicalDevice * pPhysicalDevices ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdDrawIndirectCountAMD( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); + return ::vkEnumeratePhysicalDevices( instance, pPhysicalDeviceCount, pPhysicalDevices ); } - void vkCmdDrawIndirectCountKHR( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const + void vkGetPhysicalDeviceFeatures( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceFeatures * pFeatures ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdDrawIndirectCountKHR( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); + return ::vkGetPhysicalDeviceFeatures( physicalDevice, pFeatures ); } - void vkCmdDrawMeshTasksIndirectCountNV( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const + void vkGetPhysicalDeviceFormatProperties( VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties * pFormatProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdDrawMeshTasksIndirectCountNV( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); + return ::vkGetPhysicalDeviceFormatProperties( physicalDevice, format, pFormatProperties ); } - void vkCmdDrawMeshTasksIndirectNV( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride ) const + VkResult vkGetPhysicalDeviceImageFormatProperties( VkPhysicalDevice physicalDevice, + VkFormat format, + VkImageType type, + VkImageTiling tiling, + VkImageUsageFlags usage, + VkImageCreateFlags flags, + VkImageFormatProperties * pImageFormatProperties ) const + VULKAN_HPP_NOEXCEPT { - return ::vkCmdDrawMeshTasksIndirectNV( commandBuffer, buffer, offset, drawCount, stride ); + return ::vkGetPhysicalDeviceImageFormatProperties( + physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties ); } - void vkCmdDrawMeshTasksNV( VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask ) const + void vkGetPhysicalDeviceProperties( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceProperties * pProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdDrawMeshTasksNV( commandBuffer, taskCount, firstTask ); + return ::vkGetPhysicalDeviceProperties( physicalDevice, pProperties ); } - void vkCmdEndConditionalRenderingEXT( VkCommandBuffer commandBuffer ) const + void vkGetPhysicalDeviceQueueFamilyProperties( VkPhysicalDevice physicalDevice, + uint32_t * pQueueFamilyPropertyCount, + VkQueueFamilyProperties * pQueueFamilyProperties ) const + VULKAN_HPP_NOEXCEPT { - return ::vkCmdEndConditionalRenderingEXT( commandBuffer ); + return ::vkGetPhysicalDeviceQueueFamilyProperties( + physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties ); } - void vkCmdEndDebugUtilsLabelEXT( VkCommandBuffer commandBuffer ) const + void vkGetPhysicalDeviceMemoryProperties( + VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties * pMemoryProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdEndDebugUtilsLabelEXT( commandBuffer ); + return ::vkGetPhysicalDeviceMemoryProperties( physicalDevice, pMemoryProperties ); } - void vkCmdEndQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query ) const + PFN_vkVoidFunction vkGetInstanceProcAddr( VkInstance instance, const char * pName ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdEndQuery( commandBuffer, queryPool, query ); + return ::vkGetInstanceProcAddr( instance, pName ); } - void vkCmdEndQueryIndexedEXT( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index ) const + PFN_vkVoidFunction vkGetDeviceProcAddr( VkDevice device, const char * pName ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdEndQueryIndexedEXT( commandBuffer, queryPool, query, index ); + return ::vkGetDeviceProcAddr( device, pName ); } - void vkCmdEndRenderPass( VkCommandBuffer commandBuffer ) const + VkResult vkCreateDevice( VkPhysicalDevice physicalDevice, + const VkDeviceCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkDevice * pDevice ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdEndRenderPass( commandBuffer ); + return ::vkCreateDevice( physicalDevice, pCreateInfo, pAllocator, pDevice ); } - void vkCmdEndRenderPass2KHR( VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo ) const + void vkDestroyDevice( VkDevice device, const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdEndRenderPass2KHR( commandBuffer, pSubpassEndInfo ); + return ::vkDestroyDevice( device, pAllocator ); } - void vkCmdEndTransformFeedbackEXT( VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets ) const + VkResult vkEnumerateInstanceExtensionProperties( const char * pLayerName, + uint32_t * pPropertyCount, + VkExtensionProperties * pProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdEndTransformFeedbackEXT( commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets ); + return ::vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, pProperties ); } - void vkCmdExecuteCommands( VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers ) const + VkResult vkEnumerateDeviceExtensionProperties( VkPhysicalDevice physicalDevice, + const char * pLayerName, + uint32_t * pPropertyCount, + VkExtensionProperties * pProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdExecuteCommands( commandBuffer, commandBufferCount, pCommandBuffers ); + return ::vkEnumerateDeviceExtensionProperties( physicalDevice, pLayerName, pPropertyCount, pProperties ); } - void vkCmdFillBuffer( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data ) const + VkResult vkEnumerateInstanceLayerProperties( uint32_t * pPropertyCount, + VkLayerProperties * pProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdFillBuffer( commandBuffer, dstBuffer, dstOffset, size, data ); + return ::vkEnumerateInstanceLayerProperties( pPropertyCount, pProperties ); } - void vkCmdInsertDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo ) const + VkResult vkEnumerateDeviceLayerProperties( VkPhysicalDevice physicalDevice, + uint32_t * pPropertyCount, + VkLayerProperties * pProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdInsertDebugUtilsLabelEXT( commandBuffer, pLabelInfo ); + return ::vkEnumerateDeviceLayerProperties( physicalDevice, pPropertyCount, pProperties ); } - void vkCmdNextSubpass( VkCommandBuffer commandBuffer, VkSubpassContents contents ) const + void vkGetDeviceQueue( VkDevice device, + uint32_t queueFamilyIndex, + uint32_t queueIndex, + VkQueue * pQueue ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdNextSubpass( commandBuffer, contents ); + return ::vkGetDeviceQueue( device, queueFamilyIndex, queueIndex, pQueue ); } - void vkCmdNextSubpass2KHR( VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo ) const + VkResult vkQueueSubmit( VkQueue queue, + uint32_t submitCount, + const VkSubmitInfo * pSubmits, + VkFence fence ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdNextSubpass2KHR( commandBuffer, pSubpassBeginInfo, pSubpassEndInfo ); + return ::vkQueueSubmit( queue, submitCount, pSubmits, fence ); } - void vkCmdPipelineBarrier( VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers ) const + VkResult vkQueueWaitIdle( VkQueue queue ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdPipelineBarrier( commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers ); + return ::vkQueueWaitIdle( queue ); } - void vkCmdProcessCommandsNVX( VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const + VkResult vkDeviceWaitIdle( VkDevice device ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdProcessCommandsNVX( commandBuffer, pProcessCommandsInfo ); + return ::vkDeviceWaitIdle( device ); } - void vkCmdPushConstants( VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const + VkResult vkAllocateMemory( VkDevice device, + const VkMemoryAllocateInfo * pAllocateInfo, + const VkAllocationCallbacks * pAllocator, + VkDeviceMemory * pMemory ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdPushConstants( commandBuffer, layout, stageFlags, offset, size, pValues ); + return ::vkAllocateMemory( device, pAllocateInfo, pAllocator, pMemory ); } - void vkCmdPushDescriptorSetKHR( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites ) const + void vkFreeMemory( VkDevice device, + VkDeviceMemory memory, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdPushDescriptorSetKHR( commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites ); + return ::vkFreeMemory( device, memory, pAllocator ); } - void vkCmdPushDescriptorSetWithTemplateKHR( VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData ) const + VkResult vkMapMemory( VkDevice device, + VkDeviceMemory memory, + VkDeviceSize offset, + VkDeviceSize size, + VkMemoryMapFlags flags, + void ** ppData ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdPushDescriptorSetWithTemplateKHR( commandBuffer, descriptorUpdateTemplate, layout, set, pData ); + return ::vkMapMemory( device, memory, offset, size, flags, ppData ); } - void vkCmdReserveSpaceForCommandsNVX( VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const + void vkUnmapMemory( VkDevice device, VkDeviceMemory memory ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdReserveSpaceForCommandsNVX( commandBuffer, pReserveSpaceInfo ); + return ::vkUnmapMemory( device, memory ); } - void vkCmdResetEvent( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask ) const + VkResult vkFlushMappedMemoryRanges( VkDevice device, + uint32_t memoryRangeCount, + const VkMappedMemoryRange * pMemoryRanges ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdResetEvent( commandBuffer, event, stageMask ); + return ::vkFlushMappedMemoryRanges( device, memoryRangeCount, pMemoryRanges ); } - void vkCmdResetQueryPool( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const + VkResult vkInvalidateMappedMemoryRanges( VkDevice device, + uint32_t memoryRangeCount, + const VkMappedMemoryRange * pMemoryRanges ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdResetQueryPool( commandBuffer, queryPool, firstQuery, queryCount ); + return ::vkInvalidateMappedMemoryRanges( device, memoryRangeCount, pMemoryRanges ); } - void vkCmdResolveImage( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions ) const + void vkGetDeviceMemoryCommitment( VkDevice device, + VkDeviceMemory memory, + VkDeviceSize * pCommittedMemoryInBytes ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdResolveImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); + return ::vkGetDeviceMemoryCommitment( device, memory, pCommittedMemoryInBytes ); } - void vkCmdSetBlendConstants( VkCommandBuffer commandBuffer, const float blendConstants[4] ) const + VkResult vkBindBufferMemory( VkDevice device, + VkBuffer buffer, + VkDeviceMemory memory, + VkDeviceSize memoryOffset ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetBlendConstants( commandBuffer, blendConstants ); + return ::vkBindBufferMemory( device, buffer, memory, memoryOffset ); } - void vkCmdSetCheckpointNV( VkCommandBuffer commandBuffer, const void* pCheckpointMarker ) const + VkResult vkBindImageMemory( VkDevice device, + VkImage image, + VkDeviceMemory memory, + VkDeviceSize memoryOffset ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetCheckpointNV( commandBuffer, pCheckpointMarker ); + return ::vkBindImageMemory( device, image, memory, memoryOffset ); } - void vkCmdSetCoarseSampleOrderNV( VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders ) const + void vkGetBufferMemoryRequirements( VkDevice device, + VkBuffer buffer, + VkMemoryRequirements * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetCoarseSampleOrderNV( commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders ); + return ::vkGetBufferMemoryRequirements( device, buffer, pMemoryRequirements ); } - void vkCmdSetDepthBias( VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const + void vkGetImageMemoryRequirements( VkDevice device, + VkImage image, + VkMemoryRequirements * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetDepthBias( commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor ); + return ::vkGetImageMemoryRequirements( device, image, pMemoryRequirements ); } - void vkCmdSetDepthBounds( VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds ) const + void vkGetImageSparseMemoryRequirements( VkDevice device, + VkImage image, + uint32_t * pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) const + VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetDepthBounds( commandBuffer, minDepthBounds, maxDepthBounds ); + return ::vkGetImageSparseMemoryRequirements( + device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); } - void vkCmdSetDeviceMask( VkCommandBuffer commandBuffer, uint32_t deviceMask ) const + void vkGetPhysicalDeviceSparseImageFormatProperties( VkPhysicalDevice physicalDevice, + VkFormat format, + VkImageType type, + VkSampleCountFlagBits samples, + VkImageUsageFlags usage, + VkImageTiling tiling, + uint32_t * pPropertyCount, + VkSparseImageFormatProperties * pProperties ) const + VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetDeviceMask( commandBuffer, deviceMask ); + return ::vkGetPhysicalDeviceSparseImageFormatProperties( + physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties ); } - void vkCmdSetDeviceMaskKHR( VkCommandBuffer commandBuffer, uint32_t deviceMask ) const + VkResult vkQueueBindSparse( VkQueue queue, + uint32_t bindInfoCount, + const VkBindSparseInfo * pBindInfo, + VkFence fence ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetDeviceMaskKHR( commandBuffer, deviceMask ); + return ::vkQueueBindSparse( queue, bindInfoCount, pBindInfo, fence ); } - void vkCmdSetDiscardRectangleEXT( VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles ) const + VkResult vkCreateFence( VkDevice device, + const VkFenceCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkFence * pFence ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetDiscardRectangleEXT( commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles ); + return ::vkCreateFence( device, pCreateInfo, pAllocator, pFence ); } - void vkCmdSetEvent( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask ) const + void vkDestroyFence( VkDevice device, + VkFence fence, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetEvent( commandBuffer, event, stageMask ); + return ::vkDestroyFence( device, fence, pAllocator ); } - void vkCmdSetExclusiveScissorNV( VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors ) const + VkResult vkResetFences( VkDevice device, uint32_t fenceCount, const VkFence * pFences ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetExclusiveScissorNV( commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors ); + return ::vkResetFences( device, fenceCount, pFences ); } - void vkCmdSetLineStippleEXT( VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const + VkResult vkGetFenceStatus( VkDevice device, VkFence fence ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetLineStippleEXT( commandBuffer, lineStippleFactor, lineStipplePattern ); + return ::vkGetFenceStatus( device, fence ); } - void vkCmdSetLineWidth( VkCommandBuffer commandBuffer, float lineWidth ) const + VkResult vkWaitForFences( VkDevice device, + uint32_t fenceCount, + const VkFence * pFences, + VkBool32 waitAll, + uint64_t timeout ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetLineWidth( commandBuffer, lineWidth ); + return ::vkWaitForFences( device, fenceCount, pFences, waitAll, timeout ); } - VkResult vkCmdSetPerformanceMarkerINTEL( VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo ) const + VkResult vkCreateSemaphore( VkDevice device, + const VkSemaphoreCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSemaphore * pSemaphore ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetPerformanceMarkerINTEL( commandBuffer, pMarkerInfo ); + return ::vkCreateSemaphore( device, pCreateInfo, pAllocator, pSemaphore ); } - VkResult vkCmdSetPerformanceOverrideINTEL( VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo ) const + void vkDestroySemaphore( VkDevice device, + VkSemaphore semaphore, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetPerformanceOverrideINTEL( commandBuffer, pOverrideInfo ); + return ::vkDestroySemaphore( device, semaphore, pAllocator ); } - VkResult vkCmdSetPerformanceStreamMarkerINTEL( VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo ) const + VkResult vkCreateEvent( VkDevice device, + const VkEventCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkEvent * pEvent ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetPerformanceStreamMarkerINTEL( commandBuffer, pMarkerInfo ); + return ::vkCreateEvent( device, pCreateInfo, pAllocator, pEvent ); } - void vkCmdSetSampleLocationsEXT( VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo ) const + void vkDestroyEvent( VkDevice device, + VkEvent event, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetSampleLocationsEXT( commandBuffer, pSampleLocationsInfo ); + return ::vkDestroyEvent( device, event, pAllocator ); } - void vkCmdSetScissor( VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors ) const + VkResult vkGetEventStatus( VkDevice device, VkEvent event ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetScissor( commandBuffer, firstScissor, scissorCount, pScissors ); + return ::vkGetEventStatus( device, event ); } - void vkCmdSetStencilCompareMask( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask ) const + VkResult vkSetEvent( VkDevice device, VkEvent event ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetStencilCompareMask( commandBuffer, faceMask, compareMask ); + return ::vkSetEvent( device, event ); } - void vkCmdSetStencilReference( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference ) const + VkResult vkResetEvent( VkDevice device, VkEvent event ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetStencilReference( commandBuffer, faceMask, reference ); + return ::vkResetEvent( device, event ); } - void vkCmdSetStencilWriteMask( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask ) const + VkResult vkCreateQueryPool( VkDevice device, + const VkQueryPoolCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkQueryPool * pQueryPool ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetStencilWriteMask( commandBuffer, faceMask, writeMask ); + return ::vkCreateQueryPool( device, pCreateInfo, pAllocator, pQueryPool ); } - void vkCmdSetViewport( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports ) const + void vkDestroyQueryPool( VkDevice device, + VkQueryPool queryPool, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetViewport( commandBuffer, firstViewport, viewportCount, pViewports ); + return ::vkDestroyQueryPool( device, queryPool, pAllocator ); } - void vkCmdSetViewportShadingRatePaletteNV( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes ) const + VkResult vkGetQueryPoolResults( VkDevice device, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + size_t dataSize, + void * pData, + VkDeviceSize stride, + VkQueryResultFlags flags ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetViewportShadingRatePaletteNV( commandBuffer, firstViewport, viewportCount, pShadingRatePalettes ); + return ::vkGetQueryPoolResults( device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags ); } - void vkCmdSetViewportWScalingNV( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings ) const + VkResult vkCreateBuffer( VkDevice device, + const VkBufferCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkBuffer * pBuffer ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdSetViewportWScalingNV( commandBuffer, firstViewport, viewportCount, pViewportWScalings ); + return ::vkCreateBuffer( device, pCreateInfo, pAllocator, pBuffer ); } - void vkCmdTraceRaysNV( VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth ) const + void vkDestroyBuffer( VkDevice device, + VkBuffer buffer, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdTraceRaysNV( commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth ); + return ::vkDestroyBuffer( device, buffer, pAllocator ); } - void vkCmdUpdateBuffer( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData ) const + VkResult vkCreateBufferView( VkDevice device, + const VkBufferViewCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkBufferView * pView ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdUpdateBuffer( commandBuffer, dstBuffer, dstOffset, dataSize, pData ); + return ::vkCreateBufferView( device, pCreateInfo, pAllocator, pView ); } - void vkCmdWaitEvents( VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers ) const + void vkDestroyBufferView( VkDevice device, + VkBufferView bufferView, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdWaitEvents( commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers ); + return ::vkDestroyBufferView( device, bufferView, pAllocator ); } - void vkCmdWriteAccelerationStructuresPropertiesNV( VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery ) const + VkResult vkCreateImage( VkDevice device, + const VkImageCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkImage * pImage ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdWriteAccelerationStructuresPropertiesNV( commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery ); + return ::vkCreateImage( device, pCreateInfo, pAllocator, pImage ); } - void vkCmdWriteBufferMarkerAMD( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker ) const + void vkDestroyImage( VkDevice device, + VkImage image, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdWriteBufferMarkerAMD( commandBuffer, pipelineStage, dstBuffer, dstOffset, marker ); + return ::vkDestroyImage( device, image, pAllocator ); } - void vkCmdWriteTimestamp( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query ) const + void vkGetImageSubresourceLayout( VkDevice device, + VkImage image, + const VkImageSubresource * pSubresource, + VkSubresourceLayout * pLayout ) const VULKAN_HPP_NOEXCEPT { - return ::vkCmdWriteTimestamp( commandBuffer, pipelineStage, queryPool, query ); + return ::vkGetImageSubresourceLayout( device, image, pSubresource, pLayout ); } - VkResult vkEndCommandBuffer( VkCommandBuffer commandBuffer ) const + VkResult vkCreateImageView( VkDevice device, + const VkImageViewCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkImageView * pView ) const VULKAN_HPP_NOEXCEPT { - return ::vkEndCommandBuffer( commandBuffer ); + return ::vkCreateImageView( device, pCreateInfo, pAllocator, pView ); } - VkResult vkResetCommandBuffer( VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags ) const + void vkDestroyImageView( VkDevice device, + VkImageView imageView, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkResetCommandBuffer( commandBuffer, flags ); + return ::vkDestroyImageView( device, imageView, pAllocator ); } -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkAcquireFullScreenExclusiveModeEXT( VkDevice device, VkSwapchainKHR swapchain ) const + VkResult vkCreateShaderModule( VkDevice device, + const VkShaderModuleCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkShaderModule * pShaderModule ) const VULKAN_HPP_NOEXCEPT { - return ::vkAcquireFullScreenExclusiveModeEXT( device, swapchain ); + return ::vkCreateShaderModule( device, pCreateInfo, pAllocator, pShaderModule ); } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - VkResult vkAcquireNextImage2KHR( VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex ) const + void vkDestroyShaderModule( VkDevice device, + VkShaderModule shaderModule, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkAcquireNextImage2KHR( device, pAcquireInfo, pImageIndex ); + return ::vkDestroyShaderModule( device, shaderModule, pAllocator ); } - VkResult vkAcquireNextImageKHR( VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex ) const + VkResult vkCreatePipelineCache( VkDevice device, + const VkPipelineCacheCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkPipelineCache * pPipelineCache ) const VULKAN_HPP_NOEXCEPT { - return ::vkAcquireNextImageKHR( device, swapchain, timeout, semaphore, fence, pImageIndex ); + return ::vkCreatePipelineCache( device, pCreateInfo, pAllocator, pPipelineCache ); } - VkResult vkAcquirePerformanceConfigurationINTEL( VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration ) const + void vkDestroyPipelineCache( VkDevice device, + VkPipelineCache pipelineCache, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkAcquirePerformanceConfigurationINTEL( device, pAcquireInfo, pConfiguration ); + return ::vkDestroyPipelineCache( device, pipelineCache, pAllocator ); } - VkResult vkAllocateCommandBuffers( VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers ) const + VkResult vkGetPipelineCacheData( VkDevice device, + VkPipelineCache pipelineCache, + size_t * pDataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT { - return ::vkAllocateCommandBuffers( device, pAllocateInfo, pCommandBuffers ); + return ::vkGetPipelineCacheData( device, pipelineCache, pDataSize, pData ); } - VkResult vkAllocateDescriptorSets( VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets ) const + VkResult vkMergePipelineCaches( VkDevice device, + VkPipelineCache dstCache, + uint32_t srcCacheCount, + const VkPipelineCache * pSrcCaches ) const VULKAN_HPP_NOEXCEPT { - return ::vkAllocateDescriptorSets( device, pAllocateInfo, pDescriptorSets ); + return ::vkMergePipelineCaches( device, dstCache, srcCacheCount, pSrcCaches ); } - VkResult vkAllocateMemory( VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory ) const + VkResult vkCreateGraphicsPipelines( VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkGraphicsPipelineCreateInfo * pCreateInfos, + const VkAllocationCallbacks * pAllocator, + VkPipeline * pPipelines ) const VULKAN_HPP_NOEXCEPT { - return ::vkAllocateMemory( device, pAllocateInfo, pAllocator, pMemory ); + return ::vkCreateGraphicsPipelines( + device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); } - VkResult vkBindAccelerationStructureMemoryNV( VkDevice device, uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos ) const + VkResult vkCreateComputePipelines( VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkComputePipelineCreateInfo * pCreateInfos, + const VkAllocationCallbacks * pAllocator, + VkPipeline * pPipelines ) const VULKAN_HPP_NOEXCEPT { - return ::vkBindAccelerationStructureMemoryNV( device, bindInfoCount, pBindInfos ); + return ::vkCreateComputePipelines( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); } - VkResult vkBindBufferMemory( VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset ) const + void vkDestroyPipeline( VkDevice device, + VkPipeline pipeline, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkBindBufferMemory( device, buffer, memory, memoryOffset ); + return ::vkDestroyPipeline( device, pipeline, pAllocator ); } - VkResult vkBindBufferMemory2( VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos ) const + VkResult vkCreatePipelineLayout( VkDevice device, + const VkPipelineLayoutCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkPipelineLayout * pPipelineLayout ) const VULKAN_HPP_NOEXCEPT { - return ::vkBindBufferMemory2( device, bindInfoCount, pBindInfos ); + return ::vkCreatePipelineLayout( device, pCreateInfo, pAllocator, pPipelineLayout ); } - VkResult vkBindBufferMemory2KHR( VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos ) const + void vkDestroyPipelineLayout( VkDevice device, + VkPipelineLayout pipelineLayout, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkBindBufferMemory2KHR( device, bindInfoCount, pBindInfos ); + return ::vkDestroyPipelineLayout( device, pipelineLayout, pAllocator ); } - VkResult vkBindImageMemory( VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset ) const + VkResult vkCreateSampler( VkDevice device, + const VkSamplerCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSampler * pSampler ) const VULKAN_HPP_NOEXCEPT { - return ::vkBindImageMemory( device, image, memory, memoryOffset ); + return ::vkCreateSampler( device, pCreateInfo, pAllocator, pSampler ); } - VkResult vkBindImageMemory2( VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos ) const + void vkDestroySampler( VkDevice device, + VkSampler sampler, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkBindImageMemory2( device, bindInfoCount, pBindInfos ); + return ::vkDestroySampler( device, sampler, pAllocator ); } - VkResult vkBindImageMemory2KHR( VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos ) const + VkResult vkCreateDescriptorSetLayout( VkDevice device, + const VkDescriptorSetLayoutCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkDescriptorSetLayout * pSetLayout ) const VULKAN_HPP_NOEXCEPT { - return ::vkBindImageMemory2KHR( device, bindInfoCount, pBindInfos ); + return ::vkCreateDescriptorSetLayout( device, pCreateInfo, pAllocator, pSetLayout ); } - VkResult vkCompileDeferredNV( VkDevice device, VkPipeline pipeline, uint32_t shader ) const + void vkDestroyDescriptorSetLayout( VkDevice device, + VkDescriptorSetLayout descriptorSetLayout, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkCompileDeferredNV( device, pipeline, shader ); + return ::vkDestroyDescriptorSetLayout( device, descriptorSetLayout, pAllocator ); } - VkResult vkCreateAccelerationStructureNV( VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure ) const + VkResult vkCreateDescriptorPool( VkDevice device, + const VkDescriptorPoolCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkDescriptorPool * pDescriptorPool ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateAccelerationStructureNV( device, pCreateInfo, pAllocator, pAccelerationStructure ); + return ::vkCreateDescriptorPool( device, pCreateInfo, pAllocator, pDescriptorPool ); } - VkResult vkCreateBuffer( VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer ) const + void vkDestroyDescriptorPool( VkDevice device, + VkDescriptorPool descriptorPool, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateBuffer( device, pCreateInfo, pAllocator, pBuffer ); + return ::vkDestroyDescriptorPool( device, descriptorPool, pAllocator ); } - VkResult vkCreateBufferView( VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView ) const + VkResult vkResetDescriptorPool( VkDevice device, + VkDescriptorPool descriptorPool, + VkDescriptorPoolResetFlags flags ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateBufferView( device, pCreateInfo, pAllocator, pView ); + return ::vkResetDescriptorPool( device, descriptorPool, flags ); } - VkResult vkCreateCommandPool( VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool ) const + VkResult vkAllocateDescriptorSets( VkDevice device, + const VkDescriptorSetAllocateInfo * pAllocateInfo, + VkDescriptorSet * pDescriptorSets ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateCommandPool( device, pCreateInfo, pAllocator, pCommandPool ); + return ::vkAllocateDescriptorSets( device, pAllocateInfo, pDescriptorSets ); } - VkResult vkCreateComputePipelines( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines ) const + VkResult vkFreeDescriptorSets( VkDevice device, + VkDescriptorPool descriptorPool, + uint32_t descriptorSetCount, + const VkDescriptorSet * pDescriptorSets ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateComputePipelines( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); + return ::vkFreeDescriptorSets( device, descriptorPool, descriptorSetCount, pDescriptorSets ); } - VkResult vkCreateDescriptorPool( VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool ) const + void vkUpdateDescriptorSets( VkDevice device, + uint32_t descriptorWriteCount, + const VkWriteDescriptorSet * pDescriptorWrites, + uint32_t descriptorCopyCount, + const VkCopyDescriptorSet * pDescriptorCopies ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateDescriptorPool( device, pCreateInfo, pAllocator, pDescriptorPool ); + return ::vkUpdateDescriptorSets( + device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies ); } - VkResult vkCreateDescriptorSetLayout( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout ) const + VkResult vkCreateFramebuffer( VkDevice device, + const VkFramebufferCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkFramebuffer * pFramebuffer ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateDescriptorSetLayout( device, pCreateInfo, pAllocator, pSetLayout ); + return ::vkCreateFramebuffer( device, pCreateInfo, pAllocator, pFramebuffer ); } - VkResult vkCreateDescriptorUpdateTemplate( VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate ) const + void vkDestroyFramebuffer( VkDevice device, + VkFramebuffer framebuffer, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateDescriptorUpdateTemplate( device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate ); + return ::vkDestroyFramebuffer( device, framebuffer, pAllocator ); } - VkResult vkCreateDescriptorUpdateTemplateKHR( VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate ) const + VkResult vkCreateRenderPass( VkDevice device, + const VkRenderPassCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkRenderPass * pRenderPass ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateDescriptorUpdateTemplateKHR( device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate ); + return ::vkCreateRenderPass( device, pCreateInfo, pAllocator, pRenderPass ); } - VkResult vkCreateEvent( VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent ) const + void vkDestroyRenderPass( VkDevice device, + VkRenderPass renderPass, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateEvent( device, pCreateInfo, pAllocator, pEvent ); + return ::vkDestroyRenderPass( device, renderPass, pAllocator ); } - VkResult vkCreateFence( VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence ) const + void vkGetRenderAreaGranularity( VkDevice device, + VkRenderPass renderPass, + VkExtent2D * pGranularity ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateFence( device, pCreateInfo, pAllocator, pFence ); + return ::vkGetRenderAreaGranularity( device, renderPass, pGranularity ); } - VkResult vkCreateFramebuffer( VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer ) const + VkResult vkCreateCommandPool( VkDevice device, + const VkCommandPoolCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkCommandPool * pCommandPool ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateFramebuffer( device, pCreateInfo, pAllocator, pFramebuffer ); + return ::vkCreateCommandPool( device, pCreateInfo, pAllocator, pCommandPool ); } - VkResult vkCreateGraphicsPipelines( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines ) const + void vkDestroyCommandPool( VkDevice device, + VkCommandPool commandPool, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateGraphicsPipelines( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); + return ::vkDestroyCommandPool( device, commandPool, pAllocator ); } - VkResult vkCreateImage( VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage ) const + VkResult vkResetCommandPool( VkDevice device, + VkCommandPool commandPool, + VkCommandPoolResetFlags flags ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateImage( device, pCreateInfo, pAllocator, pImage ); + return ::vkResetCommandPool( device, commandPool, flags ); } - VkResult vkCreateImageView( VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView ) const + VkResult vkAllocateCommandBuffers( VkDevice device, + const VkCommandBufferAllocateInfo * pAllocateInfo, + VkCommandBuffer * pCommandBuffers ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateImageView( device, pCreateInfo, pAllocator, pView ); + return ::vkAllocateCommandBuffers( device, pAllocateInfo, pCommandBuffers ); } - VkResult vkCreateIndirectCommandsLayoutNVX( VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const + void vkFreeCommandBuffers( VkDevice device, + VkCommandPool commandPool, + uint32_t commandBufferCount, + const VkCommandBuffer * pCommandBuffers ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateIndirectCommandsLayoutNVX( device, pCreateInfo, pAllocator, pIndirectCommandsLayout ); + return ::vkFreeCommandBuffers( device, commandPool, commandBufferCount, pCommandBuffers ); } - VkResult vkCreateObjectTableNVX( VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable ) const + VkResult vkBeginCommandBuffer( VkCommandBuffer commandBuffer, + const VkCommandBufferBeginInfo * pBeginInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateObjectTableNVX( device, pCreateInfo, pAllocator, pObjectTable ); + return ::vkBeginCommandBuffer( commandBuffer, pBeginInfo ); } - VkResult vkCreatePipelineCache( VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache ) const + VkResult vkEndCommandBuffer( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreatePipelineCache( device, pCreateInfo, pAllocator, pPipelineCache ); + return ::vkEndCommandBuffer( commandBuffer ); } - VkResult vkCreatePipelineLayout( VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout ) const + VkResult vkResetCommandBuffer( VkCommandBuffer commandBuffer, + VkCommandBufferResetFlags flags ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreatePipelineLayout( device, pCreateInfo, pAllocator, pPipelineLayout ); + return ::vkResetCommandBuffer( commandBuffer, flags ); } - VkResult vkCreateQueryPool( VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool ) const + void vkCmdBindPipeline( VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipeline pipeline ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateQueryPool( device, pCreateInfo, pAllocator, pQueryPool ); + return ::vkCmdBindPipeline( commandBuffer, pipelineBindPoint, pipeline ); } - VkResult vkCreateRayTracingPipelinesNV( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines ) const + void vkCmdSetViewport( VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + const VkViewport * pViewports ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateRayTracingPipelinesNV( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); + return ::vkCmdSetViewport( commandBuffer, firstViewport, viewportCount, pViewports ); } - VkResult vkCreateRenderPass( VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass ) const + void vkCmdSetScissor( VkCommandBuffer commandBuffer, + uint32_t firstScissor, + uint32_t scissorCount, + const VkRect2D * pScissors ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateRenderPass( device, pCreateInfo, pAllocator, pRenderPass ); + return ::vkCmdSetScissor( commandBuffer, firstScissor, scissorCount, pScissors ); } - VkResult vkCreateRenderPass2KHR( VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass ) const + void vkCmdSetLineWidth( VkCommandBuffer commandBuffer, float lineWidth ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateRenderPass2KHR( device, pCreateInfo, pAllocator, pRenderPass ); + return ::vkCmdSetLineWidth( commandBuffer, lineWidth ); } - VkResult vkCreateSampler( VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler ) const + void vkCmdSetDepthBias( VkCommandBuffer commandBuffer, + float depthBiasConstantFactor, + float depthBiasClamp, + float depthBiasSlopeFactor ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateSampler( device, pCreateInfo, pAllocator, pSampler ); + return ::vkCmdSetDepthBias( commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor ); } - VkResult vkCreateSamplerYcbcrConversion( VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion ) const + void vkCmdSetBlendConstants( VkCommandBuffer commandBuffer, + const float blendConstants[4] ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateSamplerYcbcrConversion( device, pCreateInfo, pAllocator, pYcbcrConversion ); + return ::vkCmdSetBlendConstants( commandBuffer, blendConstants ); } - VkResult vkCreateSamplerYcbcrConversionKHR( VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion ) const + void vkCmdSetDepthBounds( VkCommandBuffer commandBuffer, + float minDepthBounds, + float maxDepthBounds ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateSamplerYcbcrConversionKHR( device, pCreateInfo, pAllocator, pYcbcrConversion ); + return ::vkCmdSetDepthBounds( commandBuffer, minDepthBounds, maxDepthBounds ); } - VkResult vkCreateSemaphore( VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore ) const + void vkCmdSetStencilCompareMask( VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + uint32_t compareMask ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateSemaphore( device, pCreateInfo, pAllocator, pSemaphore ); + return ::vkCmdSetStencilCompareMask( commandBuffer, faceMask, compareMask ); } - VkResult vkCreateShaderModule( VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule ) const + void vkCmdSetStencilWriteMask( VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + uint32_t writeMask ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateShaderModule( device, pCreateInfo, pAllocator, pShaderModule ); + return ::vkCmdSetStencilWriteMask( commandBuffer, faceMask, writeMask ); } - VkResult vkCreateSharedSwapchainsKHR( VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains ) const + void vkCmdSetStencilReference( VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + uint32_t reference ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateSharedSwapchainsKHR( device, swapchainCount, pCreateInfos, pAllocator, pSwapchains ); + return ::vkCmdSetStencilReference( commandBuffer, faceMask, reference ); } - VkResult vkCreateSwapchainKHR( VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain ) const + void vkCmdBindDescriptorSets( VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t firstSet, + uint32_t descriptorSetCount, + const VkDescriptorSet * pDescriptorSets, + uint32_t dynamicOffsetCount, + const uint32_t * pDynamicOffsets ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateSwapchainKHR( device, pCreateInfo, pAllocator, pSwapchain ); + return ::vkCmdBindDescriptorSets( commandBuffer, + pipelineBindPoint, + layout, + firstSet, + descriptorSetCount, + pDescriptorSets, + dynamicOffsetCount, + pDynamicOffsets ); } - VkResult vkCreateValidationCacheEXT( VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache ) const + void vkCmdBindIndexBuffer( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkIndexType indexType ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateValidationCacheEXT( device, pCreateInfo, pAllocator, pValidationCache ); + return ::vkCmdBindIndexBuffer( commandBuffer, buffer, offset, indexType ); } - VkResult vkDebugMarkerSetObjectNameEXT( VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo ) const + void vkCmdBindVertexBuffers( VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer * pBuffers, + const VkDeviceSize * pOffsets ) const VULKAN_HPP_NOEXCEPT { - return ::vkDebugMarkerSetObjectNameEXT( device, pNameInfo ); + return ::vkCmdBindVertexBuffers( commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets ); } - VkResult vkDebugMarkerSetObjectTagEXT( VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo ) const + void vkCmdDraw( VkCommandBuffer commandBuffer, + uint32_t vertexCount, + uint32_t instanceCount, + uint32_t firstVertex, + uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT { - return ::vkDebugMarkerSetObjectTagEXT( device, pTagInfo ); + return ::vkCmdDraw( commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance ); } - void vkDestroyAccelerationStructureNV( VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator ) const + void vkCmdDrawIndexed( VkCommandBuffer commandBuffer, + uint32_t indexCount, + uint32_t instanceCount, + uint32_t firstIndex, + int32_t vertexOffset, + uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyAccelerationStructureNV( device, accelerationStructure, pAllocator ); + return ::vkCmdDrawIndexed( commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance ); } - void vkDestroyBuffer( VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator ) const + void vkCmdDrawIndirect( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + uint32_t drawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyBuffer( device, buffer, pAllocator ); + return ::vkCmdDrawIndirect( commandBuffer, buffer, offset, drawCount, stride ); } - void vkDestroyBufferView( VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator ) const + void vkCmdDrawIndexedIndirect( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + uint32_t drawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyBufferView( device, bufferView, pAllocator ); + return ::vkCmdDrawIndexedIndirect( commandBuffer, buffer, offset, drawCount, stride ); } - void vkDestroyCommandPool( VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator ) const + void vkCmdDispatch( VkCommandBuffer commandBuffer, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyCommandPool( device, commandPool, pAllocator ); + return ::vkCmdDispatch( commandBuffer, groupCountX, groupCountY, groupCountZ ); } - void vkDestroyDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator ) const + void vkCmdDispatchIndirect( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyDescriptorPool( device, descriptorPool, pAllocator ); + return ::vkCmdDispatchIndirect( commandBuffer, buffer, offset ); } - void vkDestroyDescriptorSetLayout( VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator ) const + void vkCmdCopyBuffer( VkCommandBuffer commandBuffer, + VkBuffer srcBuffer, + VkBuffer dstBuffer, + uint32_t regionCount, + const VkBufferCopy * pRegions ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyDescriptorSetLayout( device, descriptorSetLayout, pAllocator ); + return ::vkCmdCopyBuffer( commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions ); } - void vkDestroyDescriptorUpdateTemplate( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator ) const + void vkCmdCopyImage( VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + const VkImageCopy * pRegions ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyDescriptorUpdateTemplate( device, descriptorUpdateTemplate, pAllocator ); + return ::vkCmdCopyImage( + commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); } - void vkDestroyDescriptorUpdateTemplateKHR( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator ) const + void vkCmdBlitImage( VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + const VkImageBlit * pRegions, + VkFilter filter ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyDescriptorUpdateTemplateKHR( device, descriptorUpdateTemplate, pAllocator ); + return ::vkCmdBlitImage( + commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter ); } - void vkDestroyDevice( VkDevice device, const VkAllocationCallbacks* pAllocator ) const + void vkCmdCopyBufferToImage( VkCommandBuffer commandBuffer, + VkBuffer srcBuffer, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + const VkBufferImageCopy * pRegions ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyDevice( device, pAllocator ); + return ::vkCmdCopyBufferToImage( commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions ); } - void vkDestroyEvent( VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator ) const + void vkCmdCopyImageToBuffer( VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkBuffer dstBuffer, + uint32_t regionCount, + const VkBufferImageCopy * pRegions ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyEvent( device, event, pAllocator ); + return ::vkCmdCopyImageToBuffer( commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions ); } - void vkDestroyFence( VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator ) const + void vkCmdUpdateBuffer( VkCommandBuffer commandBuffer, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + VkDeviceSize dataSize, + const void * pData ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyFence( device, fence, pAllocator ); + return ::vkCmdUpdateBuffer( commandBuffer, dstBuffer, dstOffset, dataSize, pData ); } - void vkDestroyFramebuffer( VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator ) const + void vkCmdFillBuffer( VkCommandBuffer commandBuffer, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + VkDeviceSize size, + uint32_t data ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyFramebuffer( device, framebuffer, pAllocator ); + return ::vkCmdFillBuffer( commandBuffer, dstBuffer, dstOffset, size, data ); } - void vkDestroyImage( VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator ) const + void vkCmdClearColorImage( VkCommandBuffer commandBuffer, + VkImage image, + VkImageLayout imageLayout, + const VkClearColorValue * pColor, + uint32_t rangeCount, + const VkImageSubresourceRange * pRanges ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyImage( device, image, pAllocator ); + return ::vkCmdClearColorImage( commandBuffer, image, imageLayout, pColor, rangeCount, pRanges ); } - void vkDestroyImageView( VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator ) const + void vkCmdClearDepthStencilImage( VkCommandBuffer commandBuffer, + VkImage image, + VkImageLayout imageLayout, + const VkClearDepthStencilValue * pDepthStencil, + uint32_t rangeCount, + const VkImageSubresourceRange * pRanges ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyImageView( device, imageView, pAllocator ); + return ::vkCmdClearDepthStencilImage( commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges ); } - void vkDestroyIndirectCommandsLayoutNVX( VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator ) const + void vkCmdClearAttachments( VkCommandBuffer commandBuffer, + uint32_t attachmentCount, + const VkClearAttachment * pAttachments, + uint32_t rectCount, + const VkClearRect * pRects ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyIndirectCommandsLayoutNVX( device, indirectCommandsLayout, pAllocator ); + return ::vkCmdClearAttachments( commandBuffer, attachmentCount, pAttachments, rectCount, pRects ); } - void vkDestroyObjectTableNVX( VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator ) const + void vkCmdResolveImage( VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + const VkImageResolve * pRegions ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyObjectTableNVX( device, objectTable, pAllocator ); + return ::vkCmdResolveImage( + commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); } - void vkDestroyPipeline( VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator ) const + void vkCmdSetEvent( VkCommandBuffer commandBuffer, + VkEvent event, + VkPipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyPipeline( device, pipeline, pAllocator ); + return ::vkCmdSetEvent( commandBuffer, event, stageMask ); } - void vkDestroyPipelineCache( VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator ) const + void vkCmdResetEvent( VkCommandBuffer commandBuffer, + VkEvent event, + VkPipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyPipelineCache( device, pipelineCache, pAllocator ); + return ::vkCmdResetEvent( commandBuffer, event, stageMask ); } - void vkDestroyPipelineLayout( VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator ) const + void vkCmdWaitEvents( VkCommandBuffer commandBuffer, + uint32_t eventCount, + const VkEvent * pEvents, + VkPipelineStageFlags srcStageMask, + VkPipelineStageFlags dstStageMask, + uint32_t memoryBarrierCount, + const VkMemoryBarrier * pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VkBufferMemoryBarrier * pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VkImageMemoryBarrier * pImageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWaitEvents( commandBuffer, + eventCount, + pEvents, + srcStageMask, + dstStageMask, + memoryBarrierCount, + pMemoryBarriers, + bufferMemoryBarrierCount, + pBufferMemoryBarriers, + imageMemoryBarrierCount, + pImageMemoryBarriers ); + } + + void vkCmdPipelineBarrier( VkCommandBuffer commandBuffer, + VkPipelineStageFlags srcStageMask, + VkPipelineStageFlags dstStageMask, + VkDependencyFlags dependencyFlags, + uint32_t memoryBarrierCount, + const VkMemoryBarrier * pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VkBufferMemoryBarrier * pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VkImageMemoryBarrier * pImageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPipelineBarrier( commandBuffer, + srcStageMask, + dstStageMask, + dependencyFlags, + memoryBarrierCount, + pMemoryBarriers, + bufferMemoryBarrierCount, + pBufferMemoryBarriers, + imageMemoryBarrierCount, + pImageMemoryBarriers ); + } + + void vkCmdBeginQuery( VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query, + VkQueryControlFlags flags ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyPipelineLayout( device, pipelineLayout, pAllocator ); + return ::vkCmdBeginQuery( commandBuffer, queryPool, query, flags ); } - void vkDestroyQueryPool( VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator ) const + void vkCmdEndQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyQueryPool( device, queryPool, pAllocator ); + return ::vkCmdEndQuery( commandBuffer, queryPool, query ); } - void vkDestroyRenderPass( VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator ) const + void vkCmdResetQueryPool( VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyRenderPass( device, renderPass, pAllocator ); + return ::vkCmdResetQueryPool( commandBuffer, queryPool, firstQuery, queryCount ); } - void vkDestroySampler( VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator ) const + void vkCmdWriteTimestamp( VkCommandBuffer commandBuffer, + VkPipelineStageFlagBits pipelineStage, + VkQueryPool queryPool, + uint32_t query ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroySampler( device, sampler, pAllocator ); + return ::vkCmdWriteTimestamp( commandBuffer, pipelineStage, queryPool, query ); } - void vkDestroySamplerYcbcrConversion( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator ) const + void vkCmdCopyQueryPoolResults( VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + VkDeviceSize stride, + VkQueryResultFlags flags ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroySamplerYcbcrConversion( device, ycbcrConversion, pAllocator ); + return ::vkCmdCopyQueryPoolResults( + commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags ); } - void vkDestroySamplerYcbcrConversionKHR( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator ) const + void vkCmdPushConstants( VkCommandBuffer commandBuffer, + VkPipelineLayout layout, + VkShaderStageFlags stageFlags, + uint32_t offset, + uint32_t size, + const void * pValues ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroySamplerYcbcrConversionKHR( device, ycbcrConversion, pAllocator ); + return ::vkCmdPushConstants( commandBuffer, layout, stageFlags, offset, size, pValues ); } - void vkDestroySemaphore( VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator ) const + void vkCmdBeginRenderPass( VkCommandBuffer commandBuffer, + const VkRenderPassBeginInfo * pRenderPassBegin, + VkSubpassContents contents ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroySemaphore( device, semaphore, pAllocator ); + return ::vkCmdBeginRenderPass( commandBuffer, pRenderPassBegin, contents ); } - void vkDestroyShaderModule( VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator ) const + void vkCmdNextSubpass( VkCommandBuffer commandBuffer, VkSubpassContents contents ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyShaderModule( device, shaderModule, pAllocator ); + return ::vkCmdNextSubpass( commandBuffer, contents ); } - void vkDestroySwapchainKHR( VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator ) const + void vkCmdEndRenderPass( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroySwapchainKHR( device, swapchain, pAllocator ); + return ::vkCmdEndRenderPass( commandBuffer ); } - void vkDestroyValidationCacheEXT( VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator ) const + void vkCmdExecuteCommands( VkCommandBuffer commandBuffer, + uint32_t commandBufferCount, + const VkCommandBuffer * pCommandBuffers ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyValidationCacheEXT( device, validationCache, pAllocator ); + return ::vkCmdExecuteCommands( commandBuffer, commandBufferCount, pCommandBuffers ); } - VkResult vkDeviceWaitIdle( VkDevice device ) const + //=== VK_VERSION_1_1 === + + VkResult vkEnumerateInstanceVersion( uint32_t * pApiVersion ) const VULKAN_HPP_NOEXCEPT { - return ::vkDeviceWaitIdle( device ); + return ::vkEnumerateInstanceVersion( pApiVersion ); } - VkResult vkDisplayPowerControlEXT( VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo ) const + VkResult vkBindBufferMemory2( VkDevice device, + uint32_t bindInfoCount, + const VkBindBufferMemoryInfo * pBindInfos ) const VULKAN_HPP_NOEXCEPT { - return ::vkDisplayPowerControlEXT( device, display, pDisplayPowerInfo ); + return ::vkBindBufferMemory2( device, bindInfoCount, pBindInfos ); } - VkResult vkFlushMappedMemoryRanges( VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges ) const + VkResult vkBindImageMemory2( VkDevice device, + uint32_t bindInfoCount, + const VkBindImageMemoryInfo * pBindInfos ) const VULKAN_HPP_NOEXCEPT { - return ::vkFlushMappedMemoryRanges( device, memoryRangeCount, pMemoryRanges ); + return ::vkBindImageMemory2( device, bindInfoCount, pBindInfos ); } - void vkFreeCommandBuffers( VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers ) const + void vkGetDeviceGroupPeerMemoryFeatures( VkDevice device, + uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) const VULKAN_HPP_NOEXCEPT { - return ::vkFreeCommandBuffers( device, commandPool, commandBufferCount, pCommandBuffers ); + return ::vkGetDeviceGroupPeerMemoryFeatures( + device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures ); } - VkResult vkFreeDescriptorSets( VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets ) const + void vkCmdSetDeviceMask( VkCommandBuffer commandBuffer, uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT { - return ::vkFreeDescriptorSets( device, descriptorPool, descriptorSetCount, pDescriptorSets ); + return ::vkCmdSetDeviceMask( commandBuffer, deviceMask ); } - void vkFreeMemory( VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator ) const + void vkCmdDispatchBase( VkCommandBuffer commandBuffer, + uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT { - return ::vkFreeMemory( device, memory, pAllocator ); + return ::vkCmdDispatchBase( + commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); } - VkResult vkGetAccelerationStructureHandleNV( VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData ) const + VkResult vkEnumeratePhysicalDeviceGroups( VkInstance instance, + uint32_t * pPhysicalDeviceGroupCount, + VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) const + VULKAN_HPP_NOEXCEPT { - return ::vkGetAccelerationStructureHandleNV( device, accelerationStructure, dataSize, pData ); + return ::vkEnumeratePhysicalDeviceGroups( instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties ); } - void vkGetAccelerationStructureMemoryRequirementsNV( VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements ) const + void vkGetImageMemoryRequirements2( VkDevice device, + const VkImageMemoryRequirementsInfo2 * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetAccelerationStructureMemoryRequirementsNV( device, pInfo, pMemoryRequirements ); + return ::vkGetImageMemoryRequirements2( device, pInfo, pMemoryRequirements ); } -#ifdef VK_USE_PLATFORM_ANDROID_KHR - VkResult vkGetAndroidHardwareBufferPropertiesANDROID( VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties ) const + void vkGetBufferMemoryRequirements2( VkDevice device, + const VkBufferMemoryRequirementsInfo2 * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetAndroidHardwareBufferPropertiesANDROID( device, buffer, pProperties ); + return ::vkGetBufferMemoryRequirements2( device, pInfo, pMemoryRequirements ); } -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - VkDeviceAddress vkGetBufferDeviceAddressEXT( VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo ) const + void vkGetImageSparseMemoryRequirements2( VkDevice device, + const VkImageSparseMemoryRequirementsInfo2 * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) const + VULKAN_HPP_NOEXCEPT { - return ::vkGetBufferDeviceAddressEXT( device, pInfo ); + return ::vkGetImageSparseMemoryRequirements2( + device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); } - void vkGetBufferMemoryRequirements( VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements ) const + void vkGetPhysicalDeviceFeatures2( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceFeatures2 * pFeatures ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetBufferMemoryRequirements( device, buffer, pMemoryRequirements ); + return ::vkGetPhysicalDeviceFeatures2( physicalDevice, pFeatures ); } - void vkGetBufferMemoryRequirements2( VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements ) const + void vkGetPhysicalDeviceProperties2( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceProperties2 * pProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetBufferMemoryRequirements2( device, pInfo, pMemoryRequirements ); + return ::vkGetPhysicalDeviceProperties2( physicalDevice, pProperties ); } - void vkGetBufferMemoryRequirements2KHR( VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements ) const + void vkGetPhysicalDeviceFormatProperties2( VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties2 * pFormatProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetBufferMemoryRequirements2KHR( device, pInfo, pMemoryRequirements ); + return ::vkGetPhysicalDeviceFormatProperties2( physicalDevice, format, pFormatProperties ); } - VkResult vkGetCalibratedTimestampsEXT( VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation ) const + VkResult vkGetPhysicalDeviceImageFormatProperties2( VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo, + VkImageFormatProperties2 * pImageFormatProperties ) const + VULKAN_HPP_NOEXCEPT { - return ::vkGetCalibratedTimestampsEXT( device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation ); + return ::vkGetPhysicalDeviceImageFormatProperties2( physicalDevice, pImageFormatInfo, pImageFormatProperties ); } - void vkGetDescriptorSetLayoutSupport( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport ) const + void vkGetPhysicalDeviceQueueFamilyProperties2( VkPhysicalDevice physicalDevice, + uint32_t * pQueueFamilyPropertyCount, + VkQueueFamilyProperties2 * pQueueFamilyProperties ) const + VULKAN_HPP_NOEXCEPT { - return ::vkGetDescriptorSetLayoutSupport( device, pCreateInfo, pSupport ); + return ::vkGetPhysicalDeviceQueueFamilyProperties2( + physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties ); } - void vkGetDescriptorSetLayoutSupportKHR( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport ) const + void vkGetPhysicalDeviceMemoryProperties2( + VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetDescriptorSetLayoutSupportKHR( device, pCreateInfo, pSupport ); + return ::vkGetPhysicalDeviceMemoryProperties2( physicalDevice, pMemoryProperties ); } - void vkGetDeviceGroupPeerMemoryFeatures( VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures ) const + void vkGetPhysicalDeviceSparseImageFormatProperties2( VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo, + uint32_t * pPropertyCount, + VkSparseImageFormatProperties2 * pProperties ) const + VULKAN_HPP_NOEXCEPT { - return ::vkGetDeviceGroupPeerMemoryFeatures( device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures ); + return ::vkGetPhysicalDeviceSparseImageFormatProperties2( + physicalDevice, pFormatInfo, pPropertyCount, pProperties ); } - void vkGetDeviceGroupPeerMemoryFeaturesKHR( VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures ) const + void vkTrimCommandPool( VkDevice device, + VkCommandPool commandPool, + VkCommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetDeviceGroupPeerMemoryFeaturesKHR( device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures ); + return ::vkTrimCommandPool( device, commandPool, flags ); } - VkResult vkGetDeviceGroupPresentCapabilitiesKHR( VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities ) const + void vkGetDeviceQueue2( VkDevice device, + const VkDeviceQueueInfo2 * pQueueInfo, + VkQueue * pQueue ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetDeviceGroupPresentCapabilitiesKHR( device, pDeviceGroupPresentCapabilities ); + return ::vkGetDeviceQueue2( device, pQueueInfo, pQueue ); } -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkGetDeviceGroupSurfacePresentModes2EXT( VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes ) const + VkResult vkCreateSamplerYcbcrConversion( VkDevice device, + const VkSamplerYcbcrConversionCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSamplerYcbcrConversion * pYcbcrConversion ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetDeviceGroupSurfacePresentModes2EXT( device, pSurfaceInfo, pModes ); + return ::vkCreateSamplerYcbcrConversion( device, pCreateInfo, pAllocator, pYcbcrConversion ); } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - VkResult vkGetDeviceGroupSurfacePresentModesKHR( VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes ) const + void vkDestroySamplerYcbcrConversion( VkDevice device, + VkSamplerYcbcrConversion ycbcrConversion, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetDeviceGroupSurfacePresentModesKHR( device, surface, pModes ); + return ::vkDestroySamplerYcbcrConversion( device, ycbcrConversion, pAllocator ); } - void vkGetDeviceMemoryCommitment( VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes ) const + VkResult vkCreateDescriptorUpdateTemplate( VkDevice device, + const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) const + VULKAN_HPP_NOEXCEPT { - return ::vkGetDeviceMemoryCommitment( device, memory, pCommittedMemoryInBytes ); + return ::vkCreateDescriptorUpdateTemplate( device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate ); } - PFN_vkVoidFunction vkGetDeviceProcAddr( VkDevice device, const char* pName ) const + void vkDestroyDescriptorUpdateTemplate( VkDevice device, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetDeviceProcAddr( device, pName ); + return ::vkDestroyDescriptorUpdateTemplate( device, descriptorUpdateTemplate, pAllocator ); } - void vkGetDeviceQueue( VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue ) const + void vkUpdateDescriptorSetWithTemplate( VkDevice device, + VkDescriptorSet descriptorSet, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + const void * pData ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetDeviceQueue( device, queueFamilyIndex, queueIndex, pQueue ); + return ::vkUpdateDescriptorSetWithTemplate( device, descriptorSet, descriptorUpdateTemplate, pData ); } - void vkGetDeviceQueue2( VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue ) const + void vkGetPhysicalDeviceExternalBufferProperties( VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo, + VkExternalBufferProperties * pExternalBufferProperties ) const + VULKAN_HPP_NOEXCEPT { - return ::vkGetDeviceQueue2( device, pQueueInfo, pQueue ); + return ::vkGetPhysicalDeviceExternalBufferProperties( + physicalDevice, pExternalBufferInfo, pExternalBufferProperties ); } - VkResult vkGetEventStatus( VkDevice device, VkEvent event ) const + void vkGetPhysicalDeviceExternalFenceProperties( VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo, + VkExternalFenceProperties * pExternalFenceProperties ) const + VULKAN_HPP_NOEXCEPT { - return ::vkGetEventStatus( device, event ); + return ::vkGetPhysicalDeviceExternalFenceProperties( + physicalDevice, pExternalFenceInfo, pExternalFenceProperties ); } - VkResult vkGetFenceFdKHR( VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const + void vkGetPhysicalDeviceExternalSemaphoreProperties( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo, + VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetFenceFdKHR( device, pGetFdInfo, pFd ); + return ::vkGetPhysicalDeviceExternalSemaphoreProperties( + physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties ); } - VkResult vkGetFenceStatus( VkDevice device, VkFence fence ) const + void vkGetDescriptorSetLayoutSupport( VkDevice device, + const VkDescriptorSetLayoutCreateInfo * pCreateInfo, + VkDescriptorSetLayoutSupport * pSupport ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetFenceStatus( device, fence ); + return ::vkGetDescriptorSetLayoutSupport( device, pCreateInfo, pSupport ); } -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkGetFenceWin32HandleKHR( VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const + //=== VK_VERSION_1_2 === + + void vkCmdDrawIndirectCount( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetFenceWin32HandleKHR( device, pGetWin32HandleInfo, pHandle ); + return ::vkCmdDrawIndirectCount( + commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - VkResult vkGetImageDrmFormatModifierPropertiesEXT( VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties ) const + void vkCmdDrawIndexedIndirectCount( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetImageDrmFormatModifierPropertiesEXT( device, image, pProperties ); + return ::vkCmdDrawIndexedIndirectCount( + commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); } - void vkGetImageMemoryRequirements( VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements ) const + VkResult vkCreateRenderPass2( VkDevice device, + const VkRenderPassCreateInfo2 * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkRenderPass * pRenderPass ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetImageMemoryRequirements( device, image, pMemoryRequirements ); + return ::vkCreateRenderPass2( device, pCreateInfo, pAllocator, pRenderPass ); } - void vkGetImageMemoryRequirements2( VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements ) const + void vkCmdBeginRenderPass2( VkCommandBuffer commandBuffer, + const VkRenderPassBeginInfo * pRenderPassBegin, + const VkSubpassBeginInfo * pSubpassBeginInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetImageMemoryRequirements2( device, pInfo, pMemoryRequirements ); + return ::vkCmdBeginRenderPass2( commandBuffer, pRenderPassBegin, pSubpassBeginInfo ); } - void vkGetImageMemoryRequirements2KHR( VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements ) const + void vkCmdNextSubpass2( VkCommandBuffer commandBuffer, + const VkSubpassBeginInfo * pSubpassBeginInfo, + const VkSubpassEndInfo * pSubpassEndInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetImageMemoryRequirements2KHR( device, pInfo, pMemoryRequirements ); + return ::vkCmdNextSubpass2( commandBuffer, pSubpassBeginInfo, pSubpassEndInfo ); } - void vkGetImageSparseMemoryRequirements( VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements ) const + void vkCmdEndRenderPass2( VkCommandBuffer commandBuffer, + const VkSubpassEndInfo * pSubpassEndInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetImageSparseMemoryRequirements( device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); + return ::vkCmdEndRenderPass2( commandBuffer, pSubpassEndInfo ); } - void vkGetImageSparseMemoryRequirements2( VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements ) const + void vkResetQueryPool( VkDevice device, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetImageSparseMemoryRequirements2( device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); + return ::vkResetQueryPool( device, queryPool, firstQuery, queryCount ); } - void vkGetImageSparseMemoryRequirements2KHR( VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements ) const + VkResult + vkGetSemaphoreCounterValue( VkDevice device, VkSemaphore semaphore, uint64_t * pValue ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetImageSparseMemoryRequirements2KHR( device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); + return ::vkGetSemaphoreCounterValue( device, semaphore, pValue ); } - void vkGetImageSubresourceLayout( VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout ) const + VkResult vkWaitSemaphores( VkDevice device, + const VkSemaphoreWaitInfo * pWaitInfo, + uint64_t timeout ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetImageSubresourceLayout( device, image, pSubresource, pLayout ); + return ::vkWaitSemaphores( device, pWaitInfo, timeout ); } - uint32_t vkGetImageViewHandleNVX( VkDevice device, const VkImageViewHandleInfoNVX* pInfo ) const + VkResult vkSignalSemaphore( VkDevice device, const VkSemaphoreSignalInfo * pSignalInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetImageViewHandleNVX( device, pInfo ); + return ::vkSignalSemaphore( device, pSignalInfo ); } -#ifdef VK_USE_PLATFORM_ANDROID_KHR - VkResult vkGetMemoryAndroidHardwareBufferANDROID( VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer ) const + VkDeviceAddress vkGetBufferDeviceAddress( VkDevice device, + const VkBufferDeviceAddressInfo * pInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetMemoryAndroidHardwareBufferANDROID( device, pInfo, pBuffer ); + return ::vkGetBufferDeviceAddress( device, pInfo ); } -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - VkResult vkGetMemoryFdKHR( VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const + uint64_t vkGetBufferOpaqueCaptureAddress( VkDevice device, + const VkBufferDeviceAddressInfo * pInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetMemoryFdKHR( device, pGetFdInfo, pFd ); + return ::vkGetBufferOpaqueCaptureAddress( device, pInfo ); } - VkResult vkGetMemoryFdPropertiesKHR( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties ) const + uint64_t vkGetDeviceMemoryOpaqueCaptureAddress( + VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetMemoryFdPropertiesKHR( device, handleType, fd, pMemoryFdProperties ); + return ::vkGetDeviceMemoryOpaqueCaptureAddress( device, pInfo ); } - VkResult vkGetMemoryHostPointerPropertiesEXT( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties ) const + //=== VK_VERSION_1_3 === + + VkResult + vkGetPhysicalDeviceToolProperties( VkPhysicalDevice physicalDevice, + uint32_t * pToolCount, + VkPhysicalDeviceToolProperties * pToolProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetMemoryHostPointerPropertiesEXT( device, handleType, pHostPointer, pMemoryHostPointerProperties ); + return ::vkGetPhysicalDeviceToolProperties( physicalDevice, pToolCount, pToolProperties ); } -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkGetMemoryWin32HandleKHR( VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const + VkResult vkCreatePrivateDataSlot( VkDevice device, + const VkPrivateDataSlotCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkPrivateDataSlot * pPrivateDataSlot ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetMemoryWin32HandleKHR( device, pGetWin32HandleInfo, pHandle ); + return ::vkCreatePrivateDataSlot( device, pCreateInfo, pAllocator, pPrivateDataSlot ); } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkGetMemoryWin32HandleNV( VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const + void vkDestroyPrivateDataSlot( VkDevice device, + VkPrivateDataSlot privateDataSlot, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetMemoryWin32HandleNV( device, memory, handleType, pHandle ); + return ::vkDestroyPrivateDataSlot( device, privateDataSlot, pAllocator ); } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkGetMemoryWin32HandlePropertiesKHR( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const + VkResult vkSetPrivateData( VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t data ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetMemoryWin32HandlePropertiesKHR( device, handleType, handle, pMemoryWin32HandleProperties ); + return ::vkSetPrivateData( device, objectType, objectHandle, privateDataSlot, data ); } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - VkResult vkGetPastPresentationTimingGOOGLE( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings ) const + void vkGetPrivateData( VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t * pData ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPastPresentationTimingGOOGLE( device, swapchain, pPresentationTimingCount, pPresentationTimings ); + return ::vkGetPrivateData( device, objectType, objectHandle, privateDataSlot, pData ); } - VkResult vkGetPerformanceParameterINTEL( VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue ) const + void vkCmdSetEvent2( VkCommandBuffer commandBuffer, + VkEvent event, + const VkDependencyInfo * pDependencyInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPerformanceParameterINTEL( device, parameter, pValue ); + return ::vkCmdSetEvent2( commandBuffer, event, pDependencyInfo ); } - VkResult vkGetPipelineCacheData( VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData ) const + void vkCmdResetEvent2( VkCommandBuffer commandBuffer, + VkEvent event, + VkPipelineStageFlags2 stageMask ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPipelineCacheData( device, pipelineCache, pDataSize, pData ); + return ::vkCmdResetEvent2( commandBuffer, event, stageMask ); } - VkResult vkGetPipelineExecutableInternalRepresentationsKHR( VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations ) const + void vkCmdWaitEvents2( VkCommandBuffer commandBuffer, + uint32_t eventCount, + const VkEvent * pEvents, + const VkDependencyInfo * pDependencyInfos ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPipelineExecutableInternalRepresentationsKHR( device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations ); + return ::vkCmdWaitEvents2( commandBuffer, eventCount, pEvents, pDependencyInfos ); } - VkResult vkGetPipelineExecutablePropertiesKHR( VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties ) const + void vkCmdPipelineBarrier2( VkCommandBuffer commandBuffer, + const VkDependencyInfo * pDependencyInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPipelineExecutablePropertiesKHR( device, pPipelineInfo, pExecutableCount, pProperties ); + return ::vkCmdPipelineBarrier2( commandBuffer, pDependencyInfo ); } - VkResult vkGetPipelineExecutableStatisticsKHR( VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics ) const + void vkCmdWriteTimestamp2( VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkQueryPool queryPool, + uint32_t query ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPipelineExecutableStatisticsKHR( device, pExecutableInfo, pStatisticCount, pStatistics ); + return ::vkCmdWriteTimestamp2( commandBuffer, stage, queryPool, query ); } - VkResult vkGetQueryPoolResults( VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags ) const + VkResult vkQueueSubmit2( VkQueue queue, + uint32_t submitCount, + const VkSubmitInfo2 * pSubmits, + VkFence fence ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetQueryPoolResults( device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags ); + return ::vkQueueSubmit2( queue, submitCount, pSubmits, fence ); } - VkResult vkGetRayTracingShaderGroupHandlesNV( VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData ) const + void vkCmdCopyBuffer2( VkCommandBuffer commandBuffer, + const VkCopyBufferInfo2 * pCopyBufferInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetRayTracingShaderGroupHandlesNV( device, pipeline, firstGroup, groupCount, dataSize, pData ); + return ::vkCmdCopyBuffer2( commandBuffer, pCopyBufferInfo ); } - VkResult vkGetRefreshCycleDurationGOOGLE( VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const + void vkCmdCopyImage2( VkCommandBuffer commandBuffer, + const VkCopyImageInfo2 * pCopyImageInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetRefreshCycleDurationGOOGLE( device, swapchain, pDisplayTimingProperties ); + return ::vkCmdCopyImage2( commandBuffer, pCopyImageInfo ); } - void vkGetRenderAreaGranularity( VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity ) const + void vkCmdCopyBufferToImage2( VkCommandBuffer commandBuffer, + const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetRenderAreaGranularity( device, renderPass, pGranularity ); + return ::vkCmdCopyBufferToImage2( commandBuffer, pCopyBufferToImageInfo ); } - VkResult vkGetSemaphoreFdKHR( VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const + void vkCmdCopyImageToBuffer2( VkCommandBuffer commandBuffer, + const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetSemaphoreFdKHR( device, pGetFdInfo, pFd ); + return ::vkCmdCopyImageToBuffer2( commandBuffer, pCopyImageToBufferInfo ); } -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkGetSemaphoreWin32HandleKHR( VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const + void vkCmdBlitImage2( VkCommandBuffer commandBuffer, + const VkBlitImageInfo2 * pBlitImageInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetSemaphoreWin32HandleKHR( device, pGetWin32HandleInfo, pHandle ); + return ::vkCmdBlitImage2( commandBuffer, pBlitImageInfo ); } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - VkResult vkGetShaderInfoAMD( VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo ) const + void vkCmdResolveImage2( VkCommandBuffer commandBuffer, + const VkResolveImageInfo2 * pResolveImageInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetShaderInfoAMD( device, pipeline, shaderStage, infoType, pInfoSize, pInfo ); + return ::vkCmdResolveImage2( commandBuffer, pResolveImageInfo ); } - VkResult vkGetSwapchainCounterEXT( VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const + void vkCmdBeginRendering( VkCommandBuffer commandBuffer, + const VkRenderingInfo * pRenderingInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetSwapchainCounterEXT( device, swapchain, counter, pCounterValue ); + return ::vkCmdBeginRendering( commandBuffer, pRenderingInfo ); } - VkResult vkGetSwapchainImagesKHR( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages ) const + void vkCmdEndRendering( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetSwapchainImagesKHR( device, swapchain, pSwapchainImageCount, pSwapchainImages ); + return ::vkCmdEndRendering( commandBuffer ); } - VkResult vkGetSwapchainStatusKHR( VkDevice device, VkSwapchainKHR swapchain ) const + void vkCmdSetCullMode( VkCommandBuffer commandBuffer, VkCullModeFlags cullMode ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetSwapchainStatusKHR( device, swapchain ); + return ::vkCmdSetCullMode( commandBuffer, cullMode ); } - VkResult vkGetValidationCacheDataEXT( VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) const + void vkCmdSetFrontFace( VkCommandBuffer commandBuffer, VkFrontFace frontFace ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetValidationCacheDataEXT( device, validationCache, pDataSize, pData ); + return ::vkCmdSetFrontFace( commandBuffer, frontFace ); } - VkResult vkImportFenceFdKHR( VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo ) const + void vkCmdSetPrimitiveTopology( VkCommandBuffer commandBuffer, + VkPrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT { - return ::vkImportFenceFdKHR( device, pImportFenceFdInfo ); + return ::vkCmdSetPrimitiveTopology( commandBuffer, primitiveTopology ); } -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkImportFenceWin32HandleKHR( VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const + void vkCmdSetViewportWithCount( VkCommandBuffer commandBuffer, + uint32_t viewportCount, + const VkViewport * pViewports ) const VULKAN_HPP_NOEXCEPT { - return ::vkImportFenceWin32HandleKHR( device, pImportFenceWin32HandleInfo ); + return ::vkCmdSetViewportWithCount( commandBuffer, viewportCount, pViewports ); } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - VkResult vkImportSemaphoreFdKHR( VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const + void vkCmdSetScissorWithCount( VkCommandBuffer commandBuffer, + uint32_t scissorCount, + const VkRect2D * pScissors ) const VULKAN_HPP_NOEXCEPT { - return ::vkImportSemaphoreFdKHR( device, pImportSemaphoreFdInfo ); + return ::vkCmdSetScissorWithCount( commandBuffer, scissorCount, pScissors ); } -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkImportSemaphoreWin32HandleKHR( VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const + void vkCmdBindVertexBuffers2( VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer * pBuffers, + const VkDeviceSize * pOffsets, + const VkDeviceSize * pSizes, + const VkDeviceSize * pStrides ) const VULKAN_HPP_NOEXCEPT { - return ::vkImportSemaphoreWin32HandleKHR( device, pImportSemaphoreWin32HandleInfo ); + return ::vkCmdBindVertexBuffers2( + commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides ); } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - VkResult vkInitializePerformanceApiINTEL( VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo ) const + void vkCmdSetDepthTestEnable( VkCommandBuffer commandBuffer, VkBool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT { - return ::vkInitializePerformanceApiINTEL( device, pInitializeInfo ); + return ::vkCmdSetDepthTestEnable( commandBuffer, depthTestEnable ); } - VkResult vkInvalidateMappedMemoryRanges( VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges ) const + void vkCmdSetDepthWriteEnable( VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT { - return ::vkInvalidateMappedMemoryRanges( device, memoryRangeCount, pMemoryRanges ); + return ::vkCmdSetDepthWriteEnable( commandBuffer, depthWriteEnable ); } - VkResult vkMapMemory( VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData ) const + void vkCmdSetDepthCompareOp( VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT { - return ::vkMapMemory( device, memory, offset, size, flags, ppData ); + return ::vkCmdSetDepthCompareOp( commandBuffer, depthCompareOp ); } - VkResult vkMergePipelineCaches( VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches ) const + void vkCmdSetDepthBoundsTestEnable( VkCommandBuffer commandBuffer, + VkBool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT { - return ::vkMergePipelineCaches( device, dstCache, srcCacheCount, pSrcCaches ); + return ::vkCmdSetDepthBoundsTestEnable( commandBuffer, depthBoundsTestEnable ); } - VkResult vkMergeValidationCachesEXT( VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches ) const + void vkCmdSetStencilTestEnable( VkCommandBuffer commandBuffer, + VkBool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT { - return ::vkMergeValidationCachesEXT( device, dstCache, srcCacheCount, pSrcCaches ); + return ::vkCmdSetStencilTestEnable( commandBuffer, stencilTestEnable ); } - VkResult vkRegisterDeviceEventEXT( VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence ) const + void vkCmdSetStencilOp( VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + VkStencilOp failOp, + VkStencilOp passOp, + VkStencilOp depthFailOp, + VkCompareOp compareOp ) const VULKAN_HPP_NOEXCEPT { - return ::vkRegisterDeviceEventEXT( device, pDeviceEventInfo, pAllocator, pFence ); + return ::vkCmdSetStencilOp( commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp ); } - VkResult vkRegisterDisplayEventEXT( VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence ) const + void vkCmdSetRasterizerDiscardEnable( VkCommandBuffer commandBuffer, + VkBool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT { - return ::vkRegisterDisplayEventEXT( device, display, pDisplayEventInfo, pAllocator, pFence ); + return ::vkCmdSetRasterizerDiscardEnable( commandBuffer, rasterizerDiscardEnable ); } - VkResult vkRegisterObjectsNVX( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const + void vkCmdSetDepthBiasEnable( VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT { - return ::vkRegisterObjectsNVX( device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices ); + return ::vkCmdSetDepthBiasEnable( commandBuffer, depthBiasEnable ); } -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkReleaseFullScreenExclusiveModeEXT( VkDevice device, VkSwapchainKHR swapchain ) const + void vkCmdSetPrimitiveRestartEnable( VkCommandBuffer commandBuffer, + VkBool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT { - return ::vkReleaseFullScreenExclusiveModeEXT( device, swapchain ); + return ::vkCmdSetPrimitiveRestartEnable( commandBuffer, primitiveRestartEnable ); } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - VkResult vkReleasePerformanceConfigurationINTEL( VkDevice device, VkPerformanceConfigurationINTEL configuration ) const + void vkGetDeviceBufferMemoryRequirements( VkDevice device, + const VkDeviceBufferMemoryRequirements * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT { - return ::vkReleasePerformanceConfigurationINTEL( device, configuration ); + return ::vkGetDeviceBufferMemoryRequirements( device, pInfo, pMemoryRequirements ); } - VkResult vkResetCommandPool( VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags ) const + void vkGetDeviceImageMemoryRequirements( VkDevice device, + const VkDeviceImageMemoryRequirements * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT { - return ::vkResetCommandPool( device, commandPool, flags ); + return ::vkGetDeviceImageMemoryRequirements( device, pInfo, pMemoryRequirements ); } - VkResult vkResetDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags ) const + void vkGetDeviceImageSparseMemoryRequirements( VkDevice device, + const VkDeviceImageMemoryRequirements * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) const + VULKAN_HPP_NOEXCEPT { - return ::vkResetDescriptorPool( device, descriptorPool, flags ); + return ::vkGetDeviceImageSparseMemoryRequirements( + device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); } - VkResult vkResetEvent( VkDevice device, VkEvent event ) const + //=== VK_KHR_surface === + + void vkDestroySurfaceKHR( VkInstance instance, + VkSurfaceKHR surface, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkResetEvent( device, event ); + return ::vkDestroySurfaceKHR( instance, surface, pAllocator ); } - VkResult vkResetFences( VkDevice device, uint32_t fenceCount, const VkFence* pFences ) const + VkResult vkGetPhysicalDeviceSurfaceSupportKHR( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + VkSurfaceKHR surface, + VkBool32 * pSupported ) const VULKAN_HPP_NOEXCEPT { - return ::vkResetFences( device, fenceCount, pFences ); + return ::vkGetPhysicalDeviceSurfaceSupportKHR( physicalDevice, queueFamilyIndex, surface, pSupported ); } - void vkResetQueryPoolEXT( VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const + VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR( VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) const + VULKAN_HPP_NOEXCEPT { - return ::vkResetQueryPoolEXT( device, queryPool, firstQuery, queryCount ); + return ::vkGetPhysicalDeviceSurfaceCapabilitiesKHR( physicalDevice, surface, pSurfaceCapabilities ); } - VkResult vkSetDebugUtilsObjectNameEXT( VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo ) const + VkResult vkGetPhysicalDeviceSurfaceFormatsKHR( VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + uint32_t * pSurfaceFormatCount, + VkSurfaceFormatKHR * pSurfaceFormats ) const VULKAN_HPP_NOEXCEPT { - return ::vkSetDebugUtilsObjectNameEXT( device, pNameInfo ); + return ::vkGetPhysicalDeviceSurfaceFormatsKHR( physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats ); } - VkResult vkSetDebugUtilsObjectTagEXT( VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo ) const + VkResult vkGetPhysicalDeviceSurfacePresentModesKHR( VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + uint32_t * pPresentModeCount, + VkPresentModeKHR * pPresentModes ) const VULKAN_HPP_NOEXCEPT { - return ::vkSetDebugUtilsObjectTagEXT( device, pTagInfo ); + return ::vkGetPhysicalDeviceSurfacePresentModesKHR( physicalDevice, surface, pPresentModeCount, pPresentModes ); } - VkResult vkSetEvent( VkDevice device, VkEvent event ) const + //=== VK_KHR_swapchain === + + VkResult vkCreateSwapchainKHR( VkDevice device, + const VkSwapchainCreateInfoKHR * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSwapchainKHR * pSwapchain ) const VULKAN_HPP_NOEXCEPT { - return ::vkSetEvent( device, event ); + return ::vkCreateSwapchainKHR( device, pCreateInfo, pAllocator, pSwapchain ); } - void vkSetHdrMetadataEXT( VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata ) const + void vkDestroySwapchainKHR( VkDevice device, + VkSwapchainKHR swapchain, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkSetHdrMetadataEXT( device, swapchainCount, pSwapchains, pMetadata ); + return ::vkDestroySwapchainKHR( device, swapchain, pAllocator ); } - void vkSetLocalDimmingAMD( VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable ) const + VkResult vkGetSwapchainImagesKHR( VkDevice device, + VkSwapchainKHR swapchain, + uint32_t * pSwapchainImageCount, + VkImage * pSwapchainImages ) const VULKAN_HPP_NOEXCEPT { - return ::vkSetLocalDimmingAMD( device, swapChain, localDimmingEnable ); + return ::vkGetSwapchainImagesKHR( device, swapchain, pSwapchainImageCount, pSwapchainImages ); } - void vkTrimCommandPool( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags ) const + VkResult vkAcquireNextImageKHR( VkDevice device, + VkSwapchainKHR swapchain, + uint64_t timeout, + VkSemaphore semaphore, + VkFence fence, + uint32_t * pImageIndex ) const VULKAN_HPP_NOEXCEPT { - return ::vkTrimCommandPool( device, commandPool, flags ); + return ::vkAcquireNextImageKHR( device, swapchain, timeout, semaphore, fence, pImageIndex ); } - void vkTrimCommandPoolKHR( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags ) const + VkResult vkQueuePresentKHR( VkQueue queue, const VkPresentInfoKHR * pPresentInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkTrimCommandPoolKHR( device, commandPool, flags ); + return ::vkQueuePresentKHR( queue, pPresentInfo ); } - void vkUninitializePerformanceApiINTEL( VkDevice device ) const + VkResult vkGetDeviceGroupPresentCapabilitiesKHR( + VkDevice device, VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) const VULKAN_HPP_NOEXCEPT { - return ::vkUninitializePerformanceApiINTEL( device ); + return ::vkGetDeviceGroupPresentCapabilitiesKHR( device, pDeviceGroupPresentCapabilities ); } - void vkUnmapMemory( VkDevice device, VkDeviceMemory memory ) const + VkResult vkGetDeviceGroupSurfacePresentModesKHR( + VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR * pModes ) const VULKAN_HPP_NOEXCEPT { - return ::vkUnmapMemory( device, memory ); + return ::vkGetDeviceGroupSurfacePresentModesKHR( device, surface, pModes ); } - VkResult vkUnregisterObjectsNVX( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const + VkResult vkGetPhysicalDevicePresentRectanglesKHR( VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + uint32_t * pRectCount, + VkRect2D * pRects ) const VULKAN_HPP_NOEXCEPT { - return ::vkUnregisterObjectsNVX( device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices ); + return ::vkGetPhysicalDevicePresentRectanglesKHR( physicalDevice, surface, pRectCount, pRects ); } - void vkUpdateDescriptorSetWithTemplate( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData ) const + VkResult vkAcquireNextImage2KHR( VkDevice device, + const VkAcquireNextImageInfoKHR * pAcquireInfo, + uint32_t * pImageIndex ) const VULKAN_HPP_NOEXCEPT { - return ::vkUpdateDescriptorSetWithTemplate( device, descriptorSet, descriptorUpdateTemplate, pData ); + return ::vkAcquireNextImage2KHR( device, pAcquireInfo, pImageIndex ); } - void vkUpdateDescriptorSetWithTemplateKHR( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData ) const + //=== VK_KHR_display === + + VkResult vkGetPhysicalDeviceDisplayPropertiesKHR( VkPhysicalDevice physicalDevice, + uint32_t * pPropertyCount, + VkDisplayPropertiesKHR * pProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkUpdateDescriptorSetWithTemplateKHR( device, descriptorSet, descriptorUpdateTemplate, pData ); + return ::vkGetPhysicalDeviceDisplayPropertiesKHR( physicalDevice, pPropertyCount, pProperties ); } - void vkUpdateDescriptorSets( VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies ) const + VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR( VkPhysicalDevice physicalDevice, + uint32_t * pPropertyCount, + VkDisplayPlanePropertiesKHR * pProperties ) const + VULKAN_HPP_NOEXCEPT { - return ::vkUpdateDescriptorSets( device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies ); + return ::vkGetPhysicalDeviceDisplayPlanePropertiesKHR( physicalDevice, pPropertyCount, pProperties ); } - VkResult vkWaitForFences( VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout ) const + VkResult vkGetDisplayPlaneSupportedDisplaysKHR( VkPhysicalDevice physicalDevice, + uint32_t planeIndex, + uint32_t * pDisplayCount, + VkDisplayKHR * pDisplays ) const VULKAN_HPP_NOEXCEPT { - return ::vkWaitForFences( device, fenceCount, pFences, waitAll, timeout ); + return ::vkGetDisplayPlaneSupportedDisplaysKHR( physicalDevice, planeIndex, pDisplayCount, pDisplays ); } -#ifdef VK_USE_PLATFORM_ANDROID_KHR - VkResult vkCreateAndroidSurfaceKHR( VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const + VkResult vkGetDisplayModePropertiesKHR( VkPhysicalDevice physicalDevice, + VkDisplayKHR display, + uint32_t * pPropertyCount, + VkDisplayModePropertiesKHR * pProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateAndroidSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); + return ::vkGetDisplayModePropertiesKHR( physicalDevice, display, pPropertyCount, pProperties ); } -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - VkResult vkCreateDebugReportCallbackEXT( VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback ) const + VkResult vkCreateDisplayModeKHR( VkPhysicalDevice physicalDevice, + VkDisplayKHR display, + const VkDisplayModeCreateInfoKHR * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkDisplayModeKHR * pMode ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateDebugReportCallbackEXT( instance, pCreateInfo, pAllocator, pCallback ); + return ::vkCreateDisplayModeKHR( physicalDevice, display, pCreateInfo, pAllocator, pMode ); } - VkResult vkCreateDebugUtilsMessengerEXT( VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger ) const + VkResult vkGetDisplayPlaneCapabilitiesKHR( VkPhysicalDevice physicalDevice, + VkDisplayModeKHR mode, + uint32_t planeIndex, + VkDisplayPlaneCapabilitiesKHR * pCapabilities ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateDebugUtilsMessengerEXT( instance, pCreateInfo, pAllocator, pMessenger ); + return ::vkGetDisplayPlaneCapabilitiesKHR( physicalDevice, mode, planeIndex, pCapabilities ); } - VkResult vkCreateDisplayPlaneSurfaceKHR( VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const + VkResult vkCreateDisplayPlaneSurfaceKHR( VkInstance instance, + const VkDisplaySurfaceCreateInfoKHR * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT { return ::vkCreateDisplayPlaneSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); } - VkResult vkCreateHeadlessSurfaceEXT( VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const + //=== VK_KHR_display_swapchain === + + VkResult vkCreateSharedSwapchainsKHR( VkDevice device, + uint32_t swapchainCount, + const VkSwapchainCreateInfoKHR * pCreateInfos, + const VkAllocationCallbacks * pAllocator, + VkSwapchainKHR * pSwapchains ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateHeadlessSurfaceEXT( instance, pCreateInfo, pAllocator, pSurface ); + return ::vkCreateSharedSwapchainsKHR( device, swapchainCount, pCreateInfos, pAllocator, pSwapchains ); } -#ifdef VK_USE_PLATFORM_IOS_MVK - VkResult vkCreateIOSSurfaceMVK( VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + VkResult vkCreateXlibSurfaceKHR( VkInstance instance, + const VkXlibSurfaceCreateInfoKHR * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateIOSSurfaceMVK( instance, pCreateInfo, pAllocator, pSurface ); + return ::vkCreateXlibSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); } -#endif /*VK_USE_PLATFORM_IOS_MVK*/ -#ifdef VK_USE_PLATFORM_FUCHSIA - VkResult vkCreateImagePipeSurfaceFUCHSIA( VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const + VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + Display * dpy, + VisualID visualID ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateImagePipeSurfaceFUCHSIA( instance, pCreateInfo, pAllocator, pSurface ); + return ::vkGetPhysicalDeviceXlibPresentationSupportKHR( physicalDevice, queueFamilyIndex, dpy, visualID ); } -#endif /*VK_USE_PLATFORM_FUCHSIA*/ +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ -#ifdef VK_USE_PLATFORM_MACOS_MVK - VkResult vkCreateMacOSSurfaceMVK( VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const +# if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + VkResult vkCreateXcbSurfaceKHR( VkInstance instance, + const VkXcbSurfaceCreateInfoKHR * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateMacOSSurfaceMVK( instance, pCreateInfo, pAllocator, pSurface ); + return ::vkCreateXcbSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); } -#endif /*VK_USE_PLATFORM_MACOS_MVK*/ -#ifdef VK_USE_PLATFORM_METAL_EXT - VkResult vkCreateMetalSurfaceEXT( VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const + VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + xcb_connection_t * connection, + xcb_visualid_t visual_id ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateMetalSurfaceEXT( instance, pCreateInfo, pAllocator, pSurface ); + return ::vkGetPhysicalDeviceXcbPresentationSupportKHR( physicalDevice, queueFamilyIndex, connection, visual_id ); } -#endif /*VK_USE_PLATFORM_METAL_EXT*/ +# endif /*VK_USE_PLATFORM_XCB_KHR*/ + +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === -#ifdef VK_USE_PLATFORM_GGP - VkResult vkCreateStreamDescriptorSurfaceGGP( VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const + VkResult vkCreateWaylandSurfaceKHR( VkInstance instance, + const VkWaylandSurfaceCreateInfoKHR * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateStreamDescriptorSurfaceGGP( instance, pCreateInfo, pAllocator, pSurface ); + return ::vkCreateWaylandSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); } -#endif /*VK_USE_PLATFORM_GGP*/ -#ifdef VK_USE_PLATFORM_VI_NN - VkResult vkCreateViSurfaceNN( VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const + VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + struct wl_display * display ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateViSurfaceNN( instance, pCreateInfo, pAllocator, pSurface ); + return ::vkGetPhysicalDeviceWaylandPresentationSupportKHR( physicalDevice, queueFamilyIndex, display ); } -#endif /*VK_USE_PLATFORM_VI_NN*/ +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - VkResult vkCreateWaylandSurfaceKHR( VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + + VkResult vkCreateAndroidSurfaceKHR( VkInstance instance, + const VkAndroidSurfaceCreateInfoKHR * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateWaylandSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); + return ::vkCreateAndroidSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); } -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkCreateWin32SurfaceKHR( VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + VkResult vkCreateWin32SurfaceKHR( VkInstance instance, + const VkWin32SurfaceCreateInfoKHR * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT { return ::vkCreateWin32SurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_XCB_KHR - VkResult vkCreateXcbSurfaceKHR( VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const + VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateXcbSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); + return ::vkGetPhysicalDeviceWin32PresentationSupportKHR( physicalDevice, queueFamilyIndex ); } -#endif /*VK_USE_PLATFORM_XCB_KHR*/ +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === -#ifdef VK_USE_PLATFORM_XLIB_KHR - VkResult vkCreateXlibSurfaceKHR( VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const + VkResult vkCreateDebugReportCallbackEXT( VkInstance instance, + const VkDebugReportCallbackCreateInfoEXT * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkDebugReportCallbackEXT * pCallback ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateXlibSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); + return ::vkCreateDebugReportCallbackEXT( instance, pCreateInfo, pAllocator, pCallback ); } -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ - void vkDebugReportMessageEXT( VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage ) const + void vkDestroyDebugReportCallbackEXT( VkInstance instance, + VkDebugReportCallbackEXT callback, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkDebugReportMessageEXT( instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage ); + return ::vkDestroyDebugReportCallbackEXT( instance, callback, pAllocator ); } - void vkDestroyDebugReportCallbackEXT( VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator ) const + void vkDebugReportMessageEXT( VkInstance instance, + VkDebugReportFlagsEXT flags, + VkDebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + const char * pLayerPrefix, + const char * pMessage ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyDebugReportCallbackEXT( instance, callback, pAllocator ); + return ::vkDebugReportMessageEXT( + instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage ); } - void vkDestroyDebugUtilsMessengerEXT( VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator ) const + //=== VK_EXT_debug_marker === + + VkResult vkDebugMarkerSetObjectTagEXT( VkDevice device, + const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyDebugUtilsMessengerEXT( instance, messenger, pAllocator ); + return ::vkDebugMarkerSetObjectTagEXT( device, pTagInfo ); } - void vkDestroyInstance( VkInstance instance, const VkAllocationCallbacks* pAllocator ) const + VkResult vkDebugMarkerSetObjectNameEXT( VkDevice device, + const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroyInstance( instance, pAllocator ); + return ::vkDebugMarkerSetObjectNameEXT( device, pNameInfo ); } - void vkDestroySurfaceKHR( VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator ) const + void vkCmdDebugMarkerBeginEXT( VkCommandBuffer commandBuffer, + const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkDestroySurfaceKHR( instance, surface, pAllocator ); + return ::vkCmdDebugMarkerBeginEXT( commandBuffer, pMarkerInfo ); } - VkResult vkEnumeratePhysicalDeviceGroups( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties ) const + void vkCmdDebugMarkerEndEXT( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT { - return ::vkEnumeratePhysicalDeviceGroups( instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties ); + return ::vkCmdDebugMarkerEndEXT( commandBuffer ); } - VkResult vkEnumeratePhysicalDeviceGroupsKHR( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties ) const + void vkCmdDebugMarkerInsertEXT( VkCommandBuffer commandBuffer, + const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkEnumeratePhysicalDeviceGroupsKHR( instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties ); + return ::vkCmdDebugMarkerInsertEXT( commandBuffer, pMarkerInfo ); } - VkResult vkEnumeratePhysicalDevices( VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices ) const +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + + VkResult vkGetPhysicalDeviceVideoCapabilitiesKHR( VkPhysicalDevice physicalDevice, + const VkVideoProfileKHR * pVideoProfile, + VkVideoCapabilitiesKHR * pCapabilities ) const VULKAN_HPP_NOEXCEPT { - return ::vkEnumeratePhysicalDevices( instance, pPhysicalDeviceCount, pPhysicalDevices ); + return ::vkGetPhysicalDeviceVideoCapabilitiesKHR( physicalDevice, pVideoProfile, pCapabilities ); } - PFN_vkVoidFunction vkGetInstanceProcAddr( VkInstance instance, const char* pName ) const + VkResult vkGetPhysicalDeviceVideoFormatPropertiesKHR( VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo, + uint32_t * pVideoFormatPropertyCount, + VkVideoFormatPropertiesKHR * pVideoFormatProperties ) const + VULKAN_HPP_NOEXCEPT { - return ::vkGetInstanceProcAddr( instance, pName ); + return ::vkGetPhysicalDeviceVideoFormatPropertiesKHR( + physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties ); } - void vkSubmitDebugUtilsMessageEXT( VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData ) const + VkResult vkCreateVideoSessionKHR( VkDevice device, + const VkVideoSessionCreateInfoKHR * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkVideoSessionKHR * pVideoSession ) const VULKAN_HPP_NOEXCEPT { - return ::vkSubmitDebugUtilsMessageEXT( instance, messageSeverity, messageTypes, pCallbackData ); + return ::vkCreateVideoSessionKHR( device, pCreateInfo, pAllocator, pVideoSession ); } -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - VkResult vkAcquireXlibDisplayEXT( VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display ) const + void vkDestroyVideoSessionKHR( VkDevice device, + VkVideoSessionKHR videoSession, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkAcquireXlibDisplayEXT( physicalDevice, dpy, display ); + return ::vkDestroyVideoSessionKHR( device, videoSession, pAllocator ); } -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - VkResult vkCreateDevice( VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice ) const + VkResult vkGetVideoSessionMemoryRequirementsKHR( + VkDevice device, + VkVideoSessionKHR videoSession, + uint32_t * pVideoSessionMemoryRequirementsCount, + VkVideoGetMemoryPropertiesKHR * pVideoSessionMemoryRequirements ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateDevice( physicalDevice, pCreateInfo, pAllocator, pDevice ); + return ::vkGetVideoSessionMemoryRequirementsKHR( + device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements ); } - VkResult vkCreateDisplayModeKHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode ) const + VkResult + vkBindVideoSessionMemoryKHR( VkDevice device, + VkVideoSessionKHR videoSession, + uint32_t videoSessionBindMemoryCount, + const VkVideoBindMemoryKHR * pVideoSessionBindMemories ) const VULKAN_HPP_NOEXCEPT { - return ::vkCreateDisplayModeKHR( physicalDevice, display, pCreateInfo, pAllocator, pMode ); + return ::vkBindVideoSessionMemoryKHR( + device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories ); } - VkResult vkEnumerateDeviceExtensionProperties( VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties ) const + VkResult vkCreateVideoSessionParametersKHR( VkDevice device, + const VkVideoSessionParametersCreateInfoKHR * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkVideoSessionParametersKHR * pVideoSessionParameters ) const + VULKAN_HPP_NOEXCEPT { - return ::vkEnumerateDeviceExtensionProperties( physicalDevice, pLayerName, pPropertyCount, pProperties ); + return ::vkCreateVideoSessionParametersKHR( device, pCreateInfo, pAllocator, pVideoSessionParameters ); } - VkResult vkEnumerateDeviceLayerProperties( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties ) const + VkResult vkUpdateVideoSessionParametersKHR( VkDevice device, + VkVideoSessionParametersKHR videoSessionParameters, + const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo ) const + VULKAN_HPP_NOEXCEPT { - return ::vkEnumerateDeviceLayerProperties( physicalDevice, pPropertyCount, pProperties ); + return ::vkUpdateVideoSessionParametersKHR( device, videoSessionParameters, pUpdateInfo ); } - VkResult vkGetDisplayModeProperties2KHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties ) const + void vkDestroyVideoSessionParametersKHR( VkDevice device, + VkVideoSessionParametersKHR videoSessionParameters, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetDisplayModeProperties2KHR( physicalDevice, display, pPropertyCount, pProperties ); + return ::vkDestroyVideoSessionParametersKHR( device, videoSessionParameters, pAllocator ); } - VkResult vkGetDisplayModePropertiesKHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties ) const + void vkCmdBeginVideoCodingKHR( VkCommandBuffer commandBuffer, + const VkVideoBeginCodingInfoKHR * pBeginInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetDisplayModePropertiesKHR( physicalDevice, display, pPropertyCount, pProperties ); + return ::vkCmdBeginVideoCodingKHR( commandBuffer, pBeginInfo ); } - VkResult vkGetDisplayPlaneCapabilities2KHR( VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities ) const + void vkCmdEndVideoCodingKHR( VkCommandBuffer commandBuffer, + const VkVideoEndCodingInfoKHR * pEndCodingInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetDisplayPlaneCapabilities2KHR( physicalDevice, pDisplayPlaneInfo, pCapabilities ); + return ::vkCmdEndVideoCodingKHR( commandBuffer, pEndCodingInfo ); } - VkResult vkGetDisplayPlaneCapabilitiesKHR( VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities ) const + void vkCmdControlVideoCodingKHR( VkCommandBuffer commandBuffer, + const VkVideoCodingControlInfoKHR * pCodingControlInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetDisplayPlaneCapabilitiesKHR( physicalDevice, mode, planeIndex, pCapabilities ); + return ::vkCmdControlVideoCodingKHR( commandBuffer, pCodingControlInfo ); } +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_decode_queue === - VkResult vkGetDisplayPlaneSupportedDisplaysKHR( VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays ) const + void vkCmdDecodeVideoKHR( VkCommandBuffer commandBuffer, + const VkVideoDecodeInfoKHR * pFrameInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetDisplayPlaneSupportedDisplaysKHR( physicalDevice, planeIndex, pDisplayCount, pDisplays ); + return ::vkCmdDecodeVideoKHR( commandBuffer, pFrameInfo ); } +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_transform_feedback === - VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains ) const + void vkCmdBindTransformFeedbackBuffersEXT( VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer * pBuffers, + const VkDeviceSize * pOffsets, + const VkDeviceSize * pSizes ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( physicalDevice, pTimeDomainCount, pTimeDomains ); + return ::vkCmdBindTransformFeedbackBuffersEXT( + commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes ); } - VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties ) const + void vkCmdBeginTransformFeedbackEXT( VkCommandBuffer commandBuffer, + uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VkBuffer * pCounterBuffers, + const VkDeviceSize * pCounterBufferOffsets ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( physicalDevice, pPropertyCount, pProperties ); + return ::vkCmdBeginTransformFeedbackEXT( + commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets ); } - VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties ) const + void vkCmdEndTransformFeedbackEXT( VkCommandBuffer commandBuffer, + uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VkBuffer * pCounterBuffers, + const VkDeviceSize * pCounterBufferOffsets ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceDisplayPlaneProperties2KHR( physicalDevice, pPropertyCount, pProperties ); + return ::vkCmdEndTransformFeedbackEXT( + commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets ); } - VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties ) const + void vkCmdBeginQueryIndexedEXT( VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query, + VkQueryControlFlags flags, + uint32_t index ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceDisplayPlanePropertiesKHR( physicalDevice, pPropertyCount, pProperties ); + return ::vkCmdBeginQueryIndexedEXT( commandBuffer, queryPool, query, flags, index ); } - VkResult vkGetPhysicalDeviceDisplayProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties ) const + void vkCmdEndQueryIndexedEXT( VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query, + uint32_t index ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceDisplayProperties2KHR( physicalDevice, pPropertyCount, pProperties ); + return ::vkCmdEndQueryIndexedEXT( commandBuffer, queryPool, query, index ); } - VkResult vkGetPhysicalDeviceDisplayPropertiesKHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties ) const + void vkCmdDrawIndirectByteCountEXT( VkCommandBuffer commandBuffer, + uint32_t instanceCount, + uint32_t firstInstance, + VkBuffer counterBuffer, + VkDeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceDisplayPropertiesKHR( physicalDevice, pPropertyCount, pProperties ); + return ::vkCmdDrawIndirectByteCountEXT( + commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride ); } - void vkGetPhysicalDeviceExternalBufferProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties ) const + //=== VK_NVX_binary_import === + + VkResult vkCreateCuModuleNVX( VkDevice device, + const VkCuModuleCreateInfoNVX * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkCuModuleNVX * pModule ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceExternalBufferProperties( physicalDevice, pExternalBufferInfo, pExternalBufferProperties ); + return ::vkCreateCuModuleNVX( device, pCreateInfo, pAllocator, pModule ); } - void vkGetPhysicalDeviceExternalBufferPropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties ) const + VkResult vkCreateCuFunctionNVX( VkDevice device, + const VkCuFunctionCreateInfoNVX * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkCuFunctionNVX * pFunction ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceExternalBufferPropertiesKHR( physicalDevice, pExternalBufferInfo, pExternalBufferProperties ); + return ::vkCreateCuFunctionNVX( device, pCreateInfo, pAllocator, pFunction ); } - void vkGetPhysicalDeviceExternalFenceProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties ) const + void vkDestroyCuModuleNVX( VkDevice device, + VkCuModuleNVX module, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceExternalFenceProperties( physicalDevice, pExternalFenceInfo, pExternalFenceProperties ); + return ::vkDestroyCuModuleNVX( device, module, pAllocator ); } - void vkGetPhysicalDeviceExternalFencePropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties ) const + void vkDestroyCuFunctionNVX( VkDevice device, + VkCuFunctionNVX function, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceExternalFencePropertiesKHR( physicalDevice, pExternalFenceInfo, pExternalFenceProperties ); + return ::vkDestroyCuFunctionNVX( device, function, pAllocator ); } - VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const + void vkCmdCuLaunchKernelNVX( VkCommandBuffer commandBuffer, + const VkCuLaunchInfoNVX * pLaunchInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceExternalImageFormatPropertiesNV( physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties ); + return ::vkCmdCuLaunchKernelNVX( commandBuffer, pLaunchInfo ); } - void vkGetPhysicalDeviceExternalSemaphoreProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties ) const + //=== VK_NVX_image_view_handle === + + uint32_t vkGetImageViewHandleNVX( VkDevice device, + const VkImageViewHandleInfoNVX * pInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceExternalSemaphoreProperties( physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties ); + return ::vkGetImageViewHandleNVX( device, pInfo ); } - void vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties ) const + VkResult vkGetImageViewAddressNVX( VkDevice device, + VkImageView imageView, + VkImageViewAddressPropertiesNVX * pProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties ); + return ::vkGetImageViewAddressNVX( device, imageView, pProperties ); } - void vkGetPhysicalDeviceFeatures( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures ) const + //=== VK_AMD_draw_indirect_count === + + void vkCmdDrawIndirectCountAMD( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceFeatures( physicalDevice, pFeatures ); + return ::vkCmdDrawIndirectCountAMD( + commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); } - void vkGetPhysicalDeviceFeatures2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures ) const + void vkCmdDrawIndexedIndirectCountAMD( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceFeatures2( physicalDevice, pFeatures ); + return ::vkCmdDrawIndexedIndirectCountAMD( + commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); } - void vkGetPhysicalDeviceFeatures2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures ) const + //=== VK_AMD_shader_info === + + VkResult vkGetShaderInfoAMD( VkDevice device, + VkPipeline pipeline, + VkShaderStageFlagBits shaderStage, + VkShaderInfoTypeAMD infoType, + size_t * pInfoSize, + void * pInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceFeatures2KHR( physicalDevice, pFeatures ); + return ::vkGetShaderInfoAMD( device, pipeline, shaderStage, infoType, pInfoSize, pInfo ); } - void vkGetPhysicalDeviceFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties ) const + //=== VK_KHR_dynamic_rendering === + + void vkCmdBeginRenderingKHR( VkCommandBuffer commandBuffer, + const VkRenderingInfo * pRenderingInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceFormatProperties( physicalDevice, format, pFormatProperties ); + return ::vkCmdBeginRenderingKHR( commandBuffer, pRenderingInfo ); } - void vkGetPhysicalDeviceFormatProperties2( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties ) const + void vkCmdEndRenderingKHR( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceFormatProperties2( physicalDevice, format, pFormatProperties ); + return ::vkCmdEndRenderingKHR( commandBuffer ); } - void vkGetPhysicalDeviceFormatProperties2KHR( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties ) const +# if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + + VkResult vkCreateStreamDescriptorSurfaceGGP( VkInstance instance, + const VkStreamDescriptorSurfaceCreateInfoGGP * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceFormatProperties2KHR( physicalDevice, format, pFormatProperties ); + return ::vkCreateStreamDescriptorSurfaceGGP( instance, pCreateInfo, pAllocator, pSurface ); } +# endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === - void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits ) const + VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkImageType type, + VkImageTiling tiling, + VkImageUsageFlags usage, + VkImageCreateFlags flags, + VkExternalMemoryHandleTypeFlagsNV externalHandleType, + VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( physicalDevice, pFeatures, pLimits ); + return ::vkGetPhysicalDeviceExternalImageFormatPropertiesNV( + physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties ); } - VkResult vkGetPhysicalDeviceImageFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties ) const +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + + VkResult vkGetMemoryWin32HandleNV( VkDevice device, + VkDeviceMemory memory, + VkExternalMemoryHandleTypeFlagsNV handleType, + HANDLE * pHandle ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceImageFormatProperties( physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties ); + return ::vkGetMemoryWin32HandleNV( device, memory, handleType, pHandle ); } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ - VkResult vkGetPhysicalDeviceImageFormatProperties2( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties ) const + //=== VK_KHR_get_physical_device_properties2 === + + void vkGetPhysicalDeviceFeatures2KHR( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceFeatures2 * pFeatures ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceImageFormatProperties2( physicalDevice, pImageFormatInfo, pImageFormatProperties ); + return ::vkGetPhysicalDeviceFeatures2KHR( physicalDevice, pFeatures ); } - VkResult vkGetPhysicalDeviceImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties ) const + void vkGetPhysicalDeviceProperties2KHR( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceProperties2 * pProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceImageFormatProperties2KHR( physicalDevice, pImageFormatInfo, pImageFormatProperties ); + return ::vkGetPhysicalDeviceProperties2KHR( physicalDevice, pProperties ); } - void vkGetPhysicalDeviceMemoryProperties( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties ) const + void vkGetPhysicalDeviceFormatProperties2KHR( VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties2 * pFormatProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceMemoryProperties( physicalDevice, pMemoryProperties ); + return ::vkGetPhysicalDeviceFormatProperties2KHR( physicalDevice, format, pFormatProperties ); } - void vkGetPhysicalDeviceMemoryProperties2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties ) const + VkResult vkGetPhysicalDeviceImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo, + VkImageFormatProperties2 * pImageFormatProperties ) const + VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceMemoryProperties2( physicalDevice, pMemoryProperties ); + return ::vkGetPhysicalDeviceImageFormatProperties2KHR( physicalDevice, pImageFormatInfo, pImageFormatProperties ); + } + + void vkGetPhysicalDeviceQueueFamilyProperties2KHR( VkPhysicalDevice physicalDevice, + uint32_t * pQueueFamilyPropertyCount, + VkQueueFamilyProperties2 * pQueueFamilyProperties ) const + VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceQueueFamilyProperties2KHR( + physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties ); } - void vkGetPhysicalDeviceMemoryProperties2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties ) const + void vkGetPhysicalDeviceMemoryProperties2KHR( + VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) const VULKAN_HPP_NOEXCEPT { return ::vkGetPhysicalDeviceMemoryProperties2KHR( physicalDevice, pMemoryProperties ); } - void vkGetPhysicalDeviceMultisamplePropertiesEXT( VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties ) const + void vkGetPhysicalDeviceSparseImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo, + uint32_t * pPropertyCount, + VkSparseImageFormatProperties2 * pProperties ) const + VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceMultisamplePropertiesEXT( physicalDevice, samples, pMultisampleProperties ); + return ::vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + physicalDevice, pFormatInfo, pPropertyCount, pProperties ); } - VkResult vkGetPhysicalDevicePresentRectanglesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects ) const + //=== VK_KHR_device_group === + + void + vkGetDeviceGroupPeerMemoryFeaturesKHR( VkDevice device, + uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDevicePresentRectanglesKHR( physicalDevice, surface, pRectCount, pRects ); + return ::vkGetDeviceGroupPeerMemoryFeaturesKHR( + device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures ); } - void vkGetPhysicalDeviceProperties( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties ) const + void vkCmdSetDeviceMaskKHR( VkCommandBuffer commandBuffer, uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceProperties( physicalDevice, pProperties ); + return ::vkCmdSetDeviceMaskKHR( commandBuffer, deviceMask ); } - void vkGetPhysicalDeviceProperties2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties ) const + void vkCmdDispatchBaseKHR( VkCommandBuffer commandBuffer, + uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceProperties2( physicalDevice, pProperties ); + return ::vkCmdDispatchBaseKHR( + commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); } - void vkGetPhysicalDeviceProperties2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties ) const +# if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + + VkResult vkCreateViSurfaceNN( VkInstance instance, + const VkViSurfaceCreateInfoNN * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceProperties2KHR( physicalDevice, pProperties ); + return ::vkCreateViSurfaceNN( instance, pCreateInfo, pAllocator, pSurface ); } +# endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_maintenance1 === - void vkGetPhysicalDeviceQueueFamilyProperties( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties ) const + void vkTrimCommandPoolKHR( VkDevice device, + VkCommandPool commandPool, + VkCommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceQueueFamilyProperties( physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties ); + return ::vkTrimCommandPoolKHR( device, commandPool, flags ); } - void vkGetPhysicalDeviceQueueFamilyProperties2( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties ) const + //=== VK_KHR_device_group_creation === + + VkResult vkEnumeratePhysicalDeviceGroupsKHR( + VkInstance instance, + uint32_t * pPhysicalDeviceGroupCount, + VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceQueueFamilyProperties2( physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties ); + return ::vkEnumeratePhysicalDeviceGroupsKHR( + instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties ); } - void vkGetPhysicalDeviceQueueFamilyProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties ) const + //=== VK_KHR_external_memory_capabilities === + + void vkGetPhysicalDeviceExternalBufferPropertiesKHR( VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo, + VkExternalBufferProperties * pExternalBufferProperties ) const + VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceQueueFamilyProperties2KHR( physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties ); + return ::vkGetPhysicalDeviceExternalBufferPropertiesKHR( + physicalDevice, pExternalBufferInfo, pExternalBufferProperties ); } - void vkGetPhysicalDeviceSparseImageFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties ) const +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + + VkResult vkGetMemoryWin32HandleKHR( VkDevice device, + const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo, + HANDLE * pHandle ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceSparseImageFormatProperties( physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties ); + return ::vkGetMemoryWin32HandleKHR( device, pGetWin32HandleInfo, pHandle ); } - void vkGetPhysicalDeviceSparseImageFormatProperties2( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties ) const + VkResult vkGetMemoryWin32HandlePropertiesKHR( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + HANDLE handle, + VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceSparseImageFormatProperties2( physicalDevice, pFormatInfo, pPropertyCount, pProperties ); + return ::vkGetMemoryWin32HandlePropertiesKHR( device, handleType, handle, pMemoryWin32HandleProperties ); } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ - void vkGetPhysicalDeviceSparseImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties ) const + //=== VK_KHR_external_memory_fd === + + VkResult + vkGetMemoryFdKHR( VkDevice device, const VkMemoryGetFdInfoKHR * pGetFdInfo, int * pFd ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceSparseImageFormatProperties2KHR( physicalDevice, pFormatInfo, pPropertyCount, pProperties ); + return ::vkGetMemoryFdKHR( device, pGetFdInfo, pFd ); } - VkResult vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations ) const + VkResult vkGetMemoryFdPropertiesKHR( VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + int fd, + VkMemoryFdPropertiesKHR * pMemoryFdProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( physicalDevice, pCombinationCount, pCombinations ); + return ::vkGetMemoryFdPropertiesKHR( device, handleType, fd, pMemoryFdProperties ); } - VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities ) const + //=== VK_KHR_external_semaphore_capabilities === + + void vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo, + VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceSurfaceCapabilities2EXT( physicalDevice, surface, pSurfaceCapabilities ); + return ::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( + physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties ); } - VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities ) const +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + + VkResult vkImportSemaphoreWin32HandleKHR( + VkDevice device, + const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceSurfaceCapabilities2KHR( physicalDevice, pSurfaceInfo, pSurfaceCapabilities ); + return ::vkImportSemaphoreWin32HandleKHR( device, pImportSemaphoreWin32HandleInfo ); } - VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities ) const + VkResult vkGetSemaphoreWin32HandleKHR( VkDevice device, + const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo, + HANDLE * pHandle ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceSurfaceCapabilitiesKHR( physicalDevice, surface, pSurfaceCapabilities ); + return ::vkGetSemaphoreWin32HandleKHR( device, pGetWin32HandleInfo, pHandle ); } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ - VkResult vkGetPhysicalDeviceSurfaceFormats2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats ) const + //=== VK_KHR_external_semaphore_fd === + + VkResult + vkImportSemaphoreFdKHR( VkDevice device, + const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceSurfaceFormats2KHR( physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats ); + return ::vkImportSemaphoreFdKHR( device, pImportSemaphoreFdInfo ); } - VkResult vkGetPhysicalDeviceSurfaceFormatsKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats ) const + VkResult vkGetSemaphoreFdKHR( VkDevice device, + const VkSemaphoreGetFdInfoKHR * pGetFdInfo, + int * pFd ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceSurfaceFormatsKHR( physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats ); + return ::vkGetSemaphoreFdKHR( device, pGetFdInfo, pFd ); } -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkGetPhysicalDeviceSurfacePresentModes2EXT( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes ) const + //=== VK_KHR_push_descriptor === + + void vkCmdPushDescriptorSetKHR( VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t set, + uint32_t descriptorWriteCount, + const VkWriteDescriptorSet * pDescriptorWrites ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceSurfacePresentModes2EXT( physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes ); + return ::vkCmdPushDescriptorSetKHR( + commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites ); } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - VkResult vkGetPhysicalDeviceSurfacePresentModesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes ) const + void vkCmdPushDescriptorSetWithTemplateKHR( VkCommandBuffer commandBuffer, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + VkPipelineLayout layout, + uint32_t set, + const void * pData ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceSurfacePresentModesKHR( physicalDevice, surface, pPresentModeCount, pPresentModes ); + return ::vkCmdPushDescriptorSetWithTemplateKHR( commandBuffer, descriptorUpdateTemplate, layout, set, pData ); } - VkResult vkGetPhysicalDeviceSurfaceSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported ) const + //=== VK_EXT_conditional_rendering === + + void vkCmdBeginConditionalRenderingEXT( + VkCommandBuffer commandBuffer, + const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceSurfaceSupportKHR( physicalDevice, queueFamilyIndex, surface, pSupported ); + return ::vkCmdBeginConditionalRenderingEXT( commandBuffer, pConditionalRenderingBegin ); } -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display ) const + void vkCmdEndConditionalRenderingEXT( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceWaylandPresentationSupportKHR( physicalDevice, queueFamilyIndex, display ); + return ::vkCmdEndConditionalRenderingEXT( commandBuffer ); } -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex ) const + //=== VK_KHR_descriptor_update_template === + + VkResult vkCreateDescriptorUpdateTemplateKHR( VkDevice device, + const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) const + VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceWin32PresentationSupportKHR( physicalDevice, queueFamilyIndex ); + return ::vkCreateDescriptorUpdateTemplateKHR( device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate ); } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_XCB_KHR - VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const + void vkDestroyDescriptorUpdateTemplateKHR( VkDevice device, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceXcbPresentationSupportKHR( physicalDevice, queueFamilyIndex, connection, visual_id ); + return ::vkDestroyDescriptorUpdateTemplateKHR( device, descriptorUpdateTemplate, pAllocator ); } -#endif /*VK_USE_PLATFORM_XCB_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_KHR - VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const + void vkUpdateDescriptorSetWithTemplateKHR( VkDevice device, + VkDescriptorSet descriptorSet, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + const void * pData ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetPhysicalDeviceXlibPresentationSupportKHR( physicalDevice, queueFamilyIndex, dpy, visualID ); + return ::vkUpdateDescriptorSetWithTemplateKHR( device, descriptorSet, descriptorUpdateTemplate, pData ); } -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - VkResult vkGetRandROutputDisplayEXT( VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay ) const + //=== VK_NV_clip_space_w_scaling === + + void vkCmdSetViewportWScalingNV( VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + const VkViewportWScalingNV * pViewportWScalings ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetRandROutputDisplayEXT( physicalDevice, dpy, rrOutput, pDisplay ); + return ::vkCmdSetViewportWScalingNV( commandBuffer, firstViewport, viewportCount, pViewportWScalings ); } -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - VkResult vkReleaseDisplayEXT( VkPhysicalDevice physicalDevice, VkDisplayKHR display ) const + //=== VK_EXT_direct_mode_display === + + VkResult vkReleaseDisplayEXT( VkPhysicalDevice physicalDevice, VkDisplayKHR display ) const VULKAN_HPP_NOEXCEPT { return ::vkReleaseDisplayEXT( physicalDevice, display ); } - void vkGetQueueCheckpointDataNV( VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData ) const +# if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + + VkResult vkAcquireXlibDisplayEXT( VkPhysicalDevice physicalDevice, + Display * dpy, + VkDisplayKHR display ) const VULKAN_HPP_NOEXCEPT { - return ::vkGetQueueCheckpointDataNV( queue, pCheckpointDataCount, pCheckpointData ); + return ::vkAcquireXlibDisplayEXT( physicalDevice, dpy, display ); } - void vkQueueBeginDebugUtilsLabelEXT( VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo ) const + VkResult vkGetRandROutputDisplayEXT( VkPhysicalDevice physicalDevice, + Display * dpy, + RROutput rrOutput, + VkDisplayKHR * pDisplay ) const VULKAN_HPP_NOEXCEPT { - return ::vkQueueBeginDebugUtilsLabelEXT( queue, pLabelInfo ); + return ::vkGetRandROutputDisplayEXT( physicalDevice, dpy, rrOutput, pDisplay ); } +# endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - VkResult vkQueueBindSparse( VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence ) const + //=== VK_EXT_display_surface_counter === + + VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT( VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) const + VULKAN_HPP_NOEXCEPT { - return ::vkQueueBindSparse( queue, bindInfoCount, pBindInfo, fence ); + return ::vkGetPhysicalDeviceSurfaceCapabilities2EXT( physicalDevice, surface, pSurfaceCapabilities ); } - void vkQueueEndDebugUtilsLabelEXT( VkQueue queue ) const + //=== VK_EXT_display_control === + + VkResult vkDisplayPowerControlEXT( VkDevice device, + VkDisplayKHR display, + const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) const VULKAN_HPP_NOEXCEPT { - return ::vkQueueEndDebugUtilsLabelEXT( queue ); + return ::vkDisplayPowerControlEXT( device, display, pDisplayPowerInfo ); } - void vkQueueInsertDebugUtilsLabelEXT( VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo ) const + VkResult vkRegisterDeviceEventEXT( VkDevice device, + const VkDeviceEventInfoEXT * pDeviceEventInfo, + const VkAllocationCallbacks * pAllocator, + VkFence * pFence ) const VULKAN_HPP_NOEXCEPT { - return ::vkQueueInsertDebugUtilsLabelEXT( queue, pLabelInfo ); + return ::vkRegisterDeviceEventEXT( device, pDeviceEventInfo, pAllocator, pFence ); } - VkResult vkQueuePresentKHR( VkQueue queue, const VkPresentInfoKHR* pPresentInfo ) const + VkResult vkRegisterDisplayEventEXT( VkDevice device, + VkDisplayKHR display, + const VkDisplayEventInfoEXT * pDisplayEventInfo, + const VkAllocationCallbacks * pAllocator, + VkFence * pFence ) const VULKAN_HPP_NOEXCEPT { - return ::vkQueuePresentKHR( queue, pPresentInfo ); + return ::vkRegisterDisplayEventEXT( device, display, pDisplayEventInfo, pAllocator, pFence ); } - VkResult vkQueueSetPerformanceConfigurationINTEL( VkQueue queue, VkPerformanceConfigurationINTEL configuration ) const + VkResult vkGetSwapchainCounterEXT( VkDevice device, + VkSwapchainKHR swapchain, + VkSurfaceCounterFlagBitsEXT counter, + uint64_t * pCounterValue ) const VULKAN_HPP_NOEXCEPT { - return ::vkQueueSetPerformanceConfigurationINTEL( queue, configuration ); + return ::vkGetSwapchainCounterEXT( device, swapchain, counter, pCounterValue ); } - VkResult vkQueueSubmit( VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence ) const + //=== VK_GOOGLE_display_timing === + + VkResult vkGetRefreshCycleDurationGOOGLE( VkDevice device, + VkSwapchainKHR swapchain, + VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) const + VULKAN_HPP_NOEXCEPT { - return ::vkQueueSubmit( queue, submitCount, pSubmits, fence ); + return ::vkGetRefreshCycleDurationGOOGLE( device, swapchain, pDisplayTimingProperties ); } - VkResult vkQueueWaitIdle( VkQueue queue ) const + VkResult vkGetPastPresentationTimingGOOGLE( VkDevice device, + VkSwapchainKHR swapchain, + uint32_t * pPresentationTimingCount, + VkPastPresentationTimingGOOGLE * pPresentationTimings ) const + VULKAN_HPP_NOEXCEPT { - return ::vkQueueWaitIdle( queue ); + return ::vkGetPastPresentationTimingGOOGLE( device, swapchain, pPresentationTimingCount, pPresentationTimings ); } - }; - typedef DispatchLoaderStatic DispatchLoaderDefault; -#else // !defined(VK_NO_PROTOTYPES) - class NeedExplicitDispatchLoader; - typedef NeedExplicitDispatchLoader DispatchLoaderDefault; -#endif - - struct AllocationCallbacks; + //=== VK_EXT_discard_rectangles === - template - class ObjectDestroy - { - public: - ObjectDestroy( OwnerType owner = OwnerType(), Optional allocationCallbacks = nullptr, Dispatch const &dispatch = Dispatch() ) - : m_owner( owner ) - , m_allocationCallbacks( allocationCallbacks ) - , m_dispatch( &dispatch ) - {} + void vkCmdSetDiscardRectangleEXT( VkCommandBuffer commandBuffer, + uint32_t firstDiscardRectangle, + uint32_t discardRectangleCount, + const VkRect2D * pDiscardRectangles ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDiscardRectangleEXT( + commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles ); + } - OwnerType getOwner() const { return m_owner; } - Optional getAllocator() const { return m_allocationCallbacks; } + //=== VK_EXT_hdr_metadata === - protected: - template - void destroy(T t) - { - m_owner.destroy( t, m_allocationCallbacks, *m_dispatch ); - } + void vkSetHdrMetadataEXT( VkDevice device, + uint32_t swapchainCount, + const VkSwapchainKHR * pSwapchains, + const VkHdrMetadataEXT * pMetadata ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetHdrMetadataEXT( device, swapchainCount, pSwapchains, pMetadata ); + } - private: - OwnerType m_owner; - Optional m_allocationCallbacks; - Dispatch const* m_dispatch; - }; + //=== VK_KHR_create_renderpass2 === - class NoParent; + VkResult vkCreateRenderPass2KHR( VkDevice device, + const VkRenderPassCreateInfo2 * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkRenderPass * pRenderPass ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateRenderPass2KHR( device, pCreateInfo, pAllocator, pRenderPass ); + } - template - class ObjectDestroy - { - public: - ObjectDestroy( Optional allocationCallbacks = nullptr, Dispatch const &dispatch = Dispatch() ) - : m_allocationCallbacks( allocationCallbacks ) - , m_dispatch( &dispatch ) - {} + void vkCmdBeginRenderPass2KHR( VkCommandBuffer commandBuffer, + const VkRenderPassBeginInfo * pRenderPassBegin, + const VkSubpassBeginInfo * pSubpassBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginRenderPass2KHR( commandBuffer, pRenderPassBegin, pSubpassBeginInfo ); + } - Optional getAllocator() const { return m_allocationCallbacks; } + void vkCmdNextSubpass2KHR( VkCommandBuffer commandBuffer, + const VkSubpassBeginInfo * pSubpassBeginInfo, + const VkSubpassEndInfo * pSubpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdNextSubpass2KHR( commandBuffer, pSubpassBeginInfo, pSubpassEndInfo ); + } - protected: - template - void destroy(T t) - { - t.destroy( m_allocationCallbacks, *m_dispatch ); - } + void vkCmdEndRenderPass2KHR( VkCommandBuffer commandBuffer, + const VkSubpassEndInfo * pSubpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndRenderPass2KHR( commandBuffer, pSubpassEndInfo ); + } - private: - Optional m_allocationCallbacks; - Dispatch const* m_dispatch; - }; + //=== VK_KHR_shared_presentable_image === - template - class ObjectFree - { - public: - ObjectFree( OwnerType owner = OwnerType(), Optional allocationCallbacks = nullptr, Dispatch const &dispatch = Dispatch() ) - : m_owner( owner ) - , m_allocationCallbacks( allocationCallbacks ) - , m_dispatch( &dispatch ) - {} + VkResult vkGetSwapchainStatusKHR( VkDevice device, VkSwapchainKHR swapchain ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetSwapchainStatusKHR( device, swapchain ); + } - OwnerType getOwner() const { return m_owner; } - Optional getAllocator() const { return m_allocationCallbacks; } + //=== VK_KHR_external_fence_capabilities === - protected: - template - void destroy(T t) - { - m_owner.free( t, m_allocationCallbacks, *m_dispatch ); - } + void vkGetPhysicalDeviceExternalFencePropertiesKHR( VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo, + VkExternalFenceProperties * pExternalFenceProperties ) const + VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceExternalFencePropertiesKHR( + physicalDevice, pExternalFenceInfo, pExternalFenceProperties ); + } - private: - OwnerType m_owner; - Optional m_allocationCallbacks; - Dispatch const* m_dispatch; - }; +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === - template - class PoolFree - { - public: - PoolFree( OwnerType owner = OwnerType(), PoolType pool = PoolType(), Dispatch const &dispatch = Dispatch() ) - : m_owner( owner ) - , m_pool( pool ) - , m_dispatch( &dispatch ) - {} - - OwnerType getOwner() const { return m_owner; } - PoolType getPool() const { return m_pool; } - - protected: - template - void destroy(T t) - { - m_owner.free( m_pool, t, *m_dispatch ); - } - - private: - OwnerType m_owner; - PoolType m_pool; - Dispatch const* m_dispatch; - }; + VkResult vkImportFenceWin32HandleKHR( + VkDevice device, const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkImportFenceWin32HandleKHR( device, pImportFenceWin32HandleInfo ); + } - using Bool32 = uint32_t; - using DeviceAddress = uint64_t; - using DeviceSize = uint64_t; - using SampleMask = uint32_t; + VkResult vkGetFenceWin32HandleKHR( VkDevice device, + const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo, + HANDLE * pHandle ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetFenceWin32HandleKHR( device, pGetWin32HandleInfo, pHandle ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ - enum class AccelerationStructureMemoryRequirementsTypeNV - { - eObject = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV, - eBuildScratch = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV, - eUpdateScratch = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV - }; + //=== VK_KHR_external_fence_fd === - VULKAN_HPP_INLINE std::string to_string( AccelerationStructureMemoryRequirementsTypeNV value ) - { - switch ( value ) + VkResult vkImportFenceFdKHR( VkDevice device, + const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) const VULKAN_HPP_NOEXCEPT { - case AccelerationStructureMemoryRequirementsTypeNV::eObject : return "Object"; - case AccelerationStructureMemoryRequirementsTypeNV::eBuildScratch : return "BuildScratch"; - case AccelerationStructureMemoryRequirementsTypeNV::eUpdateScratch : return "UpdateScratch"; - default: return "invalid"; + return ::vkImportFenceFdKHR( device, pImportFenceFdInfo ); } - } - - enum class AccelerationStructureTypeNV - { - eTopLevel = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV, - eBottomLevel = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV - }; - VULKAN_HPP_INLINE std::string to_string( AccelerationStructureTypeNV value ) - { - switch ( value ) + VkResult + vkGetFenceFdKHR( VkDevice device, const VkFenceGetFdInfoKHR * pGetFdInfo, int * pFd ) const VULKAN_HPP_NOEXCEPT { - case AccelerationStructureTypeNV::eTopLevel : return "TopLevel"; - case AccelerationStructureTypeNV::eBottomLevel : return "BottomLevel"; - default: return "invalid"; + return ::vkGetFenceFdKHR( device, pGetFdInfo, pFd ); } - } - enum class AttachmentLoadOp - { - eLoad = VK_ATTACHMENT_LOAD_OP_LOAD, - eClear = VK_ATTACHMENT_LOAD_OP_CLEAR, - eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE - }; + //=== VK_KHR_performance_query === - VULKAN_HPP_INLINE std::string to_string( AttachmentLoadOp value ) - { - switch ( value ) + VkResult vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + uint32_t * pCounterCount, + VkPerformanceCounterKHR * pCounters, + VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) const VULKAN_HPP_NOEXCEPT { - case AttachmentLoadOp::eLoad : return "Load"; - case AttachmentLoadOp::eClear : return "Clear"; - case AttachmentLoadOp::eDontCare : return "DontCare"; - default: return "invalid"; + return ::vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions ); } - } - - enum class AttachmentStoreOp - { - eStore = VK_ATTACHMENT_STORE_OP_STORE, - eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE - }; - VULKAN_HPP_INLINE std::string to_string( AttachmentStoreOp value ) - { - switch ( value ) + void vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( + VkPhysicalDevice physicalDevice, + const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo, + uint32_t * pNumPasses ) const VULKAN_HPP_NOEXCEPT { - case AttachmentStoreOp::eStore : return "Store"; - case AttachmentStoreOp::eDontCare : return "DontCare"; - default: return "invalid"; + return ::vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( + physicalDevice, pPerformanceQueryCreateInfo, pNumPasses ); } - } - enum class BlendFactor - { - eZero = VK_BLEND_FACTOR_ZERO, - eOne = VK_BLEND_FACTOR_ONE, - eSrcColor = VK_BLEND_FACTOR_SRC_COLOR, - eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR, - eDstColor = VK_BLEND_FACTOR_DST_COLOR, - eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR, - eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA, - eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA, - eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA, - eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA, - eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR, - eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR, - eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA, - eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA, - eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE, - eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR, - eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, - eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA, - eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - }; - - VULKAN_HPP_INLINE std::string to_string( BlendFactor value ) - { - switch ( value ) - { - case BlendFactor::eZero : return "Zero"; - case BlendFactor::eOne : return "One"; - case BlendFactor::eSrcColor : return "SrcColor"; - case BlendFactor::eOneMinusSrcColor : return "OneMinusSrcColor"; - case BlendFactor::eDstColor : return "DstColor"; - case BlendFactor::eOneMinusDstColor : return "OneMinusDstColor"; - case BlendFactor::eSrcAlpha : return "SrcAlpha"; - case BlendFactor::eOneMinusSrcAlpha : return "OneMinusSrcAlpha"; - case BlendFactor::eDstAlpha : return "DstAlpha"; - case BlendFactor::eOneMinusDstAlpha : return "OneMinusDstAlpha"; - case BlendFactor::eConstantColor : return "ConstantColor"; - case BlendFactor::eOneMinusConstantColor : return "OneMinusConstantColor"; - case BlendFactor::eConstantAlpha : return "ConstantAlpha"; - case BlendFactor::eOneMinusConstantAlpha : return "OneMinusConstantAlpha"; - case BlendFactor::eSrcAlphaSaturate : return "SrcAlphaSaturate"; - case BlendFactor::eSrc1Color : return "Src1Color"; - case BlendFactor::eOneMinusSrc1Color : return "OneMinusSrc1Color"; - case BlendFactor::eSrc1Alpha : return "Src1Alpha"; - case BlendFactor::eOneMinusSrc1Alpha : return "OneMinusSrc1Alpha"; - default: return "invalid"; + VkResult vkAcquireProfilingLockKHR( VkDevice device, + const VkAcquireProfilingLockInfoKHR * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkAcquireProfilingLockKHR( device, pInfo ); } - } - enum class BlendOp - { - eAdd = VK_BLEND_OP_ADD, - eSubtract = VK_BLEND_OP_SUBTRACT, - eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT, - eMin = VK_BLEND_OP_MIN, - eMax = VK_BLEND_OP_MAX, - eZeroEXT = VK_BLEND_OP_ZERO_EXT, - eSrcEXT = VK_BLEND_OP_SRC_EXT, - eDstEXT = VK_BLEND_OP_DST_EXT, - eSrcOverEXT = VK_BLEND_OP_SRC_OVER_EXT, - eDstOverEXT = VK_BLEND_OP_DST_OVER_EXT, - eSrcInEXT = VK_BLEND_OP_SRC_IN_EXT, - eDstInEXT = VK_BLEND_OP_DST_IN_EXT, - eSrcOutEXT = VK_BLEND_OP_SRC_OUT_EXT, - eDstOutEXT = VK_BLEND_OP_DST_OUT_EXT, - eSrcAtopEXT = VK_BLEND_OP_SRC_ATOP_EXT, - eDstAtopEXT = VK_BLEND_OP_DST_ATOP_EXT, - eXorEXT = VK_BLEND_OP_XOR_EXT, - eMultiplyEXT = VK_BLEND_OP_MULTIPLY_EXT, - eScreenEXT = VK_BLEND_OP_SCREEN_EXT, - eOverlayEXT = VK_BLEND_OP_OVERLAY_EXT, - eDarkenEXT = VK_BLEND_OP_DARKEN_EXT, - eLightenEXT = VK_BLEND_OP_LIGHTEN_EXT, - eColordodgeEXT = VK_BLEND_OP_COLORDODGE_EXT, - eColorburnEXT = VK_BLEND_OP_COLORBURN_EXT, - eHardlightEXT = VK_BLEND_OP_HARDLIGHT_EXT, - eSoftlightEXT = VK_BLEND_OP_SOFTLIGHT_EXT, - eDifferenceEXT = VK_BLEND_OP_DIFFERENCE_EXT, - eExclusionEXT = VK_BLEND_OP_EXCLUSION_EXT, - eInvertEXT = VK_BLEND_OP_INVERT_EXT, - eInvertRgbEXT = VK_BLEND_OP_INVERT_RGB_EXT, - eLineardodgeEXT = VK_BLEND_OP_LINEARDODGE_EXT, - eLinearburnEXT = VK_BLEND_OP_LINEARBURN_EXT, - eVividlightEXT = VK_BLEND_OP_VIVIDLIGHT_EXT, - eLinearlightEXT = VK_BLEND_OP_LINEARLIGHT_EXT, - ePinlightEXT = VK_BLEND_OP_PINLIGHT_EXT, - eHardmixEXT = VK_BLEND_OP_HARDMIX_EXT, - eHslHueEXT = VK_BLEND_OP_HSL_HUE_EXT, - eHslSaturationEXT = VK_BLEND_OP_HSL_SATURATION_EXT, - eHslColorEXT = VK_BLEND_OP_HSL_COLOR_EXT, - eHslLuminosityEXT = VK_BLEND_OP_HSL_LUMINOSITY_EXT, - ePlusEXT = VK_BLEND_OP_PLUS_EXT, - ePlusClampedEXT = VK_BLEND_OP_PLUS_CLAMPED_EXT, - ePlusClampedAlphaEXT = VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT, - ePlusDarkerEXT = VK_BLEND_OP_PLUS_DARKER_EXT, - eMinusEXT = VK_BLEND_OP_MINUS_EXT, - eMinusClampedEXT = VK_BLEND_OP_MINUS_CLAMPED_EXT, - eContrastEXT = VK_BLEND_OP_CONTRAST_EXT, - eInvertOvgEXT = VK_BLEND_OP_INVERT_OVG_EXT, - eRedEXT = VK_BLEND_OP_RED_EXT, - eGreenEXT = VK_BLEND_OP_GREEN_EXT, - eBlueEXT = VK_BLEND_OP_BLUE_EXT - }; - - VULKAN_HPP_INLINE std::string to_string( BlendOp value ) - { - switch ( value ) - { - case BlendOp::eAdd : return "Add"; - case BlendOp::eSubtract : return "Subtract"; - case BlendOp::eReverseSubtract : return "ReverseSubtract"; - case BlendOp::eMin : return "Min"; - case BlendOp::eMax : return "Max"; - case BlendOp::eZeroEXT : return "ZeroEXT"; - case BlendOp::eSrcEXT : return "SrcEXT"; - case BlendOp::eDstEXT : return "DstEXT"; - case BlendOp::eSrcOverEXT : return "SrcOverEXT"; - case BlendOp::eDstOverEXT : return "DstOverEXT"; - case BlendOp::eSrcInEXT : return "SrcInEXT"; - case BlendOp::eDstInEXT : return "DstInEXT"; - case BlendOp::eSrcOutEXT : return "SrcOutEXT"; - case BlendOp::eDstOutEXT : return "DstOutEXT"; - case BlendOp::eSrcAtopEXT : return "SrcAtopEXT"; - case BlendOp::eDstAtopEXT : return "DstAtopEXT"; - case BlendOp::eXorEXT : return "XorEXT"; - case BlendOp::eMultiplyEXT : return "MultiplyEXT"; - case BlendOp::eScreenEXT : return "ScreenEXT"; - case BlendOp::eOverlayEXT : return "OverlayEXT"; - case BlendOp::eDarkenEXT : return "DarkenEXT"; - case BlendOp::eLightenEXT : return "LightenEXT"; - case BlendOp::eColordodgeEXT : return "ColordodgeEXT"; - case BlendOp::eColorburnEXT : return "ColorburnEXT"; - case BlendOp::eHardlightEXT : return "HardlightEXT"; - case BlendOp::eSoftlightEXT : return "SoftlightEXT"; - case BlendOp::eDifferenceEXT : return "DifferenceEXT"; - case BlendOp::eExclusionEXT : return "ExclusionEXT"; - case BlendOp::eInvertEXT : return "InvertEXT"; - case BlendOp::eInvertRgbEXT : return "InvertRgbEXT"; - case BlendOp::eLineardodgeEXT : return "LineardodgeEXT"; - case BlendOp::eLinearburnEXT : return "LinearburnEXT"; - case BlendOp::eVividlightEXT : return "VividlightEXT"; - case BlendOp::eLinearlightEXT : return "LinearlightEXT"; - case BlendOp::ePinlightEXT : return "PinlightEXT"; - case BlendOp::eHardmixEXT : return "HardmixEXT"; - case BlendOp::eHslHueEXT : return "HslHueEXT"; - case BlendOp::eHslSaturationEXT : return "HslSaturationEXT"; - case BlendOp::eHslColorEXT : return "HslColorEXT"; - case BlendOp::eHslLuminosityEXT : return "HslLuminosityEXT"; - case BlendOp::ePlusEXT : return "PlusEXT"; - case BlendOp::ePlusClampedEXT : return "PlusClampedEXT"; - case BlendOp::ePlusClampedAlphaEXT : return "PlusClampedAlphaEXT"; - case BlendOp::ePlusDarkerEXT : return "PlusDarkerEXT"; - case BlendOp::eMinusEXT : return "MinusEXT"; - case BlendOp::eMinusClampedEXT : return "MinusClampedEXT"; - case BlendOp::eContrastEXT : return "ContrastEXT"; - case BlendOp::eInvertOvgEXT : return "InvertOvgEXT"; - case BlendOp::eRedEXT : return "RedEXT"; - case BlendOp::eGreenEXT : return "GreenEXT"; - case BlendOp::eBlueEXT : return "BlueEXT"; - default: return "invalid"; + void vkReleaseProfilingLockKHR( VkDevice device ) const VULKAN_HPP_NOEXCEPT + { + return ::vkReleaseProfilingLockKHR( device ); } - } - enum class BlendOverlapEXT - { - eUncorrelated = VK_BLEND_OVERLAP_UNCORRELATED_EXT, - eDisjoint = VK_BLEND_OVERLAP_DISJOINT_EXT, - eConjoint = VK_BLEND_OVERLAP_CONJOINT_EXT - }; + //=== VK_KHR_get_surface_capabilities2 === - VULKAN_HPP_INLINE std::string to_string( BlendOverlapEXT value ) - { - switch ( value ) + VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR( VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo, + VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) const + VULKAN_HPP_NOEXCEPT { - case BlendOverlapEXT::eUncorrelated : return "Uncorrelated"; - case BlendOverlapEXT::eDisjoint : return "Disjoint"; - case BlendOverlapEXT::eConjoint : return "Conjoint"; - default: return "invalid"; + return ::vkGetPhysicalDeviceSurfaceCapabilities2KHR( physicalDevice, pSurfaceInfo, pSurfaceCapabilities ); } - } - - enum class BorderColor - { - eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK, - eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK, - eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK, - eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK, - eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE, - eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE - }; - VULKAN_HPP_INLINE std::string to_string( BorderColor value ) - { - switch ( value ) + VkResult vkGetPhysicalDeviceSurfaceFormats2KHR( VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo, + uint32_t * pSurfaceFormatCount, + VkSurfaceFormat2KHR * pSurfaceFormats ) const VULKAN_HPP_NOEXCEPT { - case BorderColor::eFloatTransparentBlack : return "FloatTransparentBlack"; - case BorderColor::eIntTransparentBlack : return "IntTransparentBlack"; - case BorderColor::eFloatOpaqueBlack : return "FloatOpaqueBlack"; - case BorderColor::eIntOpaqueBlack : return "IntOpaqueBlack"; - case BorderColor::eFloatOpaqueWhite : return "FloatOpaqueWhite"; - case BorderColor::eIntOpaqueWhite : return "IntOpaqueWhite"; - default: return "invalid"; + return ::vkGetPhysicalDeviceSurfaceFormats2KHR( + physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats ); } - } - enum class ChromaLocation - { - eCositedEven = VK_CHROMA_LOCATION_COSITED_EVEN, - eMidpoint = VK_CHROMA_LOCATION_MIDPOINT, - eCositedEvenKHR = VK_CHROMA_LOCATION_COSITED_EVEN_KHR, - eMidpointKHR = VK_CHROMA_LOCATION_MIDPOINT_KHR - }; + //=== VK_KHR_get_display_properties2 === - VULKAN_HPP_INLINE std::string to_string( ChromaLocation value ) - { - switch ( value ) + VkResult vkGetPhysicalDeviceDisplayProperties2KHR( VkPhysicalDevice physicalDevice, + uint32_t * pPropertyCount, + VkDisplayProperties2KHR * pProperties ) const VULKAN_HPP_NOEXCEPT { - case ChromaLocation::eCositedEven : return "CositedEven"; - case ChromaLocation::eMidpoint : return "Midpoint"; - default: return "invalid"; + return ::vkGetPhysicalDeviceDisplayProperties2KHR( physicalDevice, pPropertyCount, pProperties ); } - } - enum class CoarseSampleOrderTypeNV - { - eDefault = VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV, - eCustom = VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV, - ePixelMajor = VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV, - eSampleMajor = VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV - }; + VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR( VkPhysicalDevice physicalDevice, + uint32_t * pPropertyCount, + VkDisplayPlaneProperties2KHR * pProperties ) const + VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceDisplayPlaneProperties2KHR( physicalDevice, pPropertyCount, pProperties ); + } - VULKAN_HPP_INLINE std::string to_string( CoarseSampleOrderTypeNV value ) - { - switch ( value ) + VkResult vkGetDisplayModeProperties2KHR( VkPhysicalDevice physicalDevice, + VkDisplayKHR display, + uint32_t * pPropertyCount, + VkDisplayModeProperties2KHR * pProperties ) const VULKAN_HPP_NOEXCEPT { - case CoarseSampleOrderTypeNV::eDefault : return "Default"; - case CoarseSampleOrderTypeNV::eCustom : return "Custom"; - case CoarseSampleOrderTypeNV::ePixelMajor : return "PixelMajor"; - case CoarseSampleOrderTypeNV::eSampleMajor : return "SampleMajor"; - default: return "invalid"; + return ::vkGetDisplayModeProperties2KHR( physicalDevice, display, pPropertyCount, pProperties ); } - } - enum class ColorSpaceKHR - { - eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, - eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT, - eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT, - eDisplayP3LinearEXT = VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT, - eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT, - eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT, - eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT, - eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT, - eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT, - eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT, - eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT, - eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT, - eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT, - ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT, - eExtendedSrgbNonlinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT, - eDisplayNativeAMD = VK_COLOR_SPACE_DISPLAY_NATIVE_AMD, - eVkColorspaceSrgbNonlinear = VK_COLORSPACE_SRGB_NONLINEAR_KHR, - eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT - }; - - VULKAN_HPP_INLINE std::string to_string( ColorSpaceKHR value ) - { - switch ( value ) - { - case ColorSpaceKHR::eSrgbNonlinear : return "SrgbNonlinear"; - case ColorSpaceKHR::eDisplayP3NonlinearEXT : return "DisplayP3NonlinearEXT"; - case ColorSpaceKHR::eExtendedSrgbLinearEXT : return "ExtendedSrgbLinearEXT"; - case ColorSpaceKHR::eDisplayP3LinearEXT : return "DisplayP3LinearEXT"; - case ColorSpaceKHR::eDciP3NonlinearEXT : return "DciP3NonlinearEXT"; - case ColorSpaceKHR::eBt709LinearEXT : return "Bt709LinearEXT"; - case ColorSpaceKHR::eBt709NonlinearEXT : return "Bt709NonlinearEXT"; - case ColorSpaceKHR::eBt2020LinearEXT : return "Bt2020LinearEXT"; - case ColorSpaceKHR::eHdr10St2084EXT : return "Hdr10St2084EXT"; - case ColorSpaceKHR::eDolbyvisionEXT : return "DolbyvisionEXT"; - case ColorSpaceKHR::eHdr10HlgEXT : return "Hdr10HlgEXT"; - case ColorSpaceKHR::eAdobergbLinearEXT : return "AdobergbLinearEXT"; - case ColorSpaceKHR::eAdobergbNonlinearEXT : return "AdobergbNonlinearEXT"; - case ColorSpaceKHR::ePassThroughEXT : return "PassThroughEXT"; - case ColorSpaceKHR::eExtendedSrgbNonlinearEXT : return "ExtendedSrgbNonlinearEXT"; - case ColorSpaceKHR::eDisplayNativeAMD : return "DisplayNativeAMD"; - default: return "invalid"; + VkResult + vkGetDisplayPlaneCapabilities2KHR( VkPhysicalDevice physicalDevice, + const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo, + VkDisplayPlaneCapabilities2KHR * pCapabilities ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDisplayPlaneCapabilities2KHR( physicalDevice, pDisplayPlaneInfo, pCapabilities ); } - } - enum class CommandBufferLevel - { - ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY, - eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY - }; +# if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === - VULKAN_HPP_INLINE std::string to_string( CommandBufferLevel value ) - { - switch ( value ) + VkResult vkCreateIOSSurfaceMVK( VkInstance instance, + const VkIOSSurfaceCreateInfoMVK * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT { - case CommandBufferLevel::ePrimary : return "Primary"; - case CommandBufferLevel::eSecondary : return "Secondary"; - default: return "invalid"; + return ::vkCreateIOSSurfaceMVK( instance, pCreateInfo, pAllocator, pSurface ); } - } +# endif /*VK_USE_PLATFORM_IOS_MVK*/ - enum class CompareOp - { - eNever = VK_COMPARE_OP_NEVER, - eLess = VK_COMPARE_OP_LESS, - eEqual = VK_COMPARE_OP_EQUAL, - eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL, - eGreater = VK_COMPARE_OP_GREATER, - eNotEqual = VK_COMPARE_OP_NOT_EQUAL, - eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL, - eAlways = VK_COMPARE_OP_ALWAYS - }; +# if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === - VULKAN_HPP_INLINE std::string to_string( CompareOp value ) - { - switch ( value ) + VkResult vkCreateMacOSSurfaceMVK( VkInstance instance, + const VkMacOSSurfaceCreateInfoMVK * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT { - case CompareOp::eNever : return "Never"; - case CompareOp::eLess : return "Less"; - case CompareOp::eEqual : return "Equal"; - case CompareOp::eLessOrEqual : return "LessOrEqual"; - case CompareOp::eGreater : return "Greater"; - case CompareOp::eNotEqual : return "NotEqual"; - case CompareOp::eGreaterOrEqual : return "GreaterOrEqual"; - case CompareOp::eAlways : return "Always"; - default: return "invalid"; + return ::vkCreateMacOSSurfaceMVK( instance, pCreateInfo, pAllocator, pSurface ); } - } +# endif /*VK_USE_PLATFORM_MACOS_MVK*/ - enum class ComponentSwizzle - { - eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY, - eZero = VK_COMPONENT_SWIZZLE_ZERO, - eOne = VK_COMPONENT_SWIZZLE_ONE, - eR = VK_COMPONENT_SWIZZLE_R, - eG = VK_COMPONENT_SWIZZLE_G, - eB = VK_COMPONENT_SWIZZLE_B, - eA = VK_COMPONENT_SWIZZLE_A - }; + //=== VK_EXT_debug_utils === - VULKAN_HPP_INLINE std::string to_string( ComponentSwizzle value ) - { - switch ( value ) + VkResult vkSetDebugUtilsObjectNameEXT( VkDevice device, + const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) const VULKAN_HPP_NOEXCEPT { - case ComponentSwizzle::eIdentity : return "Identity"; - case ComponentSwizzle::eZero : return "Zero"; - case ComponentSwizzle::eOne : return "One"; - case ComponentSwizzle::eR : return "R"; - case ComponentSwizzle::eG : return "G"; - case ComponentSwizzle::eB : return "B"; - case ComponentSwizzle::eA : return "A"; - default: return "invalid"; + return ::vkSetDebugUtilsObjectNameEXT( device, pNameInfo ); } - } - enum class ComponentTypeNV - { - eFloat16 = VK_COMPONENT_TYPE_FLOAT16_NV, - eFloat32 = VK_COMPONENT_TYPE_FLOAT32_NV, - eFloat64 = VK_COMPONENT_TYPE_FLOAT64_NV, - eSint8 = VK_COMPONENT_TYPE_SINT8_NV, - eSint16 = VK_COMPONENT_TYPE_SINT16_NV, - eSint32 = VK_COMPONENT_TYPE_SINT32_NV, - eSint64 = VK_COMPONENT_TYPE_SINT64_NV, - eUint8 = VK_COMPONENT_TYPE_UINT8_NV, - eUint16 = VK_COMPONENT_TYPE_UINT16_NV, - eUint32 = VK_COMPONENT_TYPE_UINT32_NV, - eUint64 = VK_COMPONENT_TYPE_UINT64_NV - }; - - VULKAN_HPP_INLINE std::string to_string( ComponentTypeNV value ) - { - switch ( value ) - { - case ComponentTypeNV::eFloat16 : return "Float16"; - case ComponentTypeNV::eFloat32 : return "Float32"; - case ComponentTypeNV::eFloat64 : return "Float64"; - case ComponentTypeNV::eSint8 : return "Sint8"; - case ComponentTypeNV::eSint16 : return "Sint16"; - case ComponentTypeNV::eSint32 : return "Sint32"; - case ComponentTypeNV::eSint64 : return "Sint64"; - case ComponentTypeNV::eUint8 : return "Uint8"; - case ComponentTypeNV::eUint16 : return "Uint16"; - case ComponentTypeNV::eUint32 : return "Uint32"; - case ComponentTypeNV::eUint64 : return "Uint64"; - default: return "invalid"; + VkResult vkSetDebugUtilsObjectTagEXT( VkDevice device, + const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetDebugUtilsObjectTagEXT( device, pTagInfo ); } - } - - enum class ConservativeRasterizationModeEXT - { - eDisabled = VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT, - eOverestimate = VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, - eUnderestimate = VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT - }; - VULKAN_HPP_INLINE std::string to_string( ConservativeRasterizationModeEXT value ) - { - switch ( value ) + void vkQueueBeginDebugUtilsLabelEXT( VkQueue queue, + const VkDebugUtilsLabelEXT * pLabelInfo ) const VULKAN_HPP_NOEXCEPT { - case ConservativeRasterizationModeEXT::eDisabled : return "Disabled"; - case ConservativeRasterizationModeEXT::eOverestimate : return "Overestimate"; - case ConservativeRasterizationModeEXT::eUnderestimate : return "Underestimate"; - default: return "invalid"; + return ::vkQueueBeginDebugUtilsLabelEXT( queue, pLabelInfo ); } - } - enum class CopyAccelerationStructureModeNV - { - eClone = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV, - eCompact = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV - }; + void vkQueueEndDebugUtilsLabelEXT( VkQueue queue ) const VULKAN_HPP_NOEXCEPT + { + return ::vkQueueEndDebugUtilsLabelEXT( queue ); + } - VULKAN_HPP_INLINE std::string to_string( CopyAccelerationStructureModeNV value ) - { - switch ( value ) + void vkQueueInsertDebugUtilsLabelEXT( VkQueue queue, + const VkDebugUtilsLabelEXT * pLabelInfo ) const VULKAN_HPP_NOEXCEPT { - case CopyAccelerationStructureModeNV::eClone : return "Clone"; - case CopyAccelerationStructureModeNV::eCompact : return "Compact"; - default: return "invalid"; + return ::vkQueueInsertDebugUtilsLabelEXT( queue, pLabelInfo ); } - } - enum class CoverageModulationModeNV - { - eNone = VK_COVERAGE_MODULATION_MODE_NONE_NV, - eRgb = VK_COVERAGE_MODULATION_MODE_RGB_NV, - eAlpha = VK_COVERAGE_MODULATION_MODE_ALPHA_NV, - eRgba = VK_COVERAGE_MODULATION_MODE_RGBA_NV - }; + void vkCmdBeginDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, + const VkDebugUtilsLabelEXT * pLabelInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginDebugUtilsLabelEXT( commandBuffer, pLabelInfo ); + } - VULKAN_HPP_INLINE std::string to_string( CoverageModulationModeNV value ) - { - switch ( value ) + void vkCmdEndDebugUtilsLabelEXT( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT { - case CoverageModulationModeNV::eNone : return "None"; - case CoverageModulationModeNV::eRgb : return "Rgb"; - case CoverageModulationModeNV::eAlpha : return "Alpha"; - case CoverageModulationModeNV::eRgba : return "Rgba"; - default: return "invalid"; + return ::vkCmdEndDebugUtilsLabelEXT( commandBuffer ); } - } - enum class CoverageReductionModeNV - { - eMerge = VK_COVERAGE_REDUCTION_MODE_MERGE_NV, - eTruncate = VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV - }; + void vkCmdInsertDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, + const VkDebugUtilsLabelEXT * pLabelInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdInsertDebugUtilsLabelEXT( commandBuffer, pLabelInfo ); + } - VULKAN_HPP_INLINE std::string to_string( CoverageReductionModeNV value ) - { - switch ( value ) + VkResult vkCreateDebugUtilsMessengerEXT( VkInstance instance, + const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkDebugUtilsMessengerEXT * pMessenger ) const VULKAN_HPP_NOEXCEPT { - case CoverageReductionModeNV::eMerge : return "Merge"; - case CoverageReductionModeNV::eTruncate : return "Truncate"; - default: return "invalid"; + return ::vkCreateDebugUtilsMessengerEXT( instance, pCreateInfo, pAllocator, pMessenger ); } - } - enum class DebugReportObjectTypeEXT - { - eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, - eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT, - ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT, - eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, - eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT, - eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT, - eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, - eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, - eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, - eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, - eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, - eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT, - eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT, - eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT, - eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT, - eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT, - ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT, - ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT, - eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, - ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, - eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT, - eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT, - eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT, - eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, - eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT, - eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT, - eSurfaceKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT, - eSwapchainKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT, - eDebugReportCallbackEXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT, - eDisplayKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT, - eDisplayModeKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT, - eObjectTableNVX = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT, - eIndirectCommandsLayoutNVX = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT, - eValidationCacheEXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, - eSamplerYcbcrConversion = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT, - eDescriptorUpdateTemplate = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT, - eAccelerationStructureNV = VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT, - eDebugReport = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT, - eValidationCache = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT, - eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT, - eSamplerYcbcrConversionKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT - }; - - VULKAN_HPP_INLINE std::string to_string( DebugReportObjectTypeEXT value ) - { - switch ( value ) - { - case DebugReportObjectTypeEXT::eUnknown : return "Unknown"; - case DebugReportObjectTypeEXT::eInstance : return "Instance"; - case DebugReportObjectTypeEXT::ePhysicalDevice : return "PhysicalDevice"; - case DebugReportObjectTypeEXT::eDevice : return "Device"; - case DebugReportObjectTypeEXT::eQueue : return "Queue"; - case DebugReportObjectTypeEXT::eSemaphore : return "Semaphore"; - case DebugReportObjectTypeEXT::eCommandBuffer : return "CommandBuffer"; - case DebugReportObjectTypeEXT::eFence : return "Fence"; - case DebugReportObjectTypeEXT::eDeviceMemory : return "DeviceMemory"; - case DebugReportObjectTypeEXT::eBuffer : return "Buffer"; - case DebugReportObjectTypeEXT::eImage : return "Image"; - case DebugReportObjectTypeEXT::eEvent : return "Event"; - case DebugReportObjectTypeEXT::eQueryPool : return "QueryPool"; - case DebugReportObjectTypeEXT::eBufferView : return "BufferView"; - case DebugReportObjectTypeEXT::eImageView : return "ImageView"; - case DebugReportObjectTypeEXT::eShaderModule : return "ShaderModule"; - case DebugReportObjectTypeEXT::ePipelineCache : return "PipelineCache"; - case DebugReportObjectTypeEXT::ePipelineLayout : return "PipelineLayout"; - case DebugReportObjectTypeEXT::eRenderPass : return "RenderPass"; - case DebugReportObjectTypeEXT::ePipeline : return "Pipeline"; - case DebugReportObjectTypeEXT::eDescriptorSetLayout : return "DescriptorSetLayout"; - case DebugReportObjectTypeEXT::eSampler : return "Sampler"; - case DebugReportObjectTypeEXT::eDescriptorPool : return "DescriptorPool"; - case DebugReportObjectTypeEXT::eDescriptorSet : return "DescriptorSet"; - case DebugReportObjectTypeEXT::eFramebuffer : return "Framebuffer"; - case DebugReportObjectTypeEXT::eCommandPool : return "CommandPool"; - case DebugReportObjectTypeEXT::eSurfaceKHR : return "SurfaceKHR"; - case DebugReportObjectTypeEXT::eSwapchainKHR : return "SwapchainKHR"; - case DebugReportObjectTypeEXT::eDebugReportCallbackEXT : return "DebugReportCallbackEXT"; - case DebugReportObjectTypeEXT::eDisplayKHR : return "DisplayKHR"; - case DebugReportObjectTypeEXT::eDisplayModeKHR : return "DisplayModeKHR"; - case DebugReportObjectTypeEXT::eObjectTableNVX : return "ObjectTableNVX"; - case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNVX : return "IndirectCommandsLayoutNVX"; - case DebugReportObjectTypeEXT::eValidationCacheEXT : return "ValidationCacheEXT"; - case DebugReportObjectTypeEXT::eSamplerYcbcrConversion : return "SamplerYcbcrConversion"; - case DebugReportObjectTypeEXT::eDescriptorUpdateTemplate : return "DescriptorUpdateTemplate"; - case DebugReportObjectTypeEXT::eAccelerationStructureNV : return "AccelerationStructureNV"; - default: return "invalid"; + void vkDestroyDebugUtilsMessengerEXT( VkInstance instance, + VkDebugUtilsMessengerEXT messenger, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyDebugUtilsMessengerEXT( instance, messenger, pAllocator ); } - } - enum class DescriptorType - { - eSampler = VK_DESCRIPTOR_TYPE_SAMPLER, - eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, - eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, - eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, - eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, - eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, - eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, - eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, - eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, - eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, - eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, - eInlineUniformBlockEXT = VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT, - eAccelerationStructureNV = VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV - }; - - VULKAN_HPP_INLINE std::string to_string( DescriptorType value ) - { - switch ( value ) - { - case DescriptorType::eSampler : return "Sampler"; - case DescriptorType::eCombinedImageSampler : return "CombinedImageSampler"; - case DescriptorType::eSampledImage : return "SampledImage"; - case DescriptorType::eStorageImage : return "StorageImage"; - case DescriptorType::eUniformTexelBuffer : return "UniformTexelBuffer"; - case DescriptorType::eStorageTexelBuffer : return "StorageTexelBuffer"; - case DescriptorType::eUniformBuffer : return "UniformBuffer"; - case DescriptorType::eStorageBuffer : return "StorageBuffer"; - case DescriptorType::eUniformBufferDynamic : return "UniformBufferDynamic"; - case DescriptorType::eStorageBufferDynamic : return "StorageBufferDynamic"; - case DescriptorType::eInputAttachment : return "InputAttachment"; - case DescriptorType::eInlineUniformBlockEXT : return "InlineUniformBlockEXT"; - case DescriptorType::eAccelerationStructureNV : return "AccelerationStructureNV"; - default: return "invalid"; + void vkSubmitDebugUtilsMessageEXT( VkInstance instance, + VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VkDebugUtilsMessageTypeFlagsEXT messageTypes, + const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) const + VULKAN_HPP_NOEXCEPT + { + return ::vkSubmitDebugUtilsMessageEXT( instance, messageSeverity, messageTypes, pCallbackData ); } - } - enum class DescriptorUpdateTemplateType - { - eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, - ePushDescriptorsKHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR, - eDescriptorSetKHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR - }; +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === - VULKAN_HPP_INLINE std::string to_string( DescriptorUpdateTemplateType value ) - { - switch ( value ) + VkResult vkGetAndroidHardwareBufferPropertiesANDROID( VkDevice device, + const struct AHardwareBuffer * buffer, + VkAndroidHardwareBufferPropertiesANDROID * pProperties ) const + VULKAN_HPP_NOEXCEPT { - case DescriptorUpdateTemplateType::eDescriptorSet : return "DescriptorSet"; - case DescriptorUpdateTemplateType::ePushDescriptorsKHR : return "PushDescriptorsKHR"; - default: return "invalid"; + return ::vkGetAndroidHardwareBufferPropertiesANDROID( device, buffer, pProperties ); } - } - - enum class DeviceEventTypeEXT - { - eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT - }; - VULKAN_HPP_INLINE std::string to_string( DeviceEventTypeEXT value ) - { - switch ( value ) + VkResult vkGetMemoryAndroidHardwareBufferANDROID( VkDevice device, + const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo, + struct AHardwareBuffer ** pBuffer ) const VULKAN_HPP_NOEXCEPT { - case DeviceEventTypeEXT::eDisplayHotplug : return "DisplayHotplug"; - default: return "invalid"; + return ::vkGetMemoryAndroidHardwareBufferANDROID( device, pInfo, pBuffer ); } - } +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - enum class DiscardRectangleModeEXT - { - eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT, - eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT - }; + //=== VK_EXT_sample_locations === - VULKAN_HPP_INLINE std::string to_string( DiscardRectangleModeEXT value ) - { - switch ( value ) + void vkCmdSetSampleLocationsEXT( VkCommandBuffer commandBuffer, + const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) const VULKAN_HPP_NOEXCEPT { - case DiscardRectangleModeEXT::eInclusive : return "Inclusive"; - case DiscardRectangleModeEXT::eExclusive : return "Exclusive"; - default: return "invalid"; + return ::vkCmdSetSampleLocationsEXT( commandBuffer, pSampleLocationsInfo ); } - } - - enum class DisplayEventTypeEXT - { - eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT - }; - VULKAN_HPP_INLINE std::string to_string( DisplayEventTypeEXT value ) - { - switch ( value ) + void vkGetPhysicalDeviceMultisamplePropertiesEXT( VkPhysicalDevice physicalDevice, + VkSampleCountFlagBits samples, + VkMultisamplePropertiesEXT * pMultisampleProperties ) const + VULKAN_HPP_NOEXCEPT { - case DisplayEventTypeEXT::eFirstPixelOut : return "FirstPixelOut"; - default: return "invalid"; + return ::vkGetPhysicalDeviceMultisamplePropertiesEXT( physicalDevice, samples, pMultisampleProperties ); } - } - enum class DisplayPowerStateEXT - { - eOff = VK_DISPLAY_POWER_STATE_OFF_EXT, - eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT, - eOn = VK_DISPLAY_POWER_STATE_ON_EXT - }; + //=== VK_KHR_get_memory_requirements2 === - VULKAN_HPP_INLINE std::string to_string( DisplayPowerStateEXT value ) - { - switch ( value ) + void vkGetImageMemoryRequirements2KHR( VkDevice device, + const VkImageMemoryRequirementsInfo2 * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT { - case DisplayPowerStateEXT::eOff : return "Off"; - case DisplayPowerStateEXT::eSuspend : return "Suspend"; - case DisplayPowerStateEXT::eOn : return "On"; - default: return "invalid"; + return ::vkGetImageMemoryRequirements2KHR( device, pInfo, pMemoryRequirements ); } - } - enum class DriverIdKHR - { - eAmdProprietary = VK_DRIVER_ID_AMD_PROPRIETARY_KHR, - eAmdOpenSource = VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR, - eMesaRadv = VK_DRIVER_ID_MESA_RADV_KHR, - eNvidiaProprietary = VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR, - eIntelProprietaryWindows = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR, - eIntelOpenSourceMESA = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR, - eImaginationProprietary = VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR, - eQualcommProprietary = VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR, - eArmProprietary = VK_DRIVER_ID_ARM_PROPRIETARY_KHR, - eGoogleSwiftshader = VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR, - eGgpProprietary = VK_DRIVER_ID_GGP_PROPRIETARY_KHR, - eBroadcomProprietary = VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR - }; - - VULKAN_HPP_INLINE std::string to_string( DriverIdKHR value ) - { - switch ( value ) - { - case DriverIdKHR::eAmdProprietary : return "AmdProprietary"; - case DriverIdKHR::eAmdOpenSource : return "AmdOpenSource"; - case DriverIdKHR::eMesaRadv : return "MesaRadv"; - case DriverIdKHR::eNvidiaProprietary : return "NvidiaProprietary"; - case DriverIdKHR::eIntelProprietaryWindows : return "IntelProprietaryWindows"; - case DriverIdKHR::eIntelOpenSourceMESA : return "IntelOpenSourceMESA"; - case DriverIdKHR::eImaginationProprietary : return "ImaginationProprietary"; - case DriverIdKHR::eQualcommProprietary : return "QualcommProprietary"; - case DriverIdKHR::eArmProprietary : return "ArmProprietary"; - case DriverIdKHR::eGoogleSwiftshader : return "GoogleSwiftshader"; - case DriverIdKHR::eGgpProprietary : return "GgpProprietary"; - case DriverIdKHR::eBroadcomProprietary : return "BroadcomProprietary"; - default: return "invalid"; + void vkGetBufferMemoryRequirements2KHR( VkDevice device, + const VkBufferMemoryRequirementsInfo2 * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetBufferMemoryRequirements2KHR( device, pInfo, pMemoryRequirements ); } - } - enum class DynamicState - { - eViewport = VK_DYNAMIC_STATE_VIEWPORT, - eScissor = VK_DYNAMIC_STATE_SCISSOR, - eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH, - eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS, - eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS, - eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS, - eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK, - eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK, - eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE, - eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV, - eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT, - eSampleLocationsEXT = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, - eViewportShadingRatePaletteNV = VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV, - eViewportCoarseSampleOrderNV = VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV, - eExclusiveScissorNV = VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV, - eLineStippleEXT = VK_DYNAMIC_STATE_LINE_STIPPLE_EXT - }; - - VULKAN_HPP_INLINE std::string to_string( DynamicState value ) - { - switch ( value ) - { - case DynamicState::eViewport : return "Viewport"; - case DynamicState::eScissor : return "Scissor"; - case DynamicState::eLineWidth : return "LineWidth"; - case DynamicState::eDepthBias : return "DepthBias"; - case DynamicState::eBlendConstants : return "BlendConstants"; - case DynamicState::eDepthBounds : return "DepthBounds"; - case DynamicState::eStencilCompareMask : return "StencilCompareMask"; - case DynamicState::eStencilWriteMask : return "StencilWriteMask"; - case DynamicState::eStencilReference : return "StencilReference"; - case DynamicState::eViewportWScalingNV : return "ViewportWScalingNV"; - case DynamicState::eDiscardRectangleEXT : return "DiscardRectangleEXT"; - case DynamicState::eSampleLocationsEXT : return "SampleLocationsEXT"; - case DynamicState::eViewportShadingRatePaletteNV : return "ViewportShadingRatePaletteNV"; - case DynamicState::eViewportCoarseSampleOrderNV : return "ViewportCoarseSampleOrderNV"; - case DynamicState::eExclusiveScissorNV : return "ExclusiveScissorNV"; - case DynamicState::eLineStippleEXT : return "LineStippleEXT"; - default: return "invalid"; + void vkGetImageSparseMemoryRequirements2KHR( VkDevice device, + const VkImageSparseMemoryRequirementsInfo2 * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) const + VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageSparseMemoryRequirements2KHR( + device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); } - } - enum class Filter - { - eNearest = VK_FILTER_NEAREST, - eLinear = VK_FILTER_LINEAR, - eCubicIMG = VK_FILTER_CUBIC_IMG, - eCubicEXT = VK_FILTER_CUBIC_EXT - }; + //=== VK_KHR_acceleration_structure === - VULKAN_HPP_INLINE std::string to_string( Filter value ) - { - switch ( value ) + VkResult + vkCreateAccelerationStructureKHR( VkDevice device, + const VkAccelerationStructureCreateInfoKHR * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkAccelerationStructureKHR * pAccelerationStructure ) const VULKAN_HPP_NOEXCEPT { - case Filter::eNearest : return "Nearest"; - case Filter::eLinear : return "Linear"; - case Filter::eCubicIMG : return "CubicIMG"; - default: return "invalid"; + return ::vkCreateAccelerationStructureKHR( device, pCreateInfo, pAllocator, pAccelerationStructure ); } - } - enum class Format - { - eUndefined = VK_FORMAT_UNDEFINED, - eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8, - eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16, - eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16, - eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16, - eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16, - eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16, - eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16, - eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16, - eR8Unorm = VK_FORMAT_R8_UNORM, - eR8Snorm = VK_FORMAT_R8_SNORM, - eR8Uscaled = VK_FORMAT_R8_USCALED, - eR8Sscaled = VK_FORMAT_R8_SSCALED, - eR8Uint = VK_FORMAT_R8_UINT, - eR8Sint = VK_FORMAT_R8_SINT, - eR8Srgb = VK_FORMAT_R8_SRGB, - eR8G8Unorm = VK_FORMAT_R8G8_UNORM, - eR8G8Snorm = VK_FORMAT_R8G8_SNORM, - eR8G8Uscaled = VK_FORMAT_R8G8_USCALED, - eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED, - eR8G8Uint = VK_FORMAT_R8G8_UINT, - eR8G8Sint = VK_FORMAT_R8G8_SINT, - eR8G8Srgb = VK_FORMAT_R8G8_SRGB, - eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM, - eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM, - eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED, - eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED, - eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT, - eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT, - eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB, - eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM, - eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM, - eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED, - eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED, - eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT, - eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT, - eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB, - eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM, - eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM, - eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED, - eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED, - eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT, - eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT, - eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB, - eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM, - eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM, - eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED, - eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED, - eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT, - eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT, - eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB, - eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32, - eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32, - eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32, - eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32, - eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32, - eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32, - eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32, - eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32, - eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32, - eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32, - eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32, - eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32, - eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32, - eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32, - eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32, - eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32, - eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32, - eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32, - eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32, - eR16Unorm = VK_FORMAT_R16_UNORM, - eR16Snorm = VK_FORMAT_R16_SNORM, - eR16Uscaled = VK_FORMAT_R16_USCALED, - eR16Sscaled = VK_FORMAT_R16_SSCALED, - eR16Uint = VK_FORMAT_R16_UINT, - eR16Sint = VK_FORMAT_R16_SINT, - eR16Sfloat = VK_FORMAT_R16_SFLOAT, - eR16G16Unorm = VK_FORMAT_R16G16_UNORM, - eR16G16Snorm = VK_FORMAT_R16G16_SNORM, - eR16G16Uscaled = VK_FORMAT_R16G16_USCALED, - eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED, - eR16G16Uint = VK_FORMAT_R16G16_UINT, - eR16G16Sint = VK_FORMAT_R16G16_SINT, - eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT, - eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM, - eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM, - eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED, - eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED, - eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT, - eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT, - eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT, - eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM, - eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM, - eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED, - eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED, - eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT, - eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT, - eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT, - eR32Uint = VK_FORMAT_R32_UINT, - eR32Sint = VK_FORMAT_R32_SINT, - eR32Sfloat = VK_FORMAT_R32_SFLOAT, - eR32G32Uint = VK_FORMAT_R32G32_UINT, - eR32G32Sint = VK_FORMAT_R32G32_SINT, - eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT, - eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT, - eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT, - eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT, - eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT, - eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT, - eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT, - eR64Uint = VK_FORMAT_R64_UINT, - eR64Sint = VK_FORMAT_R64_SINT, - eR64Sfloat = VK_FORMAT_R64_SFLOAT, - eR64G64Uint = VK_FORMAT_R64G64_UINT, - eR64G64Sint = VK_FORMAT_R64G64_SINT, - eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT, - eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT, - eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT, - eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT, - eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT, - eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT, - eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT, - eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32, - eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, - eD16Unorm = VK_FORMAT_D16_UNORM, - eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32, - eD32Sfloat = VK_FORMAT_D32_SFLOAT, - eS8Uint = VK_FORMAT_S8_UINT, - eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT, - eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT, - eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT, - eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK, - eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK, - eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK, - eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK, - eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK, - eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK, - eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK, - eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK, - eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK, - eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK, - eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK, - eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK, - eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK, - eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK, - eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK, - eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK, - eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, - eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, - eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, - eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, - eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, - eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, - eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK, - eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK, - eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK, - eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK, - eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK, - eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK, - eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK, - eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK, - eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK, - eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK, - eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK, - eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK, - eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK, - eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK, - eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK, - eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK, - eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK, - eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK, - eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK, - eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK, - eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK, - eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK, - eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK, - eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK, - eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK, - eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK, - eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK, - eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK, - eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK, - eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK, - eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK, - eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK, - eG8B8G8R8422Unorm = VK_FORMAT_G8B8G8R8_422_UNORM, - eB8G8R8G8422Unorm = VK_FORMAT_B8G8R8G8_422_UNORM, - eG8B8R83Plane420Unorm = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, - eG8B8R82Plane420Unorm = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM, - eG8B8R83Plane422Unorm = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, - eG8B8R82Plane422Unorm = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM, - eG8B8R83Plane444Unorm = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, - eR10X6UnormPack16 = VK_FORMAT_R10X6_UNORM_PACK16, - eR10X6G10X6Unorm2Pack16 = VK_FORMAT_R10X6G10X6_UNORM_2PACK16, - eR10X6G10X6B10X6A10X6Unorm4Pack16 = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, - eG10X6B10X6G10X6R10X6422Unorm4Pack16 = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, - eB10X6G10X6R10X6G10X6422Unorm4Pack16 = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, - eG10X6B10X6R10X63Plane420Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, - eG10X6B10X6R10X62Plane420Unorm3Pack16 = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, - eG10X6B10X6R10X63Plane422Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, - eG10X6B10X6R10X62Plane422Unorm3Pack16 = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, - eG10X6B10X6R10X63Plane444Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, - eR12X4UnormPack16 = VK_FORMAT_R12X4_UNORM_PACK16, - eR12X4G12X4Unorm2Pack16 = VK_FORMAT_R12X4G12X4_UNORM_2PACK16, - eR12X4G12X4B12X4A12X4Unorm4Pack16 = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, - eG12X4B12X4G12X4R12X4422Unorm4Pack16 = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, - eB12X4G12X4R12X4G12X4422Unorm4Pack16 = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, - eG12X4B12X4R12X43Plane420Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, - eG12X4B12X4R12X42Plane420Unorm3Pack16 = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, - eG12X4B12X4R12X43Plane422Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, - eG12X4B12X4R12X42Plane422Unorm3Pack16 = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, - eG12X4B12X4R12X43Plane444Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, - eG16B16G16R16422Unorm = VK_FORMAT_G16B16G16R16_422_UNORM, - eB16G16R16G16422Unorm = VK_FORMAT_B16G16R16G16_422_UNORM, - eG16B16R163Plane420Unorm = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, - eG16B16R162Plane420Unorm = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM, - eG16B16R163Plane422Unorm = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, - eG16B16R162Plane422Unorm = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, - eG16B16R163Plane444Unorm = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, - ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG, - ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG, - ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG, - ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG, - ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG, - ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG, - ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG, - ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG, - eAstc4x4SfloatBlockEXT = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT, - eAstc5x4SfloatBlockEXT = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT, - eAstc5x5SfloatBlockEXT = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT, - eAstc6x5SfloatBlockEXT = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT, - eAstc6x6SfloatBlockEXT = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT, - eAstc8x5SfloatBlockEXT = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT, - eAstc8x6SfloatBlockEXT = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT, - eAstc8x8SfloatBlockEXT = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT, - eAstc10x5SfloatBlockEXT = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT, - eAstc10x6SfloatBlockEXT = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT, - eAstc10x8SfloatBlockEXT = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT, - eAstc10x10SfloatBlockEXT = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT, - eAstc12x10SfloatBlockEXT = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT, - eAstc12x12SfloatBlockEXT = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT, - eG8B8G8R8422UnormKHR = VK_FORMAT_G8B8G8R8_422_UNORM_KHR, - eB8G8R8G8422UnormKHR = VK_FORMAT_B8G8R8G8_422_UNORM_KHR, - eG8B8R83Plane420UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR, - eG8B8R82Plane420UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR, - eG8B8R83Plane422UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR, - eG8B8R82Plane422UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR, - eG8B8R83Plane444UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR, - eR10X6UnormPack16KHR = VK_FORMAT_R10X6_UNORM_PACK16_KHR, - eR10X6G10X6Unorm2Pack16KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR, - eR10X6G10X6B10X6A10X6Unorm4Pack16KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR, - eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR, - eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR, - eG10X6B10X6R10X63Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR, - eG10X6B10X6R10X62Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR, - eG10X6B10X6R10X63Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR, - eG10X6B10X6R10X62Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR, - eG10X6B10X6R10X63Plane444Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR, - eR12X4UnormPack16KHR = VK_FORMAT_R12X4_UNORM_PACK16_KHR, - eR12X4G12X4Unorm2Pack16KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR, - eR12X4G12X4B12X4A12X4Unorm4Pack16KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR, - eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR, - eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR, - eG12X4B12X4R12X43Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR, - eG12X4B12X4R12X42Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR, - eG12X4B12X4R12X43Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR, - eG12X4B12X4R12X42Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR, - eG12X4B12X4R12X43Plane444Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR, - eG16B16G16R16422UnormKHR = VK_FORMAT_G16B16G16R16_422_UNORM_KHR, - eB16G16R16G16422UnormKHR = VK_FORMAT_B16G16R16G16_422_UNORM_KHR, - eG16B16R163Plane420UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR, - eG16B16R162Plane420UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR, - eG16B16R163Plane422UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR, - eG16B16R162Plane422UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR, - eG16B16R163Plane444UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR - }; - - VULKAN_HPP_INLINE std::string to_string( Format value ) - { - switch ( value ) - { - case Format::eUndefined : return "Undefined"; - case Format::eR4G4UnormPack8 : return "R4G4UnormPack8"; - case Format::eR4G4B4A4UnormPack16 : return "R4G4B4A4UnormPack16"; - case Format::eB4G4R4A4UnormPack16 : return "B4G4R4A4UnormPack16"; - case Format::eR5G6B5UnormPack16 : return "R5G6B5UnormPack16"; - case Format::eB5G6R5UnormPack16 : return "B5G6R5UnormPack16"; - case Format::eR5G5B5A1UnormPack16 : return "R5G5B5A1UnormPack16"; - case Format::eB5G5R5A1UnormPack16 : return "B5G5R5A1UnormPack16"; - case Format::eA1R5G5B5UnormPack16 : return "A1R5G5B5UnormPack16"; - case Format::eR8Unorm : return "R8Unorm"; - case Format::eR8Snorm : return "R8Snorm"; - case Format::eR8Uscaled : return "R8Uscaled"; - case Format::eR8Sscaled : return "R8Sscaled"; - case Format::eR8Uint : return "R8Uint"; - case Format::eR8Sint : return "R8Sint"; - case Format::eR8Srgb : return "R8Srgb"; - case Format::eR8G8Unorm : return "R8G8Unorm"; - case Format::eR8G8Snorm : return "R8G8Snorm"; - case Format::eR8G8Uscaled : return "R8G8Uscaled"; - case Format::eR8G8Sscaled : return "R8G8Sscaled"; - case Format::eR8G8Uint : return "R8G8Uint"; - case Format::eR8G8Sint : return "R8G8Sint"; - case Format::eR8G8Srgb : return "R8G8Srgb"; - case Format::eR8G8B8Unorm : return "R8G8B8Unorm"; - case Format::eR8G8B8Snorm : return "R8G8B8Snorm"; - case Format::eR8G8B8Uscaled : return "R8G8B8Uscaled"; - case Format::eR8G8B8Sscaled : return "R8G8B8Sscaled"; - case Format::eR8G8B8Uint : return "R8G8B8Uint"; - case Format::eR8G8B8Sint : return "R8G8B8Sint"; - case Format::eR8G8B8Srgb : return "R8G8B8Srgb"; - case Format::eB8G8R8Unorm : return "B8G8R8Unorm"; - case Format::eB8G8R8Snorm : return "B8G8R8Snorm"; - case Format::eB8G8R8Uscaled : return "B8G8R8Uscaled"; - case Format::eB8G8R8Sscaled : return "B8G8R8Sscaled"; - case Format::eB8G8R8Uint : return "B8G8R8Uint"; - case Format::eB8G8R8Sint : return "B8G8R8Sint"; - case Format::eB8G8R8Srgb : return "B8G8R8Srgb"; - case Format::eR8G8B8A8Unorm : return "R8G8B8A8Unorm"; - case Format::eR8G8B8A8Snorm : return "R8G8B8A8Snorm"; - case Format::eR8G8B8A8Uscaled : return "R8G8B8A8Uscaled"; - case Format::eR8G8B8A8Sscaled : return "R8G8B8A8Sscaled"; - case Format::eR8G8B8A8Uint : return "R8G8B8A8Uint"; - case Format::eR8G8B8A8Sint : return "R8G8B8A8Sint"; - case Format::eR8G8B8A8Srgb : return "R8G8B8A8Srgb"; - case Format::eB8G8R8A8Unorm : return "B8G8R8A8Unorm"; - case Format::eB8G8R8A8Snorm : return "B8G8R8A8Snorm"; - case Format::eB8G8R8A8Uscaled : return "B8G8R8A8Uscaled"; - case Format::eB8G8R8A8Sscaled : return "B8G8R8A8Sscaled"; - case Format::eB8G8R8A8Uint : return "B8G8R8A8Uint"; - case Format::eB8G8R8A8Sint : return "B8G8R8A8Sint"; - case Format::eB8G8R8A8Srgb : return "B8G8R8A8Srgb"; - case Format::eA8B8G8R8UnormPack32 : return "A8B8G8R8UnormPack32"; - case Format::eA8B8G8R8SnormPack32 : return "A8B8G8R8SnormPack32"; - case Format::eA8B8G8R8UscaledPack32 : return "A8B8G8R8UscaledPack32"; - case Format::eA8B8G8R8SscaledPack32 : return "A8B8G8R8SscaledPack32"; - case Format::eA8B8G8R8UintPack32 : return "A8B8G8R8UintPack32"; - case Format::eA8B8G8R8SintPack32 : return "A8B8G8R8SintPack32"; - case Format::eA8B8G8R8SrgbPack32 : return "A8B8G8R8SrgbPack32"; - case Format::eA2R10G10B10UnormPack32 : return "A2R10G10B10UnormPack32"; - case Format::eA2R10G10B10SnormPack32 : return "A2R10G10B10SnormPack32"; - case Format::eA2R10G10B10UscaledPack32 : return "A2R10G10B10UscaledPack32"; - case Format::eA2R10G10B10SscaledPack32 : return "A2R10G10B10SscaledPack32"; - case Format::eA2R10G10B10UintPack32 : return "A2R10G10B10UintPack32"; - case Format::eA2R10G10B10SintPack32 : return "A2R10G10B10SintPack32"; - case Format::eA2B10G10R10UnormPack32 : return "A2B10G10R10UnormPack32"; - case Format::eA2B10G10R10SnormPack32 : return "A2B10G10R10SnormPack32"; - case Format::eA2B10G10R10UscaledPack32 : return "A2B10G10R10UscaledPack32"; - case Format::eA2B10G10R10SscaledPack32 : return "A2B10G10R10SscaledPack32"; - case Format::eA2B10G10R10UintPack32 : return "A2B10G10R10UintPack32"; - case Format::eA2B10G10R10SintPack32 : return "A2B10G10R10SintPack32"; - case Format::eR16Unorm : return "R16Unorm"; - case Format::eR16Snorm : return "R16Snorm"; - case Format::eR16Uscaled : return "R16Uscaled"; - case Format::eR16Sscaled : return "R16Sscaled"; - case Format::eR16Uint : return "R16Uint"; - case Format::eR16Sint : return "R16Sint"; - case Format::eR16Sfloat : return "R16Sfloat"; - case Format::eR16G16Unorm : return "R16G16Unorm"; - case Format::eR16G16Snorm : return "R16G16Snorm"; - case Format::eR16G16Uscaled : return "R16G16Uscaled"; - case Format::eR16G16Sscaled : return "R16G16Sscaled"; - case Format::eR16G16Uint : return "R16G16Uint"; - case Format::eR16G16Sint : return "R16G16Sint"; - case Format::eR16G16Sfloat : return "R16G16Sfloat"; - case Format::eR16G16B16Unorm : return "R16G16B16Unorm"; - case Format::eR16G16B16Snorm : return "R16G16B16Snorm"; - case Format::eR16G16B16Uscaled : return "R16G16B16Uscaled"; - case Format::eR16G16B16Sscaled : return "R16G16B16Sscaled"; - case Format::eR16G16B16Uint : return "R16G16B16Uint"; - case Format::eR16G16B16Sint : return "R16G16B16Sint"; - case Format::eR16G16B16Sfloat : return "R16G16B16Sfloat"; - case Format::eR16G16B16A16Unorm : return "R16G16B16A16Unorm"; - case Format::eR16G16B16A16Snorm : return "R16G16B16A16Snorm"; - case Format::eR16G16B16A16Uscaled : return "R16G16B16A16Uscaled"; - case Format::eR16G16B16A16Sscaled : return "R16G16B16A16Sscaled"; - case Format::eR16G16B16A16Uint : return "R16G16B16A16Uint"; - case Format::eR16G16B16A16Sint : return "R16G16B16A16Sint"; - case Format::eR16G16B16A16Sfloat : return "R16G16B16A16Sfloat"; - case Format::eR32Uint : return "R32Uint"; - case Format::eR32Sint : return "R32Sint"; - case Format::eR32Sfloat : return "R32Sfloat"; - case Format::eR32G32Uint : return "R32G32Uint"; - case Format::eR32G32Sint : return "R32G32Sint"; - case Format::eR32G32Sfloat : return "R32G32Sfloat"; - case Format::eR32G32B32Uint : return "R32G32B32Uint"; - case Format::eR32G32B32Sint : return "R32G32B32Sint"; - case Format::eR32G32B32Sfloat : return "R32G32B32Sfloat"; - case Format::eR32G32B32A32Uint : return "R32G32B32A32Uint"; - case Format::eR32G32B32A32Sint : return "R32G32B32A32Sint"; - case Format::eR32G32B32A32Sfloat : return "R32G32B32A32Sfloat"; - case Format::eR64Uint : return "R64Uint"; - case Format::eR64Sint : return "R64Sint"; - case Format::eR64Sfloat : return "R64Sfloat"; - case Format::eR64G64Uint : return "R64G64Uint"; - case Format::eR64G64Sint : return "R64G64Sint"; - case Format::eR64G64Sfloat : return "R64G64Sfloat"; - case Format::eR64G64B64Uint : return "R64G64B64Uint"; - case Format::eR64G64B64Sint : return "R64G64B64Sint"; - case Format::eR64G64B64Sfloat : return "R64G64B64Sfloat"; - case Format::eR64G64B64A64Uint : return "R64G64B64A64Uint"; - case Format::eR64G64B64A64Sint : return "R64G64B64A64Sint"; - case Format::eR64G64B64A64Sfloat : return "R64G64B64A64Sfloat"; - case Format::eB10G11R11UfloatPack32 : return "B10G11R11UfloatPack32"; - case Format::eE5B9G9R9UfloatPack32 : return "E5B9G9R9UfloatPack32"; - case Format::eD16Unorm : return "D16Unorm"; - case Format::eX8D24UnormPack32 : return "X8D24UnormPack32"; - case Format::eD32Sfloat : return "D32Sfloat"; - case Format::eS8Uint : return "S8Uint"; - case Format::eD16UnormS8Uint : return "D16UnormS8Uint"; - case Format::eD24UnormS8Uint : return "D24UnormS8Uint"; - case Format::eD32SfloatS8Uint : return "D32SfloatS8Uint"; - case Format::eBc1RgbUnormBlock : return "Bc1RgbUnormBlock"; - case Format::eBc1RgbSrgbBlock : return "Bc1RgbSrgbBlock"; - case Format::eBc1RgbaUnormBlock : return "Bc1RgbaUnormBlock"; - case Format::eBc1RgbaSrgbBlock : return "Bc1RgbaSrgbBlock"; - case Format::eBc2UnormBlock : return "Bc2UnormBlock"; - case Format::eBc2SrgbBlock : return "Bc2SrgbBlock"; - case Format::eBc3UnormBlock : return "Bc3UnormBlock"; - case Format::eBc3SrgbBlock : return "Bc3SrgbBlock"; - case Format::eBc4UnormBlock : return "Bc4UnormBlock"; - case Format::eBc4SnormBlock : return "Bc4SnormBlock"; - case Format::eBc5UnormBlock : return "Bc5UnormBlock"; - case Format::eBc5SnormBlock : return "Bc5SnormBlock"; - case Format::eBc6HUfloatBlock : return "Bc6HUfloatBlock"; - case Format::eBc6HSfloatBlock : return "Bc6HSfloatBlock"; - case Format::eBc7UnormBlock : return "Bc7UnormBlock"; - case Format::eBc7SrgbBlock : return "Bc7SrgbBlock"; - case Format::eEtc2R8G8B8UnormBlock : return "Etc2R8G8B8UnormBlock"; - case Format::eEtc2R8G8B8SrgbBlock : return "Etc2R8G8B8SrgbBlock"; - case Format::eEtc2R8G8B8A1UnormBlock : return "Etc2R8G8B8A1UnormBlock"; - case Format::eEtc2R8G8B8A1SrgbBlock : return "Etc2R8G8B8A1SrgbBlock"; - case Format::eEtc2R8G8B8A8UnormBlock : return "Etc2R8G8B8A8UnormBlock"; - case Format::eEtc2R8G8B8A8SrgbBlock : return "Etc2R8G8B8A8SrgbBlock"; - case Format::eEacR11UnormBlock : return "EacR11UnormBlock"; - case Format::eEacR11SnormBlock : return "EacR11SnormBlock"; - case Format::eEacR11G11UnormBlock : return "EacR11G11UnormBlock"; - case Format::eEacR11G11SnormBlock : return "EacR11G11SnormBlock"; - case Format::eAstc4x4UnormBlock : return "Astc4x4UnormBlock"; - case Format::eAstc4x4SrgbBlock : return "Astc4x4SrgbBlock"; - case Format::eAstc5x4UnormBlock : return "Astc5x4UnormBlock"; - case Format::eAstc5x4SrgbBlock : return "Astc5x4SrgbBlock"; - case Format::eAstc5x5UnormBlock : return "Astc5x5UnormBlock"; - case Format::eAstc5x5SrgbBlock : return "Astc5x5SrgbBlock"; - case Format::eAstc6x5UnormBlock : return "Astc6x5UnormBlock"; - case Format::eAstc6x5SrgbBlock : return "Astc6x5SrgbBlock"; - case Format::eAstc6x6UnormBlock : return "Astc6x6UnormBlock"; - case Format::eAstc6x6SrgbBlock : return "Astc6x6SrgbBlock"; - case Format::eAstc8x5UnormBlock : return "Astc8x5UnormBlock"; - case Format::eAstc8x5SrgbBlock : return "Astc8x5SrgbBlock"; - case Format::eAstc8x6UnormBlock : return "Astc8x6UnormBlock"; - case Format::eAstc8x6SrgbBlock : return "Astc8x6SrgbBlock"; - case Format::eAstc8x8UnormBlock : return "Astc8x8UnormBlock"; - case Format::eAstc8x8SrgbBlock : return "Astc8x8SrgbBlock"; - case Format::eAstc10x5UnormBlock : return "Astc10x5UnormBlock"; - case Format::eAstc10x5SrgbBlock : return "Astc10x5SrgbBlock"; - case Format::eAstc10x6UnormBlock : return "Astc10x6UnormBlock"; - case Format::eAstc10x6SrgbBlock : return "Astc10x6SrgbBlock"; - case Format::eAstc10x8UnormBlock : return "Astc10x8UnormBlock"; - case Format::eAstc10x8SrgbBlock : return "Astc10x8SrgbBlock"; - case Format::eAstc10x10UnormBlock : return "Astc10x10UnormBlock"; - case Format::eAstc10x10SrgbBlock : return "Astc10x10SrgbBlock"; - case Format::eAstc12x10UnormBlock : return "Astc12x10UnormBlock"; - case Format::eAstc12x10SrgbBlock : return "Astc12x10SrgbBlock"; - case Format::eAstc12x12UnormBlock : return "Astc12x12UnormBlock"; - case Format::eAstc12x12SrgbBlock : return "Astc12x12SrgbBlock"; - case Format::eG8B8G8R8422Unorm : return "G8B8G8R8422Unorm"; - case Format::eB8G8R8G8422Unorm : return "B8G8R8G8422Unorm"; - case Format::eG8B8R83Plane420Unorm : return "G8B8R83Plane420Unorm"; - case Format::eG8B8R82Plane420Unorm : return "G8B8R82Plane420Unorm"; - case Format::eG8B8R83Plane422Unorm : return "G8B8R83Plane422Unorm"; - case Format::eG8B8R82Plane422Unorm : return "G8B8R82Plane422Unorm"; - case Format::eG8B8R83Plane444Unorm : return "G8B8R83Plane444Unorm"; - case Format::eR10X6UnormPack16 : return "R10X6UnormPack16"; - case Format::eR10X6G10X6Unorm2Pack16 : return "R10X6G10X6Unorm2Pack16"; - case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16 : return "R10X6G10X6B10X6A10X6Unorm4Pack16"; - case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16 : return "G10X6B10X6G10X6R10X6422Unorm4Pack16"; - case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16 : return "B10X6G10X6R10X6G10X6422Unorm4Pack16"; - case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16 : return "G10X6B10X6R10X63Plane420Unorm3Pack16"; - case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16 : return "G10X6B10X6R10X62Plane420Unorm3Pack16"; - case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16 : return "G10X6B10X6R10X63Plane422Unorm3Pack16"; - case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16 : return "G10X6B10X6R10X62Plane422Unorm3Pack16"; - case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16 : return "G10X6B10X6R10X63Plane444Unorm3Pack16"; - case Format::eR12X4UnormPack16 : return "R12X4UnormPack16"; - case Format::eR12X4G12X4Unorm2Pack16 : return "R12X4G12X4Unorm2Pack16"; - case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16 : return "R12X4G12X4B12X4A12X4Unorm4Pack16"; - case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16 : return "G12X4B12X4G12X4R12X4422Unorm4Pack16"; - case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16 : return "B12X4G12X4R12X4G12X4422Unorm4Pack16"; - case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16 : return "G12X4B12X4R12X43Plane420Unorm3Pack16"; - case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16 : return "G12X4B12X4R12X42Plane420Unorm3Pack16"; - case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16 : return "G12X4B12X4R12X43Plane422Unorm3Pack16"; - case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16 : return "G12X4B12X4R12X42Plane422Unorm3Pack16"; - case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16 : return "G12X4B12X4R12X43Plane444Unorm3Pack16"; - case Format::eG16B16G16R16422Unorm : return "G16B16G16R16422Unorm"; - case Format::eB16G16R16G16422Unorm : return "B16G16R16G16422Unorm"; - case Format::eG16B16R163Plane420Unorm : return "G16B16R163Plane420Unorm"; - case Format::eG16B16R162Plane420Unorm : return "G16B16R162Plane420Unorm"; - case Format::eG16B16R163Plane422Unorm : return "G16B16R163Plane422Unorm"; - case Format::eG16B16R162Plane422Unorm : return "G16B16R162Plane422Unorm"; - case Format::eG16B16R163Plane444Unorm : return "G16B16R163Plane444Unorm"; - case Format::ePvrtc12BppUnormBlockIMG : return "Pvrtc12BppUnormBlockIMG"; - case Format::ePvrtc14BppUnormBlockIMG : return "Pvrtc14BppUnormBlockIMG"; - case Format::ePvrtc22BppUnormBlockIMG : return "Pvrtc22BppUnormBlockIMG"; - case Format::ePvrtc24BppUnormBlockIMG : return "Pvrtc24BppUnormBlockIMG"; - case Format::ePvrtc12BppSrgbBlockIMG : return "Pvrtc12BppSrgbBlockIMG"; - case Format::ePvrtc14BppSrgbBlockIMG : return "Pvrtc14BppSrgbBlockIMG"; - case Format::ePvrtc22BppSrgbBlockIMG : return "Pvrtc22BppSrgbBlockIMG"; - case Format::ePvrtc24BppSrgbBlockIMG : return "Pvrtc24BppSrgbBlockIMG"; - case Format::eAstc4x4SfloatBlockEXT : return "Astc4x4SfloatBlockEXT"; - case Format::eAstc5x4SfloatBlockEXT : return "Astc5x4SfloatBlockEXT"; - case Format::eAstc5x5SfloatBlockEXT : return "Astc5x5SfloatBlockEXT"; - case Format::eAstc6x5SfloatBlockEXT : return "Astc6x5SfloatBlockEXT"; - case Format::eAstc6x6SfloatBlockEXT : return "Astc6x6SfloatBlockEXT"; - case Format::eAstc8x5SfloatBlockEXT : return "Astc8x5SfloatBlockEXT"; - case Format::eAstc8x6SfloatBlockEXT : return "Astc8x6SfloatBlockEXT"; - case Format::eAstc8x8SfloatBlockEXT : return "Astc8x8SfloatBlockEXT"; - case Format::eAstc10x5SfloatBlockEXT : return "Astc10x5SfloatBlockEXT"; - case Format::eAstc10x6SfloatBlockEXT : return "Astc10x6SfloatBlockEXT"; - case Format::eAstc10x8SfloatBlockEXT : return "Astc10x8SfloatBlockEXT"; - case Format::eAstc10x10SfloatBlockEXT : return "Astc10x10SfloatBlockEXT"; - case Format::eAstc12x10SfloatBlockEXT : return "Astc12x10SfloatBlockEXT"; - case Format::eAstc12x12SfloatBlockEXT : return "Astc12x12SfloatBlockEXT"; - default: return "invalid"; + void vkDestroyAccelerationStructureKHR( VkDevice device, + VkAccelerationStructureKHR accelerationStructure, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyAccelerationStructureKHR( device, accelerationStructure, pAllocator ); } - } - enum class FrontFace - { - eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE, - eClockwise = VK_FRONT_FACE_CLOCKWISE - }; - - VULKAN_HPP_INLINE std::string to_string( FrontFace value ) - { - switch ( value ) + void vkCmdBuildAccelerationStructuresKHR( + VkCommandBuffer commandBuffer, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR * pInfos, + const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) const VULKAN_HPP_NOEXCEPT { - case FrontFace::eCounterClockwise : return "CounterClockwise"; - case FrontFace::eClockwise : return "Clockwise"; - default: return "invalid"; + return ::vkCmdBuildAccelerationStructuresKHR( commandBuffer, infoCount, pInfos, ppBuildRangeInfos ); } - } -#ifdef VK_USE_PLATFORM_WIN32_KHR - enum class FullScreenExclusiveEXT - { - eDefault = VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT, - eAllowed = VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT, - eDisallowed = VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT, - eApplicationControlled = VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT - }; + void vkCmdBuildAccelerationStructuresIndirectKHR( VkCommandBuffer commandBuffer, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR * pInfos, + const VkDeviceAddress * pIndirectDeviceAddresses, + const uint32_t * pIndirectStrides, + const uint32_t * const * ppMaxPrimitiveCounts ) const + VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBuildAccelerationStructuresIndirectKHR( + commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts ); + } - VULKAN_HPP_INLINE std::string to_string( FullScreenExclusiveEXT value ) - { - switch ( value ) + VkResult vkBuildAccelerationStructuresKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR * pInfos, + const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos ) const VULKAN_HPP_NOEXCEPT { - case FullScreenExclusiveEXT::eDefault : return "Default"; - case FullScreenExclusiveEXT::eAllowed : return "Allowed"; - case FullScreenExclusiveEXT::eDisallowed : return "Disallowed"; - case FullScreenExclusiveEXT::eApplicationControlled : return "ApplicationControlled"; - default: return "invalid"; + return ::vkBuildAccelerationStructuresKHR( device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos ); } - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - enum class GeometryTypeNV - { - eTriangles = VK_GEOMETRY_TYPE_TRIANGLES_NV, - eAabbs = VK_GEOMETRY_TYPE_AABBS_NV - }; + VkResult + vkCopyAccelerationStructureKHR( VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyAccelerationStructureInfoKHR * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCopyAccelerationStructureKHR( device, deferredOperation, pInfo ); + } - VULKAN_HPP_INLINE std::string to_string( GeometryTypeNV value ) - { - switch ( value ) + VkResult vkCopyAccelerationStructureToMemoryKHR( VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) const + VULKAN_HPP_NOEXCEPT { - case GeometryTypeNV::eTriangles : return "Triangles"; - case GeometryTypeNV::eAabbs : return "Aabbs"; - default: return "invalid"; + return ::vkCopyAccelerationStructureToMemoryKHR( device, deferredOperation, pInfo ); } - } - enum class ImageLayout - { - eUndefined = VK_IMAGE_LAYOUT_UNDEFINED, - eGeneral = VK_IMAGE_LAYOUT_GENERAL, - eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, - eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, - eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, - eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, - eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED, - eDepthReadOnlyStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, - eDepthAttachmentStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, - ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, - eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, - eShadingRateOptimalNV = VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV, - eFragmentDensityMapOptimalEXT = VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT, - eDepthReadOnlyStencilAttachmentOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR, - eDepthAttachmentStencilReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR - }; - - VULKAN_HPP_INLINE std::string to_string( ImageLayout value ) - { - switch ( value ) - { - case ImageLayout::eUndefined : return "Undefined"; - case ImageLayout::eGeneral : return "General"; - case ImageLayout::eColorAttachmentOptimal : return "ColorAttachmentOptimal"; - case ImageLayout::eDepthStencilAttachmentOptimal : return "DepthStencilAttachmentOptimal"; - case ImageLayout::eDepthStencilReadOnlyOptimal : return "DepthStencilReadOnlyOptimal"; - case ImageLayout::eShaderReadOnlyOptimal : return "ShaderReadOnlyOptimal"; - case ImageLayout::eTransferSrcOptimal : return "TransferSrcOptimal"; - case ImageLayout::eTransferDstOptimal : return "TransferDstOptimal"; - case ImageLayout::ePreinitialized : return "Preinitialized"; - case ImageLayout::eDepthReadOnlyStencilAttachmentOptimal : return "DepthReadOnlyStencilAttachmentOptimal"; - case ImageLayout::eDepthAttachmentStencilReadOnlyOptimal : return "DepthAttachmentStencilReadOnlyOptimal"; - case ImageLayout::ePresentSrcKHR : return "PresentSrcKHR"; - case ImageLayout::eSharedPresentKHR : return "SharedPresentKHR"; - case ImageLayout::eShadingRateOptimalNV : return "ShadingRateOptimalNV"; - case ImageLayout::eFragmentDensityMapOptimalEXT : return "FragmentDensityMapOptimalEXT"; - default: return "invalid"; + VkResult vkCopyMemoryToAccelerationStructureKHR( VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) const + VULKAN_HPP_NOEXCEPT + { + return ::vkCopyMemoryToAccelerationStructureKHR( device, deferredOperation, pInfo ); } - } - enum class ImageTiling - { - eOptimal = VK_IMAGE_TILING_OPTIMAL, - eLinear = VK_IMAGE_TILING_LINEAR, - eDrmFormatModifierEXT = VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT - }; + VkResult vkWriteAccelerationStructuresPropertiesKHR( VkDevice device, + uint32_t accelerationStructureCount, + const VkAccelerationStructureKHR * pAccelerationStructures, + VkQueryType queryType, + size_t dataSize, + void * pData, + size_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkWriteAccelerationStructuresPropertiesKHR( + device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride ); + } - VULKAN_HPP_INLINE std::string to_string( ImageTiling value ) - { - switch ( value ) + void vkCmdCopyAccelerationStructureKHR( VkCommandBuffer commandBuffer, + const VkCopyAccelerationStructureInfoKHR * pInfo ) const VULKAN_HPP_NOEXCEPT { - case ImageTiling::eOptimal : return "Optimal"; - case ImageTiling::eLinear : return "Linear"; - case ImageTiling::eDrmFormatModifierEXT : return "DrmFormatModifierEXT"; - default: return "invalid"; + return ::vkCmdCopyAccelerationStructureKHR( commandBuffer, pInfo ); } - } - enum class ImageType - { - e1D = VK_IMAGE_TYPE_1D, - e2D = VK_IMAGE_TYPE_2D, - e3D = VK_IMAGE_TYPE_3D - }; + void vkCmdCopyAccelerationStructureToMemoryKHR( VkCommandBuffer commandBuffer, + const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) const + VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyAccelerationStructureToMemoryKHR( commandBuffer, pInfo ); + } - VULKAN_HPP_INLINE std::string to_string( ImageType value ) - { - switch ( value ) + void vkCmdCopyMemoryToAccelerationStructureKHR( VkCommandBuffer commandBuffer, + const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) const + VULKAN_HPP_NOEXCEPT { - case ImageType::e1D : return "1D"; - case ImageType::e2D : return "2D"; - case ImageType::e3D : return "3D"; - default: return "invalid"; + return ::vkCmdCopyMemoryToAccelerationStructureKHR( commandBuffer, pInfo ); } - } - enum class ImageViewType - { - e1D = VK_IMAGE_VIEW_TYPE_1D, - e2D = VK_IMAGE_VIEW_TYPE_2D, - e3D = VK_IMAGE_VIEW_TYPE_3D, - eCube = VK_IMAGE_VIEW_TYPE_CUBE, - e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY, - e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY, - eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY - }; + VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR( + VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetAccelerationStructureDeviceAddressKHR( device, pInfo ); + } - VULKAN_HPP_INLINE std::string to_string( ImageViewType value ) - { - switch ( value ) + void vkCmdWriteAccelerationStructuresPropertiesKHR( VkCommandBuffer commandBuffer, + uint32_t accelerationStructureCount, + const VkAccelerationStructureKHR * pAccelerationStructures, + VkQueryType queryType, + VkQueryPool queryPool, + uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT { - case ImageViewType::e1D : return "1D"; - case ImageViewType::e2D : return "2D"; - case ImageViewType::e3D : return "3D"; - case ImageViewType::eCube : return "Cube"; - case ImageViewType::e1DArray : return "1DArray"; - case ImageViewType::e2DArray : return "2DArray"; - case ImageViewType::eCubeArray : return "CubeArray"; - default: return "invalid"; + return ::vkCmdWriteAccelerationStructuresPropertiesKHR( + commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery ); } - } - enum class IndexType - { - eUint16 = VK_INDEX_TYPE_UINT16, - eUint32 = VK_INDEX_TYPE_UINT32, - eNoneNV = VK_INDEX_TYPE_NONE_NV, - eUint8EXT = VK_INDEX_TYPE_UINT8_EXT - }; + void vkGetDeviceAccelerationStructureCompatibilityKHR( + VkDevice device, + const VkAccelerationStructureVersionInfoKHR * pVersionInfo, + VkAccelerationStructureCompatibilityKHR * pCompatibility ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceAccelerationStructureCompatibilityKHR( device, pVersionInfo, pCompatibility ); + } - VULKAN_HPP_INLINE std::string to_string( IndexType value ) - { - switch ( value ) + void vkGetAccelerationStructureBuildSizesKHR( VkDevice device, + VkAccelerationStructureBuildTypeKHR buildType, + const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo, + const uint32_t * pMaxPrimitiveCounts, + VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) const + VULKAN_HPP_NOEXCEPT { - case IndexType::eUint16 : return "Uint16"; - case IndexType::eUint32 : return "Uint32"; - case IndexType::eNoneNV : return "NoneNV"; - case IndexType::eUint8EXT : return "Uint8EXT"; - default: return "invalid"; + return ::vkGetAccelerationStructureBuildSizesKHR( device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo ); } - } - enum class IndirectCommandsTokenTypeNVX - { - ePipeline = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX, - eDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX, - eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX, - eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX, - ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX, - eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX, - eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX, - eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX - }; + //=== VK_KHR_sampler_ycbcr_conversion === - VULKAN_HPP_INLINE std::string to_string( IndirectCommandsTokenTypeNVX value ) - { - switch ( value ) + VkResult vkCreateSamplerYcbcrConversionKHR( VkDevice device, + const VkSamplerYcbcrConversionCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSamplerYcbcrConversion * pYcbcrConversion ) const VULKAN_HPP_NOEXCEPT { - case IndirectCommandsTokenTypeNVX::ePipeline : return "Pipeline"; - case IndirectCommandsTokenTypeNVX::eDescriptorSet : return "DescriptorSet"; - case IndirectCommandsTokenTypeNVX::eIndexBuffer : return "IndexBuffer"; - case IndirectCommandsTokenTypeNVX::eVertexBuffer : return "VertexBuffer"; - case IndirectCommandsTokenTypeNVX::ePushConstant : return "PushConstant"; - case IndirectCommandsTokenTypeNVX::eDrawIndexed : return "DrawIndexed"; - case IndirectCommandsTokenTypeNVX::eDraw : return "Draw"; - case IndirectCommandsTokenTypeNVX::eDispatch : return "Dispatch"; - default: return "invalid"; + return ::vkCreateSamplerYcbcrConversionKHR( device, pCreateInfo, pAllocator, pYcbcrConversion ); } - } - - enum class InternalAllocationType - { - eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE - }; - VULKAN_HPP_INLINE std::string to_string( InternalAllocationType value ) - { - switch ( value ) + void vkDestroySamplerYcbcrConversionKHR( VkDevice device, + VkSamplerYcbcrConversion ycbcrConversion, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - case InternalAllocationType::eExecutable : return "Executable"; - default: return "invalid"; + return ::vkDestroySamplerYcbcrConversionKHR( device, ycbcrConversion, pAllocator ); } - } - enum class LineRasterizationModeEXT - { - eDefault = VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT, - eRectangular = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT, - eBresenham = VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT, - eRectangularSmooth = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT - }; + //=== VK_KHR_bind_memory2 === - VULKAN_HPP_INLINE std::string to_string( LineRasterizationModeEXT value ) - { - switch ( value ) + VkResult vkBindBufferMemory2KHR( VkDevice device, + uint32_t bindInfoCount, + const VkBindBufferMemoryInfo * pBindInfos ) const VULKAN_HPP_NOEXCEPT { - case LineRasterizationModeEXT::eDefault : return "Default"; - case LineRasterizationModeEXT::eRectangular : return "Rectangular"; - case LineRasterizationModeEXT::eBresenham : return "Bresenham"; - case LineRasterizationModeEXT::eRectangularSmooth : return "RectangularSmooth"; - default: return "invalid"; + return ::vkBindBufferMemory2KHR( device, bindInfoCount, pBindInfos ); } - } - enum class LogicOp - { - eClear = VK_LOGIC_OP_CLEAR, - eAnd = VK_LOGIC_OP_AND, - eAndReverse = VK_LOGIC_OP_AND_REVERSE, - eCopy = VK_LOGIC_OP_COPY, - eAndInverted = VK_LOGIC_OP_AND_INVERTED, - eNoOp = VK_LOGIC_OP_NO_OP, - eXor = VK_LOGIC_OP_XOR, - eOr = VK_LOGIC_OP_OR, - eNor = VK_LOGIC_OP_NOR, - eEquivalent = VK_LOGIC_OP_EQUIVALENT, - eInvert = VK_LOGIC_OP_INVERT, - eOrReverse = VK_LOGIC_OP_OR_REVERSE, - eCopyInverted = VK_LOGIC_OP_COPY_INVERTED, - eOrInverted = VK_LOGIC_OP_OR_INVERTED, - eNand = VK_LOGIC_OP_NAND, - eSet = VK_LOGIC_OP_SET - }; - - VULKAN_HPP_INLINE std::string to_string( LogicOp value ) - { - switch ( value ) - { - case LogicOp::eClear : return "Clear"; - case LogicOp::eAnd : return "And"; - case LogicOp::eAndReverse : return "AndReverse"; - case LogicOp::eCopy : return "Copy"; - case LogicOp::eAndInverted : return "AndInverted"; - case LogicOp::eNoOp : return "NoOp"; - case LogicOp::eXor : return "Xor"; - case LogicOp::eOr : return "Or"; - case LogicOp::eNor : return "Nor"; - case LogicOp::eEquivalent : return "Equivalent"; - case LogicOp::eInvert : return "Invert"; - case LogicOp::eOrReverse : return "OrReverse"; - case LogicOp::eCopyInverted : return "CopyInverted"; - case LogicOp::eOrInverted : return "OrInverted"; - case LogicOp::eNand : return "Nand"; - case LogicOp::eSet : return "Set"; - default: return "invalid"; + VkResult vkBindImageMemory2KHR( VkDevice device, + uint32_t bindInfoCount, + const VkBindImageMemoryInfo * pBindInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkBindImageMemory2KHR( device, bindInfoCount, pBindInfos ); } - } - enum class MemoryOverallocationBehaviorAMD - { - eDefault = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD, - eAllowed = VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD, - eDisallowed = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD - }; + //=== VK_EXT_image_drm_format_modifier === - VULKAN_HPP_INLINE std::string to_string( MemoryOverallocationBehaviorAMD value ) - { - switch ( value ) + VkResult vkGetImageDrmFormatModifierPropertiesEXT( + VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT * pProperties ) const VULKAN_HPP_NOEXCEPT { - case MemoryOverallocationBehaviorAMD::eDefault : return "Default"; - case MemoryOverallocationBehaviorAMD::eAllowed : return "Allowed"; - case MemoryOverallocationBehaviorAMD::eDisallowed : return "Disallowed"; - default: return "invalid"; + return ::vkGetImageDrmFormatModifierPropertiesEXT( device, image, pProperties ); } - } - enum class ObjectEntryTypeNVX - { - eDescriptorSet = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX, - ePipeline = VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX, - eIndexBuffer = VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX, - eVertexBuffer = VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX, - ePushConstant = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX - }; + //=== VK_EXT_validation_cache === - VULKAN_HPP_INLINE std::string to_string( ObjectEntryTypeNVX value ) - { - switch ( value ) + VkResult vkCreateValidationCacheEXT( VkDevice device, + const VkValidationCacheCreateInfoEXT * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkValidationCacheEXT * pValidationCache ) const VULKAN_HPP_NOEXCEPT { - case ObjectEntryTypeNVX::eDescriptorSet : return "DescriptorSet"; - case ObjectEntryTypeNVX::ePipeline : return "Pipeline"; - case ObjectEntryTypeNVX::eIndexBuffer : return "IndexBuffer"; - case ObjectEntryTypeNVX::eVertexBuffer : return "VertexBuffer"; - case ObjectEntryTypeNVX::ePushConstant : return "PushConstant"; - default: return "invalid"; + return ::vkCreateValidationCacheEXT( device, pCreateInfo, pAllocator, pValidationCache ); } - } - enum class ObjectType - { - eUnknown = VK_OBJECT_TYPE_UNKNOWN, - eInstance = VK_OBJECT_TYPE_INSTANCE, - ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE, - eDevice = VK_OBJECT_TYPE_DEVICE, - eQueue = VK_OBJECT_TYPE_QUEUE, - eSemaphore = VK_OBJECT_TYPE_SEMAPHORE, - eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER, - eFence = VK_OBJECT_TYPE_FENCE, - eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY, - eBuffer = VK_OBJECT_TYPE_BUFFER, - eImage = VK_OBJECT_TYPE_IMAGE, - eEvent = VK_OBJECT_TYPE_EVENT, - eQueryPool = VK_OBJECT_TYPE_QUERY_POOL, - eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW, - eImageView = VK_OBJECT_TYPE_IMAGE_VIEW, - eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE, - ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE, - ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT, - eRenderPass = VK_OBJECT_TYPE_RENDER_PASS, - ePipeline = VK_OBJECT_TYPE_PIPELINE, - eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT, - eSampler = VK_OBJECT_TYPE_SAMPLER, - eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL, - eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET, - eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER, - eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL, - eSamplerYcbcrConversion = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, - eDescriptorUpdateTemplate = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, - eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR, - eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR, - eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR, - eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR, - eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT, - eObjectTableNVX = VK_OBJECT_TYPE_OBJECT_TABLE_NVX, - eIndirectCommandsLayoutNVX = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX, - eDebugUtilsMessengerEXT = VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT, - eValidationCacheEXT = VK_OBJECT_TYPE_VALIDATION_CACHE_EXT, - eAccelerationStructureNV = VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV, - ePerformanceConfigurationINTEL = VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL, - eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR, - eSamplerYcbcrConversionKHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR - }; - - VULKAN_HPP_INLINE std::string to_string( ObjectType value ) - { - switch ( value ) - { - case ObjectType::eUnknown : return "Unknown"; - case ObjectType::eInstance : return "Instance"; - case ObjectType::ePhysicalDevice : return "PhysicalDevice"; - case ObjectType::eDevice : return "Device"; - case ObjectType::eQueue : return "Queue"; - case ObjectType::eSemaphore : return "Semaphore"; - case ObjectType::eCommandBuffer : return "CommandBuffer"; - case ObjectType::eFence : return "Fence"; - case ObjectType::eDeviceMemory : return "DeviceMemory"; - case ObjectType::eBuffer : return "Buffer"; - case ObjectType::eImage : return "Image"; - case ObjectType::eEvent : return "Event"; - case ObjectType::eQueryPool : return "QueryPool"; - case ObjectType::eBufferView : return "BufferView"; - case ObjectType::eImageView : return "ImageView"; - case ObjectType::eShaderModule : return "ShaderModule"; - case ObjectType::ePipelineCache : return "PipelineCache"; - case ObjectType::ePipelineLayout : return "PipelineLayout"; - case ObjectType::eRenderPass : return "RenderPass"; - case ObjectType::ePipeline : return "Pipeline"; - case ObjectType::eDescriptorSetLayout : return "DescriptorSetLayout"; - case ObjectType::eSampler : return "Sampler"; - case ObjectType::eDescriptorPool : return "DescriptorPool"; - case ObjectType::eDescriptorSet : return "DescriptorSet"; - case ObjectType::eFramebuffer : return "Framebuffer"; - case ObjectType::eCommandPool : return "CommandPool"; - case ObjectType::eSamplerYcbcrConversion : return "SamplerYcbcrConversion"; - case ObjectType::eDescriptorUpdateTemplate : return "DescriptorUpdateTemplate"; - case ObjectType::eSurfaceKHR : return "SurfaceKHR"; - case ObjectType::eSwapchainKHR : return "SwapchainKHR"; - case ObjectType::eDisplayKHR : return "DisplayKHR"; - case ObjectType::eDisplayModeKHR : return "DisplayModeKHR"; - case ObjectType::eDebugReportCallbackEXT : return "DebugReportCallbackEXT"; - case ObjectType::eObjectTableNVX : return "ObjectTableNVX"; - case ObjectType::eIndirectCommandsLayoutNVX : return "IndirectCommandsLayoutNVX"; - case ObjectType::eDebugUtilsMessengerEXT : return "DebugUtilsMessengerEXT"; - case ObjectType::eValidationCacheEXT : return "ValidationCacheEXT"; - case ObjectType::eAccelerationStructureNV : return "AccelerationStructureNV"; - case ObjectType::ePerformanceConfigurationINTEL : return "PerformanceConfigurationINTEL"; - default: return "invalid"; + void vkDestroyValidationCacheEXT( VkDevice device, + VkValidationCacheEXT validationCache, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyValidationCacheEXT( device, validationCache, pAllocator ); } - } - enum class PerformanceConfigurationTypeINTEL - { - eCommandQueueMetricsDiscoveryActivated = VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL - }; + VkResult vkMergeValidationCachesEXT( VkDevice device, + VkValidationCacheEXT dstCache, + uint32_t srcCacheCount, + const VkValidationCacheEXT * pSrcCaches ) const VULKAN_HPP_NOEXCEPT + { + return ::vkMergeValidationCachesEXT( device, dstCache, srcCacheCount, pSrcCaches ); + } - VULKAN_HPP_INLINE std::string to_string( PerformanceConfigurationTypeINTEL value ) - { - switch ( value ) + VkResult vkGetValidationCacheDataEXT( VkDevice device, + VkValidationCacheEXT validationCache, + size_t * pDataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT { - case PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated : return "CommandQueueMetricsDiscoveryActivated"; - default: return "invalid"; + return ::vkGetValidationCacheDataEXT( device, validationCache, pDataSize, pData ); } - } - enum class PerformanceOverrideTypeINTEL - { - eNullHardware = VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL, - eFlushGpuCaches = VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL - }; + //=== VK_NV_shading_rate_image === - VULKAN_HPP_INLINE std::string to_string( PerformanceOverrideTypeINTEL value ) - { - switch ( value ) + void vkCmdBindShadingRateImageNV( VkCommandBuffer commandBuffer, + VkImageView imageView, + VkImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT { - case PerformanceOverrideTypeINTEL::eNullHardware : return "NullHardware"; - case PerformanceOverrideTypeINTEL::eFlushGpuCaches : return "FlushGpuCaches"; - default: return "invalid"; + return ::vkCmdBindShadingRateImageNV( commandBuffer, imageView, imageLayout ); } - } - enum class PerformanceParameterTypeINTEL - { - eHwCountersSupported = VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL, - eStreamMarkerValidBits = VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL - }; + void vkCmdSetViewportShadingRatePaletteNV( VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + const VkShadingRatePaletteNV * pShadingRatePalettes ) const + VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetViewportShadingRatePaletteNV( + commandBuffer, firstViewport, viewportCount, pShadingRatePalettes ); + } - VULKAN_HPP_INLINE std::string to_string( PerformanceParameterTypeINTEL value ) - { - switch ( value ) + void + vkCmdSetCoarseSampleOrderNV( VkCommandBuffer commandBuffer, + VkCoarseSampleOrderTypeNV sampleOrderType, + uint32_t customSampleOrderCount, + const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) const VULKAN_HPP_NOEXCEPT { - case PerformanceParameterTypeINTEL::eHwCountersSupported : return "HwCountersSupported"; - case PerformanceParameterTypeINTEL::eStreamMarkerValidBits : return "StreamMarkerValidBits"; - default: return "invalid"; + return ::vkCmdSetCoarseSampleOrderNV( + commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders ); } - } - enum class PerformanceValueTypeINTEL - { - eUint32 = VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL, - eUint64 = VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL, - eFloat = VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL, - eBool = VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL, - eString = VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL - }; + //=== VK_NV_ray_tracing === - VULKAN_HPP_INLINE std::string to_string( PerformanceValueTypeINTEL value ) - { - switch ( value ) + VkResult + vkCreateAccelerationStructureNV( VkDevice device, + const VkAccelerationStructureCreateInfoNV * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkAccelerationStructureNV * pAccelerationStructure ) const VULKAN_HPP_NOEXCEPT { - case PerformanceValueTypeINTEL::eUint32 : return "Uint32"; - case PerformanceValueTypeINTEL::eUint64 : return "Uint64"; - case PerformanceValueTypeINTEL::eFloat : return "Float"; - case PerformanceValueTypeINTEL::eBool : return "Bool"; - case PerformanceValueTypeINTEL::eString : return "String"; - default: return "invalid"; + return ::vkCreateAccelerationStructureNV( device, pCreateInfo, pAllocator, pAccelerationStructure ); } - } - enum class PhysicalDeviceType - { - eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER, - eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, - eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, - eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, - eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU - }; - - VULKAN_HPP_INLINE std::string to_string( PhysicalDeviceType value ) - { - switch ( value ) + void vkDestroyAccelerationStructureNV( VkDevice device, + VkAccelerationStructureNV accelerationStructure, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - case PhysicalDeviceType::eOther : return "Other"; - case PhysicalDeviceType::eIntegratedGpu : return "IntegratedGpu"; - case PhysicalDeviceType::eDiscreteGpu : return "DiscreteGpu"; - case PhysicalDeviceType::eVirtualGpu : return "VirtualGpu"; - case PhysicalDeviceType::eCpu : return "Cpu"; - default: return "invalid"; + return ::vkDestroyAccelerationStructureNV( device, accelerationStructure, pAllocator ); } - } - enum class PipelineBindPoint - { - eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS, - eCompute = VK_PIPELINE_BIND_POINT_COMPUTE, - eRayTracingNV = VK_PIPELINE_BIND_POINT_RAY_TRACING_NV - }; + void vkGetAccelerationStructureMemoryRequirementsNV( VkDevice device, + const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo, + VkMemoryRequirements2KHR * pMemoryRequirements ) const + VULKAN_HPP_NOEXCEPT + { + return ::vkGetAccelerationStructureMemoryRequirementsNV( device, pInfo, pMemoryRequirements ); + } - VULKAN_HPP_INLINE std::string to_string( PipelineBindPoint value ) - { - switch ( value ) + VkResult vkBindAccelerationStructureMemoryNV( VkDevice device, + uint32_t bindInfoCount, + const VkBindAccelerationStructureMemoryInfoNV * pBindInfos ) const + VULKAN_HPP_NOEXCEPT { - case PipelineBindPoint::eGraphics : return "Graphics"; - case PipelineBindPoint::eCompute : return "Compute"; - case PipelineBindPoint::eRayTracingNV : return "RayTracingNV"; - default: return "invalid"; + return ::vkBindAccelerationStructureMemoryNV( device, bindInfoCount, pBindInfos ); } - } - enum class PipelineCacheHeaderVersion - { - eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE - }; + void vkCmdBuildAccelerationStructureNV( VkCommandBuffer commandBuffer, + const VkAccelerationStructureInfoNV * pInfo, + VkBuffer instanceData, + VkDeviceSize instanceOffset, + VkBool32 update, + VkAccelerationStructureNV dst, + VkAccelerationStructureNV src, + VkBuffer scratch, + VkDeviceSize scratchOffset ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBuildAccelerationStructureNV( + commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset ); + } - VULKAN_HPP_INLINE std::string to_string( PipelineCacheHeaderVersion value ) - { - switch ( value ) + void vkCmdCopyAccelerationStructureNV( VkCommandBuffer commandBuffer, + VkAccelerationStructureNV dst, + VkAccelerationStructureNV src, + VkCopyAccelerationStructureModeKHR mode ) const VULKAN_HPP_NOEXCEPT { - case PipelineCacheHeaderVersion::eOne : return "One"; - default: return "invalid"; + return ::vkCmdCopyAccelerationStructureNV( commandBuffer, dst, src, mode ); } - } - enum class PipelineExecutableStatisticFormatKHR - { - eBool32 = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR, - eInt64 = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR, - eUint64 = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR, - eFloat64 = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR - }; + void vkCmdTraceRaysNV( VkCommandBuffer commandBuffer, + VkBuffer raygenShaderBindingTableBuffer, + VkDeviceSize raygenShaderBindingOffset, + VkBuffer missShaderBindingTableBuffer, + VkDeviceSize missShaderBindingOffset, + VkDeviceSize missShaderBindingStride, + VkBuffer hitShaderBindingTableBuffer, + VkDeviceSize hitShaderBindingOffset, + VkDeviceSize hitShaderBindingStride, + VkBuffer callableShaderBindingTableBuffer, + VkDeviceSize callableShaderBindingOffset, + VkDeviceSize callableShaderBindingStride, + uint32_t width, + uint32_t height, + uint32_t depth ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdTraceRaysNV( commandBuffer, + raygenShaderBindingTableBuffer, + raygenShaderBindingOffset, + missShaderBindingTableBuffer, + missShaderBindingOffset, + missShaderBindingStride, + hitShaderBindingTableBuffer, + hitShaderBindingOffset, + hitShaderBindingStride, + callableShaderBindingTableBuffer, + callableShaderBindingOffset, + callableShaderBindingStride, + width, + height, + depth ); + } + + VkResult vkCreateRayTracingPipelinesNV( VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkRayTracingPipelineCreateInfoNV * pCreateInfos, + const VkAllocationCallbacks * pAllocator, + VkPipeline * pPipelines ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateRayTracingPipelinesNV( + device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); + } + + VkResult vkGetRayTracingShaderGroupHandlesNV( VkDevice device, + VkPipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetRayTracingShaderGroupHandlesNV( device, pipeline, firstGroup, groupCount, dataSize, pData ); + } - VULKAN_HPP_INLINE std::string to_string( PipelineExecutableStatisticFormatKHR value ) - { - switch ( value ) + VkResult vkGetAccelerationStructureHandleNV( VkDevice device, + VkAccelerationStructureNV accelerationStructure, + size_t dataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT { - case PipelineExecutableStatisticFormatKHR::eBool32 : return "Bool32"; - case PipelineExecutableStatisticFormatKHR::eInt64 : return "Int64"; - case PipelineExecutableStatisticFormatKHR::eUint64 : return "Uint64"; - case PipelineExecutableStatisticFormatKHR::eFloat64 : return "Float64"; - default: return "invalid"; + return ::vkGetAccelerationStructureHandleNV( device, accelerationStructure, dataSize, pData ); } - } - enum class PointClippingBehavior - { - eAllClipPlanes = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES, - eUserClipPlanesOnly = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY, - eAllClipPlanesKHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR, - eUserClipPlanesOnlyKHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR - }; + void vkCmdWriteAccelerationStructuresPropertiesNV( VkCommandBuffer commandBuffer, + uint32_t accelerationStructureCount, + const VkAccelerationStructureNV * pAccelerationStructures, + VkQueryType queryType, + VkQueryPool queryPool, + uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWriteAccelerationStructuresPropertiesNV( + commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery ); + } - VULKAN_HPP_INLINE std::string to_string( PointClippingBehavior value ) - { - switch ( value ) + VkResult vkCompileDeferredNV( VkDevice device, VkPipeline pipeline, uint32_t shader ) const VULKAN_HPP_NOEXCEPT { - case PointClippingBehavior::eAllClipPlanes : return "AllClipPlanes"; - case PointClippingBehavior::eUserClipPlanesOnly : return "UserClipPlanesOnly"; - default: return "invalid"; + return ::vkCompileDeferredNV( device, pipeline, shader ); } - } - enum class PolygonMode - { - eFill = VK_POLYGON_MODE_FILL, - eLine = VK_POLYGON_MODE_LINE, - ePoint = VK_POLYGON_MODE_POINT, - eFillRectangleNV = VK_POLYGON_MODE_FILL_RECTANGLE_NV - }; + //=== VK_KHR_maintenance3 === - VULKAN_HPP_INLINE std::string to_string( PolygonMode value ) - { - switch ( value ) + void vkGetDescriptorSetLayoutSupportKHR( VkDevice device, + const VkDescriptorSetLayoutCreateInfo * pCreateInfo, + VkDescriptorSetLayoutSupport * pSupport ) const VULKAN_HPP_NOEXCEPT { - case PolygonMode::eFill : return "Fill"; - case PolygonMode::eLine : return "Line"; - case PolygonMode::ePoint : return "Point"; - case PolygonMode::eFillRectangleNV : return "FillRectangleNV"; - default: return "invalid"; + return ::vkGetDescriptorSetLayoutSupportKHR( device, pCreateInfo, pSupport ); } - } - enum class PresentModeKHR - { - eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR, - eMailbox = VK_PRESENT_MODE_MAILBOX_KHR, - eFifo = VK_PRESENT_MODE_FIFO_KHR, - eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR, - eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR, - eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR - }; + //=== VK_KHR_draw_indirect_count === - VULKAN_HPP_INLINE std::string to_string( PresentModeKHR value ) - { - switch ( value ) + void vkCmdDrawIndirectCountKHR( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT { - case PresentModeKHR::eImmediate : return "Immediate"; - case PresentModeKHR::eMailbox : return "Mailbox"; - case PresentModeKHR::eFifo : return "Fifo"; - case PresentModeKHR::eFifoRelaxed : return "FifoRelaxed"; - case PresentModeKHR::eSharedDemandRefresh : return "SharedDemandRefresh"; - case PresentModeKHR::eSharedContinuousRefresh : return "SharedContinuousRefresh"; - default: return "invalid"; + return ::vkCmdDrawIndirectCountKHR( + commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); } - } - enum class PrimitiveTopology - { - ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST, - eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST, - eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, - eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, - eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP, - eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN, - eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, - eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY, - eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, - eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY, - ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST - }; - - VULKAN_HPP_INLINE std::string to_string( PrimitiveTopology value ) - { - switch ( value ) - { - case PrimitiveTopology::ePointList : return "PointList"; - case PrimitiveTopology::eLineList : return "LineList"; - case PrimitiveTopology::eLineStrip : return "LineStrip"; - case PrimitiveTopology::eTriangleList : return "TriangleList"; - case PrimitiveTopology::eTriangleStrip : return "TriangleStrip"; - case PrimitiveTopology::eTriangleFan : return "TriangleFan"; - case PrimitiveTopology::eLineListWithAdjacency : return "LineListWithAdjacency"; - case PrimitiveTopology::eLineStripWithAdjacency : return "LineStripWithAdjacency"; - case PrimitiveTopology::eTriangleListWithAdjacency : return "TriangleListWithAdjacency"; - case PrimitiveTopology::eTriangleStripWithAdjacency : return "TriangleStripWithAdjacency"; - case PrimitiveTopology::ePatchList : return "PatchList"; - default: return "invalid"; + void vkCmdDrawIndexedIndirectCountKHR( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndexedIndirectCountKHR( + commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); } - } - enum class QueryPoolSamplingModeINTEL - { - eManual = VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL - }; + //=== VK_EXT_external_memory_host === - VULKAN_HPP_INLINE std::string to_string( QueryPoolSamplingModeINTEL value ) - { - switch ( value ) + VkResult vkGetMemoryHostPointerPropertiesEXT( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + const void * pHostPointer, + VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) const VULKAN_HPP_NOEXCEPT { - case QueryPoolSamplingModeINTEL::eManual : return "Manual"; - default: return "invalid"; + return ::vkGetMemoryHostPointerPropertiesEXT( device, handleType, pHostPointer, pMemoryHostPointerProperties ); } - } - enum class QueryType - { - eOcclusion = VK_QUERY_TYPE_OCCLUSION, - ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS, - eTimestamp = VK_QUERY_TYPE_TIMESTAMP, - eTransformFeedbackStreamEXT = VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT, - eAccelerationStructureCompactedSizeNV = VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV, - ePerformanceQueryINTEL = VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL - }; + //=== VK_AMD_buffer_marker === - VULKAN_HPP_INLINE std::string to_string( QueryType value ) - { - switch ( value ) + void vkCmdWriteBufferMarkerAMD( VkCommandBuffer commandBuffer, + VkPipelineStageFlagBits pipelineStage, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + uint32_t marker ) const VULKAN_HPP_NOEXCEPT { - case QueryType::eOcclusion : return "Occlusion"; - case QueryType::ePipelineStatistics : return "PipelineStatistics"; - case QueryType::eTimestamp : return "Timestamp"; - case QueryType::eTransformFeedbackStreamEXT : return "TransformFeedbackStreamEXT"; - case QueryType::eAccelerationStructureCompactedSizeNV : return "AccelerationStructureCompactedSizeNV"; - case QueryType::ePerformanceQueryINTEL : return "PerformanceQueryINTEL"; - default: return "invalid"; + return ::vkCmdWriteBufferMarkerAMD( commandBuffer, pipelineStage, dstBuffer, dstOffset, marker ); } - } - enum class QueueGlobalPriorityEXT - { - eLow = VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT, - eMedium = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT, - eHigh = VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT, - eRealtime = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT - }; + //=== VK_EXT_calibrated_timestamps === - VULKAN_HPP_INLINE std::string to_string( QueueGlobalPriorityEXT value ) - { - switch ( value ) + VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( VkPhysicalDevice physicalDevice, + uint32_t * pTimeDomainCount, + VkTimeDomainEXT * pTimeDomains ) const VULKAN_HPP_NOEXCEPT { - case QueueGlobalPriorityEXT::eLow : return "Low"; - case QueueGlobalPriorityEXT::eMedium : return "Medium"; - case QueueGlobalPriorityEXT::eHigh : return "High"; - case QueueGlobalPriorityEXT::eRealtime : return "Realtime"; - default: return "invalid"; + return ::vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( physicalDevice, pTimeDomainCount, pTimeDomains ); } - } - - enum class RasterizationOrderAMD - { - eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD, - eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD - }; - VULKAN_HPP_INLINE std::string to_string( RasterizationOrderAMD value ) - { - switch ( value ) + VkResult vkGetCalibratedTimestampsEXT( VkDevice device, + uint32_t timestampCount, + const VkCalibratedTimestampInfoEXT * pTimestampInfos, + uint64_t * pTimestamps, + uint64_t * pMaxDeviation ) const VULKAN_HPP_NOEXCEPT { - case RasterizationOrderAMD::eStrict : return "Strict"; - case RasterizationOrderAMD::eRelaxed : return "Relaxed"; - default: return "invalid"; + return ::vkGetCalibratedTimestampsEXT( device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation ); } - } - enum class RayTracingShaderGroupTypeNV - { - eGeneral = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV, - eTrianglesHitGroup = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV, - eProceduralHitGroup = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV - }; + //=== VK_NV_mesh_shader === - VULKAN_HPP_INLINE std::string to_string( RayTracingShaderGroupTypeNV value ) - { - switch ( value ) + void vkCmdDrawMeshTasksNV( VkCommandBuffer commandBuffer, + uint32_t taskCount, + uint32_t firstTask ) const VULKAN_HPP_NOEXCEPT { - case RayTracingShaderGroupTypeNV::eGeneral : return "General"; - case RayTracingShaderGroupTypeNV::eTrianglesHitGroup : return "TrianglesHitGroup"; - case RayTracingShaderGroupTypeNV::eProceduralHitGroup : return "ProceduralHitGroup"; - default: return "invalid"; + return ::vkCmdDrawMeshTasksNV( commandBuffer, taskCount, firstTask ); } - } - enum class Result - { - eSuccess = VK_SUCCESS, - eNotReady = VK_NOT_READY, - eTimeout = VK_TIMEOUT, - eEventSet = VK_EVENT_SET, - eEventReset = VK_EVENT_RESET, - eIncomplete = VK_INCOMPLETE, - eErrorOutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY, - eErrorOutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY, - eErrorInitializationFailed = VK_ERROR_INITIALIZATION_FAILED, - eErrorDeviceLost = VK_ERROR_DEVICE_LOST, - eErrorMemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED, - eErrorLayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT, - eErrorExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT, - eErrorFeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT, - eErrorIncompatibleDriver = VK_ERROR_INCOMPATIBLE_DRIVER, - eErrorTooManyObjects = VK_ERROR_TOO_MANY_OBJECTS, - eErrorFormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED, - eErrorFragmentedPool = VK_ERROR_FRAGMENTED_POOL, - eErrorOutOfPoolMemory = VK_ERROR_OUT_OF_POOL_MEMORY, - eErrorInvalidExternalHandle = VK_ERROR_INVALID_EXTERNAL_HANDLE, - eErrorSurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR, - eErrorNativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR, - eSuboptimalKHR = VK_SUBOPTIMAL_KHR, - eErrorOutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR, - eErrorIncompatibleDisplayKHR = VK_ERROR_INCOMPATIBLE_DISPLAY_KHR, - eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT, - eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV, - eErrorInvalidDrmFormatModifierPlaneLayoutEXT = VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT, - eErrorFragmentationEXT = VK_ERROR_FRAGMENTATION_EXT, - eErrorNotPermittedEXT = VK_ERROR_NOT_PERMITTED_EXT, - eErrorInvalidDeviceAddressEXT = VK_ERROR_INVALID_DEVICE_ADDRESS_EXT, - eErrorFullScreenExclusiveModeLostEXT = VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT, - eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY_KHR, - eErrorInvalidExternalHandleKHR = VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR - }; - - VULKAN_HPP_INLINE std::string to_string( Result value ) - { - switch ( value ) - { - case Result::eSuccess : return "Success"; - case Result::eNotReady : return "NotReady"; - case Result::eTimeout : return "Timeout"; - case Result::eEventSet : return "EventSet"; - case Result::eEventReset : return "EventReset"; - case Result::eIncomplete : return "Incomplete"; - case Result::eErrorOutOfHostMemory : return "ErrorOutOfHostMemory"; - case Result::eErrorOutOfDeviceMemory : return "ErrorOutOfDeviceMemory"; - case Result::eErrorInitializationFailed : return "ErrorInitializationFailed"; - case Result::eErrorDeviceLost : return "ErrorDeviceLost"; - case Result::eErrorMemoryMapFailed : return "ErrorMemoryMapFailed"; - case Result::eErrorLayerNotPresent : return "ErrorLayerNotPresent"; - case Result::eErrorExtensionNotPresent : return "ErrorExtensionNotPresent"; - case Result::eErrorFeatureNotPresent : return "ErrorFeatureNotPresent"; - case Result::eErrorIncompatibleDriver : return "ErrorIncompatibleDriver"; - case Result::eErrorTooManyObjects : return "ErrorTooManyObjects"; - case Result::eErrorFormatNotSupported : return "ErrorFormatNotSupported"; - case Result::eErrorFragmentedPool : return "ErrorFragmentedPool"; - case Result::eErrorOutOfPoolMemory : return "ErrorOutOfPoolMemory"; - case Result::eErrorInvalidExternalHandle : return "ErrorInvalidExternalHandle"; - case Result::eErrorSurfaceLostKHR : return "ErrorSurfaceLostKHR"; - case Result::eErrorNativeWindowInUseKHR : return "ErrorNativeWindowInUseKHR"; - case Result::eSuboptimalKHR : return "SuboptimalKHR"; - case Result::eErrorOutOfDateKHR : return "ErrorOutOfDateKHR"; - case Result::eErrorIncompatibleDisplayKHR : return "ErrorIncompatibleDisplayKHR"; - case Result::eErrorValidationFailedEXT : return "ErrorValidationFailedEXT"; - case Result::eErrorInvalidShaderNV : return "ErrorInvalidShaderNV"; - case Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT : return "ErrorInvalidDrmFormatModifierPlaneLayoutEXT"; - case Result::eErrorFragmentationEXT : return "ErrorFragmentationEXT"; - case Result::eErrorNotPermittedEXT : return "ErrorNotPermittedEXT"; - case Result::eErrorInvalidDeviceAddressEXT : return "ErrorInvalidDeviceAddressEXT"; - case Result::eErrorFullScreenExclusiveModeLostEXT : return "ErrorFullScreenExclusiveModeLostEXT"; - default: return "invalid"; + void vkCmdDrawMeshTasksIndirectNV( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + uint32_t drawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawMeshTasksIndirectNV( commandBuffer, buffer, offset, drawCount, stride ); } - } - enum class SamplerAddressMode - { - eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT, - eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, - eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, - eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, - eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, - eMirrorClampToEdgeKHR = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR - }; - - VULKAN_HPP_INLINE std::string to_string( SamplerAddressMode value ) - { - switch ( value ) + void vkCmdDrawMeshTasksIndirectCountNV( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT { - case SamplerAddressMode::eRepeat : return "Repeat"; - case SamplerAddressMode::eMirroredRepeat : return "MirroredRepeat"; - case SamplerAddressMode::eClampToEdge : return "ClampToEdge"; - case SamplerAddressMode::eClampToBorder : return "ClampToBorder"; - case SamplerAddressMode::eMirrorClampToEdge : return "MirrorClampToEdge"; - default: return "invalid"; + return ::vkCmdDrawMeshTasksIndirectCountNV( + commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); } - } - enum class SamplerMipmapMode - { - eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST, - eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR - }; + //=== VK_NV_scissor_exclusive === - VULKAN_HPP_INLINE std::string to_string( SamplerMipmapMode value ) - { - switch ( value ) + void vkCmdSetExclusiveScissorNV( VkCommandBuffer commandBuffer, + uint32_t firstExclusiveScissor, + uint32_t exclusiveScissorCount, + const VkRect2D * pExclusiveScissors ) const VULKAN_HPP_NOEXCEPT { - case SamplerMipmapMode::eNearest : return "Nearest"; - case SamplerMipmapMode::eLinear : return "Linear"; - default: return "invalid"; + return ::vkCmdSetExclusiveScissorNV( + commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors ); } - } - enum class SamplerReductionModeEXT - { - eWeightedAverage = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT, - eMin = VK_SAMPLER_REDUCTION_MODE_MIN_EXT, - eMax = VK_SAMPLER_REDUCTION_MODE_MAX_EXT - }; + //=== VK_NV_device_diagnostic_checkpoints === - VULKAN_HPP_INLINE std::string to_string( SamplerReductionModeEXT value ) - { - switch ( value ) + void vkCmdSetCheckpointNV( VkCommandBuffer commandBuffer, const void * pCheckpointMarker ) const VULKAN_HPP_NOEXCEPT { - case SamplerReductionModeEXT::eWeightedAverage : return "WeightedAverage"; - case SamplerReductionModeEXT::eMin : return "Min"; - case SamplerReductionModeEXT::eMax : return "Max"; - default: return "invalid"; + return ::vkCmdSetCheckpointNV( commandBuffer, pCheckpointMarker ); } - } - - enum class SamplerYcbcrModelConversion - { - eRgbIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY, - eYcbcrIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY, - eYcbcr709 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709, - eYcbcr601 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601, - eYcbcr2020 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020, - eRgbIdentityKHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR, - eYcbcrIdentityKHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR, - eYcbcr709KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR, - eYcbcr601KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR, - eYcbcr2020KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR - }; - VULKAN_HPP_INLINE std::string to_string( SamplerYcbcrModelConversion value ) - { - switch ( value ) + void vkGetQueueCheckpointDataNV( VkQueue queue, + uint32_t * pCheckpointDataCount, + VkCheckpointDataNV * pCheckpointData ) const VULKAN_HPP_NOEXCEPT { - case SamplerYcbcrModelConversion::eRgbIdentity : return "RgbIdentity"; - case SamplerYcbcrModelConversion::eYcbcrIdentity : return "YcbcrIdentity"; - case SamplerYcbcrModelConversion::eYcbcr709 : return "Ycbcr709"; - case SamplerYcbcrModelConversion::eYcbcr601 : return "Ycbcr601"; - case SamplerYcbcrModelConversion::eYcbcr2020 : return "Ycbcr2020"; - default: return "invalid"; + return ::vkGetQueueCheckpointDataNV( queue, pCheckpointDataCount, pCheckpointData ); } - } - enum class SamplerYcbcrRange - { - eItuFull = VK_SAMPLER_YCBCR_RANGE_ITU_FULL, - eItuNarrow = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW, - eItuFullKHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR, - eItuNarrowKHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR - }; + //=== VK_KHR_timeline_semaphore === - VULKAN_HPP_INLINE std::string to_string( SamplerYcbcrRange value ) - { - switch ( value ) + VkResult vkGetSemaphoreCounterValueKHR( VkDevice device, + VkSemaphore semaphore, + uint64_t * pValue ) const VULKAN_HPP_NOEXCEPT { - case SamplerYcbcrRange::eItuFull : return "ItuFull"; - case SamplerYcbcrRange::eItuNarrow : return "ItuNarrow"; - default: return "invalid"; + return ::vkGetSemaphoreCounterValueKHR( device, semaphore, pValue ); } - } - enum class ScopeNV - { - eDevice = VK_SCOPE_DEVICE_NV, - eWorkgroup = VK_SCOPE_WORKGROUP_NV, - eSubgroup = VK_SCOPE_SUBGROUP_NV, - eQueueFamily = VK_SCOPE_QUEUE_FAMILY_NV - }; + VkResult vkWaitSemaphoresKHR( VkDevice device, + const VkSemaphoreWaitInfo * pWaitInfo, + uint64_t timeout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkWaitSemaphoresKHR( device, pWaitInfo, timeout ); + } - VULKAN_HPP_INLINE std::string to_string( ScopeNV value ) - { - switch ( value ) + VkResult vkSignalSemaphoreKHR( VkDevice device, + const VkSemaphoreSignalInfo * pSignalInfo ) const VULKAN_HPP_NOEXCEPT { - case ScopeNV::eDevice : return "Device"; - case ScopeNV::eWorkgroup : return "Workgroup"; - case ScopeNV::eSubgroup : return "Subgroup"; - case ScopeNV::eQueueFamily : return "QueueFamily"; - default: return "invalid"; + return ::vkSignalSemaphoreKHR( device, pSignalInfo ); } - } - enum class ShaderFloatControlsIndependenceKHR - { - e32BitOnly = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR, - eAll = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR, - eNone = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR - }; + //=== VK_INTEL_performance_query === - VULKAN_HPP_INLINE std::string to_string( ShaderFloatControlsIndependenceKHR value ) - { - switch ( value ) + VkResult vkInitializePerformanceApiINTEL( + VkDevice device, const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) const VULKAN_HPP_NOEXCEPT { - case ShaderFloatControlsIndependenceKHR::e32BitOnly : return "32BitOnly"; - case ShaderFloatControlsIndependenceKHR::eAll : return "All"; - case ShaderFloatControlsIndependenceKHR::eNone : return "None"; - default: return "invalid"; + return ::vkInitializePerformanceApiINTEL( device, pInitializeInfo ); } - } - enum class ShaderInfoTypeAMD - { - eStatistics = VK_SHADER_INFO_TYPE_STATISTICS_AMD, - eBinary = VK_SHADER_INFO_TYPE_BINARY_AMD, - eDisassembly = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD - }; + void vkUninitializePerformanceApiINTEL( VkDevice device ) const VULKAN_HPP_NOEXCEPT + { + return ::vkUninitializePerformanceApiINTEL( device ); + } - VULKAN_HPP_INLINE std::string to_string( ShaderInfoTypeAMD value ) - { - switch ( value ) + VkResult + vkCmdSetPerformanceMarkerINTEL( VkCommandBuffer commandBuffer, + const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) const VULKAN_HPP_NOEXCEPT { - case ShaderInfoTypeAMD::eStatistics : return "Statistics"; - case ShaderInfoTypeAMD::eBinary : return "Binary"; - case ShaderInfoTypeAMD::eDisassembly : return "Disassembly"; - default: return "invalid"; + return ::vkCmdSetPerformanceMarkerINTEL( commandBuffer, pMarkerInfo ); } - } - enum class ShadingRatePaletteEntryNV - { - eNoInvocations = VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV, - e16InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV, - e8InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV, - e4InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV, - e2InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV, - e1InvocationPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV, - e1InvocationPer2X1Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV, - e1InvocationPer1X2Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV, - e1InvocationPer2X2Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV, - e1InvocationPer4X2Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV, - e1InvocationPer2X4Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV, - e1InvocationPer4X4Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV - }; - - VULKAN_HPP_INLINE std::string to_string( ShadingRatePaletteEntryNV value ) - { - switch ( value ) - { - case ShadingRatePaletteEntryNV::eNoInvocations : return "NoInvocations"; - case ShadingRatePaletteEntryNV::e16InvocationsPerPixel : return "16InvocationsPerPixel"; - case ShadingRatePaletteEntryNV::e8InvocationsPerPixel : return "8InvocationsPerPixel"; - case ShadingRatePaletteEntryNV::e4InvocationsPerPixel : return "4InvocationsPerPixel"; - case ShadingRatePaletteEntryNV::e2InvocationsPerPixel : return "2InvocationsPerPixel"; - case ShadingRatePaletteEntryNV::e1InvocationPerPixel : return "1InvocationPerPixel"; - case ShadingRatePaletteEntryNV::e1InvocationPer2X1Pixels : return "1InvocationPer2X1Pixels"; - case ShadingRatePaletteEntryNV::e1InvocationPer1X2Pixels : return "1InvocationPer1X2Pixels"; - case ShadingRatePaletteEntryNV::e1InvocationPer2X2Pixels : return "1InvocationPer2X2Pixels"; - case ShadingRatePaletteEntryNV::e1InvocationPer4X2Pixels : return "1InvocationPer4X2Pixels"; - case ShadingRatePaletteEntryNV::e1InvocationPer2X4Pixels : return "1InvocationPer2X4Pixels"; - case ShadingRatePaletteEntryNV::e1InvocationPer4X4Pixels : return "1InvocationPer4X4Pixels"; - default: return "invalid"; + VkResult vkCmdSetPerformanceStreamMarkerINTEL( + VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetPerformanceStreamMarkerINTEL( commandBuffer, pMarkerInfo ); } - } - enum class SharingMode - { - eExclusive = VK_SHARING_MODE_EXCLUSIVE, - eConcurrent = VK_SHARING_MODE_CONCURRENT - }; + VkResult + vkCmdSetPerformanceOverrideINTEL( VkCommandBuffer commandBuffer, + const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetPerformanceOverrideINTEL( commandBuffer, pOverrideInfo ); + } - VULKAN_HPP_INLINE std::string to_string( SharingMode value ) - { - switch ( value ) + VkResult vkAcquirePerformanceConfigurationINTEL( VkDevice device, + const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo, + VkPerformanceConfigurationINTEL * pConfiguration ) const + VULKAN_HPP_NOEXCEPT { - case SharingMode::eExclusive : return "Exclusive"; - case SharingMode::eConcurrent : return "Concurrent"; - default: return "invalid"; + return ::vkAcquirePerformanceConfigurationINTEL( device, pAcquireInfo, pConfiguration ); } - } - enum class StencilOp - { - eKeep = VK_STENCIL_OP_KEEP, - eZero = VK_STENCIL_OP_ZERO, - eReplace = VK_STENCIL_OP_REPLACE, - eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP, - eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP, - eInvert = VK_STENCIL_OP_INVERT, - eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP, - eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP - }; + VkResult + vkReleasePerformanceConfigurationINTEL( VkDevice device, + VkPerformanceConfigurationINTEL configuration ) const VULKAN_HPP_NOEXCEPT + { + return ::vkReleasePerformanceConfigurationINTEL( device, configuration ); + } - VULKAN_HPP_INLINE std::string to_string( StencilOp value ) - { - switch ( value ) + VkResult + vkQueueSetPerformanceConfigurationINTEL( VkQueue queue, + VkPerformanceConfigurationINTEL configuration ) const VULKAN_HPP_NOEXCEPT { - case StencilOp::eKeep : return "Keep"; - case StencilOp::eZero : return "Zero"; - case StencilOp::eReplace : return "Replace"; - case StencilOp::eIncrementAndClamp : return "IncrementAndClamp"; - case StencilOp::eDecrementAndClamp : return "DecrementAndClamp"; - case StencilOp::eInvert : return "Invert"; - case StencilOp::eIncrementAndWrap : return "IncrementAndWrap"; - case StencilOp::eDecrementAndWrap : return "DecrementAndWrap"; - default: return "invalid"; + return ::vkQueueSetPerformanceConfigurationINTEL( queue, configuration ); } - } - enum class StructureType - { - eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO, - eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, - eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO, - eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, - eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO, - eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, - eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE, - eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO, - eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, - eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, - eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO, - eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO, - eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, - eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO, - eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, - eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, - eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO, - ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO, - ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, - ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, - ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, - ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, - ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, - ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO, - ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, - ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, - ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, - ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, - eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, - eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO, - ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, - eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, - eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, - eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO, - eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO, - eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, - eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET, - eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, - eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, - eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, - eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, - eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, - eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, - eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO, - eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, - eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, - eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER, - eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO, - eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, - ePhysicalDeviceSubgroupProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES, - eBindBufferMemoryInfo = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO, - eBindImageMemoryInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO, - ePhysicalDevice16BitStorageFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, - eMemoryDedicatedRequirements = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS, - eMemoryDedicatedAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO, - eMemoryAllocateFlagsInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO, - eDeviceGroupRenderPassBeginInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO, - eDeviceGroupCommandBufferBeginInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO, - eDeviceGroupSubmitInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO, - eDeviceGroupBindSparseInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO, - eBindBufferMemoryDeviceGroupInfo = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO, - eBindImageMemoryDeviceGroupInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, - ePhysicalDeviceGroupProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES, - eDeviceGroupDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO, - eBufferMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2, - eImageMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2, - eImageSparseMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, - eMemoryRequirements2 = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, - eSparseImageMemoryRequirements2 = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2, - ePhysicalDeviceFeatures2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, - ePhysicalDeviceProperties2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, - eFormatProperties2 = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2, - eImageFormatProperties2 = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2, - ePhysicalDeviceImageFormatInfo2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, - eQueueFamilyProperties2 = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2, - ePhysicalDeviceMemoryProperties2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, - eSparseImageFormatProperties2 = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2, - ePhysicalDeviceSparseImageFormatInfo2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2, - ePhysicalDevicePointClippingProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, - eRenderPassInputAttachmentAspectCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO, - eImageViewUsageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO, - ePipelineTessellationDomainOriginStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO, - eRenderPassMultiviewCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO, - ePhysicalDeviceMultiviewFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, - ePhysicalDeviceMultiviewProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, - ePhysicalDeviceVariablePointersFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, - eProtectedSubmitInfo = VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO, - ePhysicalDeviceProtectedMemoryFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, - ePhysicalDeviceProtectedMemoryProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES, - eDeviceQueueInfo2 = VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2, - eSamplerYcbcrConversionCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO, - eSamplerYcbcrConversionInfo = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO, - eBindImagePlaneMemoryInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO, - eImagePlaneMemoryRequirementsInfo = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO, - ePhysicalDeviceSamplerYcbcrConversionFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, - eSamplerYcbcrConversionImageFormatProperties = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES, - eDescriptorUpdateTemplateCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, - ePhysicalDeviceExternalImageFormatInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, - eExternalImageFormatProperties = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES, - ePhysicalDeviceExternalBufferInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO, - eExternalBufferProperties = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES, - ePhysicalDeviceIdProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES, - eExternalMemoryBufferCreateInfo = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO, - eExternalMemoryImageCreateInfo = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO, - eExportMemoryAllocateInfo = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO, - ePhysicalDeviceExternalFenceInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, - eExternalFenceProperties = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES, - eExportFenceCreateInfo = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO, - eExportSemaphoreCreateInfo = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO, - ePhysicalDeviceExternalSemaphoreInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, - eExternalSemaphoreProperties = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, - ePhysicalDeviceMaintenance3Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, - eDescriptorSetLayoutSupport = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT, - ePhysicalDeviceShaderDrawParametersFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, - eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR, - ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR, - eDeviceGroupPresentCapabilitiesKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR, - eImageSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR, - eBindImageMemorySwapchainInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR, - eAcquireNextImageInfoKHR = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR, - eDeviceGroupPresentInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR, - eDeviceGroupSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR, - eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR, - eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR, - eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR, - eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR, - eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR, - eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR, - eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR, - eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR, - eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, - ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD, - eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT, - eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT, - eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT, - eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV, - eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV, - eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV, - ePhysicalDeviceTransformFeedbackFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, - ePhysicalDeviceTransformFeedbackPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT, - ePipelineRasterizationStateStreamCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT, - eImageViewHandleInfoNVX = VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX, - eTextureLodGatherFormatPropertiesAMD = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD, - eStreamDescriptorSurfaceCreateInfoGGP = VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP, - ePhysicalDeviceCornerSampledImageFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV, - eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV, - eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV, - eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV, - eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV, - eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV, - eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT, - eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN, - ePhysicalDeviceTextureCompressionAstcHdrFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT, - eImageViewAstcDecodeModeEXT = VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT, - ePhysicalDeviceAstcDecodeFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT, - eImportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR, - eExportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR, - eMemoryWin32HandlePropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR, - eMemoryGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR, - eImportMemoryFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR, - eMemoryFdPropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR, - eMemoryGetFdInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR, - eWin32KeyedMutexAcquireReleaseInfoKHR = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR, - eImportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR, - eExportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR, - eD3D12FenceSubmitInfoKHR = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR, - eSemaphoreGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR, - eImportSemaphoreFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR, - eSemaphoreGetFdInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR, - ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR, - eCommandBufferInheritanceConditionalRenderingInfoEXT = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT, - ePhysicalDeviceConditionalRenderingFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT, - eConditionalRenderingBeginInfoEXT = VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT, - ePhysicalDeviceShaderFloat16Int8FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR, - ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR, - eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX, - eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX, - eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX, - eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX, - eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX, - eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX, - ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV, - eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT, - eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT, - eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT, - eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT, - eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT, - ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE, - ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX, - ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV, - ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT, - ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT, - ePhysicalDeviceConservativeRasterizationPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT, - ePipelineRasterizationConservativeStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT, - ePhysicalDeviceDepthClipEnableFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, - ePipelineRasterizationDepthClipStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT, - eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT, - ePhysicalDeviceImagelessFramebufferFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR, - eFramebufferAttachmentsCreateInfoKHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR, - eFramebufferAttachmentImageInfoKHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR, - eRenderPassAttachmentBeginInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR, - eAttachmentDescription2KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR, - eAttachmentReference2KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR, - eSubpassDescription2KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR, - eSubpassDependency2KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR, - eRenderPassCreateInfo2KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR, - eSubpassBeginInfoKHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR, - eSubpassEndInfoKHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR, - eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR, - eImportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR, - eExportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR, - eFenceGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR, - eImportFenceFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR, - eFenceGetFdInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR, - ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR, - eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR, - eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR, - eDisplayProperties2KHR = VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR, - eDisplayPlaneProperties2KHR = VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR, - eDisplayModeProperties2KHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR, - eDisplayPlaneInfo2KHR = VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR, - eDisplayPlaneCapabilities2KHR = VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR, - eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK, - eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK, - eDebugUtilsObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT, - eDebugUtilsObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT, - eDebugUtilsLabelEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, - eDebugUtilsMessengerCallbackDataEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT, - eDebugUtilsMessengerCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, - eAndroidHardwareBufferUsageANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID, - eAndroidHardwareBufferPropertiesANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID, - eAndroidHardwareBufferFormatPropertiesANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID, - eImportAndroidHardwareBufferInfoANDROID = VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID, - eMemoryGetAndroidHardwareBufferInfoANDROID = VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID, - eExternalFormatANDROID = VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID, - ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT, - eSamplerReductionModeCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT, - ePhysicalDeviceInlineUniformBlockFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT, - ePhysicalDeviceInlineUniformBlockPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT, - eWriteDescriptorSetInlineUniformBlockEXT = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT, - eDescriptorPoolInlineUniformBlockCreateInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT, - eSampleLocationsInfoEXT = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT, - eRenderPassSampleLocationsBeginInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT, - ePipelineSampleLocationsStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT, - ePhysicalDeviceSampleLocationsPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT, - eMultisamplePropertiesEXT = VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT, - eImageFormatListCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR, - ePhysicalDeviceBlendOperationAdvancedFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT, - ePhysicalDeviceBlendOperationAdvancedPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT, - ePipelineColorBlendAdvancedStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT, - ePipelineCoverageToColorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV, - ePipelineCoverageModulationStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV, - ePhysicalDeviceShaderSmBuiltinsFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV, - ePhysicalDeviceShaderSmBuiltinsPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV, - eDrmFormatModifierPropertiesListEXT = VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT, - eDrmFormatModifierPropertiesEXT = VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT, - ePhysicalDeviceImageDrmFormatModifierInfoEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT, - eImageDrmFormatModifierListCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT, - eImageDrmFormatModifierExplicitCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT, - eImageDrmFormatModifierPropertiesEXT = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT, - eValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT, - eShaderModuleValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT, - eDescriptorSetLayoutBindingFlagsCreateInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT, - ePhysicalDeviceDescriptorIndexingFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT, - ePhysicalDeviceDescriptorIndexingPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT, - eDescriptorSetVariableDescriptorCountAllocateInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT, - eDescriptorSetVariableDescriptorCountLayoutSupportEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT, - ePipelineViewportShadingRateImageStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV, - ePhysicalDeviceShadingRateImageFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV, - ePhysicalDeviceShadingRateImagePropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV, - ePipelineViewportCoarseSampleOrderStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV, - eRayTracingPipelineCreateInfoNV = VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV, - eAccelerationStructureCreateInfoNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV, - eGeometryNV = VK_STRUCTURE_TYPE_GEOMETRY_NV, - eGeometryTrianglesNV = VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV, - eGeometryAabbNV = VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV, - eBindAccelerationStructureMemoryInfoNV = VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV, - eWriteDescriptorSetAccelerationStructureNV = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV, - eAccelerationStructureMemoryRequirementsInfoNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV, - ePhysicalDeviceRayTracingPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV, - eRayTracingShaderGroupCreateInfoNV = VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV, - eAccelerationStructureInfoNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV, - ePhysicalDeviceRepresentativeFragmentTestFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV, - ePipelineRepresentativeFragmentTestStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV, - ePhysicalDeviceImageViewImageFormatInfoEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT, - eFilterCubicImageViewImageFormatPropertiesEXT = VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT, - eDeviceQueueGlobalPriorityCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT, - ePhysicalDevice8BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR, - eImportMemoryHostPointerInfoEXT = VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT, - eMemoryHostPointerPropertiesEXT = VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT, - ePhysicalDeviceExternalMemoryHostPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT, - ePhysicalDeviceShaderAtomicInt64FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR, - ePipelineCompilerControlCreateInfoAMD = VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD, - eCalibratedTimestampInfoEXT = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT, - ePhysicalDeviceShaderCorePropertiesAMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD, - eDeviceMemoryOverallocationCreateInfoAMD = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD, - ePhysicalDeviceVertexAttributeDivisorPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT, - ePipelineVertexInputDivisorStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT, - ePhysicalDeviceVertexAttributeDivisorFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT, - ePresentFrameTokenGGP = VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP, - ePipelineCreationFeedbackCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT, - ePhysicalDeviceDriverPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR, - ePhysicalDeviceFloatControlsPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR, - ePhysicalDeviceDepthStencilResolvePropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR, - eSubpassDescriptionDepthStencilResolveKHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR, - ePhysicalDeviceComputeShaderDerivativesFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV, - ePhysicalDeviceMeshShaderFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV, - ePhysicalDeviceMeshShaderPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV, - ePhysicalDeviceFragmentShaderBarycentricFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV, - ePhysicalDeviceShaderImageFootprintFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, - ePipelineViewportExclusiveScissorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV, - ePhysicalDeviceExclusiveScissorFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV, - eCheckpointDataNV = VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV, - eQueueFamilyCheckpointPropertiesNV = VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV, - ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL, - eQueryPoolCreateInfoINTEL = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL, - eInitializePerformanceApiInfoINTEL = VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL, - ePerformanceMarkerInfoINTEL = VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL, - ePerformanceStreamMarkerInfoINTEL = VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL, - ePerformanceOverrideInfoINTEL = VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL, - ePerformanceConfigurationAcquireInfoINTEL = VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL, - ePhysicalDeviceVulkanMemoryModelFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR, - ePhysicalDevicePciBusInfoPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT, - eDisplayNativeHdrSurfaceCapabilitiesAMD = VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD, - eSwapchainDisplayNativeHdrCreateInfoAMD = VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD, - eImagepipeSurfaceCreateInfoFUCHSIA = VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA, - eMetalSurfaceCreateInfoEXT = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT, - ePhysicalDeviceFragmentDensityMapFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, - ePhysicalDeviceFragmentDensityMapPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT, - eRenderPassFragmentDensityMapCreateInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT, - ePhysicalDeviceScalarBlockLayoutFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT, - ePhysicalDeviceSubgroupSizeControlPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT, - ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT, - ePhysicalDeviceSubgroupSizeControlFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT, - ePhysicalDeviceShaderCoreProperties2AMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD, - ePhysicalDeviceCoherentMemoryFeaturesAMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, - ePhysicalDeviceMemoryBudgetPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT, - ePhysicalDeviceMemoryPriorityFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, - eMemoryPriorityAllocateInfoEXT = VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT, - eSurfaceProtectedCapabilitiesKHR = VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR, - ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, - ePhysicalDeviceBufferDeviceAddressFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, - eBufferDeviceAddressInfoEXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT, - eBufferDeviceAddressCreateInfoEXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT, - eImageStencilUsageCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT, - eValidationFeaturesEXT = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT, - ePhysicalDeviceCooperativeMatrixFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV, - eCooperativeMatrixPropertiesNV = VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV, - ePhysicalDeviceCooperativeMatrixPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV, - ePhysicalDeviceCoverageReductionModeFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV, - ePipelineCoverageReductionStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV, - eFramebufferMixedSamplesCombinationNV = VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV, - ePhysicalDeviceFragmentShaderInterlockFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, - ePhysicalDeviceYcbcrImageArraysFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT, - ePhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR, - eSurfaceFullScreenExclusiveInfoEXT = VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT, - eSurfaceCapabilitiesFullScreenExclusiveEXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT, - eSurfaceFullScreenExclusiveWin32InfoEXT = VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT, - eHeadlessSurfaceCreateInfoEXT = VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT, - ePhysicalDeviceLineRasterizationFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT, - ePipelineRasterizationLineStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT, - ePhysicalDeviceLineRasterizationPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT, - ePhysicalDeviceHostQueryResetFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT, - ePhysicalDeviceIndexTypeUint8FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT, - ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, - ePipelineInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR, - ePipelineExecutablePropertiesKHR = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR, - ePipelineExecutableInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR, - ePipelineExecutableStatisticKHR = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR, - ePipelineExecutableInternalRepresentationKHR = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR, - ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT, - ePhysicalDeviceTexelBufferAlignmentFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, - ePhysicalDeviceTexelBufferAlignmentPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT, - ePhysicalDeviceVariablePointerFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES, - ePhysicalDeviceShaderDrawParameterFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES, - eDebugReportCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT, - eRenderPassMultiviewCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR, - ePhysicalDeviceMultiviewFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR, - ePhysicalDeviceMultiviewPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR, - ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR, - ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR, - eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR, - eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR, - ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR, - eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR, - ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR, - eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR, - ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR, - eMemoryAllocateFlagsInfoKHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR, - eDeviceGroupRenderPassBeginInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR, - eDeviceGroupCommandBufferBeginInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR, - eDeviceGroupSubmitInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR, - eDeviceGroupBindSparseInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR, - eBindBufferMemoryDeviceGroupInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR, - eBindImageMemoryDeviceGroupInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR, - ePhysicalDeviceGroupPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR, - eDeviceGroupDeviceCreateInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR, - ePhysicalDeviceExternalImageFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR, - eExternalImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR, - ePhysicalDeviceExternalBufferInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR, - eExternalBufferPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR, - ePhysicalDeviceIdPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR, - eExternalMemoryBufferCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR, - eExternalMemoryImageCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR, - eExportMemoryAllocateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR, - ePhysicalDeviceExternalSemaphoreInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR, - eExternalSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR, - eExportSemaphoreCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR, - ePhysicalDeviceFloat16Int8FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR, - ePhysicalDevice16BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR, - eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR, - ePhysicalDeviceExternalFenceInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR, - eExternalFencePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR, - eExportFenceCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR, - ePhysicalDevicePointClippingPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR, - eRenderPassInputAttachmentAspectCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR, - eImageViewUsageCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR, - ePipelineTessellationDomainOriginStateCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR, - ePhysicalDeviceVariablePointerFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR, - ePhysicalDeviceVariablePointersFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR, - eMemoryDedicatedRequirementsKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR, - eMemoryDedicatedAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR, - eBufferMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR, - eImageMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR, - eImageSparseMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR, - eMemoryRequirements2KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR, - eSparseImageMemoryRequirements2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR, - eSamplerYcbcrConversionCreateInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR, - eSamplerYcbcrConversionInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR, - eBindImagePlaneMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR, - eImagePlaneMemoryRequirementsInfoKHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR, - ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR, - eSamplerYcbcrConversionImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR, - eBindBufferMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR, - eBindImageMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR, - ePhysicalDeviceMaintenance3PropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR, - eDescriptorSetLayoutSupportKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR, - ePhysicalDeviceBufferAddressFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT - }; - - VULKAN_HPP_INLINE std::string to_string( StructureType value ) - { - switch ( value ) - { - case StructureType::eApplicationInfo : return "ApplicationInfo"; - case StructureType::eInstanceCreateInfo : return "InstanceCreateInfo"; - case StructureType::eDeviceQueueCreateInfo : return "DeviceQueueCreateInfo"; - case StructureType::eDeviceCreateInfo : return "DeviceCreateInfo"; - case StructureType::eSubmitInfo : return "SubmitInfo"; - case StructureType::eMemoryAllocateInfo : return "MemoryAllocateInfo"; - case StructureType::eMappedMemoryRange : return "MappedMemoryRange"; - case StructureType::eBindSparseInfo : return "BindSparseInfo"; - case StructureType::eFenceCreateInfo : return "FenceCreateInfo"; - case StructureType::eSemaphoreCreateInfo : return "SemaphoreCreateInfo"; - case StructureType::eEventCreateInfo : return "EventCreateInfo"; - case StructureType::eQueryPoolCreateInfo : return "QueryPoolCreateInfo"; - case StructureType::eBufferCreateInfo : return "BufferCreateInfo"; - case StructureType::eBufferViewCreateInfo : return "BufferViewCreateInfo"; - case StructureType::eImageCreateInfo : return "ImageCreateInfo"; - case StructureType::eImageViewCreateInfo : return "ImageViewCreateInfo"; - case StructureType::eShaderModuleCreateInfo : return "ShaderModuleCreateInfo"; - case StructureType::ePipelineCacheCreateInfo : return "PipelineCacheCreateInfo"; - case StructureType::ePipelineShaderStageCreateInfo : return "PipelineShaderStageCreateInfo"; - case StructureType::ePipelineVertexInputStateCreateInfo : return "PipelineVertexInputStateCreateInfo"; - case StructureType::ePipelineInputAssemblyStateCreateInfo : return "PipelineInputAssemblyStateCreateInfo"; - case StructureType::ePipelineTessellationStateCreateInfo : return "PipelineTessellationStateCreateInfo"; - case StructureType::ePipelineViewportStateCreateInfo : return "PipelineViewportStateCreateInfo"; - case StructureType::ePipelineRasterizationStateCreateInfo : return "PipelineRasterizationStateCreateInfo"; - case StructureType::ePipelineMultisampleStateCreateInfo : return "PipelineMultisampleStateCreateInfo"; - case StructureType::ePipelineDepthStencilStateCreateInfo : return "PipelineDepthStencilStateCreateInfo"; - case StructureType::ePipelineColorBlendStateCreateInfo : return "PipelineColorBlendStateCreateInfo"; - case StructureType::ePipelineDynamicStateCreateInfo : return "PipelineDynamicStateCreateInfo"; - case StructureType::eGraphicsPipelineCreateInfo : return "GraphicsPipelineCreateInfo"; - case StructureType::eComputePipelineCreateInfo : return "ComputePipelineCreateInfo"; - case StructureType::ePipelineLayoutCreateInfo : return "PipelineLayoutCreateInfo"; - case StructureType::eSamplerCreateInfo : return "SamplerCreateInfo"; - case StructureType::eDescriptorSetLayoutCreateInfo : return "DescriptorSetLayoutCreateInfo"; - case StructureType::eDescriptorPoolCreateInfo : return "DescriptorPoolCreateInfo"; - case StructureType::eDescriptorSetAllocateInfo : return "DescriptorSetAllocateInfo"; - case StructureType::eWriteDescriptorSet : return "WriteDescriptorSet"; - case StructureType::eCopyDescriptorSet : return "CopyDescriptorSet"; - case StructureType::eFramebufferCreateInfo : return "FramebufferCreateInfo"; - case StructureType::eRenderPassCreateInfo : return "RenderPassCreateInfo"; - case StructureType::eCommandPoolCreateInfo : return "CommandPoolCreateInfo"; - case StructureType::eCommandBufferAllocateInfo : return "CommandBufferAllocateInfo"; - case StructureType::eCommandBufferInheritanceInfo : return "CommandBufferInheritanceInfo"; - case StructureType::eCommandBufferBeginInfo : return "CommandBufferBeginInfo"; - case StructureType::eRenderPassBeginInfo : return "RenderPassBeginInfo"; - case StructureType::eBufferMemoryBarrier : return "BufferMemoryBarrier"; - case StructureType::eImageMemoryBarrier : return "ImageMemoryBarrier"; - case StructureType::eMemoryBarrier : return "MemoryBarrier"; - case StructureType::eLoaderInstanceCreateInfo : return "LoaderInstanceCreateInfo"; - case StructureType::eLoaderDeviceCreateInfo : return "LoaderDeviceCreateInfo"; - case StructureType::ePhysicalDeviceSubgroupProperties : return "PhysicalDeviceSubgroupProperties"; - case StructureType::eBindBufferMemoryInfo : return "BindBufferMemoryInfo"; - case StructureType::eBindImageMemoryInfo : return "BindImageMemoryInfo"; - case StructureType::ePhysicalDevice16BitStorageFeatures : return "PhysicalDevice16BitStorageFeatures"; - case StructureType::eMemoryDedicatedRequirements : return "MemoryDedicatedRequirements"; - case StructureType::eMemoryDedicatedAllocateInfo : return "MemoryDedicatedAllocateInfo"; - case StructureType::eMemoryAllocateFlagsInfo : return "MemoryAllocateFlagsInfo"; - case StructureType::eDeviceGroupRenderPassBeginInfo : return "DeviceGroupRenderPassBeginInfo"; - case StructureType::eDeviceGroupCommandBufferBeginInfo : return "DeviceGroupCommandBufferBeginInfo"; - case StructureType::eDeviceGroupSubmitInfo : return "DeviceGroupSubmitInfo"; - case StructureType::eDeviceGroupBindSparseInfo : return "DeviceGroupBindSparseInfo"; - case StructureType::eBindBufferMemoryDeviceGroupInfo : return "BindBufferMemoryDeviceGroupInfo"; - case StructureType::eBindImageMemoryDeviceGroupInfo : return "BindImageMemoryDeviceGroupInfo"; - case StructureType::ePhysicalDeviceGroupProperties : return "PhysicalDeviceGroupProperties"; - case StructureType::eDeviceGroupDeviceCreateInfo : return "DeviceGroupDeviceCreateInfo"; - case StructureType::eBufferMemoryRequirementsInfo2 : return "BufferMemoryRequirementsInfo2"; - case StructureType::eImageMemoryRequirementsInfo2 : return "ImageMemoryRequirementsInfo2"; - case StructureType::eImageSparseMemoryRequirementsInfo2 : return "ImageSparseMemoryRequirementsInfo2"; - case StructureType::eMemoryRequirements2 : return "MemoryRequirements2"; - case StructureType::eSparseImageMemoryRequirements2 : return "SparseImageMemoryRequirements2"; - case StructureType::ePhysicalDeviceFeatures2 : return "PhysicalDeviceFeatures2"; - case StructureType::ePhysicalDeviceProperties2 : return "PhysicalDeviceProperties2"; - case StructureType::eFormatProperties2 : return "FormatProperties2"; - case StructureType::eImageFormatProperties2 : return "ImageFormatProperties2"; - case StructureType::ePhysicalDeviceImageFormatInfo2 : return "PhysicalDeviceImageFormatInfo2"; - case StructureType::eQueueFamilyProperties2 : return "QueueFamilyProperties2"; - case StructureType::ePhysicalDeviceMemoryProperties2 : return "PhysicalDeviceMemoryProperties2"; - case StructureType::eSparseImageFormatProperties2 : return "SparseImageFormatProperties2"; - case StructureType::ePhysicalDeviceSparseImageFormatInfo2 : return "PhysicalDeviceSparseImageFormatInfo2"; - case StructureType::ePhysicalDevicePointClippingProperties : return "PhysicalDevicePointClippingProperties"; - case StructureType::eRenderPassInputAttachmentAspectCreateInfo : return "RenderPassInputAttachmentAspectCreateInfo"; - case StructureType::eImageViewUsageCreateInfo : return "ImageViewUsageCreateInfo"; - case StructureType::ePipelineTessellationDomainOriginStateCreateInfo : return "PipelineTessellationDomainOriginStateCreateInfo"; - case StructureType::eRenderPassMultiviewCreateInfo : return "RenderPassMultiviewCreateInfo"; - case StructureType::ePhysicalDeviceMultiviewFeatures : return "PhysicalDeviceMultiviewFeatures"; - case StructureType::ePhysicalDeviceMultiviewProperties : return "PhysicalDeviceMultiviewProperties"; - case StructureType::ePhysicalDeviceVariablePointersFeatures : return "PhysicalDeviceVariablePointersFeatures"; - case StructureType::eProtectedSubmitInfo : return "ProtectedSubmitInfo"; - case StructureType::ePhysicalDeviceProtectedMemoryFeatures : return "PhysicalDeviceProtectedMemoryFeatures"; - case StructureType::ePhysicalDeviceProtectedMemoryProperties : return "PhysicalDeviceProtectedMemoryProperties"; - case StructureType::eDeviceQueueInfo2 : return "DeviceQueueInfo2"; - case StructureType::eSamplerYcbcrConversionCreateInfo : return "SamplerYcbcrConversionCreateInfo"; - case StructureType::eSamplerYcbcrConversionInfo : return "SamplerYcbcrConversionInfo"; - case StructureType::eBindImagePlaneMemoryInfo : return "BindImagePlaneMemoryInfo"; - case StructureType::eImagePlaneMemoryRequirementsInfo : return "ImagePlaneMemoryRequirementsInfo"; - case StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures : return "PhysicalDeviceSamplerYcbcrConversionFeatures"; - case StructureType::eSamplerYcbcrConversionImageFormatProperties : return "SamplerYcbcrConversionImageFormatProperties"; - case StructureType::eDescriptorUpdateTemplateCreateInfo : return "DescriptorUpdateTemplateCreateInfo"; - case StructureType::ePhysicalDeviceExternalImageFormatInfo : return "PhysicalDeviceExternalImageFormatInfo"; - case StructureType::eExternalImageFormatProperties : return "ExternalImageFormatProperties"; - case StructureType::ePhysicalDeviceExternalBufferInfo : return "PhysicalDeviceExternalBufferInfo"; - case StructureType::eExternalBufferProperties : return "ExternalBufferProperties"; - case StructureType::ePhysicalDeviceIdProperties : return "PhysicalDeviceIdProperties"; - case StructureType::eExternalMemoryBufferCreateInfo : return "ExternalMemoryBufferCreateInfo"; - case StructureType::eExternalMemoryImageCreateInfo : return "ExternalMemoryImageCreateInfo"; - case StructureType::eExportMemoryAllocateInfo : return "ExportMemoryAllocateInfo"; - case StructureType::ePhysicalDeviceExternalFenceInfo : return "PhysicalDeviceExternalFenceInfo"; - case StructureType::eExternalFenceProperties : return "ExternalFenceProperties"; - case StructureType::eExportFenceCreateInfo : return "ExportFenceCreateInfo"; - case StructureType::eExportSemaphoreCreateInfo : return "ExportSemaphoreCreateInfo"; - case StructureType::ePhysicalDeviceExternalSemaphoreInfo : return "PhysicalDeviceExternalSemaphoreInfo"; - case StructureType::eExternalSemaphoreProperties : return "ExternalSemaphoreProperties"; - case StructureType::ePhysicalDeviceMaintenance3Properties : return "PhysicalDeviceMaintenance3Properties"; - case StructureType::eDescriptorSetLayoutSupport : return "DescriptorSetLayoutSupport"; - case StructureType::ePhysicalDeviceShaderDrawParametersFeatures : return "PhysicalDeviceShaderDrawParametersFeatures"; - case StructureType::eSwapchainCreateInfoKHR : return "SwapchainCreateInfoKHR"; - case StructureType::ePresentInfoKHR : return "PresentInfoKHR"; - case StructureType::eDeviceGroupPresentCapabilitiesKHR : return "DeviceGroupPresentCapabilitiesKHR"; - case StructureType::eImageSwapchainCreateInfoKHR : return "ImageSwapchainCreateInfoKHR"; - case StructureType::eBindImageMemorySwapchainInfoKHR : return "BindImageMemorySwapchainInfoKHR"; - case StructureType::eAcquireNextImageInfoKHR : return "AcquireNextImageInfoKHR"; - case StructureType::eDeviceGroupPresentInfoKHR : return "DeviceGroupPresentInfoKHR"; - case StructureType::eDeviceGroupSwapchainCreateInfoKHR : return "DeviceGroupSwapchainCreateInfoKHR"; - case StructureType::eDisplayModeCreateInfoKHR : return "DisplayModeCreateInfoKHR"; - case StructureType::eDisplaySurfaceCreateInfoKHR : return "DisplaySurfaceCreateInfoKHR"; - case StructureType::eDisplayPresentInfoKHR : return "DisplayPresentInfoKHR"; - case StructureType::eXlibSurfaceCreateInfoKHR : return "XlibSurfaceCreateInfoKHR"; - case StructureType::eXcbSurfaceCreateInfoKHR : return "XcbSurfaceCreateInfoKHR"; - case StructureType::eWaylandSurfaceCreateInfoKHR : return "WaylandSurfaceCreateInfoKHR"; - case StructureType::eAndroidSurfaceCreateInfoKHR : return "AndroidSurfaceCreateInfoKHR"; - case StructureType::eWin32SurfaceCreateInfoKHR : return "Win32SurfaceCreateInfoKHR"; - case StructureType::eDebugReportCallbackCreateInfoEXT : return "DebugReportCallbackCreateInfoEXT"; - case StructureType::ePipelineRasterizationStateRasterizationOrderAMD : return "PipelineRasterizationStateRasterizationOrderAMD"; - case StructureType::eDebugMarkerObjectNameInfoEXT : return "DebugMarkerObjectNameInfoEXT"; - case StructureType::eDebugMarkerObjectTagInfoEXT : return "DebugMarkerObjectTagInfoEXT"; - case StructureType::eDebugMarkerMarkerInfoEXT : return "DebugMarkerMarkerInfoEXT"; - case StructureType::eDedicatedAllocationImageCreateInfoNV : return "DedicatedAllocationImageCreateInfoNV"; - case StructureType::eDedicatedAllocationBufferCreateInfoNV : return "DedicatedAllocationBufferCreateInfoNV"; - case StructureType::eDedicatedAllocationMemoryAllocateInfoNV : return "DedicatedAllocationMemoryAllocateInfoNV"; - case StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT : return "PhysicalDeviceTransformFeedbackFeaturesEXT"; - case StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT : return "PhysicalDeviceTransformFeedbackPropertiesEXT"; - case StructureType::ePipelineRasterizationStateStreamCreateInfoEXT : return "PipelineRasterizationStateStreamCreateInfoEXT"; - case StructureType::eImageViewHandleInfoNVX : return "ImageViewHandleInfoNVX"; - case StructureType::eTextureLodGatherFormatPropertiesAMD : return "TextureLodGatherFormatPropertiesAMD"; - case StructureType::eStreamDescriptorSurfaceCreateInfoGGP : return "StreamDescriptorSurfaceCreateInfoGGP"; - case StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV : return "PhysicalDeviceCornerSampledImageFeaturesNV"; - case StructureType::eExternalMemoryImageCreateInfoNV : return "ExternalMemoryImageCreateInfoNV"; - case StructureType::eExportMemoryAllocateInfoNV : return "ExportMemoryAllocateInfoNV"; - case StructureType::eImportMemoryWin32HandleInfoNV : return "ImportMemoryWin32HandleInfoNV"; - case StructureType::eExportMemoryWin32HandleInfoNV : return "ExportMemoryWin32HandleInfoNV"; - case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV : return "Win32KeyedMutexAcquireReleaseInfoNV"; - case StructureType::eValidationFlagsEXT : return "ValidationFlagsEXT"; - case StructureType::eViSurfaceCreateInfoNN : return "ViSurfaceCreateInfoNN"; - case StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeaturesEXT : return "PhysicalDeviceTextureCompressionAstcHdrFeaturesEXT"; - case StructureType::eImageViewAstcDecodeModeEXT : return "ImageViewAstcDecodeModeEXT"; - case StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT : return "PhysicalDeviceAstcDecodeFeaturesEXT"; - case StructureType::eImportMemoryWin32HandleInfoKHR : return "ImportMemoryWin32HandleInfoKHR"; - case StructureType::eExportMemoryWin32HandleInfoKHR : return "ExportMemoryWin32HandleInfoKHR"; - case StructureType::eMemoryWin32HandlePropertiesKHR : return "MemoryWin32HandlePropertiesKHR"; - case StructureType::eMemoryGetWin32HandleInfoKHR : return "MemoryGetWin32HandleInfoKHR"; - case StructureType::eImportMemoryFdInfoKHR : return "ImportMemoryFdInfoKHR"; - case StructureType::eMemoryFdPropertiesKHR : return "MemoryFdPropertiesKHR"; - case StructureType::eMemoryGetFdInfoKHR : return "MemoryGetFdInfoKHR"; - case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR : return "Win32KeyedMutexAcquireReleaseInfoKHR"; - case StructureType::eImportSemaphoreWin32HandleInfoKHR : return "ImportSemaphoreWin32HandleInfoKHR"; - case StructureType::eExportSemaphoreWin32HandleInfoKHR : return "ExportSemaphoreWin32HandleInfoKHR"; - case StructureType::eD3D12FenceSubmitInfoKHR : return "D3D12FenceSubmitInfoKHR"; - case StructureType::eSemaphoreGetWin32HandleInfoKHR : return "SemaphoreGetWin32HandleInfoKHR"; - case StructureType::eImportSemaphoreFdInfoKHR : return "ImportSemaphoreFdInfoKHR"; - case StructureType::eSemaphoreGetFdInfoKHR : return "SemaphoreGetFdInfoKHR"; - case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR : return "PhysicalDevicePushDescriptorPropertiesKHR"; - case StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT : return "CommandBufferInheritanceConditionalRenderingInfoEXT"; - case StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT : return "PhysicalDeviceConditionalRenderingFeaturesEXT"; - case StructureType::eConditionalRenderingBeginInfoEXT : return "ConditionalRenderingBeginInfoEXT"; - case StructureType::ePhysicalDeviceShaderFloat16Int8FeaturesKHR : return "PhysicalDeviceShaderFloat16Int8FeaturesKHR"; - case StructureType::ePresentRegionsKHR : return "PresentRegionsKHR"; - case StructureType::eObjectTableCreateInfoNVX : return "ObjectTableCreateInfoNVX"; - case StructureType::eIndirectCommandsLayoutCreateInfoNVX : return "IndirectCommandsLayoutCreateInfoNVX"; - case StructureType::eCmdProcessCommandsInfoNVX : return "CmdProcessCommandsInfoNVX"; - case StructureType::eCmdReserveSpaceForCommandsInfoNVX : return "CmdReserveSpaceForCommandsInfoNVX"; - case StructureType::eDeviceGeneratedCommandsLimitsNVX : return "DeviceGeneratedCommandsLimitsNVX"; - case StructureType::eDeviceGeneratedCommandsFeaturesNVX : return "DeviceGeneratedCommandsFeaturesNVX"; - case StructureType::ePipelineViewportWScalingStateCreateInfoNV : return "PipelineViewportWScalingStateCreateInfoNV"; - case StructureType::eSurfaceCapabilities2EXT : return "SurfaceCapabilities2EXT"; - case StructureType::eDisplayPowerInfoEXT : return "DisplayPowerInfoEXT"; - case StructureType::eDeviceEventInfoEXT : return "DeviceEventInfoEXT"; - case StructureType::eDisplayEventInfoEXT : return "DisplayEventInfoEXT"; - case StructureType::eSwapchainCounterCreateInfoEXT : return "SwapchainCounterCreateInfoEXT"; - case StructureType::ePresentTimesInfoGOOGLE : return "PresentTimesInfoGOOGLE"; - case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX : return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX"; - case StructureType::ePipelineViewportSwizzleStateCreateInfoNV : return "PipelineViewportSwizzleStateCreateInfoNV"; - case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT : return "PhysicalDeviceDiscardRectanglePropertiesEXT"; - case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT : return "PipelineDiscardRectangleStateCreateInfoEXT"; - case StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT : return "PhysicalDeviceConservativeRasterizationPropertiesEXT"; - case StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT : return "PipelineRasterizationConservativeStateCreateInfoEXT"; - case StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT : return "PhysicalDeviceDepthClipEnableFeaturesEXT"; - case StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT : return "PipelineRasterizationDepthClipStateCreateInfoEXT"; - case StructureType::eHdrMetadataEXT : return "HdrMetadataEXT"; - case StructureType::ePhysicalDeviceImagelessFramebufferFeaturesKHR : return "PhysicalDeviceImagelessFramebufferFeaturesKHR"; - case StructureType::eFramebufferAttachmentsCreateInfoKHR : return "FramebufferAttachmentsCreateInfoKHR"; - case StructureType::eFramebufferAttachmentImageInfoKHR : return "FramebufferAttachmentImageInfoKHR"; - case StructureType::eRenderPassAttachmentBeginInfoKHR : return "RenderPassAttachmentBeginInfoKHR"; - case StructureType::eAttachmentDescription2KHR : return "AttachmentDescription2KHR"; - case StructureType::eAttachmentReference2KHR : return "AttachmentReference2KHR"; - case StructureType::eSubpassDescription2KHR : return "SubpassDescription2KHR"; - case StructureType::eSubpassDependency2KHR : return "SubpassDependency2KHR"; - case StructureType::eRenderPassCreateInfo2KHR : return "RenderPassCreateInfo2KHR"; - case StructureType::eSubpassBeginInfoKHR : return "SubpassBeginInfoKHR"; - case StructureType::eSubpassEndInfoKHR : return "SubpassEndInfoKHR"; - case StructureType::eSharedPresentSurfaceCapabilitiesKHR : return "SharedPresentSurfaceCapabilitiesKHR"; - case StructureType::eImportFenceWin32HandleInfoKHR : return "ImportFenceWin32HandleInfoKHR"; - case StructureType::eExportFenceWin32HandleInfoKHR : return "ExportFenceWin32HandleInfoKHR"; - case StructureType::eFenceGetWin32HandleInfoKHR : return "FenceGetWin32HandleInfoKHR"; - case StructureType::eImportFenceFdInfoKHR : return "ImportFenceFdInfoKHR"; - case StructureType::eFenceGetFdInfoKHR : return "FenceGetFdInfoKHR"; - case StructureType::ePhysicalDeviceSurfaceInfo2KHR : return "PhysicalDeviceSurfaceInfo2KHR"; - case StructureType::eSurfaceCapabilities2KHR : return "SurfaceCapabilities2KHR"; - case StructureType::eSurfaceFormat2KHR : return "SurfaceFormat2KHR"; - case StructureType::eDisplayProperties2KHR : return "DisplayProperties2KHR"; - case StructureType::eDisplayPlaneProperties2KHR : return "DisplayPlaneProperties2KHR"; - case StructureType::eDisplayModeProperties2KHR : return "DisplayModeProperties2KHR"; - case StructureType::eDisplayPlaneInfo2KHR : return "DisplayPlaneInfo2KHR"; - case StructureType::eDisplayPlaneCapabilities2KHR : return "DisplayPlaneCapabilities2KHR"; - case StructureType::eIosSurfaceCreateInfoMVK : return "IosSurfaceCreateInfoMVK"; - case StructureType::eMacosSurfaceCreateInfoMVK : return "MacosSurfaceCreateInfoMVK"; - case StructureType::eDebugUtilsObjectNameInfoEXT : return "DebugUtilsObjectNameInfoEXT"; - case StructureType::eDebugUtilsObjectTagInfoEXT : return "DebugUtilsObjectTagInfoEXT"; - case StructureType::eDebugUtilsLabelEXT : return "DebugUtilsLabelEXT"; - case StructureType::eDebugUtilsMessengerCallbackDataEXT : return "DebugUtilsMessengerCallbackDataEXT"; - case StructureType::eDebugUtilsMessengerCreateInfoEXT : return "DebugUtilsMessengerCreateInfoEXT"; - case StructureType::eAndroidHardwareBufferUsageANDROID : return "AndroidHardwareBufferUsageANDROID"; - case StructureType::eAndroidHardwareBufferPropertiesANDROID : return "AndroidHardwareBufferPropertiesANDROID"; - case StructureType::eAndroidHardwareBufferFormatPropertiesANDROID : return "AndroidHardwareBufferFormatPropertiesANDROID"; - case StructureType::eImportAndroidHardwareBufferInfoANDROID : return "ImportAndroidHardwareBufferInfoANDROID"; - case StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID : return "MemoryGetAndroidHardwareBufferInfoANDROID"; - case StructureType::eExternalFormatANDROID : return "ExternalFormatANDROID"; - case StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT : return "PhysicalDeviceSamplerFilterMinmaxPropertiesEXT"; - case StructureType::eSamplerReductionModeCreateInfoEXT : return "SamplerReductionModeCreateInfoEXT"; - case StructureType::ePhysicalDeviceInlineUniformBlockFeaturesEXT : return "PhysicalDeviceInlineUniformBlockFeaturesEXT"; - case StructureType::ePhysicalDeviceInlineUniformBlockPropertiesEXT : return "PhysicalDeviceInlineUniformBlockPropertiesEXT"; - case StructureType::eWriteDescriptorSetInlineUniformBlockEXT : return "WriteDescriptorSetInlineUniformBlockEXT"; - case StructureType::eDescriptorPoolInlineUniformBlockCreateInfoEXT : return "DescriptorPoolInlineUniformBlockCreateInfoEXT"; - case StructureType::eSampleLocationsInfoEXT : return "SampleLocationsInfoEXT"; - case StructureType::eRenderPassSampleLocationsBeginInfoEXT : return "RenderPassSampleLocationsBeginInfoEXT"; - case StructureType::ePipelineSampleLocationsStateCreateInfoEXT : return "PipelineSampleLocationsStateCreateInfoEXT"; - case StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT : return "PhysicalDeviceSampleLocationsPropertiesEXT"; - case StructureType::eMultisamplePropertiesEXT : return "MultisamplePropertiesEXT"; - case StructureType::eImageFormatListCreateInfoKHR : return "ImageFormatListCreateInfoKHR"; - case StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT : return "PhysicalDeviceBlendOperationAdvancedFeaturesEXT"; - case StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT : return "PhysicalDeviceBlendOperationAdvancedPropertiesEXT"; - case StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT : return "PipelineColorBlendAdvancedStateCreateInfoEXT"; - case StructureType::ePipelineCoverageToColorStateCreateInfoNV : return "PipelineCoverageToColorStateCreateInfoNV"; - case StructureType::ePipelineCoverageModulationStateCreateInfoNV : return "PipelineCoverageModulationStateCreateInfoNV"; - case StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV : return "PhysicalDeviceShaderSmBuiltinsFeaturesNV"; - case StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV : return "PhysicalDeviceShaderSmBuiltinsPropertiesNV"; - case StructureType::eDrmFormatModifierPropertiesListEXT : return "DrmFormatModifierPropertiesListEXT"; - case StructureType::eDrmFormatModifierPropertiesEXT : return "DrmFormatModifierPropertiesEXT"; - case StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT : return "PhysicalDeviceImageDrmFormatModifierInfoEXT"; - case StructureType::eImageDrmFormatModifierListCreateInfoEXT : return "ImageDrmFormatModifierListCreateInfoEXT"; - case StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT : return "ImageDrmFormatModifierExplicitCreateInfoEXT"; - case StructureType::eImageDrmFormatModifierPropertiesEXT : return "ImageDrmFormatModifierPropertiesEXT"; - case StructureType::eValidationCacheCreateInfoEXT : return "ValidationCacheCreateInfoEXT"; - case StructureType::eShaderModuleValidationCacheCreateInfoEXT : return "ShaderModuleValidationCacheCreateInfoEXT"; - case StructureType::eDescriptorSetLayoutBindingFlagsCreateInfoEXT : return "DescriptorSetLayoutBindingFlagsCreateInfoEXT"; - case StructureType::ePhysicalDeviceDescriptorIndexingFeaturesEXT : return "PhysicalDeviceDescriptorIndexingFeaturesEXT"; - case StructureType::ePhysicalDeviceDescriptorIndexingPropertiesEXT : return "PhysicalDeviceDescriptorIndexingPropertiesEXT"; - case StructureType::eDescriptorSetVariableDescriptorCountAllocateInfoEXT : return "DescriptorSetVariableDescriptorCountAllocateInfoEXT"; - case StructureType::eDescriptorSetVariableDescriptorCountLayoutSupportEXT : return "DescriptorSetVariableDescriptorCountLayoutSupportEXT"; - case StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV : return "PipelineViewportShadingRateImageStateCreateInfoNV"; - case StructureType::ePhysicalDeviceShadingRateImageFeaturesNV : return "PhysicalDeviceShadingRateImageFeaturesNV"; - case StructureType::ePhysicalDeviceShadingRateImagePropertiesNV : return "PhysicalDeviceShadingRateImagePropertiesNV"; - case StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV : return "PipelineViewportCoarseSampleOrderStateCreateInfoNV"; - case StructureType::eRayTracingPipelineCreateInfoNV : return "RayTracingPipelineCreateInfoNV"; - case StructureType::eAccelerationStructureCreateInfoNV : return "AccelerationStructureCreateInfoNV"; - case StructureType::eGeometryNV : return "GeometryNV"; - case StructureType::eGeometryTrianglesNV : return "GeometryTrianglesNV"; - case StructureType::eGeometryAabbNV : return "GeometryAabbNV"; - case StructureType::eBindAccelerationStructureMemoryInfoNV : return "BindAccelerationStructureMemoryInfoNV"; - case StructureType::eWriteDescriptorSetAccelerationStructureNV : return "WriteDescriptorSetAccelerationStructureNV"; - case StructureType::eAccelerationStructureMemoryRequirementsInfoNV : return "AccelerationStructureMemoryRequirementsInfoNV"; - case StructureType::ePhysicalDeviceRayTracingPropertiesNV : return "PhysicalDeviceRayTracingPropertiesNV"; - case StructureType::eRayTracingShaderGroupCreateInfoNV : return "RayTracingShaderGroupCreateInfoNV"; - case StructureType::eAccelerationStructureInfoNV : return "AccelerationStructureInfoNV"; - case StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV : return "PhysicalDeviceRepresentativeFragmentTestFeaturesNV"; - case StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV : return "PipelineRepresentativeFragmentTestStateCreateInfoNV"; - case StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT : return "PhysicalDeviceImageViewImageFormatInfoEXT"; - case StructureType::eFilterCubicImageViewImageFormatPropertiesEXT : return "FilterCubicImageViewImageFormatPropertiesEXT"; - case StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT : return "DeviceQueueGlobalPriorityCreateInfoEXT"; - case StructureType::ePhysicalDevice8BitStorageFeaturesKHR : return "PhysicalDevice8BitStorageFeaturesKHR"; - case StructureType::eImportMemoryHostPointerInfoEXT : return "ImportMemoryHostPointerInfoEXT"; - case StructureType::eMemoryHostPointerPropertiesEXT : return "MemoryHostPointerPropertiesEXT"; - case StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT : return "PhysicalDeviceExternalMemoryHostPropertiesEXT"; - case StructureType::ePhysicalDeviceShaderAtomicInt64FeaturesKHR : return "PhysicalDeviceShaderAtomicInt64FeaturesKHR"; - case StructureType::ePipelineCompilerControlCreateInfoAMD : return "PipelineCompilerControlCreateInfoAMD"; - case StructureType::eCalibratedTimestampInfoEXT : return "CalibratedTimestampInfoEXT"; - case StructureType::ePhysicalDeviceShaderCorePropertiesAMD : return "PhysicalDeviceShaderCorePropertiesAMD"; - case StructureType::eDeviceMemoryOverallocationCreateInfoAMD : return "DeviceMemoryOverallocationCreateInfoAMD"; - case StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT : return "PhysicalDeviceVertexAttributeDivisorPropertiesEXT"; - case StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT : return "PipelineVertexInputDivisorStateCreateInfoEXT"; - case StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT : return "PhysicalDeviceVertexAttributeDivisorFeaturesEXT"; - case StructureType::ePresentFrameTokenGGP : return "PresentFrameTokenGGP"; - case StructureType::ePipelineCreationFeedbackCreateInfoEXT : return "PipelineCreationFeedbackCreateInfoEXT"; - case StructureType::ePhysicalDeviceDriverPropertiesKHR : return "PhysicalDeviceDriverPropertiesKHR"; - case StructureType::ePhysicalDeviceFloatControlsPropertiesKHR : return "PhysicalDeviceFloatControlsPropertiesKHR"; - case StructureType::ePhysicalDeviceDepthStencilResolvePropertiesKHR : return "PhysicalDeviceDepthStencilResolvePropertiesKHR"; - case StructureType::eSubpassDescriptionDepthStencilResolveKHR : return "SubpassDescriptionDepthStencilResolveKHR"; - case StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV : return "PhysicalDeviceComputeShaderDerivativesFeaturesNV"; - case StructureType::ePhysicalDeviceMeshShaderFeaturesNV : return "PhysicalDeviceMeshShaderFeaturesNV"; - case StructureType::ePhysicalDeviceMeshShaderPropertiesNV : return "PhysicalDeviceMeshShaderPropertiesNV"; - case StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesNV : return "PhysicalDeviceFragmentShaderBarycentricFeaturesNV"; - case StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV : return "PhysicalDeviceShaderImageFootprintFeaturesNV"; - case StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV : return "PipelineViewportExclusiveScissorStateCreateInfoNV"; - case StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV : return "PhysicalDeviceExclusiveScissorFeaturesNV"; - case StructureType::eCheckpointDataNV : return "CheckpointDataNV"; - case StructureType::eQueueFamilyCheckpointPropertiesNV : return "QueueFamilyCheckpointPropertiesNV"; - case StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL : return "PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL"; - case StructureType::eQueryPoolCreateInfoINTEL : return "QueryPoolCreateInfoINTEL"; - case StructureType::eInitializePerformanceApiInfoINTEL : return "InitializePerformanceApiInfoINTEL"; - case StructureType::ePerformanceMarkerInfoINTEL : return "PerformanceMarkerInfoINTEL"; - case StructureType::ePerformanceStreamMarkerInfoINTEL : return "PerformanceStreamMarkerInfoINTEL"; - case StructureType::ePerformanceOverrideInfoINTEL : return "PerformanceOverrideInfoINTEL"; - case StructureType::ePerformanceConfigurationAcquireInfoINTEL : return "PerformanceConfigurationAcquireInfoINTEL"; - case StructureType::ePhysicalDeviceVulkanMemoryModelFeaturesKHR : return "PhysicalDeviceVulkanMemoryModelFeaturesKHR"; - case StructureType::ePhysicalDevicePciBusInfoPropertiesEXT : return "PhysicalDevicePciBusInfoPropertiesEXT"; - case StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD : return "DisplayNativeHdrSurfaceCapabilitiesAMD"; - case StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD : return "SwapchainDisplayNativeHdrCreateInfoAMD"; - case StructureType::eImagepipeSurfaceCreateInfoFUCHSIA : return "ImagepipeSurfaceCreateInfoFUCHSIA"; - case StructureType::eMetalSurfaceCreateInfoEXT : return "MetalSurfaceCreateInfoEXT"; - case StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT : return "PhysicalDeviceFragmentDensityMapFeaturesEXT"; - case StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT : return "PhysicalDeviceFragmentDensityMapPropertiesEXT"; - case StructureType::eRenderPassFragmentDensityMapCreateInfoEXT : return "RenderPassFragmentDensityMapCreateInfoEXT"; - case StructureType::ePhysicalDeviceScalarBlockLayoutFeaturesEXT : return "PhysicalDeviceScalarBlockLayoutFeaturesEXT"; - case StructureType::ePhysicalDeviceSubgroupSizeControlPropertiesEXT : return "PhysicalDeviceSubgroupSizeControlPropertiesEXT"; - case StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT : return "PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT"; - case StructureType::ePhysicalDeviceSubgroupSizeControlFeaturesEXT : return "PhysicalDeviceSubgroupSizeControlFeaturesEXT"; - case StructureType::ePhysicalDeviceShaderCoreProperties2AMD : return "PhysicalDeviceShaderCoreProperties2AMD"; - case StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD : return "PhysicalDeviceCoherentMemoryFeaturesAMD"; - case StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT : return "PhysicalDeviceMemoryBudgetPropertiesEXT"; - case StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT : return "PhysicalDeviceMemoryPriorityFeaturesEXT"; - case StructureType::eMemoryPriorityAllocateInfoEXT : return "MemoryPriorityAllocateInfoEXT"; - case StructureType::eSurfaceProtectedCapabilitiesKHR : return "SurfaceProtectedCapabilitiesKHR"; - case StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV : return "PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV"; - case StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT : return "PhysicalDeviceBufferDeviceAddressFeaturesEXT"; - case StructureType::eBufferDeviceAddressInfoEXT : return "BufferDeviceAddressInfoEXT"; - case StructureType::eBufferDeviceAddressCreateInfoEXT : return "BufferDeviceAddressCreateInfoEXT"; - case StructureType::eImageStencilUsageCreateInfoEXT : return "ImageStencilUsageCreateInfoEXT"; - case StructureType::eValidationFeaturesEXT : return "ValidationFeaturesEXT"; - case StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV : return "PhysicalDeviceCooperativeMatrixFeaturesNV"; - case StructureType::eCooperativeMatrixPropertiesNV : return "CooperativeMatrixPropertiesNV"; - case StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV : return "PhysicalDeviceCooperativeMatrixPropertiesNV"; - case StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV : return "PhysicalDeviceCoverageReductionModeFeaturesNV"; - case StructureType::ePipelineCoverageReductionStateCreateInfoNV : return "PipelineCoverageReductionStateCreateInfoNV"; - case StructureType::eFramebufferMixedSamplesCombinationNV : return "FramebufferMixedSamplesCombinationNV"; - case StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT : return "PhysicalDeviceFragmentShaderInterlockFeaturesEXT"; - case StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT : return "PhysicalDeviceYcbcrImageArraysFeaturesEXT"; - case StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeaturesKHR : return "PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR"; - case StructureType::eSurfaceFullScreenExclusiveInfoEXT : return "SurfaceFullScreenExclusiveInfoEXT"; - case StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT : return "SurfaceCapabilitiesFullScreenExclusiveEXT"; - case StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT : return "SurfaceFullScreenExclusiveWin32InfoEXT"; - case StructureType::eHeadlessSurfaceCreateInfoEXT : return "HeadlessSurfaceCreateInfoEXT"; - case StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT : return "PhysicalDeviceLineRasterizationFeaturesEXT"; - case StructureType::ePipelineRasterizationLineStateCreateInfoEXT : return "PipelineRasterizationLineStateCreateInfoEXT"; - case StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT : return "PhysicalDeviceLineRasterizationPropertiesEXT"; - case StructureType::ePhysicalDeviceHostQueryResetFeaturesEXT : return "PhysicalDeviceHostQueryResetFeaturesEXT"; - case StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT : return "PhysicalDeviceIndexTypeUint8FeaturesEXT"; - case StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR : return "PhysicalDevicePipelineExecutablePropertiesFeaturesKHR"; - case StructureType::ePipelineInfoKHR : return "PipelineInfoKHR"; - case StructureType::ePipelineExecutablePropertiesKHR : return "PipelineExecutablePropertiesKHR"; - case StructureType::ePipelineExecutableInfoKHR : return "PipelineExecutableInfoKHR"; - case StructureType::ePipelineExecutableStatisticKHR : return "PipelineExecutableStatisticKHR"; - case StructureType::ePipelineExecutableInternalRepresentationKHR : return "PipelineExecutableInternalRepresentationKHR"; - case StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT : return "PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT"; - case StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT : return "PhysicalDeviceTexelBufferAlignmentFeaturesEXT"; - case StructureType::ePhysicalDeviceTexelBufferAlignmentPropertiesEXT : return "PhysicalDeviceTexelBufferAlignmentPropertiesEXT"; - default: return "invalid"; + VkResult vkGetPerformanceParameterINTEL( VkDevice device, + VkPerformanceParameterTypeINTEL parameter, + VkPerformanceValueINTEL * pValue ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPerformanceParameterINTEL( device, parameter, pValue ); } - } - enum class SubpassContents - { - eInline = VK_SUBPASS_CONTENTS_INLINE, - eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS - }; + //=== VK_AMD_display_native_hdr === - VULKAN_HPP_INLINE std::string to_string( SubpassContents value ) - { - switch ( value ) + void vkSetLocalDimmingAMD( VkDevice device, + VkSwapchainKHR swapChain, + VkBool32 localDimmingEnable ) const VULKAN_HPP_NOEXCEPT { - case SubpassContents::eInline : return "Inline"; - case SubpassContents::eSecondaryCommandBuffers : return "SecondaryCommandBuffers"; - default: return "invalid"; + return ::vkSetLocalDimmingAMD( device, swapChain, localDimmingEnable ); } - } - enum class SystemAllocationScope - { - eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND, - eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT, - eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE, - eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE, - eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - }; +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === - VULKAN_HPP_INLINE std::string to_string( SystemAllocationScope value ) - { - switch ( value ) + VkResult vkCreateImagePipeSurfaceFUCHSIA( VkInstance instance, + const VkImagePipeSurfaceCreateInfoFUCHSIA * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT { - case SystemAllocationScope::eCommand : return "Command"; - case SystemAllocationScope::eObject : return "Object"; - case SystemAllocationScope::eCache : return "Cache"; - case SystemAllocationScope::eDevice : return "Device"; - case SystemAllocationScope::eInstance : return "Instance"; - default: return "invalid"; + return ::vkCreateImagePipeSurfaceFUCHSIA( instance, pCreateInfo, pAllocator, pSurface ); } - } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ - enum class TessellationDomainOrigin - { - eUpperLeft = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, - eLowerLeft = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT, - eUpperLeftKHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR, - eLowerLeftKHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR - }; +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === - VULKAN_HPP_INLINE std::string to_string( TessellationDomainOrigin value ) - { - switch ( value ) + VkResult vkCreateMetalSurfaceEXT( VkInstance instance, + const VkMetalSurfaceCreateInfoEXT * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT { - case TessellationDomainOrigin::eUpperLeft : return "UpperLeft"; - case TessellationDomainOrigin::eLowerLeft : return "LowerLeft"; - default: return "invalid"; + return ::vkCreateMetalSurfaceEXT( instance, pCreateInfo, pAllocator, pSurface ); } - } +# endif /*VK_USE_PLATFORM_METAL_EXT*/ - enum class TimeDomainEXT - { - eDevice = VK_TIME_DOMAIN_DEVICE_EXT, - eClockMonotonic = VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT, - eClockMonotonicRaw = VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT, - eQueryPerformanceCounter = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT - }; + //=== VK_KHR_fragment_shading_rate === - VULKAN_HPP_INLINE std::string to_string( TimeDomainEXT value ) - { - switch ( value ) + VkResult vkGetPhysicalDeviceFragmentShadingRatesKHR( + VkPhysicalDevice physicalDevice, + uint32_t * pFragmentShadingRateCount, + VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) const VULKAN_HPP_NOEXCEPT { - case TimeDomainEXT::eDevice : return "Device"; - case TimeDomainEXT::eClockMonotonic : return "ClockMonotonic"; - case TimeDomainEXT::eClockMonotonicRaw : return "ClockMonotonicRaw"; - case TimeDomainEXT::eQueryPerformanceCounter : return "QueryPerformanceCounter"; - default: return "invalid"; + return ::vkGetPhysicalDeviceFragmentShadingRatesKHR( + physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates ); } - } - enum class ValidationCacheHeaderVersionEXT - { - eOne = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT - }; - - VULKAN_HPP_INLINE std::string to_string( ValidationCacheHeaderVersionEXT value ) - { - switch ( value ) + void vkCmdSetFragmentShadingRateKHR( VkCommandBuffer commandBuffer, + const VkExtent2D * pFragmentSize, + const VkFragmentShadingRateCombinerOpKHR combinerOps[2] ) const + VULKAN_HPP_NOEXCEPT { - case ValidationCacheHeaderVersionEXT::eOne : return "One"; - default: return "invalid"; + return ::vkCmdSetFragmentShadingRateKHR( commandBuffer, pFragmentSize, combinerOps ); } - } - enum class ValidationCheckEXT - { - eAll = VK_VALIDATION_CHECK_ALL_EXT, - eShaders = VK_VALIDATION_CHECK_SHADERS_EXT - }; + //=== VK_EXT_buffer_device_address === - VULKAN_HPP_INLINE std::string to_string( ValidationCheckEXT value ) - { - switch ( value ) + VkDeviceAddress vkGetBufferDeviceAddressEXT( VkDevice device, + const VkBufferDeviceAddressInfo * pInfo ) const VULKAN_HPP_NOEXCEPT { - case ValidationCheckEXT::eAll : return "All"; - case ValidationCheckEXT::eShaders : return "Shaders"; - default: return "invalid"; + return ::vkGetBufferDeviceAddressEXT( device, pInfo ); } - } - enum class ValidationFeatureDisableEXT - { - eAll = VK_VALIDATION_FEATURE_DISABLE_ALL_EXT, - eShaders = VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT, - eThreadSafety = VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT, - eApiParameters = VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT, - eObjectLifetimes = VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT, - eCoreChecks = VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT, - eUniqueHandles = VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT - }; + //=== VK_EXT_tooling_info === - VULKAN_HPP_INLINE std::string to_string( ValidationFeatureDisableEXT value ) - { - switch ( value ) + VkResult + vkGetPhysicalDeviceToolPropertiesEXT( VkPhysicalDevice physicalDevice, + uint32_t * pToolCount, + VkPhysicalDeviceToolProperties * pToolProperties ) const VULKAN_HPP_NOEXCEPT { - case ValidationFeatureDisableEXT::eAll : return "All"; - case ValidationFeatureDisableEXT::eShaders : return "Shaders"; - case ValidationFeatureDisableEXT::eThreadSafety : return "ThreadSafety"; - case ValidationFeatureDisableEXT::eApiParameters : return "ApiParameters"; - case ValidationFeatureDisableEXT::eObjectLifetimes : return "ObjectLifetimes"; - case ValidationFeatureDisableEXT::eCoreChecks : return "CoreChecks"; - case ValidationFeatureDisableEXT::eUniqueHandles : return "UniqueHandles"; - default: return "invalid"; + return ::vkGetPhysicalDeviceToolPropertiesEXT( physicalDevice, pToolCount, pToolProperties ); } - } - enum class ValidationFeatureEnableEXT - { - eGpuAssisted = VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT, - eGpuAssistedReserveBindingSlot = VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT, - eBestPractices = VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT - }; + //=== VK_KHR_present_wait === - VULKAN_HPP_INLINE std::string to_string( ValidationFeatureEnableEXT value ) - { - switch ( value ) + VkResult vkWaitForPresentKHR( VkDevice device, + VkSwapchainKHR swapchain, + uint64_t presentId, + uint64_t timeout ) const VULKAN_HPP_NOEXCEPT { - case ValidationFeatureEnableEXT::eGpuAssisted : return "GpuAssisted"; - case ValidationFeatureEnableEXT::eGpuAssistedReserveBindingSlot : return "GpuAssistedReserveBindingSlot"; - case ValidationFeatureEnableEXT::eBestPractices : return "BestPractices"; - default: return "invalid"; + return ::vkWaitForPresentKHR( device, swapchain, presentId, timeout ); } - } - enum class VendorId - { - eVIV = VK_VENDOR_ID_VIV, - eVSI = VK_VENDOR_ID_VSI, - eKazan = VK_VENDOR_ID_KAZAN - }; + //=== VK_NV_cooperative_matrix === - VULKAN_HPP_INLINE std::string to_string( VendorId value ) - { - switch ( value ) + VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( VkPhysicalDevice physicalDevice, + uint32_t * pPropertyCount, + VkCooperativeMatrixPropertiesNV * pProperties ) const + VULKAN_HPP_NOEXCEPT { - case VendorId::eVIV : return "VIV"; - case VendorId::eVSI : return "VSI"; - case VendorId::eKazan : return "Kazan"; - default: return "invalid"; + return ::vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( physicalDevice, pPropertyCount, pProperties ); } - } - enum class VertexInputRate - { - eVertex = VK_VERTEX_INPUT_RATE_VERTEX, - eInstance = VK_VERTEX_INPUT_RATE_INSTANCE - }; + //=== VK_NV_coverage_reduction_mode === - VULKAN_HPP_INLINE std::string to_string( VertexInputRate value ) - { - switch ( value ) + VkResult vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + VkPhysicalDevice physicalDevice, + uint32_t * pCombinationCount, + VkFramebufferMixedSamplesCombinationNV * pCombinations ) const VULKAN_HPP_NOEXCEPT { - case VertexInputRate::eVertex : return "Vertex"; - case VertexInputRate::eInstance : return "Instance"; - default: return "invalid"; + return ::vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + physicalDevice, pCombinationCount, pCombinations ); } - } - enum class ViewportCoordinateSwizzleNV - { - ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV, - eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV, - ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV, - eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV, - ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV, - eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV, - ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV, - eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV - }; +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === - VULKAN_HPP_INLINE std::string to_string( ViewportCoordinateSwizzleNV value ) - { - switch ( value ) + VkResult vkGetPhysicalDeviceSurfacePresentModes2EXT( VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo, + uint32_t * pPresentModeCount, + VkPresentModeKHR * pPresentModes ) const VULKAN_HPP_NOEXCEPT { - case ViewportCoordinateSwizzleNV::ePositiveX : return "PositiveX"; - case ViewportCoordinateSwizzleNV::eNegativeX : return "NegativeX"; - case ViewportCoordinateSwizzleNV::ePositiveY : return "PositiveY"; - case ViewportCoordinateSwizzleNV::eNegativeY : return "NegativeY"; - case ViewportCoordinateSwizzleNV::ePositiveZ : return "PositiveZ"; - case ViewportCoordinateSwizzleNV::eNegativeZ : return "NegativeZ"; - case ViewportCoordinateSwizzleNV::ePositiveW : return "PositiveW"; - case ViewportCoordinateSwizzleNV::eNegativeW : return "NegativeW"; - default: return "invalid"; + return ::vkGetPhysicalDeviceSurfacePresentModes2EXT( + physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes ); } - } - template - struct cpp_type - { - }; - - enum class AccessFlagBits - { - eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT, - eIndexRead = VK_ACCESS_INDEX_READ_BIT, - eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT, - eUniformRead = VK_ACCESS_UNIFORM_READ_BIT, - eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT, - eShaderRead = VK_ACCESS_SHADER_READ_BIT, - eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT, - eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT, - eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, - eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT, - eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, - eTransferRead = VK_ACCESS_TRANSFER_READ_BIT, - eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT, - eHostRead = VK_ACCESS_HOST_READ_BIT, - eHostWrite = VK_ACCESS_HOST_WRITE_BIT, - eMemoryRead = VK_ACCESS_MEMORY_READ_BIT, - eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT, - eTransformFeedbackWriteEXT = VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, - eTransformFeedbackCounterReadEXT = VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, - eTransformFeedbackCounterWriteEXT = VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, - eConditionalRenderingReadEXT = VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT, - eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX, - eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX, - eColorAttachmentReadNoncoherentEXT = VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, - eShadingRateImageReadNV = VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV, - eAccelerationStructureReadNV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV, - eAccelerationStructureWriteNV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV, - eFragmentDensityMapReadEXT = VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT - }; - - VULKAN_HPP_INLINE std::string to_string( AccessFlagBits value ) - { - switch ( value ) - { - case AccessFlagBits::eIndirectCommandRead : return "IndirectCommandRead"; - case AccessFlagBits::eIndexRead : return "IndexRead"; - case AccessFlagBits::eVertexAttributeRead : return "VertexAttributeRead"; - case AccessFlagBits::eUniformRead : return "UniformRead"; - case AccessFlagBits::eInputAttachmentRead : return "InputAttachmentRead"; - case AccessFlagBits::eShaderRead : return "ShaderRead"; - case AccessFlagBits::eShaderWrite : return "ShaderWrite"; - case AccessFlagBits::eColorAttachmentRead : return "ColorAttachmentRead"; - case AccessFlagBits::eColorAttachmentWrite : return "ColorAttachmentWrite"; - case AccessFlagBits::eDepthStencilAttachmentRead : return "DepthStencilAttachmentRead"; - case AccessFlagBits::eDepthStencilAttachmentWrite : return "DepthStencilAttachmentWrite"; - case AccessFlagBits::eTransferRead : return "TransferRead"; - case AccessFlagBits::eTransferWrite : return "TransferWrite"; - case AccessFlagBits::eHostRead : return "HostRead"; - case AccessFlagBits::eHostWrite : return "HostWrite"; - case AccessFlagBits::eMemoryRead : return "MemoryRead"; - case AccessFlagBits::eMemoryWrite : return "MemoryWrite"; - case AccessFlagBits::eTransformFeedbackWriteEXT : return "TransformFeedbackWriteEXT"; - case AccessFlagBits::eTransformFeedbackCounterReadEXT : return "TransformFeedbackCounterReadEXT"; - case AccessFlagBits::eTransformFeedbackCounterWriteEXT : return "TransformFeedbackCounterWriteEXT"; - case AccessFlagBits::eConditionalRenderingReadEXT : return "ConditionalRenderingReadEXT"; - case AccessFlagBits::eCommandProcessReadNVX : return "CommandProcessReadNVX"; - case AccessFlagBits::eCommandProcessWriteNVX : return "CommandProcessWriteNVX"; - case AccessFlagBits::eColorAttachmentReadNoncoherentEXT : return "ColorAttachmentReadNoncoherentEXT"; - case AccessFlagBits::eShadingRateImageReadNV : return "ShadingRateImageReadNV"; - case AccessFlagBits::eAccelerationStructureReadNV : return "AccelerationStructureReadNV"; - case AccessFlagBits::eAccelerationStructureWriteNV : return "AccelerationStructureWriteNV"; - case AccessFlagBits::eFragmentDensityMapReadEXT : return "FragmentDensityMapReadEXT"; - default: return "invalid"; + VkResult vkAcquireFullScreenExclusiveModeEXT( VkDevice device, VkSwapchainKHR swapchain ) const VULKAN_HPP_NOEXCEPT + { + return ::vkAcquireFullScreenExclusiveModeEXT( device, swapchain ); } - } - using AccessFlags = Flags; + VkResult vkReleaseFullScreenExclusiveModeEXT( VkDevice device, VkSwapchainKHR swapchain ) const VULKAN_HPP_NOEXCEPT + { + return ::vkReleaseFullScreenExclusiveModeEXT( device, swapchain ); + } - VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 ) - { - return AccessFlags( bit0 ) | bit1; - } + VkResult + vkGetDeviceGroupSurfacePresentModes2EXT( VkDevice device, + const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo, + VkDeviceGroupPresentModeFlagsKHR * pModes ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceGroupSurfacePresentModes2EXT( device, pSurfaceInfo, pModes ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ - VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits ) - { - return ~( AccessFlags( bits ) ); - } + //=== VK_EXT_headless_surface === - template <> struct FlagTraits - { - enum - { - allFlags = VkFlags(AccessFlagBits::eIndirectCommandRead) | VkFlags(AccessFlagBits::eIndexRead) | VkFlags(AccessFlagBits::eVertexAttributeRead) | VkFlags(AccessFlagBits::eUniformRead) | VkFlags(AccessFlagBits::eInputAttachmentRead) | VkFlags(AccessFlagBits::eShaderRead) | VkFlags(AccessFlagBits::eShaderWrite) | VkFlags(AccessFlagBits::eColorAttachmentRead) | VkFlags(AccessFlagBits::eColorAttachmentWrite) | VkFlags(AccessFlagBits::eDepthStencilAttachmentRead) | VkFlags(AccessFlagBits::eDepthStencilAttachmentWrite) | VkFlags(AccessFlagBits::eTransferRead) | VkFlags(AccessFlagBits::eTransferWrite) | VkFlags(AccessFlagBits::eHostRead) | VkFlags(AccessFlagBits::eHostWrite) | VkFlags(AccessFlagBits::eMemoryRead) | VkFlags(AccessFlagBits::eMemoryWrite) | VkFlags(AccessFlagBits::eTransformFeedbackWriteEXT) | VkFlags(AccessFlagBits::eTransformFeedbackCounterReadEXT) | VkFlags(AccessFlagBits::eTransformFeedbackCounterWriteEXT) | VkFlags(AccessFlagBits::eConditionalRenderingReadEXT) | VkFlags(AccessFlagBits::eCommandProcessReadNVX) | VkFlags(AccessFlagBits::eCommandProcessWriteNVX) | VkFlags(AccessFlagBits::eColorAttachmentReadNoncoherentEXT) | VkFlags(AccessFlagBits::eShadingRateImageReadNV) | VkFlags(AccessFlagBits::eAccelerationStructureReadNV) | VkFlags(AccessFlagBits::eAccelerationStructureWriteNV) | VkFlags(AccessFlagBits::eFragmentDensityMapReadEXT) - }; - }; - - VULKAN_HPP_INLINE std::string to_string( AccessFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & AccessFlagBits::eIndirectCommandRead ) result += "IndirectCommandRead | "; - if ( value & AccessFlagBits::eIndexRead ) result += "IndexRead | "; - if ( value & AccessFlagBits::eVertexAttributeRead ) result += "VertexAttributeRead | "; - if ( value & AccessFlagBits::eUniformRead ) result += "UniformRead | "; - if ( value & AccessFlagBits::eInputAttachmentRead ) result += "InputAttachmentRead | "; - if ( value & AccessFlagBits::eShaderRead ) result += "ShaderRead | "; - if ( value & AccessFlagBits::eShaderWrite ) result += "ShaderWrite | "; - if ( value & AccessFlagBits::eColorAttachmentRead ) result += "ColorAttachmentRead | "; - if ( value & AccessFlagBits::eColorAttachmentWrite ) result += "ColorAttachmentWrite | "; - if ( value & AccessFlagBits::eDepthStencilAttachmentRead ) result += "DepthStencilAttachmentRead | "; - if ( value & AccessFlagBits::eDepthStencilAttachmentWrite ) result += "DepthStencilAttachmentWrite | "; - if ( value & AccessFlagBits::eTransferRead ) result += "TransferRead | "; - if ( value & AccessFlagBits::eTransferWrite ) result += "TransferWrite | "; - if ( value & AccessFlagBits::eHostRead ) result += "HostRead | "; - if ( value & AccessFlagBits::eHostWrite ) result += "HostWrite | "; - if ( value & AccessFlagBits::eMemoryRead ) result += "MemoryRead | "; - if ( value & AccessFlagBits::eMemoryWrite ) result += "MemoryWrite | "; - if ( value & AccessFlagBits::eTransformFeedbackWriteEXT ) result += "TransformFeedbackWriteEXT | "; - if ( value & AccessFlagBits::eTransformFeedbackCounterReadEXT ) result += "TransformFeedbackCounterReadEXT | "; - if ( value & AccessFlagBits::eTransformFeedbackCounterWriteEXT ) result += "TransformFeedbackCounterWriteEXT | "; - if ( value & AccessFlagBits::eConditionalRenderingReadEXT ) result += "ConditionalRenderingReadEXT | "; - if ( value & AccessFlagBits::eCommandProcessReadNVX ) result += "CommandProcessReadNVX | "; - if ( value & AccessFlagBits::eCommandProcessWriteNVX ) result += "CommandProcessWriteNVX | "; - if ( value & AccessFlagBits::eColorAttachmentReadNoncoherentEXT ) result += "ColorAttachmentReadNoncoherentEXT | "; - if ( value & AccessFlagBits::eShadingRateImageReadNV ) result += "ShadingRateImageReadNV | "; - if ( value & AccessFlagBits::eAccelerationStructureReadNV ) result += "AccelerationStructureReadNV | "; - if ( value & AccessFlagBits::eAccelerationStructureWriteNV ) result += "AccelerationStructureWriteNV | "; - if ( value & AccessFlagBits::eFragmentDensityMapReadEXT ) result += "FragmentDensityMapReadEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + VkResult vkCreateHeadlessSurfaceEXT( VkInstance instance, + const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateHeadlessSurfaceEXT( instance, pCreateInfo, pAllocator, pSurface ); + } -#ifdef VK_USE_PLATFORM_ANDROID_KHR - enum class AndroidSurfaceCreateFlagBitsKHR - {}; + //=== VK_KHR_buffer_device_address === - VULKAN_HPP_INLINE std::string to_string( AndroidSurfaceCreateFlagBitsKHR ) - { - return "(void)"; - } + VkDeviceAddress vkGetBufferDeviceAddressKHR( VkDevice device, + const VkBufferDeviceAddressInfo * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetBufferDeviceAddressKHR( device, pInfo ); + } - using AndroidSurfaceCreateFlagsKHR = Flags; + uint64_t vkGetBufferOpaqueCaptureAddressKHR( VkDevice device, + const VkBufferDeviceAddressInfo * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetBufferOpaqueCaptureAddressKHR( device, pInfo ); + } - VULKAN_HPP_INLINE std::string to_string( AndroidSurfaceCreateFlagsKHR ) - { - return "{}"; - } -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR( + VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceMemoryOpaqueCaptureAddressKHR( device, pInfo ); + } - enum class AttachmentDescriptionFlagBits - { - eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT - }; + //=== VK_EXT_line_rasterization === - VULKAN_HPP_INLINE std::string to_string( AttachmentDescriptionFlagBits value ) - { - switch ( value ) + void vkCmdSetLineStippleEXT( VkCommandBuffer commandBuffer, + uint32_t lineStippleFactor, + uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT { - case AttachmentDescriptionFlagBits::eMayAlias : return "MayAlias"; - default: return "invalid"; + return ::vkCmdSetLineStippleEXT( commandBuffer, lineStippleFactor, lineStipplePattern ); } - } - using AttachmentDescriptionFlags = Flags; + //=== VK_EXT_host_query_reset === - VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 ) - { - return AttachmentDescriptionFlags( bit0 ) | bit1; - } + void vkResetQueryPoolEXT( VkDevice device, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT + { + return ::vkResetQueryPoolEXT( device, queryPool, firstQuery, queryCount ); + } - VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits ) - { - return ~( AttachmentDescriptionFlags( bits ) ); - } + //=== VK_EXT_extended_dynamic_state === - template <> struct FlagTraits - { - enum + void vkCmdSetCullModeEXT( VkCommandBuffer commandBuffer, VkCullModeFlags cullMode ) const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias) - }; - }; + return ::vkCmdSetCullModeEXT( commandBuffer, cullMode ); + } - VULKAN_HPP_INLINE std::string to_string( AttachmentDescriptionFlags value ) - { - if ( !value ) return "{}"; - std::string result; + void vkCmdSetFrontFaceEXT( VkCommandBuffer commandBuffer, VkFrontFace frontFace ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetFrontFaceEXT( commandBuffer, frontFace ); + } - if ( value & AttachmentDescriptionFlagBits::eMayAlias ) result += "MayAlias | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + void vkCmdSetPrimitiveTopologyEXT( VkCommandBuffer commandBuffer, + VkPrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetPrimitiveTopologyEXT( commandBuffer, primitiveTopology ); + } - enum class BufferCreateFlagBits - { - eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT, - eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, - eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, - eProtected = VK_BUFFER_CREATE_PROTECTED_BIT, - eDeviceAddressCaptureReplayEXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT - }; + void vkCmdSetViewportWithCountEXT( VkCommandBuffer commandBuffer, + uint32_t viewportCount, + const VkViewport * pViewports ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetViewportWithCountEXT( commandBuffer, viewportCount, pViewports ); + } - VULKAN_HPP_INLINE std::string to_string( BufferCreateFlagBits value ) - { - switch ( value ) + void vkCmdSetScissorWithCountEXT( VkCommandBuffer commandBuffer, + uint32_t scissorCount, + const VkRect2D * pScissors ) const VULKAN_HPP_NOEXCEPT { - case BufferCreateFlagBits::eSparseBinding : return "SparseBinding"; - case BufferCreateFlagBits::eSparseResidency : return "SparseResidency"; - case BufferCreateFlagBits::eSparseAliased : return "SparseAliased"; - case BufferCreateFlagBits::eProtected : return "Protected"; - case BufferCreateFlagBits::eDeviceAddressCaptureReplayEXT : return "DeviceAddressCaptureReplayEXT"; - default: return "invalid"; + return ::vkCmdSetScissorWithCountEXT( commandBuffer, scissorCount, pScissors ); } - } - using BufferCreateFlags = Flags; + void vkCmdBindVertexBuffers2EXT( VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer * pBuffers, + const VkDeviceSize * pOffsets, + const VkDeviceSize * pSizes, + const VkDeviceSize * pStrides ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindVertexBuffers2EXT( + commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides ); + } - VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 ) - { - return BufferCreateFlags( bit0 ) | bit1; - } + void vkCmdSetDepthTestEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthTestEnableEXT( commandBuffer, depthTestEnable ); + } - VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits ) - { - return ~( BufferCreateFlags( bits ) ); - } + void vkCmdSetDepthWriteEnableEXT( VkCommandBuffer commandBuffer, + VkBool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthWriteEnableEXT( commandBuffer, depthWriteEnable ); + } - template <> struct FlagTraits - { - enum + void vkCmdSetDepthCompareOpEXT( VkCommandBuffer commandBuffer, + VkCompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased) | VkFlags(BufferCreateFlagBits::eProtected) | VkFlags(BufferCreateFlagBits::eDeviceAddressCaptureReplayEXT) - }; - }; + return ::vkCmdSetDepthCompareOpEXT( commandBuffer, depthCompareOp ); + } - VULKAN_HPP_INLINE std::string to_string( BufferCreateFlags value ) - { - if ( !value ) return "{}"; - std::string result; + void vkCmdSetDepthBoundsTestEnableEXT( VkCommandBuffer commandBuffer, + VkBool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthBoundsTestEnableEXT( commandBuffer, depthBoundsTestEnable ); + } - if ( value & BufferCreateFlagBits::eSparseBinding ) result += "SparseBinding | "; - if ( value & BufferCreateFlagBits::eSparseResidency ) result += "SparseResidency | "; - if ( value & BufferCreateFlagBits::eSparseAliased ) result += "SparseAliased | "; - if ( value & BufferCreateFlagBits::eProtected ) result += "Protected | "; - if ( value & BufferCreateFlagBits::eDeviceAddressCaptureReplayEXT ) result += "DeviceAddressCaptureReplayEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + void vkCmdSetStencilTestEnableEXT( VkCommandBuffer commandBuffer, + VkBool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetStencilTestEnableEXT( commandBuffer, stencilTestEnable ); + } - enum class BufferUsageFlagBits - { - eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT, - eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT, - eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, - eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, - eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, - eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, - eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT, - eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, - eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT, - eTransformFeedbackBufferEXT = VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, - eTransformFeedbackCounterBufferEXT = VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT, - eConditionalRenderingEXT = VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT, - eRayTracingNV = VK_BUFFER_USAGE_RAY_TRACING_BIT_NV, - eShaderDeviceAddressEXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT - }; - - VULKAN_HPP_INLINE std::string to_string( BufferUsageFlagBits value ) - { - switch ( value ) - { - case BufferUsageFlagBits::eTransferSrc : return "TransferSrc"; - case BufferUsageFlagBits::eTransferDst : return "TransferDst"; - case BufferUsageFlagBits::eUniformTexelBuffer : return "UniformTexelBuffer"; - case BufferUsageFlagBits::eStorageTexelBuffer : return "StorageTexelBuffer"; - case BufferUsageFlagBits::eUniformBuffer : return "UniformBuffer"; - case BufferUsageFlagBits::eStorageBuffer : return "StorageBuffer"; - case BufferUsageFlagBits::eIndexBuffer : return "IndexBuffer"; - case BufferUsageFlagBits::eVertexBuffer : return "VertexBuffer"; - case BufferUsageFlagBits::eIndirectBuffer : return "IndirectBuffer"; - case BufferUsageFlagBits::eTransformFeedbackBufferEXT : return "TransformFeedbackBufferEXT"; - case BufferUsageFlagBits::eTransformFeedbackCounterBufferEXT : return "TransformFeedbackCounterBufferEXT"; - case BufferUsageFlagBits::eConditionalRenderingEXT : return "ConditionalRenderingEXT"; - case BufferUsageFlagBits::eRayTracingNV : return "RayTracingNV"; - case BufferUsageFlagBits::eShaderDeviceAddressEXT : return "ShaderDeviceAddressEXT"; - default: return "invalid"; + void vkCmdSetStencilOpEXT( VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + VkStencilOp failOp, + VkStencilOp passOp, + VkStencilOp depthFailOp, + VkCompareOp compareOp ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetStencilOpEXT( commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp ); } - } - using BufferUsageFlags = Flags; + //=== VK_KHR_deferred_host_operations === - VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 ) - { - return BufferUsageFlags( bit0 ) | bit1; - } + VkResult vkCreateDeferredOperationKHR( VkDevice device, + const VkAllocationCallbacks * pAllocator, + VkDeferredOperationKHR * pDeferredOperation ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateDeferredOperationKHR( device, pAllocator, pDeferredOperation ); + } - VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits ) - { - return ~( BufferUsageFlags( bits ) ); - } + void vkDestroyDeferredOperationKHR( VkDevice device, + VkDeferredOperationKHR operation, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyDeferredOperationKHR( device, operation, pAllocator ); + } - template <> struct FlagTraits - { - enum + uint32_t vkGetDeferredOperationMaxConcurrencyKHR( VkDevice device, + VkDeferredOperationKHR operation ) const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(BufferUsageFlagBits::eTransferSrc) | VkFlags(BufferUsageFlagBits::eTransferDst) | VkFlags(BufferUsageFlagBits::eUniformTexelBuffer) | VkFlags(BufferUsageFlagBits::eStorageTexelBuffer) | VkFlags(BufferUsageFlagBits::eUniformBuffer) | VkFlags(BufferUsageFlagBits::eStorageBuffer) | VkFlags(BufferUsageFlagBits::eIndexBuffer) | VkFlags(BufferUsageFlagBits::eVertexBuffer) | VkFlags(BufferUsageFlagBits::eIndirectBuffer) | VkFlags(BufferUsageFlagBits::eTransformFeedbackBufferEXT) | VkFlags(BufferUsageFlagBits::eTransformFeedbackCounterBufferEXT) | VkFlags(BufferUsageFlagBits::eConditionalRenderingEXT) | VkFlags(BufferUsageFlagBits::eRayTracingNV) | VkFlags(BufferUsageFlagBits::eShaderDeviceAddressEXT) - }; - }; + return ::vkGetDeferredOperationMaxConcurrencyKHR( device, operation ); + } - VULKAN_HPP_INLINE std::string to_string( BufferUsageFlags value ) - { - if ( !value ) return "{}"; - std::string result; + VkResult vkGetDeferredOperationResultKHR( VkDevice device, + VkDeferredOperationKHR operation ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeferredOperationResultKHR( device, operation ); + } - if ( value & BufferUsageFlagBits::eTransferSrc ) result += "TransferSrc | "; - if ( value & BufferUsageFlagBits::eTransferDst ) result += "TransferDst | "; - if ( value & BufferUsageFlagBits::eUniformTexelBuffer ) result += "UniformTexelBuffer | "; - if ( value & BufferUsageFlagBits::eStorageTexelBuffer ) result += "StorageTexelBuffer | "; - if ( value & BufferUsageFlagBits::eUniformBuffer ) result += "UniformBuffer | "; - if ( value & BufferUsageFlagBits::eStorageBuffer ) result += "StorageBuffer | "; - if ( value & BufferUsageFlagBits::eIndexBuffer ) result += "IndexBuffer | "; - if ( value & BufferUsageFlagBits::eVertexBuffer ) result += "VertexBuffer | "; - if ( value & BufferUsageFlagBits::eIndirectBuffer ) result += "IndirectBuffer | "; - if ( value & BufferUsageFlagBits::eTransformFeedbackBufferEXT ) result += "TransformFeedbackBufferEXT | "; - if ( value & BufferUsageFlagBits::eTransformFeedbackCounterBufferEXT ) result += "TransformFeedbackCounterBufferEXT | "; - if ( value & BufferUsageFlagBits::eConditionalRenderingEXT ) result += "ConditionalRenderingEXT | "; - if ( value & BufferUsageFlagBits::eRayTracingNV ) result += "RayTracingNV | "; - if ( value & BufferUsageFlagBits::eShaderDeviceAddressEXT ) result += "ShaderDeviceAddressEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + VkResult vkDeferredOperationJoinKHR( VkDevice device, VkDeferredOperationKHR operation ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDeferredOperationJoinKHR( device, operation ); + } - enum class BufferViewCreateFlagBits - {}; + //=== VK_KHR_pipeline_executable_properties === - VULKAN_HPP_INLINE std::string to_string( BufferViewCreateFlagBits ) - { - return "(void)"; - } + VkResult + vkGetPipelineExecutablePropertiesKHR( VkDevice device, + const VkPipelineInfoKHR * pPipelineInfo, + uint32_t * pExecutableCount, + VkPipelineExecutablePropertiesKHR * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPipelineExecutablePropertiesKHR( device, pPipelineInfo, pExecutableCount, pProperties ); + } - using BufferViewCreateFlags = Flags; + VkResult + vkGetPipelineExecutableStatisticsKHR( VkDevice device, + const VkPipelineExecutableInfoKHR * pExecutableInfo, + uint32_t * pStatisticCount, + VkPipelineExecutableStatisticKHR * pStatistics ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPipelineExecutableStatisticsKHR( device, pExecutableInfo, pStatisticCount, pStatistics ); + } - VULKAN_HPP_INLINE std::string to_string( BufferViewCreateFlags ) - { - return "{}"; - } + VkResult vkGetPipelineExecutableInternalRepresentationsKHR( + VkDevice device, + const VkPipelineExecutableInfoKHR * pExecutableInfo, + uint32_t * pInternalRepresentationCount, + VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPipelineExecutableInternalRepresentationsKHR( + device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations ); + } - enum class BuildAccelerationStructureFlagBitsNV - { - eAllowUpdate = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV, - eAllowCompaction = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV, - ePreferFastTrace = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV, - ePreferFastBuild = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV, - eLowMemory = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV - }; + //=== VK_NV_device_generated_commands === - VULKAN_HPP_INLINE std::string to_string( BuildAccelerationStructureFlagBitsNV value ) - { - switch ( value ) + void vkGetGeneratedCommandsMemoryRequirementsNV( VkDevice device, + const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const + VULKAN_HPP_NOEXCEPT { - case BuildAccelerationStructureFlagBitsNV::eAllowUpdate : return "AllowUpdate"; - case BuildAccelerationStructureFlagBitsNV::eAllowCompaction : return "AllowCompaction"; - case BuildAccelerationStructureFlagBitsNV::ePreferFastTrace : return "PreferFastTrace"; - case BuildAccelerationStructureFlagBitsNV::ePreferFastBuild : return "PreferFastBuild"; - case BuildAccelerationStructureFlagBitsNV::eLowMemory : return "LowMemory"; - default: return "invalid"; + return ::vkGetGeneratedCommandsMemoryRequirementsNV( device, pInfo, pMemoryRequirements ); } - } - using BuildAccelerationStructureFlagsNV = Flags; - - VULKAN_HPP_INLINE BuildAccelerationStructureFlagsNV operator|( BuildAccelerationStructureFlagBitsNV bit0, BuildAccelerationStructureFlagBitsNV bit1 ) - { - return BuildAccelerationStructureFlagsNV( bit0 ) | bit1; - } + void vkCmdPreprocessGeneratedCommandsNV( VkCommandBuffer commandBuffer, + const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) const + VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPreprocessGeneratedCommandsNV( commandBuffer, pGeneratedCommandsInfo ); + } - VULKAN_HPP_INLINE BuildAccelerationStructureFlagsNV operator~( BuildAccelerationStructureFlagBitsNV bits ) - { - return ~( BuildAccelerationStructureFlagsNV( bits ) ); - } + void vkCmdExecuteGeneratedCommandsNV( VkCommandBuffer commandBuffer, + VkBool32 isPreprocessed, + const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) const + VULKAN_HPP_NOEXCEPT + { + return ::vkCmdExecuteGeneratedCommandsNV( commandBuffer, isPreprocessed, pGeneratedCommandsInfo ); + } - template <> struct FlagTraits - { - enum + void vkCmdBindPipelineShaderGroupNV( VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipeline pipeline, + uint32_t groupIndex ) const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(BuildAccelerationStructureFlagBitsNV::eAllowUpdate) | VkFlags(BuildAccelerationStructureFlagBitsNV::eAllowCompaction) | VkFlags(BuildAccelerationStructureFlagBitsNV::ePreferFastTrace) | VkFlags(BuildAccelerationStructureFlagBitsNV::ePreferFastBuild) | VkFlags(BuildAccelerationStructureFlagBitsNV::eLowMemory) - }; - }; + return ::vkCmdBindPipelineShaderGroupNV( commandBuffer, pipelineBindPoint, pipeline, groupIndex ); + } - VULKAN_HPP_INLINE std::string to_string( BuildAccelerationStructureFlagsNV value ) - { - if ( !value ) return "{}"; - std::string result; + VkResult + vkCreateIndirectCommandsLayoutNV( VkDevice device, + const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateIndirectCommandsLayoutNV( device, pCreateInfo, pAllocator, pIndirectCommandsLayout ); + } - if ( value & BuildAccelerationStructureFlagBitsNV::eAllowUpdate ) result += "AllowUpdate | "; - if ( value & BuildAccelerationStructureFlagBitsNV::eAllowCompaction ) result += "AllowCompaction | "; - if ( value & BuildAccelerationStructureFlagBitsNV::ePreferFastTrace ) result += "PreferFastTrace | "; - if ( value & BuildAccelerationStructureFlagBitsNV::ePreferFastBuild ) result += "PreferFastBuild | "; - if ( value & BuildAccelerationStructureFlagBitsNV::eLowMemory ) result += "LowMemory | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + void vkDestroyIndirectCommandsLayoutNV( VkDevice device, + VkIndirectCommandsLayoutNV indirectCommandsLayout, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyIndirectCommandsLayoutNV( device, indirectCommandsLayout, pAllocator ); + } - enum class ColorComponentFlagBits - { - eR = VK_COLOR_COMPONENT_R_BIT, - eG = VK_COLOR_COMPONENT_G_BIT, - eB = VK_COLOR_COMPONENT_B_BIT, - eA = VK_COLOR_COMPONENT_A_BIT - }; + //=== VK_EXT_acquire_drm_display === - VULKAN_HPP_INLINE std::string to_string( ColorComponentFlagBits value ) - { - switch ( value ) + VkResult vkAcquireDrmDisplayEXT( VkPhysicalDevice physicalDevice, + int32_t drmFd, + VkDisplayKHR display ) const VULKAN_HPP_NOEXCEPT { - case ColorComponentFlagBits::eR : return "R"; - case ColorComponentFlagBits::eG : return "G"; - case ColorComponentFlagBits::eB : return "B"; - case ColorComponentFlagBits::eA : return "A"; - default: return "invalid"; + return ::vkAcquireDrmDisplayEXT( physicalDevice, drmFd, display ); } - } - using ColorComponentFlags = Flags; + VkResult vkGetDrmDisplayEXT( VkPhysicalDevice physicalDevice, + int32_t drmFd, + uint32_t connectorId, + VkDisplayKHR * display ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDrmDisplayEXT( physicalDevice, drmFd, connectorId, display ); + } - VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 ) - { - return ColorComponentFlags( bit0 ) | bit1; - } + //=== VK_EXT_private_data === - VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits ) - { - return ~( ColorComponentFlags( bits ) ); - } + VkResult vkCreatePrivateDataSlotEXT( VkDevice device, + const VkPrivateDataSlotCreateInfo * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkPrivateDataSlot * pPrivateDataSlot ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreatePrivateDataSlotEXT( device, pCreateInfo, pAllocator, pPrivateDataSlot ); + } - template <> struct FlagTraits - { - enum + void vkDestroyPrivateDataSlotEXT( VkDevice device, + VkPrivateDataSlot privateDataSlot, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA) - }; - }; + return ::vkDestroyPrivateDataSlotEXT( device, privateDataSlot, pAllocator ); + } - VULKAN_HPP_INLINE std::string to_string( ColorComponentFlags value ) - { - if ( !value ) return "{}"; - std::string result; + VkResult vkSetPrivateDataEXT( VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t data ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetPrivateDataEXT( device, objectType, objectHandle, privateDataSlot, data ); + } - if ( value & ColorComponentFlagBits::eR ) result += "R | "; - if ( value & ColorComponentFlagBits::eG ) result += "G | "; - if ( value & ColorComponentFlagBits::eB ) result += "B | "; - if ( value & ColorComponentFlagBits::eA ) result += "A | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + void vkGetPrivateDataEXT( VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPrivateDataEXT( device, objectType, objectHandle, privateDataSlot, pData ); + } - enum class CommandBufferResetFlagBits - { - eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT - }; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_encode_queue === - VULKAN_HPP_INLINE std::string to_string( CommandBufferResetFlagBits value ) - { - switch ( value ) + void vkCmdEncodeVideoKHR( VkCommandBuffer commandBuffer, + const VkVideoEncodeInfoKHR * pEncodeInfo ) const VULKAN_HPP_NOEXCEPT { - case CommandBufferResetFlagBits::eReleaseResources : return "ReleaseResources"; - default: return "invalid"; + return ::vkCmdEncodeVideoKHR( commandBuffer, pEncodeInfo ); } - } - - using CommandBufferResetFlags = Flags; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ - VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 ) - { - return CommandBufferResetFlags( bit0 ) | bit1; - } + //=== VK_KHR_synchronization2 === - VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits ) - { - return ~( CommandBufferResetFlags( bits ) ); - } + void vkCmdSetEvent2KHR( VkCommandBuffer commandBuffer, + VkEvent event, + const VkDependencyInfo * pDependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetEvent2KHR( commandBuffer, event, pDependencyInfo ); + } - template <> struct FlagTraits - { - enum + void vkCmdResetEvent2KHR( VkCommandBuffer commandBuffer, + VkEvent event, + VkPipelineStageFlags2 stageMask ) const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources) - }; - }; + return ::vkCmdResetEvent2KHR( commandBuffer, event, stageMask ); + } - VULKAN_HPP_INLINE std::string to_string( CommandBufferResetFlags value ) - { - if ( !value ) return "{}"; - std::string result; + void vkCmdWaitEvents2KHR( VkCommandBuffer commandBuffer, + uint32_t eventCount, + const VkEvent * pEvents, + const VkDependencyInfo * pDependencyInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWaitEvents2KHR( commandBuffer, eventCount, pEvents, pDependencyInfos ); + } - if ( value & CommandBufferResetFlagBits::eReleaseResources ) result += "ReleaseResources | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + void vkCmdPipelineBarrier2KHR( VkCommandBuffer commandBuffer, + const VkDependencyInfo * pDependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPipelineBarrier2KHR( commandBuffer, pDependencyInfo ); + } - enum class CommandBufferUsageFlagBits - { - eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, - eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, - eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT - }; + void vkCmdWriteTimestamp2KHR( VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkQueryPool queryPool, + uint32_t query ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWriteTimestamp2KHR( commandBuffer, stage, queryPool, query ); + } - VULKAN_HPP_INLINE std::string to_string( CommandBufferUsageFlagBits value ) - { - switch ( value ) + VkResult vkQueueSubmit2KHR( VkQueue queue, + uint32_t submitCount, + const VkSubmitInfo2 * pSubmits, + VkFence fence ) const VULKAN_HPP_NOEXCEPT { - case CommandBufferUsageFlagBits::eOneTimeSubmit : return "OneTimeSubmit"; - case CommandBufferUsageFlagBits::eRenderPassContinue : return "RenderPassContinue"; - case CommandBufferUsageFlagBits::eSimultaneousUse : return "SimultaneousUse"; - default: return "invalid"; + return ::vkQueueSubmit2KHR( queue, submitCount, pSubmits, fence ); } - } - using CommandBufferUsageFlags = Flags; + void vkCmdWriteBufferMarker2AMD( VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + uint32_t marker ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWriteBufferMarker2AMD( commandBuffer, stage, dstBuffer, dstOffset, marker ); + } - VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 ) - { - return CommandBufferUsageFlags( bit0 ) | bit1; - } + void vkGetQueueCheckpointData2NV( VkQueue queue, + uint32_t * pCheckpointDataCount, + VkCheckpointData2NV * pCheckpointData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetQueueCheckpointData2NV( queue, pCheckpointDataCount, pCheckpointData ); + } - VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits ) - { - return ~( CommandBufferUsageFlags( bits ) ); - } + //=== VK_NV_fragment_shading_rate_enums === - template <> struct FlagTraits - { - enum + void vkCmdSetFragmentShadingRateEnumNV( VkCommandBuffer commandBuffer, + VkFragmentShadingRateNV shadingRate, + const VkFragmentShadingRateCombinerOpKHR combinerOps[2] ) const + VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse) - }; - }; - - VULKAN_HPP_INLINE std::string to_string( CommandBufferUsageFlags value ) - { - if ( !value ) return "{}"; - std::string result; + return ::vkCmdSetFragmentShadingRateEnumNV( commandBuffer, shadingRate, combinerOps ); + } - if ( value & CommandBufferUsageFlagBits::eOneTimeSubmit ) result += "OneTimeSubmit | "; - if ( value & CommandBufferUsageFlagBits::eRenderPassContinue ) result += "RenderPassContinue | "; - if ( value & CommandBufferUsageFlagBits::eSimultaneousUse ) result += "SimultaneousUse | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + //=== VK_KHR_copy_commands2 === - enum class CommandPoolCreateFlagBits - { - eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT, - eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, - eProtected = VK_COMMAND_POOL_CREATE_PROTECTED_BIT - }; + void vkCmdCopyBuffer2KHR( VkCommandBuffer commandBuffer, + const VkCopyBufferInfo2 * pCopyBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyBuffer2KHR( commandBuffer, pCopyBufferInfo ); + } - VULKAN_HPP_INLINE std::string to_string( CommandPoolCreateFlagBits value ) - { - switch ( value ) + void vkCmdCopyImage2KHR( VkCommandBuffer commandBuffer, + const VkCopyImageInfo2 * pCopyImageInfo ) const VULKAN_HPP_NOEXCEPT { - case CommandPoolCreateFlagBits::eTransient : return "Transient"; - case CommandPoolCreateFlagBits::eResetCommandBuffer : return "ResetCommandBuffer"; - case CommandPoolCreateFlagBits::eProtected : return "Protected"; - default: return "invalid"; + return ::vkCmdCopyImage2KHR( commandBuffer, pCopyImageInfo ); } - } - using CommandPoolCreateFlags = Flags; + void vkCmdCopyBufferToImage2KHR( VkCommandBuffer commandBuffer, + const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyBufferToImage2KHR( commandBuffer, pCopyBufferToImageInfo ); + } - VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 ) - { - return CommandPoolCreateFlags( bit0 ) | bit1; - } + void vkCmdCopyImageToBuffer2KHR( VkCommandBuffer commandBuffer, + const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyImageToBuffer2KHR( commandBuffer, pCopyImageToBufferInfo ); + } - VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits ) - { - return ~( CommandPoolCreateFlags( bits ) ); - } + void vkCmdBlitImage2KHR( VkCommandBuffer commandBuffer, + const VkBlitImageInfo2 * pBlitImageInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBlitImage2KHR( commandBuffer, pBlitImageInfo ); + } - template <> struct FlagTraits - { - enum + void vkCmdResolveImage2KHR( VkCommandBuffer commandBuffer, + const VkResolveImageInfo2 * pResolveImageInfo ) const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer) | VkFlags(CommandPoolCreateFlagBits::eProtected) - }; - }; + return ::vkCmdResolveImage2KHR( commandBuffer, pResolveImageInfo ); + } - VULKAN_HPP_INLINE std::string to_string( CommandPoolCreateFlags value ) - { - if ( !value ) return "{}"; - std::string result; +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === - if ( value & CommandPoolCreateFlagBits::eTransient ) result += "Transient | "; - if ( value & CommandPoolCreateFlagBits::eResetCommandBuffer ) result += "ResetCommandBuffer | "; - if ( value & CommandPoolCreateFlagBits::eProtected ) result += "Protected | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + VkResult vkAcquireWinrtDisplayNV( VkPhysicalDevice physicalDevice, VkDisplayKHR display ) const VULKAN_HPP_NOEXCEPT + { + return ::vkAcquireWinrtDisplayNV( physicalDevice, display ); + } - enum class CommandPoolResetFlagBits - { - eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT - }; + VkResult vkGetWinrtDisplayNV( VkPhysicalDevice physicalDevice, + uint32_t deviceRelativeId, + VkDisplayKHR * pDisplay ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetWinrtDisplayNV( physicalDevice, deviceRelativeId, pDisplay ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ - VULKAN_HPP_INLINE std::string to_string( CommandPoolResetFlagBits value ) - { - switch ( value ) +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + VkResult vkCreateDirectFBSurfaceEXT( VkInstance instance, + const VkDirectFBSurfaceCreateInfoEXT * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT { - case CommandPoolResetFlagBits::eReleaseResources : return "ReleaseResources"; - default: return "invalid"; + return ::vkCreateDirectFBSurfaceEXT( instance, pCreateInfo, pAllocator, pSurface ); } - } - using CommandPoolResetFlags = Flags; + VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + IDirectFB * dfb ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceDirectFBPresentationSupportEXT( physicalDevice, queueFamilyIndex, dfb ); + } +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ - VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 ) - { - return CommandPoolResetFlags( bit0 ) | bit1; - } + //=== VK_KHR_ray_tracing_pipeline === - VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits ) - { - return ~( CommandPoolResetFlags( bits ) ); - } + void vkCmdTraceRaysKHR( VkCommandBuffer commandBuffer, + const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable, + const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable, + const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable, + const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdTraceRaysKHR( commandBuffer, + pRaygenShaderBindingTable, + pMissShaderBindingTable, + pHitShaderBindingTable, + pCallableShaderBindingTable, + width, + height, + depth ); + } - template <> struct FlagTraits - { - enum + VkResult vkCreateRayTracingPipelinesKHR( VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkRayTracingPipelineCreateInfoKHR * pCreateInfos, + const VkAllocationCallbacks * pAllocator, + VkPipeline * pPipelines ) const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources) - }; - }; + return ::vkCreateRayTracingPipelinesKHR( + device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); + } - VULKAN_HPP_INLINE std::string to_string( CommandPoolResetFlags value ) - { - if ( !value ) return "{}"; - std::string result; + VkResult vkGetRayTracingShaderGroupHandlesKHR( VkDevice device, + VkPipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetRayTracingShaderGroupHandlesKHR( device, pipeline, firstGroup, groupCount, dataSize, pData ); + } - if ( value & CommandPoolResetFlagBits::eReleaseResources ) result += "ReleaseResources | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( VkDevice device, + VkPipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( + device, pipeline, firstGroup, groupCount, dataSize, pData ); + } - enum class CommandPoolTrimFlagBits - {}; + void vkCmdTraceRaysIndirectKHR( VkCommandBuffer commandBuffer, + const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable, + const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable, + const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable, + const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable, + VkDeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdTraceRaysIndirectKHR( commandBuffer, + pRaygenShaderBindingTable, + pMissShaderBindingTable, + pHitShaderBindingTable, + pCallableShaderBindingTable, + indirectDeviceAddress ); + } - VULKAN_HPP_INLINE std::string to_string( CommandPoolTrimFlagBits ) - { - return "(void)"; - } + VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR( VkDevice device, + VkPipeline pipeline, + uint32_t group, + VkShaderGroupShaderKHR groupShader ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetRayTracingShaderGroupStackSizeKHR( device, pipeline, group, groupShader ); + } - using CommandPoolTrimFlags = Flags; + void vkCmdSetRayTracingPipelineStackSizeKHR( VkCommandBuffer commandBuffer, + uint32_t pipelineStackSize ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetRayTracingPipelineStackSizeKHR( commandBuffer, pipelineStackSize ); + } - using CommandPoolTrimFlagsKHR = CommandPoolTrimFlags; + //=== VK_EXT_vertex_input_dynamic_state === - VULKAN_HPP_INLINE std::string to_string( CommandPoolTrimFlags ) - { - return "{}"; - } + void vkCmdSetVertexInputEXT( VkCommandBuffer commandBuffer, + uint32_t vertexBindingDescriptionCount, + const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions, + uint32_t vertexAttributeDescriptionCount, + const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions ) const + VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetVertexInputEXT( commandBuffer, + vertexBindingDescriptionCount, + pVertexBindingDescriptions, + vertexAttributeDescriptionCount, + pVertexAttributeDescriptions ); + } - enum class CompositeAlphaFlagBitsKHR - { - eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR, - ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR, - ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR, - eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR - }; +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === - VULKAN_HPP_INLINE std::string to_string( CompositeAlphaFlagBitsKHR value ) - { - switch ( value ) + VkResult vkGetMemoryZirconHandleFUCHSIA( VkDevice device, + const VkMemoryGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo, + zx_handle_t * pZirconHandle ) const VULKAN_HPP_NOEXCEPT { - case CompositeAlphaFlagBitsKHR::eOpaque : return "Opaque"; - case CompositeAlphaFlagBitsKHR::ePreMultiplied : return "PreMultiplied"; - case CompositeAlphaFlagBitsKHR::ePostMultiplied : return "PostMultiplied"; - case CompositeAlphaFlagBitsKHR::eInherit : return "Inherit"; - default: return "invalid"; + return ::vkGetMemoryZirconHandleFUCHSIA( device, pGetZirconHandleInfo, pZirconHandle ); } - } - using CompositeAlphaFlagsKHR = Flags; + VkResult vkGetMemoryZirconHandlePropertiesFUCHSIA( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + zx_handle_t zirconHandle, + VkMemoryZirconHandlePropertiesFUCHSIA * pMemoryZirconHandleProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMemoryZirconHandlePropertiesFUCHSIA( + device, handleType, zirconHandle, pMemoryZirconHandleProperties ); + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ - VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 ) - { - return CompositeAlphaFlagsKHR( bit0 ) | bit1; - } +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === - VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits ) - { - return ~( CompositeAlphaFlagsKHR( bits ) ); - } + VkResult vkImportSemaphoreZirconHandleFUCHSIA( + VkDevice device, + const VkImportSemaphoreZirconHandleInfoFUCHSIA * pImportSemaphoreZirconHandleInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkImportSemaphoreZirconHandleFUCHSIA( device, pImportSemaphoreZirconHandleInfo ); + } - template <> struct FlagTraits - { - enum + VkResult vkGetSemaphoreZirconHandleFUCHSIA( VkDevice device, + const VkSemaphoreGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo, + zx_handle_t * pZirconHandle ) const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit) - }; - }; + return ::vkGetSemaphoreZirconHandleFUCHSIA( device, pGetZirconHandleInfo, pZirconHandle ); + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ - VULKAN_HPP_INLINE std::string to_string( CompositeAlphaFlagsKHR value ) - { - if ( !value ) return "{}"; - std::string result; +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === - if ( value & CompositeAlphaFlagBitsKHR::eOpaque ) result += "Opaque | "; - if ( value & CompositeAlphaFlagBitsKHR::ePreMultiplied ) result += "PreMultiplied | "; - if ( value & CompositeAlphaFlagBitsKHR::ePostMultiplied ) result += "PostMultiplied | "; - if ( value & CompositeAlphaFlagBitsKHR::eInherit ) result += "Inherit | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + VkResult vkCreateBufferCollectionFUCHSIA( VkDevice device, + const VkBufferCollectionCreateInfoFUCHSIA * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkBufferCollectionFUCHSIA * pCollection ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateBufferCollectionFUCHSIA( device, pCreateInfo, pAllocator, pCollection ); + } - enum class ConditionalRenderingFlagBitsEXT - { - eInverted = VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT - }; + VkResult vkSetBufferCollectionImageConstraintsFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + const VkImageConstraintsInfoFUCHSIA * pImageConstraintsInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetBufferCollectionImageConstraintsFUCHSIA( device, collection, pImageConstraintsInfo ); + } - VULKAN_HPP_INLINE std::string to_string( ConditionalRenderingFlagBitsEXT value ) - { - switch ( value ) + VkResult vkSetBufferCollectionBufferConstraintsFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + const VkBufferConstraintsInfoFUCHSIA * pBufferConstraintsInfo ) const VULKAN_HPP_NOEXCEPT { - case ConditionalRenderingFlagBitsEXT::eInverted : return "Inverted"; - default: return "invalid"; + return ::vkSetBufferCollectionBufferConstraintsFUCHSIA( device, collection, pBufferConstraintsInfo ); } - } - using ConditionalRenderingFlagsEXT = Flags; + void vkDestroyBufferCollectionFUCHSIA( VkDevice device, + VkBufferCollectionFUCHSIA collection, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyBufferCollectionFUCHSIA( device, collection, pAllocator ); + } - VULKAN_HPP_INLINE ConditionalRenderingFlagsEXT operator|( ConditionalRenderingFlagBitsEXT bit0, ConditionalRenderingFlagBitsEXT bit1 ) - { - return ConditionalRenderingFlagsEXT( bit0 ) | bit1; - } + VkResult vkGetBufferCollectionPropertiesFUCHSIA( VkDevice device, + VkBufferCollectionFUCHSIA collection, + VkBufferCollectionPropertiesFUCHSIA * pProperties ) const + VULKAN_HPP_NOEXCEPT + { + return ::vkGetBufferCollectionPropertiesFUCHSIA( device, collection, pProperties ); + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ - VULKAN_HPP_INLINE ConditionalRenderingFlagsEXT operator~( ConditionalRenderingFlagBitsEXT bits ) - { - return ~( ConditionalRenderingFlagsEXT( bits ) ); - } + //=== VK_HUAWEI_subpass_shading === - template <> struct FlagTraits - { - enum + VkResult vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( VkDevice device, + VkRenderPass renderpass, + VkExtent2D * pMaxWorkgroupSize ) const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(ConditionalRenderingFlagBitsEXT::eInverted) - }; - }; - - VULKAN_HPP_INLINE std::string to_string( ConditionalRenderingFlagsEXT value ) - { - if ( !value ) return "{}"; - std::string result; + return ::vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( device, renderpass, pMaxWorkgroupSize ); + } - if ( value & ConditionalRenderingFlagBitsEXT::eInverted ) result += "Inverted | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + void vkCmdSubpassShadingHUAWEI( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSubpassShadingHUAWEI( commandBuffer ); + } - enum class CullModeFlagBits - { - eNone = VK_CULL_MODE_NONE, - eFront = VK_CULL_MODE_FRONT_BIT, - eBack = VK_CULL_MODE_BACK_BIT, - eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK - }; + //=== VK_HUAWEI_invocation_mask === - VULKAN_HPP_INLINE std::string to_string( CullModeFlagBits value ) - { - switch ( value ) + void vkCmdBindInvocationMaskHUAWEI( VkCommandBuffer commandBuffer, + VkImageView imageView, + VkImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT { - case CullModeFlagBits::eNone : return "None"; - case CullModeFlagBits::eFront : return "Front"; - case CullModeFlagBits::eBack : return "Back"; - case CullModeFlagBits::eFrontAndBack : return "FrontAndBack"; - default: return "invalid"; + return ::vkCmdBindInvocationMaskHUAWEI( commandBuffer, imageView, imageLayout ); } - } - using CullModeFlags = Flags; + //=== VK_NV_external_memory_rdma === - VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 ) - { - return CullModeFlags( bit0 ) | bit1; - } + VkResult vkGetMemoryRemoteAddressNV( VkDevice device, + const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo, + VkRemoteAddressNV * pAddress ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMemoryRemoteAddressNV( device, pMemoryGetRemoteAddressInfo, pAddress ); + } - VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits ) - { - return ~( CullModeFlags( bits ) ); - } + //=== VK_EXT_extended_dynamic_state2 === - template <> struct FlagTraits - { - enum + void vkCmdSetPatchControlPointsEXT( VkCommandBuffer commandBuffer, + uint32_t patchControlPoints ) const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack) - }; - }; - - VULKAN_HPP_INLINE std::string to_string( CullModeFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & CullModeFlagBits::eFront ) result += "Front | "; - if ( value & CullModeFlagBits::eBack ) result += "Back | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class DebugReportFlagBitsEXT - { - eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT, - eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT, - ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT, - eError = VK_DEBUG_REPORT_ERROR_BIT_EXT, - eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT - }; + return ::vkCmdSetPatchControlPointsEXT( commandBuffer, patchControlPoints ); + } - VULKAN_HPP_INLINE std::string to_string( DebugReportFlagBitsEXT value ) - { - switch ( value ) + void vkCmdSetRasterizerDiscardEnableEXT( VkCommandBuffer commandBuffer, + VkBool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT { - case DebugReportFlagBitsEXT::eInformation : return "Information"; - case DebugReportFlagBitsEXT::eWarning : return "Warning"; - case DebugReportFlagBitsEXT::ePerformanceWarning : return "PerformanceWarning"; - case DebugReportFlagBitsEXT::eError : return "Error"; - case DebugReportFlagBitsEXT::eDebug : return "Debug"; - default: return "invalid"; + return ::vkCmdSetRasterizerDiscardEnableEXT( commandBuffer, rasterizerDiscardEnable ); } - } - using DebugReportFlagsEXT = Flags; - - VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 ) - { - return DebugReportFlagsEXT( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits ) - { - return ~( DebugReportFlagsEXT( bits ) ); - } + void vkCmdSetDepthBiasEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthBiasEnableEXT( commandBuffer, depthBiasEnable ); + } - template <> struct FlagTraits - { - enum + void vkCmdSetLogicOpEXT( VkCommandBuffer commandBuffer, VkLogicOp logicOp ) const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug) - }; - }; + return ::vkCmdSetLogicOpEXT( commandBuffer, logicOp ); + } - VULKAN_HPP_INLINE std::string to_string( DebugReportFlagsEXT value ) - { - if ( !value ) return "{}"; - std::string result; + void vkCmdSetPrimitiveRestartEnableEXT( VkCommandBuffer commandBuffer, + VkBool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetPrimitiveRestartEnableEXT( commandBuffer, primitiveRestartEnable ); + } - if ( value & DebugReportFlagBitsEXT::eInformation ) result += "Information | "; - if ( value & DebugReportFlagBitsEXT::eWarning ) result += "Warning | "; - if ( value & DebugReportFlagBitsEXT::ePerformanceWarning ) result += "PerformanceWarning | "; - if ( value & DebugReportFlagBitsEXT::eError ) result += "Error | "; - if ( value & DebugReportFlagBitsEXT::eDebug ) result += "Debug | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === - enum class DebugUtilsMessageSeverityFlagBitsEXT - { - eVerbose = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT, - eInfo = VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT, - eWarning = VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT, - eError = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT - }; + VkResult vkCreateScreenSurfaceQNX( VkInstance instance, + const VkScreenSurfaceCreateInfoQNX * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateScreenSurfaceQNX( instance, pCreateInfo, pAllocator, pSurface ); + } - VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessageSeverityFlagBitsEXT value ) - { - switch ( value ) + VkBool32 vkGetPhysicalDeviceScreenPresentationSupportQNX( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + struct _screen_window * window ) const VULKAN_HPP_NOEXCEPT { - case DebugUtilsMessageSeverityFlagBitsEXT::eVerbose : return "Verbose"; - case DebugUtilsMessageSeverityFlagBitsEXT::eInfo : return "Info"; - case DebugUtilsMessageSeverityFlagBitsEXT::eWarning : return "Warning"; - case DebugUtilsMessageSeverityFlagBitsEXT::eError : return "Error"; - default: return "invalid"; + return ::vkGetPhysicalDeviceScreenPresentationSupportQNX( physicalDevice, queueFamilyIndex, window ); } - } +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ - using DebugUtilsMessageSeverityFlagsEXT = Flags; + //=== VK_EXT_color_write_enable === - VULKAN_HPP_INLINE DebugUtilsMessageSeverityFlagsEXT operator|( DebugUtilsMessageSeverityFlagBitsEXT bit0, DebugUtilsMessageSeverityFlagBitsEXT bit1 ) - { - return DebugUtilsMessageSeverityFlagsEXT( bit0 ) | bit1; - } + void vkCmdSetColorWriteEnableEXT( VkCommandBuffer commandBuffer, + uint32_t attachmentCount, + const VkBool32 * pColorWriteEnables ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetColorWriteEnableEXT( commandBuffer, attachmentCount, pColorWriteEnables ); + } - VULKAN_HPP_INLINE DebugUtilsMessageSeverityFlagsEXT operator~( DebugUtilsMessageSeverityFlagBitsEXT bits ) - { - return ~( DebugUtilsMessageSeverityFlagsEXT( bits ) ); - } + //=== VK_EXT_multi_draw === - template <> struct FlagTraits - { - enum + void vkCmdDrawMultiEXT( VkCommandBuffer commandBuffer, + uint32_t drawCount, + const VkMultiDrawInfoEXT * pVertexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eVerbose) | VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eInfo) | VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eWarning) | VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eError) - }; - }; - - VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessageSeverityFlagsEXT value ) - { - if ( !value ) return "{}"; - std::string result; + return ::vkCmdDrawMultiEXT( commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride ); + } - if ( value & DebugUtilsMessageSeverityFlagBitsEXT::eVerbose ) result += "Verbose | "; - if ( value & DebugUtilsMessageSeverityFlagBitsEXT::eInfo ) result += "Info | "; - if ( value & DebugUtilsMessageSeverityFlagBitsEXT::eWarning ) result += "Warning | "; - if ( value & DebugUtilsMessageSeverityFlagBitsEXT::eError ) result += "Error | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + void vkCmdDrawMultiIndexedEXT( VkCommandBuffer commandBuffer, + uint32_t drawCount, + const VkMultiDrawIndexedInfoEXT * pIndexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + const int32_t * pVertexOffset ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawMultiIndexedEXT( + commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset ); + } - enum class DebugUtilsMessageTypeFlagBitsEXT - { - eGeneral = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT, - eValidation = VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT, - ePerformance = VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT - }; + //=== VK_EXT_pageable_device_local_memory === - VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessageTypeFlagBitsEXT value ) - { - switch ( value ) + void + vkSetDeviceMemoryPriorityEXT( VkDevice device, VkDeviceMemory memory, float priority ) const VULKAN_HPP_NOEXCEPT { - case DebugUtilsMessageTypeFlagBitsEXT::eGeneral : return "General"; - case DebugUtilsMessageTypeFlagBitsEXT::eValidation : return "Validation"; - case DebugUtilsMessageTypeFlagBitsEXT::ePerformance : return "Performance"; - default: return "invalid"; + return ::vkSetDeviceMemoryPriorityEXT( device, memory, priority ); } - } - using DebugUtilsMessageTypeFlagsEXT = Flags; + //=== VK_KHR_maintenance4 === - VULKAN_HPP_INLINE DebugUtilsMessageTypeFlagsEXT operator|( DebugUtilsMessageTypeFlagBitsEXT bit0, DebugUtilsMessageTypeFlagBitsEXT bit1 ) - { - return DebugUtilsMessageTypeFlagsEXT( bit0 ) | bit1; - } + void vkGetDeviceBufferMemoryRequirementsKHR( VkDevice device, + const VkDeviceBufferMemoryRequirements * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceBufferMemoryRequirementsKHR( device, pInfo, pMemoryRequirements ); + } - VULKAN_HPP_INLINE DebugUtilsMessageTypeFlagsEXT operator~( DebugUtilsMessageTypeFlagBitsEXT bits ) - { - return ~( DebugUtilsMessageTypeFlagsEXT( bits ) ); - } + void vkGetDeviceImageMemoryRequirementsKHR( VkDevice device, + const VkDeviceImageMemoryRequirements * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceImageMemoryRequirementsKHR( device, pInfo, pMemoryRequirements ); + } - template <> struct FlagTraits - { - enum + void vkGetDeviceImageSparseMemoryRequirementsKHR( + VkDevice device, + const VkDeviceImageMemoryRequirements * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(DebugUtilsMessageTypeFlagBitsEXT::eGeneral) | VkFlags(DebugUtilsMessageTypeFlagBitsEXT::eValidation) | VkFlags(DebugUtilsMessageTypeFlagBitsEXT::ePerformance) - }; + return ::vkGetDeviceImageSparseMemoryRequirementsKHR( + device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); + } }; +#endif - VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessageTypeFlagsEXT value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & DebugUtilsMessageTypeFlagBitsEXT::eGeneral ) result += "General | "; - if ( value & DebugUtilsMessageTypeFlagBitsEXT::eValidation ) result += "Validation | "; - if ( value & DebugUtilsMessageTypeFlagBitsEXT::ePerformance ) result += "Performance | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + class DispatchLoaderDynamic; +#if !defined( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC ) +# if defined( VK_NO_PROTOTYPES ) +# define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1 +# else +# define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 0 +# endif +#endif - enum class DebugUtilsMessengerCallbackDataFlagBitsEXT - {}; +#if !defined( VULKAN_HPP_STORAGE_API ) +# if defined( VULKAN_HPP_STORAGE_SHARED ) +# if defined( _MSC_VER ) +# if defined( VULKAN_HPP_STORAGE_SHARED_EXPORT ) +# define VULKAN_HPP_STORAGE_API __declspec( dllexport ) +# else +# define VULKAN_HPP_STORAGE_API __declspec( dllimport ) +# endif +# elif defined( __clang__ ) || defined( __GNUC__ ) +# if defined( VULKAN_HPP_STORAGE_SHARED_EXPORT ) +# define VULKAN_HPP_STORAGE_API __attribute__( ( visibility( "default" ) ) ) +# else +# define VULKAN_HPP_STORAGE_API +# endif +# else +# define VULKAN_HPP_STORAGE_API +# pragma warning Unknown import / export semantics +# endif +# else +# define VULKAN_HPP_STORAGE_API +# endif +#endif - VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessengerCallbackDataFlagBitsEXT ) +#if !defined( VULKAN_HPP_DEFAULT_DISPATCHER ) +# if VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 +# define VULKAN_HPP_DEFAULT_DISPATCHER ::VULKAN_HPP_NAMESPACE::defaultDispatchLoaderDynamic +# define VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE \ + namespace VULKAN_HPP_NAMESPACE \ + { \ + VULKAN_HPP_STORAGE_API DispatchLoaderDynamic defaultDispatchLoaderDynamic; \ + } + extern VULKAN_HPP_STORAGE_API DispatchLoaderDynamic defaultDispatchLoaderDynamic; +# else + static inline ::VULKAN_HPP_NAMESPACE::DispatchLoaderStatic & getDispatchLoaderStatic() { - return "(void)"; + static ::VULKAN_HPP_NAMESPACE::DispatchLoaderStatic dls; + return dls; } +# define VULKAN_HPP_DEFAULT_DISPATCHER ::VULKAN_HPP_NAMESPACE::getDispatchLoaderStatic() +# define VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE +# endif +#endif - using DebugUtilsMessengerCallbackDataFlagsEXT = Flags; +#if !defined( VULKAN_HPP_DEFAULT_DISPATCHER_TYPE ) +# if VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 +# define VULKAN_HPP_DEFAULT_DISPATCHER_TYPE ::VULKAN_HPP_NAMESPACE::DispatchLoaderDynamic +# else +# define VULKAN_HPP_DEFAULT_DISPATCHER_TYPE ::VULKAN_HPP_NAMESPACE::DispatchLoaderStatic +# endif +#endif - VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessengerCallbackDataFlagsEXT ) - { - return "{}"; - } +#if defined( VULKAN_HPP_NO_DEFAULT_DISPATCHER ) +# define VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT +# define VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT +# define VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT +#else +# define VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT = {} +# define VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT = nullptr +# define VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT = VULKAN_HPP_DEFAULT_DISPATCHER +#endif - enum class DebugUtilsMessengerCreateFlagBitsEXT - {}; + struct AllocationCallbacks; - VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessengerCreateFlagBitsEXT ) + template + class ObjectDestroy { - return "(void)"; - } - - using DebugUtilsMessengerCreateFlagsEXT = Flags; + public: + ObjectDestroy() = default; - VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessengerCreateFlagsEXT ) - { - return "{}"; - } + ObjectDestroy( OwnerType owner, + Optional allocationCallbacks + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT + : m_owner( owner ) + , m_allocationCallbacks( allocationCallbacks ) + , m_dispatch( &dispatch ) + {} - enum class DependencyFlagBits - { - eByRegion = VK_DEPENDENCY_BY_REGION_BIT, - eDeviceGroup = VK_DEPENDENCY_DEVICE_GROUP_BIT, - eViewLocal = VK_DEPENDENCY_VIEW_LOCAL_BIT, - eViewLocalKHR = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR, - eDeviceGroupKHR = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR - }; + OwnerType getOwner() const VULKAN_HPP_NOEXCEPT + { + return m_owner; + } + Optional getAllocator() const VULKAN_HPP_NOEXCEPT + { + return m_allocationCallbacks; + } - VULKAN_HPP_INLINE std::string to_string( DependencyFlagBits value ) - { - switch ( value ) + protected: + template + void destroy( T t ) VULKAN_HPP_NOEXCEPT { - case DependencyFlagBits::eByRegion : return "ByRegion"; - case DependencyFlagBits::eDeviceGroup : return "DeviceGroup"; - case DependencyFlagBits::eViewLocal : return "ViewLocal"; - default: return "invalid"; + VULKAN_HPP_ASSERT( m_owner && m_dispatch ); + m_owner.destroy( t, m_allocationCallbacks, *m_dispatch ); } - } - using DependencyFlags = Flags; + private: + OwnerType m_owner = {}; + Optional m_allocationCallbacks = nullptr; + Dispatch const * m_dispatch = nullptr; + }; + + class NoParent; - VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 ) + template + class ObjectDestroy { - return DependencyFlags( bit0 ) | bit1; - } + public: + ObjectDestroy() = default; - VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits ) - { - return ~( DependencyFlags( bits ) ); - } + ObjectDestroy( Optional allocationCallbacks, + Dispatch const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT + : m_allocationCallbacks( allocationCallbacks ) + , m_dispatch( &dispatch ) + {} - template <> struct FlagTraits - { - enum + Optional getAllocator() const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eDeviceGroup) | VkFlags(DependencyFlagBits::eViewLocal) - }; - }; - - VULKAN_HPP_INLINE std::string to_string( DependencyFlags value ) - { - if ( !value ) return "{}"; - std::string result; + return m_allocationCallbacks; + } - if ( value & DependencyFlagBits::eByRegion ) result += "ByRegion | "; - if ( value & DependencyFlagBits::eDeviceGroup ) result += "DeviceGroup | "; - if ( value & DependencyFlagBits::eViewLocal ) result += "ViewLocal | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + protected: + template + void destroy( T t ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( m_dispatch ); + t.destroy( m_allocationCallbacks, *m_dispatch ); + } - enum class DescriptorBindingFlagBitsEXT - { - eUpdateAfterBind = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT, - eUpdateUnusedWhilePending = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT, - ePartiallyBound = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT, - eVariableDescriptorCount = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT + private: + Optional m_allocationCallbacks = nullptr; + Dispatch const * m_dispatch = nullptr; }; - VULKAN_HPP_INLINE std::string to_string( DescriptorBindingFlagBitsEXT value ) + template + class ObjectFree { - switch ( value ) - { - case DescriptorBindingFlagBitsEXT::eUpdateAfterBind : return "UpdateAfterBind"; - case DescriptorBindingFlagBitsEXT::eUpdateUnusedWhilePending : return "UpdateUnusedWhilePending"; - case DescriptorBindingFlagBitsEXT::ePartiallyBound : return "PartiallyBound"; - case DescriptorBindingFlagBitsEXT::eVariableDescriptorCount : return "VariableDescriptorCount"; - default: return "invalid"; - } - } + public: + ObjectFree() = default; - using DescriptorBindingFlagsEXT = Flags; + ObjectFree( OwnerType owner, + Optional allocationCallbacks VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT + : m_owner( owner ) + , m_allocationCallbacks( allocationCallbacks ) + , m_dispatch( &dispatch ) + {} - VULKAN_HPP_INLINE DescriptorBindingFlagsEXT operator|( DescriptorBindingFlagBitsEXT bit0, DescriptorBindingFlagBitsEXT bit1 ) - { - return DescriptorBindingFlagsEXT( bit0 ) | bit1; - } + OwnerType getOwner() const VULKAN_HPP_NOEXCEPT + { + return m_owner; + } - VULKAN_HPP_INLINE DescriptorBindingFlagsEXT operator~( DescriptorBindingFlagBitsEXT bits ) - { - return ~( DescriptorBindingFlagsEXT( bits ) ); - } + Optional getAllocator() const VULKAN_HPP_NOEXCEPT + { + return m_allocationCallbacks; + } - template <> struct FlagTraits - { - enum + protected: + template + void destroy( T t ) VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(DescriptorBindingFlagBitsEXT::eUpdateAfterBind) | VkFlags(DescriptorBindingFlagBitsEXT::eUpdateUnusedWhilePending) | VkFlags(DescriptorBindingFlagBitsEXT::ePartiallyBound) | VkFlags(DescriptorBindingFlagBitsEXT::eVariableDescriptorCount) - }; + VULKAN_HPP_ASSERT( m_owner && m_dispatch ); + m_owner.free( t, m_allocationCallbacks, *m_dispatch ); + } + + private: + OwnerType m_owner = {}; + Optional m_allocationCallbacks = nullptr; + Dispatch const * m_dispatch = nullptr; }; - VULKAN_HPP_INLINE std::string to_string( DescriptorBindingFlagsEXT value ) + template + class ObjectRelease { - if ( !value ) return "{}"; - std::string result; + public: + ObjectRelease() = default; - if ( value & DescriptorBindingFlagBitsEXT::eUpdateAfterBind ) result += "UpdateAfterBind | "; - if ( value & DescriptorBindingFlagBitsEXT::eUpdateUnusedWhilePending ) result += "UpdateUnusedWhilePending | "; - if ( value & DescriptorBindingFlagBitsEXT::ePartiallyBound ) result += "PartiallyBound | "; - if ( value & DescriptorBindingFlagBitsEXT::eVariableDescriptorCount ) result += "VariableDescriptorCount | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + ObjectRelease( OwnerType owner, + Dispatch const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT + : m_owner( owner ) + , m_dispatch( &dispatch ) + {} - enum class DescriptorPoolCreateFlagBits - { - eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, - eUpdateAfterBindEXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT - }; + OwnerType getOwner() const VULKAN_HPP_NOEXCEPT + { + return m_owner; + } - VULKAN_HPP_INLINE std::string to_string( DescriptorPoolCreateFlagBits value ) - { - switch ( value ) + protected: + template + void destroy( T t ) VULKAN_HPP_NOEXCEPT { - case DescriptorPoolCreateFlagBits::eFreeDescriptorSet : return "FreeDescriptorSet"; - case DescriptorPoolCreateFlagBits::eUpdateAfterBindEXT : return "UpdateAfterBindEXT"; - default: return "invalid"; + VULKAN_HPP_ASSERT( m_owner && m_dispatch ); + m_owner.release( t, *m_dispatch ); } - } - using DescriptorPoolCreateFlags = Flags; + private: + OwnerType m_owner = {}; + Dispatch const * m_dispatch = nullptr; + }; - VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 ) + template + class PoolFree { - return DescriptorPoolCreateFlags( bit0 ) | bit1; - } + public: + PoolFree() = default; - VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits ) - { - return ~( DescriptorPoolCreateFlags( bits ) ); - } + PoolFree( OwnerType owner, + PoolType pool, + Dispatch const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT + : m_owner( owner ) + , m_pool( pool ) + , m_dispatch( &dispatch ) + {} - template <> struct FlagTraits - { - enum + OwnerType getOwner() const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet) | VkFlags(DescriptorPoolCreateFlagBits::eUpdateAfterBindEXT) - }; - }; + return m_owner; + } + PoolType getPool() const VULKAN_HPP_NOEXCEPT + { + return m_pool; + } - VULKAN_HPP_INLINE std::string to_string( DescriptorPoolCreateFlags value ) - { - if ( !value ) return "{}"; - std::string result; + protected: + template + void destroy( T t ) VULKAN_HPP_NOEXCEPT + { + m_owner.free( m_pool, t, *m_dispatch ); + } - if ( value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet ) result += "FreeDescriptorSet | "; - if ( value & DescriptorPoolCreateFlagBits::eUpdateAfterBindEXT ) result += "UpdateAfterBindEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + private: + OwnerType m_owner = OwnerType(); + PoolType m_pool = PoolType(); + Dispatch const * m_dispatch = nullptr; + }; - enum class DescriptorPoolResetFlagBits - {}; + //================== + //=== BASE TYPEs === + //================== - VULKAN_HPP_INLINE std::string to_string( DescriptorPoolResetFlagBits ) - { - return "(void)"; - } + using Bool32 = uint32_t; + using DeviceAddress = uint64_t; + using DeviceSize = uint64_t; + using RemoteAddressNV = void *; + using SampleMask = uint32_t; - using DescriptorPoolResetFlags = Flags; +} // namespace VULKAN_HPP_NAMESPACE - VULKAN_HPP_INLINE std::string to_string( DescriptorPoolResetFlags ) - { - return "{}"; - } +#include - enum class DescriptorSetLayoutCreateFlagBits - { - ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR, - eUpdateAfterBindPoolEXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT - }; +#ifndef VULKAN_HPP_NO_EXCEPTIONS +namespace std +{ + template <> + struct is_error_code_enum : public true_type + {}; +} // namespace std +#endif - VULKAN_HPP_INLINE std::string to_string( DescriptorSetLayoutCreateFlagBits value ) +namespace VULKAN_HPP_NAMESPACE +{ +#ifndef VULKAN_HPP_NO_EXCEPTIONS + + class ErrorCategoryImpl : public std::error_category { - switch ( value ) + public: + virtual const char * name() const VULKAN_HPP_NOEXCEPT override { - case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR : return "PushDescriptorKHR"; - case DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPoolEXT : return "UpdateAfterBindPoolEXT"; - default: return "invalid"; + return VULKAN_HPP_NAMESPACE_STRING "::Result"; } - } - - using DescriptorSetLayoutCreateFlags = Flags; + virtual std::string message( int ev ) const override + { + return to_string( static_cast( ev ) ); + } + }; - VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 ) + class Error { - return DescriptorSetLayoutCreateFlags( bit0 ) | bit1; - } + public: + Error() VULKAN_HPP_NOEXCEPT = default; + Error( const Error & ) VULKAN_HPP_NOEXCEPT = default; + virtual ~Error() VULKAN_HPP_NOEXCEPT = default; - VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits ) - { - return ~( DescriptorSetLayoutCreateFlags( bits ) ); - } + virtual const char * what() const VULKAN_HPP_NOEXCEPT = 0; + }; - template <> struct FlagTraits + class LogicError + : public Error + , public std::logic_error { - enum + public: + explicit LogicError( const std::string & what ) : Error(), std::logic_error( what ) {} + explicit LogicError( char const * what ) : Error(), std::logic_error( what ) {} + + virtual const char * what() const VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) | VkFlags(DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPoolEXT) - }; + return std::logic_error::what(); + } }; - VULKAN_HPP_INLINE std::string to_string( DescriptorSetLayoutCreateFlags value ) + class SystemError + : public Error + , public std::system_error { - if ( !value ) return "{}"; - std::string result; - - if ( value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR ) result += "PushDescriptorKHR | "; - if ( value & DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPoolEXT ) result += "UpdateAfterBindPoolEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + public: + SystemError( std::error_code ec ) : Error(), std::system_error( ec ) {} + SystemError( std::error_code ec, std::string const & what ) : Error(), std::system_error( ec, what ) {} + SystemError( std::error_code ec, char const * what ) : Error(), std::system_error( ec, what ) {} + SystemError( int ev, std::error_category const & ecat ) : Error(), std::system_error( ev, ecat ) {} + SystemError( int ev, std::error_category const & ecat, std::string const & what ) + : Error(), std::system_error( ev, ecat, what ) + {} + SystemError( int ev, std::error_category const & ecat, char const * what ) + : Error(), std::system_error( ev, ecat, what ) + {} - enum class DescriptorUpdateTemplateCreateFlagBits - {}; + virtual const char * what() const VULKAN_HPP_NOEXCEPT + { + return std::system_error::what(); + } + }; - VULKAN_HPP_INLINE std::string to_string( DescriptorUpdateTemplateCreateFlagBits ) + VULKAN_HPP_INLINE const std::error_category & errorCategory() VULKAN_HPP_NOEXCEPT { - return "(void)"; + static ErrorCategoryImpl instance; + return instance; } - using DescriptorUpdateTemplateCreateFlags = Flags; - - using DescriptorUpdateTemplateCreateFlagsKHR = DescriptorUpdateTemplateCreateFlags; - - VULKAN_HPP_INLINE std::string to_string( DescriptorUpdateTemplateCreateFlags ) + VULKAN_HPP_INLINE std::error_code make_error_code( Result e ) VULKAN_HPP_NOEXCEPT { - return "{}"; + return std::error_code( static_cast( e ), errorCategory() ); } - enum class DeviceCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( DeviceCreateFlagBits ) + VULKAN_HPP_INLINE std::error_condition make_error_condition( Result e ) VULKAN_HPP_NOEXCEPT { - return "(void)"; + return std::error_condition( static_cast( e ), errorCategory() ); } - using DeviceCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( DeviceCreateFlags ) + class OutOfHostMemoryError : public SystemError { - return "{}"; - } + public: + OutOfHostMemoryError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) + {} + OutOfHostMemoryError( char const * message ) + : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) + {} + }; - enum class DeviceGroupPresentModeFlagBitsKHR + class OutOfDeviceMemoryError : public SystemError { - eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR, - eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR, - eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR, - eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR + public: + OutOfDeviceMemoryError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) + {} + OutOfDeviceMemoryError( char const * message ) + : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) + {} }; - VULKAN_HPP_INLINE std::string to_string( DeviceGroupPresentModeFlagBitsKHR value ) + class InitializationFailedError : public SystemError { - switch ( value ) - { - case DeviceGroupPresentModeFlagBitsKHR::eLocal : return "Local"; - case DeviceGroupPresentModeFlagBitsKHR::eRemote : return "Remote"; - case DeviceGroupPresentModeFlagBitsKHR::eSum : return "Sum"; - case DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice : return "LocalMultiDevice"; - default: return "invalid"; - } - } - - using DeviceGroupPresentModeFlagsKHR = Flags; - - VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHR operator|( DeviceGroupPresentModeFlagBitsKHR bit0, DeviceGroupPresentModeFlagBitsKHR bit1 ) - { - return DeviceGroupPresentModeFlagsKHR( bit0 ) | bit1; - } + public: + InitializationFailedError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) + {} + InitializationFailedError( char const * message ) + : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) + {} + }; - VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHR operator~( DeviceGroupPresentModeFlagBitsKHR bits ) + class DeviceLostError : public SystemError { - return ~( DeviceGroupPresentModeFlagsKHR( bits ) ); - } + public: + DeviceLostError( std::string const & message ) : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) + {} + DeviceLostError( char const * message ) : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {} + }; - template <> struct FlagTraits + class MemoryMapFailedError : public SystemError { - enum - { - allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHR::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHR::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHR::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice) - }; + public: + MemoryMapFailedError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) + {} + MemoryMapFailedError( char const * message ) + : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) + {} }; - VULKAN_HPP_INLINE std::string to_string( DeviceGroupPresentModeFlagsKHR value ) + class LayerNotPresentError : public SystemError { - if ( !value ) return "{}"; - std::string result; - - if ( value & DeviceGroupPresentModeFlagBitsKHR::eLocal ) result += "Local | "; - if ( value & DeviceGroupPresentModeFlagBitsKHR::eRemote ) result += "Remote | "; - if ( value & DeviceGroupPresentModeFlagBitsKHR::eSum ) result += "Sum | "; - if ( value & DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice ) result += "LocalMultiDevice | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + public: + LayerNotPresentError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) + {} + LayerNotPresentError( char const * message ) + : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) + {} + }; - enum class DeviceQueueCreateFlagBits + class ExtensionNotPresentError : public SystemError { - eProtected = VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT + public: + ExtensionNotPresentError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) + {} + ExtensionNotPresentError( char const * message ) + : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) + {} }; - VULKAN_HPP_INLINE std::string to_string( DeviceQueueCreateFlagBits value ) + class FeatureNotPresentError : public SystemError { - switch ( value ) - { - case DeviceQueueCreateFlagBits::eProtected : return "Protected"; - default: return "invalid"; - } - } - - using DeviceQueueCreateFlags = Flags; + public: + FeatureNotPresentError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) + {} + FeatureNotPresentError( char const * message ) + : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) + {} + }; - VULKAN_HPP_INLINE DeviceQueueCreateFlags operator|( DeviceQueueCreateFlagBits bit0, DeviceQueueCreateFlagBits bit1 ) + class IncompatibleDriverError : public SystemError { - return DeviceQueueCreateFlags( bit0 ) | bit1; - } + public: + IncompatibleDriverError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) + {} + IncompatibleDriverError( char const * message ) + : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) + {} + }; - VULKAN_HPP_INLINE DeviceQueueCreateFlags operator~( DeviceQueueCreateFlagBits bits ) + class TooManyObjectsError : public SystemError { - return ~( DeviceQueueCreateFlags( bits ) ); - } + public: + TooManyObjectsError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) + {} + TooManyObjectsError( char const * message ) + : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) + {} + }; - template <> struct FlagTraits + class FormatNotSupportedError : public SystemError { - enum - { - allFlags = VkFlags(DeviceQueueCreateFlagBits::eProtected) - }; + public: + FormatNotSupportedError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) + {} + FormatNotSupportedError( char const * message ) + : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) + {} }; - VULKAN_HPP_INLINE std::string to_string( DeviceQueueCreateFlags value ) + class FragmentedPoolError : public SystemError { - if ( !value ) return "{}"; - std::string result; - - if ( value & DeviceQueueCreateFlagBits::eProtected ) result += "Protected | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class DisplayModeCreateFlagBitsKHR - {}; + public: + FragmentedPoolError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) + {} + FragmentedPoolError( char const * message ) + : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) + {} + }; - VULKAN_HPP_INLINE std::string to_string( DisplayModeCreateFlagBitsKHR ) + class UnknownError : public SystemError { - return "(void)"; - } - - using DisplayModeCreateFlagsKHR = Flags; + public: + UnknownError( std::string const & message ) : SystemError( make_error_code( Result::eErrorUnknown ), message ) {} + UnknownError( char const * message ) : SystemError( make_error_code( Result::eErrorUnknown ), message ) {} + }; - VULKAN_HPP_INLINE std::string to_string( DisplayModeCreateFlagsKHR ) + class OutOfPoolMemoryError : public SystemError { - return "{}"; - } + public: + OutOfPoolMemoryError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorOutOfPoolMemory ), message ) + {} + OutOfPoolMemoryError( char const * message ) + : SystemError( make_error_code( Result::eErrorOutOfPoolMemory ), message ) + {} + }; - enum class DisplayPlaneAlphaFlagBitsKHR + class InvalidExternalHandleError : public SystemError { - eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR, - eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR, - ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR, - ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR + public: + InvalidExternalHandleError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorInvalidExternalHandle ), message ) + {} + InvalidExternalHandleError( char const * message ) + : SystemError( make_error_code( Result::eErrorInvalidExternalHandle ), message ) + {} }; - VULKAN_HPP_INLINE std::string to_string( DisplayPlaneAlphaFlagBitsKHR value ) + class FragmentationError : public SystemError { - switch ( value ) - { - case DisplayPlaneAlphaFlagBitsKHR::eOpaque : return "Opaque"; - case DisplayPlaneAlphaFlagBitsKHR::eGlobal : return "Global"; - case DisplayPlaneAlphaFlagBitsKHR::ePerPixel : return "PerPixel"; - case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied : return "PerPixelPremultiplied"; - default: return "invalid"; - } - } - - using DisplayPlaneAlphaFlagsKHR = Flags; + public: + FragmentationError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorFragmentation ), message ) + {} + FragmentationError( char const * message ) : SystemError( make_error_code( Result::eErrorFragmentation ), message ) + {} + }; - VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 ) + class InvalidOpaqueCaptureAddressError : public SystemError { - return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1; - } + public: + InvalidOpaqueCaptureAddressError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorInvalidOpaqueCaptureAddress ), message ) + {} + InvalidOpaqueCaptureAddressError( char const * message ) + : SystemError( make_error_code( Result::eErrorInvalidOpaqueCaptureAddress ), message ) + {} + }; - VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits ) + class SurfaceLostKHRError : public SystemError { - return ~( DisplayPlaneAlphaFlagsKHR( bits ) ); - } + public: + SurfaceLostKHRError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) + {} + SurfaceLostKHRError( char const * message ) + : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) + {} + }; - template <> struct FlagTraits + class NativeWindowInUseKHRError : public SystemError { - enum - { - allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) - }; + public: + NativeWindowInUseKHRError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) + {} + NativeWindowInUseKHRError( char const * message ) + : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) + {} }; - VULKAN_HPP_INLINE std::string to_string( DisplayPlaneAlphaFlagsKHR value ) + class OutOfDateKHRError : public SystemError { - if ( !value ) return "{}"; - std::string result; - - if ( value & DisplayPlaneAlphaFlagBitsKHR::eOpaque ) result += "Opaque | "; - if ( value & DisplayPlaneAlphaFlagBitsKHR::eGlobal ) result += "Global | "; - if ( value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel ) result += "PerPixel | "; - if ( value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied ) result += "PerPixelPremultiplied | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class DisplaySurfaceCreateFlagBitsKHR - {}; + public: + OutOfDateKHRError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) + {} + OutOfDateKHRError( char const * message ) : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {} + }; - VULKAN_HPP_INLINE std::string to_string( DisplaySurfaceCreateFlagBitsKHR ) + class IncompatibleDisplayKHRError : public SystemError { - return "(void)"; - } - - using DisplaySurfaceCreateFlagsKHR = Flags; + public: + IncompatibleDisplayKHRError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) + {} + IncompatibleDisplayKHRError( char const * message ) + : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) + {} + }; - VULKAN_HPP_INLINE std::string to_string( DisplaySurfaceCreateFlagsKHR ) + class ValidationFailedEXTError : public SystemError { - return "{}"; - } - - enum class EventCreateFlagBits - {}; + public: + ValidationFailedEXTError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) + {} + ValidationFailedEXTError( char const * message ) + : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) + {} + }; - VULKAN_HPP_INLINE std::string to_string( EventCreateFlagBits ) + class InvalidShaderNVError : public SystemError { - return "(void)"; - } - - using EventCreateFlags = Flags; + public: + InvalidShaderNVError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) + {} + InvalidShaderNVError( char const * message ) + : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) + {} + }; - VULKAN_HPP_INLINE std::string to_string( EventCreateFlags ) + class InvalidDrmFormatModifierPlaneLayoutEXTError : public SystemError { - return "{}"; - } + public: + InvalidDrmFormatModifierPlaneLayoutEXTError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT ), message ) + {} + InvalidDrmFormatModifierPlaneLayoutEXTError( char const * message ) + : SystemError( make_error_code( Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT ), message ) + {} + }; - enum class ExternalFenceFeatureFlagBits + class NotPermittedKHRError : public SystemError { - eExportable = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT, - eImportable = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT, - eExportableKHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR, - eImportableKHR = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR + public: + NotPermittedKHRError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorNotPermittedKHR ), message ) + {} + NotPermittedKHRError( char const * message ) + : SystemError( make_error_code( Result::eErrorNotPermittedKHR ), message ) + {} }; - VULKAN_HPP_INLINE std::string to_string( ExternalFenceFeatureFlagBits value ) +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + class FullScreenExclusiveModeLostEXTError : public SystemError { - switch ( value ) - { - case ExternalFenceFeatureFlagBits::eExportable : return "Exportable"; - case ExternalFenceFeatureFlagBits::eImportable : return "Importable"; - default: return "invalid"; - } - } + public: + FullScreenExclusiveModeLostEXTError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorFullScreenExclusiveModeLostEXT ), message ) + {} + FullScreenExclusiveModeLostEXTError( char const * message ) + : SystemError( make_error_code( Result::eErrorFullScreenExclusiveModeLostEXT ), message ) + {} + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + namespace + { + [[noreturn]] void throwResultException( Result result, char const * message ) + { + switch ( result ) + { + case Result::eErrorOutOfHostMemory: throw OutOfHostMemoryError( message ); + case Result::eErrorOutOfDeviceMemory: throw OutOfDeviceMemoryError( message ); + case Result::eErrorInitializationFailed: throw InitializationFailedError( message ); + case Result::eErrorDeviceLost: throw DeviceLostError( message ); + case Result::eErrorMemoryMapFailed: throw MemoryMapFailedError( message ); + case Result::eErrorLayerNotPresent: throw LayerNotPresentError( message ); + case Result::eErrorExtensionNotPresent: throw ExtensionNotPresentError( message ); + case Result::eErrorFeatureNotPresent: throw FeatureNotPresentError( message ); + case Result::eErrorIncompatibleDriver: throw IncompatibleDriverError( message ); + case Result::eErrorTooManyObjects: throw TooManyObjectsError( message ); + case Result::eErrorFormatNotSupported: throw FormatNotSupportedError( message ); + case Result::eErrorFragmentedPool: throw FragmentedPoolError( message ); + case Result::eErrorUnknown: throw UnknownError( message ); + case Result::eErrorOutOfPoolMemory: throw OutOfPoolMemoryError( message ); + case Result::eErrorInvalidExternalHandle: throw InvalidExternalHandleError( message ); + case Result::eErrorFragmentation: throw FragmentationError( message ); + case Result::eErrorInvalidOpaqueCaptureAddress: throw InvalidOpaqueCaptureAddressError( message ); + case Result::eErrorSurfaceLostKHR: throw SurfaceLostKHRError( message ); + case Result::eErrorNativeWindowInUseKHR: throw NativeWindowInUseKHRError( message ); + case Result::eErrorOutOfDateKHR: throw OutOfDateKHRError( message ); + case Result::eErrorIncompatibleDisplayKHR: throw IncompatibleDisplayKHRError( message ); + case Result::eErrorValidationFailedEXT: throw ValidationFailedEXTError( message ); + case Result::eErrorInvalidShaderNV: throw InvalidShaderNVError( message ); + case Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT: + throw InvalidDrmFormatModifierPlaneLayoutEXTError( message ); + case Result::eErrorNotPermittedKHR: throw NotPermittedKHRError( message ); +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + case Result::eErrorFullScreenExclusiveModeLostEXT: throw FullScreenExclusiveModeLostEXTError( message ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + default: throw SystemError( make_error_code( result ) ); + } + } + } // namespace +#endif - using ExternalFenceFeatureFlags = Flags; + template + void ignore( T const & ) VULKAN_HPP_NOEXCEPT + {} - VULKAN_HPP_INLINE ExternalFenceFeatureFlags operator|( ExternalFenceFeatureFlagBits bit0, ExternalFenceFeatureFlagBits bit1 ) + template + struct ResultValue { - return ExternalFenceFeatureFlags( bit0 ) | bit1; - } +#ifdef VULKAN_HPP_HAS_NOEXCEPT + ResultValue( Result r, T & v ) VULKAN_HPP_NOEXCEPT( VULKAN_HPP_NOEXCEPT( T( v ) ) ) +#else + ResultValue( Result r, T & v ) +#endif + : result( r ), value( v ) + {} - VULKAN_HPP_INLINE ExternalFenceFeatureFlags operator~( ExternalFenceFeatureFlagBits bits ) - { - return ~( ExternalFenceFeatureFlags( bits ) ); - } +#ifdef VULKAN_HPP_HAS_NOEXCEPT + ResultValue( Result r, T && v ) VULKAN_HPP_NOEXCEPT( VULKAN_HPP_NOEXCEPT( T( std::move( v ) ) ) ) +#else + ResultValue( Result r, T && v ) +#endif + : result( r ), value( std::move( v ) ) + {} - template <> struct FlagTraits - { - enum + Result result; + T value; + + operator std::tuple() VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(ExternalFenceFeatureFlagBits::eExportable) | VkFlags(ExternalFenceFeatureFlagBits::eImportable) - }; - }; + return std::tuple( result, value ); + } - using ExternalFenceFeatureFlagsKHR = ExternalFenceFeatureFlags; +#if !defined( VULKAN_HPP_DISABLE_IMPLICIT_RESULT_VALUE_CAST ) + VULKAN_HPP_DEPRECATED( + "Implicit-cast operators on vk::ResultValue are deprecated. Explicitly access the value as member of ResultValue." ) + operator T const &() const & VULKAN_HPP_NOEXCEPT + { + return value; + } - VULKAN_HPP_INLINE std::string to_string( ExternalFenceFeatureFlags value ) - { - if ( !value ) return "{}"; - std::string result; + VULKAN_HPP_DEPRECATED( + "Implicit-cast operators on vk::ResultValue are deprecated. Explicitly access the value as member of ResultValue." ) + operator T &() & VULKAN_HPP_NOEXCEPT + { + return value; + } - if ( value & ExternalFenceFeatureFlagBits::eExportable ) result += "Exportable | "; - if ( value & ExternalFenceFeatureFlagBits::eImportable ) result += "Importable | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + VULKAN_HPP_DEPRECATED( + "Implicit-cast operators on vk::ResultValue are deprecated. Explicitly access the value as member of ResultValue." ) + operator T const &&() const && VULKAN_HPP_NOEXCEPT + { + return std::move( value ); + } - enum class ExternalFenceHandleTypeFlagBits - { - eOpaqueFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT, - eOpaqueWin32 = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT, - eOpaqueWin32Kmt = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, - eSyncFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT, - eOpaqueFdKHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR, - eOpaqueWin32KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR, - eOpaqueWin32KmtKHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR, - eSyncFdKHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR + VULKAN_HPP_DEPRECATED( + "Implicit-cast operators on vk::ResultValue are deprecated. Explicitly access the value as member of ResultValue." ) + operator T &&() && VULKAN_HPP_NOEXCEPT + { + return std::move( value ); + } +#endif }; - VULKAN_HPP_INLINE std::string to_string( ExternalFenceHandleTypeFlagBits value ) +#if !defined( VULKAN_HPP_NO_SMART_HANDLE ) + template + struct ResultValue> { - switch ( value ) +# ifdef VULKAN_HPP_HAS_NOEXCEPT + ResultValue( Result r, UniqueHandle && v ) VULKAN_HPP_NOEXCEPT +# else + ResultValue( Result r, UniqueHandle && v ) +# endif + : result( r ) + , value( std::move( v ) ) + {} + + std::tuple> asTuple() { - case ExternalFenceHandleTypeFlagBits::eOpaqueFd : return "OpaqueFd"; - case ExternalFenceHandleTypeFlagBits::eOpaqueWin32 : return "OpaqueWin32"; - case ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt : return "OpaqueWin32Kmt"; - case ExternalFenceHandleTypeFlagBits::eSyncFd : return "SyncFd"; - default: return "invalid"; + return std::make_tuple( result, std::move( value ) ); } - } - - using ExternalFenceHandleTypeFlags = Flags; - - VULKAN_HPP_INLINE ExternalFenceHandleTypeFlags operator|( ExternalFenceHandleTypeFlagBits bit0, ExternalFenceHandleTypeFlagBits bit1 ) - { - return ExternalFenceHandleTypeFlags( bit0 ) | bit1; - } - VULKAN_HPP_INLINE ExternalFenceHandleTypeFlags operator~( ExternalFenceHandleTypeFlagBits bits ) - { - return ~( ExternalFenceHandleTypeFlags( bits ) ); - } +# if !defined( VULKAN_HPP_DISABLE_IMPLICIT_RESULT_VALUE_CAST ) + VULKAN_HPP_DEPRECATED( + "Implicit-cast operators on vk::ResultValue are deprecated. Explicitly access the value as member of ResultValue." ) + operator UniqueHandle &() & VULKAN_HPP_NOEXCEPT + { + return value; + } - template <> struct FlagTraits - { - enum + VULKAN_HPP_DEPRECATED( + "Implicit-cast operators on vk::ResultValue are deprecated. Explicitly access the value as member of ResultValue." ) + operator UniqueHandle() VULKAN_HPP_NOEXCEPT { - allFlags = VkFlags(ExternalFenceHandleTypeFlagBits::eOpaqueFd) | VkFlags(ExternalFenceHandleTypeFlagBits::eOpaqueWin32) | VkFlags(ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt) | VkFlags(ExternalFenceHandleTypeFlagBits::eSyncFd) - }; - }; + return std::move( value ); + } +# endif - using ExternalFenceHandleTypeFlagsKHR = ExternalFenceHandleTypeFlags; + Result result; + UniqueHandle value; + }; - VULKAN_HPP_INLINE std::string to_string( ExternalFenceHandleTypeFlags value ) + template + struct ResultValue>> { - if ( !value ) return "{}"; - std::string result; +# ifdef VULKAN_HPP_HAS_NOEXCEPT + ResultValue( Result r, std::vector> && v ) VULKAN_HPP_NOEXCEPT +# else + ResultValue( Result r, std::vector> && v ) +# endif + : result( r ) + , value( std::move( v ) ) + {} - if ( value & ExternalFenceHandleTypeFlagBits::eOpaqueFd ) result += "OpaqueFd | "; - if ( value & ExternalFenceHandleTypeFlagBits::eOpaqueWin32 ) result += "OpaqueWin32 | "; - if ( value & ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt ) result += "OpaqueWin32Kmt | "; - if ( value & ExternalFenceHandleTypeFlagBits::eSyncFd ) result += "SyncFd | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + std::tuple>> asTuple() + { + return std::make_tuple( result, std::move( value ) ); + } - enum class ExternalMemoryFeatureFlagBits - { - eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT, - eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT, - eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT, - eDedicatedOnlyKHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR, - eExportableKHR = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR, - eImportableKHR = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR - }; + Result result; + std::vector> value; - VULKAN_HPP_INLINE std::string to_string( ExternalMemoryFeatureFlagBits value ) - { - switch ( value ) +# if !defined( VULKAN_HPP_DISABLE_IMPLICIT_RESULT_VALUE_CAST ) + VULKAN_HPP_DEPRECATED( + "Implicit-cast operators on vk::ResultValue are deprecated. Explicitly access the value as member of ResultValue." ) + operator std::tuple> &>() VULKAN_HPP_NOEXCEPT { - case ExternalMemoryFeatureFlagBits::eDedicatedOnly : return "DedicatedOnly"; - case ExternalMemoryFeatureFlagBits::eExportable : return "Exportable"; - case ExternalMemoryFeatureFlagBits::eImportable : return "Importable"; - default: return "invalid"; + return std::tuple> &>( result, value ); } - } - - using ExternalMemoryFeatureFlags = Flags; +# endif + }; +#endif - VULKAN_HPP_INLINE ExternalMemoryFeatureFlags operator|( ExternalMemoryFeatureFlagBits bit0, ExternalMemoryFeatureFlagBits bit1 ) + template + struct ResultValueType { - return ExternalMemoryFeatureFlags( bit0 ) | bit1; - } +#ifdef VULKAN_HPP_NO_EXCEPTIONS + typedef ResultValue type; +#else + typedef T type; +#endif + }; - VULKAN_HPP_INLINE ExternalMemoryFeatureFlags operator~( ExternalMemoryFeatureFlagBits bits ) + template <> + struct ResultValueType { - return ~( ExternalMemoryFeatureFlags( bits ) ); - } - - template <> struct FlagTraits - { - enum - { - allFlags = VkFlags(ExternalMemoryFeatureFlagBits::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBits::eExportable) | VkFlags(ExternalMemoryFeatureFlagBits::eImportable) - }; +#ifdef VULKAN_HPP_NO_EXCEPTIONS + typedef Result type; +#else + typedef void type; +#endif }; - using ExternalMemoryFeatureFlagsKHR = ExternalMemoryFeatureFlags; - - VULKAN_HPP_INLINE std::string to_string( ExternalMemoryFeatureFlags value ) + VULKAN_HPP_INLINE ResultValueType::type createResultValue( Result result, char const * message ) { - if ( !value ) return "{}"; - std::string result; - - if ( value & ExternalMemoryFeatureFlagBits::eDedicatedOnly ) result += "DedicatedOnly | "; - if ( value & ExternalMemoryFeatureFlagBits::eExportable ) result += "Exportable | "; - if ( value & ExternalMemoryFeatureFlagBits::eImportable ) result += "Importable | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; +#ifdef VULKAN_HPP_NO_EXCEPTIONS + ignore( message ); + VULKAN_HPP_ASSERT_ON_RESULT( result == Result::eSuccess ); + return result; +#else + if ( result != Result::eSuccess ) + { + throwResultException( result, message ); + } +#endif } - enum class ExternalMemoryFeatureFlagBitsNV - { - eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV, - eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV, - eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV - }; - - VULKAN_HPP_INLINE std::string to_string( ExternalMemoryFeatureFlagBitsNV value ) + template + VULKAN_HPP_INLINE typename ResultValueType::type createResultValue( Result result, T & data, char const * message ) { - switch ( value ) +#ifdef VULKAN_HPP_NO_EXCEPTIONS + ignore( message ); + VULKAN_HPP_ASSERT_ON_RESULT( result == Result::eSuccess ); + return ResultValue( result, std::move( data ) ); +#else + if ( result != Result::eSuccess ) { - case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly : return "DedicatedOnly"; - case ExternalMemoryFeatureFlagBitsNV::eExportable : return "Exportable"; - case ExternalMemoryFeatureFlagBitsNV::eImportable : return "Importable"; - default: return "invalid"; + throwResultException( result, message ); } + return std::move( data ); +#endif } - using ExternalMemoryFeatureFlagsNV = Flags; - - VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 ) + VULKAN_HPP_INLINE Result createResultValue( Result result, + char const * message, + std::initializer_list successCodes ) { - return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1; +#ifdef VULKAN_HPP_NO_EXCEPTIONS + ignore( message ); + ignore( successCodes ); // just in case VULKAN_HPP_ASSERT_ON_RESULT is empty + VULKAN_HPP_ASSERT_ON_RESULT( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() ); +#else + if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() ) + { + throwResultException( result, message ); + } +#endif + return result; } - VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits ) + template + VULKAN_HPP_INLINE ResultValue + createResultValue( Result result, T & data, char const * message, std::initializer_list successCodes ) { - return ~( ExternalMemoryFeatureFlagsNV( bits ) ); +#ifdef VULKAN_HPP_NO_EXCEPTIONS + ignore( message ); + ignore( successCodes ); // just in case VULKAN_HPP_ASSERT_ON_RESULT is empty + VULKAN_HPP_ASSERT_ON_RESULT( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() ); +#else + if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() ) + { + throwResultException( result, message ); + } +#endif + return ResultValue( result, std::move( data ) ); } - template <> struct FlagTraits +#ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type createResultValue( + Result result, T & data, char const * message, typename UniqueHandleTraits::deleter const & deleter ) { - enum +# ifdef VULKAN_HPP_NO_EXCEPTIONS + ignore( message ); + VULKAN_HPP_ASSERT_ON_RESULT( result == Result::eSuccess ); + return ResultValue>( result, UniqueHandle( data, deleter ) ); +# else + if ( result != Result::eSuccess ) { - allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable) - }; - }; - - VULKAN_HPP_INLINE std::string to_string( ExternalMemoryFeatureFlagsNV value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly ) result += "DedicatedOnly | "; - if ( value & ExternalMemoryFeatureFlagBitsNV::eExportable ) result += "Exportable | "; - if ( value & ExternalMemoryFeatureFlagBitsNV::eImportable ) result += "Importable | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; + throwResultException( result, message ); + } + return UniqueHandle( data, deleter ); +# endif } - enum class ExternalMemoryHandleTypeFlagBits - { - eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, - eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT, - eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, - eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT, - eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT, - eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT, - eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT, - eDmaBufEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT, - eAndroidHardwareBufferANDROID = VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, - eHostAllocationEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT, - eHostMappedForeignMemoryEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT, - eOpaqueFdKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR, - eOpaqueWin32KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR, - eOpaqueWin32KmtKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR, - eD3D11TextureKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR, - eD3D11TextureKmtKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR, - eD3D12HeapKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR, - eD3D12ResourceKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR - }; - - VULKAN_HPP_INLINE std::string to_string( ExternalMemoryHandleTypeFlagBits value ) - { - switch ( value ) - { - case ExternalMemoryHandleTypeFlagBits::eOpaqueFd : return "OpaqueFd"; - case ExternalMemoryHandleTypeFlagBits::eOpaqueWin32 : return "OpaqueWin32"; - case ExternalMemoryHandleTypeFlagBits::eOpaqueWin32Kmt : return "OpaqueWin32Kmt"; - case ExternalMemoryHandleTypeFlagBits::eD3D11Texture : return "D3D11Texture"; - case ExternalMemoryHandleTypeFlagBits::eD3D11TextureKmt : return "D3D11TextureKmt"; - case ExternalMemoryHandleTypeFlagBits::eD3D12Heap : return "D3D12Heap"; - case ExternalMemoryHandleTypeFlagBits::eD3D12Resource : return "D3D12Resource"; - case ExternalMemoryHandleTypeFlagBits::eDmaBufEXT : return "DmaBufEXT"; - case ExternalMemoryHandleTypeFlagBits::eAndroidHardwareBufferANDROID : return "AndroidHardwareBufferANDROID"; - case ExternalMemoryHandleTypeFlagBits::eHostAllocationEXT : return "HostAllocationEXT"; - case ExternalMemoryHandleTypeFlagBits::eHostMappedForeignMemoryEXT : return "HostMappedForeignMemoryEXT"; - default: return "invalid"; + template + VULKAN_HPP_INLINE ResultValue> + createResultValue( Result result, + T & data, + char const * message, + std::initializer_list successCodes, + typename UniqueHandleTraits::deleter const & deleter ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + ignore( message ); + ignore( successCodes ); // just in case VULKAN_HPP_ASSERT_ON_RESULT is empty + VULKAN_HPP_ASSERT_ON_RESULT( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() ); +# else + if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() ) + { + throwResultException( result, message ); } +# endif + return ResultValue>( result, UniqueHandle( data, deleter ) ); } - using ExternalMemoryHandleTypeFlags = Flags; - - VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlags operator|( ExternalMemoryHandleTypeFlagBits bit0, ExternalMemoryHandleTypeFlagBits bit1 ) + template + VULKAN_HPP_INLINE typename ResultValueType>>::type + createResultValue( Result result, std::vector> && data, char const * message ) { - return ExternalMemoryHandleTypeFlags( bit0 ) | bit1; +# ifdef VULKAN_HPP_NO_EXCEPTIONS + ignore( message ); + VULKAN_HPP_ASSERT_ON_RESULT( result == Result::eSuccess ); + return ResultValue>>( result, std::move( data ) ); +# else + if ( result != Result::eSuccess ) + { + throwResultException( result, message ); + } + return std::move( data ); +# endif } - VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlags operator~( ExternalMemoryHandleTypeFlagBits bits ) - { - return ~( ExternalMemoryHandleTypeFlags( bits ) ); + template + VULKAN_HPP_INLINE ResultValue>> + createResultValue( Result result, + std::vector> && data, + char const * message, + std::initializer_list successCodes ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + ignore( message ); + ignore( successCodes ); // just in case VULKAN_HPP_ASSERT_ON_RESULT is empty + VULKAN_HPP_ASSERT_ON_RESULT( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() ); +# else + if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() ) + { + throwResultException( result, message ); + } +# endif + return ResultValue>>( result, std::move( data ) ); } +#endif +} // namespace VULKAN_HPP_NAMESPACE + +// clang-format off +#include +#include +#include +// clang-format on - template <> struct FlagTraits +namespace VULKAN_HPP_NAMESPACE +{ + //======================= + //=== STRUCTS EXTENDS === + //======================= + + //=== VK_VERSION_1_1 === + template <> + struct StructExtends { enum { - allFlags = VkFlags(ExternalMemoryHandleTypeFlagBits::eOpaqueFd) | VkFlags(ExternalMemoryHandleTypeFlagBits::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBits::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBits::eD3D11Texture) | VkFlags(ExternalMemoryHandleTypeFlagBits::eD3D11TextureKmt) | VkFlags(ExternalMemoryHandleTypeFlagBits::eD3D12Heap) | VkFlags(ExternalMemoryHandleTypeFlagBits::eD3D12Resource) | VkFlags(ExternalMemoryHandleTypeFlagBits::eDmaBufEXT) | VkFlags(ExternalMemoryHandleTypeFlagBits::eAndroidHardwareBufferANDROID) | VkFlags(ExternalMemoryHandleTypeFlagBits::eHostAllocationEXT) | VkFlags(ExternalMemoryHandleTypeFlagBits::eHostMappedForeignMemoryEXT) + value = true }; }; - - using ExternalMemoryHandleTypeFlagsKHR = ExternalMemoryHandleTypeFlags; - - VULKAN_HPP_INLINE std::string to_string( ExternalMemoryHandleTypeFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) result += "OpaqueFd | "; - if ( value & ExternalMemoryHandleTypeFlagBits::eOpaqueWin32 ) result += "OpaqueWin32 | "; - if ( value & ExternalMemoryHandleTypeFlagBits::eOpaqueWin32Kmt ) result += "OpaqueWin32Kmt | "; - if ( value & ExternalMemoryHandleTypeFlagBits::eD3D11Texture ) result += "D3D11Texture | "; - if ( value & ExternalMemoryHandleTypeFlagBits::eD3D11TextureKmt ) result += "D3D11TextureKmt | "; - if ( value & ExternalMemoryHandleTypeFlagBits::eD3D12Heap ) result += "D3D12Heap | "; - if ( value & ExternalMemoryHandleTypeFlagBits::eD3D12Resource ) result += "D3D12Resource | "; - if ( value & ExternalMemoryHandleTypeFlagBits::eDmaBufEXT ) result += "DmaBufEXT | "; - if ( value & ExternalMemoryHandleTypeFlagBits::eAndroidHardwareBufferANDROID ) result += "AndroidHardwareBufferANDROID | "; - if ( value & ExternalMemoryHandleTypeFlagBits::eHostAllocationEXT ) result += "HostAllocationEXT | "; - if ( value & ExternalMemoryHandleTypeFlagBits::eHostMappedForeignMemoryEXT ) result += "HostMappedForeignMemoryEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class ExternalMemoryHandleTypeFlagBitsNV + template <> + struct StructExtends { - eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV, - eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV, - eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV, - eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( ExternalMemoryHandleTypeFlagBitsNV value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32 : return "OpaqueWin32"; - case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt : return "OpaqueWin32Kmt"; - case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image : return "D3D11Image"; - case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt : return "D3D11ImageKmt"; - default: return "invalid"; - } - } - - using ExternalMemoryHandleTypeFlagsNV = Flags; - - VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 ) - { - return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits ) - { - return ~( ExternalMemoryHandleTypeFlagsNV( bits ) ); - } - - template <> struct FlagTraits + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( ExternalMemoryHandleTypeFlagsNV value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32 ) result += "OpaqueWin32 | "; - if ( value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt ) result += "OpaqueWin32Kmt | "; - if ( value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image ) result += "D3D11Image | "; - if ( value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt ) result += "D3D11ImageKmt | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class ExternalSemaphoreFeatureFlagBits + template <> + struct StructExtends { - eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT, - eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT, - eExportableKHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR, - eImportableKHR = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( ExternalSemaphoreFeatureFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case ExternalSemaphoreFeatureFlagBits::eExportable : return "Exportable"; - case ExternalSemaphoreFeatureFlagBits::eImportable : return "Importable"; - default: return "invalid"; - } - } - - using ExternalSemaphoreFeatureFlags = Flags; - - VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlags operator|( ExternalSemaphoreFeatureFlagBits bit0, ExternalSemaphoreFeatureFlagBits bit1 ) - { - return ExternalSemaphoreFeatureFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlags operator~( ExternalSemaphoreFeatureFlagBits bits ) - { - return ~( ExternalSemaphoreFeatureFlags( bits ) ); - } - - template <> struct FlagTraits + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(ExternalSemaphoreFeatureFlagBits::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBits::eImportable) + value = true }; }; - - using ExternalSemaphoreFeatureFlagsKHR = ExternalSemaphoreFeatureFlags; - - VULKAN_HPP_INLINE std::string to_string( ExternalSemaphoreFeatureFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & ExternalSemaphoreFeatureFlagBits::eExportable ) result += "Exportable | "; - if ( value & ExternalSemaphoreFeatureFlagBits::eImportable ) result += "Importable | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class ExternalSemaphoreHandleTypeFlagBits + template <> + struct StructExtends { - eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT, - eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT, - eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, - eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT, - eSyncFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT, - eOpaqueFdKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR, - eOpaqueWin32KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR, - eOpaqueWin32KmtKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR, - eD3D12FenceKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR, - eSyncFdKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( ExternalSemaphoreHandleTypeFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd : return "OpaqueFd"; - case ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32 : return "OpaqueWin32"; - case ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt : return "OpaqueWin32Kmt"; - case ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence : return "D3D12Fence"; - case ExternalSemaphoreHandleTypeFlagBits::eSyncFd : return "SyncFd"; - default: return "invalid"; - } - } - - using ExternalSemaphoreHandleTypeFlags = Flags; - - VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlags operator|( ExternalSemaphoreHandleTypeFlagBits bit0, ExternalSemaphoreHandleTypeFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return ExternalSemaphoreHandleTypeFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlags operator~( ExternalSemaphoreHandleTypeFlagBits bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( ExternalSemaphoreHandleTypeFlags( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBits::eSyncFd) + value = true }; }; - - using ExternalSemaphoreHandleTypeFlagsKHR = ExternalSemaphoreHandleTypeFlags; - - VULKAN_HPP_INLINE std::string to_string( ExternalSemaphoreHandleTypeFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) result += "OpaqueFd | "; - if ( value & ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32 ) result += "OpaqueWin32 | "; - if ( value & ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt ) result += "OpaqueWin32Kmt | "; - if ( value & ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence ) result += "D3D12Fence | "; - if ( value & ExternalSemaphoreHandleTypeFlagBits::eSyncFd ) result += "SyncFd | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class FenceCreateFlagBits + enum + { + value = true + }; + }; + template <> + struct StructExtends { - eSignaled = VK_FENCE_CREATE_SIGNALED_BIT + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( FenceCreateFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case FenceCreateFlagBits::eSignaled : return "Signaled"; - default: return "invalid"; - } - } - - using FenceCreateFlags = Flags; - - VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return FenceCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( FenceCreateFlags( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(FenceCreateFlagBits::eSignaled) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( FenceCreateFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & FenceCreateFlagBits::eSignaled ) result += "Signaled | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class FenceImportFlagBits + enum + { + value = true + }; + }; + template <> + struct StructExtends { - eTemporary = VK_FENCE_IMPORT_TEMPORARY_BIT, - eTemporaryKHR = VK_FENCE_IMPORT_TEMPORARY_BIT_KHR + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( FenceImportFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case FenceImportFlagBits::eTemporary : return "Temporary"; - default: return "invalid"; - } - } - - using FenceImportFlags = Flags; - - VULKAN_HPP_INLINE FenceImportFlags operator|( FenceImportFlagBits bit0, FenceImportFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return FenceImportFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE FenceImportFlags operator~( FenceImportFlagBits bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( FenceImportFlags( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(FenceImportFlagBits::eTemporary) + value = true }; }; - - using FenceImportFlagsKHR = FenceImportFlags; - - VULKAN_HPP_INLINE std::string to_string( FenceImportFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & FenceImportFlagBits::eTemporary ) result += "Temporary | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class FormatFeatureFlagBits - { - eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, - eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, - eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT, - eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT, - eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT, - eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT, - eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT, - eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, - eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, - eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, - eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT, - eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT, - eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, - eTransferSrc = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT, - eTransferDst = VK_FORMAT_FEATURE_TRANSFER_DST_BIT, - eMidpointChromaSamples = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT, - eSampledImageYcbcrConversionLinearFilter = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT, - eSampledImageYcbcrConversionSeparateReconstructionFilter = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT, - eSampledImageYcbcrConversionChromaReconstructionExplicit = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT, - eSampledImageYcbcrConversionChromaReconstructionExplicitForceable = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT, - eDisjoint = VK_FORMAT_FEATURE_DISJOINT_BIT, - eCositedChromaSamples = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT, - eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG, - eSampledImageFilterMinmaxEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT, - eFragmentDensityMapEXT = VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT, - eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR, - eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR, - eMidpointChromaSamplesKHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR, - eSampledImageYcbcrConversionLinearFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR, - eSampledImageYcbcrConversionSeparateReconstructionFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR, - eSampledImageYcbcrConversionChromaReconstructionExplicitKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR, - eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR, - eDisjointKHR = VK_FORMAT_FEATURE_DISJOINT_BIT_KHR, - eCositedChromaSamplesKHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR, - eSampledImageFilterCubicEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT - }; - - VULKAN_HPP_INLINE std::string to_string( FormatFeatureFlagBits value ) - { - switch ( value ) - { - case FormatFeatureFlagBits::eSampledImage : return "SampledImage"; - case FormatFeatureFlagBits::eStorageImage : return "StorageImage"; - case FormatFeatureFlagBits::eStorageImageAtomic : return "StorageImageAtomic"; - case FormatFeatureFlagBits::eUniformTexelBuffer : return "UniformTexelBuffer"; - case FormatFeatureFlagBits::eStorageTexelBuffer : return "StorageTexelBuffer"; - case FormatFeatureFlagBits::eStorageTexelBufferAtomic : return "StorageTexelBufferAtomic"; - case FormatFeatureFlagBits::eVertexBuffer : return "VertexBuffer"; - case FormatFeatureFlagBits::eColorAttachment : return "ColorAttachment"; - case FormatFeatureFlagBits::eColorAttachmentBlend : return "ColorAttachmentBlend"; - case FormatFeatureFlagBits::eDepthStencilAttachment : return "DepthStencilAttachment"; - case FormatFeatureFlagBits::eBlitSrc : return "BlitSrc"; - case FormatFeatureFlagBits::eBlitDst : return "BlitDst"; - case FormatFeatureFlagBits::eSampledImageFilterLinear : return "SampledImageFilterLinear"; - case FormatFeatureFlagBits::eTransferSrc : return "TransferSrc"; - case FormatFeatureFlagBits::eTransferDst : return "TransferDst"; - case FormatFeatureFlagBits::eMidpointChromaSamples : return "MidpointChromaSamples"; - case FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilter : return "SampledImageYcbcrConversionLinearFilter"; - case FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilter : return "SampledImageYcbcrConversionSeparateReconstructionFilter"; - case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicit : return "SampledImageYcbcrConversionChromaReconstructionExplicit"; - case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable : return "SampledImageYcbcrConversionChromaReconstructionExplicitForceable"; - case FormatFeatureFlagBits::eDisjoint : return "Disjoint"; - case FormatFeatureFlagBits::eCositedChromaSamples : return "CositedChromaSamples"; - case FormatFeatureFlagBits::eSampledImageFilterCubicIMG : return "SampledImageFilterCubicIMG"; - case FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT : return "SampledImageFilterMinmaxEXT"; - case FormatFeatureFlagBits::eFragmentDensityMapEXT : return "FragmentDensityMapEXT"; - default: return "invalid"; - } - } - - using FormatFeatureFlags = Flags; - - VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 ) - { - return FormatFeatureFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits ) - { - return ~( FormatFeatureFlags( bits ) ); - } - - template <> struct FlagTraits - { - enum - { - allFlags = VkFlags(FormatFeatureFlagBits::eSampledImage) | VkFlags(FormatFeatureFlagBits::eStorageImage) | VkFlags(FormatFeatureFlagBits::eStorageImageAtomic) | VkFlags(FormatFeatureFlagBits::eUniformTexelBuffer) | VkFlags(FormatFeatureFlagBits::eStorageTexelBuffer) | VkFlags(FormatFeatureFlagBits::eStorageTexelBufferAtomic) | VkFlags(FormatFeatureFlagBits::eVertexBuffer) | VkFlags(FormatFeatureFlagBits::eColorAttachment) | VkFlags(FormatFeatureFlagBits::eColorAttachmentBlend) | VkFlags(FormatFeatureFlagBits::eDepthStencilAttachment) | VkFlags(FormatFeatureFlagBits::eBlitSrc) | VkFlags(FormatFeatureFlagBits::eBlitDst) | VkFlags(FormatFeatureFlagBits::eSampledImageFilterLinear) | VkFlags(FormatFeatureFlagBits::eTransferSrc) | VkFlags(FormatFeatureFlagBits::eTransferDst) | VkFlags(FormatFeatureFlagBits::eMidpointChromaSamples) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilter) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilter) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicit) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable) | VkFlags(FormatFeatureFlagBits::eDisjoint) | VkFlags(FormatFeatureFlagBits::eCositedChromaSamples) | VkFlags(FormatFeatureFlagBits::eSampledImageFilterCubicIMG) | VkFlags(FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT) | VkFlags(FormatFeatureFlagBits::eFragmentDensityMapEXT) - }; - }; - - VULKAN_HPP_INLINE std::string to_string( FormatFeatureFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & FormatFeatureFlagBits::eSampledImage ) result += "SampledImage | "; - if ( value & FormatFeatureFlagBits::eStorageImage ) result += "StorageImage | "; - if ( value & FormatFeatureFlagBits::eStorageImageAtomic ) result += "StorageImageAtomic | "; - if ( value & FormatFeatureFlagBits::eUniformTexelBuffer ) result += "UniformTexelBuffer | "; - if ( value & FormatFeatureFlagBits::eStorageTexelBuffer ) result += "StorageTexelBuffer | "; - if ( value & FormatFeatureFlagBits::eStorageTexelBufferAtomic ) result += "StorageTexelBufferAtomic | "; - if ( value & FormatFeatureFlagBits::eVertexBuffer ) result += "VertexBuffer | "; - if ( value & FormatFeatureFlagBits::eColorAttachment ) result += "ColorAttachment | "; - if ( value & FormatFeatureFlagBits::eColorAttachmentBlend ) result += "ColorAttachmentBlend | "; - if ( value & FormatFeatureFlagBits::eDepthStencilAttachment ) result += "DepthStencilAttachment | "; - if ( value & FormatFeatureFlagBits::eBlitSrc ) result += "BlitSrc | "; - if ( value & FormatFeatureFlagBits::eBlitDst ) result += "BlitDst | "; - if ( value & FormatFeatureFlagBits::eSampledImageFilterLinear ) result += "SampledImageFilterLinear | "; - if ( value & FormatFeatureFlagBits::eTransferSrc ) result += "TransferSrc | "; - if ( value & FormatFeatureFlagBits::eTransferDst ) result += "TransferDst | "; - if ( value & FormatFeatureFlagBits::eMidpointChromaSamples ) result += "MidpointChromaSamples | "; - if ( value & FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilter ) result += "SampledImageYcbcrConversionLinearFilter | "; - if ( value & FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilter ) result += "SampledImageYcbcrConversionSeparateReconstructionFilter | "; - if ( value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicit ) result += "SampledImageYcbcrConversionChromaReconstructionExplicit | "; - if ( value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable ) result += "SampledImageYcbcrConversionChromaReconstructionExplicitForceable | "; - if ( value & FormatFeatureFlagBits::eDisjoint ) result += "Disjoint | "; - if ( value & FormatFeatureFlagBits::eCositedChromaSamples ) result += "CositedChromaSamples | "; - if ( value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG ) result += "SampledImageFilterCubicIMG | "; - if ( value & FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT ) result += "SampledImageFilterMinmaxEXT | "; - if ( value & FormatFeatureFlagBits::eFragmentDensityMapEXT ) result += "FragmentDensityMapEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class FramebufferCreateFlagBits - { - eImagelessKHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( FramebufferCreateFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case FramebufferCreateFlagBits::eImagelessKHR : return "ImagelessKHR"; - default: return "invalid"; - } - } - - using FramebufferCreateFlags = Flags; - - VULKAN_HPP_INLINE FramebufferCreateFlags operator|( FramebufferCreateFlagBits bit0, FramebufferCreateFlagBits bit1 ) - { - return FramebufferCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE FramebufferCreateFlags operator~( FramebufferCreateFlagBits bits ) - { - return ~( FramebufferCreateFlags( bits ) ); - } - - template <> struct FlagTraits + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(FramebufferCreateFlagBits::eImagelessKHR) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( FramebufferCreateFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & FramebufferCreateFlagBits::eImagelessKHR ) result += "ImagelessKHR | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class GeometryFlagBitsNV + template <> + struct StructExtends { - eOpaque = VK_GEOMETRY_OPAQUE_BIT_NV, - eNoDuplicateAnyHitInvocation = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( GeometryFlagBitsNV value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case GeometryFlagBitsNV::eOpaque : return "Opaque"; - case GeometryFlagBitsNV::eNoDuplicateAnyHitInvocation : return "NoDuplicateAnyHitInvocation"; - default: return "invalid"; - } - } - - using GeometryFlagsNV = Flags; - - VULKAN_HPP_INLINE GeometryFlagsNV operator|( GeometryFlagBitsNV bit0, GeometryFlagBitsNV bit1 ) - { - return GeometryFlagsNV( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE GeometryFlagsNV operator~( GeometryFlagBitsNV bits ) - { - return ~( GeometryFlagsNV( bits ) ); - } - - template <> struct FlagTraits + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(GeometryFlagBitsNV::eOpaque) | VkFlags(GeometryFlagBitsNV::eNoDuplicateAnyHitInvocation) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( GeometryFlagsNV value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & GeometryFlagBitsNV::eOpaque ) result += "Opaque | "; - if ( value & GeometryFlagBitsNV::eNoDuplicateAnyHitInvocation ) result += "NoDuplicateAnyHitInvocation | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class GeometryInstanceFlagBitsNV + template <> + struct StructExtends { - eTriangleCullDisable = VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV, - eTriangleFrontCounterclockwise = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV, - eForceOpaque = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV, - eForceNoOpaque = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( GeometryInstanceFlagBitsNV value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case GeometryInstanceFlagBitsNV::eTriangleCullDisable : return "TriangleCullDisable"; - case GeometryInstanceFlagBitsNV::eTriangleFrontCounterclockwise : return "TriangleFrontCounterclockwise"; - case GeometryInstanceFlagBitsNV::eForceOpaque : return "ForceOpaque"; - case GeometryInstanceFlagBitsNV::eForceNoOpaque : return "ForceNoOpaque"; - default: return "invalid"; - } - } - - using GeometryInstanceFlagsNV = Flags; - - VULKAN_HPP_INLINE GeometryInstanceFlagsNV operator|( GeometryInstanceFlagBitsNV bit0, GeometryInstanceFlagBitsNV bit1 ) - { - return GeometryInstanceFlagsNV( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE GeometryInstanceFlagsNV operator~( GeometryInstanceFlagBitsNV bits ) - { - return ~( GeometryInstanceFlagsNV( bits ) ); - } - - template <> struct FlagTraits + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(GeometryInstanceFlagBitsNV::eTriangleCullDisable) | VkFlags(GeometryInstanceFlagBitsNV::eTriangleFrontCounterclockwise) | VkFlags(GeometryInstanceFlagBitsNV::eForceOpaque) | VkFlags(GeometryInstanceFlagBitsNV::eForceNoOpaque) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( GeometryInstanceFlagsNV value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & GeometryInstanceFlagBitsNV::eTriangleCullDisable ) result += "TriangleCullDisable | "; - if ( value & GeometryInstanceFlagBitsNV::eTriangleFrontCounterclockwise ) result += "TriangleFrontCounterclockwise | "; - if ( value & GeometryInstanceFlagBitsNV::eForceOpaque ) result += "ForceOpaque | "; - if ( value & GeometryInstanceFlagBitsNV::eForceNoOpaque ) result += "ForceNoOpaque | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class HeadlessSurfaceCreateFlagBitsEXT - {}; - - VULKAN_HPP_INLINE std::string to_string( HeadlessSurfaceCreateFlagBitsEXT ) - { - return "(void)"; - } - - using HeadlessSurfaceCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( HeadlessSurfaceCreateFlagsEXT ) - { - return "{}"; - } - -#ifdef VK_USE_PLATFORM_IOS_MVK - enum class IOSSurfaceCreateFlagBitsMVK - {}; - - VULKAN_HPP_INLINE std::string to_string( IOSSurfaceCreateFlagBitsMVK ) - { - return "(void)"; - } - - using IOSSurfaceCreateFlagsMVK = Flags; - - VULKAN_HPP_INLINE std::string to_string( IOSSurfaceCreateFlagsMVK ) - { - return "{}"; - } -#endif /*VK_USE_PLATFORM_IOS_MVK*/ - - enum class ImageAspectFlagBits - { - eColor = VK_IMAGE_ASPECT_COLOR_BIT, - eDepth = VK_IMAGE_ASPECT_DEPTH_BIT, - eStencil = VK_IMAGE_ASPECT_STENCIL_BIT, - eMetadata = VK_IMAGE_ASPECT_METADATA_BIT, - ePlane0 = VK_IMAGE_ASPECT_PLANE_0_BIT, - ePlane1 = VK_IMAGE_ASPECT_PLANE_1_BIT, - ePlane2 = VK_IMAGE_ASPECT_PLANE_2_BIT, - eMemoryPlane0EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT, - eMemoryPlane1EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT, - eMemoryPlane2EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT, - eMemoryPlane3EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT, - ePlane0KHR = VK_IMAGE_ASPECT_PLANE_0_BIT_KHR, - ePlane1KHR = VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, - ePlane2KHR = VK_IMAGE_ASPECT_PLANE_2_BIT_KHR - }; - - VULKAN_HPP_INLINE std::string to_string( ImageAspectFlagBits value ) - { - switch ( value ) - { - case ImageAspectFlagBits::eColor : return "Color"; - case ImageAspectFlagBits::eDepth : return "Depth"; - case ImageAspectFlagBits::eStencil : return "Stencil"; - case ImageAspectFlagBits::eMetadata : return "Metadata"; - case ImageAspectFlagBits::ePlane0 : return "Plane0"; - case ImageAspectFlagBits::ePlane1 : return "Plane1"; - case ImageAspectFlagBits::ePlane2 : return "Plane2"; - case ImageAspectFlagBits::eMemoryPlane0EXT : return "MemoryPlane0EXT"; - case ImageAspectFlagBits::eMemoryPlane1EXT : return "MemoryPlane1EXT"; - case ImageAspectFlagBits::eMemoryPlane2EXT : return "MemoryPlane2EXT"; - case ImageAspectFlagBits::eMemoryPlane3EXT : return "MemoryPlane3EXT"; - default: return "invalid"; - } - } - - using ImageAspectFlags = Flags; - - VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 ) - { - return ImageAspectFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits ) - { - return ~( ImageAspectFlags( bits ) ); - } - - template <> struct FlagTraits + template <> + struct StructExtends { enum { - allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata) | VkFlags(ImageAspectFlagBits::ePlane0) | VkFlags(ImageAspectFlagBits::ePlane1) | VkFlags(ImageAspectFlagBits::ePlane2) | VkFlags(ImageAspectFlagBits::eMemoryPlane0EXT) | VkFlags(ImageAspectFlagBits::eMemoryPlane1EXT) | VkFlags(ImageAspectFlagBits::eMemoryPlane2EXT) | VkFlags(ImageAspectFlagBits::eMemoryPlane3EXT) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( ImageAspectFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & ImageAspectFlagBits::eColor ) result += "Color | "; - if ( value & ImageAspectFlagBits::eDepth ) result += "Depth | "; - if ( value & ImageAspectFlagBits::eStencil ) result += "Stencil | "; - if ( value & ImageAspectFlagBits::eMetadata ) result += "Metadata | "; - if ( value & ImageAspectFlagBits::ePlane0 ) result += "Plane0 | "; - if ( value & ImageAspectFlagBits::ePlane1 ) result += "Plane1 | "; - if ( value & ImageAspectFlagBits::ePlane2 ) result += "Plane2 | "; - if ( value & ImageAspectFlagBits::eMemoryPlane0EXT ) result += "MemoryPlane0EXT | "; - if ( value & ImageAspectFlagBits::eMemoryPlane1EXT ) result += "MemoryPlane1EXT | "; - if ( value & ImageAspectFlagBits::eMemoryPlane2EXT ) result += "MemoryPlane2EXT | "; - if ( value & ImageAspectFlagBits::eMemoryPlane3EXT ) result += "MemoryPlane3EXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class ImageCreateFlagBits - { - eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT, - eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, - eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, - eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT, - eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, - eAlias = VK_IMAGE_CREATE_ALIAS_BIT, - eSplitInstanceBindRegions = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT, - e2DArrayCompatible = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT, - eBlockTexelViewCompatible = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, - eExtendedUsage = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT, - eProtected = VK_IMAGE_CREATE_PROTECTED_BIT, - eDisjoint = VK_IMAGE_CREATE_DISJOINT_BIT, - eCornerSampledNV = VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV, - eSampleLocationsCompatibleDepthEXT = VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT, - eSubsampledEXT = VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT, - eSplitInstanceBindRegionsKHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR, - e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR, - eBlockTexelViewCompatibleKHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR, - eExtendedUsageKHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR, - eDisjointKHR = VK_IMAGE_CREATE_DISJOINT_BIT_KHR, - eAliasKHR = VK_IMAGE_CREATE_ALIAS_BIT_KHR - }; - - VULKAN_HPP_INLINE std::string to_string( ImageCreateFlagBits value ) - { - switch ( value ) - { - case ImageCreateFlagBits::eSparseBinding : return "SparseBinding"; - case ImageCreateFlagBits::eSparseResidency : return "SparseResidency"; - case ImageCreateFlagBits::eSparseAliased : return "SparseAliased"; - case ImageCreateFlagBits::eMutableFormat : return "MutableFormat"; - case ImageCreateFlagBits::eCubeCompatible : return "CubeCompatible"; - case ImageCreateFlagBits::eAlias : return "Alias"; - case ImageCreateFlagBits::eSplitInstanceBindRegions : return "SplitInstanceBindRegions"; - case ImageCreateFlagBits::e2DArrayCompatible : return "2DArrayCompatible"; - case ImageCreateFlagBits::eBlockTexelViewCompatible : return "BlockTexelViewCompatible"; - case ImageCreateFlagBits::eExtendedUsage : return "ExtendedUsage"; - case ImageCreateFlagBits::eProtected : return "Protected"; - case ImageCreateFlagBits::eDisjoint : return "Disjoint"; - case ImageCreateFlagBits::eCornerSampledNV : return "CornerSampledNV"; - case ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT : return "SampleLocationsCompatibleDepthEXT"; - case ImageCreateFlagBits::eSubsampledEXT : return "SubsampledEXT"; - default: return "invalid"; - } - } - - using ImageCreateFlags = Flags; - - VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 ) - { - return ImageCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits ) - { - return ~( ImageCreateFlags( bits ) ); - } - - template <> struct FlagTraits + template <> + struct StructExtends { enum { - allFlags = VkFlags(ImageCreateFlagBits::eSparseBinding) | VkFlags(ImageCreateFlagBits::eSparseResidency) | VkFlags(ImageCreateFlagBits::eSparseAliased) | VkFlags(ImageCreateFlagBits::eMutableFormat) | VkFlags(ImageCreateFlagBits::eCubeCompatible) | VkFlags(ImageCreateFlagBits::eAlias) | VkFlags(ImageCreateFlagBits::eSplitInstanceBindRegions) | VkFlags(ImageCreateFlagBits::e2DArrayCompatible) | VkFlags(ImageCreateFlagBits::eBlockTexelViewCompatible) | VkFlags(ImageCreateFlagBits::eExtendedUsage) | VkFlags(ImageCreateFlagBits::eProtected) | VkFlags(ImageCreateFlagBits::eDisjoint) | VkFlags(ImageCreateFlagBits::eCornerSampledNV) | VkFlags(ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT) | VkFlags(ImageCreateFlagBits::eSubsampledEXT) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( ImageCreateFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & ImageCreateFlagBits::eSparseBinding ) result += "SparseBinding | "; - if ( value & ImageCreateFlagBits::eSparseResidency ) result += "SparseResidency | "; - if ( value & ImageCreateFlagBits::eSparseAliased ) result += "SparseAliased | "; - if ( value & ImageCreateFlagBits::eMutableFormat ) result += "MutableFormat | "; - if ( value & ImageCreateFlagBits::eCubeCompatible ) result += "CubeCompatible | "; - if ( value & ImageCreateFlagBits::eAlias ) result += "Alias | "; - if ( value & ImageCreateFlagBits::eSplitInstanceBindRegions ) result += "SplitInstanceBindRegions | "; - if ( value & ImageCreateFlagBits::e2DArrayCompatible ) result += "2DArrayCompatible | "; - if ( value & ImageCreateFlagBits::eBlockTexelViewCompatible ) result += "BlockTexelViewCompatible | "; - if ( value & ImageCreateFlagBits::eExtendedUsage ) result += "ExtendedUsage | "; - if ( value & ImageCreateFlagBits::eProtected ) result += "Protected | "; - if ( value & ImageCreateFlagBits::eDisjoint ) result += "Disjoint | "; - if ( value & ImageCreateFlagBits::eCornerSampledNV ) result += "CornerSampledNV | "; - if ( value & ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT ) result += "SampleLocationsCompatibleDepthEXT | "; - if ( value & ImageCreateFlagBits::eSubsampledEXT ) result += "SubsampledEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - -#ifdef VK_USE_PLATFORM_FUCHSIA - enum class ImagePipeSurfaceCreateFlagBitsFUCHSIA - {}; - - VULKAN_HPP_INLINE std::string to_string( ImagePipeSurfaceCreateFlagBitsFUCHSIA ) - { - return "(void)"; - } - - using ImagePipeSurfaceCreateFlagsFUCHSIA = Flags; - - VULKAN_HPP_INLINE std::string to_string( ImagePipeSurfaceCreateFlagsFUCHSIA ) - { - return "{}"; - } -#endif /*VK_USE_PLATFORM_FUCHSIA*/ - - enum class ImageUsageFlagBits + template <> + struct StructExtends { - eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT, - eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT, - eSampled = VK_IMAGE_USAGE_SAMPLED_BIT, - eStorage = VK_IMAGE_USAGE_STORAGE_BIT, - eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, - eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, - eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, - eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, - eShadingRateImageNV = VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV, - eFragmentDensityMapEXT = VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( ImageUsageFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case ImageUsageFlagBits::eTransferSrc : return "TransferSrc"; - case ImageUsageFlagBits::eTransferDst : return "TransferDst"; - case ImageUsageFlagBits::eSampled : return "Sampled"; - case ImageUsageFlagBits::eStorage : return "Storage"; - case ImageUsageFlagBits::eColorAttachment : return "ColorAttachment"; - case ImageUsageFlagBits::eDepthStencilAttachment : return "DepthStencilAttachment"; - case ImageUsageFlagBits::eTransientAttachment : return "TransientAttachment"; - case ImageUsageFlagBits::eInputAttachment : return "InputAttachment"; - case ImageUsageFlagBits::eShadingRateImageNV : return "ShadingRateImageNV"; - case ImageUsageFlagBits::eFragmentDensityMapEXT : return "FragmentDensityMapEXT"; - default: return "invalid"; - } - } - - using ImageUsageFlags = Flags; - - VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return ImageUsageFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( ImageUsageFlags( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(ImageUsageFlagBits::eTransferSrc) | VkFlags(ImageUsageFlagBits::eTransferDst) | VkFlags(ImageUsageFlagBits::eSampled) | VkFlags(ImageUsageFlagBits::eStorage) | VkFlags(ImageUsageFlagBits::eColorAttachment) | VkFlags(ImageUsageFlagBits::eDepthStencilAttachment) | VkFlags(ImageUsageFlagBits::eTransientAttachment) | VkFlags(ImageUsageFlagBits::eInputAttachment) | VkFlags(ImageUsageFlagBits::eShadingRateImageNV) | VkFlags(ImageUsageFlagBits::eFragmentDensityMapEXT) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( ImageUsageFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & ImageUsageFlagBits::eTransferSrc ) result += "TransferSrc | "; - if ( value & ImageUsageFlagBits::eTransferDst ) result += "TransferDst | "; - if ( value & ImageUsageFlagBits::eSampled ) result += "Sampled | "; - if ( value & ImageUsageFlagBits::eStorage ) result += "Storage | "; - if ( value & ImageUsageFlagBits::eColorAttachment ) result += "ColorAttachment | "; - if ( value & ImageUsageFlagBits::eDepthStencilAttachment ) result += "DepthStencilAttachment | "; - if ( value & ImageUsageFlagBits::eTransientAttachment ) result += "TransientAttachment | "; - if ( value & ImageUsageFlagBits::eInputAttachment ) result += "InputAttachment | "; - if ( value & ImageUsageFlagBits::eShadingRateImageNV ) result += "ShadingRateImageNV | "; - if ( value & ImageUsageFlagBits::eFragmentDensityMapEXT ) result += "FragmentDensityMapEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class ImageViewCreateFlagBits + enum + { + value = true + }; + }; + template <> + struct StructExtends { - eFragmentDensityMapDynamicEXT = VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( ImageViewCreateFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case ImageViewCreateFlagBits::eFragmentDensityMapDynamicEXT : return "FragmentDensityMapDynamicEXT"; - default: return "invalid"; - } - } - - using ImageViewCreateFlags = Flags; - - VULKAN_HPP_INLINE ImageViewCreateFlags operator|( ImageViewCreateFlagBits bit0, ImageViewCreateFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return ImageViewCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE ImageViewCreateFlags operator~( ImageViewCreateFlagBits bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( ImageViewCreateFlags( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(ImageViewCreateFlagBits::eFragmentDensityMapDynamicEXT) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( ImageViewCreateFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & ImageViewCreateFlagBits::eFragmentDensityMapDynamicEXT ) result += "FragmentDensityMapDynamicEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + enum + { + value = true + }; + }; - enum class IndirectCommandsLayoutUsageFlagBitsNVX + //=== VK_VERSION_1_2 === + template <> + struct StructExtends { - eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX, - eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX, - eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX, - eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( IndirectCommandsLayoutUsageFlagBitsNVX value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences : return "UnorderedSequences"; - case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences : return "SparseSequences"; - case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions : return "EmptyExecutions"; - case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences : return "IndexedSequences"; - default: return "invalid"; - } - } - - using IndirectCommandsLayoutUsageFlagsNVX = Flags; - - VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( IndirectCommandsLayoutUsageFlagsNVX value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences ) result += "UnorderedSequences | "; - if ( value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences ) result += "SparseSequences | "; - if ( value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions ) result += "EmptyExecutions | "; - if ( value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences ) result += "IndexedSequences | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class InstanceCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( InstanceCreateFlagBits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using InstanceCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( InstanceCreateFlags ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } - -#ifdef VK_USE_PLATFORM_MACOS_MVK - enum class MacOSSurfaceCreateFlagBitsMVK - {}; - - VULKAN_HPP_INLINE std::string to_string( MacOSSurfaceCreateFlagBitsMVK ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using MacOSSurfaceCreateFlagsMVK = Flags; - - VULKAN_HPP_INLINE std::string to_string( MacOSSurfaceCreateFlagsMVK ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } -#endif /*VK_USE_PLATFORM_MACOS_MVK*/ - - enum class MemoryAllocateFlagBits + enum + { + value = true + }; + }; + template <> + struct StructExtends { - eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT, - eDeviceMaskKHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( MemoryAllocateFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case MemoryAllocateFlagBits::eDeviceMask : return "DeviceMask"; - default: return "invalid"; - } - } - - using MemoryAllocateFlags = Flags; - - VULKAN_HPP_INLINE MemoryAllocateFlags operator|( MemoryAllocateFlagBits bit0, MemoryAllocateFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return MemoryAllocateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE MemoryAllocateFlags operator~( MemoryAllocateFlagBits bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( MemoryAllocateFlags( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(MemoryAllocateFlagBits::eDeviceMask) + value = true }; }; - - using MemoryAllocateFlagsKHR = MemoryAllocateFlags; - - VULKAN_HPP_INLINE std::string to_string( MemoryAllocateFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & MemoryAllocateFlagBits::eDeviceMask ) result += "DeviceMask | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class MemoryHeapFlagBits + enum + { + value = true + }; + }; + template <> + struct StructExtends { - eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT, - eMultiInstance = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT, - eMultiInstanceKHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( MemoryHeapFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case MemoryHeapFlagBits::eDeviceLocal : return "DeviceLocal"; - case MemoryHeapFlagBits::eMultiInstance : return "MultiInstance"; - default: return "invalid"; - } - } - - using MemoryHeapFlags = Flags; - - VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return MemoryHeapFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( MemoryHeapFlags( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstance) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( MemoryHeapFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & MemoryHeapFlagBits::eDeviceLocal ) result += "DeviceLocal | "; - if ( value & MemoryHeapFlagBits::eMultiInstance ) result += "MultiInstance | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class MemoryMapFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( MemoryMapFlagBits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using MemoryMapFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( MemoryMapFlags ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } - - enum class MemoryPropertyFlagBits + enum + { + value = true + }; + }; + template <> + struct StructExtends { - eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, - eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, - eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, - eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT, - eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT, - eProtected = VK_MEMORY_PROPERTY_PROTECTED_BIT, - eDeviceCoherentAMD = VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD, - eDeviceUncachedAMD = VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( MemoryPropertyFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case MemoryPropertyFlagBits::eDeviceLocal : return "DeviceLocal"; - case MemoryPropertyFlagBits::eHostVisible : return "HostVisible"; - case MemoryPropertyFlagBits::eHostCoherent : return "HostCoherent"; - case MemoryPropertyFlagBits::eHostCached : return "HostCached"; - case MemoryPropertyFlagBits::eLazilyAllocated : return "LazilyAllocated"; - case MemoryPropertyFlagBits::eProtected : return "Protected"; - case MemoryPropertyFlagBits::eDeviceCoherentAMD : return "DeviceCoherentAMD"; - case MemoryPropertyFlagBits::eDeviceUncachedAMD : return "DeviceUncachedAMD"; - default: return "invalid"; - } - } - - using MemoryPropertyFlags = Flags; - - VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return MemoryPropertyFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( MemoryPropertyFlags( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated) | VkFlags(MemoryPropertyFlagBits::eProtected) | VkFlags(MemoryPropertyFlagBits::eDeviceCoherentAMD) | VkFlags(MemoryPropertyFlagBits::eDeviceUncachedAMD) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( MemoryPropertyFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & MemoryPropertyFlagBits::eDeviceLocal ) result += "DeviceLocal | "; - if ( value & MemoryPropertyFlagBits::eHostVisible ) result += "HostVisible | "; - if ( value & MemoryPropertyFlagBits::eHostCoherent ) result += "HostCoherent | "; - if ( value & MemoryPropertyFlagBits::eHostCached ) result += "HostCached | "; - if ( value & MemoryPropertyFlagBits::eLazilyAllocated ) result += "LazilyAllocated | "; - if ( value & MemoryPropertyFlagBits::eProtected ) result += "Protected | "; - if ( value & MemoryPropertyFlagBits::eDeviceCoherentAMD ) result += "DeviceCoherentAMD | "; - if ( value & MemoryPropertyFlagBits::eDeviceUncachedAMD ) result += "DeviceUncachedAMD | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - -#ifdef VK_USE_PLATFORM_METAL_EXT - enum class MetalSurfaceCreateFlagBitsEXT - {}; - - VULKAN_HPP_INLINE std::string to_string( MetalSurfaceCreateFlagBitsEXT ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using MetalSurfaceCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( MetalSurfaceCreateFlagsEXT ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } -#endif /*VK_USE_PLATFORM_METAL_EXT*/ - - enum class ObjectEntryUsageFlagBitsNVX + enum + { + value = true + }; + }; + template <> + struct StructExtends { - eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX, - eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( ObjectEntryUsageFlagBitsNVX value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case ObjectEntryUsageFlagBitsNVX::eGraphics : return "Graphics"; - case ObjectEntryUsageFlagBitsNVX::eCompute : return "Compute"; - default: return "invalid"; - } - } - - using ObjectEntryUsageFlagsNVX = Flags; - - VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return ObjectEntryUsageFlagsNVX( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( ObjectEntryUsageFlagsNVX( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( ObjectEntryUsageFlagsNVX value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & ObjectEntryUsageFlagBitsNVX::eGraphics ) result += "Graphics | "; - if ( value & ObjectEntryUsageFlagBitsNVX::eCompute ) result += "Compute | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class PeerMemoryFeatureFlagBits + enum + { + value = true + }; + }; + template <> + struct StructExtends { - eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT, - eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT, - eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT, - eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT, - eCopySrcKHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR, - eCopyDstKHR = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR, - eGenericSrcKHR = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR, - eGenericDstKHR = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( PeerMemoryFeatureFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case PeerMemoryFeatureFlagBits::eCopySrc : return "CopySrc"; - case PeerMemoryFeatureFlagBits::eCopyDst : return "CopyDst"; - case PeerMemoryFeatureFlagBits::eGenericSrc : return "GenericSrc"; - case PeerMemoryFeatureFlagBits::eGenericDst : return "GenericDst"; - default: return "invalid"; - } - } - - using PeerMemoryFeatureFlags = Flags; - - VULKAN_HPP_INLINE PeerMemoryFeatureFlags operator|( PeerMemoryFeatureFlagBits bit0, PeerMemoryFeatureFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return PeerMemoryFeatureFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE PeerMemoryFeatureFlags operator~( PeerMemoryFeatureFlagBits bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( PeerMemoryFeatureFlags( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(PeerMemoryFeatureFlagBits::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBits::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBits::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBits::eGenericDst) + value = true }; }; - - using PeerMemoryFeatureFlagsKHR = PeerMemoryFeatureFlags; - - VULKAN_HPP_INLINE std::string to_string( PeerMemoryFeatureFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & PeerMemoryFeatureFlagBits::eCopySrc ) result += "CopySrc | "; - if ( value & PeerMemoryFeatureFlagBits::eCopyDst ) result += "CopyDst | "; - if ( value & PeerMemoryFeatureFlagBits::eGenericSrc ) result += "GenericSrc | "; - if ( value & PeerMemoryFeatureFlagBits::eGenericDst ) result += "GenericDst | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class PipelineCacheCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineCacheCreateFlagBits ) - { - return "(void)"; - } - - using PipelineCacheCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineCacheCreateFlags ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } - - enum class PipelineColorBlendStateCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineColorBlendStateCreateFlagBits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using PipelineColorBlendStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineColorBlendStateCreateFlags ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } - - enum class PipelineCompilerControlFlagBitsAMD - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineCompilerControlFlagBitsAMD ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using PipelineCompilerControlFlagsAMD = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineCompilerControlFlagsAMD ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } - - enum class PipelineCoverageModulationStateCreateFlagBitsNV - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineCoverageModulationStateCreateFlagBitsNV ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using PipelineCoverageModulationStateCreateFlagsNV = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineCoverageModulationStateCreateFlagsNV ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } - - enum class PipelineCoverageReductionStateCreateFlagBitsNV - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineCoverageReductionStateCreateFlagBitsNV ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using PipelineCoverageReductionStateCreateFlagsNV = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineCoverageReductionStateCreateFlagsNV ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } - - enum class PipelineCoverageToColorStateCreateFlagBitsNV - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineCoverageToColorStateCreateFlagBitsNV ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using PipelineCoverageToColorStateCreateFlagsNV = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineCoverageToColorStateCreateFlagsNV ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } - - enum class PipelineCreateFlagBits + enum + { + value = true + }; + }; + template <> + struct StructExtends { - eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT, - eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT, - eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT, - eViewIndexFromDeviceIndex = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT, - eDispatchBase = VK_PIPELINE_CREATE_DISPATCH_BASE, - eDeferCompileNV = VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV, - eCaptureStatisticsKHR = VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR, - eCaptureInternalRepresentationsKHR = VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR, - eViewIndexFromDeviceIndexKHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR, - eDispatchBaseKHR = VK_PIPELINE_CREATE_DISPATCH_BASE_KHR + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( PipelineCreateFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case PipelineCreateFlagBits::eDisableOptimization : return "DisableOptimization"; - case PipelineCreateFlagBits::eAllowDerivatives : return "AllowDerivatives"; - case PipelineCreateFlagBits::eDerivative : return "Derivative"; - case PipelineCreateFlagBits::eViewIndexFromDeviceIndex : return "ViewIndexFromDeviceIndex"; - case PipelineCreateFlagBits::eDispatchBase : return "DispatchBase"; - case PipelineCreateFlagBits::eDeferCompileNV : return "DeferCompileNV"; - case PipelineCreateFlagBits::eCaptureStatisticsKHR : return "CaptureStatisticsKHR"; - case PipelineCreateFlagBits::eCaptureInternalRepresentationsKHR : return "CaptureInternalRepresentationsKHR"; - default: return "invalid"; - } - } - - using PipelineCreateFlags = Flags; - - VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return PipelineCreateFlags( bit0 ) | bit1; - } + enum + { + value = true + }; + }; - VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits ) + //=== VK_VERSION_1_3 === + template <> + struct StructExtends { - return ~( PipelineCreateFlags( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndex) | VkFlags(PipelineCreateFlagBits::eDispatchBase) | VkFlags(PipelineCreateFlagBits::eDeferCompileNV) | VkFlags(PipelineCreateFlagBits::eCaptureStatisticsKHR) | VkFlags(PipelineCreateFlagBits::eCaptureInternalRepresentationsKHR) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( PipelineCreateFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & PipelineCreateFlagBits::eDisableOptimization ) result += "DisableOptimization | "; - if ( value & PipelineCreateFlagBits::eAllowDerivatives ) result += "AllowDerivatives | "; - if ( value & PipelineCreateFlagBits::eDerivative ) result += "Derivative | "; - if ( value & PipelineCreateFlagBits::eViewIndexFromDeviceIndex ) result += "ViewIndexFromDeviceIndex | "; - if ( value & PipelineCreateFlagBits::eDispatchBase ) result += "DispatchBase | "; - if ( value & PipelineCreateFlagBits::eDeferCompileNV ) result += "DeferCompileNV | "; - if ( value & PipelineCreateFlagBits::eCaptureStatisticsKHR ) result += "CaptureStatisticsKHR | "; - if ( value & PipelineCreateFlagBits::eCaptureInternalRepresentationsKHR ) result += "CaptureInternalRepresentationsKHR | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class PipelineCreationFeedbackFlagBitsEXT + enum + { + value = true + }; + }; + template <> + struct StructExtends { - eValid = VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT, - eApplicationPipelineCacheHit = VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT, - eBasePipelineAcceleration = VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( PipelineCreationFeedbackFlagBitsEXT value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case PipelineCreationFeedbackFlagBitsEXT::eValid : return "Valid"; - case PipelineCreationFeedbackFlagBitsEXT::eApplicationPipelineCacheHit : return "ApplicationPipelineCacheHit"; - case PipelineCreationFeedbackFlagBitsEXT::eBasePipelineAcceleration : return "BasePipelineAcceleration"; - default: return "invalid"; - } - } - - using PipelineCreationFeedbackFlagsEXT = Flags; - - VULKAN_HPP_INLINE PipelineCreationFeedbackFlagsEXT operator|( PipelineCreationFeedbackFlagBitsEXT bit0, PipelineCreationFeedbackFlagBitsEXT bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return PipelineCreationFeedbackFlagsEXT( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE PipelineCreationFeedbackFlagsEXT operator~( PipelineCreationFeedbackFlagBitsEXT bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( PipelineCreationFeedbackFlagsEXT( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(PipelineCreationFeedbackFlagBitsEXT::eValid) | VkFlags(PipelineCreationFeedbackFlagBitsEXT::eApplicationPipelineCacheHit) | VkFlags(PipelineCreationFeedbackFlagBitsEXT::eBasePipelineAcceleration) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( PipelineCreationFeedbackFlagsEXT value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & PipelineCreationFeedbackFlagBitsEXT::eValid ) result += "Valid | "; - if ( value & PipelineCreationFeedbackFlagBitsEXT::eApplicationPipelineCacheHit ) result += "ApplicationPipelineCacheHit | "; - if ( value & PipelineCreationFeedbackFlagBitsEXT::eBasePipelineAcceleration ) result += "BasePipelineAcceleration | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class PipelineDepthStencilStateCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineDepthStencilStateCreateFlagBits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using PipelineDepthStencilStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineDepthStencilStateCreateFlags ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } - - enum class PipelineDiscardRectangleStateCreateFlagBitsEXT - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineDiscardRectangleStateCreateFlagBitsEXT ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using PipelineDiscardRectangleStateCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineDiscardRectangleStateCreateFlagsEXT ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } - - enum class PipelineDynamicStateCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineDynamicStateCreateFlagBits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using PipelineDynamicStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineDynamicStateCreateFlags ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } - - enum class PipelineInputAssemblyStateCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineInputAssemblyStateCreateFlagBits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using PipelineInputAssemblyStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineInputAssemblyStateCreateFlags ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } - - enum class PipelineLayoutCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineLayoutCreateFlagBits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using PipelineLayoutCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineLayoutCreateFlags ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } - - enum class PipelineMultisampleStateCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineMultisampleStateCreateFlagBits ) - { - return "(void)"; - } - - using PipelineMultisampleStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineMultisampleStateCreateFlags ) - { - return "{}"; - } - - enum class PipelineRasterizationConservativeStateCreateFlagBitsEXT - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationConservativeStateCreateFlagBitsEXT ) - { - return "(void)"; - } - - using PipelineRasterizationConservativeStateCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationConservativeStateCreateFlagsEXT ) - { - return "{}"; - } - - enum class PipelineRasterizationDepthClipStateCreateFlagBitsEXT - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationDepthClipStateCreateFlagBitsEXT ) - { - return "(void)"; - } - - using PipelineRasterizationDepthClipStateCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationDepthClipStateCreateFlagsEXT ) - { - return "{}"; - } - - enum class PipelineRasterizationStateCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationStateCreateFlagBits ) - { - return "(void)"; - } - - using PipelineRasterizationStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationStateCreateFlags ) - { - return "{}"; - } - - enum class PipelineRasterizationStateStreamCreateFlagBitsEXT - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationStateStreamCreateFlagBitsEXT ) - { - return "(void)"; - } - - using PipelineRasterizationStateStreamCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationStateStreamCreateFlagsEXT ) - { - return "{}"; - } - - enum class PipelineShaderStageCreateFlagBits - { - eAllowVaryingSubgroupSizeEXT = VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, - eRequireFullSubgroupsEXT = VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( PipelineShaderStageCreateFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case PipelineShaderStageCreateFlagBits::eAllowVaryingSubgroupSizeEXT : return "AllowVaryingSubgroupSizeEXT"; - case PipelineShaderStageCreateFlagBits::eRequireFullSubgroupsEXT : return "RequireFullSubgroupsEXT"; - default: return "invalid"; - } - } - - using PipelineShaderStageCreateFlags = Flags; - - VULKAN_HPP_INLINE PipelineShaderStageCreateFlags operator|( PipelineShaderStageCreateFlagBits bit0, PipelineShaderStageCreateFlagBits bit1 ) - { - return PipelineShaderStageCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE PipelineShaderStageCreateFlags operator~( PipelineShaderStageCreateFlagBits bits ) - { - return ~( PipelineShaderStageCreateFlags( bits ) ); - } - - template <> struct FlagTraits + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(PipelineShaderStageCreateFlagBits::eAllowVaryingSubgroupSizeEXT) | VkFlags(PipelineShaderStageCreateFlagBits::eRequireFullSubgroupsEXT) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( PipelineShaderStageCreateFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & PipelineShaderStageCreateFlagBits::eAllowVaryingSubgroupSizeEXT ) result += "AllowVaryingSubgroupSizeEXT | "; - if ( value & PipelineShaderStageCreateFlagBits::eRequireFullSubgroupsEXT ) result += "RequireFullSubgroupsEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class PipelineStageFlagBits - { - eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, - eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, - eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT, - eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT, - eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT, - eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, - eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT, - eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, - eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT, - eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, - eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, - eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, - eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT, - eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, - eHost = VK_PIPELINE_STAGE_HOST_BIT, - eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, - eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, - eTransformFeedbackEXT = VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT, - eConditionalRenderingEXT = VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT, - eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX, - eShadingRateImageNV = VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV, - eRayTracingShaderNV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV, - eAccelerationStructureBuildNV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV, - eTaskShaderNV = VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV, - eMeshShaderNV = VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV, - eFragmentDensityProcessEXT = VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT - }; - - VULKAN_HPP_INLINE std::string to_string( PipelineStageFlagBits value ) - { - switch ( value ) - { - case PipelineStageFlagBits::eTopOfPipe : return "TopOfPipe"; - case PipelineStageFlagBits::eDrawIndirect : return "DrawIndirect"; - case PipelineStageFlagBits::eVertexInput : return "VertexInput"; - case PipelineStageFlagBits::eVertexShader : return "VertexShader"; - case PipelineStageFlagBits::eTessellationControlShader : return "TessellationControlShader"; - case PipelineStageFlagBits::eTessellationEvaluationShader : return "TessellationEvaluationShader"; - case PipelineStageFlagBits::eGeometryShader : return "GeometryShader"; - case PipelineStageFlagBits::eFragmentShader : return "FragmentShader"; - case PipelineStageFlagBits::eEarlyFragmentTests : return "EarlyFragmentTests"; - case PipelineStageFlagBits::eLateFragmentTests : return "LateFragmentTests"; - case PipelineStageFlagBits::eColorAttachmentOutput : return "ColorAttachmentOutput"; - case PipelineStageFlagBits::eComputeShader : return "ComputeShader"; - case PipelineStageFlagBits::eTransfer : return "Transfer"; - case PipelineStageFlagBits::eBottomOfPipe : return "BottomOfPipe"; - case PipelineStageFlagBits::eHost : return "Host"; - case PipelineStageFlagBits::eAllGraphics : return "AllGraphics"; - case PipelineStageFlagBits::eAllCommands : return "AllCommands"; - case PipelineStageFlagBits::eTransformFeedbackEXT : return "TransformFeedbackEXT"; - case PipelineStageFlagBits::eConditionalRenderingEXT : return "ConditionalRenderingEXT"; - case PipelineStageFlagBits::eCommandProcessNVX : return "CommandProcessNVX"; - case PipelineStageFlagBits::eShadingRateImageNV : return "ShadingRateImageNV"; - case PipelineStageFlagBits::eRayTracingShaderNV : return "RayTracingShaderNV"; - case PipelineStageFlagBits::eAccelerationStructureBuildNV : return "AccelerationStructureBuildNV"; - case PipelineStageFlagBits::eTaskShaderNV : return "TaskShaderNV"; - case PipelineStageFlagBits::eMeshShaderNV : return "MeshShaderNV"; - case PipelineStageFlagBits::eFragmentDensityProcessEXT : return "FragmentDensityProcessEXT"; - default: return "invalid"; - } - } - - using PipelineStageFlags = Flags; - - VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 ) - { - return PipelineStageFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits ) - { - return ~( PipelineStageFlags( bits ) ); - } - - template <> struct FlagTraits - { - enum - { - allFlags = VkFlags(PipelineStageFlagBits::eTopOfPipe) | VkFlags(PipelineStageFlagBits::eDrawIndirect) | VkFlags(PipelineStageFlagBits::eVertexInput) | VkFlags(PipelineStageFlagBits::eVertexShader) | VkFlags(PipelineStageFlagBits::eTessellationControlShader) | VkFlags(PipelineStageFlagBits::eTessellationEvaluationShader) | VkFlags(PipelineStageFlagBits::eGeometryShader) | VkFlags(PipelineStageFlagBits::eFragmentShader) | VkFlags(PipelineStageFlagBits::eEarlyFragmentTests) | VkFlags(PipelineStageFlagBits::eLateFragmentTests) | VkFlags(PipelineStageFlagBits::eColorAttachmentOutput) | VkFlags(PipelineStageFlagBits::eComputeShader) | VkFlags(PipelineStageFlagBits::eTransfer) | VkFlags(PipelineStageFlagBits::eBottomOfPipe) | VkFlags(PipelineStageFlagBits::eHost) | VkFlags(PipelineStageFlagBits::eAllGraphics) | VkFlags(PipelineStageFlagBits::eAllCommands) | VkFlags(PipelineStageFlagBits::eTransformFeedbackEXT) | VkFlags(PipelineStageFlagBits::eConditionalRenderingEXT) | VkFlags(PipelineStageFlagBits::eCommandProcessNVX) | VkFlags(PipelineStageFlagBits::eShadingRateImageNV) | VkFlags(PipelineStageFlagBits::eRayTracingShaderNV) | VkFlags(PipelineStageFlagBits::eAccelerationStructureBuildNV) | VkFlags(PipelineStageFlagBits::eTaskShaderNV) | VkFlags(PipelineStageFlagBits::eMeshShaderNV) | VkFlags(PipelineStageFlagBits::eFragmentDensityProcessEXT) - }; - }; - - VULKAN_HPP_INLINE std::string to_string( PipelineStageFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & PipelineStageFlagBits::eTopOfPipe ) result += "TopOfPipe | "; - if ( value & PipelineStageFlagBits::eDrawIndirect ) result += "DrawIndirect | "; - if ( value & PipelineStageFlagBits::eVertexInput ) result += "VertexInput | "; - if ( value & PipelineStageFlagBits::eVertexShader ) result += "VertexShader | "; - if ( value & PipelineStageFlagBits::eTessellationControlShader ) result += "TessellationControlShader | "; - if ( value & PipelineStageFlagBits::eTessellationEvaluationShader ) result += "TessellationEvaluationShader | "; - if ( value & PipelineStageFlagBits::eGeometryShader ) result += "GeometryShader | "; - if ( value & PipelineStageFlagBits::eFragmentShader ) result += "FragmentShader | "; - if ( value & PipelineStageFlagBits::eEarlyFragmentTests ) result += "EarlyFragmentTests | "; - if ( value & PipelineStageFlagBits::eLateFragmentTests ) result += "LateFragmentTests | "; - if ( value & PipelineStageFlagBits::eColorAttachmentOutput ) result += "ColorAttachmentOutput | "; - if ( value & PipelineStageFlagBits::eComputeShader ) result += "ComputeShader | "; - if ( value & PipelineStageFlagBits::eTransfer ) result += "Transfer | "; - if ( value & PipelineStageFlagBits::eBottomOfPipe ) result += "BottomOfPipe | "; - if ( value & PipelineStageFlagBits::eHost ) result += "Host | "; - if ( value & PipelineStageFlagBits::eAllGraphics ) result += "AllGraphics | "; - if ( value & PipelineStageFlagBits::eAllCommands ) result += "AllCommands | "; - if ( value & PipelineStageFlagBits::eTransformFeedbackEXT ) result += "TransformFeedbackEXT | "; - if ( value & PipelineStageFlagBits::eConditionalRenderingEXT ) result += "ConditionalRenderingEXT | "; - if ( value & PipelineStageFlagBits::eCommandProcessNVX ) result += "CommandProcessNVX | "; - if ( value & PipelineStageFlagBits::eShadingRateImageNV ) result += "ShadingRateImageNV | "; - if ( value & PipelineStageFlagBits::eRayTracingShaderNV ) result += "RayTracingShaderNV | "; - if ( value & PipelineStageFlagBits::eAccelerationStructureBuildNV ) result += "AccelerationStructureBuildNV | "; - if ( value & PipelineStageFlagBits::eTaskShaderNV ) result += "TaskShaderNV | "; - if ( value & PipelineStageFlagBits::eMeshShaderNV ) result += "MeshShaderNV | "; - if ( value & PipelineStageFlagBits::eFragmentDensityProcessEXT ) result += "FragmentDensityProcessEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class PipelineTessellationStateCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineTessellationStateCreateFlagBits ) - { - return "(void)"; - } - - using PipelineTessellationStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineTessellationStateCreateFlags ) - { - return "{}"; - } - - enum class PipelineVertexInputStateCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineVertexInputStateCreateFlagBits ) - { - return "(void)"; - } - - using PipelineVertexInputStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineVertexInputStateCreateFlags ) - { - return "{}"; - } - - enum class PipelineViewportStateCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineViewportStateCreateFlagBits ) - { - return "(void)"; - } - - using PipelineViewportStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineViewportStateCreateFlags ) - { - return "{}"; - } - - enum class PipelineViewportSwizzleStateCreateFlagBitsNV - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineViewportSwizzleStateCreateFlagBitsNV ) - { - return "(void)"; - } - - using PipelineViewportSwizzleStateCreateFlagsNV = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineViewportSwizzleStateCreateFlagsNV ) - { - return "{}"; - } - - enum class QueryControlFlagBits + template <> + struct StructExtends { - ePrecise = VK_QUERY_CONTROL_PRECISE_BIT + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( QueryControlFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case QueryControlFlagBits::ePrecise : return "Precise"; - default: return "invalid"; - } - } - - using QueryControlFlags = Flags; - - VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 ) - { - return QueryControlFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits ) - { - return ~( QueryControlFlags( bits ) ); - } - - template <> struct FlagTraits + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(QueryControlFlagBits::ePrecise) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( QueryControlFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & QueryControlFlagBits::ePrecise ) result += "Precise | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class QueryPipelineStatisticFlagBits - { - eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, - eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, - eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, - eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, - eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, - eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, - eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, - eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT, - eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, - eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT, - eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT - }; - - VULKAN_HPP_INLINE std::string to_string( QueryPipelineStatisticFlagBits value ) - { - switch ( value ) - { - case QueryPipelineStatisticFlagBits::eInputAssemblyVertices : return "InputAssemblyVertices"; - case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives : return "InputAssemblyPrimitives"; - case QueryPipelineStatisticFlagBits::eVertexShaderInvocations : return "VertexShaderInvocations"; - case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations : return "GeometryShaderInvocations"; - case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives : return "GeometryShaderPrimitives"; - case QueryPipelineStatisticFlagBits::eClippingInvocations : return "ClippingInvocations"; - case QueryPipelineStatisticFlagBits::eClippingPrimitives : return "ClippingPrimitives"; - case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations : return "FragmentShaderInvocations"; - case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches : return "TessellationControlShaderPatches"; - case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations : return "TessellationEvaluationShaderInvocations"; - case QueryPipelineStatisticFlagBits::eComputeShaderInvocations : return "ComputeShaderInvocations"; - default: return "invalid"; - } - } - - using QueryPipelineStatisticFlags = Flags; - - VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 ) - { - return QueryPipelineStatisticFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits ) - { - return ~( QueryPipelineStatisticFlags( bits ) ); - } - - template <> struct FlagTraits + template <> + struct StructExtends { enum { - allFlags = VkFlags(QueryPipelineStatisticFlagBits::eInputAssemblyVertices) | VkFlags(QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) | VkFlags(QueryPipelineStatisticFlagBits::eVertexShaderInvocations) | VkFlags(QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) | VkFlags(QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) | VkFlags(QueryPipelineStatisticFlagBits::eClippingInvocations) | VkFlags(QueryPipelineStatisticFlagBits::eClippingPrimitives) | VkFlags(QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) | VkFlags(QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) | VkFlags(QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) | VkFlags(QueryPipelineStatisticFlagBits::eComputeShaderInvocations) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( QueryPipelineStatisticFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices ) result += "InputAssemblyVertices | "; - if ( value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives ) result += "InputAssemblyPrimitives | "; - if ( value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations ) result += "VertexShaderInvocations | "; - if ( value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations ) result += "GeometryShaderInvocations | "; - if ( value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives ) result += "GeometryShaderPrimitives | "; - if ( value & QueryPipelineStatisticFlagBits::eClippingInvocations ) result += "ClippingInvocations | "; - if ( value & QueryPipelineStatisticFlagBits::eClippingPrimitives ) result += "ClippingPrimitives | "; - if ( value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations ) result += "FragmentShaderInvocations | "; - if ( value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches ) result += "TessellationControlShaderPatches | "; - if ( value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations ) result += "TessellationEvaluationShaderInvocations | "; - if ( value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations ) result += "ComputeShaderInvocations | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class QueryPoolCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( QueryPoolCreateFlagBits ) - { - return "(void)"; - } - - using QueryPoolCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( QueryPoolCreateFlags ) - { - return "{}"; - } - - enum class QueryResultFlagBits + template <> + struct StructExtends { - e64 = VK_QUERY_RESULT_64_BIT, - eWait = VK_QUERY_RESULT_WAIT_BIT, - eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT, - ePartial = VK_QUERY_RESULT_PARTIAL_BIT + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( QueryResultFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case QueryResultFlagBits::e64 : return "64"; - case QueryResultFlagBits::eWait : return "Wait"; - case QueryResultFlagBits::eWithAvailability : return "WithAvailability"; - case QueryResultFlagBits::ePartial : return "Partial"; - default: return "invalid"; - } - } - - using QueryResultFlags = Flags; - - VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 ) - { - return QueryResultFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits ) - { - return ~( QueryResultFlags( bits ) ); - } - - template <> struct FlagTraits + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( QueryResultFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & QueryResultFlagBits::e64 ) result += "64 | "; - if ( value & QueryResultFlagBits::eWait ) result += "Wait | "; - if ( value & QueryResultFlagBits::eWithAvailability ) result += "WithAvailability | "; - if ( value & QueryResultFlagBits::ePartial ) result += "Partial | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class QueueFlagBits + template <> + struct StructExtends { - eGraphics = VK_QUEUE_GRAPHICS_BIT, - eCompute = VK_QUEUE_COMPUTE_BIT, - eTransfer = VK_QUEUE_TRANSFER_BIT, - eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT, - eProtected = VK_QUEUE_PROTECTED_BIT + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( QueueFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case QueueFlagBits::eGraphics : return "Graphics"; - case QueueFlagBits::eCompute : return "Compute"; - case QueueFlagBits::eTransfer : return "Transfer"; - case QueueFlagBits::eSparseBinding : return "SparseBinding"; - case QueueFlagBits::eProtected : return "Protected"; - default: return "invalid"; - } - } - - using QueueFlags = Flags; - - VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 ) - { - return QueueFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits ) - { - return ~( QueueFlags( bits ) ); - } - - template <> struct FlagTraits + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding) | VkFlags(QueueFlagBits::eProtected) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( QueueFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & QueueFlagBits::eGraphics ) result += "Graphics | "; - if ( value & QueueFlagBits::eCompute ) result += "Compute | "; - if ( value & QueueFlagBits::eTransfer ) result += "Transfer | "; - if ( value & QueueFlagBits::eSparseBinding ) result += "SparseBinding | "; - if ( value & QueueFlagBits::eProtected ) result += "Protected | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class RenderPassCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( RenderPassCreateFlagBits ) - { - return "(void)"; - } - - using RenderPassCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( RenderPassCreateFlags ) - { - return "{}"; - } - - enum class ResolveModeFlagBitsKHR + template <> + struct StructExtends { - eNone = VK_RESOLVE_MODE_NONE_KHR, - eSampleZero = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR, - eAverage = VK_RESOLVE_MODE_AVERAGE_BIT_KHR, - eMin = VK_RESOLVE_MODE_MIN_BIT_KHR, - eMax = VK_RESOLVE_MODE_MAX_BIT_KHR + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( ResolveModeFlagBitsKHR value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case ResolveModeFlagBitsKHR::eNone : return "None"; - case ResolveModeFlagBitsKHR::eSampleZero : return "SampleZero"; - case ResolveModeFlagBitsKHR::eAverage : return "Average"; - case ResolveModeFlagBitsKHR::eMin : return "Min"; - case ResolveModeFlagBitsKHR::eMax : return "Max"; - default: return "invalid"; - } - } - - using ResolveModeFlagsKHR = Flags; - - VULKAN_HPP_INLINE ResolveModeFlagsKHR operator|( ResolveModeFlagBitsKHR bit0, ResolveModeFlagBitsKHR bit1 ) - { - return ResolveModeFlagsKHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE ResolveModeFlagsKHR operator~( ResolveModeFlagBitsKHR bits ) + value = true + }; + }; + template <> + struct StructExtends { - return ~( ResolveModeFlagsKHR( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(ResolveModeFlagBitsKHR::eNone) | VkFlags(ResolveModeFlagBitsKHR::eSampleZero) | VkFlags(ResolveModeFlagBitsKHR::eAverage) | VkFlags(ResolveModeFlagBitsKHR::eMin) | VkFlags(ResolveModeFlagBitsKHR::eMax) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( ResolveModeFlagsKHR value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & ResolveModeFlagBitsKHR::eSampleZero ) result += "SampleZero | "; - if ( value & ResolveModeFlagBitsKHR::eAverage ) result += "Average | "; - if ( value & ResolveModeFlagBitsKHR::eMin ) result += "Min | "; - if ( value & ResolveModeFlagBitsKHR::eMax ) result += "Max | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class SampleCountFlagBits - { - e1 = VK_SAMPLE_COUNT_1_BIT, - e2 = VK_SAMPLE_COUNT_2_BIT, - e4 = VK_SAMPLE_COUNT_4_BIT, - e8 = VK_SAMPLE_COUNT_8_BIT, - e16 = VK_SAMPLE_COUNT_16_BIT, - e32 = VK_SAMPLE_COUNT_32_BIT, - e64 = VK_SAMPLE_COUNT_64_BIT + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( SampleCountFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case SampleCountFlagBits::e1 : return "1"; - case SampleCountFlagBits::e2 : return "2"; - case SampleCountFlagBits::e4 : return "4"; - case SampleCountFlagBits::e8 : return "8"; - case SampleCountFlagBits::e16 : return "16"; - case SampleCountFlagBits::e32 : return "32"; - case SampleCountFlagBits::e64 : return "64"; - default: return "invalid"; - } - } - - using SampleCountFlags = Flags; - - VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 ) - { - return SampleCountFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits ) - { - return ~( SampleCountFlags( bits ) ); - } - - template <> struct FlagTraits + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( SampleCountFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & SampleCountFlagBits::e1 ) result += "1 | "; - if ( value & SampleCountFlagBits::e2 ) result += "2 | "; - if ( value & SampleCountFlagBits::e4 ) result += "4 | "; - if ( value & SampleCountFlagBits::e8 ) result += "8 | "; - if ( value & SampleCountFlagBits::e16 ) result += "16 | "; - if ( value & SampleCountFlagBits::e32 ) result += "32 | "; - if ( value & SampleCountFlagBits::e64 ) result += "64 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class SamplerCreateFlagBits + template <> + struct StructExtends { - eSubsampledEXT = VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT, - eSubsampledCoarseReconstructionEXT = VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( SamplerCreateFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case SamplerCreateFlagBits::eSubsampledEXT : return "SubsampledEXT"; - case SamplerCreateFlagBits::eSubsampledCoarseReconstructionEXT : return "SubsampledCoarseReconstructionEXT"; - default: return "invalid"; - } - } - - using SamplerCreateFlags = Flags; - - VULKAN_HPP_INLINE SamplerCreateFlags operator|( SamplerCreateFlagBits bit0, SamplerCreateFlagBits bit1 ) - { - return SamplerCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE SamplerCreateFlags operator~( SamplerCreateFlagBits bits ) - { - return ~( SamplerCreateFlags( bits ) ); - } - - template <> struct FlagTraits + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(SamplerCreateFlagBits::eSubsampledEXT) | VkFlags(SamplerCreateFlagBits::eSubsampledCoarseReconstructionEXT) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( SamplerCreateFlags value ) - { - if ( !value ) return "{}"; - std::string result; - - if ( value & SamplerCreateFlagBits::eSubsampledEXT ) result += "SubsampledEXT | "; - if ( value & SamplerCreateFlagBits::eSubsampledCoarseReconstructionEXT ) result += "SubsampledCoarseReconstructionEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class SemaphoreCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( SemaphoreCreateFlagBits ) - { - return "(void)"; - } - - using SemaphoreCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( SemaphoreCreateFlags ) - { - return "{}"; - } - - enum class SemaphoreImportFlagBits + template <> + struct StructExtends { - eTemporary = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT, - eTemporaryKHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( SemaphoreImportFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case SemaphoreImportFlagBits::eTemporary : return "Temporary"; - default: return "invalid"; - } - } - - using SemaphoreImportFlags = Flags; - - VULKAN_HPP_INLINE SemaphoreImportFlags operator|( SemaphoreImportFlagBits bit0, SemaphoreImportFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return SemaphoreImportFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE SemaphoreImportFlags operator~( SemaphoreImportFlagBits bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( SemaphoreImportFlags( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(SemaphoreImportFlagBits::eTemporary) + value = true }; }; - using SemaphoreImportFlagsKHR = SemaphoreImportFlags; - - VULKAN_HPP_INLINE std::string to_string( SemaphoreImportFlags value ) + //=== VK_KHR_swapchain === + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & SemaphoreImportFlagBits::eTemporary ) result += "Temporary | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class ShaderCorePropertiesFlagBitsAMD - {}; - - VULKAN_HPP_INLINE std::string to_string( ShaderCorePropertiesFlagBitsAMD ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using ShaderCorePropertiesFlagsAMD = Flags; - - VULKAN_HPP_INLINE std::string to_string( ShaderCorePropertiesFlagsAMD ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } - - enum class ShaderModuleCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( ShaderModuleCreateFlagBits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using ShaderModuleCreateFlags = Flags; + enum + { + value = true + }; + }; - VULKAN_HPP_INLINE std::string to_string( ShaderModuleCreateFlags ) + //=== VK_KHR_display_swapchain === + template <> + struct StructExtends { - return "{}"; - } - - enum class ShaderStageFlagBits - { - eVertex = VK_SHADER_STAGE_VERTEX_BIT, - eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, - eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, - eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT, - eFragment = VK_SHADER_STAGE_FRAGMENT_BIT, - eCompute = VK_SHADER_STAGE_COMPUTE_BIT, - eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS, - eAll = VK_SHADER_STAGE_ALL, - eRaygenNV = VK_SHADER_STAGE_RAYGEN_BIT_NV, - eAnyHitNV = VK_SHADER_STAGE_ANY_HIT_BIT_NV, - eClosestHitNV = VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV, - eMissNV = VK_SHADER_STAGE_MISS_BIT_NV, - eIntersectionNV = VK_SHADER_STAGE_INTERSECTION_BIT_NV, - eCallableNV = VK_SHADER_STAGE_CALLABLE_BIT_NV, - eTaskNV = VK_SHADER_STAGE_TASK_BIT_NV, - eMeshNV = VK_SHADER_STAGE_MESH_BIT_NV - }; - - VULKAN_HPP_INLINE std::string to_string( ShaderStageFlagBits value ) - { - switch ( value ) - { - case ShaderStageFlagBits::eVertex : return "Vertex"; - case ShaderStageFlagBits::eTessellationControl : return "TessellationControl"; - case ShaderStageFlagBits::eTessellationEvaluation : return "TessellationEvaluation"; - case ShaderStageFlagBits::eGeometry : return "Geometry"; - case ShaderStageFlagBits::eFragment : return "Fragment"; - case ShaderStageFlagBits::eCompute : return "Compute"; - case ShaderStageFlagBits::eAllGraphics : return "AllGraphics"; - case ShaderStageFlagBits::eAll : return "All"; - case ShaderStageFlagBits::eRaygenNV : return "RaygenNV"; - case ShaderStageFlagBits::eAnyHitNV : return "AnyHitNV"; - case ShaderStageFlagBits::eClosestHitNV : return "ClosestHitNV"; - case ShaderStageFlagBits::eMissNV : return "MissNV"; - case ShaderStageFlagBits::eIntersectionNV : return "IntersectionNV"; - case ShaderStageFlagBits::eCallableNV : return "CallableNV"; - case ShaderStageFlagBits::eTaskNV : return "TaskNV"; - case ShaderStageFlagBits::eMeshNV : return "MeshNV"; - default: return "invalid"; - } - } - - using ShaderStageFlags = Flags; + enum + { + value = true + }; + }; - VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 ) + //=== VK_EXT_debug_report === + template <> + struct StructExtends { - return ShaderStageFlags( bit0 ) | bit1; - } + enum + { + value = true + }; + }; - VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits ) + //=== VK_AMD_rasterization_order === + template <> + struct StructExtends { - return ~( ShaderStageFlags( bits ) ); - } + enum + { + value = true + }; + }; - template <> struct FlagTraits +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + template <> + struct StructExtends { enum { - allFlags = VkFlags(ShaderStageFlagBits::eVertex) | VkFlags(ShaderStageFlagBits::eTessellationControl) | VkFlags(ShaderStageFlagBits::eTessellationEvaluation) | VkFlags(ShaderStageFlagBits::eGeometry) | VkFlags(ShaderStageFlagBits::eFragment) | VkFlags(ShaderStageFlagBits::eCompute) | VkFlags(ShaderStageFlagBits::eAllGraphics) | VkFlags(ShaderStageFlagBits::eAll) | VkFlags(ShaderStageFlagBits::eRaygenNV) | VkFlags(ShaderStageFlagBits::eAnyHitNV) | VkFlags(ShaderStageFlagBits::eClosestHitNV) | VkFlags(ShaderStageFlagBits::eMissNV) | VkFlags(ShaderStageFlagBits::eIntersectionNV) | VkFlags(ShaderStageFlagBits::eCallableNV) | VkFlags(ShaderStageFlagBits::eTaskNV) | VkFlags(ShaderStageFlagBits::eMeshNV) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( ShaderStageFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & ShaderStageFlagBits::eVertex ) result += "Vertex | "; - if ( value & ShaderStageFlagBits::eTessellationControl ) result += "TessellationControl | "; - if ( value & ShaderStageFlagBits::eTessellationEvaluation ) result += "TessellationEvaluation | "; - if ( value & ShaderStageFlagBits::eGeometry ) result += "Geometry | "; - if ( value & ShaderStageFlagBits::eFragment ) result += "Fragment | "; - if ( value & ShaderStageFlagBits::eCompute ) result += "Compute | "; - if ( value & ShaderStageFlagBits::eRaygenNV ) result += "RaygenNV | "; - if ( value & ShaderStageFlagBits::eAnyHitNV ) result += "AnyHitNV | "; - if ( value & ShaderStageFlagBits::eClosestHitNV ) result += "ClosestHitNV | "; - if ( value & ShaderStageFlagBits::eMissNV ) result += "MissNV | "; - if ( value & ShaderStageFlagBits::eIntersectionNV ) result += "IntersectionNV | "; - if ( value & ShaderStageFlagBits::eCallableNV ) result += "CallableNV | "; - if ( value & ShaderStageFlagBits::eTaskNV ) result += "TaskNV | "; - if ( value & ShaderStageFlagBits::eMeshNV ) result += "MeshNV | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class SparseImageFormatFlagBits + enum + { + value = true + }; + }; + template <> + struct StructExtends { - eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT, - eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT, - eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( SparseImageFormatFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case SparseImageFormatFlagBits::eSingleMiptail : return "SingleMiptail"; - case SparseImageFormatFlagBits::eAlignedMipSize : return "AlignedMipSize"; - case SparseImageFormatFlagBits::eNonstandardBlockSize : return "NonstandardBlockSize"; - default: return "invalid"; - } - } - - using SparseImageFormatFlags = Flags; - - VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return SparseImageFormatFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( SparseImageFormatFlags( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( SparseImageFormatFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & SparseImageFormatFlagBits::eSingleMiptail ) result += "SingleMiptail | "; - if ( value & SparseImageFormatFlagBits::eAlignedMipSize ) result += "AlignedMipSize | "; - if ( value & SparseImageFormatFlagBits::eNonstandardBlockSize ) result += "NonstandardBlockSize | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class SparseMemoryBindFlagBits + enum + { + value = true + }; + }; + template <> + struct StructExtends { - eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( SparseMemoryBindFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case SparseMemoryBindFlagBits::eMetadata : return "Metadata"; - default: return "invalid"; - } - } - - using SparseMemoryBindFlags = Flags; - - VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return SparseMemoryBindFlags( bit0 ) | bit1; - } + enum + { + value = true + }; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ - VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits ) + //=== VK_NV_dedicated_allocation === + template <> + struct StructExtends { - return ~( SparseMemoryBindFlags( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( SparseMemoryBindFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & SparseMemoryBindFlagBits::eMetadata ) result += "Metadata | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + enum + { + value = true + }; + }; - enum class StencilFaceFlagBits + //=== VK_EXT_transform_feedback === + template <> + struct StructExtends { - eFront = VK_STENCIL_FACE_FRONT_BIT, - eBack = VK_STENCIL_FACE_BACK_BIT, - eFrontAndBack = VK_STENCIL_FACE_FRONT_AND_BACK, - eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( StencilFaceFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case StencilFaceFlagBits::eFront : return "Front"; - case StencilFaceFlagBits::eBack : return "Back"; - case StencilFaceFlagBits::eFrontAndBack : return "FrontAndBack"; - default: return "invalid"; - } - } - - using StencilFaceFlags = Flags; - - VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return StencilFaceFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( StencilFaceFlags( bits ) ); - } + enum + { + value = true + }; + }; - template <> struct FlagTraits +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_encode_h264 === + template <> + struct StructExtends { enum { - allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eFrontAndBack) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( StencilFaceFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & StencilFaceFlagBits::eFront ) result += "Front | "; - if ( value & StencilFaceFlagBits::eBack ) result += "Back | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - -#ifdef VK_USE_PLATFORM_GGP - enum class StreamDescriptorSurfaceCreateFlagBitsGGP - {}; - - VULKAN_HPP_INLINE std::string to_string( StreamDescriptorSurfaceCreateFlagBitsGGP ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using StreamDescriptorSurfaceCreateFlagsGGP = Flags; - - VULKAN_HPP_INLINE std::string to_string( StreamDescriptorSurfaceCreateFlagsGGP ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } -#endif /*VK_USE_PLATFORM_GGP*/ - - enum class SubgroupFeatureFlagBits + enum + { + value = true + }; + }; + template <> + struct StructExtends { - eBasic = VK_SUBGROUP_FEATURE_BASIC_BIT, - eVote = VK_SUBGROUP_FEATURE_VOTE_BIT, - eArithmetic = VK_SUBGROUP_FEATURE_ARITHMETIC_BIT, - eBallot = VK_SUBGROUP_FEATURE_BALLOT_BIT, - eShuffle = VK_SUBGROUP_FEATURE_SHUFFLE_BIT, - eShuffleRelative = VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT, - eClustered = VK_SUBGROUP_FEATURE_CLUSTERED_BIT, - eQuad = VK_SUBGROUP_FEATURE_QUAD_BIT, - ePartitionedNV = VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( SubgroupFeatureFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case SubgroupFeatureFlagBits::eBasic : return "Basic"; - case SubgroupFeatureFlagBits::eVote : return "Vote"; - case SubgroupFeatureFlagBits::eArithmetic : return "Arithmetic"; - case SubgroupFeatureFlagBits::eBallot : return "Ballot"; - case SubgroupFeatureFlagBits::eShuffle : return "Shuffle"; - case SubgroupFeatureFlagBits::eShuffleRelative : return "ShuffleRelative"; - case SubgroupFeatureFlagBits::eClustered : return "Clustered"; - case SubgroupFeatureFlagBits::eQuad : return "Quad"; - case SubgroupFeatureFlagBits::ePartitionedNV : return "PartitionedNV"; - default: return "invalid"; - } - } - - using SubgroupFeatureFlags = Flags; - - VULKAN_HPP_INLINE SubgroupFeatureFlags operator|( SubgroupFeatureFlagBits bit0, SubgroupFeatureFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return SubgroupFeatureFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE SubgroupFeatureFlags operator~( SubgroupFeatureFlagBits bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( SubgroupFeatureFlags( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(SubgroupFeatureFlagBits::eBasic) | VkFlags(SubgroupFeatureFlagBits::eVote) | VkFlags(SubgroupFeatureFlagBits::eArithmetic) | VkFlags(SubgroupFeatureFlagBits::eBallot) | VkFlags(SubgroupFeatureFlagBits::eShuffle) | VkFlags(SubgroupFeatureFlagBits::eShuffleRelative) | VkFlags(SubgroupFeatureFlagBits::eClustered) | VkFlags(SubgroupFeatureFlagBits::eQuad) | VkFlags(SubgroupFeatureFlagBits::ePartitionedNV) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( SubgroupFeatureFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & SubgroupFeatureFlagBits::eBasic ) result += "Basic | "; - if ( value & SubgroupFeatureFlagBits::eVote ) result += "Vote | "; - if ( value & SubgroupFeatureFlagBits::eArithmetic ) result += "Arithmetic | "; - if ( value & SubgroupFeatureFlagBits::eBallot ) result += "Ballot | "; - if ( value & SubgroupFeatureFlagBits::eShuffle ) result += "Shuffle | "; - if ( value & SubgroupFeatureFlagBits::eShuffleRelative ) result += "ShuffleRelative | "; - if ( value & SubgroupFeatureFlagBits::eClustered ) result += "Clustered | "; - if ( value & SubgroupFeatureFlagBits::eQuad ) result += "Quad | "; - if ( value & SubgroupFeatureFlagBits::ePartitionedNV ) result += "PartitionedNV | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class SubpassDescriptionFlagBits + enum + { + value = true + }; + }; + template <> + struct StructExtends { - ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX, - ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( SubpassDescriptionFlagBits value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case SubpassDescriptionFlagBits::ePerViewAttributesNVX : return "PerViewAttributesNVX"; - case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX : return "PerViewPositionXOnlyNVX"; - default: return "invalid"; - } - } - - using SubpassDescriptionFlags = Flags; - - VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return SubpassDescriptionFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( SubpassDescriptionFlags( bits ) ); - } + enum + { + value = true + }; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ - template <> struct FlagTraits +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_encode_h265 === + template <> + struct StructExtends { enum { - allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( SubpassDescriptionFlags value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & SubpassDescriptionFlagBits::ePerViewAttributesNVX ) result += "PerViewAttributesNVX | "; - if ( value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX ) result += "PerViewPositionXOnlyNVX | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class SurfaceCounterFlagBitsEXT + enum + { + value = true + }; + }; + template <> + struct StructExtends { - eVblank = VK_SURFACE_COUNTER_VBLANK_EXT + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( SurfaceCounterFlagBitsEXT value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case SurfaceCounterFlagBitsEXT::eVblank : return "Vblank"; - default: return "invalid"; - } - } - - using SurfaceCounterFlagsEXT = Flags; - - VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return SurfaceCounterFlagsEXT( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( SurfaceCounterFlagsEXT( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblank) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( SurfaceCounterFlagsEXT value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & SurfaceCounterFlagBitsEXT::eVblank ) result += "Vblank | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class SurfaceTransformFlagBitsKHR + enum + { + value = true + }; + }; + template <> + struct StructExtends { - eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR, - eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR, - eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR, - eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR, - eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR, - eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR, - eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR, - eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR, - eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( SurfaceTransformFlagBitsKHR value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case SurfaceTransformFlagBitsKHR::eIdentity : return "Identity"; - case SurfaceTransformFlagBitsKHR::eRotate90 : return "Rotate90"; - case SurfaceTransformFlagBitsKHR::eRotate180 : return "Rotate180"; - case SurfaceTransformFlagBitsKHR::eRotate270 : return "Rotate270"; - case SurfaceTransformFlagBitsKHR::eHorizontalMirror : return "HorizontalMirror"; - case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90 : return "HorizontalMirrorRotate90"; - case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180 : return "HorizontalMirrorRotate180"; - case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270 : return "HorizontalMirrorRotate270"; - case SurfaceTransformFlagBitsKHR::eInherit : return "Inherit"; - default: return "invalid"; - } - } - - using SurfaceTransformFlagsKHR = Flags; - - VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return SurfaceTransformFlagsKHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( SurfaceTransformFlagsKHR( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(SurfaceTransformFlagBitsKHR::eIdentity) | VkFlags(SurfaceTransformFlagBitsKHR::eRotate90) | VkFlags(SurfaceTransformFlagBitsKHR::eRotate180) | VkFlags(SurfaceTransformFlagBitsKHR::eRotate270) | VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirror) | VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) | VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) | VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) | VkFlags(SurfaceTransformFlagBitsKHR::eInherit) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( SurfaceTransformFlagsKHR value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & SurfaceTransformFlagBitsKHR::eIdentity ) result += "Identity | "; - if ( value & SurfaceTransformFlagBitsKHR::eRotate90 ) result += "Rotate90 | "; - if ( value & SurfaceTransformFlagBitsKHR::eRotate180 ) result += "Rotate180 | "; - if ( value & SurfaceTransformFlagBitsKHR::eRotate270 ) result += "Rotate270 | "; - if ( value & SurfaceTransformFlagBitsKHR::eHorizontalMirror ) result += "HorizontalMirror | "; - if ( value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90 ) result += "HorizontalMirrorRotate90 | "; - if ( value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180 ) result += "HorizontalMirrorRotate180 | "; - if ( value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270 ) result += "HorizontalMirrorRotate270 | "; - if ( value & SurfaceTransformFlagBitsKHR::eInherit ) result += "Inherit | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } + enum + { + value = true + }; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ - enum class SwapchainCreateFlagBitsKHR +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_decode_h264 === + template <> + struct StructExtends { - eSplitInstanceBindRegions = VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR, - eProtected = VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR, - eMutableFormat = VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR + enum + { + value = true + }; }; - - VULKAN_HPP_INLINE std::string to_string( SwapchainCreateFlagBitsKHR value ) + template <> + struct StructExtends { - switch ( value ) + enum { - case SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions : return "SplitInstanceBindRegions"; - case SwapchainCreateFlagBitsKHR::eProtected : return "Protected"; - case SwapchainCreateFlagBitsKHR::eMutableFormat : return "MutableFormat"; - default: return "invalid"; - } - } - - using SwapchainCreateFlagsKHR = Flags; - - VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 ) + value = true + }; + }; + template <> + struct StructExtends { - return SwapchainCreateFlagsKHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return ~( SwapchainCreateFlagsKHR( bits ) ); - } - - template <> struct FlagTraits + enum + { + value = true + }; + }; + template <> + struct StructExtends { enum { - allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions) | VkFlags(SwapchainCreateFlagBitsKHR::eProtected) | VkFlags(SwapchainCreateFlagBitsKHR::eMutableFormat) + value = true }; }; - - VULKAN_HPP_INLINE std::string to_string( SwapchainCreateFlagsKHR value ) + template <> + struct StructExtends { - if ( !value ) return "{}"; - std::string result; - - if ( value & SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions ) result += "SplitInstanceBindRegions | "; - if ( value & SwapchainCreateFlagBitsKHR::eProtected ) result += "Protected | "; - if ( value & SwapchainCreateFlagBitsKHR::eMutableFormat ) result += "MutableFormat | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class ValidationCacheCreateFlagBitsEXT - {}; - - VULKAN_HPP_INLINE std::string to_string( ValidationCacheCreateFlagBitsEXT ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using ValidationCacheCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( ValidationCacheCreateFlagsEXT ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } - -#ifdef VK_USE_PLATFORM_VI_NN - enum class ViSurfaceCreateFlagBitsNN - {}; - - VULKAN_HPP_INLINE std::string to_string( ViSurfaceCreateFlagBitsNN ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using ViSurfaceCreateFlagsNN = Flags; - - VULKAN_HPP_INLINE std::string to_string( ViSurfaceCreateFlagsNN ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } -#endif /*VK_USE_PLATFORM_VI_NN*/ - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - enum class WaylandSurfaceCreateFlagBitsKHR - {}; - - VULKAN_HPP_INLINE std::string to_string( WaylandSurfaceCreateFlagBitsKHR ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "(void)"; - } - - using WaylandSurfaceCreateFlagsKHR = Flags; - - VULKAN_HPP_INLINE std::string to_string( WaylandSurfaceCreateFlagsKHR ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - enum class Win32SurfaceCreateFlagBitsKHR - {}; - - VULKAN_HPP_INLINE std::string to_string( Win32SurfaceCreateFlagBitsKHR ) - { - return "(void)"; - } - - using Win32SurfaceCreateFlagsKHR = Flags; - - VULKAN_HPP_INLINE std::string to_string( Win32SurfaceCreateFlagsKHR ) - { - return "{}"; - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_XCB_KHR - enum class XcbSurfaceCreateFlagBitsKHR - {}; - - VULKAN_HPP_INLINE std::string to_string( XcbSurfaceCreateFlagBitsKHR ) - { - return "(void)"; - } - - using XcbSurfaceCreateFlagsKHR = Flags; - - VULKAN_HPP_INLINE std::string to_string( XcbSurfaceCreateFlagsKHR ) - { - return "{}"; - } -#endif /*VK_USE_PLATFORM_XCB_KHR*/ - -#ifdef VK_USE_PLATFORM_XLIB_KHR - enum class XlibSurfaceCreateFlagBitsKHR - {}; - - VULKAN_HPP_INLINE std::string to_string( XlibSurfaceCreateFlagBitsKHR ) - { - return "(void)"; - } - - using XlibSurfaceCreateFlagsKHR = Flags; - - VULKAN_HPP_INLINE std::string to_string( XlibSurfaceCreateFlagsKHR ) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return "{}"; - } -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ -} // namespace VULKAN_HPP_NAMESPACE + enum + { + value = true + }; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ -namespace std -{ + //=== VK_AMD_texture_gather_bias_lod === template <> - struct is_error_code_enum : public true_type - {}; -} - -namespace VULKAN_HPP_NAMESPACE -{ -#ifndef VULKAN_HPP_NO_EXCEPTIONS -#if defined(_MSC_VER) && (_MSC_VER == 1800) -# define noexcept _NOEXCEPT -#endif - - class ErrorCategoryImpl : public std::error_category + struct StructExtends { - public: - virtual const char* name() const noexcept override { return VULKAN_HPP_NAMESPACE_STRING"::Result"; } - virtual std::string message(int ev) const override { return to_string(static_cast(ev)); } + enum + { + value = true + }; }; - class Error + //=== VK_KHR_dynamic_rendering === + template <> + struct StructExtends { - public: - virtual ~Error() = default; - - virtual const char* what() const noexcept = 0; + enum + { + value = true + }; }; - - class LogicError : public Error, public std::logic_error + template <> + struct StructExtends { - public: - explicit LogicError( const std::string& what ) - : Error(), std::logic_error(what) {} - explicit LogicError( char const * what ) - : Error(), std::logic_error(what) {} - virtual ~LogicError() = default; - - virtual const char* what() const noexcept { return std::logic_error::what(); } + enum + { + value = true + }; }; - - class SystemError : public Error, public std::system_error + template <> + struct StructExtends { - public: - SystemError( std::error_code ec ) - : Error(), std::system_error(ec) {} - SystemError( std::error_code ec, std::string const& what ) - : Error(), std::system_error(ec, what) {} - SystemError( std::error_code ec, char const * what ) - : Error(), std::system_error(ec, what) {} - SystemError( int ev, std::error_category const& ecat ) - : Error(), std::system_error(ev, ecat) {} - SystemError( int ev, std::error_category const& ecat, std::string const& what) - : Error(), std::system_error(ev, ecat, what) {} - SystemError( int ev, std::error_category const& ecat, char const * what) - : Error(), std::system_error(ev, ecat, what) {} - virtual ~SystemError() = default; - - virtual const char* what() const noexcept { return std::system_error::what(); } + enum + { + value = true + }; }; - -#if defined(_MSC_VER) && (_MSC_VER == 1800) -# undef noexcept -#endif - - VULKAN_HPP_INLINE const std::error_category& errorCategory() + template <> + struct StructExtends { - static ErrorCategoryImpl instance; - return instance; - } - - VULKAN_HPP_INLINE std::error_code make_error_code(Result e) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return std::error_code(static_cast(e), errorCategory()); - } - - VULKAN_HPP_INLINE std::error_condition make_error_condition(Result e) + enum + { + value = true + }; + }; + template <> + struct StructExtends { - return std::error_condition(static_cast(e), errorCategory()); - } - - class OutOfHostMemoryError : public SystemError + enum + { + value = true + }; + }; + template <> + struct StructExtends { - public: - OutOfHostMemoryError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {} - OutOfHostMemoryError( char const * message ) - : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {} + enum + { + value = true + }; }; - class OutOfDeviceMemoryError : public SystemError + //=== VK_NV_corner_sampled_image === + template <> + struct StructExtends { - public: - OutOfDeviceMemoryError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {} - OutOfDeviceMemoryError( char const * message ) - : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {} + enum + { + value = true + }; }; - - class InitializationFailedError : public SystemError + template <> + struct StructExtends { - public: - InitializationFailedError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {} - InitializationFailedError( char const * message ) - : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {} + enum + { + value = true + }; }; - class DeviceLostError : public SystemError + //=== VK_NV_external_memory === + template <> + struct StructExtends { - public: - DeviceLostError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {} - DeviceLostError( char const * message ) - : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {} + enum + { + value = true + }; }; - - class MemoryMapFailedError : public SystemError + template <> + struct StructExtends { - public: - MemoryMapFailedError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {} - MemoryMapFailedError( char const * message ) - : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {} + enum + { + value = true + }; }; - class LayerNotPresentError : public SystemError +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + template <> + struct StructExtends { - public: - LayerNotPresentError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {} - LayerNotPresentError( char const * message ) - : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {} + enum + { + value = true + }; }; - - class ExtensionNotPresentError : public SystemError + template <> + struct StructExtends { - public: - ExtensionNotPresentError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {} - ExtensionNotPresentError( char const * message ) - : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {} + enum + { + value = true + }; }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - class FeatureNotPresentError : public SystemError +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_win32_keyed_mutex === + template <> + struct StructExtends { - public: - FeatureNotPresentError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {} - FeatureNotPresentError( char const * message ) - : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {} + enum + { + value = true + }; }; - - class IncompatibleDriverError : public SystemError + template <> + struct StructExtends { - public: - IncompatibleDriverError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {} - IncompatibleDriverError( char const * message ) - : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {} + enum + { + value = true + }; }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - class TooManyObjectsError : public SystemError + //=== VK_EXT_validation_flags === + template <> + struct StructExtends { - public: - TooManyObjectsError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {} - TooManyObjectsError( char const * message ) - : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {} + enum + { + value = true + }; }; - class FormatNotSupportedError : public SystemError + //=== VK_EXT_astc_decode_mode === + template <> + struct StructExtends { - public: - FormatNotSupportedError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {} - FormatNotSupportedError( char const * message ) - : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {} + enum + { + value = true + }; }; - - class FragmentedPoolError : public SystemError + template <> + struct StructExtends { - public: - FragmentedPoolError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {} - FragmentedPoolError( char const * message ) - : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {} + enum + { + value = true + }; }; - - class OutOfPoolMemoryError : public SystemError + template <> + struct StructExtends { - public: - OutOfPoolMemoryError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorOutOfPoolMemory ), message ) {} - OutOfPoolMemoryError( char const * message ) - : SystemError( make_error_code( Result::eErrorOutOfPoolMemory ), message ) {} + enum + { + value = true + }; }; - class InvalidExternalHandleError : public SystemError +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + template <> + struct StructExtends { - public: - InvalidExternalHandleError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorInvalidExternalHandle ), message ) {} - InvalidExternalHandleError( char const * message ) - : SystemError( make_error_code( Result::eErrorInvalidExternalHandle ), message ) {} + enum + { + value = true + }; }; - - class SurfaceLostKHRError : public SystemError + template <> + struct StructExtends { - public: - SurfaceLostKHRError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {} - SurfaceLostKHRError( char const * message ) - : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {} + enum + { + value = true + }; }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - class NativeWindowInUseKHRError : public SystemError + //=== VK_KHR_external_memory_fd === + template <> + struct StructExtends { - public: - NativeWindowInUseKHRError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {} - NativeWindowInUseKHRError( char const * message ) - : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {} + enum + { + value = true + }; }; - class OutOfDateKHRError : public SystemError +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_keyed_mutex === + template <> + struct StructExtends { - public: - OutOfDateKHRError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {} - OutOfDateKHRError( char const * message ) - : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {} + enum + { + value = true + }; }; - - class IncompatibleDisplayKHRError : public SystemError + template <> + struct StructExtends { - public: - IncompatibleDisplayKHRError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {} - IncompatibleDisplayKHRError( char const * message ) - : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {} + enum + { + value = true + }; }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - class ValidationFailedEXTError : public SystemError +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + template <> + struct StructExtends { - public: - ValidationFailedEXTError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {} - ValidationFailedEXTError( char const * message ) - : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {} + enum + { + value = true + }; }; - - class InvalidShaderNVError : public SystemError + template <> + struct StructExtends { - public: - InvalidShaderNVError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {} - InvalidShaderNVError( char const * message ) - : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {} + enum + { + value = true + }; }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - class InvalidDrmFormatModifierPlaneLayoutEXTError : public SystemError + //=== VK_KHR_push_descriptor === + template <> + struct StructExtends { - public: - InvalidDrmFormatModifierPlaneLayoutEXTError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT ), message ) {} - InvalidDrmFormatModifierPlaneLayoutEXTError( char const * message ) - : SystemError( make_error_code( Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT ), message ) {} + enum + { + value = true + }; }; - class FragmentationEXTError : public SystemError + //=== VK_EXT_conditional_rendering === + template <> + struct StructExtends { - public: - FragmentationEXTError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorFragmentationEXT ), message ) {} - FragmentationEXTError( char const * message ) - : SystemError( make_error_code( Result::eErrorFragmentationEXT ), message ) {} + enum + { + value = true + }; }; - - class NotPermittedEXTError : public SystemError + template <> + struct StructExtends { - public: - NotPermittedEXTError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorNotPermittedEXT ), message ) {} - NotPermittedEXTError( char const * message ) - : SystemError( make_error_code( Result::eErrorNotPermittedEXT ), message ) {} + enum + { + value = true + }; }; - - class InvalidDeviceAddressEXTError : public SystemError + template <> + struct StructExtends { - public: - InvalidDeviceAddressEXTError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorInvalidDeviceAddressEXT ), message ) {} - InvalidDeviceAddressEXTError( char const * message ) - : SystemError( make_error_code( Result::eErrorInvalidDeviceAddressEXT ), message ) {} + enum + { + value = true + }; }; - class FullScreenExclusiveModeLostEXTError : public SystemError + //=== VK_KHR_incremental_present === + template <> + struct StructExtends { - public: - FullScreenExclusiveModeLostEXTError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorFullScreenExclusiveModeLostEXT ), message ) {} - FullScreenExclusiveModeLostEXTError( char const * message ) - : SystemError( make_error_code( Result::eErrorFullScreenExclusiveModeLostEXT ), message ) {} - }; - - VULKAN_HPP_INLINE void throwResultException( Result result, char const * message ) - { - switch ( result ) - { - case Result::eErrorOutOfHostMemory: throw OutOfHostMemoryError( message ); - case Result::eErrorOutOfDeviceMemory: throw OutOfDeviceMemoryError( message ); - case Result::eErrorInitializationFailed: throw InitializationFailedError( message ); - case Result::eErrorDeviceLost: throw DeviceLostError( message ); - case Result::eErrorMemoryMapFailed: throw MemoryMapFailedError( message ); - case Result::eErrorLayerNotPresent: throw LayerNotPresentError( message ); - case Result::eErrorExtensionNotPresent: throw ExtensionNotPresentError( message ); - case Result::eErrorFeatureNotPresent: throw FeatureNotPresentError( message ); - case Result::eErrorIncompatibleDriver: throw IncompatibleDriverError( message ); - case Result::eErrorTooManyObjects: throw TooManyObjectsError( message ); - case Result::eErrorFormatNotSupported: throw FormatNotSupportedError( message ); - case Result::eErrorFragmentedPool: throw FragmentedPoolError( message ); - case Result::eErrorOutOfPoolMemory: throw OutOfPoolMemoryError( message ); - case Result::eErrorInvalidExternalHandle: throw InvalidExternalHandleError( message ); - case Result::eErrorSurfaceLostKHR: throw SurfaceLostKHRError( message ); - case Result::eErrorNativeWindowInUseKHR: throw NativeWindowInUseKHRError( message ); - case Result::eErrorOutOfDateKHR: throw OutOfDateKHRError( message ); - case Result::eErrorIncompatibleDisplayKHR: throw IncompatibleDisplayKHRError( message ); - case Result::eErrorValidationFailedEXT: throw ValidationFailedEXTError( message ); - case Result::eErrorInvalidShaderNV: throw InvalidShaderNVError( message ); - case Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT: throw InvalidDrmFormatModifierPlaneLayoutEXTError( message ); - case Result::eErrorFragmentationEXT: throw FragmentationEXTError( message ); - case Result::eErrorNotPermittedEXT: throw NotPermittedEXTError( message ); - case Result::eErrorInvalidDeviceAddressEXT: throw InvalidDeviceAddressEXTError( message ); - case Result::eErrorFullScreenExclusiveModeLostEXT: throw FullScreenExclusiveModeLostEXTError( message ); - default: throw SystemError( make_error_code( result ) ); - } - } -#endif - - template void ignore(T const&) {} + enum + { + value = true + }; + }; - template - struct ResultValue + //=== VK_NV_clip_space_w_scaling === + template <> + struct StructExtends { - ResultValue( Result r, T & v ) - : result( r ) - , value( v ) - {} - - ResultValue( Result r, T && v ) - : result( r ) - , value( std::move( v ) ) - {} - - Result result; - T value; - - operator std::tuple() { return std::tuple(result, value); } + enum + { + value = true + }; }; - template - struct ResultValueType + //=== VK_EXT_display_control === + template <> + struct StructExtends { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - typedef ResultValue type; -#else - typedef T type; -#endif + enum + { + value = true + }; }; + //=== VK_GOOGLE_display_timing === template <> - struct ResultValueType + struct StructExtends { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - typedef Result type; -#else - typedef void type; -#endif + enum + { + value = true + }; }; - VULKAN_HPP_INLINE ResultValueType::type createResultValue( Result result, char const * message ) + //=== VK_NVX_multiview_per_view_attributes === + template <> + struct StructExtends { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - ignore(message); - VULKAN_HPP_ASSERT( result == Result::eSuccess ); - return result; -#else - if ( result != Result::eSuccess ) + enum { - throwResultException( result, message ); - } -#endif - } + value = true + }; + }; - template - VULKAN_HPP_INLINE typename ResultValueType::type createResultValue( Result result, T & data, char const * message ) + //=== VK_NV_viewport_swizzle === + template <> + struct StructExtends { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - ignore(message); - VULKAN_HPP_ASSERT( result == Result::eSuccess ); - return ResultValue( result, std::move( data ) ); -#else - if ( result != Result::eSuccess ) + enum { - throwResultException( result, message ); - } - return std::move( data ); -#endif - } + value = true + }; + }; - VULKAN_HPP_INLINE Result createResultValue( Result result, char const * message, std::initializer_list successCodes ) + //=== VK_EXT_discard_rectangles === + template <> + struct StructExtends { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - ignore(message); - VULKAN_HPP_ASSERT( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() ); -#else - if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() ) + enum { - throwResultException( result, message ); - } -#endif - return result; - } - - template - VULKAN_HPP_INLINE ResultValue createResultValue( Result result, T & data, char const * message, std::initializer_list successCodes ) + value = true + }; + }; + template <> + struct StructExtends { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - ignore(message); - VULKAN_HPP_ASSERT( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() ); -#else - if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() ) + enum { - throwResultException( result, message ); - } -#endif - return ResultValue( result, data ); - } + value = true + }; + }; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type createResultValue( Result result, T & data, char const * message, typename UniqueHandleTraits::deleter const& deleter ) + //=== VK_EXT_conservative_rasterization === + template <> + struct StructExtends { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - ignore(message); - VULKAN_HPP_ASSERT( result == Result::eSuccess ); - return ResultValue>( result, UniqueHandle(data, deleter) ); -#else - if ( result != Result::eSuccess ) + enum { - throwResultException( result, message ); - } - return UniqueHandle(data, deleter); -#endif - } -#endif - - struct AccelerationStructureCreateInfoNV; - struct AccelerationStructureInfoNV; - struct AccelerationStructureMemoryRequirementsInfoNV; - struct AcquireNextImageInfoKHR; - struct AllocationCallbacks; -#ifdef VK_USE_PLATFORM_ANDROID_KHR - struct AndroidHardwareBufferFormatPropertiesANDROID; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - struct AndroidHardwareBufferPropertiesANDROID; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - struct AndroidHardwareBufferUsageANDROID; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - struct AndroidSurfaceCreateInfoKHR; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - struct ApplicationInfo; - struct AttachmentDescription; - struct AttachmentDescription2KHR; - struct AttachmentReference; - struct AttachmentReference2KHR; - struct AttachmentSampleLocationsEXT; - struct BaseInStructure; - struct BaseOutStructure; - struct BindAccelerationStructureMemoryInfoNV; - struct BindBufferMemoryDeviceGroupInfo; - using BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo; - struct BindBufferMemoryInfo; - using BindBufferMemoryInfoKHR = BindBufferMemoryInfo; - struct BindImageMemoryDeviceGroupInfo; - using BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo; - struct BindImageMemoryInfo; - using BindImageMemoryInfoKHR = BindImageMemoryInfo; - struct BindImageMemorySwapchainInfoKHR; - struct BindImagePlaneMemoryInfo; - using BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo; - struct BindSparseInfo; - struct BufferCopy; - struct BufferCreateInfo; - struct BufferDeviceAddressCreateInfoEXT; - struct BufferDeviceAddressInfoEXT; - struct BufferImageCopy; - struct BufferMemoryBarrier; - struct BufferMemoryRequirementsInfo2; - using BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2; - struct BufferViewCreateInfo; - struct CalibratedTimestampInfoEXT; - struct CheckpointDataNV; - struct ClearAttachment; - union ClearColorValue; - struct ClearDepthStencilValue; - struct ClearRect; - union ClearValue; - struct CmdProcessCommandsInfoNVX; - struct CmdReserveSpaceForCommandsInfoNVX; - struct CoarseSampleLocationNV; - struct CoarseSampleOrderCustomNV; - struct CommandBufferAllocateInfo; - struct CommandBufferBeginInfo; - struct CommandBufferInheritanceConditionalRenderingInfoEXT; - struct CommandBufferInheritanceInfo; - struct CommandPoolCreateInfo; - struct ComponentMapping; - struct ComputePipelineCreateInfo; - struct ConditionalRenderingBeginInfoEXT; - struct ConformanceVersionKHR; - struct CooperativeMatrixPropertiesNV; - struct CopyDescriptorSet; -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct D3D12FenceSubmitInfoKHR; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - struct DebugMarkerMarkerInfoEXT; - struct DebugMarkerObjectNameInfoEXT; - struct DebugMarkerObjectTagInfoEXT; - struct DebugReportCallbackCreateInfoEXT; - struct DebugUtilsLabelEXT; - struct DebugUtilsMessengerCallbackDataEXT; - struct DebugUtilsMessengerCreateInfoEXT; - struct DebugUtilsObjectNameInfoEXT; - struct DebugUtilsObjectTagInfoEXT; - struct DedicatedAllocationBufferCreateInfoNV; - struct DedicatedAllocationImageCreateInfoNV; - struct DedicatedAllocationMemoryAllocateInfoNV; - struct DescriptorBufferInfo; - struct DescriptorImageInfo; - struct DescriptorPoolCreateInfo; - struct DescriptorPoolInlineUniformBlockCreateInfoEXT; - struct DescriptorPoolSize; - struct DescriptorSetAllocateInfo; - struct DescriptorSetLayoutBinding; - struct DescriptorSetLayoutBindingFlagsCreateInfoEXT; - struct DescriptorSetLayoutCreateInfo; - struct DescriptorSetLayoutSupport; - using DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport; - struct DescriptorSetVariableDescriptorCountAllocateInfoEXT; - struct DescriptorSetVariableDescriptorCountLayoutSupportEXT; - struct DescriptorUpdateTemplateCreateInfo; - using DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo; - struct DescriptorUpdateTemplateEntry; - using DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry; - struct DeviceCreateInfo; - struct DeviceEventInfoEXT; - struct DeviceGeneratedCommandsFeaturesNVX; - struct DeviceGeneratedCommandsLimitsNVX; - struct DeviceGroupBindSparseInfo; - using DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo; - struct DeviceGroupCommandBufferBeginInfo; - using DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo; - struct DeviceGroupDeviceCreateInfo; - using DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo; - struct DeviceGroupPresentCapabilitiesKHR; - struct DeviceGroupPresentInfoKHR; - struct DeviceGroupRenderPassBeginInfo; - using DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo; - struct DeviceGroupSubmitInfo; - using DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo; - struct DeviceGroupSwapchainCreateInfoKHR; - struct DeviceMemoryOverallocationCreateInfoAMD; - struct DeviceQueueCreateInfo; - struct DeviceQueueGlobalPriorityCreateInfoEXT; - struct DeviceQueueInfo2; - struct DispatchIndirectCommand; - struct DisplayEventInfoEXT; - struct DisplayModeCreateInfoKHR; - struct DisplayModeParametersKHR; - struct DisplayModeProperties2KHR; - struct DisplayModePropertiesKHR; - struct DisplayNativeHdrSurfaceCapabilitiesAMD; - struct DisplayPlaneCapabilities2KHR; - struct DisplayPlaneCapabilitiesKHR; - struct DisplayPlaneInfo2KHR; - struct DisplayPlaneProperties2KHR; - struct DisplayPlanePropertiesKHR; - struct DisplayPowerInfoEXT; - struct DisplayPresentInfoKHR; - struct DisplayProperties2KHR; - struct DisplayPropertiesKHR; - struct DisplaySurfaceCreateInfoKHR; - struct DrawIndexedIndirectCommand; - struct DrawIndirectCommand; - struct DrawMeshTasksIndirectCommandNV; - struct DrmFormatModifierPropertiesEXT; - struct DrmFormatModifierPropertiesListEXT; - struct EventCreateInfo; - struct ExportFenceCreateInfo; - using ExportFenceCreateInfoKHR = ExportFenceCreateInfo; -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ExportFenceWin32HandleInfoKHR; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - struct ExportMemoryAllocateInfo; - using ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo; - struct ExportMemoryAllocateInfoNV; -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ExportMemoryWin32HandleInfoKHR; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ExportMemoryWin32HandleInfoNV; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - struct ExportSemaphoreCreateInfo; - using ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo; -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ExportSemaphoreWin32HandleInfoKHR; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - struct ExtensionProperties; - struct Extent2D; - struct Extent3D; - struct ExternalBufferProperties; - using ExternalBufferPropertiesKHR = ExternalBufferProperties; - struct ExternalFenceProperties; - using ExternalFencePropertiesKHR = ExternalFenceProperties; -#ifdef VK_USE_PLATFORM_ANDROID_KHR - struct ExternalFormatANDROID; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - struct ExternalImageFormatProperties; - using ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties; - struct ExternalImageFormatPropertiesNV; - struct ExternalMemoryBufferCreateInfo; - using ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo; - struct ExternalMemoryImageCreateInfo; - using ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo; - struct ExternalMemoryImageCreateInfoNV; - struct ExternalMemoryProperties; - using ExternalMemoryPropertiesKHR = ExternalMemoryProperties; - struct ExternalSemaphoreProperties; - using ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties; - struct FenceCreateInfo; - struct FenceGetFdInfoKHR; -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct FenceGetWin32HandleInfoKHR; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - struct FilterCubicImageViewImageFormatPropertiesEXT; - struct FormatProperties; - struct FormatProperties2; - using FormatProperties2KHR = FormatProperties2; - struct FramebufferAttachmentImageInfoKHR; - struct FramebufferAttachmentsCreateInfoKHR; - struct FramebufferCreateInfo; - struct FramebufferMixedSamplesCombinationNV; - struct GeometryAABBNV; - struct GeometryDataNV; - struct GeometryNV; - struct GeometryTrianglesNV; - struct GraphicsPipelineCreateInfo; - struct HdrMetadataEXT; - struct HeadlessSurfaceCreateInfoEXT; -#ifdef VK_USE_PLATFORM_IOS_MVK - struct IOSSurfaceCreateInfoMVK; -#endif /*VK_USE_PLATFORM_IOS_MVK*/ - struct ImageBlit; - struct ImageCopy; - struct ImageCreateInfo; - struct ImageDrmFormatModifierExplicitCreateInfoEXT; - struct ImageDrmFormatModifierListCreateInfoEXT; - struct ImageDrmFormatModifierPropertiesEXT; - struct ImageFormatListCreateInfoKHR; - struct ImageFormatProperties; - struct ImageFormatProperties2; - using ImageFormatProperties2KHR = ImageFormatProperties2; - struct ImageMemoryBarrier; - struct ImageMemoryRequirementsInfo2; - using ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2; -#ifdef VK_USE_PLATFORM_FUCHSIA - struct ImagePipeSurfaceCreateInfoFUCHSIA; -#endif /*VK_USE_PLATFORM_FUCHSIA*/ - struct ImagePlaneMemoryRequirementsInfo; - using ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo; - struct ImageResolve; - struct ImageSparseMemoryRequirementsInfo2; - using ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2; - struct ImageStencilUsageCreateInfoEXT; - struct ImageSubresource; - struct ImageSubresourceLayers; - struct ImageSubresourceRange; - struct ImageSwapchainCreateInfoKHR; - struct ImageViewASTCDecodeModeEXT; - struct ImageViewCreateInfo; - struct ImageViewHandleInfoNVX; - struct ImageViewUsageCreateInfo; - using ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo; -#ifdef VK_USE_PLATFORM_ANDROID_KHR - struct ImportAndroidHardwareBufferInfoANDROID; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - struct ImportFenceFdInfoKHR; -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ImportFenceWin32HandleInfoKHR; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - struct ImportMemoryFdInfoKHR; - struct ImportMemoryHostPointerInfoEXT; -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ImportMemoryWin32HandleInfoKHR; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ImportMemoryWin32HandleInfoNV; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - struct ImportSemaphoreFdInfoKHR; -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ImportSemaphoreWin32HandleInfoKHR; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - struct IndirectCommandsLayoutCreateInfoNVX; - struct IndirectCommandsLayoutTokenNVX; - struct IndirectCommandsTokenNVX; - struct InitializePerformanceApiInfoINTEL; - struct InputAttachmentAspectReference; - using InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference; - struct InstanceCreateInfo; - struct LayerProperties; -#ifdef VK_USE_PLATFORM_MACOS_MVK - struct MacOSSurfaceCreateInfoMVK; -#endif /*VK_USE_PLATFORM_MACOS_MVK*/ - struct MappedMemoryRange; - struct MemoryAllocateFlagsInfo; - using MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo; - struct MemoryAllocateInfo; - struct MemoryBarrier; - struct MemoryDedicatedAllocateInfo; - using MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo; - struct MemoryDedicatedRequirements; - using MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements; - struct MemoryFdPropertiesKHR; -#ifdef VK_USE_PLATFORM_ANDROID_KHR - struct MemoryGetAndroidHardwareBufferInfoANDROID; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - struct MemoryGetFdInfoKHR; -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct MemoryGetWin32HandleInfoKHR; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - struct MemoryHeap; - struct MemoryHostPointerPropertiesEXT; - struct MemoryPriorityAllocateInfoEXT; - struct MemoryRequirements; - struct MemoryRequirements2; - using MemoryRequirements2KHR = MemoryRequirements2; - struct MemoryType; -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct MemoryWin32HandlePropertiesKHR; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_METAL_EXT - struct MetalSurfaceCreateInfoEXT; -#endif /*VK_USE_PLATFORM_METAL_EXT*/ - struct MultisamplePropertiesEXT; - struct ObjectTableCreateInfoNVX; - struct ObjectTableDescriptorSetEntryNVX; - struct ObjectTableEntryNVX; - struct ObjectTableIndexBufferEntryNVX; - struct ObjectTablePipelineEntryNVX; - struct ObjectTablePushConstantEntryNVX; - struct ObjectTableVertexBufferEntryNVX; - struct Offset2D; - struct Offset3D; - struct PastPresentationTimingGOOGLE; - struct PerformanceConfigurationAcquireInfoINTEL; - struct PerformanceMarkerInfoINTEL; - struct PerformanceOverrideInfoINTEL; - struct PerformanceStreamMarkerInfoINTEL; - union PerformanceValueDataINTEL; - struct PerformanceValueINTEL; - struct PhysicalDevice16BitStorageFeatures; - using PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures; - struct PhysicalDevice8BitStorageFeaturesKHR; - struct PhysicalDeviceASTCDecodeFeaturesEXT; - struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT; - struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT; - struct PhysicalDeviceBufferDeviceAddressFeaturesEXT; - using PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT; - struct PhysicalDeviceCoherentMemoryFeaturesAMD; - struct PhysicalDeviceComputeShaderDerivativesFeaturesNV; - struct PhysicalDeviceConditionalRenderingFeaturesEXT; - struct PhysicalDeviceConservativeRasterizationPropertiesEXT; - struct PhysicalDeviceCooperativeMatrixFeaturesNV; - struct PhysicalDeviceCooperativeMatrixPropertiesNV; - struct PhysicalDeviceCornerSampledImageFeaturesNV; - struct PhysicalDeviceCoverageReductionModeFeaturesNV; - struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; - struct PhysicalDeviceDepthClipEnableFeaturesEXT; - struct PhysicalDeviceDepthStencilResolvePropertiesKHR; - struct PhysicalDeviceDescriptorIndexingFeaturesEXT; - struct PhysicalDeviceDescriptorIndexingPropertiesEXT; - struct PhysicalDeviceDiscardRectanglePropertiesEXT; - struct PhysicalDeviceDriverPropertiesKHR; - struct PhysicalDeviceExclusiveScissorFeaturesNV; - struct PhysicalDeviceExternalBufferInfo; - using PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo; - struct PhysicalDeviceExternalFenceInfo; - using PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo; - struct PhysicalDeviceExternalImageFormatInfo; - using PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo; - struct PhysicalDeviceExternalMemoryHostPropertiesEXT; - struct PhysicalDeviceExternalSemaphoreInfo; - using PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo; - struct PhysicalDeviceFeatures; - struct PhysicalDeviceFeatures2; - using PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2; - struct PhysicalDeviceFloatControlsPropertiesKHR; - struct PhysicalDeviceFragmentDensityMapFeaturesEXT; - struct PhysicalDeviceFragmentDensityMapPropertiesEXT; - struct PhysicalDeviceFragmentShaderBarycentricFeaturesNV; - struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT; - struct PhysicalDeviceGroupProperties; - using PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties; - struct PhysicalDeviceHostQueryResetFeaturesEXT; - struct PhysicalDeviceIDProperties; - using PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties; - struct PhysicalDeviceImageDrmFormatModifierInfoEXT; - struct PhysicalDeviceImageFormatInfo2; - using PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2; - struct PhysicalDeviceImageViewImageFormatInfoEXT; - struct PhysicalDeviceImagelessFramebufferFeaturesKHR; - struct PhysicalDeviceIndexTypeUint8FeaturesEXT; - struct PhysicalDeviceInlineUniformBlockFeaturesEXT; - struct PhysicalDeviceInlineUniformBlockPropertiesEXT; - struct PhysicalDeviceLimits; - struct PhysicalDeviceLineRasterizationFeaturesEXT; - struct PhysicalDeviceLineRasterizationPropertiesEXT; - struct PhysicalDeviceMaintenance3Properties; - using PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties; - struct PhysicalDeviceMemoryBudgetPropertiesEXT; - struct PhysicalDeviceMemoryPriorityFeaturesEXT; - struct PhysicalDeviceMemoryProperties; - struct PhysicalDeviceMemoryProperties2; - using PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2; - struct PhysicalDeviceMeshShaderFeaturesNV; - struct PhysicalDeviceMeshShaderPropertiesNV; - struct PhysicalDeviceMultiviewFeatures; - using PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures; - struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; - struct PhysicalDeviceMultiviewProperties; - using PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties; - struct PhysicalDevicePCIBusInfoPropertiesEXT; - struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR; - struct PhysicalDevicePointClippingProperties; - using PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties; - struct PhysicalDeviceProperties; - struct PhysicalDeviceProperties2; - using PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2; - struct PhysicalDeviceProtectedMemoryFeatures; - struct PhysicalDeviceProtectedMemoryProperties; - struct PhysicalDevicePushDescriptorPropertiesKHR; - struct PhysicalDeviceRayTracingPropertiesNV; - struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV; - struct PhysicalDeviceSampleLocationsPropertiesEXT; - struct PhysicalDeviceSamplerFilterMinmaxPropertiesEXT; - struct PhysicalDeviceSamplerYcbcrConversionFeatures; - using PhysicalDeviceSamplerYcbcrConversionFeaturesKHR = PhysicalDeviceSamplerYcbcrConversionFeatures; - struct PhysicalDeviceScalarBlockLayoutFeaturesEXT; - struct PhysicalDeviceShaderAtomicInt64FeaturesKHR; - struct PhysicalDeviceShaderCoreProperties2AMD; - struct PhysicalDeviceShaderCorePropertiesAMD; - struct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; - struct PhysicalDeviceShaderDrawParametersFeatures; - using PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures; - struct PhysicalDeviceShaderFloat16Int8FeaturesKHR; - using PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8FeaturesKHR; - struct PhysicalDeviceShaderImageFootprintFeaturesNV; - struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; - struct PhysicalDeviceShaderSMBuiltinsFeaturesNV; - struct PhysicalDeviceShaderSMBuiltinsPropertiesNV; - struct PhysicalDeviceShadingRateImageFeaturesNV; - struct PhysicalDeviceShadingRateImagePropertiesNV; - struct PhysicalDeviceSparseImageFormatInfo2; - using PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2; - struct PhysicalDeviceSparseProperties; - struct PhysicalDeviceSubgroupProperties; - struct PhysicalDeviceSubgroupSizeControlFeaturesEXT; - struct PhysicalDeviceSubgroupSizeControlPropertiesEXT; - struct PhysicalDeviceSurfaceInfo2KHR; - struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT; - struct PhysicalDeviceTexelBufferAlignmentPropertiesEXT; - struct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT; - struct PhysicalDeviceTransformFeedbackFeaturesEXT; - struct PhysicalDeviceTransformFeedbackPropertiesEXT; - struct PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR; - struct PhysicalDeviceVariablePointersFeatures; - using PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures; - using PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures; - using PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures; - struct PhysicalDeviceVertexAttributeDivisorFeaturesEXT; - struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT; - struct PhysicalDeviceVulkanMemoryModelFeaturesKHR; - struct PhysicalDeviceYcbcrImageArraysFeaturesEXT; - struct PipelineCacheCreateInfo; - struct PipelineColorBlendAdvancedStateCreateInfoEXT; - struct PipelineColorBlendAttachmentState; - struct PipelineColorBlendStateCreateInfo; - struct PipelineCompilerControlCreateInfoAMD; - struct PipelineCoverageModulationStateCreateInfoNV; - struct PipelineCoverageReductionStateCreateInfoNV; - struct PipelineCoverageToColorStateCreateInfoNV; - struct PipelineCreationFeedbackCreateInfoEXT; - struct PipelineCreationFeedbackEXT; - struct PipelineDepthStencilStateCreateInfo; - struct PipelineDiscardRectangleStateCreateInfoEXT; - struct PipelineDynamicStateCreateInfo; - struct PipelineExecutableInfoKHR; - struct PipelineExecutableInternalRepresentationKHR; - struct PipelineExecutablePropertiesKHR; - struct PipelineExecutableStatisticKHR; - union PipelineExecutableStatisticValueKHR; - struct PipelineInfoKHR; - struct PipelineInputAssemblyStateCreateInfo; - struct PipelineLayoutCreateInfo; - struct PipelineMultisampleStateCreateInfo; - struct PipelineRasterizationConservativeStateCreateInfoEXT; - struct PipelineRasterizationDepthClipStateCreateInfoEXT; - struct PipelineRasterizationLineStateCreateInfoEXT; - struct PipelineRasterizationStateCreateInfo; - struct PipelineRasterizationStateRasterizationOrderAMD; - struct PipelineRasterizationStateStreamCreateInfoEXT; - struct PipelineRepresentativeFragmentTestStateCreateInfoNV; - struct PipelineSampleLocationsStateCreateInfoEXT; - struct PipelineShaderStageCreateInfo; - struct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT; - struct PipelineTessellationDomainOriginStateCreateInfo; - using PipelineTessellationDomainOriginStateCreateInfoKHR = PipelineTessellationDomainOriginStateCreateInfo; - struct PipelineTessellationStateCreateInfo; - struct PipelineVertexInputDivisorStateCreateInfoEXT; - struct PipelineVertexInputStateCreateInfo; - struct PipelineViewportCoarseSampleOrderStateCreateInfoNV; - struct PipelineViewportExclusiveScissorStateCreateInfoNV; - struct PipelineViewportShadingRateImageStateCreateInfoNV; - struct PipelineViewportStateCreateInfo; - struct PipelineViewportSwizzleStateCreateInfoNV; - struct PipelineViewportWScalingStateCreateInfoNV; -#ifdef VK_USE_PLATFORM_GGP - struct PresentFrameTokenGGP; -#endif /*VK_USE_PLATFORM_GGP*/ - struct PresentInfoKHR; - struct PresentRegionKHR; - struct PresentRegionsKHR; - struct PresentTimeGOOGLE; - struct PresentTimesInfoGOOGLE; - struct ProtectedSubmitInfo; - struct PushConstantRange; - struct QueryPoolCreateInfo; - struct QueryPoolCreateInfoINTEL; - struct QueueFamilyCheckpointPropertiesNV; - struct QueueFamilyProperties; - struct QueueFamilyProperties2; - using QueueFamilyProperties2KHR = QueueFamilyProperties2; - struct RayTracingPipelineCreateInfoNV; - struct RayTracingShaderGroupCreateInfoNV; - struct Rect2D; - struct RectLayerKHR; - struct RefreshCycleDurationGOOGLE; - struct RenderPassAttachmentBeginInfoKHR; - struct RenderPassBeginInfo; - struct RenderPassCreateInfo; - struct RenderPassCreateInfo2KHR; - struct RenderPassFragmentDensityMapCreateInfoEXT; - struct RenderPassInputAttachmentAspectCreateInfo; - using RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo; - struct RenderPassMultiviewCreateInfo; - using RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo; - struct RenderPassSampleLocationsBeginInfoEXT; - struct SampleLocationEXT; - struct SampleLocationsInfoEXT; - struct SamplerCreateInfo; - struct SamplerReductionModeCreateInfoEXT; - struct SamplerYcbcrConversionCreateInfo; - using SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo; - struct SamplerYcbcrConversionImageFormatProperties; - using SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties; - struct SamplerYcbcrConversionInfo; - using SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo; - struct SemaphoreCreateInfo; - struct SemaphoreGetFdInfoKHR; -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct SemaphoreGetWin32HandleInfoKHR; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - struct ShaderModuleCreateInfo; - struct ShaderModuleValidationCacheCreateInfoEXT; - struct ShaderResourceUsageAMD; - struct ShaderStatisticsInfoAMD; - struct ShadingRatePaletteNV; - struct SharedPresentSurfaceCapabilitiesKHR; - struct SparseBufferMemoryBindInfo; - struct SparseImageFormatProperties; - struct SparseImageFormatProperties2; - using SparseImageFormatProperties2KHR = SparseImageFormatProperties2; - struct SparseImageMemoryBind; - struct SparseImageMemoryBindInfo; - struct SparseImageMemoryRequirements; - struct SparseImageMemoryRequirements2; - using SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2; - struct SparseImageOpaqueMemoryBindInfo; - struct SparseMemoryBind; - struct SpecializationInfo; - struct SpecializationMapEntry; - struct StencilOpState; -#ifdef VK_USE_PLATFORM_GGP - struct StreamDescriptorSurfaceCreateInfoGGP; -#endif /*VK_USE_PLATFORM_GGP*/ - struct SubmitInfo; - struct SubpassBeginInfoKHR; - struct SubpassDependency; - struct SubpassDependency2KHR; - struct SubpassDescription; - struct SubpassDescription2KHR; - struct SubpassDescriptionDepthStencilResolveKHR; - struct SubpassEndInfoKHR; - struct SubpassSampleLocationsEXT; - struct SubresourceLayout; - struct SurfaceCapabilities2EXT; - struct SurfaceCapabilities2KHR; -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct SurfaceCapabilitiesFullScreenExclusiveEXT; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - struct SurfaceCapabilitiesKHR; - struct SurfaceFormat2KHR; - struct SurfaceFormatKHR; -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct SurfaceFullScreenExclusiveInfoEXT; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct SurfaceFullScreenExclusiveWin32InfoEXT; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - struct SurfaceProtectedCapabilitiesKHR; - struct SwapchainCounterCreateInfoEXT; - struct SwapchainCreateInfoKHR; - struct SwapchainDisplayNativeHdrCreateInfoAMD; - struct TextureLODGatherFormatPropertiesAMD; - struct ValidationCacheCreateInfoEXT; - struct ValidationFeaturesEXT; - struct ValidationFlagsEXT; - struct VertexInputAttributeDescription; - struct VertexInputBindingDescription; - struct VertexInputBindingDivisorDescriptionEXT; -#ifdef VK_USE_PLATFORM_VI_NN - struct ViSurfaceCreateInfoNN; -#endif /*VK_USE_PLATFORM_VI_NN*/ - struct Viewport; - struct ViewportSwizzleNV; - struct ViewportWScalingNV; -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - struct WaylandSurfaceCreateInfoKHR; -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct Win32KeyedMutexAcquireReleaseInfoKHR; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct Win32KeyedMutexAcquireReleaseInfoNV; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct Win32SurfaceCreateInfoKHR; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - struct WriteDescriptorSet; - struct WriteDescriptorSetAccelerationStructureNV; - struct WriteDescriptorSetInlineUniformBlockEXT; - struct XYColorEXT; -#ifdef VK_USE_PLATFORM_XCB_KHR - struct XcbSurfaceCreateInfoKHR; -#endif /*VK_USE_PLATFORM_XCB_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_KHR - struct XlibSurfaceCreateInfoKHR; -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ - - class SurfaceKHR + value = true + }; + }; + template <> + struct StructExtends { - public: - using CType = VkSurfaceKHR; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSurfaceKHR; - - public: - VULKAN_HPP_CONSTEXPR SurfaceKHR() - : m_surfaceKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR SurfaceKHR( std::nullptr_t ) - : m_surfaceKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR( VkSurfaceKHR surfaceKHR ) - : m_surfaceKHR( surfaceKHR ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - SurfaceKHR & operator=(VkSurfaceKHR surfaceKHR) + enum { - m_surfaceKHR = surfaceKHR; - return *this; - } -#endif + value = true + }; + }; - SurfaceKHR & operator=( std::nullptr_t ) + //=== VK_EXT_depth_clip_enable === + template <> + struct StructExtends + { + enum { - m_surfaceKHR = VK_NULL_HANDLE; - return *this; - } - - bool operator==( SurfaceKHR const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_surfaceKHR == rhs.m_surfaceKHR; - } - - bool operator!=(SurfaceKHR const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_surfaceKHR != rhs.m_surfaceKHR; - } + value = true + }; + }; - bool operator<(SurfaceKHR const & rhs ) const + //=== VK_KHR_shared_presentable_image === + template <> + struct StructExtends + { + enum { - return m_surfaceKHR < rhs.m_surfaceKHR; - } + value = true + }; + }; - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + template <> + struct StructExtends + { + enum { - return m_surfaceKHR; - } + value = true + }; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - explicit operator bool() const + //=== VK_KHR_performance_query === + template <> + struct StructExtends + { + enum { - return m_surfaceKHR != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_surfaceKHR == VK_NULL_HANDLE; - } - - private: - VkSurfaceKHR m_surfaceKHR; + value = true + }; }; - static_assert( sizeof( SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = SurfaceKHR; + enum + { + value = true + }; }; - - class DebugReportCallbackEXT + template <> + struct StructExtends { - public: - using CType = VkDebugReportCallbackEXT; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDebugReportCallbackEXT; - - public: - VULKAN_HPP_CONSTEXPR DebugReportCallbackEXT() - : m_debugReportCallbackEXT(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DebugReportCallbackEXT( std::nullptr_t ) - : m_debugReportCallbackEXT(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT( VkDebugReportCallbackEXT debugReportCallbackEXT ) - : m_debugReportCallbackEXT( debugReportCallbackEXT ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DebugReportCallbackEXT & operator=(VkDebugReportCallbackEXT debugReportCallbackEXT) + enum { - m_debugReportCallbackEXT = debugReportCallbackEXT; - return *this; - } -#endif - - DebugReportCallbackEXT & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_debugReportCallbackEXT = VK_NULL_HANDLE; - return *this; - } - - bool operator==( DebugReportCallbackEXT const & rhs ) const - { - return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT; - } - - bool operator!=(DebugReportCallbackEXT const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT; - } + value = true + }; + }; - bool operator<(DebugReportCallbackEXT const & rhs ) const + //=== VK_EXT_debug_utils === + template <> + struct StructExtends + { + enum { - return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT; - } + value = true + }; + }; - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + template <> + struct StructExtends + { + enum { - return m_debugReportCallbackEXT; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_debugReportCallbackEXT != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_debugReportCallbackEXT == VK_NULL_HANDLE; - } - - private: - VkDebugReportCallbackEXT m_debugReportCallbackEXT; + value = true + }; }; - static_assert( sizeof( DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = DebugReportCallbackEXT; + enum + { + value = true + }; }; - - class DebugUtilsMessengerEXT + template <> + struct StructExtends { - public: - using CType = VkDebugUtilsMessengerEXT; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDebugUtilsMessengerEXT; - - public: - VULKAN_HPP_CONSTEXPR DebugUtilsMessengerEXT() - : m_debugUtilsMessengerEXT(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DebugUtilsMessengerEXT( std::nullptr_t ) - : m_debugUtilsMessengerEXT(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DebugUtilsMessengerEXT( VkDebugUtilsMessengerEXT debugUtilsMessengerEXT ) - : m_debugUtilsMessengerEXT( debugUtilsMessengerEXT ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DebugUtilsMessengerEXT & operator=(VkDebugUtilsMessengerEXT debugUtilsMessengerEXT) + enum { - m_debugUtilsMessengerEXT = debugUtilsMessengerEXT; - return *this; - } -#endif - - DebugUtilsMessengerEXT & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_debugUtilsMessengerEXT = VK_NULL_HANDLE; - return *this; - } + value = true + }; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - bool operator==( DebugUtilsMessengerEXT const & rhs ) const + //=== VK_EXT_sample_locations === + template <> + struct StructExtends + { + enum { - return m_debugUtilsMessengerEXT == rhs.m_debugUtilsMessengerEXT; - } - - bool operator!=(DebugUtilsMessengerEXT const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_debugUtilsMessengerEXT != rhs.m_debugUtilsMessengerEXT; - } - - bool operator<(DebugUtilsMessengerEXT const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_debugUtilsMessengerEXT < rhs.m_debugUtilsMessengerEXT; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugUtilsMessengerEXT() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_debugUtilsMessengerEXT; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_debugUtilsMessengerEXT != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const + //=== VK_EXT_blend_operation_advanced === + template <> + struct StructExtends + { + enum { - return m_debugUtilsMessengerEXT == VK_NULL_HANDLE; - } - - private: - VkDebugUtilsMessengerEXT m_debugUtilsMessengerEXT; + value = true + }; }; - static_assert( sizeof( DebugUtilsMessengerEXT ) == sizeof( VkDebugUtilsMessengerEXT ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = DebugUtilsMessengerEXT; + enum + { + value = true + }; }; - - class DisplayKHR + template <> + struct StructExtends { - public: - using CType = VkDisplayKHR; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDisplayKHR; - - public: - VULKAN_HPP_CONSTEXPR DisplayKHR() - : m_displayKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DisplayKHR( std::nullptr_t ) - : m_displayKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR( VkDisplayKHR displayKHR ) - : m_displayKHR( displayKHR ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DisplayKHR & operator=(VkDisplayKHR displayKHR) + enum { - m_displayKHR = displayKHR; - return *this; - } -#endif - - DisplayKHR & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_displayKHR = VK_NULL_HANDLE; - return *this; - } + value = true + }; + }; - bool operator==( DisplayKHR const & rhs ) const + //=== VK_NV_fragment_coverage_to_color === + template <> + struct StructExtends + { + enum { - return m_displayKHR == rhs.m_displayKHR; - } + value = true + }; + }; - bool operator!=(DisplayKHR const & rhs ) const + //=== VK_KHR_acceleration_structure === + template <> + struct StructExtends + { + enum { - return m_displayKHR != rhs.m_displayKHR; - } - - bool operator<(DisplayKHR const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_displayKHR < rhs.m_displayKHR; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_displayKHR; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_displayKHR != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const + //=== VK_NV_framebuffer_mixed_samples === + template <> + struct StructExtends + { + enum { - return m_displayKHR == VK_NULL_HANDLE; - } - - private: - VkDisplayKHR m_displayKHR; + value = true + }; }; - static_assert( sizeof( DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" ); + //=== VK_NV_shader_sm_builtins === template <> - struct cpp_type + struct StructExtends { - using type = DisplayKHR; + enum + { + value = true + }; }; - - class SwapchainKHR + template <> + struct StructExtends { - public: - using CType = VkSwapchainKHR; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSwapchainKHR; - - public: - VULKAN_HPP_CONSTEXPR SwapchainKHR() - : m_swapchainKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR SwapchainKHR( std::nullptr_t ) - : m_swapchainKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR( VkSwapchainKHR swapchainKHR ) - : m_swapchainKHR( swapchainKHR ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - SwapchainKHR & operator=(VkSwapchainKHR swapchainKHR) + enum { - m_swapchainKHR = swapchainKHR; - return *this; - } -#endif - - SwapchainKHR & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_swapchainKHR = VK_NULL_HANDLE; - return *this; - } + value = true + }; + }; - bool operator==( SwapchainKHR const & rhs ) const + //=== VK_EXT_image_drm_format_modifier === + template <> + struct StructExtends + { + enum { - return m_swapchainKHR == rhs.m_swapchainKHR; - } - - bool operator!=(SwapchainKHR const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_swapchainKHR != rhs.m_swapchainKHR; - } - - bool operator<(SwapchainKHR const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_swapchainKHR < rhs.m_swapchainKHR; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_swapchainKHR; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_swapchainKHR != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const + //=== VK_EXT_validation_cache === + template <> + struct StructExtends + { + enum { - return m_swapchainKHR == VK_NULL_HANDLE; - } - - private: - VkSwapchainKHR m_swapchainKHR; + value = true + }; }; - static_assert( sizeof( SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" ); +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_portability_subset === template <> - struct cpp_type + struct StructExtends { - using type = SwapchainKHR; + enum + { + value = true + }; }; - - class Semaphore + template <> + struct StructExtends { - public: - using CType = VkSemaphore; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSemaphore; - - public: - VULKAN_HPP_CONSTEXPR Semaphore() - : m_semaphore(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Semaphore( std::nullptr_t ) - : m_semaphore(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore( VkSemaphore semaphore ) - : m_semaphore( semaphore ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Semaphore & operator=(VkSemaphore semaphore) - { - m_semaphore = semaphore; - return *this; - } -#endif - - Semaphore & operator=( std::nullptr_t ) - { - m_semaphore = VK_NULL_HANDLE; - return *this; - } - - bool operator==( Semaphore const & rhs ) const - { - return m_semaphore == rhs.m_semaphore; - } - - bool operator!=(Semaphore const & rhs ) const - { - return m_semaphore != rhs.m_semaphore; - } - - bool operator<(Semaphore const & rhs ) const - { - return m_semaphore < rhs.m_semaphore; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSemaphore() const - { - return m_semaphore; - } - - explicit operator bool() const + enum { - return m_semaphore != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_semaphore == VK_NULL_HANDLE; - } - - private: - VkSemaphore m_semaphore; + value = true + }; }; - static_assert( sizeof( Semaphore ) == sizeof( VkSemaphore ), "handle and wrapper have different size!" ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + //=== VK_NV_shading_rate_image === template <> - struct cpp_type + struct StructExtends { - using type = Semaphore; + enum + { + value = true + }; }; - - class Fence + template <> + struct StructExtends { - public: - using CType = VkFence; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eFence; - - public: - VULKAN_HPP_CONSTEXPR Fence() - : m_fence(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Fence( std::nullptr_t ) - : m_fence(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Fence( VkFence fence ) - : m_fence( fence ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Fence & operator=(VkFence fence) + enum { - m_fence = fence; - return *this; - } -#endif - - Fence & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_fence = VK_NULL_HANDLE; - return *this; - } - - bool operator==( Fence const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_fence == rhs.m_fence; - } - - bool operator!=(Fence const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_fence != rhs.m_fence; - } + value = true + }; + }; - bool operator<(Fence const & rhs ) const + //=== VK_NV_ray_tracing === + template <> + struct StructExtends + { + enum { - return m_fence < rhs.m_fence; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFence() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_fence; - } + value = true + }; + }; - explicit operator bool() const + //=== VK_NV_representative_fragment_test === + template <> + struct StructExtends + { + enum { - return m_fence != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_fence == VK_NULL_HANDLE; - } - - private: - VkFence m_fence; + value = true + }; }; - static_assert( sizeof( Fence ) == sizeof( VkFence ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = Fence; + enum + { + value = true + }; }; - class PerformanceConfigurationINTEL + //=== VK_EXT_filter_cubic === + template <> + struct StructExtends { - public: - using CType = VkPerformanceConfigurationINTEL; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePerformanceConfigurationINTEL; - - public: - VULKAN_HPP_CONSTEXPR PerformanceConfigurationINTEL() - : m_performanceConfigurationINTEL(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR PerformanceConfigurationINTEL( std::nullptr_t ) - : m_performanceConfigurationINTEL(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT PerformanceConfigurationINTEL( VkPerformanceConfigurationINTEL performanceConfigurationINTEL ) - : m_performanceConfigurationINTEL( performanceConfigurationINTEL ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - PerformanceConfigurationINTEL & operator=(VkPerformanceConfigurationINTEL performanceConfigurationINTEL) + enum { - m_performanceConfigurationINTEL = performanceConfigurationINTEL; - return *this; - } -#endif - - PerformanceConfigurationINTEL & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_performanceConfigurationINTEL = VK_NULL_HANDLE; - return *this; - } + value = true + }; + }; - bool operator==( PerformanceConfigurationINTEL const & rhs ) const + //=== VK_EXT_external_memory_host === + template <> + struct StructExtends + { + enum { - return m_performanceConfigurationINTEL == rhs.m_performanceConfigurationINTEL; - } - - bool operator!=(PerformanceConfigurationINTEL const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_performanceConfigurationINTEL != rhs.m_performanceConfigurationINTEL; - } + value = true + }; + }; - bool operator<(PerformanceConfigurationINTEL const & rhs ) const + //=== VK_KHR_shader_clock === + template <> + struct StructExtends + { + enum { - return m_performanceConfigurationINTEL < rhs.m_performanceConfigurationINTEL; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPerformanceConfigurationINTEL() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_performanceConfigurationINTEL; - } + value = true + }; + }; - explicit operator bool() const + //=== VK_AMD_pipeline_compiler_control === + template <> + struct StructExtends + { + enum { - return m_performanceConfigurationINTEL != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_performanceConfigurationINTEL == VK_NULL_HANDLE; - } - - private: - VkPerformanceConfigurationINTEL m_performanceConfigurationINTEL; + value = true + }; }; - static_assert( sizeof( PerformanceConfigurationINTEL ) == sizeof( VkPerformanceConfigurationINTEL ), "handle and wrapper have different size!" ); + //=== VK_AMD_shader_core_properties === template <> - struct cpp_type + struct StructExtends { - using type = PerformanceConfigurationINTEL; + enum + { + value = true + }; }; - class QueryPool +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_decode_h265 === + template <> + struct StructExtends { - public: - using CType = VkQueryPool; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eQueryPool; - - public: - VULKAN_HPP_CONSTEXPR QueryPool() - : m_queryPool(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR QueryPool( std::nullptr_t ) - : m_queryPool(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool( VkQueryPool queryPool ) - : m_queryPool( queryPool ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - QueryPool & operator=(VkQueryPool queryPool) + enum { - m_queryPool = queryPool; - return *this; - } -#endif - - QueryPool & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_queryPool = VK_NULL_HANDLE; - return *this; - } - - bool operator==( QueryPool const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_queryPool == rhs.m_queryPool; - } - - bool operator!=(QueryPool const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_queryPool != rhs.m_queryPool; - } - - bool operator<(QueryPool const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_queryPool < rhs.m_queryPool; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueryPool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_queryPool; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_queryPool != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_queryPool == VK_NULL_HANDLE; - } - - private: - VkQueryPool m_queryPool; + value = true + }; }; - static_assert( sizeof( QueryPool ) == sizeof( VkQueryPool ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = QueryPool; + enum + { + value = true + }; }; - - class Buffer + template <> + struct StructExtends { - public: - using CType = VkBuffer; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eBuffer; - - public: - VULKAN_HPP_CONSTEXPR Buffer() - : m_buffer(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Buffer( std::nullptr_t ) - : m_buffer(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Buffer( VkBuffer buffer ) - : m_buffer( buffer ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Buffer & operator=(VkBuffer buffer) - { - m_buffer = buffer; - return *this; - } -#endif - - Buffer & operator=( std::nullptr_t ) - { - m_buffer = VK_NULL_HANDLE; - return *this; - } - - bool operator==( Buffer const & rhs ) const - { - return m_buffer == rhs.m_buffer; - } - - bool operator!=(Buffer const & rhs ) const - { - return m_buffer != rhs.m_buffer; - } - - bool operator<(Buffer const & rhs ) const + enum { - return m_buffer < rhs.m_buffer; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBuffer() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_buffer; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_buffer != VK_NULL_HANDLE; - } + value = true + }; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ - bool operator!() const + //=== VK_KHR_global_priority === + template <> + struct StructExtends + { + enum { - return m_buffer == VK_NULL_HANDLE; - } - - private: - VkBuffer m_buffer; + value = true + }; }; - static_assert( sizeof( Buffer ) == sizeof( VkBuffer ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = Buffer; + enum + { + value = true + }; }; - - class PipelineLayout + template <> + struct StructExtends { - public: - using CType = VkPipelineLayout; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePipelineLayout; - - public: - VULKAN_HPP_CONSTEXPR PipelineLayout() - : m_pipelineLayout(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR PipelineLayout( std::nullptr_t ) - : m_pipelineLayout(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout( VkPipelineLayout pipelineLayout ) - : m_pipelineLayout( pipelineLayout ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - PipelineLayout & operator=(VkPipelineLayout pipelineLayout) + enum { - m_pipelineLayout = pipelineLayout; - return *this; - } -#endif - - PipelineLayout & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_pipelineLayout = VK_NULL_HANDLE; - return *this; - } + value = true + }; + }; - bool operator==( PipelineLayout const & rhs ) const + //=== VK_AMD_memory_overallocation_behavior === + template <> + struct StructExtends + { + enum { - return m_pipelineLayout == rhs.m_pipelineLayout; - } + value = true + }; + }; - bool operator!=(PipelineLayout const & rhs ) const + //=== VK_EXT_vertex_attribute_divisor === + template <> + struct StructExtends + { + enum { - return m_pipelineLayout != rhs.m_pipelineLayout; - } - - bool operator<(PipelineLayout const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_pipelineLayout < rhs.m_pipelineLayout; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineLayout() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_pipelineLayout; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_pipelineLayout != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_frame_token === + template <> + struct StructExtends + { + enum { - return m_pipelineLayout == VK_NULL_HANDLE; - } - - private: - VkPipelineLayout m_pipelineLayout; + value = true + }; }; - static_assert( sizeof( PipelineLayout ) == sizeof( VkPipelineLayout ), "handle and wrapper have different size!" ); +#endif /*VK_USE_PLATFORM_GGP*/ + //=== VK_NV_compute_shader_derivatives === template <> - struct cpp_type + struct StructExtends { - using type = PipelineLayout; + enum + { + value = true + }; }; - - class DescriptorSet + template <> + struct StructExtends { - public: - using CType = VkDescriptorSet; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorSet; - - public: - VULKAN_HPP_CONSTEXPR DescriptorSet() - : m_descriptorSet(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DescriptorSet( std::nullptr_t ) - : m_descriptorSet(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet( VkDescriptorSet descriptorSet ) - : m_descriptorSet( descriptorSet ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DescriptorSet & operator=(VkDescriptorSet descriptorSet) + enum { - m_descriptorSet = descriptorSet; - return *this; - } -#endif + value = true + }; + }; - DescriptorSet & operator=( std::nullptr_t ) + //=== VK_NV_mesh_shader === + template <> + struct StructExtends + { + enum { - m_descriptorSet = VK_NULL_HANDLE; - return *this; - } - - bool operator==( DescriptorSet const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_descriptorSet == rhs.m_descriptorSet; - } - - bool operator!=(DescriptorSet const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_descriptorSet != rhs.m_descriptorSet; - } + value = true + }; + }; - bool operator<(DescriptorSet const & rhs ) const + //=== VK_NV_fragment_shader_barycentric === + template <> + struct StructExtends + { + enum { - return m_descriptorSet < rhs.m_descriptorSet; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSet() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_descriptorSet; - } + value = true + }; + }; - explicit operator bool() const + //=== VK_NV_shader_image_footprint === + template <> + struct StructExtends + { + enum { - return m_descriptorSet != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_descriptorSet == VK_NULL_HANDLE; - } - - private: - VkDescriptorSet m_descriptorSet; + value = true + }; }; - static_assert( sizeof( DescriptorSet ) == sizeof( VkDescriptorSet ), "handle and wrapper have different size!" ); + //=== VK_NV_scissor_exclusive === template <> - struct cpp_type + struct StructExtends { - using type = DescriptorSet; + enum + { + value = true + }; }; - - class Pipeline + template <> + struct StructExtends { - public: - using CType = VkPipeline; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePipeline; - - public: - VULKAN_HPP_CONSTEXPR Pipeline() - : m_pipeline(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Pipeline( std::nullptr_t ) - : m_pipeline(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline( VkPipeline pipeline ) - : m_pipeline( pipeline ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Pipeline & operator=(VkPipeline pipeline) + enum { - m_pipeline = pipeline; - return *this; - } -#endif - - Pipeline & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_pipeline = VK_NULL_HANDLE; - return *this; - } + value = true + }; + }; - bool operator==( Pipeline const & rhs ) const + //=== VK_NV_device_diagnostic_checkpoints === + template <> + struct StructExtends + { + enum { - return m_pipeline == rhs.m_pipeline; - } + value = true + }; + }; - bool operator!=(Pipeline const & rhs ) const + //=== VK_INTEL_shader_integer_functions2 === + template <> + struct StructExtends + { + enum { - return m_pipeline != rhs.m_pipeline; - } - - bool operator<(Pipeline const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_pipeline < rhs.m_pipeline; - } + value = true + }; + }; - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipeline() const + //=== VK_INTEL_performance_query === + template <> + struct StructExtends + { + enum { - return m_pipeline; - } + value = true + }; + }; - explicit operator bool() const + //=== VK_EXT_pci_bus_info === + template <> + struct StructExtends + { + enum { - return m_pipeline != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const + //=== VK_AMD_display_native_hdr === + template <> + struct StructExtends + { + enum { - return m_pipeline == VK_NULL_HANDLE; - } - - private: - VkPipeline m_pipeline; + value = true + }; }; - static_assert( sizeof( Pipeline ) == sizeof( VkPipeline ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = Pipeline; + enum + { + value = true + }; }; - class ImageView + //=== VK_EXT_fragment_density_map === + template <> + struct StructExtends { - public: - using CType = VkImageView; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eImageView; - - public: - VULKAN_HPP_CONSTEXPR ImageView() - : m_imageView(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR ImageView( std::nullptr_t ) - : m_imageView(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT ImageView( VkImageView imageView ) - : m_imageView( imageView ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - ImageView & operator=(VkImageView imageView) - { - m_imageView = imageView; - return *this; - } -#endif - - ImageView & operator=( std::nullptr_t ) - { - m_imageView = VK_NULL_HANDLE; - return *this; - } - - bool operator==( ImageView const & rhs ) const - { - return m_imageView == rhs.m_imageView; - } - - bool operator!=(ImageView const & rhs ) const - { - return m_imageView != rhs.m_imageView; - } - - bool operator<(ImageView const & rhs ) const - { - return m_imageView < rhs.m_imageView; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImageView() const + enum { - return m_imageView; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_imageView != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_imageView == VK_NULL_HANDLE; - } - - private: - VkImageView m_imageView; + value = true + }; }; - static_assert( sizeof( ImageView ) == sizeof( VkImageView ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = ImageView; + enum + { + value = true + }; }; - - class Image + template <> + struct StructExtends { - public: - using CType = VkImage; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eImage; - - public: - VULKAN_HPP_CONSTEXPR Image() - : m_image(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Image( std::nullptr_t ) - : m_image(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Image( VkImage image ) - : m_image( image ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Image & operator=(VkImage image) + enum { - m_image = image; - return *this; - } -#endif + value = true + }; + }; - Image & operator=( std::nullptr_t ) + //=== VK_KHR_fragment_shading_rate === + template <> + struct StructExtends + { + enum { - m_image = VK_NULL_HANDLE; - return *this; - } - - bool operator==( Image const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_image == rhs.m_image; - } - - bool operator!=(Image const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_image != rhs.m_image; - } - - bool operator<(Image const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_image < rhs.m_image; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImage() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_image; - } + value = true + }; + }; - explicit operator bool() const + //=== VK_AMD_shader_core_properties2 === + template <> + struct StructExtends + { + enum { - return m_image != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const + //=== VK_AMD_device_coherent_memory === + template <> + struct StructExtends + { + enum { - return m_image == VK_NULL_HANDLE; - } - - private: - VkImage m_image; + value = true + }; }; - static_assert( sizeof( Image ) == sizeof( VkImage ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = Image; + enum + { + value = true + }; }; - class AccelerationStructureNV + //=== VK_EXT_shader_image_atomic_int64 === + template <> + struct StructExtends { - public: - using CType = VkAccelerationStructureNV; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eAccelerationStructureNV; - - public: - VULKAN_HPP_CONSTEXPR AccelerationStructureNV() - : m_accelerationStructureNV(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR AccelerationStructureNV( std::nullptr_t ) - : m_accelerationStructureNV(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT AccelerationStructureNV( VkAccelerationStructureNV accelerationStructureNV ) - : m_accelerationStructureNV( accelerationStructureNV ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - AccelerationStructureNV & operator=(VkAccelerationStructureNV accelerationStructureNV) + enum { - m_accelerationStructureNV = accelerationStructureNV; - return *this; - } -#endif - - AccelerationStructureNV & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_accelerationStructureNV = VK_NULL_HANDLE; - return *this; - } + value = true + }; + }; - bool operator==( AccelerationStructureNV const & rhs ) const + //=== VK_EXT_memory_budget === + template <> + struct StructExtends + { + enum { - return m_accelerationStructureNV == rhs.m_accelerationStructureNV; - } + value = true + }; + }; - bool operator!=(AccelerationStructureNV const & rhs ) const + //=== VK_EXT_memory_priority === + template <> + struct StructExtends + { + enum { - return m_accelerationStructureNV != rhs.m_accelerationStructureNV; - } - - bool operator<(AccelerationStructureNV const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_accelerationStructureNV < rhs.m_accelerationStructureNV; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkAccelerationStructureNV() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_accelerationStructureNV; - } + value = true + }; + }; - explicit operator bool() const + //=== VK_KHR_surface_protected_capabilities === + template <> + struct StructExtends + { + enum { - return m_accelerationStructureNV != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const + //=== VK_NV_dedicated_allocation_image_aliasing === + template <> + struct StructExtends + { + enum { - return m_accelerationStructureNV == VK_NULL_HANDLE; - } - - private: - VkAccelerationStructureNV m_accelerationStructureNV; + value = true + }; }; - static_assert( sizeof( AccelerationStructureNV ) == sizeof( VkAccelerationStructureNV ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = AccelerationStructureNV; + enum + { + value = true + }; }; - class DescriptorUpdateTemplate + //=== VK_EXT_buffer_device_address === + template <> + struct StructExtends { - public: - using CType = VkDescriptorUpdateTemplate; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorUpdateTemplate; - - public: - VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplate() - : m_descriptorUpdateTemplate(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplate( std::nullptr_t ) - : m_descriptorUpdateTemplate(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorUpdateTemplate( VkDescriptorUpdateTemplate descriptorUpdateTemplate ) - : m_descriptorUpdateTemplate( descriptorUpdateTemplate ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DescriptorUpdateTemplate & operator=(VkDescriptorUpdateTemplate descriptorUpdateTemplate) + enum { - m_descriptorUpdateTemplate = descriptorUpdateTemplate; - return *this; - } -#endif - - DescriptorUpdateTemplate & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_descriptorUpdateTemplate = VK_NULL_HANDLE; - return *this; - } - - bool operator==( DescriptorUpdateTemplate const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_descriptorUpdateTemplate == rhs.m_descriptorUpdateTemplate; - } + value = true + }; + }; - bool operator!=(DescriptorUpdateTemplate const & rhs ) const + //=== VK_EXT_validation_features === + template <> + struct StructExtends + { + enum { - return m_descriptorUpdateTemplate != rhs.m_descriptorUpdateTemplate; - } + value = true + }; + }; - bool operator<(DescriptorUpdateTemplate const & rhs ) const + //=== VK_KHR_present_wait === + template <> + struct StructExtends + { + enum { - return m_descriptorUpdateTemplate < rhs.m_descriptorUpdateTemplate; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorUpdateTemplate() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_descriptorUpdateTemplate; - } + value = true + }; + }; - explicit operator bool() const + //=== VK_NV_cooperative_matrix === + template <> + struct StructExtends + { + enum { - return m_descriptorUpdateTemplate != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_descriptorUpdateTemplate == VK_NULL_HANDLE; - } - - private: - VkDescriptorUpdateTemplate m_descriptorUpdateTemplate; + value = true + }; }; - static_assert( sizeof( DescriptorUpdateTemplate ) == sizeof( VkDescriptorUpdateTemplate ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = DescriptorUpdateTemplate; + enum + { + value = true + }; }; - using DescriptorUpdateTemplateKHR = DescriptorUpdateTemplate; - class Event + //=== VK_NV_coverage_reduction_mode === + template <> + struct StructExtends { - public: - using CType = VkEvent; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eEvent; - - public: - VULKAN_HPP_CONSTEXPR Event() - : m_event(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Event( std::nullptr_t ) - : m_event(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Event( VkEvent event ) - : m_event( event ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Event & operator=(VkEvent event) - { - m_event = event; - return *this; - } -#endif - - Event & operator=( std::nullptr_t ) - { - m_event = VK_NULL_HANDLE; - return *this; - } - - bool operator==( Event const & rhs ) const - { - return m_event == rhs.m_event; - } - - bool operator!=(Event const & rhs ) const - { - return m_event != rhs.m_event; - } - - bool operator<(Event const & rhs ) const - { - return m_event < rhs.m_event; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkEvent() const + enum { - return m_event; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_event != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_event == VK_NULL_HANDLE; - } - - private: - VkEvent m_event; + value = true + }; }; - static_assert( sizeof( Event ) == sizeof( VkEvent ), "handle and wrapper have different size!" ); + //=== VK_EXT_fragment_shader_interlock === template <> - struct cpp_type + struct StructExtends { - using type = Event; + enum + { + value = true + }; }; - - class CommandBuffer + template <> + struct StructExtends { - public: - using CType = VkCommandBuffer; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCommandBuffer; - - public: - VULKAN_HPP_CONSTEXPR CommandBuffer() - : m_commandBuffer(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR CommandBuffer( std::nullptr_t ) - : m_commandBuffer(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer( VkCommandBuffer commandBuffer ) - : m_commandBuffer( commandBuffer ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - CommandBuffer & operator=(VkCommandBuffer commandBuffer) + enum { - m_commandBuffer = commandBuffer; - return *this; - } -#endif + value = true + }; + }; - CommandBuffer & operator=( std::nullptr_t ) + //=== VK_EXT_ycbcr_image_arrays === + template <> + struct StructExtends + { + enum { - m_commandBuffer = VK_NULL_HANDLE; - return *this; - } - - bool operator==( CommandBuffer const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_commandBuffer == rhs.m_commandBuffer; - } + value = true + }; + }; - bool operator!=(CommandBuffer const & rhs ) const + //=== VK_EXT_provoking_vertex === + template <> + struct StructExtends + { + enum { - return m_commandBuffer != rhs.m_commandBuffer; - } - - bool operator<(CommandBuffer const & rhs ) const - { - return m_commandBuffer < rhs.m_commandBuffer; - } - - template - Result begin( const vk::CommandBufferBeginInfo* pBeginInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type begin( const CommandBufferBeginInfo & beginInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void beginConditionalRenderingEXT( const vk::ConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void beginConditionalRenderingEXT( const ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void beginDebugUtilsLabelEXT( const vk::DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void beginQuery( vk::QueryPool queryPool, uint32_t query, vk::QueryControlFlags flags, Dispatch const &d = Dispatch() ) const; - - template - void beginQueryIndexedEXT( vk::QueryPool queryPool, uint32_t query, vk::QueryControlFlags flags, uint32_t index, Dispatch const &d = Dispatch() ) const; - - template - void beginRenderPass( const vk::RenderPassBeginInfo* pRenderPassBegin, vk::SubpassContents contents, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, vk::SubpassContents contents, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void beginRenderPass2KHR( const vk::RenderPassBeginInfo* pRenderPassBegin, const vk::SubpassBeginInfoKHR* pSubpassBeginInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void beginRenderPass2KHR( const RenderPassBeginInfo & renderPassBegin, const SubpassBeginInfoKHR & subpassBeginInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void beginTransformFeedbackEXT( uint32_t firstCounterBuffer, uint32_t counterBufferCount, const vk::Buffer* pCounterBuffers, const vk::DeviceSize* pCounterBufferOffsets, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void beginTransformFeedbackEXT( uint32_t firstCounterBuffer, ArrayProxy counterBuffers, ArrayProxy counterBufferOffsets, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void bindDescriptorSets( vk::PipelineBindPoint pipelineBindPoint, vk::PipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const vk::DescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void bindDescriptorSets( vk::PipelineBindPoint pipelineBindPoint, vk::PipelineLayout layout, uint32_t firstSet, ArrayProxy descriptorSets, ArrayProxy dynamicOffsets, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void bindIndexBuffer( vk::Buffer buffer, vk::DeviceSize offset, vk::IndexType indexType, Dispatch const &d = Dispatch() ) const; - - template - void bindPipeline( vk::PipelineBindPoint pipelineBindPoint, vk::Pipeline pipeline, Dispatch const &d = Dispatch() ) const; - - template - void bindShadingRateImageNV( vk::ImageView imageView, vk::ImageLayout imageLayout, Dispatch const &d = Dispatch() ) const; - - template - void bindTransformFeedbackBuffersEXT( uint32_t firstBinding, uint32_t bindingCount, const vk::Buffer* pBuffers, const vk::DeviceSize* pOffsets, const vk::DeviceSize* pSizes, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void bindTransformFeedbackBuffersEXT( uint32_t firstBinding, ArrayProxy buffers, ArrayProxy offsets, ArrayProxy sizes, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const vk::Buffer* pBuffers, const vk::DeviceSize* pOffsets, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void bindVertexBuffers( uint32_t firstBinding, ArrayProxy buffers, ArrayProxy offsets, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void blitImage( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Image dstImage, vk::ImageLayout dstImageLayout, uint32_t regionCount, const vk::ImageBlit* pRegions, vk::Filter filter, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void blitImage( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Image dstImage, vk::ImageLayout dstImageLayout, ArrayProxy regions, vk::Filter filter, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void buildAccelerationStructureNV( const vk::AccelerationStructureInfoNV* pInfo, vk::Buffer instanceData, vk::DeviceSize instanceOffset, vk::Bool32 update, vk::AccelerationStructureNV dst, vk::AccelerationStructureNV src, vk::Buffer scratch, vk::DeviceSize scratchOffset, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void buildAccelerationStructureNV( const AccelerationStructureInfoNV & info, vk::Buffer instanceData, vk::DeviceSize instanceOffset, vk::Bool32 update, vk::AccelerationStructureNV dst, vk::AccelerationStructureNV src, vk::Buffer scratch, vk::DeviceSize scratchOffset, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void clearAttachments( uint32_t attachmentCount, const vk::ClearAttachment* pAttachments, uint32_t rectCount, const vk::ClearRect* pRects, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void clearAttachments( ArrayProxy attachments, ArrayProxy rects, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void clearColorImage( vk::Image image, vk::ImageLayout imageLayout, const vk::ClearColorValue* pColor, uint32_t rangeCount, const vk::ImageSubresourceRange* pRanges, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void clearColorImage( vk::Image image, vk::ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy ranges, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void clearDepthStencilImage( vk::Image image, vk::ImageLayout imageLayout, const vk::ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const vk::ImageSubresourceRange* pRanges, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void clearDepthStencilImage( vk::Image image, vk::ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy ranges, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void copyAccelerationStructureNV( vk::AccelerationStructureNV dst, vk::AccelerationStructureNV src, vk::CopyAccelerationStructureModeNV mode, Dispatch const &d = Dispatch() ) const; - - template - void copyBuffer( vk::Buffer srcBuffer, vk::Buffer dstBuffer, uint32_t regionCount, const vk::BufferCopy* pRegions, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void copyBuffer( vk::Buffer srcBuffer, vk::Buffer dstBuffer, ArrayProxy regions, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void copyBufferToImage( vk::Buffer srcBuffer, vk::Image dstImage, vk::ImageLayout dstImageLayout, uint32_t regionCount, const vk::BufferImageCopy* pRegions, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void copyBufferToImage( vk::Buffer srcBuffer, vk::Image dstImage, vk::ImageLayout dstImageLayout, ArrayProxy regions, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void copyImage( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Image dstImage, vk::ImageLayout dstImageLayout, uint32_t regionCount, const vk::ImageCopy* pRegions, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void copyImage( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Image dstImage, vk::ImageLayout dstImageLayout, ArrayProxy regions, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void copyImageToBuffer( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Buffer dstBuffer, uint32_t regionCount, const vk::BufferImageCopy* pRegions, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void copyImageToBuffer( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Buffer dstBuffer, ArrayProxy regions, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void copyQueryPoolResults( vk::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, vk::Buffer dstBuffer, vk::DeviceSize dstOffset, vk::DeviceSize stride, vk::QueryResultFlags flags, Dispatch const &d = Dispatch() ) const; - - template - void debugMarkerBeginEXT( const vk::DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void debugMarkerEndEXT(Dispatch const &d = Dispatch() ) const; - - template - void debugMarkerInsertEXT( const vk::DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d = Dispatch() ) const; - - template - void dispatchBase( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d = Dispatch() ) const; - - template - void dispatchBaseKHR( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d = Dispatch() ) const; - - template - void dispatchIndirect( vk::Buffer buffer, vk::DeviceSize offset, Dispatch const &d = Dispatch() ) const; - - template - void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance, Dispatch const &d = Dispatch() ) const; - - template - void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance, Dispatch const &d = Dispatch() ) const; - - template - void drawIndexedIndirect( vk::Buffer buffer, vk::DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const; - - template - void drawIndexedIndirectCountAMD( vk::Buffer buffer, vk::DeviceSize offset, vk::Buffer countBuffer, vk::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const; - - template - void drawIndexedIndirectCountKHR( vk::Buffer buffer, vk::DeviceSize offset, vk::Buffer countBuffer, vk::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const; - - template - void drawIndirect( vk::Buffer buffer, vk::DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const; - - template - void drawIndirectByteCountEXT( uint32_t instanceCount, uint32_t firstInstance, vk::Buffer counterBuffer, vk::DeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride, Dispatch const &d = Dispatch() ) const; - - template - void drawIndirectCountAMD( vk::Buffer buffer, vk::DeviceSize offset, vk::Buffer countBuffer, vk::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const; - - template - void drawIndirectCountKHR( vk::Buffer buffer, vk::DeviceSize offset, vk::Buffer countBuffer, vk::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const; - - template - void drawMeshTasksIndirectCountNV( vk::Buffer buffer, vk::DeviceSize offset, vk::Buffer countBuffer, vk::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const; - - template - void drawMeshTasksIndirectNV( vk::Buffer buffer, vk::DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d = Dispatch() ) const; - - template - void drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask, Dispatch const &d = Dispatch() ) const; - - template - void endConditionalRenderingEXT(Dispatch const &d = Dispatch() ) const; - - template - void endDebugUtilsLabelEXT(Dispatch const &d = Dispatch() ) const; - - template - void endQuery( vk::QueryPool queryPool, uint32_t query, Dispatch const &d = Dispatch() ) const; - - template - void endQueryIndexedEXT( vk::QueryPool queryPool, uint32_t query, uint32_t index, Dispatch const &d = Dispatch() ) const; - - template - void endRenderPass(Dispatch const &d = Dispatch() ) const; - - template - void endRenderPass2KHR( const vk::SubpassEndInfoKHR* pSubpassEndInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void endRenderPass2KHR( const SubpassEndInfoKHR & subpassEndInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void endTransformFeedbackEXT( uint32_t firstCounterBuffer, uint32_t counterBufferCount, const vk::Buffer* pCounterBuffers, const vk::DeviceSize* pCounterBufferOffsets, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void endTransformFeedbackEXT( uint32_t firstCounterBuffer, ArrayProxy counterBuffers, ArrayProxy counterBufferOffsets, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void executeCommands( uint32_t commandBufferCount, const vk::CommandBuffer* pCommandBuffers, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void executeCommands( ArrayProxy commandBuffers, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void fillBuffer( vk::Buffer dstBuffer, vk::DeviceSize dstOffset, vk::DeviceSize size, uint32_t data, Dispatch const &d = Dispatch() ) const; - - template - void insertDebugUtilsLabelEXT( const vk::DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void nextSubpass( vk::SubpassContents contents, Dispatch const &d = Dispatch() ) const; - - template - void nextSubpass2KHR( const vk::SubpassBeginInfoKHR* pSubpassBeginInfo, const vk::SubpassEndInfoKHR* pSubpassEndInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void nextSubpass2KHR( const SubpassBeginInfoKHR & subpassBeginInfo, const SubpassEndInfoKHR & subpassEndInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void pipelineBarrier( vk::PipelineStageFlags srcStageMask, vk::PipelineStageFlags dstStageMask, vk::DependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const vk::MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const vk::BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const vk::ImageMemoryBarrier* pImageMemoryBarriers, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void pipelineBarrier( vk::PipelineStageFlags srcStageMask, vk::PipelineStageFlags dstStageMask, vk::DependencyFlags dependencyFlags, ArrayProxy memoryBarriers, ArrayProxy bufferMemoryBarriers, ArrayProxy imageMemoryBarriers, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void processCommandsNVX( const vk::CmdProcessCommandsInfoNVX* pProcessCommandsInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void pushConstants( vk::PipelineLayout layout, vk::ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void pushConstants( vk::PipelineLayout layout, vk::ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy values, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void pushDescriptorSetKHR( vk::PipelineBindPoint pipelineBindPoint, vk::PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const vk::WriteDescriptorSet* pDescriptorWrites, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void pushDescriptorSetKHR( vk::PipelineBindPoint pipelineBindPoint, vk::PipelineLayout layout, uint32_t set, ArrayProxy descriptorWrites, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void pushDescriptorSetWithTemplateKHR( vk::DescriptorUpdateTemplate descriptorUpdateTemplate, vk::PipelineLayout layout, uint32_t set, const void* pData, Dispatch const &d = Dispatch() ) const; - - template - void reserveSpaceForCommandsNVX( const vk::CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void resetEvent( vk::Event event, vk::PipelineStageFlags stageMask, Dispatch const &d = Dispatch() ) const; - - template - void resetQueryPool( vk::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const &d = Dispatch() ) const; - - template - void resolveImage( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Image dstImage, vk::ImageLayout dstImageLayout, uint32_t regionCount, const vk::ImageResolve* pRegions, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void resolveImage( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Image dstImage, vk::ImageLayout dstImageLayout, ArrayProxy regions, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void setBlendConstants( const float blendConstants[4], Dispatch const &d = Dispatch() ) const; - - template - void setCheckpointNV( const void* pCheckpointMarker, Dispatch const &d = Dispatch() ) const; - - template - void setCoarseSampleOrderNV( vk::CoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const vk::CoarseSampleOrderCustomNV* pCustomSampleOrders, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void setCoarseSampleOrderNV( vk::CoarseSampleOrderTypeNV sampleOrderType, ArrayProxy customSampleOrders, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor, Dispatch const &d = Dispatch() ) const; - - template - void setDepthBounds( float minDepthBounds, float maxDepthBounds, Dispatch const &d = Dispatch() ) const; - - template - void setDeviceMask( uint32_t deviceMask, Dispatch const &d = Dispatch() ) const; - - template - void setDeviceMaskKHR( uint32_t deviceMask, Dispatch const &d = Dispatch() ) const; - - template - void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const vk::Rect2D* pDiscardRectangles, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy discardRectangles, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void setEvent( vk::Event event, vk::PipelineStageFlags stageMask, Dispatch const &d = Dispatch() ) const; - - template - void setExclusiveScissorNV( uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const vk::Rect2D* pExclusiveScissors, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void setExclusiveScissorNV( uint32_t firstExclusiveScissor, ArrayProxy exclusiveScissors, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void setLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern, Dispatch const &d = Dispatch() ) const; - - template - void setLineWidth( float lineWidth, Dispatch const &d = Dispatch() ) const; - - template - Result setPerformanceMarkerINTEL( const vk::PerformanceMarkerInfoINTEL* pMarkerInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type setPerformanceMarkerINTEL( const PerformanceMarkerInfoINTEL & markerInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result setPerformanceOverrideINTEL( const vk::PerformanceOverrideInfoINTEL* pOverrideInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type setPerformanceOverrideINTEL( const PerformanceOverrideInfoINTEL & overrideInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result setPerformanceStreamMarkerINTEL( const vk::PerformanceStreamMarkerInfoINTEL* pMarkerInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type setPerformanceStreamMarkerINTEL( const PerformanceStreamMarkerInfoINTEL & markerInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void setSampleLocationsEXT( const vk::SampleLocationsInfoEXT* pSampleLocationsInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void setScissor( uint32_t firstScissor, uint32_t scissorCount, const vk::Rect2D* pScissors, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void setScissor( uint32_t firstScissor, ArrayProxy scissors, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void setStencilCompareMask( vk::StencilFaceFlags faceMask, uint32_t compareMask, Dispatch const &d = Dispatch() ) const; - - template - void setStencilReference( vk::StencilFaceFlags faceMask, uint32_t reference, Dispatch const &d = Dispatch() ) const; - - template - void setStencilWriteMask( vk::StencilFaceFlags faceMask, uint32_t writeMask, Dispatch const &d = Dispatch() ) const; - - template - void setViewport( uint32_t firstViewport, uint32_t viewportCount, const vk::Viewport* pViewports, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void setViewport( uint32_t firstViewport, ArrayProxy viewports, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void setViewportShadingRatePaletteNV( uint32_t firstViewport, uint32_t viewportCount, const vk::ShadingRatePaletteNV* pShadingRatePalettes, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void setViewportShadingRatePaletteNV( uint32_t firstViewport, ArrayProxy shadingRatePalettes, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const vk::ViewportWScalingNV* pViewportWScalings, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy viewportWScalings, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void traceRaysNV( vk::Buffer raygenShaderBindingTableBuffer, vk::DeviceSize raygenShaderBindingOffset, vk::Buffer missShaderBindingTableBuffer, vk::DeviceSize missShaderBindingOffset, vk::DeviceSize missShaderBindingStride, vk::Buffer hitShaderBindingTableBuffer, vk::DeviceSize hitShaderBindingOffset, vk::DeviceSize hitShaderBindingStride, vk::Buffer callableShaderBindingTableBuffer, vk::DeviceSize callableShaderBindingOffset, vk::DeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth, Dispatch const &d = Dispatch() ) const; - - template - void updateBuffer( vk::Buffer dstBuffer, vk::DeviceSize dstOffset, vk::DeviceSize dataSize, const void* pData, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void updateBuffer( vk::Buffer dstBuffer, vk::DeviceSize dstOffset, ArrayProxy data, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void waitEvents( uint32_t eventCount, const vk::Event* pEvents, vk::PipelineStageFlags srcStageMask, vk::PipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const vk::MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const vk::BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const vk::ImageMemoryBarrier* pImageMemoryBarriers, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void waitEvents( ArrayProxy events, vk::PipelineStageFlags srcStageMask, vk::PipelineStageFlags dstStageMask, ArrayProxy memoryBarriers, ArrayProxy bufferMemoryBarriers, ArrayProxy imageMemoryBarriers, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void writeAccelerationStructuresPropertiesNV( uint32_t accelerationStructureCount, const vk::AccelerationStructureNV* pAccelerationStructures, vk::QueryType queryType, vk::QueryPool queryPool, uint32_t firstQuery, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void writeAccelerationStructuresPropertiesNV( ArrayProxy accelerationStructures, vk::QueryType queryType, vk::QueryPool queryPool, uint32_t firstQuery, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void writeBufferMarkerAMD( vk::PipelineStageFlagBits pipelineStage, vk::Buffer dstBuffer, vk::DeviceSize dstOffset, uint32_t marker, Dispatch const &d = Dispatch() ) const; - - template - void writeTimestamp( vk::PipelineStageFlagBits pipelineStage, vk::QueryPool queryPool, uint32_t query, Dispatch const &d = Dispatch() ) const; - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result end(Dispatch const &d = Dispatch() ) const; -#else - template - ResultValueType::type end(Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result reset( vk::CommandBufferResetFlags flags, Dispatch const &d = Dispatch() ) const; -#else - template - ResultValueType::type reset( vk::CommandBufferResetFlags flags, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_commandBuffer; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_commandBuffer != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_commandBuffer == VK_NULL_HANDLE; - } - - private: - VkCommandBuffer m_commandBuffer; + value = true + }; }; - static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" ); +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === template <> - struct cpp_type + struct StructExtends { - using type = CommandBuffer; + enum + { + value = true + }; }; - - class DeviceMemory + template <> + struct StructExtends { - public: - using CType = VkDeviceMemory; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDeviceMemory; - - public: - VULKAN_HPP_CONSTEXPR DeviceMemory() - : m_deviceMemory(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DeviceMemory( std::nullptr_t ) - : m_deviceMemory(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory( VkDeviceMemory deviceMemory ) - : m_deviceMemory( deviceMemory ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DeviceMemory & operator=(VkDeviceMemory deviceMemory) + enum { - m_deviceMemory = deviceMemory; - return *this; - } -#endif - - DeviceMemory & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_deviceMemory = VK_NULL_HANDLE; - return *this; - } - - bool operator==( DeviceMemory const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_deviceMemory == rhs.m_deviceMemory; - } - - bool operator!=(DeviceMemory const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_deviceMemory != rhs.m_deviceMemory; - } + value = true + }; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - bool operator<(DeviceMemory const & rhs ) const + //=== VK_EXT_line_rasterization === + template <> + struct StructExtends + { + enum { - return m_deviceMemory < rhs.m_deviceMemory; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeviceMemory() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_deviceMemory; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_deviceMemory != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_deviceMemory == VK_NULL_HANDLE; - } - - private: - VkDeviceMemory m_deviceMemory; + value = true + }; }; - static_assert( sizeof( DeviceMemory ) == sizeof( VkDeviceMemory ), "handle and wrapper have different size!" ); + //=== VK_EXT_shader_atomic_float === template <> - struct cpp_type + struct StructExtends { - using type = DeviceMemory; + enum + { + value = true + }; }; - - class BufferView + template <> + struct StructExtends { - public: - using CType = VkBufferView; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eBufferView; - - public: - VULKAN_HPP_CONSTEXPR BufferView() - : m_bufferView(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR BufferView( std::nullptr_t ) - : m_bufferView(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT BufferView( VkBufferView bufferView ) - : m_bufferView( bufferView ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - BufferView & operator=(VkBufferView bufferView) + enum { - m_bufferView = bufferView; - return *this; - } -#endif + value = true + }; + }; - BufferView & operator=( std::nullptr_t ) + //=== VK_EXT_index_type_uint8 === + template <> + struct StructExtends + { + enum { - m_bufferView = VK_NULL_HANDLE; - return *this; - } - - bool operator==( BufferView const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_bufferView == rhs.m_bufferView; - } + value = true + }; + }; - bool operator!=(BufferView const & rhs ) const + //=== VK_EXT_extended_dynamic_state === + template <> + struct StructExtends + { + enum { - return m_bufferView != rhs.m_bufferView; - } - - bool operator<(BufferView const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_bufferView < rhs.m_bufferView; - } + value = true + }; + }; - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferView() const + //=== VK_KHR_pipeline_executable_properties === + template <> + struct StructExtends + { + enum { - return m_bufferView; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_bufferView != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const + //=== VK_EXT_shader_atomic_float2 === + template <> + struct StructExtends + { + enum { - return m_bufferView == VK_NULL_HANDLE; - } - - private: - VkBufferView m_bufferView; + value = true + }; }; - static_assert( sizeof( BufferView ) == sizeof( VkBufferView ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = BufferView; + enum + { + value = true + }; }; - class CommandPool + //=== VK_NV_device_generated_commands === + template <> + struct StructExtends { - public: - using CType = VkCommandPool; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCommandPool; - - public: - VULKAN_HPP_CONSTEXPR CommandPool() - : m_commandPool(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR CommandPool( std::nullptr_t ) - : m_commandPool(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool( VkCommandPool commandPool ) - : m_commandPool( commandPool ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - CommandPool & operator=(VkCommandPool commandPool) - { - m_commandPool = commandPool; - return *this; - } -#endif - - CommandPool & operator=( std::nullptr_t ) - { - m_commandPool = VK_NULL_HANDLE; - return *this; - } - - bool operator==( CommandPool const & rhs ) const - { - return m_commandPool == rhs.m_commandPool; - } - - bool operator!=(CommandPool const & rhs ) const - { - return m_commandPool != rhs.m_commandPool; - } - - bool operator<(CommandPool const & rhs ) const + enum { - return m_commandPool < rhs.m_commandPool; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandPool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_commandPool; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_commandPool != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_commandPool == VK_NULL_HANDLE; - } - - private: - VkCommandPool m_commandPool; + value = true + }; }; - static_assert( sizeof( CommandPool ) == sizeof( VkCommandPool ), "handle and wrapper have different size!" ); + //=== VK_NV_inherited_viewport_scissor === template <> - struct cpp_type + struct StructExtends { - using type = CommandPool; + enum + { + value = true + }; }; - - class PipelineCache + template <> + struct StructExtends { - public: - using CType = VkPipelineCache; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePipelineCache; - - public: - VULKAN_HPP_CONSTEXPR PipelineCache() - : m_pipelineCache(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR PipelineCache( std::nullptr_t ) - : m_pipelineCache(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache( VkPipelineCache pipelineCache ) - : m_pipelineCache( pipelineCache ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - PipelineCache & operator=(VkPipelineCache pipelineCache) + enum { - m_pipelineCache = pipelineCache; - return *this; - } -#endif - - PipelineCache & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_pipelineCache = VK_NULL_HANDLE; - return *this; - } + value = true + }; + }; - bool operator==( PipelineCache const & rhs ) const + //=== VK_EXT_texel_buffer_alignment === + template <> + struct StructExtends + { + enum { - return m_pipelineCache == rhs.m_pipelineCache; - } - - bool operator!=(PipelineCache const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_pipelineCache != rhs.m_pipelineCache; - } + value = true + }; + }; - bool operator<(PipelineCache const & rhs ) const + //=== VK_QCOM_render_pass_transform === + template <> + struct StructExtends + { + enum { - return m_pipelineCache < rhs.m_pipelineCache; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineCache() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_pipelineCache; - } + value = true + }; + }; - explicit operator bool() const + //=== VK_EXT_device_memory_report === + template <> + struct StructExtends + { + enum { - return m_pipelineCache != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_pipelineCache == VK_NULL_HANDLE; - } - - private: - VkPipelineCache m_pipelineCache; + value = true + }; }; - static_assert( sizeof( PipelineCache ) == sizeof( VkPipelineCache ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = PipelineCache; + enum + { + value = true + }; }; - class DescriptorPool + //=== VK_EXT_robustness2 === + template <> + struct StructExtends { - public: - using CType = VkDescriptorPool; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorPool; - - public: - VULKAN_HPP_CONSTEXPR DescriptorPool() - : m_descriptorPool(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DescriptorPool( std::nullptr_t ) - : m_descriptorPool(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool( VkDescriptorPool descriptorPool ) - : m_descriptorPool( descriptorPool ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DescriptorPool & operator=(VkDescriptorPool descriptorPool) + enum { - m_descriptorPool = descriptorPool; - return *this; - } -#endif - - DescriptorPool & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_descriptorPool = VK_NULL_HANDLE; - return *this; - } - - bool operator==( DescriptorPool const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_descriptorPool == rhs.m_descriptorPool; - } + value = true + }; + }; - bool operator!=(DescriptorPool const & rhs ) const + //=== VK_EXT_custom_border_color === + template <> + struct StructExtends + { + enum { - return m_descriptorPool != rhs.m_descriptorPool; - } - - bool operator<(DescriptorPool const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_descriptorPool < rhs.m_descriptorPool; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorPool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_descriptorPool; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_descriptorPool != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const + //=== VK_KHR_present_id === + template <> + struct StructExtends + { + enum { - return m_descriptorPool == VK_NULL_HANDLE; - } - - private: - VkDescriptorPool m_descriptorPool; + value = true + }; }; - static_assert( sizeof( DescriptorPool ) == sizeof( VkDescriptorPool ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = DescriptorPool; + enum + { + value = true + }; }; - - class DescriptorSetLayout + template <> + struct StructExtends { - public: - using CType = VkDescriptorSetLayout; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorSetLayout; - - public: - VULKAN_HPP_CONSTEXPR DescriptorSetLayout() - : m_descriptorSetLayout(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DescriptorSetLayout( std::nullptr_t ) - : m_descriptorSetLayout(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout ) - : m_descriptorSetLayout( descriptorSetLayout ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DescriptorSetLayout & operator=(VkDescriptorSetLayout descriptorSetLayout) + enum { - m_descriptorSetLayout = descriptorSetLayout; - return *this; - } -#endif + value = true + }; + }; - DescriptorSetLayout & operator=( std::nullptr_t ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_encode_queue === + template <> + struct StructExtends + { + enum { - m_descriptorSetLayout = VK_NULL_HANDLE; - return *this; - } - - bool operator==( DescriptorSetLayout const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_descriptorSetLayout == rhs.m_descriptorSetLayout; - } + value = true + }; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ - bool operator!=(DescriptorSetLayout const & rhs ) const + //=== VK_NV_device_diagnostics_config === + template <> + struct StructExtends + { + enum { - return m_descriptorSetLayout != rhs.m_descriptorSetLayout; - } - - bool operator<(DescriptorSetLayout const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_descriptorSetLayout < rhs.m_descriptorSetLayout; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSetLayout() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_descriptorSetLayout; - } + value = true + }; + }; - explicit operator bool() const + //=== VK_KHR_synchronization2 === + template <> + struct StructExtends + { + enum { - return m_descriptorSetLayout != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const + //=== VK_KHR_shader_subgroup_uniform_control_flow === + template <> + struct StructExtends + { + enum { - return m_descriptorSetLayout == VK_NULL_HANDLE; - } - - private: - VkDescriptorSetLayout m_descriptorSetLayout; + value = true + }; }; - static_assert( sizeof( DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = DescriptorSetLayout; + enum + { + value = true + }; }; - class Framebuffer + //=== VK_NV_fragment_shading_rate_enums === + template <> + struct StructExtends { - public: - using CType = VkFramebuffer; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eFramebuffer; - - public: - VULKAN_HPP_CONSTEXPR Framebuffer() - : m_framebuffer(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Framebuffer( std::nullptr_t ) - : m_framebuffer(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer( VkFramebuffer framebuffer ) - : m_framebuffer( framebuffer ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Framebuffer & operator=(VkFramebuffer framebuffer) - { - m_framebuffer = framebuffer; - return *this; - } -#endif - - Framebuffer & operator=( std::nullptr_t ) - { - m_framebuffer = VK_NULL_HANDLE; - return *this; - } - - bool operator==( Framebuffer const & rhs ) const - { - return m_framebuffer == rhs.m_framebuffer; - } - - bool operator!=(Framebuffer const & rhs ) const - { - return m_framebuffer != rhs.m_framebuffer; - } - - bool operator<(Framebuffer const & rhs ) const - { - return m_framebuffer < rhs.m_framebuffer; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFramebuffer() const - { - return m_framebuffer; - } - - explicit operator bool() const + enum { - return m_framebuffer != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_framebuffer == VK_NULL_HANDLE; - } - - private: - VkFramebuffer m_framebuffer; + value = true + }; }; - static_assert( sizeof( Framebuffer ) == sizeof( VkFramebuffer ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = Framebuffer; + enum + { + value = true + }; }; - - class IndirectCommandsLayoutNVX + template <> + struct StructExtends { - public: - using CType = VkIndirectCommandsLayoutNVX; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eIndirectCommandsLayoutNVX; - - public: - VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutNVX() - : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutNVX( std::nullptr_t ) - : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutNVX( VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX ) - : m_indirectCommandsLayoutNVX( indirectCommandsLayoutNVX ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - IndirectCommandsLayoutNVX & operator=(VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX) + enum { - m_indirectCommandsLayoutNVX = indirectCommandsLayoutNVX; - return *this; - } -#endif + value = true + }; + }; - IndirectCommandsLayoutNVX & operator=( std::nullptr_t ) + //=== VK_NV_ray_tracing_motion_blur === + template <> + struct StructExtends + { + enum { - m_indirectCommandsLayoutNVX = VK_NULL_HANDLE; - return *this; - } - - bool operator==( IndirectCommandsLayoutNVX const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_indirectCommandsLayoutNVX == rhs.m_indirectCommandsLayoutNVX; - } - - bool operator!=(IndirectCommandsLayoutNVX const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_indirectCommandsLayoutNVX != rhs.m_indirectCommandsLayoutNVX; - } - - bool operator<(IndirectCommandsLayoutNVX const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_indirectCommandsLayoutNVX < rhs.m_indirectCommandsLayoutNVX; - } + value = true + }; + }; - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutNVX() const + //=== VK_EXT_ycbcr_2plane_444_formats === + template <> + struct StructExtends + { + enum { - return m_indirectCommandsLayoutNVX; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_indirectCommandsLayoutNVX != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const + //=== VK_EXT_fragment_density_map2 === + template <> + struct StructExtends + { + enum { - return m_indirectCommandsLayoutNVX == VK_NULL_HANDLE; - } - - private: - VkIndirectCommandsLayoutNVX m_indirectCommandsLayoutNVX; + value = true + }; }; - static_assert( sizeof( IndirectCommandsLayoutNVX ) == sizeof( VkIndirectCommandsLayoutNVX ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = IndirectCommandsLayoutNVX; + enum + { + value = true + }; }; - - class ObjectTableNVX + template <> + struct StructExtends { - public: - using CType = VkObjectTableNVX; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eObjectTableNVX; - - public: - VULKAN_HPP_CONSTEXPR ObjectTableNVX() - : m_objectTableNVX(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR ObjectTableNVX( std::nullptr_t ) - : m_objectTableNVX(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT ObjectTableNVX( VkObjectTableNVX objectTableNVX ) - : m_objectTableNVX( objectTableNVX ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - ObjectTableNVX & operator=(VkObjectTableNVX objectTableNVX) + enum { - m_objectTableNVX = objectTableNVX; - return *this; - } -#endif + value = true + }; + }; - ObjectTableNVX & operator=( std::nullptr_t ) + //=== VK_QCOM_rotated_copy_commands === + template <> + struct StructExtends + { + enum { - m_objectTableNVX = VK_NULL_HANDLE; - return *this; - } - - bool operator==( ObjectTableNVX const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_objectTableNVX == rhs.m_objectTableNVX; - } + value = true + }; + }; - bool operator!=(ObjectTableNVX const & rhs ) const + //=== VK_KHR_workgroup_memory_explicit_layout === + template <> + struct StructExtends + { + enum { - return m_objectTableNVX != rhs.m_objectTableNVX; - } - - bool operator<(ObjectTableNVX const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_objectTableNVX < rhs.m_objectTableNVX; - } + value = true + }; + }; - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkObjectTableNVX() const + //=== VK_EXT_4444_formats === + template <> + struct StructExtends + { + enum { - return m_objectTableNVX; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_objectTableNVX != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const + //=== VK_ARM_rasterization_order_attachment_access === + template <> + struct StructExtends + { + enum { - return m_objectTableNVX == VK_NULL_HANDLE; - } - - private: - VkObjectTableNVX m_objectTableNVX; + value = true + }; }; - static_assert( sizeof( ObjectTableNVX ) == sizeof( VkObjectTableNVX ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = ObjectTableNVX; + enum + { + value = true + }; }; - class RenderPass + //=== VK_EXT_rgba10x6_formats === + template <> + struct StructExtends { - public: - using CType = VkRenderPass; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eRenderPass; - - public: - VULKAN_HPP_CONSTEXPR RenderPass() - : m_renderPass(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR RenderPass( std::nullptr_t ) - : m_renderPass(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass( VkRenderPass renderPass ) - : m_renderPass( renderPass ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - RenderPass & operator=(VkRenderPass renderPass) + enum { - m_renderPass = renderPass; - return *this; - } -#endif - - RenderPass & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_renderPass = VK_NULL_HANDLE; - return *this; - } + value = true + }; + }; - bool operator==( RenderPass const & rhs ) const + //=== VK_KHR_ray_tracing_pipeline === + template <> + struct StructExtends + { + enum { - return m_renderPass == rhs.m_renderPass; - } - - bool operator!=(RenderPass const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_renderPass != rhs.m_renderPass; - } - - bool operator<(RenderPass const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_renderPass < rhs.m_renderPass; - } + value = true + }; + }; - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkRenderPass() const + //=== VK_KHR_ray_query === + template <> + struct StructExtends + { + enum { - return m_renderPass; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_renderPass != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const + //=== VK_VALVE_mutable_descriptor_type === + template <> + struct StructExtends + { + enum { - return m_renderPass == VK_NULL_HANDLE; - } - - private: - VkRenderPass m_renderPass; + value = true + }; }; - static_assert( sizeof( RenderPass ) == sizeof( VkRenderPass ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = RenderPass; + enum + { + value = true + }; }; - - class Sampler + template <> + struct StructExtends { - public: - using CType = VkSampler; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSampler; - - public: - VULKAN_HPP_CONSTEXPR Sampler() - : m_sampler(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Sampler( std::nullptr_t ) - : m_sampler(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Sampler( VkSampler sampler ) - : m_sampler( sampler ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Sampler & operator=(VkSampler sampler) - { - m_sampler = sampler; - return *this; - } -#endif - - Sampler & operator=( std::nullptr_t ) - { - m_sampler = VK_NULL_HANDLE; - return *this; - } - - bool operator==( Sampler const & rhs ) const - { - return m_sampler == rhs.m_sampler; - } - - bool operator!=(Sampler const & rhs ) const - { - return m_sampler != rhs.m_sampler; - } - - bool operator<(Sampler const & rhs ) const - { - return m_sampler < rhs.m_sampler; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSampler() const + enum { - return m_sampler; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_sampler != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const + //=== VK_EXT_vertex_input_dynamic_state === + template <> + struct StructExtends + { + enum { - return m_sampler == VK_NULL_HANDLE; - } - - private: - VkSampler m_sampler; + value = true + }; }; - static_assert( sizeof( Sampler ) == sizeof( VkSampler ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = Sampler; + enum + { + value = true + }; }; - class SamplerYcbcrConversion + //=== VK_EXT_physical_device_drm === + template <> + struct StructExtends { - public: - using CType = VkSamplerYcbcrConversion; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSamplerYcbcrConversion; - - public: - VULKAN_HPP_CONSTEXPR SamplerYcbcrConversion() - : m_samplerYcbcrConversion(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR SamplerYcbcrConversion( std::nullptr_t ) - : m_samplerYcbcrConversion(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT SamplerYcbcrConversion( VkSamplerYcbcrConversion samplerYcbcrConversion ) - : m_samplerYcbcrConversion( samplerYcbcrConversion ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - SamplerYcbcrConversion & operator=(VkSamplerYcbcrConversion samplerYcbcrConversion) + enum { - m_samplerYcbcrConversion = samplerYcbcrConversion; - return *this; - } -#endif + value = true + }; + }; - SamplerYcbcrConversion & operator=( std::nullptr_t ) + //=== VK_EXT_depth_clip_control === + template <> + struct StructExtends + { + enum { - m_samplerYcbcrConversion = VK_NULL_HANDLE; - return *this; - } - - bool operator==( SamplerYcbcrConversion const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_samplerYcbcrConversion == rhs.m_samplerYcbcrConversion; - } - - bool operator!=(SamplerYcbcrConversion const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_samplerYcbcrConversion != rhs.m_samplerYcbcrConversion; - } + value = true + }; + }; - bool operator<(SamplerYcbcrConversion const & rhs ) const + //=== VK_EXT_primitive_topology_list_restart === + template <> + struct StructExtends + { + enum { - return m_samplerYcbcrConversion < rhs.m_samplerYcbcrConversion; - } - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSamplerYcbcrConversion() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_samplerYcbcrConversion; - } + value = true + }; + }; - explicit operator bool() const +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + template <> + struct StructExtends + { + enum { - return m_samplerYcbcrConversion != VK_NULL_HANDLE; - } + value = true + }; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ - bool operator!() const +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + template <> + struct StructExtends + { + enum { - return m_samplerYcbcrConversion == VK_NULL_HANDLE; - } - - private: - VkSamplerYcbcrConversion m_samplerYcbcrConversion; + value = true + }; }; - static_assert( sizeof( SamplerYcbcrConversion ) == sizeof( VkSamplerYcbcrConversion ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = SamplerYcbcrConversion; + enum + { + value = true + }; }; - using SamplerYcbcrConversionKHR = SamplerYcbcrConversion; - - class ShaderModule + template <> + struct StructExtends { - public: - using CType = VkShaderModule; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eShaderModule; - - public: - VULKAN_HPP_CONSTEXPR ShaderModule() - : m_shaderModule(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR ShaderModule( std::nullptr_t ) - : m_shaderModule(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule( VkShaderModule shaderModule ) - : m_shaderModule( shaderModule ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - ShaderModule & operator=(VkShaderModule shaderModule) + enum { - m_shaderModule = shaderModule; - return *this; - } -#endif + value = true + }; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ - ShaderModule & operator=( std::nullptr_t ) + //=== VK_HUAWEI_subpass_shading === + template <> + struct StructExtends + { + enum { - m_shaderModule = VK_NULL_HANDLE; - return *this; - } - - bool operator==( ShaderModule const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_shaderModule == rhs.m_shaderModule; - } - - bool operator!=(ShaderModule const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_shaderModule != rhs.m_shaderModule; - } - - bool operator<(ShaderModule const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_shaderModule < rhs.m_shaderModule; - } + value = true + }; + }; - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderModule() const + //=== VK_HUAWEI_invocation_mask === + template <> + struct StructExtends + { + enum { - return m_shaderModule; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_shaderModule != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const + //=== VK_NV_external_memory_rdma === + template <> + struct StructExtends + { + enum { - return m_shaderModule == VK_NULL_HANDLE; - } - - private: - VkShaderModule m_shaderModule; + value = true + }; }; - static_assert( sizeof( ShaderModule ) == sizeof( VkShaderModule ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = ShaderModule; + enum + { + value = true + }; }; - class ValidationCacheEXT + //=== VK_EXT_extended_dynamic_state2 === + template <> + struct StructExtends { - public: - using CType = VkValidationCacheEXT; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eValidationCacheEXT; - - public: - VULKAN_HPP_CONSTEXPR ValidationCacheEXT() - : m_validationCacheEXT(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR ValidationCacheEXT( std::nullptr_t ) - : m_validationCacheEXT(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT ValidationCacheEXT( VkValidationCacheEXT validationCacheEXT ) - : m_validationCacheEXT( validationCacheEXT ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - ValidationCacheEXT & operator=(VkValidationCacheEXT validationCacheEXT) + enum { - m_validationCacheEXT = validationCacheEXT; - return *this; - } -#endif - - ValidationCacheEXT & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_validationCacheEXT = VK_NULL_HANDLE; - return *this; - } + value = true + }; + }; - bool operator==( ValidationCacheEXT const & rhs ) const + //=== VK_EXT_color_write_enable === + template <> + struct StructExtends + { + enum { - return m_validationCacheEXT == rhs.m_validationCacheEXT; - } - - bool operator!=(ValidationCacheEXT const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_validationCacheEXT != rhs.m_validationCacheEXT; - } - - bool operator<(ValidationCacheEXT const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_validationCacheEXT < rhs.m_validationCacheEXT; - } + value = true + }; + }; - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkValidationCacheEXT() const + //=== VK_EXT_image_view_min_lod === + template <> + struct StructExtends + { + enum { - return m_validationCacheEXT; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_validationCacheEXT != VK_NULL_HANDLE; - } - - bool operator!() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_validationCacheEXT == VK_NULL_HANDLE; - } - - private: - VkValidationCacheEXT m_validationCacheEXT; + value = true + }; }; - static_assert( sizeof( ValidationCacheEXT ) == sizeof( VkValidationCacheEXT ), "handle and wrapper have different size!" ); + //=== VK_EXT_multi_draw === template <> - struct cpp_type + struct StructExtends { - using type = ValidationCacheEXT; + enum + { + value = true + }; }; - - class Queue + template <> + struct StructExtends { - public: - using CType = VkQueue; - - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eQueue; - - public: - VULKAN_HPP_CONSTEXPR Queue() - : m_queue(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Queue( std::nullptr_t ) - : m_queue(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Queue( VkQueue queue ) - : m_queue( queue ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Queue & operator=(VkQueue queue) + enum { - m_queue = queue; - return *this; - } -#endif - - Queue & operator=( std::nullptr_t ) + value = true + }; + }; + template <> + struct StructExtends + { + enum { - m_queue = VK_NULL_HANDLE; - return *this; - } + value = true + }; + }; - bool operator==( Queue const & rhs ) const + //=== VK_EXT_border_color_swizzle === + template <> + struct StructExtends + { + enum { - return m_queue == rhs.m_queue; - } - - bool operator!=(Queue const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_queue != rhs.m_queue; - } - - bool operator<(Queue const & rhs ) const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_queue < rhs.m_queue; - } - - template - void getCheckpointDataNV( uint32_t* pCheckpointDataCount, vk::CheckpointDataNV* pCheckpointData, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - std::vector getCheckpointDataNV(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - std::vector getCheckpointDataNV(Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void beginDebugUtilsLabelEXT( const vk::DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result bindSparse( uint32_t bindInfoCount, const vk::BindSparseInfo* pBindInfo, vk::Fence fence, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type bindSparse( ArrayProxy bindInfo, vk::Fence fence, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void endDebugUtilsLabelEXT(Dispatch const &d = Dispatch() ) const; - - template - void insertDebugUtilsLabelEXT( const vk::DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result presentKHR( const vk::PresentInfoKHR* pPresentInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result presentKHR( const PresentInfoKHR & presentInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result setPerformanceConfigurationINTEL( vk::PerformanceConfigurationINTEL configuration, Dispatch const &d = Dispatch() ) const; -#else - template - ResultValueType::type setPerformanceConfigurationINTEL( vk::PerformanceConfigurationINTEL configuration, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result submit( uint32_t submitCount, const vk::SubmitInfo* pSubmits, vk::Fence fence, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type submit( ArrayProxy submits, vk::Fence fence, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result waitIdle(Dispatch const &d = Dispatch() ) const; -#else - template - ResultValueType::type waitIdle(Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + value = true + }; + }; - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const + //=== VK_EXT_pageable_device_local_memory === + template <> + struct StructExtends + { + enum { - return m_queue; - } - - explicit operator bool() const + value = true + }; + }; + template <> + struct StructExtends + { + enum { - return m_queue != VK_NULL_HANDLE; - } + value = true + }; + }; - bool operator!() const + //=== VK_QCOM_fragment_density_map_offset === + template <> + struct StructExtends + { + enum { - return m_queue == VK_NULL_HANDLE; - } - - private: - VkQueue m_queue; + value = true + }; }; - static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" ); - template <> - struct cpp_type + struct StructExtends { - using type = Queue; + enum + { + value = true + }; }; - -#ifndef VULKAN_HPP_NO_SMART_HANDLE - class Device; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueAccelerationStructureNV = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueBuffer = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueBufferView = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = PoolFree; }; - using UniqueCommandBuffer = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueCommandPool = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueDescriptorPool = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = PoolFree; }; - using UniqueDescriptorSet = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueDescriptorSetLayout = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueDescriptorUpdateTemplate = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectFree; }; - using UniqueDeviceMemory = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueEvent = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueFence = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueFramebuffer = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueImage = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueImageView = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueIndirectCommandsLayoutNVX = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueObjectTableNVX = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniquePipeline = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniquePipelineCache = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniquePipelineLayout = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueQueryPool = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueRenderPass = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueSampler = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueSamplerYcbcrConversion = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueSemaphore = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueShaderModule = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueSwapchainKHR = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueValidationCacheEXT = UniqueHandle; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ - - class Device + template <> + struct StructExtends { - public: - using CType = VkDevice; + enum + { + value = true + }; + }; + template <> + struct StructExtends + { + enum + { + value = true + }; + }; - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDevice; + //=== VK_NV_linear_color_attachment === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +#if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL + class DynamicLoader + { public: - VULKAN_HPP_CONSTEXPR Device() - : m_device(VK_NULL_HANDLE) - {} +# ifdef VULKAN_HPP_NO_EXCEPTIONS + DynamicLoader( std::string const & vulkanLibraryName = {} ) VULKAN_HPP_NOEXCEPT +# else + DynamicLoader( std::string const & vulkanLibraryName = {} ) +# endif + { + if ( !vulkanLibraryName.empty() ) + { +# if defined( __unix__ ) || defined( __APPLE__ ) || defined( __QNXNTO__ ) || defined( __Fuchsia__ ) + m_library = dlopen( vulkanLibraryName.c_str(), RTLD_NOW | RTLD_LOCAL ); +# elif defined( _WIN32 ) + m_library = ::LoadLibraryA( vulkanLibraryName.c_str() ); +# else +# error unsupported platform +# endif + } + else + { +# if defined( __unix__ ) || defined( __QNXNTO__ ) || defined( __Fuchsia__ ) + m_library = dlopen( "libvulkan.so", RTLD_NOW | RTLD_LOCAL ); + if ( m_library == nullptr ) + { + m_library = dlopen( "libvulkan.so.1", RTLD_NOW | RTLD_LOCAL ); + } +# elif defined( __APPLE__ ) + m_library = dlopen( "libvulkan.dylib", RTLD_NOW | RTLD_LOCAL ); +# elif defined( _WIN32 ) + m_library = ::LoadLibraryA( "vulkan-1.dll" ); +# else +# error unsupported platform +# endif + } - VULKAN_HPP_CONSTEXPR Device( std::nullptr_t ) - : m_device(VK_NULL_HANDLE) - {} +# ifndef VULKAN_HPP_NO_EXCEPTIONS + if ( m_library == nullptr ) + { + // NOTE there should be an InitializationFailedError, but msvc insists on the symbol does not exist within the + // scope of this function. + throw std::runtime_error( "Failed to load vulkan library!" ); + } +# endif + } - VULKAN_HPP_TYPESAFE_EXPLICIT Device( VkDevice device ) - : m_device( device ) - {} + DynamicLoader( DynamicLoader const & ) = delete; -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Device & operator=(VkDevice device) + DynamicLoader( DynamicLoader && other ) VULKAN_HPP_NOEXCEPT : m_library( other.m_library ) { - m_device = device; - return *this; + other.m_library = nullptr; } -#endif - Device & operator=( std::nullptr_t ) + DynamicLoader & operator=( DynamicLoader const & ) = delete; + + DynamicLoader & operator=( DynamicLoader && other ) VULKAN_HPP_NOEXCEPT { - m_device = VK_NULL_HANDLE; + std::swap( m_library, other.m_library ); return *this; } - bool operator==( Device const & rhs ) const + ~DynamicLoader() VULKAN_HPP_NOEXCEPT { - return m_device == rhs.m_device; + if ( m_library ) + { +# if defined( __unix__ ) || defined( __APPLE__ ) || defined( __QNXNTO__ ) || defined( __Fuchsia__ ) + dlclose( m_library ); +# elif defined( _WIN32 ) + ::FreeLibrary( m_library ); +# else +# error unsupported platform +# endif + } } - bool operator!=(Device const & rhs ) const + template + T getProcAddress( const char * function ) const VULKAN_HPP_NOEXCEPT { - return m_device != rhs.m_device; +# if defined( __unix__ ) || defined( __APPLE__ ) || defined( __QNXNTO__ ) || defined( __Fuchsia__ ) + return (T)dlsym( m_library, function ); +# elif defined( _WIN32 ) + return ( T )::GetProcAddress( m_library, function ); +# else +# error unsupported platform +# endif } - bool operator<(Device const & rhs ) const + bool success() const VULKAN_HPP_NOEXCEPT { - return m_device < rhs.m_device; + return m_library != nullptr; } -#ifdef VK_USE_PLATFORM_WIN32_KHR -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result acquireFullScreenExclusiveModeEXT( vk::SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const; -#else - template - ResultValueType::type acquireFullScreenExclusiveModeEXT( vk::SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + private: +# if defined( __unix__ ) || defined( __APPLE__ ) || defined( __QNXNTO__ ) || defined( __Fuchsia__ ) + void * m_library; +# elif defined( _WIN32 ) + ::HINSTANCE m_library; +# else +# error unsupported platform +# endif + }; +#endif - template - Result acquireNextImage2KHR( const vk::AcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValue acquireNextImage2KHR( const AcquireNextImageInfoKHR & acquireInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result acquireNextImageKHR( vk::SwapchainKHR swapchain, uint64_t timeout, vk::Semaphore semaphore, vk::Fence fence, uint32_t* pImageIndex, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValue acquireNextImageKHR( vk::SwapchainKHR swapchain, uint64_t timeout, vk::Semaphore semaphore, vk::Fence fence, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result acquirePerformanceConfigurationINTEL( const vk::PerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, vk::PerformanceConfigurationINTEL* pConfiguration, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type acquirePerformanceConfigurationINTEL( const PerformanceConfigurationAcquireInfoINTEL & acquireInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result allocateCommandBuffers( const vk::CommandBufferAllocateInfo* pAllocateInfo, vk::CommandBuffer* pCommandBuffers, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType,Allocator>>::type allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType,Allocator>>::type allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result allocateDescriptorSets( const vk::DescriptorSetAllocateInfo* pAllocateInfo, vk::DescriptorSet* pDescriptorSets, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType,Allocator>>::type allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType,Allocator>>::type allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result allocateMemory( const vk::MemoryAllocateInfo* pAllocateInfo, const vk::AllocationCallbacks* pAllocator, vk::DeviceMemory* pMemory, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result bindAccelerationStructureMemoryNV( uint32_t bindInfoCount, const vk::BindAccelerationStructureMemoryInfoNV* pBindInfos, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type bindAccelerationStructureMemoryNV( ArrayProxy bindInfos, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result bindBufferMemory( vk::Buffer buffer, vk::DeviceMemory memory, vk::DeviceSize memoryOffset, Dispatch const &d = Dispatch() ) const; + using PFN_dummy = void ( * )(); + + class DispatchLoaderDynamic : public DispatchLoaderBase + { + public: + //=== VK_VERSION_1_0 === + PFN_vkCreateInstance vkCreateInstance = 0; + PFN_vkDestroyInstance vkDestroyInstance = 0; + PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices = 0; + PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures = 0; + PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties = 0; + PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties = 0; + PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties = 0; + PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties = 0; + PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties = 0; + PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = 0; + PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = 0; + PFN_vkCreateDevice vkCreateDevice = 0; + PFN_vkDestroyDevice vkDestroyDevice = 0; + PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties = 0; + PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties = 0; + PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties = 0; + PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties = 0; + PFN_vkGetDeviceQueue vkGetDeviceQueue = 0; + PFN_vkQueueSubmit vkQueueSubmit = 0; + PFN_vkQueueWaitIdle vkQueueWaitIdle = 0; + PFN_vkDeviceWaitIdle vkDeviceWaitIdle = 0; + PFN_vkAllocateMemory vkAllocateMemory = 0; + PFN_vkFreeMemory vkFreeMemory = 0; + PFN_vkMapMemory vkMapMemory = 0; + PFN_vkUnmapMemory vkUnmapMemory = 0; + PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges = 0; + PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges = 0; + PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment = 0; + PFN_vkBindBufferMemory vkBindBufferMemory = 0; + PFN_vkBindImageMemory vkBindImageMemory = 0; + PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements = 0; + PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements = 0; + PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements = 0; + PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties = 0; + PFN_vkQueueBindSparse vkQueueBindSparse = 0; + PFN_vkCreateFence vkCreateFence = 0; + PFN_vkDestroyFence vkDestroyFence = 0; + PFN_vkResetFences vkResetFences = 0; + PFN_vkGetFenceStatus vkGetFenceStatus = 0; + PFN_vkWaitForFences vkWaitForFences = 0; + PFN_vkCreateSemaphore vkCreateSemaphore = 0; + PFN_vkDestroySemaphore vkDestroySemaphore = 0; + PFN_vkCreateEvent vkCreateEvent = 0; + PFN_vkDestroyEvent vkDestroyEvent = 0; + PFN_vkGetEventStatus vkGetEventStatus = 0; + PFN_vkSetEvent vkSetEvent = 0; + PFN_vkResetEvent vkResetEvent = 0; + PFN_vkCreateQueryPool vkCreateQueryPool = 0; + PFN_vkDestroyQueryPool vkDestroyQueryPool = 0; + PFN_vkGetQueryPoolResults vkGetQueryPoolResults = 0; + PFN_vkCreateBuffer vkCreateBuffer = 0; + PFN_vkDestroyBuffer vkDestroyBuffer = 0; + PFN_vkCreateBufferView vkCreateBufferView = 0; + PFN_vkDestroyBufferView vkDestroyBufferView = 0; + PFN_vkCreateImage vkCreateImage = 0; + PFN_vkDestroyImage vkDestroyImage = 0; + PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout = 0; + PFN_vkCreateImageView vkCreateImageView = 0; + PFN_vkDestroyImageView vkDestroyImageView = 0; + PFN_vkCreateShaderModule vkCreateShaderModule = 0; + PFN_vkDestroyShaderModule vkDestroyShaderModule = 0; + PFN_vkCreatePipelineCache vkCreatePipelineCache = 0; + PFN_vkDestroyPipelineCache vkDestroyPipelineCache = 0; + PFN_vkGetPipelineCacheData vkGetPipelineCacheData = 0; + PFN_vkMergePipelineCaches vkMergePipelineCaches = 0; + PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines = 0; + PFN_vkCreateComputePipelines vkCreateComputePipelines = 0; + PFN_vkDestroyPipeline vkDestroyPipeline = 0; + PFN_vkCreatePipelineLayout vkCreatePipelineLayout = 0; + PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout = 0; + PFN_vkCreateSampler vkCreateSampler = 0; + PFN_vkDestroySampler vkDestroySampler = 0; + PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout = 0; + PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout = 0; + PFN_vkCreateDescriptorPool vkCreateDescriptorPool = 0; + PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool = 0; + PFN_vkResetDescriptorPool vkResetDescriptorPool = 0; + PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets = 0; + PFN_vkFreeDescriptorSets vkFreeDescriptorSets = 0; + PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets = 0; + PFN_vkCreateFramebuffer vkCreateFramebuffer = 0; + PFN_vkDestroyFramebuffer vkDestroyFramebuffer = 0; + PFN_vkCreateRenderPass vkCreateRenderPass = 0; + PFN_vkDestroyRenderPass vkDestroyRenderPass = 0; + PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity = 0; + PFN_vkCreateCommandPool vkCreateCommandPool = 0; + PFN_vkDestroyCommandPool vkDestroyCommandPool = 0; + PFN_vkResetCommandPool vkResetCommandPool = 0; + PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers = 0; + PFN_vkFreeCommandBuffers vkFreeCommandBuffers = 0; + PFN_vkBeginCommandBuffer vkBeginCommandBuffer = 0; + PFN_vkEndCommandBuffer vkEndCommandBuffer = 0; + PFN_vkResetCommandBuffer vkResetCommandBuffer = 0; + PFN_vkCmdBindPipeline vkCmdBindPipeline = 0; + PFN_vkCmdSetViewport vkCmdSetViewport = 0; + PFN_vkCmdSetScissor vkCmdSetScissor = 0; + PFN_vkCmdSetLineWidth vkCmdSetLineWidth = 0; + PFN_vkCmdSetDepthBias vkCmdSetDepthBias = 0; + PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants = 0; + PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds = 0; + PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask = 0; + PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask = 0; + PFN_vkCmdSetStencilReference vkCmdSetStencilReference = 0; + PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets = 0; + PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer = 0; + PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers = 0; + PFN_vkCmdDraw vkCmdDraw = 0; + PFN_vkCmdDrawIndexed vkCmdDrawIndexed = 0; + PFN_vkCmdDrawIndirect vkCmdDrawIndirect = 0; + PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect = 0; + PFN_vkCmdDispatch vkCmdDispatch = 0; + PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect = 0; + PFN_vkCmdCopyBuffer vkCmdCopyBuffer = 0; + PFN_vkCmdCopyImage vkCmdCopyImage = 0; + PFN_vkCmdBlitImage vkCmdBlitImage = 0; + PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage = 0; + PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer = 0; + PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer = 0; + PFN_vkCmdFillBuffer vkCmdFillBuffer = 0; + PFN_vkCmdClearColorImage vkCmdClearColorImage = 0; + PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage = 0; + PFN_vkCmdClearAttachments vkCmdClearAttachments = 0; + PFN_vkCmdResolveImage vkCmdResolveImage = 0; + PFN_vkCmdSetEvent vkCmdSetEvent = 0; + PFN_vkCmdResetEvent vkCmdResetEvent = 0; + PFN_vkCmdWaitEvents vkCmdWaitEvents = 0; + PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier = 0; + PFN_vkCmdBeginQuery vkCmdBeginQuery = 0; + PFN_vkCmdEndQuery vkCmdEndQuery = 0; + PFN_vkCmdResetQueryPool vkCmdResetQueryPool = 0; + PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp = 0; + PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults = 0; + PFN_vkCmdPushConstants vkCmdPushConstants = 0; + PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass = 0; + PFN_vkCmdNextSubpass vkCmdNextSubpass = 0; + PFN_vkCmdEndRenderPass vkCmdEndRenderPass = 0; + PFN_vkCmdExecuteCommands vkCmdExecuteCommands = 0; + + //=== VK_VERSION_1_1 === + PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion = 0; + PFN_vkBindBufferMemory2 vkBindBufferMemory2 = 0; + PFN_vkBindImageMemory2 vkBindImageMemory2 = 0; + PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures = 0; + PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask = 0; + PFN_vkCmdDispatchBase vkCmdDispatchBase = 0; + PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups = 0; + PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 = 0; + PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 = 0; + PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 = 0; + PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 = 0; + PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 = 0; + PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 = 0; + PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 = 0; + PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 = 0; + PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 = 0; + PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 = 0; + PFN_vkTrimCommandPool vkTrimCommandPool = 0; + PFN_vkGetDeviceQueue2 vkGetDeviceQueue2 = 0; + PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion = 0; + PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion = 0; + PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate = 0; + PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate = 0; + PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate = 0; + PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties = 0; + PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties = 0; + PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties = 0; + PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport = 0; + + //=== VK_VERSION_1_2 === + PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount = 0; + PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount = 0; + PFN_vkCreateRenderPass2 vkCreateRenderPass2 = 0; + PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2 = 0; + PFN_vkCmdNextSubpass2 vkCmdNextSubpass2 = 0; + PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2 = 0; + PFN_vkResetQueryPool vkResetQueryPool = 0; + PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue = 0; + PFN_vkWaitSemaphores vkWaitSemaphores = 0; + PFN_vkSignalSemaphore vkSignalSemaphore = 0; + PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress = 0; + PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress = 0; + PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress = 0; + + //=== VK_VERSION_1_3 === + PFN_vkGetPhysicalDeviceToolProperties vkGetPhysicalDeviceToolProperties = 0; + PFN_vkCreatePrivateDataSlot vkCreatePrivateDataSlot = 0; + PFN_vkDestroyPrivateDataSlot vkDestroyPrivateDataSlot = 0; + PFN_vkSetPrivateData vkSetPrivateData = 0; + PFN_vkGetPrivateData vkGetPrivateData = 0; + PFN_vkCmdSetEvent2 vkCmdSetEvent2 = 0; + PFN_vkCmdResetEvent2 vkCmdResetEvent2 = 0; + PFN_vkCmdWaitEvents2 vkCmdWaitEvents2 = 0; + PFN_vkCmdPipelineBarrier2 vkCmdPipelineBarrier2 = 0; + PFN_vkCmdWriteTimestamp2 vkCmdWriteTimestamp2 = 0; + PFN_vkQueueSubmit2 vkQueueSubmit2 = 0; + PFN_vkCmdCopyBuffer2 vkCmdCopyBuffer2 = 0; + PFN_vkCmdCopyImage2 vkCmdCopyImage2 = 0; + PFN_vkCmdCopyBufferToImage2 vkCmdCopyBufferToImage2 = 0; + PFN_vkCmdCopyImageToBuffer2 vkCmdCopyImageToBuffer2 = 0; + PFN_vkCmdBlitImage2 vkCmdBlitImage2 = 0; + PFN_vkCmdResolveImage2 vkCmdResolveImage2 = 0; + PFN_vkCmdBeginRendering vkCmdBeginRendering = 0; + PFN_vkCmdEndRendering vkCmdEndRendering = 0; + PFN_vkCmdSetCullMode vkCmdSetCullMode = 0; + PFN_vkCmdSetFrontFace vkCmdSetFrontFace = 0; + PFN_vkCmdSetPrimitiveTopology vkCmdSetPrimitiveTopology = 0; + PFN_vkCmdSetViewportWithCount vkCmdSetViewportWithCount = 0; + PFN_vkCmdSetScissorWithCount vkCmdSetScissorWithCount = 0; + PFN_vkCmdBindVertexBuffers2 vkCmdBindVertexBuffers2 = 0; + PFN_vkCmdSetDepthTestEnable vkCmdSetDepthTestEnable = 0; + PFN_vkCmdSetDepthWriteEnable vkCmdSetDepthWriteEnable = 0; + PFN_vkCmdSetDepthCompareOp vkCmdSetDepthCompareOp = 0; + PFN_vkCmdSetDepthBoundsTestEnable vkCmdSetDepthBoundsTestEnable = 0; + PFN_vkCmdSetStencilTestEnable vkCmdSetStencilTestEnable = 0; + PFN_vkCmdSetStencilOp vkCmdSetStencilOp = 0; + PFN_vkCmdSetRasterizerDiscardEnable vkCmdSetRasterizerDiscardEnable = 0; + PFN_vkCmdSetDepthBiasEnable vkCmdSetDepthBiasEnable = 0; + PFN_vkCmdSetPrimitiveRestartEnable vkCmdSetPrimitiveRestartEnable = 0; + PFN_vkGetDeviceBufferMemoryRequirements vkGetDeviceBufferMemoryRequirements = 0; + PFN_vkGetDeviceImageMemoryRequirements vkGetDeviceImageMemoryRequirements = 0; + PFN_vkGetDeviceImageSparseMemoryRequirements vkGetDeviceImageSparseMemoryRequirements = 0; + + //=== VK_KHR_surface === + PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR = 0; + PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR = 0; + PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 0; + PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR = 0; + PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR = 0; + + //=== VK_KHR_swapchain === + PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR = 0; + PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR = 0; + PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR = 0; + PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR = 0; + PFN_vkQueuePresentKHR vkQueuePresentKHR = 0; + PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR = 0; + PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR = 0; + PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR = 0; + PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR = 0; + + //=== VK_KHR_display === + PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR = 0; + PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 0; + PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR = 0; + PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR = 0; + PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR = 0; + PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR = 0; + PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR = 0; + + //=== VK_KHR_display_swapchain === + PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR = 0; + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR = 0; + PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR = 0; #else - template - ResultValueType::type bindBufferMemory( vk::Buffer buffer, vk::DeviceMemory memory, vk::DeviceSize memoryOffset, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result bindBufferMemory2( uint32_t bindInfoCount, const vk::BindBufferMemoryInfo* pBindInfos, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type bindBufferMemory2( ArrayProxy bindInfos, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result bindBufferMemory2KHR( uint32_t bindInfoCount, const vk::BindBufferMemoryInfo* pBindInfos, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type bindBufferMemory2KHR( ArrayProxy bindInfos, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result bindImageMemory( vk::Image image, vk::DeviceMemory memory, vk::DeviceSize memoryOffset, Dispatch const &d = Dispatch() ) const; + PFN_dummy vkCreateXlibSurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceXlibPresentationSupportKHR_placeholder = 0; +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR = 0; + PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR = 0; #else - template - ResultValueType::type bindImageMemory( vk::Image image, vk::DeviceMemory memory, vk::DeviceSize memoryOffset, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result bindImageMemory2( uint32_t bindInfoCount, const vk::BindImageMemoryInfo* pBindInfos, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type bindImageMemory2( ArrayProxy bindInfos, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result bindImageMemory2KHR( uint32_t bindInfoCount, const vk::BindImageMemoryInfo* pBindInfos, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type bindImageMemory2KHR( ArrayProxy bindInfos, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result compileDeferredNV( vk::Pipeline pipeline, uint32_t shader, Dispatch const &d = Dispatch() ) const; + PFN_dummy vkCreateXcbSurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceXcbPresentationSupportKHR_placeholder = 0; +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR = 0; + PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR = 0; #else - template - ResultValueType::type compileDeferredNV( vk::Pipeline pipeline, uint32_t shader, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createAccelerationStructureNV( const vk::AccelerationStructureCreateInfoNV* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::AccelerationStructureNV* pAccelerationStructure, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createAccelerationStructureNV( const AccelerationStructureCreateInfoNV & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createAccelerationStructureNVUnique( const AccelerationStructureCreateInfoNV & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createBuffer( const vk::BufferCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Buffer* pBuffer, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createBuffer( const BufferCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createBufferUnique( const BufferCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createBufferView( const vk::BufferViewCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::BufferView* pView, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createBufferView( const BufferViewCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createCommandPool( const vk::CommandPoolCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::CommandPool* pCommandPool, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createComputePipelines( vk::PipelineCache pipelineCache, uint32_t createInfoCount, const vk::ComputePipelineCreateInfo* pCreateInfos, const vk::AllocationCallbacks* pAllocator, vk::Pipeline* pPipelines, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type createComputePipelines( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type createComputePipelines( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const; - template - ResultValueType::type createComputePipeline( vk::PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType,Allocator>>::type createComputePipelinesUnique( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType,Allocator>>::type createComputePipelinesUnique( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const; - template - typename ResultValueType>::type createComputePipelineUnique( vk::PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createDescriptorPool( const vk::DescriptorPoolCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::DescriptorPool* pDescriptorPool, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createDescriptorSetLayout( const vk::DescriptorSetLayoutCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::DescriptorSetLayout* pSetLayout, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createDescriptorUpdateTemplate( const vk::DescriptorUpdateTemplateCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createDescriptorUpdateTemplate( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createDescriptorUpdateTemplateUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createDescriptorUpdateTemplateKHR( const vk::DescriptorUpdateTemplateCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createEvent( const vk::EventCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Event* pEvent, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createEvent( const EventCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createEventUnique( const EventCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createFence( const vk::FenceCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Fence* pFence, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createFence( const FenceCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createFenceUnique( const FenceCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createFramebuffer( const vk::FramebufferCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Framebuffer* pFramebuffer, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createGraphicsPipelines( vk::PipelineCache pipelineCache, uint32_t createInfoCount, const vk::GraphicsPipelineCreateInfo* pCreateInfos, const vk::AllocationCallbacks* pAllocator, vk::Pipeline* pPipelines, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type createGraphicsPipelines( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type createGraphicsPipelines( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const; - template - ResultValueType::type createGraphicsPipeline( vk::PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType,Allocator>>::type createGraphicsPipelinesUnique( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType,Allocator>>::type createGraphicsPipelinesUnique( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const; - template - typename ResultValueType>::type createGraphicsPipelineUnique( vk::PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createImage( const vk::ImageCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Image* pImage, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createImage( const ImageCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createImageUnique( const ImageCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createImageView( const vk::ImageViewCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::ImageView* pView, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createImageView( const ImageViewCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createIndirectCommandsLayoutNVX( const vk::IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::IndirectCommandsLayoutNVX* pIndirectCommandsLayout, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createObjectTableNVX( const vk::ObjectTableCreateInfoNVX* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::ObjectTableNVX* pObjectTable, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createPipelineCache( const vk::PipelineCacheCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::PipelineCache* pPipelineCache, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createPipelineLayout( const vk::PipelineLayoutCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::PipelineLayout* pPipelineLayout, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createQueryPool( const vk::QueryPoolCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::QueryPool* pQueryPool, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createRayTracingPipelinesNV( vk::PipelineCache pipelineCache, uint32_t createInfoCount, const vk::RayTracingPipelineCreateInfoNV* pCreateInfos, const vk::AllocationCallbacks* pAllocator, vk::Pipeline* pPipelines, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type createRayTracingPipelinesNV( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type createRayTracingPipelinesNV( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const; - template - ResultValueType::type createRayTracingPipelineNV( vk::PipelineCache pipelineCache, const RayTracingPipelineCreateInfoNV & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType,Allocator>>::type createRayTracingPipelinesNVUnique( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType,Allocator>>::type createRayTracingPipelinesNVUnique( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const; - template - typename ResultValueType>::type createRayTracingPipelineNVUnique( vk::PipelineCache pipelineCache, const RayTracingPipelineCreateInfoNV & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createRenderPass( const vk::RenderPassCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::RenderPass* pRenderPass, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createRenderPass2KHR( const vk::RenderPassCreateInfo2KHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::RenderPass* pRenderPass, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createRenderPass2KHR( const RenderPassCreateInfo2KHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createRenderPass2KHRUnique( const RenderPassCreateInfo2KHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createSampler( const vk::SamplerCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Sampler* pSampler, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createSampler( const SamplerCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createSamplerUnique( const SamplerCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createSamplerYcbcrConversion( const vk::SamplerYcbcrConversionCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SamplerYcbcrConversion* pYcbcrConversion, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createSamplerYcbcrConversion( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createSamplerYcbcrConversionUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createSamplerYcbcrConversionKHR( const vk::SamplerYcbcrConversionCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SamplerYcbcrConversion* pYcbcrConversion, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createSemaphore( const vk::SemaphoreCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Semaphore* pSemaphore, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createShaderModule( const vk::ShaderModuleCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::ShaderModule* pShaderModule, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createSharedSwapchainsKHR( uint32_t swapchainCount, const vk::SwapchainCreateInfoKHR* pCreateInfos, const vk::AllocationCallbacks* pAllocator, vk::SwapchainKHR* pSwapchains, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type createSharedSwapchainsKHR( ArrayProxy createInfos, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type createSharedSwapchainsKHR( ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const; - template - ResultValueType::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType,Allocator>>::type createSharedSwapchainsKHRUnique( ArrayProxy createInfos, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType,Allocator>>::type createSharedSwapchainsKHRUnique( ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const; - template - typename ResultValueType>::type createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createSwapchainKHR( const vk::SwapchainCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SwapchainKHR* pSwapchain, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createValidationCacheEXT( const vk::ValidationCacheCreateInfoEXT* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::ValidationCacheEXT* pValidationCache, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result debugMarkerSetObjectNameEXT( const vk::DebugMarkerObjectNameInfoEXT* pNameInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result debugMarkerSetObjectTagEXT( const vk::DebugMarkerObjectTagInfoEXT* pTagInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyAccelerationStructureNV( vk::AccelerationStructureNV accelerationStructure, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyAccelerationStructureNV( vk::AccelerationStructureNV accelerationStructure, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::AccelerationStructureNV accelerationStructure, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::AccelerationStructureNV accelerationStructure, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyBuffer( vk::Buffer buffer, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyBuffer( vk::Buffer buffer, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::Buffer buffer, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::Buffer buffer, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyBufferView( vk::BufferView bufferView, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyBufferView( vk::BufferView bufferView, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::BufferView bufferView, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::BufferView bufferView, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyCommandPool( vk::CommandPool commandPool, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyCommandPool( vk::CommandPool commandPool, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::CommandPool commandPool, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::CommandPool commandPool, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyDescriptorPool( vk::DescriptorPool descriptorPool, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyDescriptorPool( vk::DescriptorPool descriptorPool, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::DescriptorPool descriptorPool, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::DescriptorPool descriptorPool, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyDescriptorSetLayout( vk::DescriptorSetLayout descriptorSetLayout, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyDescriptorSetLayout( vk::DescriptorSetLayout descriptorSetLayout, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::DescriptorSetLayout descriptorSetLayout, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::DescriptorSetLayout descriptorSetLayout, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyDescriptorUpdateTemplate( vk::DescriptorUpdateTemplate descriptorUpdateTemplate, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyDescriptorUpdateTemplate( vk::DescriptorUpdateTemplate descriptorUpdateTemplate, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::DescriptorUpdateTemplate descriptorUpdateTemplate, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::DescriptorUpdateTemplate descriptorUpdateTemplate, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyDescriptorUpdateTemplateKHR( vk::DescriptorUpdateTemplate descriptorUpdateTemplate, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyDescriptorUpdateTemplateKHR( vk::DescriptorUpdateTemplate descriptorUpdateTemplate, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyEvent( vk::Event event, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyEvent( vk::Event event, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::Event event, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::Event event, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyFence( vk::Fence fence, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyFence( vk::Fence fence, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::Fence fence, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::Fence fence, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyFramebuffer( vk::Framebuffer framebuffer, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyFramebuffer( vk::Framebuffer framebuffer, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::Framebuffer framebuffer, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::Framebuffer framebuffer, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyImage( vk::Image image, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyImage( vk::Image image, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::Image image, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::Image image, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyImageView( vk::ImageView imageView, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyImageView( vk::ImageView imageView, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::ImageView imageView, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::ImageView imageView, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyIndirectCommandsLayoutNVX( vk::IndirectCommandsLayoutNVX indirectCommandsLayout, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyIndirectCommandsLayoutNVX( vk::IndirectCommandsLayoutNVX indirectCommandsLayout, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::IndirectCommandsLayoutNVX indirectCommandsLayout, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::IndirectCommandsLayoutNVX indirectCommandsLayout, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyObjectTableNVX( vk::ObjectTableNVX objectTable, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyObjectTableNVX( vk::ObjectTableNVX objectTable, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::ObjectTableNVX objectTable, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::ObjectTableNVX objectTable, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyPipeline( vk::Pipeline pipeline, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyPipeline( vk::Pipeline pipeline, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::Pipeline pipeline, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::Pipeline pipeline, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyPipelineCache( vk::PipelineCache pipelineCache, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyPipelineCache( vk::PipelineCache pipelineCache, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::PipelineCache pipelineCache, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::PipelineCache pipelineCache, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyPipelineLayout( vk::PipelineLayout pipelineLayout, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyPipelineLayout( vk::PipelineLayout pipelineLayout, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::PipelineLayout pipelineLayout, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::PipelineLayout pipelineLayout, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyQueryPool( vk::QueryPool queryPool, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyQueryPool( vk::QueryPool queryPool, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::QueryPool queryPool, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::QueryPool queryPool, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyRenderPass( vk::RenderPass renderPass, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyRenderPass( vk::RenderPass renderPass, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::RenderPass renderPass, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::RenderPass renderPass, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroySampler( vk::Sampler sampler, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroySampler( vk::Sampler sampler, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::Sampler sampler, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::Sampler sampler, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroySamplerYcbcrConversion( vk::SamplerYcbcrConversion ycbcrConversion, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroySamplerYcbcrConversion( vk::SamplerYcbcrConversion ycbcrConversion, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::SamplerYcbcrConversion ycbcrConversion, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::SamplerYcbcrConversion ycbcrConversion, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroySamplerYcbcrConversionKHR( vk::SamplerYcbcrConversion ycbcrConversion, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroySamplerYcbcrConversionKHR( vk::SamplerYcbcrConversion ycbcrConversion, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroySemaphore( vk::Semaphore semaphore, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroySemaphore( vk::Semaphore semaphore, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::Semaphore semaphore, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::Semaphore semaphore, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyShaderModule( vk::ShaderModule shaderModule, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyShaderModule( vk::ShaderModule shaderModule, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::ShaderModule shaderModule, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::ShaderModule shaderModule, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroySwapchainKHR( vk::SwapchainKHR swapchain, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroySwapchainKHR( vk::SwapchainKHR swapchain, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::SwapchainKHR swapchain, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::SwapchainKHR swapchain, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyValidationCacheEXT( vk::ValidationCacheEXT validationCache, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyValidationCacheEXT( vk::ValidationCacheEXT validationCache, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::ValidationCacheEXT validationCache, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::ValidationCacheEXT validationCache, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result waitIdle(Dispatch const &d = Dispatch() ) const; + PFN_dummy vkCreateWaylandSurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceWaylandPresentationSupportKHR_placeholder = 0; +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR = 0; #else - template - ResultValueType::type waitIdle(Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result displayPowerControlEXT( vk::DisplayKHR display, const vk::DisplayPowerInfoEXT* pDisplayPowerInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type displayPowerControlEXT( vk::DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const vk::MappedMemoryRange* pMemoryRanges, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type flushMappedMemoryRanges( ArrayProxy memoryRanges, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void freeCommandBuffers( vk::CommandPool commandPool, uint32_t commandBufferCount, const vk::CommandBuffer* pCommandBuffers, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void freeCommandBuffers( vk::CommandPool commandPool, ArrayProxy commandBuffers, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void free( vk::CommandPool commandPool, uint32_t commandBufferCount, const vk::CommandBuffer* pCommandBuffers, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void free( vk::CommandPool commandPool, ArrayProxy commandBuffers, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result freeDescriptorSets( vk::DescriptorPool descriptorPool, uint32_t descriptorSetCount, const vk::DescriptorSet* pDescriptorSets, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type freeDescriptorSets( vk::DescriptorPool descriptorPool, ArrayProxy descriptorSets, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result free( vk::DescriptorPool descriptorPool, uint32_t descriptorSetCount, const vk::DescriptorSet* pDescriptorSets, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type free( vk::DescriptorPool descriptorPool, ArrayProxy descriptorSets, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void freeMemory( vk::DeviceMemory memory, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void freeMemory( vk::DeviceMemory memory, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void free( vk::DeviceMemory memory, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void free( vk::DeviceMemory memory, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getAccelerationStructureHandleNV( vk::AccelerationStructureNV accelerationStructure, size_t dataSize, void* pData, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getAccelerationStructureHandleNV( vk::AccelerationStructureNV accelerationStructure, ArrayProxy data, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getAccelerationStructureMemoryRequirementsNV( const vk::AccelerationStructureMemoryRequirementsInfoNV* pInfo, vk::MemoryRequirements2KHR* pMemoryRequirements, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::MemoryRequirements2KHR getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV & info, Dispatch const &d = Dispatch() ) const; - template - StructureChain getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV & info, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template - Result getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer* buffer, vk::AndroidHardwareBufferPropertiesANDROID* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const &d = Dispatch() ) const; - template - typename ResultValueType>::type getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + PFN_dummy vkCreateAndroidSurfaceKHR_placeholder = 0; #endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - template - DeviceAddress getBufferAddressEXT( const vk::BufferDeviceAddressInfoEXT* pInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - DeviceAddress getBufferAddressEXT( const BufferDeviceAddressInfoEXT & info, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getBufferMemoryRequirements( vk::Buffer buffer, vk::MemoryRequirements* pMemoryRequirements, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::MemoryRequirements getBufferMemoryRequirements( vk::Buffer buffer, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getBufferMemoryRequirements2( const vk::BufferMemoryRequirementsInfo2* pInfo, vk::MemoryRequirements2* pMemoryRequirements, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::MemoryRequirements2 getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const; - template - StructureChain getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getBufferMemoryRequirements2KHR( const vk::BufferMemoryRequirementsInfo2* pInfo, vk::MemoryRequirements2* pMemoryRequirements, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::MemoryRequirements2 getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const; - template - StructureChain getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getCalibratedTimestampsEXT( uint32_t timestampCount, const vk::CalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getCalibratedTimestampsEXT( ArrayProxy timestampInfos, ArrayProxy timestamps, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getDescriptorSetLayoutSupport( const vk::DescriptorSetLayoutCreateInfo* pCreateInfo, vk::DescriptorSetLayoutSupport* pSupport, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::DescriptorSetLayoutSupport getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d = Dispatch() ) const; - template - StructureChain getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getDescriptorSetLayoutSupportKHR( const vk::DescriptorSetLayoutCreateInfo* pCreateInfo, vk::DescriptorSetLayoutSupport* pSupport, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::DescriptorSetLayoutSupport getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d = Dispatch() ) const; - template - StructureChain getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, vk::PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::PeerMemoryFeatureFlags getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, vk::PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::PeerMemoryFeatureFlags getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getGroupPresentCapabilitiesKHR( vk::DeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getGroupPresentCapabilitiesKHR(Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - Result getGroupSurfacePresentModes2EXT( const vk::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, vk::DeviceGroupPresentModeFlagsKHR* pModes, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getGroupSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - template - Result getGroupSurfacePresentModesKHR( vk::SurfaceKHR surface, vk::DeviceGroupPresentModeFlagsKHR* pModes, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getGroupSurfacePresentModesKHR( vk::SurfaceKHR surface, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getMemoryCommitment( vk::DeviceMemory memory, vk::DeviceSize* pCommittedMemoryInBytes, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::DeviceSize getMemoryCommitment( vk::DeviceMemory memory, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - PFN_vkVoidFunction getProcAddr( const char* pName, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - PFN_vkVoidFunction getProcAddr( const std::string & name, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, vk::Queue* pQueue, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getQueue2( const vk::DeviceQueueInfo2* pQueueInfo, vk::Queue* pQueue, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::Queue getQueue2( const DeviceQueueInfo2 & queueInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getEventStatus( vk::Event event, Dispatch const &d = Dispatch() ) const; - - template - Result getFenceFdKHR( const vk::FenceGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getFenceStatus( vk::Fence fence, Dispatch const &d = Dispatch() ) const; - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - Result getFenceWin32HandleKHR( const vk::FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR = 0; + PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR = 0; +#else + PFN_dummy vkCreateWin32SurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceWin32PresentationSupportKHR_placeholder = 0; #endif /*VK_USE_PLATFORM_WIN32_KHR*/ - template - Result getImageDrmFormatModifierPropertiesEXT( vk::Image image, vk::ImageDrmFormatModifierPropertiesEXT* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getImageDrmFormatModifierPropertiesEXT( vk::Image image, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getImageMemoryRequirements( vk::Image image, vk::MemoryRequirements* pMemoryRequirements, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::MemoryRequirements getImageMemoryRequirements( vk::Image image, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getImageMemoryRequirements2( const vk::ImageMemoryRequirementsInfo2* pInfo, vk::MemoryRequirements2* pMemoryRequirements, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::MemoryRequirements2 getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const; - template - StructureChain getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getImageMemoryRequirements2KHR( const vk::ImageMemoryRequirementsInfo2* pInfo, vk::MemoryRequirements2* pMemoryRequirements, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::MemoryRequirements2 getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const; - template - StructureChain getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getImageSparseMemoryRequirements( vk::Image image, uint32_t* pSparseMemoryRequirementCount, vk::SparseImageMemoryRequirements* pSparseMemoryRequirements, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - std::vector getImageSparseMemoryRequirements( vk::Image image, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - std::vector getImageSparseMemoryRequirements( vk::Image image, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getImageSparseMemoryRequirements2( const vk::ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, vk::SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - std::vector getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - std::vector getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getImageSparseMemoryRequirements2KHR( const vk::ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, vk::SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - std::vector getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - std::vector getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getImageSubresourceLayout( vk::Image image, const vk::ImageSubresource* pSubresource, vk::SubresourceLayout* pLayout, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::SubresourceLayout getImageSubresourceLayout( vk::Image image, const ImageSubresource & subresource, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - uint32_t getImageViewHandleNVX( const vk::ImageViewHandleInfoNVX* pInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - uint32_t getImageViewHandleNVX( const ImageViewHandleInfoNVX & info, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template - Result getMemoryAndroidHardwareBufferANDROID( const vk::MemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID & info, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + //=== VK_EXT_debug_report === + PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT = 0; + PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT = 0; + PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT = 0; - template - Result getMemoryFdKHR( const vk::MemoryGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getMemoryFdPropertiesKHR( vk::ExternalMemoryHandleTypeFlagBits handleType, int fd, vk::MemoryFdPropertiesKHR* pMemoryFdProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getMemoryFdPropertiesKHR( vk::ExternalMemoryHandleTypeFlagBits handleType, int fd, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getMemoryHostPointerPropertiesEXT( vk::ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, vk::MemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getMemoryHostPointerPropertiesEXT( vk::ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - Result getMemoryWin32HandleKHR( const vk::MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + //=== VK_EXT_debug_marker === + PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT = 0; + PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT = 0; + PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT = 0; + PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT = 0; + PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT = 0; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR = 0; + PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR = 0; + PFN_vkCreateVideoSessionKHR vkCreateVideoSessionKHR = 0; + PFN_vkDestroyVideoSessionKHR vkDestroyVideoSessionKHR = 0; + PFN_vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR = 0; + PFN_vkBindVideoSessionMemoryKHR vkBindVideoSessionMemoryKHR = 0; + PFN_vkCreateVideoSessionParametersKHR vkCreateVideoSessionParametersKHR = 0; + PFN_vkUpdateVideoSessionParametersKHR vkUpdateVideoSessionParametersKHR = 0; + PFN_vkDestroyVideoSessionParametersKHR vkDestroyVideoSessionParametersKHR = 0; + PFN_vkCmdBeginVideoCodingKHR vkCmdBeginVideoCodingKHR = 0; + PFN_vkCmdEndVideoCodingKHR vkCmdEndVideoCodingKHR = 0; + PFN_vkCmdControlVideoCodingKHR vkCmdControlVideoCodingKHR = 0; +#else + PFN_dummy vkGetPhysicalDeviceVideoCapabilitiesKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceVideoFormatPropertiesKHR_placeholder = 0; + PFN_dummy vkCreateVideoSessionKHR_placeholder = 0; + PFN_dummy vkDestroyVideoSessionKHR_placeholder = 0; + PFN_dummy vkGetVideoSessionMemoryRequirementsKHR_placeholder = 0; + PFN_dummy vkBindVideoSessionMemoryKHR_placeholder = 0; + PFN_dummy vkCreateVideoSessionParametersKHR_placeholder = 0; + PFN_dummy vkUpdateVideoSessionParametersKHR_placeholder = 0; + PFN_dummy vkDestroyVideoSessionParametersKHR_placeholder = 0; + PFN_dummy vkCmdBeginVideoCodingKHR_placeholder = 0; + PFN_dummy vkCmdEndVideoCodingKHR_placeholder = 0; + PFN_dummy vkCmdControlVideoCodingKHR_placeholder = 0; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_decode_queue === + PFN_vkCmdDecodeVideoKHR vkCmdDecodeVideoKHR = 0; +#else + PFN_dummy vkCmdDecodeVideoKHR_placeholder = 0; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - Result getMemoryWin32HandleNV( vk::DeviceMemory memory, vk::ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getMemoryWin32HandleNV( vk::DeviceMemory memory, vk::ExternalMemoryHandleTypeFlagsNV handleType, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + //=== VK_EXT_transform_feedback === + PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT = 0; + PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT = 0; + PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT = 0; + PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT = 0; + PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT = 0; + PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT = 0; + + //=== VK_NVX_binary_import === + PFN_vkCreateCuModuleNVX vkCreateCuModuleNVX = 0; + PFN_vkCreateCuFunctionNVX vkCreateCuFunctionNVX = 0; + PFN_vkDestroyCuModuleNVX vkDestroyCuModuleNVX = 0; + PFN_vkDestroyCuFunctionNVX vkDestroyCuFunctionNVX = 0; + PFN_vkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVX = 0; + + //=== VK_NVX_image_view_handle === + PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX = 0; + PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX = 0; + + //=== VK_AMD_draw_indirect_count === + PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD = 0; + PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - Result getMemoryWin32HandlePropertiesKHR( vk::ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, vk::MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getMemoryWin32HandlePropertiesKHR( vk::ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + //=== VK_AMD_shader_info === + PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD = 0; - template - Result getPastPresentationTimingGOOGLE( vk::SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, vk::PastPresentationTimingGOOGLE* pPresentationTimings, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getPastPresentationTimingGOOGLE( vk::SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getPastPresentationTimingGOOGLE( vk::SwapchainKHR swapchain, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getPerformanceParameterINTEL( vk::PerformanceParameterTypeINTEL parameter, vk::PerformanceValueINTEL* pValue, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getPerformanceParameterINTEL( vk::PerformanceParameterTypeINTEL parameter, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getPipelineCacheData( vk::PipelineCache pipelineCache, size_t* pDataSize, void* pData, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getPipelineCacheData( vk::PipelineCache pipelineCache, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getPipelineCacheData( vk::PipelineCache pipelineCache, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getPipelineExecutableInternalRepresentationsKHR( const vk::PipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, vk::PipelineExecutableInternalRepresentationKHR* pInternalRepresentations, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getPipelineExecutableInternalRepresentationsKHR( const PipelineExecutableInfoKHR & executableInfo, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getPipelineExecutableInternalRepresentationsKHR( const PipelineExecutableInfoKHR & executableInfo, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getPipelineExecutablePropertiesKHR( const vk::PipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, vk::PipelineExecutablePropertiesKHR* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getPipelineExecutablePropertiesKHR( const PipelineInfoKHR & pipelineInfo, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getPipelineExecutablePropertiesKHR( const PipelineInfoKHR & pipelineInfo, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getPipelineExecutableStatisticsKHR( const vk::PipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, vk::PipelineExecutableStatisticKHR* pStatistics, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getPipelineExecutableStatisticsKHR( const PipelineExecutableInfoKHR & executableInfo, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getPipelineExecutableStatisticsKHR( const PipelineExecutableInfoKHR & executableInfo, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getQueryPoolResults( vk::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, vk::DeviceSize stride, vk::QueryResultFlags flags, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result getQueryPoolResults( vk::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy data, vk::DeviceSize stride, vk::QueryResultFlags flags, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getRayTracingShaderGroupHandlesNV( vk::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getRayTracingShaderGroupHandlesNV( vk::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, ArrayProxy data, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getRefreshCycleDurationGOOGLE( vk::SwapchainKHR swapchain, vk::RefreshCycleDurationGOOGLE* pDisplayTimingProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getRefreshCycleDurationGOOGLE( vk::SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getRenderAreaGranularity( vk::RenderPass renderPass, vk::Extent2D* pGranularity, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::Extent2D getRenderAreaGranularity( vk::RenderPass renderPass, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getSemaphoreFdKHR( const vk::SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - Result getSemaphoreWin32HandleKHR( const vk::SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + //=== VK_KHR_dynamic_rendering === + PFN_vkCmdBeginRenderingKHR vkCmdBeginRenderingKHR = 0; + PFN_vkCmdEndRenderingKHR vkCmdEndRenderingKHR = 0; - template - Result getShaderInfoAMD( vk::Pipeline pipeline, vk::ShaderStageFlagBits shaderStage, vk::ShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getShaderInfoAMD( vk::Pipeline pipeline, vk::ShaderStageFlagBits shaderStage, vk::ShaderInfoTypeAMD infoType, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getShaderInfoAMD( vk::Pipeline pipeline, vk::ShaderStageFlagBits shaderStage, vk::ShaderInfoTypeAMD infoType, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getSwapchainCounterEXT( vk::SwapchainKHR swapchain, vk::SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getSwapchainCounterEXT( vk::SwapchainKHR swapchain, vk::SurfaceCounterFlagBitsEXT counter, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getSwapchainImagesKHR( vk::SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, vk::Image* pSwapchainImages, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getSwapchainImagesKHR( vk::SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getSwapchainImagesKHR( vk::SwapchainKHR swapchain, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getSwapchainStatusKHR( vk::SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const; - - template - Result getValidationCacheDataEXT( vk::ValidationCacheEXT validationCache, size_t* pDataSize, void* pData, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getValidationCacheDataEXT( vk::ValidationCacheEXT validationCache, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getValidationCacheDataEXT( vk::ValidationCacheEXT validationCache, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result importFenceFdKHR( const vk::ImportFenceFdInfoKHR* pImportFenceFdInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - Result importFenceWin32HandleKHR( const vk::ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP = 0; +#else + PFN_dummy vkCreateStreamDescriptorSurfaceGGP_placeholder = 0; +#endif /*VK_USE_PLATFORM_GGP*/ - template - Result importSemaphoreFdKHR( const vk::ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - Result importSemaphoreWin32HandleKHR( const vk::ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + //=== VK_NV_external_memory_capabilities === + PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 0; - template - Result initializePerformanceApiINTEL( const vk::InitializePerformanceApiInfoINTEL* pInitializeInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type initializePerformanceApiINTEL( const InitializePerformanceApiInfoINTEL & initializeInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const vk::MappedMemoryRange* pMemoryRanges, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type invalidateMappedMemoryRanges( ArrayProxy memoryRanges, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result mapMemory( vk::DeviceMemory memory, vk::DeviceSize offset, vk::DeviceSize size, vk::MemoryMapFlags flags, void** ppData, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type mapMemory( vk::DeviceMemory memory, vk::DeviceSize offset, vk::DeviceSize size, vk::MemoryMapFlags flags = MemoryMapFlags(), Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result mergePipelineCaches( vk::PipelineCache dstCache, uint32_t srcCacheCount, const vk::PipelineCache* pSrcCaches, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type mergePipelineCaches( vk::PipelineCache dstCache, ArrayProxy srcCaches, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result mergeValidationCachesEXT( vk::ValidationCacheEXT dstCache, uint32_t srcCacheCount, const vk::ValidationCacheEXT* pSrcCaches, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type mergeValidationCachesEXT( vk::ValidationCacheEXT dstCache, ArrayProxy srcCaches, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result registerEventEXT( const vk::DeviceEventInfoEXT* pDeviceEventInfo, const vk::AllocationCallbacks* pAllocator, vk::Fence* pFence, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result registerDisplayEventEXT( vk::DisplayKHR display, const vk::DisplayEventInfoEXT* pDisplayEventInfo, const vk::AllocationCallbacks* pAllocator, vk::Fence* pFence, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type registerDisplayEventEXT( vk::DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result registerObjectsNVX( vk::ObjectTableNVX objectTable, uint32_t objectCount, const vk::ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type registerObjectsNVX( vk::ObjectTableNVX objectTable, ArrayProxy pObjectTableEntries, ArrayProxy objectIndices, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result releaseFullScreenExclusiveModeEXT( vk::SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV = 0; #else - template - ResultValueType::type releaseFullScreenExclusiveModeEXT( vk::SwapchainKHR swapchain, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + PFN_dummy vkGetMemoryWin32HandleNV_placeholder = 0; #endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result releasePerformanceConfigurationINTEL( vk::PerformanceConfigurationINTEL configuration, Dispatch const &d = Dispatch() ) const; -#else - template - ResultValueType::type releasePerformanceConfigurationINTEL( vk::PerformanceConfigurationINTEL configuration, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + //=== VK_KHR_get_physical_device_properties2 === + PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR = 0; + PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR = 0; + PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR = 0; + PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR = 0; + PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR = 0; + PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR = 0; + PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 0; -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result resetCommandPool( vk::CommandPool commandPool, vk::CommandPoolResetFlags flags, Dispatch const &d = Dispatch() ) const; -#else - template - ResultValueType::type resetCommandPool( vk::CommandPool commandPool, vk::CommandPoolResetFlags flags, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + //=== VK_KHR_device_group === + PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR = 0; + PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR = 0; + PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR = 0; -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result resetDescriptorPool( vk::DescriptorPool descriptorPool, vk::DescriptorPoolResetFlags flags = DescriptorPoolResetFlags(), Dispatch const &d = Dispatch() ) const; +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN = 0; #else - template - ResultValueType::type resetDescriptorPool( vk::DescriptorPool descriptorPool, vk::DescriptorPoolResetFlags flags = DescriptorPoolResetFlags(), Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + PFN_dummy vkCreateViSurfaceNN_placeholder = 0; +#endif /*VK_USE_PLATFORM_VI_NN*/ -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result resetEvent( vk::Event event, Dispatch const &d = Dispatch() ) const; -#else - template - ResultValueType::type resetEvent( vk::Event event, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result resetFences( uint32_t fenceCount, const vk::Fence* pFences, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type resetFences( ArrayProxy fences, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void resetQueryPoolEXT( vk::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const &d = Dispatch() ) const; - - template - Result setDebugUtilsObjectNameEXT( const vk::DebugUtilsObjectNameInfoEXT* pNameInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT & nameInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result setDebugUtilsObjectTagEXT( const vk::DebugUtilsObjectTagInfoEXT* pTagInfo, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT & tagInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result setEvent( vk::Event event, Dispatch const &d = Dispatch() ) const; -#else - template - ResultValueType::type setEvent( vk::Event event, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + //=== VK_KHR_maintenance1 === + PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR = 0; - template - void setHdrMetadataEXT( uint32_t swapchainCount, const vk::SwapchainKHR* pSwapchains, const vk::HdrMetadataEXT* pMetadata, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void setHdrMetadataEXT( ArrayProxy swapchains, ArrayProxy metadata, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + //=== VK_KHR_device_group_creation === + PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR = 0; - template - void setLocalDimmingAMD( vk::SwapchainKHR swapChain, vk::Bool32 localDimmingEnable, Dispatch const &d = Dispatch() ) const; + //=== VK_KHR_external_memory_capabilities === + PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR = 0; - template - void trimCommandPool( vk::CommandPool commandPool, vk::CommandPoolTrimFlags flags = CommandPoolTrimFlags(), Dispatch const &d = Dispatch() ) const; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR = 0; + PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR = 0; +#else + PFN_dummy vkGetMemoryWin32HandleKHR_placeholder = 0; + PFN_dummy vkGetMemoryWin32HandlePropertiesKHR_placeholder = 0; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - template - void trimCommandPoolKHR( vk::CommandPool commandPool, vk::CommandPoolTrimFlags flags = CommandPoolTrimFlags(), Dispatch const &d = Dispatch() ) const; + //=== VK_KHR_external_memory_fd === + PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR = 0; + PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR = 0; - template - void uninitializePerformanceApiINTEL(Dispatch const &d = Dispatch() ) const; + //=== VK_KHR_external_semaphore_capabilities === + PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 0; - template - void unmapMemory( vk::DeviceMemory memory, Dispatch const &d = Dispatch() ) const; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR = 0; + PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR = 0; +#else + PFN_dummy vkImportSemaphoreWin32HandleKHR_placeholder = 0; + PFN_dummy vkGetSemaphoreWin32HandleKHR_placeholder = 0; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - template - Result unregisterObjectsNVX( vk::ObjectTableNVX objectTable, uint32_t objectCount, const vk::ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type unregisterObjectsNVX( vk::ObjectTableNVX objectTable, ArrayProxy objectEntryTypes, ArrayProxy objectIndices, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + //=== VK_KHR_external_semaphore_fd === + PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR = 0; + PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR = 0; - template - void updateDescriptorSetWithTemplate( vk::DescriptorSet descriptorSet, vk::DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d = Dispatch() ) const; + //=== VK_KHR_push_descriptor === + PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR = 0; + PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR = 0; - template - void updateDescriptorSetWithTemplateKHR( vk::DescriptorSet descriptorSet, vk::DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d = Dispatch() ) const; + //=== VK_EXT_conditional_rendering === + PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT = 0; + PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT = 0; - template - void updateDescriptorSets( uint32_t descriptorWriteCount, const vk::WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const vk::CopyDescriptorSet* pDescriptorCopies, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void updateDescriptorSets( ArrayProxy descriptorWrites, ArrayProxy descriptorCopies, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + //=== VK_KHR_descriptor_update_template === + PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR = 0; + PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR = 0; + PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR = 0; - template - Result waitForFences( uint32_t fenceCount, const vk::Fence* pFences, vk::Bool32 waitAll, uint64_t timeout, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result waitForFences( ArrayProxy fences, vk::Bool32 waitAll, uint64_t timeout, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + //=== VK_NV_clip_space_w_scaling === + PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV = 0; - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const - { - return m_device; - } + //=== VK_EXT_direct_mode_display === + PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT = 0; - explicit operator bool() const - { - return m_device != VK_NULL_HANDLE; - } +#if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT = 0; + PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT = 0; +#else + PFN_dummy vkAcquireXlibDisplayEXT_placeholder = 0; + PFN_dummy vkGetRandROutputDisplayEXT_placeholder = 0; +#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - bool operator!() const - { - return m_device == VK_NULL_HANDLE; - } + //=== VK_EXT_display_surface_counter === + PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT = 0; - private: - VkDevice m_device; - }; - static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" ); + //=== VK_EXT_display_control === + PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT = 0; + PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT = 0; + PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT = 0; + PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT = 0; - template <> - struct cpp_type - { - using type = Device; - }; + //=== VK_GOOGLE_display_timing === + PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE = 0; + PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE = 0; - class DisplayModeKHR - { - public: - using CType = VkDisplayModeKHR; + //=== VK_EXT_discard_rectangles === + PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT = 0; - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDisplayModeKHR; + //=== VK_EXT_hdr_metadata === + PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT = 0; - public: - VULKAN_HPP_CONSTEXPR DisplayModeKHR() - : m_displayModeKHR(VK_NULL_HANDLE) - {} + //=== VK_KHR_create_renderpass2 === + PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR = 0; + PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR = 0; + PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR = 0; + PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR = 0; - VULKAN_HPP_CONSTEXPR DisplayModeKHR( std::nullptr_t ) - : m_displayModeKHR(VK_NULL_HANDLE) - {} + //=== VK_KHR_shared_presentable_image === + PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR = 0; - VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR( VkDisplayModeKHR displayModeKHR ) - : m_displayModeKHR( displayModeKHR ) - {} + //=== VK_KHR_external_fence_capabilities === + PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR = 0; -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DisplayModeKHR & operator=(VkDisplayModeKHR displayModeKHR) - { - m_displayModeKHR = displayModeKHR; - return *this; - } -#endif +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR = 0; + PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR = 0; +#else + PFN_dummy vkImportFenceWin32HandleKHR_placeholder = 0; + PFN_dummy vkGetFenceWin32HandleKHR_placeholder = 0; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - DisplayModeKHR & operator=( std::nullptr_t ) - { - m_displayModeKHR = VK_NULL_HANDLE; - return *this; - } + //=== VK_KHR_external_fence_fd === + PFN_vkImportFenceFdKHR vkImportFenceFdKHR = 0; + PFN_vkGetFenceFdKHR vkGetFenceFdKHR = 0; - bool operator==( DisplayModeKHR const & rhs ) const - { - return m_displayModeKHR == rhs.m_displayModeKHR; - } + //=== VK_KHR_performance_query === + PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR + vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = 0; + PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR + vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = 0; + PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR = 0; + PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR = 0; - bool operator!=(DisplayModeKHR const & rhs ) const - { - return m_displayModeKHR != rhs.m_displayModeKHR; - } + //=== VK_KHR_get_surface_capabilities2 === + PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR = 0; + PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR = 0; - bool operator<(DisplayModeKHR const & rhs ) const - { - return m_displayModeKHR < rhs.m_displayModeKHR; - } + //=== VK_KHR_get_display_properties2 === + PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR = 0; + PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 0; + PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR = 0; + PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR = 0; - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const - { - return m_displayModeKHR; - } +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK = 0; +#else + PFN_dummy vkCreateIOSSurfaceMVK_placeholder = 0; +#endif /*VK_USE_PLATFORM_IOS_MVK*/ - explicit operator bool() const - { - return m_displayModeKHR != VK_NULL_HANDLE; - } +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK = 0; +#else + PFN_dummy vkCreateMacOSSurfaceMVK_placeholder = 0; +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ - bool operator!() const - { - return m_displayModeKHR == VK_NULL_HANDLE; - } + //=== VK_EXT_debug_utils === + PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT = 0; + PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT = 0; + PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT = 0; + PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT = 0; + PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT = 0; + PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT = 0; + PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT = 0; + PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT = 0; + PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT = 0; + PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT = 0; + PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT = 0; - private: - VkDisplayModeKHR m_displayModeKHR; - }; - static_assert( sizeof( DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" ); +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID = 0; + PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID = 0; +#else + PFN_dummy vkGetAndroidHardwareBufferPropertiesANDROID_placeholder = 0; + PFN_dummy vkGetMemoryAndroidHardwareBufferANDROID_placeholder = 0; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - template <> - struct cpp_type - { - using type = DisplayModeKHR; - }; + //=== VK_EXT_sample_locations === + PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT = 0; + PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT = 0; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueDevice = UniqueHandle; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ + //=== VK_KHR_get_memory_requirements2 === + PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR = 0; + PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR = 0; + PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR = 0; - class PhysicalDevice - { - public: - using CType = VkPhysicalDevice; + //=== VK_KHR_acceleration_structure === + PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR = 0; + PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR = 0; + PFN_vkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHR = 0; + PFN_vkCmdBuildAccelerationStructuresIndirectKHR vkCmdBuildAccelerationStructuresIndirectKHR = 0; + PFN_vkBuildAccelerationStructuresKHR vkBuildAccelerationStructuresKHR = 0; + PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR = 0; + PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR = 0; + PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR = 0; + PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR = 0; + PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR = 0; + PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR = 0; + PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR = 0; + PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR = 0; + PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR = 0; + PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR = 0; + PFN_vkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHR = 0; + + //=== VK_KHR_sampler_ycbcr_conversion === + PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR = 0; + PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR = 0; - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePhysicalDevice; + //=== VK_KHR_bind_memory2 === + PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR = 0; + PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR = 0; - public: - VULKAN_HPP_CONSTEXPR PhysicalDevice() - : m_physicalDevice(VK_NULL_HANDLE) - {} + //=== VK_EXT_image_drm_format_modifier === + PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT = 0; - VULKAN_HPP_CONSTEXPR PhysicalDevice( std::nullptr_t ) - : m_physicalDevice(VK_NULL_HANDLE) - {} + //=== VK_EXT_validation_cache === + PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT = 0; + PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT = 0; + PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT = 0; + PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT = 0; - VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice( VkPhysicalDevice physicalDevice ) - : m_physicalDevice( physicalDevice ) - {} + //=== VK_NV_shading_rate_image === + PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV = 0; + PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV = 0; + PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV = 0; -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - PhysicalDevice & operator=(VkPhysicalDevice physicalDevice) - { - m_physicalDevice = physicalDevice; - return *this; - } -#endif + //=== VK_NV_ray_tracing === + PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV = 0; + PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV = 0; + PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV = 0; + PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV = 0; + PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV = 0; + PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV = 0; + PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV = 0; + PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV = 0; + PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV = 0; + PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV = 0; + PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV = 0; + PFN_vkCompileDeferredNV vkCompileDeferredNV = 0; + + //=== VK_KHR_maintenance3 === + PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR = 0; - PhysicalDevice & operator=( std::nullptr_t ) - { - m_physicalDevice = VK_NULL_HANDLE; - return *this; - } + //=== VK_KHR_draw_indirect_count === + PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR = 0; + PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR = 0; - bool operator==( PhysicalDevice const & rhs ) const - { - return m_physicalDevice == rhs.m_physicalDevice; - } + //=== VK_EXT_external_memory_host === + PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT = 0; - bool operator!=(PhysicalDevice const & rhs ) const - { - return m_physicalDevice != rhs.m_physicalDevice; - } + //=== VK_AMD_buffer_marker === + PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD = 0; - bool operator<(PhysicalDevice const & rhs ) const - { - return m_physicalDevice < rhs.m_physicalDevice; - } + //=== VK_EXT_calibrated_timestamps === + PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 0; + PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT = 0; -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - template - Result acquireXlibDisplayEXT( Display* dpy, vk::DisplayKHR display, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type acquireXlibDisplayEXT( vk::DisplayKHR display, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + //=== VK_NV_mesh_shader === + PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV = 0; + PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV = 0; + PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV = 0; - template - Result createDevice( const vk::DeviceCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Device* pDevice, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createDevice( const DeviceCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createDeviceUnique( const DeviceCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createDisplayModeKHR( vk::DisplayKHR display, const vk::DisplayModeCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::DisplayModeKHR* pMode, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createDisplayModeKHR( vk::DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, vk::ExtensionProperties* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type enumerateDeviceExtensionProperties( Optional layerName = nullptr, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type enumerateDeviceExtensionProperties( Optional layerName, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, vk::LayerProperties* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type enumerateDeviceLayerProperties(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type enumerateDeviceLayerProperties(Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getDisplayModeProperties2KHR( vk::DisplayKHR display, uint32_t* pPropertyCount, vk::DisplayModeProperties2KHR* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getDisplayModeProperties2KHR( vk::DisplayKHR display, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getDisplayModeProperties2KHR( vk::DisplayKHR display, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getDisplayModePropertiesKHR( vk::DisplayKHR display, uint32_t* pPropertyCount, vk::DisplayModePropertiesKHR* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getDisplayModePropertiesKHR( vk::DisplayKHR display, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getDisplayModePropertiesKHR( vk::DisplayKHR display, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getDisplayPlaneCapabilities2KHR( const vk::DisplayPlaneInfo2KHR* pDisplayPlaneInfo, vk::DisplayPlaneCapabilities2KHR* pCapabilities, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR & displayPlaneInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getDisplayPlaneCapabilitiesKHR( vk::DisplayModeKHR mode, uint32_t planeIndex, vk::DisplayPlaneCapabilitiesKHR* pCapabilities, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getDisplayPlaneCapabilitiesKHR( vk::DisplayModeKHR mode, uint32_t planeIndex, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, vk::DisplayKHR* pDisplays, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getCalibrateableTimeDomainsEXT( uint32_t* pTimeDomainCount, vk::TimeDomainEXT* pTimeDomains, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getCalibrateableTimeDomainsEXT(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getCalibrateableTimeDomainsEXT(Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getCooperativeMatrixPropertiesNV( uint32_t* pPropertyCount, vk::CooperativeMatrixPropertiesNV* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getCooperativeMatrixPropertiesNV(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getCooperativeMatrixPropertiesNV(Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getDisplayPlaneProperties2KHR( uint32_t* pPropertyCount, vk::DisplayPlaneProperties2KHR* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getDisplayPlaneProperties2KHR(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getDisplayPlaneProperties2KHR(Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, vk::DisplayPlanePropertiesKHR* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getDisplayPlanePropertiesKHR(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getDisplayPlanePropertiesKHR(Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getDisplayProperties2KHR( uint32_t* pPropertyCount, vk::DisplayProperties2KHR* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getDisplayProperties2KHR(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getDisplayProperties2KHR(Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, vk::DisplayPropertiesKHR* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getDisplayPropertiesKHR(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getDisplayPropertiesKHR(Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getExternalBufferProperties( const vk::PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, vk::ExternalBufferProperties* pExternalBufferProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::ExternalBufferProperties getExternalBufferProperties( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getExternalBufferPropertiesKHR( const vk::PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, vk::ExternalBufferProperties* pExternalBufferProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::ExternalBufferProperties getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getExternalFenceProperties( const vk::PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, vk::ExternalFenceProperties* pExternalFenceProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::ExternalFenceProperties getExternalFenceProperties( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getExternalFencePropertiesKHR( const vk::PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, vk::ExternalFenceProperties* pExternalFenceProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::ExternalFenceProperties getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getExternalImageFormatPropertiesNV( vk::Format format, vk::ImageType type, vk::ImageTiling tiling, vk::ImageUsageFlags usage, vk::ImageCreateFlags flags, vk::ExternalMemoryHandleTypeFlagsNV externalHandleType, vk::ExternalImageFormatPropertiesNV* pExternalImageFormatProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getExternalImageFormatPropertiesNV( vk::Format format, vk::ImageType type, vk::ImageTiling tiling, vk::ImageUsageFlags usage, vk::ImageCreateFlags flags, vk::ExternalMemoryHandleTypeFlagsNV externalHandleType, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getExternalSemaphoreProperties( const vk::PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, vk::ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::ExternalSemaphoreProperties getExternalSemaphoreProperties( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getExternalSemaphorePropertiesKHR( const vk::PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, vk::ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::ExternalSemaphoreProperties getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getFeatures( vk::PhysicalDeviceFeatures* pFeatures, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::PhysicalDeviceFeatures getFeatures(Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getFeatures2( vk::PhysicalDeviceFeatures2* pFeatures, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::PhysicalDeviceFeatures2 getFeatures2(Dispatch const &d = Dispatch() ) const; - template - StructureChain getFeatures2(Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getFeatures2KHR( vk::PhysicalDeviceFeatures2* pFeatures, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::PhysicalDeviceFeatures2 getFeatures2KHR(Dispatch const &d = Dispatch() ) const; - template - StructureChain getFeatures2KHR(Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getFormatProperties( vk::Format format, vk::FormatProperties* pFormatProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::FormatProperties getFormatProperties( vk::Format format, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getFormatProperties2( vk::Format format, vk::FormatProperties2* pFormatProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::FormatProperties2 getFormatProperties2( vk::Format format, Dispatch const &d = Dispatch() ) const; - template - StructureChain getFormatProperties2( vk::Format format, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getFormatProperties2KHR( vk::Format format, vk::FormatProperties2* pFormatProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::FormatProperties2 getFormatProperties2KHR( vk::Format format, Dispatch const &d = Dispatch() ) const; - template - StructureChain getFormatProperties2KHR( vk::Format format, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getGeneratedCommandsPropertiesNVX( vk::DeviceGeneratedCommandsFeaturesNVX* pFeatures, vk::DeviceGeneratedCommandsLimitsNVX* pLimits, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getImageFormatProperties( vk::Format format, vk::ImageType type, vk::ImageTiling tiling, vk::ImageUsageFlags usage, vk::ImageCreateFlags flags, vk::ImageFormatProperties* pImageFormatProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getImageFormatProperties( vk::Format format, vk::ImageType type, vk::ImageTiling tiling, vk::ImageUsageFlags usage, vk::ImageCreateFlags flags, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getImageFormatProperties2( const vk::PhysicalDeviceImageFormatInfo2* pImageFormatInfo, vk::ImageFormatProperties2* pImageFormatProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d = Dispatch() ) const; - template - typename ResultValueType>::type getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getImageFormatProperties2KHR( const vk::PhysicalDeviceImageFormatInfo2* pImageFormatInfo, vk::ImageFormatProperties2* pImageFormatProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d = Dispatch() ) const; - template - typename ResultValueType>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getMemoryProperties( vk::PhysicalDeviceMemoryProperties* pMemoryProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::PhysicalDeviceMemoryProperties getMemoryProperties(Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getMemoryProperties2( vk::PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::PhysicalDeviceMemoryProperties2 getMemoryProperties2(Dispatch const &d = Dispatch() ) const; - template - StructureChain getMemoryProperties2(Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getMemoryProperties2KHR( vk::PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::PhysicalDeviceMemoryProperties2 getMemoryProperties2KHR(Dispatch const &d = Dispatch() ) const; - template - StructureChain getMemoryProperties2KHR(Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getMultisamplePropertiesEXT( vk::SampleCountFlagBits samples, vk::MultisamplePropertiesEXT* pMultisampleProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::MultisamplePropertiesEXT getMultisamplePropertiesEXT( vk::SampleCountFlagBits samples, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getPresentRectanglesKHR( vk::SurfaceKHR surface, uint32_t* pRectCount, vk::Rect2D* pRects, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getPresentRectanglesKHR( vk::SurfaceKHR surface, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getPresentRectanglesKHR( vk::SurfaceKHR surface, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getProperties( vk::PhysicalDeviceProperties* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::PhysicalDeviceProperties getProperties(Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getProperties2( vk::PhysicalDeviceProperties2* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::PhysicalDeviceProperties2 getProperties2(Dispatch const &d = Dispatch() ) const; - template - StructureChain getProperties2(Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getProperties2KHR( vk::PhysicalDeviceProperties2* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - vk::PhysicalDeviceProperties2 getProperties2KHR(Dispatch const &d = Dispatch() ) const; - template - StructureChain getProperties2KHR(Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, vk::QueueFamilyProperties* pQueueFamilyProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - std::vector getQueueFamilyProperties(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - std::vector getQueueFamilyProperties(Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getQueueFamilyProperties2( uint32_t* pQueueFamilyPropertyCount, vk::QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - std::vector getQueueFamilyProperties2(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - std::vector getQueueFamilyProperties2(Allocator const& vectorAllocator, Dispatch const &d ) const; - template, typename Dispatch = DispatchLoaderDefault> - std::vector getQueueFamilyProperties2(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - std::vector getQueueFamilyProperties2(Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, vk::QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - std::vector getQueueFamilyProperties2KHR(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - std::vector getQueueFamilyProperties2KHR(Allocator const& vectorAllocator, Dispatch const &d ) const; - template, typename Dispatch = DispatchLoaderDefault> - std::vector getQueueFamilyProperties2KHR(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - std::vector getQueueFamilyProperties2KHR(Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getSparseImageFormatProperties( vk::Format format, vk::ImageType type, vk::SampleCountFlagBits samples, vk::ImageUsageFlags usage, vk::ImageTiling tiling, uint32_t* pPropertyCount, vk::SparseImageFormatProperties* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - std::vector getSparseImageFormatProperties( vk::Format format, vk::ImageType type, vk::SampleCountFlagBits samples, vk::ImageUsageFlags usage, vk::ImageTiling tiling, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - std::vector getSparseImageFormatProperties( vk::Format format, vk::ImageType type, vk::SampleCountFlagBits samples, vk::ImageUsageFlags usage, vk::ImageTiling tiling, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getSparseImageFormatProperties2( const vk::PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, vk::SparseImageFormatProperties2* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - std::vector getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - std::vector getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getSparseImageFormatProperties2KHR( const vk::PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, vk::SparseImageFormatProperties2* pProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - std::vector getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - std::vector getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getSupportedFramebufferMixedSamplesCombinationsNV( uint32_t* pCombinationCount, vk::FramebufferMixedSamplesCombinationNV* pCombinations, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getSupportedFramebufferMixedSamplesCombinationsNV(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getSupportedFramebufferMixedSamplesCombinationsNV(Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getSurfaceCapabilities2EXT( vk::SurfaceKHR surface, vk::SurfaceCapabilities2EXT* pSurfaceCapabilities, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getSurfaceCapabilities2EXT( vk::SurfaceKHR surface, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getSurfaceCapabilities2KHR( const vk::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, vk::SurfaceCapabilities2KHR* pSurfaceCapabilities, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d = Dispatch() ) const; - template - typename ResultValueType>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getSurfaceCapabilitiesKHR( vk::SurfaceKHR surface, vk::SurfaceCapabilitiesKHR* pSurfaceCapabilities, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getSurfaceCapabilitiesKHR( vk::SurfaceKHR surface, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getSurfaceFormats2KHR( const vk::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, vk::SurfaceFormat2KHR* pSurfaceFormats, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getSurfaceFormatsKHR( vk::SurfaceKHR surface, uint32_t* pSurfaceFormatCount, vk::SurfaceFormatKHR* pSurfaceFormats, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getSurfaceFormatsKHR( vk::SurfaceKHR surface, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getSurfaceFormatsKHR( vk::SurfaceKHR surface, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - Result getSurfacePresentModes2EXT( const vk::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, vk::PresentModeKHR* pPresentModes, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + //=== VK_NV_scissor_exclusive === + PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV = 0; - template - Result getSurfacePresentModesKHR( vk::SurfaceKHR surface, uint32_t* pPresentModeCount, vk::PresentModeKHR* pPresentModes, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getSurfacePresentModesKHR( vk::SurfaceKHR surface, Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type getSurfacePresentModesKHR( vk::SurfaceKHR surface, Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, vk::SurfaceKHR surface, vk::Bool32* pSupported, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, vk::SurfaceKHR surface, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - template - Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + //=== VK_NV_device_diagnostic_checkpoints === + PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV = 0; + PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex, Dispatch const &d = Dispatch() ) const; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + //=== VK_KHR_timeline_semaphore === + PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR = 0; + PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR = 0; + PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR = 0; + + //=== VK_INTEL_performance_query === + PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL = 0; + PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL = 0; + PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL = 0; + PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL = 0; + PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL = 0; + PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL = 0; + PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL = 0; + PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL = 0; + PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL = 0; -#ifdef VK_USE_PLATFORM_XCB_KHR - template - Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XCB_KHR*/ + //=== VK_AMD_display_native_hdr === + PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD = 0; -#ifdef VK_USE_PLATFORM_XLIB_KHR - template - Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA = 0; +#else + PFN_dummy vkCreateImagePipeSurfaceFUCHSIA_placeholder = 0; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - template - Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, vk::DisplayKHR* pDisplay, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT = 0; +#else + PFN_dummy vkCreateMetalSurfaceEXT_placeholder = 0; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_fragment_shading_rate === + PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR vkGetPhysicalDeviceFragmentShadingRatesKHR = 0; + PFN_vkCmdSetFragmentShadingRateKHR vkCmdSetFragmentShadingRateKHR = 0; + + //=== VK_EXT_buffer_device_address === + PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT = 0; + + //=== VK_EXT_tooling_info === + PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT = 0; + + //=== VK_KHR_present_wait === + PFN_vkWaitForPresentKHR vkWaitForPresentKHR = 0; + + //=== VK_NV_cooperative_matrix === + PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 0; + + //=== VK_NV_coverage_reduction_mode === + PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV + vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 0; -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result releaseDisplayEXT( vk::DisplayKHR display, Dispatch const &d = Dispatch() ) const; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT = 0; + PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT = 0; + PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT = 0; + PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT = 0; #else - template - ResultValueType::type releaseDisplayEXT( vk::DisplayKHR display, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + PFN_dummy vkGetPhysicalDeviceSurfacePresentModes2EXT_placeholder = 0; + PFN_dummy vkAcquireFullScreenExclusiveModeEXT_placeholder = 0; + PFN_dummy vkReleaseFullScreenExclusiveModeEXT_placeholder = 0; + PFN_dummy vkGetDeviceGroupSurfacePresentModes2EXT_placeholder = 0; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const - { - return m_physicalDevice; - } + //=== VK_EXT_headless_surface === + PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT = 0; - explicit operator bool() const - { - return m_physicalDevice != VK_NULL_HANDLE; - } + //=== VK_KHR_buffer_device_address === + PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR = 0; + PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR = 0; + PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR = 0; - bool operator!() const - { - return m_physicalDevice == VK_NULL_HANDLE; - } + //=== VK_EXT_line_rasterization === + PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT = 0; - private: - VkPhysicalDevice m_physicalDevice; - }; - static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" ); + //=== VK_EXT_host_query_reset === + PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT = 0; - template <> - struct cpp_type - { - using type = PhysicalDevice; - }; + //=== VK_EXT_extended_dynamic_state === + PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT = 0; + PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT = 0; + PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT = 0; + PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT = 0; + PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT = 0; + PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT = 0; + PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT = 0; + PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT = 0; + PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT = 0; + PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT = 0; + PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT = 0; + PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT = 0; + + //=== VK_KHR_deferred_host_operations === + PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR = 0; + PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR = 0; + PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR = 0; + PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR = 0; + PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR = 0; + + //=== VK_KHR_pipeline_executable_properties === + PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR = 0; + PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR = 0; + PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR = 0; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - class Instance; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueDebugReportCallbackEXT = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueDebugUtilsMessengerEXT = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueSurfaceKHR = UniqueHandle; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ + //=== VK_NV_device_generated_commands === + PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV = 0; + PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV = 0; + PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV = 0; + PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV = 0; + PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV = 0; + PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV = 0; + + //=== VK_EXT_acquire_drm_display === + PFN_vkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXT = 0; + PFN_vkGetDrmDisplayEXT vkGetDrmDisplayEXT = 0; + + //=== VK_EXT_private_data === + PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT = 0; + PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT = 0; + PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT = 0; + PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT = 0; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_encode_queue === + PFN_vkCmdEncodeVideoKHR vkCmdEncodeVideoKHR = 0; +#else + PFN_dummy vkCmdEncodeVideoKHR_placeholder = 0; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_KHR_synchronization2 === + PFN_vkCmdSetEvent2KHR vkCmdSetEvent2KHR = 0; + PFN_vkCmdResetEvent2KHR vkCmdResetEvent2KHR = 0; + PFN_vkCmdWaitEvents2KHR vkCmdWaitEvents2KHR = 0; + PFN_vkCmdPipelineBarrier2KHR vkCmdPipelineBarrier2KHR = 0; + PFN_vkCmdWriteTimestamp2KHR vkCmdWriteTimestamp2KHR = 0; + PFN_vkQueueSubmit2KHR vkQueueSubmit2KHR = 0; + PFN_vkCmdWriteBufferMarker2AMD vkCmdWriteBufferMarker2AMD = 0; + PFN_vkGetQueueCheckpointData2NV vkGetQueueCheckpointData2NV = 0; + + //=== VK_NV_fragment_shading_rate_enums === + PFN_vkCmdSetFragmentShadingRateEnumNV vkCmdSetFragmentShadingRateEnumNV = 0; + + //=== VK_KHR_copy_commands2 === + PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR = 0; + PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR = 0; + PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR = 0; + PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR = 0; + PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR = 0; + PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR = 0; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + PFN_vkAcquireWinrtDisplayNV vkAcquireWinrtDisplayNV = 0; + PFN_vkGetWinrtDisplayNV vkGetWinrtDisplayNV = 0; +#else + PFN_dummy vkAcquireWinrtDisplayNV_placeholder = 0; + PFN_dummy vkGetWinrtDisplayNV_placeholder = 0; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - class Instance - { - public: - using CType = VkInstance; +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT = 0; + PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT = 0; +#else + PFN_dummy vkCreateDirectFBSurfaceEXT_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceDirectFBPresentationSupportEXT_placeholder = 0; +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_KHR_ray_tracing_pipeline === + PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR = 0; + PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR = 0; + PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR = 0; + PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = 0; + PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR = 0; + PFN_vkGetRayTracingShaderGroupStackSizeKHR vkGetRayTracingShaderGroupStackSizeKHR = 0; + PFN_vkCmdSetRayTracingPipelineStackSizeKHR vkCmdSetRayTracingPipelineStackSizeKHR = 0; + + //=== VK_EXT_vertex_input_dynamic_state === + PFN_vkCmdSetVertexInputEXT vkCmdSetVertexInputEXT = 0; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + PFN_vkGetMemoryZirconHandleFUCHSIA vkGetMemoryZirconHandleFUCHSIA = 0; + PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA vkGetMemoryZirconHandlePropertiesFUCHSIA = 0; +#else + PFN_dummy vkGetMemoryZirconHandleFUCHSIA_placeholder = 0; + PFN_dummy vkGetMemoryZirconHandlePropertiesFUCHSIA_placeholder = 0; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ - static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eInstance; +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + PFN_vkImportSemaphoreZirconHandleFUCHSIA vkImportSemaphoreZirconHandleFUCHSIA = 0; + PFN_vkGetSemaphoreZirconHandleFUCHSIA vkGetSemaphoreZirconHandleFUCHSIA = 0; +#else + PFN_dummy vkImportSemaphoreZirconHandleFUCHSIA_placeholder = 0; + PFN_dummy vkGetSemaphoreZirconHandleFUCHSIA_placeholder = 0; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ - public: - VULKAN_HPP_CONSTEXPR Instance() - : m_instance(VK_NULL_HANDLE) - {} +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + PFN_vkCreateBufferCollectionFUCHSIA vkCreateBufferCollectionFUCHSIA = 0; + PFN_vkSetBufferCollectionImageConstraintsFUCHSIA vkSetBufferCollectionImageConstraintsFUCHSIA = 0; + PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA vkSetBufferCollectionBufferConstraintsFUCHSIA = 0; + PFN_vkDestroyBufferCollectionFUCHSIA vkDestroyBufferCollectionFUCHSIA = 0; + PFN_vkGetBufferCollectionPropertiesFUCHSIA vkGetBufferCollectionPropertiesFUCHSIA = 0; +#else + PFN_dummy vkCreateBufferCollectionFUCHSIA_placeholder = 0; + PFN_dummy vkSetBufferCollectionImageConstraintsFUCHSIA_placeholder = 0; + PFN_dummy vkSetBufferCollectionBufferConstraintsFUCHSIA_placeholder = 0; + PFN_dummy vkDestroyBufferCollectionFUCHSIA_placeholder = 0; + PFN_dummy vkGetBufferCollectionPropertiesFUCHSIA_placeholder = 0; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ - VULKAN_HPP_CONSTEXPR Instance( std::nullptr_t ) - : m_instance(VK_NULL_HANDLE) - {} + //=== VK_HUAWEI_subpass_shading === + PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = 0; + PFN_vkCmdSubpassShadingHUAWEI vkCmdSubpassShadingHUAWEI = 0; - VULKAN_HPP_TYPESAFE_EXPLICIT Instance( VkInstance instance ) - : m_instance( instance ) - {} + //=== VK_HUAWEI_invocation_mask === + PFN_vkCmdBindInvocationMaskHUAWEI vkCmdBindInvocationMaskHUAWEI = 0; -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Instance & operator=(VkInstance instance) + //=== VK_NV_external_memory_rdma === + PFN_vkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNV = 0; + + //=== VK_EXT_extended_dynamic_state2 === + PFN_vkCmdSetPatchControlPointsEXT vkCmdSetPatchControlPointsEXT = 0; + PFN_vkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXT = 0; + PFN_vkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXT = 0; + PFN_vkCmdSetLogicOpEXT vkCmdSetLogicOpEXT = 0; + PFN_vkCmdSetPrimitiveRestartEnableEXT vkCmdSetPrimitiveRestartEnableEXT = 0; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + PFN_vkCreateScreenSurfaceQNX vkCreateScreenSurfaceQNX = 0; + PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX vkGetPhysicalDeviceScreenPresentationSupportQNX = 0; +#else + PFN_dummy vkCreateScreenSurfaceQNX_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceScreenPresentationSupportQNX_placeholder = 0; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_EXT_color_write_enable === + PFN_vkCmdSetColorWriteEnableEXT vkCmdSetColorWriteEnableEXT = 0; + + //=== VK_EXT_multi_draw === + PFN_vkCmdDrawMultiEXT vkCmdDrawMultiEXT = 0; + PFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT = 0; + + //=== VK_EXT_pageable_device_local_memory === + PFN_vkSetDeviceMemoryPriorityEXT vkSetDeviceMemoryPriorityEXT = 0; + + //=== VK_KHR_maintenance4 === + PFN_vkGetDeviceBufferMemoryRequirementsKHR vkGetDeviceBufferMemoryRequirementsKHR = 0; + PFN_vkGetDeviceImageMemoryRequirementsKHR vkGetDeviceImageMemoryRequirementsKHR = 0; + PFN_vkGetDeviceImageSparseMemoryRequirementsKHR vkGetDeviceImageSparseMemoryRequirementsKHR = 0; + + public: + DispatchLoaderDynamic() VULKAN_HPP_NOEXCEPT = default; + DispatchLoaderDynamic( DispatchLoaderDynamic const & rhs ) VULKAN_HPP_NOEXCEPT = default; + +#if !defined( VK_NO_PROTOTYPES ) + // This interface is designed to be used for per-device function pointers in combination with a linked vulkan + // library. + template + void init( VULKAN_HPP_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::Device const & device, + DynamicLoader const & dl ) VULKAN_HPP_NOEXCEPT + { + PFN_vkGetInstanceProcAddr getInstanceProcAddr = + dl.template getProcAddress( "vkGetInstanceProcAddr" ); + PFN_vkGetDeviceProcAddr getDeviceProcAddr = + dl.template getProcAddress( "vkGetDeviceProcAddr" ); + init( static_cast( instance ), + getInstanceProcAddr, + static_cast( device ), + device ? getDeviceProcAddr : nullptr ); + } + + // This interface is designed to be used for per-device function pointers in combination with a linked vulkan + // library. + template + void init( VULKAN_HPP_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::Device const & device ) VULKAN_HPP_NOEXCEPT { - m_instance = instance; - return *this; + static DynamicLoader dl; + init( instance, device, dl ); } -#endif +#endif // !defined( VK_NO_PROTOTYPES ) - Instance & operator=( std::nullptr_t ) + DispatchLoaderDynamic( PFN_vkGetInstanceProcAddr getInstanceProcAddr ) VULKAN_HPP_NOEXCEPT { - m_instance = VK_NULL_HANDLE; - return *this; + init( getInstanceProcAddr ); } - bool operator==( Instance const & rhs ) const + void init( PFN_vkGetInstanceProcAddr getInstanceProcAddr ) VULKAN_HPP_NOEXCEPT { - return m_instance == rhs.m_instance; + VULKAN_HPP_ASSERT( getInstanceProcAddr ); + + vkGetInstanceProcAddr = getInstanceProcAddr; + + //=== VK_VERSION_1_0 === + vkCreateInstance = PFN_vkCreateInstance( vkGetInstanceProcAddr( NULL, "vkCreateInstance" ) ); + vkEnumerateInstanceExtensionProperties = PFN_vkEnumerateInstanceExtensionProperties( + vkGetInstanceProcAddr( NULL, "vkEnumerateInstanceExtensionProperties" ) ); + vkEnumerateInstanceLayerProperties = + PFN_vkEnumerateInstanceLayerProperties( vkGetInstanceProcAddr( NULL, "vkEnumerateInstanceLayerProperties" ) ); + + //=== VK_VERSION_1_1 === + vkEnumerateInstanceVersion = + PFN_vkEnumerateInstanceVersion( vkGetInstanceProcAddr( NULL, "vkEnumerateInstanceVersion" ) ); } - bool operator!=(Instance const & rhs ) const + // This interface does not require a linked vulkan library. + DispatchLoaderDynamic( VkInstance instance, + PFN_vkGetInstanceProcAddr getInstanceProcAddr, + VkDevice device = {}, + PFN_vkGetDeviceProcAddr getDeviceProcAddr = nullptr ) VULKAN_HPP_NOEXCEPT { - return m_instance != rhs.m_instance; + init( instance, getInstanceProcAddr, device, getDeviceProcAddr ); } - bool operator<(Instance const & rhs ) const + // This interface does not require a linked vulkan library. + void init( VkInstance instance, + PFN_vkGetInstanceProcAddr getInstanceProcAddr, + VkDevice device = {}, + PFN_vkGetDeviceProcAddr /*getDeviceProcAddr*/ = nullptr ) VULKAN_HPP_NOEXCEPT { - return m_instance < rhs.m_instance; + VULKAN_HPP_ASSERT( instance && getInstanceProcAddr ); + vkGetInstanceProcAddr = getInstanceProcAddr; + init( VULKAN_HPP_NAMESPACE::Instance( instance ) ); + if ( device ) + { + init( VULKAN_HPP_NAMESPACE::Device( device ) ); + } } -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template - Result createAndroidSurfaceKHR( const vk::AndroidSurfaceCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + void init( VULKAN_HPP_NAMESPACE::Instance instanceCpp ) VULKAN_HPP_NOEXCEPT + { + VkInstance instance = static_cast( instanceCpp ); - template - Result createDebugReportCallbackEXT( const vk::DebugReportCallbackCreateInfoEXT* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::DebugReportCallbackEXT* pCallback, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createDebugUtilsMessengerEXT( const vk::DebugUtilsMessengerCreateInfoEXT* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::DebugUtilsMessengerEXT* pMessenger, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createDebugUtilsMessengerEXT( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createDebugUtilsMessengerEXTUnique( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createDisplayPlaneSurfaceKHR( const vk::DisplaySurfaceCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result createHeadlessSurfaceEXT( const vk::HeadlessSurfaceCreateInfoEXT* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createHeadlessSurfaceEXT( const HeadlessSurfaceCreateInfoEXT & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createHeadlessSurfaceEXTUnique( const HeadlessSurfaceCreateInfoEXT & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_IOS_MVK - template - Result createIOSSurfaceMVK( const vk::IOSSurfaceCreateInfoMVK* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_IOS_MVK*/ + //=== VK_VERSION_1_0 === + vkDestroyInstance = PFN_vkDestroyInstance( vkGetInstanceProcAddr( instance, "vkDestroyInstance" ) ); + vkEnumeratePhysicalDevices = + PFN_vkEnumeratePhysicalDevices( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDevices" ) ); + vkGetPhysicalDeviceFeatures = + PFN_vkGetPhysicalDeviceFeatures( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures" ) ); + vkGetPhysicalDeviceFormatProperties = PFN_vkGetPhysicalDeviceFormatProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties" ) ); + vkGetPhysicalDeviceImageFormatProperties = PFN_vkGetPhysicalDeviceImageFormatProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties" ) ); + vkGetPhysicalDeviceProperties = + PFN_vkGetPhysicalDeviceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties" ) ); + vkGetPhysicalDeviceQueueFamilyProperties = PFN_vkGetPhysicalDeviceQueueFamilyProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties" ) ); + vkGetPhysicalDeviceMemoryProperties = PFN_vkGetPhysicalDeviceMemoryProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties" ) ); + vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr" ) ); + vkCreateDevice = PFN_vkCreateDevice( vkGetInstanceProcAddr( instance, "vkCreateDevice" ) ); + vkDestroyDevice = PFN_vkDestroyDevice( vkGetInstanceProcAddr( instance, "vkDestroyDevice" ) ); + vkEnumerateDeviceExtensionProperties = PFN_vkEnumerateDeviceExtensionProperties( + vkGetInstanceProcAddr( instance, "vkEnumerateDeviceExtensionProperties" ) ); + vkEnumerateDeviceLayerProperties = + PFN_vkEnumerateDeviceLayerProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceLayerProperties" ) ); + vkGetDeviceQueue = PFN_vkGetDeviceQueue( vkGetInstanceProcAddr( instance, "vkGetDeviceQueue" ) ); + vkQueueSubmit = PFN_vkQueueSubmit( vkGetInstanceProcAddr( instance, "vkQueueSubmit" ) ); + vkQueueWaitIdle = PFN_vkQueueWaitIdle( vkGetInstanceProcAddr( instance, "vkQueueWaitIdle" ) ); + vkDeviceWaitIdle = PFN_vkDeviceWaitIdle( vkGetInstanceProcAddr( instance, "vkDeviceWaitIdle" ) ); + vkAllocateMemory = PFN_vkAllocateMemory( vkGetInstanceProcAddr( instance, "vkAllocateMemory" ) ); + vkFreeMemory = PFN_vkFreeMemory( vkGetInstanceProcAddr( instance, "vkFreeMemory" ) ); + vkMapMemory = PFN_vkMapMemory( vkGetInstanceProcAddr( instance, "vkMapMemory" ) ); + vkUnmapMemory = PFN_vkUnmapMemory( vkGetInstanceProcAddr( instance, "vkUnmapMemory" ) ); + vkFlushMappedMemoryRanges = + PFN_vkFlushMappedMemoryRanges( vkGetInstanceProcAddr( instance, "vkFlushMappedMemoryRanges" ) ); + vkInvalidateMappedMemoryRanges = + PFN_vkInvalidateMappedMemoryRanges( vkGetInstanceProcAddr( instance, "vkInvalidateMappedMemoryRanges" ) ); + vkGetDeviceMemoryCommitment = + PFN_vkGetDeviceMemoryCommitment( vkGetInstanceProcAddr( instance, "vkGetDeviceMemoryCommitment" ) ); + vkBindBufferMemory = PFN_vkBindBufferMemory( vkGetInstanceProcAddr( instance, "vkBindBufferMemory" ) ); + vkBindImageMemory = PFN_vkBindImageMemory( vkGetInstanceProcAddr( instance, "vkBindImageMemory" ) ); + vkGetBufferMemoryRequirements = + PFN_vkGetBufferMemoryRequirements( vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements" ) ); + vkGetImageMemoryRequirements = + PFN_vkGetImageMemoryRequirements( vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements" ) ); + vkGetImageSparseMemoryRequirements = PFN_vkGetImageSparseMemoryRequirements( + vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements" ) ); + vkGetPhysicalDeviceSparseImageFormatProperties = PFN_vkGetPhysicalDeviceSparseImageFormatProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties" ) ); + vkQueueBindSparse = PFN_vkQueueBindSparse( vkGetInstanceProcAddr( instance, "vkQueueBindSparse" ) ); + vkCreateFence = PFN_vkCreateFence( vkGetInstanceProcAddr( instance, "vkCreateFence" ) ); + vkDestroyFence = PFN_vkDestroyFence( vkGetInstanceProcAddr( instance, "vkDestroyFence" ) ); + vkResetFences = PFN_vkResetFences( vkGetInstanceProcAddr( instance, "vkResetFences" ) ); + vkGetFenceStatus = PFN_vkGetFenceStatus( vkGetInstanceProcAddr( instance, "vkGetFenceStatus" ) ); + vkWaitForFences = PFN_vkWaitForFences( vkGetInstanceProcAddr( instance, "vkWaitForFences" ) ); + vkCreateSemaphore = PFN_vkCreateSemaphore( vkGetInstanceProcAddr( instance, "vkCreateSemaphore" ) ); + vkDestroySemaphore = PFN_vkDestroySemaphore( vkGetInstanceProcAddr( instance, "vkDestroySemaphore" ) ); + vkCreateEvent = PFN_vkCreateEvent( vkGetInstanceProcAddr( instance, "vkCreateEvent" ) ); + vkDestroyEvent = PFN_vkDestroyEvent( vkGetInstanceProcAddr( instance, "vkDestroyEvent" ) ); + vkGetEventStatus = PFN_vkGetEventStatus( vkGetInstanceProcAddr( instance, "vkGetEventStatus" ) ); + vkSetEvent = PFN_vkSetEvent( vkGetInstanceProcAddr( instance, "vkSetEvent" ) ); + vkResetEvent = PFN_vkResetEvent( vkGetInstanceProcAddr( instance, "vkResetEvent" ) ); + vkCreateQueryPool = PFN_vkCreateQueryPool( vkGetInstanceProcAddr( instance, "vkCreateQueryPool" ) ); + vkDestroyQueryPool = PFN_vkDestroyQueryPool( vkGetInstanceProcAddr( instance, "vkDestroyQueryPool" ) ); + vkGetQueryPoolResults = PFN_vkGetQueryPoolResults( vkGetInstanceProcAddr( instance, "vkGetQueryPoolResults" ) ); + vkCreateBuffer = PFN_vkCreateBuffer( vkGetInstanceProcAddr( instance, "vkCreateBuffer" ) ); + vkDestroyBuffer = PFN_vkDestroyBuffer( vkGetInstanceProcAddr( instance, "vkDestroyBuffer" ) ); + vkCreateBufferView = PFN_vkCreateBufferView( vkGetInstanceProcAddr( instance, "vkCreateBufferView" ) ); + vkDestroyBufferView = PFN_vkDestroyBufferView( vkGetInstanceProcAddr( instance, "vkDestroyBufferView" ) ); + vkCreateImage = PFN_vkCreateImage( vkGetInstanceProcAddr( instance, "vkCreateImage" ) ); + vkDestroyImage = PFN_vkDestroyImage( vkGetInstanceProcAddr( instance, "vkDestroyImage" ) ); + vkGetImageSubresourceLayout = + PFN_vkGetImageSubresourceLayout( vkGetInstanceProcAddr( instance, "vkGetImageSubresourceLayout" ) ); + vkCreateImageView = PFN_vkCreateImageView( vkGetInstanceProcAddr( instance, "vkCreateImageView" ) ); + vkDestroyImageView = PFN_vkDestroyImageView( vkGetInstanceProcAddr( instance, "vkDestroyImageView" ) ); + vkCreateShaderModule = PFN_vkCreateShaderModule( vkGetInstanceProcAddr( instance, "vkCreateShaderModule" ) ); + vkDestroyShaderModule = PFN_vkDestroyShaderModule( vkGetInstanceProcAddr( instance, "vkDestroyShaderModule" ) ); + vkCreatePipelineCache = PFN_vkCreatePipelineCache( vkGetInstanceProcAddr( instance, "vkCreatePipelineCache" ) ); + vkDestroyPipelineCache = + PFN_vkDestroyPipelineCache( vkGetInstanceProcAddr( instance, "vkDestroyPipelineCache" ) ); + vkGetPipelineCacheData = + PFN_vkGetPipelineCacheData( vkGetInstanceProcAddr( instance, "vkGetPipelineCacheData" ) ); + vkMergePipelineCaches = PFN_vkMergePipelineCaches( vkGetInstanceProcAddr( instance, "vkMergePipelineCaches" ) ); + vkCreateGraphicsPipelines = + PFN_vkCreateGraphicsPipelines( vkGetInstanceProcAddr( instance, "vkCreateGraphicsPipelines" ) ); + vkCreateComputePipelines = + PFN_vkCreateComputePipelines( vkGetInstanceProcAddr( instance, "vkCreateComputePipelines" ) ); + vkDestroyPipeline = PFN_vkDestroyPipeline( vkGetInstanceProcAddr( instance, "vkDestroyPipeline" ) ); + vkCreatePipelineLayout = + PFN_vkCreatePipelineLayout( vkGetInstanceProcAddr( instance, "vkCreatePipelineLayout" ) ); + vkDestroyPipelineLayout = + PFN_vkDestroyPipelineLayout( vkGetInstanceProcAddr( instance, "vkDestroyPipelineLayout" ) ); + vkCreateSampler = PFN_vkCreateSampler( vkGetInstanceProcAddr( instance, "vkCreateSampler" ) ); + vkDestroySampler = PFN_vkDestroySampler( vkGetInstanceProcAddr( instance, "vkDestroySampler" ) ); + vkCreateDescriptorSetLayout = + PFN_vkCreateDescriptorSetLayout( vkGetInstanceProcAddr( instance, "vkCreateDescriptorSetLayout" ) ); + vkDestroyDescriptorSetLayout = + PFN_vkDestroyDescriptorSetLayout( vkGetInstanceProcAddr( instance, "vkDestroyDescriptorSetLayout" ) ); + vkCreateDescriptorPool = + PFN_vkCreateDescriptorPool( vkGetInstanceProcAddr( instance, "vkCreateDescriptorPool" ) ); + vkDestroyDescriptorPool = + PFN_vkDestroyDescriptorPool( vkGetInstanceProcAddr( instance, "vkDestroyDescriptorPool" ) ); + vkResetDescriptorPool = PFN_vkResetDescriptorPool( vkGetInstanceProcAddr( instance, "vkResetDescriptorPool" ) ); + vkAllocateDescriptorSets = + PFN_vkAllocateDescriptorSets( vkGetInstanceProcAddr( instance, "vkAllocateDescriptorSets" ) ); + vkFreeDescriptorSets = PFN_vkFreeDescriptorSets( vkGetInstanceProcAddr( instance, "vkFreeDescriptorSets" ) ); + vkUpdateDescriptorSets = + PFN_vkUpdateDescriptorSets( vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSets" ) ); + vkCreateFramebuffer = PFN_vkCreateFramebuffer( vkGetInstanceProcAddr( instance, "vkCreateFramebuffer" ) ); + vkDestroyFramebuffer = PFN_vkDestroyFramebuffer( vkGetInstanceProcAddr( instance, "vkDestroyFramebuffer" ) ); + vkCreateRenderPass = PFN_vkCreateRenderPass( vkGetInstanceProcAddr( instance, "vkCreateRenderPass" ) ); + vkDestroyRenderPass = PFN_vkDestroyRenderPass( vkGetInstanceProcAddr( instance, "vkDestroyRenderPass" ) ); + vkGetRenderAreaGranularity = + PFN_vkGetRenderAreaGranularity( vkGetInstanceProcAddr( instance, "vkGetRenderAreaGranularity" ) ); + vkCreateCommandPool = PFN_vkCreateCommandPool( vkGetInstanceProcAddr( instance, "vkCreateCommandPool" ) ); + vkDestroyCommandPool = PFN_vkDestroyCommandPool( vkGetInstanceProcAddr( instance, "vkDestroyCommandPool" ) ); + vkResetCommandPool = PFN_vkResetCommandPool( vkGetInstanceProcAddr( instance, "vkResetCommandPool" ) ); + vkAllocateCommandBuffers = + PFN_vkAllocateCommandBuffers( vkGetInstanceProcAddr( instance, "vkAllocateCommandBuffers" ) ); + vkFreeCommandBuffers = PFN_vkFreeCommandBuffers( vkGetInstanceProcAddr( instance, "vkFreeCommandBuffers" ) ); + vkBeginCommandBuffer = PFN_vkBeginCommandBuffer( vkGetInstanceProcAddr( instance, "vkBeginCommandBuffer" ) ); + vkEndCommandBuffer = PFN_vkEndCommandBuffer( vkGetInstanceProcAddr( instance, "vkEndCommandBuffer" ) ); + vkResetCommandBuffer = PFN_vkResetCommandBuffer( vkGetInstanceProcAddr( instance, "vkResetCommandBuffer" ) ); + vkCmdBindPipeline = PFN_vkCmdBindPipeline( vkGetInstanceProcAddr( instance, "vkCmdBindPipeline" ) ); + vkCmdSetViewport = PFN_vkCmdSetViewport( vkGetInstanceProcAddr( instance, "vkCmdSetViewport" ) ); + vkCmdSetScissor = PFN_vkCmdSetScissor( vkGetInstanceProcAddr( instance, "vkCmdSetScissor" ) ); + vkCmdSetLineWidth = PFN_vkCmdSetLineWidth( vkGetInstanceProcAddr( instance, "vkCmdSetLineWidth" ) ); + vkCmdSetDepthBias = PFN_vkCmdSetDepthBias( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBias" ) ); + vkCmdSetBlendConstants = + PFN_vkCmdSetBlendConstants( vkGetInstanceProcAddr( instance, "vkCmdSetBlendConstants" ) ); + vkCmdSetDepthBounds = PFN_vkCmdSetDepthBounds( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBounds" ) ); + vkCmdSetStencilCompareMask = + PFN_vkCmdSetStencilCompareMask( vkGetInstanceProcAddr( instance, "vkCmdSetStencilCompareMask" ) ); + vkCmdSetStencilWriteMask = + PFN_vkCmdSetStencilWriteMask( vkGetInstanceProcAddr( instance, "vkCmdSetStencilWriteMask" ) ); + vkCmdSetStencilReference = + PFN_vkCmdSetStencilReference( vkGetInstanceProcAddr( instance, "vkCmdSetStencilReference" ) ); + vkCmdBindDescriptorSets = + PFN_vkCmdBindDescriptorSets( vkGetInstanceProcAddr( instance, "vkCmdBindDescriptorSets" ) ); + vkCmdBindIndexBuffer = PFN_vkCmdBindIndexBuffer( vkGetInstanceProcAddr( instance, "vkCmdBindIndexBuffer" ) ); + vkCmdBindVertexBuffers = + PFN_vkCmdBindVertexBuffers( vkGetInstanceProcAddr( instance, "vkCmdBindVertexBuffers" ) ); + vkCmdDraw = PFN_vkCmdDraw( vkGetInstanceProcAddr( instance, "vkCmdDraw" ) ); + vkCmdDrawIndexed = PFN_vkCmdDrawIndexed( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexed" ) ); + vkCmdDrawIndirect = PFN_vkCmdDrawIndirect( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirect" ) ); + vkCmdDrawIndexedIndirect = + PFN_vkCmdDrawIndexedIndirect( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirect" ) ); + vkCmdDispatch = PFN_vkCmdDispatch( vkGetInstanceProcAddr( instance, "vkCmdDispatch" ) ); + vkCmdDispatchIndirect = PFN_vkCmdDispatchIndirect( vkGetInstanceProcAddr( instance, "vkCmdDispatchIndirect" ) ); + vkCmdCopyBuffer = PFN_vkCmdCopyBuffer( vkGetInstanceProcAddr( instance, "vkCmdCopyBuffer" ) ); + vkCmdCopyImage = PFN_vkCmdCopyImage( vkGetInstanceProcAddr( instance, "vkCmdCopyImage" ) ); + vkCmdBlitImage = PFN_vkCmdBlitImage( vkGetInstanceProcAddr( instance, "vkCmdBlitImage" ) ); + vkCmdCopyBufferToImage = + PFN_vkCmdCopyBufferToImage( vkGetInstanceProcAddr( instance, "vkCmdCopyBufferToImage" ) ); + vkCmdCopyImageToBuffer = + PFN_vkCmdCopyImageToBuffer( vkGetInstanceProcAddr( instance, "vkCmdCopyImageToBuffer" ) ); + vkCmdUpdateBuffer = PFN_vkCmdUpdateBuffer( vkGetInstanceProcAddr( instance, "vkCmdUpdateBuffer" ) ); + vkCmdFillBuffer = PFN_vkCmdFillBuffer( vkGetInstanceProcAddr( instance, "vkCmdFillBuffer" ) ); + vkCmdClearColorImage = PFN_vkCmdClearColorImage( vkGetInstanceProcAddr( instance, "vkCmdClearColorImage" ) ); + vkCmdClearDepthStencilImage = + PFN_vkCmdClearDepthStencilImage( vkGetInstanceProcAddr( instance, "vkCmdClearDepthStencilImage" ) ); + vkCmdClearAttachments = PFN_vkCmdClearAttachments( vkGetInstanceProcAddr( instance, "vkCmdClearAttachments" ) ); + vkCmdResolveImage = PFN_vkCmdResolveImage( vkGetInstanceProcAddr( instance, "vkCmdResolveImage" ) ); + vkCmdSetEvent = PFN_vkCmdSetEvent( vkGetInstanceProcAddr( instance, "vkCmdSetEvent" ) ); + vkCmdResetEvent = PFN_vkCmdResetEvent( vkGetInstanceProcAddr( instance, "vkCmdResetEvent" ) ); + vkCmdWaitEvents = PFN_vkCmdWaitEvents( vkGetInstanceProcAddr( instance, "vkCmdWaitEvents" ) ); + vkCmdPipelineBarrier = PFN_vkCmdPipelineBarrier( vkGetInstanceProcAddr( instance, "vkCmdPipelineBarrier" ) ); + vkCmdBeginQuery = PFN_vkCmdBeginQuery( vkGetInstanceProcAddr( instance, "vkCmdBeginQuery" ) ); + vkCmdEndQuery = PFN_vkCmdEndQuery( vkGetInstanceProcAddr( instance, "vkCmdEndQuery" ) ); + vkCmdResetQueryPool = PFN_vkCmdResetQueryPool( vkGetInstanceProcAddr( instance, "vkCmdResetQueryPool" ) ); + vkCmdWriteTimestamp = PFN_vkCmdWriteTimestamp( vkGetInstanceProcAddr( instance, "vkCmdWriteTimestamp" ) ); + vkCmdCopyQueryPoolResults = + PFN_vkCmdCopyQueryPoolResults( vkGetInstanceProcAddr( instance, "vkCmdCopyQueryPoolResults" ) ); + vkCmdPushConstants = PFN_vkCmdPushConstants( vkGetInstanceProcAddr( instance, "vkCmdPushConstants" ) ); + vkCmdBeginRenderPass = PFN_vkCmdBeginRenderPass( vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass" ) ); + vkCmdNextSubpass = PFN_vkCmdNextSubpass( vkGetInstanceProcAddr( instance, "vkCmdNextSubpass" ) ); + vkCmdEndRenderPass = PFN_vkCmdEndRenderPass( vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass" ) ); + vkCmdExecuteCommands = PFN_vkCmdExecuteCommands( vkGetInstanceProcAddr( instance, "vkCmdExecuteCommands" ) ); + + //=== VK_VERSION_1_1 === + vkBindBufferMemory2 = PFN_vkBindBufferMemory2( vkGetInstanceProcAddr( instance, "vkBindBufferMemory2" ) ); + vkBindImageMemory2 = PFN_vkBindImageMemory2( vkGetInstanceProcAddr( instance, "vkBindImageMemory2" ) ); + vkGetDeviceGroupPeerMemoryFeatures = PFN_vkGetDeviceGroupPeerMemoryFeatures( + vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPeerMemoryFeatures" ) ); + vkCmdSetDeviceMask = PFN_vkCmdSetDeviceMask( vkGetInstanceProcAddr( instance, "vkCmdSetDeviceMask" ) ); + vkCmdDispatchBase = PFN_vkCmdDispatchBase( vkGetInstanceProcAddr( instance, "vkCmdDispatchBase" ) ); + vkEnumeratePhysicalDeviceGroups = + PFN_vkEnumeratePhysicalDeviceGroups( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroups" ) ); + vkGetImageMemoryRequirements2 = + PFN_vkGetImageMemoryRequirements2( vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements2" ) ); + vkGetBufferMemoryRequirements2 = + PFN_vkGetBufferMemoryRequirements2( vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements2" ) ); + vkGetImageSparseMemoryRequirements2 = PFN_vkGetImageSparseMemoryRequirements2( + vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements2" ) ); + vkGetPhysicalDeviceFeatures2 = + PFN_vkGetPhysicalDeviceFeatures2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2" ) ); + vkGetPhysicalDeviceProperties2 = + PFN_vkGetPhysicalDeviceProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2" ) ); + vkGetPhysicalDeviceFormatProperties2 = PFN_vkGetPhysicalDeviceFormatProperties2( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2" ) ); + vkGetPhysicalDeviceImageFormatProperties2 = PFN_vkGetPhysicalDeviceImageFormatProperties2( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2" ) ); + vkGetPhysicalDeviceQueueFamilyProperties2 = PFN_vkGetPhysicalDeviceQueueFamilyProperties2( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2" ) ); + vkGetPhysicalDeviceMemoryProperties2 = PFN_vkGetPhysicalDeviceMemoryProperties2( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2" ) ); + vkGetPhysicalDeviceSparseImageFormatProperties2 = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2" ) ); + vkTrimCommandPool = PFN_vkTrimCommandPool( vkGetInstanceProcAddr( instance, "vkTrimCommandPool" ) ); + vkGetDeviceQueue2 = PFN_vkGetDeviceQueue2( vkGetInstanceProcAddr( instance, "vkGetDeviceQueue2" ) ); + vkCreateSamplerYcbcrConversion = + PFN_vkCreateSamplerYcbcrConversion( vkGetInstanceProcAddr( instance, "vkCreateSamplerYcbcrConversion" ) ); + vkDestroySamplerYcbcrConversion = + PFN_vkDestroySamplerYcbcrConversion( vkGetInstanceProcAddr( instance, "vkDestroySamplerYcbcrConversion" ) ); + vkCreateDescriptorUpdateTemplate = + PFN_vkCreateDescriptorUpdateTemplate( vkGetInstanceProcAddr( instance, "vkCreateDescriptorUpdateTemplate" ) ); + vkDestroyDescriptorUpdateTemplate = + PFN_vkDestroyDescriptorUpdateTemplate( vkGetInstanceProcAddr( instance, "vkDestroyDescriptorUpdateTemplate" ) ); + vkUpdateDescriptorSetWithTemplate = + PFN_vkUpdateDescriptorSetWithTemplate( vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSetWithTemplate" ) ); + vkGetPhysicalDeviceExternalBufferProperties = PFN_vkGetPhysicalDeviceExternalBufferProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferProperties" ) ); + vkGetPhysicalDeviceExternalFenceProperties = PFN_vkGetPhysicalDeviceExternalFenceProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFenceProperties" ) ); + vkGetPhysicalDeviceExternalSemaphoreProperties = PFN_vkGetPhysicalDeviceExternalSemaphoreProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphoreProperties" ) ); + vkGetDescriptorSetLayoutSupport = + PFN_vkGetDescriptorSetLayoutSupport( vkGetInstanceProcAddr( instance, "vkGetDescriptorSetLayoutSupport" ) ); + + //=== VK_VERSION_1_2 === + vkCmdDrawIndirectCount = + PFN_vkCmdDrawIndirectCount( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCount" ) ); + vkCmdDrawIndexedIndirectCount = + PFN_vkCmdDrawIndexedIndirectCount( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCount" ) ); + vkCreateRenderPass2 = PFN_vkCreateRenderPass2( vkGetInstanceProcAddr( instance, "vkCreateRenderPass2" ) ); + vkCmdBeginRenderPass2 = PFN_vkCmdBeginRenderPass2( vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass2" ) ); + vkCmdNextSubpass2 = PFN_vkCmdNextSubpass2( vkGetInstanceProcAddr( instance, "vkCmdNextSubpass2" ) ); + vkCmdEndRenderPass2 = PFN_vkCmdEndRenderPass2( vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass2" ) ); + vkResetQueryPool = PFN_vkResetQueryPool( vkGetInstanceProcAddr( instance, "vkResetQueryPool" ) ); + vkGetSemaphoreCounterValue = + PFN_vkGetSemaphoreCounterValue( vkGetInstanceProcAddr( instance, "vkGetSemaphoreCounterValue" ) ); + vkWaitSemaphores = PFN_vkWaitSemaphores( vkGetInstanceProcAddr( instance, "vkWaitSemaphores" ) ); + vkSignalSemaphore = PFN_vkSignalSemaphore( vkGetInstanceProcAddr( instance, "vkSignalSemaphore" ) ); + vkGetBufferDeviceAddress = + PFN_vkGetBufferDeviceAddress( vkGetInstanceProcAddr( instance, "vkGetBufferDeviceAddress" ) ); + vkGetBufferOpaqueCaptureAddress = + PFN_vkGetBufferOpaqueCaptureAddress( vkGetInstanceProcAddr( instance, "vkGetBufferOpaqueCaptureAddress" ) ); + vkGetDeviceMemoryOpaqueCaptureAddress = PFN_vkGetDeviceMemoryOpaqueCaptureAddress( + vkGetInstanceProcAddr( instance, "vkGetDeviceMemoryOpaqueCaptureAddress" ) ); + + //=== VK_VERSION_1_3 === + vkGetPhysicalDeviceToolProperties = + PFN_vkGetPhysicalDeviceToolProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolProperties" ) ); + vkCreatePrivateDataSlot = + PFN_vkCreatePrivateDataSlot( vkGetInstanceProcAddr( instance, "vkCreatePrivateDataSlot" ) ); + vkDestroyPrivateDataSlot = + PFN_vkDestroyPrivateDataSlot( vkGetInstanceProcAddr( instance, "vkDestroyPrivateDataSlot" ) ); + vkSetPrivateData = PFN_vkSetPrivateData( vkGetInstanceProcAddr( instance, "vkSetPrivateData" ) ); + vkGetPrivateData = PFN_vkGetPrivateData( vkGetInstanceProcAddr( instance, "vkGetPrivateData" ) ); + vkCmdSetEvent2 = PFN_vkCmdSetEvent2( vkGetInstanceProcAddr( instance, "vkCmdSetEvent2" ) ); + vkCmdResetEvent2 = PFN_vkCmdResetEvent2( vkGetInstanceProcAddr( instance, "vkCmdResetEvent2" ) ); + vkCmdWaitEvents2 = PFN_vkCmdWaitEvents2( vkGetInstanceProcAddr( instance, "vkCmdWaitEvents2" ) ); + vkCmdPipelineBarrier2 = PFN_vkCmdPipelineBarrier2( vkGetInstanceProcAddr( instance, "vkCmdPipelineBarrier2" ) ); + vkCmdWriteTimestamp2 = PFN_vkCmdWriteTimestamp2( vkGetInstanceProcAddr( instance, "vkCmdWriteTimestamp2" ) ); + vkQueueSubmit2 = PFN_vkQueueSubmit2( vkGetInstanceProcAddr( instance, "vkQueueSubmit2" ) ); + vkCmdCopyBuffer2 = PFN_vkCmdCopyBuffer2( vkGetInstanceProcAddr( instance, "vkCmdCopyBuffer2" ) ); + vkCmdCopyImage2 = PFN_vkCmdCopyImage2( vkGetInstanceProcAddr( instance, "vkCmdCopyImage2" ) ); + vkCmdCopyBufferToImage2 = + PFN_vkCmdCopyBufferToImage2( vkGetInstanceProcAddr( instance, "vkCmdCopyBufferToImage2" ) ); + vkCmdCopyImageToBuffer2 = + PFN_vkCmdCopyImageToBuffer2( vkGetInstanceProcAddr( instance, "vkCmdCopyImageToBuffer2" ) ); + vkCmdBlitImage2 = PFN_vkCmdBlitImage2( vkGetInstanceProcAddr( instance, "vkCmdBlitImage2" ) ); + vkCmdResolveImage2 = PFN_vkCmdResolveImage2( vkGetInstanceProcAddr( instance, "vkCmdResolveImage2" ) ); + vkCmdBeginRendering = PFN_vkCmdBeginRendering( vkGetInstanceProcAddr( instance, "vkCmdBeginRendering" ) ); + vkCmdEndRendering = PFN_vkCmdEndRendering( vkGetInstanceProcAddr( instance, "vkCmdEndRendering" ) ); + vkCmdSetCullMode = PFN_vkCmdSetCullMode( vkGetInstanceProcAddr( instance, "vkCmdSetCullMode" ) ); + vkCmdSetFrontFace = PFN_vkCmdSetFrontFace( vkGetInstanceProcAddr( instance, "vkCmdSetFrontFace" ) ); + vkCmdSetPrimitiveTopology = + PFN_vkCmdSetPrimitiveTopology( vkGetInstanceProcAddr( instance, "vkCmdSetPrimitiveTopology" ) ); + vkCmdSetViewportWithCount = + PFN_vkCmdSetViewportWithCount( vkGetInstanceProcAddr( instance, "vkCmdSetViewportWithCount" ) ); + vkCmdSetScissorWithCount = + PFN_vkCmdSetScissorWithCount( vkGetInstanceProcAddr( instance, "vkCmdSetScissorWithCount" ) ); + vkCmdBindVertexBuffers2 = + PFN_vkCmdBindVertexBuffers2( vkGetInstanceProcAddr( instance, "vkCmdBindVertexBuffers2" ) ); + vkCmdSetDepthTestEnable = + PFN_vkCmdSetDepthTestEnable( vkGetInstanceProcAddr( instance, "vkCmdSetDepthTestEnable" ) ); + vkCmdSetDepthWriteEnable = + PFN_vkCmdSetDepthWriteEnable( vkGetInstanceProcAddr( instance, "vkCmdSetDepthWriteEnable" ) ); + vkCmdSetDepthCompareOp = + PFN_vkCmdSetDepthCompareOp( vkGetInstanceProcAddr( instance, "vkCmdSetDepthCompareOp" ) ); + vkCmdSetDepthBoundsTestEnable = + PFN_vkCmdSetDepthBoundsTestEnable( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBoundsTestEnable" ) ); + vkCmdSetStencilTestEnable = + PFN_vkCmdSetStencilTestEnable( vkGetInstanceProcAddr( instance, "vkCmdSetStencilTestEnable" ) ); + vkCmdSetStencilOp = PFN_vkCmdSetStencilOp( vkGetInstanceProcAddr( instance, "vkCmdSetStencilOp" ) ); + vkCmdSetRasterizerDiscardEnable = + PFN_vkCmdSetRasterizerDiscardEnable( vkGetInstanceProcAddr( instance, "vkCmdSetRasterizerDiscardEnable" ) ); + vkCmdSetDepthBiasEnable = + PFN_vkCmdSetDepthBiasEnable( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBiasEnable" ) ); + vkCmdSetPrimitiveRestartEnable = + PFN_vkCmdSetPrimitiveRestartEnable( vkGetInstanceProcAddr( instance, "vkCmdSetPrimitiveRestartEnable" ) ); + vkGetDeviceBufferMemoryRequirements = PFN_vkGetDeviceBufferMemoryRequirements( + vkGetInstanceProcAddr( instance, "vkGetDeviceBufferMemoryRequirements" ) ); + vkGetDeviceImageMemoryRequirements = PFN_vkGetDeviceImageMemoryRequirements( + vkGetInstanceProcAddr( instance, "vkGetDeviceImageMemoryRequirements" ) ); + vkGetDeviceImageSparseMemoryRequirements = PFN_vkGetDeviceImageSparseMemoryRequirements( + vkGetInstanceProcAddr( instance, "vkGetDeviceImageSparseMemoryRequirements" ) ); + + //=== VK_KHR_surface === + vkDestroySurfaceKHR = PFN_vkDestroySurfaceKHR( vkGetInstanceProcAddr( instance, "vkDestroySurfaceKHR" ) ); + vkGetPhysicalDeviceSurfaceSupportKHR = PFN_vkGetPhysicalDeviceSurfaceSupportKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceSupportKHR" ) ); + vkGetPhysicalDeviceSurfaceCapabilitiesKHR = PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" ) ); + vkGetPhysicalDeviceSurfaceFormatsKHR = PFN_vkGetPhysicalDeviceSurfaceFormatsKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormatsKHR" ) ); + vkGetPhysicalDeviceSurfacePresentModesKHR = PFN_vkGetPhysicalDeviceSurfacePresentModesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModesKHR" ) ); + + //=== VK_KHR_swapchain === + vkCreateSwapchainKHR = PFN_vkCreateSwapchainKHR( vkGetInstanceProcAddr( instance, "vkCreateSwapchainKHR" ) ); + vkDestroySwapchainKHR = PFN_vkDestroySwapchainKHR( vkGetInstanceProcAddr( instance, "vkDestroySwapchainKHR" ) ); + vkGetSwapchainImagesKHR = + PFN_vkGetSwapchainImagesKHR( vkGetInstanceProcAddr( instance, "vkGetSwapchainImagesKHR" ) ); + vkAcquireNextImageKHR = PFN_vkAcquireNextImageKHR( vkGetInstanceProcAddr( instance, "vkAcquireNextImageKHR" ) ); + vkQueuePresentKHR = PFN_vkQueuePresentKHR( vkGetInstanceProcAddr( instance, "vkQueuePresentKHR" ) ); + vkGetDeviceGroupPresentCapabilitiesKHR = PFN_vkGetDeviceGroupPresentCapabilitiesKHR( + vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPresentCapabilitiesKHR" ) ); + vkGetDeviceGroupSurfacePresentModesKHR = PFN_vkGetDeviceGroupSurfacePresentModesKHR( + vkGetInstanceProcAddr( instance, "vkGetDeviceGroupSurfacePresentModesKHR" ) ); + vkGetPhysicalDevicePresentRectanglesKHR = PFN_vkGetPhysicalDevicePresentRectanglesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDevicePresentRectanglesKHR" ) ); + vkAcquireNextImage2KHR = + PFN_vkAcquireNextImage2KHR( vkGetInstanceProcAddr( instance, "vkAcquireNextImage2KHR" ) ); + + //=== VK_KHR_display === + vkGetPhysicalDeviceDisplayPropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPropertiesKHR" ) ); + vkGetPhysicalDeviceDisplayPlanePropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" ) ); + vkGetDisplayPlaneSupportedDisplaysKHR = PFN_vkGetDisplayPlaneSupportedDisplaysKHR( + vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneSupportedDisplaysKHR" ) ); + vkGetDisplayModePropertiesKHR = + PFN_vkGetDisplayModePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModePropertiesKHR" ) ); + vkCreateDisplayModeKHR = + PFN_vkCreateDisplayModeKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayModeKHR" ) ); + vkGetDisplayPlaneCapabilitiesKHR = + PFN_vkGetDisplayPlaneCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilitiesKHR" ) ); + vkCreateDisplayPlaneSurfaceKHR = + PFN_vkCreateDisplayPlaneSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayPlaneSurfaceKHR" ) ); + + //=== VK_KHR_display_swapchain === + vkCreateSharedSwapchainsKHR = + PFN_vkCreateSharedSwapchainsKHR( vkGetInstanceProcAddr( instance, "vkCreateSharedSwapchainsKHR" ) ); + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + vkCreateXlibSurfaceKHR = + PFN_vkCreateXlibSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXlibSurfaceKHR" ) ); + vkGetPhysicalDeviceXlibPresentationSupportKHR = PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR" ) ); +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ -#ifdef VK_USE_PLATFORM_FUCHSIA - template - Result createImagePipeSurfaceFUCHSIA( const vk::ImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createImagePipeSurfaceFUCHSIA( const ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createImagePipeSurfaceFUCHSIAUnique( const ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_FUCHSIA*/ +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + vkCreateXcbSurfaceKHR = PFN_vkCreateXcbSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXcbSurfaceKHR" ) ); + vkGetPhysicalDeviceXcbPresentationSupportKHR = PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR" ) ); +#endif /*VK_USE_PLATFORM_XCB_KHR*/ -#ifdef VK_USE_PLATFORM_MACOS_MVK - template - Result createMacOSSurfaceMVK( const vk::MacOSSurfaceCreateInfoMVK* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_MACOS_MVK*/ +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + vkCreateWaylandSurfaceKHR = + PFN_vkCreateWaylandSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWaylandSurfaceKHR" ) ); + vkGetPhysicalDeviceWaylandPresentationSupportKHR = PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR" ) ); +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ -#ifdef VK_USE_PLATFORM_METAL_EXT - template - Result createMetalSurfaceEXT( const vk::MetalSurfaceCreateInfoEXT* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createMetalSurfaceEXT( const MetalSurfaceCreateInfoEXT & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createMetalSurfaceEXTUnique( const MetalSurfaceCreateInfoEXT & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_METAL_EXT*/ +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + vkCreateAndroidSurfaceKHR = + PFN_vkCreateAndroidSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateAndroidSurfaceKHR" ) ); +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_GGP - template - Result createStreamDescriptorSurfaceGGP( const vk::StreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createStreamDescriptorSurfaceGGP( const StreamDescriptorSurfaceCreateInfoGGP & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createStreamDescriptorSurfaceGGPUnique( const StreamDescriptorSurfaceCreateInfoGGP & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + vkCreateWin32SurfaceKHR = + PFN_vkCreateWin32SurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWin32SurfaceKHR" ) ); + vkGetPhysicalDeviceWin32PresentationSupportKHR = PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + vkCreateDebugReportCallbackEXT = + PFN_vkCreateDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" ) ); + vkDestroyDebugReportCallbackEXT = + PFN_vkDestroyDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugReportCallbackEXT" ) ); + vkDebugReportMessageEXT = + PFN_vkDebugReportMessageEXT( vkGetInstanceProcAddr( instance, "vkDebugReportMessageEXT" ) ); + + //=== VK_EXT_debug_marker === + vkDebugMarkerSetObjectTagEXT = + PFN_vkDebugMarkerSetObjectTagEXT( vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectTagEXT" ) ); + vkDebugMarkerSetObjectNameEXT = + PFN_vkDebugMarkerSetObjectNameEXT( vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectNameEXT" ) ); + vkCmdDebugMarkerBeginEXT = + PFN_vkCmdDebugMarkerBeginEXT( vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerBeginEXT" ) ); + vkCmdDebugMarkerEndEXT = + PFN_vkCmdDebugMarkerEndEXT( vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerEndEXT" ) ); + vkCmdDebugMarkerInsertEXT = + PFN_vkCmdDebugMarkerInsertEXT( vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerInsertEXT" ) ); + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + vkGetPhysicalDeviceVideoCapabilitiesKHR = PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoCapabilitiesKHR" ) ); + vkGetPhysicalDeviceVideoFormatPropertiesKHR = PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoFormatPropertiesKHR" ) ); + vkCreateVideoSessionKHR = + PFN_vkCreateVideoSessionKHR( vkGetInstanceProcAddr( instance, "vkCreateVideoSessionKHR" ) ); + vkDestroyVideoSessionKHR = + PFN_vkDestroyVideoSessionKHR( vkGetInstanceProcAddr( instance, "vkDestroyVideoSessionKHR" ) ); + vkGetVideoSessionMemoryRequirementsKHR = PFN_vkGetVideoSessionMemoryRequirementsKHR( + vkGetInstanceProcAddr( instance, "vkGetVideoSessionMemoryRequirementsKHR" ) ); + vkBindVideoSessionMemoryKHR = + PFN_vkBindVideoSessionMemoryKHR( vkGetInstanceProcAddr( instance, "vkBindVideoSessionMemoryKHR" ) ); + vkCreateVideoSessionParametersKHR = + PFN_vkCreateVideoSessionParametersKHR( vkGetInstanceProcAddr( instance, "vkCreateVideoSessionParametersKHR" ) ); + vkUpdateVideoSessionParametersKHR = + PFN_vkUpdateVideoSessionParametersKHR( vkGetInstanceProcAddr( instance, "vkUpdateVideoSessionParametersKHR" ) ); + vkDestroyVideoSessionParametersKHR = PFN_vkDestroyVideoSessionParametersKHR( + vkGetInstanceProcAddr( instance, "vkDestroyVideoSessionParametersKHR" ) ); + vkCmdBeginVideoCodingKHR = + PFN_vkCmdBeginVideoCodingKHR( vkGetInstanceProcAddr( instance, "vkCmdBeginVideoCodingKHR" ) ); + vkCmdEndVideoCodingKHR = + PFN_vkCmdEndVideoCodingKHR( vkGetInstanceProcAddr( instance, "vkCmdEndVideoCodingKHR" ) ); + vkCmdControlVideoCodingKHR = + PFN_vkCmdControlVideoCodingKHR( vkGetInstanceProcAddr( instance, "vkCmdControlVideoCodingKHR" ) ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_decode_queue === + vkCmdDecodeVideoKHR = PFN_vkCmdDecodeVideoKHR( vkGetInstanceProcAddr( instance, "vkCmdDecodeVideoKHR" ) ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_transform_feedback === + vkCmdBindTransformFeedbackBuffersEXT = PFN_vkCmdBindTransformFeedbackBuffersEXT( + vkGetInstanceProcAddr( instance, "vkCmdBindTransformFeedbackBuffersEXT" ) ); + vkCmdBeginTransformFeedbackEXT = + PFN_vkCmdBeginTransformFeedbackEXT( vkGetInstanceProcAddr( instance, "vkCmdBeginTransformFeedbackEXT" ) ); + vkCmdEndTransformFeedbackEXT = + PFN_vkCmdEndTransformFeedbackEXT( vkGetInstanceProcAddr( instance, "vkCmdEndTransformFeedbackEXT" ) ); + vkCmdBeginQueryIndexedEXT = + PFN_vkCmdBeginQueryIndexedEXT( vkGetInstanceProcAddr( instance, "vkCmdBeginQueryIndexedEXT" ) ); + vkCmdEndQueryIndexedEXT = + PFN_vkCmdEndQueryIndexedEXT( vkGetInstanceProcAddr( instance, "vkCmdEndQueryIndexedEXT" ) ); + vkCmdDrawIndirectByteCountEXT = + PFN_vkCmdDrawIndirectByteCountEXT( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectByteCountEXT" ) ); + + //=== VK_NVX_binary_import === + vkCreateCuModuleNVX = PFN_vkCreateCuModuleNVX( vkGetInstanceProcAddr( instance, "vkCreateCuModuleNVX" ) ); + vkCreateCuFunctionNVX = PFN_vkCreateCuFunctionNVX( vkGetInstanceProcAddr( instance, "vkCreateCuFunctionNVX" ) ); + vkDestroyCuModuleNVX = PFN_vkDestroyCuModuleNVX( vkGetInstanceProcAddr( instance, "vkDestroyCuModuleNVX" ) ); + vkDestroyCuFunctionNVX = + PFN_vkDestroyCuFunctionNVX( vkGetInstanceProcAddr( instance, "vkDestroyCuFunctionNVX" ) ); + vkCmdCuLaunchKernelNVX = + PFN_vkCmdCuLaunchKernelNVX( vkGetInstanceProcAddr( instance, "vkCmdCuLaunchKernelNVX" ) ); + + //=== VK_NVX_image_view_handle === + vkGetImageViewHandleNVX = + PFN_vkGetImageViewHandleNVX( vkGetInstanceProcAddr( instance, "vkGetImageViewHandleNVX" ) ); + vkGetImageViewAddressNVX = + PFN_vkGetImageViewAddressNVX( vkGetInstanceProcAddr( instance, "vkGetImageViewAddressNVX" ) ); + + //=== VK_AMD_draw_indirect_count === + vkCmdDrawIndirectCountAMD = + PFN_vkCmdDrawIndirectCountAMD( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCountAMD" ) ); + if ( !vkCmdDrawIndirectCount ) + vkCmdDrawIndirectCount = vkCmdDrawIndirectCountAMD; + vkCmdDrawIndexedIndirectCountAMD = + PFN_vkCmdDrawIndexedIndirectCountAMD( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCountAMD" ) ); + if ( !vkCmdDrawIndexedIndirectCount ) + vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountAMD; + + //=== VK_AMD_shader_info === + vkGetShaderInfoAMD = PFN_vkGetShaderInfoAMD( vkGetInstanceProcAddr( instance, "vkGetShaderInfoAMD" ) ); + + //=== VK_KHR_dynamic_rendering === + vkCmdBeginRenderingKHR = + PFN_vkCmdBeginRenderingKHR( vkGetInstanceProcAddr( instance, "vkCmdBeginRenderingKHR" ) ); + if ( !vkCmdBeginRendering ) + vkCmdBeginRendering = vkCmdBeginRenderingKHR; + vkCmdEndRenderingKHR = PFN_vkCmdEndRenderingKHR( vkGetInstanceProcAddr( instance, "vkCmdEndRenderingKHR" ) ); + if ( !vkCmdEndRendering ) + vkCmdEndRendering = vkCmdEndRenderingKHR; + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + vkCreateStreamDescriptorSurfaceGGP = PFN_vkCreateStreamDescriptorSurfaceGGP( + vkGetInstanceProcAddr( instance, "vkCreateStreamDescriptorSurfaceGGP" ) ); #endif /*VK_USE_PLATFORM_GGP*/ -#ifdef VK_USE_PLATFORM_VI_NN - template - Result createViSurfaceNN( const vk::ViSurfaceCreateInfoNN* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + //=== VK_NV_external_memory_capabilities === + vkGetPhysicalDeviceExternalImageFormatPropertiesNV = PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" ) ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + vkGetMemoryWin32HandleNV = + PFN_vkGetMemoryWin32HandleNV( vkGetInstanceProcAddr( instance, "vkGetMemoryWin32HandleNV" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_get_physical_device_properties2 === + vkGetPhysicalDeviceFeatures2KHR = + PFN_vkGetPhysicalDeviceFeatures2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2KHR" ) ); + if ( !vkGetPhysicalDeviceFeatures2 ) + vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2KHR; + vkGetPhysicalDeviceProperties2KHR = + PFN_vkGetPhysicalDeviceProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceProperties2 ) + vkGetPhysicalDeviceProperties2 = vkGetPhysicalDeviceProperties2KHR; + vkGetPhysicalDeviceFormatProperties2KHR = PFN_vkGetPhysicalDeviceFormatProperties2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceFormatProperties2 ) + vkGetPhysicalDeviceFormatProperties2 = vkGetPhysicalDeviceFormatProperties2KHR; + vkGetPhysicalDeviceImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceImageFormatProperties2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceImageFormatProperties2 ) + vkGetPhysicalDeviceImageFormatProperties2 = vkGetPhysicalDeviceImageFormatProperties2KHR; + vkGetPhysicalDeviceQueueFamilyProperties2KHR = PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceQueueFamilyProperties2 ) + vkGetPhysicalDeviceQueueFamilyProperties2 = vkGetPhysicalDeviceQueueFamilyProperties2KHR; + vkGetPhysicalDeviceMemoryProperties2KHR = PFN_vkGetPhysicalDeviceMemoryProperties2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceMemoryProperties2 ) + vkGetPhysicalDeviceMemoryProperties2 = vkGetPhysicalDeviceMemoryProperties2KHR; + vkGetPhysicalDeviceSparseImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceSparseImageFormatProperties2 ) + vkGetPhysicalDeviceSparseImageFormatProperties2 = vkGetPhysicalDeviceSparseImageFormatProperties2KHR; + + //=== VK_KHR_device_group === + vkGetDeviceGroupPeerMemoryFeaturesKHR = PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR( + vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPeerMemoryFeaturesKHR" ) ); + if ( !vkGetDeviceGroupPeerMemoryFeatures ) + vkGetDeviceGroupPeerMemoryFeatures = vkGetDeviceGroupPeerMemoryFeaturesKHR; + vkCmdSetDeviceMaskKHR = PFN_vkCmdSetDeviceMaskKHR( vkGetInstanceProcAddr( instance, "vkCmdSetDeviceMaskKHR" ) ); + if ( !vkCmdSetDeviceMask ) + vkCmdSetDeviceMask = vkCmdSetDeviceMaskKHR; + vkCmdDispatchBaseKHR = PFN_vkCmdDispatchBaseKHR( vkGetInstanceProcAddr( instance, "vkCmdDispatchBaseKHR" ) ); + if ( !vkCmdDispatchBase ) + vkCmdDispatchBase = vkCmdDispatchBaseKHR; + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + vkCreateViSurfaceNN = PFN_vkCreateViSurfaceNN( vkGetInstanceProcAddr( instance, "vkCreateViSurfaceNN" ) ); #endif /*VK_USE_PLATFORM_VI_NN*/ -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - template - Result createWaylandSurfaceKHR( const vk::WaylandSurfaceCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + //=== VK_KHR_maintenance1 === + vkTrimCommandPoolKHR = PFN_vkTrimCommandPoolKHR( vkGetInstanceProcAddr( instance, "vkTrimCommandPoolKHR" ) ); + if ( !vkTrimCommandPool ) + vkTrimCommandPool = vkTrimCommandPoolKHR; + + //=== VK_KHR_device_group_creation === + vkEnumeratePhysicalDeviceGroupsKHR = PFN_vkEnumeratePhysicalDeviceGroupsKHR( + vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroupsKHR" ) ); + if ( !vkEnumeratePhysicalDeviceGroups ) + vkEnumeratePhysicalDeviceGroups = vkEnumeratePhysicalDeviceGroupsKHR; + + //=== VK_KHR_external_memory_capabilities === + vkGetPhysicalDeviceExternalBufferPropertiesKHR = PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR" ) ); + if ( !vkGetPhysicalDeviceExternalBufferProperties ) + vkGetPhysicalDeviceExternalBufferProperties = vkGetPhysicalDeviceExternalBufferPropertiesKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + vkGetMemoryWin32HandleKHR = + PFN_vkGetMemoryWin32HandleKHR( vkGetInstanceProcAddr( instance, "vkGetMemoryWin32HandleKHR" ) ); + vkGetMemoryWin32HandlePropertiesKHR = PFN_vkGetMemoryWin32HandlePropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetMemoryWin32HandlePropertiesKHR" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - Result createWin32SurfaceKHR( const vk::Win32SurfaceCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + //=== VK_KHR_external_memory_fd === + vkGetMemoryFdKHR = PFN_vkGetMemoryFdKHR( vkGetInstanceProcAddr( instance, "vkGetMemoryFdKHR" ) ); + vkGetMemoryFdPropertiesKHR = + PFN_vkGetMemoryFdPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetMemoryFdPropertiesKHR" ) ); + + //=== VK_KHR_external_semaphore_capabilities === + vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR" ) ); + if ( !vkGetPhysicalDeviceExternalSemaphoreProperties ) + vkGetPhysicalDeviceExternalSemaphoreProperties = vkGetPhysicalDeviceExternalSemaphorePropertiesKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + vkImportSemaphoreWin32HandleKHR = + PFN_vkImportSemaphoreWin32HandleKHR( vkGetInstanceProcAddr( instance, "vkImportSemaphoreWin32HandleKHR" ) ); + vkGetSemaphoreWin32HandleKHR = + PFN_vkGetSemaphoreWin32HandleKHR( vkGetInstanceProcAddr( instance, "vkGetSemaphoreWin32HandleKHR" ) ); #endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_XCB_KHR - template - Result createXcbSurfaceKHR( const vk::XcbSurfaceCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XCB_KHR*/ + //=== VK_KHR_external_semaphore_fd === + vkImportSemaphoreFdKHR = + PFN_vkImportSemaphoreFdKHR( vkGetInstanceProcAddr( instance, "vkImportSemaphoreFdKHR" ) ); + vkGetSemaphoreFdKHR = PFN_vkGetSemaphoreFdKHR( vkGetInstanceProcAddr( instance, "vkGetSemaphoreFdKHR" ) ); + + //=== VK_KHR_push_descriptor === + vkCmdPushDescriptorSetKHR = + PFN_vkCmdPushDescriptorSetKHR( vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetKHR" ) ); + vkCmdPushDescriptorSetWithTemplateKHR = PFN_vkCmdPushDescriptorSetWithTemplateKHR( + vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetWithTemplateKHR" ) ); + + //=== VK_EXT_conditional_rendering === + vkCmdBeginConditionalRenderingEXT = + PFN_vkCmdBeginConditionalRenderingEXT( vkGetInstanceProcAddr( instance, "vkCmdBeginConditionalRenderingEXT" ) ); + vkCmdEndConditionalRenderingEXT = + PFN_vkCmdEndConditionalRenderingEXT( vkGetInstanceProcAddr( instance, "vkCmdEndConditionalRenderingEXT" ) ); + + //=== VK_KHR_descriptor_update_template === + vkCreateDescriptorUpdateTemplateKHR = PFN_vkCreateDescriptorUpdateTemplateKHR( + vkGetInstanceProcAddr( instance, "vkCreateDescriptorUpdateTemplateKHR" ) ); + if ( !vkCreateDescriptorUpdateTemplate ) + vkCreateDescriptorUpdateTemplate = vkCreateDescriptorUpdateTemplateKHR; + vkDestroyDescriptorUpdateTemplateKHR = PFN_vkDestroyDescriptorUpdateTemplateKHR( + vkGetInstanceProcAddr( instance, "vkDestroyDescriptorUpdateTemplateKHR" ) ); + if ( !vkDestroyDescriptorUpdateTemplate ) + vkDestroyDescriptorUpdateTemplate = vkDestroyDescriptorUpdateTemplateKHR; + vkUpdateDescriptorSetWithTemplateKHR = PFN_vkUpdateDescriptorSetWithTemplateKHR( + vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSetWithTemplateKHR" ) ); + if ( !vkUpdateDescriptorSetWithTemplate ) + vkUpdateDescriptorSetWithTemplate = vkUpdateDescriptorSetWithTemplateKHR; + + //=== VK_NV_clip_space_w_scaling === + vkCmdSetViewportWScalingNV = + PFN_vkCmdSetViewportWScalingNV( vkGetInstanceProcAddr( instance, "vkCmdSetViewportWScalingNV" ) ); + + //=== VK_EXT_direct_mode_display === + vkReleaseDisplayEXT = PFN_vkReleaseDisplayEXT( vkGetInstanceProcAddr( instance, "vkReleaseDisplayEXT" ) ); -#ifdef VK_USE_PLATFORM_XLIB_KHR - template - Result createXlibSurfaceKHR( const vk::XlibSurfaceCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ +#if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + vkAcquireXlibDisplayEXT = + PFN_vkAcquireXlibDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireXlibDisplayEXT" ) ); + vkGetRandROutputDisplayEXT = + PFN_vkGetRandROutputDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetRandROutputDisplayEXT" ) ); +#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - template - void debugReportMessageEXT( vk::DebugReportFlagsEXT flags, vk::DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void debugReportMessageEXT( vk::DebugReportFlagsEXT flags, vk::DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const std::string & layerPrefix, const std::string & message, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyDebugReportCallbackEXT( vk::DebugReportCallbackEXT callback, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyDebugReportCallbackEXT( vk::DebugReportCallbackEXT callback, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::DebugReportCallbackEXT callback, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::DebugReportCallbackEXT callback, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyDebugUtilsMessengerEXT( vk::DebugUtilsMessengerEXT messenger, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyDebugUtilsMessengerEXT( vk::DebugUtilsMessengerEXT messenger, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::DebugUtilsMessengerEXT messenger, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::DebugUtilsMessengerEXT messenger, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroySurfaceKHR( vk::SurfaceKHR surface, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroySurfaceKHR( vk::SurfaceKHR surface, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroy( vk::SurfaceKHR surface, const vk::AllocationCallbacks* pAllocator, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( vk::SurfaceKHR surface, Optional allocator = nullptr, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result enumeratePhysicalDeviceGroups( uint32_t* pPhysicalDeviceGroupCount, vk::PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type enumeratePhysicalDeviceGroups(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type enumeratePhysicalDeviceGroups(Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result enumeratePhysicalDeviceGroupsKHR( uint32_t* pPhysicalDeviceGroupCount, vk::PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type enumeratePhysicalDeviceGroupsKHR(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type enumeratePhysicalDeviceGroupsKHR(Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, vk::PhysicalDevice* pPhysicalDevices, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type enumeratePhysicalDevices(Dispatch const &d = Dispatch() ) const; - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type enumeratePhysicalDevices(Allocator const& vectorAllocator, Dispatch const &d ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - PFN_vkVoidFunction getProcAddr( const char* pName, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - PFN_vkVoidFunction getProcAddr( const std::string & name, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void submitDebugUtilsMessageEXT( vk::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, vk::DebugUtilsMessageTypeFlagsEXT messageTypes, const vk::DebugUtilsMessengerCallbackDataEXT* pCallbackData, Dispatch const &d = Dispatch() ) const; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void submitDebugUtilsMessageEXT( vk::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, vk::DebugUtilsMessageTypeFlagsEXT messageTypes, const DebugUtilsMessengerCallbackDataEXT & callbackData, Dispatch const &d = Dispatch() ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const - { - return m_instance; - } - - explicit operator bool() const - { - return m_instance != VK_NULL_HANDLE; - } - - bool operator!() const - { - return m_instance == VK_NULL_HANDLE; - } + //=== VK_EXT_display_surface_counter === + vkGetPhysicalDeviceSurfaceCapabilities2EXT = PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT" ) ); + + //=== VK_EXT_display_control === + vkDisplayPowerControlEXT = + PFN_vkDisplayPowerControlEXT( vkGetInstanceProcAddr( instance, "vkDisplayPowerControlEXT" ) ); + vkRegisterDeviceEventEXT = + PFN_vkRegisterDeviceEventEXT( vkGetInstanceProcAddr( instance, "vkRegisterDeviceEventEXT" ) ); + vkRegisterDisplayEventEXT = + PFN_vkRegisterDisplayEventEXT( vkGetInstanceProcAddr( instance, "vkRegisterDisplayEventEXT" ) ); + vkGetSwapchainCounterEXT = + PFN_vkGetSwapchainCounterEXT( vkGetInstanceProcAddr( instance, "vkGetSwapchainCounterEXT" ) ); + + //=== VK_GOOGLE_display_timing === + vkGetRefreshCycleDurationGOOGLE = + PFN_vkGetRefreshCycleDurationGOOGLE( vkGetInstanceProcAddr( instance, "vkGetRefreshCycleDurationGOOGLE" ) ); + vkGetPastPresentationTimingGOOGLE = + PFN_vkGetPastPresentationTimingGOOGLE( vkGetInstanceProcAddr( instance, "vkGetPastPresentationTimingGOOGLE" ) ); + + //=== VK_EXT_discard_rectangles === + vkCmdSetDiscardRectangleEXT = + PFN_vkCmdSetDiscardRectangleEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDiscardRectangleEXT" ) ); + + //=== VK_EXT_hdr_metadata === + vkSetHdrMetadataEXT = PFN_vkSetHdrMetadataEXT( vkGetInstanceProcAddr( instance, "vkSetHdrMetadataEXT" ) ); + + //=== VK_KHR_create_renderpass2 === + vkCreateRenderPass2KHR = + PFN_vkCreateRenderPass2KHR( vkGetInstanceProcAddr( instance, "vkCreateRenderPass2KHR" ) ); + if ( !vkCreateRenderPass2 ) + vkCreateRenderPass2 = vkCreateRenderPass2KHR; + vkCmdBeginRenderPass2KHR = + PFN_vkCmdBeginRenderPass2KHR( vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass2KHR" ) ); + if ( !vkCmdBeginRenderPass2 ) + vkCmdBeginRenderPass2 = vkCmdBeginRenderPass2KHR; + vkCmdNextSubpass2KHR = PFN_vkCmdNextSubpass2KHR( vkGetInstanceProcAddr( instance, "vkCmdNextSubpass2KHR" ) ); + if ( !vkCmdNextSubpass2 ) + vkCmdNextSubpass2 = vkCmdNextSubpass2KHR; + vkCmdEndRenderPass2KHR = + PFN_vkCmdEndRenderPass2KHR( vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass2KHR" ) ); + if ( !vkCmdEndRenderPass2 ) + vkCmdEndRenderPass2 = vkCmdEndRenderPass2KHR; + + //=== VK_KHR_shared_presentable_image === + vkGetSwapchainStatusKHR = + PFN_vkGetSwapchainStatusKHR( vkGetInstanceProcAddr( instance, "vkGetSwapchainStatusKHR" ) ); + + //=== VK_KHR_external_fence_capabilities === + vkGetPhysicalDeviceExternalFencePropertiesKHR = PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR" ) ); + if ( !vkGetPhysicalDeviceExternalFenceProperties ) + vkGetPhysicalDeviceExternalFenceProperties = vkGetPhysicalDeviceExternalFencePropertiesKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + vkImportFenceWin32HandleKHR = + PFN_vkImportFenceWin32HandleKHR( vkGetInstanceProcAddr( instance, "vkImportFenceWin32HandleKHR" ) ); + vkGetFenceWin32HandleKHR = + PFN_vkGetFenceWin32HandleKHR( vkGetInstanceProcAddr( instance, "vkGetFenceWin32HandleKHR" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - private: - VkInstance m_instance; - }; - static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" ); + //=== VK_KHR_external_fence_fd === + vkImportFenceFdKHR = PFN_vkImportFenceFdKHR( vkGetInstanceProcAddr( instance, "vkImportFenceFdKHR" ) ); + vkGetFenceFdKHR = PFN_vkGetFenceFdKHR( vkGetInstanceProcAddr( instance, "vkGetFenceFdKHR" ) ); + + //=== VK_KHR_performance_query === + vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = + PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR" ) ); + vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = + PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR" ) ); + vkAcquireProfilingLockKHR = + PFN_vkAcquireProfilingLockKHR( vkGetInstanceProcAddr( instance, "vkAcquireProfilingLockKHR" ) ); + vkReleaseProfilingLockKHR = + PFN_vkReleaseProfilingLockKHR( vkGetInstanceProcAddr( instance, "vkReleaseProfilingLockKHR" ) ); + + //=== VK_KHR_get_surface_capabilities2 === + vkGetPhysicalDeviceSurfaceCapabilities2KHR = PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR" ) ); + vkGetPhysicalDeviceSurfaceFormats2KHR = PFN_vkGetPhysicalDeviceSurfaceFormats2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormats2KHR" ) ); + + //=== VK_KHR_get_display_properties2 === + vkGetPhysicalDeviceDisplayProperties2KHR = PFN_vkGetPhysicalDeviceDisplayProperties2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayProperties2KHR" ) ); + vkGetPhysicalDeviceDisplayPlaneProperties2KHR = PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" ) ); + vkGetDisplayModeProperties2KHR = + PFN_vkGetDisplayModeProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModeProperties2KHR" ) ); + vkGetDisplayPlaneCapabilities2KHR = + PFN_vkGetDisplayPlaneCapabilities2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilities2KHR" ) ); + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + vkCreateIOSSurfaceMVK = PFN_vkCreateIOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateIOSSurfaceMVK" ) ); +#endif /*VK_USE_PLATFORM_IOS_MVK*/ - template <> - struct cpp_type - { - using type = Instance; - }; +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + vkCreateMacOSSurfaceMVK = + PFN_vkCreateMacOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateMacOSSurfaceMVK" ) ); +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueInstance = UniqueHandle; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ - - template - Result createInstance( const vk::InstanceCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Instance* pInstance, Dispatch const &d = Dispatch() ); -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type createInstance( const InstanceCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ); -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - typename ResultValueType>::type createInstanceUnique( const InstanceCreateInfo & createInfo, Optional allocator = nullptr, Dispatch const &d = Dispatch() ); -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, vk::ExtensionProperties* pProperties, Dispatch const &d = Dispatch() ); -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type enumerateInstanceExtensionProperties( Optional layerName = nullptr, Dispatch const &d = Dispatch() ); - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type enumerateInstanceExtensionProperties( Optional layerName, Allocator const& vectorAllocator, Dispatch const &d ); -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, vk::LayerProperties* pProperties, Dispatch const &d = Dispatch() ); -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type enumerateInstanceLayerProperties(Dispatch const &d = Dispatch() ); - template, typename Dispatch = DispatchLoaderDefault> - typename ResultValueType>::type enumerateInstanceLayerProperties(Allocator const& vectorAllocator, Dispatch const &d ); -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - Result enumerateInstanceVersion( uint32_t* pApiVersion, Dispatch const &d = Dispatch() ); -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - ResultValueType::type enumerateInstanceVersion(Dispatch const &d = Dispatch() ); -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - namespace layout - { - struct GeometryTrianglesNV - { - protected: - GeometryTrianglesNV( vk::Buffer vertexData_ = vk::Buffer(), - vk::DeviceSize vertexOffset_ = 0, - uint32_t vertexCount_ = 0, - vk::DeviceSize vertexStride_ = 0, - vk::Format vertexFormat_ = vk::Format::eUndefined, - vk::Buffer indexData_ = vk::Buffer(), - vk::DeviceSize indexOffset_ = 0, - uint32_t indexCount_ = 0, - vk::IndexType indexType_ = vk::IndexType::eUint16, - vk::Buffer transformData_ = vk::Buffer(), - vk::DeviceSize transformOffset_ = 0 ) - : vertexData( vertexData_ ) - , vertexOffset( vertexOffset_ ) - , vertexCount( vertexCount_ ) - , vertexStride( vertexStride_ ) - , vertexFormat( vertexFormat_ ) - , indexData( indexData_ ) - , indexOffset( indexOffset_ ) - , indexCount( indexCount_ ) - , indexType( indexType_ ) - , transformData( transformData_ ) - , transformOffset( transformOffset_ ) - {} - - GeometryTrianglesNV( VkGeometryTrianglesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } + //=== VK_EXT_debug_utils === + vkSetDebugUtilsObjectNameEXT = + PFN_vkSetDebugUtilsObjectNameEXT( vkGetInstanceProcAddr( instance, "vkSetDebugUtilsObjectNameEXT" ) ); + vkSetDebugUtilsObjectTagEXT = + PFN_vkSetDebugUtilsObjectTagEXT( vkGetInstanceProcAddr( instance, "vkSetDebugUtilsObjectTagEXT" ) ); + vkQueueBeginDebugUtilsLabelEXT = + PFN_vkQueueBeginDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkQueueBeginDebugUtilsLabelEXT" ) ); + vkQueueEndDebugUtilsLabelEXT = + PFN_vkQueueEndDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkQueueEndDebugUtilsLabelEXT" ) ); + vkQueueInsertDebugUtilsLabelEXT = + PFN_vkQueueInsertDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkQueueInsertDebugUtilsLabelEXT" ) ); + vkCmdBeginDebugUtilsLabelEXT = + PFN_vkCmdBeginDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkCmdBeginDebugUtilsLabelEXT" ) ); + vkCmdEndDebugUtilsLabelEXT = + PFN_vkCmdEndDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkCmdEndDebugUtilsLabelEXT" ) ); + vkCmdInsertDebugUtilsLabelEXT = + PFN_vkCmdInsertDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkCmdInsertDebugUtilsLabelEXT" ) ); + vkCreateDebugUtilsMessengerEXT = + PFN_vkCreateDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugUtilsMessengerEXT" ) ); + vkDestroyDebugUtilsMessengerEXT = + PFN_vkDestroyDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugUtilsMessengerEXT" ) ); + vkSubmitDebugUtilsMessageEXT = + PFN_vkSubmitDebugUtilsMessageEXT( vkGetInstanceProcAddr( instance, "vkSubmitDebugUtilsMessageEXT" ) ); + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + vkGetAndroidHardwareBufferPropertiesANDROID = PFN_vkGetAndroidHardwareBufferPropertiesANDROID( + vkGetInstanceProcAddr( instance, "vkGetAndroidHardwareBufferPropertiesANDROID" ) ); + vkGetMemoryAndroidHardwareBufferANDROID = PFN_vkGetMemoryAndroidHardwareBufferANDROID( + vkGetInstanceProcAddr( instance, "vkGetMemoryAndroidHardwareBufferANDROID" ) ); +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - GeometryTrianglesNV& operator=( VkGeometryTrianglesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } + //=== VK_EXT_sample_locations === + vkCmdSetSampleLocationsEXT = + PFN_vkCmdSetSampleLocationsEXT( vkGetInstanceProcAddr( instance, "vkCmdSetSampleLocationsEXT" ) ); + vkGetPhysicalDeviceMultisamplePropertiesEXT = PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT" ) ); + + //=== VK_KHR_get_memory_requirements2 === + vkGetImageMemoryRequirements2KHR = + PFN_vkGetImageMemoryRequirements2KHR( vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements2KHR" ) ); + if ( !vkGetImageMemoryRequirements2 ) + vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2KHR; + vkGetBufferMemoryRequirements2KHR = + PFN_vkGetBufferMemoryRequirements2KHR( vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements2KHR" ) ); + if ( !vkGetBufferMemoryRequirements2 ) + vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2KHR; + vkGetImageSparseMemoryRequirements2KHR = PFN_vkGetImageSparseMemoryRequirements2KHR( + vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements2KHR" ) ); + if ( !vkGetImageSparseMemoryRequirements2 ) + vkGetImageSparseMemoryRequirements2 = vkGetImageSparseMemoryRequirements2KHR; + + //=== VK_KHR_acceleration_structure === + vkCreateAccelerationStructureKHR = + PFN_vkCreateAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkCreateAccelerationStructureKHR" ) ); + vkDestroyAccelerationStructureKHR = + PFN_vkDestroyAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkDestroyAccelerationStructureKHR" ) ); + vkCmdBuildAccelerationStructuresKHR = PFN_vkCmdBuildAccelerationStructuresKHR( + vkGetInstanceProcAddr( instance, "vkCmdBuildAccelerationStructuresKHR" ) ); + vkCmdBuildAccelerationStructuresIndirectKHR = PFN_vkCmdBuildAccelerationStructuresIndirectKHR( + vkGetInstanceProcAddr( instance, "vkCmdBuildAccelerationStructuresIndirectKHR" ) ); + vkBuildAccelerationStructuresKHR = + PFN_vkBuildAccelerationStructuresKHR( vkGetInstanceProcAddr( instance, "vkBuildAccelerationStructuresKHR" ) ); + vkCopyAccelerationStructureKHR = + PFN_vkCopyAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkCopyAccelerationStructureKHR" ) ); + vkCopyAccelerationStructureToMemoryKHR = PFN_vkCopyAccelerationStructureToMemoryKHR( + vkGetInstanceProcAddr( instance, "vkCopyAccelerationStructureToMemoryKHR" ) ); + vkCopyMemoryToAccelerationStructureKHR = PFN_vkCopyMemoryToAccelerationStructureKHR( + vkGetInstanceProcAddr( instance, "vkCopyMemoryToAccelerationStructureKHR" ) ); + vkWriteAccelerationStructuresPropertiesKHR = PFN_vkWriteAccelerationStructuresPropertiesKHR( + vkGetInstanceProcAddr( instance, "vkWriteAccelerationStructuresPropertiesKHR" ) ); + vkCmdCopyAccelerationStructureKHR = + PFN_vkCmdCopyAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkCmdCopyAccelerationStructureKHR" ) ); + vkCmdCopyAccelerationStructureToMemoryKHR = PFN_vkCmdCopyAccelerationStructureToMemoryKHR( + vkGetInstanceProcAddr( instance, "vkCmdCopyAccelerationStructureToMemoryKHR" ) ); + vkCmdCopyMemoryToAccelerationStructureKHR = PFN_vkCmdCopyMemoryToAccelerationStructureKHR( + vkGetInstanceProcAddr( instance, "vkCmdCopyMemoryToAccelerationStructureKHR" ) ); + vkGetAccelerationStructureDeviceAddressKHR = PFN_vkGetAccelerationStructureDeviceAddressKHR( + vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureDeviceAddressKHR" ) ); + vkCmdWriteAccelerationStructuresPropertiesKHR = PFN_vkCmdWriteAccelerationStructuresPropertiesKHR( + vkGetInstanceProcAddr( instance, "vkCmdWriteAccelerationStructuresPropertiesKHR" ) ); + vkGetDeviceAccelerationStructureCompatibilityKHR = PFN_vkGetDeviceAccelerationStructureCompatibilityKHR( + vkGetInstanceProcAddr( instance, "vkGetDeviceAccelerationStructureCompatibilityKHR" ) ); + vkGetAccelerationStructureBuildSizesKHR = PFN_vkGetAccelerationStructureBuildSizesKHR( + vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureBuildSizesKHR" ) ); + + //=== VK_KHR_sampler_ycbcr_conversion === + vkCreateSamplerYcbcrConversionKHR = + PFN_vkCreateSamplerYcbcrConversionKHR( vkGetInstanceProcAddr( instance, "vkCreateSamplerYcbcrConversionKHR" ) ); + if ( !vkCreateSamplerYcbcrConversion ) + vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversionKHR; + vkDestroySamplerYcbcrConversionKHR = PFN_vkDestroySamplerYcbcrConversionKHR( + vkGetInstanceProcAddr( instance, "vkDestroySamplerYcbcrConversionKHR" ) ); + if ( !vkDestroySamplerYcbcrConversion ) + vkDestroySamplerYcbcrConversion = vkDestroySamplerYcbcrConversionKHR; + + //=== VK_KHR_bind_memory2 === + vkBindBufferMemory2KHR = + PFN_vkBindBufferMemory2KHR( vkGetInstanceProcAddr( instance, "vkBindBufferMemory2KHR" ) ); + if ( !vkBindBufferMemory2 ) + vkBindBufferMemory2 = vkBindBufferMemory2KHR; + vkBindImageMemory2KHR = PFN_vkBindImageMemory2KHR( vkGetInstanceProcAddr( instance, "vkBindImageMemory2KHR" ) ); + if ( !vkBindImageMemory2 ) + vkBindImageMemory2 = vkBindImageMemory2KHR; + + //=== VK_EXT_image_drm_format_modifier === + vkGetImageDrmFormatModifierPropertiesEXT = PFN_vkGetImageDrmFormatModifierPropertiesEXT( + vkGetInstanceProcAddr( instance, "vkGetImageDrmFormatModifierPropertiesEXT" ) ); + + //=== VK_EXT_validation_cache === + vkCreateValidationCacheEXT = + PFN_vkCreateValidationCacheEXT( vkGetInstanceProcAddr( instance, "vkCreateValidationCacheEXT" ) ); + vkDestroyValidationCacheEXT = + PFN_vkDestroyValidationCacheEXT( vkGetInstanceProcAddr( instance, "vkDestroyValidationCacheEXT" ) ); + vkMergeValidationCachesEXT = + PFN_vkMergeValidationCachesEXT( vkGetInstanceProcAddr( instance, "vkMergeValidationCachesEXT" ) ); + vkGetValidationCacheDataEXT = + PFN_vkGetValidationCacheDataEXT( vkGetInstanceProcAddr( instance, "vkGetValidationCacheDataEXT" ) ); + + //=== VK_NV_shading_rate_image === + vkCmdBindShadingRateImageNV = + PFN_vkCmdBindShadingRateImageNV( vkGetInstanceProcAddr( instance, "vkCmdBindShadingRateImageNV" ) ); + vkCmdSetViewportShadingRatePaletteNV = PFN_vkCmdSetViewportShadingRatePaletteNV( + vkGetInstanceProcAddr( instance, "vkCmdSetViewportShadingRatePaletteNV" ) ); + vkCmdSetCoarseSampleOrderNV = + PFN_vkCmdSetCoarseSampleOrderNV( vkGetInstanceProcAddr( instance, "vkCmdSetCoarseSampleOrderNV" ) ); + + //=== VK_NV_ray_tracing === + vkCreateAccelerationStructureNV = + PFN_vkCreateAccelerationStructureNV( vkGetInstanceProcAddr( instance, "vkCreateAccelerationStructureNV" ) ); + vkDestroyAccelerationStructureNV = + PFN_vkDestroyAccelerationStructureNV( vkGetInstanceProcAddr( instance, "vkDestroyAccelerationStructureNV" ) ); + vkGetAccelerationStructureMemoryRequirementsNV = PFN_vkGetAccelerationStructureMemoryRequirementsNV( + vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureMemoryRequirementsNV" ) ); + vkBindAccelerationStructureMemoryNV = PFN_vkBindAccelerationStructureMemoryNV( + vkGetInstanceProcAddr( instance, "vkBindAccelerationStructureMemoryNV" ) ); + vkCmdBuildAccelerationStructureNV = + PFN_vkCmdBuildAccelerationStructureNV( vkGetInstanceProcAddr( instance, "vkCmdBuildAccelerationStructureNV" ) ); + vkCmdCopyAccelerationStructureNV = + PFN_vkCmdCopyAccelerationStructureNV( vkGetInstanceProcAddr( instance, "vkCmdCopyAccelerationStructureNV" ) ); + vkCmdTraceRaysNV = PFN_vkCmdTraceRaysNV( vkGetInstanceProcAddr( instance, "vkCmdTraceRaysNV" ) ); + vkCreateRayTracingPipelinesNV = + PFN_vkCreateRayTracingPipelinesNV( vkGetInstanceProcAddr( instance, "vkCreateRayTracingPipelinesNV" ) ); + vkGetRayTracingShaderGroupHandlesNV = PFN_vkGetRayTracingShaderGroupHandlesNV( + vkGetInstanceProcAddr( instance, "vkGetRayTracingShaderGroupHandlesNV" ) ); + if ( !vkGetRayTracingShaderGroupHandlesKHR ) + vkGetRayTracingShaderGroupHandlesKHR = vkGetRayTracingShaderGroupHandlesNV; + vkGetAccelerationStructureHandleNV = PFN_vkGetAccelerationStructureHandleNV( + vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureHandleNV" ) ); + vkCmdWriteAccelerationStructuresPropertiesNV = PFN_vkCmdWriteAccelerationStructuresPropertiesNV( + vkGetInstanceProcAddr( instance, "vkCmdWriteAccelerationStructuresPropertiesNV" ) ); + vkCompileDeferredNV = PFN_vkCompileDeferredNV( vkGetInstanceProcAddr( instance, "vkCompileDeferredNV" ) ); + + //=== VK_KHR_maintenance3 === + vkGetDescriptorSetLayoutSupportKHR = PFN_vkGetDescriptorSetLayoutSupportKHR( + vkGetInstanceProcAddr( instance, "vkGetDescriptorSetLayoutSupportKHR" ) ); + if ( !vkGetDescriptorSetLayoutSupport ) + vkGetDescriptorSetLayoutSupport = vkGetDescriptorSetLayoutSupportKHR; + + //=== VK_KHR_draw_indirect_count === + vkCmdDrawIndirectCountKHR = + PFN_vkCmdDrawIndirectCountKHR( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCountKHR" ) ); + if ( !vkCmdDrawIndirectCount ) + vkCmdDrawIndirectCount = vkCmdDrawIndirectCountKHR; + vkCmdDrawIndexedIndirectCountKHR = + PFN_vkCmdDrawIndexedIndirectCountKHR( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCountKHR" ) ); + if ( !vkCmdDrawIndexedIndirectCount ) + vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountKHR; + + //=== VK_EXT_external_memory_host === + vkGetMemoryHostPointerPropertiesEXT = PFN_vkGetMemoryHostPointerPropertiesEXT( + vkGetInstanceProcAddr( instance, "vkGetMemoryHostPointerPropertiesEXT" ) ); + + //=== VK_AMD_buffer_marker === + vkCmdWriteBufferMarkerAMD = + PFN_vkCmdWriteBufferMarkerAMD( vkGetInstanceProcAddr( instance, "vkCmdWriteBufferMarkerAMD" ) ); + + //=== VK_EXT_calibrated_timestamps === + vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT" ) ); + vkGetCalibratedTimestampsEXT = + PFN_vkGetCalibratedTimestampsEXT( vkGetInstanceProcAddr( instance, "vkGetCalibratedTimestampsEXT" ) ); + + //=== VK_NV_mesh_shader === + vkCmdDrawMeshTasksNV = PFN_vkCmdDrawMeshTasksNV( vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksNV" ) ); + vkCmdDrawMeshTasksIndirectNV = + PFN_vkCmdDrawMeshTasksIndirectNV( vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectNV" ) ); + vkCmdDrawMeshTasksIndirectCountNV = + PFN_vkCmdDrawMeshTasksIndirectCountNV( vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectCountNV" ) ); + + //=== VK_NV_scissor_exclusive === + vkCmdSetExclusiveScissorNV = + PFN_vkCmdSetExclusiveScissorNV( vkGetInstanceProcAddr( instance, "vkCmdSetExclusiveScissorNV" ) ); + + //=== VK_NV_device_diagnostic_checkpoints === + vkCmdSetCheckpointNV = PFN_vkCmdSetCheckpointNV( vkGetInstanceProcAddr( instance, "vkCmdSetCheckpointNV" ) ); + vkGetQueueCheckpointDataNV = + PFN_vkGetQueueCheckpointDataNV( vkGetInstanceProcAddr( instance, "vkGetQueueCheckpointDataNV" ) ); + + //=== VK_KHR_timeline_semaphore === + vkGetSemaphoreCounterValueKHR = + PFN_vkGetSemaphoreCounterValueKHR( vkGetInstanceProcAddr( instance, "vkGetSemaphoreCounterValueKHR" ) ); + if ( !vkGetSemaphoreCounterValue ) + vkGetSemaphoreCounterValue = vkGetSemaphoreCounterValueKHR; + vkWaitSemaphoresKHR = PFN_vkWaitSemaphoresKHR( vkGetInstanceProcAddr( instance, "vkWaitSemaphoresKHR" ) ); + if ( !vkWaitSemaphores ) + vkWaitSemaphores = vkWaitSemaphoresKHR; + vkSignalSemaphoreKHR = PFN_vkSignalSemaphoreKHR( vkGetInstanceProcAddr( instance, "vkSignalSemaphoreKHR" ) ); + if ( !vkSignalSemaphore ) + vkSignalSemaphore = vkSignalSemaphoreKHR; + + //=== VK_INTEL_performance_query === + vkInitializePerformanceApiINTEL = + PFN_vkInitializePerformanceApiINTEL( vkGetInstanceProcAddr( instance, "vkInitializePerformanceApiINTEL" ) ); + vkUninitializePerformanceApiINTEL = + PFN_vkUninitializePerformanceApiINTEL( vkGetInstanceProcAddr( instance, "vkUninitializePerformanceApiINTEL" ) ); + vkCmdSetPerformanceMarkerINTEL = + PFN_vkCmdSetPerformanceMarkerINTEL( vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceMarkerINTEL" ) ); + vkCmdSetPerformanceStreamMarkerINTEL = PFN_vkCmdSetPerformanceStreamMarkerINTEL( + vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceStreamMarkerINTEL" ) ); + vkCmdSetPerformanceOverrideINTEL = + PFN_vkCmdSetPerformanceOverrideINTEL( vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceOverrideINTEL" ) ); + vkAcquirePerformanceConfigurationINTEL = PFN_vkAcquirePerformanceConfigurationINTEL( + vkGetInstanceProcAddr( instance, "vkAcquirePerformanceConfigurationINTEL" ) ); + vkReleasePerformanceConfigurationINTEL = PFN_vkReleasePerformanceConfigurationINTEL( + vkGetInstanceProcAddr( instance, "vkReleasePerformanceConfigurationINTEL" ) ); + vkQueueSetPerformanceConfigurationINTEL = PFN_vkQueueSetPerformanceConfigurationINTEL( + vkGetInstanceProcAddr( instance, "vkQueueSetPerformanceConfigurationINTEL" ) ); + vkGetPerformanceParameterINTEL = + PFN_vkGetPerformanceParameterINTEL( vkGetInstanceProcAddr( instance, "vkGetPerformanceParameterINTEL" ) ); + + //=== VK_AMD_display_native_hdr === + vkSetLocalDimmingAMD = PFN_vkSetLocalDimmingAMD( vkGetInstanceProcAddr( instance, "vkSetLocalDimmingAMD" ) ); + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + vkCreateImagePipeSurfaceFUCHSIA = + PFN_vkCreateImagePipeSurfaceFUCHSIA( vkGetInstanceProcAddr( instance, "vkCreateImagePipeSurfaceFUCHSIA" ) ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ - public: - vk::StructureType sType = StructureType::eGeometryTrianglesNV; - const void* pNext = nullptr; - vk::Buffer vertexData; - vk::DeviceSize vertexOffset; - uint32_t vertexCount; - vk::DeviceSize vertexStride; - vk::Format vertexFormat; - vk::Buffer indexData; - vk::DeviceSize indexOffset; - uint32_t indexCount; - vk::IndexType indexType; - vk::Buffer transformData; - vk::DeviceSize transformOffset; - }; - static_assert( sizeof( GeometryTrianglesNV ) == sizeof( VkGeometryTrianglesNV ), "layout struct and wrapper have different size!" ); - } +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + vkCreateMetalSurfaceEXT = + PFN_vkCreateMetalSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateMetalSurfaceEXT" ) ); +#endif /*VK_USE_PLATFORM_METAL_EXT*/ - struct GeometryTrianglesNV : public layout::GeometryTrianglesNV - { - GeometryTrianglesNV( vk::Buffer vertexData_ = vk::Buffer(), - vk::DeviceSize vertexOffset_ = 0, - uint32_t vertexCount_ = 0, - vk::DeviceSize vertexStride_ = 0, - vk::Format vertexFormat_ = vk::Format::eUndefined, - vk::Buffer indexData_ = vk::Buffer(), - vk::DeviceSize indexOffset_ = 0, - uint32_t indexCount_ = 0, - vk::IndexType indexType_ = vk::IndexType::eUint16, - vk::Buffer transformData_ = vk::Buffer(), - vk::DeviceSize transformOffset_ = 0 ) - : layout::GeometryTrianglesNV( vertexData_, vertexOffset_, vertexCount_, vertexStride_, vertexFormat_, indexData_, indexOffset_, indexCount_, indexType_, transformData_, transformOffset_ ) - {} + //=== VK_KHR_fragment_shading_rate === + vkGetPhysicalDeviceFragmentShadingRatesKHR = PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFragmentShadingRatesKHR" ) ); + vkCmdSetFragmentShadingRateKHR = + PFN_vkCmdSetFragmentShadingRateKHR( vkGetInstanceProcAddr( instance, "vkCmdSetFragmentShadingRateKHR" ) ); + + //=== VK_EXT_buffer_device_address === + vkGetBufferDeviceAddressEXT = + PFN_vkGetBufferDeviceAddressEXT( vkGetInstanceProcAddr( instance, "vkGetBufferDeviceAddressEXT" ) ); + if ( !vkGetBufferDeviceAddress ) + vkGetBufferDeviceAddress = vkGetBufferDeviceAddressEXT; + + //=== VK_EXT_tooling_info === + vkGetPhysicalDeviceToolPropertiesEXT = PFN_vkGetPhysicalDeviceToolPropertiesEXT( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolPropertiesEXT" ) ); + if ( !vkGetPhysicalDeviceToolProperties ) + vkGetPhysicalDeviceToolProperties = vkGetPhysicalDeviceToolPropertiesEXT; + + //=== VK_KHR_present_wait === + vkWaitForPresentKHR = PFN_vkWaitForPresentKHR( vkGetInstanceProcAddr( instance, "vkWaitForPresentKHR" ) ); + + //=== VK_NV_cooperative_matrix === + vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV" ) ); + + //=== VK_NV_coverage_reduction_mode === + vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = + PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV" ) ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + vkGetPhysicalDeviceSurfacePresentModes2EXT = PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModes2EXT" ) ); + vkAcquireFullScreenExclusiveModeEXT = PFN_vkAcquireFullScreenExclusiveModeEXT( + vkGetInstanceProcAddr( instance, "vkAcquireFullScreenExclusiveModeEXT" ) ); + vkReleaseFullScreenExclusiveModeEXT = PFN_vkReleaseFullScreenExclusiveModeEXT( + vkGetInstanceProcAddr( instance, "vkReleaseFullScreenExclusiveModeEXT" ) ); + vkGetDeviceGroupSurfacePresentModes2EXT = PFN_vkGetDeviceGroupSurfacePresentModes2EXT( + vkGetInstanceProcAddr( instance, "vkGetDeviceGroupSurfacePresentModes2EXT" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - GeometryTrianglesNV( VkGeometryTrianglesNV const & rhs ) - : layout::GeometryTrianglesNV( rhs ) - {} + //=== VK_EXT_headless_surface === + vkCreateHeadlessSurfaceEXT = + PFN_vkCreateHeadlessSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateHeadlessSurfaceEXT" ) ); + + //=== VK_KHR_buffer_device_address === + vkGetBufferDeviceAddressKHR = + PFN_vkGetBufferDeviceAddressKHR( vkGetInstanceProcAddr( instance, "vkGetBufferDeviceAddressKHR" ) ); + if ( !vkGetBufferDeviceAddress ) + vkGetBufferDeviceAddress = vkGetBufferDeviceAddressKHR; + vkGetBufferOpaqueCaptureAddressKHR = PFN_vkGetBufferOpaqueCaptureAddressKHR( + vkGetInstanceProcAddr( instance, "vkGetBufferOpaqueCaptureAddressKHR" ) ); + if ( !vkGetBufferOpaqueCaptureAddress ) + vkGetBufferOpaqueCaptureAddress = vkGetBufferOpaqueCaptureAddressKHR; + vkGetDeviceMemoryOpaqueCaptureAddressKHR = PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR( + vkGetInstanceProcAddr( instance, "vkGetDeviceMemoryOpaqueCaptureAddressKHR" ) ); + if ( !vkGetDeviceMemoryOpaqueCaptureAddress ) + vkGetDeviceMemoryOpaqueCaptureAddress = vkGetDeviceMemoryOpaqueCaptureAddressKHR; + + //=== VK_EXT_line_rasterization === + vkCmdSetLineStippleEXT = + PFN_vkCmdSetLineStippleEXT( vkGetInstanceProcAddr( instance, "vkCmdSetLineStippleEXT" ) ); + + //=== VK_EXT_host_query_reset === + vkResetQueryPoolEXT = PFN_vkResetQueryPoolEXT( vkGetInstanceProcAddr( instance, "vkResetQueryPoolEXT" ) ); + if ( !vkResetQueryPool ) + vkResetQueryPool = vkResetQueryPoolEXT; + + //=== VK_EXT_extended_dynamic_state === + vkCmdSetCullModeEXT = PFN_vkCmdSetCullModeEXT( vkGetInstanceProcAddr( instance, "vkCmdSetCullModeEXT" ) ); + if ( !vkCmdSetCullMode ) + vkCmdSetCullMode = vkCmdSetCullModeEXT; + vkCmdSetFrontFaceEXT = PFN_vkCmdSetFrontFaceEXT( vkGetInstanceProcAddr( instance, "vkCmdSetFrontFaceEXT" ) ); + if ( !vkCmdSetFrontFace ) + vkCmdSetFrontFace = vkCmdSetFrontFaceEXT; + vkCmdSetPrimitiveTopologyEXT = + PFN_vkCmdSetPrimitiveTopologyEXT( vkGetInstanceProcAddr( instance, "vkCmdSetPrimitiveTopologyEXT" ) ); + if ( !vkCmdSetPrimitiveTopology ) + vkCmdSetPrimitiveTopology = vkCmdSetPrimitiveTopologyEXT; + vkCmdSetViewportWithCountEXT = + PFN_vkCmdSetViewportWithCountEXT( vkGetInstanceProcAddr( instance, "vkCmdSetViewportWithCountEXT" ) ); + if ( !vkCmdSetViewportWithCount ) + vkCmdSetViewportWithCount = vkCmdSetViewportWithCountEXT; + vkCmdSetScissorWithCountEXT = + PFN_vkCmdSetScissorWithCountEXT( vkGetInstanceProcAddr( instance, "vkCmdSetScissorWithCountEXT" ) ); + if ( !vkCmdSetScissorWithCount ) + vkCmdSetScissorWithCount = vkCmdSetScissorWithCountEXT; + vkCmdBindVertexBuffers2EXT = + PFN_vkCmdBindVertexBuffers2EXT( vkGetInstanceProcAddr( instance, "vkCmdBindVertexBuffers2EXT" ) ); + if ( !vkCmdBindVertexBuffers2 ) + vkCmdBindVertexBuffers2 = vkCmdBindVertexBuffers2EXT; + vkCmdSetDepthTestEnableEXT = + PFN_vkCmdSetDepthTestEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthTestEnableEXT" ) ); + if ( !vkCmdSetDepthTestEnable ) + vkCmdSetDepthTestEnable = vkCmdSetDepthTestEnableEXT; + vkCmdSetDepthWriteEnableEXT = + PFN_vkCmdSetDepthWriteEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthWriteEnableEXT" ) ); + if ( !vkCmdSetDepthWriteEnable ) + vkCmdSetDepthWriteEnable = vkCmdSetDepthWriteEnableEXT; + vkCmdSetDepthCompareOpEXT = + PFN_vkCmdSetDepthCompareOpEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthCompareOpEXT" ) ); + if ( !vkCmdSetDepthCompareOp ) + vkCmdSetDepthCompareOp = vkCmdSetDepthCompareOpEXT; + vkCmdSetDepthBoundsTestEnableEXT = + PFN_vkCmdSetDepthBoundsTestEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBoundsTestEnableEXT" ) ); + if ( !vkCmdSetDepthBoundsTestEnable ) + vkCmdSetDepthBoundsTestEnable = vkCmdSetDepthBoundsTestEnableEXT; + vkCmdSetStencilTestEnableEXT = + PFN_vkCmdSetStencilTestEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetStencilTestEnableEXT" ) ); + if ( !vkCmdSetStencilTestEnable ) + vkCmdSetStencilTestEnable = vkCmdSetStencilTestEnableEXT; + vkCmdSetStencilOpEXT = PFN_vkCmdSetStencilOpEXT( vkGetInstanceProcAddr( instance, "vkCmdSetStencilOpEXT" ) ); + if ( !vkCmdSetStencilOp ) + vkCmdSetStencilOp = vkCmdSetStencilOpEXT; + + //=== VK_KHR_deferred_host_operations === + vkCreateDeferredOperationKHR = + PFN_vkCreateDeferredOperationKHR( vkGetInstanceProcAddr( instance, "vkCreateDeferredOperationKHR" ) ); + vkDestroyDeferredOperationKHR = + PFN_vkDestroyDeferredOperationKHR( vkGetInstanceProcAddr( instance, "vkDestroyDeferredOperationKHR" ) ); + vkGetDeferredOperationMaxConcurrencyKHR = PFN_vkGetDeferredOperationMaxConcurrencyKHR( + vkGetInstanceProcAddr( instance, "vkGetDeferredOperationMaxConcurrencyKHR" ) ); + vkGetDeferredOperationResultKHR = + PFN_vkGetDeferredOperationResultKHR( vkGetInstanceProcAddr( instance, "vkGetDeferredOperationResultKHR" ) ); + vkDeferredOperationJoinKHR = + PFN_vkDeferredOperationJoinKHR( vkGetInstanceProcAddr( instance, "vkDeferredOperationJoinKHR" ) ); + + //=== VK_KHR_pipeline_executable_properties === + vkGetPipelineExecutablePropertiesKHR = PFN_vkGetPipelineExecutablePropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPipelineExecutablePropertiesKHR" ) ); + vkGetPipelineExecutableStatisticsKHR = PFN_vkGetPipelineExecutableStatisticsKHR( + vkGetInstanceProcAddr( instance, "vkGetPipelineExecutableStatisticsKHR" ) ); + vkGetPipelineExecutableInternalRepresentationsKHR = PFN_vkGetPipelineExecutableInternalRepresentationsKHR( + vkGetInstanceProcAddr( instance, "vkGetPipelineExecutableInternalRepresentationsKHR" ) ); + + //=== VK_NV_device_generated_commands === + vkGetGeneratedCommandsMemoryRequirementsNV = PFN_vkGetGeneratedCommandsMemoryRequirementsNV( + vkGetInstanceProcAddr( instance, "vkGetGeneratedCommandsMemoryRequirementsNV" ) ); + vkCmdPreprocessGeneratedCommandsNV = PFN_vkCmdPreprocessGeneratedCommandsNV( + vkGetInstanceProcAddr( instance, "vkCmdPreprocessGeneratedCommandsNV" ) ); + vkCmdExecuteGeneratedCommandsNV = + PFN_vkCmdExecuteGeneratedCommandsNV( vkGetInstanceProcAddr( instance, "vkCmdExecuteGeneratedCommandsNV" ) ); + vkCmdBindPipelineShaderGroupNV = + PFN_vkCmdBindPipelineShaderGroupNV( vkGetInstanceProcAddr( instance, "vkCmdBindPipelineShaderGroupNV" ) ); + vkCreateIndirectCommandsLayoutNV = + PFN_vkCreateIndirectCommandsLayoutNV( vkGetInstanceProcAddr( instance, "vkCreateIndirectCommandsLayoutNV" ) ); + vkDestroyIndirectCommandsLayoutNV = + PFN_vkDestroyIndirectCommandsLayoutNV( vkGetInstanceProcAddr( instance, "vkDestroyIndirectCommandsLayoutNV" ) ); + + //=== VK_EXT_acquire_drm_display === + vkAcquireDrmDisplayEXT = + PFN_vkAcquireDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireDrmDisplayEXT" ) ); + vkGetDrmDisplayEXT = PFN_vkGetDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetDrmDisplayEXT" ) ); + + //=== VK_EXT_private_data === + vkCreatePrivateDataSlotEXT = + PFN_vkCreatePrivateDataSlotEXT( vkGetInstanceProcAddr( instance, "vkCreatePrivateDataSlotEXT" ) ); + if ( !vkCreatePrivateDataSlot ) + vkCreatePrivateDataSlot = vkCreatePrivateDataSlotEXT; + vkDestroyPrivateDataSlotEXT = + PFN_vkDestroyPrivateDataSlotEXT( vkGetInstanceProcAddr( instance, "vkDestroyPrivateDataSlotEXT" ) ); + if ( !vkDestroyPrivateDataSlot ) + vkDestroyPrivateDataSlot = vkDestroyPrivateDataSlotEXT; + vkSetPrivateDataEXT = PFN_vkSetPrivateDataEXT( vkGetInstanceProcAddr( instance, "vkSetPrivateDataEXT" ) ); + if ( !vkSetPrivateData ) + vkSetPrivateData = vkSetPrivateDataEXT; + vkGetPrivateDataEXT = PFN_vkGetPrivateDataEXT( vkGetInstanceProcAddr( instance, "vkGetPrivateDataEXT" ) ); + if ( !vkGetPrivateData ) + vkGetPrivateData = vkGetPrivateDataEXT; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_encode_queue === + vkCmdEncodeVideoKHR = PFN_vkCmdEncodeVideoKHR( vkGetInstanceProcAddr( instance, "vkCmdEncodeVideoKHR" ) ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_KHR_synchronization2 === + vkCmdSetEvent2KHR = PFN_vkCmdSetEvent2KHR( vkGetInstanceProcAddr( instance, "vkCmdSetEvent2KHR" ) ); + if ( !vkCmdSetEvent2 ) + vkCmdSetEvent2 = vkCmdSetEvent2KHR; + vkCmdResetEvent2KHR = PFN_vkCmdResetEvent2KHR( vkGetInstanceProcAddr( instance, "vkCmdResetEvent2KHR" ) ); + if ( !vkCmdResetEvent2 ) + vkCmdResetEvent2 = vkCmdResetEvent2KHR; + vkCmdWaitEvents2KHR = PFN_vkCmdWaitEvents2KHR( vkGetInstanceProcAddr( instance, "vkCmdWaitEvents2KHR" ) ); + if ( !vkCmdWaitEvents2 ) + vkCmdWaitEvents2 = vkCmdWaitEvents2KHR; + vkCmdPipelineBarrier2KHR = + PFN_vkCmdPipelineBarrier2KHR( vkGetInstanceProcAddr( instance, "vkCmdPipelineBarrier2KHR" ) ); + if ( !vkCmdPipelineBarrier2 ) + vkCmdPipelineBarrier2 = vkCmdPipelineBarrier2KHR; + vkCmdWriteTimestamp2KHR = + PFN_vkCmdWriteTimestamp2KHR( vkGetInstanceProcAddr( instance, "vkCmdWriteTimestamp2KHR" ) ); + if ( !vkCmdWriteTimestamp2 ) + vkCmdWriteTimestamp2 = vkCmdWriteTimestamp2KHR; + vkQueueSubmit2KHR = PFN_vkQueueSubmit2KHR( vkGetInstanceProcAddr( instance, "vkQueueSubmit2KHR" ) ); + if ( !vkQueueSubmit2 ) + vkQueueSubmit2 = vkQueueSubmit2KHR; + vkCmdWriteBufferMarker2AMD = + PFN_vkCmdWriteBufferMarker2AMD( vkGetInstanceProcAddr( instance, "vkCmdWriteBufferMarker2AMD" ) ); + vkGetQueueCheckpointData2NV = + PFN_vkGetQueueCheckpointData2NV( vkGetInstanceProcAddr( instance, "vkGetQueueCheckpointData2NV" ) ); + + //=== VK_NV_fragment_shading_rate_enums === + vkCmdSetFragmentShadingRateEnumNV = + PFN_vkCmdSetFragmentShadingRateEnumNV( vkGetInstanceProcAddr( instance, "vkCmdSetFragmentShadingRateEnumNV" ) ); + + //=== VK_KHR_copy_commands2 === + vkCmdCopyBuffer2KHR = PFN_vkCmdCopyBuffer2KHR( vkGetInstanceProcAddr( instance, "vkCmdCopyBuffer2KHR" ) ); + if ( !vkCmdCopyBuffer2 ) + vkCmdCopyBuffer2 = vkCmdCopyBuffer2KHR; + vkCmdCopyImage2KHR = PFN_vkCmdCopyImage2KHR( vkGetInstanceProcAddr( instance, "vkCmdCopyImage2KHR" ) ); + if ( !vkCmdCopyImage2 ) + vkCmdCopyImage2 = vkCmdCopyImage2KHR; + vkCmdCopyBufferToImage2KHR = + PFN_vkCmdCopyBufferToImage2KHR( vkGetInstanceProcAddr( instance, "vkCmdCopyBufferToImage2KHR" ) ); + if ( !vkCmdCopyBufferToImage2 ) + vkCmdCopyBufferToImage2 = vkCmdCopyBufferToImage2KHR; + vkCmdCopyImageToBuffer2KHR = + PFN_vkCmdCopyImageToBuffer2KHR( vkGetInstanceProcAddr( instance, "vkCmdCopyImageToBuffer2KHR" ) ); + if ( !vkCmdCopyImageToBuffer2 ) + vkCmdCopyImageToBuffer2 = vkCmdCopyImageToBuffer2KHR; + vkCmdBlitImage2KHR = PFN_vkCmdBlitImage2KHR( vkGetInstanceProcAddr( instance, "vkCmdBlitImage2KHR" ) ); + if ( !vkCmdBlitImage2 ) + vkCmdBlitImage2 = vkCmdBlitImage2KHR; + vkCmdResolveImage2KHR = PFN_vkCmdResolveImage2KHR( vkGetInstanceProcAddr( instance, "vkCmdResolveImage2KHR" ) ); + if ( !vkCmdResolveImage2 ) + vkCmdResolveImage2 = vkCmdResolveImage2KHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + vkAcquireWinrtDisplayNV = + PFN_vkAcquireWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkAcquireWinrtDisplayNV" ) ); + vkGetWinrtDisplayNV = PFN_vkGetWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkGetWinrtDisplayNV" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - GeometryTrianglesNV& operator=( VkGeometryTrianglesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + vkCreateDirectFBSurfaceEXT = + PFN_vkCreateDirectFBSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateDirectFBSurfaceEXT" ) ); + vkGetPhysicalDeviceDirectFBPresentationSupportEXT = PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT" ) ); +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_KHR_ray_tracing_pipeline === + vkCmdTraceRaysKHR = PFN_vkCmdTraceRaysKHR( vkGetInstanceProcAddr( instance, "vkCmdTraceRaysKHR" ) ); + vkCreateRayTracingPipelinesKHR = + PFN_vkCreateRayTracingPipelinesKHR( vkGetInstanceProcAddr( instance, "vkCreateRayTracingPipelinesKHR" ) ); + vkGetRayTracingShaderGroupHandlesKHR = PFN_vkGetRayTracingShaderGroupHandlesKHR( + vkGetInstanceProcAddr( instance, "vkGetRayTracingShaderGroupHandlesKHR" ) ); + vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( + vkGetInstanceProcAddr( instance, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" ) ); + vkCmdTraceRaysIndirectKHR = + PFN_vkCmdTraceRaysIndirectKHR( vkGetInstanceProcAddr( instance, "vkCmdTraceRaysIndirectKHR" ) ); + vkGetRayTracingShaderGroupStackSizeKHR = PFN_vkGetRayTracingShaderGroupStackSizeKHR( + vkGetInstanceProcAddr( instance, "vkGetRayTracingShaderGroupStackSizeKHR" ) ); + vkCmdSetRayTracingPipelineStackSizeKHR = PFN_vkCmdSetRayTracingPipelineStackSizeKHR( + vkGetInstanceProcAddr( instance, "vkCmdSetRayTracingPipelineStackSizeKHR" ) ); + + //=== VK_EXT_vertex_input_dynamic_state === + vkCmdSetVertexInputEXT = + PFN_vkCmdSetVertexInputEXT( vkGetInstanceProcAddr( instance, "vkCmdSetVertexInputEXT" ) ); + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + vkGetMemoryZirconHandleFUCHSIA = + PFN_vkGetMemoryZirconHandleFUCHSIA( vkGetInstanceProcAddr( instance, "vkGetMemoryZirconHandleFUCHSIA" ) ); + vkGetMemoryZirconHandlePropertiesFUCHSIA = PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA( + vkGetInstanceProcAddr( instance, "vkGetMemoryZirconHandlePropertiesFUCHSIA" ) ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ - GeometryTrianglesNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + vkImportSemaphoreZirconHandleFUCHSIA = PFN_vkImportSemaphoreZirconHandleFUCHSIA( + vkGetInstanceProcAddr( instance, "vkImportSemaphoreZirconHandleFUCHSIA" ) ); + vkGetSemaphoreZirconHandleFUCHSIA = + PFN_vkGetSemaphoreZirconHandleFUCHSIA( vkGetInstanceProcAddr( instance, "vkGetSemaphoreZirconHandleFUCHSIA" ) ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ - GeometryTrianglesNV & setVertexData( vk::Buffer vertexData_ ) - { - vertexData = vertexData_; - return *this; - } +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + vkCreateBufferCollectionFUCHSIA = + PFN_vkCreateBufferCollectionFUCHSIA( vkGetInstanceProcAddr( instance, "vkCreateBufferCollectionFUCHSIA" ) ); + vkSetBufferCollectionImageConstraintsFUCHSIA = PFN_vkSetBufferCollectionImageConstraintsFUCHSIA( + vkGetInstanceProcAddr( instance, "vkSetBufferCollectionImageConstraintsFUCHSIA" ) ); + vkSetBufferCollectionBufferConstraintsFUCHSIA = PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA( + vkGetInstanceProcAddr( instance, "vkSetBufferCollectionBufferConstraintsFUCHSIA" ) ); + vkDestroyBufferCollectionFUCHSIA = + PFN_vkDestroyBufferCollectionFUCHSIA( vkGetInstanceProcAddr( instance, "vkDestroyBufferCollectionFUCHSIA" ) ); + vkGetBufferCollectionPropertiesFUCHSIA = PFN_vkGetBufferCollectionPropertiesFUCHSIA( + vkGetInstanceProcAddr( instance, "vkGetBufferCollectionPropertiesFUCHSIA" ) ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ - GeometryTrianglesNV & setVertexOffset( vk::DeviceSize vertexOffset_ ) - { - vertexOffset = vertexOffset_; - return *this; - } + //=== VK_HUAWEI_subpass_shading === + vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( + vkGetInstanceProcAddr( instance, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI" ) ); + vkCmdSubpassShadingHUAWEI = + PFN_vkCmdSubpassShadingHUAWEI( vkGetInstanceProcAddr( instance, "vkCmdSubpassShadingHUAWEI" ) ); + + //=== VK_HUAWEI_invocation_mask === + vkCmdBindInvocationMaskHUAWEI = + PFN_vkCmdBindInvocationMaskHUAWEI( vkGetInstanceProcAddr( instance, "vkCmdBindInvocationMaskHUAWEI" ) ); + + //=== VK_NV_external_memory_rdma === + vkGetMemoryRemoteAddressNV = + PFN_vkGetMemoryRemoteAddressNV( vkGetInstanceProcAddr( instance, "vkGetMemoryRemoteAddressNV" ) ); + + //=== VK_EXT_extended_dynamic_state2 === + vkCmdSetPatchControlPointsEXT = + PFN_vkCmdSetPatchControlPointsEXT( vkGetInstanceProcAddr( instance, "vkCmdSetPatchControlPointsEXT" ) ); + vkCmdSetRasterizerDiscardEnableEXT = PFN_vkCmdSetRasterizerDiscardEnableEXT( + vkGetInstanceProcAddr( instance, "vkCmdSetRasterizerDiscardEnableEXT" ) ); + if ( !vkCmdSetRasterizerDiscardEnable ) + vkCmdSetRasterizerDiscardEnable = vkCmdSetRasterizerDiscardEnableEXT; + vkCmdSetDepthBiasEnableEXT = + PFN_vkCmdSetDepthBiasEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBiasEnableEXT" ) ); + if ( !vkCmdSetDepthBiasEnable ) + vkCmdSetDepthBiasEnable = vkCmdSetDepthBiasEnableEXT; + vkCmdSetLogicOpEXT = PFN_vkCmdSetLogicOpEXT( vkGetInstanceProcAddr( instance, "vkCmdSetLogicOpEXT" ) ); + vkCmdSetPrimitiveRestartEnableEXT = + PFN_vkCmdSetPrimitiveRestartEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetPrimitiveRestartEnableEXT" ) ); + if ( !vkCmdSetPrimitiveRestartEnable ) + vkCmdSetPrimitiveRestartEnable = vkCmdSetPrimitiveRestartEnableEXT; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + vkCreateScreenSurfaceQNX = + PFN_vkCreateScreenSurfaceQNX( vkGetInstanceProcAddr( instance, "vkCreateScreenSurfaceQNX" ) ); + vkGetPhysicalDeviceScreenPresentationSupportQNX = PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceScreenPresentationSupportQNX" ) ); +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_EXT_color_write_enable === + vkCmdSetColorWriteEnableEXT = + PFN_vkCmdSetColorWriteEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetColorWriteEnableEXT" ) ); + + //=== VK_EXT_multi_draw === + vkCmdDrawMultiEXT = PFN_vkCmdDrawMultiEXT( vkGetInstanceProcAddr( instance, "vkCmdDrawMultiEXT" ) ); + vkCmdDrawMultiIndexedEXT = + PFN_vkCmdDrawMultiIndexedEXT( vkGetInstanceProcAddr( instance, "vkCmdDrawMultiIndexedEXT" ) ); + + //=== VK_EXT_pageable_device_local_memory === + vkSetDeviceMemoryPriorityEXT = + PFN_vkSetDeviceMemoryPriorityEXT( vkGetInstanceProcAddr( instance, "vkSetDeviceMemoryPriorityEXT" ) ); + + //=== VK_KHR_maintenance4 === + vkGetDeviceBufferMemoryRequirementsKHR = PFN_vkGetDeviceBufferMemoryRequirementsKHR( + vkGetInstanceProcAddr( instance, "vkGetDeviceBufferMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceBufferMemoryRequirements ) + vkGetDeviceBufferMemoryRequirements = vkGetDeviceBufferMemoryRequirementsKHR; + vkGetDeviceImageMemoryRequirementsKHR = PFN_vkGetDeviceImageMemoryRequirementsKHR( + vkGetInstanceProcAddr( instance, "vkGetDeviceImageMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceImageMemoryRequirements ) + vkGetDeviceImageMemoryRequirements = vkGetDeviceImageMemoryRequirementsKHR; + vkGetDeviceImageSparseMemoryRequirementsKHR = PFN_vkGetDeviceImageSparseMemoryRequirementsKHR( + vkGetInstanceProcAddr( instance, "vkGetDeviceImageSparseMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceImageSparseMemoryRequirements ) + vkGetDeviceImageSparseMemoryRequirements = vkGetDeviceImageSparseMemoryRequirementsKHR; + } + + void init( VULKAN_HPP_NAMESPACE::Device deviceCpp ) VULKAN_HPP_NOEXCEPT + { + VkDevice device = static_cast( deviceCpp ); + + //=== VK_VERSION_1_0 === + vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetDeviceProcAddr( device, "vkGetDeviceProcAddr" ) ); + vkDestroyDevice = PFN_vkDestroyDevice( vkGetDeviceProcAddr( device, "vkDestroyDevice" ) ); + vkGetDeviceQueue = PFN_vkGetDeviceQueue( vkGetDeviceProcAddr( device, "vkGetDeviceQueue" ) ); + vkQueueSubmit = PFN_vkQueueSubmit( vkGetDeviceProcAddr( device, "vkQueueSubmit" ) ); + vkQueueWaitIdle = PFN_vkQueueWaitIdle( vkGetDeviceProcAddr( device, "vkQueueWaitIdle" ) ); + vkDeviceWaitIdle = PFN_vkDeviceWaitIdle( vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" ) ); + vkAllocateMemory = PFN_vkAllocateMemory( vkGetDeviceProcAddr( device, "vkAllocateMemory" ) ); + vkFreeMemory = PFN_vkFreeMemory( vkGetDeviceProcAddr( device, "vkFreeMemory" ) ); + vkMapMemory = PFN_vkMapMemory( vkGetDeviceProcAddr( device, "vkMapMemory" ) ); + vkUnmapMemory = PFN_vkUnmapMemory( vkGetDeviceProcAddr( device, "vkUnmapMemory" ) ); + vkFlushMappedMemoryRanges = + PFN_vkFlushMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" ) ); + vkInvalidateMappedMemoryRanges = + PFN_vkInvalidateMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" ) ); + vkGetDeviceMemoryCommitment = + PFN_vkGetDeviceMemoryCommitment( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" ) ); + vkBindBufferMemory = PFN_vkBindBufferMemory( vkGetDeviceProcAddr( device, "vkBindBufferMemory" ) ); + vkBindImageMemory = PFN_vkBindImageMemory( vkGetDeviceProcAddr( device, "vkBindImageMemory" ) ); + vkGetBufferMemoryRequirements = + PFN_vkGetBufferMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" ) ); + vkGetImageMemoryRequirements = + PFN_vkGetImageMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" ) ); + vkGetImageSparseMemoryRequirements = + PFN_vkGetImageSparseMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" ) ); + vkQueueBindSparse = PFN_vkQueueBindSparse( vkGetDeviceProcAddr( device, "vkQueueBindSparse" ) ); + vkCreateFence = PFN_vkCreateFence( vkGetDeviceProcAddr( device, "vkCreateFence" ) ); + vkDestroyFence = PFN_vkDestroyFence( vkGetDeviceProcAddr( device, "vkDestroyFence" ) ); + vkResetFences = PFN_vkResetFences( vkGetDeviceProcAddr( device, "vkResetFences" ) ); + vkGetFenceStatus = PFN_vkGetFenceStatus( vkGetDeviceProcAddr( device, "vkGetFenceStatus" ) ); + vkWaitForFences = PFN_vkWaitForFences( vkGetDeviceProcAddr( device, "vkWaitForFences" ) ); + vkCreateSemaphore = PFN_vkCreateSemaphore( vkGetDeviceProcAddr( device, "vkCreateSemaphore" ) ); + vkDestroySemaphore = PFN_vkDestroySemaphore( vkGetDeviceProcAddr( device, "vkDestroySemaphore" ) ); + vkCreateEvent = PFN_vkCreateEvent( vkGetDeviceProcAddr( device, "vkCreateEvent" ) ); + vkDestroyEvent = PFN_vkDestroyEvent( vkGetDeviceProcAddr( device, "vkDestroyEvent" ) ); + vkGetEventStatus = PFN_vkGetEventStatus( vkGetDeviceProcAddr( device, "vkGetEventStatus" ) ); + vkSetEvent = PFN_vkSetEvent( vkGetDeviceProcAddr( device, "vkSetEvent" ) ); + vkResetEvent = PFN_vkResetEvent( vkGetDeviceProcAddr( device, "vkResetEvent" ) ); + vkCreateQueryPool = PFN_vkCreateQueryPool( vkGetDeviceProcAddr( device, "vkCreateQueryPool" ) ); + vkDestroyQueryPool = PFN_vkDestroyQueryPool( vkGetDeviceProcAddr( device, "vkDestroyQueryPool" ) ); + vkGetQueryPoolResults = PFN_vkGetQueryPoolResults( vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" ) ); + vkCreateBuffer = PFN_vkCreateBuffer( vkGetDeviceProcAddr( device, "vkCreateBuffer" ) ); + vkDestroyBuffer = PFN_vkDestroyBuffer( vkGetDeviceProcAddr( device, "vkDestroyBuffer" ) ); + vkCreateBufferView = PFN_vkCreateBufferView( vkGetDeviceProcAddr( device, "vkCreateBufferView" ) ); + vkDestroyBufferView = PFN_vkDestroyBufferView( vkGetDeviceProcAddr( device, "vkDestroyBufferView" ) ); + vkCreateImage = PFN_vkCreateImage( vkGetDeviceProcAddr( device, "vkCreateImage" ) ); + vkDestroyImage = PFN_vkDestroyImage( vkGetDeviceProcAddr( device, "vkDestroyImage" ) ); + vkGetImageSubresourceLayout = + PFN_vkGetImageSubresourceLayout( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" ) ); + vkCreateImageView = PFN_vkCreateImageView( vkGetDeviceProcAddr( device, "vkCreateImageView" ) ); + vkDestroyImageView = PFN_vkDestroyImageView( vkGetDeviceProcAddr( device, "vkDestroyImageView" ) ); + vkCreateShaderModule = PFN_vkCreateShaderModule( vkGetDeviceProcAddr( device, "vkCreateShaderModule" ) ); + vkDestroyShaderModule = PFN_vkDestroyShaderModule( vkGetDeviceProcAddr( device, "vkDestroyShaderModule" ) ); + vkCreatePipelineCache = PFN_vkCreatePipelineCache( vkGetDeviceProcAddr( device, "vkCreatePipelineCache" ) ); + vkDestroyPipelineCache = PFN_vkDestroyPipelineCache( vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" ) ); + vkGetPipelineCacheData = PFN_vkGetPipelineCacheData( vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" ) ); + vkMergePipelineCaches = PFN_vkMergePipelineCaches( vkGetDeviceProcAddr( device, "vkMergePipelineCaches" ) ); + vkCreateGraphicsPipelines = + PFN_vkCreateGraphicsPipelines( vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" ) ); + vkCreateComputePipelines = + PFN_vkCreateComputePipelines( vkGetDeviceProcAddr( device, "vkCreateComputePipelines" ) ); + vkDestroyPipeline = PFN_vkDestroyPipeline( vkGetDeviceProcAddr( device, "vkDestroyPipeline" ) ); + vkCreatePipelineLayout = PFN_vkCreatePipelineLayout( vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" ) ); + vkDestroyPipelineLayout = PFN_vkDestroyPipelineLayout( vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" ) ); + vkCreateSampler = PFN_vkCreateSampler( vkGetDeviceProcAddr( device, "vkCreateSampler" ) ); + vkDestroySampler = PFN_vkDestroySampler( vkGetDeviceProcAddr( device, "vkDestroySampler" ) ); + vkCreateDescriptorSetLayout = + PFN_vkCreateDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" ) ); + vkDestroyDescriptorSetLayout = + PFN_vkDestroyDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" ) ); + vkCreateDescriptorPool = PFN_vkCreateDescriptorPool( vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" ) ); + vkDestroyDescriptorPool = PFN_vkDestroyDescriptorPool( vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" ) ); + vkResetDescriptorPool = PFN_vkResetDescriptorPool( vkGetDeviceProcAddr( device, "vkResetDescriptorPool" ) ); + vkAllocateDescriptorSets = + PFN_vkAllocateDescriptorSets( vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" ) ); + vkFreeDescriptorSets = PFN_vkFreeDescriptorSets( vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" ) ); + vkUpdateDescriptorSets = PFN_vkUpdateDescriptorSets( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" ) ); + vkCreateFramebuffer = PFN_vkCreateFramebuffer( vkGetDeviceProcAddr( device, "vkCreateFramebuffer" ) ); + vkDestroyFramebuffer = PFN_vkDestroyFramebuffer( vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" ) ); + vkCreateRenderPass = PFN_vkCreateRenderPass( vkGetDeviceProcAddr( device, "vkCreateRenderPass" ) ); + vkDestroyRenderPass = PFN_vkDestroyRenderPass( vkGetDeviceProcAddr( device, "vkDestroyRenderPass" ) ); + vkGetRenderAreaGranularity = + PFN_vkGetRenderAreaGranularity( vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" ) ); + vkCreateCommandPool = PFN_vkCreateCommandPool( vkGetDeviceProcAddr( device, "vkCreateCommandPool" ) ); + vkDestroyCommandPool = PFN_vkDestroyCommandPool( vkGetDeviceProcAddr( device, "vkDestroyCommandPool" ) ); + vkResetCommandPool = PFN_vkResetCommandPool( vkGetDeviceProcAddr( device, "vkResetCommandPool" ) ); + vkAllocateCommandBuffers = + PFN_vkAllocateCommandBuffers( vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" ) ); + vkFreeCommandBuffers = PFN_vkFreeCommandBuffers( vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" ) ); + vkBeginCommandBuffer = PFN_vkBeginCommandBuffer( vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" ) ); + vkEndCommandBuffer = PFN_vkEndCommandBuffer( vkGetDeviceProcAddr( device, "vkEndCommandBuffer" ) ); + vkResetCommandBuffer = PFN_vkResetCommandBuffer( vkGetDeviceProcAddr( device, "vkResetCommandBuffer" ) ); + vkCmdBindPipeline = PFN_vkCmdBindPipeline( vkGetDeviceProcAddr( device, "vkCmdBindPipeline" ) ); + vkCmdSetViewport = PFN_vkCmdSetViewport( vkGetDeviceProcAddr( device, "vkCmdSetViewport" ) ); + vkCmdSetScissor = PFN_vkCmdSetScissor( vkGetDeviceProcAddr( device, "vkCmdSetScissor" ) ); + vkCmdSetLineWidth = PFN_vkCmdSetLineWidth( vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" ) ); + vkCmdSetDepthBias = PFN_vkCmdSetDepthBias( vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" ) ); + vkCmdSetBlendConstants = PFN_vkCmdSetBlendConstants( vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" ) ); + vkCmdSetDepthBounds = PFN_vkCmdSetDepthBounds( vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" ) ); + vkCmdSetStencilCompareMask = + PFN_vkCmdSetStencilCompareMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" ) ); + vkCmdSetStencilWriteMask = + PFN_vkCmdSetStencilWriteMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" ) ); + vkCmdSetStencilReference = + PFN_vkCmdSetStencilReference( vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" ) ); + vkCmdBindDescriptorSets = PFN_vkCmdBindDescriptorSets( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" ) ); + vkCmdBindIndexBuffer = PFN_vkCmdBindIndexBuffer( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" ) ); + vkCmdBindVertexBuffers = PFN_vkCmdBindVertexBuffers( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" ) ); + vkCmdDraw = PFN_vkCmdDraw( vkGetDeviceProcAddr( device, "vkCmdDraw" ) ); + vkCmdDrawIndexed = PFN_vkCmdDrawIndexed( vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" ) ); + vkCmdDrawIndirect = PFN_vkCmdDrawIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" ) ); + vkCmdDrawIndexedIndirect = + PFN_vkCmdDrawIndexedIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" ) ); + vkCmdDispatch = PFN_vkCmdDispatch( vkGetDeviceProcAddr( device, "vkCmdDispatch" ) ); + vkCmdDispatchIndirect = PFN_vkCmdDispatchIndirect( vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" ) ); + vkCmdCopyBuffer = PFN_vkCmdCopyBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" ) ); + vkCmdCopyImage = PFN_vkCmdCopyImage( vkGetDeviceProcAddr( device, "vkCmdCopyImage" ) ); + vkCmdBlitImage = PFN_vkCmdBlitImage( vkGetDeviceProcAddr( device, "vkCmdBlitImage" ) ); + vkCmdCopyBufferToImage = PFN_vkCmdCopyBufferToImage( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" ) ); + vkCmdCopyImageToBuffer = PFN_vkCmdCopyImageToBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" ) ); + vkCmdUpdateBuffer = PFN_vkCmdUpdateBuffer( vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" ) ); + vkCmdFillBuffer = PFN_vkCmdFillBuffer( vkGetDeviceProcAddr( device, "vkCmdFillBuffer" ) ); + vkCmdClearColorImage = PFN_vkCmdClearColorImage( vkGetDeviceProcAddr( device, "vkCmdClearColorImage" ) ); + vkCmdClearDepthStencilImage = + PFN_vkCmdClearDepthStencilImage( vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" ) ); + vkCmdClearAttachments = PFN_vkCmdClearAttachments( vkGetDeviceProcAddr( device, "vkCmdClearAttachments" ) ); + vkCmdResolveImage = PFN_vkCmdResolveImage( vkGetDeviceProcAddr( device, "vkCmdResolveImage" ) ); + vkCmdSetEvent = PFN_vkCmdSetEvent( vkGetDeviceProcAddr( device, "vkCmdSetEvent" ) ); + vkCmdResetEvent = PFN_vkCmdResetEvent( vkGetDeviceProcAddr( device, "vkCmdResetEvent" ) ); + vkCmdWaitEvents = PFN_vkCmdWaitEvents( vkGetDeviceProcAddr( device, "vkCmdWaitEvents" ) ); + vkCmdPipelineBarrier = PFN_vkCmdPipelineBarrier( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" ) ); + vkCmdBeginQuery = PFN_vkCmdBeginQuery( vkGetDeviceProcAddr( device, "vkCmdBeginQuery" ) ); + vkCmdEndQuery = PFN_vkCmdEndQuery( vkGetDeviceProcAddr( device, "vkCmdEndQuery" ) ); + vkCmdResetQueryPool = PFN_vkCmdResetQueryPool( vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" ) ); + vkCmdWriteTimestamp = PFN_vkCmdWriteTimestamp( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" ) ); + vkCmdCopyQueryPoolResults = + PFN_vkCmdCopyQueryPoolResults( vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" ) ); + vkCmdPushConstants = PFN_vkCmdPushConstants( vkGetDeviceProcAddr( device, "vkCmdPushConstants" ) ); + vkCmdBeginRenderPass = PFN_vkCmdBeginRenderPass( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" ) ); + vkCmdNextSubpass = PFN_vkCmdNextSubpass( vkGetDeviceProcAddr( device, "vkCmdNextSubpass" ) ); + vkCmdEndRenderPass = PFN_vkCmdEndRenderPass( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" ) ); + vkCmdExecuteCommands = PFN_vkCmdExecuteCommands( vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" ) ); + + //=== VK_VERSION_1_1 === + vkBindBufferMemory2 = PFN_vkBindBufferMemory2( vkGetDeviceProcAddr( device, "vkBindBufferMemory2" ) ); + vkBindImageMemory2 = PFN_vkBindImageMemory2( vkGetDeviceProcAddr( device, "vkBindImageMemory2" ) ); + vkGetDeviceGroupPeerMemoryFeatures = + PFN_vkGetDeviceGroupPeerMemoryFeatures( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeatures" ) ); + vkCmdSetDeviceMask = PFN_vkCmdSetDeviceMask( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMask" ) ); + vkCmdDispatchBase = PFN_vkCmdDispatchBase( vkGetDeviceProcAddr( device, "vkCmdDispatchBase" ) ); + vkGetImageMemoryRequirements2 = + PFN_vkGetImageMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2" ) ); + vkGetBufferMemoryRequirements2 = + PFN_vkGetBufferMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2" ) ); + vkGetImageSparseMemoryRequirements2 = + PFN_vkGetImageSparseMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2" ) ); + vkTrimCommandPool = PFN_vkTrimCommandPool( vkGetDeviceProcAddr( device, "vkTrimCommandPool" ) ); + vkGetDeviceQueue2 = PFN_vkGetDeviceQueue2( vkGetDeviceProcAddr( device, "vkGetDeviceQueue2" ) ); + vkCreateSamplerYcbcrConversion = + PFN_vkCreateSamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversion" ) ); + vkDestroySamplerYcbcrConversion = + PFN_vkDestroySamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversion" ) ); + vkCreateDescriptorUpdateTemplate = + PFN_vkCreateDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplate" ) ); + vkDestroyDescriptorUpdateTemplate = + PFN_vkDestroyDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplate" ) ); + vkUpdateDescriptorSetWithTemplate = + PFN_vkUpdateDescriptorSetWithTemplate( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplate" ) ); + vkGetDescriptorSetLayoutSupport = + PFN_vkGetDescriptorSetLayoutSupport( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupport" ) ); + + //=== VK_VERSION_1_2 === + vkCmdDrawIndirectCount = PFN_vkCmdDrawIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCount" ) ); + vkCmdDrawIndexedIndirectCount = + PFN_vkCmdDrawIndexedIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCount" ) ); + vkCreateRenderPass2 = PFN_vkCreateRenderPass2( vkGetDeviceProcAddr( device, "vkCreateRenderPass2" ) ); + vkCmdBeginRenderPass2 = PFN_vkCmdBeginRenderPass2( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2" ) ); + vkCmdNextSubpass2 = PFN_vkCmdNextSubpass2( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2" ) ); + vkCmdEndRenderPass2 = PFN_vkCmdEndRenderPass2( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2" ) ); + vkResetQueryPool = PFN_vkResetQueryPool( vkGetDeviceProcAddr( device, "vkResetQueryPool" ) ); + vkGetSemaphoreCounterValue = + PFN_vkGetSemaphoreCounterValue( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValue" ) ); + vkWaitSemaphores = PFN_vkWaitSemaphores( vkGetDeviceProcAddr( device, "vkWaitSemaphores" ) ); + vkSignalSemaphore = PFN_vkSignalSemaphore( vkGetDeviceProcAddr( device, "vkSignalSemaphore" ) ); + vkGetBufferDeviceAddress = + PFN_vkGetBufferDeviceAddress( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddress" ) ); + vkGetBufferOpaqueCaptureAddress = + PFN_vkGetBufferOpaqueCaptureAddress( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddress" ) ); + vkGetDeviceMemoryOpaqueCaptureAddress = PFN_vkGetDeviceMemoryOpaqueCaptureAddress( + vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddress" ) ); + + //=== VK_VERSION_1_3 === + vkCreatePrivateDataSlot = PFN_vkCreatePrivateDataSlot( vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlot" ) ); + vkDestroyPrivateDataSlot = + PFN_vkDestroyPrivateDataSlot( vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlot" ) ); + vkSetPrivateData = PFN_vkSetPrivateData( vkGetDeviceProcAddr( device, "vkSetPrivateData" ) ); + vkGetPrivateData = PFN_vkGetPrivateData( vkGetDeviceProcAddr( device, "vkGetPrivateData" ) ); + vkCmdSetEvent2 = PFN_vkCmdSetEvent2( vkGetDeviceProcAddr( device, "vkCmdSetEvent2" ) ); + vkCmdResetEvent2 = PFN_vkCmdResetEvent2( vkGetDeviceProcAddr( device, "vkCmdResetEvent2" ) ); + vkCmdWaitEvents2 = PFN_vkCmdWaitEvents2( vkGetDeviceProcAddr( device, "vkCmdWaitEvents2" ) ); + vkCmdPipelineBarrier2 = PFN_vkCmdPipelineBarrier2( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2" ) ); + vkCmdWriteTimestamp2 = PFN_vkCmdWriteTimestamp2( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2" ) ); + vkQueueSubmit2 = PFN_vkQueueSubmit2( vkGetDeviceProcAddr( device, "vkQueueSubmit2" ) ); + vkCmdCopyBuffer2 = PFN_vkCmdCopyBuffer2( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2" ) ); + vkCmdCopyImage2 = PFN_vkCmdCopyImage2( vkGetDeviceProcAddr( device, "vkCmdCopyImage2" ) ); + vkCmdCopyBufferToImage2 = PFN_vkCmdCopyBufferToImage2( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2" ) ); + vkCmdCopyImageToBuffer2 = PFN_vkCmdCopyImageToBuffer2( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2" ) ); + vkCmdBlitImage2 = PFN_vkCmdBlitImage2( vkGetDeviceProcAddr( device, "vkCmdBlitImage2" ) ); + vkCmdResolveImage2 = PFN_vkCmdResolveImage2( vkGetDeviceProcAddr( device, "vkCmdResolveImage2" ) ); + vkCmdBeginRendering = PFN_vkCmdBeginRendering( vkGetDeviceProcAddr( device, "vkCmdBeginRendering" ) ); + vkCmdEndRendering = PFN_vkCmdEndRendering( vkGetDeviceProcAddr( device, "vkCmdEndRendering" ) ); + vkCmdSetCullMode = PFN_vkCmdSetCullMode( vkGetDeviceProcAddr( device, "vkCmdSetCullMode" ) ); + vkCmdSetFrontFace = PFN_vkCmdSetFrontFace( vkGetDeviceProcAddr( device, "vkCmdSetFrontFace" ) ); + vkCmdSetPrimitiveTopology = + PFN_vkCmdSetPrimitiveTopology( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopology" ) ); + vkCmdSetViewportWithCount = + PFN_vkCmdSetViewportWithCount( vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCount" ) ); + vkCmdSetScissorWithCount = + PFN_vkCmdSetScissorWithCount( vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCount" ) ); + vkCmdBindVertexBuffers2 = PFN_vkCmdBindVertexBuffers2( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2" ) ); + vkCmdSetDepthTestEnable = PFN_vkCmdSetDepthTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnable" ) ); + vkCmdSetDepthWriteEnable = + PFN_vkCmdSetDepthWriteEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnable" ) ); + vkCmdSetDepthCompareOp = PFN_vkCmdSetDepthCompareOp( vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOp" ) ); + vkCmdSetDepthBoundsTestEnable = + PFN_vkCmdSetDepthBoundsTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnable" ) ); + vkCmdSetStencilTestEnable = + PFN_vkCmdSetStencilTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnable" ) ); + vkCmdSetStencilOp = PFN_vkCmdSetStencilOp( vkGetDeviceProcAddr( device, "vkCmdSetStencilOp" ) ); + vkCmdSetRasterizerDiscardEnable = + PFN_vkCmdSetRasterizerDiscardEnable( vkGetDeviceProcAddr( device, "vkCmdSetRasterizerDiscardEnable" ) ); + vkCmdSetDepthBiasEnable = PFN_vkCmdSetDepthBiasEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthBiasEnable" ) ); + vkCmdSetPrimitiveRestartEnable = + PFN_vkCmdSetPrimitiveRestartEnable( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveRestartEnable" ) ); + vkGetDeviceBufferMemoryRequirements = + PFN_vkGetDeviceBufferMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetDeviceBufferMemoryRequirements" ) ); + vkGetDeviceImageMemoryRequirements = + PFN_vkGetDeviceImageMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetDeviceImageMemoryRequirements" ) ); + vkGetDeviceImageSparseMemoryRequirements = PFN_vkGetDeviceImageSparseMemoryRequirements( + vkGetDeviceProcAddr( device, "vkGetDeviceImageSparseMemoryRequirements" ) ); + + //=== VK_KHR_swapchain === + vkCreateSwapchainKHR = PFN_vkCreateSwapchainKHR( vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" ) ); + vkDestroySwapchainKHR = PFN_vkDestroySwapchainKHR( vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" ) ); + vkGetSwapchainImagesKHR = PFN_vkGetSwapchainImagesKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" ) ); + vkAcquireNextImageKHR = PFN_vkAcquireNextImageKHR( vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" ) ); + vkQueuePresentKHR = PFN_vkQueuePresentKHR( vkGetDeviceProcAddr( device, "vkQueuePresentKHR" ) ); + vkGetDeviceGroupPresentCapabilitiesKHR = PFN_vkGetDeviceGroupPresentCapabilitiesKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHR" ) ); + vkGetDeviceGroupSurfacePresentModesKHR = PFN_vkGetDeviceGroupSurfacePresentModesKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHR" ) ); + vkAcquireNextImage2KHR = PFN_vkAcquireNextImage2KHR( vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHR" ) ); + + //=== VK_KHR_display_swapchain === + vkCreateSharedSwapchainsKHR = + PFN_vkCreateSharedSwapchainsKHR( vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" ) ); + + //=== VK_EXT_debug_marker === + vkDebugMarkerSetObjectTagEXT = + PFN_vkDebugMarkerSetObjectTagEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" ) ); + vkDebugMarkerSetObjectNameEXT = + PFN_vkDebugMarkerSetObjectNameEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" ) ); + vkCmdDebugMarkerBeginEXT = + PFN_vkCmdDebugMarkerBeginEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" ) ); + vkCmdDebugMarkerEndEXT = PFN_vkCmdDebugMarkerEndEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" ) ); + vkCmdDebugMarkerInsertEXT = + PFN_vkCmdDebugMarkerInsertEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" ) ); + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + vkCreateVideoSessionKHR = PFN_vkCreateVideoSessionKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionKHR" ) ); + vkDestroyVideoSessionKHR = + PFN_vkDestroyVideoSessionKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionKHR" ) ); + vkGetVideoSessionMemoryRequirementsKHR = PFN_vkGetVideoSessionMemoryRequirementsKHR( + vkGetDeviceProcAddr( device, "vkGetVideoSessionMemoryRequirementsKHR" ) ); + vkBindVideoSessionMemoryKHR = + PFN_vkBindVideoSessionMemoryKHR( vkGetDeviceProcAddr( device, "vkBindVideoSessionMemoryKHR" ) ); + vkCreateVideoSessionParametersKHR = + PFN_vkCreateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionParametersKHR" ) ); + vkUpdateVideoSessionParametersKHR = + PFN_vkUpdateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkUpdateVideoSessionParametersKHR" ) ); + vkDestroyVideoSessionParametersKHR = + PFN_vkDestroyVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionParametersKHR" ) ); + vkCmdBeginVideoCodingKHR = + PFN_vkCmdBeginVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdBeginVideoCodingKHR" ) ); + vkCmdEndVideoCodingKHR = PFN_vkCmdEndVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdEndVideoCodingKHR" ) ); + vkCmdControlVideoCodingKHR = + PFN_vkCmdControlVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdControlVideoCodingKHR" ) ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_decode_queue === + vkCmdDecodeVideoKHR = PFN_vkCmdDecodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdDecodeVideoKHR" ) ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_transform_feedback === + vkCmdBindTransformFeedbackBuffersEXT = PFN_vkCmdBindTransformFeedbackBuffersEXT( + vkGetDeviceProcAddr( device, "vkCmdBindTransformFeedbackBuffersEXT" ) ); + vkCmdBeginTransformFeedbackEXT = + PFN_vkCmdBeginTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdBeginTransformFeedbackEXT" ) ); + vkCmdEndTransformFeedbackEXT = + PFN_vkCmdEndTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdEndTransformFeedbackEXT" ) ); + vkCmdBeginQueryIndexedEXT = + PFN_vkCmdBeginQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdBeginQueryIndexedEXT" ) ); + vkCmdEndQueryIndexedEXT = PFN_vkCmdEndQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdEndQueryIndexedEXT" ) ); + vkCmdDrawIndirectByteCountEXT = + PFN_vkCmdDrawIndirectByteCountEXT( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectByteCountEXT" ) ); + + //=== VK_NVX_binary_import === + vkCreateCuModuleNVX = PFN_vkCreateCuModuleNVX( vkGetDeviceProcAddr( device, "vkCreateCuModuleNVX" ) ); + vkCreateCuFunctionNVX = PFN_vkCreateCuFunctionNVX( vkGetDeviceProcAddr( device, "vkCreateCuFunctionNVX" ) ); + vkDestroyCuModuleNVX = PFN_vkDestroyCuModuleNVX( vkGetDeviceProcAddr( device, "vkDestroyCuModuleNVX" ) ); + vkDestroyCuFunctionNVX = PFN_vkDestroyCuFunctionNVX( vkGetDeviceProcAddr( device, "vkDestroyCuFunctionNVX" ) ); + vkCmdCuLaunchKernelNVX = PFN_vkCmdCuLaunchKernelNVX( vkGetDeviceProcAddr( device, "vkCmdCuLaunchKernelNVX" ) ); + + //=== VK_NVX_image_view_handle === + vkGetImageViewHandleNVX = PFN_vkGetImageViewHandleNVX( vkGetDeviceProcAddr( device, "vkGetImageViewHandleNVX" ) ); + vkGetImageViewAddressNVX = + PFN_vkGetImageViewAddressNVX( vkGetDeviceProcAddr( device, "vkGetImageViewAddressNVX" ) ); + + //=== VK_AMD_draw_indirect_count === + vkCmdDrawIndirectCountAMD = + PFN_vkCmdDrawIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountAMD" ) ); + if ( !vkCmdDrawIndirectCount ) + vkCmdDrawIndirectCount = vkCmdDrawIndirectCountAMD; + vkCmdDrawIndexedIndirectCountAMD = + PFN_vkCmdDrawIndexedIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountAMD" ) ); + if ( !vkCmdDrawIndexedIndirectCount ) + vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountAMD; + + //=== VK_AMD_shader_info === + vkGetShaderInfoAMD = PFN_vkGetShaderInfoAMD( vkGetDeviceProcAddr( device, "vkGetShaderInfoAMD" ) ); + + //=== VK_KHR_dynamic_rendering === + vkCmdBeginRenderingKHR = PFN_vkCmdBeginRenderingKHR( vkGetDeviceProcAddr( device, "vkCmdBeginRenderingKHR" ) ); + if ( !vkCmdBeginRendering ) + vkCmdBeginRendering = vkCmdBeginRenderingKHR; + vkCmdEndRenderingKHR = PFN_vkCmdEndRenderingKHR( vkGetDeviceProcAddr( device, "vkCmdEndRenderingKHR" ) ); + if ( !vkCmdEndRendering ) + vkCmdEndRendering = vkCmdEndRenderingKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + vkGetMemoryWin32HandleNV = + PFN_vkGetMemoryWin32HandleNV( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleNV" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - GeometryTrianglesNV & setVertexCount( uint32_t vertexCount_ ) - { - vertexCount = vertexCount_; - return *this; - } + //=== VK_KHR_device_group === + vkGetDeviceGroupPeerMemoryFeaturesKHR = PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeaturesKHR" ) ); + if ( !vkGetDeviceGroupPeerMemoryFeatures ) + vkGetDeviceGroupPeerMemoryFeatures = vkGetDeviceGroupPeerMemoryFeaturesKHR; + vkCmdSetDeviceMaskKHR = PFN_vkCmdSetDeviceMaskKHR( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMaskKHR" ) ); + if ( !vkCmdSetDeviceMask ) + vkCmdSetDeviceMask = vkCmdSetDeviceMaskKHR; + vkCmdDispatchBaseKHR = PFN_vkCmdDispatchBaseKHR( vkGetDeviceProcAddr( device, "vkCmdDispatchBaseKHR" ) ); + if ( !vkCmdDispatchBase ) + vkCmdDispatchBase = vkCmdDispatchBaseKHR; + + //=== VK_KHR_maintenance1 === + vkTrimCommandPoolKHR = PFN_vkTrimCommandPoolKHR( vkGetDeviceProcAddr( device, "vkTrimCommandPoolKHR" ) ); + if ( !vkTrimCommandPool ) + vkTrimCommandPool = vkTrimCommandPoolKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + vkGetMemoryWin32HandleKHR = + PFN_vkGetMemoryWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleKHR" ) ); + vkGetMemoryWin32HandlePropertiesKHR = + PFN_vkGetMemoryWin32HandlePropertiesKHR( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandlePropertiesKHR" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - GeometryTrianglesNV & setVertexStride( vk::DeviceSize vertexStride_ ) - { - vertexStride = vertexStride_; - return *this; - } + //=== VK_KHR_external_memory_fd === + vkGetMemoryFdKHR = PFN_vkGetMemoryFdKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" ) ); + vkGetMemoryFdPropertiesKHR = + PFN_vkGetMemoryFdPropertiesKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" ) ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + vkImportSemaphoreWin32HandleKHR = + PFN_vkImportSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreWin32HandleKHR" ) ); + vkGetSemaphoreWin32HandleKHR = + PFN_vkGetSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreWin32HandleKHR" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - GeometryTrianglesNV & setVertexFormat( vk::Format vertexFormat_ ) - { - vertexFormat = vertexFormat_; - return *this; - } + //=== VK_KHR_external_semaphore_fd === + vkImportSemaphoreFdKHR = PFN_vkImportSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" ) ); + vkGetSemaphoreFdKHR = PFN_vkGetSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" ) ); + + //=== VK_KHR_push_descriptor === + vkCmdPushDescriptorSetKHR = + PFN_vkCmdPushDescriptorSetKHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" ) ); + vkCmdPushDescriptorSetWithTemplateKHR = PFN_vkCmdPushDescriptorSetWithTemplateKHR( + vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" ) ); + + //=== VK_EXT_conditional_rendering === + vkCmdBeginConditionalRenderingEXT = + PFN_vkCmdBeginConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRenderingEXT" ) ); + vkCmdEndConditionalRenderingEXT = + PFN_vkCmdEndConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdEndConditionalRenderingEXT" ) ); + + //=== VK_KHR_descriptor_update_template === + vkCreateDescriptorUpdateTemplateKHR = + PFN_vkCreateDescriptorUpdateTemplateKHR( vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplateKHR" ) ); + if ( !vkCreateDescriptorUpdateTemplate ) + vkCreateDescriptorUpdateTemplate = vkCreateDescriptorUpdateTemplateKHR; + vkDestroyDescriptorUpdateTemplateKHR = PFN_vkDestroyDescriptorUpdateTemplateKHR( + vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplateKHR" ) ); + if ( !vkDestroyDescriptorUpdateTemplate ) + vkDestroyDescriptorUpdateTemplate = vkDestroyDescriptorUpdateTemplateKHR; + vkUpdateDescriptorSetWithTemplateKHR = PFN_vkUpdateDescriptorSetWithTemplateKHR( + vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplateKHR" ) ); + if ( !vkUpdateDescriptorSetWithTemplate ) + vkUpdateDescriptorSetWithTemplate = vkUpdateDescriptorSetWithTemplateKHR; + + //=== VK_NV_clip_space_w_scaling === + vkCmdSetViewportWScalingNV = + PFN_vkCmdSetViewportWScalingNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" ) ); + + //=== VK_EXT_display_control === + vkDisplayPowerControlEXT = + PFN_vkDisplayPowerControlEXT( vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" ) ); + vkRegisterDeviceEventEXT = + PFN_vkRegisterDeviceEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" ) ); + vkRegisterDisplayEventEXT = + PFN_vkRegisterDisplayEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" ) ); + vkGetSwapchainCounterEXT = + PFN_vkGetSwapchainCounterEXT( vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" ) ); + + //=== VK_GOOGLE_display_timing === + vkGetRefreshCycleDurationGOOGLE = + PFN_vkGetRefreshCycleDurationGOOGLE( vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" ) ); + vkGetPastPresentationTimingGOOGLE = + PFN_vkGetPastPresentationTimingGOOGLE( vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" ) ); + + //=== VK_EXT_discard_rectangles === + vkCmdSetDiscardRectangleEXT = + PFN_vkCmdSetDiscardRectangleEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" ) ); + + //=== VK_EXT_hdr_metadata === + vkSetHdrMetadataEXT = PFN_vkSetHdrMetadataEXT( vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" ) ); + + //=== VK_KHR_create_renderpass2 === + vkCreateRenderPass2KHR = PFN_vkCreateRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCreateRenderPass2KHR" ) ); + if ( !vkCreateRenderPass2 ) + vkCreateRenderPass2 = vkCreateRenderPass2KHR; + vkCmdBeginRenderPass2KHR = + PFN_vkCmdBeginRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2KHR" ) ); + if ( !vkCmdBeginRenderPass2 ) + vkCmdBeginRenderPass2 = vkCmdBeginRenderPass2KHR; + vkCmdNextSubpass2KHR = PFN_vkCmdNextSubpass2KHR( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2KHR" ) ); + if ( !vkCmdNextSubpass2 ) + vkCmdNextSubpass2 = vkCmdNextSubpass2KHR; + vkCmdEndRenderPass2KHR = PFN_vkCmdEndRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2KHR" ) ); + if ( !vkCmdEndRenderPass2 ) + vkCmdEndRenderPass2 = vkCmdEndRenderPass2KHR; + + //=== VK_KHR_shared_presentable_image === + vkGetSwapchainStatusKHR = PFN_vkGetSwapchainStatusKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" ) ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + vkImportFenceWin32HandleKHR = + PFN_vkImportFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportFenceWin32HandleKHR" ) ); + vkGetFenceWin32HandleKHR = + PFN_vkGetFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetFenceWin32HandleKHR" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - GeometryTrianglesNV & setIndexData( vk::Buffer indexData_ ) - { - indexData = indexData_; - return *this; - } + //=== VK_KHR_external_fence_fd === + vkImportFenceFdKHR = PFN_vkImportFenceFdKHR( vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" ) ); + vkGetFenceFdKHR = PFN_vkGetFenceFdKHR( vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" ) ); + + //=== VK_KHR_performance_query === + vkAcquireProfilingLockKHR = + PFN_vkAcquireProfilingLockKHR( vkGetDeviceProcAddr( device, "vkAcquireProfilingLockKHR" ) ); + vkReleaseProfilingLockKHR = + PFN_vkReleaseProfilingLockKHR( vkGetDeviceProcAddr( device, "vkReleaseProfilingLockKHR" ) ); + + //=== VK_EXT_debug_utils === + vkSetDebugUtilsObjectNameEXT = + PFN_vkSetDebugUtilsObjectNameEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectNameEXT" ) ); + vkSetDebugUtilsObjectTagEXT = + PFN_vkSetDebugUtilsObjectTagEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectTagEXT" ) ); + vkQueueBeginDebugUtilsLabelEXT = + PFN_vkQueueBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueBeginDebugUtilsLabelEXT" ) ); + vkQueueEndDebugUtilsLabelEXT = + PFN_vkQueueEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueEndDebugUtilsLabelEXT" ) ); + vkQueueInsertDebugUtilsLabelEXT = + PFN_vkQueueInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueInsertDebugUtilsLabelEXT" ) ); + vkCmdBeginDebugUtilsLabelEXT = + PFN_vkCmdBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdBeginDebugUtilsLabelEXT" ) ); + vkCmdEndDebugUtilsLabelEXT = + PFN_vkCmdEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdEndDebugUtilsLabelEXT" ) ); + vkCmdInsertDebugUtilsLabelEXT = + PFN_vkCmdInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdInsertDebugUtilsLabelEXT" ) ); + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + vkGetAndroidHardwareBufferPropertiesANDROID = PFN_vkGetAndroidHardwareBufferPropertiesANDROID( + vkGetDeviceProcAddr( device, "vkGetAndroidHardwareBufferPropertiesANDROID" ) ); + vkGetMemoryAndroidHardwareBufferANDROID = PFN_vkGetMemoryAndroidHardwareBufferANDROID( + vkGetDeviceProcAddr( device, "vkGetMemoryAndroidHardwareBufferANDROID" ) ); +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - GeometryTrianglesNV & setIndexOffset( vk::DeviceSize indexOffset_ ) - { - indexOffset = indexOffset_; - return *this; - } - - GeometryTrianglesNV & setIndexCount( uint32_t indexCount_ ) - { - indexCount = indexCount_; - return *this; - } - - GeometryTrianglesNV & setIndexType( vk::IndexType indexType_ ) - { - indexType = indexType_; - return *this; - } - - GeometryTrianglesNV & setTransformData( vk::Buffer transformData_ ) - { - transformData = transformData_; - return *this; - } - - GeometryTrianglesNV & setTransformOffset( vk::DeviceSize transformOffset_ ) - { - transformOffset = transformOffset_; - return *this; - } - - operator VkGeometryTrianglesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkGeometryTrianglesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( GeometryTrianglesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( vertexData == rhs.vertexData ) - && ( vertexOffset == rhs.vertexOffset ) - && ( vertexCount == rhs.vertexCount ) - && ( vertexStride == rhs.vertexStride ) - && ( vertexFormat == rhs.vertexFormat ) - && ( indexData == rhs.indexData ) - && ( indexOffset == rhs.indexOffset ) - && ( indexCount == rhs.indexCount ) - && ( indexType == rhs.indexType ) - && ( transformData == rhs.transformData ) - && ( transformOffset == rhs.transformOffset ); - } - - bool operator!=( GeometryTrianglesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::GeometryTrianglesNV::sType; - }; - static_assert( sizeof( GeometryTrianglesNV ) == sizeof( VkGeometryTrianglesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct GeometryAABBNV - { - protected: - GeometryAABBNV( vk::Buffer aabbData_ = vk::Buffer(), - uint32_t numAABBs_ = 0, - uint32_t stride_ = 0, - vk::DeviceSize offset_ = 0 ) - : aabbData( aabbData_ ) - , numAABBs( numAABBs_ ) - , stride( stride_ ) - , offset( offset_ ) - {} - - GeometryAABBNV( VkGeometryAABBNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - GeometryAABBNV& operator=( VkGeometryAABBNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eGeometryAabbNV; - const void* pNext = nullptr; - vk::Buffer aabbData; - uint32_t numAABBs; - uint32_t stride; - vk::DeviceSize offset; - }; - static_assert( sizeof( GeometryAABBNV ) == sizeof( VkGeometryAABBNV ), "layout struct and wrapper have different size!" ); - } - - struct GeometryAABBNV : public layout::GeometryAABBNV - { - GeometryAABBNV( vk::Buffer aabbData_ = vk::Buffer(), - uint32_t numAABBs_ = 0, - uint32_t stride_ = 0, - vk::DeviceSize offset_ = 0 ) - : layout::GeometryAABBNV( aabbData_, numAABBs_, stride_, offset_ ) - {} - - GeometryAABBNV( VkGeometryAABBNV const & rhs ) - : layout::GeometryAABBNV( rhs ) - {} - - GeometryAABBNV& operator=( VkGeometryAABBNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - GeometryAABBNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - GeometryAABBNV & setAabbData( vk::Buffer aabbData_ ) - { - aabbData = aabbData_; - return *this; - } - - GeometryAABBNV & setNumAABBs( uint32_t numAABBs_ ) - { - numAABBs = numAABBs_; - return *this; - } - - GeometryAABBNV & setStride( uint32_t stride_ ) - { - stride = stride_; - return *this; - } - - GeometryAABBNV & setOffset( vk::DeviceSize offset_ ) - { - offset = offset_; - return *this; - } - - operator VkGeometryAABBNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkGeometryAABBNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( GeometryAABBNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( aabbData == rhs.aabbData ) - && ( numAABBs == rhs.numAABBs ) - && ( stride == rhs.stride ) - && ( offset == rhs.offset ); - } - - bool operator!=( GeometryAABBNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::GeometryAABBNV::sType; - }; - static_assert( sizeof( GeometryAABBNV ) == sizeof( VkGeometryAABBNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct GeometryDataNV - { - GeometryDataNV( vk::GeometryTrianglesNV triangles_ = vk::GeometryTrianglesNV(), - vk::GeometryAABBNV aabbs_ = vk::GeometryAABBNV() ) - : triangles( triangles_ ) - , aabbs( aabbs_ ) - {} - - GeometryDataNV( VkGeometryDataNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - GeometryDataNV& operator=( VkGeometryDataNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - GeometryDataNV & setTriangles( vk::GeometryTrianglesNV triangles_ ) - { - triangles = triangles_; - return *this; - } - - GeometryDataNV & setAabbs( vk::GeometryAABBNV aabbs_ ) - { - aabbs = aabbs_; - return *this; - } - - operator VkGeometryDataNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkGeometryDataNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( GeometryDataNV const& rhs ) const - { - return ( triangles == rhs.triangles ) - && ( aabbs == rhs.aabbs ); - } - - bool operator!=( GeometryDataNV const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::GeometryTrianglesNV triangles; - vk::GeometryAABBNV aabbs; - }; - static_assert( sizeof( GeometryDataNV ) == sizeof( VkGeometryDataNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct GeometryNV - { - protected: - GeometryNV( vk::GeometryTypeNV geometryType_ = vk::GeometryTypeNV::eTriangles, - vk::GeometryDataNV geometry_ = vk::GeometryDataNV(), - vk::GeometryFlagsNV flags_ = vk::GeometryFlagsNV() ) - : geometryType( geometryType_ ) - , geometry( geometry_ ) - , flags( flags_ ) - {} - - GeometryNV( VkGeometryNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - GeometryNV& operator=( VkGeometryNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eGeometryNV; - const void* pNext = nullptr; - vk::GeometryTypeNV geometryType; - vk::GeometryDataNV geometry; - vk::GeometryFlagsNV flags; - }; - static_assert( sizeof( GeometryNV ) == sizeof( VkGeometryNV ), "layout struct and wrapper have different size!" ); - } - - struct GeometryNV : public layout::GeometryNV - { - GeometryNV( vk::GeometryTypeNV geometryType_ = vk::GeometryTypeNV::eTriangles, - vk::GeometryDataNV geometry_ = vk::GeometryDataNV(), - vk::GeometryFlagsNV flags_ = vk::GeometryFlagsNV() ) - : layout::GeometryNV( geometryType_, geometry_, flags_ ) - {} - - GeometryNV( VkGeometryNV const & rhs ) - : layout::GeometryNV( rhs ) - {} - - GeometryNV& operator=( VkGeometryNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - GeometryNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - GeometryNV & setGeometryType( vk::GeometryTypeNV geometryType_ ) - { - geometryType = geometryType_; - return *this; - } - - GeometryNV & setGeometry( vk::GeometryDataNV geometry_ ) - { - geometry = geometry_; - return *this; - } - - GeometryNV & setFlags( vk::GeometryFlagsNV flags_ ) - { - flags = flags_; - return *this; - } - - operator VkGeometryNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkGeometryNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( GeometryNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( geometryType == rhs.geometryType ) - && ( geometry == rhs.geometry ) - && ( flags == rhs.flags ); - } - - bool operator!=( GeometryNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::GeometryNV::sType; - }; - static_assert( sizeof( GeometryNV ) == sizeof( VkGeometryNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct AccelerationStructureInfoNV - { - protected: - AccelerationStructureInfoNV( vk::AccelerationStructureTypeNV type_ = vk::AccelerationStructureTypeNV::eTopLevel, - vk::BuildAccelerationStructureFlagsNV flags_ = vk::BuildAccelerationStructureFlagsNV(), - uint32_t instanceCount_ = 0, - uint32_t geometryCount_ = 0, - const vk::GeometryNV* pGeometries_ = nullptr ) - : type( type_ ) - , flags( flags_ ) - , instanceCount( instanceCount_ ) - , geometryCount( geometryCount_ ) - , pGeometries( pGeometries_ ) - {} - - AccelerationStructureInfoNV( VkAccelerationStructureInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - AccelerationStructureInfoNV& operator=( VkAccelerationStructureInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eAccelerationStructureInfoNV; - const void* pNext = nullptr; - vk::AccelerationStructureTypeNV type; - vk::BuildAccelerationStructureFlagsNV flags; - uint32_t instanceCount; - uint32_t geometryCount; - const vk::GeometryNV* pGeometries; - }; - static_assert( sizeof( AccelerationStructureInfoNV ) == sizeof( VkAccelerationStructureInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct AccelerationStructureInfoNV : public layout::AccelerationStructureInfoNV - { - AccelerationStructureInfoNV( vk::AccelerationStructureTypeNV type_ = vk::AccelerationStructureTypeNV::eTopLevel, - vk::BuildAccelerationStructureFlagsNV flags_ = vk::BuildAccelerationStructureFlagsNV(), - uint32_t instanceCount_ = 0, - uint32_t geometryCount_ = 0, - const vk::GeometryNV* pGeometries_ = nullptr ) - : layout::AccelerationStructureInfoNV( type_, flags_, instanceCount_, geometryCount_, pGeometries_ ) - {} - - AccelerationStructureInfoNV( VkAccelerationStructureInfoNV const & rhs ) - : layout::AccelerationStructureInfoNV( rhs ) - {} - - AccelerationStructureInfoNV& operator=( VkAccelerationStructureInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - AccelerationStructureInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - AccelerationStructureInfoNV & setType( vk::AccelerationStructureTypeNV type_ ) - { - type = type_; - return *this; - } - - AccelerationStructureInfoNV & setFlags( vk::BuildAccelerationStructureFlagsNV flags_ ) - { - flags = flags_; - return *this; - } - - AccelerationStructureInfoNV & setInstanceCount( uint32_t instanceCount_ ) - { - instanceCount = instanceCount_; - return *this; - } - - AccelerationStructureInfoNV & setGeometryCount( uint32_t geometryCount_ ) - { - geometryCount = geometryCount_; - return *this; - } - - AccelerationStructureInfoNV & setPGeometries( const vk::GeometryNV* pGeometries_ ) - { - pGeometries = pGeometries_; - return *this; - } - - operator VkAccelerationStructureInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkAccelerationStructureInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( AccelerationStructureInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( type == rhs.type ) - && ( flags == rhs.flags ) - && ( instanceCount == rhs.instanceCount ) - && ( geometryCount == rhs.geometryCount ) - && ( pGeometries == rhs.pGeometries ); - } - - bool operator!=( AccelerationStructureInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::AccelerationStructureInfoNV::sType; - }; - static_assert( sizeof( AccelerationStructureInfoNV ) == sizeof( VkAccelerationStructureInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct AccelerationStructureCreateInfoNV - { - protected: - AccelerationStructureCreateInfoNV( vk::DeviceSize compactedSize_ = 0, - vk::AccelerationStructureInfoNV info_ = vk::AccelerationStructureInfoNV() ) - : compactedSize( compactedSize_ ) - , info( info_ ) - {} - - AccelerationStructureCreateInfoNV( VkAccelerationStructureCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - AccelerationStructureCreateInfoNV& operator=( VkAccelerationStructureCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eAccelerationStructureCreateInfoNV; - const void* pNext = nullptr; - vk::DeviceSize compactedSize; - vk::AccelerationStructureInfoNV info; - }; - static_assert( sizeof( AccelerationStructureCreateInfoNV ) == sizeof( VkAccelerationStructureCreateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct AccelerationStructureCreateInfoNV : public layout::AccelerationStructureCreateInfoNV - { - AccelerationStructureCreateInfoNV( vk::DeviceSize compactedSize_ = 0, - vk::AccelerationStructureInfoNV info_ = vk::AccelerationStructureInfoNV() ) - : layout::AccelerationStructureCreateInfoNV( compactedSize_, info_ ) - {} - - AccelerationStructureCreateInfoNV( VkAccelerationStructureCreateInfoNV const & rhs ) - : layout::AccelerationStructureCreateInfoNV( rhs ) - {} - - AccelerationStructureCreateInfoNV& operator=( VkAccelerationStructureCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - AccelerationStructureCreateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - AccelerationStructureCreateInfoNV & setCompactedSize( vk::DeviceSize compactedSize_ ) - { - compactedSize = compactedSize_; - return *this; - } - - AccelerationStructureCreateInfoNV & setInfo( vk::AccelerationStructureInfoNV info_ ) - { - info = info_; - return *this; - } - - operator VkAccelerationStructureCreateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkAccelerationStructureCreateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( AccelerationStructureCreateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( compactedSize == rhs.compactedSize ) - && ( info == rhs.info ); - } - - bool operator!=( AccelerationStructureCreateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::AccelerationStructureCreateInfoNV::sType; - }; - static_assert( sizeof( AccelerationStructureCreateInfoNV ) == sizeof( VkAccelerationStructureCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct AccelerationStructureMemoryRequirementsInfoNV - { - protected: - AccelerationStructureMemoryRequirementsInfoNV( vk::AccelerationStructureMemoryRequirementsTypeNV type_ = vk::AccelerationStructureMemoryRequirementsTypeNV::eObject, - vk::AccelerationStructureNV accelerationStructure_ = vk::AccelerationStructureNV() ) - : type( type_ ) - , accelerationStructure( accelerationStructure_ ) - {} - - AccelerationStructureMemoryRequirementsInfoNV( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - AccelerationStructureMemoryRequirementsInfoNV& operator=( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eAccelerationStructureMemoryRequirementsInfoNV; - const void* pNext = nullptr; - vk::AccelerationStructureMemoryRequirementsTypeNV type; - vk::AccelerationStructureNV accelerationStructure; - }; - static_assert( sizeof( AccelerationStructureMemoryRequirementsInfoNV ) == sizeof( VkAccelerationStructureMemoryRequirementsInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct AccelerationStructureMemoryRequirementsInfoNV : public layout::AccelerationStructureMemoryRequirementsInfoNV - { - AccelerationStructureMemoryRequirementsInfoNV( vk::AccelerationStructureMemoryRequirementsTypeNV type_ = vk::AccelerationStructureMemoryRequirementsTypeNV::eObject, - vk::AccelerationStructureNV accelerationStructure_ = vk::AccelerationStructureNV() ) - : layout::AccelerationStructureMemoryRequirementsInfoNV( type_, accelerationStructure_ ) - {} - - AccelerationStructureMemoryRequirementsInfoNV( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) - : layout::AccelerationStructureMemoryRequirementsInfoNV( rhs ) - {} - - AccelerationStructureMemoryRequirementsInfoNV& operator=( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - AccelerationStructureMemoryRequirementsInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - AccelerationStructureMemoryRequirementsInfoNV & setType( vk::AccelerationStructureMemoryRequirementsTypeNV type_ ) - { - type = type_; - return *this; - } - - AccelerationStructureMemoryRequirementsInfoNV & setAccelerationStructure( vk::AccelerationStructureNV accelerationStructure_ ) - { - accelerationStructure = accelerationStructure_; - return *this; - } - - operator VkAccelerationStructureMemoryRequirementsInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkAccelerationStructureMemoryRequirementsInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( AccelerationStructureMemoryRequirementsInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( type == rhs.type ) - && ( accelerationStructure == rhs.accelerationStructure ); - } - - bool operator!=( AccelerationStructureMemoryRequirementsInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::AccelerationStructureMemoryRequirementsInfoNV::sType; - }; - static_assert( sizeof( AccelerationStructureMemoryRequirementsInfoNV ) == sizeof( VkAccelerationStructureMemoryRequirementsInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct AcquireNextImageInfoKHR - { - protected: - AcquireNextImageInfoKHR( vk::SwapchainKHR swapchain_ = vk::SwapchainKHR(), - uint64_t timeout_ = 0, - vk::Semaphore semaphore_ = vk::Semaphore(), - vk::Fence fence_ = vk::Fence(), - uint32_t deviceMask_ = 0 ) - : swapchain( swapchain_ ) - , timeout( timeout_ ) - , semaphore( semaphore_ ) - , fence( fence_ ) - , deviceMask( deviceMask_ ) - {} - - AcquireNextImageInfoKHR( VkAcquireNextImageInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - AcquireNextImageInfoKHR& operator=( VkAcquireNextImageInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eAcquireNextImageInfoKHR; - const void* pNext = nullptr; - vk::SwapchainKHR swapchain; - uint64_t timeout; - vk::Semaphore semaphore; - vk::Fence fence; - uint32_t deviceMask; - }; - static_assert( sizeof( AcquireNextImageInfoKHR ) == sizeof( VkAcquireNextImageInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct AcquireNextImageInfoKHR : public layout::AcquireNextImageInfoKHR - { - AcquireNextImageInfoKHR( vk::SwapchainKHR swapchain_ = vk::SwapchainKHR(), - uint64_t timeout_ = 0, - vk::Semaphore semaphore_ = vk::Semaphore(), - vk::Fence fence_ = vk::Fence(), - uint32_t deviceMask_ = 0 ) - : layout::AcquireNextImageInfoKHR( swapchain_, timeout_, semaphore_, fence_, deviceMask_ ) - {} - - AcquireNextImageInfoKHR( VkAcquireNextImageInfoKHR const & rhs ) - : layout::AcquireNextImageInfoKHR( rhs ) - {} - - AcquireNextImageInfoKHR& operator=( VkAcquireNextImageInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - AcquireNextImageInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - AcquireNextImageInfoKHR & setSwapchain( vk::SwapchainKHR swapchain_ ) - { - swapchain = swapchain_; - return *this; - } - - AcquireNextImageInfoKHR & setTimeout( uint64_t timeout_ ) - { - timeout = timeout_; - return *this; - } - - AcquireNextImageInfoKHR & setSemaphore( vk::Semaphore semaphore_ ) - { - semaphore = semaphore_; - return *this; - } - - AcquireNextImageInfoKHR & setFence( vk::Fence fence_ ) - { - fence = fence_; - return *this; - } - - AcquireNextImageInfoKHR & setDeviceMask( uint32_t deviceMask_ ) - { - deviceMask = deviceMask_; - return *this; - } - - operator VkAcquireNextImageInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkAcquireNextImageInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( AcquireNextImageInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( swapchain == rhs.swapchain ) - && ( timeout == rhs.timeout ) - && ( semaphore == rhs.semaphore ) - && ( fence == rhs.fence ) - && ( deviceMask == rhs.deviceMask ); - } - - bool operator!=( AcquireNextImageInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::AcquireNextImageInfoKHR::sType; - }; - static_assert( sizeof( AcquireNextImageInfoKHR ) == sizeof( VkAcquireNextImageInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct AllocationCallbacks - { - AllocationCallbacks( void* pUserData_ = nullptr, - PFN_vkAllocationFunction pfnAllocation_ = nullptr, - PFN_vkReallocationFunction pfnReallocation_ = nullptr, - PFN_vkFreeFunction pfnFree_ = nullptr, - PFN_vkInternalAllocationNotification pfnInternalAllocation_ = nullptr, - PFN_vkInternalFreeNotification pfnInternalFree_ = nullptr ) - : pUserData( pUserData_ ) - , pfnAllocation( pfnAllocation_ ) - , pfnReallocation( pfnReallocation_ ) - , pfnFree( pfnFree_ ) - , pfnInternalAllocation( pfnInternalAllocation_ ) - , pfnInternalFree( pfnInternalFree_ ) - {} - - AllocationCallbacks( VkAllocationCallbacks const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - AllocationCallbacks& operator=( VkAllocationCallbacks const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - AllocationCallbacks & setPUserData( void* pUserData_ ) - { - pUserData = pUserData_; - return *this; - } - - AllocationCallbacks & setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ ) - { - pfnAllocation = pfnAllocation_; - return *this; - } - - AllocationCallbacks & setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ ) - { - pfnReallocation = pfnReallocation_; - return *this; - } - - AllocationCallbacks & setPfnFree( PFN_vkFreeFunction pfnFree_ ) - { - pfnFree = pfnFree_; - return *this; - } - - AllocationCallbacks & setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ ) - { - pfnInternalAllocation = pfnInternalAllocation_; - return *this; - } - - AllocationCallbacks & setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ ) - { - pfnInternalFree = pfnInternalFree_; - return *this; - } - - operator VkAllocationCallbacks const&() const - { - return *reinterpret_cast( this ); - } - - operator VkAllocationCallbacks &() - { - return *reinterpret_cast( this ); - } - - bool operator==( AllocationCallbacks const& rhs ) const - { - return ( pUserData == rhs.pUserData ) - && ( pfnAllocation == rhs.pfnAllocation ) - && ( pfnReallocation == rhs.pfnReallocation ) - && ( pfnFree == rhs.pfnFree ) - && ( pfnInternalAllocation == rhs.pfnInternalAllocation ) - && ( pfnInternalFree == rhs.pfnInternalFree ); - } - - bool operator!=( AllocationCallbacks const& rhs ) const - { - return !operator==( rhs ); - } - - public: - void* pUserData; - PFN_vkAllocationFunction pfnAllocation; - PFN_vkReallocationFunction pfnReallocation; - PFN_vkFreeFunction pfnFree; - PFN_vkInternalAllocationNotification pfnInternalAllocation; - PFN_vkInternalFreeNotification pfnInternalFree; - }; - static_assert( sizeof( AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ComponentMapping - { - ComponentMapping( vk::ComponentSwizzle r_ = vk::ComponentSwizzle::eIdentity, - vk::ComponentSwizzle g_ = vk::ComponentSwizzle::eIdentity, - vk::ComponentSwizzle b_ = vk::ComponentSwizzle::eIdentity, - vk::ComponentSwizzle a_ = vk::ComponentSwizzle::eIdentity ) - : r( r_ ) - , g( g_ ) - , b( b_ ) - , a( a_ ) - {} - - ComponentMapping( VkComponentMapping const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ComponentMapping& operator=( VkComponentMapping const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ComponentMapping & setR( vk::ComponentSwizzle r_ ) - { - r = r_; - return *this; - } - - ComponentMapping & setG( vk::ComponentSwizzle g_ ) - { - g = g_; - return *this; - } - - ComponentMapping & setB( vk::ComponentSwizzle b_ ) - { - b = b_; - return *this; - } - - ComponentMapping & setA( vk::ComponentSwizzle a_ ) - { - a = a_; - return *this; - } - - operator VkComponentMapping const&() const - { - return *reinterpret_cast( this ); - } - - operator VkComponentMapping &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ComponentMapping const& rhs ) const - { - return ( r == rhs.r ) - && ( g == rhs.g ) - && ( b == rhs.b ) - && ( a == rhs.a ); - } - - bool operator!=( ComponentMapping const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ComponentSwizzle r; - vk::ComponentSwizzle g; - vk::ComponentSwizzle b; - vk::ComponentSwizzle a; - }; - static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - - namespace layout - { - struct AndroidHardwareBufferFormatPropertiesANDROID - { - protected: - AndroidHardwareBufferFormatPropertiesANDROID( vk::Format format_ = vk::Format::eUndefined, - uint64_t externalFormat_ = 0, - vk::FormatFeatureFlags formatFeatures_ = vk::FormatFeatureFlags(), - vk::ComponentMapping samplerYcbcrConversionComponents_ = vk::ComponentMapping(), - vk::SamplerYcbcrModelConversion suggestedYcbcrModel_ = vk::SamplerYcbcrModelConversion::eRgbIdentity, - vk::SamplerYcbcrRange suggestedYcbcrRange_ = vk::SamplerYcbcrRange::eItuFull, - vk::ChromaLocation suggestedXChromaOffset_ = vk::ChromaLocation::eCositedEven, - vk::ChromaLocation suggestedYChromaOffset_ = vk::ChromaLocation::eCositedEven ) - : format( format_ ) - , externalFormat( externalFormat_ ) - , formatFeatures( formatFeatures_ ) - , samplerYcbcrConversionComponents( samplerYcbcrConversionComponents_ ) - , suggestedYcbcrModel( suggestedYcbcrModel_ ) - , suggestedYcbcrRange( suggestedYcbcrRange_ ) - , suggestedXChromaOffset( suggestedXChromaOffset_ ) - , suggestedYChromaOffset( suggestedYChromaOffset_ ) - {} - - AndroidHardwareBufferFormatPropertiesANDROID( VkAndroidHardwareBufferFormatPropertiesANDROID const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - AndroidHardwareBufferFormatPropertiesANDROID& operator=( VkAndroidHardwareBufferFormatPropertiesANDROID const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eAndroidHardwareBufferFormatPropertiesANDROID; - void* pNext = nullptr; - vk::Format format; - uint64_t externalFormat; - vk::FormatFeatureFlags formatFeatures; - vk::ComponentMapping samplerYcbcrConversionComponents; - vk::SamplerYcbcrModelConversion suggestedYcbcrModel; - vk::SamplerYcbcrRange suggestedYcbcrRange; - vk::ChromaLocation suggestedXChromaOffset; - vk::ChromaLocation suggestedYChromaOffset; - }; - static_assert( sizeof( AndroidHardwareBufferFormatPropertiesANDROID ) == sizeof( VkAndroidHardwareBufferFormatPropertiesANDROID ), "layout struct and wrapper have different size!" ); - } - - struct AndroidHardwareBufferFormatPropertiesANDROID : public layout::AndroidHardwareBufferFormatPropertiesANDROID - { - operator VkAndroidHardwareBufferFormatPropertiesANDROID const&() const - { - return *reinterpret_cast( this ); - } - - operator VkAndroidHardwareBufferFormatPropertiesANDROID &() - { - return *reinterpret_cast( this ); - } - - bool operator==( AndroidHardwareBufferFormatPropertiesANDROID const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( format == rhs.format ) - && ( externalFormat == rhs.externalFormat ) - && ( formatFeatures == rhs.formatFeatures ) - && ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) - && ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) - && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) - && ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) - && ( suggestedYChromaOffset == rhs.suggestedYChromaOffset ); - } - - bool operator!=( AndroidHardwareBufferFormatPropertiesANDROID const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::AndroidHardwareBufferFormatPropertiesANDROID::sType; - }; - static_assert( sizeof( AndroidHardwareBufferFormatPropertiesANDROID ) == sizeof( VkAndroidHardwareBufferFormatPropertiesANDROID ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - - namespace layout - { - struct AndroidHardwareBufferPropertiesANDROID - { - protected: - AndroidHardwareBufferPropertiesANDROID( vk::DeviceSize allocationSize_ = 0, - uint32_t memoryTypeBits_ = 0 ) - : allocationSize( allocationSize_ ) - , memoryTypeBits( memoryTypeBits_ ) - {} - - AndroidHardwareBufferPropertiesANDROID( VkAndroidHardwareBufferPropertiesANDROID const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - AndroidHardwareBufferPropertiesANDROID& operator=( VkAndroidHardwareBufferPropertiesANDROID const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eAndroidHardwareBufferPropertiesANDROID; - void* pNext = nullptr; - vk::DeviceSize allocationSize; - uint32_t memoryTypeBits; - }; - static_assert( sizeof( AndroidHardwareBufferPropertiesANDROID ) == sizeof( VkAndroidHardwareBufferPropertiesANDROID ), "layout struct and wrapper have different size!" ); - } - - struct AndroidHardwareBufferPropertiesANDROID : public layout::AndroidHardwareBufferPropertiesANDROID - { - operator VkAndroidHardwareBufferPropertiesANDROID const&() const - { - return *reinterpret_cast( this ); - } - - operator VkAndroidHardwareBufferPropertiesANDROID &() - { - return *reinterpret_cast( this ); - } - - bool operator==( AndroidHardwareBufferPropertiesANDROID const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( allocationSize == rhs.allocationSize ) - && ( memoryTypeBits == rhs.memoryTypeBits ); - } - - bool operator!=( AndroidHardwareBufferPropertiesANDROID const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::AndroidHardwareBufferPropertiesANDROID::sType; - }; - static_assert( sizeof( AndroidHardwareBufferPropertiesANDROID ) == sizeof( VkAndroidHardwareBufferPropertiesANDROID ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - - namespace layout - { - struct AndroidHardwareBufferUsageANDROID - { - protected: - AndroidHardwareBufferUsageANDROID( uint64_t androidHardwareBufferUsage_ = 0 ) - : androidHardwareBufferUsage( androidHardwareBufferUsage_ ) - {} - - AndroidHardwareBufferUsageANDROID( VkAndroidHardwareBufferUsageANDROID const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - AndroidHardwareBufferUsageANDROID& operator=( VkAndroidHardwareBufferUsageANDROID const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eAndroidHardwareBufferUsageANDROID; - void* pNext = nullptr; - uint64_t androidHardwareBufferUsage; - }; - static_assert( sizeof( AndroidHardwareBufferUsageANDROID ) == sizeof( VkAndroidHardwareBufferUsageANDROID ), "layout struct and wrapper have different size!" ); - } - - struct AndroidHardwareBufferUsageANDROID : public layout::AndroidHardwareBufferUsageANDROID - { - operator VkAndroidHardwareBufferUsageANDROID const&() const - { - return *reinterpret_cast( this ); - } - - operator VkAndroidHardwareBufferUsageANDROID &() - { - return *reinterpret_cast( this ); - } - - bool operator==( AndroidHardwareBufferUsageANDROID const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( androidHardwareBufferUsage == rhs.androidHardwareBufferUsage ); - } - - bool operator!=( AndroidHardwareBufferUsageANDROID const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::AndroidHardwareBufferUsageANDROID::sType; - }; - static_assert( sizeof( AndroidHardwareBufferUsageANDROID ) == sizeof( VkAndroidHardwareBufferUsageANDROID ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - - namespace layout - { - struct AndroidSurfaceCreateInfoKHR - { - protected: - AndroidSurfaceCreateInfoKHR( vk::AndroidSurfaceCreateFlagsKHR flags_ = vk::AndroidSurfaceCreateFlagsKHR(), - struct ANativeWindow* window_ = nullptr ) - : flags( flags_ ) - , window( window_ ) - {} - - AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eAndroidSurfaceCreateInfoKHR; - const void* pNext = nullptr; - vk::AndroidSurfaceCreateFlagsKHR flags; - struct ANativeWindow* window; - }; - static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct AndroidSurfaceCreateInfoKHR : public layout::AndroidSurfaceCreateInfoKHR - { - AndroidSurfaceCreateInfoKHR( vk::AndroidSurfaceCreateFlagsKHR flags_ = vk::AndroidSurfaceCreateFlagsKHR(), - struct ANativeWindow* window_ = nullptr ) - : layout::AndroidSurfaceCreateInfoKHR( flags_, window_ ) - {} - - AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs ) - : layout::AndroidSurfaceCreateInfoKHR( rhs ) - {} - - AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - AndroidSurfaceCreateInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - AndroidSurfaceCreateInfoKHR & setFlags( vk::AndroidSurfaceCreateFlagsKHR flags_ ) - { - flags = flags_; - return *this; - } - - AndroidSurfaceCreateInfoKHR & setWindow( struct ANativeWindow* window_ ) - { - window = window_; - return *this; - } - - operator VkAndroidSurfaceCreateInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkAndroidSurfaceCreateInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( window == rhs.window ); - } - - bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::AndroidSurfaceCreateInfoKHR::sType; - }; - static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - namespace layout - { - struct ApplicationInfo - { - protected: - ApplicationInfo( const char* pApplicationName_ = nullptr, - uint32_t applicationVersion_ = 0, - const char* pEngineName_ = nullptr, - uint32_t engineVersion_ = 0, - uint32_t apiVersion_ = 0 ) - : pApplicationName( pApplicationName_ ) - , applicationVersion( applicationVersion_ ) - , pEngineName( pEngineName_ ) - , engineVersion( engineVersion_ ) - , apiVersion( apiVersion_ ) - {} - - ApplicationInfo( VkApplicationInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ApplicationInfo& operator=( VkApplicationInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eApplicationInfo; - const void* pNext = nullptr; - const char* pApplicationName; - uint32_t applicationVersion; - const char* pEngineName; - uint32_t engineVersion; - uint32_t apiVersion; - }; - static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "layout struct and wrapper have different size!" ); - } - - struct ApplicationInfo : public layout::ApplicationInfo - { - ApplicationInfo( const char* pApplicationName_ = nullptr, - uint32_t applicationVersion_ = 0, - const char* pEngineName_ = nullptr, - uint32_t engineVersion_ = 0, - uint32_t apiVersion_ = 0 ) - : layout::ApplicationInfo( pApplicationName_, applicationVersion_, pEngineName_, engineVersion_, apiVersion_ ) - {} - - ApplicationInfo( VkApplicationInfo const & rhs ) - : layout::ApplicationInfo( rhs ) - {} - - ApplicationInfo& operator=( VkApplicationInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ApplicationInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ApplicationInfo & setPApplicationName( const char* pApplicationName_ ) - { - pApplicationName = pApplicationName_; - return *this; - } - - ApplicationInfo & setApplicationVersion( uint32_t applicationVersion_ ) - { - applicationVersion = applicationVersion_; - return *this; - } - - ApplicationInfo & setPEngineName( const char* pEngineName_ ) - { - pEngineName = pEngineName_; - return *this; - } - - ApplicationInfo & setEngineVersion( uint32_t engineVersion_ ) - { - engineVersion = engineVersion_; - return *this; - } - - ApplicationInfo & setApiVersion( uint32_t apiVersion_ ) - { - apiVersion = apiVersion_; - return *this; - } - - operator VkApplicationInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkApplicationInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ApplicationInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pApplicationName == rhs.pApplicationName ) - && ( applicationVersion == rhs.applicationVersion ) - && ( pEngineName == rhs.pEngineName ) - && ( engineVersion == rhs.engineVersion ) - && ( apiVersion == rhs.apiVersion ); - } - - bool operator!=( ApplicationInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ApplicationInfo::sType; - }; - static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct AttachmentDescription - { - AttachmentDescription( vk::AttachmentDescriptionFlags flags_ = vk::AttachmentDescriptionFlags(), - vk::Format format_ = vk::Format::eUndefined, - vk::SampleCountFlagBits samples_ = vk::SampleCountFlagBits::e1, - vk::AttachmentLoadOp loadOp_ = vk::AttachmentLoadOp::eLoad, - vk::AttachmentStoreOp storeOp_ = vk::AttachmentStoreOp::eStore, - vk::AttachmentLoadOp stencilLoadOp_ = vk::AttachmentLoadOp::eLoad, - vk::AttachmentStoreOp stencilStoreOp_ = vk::AttachmentStoreOp::eStore, - vk::ImageLayout initialLayout_ = vk::ImageLayout::eUndefined, - vk::ImageLayout finalLayout_ = vk::ImageLayout::eUndefined ) - : flags( flags_ ) - , format( format_ ) - , samples( samples_ ) - , loadOp( loadOp_ ) - , storeOp( storeOp_ ) - , stencilLoadOp( stencilLoadOp_ ) - , stencilStoreOp( stencilStoreOp_ ) - , initialLayout( initialLayout_ ) - , finalLayout( finalLayout_ ) - {} - - AttachmentDescription( VkAttachmentDescription const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - AttachmentDescription& operator=( VkAttachmentDescription const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - AttachmentDescription & setFlags( vk::AttachmentDescriptionFlags flags_ ) - { - flags = flags_; - return *this; - } - - AttachmentDescription & setFormat( vk::Format format_ ) - { - format = format_; - return *this; - } - - AttachmentDescription & setSamples( vk::SampleCountFlagBits samples_ ) - { - samples = samples_; - return *this; - } - - AttachmentDescription & setLoadOp( vk::AttachmentLoadOp loadOp_ ) - { - loadOp = loadOp_; - return *this; - } - - AttachmentDescription & setStoreOp( vk::AttachmentStoreOp storeOp_ ) - { - storeOp = storeOp_; - return *this; - } - - AttachmentDescription & setStencilLoadOp( vk::AttachmentLoadOp stencilLoadOp_ ) - { - stencilLoadOp = stencilLoadOp_; - return *this; - } - - AttachmentDescription & setStencilStoreOp( vk::AttachmentStoreOp stencilStoreOp_ ) - { - stencilStoreOp = stencilStoreOp_; - return *this; - } - - AttachmentDescription & setInitialLayout( vk::ImageLayout initialLayout_ ) - { - initialLayout = initialLayout_; - return *this; - } - - AttachmentDescription & setFinalLayout( vk::ImageLayout finalLayout_ ) - { - finalLayout = finalLayout_; - return *this; - } - - operator VkAttachmentDescription const&() const - { - return *reinterpret_cast( this ); - } - - operator VkAttachmentDescription &() - { - return *reinterpret_cast( this ); - } - - bool operator==( AttachmentDescription const& rhs ) const - { - return ( flags == rhs.flags ) - && ( format == rhs.format ) - && ( samples == rhs.samples ) - && ( loadOp == rhs.loadOp ) - && ( storeOp == rhs.storeOp ) - && ( stencilLoadOp == rhs.stencilLoadOp ) - && ( stencilStoreOp == rhs.stencilStoreOp ) - && ( initialLayout == rhs.initialLayout ) - && ( finalLayout == rhs.finalLayout ); - } - - bool operator!=( AttachmentDescription const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::AttachmentDescriptionFlags flags; - vk::Format format; - vk::SampleCountFlagBits samples; - vk::AttachmentLoadOp loadOp; - vk::AttachmentStoreOp storeOp; - vk::AttachmentLoadOp stencilLoadOp; - vk::AttachmentStoreOp stencilStoreOp; - vk::ImageLayout initialLayout; - vk::ImageLayout finalLayout; - }; - static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct AttachmentDescription2KHR - { - protected: - AttachmentDescription2KHR( vk::AttachmentDescriptionFlags flags_ = vk::AttachmentDescriptionFlags(), - vk::Format format_ = vk::Format::eUndefined, - vk::SampleCountFlagBits samples_ = vk::SampleCountFlagBits::e1, - vk::AttachmentLoadOp loadOp_ = vk::AttachmentLoadOp::eLoad, - vk::AttachmentStoreOp storeOp_ = vk::AttachmentStoreOp::eStore, - vk::AttachmentLoadOp stencilLoadOp_ = vk::AttachmentLoadOp::eLoad, - vk::AttachmentStoreOp stencilStoreOp_ = vk::AttachmentStoreOp::eStore, - vk::ImageLayout initialLayout_ = vk::ImageLayout::eUndefined, - vk::ImageLayout finalLayout_ = vk::ImageLayout::eUndefined ) - : flags( flags_ ) - , format( format_ ) - , samples( samples_ ) - , loadOp( loadOp_ ) - , storeOp( storeOp_ ) - , stencilLoadOp( stencilLoadOp_ ) - , stencilStoreOp( stencilStoreOp_ ) - , initialLayout( initialLayout_ ) - , finalLayout( finalLayout_ ) - {} - - AttachmentDescription2KHR( VkAttachmentDescription2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - AttachmentDescription2KHR& operator=( VkAttachmentDescription2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eAttachmentDescription2KHR; - const void* pNext = nullptr; - vk::AttachmentDescriptionFlags flags; - vk::Format format; - vk::SampleCountFlagBits samples; - vk::AttachmentLoadOp loadOp; - vk::AttachmentStoreOp storeOp; - vk::AttachmentLoadOp stencilLoadOp; - vk::AttachmentStoreOp stencilStoreOp; - vk::ImageLayout initialLayout; - vk::ImageLayout finalLayout; - }; - static_assert( sizeof( AttachmentDescription2KHR ) == sizeof( VkAttachmentDescription2KHR ), "layout struct and wrapper have different size!" ); - } - - struct AttachmentDescription2KHR : public layout::AttachmentDescription2KHR - { - AttachmentDescription2KHR( vk::AttachmentDescriptionFlags flags_ = vk::AttachmentDescriptionFlags(), - vk::Format format_ = vk::Format::eUndefined, - vk::SampleCountFlagBits samples_ = vk::SampleCountFlagBits::e1, - vk::AttachmentLoadOp loadOp_ = vk::AttachmentLoadOp::eLoad, - vk::AttachmentStoreOp storeOp_ = vk::AttachmentStoreOp::eStore, - vk::AttachmentLoadOp stencilLoadOp_ = vk::AttachmentLoadOp::eLoad, - vk::AttachmentStoreOp stencilStoreOp_ = vk::AttachmentStoreOp::eStore, - vk::ImageLayout initialLayout_ = vk::ImageLayout::eUndefined, - vk::ImageLayout finalLayout_ = vk::ImageLayout::eUndefined ) - : layout::AttachmentDescription2KHR( flags_, format_, samples_, loadOp_, storeOp_, stencilLoadOp_, stencilStoreOp_, initialLayout_, finalLayout_ ) - {} - - AttachmentDescription2KHR( VkAttachmentDescription2KHR const & rhs ) - : layout::AttachmentDescription2KHR( rhs ) - {} - - AttachmentDescription2KHR& operator=( VkAttachmentDescription2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - AttachmentDescription2KHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - AttachmentDescription2KHR & setFlags( vk::AttachmentDescriptionFlags flags_ ) - { - flags = flags_; - return *this; - } - - AttachmentDescription2KHR & setFormat( vk::Format format_ ) - { - format = format_; - return *this; - } - - AttachmentDescription2KHR & setSamples( vk::SampleCountFlagBits samples_ ) - { - samples = samples_; - return *this; - } - - AttachmentDescription2KHR & setLoadOp( vk::AttachmentLoadOp loadOp_ ) - { - loadOp = loadOp_; - return *this; - } - - AttachmentDescription2KHR & setStoreOp( vk::AttachmentStoreOp storeOp_ ) - { - storeOp = storeOp_; - return *this; - } - - AttachmentDescription2KHR & setStencilLoadOp( vk::AttachmentLoadOp stencilLoadOp_ ) - { - stencilLoadOp = stencilLoadOp_; - return *this; - } - - AttachmentDescription2KHR & setStencilStoreOp( vk::AttachmentStoreOp stencilStoreOp_ ) - { - stencilStoreOp = stencilStoreOp_; - return *this; - } - - AttachmentDescription2KHR & setInitialLayout( vk::ImageLayout initialLayout_ ) - { - initialLayout = initialLayout_; - return *this; - } - - AttachmentDescription2KHR & setFinalLayout( vk::ImageLayout finalLayout_ ) - { - finalLayout = finalLayout_; - return *this; - } - - operator VkAttachmentDescription2KHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkAttachmentDescription2KHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( AttachmentDescription2KHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( format == rhs.format ) - && ( samples == rhs.samples ) - && ( loadOp == rhs.loadOp ) - && ( storeOp == rhs.storeOp ) - && ( stencilLoadOp == rhs.stencilLoadOp ) - && ( stencilStoreOp == rhs.stencilStoreOp ) - && ( initialLayout == rhs.initialLayout ) - && ( finalLayout == rhs.finalLayout ); - } - - bool operator!=( AttachmentDescription2KHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::AttachmentDescription2KHR::sType; - }; - static_assert( sizeof( AttachmentDescription2KHR ) == sizeof( VkAttachmentDescription2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct AttachmentReference - { - AttachmentReference( uint32_t attachment_ = 0, - vk::ImageLayout layout_ = vk::ImageLayout::eUndefined ) - : attachment( attachment_ ) - , layout( layout_ ) - {} - - AttachmentReference( VkAttachmentReference const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - AttachmentReference& operator=( VkAttachmentReference const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - AttachmentReference & setAttachment( uint32_t attachment_ ) - { - attachment = attachment_; - return *this; - } - - AttachmentReference & setLayout( vk::ImageLayout layout_ ) - { - layout = layout_; - return *this; - } - - operator VkAttachmentReference const&() const - { - return *reinterpret_cast( this ); - } - - operator VkAttachmentReference &() - { - return *reinterpret_cast( this ); - } - - bool operator==( AttachmentReference const& rhs ) const - { - return ( attachment == rhs.attachment ) - && ( layout == rhs.layout ); - } - - bool operator!=( AttachmentReference const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t attachment; - vk::ImageLayout layout; - }; - static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct AttachmentReference2KHR - { - protected: - AttachmentReference2KHR( uint32_t attachment_ = 0, - vk::ImageLayout layout_ = vk::ImageLayout::eUndefined, - vk::ImageAspectFlags aspectMask_ = vk::ImageAspectFlags() ) - : attachment( attachment_ ) - , layout( layout_ ) - , aspectMask( aspectMask_ ) - {} - - AttachmentReference2KHR( VkAttachmentReference2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - AttachmentReference2KHR& operator=( VkAttachmentReference2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eAttachmentReference2KHR; - const void* pNext = nullptr; - uint32_t attachment; - vk::ImageLayout layout; - vk::ImageAspectFlags aspectMask; - }; - static_assert( sizeof( AttachmentReference2KHR ) == sizeof( VkAttachmentReference2KHR ), "layout struct and wrapper have different size!" ); - } - - struct AttachmentReference2KHR : public layout::AttachmentReference2KHR - { - AttachmentReference2KHR( uint32_t attachment_ = 0, - vk::ImageLayout layout_ = vk::ImageLayout::eUndefined, - vk::ImageAspectFlags aspectMask_ = vk::ImageAspectFlags() ) - : layout::AttachmentReference2KHR( attachment_, layout_, aspectMask_ ) - {} - - AttachmentReference2KHR( VkAttachmentReference2KHR const & rhs ) - : layout::AttachmentReference2KHR( rhs ) - {} - - AttachmentReference2KHR& operator=( VkAttachmentReference2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - AttachmentReference2KHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - AttachmentReference2KHR & setAttachment( uint32_t attachment_ ) - { - attachment = attachment_; - return *this; - } - - AttachmentReference2KHR & setLayout( vk::ImageLayout layout_ ) - { - layout = layout_; - return *this; - } - - AttachmentReference2KHR & setAspectMask( vk::ImageAspectFlags aspectMask_ ) - { - aspectMask = aspectMask_; - return *this; - } - - operator VkAttachmentReference2KHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkAttachmentReference2KHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( AttachmentReference2KHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( attachment == rhs.attachment ) - && ( layout == rhs.layout ) - && ( aspectMask == rhs.aspectMask ); - } - - bool operator!=( AttachmentReference2KHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::AttachmentReference2KHR::sType; - }; - static_assert( sizeof( AttachmentReference2KHR ) == sizeof( VkAttachmentReference2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct Extent2D - { - Extent2D( uint32_t width_ = 0, - uint32_t height_ = 0 ) - : width( width_ ) - , height( height_ ) - {} - - Extent2D( VkExtent2D const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - Extent2D& operator=( VkExtent2D const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - Extent2D & setWidth( uint32_t width_ ) - { - width = width_; - return *this; - } - - Extent2D & setHeight( uint32_t height_ ) - { - height = height_; - return *this; - } - - operator VkExtent2D const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExtent2D &() - { - return *reinterpret_cast( this ); - } - - bool operator==( Extent2D const& rhs ) const - { - return ( width == rhs.width ) - && ( height == rhs.height ); - } - - bool operator!=( Extent2D const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t width; - uint32_t height; - }; - static_assert( sizeof( Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SampleLocationEXT - { - SampleLocationEXT( float x_ = 0, - float y_ = 0 ) - : x( x_ ) - , y( y_ ) - {} - - SampleLocationEXT( VkSampleLocationEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SampleLocationEXT& operator=( VkSampleLocationEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SampleLocationEXT & setX( float x_ ) - { - x = x_; - return *this; - } - - SampleLocationEXT & setY( float y_ ) - { - y = y_; - return *this; - } - - operator VkSampleLocationEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSampleLocationEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SampleLocationEXT const& rhs ) const - { - return ( x == rhs.x ) - && ( y == rhs.y ); - } - - bool operator!=( SampleLocationEXT const& rhs ) const - { - return !operator==( rhs ); - } - - public: - float x; - float y; - }; - static_assert( sizeof( SampleLocationEXT ) == sizeof( VkSampleLocationEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SampleLocationsInfoEXT - { - protected: - SampleLocationsInfoEXT( vk::SampleCountFlagBits sampleLocationsPerPixel_ = vk::SampleCountFlagBits::e1, - vk::Extent2D sampleLocationGridSize_ = vk::Extent2D(), - uint32_t sampleLocationsCount_ = 0, - const vk::SampleLocationEXT* pSampleLocations_ = nullptr ) - : sampleLocationsPerPixel( sampleLocationsPerPixel_ ) - , sampleLocationGridSize( sampleLocationGridSize_ ) - , sampleLocationsCount( sampleLocationsCount_ ) - , pSampleLocations( pSampleLocations_ ) - {} - - SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SampleLocationsInfoEXT& operator=( VkSampleLocationsInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSampleLocationsInfoEXT; - const void* pNext = nullptr; - vk::SampleCountFlagBits sampleLocationsPerPixel; - vk::Extent2D sampleLocationGridSize; - uint32_t sampleLocationsCount; - const vk::SampleLocationEXT* pSampleLocations; - }; - static_assert( sizeof( SampleLocationsInfoEXT ) == sizeof( VkSampleLocationsInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct SampleLocationsInfoEXT : public layout::SampleLocationsInfoEXT - { - SampleLocationsInfoEXT( vk::SampleCountFlagBits sampleLocationsPerPixel_ = vk::SampleCountFlagBits::e1, - vk::Extent2D sampleLocationGridSize_ = vk::Extent2D(), - uint32_t sampleLocationsCount_ = 0, - const vk::SampleLocationEXT* pSampleLocations_ = nullptr ) - : layout::SampleLocationsInfoEXT( sampleLocationsPerPixel_, sampleLocationGridSize_, sampleLocationsCount_, pSampleLocations_ ) - {} - - SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs ) - : layout::SampleLocationsInfoEXT( rhs ) - {} - - SampleLocationsInfoEXT& operator=( VkSampleLocationsInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SampleLocationsInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SampleLocationsInfoEXT & setSampleLocationsPerPixel( vk::SampleCountFlagBits sampleLocationsPerPixel_ ) - { - sampleLocationsPerPixel = sampleLocationsPerPixel_; - return *this; - } - - SampleLocationsInfoEXT & setSampleLocationGridSize( vk::Extent2D sampleLocationGridSize_ ) - { - sampleLocationGridSize = sampleLocationGridSize_; - return *this; - } - - SampleLocationsInfoEXT & setSampleLocationsCount( uint32_t sampleLocationsCount_ ) - { - sampleLocationsCount = sampleLocationsCount_; - return *this; - } - - SampleLocationsInfoEXT & setPSampleLocations( const vk::SampleLocationEXT* pSampleLocations_ ) - { - pSampleLocations = pSampleLocations_; - return *this; - } - - operator VkSampleLocationsInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSampleLocationsInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SampleLocationsInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( sampleLocationsPerPixel == rhs.sampleLocationsPerPixel ) - && ( sampleLocationGridSize == rhs.sampleLocationGridSize ) - && ( sampleLocationsCount == rhs.sampleLocationsCount ) - && ( pSampleLocations == rhs.pSampleLocations ); - } - - bool operator!=( SampleLocationsInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SampleLocationsInfoEXT::sType; - }; - static_assert( sizeof( SampleLocationsInfoEXT ) == sizeof( VkSampleLocationsInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct AttachmentSampleLocationsEXT - { - AttachmentSampleLocationsEXT( uint32_t attachmentIndex_ = 0, - vk::SampleLocationsInfoEXT sampleLocationsInfo_ = vk::SampleLocationsInfoEXT() ) - : attachmentIndex( attachmentIndex_ ) - , sampleLocationsInfo( sampleLocationsInfo_ ) - {} - - AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - AttachmentSampleLocationsEXT& operator=( VkAttachmentSampleLocationsEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - AttachmentSampleLocationsEXT & setAttachmentIndex( uint32_t attachmentIndex_ ) - { - attachmentIndex = attachmentIndex_; - return *this; - } - - AttachmentSampleLocationsEXT & setSampleLocationsInfo( vk::SampleLocationsInfoEXT sampleLocationsInfo_ ) - { - sampleLocationsInfo = sampleLocationsInfo_; - return *this; - } - - operator VkAttachmentSampleLocationsEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkAttachmentSampleLocationsEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( AttachmentSampleLocationsEXT const& rhs ) const - { - return ( attachmentIndex == rhs.attachmentIndex ) - && ( sampleLocationsInfo == rhs.sampleLocationsInfo ); - } - - bool operator!=( AttachmentSampleLocationsEXT const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t attachmentIndex; - vk::SampleLocationsInfoEXT sampleLocationsInfo; - }; - static_assert( sizeof( AttachmentSampleLocationsEXT ) == sizeof( VkAttachmentSampleLocationsEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BaseInStructure - { - protected: - BaseInStructure() - - {} - - BaseInStructure( VkBaseInStructure const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BaseInStructure& operator=( VkBaseInStructure const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType; - const struct vk::BaseInStructure* pNext = nullptr; - }; - static_assert( sizeof( BaseInStructure ) == sizeof( VkBaseInStructure ), "layout struct and wrapper have different size!" ); - } - - struct BaseInStructure : public layout::BaseInStructure - { - BaseInStructure() - - : layout::BaseInStructure( ) - {} - - BaseInStructure( VkBaseInStructure const & rhs ) - : layout::BaseInStructure( rhs ) - {} - - BaseInStructure& operator=( VkBaseInStructure const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BaseInStructure & setPNext( const struct vk::BaseInStructure* pNext_ ) - { - pNext = pNext_; - return *this; - } - - operator VkBaseInStructure const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBaseInStructure &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BaseInStructure const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ); - } - - bool operator!=( BaseInStructure const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BaseInStructure::sType; - }; - static_assert( sizeof( BaseInStructure ) == sizeof( VkBaseInStructure ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BaseOutStructure - { - protected: - BaseOutStructure() - - {} - - BaseOutStructure( VkBaseOutStructure const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BaseOutStructure& operator=( VkBaseOutStructure const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType; - struct vk::BaseOutStructure* pNext = nullptr; - }; - static_assert( sizeof( BaseOutStructure ) == sizeof( VkBaseOutStructure ), "layout struct and wrapper have different size!" ); - } - - struct BaseOutStructure : public layout::BaseOutStructure - { - BaseOutStructure() - - : layout::BaseOutStructure( ) - {} - - BaseOutStructure( VkBaseOutStructure const & rhs ) - : layout::BaseOutStructure( rhs ) - {} - - BaseOutStructure& operator=( VkBaseOutStructure const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BaseOutStructure & setPNext( struct vk::BaseOutStructure* pNext_ ) - { - pNext = pNext_; - return *this; - } - - operator VkBaseOutStructure const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBaseOutStructure &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BaseOutStructure const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ); - } - - bool operator!=( BaseOutStructure const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BaseOutStructure::sType; - }; - static_assert( sizeof( BaseOutStructure ) == sizeof( VkBaseOutStructure ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BindAccelerationStructureMemoryInfoNV - { - protected: - BindAccelerationStructureMemoryInfoNV( vk::AccelerationStructureNV accelerationStructure_ = vk::AccelerationStructureNV(), - vk::DeviceMemory memory_ = vk::DeviceMemory(), - vk::DeviceSize memoryOffset_ = 0, - uint32_t deviceIndexCount_ = 0, - const uint32_t* pDeviceIndices_ = nullptr ) - : accelerationStructure( accelerationStructure_ ) - , memory( memory_ ) - , memoryOffset( memoryOffset_ ) - , deviceIndexCount( deviceIndexCount_ ) - , pDeviceIndices( pDeviceIndices_ ) - {} - - BindAccelerationStructureMemoryInfoNV( VkBindAccelerationStructureMemoryInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BindAccelerationStructureMemoryInfoNV& operator=( VkBindAccelerationStructureMemoryInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eBindAccelerationStructureMemoryInfoNV; - const void* pNext = nullptr; - vk::AccelerationStructureNV accelerationStructure; - vk::DeviceMemory memory; - vk::DeviceSize memoryOffset; - uint32_t deviceIndexCount; - const uint32_t* pDeviceIndices; - }; - static_assert( sizeof( BindAccelerationStructureMemoryInfoNV ) == sizeof( VkBindAccelerationStructureMemoryInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct BindAccelerationStructureMemoryInfoNV : public layout::BindAccelerationStructureMemoryInfoNV - { - BindAccelerationStructureMemoryInfoNV( vk::AccelerationStructureNV accelerationStructure_ = vk::AccelerationStructureNV(), - vk::DeviceMemory memory_ = vk::DeviceMemory(), - vk::DeviceSize memoryOffset_ = 0, - uint32_t deviceIndexCount_ = 0, - const uint32_t* pDeviceIndices_ = nullptr ) - : layout::BindAccelerationStructureMemoryInfoNV( accelerationStructure_, memory_, memoryOffset_, deviceIndexCount_, pDeviceIndices_ ) - {} - - BindAccelerationStructureMemoryInfoNV( VkBindAccelerationStructureMemoryInfoNV const & rhs ) - : layout::BindAccelerationStructureMemoryInfoNV( rhs ) - {} - - BindAccelerationStructureMemoryInfoNV& operator=( VkBindAccelerationStructureMemoryInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BindAccelerationStructureMemoryInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - BindAccelerationStructureMemoryInfoNV & setAccelerationStructure( vk::AccelerationStructureNV accelerationStructure_ ) - { - accelerationStructure = accelerationStructure_; - return *this; - } - - BindAccelerationStructureMemoryInfoNV & setMemory( vk::DeviceMemory memory_ ) - { - memory = memory_; - return *this; - } - - BindAccelerationStructureMemoryInfoNV & setMemoryOffset( vk::DeviceSize memoryOffset_ ) - { - memoryOffset = memoryOffset_; - return *this; - } - - BindAccelerationStructureMemoryInfoNV & setDeviceIndexCount( uint32_t deviceIndexCount_ ) - { - deviceIndexCount = deviceIndexCount_; - return *this; - } - - BindAccelerationStructureMemoryInfoNV & setPDeviceIndices( const uint32_t* pDeviceIndices_ ) - { - pDeviceIndices = pDeviceIndices_; - return *this; - } - - operator VkBindAccelerationStructureMemoryInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBindAccelerationStructureMemoryInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BindAccelerationStructureMemoryInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( accelerationStructure == rhs.accelerationStructure ) - && ( memory == rhs.memory ) - && ( memoryOffset == rhs.memoryOffset ) - && ( deviceIndexCount == rhs.deviceIndexCount ) - && ( pDeviceIndices == rhs.pDeviceIndices ); - } - - bool operator!=( BindAccelerationStructureMemoryInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BindAccelerationStructureMemoryInfoNV::sType; - }; - static_assert( sizeof( BindAccelerationStructureMemoryInfoNV ) == sizeof( VkBindAccelerationStructureMemoryInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BindBufferMemoryDeviceGroupInfo - { - protected: - BindBufferMemoryDeviceGroupInfo( uint32_t deviceIndexCount_ = 0, - const uint32_t* pDeviceIndices_ = nullptr ) - : deviceIndexCount( deviceIndexCount_ ) - , pDeviceIndices( pDeviceIndices_ ) - {} - - BindBufferMemoryDeviceGroupInfo( VkBindBufferMemoryDeviceGroupInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BindBufferMemoryDeviceGroupInfo& operator=( VkBindBufferMemoryDeviceGroupInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eBindBufferMemoryDeviceGroupInfo; - const void* pNext = nullptr; - uint32_t deviceIndexCount; - const uint32_t* pDeviceIndices; - }; - static_assert( sizeof( BindBufferMemoryDeviceGroupInfo ) == sizeof( VkBindBufferMemoryDeviceGroupInfo ), "layout struct and wrapper have different size!" ); - } - - struct BindBufferMemoryDeviceGroupInfo : public layout::BindBufferMemoryDeviceGroupInfo - { - BindBufferMemoryDeviceGroupInfo( uint32_t deviceIndexCount_ = 0, - const uint32_t* pDeviceIndices_ = nullptr ) - : layout::BindBufferMemoryDeviceGroupInfo( deviceIndexCount_, pDeviceIndices_ ) - {} - - BindBufferMemoryDeviceGroupInfo( VkBindBufferMemoryDeviceGroupInfo const & rhs ) - : layout::BindBufferMemoryDeviceGroupInfo( rhs ) - {} - - BindBufferMemoryDeviceGroupInfo& operator=( VkBindBufferMemoryDeviceGroupInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BindBufferMemoryDeviceGroupInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - BindBufferMemoryDeviceGroupInfo & setDeviceIndexCount( uint32_t deviceIndexCount_ ) - { - deviceIndexCount = deviceIndexCount_; - return *this; - } - - BindBufferMemoryDeviceGroupInfo & setPDeviceIndices( const uint32_t* pDeviceIndices_ ) - { - pDeviceIndices = pDeviceIndices_; - return *this; - } - - operator VkBindBufferMemoryDeviceGroupInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBindBufferMemoryDeviceGroupInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BindBufferMemoryDeviceGroupInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceIndexCount == rhs.deviceIndexCount ) - && ( pDeviceIndices == rhs.pDeviceIndices ); - } - - bool operator!=( BindBufferMemoryDeviceGroupInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BindBufferMemoryDeviceGroupInfo::sType; - }; - static_assert( sizeof( BindBufferMemoryDeviceGroupInfo ) == sizeof( VkBindBufferMemoryDeviceGroupInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BindBufferMemoryInfo - { - protected: - BindBufferMemoryInfo( vk::Buffer buffer_ = vk::Buffer(), - vk::DeviceMemory memory_ = vk::DeviceMemory(), - vk::DeviceSize memoryOffset_ = 0 ) - : buffer( buffer_ ) - , memory( memory_ ) - , memoryOffset( memoryOffset_ ) - {} - - BindBufferMemoryInfo( VkBindBufferMemoryInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BindBufferMemoryInfo& operator=( VkBindBufferMemoryInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eBindBufferMemoryInfo; - const void* pNext = nullptr; - vk::Buffer buffer; - vk::DeviceMemory memory; - vk::DeviceSize memoryOffset; - }; - static_assert( sizeof( BindBufferMemoryInfo ) == sizeof( VkBindBufferMemoryInfo ), "layout struct and wrapper have different size!" ); - } - - struct BindBufferMemoryInfo : public layout::BindBufferMemoryInfo - { - BindBufferMemoryInfo( vk::Buffer buffer_ = vk::Buffer(), - vk::DeviceMemory memory_ = vk::DeviceMemory(), - vk::DeviceSize memoryOffset_ = 0 ) - : layout::BindBufferMemoryInfo( buffer_, memory_, memoryOffset_ ) - {} - - BindBufferMemoryInfo( VkBindBufferMemoryInfo const & rhs ) - : layout::BindBufferMemoryInfo( rhs ) - {} - - BindBufferMemoryInfo& operator=( VkBindBufferMemoryInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BindBufferMemoryInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - BindBufferMemoryInfo & setBuffer( vk::Buffer buffer_ ) - { - buffer = buffer_; - return *this; - } - - BindBufferMemoryInfo & setMemory( vk::DeviceMemory memory_ ) - { - memory = memory_; - return *this; - } - - BindBufferMemoryInfo & setMemoryOffset( vk::DeviceSize memoryOffset_ ) - { - memoryOffset = memoryOffset_; - return *this; - } - - operator VkBindBufferMemoryInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBindBufferMemoryInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BindBufferMemoryInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( buffer == rhs.buffer ) - && ( memory == rhs.memory ) - && ( memoryOffset == rhs.memoryOffset ); - } - - bool operator!=( BindBufferMemoryInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BindBufferMemoryInfo::sType; - }; - static_assert( sizeof( BindBufferMemoryInfo ) == sizeof( VkBindBufferMemoryInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct Offset2D - { - Offset2D( int32_t x_ = 0, - int32_t y_ = 0 ) - : x( x_ ) - , y( y_ ) - {} - - Offset2D( VkOffset2D const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - Offset2D& operator=( VkOffset2D const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - Offset2D & setX( int32_t x_ ) - { - x = x_; - return *this; - } - - Offset2D & setY( int32_t y_ ) - { - y = y_; - return *this; - } - - operator VkOffset2D const&() const - { - return *reinterpret_cast( this ); - } - - operator VkOffset2D &() - { - return *reinterpret_cast( this ); - } - - bool operator==( Offset2D const& rhs ) const - { - return ( x == rhs.x ) - && ( y == rhs.y ); - } - - bool operator!=( Offset2D const& rhs ) const - { - return !operator==( rhs ); - } - - public: - int32_t x; - int32_t y; - }; - static_assert( sizeof( Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct Rect2D - { - Rect2D( vk::Offset2D offset_ = vk::Offset2D(), - vk::Extent2D extent_ = vk::Extent2D() ) - : offset( offset_ ) - , extent( extent_ ) - {} - - Rect2D( VkRect2D const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - Rect2D& operator=( VkRect2D const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - Rect2D & setOffset( vk::Offset2D offset_ ) - { - offset = offset_; - return *this; - } - - Rect2D & setExtent( vk::Extent2D extent_ ) - { - extent = extent_; - return *this; - } - - operator VkRect2D const&() const - { - return *reinterpret_cast( this ); - } - - operator VkRect2D &() - { - return *reinterpret_cast( this ); - } - - bool operator==( Rect2D const& rhs ) const - { - return ( offset == rhs.offset ) - && ( extent == rhs.extent ); - } - - bool operator!=( Rect2D const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::Offset2D offset; - vk::Extent2D extent; - }; - static_assert( sizeof( Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BindImageMemoryDeviceGroupInfo - { - protected: - BindImageMemoryDeviceGroupInfo( uint32_t deviceIndexCount_ = 0, - const uint32_t* pDeviceIndices_ = nullptr, - uint32_t splitInstanceBindRegionCount_ = 0, - const vk::Rect2D* pSplitInstanceBindRegions_ = nullptr ) - : deviceIndexCount( deviceIndexCount_ ) - , pDeviceIndices( pDeviceIndices_ ) - , splitInstanceBindRegionCount( splitInstanceBindRegionCount_ ) - , pSplitInstanceBindRegions( pSplitInstanceBindRegions_ ) - {} - - BindImageMemoryDeviceGroupInfo( VkBindImageMemoryDeviceGroupInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BindImageMemoryDeviceGroupInfo& operator=( VkBindImageMemoryDeviceGroupInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eBindImageMemoryDeviceGroupInfo; - const void* pNext = nullptr; - uint32_t deviceIndexCount; - const uint32_t* pDeviceIndices; - uint32_t splitInstanceBindRegionCount; - const vk::Rect2D* pSplitInstanceBindRegions; - }; - static_assert( sizeof( BindImageMemoryDeviceGroupInfo ) == sizeof( VkBindImageMemoryDeviceGroupInfo ), "layout struct and wrapper have different size!" ); - } - - struct BindImageMemoryDeviceGroupInfo : public layout::BindImageMemoryDeviceGroupInfo - { - BindImageMemoryDeviceGroupInfo( uint32_t deviceIndexCount_ = 0, - const uint32_t* pDeviceIndices_ = nullptr, - uint32_t splitInstanceBindRegionCount_ = 0, - const vk::Rect2D* pSplitInstanceBindRegions_ = nullptr ) - : layout::BindImageMemoryDeviceGroupInfo( deviceIndexCount_, pDeviceIndices_, splitInstanceBindRegionCount_, pSplitInstanceBindRegions_ ) - {} - - BindImageMemoryDeviceGroupInfo( VkBindImageMemoryDeviceGroupInfo const & rhs ) - : layout::BindImageMemoryDeviceGroupInfo( rhs ) - {} - - BindImageMemoryDeviceGroupInfo& operator=( VkBindImageMemoryDeviceGroupInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BindImageMemoryDeviceGroupInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - BindImageMemoryDeviceGroupInfo & setDeviceIndexCount( uint32_t deviceIndexCount_ ) - { - deviceIndexCount = deviceIndexCount_; - return *this; - } - - BindImageMemoryDeviceGroupInfo & setPDeviceIndices( const uint32_t* pDeviceIndices_ ) - { - pDeviceIndices = pDeviceIndices_; - return *this; - } - - BindImageMemoryDeviceGroupInfo & setSplitInstanceBindRegionCount( uint32_t splitInstanceBindRegionCount_ ) - { - splitInstanceBindRegionCount = splitInstanceBindRegionCount_; - return *this; - } - - BindImageMemoryDeviceGroupInfo & setPSplitInstanceBindRegions( const vk::Rect2D* pSplitInstanceBindRegions_ ) - { - pSplitInstanceBindRegions = pSplitInstanceBindRegions_; - return *this; - } - - operator VkBindImageMemoryDeviceGroupInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBindImageMemoryDeviceGroupInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BindImageMemoryDeviceGroupInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceIndexCount == rhs.deviceIndexCount ) - && ( pDeviceIndices == rhs.pDeviceIndices ) - && ( splitInstanceBindRegionCount == rhs.splitInstanceBindRegionCount ) - && ( pSplitInstanceBindRegions == rhs.pSplitInstanceBindRegions ); - } - - bool operator!=( BindImageMemoryDeviceGroupInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BindImageMemoryDeviceGroupInfo::sType; - }; - static_assert( sizeof( BindImageMemoryDeviceGroupInfo ) == sizeof( VkBindImageMemoryDeviceGroupInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BindImageMemoryInfo - { - protected: - BindImageMemoryInfo( vk::Image image_ = vk::Image(), - vk::DeviceMemory memory_ = vk::DeviceMemory(), - vk::DeviceSize memoryOffset_ = 0 ) - : image( image_ ) - , memory( memory_ ) - , memoryOffset( memoryOffset_ ) - {} - - BindImageMemoryInfo( VkBindImageMemoryInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BindImageMemoryInfo& operator=( VkBindImageMemoryInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eBindImageMemoryInfo; - const void* pNext = nullptr; - vk::Image image; - vk::DeviceMemory memory; - vk::DeviceSize memoryOffset; - }; - static_assert( sizeof( BindImageMemoryInfo ) == sizeof( VkBindImageMemoryInfo ), "layout struct and wrapper have different size!" ); - } - - struct BindImageMemoryInfo : public layout::BindImageMemoryInfo - { - BindImageMemoryInfo( vk::Image image_ = vk::Image(), - vk::DeviceMemory memory_ = vk::DeviceMemory(), - vk::DeviceSize memoryOffset_ = 0 ) - : layout::BindImageMemoryInfo( image_, memory_, memoryOffset_ ) - {} - - BindImageMemoryInfo( VkBindImageMemoryInfo const & rhs ) - : layout::BindImageMemoryInfo( rhs ) - {} - - BindImageMemoryInfo& operator=( VkBindImageMemoryInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BindImageMemoryInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - BindImageMemoryInfo & setImage( vk::Image image_ ) - { - image = image_; - return *this; - } - - BindImageMemoryInfo & setMemory( vk::DeviceMemory memory_ ) - { - memory = memory_; - return *this; - } - - BindImageMemoryInfo & setMemoryOffset( vk::DeviceSize memoryOffset_ ) - { - memoryOffset = memoryOffset_; - return *this; - } - - operator VkBindImageMemoryInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBindImageMemoryInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BindImageMemoryInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( image == rhs.image ) - && ( memory == rhs.memory ) - && ( memoryOffset == rhs.memoryOffset ); - } - - bool operator!=( BindImageMemoryInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BindImageMemoryInfo::sType; - }; - static_assert( sizeof( BindImageMemoryInfo ) == sizeof( VkBindImageMemoryInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BindImageMemorySwapchainInfoKHR - { - protected: - BindImageMemorySwapchainInfoKHR( vk::SwapchainKHR swapchain_ = vk::SwapchainKHR(), - uint32_t imageIndex_ = 0 ) - : swapchain( swapchain_ ) - , imageIndex( imageIndex_ ) - {} - - BindImageMemorySwapchainInfoKHR( VkBindImageMemorySwapchainInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BindImageMemorySwapchainInfoKHR& operator=( VkBindImageMemorySwapchainInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eBindImageMemorySwapchainInfoKHR; - const void* pNext = nullptr; - vk::SwapchainKHR swapchain; - uint32_t imageIndex; - }; - static_assert( sizeof( BindImageMemorySwapchainInfoKHR ) == sizeof( VkBindImageMemorySwapchainInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct BindImageMemorySwapchainInfoKHR : public layout::BindImageMemorySwapchainInfoKHR - { - BindImageMemorySwapchainInfoKHR( vk::SwapchainKHR swapchain_ = vk::SwapchainKHR(), - uint32_t imageIndex_ = 0 ) - : layout::BindImageMemorySwapchainInfoKHR( swapchain_, imageIndex_ ) - {} - - BindImageMemorySwapchainInfoKHR( VkBindImageMemorySwapchainInfoKHR const & rhs ) - : layout::BindImageMemorySwapchainInfoKHR( rhs ) - {} - - BindImageMemorySwapchainInfoKHR& operator=( VkBindImageMemorySwapchainInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BindImageMemorySwapchainInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - BindImageMemorySwapchainInfoKHR & setSwapchain( vk::SwapchainKHR swapchain_ ) - { - swapchain = swapchain_; - return *this; - } - - BindImageMemorySwapchainInfoKHR & setImageIndex( uint32_t imageIndex_ ) - { - imageIndex = imageIndex_; - return *this; - } - - operator VkBindImageMemorySwapchainInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBindImageMemorySwapchainInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BindImageMemorySwapchainInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( swapchain == rhs.swapchain ) - && ( imageIndex == rhs.imageIndex ); - } - - bool operator!=( BindImageMemorySwapchainInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BindImageMemorySwapchainInfoKHR::sType; - }; - static_assert( sizeof( BindImageMemorySwapchainInfoKHR ) == sizeof( VkBindImageMemorySwapchainInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BindImagePlaneMemoryInfo - { - protected: - BindImagePlaneMemoryInfo( vk::ImageAspectFlagBits planeAspect_ = vk::ImageAspectFlagBits::eColor ) - : planeAspect( planeAspect_ ) - {} - - BindImagePlaneMemoryInfo( VkBindImagePlaneMemoryInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BindImagePlaneMemoryInfo& operator=( VkBindImagePlaneMemoryInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eBindImagePlaneMemoryInfo; - const void* pNext = nullptr; - vk::ImageAspectFlagBits planeAspect; - }; - static_assert( sizeof( BindImagePlaneMemoryInfo ) == sizeof( VkBindImagePlaneMemoryInfo ), "layout struct and wrapper have different size!" ); - } - - struct BindImagePlaneMemoryInfo : public layout::BindImagePlaneMemoryInfo - { - BindImagePlaneMemoryInfo( vk::ImageAspectFlagBits planeAspect_ = vk::ImageAspectFlagBits::eColor ) - : layout::BindImagePlaneMemoryInfo( planeAspect_ ) - {} - - BindImagePlaneMemoryInfo( VkBindImagePlaneMemoryInfo const & rhs ) - : layout::BindImagePlaneMemoryInfo( rhs ) - {} - - BindImagePlaneMemoryInfo& operator=( VkBindImagePlaneMemoryInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BindImagePlaneMemoryInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - BindImagePlaneMemoryInfo & setPlaneAspect( vk::ImageAspectFlagBits planeAspect_ ) - { - planeAspect = planeAspect_; - return *this; - } - - operator VkBindImagePlaneMemoryInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBindImagePlaneMemoryInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BindImagePlaneMemoryInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( planeAspect == rhs.planeAspect ); - } - - bool operator!=( BindImagePlaneMemoryInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BindImagePlaneMemoryInfo::sType; - }; - static_assert( sizeof( BindImagePlaneMemoryInfo ) == sizeof( VkBindImagePlaneMemoryInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SparseMemoryBind - { - SparseMemoryBind( vk::DeviceSize resourceOffset_ = 0, - vk::DeviceSize size_ = 0, - vk::DeviceMemory memory_ = vk::DeviceMemory(), - vk::DeviceSize memoryOffset_ = 0, - vk::SparseMemoryBindFlags flags_ = vk::SparseMemoryBindFlags() ) - : resourceOffset( resourceOffset_ ) - , size( size_ ) - , memory( memory_ ) - , memoryOffset( memoryOffset_ ) - , flags( flags_ ) - {} - - SparseMemoryBind( VkSparseMemoryBind const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SparseMemoryBind & setResourceOffset( vk::DeviceSize resourceOffset_ ) - { - resourceOffset = resourceOffset_; - return *this; - } - - SparseMemoryBind & setSize( vk::DeviceSize size_ ) - { - size = size_; - return *this; - } - - SparseMemoryBind & setMemory( vk::DeviceMemory memory_ ) - { - memory = memory_; - return *this; - } - - SparseMemoryBind & setMemoryOffset( vk::DeviceSize memoryOffset_ ) - { - memoryOffset = memoryOffset_; - return *this; - } - - SparseMemoryBind & setFlags( vk::SparseMemoryBindFlags flags_ ) - { - flags = flags_; - return *this; - } - - operator VkSparseMemoryBind const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSparseMemoryBind &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SparseMemoryBind const& rhs ) const - { - return ( resourceOffset == rhs.resourceOffset ) - && ( size == rhs.size ) - && ( memory == rhs.memory ) - && ( memoryOffset == rhs.memoryOffset ) - && ( flags == rhs.flags ); - } - - bool operator!=( SparseMemoryBind const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::DeviceSize resourceOffset; - vk::DeviceSize size; - vk::DeviceMemory memory; - vk::DeviceSize memoryOffset; - vk::SparseMemoryBindFlags flags; - }; - static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SparseBufferMemoryBindInfo - { - SparseBufferMemoryBindInfo( vk::Buffer buffer_ = vk::Buffer(), - uint32_t bindCount_ = 0, - const vk::SparseMemoryBind* pBinds_ = nullptr ) - : buffer( buffer_ ) - , bindCount( bindCount_ ) - , pBinds( pBinds_ ) - {} - - SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SparseBufferMemoryBindInfo & setBuffer( vk::Buffer buffer_ ) - { - buffer = buffer_; - return *this; - } - - SparseBufferMemoryBindInfo & setBindCount( uint32_t bindCount_ ) - { - bindCount = bindCount_; - return *this; - } - - SparseBufferMemoryBindInfo & setPBinds( const vk::SparseMemoryBind* pBinds_ ) - { - pBinds = pBinds_; - return *this; - } - - operator VkSparseBufferMemoryBindInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSparseBufferMemoryBindInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SparseBufferMemoryBindInfo const& rhs ) const - { - return ( buffer == rhs.buffer ) - && ( bindCount == rhs.bindCount ) - && ( pBinds == rhs.pBinds ); - } - - bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::Buffer buffer; - uint32_t bindCount; - const vk::SparseMemoryBind* pBinds; - }; - static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SparseImageOpaqueMemoryBindInfo - { - SparseImageOpaqueMemoryBindInfo( vk::Image image_ = vk::Image(), - uint32_t bindCount_ = 0, - const vk::SparseMemoryBind* pBinds_ = nullptr ) - : image( image_ ) - , bindCount( bindCount_ ) - , pBinds( pBinds_ ) - {} - - SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SparseImageOpaqueMemoryBindInfo & setImage( vk::Image image_ ) - { - image = image_; - return *this; - } - - SparseImageOpaqueMemoryBindInfo & setBindCount( uint32_t bindCount_ ) - { - bindCount = bindCount_; - return *this; - } - - SparseImageOpaqueMemoryBindInfo & setPBinds( const vk::SparseMemoryBind* pBinds_ ) - { - pBinds = pBinds_; - return *this; - } - - operator VkSparseImageOpaqueMemoryBindInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSparseImageOpaqueMemoryBindInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const - { - return ( image == rhs.image ) - && ( bindCount == rhs.bindCount ) - && ( pBinds == rhs.pBinds ); - } - - bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::Image image; - uint32_t bindCount; - const vk::SparseMemoryBind* pBinds; - }; - static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ImageSubresource - { - ImageSubresource( vk::ImageAspectFlags aspectMask_ = vk::ImageAspectFlags(), - uint32_t mipLevel_ = 0, - uint32_t arrayLayer_ = 0 ) - : aspectMask( aspectMask_ ) - , mipLevel( mipLevel_ ) - , arrayLayer( arrayLayer_ ) - {} - - ImageSubresource( VkImageSubresource const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageSubresource& operator=( VkImageSubresource const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageSubresource & setAspectMask( vk::ImageAspectFlags aspectMask_ ) - { - aspectMask = aspectMask_; - return *this; - } - - ImageSubresource & setMipLevel( uint32_t mipLevel_ ) - { - mipLevel = mipLevel_; - return *this; - } - - ImageSubresource & setArrayLayer( uint32_t arrayLayer_ ) - { - arrayLayer = arrayLayer_; - return *this; - } - - operator VkImageSubresource const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageSubresource &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageSubresource const& rhs ) const - { - return ( aspectMask == rhs.aspectMask ) - && ( mipLevel == rhs.mipLevel ) - && ( arrayLayer == rhs.arrayLayer ); - } - - bool operator!=( ImageSubresource const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ImageAspectFlags aspectMask; - uint32_t mipLevel; - uint32_t arrayLayer; - }; - static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct Offset3D - { - Offset3D( int32_t x_ = 0, - int32_t y_ = 0, - int32_t z_ = 0 ) - : x( x_ ) - , y( y_ ) - , z( z_ ) - {} - - explicit Offset3D( Offset2D const& offset2D, - int32_t z_ = 0 ) - : x( offset2D.x ) - , y( offset2D.y ) - , z( z_ ) - - {} - - Offset3D( VkOffset3D const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - Offset3D& operator=( VkOffset3D const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - Offset3D & setX( int32_t x_ ) - { - x = x_; - return *this; - } - - Offset3D & setY( int32_t y_ ) - { - y = y_; - return *this; - } - - Offset3D & setZ( int32_t z_ ) - { - z = z_; - return *this; - } - - operator VkOffset3D const&() const - { - return *reinterpret_cast( this ); - } - - operator VkOffset3D &() - { - return *reinterpret_cast( this ); - } - - bool operator==( Offset3D const& rhs ) const - { - return ( x == rhs.x ) - && ( y == rhs.y ) - && ( z == rhs.z ); - } - - bool operator!=( Offset3D const& rhs ) const - { - return !operator==( rhs ); - } - - public: - int32_t x; - int32_t y; - int32_t z; - }; - static_assert( sizeof( Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct Extent3D - { - Extent3D( uint32_t width_ = 0, - uint32_t height_ = 0, - uint32_t depth_ = 0 ) - : width( width_ ) - , height( height_ ) - , depth( depth_ ) - {} - - explicit Extent3D( Extent2D const& extent2D, - uint32_t depth_ = 0 ) - : width( extent2D.width ) - , height( extent2D.height ) - , depth( depth_ ) - - {} - - Extent3D( VkExtent3D const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - Extent3D& operator=( VkExtent3D const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - Extent3D & setWidth( uint32_t width_ ) - { - width = width_; - return *this; - } - - Extent3D & setHeight( uint32_t height_ ) - { - height = height_; - return *this; - } - - Extent3D & setDepth( uint32_t depth_ ) - { - depth = depth_; - return *this; - } - - operator VkExtent3D const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExtent3D &() - { - return *reinterpret_cast( this ); - } - - bool operator==( Extent3D const& rhs ) const - { - return ( width == rhs.width ) - && ( height == rhs.height ) - && ( depth == rhs.depth ); - } - - bool operator!=( Extent3D const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t width; - uint32_t height; - uint32_t depth; - }; - static_assert( sizeof( Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SparseImageMemoryBind - { - SparseImageMemoryBind( vk::ImageSubresource subresource_ = vk::ImageSubresource(), - vk::Offset3D offset_ = vk::Offset3D(), - vk::Extent3D extent_ = vk::Extent3D(), - vk::DeviceMemory memory_ = vk::DeviceMemory(), - vk::DeviceSize memoryOffset_ = 0, - vk::SparseMemoryBindFlags flags_ = vk::SparseMemoryBindFlags() ) - : subresource( subresource_ ) - , offset( offset_ ) - , extent( extent_ ) - , memory( memory_ ) - , memoryOffset( memoryOffset_ ) - , flags( flags_ ) - {} - - SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SparseImageMemoryBind & setSubresource( vk::ImageSubresource subresource_ ) - { - subresource = subresource_; - return *this; - } - - SparseImageMemoryBind & setOffset( vk::Offset3D offset_ ) - { - offset = offset_; - return *this; - } - - SparseImageMemoryBind & setExtent( vk::Extent3D extent_ ) - { - extent = extent_; - return *this; - } - - SparseImageMemoryBind & setMemory( vk::DeviceMemory memory_ ) - { - memory = memory_; - return *this; - } - - SparseImageMemoryBind & setMemoryOffset( vk::DeviceSize memoryOffset_ ) - { - memoryOffset = memoryOffset_; - return *this; - } - - SparseImageMemoryBind & setFlags( vk::SparseMemoryBindFlags flags_ ) - { - flags = flags_; - return *this; - } - - operator VkSparseImageMemoryBind const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSparseImageMemoryBind &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SparseImageMemoryBind const& rhs ) const - { - return ( subresource == rhs.subresource ) - && ( offset == rhs.offset ) - && ( extent == rhs.extent ) - && ( memory == rhs.memory ) - && ( memoryOffset == rhs.memoryOffset ) - && ( flags == rhs.flags ); - } - - bool operator!=( SparseImageMemoryBind const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ImageSubresource subresource; - vk::Offset3D offset; - vk::Extent3D extent; - vk::DeviceMemory memory; - vk::DeviceSize memoryOffset; - vk::SparseMemoryBindFlags flags; - }; - static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SparseImageMemoryBindInfo - { - SparseImageMemoryBindInfo( vk::Image image_ = vk::Image(), - uint32_t bindCount_ = 0, - const vk::SparseImageMemoryBind* pBinds_ = nullptr ) - : image( image_ ) - , bindCount( bindCount_ ) - , pBinds( pBinds_ ) - {} - - SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SparseImageMemoryBindInfo & setImage( vk::Image image_ ) - { - image = image_; - return *this; - } - - SparseImageMemoryBindInfo & setBindCount( uint32_t bindCount_ ) - { - bindCount = bindCount_; - return *this; - } - - SparseImageMemoryBindInfo & setPBinds( const vk::SparseImageMemoryBind* pBinds_ ) - { - pBinds = pBinds_; - return *this; - } - - operator VkSparseImageMemoryBindInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSparseImageMemoryBindInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SparseImageMemoryBindInfo const& rhs ) const - { - return ( image == rhs.image ) - && ( bindCount == rhs.bindCount ) - && ( pBinds == rhs.pBinds ); - } - - bool operator!=( SparseImageMemoryBindInfo const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::Image image; - uint32_t bindCount; - const vk::SparseImageMemoryBind* pBinds; - }; - static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BindSparseInfo - { - protected: - BindSparseInfo( uint32_t waitSemaphoreCount_ = 0, - const vk::Semaphore* pWaitSemaphores_ = nullptr, - uint32_t bufferBindCount_ = 0, - const vk::SparseBufferMemoryBindInfo* pBufferBinds_ = nullptr, - uint32_t imageOpaqueBindCount_ = 0, - const vk::SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ = nullptr, - uint32_t imageBindCount_ = 0, - const vk::SparseImageMemoryBindInfo* pImageBinds_ = nullptr, - uint32_t signalSemaphoreCount_ = 0, - const vk::Semaphore* pSignalSemaphores_ = nullptr ) - : waitSemaphoreCount( waitSemaphoreCount_ ) - , pWaitSemaphores( pWaitSemaphores_ ) - , bufferBindCount( bufferBindCount_ ) - , pBufferBinds( pBufferBinds_ ) - , imageOpaqueBindCount( imageOpaqueBindCount_ ) - , pImageOpaqueBinds( pImageOpaqueBinds_ ) - , imageBindCount( imageBindCount_ ) - , pImageBinds( pImageBinds_ ) - , signalSemaphoreCount( signalSemaphoreCount_ ) - , pSignalSemaphores( pSignalSemaphores_ ) - {} - - BindSparseInfo( VkBindSparseInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BindSparseInfo& operator=( VkBindSparseInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eBindSparseInfo; - const void* pNext = nullptr; - uint32_t waitSemaphoreCount; - const vk::Semaphore* pWaitSemaphores; - uint32_t bufferBindCount; - const vk::SparseBufferMemoryBindInfo* pBufferBinds; - uint32_t imageOpaqueBindCount; - const vk::SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds; - uint32_t imageBindCount; - const vk::SparseImageMemoryBindInfo* pImageBinds; - uint32_t signalSemaphoreCount; - const vk::Semaphore* pSignalSemaphores; - }; - static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "layout struct and wrapper have different size!" ); - } - - struct BindSparseInfo : public layout::BindSparseInfo - { - BindSparseInfo( uint32_t waitSemaphoreCount_ = 0, - const vk::Semaphore* pWaitSemaphores_ = nullptr, - uint32_t bufferBindCount_ = 0, - const vk::SparseBufferMemoryBindInfo* pBufferBinds_ = nullptr, - uint32_t imageOpaqueBindCount_ = 0, - const vk::SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ = nullptr, - uint32_t imageBindCount_ = 0, - const vk::SparseImageMemoryBindInfo* pImageBinds_ = nullptr, - uint32_t signalSemaphoreCount_ = 0, - const vk::Semaphore* pSignalSemaphores_ = nullptr ) - : layout::BindSparseInfo( waitSemaphoreCount_, pWaitSemaphores_, bufferBindCount_, pBufferBinds_, imageOpaqueBindCount_, pImageOpaqueBinds_, imageBindCount_, pImageBinds_, signalSemaphoreCount_, pSignalSemaphores_ ) - {} - - BindSparseInfo( VkBindSparseInfo const & rhs ) - : layout::BindSparseInfo( rhs ) - {} - - BindSparseInfo& operator=( VkBindSparseInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BindSparseInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - BindSparseInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) - { - waitSemaphoreCount = waitSemaphoreCount_; - return *this; - } - - BindSparseInfo & setPWaitSemaphores( const vk::Semaphore* pWaitSemaphores_ ) - { - pWaitSemaphores = pWaitSemaphores_; - return *this; - } - - BindSparseInfo & setBufferBindCount( uint32_t bufferBindCount_ ) - { - bufferBindCount = bufferBindCount_; - return *this; - } - - BindSparseInfo & setPBufferBinds( const vk::SparseBufferMemoryBindInfo* pBufferBinds_ ) - { - pBufferBinds = pBufferBinds_; - return *this; - } - - BindSparseInfo & setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ ) - { - imageOpaqueBindCount = imageOpaqueBindCount_; - return *this; - } - - BindSparseInfo & setPImageOpaqueBinds( const vk::SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ ) - { - pImageOpaqueBinds = pImageOpaqueBinds_; - return *this; - } - - BindSparseInfo & setImageBindCount( uint32_t imageBindCount_ ) - { - imageBindCount = imageBindCount_; - return *this; - } - - BindSparseInfo & setPImageBinds( const vk::SparseImageMemoryBindInfo* pImageBinds_ ) - { - pImageBinds = pImageBinds_; - return *this; - } - - BindSparseInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) - { - signalSemaphoreCount = signalSemaphoreCount_; - return *this; - } - - BindSparseInfo & setPSignalSemaphores( const vk::Semaphore* pSignalSemaphores_ ) - { - pSignalSemaphores = pSignalSemaphores_; - return *this; - } - - operator VkBindSparseInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBindSparseInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BindSparseInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) - && ( pWaitSemaphores == rhs.pWaitSemaphores ) - && ( bufferBindCount == rhs.bufferBindCount ) - && ( pBufferBinds == rhs.pBufferBinds ) - && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount ) - && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds ) - && ( imageBindCount == rhs.imageBindCount ) - && ( pImageBinds == rhs.pImageBinds ) - && ( signalSemaphoreCount == rhs.signalSemaphoreCount ) - && ( pSignalSemaphores == rhs.pSignalSemaphores ); - } - - bool operator!=( BindSparseInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BindSparseInfo::sType; - }; - static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct BufferCopy - { - BufferCopy( vk::DeviceSize srcOffset_ = 0, - vk::DeviceSize dstOffset_ = 0, - vk::DeviceSize size_ = 0 ) - : srcOffset( srcOffset_ ) - , dstOffset( dstOffset_ ) - , size( size_ ) - {} - - BufferCopy( VkBufferCopy const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BufferCopy& operator=( VkBufferCopy const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BufferCopy & setSrcOffset( vk::DeviceSize srcOffset_ ) - { - srcOffset = srcOffset_; - return *this; - } - - BufferCopy & setDstOffset( vk::DeviceSize dstOffset_ ) - { - dstOffset = dstOffset_; - return *this; - } - - BufferCopy & setSize( vk::DeviceSize size_ ) - { - size = size_; - return *this; - } - - operator VkBufferCopy const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBufferCopy &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BufferCopy const& rhs ) const - { - return ( srcOffset == rhs.srcOffset ) - && ( dstOffset == rhs.dstOffset ) - && ( size == rhs.size ); - } - - bool operator!=( BufferCopy const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::DeviceSize srcOffset; - vk::DeviceSize dstOffset; - vk::DeviceSize size; - }; - static_assert( sizeof( BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BufferCreateInfo - { - protected: - BufferCreateInfo( vk::BufferCreateFlags flags_ = vk::BufferCreateFlags(), - vk::DeviceSize size_ = 0, - vk::BufferUsageFlags usage_ = vk::BufferUsageFlags(), - vk::SharingMode sharingMode_ = vk::SharingMode::eExclusive, - uint32_t queueFamilyIndexCount_ = 0, - const uint32_t* pQueueFamilyIndices_ = nullptr ) - : flags( flags_ ) - , size( size_ ) - , usage( usage_ ) - , sharingMode( sharingMode_ ) - , queueFamilyIndexCount( queueFamilyIndexCount_ ) - , pQueueFamilyIndices( pQueueFamilyIndices_ ) - {} - - BufferCreateInfo( VkBufferCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eBufferCreateInfo; - const void* pNext = nullptr; - vk::BufferCreateFlags flags; - vk::DeviceSize size; - vk::BufferUsageFlags usage; - vk::SharingMode sharingMode; - uint32_t queueFamilyIndexCount; - const uint32_t* pQueueFamilyIndices; - }; - static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct BufferCreateInfo : public layout::BufferCreateInfo - { - BufferCreateInfo( vk::BufferCreateFlags flags_ = vk::BufferCreateFlags(), - vk::DeviceSize size_ = 0, - vk::BufferUsageFlags usage_ = vk::BufferUsageFlags(), - vk::SharingMode sharingMode_ = vk::SharingMode::eExclusive, - uint32_t queueFamilyIndexCount_ = 0, - const uint32_t* pQueueFamilyIndices_ = nullptr ) - : layout::BufferCreateInfo( flags_, size_, usage_, sharingMode_, queueFamilyIndexCount_, pQueueFamilyIndices_ ) - {} - - BufferCreateInfo( VkBufferCreateInfo const & rhs ) - : layout::BufferCreateInfo( rhs ) - {} - - BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BufferCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - BufferCreateInfo & setFlags( vk::BufferCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - BufferCreateInfo & setSize( vk::DeviceSize size_ ) - { - size = size_; - return *this; - } - - BufferCreateInfo & setUsage( vk::BufferUsageFlags usage_ ) - { - usage = usage_; - return *this; - } - - BufferCreateInfo & setSharingMode( vk::SharingMode sharingMode_ ) - { - sharingMode = sharingMode_; - return *this; - } - - BufferCreateInfo & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) - { - queueFamilyIndexCount = queueFamilyIndexCount_; - return *this; - } - - BufferCreateInfo & setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ ) - { - pQueueFamilyIndices = pQueueFamilyIndices_; - return *this; - } - - operator VkBufferCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBufferCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BufferCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( size == rhs.size ) - && ( usage == rhs.usage ) - && ( sharingMode == rhs.sharingMode ) - && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) - && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ); - } - - bool operator!=( BufferCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BufferCreateInfo::sType; - }; - static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BufferDeviceAddressCreateInfoEXT - { - protected: - BufferDeviceAddressCreateInfoEXT( vk::DeviceAddress deviceAddress_ = 0 ) - : deviceAddress( deviceAddress_ ) - {} - - BufferDeviceAddressCreateInfoEXT( VkBufferDeviceAddressCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BufferDeviceAddressCreateInfoEXT& operator=( VkBufferDeviceAddressCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eBufferDeviceAddressCreateInfoEXT; - const void* pNext = nullptr; - vk::DeviceAddress deviceAddress; - }; - static_assert( sizeof( BufferDeviceAddressCreateInfoEXT ) == sizeof( VkBufferDeviceAddressCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct BufferDeviceAddressCreateInfoEXT : public layout::BufferDeviceAddressCreateInfoEXT - { - BufferDeviceAddressCreateInfoEXT( vk::DeviceAddress deviceAddress_ = 0 ) - : layout::BufferDeviceAddressCreateInfoEXT( deviceAddress_ ) - {} - - BufferDeviceAddressCreateInfoEXT( VkBufferDeviceAddressCreateInfoEXT const & rhs ) - : layout::BufferDeviceAddressCreateInfoEXT( rhs ) - {} - - BufferDeviceAddressCreateInfoEXT& operator=( VkBufferDeviceAddressCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BufferDeviceAddressCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - BufferDeviceAddressCreateInfoEXT & setDeviceAddress( vk::DeviceAddress deviceAddress_ ) - { - deviceAddress = deviceAddress_; - return *this; - } - - operator VkBufferDeviceAddressCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBufferDeviceAddressCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BufferDeviceAddressCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceAddress == rhs.deviceAddress ); - } - - bool operator!=( BufferDeviceAddressCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BufferDeviceAddressCreateInfoEXT::sType; - }; - static_assert( sizeof( BufferDeviceAddressCreateInfoEXT ) == sizeof( VkBufferDeviceAddressCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BufferDeviceAddressInfoEXT - { - protected: - BufferDeviceAddressInfoEXT( vk::Buffer buffer_ = vk::Buffer() ) - : buffer( buffer_ ) - {} - - BufferDeviceAddressInfoEXT( VkBufferDeviceAddressInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BufferDeviceAddressInfoEXT& operator=( VkBufferDeviceAddressInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eBufferDeviceAddressInfoEXT; - const void* pNext = nullptr; - vk::Buffer buffer; - }; - static_assert( sizeof( BufferDeviceAddressInfoEXT ) == sizeof( VkBufferDeviceAddressInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct BufferDeviceAddressInfoEXT : public layout::BufferDeviceAddressInfoEXT - { - BufferDeviceAddressInfoEXT( vk::Buffer buffer_ = vk::Buffer() ) - : layout::BufferDeviceAddressInfoEXT( buffer_ ) - {} - - BufferDeviceAddressInfoEXT( VkBufferDeviceAddressInfoEXT const & rhs ) - : layout::BufferDeviceAddressInfoEXT( rhs ) - {} - - BufferDeviceAddressInfoEXT& operator=( VkBufferDeviceAddressInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BufferDeviceAddressInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - BufferDeviceAddressInfoEXT & setBuffer( vk::Buffer buffer_ ) - { - buffer = buffer_; - return *this; - } - - operator VkBufferDeviceAddressInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBufferDeviceAddressInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BufferDeviceAddressInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( buffer == rhs.buffer ); - } - - bool operator!=( BufferDeviceAddressInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BufferDeviceAddressInfoEXT::sType; - }; - static_assert( sizeof( BufferDeviceAddressInfoEXT ) == sizeof( VkBufferDeviceAddressInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ImageSubresourceLayers - { - ImageSubresourceLayers( vk::ImageAspectFlags aspectMask_ = vk::ImageAspectFlags(), - uint32_t mipLevel_ = 0, - uint32_t baseArrayLayer_ = 0, - uint32_t layerCount_ = 0 ) - : aspectMask( aspectMask_ ) - , mipLevel( mipLevel_ ) - , baseArrayLayer( baseArrayLayer_ ) - , layerCount( layerCount_ ) - {} - - ImageSubresourceLayers( VkImageSubresourceLayers const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageSubresourceLayers & setAspectMask( vk::ImageAspectFlags aspectMask_ ) - { - aspectMask = aspectMask_; - return *this; - } - - ImageSubresourceLayers & setMipLevel( uint32_t mipLevel_ ) - { - mipLevel = mipLevel_; - return *this; - } - - ImageSubresourceLayers & setBaseArrayLayer( uint32_t baseArrayLayer_ ) - { - baseArrayLayer = baseArrayLayer_; - return *this; - } - - ImageSubresourceLayers & setLayerCount( uint32_t layerCount_ ) - { - layerCount = layerCount_; - return *this; - } - - operator VkImageSubresourceLayers const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageSubresourceLayers &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageSubresourceLayers const& rhs ) const - { - return ( aspectMask == rhs.aspectMask ) - && ( mipLevel == rhs.mipLevel ) - && ( baseArrayLayer == rhs.baseArrayLayer ) - && ( layerCount == rhs.layerCount ); - } - - bool operator!=( ImageSubresourceLayers const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ImageAspectFlags aspectMask; - uint32_t mipLevel; - uint32_t baseArrayLayer; - uint32_t layerCount; - }; - static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct BufferImageCopy - { - BufferImageCopy( vk::DeviceSize bufferOffset_ = 0, - uint32_t bufferRowLength_ = 0, - uint32_t bufferImageHeight_ = 0, - vk::ImageSubresourceLayers imageSubresource_ = vk::ImageSubresourceLayers(), - vk::Offset3D imageOffset_ = vk::Offset3D(), - vk::Extent3D imageExtent_ = vk::Extent3D() ) - : bufferOffset( bufferOffset_ ) - , bufferRowLength( bufferRowLength_ ) - , bufferImageHeight( bufferImageHeight_ ) - , imageSubresource( imageSubresource_ ) - , imageOffset( imageOffset_ ) - , imageExtent( imageExtent_ ) - {} - - BufferImageCopy( VkBufferImageCopy const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BufferImageCopy& operator=( VkBufferImageCopy const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BufferImageCopy & setBufferOffset( vk::DeviceSize bufferOffset_ ) - { - bufferOffset = bufferOffset_; - return *this; - } - - BufferImageCopy & setBufferRowLength( uint32_t bufferRowLength_ ) - { - bufferRowLength = bufferRowLength_; - return *this; - } - - BufferImageCopy & setBufferImageHeight( uint32_t bufferImageHeight_ ) - { - bufferImageHeight = bufferImageHeight_; - return *this; - } - - BufferImageCopy & setImageSubresource( vk::ImageSubresourceLayers imageSubresource_ ) - { - imageSubresource = imageSubresource_; - return *this; - } - - BufferImageCopy & setImageOffset( vk::Offset3D imageOffset_ ) - { - imageOffset = imageOffset_; - return *this; - } - - BufferImageCopy & setImageExtent( vk::Extent3D imageExtent_ ) - { - imageExtent = imageExtent_; - return *this; - } - - operator VkBufferImageCopy const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBufferImageCopy &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BufferImageCopy const& rhs ) const - { - return ( bufferOffset == rhs.bufferOffset ) - && ( bufferRowLength == rhs.bufferRowLength ) - && ( bufferImageHeight == rhs.bufferImageHeight ) - && ( imageSubresource == rhs.imageSubresource ) - && ( imageOffset == rhs.imageOffset ) - && ( imageExtent == rhs.imageExtent ); - } - - bool operator!=( BufferImageCopy const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::DeviceSize bufferOffset; - uint32_t bufferRowLength; - uint32_t bufferImageHeight; - vk::ImageSubresourceLayers imageSubresource; - vk::Offset3D imageOffset; - vk::Extent3D imageExtent; - }; - static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BufferMemoryBarrier - { - protected: - BufferMemoryBarrier( vk::AccessFlags srcAccessMask_ = vk::AccessFlags(), - vk::AccessFlags dstAccessMask_ = vk::AccessFlags(), - uint32_t srcQueueFamilyIndex_ = 0, - uint32_t dstQueueFamilyIndex_ = 0, - vk::Buffer buffer_ = vk::Buffer(), - vk::DeviceSize offset_ = 0, - vk::DeviceSize size_ = 0 ) - : srcAccessMask( srcAccessMask_ ) - , dstAccessMask( dstAccessMask_ ) - , srcQueueFamilyIndex( srcQueueFamilyIndex_ ) - , dstQueueFamilyIndex( dstQueueFamilyIndex_ ) - , buffer( buffer_ ) - , offset( offset_ ) - , size( size_ ) - {} - - BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eBufferMemoryBarrier; - const void* pNext = nullptr; - vk::AccessFlags srcAccessMask; - vk::AccessFlags dstAccessMask; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - vk::Buffer buffer; - vk::DeviceSize offset; - vk::DeviceSize size; - }; - static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "layout struct and wrapper have different size!" ); - } - - struct BufferMemoryBarrier : public layout::BufferMemoryBarrier - { - BufferMemoryBarrier( vk::AccessFlags srcAccessMask_ = vk::AccessFlags(), - vk::AccessFlags dstAccessMask_ = vk::AccessFlags(), - uint32_t srcQueueFamilyIndex_ = 0, - uint32_t dstQueueFamilyIndex_ = 0, - vk::Buffer buffer_ = vk::Buffer(), - vk::DeviceSize offset_ = 0, - vk::DeviceSize size_ = 0 ) - : layout::BufferMemoryBarrier( srcAccessMask_, dstAccessMask_, srcQueueFamilyIndex_, dstQueueFamilyIndex_, buffer_, offset_, size_ ) - {} - - BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs ) - : layout::BufferMemoryBarrier( rhs ) - {} - - BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BufferMemoryBarrier & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - BufferMemoryBarrier & setSrcAccessMask( vk::AccessFlags srcAccessMask_ ) - { - srcAccessMask = srcAccessMask_; - return *this; - } - - BufferMemoryBarrier & setDstAccessMask( vk::AccessFlags dstAccessMask_ ) - { - dstAccessMask = dstAccessMask_; - return *this; - } - - BufferMemoryBarrier & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) - { - srcQueueFamilyIndex = srcQueueFamilyIndex_; - return *this; - } - - BufferMemoryBarrier & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) - { - dstQueueFamilyIndex = dstQueueFamilyIndex_; - return *this; - } - - BufferMemoryBarrier & setBuffer( vk::Buffer buffer_ ) - { - buffer = buffer_; - return *this; - } - - BufferMemoryBarrier & setOffset( vk::DeviceSize offset_ ) - { - offset = offset_; - return *this; - } - - BufferMemoryBarrier & setSize( vk::DeviceSize size_ ) - { - size = size_; - return *this; - } - - operator VkBufferMemoryBarrier const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBufferMemoryBarrier &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BufferMemoryBarrier const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcAccessMask == rhs.srcAccessMask ) - && ( dstAccessMask == rhs.dstAccessMask ) - && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) - && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) - && ( buffer == rhs.buffer ) - && ( offset == rhs.offset ) - && ( size == rhs.size ); - } - - bool operator!=( BufferMemoryBarrier const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BufferMemoryBarrier::sType; - }; - static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BufferMemoryRequirementsInfo2 - { - protected: - BufferMemoryRequirementsInfo2( vk::Buffer buffer_ = vk::Buffer() ) - : buffer( buffer_ ) - {} - - BufferMemoryRequirementsInfo2( VkBufferMemoryRequirementsInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BufferMemoryRequirementsInfo2& operator=( VkBufferMemoryRequirementsInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eBufferMemoryRequirementsInfo2; - const void* pNext = nullptr; - vk::Buffer buffer; - }; - static_assert( sizeof( BufferMemoryRequirementsInfo2 ) == sizeof( VkBufferMemoryRequirementsInfo2 ), "layout struct and wrapper have different size!" ); - } - - struct BufferMemoryRequirementsInfo2 : public layout::BufferMemoryRequirementsInfo2 - { - BufferMemoryRequirementsInfo2( vk::Buffer buffer_ = vk::Buffer() ) - : layout::BufferMemoryRequirementsInfo2( buffer_ ) - {} - - BufferMemoryRequirementsInfo2( VkBufferMemoryRequirementsInfo2 const & rhs ) - : layout::BufferMemoryRequirementsInfo2( rhs ) - {} - - BufferMemoryRequirementsInfo2& operator=( VkBufferMemoryRequirementsInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BufferMemoryRequirementsInfo2 & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - BufferMemoryRequirementsInfo2 & setBuffer( vk::Buffer buffer_ ) - { - buffer = buffer_; - return *this; - } - - operator VkBufferMemoryRequirementsInfo2 const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBufferMemoryRequirementsInfo2 &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BufferMemoryRequirementsInfo2 const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( buffer == rhs.buffer ); - } - - bool operator!=( BufferMemoryRequirementsInfo2 const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BufferMemoryRequirementsInfo2::sType; - }; - static_assert( sizeof( BufferMemoryRequirementsInfo2 ) == sizeof( VkBufferMemoryRequirementsInfo2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct BufferViewCreateInfo - { - protected: - BufferViewCreateInfo( vk::BufferViewCreateFlags flags_ = vk::BufferViewCreateFlags(), - vk::Buffer buffer_ = vk::Buffer(), - vk::Format format_ = vk::Format::eUndefined, - vk::DeviceSize offset_ = 0, - vk::DeviceSize range_ = 0 ) - : flags( flags_ ) - , buffer( buffer_ ) - , format( format_ ) - , offset( offset_ ) - , range( range_ ) - {} - - BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eBufferViewCreateInfo; - const void* pNext = nullptr; - vk::BufferViewCreateFlags flags; - vk::Buffer buffer; - vk::Format format; - vk::DeviceSize offset; - vk::DeviceSize range; - }; - static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct BufferViewCreateInfo : public layout::BufferViewCreateInfo - { - BufferViewCreateInfo( vk::BufferViewCreateFlags flags_ = vk::BufferViewCreateFlags(), - vk::Buffer buffer_ = vk::Buffer(), - vk::Format format_ = vk::Format::eUndefined, - vk::DeviceSize offset_ = 0, - vk::DeviceSize range_ = 0 ) - : layout::BufferViewCreateInfo( flags_, buffer_, format_, offset_, range_ ) - {} - - BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs ) - : layout::BufferViewCreateInfo( rhs ) - {} - - BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - BufferViewCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - BufferViewCreateInfo & setFlags( vk::BufferViewCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - BufferViewCreateInfo & setBuffer( vk::Buffer buffer_ ) - { - buffer = buffer_; - return *this; - } - - BufferViewCreateInfo & setFormat( vk::Format format_ ) - { - format = format_; - return *this; - } - - BufferViewCreateInfo & setOffset( vk::DeviceSize offset_ ) - { - offset = offset_; - return *this; - } - - BufferViewCreateInfo & setRange( vk::DeviceSize range_ ) - { - range = range_; - return *this; - } - - operator VkBufferViewCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkBufferViewCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( BufferViewCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( buffer == rhs.buffer ) - && ( format == rhs.format ) - && ( offset == rhs.offset ) - && ( range == rhs.range ); - } - - bool operator!=( BufferViewCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::BufferViewCreateInfo::sType; - }; - static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct CalibratedTimestampInfoEXT - { - protected: - CalibratedTimestampInfoEXT( vk::TimeDomainEXT timeDomain_ = vk::TimeDomainEXT::eDevice ) - : timeDomain( timeDomain_ ) - {} - - CalibratedTimestampInfoEXT( VkCalibratedTimestampInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - CalibratedTimestampInfoEXT& operator=( VkCalibratedTimestampInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eCalibratedTimestampInfoEXT; - const void* pNext = nullptr; - vk::TimeDomainEXT timeDomain; - }; - static_assert( sizeof( CalibratedTimestampInfoEXT ) == sizeof( VkCalibratedTimestampInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct CalibratedTimestampInfoEXT : public layout::CalibratedTimestampInfoEXT - { - CalibratedTimestampInfoEXT( vk::TimeDomainEXT timeDomain_ = vk::TimeDomainEXT::eDevice ) - : layout::CalibratedTimestampInfoEXT( timeDomain_ ) - {} - - CalibratedTimestampInfoEXT( VkCalibratedTimestampInfoEXT const & rhs ) - : layout::CalibratedTimestampInfoEXT( rhs ) - {} - - CalibratedTimestampInfoEXT& operator=( VkCalibratedTimestampInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - CalibratedTimestampInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - CalibratedTimestampInfoEXT & setTimeDomain( vk::TimeDomainEXT timeDomain_ ) - { - timeDomain = timeDomain_; - return *this; - } - - operator VkCalibratedTimestampInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkCalibratedTimestampInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( CalibratedTimestampInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( timeDomain == rhs.timeDomain ); - } - - bool operator!=( CalibratedTimestampInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::CalibratedTimestampInfoEXT::sType; - }; - static_assert( sizeof( CalibratedTimestampInfoEXT ) == sizeof( VkCalibratedTimestampInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct CheckpointDataNV - { - protected: - CheckpointDataNV( vk::PipelineStageFlagBits stage_ = vk::PipelineStageFlagBits::eTopOfPipe, - void* pCheckpointMarker_ = nullptr ) - : stage( stage_ ) - , pCheckpointMarker( pCheckpointMarker_ ) - {} - - CheckpointDataNV( VkCheckpointDataNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - CheckpointDataNV& operator=( VkCheckpointDataNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eCheckpointDataNV; - void* pNext = nullptr; - vk::PipelineStageFlagBits stage; - void* pCheckpointMarker; - }; - static_assert( sizeof( CheckpointDataNV ) == sizeof( VkCheckpointDataNV ), "layout struct and wrapper have different size!" ); - } - - struct CheckpointDataNV : public layout::CheckpointDataNV - { - operator VkCheckpointDataNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkCheckpointDataNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( CheckpointDataNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( stage == rhs.stage ) - && ( pCheckpointMarker == rhs.pCheckpointMarker ); - } - - bool operator!=( CheckpointDataNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::CheckpointDataNV::sType; - }; - static_assert( sizeof( CheckpointDataNV ) == sizeof( VkCheckpointDataNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - union ClearColorValue - { - ClearColorValue( const std::array& float32_ = { { 0 } } ) - { - memcpy( float32, float32_.data(), 4 * sizeof( float ) ); - } - - ClearColorValue( const std::array& int32_ ) - { - memcpy( int32, int32_.data(), 4 * sizeof( int32_t ) ); - } - - ClearColorValue( const std::array& uint32_ ) - { - memcpy( uint32, uint32_.data(), 4 * sizeof( uint32_t ) ); - } - - ClearColorValue & setFloat32( std::array float32_ ) - { - memcpy( float32, float32_.data(), 4 * sizeof( float ) ); - return *this; - } - - ClearColorValue & setInt32( std::array int32_ ) - { - memcpy( int32, int32_.data(), 4 * sizeof( int32_t ) ); - return *this; - } - - ClearColorValue & setUint32( std::array uint32_ ) - { - memcpy( uint32, uint32_.data(), 4 * sizeof( uint32_t ) ); - return *this; - } - operator VkClearColorValue const&() const - { - return *reinterpret_cast(this); - } - - operator VkClearColorValue &() - { - return *reinterpret_cast(this); - } - - float float32[4]; - int32_t int32[4]; - uint32_t uint32[4]; - }; - - struct ClearDepthStencilValue - { - ClearDepthStencilValue( float depth_ = 0, - uint32_t stencil_ = 0 ) - : depth( depth_ ) - , stencil( stencil_ ) - {} - - ClearDepthStencilValue( VkClearDepthStencilValue const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ClearDepthStencilValue& operator=( VkClearDepthStencilValue const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ClearDepthStencilValue & setDepth( float depth_ ) - { - depth = depth_; - return *this; - } - - ClearDepthStencilValue & setStencil( uint32_t stencil_ ) - { - stencil = stencil_; - return *this; - } - - operator VkClearDepthStencilValue const&() const - { - return *reinterpret_cast( this ); - } - - operator VkClearDepthStencilValue &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ClearDepthStencilValue const& rhs ) const - { - return ( depth == rhs.depth ) - && ( stencil == rhs.stencil ); - } - - bool operator!=( ClearDepthStencilValue const& rhs ) const - { - return !operator==( rhs ); - } - - public: - float depth; - uint32_t stencil; - }; - static_assert( sizeof( ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - union ClearValue - { - ClearValue( vk::ClearColorValue color_ = vk::ClearColorValue() ) - { - color = color_; - } - - ClearValue( vk::ClearDepthStencilValue depthStencil_ ) - { - depthStencil = depthStencil_; - } - - ClearValue & setColor( vk::ClearColorValue color_ ) - { - color = color_; - return *this; - } - - ClearValue & setDepthStencil( vk::ClearDepthStencilValue depthStencil_ ) - { - depthStencil = depthStencil_; - return *this; - } - operator VkClearValue const&() const - { - return *reinterpret_cast(this); - } - - operator VkClearValue &() - { - return *reinterpret_cast(this); - } - -#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS - vk::ClearColorValue color; - vk::ClearDepthStencilValue depthStencil; -#else - VkClearColorValue color; - VkClearDepthStencilValue depthStencil; -#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ - }; - - struct ClearAttachment - { - ClearAttachment( vk::ImageAspectFlags aspectMask_ = vk::ImageAspectFlags(), - uint32_t colorAttachment_ = 0, - vk::ClearValue clearValue_ = vk::ClearValue() ) - : aspectMask( aspectMask_ ) - , colorAttachment( colorAttachment_ ) - , clearValue( clearValue_ ) - {} - - ClearAttachment( VkClearAttachment const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ClearAttachment& operator=( VkClearAttachment const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ClearAttachment & setAspectMask( vk::ImageAspectFlags aspectMask_ ) - { - aspectMask = aspectMask_; - return *this; - } - - ClearAttachment & setColorAttachment( uint32_t colorAttachment_ ) - { - colorAttachment = colorAttachment_; - return *this; - } - - ClearAttachment & setClearValue( vk::ClearValue clearValue_ ) - { - clearValue = clearValue_; - return *this; - } - - operator VkClearAttachment const&() const - { - return *reinterpret_cast( this ); - } - - operator VkClearAttachment &() - { - return *reinterpret_cast( this ); - } - - public: - vk::ImageAspectFlags aspectMask; - uint32_t colorAttachment; - vk::ClearValue clearValue; - }; - static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ClearRect - { - ClearRect( vk::Rect2D rect_ = vk::Rect2D(), - uint32_t baseArrayLayer_ = 0, - uint32_t layerCount_ = 0 ) - : rect( rect_ ) - , baseArrayLayer( baseArrayLayer_ ) - , layerCount( layerCount_ ) - {} - - ClearRect( VkClearRect const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ClearRect& operator=( VkClearRect const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ClearRect & setRect( vk::Rect2D rect_ ) - { - rect = rect_; - return *this; - } - - ClearRect & setBaseArrayLayer( uint32_t baseArrayLayer_ ) - { - baseArrayLayer = baseArrayLayer_; - return *this; - } - - ClearRect & setLayerCount( uint32_t layerCount_ ) - { - layerCount = layerCount_; - return *this; - } - - operator VkClearRect const&() const - { - return *reinterpret_cast( this ); - } - - operator VkClearRect &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ClearRect const& rhs ) const - { - return ( rect == rhs.rect ) - && ( baseArrayLayer == rhs.baseArrayLayer ) - && ( layerCount == rhs.layerCount ); - } - - bool operator!=( ClearRect const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::Rect2D rect; - uint32_t baseArrayLayer; - uint32_t layerCount; - }; - static_assert( sizeof( ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct IndirectCommandsTokenNVX - { - IndirectCommandsTokenNVX( vk::IndirectCommandsTokenTypeNVX tokenType_ = vk::IndirectCommandsTokenTypeNVX::ePipeline, - vk::Buffer buffer_ = vk::Buffer(), - vk::DeviceSize offset_ = 0 ) - : tokenType( tokenType_ ) - , buffer( buffer_ ) - , offset( offset_ ) - {} - - IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - IndirectCommandsTokenNVX & setTokenType( vk::IndirectCommandsTokenTypeNVX tokenType_ ) - { - tokenType = tokenType_; - return *this; - } - - IndirectCommandsTokenNVX & setBuffer( vk::Buffer buffer_ ) - { - buffer = buffer_; - return *this; - } - - IndirectCommandsTokenNVX & setOffset( vk::DeviceSize offset_ ) - { - offset = offset_; - return *this; - } - - operator VkIndirectCommandsTokenNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkIndirectCommandsTokenNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( IndirectCommandsTokenNVX const& rhs ) const - { - return ( tokenType == rhs.tokenType ) - && ( buffer == rhs.buffer ) - && ( offset == rhs.offset ); - } - - bool operator!=( IndirectCommandsTokenNVX const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::IndirectCommandsTokenTypeNVX tokenType; - vk::Buffer buffer; - vk::DeviceSize offset; - }; - static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct CmdProcessCommandsInfoNVX - { - protected: - CmdProcessCommandsInfoNVX( vk::ObjectTableNVX objectTable_ = vk::ObjectTableNVX(), - vk::IndirectCommandsLayoutNVX indirectCommandsLayout_ = vk::IndirectCommandsLayoutNVX(), - uint32_t indirectCommandsTokenCount_ = 0, - const vk::IndirectCommandsTokenNVX* pIndirectCommandsTokens_ = nullptr, - uint32_t maxSequencesCount_ = 0, - vk::CommandBuffer targetCommandBuffer_ = vk::CommandBuffer(), - vk::Buffer sequencesCountBuffer_ = vk::Buffer(), - vk::DeviceSize sequencesCountOffset_ = 0, - vk::Buffer sequencesIndexBuffer_ = vk::Buffer(), - vk::DeviceSize sequencesIndexOffset_ = 0 ) - : objectTable( objectTable_ ) - , indirectCommandsLayout( indirectCommandsLayout_ ) - , indirectCommandsTokenCount( indirectCommandsTokenCount_ ) - , pIndirectCommandsTokens( pIndirectCommandsTokens_ ) - , maxSequencesCount( maxSequencesCount_ ) - , targetCommandBuffer( targetCommandBuffer_ ) - , sequencesCountBuffer( sequencesCountBuffer_ ) - , sequencesCountOffset( sequencesCountOffset_ ) - , sequencesIndexBuffer( sequencesIndexBuffer_ ) - , sequencesIndexOffset( sequencesIndexOffset_ ) - {} - - CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eCmdProcessCommandsInfoNVX; - const void* pNext = nullptr; - vk::ObjectTableNVX objectTable; - vk::IndirectCommandsLayoutNVX indirectCommandsLayout; - uint32_t indirectCommandsTokenCount; - const vk::IndirectCommandsTokenNVX* pIndirectCommandsTokens; - uint32_t maxSequencesCount; - vk::CommandBuffer targetCommandBuffer; - vk::Buffer sequencesCountBuffer; - vk::DeviceSize sequencesCountOffset; - vk::Buffer sequencesIndexBuffer; - vk::DeviceSize sequencesIndexOffset; - }; - static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "layout struct and wrapper have different size!" ); - } - - struct CmdProcessCommandsInfoNVX : public layout::CmdProcessCommandsInfoNVX - { - CmdProcessCommandsInfoNVX( vk::ObjectTableNVX objectTable_ = vk::ObjectTableNVX(), - vk::IndirectCommandsLayoutNVX indirectCommandsLayout_ = vk::IndirectCommandsLayoutNVX(), - uint32_t indirectCommandsTokenCount_ = 0, - const vk::IndirectCommandsTokenNVX* pIndirectCommandsTokens_ = nullptr, - uint32_t maxSequencesCount_ = 0, - vk::CommandBuffer targetCommandBuffer_ = vk::CommandBuffer(), - vk::Buffer sequencesCountBuffer_ = vk::Buffer(), - vk::DeviceSize sequencesCountOffset_ = 0, - vk::Buffer sequencesIndexBuffer_ = vk::Buffer(), - vk::DeviceSize sequencesIndexOffset_ = 0 ) - : layout::CmdProcessCommandsInfoNVX( objectTable_, indirectCommandsLayout_, indirectCommandsTokenCount_, pIndirectCommandsTokens_, maxSequencesCount_, targetCommandBuffer_, sequencesCountBuffer_, sequencesCountOffset_, sequencesIndexBuffer_, sequencesIndexOffset_ ) - {} - - CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs ) - : layout::CmdProcessCommandsInfoNVX( rhs ) - {} - - CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - CmdProcessCommandsInfoNVX & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - CmdProcessCommandsInfoNVX & setObjectTable( vk::ObjectTableNVX objectTable_ ) - { - objectTable = objectTable_; - return *this; - } - - CmdProcessCommandsInfoNVX & setIndirectCommandsLayout( vk::IndirectCommandsLayoutNVX indirectCommandsLayout_ ) - { - indirectCommandsLayout = indirectCommandsLayout_; - return *this; - } - - CmdProcessCommandsInfoNVX & setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ ) - { - indirectCommandsTokenCount = indirectCommandsTokenCount_; - return *this; - } - - CmdProcessCommandsInfoNVX & setPIndirectCommandsTokens( const vk::IndirectCommandsTokenNVX* pIndirectCommandsTokens_ ) - { - pIndirectCommandsTokens = pIndirectCommandsTokens_; - return *this; - } - - CmdProcessCommandsInfoNVX & setMaxSequencesCount( uint32_t maxSequencesCount_ ) - { - maxSequencesCount = maxSequencesCount_; - return *this; - } - - CmdProcessCommandsInfoNVX & setTargetCommandBuffer( vk::CommandBuffer targetCommandBuffer_ ) - { - targetCommandBuffer = targetCommandBuffer_; - return *this; - } - - CmdProcessCommandsInfoNVX & setSequencesCountBuffer( vk::Buffer sequencesCountBuffer_ ) - { - sequencesCountBuffer = sequencesCountBuffer_; - return *this; - } - - CmdProcessCommandsInfoNVX & setSequencesCountOffset( vk::DeviceSize sequencesCountOffset_ ) - { - sequencesCountOffset = sequencesCountOffset_; - return *this; - } - - CmdProcessCommandsInfoNVX & setSequencesIndexBuffer( vk::Buffer sequencesIndexBuffer_ ) - { - sequencesIndexBuffer = sequencesIndexBuffer_; - return *this; - } - - CmdProcessCommandsInfoNVX & setSequencesIndexOffset( vk::DeviceSize sequencesIndexOffset_ ) - { - sequencesIndexOffset = sequencesIndexOffset_; - return *this; - } - - operator VkCmdProcessCommandsInfoNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkCmdProcessCommandsInfoNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( objectTable == rhs.objectTable ) - && ( indirectCommandsLayout == rhs.indirectCommandsLayout ) - && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount ) - && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens ) - && ( maxSequencesCount == rhs.maxSequencesCount ) - && ( targetCommandBuffer == rhs.targetCommandBuffer ) - && ( sequencesCountBuffer == rhs.sequencesCountBuffer ) - && ( sequencesCountOffset == rhs.sequencesCountOffset ) - && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer ) - && ( sequencesIndexOffset == rhs.sequencesIndexOffset ); - } - - bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::CmdProcessCommandsInfoNVX::sType; - }; - static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct CmdReserveSpaceForCommandsInfoNVX - { - protected: - CmdReserveSpaceForCommandsInfoNVX( vk::ObjectTableNVX objectTable_ = vk::ObjectTableNVX(), - vk::IndirectCommandsLayoutNVX indirectCommandsLayout_ = vk::IndirectCommandsLayoutNVX(), - uint32_t maxSequencesCount_ = 0 ) - : objectTable( objectTable_ ) - , indirectCommandsLayout( indirectCommandsLayout_ ) - , maxSequencesCount( maxSequencesCount_ ) - {} - - CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eCmdReserveSpaceForCommandsInfoNVX; - const void* pNext = nullptr; - vk::ObjectTableNVX objectTable; - vk::IndirectCommandsLayoutNVX indirectCommandsLayout; - uint32_t maxSequencesCount; - }; - static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "layout struct and wrapper have different size!" ); - } - - struct CmdReserveSpaceForCommandsInfoNVX : public layout::CmdReserveSpaceForCommandsInfoNVX - { - CmdReserveSpaceForCommandsInfoNVX( vk::ObjectTableNVX objectTable_ = vk::ObjectTableNVX(), - vk::IndirectCommandsLayoutNVX indirectCommandsLayout_ = vk::IndirectCommandsLayoutNVX(), - uint32_t maxSequencesCount_ = 0 ) - : layout::CmdReserveSpaceForCommandsInfoNVX( objectTable_, indirectCommandsLayout_, maxSequencesCount_ ) - {} - - CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs ) - : layout::CmdReserveSpaceForCommandsInfoNVX( rhs ) - {} - - CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - CmdReserveSpaceForCommandsInfoNVX & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - CmdReserveSpaceForCommandsInfoNVX & setObjectTable( vk::ObjectTableNVX objectTable_ ) - { - objectTable = objectTable_; - return *this; - } - - CmdReserveSpaceForCommandsInfoNVX & setIndirectCommandsLayout( vk::IndirectCommandsLayoutNVX indirectCommandsLayout_ ) - { - indirectCommandsLayout = indirectCommandsLayout_; - return *this; - } - - CmdReserveSpaceForCommandsInfoNVX & setMaxSequencesCount( uint32_t maxSequencesCount_ ) - { - maxSequencesCount = maxSequencesCount_; - return *this; - } - - operator VkCmdReserveSpaceForCommandsInfoNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkCmdReserveSpaceForCommandsInfoNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( objectTable == rhs.objectTable ) - && ( indirectCommandsLayout == rhs.indirectCommandsLayout ) - && ( maxSequencesCount == rhs.maxSequencesCount ); - } - - bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::CmdReserveSpaceForCommandsInfoNVX::sType; - }; - static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct CoarseSampleLocationNV - { - CoarseSampleLocationNV( uint32_t pixelX_ = 0, - uint32_t pixelY_ = 0, - uint32_t sample_ = 0 ) - : pixelX( pixelX_ ) - , pixelY( pixelY_ ) - , sample( sample_ ) - {} - - CoarseSampleLocationNV( VkCoarseSampleLocationNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - CoarseSampleLocationNV& operator=( VkCoarseSampleLocationNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - CoarseSampleLocationNV & setPixelX( uint32_t pixelX_ ) - { - pixelX = pixelX_; - return *this; - } - - CoarseSampleLocationNV & setPixelY( uint32_t pixelY_ ) - { - pixelY = pixelY_; - return *this; - } - - CoarseSampleLocationNV & setSample( uint32_t sample_ ) - { - sample = sample_; - return *this; - } - - operator VkCoarseSampleLocationNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkCoarseSampleLocationNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( CoarseSampleLocationNV const& rhs ) const - { - return ( pixelX == rhs.pixelX ) - && ( pixelY == rhs.pixelY ) - && ( sample == rhs.sample ); - } - - bool operator!=( CoarseSampleLocationNV const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t pixelX; - uint32_t pixelY; - uint32_t sample; - }; - static_assert( sizeof( CoarseSampleLocationNV ) == sizeof( VkCoarseSampleLocationNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct CoarseSampleOrderCustomNV - { - CoarseSampleOrderCustomNV( vk::ShadingRatePaletteEntryNV shadingRate_ = vk::ShadingRatePaletteEntryNV::eNoInvocations, - uint32_t sampleCount_ = 0, - uint32_t sampleLocationCount_ = 0, - const vk::CoarseSampleLocationNV* pSampleLocations_ = nullptr ) - : shadingRate( shadingRate_ ) - , sampleCount( sampleCount_ ) - , sampleLocationCount( sampleLocationCount_ ) - , pSampleLocations( pSampleLocations_ ) - {} - - CoarseSampleOrderCustomNV( VkCoarseSampleOrderCustomNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - CoarseSampleOrderCustomNV& operator=( VkCoarseSampleOrderCustomNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - CoarseSampleOrderCustomNV & setShadingRate( vk::ShadingRatePaletteEntryNV shadingRate_ ) - { - shadingRate = shadingRate_; - return *this; - } - - CoarseSampleOrderCustomNV & setSampleCount( uint32_t sampleCount_ ) - { - sampleCount = sampleCount_; - return *this; - } - - CoarseSampleOrderCustomNV & setSampleLocationCount( uint32_t sampleLocationCount_ ) - { - sampleLocationCount = sampleLocationCount_; - return *this; - } - - CoarseSampleOrderCustomNV & setPSampleLocations( const vk::CoarseSampleLocationNV* pSampleLocations_ ) - { - pSampleLocations = pSampleLocations_; - return *this; - } - - operator VkCoarseSampleOrderCustomNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkCoarseSampleOrderCustomNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( CoarseSampleOrderCustomNV const& rhs ) const - { - return ( shadingRate == rhs.shadingRate ) - && ( sampleCount == rhs.sampleCount ) - && ( sampleLocationCount == rhs.sampleLocationCount ) - && ( pSampleLocations == rhs.pSampleLocations ); - } - - bool operator!=( CoarseSampleOrderCustomNV const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ShadingRatePaletteEntryNV shadingRate; - uint32_t sampleCount; - uint32_t sampleLocationCount; - const vk::CoarseSampleLocationNV* pSampleLocations; - }; - static_assert( sizeof( CoarseSampleOrderCustomNV ) == sizeof( VkCoarseSampleOrderCustomNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct CommandBufferAllocateInfo - { - protected: - CommandBufferAllocateInfo( vk::CommandPool commandPool_ = vk::CommandPool(), - vk::CommandBufferLevel level_ = vk::CommandBufferLevel::ePrimary, - uint32_t commandBufferCount_ = 0 ) - : commandPool( commandPool_ ) - , level( level_ ) - , commandBufferCount( commandBufferCount_ ) - {} - - CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eCommandBufferAllocateInfo; - const void* pNext = nullptr; - vk::CommandPool commandPool; - vk::CommandBufferLevel level; - uint32_t commandBufferCount; - }; - static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "layout struct and wrapper have different size!" ); - } - - struct CommandBufferAllocateInfo : public layout::CommandBufferAllocateInfo - { - CommandBufferAllocateInfo( vk::CommandPool commandPool_ = vk::CommandPool(), - vk::CommandBufferLevel level_ = vk::CommandBufferLevel::ePrimary, - uint32_t commandBufferCount_ = 0 ) - : layout::CommandBufferAllocateInfo( commandPool_, level_, commandBufferCount_ ) - {} - - CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs ) - : layout::CommandBufferAllocateInfo( rhs ) - {} - - CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - CommandBufferAllocateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - CommandBufferAllocateInfo & setCommandPool( vk::CommandPool commandPool_ ) - { - commandPool = commandPool_; - return *this; - } - - CommandBufferAllocateInfo & setLevel( vk::CommandBufferLevel level_ ) - { - level = level_; - return *this; - } - - CommandBufferAllocateInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) - { - commandBufferCount = commandBufferCount_; - return *this; - } - - operator VkCommandBufferAllocateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkCommandBufferAllocateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( CommandBufferAllocateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( commandPool == rhs.commandPool ) - && ( level == rhs.level ) - && ( commandBufferCount == rhs.commandBufferCount ); - } - - bool operator!=( CommandBufferAllocateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::CommandBufferAllocateInfo::sType; - }; - static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct CommandBufferInheritanceInfo - { - protected: - CommandBufferInheritanceInfo( vk::RenderPass renderPass_ = vk::RenderPass(), - uint32_t subpass_ = 0, - vk::Framebuffer framebuffer_ = vk::Framebuffer(), - vk::Bool32 occlusionQueryEnable_ = 0, - vk::QueryControlFlags queryFlags_ = vk::QueryControlFlags(), - vk::QueryPipelineStatisticFlags pipelineStatistics_ = vk::QueryPipelineStatisticFlags() ) - : renderPass( renderPass_ ) - , subpass( subpass_ ) - , framebuffer( framebuffer_ ) - , occlusionQueryEnable( occlusionQueryEnable_ ) - , queryFlags( queryFlags_ ) - , pipelineStatistics( pipelineStatistics_ ) - {} - - CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eCommandBufferInheritanceInfo; - const void* pNext = nullptr; - vk::RenderPass renderPass; - uint32_t subpass; - vk::Framebuffer framebuffer; - vk::Bool32 occlusionQueryEnable; - vk::QueryControlFlags queryFlags; - vk::QueryPipelineStatisticFlags pipelineStatistics; - }; - static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "layout struct and wrapper have different size!" ); - } - - struct CommandBufferInheritanceInfo : public layout::CommandBufferInheritanceInfo - { - CommandBufferInheritanceInfo( vk::RenderPass renderPass_ = vk::RenderPass(), - uint32_t subpass_ = 0, - vk::Framebuffer framebuffer_ = vk::Framebuffer(), - vk::Bool32 occlusionQueryEnable_ = 0, - vk::QueryControlFlags queryFlags_ = vk::QueryControlFlags(), - vk::QueryPipelineStatisticFlags pipelineStatistics_ = vk::QueryPipelineStatisticFlags() ) - : layout::CommandBufferInheritanceInfo( renderPass_, subpass_, framebuffer_, occlusionQueryEnable_, queryFlags_, pipelineStatistics_ ) - {} - - CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs ) - : layout::CommandBufferInheritanceInfo( rhs ) - {} - - CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - CommandBufferInheritanceInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - CommandBufferInheritanceInfo & setRenderPass( vk::RenderPass renderPass_ ) - { - renderPass = renderPass_; - return *this; - } - - CommandBufferInheritanceInfo & setSubpass( uint32_t subpass_ ) - { - subpass = subpass_; - return *this; - } - - CommandBufferInheritanceInfo & setFramebuffer( vk::Framebuffer framebuffer_ ) - { - framebuffer = framebuffer_; - return *this; - } - - CommandBufferInheritanceInfo & setOcclusionQueryEnable( vk::Bool32 occlusionQueryEnable_ ) - { - occlusionQueryEnable = occlusionQueryEnable_; - return *this; - } - - CommandBufferInheritanceInfo & setQueryFlags( vk::QueryControlFlags queryFlags_ ) - { - queryFlags = queryFlags_; - return *this; - } - - CommandBufferInheritanceInfo & setPipelineStatistics( vk::QueryPipelineStatisticFlags pipelineStatistics_ ) - { - pipelineStatistics = pipelineStatistics_; - return *this; - } - - operator VkCommandBufferInheritanceInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkCommandBufferInheritanceInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( CommandBufferInheritanceInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( renderPass == rhs.renderPass ) - && ( subpass == rhs.subpass ) - && ( framebuffer == rhs.framebuffer ) - && ( occlusionQueryEnable == rhs.occlusionQueryEnable ) - && ( queryFlags == rhs.queryFlags ) - && ( pipelineStatistics == rhs.pipelineStatistics ); - } - - bool operator!=( CommandBufferInheritanceInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::CommandBufferInheritanceInfo::sType; - }; - static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct CommandBufferBeginInfo - { - protected: - CommandBufferBeginInfo( vk::CommandBufferUsageFlags flags_ = vk::CommandBufferUsageFlags(), - const vk::CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr ) - : flags( flags_ ) - , pInheritanceInfo( pInheritanceInfo_ ) - {} - - CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eCommandBufferBeginInfo; - const void* pNext = nullptr; - vk::CommandBufferUsageFlags flags; - const vk::CommandBufferInheritanceInfo* pInheritanceInfo; - }; - static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "layout struct and wrapper have different size!" ); - } - - struct CommandBufferBeginInfo : public layout::CommandBufferBeginInfo - { - CommandBufferBeginInfo( vk::CommandBufferUsageFlags flags_ = vk::CommandBufferUsageFlags(), - const vk::CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr ) - : layout::CommandBufferBeginInfo( flags_, pInheritanceInfo_ ) - {} - - CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs ) - : layout::CommandBufferBeginInfo( rhs ) - {} - - CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - CommandBufferBeginInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - CommandBufferBeginInfo & setFlags( vk::CommandBufferUsageFlags flags_ ) - { - flags = flags_; - return *this; - } - - CommandBufferBeginInfo & setPInheritanceInfo( const vk::CommandBufferInheritanceInfo* pInheritanceInfo_ ) - { - pInheritanceInfo = pInheritanceInfo_; - return *this; - } - - operator VkCommandBufferBeginInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkCommandBufferBeginInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( CommandBufferBeginInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( pInheritanceInfo == rhs.pInheritanceInfo ); - } - - bool operator!=( CommandBufferBeginInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::CommandBufferBeginInfo::sType; - }; - static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct CommandBufferInheritanceConditionalRenderingInfoEXT - { - protected: - CommandBufferInheritanceConditionalRenderingInfoEXT( vk::Bool32 conditionalRenderingEnable_ = 0 ) - : conditionalRenderingEnable( conditionalRenderingEnable_ ) - {} - - CommandBufferInheritanceConditionalRenderingInfoEXT( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - CommandBufferInheritanceConditionalRenderingInfoEXT& operator=( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT; - const void* pNext = nullptr; - vk::Bool32 conditionalRenderingEnable; - }; - static_assert( sizeof( CommandBufferInheritanceConditionalRenderingInfoEXT ) == sizeof( VkCommandBufferInheritanceConditionalRenderingInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct CommandBufferInheritanceConditionalRenderingInfoEXT : public layout::CommandBufferInheritanceConditionalRenderingInfoEXT - { - CommandBufferInheritanceConditionalRenderingInfoEXT( vk::Bool32 conditionalRenderingEnable_ = 0 ) - : layout::CommandBufferInheritanceConditionalRenderingInfoEXT( conditionalRenderingEnable_ ) - {} - - CommandBufferInheritanceConditionalRenderingInfoEXT( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) - : layout::CommandBufferInheritanceConditionalRenderingInfoEXT( rhs ) - {} - - CommandBufferInheritanceConditionalRenderingInfoEXT& operator=( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - CommandBufferInheritanceConditionalRenderingInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - CommandBufferInheritanceConditionalRenderingInfoEXT & setConditionalRenderingEnable( vk::Bool32 conditionalRenderingEnable_ ) - { - conditionalRenderingEnable = conditionalRenderingEnable_; - return *this; - } - - operator VkCommandBufferInheritanceConditionalRenderingInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkCommandBufferInheritanceConditionalRenderingInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( CommandBufferInheritanceConditionalRenderingInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( conditionalRenderingEnable == rhs.conditionalRenderingEnable ); - } - - bool operator!=( CommandBufferInheritanceConditionalRenderingInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::CommandBufferInheritanceConditionalRenderingInfoEXT::sType; - }; - static_assert( sizeof( CommandBufferInheritanceConditionalRenderingInfoEXT ) == sizeof( VkCommandBufferInheritanceConditionalRenderingInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct CommandPoolCreateInfo - { - protected: - CommandPoolCreateInfo( vk::CommandPoolCreateFlags flags_ = vk::CommandPoolCreateFlags(), - uint32_t queueFamilyIndex_ = 0 ) - : flags( flags_ ) - , queueFamilyIndex( queueFamilyIndex_ ) - {} - - CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eCommandPoolCreateInfo; - const void* pNext = nullptr; - vk::CommandPoolCreateFlags flags; - uint32_t queueFamilyIndex; - }; - static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct CommandPoolCreateInfo : public layout::CommandPoolCreateInfo - { - CommandPoolCreateInfo( vk::CommandPoolCreateFlags flags_ = vk::CommandPoolCreateFlags(), - uint32_t queueFamilyIndex_ = 0 ) - : layout::CommandPoolCreateInfo( flags_, queueFamilyIndex_ ) - {} - - CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs ) - : layout::CommandPoolCreateInfo( rhs ) - {} - - CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - CommandPoolCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - CommandPoolCreateInfo & setFlags( vk::CommandPoolCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - CommandPoolCreateInfo & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) - { - queueFamilyIndex = queueFamilyIndex_; - return *this; - } - - operator VkCommandPoolCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkCommandPoolCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( CommandPoolCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( queueFamilyIndex == rhs.queueFamilyIndex ); - } - - bool operator!=( CommandPoolCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::CommandPoolCreateInfo::sType; - }; - static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SpecializationMapEntry - { - SpecializationMapEntry( uint32_t constantID_ = 0, - uint32_t offset_ = 0, - size_t size_ = 0 ) - : constantID( constantID_ ) - , offset( offset_ ) - , size( size_ ) - {} - - SpecializationMapEntry( VkSpecializationMapEntry const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SpecializationMapEntry& operator=( VkSpecializationMapEntry const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SpecializationMapEntry & setConstantID( uint32_t constantID_ ) - { - constantID = constantID_; - return *this; - } - - SpecializationMapEntry & setOffset( uint32_t offset_ ) - { - offset = offset_; - return *this; - } - - SpecializationMapEntry & setSize( size_t size_ ) - { - size = size_; - return *this; - } - - operator VkSpecializationMapEntry const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSpecializationMapEntry &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SpecializationMapEntry const& rhs ) const - { - return ( constantID == rhs.constantID ) - && ( offset == rhs.offset ) - && ( size == rhs.size ); - } - - bool operator!=( SpecializationMapEntry const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t constantID; - uint32_t offset; - size_t size; - }; - static_assert( sizeof( SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SpecializationInfo - { - SpecializationInfo( uint32_t mapEntryCount_ = 0, - const vk::SpecializationMapEntry* pMapEntries_ = nullptr, - size_t dataSize_ = 0, - const void* pData_ = nullptr ) - : mapEntryCount( mapEntryCount_ ) - , pMapEntries( pMapEntries_ ) - , dataSize( dataSize_ ) - , pData( pData_ ) - {} - - SpecializationInfo( VkSpecializationInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SpecializationInfo& operator=( VkSpecializationInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SpecializationInfo & setMapEntryCount( uint32_t mapEntryCount_ ) - { - mapEntryCount = mapEntryCount_; - return *this; - } - - SpecializationInfo & setPMapEntries( const vk::SpecializationMapEntry* pMapEntries_ ) - { - pMapEntries = pMapEntries_; - return *this; - } - - SpecializationInfo & setDataSize( size_t dataSize_ ) - { - dataSize = dataSize_; - return *this; - } - - SpecializationInfo & setPData( const void* pData_ ) - { - pData = pData_; - return *this; - } - - operator VkSpecializationInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSpecializationInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SpecializationInfo const& rhs ) const - { - return ( mapEntryCount == rhs.mapEntryCount ) - && ( pMapEntries == rhs.pMapEntries ) - && ( dataSize == rhs.dataSize ) - && ( pData == rhs.pData ); - } - - bool operator!=( SpecializationInfo const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t mapEntryCount; - const vk::SpecializationMapEntry* pMapEntries; - size_t dataSize; - const void* pData; - }; - static_assert( sizeof( SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineShaderStageCreateInfo - { - protected: - PipelineShaderStageCreateInfo( vk::PipelineShaderStageCreateFlags flags_ = vk::PipelineShaderStageCreateFlags(), - vk::ShaderStageFlagBits stage_ = vk::ShaderStageFlagBits::eVertex, - vk::ShaderModule module_ = vk::ShaderModule(), - const char* pName_ = nullptr, - const vk::SpecializationInfo* pSpecializationInfo_ = nullptr ) - : flags( flags_ ) - , stage( stage_ ) - , module( module_ ) - , pName( pName_ ) - , pSpecializationInfo( pSpecializationInfo_ ) - {} - - PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineShaderStageCreateInfo; - const void* pNext = nullptr; - vk::PipelineShaderStageCreateFlags flags; - vk::ShaderStageFlagBits stage; - vk::ShaderModule module; - const char* pName; - const vk::SpecializationInfo* pSpecializationInfo; - }; - static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct PipelineShaderStageCreateInfo : public layout::PipelineShaderStageCreateInfo - { - PipelineShaderStageCreateInfo( vk::PipelineShaderStageCreateFlags flags_ = vk::PipelineShaderStageCreateFlags(), - vk::ShaderStageFlagBits stage_ = vk::ShaderStageFlagBits::eVertex, - vk::ShaderModule module_ = vk::ShaderModule(), - const char* pName_ = nullptr, - const vk::SpecializationInfo* pSpecializationInfo_ = nullptr ) - : layout::PipelineShaderStageCreateInfo( flags_, stage_, module_, pName_, pSpecializationInfo_ ) - {} - - PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs ) - : layout::PipelineShaderStageCreateInfo( rhs ) - {} - - PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineShaderStageCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineShaderStageCreateInfo & setFlags( vk::PipelineShaderStageCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - PipelineShaderStageCreateInfo & setStage( vk::ShaderStageFlagBits stage_ ) - { - stage = stage_; - return *this; - } - - PipelineShaderStageCreateInfo & setModule( vk::ShaderModule module_ ) - { - module = module_; - return *this; - } - - PipelineShaderStageCreateInfo & setPName( const char* pName_ ) - { - pName = pName_; - return *this; - } - - PipelineShaderStageCreateInfo & setPSpecializationInfo( const vk::SpecializationInfo* pSpecializationInfo_ ) - { - pSpecializationInfo = pSpecializationInfo_; - return *this; - } - - operator VkPipelineShaderStageCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineShaderStageCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineShaderStageCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( stage == rhs.stage ) - && ( module == rhs.module ) - && ( pName == rhs.pName ) - && ( pSpecializationInfo == rhs.pSpecializationInfo ); - } - - bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineShaderStageCreateInfo::sType; - }; - static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ComputePipelineCreateInfo - { - protected: - ComputePipelineCreateInfo( vk::PipelineCreateFlags flags_ = vk::PipelineCreateFlags(), - vk::PipelineShaderStageCreateInfo stage_ = vk::PipelineShaderStageCreateInfo(), - vk::PipelineLayout layout_ = vk::PipelineLayout(), - vk::Pipeline basePipelineHandle_ = vk::Pipeline(), - int32_t basePipelineIndex_ = 0 ) - : flags( flags_ ) - , stage( stage_ ) - , layout( layout_ ) - , basePipelineHandle( basePipelineHandle_ ) - , basePipelineIndex( basePipelineIndex_ ) - {} - - ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eComputePipelineCreateInfo; - const void* pNext = nullptr; - vk::PipelineCreateFlags flags; - vk::PipelineShaderStageCreateInfo stage; - vk::PipelineLayout layout; - vk::Pipeline basePipelineHandle; - int32_t basePipelineIndex; - }; - static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct ComputePipelineCreateInfo : public layout::ComputePipelineCreateInfo - { - ComputePipelineCreateInfo( vk::PipelineCreateFlags flags_ = vk::PipelineCreateFlags(), - vk::PipelineShaderStageCreateInfo stage_ = vk::PipelineShaderStageCreateInfo(), - vk::PipelineLayout layout_ = vk::PipelineLayout(), - vk::Pipeline basePipelineHandle_ = vk::Pipeline(), - int32_t basePipelineIndex_ = 0 ) - : layout::ComputePipelineCreateInfo( flags_, stage_, layout_, basePipelineHandle_, basePipelineIndex_ ) - {} - - ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs ) - : layout::ComputePipelineCreateInfo( rhs ) - {} - - ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ComputePipelineCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ComputePipelineCreateInfo & setFlags( vk::PipelineCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - ComputePipelineCreateInfo & setStage( vk::PipelineShaderStageCreateInfo stage_ ) - { - stage = stage_; - return *this; - } - - ComputePipelineCreateInfo & setLayout( vk::PipelineLayout layout_ ) - { - layout = layout_; - return *this; - } - - ComputePipelineCreateInfo & setBasePipelineHandle( vk::Pipeline basePipelineHandle_ ) - { - basePipelineHandle = basePipelineHandle_; - return *this; - } - - ComputePipelineCreateInfo & setBasePipelineIndex( int32_t basePipelineIndex_ ) - { - basePipelineIndex = basePipelineIndex_; - return *this; - } - - operator VkComputePipelineCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkComputePipelineCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ComputePipelineCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( stage == rhs.stage ) - && ( layout == rhs.layout ) - && ( basePipelineHandle == rhs.basePipelineHandle ) - && ( basePipelineIndex == rhs.basePipelineIndex ); - } - - bool operator!=( ComputePipelineCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ComputePipelineCreateInfo::sType; - }; - static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ConditionalRenderingBeginInfoEXT - { - protected: - ConditionalRenderingBeginInfoEXT( vk::Buffer buffer_ = vk::Buffer(), - vk::DeviceSize offset_ = 0, - vk::ConditionalRenderingFlagsEXT flags_ = vk::ConditionalRenderingFlagsEXT() ) - : buffer( buffer_ ) - , offset( offset_ ) - , flags( flags_ ) - {} - - ConditionalRenderingBeginInfoEXT( VkConditionalRenderingBeginInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ConditionalRenderingBeginInfoEXT& operator=( VkConditionalRenderingBeginInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eConditionalRenderingBeginInfoEXT; - const void* pNext = nullptr; - vk::Buffer buffer; - vk::DeviceSize offset; - vk::ConditionalRenderingFlagsEXT flags; - }; - static_assert( sizeof( ConditionalRenderingBeginInfoEXT ) == sizeof( VkConditionalRenderingBeginInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct ConditionalRenderingBeginInfoEXT : public layout::ConditionalRenderingBeginInfoEXT - { - ConditionalRenderingBeginInfoEXT( vk::Buffer buffer_ = vk::Buffer(), - vk::DeviceSize offset_ = 0, - vk::ConditionalRenderingFlagsEXT flags_ = vk::ConditionalRenderingFlagsEXT() ) - : layout::ConditionalRenderingBeginInfoEXT( buffer_, offset_, flags_ ) - {} - - ConditionalRenderingBeginInfoEXT( VkConditionalRenderingBeginInfoEXT const & rhs ) - : layout::ConditionalRenderingBeginInfoEXT( rhs ) - {} - - ConditionalRenderingBeginInfoEXT& operator=( VkConditionalRenderingBeginInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ConditionalRenderingBeginInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ConditionalRenderingBeginInfoEXT & setBuffer( vk::Buffer buffer_ ) - { - buffer = buffer_; - return *this; - } - - ConditionalRenderingBeginInfoEXT & setOffset( vk::DeviceSize offset_ ) - { - offset = offset_; - return *this; - } - - ConditionalRenderingBeginInfoEXT & setFlags( vk::ConditionalRenderingFlagsEXT flags_ ) - { - flags = flags_; - return *this; - } - - operator VkConditionalRenderingBeginInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkConditionalRenderingBeginInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ConditionalRenderingBeginInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( buffer == rhs.buffer ) - && ( offset == rhs.offset ) - && ( flags == rhs.flags ); - } - - bool operator!=( ConditionalRenderingBeginInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ConditionalRenderingBeginInfoEXT::sType; - }; - static_assert( sizeof( ConditionalRenderingBeginInfoEXT ) == sizeof( VkConditionalRenderingBeginInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ConformanceVersionKHR - { - ConformanceVersionKHR( uint8_t major_ = 0, - uint8_t minor_ = 0, - uint8_t subminor_ = 0, - uint8_t patch_ = 0 ) - : major( major_ ) - , minor( minor_ ) - , subminor( subminor_ ) - , patch( patch_ ) - {} - - ConformanceVersionKHR( VkConformanceVersionKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ConformanceVersionKHR& operator=( VkConformanceVersionKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ConformanceVersionKHR & setMajor( uint8_t major_ ) - { - major = major_; - return *this; - } - - ConformanceVersionKHR & setMinor( uint8_t minor_ ) - { - minor = minor_; - return *this; - } - - ConformanceVersionKHR & setSubminor( uint8_t subminor_ ) - { - subminor = subminor_; - return *this; - } - - ConformanceVersionKHR & setPatch( uint8_t patch_ ) - { - patch = patch_; - return *this; - } - - operator VkConformanceVersionKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkConformanceVersionKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ConformanceVersionKHR const& rhs ) const - { - return ( major == rhs.major ) - && ( minor == rhs.minor ) - && ( subminor == rhs.subminor ) - && ( patch == rhs.patch ); - } - - bool operator!=( ConformanceVersionKHR const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint8_t major; - uint8_t minor; - uint8_t subminor; - uint8_t patch; - }; - static_assert( sizeof( ConformanceVersionKHR ) == sizeof( VkConformanceVersionKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct CooperativeMatrixPropertiesNV - { - protected: - CooperativeMatrixPropertiesNV( uint32_t MSize_ = 0, - uint32_t NSize_ = 0, - uint32_t KSize_ = 0, - vk::ComponentTypeNV AType_ = vk::ComponentTypeNV::eFloat16, - vk::ComponentTypeNV BType_ = vk::ComponentTypeNV::eFloat16, - vk::ComponentTypeNV CType_ = vk::ComponentTypeNV::eFloat16, - vk::ComponentTypeNV DType_ = vk::ComponentTypeNV::eFloat16, - vk::ScopeNV scope_ = vk::ScopeNV::eDevice ) - : MSize( MSize_ ) - , NSize( NSize_ ) - , KSize( KSize_ ) - , AType( AType_ ) - , BType( BType_ ) - , CType( CType_ ) - , DType( DType_ ) - , scope( scope_ ) - {} - - CooperativeMatrixPropertiesNV( VkCooperativeMatrixPropertiesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - CooperativeMatrixPropertiesNV& operator=( VkCooperativeMatrixPropertiesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eCooperativeMatrixPropertiesNV; - void* pNext = nullptr; - uint32_t MSize; - uint32_t NSize; - uint32_t KSize; - vk::ComponentTypeNV AType; - vk::ComponentTypeNV BType; - vk::ComponentTypeNV CType; - vk::ComponentTypeNV DType; - vk::ScopeNV scope; - }; - static_assert( sizeof( CooperativeMatrixPropertiesNV ) == sizeof( VkCooperativeMatrixPropertiesNV ), "layout struct and wrapper have different size!" ); - } - - struct CooperativeMatrixPropertiesNV : public layout::CooperativeMatrixPropertiesNV - { - CooperativeMatrixPropertiesNV( uint32_t MSize_ = 0, - uint32_t NSize_ = 0, - uint32_t KSize_ = 0, - vk::ComponentTypeNV AType_ = vk::ComponentTypeNV::eFloat16, - vk::ComponentTypeNV BType_ = vk::ComponentTypeNV::eFloat16, - vk::ComponentTypeNV CType_ = vk::ComponentTypeNV::eFloat16, - vk::ComponentTypeNV DType_ = vk::ComponentTypeNV::eFloat16, - vk::ScopeNV scope_ = vk::ScopeNV::eDevice ) - : layout::CooperativeMatrixPropertiesNV( MSize_, NSize_, KSize_, AType_, BType_, CType_, DType_, scope_ ) - {} - - CooperativeMatrixPropertiesNV( VkCooperativeMatrixPropertiesNV const & rhs ) - : layout::CooperativeMatrixPropertiesNV( rhs ) - {} - - CooperativeMatrixPropertiesNV& operator=( VkCooperativeMatrixPropertiesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - CooperativeMatrixPropertiesNV & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - CooperativeMatrixPropertiesNV & setMSize( uint32_t MSize_ ) - { - MSize = MSize_; - return *this; - } - - CooperativeMatrixPropertiesNV & setNSize( uint32_t NSize_ ) - { - NSize = NSize_; - return *this; - } - - CooperativeMatrixPropertiesNV & setKSize( uint32_t KSize_ ) - { - KSize = KSize_; - return *this; - } - - CooperativeMatrixPropertiesNV & setAType( vk::ComponentTypeNV AType_ ) - { - AType = AType_; - return *this; - } - - CooperativeMatrixPropertiesNV & setBType( vk::ComponentTypeNV BType_ ) - { - BType = BType_; - return *this; - } - - CooperativeMatrixPropertiesNV & setCType( vk::ComponentTypeNV CType_ ) - { - CType = CType_; - return *this; - } - - CooperativeMatrixPropertiesNV & setDType( vk::ComponentTypeNV DType_ ) - { - DType = DType_; - return *this; - } - - CooperativeMatrixPropertiesNV & setScope( vk::ScopeNV scope_ ) - { - scope = scope_; - return *this; - } - - operator VkCooperativeMatrixPropertiesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkCooperativeMatrixPropertiesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( CooperativeMatrixPropertiesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( MSize == rhs.MSize ) - && ( NSize == rhs.NSize ) - && ( KSize == rhs.KSize ) - && ( AType == rhs.AType ) - && ( BType == rhs.BType ) - && ( CType == rhs.CType ) - && ( DType == rhs.DType ) - && ( scope == rhs.scope ); - } - - bool operator!=( CooperativeMatrixPropertiesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::CooperativeMatrixPropertiesNV::sType; - }; - static_assert( sizeof( CooperativeMatrixPropertiesNV ) == sizeof( VkCooperativeMatrixPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct CopyDescriptorSet - { - protected: - CopyDescriptorSet( vk::DescriptorSet srcSet_ = vk::DescriptorSet(), - uint32_t srcBinding_ = 0, - uint32_t srcArrayElement_ = 0, - vk::DescriptorSet dstSet_ = vk::DescriptorSet(), - uint32_t dstBinding_ = 0, - uint32_t dstArrayElement_ = 0, - uint32_t descriptorCount_ = 0 ) - : srcSet( srcSet_ ) - , srcBinding( srcBinding_ ) - , srcArrayElement( srcArrayElement_ ) - , dstSet( dstSet_ ) - , dstBinding( dstBinding_ ) - , dstArrayElement( dstArrayElement_ ) - , descriptorCount( descriptorCount_ ) - {} - - CopyDescriptorSet( VkCopyDescriptorSet const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eCopyDescriptorSet; - const void* pNext = nullptr; - vk::DescriptorSet srcSet; - uint32_t srcBinding; - uint32_t srcArrayElement; - vk::DescriptorSet dstSet; - uint32_t dstBinding; - uint32_t dstArrayElement; - uint32_t descriptorCount; - }; - static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "layout struct and wrapper have different size!" ); - } - - struct CopyDescriptorSet : public layout::CopyDescriptorSet - { - CopyDescriptorSet( vk::DescriptorSet srcSet_ = vk::DescriptorSet(), - uint32_t srcBinding_ = 0, - uint32_t srcArrayElement_ = 0, - vk::DescriptorSet dstSet_ = vk::DescriptorSet(), - uint32_t dstBinding_ = 0, - uint32_t dstArrayElement_ = 0, - uint32_t descriptorCount_ = 0 ) - : layout::CopyDescriptorSet( srcSet_, srcBinding_, srcArrayElement_, dstSet_, dstBinding_, dstArrayElement_, descriptorCount_ ) - {} - - CopyDescriptorSet( VkCopyDescriptorSet const & rhs ) - : layout::CopyDescriptorSet( rhs ) - {} - - CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - CopyDescriptorSet & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - CopyDescriptorSet & setSrcSet( vk::DescriptorSet srcSet_ ) - { - srcSet = srcSet_; - return *this; - } - - CopyDescriptorSet & setSrcBinding( uint32_t srcBinding_ ) - { - srcBinding = srcBinding_; - return *this; - } - - CopyDescriptorSet & setSrcArrayElement( uint32_t srcArrayElement_ ) - { - srcArrayElement = srcArrayElement_; - return *this; - } - - CopyDescriptorSet & setDstSet( vk::DescriptorSet dstSet_ ) - { - dstSet = dstSet_; - return *this; - } - - CopyDescriptorSet & setDstBinding( uint32_t dstBinding_ ) - { - dstBinding = dstBinding_; - return *this; - } - - CopyDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) - { - dstArrayElement = dstArrayElement_; - return *this; - } - - CopyDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) - { - descriptorCount = descriptorCount_; - return *this; - } - - operator VkCopyDescriptorSet const&() const - { - return *reinterpret_cast( this ); - } - - operator VkCopyDescriptorSet &() - { - return *reinterpret_cast( this ); - } - - bool operator==( CopyDescriptorSet const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcSet == rhs.srcSet ) - && ( srcBinding == rhs.srcBinding ) - && ( srcArrayElement == rhs.srcArrayElement ) - && ( dstSet == rhs.dstSet ) - && ( dstBinding == rhs.dstBinding ) - && ( dstArrayElement == rhs.dstArrayElement ) - && ( descriptorCount == rhs.descriptorCount ); - } - - bool operator!=( CopyDescriptorSet const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::CopyDescriptorSet::sType; - }; - static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct D3D12FenceSubmitInfoKHR - { - protected: - D3D12FenceSubmitInfoKHR( uint32_t waitSemaphoreValuesCount_ = 0, - const uint64_t* pWaitSemaphoreValues_ = nullptr, - uint32_t signalSemaphoreValuesCount_ = 0, - const uint64_t* pSignalSemaphoreValues_ = nullptr ) - : waitSemaphoreValuesCount( waitSemaphoreValuesCount_ ) - , pWaitSemaphoreValues( pWaitSemaphoreValues_ ) - , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ ) - , pSignalSemaphoreValues( pSignalSemaphoreValues_ ) - {} - - D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - D3D12FenceSubmitInfoKHR& operator=( VkD3D12FenceSubmitInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eD3D12FenceSubmitInfoKHR; - const void* pNext = nullptr; - uint32_t waitSemaphoreValuesCount; - const uint64_t* pWaitSemaphoreValues; - uint32_t signalSemaphoreValuesCount; - const uint64_t* pSignalSemaphoreValues; - }; - static_assert( sizeof( D3D12FenceSubmitInfoKHR ) == sizeof( VkD3D12FenceSubmitInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct D3D12FenceSubmitInfoKHR : public layout::D3D12FenceSubmitInfoKHR - { - D3D12FenceSubmitInfoKHR( uint32_t waitSemaphoreValuesCount_ = 0, - const uint64_t* pWaitSemaphoreValues_ = nullptr, - uint32_t signalSemaphoreValuesCount_ = 0, - const uint64_t* pSignalSemaphoreValues_ = nullptr ) - : layout::D3D12FenceSubmitInfoKHR( waitSemaphoreValuesCount_, pWaitSemaphoreValues_, signalSemaphoreValuesCount_, pSignalSemaphoreValues_ ) - {} - - D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs ) - : layout::D3D12FenceSubmitInfoKHR( rhs ) - {} - - D3D12FenceSubmitInfoKHR& operator=( VkD3D12FenceSubmitInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - D3D12FenceSubmitInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - D3D12FenceSubmitInfoKHR & setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ ) - { - waitSemaphoreValuesCount = waitSemaphoreValuesCount_; - return *this; - } - - D3D12FenceSubmitInfoKHR & setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ ) - { - pWaitSemaphoreValues = pWaitSemaphoreValues_; - return *this; - } - - D3D12FenceSubmitInfoKHR & setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ ) - { - signalSemaphoreValuesCount = signalSemaphoreValuesCount_; - return *this; - } - - D3D12FenceSubmitInfoKHR & setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ ) - { - pSignalSemaphoreValues = pSignalSemaphoreValues_; - return *this; - } - - operator VkD3D12FenceSubmitInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkD3D12FenceSubmitInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( D3D12FenceSubmitInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount ) - && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues ) - && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount ) - && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues ); - } - - bool operator!=( D3D12FenceSubmitInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::D3D12FenceSubmitInfoKHR::sType; - }; - static_assert( sizeof( D3D12FenceSubmitInfoKHR ) == sizeof( VkD3D12FenceSubmitInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - namespace layout - { - struct DebugMarkerMarkerInfoEXT - { - protected: - DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, - std::array const& color_ = { { 0 } } ) - : pMarkerName( pMarkerName_ ) - { - memcpy( &color, color_.data(), 4 * sizeof( float ) ); - - } - - DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDebugMarkerMarkerInfoEXT; - const void* pNext = nullptr; - const char* pMarkerName; - float color[4]; - }; - static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct DebugMarkerMarkerInfoEXT : public layout::DebugMarkerMarkerInfoEXT - { - DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, - std::array const& color_ = { { 0 } } ) - : layout::DebugMarkerMarkerInfoEXT( pMarkerName_, color_ ) - {} - - DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs ) - : layout::DebugMarkerMarkerInfoEXT( rhs ) - {} - - DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DebugMarkerMarkerInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DebugMarkerMarkerInfoEXT & setPMarkerName( const char* pMarkerName_ ) - { - pMarkerName = pMarkerName_; - return *this; - } - - DebugMarkerMarkerInfoEXT & setColor( std::array color_ ) - { - memcpy( color, color_.data(), 4 * sizeof( float ) ); - return *this; - } - - operator VkDebugMarkerMarkerInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDebugMarkerMarkerInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pMarkerName == rhs.pMarkerName ) - && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 ); - } - - bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DebugMarkerMarkerInfoEXT::sType; - }; - static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DebugMarkerObjectNameInfoEXT - { - protected: - DebugMarkerObjectNameInfoEXT( vk::DebugReportObjectTypeEXT objectType_ = vk::DebugReportObjectTypeEXT::eUnknown, - uint64_t object_ = 0, - const char* pObjectName_ = nullptr ) - : objectType( objectType_ ) - , object( object_ ) - , pObjectName( pObjectName_ ) - {} - - DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDebugMarkerObjectNameInfoEXT; - const void* pNext = nullptr; - vk::DebugReportObjectTypeEXT objectType; - uint64_t object; - const char* pObjectName; - }; - static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct DebugMarkerObjectNameInfoEXT : public layout::DebugMarkerObjectNameInfoEXT - { - DebugMarkerObjectNameInfoEXT( vk::DebugReportObjectTypeEXT objectType_ = vk::DebugReportObjectTypeEXT::eUnknown, - uint64_t object_ = 0, - const char* pObjectName_ = nullptr ) - : layout::DebugMarkerObjectNameInfoEXT( objectType_, object_, pObjectName_ ) - {} - - DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs ) - : layout::DebugMarkerObjectNameInfoEXT( rhs ) - {} - - DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DebugMarkerObjectNameInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DebugMarkerObjectNameInfoEXT & setObjectType( vk::DebugReportObjectTypeEXT objectType_ ) - { - objectType = objectType_; - return *this; - } - - DebugMarkerObjectNameInfoEXT & setObject( uint64_t object_ ) - { - object = object_; - return *this; - } - - DebugMarkerObjectNameInfoEXT & setPObjectName( const char* pObjectName_ ) - { - pObjectName = pObjectName_; - return *this; - } - - operator VkDebugMarkerObjectNameInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDebugMarkerObjectNameInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( objectType == rhs.objectType ) - && ( object == rhs.object ) - && ( pObjectName == rhs.pObjectName ); - } - - bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DebugMarkerObjectNameInfoEXT::sType; - }; - static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DebugMarkerObjectTagInfoEXT - { - protected: - DebugMarkerObjectTagInfoEXT( vk::DebugReportObjectTypeEXT objectType_ = vk::DebugReportObjectTypeEXT::eUnknown, - uint64_t object_ = 0, - uint64_t tagName_ = 0, - size_t tagSize_ = 0, - const void* pTag_ = nullptr ) - : objectType( objectType_ ) - , object( object_ ) - , tagName( tagName_ ) - , tagSize( tagSize_ ) - , pTag( pTag_ ) - {} - - DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDebugMarkerObjectTagInfoEXT; - const void* pNext = nullptr; - vk::DebugReportObjectTypeEXT objectType; - uint64_t object; - uint64_t tagName; - size_t tagSize; - const void* pTag; - }; - static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct DebugMarkerObjectTagInfoEXT : public layout::DebugMarkerObjectTagInfoEXT - { - DebugMarkerObjectTagInfoEXT( vk::DebugReportObjectTypeEXT objectType_ = vk::DebugReportObjectTypeEXT::eUnknown, - uint64_t object_ = 0, - uint64_t tagName_ = 0, - size_t tagSize_ = 0, - const void* pTag_ = nullptr ) - : layout::DebugMarkerObjectTagInfoEXT( objectType_, object_, tagName_, tagSize_, pTag_ ) - {} - - DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs ) - : layout::DebugMarkerObjectTagInfoEXT( rhs ) - {} - - DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DebugMarkerObjectTagInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DebugMarkerObjectTagInfoEXT & setObjectType( vk::DebugReportObjectTypeEXT objectType_ ) - { - objectType = objectType_; - return *this; - } - - DebugMarkerObjectTagInfoEXT & setObject( uint64_t object_ ) - { - object = object_; - return *this; - } - - DebugMarkerObjectTagInfoEXT & setTagName( uint64_t tagName_ ) - { - tagName = tagName_; - return *this; - } - - DebugMarkerObjectTagInfoEXT & setTagSize( size_t tagSize_ ) - { - tagSize = tagSize_; - return *this; - } - - DebugMarkerObjectTagInfoEXT & setPTag( const void* pTag_ ) - { - pTag = pTag_; - return *this; - } - - operator VkDebugMarkerObjectTagInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDebugMarkerObjectTagInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( objectType == rhs.objectType ) - && ( object == rhs.object ) - && ( tagName == rhs.tagName ) - && ( tagSize == rhs.tagSize ) - && ( pTag == rhs.pTag ); - } - - bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DebugMarkerObjectTagInfoEXT::sType; - }; - static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DebugReportCallbackCreateInfoEXT - { - protected: - DebugReportCallbackCreateInfoEXT( vk::DebugReportFlagsEXT flags_ = vk::DebugReportFlagsEXT(), - PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, - void* pUserData_ = nullptr ) - : flags( flags_ ) - , pfnCallback( pfnCallback_ ) - , pUserData( pUserData_ ) - {} - - DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDebugReportCallbackCreateInfoEXT; - const void* pNext = nullptr; - vk::DebugReportFlagsEXT flags; - PFN_vkDebugReportCallbackEXT pfnCallback; - void* pUserData; - }; - static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct DebugReportCallbackCreateInfoEXT : public layout::DebugReportCallbackCreateInfoEXT - { - DebugReportCallbackCreateInfoEXT( vk::DebugReportFlagsEXT flags_ = vk::DebugReportFlagsEXT(), - PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, - void* pUserData_ = nullptr ) - : layout::DebugReportCallbackCreateInfoEXT( flags_, pfnCallback_, pUserData_ ) - {} - - DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs ) - : layout::DebugReportCallbackCreateInfoEXT( rhs ) - {} - - DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DebugReportCallbackCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DebugReportCallbackCreateInfoEXT & setFlags( vk::DebugReportFlagsEXT flags_ ) - { - flags = flags_; - return *this; - } - - DebugReportCallbackCreateInfoEXT & setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ ) - { - pfnCallback = pfnCallback_; - return *this; - } - - DebugReportCallbackCreateInfoEXT & setPUserData( void* pUserData_ ) - { - pUserData = pUserData_; - return *this; - } - - operator VkDebugReportCallbackCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDebugReportCallbackCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( pfnCallback == rhs.pfnCallback ) - && ( pUserData == rhs.pUserData ); - } - - bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DebugReportCallbackCreateInfoEXT::sType; - }; - static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DebugUtilsLabelEXT - { - protected: - DebugUtilsLabelEXT( const char* pLabelName_ = nullptr, - std::array const& color_ = { { 0 } } ) - : pLabelName( pLabelName_ ) - { - memcpy( &color, color_.data(), 4 * sizeof( float ) ); - - } - - DebugUtilsLabelEXT( VkDebugUtilsLabelEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DebugUtilsLabelEXT& operator=( VkDebugUtilsLabelEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDebugUtilsLabelEXT; - const void* pNext = nullptr; - const char* pLabelName; - float color[4]; - }; - static_assert( sizeof( DebugUtilsLabelEXT ) == sizeof( VkDebugUtilsLabelEXT ), "layout struct and wrapper have different size!" ); - } - - struct DebugUtilsLabelEXT : public layout::DebugUtilsLabelEXT - { - DebugUtilsLabelEXT( const char* pLabelName_ = nullptr, - std::array const& color_ = { { 0 } } ) - : layout::DebugUtilsLabelEXT( pLabelName_, color_ ) - {} - - DebugUtilsLabelEXT( VkDebugUtilsLabelEXT const & rhs ) - : layout::DebugUtilsLabelEXT( rhs ) - {} - - DebugUtilsLabelEXT& operator=( VkDebugUtilsLabelEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DebugUtilsLabelEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DebugUtilsLabelEXT & setPLabelName( const char* pLabelName_ ) - { - pLabelName = pLabelName_; - return *this; - } - - DebugUtilsLabelEXT & setColor( std::array color_ ) - { - memcpy( color, color_.data(), 4 * sizeof( float ) ); - return *this; - } - - operator VkDebugUtilsLabelEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDebugUtilsLabelEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DebugUtilsLabelEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pLabelName == rhs.pLabelName ) - && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 ); - } - - bool operator!=( DebugUtilsLabelEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DebugUtilsLabelEXT::sType; - }; - static_assert( sizeof( DebugUtilsLabelEXT ) == sizeof( VkDebugUtilsLabelEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DebugUtilsObjectNameInfoEXT - { - protected: - DebugUtilsObjectNameInfoEXT( vk::ObjectType objectType_ = vk::ObjectType::eUnknown, - uint64_t objectHandle_ = 0, - const char* pObjectName_ = nullptr ) - : objectType( objectType_ ) - , objectHandle( objectHandle_ ) - , pObjectName( pObjectName_ ) - {} - - DebugUtilsObjectNameInfoEXT( VkDebugUtilsObjectNameInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DebugUtilsObjectNameInfoEXT& operator=( VkDebugUtilsObjectNameInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDebugUtilsObjectNameInfoEXT; - const void* pNext = nullptr; - vk::ObjectType objectType; - uint64_t objectHandle; - const char* pObjectName; - }; - static_assert( sizeof( DebugUtilsObjectNameInfoEXT ) == sizeof( VkDebugUtilsObjectNameInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct DebugUtilsObjectNameInfoEXT : public layout::DebugUtilsObjectNameInfoEXT - { - DebugUtilsObjectNameInfoEXT( vk::ObjectType objectType_ = vk::ObjectType::eUnknown, - uint64_t objectHandle_ = 0, - const char* pObjectName_ = nullptr ) - : layout::DebugUtilsObjectNameInfoEXT( objectType_, objectHandle_, pObjectName_ ) - {} - - DebugUtilsObjectNameInfoEXT( VkDebugUtilsObjectNameInfoEXT const & rhs ) - : layout::DebugUtilsObjectNameInfoEXT( rhs ) - {} - - DebugUtilsObjectNameInfoEXT& operator=( VkDebugUtilsObjectNameInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DebugUtilsObjectNameInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DebugUtilsObjectNameInfoEXT & setObjectType( vk::ObjectType objectType_ ) - { - objectType = objectType_; - return *this; - } - - DebugUtilsObjectNameInfoEXT & setObjectHandle( uint64_t objectHandle_ ) - { - objectHandle = objectHandle_; - return *this; - } - - DebugUtilsObjectNameInfoEXT & setPObjectName( const char* pObjectName_ ) - { - pObjectName = pObjectName_; - return *this; - } - - operator VkDebugUtilsObjectNameInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDebugUtilsObjectNameInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DebugUtilsObjectNameInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( objectType == rhs.objectType ) - && ( objectHandle == rhs.objectHandle ) - && ( pObjectName == rhs.pObjectName ); - } - - bool operator!=( DebugUtilsObjectNameInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DebugUtilsObjectNameInfoEXT::sType; - }; - static_assert( sizeof( DebugUtilsObjectNameInfoEXT ) == sizeof( VkDebugUtilsObjectNameInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DebugUtilsMessengerCallbackDataEXT - { - protected: - DebugUtilsMessengerCallbackDataEXT( vk::DebugUtilsMessengerCallbackDataFlagsEXT flags_ = vk::DebugUtilsMessengerCallbackDataFlagsEXT(), - const char* pMessageIdName_ = nullptr, - int32_t messageIdNumber_ = 0, - const char* pMessage_ = nullptr, - uint32_t queueLabelCount_ = 0, - const vk::DebugUtilsLabelEXT* pQueueLabels_ = nullptr, - uint32_t cmdBufLabelCount_ = 0, - const vk::DebugUtilsLabelEXT* pCmdBufLabels_ = nullptr, - uint32_t objectCount_ = 0, - const vk::DebugUtilsObjectNameInfoEXT* pObjects_ = nullptr ) - : flags( flags_ ) - , pMessageIdName( pMessageIdName_ ) - , messageIdNumber( messageIdNumber_ ) - , pMessage( pMessage_ ) - , queueLabelCount( queueLabelCount_ ) - , pQueueLabels( pQueueLabels_ ) - , cmdBufLabelCount( cmdBufLabelCount_ ) - , pCmdBufLabels( pCmdBufLabels_ ) - , objectCount( objectCount_ ) - , pObjects( pObjects_ ) - {} - - DebugUtilsMessengerCallbackDataEXT( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DebugUtilsMessengerCallbackDataEXT& operator=( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDebugUtilsMessengerCallbackDataEXT; - const void* pNext = nullptr; - vk::DebugUtilsMessengerCallbackDataFlagsEXT flags; - const char* pMessageIdName; - int32_t messageIdNumber; - const char* pMessage; - uint32_t queueLabelCount; - const vk::DebugUtilsLabelEXT* pQueueLabels; - uint32_t cmdBufLabelCount; - const vk::DebugUtilsLabelEXT* pCmdBufLabels; - uint32_t objectCount; - const vk::DebugUtilsObjectNameInfoEXT* pObjects; - }; - static_assert( sizeof( DebugUtilsMessengerCallbackDataEXT ) == sizeof( VkDebugUtilsMessengerCallbackDataEXT ), "layout struct and wrapper have different size!" ); - } - - struct DebugUtilsMessengerCallbackDataEXT : public layout::DebugUtilsMessengerCallbackDataEXT - { - DebugUtilsMessengerCallbackDataEXT( vk::DebugUtilsMessengerCallbackDataFlagsEXT flags_ = vk::DebugUtilsMessengerCallbackDataFlagsEXT(), - const char* pMessageIdName_ = nullptr, - int32_t messageIdNumber_ = 0, - const char* pMessage_ = nullptr, - uint32_t queueLabelCount_ = 0, - const vk::DebugUtilsLabelEXT* pQueueLabels_ = nullptr, - uint32_t cmdBufLabelCount_ = 0, - const vk::DebugUtilsLabelEXT* pCmdBufLabels_ = nullptr, - uint32_t objectCount_ = 0, - const vk::DebugUtilsObjectNameInfoEXT* pObjects_ = nullptr ) - : layout::DebugUtilsMessengerCallbackDataEXT( flags_, pMessageIdName_, messageIdNumber_, pMessage_, queueLabelCount_, pQueueLabels_, cmdBufLabelCount_, pCmdBufLabels_, objectCount_, pObjects_ ) - {} - - DebugUtilsMessengerCallbackDataEXT( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) - : layout::DebugUtilsMessengerCallbackDataEXT( rhs ) - {} - - DebugUtilsMessengerCallbackDataEXT& operator=( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setFlags( vk::DebugUtilsMessengerCallbackDataFlagsEXT flags_ ) - { - flags = flags_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setPMessageIdName( const char* pMessageIdName_ ) - { - pMessageIdName = pMessageIdName_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setMessageIdNumber( int32_t messageIdNumber_ ) - { - messageIdNumber = messageIdNumber_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setPMessage( const char* pMessage_ ) - { - pMessage = pMessage_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setQueueLabelCount( uint32_t queueLabelCount_ ) - { - queueLabelCount = queueLabelCount_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setPQueueLabels( const vk::DebugUtilsLabelEXT* pQueueLabels_ ) - { - pQueueLabels = pQueueLabels_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setCmdBufLabelCount( uint32_t cmdBufLabelCount_ ) - { - cmdBufLabelCount = cmdBufLabelCount_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setPCmdBufLabels( const vk::DebugUtilsLabelEXT* pCmdBufLabels_ ) - { - pCmdBufLabels = pCmdBufLabels_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setObjectCount( uint32_t objectCount_ ) - { - objectCount = objectCount_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setPObjects( const vk::DebugUtilsObjectNameInfoEXT* pObjects_ ) - { - pObjects = pObjects_; - return *this; - } - - operator VkDebugUtilsMessengerCallbackDataEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDebugUtilsMessengerCallbackDataEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DebugUtilsMessengerCallbackDataEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( pMessageIdName == rhs.pMessageIdName ) - && ( messageIdNumber == rhs.messageIdNumber ) - && ( pMessage == rhs.pMessage ) - && ( queueLabelCount == rhs.queueLabelCount ) - && ( pQueueLabels == rhs.pQueueLabels ) - && ( cmdBufLabelCount == rhs.cmdBufLabelCount ) - && ( pCmdBufLabels == rhs.pCmdBufLabels ) - && ( objectCount == rhs.objectCount ) - && ( pObjects == rhs.pObjects ); - } - - bool operator!=( DebugUtilsMessengerCallbackDataEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DebugUtilsMessengerCallbackDataEXT::sType; - }; - static_assert( sizeof( DebugUtilsMessengerCallbackDataEXT ) == sizeof( VkDebugUtilsMessengerCallbackDataEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DebugUtilsMessengerCreateInfoEXT - { - protected: - DebugUtilsMessengerCreateInfoEXT( vk::DebugUtilsMessengerCreateFlagsEXT flags_ = vk::DebugUtilsMessengerCreateFlagsEXT(), - vk::DebugUtilsMessageSeverityFlagsEXT messageSeverity_ = vk::DebugUtilsMessageSeverityFlagsEXT(), - vk::DebugUtilsMessageTypeFlagsEXT messageType_ = vk::DebugUtilsMessageTypeFlagsEXT(), - PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ = nullptr, - void* pUserData_ = nullptr ) - : flags( flags_ ) - , messageSeverity( messageSeverity_ ) - , messageType( messageType_ ) - , pfnUserCallback( pfnUserCallback_ ) - , pUserData( pUserData_ ) - {} - - DebugUtilsMessengerCreateInfoEXT( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DebugUtilsMessengerCreateInfoEXT& operator=( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDebugUtilsMessengerCreateInfoEXT; - const void* pNext = nullptr; - vk::DebugUtilsMessengerCreateFlagsEXT flags; - vk::DebugUtilsMessageSeverityFlagsEXT messageSeverity; - vk::DebugUtilsMessageTypeFlagsEXT messageType; - PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback; - void* pUserData; - }; - static_assert( sizeof( DebugUtilsMessengerCreateInfoEXT ) == sizeof( VkDebugUtilsMessengerCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct DebugUtilsMessengerCreateInfoEXT : public layout::DebugUtilsMessengerCreateInfoEXT - { - DebugUtilsMessengerCreateInfoEXT( vk::DebugUtilsMessengerCreateFlagsEXT flags_ = vk::DebugUtilsMessengerCreateFlagsEXT(), - vk::DebugUtilsMessageSeverityFlagsEXT messageSeverity_ = vk::DebugUtilsMessageSeverityFlagsEXT(), - vk::DebugUtilsMessageTypeFlagsEXT messageType_ = vk::DebugUtilsMessageTypeFlagsEXT(), - PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ = nullptr, - void* pUserData_ = nullptr ) - : layout::DebugUtilsMessengerCreateInfoEXT( flags_, messageSeverity_, messageType_, pfnUserCallback_, pUserData_ ) - {} - - DebugUtilsMessengerCreateInfoEXT( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) - : layout::DebugUtilsMessengerCreateInfoEXT( rhs ) - {} - - DebugUtilsMessengerCreateInfoEXT& operator=( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DebugUtilsMessengerCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DebugUtilsMessengerCreateInfoEXT & setFlags( vk::DebugUtilsMessengerCreateFlagsEXT flags_ ) - { - flags = flags_; - return *this; - } - - DebugUtilsMessengerCreateInfoEXT & setMessageSeverity( vk::DebugUtilsMessageSeverityFlagsEXT messageSeverity_ ) - { - messageSeverity = messageSeverity_; - return *this; - } - - DebugUtilsMessengerCreateInfoEXT & setMessageType( vk::DebugUtilsMessageTypeFlagsEXT messageType_ ) - { - messageType = messageType_; - return *this; - } - - DebugUtilsMessengerCreateInfoEXT & setPfnUserCallback( PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ ) - { - pfnUserCallback = pfnUserCallback_; - return *this; - } - - DebugUtilsMessengerCreateInfoEXT & setPUserData( void* pUserData_ ) - { - pUserData = pUserData_; - return *this; - } - - operator VkDebugUtilsMessengerCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDebugUtilsMessengerCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DebugUtilsMessengerCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( messageSeverity == rhs.messageSeverity ) - && ( messageType == rhs.messageType ) - && ( pfnUserCallback == rhs.pfnUserCallback ) - && ( pUserData == rhs.pUserData ); - } - - bool operator!=( DebugUtilsMessengerCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DebugUtilsMessengerCreateInfoEXT::sType; - }; - static_assert( sizeof( DebugUtilsMessengerCreateInfoEXT ) == sizeof( VkDebugUtilsMessengerCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DebugUtilsObjectTagInfoEXT - { - protected: - DebugUtilsObjectTagInfoEXT( vk::ObjectType objectType_ = vk::ObjectType::eUnknown, - uint64_t objectHandle_ = 0, - uint64_t tagName_ = 0, - size_t tagSize_ = 0, - const void* pTag_ = nullptr ) - : objectType( objectType_ ) - , objectHandle( objectHandle_ ) - , tagName( tagName_ ) - , tagSize( tagSize_ ) - , pTag( pTag_ ) - {} - - DebugUtilsObjectTagInfoEXT( VkDebugUtilsObjectTagInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DebugUtilsObjectTagInfoEXT& operator=( VkDebugUtilsObjectTagInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDebugUtilsObjectTagInfoEXT; - const void* pNext = nullptr; - vk::ObjectType objectType; - uint64_t objectHandle; - uint64_t tagName; - size_t tagSize; - const void* pTag; - }; - static_assert( sizeof( DebugUtilsObjectTagInfoEXT ) == sizeof( VkDebugUtilsObjectTagInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct DebugUtilsObjectTagInfoEXT : public layout::DebugUtilsObjectTagInfoEXT - { - DebugUtilsObjectTagInfoEXT( vk::ObjectType objectType_ = vk::ObjectType::eUnknown, - uint64_t objectHandle_ = 0, - uint64_t tagName_ = 0, - size_t tagSize_ = 0, - const void* pTag_ = nullptr ) - : layout::DebugUtilsObjectTagInfoEXT( objectType_, objectHandle_, tagName_, tagSize_, pTag_ ) - {} - - DebugUtilsObjectTagInfoEXT( VkDebugUtilsObjectTagInfoEXT const & rhs ) - : layout::DebugUtilsObjectTagInfoEXT( rhs ) - {} - - DebugUtilsObjectTagInfoEXT& operator=( VkDebugUtilsObjectTagInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DebugUtilsObjectTagInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DebugUtilsObjectTagInfoEXT & setObjectType( vk::ObjectType objectType_ ) - { - objectType = objectType_; - return *this; - } - - DebugUtilsObjectTagInfoEXT & setObjectHandle( uint64_t objectHandle_ ) - { - objectHandle = objectHandle_; - return *this; - } - - DebugUtilsObjectTagInfoEXT & setTagName( uint64_t tagName_ ) - { - tagName = tagName_; - return *this; - } - - DebugUtilsObjectTagInfoEXT & setTagSize( size_t tagSize_ ) - { - tagSize = tagSize_; - return *this; - } - - DebugUtilsObjectTagInfoEXT & setPTag( const void* pTag_ ) - { - pTag = pTag_; - return *this; - } - - operator VkDebugUtilsObjectTagInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDebugUtilsObjectTagInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DebugUtilsObjectTagInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( objectType == rhs.objectType ) - && ( objectHandle == rhs.objectHandle ) - && ( tagName == rhs.tagName ) - && ( tagSize == rhs.tagSize ) - && ( pTag == rhs.pTag ); - } - - bool operator!=( DebugUtilsObjectTagInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DebugUtilsObjectTagInfoEXT::sType; - }; - static_assert( sizeof( DebugUtilsObjectTagInfoEXT ) == sizeof( VkDebugUtilsObjectTagInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DedicatedAllocationBufferCreateInfoNV - { - protected: - DedicatedAllocationBufferCreateInfoNV( vk::Bool32 dedicatedAllocation_ = 0 ) - : dedicatedAllocation( dedicatedAllocation_ ) - {} - - DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDedicatedAllocationBufferCreateInfoNV; - const void* pNext = nullptr; - vk::Bool32 dedicatedAllocation; - }; - static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct DedicatedAllocationBufferCreateInfoNV : public layout::DedicatedAllocationBufferCreateInfoNV - { - DedicatedAllocationBufferCreateInfoNV( vk::Bool32 dedicatedAllocation_ = 0 ) - : layout::DedicatedAllocationBufferCreateInfoNV( dedicatedAllocation_ ) - {} - - DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) - : layout::DedicatedAllocationBufferCreateInfoNV( rhs ) - {} - - DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DedicatedAllocationBufferCreateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DedicatedAllocationBufferCreateInfoNV & setDedicatedAllocation( vk::Bool32 dedicatedAllocation_ ) - { - dedicatedAllocation = dedicatedAllocation_; - return *this; - } - - operator VkDedicatedAllocationBufferCreateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDedicatedAllocationBufferCreateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( dedicatedAllocation == rhs.dedicatedAllocation ); - } - - bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DedicatedAllocationBufferCreateInfoNV::sType; - }; - static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DedicatedAllocationImageCreateInfoNV - { - protected: - DedicatedAllocationImageCreateInfoNV( vk::Bool32 dedicatedAllocation_ = 0 ) - : dedicatedAllocation( dedicatedAllocation_ ) - {} - - DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDedicatedAllocationImageCreateInfoNV; - const void* pNext = nullptr; - vk::Bool32 dedicatedAllocation; - }; - static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct DedicatedAllocationImageCreateInfoNV : public layout::DedicatedAllocationImageCreateInfoNV - { - DedicatedAllocationImageCreateInfoNV( vk::Bool32 dedicatedAllocation_ = 0 ) - : layout::DedicatedAllocationImageCreateInfoNV( dedicatedAllocation_ ) - {} - - DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs ) - : layout::DedicatedAllocationImageCreateInfoNV( rhs ) - {} - - DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DedicatedAllocationImageCreateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DedicatedAllocationImageCreateInfoNV & setDedicatedAllocation( vk::Bool32 dedicatedAllocation_ ) - { - dedicatedAllocation = dedicatedAllocation_; - return *this; - } - - operator VkDedicatedAllocationImageCreateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDedicatedAllocationImageCreateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( dedicatedAllocation == rhs.dedicatedAllocation ); - } - - bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DedicatedAllocationImageCreateInfoNV::sType; - }; - static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DedicatedAllocationMemoryAllocateInfoNV - { - protected: - DedicatedAllocationMemoryAllocateInfoNV( vk::Image image_ = vk::Image(), - vk::Buffer buffer_ = vk::Buffer() ) - : image( image_ ) - , buffer( buffer_ ) - {} - - DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDedicatedAllocationMemoryAllocateInfoNV; - const void* pNext = nullptr; - vk::Image image; - vk::Buffer buffer; - }; - static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct DedicatedAllocationMemoryAllocateInfoNV : public layout::DedicatedAllocationMemoryAllocateInfoNV - { - DedicatedAllocationMemoryAllocateInfoNV( vk::Image image_ = vk::Image(), - vk::Buffer buffer_ = vk::Buffer() ) - : layout::DedicatedAllocationMemoryAllocateInfoNV( image_, buffer_ ) - {} - - DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) - : layout::DedicatedAllocationMemoryAllocateInfoNV( rhs ) - {} - - DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DedicatedAllocationMemoryAllocateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DedicatedAllocationMemoryAllocateInfoNV & setImage( vk::Image image_ ) - { - image = image_; - return *this; - } - - DedicatedAllocationMemoryAllocateInfoNV & setBuffer( vk::Buffer buffer_ ) - { - buffer = buffer_; - return *this; - } - - operator VkDedicatedAllocationMemoryAllocateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDedicatedAllocationMemoryAllocateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( image == rhs.image ) - && ( buffer == rhs.buffer ); - } - - bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DedicatedAllocationMemoryAllocateInfoNV::sType; - }; - static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DescriptorBufferInfo - { - DescriptorBufferInfo( vk::Buffer buffer_ = vk::Buffer(), - vk::DeviceSize offset_ = 0, - vk::DeviceSize range_ = 0 ) - : buffer( buffer_ ) - , offset( offset_ ) - , range( range_ ) - {} - - DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DescriptorBufferInfo& operator=( VkDescriptorBufferInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DescriptorBufferInfo & setBuffer( vk::Buffer buffer_ ) - { - buffer = buffer_; - return *this; - } - - DescriptorBufferInfo & setOffset( vk::DeviceSize offset_ ) - { - offset = offset_; - return *this; - } - - DescriptorBufferInfo & setRange( vk::DeviceSize range_ ) - { - range = range_; - return *this; - } - - operator VkDescriptorBufferInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorBufferInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DescriptorBufferInfo const& rhs ) const - { - return ( buffer == rhs.buffer ) - && ( offset == rhs.offset ) - && ( range == rhs.range ); - } - - bool operator!=( DescriptorBufferInfo const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::Buffer buffer; - vk::DeviceSize offset; - vk::DeviceSize range; - }; - static_assert( sizeof( DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DescriptorImageInfo - { - DescriptorImageInfo( vk::Sampler sampler_ = vk::Sampler(), - vk::ImageView imageView_ = vk::ImageView(), - vk::ImageLayout imageLayout_ = vk::ImageLayout::eUndefined ) - : sampler( sampler_ ) - , imageView( imageView_ ) - , imageLayout( imageLayout_ ) - {} - - DescriptorImageInfo( VkDescriptorImageInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DescriptorImageInfo & setSampler( vk::Sampler sampler_ ) - { - sampler = sampler_; - return *this; - } - - DescriptorImageInfo & setImageView( vk::ImageView imageView_ ) - { - imageView = imageView_; - return *this; - } - - DescriptorImageInfo & setImageLayout( vk::ImageLayout imageLayout_ ) - { - imageLayout = imageLayout_; - return *this; - } - - operator VkDescriptorImageInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorImageInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DescriptorImageInfo const& rhs ) const - { - return ( sampler == rhs.sampler ) - && ( imageView == rhs.imageView ) - && ( imageLayout == rhs.imageLayout ); - } - - bool operator!=( DescriptorImageInfo const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::Sampler sampler; - vk::ImageView imageView; - vk::ImageLayout imageLayout; - }; - static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DescriptorPoolSize - { - DescriptorPoolSize( vk::DescriptorType type_ = vk::DescriptorType::eSampler, - uint32_t descriptorCount_ = 0 ) - : type( type_ ) - , descriptorCount( descriptorCount_ ) - {} - - DescriptorPoolSize( VkDescriptorPoolSize const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DescriptorPoolSize & setType( vk::DescriptorType type_ ) - { - type = type_; - return *this; - } - - DescriptorPoolSize & setDescriptorCount( uint32_t descriptorCount_ ) - { - descriptorCount = descriptorCount_; - return *this; - } - - operator VkDescriptorPoolSize const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorPoolSize &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DescriptorPoolSize const& rhs ) const - { - return ( type == rhs.type ) - && ( descriptorCount == rhs.descriptorCount ); - } - - bool operator!=( DescriptorPoolSize const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::DescriptorType type; - uint32_t descriptorCount; - }; - static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DescriptorPoolCreateInfo - { - protected: - DescriptorPoolCreateInfo( vk::DescriptorPoolCreateFlags flags_ = vk::DescriptorPoolCreateFlags(), - uint32_t maxSets_ = 0, - uint32_t poolSizeCount_ = 0, - const vk::DescriptorPoolSize* pPoolSizes_ = nullptr ) - : flags( flags_ ) - , maxSets( maxSets_ ) - , poolSizeCount( poolSizeCount_ ) - , pPoolSizes( pPoolSizes_ ) - {} - - DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDescriptorPoolCreateInfo; - const void* pNext = nullptr; - vk::DescriptorPoolCreateFlags flags; - uint32_t maxSets; - uint32_t poolSizeCount; - const vk::DescriptorPoolSize* pPoolSizes; - }; - static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct DescriptorPoolCreateInfo : public layout::DescriptorPoolCreateInfo - { - DescriptorPoolCreateInfo( vk::DescriptorPoolCreateFlags flags_ = vk::DescriptorPoolCreateFlags(), - uint32_t maxSets_ = 0, - uint32_t poolSizeCount_ = 0, - const vk::DescriptorPoolSize* pPoolSizes_ = nullptr ) - : layout::DescriptorPoolCreateInfo( flags_, maxSets_, poolSizeCount_, pPoolSizes_ ) - {} - - DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs ) - : layout::DescriptorPoolCreateInfo( rhs ) - {} - - DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DescriptorPoolCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DescriptorPoolCreateInfo & setFlags( vk::DescriptorPoolCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - DescriptorPoolCreateInfo & setMaxSets( uint32_t maxSets_ ) - { - maxSets = maxSets_; - return *this; - } - - DescriptorPoolCreateInfo & setPoolSizeCount( uint32_t poolSizeCount_ ) - { - poolSizeCount = poolSizeCount_; - return *this; - } - - DescriptorPoolCreateInfo & setPPoolSizes( const vk::DescriptorPoolSize* pPoolSizes_ ) - { - pPoolSizes = pPoolSizes_; - return *this; - } - - operator VkDescriptorPoolCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorPoolCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DescriptorPoolCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( maxSets == rhs.maxSets ) - && ( poolSizeCount == rhs.poolSizeCount ) - && ( pPoolSizes == rhs.pPoolSizes ); - } - - bool operator!=( DescriptorPoolCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DescriptorPoolCreateInfo::sType; - }; - static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DescriptorPoolInlineUniformBlockCreateInfoEXT - { - protected: - DescriptorPoolInlineUniformBlockCreateInfoEXT( uint32_t maxInlineUniformBlockBindings_ = 0 ) - : maxInlineUniformBlockBindings( maxInlineUniformBlockBindings_ ) - {} - - DescriptorPoolInlineUniformBlockCreateInfoEXT( VkDescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DescriptorPoolInlineUniformBlockCreateInfoEXT& operator=( VkDescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDescriptorPoolInlineUniformBlockCreateInfoEXT; - const void* pNext = nullptr; - uint32_t maxInlineUniformBlockBindings; - }; - static_assert( sizeof( DescriptorPoolInlineUniformBlockCreateInfoEXT ) == sizeof( VkDescriptorPoolInlineUniformBlockCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct DescriptorPoolInlineUniformBlockCreateInfoEXT : public layout::DescriptorPoolInlineUniformBlockCreateInfoEXT - { - DescriptorPoolInlineUniformBlockCreateInfoEXT( uint32_t maxInlineUniformBlockBindings_ = 0 ) - : layout::DescriptorPoolInlineUniformBlockCreateInfoEXT( maxInlineUniformBlockBindings_ ) - {} - - DescriptorPoolInlineUniformBlockCreateInfoEXT( VkDescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) - : layout::DescriptorPoolInlineUniformBlockCreateInfoEXT( rhs ) - {} - - DescriptorPoolInlineUniformBlockCreateInfoEXT& operator=( VkDescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DescriptorPoolInlineUniformBlockCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DescriptorPoolInlineUniformBlockCreateInfoEXT & setMaxInlineUniformBlockBindings( uint32_t maxInlineUniformBlockBindings_ ) - { - maxInlineUniformBlockBindings = maxInlineUniformBlockBindings_; - return *this; - } - - operator VkDescriptorPoolInlineUniformBlockCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorPoolInlineUniformBlockCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DescriptorPoolInlineUniformBlockCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxInlineUniformBlockBindings == rhs.maxInlineUniformBlockBindings ); - } - - bool operator!=( DescriptorPoolInlineUniformBlockCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DescriptorPoolInlineUniformBlockCreateInfoEXT::sType; - }; - static_assert( sizeof( DescriptorPoolInlineUniformBlockCreateInfoEXT ) == sizeof( VkDescriptorPoolInlineUniformBlockCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DescriptorSetAllocateInfo - { - protected: - DescriptorSetAllocateInfo( vk::DescriptorPool descriptorPool_ = vk::DescriptorPool(), - uint32_t descriptorSetCount_ = 0, - const vk::DescriptorSetLayout* pSetLayouts_ = nullptr ) - : descriptorPool( descriptorPool_ ) - , descriptorSetCount( descriptorSetCount_ ) - , pSetLayouts( pSetLayouts_ ) - {} - - DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDescriptorSetAllocateInfo; - const void* pNext = nullptr; - vk::DescriptorPool descriptorPool; - uint32_t descriptorSetCount; - const vk::DescriptorSetLayout* pSetLayouts; - }; - static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "layout struct and wrapper have different size!" ); - } - - struct DescriptorSetAllocateInfo : public layout::DescriptorSetAllocateInfo - { - DescriptorSetAllocateInfo( vk::DescriptorPool descriptorPool_ = vk::DescriptorPool(), - uint32_t descriptorSetCount_ = 0, - const vk::DescriptorSetLayout* pSetLayouts_ = nullptr ) - : layout::DescriptorSetAllocateInfo( descriptorPool_, descriptorSetCount_, pSetLayouts_ ) - {} - - DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs ) - : layout::DescriptorSetAllocateInfo( rhs ) - {} - - DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DescriptorSetAllocateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DescriptorSetAllocateInfo & setDescriptorPool( vk::DescriptorPool descriptorPool_ ) - { - descriptorPool = descriptorPool_; - return *this; - } - - DescriptorSetAllocateInfo & setDescriptorSetCount( uint32_t descriptorSetCount_ ) - { - descriptorSetCount = descriptorSetCount_; - return *this; - } - - DescriptorSetAllocateInfo & setPSetLayouts( const vk::DescriptorSetLayout* pSetLayouts_ ) - { - pSetLayouts = pSetLayouts_; - return *this; - } - - operator VkDescriptorSetAllocateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorSetAllocateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DescriptorSetAllocateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( descriptorPool == rhs.descriptorPool ) - && ( descriptorSetCount == rhs.descriptorSetCount ) - && ( pSetLayouts == rhs.pSetLayouts ); - } - - bool operator!=( DescriptorSetAllocateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DescriptorSetAllocateInfo::sType; - }; - static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DescriptorSetLayoutBinding - { - DescriptorSetLayoutBinding( uint32_t binding_ = 0, - vk::DescriptorType descriptorType_ = vk::DescriptorType::eSampler, - uint32_t descriptorCount_ = 0, - vk::ShaderStageFlags stageFlags_ = vk::ShaderStageFlags(), - const vk::Sampler* pImmutableSamplers_ = nullptr ) - : binding( binding_ ) - , descriptorType( descriptorType_ ) - , descriptorCount( descriptorCount_ ) - , stageFlags( stageFlags_ ) - , pImmutableSamplers( pImmutableSamplers_ ) - {} - - DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DescriptorSetLayoutBinding & setBinding( uint32_t binding_ ) - { - binding = binding_; - return *this; - } - - DescriptorSetLayoutBinding & setDescriptorType( vk::DescriptorType descriptorType_ ) - { - descriptorType = descriptorType_; - return *this; - } - - DescriptorSetLayoutBinding & setDescriptorCount( uint32_t descriptorCount_ ) - { - descriptorCount = descriptorCount_; - return *this; - } - - DescriptorSetLayoutBinding & setStageFlags( vk::ShaderStageFlags stageFlags_ ) - { - stageFlags = stageFlags_; - return *this; - } - - DescriptorSetLayoutBinding & setPImmutableSamplers( const vk::Sampler* pImmutableSamplers_ ) - { - pImmutableSamplers = pImmutableSamplers_; - return *this; - } - - operator VkDescriptorSetLayoutBinding const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorSetLayoutBinding &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DescriptorSetLayoutBinding const& rhs ) const - { - return ( binding == rhs.binding ) - && ( descriptorType == rhs.descriptorType ) - && ( descriptorCount == rhs.descriptorCount ) - && ( stageFlags == rhs.stageFlags ) - && ( pImmutableSamplers == rhs.pImmutableSamplers ); - } - - bool operator!=( DescriptorSetLayoutBinding const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t binding; - vk::DescriptorType descriptorType; - uint32_t descriptorCount; - vk::ShaderStageFlags stageFlags; - const vk::Sampler* pImmutableSamplers; - }; - static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DescriptorSetLayoutBindingFlagsCreateInfoEXT - { - protected: - DescriptorSetLayoutBindingFlagsCreateInfoEXT( uint32_t bindingCount_ = 0, - const vk::DescriptorBindingFlagsEXT* pBindingFlags_ = nullptr ) - : bindingCount( bindingCount_ ) - , pBindingFlags( pBindingFlags_ ) - {} - - DescriptorSetLayoutBindingFlagsCreateInfoEXT( VkDescriptorSetLayoutBindingFlagsCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DescriptorSetLayoutBindingFlagsCreateInfoEXT& operator=( VkDescriptorSetLayoutBindingFlagsCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfoEXT; - const void* pNext = nullptr; - uint32_t bindingCount; - const vk::DescriptorBindingFlagsEXT* pBindingFlags; - }; - static_assert( sizeof( DescriptorSetLayoutBindingFlagsCreateInfoEXT ) == sizeof( VkDescriptorSetLayoutBindingFlagsCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct DescriptorSetLayoutBindingFlagsCreateInfoEXT : public layout::DescriptorSetLayoutBindingFlagsCreateInfoEXT - { - DescriptorSetLayoutBindingFlagsCreateInfoEXT( uint32_t bindingCount_ = 0, - const vk::DescriptorBindingFlagsEXT* pBindingFlags_ = nullptr ) - : layout::DescriptorSetLayoutBindingFlagsCreateInfoEXT( bindingCount_, pBindingFlags_ ) - {} - - DescriptorSetLayoutBindingFlagsCreateInfoEXT( VkDescriptorSetLayoutBindingFlagsCreateInfoEXT const & rhs ) - : layout::DescriptorSetLayoutBindingFlagsCreateInfoEXT( rhs ) - {} - - DescriptorSetLayoutBindingFlagsCreateInfoEXT& operator=( VkDescriptorSetLayoutBindingFlagsCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DescriptorSetLayoutBindingFlagsCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DescriptorSetLayoutBindingFlagsCreateInfoEXT & setBindingCount( uint32_t bindingCount_ ) - { - bindingCount = bindingCount_; - return *this; - } - - DescriptorSetLayoutBindingFlagsCreateInfoEXT & setPBindingFlags( const vk::DescriptorBindingFlagsEXT* pBindingFlags_ ) - { - pBindingFlags = pBindingFlags_; - return *this; - } - - operator VkDescriptorSetLayoutBindingFlagsCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorSetLayoutBindingFlagsCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DescriptorSetLayoutBindingFlagsCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( bindingCount == rhs.bindingCount ) - && ( pBindingFlags == rhs.pBindingFlags ); - } - - bool operator!=( DescriptorSetLayoutBindingFlagsCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DescriptorSetLayoutBindingFlagsCreateInfoEXT::sType; - }; - static_assert( sizeof( DescriptorSetLayoutBindingFlagsCreateInfoEXT ) == sizeof( VkDescriptorSetLayoutBindingFlagsCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DescriptorSetLayoutCreateInfo - { - protected: - DescriptorSetLayoutCreateInfo( vk::DescriptorSetLayoutCreateFlags flags_ = vk::DescriptorSetLayoutCreateFlags(), - uint32_t bindingCount_ = 0, - const vk::DescriptorSetLayoutBinding* pBindings_ = nullptr ) - : flags( flags_ ) - , bindingCount( bindingCount_ ) - , pBindings( pBindings_ ) - {} - - DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDescriptorSetLayoutCreateInfo; - const void* pNext = nullptr; - vk::DescriptorSetLayoutCreateFlags flags; - uint32_t bindingCount; - const vk::DescriptorSetLayoutBinding* pBindings; - }; - static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct DescriptorSetLayoutCreateInfo : public layout::DescriptorSetLayoutCreateInfo - { - DescriptorSetLayoutCreateInfo( vk::DescriptorSetLayoutCreateFlags flags_ = vk::DescriptorSetLayoutCreateFlags(), - uint32_t bindingCount_ = 0, - const vk::DescriptorSetLayoutBinding* pBindings_ = nullptr ) - : layout::DescriptorSetLayoutCreateInfo( flags_, bindingCount_, pBindings_ ) - {} - - DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs ) - : layout::DescriptorSetLayoutCreateInfo( rhs ) - {} - - DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DescriptorSetLayoutCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DescriptorSetLayoutCreateInfo & setFlags( vk::DescriptorSetLayoutCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - DescriptorSetLayoutCreateInfo & setBindingCount( uint32_t bindingCount_ ) - { - bindingCount = bindingCount_; - return *this; - } - - DescriptorSetLayoutCreateInfo & setPBindings( const vk::DescriptorSetLayoutBinding* pBindings_ ) - { - pBindings = pBindings_; - return *this; - } - - operator VkDescriptorSetLayoutCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorSetLayoutCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( bindingCount == rhs.bindingCount ) - && ( pBindings == rhs.pBindings ); - } - - bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DescriptorSetLayoutCreateInfo::sType; - }; - static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DescriptorSetLayoutSupport - { - protected: - DescriptorSetLayoutSupport( vk::Bool32 supported_ = 0 ) - : supported( supported_ ) - {} - - DescriptorSetLayoutSupport( VkDescriptorSetLayoutSupport const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DescriptorSetLayoutSupport& operator=( VkDescriptorSetLayoutSupport const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDescriptorSetLayoutSupport; - void* pNext = nullptr; - vk::Bool32 supported; - }; - static_assert( sizeof( DescriptorSetLayoutSupport ) == sizeof( VkDescriptorSetLayoutSupport ), "layout struct and wrapper have different size!" ); - } - - struct DescriptorSetLayoutSupport : public layout::DescriptorSetLayoutSupport - { - operator VkDescriptorSetLayoutSupport const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorSetLayoutSupport &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DescriptorSetLayoutSupport const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( supported == rhs.supported ); - } - - bool operator!=( DescriptorSetLayoutSupport const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DescriptorSetLayoutSupport::sType; - }; - static_assert( sizeof( DescriptorSetLayoutSupport ) == sizeof( VkDescriptorSetLayoutSupport ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DescriptorSetVariableDescriptorCountAllocateInfoEXT - { - protected: - DescriptorSetVariableDescriptorCountAllocateInfoEXT( uint32_t descriptorSetCount_ = 0, - const uint32_t* pDescriptorCounts_ = nullptr ) - : descriptorSetCount( descriptorSetCount_ ) - , pDescriptorCounts( pDescriptorCounts_ ) - {} - - DescriptorSetVariableDescriptorCountAllocateInfoEXT( VkDescriptorSetVariableDescriptorCountAllocateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DescriptorSetVariableDescriptorCountAllocateInfoEXT& operator=( VkDescriptorSetVariableDescriptorCountAllocateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfoEXT; - const void* pNext = nullptr; - uint32_t descriptorSetCount; - const uint32_t* pDescriptorCounts; - }; - static_assert( sizeof( DescriptorSetVariableDescriptorCountAllocateInfoEXT ) == sizeof( VkDescriptorSetVariableDescriptorCountAllocateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct DescriptorSetVariableDescriptorCountAllocateInfoEXT : public layout::DescriptorSetVariableDescriptorCountAllocateInfoEXT - { - DescriptorSetVariableDescriptorCountAllocateInfoEXT( uint32_t descriptorSetCount_ = 0, - const uint32_t* pDescriptorCounts_ = nullptr ) - : layout::DescriptorSetVariableDescriptorCountAllocateInfoEXT( descriptorSetCount_, pDescriptorCounts_ ) - {} - - DescriptorSetVariableDescriptorCountAllocateInfoEXT( VkDescriptorSetVariableDescriptorCountAllocateInfoEXT const & rhs ) - : layout::DescriptorSetVariableDescriptorCountAllocateInfoEXT( rhs ) - {} - - DescriptorSetVariableDescriptorCountAllocateInfoEXT& operator=( VkDescriptorSetVariableDescriptorCountAllocateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DescriptorSetVariableDescriptorCountAllocateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DescriptorSetVariableDescriptorCountAllocateInfoEXT & setDescriptorSetCount( uint32_t descriptorSetCount_ ) - { - descriptorSetCount = descriptorSetCount_; - return *this; - } - - DescriptorSetVariableDescriptorCountAllocateInfoEXT & setPDescriptorCounts( const uint32_t* pDescriptorCounts_ ) - { - pDescriptorCounts = pDescriptorCounts_; - return *this; - } - - operator VkDescriptorSetVariableDescriptorCountAllocateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorSetVariableDescriptorCountAllocateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DescriptorSetVariableDescriptorCountAllocateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( descriptorSetCount == rhs.descriptorSetCount ) - && ( pDescriptorCounts == rhs.pDescriptorCounts ); - } - - bool operator!=( DescriptorSetVariableDescriptorCountAllocateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DescriptorSetVariableDescriptorCountAllocateInfoEXT::sType; - }; - static_assert( sizeof( DescriptorSetVariableDescriptorCountAllocateInfoEXT ) == sizeof( VkDescriptorSetVariableDescriptorCountAllocateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DescriptorSetVariableDescriptorCountLayoutSupportEXT - { - protected: - DescriptorSetVariableDescriptorCountLayoutSupportEXT( uint32_t maxVariableDescriptorCount_ = 0 ) - : maxVariableDescriptorCount( maxVariableDescriptorCount_ ) - {} - - DescriptorSetVariableDescriptorCountLayoutSupportEXT( VkDescriptorSetVariableDescriptorCountLayoutSupportEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DescriptorSetVariableDescriptorCountLayoutSupportEXT& operator=( VkDescriptorSetVariableDescriptorCountLayoutSupportEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupportEXT; - void* pNext = nullptr; - uint32_t maxVariableDescriptorCount; - }; - static_assert( sizeof( DescriptorSetVariableDescriptorCountLayoutSupportEXT ) == sizeof( VkDescriptorSetVariableDescriptorCountLayoutSupportEXT ), "layout struct and wrapper have different size!" ); - } - - struct DescriptorSetVariableDescriptorCountLayoutSupportEXT : public layout::DescriptorSetVariableDescriptorCountLayoutSupportEXT - { - operator VkDescriptorSetVariableDescriptorCountLayoutSupportEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorSetVariableDescriptorCountLayoutSupportEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DescriptorSetVariableDescriptorCountLayoutSupportEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxVariableDescriptorCount == rhs.maxVariableDescriptorCount ); - } - - bool operator!=( DescriptorSetVariableDescriptorCountLayoutSupportEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DescriptorSetVariableDescriptorCountLayoutSupportEXT::sType; - }; - static_assert( sizeof( DescriptorSetVariableDescriptorCountLayoutSupportEXT ) == sizeof( VkDescriptorSetVariableDescriptorCountLayoutSupportEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DescriptorUpdateTemplateEntry - { - DescriptorUpdateTemplateEntry( uint32_t dstBinding_ = 0, - uint32_t dstArrayElement_ = 0, - uint32_t descriptorCount_ = 0, - vk::DescriptorType descriptorType_ = vk::DescriptorType::eSampler, - size_t offset_ = 0, - size_t stride_ = 0 ) - : dstBinding( dstBinding_ ) - , dstArrayElement( dstArrayElement_ ) - , descriptorCount( descriptorCount_ ) - , descriptorType( descriptorType_ ) - , offset( offset_ ) - , stride( stride_ ) - {} - - DescriptorUpdateTemplateEntry( VkDescriptorUpdateTemplateEntry const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DescriptorUpdateTemplateEntry& operator=( VkDescriptorUpdateTemplateEntry const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DescriptorUpdateTemplateEntry & setDstBinding( uint32_t dstBinding_ ) - { - dstBinding = dstBinding_; - return *this; - } - - DescriptorUpdateTemplateEntry & setDstArrayElement( uint32_t dstArrayElement_ ) - { - dstArrayElement = dstArrayElement_; - return *this; - } - - DescriptorUpdateTemplateEntry & setDescriptorCount( uint32_t descriptorCount_ ) - { - descriptorCount = descriptorCount_; - return *this; - } - - DescriptorUpdateTemplateEntry & setDescriptorType( vk::DescriptorType descriptorType_ ) - { - descriptorType = descriptorType_; - return *this; - } - - DescriptorUpdateTemplateEntry & setOffset( size_t offset_ ) - { - offset = offset_; - return *this; - } - - DescriptorUpdateTemplateEntry & setStride( size_t stride_ ) - { - stride = stride_; - return *this; - } - - operator VkDescriptorUpdateTemplateEntry const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorUpdateTemplateEntry &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DescriptorUpdateTemplateEntry const& rhs ) const - { - return ( dstBinding == rhs.dstBinding ) - && ( dstArrayElement == rhs.dstArrayElement ) - && ( descriptorCount == rhs.descriptorCount ) - && ( descriptorType == rhs.descriptorType ) - && ( offset == rhs.offset ) - && ( stride == rhs.stride ); - } - - bool operator!=( DescriptorUpdateTemplateEntry const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t dstBinding; - uint32_t dstArrayElement; - uint32_t descriptorCount; - vk::DescriptorType descriptorType; - size_t offset; - size_t stride; - }; - static_assert( sizeof( DescriptorUpdateTemplateEntry ) == sizeof( VkDescriptorUpdateTemplateEntry ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DescriptorUpdateTemplateCreateInfo - { - protected: - DescriptorUpdateTemplateCreateInfo( vk::DescriptorUpdateTemplateCreateFlags flags_ = vk::DescriptorUpdateTemplateCreateFlags(), - uint32_t descriptorUpdateEntryCount_ = 0, - const vk::DescriptorUpdateTemplateEntry* pDescriptorUpdateEntries_ = nullptr, - vk::DescriptorUpdateTemplateType templateType_ = vk::DescriptorUpdateTemplateType::eDescriptorSet, - vk::DescriptorSetLayout descriptorSetLayout_ = vk::DescriptorSetLayout(), - vk::PipelineBindPoint pipelineBindPoint_ = vk::PipelineBindPoint::eGraphics, - vk::PipelineLayout pipelineLayout_ = vk::PipelineLayout(), - uint32_t set_ = 0 ) - : flags( flags_ ) - , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ ) - , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ ) - , templateType( templateType_ ) - , descriptorSetLayout( descriptorSetLayout_ ) - , pipelineBindPoint( pipelineBindPoint_ ) - , pipelineLayout( pipelineLayout_ ) - , set( set_ ) - {} - - DescriptorUpdateTemplateCreateInfo( VkDescriptorUpdateTemplateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DescriptorUpdateTemplateCreateInfo& operator=( VkDescriptorUpdateTemplateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDescriptorUpdateTemplateCreateInfo; - const void* pNext = nullptr; - vk::DescriptorUpdateTemplateCreateFlags flags; - uint32_t descriptorUpdateEntryCount; - const vk::DescriptorUpdateTemplateEntry* pDescriptorUpdateEntries; - vk::DescriptorUpdateTemplateType templateType; - vk::DescriptorSetLayout descriptorSetLayout; - vk::PipelineBindPoint pipelineBindPoint; - vk::PipelineLayout pipelineLayout; - uint32_t set; - }; - static_assert( sizeof( DescriptorUpdateTemplateCreateInfo ) == sizeof( VkDescriptorUpdateTemplateCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct DescriptorUpdateTemplateCreateInfo : public layout::DescriptorUpdateTemplateCreateInfo - { - DescriptorUpdateTemplateCreateInfo( vk::DescriptorUpdateTemplateCreateFlags flags_ = vk::DescriptorUpdateTemplateCreateFlags(), - uint32_t descriptorUpdateEntryCount_ = 0, - const vk::DescriptorUpdateTemplateEntry* pDescriptorUpdateEntries_ = nullptr, - vk::DescriptorUpdateTemplateType templateType_ = vk::DescriptorUpdateTemplateType::eDescriptorSet, - vk::DescriptorSetLayout descriptorSetLayout_ = vk::DescriptorSetLayout(), - vk::PipelineBindPoint pipelineBindPoint_ = vk::PipelineBindPoint::eGraphics, - vk::PipelineLayout pipelineLayout_ = vk::PipelineLayout(), - uint32_t set_ = 0 ) - : layout::DescriptorUpdateTemplateCreateInfo( flags_, descriptorUpdateEntryCount_, pDescriptorUpdateEntries_, templateType_, descriptorSetLayout_, pipelineBindPoint_, pipelineLayout_, set_ ) - {} - - DescriptorUpdateTemplateCreateInfo( VkDescriptorUpdateTemplateCreateInfo const & rhs ) - : layout::DescriptorUpdateTemplateCreateInfo( rhs ) - {} - - DescriptorUpdateTemplateCreateInfo& operator=( VkDescriptorUpdateTemplateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setFlags( vk::DescriptorUpdateTemplateCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ ) - { - descriptorUpdateEntryCount = descriptorUpdateEntryCount_; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setPDescriptorUpdateEntries( const vk::DescriptorUpdateTemplateEntry* pDescriptorUpdateEntries_ ) - { - pDescriptorUpdateEntries = pDescriptorUpdateEntries_; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setTemplateType( vk::DescriptorUpdateTemplateType templateType_ ) - { - templateType = templateType_; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setDescriptorSetLayout( vk::DescriptorSetLayout descriptorSetLayout_ ) - { - descriptorSetLayout = descriptorSetLayout_; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setPipelineBindPoint( vk::PipelineBindPoint pipelineBindPoint_ ) - { - pipelineBindPoint = pipelineBindPoint_; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setPipelineLayout( vk::PipelineLayout pipelineLayout_ ) - { - pipelineLayout = pipelineLayout_; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setSet( uint32_t set_ ) - { - set = set_; - return *this; - } - - operator VkDescriptorUpdateTemplateCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorUpdateTemplateCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DescriptorUpdateTemplateCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount ) - && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries ) - && ( templateType == rhs.templateType ) - && ( descriptorSetLayout == rhs.descriptorSetLayout ) - && ( pipelineBindPoint == rhs.pipelineBindPoint ) - && ( pipelineLayout == rhs.pipelineLayout ) - && ( set == rhs.set ); - } - - bool operator!=( DescriptorUpdateTemplateCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DescriptorUpdateTemplateCreateInfo::sType; - }; - static_assert( sizeof( DescriptorUpdateTemplateCreateInfo ) == sizeof( VkDescriptorUpdateTemplateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceQueueCreateInfo - { - protected: - DeviceQueueCreateInfo( vk::DeviceQueueCreateFlags flags_ = vk::DeviceQueueCreateFlags(), - uint32_t queueFamilyIndex_ = 0, - uint32_t queueCount_ = 0, - const float* pQueuePriorities_ = nullptr ) - : flags( flags_ ) - , queueFamilyIndex( queueFamilyIndex_ ) - , queueCount( queueCount_ ) - , pQueuePriorities( pQueuePriorities_ ) - {} - - DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceQueueCreateInfo; - const void* pNext = nullptr; - vk::DeviceQueueCreateFlags flags; - uint32_t queueFamilyIndex; - uint32_t queueCount; - const float* pQueuePriorities; - }; - static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct DeviceQueueCreateInfo : public layout::DeviceQueueCreateInfo - { - DeviceQueueCreateInfo( vk::DeviceQueueCreateFlags flags_ = vk::DeviceQueueCreateFlags(), - uint32_t queueFamilyIndex_ = 0, - uint32_t queueCount_ = 0, - const float* pQueuePriorities_ = nullptr ) - : layout::DeviceQueueCreateInfo( flags_, queueFamilyIndex_, queueCount_, pQueuePriorities_ ) - {} - - DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs ) - : layout::DeviceQueueCreateInfo( rhs ) - {} - - DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DeviceQueueCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DeviceQueueCreateInfo & setFlags( vk::DeviceQueueCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - DeviceQueueCreateInfo & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) - { - queueFamilyIndex = queueFamilyIndex_; - return *this; - } - - DeviceQueueCreateInfo & setQueueCount( uint32_t queueCount_ ) - { - queueCount = queueCount_; - return *this; - } - - DeviceQueueCreateInfo & setPQueuePriorities( const float* pQueuePriorities_ ) - { - pQueuePriorities = pQueuePriorities_; - return *this; - } - - operator VkDeviceQueueCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceQueueCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceQueueCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( queueFamilyIndex == rhs.queueFamilyIndex ) - && ( queueCount == rhs.queueCount ) - && ( pQueuePriorities == rhs.pQueuePriorities ); - } - - bool operator!=( DeviceQueueCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceQueueCreateInfo::sType; - }; - static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PhysicalDeviceFeatures - { - PhysicalDeviceFeatures( vk::Bool32 robustBufferAccess_ = 0, - vk::Bool32 fullDrawIndexUint32_ = 0, - vk::Bool32 imageCubeArray_ = 0, - vk::Bool32 independentBlend_ = 0, - vk::Bool32 geometryShader_ = 0, - vk::Bool32 tessellationShader_ = 0, - vk::Bool32 sampleRateShading_ = 0, - vk::Bool32 dualSrcBlend_ = 0, - vk::Bool32 logicOp_ = 0, - vk::Bool32 multiDrawIndirect_ = 0, - vk::Bool32 drawIndirectFirstInstance_ = 0, - vk::Bool32 depthClamp_ = 0, - vk::Bool32 depthBiasClamp_ = 0, - vk::Bool32 fillModeNonSolid_ = 0, - vk::Bool32 depthBounds_ = 0, - vk::Bool32 wideLines_ = 0, - vk::Bool32 largePoints_ = 0, - vk::Bool32 alphaToOne_ = 0, - vk::Bool32 multiViewport_ = 0, - vk::Bool32 samplerAnisotropy_ = 0, - vk::Bool32 textureCompressionETC2_ = 0, - vk::Bool32 textureCompressionASTC_LDR_ = 0, - vk::Bool32 textureCompressionBC_ = 0, - vk::Bool32 occlusionQueryPrecise_ = 0, - vk::Bool32 pipelineStatisticsQuery_ = 0, - vk::Bool32 vertexPipelineStoresAndAtomics_ = 0, - vk::Bool32 fragmentStoresAndAtomics_ = 0, - vk::Bool32 shaderTessellationAndGeometryPointSize_ = 0, - vk::Bool32 shaderImageGatherExtended_ = 0, - vk::Bool32 shaderStorageImageExtendedFormats_ = 0, - vk::Bool32 shaderStorageImageMultisample_ = 0, - vk::Bool32 shaderStorageImageReadWithoutFormat_ = 0, - vk::Bool32 shaderStorageImageWriteWithoutFormat_ = 0, - vk::Bool32 shaderUniformBufferArrayDynamicIndexing_ = 0, - vk::Bool32 shaderSampledImageArrayDynamicIndexing_ = 0, - vk::Bool32 shaderStorageBufferArrayDynamicIndexing_ = 0, - vk::Bool32 shaderStorageImageArrayDynamicIndexing_ = 0, - vk::Bool32 shaderClipDistance_ = 0, - vk::Bool32 shaderCullDistance_ = 0, - vk::Bool32 shaderFloat64_ = 0, - vk::Bool32 shaderInt64_ = 0, - vk::Bool32 shaderInt16_ = 0, - vk::Bool32 shaderResourceResidency_ = 0, - vk::Bool32 shaderResourceMinLod_ = 0, - vk::Bool32 sparseBinding_ = 0, - vk::Bool32 sparseResidencyBuffer_ = 0, - vk::Bool32 sparseResidencyImage2D_ = 0, - vk::Bool32 sparseResidencyImage3D_ = 0, - vk::Bool32 sparseResidency2Samples_ = 0, - vk::Bool32 sparseResidency4Samples_ = 0, - vk::Bool32 sparseResidency8Samples_ = 0, - vk::Bool32 sparseResidency16Samples_ = 0, - vk::Bool32 sparseResidencyAliased_ = 0, - vk::Bool32 variableMultisampleRate_ = 0, - vk::Bool32 inheritedQueries_ = 0 ) - : robustBufferAccess( robustBufferAccess_ ) - , fullDrawIndexUint32( fullDrawIndexUint32_ ) - , imageCubeArray( imageCubeArray_ ) - , independentBlend( independentBlend_ ) - , geometryShader( geometryShader_ ) - , tessellationShader( tessellationShader_ ) - , sampleRateShading( sampleRateShading_ ) - , dualSrcBlend( dualSrcBlend_ ) - , logicOp( logicOp_ ) - , multiDrawIndirect( multiDrawIndirect_ ) - , drawIndirectFirstInstance( drawIndirectFirstInstance_ ) - , depthClamp( depthClamp_ ) - , depthBiasClamp( depthBiasClamp_ ) - , fillModeNonSolid( fillModeNonSolid_ ) - , depthBounds( depthBounds_ ) - , wideLines( wideLines_ ) - , largePoints( largePoints_ ) - , alphaToOne( alphaToOne_ ) - , multiViewport( multiViewport_ ) - , samplerAnisotropy( samplerAnisotropy_ ) - , textureCompressionETC2( textureCompressionETC2_ ) - , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ ) - , textureCompressionBC( textureCompressionBC_ ) - , occlusionQueryPrecise( occlusionQueryPrecise_ ) - , pipelineStatisticsQuery( pipelineStatisticsQuery_ ) - , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ ) - , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ ) - , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ ) - , shaderImageGatherExtended( shaderImageGatherExtended_ ) - , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ ) - , shaderStorageImageMultisample( shaderStorageImageMultisample_ ) - , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ ) - , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ ) - , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ ) - , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ ) - , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ ) - , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ ) - , shaderClipDistance( shaderClipDistance_ ) - , shaderCullDistance( shaderCullDistance_ ) - , shaderFloat64( shaderFloat64_ ) - , shaderInt64( shaderInt64_ ) - , shaderInt16( shaderInt16_ ) - , shaderResourceResidency( shaderResourceResidency_ ) - , shaderResourceMinLod( shaderResourceMinLod_ ) - , sparseBinding( sparseBinding_ ) - , sparseResidencyBuffer( sparseResidencyBuffer_ ) - , sparseResidencyImage2D( sparseResidencyImage2D_ ) - , sparseResidencyImage3D( sparseResidencyImage3D_ ) - , sparseResidency2Samples( sparseResidency2Samples_ ) - , sparseResidency4Samples( sparseResidency4Samples_ ) - , sparseResidency8Samples( sparseResidency8Samples_ ) - , sparseResidency16Samples( sparseResidency16Samples_ ) - , sparseResidencyAliased( sparseResidencyAliased_ ) - , variableMultisampleRate( variableMultisampleRate_ ) - , inheritedQueries( inheritedQueries_ ) - {} - - PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceFeatures& operator=( VkPhysicalDeviceFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceFeatures & setRobustBufferAccess( vk::Bool32 robustBufferAccess_ ) - { - robustBufferAccess = robustBufferAccess_; - return *this; - } - - PhysicalDeviceFeatures & setFullDrawIndexUint32( vk::Bool32 fullDrawIndexUint32_ ) - { - fullDrawIndexUint32 = fullDrawIndexUint32_; - return *this; - } - - PhysicalDeviceFeatures & setImageCubeArray( vk::Bool32 imageCubeArray_ ) - { - imageCubeArray = imageCubeArray_; - return *this; - } - - PhysicalDeviceFeatures & setIndependentBlend( vk::Bool32 independentBlend_ ) - { - independentBlend = independentBlend_; - return *this; - } - - PhysicalDeviceFeatures & setGeometryShader( vk::Bool32 geometryShader_ ) - { - geometryShader = geometryShader_; - return *this; - } - - PhysicalDeviceFeatures & setTessellationShader( vk::Bool32 tessellationShader_ ) - { - tessellationShader = tessellationShader_; - return *this; - } - - PhysicalDeviceFeatures & setSampleRateShading( vk::Bool32 sampleRateShading_ ) - { - sampleRateShading = sampleRateShading_; - return *this; - } - - PhysicalDeviceFeatures & setDualSrcBlend( vk::Bool32 dualSrcBlend_ ) - { - dualSrcBlend = dualSrcBlend_; - return *this; - } - - PhysicalDeviceFeatures & setLogicOp( vk::Bool32 logicOp_ ) - { - logicOp = logicOp_; - return *this; - } - - PhysicalDeviceFeatures & setMultiDrawIndirect( vk::Bool32 multiDrawIndirect_ ) - { - multiDrawIndirect = multiDrawIndirect_; - return *this; - } - - PhysicalDeviceFeatures & setDrawIndirectFirstInstance( vk::Bool32 drawIndirectFirstInstance_ ) - { - drawIndirectFirstInstance = drawIndirectFirstInstance_; - return *this; - } - - PhysicalDeviceFeatures & setDepthClamp( vk::Bool32 depthClamp_ ) - { - depthClamp = depthClamp_; - return *this; - } - - PhysicalDeviceFeatures & setDepthBiasClamp( vk::Bool32 depthBiasClamp_ ) - { - depthBiasClamp = depthBiasClamp_; - return *this; - } - - PhysicalDeviceFeatures & setFillModeNonSolid( vk::Bool32 fillModeNonSolid_ ) - { - fillModeNonSolid = fillModeNonSolid_; - return *this; - } - - PhysicalDeviceFeatures & setDepthBounds( vk::Bool32 depthBounds_ ) - { - depthBounds = depthBounds_; - return *this; - } - - PhysicalDeviceFeatures & setWideLines( vk::Bool32 wideLines_ ) - { - wideLines = wideLines_; - return *this; - } - - PhysicalDeviceFeatures & setLargePoints( vk::Bool32 largePoints_ ) - { - largePoints = largePoints_; - return *this; - } - - PhysicalDeviceFeatures & setAlphaToOne( vk::Bool32 alphaToOne_ ) - { - alphaToOne = alphaToOne_; - return *this; - } - - PhysicalDeviceFeatures & setMultiViewport( vk::Bool32 multiViewport_ ) - { - multiViewport = multiViewport_; - return *this; - } - - PhysicalDeviceFeatures & setSamplerAnisotropy( vk::Bool32 samplerAnisotropy_ ) - { - samplerAnisotropy = samplerAnisotropy_; - return *this; - } - - PhysicalDeviceFeatures & setTextureCompressionETC2( vk::Bool32 textureCompressionETC2_ ) - { - textureCompressionETC2 = textureCompressionETC2_; - return *this; - } - - PhysicalDeviceFeatures & setTextureCompressionASTC_LDR( vk::Bool32 textureCompressionASTC_LDR_ ) - { - textureCompressionASTC_LDR = textureCompressionASTC_LDR_; - return *this; - } - - PhysicalDeviceFeatures & setTextureCompressionBC( vk::Bool32 textureCompressionBC_ ) - { - textureCompressionBC = textureCompressionBC_; - return *this; - } - - PhysicalDeviceFeatures & setOcclusionQueryPrecise( vk::Bool32 occlusionQueryPrecise_ ) - { - occlusionQueryPrecise = occlusionQueryPrecise_; - return *this; - } - - PhysicalDeviceFeatures & setPipelineStatisticsQuery( vk::Bool32 pipelineStatisticsQuery_ ) - { - pipelineStatisticsQuery = pipelineStatisticsQuery_; - return *this; - } - - PhysicalDeviceFeatures & setVertexPipelineStoresAndAtomics( vk::Bool32 vertexPipelineStoresAndAtomics_ ) - { - vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_; - return *this; - } - - PhysicalDeviceFeatures & setFragmentStoresAndAtomics( vk::Bool32 fragmentStoresAndAtomics_ ) - { - fragmentStoresAndAtomics = fragmentStoresAndAtomics_; - return *this; - } - - PhysicalDeviceFeatures & setShaderTessellationAndGeometryPointSize( vk::Bool32 shaderTessellationAndGeometryPointSize_ ) - { - shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_; - return *this; - } - - PhysicalDeviceFeatures & setShaderImageGatherExtended( vk::Bool32 shaderImageGatherExtended_ ) - { - shaderImageGatherExtended = shaderImageGatherExtended_; - return *this; - } - - PhysicalDeviceFeatures & setShaderStorageImageExtendedFormats( vk::Bool32 shaderStorageImageExtendedFormats_ ) - { - shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_; - return *this; - } - - PhysicalDeviceFeatures & setShaderStorageImageMultisample( vk::Bool32 shaderStorageImageMultisample_ ) - { - shaderStorageImageMultisample = shaderStorageImageMultisample_; - return *this; - } - - PhysicalDeviceFeatures & setShaderStorageImageReadWithoutFormat( vk::Bool32 shaderStorageImageReadWithoutFormat_ ) - { - shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_; - return *this; - } - - PhysicalDeviceFeatures & setShaderStorageImageWriteWithoutFormat( vk::Bool32 shaderStorageImageWriteWithoutFormat_ ) - { - shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_; - return *this; - } - - PhysicalDeviceFeatures & setShaderUniformBufferArrayDynamicIndexing( vk::Bool32 shaderUniformBufferArrayDynamicIndexing_ ) - { - shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceFeatures & setShaderSampledImageArrayDynamicIndexing( vk::Bool32 shaderSampledImageArrayDynamicIndexing_ ) - { - shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceFeatures & setShaderStorageBufferArrayDynamicIndexing( vk::Bool32 shaderStorageBufferArrayDynamicIndexing_ ) - { - shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceFeatures & setShaderStorageImageArrayDynamicIndexing( vk::Bool32 shaderStorageImageArrayDynamicIndexing_ ) - { - shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceFeatures & setShaderClipDistance( vk::Bool32 shaderClipDistance_ ) - { - shaderClipDistance = shaderClipDistance_; - return *this; - } - - PhysicalDeviceFeatures & setShaderCullDistance( vk::Bool32 shaderCullDistance_ ) - { - shaderCullDistance = shaderCullDistance_; - return *this; - } - - PhysicalDeviceFeatures & setShaderFloat64( vk::Bool32 shaderFloat64_ ) - { - shaderFloat64 = shaderFloat64_; - return *this; - } - - PhysicalDeviceFeatures & setShaderInt64( vk::Bool32 shaderInt64_ ) - { - shaderInt64 = shaderInt64_; - return *this; - } - - PhysicalDeviceFeatures & setShaderInt16( vk::Bool32 shaderInt16_ ) - { - shaderInt16 = shaderInt16_; - return *this; - } - - PhysicalDeviceFeatures & setShaderResourceResidency( vk::Bool32 shaderResourceResidency_ ) - { - shaderResourceResidency = shaderResourceResidency_; - return *this; - } - - PhysicalDeviceFeatures & setShaderResourceMinLod( vk::Bool32 shaderResourceMinLod_ ) - { - shaderResourceMinLod = shaderResourceMinLod_; - return *this; - } - - PhysicalDeviceFeatures & setSparseBinding( vk::Bool32 sparseBinding_ ) - { - sparseBinding = sparseBinding_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidencyBuffer( vk::Bool32 sparseResidencyBuffer_ ) - { - sparseResidencyBuffer = sparseResidencyBuffer_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidencyImage2D( vk::Bool32 sparseResidencyImage2D_ ) - { - sparseResidencyImage2D = sparseResidencyImage2D_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidencyImage3D( vk::Bool32 sparseResidencyImage3D_ ) - { - sparseResidencyImage3D = sparseResidencyImage3D_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidency2Samples( vk::Bool32 sparseResidency2Samples_ ) - { - sparseResidency2Samples = sparseResidency2Samples_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidency4Samples( vk::Bool32 sparseResidency4Samples_ ) - { - sparseResidency4Samples = sparseResidency4Samples_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidency8Samples( vk::Bool32 sparseResidency8Samples_ ) - { - sparseResidency8Samples = sparseResidency8Samples_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidency16Samples( vk::Bool32 sparseResidency16Samples_ ) - { - sparseResidency16Samples = sparseResidency16Samples_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidencyAliased( vk::Bool32 sparseResidencyAliased_ ) - { - sparseResidencyAliased = sparseResidencyAliased_; - return *this; - } - - PhysicalDeviceFeatures & setVariableMultisampleRate( vk::Bool32 variableMultisampleRate_ ) - { - variableMultisampleRate = variableMultisampleRate_; - return *this; - } - - PhysicalDeviceFeatures & setInheritedQueries( vk::Bool32 inheritedQueries_ ) - { - inheritedQueries = inheritedQueries_; - return *this; - } - - operator VkPhysicalDeviceFeatures const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceFeatures &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceFeatures const& rhs ) const - { - return ( robustBufferAccess == rhs.robustBufferAccess ) - && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 ) - && ( imageCubeArray == rhs.imageCubeArray ) - && ( independentBlend == rhs.independentBlend ) - && ( geometryShader == rhs.geometryShader ) - && ( tessellationShader == rhs.tessellationShader ) - && ( sampleRateShading == rhs.sampleRateShading ) - && ( dualSrcBlend == rhs.dualSrcBlend ) - && ( logicOp == rhs.logicOp ) - && ( multiDrawIndirect == rhs.multiDrawIndirect ) - && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance ) - && ( depthClamp == rhs.depthClamp ) - && ( depthBiasClamp == rhs.depthBiasClamp ) - && ( fillModeNonSolid == rhs.fillModeNonSolid ) - && ( depthBounds == rhs.depthBounds ) - && ( wideLines == rhs.wideLines ) - && ( largePoints == rhs.largePoints ) - && ( alphaToOne == rhs.alphaToOne ) - && ( multiViewport == rhs.multiViewport ) - && ( samplerAnisotropy == rhs.samplerAnisotropy ) - && ( textureCompressionETC2 == rhs.textureCompressionETC2 ) - && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR ) - && ( textureCompressionBC == rhs.textureCompressionBC ) - && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise ) - && ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery ) - && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics ) - && ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics ) - && ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize ) - && ( shaderImageGatherExtended == rhs.shaderImageGatherExtended ) - && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats ) - && ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample ) - && ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat ) - && ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat ) - && ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing ) - && ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing ) - && ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing ) - && ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing ) - && ( shaderClipDistance == rhs.shaderClipDistance ) - && ( shaderCullDistance == rhs.shaderCullDistance ) - && ( shaderFloat64 == rhs.shaderFloat64 ) - && ( shaderInt64 == rhs.shaderInt64 ) - && ( shaderInt16 == rhs.shaderInt16 ) - && ( shaderResourceResidency == rhs.shaderResourceResidency ) - && ( shaderResourceMinLod == rhs.shaderResourceMinLod ) - && ( sparseBinding == rhs.sparseBinding ) - && ( sparseResidencyBuffer == rhs.sparseResidencyBuffer ) - && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D ) - && ( sparseResidencyImage3D == rhs.sparseResidencyImage3D ) - && ( sparseResidency2Samples == rhs.sparseResidency2Samples ) - && ( sparseResidency4Samples == rhs.sparseResidency4Samples ) - && ( sparseResidency8Samples == rhs.sparseResidency8Samples ) - && ( sparseResidency16Samples == rhs.sparseResidency16Samples ) - && ( sparseResidencyAliased == rhs.sparseResidencyAliased ) - && ( variableMultisampleRate == rhs.variableMultisampleRate ) - && ( inheritedQueries == rhs.inheritedQueries ); - } - - bool operator!=( PhysicalDeviceFeatures const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::Bool32 robustBufferAccess; - vk::Bool32 fullDrawIndexUint32; - vk::Bool32 imageCubeArray; - vk::Bool32 independentBlend; - vk::Bool32 geometryShader; - vk::Bool32 tessellationShader; - vk::Bool32 sampleRateShading; - vk::Bool32 dualSrcBlend; - vk::Bool32 logicOp; - vk::Bool32 multiDrawIndirect; - vk::Bool32 drawIndirectFirstInstance; - vk::Bool32 depthClamp; - vk::Bool32 depthBiasClamp; - vk::Bool32 fillModeNonSolid; - vk::Bool32 depthBounds; - vk::Bool32 wideLines; - vk::Bool32 largePoints; - vk::Bool32 alphaToOne; - vk::Bool32 multiViewport; - vk::Bool32 samplerAnisotropy; - vk::Bool32 textureCompressionETC2; - vk::Bool32 textureCompressionASTC_LDR; - vk::Bool32 textureCompressionBC; - vk::Bool32 occlusionQueryPrecise; - vk::Bool32 pipelineStatisticsQuery; - vk::Bool32 vertexPipelineStoresAndAtomics; - vk::Bool32 fragmentStoresAndAtomics; - vk::Bool32 shaderTessellationAndGeometryPointSize; - vk::Bool32 shaderImageGatherExtended; - vk::Bool32 shaderStorageImageExtendedFormats; - vk::Bool32 shaderStorageImageMultisample; - vk::Bool32 shaderStorageImageReadWithoutFormat; - vk::Bool32 shaderStorageImageWriteWithoutFormat; - vk::Bool32 shaderUniformBufferArrayDynamicIndexing; - vk::Bool32 shaderSampledImageArrayDynamicIndexing; - vk::Bool32 shaderStorageBufferArrayDynamicIndexing; - vk::Bool32 shaderStorageImageArrayDynamicIndexing; - vk::Bool32 shaderClipDistance; - vk::Bool32 shaderCullDistance; - vk::Bool32 shaderFloat64; - vk::Bool32 shaderInt64; - vk::Bool32 shaderInt16; - vk::Bool32 shaderResourceResidency; - vk::Bool32 shaderResourceMinLod; - vk::Bool32 sparseBinding; - vk::Bool32 sparseResidencyBuffer; - vk::Bool32 sparseResidencyImage2D; - vk::Bool32 sparseResidencyImage3D; - vk::Bool32 sparseResidency2Samples; - vk::Bool32 sparseResidency4Samples; - vk::Bool32 sparseResidency8Samples; - vk::Bool32 sparseResidency16Samples; - vk::Bool32 sparseResidencyAliased; - vk::Bool32 variableMultisampleRate; - vk::Bool32 inheritedQueries; - }; - static_assert( sizeof( PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceCreateInfo - { - protected: - DeviceCreateInfo( vk::DeviceCreateFlags flags_ = vk::DeviceCreateFlags(), - uint32_t queueCreateInfoCount_ = 0, - const vk::DeviceQueueCreateInfo* pQueueCreateInfos_ = nullptr, - uint32_t enabledLayerCount_ = 0, - const char* const* ppEnabledLayerNames_ = nullptr, - uint32_t enabledExtensionCount_ = 0, - const char* const* ppEnabledExtensionNames_ = nullptr, - const vk::PhysicalDeviceFeatures* pEnabledFeatures_ = nullptr ) - : flags( flags_ ) - , queueCreateInfoCount( queueCreateInfoCount_ ) - , pQueueCreateInfos( pQueueCreateInfos_ ) - , enabledLayerCount( enabledLayerCount_ ) - , ppEnabledLayerNames( ppEnabledLayerNames_ ) - , enabledExtensionCount( enabledExtensionCount_ ) - , ppEnabledExtensionNames( ppEnabledExtensionNames_ ) - , pEnabledFeatures( pEnabledFeatures_ ) - {} - - DeviceCreateInfo( VkDeviceCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceCreateInfo; - const void* pNext = nullptr; - vk::DeviceCreateFlags flags; - uint32_t queueCreateInfoCount; - const vk::DeviceQueueCreateInfo* pQueueCreateInfos; - uint32_t enabledLayerCount; - const char* const* ppEnabledLayerNames; - uint32_t enabledExtensionCount; - const char* const* ppEnabledExtensionNames; - const vk::PhysicalDeviceFeatures* pEnabledFeatures; - }; - static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct DeviceCreateInfo : public layout::DeviceCreateInfo - { - DeviceCreateInfo( vk::DeviceCreateFlags flags_ = vk::DeviceCreateFlags(), - uint32_t queueCreateInfoCount_ = 0, - const vk::DeviceQueueCreateInfo* pQueueCreateInfos_ = nullptr, - uint32_t enabledLayerCount_ = 0, - const char* const* ppEnabledLayerNames_ = nullptr, - uint32_t enabledExtensionCount_ = 0, - const char* const* ppEnabledExtensionNames_ = nullptr, - const vk::PhysicalDeviceFeatures* pEnabledFeatures_ = nullptr ) - : layout::DeviceCreateInfo( flags_, queueCreateInfoCount_, pQueueCreateInfos_, enabledLayerCount_, ppEnabledLayerNames_, enabledExtensionCount_, ppEnabledExtensionNames_, pEnabledFeatures_ ) - {} - - DeviceCreateInfo( VkDeviceCreateInfo const & rhs ) - : layout::DeviceCreateInfo( rhs ) - {} - - DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DeviceCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DeviceCreateInfo & setFlags( vk::DeviceCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - DeviceCreateInfo & setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ ) - { - queueCreateInfoCount = queueCreateInfoCount_; - return *this; - } - - DeviceCreateInfo & setPQueueCreateInfos( const vk::DeviceQueueCreateInfo* pQueueCreateInfos_ ) - { - pQueueCreateInfos = pQueueCreateInfos_; - return *this; - } - - DeviceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) - { - enabledLayerCount = enabledLayerCount_; - return *this; - } - - DeviceCreateInfo & setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ ) - { - ppEnabledLayerNames = ppEnabledLayerNames_; - return *this; - } - - DeviceCreateInfo & setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) - { - enabledExtensionCount = enabledExtensionCount_; - return *this; - } - - DeviceCreateInfo & setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ ) - { - ppEnabledExtensionNames = ppEnabledExtensionNames_; - return *this; - } - - DeviceCreateInfo & setPEnabledFeatures( const vk::PhysicalDeviceFeatures* pEnabledFeatures_ ) - { - pEnabledFeatures = pEnabledFeatures_; - return *this; - } - - operator VkDeviceCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( queueCreateInfoCount == rhs.queueCreateInfoCount ) - && ( pQueueCreateInfos == rhs.pQueueCreateInfos ) - && ( enabledLayerCount == rhs.enabledLayerCount ) - && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames ) - && ( enabledExtensionCount == rhs.enabledExtensionCount ) - && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames ) - && ( pEnabledFeatures == rhs.pEnabledFeatures ); - } - - bool operator!=( DeviceCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceCreateInfo::sType; - }; - static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceEventInfoEXT - { - protected: - DeviceEventInfoEXT( vk::DeviceEventTypeEXT deviceEvent_ = vk::DeviceEventTypeEXT::eDisplayHotplug ) - : deviceEvent( deviceEvent_ ) - {} - - DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceEventInfoEXT; - const void* pNext = nullptr; - vk::DeviceEventTypeEXT deviceEvent; - }; - static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct DeviceEventInfoEXT : public layout::DeviceEventInfoEXT - { - DeviceEventInfoEXT( vk::DeviceEventTypeEXT deviceEvent_ = vk::DeviceEventTypeEXT::eDisplayHotplug ) - : layout::DeviceEventInfoEXT( deviceEvent_ ) - {} - - DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs ) - : layout::DeviceEventInfoEXT( rhs ) - {} - - DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DeviceEventInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DeviceEventInfoEXT & setDeviceEvent( vk::DeviceEventTypeEXT deviceEvent_ ) - { - deviceEvent = deviceEvent_; - return *this; - } - - operator VkDeviceEventInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceEventInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceEventInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceEvent == rhs.deviceEvent ); - } - - bool operator!=( DeviceEventInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceEventInfoEXT::sType; - }; - static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceGeneratedCommandsFeaturesNVX - { - protected: - DeviceGeneratedCommandsFeaturesNVX( vk::Bool32 computeBindingPointSupport_ = 0 ) - : computeBindingPointSupport( computeBindingPointSupport_ ) - {} - - DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceGeneratedCommandsFeaturesNVX; - const void* pNext = nullptr; - vk::Bool32 computeBindingPointSupport; - }; - static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "layout struct and wrapper have different size!" ); - } - - struct DeviceGeneratedCommandsFeaturesNVX : public layout::DeviceGeneratedCommandsFeaturesNVX - { - DeviceGeneratedCommandsFeaturesNVX( vk::Bool32 computeBindingPointSupport_ = 0 ) - : layout::DeviceGeneratedCommandsFeaturesNVX( computeBindingPointSupport_ ) - {} - - DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs ) - : layout::DeviceGeneratedCommandsFeaturesNVX( rhs ) - {} - - DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DeviceGeneratedCommandsFeaturesNVX & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DeviceGeneratedCommandsFeaturesNVX & setComputeBindingPointSupport( vk::Bool32 computeBindingPointSupport_ ) - { - computeBindingPointSupport = computeBindingPointSupport_; - return *this; - } - - operator VkDeviceGeneratedCommandsFeaturesNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceGeneratedCommandsFeaturesNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( computeBindingPointSupport == rhs.computeBindingPointSupport ); - } - - bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceGeneratedCommandsFeaturesNVX::sType; - }; - static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceGeneratedCommandsLimitsNVX - { - protected: - DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, - uint32_t maxObjectEntryCounts_ = 0, - uint32_t minSequenceCountBufferOffsetAlignment_ = 0, - uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, - uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 ) - : maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ ) - , maxObjectEntryCounts( maxObjectEntryCounts_ ) - , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ ) - , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ ) - , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ ) - {} - - DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceGeneratedCommandsLimitsNVX; - const void* pNext = nullptr; - uint32_t maxIndirectCommandsLayoutTokenCount; - uint32_t maxObjectEntryCounts; - uint32_t minSequenceCountBufferOffsetAlignment; - uint32_t minSequenceIndexBufferOffsetAlignment; - uint32_t minCommandsTokenBufferOffsetAlignment; - }; - static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "layout struct and wrapper have different size!" ); - } - - struct DeviceGeneratedCommandsLimitsNVX : public layout::DeviceGeneratedCommandsLimitsNVX - { - DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, - uint32_t maxObjectEntryCounts_ = 0, - uint32_t minSequenceCountBufferOffsetAlignment_ = 0, - uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, - uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 ) - : layout::DeviceGeneratedCommandsLimitsNVX( maxIndirectCommandsLayoutTokenCount_, maxObjectEntryCounts_, minSequenceCountBufferOffsetAlignment_, minSequenceIndexBufferOffsetAlignment_, minCommandsTokenBufferOffsetAlignment_ ) - {} - - DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs ) - : layout::DeviceGeneratedCommandsLimitsNVX( rhs ) - {} - - DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DeviceGeneratedCommandsLimitsNVX & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DeviceGeneratedCommandsLimitsNVX & setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ ) - { - maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_; - return *this; - } - - DeviceGeneratedCommandsLimitsNVX & setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ ) - { - maxObjectEntryCounts = maxObjectEntryCounts_; - return *this; - } - - DeviceGeneratedCommandsLimitsNVX & setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ ) - { - minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_; - return *this; - } - - DeviceGeneratedCommandsLimitsNVX & setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ ) - { - minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_; - return *this; - } - - DeviceGeneratedCommandsLimitsNVX & setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ ) - { - minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_; - return *this; - } - - operator VkDeviceGeneratedCommandsLimitsNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceGeneratedCommandsLimitsNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount ) - && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts ) - && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment ) - && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment ) - && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment ); - } - - bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceGeneratedCommandsLimitsNVX::sType; - }; - static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceGroupBindSparseInfo - { - protected: - DeviceGroupBindSparseInfo( uint32_t resourceDeviceIndex_ = 0, - uint32_t memoryDeviceIndex_ = 0 ) - : resourceDeviceIndex( resourceDeviceIndex_ ) - , memoryDeviceIndex( memoryDeviceIndex_ ) - {} - - DeviceGroupBindSparseInfo( VkDeviceGroupBindSparseInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceGroupBindSparseInfo& operator=( VkDeviceGroupBindSparseInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceGroupBindSparseInfo; - const void* pNext = nullptr; - uint32_t resourceDeviceIndex; - uint32_t memoryDeviceIndex; - }; - static_assert( sizeof( DeviceGroupBindSparseInfo ) == sizeof( VkDeviceGroupBindSparseInfo ), "layout struct and wrapper have different size!" ); - } - - struct DeviceGroupBindSparseInfo : public layout::DeviceGroupBindSparseInfo - { - DeviceGroupBindSparseInfo( uint32_t resourceDeviceIndex_ = 0, - uint32_t memoryDeviceIndex_ = 0 ) - : layout::DeviceGroupBindSparseInfo( resourceDeviceIndex_, memoryDeviceIndex_ ) - {} - - DeviceGroupBindSparseInfo( VkDeviceGroupBindSparseInfo const & rhs ) - : layout::DeviceGroupBindSparseInfo( rhs ) - {} - - DeviceGroupBindSparseInfo& operator=( VkDeviceGroupBindSparseInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DeviceGroupBindSparseInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DeviceGroupBindSparseInfo & setResourceDeviceIndex( uint32_t resourceDeviceIndex_ ) - { - resourceDeviceIndex = resourceDeviceIndex_; - return *this; - } - - DeviceGroupBindSparseInfo & setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ ) - { - memoryDeviceIndex = memoryDeviceIndex_; - return *this; - } - - operator VkDeviceGroupBindSparseInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceGroupBindSparseInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceGroupBindSparseInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( resourceDeviceIndex == rhs.resourceDeviceIndex ) - && ( memoryDeviceIndex == rhs.memoryDeviceIndex ); - } - - bool operator!=( DeviceGroupBindSparseInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceGroupBindSparseInfo::sType; - }; - static_assert( sizeof( DeviceGroupBindSparseInfo ) == sizeof( VkDeviceGroupBindSparseInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceGroupCommandBufferBeginInfo - { - protected: - DeviceGroupCommandBufferBeginInfo( uint32_t deviceMask_ = 0 ) - : deviceMask( deviceMask_ ) - {} - - DeviceGroupCommandBufferBeginInfo( VkDeviceGroupCommandBufferBeginInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceGroupCommandBufferBeginInfo& operator=( VkDeviceGroupCommandBufferBeginInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceGroupCommandBufferBeginInfo; - const void* pNext = nullptr; - uint32_t deviceMask; - }; - static_assert( sizeof( DeviceGroupCommandBufferBeginInfo ) == sizeof( VkDeviceGroupCommandBufferBeginInfo ), "layout struct and wrapper have different size!" ); - } - - struct DeviceGroupCommandBufferBeginInfo : public layout::DeviceGroupCommandBufferBeginInfo - { - DeviceGroupCommandBufferBeginInfo( uint32_t deviceMask_ = 0 ) - : layout::DeviceGroupCommandBufferBeginInfo( deviceMask_ ) - {} - - DeviceGroupCommandBufferBeginInfo( VkDeviceGroupCommandBufferBeginInfo const & rhs ) - : layout::DeviceGroupCommandBufferBeginInfo( rhs ) - {} - - DeviceGroupCommandBufferBeginInfo& operator=( VkDeviceGroupCommandBufferBeginInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DeviceGroupCommandBufferBeginInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DeviceGroupCommandBufferBeginInfo & setDeviceMask( uint32_t deviceMask_ ) - { - deviceMask = deviceMask_; - return *this; - } - - operator VkDeviceGroupCommandBufferBeginInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceGroupCommandBufferBeginInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceGroupCommandBufferBeginInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceMask == rhs.deviceMask ); - } - - bool operator!=( DeviceGroupCommandBufferBeginInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceGroupCommandBufferBeginInfo::sType; - }; - static_assert( sizeof( DeviceGroupCommandBufferBeginInfo ) == sizeof( VkDeviceGroupCommandBufferBeginInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceGroupDeviceCreateInfo - { - protected: - DeviceGroupDeviceCreateInfo( uint32_t physicalDeviceCount_ = 0, - const vk::PhysicalDevice* pPhysicalDevices_ = nullptr ) - : physicalDeviceCount( physicalDeviceCount_ ) - , pPhysicalDevices( pPhysicalDevices_ ) - {} - - DeviceGroupDeviceCreateInfo( VkDeviceGroupDeviceCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceGroupDeviceCreateInfo& operator=( VkDeviceGroupDeviceCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceGroupDeviceCreateInfo; - const void* pNext = nullptr; - uint32_t physicalDeviceCount; - const vk::PhysicalDevice* pPhysicalDevices; - }; - static_assert( sizeof( DeviceGroupDeviceCreateInfo ) == sizeof( VkDeviceGroupDeviceCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct DeviceGroupDeviceCreateInfo : public layout::DeviceGroupDeviceCreateInfo - { - DeviceGroupDeviceCreateInfo( uint32_t physicalDeviceCount_ = 0, - const vk::PhysicalDevice* pPhysicalDevices_ = nullptr ) - : layout::DeviceGroupDeviceCreateInfo( physicalDeviceCount_, pPhysicalDevices_ ) - {} - - DeviceGroupDeviceCreateInfo( VkDeviceGroupDeviceCreateInfo const & rhs ) - : layout::DeviceGroupDeviceCreateInfo( rhs ) - {} - - DeviceGroupDeviceCreateInfo& operator=( VkDeviceGroupDeviceCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DeviceGroupDeviceCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DeviceGroupDeviceCreateInfo & setPhysicalDeviceCount( uint32_t physicalDeviceCount_ ) - { - physicalDeviceCount = physicalDeviceCount_; - return *this; - } - - DeviceGroupDeviceCreateInfo & setPPhysicalDevices( const vk::PhysicalDevice* pPhysicalDevices_ ) - { - pPhysicalDevices = pPhysicalDevices_; - return *this; - } - - operator VkDeviceGroupDeviceCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceGroupDeviceCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceGroupDeviceCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( physicalDeviceCount == rhs.physicalDeviceCount ) - && ( pPhysicalDevices == rhs.pPhysicalDevices ); - } - - bool operator!=( DeviceGroupDeviceCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceGroupDeviceCreateInfo::sType; - }; - static_assert( sizeof( DeviceGroupDeviceCreateInfo ) == sizeof( VkDeviceGroupDeviceCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceGroupPresentCapabilitiesKHR - { - protected: - DeviceGroupPresentCapabilitiesKHR( std::array const& presentMask_ = { { 0 } }, - vk::DeviceGroupPresentModeFlagsKHR modes_ = vk::DeviceGroupPresentModeFlagsKHR() ) - : modes( modes_ ) - { - memcpy( &presentMask, presentMask_.data(), VK_MAX_DEVICE_GROUP_SIZE * sizeof( uint32_t ) ); - - } - - DeviceGroupPresentCapabilitiesKHR( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceGroupPresentCapabilitiesKHR& operator=( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceGroupPresentCapabilitiesKHR; - const void* pNext = nullptr; - uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE]; - vk::DeviceGroupPresentModeFlagsKHR modes; - }; - static_assert( sizeof( DeviceGroupPresentCapabilitiesKHR ) == sizeof( VkDeviceGroupPresentCapabilitiesKHR ), "layout struct and wrapper have different size!" ); - } - - struct DeviceGroupPresentCapabilitiesKHR : public layout::DeviceGroupPresentCapabilitiesKHR - { - operator VkDeviceGroupPresentCapabilitiesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceGroupPresentCapabilitiesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceGroupPresentCapabilitiesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE * sizeof( uint32_t ) ) == 0 ) - && ( modes == rhs.modes ); - } - - bool operator!=( DeviceGroupPresentCapabilitiesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceGroupPresentCapabilitiesKHR::sType; - }; - static_assert( sizeof( DeviceGroupPresentCapabilitiesKHR ) == sizeof( VkDeviceGroupPresentCapabilitiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceGroupPresentInfoKHR - { - protected: - DeviceGroupPresentInfoKHR( uint32_t swapchainCount_ = 0, - const uint32_t* pDeviceMasks_ = nullptr, - vk::DeviceGroupPresentModeFlagBitsKHR mode_ = vk::DeviceGroupPresentModeFlagBitsKHR::eLocal ) - : swapchainCount( swapchainCount_ ) - , pDeviceMasks( pDeviceMasks_ ) - , mode( mode_ ) - {} - - DeviceGroupPresentInfoKHR( VkDeviceGroupPresentInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceGroupPresentInfoKHR& operator=( VkDeviceGroupPresentInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceGroupPresentInfoKHR; - const void* pNext = nullptr; - uint32_t swapchainCount; - const uint32_t* pDeviceMasks; - vk::DeviceGroupPresentModeFlagBitsKHR mode; - }; - static_assert( sizeof( DeviceGroupPresentInfoKHR ) == sizeof( VkDeviceGroupPresentInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct DeviceGroupPresentInfoKHR : public layout::DeviceGroupPresentInfoKHR - { - DeviceGroupPresentInfoKHR( uint32_t swapchainCount_ = 0, - const uint32_t* pDeviceMasks_ = nullptr, - vk::DeviceGroupPresentModeFlagBitsKHR mode_ = vk::DeviceGroupPresentModeFlagBitsKHR::eLocal ) - : layout::DeviceGroupPresentInfoKHR( swapchainCount_, pDeviceMasks_, mode_ ) - {} - - DeviceGroupPresentInfoKHR( VkDeviceGroupPresentInfoKHR const & rhs ) - : layout::DeviceGroupPresentInfoKHR( rhs ) - {} - - DeviceGroupPresentInfoKHR& operator=( VkDeviceGroupPresentInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DeviceGroupPresentInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DeviceGroupPresentInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) - { - swapchainCount = swapchainCount_; - return *this; - } - - DeviceGroupPresentInfoKHR & setPDeviceMasks( const uint32_t* pDeviceMasks_ ) - { - pDeviceMasks = pDeviceMasks_; - return *this; - } - - DeviceGroupPresentInfoKHR & setMode( vk::DeviceGroupPresentModeFlagBitsKHR mode_ ) - { - mode = mode_; - return *this; - } - - operator VkDeviceGroupPresentInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceGroupPresentInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceGroupPresentInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( swapchainCount == rhs.swapchainCount ) - && ( pDeviceMasks == rhs.pDeviceMasks ) - && ( mode == rhs.mode ); - } - - bool operator!=( DeviceGroupPresentInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceGroupPresentInfoKHR::sType; - }; - static_assert( sizeof( DeviceGroupPresentInfoKHR ) == sizeof( VkDeviceGroupPresentInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceGroupRenderPassBeginInfo - { - protected: - DeviceGroupRenderPassBeginInfo( uint32_t deviceMask_ = 0, - uint32_t deviceRenderAreaCount_ = 0, - const vk::Rect2D* pDeviceRenderAreas_ = nullptr ) - : deviceMask( deviceMask_ ) - , deviceRenderAreaCount( deviceRenderAreaCount_ ) - , pDeviceRenderAreas( pDeviceRenderAreas_ ) - {} - - DeviceGroupRenderPassBeginInfo( VkDeviceGroupRenderPassBeginInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceGroupRenderPassBeginInfo& operator=( VkDeviceGroupRenderPassBeginInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceGroupRenderPassBeginInfo; - const void* pNext = nullptr; - uint32_t deviceMask; - uint32_t deviceRenderAreaCount; - const vk::Rect2D* pDeviceRenderAreas; - }; - static_assert( sizeof( DeviceGroupRenderPassBeginInfo ) == sizeof( VkDeviceGroupRenderPassBeginInfo ), "layout struct and wrapper have different size!" ); - } - - struct DeviceGroupRenderPassBeginInfo : public layout::DeviceGroupRenderPassBeginInfo - { - DeviceGroupRenderPassBeginInfo( uint32_t deviceMask_ = 0, - uint32_t deviceRenderAreaCount_ = 0, - const vk::Rect2D* pDeviceRenderAreas_ = nullptr ) - : layout::DeviceGroupRenderPassBeginInfo( deviceMask_, deviceRenderAreaCount_, pDeviceRenderAreas_ ) - {} - - DeviceGroupRenderPassBeginInfo( VkDeviceGroupRenderPassBeginInfo const & rhs ) - : layout::DeviceGroupRenderPassBeginInfo( rhs ) - {} - - DeviceGroupRenderPassBeginInfo& operator=( VkDeviceGroupRenderPassBeginInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DeviceGroupRenderPassBeginInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DeviceGroupRenderPassBeginInfo & setDeviceMask( uint32_t deviceMask_ ) - { - deviceMask = deviceMask_; - return *this; - } - - DeviceGroupRenderPassBeginInfo & setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ ) - { - deviceRenderAreaCount = deviceRenderAreaCount_; - return *this; - } - - DeviceGroupRenderPassBeginInfo & setPDeviceRenderAreas( const vk::Rect2D* pDeviceRenderAreas_ ) - { - pDeviceRenderAreas = pDeviceRenderAreas_; - return *this; - } - - operator VkDeviceGroupRenderPassBeginInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceGroupRenderPassBeginInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceGroupRenderPassBeginInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceMask == rhs.deviceMask ) - && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount ) - && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas ); - } - - bool operator!=( DeviceGroupRenderPassBeginInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceGroupRenderPassBeginInfo::sType; - }; - static_assert( sizeof( DeviceGroupRenderPassBeginInfo ) == sizeof( VkDeviceGroupRenderPassBeginInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceGroupSubmitInfo - { - protected: - DeviceGroupSubmitInfo( uint32_t waitSemaphoreCount_ = 0, - const uint32_t* pWaitSemaphoreDeviceIndices_ = nullptr, - uint32_t commandBufferCount_ = 0, - const uint32_t* pCommandBufferDeviceMasks_ = nullptr, - uint32_t signalSemaphoreCount_ = 0, - const uint32_t* pSignalSemaphoreDeviceIndices_ = nullptr ) - : waitSemaphoreCount( waitSemaphoreCount_ ) - , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ ) - , commandBufferCount( commandBufferCount_ ) - , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ ) - , signalSemaphoreCount( signalSemaphoreCount_ ) - , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ ) - {} - - DeviceGroupSubmitInfo( VkDeviceGroupSubmitInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceGroupSubmitInfo& operator=( VkDeviceGroupSubmitInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceGroupSubmitInfo; - const void* pNext = nullptr; - uint32_t waitSemaphoreCount; - const uint32_t* pWaitSemaphoreDeviceIndices; - uint32_t commandBufferCount; - const uint32_t* pCommandBufferDeviceMasks; - uint32_t signalSemaphoreCount; - const uint32_t* pSignalSemaphoreDeviceIndices; - }; - static_assert( sizeof( DeviceGroupSubmitInfo ) == sizeof( VkDeviceGroupSubmitInfo ), "layout struct and wrapper have different size!" ); - } - - struct DeviceGroupSubmitInfo : public layout::DeviceGroupSubmitInfo - { - DeviceGroupSubmitInfo( uint32_t waitSemaphoreCount_ = 0, - const uint32_t* pWaitSemaphoreDeviceIndices_ = nullptr, - uint32_t commandBufferCount_ = 0, - const uint32_t* pCommandBufferDeviceMasks_ = nullptr, - uint32_t signalSemaphoreCount_ = 0, - const uint32_t* pSignalSemaphoreDeviceIndices_ = nullptr ) - : layout::DeviceGroupSubmitInfo( waitSemaphoreCount_, pWaitSemaphoreDeviceIndices_, commandBufferCount_, pCommandBufferDeviceMasks_, signalSemaphoreCount_, pSignalSemaphoreDeviceIndices_ ) - {} - - DeviceGroupSubmitInfo( VkDeviceGroupSubmitInfo const & rhs ) - : layout::DeviceGroupSubmitInfo( rhs ) - {} - - DeviceGroupSubmitInfo& operator=( VkDeviceGroupSubmitInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DeviceGroupSubmitInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DeviceGroupSubmitInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) - { - waitSemaphoreCount = waitSemaphoreCount_; - return *this; - } - - DeviceGroupSubmitInfo & setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ ) - { - pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_; - return *this; - } - - DeviceGroupSubmitInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) - { - commandBufferCount = commandBufferCount_; - return *this; - } - - DeviceGroupSubmitInfo & setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ ) - { - pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_; - return *this; - } - - DeviceGroupSubmitInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) - { - signalSemaphoreCount = signalSemaphoreCount_; - return *this; - } - - DeviceGroupSubmitInfo & setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ ) - { - pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_; - return *this; - } - - operator VkDeviceGroupSubmitInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceGroupSubmitInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceGroupSubmitInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) - && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices ) - && ( commandBufferCount == rhs.commandBufferCount ) - && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks ) - && ( signalSemaphoreCount == rhs.signalSemaphoreCount ) - && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices ); - } - - bool operator!=( DeviceGroupSubmitInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceGroupSubmitInfo::sType; - }; - static_assert( sizeof( DeviceGroupSubmitInfo ) == sizeof( VkDeviceGroupSubmitInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceGroupSwapchainCreateInfoKHR - { - protected: - DeviceGroupSwapchainCreateInfoKHR( vk::DeviceGroupPresentModeFlagsKHR modes_ = vk::DeviceGroupPresentModeFlagsKHR() ) - : modes( modes_ ) - {} - - DeviceGroupSwapchainCreateInfoKHR( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceGroupSwapchainCreateInfoKHR& operator=( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceGroupSwapchainCreateInfoKHR; - const void* pNext = nullptr; - vk::DeviceGroupPresentModeFlagsKHR modes; - }; - static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHR ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct DeviceGroupSwapchainCreateInfoKHR : public layout::DeviceGroupSwapchainCreateInfoKHR - { - DeviceGroupSwapchainCreateInfoKHR( vk::DeviceGroupPresentModeFlagsKHR modes_ = vk::DeviceGroupPresentModeFlagsKHR() ) - : layout::DeviceGroupSwapchainCreateInfoKHR( modes_ ) - {} - - DeviceGroupSwapchainCreateInfoKHR( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) - : layout::DeviceGroupSwapchainCreateInfoKHR( rhs ) - {} - - DeviceGroupSwapchainCreateInfoKHR& operator=( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DeviceGroupSwapchainCreateInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DeviceGroupSwapchainCreateInfoKHR & setModes( vk::DeviceGroupPresentModeFlagsKHR modes_ ) - { - modes = modes_; - return *this; - } - - operator VkDeviceGroupSwapchainCreateInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceGroupSwapchainCreateInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceGroupSwapchainCreateInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( modes == rhs.modes ); - } - - bool operator!=( DeviceGroupSwapchainCreateInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceGroupSwapchainCreateInfoKHR::sType; - }; - static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHR ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceMemoryOverallocationCreateInfoAMD - { - protected: - DeviceMemoryOverallocationCreateInfoAMD( vk::MemoryOverallocationBehaviorAMD overallocationBehavior_ = vk::MemoryOverallocationBehaviorAMD::eDefault ) - : overallocationBehavior( overallocationBehavior_ ) - {} - - DeviceMemoryOverallocationCreateInfoAMD( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceMemoryOverallocationCreateInfoAMD& operator=( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceMemoryOverallocationCreateInfoAMD; - const void* pNext = nullptr; - vk::MemoryOverallocationBehaviorAMD overallocationBehavior; - }; - static_assert( sizeof( DeviceMemoryOverallocationCreateInfoAMD ) == sizeof( VkDeviceMemoryOverallocationCreateInfoAMD ), "layout struct and wrapper have different size!" ); - } - - struct DeviceMemoryOverallocationCreateInfoAMD : public layout::DeviceMemoryOverallocationCreateInfoAMD - { - DeviceMemoryOverallocationCreateInfoAMD( vk::MemoryOverallocationBehaviorAMD overallocationBehavior_ = vk::MemoryOverallocationBehaviorAMD::eDefault ) - : layout::DeviceMemoryOverallocationCreateInfoAMD( overallocationBehavior_ ) - {} - - DeviceMemoryOverallocationCreateInfoAMD( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) - : layout::DeviceMemoryOverallocationCreateInfoAMD( rhs ) - {} - - DeviceMemoryOverallocationCreateInfoAMD& operator=( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DeviceMemoryOverallocationCreateInfoAMD & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DeviceMemoryOverallocationCreateInfoAMD & setOverallocationBehavior( vk::MemoryOverallocationBehaviorAMD overallocationBehavior_ ) - { - overallocationBehavior = overallocationBehavior_; - return *this; - } - - operator VkDeviceMemoryOverallocationCreateInfoAMD const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceMemoryOverallocationCreateInfoAMD &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceMemoryOverallocationCreateInfoAMD const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( overallocationBehavior == rhs.overallocationBehavior ); - } - - bool operator!=( DeviceMemoryOverallocationCreateInfoAMD const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceMemoryOverallocationCreateInfoAMD::sType; - }; - static_assert( sizeof( DeviceMemoryOverallocationCreateInfoAMD ) == sizeof( VkDeviceMemoryOverallocationCreateInfoAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceQueueGlobalPriorityCreateInfoEXT - { - protected: - DeviceQueueGlobalPriorityCreateInfoEXT( vk::QueueGlobalPriorityEXT globalPriority_ = vk::QueueGlobalPriorityEXT::eLow ) - : globalPriority( globalPriority_ ) - {} - - DeviceQueueGlobalPriorityCreateInfoEXT( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceQueueGlobalPriorityCreateInfoEXT& operator=( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT; - const void* pNext = nullptr; - vk::QueueGlobalPriorityEXT globalPriority; - }; - static_assert( sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) == sizeof( VkDeviceQueueGlobalPriorityCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct DeviceQueueGlobalPriorityCreateInfoEXT : public layout::DeviceQueueGlobalPriorityCreateInfoEXT - { - DeviceQueueGlobalPriorityCreateInfoEXT( vk::QueueGlobalPriorityEXT globalPriority_ = vk::QueueGlobalPriorityEXT::eLow ) - : layout::DeviceQueueGlobalPriorityCreateInfoEXT( globalPriority_ ) - {} - - DeviceQueueGlobalPriorityCreateInfoEXT( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) - : layout::DeviceQueueGlobalPriorityCreateInfoEXT( rhs ) - {} - - DeviceQueueGlobalPriorityCreateInfoEXT& operator=( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DeviceQueueGlobalPriorityCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DeviceQueueGlobalPriorityCreateInfoEXT & setGlobalPriority( vk::QueueGlobalPriorityEXT globalPriority_ ) - { - globalPriority = globalPriority_; - return *this; - } - - operator VkDeviceQueueGlobalPriorityCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceQueueGlobalPriorityCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceQueueGlobalPriorityCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( globalPriority == rhs.globalPriority ); - } - - bool operator!=( DeviceQueueGlobalPriorityCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceQueueGlobalPriorityCreateInfoEXT::sType; - }; - static_assert( sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) == sizeof( VkDeviceQueueGlobalPriorityCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DeviceQueueInfo2 - { - protected: - DeviceQueueInfo2( vk::DeviceQueueCreateFlags flags_ = vk::DeviceQueueCreateFlags(), - uint32_t queueFamilyIndex_ = 0, - uint32_t queueIndex_ = 0 ) - : flags( flags_ ) - , queueFamilyIndex( queueFamilyIndex_ ) - , queueIndex( queueIndex_ ) - {} - - DeviceQueueInfo2( VkDeviceQueueInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DeviceQueueInfo2& operator=( VkDeviceQueueInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDeviceQueueInfo2; - const void* pNext = nullptr; - vk::DeviceQueueCreateFlags flags; - uint32_t queueFamilyIndex; - uint32_t queueIndex; - }; - static_assert( sizeof( DeviceQueueInfo2 ) == sizeof( VkDeviceQueueInfo2 ), "layout struct and wrapper have different size!" ); - } - - struct DeviceQueueInfo2 : public layout::DeviceQueueInfo2 - { - DeviceQueueInfo2( vk::DeviceQueueCreateFlags flags_ = vk::DeviceQueueCreateFlags(), - uint32_t queueFamilyIndex_ = 0, - uint32_t queueIndex_ = 0 ) - : layout::DeviceQueueInfo2( flags_, queueFamilyIndex_, queueIndex_ ) - {} - - DeviceQueueInfo2( VkDeviceQueueInfo2 const & rhs ) - : layout::DeviceQueueInfo2( rhs ) - {} - - DeviceQueueInfo2& operator=( VkDeviceQueueInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DeviceQueueInfo2 & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DeviceQueueInfo2 & setFlags( vk::DeviceQueueCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - DeviceQueueInfo2 & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) - { - queueFamilyIndex = queueFamilyIndex_; - return *this; - } - - DeviceQueueInfo2 & setQueueIndex( uint32_t queueIndex_ ) - { - queueIndex = queueIndex_; - return *this; - } - - operator VkDeviceQueueInfo2 const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDeviceQueueInfo2 &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DeviceQueueInfo2 const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( queueFamilyIndex == rhs.queueFamilyIndex ) - && ( queueIndex == rhs.queueIndex ); - } - - bool operator!=( DeviceQueueInfo2 const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DeviceQueueInfo2::sType; - }; - static_assert( sizeof( DeviceQueueInfo2 ) == sizeof( VkDeviceQueueInfo2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DispatchIndirectCommand - { - DispatchIndirectCommand( uint32_t x_ = 0, - uint32_t y_ = 0, - uint32_t z_ = 0 ) - : x( x_ ) - , y( y_ ) - , z( z_ ) - {} - - DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DispatchIndirectCommand& operator=( VkDispatchIndirectCommand const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DispatchIndirectCommand & setX( uint32_t x_ ) - { - x = x_; - return *this; - } - - DispatchIndirectCommand & setY( uint32_t y_ ) - { - y = y_; - return *this; - } - - DispatchIndirectCommand & setZ( uint32_t z_ ) - { - z = z_; - return *this; - } - - operator VkDispatchIndirectCommand const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDispatchIndirectCommand &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DispatchIndirectCommand const& rhs ) const - { - return ( x == rhs.x ) - && ( y == rhs.y ) - && ( z == rhs.z ); - } - - bool operator!=( DispatchIndirectCommand const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t x; - uint32_t y; - uint32_t z; - }; - static_assert( sizeof( DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DisplayEventInfoEXT - { - protected: - DisplayEventInfoEXT( vk::DisplayEventTypeEXT displayEvent_ = vk::DisplayEventTypeEXT::eFirstPixelOut ) - : displayEvent( displayEvent_ ) - {} - - DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDisplayEventInfoEXT; - const void* pNext = nullptr; - vk::DisplayEventTypeEXT displayEvent; - }; - static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct DisplayEventInfoEXT : public layout::DisplayEventInfoEXT - { - DisplayEventInfoEXT( vk::DisplayEventTypeEXT displayEvent_ = vk::DisplayEventTypeEXT::eFirstPixelOut ) - : layout::DisplayEventInfoEXT( displayEvent_ ) - {} - - DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs ) - : layout::DisplayEventInfoEXT( rhs ) - {} - - DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DisplayEventInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DisplayEventInfoEXT & setDisplayEvent( vk::DisplayEventTypeEXT displayEvent_ ) - { - displayEvent = displayEvent_; - return *this; - } - - operator VkDisplayEventInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplayEventInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplayEventInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( displayEvent == rhs.displayEvent ); - } - - bool operator!=( DisplayEventInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DisplayEventInfoEXT::sType; - }; - static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DisplayModeParametersKHR - { - DisplayModeParametersKHR( vk::Extent2D visibleRegion_ = vk::Extent2D(), - uint32_t refreshRate_ = 0 ) - : visibleRegion( visibleRegion_ ) - , refreshRate( refreshRate_ ) - {} - - DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DisplayModeParametersKHR& operator=( VkDisplayModeParametersKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DisplayModeParametersKHR & setVisibleRegion( vk::Extent2D visibleRegion_ ) - { - visibleRegion = visibleRegion_; - return *this; - } - - DisplayModeParametersKHR & setRefreshRate( uint32_t refreshRate_ ) - { - refreshRate = refreshRate_; - return *this; - } - - operator VkDisplayModeParametersKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplayModeParametersKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplayModeParametersKHR const& rhs ) const - { - return ( visibleRegion == rhs.visibleRegion ) - && ( refreshRate == rhs.refreshRate ); - } - - bool operator!=( DisplayModeParametersKHR const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::Extent2D visibleRegion; - uint32_t refreshRate; - }; - static_assert( sizeof( DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DisplayModeCreateInfoKHR - { - protected: - DisplayModeCreateInfoKHR( vk::DisplayModeCreateFlagsKHR flags_ = vk::DisplayModeCreateFlagsKHR(), - vk::DisplayModeParametersKHR parameters_ = vk::DisplayModeParametersKHR() ) - : flags( flags_ ) - , parameters( parameters_ ) - {} - - DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDisplayModeCreateInfoKHR; - const void* pNext = nullptr; - vk::DisplayModeCreateFlagsKHR flags; - vk::DisplayModeParametersKHR parameters; - }; - static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct DisplayModeCreateInfoKHR : public layout::DisplayModeCreateInfoKHR - { - DisplayModeCreateInfoKHR( vk::DisplayModeCreateFlagsKHR flags_ = vk::DisplayModeCreateFlagsKHR(), - vk::DisplayModeParametersKHR parameters_ = vk::DisplayModeParametersKHR() ) - : layout::DisplayModeCreateInfoKHR( flags_, parameters_ ) - {} - - DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs ) - : layout::DisplayModeCreateInfoKHR( rhs ) - {} - - DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DisplayModeCreateInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DisplayModeCreateInfoKHR & setFlags( vk::DisplayModeCreateFlagsKHR flags_ ) - { - flags = flags_; - return *this; - } - - DisplayModeCreateInfoKHR & setParameters( vk::DisplayModeParametersKHR parameters_ ) - { - parameters = parameters_; - return *this; - } - - operator VkDisplayModeCreateInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplayModeCreateInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplayModeCreateInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( parameters == rhs.parameters ); - } - - bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DisplayModeCreateInfoKHR::sType; - }; - static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DisplayModePropertiesKHR - { - operator VkDisplayModePropertiesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplayModePropertiesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplayModePropertiesKHR const& rhs ) const - { - return ( displayMode == rhs.displayMode ) - && ( parameters == rhs.parameters ); - } - - bool operator!=( DisplayModePropertiesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::DisplayModeKHR displayMode; - vk::DisplayModeParametersKHR parameters; - }; - static_assert( sizeof( DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DisplayModeProperties2KHR - { - protected: - DisplayModeProperties2KHR( vk::DisplayModePropertiesKHR displayModeProperties_ = vk::DisplayModePropertiesKHR() ) - : displayModeProperties( displayModeProperties_ ) - {} - - DisplayModeProperties2KHR( VkDisplayModeProperties2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DisplayModeProperties2KHR& operator=( VkDisplayModeProperties2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDisplayModeProperties2KHR; - void* pNext = nullptr; - vk::DisplayModePropertiesKHR displayModeProperties; - }; - static_assert( sizeof( DisplayModeProperties2KHR ) == sizeof( VkDisplayModeProperties2KHR ), "layout struct and wrapper have different size!" ); - } - - struct DisplayModeProperties2KHR : public layout::DisplayModeProperties2KHR - { - operator VkDisplayModeProperties2KHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplayModeProperties2KHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplayModeProperties2KHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( displayModeProperties == rhs.displayModeProperties ); - } - - bool operator!=( DisplayModeProperties2KHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DisplayModeProperties2KHR::sType; - }; - static_assert( sizeof( DisplayModeProperties2KHR ) == sizeof( VkDisplayModeProperties2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DisplayNativeHdrSurfaceCapabilitiesAMD - { - protected: - DisplayNativeHdrSurfaceCapabilitiesAMD( vk::Bool32 localDimmingSupport_ = 0 ) - : localDimmingSupport( localDimmingSupport_ ) - {} - - DisplayNativeHdrSurfaceCapabilitiesAMD( VkDisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DisplayNativeHdrSurfaceCapabilitiesAMD& operator=( VkDisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD; - void* pNext = nullptr; - vk::Bool32 localDimmingSupport; - }; - static_assert( sizeof( DisplayNativeHdrSurfaceCapabilitiesAMD ) == sizeof( VkDisplayNativeHdrSurfaceCapabilitiesAMD ), "layout struct and wrapper have different size!" ); - } - - struct DisplayNativeHdrSurfaceCapabilitiesAMD : public layout::DisplayNativeHdrSurfaceCapabilitiesAMD - { - operator VkDisplayNativeHdrSurfaceCapabilitiesAMD const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplayNativeHdrSurfaceCapabilitiesAMD &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplayNativeHdrSurfaceCapabilitiesAMD const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( localDimmingSupport == rhs.localDimmingSupport ); - } - - bool operator!=( DisplayNativeHdrSurfaceCapabilitiesAMD const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DisplayNativeHdrSurfaceCapabilitiesAMD::sType; - }; - static_assert( sizeof( DisplayNativeHdrSurfaceCapabilitiesAMD ) == sizeof( VkDisplayNativeHdrSurfaceCapabilitiesAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DisplayPlaneCapabilitiesKHR - { - operator VkDisplayPlaneCapabilitiesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplayPlaneCapabilitiesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const - { - return ( supportedAlpha == rhs.supportedAlpha ) - && ( minSrcPosition == rhs.minSrcPosition ) - && ( maxSrcPosition == rhs.maxSrcPosition ) - && ( minSrcExtent == rhs.minSrcExtent ) - && ( maxSrcExtent == rhs.maxSrcExtent ) - && ( minDstPosition == rhs.minDstPosition ) - && ( maxDstPosition == rhs.maxDstPosition ) - && ( minDstExtent == rhs.minDstExtent ) - && ( maxDstExtent == rhs.maxDstExtent ); - } - - bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::DisplayPlaneAlphaFlagsKHR supportedAlpha; - vk::Offset2D minSrcPosition; - vk::Offset2D maxSrcPosition; - vk::Extent2D minSrcExtent; - vk::Extent2D maxSrcExtent; - vk::Offset2D minDstPosition; - vk::Offset2D maxDstPosition; - vk::Extent2D minDstExtent; - vk::Extent2D maxDstExtent; - }; - static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DisplayPlaneCapabilities2KHR - { - protected: - DisplayPlaneCapabilities2KHR( vk::DisplayPlaneCapabilitiesKHR capabilities_ = vk::DisplayPlaneCapabilitiesKHR() ) - : capabilities( capabilities_ ) - {} - - DisplayPlaneCapabilities2KHR( VkDisplayPlaneCapabilities2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DisplayPlaneCapabilities2KHR& operator=( VkDisplayPlaneCapabilities2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDisplayPlaneCapabilities2KHR; - void* pNext = nullptr; - vk::DisplayPlaneCapabilitiesKHR capabilities; - }; - static_assert( sizeof( DisplayPlaneCapabilities2KHR ) == sizeof( VkDisplayPlaneCapabilities2KHR ), "layout struct and wrapper have different size!" ); - } - - struct DisplayPlaneCapabilities2KHR : public layout::DisplayPlaneCapabilities2KHR - { - operator VkDisplayPlaneCapabilities2KHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplayPlaneCapabilities2KHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplayPlaneCapabilities2KHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( capabilities == rhs.capabilities ); - } - - bool operator!=( DisplayPlaneCapabilities2KHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DisplayPlaneCapabilities2KHR::sType; - }; - static_assert( sizeof( DisplayPlaneCapabilities2KHR ) == sizeof( VkDisplayPlaneCapabilities2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DisplayPlaneInfo2KHR - { - protected: - DisplayPlaneInfo2KHR( vk::DisplayModeKHR mode_ = vk::DisplayModeKHR(), - uint32_t planeIndex_ = 0 ) - : mode( mode_ ) - , planeIndex( planeIndex_ ) - {} - - DisplayPlaneInfo2KHR( VkDisplayPlaneInfo2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DisplayPlaneInfo2KHR& operator=( VkDisplayPlaneInfo2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDisplayPlaneInfo2KHR; - const void* pNext = nullptr; - vk::DisplayModeKHR mode; - uint32_t planeIndex; - }; - static_assert( sizeof( DisplayPlaneInfo2KHR ) == sizeof( VkDisplayPlaneInfo2KHR ), "layout struct and wrapper have different size!" ); - } - - struct DisplayPlaneInfo2KHR : public layout::DisplayPlaneInfo2KHR - { - DisplayPlaneInfo2KHR( vk::DisplayModeKHR mode_ = vk::DisplayModeKHR(), - uint32_t planeIndex_ = 0 ) - : layout::DisplayPlaneInfo2KHR( mode_, planeIndex_ ) - {} - - DisplayPlaneInfo2KHR( VkDisplayPlaneInfo2KHR const & rhs ) - : layout::DisplayPlaneInfo2KHR( rhs ) - {} - - DisplayPlaneInfo2KHR& operator=( VkDisplayPlaneInfo2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DisplayPlaneInfo2KHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DisplayPlaneInfo2KHR & setMode( vk::DisplayModeKHR mode_ ) - { - mode = mode_; - return *this; - } - - DisplayPlaneInfo2KHR & setPlaneIndex( uint32_t planeIndex_ ) - { - planeIndex = planeIndex_; - return *this; - } - - operator VkDisplayPlaneInfo2KHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplayPlaneInfo2KHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplayPlaneInfo2KHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( mode == rhs.mode ) - && ( planeIndex == rhs.planeIndex ); - } - - bool operator!=( DisplayPlaneInfo2KHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DisplayPlaneInfo2KHR::sType; - }; - static_assert( sizeof( DisplayPlaneInfo2KHR ) == sizeof( VkDisplayPlaneInfo2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DisplayPlanePropertiesKHR - { - operator VkDisplayPlanePropertiesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplayPlanePropertiesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplayPlanePropertiesKHR const& rhs ) const - { - return ( currentDisplay == rhs.currentDisplay ) - && ( currentStackIndex == rhs.currentStackIndex ); - } - - bool operator!=( DisplayPlanePropertiesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::DisplayKHR currentDisplay; - uint32_t currentStackIndex; - }; - static_assert( sizeof( DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DisplayPlaneProperties2KHR - { - protected: - DisplayPlaneProperties2KHR( vk::DisplayPlanePropertiesKHR displayPlaneProperties_ = vk::DisplayPlanePropertiesKHR() ) - : displayPlaneProperties( displayPlaneProperties_ ) - {} - - DisplayPlaneProperties2KHR( VkDisplayPlaneProperties2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DisplayPlaneProperties2KHR& operator=( VkDisplayPlaneProperties2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDisplayPlaneProperties2KHR; - void* pNext = nullptr; - vk::DisplayPlanePropertiesKHR displayPlaneProperties; - }; - static_assert( sizeof( DisplayPlaneProperties2KHR ) == sizeof( VkDisplayPlaneProperties2KHR ), "layout struct and wrapper have different size!" ); - } - - struct DisplayPlaneProperties2KHR : public layout::DisplayPlaneProperties2KHR - { - operator VkDisplayPlaneProperties2KHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplayPlaneProperties2KHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplayPlaneProperties2KHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( displayPlaneProperties == rhs.displayPlaneProperties ); - } - - bool operator!=( DisplayPlaneProperties2KHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DisplayPlaneProperties2KHR::sType; - }; - static_assert( sizeof( DisplayPlaneProperties2KHR ) == sizeof( VkDisplayPlaneProperties2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DisplayPowerInfoEXT - { - protected: - DisplayPowerInfoEXT( vk::DisplayPowerStateEXT powerState_ = vk::DisplayPowerStateEXT::eOff ) - : powerState( powerState_ ) - {} - - DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDisplayPowerInfoEXT; - const void* pNext = nullptr; - vk::DisplayPowerStateEXT powerState; - }; - static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct DisplayPowerInfoEXT : public layout::DisplayPowerInfoEXT - { - DisplayPowerInfoEXT( vk::DisplayPowerStateEXT powerState_ = vk::DisplayPowerStateEXT::eOff ) - : layout::DisplayPowerInfoEXT( powerState_ ) - {} - - DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs ) - : layout::DisplayPowerInfoEXT( rhs ) - {} - - DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DisplayPowerInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DisplayPowerInfoEXT & setPowerState( vk::DisplayPowerStateEXT powerState_ ) - { - powerState = powerState_; - return *this; - } - - operator VkDisplayPowerInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplayPowerInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplayPowerInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( powerState == rhs.powerState ); - } - - bool operator!=( DisplayPowerInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DisplayPowerInfoEXT::sType; - }; - static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DisplayPresentInfoKHR - { - protected: - DisplayPresentInfoKHR( vk::Rect2D srcRect_ = vk::Rect2D(), - vk::Rect2D dstRect_ = vk::Rect2D(), - vk::Bool32 persistent_ = 0 ) - : srcRect( srcRect_ ) - , dstRect( dstRect_ ) - , persistent( persistent_ ) - {} - - DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDisplayPresentInfoKHR; - const void* pNext = nullptr; - vk::Rect2D srcRect; - vk::Rect2D dstRect; - vk::Bool32 persistent; - }; - static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct DisplayPresentInfoKHR : public layout::DisplayPresentInfoKHR - { - DisplayPresentInfoKHR( vk::Rect2D srcRect_ = vk::Rect2D(), - vk::Rect2D dstRect_ = vk::Rect2D(), - vk::Bool32 persistent_ = 0 ) - : layout::DisplayPresentInfoKHR( srcRect_, dstRect_, persistent_ ) - {} - - DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs ) - : layout::DisplayPresentInfoKHR( rhs ) - {} - - DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DisplayPresentInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DisplayPresentInfoKHR & setSrcRect( vk::Rect2D srcRect_ ) - { - srcRect = srcRect_; - return *this; - } - - DisplayPresentInfoKHR & setDstRect( vk::Rect2D dstRect_ ) - { - dstRect = dstRect_; - return *this; - } - - DisplayPresentInfoKHR & setPersistent( vk::Bool32 persistent_ ) - { - persistent = persistent_; - return *this; - } - - operator VkDisplayPresentInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplayPresentInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplayPresentInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcRect == rhs.srcRect ) - && ( dstRect == rhs.dstRect ) - && ( persistent == rhs.persistent ); - } - - bool operator!=( DisplayPresentInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DisplayPresentInfoKHR::sType; - }; - static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DisplayPropertiesKHR - { - operator VkDisplayPropertiesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplayPropertiesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplayPropertiesKHR const& rhs ) const - { - return ( display == rhs.display ) - && ( displayName == rhs.displayName ) - && ( physicalDimensions == rhs.physicalDimensions ) - && ( physicalResolution == rhs.physicalResolution ) - && ( supportedTransforms == rhs.supportedTransforms ) - && ( planeReorderPossible == rhs.planeReorderPossible ) - && ( persistentContent == rhs.persistentContent ); - } - - bool operator!=( DisplayPropertiesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::DisplayKHR display; - const char* displayName; - vk::Extent2D physicalDimensions; - vk::Extent2D physicalResolution; - vk::SurfaceTransformFlagsKHR supportedTransforms; - vk::Bool32 planeReorderPossible; - vk::Bool32 persistentContent; - }; - static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DisplayProperties2KHR - { - protected: - DisplayProperties2KHR( vk::DisplayPropertiesKHR displayProperties_ = vk::DisplayPropertiesKHR() ) - : displayProperties( displayProperties_ ) - {} - - DisplayProperties2KHR( VkDisplayProperties2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DisplayProperties2KHR& operator=( VkDisplayProperties2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDisplayProperties2KHR; - void* pNext = nullptr; - vk::DisplayPropertiesKHR displayProperties; - }; - static_assert( sizeof( DisplayProperties2KHR ) == sizeof( VkDisplayProperties2KHR ), "layout struct and wrapper have different size!" ); - } - - struct DisplayProperties2KHR : public layout::DisplayProperties2KHR - { - operator VkDisplayProperties2KHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplayProperties2KHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplayProperties2KHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( displayProperties == rhs.displayProperties ); - } - - bool operator!=( DisplayProperties2KHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DisplayProperties2KHR::sType; - }; - static_assert( sizeof( DisplayProperties2KHR ) == sizeof( VkDisplayProperties2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DisplaySurfaceCreateInfoKHR - { - protected: - DisplaySurfaceCreateInfoKHR( vk::DisplaySurfaceCreateFlagsKHR flags_ = vk::DisplaySurfaceCreateFlagsKHR(), - vk::DisplayModeKHR displayMode_ = vk::DisplayModeKHR(), - uint32_t planeIndex_ = 0, - uint32_t planeStackIndex_ = 0, - vk::SurfaceTransformFlagBitsKHR transform_ = vk::SurfaceTransformFlagBitsKHR::eIdentity, - float globalAlpha_ = 0, - vk::DisplayPlaneAlphaFlagBitsKHR alphaMode_ = vk::DisplayPlaneAlphaFlagBitsKHR::eOpaque, - vk::Extent2D imageExtent_ = vk::Extent2D() ) - : flags( flags_ ) - , displayMode( displayMode_ ) - , planeIndex( planeIndex_ ) - , planeStackIndex( planeStackIndex_ ) - , transform( transform_ ) - , globalAlpha( globalAlpha_ ) - , alphaMode( alphaMode_ ) - , imageExtent( imageExtent_ ) - {} - - DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDisplaySurfaceCreateInfoKHR; - const void* pNext = nullptr; - vk::DisplaySurfaceCreateFlagsKHR flags; - vk::DisplayModeKHR displayMode; - uint32_t planeIndex; - uint32_t planeStackIndex; - vk::SurfaceTransformFlagBitsKHR transform; - float globalAlpha; - vk::DisplayPlaneAlphaFlagBitsKHR alphaMode; - vk::Extent2D imageExtent; - }; - static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct DisplaySurfaceCreateInfoKHR : public layout::DisplaySurfaceCreateInfoKHR - { - DisplaySurfaceCreateInfoKHR( vk::DisplaySurfaceCreateFlagsKHR flags_ = vk::DisplaySurfaceCreateFlagsKHR(), - vk::DisplayModeKHR displayMode_ = vk::DisplayModeKHR(), - uint32_t planeIndex_ = 0, - uint32_t planeStackIndex_ = 0, - vk::SurfaceTransformFlagBitsKHR transform_ = vk::SurfaceTransformFlagBitsKHR::eIdentity, - float globalAlpha_ = 0, - vk::DisplayPlaneAlphaFlagBitsKHR alphaMode_ = vk::DisplayPlaneAlphaFlagBitsKHR::eOpaque, - vk::Extent2D imageExtent_ = vk::Extent2D() ) - : layout::DisplaySurfaceCreateInfoKHR( flags_, displayMode_, planeIndex_, planeStackIndex_, transform_, globalAlpha_, alphaMode_, imageExtent_ ) - {} - - DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs ) - : layout::DisplaySurfaceCreateInfoKHR( rhs ) - {} - - DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setFlags( vk::DisplaySurfaceCreateFlagsKHR flags_ ) - { - flags = flags_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setDisplayMode( vk::DisplayModeKHR displayMode_ ) - { - displayMode = displayMode_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setPlaneIndex( uint32_t planeIndex_ ) - { - planeIndex = planeIndex_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setPlaneStackIndex( uint32_t planeStackIndex_ ) - { - planeStackIndex = planeStackIndex_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setTransform( vk::SurfaceTransformFlagBitsKHR transform_ ) - { - transform = transform_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setGlobalAlpha( float globalAlpha_ ) - { - globalAlpha = globalAlpha_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setAlphaMode( vk::DisplayPlaneAlphaFlagBitsKHR alphaMode_ ) - { - alphaMode = alphaMode_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setImageExtent( vk::Extent2D imageExtent_ ) - { - imageExtent = imageExtent_; - return *this; - } - - operator VkDisplaySurfaceCreateInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDisplaySurfaceCreateInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( displayMode == rhs.displayMode ) - && ( planeIndex == rhs.planeIndex ) - && ( planeStackIndex == rhs.planeStackIndex ) - && ( transform == rhs.transform ) - && ( globalAlpha == rhs.globalAlpha ) - && ( alphaMode == rhs.alphaMode ) - && ( imageExtent == rhs.imageExtent ); - } - - bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DisplaySurfaceCreateInfoKHR::sType; - }; - static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DrawIndexedIndirectCommand - { - DrawIndexedIndirectCommand( uint32_t indexCount_ = 0, - uint32_t instanceCount_ = 0, - uint32_t firstIndex_ = 0, - int32_t vertexOffset_ = 0, - uint32_t firstInstance_ = 0 ) - : indexCount( indexCount_ ) - , instanceCount( instanceCount_ ) - , firstIndex( firstIndex_ ) - , vertexOffset( vertexOffset_ ) - , firstInstance( firstInstance_ ) - {} - - DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DrawIndexedIndirectCommand& operator=( VkDrawIndexedIndirectCommand const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DrawIndexedIndirectCommand & setIndexCount( uint32_t indexCount_ ) - { - indexCount = indexCount_; - return *this; - } - - DrawIndexedIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) - { - instanceCount = instanceCount_; - return *this; - } - - DrawIndexedIndirectCommand & setFirstIndex( uint32_t firstIndex_ ) - { - firstIndex = firstIndex_; - return *this; - } - - DrawIndexedIndirectCommand & setVertexOffset( int32_t vertexOffset_ ) - { - vertexOffset = vertexOffset_; - return *this; - } - - DrawIndexedIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) - { - firstInstance = firstInstance_; - return *this; - } - - operator VkDrawIndexedIndirectCommand const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDrawIndexedIndirectCommand &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DrawIndexedIndirectCommand const& rhs ) const - { - return ( indexCount == rhs.indexCount ) - && ( instanceCount == rhs.instanceCount ) - && ( firstIndex == rhs.firstIndex ) - && ( vertexOffset == rhs.vertexOffset ) - && ( firstInstance == rhs.firstInstance ); - } - - bool operator!=( DrawIndexedIndirectCommand const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t indexCount; - uint32_t instanceCount; - uint32_t firstIndex; - int32_t vertexOffset; - uint32_t firstInstance; - }; - static_assert( sizeof( DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DrawIndirectCommand - { - DrawIndirectCommand( uint32_t vertexCount_ = 0, - uint32_t instanceCount_ = 0, - uint32_t firstVertex_ = 0, - uint32_t firstInstance_ = 0 ) - : vertexCount( vertexCount_ ) - , instanceCount( instanceCount_ ) - , firstVertex( firstVertex_ ) - , firstInstance( firstInstance_ ) - {} - - DrawIndirectCommand( VkDrawIndirectCommand const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DrawIndirectCommand& operator=( VkDrawIndirectCommand const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DrawIndirectCommand & setVertexCount( uint32_t vertexCount_ ) - { - vertexCount = vertexCount_; - return *this; - } - - DrawIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) - { - instanceCount = instanceCount_; - return *this; - } - - DrawIndirectCommand & setFirstVertex( uint32_t firstVertex_ ) - { - firstVertex = firstVertex_; - return *this; - } - - DrawIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) - { - firstInstance = firstInstance_; - return *this; - } - - operator VkDrawIndirectCommand const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDrawIndirectCommand &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DrawIndirectCommand const& rhs ) const - { - return ( vertexCount == rhs.vertexCount ) - && ( instanceCount == rhs.instanceCount ) - && ( firstVertex == rhs.firstVertex ) - && ( firstInstance == rhs.firstInstance ); - } - - bool operator!=( DrawIndirectCommand const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t vertexCount; - uint32_t instanceCount; - uint32_t firstVertex; - uint32_t firstInstance; - }; - static_assert( sizeof( DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DrawMeshTasksIndirectCommandNV - { - DrawMeshTasksIndirectCommandNV( uint32_t taskCount_ = 0, - uint32_t firstTask_ = 0 ) - : taskCount( taskCount_ ) - , firstTask( firstTask_ ) - {} - - DrawMeshTasksIndirectCommandNV( VkDrawMeshTasksIndirectCommandNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DrawMeshTasksIndirectCommandNV& operator=( VkDrawMeshTasksIndirectCommandNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - DrawMeshTasksIndirectCommandNV & setTaskCount( uint32_t taskCount_ ) - { - taskCount = taskCount_; - return *this; - } - - DrawMeshTasksIndirectCommandNV & setFirstTask( uint32_t firstTask_ ) - { - firstTask = firstTask_; - return *this; - } - - operator VkDrawMeshTasksIndirectCommandNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDrawMeshTasksIndirectCommandNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DrawMeshTasksIndirectCommandNV const& rhs ) const - { - return ( taskCount == rhs.taskCount ) - && ( firstTask == rhs.firstTask ); - } - - bool operator!=( DrawMeshTasksIndirectCommandNV const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t taskCount; - uint32_t firstTask; - }; - static_assert( sizeof( DrawMeshTasksIndirectCommandNV ) == sizeof( VkDrawMeshTasksIndirectCommandNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DrmFormatModifierPropertiesEXT - { - operator VkDrmFormatModifierPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDrmFormatModifierPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DrmFormatModifierPropertiesEXT const& rhs ) const - { - return ( drmFormatModifier == rhs.drmFormatModifier ) - && ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) - && ( drmFormatModifierTilingFeatures == rhs.drmFormatModifierTilingFeatures ); - } - - bool operator!=( DrmFormatModifierPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint64_t drmFormatModifier; - uint32_t drmFormatModifierPlaneCount; - vk::FormatFeatureFlags drmFormatModifierTilingFeatures; - }; - static_assert( sizeof( DrmFormatModifierPropertiesEXT ) == sizeof( VkDrmFormatModifierPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct DrmFormatModifierPropertiesListEXT - { - protected: - DrmFormatModifierPropertiesListEXT( uint32_t drmFormatModifierCount_ = 0, - vk::DrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties_ = nullptr ) - : drmFormatModifierCount( drmFormatModifierCount_ ) - , pDrmFormatModifierProperties( pDrmFormatModifierProperties_ ) - {} - - DrmFormatModifierPropertiesListEXT( VkDrmFormatModifierPropertiesListEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - DrmFormatModifierPropertiesListEXT& operator=( VkDrmFormatModifierPropertiesListEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eDrmFormatModifierPropertiesListEXT; - void* pNext = nullptr; - uint32_t drmFormatModifierCount; - vk::DrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties; - }; - static_assert( sizeof( DrmFormatModifierPropertiesListEXT ) == sizeof( VkDrmFormatModifierPropertiesListEXT ), "layout struct and wrapper have different size!" ); - } - - struct DrmFormatModifierPropertiesListEXT : public layout::DrmFormatModifierPropertiesListEXT - { - operator VkDrmFormatModifierPropertiesListEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkDrmFormatModifierPropertiesListEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( DrmFormatModifierPropertiesListEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( drmFormatModifierCount == rhs.drmFormatModifierCount ) - && ( pDrmFormatModifierProperties == rhs.pDrmFormatModifierProperties ); - } - - bool operator!=( DrmFormatModifierPropertiesListEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::DrmFormatModifierPropertiesListEXT::sType; - }; - static_assert( sizeof( DrmFormatModifierPropertiesListEXT ) == sizeof( VkDrmFormatModifierPropertiesListEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct EventCreateInfo - { - protected: - EventCreateInfo( vk::EventCreateFlags flags_ = vk::EventCreateFlags() ) - : flags( flags_ ) - {} - - EventCreateInfo( VkEventCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - EventCreateInfo& operator=( VkEventCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eEventCreateInfo; - const void* pNext = nullptr; - vk::EventCreateFlags flags; - }; - static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct EventCreateInfo : public layout::EventCreateInfo - { - EventCreateInfo( vk::EventCreateFlags flags_ = vk::EventCreateFlags() ) - : layout::EventCreateInfo( flags_ ) - {} - - EventCreateInfo( VkEventCreateInfo const & rhs ) - : layout::EventCreateInfo( rhs ) - {} - - EventCreateInfo& operator=( VkEventCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - EventCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - EventCreateInfo & setFlags( vk::EventCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - operator VkEventCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkEventCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( EventCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ); - } - - bool operator!=( EventCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::EventCreateInfo::sType; - }; - static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ExportFenceCreateInfo - { - protected: - ExportFenceCreateInfo( vk::ExternalFenceHandleTypeFlags handleTypes_ = vk::ExternalFenceHandleTypeFlags() ) - : handleTypes( handleTypes_ ) - {} - - ExportFenceCreateInfo( VkExportFenceCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExportFenceCreateInfo& operator=( VkExportFenceCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExportFenceCreateInfo; - const void* pNext = nullptr; - vk::ExternalFenceHandleTypeFlags handleTypes; - }; - static_assert( sizeof( ExportFenceCreateInfo ) == sizeof( VkExportFenceCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct ExportFenceCreateInfo : public layout::ExportFenceCreateInfo - { - ExportFenceCreateInfo( vk::ExternalFenceHandleTypeFlags handleTypes_ = vk::ExternalFenceHandleTypeFlags() ) - : layout::ExportFenceCreateInfo( handleTypes_ ) - {} - - ExportFenceCreateInfo( VkExportFenceCreateInfo const & rhs ) - : layout::ExportFenceCreateInfo( rhs ) - {} - - ExportFenceCreateInfo& operator=( VkExportFenceCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ExportFenceCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ExportFenceCreateInfo & setHandleTypes( vk::ExternalFenceHandleTypeFlags handleTypes_ ) - { - handleTypes = handleTypes_; - return *this; - } - - operator VkExportFenceCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExportFenceCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExportFenceCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleTypes == rhs.handleTypes ); - } - - bool operator!=( ExportFenceCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExportFenceCreateInfo::sType; - }; - static_assert( sizeof( ExportFenceCreateInfo ) == sizeof( VkExportFenceCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct ExportFenceWin32HandleInfoKHR - { - protected: - ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, - DWORD dwAccess_ = 0, - LPCWSTR name_ = nullptr ) - : pAttributes( pAttributes_ ) - , dwAccess( dwAccess_ ) - , name( name_ ) - {} - - ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExportFenceWin32HandleInfoKHR& operator=( VkExportFenceWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExportFenceWin32HandleInfoKHR; - const void* pNext = nullptr; - const SECURITY_ATTRIBUTES* pAttributes; - DWORD dwAccess; - LPCWSTR name; - }; - static_assert( sizeof( ExportFenceWin32HandleInfoKHR ) == sizeof( VkExportFenceWin32HandleInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct ExportFenceWin32HandleInfoKHR : public layout::ExportFenceWin32HandleInfoKHR - { - ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, - DWORD dwAccess_ = 0, - LPCWSTR name_ = nullptr ) - : layout::ExportFenceWin32HandleInfoKHR( pAttributes_, dwAccess_, name_ ) - {} - - ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs ) - : layout::ExportFenceWin32HandleInfoKHR( rhs ) - {} - - ExportFenceWin32HandleInfoKHR& operator=( VkExportFenceWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ExportFenceWin32HandleInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ExportFenceWin32HandleInfoKHR & setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ ) - { - pAttributes = pAttributes_; - return *this; - } - - ExportFenceWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) - { - dwAccess = dwAccess_; - return *this; - } - - ExportFenceWin32HandleInfoKHR & setName( LPCWSTR name_ ) - { - name = name_; - return *this; - } - - operator VkExportFenceWin32HandleInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExportFenceWin32HandleInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExportFenceWin32HandleInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pAttributes == rhs.pAttributes ) - && ( dwAccess == rhs.dwAccess ) - && ( name == rhs.name ); - } - - bool operator!=( ExportFenceWin32HandleInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExportFenceWin32HandleInfoKHR::sType; - }; - static_assert( sizeof( ExportFenceWin32HandleInfoKHR ) == sizeof( VkExportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - namespace layout - { - struct ExportMemoryAllocateInfo - { - protected: - ExportMemoryAllocateInfo( vk::ExternalMemoryHandleTypeFlags handleTypes_ = vk::ExternalMemoryHandleTypeFlags() ) - : handleTypes( handleTypes_ ) - {} - - ExportMemoryAllocateInfo( VkExportMemoryAllocateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExportMemoryAllocateInfo& operator=( VkExportMemoryAllocateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExportMemoryAllocateInfo; - const void* pNext = nullptr; - vk::ExternalMemoryHandleTypeFlags handleTypes; - }; - static_assert( sizeof( ExportMemoryAllocateInfo ) == sizeof( VkExportMemoryAllocateInfo ), "layout struct and wrapper have different size!" ); - } - - struct ExportMemoryAllocateInfo : public layout::ExportMemoryAllocateInfo - { - ExportMemoryAllocateInfo( vk::ExternalMemoryHandleTypeFlags handleTypes_ = vk::ExternalMemoryHandleTypeFlags() ) - : layout::ExportMemoryAllocateInfo( handleTypes_ ) - {} - - ExportMemoryAllocateInfo( VkExportMemoryAllocateInfo const & rhs ) - : layout::ExportMemoryAllocateInfo( rhs ) - {} - - ExportMemoryAllocateInfo& operator=( VkExportMemoryAllocateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ExportMemoryAllocateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ExportMemoryAllocateInfo & setHandleTypes( vk::ExternalMemoryHandleTypeFlags handleTypes_ ) - { - handleTypes = handleTypes_; - return *this; - } - - operator VkExportMemoryAllocateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExportMemoryAllocateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExportMemoryAllocateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleTypes == rhs.handleTypes ); - } - - bool operator!=( ExportMemoryAllocateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExportMemoryAllocateInfo::sType; - }; - static_assert( sizeof( ExportMemoryAllocateInfo ) == sizeof( VkExportMemoryAllocateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ExportMemoryAllocateInfoNV - { - protected: - ExportMemoryAllocateInfoNV( vk::ExternalMemoryHandleTypeFlagsNV handleTypes_ = vk::ExternalMemoryHandleTypeFlagsNV() ) - : handleTypes( handleTypes_ ) - {} - - ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExportMemoryAllocateInfoNV; - const void* pNext = nullptr; - vk::ExternalMemoryHandleTypeFlagsNV handleTypes; - }; - static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct ExportMemoryAllocateInfoNV : public layout::ExportMemoryAllocateInfoNV - { - ExportMemoryAllocateInfoNV( vk::ExternalMemoryHandleTypeFlagsNV handleTypes_ = vk::ExternalMemoryHandleTypeFlagsNV() ) - : layout::ExportMemoryAllocateInfoNV( handleTypes_ ) - {} - - ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs ) - : layout::ExportMemoryAllocateInfoNV( rhs ) - {} - - ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ExportMemoryAllocateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ExportMemoryAllocateInfoNV & setHandleTypes( vk::ExternalMemoryHandleTypeFlagsNV handleTypes_ ) - { - handleTypes = handleTypes_; - return *this; - } - - operator VkExportMemoryAllocateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExportMemoryAllocateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleTypes == rhs.handleTypes ); - } - - bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExportMemoryAllocateInfoNV::sType; - }; - static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct ExportMemoryWin32HandleInfoKHR - { - protected: - ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, - DWORD dwAccess_ = 0, - LPCWSTR name_ = nullptr ) - : pAttributes( pAttributes_ ) - , dwAccess( dwAccess_ ) - , name( name_ ) - {} - - ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExportMemoryWin32HandleInfoKHR& operator=( VkExportMemoryWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExportMemoryWin32HandleInfoKHR; - const void* pNext = nullptr; - const SECURITY_ATTRIBUTES* pAttributes; - DWORD dwAccess; - LPCWSTR name; - }; - static_assert( sizeof( ExportMemoryWin32HandleInfoKHR ) == sizeof( VkExportMemoryWin32HandleInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct ExportMemoryWin32HandleInfoKHR : public layout::ExportMemoryWin32HandleInfoKHR - { - ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, - DWORD dwAccess_ = 0, - LPCWSTR name_ = nullptr ) - : layout::ExportMemoryWin32HandleInfoKHR( pAttributes_, dwAccess_, name_ ) - {} - - ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs ) - : layout::ExportMemoryWin32HandleInfoKHR( rhs ) - {} - - ExportMemoryWin32HandleInfoKHR& operator=( VkExportMemoryWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ExportMemoryWin32HandleInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ExportMemoryWin32HandleInfoKHR & setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ ) - { - pAttributes = pAttributes_; - return *this; - } - - ExportMemoryWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) - { - dwAccess = dwAccess_; - return *this; - } - - ExportMemoryWin32HandleInfoKHR & setName( LPCWSTR name_ ) - { - name = name_; - return *this; - } - - operator VkExportMemoryWin32HandleInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExportMemoryWin32HandleInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExportMemoryWin32HandleInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pAttributes == rhs.pAttributes ) - && ( dwAccess == rhs.dwAccess ) - && ( name == rhs.name ); - } - - bool operator!=( ExportMemoryWin32HandleInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExportMemoryWin32HandleInfoKHR::sType; - }; - static_assert( sizeof( ExportMemoryWin32HandleInfoKHR ) == sizeof( VkExportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct ExportMemoryWin32HandleInfoNV - { - protected: - ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, - DWORD dwAccess_ = 0 ) - : pAttributes( pAttributes_ ) - , dwAccess( dwAccess_ ) - {} - - ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExportMemoryWin32HandleInfoNV; - const void* pNext = nullptr; - const SECURITY_ATTRIBUTES* pAttributes; - DWORD dwAccess; - }; - static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct ExportMemoryWin32HandleInfoNV : public layout::ExportMemoryWin32HandleInfoNV - { - ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, - DWORD dwAccess_ = 0 ) - : layout::ExportMemoryWin32HandleInfoNV( pAttributes_, dwAccess_ ) - {} - - ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs ) - : layout::ExportMemoryWin32HandleInfoNV( rhs ) - {} - - ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ExportMemoryWin32HandleInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ExportMemoryWin32HandleInfoNV & setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ ) - { - pAttributes = pAttributes_; - return *this; - } - - ExportMemoryWin32HandleInfoNV & setDwAccess( DWORD dwAccess_ ) - { - dwAccess = dwAccess_; - return *this; - } - - operator VkExportMemoryWin32HandleInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExportMemoryWin32HandleInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pAttributes == rhs.pAttributes ) - && ( dwAccess == rhs.dwAccess ); - } - - bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExportMemoryWin32HandleInfoNV::sType; - }; - static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - namespace layout - { - struct ExportSemaphoreCreateInfo - { - protected: - ExportSemaphoreCreateInfo( vk::ExternalSemaphoreHandleTypeFlags handleTypes_ = vk::ExternalSemaphoreHandleTypeFlags() ) - : handleTypes( handleTypes_ ) - {} - - ExportSemaphoreCreateInfo( VkExportSemaphoreCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExportSemaphoreCreateInfo& operator=( VkExportSemaphoreCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExportSemaphoreCreateInfo; - const void* pNext = nullptr; - vk::ExternalSemaphoreHandleTypeFlags handleTypes; - }; - static_assert( sizeof( ExportSemaphoreCreateInfo ) == sizeof( VkExportSemaphoreCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct ExportSemaphoreCreateInfo : public layout::ExportSemaphoreCreateInfo - { - ExportSemaphoreCreateInfo( vk::ExternalSemaphoreHandleTypeFlags handleTypes_ = vk::ExternalSemaphoreHandleTypeFlags() ) - : layout::ExportSemaphoreCreateInfo( handleTypes_ ) - {} - - ExportSemaphoreCreateInfo( VkExportSemaphoreCreateInfo const & rhs ) - : layout::ExportSemaphoreCreateInfo( rhs ) - {} - - ExportSemaphoreCreateInfo& operator=( VkExportSemaphoreCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ExportSemaphoreCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ExportSemaphoreCreateInfo & setHandleTypes( vk::ExternalSemaphoreHandleTypeFlags handleTypes_ ) - { - handleTypes = handleTypes_; - return *this; - } - - operator VkExportSemaphoreCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExportSemaphoreCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExportSemaphoreCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleTypes == rhs.handleTypes ); - } - - bool operator!=( ExportSemaphoreCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExportSemaphoreCreateInfo::sType; - }; - static_assert( sizeof( ExportSemaphoreCreateInfo ) == sizeof( VkExportSemaphoreCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct ExportSemaphoreWin32HandleInfoKHR - { - protected: - ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, - DWORD dwAccess_ = 0, - LPCWSTR name_ = nullptr ) - : pAttributes( pAttributes_ ) - , dwAccess( dwAccess_ ) - , name( name_ ) - {} - - ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExportSemaphoreWin32HandleInfoKHR& operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExportSemaphoreWin32HandleInfoKHR; - const void* pNext = nullptr; - const SECURITY_ATTRIBUTES* pAttributes; - DWORD dwAccess; - LPCWSTR name; - }; - static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHR ) == sizeof( VkExportSemaphoreWin32HandleInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct ExportSemaphoreWin32HandleInfoKHR : public layout::ExportSemaphoreWin32HandleInfoKHR - { - ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, - DWORD dwAccess_ = 0, - LPCWSTR name_ = nullptr ) - : layout::ExportSemaphoreWin32HandleInfoKHR( pAttributes_, dwAccess_, name_ ) - {} - - ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) - : layout::ExportSemaphoreWin32HandleInfoKHR( rhs ) - {} - - ExportSemaphoreWin32HandleInfoKHR& operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ExportSemaphoreWin32HandleInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ExportSemaphoreWin32HandleInfoKHR & setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ ) - { - pAttributes = pAttributes_; - return *this; - } - - ExportSemaphoreWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) - { - dwAccess = dwAccess_; - return *this; - } - - ExportSemaphoreWin32HandleInfoKHR & setName( LPCWSTR name_ ) - { - name = name_; - return *this; - } - - operator VkExportSemaphoreWin32HandleInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExportSemaphoreWin32HandleInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pAttributes == rhs.pAttributes ) - && ( dwAccess == rhs.dwAccess ) - && ( name == rhs.name ); - } - - bool operator!=( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExportSemaphoreWin32HandleInfoKHR::sType; - }; - static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHR ) == sizeof( VkExportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - struct ExtensionProperties - { - operator VkExtensionProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExtensionProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExtensionProperties const& rhs ) const - { - return ( memcmp( extensionName, rhs.extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 ) - && ( specVersion == rhs.specVersion ); - } - - bool operator!=( ExtensionProperties const& rhs ) const - { - return !operator==( rhs ); - } - - public: - char extensionName[VK_MAX_EXTENSION_NAME_SIZE]; - uint32_t specVersion; - }; - static_assert( sizeof( ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ExternalMemoryProperties - { - operator VkExternalMemoryProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExternalMemoryProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExternalMemoryProperties const& rhs ) const - { - return ( externalMemoryFeatures == rhs.externalMemoryFeatures ) - && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) - && ( compatibleHandleTypes == rhs.compatibleHandleTypes ); - } - - bool operator!=( ExternalMemoryProperties const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ExternalMemoryFeatureFlags externalMemoryFeatures; - vk::ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes; - vk::ExternalMemoryHandleTypeFlags compatibleHandleTypes; - }; - static_assert( sizeof( ExternalMemoryProperties ) == sizeof( VkExternalMemoryProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ExternalBufferProperties - { - protected: - ExternalBufferProperties( vk::ExternalMemoryProperties externalMemoryProperties_ = vk::ExternalMemoryProperties() ) - : externalMemoryProperties( externalMemoryProperties_ ) - {} - - ExternalBufferProperties( VkExternalBufferProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExternalBufferProperties& operator=( VkExternalBufferProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExternalBufferProperties; - void* pNext = nullptr; - vk::ExternalMemoryProperties externalMemoryProperties; - }; - static_assert( sizeof( ExternalBufferProperties ) == sizeof( VkExternalBufferProperties ), "layout struct and wrapper have different size!" ); - } - - struct ExternalBufferProperties : public layout::ExternalBufferProperties - { - operator VkExternalBufferProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExternalBufferProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExternalBufferProperties const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( externalMemoryProperties == rhs.externalMemoryProperties ); - } - - bool operator!=( ExternalBufferProperties const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExternalBufferProperties::sType; - }; - static_assert( sizeof( ExternalBufferProperties ) == sizeof( VkExternalBufferProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ExternalFenceProperties - { - protected: - ExternalFenceProperties( vk::ExternalFenceHandleTypeFlags exportFromImportedHandleTypes_ = vk::ExternalFenceHandleTypeFlags(), - vk::ExternalFenceHandleTypeFlags compatibleHandleTypes_ = vk::ExternalFenceHandleTypeFlags(), - vk::ExternalFenceFeatureFlags externalFenceFeatures_ = vk::ExternalFenceFeatureFlags() ) - : exportFromImportedHandleTypes( exportFromImportedHandleTypes_ ) - , compatibleHandleTypes( compatibleHandleTypes_ ) - , externalFenceFeatures( externalFenceFeatures_ ) - {} - - ExternalFenceProperties( VkExternalFenceProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExternalFenceProperties& operator=( VkExternalFenceProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExternalFenceProperties; - void* pNext = nullptr; - vk::ExternalFenceHandleTypeFlags exportFromImportedHandleTypes; - vk::ExternalFenceHandleTypeFlags compatibleHandleTypes; - vk::ExternalFenceFeatureFlags externalFenceFeatures; - }; - static_assert( sizeof( ExternalFenceProperties ) == sizeof( VkExternalFenceProperties ), "layout struct and wrapper have different size!" ); - } - - struct ExternalFenceProperties : public layout::ExternalFenceProperties - { - operator VkExternalFenceProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExternalFenceProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExternalFenceProperties const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) - && ( compatibleHandleTypes == rhs.compatibleHandleTypes ) - && ( externalFenceFeatures == rhs.externalFenceFeatures ); - } - - bool operator!=( ExternalFenceProperties const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExternalFenceProperties::sType; - }; - static_assert( sizeof( ExternalFenceProperties ) == sizeof( VkExternalFenceProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - - namespace layout - { - struct ExternalFormatANDROID - { - protected: - ExternalFormatANDROID( uint64_t externalFormat_ = 0 ) - : externalFormat( externalFormat_ ) - {} - - ExternalFormatANDROID( VkExternalFormatANDROID const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExternalFormatANDROID& operator=( VkExternalFormatANDROID const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExternalFormatANDROID; - void* pNext = nullptr; - uint64_t externalFormat; - }; - static_assert( sizeof( ExternalFormatANDROID ) == sizeof( VkExternalFormatANDROID ), "layout struct and wrapper have different size!" ); - } - - struct ExternalFormatANDROID : public layout::ExternalFormatANDROID - { - ExternalFormatANDROID( uint64_t externalFormat_ = 0 ) - : layout::ExternalFormatANDROID( externalFormat_ ) - {} - - ExternalFormatANDROID( VkExternalFormatANDROID const & rhs ) - : layout::ExternalFormatANDROID( rhs ) - {} - - ExternalFormatANDROID& operator=( VkExternalFormatANDROID const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ExternalFormatANDROID & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ExternalFormatANDROID & setExternalFormat( uint64_t externalFormat_ ) - { - externalFormat = externalFormat_; - return *this; - } - - operator VkExternalFormatANDROID const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExternalFormatANDROID &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExternalFormatANDROID const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( externalFormat == rhs.externalFormat ); - } - - bool operator!=( ExternalFormatANDROID const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExternalFormatANDROID::sType; - }; - static_assert( sizeof( ExternalFormatANDROID ) == sizeof( VkExternalFormatANDROID ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - namespace layout - { - struct ExternalImageFormatProperties - { - protected: - ExternalImageFormatProperties( vk::ExternalMemoryProperties externalMemoryProperties_ = vk::ExternalMemoryProperties() ) - : externalMemoryProperties( externalMemoryProperties_ ) - {} - - ExternalImageFormatProperties( VkExternalImageFormatProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExternalImageFormatProperties& operator=( VkExternalImageFormatProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExternalImageFormatProperties; - void* pNext = nullptr; - vk::ExternalMemoryProperties externalMemoryProperties; - }; - static_assert( sizeof( ExternalImageFormatProperties ) == sizeof( VkExternalImageFormatProperties ), "layout struct and wrapper have different size!" ); - } - - struct ExternalImageFormatProperties : public layout::ExternalImageFormatProperties - { - operator VkExternalImageFormatProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExternalImageFormatProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExternalImageFormatProperties const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( externalMemoryProperties == rhs.externalMemoryProperties ); - } - - bool operator!=( ExternalImageFormatProperties const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExternalImageFormatProperties::sType; - }; - static_assert( sizeof( ExternalImageFormatProperties ) == sizeof( VkExternalImageFormatProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ImageFormatProperties - { - operator VkImageFormatProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageFormatProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageFormatProperties const& rhs ) const - { - return ( maxExtent == rhs.maxExtent ) - && ( maxMipLevels == rhs.maxMipLevels ) - && ( maxArrayLayers == rhs.maxArrayLayers ) - && ( sampleCounts == rhs.sampleCounts ) - && ( maxResourceSize == rhs.maxResourceSize ); - } - - bool operator!=( ImageFormatProperties const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::Extent3D maxExtent; - uint32_t maxMipLevels; - uint32_t maxArrayLayers; - vk::SampleCountFlags sampleCounts; - vk::DeviceSize maxResourceSize; - }; - static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ExternalImageFormatPropertiesNV - { - operator VkExternalImageFormatPropertiesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExternalImageFormatPropertiesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const - { - return ( imageFormatProperties == rhs.imageFormatProperties ) - && ( externalMemoryFeatures == rhs.externalMemoryFeatures ) - && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) - && ( compatibleHandleTypes == rhs.compatibleHandleTypes ); - } - - bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ImageFormatProperties imageFormatProperties; - vk::ExternalMemoryFeatureFlagsNV externalMemoryFeatures; - vk::ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes; - vk::ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes; - }; - static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ExternalMemoryBufferCreateInfo - { - protected: - ExternalMemoryBufferCreateInfo( vk::ExternalMemoryHandleTypeFlags handleTypes_ = vk::ExternalMemoryHandleTypeFlags() ) - : handleTypes( handleTypes_ ) - {} - - ExternalMemoryBufferCreateInfo( VkExternalMemoryBufferCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExternalMemoryBufferCreateInfo& operator=( VkExternalMemoryBufferCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExternalMemoryBufferCreateInfo; - const void* pNext = nullptr; - vk::ExternalMemoryHandleTypeFlags handleTypes; - }; - static_assert( sizeof( ExternalMemoryBufferCreateInfo ) == sizeof( VkExternalMemoryBufferCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct ExternalMemoryBufferCreateInfo : public layout::ExternalMemoryBufferCreateInfo - { - ExternalMemoryBufferCreateInfo( vk::ExternalMemoryHandleTypeFlags handleTypes_ = vk::ExternalMemoryHandleTypeFlags() ) - : layout::ExternalMemoryBufferCreateInfo( handleTypes_ ) - {} - - ExternalMemoryBufferCreateInfo( VkExternalMemoryBufferCreateInfo const & rhs ) - : layout::ExternalMemoryBufferCreateInfo( rhs ) - {} - - ExternalMemoryBufferCreateInfo& operator=( VkExternalMemoryBufferCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ExternalMemoryBufferCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ExternalMemoryBufferCreateInfo & setHandleTypes( vk::ExternalMemoryHandleTypeFlags handleTypes_ ) - { - handleTypes = handleTypes_; - return *this; - } - - operator VkExternalMemoryBufferCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExternalMemoryBufferCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExternalMemoryBufferCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleTypes == rhs.handleTypes ); - } - - bool operator!=( ExternalMemoryBufferCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExternalMemoryBufferCreateInfo::sType; - }; - static_assert( sizeof( ExternalMemoryBufferCreateInfo ) == sizeof( VkExternalMemoryBufferCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ExternalMemoryImageCreateInfo - { - protected: - ExternalMemoryImageCreateInfo( vk::ExternalMemoryHandleTypeFlags handleTypes_ = vk::ExternalMemoryHandleTypeFlags() ) - : handleTypes( handleTypes_ ) - {} - - ExternalMemoryImageCreateInfo( VkExternalMemoryImageCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExternalMemoryImageCreateInfo& operator=( VkExternalMemoryImageCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExternalMemoryImageCreateInfo; - const void* pNext = nullptr; - vk::ExternalMemoryHandleTypeFlags handleTypes; - }; - static_assert( sizeof( ExternalMemoryImageCreateInfo ) == sizeof( VkExternalMemoryImageCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct ExternalMemoryImageCreateInfo : public layout::ExternalMemoryImageCreateInfo - { - ExternalMemoryImageCreateInfo( vk::ExternalMemoryHandleTypeFlags handleTypes_ = vk::ExternalMemoryHandleTypeFlags() ) - : layout::ExternalMemoryImageCreateInfo( handleTypes_ ) - {} - - ExternalMemoryImageCreateInfo( VkExternalMemoryImageCreateInfo const & rhs ) - : layout::ExternalMemoryImageCreateInfo( rhs ) - {} - - ExternalMemoryImageCreateInfo& operator=( VkExternalMemoryImageCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ExternalMemoryImageCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ExternalMemoryImageCreateInfo & setHandleTypes( vk::ExternalMemoryHandleTypeFlags handleTypes_ ) - { - handleTypes = handleTypes_; - return *this; - } - - operator VkExternalMemoryImageCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExternalMemoryImageCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExternalMemoryImageCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleTypes == rhs.handleTypes ); - } - - bool operator!=( ExternalMemoryImageCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExternalMemoryImageCreateInfo::sType; - }; - static_assert( sizeof( ExternalMemoryImageCreateInfo ) == sizeof( VkExternalMemoryImageCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ExternalMemoryImageCreateInfoNV - { - protected: - ExternalMemoryImageCreateInfoNV( vk::ExternalMemoryHandleTypeFlagsNV handleTypes_ = vk::ExternalMemoryHandleTypeFlagsNV() ) - : handleTypes( handleTypes_ ) - {} - - ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExternalMemoryImageCreateInfoNV; - const void* pNext = nullptr; - vk::ExternalMemoryHandleTypeFlagsNV handleTypes; - }; - static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct ExternalMemoryImageCreateInfoNV : public layout::ExternalMemoryImageCreateInfoNV - { - ExternalMemoryImageCreateInfoNV( vk::ExternalMemoryHandleTypeFlagsNV handleTypes_ = vk::ExternalMemoryHandleTypeFlagsNV() ) - : layout::ExternalMemoryImageCreateInfoNV( handleTypes_ ) - {} - - ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs ) - : layout::ExternalMemoryImageCreateInfoNV( rhs ) - {} - - ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ExternalMemoryImageCreateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ExternalMemoryImageCreateInfoNV & setHandleTypes( vk::ExternalMemoryHandleTypeFlagsNV handleTypes_ ) - { - handleTypes = handleTypes_; - return *this; - } - - operator VkExternalMemoryImageCreateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExternalMemoryImageCreateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleTypes == rhs.handleTypes ); - } - - bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExternalMemoryImageCreateInfoNV::sType; - }; - static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ExternalSemaphoreProperties - { - protected: - ExternalSemaphoreProperties( vk::ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes_ = vk::ExternalSemaphoreHandleTypeFlags(), - vk::ExternalSemaphoreHandleTypeFlags compatibleHandleTypes_ = vk::ExternalSemaphoreHandleTypeFlags(), - vk::ExternalSemaphoreFeatureFlags externalSemaphoreFeatures_ = vk::ExternalSemaphoreFeatureFlags() ) - : exportFromImportedHandleTypes( exportFromImportedHandleTypes_ ) - , compatibleHandleTypes( compatibleHandleTypes_ ) - , externalSemaphoreFeatures( externalSemaphoreFeatures_ ) - {} - - ExternalSemaphoreProperties( VkExternalSemaphoreProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ExternalSemaphoreProperties& operator=( VkExternalSemaphoreProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eExternalSemaphoreProperties; - void* pNext = nullptr; - vk::ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes; - vk::ExternalSemaphoreHandleTypeFlags compatibleHandleTypes; - vk::ExternalSemaphoreFeatureFlags externalSemaphoreFeatures; - }; - static_assert( sizeof( ExternalSemaphoreProperties ) == sizeof( VkExternalSemaphoreProperties ), "layout struct and wrapper have different size!" ); - } - - struct ExternalSemaphoreProperties : public layout::ExternalSemaphoreProperties - { - operator VkExternalSemaphoreProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkExternalSemaphoreProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ExternalSemaphoreProperties const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) - && ( compatibleHandleTypes == rhs.compatibleHandleTypes ) - && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures ); - } - - bool operator!=( ExternalSemaphoreProperties const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ExternalSemaphoreProperties::sType; - }; - static_assert( sizeof( ExternalSemaphoreProperties ) == sizeof( VkExternalSemaphoreProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct FenceCreateInfo - { - protected: - FenceCreateInfo( vk::FenceCreateFlags flags_ = vk::FenceCreateFlags() ) - : flags( flags_ ) - {} - - FenceCreateInfo( VkFenceCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eFenceCreateInfo; - const void* pNext = nullptr; - vk::FenceCreateFlags flags; - }; - static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct FenceCreateInfo : public layout::FenceCreateInfo - { - FenceCreateInfo( vk::FenceCreateFlags flags_ = vk::FenceCreateFlags() ) - : layout::FenceCreateInfo( flags_ ) - {} - - FenceCreateInfo( VkFenceCreateInfo const & rhs ) - : layout::FenceCreateInfo( rhs ) - {} - - FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - FenceCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - FenceCreateInfo & setFlags( vk::FenceCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - operator VkFenceCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkFenceCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( FenceCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ); - } - - bool operator!=( FenceCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::FenceCreateInfo::sType; - }; - static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct FenceGetFdInfoKHR - { - protected: - FenceGetFdInfoKHR( vk::Fence fence_ = vk::Fence(), - vk::ExternalFenceHandleTypeFlagBits handleType_ = vk::ExternalFenceHandleTypeFlagBits::eOpaqueFd ) - : fence( fence_ ) - , handleType( handleType_ ) - {} - - FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - FenceGetFdInfoKHR& operator=( VkFenceGetFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eFenceGetFdInfoKHR; - const void* pNext = nullptr; - vk::Fence fence; - vk::ExternalFenceHandleTypeFlagBits handleType; - }; - static_assert( sizeof( FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct FenceGetFdInfoKHR : public layout::FenceGetFdInfoKHR - { - FenceGetFdInfoKHR( vk::Fence fence_ = vk::Fence(), - vk::ExternalFenceHandleTypeFlagBits handleType_ = vk::ExternalFenceHandleTypeFlagBits::eOpaqueFd ) - : layout::FenceGetFdInfoKHR( fence_, handleType_ ) - {} - - FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs ) - : layout::FenceGetFdInfoKHR( rhs ) - {} - - FenceGetFdInfoKHR& operator=( VkFenceGetFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - FenceGetFdInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - FenceGetFdInfoKHR & setFence( vk::Fence fence_ ) - { - fence = fence_; - return *this; - } - - FenceGetFdInfoKHR & setHandleType( vk::ExternalFenceHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - operator VkFenceGetFdInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkFenceGetFdInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( FenceGetFdInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fence == rhs.fence ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( FenceGetFdInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::FenceGetFdInfoKHR::sType; - }; - static_assert( sizeof( FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct FenceGetWin32HandleInfoKHR - { - protected: - FenceGetWin32HandleInfoKHR( vk::Fence fence_ = vk::Fence(), - vk::ExternalFenceHandleTypeFlagBits handleType_ = vk::ExternalFenceHandleTypeFlagBits::eOpaqueFd ) - : fence( fence_ ) - , handleType( handleType_ ) - {} - - FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - FenceGetWin32HandleInfoKHR& operator=( VkFenceGetWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eFenceGetWin32HandleInfoKHR; - const void* pNext = nullptr; - vk::Fence fence; - vk::ExternalFenceHandleTypeFlagBits handleType; - }; - static_assert( sizeof( FenceGetWin32HandleInfoKHR ) == sizeof( VkFenceGetWin32HandleInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct FenceGetWin32HandleInfoKHR : public layout::FenceGetWin32HandleInfoKHR - { - FenceGetWin32HandleInfoKHR( vk::Fence fence_ = vk::Fence(), - vk::ExternalFenceHandleTypeFlagBits handleType_ = vk::ExternalFenceHandleTypeFlagBits::eOpaqueFd ) - : layout::FenceGetWin32HandleInfoKHR( fence_, handleType_ ) - {} - - FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs ) - : layout::FenceGetWin32HandleInfoKHR( rhs ) - {} - - FenceGetWin32HandleInfoKHR& operator=( VkFenceGetWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - FenceGetWin32HandleInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - FenceGetWin32HandleInfoKHR & setFence( vk::Fence fence_ ) - { - fence = fence_; - return *this; - } - - FenceGetWin32HandleInfoKHR & setHandleType( vk::ExternalFenceHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - operator VkFenceGetWin32HandleInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkFenceGetWin32HandleInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( FenceGetWin32HandleInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fence == rhs.fence ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( FenceGetWin32HandleInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::FenceGetWin32HandleInfoKHR::sType; - }; - static_assert( sizeof( FenceGetWin32HandleInfoKHR ) == sizeof( VkFenceGetWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - namespace layout - { - struct FilterCubicImageViewImageFormatPropertiesEXT - { - protected: - FilterCubicImageViewImageFormatPropertiesEXT( vk::Bool32 filterCubic_ = 0, - vk::Bool32 filterCubicMinmax_ = 0 ) - : filterCubic( filterCubic_ ) - , filterCubicMinmax( filterCubicMinmax_ ) - {} - - FilterCubicImageViewImageFormatPropertiesEXT( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - FilterCubicImageViewImageFormatPropertiesEXT& operator=( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eFilterCubicImageViewImageFormatPropertiesEXT; - void* pNext = nullptr; - vk::Bool32 filterCubic; - vk::Bool32 filterCubicMinmax; - }; - static_assert( sizeof( FilterCubicImageViewImageFormatPropertiesEXT ) == sizeof( VkFilterCubicImageViewImageFormatPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct FilterCubicImageViewImageFormatPropertiesEXT : public layout::FilterCubicImageViewImageFormatPropertiesEXT - { - operator VkFilterCubicImageViewImageFormatPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkFilterCubicImageViewImageFormatPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( FilterCubicImageViewImageFormatPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( filterCubic == rhs.filterCubic ) - && ( filterCubicMinmax == rhs.filterCubicMinmax ); - } - - bool operator!=( FilterCubicImageViewImageFormatPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::FilterCubicImageViewImageFormatPropertiesEXT::sType; - }; - static_assert( sizeof( FilterCubicImageViewImageFormatPropertiesEXT ) == sizeof( VkFilterCubicImageViewImageFormatPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct FormatProperties - { - operator VkFormatProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkFormatProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( FormatProperties const& rhs ) const - { - return ( linearTilingFeatures == rhs.linearTilingFeatures ) - && ( optimalTilingFeatures == rhs.optimalTilingFeatures ) - && ( bufferFeatures == rhs.bufferFeatures ); - } - - bool operator!=( FormatProperties const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::FormatFeatureFlags linearTilingFeatures; - vk::FormatFeatureFlags optimalTilingFeatures; - vk::FormatFeatureFlags bufferFeatures; - }; - static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct FormatProperties2 - { - protected: - FormatProperties2( vk::FormatProperties formatProperties_ = vk::FormatProperties() ) - : formatProperties( formatProperties_ ) - {} - - FormatProperties2( VkFormatProperties2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - FormatProperties2& operator=( VkFormatProperties2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eFormatProperties2; - void* pNext = nullptr; - vk::FormatProperties formatProperties; - }; - static_assert( sizeof( FormatProperties2 ) == sizeof( VkFormatProperties2 ), "layout struct and wrapper have different size!" ); - } - - struct FormatProperties2 : public layout::FormatProperties2 - { - operator VkFormatProperties2 const&() const - { - return *reinterpret_cast( this ); - } - - operator VkFormatProperties2 &() - { - return *reinterpret_cast( this ); - } - - bool operator==( FormatProperties2 const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( formatProperties == rhs.formatProperties ); - } - - bool operator!=( FormatProperties2 const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::FormatProperties2::sType; - }; - static_assert( sizeof( FormatProperties2 ) == sizeof( VkFormatProperties2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct FramebufferAttachmentImageInfoKHR - { - protected: - FramebufferAttachmentImageInfoKHR( vk::ImageCreateFlags flags_ = vk::ImageCreateFlags(), - vk::ImageUsageFlags usage_ = vk::ImageUsageFlags(), - uint32_t width_ = 0, - uint32_t height_ = 0, - uint32_t layerCount_ = 0, - uint32_t viewFormatCount_ = 0, - const vk::Format* pViewFormats_ = nullptr ) - : flags( flags_ ) - , usage( usage_ ) - , width( width_ ) - , height( height_ ) - , layerCount( layerCount_ ) - , viewFormatCount( viewFormatCount_ ) - , pViewFormats( pViewFormats_ ) - {} - - FramebufferAttachmentImageInfoKHR( VkFramebufferAttachmentImageInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - FramebufferAttachmentImageInfoKHR& operator=( VkFramebufferAttachmentImageInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eFramebufferAttachmentImageInfoKHR; - const void* pNext = nullptr; - vk::ImageCreateFlags flags; - vk::ImageUsageFlags usage; - uint32_t width; - uint32_t height; - uint32_t layerCount; - uint32_t viewFormatCount; - const vk::Format* pViewFormats; - }; - static_assert( sizeof( FramebufferAttachmentImageInfoKHR ) == sizeof( VkFramebufferAttachmentImageInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct FramebufferAttachmentImageInfoKHR : public layout::FramebufferAttachmentImageInfoKHR - { - FramebufferAttachmentImageInfoKHR( vk::ImageCreateFlags flags_ = vk::ImageCreateFlags(), - vk::ImageUsageFlags usage_ = vk::ImageUsageFlags(), - uint32_t width_ = 0, - uint32_t height_ = 0, - uint32_t layerCount_ = 0, - uint32_t viewFormatCount_ = 0, - const vk::Format* pViewFormats_ = nullptr ) - : layout::FramebufferAttachmentImageInfoKHR( flags_, usage_, width_, height_, layerCount_, viewFormatCount_, pViewFormats_ ) - {} - - FramebufferAttachmentImageInfoKHR( VkFramebufferAttachmentImageInfoKHR const & rhs ) - : layout::FramebufferAttachmentImageInfoKHR( rhs ) - {} - - FramebufferAttachmentImageInfoKHR& operator=( VkFramebufferAttachmentImageInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - FramebufferAttachmentImageInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - FramebufferAttachmentImageInfoKHR & setFlags( vk::ImageCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - FramebufferAttachmentImageInfoKHR & setUsage( vk::ImageUsageFlags usage_ ) - { - usage = usage_; - return *this; - } - - FramebufferAttachmentImageInfoKHR & setWidth( uint32_t width_ ) - { - width = width_; - return *this; - } - - FramebufferAttachmentImageInfoKHR & setHeight( uint32_t height_ ) - { - height = height_; - return *this; - } - - FramebufferAttachmentImageInfoKHR & setLayerCount( uint32_t layerCount_ ) - { - layerCount = layerCount_; - return *this; - } - - FramebufferAttachmentImageInfoKHR & setViewFormatCount( uint32_t viewFormatCount_ ) - { - viewFormatCount = viewFormatCount_; - return *this; - } - - FramebufferAttachmentImageInfoKHR & setPViewFormats( const vk::Format* pViewFormats_ ) - { - pViewFormats = pViewFormats_; - return *this; - } - - operator VkFramebufferAttachmentImageInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkFramebufferAttachmentImageInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( FramebufferAttachmentImageInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( usage == rhs.usage ) - && ( width == rhs.width ) - && ( height == rhs.height ) - && ( layerCount == rhs.layerCount ) - && ( viewFormatCount == rhs.viewFormatCount ) - && ( pViewFormats == rhs.pViewFormats ); - } - - bool operator!=( FramebufferAttachmentImageInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::FramebufferAttachmentImageInfoKHR::sType; - }; - static_assert( sizeof( FramebufferAttachmentImageInfoKHR ) == sizeof( VkFramebufferAttachmentImageInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct FramebufferAttachmentsCreateInfoKHR - { - protected: - FramebufferAttachmentsCreateInfoKHR( uint32_t attachmentImageInfoCount_ = 0, - const vk::FramebufferAttachmentImageInfoKHR* pAttachmentImageInfos_ = nullptr ) - : attachmentImageInfoCount( attachmentImageInfoCount_ ) - , pAttachmentImageInfos( pAttachmentImageInfos_ ) - {} - - FramebufferAttachmentsCreateInfoKHR( VkFramebufferAttachmentsCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - FramebufferAttachmentsCreateInfoKHR& operator=( VkFramebufferAttachmentsCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eFramebufferAttachmentsCreateInfoKHR; - const void* pNext = nullptr; - uint32_t attachmentImageInfoCount; - const vk::FramebufferAttachmentImageInfoKHR* pAttachmentImageInfos; - }; - static_assert( sizeof( FramebufferAttachmentsCreateInfoKHR ) == sizeof( VkFramebufferAttachmentsCreateInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct FramebufferAttachmentsCreateInfoKHR : public layout::FramebufferAttachmentsCreateInfoKHR - { - FramebufferAttachmentsCreateInfoKHR( uint32_t attachmentImageInfoCount_ = 0, - const vk::FramebufferAttachmentImageInfoKHR* pAttachmentImageInfos_ = nullptr ) - : layout::FramebufferAttachmentsCreateInfoKHR( attachmentImageInfoCount_, pAttachmentImageInfos_ ) - {} - - FramebufferAttachmentsCreateInfoKHR( VkFramebufferAttachmentsCreateInfoKHR const & rhs ) - : layout::FramebufferAttachmentsCreateInfoKHR( rhs ) - {} - - FramebufferAttachmentsCreateInfoKHR& operator=( VkFramebufferAttachmentsCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - FramebufferAttachmentsCreateInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - FramebufferAttachmentsCreateInfoKHR & setAttachmentImageInfoCount( uint32_t attachmentImageInfoCount_ ) - { - attachmentImageInfoCount = attachmentImageInfoCount_; - return *this; - } - - FramebufferAttachmentsCreateInfoKHR & setPAttachmentImageInfos( const vk::FramebufferAttachmentImageInfoKHR* pAttachmentImageInfos_ ) - { - pAttachmentImageInfos = pAttachmentImageInfos_; - return *this; - } - - operator VkFramebufferAttachmentsCreateInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkFramebufferAttachmentsCreateInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( FramebufferAttachmentsCreateInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( attachmentImageInfoCount == rhs.attachmentImageInfoCount ) - && ( pAttachmentImageInfos == rhs.pAttachmentImageInfos ); - } - - bool operator!=( FramebufferAttachmentsCreateInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::FramebufferAttachmentsCreateInfoKHR::sType; - }; - static_assert( sizeof( FramebufferAttachmentsCreateInfoKHR ) == sizeof( VkFramebufferAttachmentsCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct FramebufferCreateInfo - { - protected: - FramebufferCreateInfo( vk::FramebufferCreateFlags flags_ = vk::FramebufferCreateFlags(), - vk::RenderPass renderPass_ = vk::RenderPass(), - uint32_t attachmentCount_ = 0, - const vk::ImageView* pAttachments_ = nullptr, - uint32_t width_ = 0, - uint32_t height_ = 0, - uint32_t layers_ = 0 ) - : flags( flags_ ) - , renderPass( renderPass_ ) - , attachmentCount( attachmentCount_ ) - , pAttachments( pAttachments_ ) - , width( width_ ) - , height( height_ ) - , layers( layers_ ) - {} - - FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eFramebufferCreateInfo; - const void* pNext = nullptr; - vk::FramebufferCreateFlags flags; - vk::RenderPass renderPass; - uint32_t attachmentCount; - const vk::ImageView* pAttachments; - uint32_t width; - uint32_t height; - uint32_t layers; - }; - static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct FramebufferCreateInfo : public layout::FramebufferCreateInfo - { - FramebufferCreateInfo( vk::FramebufferCreateFlags flags_ = vk::FramebufferCreateFlags(), - vk::RenderPass renderPass_ = vk::RenderPass(), - uint32_t attachmentCount_ = 0, - const vk::ImageView* pAttachments_ = nullptr, - uint32_t width_ = 0, - uint32_t height_ = 0, - uint32_t layers_ = 0 ) - : layout::FramebufferCreateInfo( flags_, renderPass_, attachmentCount_, pAttachments_, width_, height_, layers_ ) - {} - - FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs ) - : layout::FramebufferCreateInfo( rhs ) - {} - - FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - FramebufferCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - FramebufferCreateInfo & setFlags( vk::FramebufferCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - FramebufferCreateInfo & setRenderPass( vk::RenderPass renderPass_ ) - { - renderPass = renderPass_; - return *this; - } - - FramebufferCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) - { - attachmentCount = attachmentCount_; - return *this; - } - - FramebufferCreateInfo & setPAttachments( const vk::ImageView* pAttachments_ ) - { - pAttachments = pAttachments_; - return *this; - } - - FramebufferCreateInfo & setWidth( uint32_t width_ ) - { - width = width_; - return *this; - } - - FramebufferCreateInfo & setHeight( uint32_t height_ ) - { - height = height_; - return *this; - } - - FramebufferCreateInfo & setLayers( uint32_t layers_ ) - { - layers = layers_; - return *this; - } - - operator VkFramebufferCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkFramebufferCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( FramebufferCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( renderPass == rhs.renderPass ) - && ( attachmentCount == rhs.attachmentCount ) - && ( pAttachments == rhs.pAttachments ) - && ( width == rhs.width ) - && ( height == rhs.height ) - && ( layers == rhs.layers ); - } - - bool operator!=( FramebufferCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::FramebufferCreateInfo::sType; - }; - static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct FramebufferMixedSamplesCombinationNV - { - protected: - FramebufferMixedSamplesCombinationNV( vk::CoverageReductionModeNV coverageReductionMode_ = vk::CoverageReductionModeNV::eMerge, - vk::SampleCountFlagBits rasterizationSamples_ = vk::SampleCountFlagBits::e1, - vk::SampleCountFlags depthStencilSamples_ = vk::SampleCountFlags(), - vk::SampleCountFlags colorSamples_ = vk::SampleCountFlags() ) - : coverageReductionMode( coverageReductionMode_ ) - , rasterizationSamples( rasterizationSamples_ ) - , depthStencilSamples( depthStencilSamples_ ) - , colorSamples( colorSamples_ ) - {} - - FramebufferMixedSamplesCombinationNV( VkFramebufferMixedSamplesCombinationNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - FramebufferMixedSamplesCombinationNV& operator=( VkFramebufferMixedSamplesCombinationNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eFramebufferMixedSamplesCombinationNV; - void* pNext = nullptr; - vk::CoverageReductionModeNV coverageReductionMode; - vk::SampleCountFlagBits rasterizationSamples; - vk::SampleCountFlags depthStencilSamples; - vk::SampleCountFlags colorSamples; - }; - static_assert( sizeof( FramebufferMixedSamplesCombinationNV ) == sizeof( VkFramebufferMixedSamplesCombinationNV ), "layout struct and wrapper have different size!" ); - } - - struct FramebufferMixedSamplesCombinationNV : public layout::FramebufferMixedSamplesCombinationNV - { - operator VkFramebufferMixedSamplesCombinationNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkFramebufferMixedSamplesCombinationNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( FramebufferMixedSamplesCombinationNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( coverageReductionMode == rhs.coverageReductionMode ) - && ( rasterizationSamples == rhs.rasterizationSamples ) - && ( depthStencilSamples == rhs.depthStencilSamples ) - && ( colorSamples == rhs.colorSamples ); - } - - bool operator!=( FramebufferMixedSamplesCombinationNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::FramebufferMixedSamplesCombinationNV::sType; - }; - static_assert( sizeof( FramebufferMixedSamplesCombinationNV ) == sizeof( VkFramebufferMixedSamplesCombinationNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct VertexInputBindingDescription - { - VertexInputBindingDescription( uint32_t binding_ = 0, - uint32_t stride_ = 0, - vk::VertexInputRate inputRate_ = vk::VertexInputRate::eVertex ) - : binding( binding_ ) - , stride( stride_ ) - , inputRate( inputRate_ ) - {} - - VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - VertexInputBindingDescription & setBinding( uint32_t binding_ ) - { - binding = binding_; - return *this; - } - - VertexInputBindingDescription & setStride( uint32_t stride_ ) - { - stride = stride_; - return *this; - } - - VertexInputBindingDescription & setInputRate( vk::VertexInputRate inputRate_ ) - { - inputRate = inputRate_; - return *this; - } - - operator VkVertexInputBindingDescription const&() const - { - return *reinterpret_cast( this ); - } - - operator VkVertexInputBindingDescription &() - { - return *reinterpret_cast( this ); - } - - bool operator==( VertexInputBindingDescription const& rhs ) const - { - return ( binding == rhs.binding ) - && ( stride == rhs.stride ) - && ( inputRate == rhs.inputRate ); - } - - bool operator!=( VertexInputBindingDescription const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t binding; - uint32_t stride; - vk::VertexInputRate inputRate; - }; - static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct VertexInputAttributeDescription - { - VertexInputAttributeDescription( uint32_t location_ = 0, - uint32_t binding_ = 0, - vk::Format format_ = vk::Format::eUndefined, - uint32_t offset_ = 0 ) - : location( location_ ) - , binding( binding_ ) - , format( format_ ) - , offset( offset_ ) - {} - - VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - VertexInputAttributeDescription & setLocation( uint32_t location_ ) - { - location = location_; - return *this; - } - - VertexInputAttributeDescription & setBinding( uint32_t binding_ ) - { - binding = binding_; - return *this; - } - - VertexInputAttributeDescription & setFormat( vk::Format format_ ) - { - format = format_; - return *this; - } - - VertexInputAttributeDescription & setOffset( uint32_t offset_ ) - { - offset = offset_; - return *this; - } - - operator VkVertexInputAttributeDescription const&() const - { - return *reinterpret_cast( this ); - } - - operator VkVertexInputAttributeDescription &() - { - return *reinterpret_cast( this ); - } - - bool operator==( VertexInputAttributeDescription const& rhs ) const - { - return ( location == rhs.location ) - && ( binding == rhs.binding ) - && ( format == rhs.format ) - && ( offset == rhs.offset ); - } - - bool operator!=( VertexInputAttributeDescription const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t location; - uint32_t binding; - vk::Format format; - uint32_t offset; - }; - static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineVertexInputStateCreateInfo - { - protected: - PipelineVertexInputStateCreateInfo( vk::PipelineVertexInputStateCreateFlags flags_ = vk::PipelineVertexInputStateCreateFlags(), - uint32_t vertexBindingDescriptionCount_ = 0, - const vk::VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, - uint32_t vertexAttributeDescriptionCount_ = 0, - const vk::VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr ) - : flags( flags_ ) - , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ ) - , pVertexBindingDescriptions( pVertexBindingDescriptions_ ) - , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ ) - , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ ) - {} - - PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineVertexInputStateCreateInfo; - const void* pNext = nullptr; - vk::PipelineVertexInputStateCreateFlags flags; - uint32_t vertexBindingDescriptionCount; - const vk::VertexInputBindingDescription* pVertexBindingDescriptions; - uint32_t vertexAttributeDescriptionCount; - const vk::VertexInputAttributeDescription* pVertexAttributeDescriptions; - }; - static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct PipelineVertexInputStateCreateInfo : public layout::PipelineVertexInputStateCreateInfo - { - PipelineVertexInputStateCreateInfo( vk::PipelineVertexInputStateCreateFlags flags_ = vk::PipelineVertexInputStateCreateFlags(), - uint32_t vertexBindingDescriptionCount_ = 0, - const vk::VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, - uint32_t vertexAttributeDescriptionCount_ = 0, - const vk::VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr ) - : layout::PipelineVertexInputStateCreateInfo( flags_, vertexBindingDescriptionCount_, pVertexBindingDescriptions_, vertexAttributeDescriptionCount_, pVertexAttributeDescriptions_ ) - {} - - PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs ) - : layout::PipelineVertexInputStateCreateInfo( rhs ) - {} - - PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineVertexInputStateCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineVertexInputStateCreateInfo & setFlags( vk::PipelineVertexInputStateCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - PipelineVertexInputStateCreateInfo & setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ ) - { - vertexBindingDescriptionCount = vertexBindingDescriptionCount_; - return *this; - } - - PipelineVertexInputStateCreateInfo & setPVertexBindingDescriptions( const vk::VertexInputBindingDescription* pVertexBindingDescriptions_ ) - { - pVertexBindingDescriptions = pVertexBindingDescriptions_; - return *this; - } - - PipelineVertexInputStateCreateInfo & setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ ) - { - vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_; - return *this; - } - - PipelineVertexInputStateCreateInfo & setPVertexAttributeDescriptions( const vk::VertexInputAttributeDescription* pVertexAttributeDescriptions_ ) - { - pVertexAttributeDescriptions = pVertexAttributeDescriptions_; - return *this; - } - - operator VkPipelineVertexInputStateCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineVertexInputStateCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount ) - && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions ) - && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount ) - && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions ); - } - - bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineVertexInputStateCreateInfo::sType; - }; - static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineInputAssemblyStateCreateInfo - { - protected: - PipelineInputAssemblyStateCreateInfo( vk::PipelineInputAssemblyStateCreateFlags flags_ = vk::PipelineInputAssemblyStateCreateFlags(), - vk::PrimitiveTopology topology_ = vk::PrimitiveTopology::ePointList, - vk::Bool32 primitiveRestartEnable_ = 0 ) - : flags( flags_ ) - , topology( topology_ ) - , primitiveRestartEnable( primitiveRestartEnable_ ) - {} - - PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineInputAssemblyStateCreateInfo; - const void* pNext = nullptr; - vk::PipelineInputAssemblyStateCreateFlags flags; - vk::PrimitiveTopology topology; - vk::Bool32 primitiveRestartEnable; - }; - static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct PipelineInputAssemblyStateCreateInfo : public layout::PipelineInputAssemblyStateCreateInfo - { - PipelineInputAssemblyStateCreateInfo( vk::PipelineInputAssemblyStateCreateFlags flags_ = vk::PipelineInputAssemblyStateCreateFlags(), - vk::PrimitiveTopology topology_ = vk::PrimitiveTopology::ePointList, - vk::Bool32 primitiveRestartEnable_ = 0 ) - : layout::PipelineInputAssemblyStateCreateInfo( flags_, topology_, primitiveRestartEnable_ ) - {} - - PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs ) - : layout::PipelineInputAssemblyStateCreateInfo( rhs ) - {} - - PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineInputAssemblyStateCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineInputAssemblyStateCreateInfo & setFlags( vk::PipelineInputAssemblyStateCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - PipelineInputAssemblyStateCreateInfo & setTopology( vk::PrimitiveTopology topology_ ) - { - topology = topology_; - return *this; - } - - PipelineInputAssemblyStateCreateInfo & setPrimitiveRestartEnable( vk::Bool32 primitiveRestartEnable_ ) - { - primitiveRestartEnable = primitiveRestartEnable_; - return *this; - } - - operator VkPipelineInputAssemblyStateCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineInputAssemblyStateCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( topology == rhs.topology ) - && ( primitiveRestartEnable == rhs.primitiveRestartEnable ); - } - - bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineInputAssemblyStateCreateInfo::sType; - }; - static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineTessellationStateCreateInfo - { - protected: - PipelineTessellationStateCreateInfo( vk::PipelineTessellationStateCreateFlags flags_ = vk::PipelineTessellationStateCreateFlags(), - uint32_t patchControlPoints_ = 0 ) - : flags( flags_ ) - , patchControlPoints( patchControlPoints_ ) - {} - - PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineTessellationStateCreateInfo; - const void* pNext = nullptr; - vk::PipelineTessellationStateCreateFlags flags; - uint32_t patchControlPoints; - }; - static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct PipelineTessellationStateCreateInfo : public layout::PipelineTessellationStateCreateInfo - { - PipelineTessellationStateCreateInfo( vk::PipelineTessellationStateCreateFlags flags_ = vk::PipelineTessellationStateCreateFlags(), - uint32_t patchControlPoints_ = 0 ) - : layout::PipelineTessellationStateCreateInfo( flags_, patchControlPoints_ ) - {} - - PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs ) - : layout::PipelineTessellationStateCreateInfo( rhs ) - {} - - PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineTessellationStateCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineTessellationStateCreateInfo & setFlags( vk::PipelineTessellationStateCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - PipelineTessellationStateCreateInfo & setPatchControlPoints( uint32_t patchControlPoints_ ) - { - patchControlPoints = patchControlPoints_; - return *this; - } - - operator VkPipelineTessellationStateCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineTessellationStateCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( patchControlPoints == rhs.patchControlPoints ); - } - - bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineTessellationStateCreateInfo::sType; - }; - static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct Viewport - { - Viewport( float x_ = 0, - float y_ = 0, - float width_ = 0, - float height_ = 0, - float minDepth_ = 0, - float maxDepth_ = 0 ) - : x( x_ ) - , y( y_ ) - , width( width_ ) - , height( height_ ) - , minDepth( minDepth_ ) - , maxDepth( maxDepth_ ) - {} - - Viewport( VkViewport const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - Viewport& operator=( VkViewport const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - Viewport & setX( float x_ ) - { - x = x_; - return *this; - } - - Viewport & setY( float y_ ) - { - y = y_; - return *this; - } - - Viewport & setWidth( float width_ ) - { - width = width_; - return *this; - } - - Viewport & setHeight( float height_ ) - { - height = height_; - return *this; - } - - Viewport & setMinDepth( float minDepth_ ) - { - minDepth = minDepth_; - return *this; - } - - Viewport & setMaxDepth( float maxDepth_ ) - { - maxDepth = maxDepth_; - return *this; - } - - operator VkViewport const&() const - { - return *reinterpret_cast( this ); - } - - operator VkViewport &() - { - return *reinterpret_cast( this ); - } - - bool operator==( Viewport const& rhs ) const - { - return ( x == rhs.x ) - && ( y == rhs.y ) - && ( width == rhs.width ) - && ( height == rhs.height ) - && ( minDepth == rhs.minDepth ) - && ( maxDepth == rhs.maxDepth ); - } - - bool operator!=( Viewport const& rhs ) const - { - return !operator==( rhs ); - } - - public: - float x; - float y; - float width; - float height; - float minDepth; - float maxDepth; - }; - static_assert( sizeof( Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineViewportStateCreateInfo - { - protected: - PipelineViewportStateCreateInfo( vk::PipelineViewportStateCreateFlags flags_ = vk::PipelineViewportStateCreateFlags(), - uint32_t viewportCount_ = 0, - const vk::Viewport* pViewports_ = nullptr, - uint32_t scissorCount_ = 0, - const vk::Rect2D* pScissors_ = nullptr ) - : flags( flags_ ) - , viewportCount( viewportCount_ ) - , pViewports( pViewports_ ) - , scissorCount( scissorCount_ ) - , pScissors( pScissors_ ) - {} - - PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineViewportStateCreateInfo; - const void* pNext = nullptr; - vk::PipelineViewportStateCreateFlags flags; - uint32_t viewportCount; - const vk::Viewport* pViewports; - uint32_t scissorCount; - const vk::Rect2D* pScissors; - }; - static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct PipelineViewportStateCreateInfo : public layout::PipelineViewportStateCreateInfo - { - PipelineViewportStateCreateInfo( vk::PipelineViewportStateCreateFlags flags_ = vk::PipelineViewportStateCreateFlags(), - uint32_t viewportCount_ = 0, - const vk::Viewport* pViewports_ = nullptr, - uint32_t scissorCount_ = 0, - const vk::Rect2D* pScissors_ = nullptr ) - : layout::PipelineViewportStateCreateInfo( flags_, viewportCount_, pViewports_, scissorCount_, pScissors_ ) - {} - - PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs ) - : layout::PipelineViewportStateCreateInfo( rhs ) - {} - - PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineViewportStateCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineViewportStateCreateInfo & setFlags( vk::PipelineViewportStateCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - PipelineViewportStateCreateInfo & setViewportCount( uint32_t viewportCount_ ) - { - viewportCount = viewportCount_; - return *this; - } - - PipelineViewportStateCreateInfo & setPViewports( const vk::Viewport* pViewports_ ) - { - pViewports = pViewports_; - return *this; - } - - PipelineViewportStateCreateInfo & setScissorCount( uint32_t scissorCount_ ) - { - scissorCount = scissorCount_; - return *this; - } - - PipelineViewportStateCreateInfo & setPScissors( const vk::Rect2D* pScissors_ ) - { - pScissors = pScissors_; - return *this; - } - - operator VkPipelineViewportStateCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineViewportStateCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineViewportStateCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( viewportCount == rhs.viewportCount ) - && ( pViewports == rhs.pViewports ) - && ( scissorCount == rhs.scissorCount ) - && ( pScissors == rhs.pScissors ); - } - - bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineViewportStateCreateInfo::sType; - }; - static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineRasterizationStateCreateInfo - { - protected: - PipelineRasterizationStateCreateInfo( vk::PipelineRasterizationStateCreateFlags flags_ = vk::PipelineRasterizationStateCreateFlags(), - vk::Bool32 depthClampEnable_ = 0, - vk::Bool32 rasterizerDiscardEnable_ = 0, - vk::PolygonMode polygonMode_ = vk::PolygonMode::eFill, - vk::CullModeFlags cullMode_ = vk::CullModeFlags(), - vk::FrontFace frontFace_ = vk::FrontFace::eCounterClockwise, - vk::Bool32 depthBiasEnable_ = 0, - float depthBiasConstantFactor_ = 0, - float depthBiasClamp_ = 0, - float depthBiasSlopeFactor_ = 0, - float lineWidth_ = 0 ) - : flags( flags_ ) - , depthClampEnable( depthClampEnable_ ) - , rasterizerDiscardEnable( rasterizerDiscardEnable_ ) - , polygonMode( polygonMode_ ) - , cullMode( cullMode_ ) - , frontFace( frontFace_ ) - , depthBiasEnable( depthBiasEnable_ ) - , depthBiasConstantFactor( depthBiasConstantFactor_ ) - , depthBiasClamp( depthBiasClamp_ ) - , depthBiasSlopeFactor( depthBiasSlopeFactor_ ) - , lineWidth( lineWidth_ ) - {} - - PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineRasterizationStateCreateInfo; - const void* pNext = nullptr; - vk::PipelineRasterizationStateCreateFlags flags; - vk::Bool32 depthClampEnable; - vk::Bool32 rasterizerDiscardEnable; - vk::PolygonMode polygonMode; - vk::CullModeFlags cullMode; - vk::FrontFace frontFace; - vk::Bool32 depthBiasEnable; - float depthBiasConstantFactor; - float depthBiasClamp; - float depthBiasSlopeFactor; - float lineWidth; - }; - static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct PipelineRasterizationStateCreateInfo : public layout::PipelineRasterizationStateCreateInfo - { - PipelineRasterizationStateCreateInfo( vk::PipelineRasterizationStateCreateFlags flags_ = vk::PipelineRasterizationStateCreateFlags(), - vk::Bool32 depthClampEnable_ = 0, - vk::Bool32 rasterizerDiscardEnable_ = 0, - vk::PolygonMode polygonMode_ = vk::PolygonMode::eFill, - vk::CullModeFlags cullMode_ = vk::CullModeFlags(), - vk::FrontFace frontFace_ = vk::FrontFace::eCounterClockwise, - vk::Bool32 depthBiasEnable_ = 0, - float depthBiasConstantFactor_ = 0, - float depthBiasClamp_ = 0, - float depthBiasSlopeFactor_ = 0, - float lineWidth_ = 0 ) - : layout::PipelineRasterizationStateCreateInfo( flags_, depthClampEnable_, rasterizerDiscardEnable_, polygonMode_, cullMode_, frontFace_, depthBiasEnable_, depthBiasConstantFactor_, depthBiasClamp_, depthBiasSlopeFactor_, lineWidth_ ) - {} - - PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs ) - : layout::PipelineRasterizationStateCreateInfo( rhs ) - {} - - PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineRasterizationStateCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setFlags( vk::PipelineRasterizationStateCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setDepthClampEnable( vk::Bool32 depthClampEnable_ ) - { - depthClampEnable = depthClampEnable_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setRasterizerDiscardEnable( vk::Bool32 rasterizerDiscardEnable_ ) - { - rasterizerDiscardEnable = rasterizerDiscardEnable_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setPolygonMode( vk::PolygonMode polygonMode_ ) - { - polygonMode = polygonMode_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setCullMode( vk::CullModeFlags cullMode_ ) - { - cullMode = cullMode_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setFrontFace( vk::FrontFace frontFace_ ) - { - frontFace = frontFace_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setDepthBiasEnable( vk::Bool32 depthBiasEnable_ ) - { - depthBiasEnable = depthBiasEnable_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setDepthBiasConstantFactor( float depthBiasConstantFactor_ ) - { - depthBiasConstantFactor = depthBiasConstantFactor_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setDepthBiasClamp( float depthBiasClamp_ ) - { - depthBiasClamp = depthBiasClamp_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ ) - { - depthBiasSlopeFactor = depthBiasSlopeFactor_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setLineWidth( float lineWidth_ ) - { - lineWidth = lineWidth_; - return *this; - } - - operator VkPipelineRasterizationStateCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineRasterizationStateCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( depthClampEnable == rhs.depthClampEnable ) - && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable ) - && ( polygonMode == rhs.polygonMode ) - && ( cullMode == rhs.cullMode ) - && ( frontFace == rhs.frontFace ) - && ( depthBiasEnable == rhs.depthBiasEnable ) - && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor ) - && ( depthBiasClamp == rhs.depthBiasClamp ) - && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor ) - && ( lineWidth == rhs.lineWidth ); - } - - bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineRasterizationStateCreateInfo::sType; - }; - static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineMultisampleStateCreateInfo - { - protected: - PipelineMultisampleStateCreateInfo( vk::PipelineMultisampleStateCreateFlags flags_ = vk::PipelineMultisampleStateCreateFlags(), - vk::SampleCountFlagBits rasterizationSamples_ = vk::SampleCountFlagBits::e1, - vk::Bool32 sampleShadingEnable_ = 0, - float minSampleShading_ = 0, - const vk::SampleMask* pSampleMask_ = nullptr, - vk::Bool32 alphaToCoverageEnable_ = 0, - vk::Bool32 alphaToOneEnable_ = 0 ) - : flags( flags_ ) - , rasterizationSamples( rasterizationSamples_ ) - , sampleShadingEnable( sampleShadingEnable_ ) - , minSampleShading( minSampleShading_ ) - , pSampleMask( pSampleMask_ ) - , alphaToCoverageEnable( alphaToCoverageEnable_ ) - , alphaToOneEnable( alphaToOneEnable_ ) - {} - - PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineMultisampleStateCreateInfo; - const void* pNext = nullptr; - vk::PipelineMultisampleStateCreateFlags flags; - vk::SampleCountFlagBits rasterizationSamples; - vk::Bool32 sampleShadingEnable; - float minSampleShading; - const vk::SampleMask* pSampleMask; - vk::Bool32 alphaToCoverageEnable; - vk::Bool32 alphaToOneEnable; - }; - static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct PipelineMultisampleStateCreateInfo : public layout::PipelineMultisampleStateCreateInfo - { - PipelineMultisampleStateCreateInfo( vk::PipelineMultisampleStateCreateFlags flags_ = vk::PipelineMultisampleStateCreateFlags(), - vk::SampleCountFlagBits rasterizationSamples_ = vk::SampleCountFlagBits::e1, - vk::Bool32 sampleShadingEnable_ = 0, - float minSampleShading_ = 0, - const vk::SampleMask* pSampleMask_ = nullptr, - vk::Bool32 alphaToCoverageEnable_ = 0, - vk::Bool32 alphaToOneEnable_ = 0 ) - : layout::PipelineMultisampleStateCreateInfo( flags_, rasterizationSamples_, sampleShadingEnable_, minSampleShading_, pSampleMask_, alphaToCoverageEnable_, alphaToOneEnable_ ) - {} - - PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs ) - : layout::PipelineMultisampleStateCreateInfo( rhs ) - {} - - PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineMultisampleStateCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineMultisampleStateCreateInfo & setFlags( vk::PipelineMultisampleStateCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - PipelineMultisampleStateCreateInfo & setRasterizationSamples( vk::SampleCountFlagBits rasterizationSamples_ ) - { - rasterizationSamples = rasterizationSamples_; - return *this; - } - - PipelineMultisampleStateCreateInfo & setSampleShadingEnable( vk::Bool32 sampleShadingEnable_ ) - { - sampleShadingEnable = sampleShadingEnable_; - return *this; - } - - PipelineMultisampleStateCreateInfo & setMinSampleShading( float minSampleShading_ ) - { - minSampleShading = minSampleShading_; - return *this; - } - - PipelineMultisampleStateCreateInfo & setPSampleMask( const vk::SampleMask* pSampleMask_ ) - { - pSampleMask = pSampleMask_; - return *this; - } - - PipelineMultisampleStateCreateInfo & setAlphaToCoverageEnable( vk::Bool32 alphaToCoverageEnable_ ) - { - alphaToCoverageEnable = alphaToCoverageEnable_; - return *this; - } - - PipelineMultisampleStateCreateInfo & setAlphaToOneEnable( vk::Bool32 alphaToOneEnable_ ) - { - alphaToOneEnable = alphaToOneEnable_; - return *this; - } - - operator VkPipelineMultisampleStateCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineMultisampleStateCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( rasterizationSamples == rhs.rasterizationSamples ) - && ( sampleShadingEnable == rhs.sampleShadingEnable ) - && ( minSampleShading == rhs.minSampleShading ) - && ( pSampleMask == rhs.pSampleMask ) - && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable ) - && ( alphaToOneEnable == rhs.alphaToOneEnable ); - } - - bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineMultisampleStateCreateInfo::sType; - }; - static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct StencilOpState - { - StencilOpState( vk::StencilOp failOp_ = vk::StencilOp::eKeep, - vk::StencilOp passOp_ = vk::StencilOp::eKeep, - vk::StencilOp depthFailOp_ = vk::StencilOp::eKeep, - vk::CompareOp compareOp_ = vk::CompareOp::eNever, - uint32_t compareMask_ = 0, - uint32_t writeMask_ = 0, - uint32_t reference_ = 0 ) - : failOp( failOp_ ) - , passOp( passOp_ ) - , depthFailOp( depthFailOp_ ) - , compareOp( compareOp_ ) - , compareMask( compareMask_ ) - , writeMask( writeMask_ ) - , reference( reference_ ) - {} - - StencilOpState( VkStencilOpState const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - StencilOpState& operator=( VkStencilOpState const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - StencilOpState & setFailOp( vk::StencilOp failOp_ ) - { - failOp = failOp_; - return *this; - } - - StencilOpState & setPassOp( vk::StencilOp passOp_ ) - { - passOp = passOp_; - return *this; - } - - StencilOpState & setDepthFailOp( vk::StencilOp depthFailOp_ ) - { - depthFailOp = depthFailOp_; - return *this; - } - - StencilOpState & setCompareOp( vk::CompareOp compareOp_ ) - { - compareOp = compareOp_; - return *this; - } - - StencilOpState & setCompareMask( uint32_t compareMask_ ) - { - compareMask = compareMask_; - return *this; - } - - StencilOpState & setWriteMask( uint32_t writeMask_ ) - { - writeMask = writeMask_; - return *this; - } - - StencilOpState & setReference( uint32_t reference_ ) - { - reference = reference_; - return *this; - } - - operator VkStencilOpState const&() const - { - return *reinterpret_cast( this ); - } - - operator VkStencilOpState &() - { - return *reinterpret_cast( this ); - } - - bool operator==( StencilOpState const& rhs ) const - { - return ( failOp == rhs.failOp ) - && ( passOp == rhs.passOp ) - && ( depthFailOp == rhs.depthFailOp ) - && ( compareOp == rhs.compareOp ) - && ( compareMask == rhs.compareMask ) - && ( writeMask == rhs.writeMask ) - && ( reference == rhs.reference ); - } - - bool operator!=( StencilOpState const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::StencilOp failOp; - vk::StencilOp passOp; - vk::StencilOp depthFailOp; - vk::CompareOp compareOp; - uint32_t compareMask; - uint32_t writeMask; - uint32_t reference; - }; - static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineDepthStencilStateCreateInfo - { - protected: - PipelineDepthStencilStateCreateInfo( vk::PipelineDepthStencilStateCreateFlags flags_ = vk::PipelineDepthStencilStateCreateFlags(), - vk::Bool32 depthTestEnable_ = 0, - vk::Bool32 depthWriteEnable_ = 0, - vk::CompareOp depthCompareOp_ = vk::CompareOp::eNever, - vk::Bool32 depthBoundsTestEnable_ = 0, - vk::Bool32 stencilTestEnable_ = 0, - vk::StencilOpState front_ = vk::StencilOpState(), - vk::StencilOpState back_ = vk::StencilOpState(), - float minDepthBounds_ = 0, - float maxDepthBounds_ = 0 ) - : flags( flags_ ) - , depthTestEnable( depthTestEnable_ ) - , depthWriteEnable( depthWriteEnable_ ) - , depthCompareOp( depthCompareOp_ ) - , depthBoundsTestEnable( depthBoundsTestEnable_ ) - , stencilTestEnable( stencilTestEnable_ ) - , front( front_ ) - , back( back_ ) - , minDepthBounds( minDepthBounds_ ) - , maxDepthBounds( maxDepthBounds_ ) - {} - - PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineDepthStencilStateCreateInfo; - const void* pNext = nullptr; - vk::PipelineDepthStencilStateCreateFlags flags; - vk::Bool32 depthTestEnable; - vk::Bool32 depthWriteEnable; - vk::CompareOp depthCompareOp; - vk::Bool32 depthBoundsTestEnable; - vk::Bool32 stencilTestEnable; - vk::StencilOpState front; - vk::StencilOpState back; - float minDepthBounds; - float maxDepthBounds; - }; - static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct PipelineDepthStencilStateCreateInfo : public layout::PipelineDepthStencilStateCreateInfo - { - PipelineDepthStencilStateCreateInfo( vk::PipelineDepthStencilStateCreateFlags flags_ = vk::PipelineDepthStencilStateCreateFlags(), - vk::Bool32 depthTestEnable_ = 0, - vk::Bool32 depthWriteEnable_ = 0, - vk::CompareOp depthCompareOp_ = vk::CompareOp::eNever, - vk::Bool32 depthBoundsTestEnable_ = 0, - vk::Bool32 stencilTestEnable_ = 0, - vk::StencilOpState front_ = vk::StencilOpState(), - vk::StencilOpState back_ = vk::StencilOpState(), - float minDepthBounds_ = 0, - float maxDepthBounds_ = 0 ) - : layout::PipelineDepthStencilStateCreateInfo( flags_, depthTestEnable_, depthWriteEnable_, depthCompareOp_, depthBoundsTestEnable_, stencilTestEnable_, front_, back_, minDepthBounds_, maxDepthBounds_ ) - {} - - PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs ) - : layout::PipelineDepthStencilStateCreateInfo( rhs ) - {} - - PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setFlags( vk::PipelineDepthStencilStateCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setDepthTestEnable( vk::Bool32 depthTestEnable_ ) - { - depthTestEnable = depthTestEnable_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setDepthWriteEnable( vk::Bool32 depthWriteEnable_ ) - { - depthWriteEnable = depthWriteEnable_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setDepthCompareOp( vk::CompareOp depthCompareOp_ ) - { - depthCompareOp = depthCompareOp_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setDepthBoundsTestEnable( vk::Bool32 depthBoundsTestEnable_ ) - { - depthBoundsTestEnable = depthBoundsTestEnable_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setStencilTestEnable( vk::Bool32 stencilTestEnable_ ) - { - stencilTestEnable = stencilTestEnable_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setFront( vk::StencilOpState front_ ) - { - front = front_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setBack( vk::StencilOpState back_ ) - { - back = back_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setMinDepthBounds( float minDepthBounds_ ) - { - minDepthBounds = minDepthBounds_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setMaxDepthBounds( float maxDepthBounds_ ) - { - maxDepthBounds = maxDepthBounds_; - return *this; - } - - operator VkPipelineDepthStencilStateCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineDepthStencilStateCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( depthTestEnable == rhs.depthTestEnable ) - && ( depthWriteEnable == rhs.depthWriteEnable ) - && ( depthCompareOp == rhs.depthCompareOp ) - && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable ) - && ( stencilTestEnable == rhs.stencilTestEnable ) - && ( front == rhs.front ) - && ( back == rhs.back ) - && ( minDepthBounds == rhs.minDepthBounds ) - && ( maxDepthBounds == rhs.maxDepthBounds ); - } - - bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineDepthStencilStateCreateInfo::sType; - }; - static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PipelineColorBlendAttachmentState - { - PipelineColorBlendAttachmentState( vk::Bool32 blendEnable_ = 0, - vk::BlendFactor srcColorBlendFactor_ = vk::BlendFactor::eZero, - vk::BlendFactor dstColorBlendFactor_ = vk::BlendFactor::eZero, - vk::BlendOp colorBlendOp_ = vk::BlendOp::eAdd, - vk::BlendFactor srcAlphaBlendFactor_ = vk::BlendFactor::eZero, - vk::BlendFactor dstAlphaBlendFactor_ = vk::BlendFactor::eZero, - vk::BlendOp alphaBlendOp_ = vk::BlendOp::eAdd, - vk::ColorComponentFlags colorWriteMask_ = vk::ColorComponentFlags() ) - : blendEnable( blendEnable_ ) - , srcColorBlendFactor( srcColorBlendFactor_ ) - , dstColorBlendFactor( dstColorBlendFactor_ ) - , colorBlendOp( colorBlendOp_ ) - , srcAlphaBlendFactor( srcAlphaBlendFactor_ ) - , dstAlphaBlendFactor( dstAlphaBlendFactor_ ) - , alphaBlendOp( alphaBlendOp_ ) - , colorWriteMask( colorWriteMask_ ) - {} - - PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineColorBlendAttachmentState & setBlendEnable( vk::Bool32 blendEnable_ ) - { - blendEnable = blendEnable_; - return *this; - } - - PipelineColorBlendAttachmentState & setSrcColorBlendFactor( vk::BlendFactor srcColorBlendFactor_ ) - { - srcColorBlendFactor = srcColorBlendFactor_; - return *this; - } - - PipelineColorBlendAttachmentState & setDstColorBlendFactor( vk::BlendFactor dstColorBlendFactor_ ) - { - dstColorBlendFactor = dstColorBlendFactor_; - return *this; - } - - PipelineColorBlendAttachmentState & setColorBlendOp( vk::BlendOp colorBlendOp_ ) - { - colorBlendOp = colorBlendOp_; - return *this; - } - - PipelineColorBlendAttachmentState & setSrcAlphaBlendFactor( vk::BlendFactor srcAlphaBlendFactor_ ) - { - srcAlphaBlendFactor = srcAlphaBlendFactor_; - return *this; - } - - PipelineColorBlendAttachmentState & setDstAlphaBlendFactor( vk::BlendFactor dstAlphaBlendFactor_ ) - { - dstAlphaBlendFactor = dstAlphaBlendFactor_; - return *this; - } - - PipelineColorBlendAttachmentState & setAlphaBlendOp( vk::BlendOp alphaBlendOp_ ) - { - alphaBlendOp = alphaBlendOp_; - return *this; - } - - PipelineColorBlendAttachmentState & setColorWriteMask( vk::ColorComponentFlags colorWriteMask_ ) - { - colorWriteMask = colorWriteMask_; - return *this; - } - - operator VkPipelineColorBlendAttachmentState const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineColorBlendAttachmentState &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineColorBlendAttachmentState const& rhs ) const - { - return ( blendEnable == rhs.blendEnable ) - && ( srcColorBlendFactor == rhs.srcColorBlendFactor ) - && ( dstColorBlendFactor == rhs.dstColorBlendFactor ) - && ( colorBlendOp == rhs.colorBlendOp ) - && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor ) - && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor ) - && ( alphaBlendOp == rhs.alphaBlendOp ) - && ( colorWriteMask == rhs.colorWriteMask ); - } - - bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::Bool32 blendEnable; - vk::BlendFactor srcColorBlendFactor; - vk::BlendFactor dstColorBlendFactor; - vk::BlendOp colorBlendOp; - vk::BlendFactor srcAlphaBlendFactor; - vk::BlendFactor dstAlphaBlendFactor; - vk::BlendOp alphaBlendOp; - vk::ColorComponentFlags colorWriteMask; - }; - static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineColorBlendStateCreateInfo - { - protected: - PipelineColorBlendStateCreateInfo( vk::PipelineColorBlendStateCreateFlags flags_ = vk::PipelineColorBlendStateCreateFlags(), - vk::Bool32 logicOpEnable_ = 0, - vk::LogicOp logicOp_ = vk::LogicOp::eClear, - uint32_t attachmentCount_ = 0, - const vk::PipelineColorBlendAttachmentState* pAttachments_ = nullptr, - std::array const& blendConstants_ = { { 0 } } ) - : flags( flags_ ) - , logicOpEnable( logicOpEnable_ ) - , logicOp( logicOp_ ) - , attachmentCount( attachmentCount_ ) - , pAttachments( pAttachments_ ) - { - memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) ); - - } - - PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineColorBlendStateCreateInfo; - const void* pNext = nullptr; - vk::PipelineColorBlendStateCreateFlags flags; - vk::Bool32 logicOpEnable; - vk::LogicOp logicOp; - uint32_t attachmentCount; - const vk::PipelineColorBlendAttachmentState* pAttachments; - float blendConstants[4]; - }; - static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct PipelineColorBlendStateCreateInfo : public layout::PipelineColorBlendStateCreateInfo - { - PipelineColorBlendStateCreateInfo( vk::PipelineColorBlendStateCreateFlags flags_ = vk::PipelineColorBlendStateCreateFlags(), - vk::Bool32 logicOpEnable_ = 0, - vk::LogicOp logicOp_ = vk::LogicOp::eClear, - uint32_t attachmentCount_ = 0, - const vk::PipelineColorBlendAttachmentState* pAttachments_ = nullptr, - std::array const& blendConstants_ = { { 0 } } ) - : layout::PipelineColorBlendStateCreateInfo( flags_, logicOpEnable_, logicOp_, attachmentCount_, pAttachments_, blendConstants_ ) - {} - - PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs ) - : layout::PipelineColorBlendStateCreateInfo( rhs ) - {} - - PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineColorBlendStateCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineColorBlendStateCreateInfo & setFlags( vk::PipelineColorBlendStateCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - PipelineColorBlendStateCreateInfo & setLogicOpEnable( vk::Bool32 logicOpEnable_ ) - { - logicOpEnable = logicOpEnable_; - return *this; - } - - PipelineColorBlendStateCreateInfo & setLogicOp( vk::LogicOp logicOp_ ) - { - logicOp = logicOp_; - return *this; - } - - PipelineColorBlendStateCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) - { - attachmentCount = attachmentCount_; - return *this; - } - - PipelineColorBlendStateCreateInfo & setPAttachments( const vk::PipelineColorBlendAttachmentState* pAttachments_ ) - { - pAttachments = pAttachments_; - return *this; - } - - PipelineColorBlendStateCreateInfo & setBlendConstants( std::array blendConstants_ ) - { - memcpy( blendConstants, blendConstants_.data(), 4 * sizeof( float ) ); - return *this; - } - - operator VkPipelineColorBlendStateCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineColorBlendStateCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( logicOpEnable == rhs.logicOpEnable ) - && ( logicOp == rhs.logicOp ) - && ( attachmentCount == rhs.attachmentCount ) - && ( pAttachments == rhs.pAttachments ) - && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 ); - } - - bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineColorBlendStateCreateInfo::sType; - }; - static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineDynamicStateCreateInfo - { - protected: - PipelineDynamicStateCreateInfo( vk::PipelineDynamicStateCreateFlags flags_ = vk::PipelineDynamicStateCreateFlags(), - uint32_t dynamicStateCount_ = 0, - const vk::DynamicState* pDynamicStates_ = nullptr ) - : flags( flags_ ) - , dynamicStateCount( dynamicStateCount_ ) - , pDynamicStates( pDynamicStates_ ) - {} - - PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineDynamicStateCreateInfo; - const void* pNext = nullptr; - vk::PipelineDynamicStateCreateFlags flags; - uint32_t dynamicStateCount; - const vk::DynamicState* pDynamicStates; - }; - static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct PipelineDynamicStateCreateInfo : public layout::PipelineDynamicStateCreateInfo - { - PipelineDynamicStateCreateInfo( vk::PipelineDynamicStateCreateFlags flags_ = vk::PipelineDynamicStateCreateFlags(), - uint32_t dynamicStateCount_ = 0, - const vk::DynamicState* pDynamicStates_ = nullptr ) - : layout::PipelineDynamicStateCreateInfo( flags_, dynamicStateCount_, pDynamicStates_ ) - {} - - PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs ) - : layout::PipelineDynamicStateCreateInfo( rhs ) - {} - - PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineDynamicStateCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineDynamicStateCreateInfo & setFlags( vk::PipelineDynamicStateCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - PipelineDynamicStateCreateInfo & setDynamicStateCount( uint32_t dynamicStateCount_ ) - { - dynamicStateCount = dynamicStateCount_; - return *this; - } - - PipelineDynamicStateCreateInfo & setPDynamicStates( const vk::DynamicState* pDynamicStates_ ) - { - pDynamicStates = pDynamicStates_; - return *this; - } - - operator VkPipelineDynamicStateCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineDynamicStateCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( dynamicStateCount == rhs.dynamicStateCount ) - && ( pDynamicStates == rhs.pDynamicStates ); - } - - bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineDynamicStateCreateInfo::sType; - }; - static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct GraphicsPipelineCreateInfo - { - protected: - GraphicsPipelineCreateInfo( vk::PipelineCreateFlags flags_ = vk::PipelineCreateFlags(), - uint32_t stageCount_ = 0, - const vk::PipelineShaderStageCreateInfo* pStages_ = nullptr, - const vk::PipelineVertexInputStateCreateInfo* pVertexInputState_ = nullptr, - const vk::PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ = nullptr, - const vk::PipelineTessellationStateCreateInfo* pTessellationState_ = nullptr, - const vk::PipelineViewportStateCreateInfo* pViewportState_ = nullptr, - const vk::PipelineRasterizationStateCreateInfo* pRasterizationState_ = nullptr, - const vk::PipelineMultisampleStateCreateInfo* pMultisampleState_ = nullptr, - const vk::PipelineDepthStencilStateCreateInfo* pDepthStencilState_ = nullptr, - const vk::PipelineColorBlendStateCreateInfo* pColorBlendState_ = nullptr, - const vk::PipelineDynamicStateCreateInfo* pDynamicState_ = nullptr, - vk::PipelineLayout layout_ = vk::PipelineLayout(), - vk::RenderPass renderPass_ = vk::RenderPass(), - uint32_t subpass_ = 0, - vk::Pipeline basePipelineHandle_ = vk::Pipeline(), - int32_t basePipelineIndex_ = 0 ) - : flags( flags_ ) - , stageCount( stageCount_ ) - , pStages( pStages_ ) - , pVertexInputState( pVertexInputState_ ) - , pInputAssemblyState( pInputAssemblyState_ ) - , pTessellationState( pTessellationState_ ) - , pViewportState( pViewportState_ ) - , pRasterizationState( pRasterizationState_ ) - , pMultisampleState( pMultisampleState_ ) - , pDepthStencilState( pDepthStencilState_ ) - , pColorBlendState( pColorBlendState_ ) - , pDynamicState( pDynamicState_ ) - , layout( layout_ ) - , renderPass( renderPass_ ) - , subpass( subpass_ ) - , basePipelineHandle( basePipelineHandle_ ) - , basePipelineIndex( basePipelineIndex_ ) - {} - - GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eGraphicsPipelineCreateInfo; - const void* pNext = nullptr; - vk::PipelineCreateFlags flags; - uint32_t stageCount; - const vk::PipelineShaderStageCreateInfo* pStages; - const vk::PipelineVertexInputStateCreateInfo* pVertexInputState; - const vk::PipelineInputAssemblyStateCreateInfo* pInputAssemblyState; - const vk::PipelineTessellationStateCreateInfo* pTessellationState; - const vk::PipelineViewportStateCreateInfo* pViewportState; - const vk::PipelineRasterizationStateCreateInfo* pRasterizationState; - const vk::PipelineMultisampleStateCreateInfo* pMultisampleState; - const vk::PipelineDepthStencilStateCreateInfo* pDepthStencilState; - const vk::PipelineColorBlendStateCreateInfo* pColorBlendState; - const vk::PipelineDynamicStateCreateInfo* pDynamicState; - vk::PipelineLayout layout; - vk::RenderPass renderPass; - uint32_t subpass; - vk::Pipeline basePipelineHandle; - int32_t basePipelineIndex; - }; - static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct GraphicsPipelineCreateInfo : public layout::GraphicsPipelineCreateInfo - { - GraphicsPipelineCreateInfo( vk::PipelineCreateFlags flags_ = vk::PipelineCreateFlags(), - uint32_t stageCount_ = 0, - const vk::PipelineShaderStageCreateInfo* pStages_ = nullptr, - const vk::PipelineVertexInputStateCreateInfo* pVertexInputState_ = nullptr, - const vk::PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ = nullptr, - const vk::PipelineTessellationStateCreateInfo* pTessellationState_ = nullptr, - const vk::PipelineViewportStateCreateInfo* pViewportState_ = nullptr, - const vk::PipelineRasterizationStateCreateInfo* pRasterizationState_ = nullptr, - const vk::PipelineMultisampleStateCreateInfo* pMultisampleState_ = nullptr, - const vk::PipelineDepthStencilStateCreateInfo* pDepthStencilState_ = nullptr, - const vk::PipelineColorBlendStateCreateInfo* pColorBlendState_ = nullptr, - const vk::PipelineDynamicStateCreateInfo* pDynamicState_ = nullptr, - vk::PipelineLayout layout_ = vk::PipelineLayout(), - vk::RenderPass renderPass_ = vk::RenderPass(), - uint32_t subpass_ = 0, - vk::Pipeline basePipelineHandle_ = vk::Pipeline(), - int32_t basePipelineIndex_ = 0 ) - : layout::GraphicsPipelineCreateInfo( flags_, stageCount_, pStages_, pVertexInputState_, pInputAssemblyState_, pTessellationState_, pViewportState_, pRasterizationState_, pMultisampleState_, pDepthStencilState_, pColorBlendState_, pDynamicState_, layout_, renderPass_, subpass_, basePipelineHandle_, basePipelineIndex_ ) - {} - - GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs ) - : layout::GraphicsPipelineCreateInfo( rhs ) - {} - - GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - GraphicsPipelineCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - GraphicsPipelineCreateInfo & setFlags( vk::PipelineCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - GraphicsPipelineCreateInfo & setStageCount( uint32_t stageCount_ ) - { - stageCount = stageCount_; - return *this; - } - - GraphicsPipelineCreateInfo & setPStages( const vk::PipelineShaderStageCreateInfo* pStages_ ) - { - pStages = pStages_; - return *this; - } - - GraphicsPipelineCreateInfo & setPVertexInputState( const vk::PipelineVertexInputStateCreateInfo* pVertexInputState_ ) - { - pVertexInputState = pVertexInputState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPInputAssemblyState( const vk::PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ ) - { - pInputAssemblyState = pInputAssemblyState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPTessellationState( const vk::PipelineTessellationStateCreateInfo* pTessellationState_ ) - { - pTessellationState = pTessellationState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPViewportState( const vk::PipelineViewportStateCreateInfo* pViewportState_ ) - { - pViewportState = pViewportState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPRasterizationState( const vk::PipelineRasterizationStateCreateInfo* pRasterizationState_ ) - { - pRasterizationState = pRasterizationState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPMultisampleState( const vk::PipelineMultisampleStateCreateInfo* pMultisampleState_ ) - { - pMultisampleState = pMultisampleState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPDepthStencilState( const vk::PipelineDepthStencilStateCreateInfo* pDepthStencilState_ ) - { - pDepthStencilState = pDepthStencilState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPColorBlendState( const vk::PipelineColorBlendStateCreateInfo* pColorBlendState_ ) - { - pColorBlendState = pColorBlendState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPDynamicState( const vk::PipelineDynamicStateCreateInfo* pDynamicState_ ) - { - pDynamicState = pDynamicState_; - return *this; - } - - GraphicsPipelineCreateInfo & setLayout( vk::PipelineLayout layout_ ) - { - layout = layout_; - return *this; - } - - GraphicsPipelineCreateInfo & setRenderPass( vk::RenderPass renderPass_ ) - { - renderPass = renderPass_; - return *this; - } - - GraphicsPipelineCreateInfo & setSubpass( uint32_t subpass_ ) - { - subpass = subpass_; - return *this; - } - - GraphicsPipelineCreateInfo & setBasePipelineHandle( vk::Pipeline basePipelineHandle_ ) - { - basePipelineHandle = basePipelineHandle_; - return *this; - } - - GraphicsPipelineCreateInfo & setBasePipelineIndex( int32_t basePipelineIndex_ ) - { - basePipelineIndex = basePipelineIndex_; - return *this; - } - - operator VkGraphicsPipelineCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkGraphicsPipelineCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( GraphicsPipelineCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( stageCount == rhs.stageCount ) - && ( pStages == rhs.pStages ) - && ( pVertexInputState == rhs.pVertexInputState ) - && ( pInputAssemblyState == rhs.pInputAssemblyState ) - && ( pTessellationState == rhs.pTessellationState ) - && ( pViewportState == rhs.pViewportState ) - && ( pRasterizationState == rhs.pRasterizationState ) - && ( pMultisampleState == rhs.pMultisampleState ) - && ( pDepthStencilState == rhs.pDepthStencilState ) - && ( pColorBlendState == rhs.pColorBlendState ) - && ( pDynamicState == rhs.pDynamicState ) - && ( layout == rhs.layout ) - && ( renderPass == rhs.renderPass ) - && ( subpass == rhs.subpass ) - && ( basePipelineHandle == rhs.basePipelineHandle ) - && ( basePipelineIndex == rhs.basePipelineIndex ); - } - - bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::GraphicsPipelineCreateInfo::sType; - }; - static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct XYColorEXT - { - XYColorEXT( float x_ = 0, - float y_ = 0 ) - : x( x_ ) - , y( y_ ) - {} - - XYColorEXT( VkXYColorEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - XYColorEXT& operator=( VkXYColorEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - XYColorEXT & setX( float x_ ) - { - x = x_; - return *this; - } - - XYColorEXT & setY( float y_ ) - { - y = y_; - return *this; - } - - operator VkXYColorEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkXYColorEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( XYColorEXT const& rhs ) const - { - return ( x == rhs.x ) - && ( y == rhs.y ); - } - - bool operator!=( XYColorEXT const& rhs ) const - { - return !operator==( rhs ); - } - - public: - float x; - float y; - }; - static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct HdrMetadataEXT - { - protected: - HdrMetadataEXT( vk::XYColorEXT displayPrimaryRed_ = vk::XYColorEXT(), - vk::XYColorEXT displayPrimaryGreen_ = vk::XYColorEXT(), - vk::XYColorEXT displayPrimaryBlue_ = vk::XYColorEXT(), - vk::XYColorEXT whitePoint_ = vk::XYColorEXT(), - float maxLuminance_ = 0, - float minLuminance_ = 0, - float maxContentLightLevel_ = 0, - float maxFrameAverageLightLevel_ = 0 ) - : displayPrimaryRed( displayPrimaryRed_ ) - , displayPrimaryGreen( displayPrimaryGreen_ ) - , displayPrimaryBlue( displayPrimaryBlue_ ) - , whitePoint( whitePoint_ ) - , maxLuminance( maxLuminance_ ) - , minLuminance( minLuminance_ ) - , maxContentLightLevel( maxContentLightLevel_ ) - , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ ) - {} - - HdrMetadataEXT( VkHdrMetadataEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eHdrMetadataEXT; - const void* pNext = nullptr; - vk::XYColorEXT displayPrimaryRed; - vk::XYColorEXT displayPrimaryGreen; - vk::XYColorEXT displayPrimaryBlue; - vk::XYColorEXT whitePoint; - float maxLuminance; - float minLuminance; - float maxContentLightLevel; - float maxFrameAverageLightLevel; - }; - static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "layout struct and wrapper have different size!" ); - } - - struct HdrMetadataEXT : public layout::HdrMetadataEXT - { - HdrMetadataEXT( vk::XYColorEXT displayPrimaryRed_ = vk::XYColorEXT(), - vk::XYColorEXT displayPrimaryGreen_ = vk::XYColorEXT(), - vk::XYColorEXT displayPrimaryBlue_ = vk::XYColorEXT(), - vk::XYColorEXT whitePoint_ = vk::XYColorEXT(), - float maxLuminance_ = 0, - float minLuminance_ = 0, - float maxContentLightLevel_ = 0, - float maxFrameAverageLightLevel_ = 0 ) - : layout::HdrMetadataEXT( displayPrimaryRed_, displayPrimaryGreen_, displayPrimaryBlue_, whitePoint_, maxLuminance_, minLuminance_, maxContentLightLevel_, maxFrameAverageLightLevel_ ) - {} - - HdrMetadataEXT( VkHdrMetadataEXT const & rhs ) - : layout::HdrMetadataEXT( rhs ) - {} - - HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - HdrMetadataEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - HdrMetadataEXT & setDisplayPrimaryRed( vk::XYColorEXT displayPrimaryRed_ ) - { - displayPrimaryRed = displayPrimaryRed_; - return *this; - } - - HdrMetadataEXT & setDisplayPrimaryGreen( vk::XYColorEXT displayPrimaryGreen_ ) - { - displayPrimaryGreen = displayPrimaryGreen_; - return *this; - } - - HdrMetadataEXT & setDisplayPrimaryBlue( vk::XYColorEXT displayPrimaryBlue_ ) - { - displayPrimaryBlue = displayPrimaryBlue_; - return *this; - } - - HdrMetadataEXT & setWhitePoint( vk::XYColorEXT whitePoint_ ) - { - whitePoint = whitePoint_; - return *this; - } - - HdrMetadataEXT & setMaxLuminance( float maxLuminance_ ) - { - maxLuminance = maxLuminance_; - return *this; - } - - HdrMetadataEXT & setMinLuminance( float minLuminance_ ) - { - minLuminance = minLuminance_; - return *this; - } - - HdrMetadataEXT & setMaxContentLightLevel( float maxContentLightLevel_ ) - { - maxContentLightLevel = maxContentLightLevel_; - return *this; - } - - HdrMetadataEXT & setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ ) - { - maxFrameAverageLightLevel = maxFrameAverageLightLevel_; - return *this; - } - - operator VkHdrMetadataEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkHdrMetadataEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( HdrMetadataEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( displayPrimaryRed == rhs.displayPrimaryRed ) - && ( displayPrimaryGreen == rhs.displayPrimaryGreen ) - && ( displayPrimaryBlue == rhs.displayPrimaryBlue ) - && ( whitePoint == rhs.whitePoint ) - && ( maxLuminance == rhs.maxLuminance ) - && ( minLuminance == rhs.minLuminance ) - && ( maxContentLightLevel == rhs.maxContentLightLevel ) - && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel ); - } - - bool operator!=( HdrMetadataEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::HdrMetadataEXT::sType; - }; - static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct HeadlessSurfaceCreateInfoEXT - { - protected: - HeadlessSurfaceCreateInfoEXT( vk::HeadlessSurfaceCreateFlagsEXT flags_ = vk::HeadlessSurfaceCreateFlagsEXT() ) - : flags( flags_ ) - {} - - HeadlessSurfaceCreateInfoEXT( VkHeadlessSurfaceCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - HeadlessSurfaceCreateInfoEXT& operator=( VkHeadlessSurfaceCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eHeadlessSurfaceCreateInfoEXT; - const void* pNext = nullptr; - vk::HeadlessSurfaceCreateFlagsEXT flags; - }; - static_assert( sizeof( HeadlessSurfaceCreateInfoEXT ) == sizeof( VkHeadlessSurfaceCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct HeadlessSurfaceCreateInfoEXT : public layout::HeadlessSurfaceCreateInfoEXT - { - HeadlessSurfaceCreateInfoEXT( vk::HeadlessSurfaceCreateFlagsEXT flags_ = vk::HeadlessSurfaceCreateFlagsEXT() ) - : layout::HeadlessSurfaceCreateInfoEXT( flags_ ) - {} - - HeadlessSurfaceCreateInfoEXT( VkHeadlessSurfaceCreateInfoEXT const & rhs ) - : layout::HeadlessSurfaceCreateInfoEXT( rhs ) - {} - - HeadlessSurfaceCreateInfoEXT& operator=( VkHeadlessSurfaceCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - HeadlessSurfaceCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - HeadlessSurfaceCreateInfoEXT & setFlags( vk::HeadlessSurfaceCreateFlagsEXT flags_ ) - { - flags = flags_; - return *this; - } - - operator VkHeadlessSurfaceCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkHeadlessSurfaceCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( HeadlessSurfaceCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ); - } - - bool operator!=( HeadlessSurfaceCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::HeadlessSurfaceCreateInfoEXT::sType; - }; - static_assert( sizeof( HeadlessSurfaceCreateInfoEXT ) == sizeof( VkHeadlessSurfaceCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_IOS_MVK - - namespace layout - { - struct IOSSurfaceCreateInfoMVK - { - protected: - IOSSurfaceCreateInfoMVK( vk::IOSSurfaceCreateFlagsMVK flags_ = vk::IOSSurfaceCreateFlagsMVK(), - const void* pView_ = nullptr ) - : flags( flags_ ) - , pView( pView_ ) - {} - - IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eIosSurfaceCreateInfoMVK; - const void* pNext = nullptr; - vk::IOSSurfaceCreateFlagsMVK flags; - const void* pView; - }; - static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "layout struct and wrapper have different size!" ); - } - - struct IOSSurfaceCreateInfoMVK : public layout::IOSSurfaceCreateInfoMVK - { - IOSSurfaceCreateInfoMVK( vk::IOSSurfaceCreateFlagsMVK flags_ = vk::IOSSurfaceCreateFlagsMVK(), - const void* pView_ = nullptr ) - : layout::IOSSurfaceCreateInfoMVK( flags_, pView_ ) - {} - - IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs ) - : layout::IOSSurfaceCreateInfoMVK( rhs ) - {} - - IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - IOSSurfaceCreateInfoMVK & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - IOSSurfaceCreateInfoMVK & setFlags( vk::IOSSurfaceCreateFlagsMVK flags_ ) - { - flags = flags_; - return *this; - } - - IOSSurfaceCreateInfoMVK & setPView( const void* pView_ ) - { - pView = pView_; - return *this; - } - - operator VkIOSSurfaceCreateInfoMVK const&() const - { - return *reinterpret_cast( this ); - } - - operator VkIOSSurfaceCreateInfoMVK &() - { - return *reinterpret_cast( this ); - } - - bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( pView == rhs.pView ); - } - - bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::IOSSurfaceCreateInfoMVK::sType; - }; - static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_IOS_MVK*/ - - struct ImageBlit - { - ImageBlit( vk::ImageSubresourceLayers srcSubresource_ = vk::ImageSubresourceLayers(), - std::array const& srcOffsets_ = { { vk::Offset3D() } }, - vk::ImageSubresourceLayers dstSubresource_ = vk::ImageSubresourceLayers(), - std::array const& dstOffsets_ = { { vk::Offset3D() } } ) - : srcSubresource( srcSubresource_ ) - , dstSubresource( dstSubresource_ ) - { - memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( vk::Offset3D ) ); - memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( vk::Offset3D ) ); - - } - - ImageBlit( VkImageBlit const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageBlit& operator=( VkImageBlit const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageBlit & setSrcSubresource( vk::ImageSubresourceLayers srcSubresource_ ) - { - srcSubresource = srcSubresource_; - return *this; - } - - ImageBlit & setSrcOffsets( std::array srcOffsets_ ) - { - memcpy( srcOffsets, srcOffsets_.data(), 2 * sizeof( vk::Offset3D ) ); - return *this; - } - - ImageBlit & setDstSubresource( vk::ImageSubresourceLayers dstSubresource_ ) - { - dstSubresource = dstSubresource_; - return *this; - } - - ImageBlit & setDstOffsets( std::array dstOffsets_ ) - { - memcpy( dstOffsets, dstOffsets_.data(), 2 * sizeof( vk::Offset3D ) ); - return *this; - } - - operator VkImageBlit const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageBlit &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageBlit const& rhs ) const - { - return ( srcSubresource == rhs.srcSubresource ) - && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( vk::Offset3D ) ) == 0 ) - && ( dstSubresource == rhs.dstSubresource ) - && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( vk::Offset3D ) ) == 0 ); - } - - bool operator!=( ImageBlit const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ImageSubresourceLayers srcSubresource; - vk::Offset3D srcOffsets[2]; - vk::ImageSubresourceLayers dstSubresource; - vk::Offset3D dstOffsets[2]; - }; - static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ImageCopy - { - ImageCopy( vk::ImageSubresourceLayers srcSubresource_ = vk::ImageSubresourceLayers(), - vk::Offset3D srcOffset_ = vk::Offset3D(), - vk::ImageSubresourceLayers dstSubresource_ = vk::ImageSubresourceLayers(), - vk::Offset3D dstOffset_ = vk::Offset3D(), - vk::Extent3D extent_ = vk::Extent3D() ) - : srcSubresource( srcSubresource_ ) - , srcOffset( srcOffset_ ) - , dstSubresource( dstSubresource_ ) - , dstOffset( dstOffset_ ) - , extent( extent_ ) - {} - - ImageCopy( VkImageCopy const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageCopy& operator=( VkImageCopy const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageCopy & setSrcSubresource( vk::ImageSubresourceLayers srcSubresource_ ) - { - srcSubresource = srcSubresource_; - return *this; - } - - ImageCopy & setSrcOffset( vk::Offset3D srcOffset_ ) - { - srcOffset = srcOffset_; - return *this; - } - - ImageCopy & setDstSubresource( vk::ImageSubresourceLayers dstSubresource_ ) - { - dstSubresource = dstSubresource_; - return *this; - } - - ImageCopy & setDstOffset( vk::Offset3D dstOffset_ ) - { - dstOffset = dstOffset_; - return *this; - } - - ImageCopy & setExtent( vk::Extent3D extent_ ) - { - extent = extent_; - return *this; - } - - operator VkImageCopy const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageCopy &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageCopy const& rhs ) const - { - return ( srcSubresource == rhs.srcSubresource ) - && ( srcOffset == rhs.srcOffset ) - && ( dstSubresource == rhs.dstSubresource ) - && ( dstOffset == rhs.dstOffset ) - && ( extent == rhs.extent ); - } - - bool operator!=( ImageCopy const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ImageSubresourceLayers srcSubresource; - vk::Offset3D srcOffset; - vk::ImageSubresourceLayers dstSubresource; - vk::Offset3D dstOffset; - vk::Extent3D extent; - }; - static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImageCreateInfo - { - protected: - ImageCreateInfo( vk::ImageCreateFlags flags_ = vk::ImageCreateFlags(), - vk::ImageType imageType_ = vk::ImageType::e1D, - vk::Format format_ = vk::Format::eUndefined, - vk::Extent3D extent_ = vk::Extent3D(), - uint32_t mipLevels_ = 0, - uint32_t arrayLayers_ = 0, - vk::SampleCountFlagBits samples_ = vk::SampleCountFlagBits::e1, - vk::ImageTiling tiling_ = vk::ImageTiling::eOptimal, - vk::ImageUsageFlags usage_ = vk::ImageUsageFlags(), - vk::SharingMode sharingMode_ = vk::SharingMode::eExclusive, - uint32_t queueFamilyIndexCount_ = 0, - const uint32_t* pQueueFamilyIndices_ = nullptr, - vk::ImageLayout initialLayout_ = vk::ImageLayout::eUndefined ) - : flags( flags_ ) - , imageType( imageType_ ) - , format( format_ ) - , extent( extent_ ) - , mipLevels( mipLevels_ ) - , arrayLayers( arrayLayers_ ) - , samples( samples_ ) - , tiling( tiling_ ) - , usage( usage_ ) - , sharingMode( sharingMode_ ) - , queueFamilyIndexCount( queueFamilyIndexCount_ ) - , pQueueFamilyIndices( pQueueFamilyIndices_ ) - , initialLayout( initialLayout_ ) - {} - - ImageCreateInfo( VkImageCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageCreateInfo& operator=( VkImageCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImageCreateInfo; - const void* pNext = nullptr; - vk::ImageCreateFlags flags; - vk::ImageType imageType; - vk::Format format; - vk::Extent3D extent; - uint32_t mipLevels; - uint32_t arrayLayers; - vk::SampleCountFlagBits samples; - vk::ImageTiling tiling; - vk::ImageUsageFlags usage; - vk::SharingMode sharingMode; - uint32_t queueFamilyIndexCount; - const uint32_t* pQueueFamilyIndices; - vk::ImageLayout initialLayout; - }; - static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct ImageCreateInfo : public layout::ImageCreateInfo - { - ImageCreateInfo( vk::ImageCreateFlags flags_ = vk::ImageCreateFlags(), - vk::ImageType imageType_ = vk::ImageType::e1D, - vk::Format format_ = vk::Format::eUndefined, - vk::Extent3D extent_ = vk::Extent3D(), - uint32_t mipLevels_ = 0, - uint32_t arrayLayers_ = 0, - vk::SampleCountFlagBits samples_ = vk::SampleCountFlagBits::e1, - vk::ImageTiling tiling_ = vk::ImageTiling::eOptimal, - vk::ImageUsageFlags usage_ = vk::ImageUsageFlags(), - vk::SharingMode sharingMode_ = vk::SharingMode::eExclusive, - uint32_t queueFamilyIndexCount_ = 0, - const uint32_t* pQueueFamilyIndices_ = nullptr, - vk::ImageLayout initialLayout_ = vk::ImageLayout::eUndefined ) - : layout::ImageCreateInfo( flags_, imageType_, format_, extent_, mipLevels_, arrayLayers_, samples_, tiling_, usage_, sharingMode_, queueFamilyIndexCount_, pQueueFamilyIndices_, initialLayout_ ) - {} - - ImageCreateInfo( VkImageCreateInfo const & rhs ) - : layout::ImageCreateInfo( rhs ) - {} - - ImageCreateInfo& operator=( VkImageCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImageCreateInfo & setFlags( vk::ImageCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - ImageCreateInfo & setImageType( vk::ImageType imageType_ ) - { - imageType = imageType_; - return *this; - } - - ImageCreateInfo & setFormat( vk::Format format_ ) - { - format = format_; - return *this; - } - - ImageCreateInfo & setExtent( vk::Extent3D extent_ ) - { - extent = extent_; - return *this; - } - - ImageCreateInfo & setMipLevels( uint32_t mipLevels_ ) - { - mipLevels = mipLevels_; - return *this; - } - - ImageCreateInfo & setArrayLayers( uint32_t arrayLayers_ ) - { - arrayLayers = arrayLayers_; - return *this; - } - - ImageCreateInfo & setSamples( vk::SampleCountFlagBits samples_ ) - { - samples = samples_; - return *this; - } - - ImageCreateInfo & setTiling( vk::ImageTiling tiling_ ) - { - tiling = tiling_; - return *this; - } - - ImageCreateInfo & setUsage( vk::ImageUsageFlags usage_ ) - { - usage = usage_; - return *this; - } - - ImageCreateInfo & setSharingMode( vk::SharingMode sharingMode_ ) - { - sharingMode = sharingMode_; - return *this; - } - - ImageCreateInfo & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) - { - queueFamilyIndexCount = queueFamilyIndexCount_; - return *this; - } - - ImageCreateInfo & setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ ) - { - pQueueFamilyIndices = pQueueFamilyIndices_; - return *this; - } - - ImageCreateInfo & setInitialLayout( vk::ImageLayout initialLayout_ ) - { - initialLayout = initialLayout_; - return *this; - } - - operator VkImageCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( imageType == rhs.imageType ) - && ( format == rhs.format ) - && ( extent == rhs.extent ) - && ( mipLevels == rhs.mipLevels ) - && ( arrayLayers == rhs.arrayLayers ) - && ( samples == rhs.samples ) - && ( tiling == rhs.tiling ) - && ( usage == rhs.usage ) - && ( sharingMode == rhs.sharingMode ) - && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) - && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ) - && ( initialLayout == rhs.initialLayout ); - } - - bool operator!=( ImageCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImageCreateInfo::sType; - }; - static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SubresourceLayout - { - operator VkSubresourceLayout const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSubresourceLayout &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SubresourceLayout const& rhs ) const - { - return ( offset == rhs.offset ) - && ( size == rhs.size ) - && ( rowPitch == rhs.rowPitch ) - && ( arrayPitch == rhs.arrayPitch ) - && ( depthPitch == rhs.depthPitch ); - } - - bool operator!=( SubresourceLayout const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::DeviceSize offset; - vk::DeviceSize size; - vk::DeviceSize rowPitch; - vk::DeviceSize arrayPitch; - vk::DeviceSize depthPitch; - }; - static_assert( sizeof( SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImageDrmFormatModifierExplicitCreateInfoEXT - { - protected: - ImageDrmFormatModifierExplicitCreateInfoEXT( uint64_t drmFormatModifier_ = 0, - uint32_t drmFormatModifierPlaneCount_ = 0, - const vk::SubresourceLayout* pPlaneLayouts_ = nullptr ) - : drmFormatModifier( drmFormatModifier_ ) - , drmFormatModifierPlaneCount( drmFormatModifierPlaneCount_ ) - , pPlaneLayouts( pPlaneLayouts_ ) - {} - - ImageDrmFormatModifierExplicitCreateInfoEXT( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageDrmFormatModifierExplicitCreateInfoEXT& operator=( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT; - const void* pNext = nullptr; - uint64_t drmFormatModifier; - uint32_t drmFormatModifierPlaneCount; - const vk::SubresourceLayout* pPlaneLayouts; - }; - static_assert( sizeof( ImageDrmFormatModifierExplicitCreateInfoEXT ) == sizeof( VkImageDrmFormatModifierExplicitCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct ImageDrmFormatModifierExplicitCreateInfoEXT : public layout::ImageDrmFormatModifierExplicitCreateInfoEXT - { - ImageDrmFormatModifierExplicitCreateInfoEXT( uint64_t drmFormatModifier_ = 0, - uint32_t drmFormatModifierPlaneCount_ = 0, - const vk::SubresourceLayout* pPlaneLayouts_ = nullptr ) - : layout::ImageDrmFormatModifierExplicitCreateInfoEXT( drmFormatModifier_, drmFormatModifierPlaneCount_, pPlaneLayouts_ ) - {} - - ImageDrmFormatModifierExplicitCreateInfoEXT( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) - : layout::ImageDrmFormatModifierExplicitCreateInfoEXT( rhs ) - {} - - ImageDrmFormatModifierExplicitCreateInfoEXT& operator=( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageDrmFormatModifierExplicitCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImageDrmFormatModifierExplicitCreateInfoEXT & setDrmFormatModifier( uint64_t drmFormatModifier_ ) - { - drmFormatModifier = drmFormatModifier_; - return *this; - } - - ImageDrmFormatModifierExplicitCreateInfoEXT & setDrmFormatModifierPlaneCount( uint32_t drmFormatModifierPlaneCount_ ) - { - drmFormatModifierPlaneCount = drmFormatModifierPlaneCount_; - return *this; - } - - ImageDrmFormatModifierExplicitCreateInfoEXT & setPPlaneLayouts( const vk::SubresourceLayout* pPlaneLayouts_ ) - { - pPlaneLayouts = pPlaneLayouts_; - return *this; - } - - operator VkImageDrmFormatModifierExplicitCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageDrmFormatModifierExplicitCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageDrmFormatModifierExplicitCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( drmFormatModifier == rhs.drmFormatModifier ) - && ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) - && ( pPlaneLayouts == rhs.pPlaneLayouts ); - } - - bool operator!=( ImageDrmFormatModifierExplicitCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImageDrmFormatModifierExplicitCreateInfoEXT::sType; - }; - static_assert( sizeof( ImageDrmFormatModifierExplicitCreateInfoEXT ) == sizeof( VkImageDrmFormatModifierExplicitCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImageDrmFormatModifierListCreateInfoEXT - { - protected: - ImageDrmFormatModifierListCreateInfoEXT( uint32_t drmFormatModifierCount_ = 0, - const uint64_t* pDrmFormatModifiers_ = nullptr ) - : drmFormatModifierCount( drmFormatModifierCount_ ) - , pDrmFormatModifiers( pDrmFormatModifiers_ ) - {} - - ImageDrmFormatModifierListCreateInfoEXT( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageDrmFormatModifierListCreateInfoEXT& operator=( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImageDrmFormatModifierListCreateInfoEXT; - const void* pNext = nullptr; - uint32_t drmFormatModifierCount; - const uint64_t* pDrmFormatModifiers; - }; - static_assert( sizeof( ImageDrmFormatModifierListCreateInfoEXT ) == sizeof( VkImageDrmFormatModifierListCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct ImageDrmFormatModifierListCreateInfoEXT : public layout::ImageDrmFormatModifierListCreateInfoEXT - { - ImageDrmFormatModifierListCreateInfoEXT( uint32_t drmFormatModifierCount_ = 0, - const uint64_t* pDrmFormatModifiers_ = nullptr ) - : layout::ImageDrmFormatModifierListCreateInfoEXT( drmFormatModifierCount_, pDrmFormatModifiers_ ) - {} - - ImageDrmFormatModifierListCreateInfoEXT( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) - : layout::ImageDrmFormatModifierListCreateInfoEXT( rhs ) - {} - - ImageDrmFormatModifierListCreateInfoEXT& operator=( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageDrmFormatModifierListCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImageDrmFormatModifierListCreateInfoEXT & setDrmFormatModifierCount( uint32_t drmFormatModifierCount_ ) - { - drmFormatModifierCount = drmFormatModifierCount_; - return *this; - } - - ImageDrmFormatModifierListCreateInfoEXT & setPDrmFormatModifiers( const uint64_t* pDrmFormatModifiers_ ) - { - pDrmFormatModifiers = pDrmFormatModifiers_; - return *this; - } - - operator VkImageDrmFormatModifierListCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageDrmFormatModifierListCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageDrmFormatModifierListCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( drmFormatModifierCount == rhs.drmFormatModifierCount ) - && ( pDrmFormatModifiers == rhs.pDrmFormatModifiers ); - } - - bool operator!=( ImageDrmFormatModifierListCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImageDrmFormatModifierListCreateInfoEXT::sType; - }; - static_assert( sizeof( ImageDrmFormatModifierListCreateInfoEXT ) == sizeof( VkImageDrmFormatModifierListCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImageDrmFormatModifierPropertiesEXT - { - protected: - ImageDrmFormatModifierPropertiesEXT( uint64_t drmFormatModifier_ = 0 ) - : drmFormatModifier( drmFormatModifier_ ) - {} - - ImageDrmFormatModifierPropertiesEXT( VkImageDrmFormatModifierPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageDrmFormatModifierPropertiesEXT& operator=( VkImageDrmFormatModifierPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImageDrmFormatModifierPropertiesEXT; - void* pNext = nullptr; - uint64_t drmFormatModifier; - }; - static_assert( sizeof( ImageDrmFormatModifierPropertiesEXT ) == sizeof( VkImageDrmFormatModifierPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct ImageDrmFormatModifierPropertiesEXT : public layout::ImageDrmFormatModifierPropertiesEXT - { - operator VkImageDrmFormatModifierPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageDrmFormatModifierPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageDrmFormatModifierPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( drmFormatModifier == rhs.drmFormatModifier ); - } - - bool operator!=( ImageDrmFormatModifierPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImageDrmFormatModifierPropertiesEXT::sType; - }; - static_assert( sizeof( ImageDrmFormatModifierPropertiesEXT ) == sizeof( VkImageDrmFormatModifierPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImageFormatListCreateInfoKHR - { - protected: - ImageFormatListCreateInfoKHR( uint32_t viewFormatCount_ = 0, - const vk::Format* pViewFormats_ = nullptr ) - : viewFormatCount( viewFormatCount_ ) - , pViewFormats( pViewFormats_ ) - {} - - ImageFormatListCreateInfoKHR( VkImageFormatListCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageFormatListCreateInfoKHR& operator=( VkImageFormatListCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImageFormatListCreateInfoKHR; - const void* pNext = nullptr; - uint32_t viewFormatCount; - const vk::Format* pViewFormats; - }; - static_assert( sizeof( ImageFormatListCreateInfoKHR ) == sizeof( VkImageFormatListCreateInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct ImageFormatListCreateInfoKHR : public layout::ImageFormatListCreateInfoKHR - { - ImageFormatListCreateInfoKHR( uint32_t viewFormatCount_ = 0, - const vk::Format* pViewFormats_ = nullptr ) - : layout::ImageFormatListCreateInfoKHR( viewFormatCount_, pViewFormats_ ) - {} - - ImageFormatListCreateInfoKHR( VkImageFormatListCreateInfoKHR const & rhs ) - : layout::ImageFormatListCreateInfoKHR( rhs ) - {} - - ImageFormatListCreateInfoKHR& operator=( VkImageFormatListCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageFormatListCreateInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImageFormatListCreateInfoKHR & setViewFormatCount( uint32_t viewFormatCount_ ) - { - viewFormatCount = viewFormatCount_; - return *this; - } - - ImageFormatListCreateInfoKHR & setPViewFormats( const vk::Format* pViewFormats_ ) - { - pViewFormats = pViewFormats_; - return *this; - } - - operator VkImageFormatListCreateInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageFormatListCreateInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageFormatListCreateInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( viewFormatCount == rhs.viewFormatCount ) - && ( pViewFormats == rhs.pViewFormats ); - } - - bool operator!=( ImageFormatListCreateInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImageFormatListCreateInfoKHR::sType; - }; - static_assert( sizeof( ImageFormatListCreateInfoKHR ) == sizeof( VkImageFormatListCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImageFormatProperties2 - { - protected: - ImageFormatProperties2( vk::ImageFormatProperties imageFormatProperties_ = vk::ImageFormatProperties() ) - : imageFormatProperties( imageFormatProperties_ ) - {} - - ImageFormatProperties2( VkImageFormatProperties2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageFormatProperties2& operator=( VkImageFormatProperties2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImageFormatProperties2; - void* pNext = nullptr; - vk::ImageFormatProperties imageFormatProperties; - }; - static_assert( sizeof( ImageFormatProperties2 ) == sizeof( VkImageFormatProperties2 ), "layout struct and wrapper have different size!" ); - } - - struct ImageFormatProperties2 : public layout::ImageFormatProperties2 - { - operator VkImageFormatProperties2 const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageFormatProperties2 &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageFormatProperties2 const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( imageFormatProperties == rhs.imageFormatProperties ); - } - - bool operator!=( ImageFormatProperties2 const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImageFormatProperties2::sType; - }; - static_assert( sizeof( ImageFormatProperties2 ) == sizeof( VkImageFormatProperties2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ImageSubresourceRange - { - ImageSubresourceRange( vk::ImageAspectFlags aspectMask_ = vk::ImageAspectFlags(), - uint32_t baseMipLevel_ = 0, - uint32_t levelCount_ = 0, - uint32_t baseArrayLayer_ = 0, - uint32_t layerCount_ = 0 ) - : aspectMask( aspectMask_ ) - , baseMipLevel( baseMipLevel_ ) - , levelCount( levelCount_ ) - , baseArrayLayer( baseArrayLayer_ ) - , layerCount( layerCount_ ) - {} - - ImageSubresourceRange( VkImageSubresourceRange const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageSubresourceRange & setAspectMask( vk::ImageAspectFlags aspectMask_ ) - { - aspectMask = aspectMask_; - return *this; - } - - ImageSubresourceRange & setBaseMipLevel( uint32_t baseMipLevel_ ) - { - baseMipLevel = baseMipLevel_; - return *this; - } - - ImageSubresourceRange & setLevelCount( uint32_t levelCount_ ) - { - levelCount = levelCount_; - return *this; - } - - ImageSubresourceRange & setBaseArrayLayer( uint32_t baseArrayLayer_ ) - { - baseArrayLayer = baseArrayLayer_; - return *this; - } - - ImageSubresourceRange & setLayerCount( uint32_t layerCount_ ) - { - layerCount = layerCount_; - return *this; - } - - operator VkImageSubresourceRange const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageSubresourceRange &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageSubresourceRange const& rhs ) const - { - return ( aspectMask == rhs.aspectMask ) - && ( baseMipLevel == rhs.baseMipLevel ) - && ( levelCount == rhs.levelCount ) - && ( baseArrayLayer == rhs.baseArrayLayer ) - && ( layerCount == rhs.layerCount ); - } - - bool operator!=( ImageSubresourceRange const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ImageAspectFlags aspectMask; - uint32_t baseMipLevel; - uint32_t levelCount; - uint32_t baseArrayLayer; - uint32_t layerCount; - }; - static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImageMemoryBarrier - { - protected: - ImageMemoryBarrier( vk::AccessFlags srcAccessMask_ = vk::AccessFlags(), - vk::AccessFlags dstAccessMask_ = vk::AccessFlags(), - vk::ImageLayout oldLayout_ = vk::ImageLayout::eUndefined, - vk::ImageLayout newLayout_ = vk::ImageLayout::eUndefined, - uint32_t srcQueueFamilyIndex_ = 0, - uint32_t dstQueueFamilyIndex_ = 0, - vk::Image image_ = vk::Image(), - vk::ImageSubresourceRange subresourceRange_ = vk::ImageSubresourceRange() ) - : srcAccessMask( srcAccessMask_ ) - , dstAccessMask( dstAccessMask_ ) - , oldLayout( oldLayout_ ) - , newLayout( newLayout_ ) - , srcQueueFamilyIndex( srcQueueFamilyIndex_ ) - , dstQueueFamilyIndex( dstQueueFamilyIndex_ ) - , image( image_ ) - , subresourceRange( subresourceRange_ ) - {} - - ImageMemoryBarrier( VkImageMemoryBarrier const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImageMemoryBarrier; - const void* pNext = nullptr; - vk::AccessFlags srcAccessMask; - vk::AccessFlags dstAccessMask; - vk::ImageLayout oldLayout; - vk::ImageLayout newLayout; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - vk::Image image; - vk::ImageSubresourceRange subresourceRange; - }; - static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "layout struct and wrapper have different size!" ); - } - - struct ImageMemoryBarrier : public layout::ImageMemoryBarrier - { - ImageMemoryBarrier( vk::AccessFlags srcAccessMask_ = vk::AccessFlags(), - vk::AccessFlags dstAccessMask_ = vk::AccessFlags(), - vk::ImageLayout oldLayout_ = vk::ImageLayout::eUndefined, - vk::ImageLayout newLayout_ = vk::ImageLayout::eUndefined, - uint32_t srcQueueFamilyIndex_ = 0, - uint32_t dstQueueFamilyIndex_ = 0, - vk::Image image_ = vk::Image(), - vk::ImageSubresourceRange subresourceRange_ = vk::ImageSubresourceRange() ) - : layout::ImageMemoryBarrier( srcAccessMask_, dstAccessMask_, oldLayout_, newLayout_, srcQueueFamilyIndex_, dstQueueFamilyIndex_, image_, subresourceRange_ ) - {} - - ImageMemoryBarrier( VkImageMemoryBarrier const & rhs ) - : layout::ImageMemoryBarrier( rhs ) - {} - - ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageMemoryBarrier & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImageMemoryBarrier & setSrcAccessMask( vk::AccessFlags srcAccessMask_ ) - { - srcAccessMask = srcAccessMask_; - return *this; - } - - ImageMemoryBarrier & setDstAccessMask( vk::AccessFlags dstAccessMask_ ) - { - dstAccessMask = dstAccessMask_; - return *this; - } - - ImageMemoryBarrier & setOldLayout( vk::ImageLayout oldLayout_ ) - { - oldLayout = oldLayout_; - return *this; - } - - ImageMemoryBarrier & setNewLayout( vk::ImageLayout newLayout_ ) - { - newLayout = newLayout_; - return *this; - } - - ImageMemoryBarrier & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) - { - srcQueueFamilyIndex = srcQueueFamilyIndex_; - return *this; - } - - ImageMemoryBarrier & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) - { - dstQueueFamilyIndex = dstQueueFamilyIndex_; - return *this; - } - - ImageMemoryBarrier & setImage( vk::Image image_ ) - { - image = image_; - return *this; - } - - ImageMemoryBarrier & setSubresourceRange( vk::ImageSubresourceRange subresourceRange_ ) - { - subresourceRange = subresourceRange_; - return *this; - } - - operator VkImageMemoryBarrier const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageMemoryBarrier &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageMemoryBarrier const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcAccessMask == rhs.srcAccessMask ) - && ( dstAccessMask == rhs.dstAccessMask ) - && ( oldLayout == rhs.oldLayout ) - && ( newLayout == rhs.newLayout ) - && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) - && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) - && ( image == rhs.image ) - && ( subresourceRange == rhs.subresourceRange ); - } - - bool operator!=( ImageMemoryBarrier const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImageMemoryBarrier::sType; - }; - static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImageMemoryRequirementsInfo2 - { - protected: - ImageMemoryRequirementsInfo2( vk::Image image_ = vk::Image() ) - : image( image_ ) - {} - - ImageMemoryRequirementsInfo2( VkImageMemoryRequirementsInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageMemoryRequirementsInfo2& operator=( VkImageMemoryRequirementsInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImageMemoryRequirementsInfo2; - const void* pNext = nullptr; - vk::Image image; - }; - static_assert( sizeof( ImageMemoryRequirementsInfo2 ) == sizeof( VkImageMemoryRequirementsInfo2 ), "layout struct and wrapper have different size!" ); - } - - struct ImageMemoryRequirementsInfo2 : public layout::ImageMemoryRequirementsInfo2 - { - ImageMemoryRequirementsInfo2( vk::Image image_ = vk::Image() ) - : layout::ImageMemoryRequirementsInfo2( image_ ) - {} - - ImageMemoryRequirementsInfo2( VkImageMemoryRequirementsInfo2 const & rhs ) - : layout::ImageMemoryRequirementsInfo2( rhs ) - {} - - ImageMemoryRequirementsInfo2& operator=( VkImageMemoryRequirementsInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageMemoryRequirementsInfo2 & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImageMemoryRequirementsInfo2 & setImage( vk::Image image_ ) - { - image = image_; - return *this; - } - - operator VkImageMemoryRequirementsInfo2 const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageMemoryRequirementsInfo2 &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageMemoryRequirementsInfo2 const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( image == rhs.image ); - } - - bool operator!=( ImageMemoryRequirementsInfo2 const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImageMemoryRequirementsInfo2::sType; - }; - static_assert( sizeof( ImageMemoryRequirementsInfo2 ) == sizeof( VkImageMemoryRequirementsInfo2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_FUCHSIA - - namespace layout - { - struct ImagePipeSurfaceCreateInfoFUCHSIA - { - protected: - ImagePipeSurfaceCreateInfoFUCHSIA( vk::ImagePipeSurfaceCreateFlagsFUCHSIA flags_ = vk::ImagePipeSurfaceCreateFlagsFUCHSIA(), - zx_handle_t imagePipeHandle_ = 0 ) - : flags( flags_ ) - , imagePipeHandle( imagePipeHandle_ ) - {} - - ImagePipeSurfaceCreateInfoFUCHSIA( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImagePipeSurfaceCreateInfoFUCHSIA& operator=( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImagepipeSurfaceCreateInfoFUCHSIA; - const void* pNext = nullptr; - vk::ImagePipeSurfaceCreateFlagsFUCHSIA flags; - zx_handle_t imagePipeHandle; - }; - static_assert( sizeof( ImagePipeSurfaceCreateInfoFUCHSIA ) == sizeof( VkImagePipeSurfaceCreateInfoFUCHSIA ), "layout struct and wrapper have different size!" ); - } - - struct ImagePipeSurfaceCreateInfoFUCHSIA : public layout::ImagePipeSurfaceCreateInfoFUCHSIA - { - ImagePipeSurfaceCreateInfoFUCHSIA( vk::ImagePipeSurfaceCreateFlagsFUCHSIA flags_ = vk::ImagePipeSurfaceCreateFlagsFUCHSIA(), - zx_handle_t imagePipeHandle_ = 0 ) - : layout::ImagePipeSurfaceCreateInfoFUCHSIA( flags_, imagePipeHandle_ ) - {} - - ImagePipeSurfaceCreateInfoFUCHSIA( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) - : layout::ImagePipeSurfaceCreateInfoFUCHSIA( rhs ) - {} - - ImagePipeSurfaceCreateInfoFUCHSIA& operator=( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImagePipeSurfaceCreateInfoFUCHSIA & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImagePipeSurfaceCreateInfoFUCHSIA & setFlags( vk::ImagePipeSurfaceCreateFlagsFUCHSIA flags_ ) - { - flags = flags_; - return *this; - } - - ImagePipeSurfaceCreateInfoFUCHSIA & setImagePipeHandle( zx_handle_t imagePipeHandle_ ) - { - imagePipeHandle = imagePipeHandle_; - return *this; - } - - operator VkImagePipeSurfaceCreateInfoFUCHSIA const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImagePipeSurfaceCreateInfoFUCHSIA &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImagePipeSurfaceCreateInfoFUCHSIA const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( imagePipeHandle == rhs.imagePipeHandle ); - } - - bool operator!=( ImagePipeSurfaceCreateInfoFUCHSIA const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImagePipeSurfaceCreateInfoFUCHSIA::sType; - }; - static_assert( sizeof( ImagePipeSurfaceCreateInfoFUCHSIA ) == sizeof( VkImagePipeSurfaceCreateInfoFUCHSIA ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_FUCHSIA*/ - - namespace layout - { - struct ImagePlaneMemoryRequirementsInfo - { - protected: - ImagePlaneMemoryRequirementsInfo( vk::ImageAspectFlagBits planeAspect_ = vk::ImageAspectFlagBits::eColor ) - : planeAspect( planeAspect_ ) - {} - - ImagePlaneMemoryRequirementsInfo( VkImagePlaneMemoryRequirementsInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImagePlaneMemoryRequirementsInfo& operator=( VkImagePlaneMemoryRequirementsInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImagePlaneMemoryRequirementsInfo; - const void* pNext = nullptr; - vk::ImageAspectFlagBits planeAspect; - }; - static_assert( sizeof( ImagePlaneMemoryRequirementsInfo ) == sizeof( VkImagePlaneMemoryRequirementsInfo ), "layout struct and wrapper have different size!" ); - } - - struct ImagePlaneMemoryRequirementsInfo : public layout::ImagePlaneMemoryRequirementsInfo - { - ImagePlaneMemoryRequirementsInfo( vk::ImageAspectFlagBits planeAspect_ = vk::ImageAspectFlagBits::eColor ) - : layout::ImagePlaneMemoryRequirementsInfo( planeAspect_ ) - {} - - ImagePlaneMemoryRequirementsInfo( VkImagePlaneMemoryRequirementsInfo const & rhs ) - : layout::ImagePlaneMemoryRequirementsInfo( rhs ) - {} - - ImagePlaneMemoryRequirementsInfo& operator=( VkImagePlaneMemoryRequirementsInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImagePlaneMemoryRequirementsInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImagePlaneMemoryRequirementsInfo & setPlaneAspect( vk::ImageAspectFlagBits planeAspect_ ) - { - planeAspect = planeAspect_; - return *this; - } - - operator VkImagePlaneMemoryRequirementsInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImagePlaneMemoryRequirementsInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImagePlaneMemoryRequirementsInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( planeAspect == rhs.planeAspect ); - } - - bool operator!=( ImagePlaneMemoryRequirementsInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImagePlaneMemoryRequirementsInfo::sType; - }; - static_assert( sizeof( ImagePlaneMemoryRequirementsInfo ) == sizeof( VkImagePlaneMemoryRequirementsInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ImageResolve - { - ImageResolve( vk::ImageSubresourceLayers srcSubresource_ = vk::ImageSubresourceLayers(), - vk::Offset3D srcOffset_ = vk::Offset3D(), - vk::ImageSubresourceLayers dstSubresource_ = vk::ImageSubresourceLayers(), - vk::Offset3D dstOffset_ = vk::Offset3D(), - vk::Extent3D extent_ = vk::Extent3D() ) - : srcSubresource( srcSubresource_ ) - , srcOffset( srcOffset_ ) - , dstSubresource( dstSubresource_ ) - , dstOffset( dstOffset_ ) - , extent( extent_ ) - {} - - ImageResolve( VkImageResolve const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageResolve& operator=( VkImageResolve const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageResolve & setSrcSubresource( vk::ImageSubresourceLayers srcSubresource_ ) - { - srcSubresource = srcSubresource_; - return *this; - } - - ImageResolve & setSrcOffset( vk::Offset3D srcOffset_ ) - { - srcOffset = srcOffset_; - return *this; - } - - ImageResolve & setDstSubresource( vk::ImageSubresourceLayers dstSubresource_ ) - { - dstSubresource = dstSubresource_; - return *this; - } - - ImageResolve & setDstOffset( vk::Offset3D dstOffset_ ) - { - dstOffset = dstOffset_; - return *this; - } - - ImageResolve & setExtent( vk::Extent3D extent_ ) - { - extent = extent_; - return *this; - } - - operator VkImageResolve const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageResolve &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageResolve const& rhs ) const - { - return ( srcSubresource == rhs.srcSubresource ) - && ( srcOffset == rhs.srcOffset ) - && ( dstSubresource == rhs.dstSubresource ) - && ( dstOffset == rhs.dstOffset ) - && ( extent == rhs.extent ); - } - - bool operator!=( ImageResolve const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ImageSubresourceLayers srcSubresource; - vk::Offset3D srcOffset; - vk::ImageSubresourceLayers dstSubresource; - vk::Offset3D dstOffset; - vk::Extent3D extent; - }; - static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImageSparseMemoryRequirementsInfo2 - { - protected: - ImageSparseMemoryRequirementsInfo2( vk::Image image_ = vk::Image() ) - : image( image_ ) - {} - - ImageSparseMemoryRequirementsInfo2( VkImageSparseMemoryRequirementsInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageSparseMemoryRequirementsInfo2& operator=( VkImageSparseMemoryRequirementsInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImageSparseMemoryRequirementsInfo2; - const void* pNext = nullptr; - vk::Image image; - }; - static_assert( sizeof( ImageSparseMemoryRequirementsInfo2 ) == sizeof( VkImageSparseMemoryRequirementsInfo2 ), "layout struct and wrapper have different size!" ); - } - - struct ImageSparseMemoryRequirementsInfo2 : public layout::ImageSparseMemoryRequirementsInfo2 - { - ImageSparseMemoryRequirementsInfo2( vk::Image image_ = vk::Image() ) - : layout::ImageSparseMemoryRequirementsInfo2( image_ ) - {} - - ImageSparseMemoryRequirementsInfo2( VkImageSparseMemoryRequirementsInfo2 const & rhs ) - : layout::ImageSparseMemoryRequirementsInfo2( rhs ) - {} - - ImageSparseMemoryRequirementsInfo2& operator=( VkImageSparseMemoryRequirementsInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageSparseMemoryRequirementsInfo2 & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImageSparseMemoryRequirementsInfo2 & setImage( vk::Image image_ ) - { - image = image_; - return *this; - } - - operator VkImageSparseMemoryRequirementsInfo2 const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageSparseMemoryRequirementsInfo2 &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageSparseMemoryRequirementsInfo2 const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( image == rhs.image ); - } - - bool operator!=( ImageSparseMemoryRequirementsInfo2 const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImageSparseMemoryRequirementsInfo2::sType; - }; - static_assert( sizeof( ImageSparseMemoryRequirementsInfo2 ) == sizeof( VkImageSparseMemoryRequirementsInfo2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImageStencilUsageCreateInfoEXT - { - protected: - ImageStencilUsageCreateInfoEXT( vk::ImageUsageFlags stencilUsage_ = vk::ImageUsageFlags() ) - : stencilUsage( stencilUsage_ ) - {} - - ImageStencilUsageCreateInfoEXT( VkImageStencilUsageCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageStencilUsageCreateInfoEXT& operator=( VkImageStencilUsageCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImageStencilUsageCreateInfoEXT; - const void* pNext = nullptr; - vk::ImageUsageFlags stencilUsage; - }; - static_assert( sizeof( ImageStencilUsageCreateInfoEXT ) == sizeof( VkImageStencilUsageCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct ImageStencilUsageCreateInfoEXT : public layout::ImageStencilUsageCreateInfoEXT - { - ImageStencilUsageCreateInfoEXT( vk::ImageUsageFlags stencilUsage_ = vk::ImageUsageFlags() ) - : layout::ImageStencilUsageCreateInfoEXT( stencilUsage_ ) - {} - - ImageStencilUsageCreateInfoEXT( VkImageStencilUsageCreateInfoEXT const & rhs ) - : layout::ImageStencilUsageCreateInfoEXT( rhs ) - {} - - ImageStencilUsageCreateInfoEXT& operator=( VkImageStencilUsageCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageStencilUsageCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImageStencilUsageCreateInfoEXT & setStencilUsage( vk::ImageUsageFlags stencilUsage_ ) - { - stencilUsage = stencilUsage_; - return *this; - } - - operator VkImageStencilUsageCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageStencilUsageCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageStencilUsageCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( stencilUsage == rhs.stencilUsage ); - } - - bool operator!=( ImageStencilUsageCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImageStencilUsageCreateInfoEXT::sType; - }; - static_assert( sizeof( ImageStencilUsageCreateInfoEXT ) == sizeof( VkImageStencilUsageCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImageSwapchainCreateInfoKHR - { - protected: - ImageSwapchainCreateInfoKHR( vk::SwapchainKHR swapchain_ = vk::SwapchainKHR() ) - : swapchain( swapchain_ ) - {} - - ImageSwapchainCreateInfoKHR( VkImageSwapchainCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageSwapchainCreateInfoKHR& operator=( VkImageSwapchainCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImageSwapchainCreateInfoKHR; - const void* pNext = nullptr; - vk::SwapchainKHR swapchain; - }; - static_assert( sizeof( ImageSwapchainCreateInfoKHR ) == sizeof( VkImageSwapchainCreateInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct ImageSwapchainCreateInfoKHR : public layout::ImageSwapchainCreateInfoKHR - { - ImageSwapchainCreateInfoKHR( vk::SwapchainKHR swapchain_ = vk::SwapchainKHR() ) - : layout::ImageSwapchainCreateInfoKHR( swapchain_ ) - {} - - ImageSwapchainCreateInfoKHR( VkImageSwapchainCreateInfoKHR const & rhs ) - : layout::ImageSwapchainCreateInfoKHR( rhs ) - {} - - ImageSwapchainCreateInfoKHR& operator=( VkImageSwapchainCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageSwapchainCreateInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImageSwapchainCreateInfoKHR & setSwapchain( vk::SwapchainKHR swapchain_ ) - { - swapchain = swapchain_; - return *this; - } - - operator VkImageSwapchainCreateInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageSwapchainCreateInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageSwapchainCreateInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( swapchain == rhs.swapchain ); - } - - bool operator!=( ImageSwapchainCreateInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImageSwapchainCreateInfoKHR::sType; - }; - static_assert( sizeof( ImageSwapchainCreateInfoKHR ) == sizeof( VkImageSwapchainCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImageViewASTCDecodeModeEXT - { - protected: - ImageViewASTCDecodeModeEXT( vk::Format decodeMode_ = vk::Format::eUndefined ) - : decodeMode( decodeMode_ ) - {} - - ImageViewASTCDecodeModeEXT( VkImageViewASTCDecodeModeEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageViewASTCDecodeModeEXT& operator=( VkImageViewASTCDecodeModeEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImageViewAstcDecodeModeEXT; - const void* pNext = nullptr; - vk::Format decodeMode; - }; - static_assert( sizeof( ImageViewASTCDecodeModeEXT ) == sizeof( VkImageViewASTCDecodeModeEXT ), "layout struct and wrapper have different size!" ); - } - - struct ImageViewASTCDecodeModeEXT : public layout::ImageViewASTCDecodeModeEXT - { - ImageViewASTCDecodeModeEXT( vk::Format decodeMode_ = vk::Format::eUndefined ) - : layout::ImageViewASTCDecodeModeEXT( decodeMode_ ) - {} - - ImageViewASTCDecodeModeEXT( VkImageViewASTCDecodeModeEXT const & rhs ) - : layout::ImageViewASTCDecodeModeEXT( rhs ) - {} - - ImageViewASTCDecodeModeEXT& operator=( VkImageViewASTCDecodeModeEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageViewASTCDecodeModeEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImageViewASTCDecodeModeEXT & setDecodeMode( vk::Format decodeMode_ ) - { - decodeMode = decodeMode_; - return *this; - } - - operator VkImageViewASTCDecodeModeEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageViewASTCDecodeModeEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageViewASTCDecodeModeEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( decodeMode == rhs.decodeMode ); - } - - bool operator!=( ImageViewASTCDecodeModeEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImageViewASTCDecodeModeEXT::sType; - }; - static_assert( sizeof( ImageViewASTCDecodeModeEXT ) == sizeof( VkImageViewASTCDecodeModeEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImageViewCreateInfo - { - protected: - ImageViewCreateInfo( vk::ImageViewCreateFlags flags_ = vk::ImageViewCreateFlags(), - vk::Image image_ = vk::Image(), - vk::ImageViewType viewType_ = vk::ImageViewType::e1D, - vk::Format format_ = vk::Format::eUndefined, - vk::ComponentMapping components_ = vk::ComponentMapping(), - vk::ImageSubresourceRange subresourceRange_ = vk::ImageSubresourceRange() ) - : flags( flags_ ) - , image( image_ ) - , viewType( viewType_ ) - , format( format_ ) - , components( components_ ) - , subresourceRange( subresourceRange_ ) - {} - - ImageViewCreateInfo( VkImageViewCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImageViewCreateInfo; - const void* pNext = nullptr; - vk::ImageViewCreateFlags flags; - vk::Image image; - vk::ImageViewType viewType; - vk::Format format; - vk::ComponentMapping components; - vk::ImageSubresourceRange subresourceRange; - }; - static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct ImageViewCreateInfo : public layout::ImageViewCreateInfo - { - ImageViewCreateInfo( vk::ImageViewCreateFlags flags_ = vk::ImageViewCreateFlags(), - vk::Image image_ = vk::Image(), - vk::ImageViewType viewType_ = vk::ImageViewType::e1D, - vk::Format format_ = vk::Format::eUndefined, - vk::ComponentMapping components_ = vk::ComponentMapping(), - vk::ImageSubresourceRange subresourceRange_ = vk::ImageSubresourceRange() ) - : layout::ImageViewCreateInfo( flags_, image_, viewType_, format_, components_, subresourceRange_ ) - {} - - ImageViewCreateInfo( VkImageViewCreateInfo const & rhs ) - : layout::ImageViewCreateInfo( rhs ) - {} - - ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageViewCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImageViewCreateInfo & setFlags( vk::ImageViewCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - ImageViewCreateInfo & setImage( vk::Image image_ ) - { - image = image_; - return *this; - } - - ImageViewCreateInfo & setViewType( vk::ImageViewType viewType_ ) - { - viewType = viewType_; - return *this; - } - - ImageViewCreateInfo & setFormat( vk::Format format_ ) - { - format = format_; - return *this; - } - - ImageViewCreateInfo & setComponents( vk::ComponentMapping components_ ) - { - components = components_; - return *this; - } - - ImageViewCreateInfo & setSubresourceRange( vk::ImageSubresourceRange subresourceRange_ ) - { - subresourceRange = subresourceRange_; - return *this; - } - - operator VkImageViewCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageViewCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageViewCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( image == rhs.image ) - && ( viewType == rhs.viewType ) - && ( format == rhs.format ) - && ( components == rhs.components ) - && ( subresourceRange == rhs.subresourceRange ); - } - - bool operator!=( ImageViewCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImageViewCreateInfo::sType; - }; - static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImageViewHandleInfoNVX - { - protected: - ImageViewHandleInfoNVX( vk::ImageView imageView_ = vk::ImageView(), - vk::DescriptorType descriptorType_ = vk::DescriptorType::eSampler, - vk::Sampler sampler_ = vk::Sampler() ) - : imageView( imageView_ ) - , descriptorType( descriptorType_ ) - , sampler( sampler_ ) - {} - - ImageViewHandleInfoNVX( VkImageViewHandleInfoNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageViewHandleInfoNVX& operator=( VkImageViewHandleInfoNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImageViewHandleInfoNVX; - const void* pNext = nullptr; - vk::ImageView imageView; - vk::DescriptorType descriptorType; - vk::Sampler sampler; - }; - static_assert( sizeof( ImageViewHandleInfoNVX ) == sizeof( VkImageViewHandleInfoNVX ), "layout struct and wrapper have different size!" ); - } - - struct ImageViewHandleInfoNVX : public layout::ImageViewHandleInfoNVX - { - ImageViewHandleInfoNVX( vk::ImageView imageView_ = vk::ImageView(), - vk::DescriptorType descriptorType_ = vk::DescriptorType::eSampler, - vk::Sampler sampler_ = vk::Sampler() ) - : layout::ImageViewHandleInfoNVX( imageView_, descriptorType_, sampler_ ) - {} - - ImageViewHandleInfoNVX( VkImageViewHandleInfoNVX const & rhs ) - : layout::ImageViewHandleInfoNVX( rhs ) - {} - - ImageViewHandleInfoNVX& operator=( VkImageViewHandleInfoNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageViewHandleInfoNVX & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImageViewHandleInfoNVX & setImageView( vk::ImageView imageView_ ) - { - imageView = imageView_; - return *this; - } - - ImageViewHandleInfoNVX & setDescriptorType( vk::DescriptorType descriptorType_ ) - { - descriptorType = descriptorType_; - return *this; - } - - ImageViewHandleInfoNVX & setSampler( vk::Sampler sampler_ ) - { - sampler = sampler_; - return *this; - } - - operator VkImageViewHandleInfoNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageViewHandleInfoNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageViewHandleInfoNVX const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( imageView == rhs.imageView ) - && ( descriptorType == rhs.descriptorType ) - && ( sampler == rhs.sampler ); - } - - bool operator!=( ImageViewHandleInfoNVX const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImageViewHandleInfoNVX::sType; - }; - static_assert( sizeof( ImageViewHandleInfoNVX ) == sizeof( VkImageViewHandleInfoNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImageViewUsageCreateInfo - { - protected: - ImageViewUsageCreateInfo( vk::ImageUsageFlags usage_ = vk::ImageUsageFlags() ) - : usage( usage_ ) - {} - - ImageViewUsageCreateInfo( VkImageViewUsageCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImageViewUsageCreateInfo& operator=( VkImageViewUsageCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImageViewUsageCreateInfo; - const void* pNext = nullptr; - vk::ImageUsageFlags usage; - }; - static_assert( sizeof( ImageViewUsageCreateInfo ) == sizeof( VkImageViewUsageCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct ImageViewUsageCreateInfo : public layout::ImageViewUsageCreateInfo - { - ImageViewUsageCreateInfo( vk::ImageUsageFlags usage_ = vk::ImageUsageFlags() ) - : layout::ImageViewUsageCreateInfo( usage_ ) - {} - - ImageViewUsageCreateInfo( VkImageViewUsageCreateInfo const & rhs ) - : layout::ImageViewUsageCreateInfo( rhs ) - {} - - ImageViewUsageCreateInfo& operator=( VkImageViewUsageCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImageViewUsageCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImageViewUsageCreateInfo & setUsage( vk::ImageUsageFlags usage_ ) - { - usage = usage_; - return *this; - } - - operator VkImageViewUsageCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImageViewUsageCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImageViewUsageCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( usage == rhs.usage ); - } - - bool operator!=( ImageViewUsageCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImageViewUsageCreateInfo::sType; - }; - static_assert( sizeof( ImageViewUsageCreateInfo ) == sizeof( VkImageViewUsageCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - - namespace layout - { - struct ImportAndroidHardwareBufferInfoANDROID - { - protected: - ImportAndroidHardwareBufferInfoANDROID( struct AHardwareBuffer* buffer_ = nullptr ) - : buffer( buffer_ ) - {} - - ImportAndroidHardwareBufferInfoANDROID( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImportAndroidHardwareBufferInfoANDROID& operator=( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImportAndroidHardwareBufferInfoANDROID; - const void* pNext = nullptr; - struct AHardwareBuffer* buffer; - }; - static_assert( sizeof( ImportAndroidHardwareBufferInfoANDROID ) == sizeof( VkImportAndroidHardwareBufferInfoANDROID ), "layout struct and wrapper have different size!" ); - } - - struct ImportAndroidHardwareBufferInfoANDROID : public layout::ImportAndroidHardwareBufferInfoANDROID - { - ImportAndroidHardwareBufferInfoANDROID( struct AHardwareBuffer* buffer_ = nullptr ) - : layout::ImportAndroidHardwareBufferInfoANDROID( buffer_ ) - {} - - ImportAndroidHardwareBufferInfoANDROID( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) - : layout::ImportAndroidHardwareBufferInfoANDROID( rhs ) - {} - - ImportAndroidHardwareBufferInfoANDROID& operator=( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImportAndroidHardwareBufferInfoANDROID & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImportAndroidHardwareBufferInfoANDROID & setBuffer( struct AHardwareBuffer* buffer_ ) - { - buffer = buffer_; - return *this; - } - - operator VkImportAndroidHardwareBufferInfoANDROID const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImportAndroidHardwareBufferInfoANDROID &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImportAndroidHardwareBufferInfoANDROID const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( buffer == rhs.buffer ); - } - - bool operator!=( ImportAndroidHardwareBufferInfoANDROID const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImportAndroidHardwareBufferInfoANDROID::sType; - }; - static_assert( sizeof( ImportAndroidHardwareBufferInfoANDROID ) == sizeof( VkImportAndroidHardwareBufferInfoANDROID ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - namespace layout - { - struct ImportFenceFdInfoKHR - { - protected: - ImportFenceFdInfoKHR( vk::Fence fence_ = vk::Fence(), - vk::FenceImportFlags flags_ = vk::FenceImportFlags(), - vk::ExternalFenceHandleTypeFlagBits handleType_ = vk::ExternalFenceHandleTypeFlagBits::eOpaqueFd, - int fd_ = 0 ) - : fence( fence_ ) - , flags( flags_ ) - , handleType( handleType_ ) - , fd( fd_ ) - {} - - ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImportFenceFdInfoKHR& operator=( VkImportFenceFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImportFenceFdInfoKHR; - const void* pNext = nullptr; - vk::Fence fence; - vk::FenceImportFlags flags; - vk::ExternalFenceHandleTypeFlagBits handleType; - int fd; - }; - static_assert( sizeof( ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct ImportFenceFdInfoKHR : public layout::ImportFenceFdInfoKHR - { - ImportFenceFdInfoKHR( vk::Fence fence_ = vk::Fence(), - vk::FenceImportFlags flags_ = vk::FenceImportFlags(), - vk::ExternalFenceHandleTypeFlagBits handleType_ = vk::ExternalFenceHandleTypeFlagBits::eOpaqueFd, - int fd_ = 0 ) - : layout::ImportFenceFdInfoKHR( fence_, flags_, handleType_, fd_ ) - {} - - ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs ) - : layout::ImportFenceFdInfoKHR( rhs ) - {} - - ImportFenceFdInfoKHR& operator=( VkImportFenceFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImportFenceFdInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImportFenceFdInfoKHR & setFence( vk::Fence fence_ ) - { - fence = fence_; - return *this; - } - - ImportFenceFdInfoKHR & setFlags( vk::FenceImportFlags flags_ ) - { - flags = flags_; - return *this; - } - - ImportFenceFdInfoKHR & setHandleType( vk::ExternalFenceHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - ImportFenceFdInfoKHR & setFd( int fd_ ) - { - fd = fd_; - return *this; - } - - operator VkImportFenceFdInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImportFenceFdInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImportFenceFdInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fence == rhs.fence ) - && ( flags == rhs.flags ) - && ( handleType == rhs.handleType ) - && ( fd == rhs.fd ); - } - - bool operator!=( ImportFenceFdInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImportFenceFdInfoKHR::sType; - }; - static_assert( sizeof( ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct ImportFenceWin32HandleInfoKHR - { - protected: - ImportFenceWin32HandleInfoKHR( vk::Fence fence_ = vk::Fence(), - vk::FenceImportFlags flags_ = vk::FenceImportFlags(), - vk::ExternalFenceHandleTypeFlagBits handleType_ = vk::ExternalFenceHandleTypeFlagBits::eOpaqueFd, - HANDLE handle_ = 0, - LPCWSTR name_ = nullptr ) - : fence( fence_ ) - , flags( flags_ ) - , handleType( handleType_ ) - , handle( handle_ ) - , name( name_ ) - {} - - ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImportFenceWin32HandleInfoKHR& operator=( VkImportFenceWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImportFenceWin32HandleInfoKHR; - const void* pNext = nullptr; - vk::Fence fence; - vk::FenceImportFlags flags; - vk::ExternalFenceHandleTypeFlagBits handleType; - HANDLE handle; - LPCWSTR name; - }; - static_assert( sizeof( ImportFenceWin32HandleInfoKHR ) == sizeof( VkImportFenceWin32HandleInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct ImportFenceWin32HandleInfoKHR : public layout::ImportFenceWin32HandleInfoKHR - { - ImportFenceWin32HandleInfoKHR( vk::Fence fence_ = vk::Fence(), - vk::FenceImportFlags flags_ = vk::FenceImportFlags(), - vk::ExternalFenceHandleTypeFlagBits handleType_ = vk::ExternalFenceHandleTypeFlagBits::eOpaqueFd, - HANDLE handle_ = 0, - LPCWSTR name_ = nullptr ) - : layout::ImportFenceWin32HandleInfoKHR( fence_, flags_, handleType_, handle_, name_ ) - {} - - ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs ) - : layout::ImportFenceWin32HandleInfoKHR( rhs ) - {} - - ImportFenceWin32HandleInfoKHR& operator=( VkImportFenceWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImportFenceWin32HandleInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImportFenceWin32HandleInfoKHR & setFence( vk::Fence fence_ ) - { - fence = fence_; - return *this; - } - - ImportFenceWin32HandleInfoKHR & setFlags( vk::FenceImportFlags flags_ ) - { - flags = flags_; - return *this; - } - - ImportFenceWin32HandleInfoKHR & setHandleType( vk::ExternalFenceHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - ImportFenceWin32HandleInfoKHR & setHandle( HANDLE handle_ ) - { - handle = handle_; - return *this; - } - - ImportFenceWin32HandleInfoKHR & setName( LPCWSTR name_ ) - { - name = name_; - return *this; - } - - operator VkImportFenceWin32HandleInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImportFenceWin32HandleInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImportFenceWin32HandleInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fence == rhs.fence ) - && ( flags == rhs.flags ) - && ( handleType == rhs.handleType ) - && ( handle == rhs.handle ) - && ( name == rhs.name ); - } - - bool operator!=( ImportFenceWin32HandleInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImportFenceWin32HandleInfoKHR::sType; - }; - static_assert( sizeof( ImportFenceWin32HandleInfoKHR ) == sizeof( VkImportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - namespace layout - { - struct ImportMemoryFdInfoKHR - { - protected: - ImportMemoryFdInfoKHR( vk::ExternalMemoryHandleTypeFlagBits handleType_ = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, - int fd_ = 0 ) - : handleType( handleType_ ) - , fd( fd_ ) - {} - - ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImportMemoryFdInfoKHR& operator=( VkImportMemoryFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImportMemoryFdInfoKHR; - const void* pNext = nullptr; - vk::ExternalMemoryHandleTypeFlagBits handleType; - int fd; - }; - static_assert( sizeof( ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct ImportMemoryFdInfoKHR : public layout::ImportMemoryFdInfoKHR - { - ImportMemoryFdInfoKHR( vk::ExternalMemoryHandleTypeFlagBits handleType_ = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, - int fd_ = 0 ) - : layout::ImportMemoryFdInfoKHR( handleType_, fd_ ) - {} - - ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs ) - : layout::ImportMemoryFdInfoKHR( rhs ) - {} - - ImportMemoryFdInfoKHR& operator=( VkImportMemoryFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImportMemoryFdInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImportMemoryFdInfoKHR & setHandleType( vk::ExternalMemoryHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - ImportMemoryFdInfoKHR & setFd( int fd_ ) - { - fd = fd_; - return *this; - } - - operator VkImportMemoryFdInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImportMemoryFdInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImportMemoryFdInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleType == rhs.handleType ) - && ( fd == rhs.fd ); - } - - bool operator!=( ImportMemoryFdInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImportMemoryFdInfoKHR::sType; - }; - static_assert( sizeof( ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ImportMemoryHostPointerInfoEXT - { - protected: - ImportMemoryHostPointerInfoEXT( vk::ExternalMemoryHandleTypeFlagBits handleType_ = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, - void* pHostPointer_ = nullptr ) - : handleType( handleType_ ) - , pHostPointer( pHostPointer_ ) - {} - - ImportMemoryHostPointerInfoEXT( VkImportMemoryHostPointerInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImportMemoryHostPointerInfoEXT& operator=( VkImportMemoryHostPointerInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImportMemoryHostPointerInfoEXT; - const void* pNext = nullptr; - vk::ExternalMemoryHandleTypeFlagBits handleType; - void* pHostPointer; - }; - static_assert( sizeof( ImportMemoryHostPointerInfoEXT ) == sizeof( VkImportMemoryHostPointerInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct ImportMemoryHostPointerInfoEXT : public layout::ImportMemoryHostPointerInfoEXT - { - ImportMemoryHostPointerInfoEXT( vk::ExternalMemoryHandleTypeFlagBits handleType_ = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, - void* pHostPointer_ = nullptr ) - : layout::ImportMemoryHostPointerInfoEXT( handleType_, pHostPointer_ ) - {} - - ImportMemoryHostPointerInfoEXT( VkImportMemoryHostPointerInfoEXT const & rhs ) - : layout::ImportMemoryHostPointerInfoEXT( rhs ) - {} - - ImportMemoryHostPointerInfoEXT& operator=( VkImportMemoryHostPointerInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImportMemoryHostPointerInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImportMemoryHostPointerInfoEXT & setHandleType( vk::ExternalMemoryHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - ImportMemoryHostPointerInfoEXT & setPHostPointer( void* pHostPointer_ ) - { - pHostPointer = pHostPointer_; - return *this; - } - - operator VkImportMemoryHostPointerInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImportMemoryHostPointerInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImportMemoryHostPointerInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleType == rhs.handleType ) - && ( pHostPointer == rhs.pHostPointer ); - } - - bool operator!=( ImportMemoryHostPointerInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImportMemoryHostPointerInfoEXT::sType; - }; - static_assert( sizeof( ImportMemoryHostPointerInfoEXT ) == sizeof( VkImportMemoryHostPointerInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct ImportMemoryWin32HandleInfoKHR - { - protected: - ImportMemoryWin32HandleInfoKHR( vk::ExternalMemoryHandleTypeFlagBits handleType_ = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, - HANDLE handle_ = 0, - LPCWSTR name_ = nullptr ) - : handleType( handleType_ ) - , handle( handle_ ) - , name( name_ ) - {} - - ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImportMemoryWin32HandleInfoKHR& operator=( VkImportMemoryWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImportMemoryWin32HandleInfoKHR; - const void* pNext = nullptr; - vk::ExternalMemoryHandleTypeFlagBits handleType; - HANDLE handle; - LPCWSTR name; - }; - static_assert( sizeof( ImportMemoryWin32HandleInfoKHR ) == sizeof( VkImportMemoryWin32HandleInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct ImportMemoryWin32HandleInfoKHR : public layout::ImportMemoryWin32HandleInfoKHR - { - ImportMemoryWin32HandleInfoKHR( vk::ExternalMemoryHandleTypeFlagBits handleType_ = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, - HANDLE handle_ = 0, - LPCWSTR name_ = nullptr ) - : layout::ImportMemoryWin32HandleInfoKHR( handleType_, handle_, name_ ) - {} - - ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs ) - : layout::ImportMemoryWin32HandleInfoKHR( rhs ) - {} - - ImportMemoryWin32HandleInfoKHR& operator=( VkImportMemoryWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImportMemoryWin32HandleInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImportMemoryWin32HandleInfoKHR & setHandleType( vk::ExternalMemoryHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - ImportMemoryWin32HandleInfoKHR & setHandle( HANDLE handle_ ) - { - handle = handle_; - return *this; - } - - ImportMemoryWin32HandleInfoKHR & setName( LPCWSTR name_ ) - { - name = name_; - return *this; - } - - operator VkImportMemoryWin32HandleInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImportMemoryWin32HandleInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImportMemoryWin32HandleInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleType == rhs.handleType ) - && ( handle == rhs.handle ) - && ( name == rhs.name ); - } - - bool operator!=( ImportMemoryWin32HandleInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImportMemoryWin32HandleInfoKHR::sType; - }; - static_assert( sizeof( ImportMemoryWin32HandleInfoKHR ) == sizeof( VkImportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct ImportMemoryWin32HandleInfoNV - { - protected: - ImportMemoryWin32HandleInfoNV( vk::ExternalMemoryHandleTypeFlagsNV handleType_ = vk::ExternalMemoryHandleTypeFlagsNV(), - HANDLE handle_ = 0 ) - : handleType( handleType_ ) - , handle( handle_ ) - {} - - ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImportMemoryWin32HandleInfoNV; - const void* pNext = nullptr; - vk::ExternalMemoryHandleTypeFlagsNV handleType; - HANDLE handle; - }; - static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct ImportMemoryWin32HandleInfoNV : public layout::ImportMemoryWin32HandleInfoNV - { - ImportMemoryWin32HandleInfoNV( vk::ExternalMemoryHandleTypeFlagsNV handleType_ = vk::ExternalMemoryHandleTypeFlagsNV(), - HANDLE handle_ = 0 ) - : layout::ImportMemoryWin32HandleInfoNV( handleType_, handle_ ) - {} - - ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs ) - : layout::ImportMemoryWin32HandleInfoNV( rhs ) - {} - - ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImportMemoryWin32HandleInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImportMemoryWin32HandleInfoNV & setHandleType( vk::ExternalMemoryHandleTypeFlagsNV handleType_ ) - { - handleType = handleType_; - return *this; - } - - ImportMemoryWin32HandleInfoNV & setHandle( HANDLE handle_ ) - { - handle = handle_; - return *this; - } - - operator VkImportMemoryWin32HandleInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImportMemoryWin32HandleInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleType == rhs.handleType ) - && ( handle == rhs.handle ); - } - - bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImportMemoryWin32HandleInfoNV::sType; - }; - static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - namespace layout - { - struct ImportSemaphoreFdInfoKHR - { - protected: - ImportSemaphoreFdInfoKHR( vk::Semaphore semaphore_ = vk::Semaphore(), - vk::SemaphoreImportFlags flags_ = vk::SemaphoreImportFlags(), - vk::ExternalSemaphoreHandleTypeFlagBits handleType_ = vk::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, - int fd_ = 0 ) - : semaphore( semaphore_ ) - , flags( flags_ ) - , handleType( handleType_ ) - , fd( fd_ ) - {} - - ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImportSemaphoreFdInfoKHR& operator=( VkImportSemaphoreFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImportSemaphoreFdInfoKHR; - const void* pNext = nullptr; - vk::Semaphore semaphore; - vk::SemaphoreImportFlags flags; - vk::ExternalSemaphoreHandleTypeFlagBits handleType; - int fd; - }; - static_assert( sizeof( ImportSemaphoreFdInfoKHR ) == sizeof( VkImportSemaphoreFdInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct ImportSemaphoreFdInfoKHR : public layout::ImportSemaphoreFdInfoKHR - { - ImportSemaphoreFdInfoKHR( vk::Semaphore semaphore_ = vk::Semaphore(), - vk::SemaphoreImportFlags flags_ = vk::SemaphoreImportFlags(), - vk::ExternalSemaphoreHandleTypeFlagBits handleType_ = vk::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, - int fd_ = 0 ) - : layout::ImportSemaphoreFdInfoKHR( semaphore_, flags_, handleType_, fd_ ) - {} - - ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs ) - : layout::ImportSemaphoreFdInfoKHR( rhs ) - {} - - ImportSemaphoreFdInfoKHR& operator=( VkImportSemaphoreFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImportSemaphoreFdInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImportSemaphoreFdInfoKHR & setSemaphore( vk::Semaphore semaphore_ ) - { - semaphore = semaphore_; - return *this; - } - - ImportSemaphoreFdInfoKHR & setFlags( vk::SemaphoreImportFlags flags_ ) - { - flags = flags_; - return *this; - } - - ImportSemaphoreFdInfoKHR & setHandleType( vk::ExternalSemaphoreHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - ImportSemaphoreFdInfoKHR & setFd( int fd_ ) - { - fd = fd_; - return *this; - } - - operator VkImportSemaphoreFdInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImportSemaphoreFdInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImportSemaphoreFdInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( semaphore == rhs.semaphore ) - && ( flags == rhs.flags ) - && ( handleType == rhs.handleType ) - && ( fd == rhs.fd ); - } - - bool operator!=( ImportSemaphoreFdInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImportSemaphoreFdInfoKHR::sType; - }; - static_assert( sizeof( ImportSemaphoreFdInfoKHR ) == sizeof( VkImportSemaphoreFdInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct ImportSemaphoreWin32HandleInfoKHR - { - protected: - ImportSemaphoreWin32HandleInfoKHR( vk::Semaphore semaphore_ = vk::Semaphore(), - vk::SemaphoreImportFlags flags_ = vk::SemaphoreImportFlags(), - vk::ExternalSemaphoreHandleTypeFlagBits handleType_ = vk::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, - HANDLE handle_ = 0, - LPCWSTR name_ = nullptr ) - : semaphore( semaphore_ ) - , flags( flags_ ) - , handleType( handleType_ ) - , handle( handle_ ) - , name( name_ ) - {} - - ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ImportSemaphoreWin32HandleInfoKHR& operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eImportSemaphoreWin32HandleInfoKHR; - const void* pNext = nullptr; - vk::Semaphore semaphore; - vk::SemaphoreImportFlags flags; - vk::ExternalSemaphoreHandleTypeFlagBits handleType; - HANDLE handle; - LPCWSTR name; - }; - static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHR ) == sizeof( VkImportSemaphoreWin32HandleInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct ImportSemaphoreWin32HandleInfoKHR : public layout::ImportSemaphoreWin32HandleInfoKHR - { - ImportSemaphoreWin32HandleInfoKHR( vk::Semaphore semaphore_ = vk::Semaphore(), - vk::SemaphoreImportFlags flags_ = vk::SemaphoreImportFlags(), - vk::ExternalSemaphoreHandleTypeFlagBits handleType_ = vk::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, - HANDLE handle_ = 0, - LPCWSTR name_ = nullptr ) - : layout::ImportSemaphoreWin32HandleInfoKHR( semaphore_, flags_, handleType_, handle_, name_ ) - {} - - ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) - : layout::ImportSemaphoreWin32HandleInfoKHR( rhs ) - {} - - ImportSemaphoreWin32HandleInfoKHR& operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ImportSemaphoreWin32HandleInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ImportSemaphoreWin32HandleInfoKHR & setSemaphore( vk::Semaphore semaphore_ ) - { - semaphore = semaphore_; - return *this; - } - - ImportSemaphoreWin32HandleInfoKHR & setFlags( vk::SemaphoreImportFlags flags_ ) - { - flags = flags_; - return *this; - } - - ImportSemaphoreWin32HandleInfoKHR & setHandleType( vk::ExternalSemaphoreHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - ImportSemaphoreWin32HandleInfoKHR & setHandle( HANDLE handle_ ) - { - handle = handle_; - return *this; - } - - ImportSemaphoreWin32HandleInfoKHR & setName( LPCWSTR name_ ) - { - name = name_; - return *this; - } - - operator VkImportSemaphoreWin32HandleInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkImportSemaphoreWin32HandleInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( semaphore == rhs.semaphore ) - && ( flags == rhs.flags ) - && ( handleType == rhs.handleType ) - && ( handle == rhs.handle ) - && ( name == rhs.name ); - } - - bool operator!=( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ImportSemaphoreWin32HandleInfoKHR::sType; - }; - static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHR ) == sizeof( VkImportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - struct IndirectCommandsLayoutTokenNVX - { - IndirectCommandsLayoutTokenNVX( vk::IndirectCommandsTokenTypeNVX tokenType_ = vk::IndirectCommandsTokenTypeNVX::ePipeline, - uint32_t bindingUnit_ = 0, - uint32_t dynamicCount_ = 0, - uint32_t divisor_ = 0 ) - : tokenType( tokenType_ ) - , bindingUnit( bindingUnit_ ) - , dynamicCount( dynamicCount_ ) - , divisor( divisor_ ) - {} - - IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - IndirectCommandsLayoutTokenNVX & setTokenType( vk::IndirectCommandsTokenTypeNVX tokenType_ ) - { - tokenType = tokenType_; - return *this; - } - - IndirectCommandsLayoutTokenNVX & setBindingUnit( uint32_t bindingUnit_ ) - { - bindingUnit = bindingUnit_; - return *this; - } - - IndirectCommandsLayoutTokenNVX & setDynamicCount( uint32_t dynamicCount_ ) - { - dynamicCount = dynamicCount_; - return *this; - } - - IndirectCommandsLayoutTokenNVX & setDivisor( uint32_t divisor_ ) - { - divisor = divisor_; - return *this; - } - - operator VkIndirectCommandsLayoutTokenNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkIndirectCommandsLayoutTokenNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const - { - return ( tokenType == rhs.tokenType ) - && ( bindingUnit == rhs.bindingUnit ) - && ( dynamicCount == rhs.dynamicCount ) - && ( divisor == rhs.divisor ); - } - - bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::IndirectCommandsTokenTypeNVX tokenType; - uint32_t bindingUnit; - uint32_t dynamicCount; - uint32_t divisor; - }; - static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct IndirectCommandsLayoutCreateInfoNVX - { - protected: - IndirectCommandsLayoutCreateInfoNVX( vk::PipelineBindPoint pipelineBindPoint_ = vk::PipelineBindPoint::eGraphics, - vk::IndirectCommandsLayoutUsageFlagsNVX flags_ = vk::IndirectCommandsLayoutUsageFlagsNVX(), - uint32_t tokenCount_ = 0, - const vk::IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr ) - : pipelineBindPoint( pipelineBindPoint_ ) - , flags( flags_ ) - , tokenCount( tokenCount_ ) - , pTokens( pTokens_ ) - {} - - IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eIndirectCommandsLayoutCreateInfoNVX; - const void* pNext = nullptr; - vk::PipelineBindPoint pipelineBindPoint; - vk::IndirectCommandsLayoutUsageFlagsNVX flags; - uint32_t tokenCount; - const vk::IndirectCommandsLayoutTokenNVX* pTokens; - }; - static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "layout struct and wrapper have different size!" ); - } - - struct IndirectCommandsLayoutCreateInfoNVX : public layout::IndirectCommandsLayoutCreateInfoNVX - { - IndirectCommandsLayoutCreateInfoNVX( vk::PipelineBindPoint pipelineBindPoint_ = vk::PipelineBindPoint::eGraphics, - vk::IndirectCommandsLayoutUsageFlagsNVX flags_ = vk::IndirectCommandsLayoutUsageFlagsNVX(), - uint32_t tokenCount_ = 0, - const vk::IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr ) - : layout::IndirectCommandsLayoutCreateInfoNVX( pipelineBindPoint_, flags_, tokenCount_, pTokens_ ) - {} - - IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs ) - : layout::IndirectCommandsLayoutCreateInfoNVX( rhs ) - {} - - IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - IndirectCommandsLayoutCreateInfoNVX & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - IndirectCommandsLayoutCreateInfoNVX & setPipelineBindPoint( vk::PipelineBindPoint pipelineBindPoint_ ) - { - pipelineBindPoint = pipelineBindPoint_; - return *this; - } - - IndirectCommandsLayoutCreateInfoNVX & setFlags( vk::IndirectCommandsLayoutUsageFlagsNVX flags_ ) - { - flags = flags_; - return *this; - } - - IndirectCommandsLayoutCreateInfoNVX & setTokenCount( uint32_t tokenCount_ ) - { - tokenCount = tokenCount_; - return *this; - } - - IndirectCommandsLayoutCreateInfoNVX & setPTokens( const vk::IndirectCommandsLayoutTokenNVX* pTokens_ ) - { - pTokens = pTokens_; - return *this; - } - - operator VkIndirectCommandsLayoutCreateInfoNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkIndirectCommandsLayoutCreateInfoNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pipelineBindPoint == rhs.pipelineBindPoint ) - && ( flags == rhs.flags ) - && ( tokenCount == rhs.tokenCount ) - && ( pTokens == rhs.pTokens ); - } - - bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::IndirectCommandsLayoutCreateInfoNVX::sType; - }; - static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct InitializePerformanceApiInfoINTEL - { - protected: - InitializePerformanceApiInfoINTEL( void* pUserData_ = nullptr ) - : pUserData( pUserData_ ) - {} - - InitializePerformanceApiInfoINTEL( VkInitializePerformanceApiInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - InitializePerformanceApiInfoINTEL& operator=( VkInitializePerformanceApiInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eInitializePerformanceApiInfoINTEL; - const void* pNext = nullptr; - void* pUserData; - }; - static_assert( sizeof( InitializePerformanceApiInfoINTEL ) == sizeof( VkInitializePerformanceApiInfoINTEL ), "layout struct and wrapper have different size!" ); - } - - struct InitializePerformanceApiInfoINTEL : public layout::InitializePerformanceApiInfoINTEL - { - InitializePerformanceApiInfoINTEL( void* pUserData_ = nullptr ) - : layout::InitializePerformanceApiInfoINTEL( pUserData_ ) - {} - - InitializePerformanceApiInfoINTEL( VkInitializePerformanceApiInfoINTEL const & rhs ) - : layout::InitializePerformanceApiInfoINTEL( rhs ) - {} - - InitializePerformanceApiInfoINTEL& operator=( VkInitializePerformanceApiInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - InitializePerformanceApiInfoINTEL & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - InitializePerformanceApiInfoINTEL & setPUserData( void* pUserData_ ) - { - pUserData = pUserData_; - return *this; - } - - operator VkInitializePerformanceApiInfoINTEL const&() const - { - return *reinterpret_cast( this ); - } - - operator VkInitializePerformanceApiInfoINTEL &() - { - return *reinterpret_cast( this ); - } - - bool operator==( InitializePerformanceApiInfoINTEL const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pUserData == rhs.pUserData ); - } - - bool operator!=( InitializePerformanceApiInfoINTEL const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::InitializePerformanceApiInfoINTEL::sType; - }; - static_assert( sizeof( InitializePerformanceApiInfoINTEL ) == sizeof( VkInitializePerformanceApiInfoINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct InputAttachmentAspectReference - { - InputAttachmentAspectReference( uint32_t subpass_ = 0, - uint32_t inputAttachmentIndex_ = 0, - vk::ImageAspectFlags aspectMask_ = vk::ImageAspectFlags() ) - : subpass( subpass_ ) - , inputAttachmentIndex( inputAttachmentIndex_ ) - , aspectMask( aspectMask_ ) - {} - - InputAttachmentAspectReference( VkInputAttachmentAspectReference const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - InputAttachmentAspectReference& operator=( VkInputAttachmentAspectReference const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - InputAttachmentAspectReference & setSubpass( uint32_t subpass_ ) - { - subpass = subpass_; - return *this; - } - - InputAttachmentAspectReference & setInputAttachmentIndex( uint32_t inputAttachmentIndex_ ) - { - inputAttachmentIndex = inputAttachmentIndex_; - return *this; - } - - InputAttachmentAspectReference & setAspectMask( vk::ImageAspectFlags aspectMask_ ) - { - aspectMask = aspectMask_; - return *this; - } - - operator VkInputAttachmentAspectReference const&() const - { - return *reinterpret_cast( this ); - } - - operator VkInputAttachmentAspectReference &() - { - return *reinterpret_cast( this ); - } - - bool operator==( InputAttachmentAspectReference const& rhs ) const - { - return ( subpass == rhs.subpass ) - && ( inputAttachmentIndex == rhs.inputAttachmentIndex ) - && ( aspectMask == rhs.aspectMask ); - } - - bool operator!=( InputAttachmentAspectReference const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t subpass; - uint32_t inputAttachmentIndex; - vk::ImageAspectFlags aspectMask; - }; - static_assert( sizeof( InputAttachmentAspectReference ) == sizeof( VkInputAttachmentAspectReference ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct InstanceCreateInfo - { - protected: - InstanceCreateInfo( vk::InstanceCreateFlags flags_ = vk::InstanceCreateFlags(), - const vk::ApplicationInfo* pApplicationInfo_ = nullptr, - uint32_t enabledLayerCount_ = 0, - const char* const* ppEnabledLayerNames_ = nullptr, - uint32_t enabledExtensionCount_ = 0, - const char* const* ppEnabledExtensionNames_ = nullptr ) - : flags( flags_ ) - , pApplicationInfo( pApplicationInfo_ ) - , enabledLayerCount( enabledLayerCount_ ) - , ppEnabledLayerNames( ppEnabledLayerNames_ ) - , enabledExtensionCount( enabledExtensionCount_ ) - , ppEnabledExtensionNames( ppEnabledExtensionNames_ ) - {} - - InstanceCreateInfo( VkInstanceCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eInstanceCreateInfo; - const void* pNext = nullptr; - vk::InstanceCreateFlags flags; - const vk::ApplicationInfo* pApplicationInfo; - uint32_t enabledLayerCount; - const char* const* ppEnabledLayerNames; - uint32_t enabledExtensionCount; - const char* const* ppEnabledExtensionNames; - }; - static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct InstanceCreateInfo : public layout::InstanceCreateInfo - { - InstanceCreateInfo( vk::InstanceCreateFlags flags_ = vk::InstanceCreateFlags(), - const vk::ApplicationInfo* pApplicationInfo_ = nullptr, - uint32_t enabledLayerCount_ = 0, - const char* const* ppEnabledLayerNames_ = nullptr, - uint32_t enabledExtensionCount_ = 0, - const char* const* ppEnabledExtensionNames_ = nullptr ) - : layout::InstanceCreateInfo( flags_, pApplicationInfo_, enabledLayerCount_, ppEnabledLayerNames_, enabledExtensionCount_, ppEnabledExtensionNames_ ) - {} - - InstanceCreateInfo( VkInstanceCreateInfo const & rhs ) - : layout::InstanceCreateInfo( rhs ) - {} - - InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - InstanceCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - InstanceCreateInfo & setFlags( vk::InstanceCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - InstanceCreateInfo & setPApplicationInfo( const vk::ApplicationInfo* pApplicationInfo_ ) - { - pApplicationInfo = pApplicationInfo_; - return *this; - } - - InstanceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) - { - enabledLayerCount = enabledLayerCount_; - return *this; - } - - InstanceCreateInfo & setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ ) - { - ppEnabledLayerNames = ppEnabledLayerNames_; - return *this; - } - - InstanceCreateInfo & setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) - { - enabledExtensionCount = enabledExtensionCount_; - return *this; - } - - InstanceCreateInfo & setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ ) - { - ppEnabledExtensionNames = ppEnabledExtensionNames_; - return *this; - } - - operator VkInstanceCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkInstanceCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( InstanceCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( pApplicationInfo == rhs.pApplicationInfo ) - && ( enabledLayerCount == rhs.enabledLayerCount ) - && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames ) - && ( enabledExtensionCount == rhs.enabledExtensionCount ) - && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames ); - } - - bool operator!=( InstanceCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::InstanceCreateInfo::sType; - }; - static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct LayerProperties - { - operator VkLayerProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkLayerProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( LayerProperties const& rhs ) const - { - return ( memcmp( layerName, rhs.layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 ) - && ( specVersion == rhs.specVersion ) - && ( implementationVersion == rhs.implementationVersion ) - && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 ); - } - - bool operator!=( LayerProperties const& rhs ) const - { - return !operator==( rhs ); - } - - public: - char layerName[VK_MAX_EXTENSION_NAME_SIZE]; - uint32_t specVersion; - uint32_t implementationVersion; - char description[VK_MAX_DESCRIPTION_SIZE]; - }; - static_assert( sizeof( LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_MACOS_MVK - - namespace layout - { - struct MacOSSurfaceCreateInfoMVK - { - protected: - MacOSSurfaceCreateInfoMVK( vk::MacOSSurfaceCreateFlagsMVK flags_ = vk::MacOSSurfaceCreateFlagsMVK(), - const void* pView_ = nullptr ) - : flags( flags_ ) - , pView( pView_ ) - {} - - MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMacosSurfaceCreateInfoMVK; - const void* pNext = nullptr; - vk::MacOSSurfaceCreateFlagsMVK flags; - const void* pView; - }; - static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "layout struct and wrapper have different size!" ); - } - - struct MacOSSurfaceCreateInfoMVK : public layout::MacOSSurfaceCreateInfoMVK - { - MacOSSurfaceCreateInfoMVK( vk::MacOSSurfaceCreateFlagsMVK flags_ = vk::MacOSSurfaceCreateFlagsMVK(), - const void* pView_ = nullptr ) - : layout::MacOSSurfaceCreateInfoMVK( flags_, pView_ ) - {} - - MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs ) - : layout::MacOSSurfaceCreateInfoMVK( rhs ) - {} - - MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - MacOSSurfaceCreateInfoMVK & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - MacOSSurfaceCreateInfoMVK & setFlags( vk::MacOSSurfaceCreateFlagsMVK flags_ ) - { - flags = flags_; - return *this; - } - - MacOSSurfaceCreateInfoMVK & setPView( const void* pView_ ) - { - pView = pView_; - return *this; - } - - operator VkMacOSSurfaceCreateInfoMVK const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMacOSSurfaceCreateInfoMVK &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( pView == rhs.pView ); - } - - bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MacOSSurfaceCreateInfoMVK::sType; - }; - static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_MACOS_MVK*/ - - namespace layout - { - struct MappedMemoryRange - { - protected: - MappedMemoryRange( vk::DeviceMemory memory_ = vk::DeviceMemory(), - vk::DeviceSize offset_ = 0, - vk::DeviceSize size_ = 0 ) - : memory( memory_ ) - , offset( offset_ ) - , size( size_ ) - {} - - MappedMemoryRange( VkMappedMemoryRange const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMappedMemoryRange; - const void* pNext = nullptr; - vk::DeviceMemory memory; - vk::DeviceSize offset; - vk::DeviceSize size; - }; - static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "layout struct and wrapper have different size!" ); - } - - struct MappedMemoryRange : public layout::MappedMemoryRange - { - MappedMemoryRange( vk::DeviceMemory memory_ = vk::DeviceMemory(), - vk::DeviceSize offset_ = 0, - vk::DeviceSize size_ = 0 ) - : layout::MappedMemoryRange( memory_, offset_, size_ ) - {} - - MappedMemoryRange( VkMappedMemoryRange const & rhs ) - : layout::MappedMemoryRange( rhs ) - {} - - MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - MappedMemoryRange & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - MappedMemoryRange & setMemory( vk::DeviceMemory memory_ ) - { - memory = memory_; - return *this; - } - - MappedMemoryRange & setOffset( vk::DeviceSize offset_ ) - { - offset = offset_; - return *this; - } - - MappedMemoryRange & setSize( vk::DeviceSize size_ ) - { - size = size_; - return *this; - } - - operator VkMappedMemoryRange const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMappedMemoryRange &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MappedMemoryRange const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memory == rhs.memory ) - && ( offset == rhs.offset ) - && ( size == rhs.size ); - } - - bool operator!=( MappedMemoryRange const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MappedMemoryRange::sType; - }; - static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct MemoryAllocateFlagsInfo - { - protected: - MemoryAllocateFlagsInfo( vk::MemoryAllocateFlags flags_ = vk::MemoryAllocateFlags(), - uint32_t deviceMask_ = 0 ) - : flags( flags_ ) - , deviceMask( deviceMask_ ) - {} - - MemoryAllocateFlagsInfo( VkMemoryAllocateFlagsInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MemoryAllocateFlagsInfo& operator=( VkMemoryAllocateFlagsInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMemoryAllocateFlagsInfo; - const void* pNext = nullptr; - vk::MemoryAllocateFlags flags; - uint32_t deviceMask; - }; - static_assert( sizeof( MemoryAllocateFlagsInfo ) == sizeof( VkMemoryAllocateFlagsInfo ), "layout struct and wrapper have different size!" ); - } - - struct MemoryAllocateFlagsInfo : public layout::MemoryAllocateFlagsInfo - { - MemoryAllocateFlagsInfo( vk::MemoryAllocateFlags flags_ = vk::MemoryAllocateFlags(), - uint32_t deviceMask_ = 0 ) - : layout::MemoryAllocateFlagsInfo( flags_, deviceMask_ ) - {} - - MemoryAllocateFlagsInfo( VkMemoryAllocateFlagsInfo const & rhs ) - : layout::MemoryAllocateFlagsInfo( rhs ) - {} - - MemoryAllocateFlagsInfo& operator=( VkMemoryAllocateFlagsInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - MemoryAllocateFlagsInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - MemoryAllocateFlagsInfo & setFlags( vk::MemoryAllocateFlags flags_ ) - { - flags = flags_; - return *this; - } - - MemoryAllocateFlagsInfo & setDeviceMask( uint32_t deviceMask_ ) - { - deviceMask = deviceMask_; - return *this; - } - - operator VkMemoryAllocateFlagsInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryAllocateFlagsInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryAllocateFlagsInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( deviceMask == rhs.deviceMask ); - } - - bool operator!=( MemoryAllocateFlagsInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MemoryAllocateFlagsInfo::sType; - }; - static_assert( sizeof( MemoryAllocateFlagsInfo ) == sizeof( VkMemoryAllocateFlagsInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct MemoryAllocateInfo - { - protected: - MemoryAllocateInfo( vk::DeviceSize allocationSize_ = 0, - uint32_t memoryTypeIndex_ = 0 ) - : allocationSize( allocationSize_ ) - , memoryTypeIndex( memoryTypeIndex_ ) - {} - - MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMemoryAllocateInfo; - const void* pNext = nullptr; - vk::DeviceSize allocationSize; - uint32_t memoryTypeIndex; - }; - static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "layout struct and wrapper have different size!" ); - } - - struct MemoryAllocateInfo : public layout::MemoryAllocateInfo - { - MemoryAllocateInfo( vk::DeviceSize allocationSize_ = 0, - uint32_t memoryTypeIndex_ = 0 ) - : layout::MemoryAllocateInfo( allocationSize_, memoryTypeIndex_ ) - {} - - MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs ) - : layout::MemoryAllocateInfo( rhs ) - {} - - MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - MemoryAllocateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - MemoryAllocateInfo & setAllocationSize( vk::DeviceSize allocationSize_ ) - { - allocationSize = allocationSize_; - return *this; - } - - MemoryAllocateInfo & setMemoryTypeIndex( uint32_t memoryTypeIndex_ ) - { - memoryTypeIndex = memoryTypeIndex_; - return *this; - } - - operator VkMemoryAllocateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryAllocateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryAllocateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( allocationSize == rhs.allocationSize ) - && ( memoryTypeIndex == rhs.memoryTypeIndex ); - } - - bool operator!=( MemoryAllocateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MemoryAllocateInfo::sType; - }; - static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct MemoryBarrier - { - protected: - MemoryBarrier( vk::AccessFlags srcAccessMask_ = vk::AccessFlags(), - vk::AccessFlags dstAccessMask_ = vk::AccessFlags() ) - : srcAccessMask( srcAccessMask_ ) - , dstAccessMask( dstAccessMask_ ) - {} - - MemoryBarrier( VkMemoryBarrier const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MemoryBarrier& operator=( VkMemoryBarrier const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMemoryBarrier; - const void* pNext = nullptr; - vk::AccessFlags srcAccessMask; - vk::AccessFlags dstAccessMask; - }; - static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "layout struct and wrapper have different size!" ); - } - - struct MemoryBarrier : public layout::MemoryBarrier - { - MemoryBarrier( vk::AccessFlags srcAccessMask_ = vk::AccessFlags(), - vk::AccessFlags dstAccessMask_ = vk::AccessFlags() ) - : layout::MemoryBarrier( srcAccessMask_, dstAccessMask_ ) - {} - - MemoryBarrier( VkMemoryBarrier const & rhs ) - : layout::MemoryBarrier( rhs ) - {} - - MemoryBarrier& operator=( VkMemoryBarrier const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - MemoryBarrier & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - MemoryBarrier & setSrcAccessMask( vk::AccessFlags srcAccessMask_ ) - { - srcAccessMask = srcAccessMask_; - return *this; - } - - MemoryBarrier & setDstAccessMask( vk::AccessFlags dstAccessMask_ ) - { - dstAccessMask = dstAccessMask_; - return *this; - } - - operator VkMemoryBarrier const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryBarrier &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryBarrier const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcAccessMask == rhs.srcAccessMask ) - && ( dstAccessMask == rhs.dstAccessMask ); - } - - bool operator!=( MemoryBarrier const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MemoryBarrier::sType; - }; - static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct MemoryDedicatedAllocateInfo - { - protected: - MemoryDedicatedAllocateInfo( vk::Image image_ = vk::Image(), - vk::Buffer buffer_ = vk::Buffer() ) - : image( image_ ) - , buffer( buffer_ ) - {} - - MemoryDedicatedAllocateInfo( VkMemoryDedicatedAllocateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MemoryDedicatedAllocateInfo& operator=( VkMemoryDedicatedAllocateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMemoryDedicatedAllocateInfo; - const void* pNext = nullptr; - vk::Image image; - vk::Buffer buffer; - }; - static_assert( sizeof( MemoryDedicatedAllocateInfo ) == sizeof( VkMemoryDedicatedAllocateInfo ), "layout struct and wrapper have different size!" ); - } - - struct MemoryDedicatedAllocateInfo : public layout::MemoryDedicatedAllocateInfo - { - MemoryDedicatedAllocateInfo( vk::Image image_ = vk::Image(), - vk::Buffer buffer_ = vk::Buffer() ) - : layout::MemoryDedicatedAllocateInfo( image_, buffer_ ) - {} - - MemoryDedicatedAllocateInfo( VkMemoryDedicatedAllocateInfo const & rhs ) - : layout::MemoryDedicatedAllocateInfo( rhs ) - {} - - MemoryDedicatedAllocateInfo& operator=( VkMemoryDedicatedAllocateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - MemoryDedicatedAllocateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - MemoryDedicatedAllocateInfo & setImage( vk::Image image_ ) - { - image = image_; - return *this; - } - - MemoryDedicatedAllocateInfo & setBuffer( vk::Buffer buffer_ ) - { - buffer = buffer_; - return *this; - } - - operator VkMemoryDedicatedAllocateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryDedicatedAllocateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryDedicatedAllocateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( image == rhs.image ) - && ( buffer == rhs.buffer ); - } - - bool operator!=( MemoryDedicatedAllocateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MemoryDedicatedAllocateInfo::sType; - }; - static_assert( sizeof( MemoryDedicatedAllocateInfo ) == sizeof( VkMemoryDedicatedAllocateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct MemoryDedicatedRequirements - { - protected: - MemoryDedicatedRequirements( vk::Bool32 prefersDedicatedAllocation_ = 0, - vk::Bool32 requiresDedicatedAllocation_ = 0 ) - : prefersDedicatedAllocation( prefersDedicatedAllocation_ ) - , requiresDedicatedAllocation( requiresDedicatedAllocation_ ) - {} - - MemoryDedicatedRequirements( VkMemoryDedicatedRequirements const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MemoryDedicatedRequirements& operator=( VkMemoryDedicatedRequirements const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMemoryDedicatedRequirements; - void* pNext = nullptr; - vk::Bool32 prefersDedicatedAllocation; - vk::Bool32 requiresDedicatedAllocation; - }; - static_assert( sizeof( MemoryDedicatedRequirements ) == sizeof( VkMemoryDedicatedRequirements ), "layout struct and wrapper have different size!" ); - } - - struct MemoryDedicatedRequirements : public layout::MemoryDedicatedRequirements - { - operator VkMemoryDedicatedRequirements const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryDedicatedRequirements &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryDedicatedRequirements const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation ) - && ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation ); - } - - bool operator!=( MemoryDedicatedRequirements const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MemoryDedicatedRequirements::sType; - }; - static_assert( sizeof( MemoryDedicatedRequirements ) == sizeof( VkMemoryDedicatedRequirements ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct MemoryFdPropertiesKHR - { - protected: - MemoryFdPropertiesKHR( uint32_t memoryTypeBits_ = 0 ) - : memoryTypeBits( memoryTypeBits_ ) - {} - - MemoryFdPropertiesKHR( VkMemoryFdPropertiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MemoryFdPropertiesKHR& operator=( VkMemoryFdPropertiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMemoryFdPropertiesKHR; - void* pNext = nullptr; - uint32_t memoryTypeBits; - }; - static_assert( sizeof( MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ), "layout struct and wrapper have different size!" ); - } - - struct MemoryFdPropertiesKHR : public layout::MemoryFdPropertiesKHR - { - operator VkMemoryFdPropertiesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryFdPropertiesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryFdPropertiesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memoryTypeBits == rhs.memoryTypeBits ); - } - - bool operator!=( MemoryFdPropertiesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MemoryFdPropertiesKHR::sType; - }; - static_assert( sizeof( MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - - namespace layout - { - struct MemoryGetAndroidHardwareBufferInfoANDROID - { - protected: - MemoryGetAndroidHardwareBufferInfoANDROID( vk::DeviceMemory memory_ = vk::DeviceMemory() ) - : memory( memory_ ) - {} - - MemoryGetAndroidHardwareBufferInfoANDROID( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MemoryGetAndroidHardwareBufferInfoANDROID& operator=( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID; - const void* pNext = nullptr; - vk::DeviceMemory memory; - }; - static_assert( sizeof( MemoryGetAndroidHardwareBufferInfoANDROID ) == sizeof( VkMemoryGetAndroidHardwareBufferInfoANDROID ), "layout struct and wrapper have different size!" ); - } - - struct MemoryGetAndroidHardwareBufferInfoANDROID : public layout::MemoryGetAndroidHardwareBufferInfoANDROID - { - MemoryGetAndroidHardwareBufferInfoANDROID( vk::DeviceMemory memory_ = vk::DeviceMemory() ) - : layout::MemoryGetAndroidHardwareBufferInfoANDROID( memory_ ) - {} - - MemoryGetAndroidHardwareBufferInfoANDROID( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) - : layout::MemoryGetAndroidHardwareBufferInfoANDROID( rhs ) - {} - - MemoryGetAndroidHardwareBufferInfoANDROID& operator=( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - MemoryGetAndroidHardwareBufferInfoANDROID & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - MemoryGetAndroidHardwareBufferInfoANDROID & setMemory( vk::DeviceMemory memory_ ) - { - memory = memory_; - return *this; - } - - operator VkMemoryGetAndroidHardwareBufferInfoANDROID const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryGetAndroidHardwareBufferInfoANDROID &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryGetAndroidHardwareBufferInfoANDROID const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memory == rhs.memory ); - } - - bool operator!=( MemoryGetAndroidHardwareBufferInfoANDROID const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MemoryGetAndroidHardwareBufferInfoANDROID::sType; - }; - static_assert( sizeof( MemoryGetAndroidHardwareBufferInfoANDROID ) == sizeof( VkMemoryGetAndroidHardwareBufferInfoANDROID ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - namespace layout - { - struct MemoryGetFdInfoKHR - { - protected: - MemoryGetFdInfoKHR( vk::DeviceMemory memory_ = vk::DeviceMemory(), - vk::ExternalMemoryHandleTypeFlagBits handleType_ = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) - : memory( memory_ ) - , handleType( handleType_ ) - {} - - MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MemoryGetFdInfoKHR& operator=( VkMemoryGetFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMemoryGetFdInfoKHR; - const void* pNext = nullptr; - vk::DeviceMemory memory; - vk::ExternalMemoryHandleTypeFlagBits handleType; - }; - static_assert( sizeof( MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct MemoryGetFdInfoKHR : public layout::MemoryGetFdInfoKHR - { - MemoryGetFdInfoKHR( vk::DeviceMemory memory_ = vk::DeviceMemory(), - vk::ExternalMemoryHandleTypeFlagBits handleType_ = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) - : layout::MemoryGetFdInfoKHR( memory_, handleType_ ) - {} - - MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs ) - : layout::MemoryGetFdInfoKHR( rhs ) - {} - - MemoryGetFdInfoKHR& operator=( VkMemoryGetFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - MemoryGetFdInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - MemoryGetFdInfoKHR & setMemory( vk::DeviceMemory memory_ ) - { - memory = memory_; - return *this; - } - - MemoryGetFdInfoKHR & setHandleType( vk::ExternalMemoryHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - operator VkMemoryGetFdInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryGetFdInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryGetFdInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memory == rhs.memory ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( MemoryGetFdInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MemoryGetFdInfoKHR::sType; - }; - static_assert( sizeof( MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct MemoryGetWin32HandleInfoKHR - { - protected: - MemoryGetWin32HandleInfoKHR( vk::DeviceMemory memory_ = vk::DeviceMemory(), - vk::ExternalMemoryHandleTypeFlagBits handleType_ = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) - : memory( memory_ ) - , handleType( handleType_ ) - {} - - MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MemoryGetWin32HandleInfoKHR& operator=( VkMemoryGetWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMemoryGetWin32HandleInfoKHR; - const void* pNext = nullptr; - vk::DeviceMemory memory; - vk::ExternalMemoryHandleTypeFlagBits handleType; - }; - static_assert( sizeof( MemoryGetWin32HandleInfoKHR ) == sizeof( VkMemoryGetWin32HandleInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct MemoryGetWin32HandleInfoKHR : public layout::MemoryGetWin32HandleInfoKHR - { - MemoryGetWin32HandleInfoKHR( vk::DeviceMemory memory_ = vk::DeviceMemory(), - vk::ExternalMemoryHandleTypeFlagBits handleType_ = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) - : layout::MemoryGetWin32HandleInfoKHR( memory_, handleType_ ) - {} - - MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs ) - : layout::MemoryGetWin32HandleInfoKHR( rhs ) - {} - - MemoryGetWin32HandleInfoKHR& operator=( VkMemoryGetWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - MemoryGetWin32HandleInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - MemoryGetWin32HandleInfoKHR & setMemory( vk::DeviceMemory memory_ ) - { - memory = memory_; - return *this; - } - - MemoryGetWin32HandleInfoKHR & setHandleType( vk::ExternalMemoryHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - operator VkMemoryGetWin32HandleInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryGetWin32HandleInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryGetWin32HandleInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memory == rhs.memory ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( MemoryGetWin32HandleInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MemoryGetWin32HandleInfoKHR::sType; - }; - static_assert( sizeof( MemoryGetWin32HandleInfoKHR ) == sizeof( VkMemoryGetWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - struct MemoryHeap - { - operator VkMemoryHeap const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryHeap &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryHeap const& rhs ) const - { - return ( size == rhs.size ) - && ( flags == rhs.flags ); - } - - bool operator!=( MemoryHeap const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::DeviceSize size; - vk::MemoryHeapFlags flags; - }; - static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct MemoryHostPointerPropertiesEXT - { - protected: - MemoryHostPointerPropertiesEXT( uint32_t memoryTypeBits_ = 0 ) - : memoryTypeBits( memoryTypeBits_ ) - {} - - MemoryHostPointerPropertiesEXT( VkMemoryHostPointerPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MemoryHostPointerPropertiesEXT& operator=( VkMemoryHostPointerPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMemoryHostPointerPropertiesEXT; - void* pNext = nullptr; - uint32_t memoryTypeBits; - }; - static_assert( sizeof( MemoryHostPointerPropertiesEXT ) == sizeof( VkMemoryHostPointerPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct MemoryHostPointerPropertiesEXT : public layout::MemoryHostPointerPropertiesEXT - { - operator VkMemoryHostPointerPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryHostPointerPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryHostPointerPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memoryTypeBits == rhs.memoryTypeBits ); - } - - bool operator!=( MemoryHostPointerPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MemoryHostPointerPropertiesEXT::sType; - }; - static_assert( sizeof( MemoryHostPointerPropertiesEXT ) == sizeof( VkMemoryHostPointerPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct MemoryPriorityAllocateInfoEXT - { - protected: - MemoryPriorityAllocateInfoEXT( float priority_ = 0 ) - : priority( priority_ ) - {} - - MemoryPriorityAllocateInfoEXT( VkMemoryPriorityAllocateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MemoryPriorityAllocateInfoEXT& operator=( VkMemoryPriorityAllocateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMemoryPriorityAllocateInfoEXT; - const void* pNext = nullptr; - float priority; - }; - static_assert( sizeof( MemoryPriorityAllocateInfoEXT ) == sizeof( VkMemoryPriorityAllocateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct MemoryPriorityAllocateInfoEXT : public layout::MemoryPriorityAllocateInfoEXT - { - MemoryPriorityAllocateInfoEXT( float priority_ = 0 ) - : layout::MemoryPriorityAllocateInfoEXT( priority_ ) - {} - - MemoryPriorityAllocateInfoEXT( VkMemoryPriorityAllocateInfoEXT const & rhs ) - : layout::MemoryPriorityAllocateInfoEXT( rhs ) - {} - - MemoryPriorityAllocateInfoEXT& operator=( VkMemoryPriorityAllocateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - MemoryPriorityAllocateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - MemoryPriorityAllocateInfoEXT & setPriority( float priority_ ) - { - priority = priority_; - return *this; - } - - operator VkMemoryPriorityAllocateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryPriorityAllocateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryPriorityAllocateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( priority == rhs.priority ); - } - - bool operator!=( MemoryPriorityAllocateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MemoryPriorityAllocateInfoEXT::sType; - }; - static_assert( sizeof( MemoryPriorityAllocateInfoEXT ) == sizeof( VkMemoryPriorityAllocateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct MemoryRequirements - { - operator VkMemoryRequirements const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryRequirements &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryRequirements const& rhs ) const - { - return ( size == rhs.size ) - && ( alignment == rhs.alignment ) - && ( memoryTypeBits == rhs.memoryTypeBits ); - } - - bool operator!=( MemoryRequirements const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::DeviceSize size; - vk::DeviceSize alignment; - uint32_t memoryTypeBits; - }; - static_assert( sizeof( MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct MemoryRequirements2 - { - protected: - MemoryRequirements2( vk::MemoryRequirements memoryRequirements_ = vk::MemoryRequirements() ) - : memoryRequirements( memoryRequirements_ ) - {} - - MemoryRequirements2( VkMemoryRequirements2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MemoryRequirements2& operator=( VkMemoryRequirements2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMemoryRequirements2; - void* pNext = nullptr; - vk::MemoryRequirements memoryRequirements; - }; - static_assert( sizeof( MemoryRequirements2 ) == sizeof( VkMemoryRequirements2 ), "layout struct and wrapper have different size!" ); - } - - struct MemoryRequirements2 : public layout::MemoryRequirements2 - { - operator VkMemoryRequirements2 const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryRequirements2 &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryRequirements2 const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memoryRequirements == rhs.memoryRequirements ); - } - - bool operator!=( MemoryRequirements2 const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MemoryRequirements2::sType; - }; - static_assert( sizeof( MemoryRequirements2 ) == sizeof( VkMemoryRequirements2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct MemoryType - { - operator VkMemoryType const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryType &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryType const& rhs ) const - { - return ( propertyFlags == rhs.propertyFlags ) - && ( heapIndex == rhs.heapIndex ); - } - - bool operator!=( MemoryType const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::MemoryPropertyFlags propertyFlags; - uint32_t heapIndex; - }; - static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct MemoryWin32HandlePropertiesKHR - { - protected: - MemoryWin32HandlePropertiesKHR( uint32_t memoryTypeBits_ = 0 ) - : memoryTypeBits( memoryTypeBits_ ) - {} - - MemoryWin32HandlePropertiesKHR( VkMemoryWin32HandlePropertiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MemoryWin32HandlePropertiesKHR& operator=( VkMemoryWin32HandlePropertiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMemoryWin32HandlePropertiesKHR; - void* pNext = nullptr; - uint32_t memoryTypeBits; - }; - static_assert( sizeof( MemoryWin32HandlePropertiesKHR ) == sizeof( VkMemoryWin32HandlePropertiesKHR ), "layout struct and wrapper have different size!" ); - } - - struct MemoryWin32HandlePropertiesKHR : public layout::MemoryWin32HandlePropertiesKHR - { - operator VkMemoryWin32HandlePropertiesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMemoryWin32HandlePropertiesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MemoryWin32HandlePropertiesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memoryTypeBits == rhs.memoryTypeBits ); - } - - bool operator!=( MemoryWin32HandlePropertiesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MemoryWin32HandlePropertiesKHR::sType; - }; - static_assert( sizeof( MemoryWin32HandlePropertiesKHR ) == sizeof( VkMemoryWin32HandlePropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_METAL_EXT - - namespace layout - { - struct MetalSurfaceCreateInfoEXT - { - protected: - MetalSurfaceCreateInfoEXT( vk::MetalSurfaceCreateFlagsEXT flags_ = vk::MetalSurfaceCreateFlagsEXT(), - const CAMetalLayer* pLayer_ = nullptr ) - : flags( flags_ ) - , pLayer( pLayer_ ) - {} - - MetalSurfaceCreateInfoEXT( VkMetalSurfaceCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MetalSurfaceCreateInfoEXT& operator=( VkMetalSurfaceCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMetalSurfaceCreateInfoEXT; - const void* pNext = nullptr; - vk::MetalSurfaceCreateFlagsEXT flags; - const CAMetalLayer* pLayer; - }; - static_assert( sizeof( MetalSurfaceCreateInfoEXT ) == sizeof( VkMetalSurfaceCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct MetalSurfaceCreateInfoEXT : public layout::MetalSurfaceCreateInfoEXT - { - MetalSurfaceCreateInfoEXT( vk::MetalSurfaceCreateFlagsEXT flags_ = vk::MetalSurfaceCreateFlagsEXT(), - const CAMetalLayer* pLayer_ = nullptr ) - : layout::MetalSurfaceCreateInfoEXT( flags_, pLayer_ ) - {} - - MetalSurfaceCreateInfoEXT( VkMetalSurfaceCreateInfoEXT const & rhs ) - : layout::MetalSurfaceCreateInfoEXT( rhs ) - {} - - MetalSurfaceCreateInfoEXT& operator=( VkMetalSurfaceCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - MetalSurfaceCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - MetalSurfaceCreateInfoEXT & setFlags( vk::MetalSurfaceCreateFlagsEXT flags_ ) - { - flags = flags_; - return *this; - } - - MetalSurfaceCreateInfoEXT & setPLayer( const CAMetalLayer* pLayer_ ) - { - pLayer = pLayer_; - return *this; - } - - operator VkMetalSurfaceCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMetalSurfaceCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MetalSurfaceCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( pLayer == rhs.pLayer ); - } - - bool operator!=( MetalSurfaceCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MetalSurfaceCreateInfoEXT::sType; - }; - static_assert( sizeof( MetalSurfaceCreateInfoEXT ) == sizeof( VkMetalSurfaceCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_METAL_EXT*/ - - namespace layout - { - struct MultisamplePropertiesEXT - { - protected: - MultisamplePropertiesEXT( vk::Extent2D maxSampleLocationGridSize_ = vk::Extent2D() ) - : maxSampleLocationGridSize( maxSampleLocationGridSize_ ) - {} - - MultisamplePropertiesEXT( VkMultisamplePropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - MultisamplePropertiesEXT& operator=( VkMultisamplePropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eMultisamplePropertiesEXT; - void* pNext = nullptr; - vk::Extent2D maxSampleLocationGridSize; - }; - static_assert( sizeof( MultisamplePropertiesEXT ) == sizeof( VkMultisamplePropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct MultisamplePropertiesEXT : public layout::MultisamplePropertiesEXT - { - operator VkMultisamplePropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkMultisamplePropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( MultisamplePropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize ); - } - - bool operator!=( MultisamplePropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::MultisamplePropertiesEXT::sType; - }; - static_assert( sizeof( MultisamplePropertiesEXT ) == sizeof( VkMultisamplePropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ObjectTableCreateInfoNVX - { - protected: - ObjectTableCreateInfoNVX( uint32_t objectCount_ = 0, - const vk::ObjectEntryTypeNVX* pObjectEntryTypes_ = nullptr, - const uint32_t* pObjectEntryCounts_ = nullptr, - const vk::ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ = nullptr, - uint32_t maxUniformBuffersPerDescriptor_ = 0, - uint32_t maxStorageBuffersPerDescriptor_ = 0, - uint32_t maxStorageImagesPerDescriptor_ = 0, - uint32_t maxSampledImagesPerDescriptor_ = 0, - uint32_t maxPipelineLayouts_ = 0 ) - : objectCount( objectCount_ ) - , pObjectEntryTypes( pObjectEntryTypes_ ) - , pObjectEntryCounts( pObjectEntryCounts_ ) - , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ ) - , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ ) - , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ ) - , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ ) - , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ ) - , maxPipelineLayouts( maxPipelineLayouts_ ) - {} - - ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eObjectTableCreateInfoNVX; - const void* pNext = nullptr; - uint32_t objectCount; - const vk::ObjectEntryTypeNVX* pObjectEntryTypes; - const uint32_t* pObjectEntryCounts; - const vk::ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags; - uint32_t maxUniformBuffersPerDescriptor; - uint32_t maxStorageBuffersPerDescriptor; - uint32_t maxStorageImagesPerDescriptor; - uint32_t maxSampledImagesPerDescriptor; - uint32_t maxPipelineLayouts; - }; - static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "layout struct and wrapper have different size!" ); - } - - struct ObjectTableCreateInfoNVX : public layout::ObjectTableCreateInfoNVX - { - ObjectTableCreateInfoNVX( uint32_t objectCount_ = 0, - const vk::ObjectEntryTypeNVX* pObjectEntryTypes_ = nullptr, - const uint32_t* pObjectEntryCounts_ = nullptr, - const vk::ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ = nullptr, - uint32_t maxUniformBuffersPerDescriptor_ = 0, - uint32_t maxStorageBuffersPerDescriptor_ = 0, - uint32_t maxStorageImagesPerDescriptor_ = 0, - uint32_t maxSampledImagesPerDescriptor_ = 0, - uint32_t maxPipelineLayouts_ = 0 ) - : layout::ObjectTableCreateInfoNVX( objectCount_, pObjectEntryTypes_, pObjectEntryCounts_, pObjectEntryUsageFlags_, maxUniformBuffersPerDescriptor_, maxStorageBuffersPerDescriptor_, maxStorageImagesPerDescriptor_, maxSampledImagesPerDescriptor_, maxPipelineLayouts_ ) - {} - - ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs ) - : layout::ObjectTableCreateInfoNVX( rhs ) - {} - - ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ObjectTableCreateInfoNVX & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ObjectTableCreateInfoNVX & setObjectCount( uint32_t objectCount_ ) - { - objectCount = objectCount_; - return *this; - } - - ObjectTableCreateInfoNVX & setPObjectEntryTypes( const vk::ObjectEntryTypeNVX* pObjectEntryTypes_ ) - { - pObjectEntryTypes = pObjectEntryTypes_; - return *this; - } - - ObjectTableCreateInfoNVX & setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ ) - { - pObjectEntryCounts = pObjectEntryCounts_; - return *this; - } - - ObjectTableCreateInfoNVX & setPObjectEntryUsageFlags( const vk::ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ ) - { - pObjectEntryUsageFlags = pObjectEntryUsageFlags_; - return *this; - } - - ObjectTableCreateInfoNVX & setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ ) - { - maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_; - return *this; - } - - ObjectTableCreateInfoNVX & setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ ) - { - maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_; - return *this; - } - - ObjectTableCreateInfoNVX & setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ ) - { - maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_; - return *this; - } - - ObjectTableCreateInfoNVX & setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ ) - { - maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_; - return *this; - } - - ObjectTableCreateInfoNVX & setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ ) - { - maxPipelineLayouts = maxPipelineLayouts_; - return *this; - } - - operator VkObjectTableCreateInfoNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkObjectTableCreateInfoNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ObjectTableCreateInfoNVX const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( objectCount == rhs.objectCount ) - && ( pObjectEntryTypes == rhs.pObjectEntryTypes ) - && ( pObjectEntryCounts == rhs.pObjectEntryCounts ) - && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags ) - && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor ) - && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor ) - && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor ) - && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor ) - && ( maxPipelineLayouts == rhs.maxPipelineLayouts ); - } - - bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ObjectTableCreateInfoNVX::sType; - }; - static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ObjectTableEntryNVX - { - ObjectTableEntryNVX( vk::ObjectEntryTypeNVX type_ = vk::ObjectEntryTypeNVX::eDescriptorSet, - vk::ObjectEntryUsageFlagsNVX flags_ = vk::ObjectEntryUsageFlagsNVX() ) - : type( type_ ) - , flags( flags_ ) - {} - - ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ObjectTableEntryNVX & setType( vk::ObjectEntryTypeNVX type_ ) - { - type = type_; - return *this; - } - - ObjectTableEntryNVX & setFlags( vk::ObjectEntryUsageFlagsNVX flags_ ) - { - flags = flags_; - return *this; - } - - operator VkObjectTableEntryNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkObjectTableEntryNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ObjectTableEntryNVX const& rhs ) const - { - return ( type == rhs.type ) - && ( flags == rhs.flags ); - } - - bool operator!=( ObjectTableEntryNVX const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ObjectEntryTypeNVX type; - vk::ObjectEntryUsageFlagsNVX flags; - }; - static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ObjectTableDescriptorSetEntryNVX - { - ObjectTableDescriptorSetEntryNVX( vk::ObjectEntryTypeNVX type_ = vk::ObjectEntryTypeNVX::eDescriptorSet, - vk::ObjectEntryUsageFlagsNVX flags_ = vk::ObjectEntryUsageFlagsNVX(), - vk::PipelineLayout pipelineLayout_ = vk::PipelineLayout(), - vk::DescriptorSet descriptorSet_ = vk::DescriptorSet() ) - : type( type_ ) - , flags( flags_ ) - , pipelineLayout( pipelineLayout_ ) - , descriptorSet( descriptorSet_ ) - {} - - explicit ObjectTableDescriptorSetEntryNVX( ObjectTableEntryNVX const& objectTableEntryNVX, - vk::PipelineLayout pipelineLayout_ = vk::PipelineLayout(), - vk::DescriptorSet descriptorSet_ = vk::DescriptorSet() ) - : type( objectTableEntryNVX.type ) - , flags( objectTableEntryNVX.flags ) - , pipelineLayout( pipelineLayout_ ) - , descriptorSet( descriptorSet_ ) - - {} - - ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ObjectTableDescriptorSetEntryNVX & setType( vk::ObjectEntryTypeNVX type_ ) - { - type = type_; - return *this; - } - - ObjectTableDescriptorSetEntryNVX & setFlags( vk::ObjectEntryUsageFlagsNVX flags_ ) - { - flags = flags_; - return *this; - } - - ObjectTableDescriptorSetEntryNVX & setPipelineLayout( vk::PipelineLayout pipelineLayout_ ) - { - pipelineLayout = pipelineLayout_; - return *this; - } - - ObjectTableDescriptorSetEntryNVX & setDescriptorSet( vk::DescriptorSet descriptorSet_ ) - { - descriptorSet = descriptorSet_; - return *this; - } - - operator VkObjectTableDescriptorSetEntryNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkObjectTableDescriptorSetEntryNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const - { - return ( type == rhs.type ) - && ( flags == rhs.flags ) - && ( pipelineLayout == rhs.pipelineLayout ) - && ( descriptorSet == rhs.descriptorSet ); - } - - bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ObjectEntryTypeNVX type; - vk::ObjectEntryUsageFlagsNVX flags; - vk::PipelineLayout pipelineLayout; - vk::DescriptorSet descriptorSet; - }; - static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ObjectTableIndexBufferEntryNVX - { - ObjectTableIndexBufferEntryNVX( vk::ObjectEntryTypeNVX type_ = vk::ObjectEntryTypeNVX::eDescriptorSet, - vk::ObjectEntryUsageFlagsNVX flags_ = vk::ObjectEntryUsageFlagsNVX(), - vk::Buffer buffer_ = vk::Buffer(), - vk::IndexType indexType_ = vk::IndexType::eUint16 ) - : type( type_ ) - , flags( flags_ ) - , buffer( buffer_ ) - , indexType( indexType_ ) - {} - - explicit ObjectTableIndexBufferEntryNVX( ObjectTableEntryNVX const& objectTableEntryNVX, - vk::Buffer buffer_ = vk::Buffer(), - vk::IndexType indexType_ = vk::IndexType::eUint16 ) - : type( objectTableEntryNVX.type ) - , flags( objectTableEntryNVX.flags ) - , buffer( buffer_ ) - , indexType( indexType_ ) - - {} - - ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ObjectTableIndexBufferEntryNVX & setType( vk::ObjectEntryTypeNVX type_ ) - { - type = type_; - return *this; - } - - ObjectTableIndexBufferEntryNVX & setFlags( vk::ObjectEntryUsageFlagsNVX flags_ ) - { - flags = flags_; - return *this; - } - - ObjectTableIndexBufferEntryNVX & setBuffer( vk::Buffer buffer_ ) - { - buffer = buffer_; - return *this; - } - - ObjectTableIndexBufferEntryNVX & setIndexType( vk::IndexType indexType_ ) - { - indexType = indexType_; - return *this; - } - - operator VkObjectTableIndexBufferEntryNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkObjectTableIndexBufferEntryNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const - { - return ( type == rhs.type ) - && ( flags == rhs.flags ) - && ( buffer == rhs.buffer ) - && ( indexType == rhs.indexType ); - } - - bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ObjectEntryTypeNVX type; - vk::ObjectEntryUsageFlagsNVX flags; - vk::Buffer buffer; - vk::IndexType indexType; - }; - static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ObjectTablePipelineEntryNVX - { - ObjectTablePipelineEntryNVX( vk::ObjectEntryTypeNVX type_ = vk::ObjectEntryTypeNVX::eDescriptorSet, - vk::ObjectEntryUsageFlagsNVX flags_ = vk::ObjectEntryUsageFlagsNVX(), - vk::Pipeline pipeline_ = vk::Pipeline() ) - : type( type_ ) - , flags( flags_ ) - , pipeline( pipeline_ ) - {} - - explicit ObjectTablePipelineEntryNVX( ObjectTableEntryNVX const& objectTableEntryNVX, - vk::Pipeline pipeline_ = vk::Pipeline() ) - : type( objectTableEntryNVX.type ) - , flags( objectTableEntryNVX.flags ) - , pipeline( pipeline_ ) - - {} - - ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ObjectTablePipelineEntryNVX & setType( vk::ObjectEntryTypeNVX type_ ) - { - type = type_; - return *this; - } - - ObjectTablePipelineEntryNVX & setFlags( vk::ObjectEntryUsageFlagsNVX flags_ ) - { - flags = flags_; - return *this; - } - - ObjectTablePipelineEntryNVX & setPipeline( vk::Pipeline pipeline_ ) - { - pipeline = pipeline_; - return *this; - } - - operator VkObjectTablePipelineEntryNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkObjectTablePipelineEntryNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const - { - return ( type == rhs.type ) - && ( flags == rhs.flags ) - && ( pipeline == rhs.pipeline ); - } - - bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ObjectEntryTypeNVX type; - vk::ObjectEntryUsageFlagsNVX flags; - vk::Pipeline pipeline; - }; - static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ObjectTablePushConstantEntryNVX - { - ObjectTablePushConstantEntryNVX( vk::ObjectEntryTypeNVX type_ = vk::ObjectEntryTypeNVX::eDescriptorSet, - vk::ObjectEntryUsageFlagsNVX flags_ = vk::ObjectEntryUsageFlagsNVX(), - vk::PipelineLayout pipelineLayout_ = vk::PipelineLayout(), - vk::ShaderStageFlags stageFlags_ = vk::ShaderStageFlags() ) - : type( type_ ) - , flags( flags_ ) - , pipelineLayout( pipelineLayout_ ) - , stageFlags( stageFlags_ ) - {} - - explicit ObjectTablePushConstantEntryNVX( ObjectTableEntryNVX const& objectTableEntryNVX, - vk::PipelineLayout pipelineLayout_ = vk::PipelineLayout(), - vk::ShaderStageFlags stageFlags_ = vk::ShaderStageFlags() ) - : type( objectTableEntryNVX.type ) - , flags( objectTableEntryNVX.flags ) - , pipelineLayout( pipelineLayout_ ) - , stageFlags( stageFlags_ ) - - {} - - ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ObjectTablePushConstantEntryNVX & setType( vk::ObjectEntryTypeNVX type_ ) - { - type = type_; - return *this; - } - - ObjectTablePushConstantEntryNVX & setFlags( vk::ObjectEntryUsageFlagsNVX flags_ ) - { - flags = flags_; - return *this; - } - - ObjectTablePushConstantEntryNVX & setPipelineLayout( vk::PipelineLayout pipelineLayout_ ) - { - pipelineLayout = pipelineLayout_; - return *this; - } - - ObjectTablePushConstantEntryNVX & setStageFlags( vk::ShaderStageFlags stageFlags_ ) - { - stageFlags = stageFlags_; - return *this; - } - - operator VkObjectTablePushConstantEntryNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkObjectTablePushConstantEntryNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const - { - return ( type == rhs.type ) - && ( flags == rhs.flags ) - && ( pipelineLayout == rhs.pipelineLayout ) - && ( stageFlags == rhs.stageFlags ); - } - - bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ObjectEntryTypeNVX type; - vk::ObjectEntryUsageFlagsNVX flags; - vk::PipelineLayout pipelineLayout; - vk::ShaderStageFlags stageFlags; - }; - static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ObjectTableVertexBufferEntryNVX - { - ObjectTableVertexBufferEntryNVX( vk::ObjectEntryTypeNVX type_ = vk::ObjectEntryTypeNVX::eDescriptorSet, - vk::ObjectEntryUsageFlagsNVX flags_ = vk::ObjectEntryUsageFlagsNVX(), - vk::Buffer buffer_ = vk::Buffer() ) - : type( type_ ) - , flags( flags_ ) - , buffer( buffer_ ) - {} - - explicit ObjectTableVertexBufferEntryNVX( ObjectTableEntryNVX const& objectTableEntryNVX, - vk::Buffer buffer_ = vk::Buffer() ) - : type( objectTableEntryNVX.type ) - , flags( objectTableEntryNVX.flags ) - , buffer( buffer_ ) - - {} - - ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ObjectTableVertexBufferEntryNVX & setType( vk::ObjectEntryTypeNVX type_ ) - { - type = type_; - return *this; - } - - ObjectTableVertexBufferEntryNVX & setFlags( vk::ObjectEntryUsageFlagsNVX flags_ ) - { - flags = flags_; - return *this; - } - - ObjectTableVertexBufferEntryNVX & setBuffer( vk::Buffer buffer_ ) - { - buffer = buffer_; - return *this; - } - - operator VkObjectTableVertexBufferEntryNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkObjectTableVertexBufferEntryNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const - { - return ( type == rhs.type ) - && ( flags == rhs.flags ) - && ( buffer == rhs.buffer ); - } - - bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ObjectEntryTypeNVX type; - vk::ObjectEntryUsageFlagsNVX flags; - vk::Buffer buffer; - }; - static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PastPresentationTimingGOOGLE - { - operator VkPastPresentationTimingGOOGLE const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPastPresentationTimingGOOGLE &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PastPresentationTimingGOOGLE const& rhs ) const - { - return ( presentID == rhs.presentID ) - && ( desiredPresentTime == rhs.desiredPresentTime ) - && ( actualPresentTime == rhs.actualPresentTime ) - && ( earliestPresentTime == rhs.earliestPresentTime ) - && ( presentMargin == rhs.presentMargin ); - } - - bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t presentID; - uint64_t desiredPresentTime; - uint64_t actualPresentTime; - uint64_t earliestPresentTime; - uint64_t presentMargin; - }; - static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PerformanceConfigurationAcquireInfoINTEL - { - protected: - PerformanceConfigurationAcquireInfoINTEL( vk::PerformanceConfigurationTypeINTEL type_ = vk::PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated ) - : type( type_ ) - {} - - PerformanceConfigurationAcquireInfoINTEL( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PerformanceConfigurationAcquireInfoINTEL& operator=( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePerformanceConfigurationAcquireInfoINTEL; - const void* pNext = nullptr; - vk::PerformanceConfigurationTypeINTEL type; - }; - static_assert( sizeof( PerformanceConfigurationAcquireInfoINTEL ) == sizeof( VkPerformanceConfigurationAcquireInfoINTEL ), "layout struct and wrapper have different size!" ); - } - - struct PerformanceConfigurationAcquireInfoINTEL : public layout::PerformanceConfigurationAcquireInfoINTEL - { - PerformanceConfigurationAcquireInfoINTEL( vk::PerformanceConfigurationTypeINTEL type_ = vk::PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated ) - : layout::PerformanceConfigurationAcquireInfoINTEL( type_ ) - {} - - PerformanceConfigurationAcquireInfoINTEL( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) - : layout::PerformanceConfigurationAcquireInfoINTEL( rhs ) - {} - - PerformanceConfigurationAcquireInfoINTEL& operator=( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PerformanceConfigurationAcquireInfoINTEL & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PerformanceConfigurationAcquireInfoINTEL & setType( vk::PerformanceConfigurationTypeINTEL type_ ) - { - type = type_; - return *this; - } - - operator VkPerformanceConfigurationAcquireInfoINTEL const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPerformanceConfigurationAcquireInfoINTEL &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PerformanceConfigurationAcquireInfoINTEL const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( type == rhs.type ); - } - - bool operator!=( PerformanceConfigurationAcquireInfoINTEL const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PerformanceConfigurationAcquireInfoINTEL::sType; - }; - static_assert( sizeof( PerformanceConfigurationAcquireInfoINTEL ) == sizeof( VkPerformanceConfigurationAcquireInfoINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PerformanceMarkerInfoINTEL - { - protected: - PerformanceMarkerInfoINTEL( uint64_t marker_ = 0 ) - : marker( marker_ ) - {} - - PerformanceMarkerInfoINTEL( VkPerformanceMarkerInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PerformanceMarkerInfoINTEL& operator=( VkPerformanceMarkerInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePerformanceMarkerInfoINTEL; - const void* pNext = nullptr; - uint64_t marker; - }; - static_assert( sizeof( PerformanceMarkerInfoINTEL ) == sizeof( VkPerformanceMarkerInfoINTEL ), "layout struct and wrapper have different size!" ); - } - - struct PerformanceMarkerInfoINTEL : public layout::PerformanceMarkerInfoINTEL - { - PerformanceMarkerInfoINTEL( uint64_t marker_ = 0 ) - : layout::PerformanceMarkerInfoINTEL( marker_ ) - {} - - PerformanceMarkerInfoINTEL( VkPerformanceMarkerInfoINTEL const & rhs ) - : layout::PerformanceMarkerInfoINTEL( rhs ) - {} - - PerformanceMarkerInfoINTEL& operator=( VkPerformanceMarkerInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PerformanceMarkerInfoINTEL & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PerformanceMarkerInfoINTEL & setMarker( uint64_t marker_ ) - { - marker = marker_; - return *this; - } - - operator VkPerformanceMarkerInfoINTEL const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPerformanceMarkerInfoINTEL &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PerformanceMarkerInfoINTEL const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( marker == rhs.marker ); - } - - bool operator!=( PerformanceMarkerInfoINTEL const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PerformanceMarkerInfoINTEL::sType; - }; - static_assert( sizeof( PerformanceMarkerInfoINTEL ) == sizeof( VkPerformanceMarkerInfoINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PerformanceOverrideInfoINTEL - { - protected: - PerformanceOverrideInfoINTEL( vk::PerformanceOverrideTypeINTEL type_ = vk::PerformanceOverrideTypeINTEL::eNullHardware, - vk::Bool32 enable_ = 0, - uint64_t parameter_ = 0 ) - : type( type_ ) - , enable( enable_ ) - , parameter( parameter_ ) - {} - - PerformanceOverrideInfoINTEL( VkPerformanceOverrideInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PerformanceOverrideInfoINTEL& operator=( VkPerformanceOverrideInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePerformanceOverrideInfoINTEL; - const void* pNext = nullptr; - vk::PerformanceOverrideTypeINTEL type; - vk::Bool32 enable; - uint64_t parameter; - }; - static_assert( sizeof( PerformanceOverrideInfoINTEL ) == sizeof( VkPerformanceOverrideInfoINTEL ), "layout struct and wrapper have different size!" ); - } - - struct PerformanceOverrideInfoINTEL : public layout::PerformanceOverrideInfoINTEL - { - PerformanceOverrideInfoINTEL( vk::PerformanceOverrideTypeINTEL type_ = vk::PerformanceOverrideTypeINTEL::eNullHardware, - vk::Bool32 enable_ = 0, - uint64_t parameter_ = 0 ) - : layout::PerformanceOverrideInfoINTEL( type_, enable_, parameter_ ) - {} - - PerformanceOverrideInfoINTEL( VkPerformanceOverrideInfoINTEL const & rhs ) - : layout::PerformanceOverrideInfoINTEL( rhs ) - {} - - PerformanceOverrideInfoINTEL& operator=( VkPerformanceOverrideInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PerformanceOverrideInfoINTEL & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PerformanceOverrideInfoINTEL & setType( vk::PerformanceOverrideTypeINTEL type_ ) - { - type = type_; - return *this; - } - - PerformanceOverrideInfoINTEL & setEnable( vk::Bool32 enable_ ) - { - enable = enable_; - return *this; - } - - PerformanceOverrideInfoINTEL & setParameter( uint64_t parameter_ ) - { - parameter = parameter_; - return *this; - } - - operator VkPerformanceOverrideInfoINTEL const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPerformanceOverrideInfoINTEL &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PerformanceOverrideInfoINTEL const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( type == rhs.type ) - && ( enable == rhs.enable ) - && ( parameter == rhs.parameter ); - } - - bool operator!=( PerformanceOverrideInfoINTEL const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PerformanceOverrideInfoINTEL::sType; - }; - static_assert( sizeof( PerformanceOverrideInfoINTEL ) == sizeof( VkPerformanceOverrideInfoINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PerformanceStreamMarkerInfoINTEL - { - protected: - PerformanceStreamMarkerInfoINTEL( uint32_t marker_ = 0 ) - : marker( marker_ ) - {} - - PerformanceStreamMarkerInfoINTEL( VkPerformanceStreamMarkerInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PerformanceStreamMarkerInfoINTEL& operator=( VkPerformanceStreamMarkerInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePerformanceStreamMarkerInfoINTEL; - const void* pNext = nullptr; - uint32_t marker; - }; - static_assert( sizeof( PerformanceStreamMarkerInfoINTEL ) == sizeof( VkPerformanceStreamMarkerInfoINTEL ), "layout struct and wrapper have different size!" ); - } - - struct PerformanceStreamMarkerInfoINTEL : public layout::PerformanceStreamMarkerInfoINTEL - { - PerformanceStreamMarkerInfoINTEL( uint32_t marker_ = 0 ) - : layout::PerformanceStreamMarkerInfoINTEL( marker_ ) - {} - - PerformanceStreamMarkerInfoINTEL( VkPerformanceStreamMarkerInfoINTEL const & rhs ) - : layout::PerformanceStreamMarkerInfoINTEL( rhs ) - {} - - PerformanceStreamMarkerInfoINTEL& operator=( VkPerformanceStreamMarkerInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PerformanceStreamMarkerInfoINTEL & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PerformanceStreamMarkerInfoINTEL & setMarker( uint32_t marker_ ) - { - marker = marker_; - return *this; - } - - operator VkPerformanceStreamMarkerInfoINTEL const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPerformanceStreamMarkerInfoINTEL &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PerformanceStreamMarkerInfoINTEL const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( marker == rhs.marker ); - } - - bool operator!=( PerformanceStreamMarkerInfoINTEL const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PerformanceStreamMarkerInfoINTEL::sType; - }; - static_assert( sizeof( PerformanceStreamMarkerInfoINTEL ) == sizeof( VkPerformanceStreamMarkerInfoINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - union PerformanceValueDataINTEL - { - PerformanceValueDataINTEL( uint32_t value32_ = 0 ) - { - value32 = value32_; - } - - PerformanceValueDataINTEL( uint64_t value64_ ) - { - value64 = value64_; - } - - PerformanceValueDataINTEL( float valueFloat_ ) - { - valueFloat = valueFloat_; - } - - PerformanceValueDataINTEL( const char* valueString_ ) - { - valueString = valueString_; - } - - PerformanceValueDataINTEL & setValue32( uint32_t value32_ ) - { - value32 = value32_; - return *this; - } - - PerformanceValueDataINTEL & setValue64( uint64_t value64_ ) - { - value64 = value64_; - return *this; - } - - PerformanceValueDataINTEL & setValueFloat( float valueFloat_ ) - { - valueFloat = valueFloat_; - return *this; - } - - PerformanceValueDataINTEL & setValueBool( vk::Bool32 valueBool_ ) - { - valueBool = valueBool_; - return *this; - } - - PerformanceValueDataINTEL & setValueString( const char* valueString_ ) - { - valueString = valueString_; - return *this; - } - operator VkPerformanceValueDataINTEL const&() const - { - return *reinterpret_cast(this); - } - - operator VkPerformanceValueDataINTEL &() - { - return *reinterpret_cast(this); - } - -#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS - uint32_t value32; - uint64_t value64; - float valueFloat; - vk::Bool32 valueBool; - const char* valueString; -#else - uint32_t value32; - uint64_t value64; - float valueFloat; - VkBool32 valueBool; - const char* valueString; -#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ - }; - - struct PerformanceValueINTEL - { - PerformanceValueINTEL( vk::PerformanceValueTypeINTEL type_ = vk::PerformanceValueTypeINTEL::eUint32, - vk::PerformanceValueDataINTEL data_ = vk::PerformanceValueDataINTEL() ) - : type( type_ ) - , data( data_ ) - {} - - PerformanceValueINTEL( VkPerformanceValueINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PerformanceValueINTEL& operator=( VkPerformanceValueINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PerformanceValueINTEL & setType( vk::PerformanceValueTypeINTEL type_ ) - { - type = type_; - return *this; - } - - PerformanceValueINTEL & setData( vk::PerformanceValueDataINTEL data_ ) - { - data = data_; - return *this; - } - - operator VkPerformanceValueINTEL const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPerformanceValueINTEL &() - { - return *reinterpret_cast( this ); - } - - public: - vk::PerformanceValueTypeINTEL type; - vk::PerformanceValueDataINTEL data; - }; - static_assert( sizeof( PerformanceValueINTEL ) == sizeof( VkPerformanceValueINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDevice16BitStorageFeatures - { - protected: - PhysicalDevice16BitStorageFeatures( vk::Bool32 storageBuffer16BitAccess_ = 0, - vk::Bool32 uniformAndStorageBuffer16BitAccess_ = 0, - vk::Bool32 storagePushConstant16_ = 0, - vk::Bool32 storageInputOutput16_ = 0 ) - : storageBuffer16BitAccess( storageBuffer16BitAccess_ ) - , uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ ) - , storagePushConstant16( storagePushConstant16_ ) - , storageInputOutput16( storageInputOutput16_ ) - {} - - PhysicalDevice16BitStorageFeatures( VkPhysicalDevice16BitStorageFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDevice16BitStorageFeatures& operator=( VkPhysicalDevice16BitStorageFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDevice16BitStorageFeatures; - void* pNext = nullptr; - vk::Bool32 storageBuffer16BitAccess; - vk::Bool32 uniformAndStorageBuffer16BitAccess; - vk::Bool32 storagePushConstant16; - vk::Bool32 storageInputOutput16; - }; - static_assert( sizeof( PhysicalDevice16BitStorageFeatures ) == sizeof( VkPhysicalDevice16BitStorageFeatures ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDevice16BitStorageFeatures : public layout::PhysicalDevice16BitStorageFeatures - { - PhysicalDevice16BitStorageFeatures( vk::Bool32 storageBuffer16BitAccess_ = 0, - vk::Bool32 uniformAndStorageBuffer16BitAccess_ = 0, - vk::Bool32 storagePushConstant16_ = 0, - vk::Bool32 storageInputOutput16_ = 0 ) - : layout::PhysicalDevice16BitStorageFeatures( storageBuffer16BitAccess_, uniformAndStorageBuffer16BitAccess_, storagePushConstant16_, storageInputOutput16_ ) - {} - - PhysicalDevice16BitStorageFeatures( VkPhysicalDevice16BitStorageFeatures const & rhs ) - : layout::PhysicalDevice16BitStorageFeatures( rhs ) - {} - - PhysicalDevice16BitStorageFeatures& operator=( VkPhysicalDevice16BitStorageFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDevice16BitStorageFeatures & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDevice16BitStorageFeatures & setStorageBuffer16BitAccess( vk::Bool32 storageBuffer16BitAccess_ ) - { - storageBuffer16BitAccess = storageBuffer16BitAccess_; - return *this; - } - - PhysicalDevice16BitStorageFeatures & setUniformAndStorageBuffer16BitAccess( vk::Bool32 uniformAndStorageBuffer16BitAccess_ ) - { - uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_; - return *this; - } - - PhysicalDevice16BitStorageFeatures & setStoragePushConstant16( vk::Bool32 storagePushConstant16_ ) - { - storagePushConstant16 = storagePushConstant16_; - return *this; - } - - PhysicalDevice16BitStorageFeatures & setStorageInputOutput16( vk::Bool32 storageInputOutput16_ ) - { - storageInputOutput16 = storageInputOutput16_; - return *this; - } - - operator VkPhysicalDevice16BitStorageFeatures const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDevice16BitStorageFeatures &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDevice16BitStorageFeatures const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess ) - && ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess ) - && ( storagePushConstant16 == rhs.storagePushConstant16 ) - && ( storageInputOutput16 == rhs.storageInputOutput16 ); - } - - bool operator!=( PhysicalDevice16BitStorageFeatures const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDevice16BitStorageFeatures::sType; - }; - static_assert( sizeof( PhysicalDevice16BitStorageFeatures ) == sizeof( VkPhysicalDevice16BitStorageFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDevice8BitStorageFeaturesKHR - { - protected: - PhysicalDevice8BitStorageFeaturesKHR( vk::Bool32 storageBuffer8BitAccess_ = 0, - vk::Bool32 uniformAndStorageBuffer8BitAccess_ = 0, - vk::Bool32 storagePushConstant8_ = 0 ) - : storageBuffer8BitAccess( storageBuffer8BitAccess_ ) - , uniformAndStorageBuffer8BitAccess( uniformAndStorageBuffer8BitAccess_ ) - , storagePushConstant8( storagePushConstant8_ ) - {} - - PhysicalDevice8BitStorageFeaturesKHR( VkPhysicalDevice8BitStorageFeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDevice8BitStorageFeaturesKHR& operator=( VkPhysicalDevice8BitStorageFeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDevice8BitStorageFeaturesKHR; - void* pNext = nullptr; - vk::Bool32 storageBuffer8BitAccess; - vk::Bool32 uniformAndStorageBuffer8BitAccess; - vk::Bool32 storagePushConstant8; - }; - static_assert( sizeof( PhysicalDevice8BitStorageFeaturesKHR ) == sizeof( VkPhysicalDevice8BitStorageFeaturesKHR ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDevice8BitStorageFeaturesKHR : public layout::PhysicalDevice8BitStorageFeaturesKHR - { - PhysicalDevice8BitStorageFeaturesKHR( vk::Bool32 storageBuffer8BitAccess_ = 0, - vk::Bool32 uniformAndStorageBuffer8BitAccess_ = 0, - vk::Bool32 storagePushConstant8_ = 0 ) - : layout::PhysicalDevice8BitStorageFeaturesKHR( storageBuffer8BitAccess_, uniformAndStorageBuffer8BitAccess_, storagePushConstant8_ ) - {} - - PhysicalDevice8BitStorageFeaturesKHR( VkPhysicalDevice8BitStorageFeaturesKHR const & rhs ) - : layout::PhysicalDevice8BitStorageFeaturesKHR( rhs ) - {} - - PhysicalDevice8BitStorageFeaturesKHR& operator=( VkPhysicalDevice8BitStorageFeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDevice8BitStorageFeaturesKHR & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDevice8BitStorageFeaturesKHR & setStorageBuffer8BitAccess( vk::Bool32 storageBuffer8BitAccess_ ) - { - storageBuffer8BitAccess = storageBuffer8BitAccess_; - return *this; - } - - PhysicalDevice8BitStorageFeaturesKHR & setUniformAndStorageBuffer8BitAccess( vk::Bool32 uniformAndStorageBuffer8BitAccess_ ) - { - uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_; - return *this; - } - - PhysicalDevice8BitStorageFeaturesKHR & setStoragePushConstant8( vk::Bool32 storagePushConstant8_ ) - { - storagePushConstant8 = storagePushConstant8_; - return *this; - } - - operator VkPhysicalDevice8BitStorageFeaturesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDevice8BitStorageFeaturesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDevice8BitStorageFeaturesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( storageBuffer8BitAccess == rhs.storageBuffer8BitAccess ) - && ( uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess ) - && ( storagePushConstant8 == rhs.storagePushConstant8 ); - } - - bool operator!=( PhysicalDevice8BitStorageFeaturesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDevice8BitStorageFeaturesKHR::sType; - }; - static_assert( sizeof( PhysicalDevice8BitStorageFeaturesKHR ) == sizeof( VkPhysicalDevice8BitStorageFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceASTCDecodeFeaturesEXT - { - protected: - PhysicalDeviceASTCDecodeFeaturesEXT( vk::Bool32 decodeModeSharedExponent_ = 0 ) - : decodeModeSharedExponent( decodeModeSharedExponent_ ) - {} - - PhysicalDeviceASTCDecodeFeaturesEXT( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceASTCDecodeFeaturesEXT& operator=( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 decodeModeSharedExponent; - }; - static_assert( sizeof( PhysicalDeviceASTCDecodeFeaturesEXT ) == sizeof( VkPhysicalDeviceASTCDecodeFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceASTCDecodeFeaturesEXT : public layout::PhysicalDeviceASTCDecodeFeaturesEXT - { - PhysicalDeviceASTCDecodeFeaturesEXT( vk::Bool32 decodeModeSharedExponent_ = 0 ) - : layout::PhysicalDeviceASTCDecodeFeaturesEXT( decodeModeSharedExponent_ ) - {} - - PhysicalDeviceASTCDecodeFeaturesEXT( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) - : layout::PhysicalDeviceASTCDecodeFeaturesEXT( rhs ) - {} - - PhysicalDeviceASTCDecodeFeaturesEXT& operator=( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceASTCDecodeFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceASTCDecodeFeaturesEXT & setDecodeModeSharedExponent( vk::Bool32 decodeModeSharedExponent_ ) - { - decodeModeSharedExponent = decodeModeSharedExponent_; - return *this; - } - - operator VkPhysicalDeviceASTCDecodeFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceASTCDecodeFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceASTCDecodeFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( decodeModeSharedExponent == rhs.decodeModeSharedExponent ); - } - - bool operator!=( PhysicalDeviceASTCDecodeFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceASTCDecodeFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceASTCDecodeFeaturesEXT ) == sizeof( VkPhysicalDeviceASTCDecodeFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT - { - protected: - PhysicalDeviceBlendOperationAdvancedFeaturesEXT( vk::Bool32 advancedBlendCoherentOperations_ = 0 ) - : advancedBlendCoherentOperations( advancedBlendCoherentOperations_ ) - {} - - PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceBlendOperationAdvancedFeaturesEXT& operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 advancedBlendCoherentOperations; - }; - static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT : public layout::PhysicalDeviceBlendOperationAdvancedFeaturesEXT - { - PhysicalDeviceBlendOperationAdvancedFeaturesEXT( vk::Bool32 advancedBlendCoherentOperations_ = 0 ) - : layout::PhysicalDeviceBlendOperationAdvancedFeaturesEXT( advancedBlendCoherentOperations_ ) - {} - - PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) - : layout::PhysicalDeviceBlendOperationAdvancedFeaturesEXT( rhs ) - {} - - PhysicalDeviceBlendOperationAdvancedFeaturesEXT& operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceBlendOperationAdvancedFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceBlendOperationAdvancedFeaturesEXT & setAdvancedBlendCoherentOperations( vk::Bool32 advancedBlendCoherentOperations_ ) - { - advancedBlendCoherentOperations = advancedBlendCoherentOperations_; - return *this; - } - - operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations ); - } - - bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceBlendOperationAdvancedFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT - { - protected: - PhysicalDeviceBlendOperationAdvancedPropertiesEXT( uint32_t advancedBlendMaxColorAttachments_ = 0, - vk::Bool32 advancedBlendIndependentBlend_ = 0, - vk::Bool32 advancedBlendNonPremultipliedSrcColor_ = 0, - vk::Bool32 advancedBlendNonPremultipliedDstColor_ = 0, - vk::Bool32 advancedBlendCorrelatedOverlap_ = 0, - vk::Bool32 advancedBlendAllOperations_ = 0 ) - : advancedBlendMaxColorAttachments( advancedBlendMaxColorAttachments_ ) - , advancedBlendIndependentBlend( advancedBlendIndependentBlend_ ) - , advancedBlendNonPremultipliedSrcColor( advancedBlendNonPremultipliedSrcColor_ ) - , advancedBlendNonPremultipliedDstColor( advancedBlendNonPremultipliedDstColor_ ) - , advancedBlendCorrelatedOverlap( advancedBlendCorrelatedOverlap_ ) - , advancedBlendAllOperations( advancedBlendAllOperations_ ) - {} - - PhysicalDeviceBlendOperationAdvancedPropertiesEXT( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceBlendOperationAdvancedPropertiesEXT& operator=( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT; - void* pNext = nullptr; - uint32_t advancedBlendMaxColorAttachments; - vk::Bool32 advancedBlendIndependentBlend; - vk::Bool32 advancedBlendNonPremultipliedSrcColor; - vk::Bool32 advancedBlendNonPremultipliedDstColor; - vk::Bool32 advancedBlendCorrelatedOverlap; - vk::Bool32 advancedBlendAllOperations; - }; - static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT : public layout::PhysicalDeviceBlendOperationAdvancedPropertiesEXT - { - operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments ) - && ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend ) - && ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor ) - && ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor ) - && ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap ) - && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations ); - } - - bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceBlendOperationAdvancedPropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceBufferDeviceAddressFeaturesEXT - { - protected: - PhysicalDeviceBufferDeviceAddressFeaturesEXT( vk::Bool32 bufferDeviceAddress_ = 0, - vk::Bool32 bufferDeviceAddressCaptureReplay_ = 0, - vk::Bool32 bufferDeviceAddressMultiDevice_ = 0 ) - : bufferDeviceAddress( bufferDeviceAddress_ ) - , bufferDeviceAddressCaptureReplay( bufferDeviceAddressCaptureReplay_ ) - , bufferDeviceAddressMultiDevice( bufferDeviceAddressMultiDevice_ ) - {} - - PhysicalDeviceBufferDeviceAddressFeaturesEXT( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceBufferDeviceAddressFeaturesEXT& operator=( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 bufferDeviceAddress; - vk::Bool32 bufferDeviceAddressCaptureReplay; - vk::Bool32 bufferDeviceAddressMultiDevice; - }; - static_assert( sizeof( PhysicalDeviceBufferDeviceAddressFeaturesEXT ) == sizeof( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceBufferDeviceAddressFeaturesEXT : public layout::PhysicalDeviceBufferDeviceAddressFeaturesEXT - { - PhysicalDeviceBufferDeviceAddressFeaturesEXT( vk::Bool32 bufferDeviceAddress_ = 0, - vk::Bool32 bufferDeviceAddressCaptureReplay_ = 0, - vk::Bool32 bufferDeviceAddressMultiDevice_ = 0 ) - : layout::PhysicalDeviceBufferDeviceAddressFeaturesEXT( bufferDeviceAddress_, bufferDeviceAddressCaptureReplay_, bufferDeviceAddressMultiDevice_ ) - {} - - PhysicalDeviceBufferDeviceAddressFeaturesEXT( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) - : layout::PhysicalDeviceBufferDeviceAddressFeaturesEXT( rhs ) - {} - - PhysicalDeviceBufferDeviceAddressFeaturesEXT& operator=( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceBufferDeviceAddressFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceBufferDeviceAddressFeaturesEXT & setBufferDeviceAddress( vk::Bool32 bufferDeviceAddress_ ) - { - bufferDeviceAddress = bufferDeviceAddress_; - return *this; - } - - PhysicalDeviceBufferDeviceAddressFeaturesEXT & setBufferDeviceAddressCaptureReplay( vk::Bool32 bufferDeviceAddressCaptureReplay_ ) - { - bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_; - return *this; - } - - PhysicalDeviceBufferDeviceAddressFeaturesEXT & setBufferDeviceAddressMultiDevice( vk::Bool32 bufferDeviceAddressMultiDevice_ ) - { - bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_; - return *this; - } - - operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceBufferDeviceAddressFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( bufferDeviceAddress == rhs.bufferDeviceAddress ) - && ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay ) - && ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice ); - } - - bool operator!=( PhysicalDeviceBufferDeviceAddressFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceBufferDeviceAddressFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceBufferDeviceAddressFeaturesEXT ) == sizeof( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceCoherentMemoryFeaturesAMD - { - protected: - PhysicalDeviceCoherentMemoryFeaturesAMD( vk::Bool32 deviceCoherentMemory_ = 0 ) - : deviceCoherentMemory( deviceCoherentMemory_ ) - {} - - PhysicalDeviceCoherentMemoryFeaturesAMD( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceCoherentMemoryFeaturesAMD& operator=( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD; - void* pNext = nullptr; - vk::Bool32 deviceCoherentMemory; - }; - static_assert( sizeof( PhysicalDeviceCoherentMemoryFeaturesAMD ) == sizeof( VkPhysicalDeviceCoherentMemoryFeaturesAMD ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceCoherentMemoryFeaturesAMD : public layout::PhysicalDeviceCoherentMemoryFeaturesAMD - { - PhysicalDeviceCoherentMemoryFeaturesAMD( vk::Bool32 deviceCoherentMemory_ = 0 ) - : layout::PhysicalDeviceCoherentMemoryFeaturesAMD( deviceCoherentMemory_ ) - {} - - PhysicalDeviceCoherentMemoryFeaturesAMD( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) - : layout::PhysicalDeviceCoherentMemoryFeaturesAMD( rhs ) - {} - - PhysicalDeviceCoherentMemoryFeaturesAMD& operator=( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceCoherentMemoryFeaturesAMD & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceCoherentMemoryFeaturesAMD & setDeviceCoherentMemory( vk::Bool32 deviceCoherentMemory_ ) - { - deviceCoherentMemory = deviceCoherentMemory_; - return *this; - } - - operator VkPhysicalDeviceCoherentMemoryFeaturesAMD const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceCoherentMemoryFeaturesAMD &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceCoherentMemoryFeaturesAMD const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceCoherentMemory == rhs.deviceCoherentMemory ); - } - - bool operator!=( PhysicalDeviceCoherentMemoryFeaturesAMD const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceCoherentMemoryFeaturesAMD::sType; - }; - static_assert( sizeof( PhysicalDeviceCoherentMemoryFeaturesAMD ) == sizeof( VkPhysicalDeviceCoherentMemoryFeaturesAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceComputeShaderDerivativesFeaturesNV - { - protected: - PhysicalDeviceComputeShaderDerivativesFeaturesNV( vk::Bool32 computeDerivativeGroupQuads_ = 0, - vk::Bool32 computeDerivativeGroupLinear_ = 0 ) - : computeDerivativeGroupQuads( computeDerivativeGroupQuads_ ) - , computeDerivativeGroupLinear( computeDerivativeGroupLinear_ ) - {} - - PhysicalDeviceComputeShaderDerivativesFeaturesNV( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceComputeShaderDerivativesFeaturesNV& operator=( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV; - void* pNext = nullptr; - vk::Bool32 computeDerivativeGroupQuads; - vk::Bool32 computeDerivativeGroupLinear; - }; - static_assert( sizeof( PhysicalDeviceComputeShaderDerivativesFeaturesNV ) == sizeof( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceComputeShaderDerivativesFeaturesNV : public layout::PhysicalDeviceComputeShaderDerivativesFeaturesNV - { - PhysicalDeviceComputeShaderDerivativesFeaturesNV( vk::Bool32 computeDerivativeGroupQuads_ = 0, - vk::Bool32 computeDerivativeGroupLinear_ = 0 ) - : layout::PhysicalDeviceComputeShaderDerivativesFeaturesNV( computeDerivativeGroupQuads_, computeDerivativeGroupLinear_ ) - {} - - PhysicalDeviceComputeShaderDerivativesFeaturesNV( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) - : layout::PhysicalDeviceComputeShaderDerivativesFeaturesNV( rhs ) - {} - - PhysicalDeviceComputeShaderDerivativesFeaturesNV& operator=( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceComputeShaderDerivativesFeaturesNV & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceComputeShaderDerivativesFeaturesNV & setComputeDerivativeGroupQuads( vk::Bool32 computeDerivativeGroupQuads_ ) - { - computeDerivativeGroupQuads = computeDerivativeGroupQuads_; - return *this; - } - - PhysicalDeviceComputeShaderDerivativesFeaturesNV & setComputeDerivativeGroupLinear( vk::Bool32 computeDerivativeGroupLinear_ ) - { - computeDerivativeGroupLinear = computeDerivativeGroupLinear_; - return *this; - } - - operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceComputeShaderDerivativesFeaturesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( computeDerivativeGroupQuads == rhs.computeDerivativeGroupQuads ) - && ( computeDerivativeGroupLinear == rhs.computeDerivativeGroupLinear ); - } - - bool operator!=( PhysicalDeviceComputeShaderDerivativesFeaturesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceComputeShaderDerivativesFeaturesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceComputeShaderDerivativesFeaturesNV ) == sizeof( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceConditionalRenderingFeaturesEXT - { - protected: - PhysicalDeviceConditionalRenderingFeaturesEXT( vk::Bool32 conditionalRendering_ = 0, - vk::Bool32 inheritedConditionalRendering_ = 0 ) - : conditionalRendering( conditionalRendering_ ) - , inheritedConditionalRendering( inheritedConditionalRendering_ ) - {} - - PhysicalDeviceConditionalRenderingFeaturesEXT( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceConditionalRenderingFeaturesEXT& operator=( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 conditionalRendering; - vk::Bool32 inheritedConditionalRendering; - }; - static_assert( sizeof( PhysicalDeviceConditionalRenderingFeaturesEXT ) == sizeof( VkPhysicalDeviceConditionalRenderingFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceConditionalRenderingFeaturesEXT : public layout::PhysicalDeviceConditionalRenderingFeaturesEXT - { - PhysicalDeviceConditionalRenderingFeaturesEXT( vk::Bool32 conditionalRendering_ = 0, - vk::Bool32 inheritedConditionalRendering_ = 0 ) - : layout::PhysicalDeviceConditionalRenderingFeaturesEXT( conditionalRendering_, inheritedConditionalRendering_ ) - {} - - PhysicalDeviceConditionalRenderingFeaturesEXT( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) - : layout::PhysicalDeviceConditionalRenderingFeaturesEXT( rhs ) - {} - - PhysicalDeviceConditionalRenderingFeaturesEXT& operator=( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceConditionalRenderingFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceConditionalRenderingFeaturesEXT & setConditionalRendering( vk::Bool32 conditionalRendering_ ) - { - conditionalRendering = conditionalRendering_; - return *this; - } - - PhysicalDeviceConditionalRenderingFeaturesEXT & setInheritedConditionalRendering( vk::Bool32 inheritedConditionalRendering_ ) - { - inheritedConditionalRendering = inheritedConditionalRendering_; - return *this; - } - - operator VkPhysicalDeviceConditionalRenderingFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceConditionalRenderingFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceConditionalRenderingFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( conditionalRendering == rhs.conditionalRendering ) - && ( inheritedConditionalRendering == rhs.inheritedConditionalRendering ); - } - - bool operator!=( PhysicalDeviceConditionalRenderingFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceConditionalRenderingFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceConditionalRenderingFeaturesEXT ) == sizeof( VkPhysicalDeviceConditionalRenderingFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceConservativeRasterizationPropertiesEXT - { - protected: - PhysicalDeviceConservativeRasterizationPropertiesEXT( float primitiveOverestimationSize_ = 0, - float maxExtraPrimitiveOverestimationSize_ = 0, - float extraPrimitiveOverestimationSizeGranularity_ = 0, - vk::Bool32 primitiveUnderestimation_ = 0, - vk::Bool32 conservativePointAndLineRasterization_ = 0, - vk::Bool32 degenerateTrianglesRasterized_ = 0, - vk::Bool32 degenerateLinesRasterized_ = 0, - vk::Bool32 fullyCoveredFragmentShaderInputVariable_ = 0, - vk::Bool32 conservativeRasterizationPostDepthCoverage_ = 0 ) - : primitiveOverestimationSize( primitiveOverestimationSize_ ) - , maxExtraPrimitiveOverestimationSize( maxExtraPrimitiveOverestimationSize_ ) - , extraPrimitiveOverestimationSizeGranularity( extraPrimitiveOverestimationSizeGranularity_ ) - , primitiveUnderestimation( primitiveUnderestimation_ ) - , conservativePointAndLineRasterization( conservativePointAndLineRasterization_ ) - , degenerateTrianglesRasterized( degenerateTrianglesRasterized_ ) - , degenerateLinesRasterized( degenerateLinesRasterized_ ) - , fullyCoveredFragmentShaderInputVariable( fullyCoveredFragmentShaderInputVariable_ ) - , conservativeRasterizationPostDepthCoverage( conservativeRasterizationPostDepthCoverage_ ) - {} - - PhysicalDeviceConservativeRasterizationPropertiesEXT( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceConservativeRasterizationPropertiesEXT& operator=( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT; - void* pNext = nullptr; - float primitiveOverestimationSize; - float maxExtraPrimitiveOverestimationSize; - float extraPrimitiveOverestimationSizeGranularity; - vk::Bool32 primitiveUnderestimation; - vk::Bool32 conservativePointAndLineRasterization; - vk::Bool32 degenerateTrianglesRasterized; - vk::Bool32 degenerateLinesRasterized; - vk::Bool32 fullyCoveredFragmentShaderInputVariable; - vk::Bool32 conservativeRasterizationPostDepthCoverage; - }; - static_assert( sizeof( PhysicalDeviceConservativeRasterizationPropertiesEXT ) == sizeof( VkPhysicalDeviceConservativeRasterizationPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceConservativeRasterizationPropertiesEXT : public layout::PhysicalDeviceConservativeRasterizationPropertiesEXT - { - operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceConservativeRasterizationPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( primitiveOverestimationSize == rhs.primitiveOverestimationSize ) - && ( maxExtraPrimitiveOverestimationSize == rhs.maxExtraPrimitiveOverestimationSize ) - && ( extraPrimitiveOverestimationSizeGranularity == rhs.extraPrimitiveOverestimationSizeGranularity ) - && ( primitiveUnderestimation == rhs.primitiveUnderestimation ) - && ( conservativePointAndLineRasterization == rhs.conservativePointAndLineRasterization ) - && ( degenerateTrianglesRasterized == rhs.degenerateTrianglesRasterized ) - && ( degenerateLinesRasterized == rhs.degenerateLinesRasterized ) - && ( fullyCoveredFragmentShaderInputVariable == rhs.fullyCoveredFragmentShaderInputVariable ) - && ( conservativeRasterizationPostDepthCoverage == rhs.conservativeRasterizationPostDepthCoverage ); - } - - bool operator!=( PhysicalDeviceConservativeRasterizationPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceConservativeRasterizationPropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceConservativeRasterizationPropertiesEXT ) == sizeof( VkPhysicalDeviceConservativeRasterizationPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceCooperativeMatrixFeaturesNV - { - protected: - PhysicalDeviceCooperativeMatrixFeaturesNV( vk::Bool32 cooperativeMatrix_ = 0, - vk::Bool32 cooperativeMatrixRobustBufferAccess_ = 0 ) - : cooperativeMatrix( cooperativeMatrix_ ) - , cooperativeMatrixRobustBufferAccess( cooperativeMatrixRobustBufferAccess_ ) - {} - - PhysicalDeviceCooperativeMatrixFeaturesNV( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceCooperativeMatrixFeaturesNV& operator=( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV; - void* pNext = nullptr; - vk::Bool32 cooperativeMatrix; - vk::Bool32 cooperativeMatrixRobustBufferAccess; - }; - static_assert( sizeof( PhysicalDeviceCooperativeMatrixFeaturesNV ) == sizeof( VkPhysicalDeviceCooperativeMatrixFeaturesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceCooperativeMatrixFeaturesNV : public layout::PhysicalDeviceCooperativeMatrixFeaturesNV - { - PhysicalDeviceCooperativeMatrixFeaturesNV( vk::Bool32 cooperativeMatrix_ = 0, - vk::Bool32 cooperativeMatrixRobustBufferAccess_ = 0 ) - : layout::PhysicalDeviceCooperativeMatrixFeaturesNV( cooperativeMatrix_, cooperativeMatrixRobustBufferAccess_ ) - {} - - PhysicalDeviceCooperativeMatrixFeaturesNV( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) - : layout::PhysicalDeviceCooperativeMatrixFeaturesNV( rhs ) - {} - - PhysicalDeviceCooperativeMatrixFeaturesNV& operator=( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceCooperativeMatrixFeaturesNV & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceCooperativeMatrixFeaturesNV & setCooperativeMatrix( vk::Bool32 cooperativeMatrix_ ) - { - cooperativeMatrix = cooperativeMatrix_; - return *this; - } - - PhysicalDeviceCooperativeMatrixFeaturesNV & setCooperativeMatrixRobustBufferAccess( vk::Bool32 cooperativeMatrixRobustBufferAccess_ ) - { - cooperativeMatrixRobustBufferAccess = cooperativeMatrixRobustBufferAccess_; - return *this; - } - - operator VkPhysicalDeviceCooperativeMatrixFeaturesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceCooperativeMatrixFeaturesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceCooperativeMatrixFeaturesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( cooperativeMatrix == rhs.cooperativeMatrix ) - && ( cooperativeMatrixRobustBufferAccess == rhs.cooperativeMatrixRobustBufferAccess ); - } - - bool operator!=( PhysicalDeviceCooperativeMatrixFeaturesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceCooperativeMatrixFeaturesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceCooperativeMatrixFeaturesNV ) == sizeof( VkPhysicalDeviceCooperativeMatrixFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceCooperativeMatrixPropertiesNV - { - protected: - PhysicalDeviceCooperativeMatrixPropertiesNV( vk::ShaderStageFlags cooperativeMatrixSupportedStages_ = vk::ShaderStageFlags() ) - : cooperativeMatrixSupportedStages( cooperativeMatrixSupportedStages_ ) - {} - - PhysicalDeviceCooperativeMatrixPropertiesNV( VkPhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceCooperativeMatrixPropertiesNV& operator=( VkPhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV; - void* pNext = nullptr; - vk::ShaderStageFlags cooperativeMatrixSupportedStages; - }; - static_assert( sizeof( PhysicalDeviceCooperativeMatrixPropertiesNV ) == sizeof( VkPhysicalDeviceCooperativeMatrixPropertiesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceCooperativeMatrixPropertiesNV : public layout::PhysicalDeviceCooperativeMatrixPropertiesNV - { - operator VkPhysicalDeviceCooperativeMatrixPropertiesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceCooperativeMatrixPropertiesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceCooperativeMatrixPropertiesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( cooperativeMatrixSupportedStages == rhs.cooperativeMatrixSupportedStages ); - } - - bool operator!=( PhysicalDeviceCooperativeMatrixPropertiesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceCooperativeMatrixPropertiesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceCooperativeMatrixPropertiesNV ) == sizeof( VkPhysicalDeviceCooperativeMatrixPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceCornerSampledImageFeaturesNV - { - protected: - PhysicalDeviceCornerSampledImageFeaturesNV( vk::Bool32 cornerSampledImage_ = 0 ) - : cornerSampledImage( cornerSampledImage_ ) - {} - - PhysicalDeviceCornerSampledImageFeaturesNV( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceCornerSampledImageFeaturesNV& operator=( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV; - void* pNext = nullptr; - vk::Bool32 cornerSampledImage; - }; - static_assert( sizeof( PhysicalDeviceCornerSampledImageFeaturesNV ) == sizeof( VkPhysicalDeviceCornerSampledImageFeaturesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceCornerSampledImageFeaturesNV : public layout::PhysicalDeviceCornerSampledImageFeaturesNV - { - PhysicalDeviceCornerSampledImageFeaturesNV( vk::Bool32 cornerSampledImage_ = 0 ) - : layout::PhysicalDeviceCornerSampledImageFeaturesNV( cornerSampledImage_ ) - {} - - PhysicalDeviceCornerSampledImageFeaturesNV( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) - : layout::PhysicalDeviceCornerSampledImageFeaturesNV( rhs ) - {} - - PhysicalDeviceCornerSampledImageFeaturesNV& operator=( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceCornerSampledImageFeaturesNV & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceCornerSampledImageFeaturesNV & setCornerSampledImage( vk::Bool32 cornerSampledImage_ ) - { - cornerSampledImage = cornerSampledImage_; - return *this; - } - - operator VkPhysicalDeviceCornerSampledImageFeaturesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceCornerSampledImageFeaturesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceCornerSampledImageFeaturesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( cornerSampledImage == rhs.cornerSampledImage ); - } - - bool operator!=( PhysicalDeviceCornerSampledImageFeaturesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceCornerSampledImageFeaturesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceCornerSampledImageFeaturesNV ) == sizeof( VkPhysicalDeviceCornerSampledImageFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceCoverageReductionModeFeaturesNV - { - protected: - PhysicalDeviceCoverageReductionModeFeaturesNV( vk::Bool32 coverageReductionMode_ = 0 ) - : coverageReductionMode( coverageReductionMode_ ) - {} - - PhysicalDeviceCoverageReductionModeFeaturesNV( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceCoverageReductionModeFeaturesNV& operator=( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV; - void* pNext = nullptr; - vk::Bool32 coverageReductionMode; - }; - static_assert( sizeof( PhysicalDeviceCoverageReductionModeFeaturesNV ) == sizeof( VkPhysicalDeviceCoverageReductionModeFeaturesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceCoverageReductionModeFeaturesNV : public layout::PhysicalDeviceCoverageReductionModeFeaturesNV - { - PhysicalDeviceCoverageReductionModeFeaturesNV( vk::Bool32 coverageReductionMode_ = 0 ) - : layout::PhysicalDeviceCoverageReductionModeFeaturesNV( coverageReductionMode_ ) - {} - - PhysicalDeviceCoverageReductionModeFeaturesNV( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) - : layout::PhysicalDeviceCoverageReductionModeFeaturesNV( rhs ) - {} - - PhysicalDeviceCoverageReductionModeFeaturesNV& operator=( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceCoverageReductionModeFeaturesNV & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceCoverageReductionModeFeaturesNV & setCoverageReductionMode( vk::Bool32 coverageReductionMode_ ) - { - coverageReductionMode = coverageReductionMode_; - return *this; - } - - operator VkPhysicalDeviceCoverageReductionModeFeaturesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceCoverageReductionModeFeaturesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceCoverageReductionModeFeaturesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( coverageReductionMode == rhs.coverageReductionMode ); - } - - bool operator!=( PhysicalDeviceCoverageReductionModeFeaturesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceCoverageReductionModeFeaturesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceCoverageReductionModeFeaturesNV ) == sizeof( VkPhysicalDeviceCoverageReductionModeFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - { - protected: - PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( vk::Bool32 dedicatedAllocationImageAliasing_ = 0 ) - : dedicatedAllocationImageAliasing( dedicatedAllocationImageAliasing_ ) - {} - - PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& operator=( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; - void* pNext = nullptr; - vk::Bool32 dedicatedAllocationImageAliasing; - }; - static_assert( sizeof( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV ) == sizeof( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV : public layout::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - { - PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( vk::Bool32 dedicatedAllocationImageAliasing_ = 0 ) - : layout::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( dedicatedAllocationImageAliasing_ ) - {} - - PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) - : layout::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( rhs ) - {} - - PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& operator=( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & setDedicatedAllocationImageAliasing( vk::Bool32 dedicatedAllocationImageAliasing_ ) - { - dedicatedAllocationImageAliasing = dedicatedAllocationImageAliasing_; - return *this; - } - - operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( dedicatedAllocationImageAliasing == rhs.dedicatedAllocationImageAliasing ); - } - - bool operator!=( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV ) == sizeof( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceDepthClipEnableFeaturesEXT - { - protected: - PhysicalDeviceDepthClipEnableFeaturesEXT( vk::Bool32 depthClipEnable_ = 0 ) - : depthClipEnable( depthClipEnable_ ) - {} - - PhysicalDeviceDepthClipEnableFeaturesEXT( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceDepthClipEnableFeaturesEXT& operator=( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 depthClipEnable; - }; - static_assert( sizeof( PhysicalDeviceDepthClipEnableFeaturesEXT ) == sizeof( VkPhysicalDeviceDepthClipEnableFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceDepthClipEnableFeaturesEXT : public layout::PhysicalDeviceDepthClipEnableFeaturesEXT - { - PhysicalDeviceDepthClipEnableFeaturesEXT( vk::Bool32 depthClipEnable_ = 0 ) - : layout::PhysicalDeviceDepthClipEnableFeaturesEXT( depthClipEnable_ ) - {} - - PhysicalDeviceDepthClipEnableFeaturesEXT( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) - : layout::PhysicalDeviceDepthClipEnableFeaturesEXT( rhs ) - {} - - PhysicalDeviceDepthClipEnableFeaturesEXT& operator=( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceDepthClipEnableFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceDepthClipEnableFeaturesEXT & setDepthClipEnable( vk::Bool32 depthClipEnable_ ) - { - depthClipEnable = depthClipEnable_; - return *this; - } - - operator VkPhysicalDeviceDepthClipEnableFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceDepthClipEnableFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceDepthClipEnableFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( depthClipEnable == rhs.depthClipEnable ); - } - - bool operator!=( PhysicalDeviceDepthClipEnableFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceDepthClipEnableFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceDepthClipEnableFeaturesEXT ) == sizeof( VkPhysicalDeviceDepthClipEnableFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceDepthStencilResolvePropertiesKHR - { - protected: - PhysicalDeviceDepthStencilResolvePropertiesKHR( vk::ResolveModeFlagsKHR supportedDepthResolveModes_ = vk::ResolveModeFlagsKHR(), - vk::ResolveModeFlagsKHR supportedStencilResolveModes_ = vk::ResolveModeFlagsKHR(), - vk::Bool32 independentResolveNone_ = 0, - vk::Bool32 independentResolve_ = 0 ) - : supportedDepthResolveModes( supportedDepthResolveModes_ ) - , supportedStencilResolveModes( supportedStencilResolveModes_ ) - , independentResolveNone( independentResolveNone_ ) - , independentResolve( independentResolve_ ) - {} - - PhysicalDeviceDepthStencilResolvePropertiesKHR( VkPhysicalDeviceDepthStencilResolvePropertiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceDepthStencilResolvePropertiesKHR& operator=( VkPhysicalDeviceDepthStencilResolvePropertiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceDepthStencilResolvePropertiesKHR; - void* pNext = nullptr; - vk::ResolveModeFlagsKHR supportedDepthResolveModes; - vk::ResolveModeFlagsKHR supportedStencilResolveModes; - vk::Bool32 independentResolveNone; - vk::Bool32 independentResolve; - }; - static_assert( sizeof( PhysicalDeviceDepthStencilResolvePropertiesKHR ) == sizeof( VkPhysicalDeviceDepthStencilResolvePropertiesKHR ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceDepthStencilResolvePropertiesKHR : public layout::PhysicalDeviceDepthStencilResolvePropertiesKHR - { - operator VkPhysicalDeviceDepthStencilResolvePropertiesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceDepthStencilResolvePropertiesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceDepthStencilResolvePropertiesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( supportedDepthResolveModes == rhs.supportedDepthResolveModes ) - && ( supportedStencilResolveModes == rhs.supportedStencilResolveModes ) - && ( independentResolveNone == rhs.independentResolveNone ) - && ( independentResolve == rhs.independentResolve ); - } - - bool operator!=( PhysicalDeviceDepthStencilResolvePropertiesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceDepthStencilResolvePropertiesKHR::sType; - }; - static_assert( sizeof( PhysicalDeviceDepthStencilResolvePropertiesKHR ) == sizeof( VkPhysicalDeviceDepthStencilResolvePropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceDescriptorIndexingFeaturesEXT - { - protected: - PhysicalDeviceDescriptorIndexingFeaturesEXT( vk::Bool32 shaderInputAttachmentArrayDynamicIndexing_ = 0, - vk::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ = 0, - vk::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ = 0, - vk::Bool32 shaderUniformBufferArrayNonUniformIndexing_ = 0, - vk::Bool32 shaderSampledImageArrayNonUniformIndexing_ = 0, - vk::Bool32 shaderStorageBufferArrayNonUniformIndexing_ = 0, - vk::Bool32 shaderStorageImageArrayNonUniformIndexing_ = 0, - vk::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ = 0, - vk::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ = 0, - vk::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ = 0, - vk::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ = 0, - vk::Bool32 descriptorBindingSampledImageUpdateAfterBind_ = 0, - vk::Bool32 descriptorBindingStorageImageUpdateAfterBind_ = 0, - vk::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ = 0, - vk::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = 0, - vk::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = 0, - vk::Bool32 descriptorBindingUpdateUnusedWhilePending_ = 0, - vk::Bool32 descriptorBindingPartiallyBound_ = 0, - vk::Bool32 descriptorBindingVariableDescriptorCount_ = 0, - vk::Bool32 runtimeDescriptorArray_ = 0 ) - : shaderInputAttachmentArrayDynamicIndexing( shaderInputAttachmentArrayDynamicIndexing_ ) - , shaderUniformTexelBufferArrayDynamicIndexing( shaderUniformTexelBufferArrayDynamicIndexing_ ) - , shaderStorageTexelBufferArrayDynamicIndexing( shaderStorageTexelBufferArrayDynamicIndexing_ ) - , shaderUniformBufferArrayNonUniformIndexing( shaderUniformBufferArrayNonUniformIndexing_ ) - , shaderSampledImageArrayNonUniformIndexing( shaderSampledImageArrayNonUniformIndexing_ ) - , shaderStorageBufferArrayNonUniformIndexing( shaderStorageBufferArrayNonUniformIndexing_ ) - , shaderStorageImageArrayNonUniformIndexing( shaderStorageImageArrayNonUniformIndexing_ ) - , shaderInputAttachmentArrayNonUniformIndexing( shaderInputAttachmentArrayNonUniformIndexing_ ) - , shaderUniformTexelBufferArrayNonUniformIndexing( shaderUniformTexelBufferArrayNonUniformIndexing_ ) - , shaderStorageTexelBufferArrayNonUniformIndexing( shaderStorageTexelBufferArrayNonUniformIndexing_ ) - , descriptorBindingUniformBufferUpdateAfterBind( descriptorBindingUniformBufferUpdateAfterBind_ ) - , descriptorBindingSampledImageUpdateAfterBind( descriptorBindingSampledImageUpdateAfterBind_ ) - , descriptorBindingStorageImageUpdateAfterBind( descriptorBindingStorageImageUpdateAfterBind_ ) - , descriptorBindingStorageBufferUpdateAfterBind( descriptorBindingStorageBufferUpdateAfterBind_ ) - , descriptorBindingUniformTexelBufferUpdateAfterBind( descriptorBindingUniformTexelBufferUpdateAfterBind_ ) - , descriptorBindingStorageTexelBufferUpdateAfterBind( descriptorBindingStorageTexelBufferUpdateAfterBind_ ) - , descriptorBindingUpdateUnusedWhilePending( descriptorBindingUpdateUnusedWhilePending_ ) - , descriptorBindingPartiallyBound( descriptorBindingPartiallyBound_ ) - , descriptorBindingVariableDescriptorCount( descriptorBindingVariableDescriptorCount_ ) - , runtimeDescriptorArray( runtimeDescriptorArray_ ) - {} - - PhysicalDeviceDescriptorIndexingFeaturesEXT( VkPhysicalDeviceDescriptorIndexingFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT& operator=( VkPhysicalDeviceDescriptorIndexingFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 shaderInputAttachmentArrayDynamicIndexing; - vk::Bool32 shaderUniformTexelBufferArrayDynamicIndexing; - vk::Bool32 shaderStorageTexelBufferArrayDynamicIndexing; - vk::Bool32 shaderUniformBufferArrayNonUniformIndexing; - vk::Bool32 shaderSampledImageArrayNonUniformIndexing; - vk::Bool32 shaderStorageBufferArrayNonUniformIndexing; - vk::Bool32 shaderStorageImageArrayNonUniformIndexing; - vk::Bool32 shaderInputAttachmentArrayNonUniformIndexing; - vk::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing; - vk::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing; - vk::Bool32 descriptorBindingUniformBufferUpdateAfterBind; - vk::Bool32 descriptorBindingSampledImageUpdateAfterBind; - vk::Bool32 descriptorBindingStorageImageUpdateAfterBind; - vk::Bool32 descriptorBindingStorageBufferUpdateAfterBind; - vk::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind; - vk::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind; - vk::Bool32 descriptorBindingUpdateUnusedWhilePending; - vk::Bool32 descriptorBindingPartiallyBound; - vk::Bool32 descriptorBindingVariableDescriptorCount; - vk::Bool32 runtimeDescriptorArray; - }; - static_assert( sizeof( PhysicalDeviceDescriptorIndexingFeaturesEXT ) == sizeof( VkPhysicalDeviceDescriptorIndexingFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceDescriptorIndexingFeaturesEXT : public layout::PhysicalDeviceDescriptorIndexingFeaturesEXT - { - PhysicalDeviceDescriptorIndexingFeaturesEXT( vk::Bool32 shaderInputAttachmentArrayDynamicIndexing_ = 0, - vk::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ = 0, - vk::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ = 0, - vk::Bool32 shaderUniformBufferArrayNonUniformIndexing_ = 0, - vk::Bool32 shaderSampledImageArrayNonUniformIndexing_ = 0, - vk::Bool32 shaderStorageBufferArrayNonUniformIndexing_ = 0, - vk::Bool32 shaderStorageImageArrayNonUniformIndexing_ = 0, - vk::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ = 0, - vk::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ = 0, - vk::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ = 0, - vk::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ = 0, - vk::Bool32 descriptorBindingSampledImageUpdateAfterBind_ = 0, - vk::Bool32 descriptorBindingStorageImageUpdateAfterBind_ = 0, - vk::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ = 0, - vk::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = 0, - vk::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = 0, - vk::Bool32 descriptorBindingUpdateUnusedWhilePending_ = 0, - vk::Bool32 descriptorBindingPartiallyBound_ = 0, - vk::Bool32 descriptorBindingVariableDescriptorCount_ = 0, - vk::Bool32 runtimeDescriptorArray_ = 0 ) - : layout::PhysicalDeviceDescriptorIndexingFeaturesEXT( shaderInputAttachmentArrayDynamicIndexing_, shaderUniformTexelBufferArrayDynamicIndexing_, shaderStorageTexelBufferArrayDynamicIndexing_, shaderUniformBufferArrayNonUniformIndexing_, shaderSampledImageArrayNonUniformIndexing_, shaderStorageBufferArrayNonUniformIndexing_, shaderStorageImageArrayNonUniformIndexing_, shaderInputAttachmentArrayNonUniformIndexing_, shaderUniformTexelBufferArrayNonUniformIndexing_, shaderStorageTexelBufferArrayNonUniformIndexing_, descriptorBindingUniformBufferUpdateAfterBind_, descriptorBindingSampledImageUpdateAfterBind_, descriptorBindingStorageImageUpdateAfterBind_, descriptorBindingStorageBufferUpdateAfterBind_, descriptorBindingUniformTexelBufferUpdateAfterBind_, descriptorBindingStorageTexelBufferUpdateAfterBind_, descriptorBindingUpdateUnusedWhilePending_, descriptorBindingPartiallyBound_, descriptorBindingVariableDescriptorCount_, runtimeDescriptorArray_ ) - {} - - PhysicalDeviceDescriptorIndexingFeaturesEXT( VkPhysicalDeviceDescriptorIndexingFeaturesEXT const & rhs ) - : layout::PhysicalDeviceDescriptorIndexingFeaturesEXT( rhs ) - {} - - PhysicalDeviceDescriptorIndexingFeaturesEXT& operator=( VkPhysicalDeviceDescriptorIndexingFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setShaderInputAttachmentArrayDynamicIndexing( vk::Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) - { - shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setShaderUniformTexelBufferArrayDynamicIndexing( vk::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) - { - shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setShaderStorageTexelBufferArrayDynamicIndexing( vk::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) - { - shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setShaderUniformBufferArrayNonUniformIndexing( vk::Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) - { - shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setShaderSampledImageArrayNonUniformIndexing( vk::Bool32 shaderSampledImageArrayNonUniformIndexing_ ) - { - shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setShaderStorageBufferArrayNonUniformIndexing( vk::Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) - { - shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setShaderStorageImageArrayNonUniformIndexing( vk::Bool32 shaderStorageImageArrayNonUniformIndexing_ ) - { - shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setShaderInputAttachmentArrayNonUniformIndexing( vk::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) - { - shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setShaderUniformTexelBufferArrayNonUniformIndexing( vk::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) - { - shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setShaderStorageTexelBufferArrayNonUniformIndexing( vk::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) - { - shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setDescriptorBindingUniformBufferUpdateAfterBind( vk::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) - { - descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setDescriptorBindingSampledImageUpdateAfterBind( vk::Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) - { - descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setDescriptorBindingStorageImageUpdateAfterBind( vk::Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) - { - descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setDescriptorBindingStorageBufferUpdateAfterBind( vk::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) - { - descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setDescriptorBindingUniformTexelBufferUpdateAfterBind( vk::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) - { - descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setDescriptorBindingStorageTexelBufferUpdateAfterBind( vk::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) - { - descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setDescriptorBindingUpdateUnusedWhilePending( vk::Bool32 descriptorBindingUpdateUnusedWhilePending_ ) - { - descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setDescriptorBindingPartiallyBound( vk::Bool32 descriptorBindingPartiallyBound_ ) - { - descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setDescriptorBindingVariableDescriptorCount( vk::Bool32 descriptorBindingVariableDescriptorCount_ ) - { - descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeaturesEXT & setRuntimeDescriptorArray( vk::Bool32 runtimeDescriptorArray_ ) - { - runtimeDescriptorArray = runtimeDescriptorArray_; - return *this; - } - - operator VkPhysicalDeviceDescriptorIndexingFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceDescriptorIndexingFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceDescriptorIndexingFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderInputAttachmentArrayDynamicIndexing == rhs.shaderInputAttachmentArrayDynamicIndexing ) - && ( shaderUniformTexelBufferArrayDynamicIndexing == rhs.shaderUniformTexelBufferArrayDynamicIndexing ) - && ( shaderStorageTexelBufferArrayDynamicIndexing == rhs.shaderStorageTexelBufferArrayDynamicIndexing ) - && ( shaderUniformBufferArrayNonUniformIndexing == rhs.shaderUniformBufferArrayNonUniformIndexing ) - && ( shaderSampledImageArrayNonUniformIndexing == rhs.shaderSampledImageArrayNonUniformIndexing ) - && ( shaderStorageBufferArrayNonUniformIndexing == rhs.shaderStorageBufferArrayNonUniformIndexing ) - && ( shaderStorageImageArrayNonUniformIndexing == rhs.shaderStorageImageArrayNonUniformIndexing ) - && ( shaderInputAttachmentArrayNonUniformIndexing == rhs.shaderInputAttachmentArrayNonUniformIndexing ) - && ( shaderUniformTexelBufferArrayNonUniformIndexing == rhs.shaderUniformTexelBufferArrayNonUniformIndexing ) - && ( shaderStorageTexelBufferArrayNonUniformIndexing == rhs.shaderStorageTexelBufferArrayNonUniformIndexing ) - && ( descriptorBindingUniformBufferUpdateAfterBind == rhs.descriptorBindingUniformBufferUpdateAfterBind ) - && ( descriptorBindingSampledImageUpdateAfterBind == rhs.descriptorBindingSampledImageUpdateAfterBind ) - && ( descriptorBindingStorageImageUpdateAfterBind == rhs.descriptorBindingStorageImageUpdateAfterBind ) - && ( descriptorBindingStorageBufferUpdateAfterBind == rhs.descriptorBindingStorageBufferUpdateAfterBind ) - && ( descriptorBindingUniformTexelBufferUpdateAfterBind == rhs.descriptorBindingUniformTexelBufferUpdateAfterBind ) - && ( descriptorBindingStorageTexelBufferUpdateAfterBind == rhs.descriptorBindingStorageTexelBufferUpdateAfterBind ) - && ( descriptorBindingUpdateUnusedWhilePending == rhs.descriptorBindingUpdateUnusedWhilePending ) - && ( descriptorBindingPartiallyBound == rhs.descriptorBindingPartiallyBound ) - && ( descriptorBindingVariableDescriptorCount == rhs.descriptorBindingVariableDescriptorCount ) - && ( runtimeDescriptorArray == rhs.runtimeDescriptorArray ); - } - - bool operator!=( PhysicalDeviceDescriptorIndexingFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceDescriptorIndexingFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceDescriptorIndexingFeaturesEXT ) == sizeof( VkPhysicalDeviceDescriptorIndexingFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceDescriptorIndexingPropertiesEXT - { - protected: - PhysicalDeviceDescriptorIndexingPropertiesEXT( uint32_t maxUpdateAfterBindDescriptorsInAllPools_ = 0, - vk::Bool32 shaderUniformBufferArrayNonUniformIndexingNative_ = 0, - vk::Bool32 shaderSampledImageArrayNonUniformIndexingNative_ = 0, - vk::Bool32 shaderStorageBufferArrayNonUniformIndexingNative_ = 0, - vk::Bool32 shaderStorageImageArrayNonUniformIndexingNative_ = 0, - vk::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative_ = 0, - vk::Bool32 robustBufferAccessUpdateAfterBind_ = 0, - vk::Bool32 quadDivergentImplicitLod_ = 0, - uint32_t maxPerStageDescriptorUpdateAfterBindSamplers_ = 0, - uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers_ = 0, - uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers_ = 0, - uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages_ = 0, - uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages_ = 0, - uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments_ = 0, - uint32_t maxPerStageUpdateAfterBindResources_ = 0, - uint32_t maxDescriptorSetUpdateAfterBindSamplers_ = 0, - uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers_ = 0, - uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ = 0, - uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers_ = 0, - uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ = 0, - uint32_t maxDescriptorSetUpdateAfterBindSampledImages_ = 0, - uint32_t maxDescriptorSetUpdateAfterBindStorageImages_ = 0, - uint32_t maxDescriptorSetUpdateAfterBindInputAttachments_ = 0 ) - : maxUpdateAfterBindDescriptorsInAllPools( maxUpdateAfterBindDescriptorsInAllPools_ ) - , shaderUniformBufferArrayNonUniformIndexingNative( shaderUniformBufferArrayNonUniformIndexingNative_ ) - , shaderSampledImageArrayNonUniformIndexingNative( shaderSampledImageArrayNonUniformIndexingNative_ ) - , shaderStorageBufferArrayNonUniformIndexingNative( shaderStorageBufferArrayNonUniformIndexingNative_ ) - , shaderStorageImageArrayNonUniformIndexingNative( shaderStorageImageArrayNonUniformIndexingNative_ ) - , shaderInputAttachmentArrayNonUniformIndexingNative( shaderInputAttachmentArrayNonUniformIndexingNative_ ) - , robustBufferAccessUpdateAfterBind( robustBufferAccessUpdateAfterBind_ ) - , quadDivergentImplicitLod( quadDivergentImplicitLod_ ) - , maxPerStageDescriptorUpdateAfterBindSamplers( maxPerStageDescriptorUpdateAfterBindSamplers_ ) - , maxPerStageDescriptorUpdateAfterBindUniformBuffers( maxPerStageDescriptorUpdateAfterBindUniformBuffers_ ) - , maxPerStageDescriptorUpdateAfterBindStorageBuffers( maxPerStageDescriptorUpdateAfterBindStorageBuffers_ ) - , maxPerStageDescriptorUpdateAfterBindSampledImages( maxPerStageDescriptorUpdateAfterBindSampledImages_ ) - , maxPerStageDescriptorUpdateAfterBindStorageImages( maxPerStageDescriptorUpdateAfterBindStorageImages_ ) - , maxPerStageDescriptorUpdateAfterBindInputAttachments( maxPerStageDescriptorUpdateAfterBindInputAttachments_ ) - , maxPerStageUpdateAfterBindResources( maxPerStageUpdateAfterBindResources_ ) - , maxDescriptorSetUpdateAfterBindSamplers( maxDescriptorSetUpdateAfterBindSamplers_ ) - , maxDescriptorSetUpdateAfterBindUniformBuffers( maxDescriptorSetUpdateAfterBindUniformBuffers_ ) - , maxDescriptorSetUpdateAfterBindUniformBuffersDynamic( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ ) - , maxDescriptorSetUpdateAfterBindStorageBuffers( maxDescriptorSetUpdateAfterBindStorageBuffers_ ) - , maxDescriptorSetUpdateAfterBindStorageBuffersDynamic( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ ) - , maxDescriptorSetUpdateAfterBindSampledImages( maxDescriptorSetUpdateAfterBindSampledImages_ ) - , maxDescriptorSetUpdateAfterBindStorageImages( maxDescriptorSetUpdateAfterBindStorageImages_ ) - , maxDescriptorSetUpdateAfterBindInputAttachments( maxDescriptorSetUpdateAfterBindInputAttachments_ ) - {} - - PhysicalDeviceDescriptorIndexingPropertiesEXT( VkPhysicalDeviceDescriptorIndexingPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceDescriptorIndexingPropertiesEXT& operator=( VkPhysicalDeviceDescriptorIndexingPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingPropertiesEXT; - void* pNext = nullptr; - uint32_t maxUpdateAfterBindDescriptorsInAllPools; - vk::Bool32 shaderUniformBufferArrayNonUniformIndexingNative; - vk::Bool32 shaderSampledImageArrayNonUniformIndexingNative; - vk::Bool32 shaderStorageBufferArrayNonUniformIndexingNative; - vk::Bool32 shaderStorageImageArrayNonUniformIndexingNative; - vk::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative; - vk::Bool32 robustBufferAccessUpdateAfterBind; - vk::Bool32 quadDivergentImplicitLod; - uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; - uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; - uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; - uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; - uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; - uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; - uint32_t maxPerStageUpdateAfterBindResources; - uint32_t maxDescriptorSetUpdateAfterBindSamplers; - uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; - uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; - uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; - uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; - uint32_t maxDescriptorSetUpdateAfterBindSampledImages; - uint32_t maxDescriptorSetUpdateAfterBindStorageImages; - uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; - }; - static_assert( sizeof( PhysicalDeviceDescriptorIndexingPropertiesEXT ) == sizeof( VkPhysicalDeviceDescriptorIndexingPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceDescriptorIndexingPropertiesEXT : public layout::PhysicalDeviceDescriptorIndexingPropertiesEXT - { - operator VkPhysicalDeviceDescriptorIndexingPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceDescriptorIndexingPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceDescriptorIndexingPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxUpdateAfterBindDescriptorsInAllPools == rhs.maxUpdateAfterBindDescriptorsInAllPools ) - && ( shaderUniformBufferArrayNonUniformIndexingNative == rhs.shaderUniformBufferArrayNonUniformIndexingNative ) - && ( shaderSampledImageArrayNonUniformIndexingNative == rhs.shaderSampledImageArrayNonUniformIndexingNative ) - && ( shaderStorageBufferArrayNonUniformIndexingNative == rhs.shaderStorageBufferArrayNonUniformIndexingNative ) - && ( shaderStorageImageArrayNonUniformIndexingNative == rhs.shaderStorageImageArrayNonUniformIndexingNative ) - && ( shaderInputAttachmentArrayNonUniformIndexingNative == rhs.shaderInputAttachmentArrayNonUniformIndexingNative ) - && ( robustBufferAccessUpdateAfterBind == rhs.robustBufferAccessUpdateAfterBind ) - && ( quadDivergentImplicitLod == rhs.quadDivergentImplicitLod ) - && ( maxPerStageDescriptorUpdateAfterBindSamplers == rhs.maxPerStageDescriptorUpdateAfterBindSamplers ) - && ( maxPerStageDescriptorUpdateAfterBindUniformBuffers == rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers ) - && ( maxPerStageDescriptorUpdateAfterBindStorageBuffers == rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers ) - && ( maxPerStageDescriptorUpdateAfterBindSampledImages == rhs.maxPerStageDescriptorUpdateAfterBindSampledImages ) - && ( maxPerStageDescriptorUpdateAfterBindStorageImages == rhs.maxPerStageDescriptorUpdateAfterBindStorageImages ) - && ( maxPerStageDescriptorUpdateAfterBindInputAttachments == rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments ) - && ( maxPerStageUpdateAfterBindResources == rhs.maxPerStageUpdateAfterBindResources ) - && ( maxDescriptorSetUpdateAfterBindSamplers == rhs.maxDescriptorSetUpdateAfterBindSamplers ) - && ( maxDescriptorSetUpdateAfterBindUniformBuffers == rhs.maxDescriptorSetUpdateAfterBindUniformBuffers ) - && ( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ) - && ( maxDescriptorSetUpdateAfterBindStorageBuffers == rhs.maxDescriptorSetUpdateAfterBindStorageBuffers ) - && ( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ) - && ( maxDescriptorSetUpdateAfterBindSampledImages == rhs.maxDescriptorSetUpdateAfterBindSampledImages ) - && ( maxDescriptorSetUpdateAfterBindStorageImages == rhs.maxDescriptorSetUpdateAfterBindStorageImages ) - && ( maxDescriptorSetUpdateAfterBindInputAttachments == rhs.maxDescriptorSetUpdateAfterBindInputAttachments ); - } - - bool operator!=( PhysicalDeviceDescriptorIndexingPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceDescriptorIndexingPropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceDescriptorIndexingPropertiesEXT ) == sizeof( VkPhysicalDeviceDescriptorIndexingPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceDiscardRectanglePropertiesEXT - { - protected: - PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 ) - : maxDiscardRectangles( maxDiscardRectangles_ ) - {} - - PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT; - void* pNext = nullptr; - uint32_t maxDiscardRectangles; - }; - static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceDiscardRectanglePropertiesEXT : public layout::PhysicalDeviceDiscardRectanglePropertiesEXT - { - operator VkPhysicalDeviceDiscardRectanglePropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceDiscardRectanglePropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxDiscardRectangles == rhs.maxDiscardRectangles ); - } - - bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceDiscardRectanglePropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceDriverPropertiesKHR - { - protected: - PhysicalDeviceDriverPropertiesKHR( vk::DriverIdKHR driverID_ = vk::DriverIdKHR::eAmdProprietary, - std::array const& driverName_ = { { 0 } }, - std::array const& driverInfo_ = { { 0 } }, - vk::ConformanceVersionKHR conformanceVersion_ = vk::ConformanceVersionKHR() ) - : driverID( driverID_ ) - , conformanceVersion( conformanceVersion_ ) - { - memcpy( &driverName, driverName_.data(), VK_MAX_DRIVER_NAME_SIZE_KHR * sizeof( char ) ); - memcpy( &driverInfo, driverInfo_.data(), VK_MAX_DRIVER_INFO_SIZE_KHR * sizeof( char ) ); - - } - - PhysicalDeviceDriverPropertiesKHR( VkPhysicalDeviceDriverPropertiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceDriverPropertiesKHR& operator=( VkPhysicalDeviceDriverPropertiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceDriverPropertiesKHR; - void* pNext = nullptr; - vk::DriverIdKHR driverID; - char driverName[VK_MAX_DRIVER_NAME_SIZE_KHR]; - char driverInfo[VK_MAX_DRIVER_INFO_SIZE_KHR]; - vk::ConformanceVersionKHR conformanceVersion; - }; - static_assert( sizeof( PhysicalDeviceDriverPropertiesKHR ) == sizeof( VkPhysicalDeviceDriverPropertiesKHR ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceDriverPropertiesKHR : public layout::PhysicalDeviceDriverPropertiesKHR - { - operator VkPhysicalDeviceDriverPropertiesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceDriverPropertiesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceDriverPropertiesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( driverID == rhs.driverID ) - && ( memcmp( driverName, rhs.driverName, VK_MAX_DRIVER_NAME_SIZE_KHR * sizeof( char ) ) == 0 ) - && ( memcmp( driverInfo, rhs.driverInfo, VK_MAX_DRIVER_INFO_SIZE_KHR * sizeof( char ) ) == 0 ) - && ( conformanceVersion == rhs.conformanceVersion ); - } - - bool operator!=( PhysicalDeviceDriverPropertiesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceDriverPropertiesKHR::sType; - }; - static_assert( sizeof( PhysicalDeviceDriverPropertiesKHR ) == sizeof( VkPhysicalDeviceDriverPropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceExclusiveScissorFeaturesNV - { - protected: - PhysicalDeviceExclusiveScissorFeaturesNV( vk::Bool32 exclusiveScissor_ = 0 ) - : exclusiveScissor( exclusiveScissor_ ) - {} - - PhysicalDeviceExclusiveScissorFeaturesNV( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceExclusiveScissorFeaturesNV& operator=( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV; - void* pNext = nullptr; - vk::Bool32 exclusiveScissor; - }; - static_assert( sizeof( PhysicalDeviceExclusiveScissorFeaturesNV ) == sizeof( VkPhysicalDeviceExclusiveScissorFeaturesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceExclusiveScissorFeaturesNV : public layout::PhysicalDeviceExclusiveScissorFeaturesNV - { - PhysicalDeviceExclusiveScissorFeaturesNV( vk::Bool32 exclusiveScissor_ = 0 ) - : layout::PhysicalDeviceExclusiveScissorFeaturesNV( exclusiveScissor_ ) - {} - - PhysicalDeviceExclusiveScissorFeaturesNV( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) - : layout::PhysicalDeviceExclusiveScissorFeaturesNV( rhs ) - {} - - PhysicalDeviceExclusiveScissorFeaturesNV& operator=( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceExclusiveScissorFeaturesNV & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceExclusiveScissorFeaturesNV & setExclusiveScissor( vk::Bool32 exclusiveScissor_ ) - { - exclusiveScissor = exclusiveScissor_; - return *this; - } - - operator VkPhysicalDeviceExclusiveScissorFeaturesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceExclusiveScissorFeaturesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceExclusiveScissorFeaturesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( exclusiveScissor == rhs.exclusiveScissor ); - } - - bool operator!=( PhysicalDeviceExclusiveScissorFeaturesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceExclusiveScissorFeaturesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceExclusiveScissorFeaturesNV ) == sizeof( VkPhysicalDeviceExclusiveScissorFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceExternalBufferInfo - { - protected: - PhysicalDeviceExternalBufferInfo( vk::BufferCreateFlags flags_ = vk::BufferCreateFlags(), - vk::BufferUsageFlags usage_ = vk::BufferUsageFlags(), - vk::ExternalMemoryHandleTypeFlagBits handleType_ = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) - : flags( flags_ ) - , usage( usage_ ) - , handleType( handleType_ ) - {} - - PhysicalDeviceExternalBufferInfo( VkPhysicalDeviceExternalBufferInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceExternalBufferInfo& operator=( VkPhysicalDeviceExternalBufferInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceExternalBufferInfo; - const void* pNext = nullptr; - vk::BufferCreateFlags flags; - vk::BufferUsageFlags usage; - vk::ExternalMemoryHandleTypeFlagBits handleType; - }; - static_assert( sizeof( PhysicalDeviceExternalBufferInfo ) == sizeof( VkPhysicalDeviceExternalBufferInfo ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceExternalBufferInfo : public layout::PhysicalDeviceExternalBufferInfo - { - PhysicalDeviceExternalBufferInfo( vk::BufferCreateFlags flags_ = vk::BufferCreateFlags(), - vk::BufferUsageFlags usage_ = vk::BufferUsageFlags(), - vk::ExternalMemoryHandleTypeFlagBits handleType_ = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) - : layout::PhysicalDeviceExternalBufferInfo( flags_, usage_, handleType_ ) - {} - - PhysicalDeviceExternalBufferInfo( VkPhysicalDeviceExternalBufferInfo const & rhs ) - : layout::PhysicalDeviceExternalBufferInfo( rhs ) - {} - - PhysicalDeviceExternalBufferInfo& operator=( VkPhysicalDeviceExternalBufferInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceExternalBufferInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceExternalBufferInfo & setFlags( vk::BufferCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - PhysicalDeviceExternalBufferInfo & setUsage( vk::BufferUsageFlags usage_ ) - { - usage = usage_; - return *this; - } - - PhysicalDeviceExternalBufferInfo & setHandleType( vk::ExternalMemoryHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - operator VkPhysicalDeviceExternalBufferInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceExternalBufferInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceExternalBufferInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( usage == rhs.usage ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( PhysicalDeviceExternalBufferInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceExternalBufferInfo::sType; - }; - static_assert( sizeof( PhysicalDeviceExternalBufferInfo ) == sizeof( VkPhysicalDeviceExternalBufferInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceExternalFenceInfo - { - protected: - PhysicalDeviceExternalFenceInfo( vk::ExternalFenceHandleTypeFlagBits handleType_ = vk::ExternalFenceHandleTypeFlagBits::eOpaqueFd ) - : handleType( handleType_ ) - {} - - PhysicalDeviceExternalFenceInfo( VkPhysicalDeviceExternalFenceInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceExternalFenceInfo& operator=( VkPhysicalDeviceExternalFenceInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceExternalFenceInfo; - const void* pNext = nullptr; - vk::ExternalFenceHandleTypeFlagBits handleType; - }; - static_assert( sizeof( PhysicalDeviceExternalFenceInfo ) == sizeof( VkPhysicalDeviceExternalFenceInfo ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceExternalFenceInfo : public layout::PhysicalDeviceExternalFenceInfo - { - PhysicalDeviceExternalFenceInfo( vk::ExternalFenceHandleTypeFlagBits handleType_ = vk::ExternalFenceHandleTypeFlagBits::eOpaqueFd ) - : layout::PhysicalDeviceExternalFenceInfo( handleType_ ) - {} - - PhysicalDeviceExternalFenceInfo( VkPhysicalDeviceExternalFenceInfo const & rhs ) - : layout::PhysicalDeviceExternalFenceInfo( rhs ) - {} - - PhysicalDeviceExternalFenceInfo& operator=( VkPhysicalDeviceExternalFenceInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceExternalFenceInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceExternalFenceInfo & setHandleType( vk::ExternalFenceHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - operator VkPhysicalDeviceExternalFenceInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceExternalFenceInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceExternalFenceInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( PhysicalDeviceExternalFenceInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceExternalFenceInfo::sType; - }; - static_assert( sizeof( PhysicalDeviceExternalFenceInfo ) == sizeof( VkPhysicalDeviceExternalFenceInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceExternalImageFormatInfo - { - protected: - PhysicalDeviceExternalImageFormatInfo( vk::ExternalMemoryHandleTypeFlagBits handleType_ = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) - : handleType( handleType_ ) - {} - - PhysicalDeviceExternalImageFormatInfo( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceExternalImageFormatInfo& operator=( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceExternalImageFormatInfo; - const void* pNext = nullptr; - vk::ExternalMemoryHandleTypeFlagBits handleType; - }; - static_assert( sizeof( PhysicalDeviceExternalImageFormatInfo ) == sizeof( VkPhysicalDeviceExternalImageFormatInfo ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceExternalImageFormatInfo : public layout::PhysicalDeviceExternalImageFormatInfo - { - PhysicalDeviceExternalImageFormatInfo( vk::ExternalMemoryHandleTypeFlagBits handleType_ = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) - : layout::PhysicalDeviceExternalImageFormatInfo( handleType_ ) - {} - - PhysicalDeviceExternalImageFormatInfo( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) - : layout::PhysicalDeviceExternalImageFormatInfo( rhs ) - {} - - PhysicalDeviceExternalImageFormatInfo& operator=( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceExternalImageFormatInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceExternalImageFormatInfo & setHandleType( vk::ExternalMemoryHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - operator VkPhysicalDeviceExternalImageFormatInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceExternalImageFormatInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceExternalImageFormatInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( PhysicalDeviceExternalImageFormatInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceExternalImageFormatInfo::sType; - }; - static_assert( sizeof( PhysicalDeviceExternalImageFormatInfo ) == sizeof( VkPhysicalDeviceExternalImageFormatInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceExternalMemoryHostPropertiesEXT - { - protected: - PhysicalDeviceExternalMemoryHostPropertiesEXT( vk::DeviceSize minImportedHostPointerAlignment_ = 0 ) - : minImportedHostPointerAlignment( minImportedHostPointerAlignment_ ) - {} - - PhysicalDeviceExternalMemoryHostPropertiesEXT( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceExternalMemoryHostPropertiesEXT& operator=( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT; - void* pNext = nullptr; - vk::DeviceSize minImportedHostPointerAlignment; - }; - static_assert( sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) == sizeof( VkPhysicalDeviceExternalMemoryHostPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceExternalMemoryHostPropertiesEXT : public layout::PhysicalDeviceExternalMemoryHostPropertiesEXT - { - operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceExternalMemoryHostPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( minImportedHostPointerAlignment == rhs.minImportedHostPointerAlignment ); - } - - bool operator!=( PhysicalDeviceExternalMemoryHostPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceExternalMemoryHostPropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) == sizeof( VkPhysicalDeviceExternalMemoryHostPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceExternalSemaphoreInfo - { - protected: - PhysicalDeviceExternalSemaphoreInfo( vk::ExternalSemaphoreHandleTypeFlagBits handleType_ = vk::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) - : handleType( handleType_ ) - {} - - PhysicalDeviceExternalSemaphoreInfo( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceExternalSemaphoreInfo& operator=( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceExternalSemaphoreInfo; - const void* pNext = nullptr; - vk::ExternalSemaphoreHandleTypeFlagBits handleType; - }; - static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfo ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfo ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceExternalSemaphoreInfo : public layout::PhysicalDeviceExternalSemaphoreInfo - { - PhysicalDeviceExternalSemaphoreInfo( vk::ExternalSemaphoreHandleTypeFlagBits handleType_ = vk::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) - : layout::PhysicalDeviceExternalSemaphoreInfo( handleType_ ) - {} - - PhysicalDeviceExternalSemaphoreInfo( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) - : layout::PhysicalDeviceExternalSemaphoreInfo( rhs ) - {} - - PhysicalDeviceExternalSemaphoreInfo& operator=( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceExternalSemaphoreInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceExternalSemaphoreInfo & setHandleType( vk::ExternalSemaphoreHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - operator VkPhysicalDeviceExternalSemaphoreInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceExternalSemaphoreInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceExternalSemaphoreInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( PhysicalDeviceExternalSemaphoreInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceExternalSemaphoreInfo::sType; - }; - static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfo ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceFeatures2 - { - protected: - PhysicalDeviceFeatures2( vk::PhysicalDeviceFeatures features_ = vk::PhysicalDeviceFeatures() ) - : features( features_ ) - {} - - PhysicalDeviceFeatures2( VkPhysicalDeviceFeatures2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceFeatures2& operator=( VkPhysicalDeviceFeatures2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceFeatures2; - void* pNext = nullptr; - vk::PhysicalDeviceFeatures features; - }; - static_assert( sizeof( PhysicalDeviceFeatures2 ) == sizeof( VkPhysicalDeviceFeatures2 ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceFeatures2 : public layout::PhysicalDeviceFeatures2 - { - PhysicalDeviceFeatures2( vk::PhysicalDeviceFeatures features_ = vk::PhysicalDeviceFeatures() ) - : layout::PhysicalDeviceFeatures2( features_ ) - {} - - PhysicalDeviceFeatures2( VkPhysicalDeviceFeatures2 const & rhs ) - : layout::PhysicalDeviceFeatures2( rhs ) - {} - - PhysicalDeviceFeatures2& operator=( VkPhysicalDeviceFeatures2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceFeatures2 & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceFeatures2 & setFeatures( vk::PhysicalDeviceFeatures features_ ) - { - features = features_; - return *this; - } - - operator VkPhysicalDeviceFeatures2 const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceFeatures2 &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceFeatures2 const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( features == rhs.features ); - } - - bool operator!=( PhysicalDeviceFeatures2 const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceFeatures2::sType; - }; - static_assert( sizeof( PhysicalDeviceFeatures2 ) == sizeof( VkPhysicalDeviceFeatures2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceFloatControlsPropertiesKHR - { - protected: - PhysicalDeviceFloatControlsPropertiesKHR( vk::ShaderFloatControlsIndependenceKHR denormBehaviorIndependence_ = vk::ShaderFloatControlsIndependenceKHR::e32BitOnly, - vk::ShaderFloatControlsIndependenceKHR roundingModeIndependence_ = vk::ShaderFloatControlsIndependenceKHR::e32BitOnly, - vk::Bool32 shaderSignedZeroInfNanPreserveFloat16_ = 0, - vk::Bool32 shaderSignedZeroInfNanPreserveFloat32_ = 0, - vk::Bool32 shaderSignedZeroInfNanPreserveFloat64_ = 0, - vk::Bool32 shaderDenormPreserveFloat16_ = 0, - vk::Bool32 shaderDenormPreserveFloat32_ = 0, - vk::Bool32 shaderDenormPreserveFloat64_ = 0, - vk::Bool32 shaderDenormFlushToZeroFloat16_ = 0, - vk::Bool32 shaderDenormFlushToZeroFloat32_ = 0, - vk::Bool32 shaderDenormFlushToZeroFloat64_ = 0, - vk::Bool32 shaderRoundingModeRTEFloat16_ = 0, - vk::Bool32 shaderRoundingModeRTEFloat32_ = 0, - vk::Bool32 shaderRoundingModeRTEFloat64_ = 0, - vk::Bool32 shaderRoundingModeRTZFloat16_ = 0, - vk::Bool32 shaderRoundingModeRTZFloat32_ = 0, - vk::Bool32 shaderRoundingModeRTZFloat64_ = 0 ) - : denormBehaviorIndependence( denormBehaviorIndependence_ ) - , roundingModeIndependence( roundingModeIndependence_ ) - , shaderSignedZeroInfNanPreserveFloat16( shaderSignedZeroInfNanPreserveFloat16_ ) - , shaderSignedZeroInfNanPreserveFloat32( shaderSignedZeroInfNanPreserveFloat32_ ) - , shaderSignedZeroInfNanPreserveFloat64( shaderSignedZeroInfNanPreserveFloat64_ ) - , shaderDenormPreserveFloat16( shaderDenormPreserveFloat16_ ) - , shaderDenormPreserveFloat32( shaderDenormPreserveFloat32_ ) - , shaderDenormPreserveFloat64( shaderDenormPreserveFloat64_ ) - , shaderDenormFlushToZeroFloat16( shaderDenormFlushToZeroFloat16_ ) - , shaderDenormFlushToZeroFloat32( shaderDenormFlushToZeroFloat32_ ) - , shaderDenormFlushToZeroFloat64( shaderDenormFlushToZeroFloat64_ ) - , shaderRoundingModeRTEFloat16( shaderRoundingModeRTEFloat16_ ) - , shaderRoundingModeRTEFloat32( shaderRoundingModeRTEFloat32_ ) - , shaderRoundingModeRTEFloat64( shaderRoundingModeRTEFloat64_ ) - , shaderRoundingModeRTZFloat16( shaderRoundingModeRTZFloat16_ ) - , shaderRoundingModeRTZFloat32( shaderRoundingModeRTZFloat32_ ) - , shaderRoundingModeRTZFloat64( shaderRoundingModeRTZFloat64_ ) - {} - - PhysicalDeviceFloatControlsPropertiesKHR( VkPhysicalDeviceFloatControlsPropertiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceFloatControlsPropertiesKHR& operator=( VkPhysicalDeviceFloatControlsPropertiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceFloatControlsPropertiesKHR; - void* pNext = nullptr; - vk::ShaderFloatControlsIndependenceKHR denormBehaviorIndependence; - vk::ShaderFloatControlsIndependenceKHR roundingModeIndependence; - vk::Bool32 shaderSignedZeroInfNanPreserveFloat16; - vk::Bool32 shaderSignedZeroInfNanPreserveFloat32; - vk::Bool32 shaderSignedZeroInfNanPreserveFloat64; - vk::Bool32 shaderDenormPreserveFloat16; - vk::Bool32 shaderDenormPreserveFloat32; - vk::Bool32 shaderDenormPreserveFloat64; - vk::Bool32 shaderDenormFlushToZeroFloat16; - vk::Bool32 shaderDenormFlushToZeroFloat32; - vk::Bool32 shaderDenormFlushToZeroFloat64; - vk::Bool32 shaderRoundingModeRTEFloat16; - vk::Bool32 shaderRoundingModeRTEFloat32; - vk::Bool32 shaderRoundingModeRTEFloat64; - vk::Bool32 shaderRoundingModeRTZFloat16; - vk::Bool32 shaderRoundingModeRTZFloat32; - vk::Bool32 shaderRoundingModeRTZFloat64; - }; - static_assert( sizeof( PhysicalDeviceFloatControlsPropertiesKHR ) == sizeof( VkPhysicalDeviceFloatControlsPropertiesKHR ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceFloatControlsPropertiesKHR : public layout::PhysicalDeviceFloatControlsPropertiesKHR - { - operator VkPhysicalDeviceFloatControlsPropertiesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceFloatControlsPropertiesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceFloatControlsPropertiesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( denormBehaviorIndependence == rhs.denormBehaviorIndependence ) - && ( roundingModeIndependence == rhs.roundingModeIndependence ) - && ( shaderSignedZeroInfNanPreserveFloat16 == rhs.shaderSignedZeroInfNanPreserveFloat16 ) - && ( shaderSignedZeroInfNanPreserveFloat32 == rhs.shaderSignedZeroInfNanPreserveFloat32 ) - && ( shaderSignedZeroInfNanPreserveFloat64 == rhs.shaderSignedZeroInfNanPreserveFloat64 ) - && ( shaderDenormPreserveFloat16 == rhs.shaderDenormPreserveFloat16 ) - && ( shaderDenormPreserveFloat32 == rhs.shaderDenormPreserveFloat32 ) - && ( shaderDenormPreserveFloat64 == rhs.shaderDenormPreserveFloat64 ) - && ( shaderDenormFlushToZeroFloat16 == rhs.shaderDenormFlushToZeroFloat16 ) - && ( shaderDenormFlushToZeroFloat32 == rhs.shaderDenormFlushToZeroFloat32 ) - && ( shaderDenormFlushToZeroFloat64 == rhs.shaderDenormFlushToZeroFloat64 ) - && ( shaderRoundingModeRTEFloat16 == rhs.shaderRoundingModeRTEFloat16 ) - && ( shaderRoundingModeRTEFloat32 == rhs.shaderRoundingModeRTEFloat32 ) - && ( shaderRoundingModeRTEFloat64 == rhs.shaderRoundingModeRTEFloat64 ) - && ( shaderRoundingModeRTZFloat16 == rhs.shaderRoundingModeRTZFloat16 ) - && ( shaderRoundingModeRTZFloat32 == rhs.shaderRoundingModeRTZFloat32 ) - && ( shaderRoundingModeRTZFloat64 == rhs.shaderRoundingModeRTZFloat64 ); - } - - bool operator!=( PhysicalDeviceFloatControlsPropertiesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceFloatControlsPropertiesKHR::sType; - }; - static_assert( sizeof( PhysicalDeviceFloatControlsPropertiesKHR ) == sizeof( VkPhysicalDeviceFloatControlsPropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceFragmentDensityMapFeaturesEXT - { - protected: - PhysicalDeviceFragmentDensityMapFeaturesEXT( vk::Bool32 fragmentDensityMap_ = 0, - vk::Bool32 fragmentDensityMapDynamic_ = 0, - vk::Bool32 fragmentDensityMapNonSubsampledImages_ = 0 ) - : fragmentDensityMap( fragmentDensityMap_ ) - , fragmentDensityMapDynamic( fragmentDensityMapDynamic_ ) - , fragmentDensityMapNonSubsampledImages( fragmentDensityMapNonSubsampledImages_ ) - {} - - PhysicalDeviceFragmentDensityMapFeaturesEXT( VkPhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceFragmentDensityMapFeaturesEXT& operator=( VkPhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 fragmentDensityMap; - vk::Bool32 fragmentDensityMapDynamic; - vk::Bool32 fragmentDensityMapNonSubsampledImages; - }; - static_assert( sizeof( PhysicalDeviceFragmentDensityMapFeaturesEXT ) == sizeof( VkPhysicalDeviceFragmentDensityMapFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceFragmentDensityMapFeaturesEXT : public layout::PhysicalDeviceFragmentDensityMapFeaturesEXT - { - operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceFragmentDensityMapFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fragmentDensityMap == rhs.fragmentDensityMap ) - && ( fragmentDensityMapDynamic == rhs.fragmentDensityMapDynamic ) - && ( fragmentDensityMapNonSubsampledImages == rhs.fragmentDensityMapNonSubsampledImages ); - } - - bool operator!=( PhysicalDeviceFragmentDensityMapFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceFragmentDensityMapFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceFragmentDensityMapFeaturesEXT ) == sizeof( VkPhysicalDeviceFragmentDensityMapFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceFragmentDensityMapPropertiesEXT - { - protected: - PhysicalDeviceFragmentDensityMapPropertiesEXT( vk::Extent2D minFragmentDensityTexelSize_ = vk::Extent2D(), - vk::Extent2D maxFragmentDensityTexelSize_ = vk::Extent2D(), - vk::Bool32 fragmentDensityInvocations_ = 0 ) - : minFragmentDensityTexelSize( minFragmentDensityTexelSize_ ) - , maxFragmentDensityTexelSize( maxFragmentDensityTexelSize_ ) - , fragmentDensityInvocations( fragmentDensityInvocations_ ) - {} - - PhysicalDeviceFragmentDensityMapPropertiesEXT( VkPhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceFragmentDensityMapPropertiesEXT& operator=( VkPhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT; - void* pNext = nullptr; - vk::Extent2D minFragmentDensityTexelSize; - vk::Extent2D maxFragmentDensityTexelSize; - vk::Bool32 fragmentDensityInvocations; - }; - static_assert( sizeof( PhysicalDeviceFragmentDensityMapPropertiesEXT ) == sizeof( VkPhysicalDeviceFragmentDensityMapPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceFragmentDensityMapPropertiesEXT : public layout::PhysicalDeviceFragmentDensityMapPropertiesEXT - { - operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceFragmentDensityMapPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( minFragmentDensityTexelSize == rhs.minFragmentDensityTexelSize ) - && ( maxFragmentDensityTexelSize == rhs.maxFragmentDensityTexelSize ) - && ( fragmentDensityInvocations == rhs.fragmentDensityInvocations ); - } - - bool operator!=( PhysicalDeviceFragmentDensityMapPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceFragmentDensityMapPropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceFragmentDensityMapPropertiesEXT ) == sizeof( VkPhysicalDeviceFragmentDensityMapPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceFragmentShaderBarycentricFeaturesNV - { - protected: - PhysicalDeviceFragmentShaderBarycentricFeaturesNV( vk::Bool32 fragmentShaderBarycentric_ = 0 ) - : fragmentShaderBarycentric( fragmentShaderBarycentric_ ) - {} - - PhysicalDeviceFragmentShaderBarycentricFeaturesNV( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceFragmentShaderBarycentricFeaturesNV& operator=( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesNV; - void* pNext = nullptr; - vk::Bool32 fragmentShaderBarycentric; - }; - static_assert( sizeof( PhysicalDeviceFragmentShaderBarycentricFeaturesNV ) == sizeof( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceFragmentShaderBarycentricFeaturesNV : public layout::PhysicalDeviceFragmentShaderBarycentricFeaturesNV - { - PhysicalDeviceFragmentShaderBarycentricFeaturesNV( vk::Bool32 fragmentShaderBarycentric_ = 0 ) - : layout::PhysicalDeviceFragmentShaderBarycentricFeaturesNV( fragmentShaderBarycentric_ ) - {} - - PhysicalDeviceFragmentShaderBarycentricFeaturesNV( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) - : layout::PhysicalDeviceFragmentShaderBarycentricFeaturesNV( rhs ) - {} - - PhysicalDeviceFragmentShaderBarycentricFeaturesNV& operator=( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceFragmentShaderBarycentricFeaturesNV & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceFragmentShaderBarycentricFeaturesNV & setFragmentShaderBarycentric( vk::Bool32 fragmentShaderBarycentric_ ) - { - fragmentShaderBarycentric = fragmentShaderBarycentric_; - return *this; - } - - operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fragmentShaderBarycentric == rhs.fragmentShaderBarycentric ); - } - - bool operator!=( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceFragmentShaderBarycentricFeaturesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceFragmentShaderBarycentricFeaturesNV ) == sizeof( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT - { - protected: - PhysicalDeviceFragmentShaderInterlockFeaturesEXT( vk::Bool32 fragmentShaderSampleInterlock_ = 0, - vk::Bool32 fragmentShaderPixelInterlock_ = 0, - vk::Bool32 fragmentShaderShadingRateInterlock_ = 0 ) - : fragmentShaderSampleInterlock( fragmentShaderSampleInterlock_ ) - , fragmentShaderPixelInterlock( fragmentShaderPixelInterlock_ ) - , fragmentShaderShadingRateInterlock( fragmentShaderShadingRateInterlock_ ) - {} - - PhysicalDeviceFragmentShaderInterlockFeaturesEXT( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceFragmentShaderInterlockFeaturesEXT& operator=( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 fragmentShaderSampleInterlock; - vk::Bool32 fragmentShaderPixelInterlock; - vk::Bool32 fragmentShaderShadingRateInterlock; - }; - static_assert( sizeof( PhysicalDeviceFragmentShaderInterlockFeaturesEXT ) == sizeof( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT : public layout::PhysicalDeviceFragmentShaderInterlockFeaturesEXT - { - PhysicalDeviceFragmentShaderInterlockFeaturesEXT( vk::Bool32 fragmentShaderSampleInterlock_ = 0, - vk::Bool32 fragmentShaderPixelInterlock_ = 0, - vk::Bool32 fragmentShaderShadingRateInterlock_ = 0 ) - : layout::PhysicalDeviceFragmentShaderInterlockFeaturesEXT( fragmentShaderSampleInterlock_, fragmentShaderPixelInterlock_, fragmentShaderShadingRateInterlock_ ) - {} - - PhysicalDeviceFragmentShaderInterlockFeaturesEXT( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) - : layout::PhysicalDeviceFragmentShaderInterlockFeaturesEXT( rhs ) - {} - - PhysicalDeviceFragmentShaderInterlockFeaturesEXT& operator=( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setFragmentShaderSampleInterlock( vk::Bool32 fragmentShaderSampleInterlock_ ) - { - fragmentShaderSampleInterlock = fragmentShaderSampleInterlock_; - return *this; - } - - PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setFragmentShaderPixelInterlock( vk::Bool32 fragmentShaderPixelInterlock_ ) - { - fragmentShaderPixelInterlock = fragmentShaderPixelInterlock_; - return *this; - } - - PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setFragmentShaderShadingRateInterlock( vk::Bool32 fragmentShaderShadingRateInterlock_ ) - { - fragmentShaderShadingRateInterlock = fragmentShaderShadingRateInterlock_; - return *this; - } - - operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fragmentShaderSampleInterlock == rhs.fragmentShaderSampleInterlock ) - && ( fragmentShaderPixelInterlock == rhs.fragmentShaderPixelInterlock ) - && ( fragmentShaderShadingRateInterlock == rhs.fragmentShaderShadingRateInterlock ); - } - - bool operator!=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceFragmentShaderInterlockFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceFragmentShaderInterlockFeaturesEXT ) == sizeof( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceGroupProperties - { - protected: - PhysicalDeviceGroupProperties( uint32_t physicalDeviceCount_ = 0, - std::array const& physicalDevices_ = { { vk::PhysicalDevice() } }, - vk::Bool32 subsetAllocation_ = 0 ) - : physicalDeviceCount( physicalDeviceCount_ ) - , subsetAllocation( subsetAllocation_ ) - { - memcpy( &physicalDevices, physicalDevices_.data(), VK_MAX_DEVICE_GROUP_SIZE * sizeof( vk::PhysicalDevice ) ); - - } - - PhysicalDeviceGroupProperties( VkPhysicalDeviceGroupProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceGroupProperties& operator=( VkPhysicalDeviceGroupProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceGroupProperties; - void* pNext = nullptr; - uint32_t physicalDeviceCount; - vk::PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE]; - vk::Bool32 subsetAllocation; - }; - static_assert( sizeof( PhysicalDeviceGroupProperties ) == sizeof( VkPhysicalDeviceGroupProperties ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceGroupProperties : public layout::PhysicalDeviceGroupProperties - { - operator VkPhysicalDeviceGroupProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceGroupProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceGroupProperties const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( physicalDeviceCount == rhs.physicalDeviceCount ) - && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE * sizeof( vk::PhysicalDevice ) ) == 0 ) - && ( subsetAllocation == rhs.subsetAllocation ); - } - - bool operator!=( PhysicalDeviceGroupProperties const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceGroupProperties::sType; - }; - static_assert( sizeof( PhysicalDeviceGroupProperties ) == sizeof( VkPhysicalDeviceGroupProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceHostQueryResetFeaturesEXT - { - protected: - PhysicalDeviceHostQueryResetFeaturesEXT( vk::Bool32 hostQueryReset_ = 0 ) - : hostQueryReset( hostQueryReset_ ) - {} - - PhysicalDeviceHostQueryResetFeaturesEXT( VkPhysicalDeviceHostQueryResetFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceHostQueryResetFeaturesEXT& operator=( VkPhysicalDeviceHostQueryResetFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceHostQueryResetFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 hostQueryReset; - }; - static_assert( sizeof( PhysicalDeviceHostQueryResetFeaturesEXT ) == sizeof( VkPhysicalDeviceHostQueryResetFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceHostQueryResetFeaturesEXT : public layout::PhysicalDeviceHostQueryResetFeaturesEXT - { - PhysicalDeviceHostQueryResetFeaturesEXT( vk::Bool32 hostQueryReset_ = 0 ) - : layout::PhysicalDeviceHostQueryResetFeaturesEXT( hostQueryReset_ ) - {} - - PhysicalDeviceHostQueryResetFeaturesEXT( VkPhysicalDeviceHostQueryResetFeaturesEXT const & rhs ) - : layout::PhysicalDeviceHostQueryResetFeaturesEXT( rhs ) - {} - - PhysicalDeviceHostQueryResetFeaturesEXT& operator=( VkPhysicalDeviceHostQueryResetFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceHostQueryResetFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceHostQueryResetFeaturesEXT & setHostQueryReset( vk::Bool32 hostQueryReset_ ) - { - hostQueryReset = hostQueryReset_; - return *this; - } - - operator VkPhysicalDeviceHostQueryResetFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceHostQueryResetFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceHostQueryResetFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( hostQueryReset == rhs.hostQueryReset ); - } - - bool operator!=( PhysicalDeviceHostQueryResetFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceHostQueryResetFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceHostQueryResetFeaturesEXT ) == sizeof( VkPhysicalDeviceHostQueryResetFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceIDProperties - { - protected: - PhysicalDeviceIDProperties( std::array const& deviceUUID_ = { { 0 } }, - std::array const& driverUUID_ = { { 0 } }, - std::array const& deviceLUID_ = { { 0 } }, - uint32_t deviceNodeMask_ = 0, - vk::Bool32 deviceLUIDValid_ = 0 ) - : deviceNodeMask( deviceNodeMask_ ) - , deviceLUIDValid( deviceLUIDValid_ ) - { - memcpy( &deviceUUID, deviceUUID_.data(), VK_UUID_SIZE * sizeof( uint8_t ) ); - memcpy( &driverUUID, driverUUID_.data(), VK_UUID_SIZE * sizeof( uint8_t ) ); - memcpy( &deviceLUID, deviceLUID_.data(), VK_LUID_SIZE * sizeof( uint8_t ) ); - - } - - PhysicalDeviceIDProperties( VkPhysicalDeviceIDProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceIDProperties& operator=( VkPhysicalDeviceIDProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceIdProperties; - void* pNext = nullptr; - uint8_t deviceUUID[VK_UUID_SIZE]; - uint8_t driverUUID[VK_UUID_SIZE]; - uint8_t deviceLUID[VK_LUID_SIZE]; - uint32_t deviceNodeMask; - vk::Bool32 deviceLUIDValid; - }; - static_assert( sizeof( PhysicalDeviceIDProperties ) == sizeof( VkPhysicalDeviceIDProperties ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceIDProperties : public layout::PhysicalDeviceIDProperties - { - operator VkPhysicalDeviceIDProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceIDProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceIDProperties const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 ) - && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 ) - && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE * sizeof( uint8_t ) ) == 0 ) - && ( deviceNodeMask == rhs.deviceNodeMask ) - && ( deviceLUIDValid == rhs.deviceLUIDValid ); - } - - bool operator!=( PhysicalDeviceIDProperties const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceIDProperties::sType; - }; - static_assert( sizeof( PhysicalDeviceIDProperties ) == sizeof( VkPhysicalDeviceIDProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceImageDrmFormatModifierInfoEXT - { - protected: - PhysicalDeviceImageDrmFormatModifierInfoEXT( uint64_t drmFormatModifier_ = 0, - vk::SharingMode sharingMode_ = vk::SharingMode::eExclusive, - uint32_t queueFamilyIndexCount_ = 0, - const uint32_t* pQueueFamilyIndices_ = nullptr ) - : drmFormatModifier( drmFormatModifier_ ) - , sharingMode( sharingMode_ ) - , queueFamilyIndexCount( queueFamilyIndexCount_ ) - , pQueueFamilyIndices( pQueueFamilyIndices_ ) - {} - - PhysicalDeviceImageDrmFormatModifierInfoEXT( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceImageDrmFormatModifierInfoEXT& operator=( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT; - const void* pNext = nullptr; - uint64_t drmFormatModifier; - vk::SharingMode sharingMode; - uint32_t queueFamilyIndexCount; - const uint32_t* pQueueFamilyIndices; - }; - static_assert( sizeof( PhysicalDeviceImageDrmFormatModifierInfoEXT ) == sizeof( VkPhysicalDeviceImageDrmFormatModifierInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceImageDrmFormatModifierInfoEXT : public layout::PhysicalDeviceImageDrmFormatModifierInfoEXT - { - PhysicalDeviceImageDrmFormatModifierInfoEXT( uint64_t drmFormatModifier_ = 0, - vk::SharingMode sharingMode_ = vk::SharingMode::eExclusive, - uint32_t queueFamilyIndexCount_ = 0, - const uint32_t* pQueueFamilyIndices_ = nullptr ) - : layout::PhysicalDeviceImageDrmFormatModifierInfoEXT( drmFormatModifier_, sharingMode_, queueFamilyIndexCount_, pQueueFamilyIndices_ ) - {} - - PhysicalDeviceImageDrmFormatModifierInfoEXT( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) - : layout::PhysicalDeviceImageDrmFormatModifierInfoEXT( rhs ) - {} - - PhysicalDeviceImageDrmFormatModifierInfoEXT& operator=( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceImageDrmFormatModifierInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceImageDrmFormatModifierInfoEXT & setDrmFormatModifier( uint64_t drmFormatModifier_ ) - { - drmFormatModifier = drmFormatModifier_; - return *this; - } - - PhysicalDeviceImageDrmFormatModifierInfoEXT & setSharingMode( vk::SharingMode sharingMode_ ) - { - sharingMode = sharingMode_; - return *this; - } - - PhysicalDeviceImageDrmFormatModifierInfoEXT & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) - { - queueFamilyIndexCount = queueFamilyIndexCount_; - return *this; - } - - PhysicalDeviceImageDrmFormatModifierInfoEXT & setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ ) - { - pQueueFamilyIndices = pQueueFamilyIndices_; - return *this; - } - - operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceImageDrmFormatModifierInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( drmFormatModifier == rhs.drmFormatModifier ) - && ( sharingMode == rhs.sharingMode ) - && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) - && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ); - } - - bool operator!=( PhysicalDeviceImageDrmFormatModifierInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceImageDrmFormatModifierInfoEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceImageDrmFormatModifierInfoEXT ) == sizeof( VkPhysicalDeviceImageDrmFormatModifierInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceImageFormatInfo2 - { - protected: - PhysicalDeviceImageFormatInfo2( vk::Format format_ = vk::Format::eUndefined, - vk::ImageType type_ = vk::ImageType::e1D, - vk::ImageTiling tiling_ = vk::ImageTiling::eOptimal, - vk::ImageUsageFlags usage_ = vk::ImageUsageFlags(), - vk::ImageCreateFlags flags_ = vk::ImageCreateFlags() ) - : format( format_ ) - , type( type_ ) - , tiling( tiling_ ) - , usage( usage_ ) - , flags( flags_ ) - {} - - PhysicalDeviceImageFormatInfo2( VkPhysicalDeviceImageFormatInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceImageFormatInfo2& operator=( VkPhysicalDeviceImageFormatInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceImageFormatInfo2; - const void* pNext = nullptr; - vk::Format format; - vk::ImageType type; - vk::ImageTiling tiling; - vk::ImageUsageFlags usage; - vk::ImageCreateFlags flags; - }; - static_assert( sizeof( PhysicalDeviceImageFormatInfo2 ) == sizeof( VkPhysicalDeviceImageFormatInfo2 ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceImageFormatInfo2 : public layout::PhysicalDeviceImageFormatInfo2 - { - PhysicalDeviceImageFormatInfo2( vk::Format format_ = vk::Format::eUndefined, - vk::ImageType type_ = vk::ImageType::e1D, - vk::ImageTiling tiling_ = vk::ImageTiling::eOptimal, - vk::ImageUsageFlags usage_ = vk::ImageUsageFlags(), - vk::ImageCreateFlags flags_ = vk::ImageCreateFlags() ) - : layout::PhysicalDeviceImageFormatInfo2( format_, type_, tiling_, usage_, flags_ ) - {} - - PhysicalDeviceImageFormatInfo2( VkPhysicalDeviceImageFormatInfo2 const & rhs ) - : layout::PhysicalDeviceImageFormatInfo2( rhs ) - {} - - PhysicalDeviceImageFormatInfo2& operator=( VkPhysicalDeviceImageFormatInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceImageFormatInfo2 & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceImageFormatInfo2 & setFormat( vk::Format format_ ) - { - format = format_; - return *this; - } - - PhysicalDeviceImageFormatInfo2 & setType( vk::ImageType type_ ) - { - type = type_; - return *this; - } - - PhysicalDeviceImageFormatInfo2 & setTiling( vk::ImageTiling tiling_ ) - { - tiling = tiling_; - return *this; - } - - PhysicalDeviceImageFormatInfo2 & setUsage( vk::ImageUsageFlags usage_ ) - { - usage = usage_; - return *this; - } - - PhysicalDeviceImageFormatInfo2 & setFlags( vk::ImageCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - operator VkPhysicalDeviceImageFormatInfo2 const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceImageFormatInfo2 &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceImageFormatInfo2 const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( format == rhs.format ) - && ( type == rhs.type ) - && ( tiling == rhs.tiling ) - && ( usage == rhs.usage ) - && ( flags == rhs.flags ); - } - - bool operator!=( PhysicalDeviceImageFormatInfo2 const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceImageFormatInfo2::sType; - }; - static_assert( sizeof( PhysicalDeviceImageFormatInfo2 ) == sizeof( VkPhysicalDeviceImageFormatInfo2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceImageViewImageFormatInfoEXT - { - protected: - PhysicalDeviceImageViewImageFormatInfoEXT( vk::ImageViewType imageViewType_ = vk::ImageViewType::e1D ) - : imageViewType( imageViewType_ ) - {} - - PhysicalDeviceImageViewImageFormatInfoEXT( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceImageViewImageFormatInfoEXT& operator=( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT; - void* pNext = nullptr; - vk::ImageViewType imageViewType; - }; - static_assert( sizeof( PhysicalDeviceImageViewImageFormatInfoEXT ) == sizeof( VkPhysicalDeviceImageViewImageFormatInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceImageViewImageFormatInfoEXT : public layout::PhysicalDeviceImageViewImageFormatInfoEXT - { - PhysicalDeviceImageViewImageFormatInfoEXT( vk::ImageViewType imageViewType_ = vk::ImageViewType::e1D ) - : layout::PhysicalDeviceImageViewImageFormatInfoEXT( imageViewType_ ) - {} - - PhysicalDeviceImageViewImageFormatInfoEXT( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) - : layout::PhysicalDeviceImageViewImageFormatInfoEXT( rhs ) - {} - - PhysicalDeviceImageViewImageFormatInfoEXT& operator=( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceImageViewImageFormatInfoEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceImageViewImageFormatInfoEXT & setImageViewType( vk::ImageViewType imageViewType_ ) - { - imageViewType = imageViewType_; - return *this; - } - - operator VkPhysicalDeviceImageViewImageFormatInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceImageViewImageFormatInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceImageViewImageFormatInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( imageViewType == rhs.imageViewType ); - } - - bool operator!=( PhysicalDeviceImageViewImageFormatInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceImageViewImageFormatInfoEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceImageViewImageFormatInfoEXT ) == sizeof( VkPhysicalDeviceImageViewImageFormatInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceImagelessFramebufferFeaturesKHR - { - protected: - PhysicalDeviceImagelessFramebufferFeaturesKHR( vk::Bool32 imagelessFramebuffer_ = 0 ) - : imagelessFramebuffer( imagelessFramebuffer_ ) - {} - - PhysicalDeviceImagelessFramebufferFeaturesKHR( VkPhysicalDeviceImagelessFramebufferFeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceImagelessFramebufferFeaturesKHR& operator=( VkPhysicalDeviceImagelessFramebufferFeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceImagelessFramebufferFeaturesKHR; - void* pNext = nullptr; - vk::Bool32 imagelessFramebuffer; - }; - static_assert( sizeof( PhysicalDeviceImagelessFramebufferFeaturesKHR ) == sizeof( VkPhysicalDeviceImagelessFramebufferFeaturesKHR ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceImagelessFramebufferFeaturesKHR : public layout::PhysicalDeviceImagelessFramebufferFeaturesKHR - { - PhysicalDeviceImagelessFramebufferFeaturesKHR( vk::Bool32 imagelessFramebuffer_ = 0 ) - : layout::PhysicalDeviceImagelessFramebufferFeaturesKHR( imagelessFramebuffer_ ) - {} - - PhysicalDeviceImagelessFramebufferFeaturesKHR( VkPhysicalDeviceImagelessFramebufferFeaturesKHR const & rhs ) - : layout::PhysicalDeviceImagelessFramebufferFeaturesKHR( rhs ) - {} - - PhysicalDeviceImagelessFramebufferFeaturesKHR& operator=( VkPhysicalDeviceImagelessFramebufferFeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceImagelessFramebufferFeaturesKHR & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceImagelessFramebufferFeaturesKHR & setImagelessFramebuffer( vk::Bool32 imagelessFramebuffer_ ) - { - imagelessFramebuffer = imagelessFramebuffer_; - return *this; - } - - operator VkPhysicalDeviceImagelessFramebufferFeaturesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceImagelessFramebufferFeaturesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceImagelessFramebufferFeaturesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( imagelessFramebuffer == rhs.imagelessFramebuffer ); - } - - bool operator!=( PhysicalDeviceImagelessFramebufferFeaturesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceImagelessFramebufferFeaturesKHR::sType; - }; - static_assert( sizeof( PhysicalDeviceImagelessFramebufferFeaturesKHR ) == sizeof( VkPhysicalDeviceImagelessFramebufferFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceIndexTypeUint8FeaturesEXT - { - protected: - PhysicalDeviceIndexTypeUint8FeaturesEXT( vk::Bool32 indexTypeUint8_ = 0 ) - : indexTypeUint8( indexTypeUint8_ ) - {} - - PhysicalDeviceIndexTypeUint8FeaturesEXT( VkPhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceIndexTypeUint8FeaturesEXT& operator=( VkPhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT; - void* pNext = nullptr; - vk::Bool32 indexTypeUint8; - }; - static_assert( sizeof( PhysicalDeviceIndexTypeUint8FeaturesEXT ) == sizeof( VkPhysicalDeviceIndexTypeUint8FeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceIndexTypeUint8FeaturesEXT : public layout::PhysicalDeviceIndexTypeUint8FeaturesEXT - { - PhysicalDeviceIndexTypeUint8FeaturesEXT( vk::Bool32 indexTypeUint8_ = 0 ) - : layout::PhysicalDeviceIndexTypeUint8FeaturesEXT( indexTypeUint8_ ) - {} - - PhysicalDeviceIndexTypeUint8FeaturesEXT( VkPhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) - : layout::PhysicalDeviceIndexTypeUint8FeaturesEXT( rhs ) - {} - - PhysicalDeviceIndexTypeUint8FeaturesEXT& operator=( VkPhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceIndexTypeUint8FeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceIndexTypeUint8FeaturesEXT & setIndexTypeUint8( vk::Bool32 indexTypeUint8_ ) - { - indexTypeUint8 = indexTypeUint8_; - return *this; - } - - operator VkPhysicalDeviceIndexTypeUint8FeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceIndexTypeUint8FeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceIndexTypeUint8FeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( indexTypeUint8 == rhs.indexTypeUint8 ); - } - - bool operator!=( PhysicalDeviceIndexTypeUint8FeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceIndexTypeUint8FeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceIndexTypeUint8FeaturesEXT ) == sizeof( VkPhysicalDeviceIndexTypeUint8FeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceInlineUniformBlockFeaturesEXT - { - protected: - PhysicalDeviceInlineUniformBlockFeaturesEXT( vk::Bool32 inlineUniformBlock_ = 0, - vk::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ = 0 ) - : inlineUniformBlock( inlineUniformBlock_ ) - , descriptorBindingInlineUniformBlockUpdateAfterBind( descriptorBindingInlineUniformBlockUpdateAfterBind_ ) - {} - - PhysicalDeviceInlineUniformBlockFeaturesEXT( VkPhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceInlineUniformBlockFeaturesEXT& operator=( VkPhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 inlineUniformBlock; - vk::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind; - }; - static_assert( sizeof( PhysicalDeviceInlineUniformBlockFeaturesEXT ) == sizeof( VkPhysicalDeviceInlineUniformBlockFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceInlineUniformBlockFeaturesEXT : public layout::PhysicalDeviceInlineUniformBlockFeaturesEXT - { - PhysicalDeviceInlineUniformBlockFeaturesEXT( vk::Bool32 inlineUniformBlock_ = 0, - vk::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ = 0 ) - : layout::PhysicalDeviceInlineUniformBlockFeaturesEXT( inlineUniformBlock_, descriptorBindingInlineUniformBlockUpdateAfterBind_ ) - {} - - PhysicalDeviceInlineUniformBlockFeaturesEXT( VkPhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) - : layout::PhysicalDeviceInlineUniformBlockFeaturesEXT( rhs ) - {} - - PhysicalDeviceInlineUniformBlockFeaturesEXT& operator=( VkPhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceInlineUniformBlockFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceInlineUniformBlockFeaturesEXT & setInlineUniformBlock( vk::Bool32 inlineUniformBlock_ ) - { - inlineUniformBlock = inlineUniformBlock_; - return *this; - } - - PhysicalDeviceInlineUniformBlockFeaturesEXT & setDescriptorBindingInlineUniformBlockUpdateAfterBind( vk::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ ) - { - descriptorBindingInlineUniformBlockUpdateAfterBind = descriptorBindingInlineUniformBlockUpdateAfterBind_; - return *this; - } - - operator VkPhysicalDeviceInlineUniformBlockFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceInlineUniformBlockFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceInlineUniformBlockFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( inlineUniformBlock == rhs.inlineUniformBlock ) - && ( descriptorBindingInlineUniformBlockUpdateAfterBind == rhs.descriptorBindingInlineUniformBlockUpdateAfterBind ); - } - - bool operator!=( PhysicalDeviceInlineUniformBlockFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceInlineUniformBlockFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceInlineUniformBlockFeaturesEXT ) == sizeof( VkPhysicalDeviceInlineUniformBlockFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceInlineUniformBlockPropertiesEXT - { - protected: - PhysicalDeviceInlineUniformBlockPropertiesEXT( uint32_t maxInlineUniformBlockSize_ = 0, - uint32_t maxPerStageDescriptorInlineUniformBlocks_ = 0, - uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ = 0, - uint32_t maxDescriptorSetInlineUniformBlocks_ = 0, - uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ = 0 ) - : maxInlineUniformBlockSize( maxInlineUniformBlockSize_ ) - , maxPerStageDescriptorInlineUniformBlocks( maxPerStageDescriptorInlineUniformBlocks_ ) - , maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ ) - , maxDescriptorSetInlineUniformBlocks( maxDescriptorSetInlineUniformBlocks_ ) - , maxDescriptorSetUpdateAfterBindInlineUniformBlocks( maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ ) - {} - - PhysicalDeviceInlineUniformBlockPropertiesEXT( VkPhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceInlineUniformBlockPropertiesEXT& operator=( VkPhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockPropertiesEXT; - void* pNext = nullptr; - uint32_t maxInlineUniformBlockSize; - uint32_t maxPerStageDescriptorInlineUniformBlocks; - uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; - uint32_t maxDescriptorSetInlineUniformBlocks; - uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; - }; - static_assert( sizeof( PhysicalDeviceInlineUniformBlockPropertiesEXT ) == sizeof( VkPhysicalDeviceInlineUniformBlockPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceInlineUniformBlockPropertiesEXT : public layout::PhysicalDeviceInlineUniformBlockPropertiesEXT - { - operator VkPhysicalDeviceInlineUniformBlockPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceInlineUniformBlockPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceInlineUniformBlockPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxInlineUniformBlockSize == rhs.maxInlineUniformBlockSize ) - && ( maxPerStageDescriptorInlineUniformBlocks == rhs.maxPerStageDescriptorInlineUniformBlocks ) - && ( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks == rhs.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks ) - && ( maxDescriptorSetInlineUniformBlocks == rhs.maxDescriptorSetInlineUniformBlocks ) - && ( maxDescriptorSetUpdateAfterBindInlineUniformBlocks == rhs.maxDescriptorSetUpdateAfterBindInlineUniformBlocks ); - } - - bool operator!=( PhysicalDeviceInlineUniformBlockPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceInlineUniformBlockPropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceInlineUniformBlockPropertiesEXT ) == sizeof( VkPhysicalDeviceInlineUniformBlockPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PhysicalDeviceLimits - { - operator VkPhysicalDeviceLimits const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceLimits &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceLimits const& rhs ) const - { - return ( maxImageDimension1D == rhs.maxImageDimension1D ) - && ( maxImageDimension2D == rhs.maxImageDimension2D ) - && ( maxImageDimension3D == rhs.maxImageDimension3D ) - && ( maxImageDimensionCube == rhs.maxImageDimensionCube ) - && ( maxImageArrayLayers == rhs.maxImageArrayLayers ) - && ( maxTexelBufferElements == rhs.maxTexelBufferElements ) - && ( maxUniformBufferRange == rhs.maxUniformBufferRange ) - && ( maxStorageBufferRange == rhs.maxStorageBufferRange ) - && ( maxPushConstantsSize == rhs.maxPushConstantsSize ) - && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount ) - && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount ) - && ( bufferImageGranularity == rhs.bufferImageGranularity ) - && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize ) - && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets ) - && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers ) - && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers ) - && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers ) - && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages ) - && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages ) - && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments ) - && ( maxPerStageResources == rhs.maxPerStageResources ) - && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers ) - && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers ) - && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic ) - && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers ) - && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic ) - && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages ) - && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages ) - && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments ) - && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes ) - && ( maxVertexInputBindings == rhs.maxVertexInputBindings ) - && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset ) - && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride ) - && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents ) - && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel ) - && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize ) - && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents ) - && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents ) - && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents ) - && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents ) - && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents ) - && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents ) - && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations ) - && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents ) - && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents ) - && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices ) - && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents ) - && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents ) - && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments ) - && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments ) - && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources ) - && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize ) - && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 ) - && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations ) - && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 ) - && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits ) - && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits ) - && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits ) - && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue ) - && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount ) - && ( maxSamplerLodBias == rhs.maxSamplerLodBias ) - && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy ) - && ( maxViewports == rhs.maxViewports ) - && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 ) - && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 ) - && ( viewportSubPixelBits == rhs.viewportSubPixelBits ) - && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment ) - && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment ) - && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment ) - && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment ) - && ( minTexelOffset == rhs.minTexelOffset ) - && ( maxTexelOffset == rhs.maxTexelOffset ) - && ( minTexelGatherOffset == rhs.minTexelGatherOffset ) - && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset ) - && ( minInterpolationOffset == rhs.minInterpolationOffset ) - && ( maxInterpolationOffset == rhs.maxInterpolationOffset ) - && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits ) - && ( maxFramebufferWidth == rhs.maxFramebufferWidth ) - && ( maxFramebufferHeight == rhs.maxFramebufferHeight ) - && ( maxFramebufferLayers == rhs.maxFramebufferLayers ) - && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts ) - && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts ) - && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts ) - && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts ) - && ( maxColorAttachments == rhs.maxColorAttachments ) - && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts ) - && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts ) - && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts ) - && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts ) - && ( storageImageSampleCounts == rhs.storageImageSampleCounts ) - && ( maxSampleMaskWords == rhs.maxSampleMaskWords ) - && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics ) - && ( timestampPeriod == rhs.timestampPeriod ) - && ( maxClipDistances == rhs.maxClipDistances ) - && ( maxCullDistances == rhs.maxCullDistances ) - && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances ) - && ( discreteQueuePriorities == rhs.discreteQueuePriorities ) - && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 ) - && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 ) - && ( pointSizeGranularity == rhs.pointSizeGranularity ) - && ( lineWidthGranularity == rhs.lineWidthGranularity ) - && ( strictLines == rhs.strictLines ) - && ( standardSampleLocations == rhs.standardSampleLocations ) - && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment ) - && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment ) - && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize ); - } - - bool operator!=( PhysicalDeviceLimits const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t maxImageDimension1D; - uint32_t maxImageDimension2D; - uint32_t maxImageDimension3D; - uint32_t maxImageDimensionCube; - uint32_t maxImageArrayLayers; - uint32_t maxTexelBufferElements; - uint32_t maxUniformBufferRange; - uint32_t maxStorageBufferRange; - uint32_t maxPushConstantsSize; - uint32_t maxMemoryAllocationCount; - uint32_t maxSamplerAllocationCount; - vk::DeviceSize bufferImageGranularity; - vk::DeviceSize sparseAddressSpaceSize; - uint32_t maxBoundDescriptorSets; - uint32_t maxPerStageDescriptorSamplers; - uint32_t maxPerStageDescriptorUniformBuffers; - uint32_t maxPerStageDescriptorStorageBuffers; - uint32_t maxPerStageDescriptorSampledImages; - uint32_t maxPerStageDescriptorStorageImages; - uint32_t maxPerStageDescriptorInputAttachments; - uint32_t maxPerStageResources; - uint32_t maxDescriptorSetSamplers; - uint32_t maxDescriptorSetUniformBuffers; - uint32_t maxDescriptorSetUniformBuffersDynamic; - uint32_t maxDescriptorSetStorageBuffers; - uint32_t maxDescriptorSetStorageBuffersDynamic; - uint32_t maxDescriptorSetSampledImages; - uint32_t maxDescriptorSetStorageImages; - uint32_t maxDescriptorSetInputAttachments; - uint32_t maxVertexInputAttributes; - uint32_t maxVertexInputBindings; - uint32_t maxVertexInputAttributeOffset; - uint32_t maxVertexInputBindingStride; - uint32_t maxVertexOutputComponents; - uint32_t maxTessellationGenerationLevel; - uint32_t maxTessellationPatchSize; - uint32_t maxTessellationControlPerVertexInputComponents; - uint32_t maxTessellationControlPerVertexOutputComponents; - uint32_t maxTessellationControlPerPatchOutputComponents; - uint32_t maxTessellationControlTotalOutputComponents; - uint32_t maxTessellationEvaluationInputComponents; - uint32_t maxTessellationEvaluationOutputComponents; - uint32_t maxGeometryShaderInvocations; - uint32_t maxGeometryInputComponents; - uint32_t maxGeometryOutputComponents; - uint32_t maxGeometryOutputVertices; - uint32_t maxGeometryTotalOutputComponents; - uint32_t maxFragmentInputComponents; - uint32_t maxFragmentOutputAttachments; - uint32_t maxFragmentDualSrcAttachments; - uint32_t maxFragmentCombinedOutputResources; - uint32_t maxComputeSharedMemorySize; - uint32_t maxComputeWorkGroupCount[3]; - uint32_t maxComputeWorkGroupInvocations; - uint32_t maxComputeWorkGroupSize[3]; - uint32_t subPixelPrecisionBits; - uint32_t subTexelPrecisionBits; - uint32_t mipmapPrecisionBits; - uint32_t maxDrawIndexedIndexValue; - uint32_t maxDrawIndirectCount; - float maxSamplerLodBias; - float maxSamplerAnisotropy; - uint32_t maxViewports; - uint32_t maxViewportDimensions[2]; - float viewportBoundsRange[2]; - uint32_t viewportSubPixelBits; - size_t minMemoryMapAlignment; - vk::DeviceSize minTexelBufferOffsetAlignment; - vk::DeviceSize minUniformBufferOffsetAlignment; - vk::DeviceSize minStorageBufferOffsetAlignment; - int32_t minTexelOffset; - uint32_t maxTexelOffset; - int32_t minTexelGatherOffset; - uint32_t maxTexelGatherOffset; - float minInterpolationOffset; - float maxInterpolationOffset; - uint32_t subPixelInterpolationOffsetBits; - uint32_t maxFramebufferWidth; - uint32_t maxFramebufferHeight; - uint32_t maxFramebufferLayers; - vk::SampleCountFlags framebufferColorSampleCounts; - vk::SampleCountFlags framebufferDepthSampleCounts; - vk::SampleCountFlags framebufferStencilSampleCounts; - vk::SampleCountFlags framebufferNoAttachmentsSampleCounts; - uint32_t maxColorAttachments; - vk::SampleCountFlags sampledImageColorSampleCounts; - vk::SampleCountFlags sampledImageIntegerSampleCounts; - vk::SampleCountFlags sampledImageDepthSampleCounts; - vk::SampleCountFlags sampledImageStencilSampleCounts; - vk::SampleCountFlags storageImageSampleCounts; - uint32_t maxSampleMaskWords; - vk::Bool32 timestampComputeAndGraphics; - float timestampPeriod; - uint32_t maxClipDistances; - uint32_t maxCullDistances; - uint32_t maxCombinedClipAndCullDistances; - uint32_t discreteQueuePriorities; - float pointSizeRange[2]; - float lineWidthRange[2]; - float pointSizeGranularity; - float lineWidthGranularity; - vk::Bool32 strictLines; - vk::Bool32 standardSampleLocations; - vk::DeviceSize optimalBufferCopyOffsetAlignment; - vk::DeviceSize optimalBufferCopyRowPitchAlignment; - vk::DeviceSize nonCoherentAtomSize; - }; - static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceLineRasterizationFeaturesEXT - { - protected: - PhysicalDeviceLineRasterizationFeaturesEXT( vk::Bool32 rectangularLines_ = 0, - vk::Bool32 bresenhamLines_ = 0, - vk::Bool32 smoothLines_ = 0, - vk::Bool32 stippledRectangularLines_ = 0, - vk::Bool32 stippledBresenhamLines_ = 0, - vk::Bool32 stippledSmoothLines_ = 0 ) - : rectangularLines( rectangularLines_ ) - , bresenhamLines( bresenhamLines_ ) - , smoothLines( smoothLines_ ) - , stippledRectangularLines( stippledRectangularLines_ ) - , stippledBresenhamLines( stippledBresenhamLines_ ) - , stippledSmoothLines( stippledSmoothLines_ ) - {} - - PhysicalDeviceLineRasterizationFeaturesEXT( VkPhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceLineRasterizationFeaturesEXT& operator=( VkPhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 rectangularLines; - vk::Bool32 bresenhamLines; - vk::Bool32 smoothLines; - vk::Bool32 stippledRectangularLines; - vk::Bool32 stippledBresenhamLines; - vk::Bool32 stippledSmoothLines; - }; - static_assert( sizeof( PhysicalDeviceLineRasterizationFeaturesEXT ) == sizeof( VkPhysicalDeviceLineRasterizationFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceLineRasterizationFeaturesEXT : public layout::PhysicalDeviceLineRasterizationFeaturesEXT - { - PhysicalDeviceLineRasterizationFeaturesEXT( vk::Bool32 rectangularLines_ = 0, - vk::Bool32 bresenhamLines_ = 0, - vk::Bool32 smoothLines_ = 0, - vk::Bool32 stippledRectangularLines_ = 0, - vk::Bool32 stippledBresenhamLines_ = 0, - vk::Bool32 stippledSmoothLines_ = 0 ) - : layout::PhysicalDeviceLineRasterizationFeaturesEXT( rectangularLines_, bresenhamLines_, smoothLines_, stippledRectangularLines_, stippledBresenhamLines_, stippledSmoothLines_ ) - {} - - PhysicalDeviceLineRasterizationFeaturesEXT( VkPhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) - : layout::PhysicalDeviceLineRasterizationFeaturesEXT( rhs ) - {} - - PhysicalDeviceLineRasterizationFeaturesEXT& operator=( VkPhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceLineRasterizationFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceLineRasterizationFeaturesEXT & setRectangularLines( vk::Bool32 rectangularLines_ ) - { - rectangularLines = rectangularLines_; - return *this; - } - - PhysicalDeviceLineRasterizationFeaturesEXT & setBresenhamLines( vk::Bool32 bresenhamLines_ ) - { - bresenhamLines = bresenhamLines_; - return *this; - } - - PhysicalDeviceLineRasterizationFeaturesEXT & setSmoothLines( vk::Bool32 smoothLines_ ) - { - smoothLines = smoothLines_; - return *this; - } - - PhysicalDeviceLineRasterizationFeaturesEXT & setStippledRectangularLines( vk::Bool32 stippledRectangularLines_ ) - { - stippledRectangularLines = stippledRectangularLines_; - return *this; - } - - PhysicalDeviceLineRasterizationFeaturesEXT & setStippledBresenhamLines( vk::Bool32 stippledBresenhamLines_ ) - { - stippledBresenhamLines = stippledBresenhamLines_; - return *this; - } - - PhysicalDeviceLineRasterizationFeaturesEXT & setStippledSmoothLines( vk::Bool32 stippledSmoothLines_ ) - { - stippledSmoothLines = stippledSmoothLines_; - return *this; - } - - operator VkPhysicalDeviceLineRasterizationFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceLineRasterizationFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceLineRasterizationFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( rectangularLines == rhs.rectangularLines ) - && ( bresenhamLines == rhs.bresenhamLines ) - && ( smoothLines == rhs.smoothLines ) - && ( stippledRectangularLines == rhs.stippledRectangularLines ) - && ( stippledBresenhamLines == rhs.stippledBresenhamLines ) - && ( stippledSmoothLines == rhs.stippledSmoothLines ); - } - - bool operator!=( PhysicalDeviceLineRasterizationFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceLineRasterizationFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceLineRasterizationFeaturesEXT ) == sizeof( VkPhysicalDeviceLineRasterizationFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceLineRasterizationPropertiesEXT - { - protected: - PhysicalDeviceLineRasterizationPropertiesEXT( uint32_t lineSubPixelPrecisionBits_ = 0 ) - : lineSubPixelPrecisionBits( lineSubPixelPrecisionBits_ ) - {} - - PhysicalDeviceLineRasterizationPropertiesEXT( VkPhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceLineRasterizationPropertiesEXT& operator=( VkPhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT; - void* pNext = nullptr; - uint32_t lineSubPixelPrecisionBits; - }; - static_assert( sizeof( PhysicalDeviceLineRasterizationPropertiesEXT ) == sizeof( VkPhysicalDeviceLineRasterizationPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceLineRasterizationPropertiesEXT : public layout::PhysicalDeviceLineRasterizationPropertiesEXT - { - operator VkPhysicalDeviceLineRasterizationPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceLineRasterizationPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceLineRasterizationPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( lineSubPixelPrecisionBits == rhs.lineSubPixelPrecisionBits ); - } - - bool operator!=( PhysicalDeviceLineRasterizationPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceLineRasterizationPropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceLineRasterizationPropertiesEXT ) == sizeof( VkPhysicalDeviceLineRasterizationPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceMaintenance3Properties - { - protected: - PhysicalDeviceMaintenance3Properties( uint32_t maxPerSetDescriptors_ = 0, - vk::DeviceSize maxMemoryAllocationSize_ = 0 ) - : maxPerSetDescriptors( maxPerSetDescriptors_ ) - , maxMemoryAllocationSize( maxMemoryAllocationSize_ ) - {} - - PhysicalDeviceMaintenance3Properties( VkPhysicalDeviceMaintenance3Properties const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceMaintenance3Properties& operator=( VkPhysicalDeviceMaintenance3Properties const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceMaintenance3Properties; - void* pNext = nullptr; - uint32_t maxPerSetDescriptors; - vk::DeviceSize maxMemoryAllocationSize; - }; - static_assert( sizeof( PhysicalDeviceMaintenance3Properties ) == sizeof( VkPhysicalDeviceMaintenance3Properties ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceMaintenance3Properties : public layout::PhysicalDeviceMaintenance3Properties - { - operator VkPhysicalDeviceMaintenance3Properties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceMaintenance3Properties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceMaintenance3Properties const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxPerSetDescriptors == rhs.maxPerSetDescriptors ) - && ( maxMemoryAllocationSize == rhs.maxMemoryAllocationSize ); - } - - bool operator!=( PhysicalDeviceMaintenance3Properties const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceMaintenance3Properties::sType; - }; - static_assert( sizeof( PhysicalDeviceMaintenance3Properties ) == sizeof( VkPhysicalDeviceMaintenance3Properties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceMemoryBudgetPropertiesEXT - { - protected: - PhysicalDeviceMemoryBudgetPropertiesEXT( std::array const& heapBudget_ = { { 0 } }, - std::array const& heapUsage_ = { { 0 } } ) - { - memcpy( &heapBudget, heapBudget_.data(), VK_MAX_MEMORY_HEAPS * sizeof( vk::DeviceSize ) ); - memcpy( &heapUsage, heapUsage_.data(), VK_MAX_MEMORY_HEAPS * sizeof( vk::DeviceSize ) ); - - } - - PhysicalDeviceMemoryBudgetPropertiesEXT( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceMemoryBudgetPropertiesEXT& operator=( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT; - void* pNext = nullptr; - vk::DeviceSize heapBudget[VK_MAX_MEMORY_HEAPS]; - vk::DeviceSize heapUsage[VK_MAX_MEMORY_HEAPS]; - }; - static_assert( sizeof( PhysicalDeviceMemoryBudgetPropertiesEXT ) == sizeof( VkPhysicalDeviceMemoryBudgetPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceMemoryBudgetPropertiesEXT : public layout::PhysicalDeviceMemoryBudgetPropertiesEXT - { - operator VkPhysicalDeviceMemoryBudgetPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceMemoryBudgetPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceMemoryBudgetPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memcmp( heapBudget, rhs.heapBudget, VK_MAX_MEMORY_HEAPS * sizeof( vk::DeviceSize ) ) == 0 ) - && ( memcmp( heapUsage, rhs.heapUsage, VK_MAX_MEMORY_HEAPS * sizeof( vk::DeviceSize ) ) == 0 ); - } - - bool operator!=( PhysicalDeviceMemoryBudgetPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceMemoryBudgetPropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceMemoryBudgetPropertiesEXT ) == sizeof( VkPhysicalDeviceMemoryBudgetPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceMemoryPriorityFeaturesEXT - { - protected: - PhysicalDeviceMemoryPriorityFeaturesEXT( vk::Bool32 memoryPriority_ = 0 ) - : memoryPriority( memoryPriority_ ) - {} - - PhysicalDeviceMemoryPriorityFeaturesEXT( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceMemoryPriorityFeaturesEXT& operator=( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 memoryPriority; - }; - static_assert( sizeof( PhysicalDeviceMemoryPriorityFeaturesEXT ) == sizeof( VkPhysicalDeviceMemoryPriorityFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceMemoryPriorityFeaturesEXT : public layout::PhysicalDeviceMemoryPriorityFeaturesEXT - { - PhysicalDeviceMemoryPriorityFeaturesEXT( vk::Bool32 memoryPriority_ = 0 ) - : layout::PhysicalDeviceMemoryPriorityFeaturesEXT( memoryPriority_ ) - {} - - PhysicalDeviceMemoryPriorityFeaturesEXT( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) - : layout::PhysicalDeviceMemoryPriorityFeaturesEXT( rhs ) - {} - - PhysicalDeviceMemoryPriorityFeaturesEXT& operator=( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceMemoryPriorityFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceMemoryPriorityFeaturesEXT & setMemoryPriority( vk::Bool32 memoryPriority_ ) - { - memoryPriority = memoryPriority_; - return *this; - } - - operator VkPhysicalDeviceMemoryPriorityFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceMemoryPriorityFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceMemoryPriorityFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memoryPriority == rhs.memoryPriority ); - } - - bool operator!=( PhysicalDeviceMemoryPriorityFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceMemoryPriorityFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceMemoryPriorityFeaturesEXT ) == sizeof( VkPhysicalDeviceMemoryPriorityFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PhysicalDeviceMemoryProperties - { - operator VkPhysicalDeviceMemoryProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceMemoryProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const - { - return ( memoryTypeCount == rhs.memoryTypeCount ) - && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( vk::MemoryType ) ) == 0 ) - && ( memoryHeapCount == rhs.memoryHeapCount ) - && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( vk::MemoryHeap ) ) == 0 ); - } - - bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t memoryTypeCount; - vk::MemoryType memoryTypes[VK_MAX_MEMORY_TYPES]; - uint32_t memoryHeapCount; - vk::MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS]; - }; - static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceMemoryProperties2 - { - protected: - PhysicalDeviceMemoryProperties2( vk::PhysicalDeviceMemoryProperties memoryProperties_ = vk::PhysicalDeviceMemoryProperties() ) - : memoryProperties( memoryProperties_ ) - {} - - PhysicalDeviceMemoryProperties2( VkPhysicalDeviceMemoryProperties2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceMemoryProperties2& operator=( VkPhysicalDeviceMemoryProperties2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceMemoryProperties2; - void* pNext = nullptr; - vk::PhysicalDeviceMemoryProperties memoryProperties; - }; - static_assert( sizeof( PhysicalDeviceMemoryProperties2 ) == sizeof( VkPhysicalDeviceMemoryProperties2 ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceMemoryProperties2 : public layout::PhysicalDeviceMemoryProperties2 - { - operator VkPhysicalDeviceMemoryProperties2 const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceMemoryProperties2 &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceMemoryProperties2 const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memoryProperties == rhs.memoryProperties ); - } - - bool operator!=( PhysicalDeviceMemoryProperties2 const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceMemoryProperties2::sType; - }; - static_assert( sizeof( PhysicalDeviceMemoryProperties2 ) == sizeof( VkPhysicalDeviceMemoryProperties2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceMeshShaderFeaturesNV - { - protected: - PhysicalDeviceMeshShaderFeaturesNV( vk::Bool32 taskShader_ = 0, - vk::Bool32 meshShader_ = 0 ) - : taskShader( taskShader_ ) - , meshShader( meshShader_ ) - {} - - PhysicalDeviceMeshShaderFeaturesNV( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceMeshShaderFeaturesNV& operator=( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceMeshShaderFeaturesNV; - void* pNext = nullptr; - vk::Bool32 taskShader; - vk::Bool32 meshShader; - }; - static_assert( sizeof( PhysicalDeviceMeshShaderFeaturesNV ) == sizeof( VkPhysicalDeviceMeshShaderFeaturesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceMeshShaderFeaturesNV : public layout::PhysicalDeviceMeshShaderFeaturesNV - { - PhysicalDeviceMeshShaderFeaturesNV( vk::Bool32 taskShader_ = 0, - vk::Bool32 meshShader_ = 0 ) - : layout::PhysicalDeviceMeshShaderFeaturesNV( taskShader_, meshShader_ ) - {} - - PhysicalDeviceMeshShaderFeaturesNV( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) - : layout::PhysicalDeviceMeshShaderFeaturesNV( rhs ) - {} - - PhysicalDeviceMeshShaderFeaturesNV& operator=( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceMeshShaderFeaturesNV & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceMeshShaderFeaturesNV & setTaskShader( vk::Bool32 taskShader_ ) - { - taskShader = taskShader_; - return *this; - } - - PhysicalDeviceMeshShaderFeaturesNV & setMeshShader( vk::Bool32 meshShader_ ) - { - meshShader = meshShader_; - return *this; - } - - operator VkPhysicalDeviceMeshShaderFeaturesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceMeshShaderFeaturesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceMeshShaderFeaturesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( taskShader == rhs.taskShader ) - && ( meshShader == rhs.meshShader ); - } - - bool operator!=( PhysicalDeviceMeshShaderFeaturesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceMeshShaderFeaturesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceMeshShaderFeaturesNV ) == sizeof( VkPhysicalDeviceMeshShaderFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceMeshShaderPropertiesNV - { - protected: - PhysicalDeviceMeshShaderPropertiesNV( uint32_t maxDrawMeshTasksCount_ = 0, - uint32_t maxTaskWorkGroupInvocations_ = 0, - std::array const& maxTaskWorkGroupSize_ = { { 0 } }, - uint32_t maxTaskTotalMemorySize_ = 0, - uint32_t maxTaskOutputCount_ = 0, - uint32_t maxMeshWorkGroupInvocations_ = 0, - std::array const& maxMeshWorkGroupSize_ = { { 0 } }, - uint32_t maxMeshTotalMemorySize_ = 0, - uint32_t maxMeshOutputVertices_ = 0, - uint32_t maxMeshOutputPrimitives_ = 0, - uint32_t maxMeshMultiviewViewCount_ = 0, - uint32_t meshOutputPerVertexGranularity_ = 0, - uint32_t meshOutputPerPrimitiveGranularity_ = 0 ) - : maxDrawMeshTasksCount( maxDrawMeshTasksCount_ ) - , maxTaskWorkGroupInvocations( maxTaskWorkGroupInvocations_ ) - , maxTaskTotalMemorySize( maxTaskTotalMemorySize_ ) - , maxTaskOutputCount( maxTaskOutputCount_ ) - , maxMeshWorkGroupInvocations( maxMeshWorkGroupInvocations_ ) - , maxMeshTotalMemorySize( maxMeshTotalMemorySize_ ) - , maxMeshOutputVertices( maxMeshOutputVertices_ ) - , maxMeshOutputPrimitives( maxMeshOutputPrimitives_ ) - , maxMeshMultiviewViewCount( maxMeshMultiviewViewCount_ ) - , meshOutputPerVertexGranularity( meshOutputPerVertexGranularity_ ) - , meshOutputPerPrimitiveGranularity( meshOutputPerPrimitiveGranularity_ ) - { - memcpy( &maxTaskWorkGroupSize, maxTaskWorkGroupSize_.data(), 3 * sizeof( uint32_t ) ); - memcpy( &maxMeshWorkGroupSize, maxMeshWorkGroupSize_.data(), 3 * sizeof( uint32_t ) ); - - } - - PhysicalDeviceMeshShaderPropertiesNV( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceMeshShaderPropertiesNV& operator=( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceMeshShaderPropertiesNV; - void* pNext = nullptr; - uint32_t maxDrawMeshTasksCount; - uint32_t maxTaskWorkGroupInvocations; - uint32_t maxTaskWorkGroupSize[3]; - uint32_t maxTaskTotalMemorySize; - uint32_t maxTaskOutputCount; - uint32_t maxMeshWorkGroupInvocations; - uint32_t maxMeshWorkGroupSize[3]; - uint32_t maxMeshTotalMemorySize; - uint32_t maxMeshOutputVertices; - uint32_t maxMeshOutputPrimitives; - uint32_t maxMeshMultiviewViewCount; - uint32_t meshOutputPerVertexGranularity; - uint32_t meshOutputPerPrimitiveGranularity; - }; - static_assert( sizeof( PhysicalDeviceMeshShaderPropertiesNV ) == sizeof( VkPhysicalDeviceMeshShaderPropertiesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceMeshShaderPropertiesNV : public layout::PhysicalDeviceMeshShaderPropertiesNV - { - operator VkPhysicalDeviceMeshShaderPropertiesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceMeshShaderPropertiesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceMeshShaderPropertiesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxDrawMeshTasksCount == rhs.maxDrawMeshTasksCount ) - && ( maxTaskWorkGroupInvocations == rhs.maxTaskWorkGroupInvocations ) - && ( memcmp( maxTaskWorkGroupSize, rhs.maxTaskWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 ) - && ( maxTaskTotalMemorySize == rhs.maxTaskTotalMemorySize ) - && ( maxTaskOutputCount == rhs.maxTaskOutputCount ) - && ( maxMeshWorkGroupInvocations == rhs.maxMeshWorkGroupInvocations ) - && ( memcmp( maxMeshWorkGroupSize, rhs.maxMeshWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 ) - && ( maxMeshTotalMemorySize == rhs.maxMeshTotalMemorySize ) - && ( maxMeshOutputVertices == rhs.maxMeshOutputVertices ) - && ( maxMeshOutputPrimitives == rhs.maxMeshOutputPrimitives ) - && ( maxMeshMultiviewViewCount == rhs.maxMeshMultiviewViewCount ) - && ( meshOutputPerVertexGranularity == rhs.meshOutputPerVertexGranularity ) - && ( meshOutputPerPrimitiveGranularity == rhs.meshOutputPerPrimitiveGranularity ); - } - - bool operator!=( PhysicalDeviceMeshShaderPropertiesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceMeshShaderPropertiesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceMeshShaderPropertiesNV ) == sizeof( VkPhysicalDeviceMeshShaderPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceMultiviewFeatures - { - protected: - PhysicalDeviceMultiviewFeatures( vk::Bool32 multiview_ = 0, - vk::Bool32 multiviewGeometryShader_ = 0, - vk::Bool32 multiviewTessellationShader_ = 0 ) - : multiview( multiview_ ) - , multiviewGeometryShader( multiviewGeometryShader_ ) - , multiviewTessellationShader( multiviewTessellationShader_ ) - {} - - PhysicalDeviceMultiviewFeatures( VkPhysicalDeviceMultiviewFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceMultiviewFeatures& operator=( VkPhysicalDeviceMultiviewFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceMultiviewFeatures; - void* pNext = nullptr; - vk::Bool32 multiview; - vk::Bool32 multiviewGeometryShader; - vk::Bool32 multiviewTessellationShader; - }; - static_assert( sizeof( PhysicalDeviceMultiviewFeatures ) == sizeof( VkPhysicalDeviceMultiviewFeatures ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceMultiviewFeatures : public layout::PhysicalDeviceMultiviewFeatures - { - PhysicalDeviceMultiviewFeatures( vk::Bool32 multiview_ = 0, - vk::Bool32 multiviewGeometryShader_ = 0, - vk::Bool32 multiviewTessellationShader_ = 0 ) - : layout::PhysicalDeviceMultiviewFeatures( multiview_, multiviewGeometryShader_, multiviewTessellationShader_ ) - {} - - PhysicalDeviceMultiviewFeatures( VkPhysicalDeviceMultiviewFeatures const & rhs ) - : layout::PhysicalDeviceMultiviewFeatures( rhs ) - {} - - PhysicalDeviceMultiviewFeatures& operator=( VkPhysicalDeviceMultiviewFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceMultiviewFeatures & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceMultiviewFeatures & setMultiview( vk::Bool32 multiview_ ) - { - multiview = multiview_; - return *this; - } - - PhysicalDeviceMultiviewFeatures & setMultiviewGeometryShader( vk::Bool32 multiviewGeometryShader_ ) - { - multiviewGeometryShader = multiviewGeometryShader_; - return *this; - } - - PhysicalDeviceMultiviewFeatures & setMultiviewTessellationShader( vk::Bool32 multiviewTessellationShader_ ) - { - multiviewTessellationShader = multiviewTessellationShader_; - return *this; - } - - operator VkPhysicalDeviceMultiviewFeatures const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceMultiviewFeatures &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceMultiviewFeatures const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( multiview == rhs.multiview ) - && ( multiviewGeometryShader == rhs.multiviewGeometryShader ) - && ( multiviewTessellationShader == rhs.multiviewTessellationShader ); - } - - bool operator!=( PhysicalDeviceMultiviewFeatures const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceMultiviewFeatures::sType; - }; - static_assert( sizeof( PhysicalDeviceMultiviewFeatures ) == sizeof( VkPhysicalDeviceMultiviewFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - { - protected: - PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( vk::Bool32 perViewPositionAllComponents_ = 0 ) - : perViewPositionAllComponents( perViewPositionAllComponents_ ) - {} - - PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& operator=( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; - void* pNext = nullptr; - vk::Bool32 perViewPositionAllComponents; - }; - static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX : public layout::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - { - operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents ); - } - - bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX::sType; - }; - static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceMultiviewProperties - { - protected: - PhysicalDeviceMultiviewProperties( uint32_t maxMultiviewViewCount_ = 0, - uint32_t maxMultiviewInstanceIndex_ = 0 ) - : maxMultiviewViewCount( maxMultiviewViewCount_ ) - , maxMultiviewInstanceIndex( maxMultiviewInstanceIndex_ ) - {} - - PhysicalDeviceMultiviewProperties( VkPhysicalDeviceMultiviewProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceMultiviewProperties& operator=( VkPhysicalDeviceMultiviewProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceMultiviewProperties; - void* pNext = nullptr; - uint32_t maxMultiviewViewCount; - uint32_t maxMultiviewInstanceIndex; - }; - static_assert( sizeof( PhysicalDeviceMultiviewProperties ) == sizeof( VkPhysicalDeviceMultiviewProperties ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceMultiviewProperties : public layout::PhysicalDeviceMultiviewProperties - { - operator VkPhysicalDeviceMultiviewProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceMultiviewProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceMultiviewProperties const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount ) - && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex ); - } - - bool operator!=( PhysicalDeviceMultiviewProperties const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceMultiviewProperties::sType; - }; - static_assert( sizeof( PhysicalDeviceMultiviewProperties ) == sizeof( VkPhysicalDeviceMultiviewProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDevicePCIBusInfoPropertiesEXT - { - protected: - PhysicalDevicePCIBusInfoPropertiesEXT( uint32_t pciDomain_ = 0, - uint32_t pciBus_ = 0, - uint32_t pciDevice_ = 0, - uint32_t pciFunction_ = 0 ) - : pciDomain( pciDomain_ ) - , pciBus( pciBus_ ) - , pciDevice( pciDevice_ ) - , pciFunction( pciFunction_ ) - {} - - PhysicalDevicePCIBusInfoPropertiesEXT( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDevicePCIBusInfoPropertiesEXT& operator=( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT; - void* pNext = nullptr; - uint32_t pciDomain; - uint32_t pciBus; - uint32_t pciDevice; - uint32_t pciFunction; - }; - static_assert( sizeof( PhysicalDevicePCIBusInfoPropertiesEXT ) == sizeof( VkPhysicalDevicePCIBusInfoPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDevicePCIBusInfoPropertiesEXT : public layout::PhysicalDevicePCIBusInfoPropertiesEXT - { - operator VkPhysicalDevicePCIBusInfoPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDevicePCIBusInfoPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDevicePCIBusInfoPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pciDomain == rhs.pciDomain ) - && ( pciBus == rhs.pciBus ) - && ( pciDevice == rhs.pciDevice ) - && ( pciFunction == rhs.pciFunction ); - } - - bool operator!=( PhysicalDevicePCIBusInfoPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDevicePCIBusInfoPropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDevicePCIBusInfoPropertiesEXT ) == sizeof( VkPhysicalDevicePCIBusInfoPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR - { - protected: - PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( vk::Bool32 pipelineExecutableInfo_ = 0 ) - : pipelineExecutableInfo( pipelineExecutableInfo_ ) - {} - - PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDevicePipelineExecutablePropertiesFeaturesKHR& operator=( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR; - void* pNext = nullptr; - vk::Bool32 pipelineExecutableInfo; - }; - static_assert( sizeof( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR ) == sizeof( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR : public layout::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR - { - PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( vk::Bool32 pipelineExecutableInfo_ = 0 ) - : layout::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( pipelineExecutableInfo_ ) - {} - - PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) - : layout::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( rhs ) - {} - - PhysicalDevicePipelineExecutablePropertiesFeaturesKHR& operator=( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & setPipelineExecutableInfo( vk::Bool32 pipelineExecutableInfo_ ) - { - pipelineExecutableInfo = pipelineExecutableInfo_; - return *this; - } - - operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pipelineExecutableInfo == rhs.pipelineExecutableInfo ); - } - - bool operator!=( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR::sType; - }; - static_assert( sizeof( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR ) == sizeof( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDevicePointClippingProperties - { - protected: - PhysicalDevicePointClippingProperties( vk::PointClippingBehavior pointClippingBehavior_ = vk::PointClippingBehavior::eAllClipPlanes ) - : pointClippingBehavior( pointClippingBehavior_ ) - {} - - PhysicalDevicePointClippingProperties( VkPhysicalDevicePointClippingProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDevicePointClippingProperties& operator=( VkPhysicalDevicePointClippingProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDevicePointClippingProperties; - void* pNext = nullptr; - vk::PointClippingBehavior pointClippingBehavior; - }; - static_assert( sizeof( PhysicalDevicePointClippingProperties ) == sizeof( VkPhysicalDevicePointClippingProperties ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDevicePointClippingProperties : public layout::PhysicalDevicePointClippingProperties - { - operator VkPhysicalDevicePointClippingProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDevicePointClippingProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDevicePointClippingProperties const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pointClippingBehavior == rhs.pointClippingBehavior ); - } - - bool operator!=( PhysicalDevicePointClippingProperties const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDevicePointClippingProperties::sType; - }; - static_assert( sizeof( PhysicalDevicePointClippingProperties ) == sizeof( VkPhysicalDevicePointClippingProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PhysicalDeviceSparseProperties - { - operator VkPhysicalDeviceSparseProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceSparseProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceSparseProperties const& rhs ) const - { - return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape ) - && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape ) - && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape ) - && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize ) - && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict ); - } - - bool operator!=( PhysicalDeviceSparseProperties const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::Bool32 residencyStandard2DBlockShape; - vk::Bool32 residencyStandard2DMultisampleBlockShape; - vk::Bool32 residencyStandard3DBlockShape; - vk::Bool32 residencyAlignedMipSize; - vk::Bool32 residencyNonResidentStrict; - }; - static_assert( sizeof( PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PhysicalDeviceProperties - { - operator VkPhysicalDeviceProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceProperties const& rhs ) const - { - return ( apiVersion == rhs.apiVersion ) - && ( driverVersion == rhs.driverVersion ) - && ( vendorID == rhs.vendorID ) - && ( deviceID == rhs.deviceID ) - && ( deviceType == rhs.deviceType ) - && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 ) - && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 ) - && ( limits == rhs.limits ) - && ( sparseProperties == rhs.sparseProperties ); - } - - bool operator!=( PhysicalDeviceProperties const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t apiVersion; - uint32_t driverVersion; - uint32_t vendorID; - uint32_t deviceID; - vk::PhysicalDeviceType deviceType; - char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE]; - uint8_t pipelineCacheUUID[VK_UUID_SIZE]; - vk::PhysicalDeviceLimits limits; - vk::PhysicalDeviceSparseProperties sparseProperties; - }; - static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceProperties2 - { - protected: - PhysicalDeviceProperties2( vk::PhysicalDeviceProperties properties_ = vk::PhysicalDeviceProperties() ) - : properties( properties_ ) - {} - - PhysicalDeviceProperties2( VkPhysicalDeviceProperties2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceProperties2& operator=( VkPhysicalDeviceProperties2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceProperties2; - void* pNext = nullptr; - vk::PhysicalDeviceProperties properties; - }; - static_assert( sizeof( PhysicalDeviceProperties2 ) == sizeof( VkPhysicalDeviceProperties2 ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceProperties2 : public layout::PhysicalDeviceProperties2 - { - operator VkPhysicalDeviceProperties2 const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceProperties2 &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceProperties2 const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( properties == rhs.properties ); - } - - bool operator!=( PhysicalDeviceProperties2 const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceProperties2::sType; - }; - static_assert( sizeof( PhysicalDeviceProperties2 ) == sizeof( VkPhysicalDeviceProperties2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceProtectedMemoryFeatures - { - protected: - PhysicalDeviceProtectedMemoryFeatures( vk::Bool32 protectedMemory_ = 0 ) - : protectedMemory( protectedMemory_ ) - {} - - PhysicalDeviceProtectedMemoryFeatures( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceProtectedMemoryFeatures& operator=( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryFeatures; - void* pNext = nullptr; - vk::Bool32 protectedMemory; - }; - static_assert( sizeof( PhysicalDeviceProtectedMemoryFeatures ) == sizeof( VkPhysicalDeviceProtectedMemoryFeatures ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceProtectedMemoryFeatures : public layout::PhysicalDeviceProtectedMemoryFeatures - { - PhysicalDeviceProtectedMemoryFeatures( vk::Bool32 protectedMemory_ = 0 ) - : layout::PhysicalDeviceProtectedMemoryFeatures( protectedMemory_ ) - {} - - PhysicalDeviceProtectedMemoryFeatures( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) - : layout::PhysicalDeviceProtectedMemoryFeatures( rhs ) - {} - - PhysicalDeviceProtectedMemoryFeatures& operator=( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceProtectedMemoryFeatures & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceProtectedMemoryFeatures & setProtectedMemory( vk::Bool32 protectedMemory_ ) - { - protectedMemory = protectedMemory_; - return *this; - } - - operator VkPhysicalDeviceProtectedMemoryFeatures const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceProtectedMemoryFeatures &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceProtectedMemoryFeatures const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( protectedMemory == rhs.protectedMemory ); - } - - bool operator!=( PhysicalDeviceProtectedMemoryFeatures const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceProtectedMemoryFeatures::sType; - }; - static_assert( sizeof( PhysicalDeviceProtectedMemoryFeatures ) == sizeof( VkPhysicalDeviceProtectedMemoryFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceProtectedMemoryProperties - { - protected: - PhysicalDeviceProtectedMemoryProperties( vk::Bool32 protectedNoFault_ = 0 ) - : protectedNoFault( protectedNoFault_ ) - {} - - PhysicalDeviceProtectedMemoryProperties( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceProtectedMemoryProperties& operator=( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryProperties; - void* pNext = nullptr; - vk::Bool32 protectedNoFault; - }; - static_assert( sizeof( PhysicalDeviceProtectedMemoryProperties ) == sizeof( VkPhysicalDeviceProtectedMemoryProperties ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceProtectedMemoryProperties : public layout::PhysicalDeviceProtectedMemoryProperties - { - operator VkPhysicalDeviceProtectedMemoryProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceProtectedMemoryProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceProtectedMemoryProperties const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( protectedNoFault == rhs.protectedNoFault ); - } - - bool operator!=( PhysicalDeviceProtectedMemoryProperties const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceProtectedMemoryProperties::sType; - }; - static_assert( sizeof( PhysicalDeviceProtectedMemoryProperties ) == sizeof( VkPhysicalDeviceProtectedMemoryProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDevicePushDescriptorPropertiesKHR - { - protected: - PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 ) - : maxPushDescriptors( maxPushDescriptors_ ) - {} - - PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDevicePushDescriptorPropertiesKHR; - void* pNext = nullptr; - uint32_t maxPushDescriptors; - }; - static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDevicePushDescriptorPropertiesKHR : public layout::PhysicalDevicePushDescriptorPropertiesKHR - { - operator VkPhysicalDevicePushDescriptorPropertiesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDevicePushDescriptorPropertiesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxPushDescriptors == rhs.maxPushDescriptors ); - } - - bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDevicePushDescriptorPropertiesKHR::sType; - }; - static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceRayTracingPropertiesNV - { - protected: - PhysicalDeviceRayTracingPropertiesNV( uint32_t shaderGroupHandleSize_ = 0, - uint32_t maxRecursionDepth_ = 0, - uint32_t maxShaderGroupStride_ = 0, - uint32_t shaderGroupBaseAlignment_ = 0, - uint64_t maxGeometryCount_ = 0, - uint64_t maxInstanceCount_ = 0, - uint64_t maxTriangleCount_ = 0, - uint32_t maxDescriptorSetAccelerationStructures_ = 0 ) - : shaderGroupHandleSize( shaderGroupHandleSize_ ) - , maxRecursionDepth( maxRecursionDepth_ ) - , maxShaderGroupStride( maxShaderGroupStride_ ) - , shaderGroupBaseAlignment( shaderGroupBaseAlignment_ ) - , maxGeometryCount( maxGeometryCount_ ) - , maxInstanceCount( maxInstanceCount_ ) - , maxTriangleCount( maxTriangleCount_ ) - , maxDescriptorSetAccelerationStructures( maxDescriptorSetAccelerationStructures_ ) - {} - - PhysicalDeviceRayTracingPropertiesNV( VkPhysicalDeviceRayTracingPropertiesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceRayTracingPropertiesNV& operator=( VkPhysicalDeviceRayTracingPropertiesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceRayTracingPropertiesNV; - void* pNext = nullptr; - uint32_t shaderGroupHandleSize; - uint32_t maxRecursionDepth; - uint32_t maxShaderGroupStride; - uint32_t shaderGroupBaseAlignment; - uint64_t maxGeometryCount; - uint64_t maxInstanceCount; - uint64_t maxTriangleCount; - uint32_t maxDescriptorSetAccelerationStructures; - }; - static_assert( sizeof( PhysicalDeviceRayTracingPropertiesNV ) == sizeof( VkPhysicalDeviceRayTracingPropertiesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceRayTracingPropertiesNV : public layout::PhysicalDeviceRayTracingPropertiesNV - { - operator VkPhysicalDeviceRayTracingPropertiesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceRayTracingPropertiesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceRayTracingPropertiesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderGroupHandleSize == rhs.shaderGroupHandleSize ) - && ( maxRecursionDepth == rhs.maxRecursionDepth ) - && ( maxShaderGroupStride == rhs.maxShaderGroupStride ) - && ( shaderGroupBaseAlignment == rhs.shaderGroupBaseAlignment ) - && ( maxGeometryCount == rhs.maxGeometryCount ) - && ( maxInstanceCount == rhs.maxInstanceCount ) - && ( maxTriangleCount == rhs.maxTriangleCount ) - && ( maxDescriptorSetAccelerationStructures == rhs.maxDescriptorSetAccelerationStructures ); - } - - bool operator!=( PhysicalDeviceRayTracingPropertiesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceRayTracingPropertiesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceRayTracingPropertiesNV ) == sizeof( VkPhysicalDeviceRayTracingPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV - { - protected: - PhysicalDeviceRepresentativeFragmentTestFeaturesNV( vk::Bool32 representativeFragmentTest_ = 0 ) - : representativeFragmentTest( representativeFragmentTest_ ) - {} - - PhysicalDeviceRepresentativeFragmentTestFeaturesNV( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceRepresentativeFragmentTestFeaturesNV& operator=( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV; - void* pNext = nullptr; - vk::Bool32 representativeFragmentTest; - }; - static_assert( sizeof( PhysicalDeviceRepresentativeFragmentTestFeaturesNV ) == sizeof( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV : public layout::PhysicalDeviceRepresentativeFragmentTestFeaturesNV - { - PhysicalDeviceRepresentativeFragmentTestFeaturesNV( vk::Bool32 representativeFragmentTest_ = 0 ) - : layout::PhysicalDeviceRepresentativeFragmentTestFeaturesNV( representativeFragmentTest_ ) - {} - - PhysicalDeviceRepresentativeFragmentTestFeaturesNV( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) - : layout::PhysicalDeviceRepresentativeFragmentTestFeaturesNV( rhs ) - {} - - PhysicalDeviceRepresentativeFragmentTestFeaturesNV& operator=( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceRepresentativeFragmentTestFeaturesNV & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceRepresentativeFragmentTestFeaturesNV & setRepresentativeFragmentTest( vk::Bool32 representativeFragmentTest_ ) - { - representativeFragmentTest = representativeFragmentTest_; - return *this; - } - - operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( representativeFragmentTest == rhs.representativeFragmentTest ); - } - - bool operator!=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceRepresentativeFragmentTestFeaturesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceRepresentativeFragmentTestFeaturesNV ) == sizeof( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceSampleLocationsPropertiesEXT - { - protected: - PhysicalDeviceSampleLocationsPropertiesEXT( vk::SampleCountFlags sampleLocationSampleCounts_ = vk::SampleCountFlags(), - vk::Extent2D maxSampleLocationGridSize_ = vk::Extent2D(), - std::array const& sampleLocationCoordinateRange_ = { { 0 } }, - uint32_t sampleLocationSubPixelBits_ = 0, - vk::Bool32 variableSampleLocations_ = 0 ) - : sampleLocationSampleCounts( sampleLocationSampleCounts_ ) - , maxSampleLocationGridSize( maxSampleLocationGridSize_ ) - , sampleLocationSubPixelBits( sampleLocationSubPixelBits_ ) - , variableSampleLocations( variableSampleLocations_ ) - { - memcpy( &sampleLocationCoordinateRange, sampleLocationCoordinateRange_.data(), 2 * sizeof( float ) ); - - } - - PhysicalDeviceSampleLocationsPropertiesEXT( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceSampleLocationsPropertiesEXT& operator=( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT; - void* pNext = nullptr; - vk::SampleCountFlags sampleLocationSampleCounts; - vk::Extent2D maxSampleLocationGridSize; - float sampleLocationCoordinateRange[2]; - uint32_t sampleLocationSubPixelBits; - vk::Bool32 variableSampleLocations; - }; - static_assert( sizeof( PhysicalDeviceSampleLocationsPropertiesEXT ) == sizeof( VkPhysicalDeviceSampleLocationsPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceSampleLocationsPropertiesEXT : public layout::PhysicalDeviceSampleLocationsPropertiesEXT - { - operator VkPhysicalDeviceSampleLocationsPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceSampleLocationsPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( sampleLocationSampleCounts == rhs.sampleLocationSampleCounts ) - && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize ) - && ( memcmp( sampleLocationCoordinateRange, rhs.sampleLocationCoordinateRange, 2 * sizeof( float ) ) == 0 ) - && ( sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits ) - && ( variableSampleLocations == rhs.variableSampleLocations ); - } - - bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceSampleLocationsPropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceSampleLocationsPropertiesEXT ) == sizeof( VkPhysicalDeviceSampleLocationsPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceSamplerFilterMinmaxPropertiesEXT - { - protected: - PhysicalDeviceSamplerFilterMinmaxPropertiesEXT( vk::Bool32 filterMinmaxSingleComponentFormats_ = 0, - vk::Bool32 filterMinmaxImageComponentMapping_ = 0 ) - : filterMinmaxSingleComponentFormats( filterMinmaxSingleComponentFormats_ ) - , filterMinmaxImageComponentMapping( filterMinmaxImageComponentMapping_ ) - {} - - PhysicalDeviceSamplerFilterMinmaxPropertiesEXT( VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceSamplerFilterMinmaxPropertiesEXT& operator=( VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT; - void* pNext = nullptr; - vk::Bool32 filterMinmaxSingleComponentFormats; - vk::Bool32 filterMinmaxImageComponentMapping; - }; - static_assert( sizeof( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT ) == sizeof( VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceSamplerFilterMinmaxPropertiesEXT : public layout::PhysicalDeviceSamplerFilterMinmaxPropertiesEXT - { - operator VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats ) - && ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping ); - } - - bool operator!=( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceSamplerFilterMinmaxPropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT ) == sizeof( VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceSamplerYcbcrConversionFeatures - { - protected: - PhysicalDeviceSamplerYcbcrConversionFeatures( vk::Bool32 samplerYcbcrConversion_ = 0 ) - : samplerYcbcrConversion( samplerYcbcrConversion_ ) - {} - - PhysicalDeviceSamplerYcbcrConversionFeatures( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceSamplerYcbcrConversionFeatures& operator=( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures; - void* pNext = nullptr; - vk::Bool32 samplerYcbcrConversion; - }; - static_assert( sizeof( PhysicalDeviceSamplerYcbcrConversionFeatures ) == sizeof( VkPhysicalDeviceSamplerYcbcrConversionFeatures ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceSamplerYcbcrConversionFeatures : public layout::PhysicalDeviceSamplerYcbcrConversionFeatures - { - PhysicalDeviceSamplerYcbcrConversionFeatures( vk::Bool32 samplerYcbcrConversion_ = 0 ) - : layout::PhysicalDeviceSamplerYcbcrConversionFeatures( samplerYcbcrConversion_ ) - {} - - PhysicalDeviceSamplerYcbcrConversionFeatures( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) - : layout::PhysicalDeviceSamplerYcbcrConversionFeatures( rhs ) - {} - - PhysicalDeviceSamplerYcbcrConversionFeatures& operator=( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceSamplerYcbcrConversionFeatures & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceSamplerYcbcrConversionFeatures & setSamplerYcbcrConversion( vk::Bool32 samplerYcbcrConversion_ ) - { - samplerYcbcrConversion = samplerYcbcrConversion_; - return *this; - } - - operator VkPhysicalDeviceSamplerYcbcrConversionFeatures const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceSamplerYcbcrConversionFeatures &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceSamplerYcbcrConversionFeatures const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion ); - } - - bool operator!=( PhysicalDeviceSamplerYcbcrConversionFeatures const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceSamplerYcbcrConversionFeatures::sType; - }; - static_assert( sizeof( PhysicalDeviceSamplerYcbcrConversionFeatures ) == sizeof( VkPhysicalDeviceSamplerYcbcrConversionFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceScalarBlockLayoutFeaturesEXT - { - protected: - PhysicalDeviceScalarBlockLayoutFeaturesEXT( vk::Bool32 scalarBlockLayout_ = 0 ) - : scalarBlockLayout( scalarBlockLayout_ ) - {} - - PhysicalDeviceScalarBlockLayoutFeaturesEXT( VkPhysicalDeviceScalarBlockLayoutFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceScalarBlockLayoutFeaturesEXT& operator=( VkPhysicalDeviceScalarBlockLayoutFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceScalarBlockLayoutFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 scalarBlockLayout; - }; - static_assert( sizeof( PhysicalDeviceScalarBlockLayoutFeaturesEXT ) == sizeof( VkPhysicalDeviceScalarBlockLayoutFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceScalarBlockLayoutFeaturesEXT : public layout::PhysicalDeviceScalarBlockLayoutFeaturesEXT - { - PhysicalDeviceScalarBlockLayoutFeaturesEXT( vk::Bool32 scalarBlockLayout_ = 0 ) - : layout::PhysicalDeviceScalarBlockLayoutFeaturesEXT( scalarBlockLayout_ ) - {} - - PhysicalDeviceScalarBlockLayoutFeaturesEXT( VkPhysicalDeviceScalarBlockLayoutFeaturesEXT const & rhs ) - : layout::PhysicalDeviceScalarBlockLayoutFeaturesEXT( rhs ) - {} - - PhysicalDeviceScalarBlockLayoutFeaturesEXT& operator=( VkPhysicalDeviceScalarBlockLayoutFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceScalarBlockLayoutFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceScalarBlockLayoutFeaturesEXT & setScalarBlockLayout( vk::Bool32 scalarBlockLayout_ ) - { - scalarBlockLayout = scalarBlockLayout_; - return *this; - } - - operator VkPhysicalDeviceScalarBlockLayoutFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceScalarBlockLayoutFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceScalarBlockLayoutFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( scalarBlockLayout == rhs.scalarBlockLayout ); - } - - bool operator!=( PhysicalDeviceScalarBlockLayoutFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceScalarBlockLayoutFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceScalarBlockLayoutFeaturesEXT ) == sizeof( VkPhysicalDeviceScalarBlockLayoutFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceShaderAtomicInt64FeaturesKHR - { - protected: - PhysicalDeviceShaderAtomicInt64FeaturesKHR( vk::Bool32 shaderBufferInt64Atomics_ = 0, - vk::Bool32 shaderSharedInt64Atomics_ = 0 ) - : shaderBufferInt64Atomics( shaderBufferInt64Atomics_ ) - , shaderSharedInt64Atomics( shaderSharedInt64Atomics_ ) - {} - - PhysicalDeviceShaderAtomicInt64FeaturesKHR( VkPhysicalDeviceShaderAtomicInt64FeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceShaderAtomicInt64FeaturesKHR& operator=( VkPhysicalDeviceShaderAtomicInt64FeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceShaderAtomicInt64FeaturesKHR; - void* pNext = nullptr; - vk::Bool32 shaderBufferInt64Atomics; - vk::Bool32 shaderSharedInt64Atomics; - }; - static_assert( sizeof( PhysicalDeviceShaderAtomicInt64FeaturesKHR ) == sizeof( VkPhysicalDeviceShaderAtomicInt64FeaturesKHR ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceShaderAtomicInt64FeaturesKHR : public layout::PhysicalDeviceShaderAtomicInt64FeaturesKHR - { - PhysicalDeviceShaderAtomicInt64FeaturesKHR( vk::Bool32 shaderBufferInt64Atomics_ = 0, - vk::Bool32 shaderSharedInt64Atomics_ = 0 ) - : layout::PhysicalDeviceShaderAtomicInt64FeaturesKHR( shaderBufferInt64Atomics_, shaderSharedInt64Atomics_ ) - {} - - PhysicalDeviceShaderAtomicInt64FeaturesKHR( VkPhysicalDeviceShaderAtomicInt64FeaturesKHR const & rhs ) - : layout::PhysicalDeviceShaderAtomicInt64FeaturesKHR( rhs ) - {} - - PhysicalDeviceShaderAtomicInt64FeaturesKHR& operator=( VkPhysicalDeviceShaderAtomicInt64FeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceShaderAtomicInt64FeaturesKHR & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderAtomicInt64FeaturesKHR & setShaderBufferInt64Atomics( vk::Bool32 shaderBufferInt64Atomics_ ) - { - shaderBufferInt64Atomics = shaderBufferInt64Atomics_; - return *this; - } - - PhysicalDeviceShaderAtomicInt64FeaturesKHR & setShaderSharedInt64Atomics( vk::Bool32 shaderSharedInt64Atomics_ ) - { - shaderSharedInt64Atomics = shaderSharedInt64Atomics_; - return *this; - } - - operator VkPhysicalDeviceShaderAtomicInt64FeaturesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceShaderAtomicInt64FeaturesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceShaderAtomicInt64FeaturesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderBufferInt64Atomics == rhs.shaderBufferInt64Atomics ) - && ( shaderSharedInt64Atomics == rhs.shaderSharedInt64Atomics ); - } - - bool operator!=( PhysicalDeviceShaderAtomicInt64FeaturesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceShaderAtomicInt64FeaturesKHR::sType; - }; - static_assert( sizeof( PhysicalDeviceShaderAtomicInt64FeaturesKHR ) == sizeof( VkPhysicalDeviceShaderAtomicInt64FeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceShaderCoreProperties2AMD - { - protected: - PhysicalDeviceShaderCoreProperties2AMD( vk::ShaderCorePropertiesFlagsAMD shaderCoreFeatures_ = vk::ShaderCorePropertiesFlagsAMD(), - uint32_t activeComputeUnitCount_ = 0 ) - : shaderCoreFeatures( shaderCoreFeatures_ ) - , activeComputeUnitCount( activeComputeUnitCount_ ) - {} - - PhysicalDeviceShaderCoreProperties2AMD( VkPhysicalDeviceShaderCoreProperties2AMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceShaderCoreProperties2AMD& operator=( VkPhysicalDeviceShaderCoreProperties2AMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceShaderCoreProperties2AMD; - void* pNext = nullptr; - vk::ShaderCorePropertiesFlagsAMD shaderCoreFeatures; - uint32_t activeComputeUnitCount; - }; - static_assert( sizeof( PhysicalDeviceShaderCoreProperties2AMD ) == sizeof( VkPhysicalDeviceShaderCoreProperties2AMD ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceShaderCoreProperties2AMD : public layout::PhysicalDeviceShaderCoreProperties2AMD - { - operator VkPhysicalDeviceShaderCoreProperties2AMD const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceShaderCoreProperties2AMD &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceShaderCoreProperties2AMD const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderCoreFeatures == rhs.shaderCoreFeatures ) - && ( activeComputeUnitCount == rhs.activeComputeUnitCount ); - } - - bool operator!=( PhysicalDeviceShaderCoreProperties2AMD const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceShaderCoreProperties2AMD::sType; - }; - static_assert( sizeof( PhysicalDeviceShaderCoreProperties2AMD ) == sizeof( VkPhysicalDeviceShaderCoreProperties2AMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceShaderCorePropertiesAMD - { - protected: - PhysicalDeviceShaderCorePropertiesAMD( uint32_t shaderEngineCount_ = 0, - uint32_t shaderArraysPerEngineCount_ = 0, - uint32_t computeUnitsPerShaderArray_ = 0, - uint32_t simdPerComputeUnit_ = 0, - uint32_t wavefrontsPerSimd_ = 0, - uint32_t wavefrontSize_ = 0, - uint32_t sgprsPerSimd_ = 0, - uint32_t minSgprAllocation_ = 0, - uint32_t maxSgprAllocation_ = 0, - uint32_t sgprAllocationGranularity_ = 0, - uint32_t vgprsPerSimd_ = 0, - uint32_t minVgprAllocation_ = 0, - uint32_t maxVgprAllocation_ = 0, - uint32_t vgprAllocationGranularity_ = 0 ) - : shaderEngineCount( shaderEngineCount_ ) - , shaderArraysPerEngineCount( shaderArraysPerEngineCount_ ) - , computeUnitsPerShaderArray( computeUnitsPerShaderArray_ ) - , simdPerComputeUnit( simdPerComputeUnit_ ) - , wavefrontsPerSimd( wavefrontsPerSimd_ ) - , wavefrontSize( wavefrontSize_ ) - , sgprsPerSimd( sgprsPerSimd_ ) - , minSgprAllocation( minSgprAllocation_ ) - , maxSgprAllocation( maxSgprAllocation_ ) - , sgprAllocationGranularity( sgprAllocationGranularity_ ) - , vgprsPerSimd( vgprsPerSimd_ ) - , minVgprAllocation( minVgprAllocation_ ) - , maxVgprAllocation( maxVgprAllocation_ ) - , vgprAllocationGranularity( vgprAllocationGranularity_ ) - {} - - PhysicalDeviceShaderCorePropertiesAMD( VkPhysicalDeviceShaderCorePropertiesAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceShaderCorePropertiesAMD& operator=( VkPhysicalDeviceShaderCorePropertiesAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceShaderCorePropertiesAMD; - void* pNext = nullptr; - uint32_t shaderEngineCount; - uint32_t shaderArraysPerEngineCount; - uint32_t computeUnitsPerShaderArray; - uint32_t simdPerComputeUnit; - uint32_t wavefrontsPerSimd; - uint32_t wavefrontSize; - uint32_t sgprsPerSimd; - uint32_t minSgprAllocation; - uint32_t maxSgprAllocation; - uint32_t sgprAllocationGranularity; - uint32_t vgprsPerSimd; - uint32_t minVgprAllocation; - uint32_t maxVgprAllocation; - uint32_t vgprAllocationGranularity; - }; - static_assert( sizeof( PhysicalDeviceShaderCorePropertiesAMD ) == sizeof( VkPhysicalDeviceShaderCorePropertiesAMD ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceShaderCorePropertiesAMD : public layout::PhysicalDeviceShaderCorePropertiesAMD - { - operator VkPhysicalDeviceShaderCorePropertiesAMD const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceShaderCorePropertiesAMD &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceShaderCorePropertiesAMD const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderEngineCount == rhs.shaderEngineCount ) - && ( shaderArraysPerEngineCount == rhs.shaderArraysPerEngineCount ) - && ( computeUnitsPerShaderArray == rhs.computeUnitsPerShaderArray ) - && ( simdPerComputeUnit == rhs.simdPerComputeUnit ) - && ( wavefrontsPerSimd == rhs.wavefrontsPerSimd ) - && ( wavefrontSize == rhs.wavefrontSize ) - && ( sgprsPerSimd == rhs.sgprsPerSimd ) - && ( minSgprAllocation == rhs.minSgprAllocation ) - && ( maxSgprAllocation == rhs.maxSgprAllocation ) - && ( sgprAllocationGranularity == rhs.sgprAllocationGranularity ) - && ( vgprsPerSimd == rhs.vgprsPerSimd ) - && ( minVgprAllocation == rhs.minVgprAllocation ) - && ( maxVgprAllocation == rhs.maxVgprAllocation ) - && ( vgprAllocationGranularity == rhs.vgprAllocationGranularity ); - } - - bool operator!=( PhysicalDeviceShaderCorePropertiesAMD const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceShaderCorePropertiesAMD::sType; - }; - static_assert( sizeof( PhysicalDeviceShaderCorePropertiesAMD ) == sizeof( VkPhysicalDeviceShaderCorePropertiesAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT - { - protected: - PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT( vk::Bool32 shaderDemoteToHelperInvocation_ = 0 ) - : shaderDemoteToHelperInvocation( shaderDemoteToHelperInvocation_ ) - {} - - PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& operator=( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 shaderDemoteToHelperInvocation; - }; - static_assert( sizeof( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT ) == sizeof( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT : public layout::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT - { - PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT( vk::Bool32 shaderDemoteToHelperInvocation_ = 0 ) - : layout::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT( shaderDemoteToHelperInvocation_ ) - {} - - PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) - : layout::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT( rhs ) - {} - - PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& operator=( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT & setShaderDemoteToHelperInvocation( vk::Bool32 shaderDemoteToHelperInvocation_ ) - { - shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_; - return *this; - } - - operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderDemoteToHelperInvocation == rhs.shaderDemoteToHelperInvocation ); - } - - bool operator!=( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT ) == sizeof( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceShaderDrawParametersFeatures - { - protected: - PhysicalDeviceShaderDrawParametersFeatures( vk::Bool32 shaderDrawParameters_ = 0 ) - : shaderDrawParameters( shaderDrawParameters_ ) - {} - - PhysicalDeviceShaderDrawParametersFeatures( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceShaderDrawParametersFeatures& operator=( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceShaderDrawParametersFeatures; - void* pNext = nullptr; - vk::Bool32 shaderDrawParameters; - }; - static_assert( sizeof( PhysicalDeviceShaderDrawParametersFeatures ) == sizeof( VkPhysicalDeviceShaderDrawParametersFeatures ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceShaderDrawParametersFeatures : public layout::PhysicalDeviceShaderDrawParametersFeatures - { - PhysicalDeviceShaderDrawParametersFeatures( vk::Bool32 shaderDrawParameters_ = 0 ) - : layout::PhysicalDeviceShaderDrawParametersFeatures( shaderDrawParameters_ ) - {} - - PhysicalDeviceShaderDrawParametersFeatures( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) - : layout::PhysicalDeviceShaderDrawParametersFeatures( rhs ) - {} - - PhysicalDeviceShaderDrawParametersFeatures& operator=( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceShaderDrawParametersFeatures & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderDrawParametersFeatures & setShaderDrawParameters( vk::Bool32 shaderDrawParameters_ ) - { - shaderDrawParameters = shaderDrawParameters_; - return *this; - } - - operator VkPhysicalDeviceShaderDrawParametersFeatures const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceShaderDrawParametersFeatures &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceShaderDrawParametersFeatures const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderDrawParameters == rhs.shaderDrawParameters ); - } - - bool operator!=( PhysicalDeviceShaderDrawParametersFeatures const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceShaderDrawParametersFeatures::sType; - }; - static_assert( sizeof( PhysicalDeviceShaderDrawParametersFeatures ) == sizeof( VkPhysicalDeviceShaderDrawParametersFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceShaderFloat16Int8FeaturesKHR - { - protected: - PhysicalDeviceShaderFloat16Int8FeaturesKHR( vk::Bool32 shaderFloat16_ = 0, - vk::Bool32 shaderInt8_ = 0 ) - : shaderFloat16( shaderFloat16_ ) - , shaderInt8( shaderInt8_ ) - {} - - PhysicalDeviceShaderFloat16Int8FeaturesKHR( VkPhysicalDeviceShaderFloat16Int8FeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceShaderFloat16Int8FeaturesKHR& operator=( VkPhysicalDeviceShaderFloat16Int8FeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceShaderFloat16Int8FeaturesKHR; - void* pNext = nullptr; - vk::Bool32 shaderFloat16; - vk::Bool32 shaderInt8; - }; - static_assert( sizeof( PhysicalDeviceShaderFloat16Int8FeaturesKHR ) == sizeof( VkPhysicalDeviceShaderFloat16Int8FeaturesKHR ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceShaderFloat16Int8FeaturesKHR : public layout::PhysicalDeviceShaderFloat16Int8FeaturesKHR - { - PhysicalDeviceShaderFloat16Int8FeaturesKHR( vk::Bool32 shaderFloat16_ = 0, - vk::Bool32 shaderInt8_ = 0 ) - : layout::PhysicalDeviceShaderFloat16Int8FeaturesKHR( shaderFloat16_, shaderInt8_ ) - {} - - PhysicalDeviceShaderFloat16Int8FeaturesKHR( VkPhysicalDeviceShaderFloat16Int8FeaturesKHR const & rhs ) - : layout::PhysicalDeviceShaderFloat16Int8FeaturesKHR( rhs ) - {} - - PhysicalDeviceShaderFloat16Int8FeaturesKHR& operator=( VkPhysicalDeviceShaderFloat16Int8FeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceShaderFloat16Int8FeaturesKHR & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderFloat16Int8FeaturesKHR & setShaderFloat16( vk::Bool32 shaderFloat16_ ) - { - shaderFloat16 = shaderFloat16_; - return *this; - } - - PhysicalDeviceShaderFloat16Int8FeaturesKHR & setShaderInt8( vk::Bool32 shaderInt8_ ) - { - shaderInt8 = shaderInt8_; - return *this; - } - - operator VkPhysicalDeviceShaderFloat16Int8FeaturesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceShaderFloat16Int8FeaturesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceShaderFloat16Int8FeaturesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderFloat16 == rhs.shaderFloat16 ) - && ( shaderInt8 == rhs.shaderInt8 ); - } - - bool operator!=( PhysicalDeviceShaderFloat16Int8FeaturesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceShaderFloat16Int8FeaturesKHR::sType; - }; - static_assert( sizeof( PhysicalDeviceShaderFloat16Int8FeaturesKHR ) == sizeof( VkPhysicalDeviceShaderFloat16Int8FeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceShaderImageFootprintFeaturesNV - { - protected: - PhysicalDeviceShaderImageFootprintFeaturesNV( vk::Bool32 imageFootprint_ = 0 ) - : imageFootprint( imageFootprint_ ) - {} - - PhysicalDeviceShaderImageFootprintFeaturesNV( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceShaderImageFootprintFeaturesNV& operator=( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV; - void* pNext = nullptr; - vk::Bool32 imageFootprint; - }; - static_assert( sizeof( PhysicalDeviceShaderImageFootprintFeaturesNV ) == sizeof( VkPhysicalDeviceShaderImageFootprintFeaturesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceShaderImageFootprintFeaturesNV : public layout::PhysicalDeviceShaderImageFootprintFeaturesNV - { - PhysicalDeviceShaderImageFootprintFeaturesNV( vk::Bool32 imageFootprint_ = 0 ) - : layout::PhysicalDeviceShaderImageFootprintFeaturesNV( imageFootprint_ ) - {} - - PhysicalDeviceShaderImageFootprintFeaturesNV( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) - : layout::PhysicalDeviceShaderImageFootprintFeaturesNV( rhs ) - {} - - PhysicalDeviceShaderImageFootprintFeaturesNV& operator=( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceShaderImageFootprintFeaturesNV & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderImageFootprintFeaturesNV & setImageFootprint( vk::Bool32 imageFootprint_ ) - { - imageFootprint = imageFootprint_; - return *this; - } - - operator VkPhysicalDeviceShaderImageFootprintFeaturesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceShaderImageFootprintFeaturesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceShaderImageFootprintFeaturesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( imageFootprint == rhs.imageFootprint ); - } - - bool operator!=( PhysicalDeviceShaderImageFootprintFeaturesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceShaderImageFootprintFeaturesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceShaderImageFootprintFeaturesNV ) == sizeof( VkPhysicalDeviceShaderImageFootprintFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - { - protected: - PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( vk::Bool32 shaderIntegerFunctions2_ = 0 ) - : shaderIntegerFunctions2( shaderIntegerFunctions2_ ) - {} - - PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& operator=( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; - void* pNext = nullptr; - vk::Bool32 shaderIntegerFunctions2; - }; - static_assert( sizeof( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL ) == sizeof( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL : public layout::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - { - PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( vk::Bool32 shaderIntegerFunctions2_ = 0 ) - : layout::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( shaderIntegerFunctions2_ ) - {} - - PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) - : layout::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( rhs ) - {} - - PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& operator=( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & setShaderIntegerFunctions2( vk::Bool32 shaderIntegerFunctions2_ ) - { - shaderIntegerFunctions2 = shaderIntegerFunctions2_; - return *this; - } - - operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderIntegerFunctions2 == rhs.shaderIntegerFunctions2 ); - } - - bool operator!=( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL::sType; - }; - static_assert( sizeof( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL ) == sizeof( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceShaderSMBuiltinsFeaturesNV - { - protected: - PhysicalDeviceShaderSMBuiltinsFeaturesNV( vk::Bool32 shaderSMBuiltins_ = 0 ) - : shaderSMBuiltins( shaderSMBuiltins_ ) - {} - - PhysicalDeviceShaderSMBuiltinsFeaturesNV( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceShaderSMBuiltinsFeaturesNV& operator=( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV; - void* pNext = nullptr; - vk::Bool32 shaderSMBuiltins; - }; - static_assert( sizeof( PhysicalDeviceShaderSMBuiltinsFeaturesNV ) == sizeof( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceShaderSMBuiltinsFeaturesNV : public layout::PhysicalDeviceShaderSMBuiltinsFeaturesNV - { - PhysicalDeviceShaderSMBuiltinsFeaturesNV( vk::Bool32 shaderSMBuiltins_ = 0 ) - : layout::PhysicalDeviceShaderSMBuiltinsFeaturesNV( shaderSMBuiltins_ ) - {} - - PhysicalDeviceShaderSMBuiltinsFeaturesNV( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) - : layout::PhysicalDeviceShaderSMBuiltinsFeaturesNV( rhs ) - {} - - PhysicalDeviceShaderSMBuiltinsFeaturesNV& operator=( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceShaderSMBuiltinsFeaturesNV & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderSMBuiltinsFeaturesNV & setShaderSMBuiltins( vk::Bool32 shaderSMBuiltins_ ) - { - shaderSMBuiltins = shaderSMBuiltins_; - return *this; - } - - operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceShaderSMBuiltinsFeaturesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderSMBuiltins == rhs.shaderSMBuiltins ); - } - - bool operator!=( PhysicalDeviceShaderSMBuiltinsFeaturesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceShaderSMBuiltinsFeaturesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceShaderSMBuiltinsFeaturesNV ) == sizeof( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceShaderSMBuiltinsPropertiesNV - { - protected: - PhysicalDeviceShaderSMBuiltinsPropertiesNV( uint32_t shaderSMCount_ = 0, - uint32_t shaderWarpsPerSM_ = 0 ) - : shaderSMCount( shaderSMCount_ ) - , shaderWarpsPerSM( shaderWarpsPerSM_ ) - {} - - PhysicalDeviceShaderSMBuiltinsPropertiesNV( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceShaderSMBuiltinsPropertiesNV& operator=( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV; - void* pNext = nullptr; - uint32_t shaderSMCount; - uint32_t shaderWarpsPerSM; - }; - static_assert( sizeof( PhysicalDeviceShaderSMBuiltinsPropertiesNV ) == sizeof( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceShaderSMBuiltinsPropertiesNV : public layout::PhysicalDeviceShaderSMBuiltinsPropertiesNV - { - operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceShaderSMBuiltinsPropertiesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderSMCount == rhs.shaderSMCount ) - && ( shaderWarpsPerSM == rhs.shaderWarpsPerSM ); - } - - bool operator!=( PhysicalDeviceShaderSMBuiltinsPropertiesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceShaderSMBuiltinsPropertiesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceShaderSMBuiltinsPropertiesNV ) == sizeof( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceShadingRateImageFeaturesNV - { - protected: - PhysicalDeviceShadingRateImageFeaturesNV( vk::Bool32 shadingRateImage_ = 0, - vk::Bool32 shadingRateCoarseSampleOrder_ = 0 ) - : shadingRateImage( shadingRateImage_ ) - , shadingRateCoarseSampleOrder( shadingRateCoarseSampleOrder_ ) - {} - - PhysicalDeviceShadingRateImageFeaturesNV( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceShadingRateImageFeaturesNV& operator=( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceShadingRateImageFeaturesNV; - void* pNext = nullptr; - vk::Bool32 shadingRateImage; - vk::Bool32 shadingRateCoarseSampleOrder; - }; - static_assert( sizeof( PhysicalDeviceShadingRateImageFeaturesNV ) == sizeof( VkPhysicalDeviceShadingRateImageFeaturesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceShadingRateImageFeaturesNV : public layout::PhysicalDeviceShadingRateImageFeaturesNV - { - PhysicalDeviceShadingRateImageFeaturesNV( vk::Bool32 shadingRateImage_ = 0, - vk::Bool32 shadingRateCoarseSampleOrder_ = 0 ) - : layout::PhysicalDeviceShadingRateImageFeaturesNV( shadingRateImage_, shadingRateCoarseSampleOrder_ ) - {} - - PhysicalDeviceShadingRateImageFeaturesNV( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) - : layout::PhysicalDeviceShadingRateImageFeaturesNV( rhs ) - {} - - PhysicalDeviceShadingRateImageFeaturesNV& operator=( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceShadingRateImageFeaturesNV & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShadingRateImageFeaturesNV & setShadingRateImage( vk::Bool32 shadingRateImage_ ) - { - shadingRateImage = shadingRateImage_; - return *this; - } - - PhysicalDeviceShadingRateImageFeaturesNV & setShadingRateCoarseSampleOrder( vk::Bool32 shadingRateCoarseSampleOrder_ ) - { - shadingRateCoarseSampleOrder = shadingRateCoarseSampleOrder_; - return *this; - } - - operator VkPhysicalDeviceShadingRateImageFeaturesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceShadingRateImageFeaturesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceShadingRateImageFeaturesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shadingRateImage == rhs.shadingRateImage ) - && ( shadingRateCoarseSampleOrder == rhs.shadingRateCoarseSampleOrder ); - } - - bool operator!=( PhysicalDeviceShadingRateImageFeaturesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceShadingRateImageFeaturesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceShadingRateImageFeaturesNV ) == sizeof( VkPhysicalDeviceShadingRateImageFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceShadingRateImagePropertiesNV - { - protected: - PhysicalDeviceShadingRateImagePropertiesNV( vk::Extent2D shadingRateTexelSize_ = vk::Extent2D(), - uint32_t shadingRatePaletteSize_ = 0, - uint32_t shadingRateMaxCoarseSamples_ = 0 ) - : shadingRateTexelSize( shadingRateTexelSize_ ) - , shadingRatePaletteSize( shadingRatePaletteSize_ ) - , shadingRateMaxCoarseSamples( shadingRateMaxCoarseSamples_ ) - {} - - PhysicalDeviceShadingRateImagePropertiesNV( VkPhysicalDeviceShadingRateImagePropertiesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceShadingRateImagePropertiesNV& operator=( VkPhysicalDeviceShadingRateImagePropertiesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceShadingRateImagePropertiesNV; - void* pNext = nullptr; - vk::Extent2D shadingRateTexelSize; - uint32_t shadingRatePaletteSize; - uint32_t shadingRateMaxCoarseSamples; - }; - static_assert( sizeof( PhysicalDeviceShadingRateImagePropertiesNV ) == sizeof( VkPhysicalDeviceShadingRateImagePropertiesNV ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceShadingRateImagePropertiesNV : public layout::PhysicalDeviceShadingRateImagePropertiesNV - { - operator VkPhysicalDeviceShadingRateImagePropertiesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceShadingRateImagePropertiesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceShadingRateImagePropertiesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shadingRateTexelSize == rhs.shadingRateTexelSize ) - && ( shadingRatePaletteSize == rhs.shadingRatePaletteSize ) - && ( shadingRateMaxCoarseSamples == rhs.shadingRateMaxCoarseSamples ); - } - - bool operator!=( PhysicalDeviceShadingRateImagePropertiesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceShadingRateImagePropertiesNV::sType; - }; - static_assert( sizeof( PhysicalDeviceShadingRateImagePropertiesNV ) == sizeof( VkPhysicalDeviceShadingRateImagePropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceSparseImageFormatInfo2 - { - protected: - PhysicalDeviceSparseImageFormatInfo2( vk::Format format_ = vk::Format::eUndefined, - vk::ImageType type_ = vk::ImageType::e1D, - vk::SampleCountFlagBits samples_ = vk::SampleCountFlagBits::e1, - vk::ImageUsageFlags usage_ = vk::ImageUsageFlags(), - vk::ImageTiling tiling_ = vk::ImageTiling::eOptimal ) - : format( format_ ) - , type( type_ ) - , samples( samples_ ) - , usage( usage_ ) - , tiling( tiling_ ) - {} - - PhysicalDeviceSparseImageFormatInfo2( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceSparseImageFormatInfo2& operator=( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceSparseImageFormatInfo2; - const void* pNext = nullptr; - vk::Format format; - vk::ImageType type; - vk::SampleCountFlagBits samples; - vk::ImageUsageFlags usage; - vk::ImageTiling tiling; - }; - static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2 ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2 ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceSparseImageFormatInfo2 : public layout::PhysicalDeviceSparseImageFormatInfo2 - { - PhysicalDeviceSparseImageFormatInfo2( vk::Format format_ = vk::Format::eUndefined, - vk::ImageType type_ = vk::ImageType::e1D, - vk::SampleCountFlagBits samples_ = vk::SampleCountFlagBits::e1, - vk::ImageUsageFlags usage_ = vk::ImageUsageFlags(), - vk::ImageTiling tiling_ = vk::ImageTiling::eOptimal ) - : layout::PhysicalDeviceSparseImageFormatInfo2( format_, type_, samples_, usage_, tiling_ ) - {} - - PhysicalDeviceSparseImageFormatInfo2( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) - : layout::PhysicalDeviceSparseImageFormatInfo2( rhs ) - {} - - PhysicalDeviceSparseImageFormatInfo2& operator=( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceSparseImageFormatInfo2 & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceSparseImageFormatInfo2 & setFormat( vk::Format format_ ) - { - format = format_; - return *this; - } - - PhysicalDeviceSparseImageFormatInfo2 & setType( vk::ImageType type_ ) - { - type = type_; - return *this; - } - - PhysicalDeviceSparseImageFormatInfo2 & setSamples( vk::SampleCountFlagBits samples_ ) - { - samples = samples_; - return *this; - } - - PhysicalDeviceSparseImageFormatInfo2 & setUsage( vk::ImageUsageFlags usage_ ) - { - usage = usage_; - return *this; - } - - PhysicalDeviceSparseImageFormatInfo2 & setTiling( vk::ImageTiling tiling_ ) - { - tiling = tiling_; - return *this; - } - - operator VkPhysicalDeviceSparseImageFormatInfo2 const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceSparseImageFormatInfo2 &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceSparseImageFormatInfo2 const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( format == rhs.format ) - && ( type == rhs.type ) - && ( samples == rhs.samples ) - && ( usage == rhs.usage ) - && ( tiling == rhs.tiling ); - } - - bool operator!=( PhysicalDeviceSparseImageFormatInfo2 const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceSparseImageFormatInfo2::sType; - }; - static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2 ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceSubgroupProperties - { - protected: - PhysicalDeviceSubgroupProperties( uint32_t subgroupSize_ = 0, - vk::ShaderStageFlags supportedStages_ = vk::ShaderStageFlags(), - vk::SubgroupFeatureFlags supportedOperations_ = vk::SubgroupFeatureFlags(), - vk::Bool32 quadOperationsInAllStages_ = 0 ) - : subgroupSize( subgroupSize_ ) - , supportedStages( supportedStages_ ) - , supportedOperations( supportedOperations_ ) - , quadOperationsInAllStages( quadOperationsInAllStages_ ) - {} - - PhysicalDeviceSubgroupProperties( VkPhysicalDeviceSubgroupProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceSubgroupProperties& operator=( VkPhysicalDeviceSubgroupProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceSubgroupProperties; - void* pNext = nullptr; - uint32_t subgroupSize; - vk::ShaderStageFlags supportedStages; - vk::SubgroupFeatureFlags supportedOperations; - vk::Bool32 quadOperationsInAllStages; - }; - static_assert( sizeof( PhysicalDeviceSubgroupProperties ) == sizeof( VkPhysicalDeviceSubgroupProperties ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceSubgroupProperties : public layout::PhysicalDeviceSubgroupProperties - { - operator VkPhysicalDeviceSubgroupProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceSubgroupProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceSubgroupProperties const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( subgroupSize == rhs.subgroupSize ) - && ( supportedStages == rhs.supportedStages ) - && ( supportedOperations == rhs.supportedOperations ) - && ( quadOperationsInAllStages == rhs.quadOperationsInAllStages ); - } - - bool operator!=( PhysicalDeviceSubgroupProperties const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceSubgroupProperties::sType; - }; - static_assert( sizeof( PhysicalDeviceSubgroupProperties ) == sizeof( VkPhysicalDeviceSubgroupProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceSubgroupSizeControlFeaturesEXT - { - protected: - PhysicalDeviceSubgroupSizeControlFeaturesEXT( vk::Bool32 subgroupSizeControl_ = 0, - vk::Bool32 computeFullSubgroups_ = 0 ) - : subgroupSizeControl( subgroupSizeControl_ ) - , computeFullSubgroups( computeFullSubgroups_ ) - {} - - PhysicalDeviceSubgroupSizeControlFeaturesEXT( VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceSubgroupSizeControlFeaturesEXT& operator=( VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceSubgroupSizeControlFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 subgroupSizeControl; - vk::Bool32 computeFullSubgroups; - }; - static_assert( sizeof( PhysicalDeviceSubgroupSizeControlFeaturesEXT ) == sizeof( VkPhysicalDeviceSubgroupSizeControlFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceSubgroupSizeControlFeaturesEXT : public layout::PhysicalDeviceSubgroupSizeControlFeaturesEXT - { - PhysicalDeviceSubgroupSizeControlFeaturesEXT( vk::Bool32 subgroupSizeControl_ = 0, - vk::Bool32 computeFullSubgroups_ = 0 ) - : layout::PhysicalDeviceSubgroupSizeControlFeaturesEXT( subgroupSizeControl_, computeFullSubgroups_ ) - {} - - PhysicalDeviceSubgroupSizeControlFeaturesEXT( VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) - : layout::PhysicalDeviceSubgroupSizeControlFeaturesEXT( rhs ) - {} - - PhysicalDeviceSubgroupSizeControlFeaturesEXT& operator=( VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceSubgroupSizeControlFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceSubgroupSizeControlFeaturesEXT & setSubgroupSizeControl( vk::Bool32 subgroupSizeControl_ ) - { - subgroupSizeControl = subgroupSizeControl_; - return *this; - } - - PhysicalDeviceSubgroupSizeControlFeaturesEXT & setComputeFullSubgroups( vk::Bool32 computeFullSubgroups_ ) - { - computeFullSubgroups = computeFullSubgroups_; - return *this; - } - - operator VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceSubgroupSizeControlFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceSubgroupSizeControlFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( subgroupSizeControl == rhs.subgroupSizeControl ) - && ( computeFullSubgroups == rhs.computeFullSubgroups ); - } - - bool operator!=( PhysicalDeviceSubgroupSizeControlFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceSubgroupSizeControlFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceSubgroupSizeControlFeaturesEXT ) == sizeof( VkPhysicalDeviceSubgroupSizeControlFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceSubgroupSizeControlPropertiesEXT - { - protected: - PhysicalDeviceSubgroupSizeControlPropertiesEXT( uint32_t minSubgroupSize_ = 0, - uint32_t maxSubgroupSize_ = 0, - uint32_t maxComputeWorkgroupSubgroups_ = 0, - vk::ShaderStageFlags requiredSubgroupSizeStages_ = vk::ShaderStageFlags() ) - : minSubgroupSize( minSubgroupSize_ ) - , maxSubgroupSize( maxSubgroupSize_ ) - , maxComputeWorkgroupSubgroups( maxComputeWorkgroupSubgroups_ ) - , requiredSubgroupSizeStages( requiredSubgroupSizeStages_ ) - {} - - PhysicalDeviceSubgroupSizeControlPropertiesEXT( VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceSubgroupSizeControlPropertiesEXT& operator=( VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceSubgroupSizeControlPropertiesEXT; - void* pNext = nullptr; - uint32_t minSubgroupSize; - uint32_t maxSubgroupSize; - uint32_t maxComputeWorkgroupSubgroups; - vk::ShaderStageFlags requiredSubgroupSizeStages; - }; - static_assert( sizeof( PhysicalDeviceSubgroupSizeControlPropertiesEXT ) == sizeof( VkPhysicalDeviceSubgroupSizeControlPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceSubgroupSizeControlPropertiesEXT : public layout::PhysicalDeviceSubgroupSizeControlPropertiesEXT - { - operator VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceSubgroupSizeControlPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceSubgroupSizeControlPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( minSubgroupSize == rhs.minSubgroupSize ) - && ( maxSubgroupSize == rhs.maxSubgroupSize ) - && ( maxComputeWorkgroupSubgroups == rhs.maxComputeWorkgroupSubgroups ) - && ( requiredSubgroupSizeStages == rhs.requiredSubgroupSizeStages ); - } - - bool operator!=( PhysicalDeviceSubgroupSizeControlPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceSubgroupSizeControlPropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceSubgroupSizeControlPropertiesEXT ) == sizeof( VkPhysicalDeviceSubgroupSizeControlPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceSurfaceInfo2KHR - { - protected: - PhysicalDeviceSurfaceInfo2KHR( vk::SurfaceKHR surface_ = vk::SurfaceKHR() ) - : surface( surface_ ) - {} - - PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceSurfaceInfo2KHR; - const void* pNext = nullptr; - vk::SurfaceKHR surface; - }; - static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceSurfaceInfo2KHR : public layout::PhysicalDeviceSurfaceInfo2KHR - { - PhysicalDeviceSurfaceInfo2KHR( vk::SurfaceKHR surface_ = vk::SurfaceKHR() ) - : layout::PhysicalDeviceSurfaceInfo2KHR( surface_ ) - {} - - PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) - : layout::PhysicalDeviceSurfaceInfo2KHR( rhs ) - {} - - PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceSurfaceInfo2KHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceSurfaceInfo2KHR & setSurface( vk::SurfaceKHR surface_ ) - { - surface = surface_; - return *this; - } - - operator VkPhysicalDeviceSurfaceInfo2KHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceSurfaceInfo2KHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( surface == rhs.surface ); - } - - bool operator!=( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceSurfaceInfo2KHR::sType; - }; - static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT - { - protected: - PhysicalDeviceTexelBufferAlignmentFeaturesEXT( vk::Bool32 texelBufferAlignment_ = 0 ) - : texelBufferAlignment( texelBufferAlignment_ ) - {} - - PhysicalDeviceTexelBufferAlignmentFeaturesEXT( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceTexelBufferAlignmentFeaturesEXT& operator=( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 texelBufferAlignment; - }; - static_assert( sizeof( PhysicalDeviceTexelBufferAlignmentFeaturesEXT ) == sizeof( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT : public layout::PhysicalDeviceTexelBufferAlignmentFeaturesEXT - { - PhysicalDeviceTexelBufferAlignmentFeaturesEXT( vk::Bool32 texelBufferAlignment_ = 0 ) - : layout::PhysicalDeviceTexelBufferAlignmentFeaturesEXT( texelBufferAlignment_ ) - {} - - PhysicalDeviceTexelBufferAlignmentFeaturesEXT( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) - : layout::PhysicalDeviceTexelBufferAlignmentFeaturesEXT( rhs ) - {} - - PhysicalDeviceTexelBufferAlignmentFeaturesEXT& operator=( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceTexelBufferAlignmentFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceTexelBufferAlignmentFeaturesEXT & setTexelBufferAlignment( vk::Bool32 texelBufferAlignment_ ) - { - texelBufferAlignment = texelBufferAlignment_; - return *this; - } - - operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( texelBufferAlignment == rhs.texelBufferAlignment ); - } - - bool operator!=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceTexelBufferAlignmentFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceTexelBufferAlignmentFeaturesEXT ) == sizeof( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceTexelBufferAlignmentPropertiesEXT - { - protected: - PhysicalDeviceTexelBufferAlignmentPropertiesEXT( vk::DeviceSize storageTexelBufferOffsetAlignmentBytes_ = 0, - vk::Bool32 storageTexelBufferOffsetSingleTexelAlignment_ = 0, - vk::DeviceSize uniformTexelBufferOffsetAlignmentBytes_ = 0, - vk::Bool32 uniformTexelBufferOffsetSingleTexelAlignment_ = 0 ) - : storageTexelBufferOffsetAlignmentBytes( storageTexelBufferOffsetAlignmentBytes_ ) - , storageTexelBufferOffsetSingleTexelAlignment( storageTexelBufferOffsetSingleTexelAlignment_ ) - , uniformTexelBufferOffsetAlignmentBytes( uniformTexelBufferOffsetAlignmentBytes_ ) - , uniformTexelBufferOffsetSingleTexelAlignment( uniformTexelBufferOffsetSingleTexelAlignment_ ) - {} - - PhysicalDeviceTexelBufferAlignmentPropertiesEXT( VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceTexelBufferAlignmentPropertiesEXT& operator=( VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentPropertiesEXT; - void* pNext = nullptr; - vk::DeviceSize storageTexelBufferOffsetAlignmentBytes; - vk::Bool32 storageTexelBufferOffsetSingleTexelAlignment; - vk::DeviceSize uniformTexelBufferOffsetAlignmentBytes; - vk::Bool32 uniformTexelBufferOffsetSingleTexelAlignment; - }; - static_assert( sizeof( PhysicalDeviceTexelBufferAlignmentPropertiesEXT ) == sizeof( VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceTexelBufferAlignmentPropertiesEXT : public layout::PhysicalDeviceTexelBufferAlignmentPropertiesEXT - { - operator VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( storageTexelBufferOffsetAlignmentBytes == rhs.storageTexelBufferOffsetAlignmentBytes ) - && ( storageTexelBufferOffsetSingleTexelAlignment == rhs.storageTexelBufferOffsetSingleTexelAlignment ) - && ( uniformTexelBufferOffsetAlignmentBytes == rhs.uniformTexelBufferOffsetAlignmentBytes ) - && ( uniformTexelBufferOffsetSingleTexelAlignment == rhs.uniformTexelBufferOffsetSingleTexelAlignment ); - } - - bool operator!=( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceTexelBufferAlignmentPropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceTexelBufferAlignmentPropertiesEXT ) == sizeof( VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT - { - protected: - PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT( vk::Bool32 textureCompressionASTC_HDR_ = 0 ) - : textureCompressionASTC_HDR( textureCompressionASTC_HDR_ ) - {} - - PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT( VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT& operator=( VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeaturesEXT; - const void* pNext = nullptr; - vk::Bool32 textureCompressionASTC_HDR; - }; - static_assert( sizeof( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT ) == sizeof( VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT : public layout::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT - { - PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT( vk::Bool32 textureCompressionASTC_HDR_ = 0 ) - : layout::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT( textureCompressionASTC_HDR_ ) - {} - - PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT( VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) - : layout::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT( rhs ) - {} - - PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT& operator=( VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT & setTextureCompressionASTC_HDR( vk::Bool32 textureCompressionASTC_HDR_ ) - { - textureCompressionASTC_HDR = textureCompressionASTC_HDR_; - return *this; - } - - operator VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( textureCompressionASTC_HDR == rhs.textureCompressionASTC_HDR ); - } - - bool operator!=( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT ) == sizeof( VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceTransformFeedbackFeaturesEXT - { - protected: - PhysicalDeviceTransformFeedbackFeaturesEXT( vk::Bool32 transformFeedback_ = 0, - vk::Bool32 geometryStreams_ = 0 ) - : transformFeedback( transformFeedback_ ) - , geometryStreams( geometryStreams_ ) - {} - - PhysicalDeviceTransformFeedbackFeaturesEXT( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceTransformFeedbackFeaturesEXT& operator=( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 transformFeedback; - vk::Bool32 geometryStreams; - }; - static_assert( sizeof( PhysicalDeviceTransformFeedbackFeaturesEXT ) == sizeof( VkPhysicalDeviceTransformFeedbackFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceTransformFeedbackFeaturesEXT : public layout::PhysicalDeviceTransformFeedbackFeaturesEXT - { - PhysicalDeviceTransformFeedbackFeaturesEXT( vk::Bool32 transformFeedback_ = 0, - vk::Bool32 geometryStreams_ = 0 ) - : layout::PhysicalDeviceTransformFeedbackFeaturesEXT( transformFeedback_, geometryStreams_ ) - {} - - PhysicalDeviceTransformFeedbackFeaturesEXT( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) - : layout::PhysicalDeviceTransformFeedbackFeaturesEXT( rhs ) - {} - - PhysicalDeviceTransformFeedbackFeaturesEXT& operator=( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceTransformFeedbackFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceTransformFeedbackFeaturesEXT & setTransformFeedback( vk::Bool32 transformFeedback_ ) - { - transformFeedback = transformFeedback_; - return *this; - } - - PhysicalDeviceTransformFeedbackFeaturesEXT & setGeometryStreams( vk::Bool32 geometryStreams_ ) - { - geometryStreams = geometryStreams_; - return *this; - } - - operator VkPhysicalDeviceTransformFeedbackFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceTransformFeedbackFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceTransformFeedbackFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( transformFeedback == rhs.transformFeedback ) - && ( geometryStreams == rhs.geometryStreams ); - } - - bool operator!=( PhysicalDeviceTransformFeedbackFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceTransformFeedbackFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceTransformFeedbackFeaturesEXT ) == sizeof( VkPhysicalDeviceTransformFeedbackFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceTransformFeedbackPropertiesEXT - { - protected: - PhysicalDeviceTransformFeedbackPropertiesEXT( uint32_t maxTransformFeedbackStreams_ = 0, - uint32_t maxTransformFeedbackBuffers_ = 0, - vk::DeviceSize maxTransformFeedbackBufferSize_ = 0, - uint32_t maxTransformFeedbackStreamDataSize_ = 0, - uint32_t maxTransformFeedbackBufferDataSize_ = 0, - uint32_t maxTransformFeedbackBufferDataStride_ = 0, - vk::Bool32 transformFeedbackQueries_ = 0, - vk::Bool32 transformFeedbackStreamsLinesTriangles_ = 0, - vk::Bool32 transformFeedbackRasterizationStreamSelect_ = 0, - vk::Bool32 transformFeedbackDraw_ = 0 ) - : maxTransformFeedbackStreams( maxTransformFeedbackStreams_ ) - , maxTransformFeedbackBuffers( maxTransformFeedbackBuffers_ ) - , maxTransformFeedbackBufferSize( maxTransformFeedbackBufferSize_ ) - , maxTransformFeedbackStreamDataSize( maxTransformFeedbackStreamDataSize_ ) - , maxTransformFeedbackBufferDataSize( maxTransformFeedbackBufferDataSize_ ) - , maxTransformFeedbackBufferDataStride( maxTransformFeedbackBufferDataStride_ ) - , transformFeedbackQueries( transformFeedbackQueries_ ) - , transformFeedbackStreamsLinesTriangles( transformFeedbackStreamsLinesTriangles_ ) - , transformFeedbackRasterizationStreamSelect( transformFeedbackRasterizationStreamSelect_ ) - , transformFeedbackDraw( transformFeedbackDraw_ ) - {} - - PhysicalDeviceTransformFeedbackPropertiesEXT( VkPhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceTransformFeedbackPropertiesEXT& operator=( VkPhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT; - void* pNext = nullptr; - uint32_t maxTransformFeedbackStreams; - uint32_t maxTransformFeedbackBuffers; - vk::DeviceSize maxTransformFeedbackBufferSize; - uint32_t maxTransformFeedbackStreamDataSize; - uint32_t maxTransformFeedbackBufferDataSize; - uint32_t maxTransformFeedbackBufferDataStride; - vk::Bool32 transformFeedbackQueries; - vk::Bool32 transformFeedbackStreamsLinesTriangles; - vk::Bool32 transformFeedbackRasterizationStreamSelect; - vk::Bool32 transformFeedbackDraw; - }; - static_assert( sizeof( PhysicalDeviceTransformFeedbackPropertiesEXT ) == sizeof( VkPhysicalDeviceTransformFeedbackPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceTransformFeedbackPropertiesEXT : public layout::PhysicalDeviceTransformFeedbackPropertiesEXT - { - operator VkPhysicalDeviceTransformFeedbackPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceTransformFeedbackPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceTransformFeedbackPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxTransformFeedbackStreams == rhs.maxTransformFeedbackStreams ) - && ( maxTransformFeedbackBuffers == rhs.maxTransformFeedbackBuffers ) - && ( maxTransformFeedbackBufferSize == rhs.maxTransformFeedbackBufferSize ) - && ( maxTransformFeedbackStreamDataSize == rhs.maxTransformFeedbackStreamDataSize ) - && ( maxTransformFeedbackBufferDataSize == rhs.maxTransformFeedbackBufferDataSize ) - && ( maxTransformFeedbackBufferDataStride == rhs.maxTransformFeedbackBufferDataStride ) - && ( transformFeedbackQueries == rhs.transformFeedbackQueries ) - && ( transformFeedbackStreamsLinesTriangles == rhs.transformFeedbackStreamsLinesTriangles ) - && ( transformFeedbackRasterizationStreamSelect == rhs.transformFeedbackRasterizationStreamSelect ) - && ( transformFeedbackDraw == rhs.transformFeedbackDraw ); - } - - bool operator!=( PhysicalDeviceTransformFeedbackPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceTransformFeedbackPropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceTransformFeedbackPropertiesEXT ) == sizeof( VkPhysicalDeviceTransformFeedbackPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR - { - protected: - PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR( vk::Bool32 uniformBufferStandardLayout_ = 0 ) - : uniformBufferStandardLayout( uniformBufferStandardLayout_ ) - {} - - PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR( VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR& operator=( VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeaturesKHR; - void* pNext = nullptr; - vk::Bool32 uniformBufferStandardLayout; - }; - static_assert( sizeof( PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR ) == sizeof( VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR : public layout::PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR - { - PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR( vk::Bool32 uniformBufferStandardLayout_ = 0 ) - : layout::PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR( uniformBufferStandardLayout_ ) - {} - - PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR( VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR const & rhs ) - : layout::PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR( rhs ) - {} - - PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR& operator=( VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR & setUniformBufferStandardLayout( vk::Bool32 uniformBufferStandardLayout_ ) - { - uniformBufferStandardLayout = uniformBufferStandardLayout_; - return *this; - } - - operator VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( uniformBufferStandardLayout == rhs.uniformBufferStandardLayout ); - } - - bool operator!=( PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR::sType; - }; - static_assert( sizeof( PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR ) == sizeof( VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceVariablePointersFeatures - { - protected: - PhysicalDeviceVariablePointersFeatures( vk::Bool32 variablePointersStorageBuffer_ = 0, - vk::Bool32 variablePointers_ = 0 ) - : variablePointersStorageBuffer( variablePointersStorageBuffer_ ) - , variablePointers( variablePointers_ ) - {} - - PhysicalDeviceVariablePointersFeatures( VkPhysicalDeviceVariablePointersFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceVariablePointersFeatures& operator=( VkPhysicalDeviceVariablePointersFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceVariablePointersFeatures; - void* pNext = nullptr; - vk::Bool32 variablePointersStorageBuffer; - vk::Bool32 variablePointers; - }; - static_assert( sizeof( PhysicalDeviceVariablePointersFeatures ) == sizeof( VkPhysicalDeviceVariablePointersFeatures ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceVariablePointersFeatures : public layout::PhysicalDeviceVariablePointersFeatures - { - PhysicalDeviceVariablePointersFeatures( vk::Bool32 variablePointersStorageBuffer_ = 0, - vk::Bool32 variablePointers_ = 0 ) - : layout::PhysicalDeviceVariablePointersFeatures( variablePointersStorageBuffer_, variablePointers_ ) - {} - - PhysicalDeviceVariablePointersFeatures( VkPhysicalDeviceVariablePointersFeatures const & rhs ) - : layout::PhysicalDeviceVariablePointersFeatures( rhs ) - {} - - PhysicalDeviceVariablePointersFeatures& operator=( VkPhysicalDeviceVariablePointersFeatures const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceVariablePointersFeatures & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceVariablePointersFeatures & setVariablePointersStorageBuffer( vk::Bool32 variablePointersStorageBuffer_ ) - { - variablePointersStorageBuffer = variablePointersStorageBuffer_; - return *this; - } - - PhysicalDeviceVariablePointersFeatures & setVariablePointers( vk::Bool32 variablePointers_ ) - { - variablePointers = variablePointers_; - return *this; - } - - operator VkPhysicalDeviceVariablePointersFeatures const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceVariablePointersFeatures &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceVariablePointersFeatures const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer ) - && ( variablePointers == rhs.variablePointers ); - } - - bool operator!=( PhysicalDeviceVariablePointersFeatures const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceVariablePointersFeatures::sType; - }; - static_assert( sizeof( PhysicalDeviceVariablePointersFeatures ) == sizeof( VkPhysicalDeviceVariablePointersFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceVertexAttributeDivisorFeaturesEXT - { - protected: - PhysicalDeviceVertexAttributeDivisorFeaturesEXT( vk::Bool32 vertexAttributeInstanceRateDivisor_ = 0, - vk::Bool32 vertexAttributeInstanceRateZeroDivisor_ = 0 ) - : vertexAttributeInstanceRateDivisor( vertexAttributeInstanceRateDivisor_ ) - , vertexAttributeInstanceRateZeroDivisor( vertexAttributeInstanceRateZeroDivisor_ ) - {} - - PhysicalDeviceVertexAttributeDivisorFeaturesEXT( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceVertexAttributeDivisorFeaturesEXT& operator=( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 vertexAttributeInstanceRateDivisor; - vk::Bool32 vertexAttributeInstanceRateZeroDivisor; - }; - static_assert( sizeof( PhysicalDeviceVertexAttributeDivisorFeaturesEXT ) == sizeof( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceVertexAttributeDivisorFeaturesEXT : public layout::PhysicalDeviceVertexAttributeDivisorFeaturesEXT - { - PhysicalDeviceVertexAttributeDivisorFeaturesEXT( vk::Bool32 vertexAttributeInstanceRateDivisor_ = 0, - vk::Bool32 vertexAttributeInstanceRateZeroDivisor_ = 0 ) - : layout::PhysicalDeviceVertexAttributeDivisorFeaturesEXT( vertexAttributeInstanceRateDivisor_, vertexAttributeInstanceRateZeroDivisor_ ) - {} - - PhysicalDeviceVertexAttributeDivisorFeaturesEXT( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) - : layout::PhysicalDeviceVertexAttributeDivisorFeaturesEXT( rhs ) - {} - - PhysicalDeviceVertexAttributeDivisorFeaturesEXT& operator=( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceVertexAttributeDivisorFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceVertexAttributeDivisorFeaturesEXT & setVertexAttributeInstanceRateDivisor( vk::Bool32 vertexAttributeInstanceRateDivisor_ ) - { - vertexAttributeInstanceRateDivisor = vertexAttributeInstanceRateDivisor_; - return *this; - } - - PhysicalDeviceVertexAttributeDivisorFeaturesEXT & setVertexAttributeInstanceRateZeroDivisor( vk::Bool32 vertexAttributeInstanceRateZeroDivisor_ ) - { - vertexAttributeInstanceRateZeroDivisor = vertexAttributeInstanceRateZeroDivisor_; - return *this; - } - - operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( vertexAttributeInstanceRateDivisor == rhs.vertexAttributeInstanceRateDivisor ) - && ( vertexAttributeInstanceRateZeroDivisor == rhs.vertexAttributeInstanceRateZeroDivisor ); - } - - bool operator!=( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceVertexAttributeDivisorFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceVertexAttributeDivisorFeaturesEXT ) == sizeof( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT - { - protected: - PhysicalDeviceVertexAttributeDivisorPropertiesEXT( uint32_t maxVertexAttribDivisor_ = 0 ) - : maxVertexAttribDivisor( maxVertexAttribDivisor_ ) - {} - - PhysicalDeviceVertexAttributeDivisorPropertiesEXT( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceVertexAttributeDivisorPropertiesEXT& operator=( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT; - void* pNext = nullptr; - uint32_t maxVertexAttribDivisor; - }; - static_assert( sizeof( PhysicalDeviceVertexAttributeDivisorPropertiesEXT ) == sizeof( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT : public layout::PhysicalDeviceVertexAttributeDivisorPropertiesEXT - { - operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxVertexAttribDivisor == rhs.maxVertexAttribDivisor ); - } - - bool operator!=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceVertexAttributeDivisorPropertiesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceVertexAttributeDivisorPropertiesEXT ) == sizeof( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceVulkanMemoryModelFeaturesKHR - { - protected: - PhysicalDeviceVulkanMemoryModelFeaturesKHR( vk::Bool32 vulkanMemoryModel_ = 0, - vk::Bool32 vulkanMemoryModelDeviceScope_ = 0, - vk::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ = 0 ) - : vulkanMemoryModel( vulkanMemoryModel_ ) - , vulkanMemoryModelDeviceScope( vulkanMemoryModelDeviceScope_ ) - , vulkanMemoryModelAvailabilityVisibilityChains( vulkanMemoryModelAvailabilityVisibilityChains_ ) - {} - - PhysicalDeviceVulkanMemoryModelFeaturesKHR( VkPhysicalDeviceVulkanMemoryModelFeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceVulkanMemoryModelFeaturesKHR& operator=( VkPhysicalDeviceVulkanMemoryModelFeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceVulkanMemoryModelFeaturesKHR; - void* pNext = nullptr; - vk::Bool32 vulkanMemoryModel; - vk::Bool32 vulkanMemoryModelDeviceScope; - vk::Bool32 vulkanMemoryModelAvailabilityVisibilityChains; - }; - static_assert( sizeof( PhysicalDeviceVulkanMemoryModelFeaturesKHR ) == sizeof( VkPhysicalDeviceVulkanMemoryModelFeaturesKHR ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceVulkanMemoryModelFeaturesKHR : public layout::PhysicalDeviceVulkanMemoryModelFeaturesKHR - { - PhysicalDeviceVulkanMemoryModelFeaturesKHR( vk::Bool32 vulkanMemoryModel_ = 0, - vk::Bool32 vulkanMemoryModelDeviceScope_ = 0, - vk::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ = 0 ) - : layout::PhysicalDeviceVulkanMemoryModelFeaturesKHR( vulkanMemoryModel_, vulkanMemoryModelDeviceScope_, vulkanMemoryModelAvailabilityVisibilityChains_ ) - {} - - PhysicalDeviceVulkanMemoryModelFeaturesKHR( VkPhysicalDeviceVulkanMemoryModelFeaturesKHR const & rhs ) - : layout::PhysicalDeviceVulkanMemoryModelFeaturesKHR( rhs ) - {} - - PhysicalDeviceVulkanMemoryModelFeaturesKHR& operator=( VkPhysicalDeviceVulkanMemoryModelFeaturesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceVulkanMemoryModelFeaturesKHR & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceVulkanMemoryModelFeaturesKHR & setVulkanMemoryModel( vk::Bool32 vulkanMemoryModel_ ) - { - vulkanMemoryModel = vulkanMemoryModel_; - return *this; - } - - PhysicalDeviceVulkanMemoryModelFeaturesKHR & setVulkanMemoryModelDeviceScope( vk::Bool32 vulkanMemoryModelDeviceScope_ ) - { - vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_; - return *this; - } - - PhysicalDeviceVulkanMemoryModelFeaturesKHR & setVulkanMemoryModelAvailabilityVisibilityChains( vk::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) - { - vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_; - return *this; - } - - operator VkPhysicalDeviceVulkanMemoryModelFeaturesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceVulkanMemoryModelFeaturesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceVulkanMemoryModelFeaturesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( vulkanMemoryModel == rhs.vulkanMemoryModel ) - && ( vulkanMemoryModelDeviceScope == rhs.vulkanMemoryModelDeviceScope ) - && ( vulkanMemoryModelAvailabilityVisibilityChains == rhs.vulkanMemoryModelAvailabilityVisibilityChains ); - } - - bool operator!=( PhysicalDeviceVulkanMemoryModelFeaturesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceVulkanMemoryModelFeaturesKHR::sType; - }; - static_assert( sizeof( PhysicalDeviceVulkanMemoryModelFeaturesKHR ) == sizeof( VkPhysicalDeviceVulkanMemoryModelFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PhysicalDeviceYcbcrImageArraysFeaturesEXT - { - protected: - PhysicalDeviceYcbcrImageArraysFeaturesEXT( vk::Bool32 ycbcrImageArrays_ = 0 ) - : ycbcrImageArrays( ycbcrImageArrays_ ) - {} - - PhysicalDeviceYcbcrImageArraysFeaturesEXT( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PhysicalDeviceYcbcrImageArraysFeaturesEXT& operator=( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT; - void* pNext = nullptr; - vk::Bool32 ycbcrImageArrays; - }; - static_assert( sizeof( PhysicalDeviceYcbcrImageArraysFeaturesEXT ) == sizeof( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct PhysicalDeviceYcbcrImageArraysFeaturesEXT : public layout::PhysicalDeviceYcbcrImageArraysFeaturesEXT - { - PhysicalDeviceYcbcrImageArraysFeaturesEXT( vk::Bool32 ycbcrImageArrays_ = 0 ) - : layout::PhysicalDeviceYcbcrImageArraysFeaturesEXT( ycbcrImageArrays_ ) - {} - - PhysicalDeviceYcbcrImageArraysFeaturesEXT( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) - : layout::PhysicalDeviceYcbcrImageArraysFeaturesEXT( rhs ) - {} - - PhysicalDeviceYcbcrImageArraysFeaturesEXT& operator=( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PhysicalDeviceYcbcrImageArraysFeaturesEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceYcbcrImageArraysFeaturesEXT & setYcbcrImageArrays( vk::Bool32 ycbcrImageArrays_ ) - { - ycbcrImageArrays = ycbcrImageArrays_; - return *this; - } - - operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PhysicalDeviceYcbcrImageArraysFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( ycbcrImageArrays == rhs.ycbcrImageArrays ); - } - - bool operator!=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PhysicalDeviceYcbcrImageArraysFeaturesEXT::sType; - }; - static_assert( sizeof( PhysicalDeviceYcbcrImageArraysFeaturesEXT ) == sizeof( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineCacheCreateInfo - { - protected: - PipelineCacheCreateInfo( vk::PipelineCacheCreateFlags flags_ = vk::PipelineCacheCreateFlags(), - size_t initialDataSize_ = 0, - const void* pInitialData_ = nullptr ) - : flags( flags_ ) - , initialDataSize( initialDataSize_ ) - , pInitialData( pInitialData_ ) - {} - - PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineCacheCreateInfo; - const void* pNext = nullptr; - vk::PipelineCacheCreateFlags flags; - size_t initialDataSize; - const void* pInitialData; - }; - static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct PipelineCacheCreateInfo : public layout::PipelineCacheCreateInfo - { - PipelineCacheCreateInfo( vk::PipelineCacheCreateFlags flags_ = vk::PipelineCacheCreateFlags(), - size_t initialDataSize_ = 0, - const void* pInitialData_ = nullptr ) - : layout::PipelineCacheCreateInfo( flags_, initialDataSize_, pInitialData_ ) - {} - - PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs ) - : layout::PipelineCacheCreateInfo( rhs ) - {} - - PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineCacheCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineCacheCreateInfo & setFlags( vk::PipelineCacheCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - PipelineCacheCreateInfo & setInitialDataSize( size_t initialDataSize_ ) - { - initialDataSize = initialDataSize_; - return *this; - } - - PipelineCacheCreateInfo & setPInitialData( const void* pInitialData_ ) - { - pInitialData = pInitialData_; - return *this; - } - - operator VkPipelineCacheCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineCacheCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineCacheCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( initialDataSize == rhs.initialDataSize ) - && ( pInitialData == rhs.pInitialData ); - } - - bool operator!=( PipelineCacheCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineCacheCreateInfo::sType; - }; - static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineColorBlendAdvancedStateCreateInfoEXT - { - protected: - PipelineColorBlendAdvancedStateCreateInfoEXT( vk::Bool32 srcPremultiplied_ = 0, - vk::Bool32 dstPremultiplied_ = 0, - vk::BlendOverlapEXT blendOverlap_ = vk::BlendOverlapEXT::eUncorrelated ) - : srcPremultiplied( srcPremultiplied_ ) - , dstPremultiplied( dstPremultiplied_ ) - , blendOverlap( blendOverlap_ ) - {} - - PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineColorBlendAdvancedStateCreateInfoEXT& operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT; - const void* pNext = nullptr; - vk::Bool32 srcPremultiplied; - vk::Bool32 dstPremultiplied; - vk::BlendOverlapEXT blendOverlap; - }; - static_assert( sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) == sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct PipelineColorBlendAdvancedStateCreateInfoEXT : public layout::PipelineColorBlendAdvancedStateCreateInfoEXT - { - PipelineColorBlendAdvancedStateCreateInfoEXT( vk::Bool32 srcPremultiplied_ = 0, - vk::Bool32 dstPremultiplied_ = 0, - vk::BlendOverlapEXT blendOverlap_ = vk::BlendOverlapEXT::eUncorrelated ) - : layout::PipelineColorBlendAdvancedStateCreateInfoEXT( srcPremultiplied_, dstPremultiplied_, blendOverlap_ ) - {} - - PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) - : layout::PipelineColorBlendAdvancedStateCreateInfoEXT( rhs ) - {} - - PipelineColorBlendAdvancedStateCreateInfoEXT& operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineColorBlendAdvancedStateCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineColorBlendAdvancedStateCreateInfoEXT & setSrcPremultiplied( vk::Bool32 srcPremultiplied_ ) - { - srcPremultiplied = srcPremultiplied_; - return *this; - } - - PipelineColorBlendAdvancedStateCreateInfoEXT & setDstPremultiplied( vk::Bool32 dstPremultiplied_ ) - { - dstPremultiplied = dstPremultiplied_; - return *this; - } - - PipelineColorBlendAdvancedStateCreateInfoEXT & setBlendOverlap( vk::BlendOverlapEXT blendOverlap_ ) - { - blendOverlap = blendOverlap_; - return *this; - } - - operator VkPipelineColorBlendAdvancedStateCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineColorBlendAdvancedStateCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcPremultiplied == rhs.srcPremultiplied ) - && ( dstPremultiplied == rhs.dstPremultiplied ) - && ( blendOverlap == rhs.blendOverlap ); - } - - bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineColorBlendAdvancedStateCreateInfoEXT::sType; - }; - static_assert( sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) == sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineCompilerControlCreateInfoAMD - { - protected: - PipelineCompilerControlCreateInfoAMD( vk::PipelineCompilerControlFlagsAMD compilerControlFlags_ = vk::PipelineCompilerControlFlagsAMD() ) - : compilerControlFlags( compilerControlFlags_ ) - {} - - PipelineCompilerControlCreateInfoAMD( VkPipelineCompilerControlCreateInfoAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineCompilerControlCreateInfoAMD& operator=( VkPipelineCompilerControlCreateInfoAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineCompilerControlCreateInfoAMD; - const void* pNext = nullptr; - vk::PipelineCompilerControlFlagsAMD compilerControlFlags; - }; - static_assert( sizeof( PipelineCompilerControlCreateInfoAMD ) == sizeof( VkPipelineCompilerControlCreateInfoAMD ), "layout struct and wrapper have different size!" ); - } - - struct PipelineCompilerControlCreateInfoAMD : public layout::PipelineCompilerControlCreateInfoAMD - { - PipelineCompilerControlCreateInfoAMD( vk::PipelineCompilerControlFlagsAMD compilerControlFlags_ = vk::PipelineCompilerControlFlagsAMD() ) - : layout::PipelineCompilerControlCreateInfoAMD( compilerControlFlags_ ) - {} - - PipelineCompilerControlCreateInfoAMD( VkPipelineCompilerControlCreateInfoAMD const & rhs ) - : layout::PipelineCompilerControlCreateInfoAMD( rhs ) - {} - - PipelineCompilerControlCreateInfoAMD& operator=( VkPipelineCompilerControlCreateInfoAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineCompilerControlCreateInfoAMD & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineCompilerControlCreateInfoAMD & setCompilerControlFlags( vk::PipelineCompilerControlFlagsAMD compilerControlFlags_ ) - { - compilerControlFlags = compilerControlFlags_; - return *this; - } - - operator VkPipelineCompilerControlCreateInfoAMD const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineCompilerControlCreateInfoAMD &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineCompilerControlCreateInfoAMD const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( compilerControlFlags == rhs.compilerControlFlags ); - } - - bool operator!=( PipelineCompilerControlCreateInfoAMD const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineCompilerControlCreateInfoAMD::sType; - }; - static_assert( sizeof( PipelineCompilerControlCreateInfoAMD ) == sizeof( VkPipelineCompilerControlCreateInfoAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineCoverageModulationStateCreateInfoNV - { - protected: - PipelineCoverageModulationStateCreateInfoNV( vk::PipelineCoverageModulationStateCreateFlagsNV flags_ = vk::PipelineCoverageModulationStateCreateFlagsNV(), - vk::CoverageModulationModeNV coverageModulationMode_ = vk::CoverageModulationModeNV::eNone, - vk::Bool32 coverageModulationTableEnable_ = 0, - uint32_t coverageModulationTableCount_ = 0, - const float* pCoverageModulationTable_ = nullptr ) - : flags( flags_ ) - , coverageModulationMode( coverageModulationMode_ ) - , coverageModulationTableEnable( coverageModulationTableEnable_ ) - , coverageModulationTableCount( coverageModulationTableCount_ ) - , pCoverageModulationTable( pCoverageModulationTable_ ) - {} - - PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineCoverageModulationStateCreateInfoNV& operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineCoverageModulationStateCreateInfoNV; - const void* pNext = nullptr; - vk::PipelineCoverageModulationStateCreateFlagsNV flags; - vk::CoverageModulationModeNV coverageModulationMode; - vk::Bool32 coverageModulationTableEnable; - uint32_t coverageModulationTableCount; - const float* pCoverageModulationTable; - }; - static_assert( sizeof( PipelineCoverageModulationStateCreateInfoNV ) == sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct PipelineCoverageModulationStateCreateInfoNV : public layout::PipelineCoverageModulationStateCreateInfoNV - { - PipelineCoverageModulationStateCreateInfoNV( vk::PipelineCoverageModulationStateCreateFlagsNV flags_ = vk::PipelineCoverageModulationStateCreateFlagsNV(), - vk::CoverageModulationModeNV coverageModulationMode_ = vk::CoverageModulationModeNV::eNone, - vk::Bool32 coverageModulationTableEnable_ = 0, - uint32_t coverageModulationTableCount_ = 0, - const float* pCoverageModulationTable_ = nullptr ) - : layout::PipelineCoverageModulationStateCreateInfoNV( flags_, coverageModulationMode_, coverageModulationTableEnable_, coverageModulationTableCount_, pCoverageModulationTable_ ) - {} - - PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) - : layout::PipelineCoverageModulationStateCreateInfoNV( rhs ) - {} - - PipelineCoverageModulationStateCreateInfoNV& operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineCoverageModulationStateCreateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineCoverageModulationStateCreateInfoNV & setFlags( vk::PipelineCoverageModulationStateCreateFlagsNV flags_ ) - { - flags = flags_; - return *this; - } - - PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationMode( vk::CoverageModulationModeNV coverageModulationMode_ ) - { - coverageModulationMode = coverageModulationMode_; - return *this; - } - - PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationTableEnable( vk::Bool32 coverageModulationTableEnable_ ) - { - coverageModulationTableEnable = coverageModulationTableEnable_; - return *this; - } - - PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ ) - { - coverageModulationTableCount = coverageModulationTableCount_; - return *this; - } - - PipelineCoverageModulationStateCreateInfoNV & setPCoverageModulationTable( const float* pCoverageModulationTable_ ) - { - pCoverageModulationTable = pCoverageModulationTable_; - return *this; - } - - operator VkPipelineCoverageModulationStateCreateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineCoverageModulationStateCreateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( coverageModulationMode == rhs.coverageModulationMode ) - && ( coverageModulationTableEnable == rhs.coverageModulationTableEnable ) - && ( coverageModulationTableCount == rhs.coverageModulationTableCount ) - && ( pCoverageModulationTable == rhs.pCoverageModulationTable ); - } - - bool operator!=( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineCoverageModulationStateCreateInfoNV::sType; - }; - static_assert( sizeof( PipelineCoverageModulationStateCreateInfoNV ) == sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineCoverageReductionStateCreateInfoNV - { - protected: - PipelineCoverageReductionStateCreateInfoNV( vk::PipelineCoverageReductionStateCreateFlagsNV flags_ = vk::PipelineCoverageReductionStateCreateFlagsNV(), - vk::CoverageReductionModeNV coverageReductionMode_ = vk::CoverageReductionModeNV::eMerge ) - : flags( flags_ ) - , coverageReductionMode( coverageReductionMode_ ) - {} - - PipelineCoverageReductionStateCreateInfoNV( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineCoverageReductionStateCreateInfoNV& operator=( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineCoverageReductionStateCreateInfoNV; - const void* pNext = nullptr; - vk::PipelineCoverageReductionStateCreateFlagsNV flags; - vk::CoverageReductionModeNV coverageReductionMode; - }; - static_assert( sizeof( PipelineCoverageReductionStateCreateInfoNV ) == sizeof( VkPipelineCoverageReductionStateCreateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct PipelineCoverageReductionStateCreateInfoNV : public layout::PipelineCoverageReductionStateCreateInfoNV - { - PipelineCoverageReductionStateCreateInfoNV( vk::PipelineCoverageReductionStateCreateFlagsNV flags_ = vk::PipelineCoverageReductionStateCreateFlagsNV(), - vk::CoverageReductionModeNV coverageReductionMode_ = vk::CoverageReductionModeNV::eMerge ) - : layout::PipelineCoverageReductionStateCreateInfoNV( flags_, coverageReductionMode_ ) - {} - - PipelineCoverageReductionStateCreateInfoNV( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) - : layout::PipelineCoverageReductionStateCreateInfoNV( rhs ) - {} - - PipelineCoverageReductionStateCreateInfoNV& operator=( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineCoverageReductionStateCreateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineCoverageReductionStateCreateInfoNV & setFlags( vk::PipelineCoverageReductionStateCreateFlagsNV flags_ ) - { - flags = flags_; - return *this; - } - - PipelineCoverageReductionStateCreateInfoNV & setCoverageReductionMode( vk::CoverageReductionModeNV coverageReductionMode_ ) - { - coverageReductionMode = coverageReductionMode_; - return *this; - } - - operator VkPipelineCoverageReductionStateCreateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineCoverageReductionStateCreateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineCoverageReductionStateCreateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( coverageReductionMode == rhs.coverageReductionMode ); - } - - bool operator!=( PipelineCoverageReductionStateCreateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineCoverageReductionStateCreateInfoNV::sType; - }; - static_assert( sizeof( PipelineCoverageReductionStateCreateInfoNV ) == sizeof( VkPipelineCoverageReductionStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineCoverageToColorStateCreateInfoNV - { - protected: - PipelineCoverageToColorStateCreateInfoNV( vk::PipelineCoverageToColorStateCreateFlagsNV flags_ = vk::PipelineCoverageToColorStateCreateFlagsNV(), - vk::Bool32 coverageToColorEnable_ = 0, - uint32_t coverageToColorLocation_ = 0 ) - : flags( flags_ ) - , coverageToColorEnable( coverageToColorEnable_ ) - , coverageToColorLocation( coverageToColorLocation_ ) - {} - - PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineCoverageToColorStateCreateInfoNV& operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineCoverageToColorStateCreateInfoNV; - const void* pNext = nullptr; - vk::PipelineCoverageToColorStateCreateFlagsNV flags; - vk::Bool32 coverageToColorEnable; - uint32_t coverageToColorLocation; - }; - static_assert( sizeof( PipelineCoverageToColorStateCreateInfoNV ) == sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct PipelineCoverageToColorStateCreateInfoNV : public layout::PipelineCoverageToColorStateCreateInfoNV - { - PipelineCoverageToColorStateCreateInfoNV( vk::PipelineCoverageToColorStateCreateFlagsNV flags_ = vk::PipelineCoverageToColorStateCreateFlagsNV(), - vk::Bool32 coverageToColorEnable_ = 0, - uint32_t coverageToColorLocation_ = 0 ) - : layout::PipelineCoverageToColorStateCreateInfoNV( flags_, coverageToColorEnable_, coverageToColorLocation_ ) - {} - - PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) - : layout::PipelineCoverageToColorStateCreateInfoNV( rhs ) - {} - - PipelineCoverageToColorStateCreateInfoNV& operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineCoverageToColorStateCreateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineCoverageToColorStateCreateInfoNV & setFlags( vk::PipelineCoverageToColorStateCreateFlagsNV flags_ ) - { - flags = flags_; - return *this; - } - - PipelineCoverageToColorStateCreateInfoNV & setCoverageToColorEnable( vk::Bool32 coverageToColorEnable_ ) - { - coverageToColorEnable = coverageToColorEnable_; - return *this; - } - - PipelineCoverageToColorStateCreateInfoNV & setCoverageToColorLocation( uint32_t coverageToColorLocation_ ) - { - coverageToColorLocation = coverageToColorLocation_; - return *this; - } - - operator VkPipelineCoverageToColorStateCreateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineCoverageToColorStateCreateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( coverageToColorEnable == rhs.coverageToColorEnable ) - && ( coverageToColorLocation == rhs.coverageToColorLocation ); - } - - bool operator!=( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineCoverageToColorStateCreateInfoNV::sType; - }; - static_assert( sizeof( PipelineCoverageToColorStateCreateInfoNV ) == sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PipelineCreationFeedbackEXT - { - operator VkPipelineCreationFeedbackEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineCreationFeedbackEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineCreationFeedbackEXT const& rhs ) const - { - return ( flags == rhs.flags ) - && ( duration == rhs.duration ); - } - - bool operator!=( PipelineCreationFeedbackEXT const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::PipelineCreationFeedbackFlagsEXT flags; - uint64_t duration; - }; - static_assert( sizeof( PipelineCreationFeedbackEXT ) == sizeof( VkPipelineCreationFeedbackEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineCreationFeedbackCreateInfoEXT - { - protected: - PipelineCreationFeedbackCreateInfoEXT( vk::PipelineCreationFeedbackEXT* pPipelineCreationFeedback_ = nullptr, - uint32_t pipelineStageCreationFeedbackCount_ = 0, - vk::PipelineCreationFeedbackEXT* pPipelineStageCreationFeedbacks_ = nullptr ) - : pPipelineCreationFeedback( pPipelineCreationFeedback_ ) - , pipelineStageCreationFeedbackCount( pipelineStageCreationFeedbackCount_ ) - , pPipelineStageCreationFeedbacks( pPipelineStageCreationFeedbacks_ ) - {} - - PipelineCreationFeedbackCreateInfoEXT( VkPipelineCreationFeedbackCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineCreationFeedbackCreateInfoEXT& operator=( VkPipelineCreationFeedbackCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineCreationFeedbackCreateInfoEXT; - const void* pNext = nullptr; - vk::PipelineCreationFeedbackEXT* pPipelineCreationFeedback; - uint32_t pipelineStageCreationFeedbackCount; - vk::PipelineCreationFeedbackEXT* pPipelineStageCreationFeedbacks; - }; - static_assert( sizeof( PipelineCreationFeedbackCreateInfoEXT ) == sizeof( VkPipelineCreationFeedbackCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct PipelineCreationFeedbackCreateInfoEXT : public layout::PipelineCreationFeedbackCreateInfoEXT - { - PipelineCreationFeedbackCreateInfoEXT( vk::PipelineCreationFeedbackEXT* pPipelineCreationFeedback_ = nullptr, - uint32_t pipelineStageCreationFeedbackCount_ = 0, - vk::PipelineCreationFeedbackEXT* pPipelineStageCreationFeedbacks_ = nullptr ) - : layout::PipelineCreationFeedbackCreateInfoEXT( pPipelineCreationFeedback_, pipelineStageCreationFeedbackCount_, pPipelineStageCreationFeedbacks_ ) - {} - - PipelineCreationFeedbackCreateInfoEXT( VkPipelineCreationFeedbackCreateInfoEXT const & rhs ) - : layout::PipelineCreationFeedbackCreateInfoEXT( rhs ) - {} - - PipelineCreationFeedbackCreateInfoEXT& operator=( VkPipelineCreationFeedbackCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineCreationFeedbackCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineCreationFeedbackCreateInfoEXT & setPPipelineCreationFeedback( vk::PipelineCreationFeedbackEXT* pPipelineCreationFeedback_ ) - { - pPipelineCreationFeedback = pPipelineCreationFeedback_; - return *this; - } - - PipelineCreationFeedbackCreateInfoEXT & setPipelineStageCreationFeedbackCount( uint32_t pipelineStageCreationFeedbackCount_ ) - { - pipelineStageCreationFeedbackCount = pipelineStageCreationFeedbackCount_; - return *this; - } - - PipelineCreationFeedbackCreateInfoEXT & setPPipelineStageCreationFeedbacks( vk::PipelineCreationFeedbackEXT* pPipelineStageCreationFeedbacks_ ) - { - pPipelineStageCreationFeedbacks = pPipelineStageCreationFeedbacks_; - return *this; - } - - operator VkPipelineCreationFeedbackCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineCreationFeedbackCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineCreationFeedbackCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pPipelineCreationFeedback == rhs.pPipelineCreationFeedback ) - && ( pipelineStageCreationFeedbackCount == rhs.pipelineStageCreationFeedbackCount ) - && ( pPipelineStageCreationFeedbacks == rhs.pPipelineStageCreationFeedbacks ); - } - - bool operator!=( PipelineCreationFeedbackCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineCreationFeedbackCreateInfoEXT::sType; - }; - static_assert( sizeof( PipelineCreationFeedbackCreateInfoEXT ) == sizeof( VkPipelineCreationFeedbackCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineDiscardRectangleStateCreateInfoEXT - { - protected: - PipelineDiscardRectangleStateCreateInfoEXT( vk::PipelineDiscardRectangleStateCreateFlagsEXT flags_ = vk::PipelineDiscardRectangleStateCreateFlagsEXT(), - vk::DiscardRectangleModeEXT discardRectangleMode_ = vk::DiscardRectangleModeEXT::eInclusive, - uint32_t discardRectangleCount_ = 0, - const vk::Rect2D* pDiscardRectangles_ = nullptr ) - : flags( flags_ ) - , discardRectangleMode( discardRectangleMode_ ) - , discardRectangleCount( discardRectangleCount_ ) - , pDiscardRectangles( pDiscardRectangles_ ) - {} - - PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT; - const void* pNext = nullptr; - vk::PipelineDiscardRectangleStateCreateFlagsEXT flags; - vk::DiscardRectangleModeEXT discardRectangleMode; - uint32_t discardRectangleCount; - const vk::Rect2D* pDiscardRectangles; - }; - static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct PipelineDiscardRectangleStateCreateInfoEXT : public layout::PipelineDiscardRectangleStateCreateInfoEXT - { - PipelineDiscardRectangleStateCreateInfoEXT( vk::PipelineDiscardRectangleStateCreateFlagsEXT flags_ = vk::PipelineDiscardRectangleStateCreateFlagsEXT(), - vk::DiscardRectangleModeEXT discardRectangleMode_ = vk::DiscardRectangleModeEXT::eInclusive, - uint32_t discardRectangleCount_ = 0, - const vk::Rect2D* pDiscardRectangles_ = nullptr ) - : layout::PipelineDiscardRectangleStateCreateInfoEXT( flags_, discardRectangleMode_, discardRectangleCount_, pDiscardRectangles_ ) - {} - - PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) - : layout::PipelineDiscardRectangleStateCreateInfoEXT( rhs ) - {} - - PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineDiscardRectangleStateCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineDiscardRectangleStateCreateInfoEXT & setFlags( vk::PipelineDiscardRectangleStateCreateFlagsEXT flags_ ) - { - flags = flags_; - return *this; - } - - PipelineDiscardRectangleStateCreateInfoEXT & setDiscardRectangleMode( vk::DiscardRectangleModeEXT discardRectangleMode_ ) - { - discardRectangleMode = discardRectangleMode_; - return *this; - } - - PipelineDiscardRectangleStateCreateInfoEXT & setDiscardRectangleCount( uint32_t discardRectangleCount_ ) - { - discardRectangleCount = discardRectangleCount_; - return *this; - } - - PipelineDiscardRectangleStateCreateInfoEXT & setPDiscardRectangles( const vk::Rect2D* pDiscardRectangles_ ) - { - pDiscardRectangles = pDiscardRectangles_; - return *this; - } - - operator VkPipelineDiscardRectangleStateCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineDiscardRectangleStateCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( discardRectangleMode == rhs.discardRectangleMode ) - && ( discardRectangleCount == rhs.discardRectangleCount ) - && ( pDiscardRectangles == rhs.pDiscardRectangles ); - } - - bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineDiscardRectangleStateCreateInfoEXT::sType; - }; - static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineExecutableInfoKHR - { - protected: - PipelineExecutableInfoKHR( vk::Pipeline pipeline_ = vk::Pipeline(), - uint32_t executableIndex_ = 0 ) - : pipeline( pipeline_ ) - , executableIndex( executableIndex_ ) - {} - - PipelineExecutableInfoKHR( VkPipelineExecutableInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineExecutableInfoKHR& operator=( VkPipelineExecutableInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineExecutableInfoKHR; - const void* pNext = nullptr; - vk::Pipeline pipeline; - uint32_t executableIndex; - }; - static_assert( sizeof( PipelineExecutableInfoKHR ) == sizeof( VkPipelineExecutableInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct PipelineExecutableInfoKHR : public layout::PipelineExecutableInfoKHR - { - PipelineExecutableInfoKHR( vk::Pipeline pipeline_ = vk::Pipeline(), - uint32_t executableIndex_ = 0 ) - : layout::PipelineExecutableInfoKHR( pipeline_, executableIndex_ ) - {} - - PipelineExecutableInfoKHR( VkPipelineExecutableInfoKHR const & rhs ) - : layout::PipelineExecutableInfoKHR( rhs ) - {} - - PipelineExecutableInfoKHR& operator=( VkPipelineExecutableInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineExecutableInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineExecutableInfoKHR & setPipeline( vk::Pipeline pipeline_ ) - { - pipeline = pipeline_; - return *this; - } - - PipelineExecutableInfoKHR & setExecutableIndex( uint32_t executableIndex_ ) - { - executableIndex = executableIndex_; - return *this; - } - - operator VkPipelineExecutableInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineExecutableInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineExecutableInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pipeline == rhs.pipeline ) - && ( executableIndex == rhs.executableIndex ); - } - - bool operator!=( PipelineExecutableInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineExecutableInfoKHR::sType; - }; - static_assert( sizeof( PipelineExecutableInfoKHR ) == sizeof( VkPipelineExecutableInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineExecutableInternalRepresentationKHR - { - protected: - PipelineExecutableInternalRepresentationKHR( std::array const& name_ = { { 0 } }, - std::array const& description_ = { { 0 } }, - vk::Bool32 isText_ = 0, - size_t dataSize_ = 0, - void* pData_ = nullptr ) - : isText( isText_ ) - , dataSize( dataSize_ ) - , pData( pData_ ) - { - memcpy( &name, name_.data(), VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ); - memcpy( &description, description_.data(), VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ); - - } - - PipelineExecutableInternalRepresentationKHR( VkPipelineExecutableInternalRepresentationKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineExecutableInternalRepresentationKHR& operator=( VkPipelineExecutableInternalRepresentationKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineExecutableInternalRepresentationKHR; - void* pNext = nullptr; - char name[VK_MAX_DESCRIPTION_SIZE]; - char description[VK_MAX_DESCRIPTION_SIZE]; - vk::Bool32 isText; - size_t dataSize; - void* pData; - }; - static_assert( sizeof( PipelineExecutableInternalRepresentationKHR ) == sizeof( VkPipelineExecutableInternalRepresentationKHR ), "layout struct and wrapper have different size!" ); - } - - struct PipelineExecutableInternalRepresentationKHR : public layout::PipelineExecutableInternalRepresentationKHR - { - PipelineExecutableInternalRepresentationKHR( std::array const& name_ = { { 0 } }, - std::array const& description_ = { { 0 } }, - vk::Bool32 isText_ = 0, - size_t dataSize_ = 0, - void* pData_ = nullptr ) - : layout::PipelineExecutableInternalRepresentationKHR( name_, description_, isText_, dataSize_, pData_ ) - {} - - PipelineExecutableInternalRepresentationKHR( VkPipelineExecutableInternalRepresentationKHR const & rhs ) - : layout::PipelineExecutableInternalRepresentationKHR( rhs ) - {} - - PipelineExecutableInternalRepresentationKHR& operator=( VkPipelineExecutableInternalRepresentationKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineExecutableInternalRepresentationKHR & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineExecutableInternalRepresentationKHR & setName( std::array name_ ) - { - memcpy( name, name_.data(), VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ); - return *this; - } - - PipelineExecutableInternalRepresentationKHR & setDescription( std::array description_ ) - { - memcpy( description, description_.data(), VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ); - return *this; - } - - PipelineExecutableInternalRepresentationKHR & setIsText( vk::Bool32 isText_ ) - { - isText = isText_; - return *this; - } - - PipelineExecutableInternalRepresentationKHR & setDataSize( size_t dataSize_ ) - { - dataSize = dataSize_; - return *this; - } - - PipelineExecutableInternalRepresentationKHR & setPData( void* pData_ ) - { - pData = pData_; - return *this; - } - - operator VkPipelineExecutableInternalRepresentationKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineExecutableInternalRepresentationKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineExecutableInternalRepresentationKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memcmp( name, rhs.name, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 ) - && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 ) - && ( isText == rhs.isText ) - && ( dataSize == rhs.dataSize ) - && ( pData == rhs.pData ); - } - - bool operator!=( PipelineExecutableInternalRepresentationKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineExecutableInternalRepresentationKHR::sType; - }; - static_assert( sizeof( PipelineExecutableInternalRepresentationKHR ) == sizeof( VkPipelineExecutableInternalRepresentationKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineExecutablePropertiesKHR - { - protected: - PipelineExecutablePropertiesKHR( vk::ShaderStageFlags stages_ = vk::ShaderStageFlags(), - std::array const& name_ = { { 0 } }, - std::array const& description_ = { { 0 } }, - uint32_t subgroupSize_ = 0 ) - : stages( stages_ ) - , subgroupSize( subgroupSize_ ) - { - memcpy( &name, name_.data(), VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ); - memcpy( &description, description_.data(), VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ); - - } - - PipelineExecutablePropertiesKHR( VkPipelineExecutablePropertiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineExecutablePropertiesKHR& operator=( VkPipelineExecutablePropertiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineExecutablePropertiesKHR; - void* pNext = nullptr; - vk::ShaderStageFlags stages; - char name[VK_MAX_DESCRIPTION_SIZE]; - char description[VK_MAX_DESCRIPTION_SIZE]; - uint32_t subgroupSize; - }; - static_assert( sizeof( PipelineExecutablePropertiesKHR ) == sizeof( VkPipelineExecutablePropertiesKHR ), "layout struct and wrapper have different size!" ); - } - - struct PipelineExecutablePropertiesKHR : public layout::PipelineExecutablePropertiesKHR - { - operator VkPipelineExecutablePropertiesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineExecutablePropertiesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineExecutablePropertiesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( stages == rhs.stages ) - && ( memcmp( name, rhs.name, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 ) - && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 ) - && ( subgroupSize == rhs.subgroupSize ); - } - - bool operator!=( PipelineExecutablePropertiesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineExecutablePropertiesKHR::sType; - }; - static_assert( sizeof( PipelineExecutablePropertiesKHR ) == sizeof( VkPipelineExecutablePropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - union PipelineExecutableStatisticValueKHR - { - operator VkPipelineExecutableStatisticValueKHR const&() const - { - return *reinterpret_cast(this); - } - - operator VkPipelineExecutableStatisticValueKHR &() - { - return *reinterpret_cast(this); - } - -#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS - vk::Bool32 b32; - int64_t i64; - uint64_t u64; - double f64; -#else - VkBool32 b32; - int64_t i64; - uint64_t u64; - double f64; -#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ - }; - - namespace layout - { - struct PipelineExecutableStatisticKHR - { - protected: - PipelineExecutableStatisticKHR( std::array const& name_ = { { 0 } }, - std::array const& description_ = { { 0 } }, - vk::PipelineExecutableStatisticFormatKHR format_ = vk::PipelineExecutableStatisticFormatKHR::eBool32, - vk::PipelineExecutableStatisticValueKHR value_ = vk::PipelineExecutableStatisticValueKHR() ) - : format( format_ ) - , value( value_ ) - { - memcpy( &name, name_.data(), VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ); - memcpy( &description, description_.data(), VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ); - - } - - PipelineExecutableStatisticKHR( VkPipelineExecutableStatisticKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineExecutableStatisticKHR& operator=( VkPipelineExecutableStatisticKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineExecutableStatisticKHR; - void* pNext = nullptr; - char name[VK_MAX_DESCRIPTION_SIZE]; - char description[VK_MAX_DESCRIPTION_SIZE]; - vk::PipelineExecutableStatisticFormatKHR format; - vk::PipelineExecutableStatisticValueKHR value; - }; - static_assert( sizeof( PipelineExecutableStatisticKHR ) == sizeof( VkPipelineExecutableStatisticKHR ), "layout struct and wrapper have different size!" ); - } - - struct PipelineExecutableStatisticKHR : public layout::PipelineExecutableStatisticKHR - { - operator VkPipelineExecutableStatisticKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineExecutableStatisticKHR &() - { - return *reinterpret_cast( this ); - } - - private: - using layout::PipelineExecutableStatisticKHR::sType; - }; - static_assert( sizeof( PipelineExecutableStatisticKHR ) == sizeof( VkPipelineExecutableStatisticKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineInfoKHR - { - protected: - PipelineInfoKHR( vk::Pipeline pipeline_ = vk::Pipeline() ) - : pipeline( pipeline_ ) - {} - - PipelineInfoKHR( VkPipelineInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineInfoKHR& operator=( VkPipelineInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineInfoKHR; - const void* pNext = nullptr; - vk::Pipeline pipeline; - }; - static_assert( sizeof( PipelineInfoKHR ) == sizeof( VkPipelineInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct PipelineInfoKHR : public layout::PipelineInfoKHR - { - PipelineInfoKHR( vk::Pipeline pipeline_ = vk::Pipeline() ) - : layout::PipelineInfoKHR( pipeline_ ) - {} - - PipelineInfoKHR( VkPipelineInfoKHR const & rhs ) - : layout::PipelineInfoKHR( rhs ) - {} - - PipelineInfoKHR& operator=( VkPipelineInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineInfoKHR & setPipeline( vk::Pipeline pipeline_ ) - { - pipeline = pipeline_; - return *this; - } - - operator VkPipelineInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pipeline == rhs.pipeline ); - } - - bool operator!=( PipelineInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineInfoKHR::sType; - }; - static_assert( sizeof( PipelineInfoKHR ) == sizeof( VkPipelineInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PushConstantRange - { - PushConstantRange( vk::ShaderStageFlags stageFlags_ = vk::ShaderStageFlags(), - uint32_t offset_ = 0, - uint32_t size_ = 0 ) - : stageFlags( stageFlags_ ) - , offset( offset_ ) - , size( size_ ) - {} - - PushConstantRange( VkPushConstantRange const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PushConstantRange& operator=( VkPushConstantRange const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PushConstantRange & setStageFlags( vk::ShaderStageFlags stageFlags_ ) - { - stageFlags = stageFlags_; - return *this; - } - - PushConstantRange & setOffset( uint32_t offset_ ) - { - offset = offset_; - return *this; - } - - PushConstantRange & setSize( uint32_t size_ ) - { - size = size_; - return *this; - } - - operator VkPushConstantRange const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPushConstantRange &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PushConstantRange const& rhs ) const - { - return ( stageFlags == rhs.stageFlags ) - && ( offset == rhs.offset ) - && ( size == rhs.size ); - } - - bool operator!=( PushConstantRange const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ShaderStageFlags stageFlags; - uint32_t offset; - uint32_t size; - }; - static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineLayoutCreateInfo - { - protected: - PipelineLayoutCreateInfo( vk::PipelineLayoutCreateFlags flags_ = vk::PipelineLayoutCreateFlags(), - uint32_t setLayoutCount_ = 0, - const vk::DescriptorSetLayout* pSetLayouts_ = nullptr, - uint32_t pushConstantRangeCount_ = 0, - const vk::PushConstantRange* pPushConstantRanges_ = nullptr ) - : flags( flags_ ) - , setLayoutCount( setLayoutCount_ ) - , pSetLayouts( pSetLayouts_ ) - , pushConstantRangeCount( pushConstantRangeCount_ ) - , pPushConstantRanges( pPushConstantRanges_ ) - {} - - PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineLayoutCreateInfo; - const void* pNext = nullptr; - vk::PipelineLayoutCreateFlags flags; - uint32_t setLayoutCount; - const vk::DescriptorSetLayout* pSetLayouts; - uint32_t pushConstantRangeCount; - const vk::PushConstantRange* pPushConstantRanges; - }; - static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct PipelineLayoutCreateInfo : public layout::PipelineLayoutCreateInfo - { - PipelineLayoutCreateInfo( vk::PipelineLayoutCreateFlags flags_ = vk::PipelineLayoutCreateFlags(), - uint32_t setLayoutCount_ = 0, - const vk::DescriptorSetLayout* pSetLayouts_ = nullptr, - uint32_t pushConstantRangeCount_ = 0, - const vk::PushConstantRange* pPushConstantRanges_ = nullptr ) - : layout::PipelineLayoutCreateInfo( flags_, setLayoutCount_, pSetLayouts_, pushConstantRangeCount_, pPushConstantRanges_ ) - {} - - PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs ) - : layout::PipelineLayoutCreateInfo( rhs ) - {} - - PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineLayoutCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineLayoutCreateInfo & setFlags( vk::PipelineLayoutCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - PipelineLayoutCreateInfo & setSetLayoutCount( uint32_t setLayoutCount_ ) - { - setLayoutCount = setLayoutCount_; - return *this; - } - - PipelineLayoutCreateInfo & setPSetLayouts( const vk::DescriptorSetLayout* pSetLayouts_ ) - { - pSetLayouts = pSetLayouts_; - return *this; - } - - PipelineLayoutCreateInfo & setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) - { - pushConstantRangeCount = pushConstantRangeCount_; - return *this; - } - - PipelineLayoutCreateInfo & setPPushConstantRanges( const vk::PushConstantRange* pPushConstantRanges_ ) - { - pPushConstantRanges = pPushConstantRanges_; - return *this; - } - - operator VkPipelineLayoutCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineLayoutCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineLayoutCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( setLayoutCount == rhs.setLayoutCount ) - && ( pSetLayouts == rhs.pSetLayouts ) - && ( pushConstantRangeCount == rhs.pushConstantRangeCount ) - && ( pPushConstantRanges == rhs.pPushConstantRanges ); - } - - bool operator!=( PipelineLayoutCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineLayoutCreateInfo::sType; - }; - static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineRasterizationConservativeStateCreateInfoEXT - { - protected: - PipelineRasterizationConservativeStateCreateInfoEXT( vk::PipelineRasterizationConservativeStateCreateFlagsEXT flags_ = vk::PipelineRasterizationConservativeStateCreateFlagsEXT(), - vk::ConservativeRasterizationModeEXT conservativeRasterizationMode_ = vk::ConservativeRasterizationModeEXT::eDisabled, - float extraPrimitiveOverestimationSize_ = 0 ) - : flags( flags_ ) - , conservativeRasterizationMode( conservativeRasterizationMode_ ) - , extraPrimitiveOverestimationSize( extraPrimitiveOverestimationSize_ ) - {} - - PipelineRasterizationConservativeStateCreateInfoEXT( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineRasterizationConservativeStateCreateInfoEXT& operator=( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT; - const void* pNext = nullptr; - vk::PipelineRasterizationConservativeStateCreateFlagsEXT flags; - vk::ConservativeRasterizationModeEXT conservativeRasterizationMode; - float extraPrimitiveOverestimationSize; - }; - static_assert( sizeof( PipelineRasterizationConservativeStateCreateInfoEXT ) == sizeof( VkPipelineRasterizationConservativeStateCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct PipelineRasterizationConservativeStateCreateInfoEXT : public layout::PipelineRasterizationConservativeStateCreateInfoEXT - { - PipelineRasterizationConservativeStateCreateInfoEXT( vk::PipelineRasterizationConservativeStateCreateFlagsEXT flags_ = vk::PipelineRasterizationConservativeStateCreateFlagsEXT(), - vk::ConservativeRasterizationModeEXT conservativeRasterizationMode_ = vk::ConservativeRasterizationModeEXT::eDisabled, - float extraPrimitiveOverestimationSize_ = 0 ) - : layout::PipelineRasterizationConservativeStateCreateInfoEXT( flags_, conservativeRasterizationMode_, extraPrimitiveOverestimationSize_ ) - {} - - PipelineRasterizationConservativeStateCreateInfoEXT( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) - : layout::PipelineRasterizationConservativeStateCreateInfoEXT( rhs ) - {} - - PipelineRasterizationConservativeStateCreateInfoEXT& operator=( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineRasterizationConservativeStateCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineRasterizationConservativeStateCreateInfoEXT & setFlags( vk::PipelineRasterizationConservativeStateCreateFlagsEXT flags_ ) - { - flags = flags_; - return *this; - } - - PipelineRasterizationConservativeStateCreateInfoEXT & setConservativeRasterizationMode( vk::ConservativeRasterizationModeEXT conservativeRasterizationMode_ ) - { - conservativeRasterizationMode = conservativeRasterizationMode_; - return *this; - } - - PipelineRasterizationConservativeStateCreateInfoEXT & setExtraPrimitiveOverestimationSize( float extraPrimitiveOverestimationSize_ ) - { - extraPrimitiveOverestimationSize = extraPrimitiveOverestimationSize_; - return *this; - } - - operator VkPipelineRasterizationConservativeStateCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineRasterizationConservativeStateCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineRasterizationConservativeStateCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( conservativeRasterizationMode == rhs.conservativeRasterizationMode ) - && ( extraPrimitiveOverestimationSize == rhs.extraPrimitiveOverestimationSize ); - } - - bool operator!=( PipelineRasterizationConservativeStateCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineRasterizationConservativeStateCreateInfoEXT::sType; - }; - static_assert( sizeof( PipelineRasterizationConservativeStateCreateInfoEXT ) == sizeof( VkPipelineRasterizationConservativeStateCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineRasterizationDepthClipStateCreateInfoEXT - { - protected: - PipelineRasterizationDepthClipStateCreateInfoEXT( vk::PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ = vk::PipelineRasterizationDepthClipStateCreateFlagsEXT(), - vk::Bool32 depthClipEnable_ = 0 ) - : flags( flags_ ) - , depthClipEnable( depthClipEnable_ ) - {} - - PipelineRasterizationDepthClipStateCreateInfoEXT( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineRasterizationDepthClipStateCreateInfoEXT& operator=( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT; - const void* pNext = nullptr; - vk::PipelineRasterizationDepthClipStateCreateFlagsEXT flags; - vk::Bool32 depthClipEnable; - }; - static_assert( sizeof( PipelineRasterizationDepthClipStateCreateInfoEXT ) == sizeof( VkPipelineRasterizationDepthClipStateCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct PipelineRasterizationDepthClipStateCreateInfoEXT : public layout::PipelineRasterizationDepthClipStateCreateInfoEXT - { - PipelineRasterizationDepthClipStateCreateInfoEXT( vk::PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ = vk::PipelineRasterizationDepthClipStateCreateFlagsEXT(), - vk::Bool32 depthClipEnable_ = 0 ) - : layout::PipelineRasterizationDepthClipStateCreateInfoEXT( flags_, depthClipEnable_ ) - {} - - PipelineRasterizationDepthClipStateCreateInfoEXT( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) - : layout::PipelineRasterizationDepthClipStateCreateInfoEXT( rhs ) - {} - - PipelineRasterizationDepthClipStateCreateInfoEXT& operator=( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineRasterizationDepthClipStateCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineRasterizationDepthClipStateCreateInfoEXT & setFlags( vk::PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ ) - { - flags = flags_; - return *this; - } - - PipelineRasterizationDepthClipStateCreateInfoEXT & setDepthClipEnable( vk::Bool32 depthClipEnable_ ) - { - depthClipEnable = depthClipEnable_; - return *this; - } - - operator VkPipelineRasterizationDepthClipStateCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineRasterizationDepthClipStateCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineRasterizationDepthClipStateCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( depthClipEnable == rhs.depthClipEnable ); - } - - bool operator!=( PipelineRasterizationDepthClipStateCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineRasterizationDepthClipStateCreateInfoEXT::sType; - }; - static_assert( sizeof( PipelineRasterizationDepthClipStateCreateInfoEXT ) == sizeof( VkPipelineRasterizationDepthClipStateCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineRasterizationLineStateCreateInfoEXT - { - protected: - PipelineRasterizationLineStateCreateInfoEXT( vk::LineRasterizationModeEXT lineRasterizationMode_ = vk::LineRasterizationModeEXT::eDefault, - vk::Bool32 stippledLineEnable_ = 0, - uint32_t lineStippleFactor_ = 0, - uint16_t lineStipplePattern_ = 0 ) - : lineRasterizationMode( lineRasterizationMode_ ) - , stippledLineEnable( stippledLineEnable_ ) - , lineStippleFactor( lineStippleFactor_ ) - , lineStipplePattern( lineStipplePattern_ ) - {} - - PipelineRasterizationLineStateCreateInfoEXT( VkPipelineRasterizationLineStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineRasterizationLineStateCreateInfoEXT& operator=( VkPipelineRasterizationLineStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineRasterizationLineStateCreateInfoEXT; - const void* pNext = nullptr; - vk::LineRasterizationModeEXT lineRasterizationMode; - vk::Bool32 stippledLineEnable; - uint32_t lineStippleFactor; - uint16_t lineStipplePattern; - }; - static_assert( sizeof( PipelineRasterizationLineStateCreateInfoEXT ) == sizeof( VkPipelineRasterizationLineStateCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct PipelineRasterizationLineStateCreateInfoEXT : public layout::PipelineRasterizationLineStateCreateInfoEXT - { - PipelineRasterizationLineStateCreateInfoEXT( vk::LineRasterizationModeEXT lineRasterizationMode_ = vk::LineRasterizationModeEXT::eDefault, - vk::Bool32 stippledLineEnable_ = 0, - uint32_t lineStippleFactor_ = 0, - uint16_t lineStipplePattern_ = 0 ) - : layout::PipelineRasterizationLineStateCreateInfoEXT( lineRasterizationMode_, stippledLineEnable_, lineStippleFactor_, lineStipplePattern_ ) - {} - - PipelineRasterizationLineStateCreateInfoEXT( VkPipelineRasterizationLineStateCreateInfoEXT const & rhs ) - : layout::PipelineRasterizationLineStateCreateInfoEXT( rhs ) - {} - - PipelineRasterizationLineStateCreateInfoEXT& operator=( VkPipelineRasterizationLineStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineRasterizationLineStateCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineRasterizationLineStateCreateInfoEXT & setLineRasterizationMode( vk::LineRasterizationModeEXT lineRasterizationMode_ ) - { - lineRasterizationMode = lineRasterizationMode_; - return *this; - } - - PipelineRasterizationLineStateCreateInfoEXT & setStippledLineEnable( vk::Bool32 stippledLineEnable_ ) - { - stippledLineEnable = stippledLineEnable_; - return *this; - } - - PipelineRasterizationLineStateCreateInfoEXT & setLineStippleFactor( uint32_t lineStippleFactor_ ) - { - lineStippleFactor = lineStippleFactor_; - return *this; - } - - PipelineRasterizationLineStateCreateInfoEXT & setLineStipplePattern( uint16_t lineStipplePattern_ ) - { - lineStipplePattern = lineStipplePattern_; - return *this; - } - - operator VkPipelineRasterizationLineStateCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineRasterizationLineStateCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineRasterizationLineStateCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( lineRasterizationMode == rhs.lineRasterizationMode ) - && ( stippledLineEnable == rhs.stippledLineEnable ) - && ( lineStippleFactor == rhs.lineStippleFactor ) - && ( lineStipplePattern == rhs.lineStipplePattern ); - } - - bool operator!=( PipelineRasterizationLineStateCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineRasterizationLineStateCreateInfoEXT::sType; - }; - static_assert( sizeof( PipelineRasterizationLineStateCreateInfoEXT ) == sizeof( VkPipelineRasterizationLineStateCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineRasterizationStateRasterizationOrderAMD - { - protected: - PipelineRasterizationStateRasterizationOrderAMD( vk::RasterizationOrderAMD rasterizationOrder_ = vk::RasterizationOrderAMD::eStrict ) - : rasterizationOrder( rasterizationOrder_ ) - {} - - PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineRasterizationStateRasterizationOrderAMD; - const void* pNext = nullptr; - vk::RasterizationOrderAMD rasterizationOrder; - }; - static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "layout struct and wrapper have different size!" ); - } - - struct PipelineRasterizationStateRasterizationOrderAMD : public layout::PipelineRasterizationStateRasterizationOrderAMD - { - PipelineRasterizationStateRasterizationOrderAMD( vk::RasterizationOrderAMD rasterizationOrder_ = vk::RasterizationOrderAMD::eStrict ) - : layout::PipelineRasterizationStateRasterizationOrderAMD( rasterizationOrder_ ) - {} - - PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) - : layout::PipelineRasterizationStateRasterizationOrderAMD( rhs ) - {} - - PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineRasterizationStateRasterizationOrderAMD & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineRasterizationStateRasterizationOrderAMD & setRasterizationOrder( vk::RasterizationOrderAMD rasterizationOrder_ ) - { - rasterizationOrder = rasterizationOrder_; - return *this; - } - - operator VkPipelineRasterizationStateRasterizationOrderAMD const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineRasterizationStateRasterizationOrderAMD &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( rasterizationOrder == rhs.rasterizationOrder ); - } - - bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineRasterizationStateRasterizationOrderAMD::sType; - }; - static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineRasterizationStateStreamCreateInfoEXT - { - protected: - PipelineRasterizationStateStreamCreateInfoEXT( vk::PipelineRasterizationStateStreamCreateFlagsEXT flags_ = vk::PipelineRasterizationStateStreamCreateFlagsEXT(), - uint32_t rasterizationStream_ = 0 ) - : flags( flags_ ) - , rasterizationStream( rasterizationStream_ ) - {} - - PipelineRasterizationStateStreamCreateInfoEXT( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineRasterizationStateStreamCreateInfoEXT& operator=( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineRasterizationStateStreamCreateInfoEXT; - const void* pNext = nullptr; - vk::PipelineRasterizationStateStreamCreateFlagsEXT flags; - uint32_t rasterizationStream; - }; - static_assert( sizeof( PipelineRasterizationStateStreamCreateInfoEXT ) == sizeof( VkPipelineRasterizationStateStreamCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct PipelineRasterizationStateStreamCreateInfoEXT : public layout::PipelineRasterizationStateStreamCreateInfoEXT - { - PipelineRasterizationStateStreamCreateInfoEXT( vk::PipelineRasterizationStateStreamCreateFlagsEXT flags_ = vk::PipelineRasterizationStateStreamCreateFlagsEXT(), - uint32_t rasterizationStream_ = 0 ) - : layout::PipelineRasterizationStateStreamCreateInfoEXT( flags_, rasterizationStream_ ) - {} - - PipelineRasterizationStateStreamCreateInfoEXT( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) - : layout::PipelineRasterizationStateStreamCreateInfoEXT( rhs ) - {} - - PipelineRasterizationStateStreamCreateInfoEXT& operator=( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineRasterizationStateStreamCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineRasterizationStateStreamCreateInfoEXT & setFlags( vk::PipelineRasterizationStateStreamCreateFlagsEXT flags_ ) - { - flags = flags_; - return *this; - } - - PipelineRasterizationStateStreamCreateInfoEXT & setRasterizationStream( uint32_t rasterizationStream_ ) - { - rasterizationStream = rasterizationStream_; - return *this; - } - - operator VkPipelineRasterizationStateStreamCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineRasterizationStateStreamCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineRasterizationStateStreamCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( rasterizationStream == rhs.rasterizationStream ); - } - - bool operator!=( PipelineRasterizationStateStreamCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineRasterizationStateStreamCreateInfoEXT::sType; - }; - static_assert( sizeof( PipelineRasterizationStateStreamCreateInfoEXT ) == sizeof( VkPipelineRasterizationStateStreamCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineRepresentativeFragmentTestStateCreateInfoNV - { - protected: - PipelineRepresentativeFragmentTestStateCreateInfoNV( vk::Bool32 representativeFragmentTestEnable_ = 0 ) - : representativeFragmentTestEnable( representativeFragmentTestEnable_ ) - {} - - PipelineRepresentativeFragmentTestStateCreateInfoNV( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineRepresentativeFragmentTestStateCreateInfoNV& operator=( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV; - const void* pNext = nullptr; - vk::Bool32 representativeFragmentTestEnable; - }; - static_assert( sizeof( PipelineRepresentativeFragmentTestStateCreateInfoNV ) == sizeof( VkPipelineRepresentativeFragmentTestStateCreateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct PipelineRepresentativeFragmentTestStateCreateInfoNV : public layout::PipelineRepresentativeFragmentTestStateCreateInfoNV - { - PipelineRepresentativeFragmentTestStateCreateInfoNV( vk::Bool32 representativeFragmentTestEnable_ = 0 ) - : layout::PipelineRepresentativeFragmentTestStateCreateInfoNV( representativeFragmentTestEnable_ ) - {} - - PipelineRepresentativeFragmentTestStateCreateInfoNV( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) - : layout::PipelineRepresentativeFragmentTestStateCreateInfoNV( rhs ) - {} - - PipelineRepresentativeFragmentTestStateCreateInfoNV& operator=( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineRepresentativeFragmentTestStateCreateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineRepresentativeFragmentTestStateCreateInfoNV & setRepresentativeFragmentTestEnable( vk::Bool32 representativeFragmentTestEnable_ ) - { - representativeFragmentTestEnable = representativeFragmentTestEnable_; - return *this; - } - - operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineRepresentativeFragmentTestStateCreateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( representativeFragmentTestEnable == rhs.representativeFragmentTestEnable ); - } - - bool operator!=( PipelineRepresentativeFragmentTestStateCreateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineRepresentativeFragmentTestStateCreateInfoNV::sType; - }; - static_assert( sizeof( PipelineRepresentativeFragmentTestStateCreateInfoNV ) == sizeof( VkPipelineRepresentativeFragmentTestStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineSampleLocationsStateCreateInfoEXT - { - protected: - PipelineSampleLocationsStateCreateInfoEXT( vk::Bool32 sampleLocationsEnable_ = 0, - vk::SampleLocationsInfoEXT sampleLocationsInfo_ = vk::SampleLocationsInfoEXT() ) - : sampleLocationsEnable( sampleLocationsEnable_ ) - , sampleLocationsInfo( sampleLocationsInfo_ ) - {} - - PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineSampleLocationsStateCreateInfoEXT& operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineSampleLocationsStateCreateInfoEXT; - const void* pNext = nullptr; - vk::Bool32 sampleLocationsEnable; - vk::SampleLocationsInfoEXT sampleLocationsInfo; - }; - static_assert( sizeof( PipelineSampleLocationsStateCreateInfoEXT ) == sizeof( VkPipelineSampleLocationsStateCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct PipelineSampleLocationsStateCreateInfoEXT : public layout::PipelineSampleLocationsStateCreateInfoEXT - { - PipelineSampleLocationsStateCreateInfoEXT( vk::Bool32 sampleLocationsEnable_ = 0, - vk::SampleLocationsInfoEXT sampleLocationsInfo_ = vk::SampleLocationsInfoEXT() ) - : layout::PipelineSampleLocationsStateCreateInfoEXT( sampleLocationsEnable_, sampleLocationsInfo_ ) - {} - - PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) - : layout::PipelineSampleLocationsStateCreateInfoEXT( rhs ) - {} - - PipelineSampleLocationsStateCreateInfoEXT& operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineSampleLocationsStateCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineSampleLocationsStateCreateInfoEXT & setSampleLocationsEnable( vk::Bool32 sampleLocationsEnable_ ) - { - sampleLocationsEnable = sampleLocationsEnable_; - return *this; - } - - PipelineSampleLocationsStateCreateInfoEXT & setSampleLocationsInfo( vk::SampleLocationsInfoEXT sampleLocationsInfo_ ) - { - sampleLocationsInfo = sampleLocationsInfo_; - return *this; - } - - operator VkPipelineSampleLocationsStateCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineSampleLocationsStateCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( sampleLocationsEnable == rhs.sampleLocationsEnable ) - && ( sampleLocationsInfo == rhs.sampleLocationsInfo ); - } - - bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineSampleLocationsStateCreateInfoEXT::sType; - }; - static_assert( sizeof( PipelineSampleLocationsStateCreateInfoEXT ) == sizeof( VkPipelineSampleLocationsStateCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT - { - protected: - PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT( uint32_t requiredSubgroupSize_ = 0 ) - : requiredSubgroupSize( requiredSubgroupSize_ ) - {} - - PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT( VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT& operator=( VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT; - void* pNext = nullptr; - uint32_t requiredSubgroupSize; - }; - static_assert( sizeof( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT ) == sizeof( VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT : public layout::PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT - { - operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( requiredSubgroupSize == rhs.requiredSubgroupSize ); - } - - bool operator!=( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT::sType; - }; - static_assert( sizeof( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT ) == sizeof( VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineTessellationDomainOriginStateCreateInfo - { - protected: - PipelineTessellationDomainOriginStateCreateInfo( vk::TessellationDomainOrigin domainOrigin_ = vk::TessellationDomainOrigin::eUpperLeft ) - : domainOrigin( domainOrigin_ ) - {} - - PipelineTessellationDomainOriginStateCreateInfo( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineTessellationDomainOriginStateCreateInfo& operator=( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineTessellationDomainOriginStateCreateInfo; - const void* pNext = nullptr; - vk::TessellationDomainOrigin domainOrigin; - }; - static_assert( sizeof( PipelineTessellationDomainOriginStateCreateInfo ) == sizeof( VkPipelineTessellationDomainOriginStateCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct PipelineTessellationDomainOriginStateCreateInfo : public layout::PipelineTessellationDomainOriginStateCreateInfo - { - PipelineTessellationDomainOriginStateCreateInfo( vk::TessellationDomainOrigin domainOrigin_ = vk::TessellationDomainOrigin::eUpperLeft ) - : layout::PipelineTessellationDomainOriginStateCreateInfo( domainOrigin_ ) - {} - - PipelineTessellationDomainOriginStateCreateInfo( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) - : layout::PipelineTessellationDomainOriginStateCreateInfo( rhs ) - {} - - PipelineTessellationDomainOriginStateCreateInfo& operator=( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineTessellationDomainOriginStateCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineTessellationDomainOriginStateCreateInfo & setDomainOrigin( vk::TessellationDomainOrigin domainOrigin_ ) - { - domainOrigin = domainOrigin_; - return *this; - } - - operator VkPipelineTessellationDomainOriginStateCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineTessellationDomainOriginStateCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineTessellationDomainOriginStateCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( domainOrigin == rhs.domainOrigin ); - } - - bool operator!=( PipelineTessellationDomainOriginStateCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineTessellationDomainOriginStateCreateInfo::sType; - }; - static_assert( sizeof( PipelineTessellationDomainOriginStateCreateInfo ) == sizeof( VkPipelineTessellationDomainOriginStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct VertexInputBindingDivisorDescriptionEXT - { - VertexInputBindingDivisorDescriptionEXT( uint32_t binding_ = 0, - uint32_t divisor_ = 0 ) - : binding( binding_ ) - , divisor( divisor_ ) - {} - - VertexInputBindingDivisorDescriptionEXT( VkVertexInputBindingDivisorDescriptionEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - VertexInputBindingDivisorDescriptionEXT& operator=( VkVertexInputBindingDivisorDescriptionEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - VertexInputBindingDivisorDescriptionEXT & setBinding( uint32_t binding_ ) - { - binding = binding_; - return *this; - } - - VertexInputBindingDivisorDescriptionEXT & setDivisor( uint32_t divisor_ ) - { - divisor = divisor_; - return *this; - } - - operator VkVertexInputBindingDivisorDescriptionEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkVertexInputBindingDivisorDescriptionEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( VertexInputBindingDivisorDescriptionEXT const& rhs ) const - { - return ( binding == rhs.binding ) - && ( divisor == rhs.divisor ); - } - - bool operator!=( VertexInputBindingDivisorDescriptionEXT const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t binding; - uint32_t divisor; - }; - static_assert( sizeof( VertexInputBindingDivisorDescriptionEXT ) == sizeof( VkVertexInputBindingDivisorDescriptionEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineVertexInputDivisorStateCreateInfoEXT - { - protected: - PipelineVertexInputDivisorStateCreateInfoEXT( uint32_t vertexBindingDivisorCount_ = 0, - const vk::VertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors_ = nullptr ) - : vertexBindingDivisorCount( vertexBindingDivisorCount_ ) - , pVertexBindingDivisors( pVertexBindingDivisors_ ) - {} - - PipelineVertexInputDivisorStateCreateInfoEXT( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineVertexInputDivisorStateCreateInfoEXT& operator=( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT; - const void* pNext = nullptr; - uint32_t vertexBindingDivisorCount; - const vk::VertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors; - }; - static_assert( sizeof( PipelineVertexInputDivisorStateCreateInfoEXT ) == sizeof( VkPipelineVertexInputDivisorStateCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct PipelineVertexInputDivisorStateCreateInfoEXT : public layout::PipelineVertexInputDivisorStateCreateInfoEXT - { - PipelineVertexInputDivisorStateCreateInfoEXT( uint32_t vertexBindingDivisorCount_ = 0, - const vk::VertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors_ = nullptr ) - : layout::PipelineVertexInputDivisorStateCreateInfoEXT( vertexBindingDivisorCount_, pVertexBindingDivisors_ ) - {} - - PipelineVertexInputDivisorStateCreateInfoEXT( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) - : layout::PipelineVertexInputDivisorStateCreateInfoEXT( rhs ) - {} - - PipelineVertexInputDivisorStateCreateInfoEXT& operator=( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineVertexInputDivisorStateCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineVertexInputDivisorStateCreateInfoEXT & setVertexBindingDivisorCount( uint32_t vertexBindingDivisorCount_ ) - { - vertexBindingDivisorCount = vertexBindingDivisorCount_; - return *this; - } - - PipelineVertexInputDivisorStateCreateInfoEXT & setPVertexBindingDivisors( const vk::VertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors_ ) - { - pVertexBindingDivisors = pVertexBindingDivisors_; - return *this; - } - - operator VkPipelineVertexInputDivisorStateCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineVertexInputDivisorStateCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineVertexInputDivisorStateCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( vertexBindingDivisorCount == rhs.vertexBindingDivisorCount ) - && ( pVertexBindingDivisors == rhs.pVertexBindingDivisors ); - } - - bool operator!=( PipelineVertexInputDivisorStateCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineVertexInputDivisorStateCreateInfoEXT::sType; - }; - static_assert( sizeof( PipelineVertexInputDivisorStateCreateInfoEXT ) == sizeof( VkPipelineVertexInputDivisorStateCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineViewportCoarseSampleOrderStateCreateInfoNV - { - protected: - PipelineViewportCoarseSampleOrderStateCreateInfoNV( vk::CoarseSampleOrderTypeNV sampleOrderType_ = vk::CoarseSampleOrderTypeNV::eDefault, - uint32_t customSampleOrderCount_ = 0, - const vk::CoarseSampleOrderCustomNV* pCustomSampleOrders_ = nullptr ) - : sampleOrderType( sampleOrderType_ ) - , customSampleOrderCount( customSampleOrderCount_ ) - , pCustomSampleOrders( pCustomSampleOrders_ ) - {} - - PipelineViewportCoarseSampleOrderStateCreateInfoNV( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineViewportCoarseSampleOrderStateCreateInfoNV& operator=( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV; - const void* pNext = nullptr; - vk::CoarseSampleOrderTypeNV sampleOrderType; - uint32_t customSampleOrderCount; - const vk::CoarseSampleOrderCustomNV* pCustomSampleOrders; - }; - static_assert( sizeof( PipelineViewportCoarseSampleOrderStateCreateInfoNV ) == sizeof( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct PipelineViewportCoarseSampleOrderStateCreateInfoNV : public layout::PipelineViewportCoarseSampleOrderStateCreateInfoNV - { - PipelineViewportCoarseSampleOrderStateCreateInfoNV( vk::CoarseSampleOrderTypeNV sampleOrderType_ = vk::CoarseSampleOrderTypeNV::eDefault, - uint32_t customSampleOrderCount_ = 0, - const vk::CoarseSampleOrderCustomNV* pCustomSampleOrders_ = nullptr ) - : layout::PipelineViewportCoarseSampleOrderStateCreateInfoNV( sampleOrderType_, customSampleOrderCount_, pCustomSampleOrders_ ) - {} - - PipelineViewportCoarseSampleOrderStateCreateInfoNV( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) - : layout::PipelineViewportCoarseSampleOrderStateCreateInfoNV( rhs ) - {} - - PipelineViewportCoarseSampleOrderStateCreateInfoNV& operator=( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineViewportCoarseSampleOrderStateCreateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineViewportCoarseSampleOrderStateCreateInfoNV & setSampleOrderType( vk::CoarseSampleOrderTypeNV sampleOrderType_ ) - { - sampleOrderType = sampleOrderType_; - return *this; - } - - PipelineViewportCoarseSampleOrderStateCreateInfoNV & setCustomSampleOrderCount( uint32_t customSampleOrderCount_ ) - { - customSampleOrderCount = customSampleOrderCount_; - return *this; - } - - PipelineViewportCoarseSampleOrderStateCreateInfoNV & setPCustomSampleOrders( const vk::CoarseSampleOrderCustomNV* pCustomSampleOrders_ ) - { - pCustomSampleOrders = pCustomSampleOrders_; - return *this; - } - - operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineViewportCoarseSampleOrderStateCreateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( sampleOrderType == rhs.sampleOrderType ) - && ( customSampleOrderCount == rhs.customSampleOrderCount ) - && ( pCustomSampleOrders == rhs.pCustomSampleOrders ); - } - - bool operator!=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineViewportCoarseSampleOrderStateCreateInfoNV::sType; - }; - static_assert( sizeof( PipelineViewportCoarseSampleOrderStateCreateInfoNV ) == sizeof( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineViewportExclusiveScissorStateCreateInfoNV - { - protected: - PipelineViewportExclusiveScissorStateCreateInfoNV( uint32_t exclusiveScissorCount_ = 0, - const vk::Rect2D* pExclusiveScissors_ = nullptr ) - : exclusiveScissorCount( exclusiveScissorCount_ ) - , pExclusiveScissors( pExclusiveScissors_ ) - {} - - PipelineViewportExclusiveScissorStateCreateInfoNV( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineViewportExclusiveScissorStateCreateInfoNV& operator=( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV; - const void* pNext = nullptr; - uint32_t exclusiveScissorCount; - const vk::Rect2D* pExclusiveScissors; - }; - static_assert( sizeof( PipelineViewportExclusiveScissorStateCreateInfoNV ) == sizeof( VkPipelineViewportExclusiveScissorStateCreateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct PipelineViewportExclusiveScissorStateCreateInfoNV : public layout::PipelineViewportExclusiveScissorStateCreateInfoNV - { - PipelineViewportExclusiveScissorStateCreateInfoNV( uint32_t exclusiveScissorCount_ = 0, - const vk::Rect2D* pExclusiveScissors_ = nullptr ) - : layout::PipelineViewportExclusiveScissorStateCreateInfoNV( exclusiveScissorCount_, pExclusiveScissors_ ) - {} - - PipelineViewportExclusiveScissorStateCreateInfoNV( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) - : layout::PipelineViewportExclusiveScissorStateCreateInfoNV( rhs ) - {} - - PipelineViewportExclusiveScissorStateCreateInfoNV& operator=( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineViewportExclusiveScissorStateCreateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineViewportExclusiveScissorStateCreateInfoNV & setExclusiveScissorCount( uint32_t exclusiveScissorCount_ ) - { - exclusiveScissorCount = exclusiveScissorCount_; - return *this; - } - - PipelineViewportExclusiveScissorStateCreateInfoNV & setPExclusiveScissors( const vk::Rect2D* pExclusiveScissors_ ) - { - pExclusiveScissors = pExclusiveScissors_; - return *this; - } - - operator VkPipelineViewportExclusiveScissorStateCreateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineViewportExclusiveScissorStateCreateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineViewportExclusiveScissorStateCreateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( exclusiveScissorCount == rhs.exclusiveScissorCount ) - && ( pExclusiveScissors == rhs.pExclusiveScissors ); - } - - bool operator!=( PipelineViewportExclusiveScissorStateCreateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineViewportExclusiveScissorStateCreateInfoNV::sType; - }; - static_assert( sizeof( PipelineViewportExclusiveScissorStateCreateInfoNV ) == sizeof( VkPipelineViewportExclusiveScissorStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ShadingRatePaletteNV - { - ShadingRatePaletteNV( uint32_t shadingRatePaletteEntryCount_ = 0, - const vk::ShadingRatePaletteEntryNV* pShadingRatePaletteEntries_ = nullptr ) - : shadingRatePaletteEntryCount( shadingRatePaletteEntryCount_ ) - , pShadingRatePaletteEntries( pShadingRatePaletteEntries_ ) - {} - - ShadingRatePaletteNV( VkShadingRatePaletteNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ShadingRatePaletteNV& operator=( VkShadingRatePaletteNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ShadingRatePaletteNV & setShadingRatePaletteEntryCount( uint32_t shadingRatePaletteEntryCount_ ) - { - shadingRatePaletteEntryCount = shadingRatePaletteEntryCount_; - return *this; - } - - ShadingRatePaletteNV & setPShadingRatePaletteEntries( const vk::ShadingRatePaletteEntryNV* pShadingRatePaletteEntries_ ) - { - pShadingRatePaletteEntries = pShadingRatePaletteEntries_; - return *this; - } - - operator VkShadingRatePaletteNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkShadingRatePaletteNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ShadingRatePaletteNV const& rhs ) const - { - return ( shadingRatePaletteEntryCount == rhs.shadingRatePaletteEntryCount ) - && ( pShadingRatePaletteEntries == rhs.pShadingRatePaletteEntries ); - } - - bool operator!=( ShadingRatePaletteNV const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t shadingRatePaletteEntryCount; - const vk::ShadingRatePaletteEntryNV* pShadingRatePaletteEntries; - }; - static_assert( sizeof( ShadingRatePaletteNV ) == sizeof( VkShadingRatePaletteNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineViewportShadingRateImageStateCreateInfoNV - { - protected: - PipelineViewportShadingRateImageStateCreateInfoNV( vk::Bool32 shadingRateImageEnable_ = 0, - uint32_t viewportCount_ = 0, - const vk::ShadingRatePaletteNV* pShadingRatePalettes_ = nullptr ) - : shadingRateImageEnable( shadingRateImageEnable_ ) - , viewportCount( viewportCount_ ) - , pShadingRatePalettes( pShadingRatePalettes_ ) - {} - - PipelineViewportShadingRateImageStateCreateInfoNV( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineViewportShadingRateImageStateCreateInfoNV& operator=( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV; - const void* pNext = nullptr; - vk::Bool32 shadingRateImageEnable; - uint32_t viewportCount; - const vk::ShadingRatePaletteNV* pShadingRatePalettes; - }; - static_assert( sizeof( PipelineViewportShadingRateImageStateCreateInfoNV ) == sizeof( VkPipelineViewportShadingRateImageStateCreateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct PipelineViewportShadingRateImageStateCreateInfoNV : public layout::PipelineViewportShadingRateImageStateCreateInfoNV - { - PipelineViewportShadingRateImageStateCreateInfoNV( vk::Bool32 shadingRateImageEnable_ = 0, - uint32_t viewportCount_ = 0, - const vk::ShadingRatePaletteNV* pShadingRatePalettes_ = nullptr ) - : layout::PipelineViewportShadingRateImageStateCreateInfoNV( shadingRateImageEnable_, viewportCount_, pShadingRatePalettes_ ) - {} - - PipelineViewportShadingRateImageStateCreateInfoNV( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) - : layout::PipelineViewportShadingRateImageStateCreateInfoNV( rhs ) - {} - - PipelineViewportShadingRateImageStateCreateInfoNV& operator=( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineViewportShadingRateImageStateCreateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineViewportShadingRateImageStateCreateInfoNV & setShadingRateImageEnable( vk::Bool32 shadingRateImageEnable_ ) - { - shadingRateImageEnable = shadingRateImageEnable_; - return *this; - } - - PipelineViewportShadingRateImageStateCreateInfoNV & setViewportCount( uint32_t viewportCount_ ) - { - viewportCount = viewportCount_; - return *this; - } - - PipelineViewportShadingRateImageStateCreateInfoNV & setPShadingRatePalettes( const vk::ShadingRatePaletteNV* pShadingRatePalettes_ ) - { - pShadingRatePalettes = pShadingRatePalettes_; - return *this; - } - - operator VkPipelineViewportShadingRateImageStateCreateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineViewportShadingRateImageStateCreateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineViewportShadingRateImageStateCreateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shadingRateImageEnable == rhs.shadingRateImageEnable ) - && ( viewportCount == rhs.viewportCount ) - && ( pShadingRatePalettes == rhs.pShadingRatePalettes ); - } - - bool operator!=( PipelineViewportShadingRateImageStateCreateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineViewportShadingRateImageStateCreateInfoNV::sType; - }; - static_assert( sizeof( PipelineViewportShadingRateImageStateCreateInfoNV ) == sizeof( VkPipelineViewportShadingRateImageStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ViewportSwizzleNV - { - ViewportSwizzleNV( vk::ViewportCoordinateSwizzleNV x_ = vk::ViewportCoordinateSwizzleNV::ePositiveX, - vk::ViewportCoordinateSwizzleNV y_ = vk::ViewportCoordinateSwizzleNV::ePositiveX, - vk::ViewportCoordinateSwizzleNV z_ = vk::ViewportCoordinateSwizzleNV::ePositiveX, - vk::ViewportCoordinateSwizzleNV w_ = vk::ViewportCoordinateSwizzleNV::ePositiveX ) - : x( x_ ) - , y( y_ ) - , z( z_ ) - , w( w_ ) - {} - - ViewportSwizzleNV( VkViewportSwizzleNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ViewportSwizzleNV & setX( vk::ViewportCoordinateSwizzleNV x_ ) - { - x = x_; - return *this; - } - - ViewportSwizzleNV & setY( vk::ViewportCoordinateSwizzleNV y_ ) - { - y = y_; - return *this; - } - - ViewportSwizzleNV & setZ( vk::ViewportCoordinateSwizzleNV z_ ) - { - z = z_; - return *this; - } - - ViewportSwizzleNV & setW( vk::ViewportCoordinateSwizzleNV w_ ) - { - w = w_; - return *this; - } - - operator VkViewportSwizzleNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkViewportSwizzleNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ViewportSwizzleNV const& rhs ) const - { - return ( x == rhs.x ) - && ( y == rhs.y ) - && ( z == rhs.z ) - && ( w == rhs.w ); - } - - bool operator!=( ViewportSwizzleNV const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ViewportCoordinateSwizzleNV x; - vk::ViewportCoordinateSwizzleNV y; - vk::ViewportCoordinateSwizzleNV z; - vk::ViewportCoordinateSwizzleNV w; - }; - static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineViewportSwizzleStateCreateInfoNV - { - protected: - PipelineViewportSwizzleStateCreateInfoNV( vk::PipelineViewportSwizzleStateCreateFlagsNV flags_ = vk::PipelineViewportSwizzleStateCreateFlagsNV(), - uint32_t viewportCount_ = 0, - const vk::ViewportSwizzleNV* pViewportSwizzles_ = nullptr ) - : flags( flags_ ) - , viewportCount( viewportCount_ ) - , pViewportSwizzles( pViewportSwizzles_ ) - {} - - PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineViewportSwizzleStateCreateInfoNV; - const void* pNext = nullptr; - vk::PipelineViewportSwizzleStateCreateFlagsNV flags; - uint32_t viewportCount; - const vk::ViewportSwizzleNV* pViewportSwizzles; - }; - static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct PipelineViewportSwizzleStateCreateInfoNV : public layout::PipelineViewportSwizzleStateCreateInfoNV - { - PipelineViewportSwizzleStateCreateInfoNV( vk::PipelineViewportSwizzleStateCreateFlagsNV flags_ = vk::PipelineViewportSwizzleStateCreateFlagsNV(), - uint32_t viewportCount_ = 0, - const vk::ViewportSwizzleNV* pViewportSwizzles_ = nullptr ) - : layout::PipelineViewportSwizzleStateCreateInfoNV( flags_, viewportCount_, pViewportSwizzles_ ) - {} - - PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) - : layout::PipelineViewportSwizzleStateCreateInfoNV( rhs ) - {} - - PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineViewportSwizzleStateCreateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineViewportSwizzleStateCreateInfoNV & setFlags( vk::PipelineViewportSwizzleStateCreateFlagsNV flags_ ) - { - flags = flags_; - return *this; - } - - PipelineViewportSwizzleStateCreateInfoNV & setViewportCount( uint32_t viewportCount_ ) - { - viewportCount = viewportCount_; - return *this; - } - - PipelineViewportSwizzleStateCreateInfoNV & setPViewportSwizzles( const vk::ViewportSwizzleNV* pViewportSwizzles_ ) - { - pViewportSwizzles = pViewportSwizzles_; - return *this; - } - - operator VkPipelineViewportSwizzleStateCreateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineViewportSwizzleStateCreateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( viewportCount == rhs.viewportCount ) - && ( pViewportSwizzles == rhs.pViewportSwizzles ); - } - - bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineViewportSwizzleStateCreateInfoNV::sType; - }; - static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ViewportWScalingNV - { - ViewportWScalingNV( float xcoeff_ = 0, - float ycoeff_ = 0 ) - : xcoeff( xcoeff_ ) - , ycoeff( ycoeff_ ) - {} - - ViewportWScalingNV( VkViewportWScalingNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ViewportWScalingNV & setXcoeff( float xcoeff_ ) - { - xcoeff = xcoeff_; - return *this; - } - - ViewportWScalingNV & setYcoeff( float ycoeff_ ) - { - ycoeff = ycoeff_; - return *this; - } - - operator VkViewportWScalingNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkViewportWScalingNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ViewportWScalingNV const& rhs ) const - { - return ( xcoeff == rhs.xcoeff ) - && ( ycoeff == rhs.ycoeff ); - } - - bool operator!=( ViewportWScalingNV const& rhs ) const - { - return !operator==( rhs ); - } - - public: - float xcoeff; - float ycoeff; - }; - static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PipelineViewportWScalingStateCreateInfoNV - { - protected: - PipelineViewportWScalingStateCreateInfoNV( vk::Bool32 viewportWScalingEnable_ = 0, - uint32_t viewportCount_ = 0, - const vk::ViewportWScalingNV* pViewportWScalings_ = nullptr ) - : viewportWScalingEnable( viewportWScalingEnable_ ) - , viewportCount( viewportCount_ ) - , pViewportWScalings( pViewportWScalings_ ) - {} - - PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePipelineViewportWScalingStateCreateInfoNV; - const void* pNext = nullptr; - vk::Bool32 viewportWScalingEnable; - uint32_t viewportCount; - const vk::ViewportWScalingNV* pViewportWScalings; - }; - static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct PipelineViewportWScalingStateCreateInfoNV : public layout::PipelineViewportWScalingStateCreateInfoNV - { - PipelineViewportWScalingStateCreateInfoNV( vk::Bool32 viewportWScalingEnable_ = 0, - uint32_t viewportCount_ = 0, - const vk::ViewportWScalingNV* pViewportWScalings_ = nullptr ) - : layout::PipelineViewportWScalingStateCreateInfoNV( viewportWScalingEnable_, viewportCount_, pViewportWScalings_ ) - {} - - PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) - : layout::PipelineViewportWScalingStateCreateInfoNV( rhs ) - {} - - PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PipelineViewportWScalingStateCreateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PipelineViewportWScalingStateCreateInfoNV & setViewportWScalingEnable( vk::Bool32 viewportWScalingEnable_ ) - { - viewportWScalingEnable = viewportWScalingEnable_; - return *this; - } - - PipelineViewportWScalingStateCreateInfoNV & setViewportCount( uint32_t viewportCount_ ) - { - viewportCount = viewportCount_; - return *this; - } - - PipelineViewportWScalingStateCreateInfoNV & setPViewportWScalings( const vk::ViewportWScalingNV* pViewportWScalings_ ) - { - pViewportWScalings = pViewportWScalings_; - return *this; - } - - operator VkPipelineViewportWScalingStateCreateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPipelineViewportWScalingStateCreateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( viewportWScalingEnable == rhs.viewportWScalingEnable ) - && ( viewportCount == rhs.viewportCount ) - && ( pViewportWScalings == rhs.pViewportWScalings ); - } - - bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PipelineViewportWScalingStateCreateInfoNV::sType; - }; - static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_GGP - - namespace layout - { - struct PresentFrameTokenGGP - { - protected: - PresentFrameTokenGGP( GgpFrameToken frameToken_ = 0 ) - : frameToken( frameToken_ ) - {} - - PresentFrameTokenGGP( VkPresentFrameTokenGGP const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PresentFrameTokenGGP& operator=( VkPresentFrameTokenGGP const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePresentFrameTokenGGP; - const void* pNext = nullptr; - GgpFrameToken frameToken; - }; - static_assert( sizeof( PresentFrameTokenGGP ) == sizeof( VkPresentFrameTokenGGP ), "layout struct and wrapper have different size!" ); - } - - struct PresentFrameTokenGGP : public layout::PresentFrameTokenGGP - { - PresentFrameTokenGGP( GgpFrameToken frameToken_ = 0 ) - : layout::PresentFrameTokenGGP( frameToken_ ) - {} - - PresentFrameTokenGGP( VkPresentFrameTokenGGP const & rhs ) - : layout::PresentFrameTokenGGP( rhs ) - {} - - PresentFrameTokenGGP& operator=( VkPresentFrameTokenGGP const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PresentFrameTokenGGP & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PresentFrameTokenGGP & setFrameToken( GgpFrameToken frameToken_ ) - { - frameToken = frameToken_; - return *this; - } - - operator VkPresentFrameTokenGGP const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPresentFrameTokenGGP &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PresentFrameTokenGGP const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( frameToken == rhs.frameToken ); - } - - bool operator!=( PresentFrameTokenGGP const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PresentFrameTokenGGP::sType; - }; - static_assert( sizeof( PresentFrameTokenGGP ) == sizeof( VkPresentFrameTokenGGP ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_GGP*/ - - namespace layout - { - struct PresentInfoKHR - { - protected: - PresentInfoKHR( uint32_t waitSemaphoreCount_ = 0, - const vk::Semaphore* pWaitSemaphores_ = nullptr, - uint32_t swapchainCount_ = 0, - const vk::SwapchainKHR* pSwapchains_ = nullptr, - const uint32_t* pImageIndices_ = nullptr, - vk::Result* pResults_ = nullptr ) - : waitSemaphoreCount( waitSemaphoreCount_ ) - , pWaitSemaphores( pWaitSemaphores_ ) - , swapchainCount( swapchainCount_ ) - , pSwapchains( pSwapchains_ ) - , pImageIndices( pImageIndices_ ) - , pResults( pResults_ ) - {} - - PresentInfoKHR( VkPresentInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePresentInfoKHR; - const void* pNext = nullptr; - uint32_t waitSemaphoreCount; - const vk::Semaphore* pWaitSemaphores; - uint32_t swapchainCount; - const vk::SwapchainKHR* pSwapchains; - const uint32_t* pImageIndices; - vk::Result* pResults; - }; - static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct PresentInfoKHR : public layout::PresentInfoKHR - { - PresentInfoKHR( uint32_t waitSemaphoreCount_ = 0, - const vk::Semaphore* pWaitSemaphores_ = nullptr, - uint32_t swapchainCount_ = 0, - const vk::SwapchainKHR* pSwapchains_ = nullptr, - const uint32_t* pImageIndices_ = nullptr, - vk::Result* pResults_ = nullptr ) - : layout::PresentInfoKHR( waitSemaphoreCount_, pWaitSemaphores_, swapchainCount_, pSwapchains_, pImageIndices_, pResults_ ) - {} - - PresentInfoKHR( VkPresentInfoKHR const & rhs ) - : layout::PresentInfoKHR( rhs ) - {} - - PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PresentInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PresentInfoKHR & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) - { - waitSemaphoreCount = waitSemaphoreCount_; - return *this; - } - - PresentInfoKHR & setPWaitSemaphores( const vk::Semaphore* pWaitSemaphores_ ) - { - pWaitSemaphores = pWaitSemaphores_; - return *this; - } - - PresentInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) - { - swapchainCount = swapchainCount_; - return *this; - } - - PresentInfoKHR & setPSwapchains( const vk::SwapchainKHR* pSwapchains_ ) - { - pSwapchains = pSwapchains_; - return *this; - } - - PresentInfoKHR & setPImageIndices( const uint32_t* pImageIndices_ ) - { - pImageIndices = pImageIndices_; - return *this; - } - - PresentInfoKHR & setPResults( vk::Result* pResults_ ) - { - pResults = pResults_; - return *this; - } - - operator VkPresentInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPresentInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PresentInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) - && ( pWaitSemaphores == rhs.pWaitSemaphores ) - && ( swapchainCount == rhs.swapchainCount ) - && ( pSwapchains == rhs.pSwapchains ) - && ( pImageIndices == rhs.pImageIndices ) - && ( pResults == rhs.pResults ); - } - - bool operator!=( PresentInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PresentInfoKHR::sType; - }; - static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct RectLayerKHR - { - RectLayerKHR( vk::Offset2D offset_ = vk::Offset2D(), - vk::Extent2D extent_ = vk::Extent2D(), - uint32_t layer_ = 0 ) - : offset( offset_ ) - , extent( extent_ ) - , layer( layer_ ) - {} - - explicit RectLayerKHR( Rect2D const& rect2D, - uint32_t layer_ = 0 ) - : offset( rect2D.offset ) - , extent( rect2D.extent ) - , layer( layer_ ) - - {} - - RectLayerKHR( VkRectLayerKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - RectLayerKHR& operator=( VkRectLayerKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - RectLayerKHR & setOffset( vk::Offset2D offset_ ) - { - offset = offset_; - return *this; - } - - RectLayerKHR & setExtent( vk::Extent2D extent_ ) - { - extent = extent_; - return *this; - } - - RectLayerKHR & setLayer( uint32_t layer_ ) - { - layer = layer_; - return *this; - } - - operator VkRectLayerKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkRectLayerKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( RectLayerKHR const& rhs ) const - { - return ( offset == rhs.offset ) - && ( extent == rhs.extent ) - && ( layer == rhs.layer ); - } - - bool operator!=( RectLayerKHR const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::Offset2D offset; - vk::Extent2D extent; - uint32_t layer; - }; - static_assert( sizeof( RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PresentRegionKHR - { - PresentRegionKHR( uint32_t rectangleCount_ = 0, - const vk::RectLayerKHR* pRectangles_ = nullptr ) - : rectangleCount( rectangleCount_ ) - , pRectangles( pRectangles_ ) - {} - - PresentRegionKHR( VkPresentRegionKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PresentRegionKHR& operator=( VkPresentRegionKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PresentRegionKHR & setRectangleCount( uint32_t rectangleCount_ ) - { - rectangleCount = rectangleCount_; - return *this; - } - - PresentRegionKHR & setPRectangles( const vk::RectLayerKHR* pRectangles_ ) - { - pRectangles = pRectangles_; - return *this; - } - - operator VkPresentRegionKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPresentRegionKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PresentRegionKHR const& rhs ) const - { - return ( rectangleCount == rhs.rectangleCount ) - && ( pRectangles == rhs.pRectangles ); - } - - bool operator!=( PresentRegionKHR const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t rectangleCount; - const vk::RectLayerKHR* pRectangles; - }; - static_assert( sizeof( PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PresentRegionsKHR - { - protected: - PresentRegionsKHR( uint32_t swapchainCount_ = 0, - const vk::PresentRegionKHR* pRegions_ = nullptr ) - : swapchainCount( swapchainCount_ ) - , pRegions( pRegions_ ) - {} - - PresentRegionsKHR( VkPresentRegionsKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePresentRegionsKHR; - const void* pNext = nullptr; - uint32_t swapchainCount; - const vk::PresentRegionKHR* pRegions; - }; - static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "layout struct and wrapper have different size!" ); - } - - struct PresentRegionsKHR : public layout::PresentRegionsKHR - { - PresentRegionsKHR( uint32_t swapchainCount_ = 0, - const vk::PresentRegionKHR* pRegions_ = nullptr ) - : layout::PresentRegionsKHR( swapchainCount_, pRegions_ ) - {} - - PresentRegionsKHR( VkPresentRegionsKHR const & rhs ) - : layout::PresentRegionsKHR( rhs ) - {} - - PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PresentRegionsKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PresentRegionsKHR & setSwapchainCount( uint32_t swapchainCount_ ) - { - swapchainCount = swapchainCount_; - return *this; - } - - PresentRegionsKHR & setPRegions( const vk::PresentRegionKHR* pRegions_ ) - { - pRegions = pRegions_; - return *this; - } - - operator VkPresentRegionsKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPresentRegionsKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PresentRegionsKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( swapchainCount == rhs.swapchainCount ) - && ( pRegions == rhs.pRegions ); - } - - bool operator!=( PresentRegionsKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PresentRegionsKHR::sType; - }; - static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PresentTimeGOOGLE - { - PresentTimeGOOGLE( uint32_t presentID_ = 0, - uint64_t desiredPresentTime_ = 0 ) - : presentID( presentID_ ) - , desiredPresentTime( desiredPresentTime_ ) - {} - - PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PresentTimeGOOGLE & setPresentID( uint32_t presentID_ ) - { - presentID = presentID_; - return *this; - } - - PresentTimeGOOGLE & setDesiredPresentTime( uint64_t desiredPresentTime_ ) - { - desiredPresentTime = desiredPresentTime_; - return *this; - } - - operator VkPresentTimeGOOGLE const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPresentTimeGOOGLE &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PresentTimeGOOGLE const& rhs ) const - { - return ( presentID == rhs.presentID ) - && ( desiredPresentTime == rhs.desiredPresentTime ); - } - - bool operator!=( PresentTimeGOOGLE const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t presentID; - uint64_t desiredPresentTime; - }; - static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct PresentTimesInfoGOOGLE - { - protected: - PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, - const vk::PresentTimeGOOGLE* pTimes_ = nullptr ) - : swapchainCount( swapchainCount_ ) - , pTimes( pTimes_ ) - {} - - PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::ePresentTimesInfoGOOGLE; - const void* pNext = nullptr; - uint32_t swapchainCount; - const vk::PresentTimeGOOGLE* pTimes; - }; - static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "layout struct and wrapper have different size!" ); - } - - struct PresentTimesInfoGOOGLE : public layout::PresentTimesInfoGOOGLE - { - PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, - const vk::PresentTimeGOOGLE* pTimes_ = nullptr ) - : layout::PresentTimesInfoGOOGLE( swapchainCount_, pTimes_ ) - {} - - PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs ) - : layout::PresentTimesInfoGOOGLE( rhs ) - {} - - PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - PresentTimesInfoGOOGLE & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - PresentTimesInfoGOOGLE & setSwapchainCount( uint32_t swapchainCount_ ) - { - swapchainCount = swapchainCount_; - return *this; - } - - PresentTimesInfoGOOGLE & setPTimes( const vk::PresentTimeGOOGLE* pTimes_ ) - { - pTimes = pTimes_; - return *this; - } - - operator VkPresentTimesInfoGOOGLE const&() const - { - return *reinterpret_cast( this ); - } - - operator VkPresentTimesInfoGOOGLE &() - { - return *reinterpret_cast( this ); - } - - bool operator==( PresentTimesInfoGOOGLE const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( swapchainCount == rhs.swapchainCount ) - && ( pTimes == rhs.pTimes ); - } - - bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::PresentTimesInfoGOOGLE::sType; - }; - static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ProtectedSubmitInfo - { - protected: - ProtectedSubmitInfo( vk::Bool32 protectedSubmit_ = 0 ) - : protectedSubmit( protectedSubmit_ ) - {} - - ProtectedSubmitInfo( VkProtectedSubmitInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ProtectedSubmitInfo& operator=( VkProtectedSubmitInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eProtectedSubmitInfo; - const void* pNext = nullptr; - vk::Bool32 protectedSubmit; - }; - static_assert( sizeof( ProtectedSubmitInfo ) == sizeof( VkProtectedSubmitInfo ), "layout struct and wrapper have different size!" ); - } - - struct ProtectedSubmitInfo : public layout::ProtectedSubmitInfo - { - ProtectedSubmitInfo( vk::Bool32 protectedSubmit_ = 0 ) - : layout::ProtectedSubmitInfo( protectedSubmit_ ) - {} - - ProtectedSubmitInfo( VkProtectedSubmitInfo const & rhs ) - : layout::ProtectedSubmitInfo( rhs ) - {} - - ProtectedSubmitInfo& operator=( VkProtectedSubmitInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ProtectedSubmitInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ProtectedSubmitInfo & setProtectedSubmit( vk::Bool32 protectedSubmit_ ) - { - protectedSubmit = protectedSubmit_; - return *this; - } - - operator VkProtectedSubmitInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkProtectedSubmitInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ProtectedSubmitInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( protectedSubmit == rhs.protectedSubmit ); - } - - bool operator!=( ProtectedSubmitInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ProtectedSubmitInfo::sType; - }; - static_assert( sizeof( ProtectedSubmitInfo ) == sizeof( VkProtectedSubmitInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct QueryPoolCreateInfo - { - protected: - QueryPoolCreateInfo( vk::QueryPoolCreateFlags flags_ = vk::QueryPoolCreateFlags(), - vk::QueryType queryType_ = vk::QueryType::eOcclusion, - uint32_t queryCount_ = 0, - vk::QueryPipelineStatisticFlags pipelineStatistics_ = vk::QueryPipelineStatisticFlags() ) - : flags( flags_ ) - , queryType( queryType_ ) - , queryCount( queryCount_ ) - , pipelineStatistics( pipelineStatistics_ ) - {} - - QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eQueryPoolCreateInfo; - const void* pNext = nullptr; - vk::QueryPoolCreateFlags flags; - vk::QueryType queryType; - uint32_t queryCount; - vk::QueryPipelineStatisticFlags pipelineStatistics; - }; - static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct QueryPoolCreateInfo : public layout::QueryPoolCreateInfo - { - QueryPoolCreateInfo( vk::QueryPoolCreateFlags flags_ = vk::QueryPoolCreateFlags(), - vk::QueryType queryType_ = vk::QueryType::eOcclusion, - uint32_t queryCount_ = 0, - vk::QueryPipelineStatisticFlags pipelineStatistics_ = vk::QueryPipelineStatisticFlags() ) - : layout::QueryPoolCreateInfo( flags_, queryType_, queryCount_, pipelineStatistics_ ) - {} - - QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs ) - : layout::QueryPoolCreateInfo( rhs ) - {} - - QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - QueryPoolCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - QueryPoolCreateInfo & setFlags( vk::QueryPoolCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - QueryPoolCreateInfo & setQueryType( vk::QueryType queryType_ ) - { - queryType = queryType_; - return *this; - } - - QueryPoolCreateInfo & setQueryCount( uint32_t queryCount_ ) - { - queryCount = queryCount_; - return *this; - } - - QueryPoolCreateInfo & setPipelineStatistics( vk::QueryPipelineStatisticFlags pipelineStatistics_ ) - { - pipelineStatistics = pipelineStatistics_; - return *this; - } - - operator VkQueryPoolCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkQueryPoolCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( QueryPoolCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( queryType == rhs.queryType ) - && ( queryCount == rhs.queryCount ) - && ( pipelineStatistics == rhs.pipelineStatistics ); - } - - bool operator!=( QueryPoolCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::QueryPoolCreateInfo::sType; - }; - static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct QueryPoolCreateInfoINTEL - { - protected: - QueryPoolCreateInfoINTEL( vk::QueryPoolSamplingModeINTEL performanceCountersSampling_ = vk::QueryPoolSamplingModeINTEL::eManual ) - : performanceCountersSampling( performanceCountersSampling_ ) - {} - - QueryPoolCreateInfoINTEL( VkQueryPoolCreateInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - QueryPoolCreateInfoINTEL& operator=( VkQueryPoolCreateInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eQueryPoolCreateInfoINTEL; - const void* pNext = nullptr; - vk::QueryPoolSamplingModeINTEL performanceCountersSampling; - }; - static_assert( sizeof( QueryPoolCreateInfoINTEL ) == sizeof( VkQueryPoolCreateInfoINTEL ), "layout struct and wrapper have different size!" ); - } - - struct QueryPoolCreateInfoINTEL : public layout::QueryPoolCreateInfoINTEL - { - QueryPoolCreateInfoINTEL( vk::QueryPoolSamplingModeINTEL performanceCountersSampling_ = vk::QueryPoolSamplingModeINTEL::eManual ) - : layout::QueryPoolCreateInfoINTEL( performanceCountersSampling_ ) - {} - - QueryPoolCreateInfoINTEL( VkQueryPoolCreateInfoINTEL const & rhs ) - : layout::QueryPoolCreateInfoINTEL( rhs ) - {} - - QueryPoolCreateInfoINTEL& operator=( VkQueryPoolCreateInfoINTEL const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - QueryPoolCreateInfoINTEL & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - QueryPoolCreateInfoINTEL & setPerformanceCountersSampling( vk::QueryPoolSamplingModeINTEL performanceCountersSampling_ ) - { - performanceCountersSampling = performanceCountersSampling_; - return *this; - } - - operator VkQueryPoolCreateInfoINTEL const&() const - { - return *reinterpret_cast( this ); - } - - operator VkQueryPoolCreateInfoINTEL &() - { - return *reinterpret_cast( this ); - } - - bool operator==( QueryPoolCreateInfoINTEL const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( performanceCountersSampling == rhs.performanceCountersSampling ); - } - - bool operator!=( QueryPoolCreateInfoINTEL const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::QueryPoolCreateInfoINTEL::sType; - }; - static_assert( sizeof( QueryPoolCreateInfoINTEL ) == sizeof( VkQueryPoolCreateInfoINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct QueueFamilyCheckpointPropertiesNV - { - protected: - QueueFamilyCheckpointPropertiesNV( vk::PipelineStageFlags checkpointExecutionStageMask_ = vk::PipelineStageFlags() ) - : checkpointExecutionStageMask( checkpointExecutionStageMask_ ) - {} - - QueueFamilyCheckpointPropertiesNV( VkQueueFamilyCheckpointPropertiesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - QueueFamilyCheckpointPropertiesNV& operator=( VkQueueFamilyCheckpointPropertiesNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eQueueFamilyCheckpointPropertiesNV; - void* pNext = nullptr; - vk::PipelineStageFlags checkpointExecutionStageMask; - }; - static_assert( sizeof( QueueFamilyCheckpointPropertiesNV ) == sizeof( VkQueueFamilyCheckpointPropertiesNV ), "layout struct and wrapper have different size!" ); - } - - struct QueueFamilyCheckpointPropertiesNV : public layout::QueueFamilyCheckpointPropertiesNV - { - operator VkQueueFamilyCheckpointPropertiesNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkQueueFamilyCheckpointPropertiesNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( QueueFamilyCheckpointPropertiesNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( checkpointExecutionStageMask == rhs.checkpointExecutionStageMask ); - } - - bool operator!=( QueueFamilyCheckpointPropertiesNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::QueueFamilyCheckpointPropertiesNV::sType; - }; - static_assert( sizeof( QueueFamilyCheckpointPropertiesNV ) == sizeof( VkQueueFamilyCheckpointPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct QueueFamilyProperties - { - operator VkQueueFamilyProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkQueueFamilyProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( QueueFamilyProperties const& rhs ) const - { - return ( queueFlags == rhs.queueFlags ) - && ( queueCount == rhs.queueCount ) - && ( timestampValidBits == rhs.timestampValidBits ) - && ( minImageTransferGranularity == rhs.minImageTransferGranularity ); - } - - bool operator!=( QueueFamilyProperties const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::QueueFlags queueFlags; - uint32_t queueCount; - uint32_t timestampValidBits; - vk::Extent3D minImageTransferGranularity; - }; - static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct QueueFamilyProperties2 - { - protected: - QueueFamilyProperties2( vk::QueueFamilyProperties queueFamilyProperties_ = vk::QueueFamilyProperties() ) - : queueFamilyProperties( queueFamilyProperties_ ) - {} - - QueueFamilyProperties2( VkQueueFamilyProperties2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - QueueFamilyProperties2& operator=( VkQueueFamilyProperties2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eQueueFamilyProperties2; - void* pNext = nullptr; - vk::QueueFamilyProperties queueFamilyProperties; - }; - static_assert( sizeof( QueueFamilyProperties2 ) == sizeof( VkQueueFamilyProperties2 ), "layout struct and wrapper have different size!" ); - } - - struct QueueFamilyProperties2 : public layout::QueueFamilyProperties2 - { - operator VkQueueFamilyProperties2 const&() const - { - return *reinterpret_cast( this ); - } - - operator VkQueueFamilyProperties2 &() - { - return *reinterpret_cast( this ); - } - - bool operator==( QueueFamilyProperties2 const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( queueFamilyProperties == rhs.queueFamilyProperties ); - } - - bool operator!=( QueueFamilyProperties2 const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::QueueFamilyProperties2::sType; - }; - static_assert( sizeof( QueueFamilyProperties2 ) == sizeof( VkQueueFamilyProperties2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct RayTracingShaderGroupCreateInfoNV - { - protected: - RayTracingShaderGroupCreateInfoNV( vk::RayTracingShaderGroupTypeNV type_ = vk::RayTracingShaderGroupTypeNV::eGeneral, - uint32_t generalShader_ = 0, - uint32_t closestHitShader_ = 0, - uint32_t anyHitShader_ = 0, - uint32_t intersectionShader_ = 0 ) - : type( type_ ) - , generalShader( generalShader_ ) - , closestHitShader( closestHitShader_ ) - , anyHitShader( anyHitShader_ ) - , intersectionShader( intersectionShader_ ) - {} - - RayTracingShaderGroupCreateInfoNV( VkRayTracingShaderGroupCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - RayTracingShaderGroupCreateInfoNV& operator=( VkRayTracingShaderGroupCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eRayTracingShaderGroupCreateInfoNV; - const void* pNext = nullptr; - vk::RayTracingShaderGroupTypeNV type; - uint32_t generalShader; - uint32_t closestHitShader; - uint32_t anyHitShader; - uint32_t intersectionShader; - }; - static_assert( sizeof( RayTracingShaderGroupCreateInfoNV ) == sizeof( VkRayTracingShaderGroupCreateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct RayTracingShaderGroupCreateInfoNV : public layout::RayTracingShaderGroupCreateInfoNV - { - RayTracingShaderGroupCreateInfoNV( vk::RayTracingShaderGroupTypeNV type_ = vk::RayTracingShaderGroupTypeNV::eGeneral, - uint32_t generalShader_ = 0, - uint32_t closestHitShader_ = 0, - uint32_t anyHitShader_ = 0, - uint32_t intersectionShader_ = 0 ) - : layout::RayTracingShaderGroupCreateInfoNV( type_, generalShader_, closestHitShader_, anyHitShader_, intersectionShader_ ) - {} - - RayTracingShaderGroupCreateInfoNV( VkRayTracingShaderGroupCreateInfoNV const & rhs ) - : layout::RayTracingShaderGroupCreateInfoNV( rhs ) - {} - - RayTracingShaderGroupCreateInfoNV& operator=( VkRayTracingShaderGroupCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - RayTracingShaderGroupCreateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - RayTracingShaderGroupCreateInfoNV & setType( vk::RayTracingShaderGroupTypeNV type_ ) - { - type = type_; - return *this; - } - - RayTracingShaderGroupCreateInfoNV & setGeneralShader( uint32_t generalShader_ ) - { - generalShader = generalShader_; - return *this; - } - - RayTracingShaderGroupCreateInfoNV & setClosestHitShader( uint32_t closestHitShader_ ) - { - closestHitShader = closestHitShader_; - return *this; - } - - RayTracingShaderGroupCreateInfoNV & setAnyHitShader( uint32_t anyHitShader_ ) - { - anyHitShader = anyHitShader_; - return *this; - } - - RayTracingShaderGroupCreateInfoNV & setIntersectionShader( uint32_t intersectionShader_ ) - { - intersectionShader = intersectionShader_; - return *this; - } - - operator VkRayTracingShaderGroupCreateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkRayTracingShaderGroupCreateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( RayTracingShaderGroupCreateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( type == rhs.type ) - && ( generalShader == rhs.generalShader ) - && ( closestHitShader == rhs.closestHitShader ) - && ( anyHitShader == rhs.anyHitShader ) - && ( intersectionShader == rhs.intersectionShader ); - } - - bool operator!=( RayTracingShaderGroupCreateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::RayTracingShaderGroupCreateInfoNV::sType; - }; - static_assert( sizeof( RayTracingShaderGroupCreateInfoNV ) == sizeof( VkRayTracingShaderGroupCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct RayTracingPipelineCreateInfoNV - { - protected: - RayTracingPipelineCreateInfoNV( vk::PipelineCreateFlags flags_ = vk::PipelineCreateFlags(), - uint32_t stageCount_ = 0, - const vk::PipelineShaderStageCreateInfo* pStages_ = nullptr, - uint32_t groupCount_ = 0, - const vk::RayTracingShaderGroupCreateInfoNV* pGroups_ = nullptr, - uint32_t maxRecursionDepth_ = 0, - vk::PipelineLayout layout_ = vk::PipelineLayout(), - vk::Pipeline basePipelineHandle_ = vk::Pipeline(), - int32_t basePipelineIndex_ = 0 ) - : flags( flags_ ) - , stageCount( stageCount_ ) - , pStages( pStages_ ) - , groupCount( groupCount_ ) - , pGroups( pGroups_ ) - , maxRecursionDepth( maxRecursionDepth_ ) - , layout( layout_ ) - , basePipelineHandle( basePipelineHandle_ ) - , basePipelineIndex( basePipelineIndex_ ) - {} - - RayTracingPipelineCreateInfoNV( VkRayTracingPipelineCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - RayTracingPipelineCreateInfoNV& operator=( VkRayTracingPipelineCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eRayTracingPipelineCreateInfoNV; - const void* pNext = nullptr; - vk::PipelineCreateFlags flags; - uint32_t stageCount; - const vk::PipelineShaderStageCreateInfo* pStages; - uint32_t groupCount; - const vk::RayTracingShaderGroupCreateInfoNV* pGroups; - uint32_t maxRecursionDepth; - vk::PipelineLayout layout; - vk::Pipeline basePipelineHandle; - int32_t basePipelineIndex; - }; - static_assert( sizeof( RayTracingPipelineCreateInfoNV ) == sizeof( VkRayTracingPipelineCreateInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct RayTracingPipelineCreateInfoNV : public layout::RayTracingPipelineCreateInfoNV - { - RayTracingPipelineCreateInfoNV( vk::PipelineCreateFlags flags_ = vk::PipelineCreateFlags(), - uint32_t stageCount_ = 0, - const vk::PipelineShaderStageCreateInfo* pStages_ = nullptr, - uint32_t groupCount_ = 0, - const vk::RayTracingShaderGroupCreateInfoNV* pGroups_ = nullptr, - uint32_t maxRecursionDepth_ = 0, - vk::PipelineLayout layout_ = vk::PipelineLayout(), - vk::Pipeline basePipelineHandle_ = vk::Pipeline(), - int32_t basePipelineIndex_ = 0 ) - : layout::RayTracingPipelineCreateInfoNV( flags_, stageCount_, pStages_, groupCount_, pGroups_, maxRecursionDepth_, layout_, basePipelineHandle_, basePipelineIndex_ ) - {} - - RayTracingPipelineCreateInfoNV( VkRayTracingPipelineCreateInfoNV const & rhs ) - : layout::RayTracingPipelineCreateInfoNV( rhs ) - {} - - RayTracingPipelineCreateInfoNV& operator=( VkRayTracingPipelineCreateInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - RayTracingPipelineCreateInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setFlags( vk::PipelineCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setStageCount( uint32_t stageCount_ ) - { - stageCount = stageCount_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setPStages( const vk::PipelineShaderStageCreateInfo* pStages_ ) - { - pStages = pStages_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setGroupCount( uint32_t groupCount_ ) - { - groupCount = groupCount_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setPGroups( const vk::RayTracingShaderGroupCreateInfoNV* pGroups_ ) - { - pGroups = pGroups_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setMaxRecursionDepth( uint32_t maxRecursionDepth_ ) - { - maxRecursionDepth = maxRecursionDepth_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setLayout( vk::PipelineLayout layout_ ) - { - layout = layout_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setBasePipelineHandle( vk::Pipeline basePipelineHandle_ ) - { - basePipelineHandle = basePipelineHandle_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setBasePipelineIndex( int32_t basePipelineIndex_ ) - { - basePipelineIndex = basePipelineIndex_; - return *this; - } - - operator VkRayTracingPipelineCreateInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkRayTracingPipelineCreateInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( RayTracingPipelineCreateInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( stageCount == rhs.stageCount ) - && ( pStages == rhs.pStages ) - && ( groupCount == rhs.groupCount ) - && ( pGroups == rhs.pGroups ) - && ( maxRecursionDepth == rhs.maxRecursionDepth ) - && ( layout == rhs.layout ) - && ( basePipelineHandle == rhs.basePipelineHandle ) - && ( basePipelineIndex == rhs.basePipelineIndex ); - } - - bool operator!=( RayTracingPipelineCreateInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::RayTracingPipelineCreateInfoNV::sType; - }; - static_assert( sizeof( RayTracingPipelineCreateInfoNV ) == sizeof( VkRayTracingPipelineCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct RefreshCycleDurationGOOGLE - { - operator VkRefreshCycleDurationGOOGLE const&() const - { - return *reinterpret_cast( this ); - } - - operator VkRefreshCycleDurationGOOGLE &() - { - return *reinterpret_cast( this ); - } - - bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const - { - return ( refreshDuration == rhs.refreshDuration ); - } - - bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint64_t refreshDuration; - }; - static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct RenderPassAttachmentBeginInfoKHR - { - protected: - RenderPassAttachmentBeginInfoKHR( uint32_t attachmentCount_ = 0, - const vk::ImageView* pAttachments_ = nullptr ) - : attachmentCount( attachmentCount_ ) - , pAttachments( pAttachments_ ) - {} - - RenderPassAttachmentBeginInfoKHR( VkRenderPassAttachmentBeginInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - RenderPassAttachmentBeginInfoKHR& operator=( VkRenderPassAttachmentBeginInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eRenderPassAttachmentBeginInfoKHR; - const void* pNext = nullptr; - uint32_t attachmentCount; - const vk::ImageView* pAttachments; - }; - static_assert( sizeof( RenderPassAttachmentBeginInfoKHR ) == sizeof( VkRenderPassAttachmentBeginInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct RenderPassAttachmentBeginInfoKHR : public layout::RenderPassAttachmentBeginInfoKHR - { - RenderPassAttachmentBeginInfoKHR( uint32_t attachmentCount_ = 0, - const vk::ImageView* pAttachments_ = nullptr ) - : layout::RenderPassAttachmentBeginInfoKHR( attachmentCount_, pAttachments_ ) - {} - - RenderPassAttachmentBeginInfoKHR( VkRenderPassAttachmentBeginInfoKHR const & rhs ) - : layout::RenderPassAttachmentBeginInfoKHR( rhs ) - {} - - RenderPassAttachmentBeginInfoKHR& operator=( VkRenderPassAttachmentBeginInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - RenderPassAttachmentBeginInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - RenderPassAttachmentBeginInfoKHR & setAttachmentCount( uint32_t attachmentCount_ ) - { - attachmentCount = attachmentCount_; - return *this; - } - - RenderPassAttachmentBeginInfoKHR & setPAttachments( const vk::ImageView* pAttachments_ ) - { - pAttachments = pAttachments_; - return *this; - } - - operator VkRenderPassAttachmentBeginInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkRenderPassAttachmentBeginInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( RenderPassAttachmentBeginInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( attachmentCount == rhs.attachmentCount ) - && ( pAttachments == rhs.pAttachments ); - } - - bool operator!=( RenderPassAttachmentBeginInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::RenderPassAttachmentBeginInfoKHR::sType; - }; - static_assert( sizeof( RenderPassAttachmentBeginInfoKHR ) == sizeof( VkRenderPassAttachmentBeginInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct RenderPassBeginInfo - { - protected: - RenderPassBeginInfo( vk::RenderPass renderPass_ = vk::RenderPass(), - vk::Framebuffer framebuffer_ = vk::Framebuffer(), - vk::Rect2D renderArea_ = vk::Rect2D(), - uint32_t clearValueCount_ = 0, - const vk::ClearValue* pClearValues_ = nullptr ) - : renderPass( renderPass_ ) - , framebuffer( framebuffer_ ) - , renderArea( renderArea_ ) - , clearValueCount( clearValueCount_ ) - , pClearValues( pClearValues_ ) - {} - - RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eRenderPassBeginInfo; - const void* pNext = nullptr; - vk::RenderPass renderPass; - vk::Framebuffer framebuffer; - vk::Rect2D renderArea; - uint32_t clearValueCount; - const vk::ClearValue* pClearValues; - }; - static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "layout struct and wrapper have different size!" ); - } - - struct RenderPassBeginInfo : public layout::RenderPassBeginInfo - { - RenderPassBeginInfo( vk::RenderPass renderPass_ = vk::RenderPass(), - vk::Framebuffer framebuffer_ = vk::Framebuffer(), - vk::Rect2D renderArea_ = vk::Rect2D(), - uint32_t clearValueCount_ = 0, - const vk::ClearValue* pClearValues_ = nullptr ) - : layout::RenderPassBeginInfo( renderPass_, framebuffer_, renderArea_, clearValueCount_, pClearValues_ ) - {} - - RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs ) - : layout::RenderPassBeginInfo( rhs ) - {} - - RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - RenderPassBeginInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - RenderPassBeginInfo & setRenderPass( vk::RenderPass renderPass_ ) - { - renderPass = renderPass_; - return *this; - } - - RenderPassBeginInfo & setFramebuffer( vk::Framebuffer framebuffer_ ) - { - framebuffer = framebuffer_; - return *this; - } - - RenderPassBeginInfo & setRenderArea( vk::Rect2D renderArea_ ) - { - renderArea = renderArea_; - return *this; - } - - RenderPassBeginInfo & setClearValueCount( uint32_t clearValueCount_ ) - { - clearValueCount = clearValueCount_; - return *this; - } - - RenderPassBeginInfo & setPClearValues( const vk::ClearValue* pClearValues_ ) - { - pClearValues = pClearValues_; - return *this; - } - - operator VkRenderPassBeginInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkRenderPassBeginInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( RenderPassBeginInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( renderPass == rhs.renderPass ) - && ( framebuffer == rhs.framebuffer ) - && ( renderArea == rhs.renderArea ) - && ( clearValueCount == rhs.clearValueCount ) - && ( pClearValues == rhs.pClearValues ); - } - - bool operator!=( RenderPassBeginInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::RenderPassBeginInfo::sType; - }; - static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SubpassDescription - { - SubpassDescription( vk::SubpassDescriptionFlags flags_ = vk::SubpassDescriptionFlags(), - vk::PipelineBindPoint pipelineBindPoint_ = vk::PipelineBindPoint::eGraphics, - uint32_t inputAttachmentCount_ = 0, - const vk::AttachmentReference* pInputAttachments_ = nullptr, - uint32_t colorAttachmentCount_ = 0, - const vk::AttachmentReference* pColorAttachments_ = nullptr, - const vk::AttachmentReference* pResolveAttachments_ = nullptr, - const vk::AttachmentReference* pDepthStencilAttachment_ = nullptr, - uint32_t preserveAttachmentCount_ = 0, - const uint32_t* pPreserveAttachments_ = nullptr ) - : flags( flags_ ) - , pipelineBindPoint( pipelineBindPoint_ ) - , inputAttachmentCount( inputAttachmentCount_ ) - , pInputAttachments( pInputAttachments_ ) - , colorAttachmentCount( colorAttachmentCount_ ) - , pColorAttachments( pColorAttachments_ ) - , pResolveAttachments( pResolveAttachments_ ) - , pDepthStencilAttachment( pDepthStencilAttachment_ ) - , preserveAttachmentCount( preserveAttachmentCount_ ) - , pPreserveAttachments( pPreserveAttachments_ ) - {} - - SubpassDescription( VkSubpassDescription const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SubpassDescription& operator=( VkSubpassDescription const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SubpassDescription & setFlags( vk::SubpassDescriptionFlags flags_ ) - { - flags = flags_; - return *this; - } - - SubpassDescription & setPipelineBindPoint( vk::PipelineBindPoint pipelineBindPoint_ ) - { - pipelineBindPoint = pipelineBindPoint_; - return *this; - } - - SubpassDescription & setInputAttachmentCount( uint32_t inputAttachmentCount_ ) - { - inputAttachmentCount = inputAttachmentCount_; - return *this; - } - - SubpassDescription & setPInputAttachments( const vk::AttachmentReference* pInputAttachments_ ) - { - pInputAttachments = pInputAttachments_; - return *this; - } - - SubpassDescription & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) - { - colorAttachmentCount = colorAttachmentCount_; - return *this; - } - - SubpassDescription & setPColorAttachments( const vk::AttachmentReference* pColorAttachments_ ) - { - pColorAttachments = pColorAttachments_; - return *this; - } - - SubpassDescription & setPResolveAttachments( const vk::AttachmentReference* pResolveAttachments_ ) - { - pResolveAttachments = pResolveAttachments_; - return *this; - } - - SubpassDescription & setPDepthStencilAttachment( const vk::AttachmentReference* pDepthStencilAttachment_ ) - { - pDepthStencilAttachment = pDepthStencilAttachment_; - return *this; - } - - SubpassDescription & setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) - { - preserveAttachmentCount = preserveAttachmentCount_; - return *this; - } - - SubpassDescription & setPPreserveAttachments( const uint32_t* pPreserveAttachments_ ) - { - pPreserveAttachments = pPreserveAttachments_; - return *this; - } - - operator VkSubpassDescription const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSubpassDescription &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SubpassDescription const& rhs ) const - { - return ( flags == rhs.flags ) - && ( pipelineBindPoint == rhs.pipelineBindPoint ) - && ( inputAttachmentCount == rhs.inputAttachmentCount ) - && ( pInputAttachments == rhs.pInputAttachments ) - && ( colorAttachmentCount == rhs.colorAttachmentCount ) - && ( pColorAttachments == rhs.pColorAttachments ) - && ( pResolveAttachments == rhs.pResolveAttachments ) - && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment ) - && ( preserveAttachmentCount == rhs.preserveAttachmentCount ) - && ( pPreserveAttachments == rhs.pPreserveAttachments ); - } - - bool operator!=( SubpassDescription const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::SubpassDescriptionFlags flags; - vk::PipelineBindPoint pipelineBindPoint; - uint32_t inputAttachmentCount; - const vk::AttachmentReference* pInputAttachments; - uint32_t colorAttachmentCount; - const vk::AttachmentReference* pColorAttachments; - const vk::AttachmentReference* pResolveAttachments; - const vk::AttachmentReference* pDepthStencilAttachment; - uint32_t preserveAttachmentCount; - const uint32_t* pPreserveAttachments; - }; - static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SubpassDependency - { - SubpassDependency( uint32_t srcSubpass_ = 0, - uint32_t dstSubpass_ = 0, - vk::PipelineStageFlags srcStageMask_ = vk::PipelineStageFlags(), - vk::PipelineStageFlags dstStageMask_ = vk::PipelineStageFlags(), - vk::AccessFlags srcAccessMask_ = vk::AccessFlags(), - vk::AccessFlags dstAccessMask_ = vk::AccessFlags(), - vk::DependencyFlags dependencyFlags_ = vk::DependencyFlags() ) - : srcSubpass( srcSubpass_ ) - , dstSubpass( dstSubpass_ ) - , srcStageMask( srcStageMask_ ) - , dstStageMask( dstStageMask_ ) - , srcAccessMask( srcAccessMask_ ) - , dstAccessMask( dstAccessMask_ ) - , dependencyFlags( dependencyFlags_ ) - {} - - SubpassDependency( VkSubpassDependency const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SubpassDependency& operator=( VkSubpassDependency const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SubpassDependency & setSrcSubpass( uint32_t srcSubpass_ ) - { - srcSubpass = srcSubpass_; - return *this; - } - - SubpassDependency & setDstSubpass( uint32_t dstSubpass_ ) - { - dstSubpass = dstSubpass_; - return *this; - } - - SubpassDependency & setSrcStageMask( vk::PipelineStageFlags srcStageMask_ ) - { - srcStageMask = srcStageMask_; - return *this; - } - - SubpassDependency & setDstStageMask( vk::PipelineStageFlags dstStageMask_ ) - { - dstStageMask = dstStageMask_; - return *this; - } - - SubpassDependency & setSrcAccessMask( vk::AccessFlags srcAccessMask_ ) - { - srcAccessMask = srcAccessMask_; - return *this; - } - - SubpassDependency & setDstAccessMask( vk::AccessFlags dstAccessMask_ ) - { - dstAccessMask = dstAccessMask_; - return *this; - } - - SubpassDependency & setDependencyFlags( vk::DependencyFlags dependencyFlags_ ) - { - dependencyFlags = dependencyFlags_; - return *this; - } - - operator VkSubpassDependency const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSubpassDependency &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SubpassDependency const& rhs ) const - { - return ( srcSubpass == rhs.srcSubpass ) - && ( dstSubpass == rhs.dstSubpass ) - && ( srcStageMask == rhs.srcStageMask ) - && ( dstStageMask == rhs.dstStageMask ) - && ( srcAccessMask == rhs.srcAccessMask ) - && ( dstAccessMask == rhs.dstAccessMask ) - && ( dependencyFlags == rhs.dependencyFlags ); - } - - bool operator!=( SubpassDependency const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t srcSubpass; - uint32_t dstSubpass; - vk::PipelineStageFlags srcStageMask; - vk::PipelineStageFlags dstStageMask; - vk::AccessFlags srcAccessMask; - vk::AccessFlags dstAccessMask; - vk::DependencyFlags dependencyFlags; - }; - static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct RenderPassCreateInfo - { - protected: - RenderPassCreateInfo( vk::RenderPassCreateFlags flags_ = vk::RenderPassCreateFlags(), - uint32_t attachmentCount_ = 0, - const vk::AttachmentDescription* pAttachments_ = nullptr, - uint32_t subpassCount_ = 0, - const vk::SubpassDescription* pSubpasses_ = nullptr, - uint32_t dependencyCount_ = 0, - const vk::SubpassDependency* pDependencies_ = nullptr ) - : flags( flags_ ) - , attachmentCount( attachmentCount_ ) - , pAttachments( pAttachments_ ) - , subpassCount( subpassCount_ ) - , pSubpasses( pSubpasses_ ) - , dependencyCount( dependencyCount_ ) - , pDependencies( pDependencies_ ) - {} - - RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eRenderPassCreateInfo; - const void* pNext = nullptr; - vk::RenderPassCreateFlags flags; - uint32_t attachmentCount; - const vk::AttachmentDescription* pAttachments; - uint32_t subpassCount; - const vk::SubpassDescription* pSubpasses; - uint32_t dependencyCount; - const vk::SubpassDependency* pDependencies; - }; - static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct RenderPassCreateInfo : public layout::RenderPassCreateInfo - { - RenderPassCreateInfo( vk::RenderPassCreateFlags flags_ = vk::RenderPassCreateFlags(), - uint32_t attachmentCount_ = 0, - const vk::AttachmentDescription* pAttachments_ = nullptr, - uint32_t subpassCount_ = 0, - const vk::SubpassDescription* pSubpasses_ = nullptr, - uint32_t dependencyCount_ = 0, - const vk::SubpassDependency* pDependencies_ = nullptr ) - : layout::RenderPassCreateInfo( flags_, attachmentCount_, pAttachments_, subpassCount_, pSubpasses_, dependencyCount_, pDependencies_ ) - {} - - RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs ) - : layout::RenderPassCreateInfo( rhs ) - {} - - RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - RenderPassCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - RenderPassCreateInfo & setFlags( vk::RenderPassCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - RenderPassCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) - { - attachmentCount = attachmentCount_; - return *this; - } - - RenderPassCreateInfo & setPAttachments( const vk::AttachmentDescription* pAttachments_ ) - { - pAttachments = pAttachments_; - return *this; - } - - RenderPassCreateInfo & setSubpassCount( uint32_t subpassCount_ ) - { - subpassCount = subpassCount_; - return *this; - } - - RenderPassCreateInfo & setPSubpasses( const vk::SubpassDescription* pSubpasses_ ) - { - pSubpasses = pSubpasses_; - return *this; - } - - RenderPassCreateInfo & setDependencyCount( uint32_t dependencyCount_ ) - { - dependencyCount = dependencyCount_; - return *this; - } - - RenderPassCreateInfo & setPDependencies( const vk::SubpassDependency* pDependencies_ ) - { - pDependencies = pDependencies_; - return *this; - } - - operator VkRenderPassCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkRenderPassCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( RenderPassCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( attachmentCount == rhs.attachmentCount ) - && ( pAttachments == rhs.pAttachments ) - && ( subpassCount == rhs.subpassCount ) - && ( pSubpasses == rhs.pSubpasses ) - && ( dependencyCount == rhs.dependencyCount ) - && ( pDependencies == rhs.pDependencies ); - } - - bool operator!=( RenderPassCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::RenderPassCreateInfo::sType; - }; - static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SubpassDescription2KHR - { - protected: - SubpassDescription2KHR( vk::SubpassDescriptionFlags flags_ = vk::SubpassDescriptionFlags(), - vk::PipelineBindPoint pipelineBindPoint_ = vk::PipelineBindPoint::eGraphics, - uint32_t viewMask_ = 0, - uint32_t inputAttachmentCount_ = 0, - const vk::AttachmentReference2KHR* pInputAttachments_ = nullptr, - uint32_t colorAttachmentCount_ = 0, - const vk::AttachmentReference2KHR* pColorAttachments_ = nullptr, - const vk::AttachmentReference2KHR* pResolveAttachments_ = nullptr, - const vk::AttachmentReference2KHR* pDepthStencilAttachment_ = nullptr, - uint32_t preserveAttachmentCount_ = 0, - const uint32_t* pPreserveAttachments_ = nullptr ) - : flags( flags_ ) - , pipelineBindPoint( pipelineBindPoint_ ) - , viewMask( viewMask_ ) - , inputAttachmentCount( inputAttachmentCount_ ) - , pInputAttachments( pInputAttachments_ ) - , colorAttachmentCount( colorAttachmentCount_ ) - , pColorAttachments( pColorAttachments_ ) - , pResolveAttachments( pResolveAttachments_ ) - , pDepthStencilAttachment( pDepthStencilAttachment_ ) - , preserveAttachmentCount( preserveAttachmentCount_ ) - , pPreserveAttachments( pPreserveAttachments_ ) - {} - - SubpassDescription2KHR( VkSubpassDescription2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SubpassDescription2KHR& operator=( VkSubpassDescription2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSubpassDescription2KHR; - const void* pNext = nullptr; - vk::SubpassDescriptionFlags flags; - vk::PipelineBindPoint pipelineBindPoint; - uint32_t viewMask; - uint32_t inputAttachmentCount; - const vk::AttachmentReference2KHR* pInputAttachments; - uint32_t colorAttachmentCount; - const vk::AttachmentReference2KHR* pColorAttachments; - const vk::AttachmentReference2KHR* pResolveAttachments; - const vk::AttachmentReference2KHR* pDepthStencilAttachment; - uint32_t preserveAttachmentCount; - const uint32_t* pPreserveAttachments; - }; - static_assert( sizeof( SubpassDescription2KHR ) == sizeof( VkSubpassDescription2KHR ), "layout struct and wrapper have different size!" ); - } - - struct SubpassDescription2KHR : public layout::SubpassDescription2KHR - { - SubpassDescription2KHR( vk::SubpassDescriptionFlags flags_ = vk::SubpassDescriptionFlags(), - vk::PipelineBindPoint pipelineBindPoint_ = vk::PipelineBindPoint::eGraphics, - uint32_t viewMask_ = 0, - uint32_t inputAttachmentCount_ = 0, - const vk::AttachmentReference2KHR* pInputAttachments_ = nullptr, - uint32_t colorAttachmentCount_ = 0, - const vk::AttachmentReference2KHR* pColorAttachments_ = nullptr, - const vk::AttachmentReference2KHR* pResolveAttachments_ = nullptr, - const vk::AttachmentReference2KHR* pDepthStencilAttachment_ = nullptr, - uint32_t preserveAttachmentCount_ = 0, - const uint32_t* pPreserveAttachments_ = nullptr ) - : layout::SubpassDescription2KHR( flags_, pipelineBindPoint_, viewMask_, inputAttachmentCount_, pInputAttachments_, colorAttachmentCount_, pColorAttachments_, pResolveAttachments_, pDepthStencilAttachment_, preserveAttachmentCount_, pPreserveAttachments_ ) - {} - - SubpassDescription2KHR( VkSubpassDescription2KHR const & rhs ) - : layout::SubpassDescription2KHR( rhs ) - {} - - SubpassDescription2KHR& operator=( VkSubpassDescription2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SubpassDescription2KHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SubpassDescription2KHR & setFlags( vk::SubpassDescriptionFlags flags_ ) - { - flags = flags_; - return *this; - } - - SubpassDescription2KHR & setPipelineBindPoint( vk::PipelineBindPoint pipelineBindPoint_ ) - { - pipelineBindPoint = pipelineBindPoint_; - return *this; - } - - SubpassDescription2KHR & setViewMask( uint32_t viewMask_ ) - { - viewMask = viewMask_; - return *this; - } - - SubpassDescription2KHR & setInputAttachmentCount( uint32_t inputAttachmentCount_ ) - { - inputAttachmentCount = inputAttachmentCount_; - return *this; - } - - SubpassDescription2KHR & setPInputAttachments( const vk::AttachmentReference2KHR* pInputAttachments_ ) - { - pInputAttachments = pInputAttachments_; - return *this; - } - - SubpassDescription2KHR & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) - { - colorAttachmentCount = colorAttachmentCount_; - return *this; - } - - SubpassDescription2KHR & setPColorAttachments( const vk::AttachmentReference2KHR* pColorAttachments_ ) - { - pColorAttachments = pColorAttachments_; - return *this; - } - - SubpassDescription2KHR & setPResolveAttachments( const vk::AttachmentReference2KHR* pResolveAttachments_ ) - { - pResolveAttachments = pResolveAttachments_; - return *this; - } - - SubpassDescription2KHR & setPDepthStencilAttachment( const vk::AttachmentReference2KHR* pDepthStencilAttachment_ ) - { - pDepthStencilAttachment = pDepthStencilAttachment_; - return *this; - } - - SubpassDescription2KHR & setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) - { - preserveAttachmentCount = preserveAttachmentCount_; - return *this; - } - - SubpassDescription2KHR & setPPreserveAttachments( const uint32_t* pPreserveAttachments_ ) - { - pPreserveAttachments = pPreserveAttachments_; - return *this; - } - - operator VkSubpassDescription2KHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSubpassDescription2KHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SubpassDescription2KHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( pipelineBindPoint == rhs.pipelineBindPoint ) - && ( viewMask == rhs.viewMask ) - && ( inputAttachmentCount == rhs.inputAttachmentCount ) - && ( pInputAttachments == rhs.pInputAttachments ) - && ( colorAttachmentCount == rhs.colorAttachmentCount ) - && ( pColorAttachments == rhs.pColorAttachments ) - && ( pResolveAttachments == rhs.pResolveAttachments ) - && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment ) - && ( preserveAttachmentCount == rhs.preserveAttachmentCount ) - && ( pPreserveAttachments == rhs.pPreserveAttachments ); - } - - bool operator!=( SubpassDescription2KHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SubpassDescription2KHR::sType; - }; - static_assert( sizeof( SubpassDescription2KHR ) == sizeof( VkSubpassDescription2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SubpassDependency2KHR - { - protected: - SubpassDependency2KHR( uint32_t srcSubpass_ = 0, - uint32_t dstSubpass_ = 0, - vk::PipelineStageFlags srcStageMask_ = vk::PipelineStageFlags(), - vk::PipelineStageFlags dstStageMask_ = vk::PipelineStageFlags(), - vk::AccessFlags srcAccessMask_ = vk::AccessFlags(), - vk::AccessFlags dstAccessMask_ = vk::AccessFlags(), - vk::DependencyFlags dependencyFlags_ = vk::DependencyFlags(), - int32_t viewOffset_ = 0 ) - : srcSubpass( srcSubpass_ ) - , dstSubpass( dstSubpass_ ) - , srcStageMask( srcStageMask_ ) - , dstStageMask( dstStageMask_ ) - , srcAccessMask( srcAccessMask_ ) - , dstAccessMask( dstAccessMask_ ) - , dependencyFlags( dependencyFlags_ ) - , viewOffset( viewOffset_ ) - {} - - SubpassDependency2KHR( VkSubpassDependency2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SubpassDependency2KHR& operator=( VkSubpassDependency2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSubpassDependency2KHR; - const void* pNext = nullptr; - uint32_t srcSubpass; - uint32_t dstSubpass; - vk::PipelineStageFlags srcStageMask; - vk::PipelineStageFlags dstStageMask; - vk::AccessFlags srcAccessMask; - vk::AccessFlags dstAccessMask; - vk::DependencyFlags dependencyFlags; - int32_t viewOffset; - }; - static_assert( sizeof( SubpassDependency2KHR ) == sizeof( VkSubpassDependency2KHR ), "layout struct and wrapper have different size!" ); - } - - struct SubpassDependency2KHR : public layout::SubpassDependency2KHR - { - SubpassDependency2KHR( uint32_t srcSubpass_ = 0, - uint32_t dstSubpass_ = 0, - vk::PipelineStageFlags srcStageMask_ = vk::PipelineStageFlags(), - vk::PipelineStageFlags dstStageMask_ = vk::PipelineStageFlags(), - vk::AccessFlags srcAccessMask_ = vk::AccessFlags(), - vk::AccessFlags dstAccessMask_ = vk::AccessFlags(), - vk::DependencyFlags dependencyFlags_ = vk::DependencyFlags(), - int32_t viewOffset_ = 0 ) - : layout::SubpassDependency2KHR( srcSubpass_, dstSubpass_, srcStageMask_, dstStageMask_, srcAccessMask_, dstAccessMask_, dependencyFlags_, viewOffset_ ) - {} - - SubpassDependency2KHR( VkSubpassDependency2KHR const & rhs ) - : layout::SubpassDependency2KHR( rhs ) - {} - - SubpassDependency2KHR& operator=( VkSubpassDependency2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SubpassDependency2KHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SubpassDependency2KHR & setSrcSubpass( uint32_t srcSubpass_ ) - { - srcSubpass = srcSubpass_; - return *this; - } - - SubpassDependency2KHR & setDstSubpass( uint32_t dstSubpass_ ) - { - dstSubpass = dstSubpass_; - return *this; - } - - SubpassDependency2KHR & setSrcStageMask( vk::PipelineStageFlags srcStageMask_ ) - { - srcStageMask = srcStageMask_; - return *this; - } - - SubpassDependency2KHR & setDstStageMask( vk::PipelineStageFlags dstStageMask_ ) - { - dstStageMask = dstStageMask_; - return *this; - } - - SubpassDependency2KHR & setSrcAccessMask( vk::AccessFlags srcAccessMask_ ) - { - srcAccessMask = srcAccessMask_; - return *this; - } - - SubpassDependency2KHR & setDstAccessMask( vk::AccessFlags dstAccessMask_ ) - { - dstAccessMask = dstAccessMask_; - return *this; - } - - SubpassDependency2KHR & setDependencyFlags( vk::DependencyFlags dependencyFlags_ ) - { - dependencyFlags = dependencyFlags_; - return *this; - } - - SubpassDependency2KHR & setViewOffset( int32_t viewOffset_ ) - { - viewOffset = viewOffset_; - return *this; - } - - operator VkSubpassDependency2KHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSubpassDependency2KHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SubpassDependency2KHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcSubpass == rhs.srcSubpass ) - && ( dstSubpass == rhs.dstSubpass ) - && ( srcStageMask == rhs.srcStageMask ) - && ( dstStageMask == rhs.dstStageMask ) - && ( srcAccessMask == rhs.srcAccessMask ) - && ( dstAccessMask == rhs.dstAccessMask ) - && ( dependencyFlags == rhs.dependencyFlags ) - && ( viewOffset == rhs.viewOffset ); - } - - bool operator!=( SubpassDependency2KHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SubpassDependency2KHR::sType; - }; - static_assert( sizeof( SubpassDependency2KHR ) == sizeof( VkSubpassDependency2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct RenderPassCreateInfo2KHR - { - protected: - RenderPassCreateInfo2KHR( vk::RenderPassCreateFlags flags_ = vk::RenderPassCreateFlags(), - uint32_t attachmentCount_ = 0, - const vk::AttachmentDescription2KHR* pAttachments_ = nullptr, - uint32_t subpassCount_ = 0, - const vk::SubpassDescription2KHR* pSubpasses_ = nullptr, - uint32_t dependencyCount_ = 0, - const vk::SubpassDependency2KHR* pDependencies_ = nullptr, - uint32_t correlatedViewMaskCount_ = 0, - const uint32_t* pCorrelatedViewMasks_ = nullptr ) - : flags( flags_ ) - , attachmentCount( attachmentCount_ ) - , pAttachments( pAttachments_ ) - , subpassCount( subpassCount_ ) - , pSubpasses( pSubpasses_ ) - , dependencyCount( dependencyCount_ ) - , pDependencies( pDependencies_ ) - , correlatedViewMaskCount( correlatedViewMaskCount_ ) - , pCorrelatedViewMasks( pCorrelatedViewMasks_ ) - {} - - RenderPassCreateInfo2KHR( VkRenderPassCreateInfo2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - RenderPassCreateInfo2KHR& operator=( VkRenderPassCreateInfo2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eRenderPassCreateInfo2KHR; - const void* pNext = nullptr; - vk::RenderPassCreateFlags flags; - uint32_t attachmentCount; - const vk::AttachmentDescription2KHR* pAttachments; - uint32_t subpassCount; - const vk::SubpassDescription2KHR* pSubpasses; - uint32_t dependencyCount; - const vk::SubpassDependency2KHR* pDependencies; - uint32_t correlatedViewMaskCount; - const uint32_t* pCorrelatedViewMasks; - }; - static_assert( sizeof( RenderPassCreateInfo2KHR ) == sizeof( VkRenderPassCreateInfo2KHR ), "layout struct and wrapper have different size!" ); - } - - struct RenderPassCreateInfo2KHR : public layout::RenderPassCreateInfo2KHR - { - RenderPassCreateInfo2KHR( vk::RenderPassCreateFlags flags_ = vk::RenderPassCreateFlags(), - uint32_t attachmentCount_ = 0, - const vk::AttachmentDescription2KHR* pAttachments_ = nullptr, - uint32_t subpassCount_ = 0, - const vk::SubpassDescription2KHR* pSubpasses_ = nullptr, - uint32_t dependencyCount_ = 0, - const vk::SubpassDependency2KHR* pDependencies_ = nullptr, - uint32_t correlatedViewMaskCount_ = 0, - const uint32_t* pCorrelatedViewMasks_ = nullptr ) - : layout::RenderPassCreateInfo2KHR( flags_, attachmentCount_, pAttachments_, subpassCount_, pSubpasses_, dependencyCount_, pDependencies_, correlatedViewMaskCount_, pCorrelatedViewMasks_ ) - {} - - RenderPassCreateInfo2KHR( VkRenderPassCreateInfo2KHR const & rhs ) - : layout::RenderPassCreateInfo2KHR( rhs ) - {} - - RenderPassCreateInfo2KHR& operator=( VkRenderPassCreateInfo2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - RenderPassCreateInfo2KHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - RenderPassCreateInfo2KHR & setFlags( vk::RenderPassCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - RenderPassCreateInfo2KHR & setAttachmentCount( uint32_t attachmentCount_ ) - { - attachmentCount = attachmentCount_; - return *this; - } - - RenderPassCreateInfo2KHR & setPAttachments( const vk::AttachmentDescription2KHR* pAttachments_ ) - { - pAttachments = pAttachments_; - return *this; - } - - RenderPassCreateInfo2KHR & setSubpassCount( uint32_t subpassCount_ ) - { - subpassCount = subpassCount_; - return *this; - } - - RenderPassCreateInfo2KHR & setPSubpasses( const vk::SubpassDescription2KHR* pSubpasses_ ) - { - pSubpasses = pSubpasses_; - return *this; - } - - RenderPassCreateInfo2KHR & setDependencyCount( uint32_t dependencyCount_ ) - { - dependencyCount = dependencyCount_; - return *this; - } - - RenderPassCreateInfo2KHR & setPDependencies( const vk::SubpassDependency2KHR* pDependencies_ ) - { - pDependencies = pDependencies_; - return *this; - } - - RenderPassCreateInfo2KHR & setCorrelatedViewMaskCount( uint32_t correlatedViewMaskCount_ ) - { - correlatedViewMaskCount = correlatedViewMaskCount_; - return *this; - } - - RenderPassCreateInfo2KHR & setPCorrelatedViewMasks( const uint32_t* pCorrelatedViewMasks_ ) - { - pCorrelatedViewMasks = pCorrelatedViewMasks_; - return *this; - } - - operator VkRenderPassCreateInfo2KHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkRenderPassCreateInfo2KHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( RenderPassCreateInfo2KHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( attachmentCount == rhs.attachmentCount ) - && ( pAttachments == rhs.pAttachments ) - && ( subpassCount == rhs.subpassCount ) - && ( pSubpasses == rhs.pSubpasses ) - && ( dependencyCount == rhs.dependencyCount ) - && ( pDependencies == rhs.pDependencies ) - && ( correlatedViewMaskCount == rhs.correlatedViewMaskCount ) - && ( pCorrelatedViewMasks == rhs.pCorrelatedViewMasks ); - } - - bool operator!=( RenderPassCreateInfo2KHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::RenderPassCreateInfo2KHR::sType; - }; - static_assert( sizeof( RenderPassCreateInfo2KHR ) == sizeof( VkRenderPassCreateInfo2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct RenderPassFragmentDensityMapCreateInfoEXT - { - protected: - RenderPassFragmentDensityMapCreateInfoEXT( vk::AttachmentReference fragmentDensityMapAttachment_ = vk::AttachmentReference() ) - : fragmentDensityMapAttachment( fragmentDensityMapAttachment_ ) - {} - - RenderPassFragmentDensityMapCreateInfoEXT( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - RenderPassFragmentDensityMapCreateInfoEXT& operator=( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eRenderPassFragmentDensityMapCreateInfoEXT; - const void* pNext = nullptr; - vk::AttachmentReference fragmentDensityMapAttachment; - }; - static_assert( sizeof( RenderPassFragmentDensityMapCreateInfoEXT ) == sizeof( VkRenderPassFragmentDensityMapCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct RenderPassFragmentDensityMapCreateInfoEXT : public layout::RenderPassFragmentDensityMapCreateInfoEXT - { - RenderPassFragmentDensityMapCreateInfoEXT( vk::AttachmentReference fragmentDensityMapAttachment_ = vk::AttachmentReference() ) - : layout::RenderPassFragmentDensityMapCreateInfoEXT( fragmentDensityMapAttachment_ ) - {} - - RenderPassFragmentDensityMapCreateInfoEXT( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) - : layout::RenderPassFragmentDensityMapCreateInfoEXT( rhs ) - {} - - RenderPassFragmentDensityMapCreateInfoEXT& operator=( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - RenderPassFragmentDensityMapCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - RenderPassFragmentDensityMapCreateInfoEXT & setFragmentDensityMapAttachment( vk::AttachmentReference fragmentDensityMapAttachment_ ) - { - fragmentDensityMapAttachment = fragmentDensityMapAttachment_; - return *this; - } - - operator VkRenderPassFragmentDensityMapCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkRenderPassFragmentDensityMapCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( RenderPassFragmentDensityMapCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fragmentDensityMapAttachment == rhs.fragmentDensityMapAttachment ); - } - - bool operator!=( RenderPassFragmentDensityMapCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::RenderPassFragmentDensityMapCreateInfoEXT::sType; - }; - static_assert( sizeof( RenderPassFragmentDensityMapCreateInfoEXT ) == sizeof( VkRenderPassFragmentDensityMapCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct RenderPassInputAttachmentAspectCreateInfo - { - protected: - RenderPassInputAttachmentAspectCreateInfo( uint32_t aspectReferenceCount_ = 0, - const vk::InputAttachmentAspectReference* pAspectReferences_ = nullptr ) - : aspectReferenceCount( aspectReferenceCount_ ) - , pAspectReferences( pAspectReferences_ ) - {} - - RenderPassInputAttachmentAspectCreateInfo( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - RenderPassInputAttachmentAspectCreateInfo& operator=( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eRenderPassInputAttachmentAspectCreateInfo; - const void* pNext = nullptr; - uint32_t aspectReferenceCount; - const vk::InputAttachmentAspectReference* pAspectReferences; - }; - static_assert( sizeof( RenderPassInputAttachmentAspectCreateInfo ) == sizeof( VkRenderPassInputAttachmentAspectCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct RenderPassInputAttachmentAspectCreateInfo : public layout::RenderPassInputAttachmentAspectCreateInfo - { - RenderPassInputAttachmentAspectCreateInfo( uint32_t aspectReferenceCount_ = 0, - const vk::InputAttachmentAspectReference* pAspectReferences_ = nullptr ) - : layout::RenderPassInputAttachmentAspectCreateInfo( aspectReferenceCount_, pAspectReferences_ ) - {} - - RenderPassInputAttachmentAspectCreateInfo( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) - : layout::RenderPassInputAttachmentAspectCreateInfo( rhs ) - {} - - RenderPassInputAttachmentAspectCreateInfo& operator=( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - RenderPassInputAttachmentAspectCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - RenderPassInputAttachmentAspectCreateInfo & setAspectReferenceCount( uint32_t aspectReferenceCount_ ) - { - aspectReferenceCount = aspectReferenceCount_; - return *this; - } - - RenderPassInputAttachmentAspectCreateInfo & setPAspectReferences( const vk::InputAttachmentAspectReference* pAspectReferences_ ) - { - pAspectReferences = pAspectReferences_; - return *this; - } - - operator VkRenderPassInputAttachmentAspectCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkRenderPassInputAttachmentAspectCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( RenderPassInputAttachmentAspectCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( aspectReferenceCount == rhs.aspectReferenceCount ) - && ( pAspectReferences == rhs.pAspectReferences ); - } - - bool operator!=( RenderPassInputAttachmentAspectCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::RenderPassInputAttachmentAspectCreateInfo::sType; - }; - static_assert( sizeof( RenderPassInputAttachmentAspectCreateInfo ) == sizeof( VkRenderPassInputAttachmentAspectCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct RenderPassMultiviewCreateInfo - { - protected: - RenderPassMultiviewCreateInfo( uint32_t subpassCount_ = 0, - const uint32_t* pViewMasks_ = nullptr, - uint32_t dependencyCount_ = 0, - const int32_t* pViewOffsets_ = nullptr, - uint32_t correlationMaskCount_ = 0, - const uint32_t* pCorrelationMasks_ = nullptr ) - : subpassCount( subpassCount_ ) - , pViewMasks( pViewMasks_ ) - , dependencyCount( dependencyCount_ ) - , pViewOffsets( pViewOffsets_ ) - , correlationMaskCount( correlationMaskCount_ ) - , pCorrelationMasks( pCorrelationMasks_ ) - {} - - RenderPassMultiviewCreateInfo( VkRenderPassMultiviewCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - RenderPassMultiviewCreateInfo& operator=( VkRenderPassMultiviewCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eRenderPassMultiviewCreateInfo; - const void* pNext = nullptr; - uint32_t subpassCount; - const uint32_t* pViewMasks; - uint32_t dependencyCount; - const int32_t* pViewOffsets; - uint32_t correlationMaskCount; - const uint32_t* pCorrelationMasks; - }; - static_assert( sizeof( RenderPassMultiviewCreateInfo ) == sizeof( VkRenderPassMultiviewCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct RenderPassMultiviewCreateInfo : public layout::RenderPassMultiviewCreateInfo - { - RenderPassMultiviewCreateInfo( uint32_t subpassCount_ = 0, - const uint32_t* pViewMasks_ = nullptr, - uint32_t dependencyCount_ = 0, - const int32_t* pViewOffsets_ = nullptr, - uint32_t correlationMaskCount_ = 0, - const uint32_t* pCorrelationMasks_ = nullptr ) - : layout::RenderPassMultiviewCreateInfo( subpassCount_, pViewMasks_, dependencyCount_, pViewOffsets_, correlationMaskCount_, pCorrelationMasks_ ) - {} - - RenderPassMultiviewCreateInfo( VkRenderPassMultiviewCreateInfo const & rhs ) - : layout::RenderPassMultiviewCreateInfo( rhs ) - {} - - RenderPassMultiviewCreateInfo& operator=( VkRenderPassMultiviewCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - RenderPassMultiviewCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - RenderPassMultiviewCreateInfo & setSubpassCount( uint32_t subpassCount_ ) - { - subpassCount = subpassCount_; - return *this; - } - - RenderPassMultiviewCreateInfo & setPViewMasks( const uint32_t* pViewMasks_ ) - { - pViewMasks = pViewMasks_; - return *this; - } - - RenderPassMultiviewCreateInfo & setDependencyCount( uint32_t dependencyCount_ ) - { - dependencyCount = dependencyCount_; - return *this; - } - - RenderPassMultiviewCreateInfo & setPViewOffsets( const int32_t* pViewOffsets_ ) - { - pViewOffsets = pViewOffsets_; - return *this; - } - - RenderPassMultiviewCreateInfo & setCorrelationMaskCount( uint32_t correlationMaskCount_ ) - { - correlationMaskCount = correlationMaskCount_; - return *this; - } - - RenderPassMultiviewCreateInfo & setPCorrelationMasks( const uint32_t* pCorrelationMasks_ ) - { - pCorrelationMasks = pCorrelationMasks_; - return *this; - } - - operator VkRenderPassMultiviewCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkRenderPassMultiviewCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( RenderPassMultiviewCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( subpassCount == rhs.subpassCount ) - && ( pViewMasks == rhs.pViewMasks ) - && ( dependencyCount == rhs.dependencyCount ) - && ( pViewOffsets == rhs.pViewOffsets ) - && ( correlationMaskCount == rhs.correlationMaskCount ) - && ( pCorrelationMasks == rhs.pCorrelationMasks ); - } - - bool operator!=( RenderPassMultiviewCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::RenderPassMultiviewCreateInfo::sType; - }; - static_assert( sizeof( RenderPassMultiviewCreateInfo ) == sizeof( VkRenderPassMultiviewCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SubpassSampleLocationsEXT - { - SubpassSampleLocationsEXT( uint32_t subpassIndex_ = 0, - vk::SampleLocationsInfoEXT sampleLocationsInfo_ = vk::SampleLocationsInfoEXT() ) - : subpassIndex( subpassIndex_ ) - , sampleLocationsInfo( sampleLocationsInfo_ ) - {} - - SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SubpassSampleLocationsEXT& operator=( VkSubpassSampleLocationsEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SubpassSampleLocationsEXT & setSubpassIndex( uint32_t subpassIndex_ ) - { - subpassIndex = subpassIndex_; - return *this; - } - - SubpassSampleLocationsEXT & setSampleLocationsInfo( vk::SampleLocationsInfoEXT sampleLocationsInfo_ ) - { - sampleLocationsInfo = sampleLocationsInfo_; - return *this; - } - - operator VkSubpassSampleLocationsEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSubpassSampleLocationsEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SubpassSampleLocationsEXT const& rhs ) const - { - return ( subpassIndex == rhs.subpassIndex ) - && ( sampleLocationsInfo == rhs.sampleLocationsInfo ); - } - - bool operator!=( SubpassSampleLocationsEXT const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t subpassIndex; - vk::SampleLocationsInfoEXT sampleLocationsInfo; - }; - static_assert( sizeof( SubpassSampleLocationsEXT ) == sizeof( VkSubpassSampleLocationsEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct RenderPassSampleLocationsBeginInfoEXT - { - protected: - RenderPassSampleLocationsBeginInfoEXT( uint32_t attachmentInitialSampleLocationsCount_ = 0, - const vk::AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ = nullptr, - uint32_t postSubpassSampleLocationsCount_ = 0, - const vk::SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ = nullptr ) - : attachmentInitialSampleLocationsCount( attachmentInitialSampleLocationsCount_ ) - , pAttachmentInitialSampleLocations( pAttachmentInitialSampleLocations_ ) - , postSubpassSampleLocationsCount( postSubpassSampleLocationsCount_ ) - , pPostSubpassSampleLocations( pPostSubpassSampleLocations_ ) - {} - - RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - RenderPassSampleLocationsBeginInfoEXT& operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eRenderPassSampleLocationsBeginInfoEXT; - const void* pNext = nullptr; - uint32_t attachmentInitialSampleLocationsCount; - const vk::AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations; - uint32_t postSubpassSampleLocationsCount; - const vk::SubpassSampleLocationsEXT* pPostSubpassSampleLocations; - }; - static_assert( sizeof( RenderPassSampleLocationsBeginInfoEXT ) == sizeof( VkRenderPassSampleLocationsBeginInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct RenderPassSampleLocationsBeginInfoEXT : public layout::RenderPassSampleLocationsBeginInfoEXT - { - RenderPassSampleLocationsBeginInfoEXT( uint32_t attachmentInitialSampleLocationsCount_ = 0, - const vk::AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ = nullptr, - uint32_t postSubpassSampleLocationsCount_ = 0, - const vk::SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ = nullptr ) - : layout::RenderPassSampleLocationsBeginInfoEXT( attachmentInitialSampleLocationsCount_, pAttachmentInitialSampleLocations_, postSubpassSampleLocationsCount_, pPostSubpassSampleLocations_ ) - {} - - RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) - : layout::RenderPassSampleLocationsBeginInfoEXT( rhs ) - {} - - RenderPassSampleLocationsBeginInfoEXT& operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - RenderPassSampleLocationsBeginInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - RenderPassSampleLocationsBeginInfoEXT & setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ ) - { - attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_; - return *this; - } - - RenderPassSampleLocationsBeginInfoEXT & setPAttachmentInitialSampleLocations( const vk::AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ ) - { - pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_; - return *this; - } - - RenderPassSampleLocationsBeginInfoEXT & setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ ) - { - postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_; - return *this; - } - - RenderPassSampleLocationsBeginInfoEXT & setPPostSubpassSampleLocations( const vk::SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ ) - { - pPostSubpassSampleLocations = pPostSubpassSampleLocations_; - return *this; - } - - operator VkRenderPassSampleLocationsBeginInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkRenderPassSampleLocationsBeginInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( attachmentInitialSampleLocationsCount == rhs.attachmentInitialSampleLocationsCount ) - && ( pAttachmentInitialSampleLocations == rhs.pAttachmentInitialSampleLocations ) - && ( postSubpassSampleLocationsCount == rhs.postSubpassSampleLocationsCount ) - && ( pPostSubpassSampleLocations == rhs.pPostSubpassSampleLocations ); - } - - bool operator!=( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::RenderPassSampleLocationsBeginInfoEXT::sType; - }; - static_assert( sizeof( RenderPassSampleLocationsBeginInfoEXT ) == sizeof( VkRenderPassSampleLocationsBeginInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SamplerCreateInfo - { - protected: - SamplerCreateInfo( vk::SamplerCreateFlags flags_ = vk::SamplerCreateFlags(), - vk::Filter magFilter_ = vk::Filter::eNearest, - vk::Filter minFilter_ = vk::Filter::eNearest, - vk::SamplerMipmapMode mipmapMode_ = vk::SamplerMipmapMode::eNearest, - vk::SamplerAddressMode addressModeU_ = vk::SamplerAddressMode::eRepeat, - vk::SamplerAddressMode addressModeV_ = vk::SamplerAddressMode::eRepeat, - vk::SamplerAddressMode addressModeW_ = vk::SamplerAddressMode::eRepeat, - float mipLodBias_ = 0, - vk::Bool32 anisotropyEnable_ = 0, - float maxAnisotropy_ = 0, - vk::Bool32 compareEnable_ = 0, - vk::CompareOp compareOp_ = vk::CompareOp::eNever, - float minLod_ = 0, - float maxLod_ = 0, - vk::BorderColor borderColor_ = vk::BorderColor::eFloatTransparentBlack, - vk::Bool32 unnormalizedCoordinates_ = 0 ) - : flags( flags_ ) - , magFilter( magFilter_ ) - , minFilter( minFilter_ ) - , mipmapMode( mipmapMode_ ) - , addressModeU( addressModeU_ ) - , addressModeV( addressModeV_ ) - , addressModeW( addressModeW_ ) - , mipLodBias( mipLodBias_ ) - , anisotropyEnable( anisotropyEnable_ ) - , maxAnisotropy( maxAnisotropy_ ) - , compareEnable( compareEnable_ ) - , compareOp( compareOp_ ) - , minLod( minLod_ ) - , maxLod( maxLod_ ) - , borderColor( borderColor_ ) - , unnormalizedCoordinates( unnormalizedCoordinates_ ) - {} - - SamplerCreateInfo( VkSamplerCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSamplerCreateInfo; - const void* pNext = nullptr; - vk::SamplerCreateFlags flags; - vk::Filter magFilter; - vk::Filter minFilter; - vk::SamplerMipmapMode mipmapMode; - vk::SamplerAddressMode addressModeU; - vk::SamplerAddressMode addressModeV; - vk::SamplerAddressMode addressModeW; - float mipLodBias; - vk::Bool32 anisotropyEnable; - float maxAnisotropy; - vk::Bool32 compareEnable; - vk::CompareOp compareOp; - float minLod; - float maxLod; - vk::BorderColor borderColor; - vk::Bool32 unnormalizedCoordinates; - }; - static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct SamplerCreateInfo : public layout::SamplerCreateInfo - { - SamplerCreateInfo( vk::SamplerCreateFlags flags_ = vk::SamplerCreateFlags(), - vk::Filter magFilter_ = vk::Filter::eNearest, - vk::Filter minFilter_ = vk::Filter::eNearest, - vk::SamplerMipmapMode mipmapMode_ = vk::SamplerMipmapMode::eNearest, - vk::SamplerAddressMode addressModeU_ = vk::SamplerAddressMode::eRepeat, - vk::SamplerAddressMode addressModeV_ = vk::SamplerAddressMode::eRepeat, - vk::SamplerAddressMode addressModeW_ = vk::SamplerAddressMode::eRepeat, - float mipLodBias_ = 0, - vk::Bool32 anisotropyEnable_ = 0, - float maxAnisotropy_ = 0, - vk::Bool32 compareEnable_ = 0, - vk::CompareOp compareOp_ = vk::CompareOp::eNever, - float minLod_ = 0, - float maxLod_ = 0, - vk::BorderColor borderColor_ = vk::BorderColor::eFloatTransparentBlack, - vk::Bool32 unnormalizedCoordinates_ = 0 ) - : layout::SamplerCreateInfo( flags_, magFilter_, minFilter_, mipmapMode_, addressModeU_, addressModeV_, addressModeW_, mipLodBias_, anisotropyEnable_, maxAnisotropy_, compareEnable_, compareOp_, minLod_, maxLod_, borderColor_, unnormalizedCoordinates_ ) - {} - - SamplerCreateInfo( VkSamplerCreateInfo const & rhs ) - : layout::SamplerCreateInfo( rhs ) - {} - - SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SamplerCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SamplerCreateInfo & setFlags( vk::SamplerCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - SamplerCreateInfo & setMagFilter( vk::Filter magFilter_ ) - { - magFilter = magFilter_; - return *this; - } - - SamplerCreateInfo & setMinFilter( vk::Filter minFilter_ ) - { - minFilter = minFilter_; - return *this; - } - - SamplerCreateInfo & setMipmapMode( vk::SamplerMipmapMode mipmapMode_ ) - { - mipmapMode = mipmapMode_; - return *this; - } - - SamplerCreateInfo & setAddressModeU( vk::SamplerAddressMode addressModeU_ ) - { - addressModeU = addressModeU_; - return *this; - } - - SamplerCreateInfo & setAddressModeV( vk::SamplerAddressMode addressModeV_ ) - { - addressModeV = addressModeV_; - return *this; - } - - SamplerCreateInfo & setAddressModeW( vk::SamplerAddressMode addressModeW_ ) - { - addressModeW = addressModeW_; - return *this; - } - - SamplerCreateInfo & setMipLodBias( float mipLodBias_ ) - { - mipLodBias = mipLodBias_; - return *this; - } - - SamplerCreateInfo & setAnisotropyEnable( vk::Bool32 anisotropyEnable_ ) - { - anisotropyEnable = anisotropyEnable_; - return *this; - } - - SamplerCreateInfo & setMaxAnisotropy( float maxAnisotropy_ ) - { - maxAnisotropy = maxAnisotropy_; - return *this; - } - - SamplerCreateInfo & setCompareEnable( vk::Bool32 compareEnable_ ) - { - compareEnable = compareEnable_; - return *this; - } - - SamplerCreateInfo & setCompareOp( vk::CompareOp compareOp_ ) - { - compareOp = compareOp_; - return *this; - } - - SamplerCreateInfo & setMinLod( float minLod_ ) - { - minLod = minLod_; - return *this; - } - - SamplerCreateInfo & setMaxLod( float maxLod_ ) - { - maxLod = maxLod_; - return *this; - } - - SamplerCreateInfo & setBorderColor( vk::BorderColor borderColor_ ) - { - borderColor = borderColor_; - return *this; - } - - SamplerCreateInfo & setUnnormalizedCoordinates( vk::Bool32 unnormalizedCoordinates_ ) - { - unnormalizedCoordinates = unnormalizedCoordinates_; - return *this; - } - - operator VkSamplerCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSamplerCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SamplerCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( magFilter == rhs.magFilter ) - && ( minFilter == rhs.minFilter ) - && ( mipmapMode == rhs.mipmapMode ) - && ( addressModeU == rhs.addressModeU ) - && ( addressModeV == rhs.addressModeV ) - && ( addressModeW == rhs.addressModeW ) - && ( mipLodBias == rhs.mipLodBias ) - && ( anisotropyEnable == rhs.anisotropyEnable ) - && ( maxAnisotropy == rhs.maxAnisotropy ) - && ( compareEnable == rhs.compareEnable ) - && ( compareOp == rhs.compareOp ) - && ( minLod == rhs.minLod ) - && ( maxLod == rhs.maxLod ) - && ( borderColor == rhs.borderColor ) - && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates ); - } - - bool operator!=( SamplerCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SamplerCreateInfo::sType; - }; - static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SamplerReductionModeCreateInfoEXT - { - protected: - SamplerReductionModeCreateInfoEXT( vk::SamplerReductionModeEXT reductionMode_ = vk::SamplerReductionModeEXT::eWeightedAverage ) - : reductionMode( reductionMode_ ) - {} - - SamplerReductionModeCreateInfoEXT( VkSamplerReductionModeCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SamplerReductionModeCreateInfoEXT& operator=( VkSamplerReductionModeCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSamplerReductionModeCreateInfoEXT; - const void* pNext = nullptr; - vk::SamplerReductionModeEXT reductionMode; - }; - static_assert( sizeof( SamplerReductionModeCreateInfoEXT ) == sizeof( VkSamplerReductionModeCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct SamplerReductionModeCreateInfoEXT : public layout::SamplerReductionModeCreateInfoEXT - { - SamplerReductionModeCreateInfoEXT( vk::SamplerReductionModeEXT reductionMode_ = vk::SamplerReductionModeEXT::eWeightedAverage ) - : layout::SamplerReductionModeCreateInfoEXT( reductionMode_ ) - {} - - SamplerReductionModeCreateInfoEXT( VkSamplerReductionModeCreateInfoEXT const & rhs ) - : layout::SamplerReductionModeCreateInfoEXT( rhs ) - {} - - SamplerReductionModeCreateInfoEXT& operator=( VkSamplerReductionModeCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SamplerReductionModeCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SamplerReductionModeCreateInfoEXT & setReductionMode( vk::SamplerReductionModeEXT reductionMode_ ) - { - reductionMode = reductionMode_; - return *this; - } - - operator VkSamplerReductionModeCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSamplerReductionModeCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SamplerReductionModeCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( reductionMode == rhs.reductionMode ); - } - - bool operator!=( SamplerReductionModeCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SamplerReductionModeCreateInfoEXT::sType; - }; - static_assert( sizeof( SamplerReductionModeCreateInfoEXT ) == sizeof( VkSamplerReductionModeCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SamplerYcbcrConversionCreateInfo - { - protected: - SamplerYcbcrConversionCreateInfo( vk::Format format_ = vk::Format::eUndefined, - vk::SamplerYcbcrModelConversion ycbcrModel_ = vk::SamplerYcbcrModelConversion::eRgbIdentity, - vk::SamplerYcbcrRange ycbcrRange_ = vk::SamplerYcbcrRange::eItuFull, - vk::ComponentMapping components_ = vk::ComponentMapping(), - vk::ChromaLocation xChromaOffset_ = vk::ChromaLocation::eCositedEven, - vk::ChromaLocation yChromaOffset_ = vk::ChromaLocation::eCositedEven, - vk::Filter chromaFilter_ = vk::Filter::eNearest, - vk::Bool32 forceExplicitReconstruction_ = 0 ) - : format( format_ ) - , ycbcrModel( ycbcrModel_ ) - , ycbcrRange( ycbcrRange_ ) - , components( components_ ) - , xChromaOffset( xChromaOffset_ ) - , yChromaOffset( yChromaOffset_ ) - , chromaFilter( chromaFilter_ ) - , forceExplicitReconstruction( forceExplicitReconstruction_ ) - {} - - SamplerYcbcrConversionCreateInfo( VkSamplerYcbcrConversionCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SamplerYcbcrConversionCreateInfo& operator=( VkSamplerYcbcrConversionCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSamplerYcbcrConversionCreateInfo; - const void* pNext = nullptr; - vk::Format format; - vk::SamplerYcbcrModelConversion ycbcrModel; - vk::SamplerYcbcrRange ycbcrRange; - vk::ComponentMapping components; - vk::ChromaLocation xChromaOffset; - vk::ChromaLocation yChromaOffset; - vk::Filter chromaFilter; - vk::Bool32 forceExplicitReconstruction; - }; - static_assert( sizeof( SamplerYcbcrConversionCreateInfo ) == sizeof( VkSamplerYcbcrConversionCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct SamplerYcbcrConversionCreateInfo : public layout::SamplerYcbcrConversionCreateInfo - { - SamplerYcbcrConversionCreateInfo( vk::Format format_ = vk::Format::eUndefined, - vk::SamplerYcbcrModelConversion ycbcrModel_ = vk::SamplerYcbcrModelConversion::eRgbIdentity, - vk::SamplerYcbcrRange ycbcrRange_ = vk::SamplerYcbcrRange::eItuFull, - vk::ComponentMapping components_ = vk::ComponentMapping(), - vk::ChromaLocation xChromaOffset_ = vk::ChromaLocation::eCositedEven, - vk::ChromaLocation yChromaOffset_ = vk::ChromaLocation::eCositedEven, - vk::Filter chromaFilter_ = vk::Filter::eNearest, - vk::Bool32 forceExplicitReconstruction_ = 0 ) - : layout::SamplerYcbcrConversionCreateInfo( format_, ycbcrModel_, ycbcrRange_, components_, xChromaOffset_, yChromaOffset_, chromaFilter_, forceExplicitReconstruction_ ) - {} - - SamplerYcbcrConversionCreateInfo( VkSamplerYcbcrConversionCreateInfo const & rhs ) - : layout::SamplerYcbcrConversionCreateInfo( rhs ) - {} - - SamplerYcbcrConversionCreateInfo& operator=( VkSamplerYcbcrConversionCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setFormat( vk::Format format_ ) - { - format = format_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setYcbcrModel( vk::SamplerYcbcrModelConversion ycbcrModel_ ) - { - ycbcrModel = ycbcrModel_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setYcbcrRange( vk::SamplerYcbcrRange ycbcrRange_ ) - { - ycbcrRange = ycbcrRange_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setComponents( vk::ComponentMapping components_ ) - { - components = components_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setXChromaOffset( vk::ChromaLocation xChromaOffset_ ) - { - xChromaOffset = xChromaOffset_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setYChromaOffset( vk::ChromaLocation yChromaOffset_ ) - { - yChromaOffset = yChromaOffset_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setChromaFilter( vk::Filter chromaFilter_ ) - { - chromaFilter = chromaFilter_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setForceExplicitReconstruction( vk::Bool32 forceExplicitReconstruction_ ) - { - forceExplicitReconstruction = forceExplicitReconstruction_; - return *this; - } - - operator VkSamplerYcbcrConversionCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSamplerYcbcrConversionCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SamplerYcbcrConversionCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( format == rhs.format ) - && ( ycbcrModel == rhs.ycbcrModel ) - && ( ycbcrRange == rhs.ycbcrRange ) - && ( components == rhs.components ) - && ( xChromaOffset == rhs.xChromaOffset ) - && ( yChromaOffset == rhs.yChromaOffset ) - && ( chromaFilter == rhs.chromaFilter ) - && ( forceExplicitReconstruction == rhs.forceExplicitReconstruction ); - } - - bool operator!=( SamplerYcbcrConversionCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SamplerYcbcrConversionCreateInfo::sType; - }; - static_assert( sizeof( SamplerYcbcrConversionCreateInfo ) == sizeof( VkSamplerYcbcrConversionCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SamplerYcbcrConversionImageFormatProperties - { - protected: - SamplerYcbcrConversionImageFormatProperties( uint32_t combinedImageSamplerDescriptorCount_ = 0 ) - : combinedImageSamplerDescriptorCount( combinedImageSamplerDescriptorCount_ ) - {} - - SamplerYcbcrConversionImageFormatProperties( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SamplerYcbcrConversionImageFormatProperties& operator=( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSamplerYcbcrConversionImageFormatProperties; - void* pNext = nullptr; - uint32_t combinedImageSamplerDescriptorCount; - }; - static_assert( sizeof( SamplerYcbcrConversionImageFormatProperties ) == sizeof( VkSamplerYcbcrConversionImageFormatProperties ), "layout struct and wrapper have different size!" ); - } - - struct SamplerYcbcrConversionImageFormatProperties : public layout::SamplerYcbcrConversionImageFormatProperties - { - operator VkSamplerYcbcrConversionImageFormatProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSamplerYcbcrConversionImageFormatProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SamplerYcbcrConversionImageFormatProperties const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( combinedImageSamplerDescriptorCount == rhs.combinedImageSamplerDescriptorCount ); - } - - bool operator!=( SamplerYcbcrConversionImageFormatProperties const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SamplerYcbcrConversionImageFormatProperties::sType; - }; - static_assert( sizeof( SamplerYcbcrConversionImageFormatProperties ) == sizeof( VkSamplerYcbcrConversionImageFormatProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SamplerYcbcrConversionInfo - { - protected: - SamplerYcbcrConversionInfo( vk::SamplerYcbcrConversion conversion_ = vk::SamplerYcbcrConversion() ) - : conversion( conversion_ ) - {} - - SamplerYcbcrConversionInfo( VkSamplerYcbcrConversionInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SamplerYcbcrConversionInfo& operator=( VkSamplerYcbcrConversionInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSamplerYcbcrConversionInfo; - const void* pNext = nullptr; - vk::SamplerYcbcrConversion conversion; - }; - static_assert( sizeof( SamplerYcbcrConversionInfo ) == sizeof( VkSamplerYcbcrConversionInfo ), "layout struct and wrapper have different size!" ); - } - - struct SamplerYcbcrConversionInfo : public layout::SamplerYcbcrConversionInfo - { - SamplerYcbcrConversionInfo( vk::SamplerYcbcrConversion conversion_ = vk::SamplerYcbcrConversion() ) - : layout::SamplerYcbcrConversionInfo( conversion_ ) - {} - - SamplerYcbcrConversionInfo( VkSamplerYcbcrConversionInfo const & rhs ) - : layout::SamplerYcbcrConversionInfo( rhs ) - {} - - SamplerYcbcrConversionInfo& operator=( VkSamplerYcbcrConversionInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SamplerYcbcrConversionInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SamplerYcbcrConversionInfo & setConversion( vk::SamplerYcbcrConversion conversion_ ) - { - conversion = conversion_; - return *this; - } - - operator VkSamplerYcbcrConversionInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSamplerYcbcrConversionInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SamplerYcbcrConversionInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( conversion == rhs.conversion ); - } - - bool operator!=( SamplerYcbcrConversionInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SamplerYcbcrConversionInfo::sType; - }; - static_assert( sizeof( SamplerYcbcrConversionInfo ) == sizeof( VkSamplerYcbcrConversionInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SemaphoreCreateInfo - { - protected: - SemaphoreCreateInfo( vk::SemaphoreCreateFlags flags_ = vk::SemaphoreCreateFlags() ) - : flags( flags_ ) - {} - - SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSemaphoreCreateInfo; - const void* pNext = nullptr; - vk::SemaphoreCreateFlags flags; - }; - static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct SemaphoreCreateInfo : public layout::SemaphoreCreateInfo - { - SemaphoreCreateInfo( vk::SemaphoreCreateFlags flags_ = vk::SemaphoreCreateFlags() ) - : layout::SemaphoreCreateInfo( flags_ ) - {} - - SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs ) - : layout::SemaphoreCreateInfo( rhs ) - {} - - SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SemaphoreCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SemaphoreCreateInfo & setFlags( vk::SemaphoreCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - operator VkSemaphoreCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSemaphoreCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SemaphoreCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ); - } - - bool operator!=( SemaphoreCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SemaphoreCreateInfo::sType; - }; - static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SemaphoreGetFdInfoKHR - { - protected: - SemaphoreGetFdInfoKHR( vk::Semaphore semaphore_ = vk::Semaphore(), - vk::ExternalSemaphoreHandleTypeFlagBits handleType_ = vk::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) - : semaphore( semaphore_ ) - , handleType( handleType_ ) - {} - - SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SemaphoreGetFdInfoKHR& operator=( VkSemaphoreGetFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSemaphoreGetFdInfoKHR; - const void* pNext = nullptr; - vk::Semaphore semaphore; - vk::ExternalSemaphoreHandleTypeFlagBits handleType; - }; - static_assert( sizeof( SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct SemaphoreGetFdInfoKHR : public layout::SemaphoreGetFdInfoKHR - { - SemaphoreGetFdInfoKHR( vk::Semaphore semaphore_ = vk::Semaphore(), - vk::ExternalSemaphoreHandleTypeFlagBits handleType_ = vk::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) - : layout::SemaphoreGetFdInfoKHR( semaphore_, handleType_ ) - {} - - SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs ) - : layout::SemaphoreGetFdInfoKHR( rhs ) - {} - - SemaphoreGetFdInfoKHR& operator=( VkSemaphoreGetFdInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SemaphoreGetFdInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SemaphoreGetFdInfoKHR & setSemaphore( vk::Semaphore semaphore_ ) - { - semaphore = semaphore_; - return *this; - } - - SemaphoreGetFdInfoKHR & setHandleType( vk::ExternalSemaphoreHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - operator VkSemaphoreGetFdInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSemaphoreGetFdInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SemaphoreGetFdInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( semaphore == rhs.semaphore ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( SemaphoreGetFdInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SemaphoreGetFdInfoKHR::sType; - }; - static_assert( sizeof( SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct SemaphoreGetWin32HandleInfoKHR - { - protected: - SemaphoreGetWin32HandleInfoKHR( vk::Semaphore semaphore_ = vk::Semaphore(), - vk::ExternalSemaphoreHandleTypeFlagBits handleType_ = vk::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) - : semaphore( semaphore_ ) - , handleType( handleType_ ) - {} - - SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SemaphoreGetWin32HandleInfoKHR& operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSemaphoreGetWin32HandleInfoKHR; - const void* pNext = nullptr; - vk::Semaphore semaphore; - vk::ExternalSemaphoreHandleTypeFlagBits handleType; - }; - static_assert( sizeof( SemaphoreGetWin32HandleInfoKHR ) == sizeof( VkSemaphoreGetWin32HandleInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct SemaphoreGetWin32HandleInfoKHR : public layout::SemaphoreGetWin32HandleInfoKHR - { - SemaphoreGetWin32HandleInfoKHR( vk::Semaphore semaphore_ = vk::Semaphore(), - vk::ExternalSemaphoreHandleTypeFlagBits handleType_ = vk::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) - : layout::SemaphoreGetWin32HandleInfoKHR( semaphore_, handleType_ ) - {} - - SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) - : layout::SemaphoreGetWin32HandleInfoKHR( rhs ) - {} - - SemaphoreGetWin32HandleInfoKHR& operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SemaphoreGetWin32HandleInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SemaphoreGetWin32HandleInfoKHR & setSemaphore( vk::Semaphore semaphore_ ) - { - semaphore = semaphore_; - return *this; - } - - SemaphoreGetWin32HandleInfoKHR & setHandleType( vk::ExternalSemaphoreHandleTypeFlagBits handleType_ ) - { - handleType = handleType_; - return *this; - } - - operator VkSemaphoreGetWin32HandleInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSemaphoreGetWin32HandleInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SemaphoreGetWin32HandleInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( semaphore == rhs.semaphore ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( SemaphoreGetWin32HandleInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SemaphoreGetWin32HandleInfoKHR::sType; - }; - static_assert( sizeof( SemaphoreGetWin32HandleInfoKHR ) == sizeof( VkSemaphoreGetWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - namespace layout - { - struct ShaderModuleCreateInfo - { - protected: - ShaderModuleCreateInfo( vk::ShaderModuleCreateFlags flags_ = vk::ShaderModuleCreateFlags(), - size_t codeSize_ = 0, - const uint32_t* pCode_ = nullptr ) - : flags( flags_ ) - , codeSize( codeSize_ ) - , pCode( pCode_ ) - {} - - ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eShaderModuleCreateInfo; - const void* pNext = nullptr; - vk::ShaderModuleCreateFlags flags; - size_t codeSize; - const uint32_t* pCode; - }; - static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "layout struct and wrapper have different size!" ); - } - - struct ShaderModuleCreateInfo : public layout::ShaderModuleCreateInfo - { - ShaderModuleCreateInfo( vk::ShaderModuleCreateFlags flags_ = vk::ShaderModuleCreateFlags(), - size_t codeSize_ = 0, - const uint32_t* pCode_ = nullptr ) - : layout::ShaderModuleCreateInfo( flags_, codeSize_, pCode_ ) - {} - - ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs ) - : layout::ShaderModuleCreateInfo( rhs ) - {} - - ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ShaderModuleCreateInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ShaderModuleCreateInfo & setFlags( vk::ShaderModuleCreateFlags flags_ ) - { - flags = flags_; - return *this; - } - - ShaderModuleCreateInfo & setCodeSize( size_t codeSize_ ) - { - codeSize = codeSize_; - return *this; - } - - ShaderModuleCreateInfo & setPCode( const uint32_t* pCode_ ) - { - pCode = pCode_; - return *this; - } - - operator VkShaderModuleCreateInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkShaderModuleCreateInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ShaderModuleCreateInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( codeSize == rhs.codeSize ) - && ( pCode == rhs.pCode ); - } - - bool operator!=( ShaderModuleCreateInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ShaderModuleCreateInfo::sType; - }; - static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ShaderModuleValidationCacheCreateInfoEXT - { - protected: - ShaderModuleValidationCacheCreateInfoEXT( vk::ValidationCacheEXT validationCache_ = vk::ValidationCacheEXT() ) - : validationCache( validationCache_ ) - {} - - ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ShaderModuleValidationCacheCreateInfoEXT& operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eShaderModuleValidationCacheCreateInfoEXT; - const void* pNext = nullptr; - vk::ValidationCacheEXT validationCache; - }; - static_assert( sizeof( ShaderModuleValidationCacheCreateInfoEXT ) == sizeof( VkShaderModuleValidationCacheCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct ShaderModuleValidationCacheCreateInfoEXT : public layout::ShaderModuleValidationCacheCreateInfoEXT - { - ShaderModuleValidationCacheCreateInfoEXT( vk::ValidationCacheEXT validationCache_ = vk::ValidationCacheEXT() ) - : layout::ShaderModuleValidationCacheCreateInfoEXT( validationCache_ ) - {} - - ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) - : layout::ShaderModuleValidationCacheCreateInfoEXT( rhs ) - {} - - ShaderModuleValidationCacheCreateInfoEXT& operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ShaderModuleValidationCacheCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ShaderModuleValidationCacheCreateInfoEXT & setValidationCache( vk::ValidationCacheEXT validationCache_ ) - { - validationCache = validationCache_; - return *this; - } - - operator VkShaderModuleValidationCacheCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkShaderModuleValidationCacheCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( validationCache == rhs.validationCache ); - } - - bool operator!=( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ShaderModuleValidationCacheCreateInfoEXT::sType; - }; - static_assert( sizeof( ShaderModuleValidationCacheCreateInfoEXT ) == sizeof( VkShaderModuleValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ShaderResourceUsageAMD - { - operator VkShaderResourceUsageAMD const&() const - { - return *reinterpret_cast( this ); - } - - operator VkShaderResourceUsageAMD &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ShaderResourceUsageAMD const& rhs ) const - { - return ( numUsedVgprs == rhs.numUsedVgprs ) - && ( numUsedSgprs == rhs.numUsedSgprs ) - && ( ldsSizePerLocalWorkGroup == rhs.ldsSizePerLocalWorkGroup ) - && ( ldsUsageSizeInBytes == rhs.ldsUsageSizeInBytes ) - && ( scratchMemUsageInBytes == rhs.scratchMemUsageInBytes ); - } - - bool operator!=( ShaderResourceUsageAMD const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t numUsedVgprs; - uint32_t numUsedSgprs; - uint32_t ldsSizePerLocalWorkGroup; - size_t ldsUsageSizeInBytes; - size_t scratchMemUsageInBytes; - }; - static_assert( sizeof( ShaderResourceUsageAMD ) == sizeof( VkShaderResourceUsageAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ShaderStatisticsInfoAMD - { - operator VkShaderStatisticsInfoAMD const&() const - { - return *reinterpret_cast( this ); - } - - operator VkShaderStatisticsInfoAMD &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ShaderStatisticsInfoAMD const& rhs ) const - { - return ( shaderStageMask == rhs.shaderStageMask ) - && ( resourceUsage == rhs.resourceUsage ) - && ( numPhysicalVgprs == rhs.numPhysicalVgprs ) - && ( numPhysicalSgprs == rhs.numPhysicalSgprs ) - && ( numAvailableVgprs == rhs.numAvailableVgprs ) - && ( numAvailableSgprs == rhs.numAvailableSgprs ) - && ( memcmp( computeWorkGroupSize, rhs.computeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 ); - } - - bool operator!=( ShaderStatisticsInfoAMD const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ShaderStageFlags shaderStageMask; - vk::ShaderResourceUsageAMD resourceUsage; - uint32_t numPhysicalVgprs; - uint32_t numPhysicalSgprs; - uint32_t numAvailableVgprs; - uint32_t numAvailableSgprs; - uint32_t computeWorkGroupSize[3]; - }; - static_assert( sizeof( ShaderStatisticsInfoAMD ) == sizeof( VkShaderStatisticsInfoAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SharedPresentSurfaceCapabilitiesKHR - { - protected: - SharedPresentSurfaceCapabilitiesKHR( vk::ImageUsageFlags sharedPresentSupportedUsageFlags_ = vk::ImageUsageFlags() ) - : sharedPresentSupportedUsageFlags( sharedPresentSupportedUsageFlags_ ) - {} - - SharedPresentSurfaceCapabilitiesKHR( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SharedPresentSurfaceCapabilitiesKHR& operator=( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSharedPresentSurfaceCapabilitiesKHR; - void* pNext = nullptr; - vk::ImageUsageFlags sharedPresentSupportedUsageFlags; - }; - static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "layout struct and wrapper have different size!" ); - } - - struct SharedPresentSurfaceCapabilitiesKHR : public layout::SharedPresentSurfaceCapabilitiesKHR - { - operator VkSharedPresentSurfaceCapabilitiesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSharedPresentSurfaceCapabilitiesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags ); - } - - bool operator!=( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SharedPresentSurfaceCapabilitiesKHR::sType; - }; - static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SparseImageFormatProperties - { - operator VkSparseImageFormatProperties const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSparseImageFormatProperties &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SparseImageFormatProperties const& rhs ) const - { - return ( aspectMask == rhs.aspectMask ) - && ( imageGranularity == rhs.imageGranularity ) - && ( flags == rhs.flags ); - } - - bool operator!=( SparseImageFormatProperties const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::ImageAspectFlags aspectMask; - vk::Extent3D imageGranularity; - vk::SparseImageFormatFlags flags; - }; - static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SparseImageFormatProperties2 - { - protected: - SparseImageFormatProperties2( vk::SparseImageFormatProperties properties_ = vk::SparseImageFormatProperties() ) - : properties( properties_ ) - {} - - SparseImageFormatProperties2( VkSparseImageFormatProperties2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SparseImageFormatProperties2& operator=( VkSparseImageFormatProperties2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSparseImageFormatProperties2; - void* pNext = nullptr; - vk::SparseImageFormatProperties properties; - }; - static_assert( sizeof( SparseImageFormatProperties2 ) == sizeof( VkSparseImageFormatProperties2 ), "layout struct and wrapper have different size!" ); - } - - struct SparseImageFormatProperties2 : public layout::SparseImageFormatProperties2 - { - operator VkSparseImageFormatProperties2 const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSparseImageFormatProperties2 &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SparseImageFormatProperties2 const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( properties == rhs.properties ); - } - - bool operator!=( SparseImageFormatProperties2 const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SparseImageFormatProperties2::sType; - }; - static_assert( sizeof( SparseImageFormatProperties2 ) == sizeof( VkSparseImageFormatProperties2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SparseImageMemoryRequirements - { - operator VkSparseImageMemoryRequirements const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSparseImageMemoryRequirements &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SparseImageMemoryRequirements const& rhs ) const - { - return ( formatProperties == rhs.formatProperties ) - && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod ) - && ( imageMipTailSize == rhs.imageMipTailSize ) - && ( imageMipTailOffset == rhs.imageMipTailOffset ) - && ( imageMipTailStride == rhs.imageMipTailStride ); - } - - bool operator!=( SparseImageMemoryRequirements const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::SparseImageFormatProperties formatProperties; - uint32_t imageMipTailFirstLod; - vk::DeviceSize imageMipTailSize; - vk::DeviceSize imageMipTailOffset; - vk::DeviceSize imageMipTailStride; - }; - static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SparseImageMemoryRequirements2 - { - protected: - SparseImageMemoryRequirements2( vk::SparseImageMemoryRequirements memoryRequirements_ = vk::SparseImageMemoryRequirements() ) - : memoryRequirements( memoryRequirements_ ) - {} - - SparseImageMemoryRequirements2( VkSparseImageMemoryRequirements2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SparseImageMemoryRequirements2& operator=( VkSparseImageMemoryRequirements2 const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSparseImageMemoryRequirements2; - void* pNext = nullptr; - vk::SparseImageMemoryRequirements memoryRequirements; - }; - static_assert( sizeof( SparseImageMemoryRequirements2 ) == sizeof( VkSparseImageMemoryRequirements2 ), "layout struct and wrapper have different size!" ); - } - - struct SparseImageMemoryRequirements2 : public layout::SparseImageMemoryRequirements2 - { - operator VkSparseImageMemoryRequirements2 const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSparseImageMemoryRequirements2 &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SparseImageMemoryRequirements2 const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memoryRequirements == rhs.memoryRequirements ); - } - - bool operator!=( SparseImageMemoryRequirements2 const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SparseImageMemoryRequirements2::sType; - }; - static_assert( sizeof( SparseImageMemoryRequirements2 ) == sizeof( VkSparseImageMemoryRequirements2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_GGP - - namespace layout - { - struct StreamDescriptorSurfaceCreateInfoGGP - { - protected: - StreamDescriptorSurfaceCreateInfoGGP( vk::StreamDescriptorSurfaceCreateFlagsGGP flags_ = vk::StreamDescriptorSurfaceCreateFlagsGGP(), - GgpStreamDescriptor streamDescriptor_ = 0 ) - : flags( flags_ ) - , streamDescriptor( streamDescriptor_ ) - {} - - StreamDescriptorSurfaceCreateInfoGGP( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - StreamDescriptorSurfaceCreateInfoGGP& operator=( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eStreamDescriptorSurfaceCreateInfoGGP; - const void* pNext = nullptr; - vk::StreamDescriptorSurfaceCreateFlagsGGP flags; - GgpStreamDescriptor streamDescriptor; - }; - static_assert( sizeof( StreamDescriptorSurfaceCreateInfoGGP ) == sizeof( VkStreamDescriptorSurfaceCreateInfoGGP ), "layout struct and wrapper have different size!" ); - } - - struct StreamDescriptorSurfaceCreateInfoGGP : public layout::StreamDescriptorSurfaceCreateInfoGGP - { - StreamDescriptorSurfaceCreateInfoGGP( vk::StreamDescriptorSurfaceCreateFlagsGGP flags_ = vk::StreamDescriptorSurfaceCreateFlagsGGP(), - GgpStreamDescriptor streamDescriptor_ = 0 ) - : layout::StreamDescriptorSurfaceCreateInfoGGP( flags_, streamDescriptor_ ) - {} - - StreamDescriptorSurfaceCreateInfoGGP( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) - : layout::StreamDescriptorSurfaceCreateInfoGGP( rhs ) - {} - - StreamDescriptorSurfaceCreateInfoGGP& operator=( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - StreamDescriptorSurfaceCreateInfoGGP & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - StreamDescriptorSurfaceCreateInfoGGP & setFlags( vk::StreamDescriptorSurfaceCreateFlagsGGP flags_ ) - { - flags = flags_; - return *this; - } - - StreamDescriptorSurfaceCreateInfoGGP & setStreamDescriptor( GgpStreamDescriptor streamDescriptor_ ) - { - streamDescriptor = streamDescriptor_; - return *this; - } - - operator VkStreamDescriptorSurfaceCreateInfoGGP const&() const - { - return *reinterpret_cast( this ); - } - - operator VkStreamDescriptorSurfaceCreateInfoGGP &() - { - return *reinterpret_cast( this ); - } - - bool operator==( StreamDescriptorSurfaceCreateInfoGGP const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( streamDescriptor == rhs.streamDescriptor ); - } - - bool operator!=( StreamDescriptorSurfaceCreateInfoGGP const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::StreamDescriptorSurfaceCreateInfoGGP::sType; - }; - static_assert( sizeof( StreamDescriptorSurfaceCreateInfoGGP ) == sizeof( VkStreamDescriptorSurfaceCreateInfoGGP ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_GGP*/ - - namespace layout - { - struct SubmitInfo - { - protected: - SubmitInfo( uint32_t waitSemaphoreCount_ = 0, - const vk::Semaphore* pWaitSemaphores_ = nullptr, - const vk::PipelineStageFlags* pWaitDstStageMask_ = nullptr, - uint32_t commandBufferCount_ = 0, - const vk::CommandBuffer* pCommandBuffers_ = nullptr, - uint32_t signalSemaphoreCount_ = 0, - const vk::Semaphore* pSignalSemaphores_ = nullptr ) - : waitSemaphoreCount( waitSemaphoreCount_ ) - , pWaitSemaphores( pWaitSemaphores_ ) - , pWaitDstStageMask( pWaitDstStageMask_ ) - , commandBufferCount( commandBufferCount_ ) - , pCommandBuffers( pCommandBuffers_ ) - , signalSemaphoreCount( signalSemaphoreCount_ ) - , pSignalSemaphores( pSignalSemaphores_ ) - {} - - SubmitInfo( VkSubmitInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SubmitInfo& operator=( VkSubmitInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSubmitInfo; - const void* pNext = nullptr; - uint32_t waitSemaphoreCount; - const vk::Semaphore* pWaitSemaphores; - const vk::PipelineStageFlags* pWaitDstStageMask; - uint32_t commandBufferCount; - const vk::CommandBuffer* pCommandBuffers; - uint32_t signalSemaphoreCount; - const vk::Semaphore* pSignalSemaphores; - }; - static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "layout struct and wrapper have different size!" ); - } - - struct SubmitInfo : public layout::SubmitInfo - { - SubmitInfo( uint32_t waitSemaphoreCount_ = 0, - const vk::Semaphore* pWaitSemaphores_ = nullptr, - const vk::PipelineStageFlags* pWaitDstStageMask_ = nullptr, - uint32_t commandBufferCount_ = 0, - const vk::CommandBuffer* pCommandBuffers_ = nullptr, - uint32_t signalSemaphoreCount_ = 0, - const vk::Semaphore* pSignalSemaphores_ = nullptr ) - : layout::SubmitInfo( waitSemaphoreCount_, pWaitSemaphores_, pWaitDstStageMask_, commandBufferCount_, pCommandBuffers_, signalSemaphoreCount_, pSignalSemaphores_ ) - {} - - SubmitInfo( VkSubmitInfo const & rhs ) - : layout::SubmitInfo( rhs ) - {} - - SubmitInfo& operator=( VkSubmitInfo const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SubmitInfo & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SubmitInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) - { - waitSemaphoreCount = waitSemaphoreCount_; - return *this; - } - - SubmitInfo & setPWaitSemaphores( const vk::Semaphore* pWaitSemaphores_ ) - { - pWaitSemaphores = pWaitSemaphores_; - return *this; - } - - SubmitInfo & setPWaitDstStageMask( const vk::PipelineStageFlags* pWaitDstStageMask_ ) - { - pWaitDstStageMask = pWaitDstStageMask_; - return *this; - } - - SubmitInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) - { - commandBufferCount = commandBufferCount_; - return *this; - } - - SubmitInfo & setPCommandBuffers( const vk::CommandBuffer* pCommandBuffers_ ) - { - pCommandBuffers = pCommandBuffers_; - return *this; - } - - SubmitInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) - { - signalSemaphoreCount = signalSemaphoreCount_; - return *this; - } - - SubmitInfo & setPSignalSemaphores( const vk::Semaphore* pSignalSemaphores_ ) - { - pSignalSemaphores = pSignalSemaphores_; - return *this; - } - - operator VkSubmitInfo const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSubmitInfo &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SubmitInfo const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) - && ( pWaitSemaphores == rhs.pWaitSemaphores ) - && ( pWaitDstStageMask == rhs.pWaitDstStageMask ) - && ( commandBufferCount == rhs.commandBufferCount ) - && ( pCommandBuffers == rhs.pCommandBuffers ) - && ( signalSemaphoreCount == rhs.signalSemaphoreCount ) - && ( pSignalSemaphores == rhs.pSignalSemaphores ); - } - - bool operator!=( SubmitInfo const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SubmitInfo::sType; - }; - static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SubpassBeginInfoKHR - { - protected: - SubpassBeginInfoKHR( vk::SubpassContents contents_ = vk::SubpassContents::eInline ) - : contents( contents_ ) - {} - - SubpassBeginInfoKHR( VkSubpassBeginInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SubpassBeginInfoKHR& operator=( VkSubpassBeginInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSubpassBeginInfoKHR; - const void* pNext = nullptr; - vk::SubpassContents contents; - }; - static_assert( sizeof( SubpassBeginInfoKHR ) == sizeof( VkSubpassBeginInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct SubpassBeginInfoKHR : public layout::SubpassBeginInfoKHR - { - SubpassBeginInfoKHR( vk::SubpassContents contents_ = vk::SubpassContents::eInline ) - : layout::SubpassBeginInfoKHR( contents_ ) - {} - - SubpassBeginInfoKHR( VkSubpassBeginInfoKHR const & rhs ) - : layout::SubpassBeginInfoKHR( rhs ) - {} - - SubpassBeginInfoKHR& operator=( VkSubpassBeginInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SubpassBeginInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SubpassBeginInfoKHR & setContents( vk::SubpassContents contents_ ) - { - contents = contents_; - return *this; - } - - operator VkSubpassBeginInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSubpassBeginInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SubpassBeginInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( contents == rhs.contents ); - } - - bool operator!=( SubpassBeginInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SubpassBeginInfoKHR::sType; - }; - static_assert( sizeof( SubpassBeginInfoKHR ) == sizeof( VkSubpassBeginInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SubpassDescriptionDepthStencilResolveKHR - { - protected: - SubpassDescriptionDepthStencilResolveKHR( vk::ResolveModeFlagBitsKHR depthResolveMode_ = vk::ResolveModeFlagBitsKHR::eNone, - vk::ResolveModeFlagBitsKHR stencilResolveMode_ = vk::ResolveModeFlagBitsKHR::eNone, - const vk::AttachmentReference2KHR* pDepthStencilResolveAttachment_ = nullptr ) - : depthResolveMode( depthResolveMode_ ) - , stencilResolveMode( stencilResolveMode_ ) - , pDepthStencilResolveAttachment( pDepthStencilResolveAttachment_ ) - {} - - SubpassDescriptionDepthStencilResolveKHR( VkSubpassDescriptionDepthStencilResolveKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SubpassDescriptionDepthStencilResolveKHR& operator=( VkSubpassDescriptionDepthStencilResolveKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSubpassDescriptionDepthStencilResolveKHR; - const void* pNext = nullptr; - vk::ResolveModeFlagBitsKHR depthResolveMode; - vk::ResolveModeFlagBitsKHR stencilResolveMode; - const vk::AttachmentReference2KHR* pDepthStencilResolveAttachment; - }; - static_assert( sizeof( SubpassDescriptionDepthStencilResolveKHR ) == sizeof( VkSubpassDescriptionDepthStencilResolveKHR ), "layout struct and wrapper have different size!" ); - } - - struct SubpassDescriptionDepthStencilResolveKHR : public layout::SubpassDescriptionDepthStencilResolveKHR - { - SubpassDescriptionDepthStencilResolveKHR( vk::ResolveModeFlagBitsKHR depthResolveMode_ = vk::ResolveModeFlagBitsKHR::eNone, - vk::ResolveModeFlagBitsKHR stencilResolveMode_ = vk::ResolveModeFlagBitsKHR::eNone, - const vk::AttachmentReference2KHR* pDepthStencilResolveAttachment_ = nullptr ) - : layout::SubpassDescriptionDepthStencilResolveKHR( depthResolveMode_, stencilResolveMode_, pDepthStencilResolveAttachment_ ) - {} - - SubpassDescriptionDepthStencilResolveKHR( VkSubpassDescriptionDepthStencilResolveKHR const & rhs ) - : layout::SubpassDescriptionDepthStencilResolveKHR( rhs ) - {} - - SubpassDescriptionDepthStencilResolveKHR& operator=( VkSubpassDescriptionDepthStencilResolveKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SubpassDescriptionDepthStencilResolveKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SubpassDescriptionDepthStencilResolveKHR & setDepthResolveMode( vk::ResolveModeFlagBitsKHR depthResolveMode_ ) - { - depthResolveMode = depthResolveMode_; - return *this; - } - - SubpassDescriptionDepthStencilResolveKHR & setStencilResolveMode( vk::ResolveModeFlagBitsKHR stencilResolveMode_ ) - { - stencilResolveMode = stencilResolveMode_; - return *this; - } - - SubpassDescriptionDepthStencilResolveKHR & setPDepthStencilResolveAttachment( const vk::AttachmentReference2KHR* pDepthStencilResolveAttachment_ ) - { - pDepthStencilResolveAttachment = pDepthStencilResolveAttachment_; - return *this; - } - - operator VkSubpassDescriptionDepthStencilResolveKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSubpassDescriptionDepthStencilResolveKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SubpassDescriptionDepthStencilResolveKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( depthResolveMode == rhs.depthResolveMode ) - && ( stencilResolveMode == rhs.stencilResolveMode ) - && ( pDepthStencilResolveAttachment == rhs.pDepthStencilResolveAttachment ); - } - - bool operator!=( SubpassDescriptionDepthStencilResolveKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SubpassDescriptionDepthStencilResolveKHR::sType; - }; - static_assert( sizeof( SubpassDescriptionDepthStencilResolveKHR ) == sizeof( VkSubpassDescriptionDepthStencilResolveKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SubpassEndInfoKHR - { - protected: - SubpassEndInfoKHR() - - {} - - SubpassEndInfoKHR( VkSubpassEndInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SubpassEndInfoKHR& operator=( VkSubpassEndInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSubpassEndInfoKHR; - const void* pNext = nullptr; - }; - static_assert( sizeof( SubpassEndInfoKHR ) == sizeof( VkSubpassEndInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct SubpassEndInfoKHR : public layout::SubpassEndInfoKHR - { - SubpassEndInfoKHR() - - : layout::SubpassEndInfoKHR( ) - {} - - SubpassEndInfoKHR( VkSubpassEndInfoKHR const & rhs ) - : layout::SubpassEndInfoKHR( rhs ) - {} - - SubpassEndInfoKHR& operator=( VkSubpassEndInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SubpassEndInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - operator VkSubpassEndInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSubpassEndInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SubpassEndInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ); - } - - bool operator!=( SubpassEndInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SubpassEndInfoKHR::sType; - }; - static_assert( sizeof( SubpassEndInfoKHR ) == sizeof( VkSubpassEndInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SurfaceCapabilities2EXT - { - protected: - SurfaceCapabilities2EXT( uint32_t minImageCount_ = 0, - uint32_t maxImageCount_ = 0, - vk::Extent2D currentExtent_ = vk::Extent2D(), - vk::Extent2D minImageExtent_ = vk::Extent2D(), - vk::Extent2D maxImageExtent_ = vk::Extent2D(), - uint32_t maxImageArrayLayers_ = 0, - vk::SurfaceTransformFlagsKHR supportedTransforms_ = vk::SurfaceTransformFlagsKHR(), - vk::SurfaceTransformFlagBitsKHR currentTransform_ = vk::SurfaceTransformFlagBitsKHR::eIdentity, - vk::CompositeAlphaFlagsKHR supportedCompositeAlpha_ = vk::CompositeAlphaFlagsKHR(), - vk::ImageUsageFlags supportedUsageFlags_ = vk::ImageUsageFlags(), - vk::SurfaceCounterFlagsEXT supportedSurfaceCounters_ = vk::SurfaceCounterFlagsEXT() ) - : minImageCount( minImageCount_ ) - , maxImageCount( maxImageCount_ ) - , currentExtent( currentExtent_ ) - , minImageExtent( minImageExtent_ ) - , maxImageExtent( maxImageExtent_ ) - , maxImageArrayLayers( maxImageArrayLayers_ ) - , supportedTransforms( supportedTransforms_ ) - , currentTransform( currentTransform_ ) - , supportedCompositeAlpha( supportedCompositeAlpha_ ) - , supportedUsageFlags( supportedUsageFlags_ ) - , supportedSurfaceCounters( supportedSurfaceCounters_ ) - {} - - SurfaceCapabilities2EXT( VkSurfaceCapabilities2EXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SurfaceCapabilities2EXT& operator=( VkSurfaceCapabilities2EXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSurfaceCapabilities2EXT; - void* pNext = nullptr; - uint32_t minImageCount; - uint32_t maxImageCount; - vk::Extent2D currentExtent; - vk::Extent2D minImageExtent; - vk::Extent2D maxImageExtent; - uint32_t maxImageArrayLayers; - vk::SurfaceTransformFlagsKHR supportedTransforms; - vk::SurfaceTransformFlagBitsKHR currentTransform; - vk::CompositeAlphaFlagsKHR supportedCompositeAlpha; - vk::ImageUsageFlags supportedUsageFlags; - vk::SurfaceCounterFlagsEXT supportedSurfaceCounters; - }; - static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "layout struct and wrapper have different size!" ); - } - - struct SurfaceCapabilities2EXT : public layout::SurfaceCapabilities2EXT - { - operator VkSurfaceCapabilities2EXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSurfaceCapabilities2EXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SurfaceCapabilities2EXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( minImageCount == rhs.minImageCount ) - && ( maxImageCount == rhs.maxImageCount ) - && ( currentExtent == rhs.currentExtent ) - && ( minImageExtent == rhs.minImageExtent ) - && ( maxImageExtent == rhs.maxImageExtent ) - && ( maxImageArrayLayers == rhs.maxImageArrayLayers ) - && ( supportedTransforms == rhs.supportedTransforms ) - && ( currentTransform == rhs.currentTransform ) - && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha ) - && ( supportedUsageFlags == rhs.supportedUsageFlags ) - && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters ); - } - - bool operator!=( SurfaceCapabilities2EXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SurfaceCapabilities2EXT::sType; - }; - static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SurfaceCapabilitiesKHR - { - operator VkSurfaceCapabilitiesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSurfaceCapabilitiesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SurfaceCapabilitiesKHR const& rhs ) const - { - return ( minImageCount == rhs.minImageCount ) - && ( maxImageCount == rhs.maxImageCount ) - && ( currentExtent == rhs.currentExtent ) - && ( minImageExtent == rhs.minImageExtent ) - && ( maxImageExtent == rhs.maxImageExtent ) - && ( maxImageArrayLayers == rhs.maxImageArrayLayers ) - && ( supportedTransforms == rhs.supportedTransforms ) - && ( currentTransform == rhs.currentTransform ) - && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha ) - && ( supportedUsageFlags == rhs.supportedUsageFlags ); - } - - bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - public: - uint32_t minImageCount; - uint32_t maxImageCount; - vk::Extent2D currentExtent; - vk::Extent2D minImageExtent; - vk::Extent2D maxImageExtent; - uint32_t maxImageArrayLayers; - vk::SurfaceTransformFlagsKHR supportedTransforms; - vk::SurfaceTransformFlagBitsKHR currentTransform; - vk::CompositeAlphaFlagsKHR supportedCompositeAlpha; - vk::ImageUsageFlags supportedUsageFlags; - }; - static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SurfaceCapabilities2KHR - { - protected: - SurfaceCapabilities2KHR( vk::SurfaceCapabilitiesKHR surfaceCapabilities_ = vk::SurfaceCapabilitiesKHR() ) - : surfaceCapabilities( surfaceCapabilities_ ) - {} - - SurfaceCapabilities2KHR( VkSurfaceCapabilities2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SurfaceCapabilities2KHR& operator=( VkSurfaceCapabilities2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSurfaceCapabilities2KHR; - void* pNext = nullptr; - vk::SurfaceCapabilitiesKHR surfaceCapabilities; - }; - static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "layout struct and wrapper have different size!" ); - } - - struct SurfaceCapabilities2KHR : public layout::SurfaceCapabilities2KHR - { - operator VkSurfaceCapabilities2KHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSurfaceCapabilities2KHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SurfaceCapabilities2KHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( surfaceCapabilities == rhs.surfaceCapabilities ); - } - - bool operator!=( SurfaceCapabilities2KHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SurfaceCapabilities2KHR::sType; - }; - static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct SurfaceCapabilitiesFullScreenExclusiveEXT - { - protected: - SurfaceCapabilitiesFullScreenExclusiveEXT( vk::Bool32 fullScreenExclusiveSupported_ = 0 ) - : fullScreenExclusiveSupported( fullScreenExclusiveSupported_ ) - {} - - SurfaceCapabilitiesFullScreenExclusiveEXT( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SurfaceCapabilitiesFullScreenExclusiveEXT& operator=( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT; - void* pNext = nullptr; - vk::Bool32 fullScreenExclusiveSupported; - }; - static_assert( sizeof( SurfaceCapabilitiesFullScreenExclusiveEXT ) == sizeof( VkSurfaceCapabilitiesFullScreenExclusiveEXT ), "layout struct and wrapper have different size!" ); - } - - struct SurfaceCapabilitiesFullScreenExclusiveEXT : public layout::SurfaceCapabilitiesFullScreenExclusiveEXT - { - SurfaceCapabilitiesFullScreenExclusiveEXT( vk::Bool32 fullScreenExclusiveSupported_ = 0 ) - : layout::SurfaceCapabilitiesFullScreenExclusiveEXT( fullScreenExclusiveSupported_ ) - {} - - SurfaceCapabilitiesFullScreenExclusiveEXT( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) - : layout::SurfaceCapabilitiesFullScreenExclusiveEXT( rhs ) - {} - - SurfaceCapabilitiesFullScreenExclusiveEXT& operator=( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SurfaceCapabilitiesFullScreenExclusiveEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SurfaceCapabilitiesFullScreenExclusiveEXT & setFullScreenExclusiveSupported( vk::Bool32 fullScreenExclusiveSupported_ ) - { - fullScreenExclusiveSupported = fullScreenExclusiveSupported_; - return *this; - } - - operator VkSurfaceCapabilitiesFullScreenExclusiveEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSurfaceCapabilitiesFullScreenExclusiveEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SurfaceCapabilitiesFullScreenExclusiveEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fullScreenExclusiveSupported == rhs.fullScreenExclusiveSupported ); - } - - bool operator!=( SurfaceCapabilitiesFullScreenExclusiveEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SurfaceCapabilitiesFullScreenExclusiveEXT::sType; - }; - static_assert( sizeof( SurfaceCapabilitiesFullScreenExclusiveEXT ) == sizeof( VkSurfaceCapabilitiesFullScreenExclusiveEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - struct SurfaceFormatKHR - { - operator VkSurfaceFormatKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSurfaceFormatKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SurfaceFormatKHR const& rhs ) const - { - return ( format == rhs.format ) - && ( colorSpace == rhs.colorSpace ); - } - - bool operator!=( SurfaceFormatKHR const& rhs ) const - { - return !operator==( rhs ); - } - - public: - vk::Format format; - vk::ColorSpaceKHR colorSpace; - }; - static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SurfaceFormat2KHR - { - protected: - SurfaceFormat2KHR( vk::SurfaceFormatKHR surfaceFormat_ = vk::SurfaceFormatKHR() ) - : surfaceFormat( surfaceFormat_ ) - {} - - SurfaceFormat2KHR( VkSurfaceFormat2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SurfaceFormat2KHR& operator=( VkSurfaceFormat2KHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSurfaceFormat2KHR; - void* pNext = nullptr; - vk::SurfaceFormatKHR surfaceFormat; - }; - static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "layout struct and wrapper have different size!" ); - } - - struct SurfaceFormat2KHR : public layout::SurfaceFormat2KHR - { - operator VkSurfaceFormat2KHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSurfaceFormat2KHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SurfaceFormat2KHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( surfaceFormat == rhs.surfaceFormat ); - } - - bool operator!=( SurfaceFormat2KHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SurfaceFormat2KHR::sType; - }; - static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct SurfaceFullScreenExclusiveInfoEXT - { - protected: - SurfaceFullScreenExclusiveInfoEXT( vk::FullScreenExclusiveEXT fullScreenExclusive_ = vk::FullScreenExclusiveEXT::eDefault ) - : fullScreenExclusive( fullScreenExclusive_ ) - {} - - SurfaceFullScreenExclusiveInfoEXT( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SurfaceFullScreenExclusiveInfoEXT& operator=( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSurfaceFullScreenExclusiveInfoEXT; - void* pNext = nullptr; - vk::FullScreenExclusiveEXT fullScreenExclusive; - }; - static_assert( sizeof( SurfaceFullScreenExclusiveInfoEXT ) == sizeof( VkSurfaceFullScreenExclusiveInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct SurfaceFullScreenExclusiveInfoEXT : public layout::SurfaceFullScreenExclusiveInfoEXT - { - SurfaceFullScreenExclusiveInfoEXT( vk::FullScreenExclusiveEXT fullScreenExclusive_ = vk::FullScreenExclusiveEXT::eDefault ) - : layout::SurfaceFullScreenExclusiveInfoEXT( fullScreenExclusive_ ) - {} - - SurfaceFullScreenExclusiveInfoEXT( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) - : layout::SurfaceFullScreenExclusiveInfoEXT( rhs ) - {} - - SurfaceFullScreenExclusiveInfoEXT& operator=( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SurfaceFullScreenExclusiveInfoEXT & setPNext( void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SurfaceFullScreenExclusiveInfoEXT & setFullScreenExclusive( vk::FullScreenExclusiveEXT fullScreenExclusive_ ) - { - fullScreenExclusive = fullScreenExclusive_; - return *this; - } - - operator VkSurfaceFullScreenExclusiveInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSurfaceFullScreenExclusiveInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SurfaceFullScreenExclusiveInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fullScreenExclusive == rhs.fullScreenExclusive ); - } - - bool operator!=( SurfaceFullScreenExclusiveInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SurfaceFullScreenExclusiveInfoEXT::sType; - }; - static_assert( sizeof( SurfaceFullScreenExclusiveInfoEXT ) == sizeof( VkSurfaceFullScreenExclusiveInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct SurfaceFullScreenExclusiveWin32InfoEXT - { - protected: - SurfaceFullScreenExclusiveWin32InfoEXT( HMONITOR hmonitor_ = 0 ) - : hmonitor( hmonitor_ ) - {} - - SurfaceFullScreenExclusiveWin32InfoEXT( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SurfaceFullScreenExclusiveWin32InfoEXT& operator=( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT; - const void* pNext = nullptr; - HMONITOR hmonitor; - }; - static_assert( sizeof( SurfaceFullScreenExclusiveWin32InfoEXT ) == sizeof( VkSurfaceFullScreenExclusiveWin32InfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct SurfaceFullScreenExclusiveWin32InfoEXT : public layout::SurfaceFullScreenExclusiveWin32InfoEXT - { - SurfaceFullScreenExclusiveWin32InfoEXT( HMONITOR hmonitor_ = 0 ) - : layout::SurfaceFullScreenExclusiveWin32InfoEXT( hmonitor_ ) - {} - - SurfaceFullScreenExclusiveWin32InfoEXT( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) - : layout::SurfaceFullScreenExclusiveWin32InfoEXT( rhs ) - {} - - SurfaceFullScreenExclusiveWin32InfoEXT& operator=( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SurfaceFullScreenExclusiveWin32InfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SurfaceFullScreenExclusiveWin32InfoEXT & setHmonitor( HMONITOR hmonitor_ ) - { - hmonitor = hmonitor_; - return *this; - } - - operator VkSurfaceFullScreenExclusiveWin32InfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSurfaceFullScreenExclusiveWin32InfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SurfaceFullScreenExclusiveWin32InfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( hmonitor == rhs.hmonitor ); - } - - bool operator!=( SurfaceFullScreenExclusiveWin32InfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SurfaceFullScreenExclusiveWin32InfoEXT::sType; - }; - static_assert( sizeof( SurfaceFullScreenExclusiveWin32InfoEXT ) == sizeof( VkSurfaceFullScreenExclusiveWin32InfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - namespace layout - { - struct SurfaceProtectedCapabilitiesKHR - { - protected: - SurfaceProtectedCapabilitiesKHR( vk::Bool32 supportsProtected_ = 0 ) - : supportsProtected( supportsProtected_ ) - {} - - SurfaceProtectedCapabilitiesKHR( VkSurfaceProtectedCapabilitiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SurfaceProtectedCapabilitiesKHR& operator=( VkSurfaceProtectedCapabilitiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSurfaceProtectedCapabilitiesKHR; - const void* pNext = nullptr; - vk::Bool32 supportsProtected; - }; - static_assert( sizeof( SurfaceProtectedCapabilitiesKHR ) == sizeof( VkSurfaceProtectedCapabilitiesKHR ), "layout struct and wrapper have different size!" ); - } - - struct SurfaceProtectedCapabilitiesKHR : public layout::SurfaceProtectedCapabilitiesKHR - { - SurfaceProtectedCapabilitiesKHR( vk::Bool32 supportsProtected_ = 0 ) - : layout::SurfaceProtectedCapabilitiesKHR( supportsProtected_ ) - {} - - SurfaceProtectedCapabilitiesKHR( VkSurfaceProtectedCapabilitiesKHR const & rhs ) - : layout::SurfaceProtectedCapabilitiesKHR( rhs ) - {} - - SurfaceProtectedCapabilitiesKHR& operator=( VkSurfaceProtectedCapabilitiesKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SurfaceProtectedCapabilitiesKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SurfaceProtectedCapabilitiesKHR & setSupportsProtected( vk::Bool32 supportsProtected_ ) - { - supportsProtected = supportsProtected_; - return *this; - } - - operator VkSurfaceProtectedCapabilitiesKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSurfaceProtectedCapabilitiesKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SurfaceProtectedCapabilitiesKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( supportsProtected == rhs.supportsProtected ); - } - - bool operator!=( SurfaceProtectedCapabilitiesKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SurfaceProtectedCapabilitiesKHR::sType; - }; - static_assert( sizeof( SurfaceProtectedCapabilitiesKHR ) == sizeof( VkSurfaceProtectedCapabilitiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SwapchainCounterCreateInfoEXT - { - protected: - SwapchainCounterCreateInfoEXT( vk::SurfaceCounterFlagsEXT surfaceCounters_ = vk::SurfaceCounterFlagsEXT() ) - : surfaceCounters( surfaceCounters_ ) - {} - - SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSwapchainCounterCreateInfoEXT; - const void* pNext = nullptr; - vk::SurfaceCounterFlagsEXT surfaceCounters; - }; - static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct SwapchainCounterCreateInfoEXT : public layout::SwapchainCounterCreateInfoEXT - { - SwapchainCounterCreateInfoEXT( vk::SurfaceCounterFlagsEXT surfaceCounters_ = vk::SurfaceCounterFlagsEXT() ) - : layout::SwapchainCounterCreateInfoEXT( surfaceCounters_ ) - {} - - SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs ) - : layout::SwapchainCounterCreateInfoEXT( rhs ) - {} - - SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SwapchainCounterCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SwapchainCounterCreateInfoEXT & setSurfaceCounters( vk::SurfaceCounterFlagsEXT surfaceCounters_ ) - { - surfaceCounters = surfaceCounters_; - return *this; - } - - operator VkSwapchainCounterCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSwapchainCounterCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( surfaceCounters == rhs.surfaceCounters ); - } - - bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SwapchainCounterCreateInfoEXT::sType; - }; - static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SwapchainCreateInfoKHR - { - protected: - SwapchainCreateInfoKHR( vk::SwapchainCreateFlagsKHR flags_ = vk::SwapchainCreateFlagsKHR(), - vk::SurfaceKHR surface_ = vk::SurfaceKHR(), - uint32_t minImageCount_ = 0, - vk::Format imageFormat_ = vk::Format::eUndefined, - vk::ColorSpaceKHR imageColorSpace_ = vk::ColorSpaceKHR::eSrgbNonlinear, - vk::Extent2D imageExtent_ = vk::Extent2D(), - uint32_t imageArrayLayers_ = 0, - vk::ImageUsageFlags imageUsage_ = vk::ImageUsageFlags(), - vk::SharingMode imageSharingMode_ = vk::SharingMode::eExclusive, - uint32_t queueFamilyIndexCount_ = 0, - const uint32_t* pQueueFamilyIndices_ = nullptr, - vk::SurfaceTransformFlagBitsKHR preTransform_ = vk::SurfaceTransformFlagBitsKHR::eIdentity, - vk::CompositeAlphaFlagBitsKHR compositeAlpha_ = vk::CompositeAlphaFlagBitsKHR::eOpaque, - vk::PresentModeKHR presentMode_ = vk::PresentModeKHR::eImmediate, - vk::Bool32 clipped_ = 0, - vk::SwapchainKHR oldSwapchain_ = vk::SwapchainKHR() ) - : flags( flags_ ) - , surface( surface_ ) - , minImageCount( minImageCount_ ) - , imageFormat( imageFormat_ ) - , imageColorSpace( imageColorSpace_ ) - , imageExtent( imageExtent_ ) - , imageArrayLayers( imageArrayLayers_ ) - , imageUsage( imageUsage_ ) - , imageSharingMode( imageSharingMode_ ) - , queueFamilyIndexCount( queueFamilyIndexCount_ ) - , pQueueFamilyIndices( pQueueFamilyIndices_ ) - , preTransform( preTransform_ ) - , compositeAlpha( compositeAlpha_ ) - , presentMode( presentMode_ ) - , clipped( clipped_ ) - , oldSwapchain( oldSwapchain_ ) - {} - - SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSwapchainCreateInfoKHR; - const void* pNext = nullptr; - vk::SwapchainCreateFlagsKHR flags; - vk::SurfaceKHR surface; - uint32_t minImageCount; - vk::Format imageFormat; - vk::ColorSpaceKHR imageColorSpace; - vk::Extent2D imageExtent; - uint32_t imageArrayLayers; - vk::ImageUsageFlags imageUsage; - vk::SharingMode imageSharingMode; - uint32_t queueFamilyIndexCount; - const uint32_t* pQueueFamilyIndices; - vk::SurfaceTransformFlagBitsKHR preTransform; - vk::CompositeAlphaFlagBitsKHR compositeAlpha; - vk::PresentModeKHR presentMode; - vk::Bool32 clipped; - vk::SwapchainKHR oldSwapchain; - }; - static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct SwapchainCreateInfoKHR : public layout::SwapchainCreateInfoKHR - { - SwapchainCreateInfoKHR( vk::SwapchainCreateFlagsKHR flags_ = vk::SwapchainCreateFlagsKHR(), - vk::SurfaceKHR surface_ = vk::SurfaceKHR(), - uint32_t minImageCount_ = 0, - vk::Format imageFormat_ = vk::Format::eUndefined, - vk::ColorSpaceKHR imageColorSpace_ = vk::ColorSpaceKHR::eSrgbNonlinear, - vk::Extent2D imageExtent_ = vk::Extent2D(), - uint32_t imageArrayLayers_ = 0, - vk::ImageUsageFlags imageUsage_ = vk::ImageUsageFlags(), - vk::SharingMode imageSharingMode_ = vk::SharingMode::eExclusive, - uint32_t queueFamilyIndexCount_ = 0, - const uint32_t* pQueueFamilyIndices_ = nullptr, - vk::SurfaceTransformFlagBitsKHR preTransform_ = vk::SurfaceTransformFlagBitsKHR::eIdentity, - vk::CompositeAlphaFlagBitsKHR compositeAlpha_ = vk::CompositeAlphaFlagBitsKHR::eOpaque, - vk::PresentModeKHR presentMode_ = vk::PresentModeKHR::eImmediate, - vk::Bool32 clipped_ = 0, - vk::SwapchainKHR oldSwapchain_ = vk::SwapchainKHR() ) - : layout::SwapchainCreateInfoKHR( flags_, surface_, minImageCount_, imageFormat_, imageColorSpace_, imageExtent_, imageArrayLayers_, imageUsage_, imageSharingMode_, queueFamilyIndexCount_, pQueueFamilyIndices_, preTransform_, compositeAlpha_, presentMode_, clipped_, oldSwapchain_ ) - {} - - SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs ) - : layout::SwapchainCreateInfoKHR( rhs ) - {} - - SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SwapchainCreateInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SwapchainCreateInfoKHR & setFlags( vk::SwapchainCreateFlagsKHR flags_ ) - { - flags = flags_; - return *this; - } - - SwapchainCreateInfoKHR & setSurface( vk::SurfaceKHR surface_ ) - { - surface = surface_; - return *this; - } - - SwapchainCreateInfoKHR & setMinImageCount( uint32_t minImageCount_ ) - { - minImageCount = minImageCount_; - return *this; - } - - SwapchainCreateInfoKHR & setImageFormat( vk::Format imageFormat_ ) - { - imageFormat = imageFormat_; - return *this; - } - - SwapchainCreateInfoKHR & setImageColorSpace( vk::ColorSpaceKHR imageColorSpace_ ) - { - imageColorSpace = imageColorSpace_; - return *this; - } - - SwapchainCreateInfoKHR & setImageExtent( vk::Extent2D imageExtent_ ) - { - imageExtent = imageExtent_; - return *this; - } - - SwapchainCreateInfoKHR & setImageArrayLayers( uint32_t imageArrayLayers_ ) - { - imageArrayLayers = imageArrayLayers_; - return *this; - } - - SwapchainCreateInfoKHR & setImageUsage( vk::ImageUsageFlags imageUsage_ ) - { - imageUsage = imageUsage_; - return *this; - } - - SwapchainCreateInfoKHR & setImageSharingMode( vk::SharingMode imageSharingMode_ ) - { - imageSharingMode = imageSharingMode_; - return *this; - } - - SwapchainCreateInfoKHR & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) - { - queueFamilyIndexCount = queueFamilyIndexCount_; - return *this; - } - - SwapchainCreateInfoKHR & setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ ) - { - pQueueFamilyIndices = pQueueFamilyIndices_; - return *this; - } - - SwapchainCreateInfoKHR & setPreTransform( vk::SurfaceTransformFlagBitsKHR preTransform_ ) - { - preTransform = preTransform_; - return *this; - } - - SwapchainCreateInfoKHR & setCompositeAlpha( vk::CompositeAlphaFlagBitsKHR compositeAlpha_ ) - { - compositeAlpha = compositeAlpha_; - return *this; - } - - SwapchainCreateInfoKHR & setPresentMode( vk::PresentModeKHR presentMode_ ) - { - presentMode = presentMode_; - return *this; - } - - SwapchainCreateInfoKHR & setClipped( vk::Bool32 clipped_ ) - { - clipped = clipped_; - return *this; - } - - SwapchainCreateInfoKHR & setOldSwapchain( vk::SwapchainKHR oldSwapchain_ ) - { - oldSwapchain = oldSwapchain_; - return *this; - } - - operator VkSwapchainCreateInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSwapchainCreateInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SwapchainCreateInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( surface == rhs.surface ) - && ( minImageCount == rhs.minImageCount ) - && ( imageFormat == rhs.imageFormat ) - && ( imageColorSpace == rhs.imageColorSpace ) - && ( imageExtent == rhs.imageExtent ) - && ( imageArrayLayers == rhs.imageArrayLayers ) - && ( imageUsage == rhs.imageUsage ) - && ( imageSharingMode == rhs.imageSharingMode ) - && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) - && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ) - && ( preTransform == rhs.preTransform ) - && ( compositeAlpha == rhs.compositeAlpha ) - && ( presentMode == rhs.presentMode ) - && ( clipped == rhs.clipped ) - && ( oldSwapchain == rhs.oldSwapchain ); - } - - bool operator!=( SwapchainCreateInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SwapchainCreateInfoKHR::sType; - }; - static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct SwapchainDisplayNativeHdrCreateInfoAMD - { - protected: - SwapchainDisplayNativeHdrCreateInfoAMD( vk::Bool32 localDimmingEnable_ = 0 ) - : localDimmingEnable( localDimmingEnable_ ) - {} - - SwapchainDisplayNativeHdrCreateInfoAMD( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - SwapchainDisplayNativeHdrCreateInfoAMD& operator=( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD; - const void* pNext = nullptr; - vk::Bool32 localDimmingEnable; - }; - static_assert( sizeof( SwapchainDisplayNativeHdrCreateInfoAMD ) == sizeof( VkSwapchainDisplayNativeHdrCreateInfoAMD ), "layout struct and wrapper have different size!" ); - } - - struct SwapchainDisplayNativeHdrCreateInfoAMD : public layout::SwapchainDisplayNativeHdrCreateInfoAMD - { - SwapchainDisplayNativeHdrCreateInfoAMD( vk::Bool32 localDimmingEnable_ = 0 ) - : layout::SwapchainDisplayNativeHdrCreateInfoAMD( localDimmingEnable_ ) - {} - - SwapchainDisplayNativeHdrCreateInfoAMD( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) - : layout::SwapchainDisplayNativeHdrCreateInfoAMD( rhs ) - {} - - SwapchainDisplayNativeHdrCreateInfoAMD& operator=( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - SwapchainDisplayNativeHdrCreateInfoAMD & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - SwapchainDisplayNativeHdrCreateInfoAMD & setLocalDimmingEnable( vk::Bool32 localDimmingEnable_ ) - { - localDimmingEnable = localDimmingEnable_; - return *this; - } - - operator VkSwapchainDisplayNativeHdrCreateInfoAMD const&() const - { - return *reinterpret_cast( this ); - } - - operator VkSwapchainDisplayNativeHdrCreateInfoAMD &() - { - return *reinterpret_cast( this ); - } - - bool operator==( SwapchainDisplayNativeHdrCreateInfoAMD const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( localDimmingEnable == rhs.localDimmingEnable ); - } - - bool operator!=( SwapchainDisplayNativeHdrCreateInfoAMD const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::SwapchainDisplayNativeHdrCreateInfoAMD::sType; - }; - static_assert( sizeof( SwapchainDisplayNativeHdrCreateInfoAMD ) == sizeof( VkSwapchainDisplayNativeHdrCreateInfoAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct TextureLODGatherFormatPropertiesAMD - { - protected: - TextureLODGatherFormatPropertiesAMD( vk::Bool32 supportsTextureGatherLODBiasAMD_ = 0 ) - : supportsTextureGatherLODBiasAMD( supportsTextureGatherLODBiasAMD_ ) - {} - - TextureLODGatherFormatPropertiesAMD( VkTextureLODGatherFormatPropertiesAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - TextureLODGatherFormatPropertiesAMD& operator=( VkTextureLODGatherFormatPropertiesAMD const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eTextureLodGatherFormatPropertiesAMD; - void* pNext = nullptr; - vk::Bool32 supportsTextureGatherLODBiasAMD; - }; - static_assert( sizeof( TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), "layout struct and wrapper have different size!" ); - } - - struct TextureLODGatherFormatPropertiesAMD : public layout::TextureLODGatherFormatPropertiesAMD - { - operator VkTextureLODGatherFormatPropertiesAMD const&() const - { - return *reinterpret_cast( this ); - } - - operator VkTextureLODGatherFormatPropertiesAMD &() - { - return *reinterpret_cast( this ); - } - - bool operator==( TextureLODGatherFormatPropertiesAMD const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD ); - } - - bool operator!=( TextureLODGatherFormatPropertiesAMD const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::TextureLODGatherFormatPropertiesAMD::sType; - }; - static_assert( sizeof( TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ValidationCacheCreateInfoEXT - { - protected: - ValidationCacheCreateInfoEXT( vk::ValidationCacheCreateFlagsEXT flags_ = vk::ValidationCacheCreateFlagsEXT(), - size_t initialDataSize_ = 0, - const void* pInitialData_ = nullptr ) - : flags( flags_ ) - , initialDataSize( initialDataSize_ ) - , pInitialData( pInitialData_ ) - {} - - ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ValidationCacheCreateInfoEXT& operator=( VkValidationCacheCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eValidationCacheCreateInfoEXT; - const void* pNext = nullptr; - vk::ValidationCacheCreateFlagsEXT flags; - size_t initialDataSize; - const void* pInitialData; - }; - static_assert( sizeof( ValidationCacheCreateInfoEXT ) == sizeof( VkValidationCacheCreateInfoEXT ), "layout struct and wrapper have different size!" ); - } - - struct ValidationCacheCreateInfoEXT : public layout::ValidationCacheCreateInfoEXT - { - ValidationCacheCreateInfoEXT( vk::ValidationCacheCreateFlagsEXT flags_ = vk::ValidationCacheCreateFlagsEXT(), - size_t initialDataSize_ = 0, - const void* pInitialData_ = nullptr ) - : layout::ValidationCacheCreateInfoEXT( flags_, initialDataSize_, pInitialData_ ) - {} - - ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs ) - : layout::ValidationCacheCreateInfoEXT( rhs ) - {} - - ValidationCacheCreateInfoEXT& operator=( VkValidationCacheCreateInfoEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ValidationCacheCreateInfoEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ValidationCacheCreateInfoEXT & setFlags( vk::ValidationCacheCreateFlagsEXT flags_ ) - { - flags = flags_; - return *this; - } - - ValidationCacheCreateInfoEXT & setInitialDataSize( size_t initialDataSize_ ) - { - initialDataSize = initialDataSize_; - return *this; - } - - ValidationCacheCreateInfoEXT & setPInitialData( const void* pInitialData_ ) - { - pInitialData = pInitialData_; - return *this; - } - - operator VkValidationCacheCreateInfoEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkValidationCacheCreateInfoEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ValidationCacheCreateInfoEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( initialDataSize == rhs.initialDataSize ) - && ( pInitialData == rhs.pInitialData ); - } - - bool operator!=( ValidationCacheCreateInfoEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ValidationCacheCreateInfoEXT::sType; - }; - static_assert( sizeof( ValidationCacheCreateInfoEXT ) == sizeof( VkValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ValidationFeaturesEXT - { - protected: - ValidationFeaturesEXT( uint32_t enabledValidationFeatureCount_ = 0, - const vk::ValidationFeatureEnableEXT* pEnabledValidationFeatures_ = nullptr, - uint32_t disabledValidationFeatureCount_ = 0, - const vk::ValidationFeatureDisableEXT* pDisabledValidationFeatures_ = nullptr ) - : enabledValidationFeatureCount( enabledValidationFeatureCount_ ) - , pEnabledValidationFeatures( pEnabledValidationFeatures_ ) - , disabledValidationFeatureCount( disabledValidationFeatureCount_ ) - , pDisabledValidationFeatures( pDisabledValidationFeatures_ ) - {} - - ValidationFeaturesEXT( VkValidationFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ValidationFeaturesEXT& operator=( VkValidationFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eValidationFeaturesEXT; - const void* pNext = nullptr; - uint32_t enabledValidationFeatureCount; - const vk::ValidationFeatureEnableEXT* pEnabledValidationFeatures; - uint32_t disabledValidationFeatureCount; - const vk::ValidationFeatureDisableEXT* pDisabledValidationFeatures; - }; - static_assert( sizeof( ValidationFeaturesEXT ) == sizeof( VkValidationFeaturesEXT ), "layout struct and wrapper have different size!" ); - } - - struct ValidationFeaturesEXT : public layout::ValidationFeaturesEXT - { - ValidationFeaturesEXT( uint32_t enabledValidationFeatureCount_ = 0, - const vk::ValidationFeatureEnableEXT* pEnabledValidationFeatures_ = nullptr, - uint32_t disabledValidationFeatureCount_ = 0, - const vk::ValidationFeatureDisableEXT* pDisabledValidationFeatures_ = nullptr ) - : layout::ValidationFeaturesEXT( enabledValidationFeatureCount_, pEnabledValidationFeatures_, disabledValidationFeatureCount_, pDisabledValidationFeatures_ ) - {} - - ValidationFeaturesEXT( VkValidationFeaturesEXT const & rhs ) - : layout::ValidationFeaturesEXT( rhs ) - {} - - ValidationFeaturesEXT& operator=( VkValidationFeaturesEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ValidationFeaturesEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ValidationFeaturesEXT & setEnabledValidationFeatureCount( uint32_t enabledValidationFeatureCount_ ) - { - enabledValidationFeatureCount = enabledValidationFeatureCount_; - return *this; - } - - ValidationFeaturesEXT & setPEnabledValidationFeatures( const vk::ValidationFeatureEnableEXT* pEnabledValidationFeatures_ ) - { - pEnabledValidationFeatures = pEnabledValidationFeatures_; - return *this; - } - - ValidationFeaturesEXT & setDisabledValidationFeatureCount( uint32_t disabledValidationFeatureCount_ ) - { - disabledValidationFeatureCount = disabledValidationFeatureCount_; - return *this; - } - - ValidationFeaturesEXT & setPDisabledValidationFeatures( const vk::ValidationFeatureDisableEXT* pDisabledValidationFeatures_ ) - { - pDisabledValidationFeatures = pDisabledValidationFeatures_; - return *this; - } - - operator VkValidationFeaturesEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkValidationFeaturesEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ValidationFeaturesEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( enabledValidationFeatureCount == rhs.enabledValidationFeatureCount ) - && ( pEnabledValidationFeatures == rhs.pEnabledValidationFeatures ) - && ( disabledValidationFeatureCount == rhs.disabledValidationFeatureCount ) - && ( pDisabledValidationFeatures == rhs.pDisabledValidationFeatures ); - } - - bool operator!=( ValidationFeaturesEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ValidationFeaturesEXT::sType; - }; - static_assert( sizeof( ValidationFeaturesEXT ) == sizeof( VkValidationFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct ValidationFlagsEXT - { - protected: - ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, - const vk::ValidationCheckEXT* pDisabledValidationChecks_ = nullptr ) - : disabledValidationCheckCount( disabledValidationCheckCount_ ) - , pDisabledValidationChecks( pDisabledValidationChecks_ ) - {} - - ValidationFlagsEXT( VkValidationFlagsEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eValidationFlagsEXT; - const void* pNext = nullptr; - uint32_t disabledValidationCheckCount; - const vk::ValidationCheckEXT* pDisabledValidationChecks; - }; - static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "layout struct and wrapper have different size!" ); - } - - struct ValidationFlagsEXT : public layout::ValidationFlagsEXT - { - ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, - const vk::ValidationCheckEXT* pDisabledValidationChecks_ = nullptr ) - : layout::ValidationFlagsEXT( disabledValidationCheckCount_, pDisabledValidationChecks_ ) - {} - - ValidationFlagsEXT( VkValidationFlagsEXT const & rhs ) - : layout::ValidationFlagsEXT( rhs ) - {} - - ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ValidationFlagsEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ValidationFlagsEXT & setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ ) - { - disabledValidationCheckCount = disabledValidationCheckCount_; - return *this; - } - - ValidationFlagsEXT & setPDisabledValidationChecks( const vk::ValidationCheckEXT* pDisabledValidationChecks_ ) - { - pDisabledValidationChecks = pDisabledValidationChecks_; - return *this; - } - - operator VkValidationFlagsEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkValidationFlagsEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ValidationFlagsEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount ) - && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks ); - } - - bool operator!=( ValidationFlagsEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ValidationFlagsEXT::sType; - }; - static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_VI_NN - - namespace layout - { - struct ViSurfaceCreateInfoNN - { - protected: - ViSurfaceCreateInfoNN( vk::ViSurfaceCreateFlagsNN flags_ = vk::ViSurfaceCreateFlagsNN(), - void* window_ = nullptr ) - : flags( flags_ ) - , window( window_ ) - {} - - ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eViSurfaceCreateInfoNN; - const void* pNext = nullptr; - vk::ViSurfaceCreateFlagsNN flags; - void* window; - }; - static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "layout struct and wrapper have different size!" ); - } - - struct ViSurfaceCreateInfoNN : public layout::ViSurfaceCreateInfoNN - { - ViSurfaceCreateInfoNN( vk::ViSurfaceCreateFlagsNN flags_ = vk::ViSurfaceCreateFlagsNN(), - void* window_ = nullptr ) - : layout::ViSurfaceCreateInfoNN( flags_, window_ ) - {} - - ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs ) - : layout::ViSurfaceCreateInfoNN( rhs ) - {} - - ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - ViSurfaceCreateInfoNN & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - ViSurfaceCreateInfoNN & setFlags( vk::ViSurfaceCreateFlagsNN flags_ ) - { - flags = flags_; - return *this; - } - - ViSurfaceCreateInfoNN & setWindow( void* window_ ) - { - window = window_; - return *this; - } - - operator VkViSurfaceCreateInfoNN const&() const - { - return *reinterpret_cast( this ); - } - - operator VkViSurfaceCreateInfoNN &() - { - return *reinterpret_cast( this ); - } - - bool operator==( ViSurfaceCreateInfoNN const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( window == rhs.window ); - } - - bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::ViSurfaceCreateInfoNN::sType; - }; - static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_VI_NN*/ - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - - namespace layout - { - struct WaylandSurfaceCreateInfoKHR - { - protected: - WaylandSurfaceCreateInfoKHR( vk::WaylandSurfaceCreateFlagsKHR flags_ = vk::WaylandSurfaceCreateFlagsKHR(), - struct wl_display* display_ = nullptr, - struct wl_surface* surface_ = nullptr ) - : flags( flags_ ) - , display( display_ ) - , surface( surface_ ) - {} - - WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eWaylandSurfaceCreateInfoKHR; - const void* pNext = nullptr; - vk::WaylandSurfaceCreateFlagsKHR flags; - struct wl_display* display; - struct wl_surface* surface; - }; - static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct WaylandSurfaceCreateInfoKHR : public layout::WaylandSurfaceCreateInfoKHR - { - WaylandSurfaceCreateInfoKHR( vk::WaylandSurfaceCreateFlagsKHR flags_ = vk::WaylandSurfaceCreateFlagsKHR(), - struct wl_display* display_ = nullptr, - struct wl_surface* surface_ = nullptr ) - : layout::WaylandSurfaceCreateInfoKHR( flags_, display_, surface_ ) - {} - - WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs ) - : layout::WaylandSurfaceCreateInfoKHR( rhs ) - {} - - WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - WaylandSurfaceCreateInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - WaylandSurfaceCreateInfoKHR & setFlags( vk::WaylandSurfaceCreateFlagsKHR flags_ ) - { - flags = flags_; - return *this; - } - - WaylandSurfaceCreateInfoKHR & setDisplay( struct wl_display* display_ ) - { - display = display_; - return *this; - } - - WaylandSurfaceCreateInfoKHR & setSurface( struct wl_surface* surface_ ) - { - surface = surface_; - return *this; - } - - operator VkWaylandSurfaceCreateInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkWaylandSurfaceCreateInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( display == rhs.display ) - && ( surface == rhs.surface ); - } - - bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::WaylandSurfaceCreateInfoKHR::sType; - }; - static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct Win32KeyedMutexAcquireReleaseInfoKHR - { - protected: - Win32KeyedMutexAcquireReleaseInfoKHR( uint32_t acquireCount_ = 0, - const vk::DeviceMemory* pAcquireSyncs_ = nullptr, - const uint64_t* pAcquireKeys_ = nullptr, - const uint32_t* pAcquireTimeouts_ = nullptr, - uint32_t releaseCount_ = 0, - const vk::DeviceMemory* pReleaseSyncs_ = nullptr, - const uint64_t* pReleaseKeys_ = nullptr ) - : acquireCount( acquireCount_ ) - , pAcquireSyncs( pAcquireSyncs_ ) - , pAcquireKeys( pAcquireKeys_ ) - , pAcquireTimeouts( pAcquireTimeouts_ ) - , releaseCount( releaseCount_ ) - , pReleaseSyncs( pReleaseSyncs_ ) - , pReleaseKeys( pReleaseKeys_ ) - {} - - Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - Win32KeyedMutexAcquireReleaseInfoKHR& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR; - const void* pNext = nullptr; - uint32_t acquireCount; - const vk::DeviceMemory* pAcquireSyncs; - const uint64_t* pAcquireKeys; - const uint32_t* pAcquireTimeouts; - uint32_t releaseCount; - const vk::DeviceMemory* pReleaseSyncs; - const uint64_t* pReleaseKeys; - }; - static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct Win32KeyedMutexAcquireReleaseInfoKHR : public layout::Win32KeyedMutexAcquireReleaseInfoKHR - { - Win32KeyedMutexAcquireReleaseInfoKHR( uint32_t acquireCount_ = 0, - const vk::DeviceMemory* pAcquireSyncs_ = nullptr, - const uint64_t* pAcquireKeys_ = nullptr, - const uint32_t* pAcquireTimeouts_ = nullptr, - uint32_t releaseCount_ = 0, - const vk::DeviceMemory* pReleaseSyncs_ = nullptr, - const uint64_t* pReleaseKeys_ = nullptr ) - : layout::Win32KeyedMutexAcquireReleaseInfoKHR( acquireCount_, pAcquireSyncs_, pAcquireKeys_, pAcquireTimeouts_, releaseCount_, pReleaseSyncs_, pReleaseKeys_ ) - {} - - Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) - : layout::Win32KeyedMutexAcquireReleaseInfoKHR( rhs ) - {} - - Win32KeyedMutexAcquireReleaseInfoKHR& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireCount( uint32_t acquireCount_ ) - { - acquireCount = acquireCount_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoKHR & setPAcquireSyncs( const vk::DeviceMemory* pAcquireSyncs_ ) - { - pAcquireSyncs = pAcquireSyncs_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoKHR & setPAcquireKeys( const uint64_t* pAcquireKeys_ ) - { - pAcquireKeys = pAcquireKeys_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoKHR & setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ ) - { - pAcquireTimeouts = pAcquireTimeouts_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoKHR & setReleaseCount( uint32_t releaseCount_ ) - { - releaseCount = releaseCount_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoKHR & setPReleaseSyncs( const vk::DeviceMemory* pReleaseSyncs_ ) - { - pReleaseSyncs = pReleaseSyncs_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoKHR & setPReleaseKeys( const uint64_t* pReleaseKeys_ ) - { - pReleaseKeys = pReleaseKeys_; - return *this; - } - - operator VkWin32KeyedMutexAcquireReleaseInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkWin32KeyedMutexAcquireReleaseInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( acquireCount == rhs.acquireCount ) - && ( pAcquireSyncs == rhs.pAcquireSyncs ) - && ( pAcquireKeys == rhs.pAcquireKeys ) - && ( pAcquireTimeouts == rhs.pAcquireTimeouts ) - && ( releaseCount == rhs.releaseCount ) - && ( pReleaseSyncs == rhs.pReleaseSyncs ) - && ( pReleaseKeys == rhs.pReleaseKeys ); - } - - bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::Win32KeyedMutexAcquireReleaseInfoKHR::sType; - }; - static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct Win32KeyedMutexAcquireReleaseInfoNV - { - protected: - Win32KeyedMutexAcquireReleaseInfoNV( uint32_t acquireCount_ = 0, - const vk::DeviceMemory* pAcquireSyncs_ = nullptr, - const uint64_t* pAcquireKeys_ = nullptr, - const uint32_t* pAcquireTimeoutMilliseconds_ = nullptr, - uint32_t releaseCount_ = 0, - const vk::DeviceMemory* pReleaseSyncs_ = nullptr, - const uint64_t* pReleaseKeys_ = nullptr ) - : acquireCount( acquireCount_ ) - , pAcquireSyncs( pAcquireSyncs_ ) - , pAcquireKeys( pAcquireKeys_ ) - , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ ) - , releaseCount( releaseCount_ ) - , pReleaseSyncs( pReleaseSyncs_ ) - , pReleaseKeys( pReleaseKeys_ ) - {} - - Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV; - const void* pNext = nullptr; - uint32_t acquireCount; - const vk::DeviceMemory* pAcquireSyncs; - const uint64_t* pAcquireKeys; - const uint32_t* pAcquireTimeoutMilliseconds; - uint32_t releaseCount; - const vk::DeviceMemory* pReleaseSyncs; - const uint64_t* pReleaseKeys; - }; - static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "layout struct and wrapper have different size!" ); - } - - struct Win32KeyedMutexAcquireReleaseInfoNV : public layout::Win32KeyedMutexAcquireReleaseInfoNV - { - Win32KeyedMutexAcquireReleaseInfoNV( uint32_t acquireCount_ = 0, - const vk::DeviceMemory* pAcquireSyncs_ = nullptr, - const uint64_t* pAcquireKeys_ = nullptr, - const uint32_t* pAcquireTimeoutMilliseconds_ = nullptr, - uint32_t releaseCount_ = 0, - const vk::DeviceMemory* pReleaseSyncs_ = nullptr, - const uint64_t* pReleaseKeys_ = nullptr ) - : layout::Win32KeyedMutexAcquireReleaseInfoNV( acquireCount_, pAcquireSyncs_, pAcquireKeys_, pAcquireTimeoutMilliseconds_, releaseCount_, pReleaseSyncs_, pReleaseKeys_ ) - {} - - Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) - : layout::Win32KeyedMutexAcquireReleaseInfoNV( rhs ) - {} - - Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoNV & setAcquireCount( uint32_t acquireCount_ ) - { - acquireCount = acquireCount_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoNV & setPAcquireSyncs( const vk::DeviceMemory* pAcquireSyncs_ ) - { - pAcquireSyncs = pAcquireSyncs_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoNV & setPAcquireKeys( const uint64_t* pAcquireKeys_ ) - { - pAcquireKeys = pAcquireKeys_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoNV & setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ ) - { - pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoNV & setReleaseCount( uint32_t releaseCount_ ) - { - releaseCount = releaseCount_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoNV & setPReleaseSyncs( const vk::DeviceMemory* pReleaseSyncs_ ) - { - pReleaseSyncs = pReleaseSyncs_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoNV & setPReleaseKeys( const uint64_t* pReleaseKeys_ ) - { - pReleaseKeys = pReleaseKeys_; - return *this; - } - - operator VkWin32KeyedMutexAcquireReleaseInfoNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkWin32KeyedMutexAcquireReleaseInfoNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( acquireCount == rhs.acquireCount ) - && ( pAcquireSyncs == rhs.pAcquireSyncs ) - && ( pAcquireKeys == rhs.pAcquireKeys ) - && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds ) - && ( releaseCount == rhs.releaseCount ) - && ( pReleaseSyncs == rhs.pReleaseSyncs ) - && ( pReleaseKeys == rhs.pReleaseKeys ); - } - - bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::Win32KeyedMutexAcquireReleaseInfoNV::sType; - }; - static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - - namespace layout - { - struct Win32SurfaceCreateInfoKHR - { - protected: - Win32SurfaceCreateInfoKHR( vk::Win32SurfaceCreateFlagsKHR flags_ = vk::Win32SurfaceCreateFlagsKHR(), - HINSTANCE hinstance_ = 0, - HWND hwnd_ = 0 ) - : flags( flags_ ) - , hinstance( hinstance_ ) - , hwnd( hwnd_ ) - {} - - Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eWin32SurfaceCreateInfoKHR; - const void* pNext = nullptr; - vk::Win32SurfaceCreateFlagsKHR flags; - HINSTANCE hinstance; - HWND hwnd; - }; - static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct Win32SurfaceCreateInfoKHR : public layout::Win32SurfaceCreateInfoKHR - { - Win32SurfaceCreateInfoKHR( vk::Win32SurfaceCreateFlagsKHR flags_ = vk::Win32SurfaceCreateFlagsKHR(), - HINSTANCE hinstance_ = 0, - HWND hwnd_ = 0 ) - : layout::Win32SurfaceCreateInfoKHR( flags_, hinstance_, hwnd_ ) - {} - - Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs ) - : layout::Win32SurfaceCreateInfoKHR( rhs ) - {} - - Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - Win32SurfaceCreateInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - Win32SurfaceCreateInfoKHR & setFlags( vk::Win32SurfaceCreateFlagsKHR flags_ ) - { - flags = flags_; - return *this; - } - - Win32SurfaceCreateInfoKHR & setHinstance( HINSTANCE hinstance_ ) - { - hinstance = hinstance_; - return *this; - } - - Win32SurfaceCreateInfoKHR & setHwnd( HWND hwnd_ ) - { - hwnd = hwnd_; - return *this; - } - - operator VkWin32SurfaceCreateInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkWin32SurfaceCreateInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( hinstance == rhs.hinstance ) - && ( hwnd == rhs.hwnd ); - } - - bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::Win32SurfaceCreateInfoKHR::sType; - }; - static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - namespace layout - { - struct WriteDescriptorSet - { - protected: - WriteDescriptorSet( vk::DescriptorSet dstSet_ = vk::DescriptorSet(), - uint32_t dstBinding_ = 0, - uint32_t dstArrayElement_ = 0, - uint32_t descriptorCount_ = 0, - vk::DescriptorType descriptorType_ = vk::DescriptorType::eSampler, - const vk::DescriptorImageInfo* pImageInfo_ = nullptr, - const vk::DescriptorBufferInfo* pBufferInfo_ = nullptr, - const vk::BufferView* pTexelBufferView_ = nullptr ) - : dstSet( dstSet_ ) - , dstBinding( dstBinding_ ) - , dstArrayElement( dstArrayElement_ ) - , descriptorCount( descriptorCount_ ) - , descriptorType( descriptorType_ ) - , pImageInfo( pImageInfo_ ) - , pBufferInfo( pBufferInfo_ ) - , pTexelBufferView( pTexelBufferView_ ) - {} - - WriteDescriptorSet( VkWriteDescriptorSet const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eWriteDescriptorSet; - const void* pNext = nullptr; - vk::DescriptorSet dstSet; - uint32_t dstBinding; - uint32_t dstArrayElement; - uint32_t descriptorCount; - vk::DescriptorType descriptorType; - const vk::DescriptorImageInfo* pImageInfo; - const vk::DescriptorBufferInfo* pBufferInfo; - const vk::BufferView* pTexelBufferView; - }; - static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "layout struct and wrapper have different size!" ); - } - - struct WriteDescriptorSet : public layout::WriteDescriptorSet - { - WriteDescriptorSet( vk::DescriptorSet dstSet_ = vk::DescriptorSet(), - uint32_t dstBinding_ = 0, - uint32_t dstArrayElement_ = 0, - uint32_t descriptorCount_ = 0, - vk::DescriptorType descriptorType_ = vk::DescriptorType::eSampler, - const vk::DescriptorImageInfo* pImageInfo_ = nullptr, - const vk::DescriptorBufferInfo* pBufferInfo_ = nullptr, - const vk::BufferView* pTexelBufferView_ = nullptr ) - : layout::WriteDescriptorSet( dstSet_, dstBinding_, dstArrayElement_, descriptorCount_, descriptorType_, pImageInfo_, pBufferInfo_, pTexelBufferView_ ) - {} - - WriteDescriptorSet( VkWriteDescriptorSet const & rhs ) - : layout::WriteDescriptorSet( rhs ) - {} - - WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - WriteDescriptorSet & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - WriteDescriptorSet & setDstSet( vk::DescriptorSet dstSet_ ) - { - dstSet = dstSet_; - return *this; - } - - WriteDescriptorSet & setDstBinding( uint32_t dstBinding_ ) - { - dstBinding = dstBinding_; - return *this; - } - - WriteDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) - { - dstArrayElement = dstArrayElement_; - return *this; - } - - WriteDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) - { - descriptorCount = descriptorCount_; - return *this; - } - - WriteDescriptorSet & setDescriptorType( vk::DescriptorType descriptorType_ ) - { - descriptorType = descriptorType_; - return *this; - } - - WriteDescriptorSet & setPImageInfo( const vk::DescriptorImageInfo* pImageInfo_ ) - { - pImageInfo = pImageInfo_; - return *this; - } - - WriteDescriptorSet & setPBufferInfo( const vk::DescriptorBufferInfo* pBufferInfo_ ) - { - pBufferInfo = pBufferInfo_; - return *this; - } - - WriteDescriptorSet & setPTexelBufferView( const vk::BufferView* pTexelBufferView_ ) - { - pTexelBufferView = pTexelBufferView_; - return *this; - } - - operator VkWriteDescriptorSet const&() const - { - return *reinterpret_cast( this ); - } - - operator VkWriteDescriptorSet &() - { - return *reinterpret_cast( this ); - } - - bool operator==( WriteDescriptorSet const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( dstSet == rhs.dstSet ) - && ( dstBinding == rhs.dstBinding ) - && ( dstArrayElement == rhs.dstArrayElement ) - && ( descriptorCount == rhs.descriptorCount ) - && ( descriptorType == rhs.descriptorType ) - && ( pImageInfo == rhs.pImageInfo ) - && ( pBufferInfo == rhs.pBufferInfo ) - && ( pTexelBufferView == rhs.pTexelBufferView ); - } - - bool operator!=( WriteDescriptorSet const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::WriteDescriptorSet::sType; - }; - static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct WriteDescriptorSetAccelerationStructureNV - { - protected: - WriteDescriptorSetAccelerationStructureNV( uint32_t accelerationStructureCount_ = 0, - const vk::AccelerationStructureNV* pAccelerationStructures_ = nullptr ) - : accelerationStructureCount( accelerationStructureCount_ ) - , pAccelerationStructures( pAccelerationStructures_ ) - {} - - WriteDescriptorSetAccelerationStructureNV( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - WriteDescriptorSetAccelerationStructureNV& operator=( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eWriteDescriptorSetAccelerationStructureNV; - const void* pNext = nullptr; - uint32_t accelerationStructureCount; - const vk::AccelerationStructureNV* pAccelerationStructures; - }; - static_assert( sizeof( WriteDescriptorSetAccelerationStructureNV ) == sizeof( VkWriteDescriptorSetAccelerationStructureNV ), "layout struct and wrapper have different size!" ); - } - - struct WriteDescriptorSetAccelerationStructureNV : public layout::WriteDescriptorSetAccelerationStructureNV - { - WriteDescriptorSetAccelerationStructureNV( uint32_t accelerationStructureCount_ = 0, - const vk::AccelerationStructureNV* pAccelerationStructures_ = nullptr ) - : layout::WriteDescriptorSetAccelerationStructureNV( accelerationStructureCount_, pAccelerationStructures_ ) - {} - - WriteDescriptorSetAccelerationStructureNV( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) - : layout::WriteDescriptorSetAccelerationStructureNV( rhs ) - {} - - WriteDescriptorSetAccelerationStructureNV& operator=( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - WriteDescriptorSetAccelerationStructureNV & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - WriteDescriptorSetAccelerationStructureNV & setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) - { - accelerationStructureCount = accelerationStructureCount_; - return *this; - } - - WriteDescriptorSetAccelerationStructureNV & setPAccelerationStructures( const vk::AccelerationStructureNV* pAccelerationStructures_ ) - { - pAccelerationStructures = pAccelerationStructures_; - return *this; - } - - operator VkWriteDescriptorSetAccelerationStructureNV const&() const - { - return *reinterpret_cast( this ); - } - - operator VkWriteDescriptorSetAccelerationStructureNV &() - { - return *reinterpret_cast( this ); - } - - bool operator==( WriteDescriptorSetAccelerationStructureNV const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( accelerationStructureCount == rhs.accelerationStructureCount ) - && ( pAccelerationStructures == rhs.pAccelerationStructures ); - } - - bool operator!=( WriteDescriptorSetAccelerationStructureNV const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::WriteDescriptorSetAccelerationStructureNV::sType; - }; - static_assert( sizeof( WriteDescriptorSetAccelerationStructureNV ) == sizeof( VkWriteDescriptorSetAccelerationStructureNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - namespace layout - { - struct WriteDescriptorSetInlineUniformBlockEXT - { - protected: - WriteDescriptorSetInlineUniformBlockEXT( uint32_t dataSize_ = 0, - const void* pData_ = nullptr ) - : dataSize( dataSize_ ) - , pData( pData_ ) - {} - - WriteDescriptorSetInlineUniformBlockEXT( VkWriteDescriptorSetInlineUniformBlockEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - WriteDescriptorSetInlineUniformBlockEXT& operator=( VkWriteDescriptorSetInlineUniformBlockEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eWriteDescriptorSetInlineUniformBlockEXT; - const void* pNext = nullptr; - uint32_t dataSize; - const void* pData; - }; - static_assert( sizeof( WriteDescriptorSetInlineUniformBlockEXT ) == sizeof( VkWriteDescriptorSetInlineUniformBlockEXT ), "layout struct and wrapper have different size!" ); - } - - struct WriteDescriptorSetInlineUniformBlockEXT : public layout::WriteDescriptorSetInlineUniformBlockEXT - { - WriteDescriptorSetInlineUniformBlockEXT( uint32_t dataSize_ = 0, - const void* pData_ = nullptr ) - : layout::WriteDescriptorSetInlineUniformBlockEXT( dataSize_, pData_ ) - {} - - WriteDescriptorSetInlineUniformBlockEXT( VkWriteDescriptorSetInlineUniformBlockEXT const & rhs ) - : layout::WriteDescriptorSetInlineUniformBlockEXT( rhs ) - {} - - WriteDescriptorSetInlineUniformBlockEXT& operator=( VkWriteDescriptorSetInlineUniformBlockEXT const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - WriteDescriptorSetInlineUniformBlockEXT & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - WriteDescriptorSetInlineUniformBlockEXT & setDataSize( uint32_t dataSize_ ) - { - dataSize = dataSize_; - return *this; - } - - WriteDescriptorSetInlineUniformBlockEXT & setPData( const void* pData_ ) - { - pData = pData_; - return *this; - } - - operator VkWriteDescriptorSetInlineUniformBlockEXT const&() const - { - return *reinterpret_cast( this ); - } - - operator VkWriteDescriptorSetInlineUniformBlockEXT &() - { - return *reinterpret_cast( this ); - } - - bool operator==( WriteDescriptorSetInlineUniformBlockEXT const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( dataSize == rhs.dataSize ) - && ( pData == rhs.pData ); - } - - bool operator!=( WriteDescriptorSetInlineUniformBlockEXT const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::WriteDescriptorSetInlineUniformBlockEXT::sType; - }; - static_assert( sizeof( WriteDescriptorSetInlineUniformBlockEXT ) == sizeof( VkWriteDescriptorSetInlineUniformBlockEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_XCB_KHR - - namespace layout - { - struct XcbSurfaceCreateInfoKHR - { - protected: - XcbSurfaceCreateInfoKHR( vk::XcbSurfaceCreateFlagsKHR flags_ = vk::XcbSurfaceCreateFlagsKHR(), - xcb_connection_t* connection_ = nullptr, - xcb_window_t window_ = 0 ) - : flags( flags_ ) - , connection( connection_ ) - , window( window_ ) - {} - - XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eXcbSurfaceCreateInfoKHR; - const void* pNext = nullptr; - vk::XcbSurfaceCreateFlagsKHR flags; - xcb_connection_t* connection; - xcb_window_t window; - }; - static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct XcbSurfaceCreateInfoKHR : public layout::XcbSurfaceCreateInfoKHR - { - XcbSurfaceCreateInfoKHR( vk::XcbSurfaceCreateFlagsKHR flags_ = vk::XcbSurfaceCreateFlagsKHR(), - xcb_connection_t* connection_ = nullptr, - xcb_window_t window_ = 0 ) - : layout::XcbSurfaceCreateInfoKHR( flags_, connection_, window_ ) - {} - - XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs ) - : layout::XcbSurfaceCreateInfoKHR( rhs ) - {} - - XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - XcbSurfaceCreateInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - XcbSurfaceCreateInfoKHR & setFlags( vk::XcbSurfaceCreateFlagsKHR flags_ ) - { - flags = flags_; - return *this; - } - - XcbSurfaceCreateInfoKHR & setConnection( xcb_connection_t* connection_ ) - { - connection = connection_; - return *this; - } - - XcbSurfaceCreateInfoKHR & setWindow( xcb_window_t window_ ) - { - window = window_; - return *this; - } - - operator VkXcbSurfaceCreateInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkXcbSurfaceCreateInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( connection == rhs.connection ) - && ( window == rhs.window ); - } - - bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::XcbSurfaceCreateInfoKHR::sType; - }; - static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_XCB_KHR*/ - -#ifdef VK_USE_PLATFORM_XLIB_KHR - - namespace layout - { - struct XlibSurfaceCreateInfoKHR - { - protected: - XlibSurfaceCreateInfoKHR( vk::XlibSurfaceCreateFlagsKHR flags_ = vk::XlibSurfaceCreateFlagsKHR(), - Display* dpy_ = nullptr, - Window window_ = 0 ) - : flags( flags_ ) - , dpy( dpy_ ) - , window( window_ ) - {} - - XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - } - - XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - public: - vk::StructureType sType = StructureType::eXlibSurfaceCreateInfoKHR; - const void* pNext = nullptr; - vk::XlibSurfaceCreateFlagsKHR flags; - Display* dpy; - Window window; - }; - static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "layout struct and wrapper have different size!" ); - } - - struct XlibSurfaceCreateInfoKHR : public layout::XlibSurfaceCreateInfoKHR - { - XlibSurfaceCreateInfoKHR( vk::XlibSurfaceCreateFlagsKHR flags_ = vk::XlibSurfaceCreateFlagsKHR(), - Display* dpy_ = nullptr, - Window window_ = 0 ) - : layout::XlibSurfaceCreateInfoKHR( flags_, dpy_, window_ ) - {} - - XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs ) - : layout::XlibSurfaceCreateInfoKHR( rhs ) - {} - - XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs ) - { - *reinterpret_cast(this) = rhs; - return *this; - } - - XlibSurfaceCreateInfoKHR & setPNext( const void* pNext_ ) - { - pNext = pNext_; - return *this; - } - - XlibSurfaceCreateInfoKHR & setFlags( vk::XlibSurfaceCreateFlagsKHR flags_ ) - { - flags = flags_; - return *this; - } - - XlibSurfaceCreateInfoKHR & setDpy( Display* dpy_ ) - { - dpy = dpy_; - return *this; - } - - XlibSurfaceCreateInfoKHR & setWindow( Window window_ ) - { - window = window_; - return *this; - } - - operator VkXlibSurfaceCreateInfoKHR const&() const - { - return *reinterpret_cast( this ); - } - - operator VkXlibSurfaceCreateInfoKHR &() - { - return *reinterpret_cast( this ); - } - - bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( dpy == rhs.dpy ) - && ( window == rhs.window ); - } - - bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const - { - return !operator==( rhs ); - } - - private: - using layout::XlibSurfaceCreateInfoKHR::sType; - }; - static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ - - template - VULKAN_HPP_INLINE Result createInstance( const vk::InstanceCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Instance* pInstance, Dispatch const &d) - { - return static_cast( d.vkCreateInstance( reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pInstance ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type createInstance( const InstanceCreateInfo & createInfo, Optional allocator, Dispatch const &d ) - { - vk::Instance instance; - Result result = static_cast( d.vkCreateInstance( reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &instance ) ) ); - return createResultValue( result, instance, VULKAN_HPP_NAMESPACE_STRING"::createInstance" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type createInstanceUnique( const InstanceCreateInfo & createInfo, Optional allocator, Dispatch const &d ) - { - vk::Instance instance; - Result result = static_cast( d.vkCreateInstance( reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &instance ) ) ); - - ObjectDestroy deleter( allocator, d ); - return createResultValue( result, instance, VULKAN_HPP_NAMESPACE_STRING"::createInstanceUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, vk::ExtensionProperties* pProperties, Dispatch const &d) - { - return static_cast( d.vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast( pProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type enumerateInstanceExtensionProperties( Optional layerName, Dispatch const &d ) - { - std::vector properties; - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceExtensionProperties" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type enumerateInstanceExtensionProperties( Optional layerName, Allocator const& vectorAllocator, Dispatch const &d ) - { - std::vector properties( vectorAllocator ); - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceExtensionProperties" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, vk::LayerProperties* pProperties, Dispatch const &d) - { - return static_cast( d.vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast( pProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type enumerateInstanceLayerProperties(Dispatch const &d ) - { - std::vector properties; - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceLayerProperties" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type enumerateInstanceLayerProperties(Allocator const& vectorAllocator, Dispatch const &d ) - { - std::vector properties( vectorAllocator ); - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceLayerProperties" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result enumerateInstanceVersion( uint32_t* pApiVersion, Dispatch const &d) - { - return static_cast( d.vkEnumerateInstanceVersion( pApiVersion ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type enumerateInstanceVersion(Dispatch const &d ) - { - uint32_t apiVersion; - Result result = static_cast( d.vkEnumerateInstanceVersion( &apiVersion ) ); - return createResultValue( result, apiVersion, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceVersion" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result CommandBuffer::begin( const vk::CommandBufferBeginInfo* pBeginInfo, Dispatch const &d) const - { - return static_cast( d.vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast( pBeginInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo, Dispatch const &d ) const - { - Result result = static_cast( d.vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast( &beginInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::CommandBuffer::begin" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT( const vk::ConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin, Dispatch const &d) const - { - d.vkCmdBeginConditionalRenderingEXT( m_commandBuffer, reinterpret_cast( pConditionalRenderingBegin ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT( const ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin, Dispatch const &d ) const - { - d.vkCmdBeginConditionalRenderingEXT( m_commandBuffer, reinterpret_cast( &conditionalRenderingBegin ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::beginDebugUtilsLabelEXT( const vk::DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d) const - { - d.vkCmdBeginDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast( pLabelInfo ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d ) const - { - d.vkCmdBeginDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast( &labelInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::beginQuery( vk::QueryPool queryPool, uint32_t query, vk::QueryControlFlags flags, Dispatch const &d) const - { - d.vkCmdBeginQuery( m_commandBuffer, static_cast( queryPool ), query, static_cast( flags ) ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::beginQuery( vk::QueryPool queryPool, uint32_t query, vk::QueryControlFlags flags, Dispatch const &d ) const - { - d.vkCmdBeginQuery( m_commandBuffer, static_cast( queryPool ), query, static_cast( flags ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::beginQueryIndexedEXT( vk::QueryPool queryPool, uint32_t query, vk::QueryControlFlags flags, uint32_t index, Dispatch const &d) const - { - d.vkCmdBeginQueryIndexedEXT( m_commandBuffer, static_cast( queryPool ), query, static_cast( flags ), index ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::beginQueryIndexedEXT( vk::QueryPool queryPool, uint32_t query, vk::QueryControlFlags flags, uint32_t index, Dispatch const &d ) const - { - d.vkCmdBeginQueryIndexedEXT( m_commandBuffer, static_cast( queryPool ), query, static_cast( flags ), index ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const vk::RenderPassBeginInfo* pRenderPassBegin, vk::SubpassContents contents, Dispatch const &d) const - { - d.vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast( pRenderPassBegin ), static_cast( contents ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, vk::SubpassContents contents, Dispatch const &d ) const - { - d.vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast( &renderPassBegin ), static_cast( contents ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2KHR( const vk::RenderPassBeginInfo* pRenderPassBegin, const vk::SubpassBeginInfoKHR* pSubpassBeginInfo, Dispatch const &d) const - { - d.vkCmdBeginRenderPass2KHR( m_commandBuffer, reinterpret_cast( pRenderPassBegin ), reinterpret_cast( pSubpassBeginInfo ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2KHR( const RenderPassBeginInfo & renderPassBegin, const SubpassBeginInfoKHR & subpassBeginInfo, Dispatch const &d ) const - { - d.vkCmdBeginRenderPass2KHR( m_commandBuffer, reinterpret_cast( &renderPassBegin ), reinterpret_cast( &subpassBeginInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::beginTransformFeedbackEXT( uint32_t firstCounterBuffer, uint32_t counterBufferCount, const vk::Buffer* pCounterBuffers, const vk::DeviceSize* pCounterBufferOffsets, Dispatch const &d) const - { - d.vkCmdBeginTransformFeedbackEXT( m_commandBuffer, firstCounterBuffer, counterBufferCount, reinterpret_cast( pCounterBuffers ), reinterpret_cast( pCounterBufferOffsets ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::beginTransformFeedbackEXT( uint32_t firstCounterBuffer, ArrayProxy counterBuffers, ArrayProxy counterBufferOffsets, Dispatch const &d ) const - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - VULKAN_HPP_ASSERT( counterBuffers.size() == counterBufferOffsets.size() ); -#else - if ( counterBuffers.size() != counterBufferOffsets.size() ) - { - throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::VkCommandBuffer::beginTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" ); - } -#endif /*VULKAN_HPP_NO_EXCEPTIONS*/ - d.vkCmdBeginTransformFeedbackEXT( m_commandBuffer, firstCounterBuffer, counterBuffers.size() , reinterpret_cast( counterBuffers.data() ), reinterpret_cast( counterBufferOffsets.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( vk::PipelineBindPoint pipelineBindPoint, vk::PipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const vk::DescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets, Dispatch const &d) const - { - d.vkCmdBindDescriptorSets( m_commandBuffer, static_cast( pipelineBindPoint ), static_cast( layout ), firstSet, descriptorSetCount, reinterpret_cast( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( vk::PipelineBindPoint pipelineBindPoint, vk::PipelineLayout layout, uint32_t firstSet, ArrayProxy descriptorSets, ArrayProxy dynamicOffsets, Dispatch const &d ) const - { - d.vkCmdBindDescriptorSets( m_commandBuffer, static_cast( pipelineBindPoint ), static_cast( layout ), firstSet, descriptorSets.size() , reinterpret_cast( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( vk::Buffer buffer, vk::DeviceSize offset, vk::IndexType indexType, Dispatch const &d) const - { - d.vkCmdBindIndexBuffer( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( indexType ) ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( vk::Buffer buffer, vk::DeviceSize offset, vk::IndexType indexType, Dispatch const &d ) const - { - d.vkCmdBindIndexBuffer( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( indexType ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( vk::PipelineBindPoint pipelineBindPoint, vk::Pipeline pipeline, Dispatch const &d) const - { - d.vkCmdBindPipeline( m_commandBuffer, static_cast( pipelineBindPoint ), static_cast( pipeline ) ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( vk::PipelineBindPoint pipelineBindPoint, vk::Pipeline pipeline, Dispatch const &d ) const - { - d.vkCmdBindPipeline( m_commandBuffer, static_cast( pipelineBindPoint ), static_cast( pipeline ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::bindShadingRateImageNV( vk::ImageView imageView, vk::ImageLayout imageLayout, Dispatch const &d) const - { - d.vkCmdBindShadingRateImageNV( m_commandBuffer, static_cast( imageView ), static_cast( imageLayout ) ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::bindShadingRateImageNV( vk::ImageView imageView, vk::ImageLayout imageLayout, Dispatch const &d ) const - { - d.vkCmdBindShadingRateImageNV( m_commandBuffer, static_cast( imageView ), static_cast( imageLayout ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::bindTransformFeedbackBuffersEXT( uint32_t firstBinding, uint32_t bindingCount, const vk::Buffer* pBuffers, const vk::DeviceSize* pOffsets, const vk::DeviceSize* pSizes, Dispatch const &d) const - { - d.vkCmdBindTransformFeedbackBuffersEXT( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast( pBuffers ), reinterpret_cast( pOffsets ), reinterpret_cast( pSizes ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::bindTransformFeedbackBuffersEXT( uint32_t firstBinding, ArrayProxy buffers, ArrayProxy offsets, ArrayProxy sizes, Dispatch const &d ) const - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); -#else - if ( buffers.size() != offsets.size() ) - { - throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::VkCommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != offsets.size()" ); - } -#endif /*VULKAN_HPP_NO_EXCEPTIONS*/ -#ifdef VULKAN_HPP_NO_EXCEPTIONS - VULKAN_HPP_ASSERT( buffers.size() == sizes.size() ); -#else - if ( buffers.size() != sizes.size() ) - { - throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::VkCommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != sizes.size()" ); - } -#endif /*VULKAN_HPP_NO_EXCEPTIONS*/ -#ifdef VULKAN_HPP_NO_EXCEPTIONS - VULKAN_HPP_ASSERT( offsets.size() == sizes.size() ); -#else - if ( offsets.size() != sizes.size() ) - { - throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::VkCommandBuffer::bindTransformFeedbackBuffersEXT: offsets.size() != sizes.size()" ); - } -#endif /*VULKAN_HPP_NO_EXCEPTIONS*/ - d.vkCmdBindTransformFeedbackBuffersEXT( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast( buffers.data() ), reinterpret_cast( offsets.data() ), reinterpret_cast( sizes.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const vk::Buffer* pBuffers, const vk::DeviceSize* pOffsets, Dispatch const &d) const - { - d.vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast( pBuffers ), reinterpret_cast( pOffsets ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy buffers, ArrayProxy offsets, Dispatch const &d ) const - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); -#else - if ( buffers.size() != offsets.size() ) - { - throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::VkCommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" ); - } -#endif /*VULKAN_HPP_NO_EXCEPTIONS*/ - d.vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast( buffers.data() ), reinterpret_cast( offsets.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::blitImage( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Image dstImage, vk::ImageLayout dstImageLayout, uint32_t regionCount, const vk::ImageBlit* pRegions, vk::Filter filter, Dispatch const &d) const - { - d.vkCmdBlitImage( m_commandBuffer, static_cast( srcImage ), static_cast( srcImageLayout ), static_cast( dstImage ), static_cast( dstImageLayout ), regionCount, reinterpret_cast( pRegions ), static_cast( filter ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::blitImage( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Image dstImage, vk::ImageLayout dstImageLayout, ArrayProxy regions, vk::Filter filter, Dispatch const &d ) const - { - d.vkCmdBlitImage( m_commandBuffer, static_cast( srcImage ), static_cast( srcImageLayout ), static_cast( dstImage ), static_cast( dstImageLayout ), regions.size() , reinterpret_cast( regions.data() ), static_cast( filter ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructureNV( const vk::AccelerationStructureInfoNV* pInfo, vk::Buffer instanceData, vk::DeviceSize instanceOffset, vk::Bool32 update, vk::AccelerationStructureNV dst, vk::AccelerationStructureNV src, vk::Buffer scratch, vk::DeviceSize scratchOffset, Dispatch const &d) const - { - d.vkCmdBuildAccelerationStructureNV( m_commandBuffer, reinterpret_cast( pInfo ), static_cast( instanceData ), static_cast( instanceOffset ), static_cast( update ), static_cast( dst ), static_cast( src ), static_cast( scratch ), static_cast( scratchOffset ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructureNV( const AccelerationStructureInfoNV & info, vk::Buffer instanceData, vk::DeviceSize instanceOffset, vk::Bool32 update, vk::AccelerationStructureNV dst, vk::AccelerationStructureNV src, vk::Buffer scratch, vk::DeviceSize scratchOffset, Dispatch const &d ) const - { - d.vkCmdBuildAccelerationStructureNV( m_commandBuffer, reinterpret_cast( &info ), static_cast( instanceData ), static_cast( instanceOffset ), static_cast( update ), static_cast( dst ), static_cast( src ), static_cast( scratch ), static_cast( scratchOffset ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const vk::ClearAttachment* pAttachments, uint32_t rectCount, const vk::ClearRect* pRects, Dispatch const &d) const - { - d.vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast( pAttachments ), rectCount, reinterpret_cast( pRects ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy attachments, ArrayProxy rects, Dispatch const &d ) const - { - d.vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast( attachments.data() ), rects.size() , reinterpret_cast( rects.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( vk::Image image, vk::ImageLayout imageLayout, const vk::ClearColorValue* pColor, uint32_t rangeCount, const vk::ImageSubresourceRange* pRanges, Dispatch const &d) const - { - d.vkCmdClearColorImage( m_commandBuffer, static_cast( image ), static_cast( imageLayout ), reinterpret_cast( pColor ), rangeCount, reinterpret_cast( pRanges ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( vk::Image image, vk::ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy ranges, Dispatch const &d ) const - { - d.vkCmdClearColorImage( m_commandBuffer, static_cast( image ), static_cast( imageLayout ), reinterpret_cast( &color ), ranges.size() , reinterpret_cast( ranges.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( vk::Image image, vk::ImageLayout imageLayout, const vk::ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const vk::ImageSubresourceRange* pRanges, Dispatch const &d) const - { - d.vkCmdClearDepthStencilImage( m_commandBuffer, static_cast( image ), static_cast( imageLayout ), reinterpret_cast( pDepthStencil ), rangeCount, reinterpret_cast( pRanges ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( vk::Image image, vk::ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy ranges, Dispatch const &d ) const - { - d.vkCmdClearDepthStencilImage( m_commandBuffer, static_cast( image ), static_cast( imageLayout ), reinterpret_cast( &depthStencil ), ranges.size() , reinterpret_cast( ranges.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureNV( vk::AccelerationStructureNV dst, vk::AccelerationStructureNV src, vk::CopyAccelerationStructureModeNV mode, Dispatch const &d) const - { - d.vkCmdCopyAccelerationStructureNV( m_commandBuffer, static_cast( dst ), static_cast( src ), static_cast( mode ) ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureNV( vk::AccelerationStructureNV dst, vk::AccelerationStructureNV src, vk::CopyAccelerationStructureModeNV mode, Dispatch const &d ) const - { - d.vkCmdCopyAccelerationStructureNV( m_commandBuffer, static_cast( dst ), static_cast( src ), static_cast( mode ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( vk::Buffer srcBuffer, vk::Buffer dstBuffer, uint32_t regionCount, const vk::BufferCopy* pRegions, Dispatch const &d) const - { - d.vkCmdCopyBuffer( m_commandBuffer, static_cast( srcBuffer ), static_cast( dstBuffer ), regionCount, reinterpret_cast( pRegions ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( vk::Buffer srcBuffer, vk::Buffer dstBuffer, ArrayProxy regions, Dispatch const &d ) const - { - d.vkCmdCopyBuffer( m_commandBuffer, static_cast( srcBuffer ), static_cast( dstBuffer ), regions.size() , reinterpret_cast( regions.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( vk::Buffer srcBuffer, vk::Image dstImage, vk::ImageLayout dstImageLayout, uint32_t regionCount, const vk::BufferImageCopy* pRegions, Dispatch const &d) const - { - d.vkCmdCopyBufferToImage( m_commandBuffer, static_cast( srcBuffer ), static_cast( dstImage ), static_cast( dstImageLayout ), regionCount, reinterpret_cast( pRegions ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( vk::Buffer srcBuffer, vk::Image dstImage, vk::ImageLayout dstImageLayout, ArrayProxy regions, Dispatch const &d ) const - { - d.vkCmdCopyBufferToImage( m_commandBuffer, static_cast( srcBuffer ), static_cast( dstImage ), static_cast( dstImageLayout ), regions.size() , reinterpret_cast( regions.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::copyImage( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Image dstImage, vk::ImageLayout dstImageLayout, uint32_t regionCount, const vk::ImageCopy* pRegions, Dispatch const &d) const - { - d.vkCmdCopyImage( m_commandBuffer, static_cast( srcImage ), static_cast( srcImageLayout ), static_cast( dstImage ), static_cast( dstImageLayout ), regionCount, reinterpret_cast( pRegions ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyImage( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Image dstImage, vk::ImageLayout dstImageLayout, ArrayProxy regions, Dispatch const &d ) const - { - d.vkCmdCopyImage( m_commandBuffer, static_cast( srcImage ), static_cast( srcImageLayout ), static_cast( dstImage ), static_cast( dstImageLayout ), regions.size() , reinterpret_cast( regions.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Buffer dstBuffer, uint32_t regionCount, const vk::BufferImageCopy* pRegions, Dispatch const &d) const - { - d.vkCmdCopyImageToBuffer( m_commandBuffer, static_cast( srcImage ), static_cast( srcImageLayout ), static_cast( dstBuffer ), regionCount, reinterpret_cast( pRegions ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Buffer dstBuffer, ArrayProxy regions, Dispatch const &d ) const - { - d.vkCmdCopyImageToBuffer( m_commandBuffer, static_cast( srcImage ), static_cast( srcImageLayout ), static_cast( dstBuffer ), regions.size() , reinterpret_cast( regions.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( vk::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, vk::Buffer dstBuffer, vk::DeviceSize dstOffset, vk::DeviceSize stride, vk::QueryResultFlags flags, Dispatch const &d) const - { - d.vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast( queryPool ), firstQuery, queryCount, static_cast( dstBuffer ), static_cast( dstOffset ), static_cast( stride ), static_cast( flags ) ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( vk::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, vk::Buffer dstBuffer, vk::DeviceSize dstOffset, vk::DeviceSize stride, vk::QueryResultFlags flags, Dispatch const &d ) const - { - d.vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast( queryPool ), firstQuery, queryCount, static_cast( dstBuffer ), static_cast( dstOffset ), static_cast( stride ), static_cast( flags ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const vk::DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const &d) const - { - d.vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast( pMarkerInfo ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const &d ) const - { - d.vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast( &markerInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT(Dispatch const &d) const - { - d.vkCmdDebugMarkerEndEXT( m_commandBuffer ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT(Dispatch const &d ) const - { - d.vkCmdDebugMarkerEndEXT( m_commandBuffer ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const vk::DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const &d) const - { - d.vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast( pMarkerInfo ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const &d ) const - { - d.vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast( &markerInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d) const - { - d.vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d ) const - { - d.vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::dispatchBase( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d) const - { - d.vkCmdDispatchBase( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::dispatchBase( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d ) const - { - d.vkCmdDispatchBase( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::dispatchBaseKHR( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d) const - { - d.vkCmdDispatchBaseKHR( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::dispatchBaseKHR( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const &d ) const - { - d.vkCmdDispatchBaseKHR( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( vk::Buffer buffer, vk::DeviceSize offset, Dispatch const &d) const - { - d.vkCmdDispatchIndirect( m_commandBuffer, static_cast( buffer ), static_cast( offset ) ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( vk::Buffer buffer, vk::DeviceSize offset, Dispatch const &d ) const - { - d.vkCmdDispatchIndirect( m_commandBuffer, static_cast( buffer ), static_cast( offset ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance, Dispatch const &d) const - { - d.vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance, Dispatch const &d ) const - { - d.vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance, Dispatch const &d) const - { - d.vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance, Dispatch const &d ) const - { - d.vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( vk::Buffer buffer, vk::DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d) const - { - d.vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast( buffer ), static_cast( offset ), drawCount, stride ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( vk::Buffer buffer, vk::DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d ) const - { - d.vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast( buffer ), static_cast( offset ), drawCount, stride ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( vk::Buffer buffer, vk::DeviceSize offset, vk::Buffer countBuffer, vk::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d) const - { - d.vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( vk::Buffer buffer, vk::DeviceSize offset, vk::Buffer countBuffer, vk::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d ) const - { - d.vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountKHR( vk::Buffer buffer, vk::DeviceSize offset, vk::Buffer countBuffer, vk::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d) const - { - d.vkCmdDrawIndexedIndirectCountKHR( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountKHR( vk::Buffer buffer, vk::DeviceSize offset, vk::Buffer countBuffer, vk::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d ) const - { - d.vkCmdDrawIndexedIndirectCountKHR( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( vk::Buffer buffer, vk::DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d) const - { - d.vkCmdDrawIndirect( m_commandBuffer, static_cast( buffer ), static_cast( offset ), drawCount, stride ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( vk::Buffer buffer, vk::DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d ) const - { - d.vkCmdDrawIndirect( m_commandBuffer, static_cast( buffer ), static_cast( offset ), drawCount, stride ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndirectByteCountEXT( uint32_t instanceCount, uint32_t firstInstance, vk::Buffer counterBuffer, vk::DeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride, Dispatch const &d) const - { - d.vkCmdDrawIndirectByteCountEXT( m_commandBuffer, instanceCount, firstInstance, static_cast( counterBuffer ), static_cast( counterBufferOffset ), counterOffset, vertexStride ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndirectByteCountEXT( uint32_t instanceCount, uint32_t firstInstance, vk::Buffer counterBuffer, vk::DeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride, Dispatch const &d ) const - { - d.vkCmdDrawIndirectByteCountEXT( m_commandBuffer, instanceCount, firstInstance, static_cast( counterBuffer ), static_cast( counterBufferOffset ), counterOffset, vertexStride ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( vk::Buffer buffer, vk::DeviceSize offset, vk::Buffer countBuffer, vk::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d) const - { - d.vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( vk::Buffer buffer, vk::DeviceSize offset, vk::Buffer countBuffer, vk::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d ) const - { - d.vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountKHR( vk::Buffer buffer, vk::DeviceSize offset, vk::Buffer countBuffer, vk::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d) const - { - d.vkCmdDrawIndirectCountKHR( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountKHR( vk::Buffer buffer, vk::DeviceSize offset, vk::Buffer countBuffer, vk::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d ) const - { - d.vkCmdDrawIndirectCountKHR( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCountNV( vk::Buffer buffer, vk::DeviceSize offset, vk::Buffer countBuffer, vk::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d) const - { - d.vkCmdDrawMeshTasksIndirectCountNV( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCountNV( vk::Buffer buffer, vk::DeviceSize offset, vk::Buffer countBuffer, vk::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const &d ) const - { - d.vkCmdDrawMeshTasksIndirectCountNV( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectNV( vk::Buffer buffer, vk::DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d) const - { - d.vkCmdDrawMeshTasksIndirectNV( m_commandBuffer, static_cast( buffer ), static_cast( offset ), drawCount, stride ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectNV( vk::Buffer buffer, vk::DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const &d ) const - { - d.vkCmdDrawMeshTasksIndirectNV( m_commandBuffer, static_cast( buffer ), static_cast( offset ), drawCount, stride ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask, Dispatch const &d) const - { - d.vkCmdDrawMeshTasksNV( m_commandBuffer, taskCount, firstTask ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask, Dispatch const &d ) const - { - d.vkCmdDrawMeshTasksNV( m_commandBuffer, taskCount, firstTask ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::endConditionalRenderingEXT(Dispatch const &d) const - { - d.vkCmdEndConditionalRenderingEXT( m_commandBuffer ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::endConditionalRenderingEXT(Dispatch const &d ) const - { - d.vkCmdEndConditionalRenderingEXT( m_commandBuffer ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::endDebugUtilsLabelEXT(Dispatch const &d) const - { - d.vkCmdEndDebugUtilsLabelEXT( m_commandBuffer ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::endDebugUtilsLabelEXT(Dispatch const &d ) const - { - d.vkCmdEndDebugUtilsLabelEXT( m_commandBuffer ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::endQuery( vk::QueryPool queryPool, uint32_t query, Dispatch const &d) const - { - d.vkCmdEndQuery( m_commandBuffer, static_cast( queryPool ), query ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::endQuery( vk::QueryPool queryPool, uint32_t query, Dispatch const &d ) const - { - d.vkCmdEndQuery( m_commandBuffer, static_cast( queryPool ), query ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::endQueryIndexedEXT( vk::QueryPool queryPool, uint32_t query, uint32_t index, Dispatch const &d) const - { - d.vkCmdEndQueryIndexedEXT( m_commandBuffer, static_cast( queryPool ), query, index ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::endQueryIndexedEXT( vk::QueryPool queryPool, uint32_t query, uint32_t index, Dispatch const &d ) const - { - d.vkCmdEndQueryIndexedEXT( m_commandBuffer, static_cast( queryPool ), query, index ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::endRenderPass(Dispatch const &d) const - { - d.vkCmdEndRenderPass( m_commandBuffer ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::endRenderPass(Dispatch const &d ) const - { - d.vkCmdEndRenderPass( m_commandBuffer ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( const vk::SubpassEndInfoKHR* pSubpassEndInfo, Dispatch const &d) const - { - d.vkCmdEndRenderPass2KHR( m_commandBuffer, reinterpret_cast( pSubpassEndInfo ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( const SubpassEndInfoKHR & subpassEndInfo, Dispatch const &d ) const - { - d.vkCmdEndRenderPass2KHR( m_commandBuffer, reinterpret_cast( &subpassEndInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::endTransformFeedbackEXT( uint32_t firstCounterBuffer, uint32_t counterBufferCount, const vk::Buffer* pCounterBuffers, const vk::DeviceSize* pCounterBufferOffsets, Dispatch const &d) const - { - d.vkCmdEndTransformFeedbackEXT( m_commandBuffer, firstCounterBuffer, counterBufferCount, reinterpret_cast( pCounterBuffers ), reinterpret_cast( pCounterBufferOffsets ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::endTransformFeedbackEXT( uint32_t firstCounterBuffer, ArrayProxy counterBuffers, ArrayProxy counterBufferOffsets, Dispatch const &d ) const - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - VULKAN_HPP_ASSERT( counterBuffers.size() == counterBufferOffsets.size() ); -#else - if ( counterBuffers.size() != counterBufferOffsets.size() ) - { - throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::VkCommandBuffer::endTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" ); - } -#endif /*VULKAN_HPP_NO_EXCEPTIONS*/ - d.vkCmdEndTransformFeedbackEXT( m_commandBuffer, firstCounterBuffer, counterBuffers.size() , reinterpret_cast( counterBuffers.data() ), reinterpret_cast( counterBufferOffsets.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const vk::CommandBuffer* pCommandBuffers, Dispatch const &d) const - { - d.vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast( pCommandBuffers ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy commandBuffers, Dispatch const &d ) const - { - d.vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast( commandBuffers.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( vk::Buffer dstBuffer, vk::DeviceSize dstOffset, vk::DeviceSize size, uint32_t data, Dispatch const &d) const - { - d.vkCmdFillBuffer( m_commandBuffer, static_cast( dstBuffer ), static_cast( dstOffset ), static_cast( size ), data ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( vk::Buffer dstBuffer, vk::DeviceSize dstOffset, vk::DeviceSize size, uint32_t data, Dispatch const &d ) const - { - d.vkCmdFillBuffer( m_commandBuffer, static_cast( dstBuffer ), static_cast( dstOffset ), static_cast( size ), data ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::insertDebugUtilsLabelEXT( const vk::DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d) const - { - d.vkCmdInsertDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast( pLabelInfo ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d ) const - { - d.vkCmdInsertDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast( &labelInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( vk::SubpassContents contents, Dispatch const &d) const - { - d.vkCmdNextSubpass( m_commandBuffer, static_cast( contents ) ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( vk::SubpassContents contents, Dispatch const &d ) const - { - d.vkCmdNextSubpass( m_commandBuffer, static_cast( contents ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2KHR( const vk::SubpassBeginInfoKHR* pSubpassBeginInfo, const vk::SubpassEndInfoKHR* pSubpassEndInfo, Dispatch const &d) const - { - d.vkCmdNextSubpass2KHR( m_commandBuffer, reinterpret_cast( pSubpassBeginInfo ), reinterpret_cast( pSubpassEndInfo ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2KHR( const SubpassBeginInfoKHR & subpassBeginInfo, const SubpassEndInfoKHR & subpassEndInfo, Dispatch const &d ) const - { - d.vkCmdNextSubpass2KHR( m_commandBuffer, reinterpret_cast( &subpassBeginInfo ), reinterpret_cast( &subpassEndInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier( vk::PipelineStageFlags srcStageMask, vk::PipelineStageFlags dstStageMask, vk::DependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const vk::MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const vk::BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const vk::ImageMemoryBarrier* pImageMemoryBarriers, Dispatch const &d) const - { - d.vkCmdPipelineBarrier( m_commandBuffer, static_cast( srcStageMask ), static_cast( dstStageMask ), static_cast( dependencyFlags ), memoryBarrierCount, reinterpret_cast( pMemoryBarriers ), bufferMemoryBarrierCount, reinterpret_cast( pBufferMemoryBarriers ), imageMemoryBarrierCount, reinterpret_cast( pImageMemoryBarriers ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier( vk::PipelineStageFlags srcStageMask, vk::PipelineStageFlags dstStageMask, vk::DependencyFlags dependencyFlags, ArrayProxy memoryBarriers, ArrayProxy bufferMemoryBarriers, ArrayProxy imageMemoryBarriers, Dispatch const &d ) const - { - d.vkCmdPipelineBarrier( m_commandBuffer, static_cast( srcStageMask ), static_cast( dstStageMask ), static_cast( dependencyFlags ), memoryBarriers.size() , reinterpret_cast( memoryBarriers.data() ), bufferMemoryBarriers.size() , reinterpret_cast( bufferMemoryBarriers.data() ), imageMemoryBarriers.size() , reinterpret_cast( imageMemoryBarriers.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const vk::CmdProcessCommandsInfoNVX* pProcessCommandsInfo, Dispatch const &d) const - { - d.vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast( pProcessCommandsInfo ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo, Dispatch const &d ) const - { - d.vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast( &processCommandsInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::pushConstants( vk::PipelineLayout layout, vk::ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues, Dispatch const &d) const - { - d.vkCmdPushConstants( m_commandBuffer, static_cast( layout ), static_cast( stageFlags ), offset, size, pValues ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::pushConstants( vk::PipelineLayout layout, vk::ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy values, Dispatch const &d ) const - { - d.vkCmdPushConstants( m_commandBuffer, static_cast( layout ), static_cast( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast( values.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( vk::PipelineBindPoint pipelineBindPoint, vk::PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const vk::WriteDescriptorSet* pDescriptorWrites, Dispatch const &d) const - { - d.vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast( pipelineBindPoint ), static_cast( layout ), set, descriptorWriteCount, reinterpret_cast( pDescriptorWrites ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( vk::PipelineBindPoint pipelineBindPoint, vk::PipelineLayout layout, uint32_t set, ArrayProxy descriptorWrites, Dispatch const &d ) const - { - d.vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast( pipelineBindPoint ), static_cast( layout ), set, descriptorWrites.size() , reinterpret_cast( descriptorWrites.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( vk::DescriptorUpdateTemplate descriptorUpdateTemplate, vk::PipelineLayout layout, uint32_t set, const void* pData, Dispatch const &d) const - { - d.vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast( descriptorUpdateTemplate ), static_cast( layout ), set, pData ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( vk::DescriptorUpdateTemplate descriptorUpdateTemplate, vk::PipelineLayout layout, uint32_t set, const void* pData, Dispatch const &d ) const - { - d.vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast( descriptorUpdateTemplate ), static_cast( layout ), set, pData ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const vk::CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo, Dispatch const &d) const - { - d.vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast( pReserveSpaceInfo ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo, Dispatch const &d ) const - { - d.vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast( &reserveSpaceInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::resetEvent( vk::Event event, vk::PipelineStageFlags stageMask, Dispatch const &d) const - { - d.vkCmdResetEvent( m_commandBuffer, static_cast( event ), static_cast( stageMask ) ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::resetEvent( vk::Event event, vk::PipelineStageFlags stageMask, Dispatch const &d ) const - { - d.vkCmdResetEvent( m_commandBuffer, static_cast( event ), static_cast( stageMask ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( vk::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const &d) const - { - d.vkCmdResetQueryPool( m_commandBuffer, static_cast( queryPool ), firstQuery, queryCount ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( vk::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const &d ) const - { - d.vkCmdResetQueryPool( m_commandBuffer, static_cast( queryPool ), firstQuery, queryCount ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::resolveImage( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Image dstImage, vk::ImageLayout dstImageLayout, uint32_t regionCount, const vk::ImageResolve* pRegions, Dispatch const &d) const - { - d.vkCmdResolveImage( m_commandBuffer, static_cast( srcImage ), static_cast( srcImageLayout ), static_cast( dstImage ), static_cast( dstImageLayout ), regionCount, reinterpret_cast( pRegions ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::resolveImage( vk::Image srcImage, vk::ImageLayout srcImageLayout, vk::Image dstImage, vk::ImageLayout dstImageLayout, ArrayProxy regions, Dispatch const &d ) const - { - d.vkCmdResolveImage( m_commandBuffer, static_cast( srcImage ), static_cast( srcImageLayout ), static_cast( dstImage ), static_cast( dstImageLayout ), regions.size() , reinterpret_cast( regions.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4], Dispatch const &d) const - { - d.vkCmdSetBlendConstants( m_commandBuffer, blendConstants ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4], Dispatch const &d ) const - { - d.vkCmdSetBlendConstants( m_commandBuffer, blendConstants ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( const void* pCheckpointMarker, Dispatch const &d) const - { - d.vkCmdSetCheckpointNV( m_commandBuffer, pCheckpointMarker ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( const void* pCheckpointMarker, Dispatch const &d ) const - { - d.vkCmdSetCheckpointNV( m_commandBuffer, pCheckpointMarker ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::setCoarseSampleOrderNV( vk::CoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const vk::CoarseSampleOrderCustomNV* pCustomSampleOrders, Dispatch const &d) const - { - d.vkCmdSetCoarseSampleOrderNV( m_commandBuffer, static_cast( sampleOrderType ), customSampleOrderCount, reinterpret_cast( pCustomSampleOrders ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setCoarseSampleOrderNV( vk::CoarseSampleOrderTypeNV sampleOrderType, ArrayProxy customSampleOrders, Dispatch const &d ) const - { - d.vkCmdSetCoarseSampleOrderNV( m_commandBuffer, static_cast( sampleOrderType ), customSampleOrders.size() , reinterpret_cast( customSampleOrders.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor, Dispatch const &d) const - { - d.vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor, Dispatch const &d ) const - { - d.vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds, Dispatch const &d) const - { - d.vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds, Dispatch const &d ) const - { - d.vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setDeviceMask( uint32_t deviceMask, Dispatch const &d) const - { - d.vkCmdSetDeviceMask( m_commandBuffer, deviceMask ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::setDeviceMask( uint32_t deviceMask, Dispatch const &d ) const - { - d.vkCmdSetDeviceMask( m_commandBuffer, deviceMask ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHR( uint32_t deviceMask, Dispatch const &d) const - { - d.vkCmdSetDeviceMaskKHR( m_commandBuffer, deviceMask ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHR( uint32_t deviceMask, Dispatch const &d ) const - { - d.vkCmdSetDeviceMaskKHR( m_commandBuffer, deviceMask ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const vk::Rect2D* pDiscardRectangles, Dispatch const &d) const - { - d.vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast( pDiscardRectangles ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy discardRectangles, Dispatch const &d ) const - { - d.vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast( discardRectangles.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setEvent( vk::Event event, vk::PipelineStageFlags stageMask, Dispatch const &d) const - { - d.vkCmdSetEvent( m_commandBuffer, static_cast( event ), static_cast( stageMask ) ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::setEvent( vk::Event event, vk::PipelineStageFlags stageMask, Dispatch const &d ) const - { - d.vkCmdSetEvent( m_commandBuffer, static_cast( event ), static_cast( stageMask ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorNV( uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const vk::Rect2D* pExclusiveScissors, Dispatch const &d) const - { - d.vkCmdSetExclusiveScissorNV( m_commandBuffer, firstExclusiveScissor, exclusiveScissorCount, reinterpret_cast( pExclusiveScissors ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorNV( uint32_t firstExclusiveScissor, ArrayProxy exclusiveScissors, Dispatch const &d ) const - { - d.vkCmdSetExclusiveScissorNV( m_commandBuffer, firstExclusiveScissor, exclusiveScissors.size() , reinterpret_cast( exclusiveScissors.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern, Dispatch const &d) const - { - d.vkCmdSetLineStippleEXT( m_commandBuffer, lineStippleFactor, lineStipplePattern ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::setLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern, Dispatch const &d ) const - { - d.vkCmdSetLineStippleEXT( m_commandBuffer, lineStippleFactor, lineStipplePattern ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth, Dispatch const &d) const - { - d.vkCmdSetLineWidth( m_commandBuffer, lineWidth ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth, Dispatch const &d ) const - { - d.vkCmdSetLineWidth( m_commandBuffer, lineWidth ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result CommandBuffer::setPerformanceMarkerINTEL( const vk::PerformanceMarkerInfoINTEL* pMarkerInfo, Dispatch const &d) const - { - return static_cast( d.vkCmdSetPerformanceMarkerINTEL( m_commandBuffer, reinterpret_cast( pMarkerInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type CommandBuffer::setPerformanceMarkerINTEL( const PerformanceMarkerInfoINTEL & markerInfo, Dispatch const &d ) const - { - Result result = static_cast( d.vkCmdSetPerformanceMarkerINTEL( m_commandBuffer, reinterpret_cast( &markerInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::CommandBuffer::setPerformanceMarkerINTEL" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result CommandBuffer::setPerformanceOverrideINTEL( const vk::PerformanceOverrideInfoINTEL* pOverrideInfo, Dispatch const &d) const - { - return static_cast( d.vkCmdSetPerformanceOverrideINTEL( m_commandBuffer, reinterpret_cast( pOverrideInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type CommandBuffer::setPerformanceOverrideINTEL( const PerformanceOverrideInfoINTEL & overrideInfo, Dispatch const &d ) const - { - Result result = static_cast( d.vkCmdSetPerformanceOverrideINTEL( m_commandBuffer, reinterpret_cast( &overrideInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::CommandBuffer::setPerformanceOverrideINTEL" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result CommandBuffer::setPerformanceStreamMarkerINTEL( const vk::PerformanceStreamMarkerInfoINTEL* pMarkerInfo, Dispatch const &d) const - { - return static_cast( d.vkCmdSetPerformanceStreamMarkerINTEL( m_commandBuffer, reinterpret_cast( pMarkerInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type CommandBuffer::setPerformanceStreamMarkerINTEL( const PerformanceStreamMarkerInfoINTEL & markerInfo, Dispatch const &d ) const - { - Result result = static_cast( d.vkCmdSetPerformanceStreamMarkerINTEL( m_commandBuffer, reinterpret_cast( &markerInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::CommandBuffer::setPerformanceStreamMarkerINTEL" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const vk::SampleLocationsInfoEXT* pSampleLocationsInfo, Dispatch const &d) const - { - d.vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast( pSampleLocationsInfo ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo, Dispatch const &d ) const - { - d.vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast( &sampleLocationsInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const vk::Rect2D* pScissors, Dispatch const &d) const - { - d.vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast( pScissors ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy scissors, Dispatch const &d ) const - { - d.vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast( scissors.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( vk::StencilFaceFlags faceMask, uint32_t compareMask, Dispatch const &d) const - { - d.vkCmdSetStencilCompareMask( m_commandBuffer, static_cast( faceMask ), compareMask ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( vk::StencilFaceFlags faceMask, uint32_t compareMask, Dispatch const &d ) const - { - d.vkCmdSetStencilCompareMask( m_commandBuffer, static_cast( faceMask ), compareMask ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( vk::StencilFaceFlags faceMask, uint32_t reference, Dispatch const &d) const - { - d.vkCmdSetStencilReference( m_commandBuffer, static_cast( faceMask ), reference ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( vk::StencilFaceFlags faceMask, uint32_t reference, Dispatch const &d ) const - { - d.vkCmdSetStencilReference( m_commandBuffer, static_cast( faceMask ), reference ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( vk::StencilFaceFlags faceMask, uint32_t writeMask, Dispatch const &d) const - { - d.vkCmdSetStencilWriteMask( m_commandBuffer, static_cast( faceMask ), writeMask ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( vk::StencilFaceFlags faceMask, uint32_t writeMask, Dispatch const &d ) const - { - d.vkCmdSetStencilWriteMask( m_commandBuffer, static_cast( faceMask ), writeMask ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const vk::Viewport* pViewports, Dispatch const &d) const - { - d.vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast( pViewports ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy viewports, Dispatch const &d ) const - { - d.vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast( viewports.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::setViewportShadingRatePaletteNV( uint32_t firstViewport, uint32_t viewportCount, const vk::ShadingRatePaletteNV* pShadingRatePalettes, Dispatch const &d) const - { - d.vkCmdSetViewportShadingRatePaletteNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast( pShadingRatePalettes ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setViewportShadingRatePaletteNV( uint32_t firstViewport, ArrayProxy shadingRatePalettes, Dispatch const &d ) const - { - d.vkCmdSetViewportShadingRatePaletteNV( m_commandBuffer, firstViewport, shadingRatePalettes.size() , reinterpret_cast( shadingRatePalettes.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const vk::ViewportWScalingNV* pViewportWScalings, Dispatch const &d) const - { - d.vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast( pViewportWScalings ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy viewportWScalings, Dispatch const &d ) const - { - d.vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast( viewportWScalings.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::traceRaysNV( vk::Buffer raygenShaderBindingTableBuffer, vk::DeviceSize raygenShaderBindingOffset, vk::Buffer missShaderBindingTableBuffer, vk::DeviceSize missShaderBindingOffset, vk::DeviceSize missShaderBindingStride, vk::Buffer hitShaderBindingTableBuffer, vk::DeviceSize hitShaderBindingOffset, vk::DeviceSize hitShaderBindingStride, vk::Buffer callableShaderBindingTableBuffer, vk::DeviceSize callableShaderBindingOffset, vk::DeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth, Dispatch const &d) const - { - d.vkCmdTraceRaysNV( m_commandBuffer, static_cast( raygenShaderBindingTableBuffer ), static_cast( raygenShaderBindingOffset ), static_cast( missShaderBindingTableBuffer ), static_cast( missShaderBindingOffset ), static_cast( missShaderBindingStride ), static_cast( hitShaderBindingTableBuffer ), static_cast( hitShaderBindingOffset ), static_cast( hitShaderBindingStride ), static_cast( callableShaderBindingTableBuffer ), static_cast( callableShaderBindingOffset ), static_cast( callableShaderBindingStride ), width, height, depth ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::traceRaysNV( vk::Buffer raygenShaderBindingTableBuffer, vk::DeviceSize raygenShaderBindingOffset, vk::Buffer missShaderBindingTableBuffer, vk::DeviceSize missShaderBindingOffset, vk::DeviceSize missShaderBindingStride, vk::Buffer hitShaderBindingTableBuffer, vk::DeviceSize hitShaderBindingOffset, vk::DeviceSize hitShaderBindingStride, vk::Buffer callableShaderBindingTableBuffer, vk::DeviceSize callableShaderBindingOffset, vk::DeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth, Dispatch const &d ) const - { - d.vkCmdTraceRaysNV( m_commandBuffer, static_cast( raygenShaderBindingTableBuffer ), static_cast( raygenShaderBindingOffset ), static_cast( missShaderBindingTableBuffer ), static_cast( missShaderBindingOffset ), static_cast( missShaderBindingStride ), static_cast( hitShaderBindingTableBuffer ), static_cast( hitShaderBindingOffset ), static_cast( hitShaderBindingStride ), static_cast( callableShaderBindingTableBuffer ), static_cast( callableShaderBindingOffset ), static_cast( callableShaderBindingStride ), width, height, depth ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( vk::Buffer dstBuffer, vk::DeviceSize dstOffset, vk::DeviceSize dataSize, const void* pData, Dispatch const &d) const - { - d.vkCmdUpdateBuffer( m_commandBuffer, static_cast( dstBuffer ), static_cast( dstOffset ), static_cast( dataSize ), pData ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( vk::Buffer dstBuffer, vk::DeviceSize dstOffset, ArrayProxy data, Dispatch const &d ) const - { - d.vkCmdUpdateBuffer( m_commandBuffer, static_cast( dstBuffer ), static_cast( dstOffset ), data.size() * sizeof( T ) , reinterpret_cast( data.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::waitEvents( uint32_t eventCount, const vk::Event* pEvents, vk::PipelineStageFlags srcStageMask, vk::PipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const vk::MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const vk::BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const vk::ImageMemoryBarrier* pImageMemoryBarriers, Dispatch const &d) const - { - d.vkCmdWaitEvents( m_commandBuffer, eventCount, reinterpret_cast( pEvents ), static_cast( srcStageMask ), static_cast( dstStageMask ), memoryBarrierCount, reinterpret_cast( pMemoryBarriers ), bufferMemoryBarrierCount, reinterpret_cast( pBufferMemoryBarriers ), imageMemoryBarrierCount, reinterpret_cast( pImageMemoryBarriers ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::waitEvents( ArrayProxy events, vk::PipelineStageFlags srcStageMask, vk::PipelineStageFlags dstStageMask, ArrayProxy memoryBarriers, ArrayProxy bufferMemoryBarriers, ArrayProxy imageMemoryBarriers, Dispatch const &d ) const - { - d.vkCmdWaitEvents( m_commandBuffer, events.size() , reinterpret_cast( events.data() ), static_cast( srcStageMask ), static_cast( dstStageMask ), memoryBarriers.size() , reinterpret_cast( memoryBarriers.data() ), bufferMemoryBarriers.size() , reinterpret_cast( bufferMemoryBarriers.data() ), imageMemoryBarriers.size() , reinterpret_cast( imageMemoryBarriers.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesNV( uint32_t accelerationStructureCount, const vk::AccelerationStructureNV* pAccelerationStructures, vk::QueryType queryType, vk::QueryPool queryPool, uint32_t firstQuery, Dispatch const &d) const - { - d.vkCmdWriteAccelerationStructuresPropertiesNV( m_commandBuffer, accelerationStructureCount, reinterpret_cast( pAccelerationStructures ), static_cast( queryType ), static_cast( queryPool ), firstQuery ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesNV( ArrayProxy accelerationStructures, vk::QueryType queryType, vk::QueryPool queryPool, uint32_t firstQuery, Dispatch const &d ) const - { - d.vkCmdWriteAccelerationStructuresPropertiesNV( m_commandBuffer, accelerationStructures.size() , reinterpret_cast( accelerationStructures.data() ), static_cast( queryType ), static_cast( queryPool ), firstQuery ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarkerAMD( vk::PipelineStageFlagBits pipelineStage, vk::Buffer dstBuffer, vk::DeviceSize dstOffset, uint32_t marker, Dispatch const &d) const - { - d.vkCmdWriteBufferMarkerAMD( m_commandBuffer, static_cast( pipelineStage ), static_cast( dstBuffer ), static_cast( dstOffset ), marker ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarkerAMD( vk::PipelineStageFlagBits pipelineStage, vk::Buffer dstBuffer, vk::DeviceSize dstOffset, uint32_t marker, Dispatch const &d ) const - { - d.vkCmdWriteBufferMarkerAMD( m_commandBuffer, static_cast( pipelineStage ), static_cast( dstBuffer ), static_cast( dstOffset ), marker ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( vk::PipelineStageFlagBits pipelineStage, vk::QueryPool queryPool, uint32_t query, Dispatch const &d) const - { - d.vkCmdWriteTimestamp( m_commandBuffer, static_cast( pipelineStage ), static_cast( queryPool ), query ); - } -#else - template - VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( vk::PipelineStageFlagBits pipelineStage, vk::QueryPool queryPool, uint32_t query, Dispatch const &d ) const - { - d.vkCmdWriteTimestamp( m_commandBuffer, static_cast( pipelineStage ), static_cast( queryPool ), query ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result CommandBuffer::end(Dispatch const &d) const - { - return static_cast( d.vkEndCommandBuffer( m_commandBuffer ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type CommandBuffer::end(Dispatch const &d ) const - { - Result result = static_cast( d.vkEndCommandBuffer( m_commandBuffer ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::CommandBuffer::end" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result CommandBuffer::reset( vk::CommandBufferResetFlags flags, Dispatch const &d) const - { - return static_cast( d.vkResetCommandBuffer( m_commandBuffer, static_cast( flags ) ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type CommandBuffer::reset( vk::CommandBufferResetFlags flags, Dispatch const &d ) const - { - Result result = static_cast( d.vkResetCommandBuffer( m_commandBuffer, static_cast( flags ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::CommandBuffer::reset" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::acquireFullScreenExclusiveModeEXT( vk::SwapchainKHR swapchain, Dispatch const &d) const - { - return static_cast( d.vkAcquireFullScreenExclusiveModeEXT( m_device, static_cast( swapchain ) ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type Device::acquireFullScreenExclusiveModeEXT( vk::SwapchainKHR swapchain, Dispatch const &d ) const - { - Result result = static_cast( d.vkAcquireFullScreenExclusiveModeEXT( m_device, static_cast( swapchain ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::acquireFullScreenExclusiveModeEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - template - VULKAN_HPP_INLINE Result Device::acquireNextImage2KHR( const vk::AcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex, Dispatch const &d) const - { - return static_cast( d.vkAcquireNextImage2KHR( m_device, reinterpret_cast( pAcquireInfo ), pImageIndex ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValue Device::acquireNextImage2KHR( const AcquireNextImageInfoKHR & acquireInfo, Dispatch const &d ) const - { - uint32_t imageIndex; - Result result = static_cast( d.vkAcquireNextImage2KHR( m_device, reinterpret_cast( &acquireInfo ), &imageIndex ) ); - return createResultValue( result, imageIndex, VULKAN_HPP_NAMESPACE_STRING"::Device::acquireNextImage2KHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( vk::SwapchainKHR swapchain, uint64_t timeout, vk::Semaphore semaphore, vk::Fence fence, uint32_t* pImageIndex, Dispatch const &d) const - { - return static_cast( d.vkAcquireNextImageKHR( m_device, static_cast( swapchain ), timeout, static_cast( semaphore ), static_cast( fence ), pImageIndex ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValue Device::acquireNextImageKHR( vk::SwapchainKHR swapchain, uint64_t timeout, vk::Semaphore semaphore, vk::Fence fence, Dispatch const &d ) const - { - uint32_t imageIndex; - Result result = static_cast( d.vkAcquireNextImageKHR( m_device, static_cast( swapchain ), timeout, static_cast( semaphore ), static_cast( fence ), &imageIndex ) ); - return createResultValue( result, imageIndex, VULKAN_HPP_NAMESPACE_STRING"::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::acquirePerformanceConfigurationINTEL( const vk::PerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, vk::PerformanceConfigurationINTEL* pConfiguration, Dispatch const &d) const - { - return static_cast( d.vkAcquirePerformanceConfigurationINTEL( m_device, reinterpret_cast( pAcquireInfo ), reinterpret_cast( pConfiguration ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::acquirePerformanceConfigurationINTEL( const PerformanceConfigurationAcquireInfoINTEL & acquireInfo, Dispatch const &d ) const - { - vk::PerformanceConfigurationINTEL configuration; - Result result = static_cast( d.vkAcquirePerformanceConfigurationINTEL( m_device, reinterpret_cast( &acquireInfo ), reinterpret_cast( &configuration ) ) ); - return createResultValue( result, configuration, VULKAN_HPP_NAMESPACE_STRING"::Device::acquirePerformanceConfigurationINTEL" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const vk::CommandBufferAllocateInfo* pAllocateInfo, vk::CommandBuffer* pCommandBuffers, Dispatch const &d) const - { - return static_cast( d.vkAllocateCommandBuffers( m_device, reinterpret_cast( pAllocateInfo ), reinterpret_cast( pCommandBuffers ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, Dispatch const &d ) const - { - std::vector commandBuffers( allocateInfo.commandBufferCount ); - Result result = static_cast( d.vkAllocateCommandBuffers( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( commandBuffers.data() ) ) ); - return createResultValue( result, commandBuffers, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateCommandBuffers" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector commandBuffers( allocateInfo.commandBufferCount, vectorAllocator ); - Result result = static_cast( d.vkAllocateCommandBuffers( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( commandBuffers.data() ) ) ); - return createResultValue( result, commandBuffers, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateCommandBuffers" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType,Allocator>>::type Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, Dispatch const &d ) const - { - static_assert( sizeof( CommandBuffer ) <= sizeof( UniqueHandle ), "CommandBuffer is greater than UniqueHandle!" ); - std::vector, Allocator> commandBuffers; - commandBuffers.reserve( allocateInfo.commandBufferCount ); - CommandBuffer* buffer = reinterpret_cast( reinterpret_cast( commandBuffers.data() ) + allocateInfo.commandBufferCount * ( sizeof( UniqueHandle ) - sizeof( CommandBuffer ) ) ); - Result result = static_cast(d.vkAllocateCommandBuffers( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( buffer ) ) ); - if (result == vk::Result::eSuccess) - { - PoolFree deleter( *this, allocateInfo.commandPool, d ); - for ( size_t i=0 ; i( buffer[i], deleter ) ); - } - } - - return createResultValue( result, commandBuffers, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffersUnique" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType,Allocator>>::type Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const - { - static_assert( sizeof( CommandBuffer ) <= sizeof( UniqueHandle ), "CommandBuffer is greater than UniqueHandle!" ); - std::vector, Allocator> commandBuffers( vectorAllocator ); - commandBuffers.reserve( allocateInfo.commandBufferCount ); - CommandBuffer* buffer = reinterpret_cast( reinterpret_cast( commandBuffers.data() ) + allocateInfo.commandBufferCount * ( sizeof( UniqueHandle ) - sizeof( CommandBuffer ) ) ); - Result result = static_cast(d.vkAllocateCommandBuffers( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( buffer ) ) ); - if (result == vk::Result::eSuccess) - { - PoolFree deleter( *this, allocateInfo.commandPool, d ); - for ( size_t i=0 ; i( buffer[i], deleter ) ); - } - } - - return createResultValue( result, commandBuffers, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffersUnique" ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const vk::DescriptorSetAllocateInfo* pAllocateInfo, vk::DescriptorSet* pDescriptorSets, Dispatch const &d) const - { - return static_cast( d.vkAllocateDescriptorSets( m_device, reinterpret_cast( pAllocateInfo ), reinterpret_cast( pDescriptorSets ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const &d ) const - { - std::vector descriptorSets( allocateInfo.descriptorSetCount ); - Result result = static_cast( d.vkAllocateDescriptorSets( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( descriptorSets.data() ) ) ); - return createResultValue( result, descriptorSets, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateDescriptorSets" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector descriptorSets( allocateInfo.descriptorSetCount, vectorAllocator ); - Result result = static_cast( d.vkAllocateDescriptorSets( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( descriptorSets.data() ) ) ); - return createResultValue( result, descriptorSets, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateDescriptorSets" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType,Allocator>>::type Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const &d ) const - { - static_assert( sizeof( DescriptorSet ) <= sizeof( UniqueHandle ), "DescriptorSet is greater than UniqueHandle!" ); - std::vector, Allocator> descriptorSets; - descriptorSets.reserve( allocateInfo.descriptorSetCount ); - DescriptorSet* buffer = reinterpret_cast( reinterpret_cast( descriptorSets.data() ) + allocateInfo.descriptorSetCount * ( sizeof( UniqueHandle ) - sizeof( DescriptorSet ) ) ); - Result result = static_cast(d.vkAllocateDescriptorSets( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( buffer ) ) ); - if (result == vk::Result::eSuccess) - { - PoolFree deleter( *this, allocateInfo.descriptorPool, d ); - for ( size_t i=0 ; i( buffer[i], deleter ) ); - } - } - - return createResultValue( result, descriptorSets, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSetsUnique" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType,Allocator>>::type Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, Allocator const& vectorAllocator, Dispatch const &d ) const - { - static_assert( sizeof( DescriptorSet ) <= sizeof( UniqueHandle ), "DescriptorSet is greater than UniqueHandle!" ); - std::vector, Allocator> descriptorSets( vectorAllocator ); - descriptorSets.reserve( allocateInfo.descriptorSetCount ); - DescriptorSet* buffer = reinterpret_cast( reinterpret_cast( descriptorSets.data() ) + allocateInfo.descriptorSetCount * ( sizeof( UniqueHandle ) - sizeof( DescriptorSet ) ) ); - Result result = static_cast(d.vkAllocateDescriptorSets( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( buffer ) ) ); - if (result == vk::Result::eSuccess) - { - PoolFree deleter( *this, allocateInfo.descriptorPool, d ); - for ( size_t i=0 ; i( buffer[i], deleter ) ); - } - } - - return createResultValue( result, descriptorSets, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSetsUnique" ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::allocateMemory( const vk::MemoryAllocateInfo* pAllocateInfo, const vk::AllocationCallbacks* pAllocator, vk::DeviceMemory* pMemory, Dispatch const &d) const - { - return static_cast( d.vkAllocateMemory( m_device, reinterpret_cast( pAllocateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pMemory ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional allocator, Dispatch const &d ) const - { - vk::DeviceMemory memory; - Result result = static_cast( d.vkAllocateMemory( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &memory ) ) ); - return createResultValue( result, memory, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateMemory" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional allocator, Dispatch const &d ) const - { - vk::DeviceMemory memory; - Result result = static_cast( d.vkAllocateMemory( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &memory ) ) ); - - ObjectFree deleter( *this, allocator, d ); - return createResultValue( result, memory, VULKAN_HPP_NAMESPACE_STRING"::Device::allocateMemoryUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::bindAccelerationStructureMemoryNV( uint32_t bindInfoCount, const vk::BindAccelerationStructureMemoryInfoNV* pBindInfos, Dispatch const &d) const - { - return static_cast( d.vkBindAccelerationStructureMemoryNV( m_device, bindInfoCount, reinterpret_cast( pBindInfos ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::bindAccelerationStructureMemoryNV( ArrayProxy bindInfos, Dispatch const &d ) const - { - Result result = static_cast( d.vkBindAccelerationStructureMemoryNV( m_device, bindInfos.size() , reinterpret_cast( bindInfos.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindAccelerationStructureMemoryNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::bindBufferMemory( vk::Buffer buffer, vk::DeviceMemory memory, vk::DeviceSize memoryOffset, Dispatch const &d) const - { - return static_cast( d.vkBindBufferMemory( m_device, static_cast( buffer ), static_cast( memory ), static_cast( memoryOffset ) ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type Device::bindBufferMemory( vk::Buffer buffer, vk::DeviceMemory memory, vk::DeviceSize memoryOffset, Dispatch const &d ) const - { - Result result = static_cast( d.vkBindBufferMemory( m_device, static_cast( buffer ), static_cast( memory ), static_cast( memoryOffset ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindBufferMemory" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::bindBufferMemory2( uint32_t bindInfoCount, const vk::BindBufferMemoryInfo* pBindInfos, Dispatch const &d) const - { - return static_cast( d.vkBindBufferMemory2( m_device, bindInfoCount, reinterpret_cast( pBindInfos ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::bindBufferMemory2( ArrayProxy bindInfos, Dispatch const &d ) const - { - Result result = static_cast( d.vkBindBufferMemory2( m_device, bindInfos.size() , reinterpret_cast( bindInfos.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindBufferMemory2" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHR( uint32_t bindInfoCount, const vk::BindBufferMemoryInfo* pBindInfos, Dispatch const &d) const - { - return static_cast( d.vkBindBufferMemory2KHR( m_device, bindInfoCount, reinterpret_cast( pBindInfos ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::bindBufferMemory2KHR( ArrayProxy bindInfos, Dispatch const &d ) const - { - Result result = static_cast( d.vkBindBufferMemory2KHR( m_device, bindInfos.size() , reinterpret_cast( bindInfos.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindBufferMemory2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::bindImageMemory( vk::Image image, vk::DeviceMemory memory, vk::DeviceSize memoryOffset, Dispatch const &d) const - { - return static_cast( d.vkBindImageMemory( m_device, static_cast( image ), static_cast( memory ), static_cast( memoryOffset ) ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type Device::bindImageMemory( vk::Image image, vk::DeviceMemory memory, vk::DeviceSize memoryOffset, Dispatch const &d ) const - { - Result result = static_cast( d.vkBindImageMemory( m_device, static_cast( image ), static_cast( memory ), static_cast( memoryOffset ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindImageMemory" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::bindImageMemory2( uint32_t bindInfoCount, const vk::BindImageMemoryInfo* pBindInfos, Dispatch const &d) const - { - return static_cast( d.vkBindImageMemory2( m_device, bindInfoCount, reinterpret_cast( pBindInfos ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::bindImageMemory2( ArrayProxy bindInfos, Dispatch const &d ) const - { - Result result = static_cast( d.vkBindImageMemory2( m_device, bindInfos.size() , reinterpret_cast( bindInfos.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindImageMemory2" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::bindImageMemory2KHR( uint32_t bindInfoCount, const vk::BindImageMemoryInfo* pBindInfos, Dispatch const &d) const - { - return static_cast( d.vkBindImageMemory2KHR( m_device, bindInfoCount, reinterpret_cast( pBindInfos ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::bindImageMemory2KHR( ArrayProxy bindInfos, Dispatch const &d ) const - { - Result result = static_cast( d.vkBindImageMemory2KHR( m_device, bindInfos.size() , reinterpret_cast( bindInfos.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::bindImageMemory2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::compileDeferredNV( vk::Pipeline pipeline, uint32_t shader, Dispatch const &d) const - { - return static_cast( d.vkCompileDeferredNV( m_device, static_cast( pipeline ), shader ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type Device::compileDeferredNV( vk::Pipeline pipeline, uint32_t shader, Dispatch const &d ) const - { - Result result = static_cast( d.vkCompileDeferredNV( m_device, static_cast( pipeline ), shader ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::compileDeferredNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createAccelerationStructureNV( const vk::AccelerationStructureCreateInfoNV* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::AccelerationStructureNV* pAccelerationStructure, Dispatch const &d) const - { - return static_cast( d.vkCreateAccelerationStructureNV( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pAccelerationStructure ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createAccelerationStructureNV( const AccelerationStructureCreateInfoNV & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::AccelerationStructureNV accelerationStructure; - Result result = static_cast( d.vkCreateAccelerationStructureNV( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &accelerationStructure ) ) ); - return createResultValue( result, accelerationStructure, VULKAN_HPP_NAMESPACE_STRING"::Device::createAccelerationStructureNV" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createAccelerationStructureNVUnique( const AccelerationStructureCreateInfoNV & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::AccelerationStructureNV accelerationStructure; - Result result = static_cast( d.vkCreateAccelerationStructureNV( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &accelerationStructure ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, accelerationStructure, VULKAN_HPP_NAMESPACE_STRING"::Device::createAccelerationStructureNVUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createBuffer( const vk::BufferCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Buffer* pBuffer, Dispatch const &d) const - { - return static_cast( d.vkCreateBuffer( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pBuffer ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Buffer buffer; - Result result = static_cast( d.vkCreateBuffer( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &buffer ) ) ); - return createResultValue( result, buffer, VULKAN_HPP_NAMESPACE_STRING"::Device::createBuffer" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Buffer buffer; - Result result = static_cast( d.vkCreateBuffer( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &buffer ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, buffer, VULKAN_HPP_NAMESPACE_STRING"::Device::createBufferUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createBufferView( const vk::BufferViewCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::BufferView* pView, Dispatch const &d) const - { - return static_cast( d.vkCreateBufferView( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pView ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::BufferView view; - Result result = static_cast( d.vkCreateBufferView( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &view ) ) ); - return createResultValue( result, view, VULKAN_HPP_NAMESPACE_STRING"::Device::createBufferView" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::BufferView view; - Result result = static_cast( d.vkCreateBufferView( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &view ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, view, VULKAN_HPP_NAMESPACE_STRING"::Device::createBufferViewUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createCommandPool( const vk::CommandPoolCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::CommandPool* pCommandPool, Dispatch const &d) const - { - return static_cast( d.vkCreateCommandPool( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pCommandPool ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::CommandPool commandPool; - Result result = static_cast( d.vkCreateCommandPool( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &commandPool ) ) ); - return createResultValue( result, commandPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createCommandPool" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::CommandPool commandPool; - Result result = static_cast( d.vkCreateCommandPool( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &commandPool ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, commandPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createCommandPoolUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createComputePipelines( vk::PipelineCache pipelineCache, uint32_t createInfoCount, const vk::ComputePipelineCreateInfo* pCreateInfos, const vk::AllocationCallbacks* pAllocator, vk::Pipeline* pPipelines, Dispatch const &d) const - { - return static_cast( d.vkCreateComputePipelines( m_device, static_cast( pipelineCache ), createInfoCount, reinterpret_cast( pCreateInfos ), reinterpret_cast( pAllocator ), reinterpret_cast( pPipelines ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createComputePipelines( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Dispatch const &d ) const - { - std::vector pipelines( createInfos.size() ); - Result result = static_cast( d.vkCreateComputePipelines( m_device, static_cast( pipelineCache ), createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING"::Device::createComputePipelines" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createComputePipelines( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector pipelines( createInfos.size(), vectorAllocator ); - Result result = static_cast( d.vkCreateComputePipelines( m_device, static_cast( pipelineCache ), createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING"::Device::createComputePipelines" ); - } - template - VULKAN_HPP_INLINE ResultValueType::type Device::createComputePipeline( vk::PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - Pipeline pipeline; - Result result = static_cast( d.vkCreateComputePipelines( m_device, static_cast( pipelineCache ), 1 , reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipeline ) ) ); - return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createComputePipeline" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType,Allocator>>::type Device::createComputePipelinesUnique( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Dispatch const &d ) const - { - static_assert( sizeof( Pipeline ) <= sizeof( UniqueHandle ), "Pipeline is greater than UniqueHandle!" ); - std::vector, Allocator> pipelines; - pipelines.reserve( createInfos.size() ); - Pipeline* buffer = reinterpret_cast( reinterpret_cast( pipelines.data() ) + createInfos.size() * ( sizeof( UniqueHandle ) - sizeof( Pipeline ) ) ); - Result result = static_cast(d.vkCreateComputePipelines( m_device, static_cast( pipelineCache ), createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( buffer ) ) ); - if (result == vk::Result::eSuccess) - { - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0 ; i( buffer[i], deleter ) ); - } - } - - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelinesUnique" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType,Allocator>>::type Device::createComputePipelinesUnique( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const - { - static_assert( sizeof( Pipeline ) <= sizeof( UniqueHandle ), "Pipeline is greater than UniqueHandle!" ); - std::vector, Allocator> pipelines( vectorAllocator ); - pipelines.reserve( createInfos.size() ); - Pipeline* buffer = reinterpret_cast( reinterpret_cast( pipelines.data() ) + createInfos.size() * ( sizeof( UniqueHandle ) - sizeof( Pipeline ) ) ); - Result result = static_cast(d.vkCreateComputePipelines( m_device, static_cast( pipelineCache ), createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( buffer ) ) ); - if (result == vk::Result::eSuccess) - { - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0 ; i( buffer[i], deleter ) ); - } - } - - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelinesUnique" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createComputePipelineUnique( vk::PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - Pipeline pipeline; - Result result = static_cast( d.vkCreateComputePipelines( m_device, static_cast( pipelineCache ), 1 , reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipeline ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createComputePipelineUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createDescriptorPool( const vk::DescriptorPoolCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::DescriptorPool* pDescriptorPool, Dispatch const &d) const - { - return static_cast( d.vkCreateDescriptorPool( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pDescriptorPool ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::DescriptorPool descriptorPool; - Result result = static_cast( d.vkCreateDescriptorPool( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &descriptorPool ) ) ); - return createResultValue( result, descriptorPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorPool" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::DescriptorPool descriptorPool; - Result result = static_cast( d.vkCreateDescriptorPool( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &descriptorPool ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, descriptorPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorPoolUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const vk::DescriptorSetLayoutCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::DescriptorSetLayout* pSetLayout, Dispatch const &d) const - { - return static_cast( d.vkCreateDescriptorSetLayout( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSetLayout ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::DescriptorSetLayout setLayout; - Result result = static_cast( d.vkCreateDescriptorSetLayout( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &setLayout ) ) ); - return createResultValue( result, setLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorSetLayout" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::DescriptorSetLayout setLayout; - Result result = static_cast( d.vkCreateDescriptorSetLayout( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &setLayout ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, setLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorSetLayoutUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplate( const vk::DescriptorUpdateTemplateCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const &d) const - { - return static_cast( d.vkCreateDescriptorUpdateTemplate( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pDescriptorUpdateTemplate ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createDescriptorUpdateTemplate( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::DescriptorUpdateTemplate descriptorUpdateTemplate; - Result result = static_cast( d.vkCreateDescriptorUpdateTemplate( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &descriptorUpdateTemplate ) ) ); - return createResultValue( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorUpdateTemplate" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createDescriptorUpdateTemplateUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::DescriptorUpdateTemplate descriptorUpdateTemplate; - Result result = static_cast( d.vkCreateDescriptorUpdateTemplate( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &descriptorUpdateTemplate ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorUpdateTemplateUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const vk::DescriptorUpdateTemplateCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const &d) const - { - return static_cast( d.vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pDescriptorUpdateTemplate ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::DescriptorUpdateTemplate descriptorUpdateTemplate; - Result result = static_cast( d.vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &descriptorUpdateTemplate ) ) ); - return createResultValue( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorUpdateTemplateKHR" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::DescriptorUpdateTemplate descriptorUpdateTemplate; - Result result = static_cast( d.vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &descriptorUpdateTemplate ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING"::Device::createDescriptorUpdateTemplateKHRUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createEvent( const vk::EventCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Event* pEvent, Dispatch const &d) const - { - return static_cast( d.vkCreateEvent( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pEvent ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createEvent( const EventCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Event event; - Result result = static_cast( d.vkCreateEvent( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &event ) ) ); - return createResultValue( result, event, VULKAN_HPP_NAMESPACE_STRING"::Device::createEvent" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createEventUnique( const EventCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Event event; - Result result = static_cast( d.vkCreateEvent( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &event ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, event, VULKAN_HPP_NAMESPACE_STRING"::Device::createEventUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createFence( const vk::FenceCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Fence* pFence, Dispatch const &d) const - { - return static_cast( d.vkCreateFence( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pFence ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createFence( const FenceCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Fence fence; - Result result = static_cast( d.vkCreateFence( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &fence ) ) ); - return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING"::Device::createFence" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Fence fence; - Result result = static_cast( d.vkCreateFence( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &fence ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING"::Device::createFenceUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createFramebuffer( const vk::FramebufferCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Framebuffer* pFramebuffer, Dispatch const &d) const - { - return static_cast( d.vkCreateFramebuffer( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pFramebuffer ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Framebuffer framebuffer; - Result result = static_cast( d.vkCreateFramebuffer( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &framebuffer ) ) ); - return createResultValue( result, framebuffer, VULKAN_HPP_NAMESPACE_STRING"::Device::createFramebuffer" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Framebuffer framebuffer; - Result result = static_cast( d.vkCreateFramebuffer( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &framebuffer ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, framebuffer, VULKAN_HPP_NAMESPACE_STRING"::Device::createFramebufferUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( vk::PipelineCache pipelineCache, uint32_t createInfoCount, const vk::GraphicsPipelineCreateInfo* pCreateInfos, const vk::AllocationCallbacks* pAllocator, vk::Pipeline* pPipelines, Dispatch const &d) const - { - return static_cast( d.vkCreateGraphicsPipelines( m_device, static_cast( pipelineCache ), createInfoCount, reinterpret_cast( pCreateInfos ), reinterpret_cast( pAllocator ), reinterpret_cast( pPipelines ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createGraphicsPipelines( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Dispatch const &d ) const - { - std::vector pipelines( createInfos.size() ); - Result result = static_cast( d.vkCreateGraphicsPipelines( m_device, static_cast( pipelineCache ), createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING"::Device::createGraphicsPipelines" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createGraphicsPipelines( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector pipelines( createInfos.size(), vectorAllocator ); - Result result = static_cast( d.vkCreateGraphicsPipelines( m_device, static_cast( pipelineCache ), createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING"::Device::createGraphicsPipelines" ); - } - template - VULKAN_HPP_INLINE ResultValueType::type Device::createGraphicsPipeline( vk::PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - Pipeline pipeline; - Result result = static_cast( d.vkCreateGraphicsPipelines( m_device, static_cast( pipelineCache ), 1 , reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipeline ) ) ); - return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createGraphicsPipeline" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType,Allocator>>::type Device::createGraphicsPipelinesUnique( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Dispatch const &d ) const - { - static_assert( sizeof( Pipeline ) <= sizeof( UniqueHandle ), "Pipeline is greater than UniqueHandle!" ); - std::vector, Allocator> pipelines; - pipelines.reserve( createInfos.size() ); - Pipeline* buffer = reinterpret_cast( reinterpret_cast( pipelines.data() ) + createInfos.size() * ( sizeof( UniqueHandle ) - sizeof( Pipeline ) ) ); - Result result = static_cast(d.vkCreateGraphicsPipelines( m_device, static_cast( pipelineCache ), createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( buffer ) ) ); - if (result == vk::Result::eSuccess) - { - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0 ; i( buffer[i], deleter ) ); - } - } - - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelinesUnique" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType,Allocator>>::type Device::createGraphicsPipelinesUnique( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const - { - static_assert( sizeof( Pipeline ) <= sizeof( UniqueHandle ), "Pipeline is greater than UniqueHandle!" ); - std::vector, Allocator> pipelines( vectorAllocator ); - pipelines.reserve( createInfos.size() ); - Pipeline* buffer = reinterpret_cast( reinterpret_cast( pipelines.data() ) + createInfos.size() * ( sizeof( UniqueHandle ) - sizeof( Pipeline ) ) ); - Result result = static_cast(d.vkCreateGraphicsPipelines( m_device, static_cast( pipelineCache ), createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( buffer ) ) ); - if (result == vk::Result::eSuccess) - { - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0 ; i( buffer[i], deleter ) ); - } - } - - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelinesUnique" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createGraphicsPipelineUnique( vk::PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - Pipeline pipeline; - Result result = static_cast( d.vkCreateGraphicsPipelines( m_device, static_cast( pipelineCache ), 1 , reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipeline ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createGraphicsPipelineUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createImage( const vk::ImageCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Image* pImage, Dispatch const &d) const - { - return static_cast( d.vkCreateImage( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pImage ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createImage( const ImageCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Image image; - Result result = static_cast( d.vkCreateImage( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &image ) ) ); - return createResultValue( result, image, VULKAN_HPP_NAMESPACE_STRING"::Device::createImage" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createImageUnique( const ImageCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Image image; - Result result = static_cast( d.vkCreateImage( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &image ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, image, VULKAN_HPP_NAMESPACE_STRING"::Device::createImageUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createImageView( const vk::ImageViewCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::ImageView* pView, Dispatch const &d) const - { - return static_cast( d.vkCreateImageView( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pView ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::ImageView view; - Result result = static_cast( d.vkCreateImageView( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &view ) ) ); - return createResultValue( result, view, VULKAN_HPP_NAMESPACE_STRING"::Device::createImageView" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::ImageView view; - Result result = static_cast( d.vkCreateImageView( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &view ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, view, VULKAN_HPP_NAMESPACE_STRING"::Device::createImageViewUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const vk::IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::IndirectCommandsLayoutNVX* pIndirectCommandsLayout, Dispatch const &d) const - { - return static_cast( d.vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pIndirectCommandsLayout ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::IndirectCommandsLayoutNVX indirectCommandsLayout; - Result result = static_cast( d.vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &indirectCommandsLayout ) ) ); - return createResultValue( result, indirectCommandsLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createIndirectCommandsLayoutNVX" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::IndirectCommandsLayoutNVX indirectCommandsLayout; - Result result = static_cast( d.vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &indirectCommandsLayout ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, indirectCommandsLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createIndirectCommandsLayoutNVXUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const vk::ObjectTableCreateInfoNVX* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::ObjectTableNVX* pObjectTable, Dispatch const &d) const - { - return static_cast( d.vkCreateObjectTableNVX( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pObjectTable ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::ObjectTableNVX objectTable; - Result result = static_cast( d.vkCreateObjectTableNVX( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &objectTable ) ) ); - return createResultValue( result, objectTable, VULKAN_HPP_NAMESPACE_STRING"::Device::createObjectTableNVX" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::ObjectTableNVX objectTable; - Result result = static_cast( d.vkCreateObjectTableNVX( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &objectTable ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, objectTable, VULKAN_HPP_NAMESPACE_STRING"::Device::createObjectTableNVXUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createPipelineCache( const vk::PipelineCacheCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::PipelineCache* pPipelineCache, Dispatch const &d) const - { - return static_cast( d.vkCreatePipelineCache( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pPipelineCache ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::PipelineCache pipelineCache; - Result result = static_cast( d.vkCreatePipelineCache( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipelineCache ) ) ); - return createResultValue( result, pipelineCache, VULKAN_HPP_NAMESPACE_STRING"::Device::createPipelineCache" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::PipelineCache pipelineCache; - Result result = static_cast( d.vkCreatePipelineCache( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipelineCache ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, pipelineCache, VULKAN_HPP_NAMESPACE_STRING"::Device::createPipelineCacheUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createPipelineLayout( const vk::PipelineLayoutCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::PipelineLayout* pPipelineLayout, Dispatch const &d) const - { - return static_cast( d.vkCreatePipelineLayout( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pPipelineLayout ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::PipelineLayout pipelineLayout; - Result result = static_cast( d.vkCreatePipelineLayout( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipelineLayout ) ) ); - return createResultValue( result, pipelineLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createPipelineLayout" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::PipelineLayout pipelineLayout; - Result result = static_cast( d.vkCreatePipelineLayout( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipelineLayout ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, pipelineLayout, VULKAN_HPP_NAMESPACE_STRING"::Device::createPipelineLayoutUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createQueryPool( const vk::QueryPoolCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::QueryPool* pQueryPool, Dispatch const &d) const - { - return static_cast( d.vkCreateQueryPool( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pQueryPool ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::QueryPool queryPool; - Result result = static_cast( d.vkCreateQueryPool( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &queryPool ) ) ); - return createResultValue( result, queryPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createQueryPool" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::QueryPool queryPool; - Result result = static_cast( d.vkCreateQueryPool( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &queryPool ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, queryPool, VULKAN_HPP_NAMESPACE_STRING"::Device::createQueryPoolUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createRayTracingPipelinesNV( vk::PipelineCache pipelineCache, uint32_t createInfoCount, const vk::RayTracingPipelineCreateInfoNV* pCreateInfos, const vk::AllocationCallbacks* pAllocator, vk::Pipeline* pPipelines, Dispatch const &d) const - { - return static_cast( d.vkCreateRayTracingPipelinesNV( m_device, static_cast( pipelineCache ), createInfoCount, reinterpret_cast( pCreateInfos ), reinterpret_cast( pAllocator ), reinterpret_cast( pPipelines ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createRayTracingPipelinesNV( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Dispatch const &d ) const - { - std::vector pipelines( createInfos.size() ); - Result result = static_cast( d.vkCreateRayTracingPipelinesNV( m_device, static_cast( pipelineCache ), createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING"::Device::createRayTracingPipelinesNV" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createRayTracingPipelinesNV( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector pipelines( createInfos.size(), vectorAllocator ); - Result result = static_cast( d.vkCreateRayTracingPipelinesNV( m_device, static_cast( pipelineCache ), createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING"::Device::createRayTracingPipelinesNV" ); - } - template - VULKAN_HPP_INLINE ResultValueType::type Device::createRayTracingPipelineNV( vk::PipelineCache pipelineCache, const RayTracingPipelineCreateInfoNV & createInfo, Optional allocator, Dispatch const &d ) const - { - Pipeline pipeline; - Result result = static_cast( d.vkCreateRayTracingPipelinesNV( m_device, static_cast( pipelineCache ), 1 , reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipeline ) ) ); - return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createRayTracingPipelineNV" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType,Allocator>>::type Device::createRayTracingPipelinesNVUnique( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Dispatch const &d ) const - { - static_assert( sizeof( Pipeline ) <= sizeof( UniqueHandle ), "Pipeline is greater than UniqueHandle!" ); - std::vector, Allocator> pipelines; - pipelines.reserve( createInfos.size() ); - Pipeline* buffer = reinterpret_cast( reinterpret_cast( pipelines.data() ) + createInfos.size() * ( sizeof( UniqueHandle ) - sizeof( Pipeline ) ) ); - Result result = static_cast(d.vkCreateRayTracingPipelinesNV( m_device, static_cast( pipelineCache ), createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( buffer ) ) ); - if (result == vk::Result::eSuccess) - { - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0 ; i( buffer[i], deleter ) ); - } - } - - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNVUnique" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType,Allocator>>::type Device::createRayTracingPipelinesNVUnique( vk::PipelineCache pipelineCache, ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const - { - static_assert( sizeof( Pipeline ) <= sizeof( UniqueHandle ), "Pipeline is greater than UniqueHandle!" ); - std::vector, Allocator> pipelines( vectorAllocator ); - pipelines.reserve( createInfos.size() ); - Pipeline* buffer = reinterpret_cast( reinterpret_cast( pipelines.data() ) + createInfos.size() * ( sizeof( UniqueHandle ) - sizeof( Pipeline ) ) ); - Result result = static_cast(d.vkCreateRayTracingPipelinesNV( m_device, static_cast( pipelineCache ), createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( buffer ) ) ); - if (result == vk::Result::eSuccess) - { - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0 ; i( buffer[i], deleter ) ); - } - } - - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNVUnique" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createRayTracingPipelineNVUnique( vk::PipelineCache pipelineCache, const RayTracingPipelineCreateInfoNV & createInfo, Optional allocator, Dispatch const &d ) const - { - Pipeline pipeline; - Result result = static_cast( d.vkCreateRayTracingPipelinesNV( m_device, static_cast( pipelineCache ), 1 , reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipeline ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING"::Device::createRayTracingPipelineNVUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createRenderPass( const vk::RenderPassCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::RenderPass* pRenderPass, Dispatch const &d) const - { - return static_cast( d.vkCreateRenderPass( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pRenderPass ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::RenderPass renderPass; - Result result = static_cast( d.vkCreateRenderPass( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &renderPass ) ) ); - return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING"::Device::createRenderPass" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::RenderPass renderPass; - Result result = static_cast( d.vkCreateRenderPass( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &renderPass ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING"::Device::createRenderPassUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createRenderPass2KHR( const vk::RenderPassCreateInfo2KHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::RenderPass* pRenderPass, Dispatch const &d) const - { - return static_cast( d.vkCreateRenderPass2KHR( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pRenderPass ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createRenderPass2KHR( const RenderPassCreateInfo2KHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::RenderPass renderPass; - Result result = static_cast( d.vkCreateRenderPass2KHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &renderPass ) ) ); - return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING"::Device::createRenderPass2KHR" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createRenderPass2KHRUnique( const RenderPassCreateInfo2KHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::RenderPass renderPass; - Result result = static_cast( d.vkCreateRenderPass2KHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &renderPass ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING"::Device::createRenderPass2KHRUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createSampler( const vk::SamplerCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Sampler* pSampler, Dispatch const &d) const - { - return static_cast( d.vkCreateSampler( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSampler ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Sampler sampler; - Result result = static_cast( d.vkCreateSampler( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &sampler ) ) ); - return createResultValue( result, sampler, VULKAN_HPP_NAMESPACE_STRING"::Device::createSampler" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Sampler sampler; - Result result = static_cast( d.vkCreateSampler( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &sampler ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, sampler, VULKAN_HPP_NAMESPACE_STRING"::Device::createSamplerUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createSamplerYcbcrConversion( const vk::SamplerYcbcrConversionCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SamplerYcbcrConversion* pYcbcrConversion, Dispatch const &d) const - { - return static_cast( d.vkCreateSamplerYcbcrConversion( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pYcbcrConversion ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createSamplerYcbcrConversion( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SamplerYcbcrConversion ycbcrConversion; - Result result = static_cast( d.vkCreateSamplerYcbcrConversion( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &ycbcrConversion ) ) ); - return createResultValue( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING"::Device::createSamplerYcbcrConversion" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSamplerYcbcrConversionUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SamplerYcbcrConversion ycbcrConversion; - Result result = static_cast( d.vkCreateSamplerYcbcrConversion( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &ycbcrConversion ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING"::Device::createSamplerYcbcrConversionUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createSamplerYcbcrConversionKHR( const vk::SamplerYcbcrConversionCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SamplerYcbcrConversion* pYcbcrConversion, Dispatch const &d) const - { - return static_cast( d.vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pYcbcrConversion ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SamplerYcbcrConversion ycbcrConversion; - Result result = static_cast( d.vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &ycbcrConversion ) ) ); - return createResultValue( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING"::Device::createSamplerYcbcrConversionKHR" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SamplerYcbcrConversion ycbcrConversion; - Result result = static_cast( d.vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &ycbcrConversion ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING"::Device::createSamplerYcbcrConversionKHRUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createSemaphore( const vk::SemaphoreCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Semaphore* pSemaphore, Dispatch const &d) const - { - return static_cast( d.vkCreateSemaphore( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSemaphore ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Semaphore semaphore; - Result result = static_cast( d.vkCreateSemaphore( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &semaphore ) ) ); - return createResultValue( result, semaphore, VULKAN_HPP_NAMESPACE_STRING"::Device::createSemaphore" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Semaphore semaphore; - Result result = static_cast( d.vkCreateSemaphore( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &semaphore ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, semaphore, VULKAN_HPP_NAMESPACE_STRING"::Device::createSemaphoreUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createShaderModule( const vk::ShaderModuleCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::ShaderModule* pShaderModule, Dispatch const &d) const - { - return static_cast( d.vkCreateShaderModule( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pShaderModule ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::ShaderModule shaderModule; - Result result = static_cast( d.vkCreateShaderModule( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &shaderModule ) ) ); - return createResultValue( result, shaderModule, VULKAN_HPP_NAMESPACE_STRING"::Device::createShaderModule" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::ShaderModule shaderModule; - Result result = static_cast( d.vkCreateShaderModule( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &shaderModule ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, shaderModule, VULKAN_HPP_NAMESPACE_STRING"::Device::createShaderModuleUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const vk::SwapchainCreateInfoKHR* pCreateInfos, const vk::AllocationCallbacks* pAllocator, vk::SwapchainKHR* pSwapchains, Dispatch const &d) const - { - return static_cast( d.vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast( pCreateInfos ), reinterpret_cast( pAllocator ), reinterpret_cast( pSwapchains ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSharedSwapchainsKHR( ArrayProxy createInfos, Optional allocator, Dispatch const &d ) const - { - std::vector swapchains( createInfos.size() ); - Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( swapchains.data() ) ) ); - return createResultValue( result, swapchains, VULKAN_HPP_NAMESPACE_STRING"::Device::createSharedSwapchainsKHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSharedSwapchainsKHR( ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector swapchains( createInfos.size(), vectorAllocator ); - Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( swapchains.data() ) ) ); - return createResultValue( result, swapchains, VULKAN_HPP_NAMESPACE_STRING"::Device::createSharedSwapchainsKHR" ); - } - template - VULKAN_HPP_INLINE ResultValueType::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - SwapchainKHR swapchain; - Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, 1 , reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &swapchain ) ) ); - return createResultValue( result, swapchain, VULKAN_HPP_NAMESPACE_STRING"::Device::createSharedSwapchainKHR" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType,Allocator>>::type Device::createSharedSwapchainsKHRUnique( ArrayProxy createInfos, Optional allocator, Dispatch const &d ) const - { - static_assert( sizeof( SwapchainKHR ) <= sizeof( UniqueHandle ), "SwapchainKHR is greater than UniqueHandle!" ); - std::vector, Allocator> swapchainKHRs; - swapchainKHRs.reserve( createInfos.size() ); - SwapchainKHR* buffer = reinterpret_cast( reinterpret_cast( swapchainKHRs.data() ) + createInfos.size() * ( sizeof( UniqueHandle ) - sizeof( SwapchainKHR ) ) ); - Result result = static_cast(d.vkCreateSharedSwapchainsKHR( m_device, createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( buffer ) ) ); - if (result == vk::Result::eSuccess) - { - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0 ; i( buffer[i], deleter ) ); - } - } - - return createResultValue( result, swapchainKHRs, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHRUnique" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType,Allocator>>::type Device::createSharedSwapchainsKHRUnique( ArrayProxy createInfos, Optional allocator, Allocator const& vectorAllocator, Dispatch const &d ) const - { - static_assert( sizeof( SwapchainKHR ) <= sizeof( UniqueHandle ), "SwapchainKHR is greater than UniqueHandle!" ); - std::vector, Allocator> swapchainKHRs( vectorAllocator ); - swapchainKHRs.reserve( createInfos.size() ); - SwapchainKHR* buffer = reinterpret_cast( reinterpret_cast( swapchainKHRs.data() ) + createInfos.size() * ( sizeof( UniqueHandle ) - sizeof( SwapchainKHR ) ) ); - Result result = static_cast(d.vkCreateSharedSwapchainsKHR( m_device, createInfos.size() , reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( buffer ) ) ); - if (result == vk::Result::eSuccess) - { - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0 ; i( buffer[i], deleter ) ); - } - } - - return createResultValue( result, swapchainKHRs, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHRUnique" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - SwapchainKHR swapchain; - Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, 1 , reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &swapchain ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, swapchain, VULKAN_HPP_NAMESPACE_STRING"::Device::createSharedSwapchainKHRUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const vk::SwapchainCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SwapchainKHR* pSwapchain, Dispatch const &d) const - { - return static_cast( d.vkCreateSwapchainKHR( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSwapchain ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SwapchainKHR swapchain; - Result result = static_cast( d.vkCreateSwapchainKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &swapchain ) ) ); - return createResultValue( result, swapchain, VULKAN_HPP_NAMESPACE_STRING"::Device::createSwapchainKHR" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SwapchainKHR swapchain; - Result result = static_cast( d.vkCreateSwapchainKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &swapchain ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, swapchain, VULKAN_HPP_NAMESPACE_STRING"::Device::createSwapchainKHRUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::createValidationCacheEXT( const vk::ValidationCacheCreateInfoEXT* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::ValidationCacheEXT* pValidationCache, Dispatch const &d) const - { - return static_cast( d.vkCreateValidationCacheEXT( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pValidationCache ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::ValidationCacheEXT validationCache; - Result result = static_cast( d.vkCreateValidationCacheEXT( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &validationCache ) ) ); - return createResultValue( result, validationCache, VULKAN_HPP_NAMESPACE_STRING"::Device::createValidationCacheEXT" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::ValidationCacheEXT validationCache; - Result result = static_cast( d.vkCreateValidationCacheEXT( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &validationCache ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, validationCache, VULKAN_HPP_NAMESPACE_STRING"::Device::createValidationCacheEXTUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( const vk::DebugMarkerObjectNameInfoEXT* pNameInfo, Dispatch const &d) const - { - return static_cast( d.vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast( pNameInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo, Dispatch const &d ) const - { - Result result = static_cast( d.vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast( &nameInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::debugMarkerSetObjectNameEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( const vk::DebugMarkerObjectTagInfoEXT* pTagInfo, Dispatch const &d) const - { - return static_cast( d.vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast( pTagInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo, Dispatch const &d ) const - { - Result result = static_cast( d.vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast( &tagInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::debugMarkerSetObjectTagEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyAccelerationStructureNV( vk::AccelerationStructureNV accelerationStructure, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyAccelerationStructureNV( m_device, static_cast( accelerationStructure ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyAccelerationStructureNV( vk::AccelerationStructureNV accelerationStructure, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyAccelerationStructureNV( m_device, static_cast( accelerationStructure ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::AccelerationStructureNV accelerationStructure, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyAccelerationStructureNV( m_device, static_cast( accelerationStructure ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::AccelerationStructureNV accelerationStructure, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyAccelerationStructureNV( m_device, static_cast( accelerationStructure ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyBuffer( vk::Buffer buffer, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyBuffer( m_device, static_cast( buffer ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyBuffer( vk::Buffer buffer, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyBuffer( m_device, static_cast( buffer ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::Buffer buffer, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyBuffer( m_device, static_cast( buffer ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::Buffer buffer, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyBuffer( m_device, static_cast( buffer ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyBufferView( vk::BufferView bufferView, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyBufferView( m_device, static_cast( bufferView ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyBufferView( vk::BufferView bufferView, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyBufferView( m_device, static_cast( bufferView ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::BufferView bufferView, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyBufferView( m_device, static_cast( bufferView ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::BufferView bufferView, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyBufferView( m_device, static_cast( bufferView ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyCommandPool( vk::CommandPool commandPool, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyCommandPool( m_device, static_cast( commandPool ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyCommandPool( vk::CommandPool commandPool, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyCommandPool( m_device, static_cast( commandPool ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::CommandPool commandPool, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyCommandPool( m_device, static_cast( commandPool ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::CommandPool commandPool, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyCommandPool( m_device, static_cast( commandPool ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyDescriptorPool( vk::DescriptorPool descriptorPool, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyDescriptorPool( m_device, static_cast( descriptorPool ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyDescriptorPool( vk::DescriptorPool descriptorPool, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyDescriptorPool( m_device, static_cast( descriptorPool ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::DescriptorPool descriptorPool, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyDescriptorPool( m_device, static_cast( descriptorPool ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::DescriptorPool descriptorPool, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyDescriptorPool( m_device, static_cast( descriptorPool ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( vk::DescriptorSetLayout descriptorSetLayout, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyDescriptorSetLayout( m_device, static_cast( descriptorSetLayout ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( vk::DescriptorSetLayout descriptorSetLayout, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyDescriptorSetLayout( m_device, static_cast( descriptorSetLayout ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::DescriptorSetLayout descriptorSetLayout, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyDescriptorSetLayout( m_device, static_cast( descriptorSetLayout ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::DescriptorSetLayout descriptorSetLayout, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyDescriptorSetLayout( m_device, static_cast( descriptorSetLayout ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplate( vk::DescriptorUpdateTemplate descriptorUpdateTemplate, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast( descriptorUpdateTemplate ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplate( vk::DescriptorUpdateTemplate descriptorUpdateTemplate, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast( descriptorUpdateTemplate ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::DescriptorUpdateTemplate descriptorUpdateTemplate, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast( descriptorUpdateTemplate ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::DescriptorUpdateTemplate descriptorUpdateTemplate, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast( descriptorUpdateTemplate ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( vk::DescriptorUpdateTemplate descriptorUpdateTemplate, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast( descriptorUpdateTemplate ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( vk::DescriptorUpdateTemplate descriptorUpdateTemplate, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast( descriptorUpdateTemplate ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyDevice( m_device, reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( Optional allocator, Dispatch const &d ) const - { - d.vkDestroyDevice( m_device, reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyEvent( vk::Event event, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyEvent( m_device, static_cast( event ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyEvent( vk::Event event, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyEvent( m_device, static_cast( event ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::Event event, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyEvent( m_device, static_cast( event ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::Event event, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyEvent( m_device, static_cast( event ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyFence( vk::Fence fence, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyFence( m_device, static_cast( fence ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyFence( vk::Fence fence, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyFence( m_device, static_cast( fence ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::Fence fence, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyFence( m_device, static_cast( fence ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::Fence fence, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyFence( m_device, static_cast( fence ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyFramebuffer( vk::Framebuffer framebuffer, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyFramebuffer( m_device, static_cast( framebuffer ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyFramebuffer( vk::Framebuffer framebuffer, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyFramebuffer( m_device, static_cast( framebuffer ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::Framebuffer framebuffer, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyFramebuffer( m_device, static_cast( framebuffer ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::Framebuffer framebuffer, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyFramebuffer( m_device, static_cast( framebuffer ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyImage( vk::Image image, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyImage( m_device, static_cast( image ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyImage( vk::Image image, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyImage( m_device, static_cast( image ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::Image image, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyImage( m_device, static_cast( image ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::Image image, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyImage( m_device, static_cast( image ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyImageView( vk::ImageView imageView, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyImageView( m_device, static_cast( imageView ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyImageView( vk::ImageView imageView, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyImageView( m_device, static_cast( imageView ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::ImageView imageView, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyImageView( m_device, static_cast( imageView ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::ImageView imageView, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyImageView( m_device, static_cast( imageView ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( vk::IndirectCommandsLayoutNVX indirectCommandsLayout, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast( indirectCommandsLayout ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( vk::IndirectCommandsLayoutNVX indirectCommandsLayout, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast( indirectCommandsLayout ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::IndirectCommandsLayoutNVX indirectCommandsLayout, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast( indirectCommandsLayout ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::IndirectCommandsLayoutNVX indirectCommandsLayout, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast( indirectCommandsLayout ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( vk::ObjectTableNVX objectTable, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyObjectTableNVX( m_device, static_cast( objectTable ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( vk::ObjectTableNVX objectTable, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyObjectTableNVX( m_device, static_cast( objectTable ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::ObjectTableNVX objectTable, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyObjectTableNVX( m_device, static_cast( objectTable ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::ObjectTableNVX objectTable, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyObjectTableNVX( m_device, static_cast( objectTable ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyPipeline( vk::Pipeline pipeline, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyPipeline( m_device, static_cast( pipeline ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyPipeline( vk::Pipeline pipeline, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyPipeline( m_device, static_cast( pipeline ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::Pipeline pipeline, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyPipeline( m_device, static_cast( pipeline ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::Pipeline pipeline, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyPipeline( m_device, static_cast( pipeline ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyPipelineCache( vk::PipelineCache pipelineCache, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyPipelineCache( m_device, static_cast( pipelineCache ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyPipelineCache( vk::PipelineCache pipelineCache, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyPipelineCache( m_device, static_cast( pipelineCache ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::PipelineCache pipelineCache, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyPipelineCache( m_device, static_cast( pipelineCache ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::PipelineCache pipelineCache, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyPipelineCache( m_device, static_cast( pipelineCache ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyPipelineLayout( vk::PipelineLayout pipelineLayout, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyPipelineLayout( m_device, static_cast( pipelineLayout ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyPipelineLayout( vk::PipelineLayout pipelineLayout, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyPipelineLayout( m_device, static_cast( pipelineLayout ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::PipelineLayout pipelineLayout, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyPipelineLayout( m_device, static_cast( pipelineLayout ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::PipelineLayout pipelineLayout, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyPipelineLayout( m_device, static_cast( pipelineLayout ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyQueryPool( vk::QueryPool queryPool, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyQueryPool( m_device, static_cast( queryPool ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyQueryPool( vk::QueryPool queryPool, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyQueryPool( m_device, static_cast( queryPool ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::QueryPool queryPool, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyQueryPool( m_device, static_cast( queryPool ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::QueryPool queryPool, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyQueryPool( m_device, static_cast( queryPool ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyRenderPass( vk::RenderPass renderPass, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyRenderPass( m_device, static_cast( renderPass ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyRenderPass( vk::RenderPass renderPass, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyRenderPass( m_device, static_cast( renderPass ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::RenderPass renderPass, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyRenderPass( m_device, static_cast( renderPass ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::RenderPass renderPass, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyRenderPass( m_device, static_cast( renderPass ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroySampler( vk::Sampler sampler, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroySampler( m_device, static_cast( sampler ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroySampler( vk::Sampler sampler, Optional allocator, Dispatch const &d ) const - { - d.vkDestroySampler( m_device, static_cast( sampler ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::Sampler sampler, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroySampler( m_device, static_cast( sampler ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::Sampler sampler, Optional allocator, Dispatch const &d ) const - { - d.vkDestroySampler( m_device, static_cast( sampler ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversion( vk::SamplerYcbcrConversion ycbcrConversion, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroySamplerYcbcrConversion( m_device, static_cast( ycbcrConversion ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversion( vk::SamplerYcbcrConversion ycbcrConversion, Optional allocator, Dispatch const &d ) const - { - d.vkDestroySamplerYcbcrConversion( m_device, static_cast( ycbcrConversion ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::SamplerYcbcrConversion ycbcrConversion, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroySamplerYcbcrConversion( m_device, static_cast( ycbcrConversion ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::SamplerYcbcrConversion ycbcrConversion, Optional allocator, Dispatch const &d ) const - { - d.vkDestroySamplerYcbcrConversion( m_device, static_cast( ycbcrConversion ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( vk::SamplerYcbcrConversion ycbcrConversion, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroySamplerYcbcrConversionKHR( m_device, static_cast( ycbcrConversion ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( vk::SamplerYcbcrConversion ycbcrConversion, Optional allocator, Dispatch const &d ) const - { - d.vkDestroySamplerYcbcrConversionKHR( m_device, static_cast( ycbcrConversion ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroySemaphore( vk::Semaphore semaphore, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroySemaphore( m_device, static_cast( semaphore ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroySemaphore( vk::Semaphore semaphore, Optional allocator, Dispatch const &d ) const - { - d.vkDestroySemaphore( m_device, static_cast( semaphore ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::Semaphore semaphore, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroySemaphore( m_device, static_cast( semaphore ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::Semaphore semaphore, Optional allocator, Dispatch const &d ) const - { - d.vkDestroySemaphore( m_device, static_cast( semaphore ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyShaderModule( vk::ShaderModule shaderModule, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyShaderModule( m_device, static_cast( shaderModule ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyShaderModule( vk::ShaderModule shaderModule, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyShaderModule( m_device, static_cast( shaderModule ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::ShaderModule shaderModule, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyShaderModule( m_device, static_cast( shaderModule ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::ShaderModule shaderModule, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyShaderModule( m_device, static_cast( shaderModule ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroySwapchainKHR( vk::SwapchainKHR swapchain, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroySwapchainKHR( m_device, static_cast( swapchain ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroySwapchainKHR( vk::SwapchainKHR swapchain, Optional allocator, Dispatch const &d ) const - { - d.vkDestroySwapchainKHR( m_device, static_cast( swapchain ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::SwapchainKHR swapchain, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroySwapchainKHR( m_device, static_cast( swapchain ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::SwapchainKHR swapchain, Optional allocator, Dispatch const &d ) const - { - d.vkDestroySwapchainKHR( m_device, static_cast( swapchain ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( vk::ValidationCacheEXT validationCache, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyValidationCacheEXT( m_device, static_cast( validationCache ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( vk::ValidationCacheEXT validationCache, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyValidationCacheEXT( m_device, static_cast( validationCache ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroy( vk::ValidationCacheEXT validationCache, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyValidationCacheEXT( m_device, static_cast( validationCache ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( vk::ValidationCacheEXT validationCache, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyValidationCacheEXT( m_device, static_cast( validationCache ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::waitIdle(Dispatch const &d) const - { - return static_cast( d.vkDeviceWaitIdle( m_device ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type Device::waitIdle(Dispatch const &d ) const - { - Result result = static_cast( d.vkDeviceWaitIdle( m_device ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::waitIdle" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( vk::DisplayKHR display, const vk::DisplayPowerInfoEXT* pDisplayPowerInfo, Dispatch const &d) const - { - return static_cast( d.vkDisplayPowerControlEXT( m_device, static_cast( display ), reinterpret_cast( pDisplayPowerInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::displayPowerControlEXT( vk::DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo, Dispatch const &d ) const - { - Result result = static_cast( d.vkDisplayPowerControlEXT( m_device, static_cast( display ), reinterpret_cast( &displayPowerInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::displayPowerControlEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const vk::MappedMemoryRange* pMemoryRanges, Dispatch const &d) const - { - return static_cast( d.vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast( pMemoryRanges ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::flushMappedMemoryRanges( ArrayProxy memoryRanges, Dispatch const &d ) const - { - Result result = static_cast( d.vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast( memoryRanges.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::flushMappedMemoryRanges" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::freeCommandBuffers( vk::CommandPool commandPool, uint32_t commandBufferCount, const vk::CommandBuffer* pCommandBuffers, Dispatch const &d) const - { - d.vkFreeCommandBuffers( m_device, static_cast( commandPool ), commandBufferCount, reinterpret_cast( pCommandBuffers ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::freeCommandBuffers( vk::CommandPool commandPool, ArrayProxy commandBuffers, Dispatch const &d ) const - { - d.vkFreeCommandBuffers( m_device, static_cast( commandPool ), commandBuffers.size() , reinterpret_cast( commandBuffers.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::free( vk::CommandPool commandPool, uint32_t commandBufferCount, const vk::CommandBuffer* pCommandBuffers, Dispatch const &d) const - { - d.vkFreeCommandBuffers( m_device, static_cast( commandPool ), commandBufferCount, reinterpret_cast( pCommandBuffers ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::free( vk::CommandPool commandPool, ArrayProxy commandBuffers, Dispatch const &d ) const - { - d.vkFreeCommandBuffers( m_device, static_cast( commandPool ), commandBuffers.size() , reinterpret_cast( commandBuffers.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::freeDescriptorSets( vk::DescriptorPool descriptorPool, uint32_t descriptorSetCount, const vk::DescriptorSet* pDescriptorSets, Dispatch const &d) const - { - return static_cast( d.vkFreeDescriptorSets( m_device, static_cast( descriptorPool ), descriptorSetCount, reinterpret_cast( pDescriptorSets ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::freeDescriptorSets( vk::DescriptorPool descriptorPool, ArrayProxy descriptorSets, Dispatch const &d ) const - { - Result result = static_cast( d.vkFreeDescriptorSets( m_device, static_cast( descriptorPool ), descriptorSets.size() , reinterpret_cast( descriptorSets.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::freeDescriptorSets" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::free( vk::DescriptorPool descriptorPool, uint32_t descriptorSetCount, const vk::DescriptorSet* pDescriptorSets, Dispatch const &d) const - { - return static_cast( d.vkFreeDescriptorSets( m_device, static_cast( descriptorPool ), descriptorSetCount, reinterpret_cast( pDescriptorSets ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::free( vk::DescriptorPool descriptorPool, ArrayProxy descriptorSets, Dispatch const &d ) const - { - Result result = static_cast( d.vkFreeDescriptorSets( m_device, static_cast( descriptorPool ), descriptorSets.size() , reinterpret_cast( descriptorSets.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::free" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::freeMemory( vk::DeviceMemory memory, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkFreeMemory( m_device, static_cast( memory ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::freeMemory( vk::DeviceMemory memory, Optional allocator, Dispatch const &d ) const - { - d.vkFreeMemory( m_device, static_cast( memory ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::free( vk::DeviceMemory memory, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkFreeMemory( m_device, static_cast( memory ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::free( vk::DeviceMemory memory, Optional allocator, Dispatch const &d ) const - { - d.vkFreeMemory( m_device, static_cast( memory ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getAccelerationStructureHandleNV( vk::AccelerationStructureNV accelerationStructure, size_t dataSize, void* pData, Dispatch const &d) const - { - return static_cast( d.vkGetAccelerationStructureHandleNV( m_device, static_cast( accelerationStructure ), dataSize, pData ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getAccelerationStructureHandleNV( vk::AccelerationStructureNV accelerationStructure, ArrayProxy data, Dispatch const &d ) const - { - Result result = static_cast( d.vkGetAccelerationStructureHandleNV( m_device, static_cast( accelerationStructure ), data.size() * sizeof( T ) , reinterpret_cast( data.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getAccelerationStructureHandleNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getAccelerationStructureMemoryRequirementsNV( const vk::AccelerationStructureMemoryRequirementsInfoNV* pInfo, vk::MemoryRequirements2KHR* pMemoryRequirements, Dispatch const &d) const - { - d.vkGetAccelerationStructureMemoryRequirementsNV( m_device, reinterpret_cast( pInfo ), reinterpret_cast( pMemoryRequirements ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::MemoryRequirements2KHR Device::getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV & info, Dispatch const &d ) const - { - vk::MemoryRequirements2KHR memoryRequirements; - d.vkGetAccelerationStructureMemoryRequirementsNV( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return memoryRequirements; - } - template - VULKAN_HPP_INLINE StructureChain Device::getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV & info, Dispatch const &d ) const - { - StructureChain structureChain; - vk::MemoryRequirements2KHR& memoryRequirements = structureChain.template get(); - d.vkGetAccelerationStructureMemoryRequirementsNV( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template - VULKAN_HPP_INLINE Result Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer* buffer, vk::AndroidHardwareBufferPropertiesANDROID* pProperties, Dispatch const &d) const - { - return static_cast( d.vkGetAndroidHardwareBufferPropertiesANDROID( m_device, buffer, reinterpret_cast( pProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const &d ) const - { - vk::AndroidHardwareBufferPropertiesANDROID properties; - Result result = static_cast( d.vkGetAndroidHardwareBufferPropertiesANDROID( m_device, buffer, reinterpret_cast( &properties ) ) ); - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::Device::getAndroidHardwareBufferPropertiesANDROID" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const &d ) const - { - StructureChain structureChain; - vk::AndroidHardwareBufferPropertiesANDROID& properties = structureChain.template get(); - Result result = static_cast( d.vkGetAndroidHardwareBufferPropertiesANDROID( m_device, buffer, reinterpret_cast( &properties ) ) ); - return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::Device::getAndroidHardwareBufferPropertiesANDROID" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - template - VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressEXT( const vk::BufferDeviceAddressInfoEXT* pInfo, Dispatch const &d) const - { - return static_cast( d.vkGetBufferDeviceAddressEXT( m_device, reinterpret_cast( pInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressEXT( const BufferDeviceAddressInfoEXT & info, Dispatch const &d ) const - { - return d.vkGetBufferDeviceAddressEXT( m_device, reinterpret_cast( &info ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( vk::Buffer buffer, vk::MemoryRequirements* pMemoryRequirements, Dispatch const &d) const - { - d.vkGetBufferMemoryRequirements( m_device, static_cast( buffer ), reinterpret_cast( pMemoryRequirements ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::MemoryRequirements Device::getBufferMemoryRequirements( vk::Buffer buffer, Dispatch const &d ) const - { - vk::MemoryRequirements memoryRequirements; - d.vkGetBufferMemoryRequirements( m_device, static_cast( buffer ), reinterpret_cast( &memoryRequirements ) ); - return memoryRequirements; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2( const vk::BufferMemoryRequirementsInfo2* pInfo, vk::MemoryRequirements2* pMemoryRequirements, Dispatch const &d) const - { - d.vkGetBufferMemoryRequirements2( m_device, reinterpret_cast( pInfo ), reinterpret_cast( pMemoryRequirements ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::MemoryRequirements2 Device::getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d ) const - { - vk::MemoryRequirements2 memoryRequirements; - d.vkGetBufferMemoryRequirements2( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return memoryRequirements; - } - template - VULKAN_HPP_INLINE StructureChain Device::getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d ) const - { - StructureChain structureChain; - vk::MemoryRequirements2& memoryRequirements = structureChain.template get(); - d.vkGetBufferMemoryRequirements2( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2KHR( const vk::BufferMemoryRequirementsInfo2* pInfo, vk::MemoryRequirements2* pMemoryRequirements, Dispatch const &d) const - { - d.vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast( pInfo ), reinterpret_cast( pMemoryRequirements ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::MemoryRequirements2 Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d ) const - { - vk::MemoryRequirements2 memoryRequirements; - d.vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return memoryRequirements; - } - template - VULKAN_HPP_INLINE StructureChain Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const &d ) const - { - StructureChain structureChain; - vk::MemoryRequirements2& memoryRequirements = structureChain.template get(); - d.vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getCalibratedTimestampsEXT( uint32_t timestampCount, const vk::CalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation, Dispatch const &d) const - { - return static_cast( d.vkGetCalibratedTimestampsEXT( m_device, timestampCount, reinterpret_cast( pTimestampInfos ), pTimestamps, pMaxDeviation ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getCalibratedTimestampsEXT( ArrayProxy timestampInfos, ArrayProxy timestamps, Dispatch const &d ) const - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - VULKAN_HPP_ASSERT( timestampInfos.size() == timestamps.size() ); -#else - if ( timestampInfos.size() != timestamps.size() ) - { - throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::VkDevice::getCalibratedTimestampsEXT: timestampInfos.size() != timestamps.size()" ); - } -#endif /*VULKAN_HPP_NO_EXCEPTIONS*/ - uint64_t maxDeviation; - Result result = static_cast( d.vkGetCalibratedTimestampsEXT( m_device, timestampInfos.size() , reinterpret_cast( timestampInfos.data() ), timestamps.data(), &maxDeviation ) ); - return createResultValue( result, maxDeviation, VULKAN_HPP_NAMESPACE_STRING"::Device::getCalibratedTimestampsEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getDescriptorSetLayoutSupport( const vk::DescriptorSetLayoutCreateInfo* pCreateInfo, vk::DescriptorSetLayoutSupport* pSupport, Dispatch const &d) const - { - d.vkGetDescriptorSetLayoutSupport( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pSupport ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::DescriptorSetLayoutSupport Device::getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d ) const - { - vk::DescriptorSetLayoutSupport support; - d.vkGetDescriptorSetLayoutSupport( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( &support ) ); - return support; - } - template - VULKAN_HPP_INLINE StructureChain Device::getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d ) const - { - StructureChain structureChain; - vk::DescriptorSetLayoutSupport& support = structureChain.template get(); - d.vkGetDescriptorSetLayoutSupport( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( &support ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getDescriptorSetLayoutSupportKHR( const vk::DescriptorSetLayoutCreateInfo* pCreateInfo, vk::DescriptorSetLayoutSupport* pSupport, Dispatch const &d) const - { - d.vkGetDescriptorSetLayoutSupportKHR( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pSupport ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::DescriptorSetLayoutSupport Device::getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d ) const - { - vk::DescriptorSetLayoutSupport support; - d.vkGetDescriptorSetLayoutSupportKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( &support ) ); - return support; - } - template - VULKAN_HPP_INLINE StructureChain Device::getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const &d ) const - { - StructureChain structureChain; - vk::DescriptorSetLayoutSupport& support = structureChain.template get(); - d.vkGetDescriptorSetLayoutSupportKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( &support ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, vk::PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const &d) const - { - d.vkGetDeviceGroupPeerMemoryFeatures( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast( pPeerMemoryFeatures ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::PeerMemoryFeatureFlags Device::getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const &d ) const - { - vk::PeerMemoryFeatureFlags peerMemoryFeatures; - d.vkGetDeviceGroupPeerMemoryFeatures( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast( &peerMemoryFeatures ) ); - return peerMemoryFeatures; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, vk::PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const &d) const - { - d.vkGetDeviceGroupPeerMemoryFeaturesKHR( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast( pPeerMemoryFeatures ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::PeerMemoryFeatureFlags Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const &d ) const - { - vk::PeerMemoryFeatureFlags peerMemoryFeatures; - d.vkGetDeviceGroupPeerMemoryFeaturesKHR( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast( &peerMemoryFeatures ) ); - return peerMemoryFeatures; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHR( vk::DeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities, Dispatch const &d) const - { - return static_cast( d.vkGetDeviceGroupPresentCapabilitiesKHR( m_device, reinterpret_cast( pDeviceGroupPresentCapabilities ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getGroupPresentCapabilitiesKHR(Dispatch const &d ) const - { - vk::DeviceGroupPresentCapabilitiesKHR deviceGroupPresentCapabilities; - Result result = static_cast( d.vkGetDeviceGroupPresentCapabilitiesKHR( m_device, reinterpret_cast( &deviceGroupPresentCapabilities ) ) ); - return createResultValue( result, deviceGroupPresentCapabilities, VULKAN_HPP_NAMESPACE_STRING"::Device::getGroupPresentCapabilitiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModes2EXT( const vk::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, vk::DeviceGroupPresentModeFlagsKHR* pModes, Dispatch const &d) const - { - return static_cast( d.vkGetDeviceGroupSurfacePresentModes2EXT( m_device, reinterpret_cast( pSurfaceInfo ), reinterpret_cast( pModes ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getGroupSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d ) const - { - vk::DeviceGroupPresentModeFlagsKHR modes; - Result result = static_cast( d.vkGetDeviceGroupSurfacePresentModes2EXT( m_device, reinterpret_cast( &surfaceInfo ), reinterpret_cast( &modes ) ) ); - return createResultValue( result, modes, VULKAN_HPP_NAMESPACE_STRING"::Device::getGroupSurfacePresentModes2EXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - template - VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHR( vk::SurfaceKHR surface, vk::DeviceGroupPresentModeFlagsKHR* pModes, Dispatch const &d) const - { - return static_cast( d.vkGetDeviceGroupSurfacePresentModesKHR( m_device, static_cast( surface ), reinterpret_cast( pModes ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getGroupSurfacePresentModesKHR( vk::SurfaceKHR surface, Dispatch const &d ) const - { - vk::DeviceGroupPresentModeFlagsKHR modes; - Result result = static_cast( d.vkGetDeviceGroupSurfacePresentModesKHR( m_device, static_cast( surface ), reinterpret_cast( &modes ) ) ); - return createResultValue( result, modes, VULKAN_HPP_NAMESPACE_STRING"::Device::getGroupSurfacePresentModesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getMemoryCommitment( vk::DeviceMemory memory, vk::DeviceSize* pCommittedMemoryInBytes, Dispatch const &d) const - { - d.vkGetDeviceMemoryCommitment( m_device, static_cast( memory ), reinterpret_cast( pCommittedMemoryInBytes ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::DeviceSize Device::getMemoryCommitment( vk::DeviceMemory memory, Dispatch const &d ) const - { - vk::DeviceSize committedMemoryInBytes; - d.vkGetDeviceMemoryCommitment( m_device, static_cast( memory ), reinterpret_cast( &committedMemoryInBytes ) ); - return committedMemoryInBytes; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName, Dispatch const &d) const - { - return d.vkGetDeviceProcAddr( m_device, pName ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name, Dispatch const &d ) const - { - return d.vkGetDeviceProcAddr( m_device, name.c_str() ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, vk::Queue* pQueue, Dispatch const &d) const - { - d.vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast( pQueue ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Dispatch const &d ) const - { - vk::Queue queue; - d.vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast( &queue ) ); - return queue; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getQueue2( const vk::DeviceQueueInfo2* pQueueInfo, vk::Queue* pQueue, Dispatch const &d) const - { - d.vkGetDeviceQueue2( m_device, reinterpret_cast( pQueueInfo ), reinterpret_cast( pQueue ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::Queue Device::getQueue2( const DeviceQueueInfo2 & queueInfo, Dispatch const &d ) const - { - vk::Queue queue; - d.vkGetDeviceQueue2( m_device, reinterpret_cast( &queueInfo ), reinterpret_cast( &queue ) ); - return queue; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::getEventStatus( vk::Event event, Dispatch const &d) const - { - return static_cast( d.vkGetEventStatus( m_device, static_cast( event ) ) ); - } -#else - template - VULKAN_HPP_INLINE Result Device::getEventStatus( vk::Event event, Dispatch const &d ) const - { - Result result = static_cast( d.vkGetEventStatus( m_device, static_cast( event ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getFenceFdKHR( const vk::FenceGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d) const - { - return static_cast( d.vkGetFenceFdKHR( m_device, reinterpret_cast( pGetFdInfo ), pFd ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo, Dispatch const &d ) const - { - int fd; - Result result = static_cast( d.vkGetFenceFdKHR( m_device, reinterpret_cast( &getFdInfo ), &fd ) ); - return createResultValue( result, fd, VULKAN_HPP_NAMESPACE_STRING"::Device::getFenceFdKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::getFenceStatus( vk::Fence fence, Dispatch const &d) const - { - return static_cast( d.vkGetFenceStatus( m_device, static_cast( fence ) ) ); - } -#else - template - VULKAN_HPP_INLINE Result Device::getFenceStatus( vk::Fence fence, Dispatch const &d ) const - { - Result result = static_cast( d.vkGetFenceStatus( m_device, static_cast( fence ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_INLINE Result Device::getFenceWin32HandleKHR( const vk::FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d) const - { - return static_cast( d.vkGetFenceWin32HandleKHR( m_device, reinterpret_cast( pGetWin32HandleInfo ), pHandle ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d ) const - { - HANDLE handle; - Result result = static_cast( d.vkGetFenceWin32HandleKHR( m_device, reinterpret_cast( &getWin32HandleInfo ), &handle ) ); - return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING"::Device::getFenceWin32HandleKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - template - VULKAN_HPP_INLINE Result Device::getImageDrmFormatModifierPropertiesEXT( vk::Image image, vk::ImageDrmFormatModifierPropertiesEXT* pProperties, Dispatch const &d) const - { - return static_cast( d.vkGetImageDrmFormatModifierPropertiesEXT( m_device, static_cast( image ), reinterpret_cast( pProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getImageDrmFormatModifierPropertiesEXT( vk::Image image, Dispatch const &d ) const - { - vk::ImageDrmFormatModifierPropertiesEXT properties; - Result result = static_cast( d.vkGetImageDrmFormatModifierPropertiesEXT( m_device, static_cast( image ), reinterpret_cast( &properties ) ) ); - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::Device::getImageDrmFormatModifierPropertiesEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( vk::Image image, vk::MemoryRequirements* pMemoryRequirements, Dispatch const &d) const - { - d.vkGetImageMemoryRequirements( m_device, static_cast( image ), reinterpret_cast( pMemoryRequirements ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::MemoryRequirements Device::getImageMemoryRequirements( vk::Image image, Dispatch const &d ) const - { - vk::MemoryRequirements memoryRequirements; - d.vkGetImageMemoryRequirements( m_device, static_cast( image ), reinterpret_cast( &memoryRequirements ) ); - return memoryRequirements; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2( const vk::ImageMemoryRequirementsInfo2* pInfo, vk::MemoryRequirements2* pMemoryRequirements, Dispatch const &d) const - { - d.vkGetImageMemoryRequirements2( m_device, reinterpret_cast( pInfo ), reinterpret_cast( pMemoryRequirements ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::MemoryRequirements2 Device::getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d ) const - { - vk::MemoryRequirements2 memoryRequirements; - d.vkGetImageMemoryRequirements2( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return memoryRequirements; - } - template - VULKAN_HPP_INLINE StructureChain Device::getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d ) const - { - StructureChain structureChain; - vk::MemoryRequirements2& memoryRequirements = structureChain.template get(); - d.vkGetImageMemoryRequirements2( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2KHR( const vk::ImageMemoryRequirementsInfo2* pInfo, vk::MemoryRequirements2* pMemoryRequirements, Dispatch const &d) const - { - d.vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast( pInfo ), reinterpret_cast( pMemoryRequirements ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::MemoryRequirements2 Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d ) const - { - vk::MemoryRequirements2 memoryRequirements; - d.vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return memoryRequirements; - } - template - VULKAN_HPP_INLINE StructureChain Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const &d ) const - { - StructureChain structureChain; - vk::MemoryRequirements2& memoryRequirements = structureChain.template get(); - d.vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( vk::Image image, uint32_t* pSparseMemoryRequirementCount, vk::SparseImageMemoryRequirements* pSparseMemoryRequirements, Dispatch const &d) const - { - d.vkGetImageSparseMemoryRequirements( m_device, static_cast( image ), pSparseMemoryRequirementCount, reinterpret_cast( pSparseMemoryRequirements ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE std::vector Device::getImageSparseMemoryRequirements( vk::Image image, Dispatch const &d ) const - { - std::vector sparseMemoryRequirements; - uint32_t sparseMemoryRequirementCount; - d.vkGetImageSparseMemoryRequirements( m_device, static_cast( image ), &sparseMemoryRequirementCount, nullptr ); - sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); - d.vkGetImageSparseMemoryRequirements( m_device, static_cast( image ), &sparseMemoryRequirementCount, reinterpret_cast( sparseMemoryRequirements.data() ) ); - return sparseMemoryRequirements; - } - template - VULKAN_HPP_INLINE std::vector Device::getImageSparseMemoryRequirements( vk::Image image, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector sparseMemoryRequirements( vectorAllocator ); - uint32_t sparseMemoryRequirementCount; - d.vkGetImageSparseMemoryRequirements( m_device, static_cast( image ), &sparseMemoryRequirementCount, nullptr ); - sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); - d.vkGetImageSparseMemoryRequirements( m_device, static_cast( image ), &sparseMemoryRequirementCount, reinterpret_cast( sparseMemoryRequirements.data() ) ); - return sparseMemoryRequirements; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2( const vk::ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, vk::SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const &d) const - { - d.vkGetImageSparseMemoryRequirements2( m_device, reinterpret_cast( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast( pSparseMemoryRequirements ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE std::vector Device::getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const &d ) const - { - std::vector sparseMemoryRequirements; - uint32_t sparseMemoryRequirementCount; - d.vkGetImageSparseMemoryRequirements2( m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); - sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); - d.vkGetImageSparseMemoryRequirements2( m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, reinterpret_cast( sparseMemoryRequirements.data() ) ); - return sparseMemoryRequirements; - } - template - VULKAN_HPP_INLINE std::vector Device::getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector sparseMemoryRequirements( vectorAllocator ); - uint32_t sparseMemoryRequirementCount; - d.vkGetImageSparseMemoryRequirements2( m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); - sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); - d.vkGetImageSparseMemoryRequirements2( m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, reinterpret_cast( sparseMemoryRequirements.data() ) ); - return sparseMemoryRequirements; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2KHR( const vk::ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, vk::SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const &d) const - { - d.vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast( pSparseMemoryRequirements ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE std::vector Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const &d ) const - { - std::vector sparseMemoryRequirements; - uint32_t sparseMemoryRequirementCount; - d.vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); - sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); - d.vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, reinterpret_cast( sparseMemoryRequirements.data() ) ); - return sparseMemoryRequirements; - } - template - VULKAN_HPP_INLINE std::vector Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector sparseMemoryRequirements( vectorAllocator ); - uint32_t sparseMemoryRequirementCount; - d.vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); - sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); - d.vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, reinterpret_cast( sparseMemoryRequirements.data() ) ); - return sparseMemoryRequirements; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( vk::Image image, const vk::ImageSubresource* pSubresource, vk::SubresourceLayout* pLayout, Dispatch const &d) const - { - d.vkGetImageSubresourceLayout( m_device, static_cast( image ), reinterpret_cast( pSubresource ), reinterpret_cast( pLayout ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::SubresourceLayout Device::getImageSubresourceLayout( vk::Image image, const ImageSubresource & subresource, Dispatch const &d ) const - { - vk::SubresourceLayout layout; - d.vkGetImageSubresourceLayout( m_device, static_cast( image ), reinterpret_cast( &subresource ), reinterpret_cast( &layout ) ); - return layout; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE uint32_t Device::getImageViewHandleNVX( const vk::ImageViewHandleInfoNVX* pInfo, Dispatch const &d) const - { - return d.vkGetImageViewHandleNVX( m_device, reinterpret_cast( pInfo ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE uint32_t Device::getImageViewHandleNVX( const ImageViewHandleInfoNVX & info, Dispatch const &d ) const - { - return d.vkGetImageViewHandleNVX( m_device, reinterpret_cast( &info ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template - VULKAN_HPP_INLINE Result Device::getMemoryAndroidHardwareBufferANDROID( const vk::MemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer, Dispatch const &d) const - { - return static_cast( d.vkGetMemoryAndroidHardwareBufferANDROID( m_device, reinterpret_cast( pInfo ), pBuffer ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID & info, Dispatch const &d ) const - { - struct AHardwareBuffer* buffer; - Result result = static_cast( d.vkGetMemoryAndroidHardwareBufferANDROID( m_device, reinterpret_cast( &info ), &buffer ) ); - return createResultValue( result, buffer, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryAndroidHardwareBufferANDROID" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - template - VULKAN_HPP_INLINE Result Device::getMemoryFdKHR( const vk::MemoryGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d) const - { - return static_cast( d.vkGetMemoryFdKHR( m_device, reinterpret_cast( pGetFdInfo ), pFd ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo, Dispatch const &d ) const - { - int fd; - Result result = static_cast( d.vkGetMemoryFdKHR( m_device, reinterpret_cast( &getFdInfo ), &fd ) ); - return createResultValue( result, fd, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryFdKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHR( vk::ExternalMemoryHandleTypeFlagBits handleType, int fd, vk::MemoryFdPropertiesKHR* pMemoryFdProperties, Dispatch const &d) const - { - return static_cast( d.vkGetMemoryFdPropertiesKHR( m_device, static_cast( handleType ), fd, reinterpret_cast( pMemoryFdProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getMemoryFdPropertiesKHR( vk::ExternalMemoryHandleTypeFlagBits handleType, int fd, Dispatch const &d ) const - { - vk::MemoryFdPropertiesKHR memoryFdProperties; - Result result = static_cast( d.vkGetMemoryFdPropertiesKHR( m_device, static_cast( handleType ), fd, reinterpret_cast( &memoryFdProperties ) ) ); - return createResultValue( result, memoryFdProperties, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryFdPropertiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getMemoryHostPointerPropertiesEXT( vk::ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, vk::MemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties, Dispatch const &d) const - { - return static_cast( d.vkGetMemoryHostPointerPropertiesEXT( m_device, static_cast( handleType ), pHostPointer, reinterpret_cast( pMemoryHostPointerProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getMemoryHostPointerPropertiesEXT( vk::ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, Dispatch const &d ) const - { - vk::MemoryHostPointerPropertiesEXT memoryHostPointerProperties; - Result result = static_cast( d.vkGetMemoryHostPointerPropertiesEXT( m_device, static_cast( handleType ), pHostPointer, reinterpret_cast( &memoryHostPointerProperties ) ) ); - return createResultValue( result, memoryHostPointerProperties, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryHostPointerPropertiesEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHR( const vk::MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d) const - { - return static_cast( d.vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast( pGetWin32HandleInfo ), pHandle ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d ) const - { - HANDLE handle; - Result result = static_cast( d.vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast( &getWin32HandleInfo ), &handle ) ); - return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryWin32HandleKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( vk::DeviceMemory memory, vk::ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle, Dispatch const &d) const - { - return static_cast( d.vkGetMemoryWin32HandleNV( m_device, static_cast( memory ), static_cast( handleType ), pHandle ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getMemoryWin32HandleNV( vk::DeviceMemory memory, vk::ExternalMemoryHandleTypeFlagsNV handleType, Dispatch const &d ) const - { - HANDLE handle; - Result result = static_cast( d.vkGetMemoryWin32HandleNV( m_device, static_cast( memory ), static_cast( handleType ), &handle ) ); - return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryWin32HandleNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHR( vk::ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, vk::MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties, Dispatch const &d) const - { - return static_cast( d.vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast( handleType ), handle, reinterpret_cast( pMemoryWin32HandleProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getMemoryWin32HandlePropertiesKHR( vk::ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, Dispatch const &d ) const - { - vk::MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties; - Result result = static_cast( d.vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast( handleType ), handle, reinterpret_cast( &memoryWin32HandleProperties ) ) ); - return createResultValue( result, memoryWin32HandleProperties, VULKAN_HPP_NAMESPACE_STRING"::Device::getMemoryWin32HandlePropertiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - template - VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( vk::SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, vk::PastPresentationTimingGOOGLE* pPresentationTimings, Dispatch const &d) const - { - return static_cast( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast( swapchain ), pPresentationTimingCount, reinterpret_cast( pPresentationTimings ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPastPresentationTimingGOOGLE( vk::SwapchainKHR swapchain, Dispatch const &d ) const - { - std::vector presentationTimings; - uint32_t presentationTimingCount; - Result result; - do - { - result = static_cast( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast( swapchain ), &presentationTimingCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && presentationTimingCount ) - { - presentationTimings.resize( presentationTimingCount ); - result = static_cast( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast( swapchain ), &presentationTimingCount, reinterpret_cast( presentationTimings.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() ); - presentationTimings.resize( presentationTimingCount ); - } - return createResultValue( result, presentationTimings, VULKAN_HPP_NAMESPACE_STRING"::Device::getPastPresentationTimingGOOGLE" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPastPresentationTimingGOOGLE( vk::SwapchainKHR swapchain, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector presentationTimings( vectorAllocator ); - uint32_t presentationTimingCount; - Result result; - do - { - result = static_cast( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast( swapchain ), &presentationTimingCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && presentationTimingCount ) - { - presentationTimings.resize( presentationTimingCount ); - result = static_cast( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast( swapchain ), &presentationTimingCount, reinterpret_cast( presentationTimings.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() ); - presentationTimings.resize( presentationTimingCount ); - } - return createResultValue( result, presentationTimings, VULKAN_HPP_NAMESPACE_STRING"::Device::getPastPresentationTimingGOOGLE" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getPerformanceParameterINTEL( vk::PerformanceParameterTypeINTEL parameter, vk::PerformanceValueINTEL* pValue, Dispatch const &d) const - { - return static_cast( d.vkGetPerformanceParameterINTEL( m_device, static_cast( parameter ), reinterpret_cast( pValue ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getPerformanceParameterINTEL( vk::PerformanceParameterTypeINTEL parameter, Dispatch const &d ) const - { - vk::PerformanceValueINTEL value; - Result result = static_cast( d.vkGetPerformanceParameterINTEL( m_device, static_cast( parameter ), reinterpret_cast( &value ) ) ); - return createResultValue( result, value, VULKAN_HPP_NAMESPACE_STRING"::Device::getPerformanceParameterINTEL" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getPipelineCacheData( vk::PipelineCache pipelineCache, size_t* pDataSize, void* pData, Dispatch const &d) const - { - return static_cast( d.vkGetPipelineCacheData( m_device, static_cast( pipelineCache ), pDataSize, pData ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineCacheData( vk::PipelineCache pipelineCache, Dispatch const &d ) const - { - std::vector data; - size_t dataSize; - Result result; - do - { - result = static_cast( d.vkGetPipelineCacheData( m_device, static_cast( pipelineCache ), &dataSize, nullptr ) ); - if ( ( result == Result::eSuccess ) && dataSize ) - { - data.resize( dataSize ); - result = static_cast( d.vkGetPipelineCacheData( m_device, static_cast( pipelineCache ), &dataSize, reinterpret_cast( data.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( dataSize <= data.size() ); - data.resize( dataSize ); - } - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineCacheData" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineCacheData( vk::PipelineCache pipelineCache, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector data( vectorAllocator ); - size_t dataSize; - Result result; - do - { - result = static_cast( d.vkGetPipelineCacheData( m_device, static_cast( pipelineCache ), &dataSize, nullptr ) ); - if ( ( result == Result::eSuccess ) && dataSize ) - { - data.resize( dataSize ); - result = static_cast( d.vkGetPipelineCacheData( m_device, static_cast( pipelineCache ), &dataSize, reinterpret_cast( data.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( dataSize <= data.size() ); - data.resize( dataSize ); - } - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineCacheData" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getPipelineExecutableInternalRepresentationsKHR( const vk::PipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, vk::PipelineExecutableInternalRepresentationKHR* pInternalRepresentations, Dispatch const &d) const - { - return static_cast( d.vkGetPipelineExecutableInternalRepresentationsKHR( m_device, reinterpret_cast( pExecutableInfo ), pInternalRepresentationCount, reinterpret_cast( pInternalRepresentations ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineExecutableInternalRepresentationsKHR( const PipelineExecutableInfoKHR & executableInfo, Dispatch const &d ) const - { - std::vector internalRepresentations; - uint32_t internalRepresentationCount; - Result result; - do - { - result = static_cast( d.vkGetPipelineExecutableInternalRepresentationsKHR( m_device, reinterpret_cast( &executableInfo ), &internalRepresentationCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && internalRepresentationCount ) - { - internalRepresentations.resize( internalRepresentationCount ); - result = static_cast( d.vkGetPipelineExecutableInternalRepresentationsKHR( m_device, reinterpret_cast( &executableInfo ), &internalRepresentationCount, reinterpret_cast( internalRepresentations.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( internalRepresentationCount <= internalRepresentations.size() ); - internalRepresentations.resize( internalRepresentationCount ); - } - return createResultValue( result, internalRepresentations, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineExecutableInternalRepresentationsKHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineExecutableInternalRepresentationsKHR( const PipelineExecutableInfoKHR & executableInfo, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector internalRepresentations( vectorAllocator ); - uint32_t internalRepresentationCount; - Result result; - do - { - result = static_cast( d.vkGetPipelineExecutableInternalRepresentationsKHR( m_device, reinterpret_cast( &executableInfo ), &internalRepresentationCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && internalRepresentationCount ) - { - internalRepresentations.resize( internalRepresentationCount ); - result = static_cast( d.vkGetPipelineExecutableInternalRepresentationsKHR( m_device, reinterpret_cast( &executableInfo ), &internalRepresentationCount, reinterpret_cast( internalRepresentations.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( internalRepresentationCount <= internalRepresentations.size() ); - internalRepresentations.resize( internalRepresentationCount ); - } - return createResultValue( result, internalRepresentations, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineExecutableInternalRepresentationsKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getPipelineExecutablePropertiesKHR( const vk::PipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, vk::PipelineExecutablePropertiesKHR* pProperties, Dispatch const &d) const - { - return static_cast( d.vkGetPipelineExecutablePropertiesKHR( m_device, reinterpret_cast( pPipelineInfo ), pExecutableCount, reinterpret_cast( pProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineExecutablePropertiesKHR( const PipelineInfoKHR & pipelineInfo, Dispatch const &d ) const - { - std::vector properties; - uint32_t executableCount; - Result result; - do - { - result = static_cast( d.vkGetPipelineExecutablePropertiesKHR( m_device, reinterpret_cast( &pipelineInfo ), &executableCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && executableCount ) - { - properties.resize( executableCount ); - result = static_cast( d.vkGetPipelineExecutablePropertiesKHR( m_device, reinterpret_cast( &pipelineInfo ), &executableCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( executableCount <= properties.size() ); - properties.resize( executableCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineExecutablePropertiesKHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineExecutablePropertiesKHR( const PipelineInfoKHR & pipelineInfo, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector properties( vectorAllocator ); - uint32_t executableCount; - Result result; - do - { - result = static_cast( d.vkGetPipelineExecutablePropertiesKHR( m_device, reinterpret_cast( &pipelineInfo ), &executableCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && executableCount ) - { - properties.resize( executableCount ); - result = static_cast( d.vkGetPipelineExecutablePropertiesKHR( m_device, reinterpret_cast( &pipelineInfo ), &executableCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( executableCount <= properties.size() ); - properties.resize( executableCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineExecutablePropertiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getPipelineExecutableStatisticsKHR( const vk::PipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, vk::PipelineExecutableStatisticKHR* pStatistics, Dispatch const &d) const - { - return static_cast( d.vkGetPipelineExecutableStatisticsKHR( m_device, reinterpret_cast( pExecutableInfo ), pStatisticCount, reinterpret_cast( pStatistics ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineExecutableStatisticsKHR( const PipelineExecutableInfoKHR & executableInfo, Dispatch const &d ) const - { - std::vector statistics; - uint32_t statisticCount; - Result result; - do - { - result = static_cast( d.vkGetPipelineExecutableStatisticsKHR( m_device, reinterpret_cast( &executableInfo ), &statisticCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && statisticCount ) - { - statistics.resize( statisticCount ); - result = static_cast( d.vkGetPipelineExecutableStatisticsKHR( m_device, reinterpret_cast( &executableInfo ), &statisticCount, reinterpret_cast( statistics.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( statisticCount <= statistics.size() ); - statistics.resize( statisticCount ); - } - return createResultValue( result, statistics, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineExecutableStatisticsKHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineExecutableStatisticsKHR( const PipelineExecutableInfoKHR & executableInfo, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector statistics( vectorAllocator ); - uint32_t statisticCount; - Result result; - do - { - result = static_cast( d.vkGetPipelineExecutableStatisticsKHR( m_device, reinterpret_cast( &executableInfo ), &statisticCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && statisticCount ) - { - statistics.resize( statisticCount ); - result = static_cast( d.vkGetPipelineExecutableStatisticsKHR( m_device, reinterpret_cast( &executableInfo ), &statisticCount, reinterpret_cast( statistics.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( statisticCount <= statistics.size() ); - statistics.resize( statisticCount ); - } - return createResultValue( result, statistics, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineExecutableStatisticsKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getQueryPoolResults( vk::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, vk::DeviceSize stride, vk::QueryResultFlags flags, Dispatch const &d) const - { - return static_cast( d.vkGetQueryPoolResults( m_device, static_cast( queryPool ), firstQuery, queryCount, dataSize, pData, static_cast( stride ), static_cast( flags ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::getQueryPoolResults( vk::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy data, vk::DeviceSize stride, vk::QueryResultFlags flags, Dispatch const &d ) const - { - Result result = static_cast( d.vkGetQueryPoolResults( m_device, static_cast( queryPool ), firstQuery, queryCount, data.size() * sizeof( T ) , reinterpret_cast( data.data() ), static_cast( stride ), static_cast( flags ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getRayTracingShaderGroupHandlesNV( vk::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData, Dispatch const &d) const - { - return static_cast( d.vkGetRayTracingShaderGroupHandlesNV( m_device, static_cast( pipeline ), firstGroup, groupCount, dataSize, pData ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getRayTracingShaderGroupHandlesNV( vk::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, ArrayProxy data, Dispatch const &d ) const - { - Result result = static_cast( d.vkGetRayTracingShaderGroupHandlesNV( m_device, static_cast( pipeline ), firstGroup, groupCount, data.size() * sizeof( T ) , reinterpret_cast( data.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getRayTracingShaderGroupHandlesNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( vk::SwapchainKHR swapchain, vk::RefreshCycleDurationGOOGLE* pDisplayTimingProperties, Dispatch const &d) const - { - return static_cast( d.vkGetRefreshCycleDurationGOOGLE( m_device, static_cast( swapchain ), reinterpret_cast( pDisplayTimingProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getRefreshCycleDurationGOOGLE( vk::SwapchainKHR swapchain, Dispatch const &d ) const - { - vk::RefreshCycleDurationGOOGLE displayTimingProperties; - Result result = static_cast( d.vkGetRefreshCycleDurationGOOGLE( m_device, static_cast( swapchain ), reinterpret_cast( &displayTimingProperties ) ) ); - return createResultValue( result, displayTimingProperties, VULKAN_HPP_NAMESPACE_STRING"::Device::getRefreshCycleDurationGOOGLE" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( vk::RenderPass renderPass, vk::Extent2D* pGranularity, Dispatch const &d) const - { - d.vkGetRenderAreaGranularity( m_device, static_cast( renderPass ), reinterpret_cast( pGranularity ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::Extent2D Device::getRenderAreaGranularity( vk::RenderPass renderPass, Dispatch const &d ) const - { - vk::Extent2D granularity; - d.vkGetRenderAreaGranularity( m_device, static_cast( renderPass ), reinterpret_cast( &granularity ) ); - return granularity; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHR( const vk::SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const &d) const - { - return static_cast( d.vkGetSemaphoreFdKHR( m_device, reinterpret_cast( pGetFdInfo ), pFd ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo, Dispatch const &d ) const - { - int fd; - Result result = static_cast( d.vkGetSemaphoreFdKHR( m_device, reinterpret_cast( &getFdInfo ), &fd ) ); - return createResultValue( result, fd, VULKAN_HPP_NAMESPACE_STRING"::Device::getSemaphoreFdKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHR( const vk::SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const &d) const - { - return static_cast( d.vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast( pGetWin32HandleInfo ), pHandle ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const &d ) const - { - HANDLE handle; - Result result = static_cast( d.vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast( &getWin32HandleInfo ), &handle ) ); - return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING"::Device::getSemaphoreWin32HandleKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - template - VULKAN_HPP_INLINE Result Device::getShaderInfoAMD( vk::Pipeline pipeline, vk::ShaderStageFlagBits shaderStage, vk::ShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo, Dispatch const &d) const - { - return static_cast( d.vkGetShaderInfoAMD( m_device, static_cast( pipeline ), static_cast( shaderStage ), static_cast( infoType ), pInfoSize, pInfo ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getShaderInfoAMD( vk::Pipeline pipeline, vk::ShaderStageFlagBits shaderStage, vk::ShaderInfoTypeAMD infoType, Dispatch const &d ) const - { - std::vector info; - size_t infoSize; - Result result; - do - { - result = static_cast( d.vkGetShaderInfoAMD( m_device, static_cast( pipeline ), static_cast( shaderStage ), static_cast( infoType ), &infoSize, nullptr ) ); - if ( ( result == Result::eSuccess ) && infoSize ) - { - info.resize( infoSize ); - result = static_cast( d.vkGetShaderInfoAMD( m_device, static_cast( pipeline ), static_cast( shaderStage ), static_cast( infoType ), &infoSize, reinterpret_cast( info.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( infoSize <= info.size() ); - info.resize( infoSize ); - } - return createResultValue( result, info, VULKAN_HPP_NAMESPACE_STRING"::Device::getShaderInfoAMD" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getShaderInfoAMD( vk::Pipeline pipeline, vk::ShaderStageFlagBits shaderStage, vk::ShaderInfoTypeAMD infoType, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector info( vectorAllocator ); - size_t infoSize; - Result result; - do - { - result = static_cast( d.vkGetShaderInfoAMD( m_device, static_cast( pipeline ), static_cast( shaderStage ), static_cast( infoType ), &infoSize, nullptr ) ); - if ( ( result == Result::eSuccess ) && infoSize ) - { - info.resize( infoSize ); - result = static_cast( d.vkGetShaderInfoAMD( m_device, static_cast( pipeline ), static_cast( shaderStage ), static_cast( infoType ), &infoSize, reinterpret_cast( info.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( infoSize <= info.size() ); - info.resize( infoSize ); - } - return createResultValue( result, info, VULKAN_HPP_NAMESPACE_STRING"::Device::getShaderInfoAMD" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( vk::SwapchainKHR swapchain, vk::SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue, Dispatch const &d) const - { - return static_cast( d.vkGetSwapchainCounterEXT( m_device, static_cast( swapchain ), static_cast( counter ), pCounterValue ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::getSwapchainCounterEXT( vk::SwapchainKHR swapchain, vk::SurfaceCounterFlagBitsEXT counter, Dispatch const &d ) const - { - uint64_t counterValue; - Result result = static_cast( d.vkGetSwapchainCounterEXT( m_device, static_cast( swapchain ), static_cast( counter ), &counterValue ) ); - return createResultValue( result, counterValue, VULKAN_HPP_NAMESPACE_STRING"::Device::getSwapchainCounterEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( vk::SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, vk::Image* pSwapchainImages, Dispatch const &d) const - { - return static_cast( d.vkGetSwapchainImagesKHR( m_device, static_cast( swapchain ), pSwapchainImageCount, reinterpret_cast( pSwapchainImages ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getSwapchainImagesKHR( vk::SwapchainKHR swapchain, Dispatch const &d ) const - { - std::vector swapchainImages; - uint32_t swapchainImageCount; - Result result; - do - { - result = static_cast( d.vkGetSwapchainImagesKHR( m_device, static_cast( swapchain ), &swapchainImageCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && swapchainImageCount ) - { - swapchainImages.resize( swapchainImageCount ); - result = static_cast( d.vkGetSwapchainImagesKHR( m_device, static_cast( swapchain ), &swapchainImageCount, reinterpret_cast( swapchainImages.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() ); - swapchainImages.resize( swapchainImageCount ); - } - return createResultValue( result, swapchainImages, VULKAN_HPP_NAMESPACE_STRING"::Device::getSwapchainImagesKHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getSwapchainImagesKHR( vk::SwapchainKHR swapchain, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector swapchainImages( vectorAllocator ); - uint32_t swapchainImageCount; - Result result; - do - { - result = static_cast( d.vkGetSwapchainImagesKHR( m_device, static_cast( swapchain ), &swapchainImageCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && swapchainImageCount ) - { - swapchainImages.resize( swapchainImageCount ); - result = static_cast( d.vkGetSwapchainImagesKHR( m_device, static_cast( swapchain ), &swapchainImageCount, reinterpret_cast( swapchainImages.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() ); - swapchainImages.resize( swapchainImageCount ); - } - return createResultValue( result, swapchainImages, VULKAN_HPP_NAMESPACE_STRING"::Device::getSwapchainImagesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( vk::SwapchainKHR swapchain, Dispatch const &d) const - { - return static_cast( d.vkGetSwapchainStatusKHR( m_device, static_cast( swapchain ) ) ); - } -#else - template - VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( vk::SwapchainKHR swapchain, Dispatch const &d ) const - { - Result result = static_cast( d.vkGetSwapchainStatusKHR( m_device, static_cast( swapchain ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::getValidationCacheDataEXT( vk::ValidationCacheEXT validationCache, size_t* pDataSize, void* pData, Dispatch const &d) const - { - return static_cast( d.vkGetValidationCacheDataEXT( m_device, static_cast( validationCache ), pDataSize, pData ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getValidationCacheDataEXT( vk::ValidationCacheEXT validationCache, Dispatch const &d ) const - { - std::vector data; - size_t dataSize; - Result result; - do - { - result = static_cast( d.vkGetValidationCacheDataEXT( m_device, static_cast( validationCache ), &dataSize, nullptr ) ); - if ( ( result == Result::eSuccess ) && dataSize ) - { - data.resize( dataSize ); - result = static_cast( d.vkGetValidationCacheDataEXT( m_device, static_cast( validationCache ), &dataSize, reinterpret_cast( data.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( dataSize <= data.size() ); - data.resize( dataSize ); - } - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::Device::getValidationCacheDataEXT" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::getValidationCacheDataEXT( vk::ValidationCacheEXT validationCache, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector data( vectorAllocator ); - size_t dataSize; - Result result; - do - { - result = static_cast( d.vkGetValidationCacheDataEXT( m_device, static_cast( validationCache ), &dataSize, nullptr ) ); - if ( ( result == Result::eSuccess ) && dataSize ) - { - data.resize( dataSize ); - result = static_cast( d.vkGetValidationCacheDataEXT( m_device, static_cast( validationCache ), &dataSize, reinterpret_cast( data.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( dataSize <= data.size() ); - data.resize( dataSize ); - } - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::Device::getValidationCacheDataEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::importFenceFdKHR( const vk::ImportFenceFdInfoKHR* pImportFenceFdInfo, Dispatch const &d) const - { - return static_cast( d.vkImportFenceFdKHR( m_device, reinterpret_cast( pImportFenceFdInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo, Dispatch const &d ) const - { - Result result = static_cast( d.vkImportFenceFdKHR( m_device, reinterpret_cast( &importFenceFdInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::importFenceFdKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_INLINE Result Device::importFenceWin32HandleKHR( const vk::ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo, Dispatch const &d) const - { - return static_cast( d.vkImportFenceWin32HandleKHR( m_device, reinterpret_cast( pImportFenceWin32HandleInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo, Dispatch const &d ) const - { - Result result = static_cast( d.vkImportFenceWin32HandleKHR( m_device, reinterpret_cast( &importFenceWin32HandleInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::importFenceWin32HandleKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - template - VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHR( const vk::ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo, Dispatch const &d) const - { - return static_cast( d.vkImportSemaphoreFdKHR( m_device, reinterpret_cast( pImportSemaphoreFdInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo, Dispatch const &d ) const - { - Result result = static_cast( d.vkImportSemaphoreFdKHR( m_device, reinterpret_cast( &importSemaphoreFdInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::importSemaphoreFdKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHR( const vk::ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo, Dispatch const &d) const - { - return static_cast( d.vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast( pImportSemaphoreWin32HandleInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo, Dispatch const &d ) const - { - Result result = static_cast( d.vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast( &importSemaphoreWin32HandleInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::importSemaphoreWin32HandleKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - template - VULKAN_HPP_INLINE Result Device::initializePerformanceApiINTEL( const vk::InitializePerformanceApiInfoINTEL* pInitializeInfo, Dispatch const &d) const - { - return static_cast( d.vkInitializePerformanceApiINTEL( m_device, reinterpret_cast( pInitializeInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::initializePerformanceApiINTEL( const InitializePerformanceApiInfoINTEL & initializeInfo, Dispatch const &d ) const - { - Result result = static_cast( d.vkInitializePerformanceApiINTEL( m_device, reinterpret_cast( &initializeInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::initializePerformanceApiINTEL" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const vk::MappedMemoryRange* pMemoryRanges, Dispatch const &d) const - { - return static_cast( d.vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast( pMemoryRanges ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::invalidateMappedMemoryRanges( ArrayProxy memoryRanges, Dispatch const &d ) const - { - Result result = static_cast( d.vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast( memoryRanges.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::invalidateMappedMemoryRanges" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::mapMemory( vk::DeviceMemory memory, vk::DeviceSize offset, vk::DeviceSize size, vk::MemoryMapFlags flags, void** ppData, Dispatch const &d) const - { - return static_cast( d.vkMapMemory( m_device, static_cast( memory ), static_cast( offset ), static_cast( size ), static_cast( flags ), ppData ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::mapMemory( vk::DeviceMemory memory, vk::DeviceSize offset, vk::DeviceSize size, vk::MemoryMapFlags flags, Dispatch const &d ) const - { - void* pData; - Result result = static_cast( d.vkMapMemory( m_device, static_cast( memory ), static_cast( offset ), static_cast( size ), static_cast( flags ), &pData ) ); - return createResultValue( result, pData, VULKAN_HPP_NAMESPACE_STRING"::Device::mapMemory" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::mergePipelineCaches( vk::PipelineCache dstCache, uint32_t srcCacheCount, const vk::PipelineCache* pSrcCaches, Dispatch const &d) const - { - return static_cast( d.vkMergePipelineCaches( m_device, static_cast( dstCache ), srcCacheCount, reinterpret_cast( pSrcCaches ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::mergePipelineCaches( vk::PipelineCache dstCache, ArrayProxy srcCaches, Dispatch const &d ) const - { - Result result = static_cast( d.vkMergePipelineCaches( m_device, static_cast( dstCache ), srcCaches.size() , reinterpret_cast( srcCaches.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::mergePipelineCaches" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::mergeValidationCachesEXT( vk::ValidationCacheEXT dstCache, uint32_t srcCacheCount, const vk::ValidationCacheEXT* pSrcCaches, Dispatch const &d) const - { - return static_cast( d.vkMergeValidationCachesEXT( m_device, static_cast( dstCache ), srcCacheCount, reinterpret_cast( pSrcCaches ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::mergeValidationCachesEXT( vk::ValidationCacheEXT dstCache, ArrayProxy srcCaches, Dispatch const &d ) const - { - Result result = static_cast( d.vkMergeValidationCachesEXT( m_device, static_cast( dstCache ), srcCaches.size() , reinterpret_cast( srcCaches.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::mergeValidationCachesEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::registerEventEXT( const vk::DeviceEventInfoEXT* pDeviceEventInfo, const vk::AllocationCallbacks* pAllocator, vk::Fence* pFence, Dispatch const &d) const - { - return static_cast( d.vkRegisterDeviceEventEXT( m_device, reinterpret_cast( pDeviceEventInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pFence ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional allocator, Dispatch const &d ) const - { - vk::Fence fence; - Result result = static_cast( d.vkRegisterDeviceEventEXT( m_device, reinterpret_cast( &deviceEventInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &fence ) ) ); - return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING"::Device::registerEventEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( vk::DisplayKHR display, const vk::DisplayEventInfoEXT* pDisplayEventInfo, const vk::AllocationCallbacks* pAllocator, vk::Fence* pFence, Dispatch const &d) const - { - return static_cast( d.vkRegisterDisplayEventEXT( m_device, static_cast( display ), reinterpret_cast( pDisplayEventInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pFence ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::registerDisplayEventEXT( vk::DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional allocator, Dispatch const &d ) const - { - vk::Fence fence; - Result result = static_cast( d.vkRegisterDisplayEventEXT( m_device, static_cast( display ), reinterpret_cast( &displayEventInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &fence ) ) ); - return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING"::Device::registerDisplayEventEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::registerObjectsNVX( vk::ObjectTableNVX objectTable, uint32_t objectCount, const vk::ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices, Dispatch const &d) const - { - return static_cast( d.vkRegisterObjectsNVX( m_device, static_cast( objectTable ), objectCount, reinterpret_cast( ppObjectTableEntries ), pObjectIndices ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::registerObjectsNVX( vk::ObjectTableNVX objectTable, ArrayProxy pObjectTableEntries, ArrayProxy objectIndices, Dispatch const &d ) const - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - VULKAN_HPP_ASSERT( pObjectTableEntries.size() == objectIndices.size() ); -#else - if ( pObjectTableEntries.size() != objectIndices.size() ) - { - throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::VkDevice::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" ); - } -#endif /*VULKAN_HPP_NO_EXCEPTIONS*/ - Result result = static_cast( d.vkRegisterObjectsNVX( m_device, static_cast( objectTable ), pObjectTableEntries.size() , reinterpret_cast( pObjectTableEntries.data() ), objectIndices.data() ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::registerObjectsNVX" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::releaseFullScreenExclusiveModeEXT( vk::SwapchainKHR swapchain, Dispatch const &d) const - { - return static_cast( d.vkReleaseFullScreenExclusiveModeEXT( m_device, static_cast( swapchain ) ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type Device::releaseFullScreenExclusiveModeEXT( vk::SwapchainKHR swapchain, Dispatch const &d ) const - { - Result result = static_cast( d.vkReleaseFullScreenExclusiveModeEXT( m_device, static_cast( swapchain ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::releaseFullScreenExclusiveModeEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::releasePerformanceConfigurationINTEL( vk::PerformanceConfigurationINTEL configuration, Dispatch const &d) const - { - return static_cast( d.vkReleasePerformanceConfigurationINTEL( m_device, static_cast( configuration ) ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type Device::releasePerformanceConfigurationINTEL( vk::PerformanceConfigurationINTEL configuration, Dispatch const &d ) const - { - Result result = static_cast( d.vkReleasePerformanceConfigurationINTEL( m_device, static_cast( configuration ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::releasePerformanceConfigurationINTEL" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::resetCommandPool( vk::CommandPool commandPool, vk::CommandPoolResetFlags flags, Dispatch const &d) const - { - return static_cast( d.vkResetCommandPool( m_device, static_cast( commandPool ), static_cast( flags ) ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type Device::resetCommandPool( vk::CommandPool commandPool, vk::CommandPoolResetFlags flags, Dispatch const &d ) const - { - Result result = static_cast( d.vkResetCommandPool( m_device, static_cast( commandPool ), static_cast( flags ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::resetCommandPool" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::resetDescriptorPool( vk::DescriptorPool descriptorPool, vk::DescriptorPoolResetFlags flags, Dispatch const &d) const - { - return static_cast( d.vkResetDescriptorPool( m_device, static_cast( descriptorPool ), static_cast( flags ) ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type Device::resetDescriptorPool( vk::DescriptorPool descriptorPool, vk::DescriptorPoolResetFlags flags, Dispatch const &d ) const - { - Result result = static_cast( d.vkResetDescriptorPool( m_device, static_cast( descriptorPool ), static_cast( flags ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::resetDescriptorPool" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::resetEvent( vk::Event event, Dispatch const &d) const - { - return static_cast( d.vkResetEvent( m_device, static_cast( event ) ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type Device::resetEvent( vk::Event event, Dispatch const &d ) const - { - Result result = static_cast( d.vkResetEvent( m_device, static_cast( event ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::resetEvent" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const vk::Fence* pFences, Dispatch const &d) const - { - return static_cast( d.vkResetFences( m_device, fenceCount, reinterpret_cast( pFences ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::resetFences( ArrayProxy fences, Dispatch const &d ) const - { - Result result = static_cast( d.vkResetFences( m_device, fences.size() , reinterpret_cast( fences.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::resetFences" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::resetQueryPoolEXT( vk::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const &d) const - { - d.vkResetQueryPoolEXT( m_device, static_cast( queryPool ), firstQuery, queryCount ); - } -#else - template - VULKAN_HPP_INLINE void Device::resetQueryPoolEXT( vk::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const &d ) const - { - d.vkResetQueryPoolEXT( m_device, static_cast( queryPool ), firstQuery, queryCount ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::setDebugUtilsObjectNameEXT( const vk::DebugUtilsObjectNameInfoEXT* pNameInfo, Dispatch const &d) const - { - return static_cast( d.vkSetDebugUtilsObjectNameEXT( m_device, reinterpret_cast( pNameInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT & nameInfo, Dispatch const &d ) const - { - Result result = static_cast( d.vkSetDebugUtilsObjectNameEXT( m_device, reinterpret_cast( &nameInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::setDebugUtilsObjectNameEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::setDebugUtilsObjectTagEXT( const vk::DebugUtilsObjectTagInfoEXT* pTagInfo, Dispatch const &d) const - { - return static_cast( d.vkSetDebugUtilsObjectTagEXT( m_device, reinterpret_cast( pTagInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT & tagInfo, Dispatch const &d ) const - { - Result result = static_cast( d.vkSetDebugUtilsObjectTagEXT( m_device, reinterpret_cast( &tagInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::setDebugUtilsObjectTagEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::setEvent( vk::Event event, Dispatch const &d) const - { - return static_cast( d.vkSetEvent( m_device, static_cast( event ) ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type Device::setEvent( vk::Event event, Dispatch const &d ) const - { - Result result = static_cast( d.vkSetEvent( m_device, static_cast( event ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::setEvent" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const vk::SwapchainKHR* pSwapchains, const vk::HdrMetadataEXT* pMetadata, Dispatch const &d) const - { - d.vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast( pSwapchains ), reinterpret_cast( pMetadata ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy swapchains, ArrayProxy metadata, Dispatch const &d ) const - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - VULKAN_HPP_ASSERT( swapchains.size() == metadata.size() ); -#else - if ( swapchains.size() != metadata.size() ) - { - throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::VkDevice::setHdrMetadataEXT: swapchains.size() != metadata.size()" ); - } -#endif /*VULKAN_HPP_NO_EXCEPTIONS*/ - d.vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast( swapchains.data() ), reinterpret_cast( metadata.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::setLocalDimmingAMD( vk::SwapchainKHR swapChain, vk::Bool32 localDimmingEnable, Dispatch const &d) const - { - d.vkSetLocalDimmingAMD( m_device, static_cast( swapChain ), static_cast( localDimmingEnable ) ); - } -#else - template - VULKAN_HPP_INLINE void Device::setLocalDimmingAMD( vk::SwapchainKHR swapChain, vk::Bool32 localDimmingEnable, Dispatch const &d ) const - { - d.vkSetLocalDimmingAMD( m_device, static_cast( swapChain ), static_cast( localDimmingEnable ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::trimCommandPool( vk::CommandPool commandPool, vk::CommandPoolTrimFlags flags, Dispatch const &d) const - { - d.vkTrimCommandPool( m_device, static_cast( commandPool ), static_cast( flags ) ); - } -#else - template - VULKAN_HPP_INLINE void Device::trimCommandPool( vk::CommandPool commandPool, vk::CommandPoolTrimFlags flags, Dispatch const &d ) const - { - d.vkTrimCommandPool( m_device, static_cast( commandPool ), static_cast( flags ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( vk::CommandPool commandPool, vk::CommandPoolTrimFlags flags, Dispatch const &d) const - { - d.vkTrimCommandPoolKHR( m_device, static_cast( commandPool ), static_cast( flags ) ); - } -#else - template - VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( vk::CommandPool commandPool, vk::CommandPoolTrimFlags flags, Dispatch const &d ) const - { - d.vkTrimCommandPoolKHR( m_device, static_cast( commandPool ), static_cast( flags ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::uninitializePerformanceApiINTEL(Dispatch const &d) const - { - d.vkUninitializePerformanceApiINTEL( m_device ); - } -#else - template - VULKAN_HPP_INLINE void Device::uninitializePerformanceApiINTEL(Dispatch const &d ) const - { - d.vkUninitializePerformanceApiINTEL( m_device ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::unmapMemory( vk::DeviceMemory memory, Dispatch const &d) const - { - d.vkUnmapMemory( m_device, static_cast( memory ) ); - } -#else - template - VULKAN_HPP_INLINE void Device::unmapMemory( vk::DeviceMemory memory, Dispatch const &d ) const - { - d.vkUnmapMemory( m_device, static_cast( memory ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( vk::ObjectTableNVX objectTable, uint32_t objectCount, const vk::ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices, Dispatch const &d) const - { - return static_cast( d.vkUnregisterObjectsNVX( m_device, static_cast( objectTable ), objectCount, reinterpret_cast( pObjectEntryTypes ), pObjectIndices ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Device::unregisterObjectsNVX( vk::ObjectTableNVX objectTable, ArrayProxy objectEntryTypes, ArrayProxy objectIndices, Dispatch const &d ) const - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - VULKAN_HPP_ASSERT( objectEntryTypes.size() == objectIndices.size() ); -#else - if ( objectEntryTypes.size() != objectIndices.size() ) - { - throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::VkDevice::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" ); - } -#endif /*VULKAN_HPP_NO_EXCEPTIONS*/ - Result result = static_cast( d.vkUnregisterObjectsNVX( m_device, static_cast( objectTable ), objectEntryTypes.size() , reinterpret_cast( objectEntryTypes.data() ), objectIndices.data() ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::unregisterObjectsNVX" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplate( vk::DescriptorSet descriptorSet, vk::DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d) const - { - d.vkUpdateDescriptorSetWithTemplate( m_device, static_cast( descriptorSet ), static_cast( descriptorUpdateTemplate ), pData ); - } -#else - template - VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplate( vk::DescriptorSet descriptorSet, vk::DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d ) const - { - d.vkUpdateDescriptorSetWithTemplate( m_device, static_cast( descriptorSet ), static_cast( descriptorUpdateTemplate ), pData ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( vk::DescriptorSet descriptorSet, vk::DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d) const - { - d.vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast( descriptorSet ), static_cast( descriptorUpdateTemplate ), pData ); - } -#else - template - VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( vk::DescriptorSet descriptorSet, vk::DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const &d ) const - { - d.vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast( descriptorSet ), static_cast( descriptorUpdateTemplate ), pData ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const vk::WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const vk::CopyDescriptorSet* pDescriptorCopies, Dispatch const &d) const - { - d.vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast( pDescriptorCopies ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy descriptorWrites, ArrayProxy descriptorCopies, Dispatch const &d ) const - { - d.vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast( descriptorCopies.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const vk::Fence* pFences, vk::Bool32 waitAll, uint64_t timeout, Dispatch const &d) const - { - return static_cast( d.vkWaitForFences( m_device, fenceCount, reinterpret_cast( pFences ), static_cast( waitAll ), timeout ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy fences, vk::Bool32 waitAll, uint64_t timeout, Dispatch const &d ) const - { - Result result = static_cast( d.vkWaitForFences( m_device, fences.size() , reinterpret_cast( fences.data() ), static_cast( waitAll ), timeout ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::waitForFences", { Result::eSuccess, Result::eTimeout } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template - VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const vk::AndroidSurfaceCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d) const - { - return static_cast( d.vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSurface ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createAndroidSurfaceKHR" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createAndroidSurfaceKHRUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - template - VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const vk::DebugReportCallbackCreateInfoEXT* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::DebugReportCallbackEXT* pCallback, Dispatch const &d) const - { - return static_cast( d.vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pCallback ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::DebugReportCallbackEXT callback; - Result result = static_cast( d.vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &callback ) ) ); - return createResultValue( result, callback, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDebugReportCallbackEXT" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::DebugReportCallbackEXT callback; - Result result = static_cast( d.vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &callback ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, callback, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDebugReportCallbackEXTUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Instance::createDebugUtilsMessengerEXT( const vk::DebugUtilsMessengerCreateInfoEXT* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::DebugUtilsMessengerEXT* pMessenger, Dispatch const &d) const - { - return static_cast( d.vkCreateDebugUtilsMessengerEXT( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pMessenger ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Instance::createDebugUtilsMessengerEXT( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::DebugUtilsMessengerEXT messenger; - Result result = static_cast( d.vkCreateDebugUtilsMessengerEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &messenger ) ) ); - return createResultValue( result, messenger, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDebugUtilsMessengerEXT" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createDebugUtilsMessengerEXTUnique( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::DebugUtilsMessengerEXT messenger; - Result result = static_cast( d.vkCreateDebugUtilsMessengerEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &messenger ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, messenger, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDebugUtilsMessengerEXTUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const vk::DisplaySurfaceCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d) const - { - return static_cast( d.vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSurface ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDisplayPlaneSurfaceKHR" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createDisplayPlaneSurfaceKHRUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Instance::createHeadlessSurfaceEXT( const vk::HeadlessSurfaceCreateInfoEXT* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d) const - { - return static_cast( d.vkCreateHeadlessSurfaceEXT( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSurface ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Instance::createHeadlessSurfaceEXT( const HeadlessSurfaceCreateInfoEXT & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateHeadlessSurfaceEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createHeadlessSurfaceEXT" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createHeadlessSurfaceEXTUnique( const HeadlessSurfaceCreateInfoEXT & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateHeadlessSurfaceEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createHeadlessSurfaceEXTUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_IOS_MVK - template - VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const vk::IOSSurfaceCreateInfoMVK* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d) const - { - return static_cast( d.vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSurface ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createIOSSurfaceMVK" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createIOSSurfaceMVKUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_IOS_MVK*/ - -#ifdef VK_USE_PLATFORM_FUCHSIA - template - VULKAN_HPP_INLINE Result Instance::createImagePipeSurfaceFUCHSIA( const vk::ImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d) const - { - return static_cast( d.vkCreateImagePipeSurfaceFUCHSIA( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSurface ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Instance::createImagePipeSurfaceFUCHSIA( const ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateImagePipeSurfaceFUCHSIA( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createImagePipeSurfaceFUCHSIA" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createImagePipeSurfaceFUCHSIAUnique( const ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateImagePipeSurfaceFUCHSIA( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createImagePipeSurfaceFUCHSIAUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_FUCHSIA*/ - -#ifdef VK_USE_PLATFORM_MACOS_MVK - template - VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const vk::MacOSSurfaceCreateInfoMVK* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d) const - { - return static_cast( d.vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSurface ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createMacOSSurfaceMVK" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createMacOSSurfaceMVKUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_MACOS_MVK*/ - -#ifdef VK_USE_PLATFORM_METAL_EXT - template - VULKAN_HPP_INLINE Result Instance::createMetalSurfaceEXT( const vk::MetalSurfaceCreateInfoEXT* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d) const - { - return static_cast( d.vkCreateMetalSurfaceEXT( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSurface ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Instance::createMetalSurfaceEXT( const MetalSurfaceCreateInfoEXT & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateMetalSurfaceEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createMetalSurfaceEXT" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createMetalSurfaceEXTUnique( const MetalSurfaceCreateInfoEXT & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateMetalSurfaceEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createMetalSurfaceEXTUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_METAL_EXT*/ - -#ifdef VK_USE_PLATFORM_GGP - template - VULKAN_HPP_INLINE Result Instance::createStreamDescriptorSurfaceGGP( const vk::StreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d) const - { - return static_cast( d.vkCreateStreamDescriptorSurfaceGGP( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSurface ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Instance::createStreamDescriptorSurfaceGGP( const StreamDescriptorSurfaceCreateInfoGGP & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateStreamDescriptorSurfaceGGP( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createStreamDescriptorSurfaceGGP" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createStreamDescriptorSurfaceGGPUnique( const StreamDescriptorSurfaceCreateInfoGGP & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateStreamDescriptorSurfaceGGP( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createStreamDescriptorSurfaceGGPUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_GGP*/ - -#ifdef VK_USE_PLATFORM_VI_NN - template - VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const vk::ViSurfaceCreateInfoNN* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d) const - { - return static_cast( d.vkCreateViSurfaceNN( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSurface ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateViSurfaceNN( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createViSurfaceNN" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateViSurfaceNN( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createViSurfaceNNUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_VI_NN*/ - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - template - VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const vk::WaylandSurfaceCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d) const - { - return static_cast( d.vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSurface ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createWaylandSurfaceKHR" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createWaylandSurfaceKHRUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const vk::Win32SurfaceCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d) const - { - return static_cast( d.vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSurface ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createWin32SurfaceKHR" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createWin32SurfaceKHRUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_XCB_KHR - template - VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const vk::XcbSurfaceCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d) const - { - return static_cast( d.vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSurface ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createXcbSurfaceKHR" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createXcbSurfaceKHRUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XCB_KHR*/ - -#ifdef VK_USE_PLATFORM_XLIB_KHR - template - VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const vk::XlibSurfaceCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::SurfaceKHR* pSurface, Dispatch const &d) const - { - return static_cast( d.vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pSurface ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createXlibSurfaceKHR" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::SurfaceKHR surface; - Result result = static_cast( d.vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING"::Instance::createXlibSurfaceKHRUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ - - template - VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( vk::DebugReportFlagsEXT flags, vk::DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage, Dispatch const &d) const - { - d.vkDebugReportMessageEXT( m_instance, static_cast( flags ), static_cast( objectType ), object, location, messageCode, pLayerPrefix, pMessage ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( vk::DebugReportFlagsEXT flags, vk::DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const std::string & layerPrefix, const std::string & message, Dispatch const &d ) const - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - VULKAN_HPP_ASSERT( layerPrefix.size() == message.size() ); -#else - if ( layerPrefix.size() != message.size() ) - { - throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::VkInstance::debugReportMessageEXT: layerPrefix.size() != message.size()" ); - } -#endif /*VULKAN_HPP_NO_EXCEPTIONS*/ - d.vkDebugReportMessageEXT( m_instance, static_cast( flags ), static_cast( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( vk::DebugReportCallbackEXT callback, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast( callback ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( vk::DebugReportCallbackEXT callback, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast( callback ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Instance::destroy( vk::DebugReportCallbackEXT callback, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast( callback ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::destroy( vk::DebugReportCallbackEXT callback, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast( callback ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Instance::destroyDebugUtilsMessengerEXT( vk::DebugUtilsMessengerEXT messenger, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast( messenger ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::destroyDebugUtilsMessengerEXT( vk::DebugUtilsMessengerEXT messenger, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast( messenger ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Instance::destroy( vk::DebugUtilsMessengerEXT messenger, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast( messenger ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::destroy( vk::DebugUtilsMessengerEXT messenger, Optional allocator, Dispatch const &d ) const - { - d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast( messenger ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Instance::destroy( const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroyInstance( m_instance, reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::destroy( Optional allocator, Dispatch const &d ) const - { - d.vkDestroyInstance( m_instance, reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( vk::SurfaceKHR surface, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroySurfaceKHR( m_instance, static_cast( surface ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( vk::SurfaceKHR surface, Optional allocator, Dispatch const &d ) const - { - d.vkDestroySurfaceKHR( m_instance, static_cast( surface ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Instance::destroy( vk::SurfaceKHR surface, const vk::AllocationCallbacks* pAllocator, Dispatch const &d) const - { - d.vkDestroySurfaceKHR( m_instance, static_cast( surface ), reinterpret_cast( pAllocator ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::destroy( vk::SurfaceKHR surface, Optional allocator, Dispatch const &d ) const - { - d.vkDestroySurfaceKHR( m_instance, static_cast( surface ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroups( uint32_t* pPhysicalDeviceGroupCount, vk::PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const &d) const - { - return static_cast( d.vkEnumeratePhysicalDeviceGroups( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast( pPhysicalDeviceGroupProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::enumeratePhysicalDeviceGroups(Dispatch const &d ) const - { - std::vector physicalDeviceGroupProperties; - uint32_t physicalDeviceGroupCount; - Result result; - do - { - result = static_cast( d.vkEnumeratePhysicalDeviceGroups( m_instance, &physicalDeviceGroupCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount ) - { - physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); - result = static_cast( d.vkEnumeratePhysicalDeviceGroups( m_instance, &physicalDeviceGroupCount, reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); - physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); - } - return createResultValue( result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDeviceGroups" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::enumeratePhysicalDeviceGroups(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector physicalDeviceGroupProperties( vectorAllocator ); - uint32_t physicalDeviceGroupCount; - Result result; - do - { - result = static_cast( d.vkEnumeratePhysicalDeviceGroups( m_instance, &physicalDeviceGroupCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount ) - { - physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); - result = static_cast( d.vkEnumeratePhysicalDeviceGroups( m_instance, &physicalDeviceGroupCount, reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); - physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); - } - return createResultValue( result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDeviceGroups" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHR( uint32_t* pPhysicalDeviceGroupCount, vk::PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const &d) const - { - return static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast( pPhysicalDeviceGroupProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::enumeratePhysicalDeviceGroupsKHR(Dispatch const &d ) const - { - std::vector physicalDeviceGroupProperties; - uint32_t physicalDeviceGroupCount; - Result result; - do - { - result = static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, &physicalDeviceGroupCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount ) - { - physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); - result = static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, &physicalDeviceGroupCount, reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); - physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); - } - return createResultValue( result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDeviceGroupsKHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::enumeratePhysicalDeviceGroupsKHR(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector physicalDeviceGroupProperties( vectorAllocator ); - uint32_t physicalDeviceGroupCount; - Result result; - do - { - result = static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, &physicalDeviceGroupCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount ) - { - physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); - result = static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, &physicalDeviceGroupCount, reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); - physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); - } - return createResultValue( result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDeviceGroupsKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, vk::PhysicalDevice* pPhysicalDevices, Dispatch const &d) const - { - return static_cast( d.vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast( pPhysicalDevices ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::enumeratePhysicalDevices(Dispatch const &d ) const - { - std::vector physicalDevices; - uint32_t physicalDeviceCount; - Result result; - do - { - result = static_cast( d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && physicalDeviceCount ) - { - physicalDevices.resize( physicalDeviceCount ); - result = static_cast( d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast( physicalDevices.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( physicalDeviceCount <= physicalDevices.size() ); - physicalDevices.resize( physicalDeviceCount ); - } - return createResultValue( result, physicalDevices, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDevices" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::enumeratePhysicalDevices(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector physicalDevices( vectorAllocator ); - uint32_t physicalDeviceCount; - Result result; - do - { - result = static_cast( d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && physicalDeviceCount ) - { - physicalDevices.resize( physicalDeviceCount ); - result = static_cast( d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast( physicalDevices.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( physicalDeviceCount <= physicalDevices.size() ); - physicalDevices.resize( physicalDeviceCount ); - } - return createResultValue( result, physicalDevices, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDevices" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName, Dispatch const &d) const - { - return d.vkGetInstanceProcAddr( m_instance, pName ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name, Dispatch const &d ) const - { - return d.vkGetInstanceProcAddr( m_instance, name.c_str() ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT( vk::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, vk::DebugUtilsMessageTypeFlagsEXT messageTypes, const vk::DebugUtilsMessengerCallbackDataEXT* pCallbackData, Dispatch const &d) const - { - d.vkSubmitDebugUtilsMessageEXT( m_instance, static_cast( messageSeverity ), static_cast( messageTypes ), reinterpret_cast( pCallbackData ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT( vk::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, vk::DebugUtilsMessageTypeFlagsEXT messageTypes, const DebugUtilsMessengerCallbackDataEXT & callbackData, Dispatch const &d ) const - { - d.vkSubmitDebugUtilsMessageEXT( m_instance, static_cast( messageSeverity ), static_cast( messageTypes ), reinterpret_cast( &callbackData ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - template - VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, vk::DisplayKHR display, Dispatch const &d) const - { - return static_cast( d.vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast( display ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type PhysicalDevice::acquireXlibDisplayEXT( vk::DisplayKHR display, Dispatch const &d ) const - { - Display dpy; - Result result = static_cast( d.vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast( display ) ) ); - return createResultValue( result, dpy, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::acquireXlibDisplayEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const vk::DeviceCreateInfo* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::Device* pDevice, Dispatch const &d) const - { - return static_cast( d.vkCreateDevice( m_physicalDevice, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pDevice ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Device device; - Result result = static_cast( d.vkCreateDevice( m_physicalDevice, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &device ) ) ); - return createResultValue( result, device, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::createDevice" ); - } -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::Device device; - Result result = static_cast( d.vkCreateDevice( m_physicalDevice, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &device ) ) ); - - ObjectDestroy deleter( allocator, d ); - return createResultValue( result, device, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::createDeviceUnique", deleter ); - } -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( vk::DisplayKHR display, const vk::DisplayModeCreateInfoKHR* pCreateInfo, const vk::AllocationCallbacks* pAllocator, vk::DisplayModeKHR* pMode, Dispatch const &d) const - { - return static_cast( d.vkCreateDisplayModeKHR( m_physicalDevice, static_cast( display ), reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast( pMode ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type PhysicalDevice::createDisplayModeKHR( vk::DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional allocator, Dispatch const &d ) const - { - vk::DisplayModeKHR mode; - Result result = static_cast( d.vkCreateDisplayModeKHR( m_physicalDevice, static_cast( display ), reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &mode ) ) ); - return createResultValue( result, mode, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::createDisplayModeKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, vk::ExtensionProperties* pProperties, Dispatch const &d) const - { - return static_cast( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast( pProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional layerName, Dispatch const &d ) const - { - std::vector properties; - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateDeviceExtensionProperties" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional layerName, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector properties( vectorAllocator ); - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateDeviceExtensionProperties" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, vk::LayerProperties* pProperties, Dispatch const &d) const - { - return static_cast( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast( pProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::enumerateDeviceLayerProperties(Dispatch const &d ) const - { - std::vector properties; - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateDeviceLayerProperties" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::enumerateDeviceLayerProperties(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector properties( vectorAllocator ); - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateDeviceLayerProperties" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModeProperties2KHR( vk::DisplayKHR display, uint32_t* pPropertyCount, vk::DisplayModeProperties2KHR* pProperties, Dispatch const &d) const - { - return static_cast( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast( display ), pPropertyCount, reinterpret_cast( pProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayModeProperties2KHR( vk::DisplayKHR display, Dispatch const &d ) const - { - std::vector properties; - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast( display ), &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast( display ), &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayModeProperties2KHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayModeProperties2KHR( vk::DisplayKHR display, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector properties( vectorAllocator ); - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast( display ), &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast( display ), &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayModeProperties2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( vk::DisplayKHR display, uint32_t* pPropertyCount, vk::DisplayModePropertiesKHR* pProperties, Dispatch const &d) const - { - return static_cast( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast( display ), pPropertyCount, reinterpret_cast( pProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayModePropertiesKHR( vk::DisplayKHR display, Dispatch const &d ) const - { - std::vector properties; - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast( display ), &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast( display ), &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayModePropertiesKHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayModePropertiesKHR( vk::DisplayKHR display, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector properties( vectorAllocator ); - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast( display ), &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast( display ), &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayModePropertiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilities2KHR( const vk::DisplayPlaneInfo2KHR* pDisplayPlaneInfo, vk::DisplayPlaneCapabilities2KHR* pCapabilities, Dispatch const &d) const - { - return static_cast( d.vkGetDisplayPlaneCapabilities2KHR( m_physicalDevice, reinterpret_cast( pDisplayPlaneInfo ), reinterpret_cast( pCapabilities ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type PhysicalDevice::getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR & displayPlaneInfo, Dispatch const &d ) const - { - vk::DisplayPlaneCapabilities2KHR capabilities; - Result result = static_cast( d.vkGetDisplayPlaneCapabilities2KHR( m_physicalDevice, reinterpret_cast( &displayPlaneInfo ), reinterpret_cast( &capabilities ) ) ); - return createResultValue( result, capabilities, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneCapabilities2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( vk::DisplayModeKHR mode, uint32_t planeIndex, vk::DisplayPlaneCapabilitiesKHR* pCapabilities, Dispatch const &d) const - { - return static_cast( d.vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast( mode ), planeIndex, reinterpret_cast( pCapabilities ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( vk::DisplayModeKHR mode, uint32_t planeIndex, Dispatch const &d ) const - { - vk::DisplayPlaneCapabilitiesKHR capabilities; - Result result = static_cast( d.vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast( mode ), planeIndex, reinterpret_cast( &capabilities ) ) ); - return createResultValue( result, capabilities, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, vk::DisplayKHR* pDisplays, Dispatch const &d) const - { - return static_cast( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast( pDisplays ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Dispatch const &d ) const - { - std::vector displays; - uint32_t displayCount; - Result result; - do - { - result = static_cast( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && displayCount ) - { - displays.resize( displayCount ); - result = static_cast( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast( displays.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( displayCount <= displays.size() ); - displays.resize( displayCount ); - } - return createResultValue( result, displays, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector displays( vectorAllocator ); - uint32_t displayCount; - Result result; - do - { - result = static_cast( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && displayCount ) - { - displays.resize( displayCount ); - result = static_cast( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast( displays.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( displayCount <= displays.size() ); - displays.resize( displayCount ); - } - return createResultValue( result, displays, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getCalibrateableTimeDomainsEXT( uint32_t* pTimeDomainCount, vk::TimeDomainEXT* pTimeDomains, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, pTimeDomainCount, reinterpret_cast( pTimeDomains ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getCalibrateableTimeDomainsEXT(Dispatch const &d ) const - { - std::vector timeDomains; - uint32_t timeDomainCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, &timeDomainCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && timeDomainCount ) - { - timeDomains.resize( timeDomainCount ); - result = static_cast( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, &timeDomainCount, reinterpret_cast( timeDomains.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() ); - timeDomains.resize( timeDomainCount ); - } - return createResultValue( result, timeDomains, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getCalibrateableTimeDomainsEXT" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getCalibrateableTimeDomainsEXT(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector timeDomains( vectorAllocator ); - uint32_t timeDomainCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, &timeDomainCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && timeDomainCount ) - { - timeDomains.resize( timeDomainCount ); - result = static_cast( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, &timeDomainCount, reinterpret_cast( timeDomains.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() ); - timeDomains.resize( timeDomainCount ); - } - return createResultValue( result, timeDomains, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getCalibrateableTimeDomainsEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getCooperativeMatrixPropertiesNV( uint32_t* pPropertyCount, vk::CooperativeMatrixPropertiesNV* pProperties, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( m_physicalDevice, pPropertyCount, reinterpret_cast( pProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getCooperativeMatrixPropertiesNV(Dispatch const &d ) const - { - std::vector properties; - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( m_physicalDevice, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getCooperativeMatrixPropertiesNV" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getCooperativeMatrixPropertiesNV(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector properties( vectorAllocator ); - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( m_physicalDevice, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getCooperativeMatrixPropertiesNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneProperties2KHR( uint32_t* pPropertyCount, vk::DisplayPlaneProperties2KHR* pProperties, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, pPropertyCount, reinterpret_cast( pProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPlaneProperties2KHR(Dispatch const &d ) const - { - std::vector properties; - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneProperties2KHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPlaneProperties2KHR(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector properties( vectorAllocator ); - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneProperties2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, vk::DisplayPlanePropertiesKHR* pProperties, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast( pProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPlanePropertiesKHR(Dispatch const &d ) const - { - std::vector properties; - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlanePropertiesKHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPlanePropertiesKHR(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector properties( vectorAllocator ); - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlanePropertiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayProperties2KHR( uint32_t* pPropertyCount, vk::DisplayProperties2KHR* pProperties, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, pPropertyCount, reinterpret_cast( pProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayProperties2KHR(Dispatch const &d ) const - { - std::vector properties; - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayProperties2KHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayProperties2KHR(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector properties( vectorAllocator ); - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayProperties2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, vk::DisplayPropertiesKHR* pProperties, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast( pProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPropertiesKHR(Dispatch const &d ) const - { - std::vector properties; - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPropertiesKHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPropertiesKHR(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector properties( vectorAllocator ); - uint32_t propertyCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && propertyCount ) - { - properties.resize( propertyCount ); - result = static_cast( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPropertiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferProperties( const vk::PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, vk::ExternalBufferProperties* pExternalBufferProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceExternalBufferProperties( m_physicalDevice, reinterpret_cast( pExternalBufferInfo ), reinterpret_cast( pExternalBufferProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::ExternalBufferProperties PhysicalDevice::getExternalBufferProperties( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const &d ) const - { - vk::ExternalBufferProperties externalBufferProperties; - d.vkGetPhysicalDeviceExternalBufferProperties( m_physicalDevice, reinterpret_cast( &externalBufferInfo ), reinterpret_cast( &externalBufferProperties ) ); - return externalBufferProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHR( const vk::PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, vk::ExternalBufferProperties* pExternalBufferProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast( pExternalBufferInfo ), reinterpret_cast( pExternalBufferProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::ExternalBufferProperties PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const &d ) const - { - vk::ExternalBufferProperties externalBufferProperties; - d.vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast( &externalBufferInfo ), reinterpret_cast( &externalBufferProperties ) ); - return externalBufferProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getExternalFenceProperties( const vk::PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, vk::ExternalFenceProperties* pExternalFenceProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceExternalFenceProperties( m_physicalDevice, reinterpret_cast( pExternalFenceInfo ), reinterpret_cast( pExternalFenceProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::ExternalFenceProperties PhysicalDevice::getExternalFenceProperties( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const &d ) const - { - vk::ExternalFenceProperties externalFenceProperties; - d.vkGetPhysicalDeviceExternalFenceProperties( m_physicalDevice, reinterpret_cast( &externalFenceInfo ), reinterpret_cast( &externalFenceProperties ) ); - return externalFenceProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getExternalFencePropertiesKHR( const vk::PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, vk::ExternalFenceProperties* pExternalFenceProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast( pExternalFenceInfo ), reinterpret_cast( pExternalFenceProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::ExternalFenceProperties PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const &d ) const - { - vk::ExternalFenceProperties externalFenceProperties; - d.vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast( &externalFenceInfo ), reinterpret_cast( &externalFenceProperties ) ); - return externalFenceProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( vk::Format format, vk::ImageType type, vk::ImageTiling tiling, vk::ImageUsageFlags usage, vk::ImageCreateFlags flags, vk::ExternalMemoryHandleTypeFlagsNV externalHandleType, vk::ExternalImageFormatPropertiesNV* pExternalImageFormatProperties, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceExternalImageFormatPropertiesNV( m_physicalDevice, static_cast( format ), static_cast( type ), static_cast( tiling ), static_cast( usage ), static_cast( flags ), static_cast( externalHandleType ), reinterpret_cast( pExternalImageFormatProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type PhysicalDevice::getExternalImageFormatPropertiesNV( vk::Format format, vk::ImageType type, vk::ImageTiling tiling, vk::ImageUsageFlags usage, vk::ImageCreateFlags flags, vk::ExternalMemoryHandleTypeFlagsNV externalHandleType, Dispatch const &d ) const - { - vk::ExternalImageFormatPropertiesNV externalImageFormatProperties; - Result result = static_cast( d.vkGetPhysicalDeviceExternalImageFormatPropertiesNV( m_physicalDevice, static_cast( format ), static_cast( type ), static_cast( tiling ), static_cast( usage ), static_cast( flags ), static_cast( externalHandleType ), reinterpret_cast( &externalImageFormatProperties ) ) ); - return createResultValue( result, externalImageFormatProperties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getExternalImageFormatPropertiesNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphoreProperties( const vk::PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, vk::ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceExternalSemaphoreProperties( m_physicalDevice, reinterpret_cast( pExternalSemaphoreInfo ), reinterpret_cast( pExternalSemaphoreProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::ExternalSemaphoreProperties PhysicalDevice::getExternalSemaphoreProperties( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const &d ) const - { - vk::ExternalSemaphoreProperties externalSemaphoreProperties; - d.vkGetPhysicalDeviceExternalSemaphoreProperties( m_physicalDevice, reinterpret_cast( &externalSemaphoreInfo ), reinterpret_cast( &externalSemaphoreProperties ) ); - return externalSemaphoreProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHR( const vk::PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, vk::ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast( pExternalSemaphoreInfo ), reinterpret_cast( pExternalSemaphoreProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::ExternalSemaphoreProperties PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const &d ) const - { - vk::ExternalSemaphoreProperties externalSemaphoreProperties; - d.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast( &externalSemaphoreInfo ), reinterpret_cast( &externalSemaphoreProperties ) ); - return externalSemaphoreProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( vk::PhysicalDeviceFeatures* pFeatures, Dispatch const &d) const - { - d.vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast( pFeatures ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::PhysicalDeviceFeatures PhysicalDevice::getFeatures(Dispatch const &d ) const - { - vk::PhysicalDeviceFeatures features; - d.vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast( &features ) ); - return features; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2( vk::PhysicalDeviceFeatures2* pFeatures, Dispatch const &d) const - { - d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast( pFeatures ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2(Dispatch const &d ) const - { - vk::PhysicalDeviceFeatures2 features; - d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast( &features ) ); - return features; - } - template - VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFeatures2(Dispatch const &d ) const - { - StructureChain structureChain; - vk::PhysicalDeviceFeatures2& features = structureChain.template get(); - d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast( &features ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( vk::PhysicalDeviceFeatures2* pFeatures, Dispatch const &d) const - { - d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast( pFeatures ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2KHR(Dispatch const &d ) const - { - vk::PhysicalDeviceFeatures2 features; - d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast( &features ) ); - return features; - } - template - VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFeatures2KHR(Dispatch const &d ) const - { - StructureChain structureChain; - vk::PhysicalDeviceFeatures2& features = structureChain.template get(); - d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast( &features ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( vk::Format format, vk::FormatProperties* pFormatProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast( format ), reinterpret_cast( pFormatProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::FormatProperties PhysicalDevice::getFormatProperties( vk::Format format, Dispatch const &d ) const - { - vk::FormatProperties formatProperties; - d.vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); - return formatProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2( vk::Format format, vk::FormatProperties2* pFormatProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceFormatProperties2( m_physicalDevice, static_cast( format ), reinterpret_cast( pFormatProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::FormatProperties2 PhysicalDevice::getFormatProperties2( vk::Format format, Dispatch const &d ) const - { - vk::FormatProperties2 formatProperties; - d.vkGetPhysicalDeviceFormatProperties2( m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); - return formatProperties; - } - template - VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFormatProperties2( vk::Format format, Dispatch const &d ) const - { - StructureChain structureChain; - vk::FormatProperties2& formatProperties = structureChain.template get(); - d.vkGetPhysicalDeviceFormatProperties2( m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( vk::Format format, vk::FormatProperties2* pFormatProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast( format ), reinterpret_cast( pFormatProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::FormatProperties2 PhysicalDevice::getFormatProperties2KHR( vk::Format format, Dispatch const &d ) const - { - vk::FormatProperties2 formatProperties; - d.vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); - return formatProperties; - } - template - VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFormatProperties2KHR( vk::Format format, Dispatch const &d ) const - { - StructureChain structureChain; - vk::FormatProperties2& formatProperties = structureChain.template get(); - d.vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( vk::DeviceGeneratedCommandsFeaturesNVX* pFeatures, vk::DeviceGeneratedCommandsLimitsNVX* pLimits, Dispatch const &d) const - { - d.vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast( pFeatures ), reinterpret_cast( pLimits ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features, Dispatch const &d ) const - { - vk::DeviceGeneratedCommandsLimitsNVX limits; - d.vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast( &features ), reinterpret_cast( &limits ) ); - return limits; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( vk::Format format, vk::ImageType type, vk::ImageTiling tiling, vk::ImageUsageFlags usage, vk::ImageCreateFlags flags, vk::ImageFormatProperties* pImageFormatProperties, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceImageFormatProperties( m_physicalDevice, static_cast( format ), static_cast( type ), static_cast( tiling ), static_cast( usage ), static_cast( flags ), reinterpret_cast( pImageFormatProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type PhysicalDevice::getImageFormatProperties( vk::Format format, vk::ImageType type, vk::ImageTiling tiling, vk::ImageUsageFlags usage, vk::ImageCreateFlags flags, Dispatch const &d ) const - { - vk::ImageFormatProperties imageFormatProperties; - Result result = static_cast( d.vkGetPhysicalDeviceImageFormatProperties( m_physicalDevice, static_cast( format ), static_cast( type ), static_cast( tiling ), static_cast( usage ), static_cast( flags ), reinterpret_cast( &imageFormatProperties ) ) ); - return createResultValue( result, imageFormatProperties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2( const vk::PhysicalDeviceImageFormatInfo2* pImageFormatInfo, vk::ImageFormatProperties2* pImageFormatProperties, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceImageFormatProperties2( m_physicalDevice, reinterpret_cast( pImageFormatInfo ), reinterpret_cast( pImageFormatProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type PhysicalDevice::getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d ) const - { - vk::ImageFormatProperties2 imageFormatProperties; - Result result = static_cast( d.vkGetPhysicalDeviceImageFormatProperties2( m_physicalDevice, reinterpret_cast( &imageFormatInfo ), reinterpret_cast( &imageFormatProperties ) ) ); - return createResultValue( result, imageFormatProperties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties2" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d ) const - { - StructureChain structureChain; - vk::ImageFormatProperties2& imageFormatProperties = structureChain.template get(); - Result result = static_cast( d.vkGetPhysicalDeviceImageFormatProperties2( m_physicalDevice, reinterpret_cast( &imageFormatInfo ), reinterpret_cast( &imageFormatProperties ) ) ); - return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties2" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const vk::PhysicalDeviceImageFormatInfo2* pImageFormatInfo, vk::ImageFormatProperties2* pImageFormatProperties, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast( pImageFormatInfo ), reinterpret_cast( pImageFormatProperties ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d ) const - { - vk::ImageFormatProperties2 imageFormatProperties; - Result result = static_cast( d.vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast( &imageFormatInfo ), reinterpret_cast( &imageFormatProperties ) ) ); - return createResultValue( result, imageFormatProperties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties2KHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const &d ) const - { - StructureChain structureChain; - vk::ImageFormatProperties2& imageFormatProperties = structureChain.template get(); - Result result = static_cast( d.vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast( &imageFormatInfo ), reinterpret_cast( &imageFormatProperties ) ) ); - return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( vk::PhysicalDeviceMemoryProperties* pMemoryProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast( pMemoryProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties(Dispatch const &d ) const - { - vk::PhysicalDeviceMemoryProperties memoryProperties; - d.vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast( &memoryProperties ) ); - return memoryProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2( vk::PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceMemoryProperties2( m_physicalDevice, reinterpret_cast( pMemoryProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::PhysicalDeviceMemoryProperties2 PhysicalDevice::getMemoryProperties2(Dispatch const &d ) const - { - vk::PhysicalDeviceMemoryProperties2 memoryProperties; - d.vkGetPhysicalDeviceMemoryProperties2( m_physicalDevice, reinterpret_cast( &memoryProperties ) ); - return memoryProperties; - } - template - VULKAN_HPP_INLINE StructureChain PhysicalDevice::getMemoryProperties2(Dispatch const &d ) const - { - StructureChain structureChain; - vk::PhysicalDeviceMemoryProperties2& memoryProperties = structureChain.template get(); - d.vkGetPhysicalDeviceMemoryProperties2( m_physicalDevice, reinterpret_cast( &memoryProperties ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( vk::PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast( pMemoryProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::PhysicalDeviceMemoryProperties2 PhysicalDevice::getMemoryProperties2KHR(Dispatch const &d ) const - { - vk::PhysicalDeviceMemoryProperties2 memoryProperties; - d.vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast( &memoryProperties ) ); - return memoryProperties; - } - template - VULKAN_HPP_INLINE StructureChain PhysicalDevice::getMemoryProperties2KHR(Dispatch const &d ) const - { - StructureChain structureChain; - vk::PhysicalDeviceMemoryProperties2& memoryProperties = structureChain.template get(); - d.vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast( &memoryProperties ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getMultisamplePropertiesEXT( vk::SampleCountFlagBits samples, vk::MultisamplePropertiesEXT* pMultisampleProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast( samples ), reinterpret_cast( pMultisampleProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::MultisamplePropertiesEXT PhysicalDevice::getMultisamplePropertiesEXT( vk::SampleCountFlagBits samples, Dispatch const &d ) const - { - vk::MultisamplePropertiesEXT multisampleProperties; - d.vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast( samples ), reinterpret_cast( &multisampleProperties ) ); - return multisampleProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHR( vk::SurfaceKHR surface, uint32_t* pRectCount, vk::Rect2D* pRects, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast( surface ), pRectCount, reinterpret_cast( pRects ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getPresentRectanglesKHR( vk::SurfaceKHR surface, Dispatch const &d ) const - { - std::vector rects; - uint32_t rectCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast( surface ), &rectCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && rectCount ) - { - rects.resize( rectCount ); - result = static_cast( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast( surface ), &rectCount, reinterpret_cast( rects.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( rectCount <= rects.size() ); - rects.resize( rectCount ); - } - return createResultValue( result, rects, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getPresentRectanglesKHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getPresentRectanglesKHR( vk::SurfaceKHR surface, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector rects( vectorAllocator ); - uint32_t rectCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast( surface ), &rectCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && rectCount ) - { - rects.resize( rectCount ); - result = static_cast( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast( surface ), &rectCount, reinterpret_cast( rects.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( rectCount <= rects.size() ); - rects.resize( rectCount ); - } - return createResultValue( result, rects, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getPresentRectanglesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getProperties( vk::PhysicalDeviceProperties* pProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast( pProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::PhysicalDeviceProperties PhysicalDevice::getProperties(Dispatch const &d ) const - { - vk::PhysicalDeviceProperties properties; - d.vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast( &properties ) ); - return properties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getProperties2( vk::PhysicalDeviceProperties2* pProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceProperties2( m_physicalDevice, reinterpret_cast( pProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::PhysicalDeviceProperties2 PhysicalDevice::getProperties2(Dispatch const &d ) const - { - vk::PhysicalDeviceProperties2 properties; - d.vkGetPhysicalDeviceProperties2( m_physicalDevice, reinterpret_cast( &properties ) ); - return properties; - } - template - VULKAN_HPP_INLINE StructureChain PhysicalDevice::getProperties2(Dispatch const &d ) const - { - StructureChain structureChain; - vk::PhysicalDeviceProperties2& properties = structureChain.template get(); - d.vkGetPhysicalDeviceProperties2( m_physicalDevice, reinterpret_cast( &properties ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( vk::PhysicalDeviceProperties2* pProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast( pProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE vk::PhysicalDeviceProperties2 PhysicalDevice::getProperties2KHR(Dispatch const &d ) const - { - vk::PhysicalDeviceProperties2 properties; - d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast( &properties ) ); - return properties; - } - template - VULKAN_HPP_INLINE StructureChain PhysicalDevice::getProperties2KHR(Dispatch const &d ) const - { - StructureChain structureChain; - vk::PhysicalDeviceProperties2& properties = structureChain.template get(); - d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast( &properties ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, vk::QueueFamilyProperties* pQueueFamilyProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast( pQueueFamilyProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties(Dispatch const &d ) const - { - std::vector queueFamilyProperties; - uint32_t queueFamilyPropertyCount; - d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); - queueFamilyProperties.resize( queueFamilyPropertyCount ); - d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); - return queueFamilyProperties; - } - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector queueFamilyProperties( vectorAllocator ); - uint32_t queueFamilyPropertyCount; - d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); - queueFamilyProperties.resize( queueFamilyPropertyCount ); - d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); - return queueFamilyProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2( uint32_t* pQueueFamilyPropertyCount, vk::QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast( pQueueFamilyProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2(Dispatch const &d ) const - { - std::vector queueFamilyProperties; - uint32_t queueFamilyPropertyCount; - d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); - queueFamilyProperties.resize( queueFamilyPropertyCount ); - d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); - return queueFamilyProperties; - } - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector queueFamilyProperties( vectorAllocator ); - uint32_t queueFamilyPropertyCount; - d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); - queueFamilyProperties.resize( queueFamilyPropertyCount ); - d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); - return queueFamilyProperties; - } - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2(Dispatch const &d ) const - { - std::vector queueFamilyProperties; - uint32_t queueFamilyPropertyCount; - d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); - queueFamilyProperties.resize( queueFamilyPropertyCount ); - d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); - return queueFamilyProperties; - } - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector queueFamilyProperties( vectorAllocator ); - uint32_t queueFamilyPropertyCount; - d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); - queueFamilyProperties.resize( queueFamilyPropertyCount ); - d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); - return queueFamilyProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, vk::QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast( pQueueFamilyProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2KHR(Dispatch const &d ) const - { - std::vector queueFamilyProperties; - uint32_t queueFamilyPropertyCount; - d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); - queueFamilyProperties.resize( queueFamilyPropertyCount ); - d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); - return queueFamilyProperties; - } - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2KHR(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector queueFamilyProperties( vectorAllocator ); - uint32_t queueFamilyPropertyCount; - d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); - queueFamilyProperties.resize( queueFamilyPropertyCount ); - d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); - return queueFamilyProperties; - } - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2KHR(Dispatch const &d ) const - { - std::vector queueFamilyProperties; - uint32_t queueFamilyPropertyCount; - d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); - queueFamilyProperties.resize( queueFamilyPropertyCount ); - d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); - return queueFamilyProperties; - } - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2KHR(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector queueFamilyProperties( vectorAllocator ); - uint32_t queueFamilyPropertyCount; - d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); - queueFamilyProperties.resize( queueFamilyPropertyCount ); - d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); - return queueFamilyProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( vk::Format format, vk::ImageType type, vk::SampleCountFlagBits samples, vk::ImageUsageFlags usage, vk::ImageTiling tiling, uint32_t* pPropertyCount, vk::SparseImageFormatProperties* pProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, static_cast( format ), static_cast( type ), static_cast( samples ), static_cast( usage ), static_cast( tiling ), pPropertyCount, reinterpret_cast( pProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getSparseImageFormatProperties( vk::Format format, vk::ImageType type, vk::SampleCountFlagBits samples, vk::ImageUsageFlags usage, vk::ImageTiling tiling, Dispatch const &d ) const - { - std::vector properties; - uint32_t propertyCount; - d.vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, static_cast( format ), static_cast( type ), static_cast( samples ), static_cast( usage ), static_cast( tiling ), &propertyCount, nullptr ); - properties.resize( propertyCount ); - d.vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, static_cast( format ), static_cast( type ), static_cast( samples ), static_cast( usage ), static_cast( tiling ), &propertyCount, reinterpret_cast( properties.data() ) ); - return properties; - } - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getSparseImageFormatProperties( vk::Format format, vk::ImageType type, vk::SampleCountFlagBits samples, vk::ImageUsageFlags usage, vk::ImageTiling tiling, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector properties( vectorAllocator ); - uint32_t propertyCount; - d.vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, static_cast( format ), static_cast( type ), static_cast( samples ), static_cast( usage ), static_cast( tiling ), &propertyCount, nullptr ); - properties.resize( propertyCount ); - d.vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, static_cast( format ), static_cast( type ), static_cast( samples ), static_cast( usage ), static_cast( tiling ), &propertyCount, reinterpret_cast( properties.data() ) ); - return properties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2( const vk::PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, vk::SparseImageFormatProperties2* pProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, reinterpret_cast( pFormatInfo ), pPropertyCount, reinterpret_cast( pProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const &d ) const - { - std::vector properties; - uint32_t propertyCount; - d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, nullptr ); - properties.resize( propertyCount ); - d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, reinterpret_cast( properties.data() ) ); - return properties; - } - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector properties( vectorAllocator ); - uint32_t propertyCount; - d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, nullptr ); - properties.resize( propertyCount ); - d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, reinterpret_cast( properties.data() ) ); - return properties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const vk::PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, vk::SparseImageFormatProperties2* pProperties, Dispatch const &d) const - { - d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast( pFormatInfo ), pPropertyCount, reinterpret_cast( pProperties ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const &d ) const - { - std::vector properties; - uint32_t propertyCount; - d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, nullptr ); - properties.resize( propertyCount ); - d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, reinterpret_cast( properties.data() ) ); - return properties; - } - template - VULKAN_HPP_INLINE std::vector PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector properties( vectorAllocator ); - uint32_t propertyCount; - d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, nullptr ); - properties.resize( propertyCount ); - d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, reinterpret_cast( properties.data() ) ); - return properties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV( uint32_t* pCombinationCount, vk::FramebufferMixedSamplesCombinationNV* pCombinations, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( m_physicalDevice, pCombinationCount, reinterpret_cast( pCombinations ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV(Dispatch const &d ) const - { - std::vector combinations; - uint32_t combinationCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( m_physicalDevice, &combinationCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && combinationCount ) - { - combinations.resize( combinationCount ); - result = static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( m_physicalDevice, &combinationCount, reinterpret_cast( combinations.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( combinationCount <= combinations.size() ); - combinations.resize( combinationCount ); - } - return createResultValue( result, combinations, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector combinations( vectorAllocator ); - uint32_t combinationCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( m_physicalDevice, &combinationCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && combinationCount ) - { - combinations.resize( combinationCount ); - result = static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( m_physicalDevice, &combinationCount, reinterpret_cast( combinations.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( combinationCount <= combinations.size() ); - combinations.resize( combinationCount ); - } - return createResultValue( result, combinations, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( vk::SurfaceKHR surface, vk::SurfaceCapabilities2EXT* pSurfaceCapabilities, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast( surface ), reinterpret_cast( pSurfaceCapabilities ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type PhysicalDevice::getSurfaceCapabilities2EXT( vk::SurfaceKHR surface, Dispatch const &d ) const - { - vk::SurfaceCapabilities2EXT surfaceCapabilities; - Result result = static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast( surface ), reinterpret_cast( &surfaceCapabilities ) ) ); - return createResultValue( result, surfaceCapabilities, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceCapabilities2EXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const vk::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, vk::SurfaceCapabilities2KHR* pSurfaceCapabilities, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast( pSurfaceInfo ), reinterpret_cast( pSurfaceCapabilities ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d ) const - { - vk::SurfaceCapabilities2KHR surfaceCapabilities; - Result result = static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast( &surfaceInfo ), reinterpret_cast( &surfaceCapabilities ) ) ); - return createResultValue( result, surfaceCapabilities, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceCapabilities2KHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d ) const - { - StructureChain structureChain; - vk::SurfaceCapabilities2KHR& surfaceCapabilities = structureChain.template get(); - Result result = static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast( &surfaceInfo ), reinterpret_cast( &surfaceCapabilities ) ) ); - return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceCapabilities2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( vk::SurfaceKHR surface, vk::SurfaceCapabilitiesKHR* pSurfaceCapabilities, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast( surface ), reinterpret_cast( pSurfaceCapabilities ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type PhysicalDevice::getSurfaceCapabilitiesKHR( vk::SurfaceKHR surface, Dispatch const &d ) const - { - vk::SurfaceCapabilitiesKHR surfaceCapabilities; - Result result = static_cast( d.vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast( surface ), reinterpret_cast( &surfaceCapabilities ) ) ); - return createResultValue( result, surfaceCapabilities, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceCapabilitiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( const vk::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, vk::SurfaceFormat2KHR* pSurfaceFormats, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast( pSurfaceInfo ), pSurfaceFormatCount, reinterpret_cast( pSurfaceFormats ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d ) const - { - std::vector surfaceFormats; - uint32_t surfaceFormatCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast( &surfaceInfo ), &surfaceFormatCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && surfaceFormatCount ) - { - surfaceFormats.resize( surfaceFormatCount ); - result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast( surfaceFormats.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); - surfaceFormats.resize( surfaceFormatCount ); - } - return createResultValue( result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceFormats2KHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector surfaceFormats( vectorAllocator ); - uint32_t surfaceFormatCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast( &surfaceInfo ), &surfaceFormatCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && surfaceFormatCount ) - { - surfaceFormats.resize( surfaceFormatCount ); - result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast( surfaceFormats.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); - surfaceFormats.resize( surfaceFormatCount ); - } - return createResultValue( result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceFormats2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( vk::SurfaceKHR surface, uint32_t* pSurfaceFormatCount, vk::SurfaceFormatKHR* pSurfaceFormats, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast( surface ), pSurfaceFormatCount, reinterpret_cast( pSurfaceFormats ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfaceFormatsKHR( vk::SurfaceKHR surface, Dispatch const &d ) const - { - std::vector surfaceFormats; - uint32_t surfaceFormatCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast( surface ), &surfaceFormatCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && surfaceFormatCount ) - { - surfaceFormats.resize( surfaceFormatCount ); - result = static_cast( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast( surface ), &surfaceFormatCount, reinterpret_cast( surfaceFormats.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); - surfaceFormats.resize( surfaceFormatCount ); - } - return createResultValue( result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceFormatsKHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfaceFormatsKHR( vk::SurfaceKHR surface, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector surfaceFormats( vectorAllocator ); - uint32_t surfaceFormatCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast( surface ), &surfaceFormatCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && surfaceFormatCount ) - { - surfaceFormats.resize( surfaceFormatCount ); - result = static_cast( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast( surface ), &surfaceFormatCount, reinterpret_cast( surfaceFormats.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); - surfaceFormats.resize( surfaceFormatCount ); - } - return createResultValue( result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceFormatsKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModes2EXT( const vk::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, vk::PresentModeKHR* pPresentModes, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( m_physicalDevice, reinterpret_cast( pSurfaceInfo ), pPresentModeCount, reinterpret_cast( pPresentModes ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const &d ) const - { - std::vector presentModes; - uint32_t presentModeCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( m_physicalDevice, reinterpret_cast( &surfaceInfo ), &presentModeCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && presentModeCount ) - { - presentModes.resize( presentModeCount ); - result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( m_physicalDevice, reinterpret_cast( &surfaceInfo ), &presentModeCount, reinterpret_cast( presentModes.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); - presentModes.resize( presentModeCount ); - } - return createResultValue( result, presentModes, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfacePresentModes2EXT" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector presentModes( vectorAllocator ); - uint32_t presentModeCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( m_physicalDevice, reinterpret_cast( &surfaceInfo ), &presentModeCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && presentModeCount ) - { - presentModes.resize( presentModeCount ); - result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( m_physicalDevice, reinterpret_cast( &surfaceInfo ), &presentModeCount, reinterpret_cast( presentModes.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); - presentModes.resize( presentModeCount ); - } - return createResultValue( result, presentModes, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfacePresentModes2EXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( vk::SurfaceKHR surface, uint32_t* pPresentModeCount, vk::PresentModeKHR* pPresentModes, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast( surface ), pPresentModeCount, reinterpret_cast( pPresentModes ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfacePresentModesKHR( vk::SurfaceKHR surface, Dispatch const &d ) const - { - std::vector presentModes; - uint32_t presentModeCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast( surface ), &presentModeCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && presentModeCount ) - { - presentModes.resize( presentModeCount ); - result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast( surface ), &presentModeCount, reinterpret_cast( presentModes.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); - presentModes.resize( presentModeCount ); - } - return createResultValue( result, presentModes, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfacePresentModesKHR" ); - } - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfacePresentModesKHR( vk::SurfaceKHR surface, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector presentModes( vectorAllocator ); - uint32_t presentModeCount; - Result result; - do - { - result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast( surface ), &presentModeCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && presentModeCount ) - { - presentModes.resize( presentModeCount ); - result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast( surface ), &presentModeCount, reinterpret_cast( presentModes.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); - presentModes.resize( presentModeCount ); - } - return createResultValue( result, presentModes, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfacePresentModesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, vk::SurfaceKHR surface, vk::Bool32* pSupported, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast( surface ), reinterpret_cast( pSupported ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, vk::SurfaceKHR surface, Dispatch const &d ) const - { - vk::Bool32 supported; - Result result = static_cast( d.vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast( surface ), reinterpret_cast( &supported ) ) ); - return createResultValue( result, supported, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceSupportKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display, Dispatch const &d ) const - { - return d.vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex ) ); - } -#else - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex, Dispatch const &d ) const - { - return d.vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + //=== VK_EXT_sample_locations === + vkCmdSetSampleLocationsEXT = + PFN_vkCmdSetSampleLocationsEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEXT" ) ); + + //=== VK_KHR_get_memory_requirements2 === + vkGetImageMemoryRequirements2KHR = + PFN_vkGetImageMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2KHR" ) ); + if ( !vkGetImageMemoryRequirements2 ) + vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2KHR; + vkGetBufferMemoryRequirements2KHR = + PFN_vkGetBufferMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2KHR" ) ); + if ( !vkGetBufferMemoryRequirements2 ) + vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2KHR; + vkGetImageSparseMemoryRequirements2KHR = PFN_vkGetImageSparseMemoryRequirements2KHR( + vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2KHR" ) ); + if ( !vkGetImageSparseMemoryRequirements2 ) + vkGetImageSparseMemoryRequirements2 = vkGetImageSparseMemoryRequirements2KHR; + + //=== VK_KHR_acceleration_structure === + vkCreateAccelerationStructureKHR = + PFN_vkCreateAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureKHR" ) ); + vkDestroyAccelerationStructureKHR = + PFN_vkDestroyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureKHR" ) ); + vkCmdBuildAccelerationStructuresKHR = + PFN_vkCmdBuildAccelerationStructuresKHR( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresKHR" ) ); + vkCmdBuildAccelerationStructuresIndirectKHR = PFN_vkCmdBuildAccelerationStructuresIndirectKHR( + vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresIndirectKHR" ) ); + vkBuildAccelerationStructuresKHR = + PFN_vkBuildAccelerationStructuresKHR( vkGetDeviceProcAddr( device, "vkBuildAccelerationStructuresKHR" ) ); + vkCopyAccelerationStructureKHR = + PFN_vkCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureKHR" ) ); + vkCopyAccelerationStructureToMemoryKHR = PFN_vkCopyAccelerationStructureToMemoryKHR( + vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureToMemoryKHR" ) ); + vkCopyMemoryToAccelerationStructureKHR = PFN_vkCopyMemoryToAccelerationStructureKHR( + vkGetDeviceProcAddr( device, "vkCopyMemoryToAccelerationStructureKHR" ) ); + vkWriteAccelerationStructuresPropertiesKHR = PFN_vkWriteAccelerationStructuresPropertiesKHR( + vkGetDeviceProcAddr( device, "vkWriteAccelerationStructuresPropertiesKHR" ) ); + vkCmdCopyAccelerationStructureKHR = + PFN_vkCmdCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureKHR" ) ); + vkCmdCopyAccelerationStructureToMemoryKHR = PFN_vkCmdCopyAccelerationStructureToMemoryKHR( + vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureToMemoryKHR" ) ); + vkCmdCopyMemoryToAccelerationStructureKHR = PFN_vkCmdCopyMemoryToAccelerationStructureKHR( + vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToAccelerationStructureKHR" ) ); + vkGetAccelerationStructureDeviceAddressKHR = PFN_vkGetAccelerationStructureDeviceAddressKHR( + vkGetDeviceProcAddr( device, "vkGetAccelerationStructureDeviceAddressKHR" ) ); + vkCmdWriteAccelerationStructuresPropertiesKHR = PFN_vkCmdWriteAccelerationStructuresPropertiesKHR( + vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesKHR" ) ); + vkGetDeviceAccelerationStructureCompatibilityKHR = PFN_vkGetDeviceAccelerationStructureCompatibilityKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceAccelerationStructureCompatibilityKHR" ) ); + vkGetAccelerationStructureBuildSizesKHR = PFN_vkGetAccelerationStructureBuildSizesKHR( + vkGetDeviceProcAddr( device, "vkGetAccelerationStructureBuildSizesKHR" ) ); + + //=== VK_KHR_sampler_ycbcr_conversion === + vkCreateSamplerYcbcrConversionKHR = + PFN_vkCreateSamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversionKHR" ) ); + if ( !vkCreateSamplerYcbcrConversion ) + vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversionKHR; + vkDestroySamplerYcbcrConversionKHR = + PFN_vkDestroySamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversionKHR" ) ); + if ( !vkDestroySamplerYcbcrConversion ) + vkDestroySamplerYcbcrConversion = vkDestroySamplerYcbcrConversionKHR; + + //=== VK_KHR_bind_memory2 === + vkBindBufferMemory2KHR = PFN_vkBindBufferMemory2KHR( vkGetDeviceProcAddr( device, "vkBindBufferMemory2KHR" ) ); + if ( !vkBindBufferMemory2 ) + vkBindBufferMemory2 = vkBindBufferMemory2KHR; + vkBindImageMemory2KHR = PFN_vkBindImageMemory2KHR( vkGetDeviceProcAddr( device, "vkBindImageMemory2KHR" ) ); + if ( !vkBindImageMemory2 ) + vkBindImageMemory2 = vkBindImageMemory2KHR; + + //=== VK_EXT_image_drm_format_modifier === + vkGetImageDrmFormatModifierPropertiesEXT = PFN_vkGetImageDrmFormatModifierPropertiesEXT( + vkGetDeviceProcAddr( device, "vkGetImageDrmFormatModifierPropertiesEXT" ) ); + + //=== VK_EXT_validation_cache === + vkCreateValidationCacheEXT = + PFN_vkCreateValidationCacheEXT( vkGetDeviceProcAddr( device, "vkCreateValidationCacheEXT" ) ); + vkDestroyValidationCacheEXT = + PFN_vkDestroyValidationCacheEXT( vkGetDeviceProcAddr( device, "vkDestroyValidationCacheEXT" ) ); + vkMergeValidationCachesEXT = + PFN_vkMergeValidationCachesEXT( vkGetDeviceProcAddr( device, "vkMergeValidationCachesEXT" ) ); + vkGetValidationCacheDataEXT = + PFN_vkGetValidationCacheDataEXT( vkGetDeviceProcAddr( device, "vkGetValidationCacheDataEXT" ) ); + + //=== VK_NV_shading_rate_image === + vkCmdBindShadingRateImageNV = + PFN_vkCmdBindShadingRateImageNV( vkGetDeviceProcAddr( device, "vkCmdBindShadingRateImageNV" ) ); + vkCmdSetViewportShadingRatePaletteNV = PFN_vkCmdSetViewportShadingRatePaletteNV( + vkGetDeviceProcAddr( device, "vkCmdSetViewportShadingRatePaletteNV" ) ); + vkCmdSetCoarseSampleOrderNV = + PFN_vkCmdSetCoarseSampleOrderNV( vkGetDeviceProcAddr( device, "vkCmdSetCoarseSampleOrderNV" ) ); + + //=== VK_NV_ray_tracing === + vkCreateAccelerationStructureNV = + PFN_vkCreateAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureNV" ) ); + vkDestroyAccelerationStructureNV = + PFN_vkDestroyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureNV" ) ); + vkGetAccelerationStructureMemoryRequirementsNV = PFN_vkGetAccelerationStructureMemoryRequirementsNV( + vkGetDeviceProcAddr( device, "vkGetAccelerationStructureMemoryRequirementsNV" ) ); + vkBindAccelerationStructureMemoryNV = + PFN_vkBindAccelerationStructureMemoryNV( vkGetDeviceProcAddr( device, "vkBindAccelerationStructureMemoryNV" ) ); + vkCmdBuildAccelerationStructureNV = + PFN_vkCmdBuildAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructureNV" ) ); + vkCmdCopyAccelerationStructureNV = + PFN_vkCmdCopyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureNV" ) ); + vkCmdTraceRaysNV = PFN_vkCmdTraceRaysNV( vkGetDeviceProcAddr( device, "vkCmdTraceRaysNV" ) ); + vkCreateRayTracingPipelinesNV = + PFN_vkCreateRayTracingPipelinesNV( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesNV" ) ); + vkGetRayTracingShaderGroupHandlesNV = + PFN_vkGetRayTracingShaderGroupHandlesNV( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesNV" ) ); + if ( !vkGetRayTracingShaderGroupHandlesKHR ) + vkGetRayTracingShaderGroupHandlesKHR = vkGetRayTracingShaderGroupHandlesNV; + vkGetAccelerationStructureHandleNV = + PFN_vkGetAccelerationStructureHandleNV( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureHandleNV" ) ); + vkCmdWriteAccelerationStructuresPropertiesNV = PFN_vkCmdWriteAccelerationStructuresPropertiesNV( + vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesNV" ) ); + vkCompileDeferredNV = PFN_vkCompileDeferredNV( vkGetDeviceProcAddr( device, "vkCompileDeferredNV" ) ); + + //=== VK_KHR_maintenance3 === + vkGetDescriptorSetLayoutSupportKHR = + PFN_vkGetDescriptorSetLayoutSupportKHR( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupportKHR" ) ); + if ( !vkGetDescriptorSetLayoutSupport ) + vkGetDescriptorSetLayoutSupport = vkGetDescriptorSetLayoutSupportKHR; + + //=== VK_KHR_draw_indirect_count === + vkCmdDrawIndirectCountKHR = + PFN_vkCmdDrawIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountKHR" ) ); + if ( !vkCmdDrawIndirectCount ) + vkCmdDrawIndirectCount = vkCmdDrawIndirectCountKHR; + vkCmdDrawIndexedIndirectCountKHR = + PFN_vkCmdDrawIndexedIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountKHR" ) ); + if ( !vkCmdDrawIndexedIndirectCount ) + vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountKHR; + + //=== VK_EXT_external_memory_host === + vkGetMemoryHostPointerPropertiesEXT = + PFN_vkGetMemoryHostPointerPropertiesEXT( vkGetDeviceProcAddr( device, "vkGetMemoryHostPointerPropertiesEXT" ) ); + + //=== VK_AMD_buffer_marker === + vkCmdWriteBufferMarkerAMD = + PFN_vkCmdWriteBufferMarkerAMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarkerAMD" ) ); + + //=== VK_EXT_calibrated_timestamps === + vkGetCalibratedTimestampsEXT = + PFN_vkGetCalibratedTimestampsEXT( vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsEXT" ) ); + + //=== VK_NV_mesh_shader === + vkCmdDrawMeshTasksNV = PFN_vkCmdDrawMeshTasksNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksNV" ) ); + vkCmdDrawMeshTasksIndirectNV = + PFN_vkCmdDrawMeshTasksIndirectNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectNV" ) ); + vkCmdDrawMeshTasksIndirectCountNV = + PFN_vkCmdDrawMeshTasksIndirectCountNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountNV" ) ); + + //=== VK_NV_scissor_exclusive === + vkCmdSetExclusiveScissorNV = + PFN_vkCmdSetExclusiveScissorNV( vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorNV" ) ); + + //=== VK_NV_device_diagnostic_checkpoints === + vkCmdSetCheckpointNV = PFN_vkCmdSetCheckpointNV( vkGetDeviceProcAddr( device, "vkCmdSetCheckpointNV" ) ); + vkGetQueueCheckpointDataNV = + PFN_vkGetQueueCheckpointDataNV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointDataNV" ) ); + + //=== VK_KHR_timeline_semaphore === + vkGetSemaphoreCounterValueKHR = + PFN_vkGetSemaphoreCounterValueKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValueKHR" ) ); + if ( !vkGetSemaphoreCounterValue ) + vkGetSemaphoreCounterValue = vkGetSemaphoreCounterValueKHR; + vkWaitSemaphoresKHR = PFN_vkWaitSemaphoresKHR( vkGetDeviceProcAddr( device, "vkWaitSemaphoresKHR" ) ); + if ( !vkWaitSemaphores ) + vkWaitSemaphores = vkWaitSemaphoresKHR; + vkSignalSemaphoreKHR = PFN_vkSignalSemaphoreKHR( vkGetDeviceProcAddr( device, "vkSignalSemaphoreKHR" ) ); + if ( !vkSignalSemaphore ) + vkSignalSemaphore = vkSignalSemaphoreKHR; + + //=== VK_INTEL_performance_query === + vkInitializePerformanceApiINTEL = + PFN_vkInitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkInitializePerformanceApiINTEL" ) ); + vkUninitializePerformanceApiINTEL = + PFN_vkUninitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkUninitializePerformanceApiINTEL" ) ); + vkCmdSetPerformanceMarkerINTEL = + PFN_vkCmdSetPerformanceMarkerINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceMarkerINTEL" ) ); + vkCmdSetPerformanceStreamMarkerINTEL = PFN_vkCmdSetPerformanceStreamMarkerINTEL( + vkGetDeviceProcAddr( device, "vkCmdSetPerformanceStreamMarkerINTEL" ) ); + vkCmdSetPerformanceOverrideINTEL = + PFN_vkCmdSetPerformanceOverrideINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceOverrideINTEL" ) ); + vkAcquirePerformanceConfigurationINTEL = PFN_vkAcquirePerformanceConfigurationINTEL( + vkGetDeviceProcAddr( device, "vkAcquirePerformanceConfigurationINTEL" ) ); + vkReleasePerformanceConfigurationINTEL = PFN_vkReleasePerformanceConfigurationINTEL( + vkGetDeviceProcAddr( device, "vkReleasePerformanceConfigurationINTEL" ) ); + vkQueueSetPerformanceConfigurationINTEL = PFN_vkQueueSetPerformanceConfigurationINTEL( + vkGetDeviceProcAddr( device, "vkQueueSetPerformanceConfigurationINTEL" ) ); + vkGetPerformanceParameterINTEL = + PFN_vkGetPerformanceParameterINTEL( vkGetDeviceProcAddr( device, "vkGetPerformanceParameterINTEL" ) ); + + //=== VK_AMD_display_native_hdr === + vkSetLocalDimmingAMD = PFN_vkSetLocalDimmingAMD( vkGetDeviceProcAddr( device, "vkSetLocalDimmingAMD" ) ); + + //=== VK_KHR_fragment_shading_rate === + vkCmdSetFragmentShadingRateKHR = + PFN_vkCmdSetFragmentShadingRateKHR( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateKHR" ) ); + + //=== VK_EXT_buffer_device_address === + vkGetBufferDeviceAddressEXT = + PFN_vkGetBufferDeviceAddressEXT( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressEXT" ) ); + if ( !vkGetBufferDeviceAddress ) + vkGetBufferDeviceAddress = vkGetBufferDeviceAddressEXT; + + //=== VK_KHR_present_wait === + vkWaitForPresentKHR = PFN_vkWaitForPresentKHR( vkGetDeviceProcAddr( device, "vkWaitForPresentKHR" ) ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + vkAcquireFullScreenExclusiveModeEXT = + PFN_vkAcquireFullScreenExclusiveModeEXT( vkGetDeviceProcAddr( device, "vkAcquireFullScreenExclusiveModeEXT" ) ); + vkReleaseFullScreenExclusiveModeEXT = + PFN_vkReleaseFullScreenExclusiveModeEXT( vkGetDeviceProcAddr( device, "vkReleaseFullScreenExclusiveModeEXT" ) ); + vkGetDeviceGroupSurfacePresentModes2EXT = PFN_vkGetDeviceGroupSurfacePresentModes2EXT( + vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModes2EXT" ) ); #endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_XCB_KHR - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id, Dispatch const &d ) const - { - return d.vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XCB_KHR*/ - -#ifdef VK_USE_PLATFORM_XLIB_KHR - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID, Dispatch const &d) const - { - return static_cast( d.vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID, Dispatch const &d ) const - { - return d.vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ - -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - template - VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, vk::DisplayKHR* pDisplay, Dispatch const &d) const - { - return static_cast( d.vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast( pDisplay ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput, Dispatch const &d ) const - { - vk::DisplayKHR display; - Result result = static_cast( d.vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast( &display ) ) ); - return createResultValue( result, display, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getRandROutputDisplayEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( vk::DisplayKHR display, Dispatch const &d) const - { - return static_cast( d.vkReleaseDisplayEXT( m_physicalDevice, static_cast( display ) ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type PhysicalDevice::releaseDisplayEXT( vk::DisplayKHR display, Dispatch const &d ) const - { - Result result = static_cast( d.vkReleaseDisplayEXT( m_physicalDevice, static_cast( display ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::releaseDisplayEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Queue::getCheckpointDataNV( uint32_t* pCheckpointDataCount, vk::CheckpointDataNV* pCheckpointData, Dispatch const &d) const - { - d.vkGetQueueCheckpointDataNV( m_queue, pCheckpointDataCount, reinterpret_cast( pCheckpointData ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE std::vector Queue::getCheckpointDataNV(Dispatch const &d ) const - { - std::vector checkpointData; - uint32_t checkpointDataCount; - d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, nullptr ); - checkpointData.resize( checkpointDataCount ); - d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, reinterpret_cast( checkpointData.data() ) ); - return checkpointData; - } - template - VULKAN_HPP_INLINE std::vector Queue::getCheckpointDataNV(Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector checkpointData( vectorAllocator ); - uint32_t checkpointDataCount; - d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, nullptr ); - checkpointData.resize( checkpointDataCount ); - d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, reinterpret_cast( checkpointData.data() ) ); - return checkpointData; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( const vk::DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d) const - { - d.vkQueueBeginDebugUtilsLabelEXT( m_queue, reinterpret_cast( pLabelInfo ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d ) const - { - d.vkQueueBeginDebugUtilsLabelEXT( m_queue, reinterpret_cast( &labelInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const vk::BindSparseInfo* pBindInfo, vk::Fence fence, Dispatch const &d) const - { - return static_cast( d.vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast( pBindInfo ), static_cast( fence ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Queue::bindSparse( ArrayProxy bindInfo, vk::Fence fence, Dispatch const &d ) const - { - Result result = static_cast( d.vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast( bindInfo.data() ), static_cast( fence ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Queue::bindSparse" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Queue::endDebugUtilsLabelEXT(Dispatch const &d) const - { - d.vkQueueEndDebugUtilsLabelEXT( m_queue ); - } -#else - template - VULKAN_HPP_INLINE void Queue::endDebugUtilsLabelEXT(Dispatch const &d ) const - { - d.vkQueueEndDebugUtilsLabelEXT( m_queue ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( const vk::DebugUtilsLabelEXT* pLabelInfo, Dispatch const &d) const - { - d.vkQueueInsertDebugUtilsLabelEXT( m_queue, reinterpret_cast( pLabelInfo ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const &d ) const - { - d.vkQueueInsertDebugUtilsLabelEXT( m_queue, reinterpret_cast( &labelInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Queue::presentKHR( const vk::PresentInfoKHR* pPresentInfo, Dispatch const &d) const - { - return static_cast( d.vkQueuePresentKHR( m_queue, reinterpret_cast( pPresentInfo ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo, Dispatch const &d ) const - { - Result result = static_cast( d.vkQueuePresentKHR( m_queue, reinterpret_cast( &presentInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Queue::setPerformanceConfigurationINTEL( vk::PerformanceConfigurationINTEL configuration, Dispatch const &d) const - { - return static_cast( d.vkQueueSetPerformanceConfigurationINTEL( m_queue, static_cast( configuration ) ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type Queue::setPerformanceConfigurationINTEL( vk::PerformanceConfigurationINTEL configuration, Dispatch const &d ) const - { - Result result = static_cast( d.vkQueueSetPerformanceConfigurationINTEL( m_queue, static_cast( configuration ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Queue::setPerformanceConfigurationINTEL" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const vk::SubmitInfo* pSubmits, vk::Fence fence, Dispatch const &d) const - { - return static_cast( d.vkQueueSubmit( m_queue, submitCount, reinterpret_cast( pSubmits ), static_cast( fence ) ) ); - } -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE ResultValueType::type Queue::submit( ArrayProxy submits, vk::Fence fence, Dispatch const &d ) const - { - Result result = static_cast( d.vkQueueSubmit( m_queue, submits.size() , reinterpret_cast( submits.data() ), static_cast( fence ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Queue::submit" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Queue::waitIdle(Dispatch const &d) const - { - return static_cast( d.vkQueueWaitIdle( m_queue ) ); - } -#else - template - VULKAN_HPP_INLINE ResultValueType::type Queue::waitIdle(Dispatch const &d ) const - { - Result result = static_cast( d.vkQueueWaitIdle( m_queue ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Queue::waitIdle" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - template <> struct isStructureChainValid{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_GGP - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_GGP*/ - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct isStructureChainValid{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - template <> struct isStructureChainValid{ enum { value = true }; }; - template <> struct isStructureChainValid{ enum { value = true }; }; - - class DispatchLoaderDynamic - { - public: - PFN_vkCreateInstance vkCreateInstance = 0; - PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties = 0; - PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties = 0; - PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion = 0; - PFN_vkBeginCommandBuffer vkBeginCommandBuffer = 0; - PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT = 0; - PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT = 0; - PFN_vkCmdBeginQuery vkCmdBeginQuery = 0; - PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT = 0; - PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass = 0; - PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR = 0; - PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT = 0; - PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets = 0; - PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer = 0; - PFN_vkCmdBindPipeline vkCmdBindPipeline = 0; - PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV = 0; - PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT = 0; - PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers = 0; - PFN_vkCmdBlitImage vkCmdBlitImage = 0; - PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV = 0; - PFN_vkCmdClearAttachments vkCmdClearAttachments = 0; - PFN_vkCmdClearColorImage vkCmdClearColorImage = 0; - PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage = 0; - PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV = 0; - PFN_vkCmdCopyBuffer vkCmdCopyBuffer = 0; - PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage = 0; - PFN_vkCmdCopyImage vkCmdCopyImage = 0; - PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer = 0; - PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults = 0; - PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT = 0; - PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT = 0; - PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT = 0; - PFN_vkCmdDispatch vkCmdDispatch = 0; - PFN_vkCmdDispatchBase vkCmdDispatchBase = 0; - PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR = 0; - PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect = 0; - PFN_vkCmdDraw vkCmdDraw = 0; - PFN_vkCmdDrawIndexed vkCmdDrawIndexed = 0; - PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect = 0; - PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD = 0; - PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR = 0; - PFN_vkCmdDrawIndirect vkCmdDrawIndirect = 0; - PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT = 0; - PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD = 0; - PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR = 0; - PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV = 0; - PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV = 0; - PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV = 0; - PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT = 0; - PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT = 0; - PFN_vkCmdEndQuery vkCmdEndQuery = 0; - PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT = 0; - PFN_vkCmdEndRenderPass vkCmdEndRenderPass = 0; - PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR = 0; - PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT = 0; - PFN_vkCmdExecuteCommands vkCmdExecuteCommands = 0; - PFN_vkCmdFillBuffer vkCmdFillBuffer = 0; - PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT = 0; - PFN_vkCmdNextSubpass vkCmdNextSubpass = 0; - PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR = 0; - PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier = 0; - PFN_vkCmdProcessCommandsNVX vkCmdProcessCommandsNVX = 0; - PFN_vkCmdPushConstants vkCmdPushConstants = 0; - PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR = 0; - PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR = 0; - PFN_vkCmdReserveSpaceForCommandsNVX vkCmdReserveSpaceForCommandsNVX = 0; - PFN_vkCmdResetEvent vkCmdResetEvent = 0; - PFN_vkCmdResetQueryPool vkCmdResetQueryPool = 0; - PFN_vkCmdResolveImage vkCmdResolveImage = 0; - PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants = 0; - PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV = 0; - PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV = 0; - PFN_vkCmdSetDepthBias vkCmdSetDepthBias = 0; - PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds = 0; - PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask = 0; - PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR = 0; - PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT = 0; - PFN_vkCmdSetEvent vkCmdSetEvent = 0; - PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV = 0; - PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT = 0; - PFN_vkCmdSetLineWidth vkCmdSetLineWidth = 0; - PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL = 0; - PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL = 0; - PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL = 0; - PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT = 0; - PFN_vkCmdSetScissor vkCmdSetScissor = 0; - PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask = 0; - PFN_vkCmdSetStencilReference vkCmdSetStencilReference = 0; - PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask = 0; - PFN_vkCmdSetViewport vkCmdSetViewport = 0; - PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV = 0; - PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV = 0; - PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV = 0; - PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer = 0; - PFN_vkCmdWaitEvents vkCmdWaitEvents = 0; - PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV = 0; - PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD = 0; - PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp = 0; - PFN_vkEndCommandBuffer vkEndCommandBuffer = 0; - PFN_vkResetCommandBuffer vkResetCommandBuffer = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR = 0; - PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR = 0; - PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL = 0; - PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers = 0; - PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets = 0; - PFN_vkAllocateMemory vkAllocateMemory = 0; - PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV = 0; - PFN_vkBindBufferMemory vkBindBufferMemory = 0; - PFN_vkBindBufferMemory2 vkBindBufferMemory2 = 0; - PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR = 0; - PFN_vkBindImageMemory vkBindImageMemory = 0; - PFN_vkBindImageMemory2 vkBindImageMemory2 = 0; - PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR = 0; - PFN_vkCompileDeferredNV vkCompileDeferredNV = 0; - PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV = 0; - PFN_vkCreateBuffer vkCreateBuffer = 0; - PFN_vkCreateBufferView vkCreateBufferView = 0; - PFN_vkCreateCommandPool vkCreateCommandPool = 0; - PFN_vkCreateComputePipelines vkCreateComputePipelines = 0; - PFN_vkCreateDescriptorPool vkCreateDescriptorPool = 0; - PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout = 0; - PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate = 0; - PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR = 0; - PFN_vkCreateEvent vkCreateEvent = 0; - PFN_vkCreateFence vkCreateFence = 0; - PFN_vkCreateFramebuffer vkCreateFramebuffer = 0; - PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines = 0; - PFN_vkCreateImage vkCreateImage = 0; - PFN_vkCreateImageView vkCreateImageView = 0; - PFN_vkCreateIndirectCommandsLayoutNVX vkCreateIndirectCommandsLayoutNVX = 0; - PFN_vkCreateObjectTableNVX vkCreateObjectTableNVX = 0; - PFN_vkCreatePipelineCache vkCreatePipelineCache = 0; - PFN_vkCreatePipelineLayout vkCreatePipelineLayout = 0; - PFN_vkCreateQueryPool vkCreateQueryPool = 0; - PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV = 0; - PFN_vkCreateRenderPass vkCreateRenderPass = 0; - PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR = 0; - PFN_vkCreateSampler vkCreateSampler = 0; - PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion = 0; - PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR = 0; - PFN_vkCreateSemaphore vkCreateSemaphore = 0; - PFN_vkCreateShaderModule vkCreateShaderModule = 0; - PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR = 0; - PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR = 0; - PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT = 0; - PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT = 0; - PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT = 0; - PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV = 0; - PFN_vkDestroyBuffer vkDestroyBuffer = 0; - PFN_vkDestroyBufferView vkDestroyBufferView = 0; - PFN_vkDestroyCommandPool vkDestroyCommandPool = 0; - PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool = 0; - PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout = 0; - PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate = 0; - PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR = 0; - PFN_vkDestroyDevice vkDestroyDevice = 0; - PFN_vkDestroyEvent vkDestroyEvent = 0; - PFN_vkDestroyFence vkDestroyFence = 0; - PFN_vkDestroyFramebuffer vkDestroyFramebuffer = 0; - PFN_vkDestroyImage vkDestroyImage = 0; - PFN_vkDestroyImageView vkDestroyImageView = 0; - PFN_vkDestroyIndirectCommandsLayoutNVX vkDestroyIndirectCommandsLayoutNVX = 0; - PFN_vkDestroyObjectTableNVX vkDestroyObjectTableNVX = 0; - PFN_vkDestroyPipeline vkDestroyPipeline = 0; - PFN_vkDestroyPipelineCache vkDestroyPipelineCache = 0; - PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout = 0; - PFN_vkDestroyQueryPool vkDestroyQueryPool = 0; - PFN_vkDestroyRenderPass vkDestroyRenderPass = 0; - PFN_vkDestroySampler vkDestroySampler = 0; - PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion = 0; - PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR = 0; - PFN_vkDestroySemaphore vkDestroySemaphore = 0; - PFN_vkDestroyShaderModule vkDestroyShaderModule = 0; - PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR = 0; - PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT = 0; - PFN_vkDeviceWaitIdle vkDeviceWaitIdle = 0; - PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT = 0; - PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges = 0; - PFN_vkFreeCommandBuffers vkFreeCommandBuffers = 0; - PFN_vkFreeDescriptorSets vkFreeDescriptorSets = 0; - PFN_vkFreeMemory vkFreeMemory = 0; - PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV = 0; - PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV = 0; -#ifdef VK_USE_PLATFORM_ANDROID_KHR - PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID = 0; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT = 0; - PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements = 0; - PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 = 0; - PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR = 0; - PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT = 0; - PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport = 0; - PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR = 0; - PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures = 0; - PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR = 0; - PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR = 0; - PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment = 0; - PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = 0; - PFN_vkGetDeviceQueue vkGetDeviceQueue = 0; - PFN_vkGetDeviceQueue2 vkGetDeviceQueue2 = 0; - PFN_vkGetEventStatus vkGetEventStatus = 0; - PFN_vkGetFenceFdKHR vkGetFenceFdKHR = 0; - PFN_vkGetFenceStatus vkGetFenceStatus = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT = 0; - PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements = 0; - PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 = 0; - PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR = 0; - PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements = 0; - PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 = 0; - PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR = 0; - PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout = 0; - PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX = 0; -#ifdef VK_USE_PLATFORM_ANDROID_KHR - PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID = 0; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR = 0; - PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR = 0; - PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE = 0; - PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL = 0; - PFN_vkGetPipelineCacheData vkGetPipelineCacheData = 0; - PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR = 0; - PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR = 0; - PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR = 0; - PFN_vkGetQueryPoolResults vkGetQueryPoolResults = 0; - PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV = 0; - PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE = 0; - PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity = 0; - PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD = 0; - PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT = 0; - PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR = 0; - PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR = 0; - PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT = 0; - PFN_vkImportFenceFdKHR vkImportFenceFdKHR = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL = 0; - PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges = 0; - PFN_vkMapMemory vkMapMemory = 0; - PFN_vkMergePipelineCaches vkMergePipelineCaches = 0; - PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT = 0; - PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT = 0; - PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT = 0; - PFN_vkRegisterObjectsNVX vkRegisterObjectsNVX = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL = 0; - PFN_vkResetCommandPool vkResetCommandPool = 0; - PFN_vkResetDescriptorPool vkResetDescriptorPool = 0; - PFN_vkResetEvent vkResetEvent = 0; - PFN_vkResetFences vkResetFences = 0; - PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT = 0; - PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT = 0; - PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT = 0; - PFN_vkSetEvent vkSetEvent = 0; - PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT = 0; - PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD = 0; - PFN_vkTrimCommandPool vkTrimCommandPool = 0; - PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR = 0; - PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL = 0; - PFN_vkUnmapMemory vkUnmapMemory = 0; - PFN_vkUnregisterObjectsNVX vkUnregisterObjectsNVX = 0; - PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate = 0; - PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR = 0; - PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets = 0; - PFN_vkWaitForFences vkWaitForFences = 0; -#ifdef VK_USE_PLATFORM_ANDROID_KHR - PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR = 0; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT = 0; - PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT = 0; - PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR = 0; - PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT = 0; -#ifdef VK_USE_PLATFORM_IOS_MVK - PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK = 0; -#endif /*VK_USE_PLATFORM_IOS_MVK*/ -#ifdef VK_USE_PLATFORM_FUCHSIA - PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA = 0; + //=== VK_KHR_buffer_device_address === + vkGetBufferDeviceAddressKHR = + PFN_vkGetBufferDeviceAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressKHR" ) ); + if ( !vkGetBufferDeviceAddress ) + vkGetBufferDeviceAddress = vkGetBufferDeviceAddressKHR; + vkGetBufferOpaqueCaptureAddressKHR = + PFN_vkGetBufferOpaqueCaptureAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddressKHR" ) ); + if ( !vkGetBufferOpaqueCaptureAddress ) + vkGetBufferOpaqueCaptureAddress = vkGetBufferOpaqueCaptureAddressKHR; + vkGetDeviceMemoryOpaqueCaptureAddressKHR = PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR" ) ); + if ( !vkGetDeviceMemoryOpaqueCaptureAddress ) + vkGetDeviceMemoryOpaqueCaptureAddress = vkGetDeviceMemoryOpaqueCaptureAddressKHR; + + //=== VK_EXT_line_rasterization === + vkCmdSetLineStippleEXT = PFN_vkCmdSetLineStippleEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleEXT" ) ); + + //=== VK_EXT_host_query_reset === + vkResetQueryPoolEXT = PFN_vkResetQueryPoolEXT( vkGetDeviceProcAddr( device, "vkResetQueryPoolEXT" ) ); + if ( !vkResetQueryPool ) + vkResetQueryPool = vkResetQueryPoolEXT; + + //=== VK_EXT_extended_dynamic_state === + vkCmdSetCullModeEXT = PFN_vkCmdSetCullModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetCullModeEXT" ) ); + if ( !vkCmdSetCullMode ) + vkCmdSetCullMode = vkCmdSetCullModeEXT; + vkCmdSetFrontFaceEXT = PFN_vkCmdSetFrontFaceEXT( vkGetDeviceProcAddr( device, "vkCmdSetFrontFaceEXT" ) ); + if ( !vkCmdSetFrontFace ) + vkCmdSetFrontFace = vkCmdSetFrontFaceEXT; + vkCmdSetPrimitiveTopologyEXT = + PFN_vkCmdSetPrimitiveTopologyEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopologyEXT" ) ); + if ( !vkCmdSetPrimitiveTopology ) + vkCmdSetPrimitiveTopology = vkCmdSetPrimitiveTopologyEXT; + vkCmdSetViewportWithCountEXT = + PFN_vkCmdSetViewportWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCountEXT" ) ); + if ( !vkCmdSetViewportWithCount ) + vkCmdSetViewportWithCount = vkCmdSetViewportWithCountEXT; + vkCmdSetScissorWithCountEXT = + PFN_vkCmdSetScissorWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCountEXT" ) ); + if ( !vkCmdSetScissorWithCount ) + vkCmdSetScissorWithCount = vkCmdSetScissorWithCountEXT; + vkCmdBindVertexBuffers2EXT = + PFN_vkCmdBindVertexBuffers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2EXT" ) ); + if ( !vkCmdBindVertexBuffers2 ) + vkCmdBindVertexBuffers2 = vkCmdBindVertexBuffers2EXT; + vkCmdSetDepthTestEnableEXT = + PFN_vkCmdSetDepthTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnableEXT" ) ); + if ( !vkCmdSetDepthTestEnable ) + vkCmdSetDepthTestEnable = vkCmdSetDepthTestEnableEXT; + vkCmdSetDepthWriteEnableEXT = + PFN_vkCmdSetDepthWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnableEXT" ) ); + if ( !vkCmdSetDepthWriteEnable ) + vkCmdSetDepthWriteEnable = vkCmdSetDepthWriteEnableEXT; + vkCmdSetDepthCompareOpEXT = + PFN_vkCmdSetDepthCompareOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOpEXT" ) ); + if ( !vkCmdSetDepthCompareOp ) + vkCmdSetDepthCompareOp = vkCmdSetDepthCompareOpEXT; + vkCmdSetDepthBoundsTestEnableEXT = + PFN_vkCmdSetDepthBoundsTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnableEXT" ) ); + if ( !vkCmdSetDepthBoundsTestEnable ) + vkCmdSetDepthBoundsTestEnable = vkCmdSetDepthBoundsTestEnableEXT; + vkCmdSetStencilTestEnableEXT = + PFN_vkCmdSetStencilTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnableEXT" ) ); + if ( !vkCmdSetStencilTestEnable ) + vkCmdSetStencilTestEnable = vkCmdSetStencilTestEnableEXT; + vkCmdSetStencilOpEXT = PFN_vkCmdSetStencilOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilOpEXT" ) ); + if ( !vkCmdSetStencilOp ) + vkCmdSetStencilOp = vkCmdSetStencilOpEXT; + + //=== VK_KHR_deferred_host_operations === + vkCreateDeferredOperationKHR = + PFN_vkCreateDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkCreateDeferredOperationKHR" ) ); + vkDestroyDeferredOperationKHR = + PFN_vkDestroyDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkDestroyDeferredOperationKHR" ) ); + vkGetDeferredOperationMaxConcurrencyKHR = PFN_vkGetDeferredOperationMaxConcurrencyKHR( + vkGetDeviceProcAddr( device, "vkGetDeferredOperationMaxConcurrencyKHR" ) ); + vkGetDeferredOperationResultKHR = + PFN_vkGetDeferredOperationResultKHR( vkGetDeviceProcAddr( device, "vkGetDeferredOperationResultKHR" ) ); + vkDeferredOperationJoinKHR = + PFN_vkDeferredOperationJoinKHR( vkGetDeviceProcAddr( device, "vkDeferredOperationJoinKHR" ) ); + + //=== VK_KHR_pipeline_executable_properties === + vkGetPipelineExecutablePropertiesKHR = PFN_vkGetPipelineExecutablePropertiesKHR( + vkGetDeviceProcAddr( device, "vkGetPipelineExecutablePropertiesKHR" ) ); + vkGetPipelineExecutableStatisticsKHR = PFN_vkGetPipelineExecutableStatisticsKHR( + vkGetDeviceProcAddr( device, "vkGetPipelineExecutableStatisticsKHR" ) ); + vkGetPipelineExecutableInternalRepresentationsKHR = PFN_vkGetPipelineExecutableInternalRepresentationsKHR( + vkGetDeviceProcAddr( device, "vkGetPipelineExecutableInternalRepresentationsKHR" ) ); + + //=== VK_NV_device_generated_commands === + vkGetGeneratedCommandsMemoryRequirementsNV = PFN_vkGetGeneratedCommandsMemoryRequirementsNV( + vkGetDeviceProcAddr( device, "vkGetGeneratedCommandsMemoryRequirementsNV" ) ); + vkCmdPreprocessGeneratedCommandsNV = + PFN_vkCmdPreprocessGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdPreprocessGeneratedCommandsNV" ) ); + vkCmdExecuteGeneratedCommandsNV = + PFN_vkCmdExecuteGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdExecuteGeneratedCommandsNV" ) ); + vkCmdBindPipelineShaderGroupNV = + PFN_vkCmdBindPipelineShaderGroupNV( vkGetDeviceProcAddr( device, "vkCmdBindPipelineShaderGroupNV" ) ); + vkCreateIndirectCommandsLayoutNV = + PFN_vkCreateIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNV" ) ); + vkDestroyIndirectCommandsLayoutNV = + PFN_vkDestroyIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNV" ) ); + + //=== VK_EXT_private_data === + vkCreatePrivateDataSlotEXT = + PFN_vkCreatePrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlotEXT" ) ); + if ( !vkCreatePrivateDataSlot ) + vkCreatePrivateDataSlot = vkCreatePrivateDataSlotEXT; + vkDestroyPrivateDataSlotEXT = + PFN_vkDestroyPrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlotEXT" ) ); + if ( !vkDestroyPrivateDataSlot ) + vkDestroyPrivateDataSlot = vkDestroyPrivateDataSlotEXT; + vkSetPrivateDataEXT = PFN_vkSetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkSetPrivateDataEXT" ) ); + if ( !vkSetPrivateData ) + vkSetPrivateData = vkSetPrivateDataEXT; + vkGetPrivateDataEXT = PFN_vkGetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkGetPrivateDataEXT" ) ); + if ( !vkGetPrivateData ) + vkGetPrivateData = vkGetPrivateDataEXT; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_encode_queue === + vkCmdEncodeVideoKHR = PFN_vkCmdEncodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdEncodeVideoKHR" ) ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_KHR_synchronization2 === + vkCmdSetEvent2KHR = PFN_vkCmdSetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdSetEvent2KHR" ) ); + if ( !vkCmdSetEvent2 ) + vkCmdSetEvent2 = vkCmdSetEvent2KHR; + vkCmdResetEvent2KHR = PFN_vkCmdResetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdResetEvent2KHR" ) ); + if ( !vkCmdResetEvent2 ) + vkCmdResetEvent2 = vkCmdResetEvent2KHR; + vkCmdWaitEvents2KHR = PFN_vkCmdWaitEvents2KHR( vkGetDeviceProcAddr( device, "vkCmdWaitEvents2KHR" ) ); + if ( !vkCmdWaitEvents2 ) + vkCmdWaitEvents2 = vkCmdWaitEvents2KHR; + vkCmdPipelineBarrier2KHR = + PFN_vkCmdPipelineBarrier2KHR( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2KHR" ) ); + if ( !vkCmdPipelineBarrier2 ) + vkCmdPipelineBarrier2 = vkCmdPipelineBarrier2KHR; + vkCmdWriteTimestamp2KHR = PFN_vkCmdWriteTimestamp2KHR( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2KHR" ) ); + if ( !vkCmdWriteTimestamp2 ) + vkCmdWriteTimestamp2 = vkCmdWriteTimestamp2KHR; + vkQueueSubmit2KHR = PFN_vkQueueSubmit2KHR( vkGetDeviceProcAddr( device, "vkQueueSubmit2KHR" ) ); + if ( !vkQueueSubmit2 ) + vkQueueSubmit2 = vkQueueSubmit2KHR; + vkCmdWriteBufferMarker2AMD = + PFN_vkCmdWriteBufferMarker2AMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarker2AMD" ) ); + vkGetQueueCheckpointData2NV = + PFN_vkGetQueueCheckpointData2NV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointData2NV" ) ); + + //=== VK_NV_fragment_shading_rate_enums === + vkCmdSetFragmentShadingRateEnumNV = + PFN_vkCmdSetFragmentShadingRateEnumNV( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateEnumNV" ) ); + + //=== VK_KHR_copy_commands2 === + vkCmdCopyBuffer2KHR = PFN_vkCmdCopyBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2KHR" ) ); + if ( !vkCmdCopyBuffer2 ) + vkCmdCopyBuffer2 = vkCmdCopyBuffer2KHR; + vkCmdCopyImage2KHR = PFN_vkCmdCopyImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImage2KHR" ) ); + if ( !vkCmdCopyImage2 ) + vkCmdCopyImage2 = vkCmdCopyImage2KHR; + vkCmdCopyBufferToImage2KHR = + PFN_vkCmdCopyBufferToImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2KHR" ) ); + if ( !vkCmdCopyBufferToImage2 ) + vkCmdCopyBufferToImage2 = vkCmdCopyBufferToImage2KHR; + vkCmdCopyImageToBuffer2KHR = + PFN_vkCmdCopyImageToBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2KHR" ) ); + if ( !vkCmdCopyImageToBuffer2 ) + vkCmdCopyImageToBuffer2 = vkCmdCopyImageToBuffer2KHR; + vkCmdBlitImage2KHR = PFN_vkCmdBlitImage2KHR( vkGetDeviceProcAddr( device, "vkCmdBlitImage2KHR" ) ); + if ( !vkCmdBlitImage2 ) + vkCmdBlitImage2 = vkCmdBlitImage2KHR; + vkCmdResolveImage2KHR = PFN_vkCmdResolveImage2KHR( vkGetDeviceProcAddr( device, "vkCmdResolveImage2KHR" ) ); + if ( !vkCmdResolveImage2 ) + vkCmdResolveImage2 = vkCmdResolveImage2KHR; + + //=== VK_KHR_ray_tracing_pipeline === + vkCmdTraceRaysKHR = PFN_vkCmdTraceRaysKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysKHR" ) ); + vkCreateRayTracingPipelinesKHR = + PFN_vkCreateRayTracingPipelinesKHR( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesKHR" ) ); + vkGetRayTracingShaderGroupHandlesKHR = PFN_vkGetRayTracingShaderGroupHandlesKHR( + vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesKHR" ) ); + vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( + vkGetDeviceProcAddr( device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" ) ); + vkCmdTraceRaysIndirectKHR = + PFN_vkCmdTraceRaysIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysIndirectKHR" ) ); + vkGetRayTracingShaderGroupStackSizeKHR = PFN_vkGetRayTracingShaderGroupStackSizeKHR( + vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupStackSizeKHR" ) ); + vkCmdSetRayTracingPipelineStackSizeKHR = PFN_vkCmdSetRayTracingPipelineStackSizeKHR( + vkGetDeviceProcAddr( device, "vkCmdSetRayTracingPipelineStackSizeKHR" ) ); + + //=== VK_EXT_vertex_input_dynamic_state === + vkCmdSetVertexInputEXT = PFN_vkCmdSetVertexInputEXT( vkGetDeviceProcAddr( device, "vkCmdSetVertexInputEXT" ) ); + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + vkGetMemoryZirconHandleFUCHSIA = + PFN_vkGetMemoryZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandleFUCHSIA" ) ); + vkGetMemoryZirconHandlePropertiesFUCHSIA = PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA( + vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandlePropertiesFUCHSIA" ) ); #endif /*VK_USE_PLATFORM_FUCHSIA*/ -#ifdef VK_USE_PLATFORM_MACOS_MVK - PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK = 0; -#endif /*VK_USE_PLATFORM_MACOS_MVK*/ -#ifdef VK_USE_PLATFORM_METAL_EXT - PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT = 0; -#endif /*VK_USE_PLATFORM_METAL_EXT*/ -#ifdef VK_USE_PLATFORM_GGP - PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP = 0; -#endif /*VK_USE_PLATFORM_GGP*/ -#ifdef VK_USE_PLATFORM_VI_NN - PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN = 0; -#endif /*VK_USE_PLATFORM_VI_NN*/ -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR = 0; -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_XCB_KHR - PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR = 0; -#endif /*VK_USE_PLATFORM_XCB_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_KHR - PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR = 0; -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ - PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT = 0; - PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT = 0; - PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT = 0; - PFN_vkDestroyInstance vkDestroyInstance = 0; - PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR = 0; - PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups = 0; - PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR = 0; - PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices = 0; - PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = 0; - PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT = 0; -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT = 0; -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - PFN_vkCreateDevice vkCreateDevice = 0; - PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR = 0; - PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties = 0; - PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties = 0; - PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR = 0; - PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR = 0; - PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR = 0; - PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR = 0; - PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR = 0; - PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 0; - PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 0; - PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 0; - PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 0; - PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR = 0; - PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR = 0; - PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties = 0; - PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR = 0; - PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties = 0; - PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR = 0; - PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 0; - PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties = 0; - PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 0; - PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures = 0; - PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 = 0; - PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR = 0; - PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties = 0; - PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 = 0; - PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR = 0; - PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 0; - PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties = 0; - PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 = 0; - PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR = 0; - PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties = 0; - PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 = 0; - PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR = 0; - PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT = 0; - PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR = 0; - PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties = 0; - PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 = 0; - PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR = 0; - PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties = 0; - PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 = 0; - PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR = 0; - PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties = 0; - PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 = 0; - PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 0; - PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 0; - PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT = 0; - PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR = 0; - PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 0; - PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR = 0; - PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR = 0; - PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR = 0; -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR = 0; -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_XCB_KHR - PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR = 0; -#endif /*VK_USE_PLATFORM_XCB_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_KHR - PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR = 0; -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT = 0; -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT = 0; - PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV = 0; - PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT = 0; - PFN_vkQueueBindSparse vkQueueBindSparse = 0; - PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT = 0; - PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT = 0; - PFN_vkQueuePresentKHR vkQueuePresentKHR = 0; - PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL = 0; - PFN_vkQueueSubmit vkQueueSubmit = 0; - PFN_vkQueueWaitIdle vkQueueWaitIdle = 0; - - public: - DispatchLoaderDynamic() = default; - -#if !defined(VK_NO_PROTOTYPES) - // This interface is designed to be used for per-device function pointers in combination with a linked vulkan library. - DispatchLoaderDynamic(vk::Instance const& instance, vk::Device const& device = {}) - { - init(instance, device); - } - - // This interface is designed to be used for per-device function pointers in combination with a linked vulkan library. - void init(vk::Instance const& instance, vk::Device const& device = {}) - { - init(static_cast(instance), ::vkGetInstanceProcAddr, static_cast(device), device ? ::vkGetDeviceProcAddr : nullptr); - } -#endif // !defined(VK_NO_PROTOTYPES) - // This interface does not require a linked vulkan library. - DispatchLoaderDynamic( VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device = VK_NULL_HANDLE, PFN_vkGetDeviceProcAddr getDeviceProcAddr = nullptr ) - { - init( instance, getInstanceProcAddr, device, getDeviceProcAddr ); - } +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + vkImportSemaphoreZirconHandleFUCHSIA = PFN_vkImportSemaphoreZirconHandleFUCHSIA( + vkGetDeviceProcAddr( device, "vkImportSemaphoreZirconHandleFUCHSIA" ) ); + vkGetSemaphoreZirconHandleFUCHSIA = + PFN_vkGetSemaphoreZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetSemaphoreZirconHandleFUCHSIA" ) ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ - // This interface does not require a linked vulkan library. - void init( VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device = VK_NULL_HANDLE, PFN_vkGetDeviceProcAddr getDeviceProcAddr = nullptr ) - { - VULKAN_HPP_ASSERT(instance && getInstanceProcAddr); - VULKAN_HPP_ASSERT(!!device == !!getDeviceProcAddr); - vkGetInstanceProcAddr = getInstanceProcAddr; - vkGetDeviceProcAddr = getDeviceProcAddr ? getDeviceProcAddr : PFN_vkGetDeviceProcAddr( vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr") ); - vkCreateInstance = PFN_vkCreateInstance( vkGetInstanceProcAddr( instance, "vkCreateInstance" ) ); - vkEnumerateInstanceExtensionProperties = PFN_vkEnumerateInstanceExtensionProperties( vkGetInstanceProcAddr( instance, "vkEnumerateInstanceExtensionProperties" ) ); - vkEnumerateInstanceLayerProperties = PFN_vkEnumerateInstanceLayerProperties( vkGetInstanceProcAddr( instance, "vkEnumerateInstanceLayerProperties" ) ); - vkEnumerateInstanceVersion = PFN_vkEnumerateInstanceVersion( vkGetInstanceProcAddr( instance, "vkEnumerateInstanceVersion" ) ); - vkBeginCommandBuffer = PFN_vkBeginCommandBuffer( device ? vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" ) : vkGetInstanceProcAddr( instance, "vkBeginCommandBuffer" ) ); - vkCmdBeginConditionalRenderingEXT = PFN_vkCmdBeginConditionalRenderingEXT( device ? vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRenderingEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdBeginConditionalRenderingEXT" ) ); - vkCmdBeginDebugUtilsLabelEXT = PFN_vkCmdBeginDebugUtilsLabelEXT( device ? vkGetDeviceProcAddr( device, "vkCmdBeginDebugUtilsLabelEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdBeginDebugUtilsLabelEXT" ) ); - vkCmdBeginQuery = PFN_vkCmdBeginQuery( device ? vkGetDeviceProcAddr( device, "vkCmdBeginQuery" ) : vkGetInstanceProcAddr( instance, "vkCmdBeginQuery" ) ); - vkCmdBeginQueryIndexedEXT = PFN_vkCmdBeginQueryIndexedEXT( device ? vkGetDeviceProcAddr( device, "vkCmdBeginQueryIndexedEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdBeginQueryIndexedEXT" ) ); - vkCmdBeginRenderPass = PFN_vkCmdBeginRenderPass( device ? vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" ) : vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass" ) ); - vkCmdBeginRenderPass2KHR = PFN_vkCmdBeginRenderPass2KHR( device ? vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2KHR" ) : vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass2KHR" ) ); - vkCmdBeginTransformFeedbackEXT = PFN_vkCmdBeginTransformFeedbackEXT( device ? vkGetDeviceProcAddr( device, "vkCmdBeginTransformFeedbackEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdBeginTransformFeedbackEXT" ) ); - vkCmdBindDescriptorSets = PFN_vkCmdBindDescriptorSets( device ? vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" ) : vkGetInstanceProcAddr( instance, "vkCmdBindDescriptorSets" ) ); - vkCmdBindIndexBuffer = PFN_vkCmdBindIndexBuffer( device ? vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" ) : vkGetInstanceProcAddr( instance, "vkCmdBindIndexBuffer" ) ); - vkCmdBindPipeline = PFN_vkCmdBindPipeline( device ? vkGetDeviceProcAddr( device, "vkCmdBindPipeline" ) : vkGetInstanceProcAddr( instance, "vkCmdBindPipeline" ) ); - vkCmdBindShadingRateImageNV = PFN_vkCmdBindShadingRateImageNV( device ? vkGetDeviceProcAddr( device, "vkCmdBindShadingRateImageNV" ) : vkGetInstanceProcAddr( instance, "vkCmdBindShadingRateImageNV" ) ); - vkCmdBindTransformFeedbackBuffersEXT = PFN_vkCmdBindTransformFeedbackBuffersEXT( device ? vkGetDeviceProcAddr( device, "vkCmdBindTransformFeedbackBuffersEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdBindTransformFeedbackBuffersEXT" ) ); - vkCmdBindVertexBuffers = PFN_vkCmdBindVertexBuffers( device ? vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" ) : vkGetInstanceProcAddr( instance, "vkCmdBindVertexBuffers" ) ); - vkCmdBlitImage = PFN_vkCmdBlitImage( device ? vkGetDeviceProcAddr( device, "vkCmdBlitImage" ) : vkGetInstanceProcAddr( instance, "vkCmdBlitImage" ) ); - vkCmdBuildAccelerationStructureNV = PFN_vkCmdBuildAccelerationStructureNV( device ? vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructureNV" ) : vkGetInstanceProcAddr( instance, "vkCmdBuildAccelerationStructureNV" ) ); - vkCmdClearAttachments = PFN_vkCmdClearAttachments( device ? vkGetDeviceProcAddr( device, "vkCmdClearAttachments" ) : vkGetInstanceProcAddr( instance, "vkCmdClearAttachments" ) ); - vkCmdClearColorImage = PFN_vkCmdClearColorImage( device ? vkGetDeviceProcAddr( device, "vkCmdClearColorImage" ) : vkGetInstanceProcAddr( instance, "vkCmdClearColorImage" ) ); - vkCmdClearDepthStencilImage = PFN_vkCmdClearDepthStencilImage( device ? vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" ) : vkGetInstanceProcAddr( instance, "vkCmdClearDepthStencilImage" ) ); - vkCmdCopyAccelerationStructureNV = PFN_vkCmdCopyAccelerationStructureNV( device ? vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureNV" ) : vkGetInstanceProcAddr( instance, "vkCmdCopyAccelerationStructureNV" ) ); - vkCmdCopyBuffer = PFN_vkCmdCopyBuffer( device ? vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" ) : vkGetInstanceProcAddr( instance, "vkCmdCopyBuffer" ) ); - vkCmdCopyBufferToImage = PFN_vkCmdCopyBufferToImage( device ? vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" ) : vkGetInstanceProcAddr( instance, "vkCmdCopyBufferToImage" ) ); - vkCmdCopyImage = PFN_vkCmdCopyImage( device ? vkGetDeviceProcAddr( device, "vkCmdCopyImage" ) : vkGetInstanceProcAddr( instance, "vkCmdCopyImage" ) ); - vkCmdCopyImageToBuffer = PFN_vkCmdCopyImageToBuffer( device ? vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" ) : vkGetInstanceProcAddr( instance, "vkCmdCopyImageToBuffer" ) ); - vkCmdCopyQueryPoolResults = PFN_vkCmdCopyQueryPoolResults( device ? vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" ) : vkGetInstanceProcAddr( instance, "vkCmdCopyQueryPoolResults" ) ); - vkCmdDebugMarkerBeginEXT = PFN_vkCmdDebugMarkerBeginEXT( device ? vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerBeginEXT" ) ); - vkCmdDebugMarkerEndEXT = PFN_vkCmdDebugMarkerEndEXT( device ? vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerEndEXT" ) ); - vkCmdDebugMarkerInsertEXT = PFN_vkCmdDebugMarkerInsertEXT( device ? vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerInsertEXT" ) ); - vkCmdDispatch = PFN_vkCmdDispatch( device ? vkGetDeviceProcAddr( device, "vkCmdDispatch" ) : vkGetInstanceProcAddr( instance, "vkCmdDispatch" ) ); - vkCmdDispatchBase = PFN_vkCmdDispatchBase( device ? vkGetDeviceProcAddr( device, "vkCmdDispatchBase" ) : vkGetInstanceProcAddr( instance, "vkCmdDispatchBase" ) ); - vkCmdDispatchBaseKHR = PFN_vkCmdDispatchBaseKHR( device ? vkGetDeviceProcAddr( device, "vkCmdDispatchBaseKHR" ) : vkGetInstanceProcAddr( instance, "vkCmdDispatchBaseKHR" ) ); - vkCmdDispatchIndirect = PFN_vkCmdDispatchIndirect( device ? vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" ) : vkGetInstanceProcAddr( instance, "vkCmdDispatchIndirect" ) ); - vkCmdDraw = PFN_vkCmdDraw( device ? vkGetDeviceProcAddr( device, "vkCmdDraw" ) : vkGetInstanceProcAddr( instance, "vkCmdDraw" ) ); - vkCmdDrawIndexed = PFN_vkCmdDrawIndexed( device ? vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" ) : vkGetInstanceProcAddr( instance, "vkCmdDrawIndexed" ) ); - vkCmdDrawIndexedIndirect = PFN_vkCmdDrawIndexedIndirect( device ? vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" ) : vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirect" ) ); - vkCmdDrawIndexedIndirectCountAMD = PFN_vkCmdDrawIndexedIndirectCountAMD( device ? vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountAMD" ) : vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCountAMD" ) ); - vkCmdDrawIndexedIndirectCountKHR = PFN_vkCmdDrawIndexedIndirectCountKHR( device ? vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountKHR" ) : vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCountKHR" ) ); - vkCmdDrawIndirect = PFN_vkCmdDrawIndirect( device ? vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" ) : vkGetInstanceProcAddr( instance, "vkCmdDrawIndirect" ) ); - vkCmdDrawIndirectByteCountEXT = PFN_vkCmdDrawIndirectByteCountEXT( device ? vkGetDeviceProcAddr( device, "vkCmdDrawIndirectByteCountEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectByteCountEXT" ) ); - vkCmdDrawIndirectCountAMD = PFN_vkCmdDrawIndirectCountAMD( device ? vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountAMD" ) : vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCountAMD" ) ); - vkCmdDrawIndirectCountKHR = PFN_vkCmdDrawIndirectCountKHR( device ? vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountKHR" ) : vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCountKHR" ) ); - vkCmdDrawMeshTasksIndirectCountNV = PFN_vkCmdDrawMeshTasksIndirectCountNV( device ? vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountNV" ) : vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectCountNV" ) ); - vkCmdDrawMeshTasksIndirectNV = PFN_vkCmdDrawMeshTasksIndirectNV( device ? vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectNV" ) : vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectNV" ) ); - vkCmdDrawMeshTasksNV = PFN_vkCmdDrawMeshTasksNV( device ? vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksNV" ) : vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksNV" ) ); - vkCmdEndConditionalRenderingEXT = PFN_vkCmdEndConditionalRenderingEXT( device ? vkGetDeviceProcAddr( device, "vkCmdEndConditionalRenderingEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdEndConditionalRenderingEXT" ) ); - vkCmdEndDebugUtilsLabelEXT = PFN_vkCmdEndDebugUtilsLabelEXT( device ? vkGetDeviceProcAddr( device, "vkCmdEndDebugUtilsLabelEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdEndDebugUtilsLabelEXT" ) ); - vkCmdEndQuery = PFN_vkCmdEndQuery( device ? vkGetDeviceProcAddr( device, "vkCmdEndQuery" ) : vkGetInstanceProcAddr( instance, "vkCmdEndQuery" ) ); - vkCmdEndQueryIndexedEXT = PFN_vkCmdEndQueryIndexedEXT( device ? vkGetDeviceProcAddr( device, "vkCmdEndQueryIndexedEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdEndQueryIndexedEXT" ) ); - vkCmdEndRenderPass = PFN_vkCmdEndRenderPass( device ? vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" ) : vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass" ) ); - vkCmdEndRenderPass2KHR = PFN_vkCmdEndRenderPass2KHR( device ? vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2KHR" ) : vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass2KHR" ) ); - vkCmdEndTransformFeedbackEXT = PFN_vkCmdEndTransformFeedbackEXT( device ? vkGetDeviceProcAddr( device, "vkCmdEndTransformFeedbackEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdEndTransformFeedbackEXT" ) ); - vkCmdExecuteCommands = PFN_vkCmdExecuteCommands( device ? vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" ) : vkGetInstanceProcAddr( instance, "vkCmdExecuteCommands" ) ); - vkCmdFillBuffer = PFN_vkCmdFillBuffer( device ? vkGetDeviceProcAddr( device, "vkCmdFillBuffer" ) : vkGetInstanceProcAddr( instance, "vkCmdFillBuffer" ) ); - vkCmdInsertDebugUtilsLabelEXT = PFN_vkCmdInsertDebugUtilsLabelEXT( device ? vkGetDeviceProcAddr( device, "vkCmdInsertDebugUtilsLabelEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdInsertDebugUtilsLabelEXT" ) ); - vkCmdNextSubpass = PFN_vkCmdNextSubpass( device ? vkGetDeviceProcAddr( device, "vkCmdNextSubpass" ) : vkGetInstanceProcAddr( instance, "vkCmdNextSubpass" ) ); - vkCmdNextSubpass2KHR = PFN_vkCmdNextSubpass2KHR( device ? vkGetDeviceProcAddr( device, "vkCmdNextSubpass2KHR" ) : vkGetInstanceProcAddr( instance, "vkCmdNextSubpass2KHR" ) ); - vkCmdPipelineBarrier = PFN_vkCmdPipelineBarrier( device ? vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" ) : vkGetInstanceProcAddr( instance, "vkCmdPipelineBarrier" ) ); - vkCmdProcessCommandsNVX = PFN_vkCmdProcessCommandsNVX( device ? vkGetDeviceProcAddr( device, "vkCmdProcessCommandsNVX" ) : vkGetInstanceProcAddr( instance, "vkCmdProcessCommandsNVX" ) ); - vkCmdPushConstants = PFN_vkCmdPushConstants( device ? vkGetDeviceProcAddr( device, "vkCmdPushConstants" ) : vkGetInstanceProcAddr( instance, "vkCmdPushConstants" ) ); - vkCmdPushDescriptorSetKHR = PFN_vkCmdPushDescriptorSetKHR( device ? vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" ) : vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetKHR" ) ); - vkCmdPushDescriptorSetWithTemplateKHR = PFN_vkCmdPushDescriptorSetWithTemplateKHR( device ? vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" ) : vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetWithTemplateKHR" ) ); - vkCmdReserveSpaceForCommandsNVX = PFN_vkCmdReserveSpaceForCommandsNVX( device ? vkGetDeviceProcAddr( device, "vkCmdReserveSpaceForCommandsNVX" ) : vkGetInstanceProcAddr( instance, "vkCmdReserveSpaceForCommandsNVX" ) ); - vkCmdResetEvent = PFN_vkCmdResetEvent( device ? vkGetDeviceProcAddr( device, "vkCmdResetEvent" ) : vkGetInstanceProcAddr( instance, "vkCmdResetEvent" ) ); - vkCmdResetQueryPool = PFN_vkCmdResetQueryPool( device ? vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" ) : vkGetInstanceProcAddr( instance, "vkCmdResetQueryPool" ) ); - vkCmdResolveImage = PFN_vkCmdResolveImage( device ? vkGetDeviceProcAddr( device, "vkCmdResolveImage" ) : vkGetInstanceProcAddr( instance, "vkCmdResolveImage" ) ); - vkCmdSetBlendConstants = PFN_vkCmdSetBlendConstants( device ? vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" ) : vkGetInstanceProcAddr( instance, "vkCmdSetBlendConstants" ) ); - vkCmdSetCheckpointNV = PFN_vkCmdSetCheckpointNV( device ? vkGetDeviceProcAddr( device, "vkCmdSetCheckpointNV" ) : vkGetInstanceProcAddr( instance, "vkCmdSetCheckpointNV" ) ); - vkCmdSetCoarseSampleOrderNV = PFN_vkCmdSetCoarseSampleOrderNV( device ? vkGetDeviceProcAddr( device, "vkCmdSetCoarseSampleOrderNV" ) : vkGetInstanceProcAddr( instance, "vkCmdSetCoarseSampleOrderNV" ) ); - vkCmdSetDepthBias = PFN_vkCmdSetDepthBias( device ? vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" ) : vkGetInstanceProcAddr( instance, "vkCmdSetDepthBias" ) ); - vkCmdSetDepthBounds = PFN_vkCmdSetDepthBounds( device ? vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" ) : vkGetInstanceProcAddr( instance, "vkCmdSetDepthBounds" ) ); - vkCmdSetDeviceMask = PFN_vkCmdSetDeviceMask( device ? vkGetDeviceProcAddr( device, "vkCmdSetDeviceMask" ) : vkGetInstanceProcAddr( instance, "vkCmdSetDeviceMask" ) ); - vkCmdSetDeviceMaskKHR = PFN_vkCmdSetDeviceMaskKHR( device ? vkGetDeviceProcAddr( device, "vkCmdSetDeviceMaskKHR" ) : vkGetInstanceProcAddr( instance, "vkCmdSetDeviceMaskKHR" ) ); - vkCmdSetDiscardRectangleEXT = PFN_vkCmdSetDiscardRectangleEXT( device ? vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdSetDiscardRectangleEXT" ) ); - vkCmdSetEvent = PFN_vkCmdSetEvent( device ? vkGetDeviceProcAddr( device, "vkCmdSetEvent" ) : vkGetInstanceProcAddr( instance, "vkCmdSetEvent" ) ); - vkCmdSetExclusiveScissorNV = PFN_vkCmdSetExclusiveScissorNV( device ? vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorNV" ) : vkGetInstanceProcAddr( instance, "vkCmdSetExclusiveScissorNV" ) ); - vkCmdSetLineStippleEXT = PFN_vkCmdSetLineStippleEXT( device ? vkGetDeviceProcAddr( device, "vkCmdSetLineStippleEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdSetLineStippleEXT" ) ); - vkCmdSetLineWidth = PFN_vkCmdSetLineWidth( device ? vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" ) : vkGetInstanceProcAddr( instance, "vkCmdSetLineWidth" ) ); - vkCmdSetPerformanceMarkerINTEL = PFN_vkCmdSetPerformanceMarkerINTEL( device ? vkGetDeviceProcAddr( device, "vkCmdSetPerformanceMarkerINTEL" ) : vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceMarkerINTEL" ) ); - vkCmdSetPerformanceOverrideINTEL = PFN_vkCmdSetPerformanceOverrideINTEL( device ? vkGetDeviceProcAddr( device, "vkCmdSetPerformanceOverrideINTEL" ) : vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceOverrideINTEL" ) ); - vkCmdSetPerformanceStreamMarkerINTEL = PFN_vkCmdSetPerformanceStreamMarkerINTEL( device ? vkGetDeviceProcAddr( device, "vkCmdSetPerformanceStreamMarkerINTEL" ) : vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceStreamMarkerINTEL" ) ); - vkCmdSetSampleLocationsEXT = PFN_vkCmdSetSampleLocationsEXT( device ? vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEXT" ) : vkGetInstanceProcAddr( instance, "vkCmdSetSampleLocationsEXT" ) ); - vkCmdSetScissor = PFN_vkCmdSetScissor( device ? vkGetDeviceProcAddr( device, "vkCmdSetScissor" ) : vkGetInstanceProcAddr( instance, "vkCmdSetScissor" ) ); - vkCmdSetStencilCompareMask = PFN_vkCmdSetStencilCompareMask( device ? vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" ) : vkGetInstanceProcAddr( instance, "vkCmdSetStencilCompareMask" ) ); - vkCmdSetStencilReference = PFN_vkCmdSetStencilReference( device ? vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" ) : vkGetInstanceProcAddr( instance, "vkCmdSetStencilReference" ) ); - vkCmdSetStencilWriteMask = PFN_vkCmdSetStencilWriteMask( device ? vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" ) : vkGetInstanceProcAddr( instance, "vkCmdSetStencilWriteMask" ) ); - vkCmdSetViewport = PFN_vkCmdSetViewport( device ? vkGetDeviceProcAddr( device, "vkCmdSetViewport" ) : vkGetInstanceProcAddr( instance, "vkCmdSetViewport" ) ); - vkCmdSetViewportShadingRatePaletteNV = PFN_vkCmdSetViewportShadingRatePaletteNV( device ? vkGetDeviceProcAddr( device, "vkCmdSetViewportShadingRatePaletteNV" ) : vkGetInstanceProcAddr( instance, "vkCmdSetViewportShadingRatePaletteNV" ) ); - vkCmdSetViewportWScalingNV = PFN_vkCmdSetViewportWScalingNV( device ? vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" ) : vkGetInstanceProcAddr( instance, "vkCmdSetViewportWScalingNV" ) ); - vkCmdTraceRaysNV = PFN_vkCmdTraceRaysNV( device ? vkGetDeviceProcAddr( device, "vkCmdTraceRaysNV" ) : vkGetInstanceProcAddr( instance, "vkCmdTraceRaysNV" ) ); - vkCmdUpdateBuffer = PFN_vkCmdUpdateBuffer( device ? vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" ) : vkGetInstanceProcAddr( instance, "vkCmdUpdateBuffer" ) ); - vkCmdWaitEvents = PFN_vkCmdWaitEvents( device ? vkGetDeviceProcAddr( device, "vkCmdWaitEvents" ) : vkGetInstanceProcAddr( instance, "vkCmdWaitEvents" ) ); - vkCmdWriteAccelerationStructuresPropertiesNV = PFN_vkCmdWriteAccelerationStructuresPropertiesNV( device ? vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesNV" ) : vkGetInstanceProcAddr( instance, "vkCmdWriteAccelerationStructuresPropertiesNV" ) ); - vkCmdWriteBufferMarkerAMD = PFN_vkCmdWriteBufferMarkerAMD( device ? vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarkerAMD" ) : vkGetInstanceProcAddr( instance, "vkCmdWriteBufferMarkerAMD" ) ); - vkCmdWriteTimestamp = PFN_vkCmdWriteTimestamp( device ? vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" ) : vkGetInstanceProcAddr( instance, "vkCmdWriteTimestamp" ) ); - vkEndCommandBuffer = PFN_vkEndCommandBuffer( device ? vkGetDeviceProcAddr( device, "vkEndCommandBuffer" ) : vkGetInstanceProcAddr( instance, "vkEndCommandBuffer" ) ); - vkResetCommandBuffer = PFN_vkResetCommandBuffer( device ? vkGetDeviceProcAddr( device, "vkResetCommandBuffer" ) : vkGetInstanceProcAddr( instance, "vkResetCommandBuffer" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkAcquireFullScreenExclusiveModeEXT = PFN_vkAcquireFullScreenExclusiveModeEXT( device ? vkGetDeviceProcAddr( device, "vkAcquireFullScreenExclusiveModeEXT" ) : vkGetInstanceProcAddr( instance, "vkAcquireFullScreenExclusiveModeEXT" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkAcquireNextImage2KHR = PFN_vkAcquireNextImage2KHR( device ? vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHR" ) : vkGetInstanceProcAddr( instance, "vkAcquireNextImage2KHR" ) ); - vkAcquireNextImageKHR = PFN_vkAcquireNextImageKHR( device ? vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" ) : vkGetInstanceProcAddr( instance, "vkAcquireNextImageKHR" ) ); - vkAcquirePerformanceConfigurationINTEL = PFN_vkAcquirePerformanceConfigurationINTEL( device ? vkGetDeviceProcAddr( device, "vkAcquirePerformanceConfigurationINTEL" ) : vkGetInstanceProcAddr( instance, "vkAcquirePerformanceConfigurationINTEL" ) ); - vkAllocateCommandBuffers = PFN_vkAllocateCommandBuffers( device ? vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" ) : vkGetInstanceProcAddr( instance, "vkAllocateCommandBuffers" ) ); - vkAllocateDescriptorSets = PFN_vkAllocateDescriptorSets( device ? vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" ) : vkGetInstanceProcAddr( instance, "vkAllocateDescriptorSets" ) ); - vkAllocateMemory = PFN_vkAllocateMemory( device ? vkGetDeviceProcAddr( device, "vkAllocateMemory" ) : vkGetInstanceProcAddr( instance, "vkAllocateMemory" ) ); - vkBindAccelerationStructureMemoryNV = PFN_vkBindAccelerationStructureMemoryNV( device ? vkGetDeviceProcAddr( device, "vkBindAccelerationStructureMemoryNV" ) : vkGetInstanceProcAddr( instance, "vkBindAccelerationStructureMemoryNV" ) ); - vkBindBufferMemory = PFN_vkBindBufferMemory( device ? vkGetDeviceProcAddr( device, "vkBindBufferMemory" ) : vkGetInstanceProcAddr( instance, "vkBindBufferMemory" ) ); - vkBindBufferMemory2 = PFN_vkBindBufferMemory2( device ? vkGetDeviceProcAddr( device, "vkBindBufferMemory2" ) : vkGetInstanceProcAddr( instance, "vkBindBufferMemory2" ) ); - vkBindBufferMemory2KHR = PFN_vkBindBufferMemory2KHR( device ? vkGetDeviceProcAddr( device, "vkBindBufferMemory2KHR" ) : vkGetInstanceProcAddr( instance, "vkBindBufferMemory2KHR" ) ); - vkBindImageMemory = PFN_vkBindImageMemory( device ? vkGetDeviceProcAddr( device, "vkBindImageMemory" ) : vkGetInstanceProcAddr( instance, "vkBindImageMemory" ) ); - vkBindImageMemory2 = PFN_vkBindImageMemory2( device ? vkGetDeviceProcAddr( device, "vkBindImageMemory2" ) : vkGetInstanceProcAddr( instance, "vkBindImageMemory2" ) ); - vkBindImageMemory2KHR = PFN_vkBindImageMemory2KHR( device ? vkGetDeviceProcAddr( device, "vkBindImageMemory2KHR" ) : vkGetInstanceProcAddr( instance, "vkBindImageMemory2KHR" ) ); - vkCompileDeferredNV = PFN_vkCompileDeferredNV( device ? vkGetDeviceProcAddr( device, "vkCompileDeferredNV" ) : vkGetInstanceProcAddr( instance, "vkCompileDeferredNV" ) ); - vkCreateAccelerationStructureNV = PFN_vkCreateAccelerationStructureNV( device ? vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureNV" ) : vkGetInstanceProcAddr( instance, "vkCreateAccelerationStructureNV" ) ); - vkCreateBuffer = PFN_vkCreateBuffer( device ? vkGetDeviceProcAddr( device, "vkCreateBuffer" ) : vkGetInstanceProcAddr( instance, "vkCreateBuffer" ) ); - vkCreateBufferView = PFN_vkCreateBufferView( device ? vkGetDeviceProcAddr( device, "vkCreateBufferView" ) : vkGetInstanceProcAddr( instance, "vkCreateBufferView" ) ); - vkCreateCommandPool = PFN_vkCreateCommandPool( device ? vkGetDeviceProcAddr( device, "vkCreateCommandPool" ) : vkGetInstanceProcAddr( instance, "vkCreateCommandPool" ) ); - vkCreateComputePipelines = PFN_vkCreateComputePipelines( device ? vkGetDeviceProcAddr( device, "vkCreateComputePipelines" ) : vkGetInstanceProcAddr( instance, "vkCreateComputePipelines" ) ); - vkCreateDescriptorPool = PFN_vkCreateDescriptorPool( device ? vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" ) : vkGetInstanceProcAddr( instance, "vkCreateDescriptorPool" ) ); - vkCreateDescriptorSetLayout = PFN_vkCreateDescriptorSetLayout( device ? vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" ) : vkGetInstanceProcAddr( instance, "vkCreateDescriptorSetLayout" ) ); - vkCreateDescriptorUpdateTemplate = PFN_vkCreateDescriptorUpdateTemplate( device ? vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplate" ) : vkGetInstanceProcAddr( instance, "vkCreateDescriptorUpdateTemplate" ) ); - vkCreateDescriptorUpdateTemplateKHR = PFN_vkCreateDescriptorUpdateTemplateKHR( device ? vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplateKHR" ) : vkGetInstanceProcAddr( instance, "vkCreateDescriptorUpdateTemplateKHR" ) ); - vkCreateEvent = PFN_vkCreateEvent( device ? vkGetDeviceProcAddr( device, "vkCreateEvent" ) : vkGetInstanceProcAddr( instance, "vkCreateEvent" ) ); - vkCreateFence = PFN_vkCreateFence( device ? vkGetDeviceProcAddr( device, "vkCreateFence" ) : vkGetInstanceProcAddr( instance, "vkCreateFence" ) ); - vkCreateFramebuffer = PFN_vkCreateFramebuffer( device ? vkGetDeviceProcAddr( device, "vkCreateFramebuffer" ) : vkGetInstanceProcAddr( instance, "vkCreateFramebuffer" ) ); - vkCreateGraphicsPipelines = PFN_vkCreateGraphicsPipelines( device ? vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" ) : vkGetInstanceProcAddr( instance, "vkCreateGraphicsPipelines" ) ); - vkCreateImage = PFN_vkCreateImage( device ? vkGetDeviceProcAddr( device, "vkCreateImage" ) : vkGetInstanceProcAddr( instance, "vkCreateImage" ) ); - vkCreateImageView = PFN_vkCreateImageView( device ? vkGetDeviceProcAddr( device, "vkCreateImageView" ) : vkGetInstanceProcAddr( instance, "vkCreateImageView" ) ); - vkCreateIndirectCommandsLayoutNVX = PFN_vkCreateIndirectCommandsLayoutNVX( device ? vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNVX" ) : vkGetInstanceProcAddr( instance, "vkCreateIndirectCommandsLayoutNVX" ) ); - vkCreateObjectTableNVX = PFN_vkCreateObjectTableNVX( device ? vkGetDeviceProcAddr( device, "vkCreateObjectTableNVX" ) : vkGetInstanceProcAddr( instance, "vkCreateObjectTableNVX" ) ); - vkCreatePipelineCache = PFN_vkCreatePipelineCache( device ? vkGetDeviceProcAddr( device, "vkCreatePipelineCache" ) : vkGetInstanceProcAddr( instance, "vkCreatePipelineCache" ) ); - vkCreatePipelineLayout = PFN_vkCreatePipelineLayout( device ? vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" ) : vkGetInstanceProcAddr( instance, "vkCreatePipelineLayout" ) ); - vkCreateQueryPool = PFN_vkCreateQueryPool( device ? vkGetDeviceProcAddr( device, "vkCreateQueryPool" ) : vkGetInstanceProcAddr( instance, "vkCreateQueryPool" ) ); - vkCreateRayTracingPipelinesNV = PFN_vkCreateRayTracingPipelinesNV( device ? vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesNV" ) : vkGetInstanceProcAddr( instance, "vkCreateRayTracingPipelinesNV" ) ); - vkCreateRenderPass = PFN_vkCreateRenderPass( device ? vkGetDeviceProcAddr( device, "vkCreateRenderPass" ) : vkGetInstanceProcAddr( instance, "vkCreateRenderPass" ) ); - vkCreateRenderPass2KHR = PFN_vkCreateRenderPass2KHR( device ? vkGetDeviceProcAddr( device, "vkCreateRenderPass2KHR" ) : vkGetInstanceProcAddr( instance, "vkCreateRenderPass2KHR" ) ); - vkCreateSampler = PFN_vkCreateSampler( device ? vkGetDeviceProcAddr( device, "vkCreateSampler" ) : vkGetInstanceProcAddr( instance, "vkCreateSampler" ) ); - vkCreateSamplerYcbcrConversion = PFN_vkCreateSamplerYcbcrConversion( device ? vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversion" ) : vkGetInstanceProcAddr( instance, "vkCreateSamplerYcbcrConversion" ) ); - vkCreateSamplerYcbcrConversionKHR = PFN_vkCreateSamplerYcbcrConversionKHR( device ? vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversionKHR" ) : vkGetInstanceProcAddr( instance, "vkCreateSamplerYcbcrConversionKHR" ) ); - vkCreateSemaphore = PFN_vkCreateSemaphore( device ? vkGetDeviceProcAddr( device, "vkCreateSemaphore" ) : vkGetInstanceProcAddr( instance, "vkCreateSemaphore" ) ); - vkCreateShaderModule = PFN_vkCreateShaderModule( device ? vkGetDeviceProcAddr( device, "vkCreateShaderModule" ) : vkGetInstanceProcAddr( instance, "vkCreateShaderModule" ) ); - vkCreateSharedSwapchainsKHR = PFN_vkCreateSharedSwapchainsKHR( device ? vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" ) : vkGetInstanceProcAddr( instance, "vkCreateSharedSwapchainsKHR" ) ); - vkCreateSwapchainKHR = PFN_vkCreateSwapchainKHR( device ? vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" ) : vkGetInstanceProcAddr( instance, "vkCreateSwapchainKHR" ) ); - vkCreateValidationCacheEXT = PFN_vkCreateValidationCacheEXT( device ? vkGetDeviceProcAddr( device, "vkCreateValidationCacheEXT" ) : vkGetInstanceProcAddr( instance, "vkCreateValidationCacheEXT" ) ); - vkDebugMarkerSetObjectNameEXT = PFN_vkDebugMarkerSetObjectNameEXT( device ? vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" ) : vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectNameEXT" ) ); - vkDebugMarkerSetObjectTagEXT = PFN_vkDebugMarkerSetObjectTagEXT( device ? vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" ) : vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectTagEXT" ) ); - vkDestroyAccelerationStructureNV = PFN_vkDestroyAccelerationStructureNV( device ? vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureNV" ) : vkGetInstanceProcAddr( instance, "vkDestroyAccelerationStructureNV" ) ); - vkDestroyBuffer = PFN_vkDestroyBuffer( device ? vkGetDeviceProcAddr( device, "vkDestroyBuffer" ) : vkGetInstanceProcAddr( instance, "vkDestroyBuffer" ) ); - vkDestroyBufferView = PFN_vkDestroyBufferView( device ? vkGetDeviceProcAddr( device, "vkDestroyBufferView" ) : vkGetInstanceProcAddr( instance, "vkDestroyBufferView" ) ); - vkDestroyCommandPool = PFN_vkDestroyCommandPool( device ? vkGetDeviceProcAddr( device, "vkDestroyCommandPool" ) : vkGetInstanceProcAddr( instance, "vkDestroyCommandPool" ) ); - vkDestroyDescriptorPool = PFN_vkDestroyDescriptorPool( device ? vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" ) : vkGetInstanceProcAddr( instance, "vkDestroyDescriptorPool" ) ); - vkDestroyDescriptorSetLayout = PFN_vkDestroyDescriptorSetLayout( device ? vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" ) : vkGetInstanceProcAddr( instance, "vkDestroyDescriptorSetLayout" ) ); - vkDestroyDescriptorUpdateTemplate = PFN_vkDestroyDescriptorUpdateTemplate( device ? vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplate" ) : vkGetInstanceProcAddr( instance, "vkDestroyDescriptorUpdateTemplate" ) ); - vkDestroyDescriptorUpdateTemplateKHR = PFN_vkDestroyDescriptorUpdateTemplateKHR( device ? vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplateKHR" ) : vkGetInstanceProcAddr( instance, "vkDestroyDescriptorUpdateTemplateKHR" ) ); - vkDestroyDevice = PFN_vkDestroyDevice( device ? vkGetDeviceProcAddr( device, "vkDestroyDevice" ) : vkGetInstanceProcAddr( instance, "vkDestroyDevice" ) ); - vkDestroyEvent = PFN_vkDestroyEvent( device ? vkGetDeviceProcAddr( device, "vkDestroyEvent" ) : vkGetInstanceProcAddr( instance, "vkDestroyEvent" ) ); - vkDestroyFence = PFN_vkDestroyFence( device ? vkGetDeviceProcAddr( device, "vkDestroyFence" ) : vkGetInstanceProcAddr( instance, "vkDestroyFence" ) ); - vkDestroyFramebuffer = PFN_vkDestroyFramebuffer( device ? vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" ) : vkGetInstanceProcAddr( instance, "vkDestroyFramebuffer" ) ); - vkDestroyImage = PFN_vkDestroyImage( device ? vkGetDeviceProcAddr( device, "vkDestroyImage" ) : vkGetInstanceProcAddr( instance, "vkDestroyImage" ) ); - vkDestroyImageView = PFN_vkDestroyImageView( device ? vkGetDeviceProcAddr( device, "vkDestroyImageView" ) : vkGetInstanceProcAddr( instance, "vkDestroyImageView" ) ); - vkDestroyIndirectCommandsLayoutNVX = PFN_vkDestroyIndirectCommandsLayoutNVX( device ? vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNVX" ) : vkGetInstanceProcAddr( instance, "vkDestroyIndirectCommandsLayoutNVX" ) ); - vkDestroyObjectTableNVX = PFN_vkDestroyObjectTableNVX( device ? vkGetDeviceProcAddr( device, "vkDestroyObjectTableNVX" ) : vkGetInstanceProcAddr( instance, "vkDestroyObjectTableNVX" ) ); - vkDestroyPipeline = PFN_vkDestroyPipeline( device ? vkGetDeviceProcAddr( device, "vkDestroyPipeline" ) : vkGetInstanceProcAddr( instance, "vkDestroyPipeline" ) ); - vkDestroyPipelineCache = PFN_vkDestroyPipelineCache( device ? vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" ) : vkGetInstanceProcAddr( instance, "vkDestroyPipelineCache" ) ); - vkDestroyPipelineLayout = PFN_vkDestroyPipelineLayout( device ? vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" ) : vkGetInstanceProcAddr( instance, "vkDestroyPipelineLayout" ) ); - vkDestroyQueryPool = PFN_vkDestroyQueryPool( device ? vkGetDeviceProcAddr( device, "vkDestroyQueryPool" ) : vkGetInstanceProcAddr( instance, "vkDestroyQueryPool" ) ); - vkDestroyRenderPass = PFN_vkDestroyRenderPass( device ? vkGetDeviceProcAddr( device, "vkDestroyRenderPass" ) : vkGetInstanceProcAddr( instance, "vkDestroyRenderPass" ) ); - vkDestroySampler = PFN_vkDestroySampler( device ? vkGetDeviceProcAddr( device, "vkDestroySampler" ) : vkGetInstanceProcAddr( instance, "vkDestroySampler" ) ); - vkDestroySamplerYcbcrConversion = PFN_vkDestroySamplerYcbcrConversion( device ? vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversion" ) : vkGetInstanceProcAddr( instance, "vkDestroySamplerYcbcrConversion" ) ); - vkDestroySamplerYcbcrConversionKHR = PFN_vkDestroySamplerYcbcrConversionKHR( device ? vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversionKHR" ) : vkGetInstanceProcAddr( instance, "vkDestroySamplerYcbcrConversionKHR" ) ); - vkDestroySemaphore = PFN_vkDestroySemaphore( device ? vkGetDeviceProcAddr( device, "vkDestroySemaphore" ) : vkGetInstanceProcAddr( instance, "vkDestroySemaphore" ) ); - vkDestroyShaderModule = PFN_vkDestroyShaderModule( device ? vkGetDeviceProcAddr( device, "vkDestroyShaderModule" ) : vkGetInstanceProcAddr( instance, "vkDestroyShaderModule" ) ); - vkDestroySwapchainKHR = PFN_vkDestroySwapchainKHR( device ? vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" ) : vkGetInstanceProcAddr( instance, "vkDestroySwapchainKHR" ) ); - vkDestroyValidationCacheEXT = PFN_vkDestroyValidationCacheEXT( device ? vkGetDeviceProcAddr( device, "vkDestroyValidationCacheEXT" ) : vkGetInstanceProcAddr( instance, "vkDestroyValidationCacheEXT" ) ); - vkDeviceWaitIdle = PFN_vkDeviceWaitIdle( device ? vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" ) : vkGetInstanceProcAddr( instance, "vkDeviceWaitIdle" ) ); - vkDisplayPowerControlEXT = PFN_vkDisplayPowerControlEXT( device ? vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" ) : vkGetInstanceProcAddr( instance, "vkDisplayPowerControlEXT" ) ); - vkFlushMappedMemoryRanges = PFN_vkFlushMappedMemoryRanges( device ? vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" ) : vkGetInstanceProcAddr( instance, "vkFlushMappedMemoryRanges" ) ); - vkFreeCommandBuffers = PFN_vkFreeCommandBuffers( device ? vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" ) : vkGetInstanceProcAddr( instance, "vkFreeCommandBuffers" ) ); - vkFreeDescriptorSets = PFN_vkFreeDescriptorSets( device ? vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" ) : vkGetInstanceProcAddr( instance, "vkFreeDescriptorSets" ) ); - vkFreeMemory = PFN_vkFreeMemory( device ? vkGetDeviceProcAddr( device, "vkFreeMemory" ) : vkGetInstanceProcAddr( instance, "vkFreeMemory" ) ); - vkGetAccelerationStructureHandleNV = PFN_vkGetAccelerationStructureHandleNV( device ? vkGetDeviceProcAddr( device, "vkGetAccelerationStructureHandleNV" ) : vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureHandleNV" ) ); - vkGetAccelerationStructureMemoryRequirementsNV = PFN_vkGetAccelerationStructureMemoryRequirementsNV( device ? vkGetDeviceProcAddr( device, "vkGetAccelerationStructureMemoryRequirementsNV" ) : vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureMemoryRequirementsNV" ) ); -#ifdef VK_USE_PLATFORM_ANDROID_KHR - vkGetAndroidHardwareBufferPropertiesANDROID = PFN_vkGetAndroidHardwareBufferPropertiesANDROID( device ? vkGetDeviceProcAddr( device, "vkGetAndroidHardwareBufferPropertiesANDROID" ) : vkGetInstanceProcAddr( instance, "vkGetAndroidHardwareBufferPropertiesANDROID" ) ); -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - vkGetBufferDeviceAddressEXT = PFN_vkGetBufferDeviceAddressEXT( device ? vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressEXT" ) : vkGetInstanceProcAddr( instance, "vkGetBufferDeviceAddressEXT" ) ); - vkGetBufferMemoryRequirements = PFN_vkGetBufferMemoryRequirements( device ? vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" ) : vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements" ) ); - vkGetBufferMemoryRequirements2 = PFN_vkGetBufferMemoryRequirements2( device ? vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2" ) : vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements2" ) ); - vkGetBufferMemoryRequirements2KHR = PFN_vkGetBufferMemoryRequirements2KHR( device ? vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2KHR" ) : vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements2KHR" ) ); - vkGetCalibratedTimestampsEXT = PFN_vkGetCalibratedTimestampsEXT( device ? vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsEXT" ) : vkGetInstanceProcAddr( instance, "vkGetCalibratedTimestampsEXT" ) ); - vkGetDescriptorSetLayoutSupport = PFN_vkGetDescriptorSetLayoutSupport( device ? vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupport" ) : vkGetInstanceProcAddr( instance, "vkGetDescriptorSetLayoutSupport" ) ); - vkGetDescriptorSetLayoutSupportKHR = PFN_vkGetDescriptorSetLayoutSupportKHR( device ? vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupportKHR" ) : vkGetInstanceProcAddr( instance, "vkGetDescriptorSetLayoutSupportKHR" ) ); - vkGetDeviceGroupPeerMemoryFeatures = PFN_vkGetDeviceGroupPeerMemoryFeatures( device ? vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeatures" ) : vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPeerMemoryFeatures" ) ); - vkGetDeviceGroupPeerMemoryFeaturesKHR = PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR( device ? vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeaturesKHR" ) : vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPeerMemoryFeaturesKHR" ) ); - vkGetDeviceGroupPresentCapabilitiesKHR = PFN_vkGetDeviceGroupPresentCapabilitiesKHR( device ? vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHR" ) : vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPresentCapabilitiesKHR" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetDeviceGroupSurfacePresentModes2EXT = PFN_vkGetDeviceGroupSurfacePresentModes2EXT( device ? vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModes2EXT" ) : vkGetInstanceProcAddr( instance, "vkGetDeviceGroupSurfacePresentModes2EXT" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkGetDeviceGroupSurfacePresentModesKHR = PFN_vkGetDeviceGroupSurfacePresentModesKHR( device ? vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHR" ) : vkGetInstanceProcAddr( instance, "vkGetDeviceGroupSurfacePresentModesKHR" ) ); - vkGetDeviceMemoryCommitment = PFN_vkGetDeviceMemoryCommitment( device ? vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" ) : vkGetInstanceProcAddr( instance, "vkGetDeviceMemoryCommitment" ) ); - vkGetDeviceQueue = PFN_vkGetDeviceQueue( device ? vkGetDeviceProcAddr( device, "vkGetDeviceQueue" ) : vkGetInstanceProcAddr( instance, "vkGetDeviceQueue" ) ); - vkGetDeviceQueue2 = PFN_vkGetDeviceQueue2( device ? vkGetDeviceProcAddr( device, "vkGetDeviceQueue2" ) : vkGetInstanceProcAddr( instance, "vkGetDeviceQueue2" ) ); - vkGetEventStatus = PFN_vkGetEventStatus( device ? vkGetDeviceProcAddr( device, "vkGetEventStatus" ) : vkGetInstanceProcAddr( instance, "vkGetEventStatus" ) ); - vkGetFenceFdKHR = PFN_vkGetFenceFdKHR( device ? vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" ) : vkGetInstanceProcAddr( instance, "vkGetFenceFdKHR" ) ); - vkGetFenceStatus = PFN_vkGetFenceStatus( device ? vkGetDeviceProcAddr( device, "vkGetFenceStatus" ) : vkGetInstanceProcAddr( instance, "vkGetFenceStatus" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetFenceWin32HandleKHR = PFN_vkGetFenceWin32HandleKHR( device ? vkGetDeviceProcAddr( device, "vkGetFenceWin32HandleKHR" ) : vkGetInstanceProcAddr( instance, "vkGetFenceWin32HandleKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkGetImageDrmFormatModifierPropertiesEXT = PFN_vkGetImageDrmFormatModifierPropertiesEXT( device ? vkGetDeviceProcAddr( device, "vkGetImageDrmFormatModifierPropertiesEXT" ) : vkGetInstanceProcAddr( instance, "vkGetImageDrmFormatModifierPropertiesEXT" ) ); - vkGetImageMemoryRequirements = PFN_vkGetImageMemoryRequirements( device ? vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" ) : vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements" ) ); - vkGetImageMemoryRequirements2 = PFN_vkGetImageMemoryRequirements2( device ? vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2" ) : vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements2" ) ); - vkGetImageMemoryRequirements2KHR = PFN_vkGetImageMemoryRequirements2KHR( device ? vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2KHR" ) : vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements2KHR" ) ); - vkGetImageSparseMemoryRequirements = PFN_vkGetImageSparseMemoryRequirements( device ? vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" ) : vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements" ) ); - vkGetImageSparseMemoryRequirements2 = PFN_vkGetImageSparseMemoryRequirements2( device ? vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2" ) : vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements2" ) ); - vkGetImageSparseMemoryRequirements2KHR = PFN_vkGetImageSparseMemoryRequirements2KHR( device ? vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2KHR" ) : vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements2KHR" ) ); - vkGetImageSubresourceLayout = PFN_vkGetImageSubresourceLayout( device ? vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" ) : vkGetInstanceProcAddr( instance, "vkGetImageSubresourceLayout" ) ); - vkGetImageViewHandleNVX = PFN_vkGetImageViewHandleNVX( device ? vkGetDeviceProcAddr( device, "vkGetImageViewHandleNVX" ) : vkGetInstanceProcAddr( instance, "vkGetImageViewHandleNVX" ) ); -#ifdef VK_USE_PLATFORM_ANDROID_KHR - vkGetMemoryAndroidHardwareBufferANDROID = PFN_vkGetMemoryAndroidHardwareBufferANDROID( device ? vkGetDeviceProcAddr( device, "vkGetMemoryAndroidHardwareBufferANDROID" ) : vkGetInstanceProcAddr( instance, "vkGetMemoryAndroidHardwareBufferANDROID" ) ); -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - vkGetMemoryFdKHR = PFN_vkGetMemoryFdKHR( device ? vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" ) : vkGetInstanceProcAddr( instance, "vkGetMemoryFdKHR" ) ); - vkGetMemoryFdPropertiesKHR = PFN_vkGetMemoryFdPropertiesKHR( device ? vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" ) : vkGetInstanceProcAddr( instance, "vkGetMemoryFdPropertiesKHR" ) ); - vkGetMemoryHostPointerPropertiesEXT = PFN_vkGetMemoryHostPointerPropertiesEXT( device ? vkGetDeviceProcAddr( device, "vkGetMemoryHostPointerPropertiesEXT" ) : vkGetInstanceProcAddr( instance, "vkGetMemoryHostPointerPropertiesEXT" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetMemoryWin32HandleKHR = PFN_vkGetMemoryWin32HandleKHR( device ? vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleKHR" ) : vkGetInstanceProcAddr( instance, "vkGetMemoryWin32HandleKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetMemoryWin32HandleNV = PFN_vkGetMemoryWin32HandleNV( device ? vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleNV" ) : vkGetInstanceProcAddr( instance, "vkGetMemoryWin32HandleNV" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetMemoryWin32HandlePropertiesKHR = PFN_vkGetMemoryWin32HandlePropertiesKHR( device ? vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandlePropertiesKHR" ) : vkGetInstanceProcAddr( instance, "vkGetMemoryWin32HandlePropertiesKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkGetPastPresentationTimingGOOGLE = PFN_vkGetPastPresentationTimingGOOGLE( device ? vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" ) : vkGetInstanceProcAddr( instance, "vkGetPastPresentationTimingGOOGLE" ) ); - vkGetPerformanceParameterINTEL = PFN_vkGetPerformanceParameterINTEL( device ? vkGetDeviceProcAddr( device, "vkGetPerformanceParameterINTEL" ) : vkGetInstanceProcAddr( instance, "vkGetPerformanceParameterINTEL" ) ); - vkGetPipelineCacheData = PFN_vkGetPipelineCacheData( device ? vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" ) : vkGetInstanceProcAddr( instance, "vkGetPipelineCacheData" ) ); - vkGetPipelineExecutableInternalRepresentationsKHR = PFN_vkGetPipelineExecutableInternalRepresentationsKHR( device ? vkGetDeviceProcAddr( device, "vkGetPipelineExecutableInternalRepresentationsKHR" ) : vkGetInstanceProcAddr( instance, "vkGetPipelineExecutableInternalRepresentationsKHR" ) ); - vkGetPipelineExecutablePropertiesKHR = PFN_vkGetPipelineExecutablePropertiesKHR( device ? vkGetDeviceProcAddr( device, "vkGetPipelineExecutablePropertiesKHR" ) : vkGetInstanceProcAddr( instance, "vkGetPipelineExecutablePropertiesKHR" ) ); - vkGetPipelineExecutableStatisticsKHR = PFN_vkGetPipelineExecutableStatisticsKHR( device ? vkGetDeviceProcAddr( device, "vkGetPipelineExecutableStatisticsKHR" ) : vkGetInstanceProcAddr( instance, "vkGetPipelineExecutableStatisticsKHR" ) ); - vkGetQueryPoolResults = PFN_vkGetQueryPoolResults( device ? vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" ) : vkGetInstanceProcAddr( instance, "vkGetQueryPoolResults" ) ); - vkGetRayTracingShaderGroupHandlesNV = PFN_vkGetRayTracingShaderGroupHandlesNV( device ? vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesNV" ) : vkGetInstanceProcAddr( instance, "vkGetRayTracingShaderGroupHandlesNV" ) ); - vkGetRefreshCycleDurationGOOGLE = PFN_vkGetRefreshCycleDurationGOOGLE( device ? vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" ) : vkGetInstanceProcAddr( instance, "vkGetRefreshCycleDurationGOOGLE" ) ); - vkGetRenderAreaGranularity = PFN_vkGetRenderAreaGranularity( device ? vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" ) : vkGetInstanceProcAddr( instance, "vkGetRenderAreaGranularity" ) ); - vkGetSemaphoreFdKHR = PFN_vkGetSemaphoreFdKHR( device ? vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" ) : vkGetInstanceProcAddr( instance, "vkGetSemaphoreFdKHR" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetSemaphoreWin32HandleKHR = PFN_vkGetSemaphoreWin32HandleKHR( device ? vkGetDeviceProcAddr( device, "vkGetSemaphoreWin32HandleKHR" ) : vkGetInstanceProcAddr( instance, "vkGetSemaphoreWin32HandleKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkGetShaderInfoAMD = PFN_vkGetShaderInfoAMD( device ? vkGetDeviceProcAddr( device, "vkGetShaderInfoAMD" ) : vkGetInstanceProcAddr( instance, "vkGetShaderInfoAMD" ) ); - vkGetSwapchainCounterEXT = PFN_vkGetSwapchainCounterEXT( device ? vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" ) : vkGetInstanceProcAddr( instance, "vkGetSwapchainCounterEXT" ) ); - vkGetSwapchainImagesKHR = PFN_vkGetSwapchainImagesKHR( device ? vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" ) : vkGetInstanceProcAddr( instance, "vkGetSwapchainImagesKHR" ) ); - vkGetSwapchainStatusKHR = PFN_vkGetSwapchainStatusKHR( device ? vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" ) : vkGetInstanceProcAddr( instance, "vkGetSwapchainStatusKHR" ) ); - vkGetValidationCacheDataEXT = PFN_vkGetValidationCacheDataEXT( device ? vkGetDeviceProcAddr( device, "vkGetValidationCacheDataEXT" ) : vkGetInstanceProcAddr( instance, "vkGetValidationCacheDataEXT" ) ); - vkImportFenceFdKHR = PFN_vkImportFenceFdKHR( device ? vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" ) : vkGetInstanceProcAddr( instance, "vkImportFenceFdKHR" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkImportFenceWin32HandleKHR = PFN_vkImportFenceWin32HandleKHR( device ? vkGetDeviceProcAddr( device, "vkImportFenceWin32HandleKHR" ) : vkGetInstanceProcAddr( instance, "vkImportFenceWin32HandleKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkImportSemaphoreFdKHR = PFN_vkImportSemaphoreFdKHR( device ? vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" ) : vkGetInstanceProcAddr( instance, "vkImportSemaphoreFdKHR" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkImportSemaphoreWin32HandleKHR = PFN_vkImportSemaphoreWin32HandleKHR( device ? vkGetDeviceProcAddr( device, "vkImportSemaphoreWin32HandleKHR" ) : vkGetInstanceProcAddr( instance, "vkImportSemaphoreWin32HandleKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkInitializePerformanceApiINTEL = PFN_vkInitializePerformanceApiINTEL( device ? vkGetDeviceProcAddr( device, "vkInitializePerformanceApiINTEL" ) : vkGetInstanceProcAddr( instance, "vkInitializePerformanceApiINTEL" ) ); - vkInvalidateMappedMemoryRanges = PFN_vkInvalidateMappedMemoryRanges( device ? vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" ) : vkGetInstanceProcAddr( instance, "vkInvalidateMappedMemoryRanges" ) ); - vkMapMemory = PFN_vkMapMemory( device ? vkGetDeviceProcAddr( device, "vkMapMemory" ) : vkGetInstanceProcAddr( instance, "vkMapMemory" ) ); - vkMergePipelineCaches = PFN_vkMergePipelineCaches( device ? vkGetDeviceProcAddr( device, "vkMergePipelineCaches" ) : vkGetInstanceProcAddr( instance, "vkMergePipelineCaches" ) ); - vkMergeValidationCachesEXT = PFN_vkMergeValidationCachesEXT( device ? vkGetDeviceProcAddr( device, "vkMergeValidationCachesEXT" ) : vkGetInstanceProcAddr( instance, "vkMergeValidationCachesEXT" ) ); - vkRegisterDeviceEventEXT = PFN_vkRegisterDeviceEventEXT( device ? vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" ) : vkGetInstanceProcAddr( instance, "vkRegisterDeviceEventEXT" ) ); - vkRegisterDisplayEventEXT = PFN_vkRegisterDisplayEventEXT( device ? vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" ) : vkGetInstanceProcAddr( instance, "vkRegisterDisplayEventEXT" ) ); - vkRegisterObjectsNVX = PFN_vkRegisterObjectsNVX( device ? vkGetDeviceProcAddr( device, "vkRegisterObjectsNVX" ) : vkGetInstanceProcAddr( instance, "vkRegisterObjectsNVX" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkReleaseFullScreenExclusiveModeEXT = PFN_vkReleaseFullScreenExclusiveModeEXT( device ? vkGetDeviceProcAddr( device, "vkReleaseFullScreenExclusiveModeEXT" ) : vkGetInstanceProcAddr( instance, "vkReleaseFullScreenExclusiveModeEXT" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkReleasePerformanceConfigurationINTEL = PFN_vkReleasePerformanceConfigurationINTEL( device ? vkGetDeviceProcAddr( device, "vkReleasePerformanceConfigurationINTEL" ) : vkGetInstanceProcAddr( instance, "vkReleasePerformanceConfigurationINTEL" ) ); - vkResetCommandPool = PFN_vkResetCommandPool( device ? vkGetDeviceProcAddr( device, "vkResetCommandPool" ) : vkGetInstanceProcAddr( instance, "vkResetCommandPool" ) ); - vkResetDescriptorPool = PFN_vkResetDescriptorPool( device ? vkGetDeviceProcAddr( device, "vkResetDescriptorPool" ) : vkGetInstanceProcAddr( instance, "vkResetDescriptorPool" ) ); - vkResetEvent = PFN_vkResetEvent( device ? vkGetDeviceProcAddr( device, "vkResetEvent" ) : vkGetInstanceProcAddr( instance, "vkResetEvent" ) ); - vkResetFences = PFN_vkResetFences( device ? vkGetDeviceProcAddr( device, "vkResetFences" ) : vkGetInstanceProcAddr( instance, "vkResetFences" ) ); - vkResetQueryPoolEXT = PFN_vkResetQueryPoolEXT( device ? vkGetDeviceProcAddr( device, "vkResetQueryPoolEXT" ) : vkGetInstanceProcAddr( instance, "vkResetQueryPoolEXT" ) ); - vkSetDebugUtilsObjectNameEXT = PFN_vkSetDebugUtilsObjectNameEXT( device ? vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectNameEXT" ) : vkGetInstanceProcAddr( instance, "vkSetDebugUtilsObjectNameEXT" ) ); - vkSetDebugUtilsObjectTagEXT = PFN_vkSetDebugUtilsObjectTagEXT( device ? vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectTagEXT" ) : vkGetInstanceProcAddr( instance, "vkSetDebugUtilsObjectTagEXT" ) ); - vkSetEvent = PFN_vkSetEvent( device ? vkGetDeviceProcAddr( device, "vkSetEvent" ) : vkGetInstanceProcAddr( instance, "vkSetEvent" ) ); - vkSetHdrMetadataEXT = PFN_vkSetHdrMetadataEXT( device ? vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" ) : vkGetInstanceProcAddr( instance, "vkSetHdrMetadataEXT" ) ); - vkSetLocalDimmingAMD = PFN_vkSetLocalDimmingAMD( device ? vkGetDeviceProcAddr( device, "vkSetLocalDimmingAMD" ) : vkGetInstanceProcAddr( instance, "vkSetLocalDimmingAMD" ) ); - vkTrimCommandPool = PFN_vkTrimCommandPool( device ? vkGetDeviceProcAddr( device, "vkTrimCommandPool" ) : vkGetInstanceProcAddr( instance, "vkTrimCommandPool" ) ); - vkTrimCommandPoolKHR = PFN_vkTrimCommandPoolKHR( device ? vkGetDeviceProcAddr( device, "vkTrimCommandPoolKHR" ) : vkGetInstanceProcAddr( instance, "vkTrimCommandPoolKHR" ) ); - vkUninitializePerformanceApiINTEL = PFN_vkUninitializePerformanceApiINTEL( device ? vkGetDeviceProcAddr( device, "vkUninitializePerformanceApiINTEL" ) : vkGetInstanceProcAddr( instance, "vkUninitializePerformanceApiINTEL" ) ); - vkUnmapMemory = PFN_vkUnmapMemory( device ? vkGetDeviceProcAddr( device, "vkUnmapMemory" ) : vkGetInstanceProcAddr( instance, "vkUnmapMemory" ) ); - vkUnregisterObjectsNVX = PFN_vkUnregisterObjectsNVX( device ? vkGetDeviceProcAddr( device, "vkUnregisterObjectsNVX" ) : vkGetInstanceProcAddr( instance, "vkUnregisterObjectsNVX" ) ); - vkUpdateDescriptorSetWithTemplate = PFN_vkUpdateDescriptorSetWithTemplate( device ? vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplate" ) : vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSetWithTemplate" ) ); - vkUpdateDescriptorSetWithTemplateKHR = PFN_vkUpdateDescriptorSetWithTemplateKHR( device ? vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplateKHR" ) : vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSetWithTemplateKHR" ) ); - vkUpdateDescriptorSets = PFN_vkUpdateDescriptorSets( device ? vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" ) : vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSets" ) ); - vkWaitForFences = PFN_vkWaitForFences( device ? vkGetDeviceProcAddr( device, "vkWaitForFences" ) : vkGetInstanceProcAddr( instance, "vkWaitForFences" ) ); -#ifdef VK_USE_PLATFORM_ANDROID_KHR - vkCreateAndroidSurfaceKHR = PFN_vkCreateAndroidSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateAndroidSurfaceKHR" ) ); -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - vkCreateDebugReportCallbackEXT = PFN_vkCreateDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" ) ); - vkCreateDebugUtilsMessengerEXT = PFN_vkCreateDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugUtilsMessengerEXT" ) ); - vkCreateDisplayPlaneSurfaceKHR = PFN_vkCreateDisplayPlaneSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayPlaneSurfaceKHR" ) ); - vkCreateHeadlessSurfaceEXT = PFN_vkCreateHeadlessSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateHeadlessSurfaceEXT" ) ); -#ifdef VK_USE_PLATFORM_IOS_MVK - vkCreateIOSSurfaceMVK = PFN_vkCreateIOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateIOSSurfaceMVK" ) ); -#endif /*VK_USE_PLATFORM_IOS_MVK*/ -#ifdef VK_USE_PLATFORM_FUCHSIA - vkCreateImagePipeSurfaceFUCHSIA = PFN_vkCreateImagePipeSurfaceFUCHSIA( vkGetInstanceProcAddr( instance, "vkCreateImagePipeSurfaceFUCHSIA" ) ); +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + vkCreateBufferCollectionFUCHSIA = + PFN_vkCreateBufferCollectionFUCHSIA( vkGetDeviceProcAddr( device, "vkCreateBufferCollectionFUCHSIA" ) ); + vkSetBufferCollectionImageConstraintsFUCHSIA = PFN_vkSetBufferCollectionImageConstraintsFUCHSIA( + vkGetDeviceProcAddr( device, "vkSetBufferCollectionImageConstraintsFUCHSIA" ) ); + vkSetBufferCollectionBufferConstraintsFUCHSIA = PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA( + vkGetDeviceProcAddr( device, "vkSetBufferCollectionBufferConstraintsFUCHSIA" ) ); + vkDestroyBufferCollectionFUCHSIA = + PFN_vkDestroyBufferCollectionFUCHSIA( vkGetDeviceProcAddr( device, "vkDestroyBufferCollectionFUCHSIA" ) ); + vkGetBufferCollectionPropertiesFUCHSIA = PFN_vkGetBufferCollectionPropertiesFUCHSIA( + vkGetDeviceProcAddr( device, "vkGetBufferCollectionPropertiesFUCHSIA" ) ); #endif /*VK_USE_PLATFORM_FUCHSIA*/ -#ifdef VK_USE_PLATFORM_MACOS_MVK - vkCreateMacOSSurfaceMVK = PFN_vkCreateMacOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateMacOSSurfaceMVK" ) ); -#endif /*VK_USE_PLATFORM_MACOS_MVK*/ -#ifdef VK_USE_PLATFORM_METAL_EXT - vkCreateMetalSurfaceEXT = PFN_vkCreateMetalSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateMetalSurfaceEXT" ) ); -#endif /*VK_USE_PLATFORM_METAL_EXT*/ -#ifdef VK_USE_PLATFORM_GGP - vkCreateStreamDescriptorSurfaceGGP = PFN_vkCreateStreamDescriptorSurfaceGGP( vkGetInstanceProcAddr( instance, "vkCreateStreamDescriptorSurfaceGGP" ) ); -#endif /*VK_USE_PLATFORM_GGP*/ -#ifdef VK_USE_PLATFORM_VI_NN - vkCreateViSurfaceNN = PFN_vkCreateViSurfaceNN( vkGetInstanceProcAddr( instance, "vkCreateViSurfaceNN" ) ); -#endif /*VK_USE_PLATFORM_VI_NN*/ -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - vkCreateWaylandSurfaceKHR = PFN_vkCreateWaylandSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWaylandSurfaceKHR" ) ); -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkCreateWin32SurfaceKHR = PFN_vkCreateWin32SurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWin32SurfaceKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_XCB_KHR - vkCreateXcbSurfaceKHR = PFN_vkCreateXcbSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXcbSurfaceKHR" ) ); -#endif /*VK_USE_PLATFORM_XCB_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_KHR - vkCreateXlibSurfaceKHR = PFN_vkCreateXlibSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXlibSurfaceKHR" ) ); -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ - vkDebugReportMessageEXT = PFN_vkDebugReportMessageEXT( vkGetInstanceProcAddr( instance, "vkDebugReportMessageEXT" ) ); - vkDestroyDebugReportCallbackEXT = PFN_vkDestroyDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugReportCallbackEXT" ) ); - vkDestroyDebugUtilsMessengerEXT = PFN_vkDestroyDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugUtilsMessengerEXT" ) ); - vkDestroyInstance = PFN_vkDestroyInstance( vkGetInstanceProcAddr( instance, "vkDestroyInstance" ) ); - vkDestroySurfaceKHR = PFN_vkDestroySurfaceKHR( vkGetInstanceProcAddr( instance, "vkDestroySurfaceKHR" ) ); - vkEnumeratePhysicalDeviceGroups = PFN_vkEnumeratePhysicalDeviceGroups( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroups" ) ); - vkEnumeratePhysicalDeviceGroupsKHR = PFN_vkEnumeratePhysicalDeviceGroupsKHR( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroupsKHR" ) ); - vkEnumeratePhysicalDevices = PFN_vkEnumeratePhysicalDevices( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDevices" ) ); - vkSubmitDebugUtilsMessageEXT = PFN_vkSubmitDebugUtilsMessageEXT( vkGetInstanceProcAddr( instance, "vkSubmitDebugUtilsMessageEXT" ) ); -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - vkAcquireXlibDisplayEXT = PFN_vkAcquireXlibDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireXlibDisplayEXT" ) ); -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - vkCreateDevice = PFN_vkCreateDevice( vkGetInstanceProcAddr( instance, "vkCreateDevice" ) ); - vkCreateDisplayModeKHR = PFN_vkCreateDisplayModeKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayModeKHR" ) ); - vkEnumerateDeviceExtensionProperties = PFN_vkEnumerateDeviceExtensionProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceExtensionProperties" ) ); - vkEnumerateDeviceLayerProperties = PFN_vkEnumerateDeviceLayerProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceLayerProperties" ) ); - vkGetDisplayModeProperties2KHR = PFN_vkGetDisplayModeProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModeProperties2KHR" ) ); - vkGetDisplayModePropertiesKHR = PFN_vkGetDisplayModePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModePropertiesKHR" ) ); - vkGetDisplayPlaneCapabilities2KHR = PFN_vkGetDisplayPlaneCapabilities2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilities2KHR" ) ); - vkGetDisplayPlaneCapabilitiesKHR = PFN_vkGetDisplayPlaneCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilitiesKHR" ) ); - vkGetDisplayPlaneSupportedDisplaysKHR = PFN_vkGetDisplayPlaneSupportedDisplaysKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneSupportedDisplaysKHR" ) ); - vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT" ) ); - vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV" ) ); - vkGetPhysicalDeviceDisplayPlaneProperties2KHR = PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" ) ); - vkGetPhysicalDeviceDisplayPlanePropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" ) ); - vkGetPhysicalDeviceDisplayProperties2KHR = PFN_vkGetPhysicalDeviceDisplayProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayProperties2KHR" ) ); - vkGetPhysicalDeviceDisplayPropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPropertiesKHR" ) ); - vkGetPhysicalDeviceExternalBufferProperties = PFN_vkGetPhysicalDeviceExternalBufferProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferProperties" ) ); - vkGetPhysicalDeviceExternalBufferPropertiesKHR = PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR" ) ); - vkGetPhysicalDeviceExternalFenceProperties = PFN_vkGetPhysicalDeviceExternalFenceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFenceProperties" ) ); - vkGetPhysicalDeviceExternalFencePropertiesKHR = PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR" ) ); - vkGetPhysicalDeviceExternalImageFormatPropertiesNV = PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" ) ); - vkGetPhysicalDeviceExternalSemaphoreProperties = PFN_vkGetPhysicalDeviceExternalSemaphoreProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphoreProperties" ) ); - vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR" ) ); - vkGetPhysicalDeviceFeatures = PFN_vkGetPhysicalDeviceFeatures( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures" ) ); - vkGetPhysicalDeviceFeatures2 = PFN_vkGetPhysicalDeviceFeatures2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2" ) ); - vkGetPhysicalDeviceFeatures2KHR = PFN_vkGetPhysicalDeviceFeatures2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2KHR" ) ); - vkGetPhysicalDeviceFormatProperties = PFN_vkGetPhysicalDeviceFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties" ) ); - vkGetPhysicalDeviceFormatProperties2 = PFN_vkGetPhysicalDeviceFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2" ) ); - vkGetPhysicalDeviceFormatProperties2KHR = PFN_vkGetPhysicalDeviceFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2KHR" ) ); - vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX" ) ); - vkGetPhysicalDeviceImageFormatProperties = PFN_vkGetPhysicalDeviceImageFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties" ) ); - vkGetPhysicalDeviceImageFormatProperties2 = PFN_vkGetPhysicalDeviceImageFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2" ) ); - vkGetPhysicalDeviceImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceImageFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2KHR" ) ); - vkGetPhysicalDeviceMemoryProperties = PFN_vkGetPhysicalDeviceMemoryProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties" ) ); - vkGetPhysicalDeviceMemoryProperties2 = PFN_vkGetPhysicalDeviceMemoryProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2" ) ); - vkGetPhysicalDeviceMemoryProperties2KHR = PFN_vkGetPhysicalDeviceMemoryProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2KHR" ) ); - vkGetPhysicalDeviceMultisamplePropertiesEXT = PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT" ) ); - vkGetPhysicalDevicePresentRectanglesKHR = PFN_vkGetPhysicalDevicePresentRectanglesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDevicePresentRectanglesKHR" ) ); - vkGetPhysicalDeviceProperties = PFN_vkGetPhysicalDeviceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties" ) ); - vkGetPhysicalDeviceProperties2 = PFN_vkGetPhysicalDeviceProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2" ) ); - vkGetPhysicalDeviceProperties2KHR = PFN_vkGetPhysicalDeviceProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2KHR" ) ); - vkGetPhysicalDeviceQueueFamilyProperties = PFN_vkGetPhysicalDeviceQueueFamilyProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties" ) ); - vkGetPhysicalDeviceQueueFamilyProperties2 = PFN_vkGetPhysicalDeviceQueueFamilyProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2" ) ); - vkGetPhysicalDeviceQueueFamilyProperties2KHR = PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR" ) ); - vkGetPhysicalDeviceSparseImageFormatProperties = PFN_vkGetPhysicalDeviceSparseImageFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties" ) ); - vkGetPhysicalDeviceSparseImageFormatProperties2 = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2" ) ); - vkGetPhysicalDeviceSparseImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR" ) ); - vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV" ) ); - vkGetPhysicalDeviceSurfaceCapabilities2EXT = PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT" ) ); - vkGetPhysicalDeviceSurfaceCapabilities2KHR = PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR" ) ); - vkGetPhysicalDeviceSurfaceCapabilitiesKHR = PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" ) ); - vkGetPhysicalDeviceSurfaceFormats2KHR = PFN_vkGetPhysicalDeviceSurfaceFormats2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormats2KHR" ) ); - vkGetPhysicalDeviceSurfaceFormatsKHR = PFN_vkGetPhysicalDeviceSurfaceFormatsKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormatsKHR" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetPhysicalDeviceSurfacePresentModes2EXT = PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModes2EXT" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkGetPhysicalDeviceSurfacePresentModesKHR = PFN_vkGetPhysicalDeviceSurfacePresentModesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModesKHR" ) ); - vkGetPhysicalDeviceSurfaceSupportKHR = PFN_vkGetPhysicalDeviceSurfaceSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceSupportKHR" ) ); -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - vkGetPhysicalDeviceWaylandPresentationSupportKHR = PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR" ) ); -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetPhysicalDeviceWin32PresentationSupportKHR = PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_XCB_KHR - vkGetPhysicalDeviceXcbPresentationSupportKHR = PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR" ) ); -#endif /*VK_USE_PLATFORM_XCB_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_KHR - vkGetPhysicalDeviceXlibPresentationSupportKHR = PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR" ) ); -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - vkGetRandROutputDisplayEXT = PFN_vkGetRandROutputDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetRandROutputDisplayEXT" ) ); -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - vkReleaseDisplayEXT = PFN_vkReleaseDisplayEXT( vkGetInstanceProcAddr( instance, "vkReleaseDisplayEXT" ) ); - vkGetQueueCheckpointDataNV = PFN_vkGetQueueCheckpointDataNV( device ? vkGetDeviceProcAddr( device, "vkGetQueueCheckpointDataNV" ) : vkGetInstanceProcAddr( instance, "vkGetQueueCheckpointDataNV" ) ); - vkQueueBeginDebugUtilsLabelEXT = PFN_vkQueueBeginDebugUtilsLabelEXT( device ? vkGetDeviceProcAddr( device, "vkQueueBeginDebugUtilsLabelEXT" ) : vkGetInstanceProcAddr( instance, "vkQueueBeginDebugUtilsLabelEXT" ) ); - vkQueueBindSparse = PFN_vkQueueBindSparse( device ? vkGetDeviceProcAddr( device, "vkQueueBindSparse" ) : vkGetInstanceProcAddr( instance, "vkQueueBindSparse" ) ); - vkQueueEndDebugUtilsLabelEXT = PFN_vkQueueEndDebugUtilsLabelEXT( device ? vkGetDeviceProcAddr( device, "vkQueueEndDebugUtilsLabelEXT" ) : vkGetInstanceProcAddr( instance, "vkQueueEndDebugUtilsLabelEXT" ) ); - vkQueueInsertDebugUtilsLabelEXT = PFN_vkQueueInsertDebugUtilsLabelEXT( device ? vkGetDeviceProcAddr( device, "vkQueueInsertDebugUtilsLabelEXT" ) : vkGetInstanceProcAddr( instance, "vkQueueInsertDebugUtilsLabelEXT" ) ); - vkQueuePresentKHR = PFN_vkQueuePresentKHR( device ? vkGetDeviceProcAddr( device, "vkQueuePresentKHR" ) : vkGetInstanceProcAddr( instance, "vkQueuePresentKHR" ) ); - vkQueueSetPerformanceConfigurationINTEL = PFN_vkQueueSetPerformanceConfigurationINTEL( device ? vkGetDeviceProcAddr( device, "vkQueueSetPerformanceConfigurationINTEL" ) : vkGetInstanceProcAddr( instance, "vkQueueSetPerformanceConfigurationINTEL" ) ); - vkQueueSubmit = PFN_vkQueueSubmit( device ? vkGetDeviceProcAddr( device, "vkQueueSubmit" ) : vkGetInstanceProcAddr( instance, "vkQueueSubmit" ) ); - vkQueueWaitIdle = PFN_vkQueueWaitIdle( device ? vkGetDeviceProcAddr( device, "vkQueueWaitIdle" ) : vkGetInstanceProcAddr( instance, "vkQueueWaitIdle" ) ); - } - }; -} // namespace VULKAN_HPP_NAMESPACE + + //=== VK_HUAWEI_subpass_shading === + vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( + vkGetDeviceProcAddr( device, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI" ) ); + vkCmdSubpassShadingHUAWEI = + PFN_vkCmdSubpassShadingHUAWEI( vkGetDeviceProcAddr( device, "vkCmdSubpassShadingHUAWEI" ) ); + + //=== VK_HUAWEI_invocation_mask === + vkCmdBindInvocationMaskHUAWEI = + PFN_vkCmdBindInvocationMaskHUAWEI( vkGetDeviceProcAddr( device, "vkCmdBindInvocationMaskHUAWEI" ) ); + + //=== VK_NV_external_memory_rdma === + vkGetMemoryRemoteAddressNV = + PFN_vkGetMemoryRemoteAddressNV( vkGetDeviceProcAddr( device, "vkGetMemoryRemoteAddressNV" ) ); + + //=== VK_EXT_extended_dynamic_state2 === + vkCmdSetPatchControlPointsEXT = + PFN_vkCmdSetPatchControlPointsEXT( vkGetDeviceProcAddr( device, "vkCmdSetPatchControlPointsEXT" ) ); + vkCmdSetRasterizerDiscardEnableEXT = + PFN_vkCmdSetRasterizerDiscardEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizerDiscardEnableEXT" ) ); + if ( !vkCmdSetRasterizerDiscardEnable ) + vkCmdSetRasterizerDiscardEnable = vkCmdSetRasterizerDiscardEnableEXT; + vkCmdSetDepthBiasEnableEXT = + PFN_vkCmdSetDepthBiasEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBiasEnableEXT" ) ); + if ( !vkCmdSetDepthBiasEnable ) + vkCmdSetDepthBiasEnable = vkCmdSetDepthBiasEnableEXT; + vkCmdSetLogicOpEXT = PFN_vkCmdSetLogicOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetLogicOpEXT" ) ); + vkCmdSetPrimitiveRestartEnableEXT = + PFN_vkCmdSetPrimitiveRestartEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveRestartEnableEXT" ) ); + if ( !vkCmdSetPrimitiveRestartEnable ) + vkCmdSetPrimitiveRestartEnable = vkCmdSetPrimitiveRestartEnableEXT; + + //=== VK_EXT_color_write_enable === + vkCmdSetColorWriteEnableEXT = + PFN_vkCmdSetColorWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorWriteEnableEXT" ) ); + + //=== VK_EXT_multi_draw === + vkCmdDrawMultiEXT = PFN_vkCmdDrawMultiEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiEXT" ) ); + vkCmdDrawMultiIndexedEXT = + PFN_vkCmdDrawMultiIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiIndexedEXT" ) ); + + //=== VK_EXT_pageable_device_local_memory === + vkSetDeviceMemoryPriorityEXT = + PFN_vkSetDeviceMemoryPriorityEXT( vkGetDeviceProcAddr( device, "vkSetDeviceMemoryPriorityEXT" ) ); + + //=== VK_KHR_maintenance4 === + vkGetDeviceBufferMemoryRequirementsKHR = PFN_vkGetDeviceBufferMemoryRequirementsKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceBufferMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceBufferMemoryRequirements ) + vkGetDeviceBufferMemoryRequirements = vkGetDeviceBufferMemoryRequirementsKHR; + vkGetDeviceImageMemoryRequirementsKHR = PFN_vkGetDeviceImageMemoryRequirementsKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceImageMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceImageMemoryRequirements ) + vkGetDeviceImageMemoryRequirements = vkGetDeviceImageMemoryRequirementsKHR; + vkGetDeviceImageSparseMemoryRequirementsKHR = PFN_vkGetDeviceImageSparseMemoryRequirementsKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceImageSparseMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceImageSparseMemoryRequirements ) + vkGetDeviceImageSparseMemoryRequirements = vkGetDeviceImageSparseMemoryRequirementsKHR; + } + }; +} // namespace VULKAN_HPP_NAMESPACE #endif diff --git a/Externals/Vulkan/Include/vulkan/vulkan_android.h b/Externals/Vulkan/Include/vulkan/vulkan_android.h index 9b8d3e276f80..de79d382f2f7 100644 --- a/Externals/Vulkan/Include/vulkan/vulkan_android.h +++ b/Externals/Vulkan/Include/vulkan/vulkan_android.h @@ -2,19 +2,9 @@ #define VULKAN_ANDROID_H_ 1 /* -** Copyright (c) 2015-2019 The Khronos Group Inc. +** Copyright 2015-2022 The Khronos Group Inc. ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -54,7 +44,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR( #define VK_ANDROID_external_memory_android_hardware_buffer 1 struct AHardwareBuffer; -#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 3 +#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 4 #define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer" typedef struct VkAndroidHardwareBufferUsageANDROID { VkStructureType sType; @@ -100,6 +90,19 @@ typedef struct VkExternalFormatANDROID { uint64_t externalFormat; } VkExternalFormatANDROID; +typedef struct VkAndroidHardwareBufferFormatProperties2ANDROID { + VkStructureType sType; + void* pNext; + VkFormat format; + uint64_t externalFormat; + VkFormatFeatureFlags2 formatFeatures; + VkComponentMapping samplerYcbcrConversionComponents; + VkSamplerYcbcrModelConversion suggestedYcbcrModel; + VkSamplerYcbcrRange suggestedYcbcrRange; + VkChromaLocation suggestedXChromaOffset; + VkChromaLocation suggestedYChromaOffset; +} VkAndroidHardwareBufferFormatProperties2ANDROID; + typedef VkResult (VKAPI_PTR *PFN_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties); typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer); diff --git a/Externals/Vulkan/Include/vulkan/vulkan_beta.h b/Externals/Vulkan/Include/vulkan/vulkan_beta.h new file mode 100644 index 000000000000..7fa0d065bc51 --- /dev/null +++ b/Externals/Vulkan/Include/vulkan/vulkan_beta.h @@ -0,0 +1,933 @@ +#ifndef VULKAN_BETA_H_ +#define VULKAN_BETA_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_KHR_video_queue 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR) +#define VK_KHR_VIDEO_QUEUE_SPEC_VERSION 2 +#define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue" + +typedef enum VkQueryResultStatusKHR { + VK_QUERY_RESULT_STATUS_ERROR_KHR = -1, + VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0, + VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1, + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkQueryResultStatusKHR; + +typedef enum VkVideoCodecOperationFlagBitsKHR { + VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR = 0, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 0x00010000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT = 0x00020000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT = 0x00000001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 0x00000002, +#endif + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoCodecOperationFlagBitsKHR; +typedef VkFlags VkVideoCodecOperationFlagsKHR; + +typedef enum VkVideoChromaSubsamplingFlagBitsKHR { + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR = 0, + VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001, + VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002, + VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004, + VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008, + VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoChromaSubsamplingFlagBitsKHR; +typedef VkFlags VkVideoChromaSubsamplingFlagsKHR; + +typedef enum VkVideoComponentBitDepthFlagBitsKHR { + VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0, + VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001, + VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004, + VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010, + VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoComponentBitDepthFlagBitsKHR; +typedef VkFlags VkVideoComponentBitDepthFlagsKHR; + +typedef enum VkVideoCapabilityFlagBitsKHR { + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001, + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002, + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoCapabilityFlagBitsKHR; +typedef VkFlags VkVideoCapabilityFlagsKHR; + +typedef enum VkVideoSessionCreateFlagBitsKHR { + VK_VIDEO_SESSION_CREATE_DEFAULT_KHR = 0, + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001, + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoSessionCreateFlagBitsKHR; +typedef VkFlags VkVideoSessionCreateFlagsKHR; +typedef VkFlags VkVideoBeginCodingFlagsKHR; +typedef VkFlags VkVideoEndCodingFlagsKHR; + +typedef enum VkVideoCodingControlFlagBitsKHR { + VK_VIDEO_CODING_CONTROL_DEFAULT_KHR = 0, + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001, + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoCodingControlFlagBitsKHR; +typedef VkFlags VkVideoCodingControlFlagsKHR; + +typedef enum VkVideoCodingQualityPresetFlagBitsKHR { + VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR = 0x00000001, + VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR = 0x00000002, + VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR = 0x00000004, + VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoCodingQualityPresetFlagBitsKHR; +typedef VkFlags VkVideoCodingQualityPresetFlagsKHR; +typedef struct VkQueueFamilyQueryResultStatusProperties2KHR { + VkStructureType sType; + void* pNext; + VkBool32 supported; +} VkQueueFamilyQueryResultStatusProperties2KHR; + +typedef struct VkVideoQueueFamilyProperties2KHR { + VkStructureType sType; + void* pNext; + VkVideoCodecOperationFlagsKHR videoCodecOperations; +} VkVideoQueueFamilyProperties2KHR; + +typedef struct VkVideoProfileKHR { + VkStructureType sType; + void* pNext; + VkVideoCodecOperationFlagBitsKHR videoCodecOperation; + VkVideoChromaSubsamplingFlagsKHR chromaSubsampling; + VkVideoComponentBitDepthFlagsKHR lumaBitDepth; + VkVideoComponentBitDepthFlagsKHR chromaBitDepth; +} VkVideoProfileKHR; + +typedef struct VkVideoProfilesKHR { + VkStructureType sType; + void* pNext; + uint32_t profileCount; + const VkVideoProfileKHR* pProfiles; +} VkVideoProfilesKHR; + +typedef struct VkVideoCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkVideoCapabilityFlagsKHR capabilityFlags; + VkDeviceSize minBitstreamBufferOffsetAlignment; + VkDeviceSize minBitstreamBufferSizeAlignment; + VkExtent2D videoPictureExtentGranularity; + VkExtent2D minExtent; + VkExtent2D maxExtent; + uint32_t maxReferencePicturesSlotsCount; + uint32_t maxReferencePicturesActiveCount; +} VkVideoCapabilitiesKHR; + +typedef struct VkPhysicalDeviceVideoFormatInfoKHR { + VkStructureType sType; + void* pNext; + VkImageUsageFlags imageUsage; + const VkVideoProfilesKHR* pVideoProfiles; +} VkPhysicalDeviceVideoFormatInfoKHR; + +typedef struct VkVideoFormatPropertiesKHR { + VkStructureType sType; + void* pNext; + VkFormat format; +} VkVideoFormatPropertiesKHR; + +typedef struct VkVideoPictureResourceKHR { + VkStructureType sType; + const void* pNext; + VkOffset2D codedOffset; + VkExtent2D codedExtent; + uint32_t baseArrayLayer; + VkImageView imageViewBinding; +} VkVideoPictureResourceKHR; + +typedef struct VkVideoReferenceSlotKHR { + VkStructureType sType; + const void* pNext; + int8_t slotIndex; + const VkVideoPictureResourceKHR* pPictureResource; +} VkVideoReferenceSlotKHR; + +typedef struct VkVideoGetMemoryPropertiesKHR { + VkStructureType sType; + const void* pNext; + uint32_t memoryBindIndex; + VkMemoryRequirements2* pMemoryRequirements; +} VkVideoGetMemoryPropertiesKHR; + +typedef struct VkVideoBindMemoryKHR { + VkStructureType sType; + const void* pNext; + uint32_t memoryBindIndex; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; + VkDeviceSize memorySize; +} VkVideoBindMemoryKHR; + +typedef struct VkVideoSessionCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t queueFamilyIndex; + VkVideoSessionCreateFlagsKHR flags; + const VkVideoProfileKHR* pVideoProfile; + VkFormat pictureFormat; + VkExtent2D maxCodedExtent; + VkFormat referencePicturesFormat; + uint32_t maxReferencePicturesSlotsCount; + uint32_t maxReferencePicturesActiveCount; +} VkVideoSessionCreateInfoKHR; + +typedef struct VkVideoSessionParametersCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoSessionParametersKHR videoSessionParametersTemplate; + VkVideoSessionKHR videoSession; +} VkVideoSessionParametersCreateInfoKHR; + +typedef struct VkVideoSessionParametersUpdateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t updateSequenceCount; +} VkVideoSessionParametersUpdateInfoKHR; + +typedef struct VkVideoBeginCodingInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoBeginCodingFlagsKHR flags; + VkVideoCodingQualityPresetFlagsKHR codecQualityPreset; + VkVideoSessionKHR videoSession; + VkVideoSessionParametersKHR videoSessionParameters; + uint32_t referenceSlotCount; + const VkVideoReferenceSlotKHR* pReferenceSlots; +} VkVideoBeginCodingInfoKHR; + +typedef struct VkVideoEndCodingInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEndCodingFlagsKHR flags; +} VkVideoEndCodingInfoKHR; + +typedef struct VkVideoCodingControlInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoCodingControlFlagsKHR flags; +} VkVideoCodingControlInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties); +typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession); +typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements); +typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories); +typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters); +typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); +typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo); +typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR( + VkPhysicalDevice physicalDevice, + const VkVideoProfileKHR* pVideoProfile, + VkVideoCapabilitiesKHR* pCapabilities); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, + uint32_t* pVideoFormatPropertyCount, + VkVideoFormatPropertiesKHR* pVideoFormatProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR( + VkDevice device, + const VkVideoSessionCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkVideoSessionKHR* pVideoSession); + +VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR( + VkDevice device, + VkVideoSessionKHR videoSession, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR( + VkDevice device, + VkVideoSessionKHR videoSession, + uint32_t* pVideoSessionMemoryRequirementsCount, + VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements); + +VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR( + VkDevice device, + VkVideoSessionKHR videoSession, + uint32_t videoSessionBindMemoryCount, + const VkVideoBindMemoryKHR* pVideoSessionBindMemories); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR( + VkDevice device, + const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkVideoSessionParametersKHR* pVideoSessionParameters); + +VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR( + VkDevice device, + VkVideoSessionParametersKHR videoSessionParameters, + const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); + +VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR( + VkDevice device, + VkVideoSessionParametersKHR videoSessionParameters, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR( + VkCommandBuffer commandBuffer, + const VkVideoBeginCodingInfoKHR* pBeginInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR( + VkCommandBuffer commandBuffer, + const VkVideoEndCodingInfoKHR* pEndCodingInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR( + VkCommandBuffer commandBuffer, + const VkVideoCodingControlInfoKHR* pCodingControlInfo); +#endif + + +#define VK_KHR_video_decode_queue 1 +#define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 2 +#define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue" + +typedef enum VkVideoDecodeFlagBitsKHR { + VK_VIDEO_DECODE_DEFAULT_KHR = 0, + VK_VIDEO_DECODE_RESERVED_0_BIT_KHR = 0x00000001, + VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoDecodeFlagBitsKHR; +typedef VkFlags VkVideoDecodeFlagsKHR; +typedef struct VkVideoDecodeInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoDecodeFlagsKHR flags; + VkOffset2D codedOffset; + VkExtent2D codedExtent; + VkBuffer srcBuffer; + VkDeviceSize srcBufferOffset; + VkDeviceSize srcBufferRange; + VkVideoPictureResourceKHR dstPictureResource; + const VkVideoReferenceSlotKHR* pSetupReferenceSlot; + uint32_t referenceSlotCount; + const VkVideoReferenceSlotKHR* pReferenceSlots; +} VkVideoDecodeInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR( + VkCommandBuffer commandBuffer, + const VkVideoDecodeInfoKHR* pFrameInfo); +#endif + + +#define VK_KHR_portability_subset 1 +#define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1 +#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset" +typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 constantAlphaColorBlendFactors; + VkBool32 events; + VkBool32 imageViewFormatReinterpretation; + VkBool32 imageViewFormatSwizzle; + VkBool32 imageView2DOn3DImage; + VkBool32 multisampleArrayImage; + VkBool32 mutableComparisonSamplers; + VkBool32 pointPolygons; + VkBool32 samplerMipLodBias; + VkBool32 separateStencilMaskRef; + VkBool32 shaderSampleRateInterpolationFunctions; + VkBool32 tessellationIsolines; + VkBool32 tessellationPointMode; + VkBool32 triangleFans; + VkBool32 vertexAttributeAccessBeyondStride; +} VkPhysicalDevicePortabilitySubsetFeaturesKHR; + +typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t minVertexInputBindingStrideAlignment; +} VkPhysicalDevicePortabilitySubsetPropertiesKHR; + + + +#define VK_KHR_video_encode_queue 1 +#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 3 +#define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue" + +typedef enum VkVideoEncodeFlagBitsKHR { + VK_VIDEO_ENCODE_DEFAULT_KHR = 0, + VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeFlagBitsKHR; +typedef VkFlags VkVideoEncodeFlagsKHR; + +typedef enum VkVideoEncodeRateControlFlagBitsKHR { + VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR = 0, + VK_VIDEO_ENCODE_RATE_CONTROL_RESERVED_0_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeRateControlFlagBitsKHR; +typedef VkFlags VkVideoEncodeRateControlFlagsKHR; + +typedef enum VkVideoEncodeRateControlModeFlagBitsKHR { + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeRateControlModeFlagBitsKHR; +typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR; +typedef struct VkVideoEncodeInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeFlagsKHR flags; + uint32_t qualityLevel; + VkExtent2D codedExtent; + VkBuffer dstBitstreamBuffer; + VkDeviceSize dstBitstreamBufferOffset; + VkDeviceSize dstBitstreamBufferMaxRange; + VkVideoPictureResourceKHR srcPictureResource; + const VkVideoReferenceSlotKHR* pSetupReferenceSlot; + uint32_t referenceSlotCount; + const VkVideoReferenceSlotKHR* pReferenceSlots; + uint32_t precedingExternallyEncodedBytes; +} VkVideoEncodeInfoKHR; + +typedef struct VkVideoEncodeRateControlLayerInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t averageBitrate; + uint32_t maxBitrate; + uint32_t frameRateNumerator; + uint32_t frameRateDenominator; + uint32_t virtualBufferSizeInMs; + uint32_t initialVirtualBufferSizeInMs; +} VkVideoEncodeRateControlLayerInfoKHR; + +typedef struct VkVideoEncodeRateControlInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeRateControlFlagsKHR flags; + VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode; + uint8_t layerCount; + const VkVideoEncodeRateControlLayerInfoKHR* pLayerConfigs; +} VkVideoEncodeRateControlInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR( + VkCommandBuffer commandBuffer, + const VkVideoEncodeInfoKHR* pEncodeInfo); +#endif + + +#define VK_EXT_video_encode_h264 1 +#include "vk_video/vulkan_video_codec_h264std.h" +#include "vk_video/vulkan_video_codec_h264std_encode.h" +#define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 3 +#define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264" + +typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT { + VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00000008, + VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000010, + VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000020, + VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00000040, + VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00000080, + VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00000100, + VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00000200, + VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT = 0x00000400, + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH264CapabilityFlagBitsEXT; +typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT; + +typedef enum VkVideoEncodeH264InputModeFlagBitsEXT { + VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH264InputModeFlagBitsEXT; +typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT; + +typedef enum VkVideoEncodeH264OutputModeFlagBitsEXT { + VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH264OutputModeFlagBitsEXT; +typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT; + +typedef enum VkVideoEncodeH264CreateFlagBitsEXT { + VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT = 0, + VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH264CreateFlagBitsEXT; +typedef VkFlags VkVideoEncodeH264CreateFlagsEXT; + +typedef enum VkVideoEncodeH264RateControlStructureFlagBitsEXT { + VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH264RateControlStructureFlagBitsEXT; +typedef VkFlags VkVideoEncodeH264RateControlStructureFlagsEXT; +typedef struct VkVideoEncodeH264CapabilitiesEXT { + VkStructureType sType; + const void* pNext; + VkVideoEncodeH264CapabilityFlagsEXT flags; + VkVideoEncodeH264InputModeFlagsEXT inputModeFlags; + VkVideoEncodeH264OutputModeFlagsEXT outputModeFlags; + VkExtent2D minPictureSizeInMbs; + VkExtent2D maxPictureSizeInMbs; + VkExtent2D inputImageDataAlignment; + uint8_t maxNumL0ReferenceForP; + uint8_t maxNumL0ReferenceForB; + uint8_t maxNumL1Reference; + uint8_t qualityLevelCount; + VkExtensionProperties stdExtensionVersion; +} VkVideoEncodeH264CapabilitiesEXT; + +typedef struct VkVideoEncodeH264SessionCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkVideoEncodeH264CreateFlagsEXT flags; + VkExtent2D maxPictureSizeInMbs; + const VkExtensionProperties* pStdExtensionVersion; +} VkVideoEncodeH264SessionCreateInfoEXT; + +typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t spsStdCount; + const StdVideoH264SequenceParameterSet* pSpsStd; + uint32_t ppsStdCount; + const StdVideoH264PictureParameterSet* pPpsStd; +} VkVideoEncodeH264SessionParametersAddInfoEXT; + +typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t maxSpsStdCount; + uint32_t maxPpsStdCount; + const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo; +} VkVideoEncodeH264SessionParametersCreateInfoEXT; + +typedef struct VkVideoEncodeH264DpbSlotInfoEXT { + VkStructureType sType; + const void* pNext; + int8_t slotIndex; + const StdVideoEncodeH264PictureInfo* pStdPictureInfo; +} VkVideoEncodeH264DpbSlotInfoEXT; + +typedef struct VkVideoEncodeH264NaluSliceEXT { + VkStructureType sType; + const void* pNext; + const StdVideoEncodeH264SliceHeader* pSliceHeaderStd; + uint32_t mbCount; + uint8_t refFinalList0EntryCount; + const VkVideoEncodeH264DpbSlotInfoEXT* pRefFinalList0Entries; + uint8_t refFinalList1EntryCount; + const VkVideoEncodeH264DpbSlotInfoEXT* pRefFinalList1Entries; +} VkVideoEncodeH264NaluSliceEXT; + +typedef struct VkVideoEncodeH264VclFrameInfoEXT { + VkStructureType sType; + const void* pNext; + uint8_t refDefaultFinalList0EntryCount; + const VkVideoEncodeH264DpbSlotInfoEXT* pRefDefaultFinalList0Entries; + uint8_t refDefaultFinalList1EntryCount; + const VkVideoEncodeH264DpbSlotInfoEXT* pRefDefaultFinalList1Entries; + uint32_t naluSliceEntryCount; + const VkVideoEncodeH264NaluSliceEXT* pNaluSliceEntries; + const VkVideoEncodeH264DpbSlotInfoEXT* pCurrentPictureInfo; +} VkVideoEncodeH264VclFrameInfoEXT; + +typedef struct VkVideoEncodeH264EmitPictureParametersEXT { + VkStructureType sType; + const void* pNext; + uint8_t spsId; + VkBool32 emitSpsEnable; + uint32_t ppsIdEntryCount; + const uint8_t* ppsIdEntries; +} VkVideoEncodeH264EmitPictureParametersEXT; + +typedef struct VkVideoEncodeH264ProfileEXT { + VkStructureType sType; + const void* pNext; + StdVideoH264ProfileIdc stdProfileIdc; +} VkVideoEncodeH264ProfileEXT; + +typedef struct VkVideoEncodeH264RateControlInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t gopFrameCount; + uint32_t idrPeriod; + uint32_t consecutiveBFrameCount; + VkVideoEncodeH264RateControlStructureFlagBitsEXT rateControlStructure; + uint8_t temporalLayerCount; +} VkVideoEncodeH264RateControlInfoEXT; + +typedef struct VkVideoEncodeH264QpEXT { + int32_t qpI; + int32_t qpP; + int32_t qpB; +} VkVideoEncodeH264QpEXT; + +typedef struct VkVideoEncodeH264FrameSizeEXT { + uint32_t frameISize; + uint32_t framePSize; + uint32_t frameBSize; +} VkVideoEncodeH264FrameSizeEXT; + +typedef struct VkVideoEncodeH264RateControlLayerInfoEXT { + VkStructureType sType; + const void* pNext; + uint8_t temporalLayerId; + VkBool32 useInitialRcQp; + VkVideoEncodeH264QpEXT initialRcQp; + VkBool32 useMinQp; + VkVideoEncodeH264QpEXT minQp; + VkBool32 useMaxQp; + VkVideoEncodeH264QpEXT maxQp; + VkBool32 useMaxFrameSize; + VkVideoEncodeH264FrameSizeEXT maxFrameSize; +} VkVideoEncodeH264RateControlLayerInfoEXT; + + + +#define VK_EXT_video_encode_h265 1 +#include "vk_video/vulkan_video_codec_h265std.h" +#include "vk_video/vulkan_video_codec_h265std_encode.h" +#define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 3 +#define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265" +typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT; + +typedef enum VkVideoEncodeH265InputModeFlagBitsEXT { + VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H265_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265InputModeFlagBitsEXT; +typedef VkFlags VkVideoEncodeH265InputModeFlagsEXT; + +typedef enum VkVideoEncodeH265OutputModeFlagBitsEXT { + VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265OutputModeFlagBitsEXT; +typedef VkFlags VkVideoEncodeH265OutputModeFlagsEXT; +typedef VkFlags VkVideoEncodeH265CreateFlagsEXT; + +typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT { + VK_VIDEO_ENCODE_H265_CTB_SIZE_8_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000008, + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265CtbSizeFlagBitsEXT; +typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT; + +typedef enum VkVideoEncodeH265RateControlStructureFlagBitsEXT { + VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265RateControlStructureFlagBitsEXT; +typedef VkFlags VkVideoEncodeH265RateControlStructureFlagsEXT; +typedef struct VkVideoEncodeH265CapabilitiesEXT { + VkStructureType sType; + const void* pNext; + VkVideoEncodeH265CapabilityFlagsEXT flags; + VkVideoEncodeH265InputModeFlagsEXT inputModeFlags; + VkVideoEncodeH265OutputModeFlagsEXT outputModeFlags; + VkVideoEncodeH265CtbSizeFlagsEXT ctbSizes; + VkExtent2D inputImageDataAlignment; + uint8_t maxNumL0ReferenceForP; + uint8_t maxNumL0ReferenceForB; + uint8_t maxNumL1Reference; + uint8_t maxNumSubLayers; + uint8_t qualityLevelCount; + VkExtensionProperties stdExtensionVersion; +} VkVideoEncodeH265CapabilitiesEXT; + +typedef struct VkVideoEncodeH265SessionCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkVideoEncodeH265CreateFlagsEXT flags; + const VkExtensionProperties* pStdExtensionVersion; +} VkVideoEncodeH265SessionCreateInfoEXT; + +typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t vpsStdCount; + const StdVideoH265VideoParameterSet* pVpsStd; + uint32_t spsStdCount; + const StdVideoH265SequenceParameterSet* pSpsStd; + uint32_t ppsStdCount; + const StdVideoH265PictureParameterSet* pPpsStd; +} VkVideoEncodeH265SessionParametersAddInfoEXT; + +typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t maxVpsStdCount; + uint32_t maxSpsStdCount; + uint32_t maxPpsStdCount; + const VkVideoEncodeH265SessionParametersAddInfoEXT* pParametersAddInfo; +} VkVideoEncodeH265SessionParametersCreateInfoEXT; + +typedef struct VkVideoEncodeH265DpbSlotInfoEXT { + VkStructureType sType; + const void* pNext; + int8_t slotIndex; + const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo; +} VkVideoEncodeH265DpbSlotInfoEXT; + +typedef struct VkVideoEncodeH265ReferenceListsEXT { + VkStructureType sType; + const void* pNext; + uint8_t referenceList0EntryCount; + const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList0Entries; + uint8_t referenceList1EntryCount; + const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList1Entries; + const StdVideoEncodeH265ReferenceModifications* pReferenceModifications; +} VkVideoEncodeH265ReferenceListsEXT; + +typedef struct VkVideoEncodeH265NaluSliceEXT { + VkStructureType sType; + const void* pNext; + uint32_t ctbCount; + const VkVideoEncodeH265ReferenceListsEXT* pReferenceFinalLists; + const StdVideoEncodeH265SliceHeader* pSliceHeaderStd; +} VkVideoEncodeH265NaluSliceEXT; + +typedef struct VkVideoEncodeH265VclFrameInfoEXT { + VkStructureType sType; + const void* pNext; + const VkVideoEncodeH265ReferenceListsEXT* pReferenceFinalLists; + uint32_t naluSliceEntryCount; + const VkVideoEncodeH265NaluSliceEXT* pNaluSliceEntries; + const StdVideoEncodeH265PictureInfo* pCurrentPictureInfo; +} VkVideoEncodeH265VclFrameInfoEXT; + +typedef struct VkVideoEncodeH265EmitPictureParametersEXT { + VkStructureType sType; + const void* pNext; + uint8_t vpsId; + uint8_t spsId; + VkBool32 emitVpsEnable; + VkBool32 emitSpsEnable; + uint32_t ppsIdEntryCount; + const uint8_t* ppsIdEntries; +} VkVideoEncodeH265EmitPictureParametersEXT; + +typedef struct VkVideoEncodeH265ProfileEXT { + VkStructureType sType; + const void* pNext; + StdVideoH265ProfileIdc stdProfileIdc; +} VkVideoEncodeH265ProfileEXT; + +typedef struct VkVideoEncodeH265RateControlInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t gopFrameCount; + uint32_t idrPeriod; + uint32_t consecutiveBFrameCount; + VkVideoEncodeH265RateControlStructureFlagBitsEXT rateControlStructure; + uint8_t subLayerCount; +} VkVideoEncodeH265RateControlInfoEXT; + +typedef struct VkVideoEncodeH265QpEXT { + int32_t qpI; + int32_t qpP; + int32_t qpB; +} VkVideoEncodeH265QpEXT; + +typedef struct VkVideoEncodeH265FrameSizeEXT { + uint32_t frameISize; + uint32_t framePSize; + uint32_t frameBSize; +} VkVideoEncodeH265FrameSizeEXT; + +typedef struct VkVideoEncodeH265RateControlLayerInfoEXT { + VkStructureType sType; + const void* pNext; + uint8_t temporalId; + VkBool32 useInitialRcQp; + VkVideoEncodeH265QpEXT initialRcQp; + VkBool32 useMinQp; + VkVideoEncodeH265QpEXT minQp; + VkBool32 useMaxQp; + VkVideoEncodeH265QpEXT maxQp; + VkBool32 useMaxFrameSize; + VkVideoEncodeH265FrameSizeEXT maxFrameSize; +} VkVideoEncodeH265RateControlLayerInfoEXT; + + + +#define VK_EXT_video_decode_h264 1 +#include "vk_video/vulkan_video_codec_h264std_decode.h" +#define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 3 +#define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264" + +typedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT { + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0, + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001, + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002, + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoDecodeH264PictureLayoutFlagBitsEXT; +typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT; +typedef VkFlags VkVideoDecodeH264CreateFlagsEXT; +typedef struct VkVideoDecodeH264ProfileEXT { + VkStructureType sType; + const void* pNext; + StdVideoH264ProfileIdc stdProfileIdc; + VkVideoDecodeH264PictureLayoutFlagsEXT pictureLayout; +} VkVideoDecodeH264ProfileEXT; + +typedef struct VkVideoDecodeH264CapabilitiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxLevel; + VkOffset2D fieldOffsetGranularity; + VkExtensionProperties stdExtensionVersion; +} VkVideoDecodeH264CapabilitiesEXT; + +typedef struct VkVideoDecodeH264SessionCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkVideoDecodeH264CreateFlagsEXT flags; + const VkExtensionProperties* pStdExtensionVersion; +} VkVideoDecodeH264SessionCreateInfoEXT; + +typedef struct VkVideoDecodeH264SessionParametersAddInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t spsStdCount; + const StdVideoH264SequenceParameterSet* pSpsStd; + uint32_t ppsStdCount; + const StdVideoH264PictureParameterSet* pPpsStd; +} VkVideoDecodeH264SessionParametersAddInfoEXT; + +typedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t maxSpsStdCount; + uint32_t maxPpsStdCount; + const VkVideoDecodeH264SessionParametersAddInfoEXT* pParametersAddInfo; +} VkVideoDecodeH264SessionParametersCreateInfoEXT; + +typedef struct VkVideoDecodeH264PictureInfoEXT { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH264PictureInfo* pStdPictureInfo; + uint32_t slicesCount; + const uint32_t* pSlicesDataOffsets; +} VkVideoDecodeH264PictureInfoEXT; + +typedef struct VkVideoDecodeH264MvcEXT { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH264Mvc* pStdMvc; +} VkVideoDecodeH264MvcEXT; + +typedef struct VkVideoDecodeH264DpbSlotInfoEXT { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH264ReferenceInfo* pStdReferenceInfo; +} VkVideoDecodeH264DpbSlotInfoEXT; + + + +#define VK_EXT_video_decode_h265 1 +#include "vk_video/vulkan_video_codec_h265std_decode.h" +#define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 1 +#define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265" +typedef VkFlags VkVideoDecodeH265CreateFlagsEXT; +typedef struct VkVideoDecodeH265ProfileEXT { + VkStructureType sType; + const void* pNext; + StdVideoH265ProfileIdc stdProfileIdc; +} VkVideoDecodeH265ProfileEXT; + +typedef struct VkVideoDecodeH265CapabilitiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxLevel; + VkExtensionProperties stdExtensionVersion; +} VkVideoDecodeH265CapabilitiesEXT; + +typedef struct VkVideoDecodeH265SessionCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkVideoDecodeH265CreateFlagsEXT flags; + const VkExtensionProperties* pStdExtensionVersion; +} VkVideoDecodeH265SessionCreateInfoEXT; + +typedef struct VkVideoDecodeH265SessionParametersAddInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t spsStdCount; + const StdVideoH265SequenceParameterSet* pSpsStd; + uint32_t ppsStdCount; + const StdVideoH265PictureParameterSet* pPpsStd; +} VkVideoDecodeH265SessionParametersAddInfoEXT; + +typedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t maxSpsStdCount; + uint32_t maxPpsStdCount; + const VkVideoDecodeH265SessionParametersAddInfoEXT* pParametersAddInfo; +} VkVideoDecodeH265SessionParametersCreateInfoEXT; + +typedef struct VkVideoDecodeH265PictureInfoEXT { + VkStructureType sType; + const void* pNext; + StdVideoDecodeH265PictureInfo* pStdPictureInfo; + uint32_t slicesCount; + const uint32_t* pSlicesDataOffsets; +} VkVideoDecodeH265PictureInfoEXT; + +typedef struct VkVideoDecodeH265DpbSlotInfoEXT { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH265ReferenceInfo* pStdReferenceInfo; +} VkVideoDecodeH265DpbSlotInfoEXT; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/Vulkan/Include/vulkan/vulkan_core.h b/Externals/Vulkan/Include/vulkan/vulkan_core.h index 50f72f677b22..228e4ef6e5a7 100644 --- a/Externals/Vulkan/Include/vulkan/vulkan_core.h +++ b/Externals/Vulkan/Include/vulkan/vulkan_core.h @@ -2,19 +2,9 @@ #define VULKAN_CORE_H_ 1 /* -** Copyright (c) 2015-2019 The Khronos Group Inc. +** Copyright 2015-2022 The Khronos Group Inc. ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -31,40 +21,82 @@ extern "C" { #define VK_VERSION_1_0 1 #include "vk_platform.h" + +#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; + + +#ifndef VK_USE_64_BIT_PTR_DEFINES + #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) + #define VK_USE_64_BIT_PTR_DEFINES 1 + #else + #define VK_USE_64_BIT_PTR_DEFINES 0 + #endif +#endif + + +#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE + #if (VK_USE_64_BIT_PTR_DEFINES==1) + #if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201103L)) + #define VK_NULL_HANDLE nullptr + #else + #define VK_NULL_HANDLE ((void*)0) + #endif + #else + #define VK_NULL_HANDLE 0ULL + #endif +#endif +#ifndef VK_NULL_HANDLE + #define VK_NULL_HANDLE 0 +#endif + + +#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE + #if (VK_USE_64_BIT_PTR_DEFINES==1) + #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; + #else + #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; + #endif +#endif + +// DEPRECATED: This define is deprecated. VK_MAKE_API_VERSION should be used instead. #define VK_MAKE_VERSION(major, minor, patch) \ - (((major) << 22) | ((minor) << 12) | (patch)) + ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch))) // DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead. //#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0 +#define VK_MAKE_API_VERSION(variant, major, minor, patch) \ + ((((uint32_t)(variant)) << 29) | (((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch))) + // Vulkan 1.0 version number -#define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0 +#define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0 -#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22) -#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) -#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) // Version of this file -#define VK_HEADER_VERSION 121 - +#define VK_HEADER_VERSION 204 -#define VK_NULL_HANDLE 0 +// Complete version of this file +#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) +// DEPRECATED: This define is deprecated. VK_API_VERSION_MAJOR should be used instead. +#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22) -#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; - +// DEPRECATED: This define is deprecated. VK_API_VERSION_MINOR should be used instead. +#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU) -#if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE) -#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) - #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; -#else - #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; -#endif -#endif +// DEPRECATED: This define is deprecated. VK_API_VERSION_PATCH should be used instead. +#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) -typedef uint32_t VkFlags; +#define VK_API_VERSION_VARIANT(version) ((uint32_t)(version) >> 29) +#define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22) & 0x7FU) +#define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU) +#define VK_API_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) typedef uint32_t VkBool32; +typedef uint64_t VkDeviceAddress; typedef uint64_t VkDeviceSize; +typedef uint32_t VkFlags; typedef uint32_t VkSampleMask; +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage) VK_DEFINE_HANDLE(VkInstance) VK_DEFINE_HANDLE(VkPhysicalDevice) VK_DEFINE_HANDLE(VkDevice) @@ -73,8 +105,6 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore) VK_DEFINE_HANDLE(VkCommandBuffer) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView) @@ -82,37 +112,29 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool) -#define VK_LOD_CLAMP_NONE 1000.0f -#define VK_REMAINING_MIP_LEVELS (~0U) -#define VK_REMAINING_ARRAY_LAYERS (~0U) -#define VK_WHOLE_SIZE (~0ULL) +#define VK_UUID_SIZE 16U #define VK_ATTACHMENT_UNUSED (~0U) -#define VK_TRUE 1 -#define VK_FALSE 0 +#define VK_FALSE 0U +#define VK_LOD_CLAMP_NONE 1000.0F #define VK_QUEUE_FAMILY_IGNORED (~0U) +#define VK_REMAINING_ARRAY_LAYERS (~0U) +#define VK_REMAINING_MIP_LEVELS (~0U) #define VK_SUBPASS_EXTERNAL (~0U) -#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256 -#define VK_UUID_SIZE 16 -#define VK_MAX_MEMORY_TYPES 32 -#define VK_MAX_MEMORY_HEAPS 16 -#define VK_MAX_EXTENSION_NAME_SIZE 256 -#define VK_MAX_DESCRIPTION_SIZE 256 - -typedef enum VkPipelineCacheHeaderVersion { - VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1, - VK_PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE, - VK_PIPELINE_CACHE_HEADER_VERSION_END_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE, - VK_PIPELINE_CACHE_HEADER_VERSION_RANGE_SIZE = (VK_PIPELINE_CACHE_HEADER_VERSION_ONE - VK_PIPELINE_CACHE_HEADER_VERSION_ONE + 1), - VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF -} VkPipelineCacheHeaderVersion; +#define VK_TRUE 1U +#define VK_WHOLE_SIZE (~0ULL) +#define VK_MAX_MEMORY_TYPES 32U +#define VK_MAX_MEMORY_HEAPS 16U +#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256U +#define VK_MAX_EXTENSION_NAME_SIZE 256U +#define VK_MAX_DESCRIPTION_SIZE 256U typedef enum VkResult { VK_SUCCESS = 0, @@ -133,8 +155,12 @@ typedef enum VkResult { VK_ERROR_TOO_MANY_OBJECTS = -10, VK_ERROR_FORMAT_NOT_SUPPORTED = -11, VK_ERROR_FRAGMENTED_POOL = -12, + VK_ERROR_UNKNOWN = -13, VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000, VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003, + VK_ERROR_FRAGMENTATION = -1000161000, + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000, + VK_PIPELINE_COMPILE_REQUIRED = 1000297000, VK_ERROR_SURFACE_LOST_KHR = -1000000000, VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001, VK_SUBOPTIMAL_KHR = 1000001003, @@ -143,15 +169,20 @@ typedef enum VkResult { VK_ERROR_VALIDATION_FAILED_EXT = -1000011001, VK_ERROR_INVALID_SHADER_NV = -1000012000, VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000, - VK_ERROR_FRAGMENTATION_EXT = -1000161000, - VK_ERROR_NOT_PERMITTED_EXT = -1000174001, - VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000244000, + VK_ERROR_NOT_PERMITTED_KHR = -1000174001, VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000, + VK_THREAD_IDLE_KHR = 1000268000, + VK_THREAD_DONE_KHR = 1000268001, + VK_OPERATION_DEFERRED_KHR = 1000268002, + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003, VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY, VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE, - VK_RESULT_BEGIN_RANGE = VK_ERROR_FRAGMENTED_POOL, - VK_RESULT_END_RANGE = VK_INCOMPLETE, - VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FRAGMENTED_POOL + 1), + VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION, + VK_ERROR_NOT_PERMITTED_EXT = VK_ERROR_NOT_PERMITTED_KHR, + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, + VK_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED, + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED, VK_RESULT_MAX_ENUM = 0x7FFFFFFF } VkResult; @@ -270,6 +301,108 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002, + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004, + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005, + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000, + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000, + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002, + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001, + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002, + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003, + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004, + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000, + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001, + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002, + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES = 53, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES = 54, + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO = 1000192000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES = 1000215000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES = 1000245000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES = 1000276000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES = 1000295000, + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO = 1000295001, + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO = 1000295002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES = 1000297000, + VK_STRUCTURE_TYPE_MEMORY_BARRIER_2 = 1000314000, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2 = 1000314001, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2 = 1000314002, + VK_STRUCTURE_TYPE_DEPENDENCY_INFO = 1000314003, + VK_STRUCTURE_TYPE_SUBMIT_INFO_2 = 1000314004, + VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO = 1000314005, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO = 1000314006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES = 1000314007, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES = 1000325000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES = 1000335000, + VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2 = 1000337000, + VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2 = 1000337001, + VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2 = 1000337002, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2 = 1000337003, + VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2 = 1000337004, + VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2 = 1000337005, + VK_STRUCTURE_TYPE_BUFFER_COPY_2 = 1000337006, + VK_STRUCTURE_TYPE_IMAGE_COPY_2 = 1000337007, + VK_STRUCTURE_TYPE_IMAGE_BLIT_2 = 1000337008, + VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2 = 1000337009, + VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2 = 1000337010, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES = 1000225000, + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO = 1000225001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES = 1000225002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES = 1000138000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES = 1000138001, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK = 1000138002, + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO = 1000138003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES = 1000066000, + VK_STRUCTURE_TYPE_RENDERING_INFO = 1000044000, + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO = 1000044001, + VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO = 1000044002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES = 1000044003, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO = 1000044004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES = 1000280000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES = 1000280001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES = 1000281001, + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3 = 1000360000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES = 1000413000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001, + VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002, + VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003, VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000, VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001, VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007, @@ -291,14 +424,169 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000, VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001, VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR = 1000023000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR = 1000023001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR = 1000023002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR = 1000023003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR = 1000023004, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR = 1000023005, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000023006, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR = 1000023007, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR = 1000023008, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR = 1000023009, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR = 1000023010, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR = 1000023011, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000023012, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR = 1000023013, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR = 1000023014, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR = 1000023015, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_2_KHR = 1000023016, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR = 1000024000, +#endif VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000, VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001, VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001, VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002, + VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000, + VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001, + VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002, VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000, + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT = 1000038000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT = 1000038001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000038002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000038003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT = 1000038004, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT = 1000038005, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT = 1000038006, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT = 1000038007, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT = 1000038008, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT = 1000038009, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT = 1000038010, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT = 1000039000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT = 1000039001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000039002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000039003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT = 1000039004, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT = 1000039005, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_EXT = 1000039006, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT = 1000039007, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT = 1000039008, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT = 1000039009, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT = 1000039010, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT = 1000039011, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT = 1000040000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT = 1000040001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT = 1000040002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT = 1000040003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT = 1000040004, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000040005, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000040006, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT = 1000040007, +#endif VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000, + VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006, + VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007, + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008, + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009, VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000, VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000, @@ -308,7 +596,6 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000, VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000, VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000, VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001, VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000, @@ -329,14 +616,7 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001, VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000, VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000, - VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000, - VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001, - VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002, - VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003, - VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004, - VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005, VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000, VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000, VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000, @@ -353,23 +633,19 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000, VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001, VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002, - VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002, - VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003, - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004, - VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005, - VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006, VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000, VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000, VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001, VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002, VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000, VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001, + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002, + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003, + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004, + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005, + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000, VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001, VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002, @@ -391,38 +667,54 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003, VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004, VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000, - VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002, - VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003, + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006, VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000, VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001, VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003, VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001, VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002, VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000150007, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR = 1000150009, + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010, + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011, + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = 1000150013, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = 1000150014, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = 1000150020, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = 1000347001, + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015, + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016, + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = 1000348013, VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001, VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000, - VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002, VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003, VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004, VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005, + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT = 1000158006, VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000, VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = 1000163000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = 1000163001, +#endif VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002, @@ -442,25 +734,42 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000, VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001, - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000, VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000, VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000, VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000, VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT = 1000187000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT = 1000187001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000187002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000187003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT = 1000187004, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT = 1000187005, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT = 1000187006, +#endif + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001, VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000, VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002, VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000, - VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001, @@ -471,13 +780,12 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000, VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000, - VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000, + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000, VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001, VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002, VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003, VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004, VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000, VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000, VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001, @@ -486,22 +794,23 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001, VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000, - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002, + VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000, + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000, VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001, VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000, - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001, VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002, - VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000, VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR = 1000248000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000, VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002, @@ -510,7 +819,9 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = 1000254000, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = 1000254001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = 1000254002, VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000, VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002, VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001, @@ -518,20 +829,123 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000, VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000, VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000, + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001, + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002, + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003, + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004, + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005, + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = 1000278000, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = 1000278001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000, + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = 1000284000, + VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = 1000284001, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = 1000284002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001, + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002, + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000, + VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002, +#endif + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000, + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008, + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR = 1000323000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = 1000326000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = 1000326001, + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = 1000326002, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = 1000327000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = 1000327001, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV = 1000327002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001, + VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = 1000344000, + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000, + VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000, + VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001, + VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT = 1000353000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT = 1000355000, + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT = 1000355001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT = 1000356000, + VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364000, + VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA = 1000364001, + VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364002, + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365000, + VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365001, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA = 1000366000, + VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA = 1000366001, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA = 1000366002, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA = 1000366003, + VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA = 1000366004, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA = 1000366005, + VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA = 1000366006, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA = 1000366007, + VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA = 1000366008, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA = 1000366009, + VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI = 1000369000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI = 1000369001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI = 1000369002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = 1000370000, + VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV = 1000371000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000, + VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000, + VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = 1000391000, + VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT = 1000391001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000, + VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001, + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, + VK_STRUCTURE_TYPE_RENDERING_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_INFO, + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO, + VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO, + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD, VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, @@ -551,6 +965,7 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO, VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO, VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES, VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, @@ -564,10 +979,22 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO, + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2, + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2, + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO, + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES, VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO, @@ -575,15 +1002,22 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO, VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO, VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR, VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS, VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK, + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO, VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2, VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2, VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO, VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO, VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO, VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO, @@ -592,32 +1026,223 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES, VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO, VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT, + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO, + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO, + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO, + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES, + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, - VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO, - VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, - VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1), + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES, + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO, + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES, + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO, + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES, + VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_MEMORY_BARRIER_2, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2, + VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR = VK_STRUCTURE_TYPE_DEPENDENCY_INFO, + VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR = VK_STRUCTURE_TYPE_SUBMIT_INFO_2, + VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES, + VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2, + VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2, + VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_COPY_2, + VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_IMAGE_COPY_2, + VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = VK_STRUCTURE_TYPE_IMAGE_BLIT_2, + VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2, + VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2, + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES, + VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS, + VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS, VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF } VkStructureType; +typedef enum VkImageLayout { + VK_IMAGE_LAYOUT_UNDEFINED = 0, + VK_IMAGE_LAYOUT_GENERAL = 1, + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2, + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3, + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4, + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5, + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7, + VK_IMAGE_LAYOUT_PREINITIALIZED = 8, + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000, + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001, + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002, + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003, + VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000, + VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001, + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR = 1000024002, +#endif + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000, + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000, + VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR = 1000299000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR = 1000299001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR = 1000299002, +#endif + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF +} VkImageLayout; + +typedef enum VkObjectType { + VK_OBJECT_TYPE_UNKNOWN = 0, + VK_OBJECT_TYPE_INSTANCE = 1, + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2, + VK_OBJECT_TYPE_DEVICE = 3, + VK_OBJECT_TYPE_QUEUE = 4, + VK_OBJECT_TYPE_SEMAPHORE = 5, + VK_OBJECT_TYPE_COMMAND_BUFFER = 6, + VK_OBJECT_TYPE_FENCE = 7, + VK_OBJECT_TYPE_DEVICE_MEMORY = 8, + VK_OBJECT_TYPE_BUFFER = 9, + VK_OBJECT_TYPE_IMAGE = 10, + VK_OBJECT_TYPE_EVENT = 11, + VK_OBJECT_TYPE_QUERY_POOL = 12, + VK_OBJECT_TYPE_BUFFER_VIEW = 13, + VK_OBJECT_TYPE_IMAGE_VIEW = 14, + VK_OBJECT_TYPE_SHADER_MODULE = 15, + VK_OBJECT_TYPE_PIPELINE_CACHE = 16, + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17, + VK_OBJECT_TYPE_RENDER_PASS = 18, + VK_OBJECT_TYPE_PIPELINE = 19, + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20, + VK_OBJECT_TYPE_SAMPLER = 21, + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22, + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23, + VK_OBJECT_TYPE_FRAMEBUFFER = 24, + VK_OBJECT_TYPE_COMMAND_POOL = 25, + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000, + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000, + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT = 1000295000, + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000, + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000, + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000, + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001, + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_OBJECT_TYPE_VIDEO_SESSION_KHR = 1000023000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR = 1000023001, +#endif + VK_OBJECT_TYPE_CU_MODULE_NVX = 1000029000, + VK_OBJECT_TYPE_CU_FUNCTION_NVX = 1000029001, + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000, + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000, + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000, + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000, + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000, + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000, + VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000, + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = VK_OBJECT_TYPE_PRIVATE_DATA_SLOT, + VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkObjectType; + +typedef enum VkPipelineCacheHeaderVersion { + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1, + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCacheHeaderVersion; + +typedef enum VkVendorId { + VK_VENDOR_ID_VIV = 0x10001, + VK_VENDOR_ID_VSI = 0x10002, + VK_VENDOR_ID_KAZAN = 0x10003, + VK_VENDOR_ID_CODEPLAY = 0x10004, + VK_VENDOR_ID_MESA = 0x10005, + VK_VENDOR_ID_POCL = 0x10006, + VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF +} VkVendorId; + typedef enum VkSystemAllocationScope { VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1, VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2, VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3, VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4, - VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND, - VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE, - VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = (VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND + 1), VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF } VkSystemAllocationScope; typedef enum VkInternalAllocationType { VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0, - VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE, - VK_INTERNAL_ALLOCATION_TYPE_END_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE, - VK_INTERNAL_ALLOCATION_TYPE_RANGE_SIZE = (VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE + 1), VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF } VkInternalAllocationType; @@ -841,6 +1466,26 @@ typedef enum VkFormat { VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031, VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032, VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033, + VK_FORMAT_G8_B8R8_2PLANE_444_UNORM = 1000330000, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = 1000330001, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = 1000330002, + VK_FORMAT_G16_B16R16_2PLANE_444_UNORM = 1000330003, + 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, + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK = 1000066003, + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK = 1000066004, + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK = 1000066005, + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK = 1000066006, + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK = 1000066007, + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK = 1000066008, + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK = 1000066009, + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK = 1000066010, + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011, + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012, + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013, VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000, VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001, VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002, @@ -849,20 +1494,20 @@ typedef enum VkFormat { 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_4x4_SFLOAT_BLOCK_EXT = 1000066000, - VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001, - VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002, - VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003, - VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004, - VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005, - VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006, - VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007, - VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008, - VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009, - VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010, - VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011, - VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012, - VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013, + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK, + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK, + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK, + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK, + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK, + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK, + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK, VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM, VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM, VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, @@ -897,41 +1542,35 @@ typedef enum VkFormat { VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, - VK_FORMAT_BEGIN_RANGE = VK_FORMAT_UNDEFINED, - VK_FORMAT_END_RANGE = VK_FORMAT_ASTC_12x12_SRGB_BLOCK, - VK_FORMAT_RANGE_SIZE = (VK_FORMAT_ASTC_12x12_SRGB_BLOCK - VK_FORMAT_UNDEFINED + 1), + VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = VK_FORMAT_G8_B8R8_2PLANE_444_UNORM, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16, + VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = VK_FORMAT_G16_B16R16_2PLANE_444_UNORM, + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = VK_FORMAT_A4R4G4B4_UNORM_PACK16, + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = VK_FORMAT_A4B4G4R4_UNORM_PACK16, VK_FORMAT_MAX_ENUM = 0x7FFFFFFF } VkFormat; -typedef enum VkImageType { - VK_IMAGE_TYPE_1D = 0, - VK_IMAGE_TYPE_2D = 1, - VK_IMAGE_TYPE_3D = 2, - VK_IMAGE_TYPE_BEGIN_RANGE = VK_IMAGE_TYPE_1D, - VK_IMAGE_TYPE_END_RANGE = VK_IMAGE_TYPE_3D, - VK_IMAGE_TYPE_RANGE_SIZE = (VK_IMAGE_TYPE_3D - VK_IMAGE_TYPE_1D + 1), - VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkImageType; - typedef enum VkImageTiling { VK_IMAGE_TILING_OPTIMAL = 0, VK_IMAGE_TILING_LINEAR = 1, VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000, - VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL, - VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_LINEAR, - VK_IMAGE_TILING_RANGE_SIZE = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1), VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF } VkImageTiling; +typedef enum VkImageType { + VK_IMAGE_TYPE_1D = 0, + VK_IMAGE_TYPE_2D = 1, + VK_IMAGE_TYPE_3D = 2, + VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkImageType; + typedef enum VkPhysicalDeviceType { VK_PHYSICAL_DEVICE_TYPE_OTHER = 0, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3, VK_PHYSICAL_DEVICE_TYPE_CPU = 4, - VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE = VK_PHYSICAL_DEVICE_TYPE_OTHER, - VK_PHYSICAL_DEVICE_TYPE_END_RANGE = VK_PHYSICAL_DEVICE_TYPE_CPU, - VK_PHYSICAL_DEVICE_TYPE_RANGE_SIZE = (VK_PHYSICAL_DEVICE_TYPE_CPU - VK_PHYSICAL_DEVICE_TYPE_OTHER + 1), VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF } VkPhysicalDeviceType; @@ -939,62 +1578,27 @@ typedef enum VkQueryType { VK_QUERY_TYPE_OCCLUSION = 0, VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, VK_QUERY_TYPE_TIMESTAMP = 2, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR = 1000023000, +#endif VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004, + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001, VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000, VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000, - VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION, - VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP, - VK_QUERY_TYPE_RANGE_SIZE = (VK_QUERY_TYPE_TIMESTAMP - VK_QUERY_TYPE_OCCLUSION + 1), +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR = 1000299000, +#endif VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF } VkQueryType; typedef enum VkSharingMode { VK_SHARING_MODE_EXCLUSIVE = 0, VK_SHARING_MODE_CONCURRENT = 1, - VK_SHARING_MODE_BEGIN_RANGE = VK_SHARING_MODE_EXCLUSIVE, - VK_SHARING_MODE_END_RANGE = VK_SHARING_MODE_CONCURRENT, - VK_SHARING_MODE_RANGE_SIZE = (VK_SHARING_MODE_CONCURRENT - VK_SHARING_MODE_EXCLUSIVE + 1), VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF } VkSharingMode; -typedef enum VkImageLayout { - VK_IMAGE_LAYOUT_UNDEFINED = 0, - VK_IMAGE_LAYOUT_GENERAL = 1, - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2, - VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3, - VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4, - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5, - VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7, - VK_IMAGE_LAYOUT_PREINITIALIZED = 8, - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001, - VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002, - VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000, - VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003, - VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000, - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, - VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED, - VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED, - VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1), - VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF -} VkImageLayout; - -typedef enum VkImageViewType { - VK_IMAGE_VIEW_TYPE_1D = 0, - VK_IMAGE_VIEW_TYPE_2D = 1, - VK_IMAGE_VIEW_TYPE_3D = 2, - VK_IMAGE_VIEW_TYPE_CUBE = 3, - VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4, - VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5, - VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6, - VK_IMAGE_VIEW_TYPE_BEGIN_RANGE = VK_IMAGE_VIEW_TYPE_1D, - VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, - VK_IMAGE_VIEW_TYPE_RANGE_SIZE = (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY - VK_IMAGE_VIEW_TYPE_1D + 1), - VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkImageViewType; - typedef enum VkComponentSwizzle { VK_COMPONENT_SWIZZLE_IDENTITY = 0, VK_COMPONENT_SWIZZLE_ZERO = 1, @@ -1003,111 +1607,19 @@ typedef enum VkComponentSwizzle { VK_COMPONENT_SWIZZLE_G = 4, VK_COMPONENT_SWIZZLE_B = 5, VK_COMPONENT_SWIZZLE_A = 6, - VK_COMPONENT_SWIZZLE_BEGIN_RANGE = VK_COMPONENT_SWIZZLE_IDENTITY, - VK_COMPONENT_SWIZZLE_END_RANGE = VK_COMPONENT_SWIZZLE_A, - VK_COMPONENT_SWIZZLE_RANGE_SIZE = (VK_COMPONENT_SWIZZLE_A - VK_COMPONENT_SWIZZLE_IDENTITY + 1), VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF } VkComponentSwizzle; -typedef enum VkVertexInputRate { - VK_VERTEX_INPUT_RATE_VERTEX = 0, - VK_VERTEX_INPUT_RATE_INSTANCE = 1, - VK_VERTEX_INPUT_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_RATE_VERTEX, - VK_VERTEX_INPUT_RATE_END_RANGE = VK_VERTEX_INPUT_RATE_INSTANCE, - VK_VERTEX_INPUT_RATE_RANGE_SIZE = (VK_VERTEX_INPUT_RATE_INSTANCE - VK_VERTEX_INPUT_RATE_VERTEX + 1), - VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF -} VkVertexInputRate; - -typedef enum VkPrimitiveTopology { - VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0, - VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1, - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5, - VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6, - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9, - VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10, - VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = VK_PRIMITIVE_TOPOLOGY_POINT_LIST, - VK_PRIMITIVE_TOPOLOGY_END_RANGE = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, - VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE = (VK_PRIMITIVE_TOPOLOGY_PATCH_LIST - VK_PRIMITIVE_TOPOLOGY_POINT_LIST + 1), - VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF -} VkPrimitiveTopology; - -typedef enum VkPolygonMode { - VK_POLYGON_MODE_FILL = 0, - VK_POLYGON_MODE_LINE = 1, - VK_POLYGON_MODE_POINT = 2, - VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000, - VK_POLYGON_MODE_BEGIN_RANGE = VK_POLYGON_MODE_FILL, - VK_POLYGON_MODE_END_RANGE = VK_POLYGON_MODE_POINT, - VK_POLYGON_MODE_RANGE_SIZE = (VK_POLYGON_MODE_POINT - VK_POLYGON_MODE_FILL + 1), - VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF -} VkPolygonMode; - -typedef enum VkFrontFace { - VK_FRONT_FACE_COUNTER_CLOCKWISE = 0, - VK_FRONT_FACE_CLOCKWISE = 1, - VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_COUNTER_CLOCKWISE, - VK_FRONT_FACE_END_RANGE = VK_FRONT_FACE_CLOCKWISE, - VK_FRONT_FACE_RANGE_SIZE = (VK_FRONT_FACE_CLOCKWISE - VK_FRONT_FACE_COUNTER_CLOCKWISE + 1), - VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF -} VkFrontFace; - -typedef enum VkCompareOp { - VK_COMPARE_OP_NEVER = 0, - VK_COMPARE_OP_LESS = 1, - VK_COMPARE_OP_EQUAL = 2, - VK_COMPARE_OP_LESS_OR_EQUAL = 3, - VK_COMPARE_OP_GREATER = 4, - VK_COMPARE_OP_NOT_EQUAL = 5, - VK_COMPARE_OP_GREATER_OR_EQUAL = 6, - VK_COMPARE_OP_ALWAYS = 7, - VK_COMPARE_OP_BEGIN_RANGE = VK_COMPARE_OP_NEVER, - VK_COMPARE_OP_END_RANGE = VK_COMPARE_OP_ALWAYS, - VK_COMPARE_OP_RANGE_SIZE = (VK_COMPARE_OP_ALWAYS - VK_COMPARE_OP_NEVER + 1), - VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF -} VkCompareOp; - -typedef enum VkStencilOp { - VK_STENCIL_OP_KEEP = 0, - VK_STENCIL_OP_ZERO = 1, - VK_STENCIL_OP_REPLACE = 2, - VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3, - VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4, - VK_STENCIL_OP_INVERT = 5, - VK_STENCIL_OP_INCREMENT_AND_WRAP = 6, - VK_STENCIL_OP_DECREMENT_AND_WRAP = 7, - VK_STENCIL_OP_BEGIN_RANGE = VK_STENCIL_OP_KEEP, - VK_STENCIL_OP_END_RANGE = VK_STENCIL_OP_DECREMENT_AND_WRAP, - VK_STENCIL_OP_RANGE_SIZE = (VK_STENCIL_OP_DECREMENT_AND_WRAP - VK_STENCIL_OP_KEEP + 1), - VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF -} VkStencilOp; - -typedef enum VkLogicOp { - VK_LOGIC_OP_CLEAR = 0, - VK_LOGIC_OP_AND = 1, - VK_LOGIC_OP_AND_REVERSE = 2, - VK_LOGIC_OP_COPY = 3, - VK_LOGIC_OP_AND_INVERTED = 4, - VK_LOGIC_OP_NO_OP = 5, - VK_LOGIC_OP_XOR = 6, - VK_LOGIC_OP_OR = 7, - VK_LOGIC_OP_NOR = 8, - VK_LOGIC_OP_EQUIVALENT = 9, - VK_LOGIC_OP_INVERT = 10, - VK_LOGIC_OP_OR_REVERSE = 11, - VK_LOGIC_OP_COPY_INVERTED = 12, - VK_LOGIC_OP_OR_INVERTED = 13, - VK_LOGIC_OP_NAND = 14, - VK_LOGIC_OP_SET = 15, - VK_LOGIC_OP_BEGIN_RANGE = VK_LOGIC_OP_CLEAR, - VK_LOGIC_OP_END_RANGE = VK_LOGIC_OP_SET, - VK_LOGIC_OP_RANGE_SIZE = (VK_LOGIC_OP_SET - VK_LOGIC_OP_CLEAR + 1), - VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF -} VkLogicOp; +typedef enum VkImageViewType { + VK_IMAGE_VIEW_TYPE_1D = 0, + VK_IMAGE_VIEW_TYPE_2D = 1, + VK_IMAGE_VIEW_TYPE_3D = 2, + VK_IMAGE_VIEW_TYPE_CUBE = 3, + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4, + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5, + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6, + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkImageViewType; typedef enum VkBlendFactor { VK_BLEND_FACTOR_ZERO = 0, @@ -1129,9 +1641,6 @@ typedef enum VkBlendFactor { VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16, VK_BLEND_FACTOR_SRC1_ALPHA = 17, VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18, - VK_BLEND_FACTOR_BEGIN_RANGE = VK_BLEND_FACTOR_ZERO, - VK_BLEND_FACTOR_END_RANGE = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA, - VK_BLEND_FACTOR_RANGE_SIZE = (VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - VK_BLEND_FACTOR_ZERO + 1), VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF } VkBlendFactor; @@ -1187,12 +1696,21 @@ typedef enum VkBlendOp { VK_BLEND_OP_RED_EXT = 1000148043, VK_BLEND_OP_GREEN_EXT = 1000148044, VK_BLEND_OP_BLUE_EXT = 1000148045, - VK_BLEND_OP_BEGIN_RANGE = VK_BLEND_OP_ADD, - VK_BLEND_OP_END_RANGE = VK_BLEND_OP_MAX, - VK_BLEND_OP_RANGE_SIZE = (VK_BLEND_OP_MAX - VK_BLEND_OP_ADD + 1), VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF } VkBlendOp; +typedef enum VkCompareOp { + VK_COMPARE_OP_NEVER = 0, + VK_COMPARE_OP_LESS = 1, + VK_COMPARE_OP_EQUAL = 2, + VK_COMPARE_OP_LESS_OR_EQUAL = 3, + VK_COMPARE_OP_GREATER = 4, + VK_COMPARE_OP_NOT_EQUAL = 5, + VK_COMPARE_OP_GREATER_OR_EQUAL = 6, + VK_COMPARE_OP_ALWAYS = 7, + VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF +} VkCompareOp; + typedef enum VkDynamicState { VK_DYNAMIC_STATE_VIEWPORT = 0, VK_DYNAMIC_STATE_SCISSOR = 1, @@ -1203,39 +1721,139 @@ typedef enum VkDynamicState { VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6, VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7, VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8, + VK_DYNAMIC_STATE_CULL_MODE = 1000267000, + VK_DYNAMIC_STATE_FRONT_FACE = 1000267001, + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY = 1000267002, + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT = 1000267003, + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT = 1000267004, + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE = 1000267005, + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE = 1000267006, + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE = 1000267007, + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP = 1000267008, + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE = 1000267009, + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE = 1000267010, + VK_DYNAMIC_STATE_STENCIL_OP = 1000267011, + VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001, + VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002, + VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004, VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000, VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000, VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000, + VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000, VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004, VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006, VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001, + VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000, VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000, - VK_DYNAMIC_STATE_BEGIN_RANGE = VK_DYNAMIC_STATE_VIEWPORT, - VK_DYNAMIC_STATE_END_RANGE = VK_DYNAMIC_STATE_STENCIL_REFERENCE, - VK_DYNAMIC_STATE_RANGE_SIZE = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1), + VK_DYNAMIC_STATE_VERTEX_INPUT_EXT = 1000352000, + VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000, + VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003, + VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000, + VK_DYNAMIC_STATE_CULL_MODE_EXT = VK_DYNAMIC_STATE_CULL_MODE, + VK_DYNAMIC_STATE_FRONT_FACE_EXT = VK_DYNAMIC_STATE_FRONT_FACE, + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY, + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT, + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT, + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE, + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE, + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE, + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = VK_DYNAMIC_STATE_DEPTH_COMPARE_OP, + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE, + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE, + VK_DYNAMIC_STATE_STENCIL_OP_EXT = VK_DYNAMIC_STATE_STENCIL_OP, + VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE, + VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE, + VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE, VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF } VkDynamicState; +typedef enum VkFrontFace { + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0, + VK_FRONT_FACE_CLOCKWISE = 1, + VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF +} VkFrontFace; + +typedef enum VkVertexInputRate { + VK_VERTEX_INPUT_RATE_VERTEX = 0, + VK_VERTEX_INPUT_RATE_INSTANCE = 1, + VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF +} VkVertexInputRate; + +typedef enum VkPrimitiveTopology { + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0, + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1, + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5, + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6, + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9, + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10, + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF +} VkPrimitiveTopology; + +typedef enum VkPolygonMode { + VK_POLYGON_MODE_FILL = 0, + VK_POLYGON_MODE_LINE = 1, + VK_POLYGON_MODE_POINT = 2, + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000, + VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF +} VkPolygonMode; + +typedef enum VkStencilOp { + VK_STENCIL_OP_KEEP = 0, + VK_STENCIL_OP_ZERO = 1, + VK_STENCIL_OP_REPLACE = 2, + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3, + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4, + VK_STENCIL_OP_INVERT = 5, + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6, + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7, + VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF +} VkStencilOp; + +typedef enum VkLogicOp { + VK_LOGIC_OP_CLEAR = 0, + VK_LOGIC_OP_AND = 1, + VK_LOGIC_OP_AND_REVERSE = 2, + VK_LOGIC_OP_COPY = 3, + VK_LOGIC_OP_AND_INVERTED = 4, + VK_LOGIC_OP_NO_OP = 5, + VK_LOGIC_OP_XOR = 6, + VK_LOGIC_OP_OR = 7, + VK_LOGIC_OP_NOR = 8, + VK_LOGIC_OP_EQUIVALENT = 9, + VK_LOGIC_OP_INVERT = 10, + VK_LOGIC_OP_OR_REVERSE = 11, + VK_LOGIC_OP_COPY_INVERTED = 12, + VK_LOGIC_OP_OR_INVERTED = 13, + VK_LOGIC_OP_NAND = 14, + VK_LOGIC_OP_SET = 15, + VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF +} VkLogicOp; + +typedef enum VkBorderColor { + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0, + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1, + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2, + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3, + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4, + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5, + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003, + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004, + VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF +} VkBorderColor; + typedef enum VkFilter { VK_FILTER_NEAREST = 0, VK_FILTER_LINEAR = 1, VK_FILTER_CUBIC_IMG = 1000015000, VK_FILTER_CUBIC_EXT = VK_FILTER_CUBIC_IMG, - VK_FILTER_BEGIN_RANGE = VK_FILTER_NEAREST, - VK_FILTER_END_RANGE = VK_FILTER_LINEAR, - VK_FILTER_RANGE_SIZE = (VK_FILTER_LINEAR - VK_FILTER_NEAREST + 1), VK_FILTER_MAX_ENUM = 0x7FFFFFFF } VkFilter; -typedef enum VkSamplerMipmapMode { - VK_SAMPLER_MIPMAP_MODE_NEAREST = 0, - VK_SAMPLER_MIPMAP_MODE_LINEAR = 1, - VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE = VK_SAMPLER_MIPMAP_MODE_NEAREST, - VK_SAMPLER_MIPMAP_MODE_END_RANGE = VK_SAMPLER_MIPMAP_MODE_LINEAR, - VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE = (VK_SAMPLER_MIPMAP_MODE_LINEAR - VK_SAMPLER_MIPMAP_MODE_NEAREST + 1), - VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF -} VkSamplerMipmapMode; - typedef enum VkSamplerAddressMode { VK_SAMPLER_ADDRESS_MODE_REPEAT = 0, VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1, @@ -1243,24 +1861,14 @@ typedef enum VkSamplerAddressMode { VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, - VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_REPEAT, - VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, - VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE = (VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1), VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF } VkSamplerAddressMode; -typedef enum VkBorderColor { - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0, - VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1, - VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2, - VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3, - VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4, - VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5, - VK_BORDER_COLOR_BEGIN_RANGE = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK, - VK_BORDER_COLOR_END_RANGE = VK_BORDER_COLOR_INT_OPAQUE_WHITE, - VK_BORDER_COLOR_RANGE_SIZE = (VK_BORDER_COLOR_INT_OPAQUE_WHITE - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK + 1), - VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF -} VkBorderColor; +typedef enum VkSamplerMipmapMode { + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0, + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1, + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerMipmapMode; typedef enum VkDescriptorType { VK_DESCRIPTOR_TYPE_SAMPLER = 0, @@ -1274,11 +1882,11 @@ typedef enum VkDescriptorType { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9, VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10, - VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000, + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK = 1000138000, + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000, VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, - VK_DESCRIPTOR_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_TYPE_SAMPLER, - VK_DESCRIPTOR_TYPE_END_RANGE = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, - VK_DESCRIPTOR_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT - VK_DESCRIPTOR_TYPE_SAMPLER + 1), + VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000, + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK, VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF } VkDescriptorType; @@ -1286,118 +1894,107 @@ typedef enum VkAttachmentLoadOp { VK_ATTACHMENT_LOAD_OP_LOAD = 0, VK_ATTACHMENT_LOAD_OP_CLEAR = 1, VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2, - VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE = VK_ATTACHMENT_LOAD_OP_LOAD, - VK_ATTACHMENT_LOAD_OP_END_RANGE = VK_ATTACHMENT_LOAD_OP_DONT_CARE, - VK_ATTACHMENT_LOAD_OP_RANGE_SIZE = (VK_ATTACHMENT_LOAD_OP_DONT_CARE - VK_ATTACHMENT_LOAD_OP_LOAD + 1), + VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000, VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF } VkAttachmentLoadOp; typedef enum VkAttachmentStoreOp { VK_ATTACHMENT_STORE_OP_STORE = 0, VK_ATTACHMENT_STORE_OP_DONT_CARE = 1, - VK_ATTACHMENT_STORE_OP_BEGIN_RANGE = VK_ATTACHMENT_STORE_OP_STORE, - VK_ATTACHMENT_STORE_OP_END_RANGE = VK_ATTACHMENT_STORE_OP_DONT_CARE, - VK_ATTACHMENT_STORE_OP_RANGE_SIZE = (VK_ATTACHMENT_STORE_OP_DONT_CARE - VK_ATTACHMENT_STORE_OP_STORE + 1), + VK_ATTACHMENT_STORE_OP_NONE = 1000301000, + VK_ATTACHMENT_STORE_OP_NONE_KHR = VK_ATTACHMENT_STORE_OP_NONE, + VK_ATTACHMENT_STORE_OP_NONE_QCOM = VK_ATTACHMENT_STORE_OP_NONE, + VK_ATTACHMENT_STORE_OP_NONE_EXT = VK_ATTACHMENT_STORE_OP_NONE, VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF } VkAttachmentStoreOp; typedef enum VkPipelineBindPoint { VK_PIPELINE_BIND_POINT_GRAPHICS = 0, VK_PIPELINE_BIND_POINT_COMPUTE = 1, - VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000, - VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS, - VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE, - VK_PIPELINE_BIND_POINT_RANGE_SIZE = (VK_PIPELINE_BIND_POINT_COMPUTE - VK_PIPELINE_BIND_POINT_GRAPHICS + 1), + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000, + VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003, + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF } VkPipelineBindPoint; typedef enum VkCommandBufferLevel { VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0, VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1, - VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE = VK_COMMAND_BUFFER_LEVEL_PRIMARY, - VK_COMMAND_BUFFER_LEVEL_END_RANGE = VK_COMMAND_BUFFER_LEVEL_SECONDARY, - VK_COMMAND_BUFFER_LEVEL_RANGE_SIZE = (VK_COMMAND_BUFFER_LEVEL_SECONDARY - VK_COMMAND_BUFFER_LEVEL_PRIMARY + 1), VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF } VkCommandBufferLevel; typedef enum VkIndexType { VK_INDEX_TYPE_UINT16 = 0, VK_INDEX_TYPE_UINT32 = 1, - VK_INDEX_TYPE_NONE_NV = 1000165000, + VK_INDEX_TYPE_NONE_KHR = 1000165000, VK_INDEX_TYPE_UINT8_EXT = 1000265000, - VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT16, - VK_INDEX_TYPE_END_RANGE = VK_INDEX_TYPE_UINT32, - VK_INDEX_TYPE_RANGE_SIZE = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT16 + 1), + VK_INDEX_TYPE_NONE_NV = VK_INDEX_TYPE_NONE_KHR, VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF } VkIndexType; typedef enum VkSubpassContents { VK_SUBPASS_CONTENTS_INLINE = 0, VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1, - VK_SUBPASS_CONTENTS_BEGIN_RANGE = VK_SUBPASS_CONTENTS_INLINE, - VK_SUBPASS_CONTENTS_END_RANGE = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS, - VK_SUBPASS_CONTENTS_RANGE_SIZE = (VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS - VK_SUBPASS_CONTENTS_INLINE + 1), VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF } VkSubpassContents; -typedef enum VkObjectType { - VK_OBJECT_TYPE_UNKNOWN = 0, - VK_OBJECT_TYPE_INSTANCE = 1, - VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2, - VK_OBJECT_TYPE_DEVICE = 3, - VK_OBJECT_TYPE_QUEUE = 4, - VK_OBJECT_TYPE_SEMAPHORE = 5, - VK_OBJECT_TYPE_COMMAND_BUFFER = 6, - VK_OBJECT_TYPE_FENCE = 7, - VK_OBJECT_TYPE_DEVICE_MEMORY = 8, - VK_OBJECT_TYPE_BUFFER = 9, - VK_OBJECT_TYPE_IMAGE = 10, - VK_OBJECT_TYPE_EVENT = 11, - VK_OBJECT_TYPE_QUERY_POOL = 12, - VK_OBJECT_TYPE_BUFFER_VIEW = 13, - VK_OBJECT_TYPE_IMAGE_VIEW = 14, - VK_OBJECT_TYPE_SHADER_MODULE = 15, - VK_OBJECT_TYPE_PIPELINE_CACHE = 16, - VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17, - VK_OBJECT_TYPE_RENDER_PASS = 18, - VK_OBJECT_TYPE_PIPELINE = 19, - VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20, - VK_OBJECT_TYPE_SAMPLER = 21, - VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22, - VK_OBJECT_TYPE_DESCRIPTOR_SET = 23, - VK_OBJECT_TYPE_FRAMEBUFFER = 24, - VK_OBJECT_TYPE_COMMAND_POOL = 25, - VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000, - VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000, - VK_OBJECT_TYPE_SURFACE_KHR = 1000000000, - VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000, - VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000, - VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001, - VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000, - VK_OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000, - VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001, - VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000, - VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000, - VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, - VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000, - VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, - VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, - VK_OBJECT_TYPE_BEGIN_RANGE = VK_OBJECT_TYPE_UNKNOWN, - VK_OBJECT_TYPE_END_RANGE = VK_OBJECT_TYPE_COMMAND_POOL, - VK_OBJECT_TYPE_RANGE_SIZE = (VK_OBJECT_TYPE_COMMAND_POOL - VK_OBJECT_TYPE_UNKNOWN + 1), - VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkObjectType; +typedef enum VkAccessFlagBits { + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001, + VK_ACCESS_INDEX_READ_BIT = 0x00000002, + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004, + VK_ACCESS_UNIFORM_READ_BIT = 0x00000008, + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010, + VK_ACCESS_SHADER_READ_BIT = 0x00000020, + VK_ACCESS_SHADER_WRITE_BIT = 0x00000040, + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080, + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100, + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200, + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400, + VK_ACCESS_TRANSFER_READ_BIT = 0x00000800, + VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000, + VK_ACCESS_HOST_READ_BIT = 0x00002000, + VK_ACCESS_HOST_WRITE_BIT = 0x00004000, + VK_ACCESS_MEMORY_READ_BIT = 0x00008000, + VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000, + VK_ACCESS_NONE = 0, + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000, + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000, + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000, + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000, + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000, + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000, + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000, + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000, + VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000, + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000, + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000, + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR, + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, + VK_ACCESS_NONE_KHR = VK_ACCESS_NONE, + VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkAccessFlagBits; +typedef VkFlags VkAccessFlags; -typedef enum VkVendorId { - VK_VENDOR_ID_VIV = 0x10001, - VK_VENDOR_ID_VSI = 0x10002, - VK_VENDOR_ID_KAZAN = 0x10003, - VK_VENDOR_ID_BEGIN_RANGE = VK_VENDOR_ID_VIV, - VK_VENDOR_ID_END_RANGE = VK_VENDOR_ID_KAZAN, - VK_VENDOR_ID_RANGE_SIZE = (VK_VENDOR_ID_KAZAN - VK_VENDOR_ID_VIV + 1), - VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF -} VkVendorId; -typedef VkFlags VkInstanceCreateFlags; +typedef enum VkImageAspectFlagBits { + VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001, + VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002, + VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004, + VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008, + VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010, + VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020, + VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040, + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0x00000080, + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0x00000100, + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0x00000200, + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0x00000400, + VK_IMAGE_ASPECT_NONE_KHR = 0, + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT, + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT, + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT, + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageAspectFlagBits; +typedef VkFlags VkImageAspectFlags; typedef enum VkFormatFeatureFlagBits { VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, @@ -1422,11 +2019,26 @@ typedef enum VkFormatFeatureFlagBits { VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000, VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000, VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000, VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000, +#endif + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000, VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000, + VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000, +#endif VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT, VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT, VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT, VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT, VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT, @@ -1439,21 +2051,6 @@ typedef enum VkFormatFeatureFlagBits { } VkFormatFeatureFlagBits; typedef VkFlags VkFormatFeatureFlags; -typedef enum VkImageUsageFlagBits { - VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, - VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, - VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, - VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, - VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, - VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, - VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, - VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, - VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 0x00000100, - VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x00000200, - VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkImageUsageFlagBits; -typedef VkFlags VkImageUsageFlags; - typedef enum VkImageCreateFlagBits { VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, @@ -1470,6 +2067,7 @@ typedef enum VkImageCreateFlagBits { VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 0x00002000, VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000, VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 0x00004000, + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 0x00008000, VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT, VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT, VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, @@ -1492,15 +2090,49 @@ typedef enum VkSampleCountFlagBits { } VkSampleCountFlagBits; typedef VkFlags VkSampleCountFlags; -typedef enum VkQueueFlagBits { - VK_QUEUE_GRAPHICS_BIT = 0x00000001, - VK_QUEUE_COMPUTE_BIT = 0x00000002, - VK_QUEUE_TRANSFER_BIT = 0x00000004, - VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, - VK_QUEUE_PROTECTED_BIT = 0x00000010, - VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkQueueFlagBits; -typedef VkFlags VkQueueFlags; +typedef enum VkImageUsageFlagBits { + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, + VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, + VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00000400, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00000800, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR = 0x00001000, +#endif + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x00000200, + VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00000100, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00002000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00004000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR = 0x00008000, +#endif + VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 0x00040000, + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageUsageFlagBits; +typedef VkFlags VkImageUsageFlags; +typedef VkFlags VkInstanceCreateFlags; + +typedef enum VkMemoryHeapFlagBits { + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001, + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002, + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT, + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkMemoryHeapFlagBits; +typedef VkFlags VkMemoryHeapFlags; typedef enum VkMemoryPropertyFlagBits { VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001, @@ -1511,17 +2143,26 @@ typedef enum VkMemoryPropertyFlagBits { VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020, VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 0x00000040, VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 0x00000080, + VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV = 0x00000100, VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkMemoryPropertyFlagBits; typedef VkFlags VkMemoryPropertyFlags; -typedef enum VkMemoryHeapFlagBits { - VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001, - VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002, - VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT, - VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkMemoryHeapFlagBits; -typedef VkFlags VkMemoryHeapFlags; +typedef enum VkQueueFlagBits { + VK_QUEUE_GRAPHICS_BIT = 0x00000001, + VK_QUEUE_COMPUTE_BIT = 0x00000002, + VK_QUEUE_TRANSFER_BIT = 0x00000004, + VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, + VK_QUEUE_PROTECTED_BIT = 0x00000010, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_QUEUE_VIDEO_DECODE_BIT_KHR = 0x00000020, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_QUEUE_VIDEO_ENCODE_BIT_KHR = 0x00000040, +#endif + VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkQueueFlagBits; +typedef VkFlags VkQueueFlags; typedef VkFlags VkDeviceCreateFlags; typedef enum VkDeviceQueueCreateFlagBits { @@ -1548,38 +2189,30 @@ typedef enum VkPipelineStageFlagBits { VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, + VK_PIPELINE_STAGE_NONE = 0, VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000, VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000, - VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000, - VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 0x00400000, - VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 0x00200000, - VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000, + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000, + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 0x00200000, VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 0x00080000, VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 0x00100000, VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000, + VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000, + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 0x00020000, + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR, + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, + VK_PIPELINE_STAGE_NONE_KHR = VK_PIPELINE_STAGE_NONE, VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkPipelineStageFlagBits; typedef VkFlags VkPipelineStageFlags; typedef VkFlags VkMemoryMapFlags; -typedef enum VkImageAspectFlagBits { - VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001, - VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002, - VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004, - VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008, - VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010, - VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020, - VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040, - VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0x00000080, - VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0x00000100, - VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0x00000200, - VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0x00000400, - VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT, - VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT, - VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT, - VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkImageAspectFlagBits; -typedef VkFlags VkImageAspectFlags; +typedef enum VkSparseMemoryBindFlagBits { + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001, + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSparseMemoryBindFlagBits; +typedef VkFlags VkSparseMemoryBindFlags; typedef enum VkSparseImageFormatFlagBits { VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, @@ -1589,20 +2222,19 @@ typedef enum VkSparseImageFormatFlagBits { } VkSparseImageFormatFlagBits; typedef VkFlags VkSparseImageFormatFlags; -typedef enum VkSparseMemoryBindFlagBits { - VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001, - VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkSparseMemoryBindFlagBits; -typedef VkFlags VkSparseMemoryBindFlags; - typedef enum VkFenceCreateFlagBits { VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001, VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkFenceCreateFlagBits; typedef VkFlags VkFenceCreateFlags; typedef VkFlags VkSemaphoreCreateFlags; + +typedef enum VkEventCreateFlagBits { + VK_EVENT_CREATE_DEVICE_ONLY_BIT = 0x00000001, + VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR = VK_EVENT_CREATE_DEVICE_ONLY_BIT, + VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkEventCreateFlagBits; typedef VkFlags VkEventCreateFlags; -typedef VkFlags VkQueryPoolCreateFlags; typedef enum VkQueryPipelineStatisticFlagBits { VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, @@ -1619,12 +2251,16 @@ typedef enum VkQueryPipelineStatisticFlagBits { VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkQueryPipelineStatisticFlagBits; typedef VkFlags VkQueryPipelineStatisticFlags; +typedef VkFlags VkQueryPoolCreateFlags; typedef enum VkQueryResultFlagBits { VK_QUERY_RESULT_64_BIT = 0x00000001, VK_QUERY_RESULT_WAIT_BIT = 0x00000002, VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_QUERY_RESULT_WITH_STATUS_BIT_KHR = 0x00000010, +#endif VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkQueryResultFlagBits; typedef VkFlags VkQueryResultFlags; @@ -1634,7 +2270,9 @@ typedef enum VkBufferCreateFlagBits { VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008, - VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 0x00000010, + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000010, + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkBufferCreateFlagBits; typedef VkFlags VkBufferCreateFlags; @@ -1649,11 +2287,28 @@ typedef enum VkBufferUsageFlagBits { VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00002000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00004000, +#endif VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800, VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000, VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200, - VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 0x00000400, - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 0x00020000, + VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 0x00080000, + VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 0x00100000, + VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR = 0x00000400, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00008000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00010000, +#endif + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR, + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkBufferUsageFlagBits; typedef VkFlags VkBufferUsageFlags; @@ -1661,34 +2316,67 @@ typedef VkFlags VkBufferViewCreateFlags; typedef enum VkImageViewCreateFlagBits { VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 0x00000001, + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 0x00000002, VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkImageViewCreateFlagBits; typedef VkFlags VkImageViewCreateFlags; - -typedef enum VkShaderModuleCreateFlagBits { - VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkShaderModuleCreateFlagBits; typedef VkFlags VkShaderModuleCreateFlags; + +typedef enum VkPipelineCacheCreateFlagBits { + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 0x00000001, + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCacheCreateFlagBits; typedef VkFlags VkPipelineCacheCreateFlags; +typedef enum VkColorComponentFlagBits { + VK_COLOR_COMPONENT_R_BIT = 0x00000001, + VK_COLOR_COMPONENT_G_BIT = 0x00000002, + VK_COLOR_COMPONENT_B_BIT = 0x00000004, + VK_COLOR_COMPONENT_A_BIT = 0x00000008, + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkColorComponentFlagBits; +typedef VkFlags VkColorComponentFlags; + typedef enum VkPipelineCreateFlagBits { VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001, VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002, VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004, VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008, - VK_PIPELINE_CREATE_DISPATCH_BASE = 0x00000010, + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 0x00000010, + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 0x00000100, + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 0x00000200, + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00200000, + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00400000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 0x00004000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 0x00008000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 0x00010000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 0x00020000, + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 0x00001000, + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 0x00002000, + VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 0x00080000, VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 0x00000020, VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 0x00000040, VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0x00000080, + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 0x00040000, + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 0x00000800, + VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV = 0x00100000, + VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT, + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT, VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT, VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE, + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT, + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT, VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkPipelineCreateFlagBits; typedef VkFlags VkPipelineCreateFlags; typedef enum VkPipelineShaderStageCreateFlagBits { - VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 0x00000001, - VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 0x00000002, + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT = 0x00000001, + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT = 0x00000002, + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT, + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT, VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkPipelineShaderStageCreateFlagBits; typedef VkFlags VkPipelineShaderStageCreateFlags; @@ -1702,21 +2390,23 @@ typedef enum VkShaderStageFlagBits { VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020, VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F, VK_SHADER_STAGE_ALL = 0x7FFFFFFF, - VK_SHADER_STAGE_RAYGEN_BIT_NV = 0x00000100, - VK_SHADER_STAGE_ANY_HIT_BIT_NV = 0x00000200, - VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 0x00000400, - VK_SHADER_STAGE_MISS_BIT_NV = 0x00000800, - VK_SHADER_STAGE_INTERSECTION_BIT_NV = 0x00001000, - VK_SHADER_STAGE_CALLABLE_BIT_NV = 0x00002000, + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 0x00000100, + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 0x00000200, + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 0x00000400, + VK_SHADER_STAGE_MISS_BIT_KHR = 0x00000800, + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 0x00001000, + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 0x00002000, VK_SHADER_STAGE_TASK_BIT_NV = 0x00000040, VK_SHADER_STAGE_MESH_BIT_NV = 0x00000080, + VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = 0x00004000, + VK_SHADER_STAGE_RAYGEN_BIT_NV = VK_SHADER_STAGE_RAYGEN_BIT_KHR, + VK_SHADER_STAGE_ANY_HIT_BIT_NV = VK_SHADER_STAGE_ANY_HIT_BIT_KHR, + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, + VK_SHADER_STAGE_MISS_BIT_NV = VK_SHADER_STAGE_MISS_BIT_KHR, + VK_SHADER_STAGE_INTERSECTION_BIT_NV = VK_SHADER_STAGE_INTERSECTION_BIT_KHR, + VK_SHADER_STAGE_CALLABLE_BIT_NV = VK_SHADER_STAGE_CALLABLE_BIT_KHR, VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkShaderStageFlagBits; -typedef VkFlags VkPipelineVertexInputStateCreateFlags; -typedef VkFlags VkPipelineInputAssemblyStateCreateFlags; -typedef VkFlags VkPipelineTessellationStateCreateFlags; -typedef VkFlags VkPipelineViewportStateCreateFlags; -typedef VkFlags VkPipelineRasterizationStateCreateFlags; typedef enum VkCullModeFlagBits { VK_CULL_MODE_NONE = 0, @@ -1726,18 +2416,25 @@ typedef enum VkCullModeFlagBits { VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkCullModeFlagBits; typedef VkFlags VkCullModeFlags; +typedef VkFlags VkPipelineVertexInputStateCreateFlags; +typedef VkFlags VkPipelineInputAssemblyStateCreateFlags; +typedef VkFlags VkPipelineTessellationStateCreateFlags; +typedef VkFlags VkPipelineViewportStateCreateFlags; +typedef VkFlags VkPipelineRasterizationStateCreateFlags; typedef VkFlags VkPipelineMultisampleStateCreateFlags; + +typedef enum VkPipelineDepthStencilStateCreateFlagBits { + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = 0x00000001, + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = 0x00000002, + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineDepthStencilStateCreateFlagBits; typedef VkFlags VkPipelineDepthStencilStateCreateFlags; -typedef VkFlags VkPipelineColorBlendStateCreateFlags; -typedef enum VkColorComponentFlagBits { - VK_COLOR_COMPONENT_R_BIT = 0x00000001, - VK_COLOR_COMPONENT_G_BIT = 0x00000002, - VK_COLOR_COMPONENT_B_BIT = 0x00000004, - VK_COLOR_COMPONENT_A_BIT = 0x00000008, - VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkColorComponentFlagBits; -typedef VkFlags VkColorComponentFlags; +typedef enum VkPipelineColorBlendStateCreateFlagBits { + VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM = 0x00000001, + VK_PIPELINE_COLOR_BLEND_STATE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineColorBlendStateCreateFlagBits; +typedef VkFlags VkPipelineColorBlendStateCreateFlags; typedef VkFlags VkPipelineDynamicStateCreateFlags; typedef VkFlags VkPipelineLayoutCreateFlags; typedef VkFlags VkShaderStageFlags; @@ -1749,31 +2446,24 @@ typedef enum VkSamplerCreateFlagBits { } VkSamplerCreateFlagBits; typedef VkFlags VkSamplerCreateFlags; -typedef enum VkDescriptorSetLayoutCreateFlagBits { - VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 0x00000002, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkDescriptorSetLayoutCreateFlagBits; -typedef VkFlags VkDescriptorSetLayoutCreateFlags; - typedef enum VkDescriptorPoolCreateFlagBits { VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001, - VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 0x00000002, + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002, + VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 0x00000004, + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkDescriptorPoolCreateFlagBits; typedef VkFlags VkDescriptorPoolCreateFlags; typedef VkFlags VkDescriptorPoolResetFlags; -typedef enum VkFramebufferCreateFlagBits { - VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 0x00000001, - VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkFramebufferCreateFlagBits; -typedef VkFlags VkFramebufferCreateFlags; - -typedef enum VkRenderPassCreateFlagBits { - VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkRenderPassCreateFlagBits; -typedef VkFlags VkRenderPassCreateFlags; +typedef enum VkDescriptorSetLayoutCreateFlagBits { + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE = 0x00000004, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorSetLayoutCreateFlagBits; +typedef VkFlags VkDescriptorSetLayoutCreateFlags; typedef enum VkAttachmentDescriptionFlagBits { VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001, @@ -1781,46 +2471,6 @@ typedef enum VkAttachmentDescriptionFlagBits { } VkAttachmentDescriptionFlagBits; typedef VkFlags VkAttachmentDescriptionFlags; -typedef enum VkSubpassDescriptionFlagBits { - VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001, - VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002, - VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkSubpassDescriptionFlagBits; -typedef VkFlags VkSubpassDescriptionFlags; - -typedef enum VkAccessFlagBits { - VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001, - VK_ACCESS_INDEX_READ_BIT = 0x00000002, - VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004, - VK_ACCESS_UNIFORM_READ_BIT = 0x00000008, - VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010, - VK_ACCESS_SHADER_READ_BIT = 0x00000020, - VK_ACCESS_SHADER_WRITE_BIT = 0x00000040, - VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080, - VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100, - VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200, - VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400, - VK_ACCESS_TRANSFER_READ_BIT = 0x00000800, - VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000, - VK_ACCESS_HOST_READ_BIT = 0x00002000, - VK_ACCESS_HOST_WRITE_BIT = 0x00004000, - VK_ACCESS_MEMORY_READ_BIT = 0x00008000, - VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000, - VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000, - VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000, - VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000, - VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000, - VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000, - VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000, - VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000, - VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000, - VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 0x00200000, - VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000, - VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000, - VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkAccessFlagBits; -typedef VkFlags VkAccessFlags; - typedef enum VkDependencyFlagBits { VK_DEPENDENCY_BY_REGION_BIT = 0x00000001, VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004, @@ -1831,6 +2481,31 @@ typedef enum VkDependencyFlagBits { } VkDependencyFlagBits; typedef VkFlags VkDependencyFlags; +typedef enum VkFramebufferCreateFlagBits { + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001, + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkFramebufferCreateFlagBits; +typedef VkFlags VkFramebufferCreateFlags; + +typedef enum VkRenderPassCreateFlagBits { + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 0x00000002, + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkRenderPassCreateFlagBits; +typedef VkFlags VkRenderPassCreateFlags; + +typedef enum VkSubpassDescriptionFlagBits { + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001, + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002, + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 0x00000004, + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 0x00000008, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM = 0x00000010, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = 0x00000020, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = 0x00000040, + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSubpassDescriptionFlagBits; +typedef VkFlags VkSubpassDescriptionFlags; + typedef enum VkCommandPoolCreateFlagBits { VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, @@ -1873,36 +2548,114 @@ typedef enum VkStencilFaceFlagBits { VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkStencilFaceFlagBits; typedef VkFlags VkStencilFaceFlags; -typedef struct VkApplicationInfo { - VkStructureType sType; - const void* pNext; - const char* pApplicationName; - uint32_t applicationVersion; - const char* pEngineName; - uint32_t engineVersion; - uint32_t apiVersion; -} VkApplicationInfo; +typedef struct VkExtent2D { + uint32_t width; + uint32_t height; +} VkExtent2D; -typedef struct VkInstanceCreateInfo { - VkStructureType sType; - const void* pNext; - VkInstanceCreateFlags flags; - const VkApplicationInfo* pApplicationInfo; - uint32_t enabledLayerCount; - const char* const* ppEnabledLayerNames; - uint32_t enabledExtensionCount; - const char* const* ppEnabledExtensionNames; -} VkInstanceCreateInfo; +typedef struct VkExtent3D { + uint32_t width; + uint32_t height; + uint32_t depth; +} VkExtent3D; -typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)( - void* pUserData, - size_t size, - size_t alignment, - VkSystemAllocationScope allocationScope); +typedef struct VkOffset2D { + int32_t x; + int32_t y; +} VkOffset2D; -typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)( +typedef struct VkOffset3D { + int32_t x; + int32_t y; + int32_t z; +} VkOffset3D; + +typedef struct VkRect2D { + VkOffset2D offset; + VkExtent2D extent; +} VkRect2D; + +typedef struct VkBaseInStructure { + VkStructureType sType; + const struct VkBaseInStructure* pNext; +} VkBaseInStructure; + +typedef struct VkBaseOutStructure { + VkStructureType sType; + struct VkBaseOutStructure* pNext; +} VkBaseOutStructure; + +typedef struct VkBufferMemoryBarrier { + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; +} VkBufferMemoryBarrier; + +typedef struct VkDispatchIndirectCommand { + uint32_t x; + uint32_t y; + uint32_t z; +} VkDispatchIndirectCommand; + +typedef struct VkDrawIndexedIndirectCommand { + uint32_t indexCount; + uint32_t instanceCount; + uint32_t firstIndex; + int32_t vertexOffset; + uint32_t firstInstance; +} VkDrawIndexedIndirectCommand; + +typedef struct VkDrawIndirectCommand { + uint32_t vertexCount; + uint32_t instanceCount; + uint32_t firstVertex; + uint32_t firstInstance; +} VkDrawIndirectCommand; + +typedef struct VkImageSubresourceRange { + VkImageAspectFlags aspectMask; + uint32_t baseMipLevel; + uint32_t levelCount; + uint32_t baseArrayLayer; + uint32_t layerCount; +} VkImageSubresourceRange; + +typedef struct VkImageMemoryBarrier { + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + VkImageLayout oldLayout; + VkImageLayout newLayout; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkImage image; + VkImageSubresourceRange subresourceRange; +} VkImageMemoryBarrier; + +typedef struct VkMemoryBarrier { + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; +} VkMemoryBarrier; + +typedef struct VkPipelineCacheHeaderVersionOne { + uint32_t headerSize; + VkPipelineCacheHeaderVersion headerVersion; + uint32_t vendorID; + uint32_t deviceID; + uint8_t pipelineCacheUUID[VK_UUID_SIZE]; +} VkPipelineCacheHeaderVersionOne; + +typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)( void* pUserData, - void* pOriginal, size_t size, size_t alignment, VkSystemAllocationScope allocationScope); @@ -1923,6 +2676,14 @@ typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)( VkInternalAllocationType allocationType, VkSystemAllocationScope allocationScope); +typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)( + void* pUserData, + void* pOriginal, + size_t size, + size_t alignment, + VkSystemAllocationScope allocationScope); + +typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void); typedef struct VkAllocationCallbacks { void* pUserData; PFN_vkAllocationFunction pfnAllocation; @@ -1932,6 +2693,51 @@ typedef struct VkAllocationCallbacks { PFN_vkInternalFreeNotification pfnInternalFree; } VkAllocationCallbacks; +typedef struct VkApplicationInfo { + VkStructureType sType; + const void* pNext; + const char* pApplicationName; + uint32_t applicationVersion; + const char* pEngineName; + uint32_t engineVersion; + uint32_t apiVersion; +} VkApplicationInfo; + +typedef struct VkFormatProperties { + VkFormatFeatureFlags linearTilingFeatures; + VkFormatFeatureFlags optimalTilingFeatures; + VkFormatFeatureFlags bufferFeatures; +} VkFormatProperties; + +typedef struct VkImageFormatProperties { + VkExtent3D maxExtent; + uint32_t maxMipLevels; + uint32_t maxArrayLayers; + VkSampleCountFlags sampleCounts; + VkDeviceSize maxResourceSize; +} VkImageFormatProperties; + +typedef struct VkInstanceCreateInfo { + VkStructureType sType; + const void* pNext; + VkInstanceCreateFlags flags; + const VkApplicationInfo* pApplicationInfo; + uint32_t enabledLayerCount; + const char* const* ppEnabledLayerNames; + uint32_t enabledExtensionCount; + const char* const* ppEnabledExtensionNames; +} VkInstanceCreateInfo; + +typedef struct VkMemoryHeap { + VkDeviceSize size; + VkMemoryHeapFlags flags; +} VkMemoryHeap; + +typedef struct VkMemoryType { + VkMemoryPropertyFlags propertyFlags; + uint32_t heapIndex; +} VkMemoryType; + typedef struct VkPhysicalDeviceFeatures { VkBool32 robustBufferAccess; VkBool32 fullDrawIndexUint32; @@ -1990,26 +2796,6 @@ typedef struct VkPhysicalDeviceFeatures { VkBool32 inheritedQueries; } VkPhysicalDeviceFeatures; -typedef struct VkFormatProperties { - VkFormatFeatureFlags linearTilingFeatures; - VkFormatFeatureFlags optimalTilingFeatures; - VkFormatFeatureFlags bufferFeatures; -} VkFormatProperties; - -typedef struct VkExtent3D { - uint32_t width; - uint32_t height; - uint32_t depth; -} VkExtent3D; - -typedef struct VkImageFormatProperties { - VkExtent3D maxExtent; - uint32_t maxMipLevels; - uint32_t maxArrayLayers; - VkSampleCountFlags sampleCounts; - VkDeviceSize maxResourceSize; -} VkImageFormatProperties; - typedef struct VkPhysicalDeviceLimits { uint32_t maxImageDimension1D; uint32_t maxImageDimension2D; @@ -2119,6 +2905,13 @@ typedef struct VkPhysicalDeviceLimits { VkDeviceSize nonCoherentAtomSize; } VkPhysicalDeviceLimits; +typedef struct VkPhysicalDeviceMemoryProperties { + uint32_t memoryTypeCount; + VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES]; + uint32_t memoryHeapCount; + VkMemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS]; +} VkPhysicalDeviceMemoryProperties; + typedef struct VkPhysicalDeviceSparseProperties { VkBool32 residencyStandard2DBlockShape; VkBool32 residencyStandard2DMultisampleBlockShape; @@ -2146,24 +2939,6 @@ typedef struct VkQueueFamilyProperties { VkExtent3D minImageTransferGranularity; } VkQueueFamilyProperties; -typedef struct VkMemoryType { - VkMemoryPropertyFlags propertyFlags; - uint32_t heapIndex; -} VkMemoryType; - -typedef struct VkMemoryHeap { - VkDeviceSize size; - VkMemoryHeapFlags flags; -} VkMemoryHeap; - -typedef struct VkPhysicalDeviceMemoryProperties { - uint32_t memoryTypeCount; - VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES]; - uint32_t memoryHeapCount; - VkMemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS]; -} VkPhysicalDeviceMemoryProperties; - -typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void); typedef struct VkDeviceQueueCreateInfo { VkStructureType sType; const void* pNext; @@ -2210,13 +2985,6 @@ typedef struct VkSubmitInfo { const VkSemaphore* pSignalSemaphores; } VkSubmitInfo; -typedef struct VkMemoryAllocateInfo { - VkStructureType sType; - const void* pNext; - VkDeviceSize allocationSize; - uint32_t memoryTypeIndex; -} VkMemoryAllocateInfo; - typedef struct VkMappedMemoryRange { VkStructureType sType; const void* pNext; @@ -2225,26 +2993,19 @@ typedef struct VkMappedMemoryRange { VkDeviceSize size; } VkMappedMemoryRange; +typedef struct VkMemoryAllocateInfo { + VkStructureType sType; + const void* pNext; + VkDeviceSize allocationSize; + uint32_t memoryTypeIndex; +} VkMemoryAllocateInfo; + typedef struct VkMemoryRequirements { VkDeviceSize size; VkDeviceSize alignment; uint32_t memoryTypeBits; } VkMemoryRequirements; -typedef struct VkSparseImageFormatProperties { - VkImageAspectFlags aspectMask; - VkExtent3D imageGranularity; - VkSparseImageFormatFlags flags; -} VkSparseImageFormatProperties; - -typedef struct VkSparseImageMemoryRequirements { - VkSparseImageFormatProperties formatProperties; - uint32_t imageMipTailFirstLod; - VkDeviceSize imageMipTailSize; - VkDeviceSize imageMipTailOffset; - VkDeviceSize imageMipTailStride; -} VkSparseImageMemoryRequirements; - typedef struct VkSparseMemoryBind { VkDeviceSize resourceOffset; VkDeviceSize size; @@ -2271,12 +3032,6 @@ typedef struct VkImageSubresource { uint32_t arrayLayer; } VkImageSubresource; -typedef struct VkOffset3D { - int32_t x; - int32_t y; - int32_t z; -} VkOffset3D; - typedef struct VkSparseImageMemoryBind { VkImageSubresource subresource; VkOffset3D offset; @@ -2307,6 +3062,20 @@ typedef struct VkBindSparseInfo { const VkSemaphore* pSignalSemaphores; } VkBindSparseInfo; +typedef struct VkSparseImageFormatProperties { + VkImageAspectFlags aspectMask; + VkExtent3D imageGranularity; + VkSparseImageFormatFlags flags; +} VkSparseImageFormatProperties; + +typedef struct VkSparseImageMemoryRequirements { + VkSparseImageFormatProperties formatProperties; + uint32_t imageMipTailFirstLod; + VkDeviceSize imageMipTailSize; + VkDeviceSize imageMipTailOffset; + VkDeviceSize imageMipTailStride; +} VkSparseImageMemoryRequirements; + typedef struct VkFenceCreateInfo { VkStructureType sType; const void* pNext; @@ -2388,14 +3157,6 @@ typedef struct VkComponentMapping { VkComponentSwizzle a; } VkComponentMapping; -typedef struct VkImageSubresourceRange { - VkImageAspectFlags aspectMask; - uint32_t baseMipLevel; - uint32_t levelCount; - uint32_t baseArrayLayer; - uint32_t layerCount; -} VkImageSubresourceRange; - typedef struct VkImageViewCreateInfo { VkStructureType sType; const void* pNext; @@ -2446,8 +3207,18 @@ typedef struct VkPipelineShaderStageCreateInfo { const VkSpecializationInfo* pSpecializationInfo; } VkPipelineShaderStageCreateInfo; -typedef struct VkVertexInputBindingDescription { - uint32_t binding; +typedef struct VkComputePipelineCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + VkPipelineShaderStageCreateInfo stage; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkComputePipelineCreateInfo; + +typedef struct VkVertexInputBindingDescription { + uint32_t binding; uint32_t stride; VkVertexInputRate inputRate; } VkVertexInputBindingDescription; @@ -2493,21 +3264,6 @@ typedef struct VkViewport { float maxDepth; } VkViewport; -typedef struct VkOffset2D { - int32_t x; - int32_t y; -} VkOffset2D; - -typedef struct VkExtent2D { - uint32_t width; - uint32_t height; -} VkExtent2D; - -typedef struct VkRect2D { - VkOffset2D offset; - VkExtent2D extent; -} VkRect2D; - typedef struct VkPipelineViewportStateCreateInfo { VkStructureType sType; const void* pNext; @@ -2623,16 +3379,6 @@ typedef struct VkGraphicsPipelineCreateInfo { int32_t basePipelineIndex; } VkGraphicsPipelineCreateInfo; -typedef struct VkComputePipelineCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineCreateFlags flags; - VkPipelineShaderStageCreateInfo stage; - VkPipelineLayout layout; - VkPipeline basePipelineHandle; - int32_t basePipelineIndex; -} VkComputePipelineCreateInfo; - typedef struct VkPushConstantRange { VkShaderStageFlags stageFlags; uint32_t offset; @@ -2670,21 +3416,29 @@ typedef struct VkSamplerCreateInfo { VkBool32 unnormalizedCoordinates; } VkSamplerCreateInfo; -typedef struct VkDescriptorSetLayoutBinding { - uint32_t binding; - VkDescriptorType descriptorType; - uint32_t descriptorCount; - VkShaderStageFlags stageFlags; - const VkSampler* pImmutableSamplers; -} VkDescriptorSetLayoutBinding; +typedef struct VkCopyDescriptorSet { + VkStructureType sType; + const void* pNext; + VkDescriptorSet srcSet; + uint32_t srcBinding; + uint32_t srcArrayElement; + VkDescriptorSet dstSet; + uint32_t dstBinding; + uint32_t dstArrayElement; + uint32_t descriptorCount; +} VkCopyDescriptorSet; -typedef struct VkDescriptorSetLayoutCreateInfo { - VkStructureType sType; - const void* pNext; - VkDescriptorSetLayoutCreateFlags flags; - uint32_t bindingCount; - const VkDescriptorSetLayoutBinding* pBindings; -} VkDescriptorSetLayoutCreateInfo; +typedef struct VkDescriptorBufferInfo { + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize range; +} VkDescriptorBufferInfo; + +typedef struct VkDescriptorImageInfo { + VkSampler sampler; + VkImageView imageView; + VkImageLayout imageLayout; +} VkDescriptorImageInfo; typedef struct VkDescriptorPoolSize { VkDescriptorType type; @@ -2708,17 +3462,21 @@ typedef struct VkDescriptorSetAllocateInfo { const VkDescriptorSetLayout* pSetLayouts; } VkDescriptorSetAllocateInfo; -typedef struct VkDescriptorImageInfo { - VkSampler sampler; - VkImageView imageView; - VkImageLayout imageLayout; -} VkDescriptorImageInfo; +typedef struct VkDescriptorSetLayoutBinding { + uint32_t binding; + VkDescriptorType descriptorType; + uint32_t descriptorCount; + VkShaderStageFlags stageFlags; + const VkSampler* pImmutableSamplers; +} VkDescriptorSetLayoutBinding; -typedef struct VkDescriptorBufferInfo { - VkBuffer buffer; - VkDeviceSize offset; - VkDeviceSize range; -} VkDescriptorBufferInfo; +typedef struct VkDescriptorSetLayoutCreateInfo { + VkStructureType sType; + const void* pNext; + VkDescriptorSetLayoutCreateFlags flags; + uint32_t bindingCount; + const VkDescriptorSetLayoutBinding* pBindings; +} VkDescriptorSetLayoutCreateInfo; typedef struct VkWriteDescriptorSet { VkStructureType sType; @@ -2733,30 +3491,6 @@ typedef struct VkWriteDescriptorSet { const VkBufferView* pTexelBufferView; } VkWriteDescriptorSet; -typedef struct VkCopyDescriptorSet { - VkStructureType sType; - const void* pNext; - VkDescriptorSet srcSet; - uint32_t srcBinding; - uint32_t srcArrayElement; - VkDescriptorSet dstSet; - uint32_t dstBinding; - uint32_t dstArrayElement; - uint32_t descriptorCount; -} VkCopyDescriptorSet; - -typedef struct VkFramebufferCreateInfo { - VkStructureType sType; - const void* pNext; - VkFramebufferCreateFlags flags; - VkRenderPass renderPass; - uint32_t attachmentCount; - const VkImageView* pAttachments; - uint32_t width; - uint32_t height; - uint32_t layers; -} VkFramebufferCreateInfo; - typedef struct VkAttachmentDescription { VkAttachmentDescriptionFlags flags; VkFormat format; @@ -2774,6 +3508,18 @@ typedef struct VkAttachmentReference { VkImageLayout layout; } VkAttachmentReference; +typedef struct VkFramebufferCreateInfo { + VkStructureType sType; + const void* pNext; + VkFramebufferCreateFlags flags; + VkRenderPass renderPass; + uint32_t attachmentCount; + const VkImageView* pAttachments; + uint32_t width; + uint32_t height; + uint32_t layers; +} VkFramebufferCreateInfo; + typedef struct VkSubpassDescription { VkSubpassDescriptionFlags flags; VkPipelineBindPoint pipelineBindPoint; @@ -2855,21 +3601,6 @@ typedef struct VkImageSubresourceLayers { uint32_t layerCount; } VkImageSubresourceLayers; -typedef struct VkImageCopy { - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffset; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffset; - VkExtent3D extent; -} VkImageCopy; - -typedef struct VkImageBlit { - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffsets[2]; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffsets[2]; -} VkImageBlit; - typedef struct VkBufferImageCopy { VkDeviceSize bufferOffset; uint32_t bufferRowLength; @@ -2907,6 +3638,21 @@ typedef struct VkClearRect { uint32_t layerCount; } VkClearRect; +typedef struct VkImageBlit { + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffsets[2]; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffsets[2]; +} VkImageBlit; + +typedef struct VkImageCopy { + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageCopy; + typedef struct VkImageResolve { VkImageSubresourceLayers srcSubresource; VkOffset3D srcOffset; @@ -2915,38 +3661,6 @@ typedef struct VkImageResolve { VkExtent3D extent; } VkImageResolve; -typedef struct VkMemoryBarrier { - VkStructureType sType; - const void* pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; -} VkMemoryBarrier; - -typedef struct VkBufferMemoryBarrier { - VkStructureType sType; - const void* pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - VkBuffer buffer; - VkDeviceSize offset; - VkDeviceSize size; -} VkBufferMemoryBarrier; - -typedef struct VkImageMemoryBarrier { - VkStructureType sType; - const void* pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - VkImageLayout oldLayout; - VkImageLayout newLayout; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - VkImage image; - VkImageSubresourceRange subresourceRange; -} VkImageMemoryBarrier; - typedef struct VkRenderPassBeginInfo { VkStructureType sType; const void* pNext; @@ -2957,37 +3671,6 @@ typedef struct VkRenderPassBeginInfo { const VkClearValue* pClearValues; } VkRenderPassBeginInfo; -typedef struct VkDispatchIndirectCommand { - uint32_t x; - uint32_t y; - uint32_t z; -} VkDispatchIndirectCommand; - -typedef struct VkDrawIndexedIndirectCommand { - uint32_t indexCount; - uint32_t instanceCount; - uint32_t firstIndex; - int32_t vertexOffset; - uint32_t firstInstance; -} VkDrawIndexedIndirectCommand; - -typedef struct VkDrawIndirectCommand { - uint32_t vertexCount; - uint32_t instanceCount; - uint32_t firstVertex; - uint32_t firstInstance; -} VkDrawIndirectCommand; - -typedef struct VkBaseOutStructure { - VkStructureType sType; - struct VkBaseOutStructure* pNext; -} VkBaseOutStructure; - -typedef struct VkBaseInStructure { - VkStructureType sType; - const struct VkBaseInStructure* pNext; -} VkBaseInStructure; - typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance); typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator); typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); @@ -3928,22 +4611,19 @@ VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands( #define VK_VERSION_1_1 1 // Vulkan 1.1 version number -#define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0 +#define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0)// Patch version should always be set to 0 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate) -#define VK_MAX_DEVICE_GROUP_SIZE 32 -#define VK_LUID_SIZE 8 -#define VK_QUEUE_FAMILY_EXTERNAL (~0U-1) +#define VK_MAX_DEVICE_GROUP_SIZE 32U +#define VK_LUID_SIZE 8U +#define VK_QUEUE_FAMILY_EXTERNAL (~1U) typedef enum VkPointClippingBehavior { VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0, VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1, VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES, VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY, - VK_POINT_CLIPPING_BEHAVIOR_BEGIN_RANGE = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES, - VK_POINT_CLIPPING_BEHAVIOR_END_RANGE = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY, - VK_POINT_CLIPPING_BEHAVIOR_RANGE_SIZE = (VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY - VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES + 1), VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF } VkPointClippingBehavior; @@ -3952,9 +4632,6 @@ typedef enum VkTessellationDomainOrigin { VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1, VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT, - VK_TESSELLATION_DOMAIN_ORIGIN_BEGIN_RANGE = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, - VK_TESSELLATION_DOMAIN_ORIGIN_END_RANGE = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT, - VK_TESSELLATION_DOMAIN_ORIGIN_RANGE_SIZE = (VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT - VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT + 1), VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF } VkTessellationDomainOrigin; @@ -3969,9 +4646,6 @@ typedef enum VkSamplerYcbcrModelConversion { VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_BEGIN_RANGE = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_END_RANGE = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_RANGE_SIZE = (VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 - VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY + 1), VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF } VkSamplerYcbcrModelConversion; @@ -3980,9 +4654,6 @@ typedef enum VkSamplerYcbcrRange { VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1, VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL, VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW, - VK_SAMPLER_YCBCR_RANGE_BEGIN_RANGE = VK_SAMPLER_YCBCR_RANGE_ITU_FULL, - VK_SAMPLER_YCBCR_RANGE_END_RANGE = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW, - VK_SAMPLER_YCBCR_RANGE_RANGE_SIZE = (VK_SAMPLER_YCBCR_RANGE_ITU_NARROW - VK_SAMPLER_YCBCR_RANGE_ITU_FULL + 1), VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF } VkSamplerYcbcrRange; @@ -3991,9 +4662,6 @@ typedef enum VkChromaLocation { VK_CHROMA_LOCATION_MIDPOINT = 1, VK_CHROMA_LOCATION_COSITED_EVEN_KHR = VK_CHROMA_LOCATION_COSITED_EVEN, VK_CHROMA_LOCATION_MIDPOINT_KHR = VK_CHROMA_LOCATION_MIDPOINT, - VK_CHROMA_LOCATION_BEGIN_RANGE = VK_CHROMA_LOCATION_COSITED_EVEN, - VK_CHROMA_LOCATION_END_RANGE = VK_CHROMA_LOCATION_MIDPOINT, - VK_CHROMA_LOCATION_RANGE_SIZE = (VK_CHROMA_LOCATION_MIDPOINT - VK_CHROMA_LOCATION_COSITED_EVEN + 1), VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF } VkChromaLocation; @@ -4001,9 +4669,6 @@ typedef enum VkDescriptorUpdateTemplateType { VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0, VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1, VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_END_RANGE = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET + 1), VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF } VkDescriptorUpdateTemplateType; @@ -4036,7 +4701,11 @@ typedef VkFlags VkPeerMemoryFeatureFlags; typedef enum VkMemoryAllocateFlagBits { VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0x00000002, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000004, VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkMemoryAllocateFlagBits; typedef VkFlags VkMemoryAllocateFlags; @@ -4055,6 +4724,8 @@ typedef enum VkExternalMemoryHandleTypeFlagBits { VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400, VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080, VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA = 0x00000800, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV = 0x00001000, VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT, VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, @@ -4119,6 +4790,8 @@ typedef enum VkExternalSemaphoreHandleTypeFlagBits { VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA = 0x00000080, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, @@ -4278,8 +4951,6 @@ typedef struct VkMemoryRequirements2 { VkMemoryRequirements memoryRequirements; } VkMemoryRequirements2; -typedef VkMemoryRequirements2 VkMemoryRequirements2KHR; - typedef struct VkSparseImageMemoryRequirements2 { VkStructureType sType; void* pNext; @@ -4803,21 +5474,1817 @@ VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport( #endif -#define VK_KHR_surface 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) -#define VK_KHR_SURFACE_SPEC_VERSION 25 -#define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface" +#define VK_VERSION_1_2 1 +// Vulkan 1.2 version number +#define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0)// Patch version should always be set to 0 + +#define VK_MAX_DRIVER_NAME_SIZE 256U +#define VK_MAX_DRIVER_INFO_SIZE 256U + +typedef enum VkDriverId { + VK_DRIVER_ID_AMD_PROPRIETARY = 1, + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2, + VK_DRIVER_ID_MESA_RADV = 3, + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4, + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5, + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6, + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7, + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8, + VK_DRIVER_ID_ARM_PROPRIETARY = 9, + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10, + VK_DRIVER_ID_GGP_PROPRIETARY = 11, + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12, + VK_DRIVER_ID_MESA_LLVMPIPE = 13, + VK_DRIVER_ID_MOLTENVK = 14, + VK_DRIVER_ID_COREAVI_PROPRIETARY = 15, + VK_DRIVER_ID_JUICE_PROPRIETARY = 16, + VK_DRIVER_ID_VERISILICON_PROPRIETARY = 17, + VK_DRIVER_ID_MESA_TURNIP = 18, + VK_DRIVER_ID_MESA_V3DV = 19, + VK_DRIVER_ID_MESA_PANVK = 20, + VK_DRIVER_ID_SAMSUNG_PROPRIETARY = 21, + VK_DRIVER_ID_MESA_VENUS = 22, + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY, + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE, + VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV, + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY, + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS, + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA, + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY, + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY, + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = VK_DRIVER_ID_ARM_PROPRIETARY, + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER, + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = VK_DRIVER_ID_GGP_PROPRIETARY, + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY, + VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF +} VkDriverId; + +typedef enum VkShaderFloatControlsIndependence { + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF +} VkShaderFloatControlsIndependence; + +typedef enum VkSamplerReductionMode { + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0, + VK_SAMPLER_REDUCTION_MODE_MIN = 1, + VK_SAMPLER_REDUCTION_MODE_MAX = 2, + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = VK_SAMPLER_REDUCTION_MODE_MIN, + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = VK_SAMPLER_REDUCTION_MODE_MAX, + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerReductionMode; + +typedef enum VkSemaphoreType { + VK_SEMAPHORE_TYPE_BINARY = 0, + VK_SEMAPHORE_TYPE_TIMELINE = 1, + VK_SEMAPHORE_TYPE_BINARY_KHR = VK_SEMAPHORE_TYPE_BINARY, + VK_SEMAPHORE_TYPE_TIMELINE_KHR = VK_SEMAPHORE_TYPE_TIMELINE, + VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkSemaphoreType; + +typedef enum VkResolveModeFlagBits { + VK_RESOLVE_MODE_NONE = 0, + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001, + VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002, + VK_RESOLVE_MODE_MIN_BIT = 0x00000004, + VK_RESOLVE_MODE_MAX_BIT = 0x00000008, + VK_RESOLVE_MODE_NONE_KHR = VK_RESOLVE_MODE_NONE, + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT, + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = VK_RESOLVE_MODE_AVERAGE_BIT, + VK_RESOLVE_MODE_MIN_BIT_KHR = VK_RESOLVE_MODE_MIN_BIT, + VK_RESOLVE_MODE_MAX_BIT_KHR = VK_RESOLVE_MODE_MAX_BIT, + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkResolveModeFlagBits; +typedef VkFlags VkResolveModeFlags; + +typedef enum VkDescriptorBindingFlagBits { + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001, + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0x00000002, + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0x00000004, + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0x00000008, + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT, + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT, + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT, + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorBindingFlagBits; +typedef VkFlags VkDescriptorBindingFlags; + +typedef enum VkSemaphoreWaitFlagBits { + VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001, + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = VK_SEMAPHORE_WAIT_ANY_BIT, + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSemaphoreWaitFlagBits; +typedef VkFlags VkSemaphoreWaitFlags; +typedef struct VkPhysicalDeviceVulkan11Features { + VkStructureType sType; + void* pNext; + VkBool32 storageBuffer16BitAccess; + VkBool32 uniformAndStorageBuffer16BitAccess; + VkBool32 storagePushConstant16; + VkBool32 storageInputOutput16; + VkBool32 multiview; + VkBool32 multiviewGeometryShader; + VkBool32 multiviewTessellationShader; + VkBool32 variablePointersStorageBuffer; + VkBool32 variablePointers; + VkBool32 protectedMemory; + VkBool32 samplerYcbcrConversion; + VkBool32 shaderDrawParameters; +} VkPhysicalDeviceVulkan11Features; -typedef enum VkColorSpaceKHR { - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0, - VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001, - VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002, - VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003, - VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004, - VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005, - VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006, - VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007, - VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008, +typedef struct VkPhysicalDeviceVulkan11Properties { + VkStructureType sType; + void* pNext; + uint8_t deviceUUID[VK_UUID_SIZE]; + uint8_t driverUUID[VK_UUID_SIZE]; + uint8_t deviceLUID[VK_LUID_SIZE]; + uint32_t deviceNodeMask; + VkBool32 deviceLUIDValid; + uint32_t subgroupSize; + VkShaderStageFlags subgroupSupportedStages; + VkSubgroupFeatureFlags subgroupSupportedOperations; + VkBool32 subgroupQuadOperationsInAllStages; + VkPointClippingBehavior pointClippingBehavior; + uint32_t maxMultiviewViewCount; + uint32_t maxMultiviewInstanceIndex; + VkBool32 protectedNoFault; + uint32_t maxPerSetDescriptors; + VkDeviceSize maxMemoryAllocationSize; +} VkPhysicalDeviceVulkan11Properties; + +typedef struct VkPhysicalDeviceVulkan12Features { + VkStructureType sType; + void* pNext; + VkBool32 samplerMirrorClampToEdge; + VkBool32 drawIndirectCount; + VkBool32 storageBuffer8BitAccess; + VkBool32 uniformAndStorageBuffer8BitAccess; + VkBool32 storagePushConstant8; + VkBool32 shaderBufferInt64Atomics; + VkBool32 shaderSharedInt64Atomics; + VkBool32 shaderFloat16; + VkBool32 shaderInt8; + VkBool32 descriptorIndexing; + VkBool32 shaderInputAttachmentArrayDynamicIndexing; + VkBool32 shaderUniformTexelBufferArrayDynamicIndexing; + VkBool32 shaderStorageTexelBufferArrayDynamicIndexing; + VkBool32 shaderUniformBufferArrayNonUniformIndexing; + VkBool32 shaderSampledImageArrayNonUniformIndexing; + VkBool32 shaderStorageBufferArrayNonUniformIndexing; + VkBool32 shaderStorageImageArrayNonUniformIndexing; + VkBool32 shaderInputAttachmentArrayNonUniformIndexing; + VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing; + VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing; + VkBool32 descriptorBindingUniformBufferUpdateAfterBind; + VkBool32 descriptorBindingSampledImageUpdateAfterBind; + VkBool32 descriptorBindingStorageImageUpdateAfterBind; + VkBool32 descriptorBindingStorageBufferUpdateAfterBind; + VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingUpdateUnusedWhilePending; + VkBool32 descriptorBindingPartiallyBound; + VkBool32 descriptorBindingVariableDescriptorCount; + VkBool32 runtimeDescriptorArray; + VkBool32 samplerFilterMinmax; + VkBool32 scalarBlockLayout; + VkBool32 imagelessFramebuffer; + VkBool32 uniformBufferStandardLayout; + VkBool32 shaderSubgroupExtendedTypes; + VkBool32 separateDepthStencilLayouts; + VkBool32 hostQueryReset; + VkBool32 timelineSemaphore; + VkBool32 bufferDeviceAddress; + VkBool32 bufferDeviceAddressCaptureReplay; + VkBool32 bufferDeviceAddressMultiDevice; + VkBool32 vulkanMemoryModel; + VkBool32 vulkanMemoryModelDeviceScope; + VkBool32 vulkanMemoryModelAvailabilityVisibilityChains; + VkBool32 shaderOutputViewportIndex; + VkBool32 shaderOutputLayer; + VkBool32 subgroupBroadcastDynamicId; +} VkPhysicalDeviceVulkan12Features; + +typedef struct VkConformanceVersion { + uint8_t major; + uint8_t minor; + uint8_t subminor; + uint8_t patch; +} VkConformanceVersion; + +typedef struct VkPhysicalDeviceVulkan12Properties { + VkStructureType sType; + void* pNext; + VkDriverId driverID; + char driverName[VK_MAX_DRIVER_NAME_SIZE]; + char driverInfo[VK_MAX_DRIVER_INFO_SIZE]; + VkConformanceVersion conformanceVersion; + VkShaderFloatControlsIndependence denormBehaviorIndependence; + VkShaderFloatControlsIndependence roundingModeIndependence; + VkBool32 shaderSignedZeroInfNanPreserveFloat16; + VkBool32 shaderSignedZeroInfNanPreserveFloat32; + VkBool32 shaderSignedZeroInfNanPreserveFloat64; + VkBool32 shaderDenormPreserveFloat16; + VkBool32 shaderDenormPreserveFloat32; + VkBool32 shaderDenormPreserveFloat64; + VkBool32 shaderDenormFlushToZeroFloat16; + VkBool32 shaderDenormFlushToZeroFloat32; + VkBool32 shaderDenormFlushToZeroFloat64; + VkBool32 shaderRoundingModeRTEFloat16; + VkBool32 shaderRoundingModeRTEFloat32; + VkBool32 shaderRoundingModeRTEFloat64; + VkBool32 shaderRoundingModeRTZFloat16; + VkBool32 shaderRoundingModeRTZFloat32; + VkBool32 shaderRoundingModeRTZFloat64; + uint32_t maxUpdateAfterBindDescriptorsInAllPools; + VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; + VkBool32 shaderSampledImageArrayNonUniformIndexingNative; + VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; + VkBool32 shaderStorageImageArrayNonUniformIndexingNative; + VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; + VkBool32 robustBufferAccessUpdateAfterBind; + VkBool32 quadDivergentImplicitLod; + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; + uint32_t maxPerStageUpdateAfterBindResources; + uint32_t maxDescriptorSetUpdateAfterBindSamplers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindSampledImages; + uint32_t maxDescriptorSetUpdateAfterBindStorageImages; + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; + VkResolveModeFlags supportedDepthResolveModes; + VkResolveModeFlags supportedStencilResolveModes; + VkBool32 independentResolveNone; + VkBool32 independentResolve; + VkBool32 filterMinmaxSingleComponentFormats; + VkBool32 filterMinmaxImageComponentMapping; + uint64_t maxTimelineSemaphoreValueDifference; + VkSampleCountFlags framebufferIntegerColorSampleCounts; +} VkPhysicalDeviceVulkan12Properties; + +typedef struct VkImageFormatListCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t viewFormatCount; + const VkFormat* pViewFormats; +} VkImageFormatListCreateInfo; + +typedef struct VkAttachmentDescription2 { + VkStructureType sType; + const void* pNext; + VkAttachmentDescriptionFlags flags; + VkFormat format; + VkSampleCountFlagBits samples; + VkAttachmentLoadOp loadOp; + VkAttachmentStoreOp storeOp; + VkAttachmentLoadOp stencilLoadOp; + VkAttachmentStoreOp stencilStoreOp; + VkImageLayout initialLayout; + VkImageLayout finalLayout; +} VkAttachmentDescription2; + +typedef struct VkAttachmentReference2 { + VkStructureType sType; + const void* pNext; + uint32_t attachment; + VkImageLayout layout; + VkImageAspectFlags aspectMask; +} VkAttachmentReference2; + +typedef struct VkSubpassDescription2 { + VkStructureType sType; + const void* pNext; + VkSubpassDescriptionFlags flags; + VkPipelineBindPoint pipelineBindPoint; + uint32_t viewMask; + uint32_t inputAttachmentCount; + const VkAttachmentReference2* pInputAttachments; + uint32_t colorAttachmentCount; + const VkAttachmentReference2* pColorAttachments; + const VkAttachmentReference2* pResolveAttachments; + const VkAttachmentReference2* pDepthStencilAttachment; + uint32_t preserveAttachmentCount; + const uint32_t* pPreserveAttachments; +} VkSubpassDescription2; + +typedef struct VkSubpassDependency2 { + VkStructureType sType; + const void* pNext; + uint32_t srcSubpass; + uint32_t dstSubpass; + VkPipelineStageFlags srcStageMask; + VkPipelineStageFlags dstStageMask; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + VkDependencyFlags dependencyFlags; + int32_t viewOffset; +} VkSubpassDependency2; + +typedef struct VkRenderPassCreateInfo2 { + VkStructureType sType; + const void* pNext; + VkRenderPassCreateFlags flags; + uint32_t attachmentCount; + const VkAttachmentDescription2* pAttachments; + uint32_t subpassCount; + const VkSubpassDescription2* pSubpasses; + uint32_t dependencyCount; + const VkSubpassDependency2* pDependencies; + uint32_t correlatedViewMaskCount; + const uint32_t* pCorrelatedViewMasks; +} VkRenderPassCreateInfo2; + +typedef struct VkSubpassBeginInfo { + VkStructureType sType; + const void* pNext; + VkSubpassContents contents; +} VkSubpassBeginInfo; + +typedef struct VkSubpassEndInfo { + VkStructureType sType; + const void* pNext; +} VkSubpassEndInfo; + +typedef struct VkPhysicalDevice8BitStorageFeatures { + VkStructureType sType; + void* pNext; + VkBool32 storageBuffer8BitAccess; + VkBool32 uniformAndStorageBuffer8BitAccess; + VkBool32 storagePushConstant8; +} VkPhysicalDevice8BitStorageFeatures; + +typedef struct VkPhysicalDeviceDriverProperties { + VkStructureType sType; + void* pNext; + VkDriverId driverID; + char driverName[VK_MAX_DRIVER_NAME_SIZE]; + char driverInfo[VK_MAX_DRIVER_INFO_SIZE]; + VkConformanceVersion conformanceVersion; +} VkPhysicalDeviceDriverProperties; + +typedef struct VkPhysicalDeviceShaderAtomicInt64Features { + VkStructureType sType; + void* pNext; + VkBool32 shaderBufferInt64Atomics; + VkBool32 shaderSharedInt64Atomics; +} VkPhysicalDeviceShaderAtomicInt64Features; + +typedef struct VkPhysicalDeviceShaderFloat16Int8Features { + VkStructureType sType; + void* pNext; + VkBool32 shaderFloat16; + VkBool32 shaderInt8; +} VkPhysicalDeviceShaderFloat16Int8Features; + +typedef struct VkPhysicalDeviceFloatControlsProperties { + VkStructureType sType; + void* pNext; + VkShaderFloatControlsIndependence denormBehaviorIndependence; + VkShaderFloatControlsIndependence roundingModeIndependence; + VkBool32 shaderSignedZeroInfNanPreserveFloat16; + VkBool32 shaderSignedZeroInfNanPreserveFloat32; + VkBool32 shaderSignedZeroInfNanPreserveFloat64; + VkBool32 shaderDenormPreserveFloat16; + VkBool32 shaderDenormPreserveFloat32; + VkBool32 shaderDenormPreserveFloat64; + VkBool32 shaderDenormFlushToZeroFloat16; + VkBool32 shaderDenormFlushToZeroFloat32; + VkBool32 shaderDenormFlushToZeroFloat64; + VkBool32 shaderRoundingModeRTEFloat16; + VkBool32 shaderRoundingModeRTEFloat32; + VkBool32 shaderRoundingModeRTEFloat64; + VkBool32 shaderRoundingModeRTZFloat16; + VkBool32 shaderRoundingModeRTZFloat32; + VkBool32 shaderRoundingModeRTZFloat64; +} VkPhysicalDeviceFloatControlsProperties; + +typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t bindingCount; + const VkDescriptorBindingFlags* pBindingFlags; +} VkDescriptorSetLayoutBindingFlagsCreateInfo; + +typedef struct VkPhysicalDeviceDescriptorIndexingFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderInputAttachmentArrayDynamicIndexing; + VkBool32 shaderUniformTexelBufferArrayDynamicIndexing; + VkBool32 shaderStorageTexelBufferArrayDynamicIndexing; + VkBool32 shaderUniformBufferArrayNonUniformIndexing; + VkBool32 shaderSampledImageArrayNonUniformIndexing; + VkBool32 shaderStorageBufferArrayNonUniformIndexing; + VkBool32 shaderStorageImageArrayNonUniformIndexing; + VkBool32 shaderInputAttachmentArrayNonUniformIndexing; + VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing; + VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing; + VkBool32 descriptorBindingUniformBufferUpdateAfterBind; + VkBool32 descriptorBindingSampledImageUpdateAfterBind; + VkBool32 descriptorBindingStorageImageUpdateAfterBind; + VkBool32 descriptorBindingStorageBufferUpdateAfterBind; + VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingUpdateUnusedWhilePending; + VkBool32 descriptorBindingPartiallyBound; + VkBool32 descriptorBindingVariableDescriptorCount; + VkBool32 runtimeDescriptorArray; +} VkPhysicalDeviceDescriptorIndexingFeatures; + +typedef struct VkPhysicalDeviceDescriptorIndexingProperties { + VkStructureType sType; + void* pNext; + uint32_t maxUpdateAfterBindDescriptorsInAllPools; + VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; + VkBool32 shaderSampledImageArrayNonUniformIndexingNative; + VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; + VkBool32 shaderStorageImageArrayNonUniformIndexingNative; + VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; + VkBool32 robustBufferAccessUpdateAfterBind; + VkBool32 quadDivergentImplicitLod; + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; + uint32_t maxPerStageUpdateAfterBindResources; + uint32_t maxDescriptorSetUpdateAfterBindSamplers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindSampledImages; + uint32_t maxDescriptorSetUpdateAfterBindStorageImages; + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; +} VkPhysicalDeviceDescriptorIndexingProperties; + +typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo { + VkStructureType sType; + const void* pNext; + uint32_t descriptorSetCount; + const uint32_t* pDescriptorCounts; +} VkDescriptorSetVariableDescriptorCountAllocateInfo; + +typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport { + VkStructureType sType; + void* pNext; + uint32_t maxVariableDescriptorCount; +} VkDescriptorSetVariableDescriptorCountLayoutSupport; + +typedef struct VkSubpassDescriptionDepthStencilResolve { + VkStructureType sType; + const void* pNext; + VkResolveModeFlagBits depthResolveMode; + VkResolveModeFlagBits stencilResolveMode; + const VkAttachmentReference2* pDepthStencilResolveAttachment; +} VkSubpassDescriptionDepthStencilResolve; + +typedef struct VkPhysicalDeviceDepthStencilResolveProperties { + VkStructureType sType; + void* pNext; + VkResolveModeFlags supportedDepthResolveModes; + VkResolveModeFlags supportedStencilResolveModes; + VkBool32 independentResolveNone; + VkBool32 independentResolve; +} VkPhysicalDeviceDepthStencilResolveProperties; + +typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures { + VkStructureType sType; + void* pNext; + VkBool32 scalarBlockLayout; +} VkPhysicalDeviceScalarBlockLayoutFeatures; + +typedef struct VkImageStencilUsageCreateInfo { + VkStructureType sType; + const void* pNext; + VkImageUsageFlags stencilUsage; +} VkImageStencilUsageCreateInfo; + +typedef struct VkSamplerReductionModeCreateInfo { + VkStructureType sType; + const void* pNext; + VkSamplerReductionMode reductionMode; +} VkSamplerReductionModeCreateInfo; + +typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties { + VkStructureType sType; + void* pNext; + VkBool32 filterMinmaxSingleComponentFormats; + VkBool32 filterMinmaxImageComponentMapping; +} VkPhysicalDeviceSamplerFilterMinmaxProperties; + +typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures { + VkStructureType sType; + void* pNext; + VkBool32 vulkanMemoryModel; + VkBool32 vulkanMemoryModelDeviceScope; + VkBool32 vulkanMemoryModelAvailabilityVisibilityChains; +} VkPhysicalDeviceVulkanMemoryModelFeatures; + +typedef struct VkPhysicalDeviceImagelessFramebufferFeatures { + VkStructureType sType; + void* pNext; + VkBool32 imagelessFramebuffer; +} VkPhysicalDeviceImagelessFramebufferFeatures; + +typedef struct VkFramebufferAttachmentImageInfo { + VkStructureType sType; + const void* pNext; + VkImageCreateFlags flags; + VkImageUsageFlags usage; + uint32_t width; + uint32_t height; + uint32_t layerCount; + uint32_t viewFormatCount; + const VkFormat* pViewFormats; +} VkFramebufferAttachmentImageInfo; + +typedef struct VkFramebufferAttachmentsCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t attachmentImageInfoCount; + const VkFramebufferAttachmentImageInfo* pAttachmentImageInfos; +} VkFramebufferAttachmentsCreateInfo; + +typedef struct VkRenderPassAttachmentBeginInfo { + VkStructureType sType; + const void* pNext; + uint32_t attachmentCount; + const VkImageView* pAttachments; +} VkRenderPassAttachmentBeginInfo; + +typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures { + VkStructureType sType; + void* pNext; + VkBool32 uniformBufferStandardLayout; +} VkPhysicalDeviceUniformBufferStandardLayoutFeatures; + +typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderSubgroupExtendedTypes; +} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures; + +typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures { + VkStructureType sType; + void* pNext; + VkBool32 separateDepthStencilLayouts; +} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures; + +typedef struct VkAttachmentReferenceStencilLayout { + VkStructureType sType; + void* pNext; + VkImageLayout stencilLayout; +} VkAttachmentReferenceStencilLayout; + +typedef struct VkAttachmentDescriptionStencilLayout { + VkStructureType sType; + void* pNext; + VkImageLayout stencilInitialLayout; + VkImageLayout stencilFinalLayout; +} VkAttachmentDescriptionStencilLayout; + +typedef struct VkPhysicalDeviceHostQueryResetFeatures { + VkStructureType sType; + void* pNext; + VkBool32 hostQueryReset; +} VkPhysicalDeviceHostQueryResetFeatures; + +typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures { + VkStructureType sType; + void* pNext; + VkBool32 timelineSemaphore; +} VkPhysicalDeviceTimelineSemaphoreFeatures; + +typedef struct VkPhysicalDeviceTimelineSemaphoreProperties { + VkStructureType sType; + void* pNext; + uint64_t maxTimelineSemaphoreValueDifference; +} VkPhysicalDeviceTimelineSemaphoreProperties; + +typedef struct VkSemaphoreTypeCreateInfo { + VkStructureType sType; + const void* pNext; + VkSemaphoreType semaphoreType; + uint64_t initialValue; +} VkSemaphoreTypeCreateInfo; + +typedef struct VkTimelineSemaphoreSubmitInfo { + VkStructureType sType; + const void* pNext; + uint32_t waitSemaphoreValueCount; + const uint64_t* pWaitSemaphoreValues; + uint32_t signalSemaphoreValueCount; + const uint64_t* pSignalSemaphoreValues; +} VkTimelineSemaphoreSubmitInfo; + +typedef struct VkSemaphoreWaitInfo { + VkStructureType sType; + const void* pNext; + VkSemaphoreWaitFlags flags; + uint32_t semaphoreCount; + const VkSemaphore* pSemaphores; + const uint64_t* pValues; +} VkSemaphoreWaitInfo; + +typedef struct VkSemaphoreSignalInfo { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + uint64_t value; +} VkSemaphoreSignalInfo; + +typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures { + VkStructureType sType; + void* pNext; + VkBool32 bufferDeviceAddress; + VkBool32 bufferDeviceAddressCaptureReplay; + VkBool32 bufferDeviceAddressMultiDevice; +} VkPhysicalDeviceBufferDeviceAddressFeatures; + +typedef struct VkBufferDeviceAddressInfo { + VkStructureType sType; + const void* pNext; + VkBuffer buffer; +} VkBufferDeviceAddressInfo; + +typedef struct VkBufferOpaqueCaptureAddressCreateInfo { + VkStructureType sType; + const void* pNext; + uint64_t opaqueCaptureAddress; +} VkBufferOpaqueCaptureAddressCreateInfo; + +typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo { + VkStructureType sType; + const void* pNext; + uint64_t opaqueCaptureAddress; +} VkMemoryOpaqueCaptureAddressAllocateInfo; + +typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; +} VkDeviceMemoryOpaqueCaptureAddressInfo; + +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo); +typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo); +typedef void (VKAPI_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue); +typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout); +typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo); +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2( + VkDevice device, + const VkRenderPassCreateInfo2* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkRenderPass* pRenderPass); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2( + VkCommandBuffer commandBuffer, + const VkRenderPassBeginInfo* pRenderPassBegin, + const VkSubpassBeginInfo* pSubpassBeginInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2( + VkCommandBuffer commandBuffer, + const VkSubpassBeginInfo* pSubpassBeginInfo, + const VkSubpassEndInfo* pSubpassEndInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2( + VkCommandBuffer commandBuffer, + const VkSubpassEndInfo* pSubpassEndInfo); + +VKAPI_ATTR void VKAPI_CALL vkResetQueryPool( + VkDevice device, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValue( + VkDevice device, + VkSemaphore semaphore, + uint64_t* pValue); + +VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphores( + VkDevice device, + const VkSemaphoreWaitInfo* pWaitInfo, + uint64_t timeout); + +VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphore( + VkDevice device, + const VkSemaphoreSignalInfo* pSignalInfo); + +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddress( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); + +VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddress( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); + +VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress( + VkDevice device, + const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); +#endif + + +#define VK_VERSION_1_3 1 +// Vulkan 1.3 version number +#define VK_API_VERSION_1_3 VK_MAKE_API_VERSION(0, 1, 3, 0)// Patch version should always be set to 0 + +typedef uint64_t VkFlags64; +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPrivateDataSlot) + +typedef enum VkPipelineCreationFeedbackFlagBits { + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT = 0x00000001, + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT = 0x00000002, + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT = 0x00000004, + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT, + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT, + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT, + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCreationFeedbackFlagBits; +typedef VkFlags VkPipelineCreationFeedbackFlags; + +typedef enum VkToolPurposeFlagBits { + VK_TOOL_PURPOSE_VALIDATION_BIT = 0x00000001, + VK_TOOL_PURPOSE_PROFILING_BIT = 0x00000002, + VK_TOOL_PURPOSE_TRACING_BIT = 0x00000004, + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT = 0x00000008, + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT = 0x00000010, + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 0x00000020, + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 0x00000040, + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = VK_TOOL_PURPOSE_VALIDATION_BIT, + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = VK_TOOL_PURPOSE_PROFILING_BIT, + VK_TOOL_PURPOSE_TRACING_BIT_EXT = VK_TOOL_PURPOSE_TRACING_BIT, + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT, + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT, + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkToolPurposeFlagBits; +typedef VkFlags VkToolPurposeFlags; + +typedef enum VkPrivateDataSlotCreateFlagBits { + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPrivateDataSlotCreateFlagBits; +typedef VkFlags VkPrivateDataSlotCreateFlags; +typedef VkFlags64 VkPipelineStageFlags2; + +// Flag bits for VkPipelineStageFlagBits2 +typedef VkFlags64 VkPipelineStageFlagBits2; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE = 0ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE_KHR = 0ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT = 0x00000001ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = 0x00000001ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT = 0x00000002ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = 0x00000002ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT = 0x00000004ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR = 0x00000004ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT = 0x00000008ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR = 0x00000008ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR = 0x00000010ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = 0x00000020ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT = 0x00000040ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR = 0x00000040ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT = 0x00000080ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR = 0x00000080ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT = 0x00000100ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR = 0x00000100ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT = 0x00000200ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR = 0x00000200ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR = 0x00000400ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT = 0x00000800ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR = 0x00000800ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT = 0x00002000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR = 0x00002000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT = 0x00004000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT_KHR = 0x00004000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT = 0x00008000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR = 0x00008000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT = 0x00010000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR = 0x00010000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT = 0x100000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT_KHR = 0x100000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT = 0x200000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR = 0x200000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT = 0x400000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT_KHR = 0x400000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT = 0x800000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR = 0x800000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT = 0x1000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR = 0x1000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT = 0x2000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = 0x2000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT = 0x4000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = 0x4000000000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR = 0x04000000ULL; +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR = 0x08000000ULL; +#endif +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV = 0x00020000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV = 0x00400000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR = 0x00200000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV = 0x00200000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV = 0x00080000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x00100000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI = 0x8000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI = 0x10000000000ULL; + +typedef VkFlags64 VkAccessFlags2; + +// Flag bits for VkAccessFlagBits2 +typedef VkFlags64 VkAccessFlagBits2; +static const VkAccessFlagBits2 VK_ACCESS_2_NONE = 0ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_NONE_KHR = 0ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT = 0x00000001ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = 0x00000001ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT = 0x00000002ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT_KHR = 0x00000002ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR = 0x00000004ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT = 0x00000008ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT_KHR = 0x00000008ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT = 0x00000010ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR = 0x00000010ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT = 0x00000020ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT_KHR = 0x00000020ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT = 0x00000040ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT_KHR = 0x00000040ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT = 0x00000080ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR = 0x00000080ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR = 0x00000100ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR = 0x00000200ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = 0x00000400ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT = 0x00000800ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT_KHR = 0x00000800ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT = 0x00001000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR = 0x00001000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT = 0x00002000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT_KHR = 0x00002000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT = 0x00004000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT_KHR = 0x00004000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT = 0x00008000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT_KHR = 0x00008000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT = 0x00010000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT_KHR = 0x00010000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT = 0x100000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR = 0x100000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT = 0x200000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = 0x200000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT = 0x400000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = 0x400000000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR = 0x800000000ULL; +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR = 0x1000000000ULL; +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR = 0x2000000000ULL; +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR = 0x4000000000ULL; +#endif +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV = 0x00200000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI = 0x8000000000ULL; + + +typedef enum VkSubmitFlagBits { + VK_SUBMIT_PROTECTED_BIT = 0x00000001, + VK_SUBMIT_PROTECTED_BIT_KHR = VK_SUBMIT_PROTECTED_BIT, + VK_SUBMIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSubmitFlagBits; +typedef VkFlags VkSubmitFlags; + +typedef enum VkRenderingFlagBits { + VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT = 0x00000001, + VK_RENDERING_SUSPENDING_BIT = 0x00000002, + VK_RENDERING_RESUMING_BIT = 0x00000004, + VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT, + VK_RENDERING_SUSPENDING_BIT_KHR = VK_RENDERING_SUSPENDING_BIT, + VK_RENDERING_RESUMING_BIT_KHR = VK_RENDERING_RESUMING_BIT, + VK_RENDERING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkRenderingFlagBits; +typedef VkFlags VkRenderingFlags; +typedef VkFlags64 VkFormatFeatureFlags2; + +// Flag bits for VkFormatFeatureFlagBits2 +typedef VkFlags64 VkFormatFeatureFlagBits2; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT = 0x00000001ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR = 0x00000001ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT = 0x00000002ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR = 0x00000002ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR = 0x00000004ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 0x00000008ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT = 0x00000010ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 0x00000010ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR = 0x00000020ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT = 0x00000040ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR = 0x00000040ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT = 0x00000080ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR = 0x00000080ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR = 0x00000100ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR = 0x00000200ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT = 0x00000400ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR = 0x00000400ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT = 0x00000800ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR = 0x00000800ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR = 0x00001000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT = 0x00002000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT = 0x00004000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR = 0x00004000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT = 0x00008000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR = 0x00008000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR = 0x00010000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 0x00020000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 0x00040000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 0x00080000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 0x00100000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 0x00200000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT = 0x00400000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR = 0x00400000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT = 0x00800000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR = 0x00800000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT = 0x80000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR = 0x80000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT = 0x100000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR = 0x100000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT = 0x200000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR = 0x200000000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000ULL; +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000ULL; +#endif +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000ULL; +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000ULL; +#endif +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV = 0x4000000000ULL; + +typedef struct VkPhysicalDeviceVulkan13Features { + VkStructureType sType; + void* pNext; + VkBool32 robustImageAccess; + VkBool32 inlineUniformBlock; + VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; + VkBool32 pipelineCreationCacheControl; + VkBool32 privateData; + VkBool32 shaderDemoteToHelperInvocation; + VkBool32 shaderTerminateInvocation; + VkBool32 subgroupSizeControl; + VkBool32 computeFullSubgroups; + VkBool32 synchronization2; + VkBool32 textureCompressionASTC_HDR; + VkBool32 shaderZeroInitializeWorkgroupMemory; + VkBool32 dynamicRendering; + VkBool32 shaderIntegerDotProduct; + VkBool32 maintenance4; +} VkPhysicalDeviceVulkan13Features; + +typedef struct VkPhysicalDeviceVulkan13Properties { + VkStructureType sType; + void* pNext; + uint32_t minSubgroupSize; + uint32_t maxSubgroupSize; + uint32_t maxComputeWorkgroupSubgroups; + VkShaderStageFlags requiredSubgroupSizeStages; + uint32_t maxInlineUniformBlockSize; + uint32_t maxPerStageDescriptorInlineUniformBlocks; + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; + uint32_t maxDescriptorSetInlineUniformBlocks; + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; + uint32_t maxInlineUniformTotalSize; + VkBool32 integerDotProduct8BitUnsignedAccelerated; + VkBool32 integerDotProduct8BitSignedAccelerated; + VkBool32 integerDotProduct8BitMixedSignednessAccelerated; + VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedSignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProduct16BitUnsignedAccelerated; + VkBool32 integerDotProduct16BitSignedAccelerated; + VkBool32 integerDotProduct16BitMixedSignednessAccelerated; + VkBool32 integerDotProduct32BitUnsignedAccelerated; + VkBool32 integerDotProduct32BitSignedAccelerated; + VkBool32 integerDotProduct32BitMixedSignednessAccelerated; + VkBool32 integerDotProduct64BitUnsignedAccelerated; + VkBool32 integerDotProduct64BitSignedAccelerated; + VkBool32 integerDotProduct64BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; + VkDeviceSize storageTexelBufferOffsetAlignmentBytes; + VkBool32 storageTexelBufferOffsetSingleTexelAlignment; + VkDeviceSize uniformTexelBufferOffsetAlignmentBytes; + VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; + VkDeviceSize maxBufferSize; +} VkPhysicalDeviceVulkan13Properties; + +typedef struct VkPipelineCreationFeedback { + VkPipelineCreationFeedbackFlags flags; + uint64_t duration; +} VkPipelineCreationFeedback; + +typedef struct VkPipelineCreationFeedbackCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineCreationFeedback* pPipelineCreationFeedback; + uint32_t pipelineStageCreationFeedbackCount; + VkPipelineCreationFeedback* pPipelineStageCreationFeedbacks; +} VkPipelineCreationFeedbackCreateInfo; + +typedef struct VkPhysicalDeviceShaderTerminateInvocationFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderTerminateInvocation; +} VkPhysicalDeviceShaderTerminateInvocationFeatures; + +typedef struct VkPhysicalDeviceToolProperties { + VkStructureType sType; + void* pNext; + char name[VK_MAX_EXTENSION_NAME_SIZE]; + char version[VK_MAX_EXTENSION_NAME_SIZE]; + VkToolPurposeFlags purposes; + char description[VK_MAX_DESCRIPTION_SIZE]; + char layer[VK_MAX_EXTENSION_NAME_SIZE]; +} VkPhysicalDeviceToolProperties; + +typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderDemoteToHelperInvocation; +} VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures; + +typedef struct VkPhysicalDevicePrivateDataFeatures { + VkStructureType sType; + void* pNext; + VkBool32 privateData; +} VkPhysicalDevicePrivateDataFeatures; + +typedef struct VkDevicePrivateDataCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t privateDataSlotRequestCount; +} VkDevicePrivateDataCreateInfo; + +typedef struct VkPrivateDataSlotCreateInfo { + VkStructureType sType; + const void* pNext; + VkPrivateDataSlotCreateFlags flags; +} VkPrivateDataSlotCreateInfo; + +typedef struct VkPhysicalDevicePipelineCreationCacheControlFeatures { + VkStructureType sType; + void* pNext; + VkBool32 pipelineCreationCacheControl; +} VkPhysicalDevicePipelineCreationCacheControlFeatures; + +typedef struct VkMemoryBarrier2 { + VkStructureType sType; + const void* pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; +} VkMemoryBarrier2; + +typedef struct VkBufferMemoryBarrier2 { + VkStructureType sType; + const void* pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; +} VkBufferMemoryBarrier2; + +typedef struct VkImageMemoryBarrier2 { + VkStructureType sType; + const void* pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; + VkImageLayout oldLayout; + VkImageLayout newLayout; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkImage image; + VkImageSubresourceRange subresourceRange; +} VkImageMemoryBarrier2; + +typedef struct VkDependencyInfo { + VkStructureType sType; + const void* pNext; + VkDependencyFlags dependencyFlags; + uint32_t memoryBarrierCount; + const VkMemoryBarrier2* pMemoryBarriers; + uint32_t bufferMemoryBarrierCount; + const VkBufferMemoryBarrier2* pBufferMemoryBarriers; + uint32_t imageMemoryBarrierCount; + const VkImageMemoryBarrier2* pImageMemoryBarriers; +} VkDependencyInfo; + +typedef struct VkSemaphoreSubmitInfo { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + uint64_t value; + VkPipelineStageFlags2 stageMask; + uint32_t deviceIndex; +} VkSemaphoreSubmitInfo; + +typedef struct VkCommandBufferSubmitInfo { + VkStructureType sType; + const void* pNext; + VkCommandBuffer commandBuffer; + uint32_t deviceMask; +} VkCommandBufferSubmitInfo; + +typedef struct VkSubmitInfo2 { + VkStructureType sType; + const void* pNext; + VkSubmitFlags flags; + uint32_t waitSemaphoreInfoCount; + const VkSemaphoreSubmitInfo* pWaitSemaphoreInfos; + uint32_t commandBufferInfoCount; + const VkCommandBufferSubmitInfo* pCommandBufferInfos; + uint32_t signalSemaphoreInfoCount; + const VkSemaphoreSubmitInfo* pSignalSemaphoreInfos; +} VkSubmitInfo2; + +typedef struct VkPhysicalDeviceSynchronization2Features { + VkStructureType sType; + void* pNext; + VkBool32 synchronization2; +} VkPhysicalDeviceSynchronization2Features; + +typedef struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderZeroInitializeWorkgroupMemory; +} VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + +typedef struct VkPhysicalDeviceImageRobustnessFeatures { + VkStructureType sType; + void* pNext; + VkBool32 robustImageAccess; +} VkPhysicalDeviceImageRobustnessFeatures; + +typedef struct VkBufferCopy2 { + VkStructureType sType; + const void* pNext; + VkDeviceSize srcOffset; + VkDeviceSize dstOffset; + VkDeviceSize size; +} VkBufferCopy2; + +typedef struct VkCopyBufferInfo2 { + VkStructureType sType; + const void* pNext; + VkBuffer srcBuffer; + VkBuffer dstBuffer; + uint32_t regionCount; + const VkBufferCopy2* pRegions; +} VkCopyBufferInfo2; + +typedef struct VkImageCopy2 { + VkStructureType sType; + const void* pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageCopy2; + +typedef struct VkCopyImageInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageCopy2* pRegions; +} VkCopyImageInfo2; + +typedef struct VkBufferImageCopy2 { + VkStructureType sType; + const void* pNext; + VkDeviceSize bufferOffset; + uint32_t bufferRowLength; + uint32_t bufferImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkBufferImageCopy2; + +typedef struct VkCopyBufferToImageInfo2 { + VkStructureType sType; + const void* pNext; + VkBuffer srcBuffer; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkBufferImageCopy2* pRegions; +} VkCopyBufferToImageInfo2; + +typedef struct VkCopyImageToBufferInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkBuffer dstBuffer; + uint32_t regionCount; + const VkBufferImageCopy2* pRegions; +} VkCopyImageToBufferInfo2; + +typedef struct VkImageBlit2 { + VkStructureType sType; + const void* pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffsets[2]; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffsets[2]; +} VkImageBlit2; + +typedef struct VkBlitImageInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageBlit2* pRegions; + VkFilter filter; +} VkBlitImageInfo2; + +typedef struct VkImageResolve2 { + VkStructureType sType; + const void* pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageResolve2; + +typedef struct VkResolveImageInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageResolve2* pRegions; +} VkResolveImageInfo2; + +typedef struct VkPhysicalDeviceSubgroupSizeControlFeatures { + VkStructureType sType; + void* pNext; + VkBool32 subgroupSizeControl; + VkBool32 computeFullSubgroups; +} VkPhysicalDeviceSubgroupSizeControlFeatures; + +typedef struct VkPhysicalDeviceSubgroupSizeControlProperties { + VkStructureType sType; + void* pNext; + uint32_t minSubgroupSize; + uint32_t maxSubgroupSize; + uint32_t maxComputeWorkgroupSubgroups; + VkShaderStageFlags requiredSubgroupSizeStages; +} VkPhysicalDeviceSubgroupSizeControlProperties; + +typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo { + VkStructureType sType; + void* pNext; + uint32_t requiredSubgroupSize; +} VkPipelineShaderStageRequiredSubgroupSizeCreateInfo; + +typedef struct VkPhysicalDeviceInlineUniformBlockFeatures { + VkStructureType sType; + void* pNext; + VkBool32 inlineUniformBlock; + VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; +} VkPhysicalDeviceInlineUniformBlockFeatures; + +typedef struct VkPhysicalDeviceInlineUniformBlockProperties { + VkStructureType sType; + void* pNext; + uint32_t maxInlineUniformBlockSize; + uint32_t maxPerStageDescriptorInlineUniformBlocks; + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; + uint32_t maxDescriptorSetInlineUniformBlocks; + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; +} VkPhysicalDeviceInlineUniformBlockProperties; + +typedef struct VkWriteDescriptorSetInlineUniformBlock { + VkStructureType sType; + const void* pNext; + uint32_t dataSize; + const void* pData; +} VkWriteDescriptorSetInlineUniformBlock; + +typedef struct VkDescriptorPoolInlineUniformBlockCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t maxInlineUniformBlockBindings; +} VkDescriptorPoolInlineUniformBlockCreateInfo; + +typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures { + VkStructureType sType; + void* pNext; + VkBool32 textureCompressionASTC_HDR; +} VkPhysicalDeviceTextureCompressionASTCHDRFeatures; + +typedef struct VkRenderingAttachmentInfo { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkImageLayout imageLayout; + VkResolveModeFlagBits resolveMode; + VkImageView resolveImageView; + VkImageLayout resolveImageLayout; + VkAttachmentLoadOp loadOp; + VkAttachmentStoreOp storeOp; + VkClearValue clearValue; +} VkRenderingAttachmentInfo; + +typedef struct VkRenderingInfo { + VkStructureType sType; + const void* pNext; + VkRenderingFlags flags; + VkRect2D renderArea; + uint32_t layerCount; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkRenderingAttachmentInfo* pColorAttachments; + const VkRenderingAttachmentInfo* pDepthAttachment; + const VkRenderingAttachmentInfo* pStencilAttachment; +} VkRenderingInfo; + +typedef struct VkPipelineRenderingCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkFormat* pColorAttachmentFormats; + VkFormat depthAttachmentFormat; + VkFormat stencilAttachmentFormat; +} VkPipelineRenderingCreateInfo; + +typedef struct VkPhysicalDeviceDynamicRenderingFeatures { + VkStructureType sType; + void* pNext; + VkBool32 dynamicRendering; +} VkPhysicalDeviceDynamicRenderingFeatures; + +typedef struct VkCommandBufferInheritanceRenderingInfo { + VkStructureType sType; + const void* pNext; + VkRenderingFlags flags; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkFormat* pColorAttachmentFormats; + VkFormat depthAttachmentFormat; + VkFormat stencilAttachmentFormat; + VkSampleCountFlagBits rasterizationSamples; +} VkCommandBufferInheritanceRenderingInfo; + +typedef struct VkPhysicalDeviceShaderIntegerDotProductFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderIntegerDotProduct; +} VkPhysicalDeviceShaderIntegerDotProductFeatures; + +typedef struct VkPhysicalDeviceShaderIntegerDotProductProperties { + VkStructureType sType; + void* pNext; + VkBool32 integerDotProduct8BitUnsignedAccelerated; + VkBool32 integerDotProduct8BitSignedAccelerated; + VkBool32 integerDotProduct8BitMixedSignednessAccelerated; + VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedSignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProduct16BitUnsignedAccelerated; + VkBool32 integerDotProduct16BitSignedAccelerated; + VkBool32 integerDotProduct16BitMixedSignednessAccelerated; + VkBool32 integerDotProduct32BitUnsignedAccelerated; + VkBool32 integerDotProduct32BitSignedAccelerated; + VkBool32 integerDotProduct32BitMixedSignednessAccelerated; + VkBool32 integerDotProduct64BitUnsignedAccelerated; + VkBool32 integerDotProduct64BitSignedAccelerated; + VkBool32 integerDotProduct64BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; +} VkPhysicalDeviceShaderIntegerDotProductProperties; + +typedef struct VkPhysicalDeviceTexelBufferAlignmentProperties { + VkStructureType sType; + void* pNext; + VkDeviceSize storageTexelBufferOffsetAlignmentBytes; + VkBool32 storageTexelBufferOffsetSingleTexelAlignment; + VkDeviceSize uniformTexelBufferOffsetAlignmentBytes; + VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; +} VkPhysicalDeviceTexelBufferAlignmentProperties; + +typedef struct VkFormatProperties3 { + VkStructureType sType; + void* pNext; + VkFormatFeatureFlags2 linearTilingFeatures; + VkFormatFeatureFlags2 optimalTilingFeatures; + VkFormatFeatureFlags2 bufferFeatures; +} VkFormatProperties3; + +typedef struct VkPhysicalDeviceMaintenance4Features { + VkStructureType sType; + void* pNext; + VkBool32 maintenance4; +} VkPhysicalDeviceMaintenance4Features; + +typedef struct VkPhysicalDeviceMaintenance4Properties { + VkStructureType sType; + void* pNext; + VkDeviceSize maxBufferSize; +} VkPhysicalDeviceMaintenance4Properties; + +typedef struct VkDeviceBufferMemoryRequirements { + VkStructureType sType; + const void* pNext; + const VkBufferCreateInfo* pCreateInfo; +} VkDeviceBufferMemoryRequirements; + +typedef struct VkDeviceImageMemoryRequirements { + VkStructureType sType; + const void* pNext; + const VkImageCreateInfo* pCreateInfo; + VkImageAspectFlagBits planeAspect; +} VkDeviceImageMemoryRequirements; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolProperties)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolProperties* pToolProperties); +typedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlot)(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot); +typedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlot)(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkSetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data); +typedef void (VKAPI_PTR *PFN_vkGetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData); +typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask); +typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfo* pDependencyInfos); +typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2)(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query); +typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBeginRendering)(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRendering)(VkCommandBuffer commandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdSetCullMode)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFace)(VkCommandBuffer commandBuffer, VkFrontFace frontFace); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopology)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCount)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports); +typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCount)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors); +typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnable)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOp)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnable)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOp)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnable)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnable)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable); +typedef void (VKAPI_PTR *PFN_vkGetDeviceBufferMemoryRequirements)(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSparseMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolProperties( + VkPhysicalDevice physicalDevice, + uint32_t* pToolCount, + VkPhysicalDeviceToolProperties* pToolProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePrivateDataSlot( + VkDevice device, + const VkPrivateDataSlotCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkPrivateDataSlot* pPrivateDataSlot); + +VKAPI_ATTR void VKAPI_CALL vkDestroyPrivateDataSlot( + VkDevice device, + VkPrivateDataSlot privateDataSlot, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetPrivateData( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t data); + +VKAPI_ATTR void VKAPI_CALL vkGetPrivateData( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t* pData); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2( + VkCommandBuffer commandBuffer, + VkEvent event, + const VkDependencyInfo* pDependencyInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2( + VkCommandBuffer commandBuffer, + VkEvent event, + VkPipelineStageFlags2 stageMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2( + VkCommandBuffer commandBuffer, + uint32_t eventCount, + const VkEvent* pEvents, + const VkDependencyInfo* pDependencyInfos); + +VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2( + VkCommandBuffer commandBuffer, + const VkDependencyInfo* pDependencyInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2( + VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkQueryPool queryPool, + uint32_t query); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2( + VkQueue queue, + uint32_t submitCount, + const VkSubmitInfo2* pSubmits, + VkFence fence); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2( + VkCommandBuffer commandBuffer, + const VkCopyBufferInfo2* pCopyBufferInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2( + VkCommandBuffer commandBuffer, + const VkCopyImageInfo2* pCopyImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2( + VkCommandBuffer commandBuffer, + const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2( + VkCommandBuffer commandBuffer, + const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2( + VkCommandBuffer commandBuffer, + const VkBlitImageInfo2* pBlitImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2( + VkCommandBuffer commandBuffer, + const VkResolveImageInfo2* pResolveImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRendering( + VkCommandBuffer commandBuffer, + const VkRenderingInfo* pRenderingInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndRendering( + VkCommandBuffer commandBuffer); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetCullMode( + VkCommandBuffer commandBuffer, + VkCullModeFlags cullMode); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFace( + VkCommandBuffer commandBuffer, + VkFrontFace frontFace); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopology( + VkCommandBuffer commandBuffer, + VkPrimitiveTopology primitiveTopology); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCount( + VkCommandBuffer commandBuffer, + uint32_t viewportCount, + const VkViewport* pViewports); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCount( + VkCommandBuffer commandBuffer, + uint32_t scissorCount, + const VkRect2D* pScissors); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets, + const VkDeviceSize* pSizes, + const VkDeviceSize* pStrides); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthWriteEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOp( + VkCommandBuffer commandBuffer, + VkCompareOp depthCompareOp); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthBoundsTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnable( + VkCommandBuffer commandBuffer, + VkBool32 stencilTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOp( + VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + VkStencilOp failOp, + VkStencilOp passOp, + VkStencilOp depthFailOp, + VkCompareOp compareOp); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnable( + VkCommandBuffer commandBuffer, + VkBool32 rasterizerDiscardEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthBiasEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnable( + VkCommandBuffer commandBuffer, + VkBool32 primitiveRestartEnable); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceBufferMemoryRequirements( + VkDevice device, + const VkDeviceBufferMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageMemoryRequirements( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSparseMemoryRequirements( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); +#endif + + +#define VK_KHR_surface 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) +#define VK_KHR_SURFACE_SPEC_VERSION 25 +#define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface" + +typedef enum VkPresentModeKHR { + VK_PRESENT_MODE_IMMEDIATE_KHR = 0, + VK_PRESENT_MODE_MAILBOX_KHR = 1, + VK_PRESENT_MODE_FIFO_KHR = 2, + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3, + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000, + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001, + VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPresentModeKHR; + +typedef enum VkColorSpaceKHR { + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0, + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001, + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002, + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003, + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004, + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005, + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006, + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007, + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008, VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009, VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010, VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011, @@ -4827,1361 +7294,2647 @@ typedef enum VkColorSpaceKHR { VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000, VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT, - VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, - VK_COLOR_SPACE_END_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, - VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR + 1), VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF } VkColorSpaceKHR; -typedef enum VkPresentModeKHR { - VK_PRESENT_MODE_IMMEDIATE_KHR = 0, - VK_PRESENT_MODE_MAILBOX_KHR = 1, - VK_PRESENT_MODE_FIFO_KHR = 2, - VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3, - VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000, - VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001, - VK_PRESENT_MODE_BEGIN_RANGE_KHR = VK_PRESENT_MODE_IMMEDIATE_KHR, - VK_PRESENT_MODE_END_RANGE_KHR = VK_PRESENT_MODE_FIFO_RELAXED_KHR, - VK_PRESENT_MODE_RANGE_SIZE_KHR = (VK_PRESENT_MODE_FIFO_RELAXED_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1), - VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF -} VkPresentModeKHR; +typedef enum VkSurfaceTransformFlagBitsKHR { + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001, + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002, + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004, + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080, + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100, + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkSurfaceTransformFlagBitsKHR; + +typedef enum VkCompositeAlphaFlagBitsKHR { + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002, + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004, + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008, + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkCompositeAlphaFlagBitsKHR; +typedef VkFlags VkCompositeAlphaFlagsKHR; +typedef VkFlags VkSurfaceTransformFlagsKHR; +typedef struct VkSurfaceCapabilitiesKHR { + uint32_t minImageCount; + uint32_t maxImageCount; + VkExtent2D currentExtent; + VkExtent2D minImageExtent; + VkExtent2D maxImageExtent; + uint32_t maxImageArrayLayers; + VkSurfaceTransformFlagsKHR supportedTransforms; + VkSurfaceTransformFlagBitsKHR currentTransform; + VkCompositeAlphaFlagsKHR supportedCompositeAlpha; + VkImageUsageFlags supportedUsageFlags; +} VkSurfaceCapabilitiesKHR; + +typedef struct VkSurfaceFormatKHR { + VkFormat format; + VkColorSpaceKHR colorSpace; +} VkSurfaceFormatKHR; + +typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR( + VkInstance instance, + VkSurfaceKHR surface, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + VkSurfaceKHR surface, + VkBool32* pSupported); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR( + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR( + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + uint32_t* pSurfaceFormatCount, + VkSurfaceFormatKHR* pSurfaceFormats); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR( + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + uint32_t* pPresentModeCount, + VkPresentModeKHR* pPresentModes); +#endif + + +#define VK_KHR_swapchain 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR) +#define VK_KHR_SWAPCHAIN_SPEC_VERSION 70 +#define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain" + +typedef enum VkSwapchainCreateFlagBitsKHR { + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001, + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002, + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0x00000004, + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkSwapchainCreateFlagBitsKHR; +typedef VkFlags VkSwapchainCreateFlagsKHR; + +typedef enum VkDeviceGroupPresentModeFlagBitsKHR { + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001, + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002, + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004, + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008, + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkDeviceGroupPresentModeFlagBitsKHR; +typedef VkFlags VkDeviceGroupPresentModeFlagsKHR; +typedef struct VkSwapchainCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkSwapchainCreateFlagsKHR flags; + VkSurfaceKHR surface; + uint32_t minImageCount; + VkFormat imageFormat; + VkColorSpaceKHR imageColorSpace; + VkExtent2D imageExtent; + uint32_t imageArrayLayers; + VkImageUsageFlags imageUsage; + VkSharingMode imageSharingMode; + uint32_t queueFamilyIndexCount; + const uint32_t* pQueueFamilyIndices; + VkSurfaceTransformFlagBitsKHR preTransform; + VkCompositeAlphaFlagBitsKHR compositeAlpha; + VkPresentModeKHR presentMode; + VkBool32 clipped; + VkSwapchainKHR oldSwapchain; +} VkSwapchainCreateInfoKHR; + +typedef struct VkPresentInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t waitSemaphoreCount; + const VkSemaphore* pWaitSemaphores; + uint32_t swapchainCount; + const VkSwapchainKHR* pSwapchains; + const uint32_t* pImageIndices; + VkResult* pResults; +} VkPresentInfoKHR; + +typedef struct VkImageSwapchainCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkSwapchainKHR swapchain; +} VkImageSwapchainCreateInfoKHR; + +typedef struct VkBindImageMemorySwapchainInfoKHR { + VkStructureType sType; + const void* pNext; + VkSwapchainKHR swapchain; + uint32_t imageIndex; +} VkBindImageMemorySwapchainInfoKHR; + +typedef struct VkAcquireNextImageInfoKHR { + VkStructureType sType; + const void* pNext; + VkSwapchainKHR swapchain; + uint64_t timeout; + VkSemaphore semaphore; + VkFence fence; + uint32_t deviceMask; +} VkAcquireNextImageInfoKHR; + +typedef struct VkDeviceGroupPresentCapabilitiesKHR { + VkStructureType sType; + void* pNext; + uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE]; + VkDeviceGroupPresentModeFlagsKHR modes; +} VkDeviceGroupPresentCapabilitiesKHR; + +typedef struct VkDeviceGroupPresentInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const uint32_t* pDeviceMasks; + VkDeviceGroupPresentModeFlagBitsKHR mode; +} VkDeviceGroupPresentInfoKHR; + +typedef struct VkDeviceGroupSwapchainCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceGroupPresentModeFlagsKHR modes; +} VkDeviceGroupSwapchainCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain); +typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages); +typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex); +typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects); +typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR( + VkDevice device, + const VkSwapchainCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSwapchainKHR* pSwapchain); + +VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR( + VkDevice device, + VkSwapchainKHR swapchain, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR( + VkDevice device, + VkSwapchainKHR swapchain, + uint32_t* pSwapchainImageCount, + VkImage* pSwapchainImages); + +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR( + VkDevice device, + VkSwapchainKHR swapchain, + uint64_t timeout, + VkSemaphore semaphore, + VkFence fence, + uint32_t* pImageIndex); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR( + VkQueue queue, + const VkPresentInfoKHR* pPresentInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHR( + VkDevice device, + VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR( + VkDevice device, + VkSurfaceKHR surface, + VkDeviceGroupPresentModeFlagsKHR* pModes); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR( + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + uint32_t* pRectCount, + VkRect2D* pRects); + +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR( + VkDevice device, + const VkAcquireNextImageInfoKHR* pAcquireInfo, + uint32_t* pImageIndex); +#endif + + +#define VK_KHR_display 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR) +#define VK_KHR_DISPLAY_SPEC_VERSION 23 +#define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display" +typedef VkFlags VkDisplayModeCreateFlagsKHR; + +typedef enum VkDisplayPlaneAlphaFlagBitsKHR { + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002, + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004, + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008, + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkDisplayPlaneAlphaFlagBitsKHR; +typedef VkFlags VkDisplayPlaneAlphaFlagsKHR; +typedef VkFlags VkDisplaySurfaceCreateFlagsKHR; +typedef struct VkDisplayModeParametersKHR { + VkExtent2D visibleRegion; + uint32_t refreshRate; +} VkDisplayModeParametersKHR; + +typedef struct VkDisplayModeCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkDisplayModeCreateFlagsKHR flags; + VkDisplayModeParametersKHR parameters; +} VkDisplayModeCreateInfoKHR; + +typedef struct VkDisplayModePropertiesKHR { + VkDisplayModeKHR displayMode; + VkDisplayModeParametersKHR parameters; +} VkDisplayModePropertiesKHR; + +typedef struct VkDisplayPlaneCapabilitiesKHR { + VkDisplayPlaneAlphaFlagsKHR supportedAlpha; + VkOffset2D minSrcPosition; + VkOffset2D maxSrcPosition; + VkExtent2D minSrcExtent; + VkExtent2D maxSrcExtent; + VkOffset2D minDstPosition; + VkOffset2D maxDstPosition; + VkExtent2D minDstExtent; + VkExtent2D maxDstExtent; +} VkDisplayPlaneCapabilitiesKHR; + +typedef struct VkDisplayPlanePropertiesKHR { + VkDisplayKHR currentDisplay; + uint32_t currentStackIndex; +} VkDisplayPlanePropertiesKHR; + +typedef struct VkDisplayPropertiesKHR { + VkDisplayKHR display; + const char* displayName; + VkExtent2D physicalDimensions; + VkExtent2D physicalResolution; + VkSurfaceTransformFlagsKHR supportedTransforms; + VkBool32 planeReorderPossible; + VkBool32 persistentContent; +} VkDisplayPropertiesKHR; + +typedef struct VkDisplaySurfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkDisplaySurfaceCreateFlagsKHR flags; + VkDisplayModeKHR displayMode; + uint32_t planeIndex; + uint32_t planeStackIndex; + VkSurfaceTransformFlagBitsKHR transform; + float globalAlpha; + VkDisplayPlaneAlphaFlagBitsKHR alphaMode; + VkExtent2D imageExtent; +} VkDisplaySurfaceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkDisplayPropertiesKHR* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkDisplayPlanePropertiesKHR* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR( + VkPhysicalDevice physicalDevice, + uint32_t planeIndex, + uint32_t* pDisplayCount, + VkDisplayKHR* pDisplays); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR( + VkPhysicalDevice physicalDevice, + VkDisplayKHR display, + uint32_t* pPropertyCount, + VkDisplayModePropertiesKHR* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR( + VkPhysicalDevice physicalDevice, + VkDisplayKHR display, + const VkDisplayModeCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDisplayModeKHR* pMode); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR( + VkPhysicalDevice physicalDevice, + VkDisplayModeKHR mode, + uint32_t planeIndex, + VkDisplayPlaneCapabilitiesKHR* pCapabilities); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR( + VkInstance instance, + const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + + +#define VK_KHR_display_swapchain 1 +#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 10 +#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain" +typedef struct VkDisplayPresentInfoKHR { + VkStructureType sType; + const void* pNext; + VkRect2D srcRect; + VkRect2D dstRect; + VkBool32 persistent; +} VkDisplayPresentInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR( + VkDevice device, + uint32_t swapchainCount, + const VkSwapchainCreateInfoKHR* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkSwapchainKHR* pSwapchains); +#endif + + +#define VK_KHR_sampler_mirror_clamp_to_edge 1 +#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 3 +#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge" + + +#define VK_KHR_dynamic_rendering 1 +#define VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION 1 +#define VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME "VK_KHR_dynamic_rendering" +typedef VkRenderingFlags VkRenderingFlagsKHR; + +typedef VkRenderingFlagBits VkRenderingFlagBitsKHR; + +typedef VkRenderingInfo VkRenderingInfoKHR; + +typedef VkRenderingAttachmentInfo VkRenderingAttachmentInfoKHR; + +typedef VkPipelineRenderingCreateInfo VkPipelineRenderingCreateInfoKHR; + +typedef VkPhysicalDeviceDynamicRenderingFeatures VkPhysicalDeviceDynamicRenderingFeaturesKHR; + +typedef VkCommandBufferInheritanceRenderingInfo VkCommandBufferInheritanceRenderingInfoKHR; + +typedef struct VkRenderingFragmentShadingRateAttachmentInfoKHR { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkImageLayout imageLayout; + VkExtent2D shadingRateAttachmentTexelSize; +} VkRenderingFragmentShadingRateAttachmentInfoKHR; + +typedef struct VkRenderingFragmentDensityMapAttachmentInfoEXT { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkImageLayout imageLayout; +} VkRenderingFragmentDensityMapAttachmentInfoEXT; + +typedef struct VkAttachmentSampleCountInfoAMD { + VkStructureType sType; + const void* pNext; + uint32_t colorAttachmentCount; + const VkSampleCountFlagBits* pColorAttachmentSamples; + VkSampleCountFlagBits depthStencilAttachmentSamples; +} VkAttachmentSampleCountInfoAMD; + +typedef VkAttachmentSampleCountInfoAMD VkAttachmentSampleCountInfoNV; + +typedef struct VkMultiviewPerViewAttributesInfoNVX { + VkStructureType sType; + const void* pNext; + VkBool32 perViewAttributes; + VkBool32 perViewAttributesPositionXOnly; +} VkMultiviewPerViewAttributesInfoNVX; + +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderingKHR)(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderingKHR)(VkCommandBuffer commandBuffer); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderingKHR( + VkCommandBuffer commandBuffer, + const VkRenderingInfo* pRenderingInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderingKHR( + VkCommandBuffer commandBuffer); +#endif + + +#define VK_KHR_multiview 1 +#define VK_KHR_MULTIVIEW_SPEC_VERSION 1 +#define VK_KHR_MULTIVIEW_EXTENSION_NAME "VK_KHR_multiview" +typedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR; + +typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR; + +typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesKHR; + + + +#define VK_KHR_get_physical_device_properties2 1 +#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 2 +#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2" +typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR; + +typedef VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2KHR; + +typedef VkFormatProperties2 VkFormatProperties2KHR; + +typedef VkImageFormatProperties2 VkImageFormatProperties2KHR; + +typedef VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2KHR; + +typedef VkQueueFamilyProperties2 VkQueueFamilyProperties2KHR; + +typedef VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2KHR; + +typedef VkSparseImageFormatProperties2 VkSparseImageFormatProperties2KHR; + +typedef VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2KHR; + +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceFeatures2* pFeatures); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceProperties2* pProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties2* pFormatProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, + VkImageFormatProperties2* pImageFormatProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR( + VkPhysicalDevice physicalDevice, + uint32_t* pQueueFamilyPropertyCount, + VkQueueFamilyProperties2* pQueueFamilyProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceMemoryProperties2* pMemoryProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, + uint32_t* pPropertyCount, + VkSparseImageFormatProperties2* pProperties); +#endif + + +#define VK_KHR_device_group 1 +#define VK_KHR_DEVICE_GROUP_SPEC_VERSION 4 +#define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group" +typedef VkPeerMemoryFeatureFlags VkPeerMemoryFeatureFlagsKHR; + +typedef VkPeerMemoryFeatureFlagBits VkPeerMemoryFeatureFlagBitsKHR; + +typedef VkMemoryAllocateFlags VkMemoryAllocateFlagsKHR; + +typedef VkMemoryAllocateFlagBits VkMemoryAllocateFlagBitsKHR; + +typedef VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoKHR; + +typedef VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoKHR; + +typedef VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfoKHR; + +typedef VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfoKHR; + +typedef VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfoKHR; + +typedef VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoKHR; + +typedef VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); +typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHR)(VkCommandBuffer commandBuffer, uint32_t deviceMask); +typedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHR)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHR( + VkDevice device, + uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHR( + VkCommandBuffer commandBuffer, + uint32_t deviceMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHR( + VkCommandBuffer commandBuffer, + uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ); +#endif + + +#define VK_KHR_shader_draw_parameters 1 +#define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1 +#define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters" + + +#define VK_KHR_maintenance1 1 +#define VK_KHR_MAINTENANCE_1_SPEC_VERSION 2 +#define VK_KHR_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_maintenance1" +#define VK_KHR_MAINTENANCE1_SPEC_VERSION VK_KHR_MAINTENANCE_1_SPEC_VERSION +#define VK_KHR_MAINTENANCE1_EXTENSION_NAME VK_KHR_MAINTENANCE_1_EXTENSION_NAME +typedef VkCommandPoolTrimFlags VkCommandPoolTrimFlagsKHR; + +typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR( + VkDevice device, + VkCommandPool commandPool, + VkCommandPoolTrimFlags flags); +#endif + + +#define VK_KHR_device_group_creation 1 +#define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1 +#define VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHR_device_group_creation" +#define VK_MAX_DEVICE_GROUP_SIZE_KHR VK_MAX_DEVICE_GROUP_SIZE +typedef VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesKHR; + +typedef VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHR)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHR( + VkInstance instance, + uint32_t* pPhysicalDeviceGroupCount, + VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); +#endif + + +#define VK_KHR_external_memory_capabilities 1 +#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_memory_capabilities" +#define VK_LUID_SIZE_KHR VK_LUID_SIZE +typedef VkExternalMemoryHandleTypeFlags VkExternalMemoryHandleTypeFlagsKHR; + +typedef VkExternalMemoryHandleTypeFlagBits VkExternalMemoryHandleTypeFlagBitsKHR; + +typedef VkExternalMemoryFeatureFlags VkExternalMemoryFeatureFlagsKHR; + +typedef VkExternalMemoryFeatureFlagBits VkExternalMemoryFeatureFlagBitsKHR; + +typedef VkExternalMemoryProperties VkExternalMemoryPropertiesKHR; + +typedef VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoKHR; + +typedef VkExternalImageFormatProperties VkExternalImageFormatPropertiesKHR; + +typedef VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfoKHR; + +typedef VkExternalBufferProperties VkExternalBufferPropertiesKHR; + +typedef VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesKHR; + +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, + VkExternalBufferProperties* pExternalBufferProperties); +#endif + + +#define VK_KHR_external_memory 1 +#define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory" +#define VK_QUEUE_FAMILY_EXTERNAL_KHR VK_QUEUE_FAMILY_EXTERNAL +typedef VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoKHR; + +typedef VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoKHR; + +typedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR; + + + +#define VK_KHR_external_memory_fd 1 +#define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd" +typedef struct VkImportMemoryFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagBits handleType; + int fd; +} VkImportMemoryFdInfoKHR; + +typedef struct VkMemoryFdPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; +} VkMemoryFdPropertiesKHR; + +typedef struct VkMemoryGetFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkMemoryGetFdInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd); +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR( + VkDevice device, + const VkMemoryGetFdInfoKHR* pGetFdInfo, + int* pFd); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + int fd, + VkMemoryFdPropertiesKHR* pMemoryFdProperties); +#endif -typedef enum VkSurfaceTransformFlagBitsKHR { - VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001, - VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002, - VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004, - VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080, - VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100, - VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkSurfaceTransformFlagBitsKHR; -typedef VkFlags VkSurfaceTransformFlagsKHR; -typedef enum VkCompositeAlphaFlagBitsKHR { - VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, - VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002, - VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004, - VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008, - VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkCompositeAlphaFlagBitsKHR; -typedef VkFlags VkCompositeAlphaFlagsKHR; -typedef struct VkSurfaceCapabilitiesKHR { - uint32_t minImageCount; - uint32_t maxImageCount; - VkExtent2D currentExtent; - VkExtent2D minImageExtent; - VkExtent2D maxImageExtent; - uint32_t maxImageArrayLayers; - VkSurfaceTransformFlagsKHR supportedTransforms; - VkSurfaceTransformFlagBitsKHR currentTransform; - VkCompositeAlphaFlagsKHR supportedCompositeAlpha; - VkImageUsageFlags supportedUsageFlags; -} VkSurfaceCapabilitiesKHR; +#define VK_KHR_external_semaphore_capabilities 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_semaphore_capabilities" +typedef VkExternalSemaphoreHandleTypeFlags VkExternalSemaphoreHandleTypeFlagsKHR; + +typedef VkExternalSemaphoreHandleTypeFlagBits VkExternalSemaphoreHandleTypeFlagBitsKHR; + +typedef VkExternalSemaphoreFeatureFlags VkExternalSemaphoreFeatureFlagsKHR; + +typedef VkExternalSemaphoreFeatureFlagBits VkExternalSemaphoreFeatureFlagBitsKHR; + +typedef VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoKHR; + +typedef VkExternalSemaphoreProperties VkExternalSemaphorePropertiesKHR; + +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, + VkExternalSemaphoreProperties* pExternalSemaphoreProperties); +#endif + + +#define VK_KHR_external_semaphore 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore" +typedef VkSemaphoreImportFlags VkSemaphoreImportFlagsKHR; + +typedef VkSemaphoreImportFlagBits VkSemaphoreImportFlagBitsKHR; + +typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR; + + + +#define VK_KHR_external_semaphore_fd 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd" +typedef struct VkImportSemaphoreFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkSemaphoreImportFlags flags; + VkExternalSemaphoreHandleTypeFlagBits handleType; + int fd; +} VkImportSemaphoreFdInfoKHR; + +typedef struct VkSemaphoreGetFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkExternalSemaphoreHandleTypeFlagBits handleType; +} VkSemaphoreGetFdInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR( + VkDevice device, + const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR( + VkDevice device, + const VkSemaphoreGetFdInfoKHR* pGetFdInfo, + int* pFd); +#endif + + +#define VK_KHR_push_descriptor 1 +#define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2 +#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor" +typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t maxPushDescriptors; +} VkPhysicalDevicePushDescriptorPropertiesKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites); +typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t set, + uint32_t descriptorWriteCount, + const VkWriteDescriptorSet* pDescriptorWrites); + +VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR( + VkCommandBuffer commandBuffer, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + VkPipelineLayout layout, + uint32_t set, + const void* pData); +#endif + + +#define VK_KHR_shader_float16_int8 1 +#define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1 +#define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8" +typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR; + +typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR; + + + +#define VK_KHR_16bit_storage 1 +#define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1 +#define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage" +typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR; + + + +#define VK_KHR_incremental_present 1 +#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 2 +#define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present" +typedef struct VkRectLayerKHR { + VkOffset2D offset; + VkExtent2D extent; + uint32_t layer; +} VkRectLayerKHR; + +typedef struct VkPresentRegionKHR { + uint32_t rectangleCount; + const VkRectLayerKHR* pRectangles; +} VkPresentRegionKHR; + +typedef struct VkPresentRegionsKHR { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const VkPresentRegionKHR* pRegions; +} VkPresentRegionsKHR; + + + +#define VK_KHR_descriptor_update_template 1 +typedef VkDescriptorUpdateTemplate VkDescriptorUpdateTemplateKHR; + +#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1 +#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template" +typedef VkDescriptorUpdateTemplateType VkDescriptorUpdateTemplateTypeKHR; + +typedef VkDescriptorUpdateTemplateCreateFlags VkDescriptorUpdateTemplateCreateFlagsKHR; + +typedef VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntryKHR; + +typedef VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); +typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR( + VkDevice device, + const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); + +VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplateKHR( + VkDevice device, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR( + VkDevice device, + VkDescriptorSet descriptorSet, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + const void* pData); +#endif + + +#define VK_KHR_imageless_framebuffer 1 +#define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1 +#define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer" +typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR; + +typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR; + +typedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR; + +typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR; + + + +#define VK_KHR_create_renderpass2 1 +#define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1 +#define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2" +typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR; + +typedef VkAttachmentDescription2 VkAttachmentDescription2KHR; + +typedef VkAttachmentReference2 VkAttachmentReference2KHR; + +typedef VkSubpassDescription2 VkSubpassDescription2KHR; + +typedef VkSubpassDependency2 VkSubpassDependency2KHR; + +typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR; + +typedef VkSubpassEndInfo VkSubpassEndInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo); +typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR( + VkDevice device, + const VkRenderPassCreateInfo2* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkRenderPass* pRenderPass); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR( + VkCommandBuffer commandBuffer, + const VkRenderPassBeginInfo* pRenderPassBegin, + const VkSubpassBeginInfo* pSubpassBeginInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR( + VkCommandBuffer commandBuffer, + const VkSubpassBeginInfo* pSubpassBeginInfo, + const VkSubpassEndInfo* pSubpassEndInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR( + VkCommandBuffer commandBuffer, + const VkSubpassEndInfo* pSubpassEndInfo); +#endif -typedef struct VkSurfaceFormatKHR { - VkFormat format; - VkColorSpaceKHR colorSpace; -} VkSurfaceFormatKHR; -typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes); +#define VK_KHR_shared_presentable_image 1 +#define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1 +#define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image" +typedef struct VkSharedPresentSurfaceCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkImageUsageFlags sharedPresentSupportedUsageFlags; +} VkSharedPresentSurfaceCapabilitiesKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR( - VkInstance instance, - VkSurfaceKHR surface, - const VkAllocationCallbacks* pAllocator); +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR( + VkDevice device, + VkSwapchainKHR swapchain); +#endif -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex, - VkSurfaceKHR surface, - VkBool32* pSupported); -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR( - VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); +#define VK_KHR_external_fence_capabilities 1 +#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities" +typedef VkExternalFenceHandleTypeFlags VkExternalFenceHandleTypeFlagsKHR; -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR( - VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - uint32_t* pSurfaceFormatCount, - VkSurfaceFormatKHR* pSurfaceFormats); +typedef VkExternalFenceHandleTypeFlagBits VkExternalFenceHandleTypeFlagBitsKHR; -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR( +typedef VkExternalFenceFeatureFlags VkExternalFenceFeatureFlagsKHR; + +typedef VkExternalFenceFeatureFlagBits VkExternalFenceFeatureFlagBitsKHR; + +typedef VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoKHR; + +typedef VkExternalFenceProperties VkExternalFencePropertiesKHR; + +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFencePropertiesKHR( VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - uint32_t* pPresentModeCount, - VkPresentModeKHR* pPresentModes); + const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, + VkExternalFenceProperties* pExternalFenceProperties); #endif -#define VK_KHR_swapchain 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR) -#define VK_KHR_SWAPCHAIN_SPEC_VERSION 70 -#define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain" +#define VK_KHR_external_fence 1 +#define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence" +typedef VkFenceImportFlags VkFenceImportFlagsKHR; -typedef enum VkSwapchainCreateFlagBitsKHR { - VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001, - VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002, - VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0x00000004, - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkSwapchainCreateFlagBitsKHR; -typedef VkFlags VkSwapchainCreateFlagsKHR; +typedef VkFenceImportFlagBits VkFenceImportFlagBitsKHR; -typedef enum VkDeviceGroupPresentModeFlagBitsKHR { - VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001, - VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002, - VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004, - VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008, - VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkDeviceGroupPresentModeFlagBitsKHR; -typedef VkFlags VkDeviceGroupPresentModeFlagsKHR; -typedef struct VkSwapchainCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkSwapchainCreateFlagsKHR flags; - VkSurfaceKHR surface; - uint32_t minImageCount; - VkFormat imageFormat; - VkColorSpaceKHR imageColorSpace; - VkExtent2D imageExtent; - uint32_t imageArrayLayers; - VkImageUsageFlags imageUsage; - VkSharingMode imageSharingMode; - uint32_t queueFamilyIndexCount; - const uint32_t* pQueueFamilyIndices; - VkSurfaceTransformFlagBitsKHR preTransform; - VkCompositeAlphaFlagBitsKHR compositeAlpha; - VkPresentModeKHR presentMode; - VkBool32 clipped; - VkSwapchainKHR oldSwapchain; -} VkSwapchainCreateInfoKHR; +typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR; -typedef struct VkPresentInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t waitSemaphoreCount; - const VkSemaphore* pWaitSemaphores; - uint32_t swapchainCount; - const VkSwapchainKHR* pSwapchains; - const uint32_t* pImageIndices; - VkResult* pResults; -} VkPresentInfoKHR; -typedef struct VkImageSwapchainCreateInfoKHR { + +#define VK_KHR_external_fence_fd 1 +#define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd" +typedef struct VkImportFenceFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkFence fence; + VkFenceImportFlags flags; + VkExternalFenceHandleTypeFlagBits handleType; + int fd; +} VkImportFenceFdInfoKHR; + +typedef struct VkFenceGetFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkFence fence; + VkExternalFenceHandleTypeFlagBits handleType; +} VkFenceGetFdInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceFdKHR( + VkDevice device, + const VkImportFenceFdInfoKHR* pImportFenceFdInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR( + VkDevice device, + const VkFenceGetFdInfoKHR* pGetFdInfo, + int* pFd); +#endif + + +#define VK_KHR_performance_query 1 +#define VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION 1 +#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query" + +typedef enum VkPerformanceCounterUnitKHR { + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0, + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1, + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2, + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3, + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4, + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5, + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6, + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7, + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8, + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9, + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10, + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPerformanceCounterUnitKHR; + +typedef enum VkPerformanceCounterScopeKHR { + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0, + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1, + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2, + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR, + VK_QUERY_SCOPE_RENDER_PASS_KHR = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR, + VK_QUERY_SCOPE_COMMAND_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR, + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPerformanceCounterScopeKHR; + +typedef enum VkPerformanceCounterStorageKHR { + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0, + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1, + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2, + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3, + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4, + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5, + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPerformanceCounterStorageKHR; + +typedef enum VkPerformanceCounterDescriptionFlagBitsKHR { + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = 0x00000001, + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = 0x00000002, + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR, + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR, + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPerformanceCounterDescriptionFlagBitsKHR; +typedef VkFlags VkPerformanceCounterDescriptionFlagsKHR; + +typedef enum VkAcquireProfilingLockFlagBitsKHR { + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAcquireProfilingLockFlagBitsKHR; +typedef VkFlags VkAcquireProfilingLockFlagsKHR; +typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR { VkStructureType sType; - const void* pNext; - VkSwapchainKHR swapchain; -} VkImageSwapchainCreateInfoKHR; + void* pNext; + VkBool32 performanceCounterQueryPools; + VkBool32 performanceCounterMultipleQueryPools; +} VkPhysicalDevicePerformanceQueryFeaturesKHR; -typedef struct VkBindImageMemorySwapchainInfoKHR { +typedef struct VkPhysicalDevicePerformanceQueryPropertiesKHR { VkStructureType sType; - const void* pNext; - VkSwapchainKHR swapchain; - uint32_t imageIndex; -} VkBindImageMemorySwapchainInfoKHR; + void* pNext; + VkBool32 allowCommandBufferQueryCopies; +} VkPhysicalDevicePerformanceQueryPropertiesKHR; -typedef struct VkAcquireNextImageInfoKHR { +typedef struct VkPerformanceCounterKHR { + VkStructureType sType; + void* pNext; + VkPerformanceCounterUnitKHR unit; + VkPerformanceCounterScopeKHR scope; + VkPerformanceCounterStorageKHR storage; + uint8_t uuid[VK_UUID_SIZE]; +} VkPerformanceCounterKHR; + +typedef struct VkPerformanceCounterDescriptionKHR { + VkStructureType sType; + void* pNext; + VkPerformanceCounterDescriptionFlagsKHR flags; + char name[VK_MAX_DESCRIPTION_SIZE]; + char category[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; +} VkPerformanceCounterDescriptionKHR; + +typedef struct VkQueryPoolPerformanceCreateInfoKHR { VkStructureType sType; const void* pNext; - VkSwapchainKHR swapchain; - uint64_t timeout; - VkSemaphore semaphore; - VkFence fence; - uint32_t deviceMask; -} VkAcquireNextImageInfoKHR; + uint32_t queueFamilyIndex; + uint32_t counterIndexCount; + const uint32_t* pCounterIndices; +} VkQueryPoolPerformanceCreateInfoKHR; + +typedef union VkPerformanceCounterResultKHR { + int32_t int32; + int64_t int64; + uint32_t uint32; + uint64_t uint64; + float float32; + double float64; +} VkPerformanceCounterResultKHR; + +typedef struct VkAcquireProfilingLockInfoKHR { + VkStructureType sType; + const void* pNext; + VkAcquireProfilingLockFlagsKHR flags; + uint64_t timeout; +} VkAcquireProfilingLockInfoKHR; -typedef struct VkDeviceGroupPresentCapabilitiesKHR { - VkStructureType sType; - const void* pNext; - uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE]; - VkDeviceGroupPresentModeFlagsKHR modes; -} VkDeviceGroupPresentCapabilitiesKHR; +typedef struct VkPerformanceQuerySubmitInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t counterPassIndex; +} VkPerformanceQuerySubmitInfoKHR; -typedef struct VkDeviceGroupPresentInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t swapchainCount; - const uint32_t* pDeviceMasks; - VkDeviceGroupPresentModeFlagBitsKHR mode; -} VkDeviceGroupPresentInfoKHR; +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)(VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses); +typedef VkResult (VKAPI_PTR *PFN_vkAcquireProfilingLockKHR)(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkReleaseProfilingLockKHR)(VkDevice device); -typedef struct VkDeviceGroupSwapchainCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkDeviceGroupPresentModeFlagsKHR modes; -} VkDeviceGroupSwapchainCreateInfoKHR; +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + uint32_t* pCounterCount, + VkPerformanceCounterKHR* pCounters, + VkPerformanceCounterDescriptionKHR* pCounterDescriptions); -typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain); -typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages); -typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex); -typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo); -typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities); -typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects); -typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex); +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( + VkPhysicalDevice physicalDevice, + const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, + uint32_t* pNumPasses); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR( +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireProfilingLockKHR( VkDevice device, - const VkSwapchainCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSwapchainKHR* pSwapchain); + const VkAcquireProfilingLockInfoKHR* pInfo); -VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR( - VkDevice device, - VkSwapchainKHR swapchain, - const VkAllocationCallbacks* pAllocator); +VKAPI_ATTR void VKAPI_CALL vkReleaseProfilingLockKHR( + VkDevice device); +#endif -VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR( - VkDevice device, - VkSwapchainKHR swapchain, - uint32_t* pSwapchainImageCount, - VkImage* pSwapchainImages); -VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR( - VkDevice device, - VkSwapchainKHR swapchain, - uint64_t timeout, - VkSemaphore semaphore, - VkFence fence, - uint32_t* pImageIndex); +#define VK_KHR_maintenance2 1 +#define VK_KHR_MAINTENANCE_2_SPEC_VERSION 1 +#define VK_KHR_MAINTENANCE_2_EXTENSION_NAME "VK_KHR_maintenance2" +#define VK_KHR_MAINTENANCE2_SPEC_VERSION VK_KHR_MAINTENANCE_2_SPEC_VERSION +#define VK_KHR_MAINTENANCE2_EXTENSION_NAME VK_KHR_MAINTENANCE_2_EXTENSION_NAME +typedef VkPointClippingBehavior VkPointClippingBehaviorKHR; + +typedef VkTessellationDomainOrigin VkTessellationDomainOriginKHR; + +typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR; + +typedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR; + +typedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR; + +typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR; + +typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoKHR; + + + +#define VK_KHR_get_surface_capabilities2 1 +#define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1 +#define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2" +typedef struct VkPhysicalDeviceSurfaceInfo2KHR { + VkStructureType sType; + const void* pNext; + VkSurfaceKHR surface; +} VkPhysicalDeviceSurfaceInfo2KHR; -VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR( - VkQueue queue, - const VkPresentInfoKHR* pPresentInfo); +typedef struct VkSurfaceCapabilities2KHR { + VkStructureType sType; + void* pNext; + VkSurfaceCapabilitiesKHR surfaceCapabilities; +} VkSurfaceCapabilities2KHR; -VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHR( - VkDevice device, - VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities); +typedef struct VkSurfaceFormat2KHR { + VkStructureType sType; + void* pNext; + VkSurfaceFormatKHR surfaceFormat; +} VkSurfaceFormat2KHR; -VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR( - VkDevice device, - VkSurfaceKHR surface, - VkDeviceGroupPresentModeFlagsKHR* pModes); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats); -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR( +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2KHR( VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - uint32_t* pRectCount, - VkRect2D* pRects); + const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, + VkSurfaceCapabilities2KHR* pSurfaceCapabilities); -VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR( - VkDevice device, - const VkAcquireNextImageInfoKHR* pAcquireInfo, - uint32_t* pImageIndex); +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, + uint32_t* pSurfaceFormatCount, + VkSurfaceFormat2KHR* pSurfaceFormats); #endif -#define VK_KHR_display 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR) -#define VK_KHR_DISPLAY_SPEC_VERSION 23 -#define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display" +#define VK_KHR_variable_pointers 1 +#define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1 +#define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers" +typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeaturesKHR; -typedef enum VkDisplayPlaneAlphaFlagBitsKHR { - VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, - VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002, - VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004, - VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008, - VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkDisplayPlaneAlphaFlagBitsKHR; -typedef VkFlags VkDisplayPlaneAlphaFlagsKHR; -typedef VkFlags VkDisplayModeCreateFlagsKHR; -typedef VkFlags VkDisplaySurfaceCreateFlagsKHR; -typedef struct VkDisplayPropertiesKHR { - VkDisplayKHR display; - const char* displayName; - VkExtent2D physicalDimensions; - VkExtent2D physicalResolution; - VkSurfaceTransformFlagsKHR supportedTransforms; - VkBool32 planeReorderPossible; - VkBool32 persistentContent; -} VkDisplayPropertiesKHR; +typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointersFeaturesKHR; -typedef struct VkDisplayModeParametersKHR { - VkExtent2D visibleRegion; - uint32_t refreshRate; -} VkDisplayModeParametersKHR; -typedef struct VkDisplayModePropertiesKHR { - VkDisplayModeKHR displayMode; - VkDisplayModeParametersKHR parameters; -} VkDisplayModePropertiesKHR; -typedef struct VkDisplayModeCreateInfoKHR { +#define VK_KHR_get_display_properties2 1 +#define VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION 1 +#define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2" +typedef struct VkDisplayProperties2KHR { + VkStructureType sType; + void* pNext; + VkDisplayPropertiesKHR displayProperties; +} VkDisplayProperties2KHR; + +typedef struct VkDisplayPlaneProperties2KHR { VkStructureType sType; - const void* pNext; - VkDisplayModeCreateFlagsKHR flags; - VkDisplayModeParametersKHR parameters; -} VkDisplayModeCreateInfoKHR; + void* pNext; + VkDisplayPlanePropertiesKHR displayPlaneProperties; +} VkDisplayPlaneProperties2KHR; -typedef struct VkDisplayPlaneCapabilitiesKHR { - VkDisplayPlaneAlphaFlagsKHR supportedAlpha; - VkOffset2D minSrcPosition; - VkOffset2D maxSrcPosition; - VkExtent2D minSrcExtent; - VkExtent2D maxSrcExtent; - VkOffset2D minDstPosition; - VkOffset2D maxDstPosition; - VkExtent2D minDstExtent; - VkExtent2D maxDstExtent; -} VkDisplayPlaneCapabilitiesKHR; +typedef struct VkDisplayModeProperties2KHR { + VkStructureType sType; + void* pNext; + VkDisplayModePropertiesKHR displayModeProperties; +} VkDisplayModeProperties2KHR; -typedef struct VkDisplayPlanePropertiesKHR { - VkDisplayKHR currentDisplay; - uint32_t currentStackIndex; -} VkDisplayPlanePropertiesKHR; +typedef struct VkDisplayPlaneInfo2KHR { + VkStructureType sType; + const void* pNext; + VkDisplayModeKHR mode; + uint32_t planeIndex; +} VkDisplayPlaneInfo2KHR; -typedef struct VkDisplaySurfaceCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkDisplaySurfaceCreateFlagsKHR flags; - VkDisplayModeKHR displayMode; - uint32_t planeIndex; - uint32_t planeStackIndex; - VkSurfaceTransformFlagBitsKHR transform; - float globalAlpha; - VkDisplayPlaneAlphaFlagBitsKHR alphaMode; - VkExtent2D imageExtent; -} VkDisplaySurfaceCreateInfoKHR; +typedef struct VkDisplayPlaneCapabilities2KHR { + VkStructureType sType; + void* pNext; + VkDisplayPlaneCapabilitiesKHR capabilities; +} VkDisplayPlaneCapabilities2KHR; -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays); -typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode); -typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities); -typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModeProperties2KHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR( +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, - VkDisplayPropertiesKHR* pProperties); + VkDisplayProperties2KHR* pProperties); -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR( +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlaneProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, - VkDisplayPlanePropertiesKHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR( - VkPhysicalDevice physicalDevice, - uint32_t planeIndex, - uint32_t* pDisplayCount, - VkDisplayKHR* pDisplays); + VkDisplayPlaneProperties2KHR* pProperties); -VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR( +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModeProperties2KHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, - VkDisplayModePropertiesKHR* pProperties); + VkDisplayModeProperties2KHR* pProperties); -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR( +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilities2KHR( VkPhysicalDevice physicalDevice, - VkDisplayKHR display, - const VkDisplayModeCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDisplayModeKHR* pMode); + const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, + VkDisplayPlaneCapabilities2KHR* pCapabilities); +#endif -VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR( - VkPhysicalDevice physicalDevice, - VkDisplayModeKHR mode, - uint32_t planeIndex, - VkDisplayPlaneCapabilitiesKHR* pCapabilities); -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR( - VkInstance instance, - const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); +#define VK_KHR_dedicated_allocation 1 +#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3 +#define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation" +typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR; + +typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR; + + + +#define VK_KHR_storage_buffer_storage_class 1 +#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1 +#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class" + + +#define VK_KHR_relaxed_block_layout 1 +#define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1 +#define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout" + + +#define VK_KHR_get_memory_requirements2 1 +#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1 +#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2" +typedef VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2KHR; + +typedef VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2KHR; + +typedef VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2KHR; + +typedef VkMemoryRequirements2 VkMemoryRequirements2KHR; + +typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR; + +typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2KHR( + VkDevice device, + const VkImageMemoryRequirementsInfo2* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2KHR( + VkDevice device, + const VkBufferMemoryRequirementsInfo2* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR( + VkDevice device, + const VkImageSparseMemoryRequirementsInfo2* pInfo, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); #endif -#define VK_KHR_display_swapchain 1 -#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 10 -#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain" -typedef struct VkDisplayPresentInfoKHR { - VkStructureType sType; - const void* pNext; - VkRect2D srcRect; - VkRect2D dstRect; - VkBool32 persistent; -} VkDisplayPresentInfoKHR; +#define VK_KHR_image_format_list 1 +#define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1 +#define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list" +typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR; + + + +#define VK_KHR_sampler_ycbcr_conversion 1 +typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR; + +#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 14 +#define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion" +typedef VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversionKHR; + +typedef VkSamplerYcbcrRange VkSamplerYcbcrRangeKHR; -typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains); +typedef VkChromaLocation VkChromaLocationKHR; -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR( - VkDevice device, - uint32_t swapchainCount, - const VkSwapchainCreateInfoKHR* pCreateInfos, - const VkAllocationCallbacks* pAllocator, - VkSwapchainKHR* pSwapchains); -#endif +typedef VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoKHR; +typedef VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoKHR; -#define VK_KHR_sampler_mirror_clamp_to_edge 1 -#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 3 -#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge" +typedef VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoKHR; +typedef VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfoKHR; -#define VK_KHR_multiview 1 -#define VK_KHR_MULTIVIEW_SPEC_VERSION 1 -#define VK_KHR_MULTIVIEW_EXTENSION_NAME "VK_KHR_multiview" -typedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR; +typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR; -typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR; +typedef VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesKHR; -typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesKHR; +typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversionKHR)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion); +typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversionKHR)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator); +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversionKHR( + VkDevice device, + const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSamplerYcbcrConversion* pYcbcrConversion); +VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR( + VkDevice device, + VkSamplerYcbcrConversion ycbcrConversion, + const VkAllocationCallbacks* pAllocator); +#endif -#define VK_KHR_get_physical_device_properties2 1 -#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 2 -#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2" -typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR; -typedef VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2KHR; +#define VK_KHR_bind_memory2 1 +#define VK_KHR_BIND_MEMORY_2_SPEC_VERSION 1 +#define VK_KHR_BIND_MEMORY_2_EXTENSION_NAME "VK_KHR_bind_memory2" +typedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR; -typedef VkFormatProperties2 VkFormatProperties2KHR; +typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR; -typedef VkImageFormatProperties2 VkImageFormatProperties2KHR; +typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos); +typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos); -typedef VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2KHR; +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2KHR( + VkDevice device, + uint32_t bindInfoCount, + const VkBindBufferMemoryInfo* pBindInfos); -typedef VkQueueFamilyProperties2 VkQueueFamilyProperties2KHR; +VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR( + VkDevice device, + uint32_t bindInfoCount, + const VkBindImageMemoryInfo* pBindInfos); +#endif -typedef VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2KHR; -typedef VkSparseImageFormatProperties2 VkSparseImageFormatProperties2KHR; +#define VK_KHR_maintenance3 1 +#define VK_KHR_MAINTENANCE_3_SPEC_VERSION 1 +#define VK_KHR_MAINTENANCE_3_EXTENSION_NAME "VK_KHR_maintenance3" +#define VK_KHR_MAINTENANCE3_SPEC_VERSION VK_KHR_MAINTENANCE_3_SPEC_VERSION +#define VK_KHR_MAINTENANCE3_EXTENSION_NAME VK_KHR_MAINTENANCE_3_EXTENSION_NAME +typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR; -typedef VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2KHR; +typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR; -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties); +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceFeatures2* pFeatures); +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupportKHR( + VkDevice device, + const VkDescriptorSetLayoutCreateInfo* pCreateInfo, + VkDescriptorSetLayoutSupport* pSupport); +#endif -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceProperties2* pProperties); -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR( - VkPhysicalDevice physicalDevice, - VkFormat format, - VkFormatProperties2* pFormatProperties); +#define VK_KHR_draw_indirect_count 1 +#define VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION 1 +#define VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_KHR_draw_indirect_count" +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, - VkImageFormatProperties2* pImageFormatProperties); +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountKHR( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR( - VkPhysicalDevice physicalDevice, - uint32_t* pQueueFamilyPropertyCount, - VkQueueFamilyProperties2* pQueueFamilyProperties); +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); +#endif -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceMemoryProperties2* pMemoryProperties); -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, - uint32_t* pPropertyCount, - VkSparseImageFormatProperties2* pProperties); -#endif +#define VK_KHR_shader_subgroup_extended_types 1 +#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION 1 +#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME "VK_KHR_shader_subgroup_extended_types" +typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR; -#define VK_KHR_device_group 1 -#define VK_KHR_DEVICE_GROUP_SPEC_VERSION 4 -#define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group" -typedef VkPeerMemoryFeatureFlags VkPeerMemoryFeatureFlagsKHR; -typedef VkPeerMemoryFeatureFlagBits VkPeerMemoryFeatureFlagBitsKHR; +#define VK_KHR_8bit_storage 1 +#define VK_KHR_8BIT_STORAGE_SPEC_VERSION 1 +#define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage" +typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR; -typedef VkMemoryAllocateFlags VkMemoryAllocateFlagsKHR; -typedef VkMemoryAllocateFlagBits VkMemoryAllocateFlagBitsKHR; -typedef VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoKHR; +#define VK_KHR_shader_atomic_int64 1 +#define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1 +#define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64" +typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR; -typedef VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoKHR; -typedef VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfoKHR; -typedef VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfoKHR; +#define VK_KHR_shader_clock 1 +#define VK_KHR_SHADER_CLOCK_SPEC_VERSION 1 +#define VK_KHR_SHADER_CLOCK_EXTENSION_NAME "VK_KHR_shader_clock" +typedef struct VkPhysicalDeviceShaderClockFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 shaderSubgroupClock; + VkBool32 shaderDeviceClock; +} VkPhysicalDeviceShaderClockFeaturesKHR; + + + +#define VK_KHR_global_priority 1 +#define VK_MAX_GLOBAL_PRIORITY_SIZE_KHR 16U +#define VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION 1 +#define VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME "VK_KHR_global_priority" + +typedef enum VkQueueGlobalPriorityKHR { + VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128, + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256, + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512, + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024, + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR, + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR, + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR, + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR, + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_KHR = 0x7FFFFFFF +} VkQueueGlobalPriorityKHR; +typedef struct VkDeviceQueueGlobalPriorityCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkQueueGlobalPriorityKHR globalPriority; +} VkDeviceQueueGlobalPriorityCreateInfoKHR; -typedef VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfoKHR; +typedef struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 globalPriorityQuery; +} VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR; -typedef VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoKHR; +typedef struct VkQueueFamilyGlobalPriorityPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t priorityCount; + VkQueueGlobalPriorityKHR priorities[VK_MAX_GLOBAL_PRIORITY_SIZE_KHR]; +} VkQueueFamilyGlobalPriorityPropertiesKHR; -typedef VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoKHR; -typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); -typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHR)(VkCommandBuffer commandBuffer, uint32_t deviceMask); -typedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHR)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHR( - VkDevice device, - uint32_t heapIndex, - uint32_t localDeviceIndex, - uint32_t remoteDeviceIndex, - VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); +#define VK_KHR_driver_properties 1 +#define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1 +#define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties" +#define VK_MAX_DRIVER_NAME_SIZE_KHR VK_MAX_DRIVER_NAME_SIZE +#define VK_MAX_DRIVER_INFO_SIZE_KHR VK_MAX_DRIVER_INFO_SIZE +typedef VkDriverId VkDriverIdKHR; -VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHR( - VkCommandBuffer commandBuffer, - uint32_t deviceMask); +typedef VkConformanceVersion VkConformanceVersionKHR; -VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHR( - VkCommandBuffer commandBuffer, - uint32_t baseGroupX, - uint32_t baseGroupY, - uint32_t baseGroupZ, - uint32_t groupCountX, - uint32_t groupCountY, - uint32_t groupCountZ); -#endif +typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR; -#define VK_KHR_shader_draw_parameters 1 -#define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1 -#define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters" +#define VK_KHR_shader_float_controls 1 +#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4 +#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls" +typedef VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR; -#define VK_KHR_maintenance1 1 -#define VK_KHR_MAINTENANCE1_SPEC_VERSION 2 -#define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1" -typedef VkCommandPoolTrimFlags VkCommandPoolTrimFlagsKHR; +typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR; -typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR( - VkDevice device, - VkCommandPool commandPool, - VkCommandPoolTrimFlags flags); -#endif +#define VK_KHR_depth_stencil_resolve 1 +#define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1 +#define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve" +typedef VkResolveModeFlagBits VkResolveModeFlagBitsKHR; -#define VK_KHR_device_group_creation 1 -#define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1 -#define VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHR_device_group_creation" -#define VK_MAX_DEVICE_GROUP_SIZE_KHR VK_MAX_DEVICE_GROUP_SIZE -typedef VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesKHR; +typedef VkResolveModeFlags VkResolveModeFlagsKHR; -typedef VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoKHR; +typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR; -typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHR)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); +typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR; -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHR( - VkInstance instance, - uint32_t* pPhysicalDeviceGroupCount, - VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); -#endif -#define VK_KHR_external_memory_capabilities 1 -#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_memory_capabilities" -#define VK_LUID_SIZE_KHR VK_LUID_SIZE -typedef VkExternalMemoryHandleTypeFlags VkExternalMemoryHandleTypeFlagsKHR; +#define VK_KHR_swapchain_mutable_format 1 +#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1 +#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format" -typedef VkExternalMemoryHandleTypeFlagBits VkExternalMemoryHandleTypeFlagBitsKHR; -typedef VkExternalMemoryFeatureFlags VkExternalMemoryFeatureFlagsKHR; +#define VK_KHR_timeline_semaphore 1 +#define VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION 2 +#define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore" +typedef VkSemaphoreType VkSemaphoreTypeKHR; -typedef VkExternalMemoryFeatureFlagBits VkExternalMemoryFeatureFlagBitsKHR; +typedef VkSemaphoreWaitFlagBits VkSemaphoreWaitFlagBitsKHR; -typedef VkExternalMemoryProperties VkExternalMemoryPropertiesKHR; +typedef VkSemaphoreWaitFlags VkSemaphoreWaitFlagsKHR; -typedef VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoKHR; +typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR; -typedef VkExternalImageFormatProperties VkExternalImageFormatPropertiesKHR; +typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR; -typedef VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfoKHR; +typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR; -typedef VkExternalBufferProperties VkExternalBufferPropertiesKHR; +typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR; -typedef VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesKHR; +typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR; -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties); +typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValueKHR)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue); +typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout); +typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, - VkExternalBufferProperties* pExternalBufferProperties); +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR( + VkDevice device, + VkSemaphore semaphore, + uint64_t* pValue); + +VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphoresKHR( + VkDevice device, + const VkSemaphoreWaitInfo* pWaitInfo, + uint64_t timeout); + +VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphoreKHR( + VkDevice device, + const VkSemaphoreSignalInfo* pSignalInfo); #endif -#define VK_KHR_external_memory 1 -#define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory" -#define VK_QUEUE_FAMILY_EXTERNAL_KHR VK_QUEUE_FAMILY_EXTERNAL -typedef VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoKHR; +#define VK_KHR_vulkan_memory_model 1 +#define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3 +#define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model" +typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR; -typedef VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoKHR; -typedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR; +#define VK_KHR_shader_terminate_invocation 1 +#define VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION 1 +#define VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME "VK_KHR_shader_terminate_invocation" +typedef VkPhysicalDeviceShaderTerminateInvocationFeatures VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR; -#define VK_KHR_external_memory_fd 1 -#define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd" -typedef struct VkImportMemoryFdInfoKHR { + +#define VK_KHR_fragment_shading_rate 1 +#define VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION 2 +#define VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME "VK_KHR_fragment_shading_rate" + +typedef enum VkFragmentShadingRateCombinerOpKHR { + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR = 0, + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR = 1, + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR = 2, + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR = 3, + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR = 4, + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR = 0x7FFFFFFF +} VkFragmentShadingRateCombinerOpKHR; +typedef struct VkFragmentShadingRateAttachmentInfoKHR { + VkStructureType sType; + const void* pNext; + const VkAttachmentReference2* pFragmentShadingRateAttachment; + VkExtent2D shadingRateAttachmentTexelSize; +} VkFragmentShadingRateAttachmentInfoKHR; + +typedef struct VkPipelineFragmentShadingRateStateCreateInfoKHR { VkStructureType sType; const void* pNext; - VkExternalMemoryHandleTypeFlagBits handleType; - int fd; -} VkImportMemoryFdInfoKHR; + VkExtent2D fragmentSize; + VkFragmentShadingRateCombinerOpKHR combinerOps[2]; +} VkPipelineFragmentShadingRateStateCreateInfoKHR; -typedef struct VkMemoryFdPropertiesKHR { +typedef struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR { VkStructureType sType; void* pNext; - uint32_t memoryTypeBits; -} VkMemoryFdPropertiesKHR; + VkBool32 pipelineFragmentShadingRate; + VkBool32 primitiveFragmentShadingRate; + VkBool32 attachmentFragmentShadingRate; +} VkPhysicalDeviceFragmentShadingRateFeaturesKHR; -typedef struct VkMemoryGetFdInfoKHR { - VkStructureType sType; - const void* pNext; - VkDeviceMemory memory; - VkExternalMemoryHandleTypeFlagBits handleType; -} VkMemoryGetFdInfoKHR; +typedef struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR { + VkStructureType sType; + void* pNext; + VkExtent2D minFragmentShadingRateAttachmentTexelSize; + VkExtent2D maxFragmentShadingRateAttachmentTexelSize; + uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio; + VkBool32 primitiveFragmentShadingRateWithMultipleViewports; + VkBool32 layeredShadingRateAttachments; + VkBool32 fragmentShadingRateNonTrivialCombinerOps; + VkExtent2D maxFragmentSize; + uint32_t maxFragmentSizeAspectRatio; + uint32_t maxFragmentShadingRateCoverageSamples; + VkSampleCountFlagBits maxFragmentShadingRateRasterizationSamples; + VkBool32 fragmentShadingRateWithShaderDepthStencilWrites; + VkBool32 fragmentShadingRateWithSampleMask; + VkBool32 fragmentShadingRateWithShaderSampleMask; + VkBool32 fragmentShadingRateWithConservativeRasterization; + VkBool32 fragmentShadingRateWithFragmentShaderInterlock; + VkBool32 fragmentShadingRateWithCustomSampleLocations; + VkBool32 fragmentShadingRateStrictMultiplyCombiner; +} VkPhysicalDeviceFragmentShadingRatePropertiesKHR; + +typedef struct VkPhysicalDeviceFragmentShadingRateKHR { + VkStructureType sType; + void* pNext; + VkSampleCountFlags sampleCounts; + VkExtent2D fragmentSize; +} VkPhysicalDeviceFragmentShadingRateKHR; -typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd); -typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates); +typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateKHR)(VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR( - VkDevice device, - const VkMemoryGetFdInfoKHR* pGetFdInfo, - int* pFd); +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceFragmentShadingRatesKHR( + VkPhysicalDevice physicalDevice, + uint32_t* pFragmentShadingRateCount, + VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates); -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR( - VkDevice device, - VkExternalMemoryHandleTypeFlagBits handleType, - int fd, - VkMemoryFdPropertiesKHR* pMemoryFdProperties); +VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateKHR( + VkCommandBuffer commandBuffer, + const VkExtent2D* pFragmentSize, + const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); #endif -#define VK_KHR_external_semaphore_capabilities 1 -#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_semaphore_capabilities" -typedef VkExternalSemaphoreHandleTypeFlags VkExternalSemaphoreHandleTypeFlagsKHR; +#define VK_KHR_spirv_1_4 1 +#define VK_KHR_SPIRV_1_4_SPEC_VERSION 1 +#define VK_KHR_SPIRV_1_4_EXTENSION_NAME "VK_KHR_spirv_1_4" -typedef VkExternalSemaphoreHandleTypeFlagBits VkExternalSemaphoreHandleTypeFlagBitsKHR; -typedef VkExternalSemaphoreFeatureFlags VkExternalSemaphoreFeatureFlagsKHR; +#define VK_KHR_surface_protected_capabilities 1 +#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION 1 +#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME "VK_KHR_surface_protected_capabilities" +typedef struct VkSurfaceProtectedCapabilitiesKHR { + VkStructureType sType; + const void* pNext; + VkBool32 supportsProtected; +} VkSurfaceProtectedCapabilitiesKHR; -typedef VkExternalSemaphoreFeatureFlagBits VkExternalSemaphoreFeatureFlagBitsKHR; -typedef VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoKHR; -typedef VkExternalSemaphoreProperties VkExternalSemaphorePropertiesKHR; +#define VK_KHR_separate_depth_stencil_layouts 1 +#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1 +#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "VK_KHR_separate_depth_stencil_layouts" +typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR; + +typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR; + +typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR; -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties); + + +#define VK_KHR_present_wait 1 +#define VK_KHR_PRESENT_WAIT_SPEC_VERSION 1 +#define VK_KHR_PRESENT_WAIT_EXTENSION_NAME "VK_KHR_present_wait" +typedef struct VkPhysicalDevicePresentWaitFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 presentWait; +} VkPhysicalDevicePresentWaitFeaturesKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkWaitForPresentKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t presentId, uint64_t timeout); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, - VkExternalSemaphoreProperties* pExternalSemaphoreProperties); +VKAPI_ATTR VkResult VKAPI_CALL vkWaitForPresentKHR( + VkDevice device, + VkSwapchainKHR swapchain, + uint64_t presentId, + uint64_t timeout); #endif -#define VK_KHR_external_semaphore 1 -#define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore" -typedef VkSemaphoreImportFlags VkSemaphoreImportFlagsKHR; +#define VK_KHR_uniform_buffer_standard_layout 1 +#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1 +#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout" +typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR; -typedef VkSemaphoreImportFlagBits VkSemaphoreImportFlagBitsKHR; -typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR; +#define VK_KHR_buffer_device_address 1 +#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1 +#define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address" +typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR; +typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoKHR; -#define VK_KHR_external_semaphore_fd 1 -#define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd" -typedef struct VkImportSemaphoreFdInfoKHR { - VkStructureType sType; - const void* pNext; - VkSemaphore semaphore; - VkSemaphoreImportFlags flags; - VkExternalSemaphoreHandleTypeFlagBits handleType; - int fd; -} VkImportSemaphoreFdInfoKHR; +typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR; -typedef struct VkSemaphoreGetFdInfoKHR { - VkStructureType sType; - const void* pNext; - VkSemaphore semaphore; - VkExternalSemaphoreHandleTypeFlagBits handleType; -} VkSemaphoreGetFdInfoKHR; +typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR; -typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo); -typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd); +typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR; + +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR( +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressKHR( VkDevice device, - const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo); + const VkBufferDeviceAddressInfo* pInfo); -VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR( +VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR( VkDevice device, - const VkSemaphoreGetFdInfoKHR* pGetFdInfo, - int* pFd); -#endif + const VkBufferDeviceAddressInfo* pInfo); +VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR( + VkDevice device, + const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); +#endif -#define VK_KHR_push_descriptor 1 -#define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2 -#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor" -typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR { - VkStructureType sType; - void* pNext; - uint32_t maxPushDescriptors; -} VkPhysicalDevicePushDescriptorPropertiesKHR; -typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites); -typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData); +#define VK_KHR_deferred_host_operations 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeferredOperationKHR) +#define VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION 4 +#define VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME "VK_KHR_deferred_host_operations" +typedef VkResult (VKAPI_PTR *PFN_vkCreateDeferredOperationKHR)(VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation); +typedef void (VKAPI_PTR *PFN_vkDestroyDeferredOperationKHR)(VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator); +typedef uint32_t (VKAPI_PTR *PFN_vkGetDeferredOperationMaxConcurrencyKHR)(VkDevice device, VkDeferredOperationKHR operation); +typedef VkResult (VKAPI_PTR *PFN_vkGetDeferredOperationResultKHR)(VkDevice device, VkDeferredOperationKHR operation); +typedef VkResult (VKAPI_PTR *PFN_vkDeferredOperationJoinKHR)(VkDevice device, VkDeferredOperationKHR operation); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR( - VkCommandBuffer commandBuffer, - VkPipelineBindPoint pipelineBindPoint, - VkPipelineLayout layout, - uint32_t set, - uint32_t descriptorWriteCount, - const VkWriteDescriptorSet* pDescriptorWrites); +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDeferredOperationKHR( + VkDevice device, + const VkAllocationCallbacks* pAllocator, + VkDeferredOperationKHR* pDeferredOperation); -VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR( - VkCommandBuffer commandBuffer, - VkDescriptorUpdateTemplate descriptorUpdateTemplate, - VkPipelineLayout layout, - uint32_t set, - const void* pData); +VKAPI_ATTR void VKAPI_CALL vkDestroyDeferredOperationKHR( + VkDevice device, + VkDeferredOperationKHR operation, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR uint32_t VKAPI_CALL vkGetDeferredOperationMaxConcurrencyKHR( + VkDevice device, + VkDeferredOperationKHR operation); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeferredOperationResultKHR( + VkDevice device, + VkDeferredOperationKHR operation); + +VKAPI_ATTR VkResult VKAPI_CALL vkDeferredOperationJoinKHR( + VkDevice device, + VkDeferredOperationKHR operation); #endif -#define VK_KHR_shader_float16_int8 1 -#define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1 -#define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8" -typedef struct VkPhysicalDeviceShaderFloat16Int8FeaturesKHR { +#define VK_KHR_pipeline_executable_properties 1 +#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION 1 +#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME "VK_KHR_pipeline_executable_properties" + +typedef enum VkPipelineExecutableStatisticFormatKHR { + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0, + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1, + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2, + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3, + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPipelineExecutableStatisticFormatKHR; +typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR { VkStructureType sType; void* pNext; - VkBool32 shaderFloat16; - VkBool32 shaderInt8; -} VkPhysicalDeviceShaderFloat16Int8FeaturesKHR; + VkBool32 pipelineExecutableInfo; +} VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR; -typedef VkPhysicalDeviceShaderFloat16Int8FeaturesKHR VkPhysicalDeviceFloat16Int8FeaturesKHR; +typedef struct VkPipelineInfoKHR { + VkStructureType sType; + const void* pNext; + VkPipeline pipeline; +} VkPipelineInfoKHR; +typedef struct VkPipelineExecutablePropertiesKHR { + VkStructureType sType; + void* pNext; + VkShaderStageFlags stages; + char name[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; + uint32_t subgroupSize; +} VkPipelineExecutablePropertiesKHR; +typedef struct VkPipelineExecutableInfoKHR { + VkStructureType sType; + const void* pNext; + VkPipeline pipeline; + uint32_t executableIndex; +} VkPipelineExecutableInfoKHR; -#define VK_KHR_16bit_storage 1 -#define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1 -#define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage" -typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR; +typedef union VkPipelineExecutableStatisticValueKHR { + VkBool32 b32; + int64_t i64; + uint64_t u64; + double f64; +} VkPipelineExecutableStatisticValueKHR; +typedef struct VkPipelineExecutableStatisticKHR { + VkStructureType sType; + void* pNext; + char name[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; + VkPipelineExecutableStatisticFormatKHR format; + VkPipelineExecutableStatisticValueKHR value; +} VkPipelineExecutableStatisticKHR; +typedef struct VkPipelineExecutableInternalRepresentationKHR { + VkStructureType sType; + void* pNext; + char name[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; + VkBool32 isText; + size_t dataSize; + void* pData; +} VkPipelineExecutableInternalRepresentationKHR; -#define VK_KHR_incremental_present 1 -#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1 -#define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present" -typedef struct VkRectLayerKHR { - VkOffset2D offset; - VkExtent2D extent; - uint32_t layer; -} VkRectLayerKHR; +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutablePropertiesKHR)(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableStatisticsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics); +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableInternalRepresentationsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations); -typedef struct VkPresentRegionKHR { - uint32_t rectangleCount; - const VkRectLayerKHR* pRectangles; -} VkPresentRegionKHR; +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR( + VkDevice device, + const VkPipelineInfoKHR* pPipelineInfo, + uint32_t* pExecutableCount, + VkPipelineExecutablePropertiesKHR* pProperties); -typedef struct VkPresentRegionsKHR { - VkStructureType sType; - const void* pNext; - uint32_t swapchainCount; - const VkPresentRegionKHR* pRegions; -} VkPresentRegionsKHR; +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR( + VkDevice device, + const VkPipelineExecutableInfoKHR* pExecutableInfo, + uint32_t* pStatisticCount, + VkPipelineExecutableStatisticKHR* pStatistics); +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR( + VkDevice device, + const VkPipelineExecutableInfoKHR* pExecutableInfo, + uint32_t* pInternalRepresentationCount, + VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations); +#endif -#define VK_KHR_descriptor_update_template 1 -typedef VkDescriptorUpdateTemplate VkDescriptorUpdateTemplateKHR; +#define VK_KHR_shader_integer_dot_product 1 +#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION 1 +#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME "VK_KHR_shader_integer_dot_product" +typedef VkPhysicalDeviceShaderIntegerDotProductFeatures VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR; -#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1 -#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template" -typedef VkDescriptorUpdateTemplateType VkDescriptorUpdateTemplateTypeKHR; +typedef VkPhysicalDeviceShaderIntegerDotProductProperties VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR; -typedef VkDescriptorUpdateTemplateCreateFlags VkDescriptorUpdateTemplateCreateFlagsKHR; -typedef VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntryKHR; -typedef VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoKHR; +#define VK_KHR_pipeline_library 1 +#define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1 +#define VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME "VK_KHR_pipeline_library" +typedef struct VkPipelineLibraryCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t libraryCount; + const VkPipeline* pLibraries; +} VkPipelineLibraryCreateInfoKHR; -typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); -typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR( - VkDevice device, - const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); -VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplateKHR( - VkDevice device, - VkDescriptorUpdateTemplate descriptorUpdateTemplate, - const VkAllocationCallbacks* pAllocator); +#define VK_KHR_shader_non_semantic_info 1 +#define VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION 1 +#define VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME "VK_KHR_shader_non_semantic_info" -VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR( - VkDevice device, - VkDescriptorSet descriptorSet, - VkDescriptorUpdateTemplate descriptorUpdateTemplate, - const void* pData); -#endif +#define VK_KHR_present_id 1 +#define VK_KHR_PRESENT_ID_SPEC_VERSION 1 +#define VK_KHR_PRESENT_ID_EXTENSION_NAME "VK_KHR_present_id" +typedef struct VkPresentIdKHR { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const uint64_t* pPresentIds; +} VkPresentIdKHR; -#define VK_KHR_imageless_framebuffer 1 -#define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1 -#define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer" -typedef struct VkPhysicalDeviceImagelessFramebufferFeaturesKHR { +typedef struct VkPhysicalDevicePresentIdFeaturesKHR { VkStructureType sType; void* pNext; - VkBool32 imagelessFramebuffer; -} VkPhysicalDeviceImagelessFramebufferFeaturesKHR; + VkBool32 presentId; +} VkPhysicalDevicePresentIdFeaturesKHR; -typedef struct VkFramebufferAttachmentImageInfoKHR { - VkStructureType sType; - const void* pNext; - VkImageCreateFlags flags; - VkImageUsageFlags usage; - uint32_t width; - uint32_t height; - uint32_t layerCount; - uint32_t viewFormatCount; - const VkFormat* pViewFormats; -} VkFramebufferAttachmentImageInfoKHR; -typedef struct VkFramebufferAttachmentsCreateInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t attachmentImageInfoCount; - const VkFramebufferAttachmentImageInfoKHR* pAttachmentImageInfos; -} VkFramebufferAttachmentsCreateInfoKHR; -typedef struct VkRenderPassAttachmentBeginInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t attachmentCount; - const VkImageView* pAttachments; -} VkRenderPassAttachmentBeginInfoKHR; +#define VK_KHR_synchronization2 1 +#define VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION 1 +#define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME "VK_KHR_synchronization2" +typedef VkPipelineStageFlags2 VkPipelineStageFlags2KHR; +typedef VkPipelineStageFlagBits2 VkPipelineStageFlagBits2KHR; +typedef VkAccessFlags2 VkAccessFlags2KHR; -#define VK_KHR_create_renderpass2 1 -#define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1 -#define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2" -typedef struct VkAttachmentDescription2KHR { - VkStructureType sType; - const void* pNext; - VkAttachmentDescriptionFlags flags; - VkFormat format; - VkSampleCountFlagBits samples; - VkAttachmentLoadOp loadOp; - VkAttachmentStoreOp storeOp; - VkAttachmentLoadOp stencilLoadOp; - VkAttachmentStoreOp stencilStoreOp; - VkImageLayout initialLayout; - VkImageLayout finalLayout; -} VkAttachmentDescription2KHR; +typedef VkAccessFlagBits2 VkAccessFlagBits2KHR; -typedef struct VkAttachmentReference2KHR { - VkStructureType sType; - const void* pNext; - uint32_t attachment; - VkImageLayout layout; - VkImageAspectFlags aspectMask; -} VkAttachmentReference2KHR; +typedef VkSubmitFlagBits VkSubmitFlagBitsKHR; -typedef struct VkSubpassDescription2KHR { - VkStructureType sType; - const void* pNext; - VkSubpassDescriptionFlags flags; - VkPipelineBindPoint pipelineBindPoint; - uint32_t viewMask; - uint32_t inputAttachmentCount; - const VkAttachmentReference2KHR* pInputAttachments; - uint32_t colorAttachmentCount; - const VkAttachmentReference2KHR* pColorAttachments; - const VkAttachmentReference2KHR* pResolveAttachments; - const VkAttachmentReference2KHR* pDepthStencilAttachment; - uint32_t preserveAttachmentCount; - const uint32_t* pPreserveAttachments; -} VkSubpassDescription2KHR; - -typedef struct VkSubpassDependency2KHR { - VkStructureType sType; - const void* pNext; - uint32_t srcSubpass; - uint32_t dstSubpass; - VkPipelineStageFlags srcStageMask; - VkPipelineStageFlags dstStageMask; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - VkDependencyFlags dependencyFlags; - int32_t viewOffset; -} VkSubpassDependency2KHR; +typedef VkSubmitFlags VkSubmitFlagsKHR; -typedef struct VkRenderPassCreateInfo2KHR { - VkStructureType sType; - const void* pNext; - VkRenderPassCreateFlags flags; - uint32_t attachmentCount; - const VkAttachmentDescription2KHR* pAttachments; - uint32_t subpassCount; - const VkSubpassDescription2KHR* pSubpasses; - uint32_t dependencyCount; - const VkSubpassDependency2KHR* pDependencies; - uint32_t correlatedViewMaskCount; - const uint32_t* pCorrelatedViewMasks; -} VkRenderPassCreateInfo2KHR; - -typedef struct VkSubpassBeginInfoKHR { - VkStructureType sType; - const void* pNext; - VkSubpassContents contents; -} VkSubpassBeginInfoKHR; +typedef VkMemoryBarrier2 VkMemoryBarrier2KHR; -typedef struct VkSubpassEndInfoKHR { - VkStructureType sType; - const void* pNext; -} VkSubpassEndInfoKHR; +typedef VkBufferMemoryBarrier2 VkBufferMemoryBarrier2KHR; + +typedef VkImageMemoryBarrier2 VkImageMemoryBarrier2KHR; + +typedef VkDependencyInfo VkDependencyInfoKHR; + +typedef VkSubmitInfo2 VkSubmitInfo2KHR; + +typedef VkSemaphoreSubmitInfo VkSemaphoreSubmitInfoKHR; + +typedef VkCommandBufferSubmitInfo VkCommandBufferSubmitInfoKHR; + +typedef VkPhysicalDeviceSynchronization2Features VkPhysicalDeviceSynchronization2FeaturesKHR; -typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); -typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo); -typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo); -typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo); +typedef struct VkQueueFamilyCheckpointProperties2NV { + VkStructureType sType; + void* pNext; + VkPipelineStageFlags2 checkpointExecutionStageMask; +} VkQueueFamilyCheckpointProperties2NV; + +typedef struct VkCheckpointData2NV { + VkStructureType sType; + void* pNext; + VkPipelineStageFlags2 stage; + void* pCheckpointMarker; +} VkCheckpointData2NV; + +typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask); +typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2KHR)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfo* pDependencyInfos); +typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2KHR)(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2KHR)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query); +typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2KHR)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence); +typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarker2AMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker); +typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointData2NV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR( - VkDevice device, - const VkRenderPassCreateInfo2KHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkRenderPass* pRenderPass); +VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2KHR( + VkCommandBuffer commandBuffer, + VkEvent event, + const VkDependencyInfo* pDependencyInfo); -VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR( +VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2KHR( VkCommandBuffer commandBuffer, - const VkRenderPassBeginInfo* pRenderPassBegin, - const VkSubpassBeginInfoKHR* pSubpassBeginInfo); + VkEvent event, + VkPipelineStageFlags2 stageMask); -VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR( +VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2KHR( VkCommandBuffer commandBuffer, - const VkSubpassBeginInfoKHR* pSubpassBeginInfo, - const VkSubpassEndInfoKHR* pSubpassEndInfo); + uint32_t eventCount, + const VkEvent* pEvents, + const VkDependencyInfo* pDependencyInfos); -VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR( +VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2KHR( VkCommandBuffer commandBuffer, - const VkSubpassEndInfoKHR* pSubpassEndInfo); -#endif + const VkDependencyInfo* pDependencyInfo); +VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2KHR( + VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkQueryPool queryPool, + uint32_t query); -#define VK_KHR_shared_presentable_image 1 -#define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1 -#define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image" -typedef struct VkSharedPresentSurfaceCapabilitiesKHR { - VkStructureType sType; - void* pNext; - VkImageUsageFlags sharedPresentSupportedUsageFlags; -} VkSharedPresentSurfaceCapabilitiesKHR; +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2KHR( + VkQueue queue, + uint32_t submitCount, + const VkSubmitInfo2* pSubmits, + VkFence fence); -typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain); +VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarker2AMD( + VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + uint32_t marker); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR( - VkDevice device, - VkSwapchainKHR swapchain); +VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointData2NV( + VkQueue queue, + uint32_t* pCheckpointDataCount, + VkCheckpointData2NV* pCheckpointData); #endif -#define VK_KHR_external_fence_capabilities 1 -#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities" -typedef VkExternalFenceHandleTypeFlags VkExternalFenceHandleTypeFlagsKHR; +#define VK_KHR_shader_subgroup_uniform_control_flow 1 +#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION 1 +#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME "VK_KHR_shader_subgroup_uniform_control_flow" +typedef struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 shaderSubgroupUniformControlFlow; +} VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; -typedef VkExternalFenceHandleTypeFlagBits VkExternalFenceHandleTypeFlagBitsKHR; -typedef VkExternalFenceFeatureFlags VkExternalFenceFeatureFlagsKHR; -typedef VkExternalFenceFeatureFlagBits VkExternalFenceFeatureFlagBitsKHR; +#define VK_KHR_zero_initialize_workgroup_memory 1 +#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION 1 +#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME "VK_KHR_zero_initialize_workgroup_memory" +typedef VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; -typedef VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoKHR; -typedef VkExternalFenceProperties VkExternalFencePropertiesKHR; -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties); +#define VK_KHR_workgroup_memory_explicit_layout 1 +#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION 1 +#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME "VK_KHR_workgroup_memory_explicit_layout" +typedef struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 workgroupMemoryExplicitLayout; + VkBool32 workgroupMemoryExplicitLayoutScalarBlockLayout; + VkBool32 workgroupMemoryExplicitLayout8BitAccess; + VkBool32 workgroupMemoryExplicitLayout16BitAccess; +} VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFencePropertiesKHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, - VkExternalFenceProperties* pExternalFenceProperties); -#endif -#define VK_KHR_external_fence 1 -#define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence" -typedef VkFenceImportFlags VkFenceImportFlagsKHR; +#define VK_KHR_copy_commands2 1 +#define VK_KHR_COPY_COMMANDS_2_SPEC_VERSION 1 +#define VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME "VK_KHR_copy_commands2" +typedef VkCopyBufferInfo2 VkCopyBufferInfo2KHR; -typedef VkFenceImportFlagBits VkFenceImportFlagBitsKHR; +typedef VkCopyImageInfo2 VkCopyImageInfo2KHR; -typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR; +typedef VkCopyBufferToImageInfo2 VkCopyBufferToImageInfo2KHR; +typedef VkCopyImageToBufferInfo2 VkCopyImageToBufferInfo2KHR; +typedef VkBlitImageInfo2 VkBlitImageInfo2KHR; -#define VK_KHR_external_fence_fd 1 -#define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1 -#define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd" -typedef struct VkImportFenceFdInfoKHR { - VkStructureType sType; - const void* pNext; - VkFence fence; - VkFenceImportFlags flags; - VkExternalFenceHandleTypeFlagBits handleType; - int fd; -} VkImportFenceFdInfoKHR; +typedef VkResolveImageInfo2 VkResolveImageInfo2KHR; -typedef struct VkFenceGetFdInfoKHR { - VkStructureType sType; - const void* pNext; - VkFence fence; - VkExternalFenceHandleTypeFlagBits handleType; -} VkFenceGetFdInfoKHR; +typedef VkBufferCopy2 VkBufferCopy2KHR; -typedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo); -typedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd); +typedef VkImageCopy2 VkImageCopy2KHR; + +typedef VkImageBlit2 VkImageBlit2KHR; + +typedef VkBufferImageCopy2 VkBufferImageCopy2KHR; + +typedef VkImageResolve2 VkImageResolve2KHR; + +typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2KHR)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2KHR)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceFdKHR( - VkDevice device, - const VkImportFenceFdInfoKHR* pImportFenceFdInfo); +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2KHR( + VkCommandBuffer commandBuffer, + const VkCopyBufferInfo2* pCopyBufferInfo); -VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR( - VkDevice device, - const VkFenceGetFdInfoKHR* pGetFdInfo, - int* pFd); -#endif +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2KHR( + VkCommandBuffer commandBuffer, + const VkCopyImageInfo2* pCopyImageInfo); +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2KHR( + VkCommandBuffer commandBuffer, + const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); -#define VK_KHR_maintenance2 1 -#define VK_KHR_MAINTENANCE2_SPEC_VERSION 1 -#define VK_KHR_MAINTENANCE2_EXTENSION_NAME "VK_KHR_maintenance2" -typedef VkPointClippingBehavior VkPointClippingBehaviorKHR; +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2KHR( + VkCommandBuffer commandBuffer, + const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); -typedef VkTessellationDomainOrigin VkTessellationDomainOriginKHR; +VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2KHR( + VkCommandBuffer commandBuffer, + const VkBlitImageInfo2* pBlitImageInfo); -typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR; +VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2KHR( + VkCommandBuffer commandBuffer, + const VkResolveImageInfo2* pResolveImageInfo); +#endif -typedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR; -typedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR; +#define VK_KHR_format_feature_flags2 1 +#define VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION 1 +#define VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME "VK_KHR_format_feature_flags2" +typedef VkFormatFeatureFlags2 VkFormatFeatureFlags2KHR; -typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR; +typedef VkFormatFeatureFlagBits2 VkFormatFeatureFlagBits2KHR; -typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoKHR; +typedef VkFormatProperties3 VkFormatProperties3KHR; -#define VK_KHR_get_surface_capabilities2 1 -#define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1 -#define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2" -typedef struct VkPhysicalDeviceSurfaceInfo2KHR { - VkStructureType sType; - const void* pNext; - VkSurfaceKHR surface; -} VkPhysicalDeviceSurfaceInfo2KHR; +#define VK_KHR_maintenance4 1 +#define VK_KHR_MAINTENANCE_4_SPEC_VERSION 2 +#define VK_KHR_MAINTENANCE_4_EXTENSION_NAME "VK_KHR_maintenance4" +typedef VkPhysicalDeviceMaintenance4Features VkPhysicalDeviceMaintenance4FeaturesKHR; -typedef struct VkSurfaceCapabilities2KHR { - VkStructureType sType; - void* pNext; - VkSurfaceCapabilitiesKHR surfaceCapabilities; -} VkSurfaceCapabilities2KHR; +typedef VkPhysicalDeviceMaintenance4Properties VkPhysicalDeviceMaintenance4PropertiesKHR; -typedef struct VkSurfaceFormat2KHR { - VkStructureType sType; - void* pNext; - VkSurfaceFormatKHR surfaceFormat; -} VkSurfaceFormat2KHR; +typedef VkDeviceBufferMemoryRequirements VkDeviceBufferMemoryRequirementsKHR; -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats); +typedef VkDeviceImageMemoryRequirements VkDeviceImageMemoryRequirementsKHR; -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2KHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, - VkSurfaceCapabilities2KHR* pSurfaceCapabilities); +typedef void (VKAPI_PTR *PFN_vkGetDeviceBufferMemoryRequirementsKHR)(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, - uint32_t* pSurfaceFormatCount, - VkSurfaceFormat2KHR* pSurfaceFormats); -#endif +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDeviceBufferMemoryRequirementsKHR( + VkDevice device, + const VkDeviceBufferMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageMemoryRequirementsKHR( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); -#define VK_KHR_variable_pointers 1 -#define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1 -#define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers" -typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeaturesKHR; +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSparseMemoryRequirementsKHR( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); +#endif -typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointersFeaturesKHR; +#define VK_EXT_debug_report 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) +#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 10 +#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report" +typedef enum VkDebugReportObjectTypeEXT { + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0, + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1, + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2, + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3, + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4, + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5, + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6, + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7, + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8, + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9, + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10, + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11, + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12, + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13, + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14, + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15, + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16, + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17, + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18, + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19, + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20, + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21, + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22, + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23, + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24, + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25, + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26, + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27, + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28, + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29, + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30, + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33, + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000, + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000, + VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT = 1000029000, + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001, + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000150000, + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000, + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000, + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT, + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT, + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT, + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDebugReportObjectTypeEXT; -#define VK_KHR_get_display_properties2 1 -#define VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION 1 -#define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2" -typedef struct VkDisplayProperties2KHR { - VkStructureType sType; - void* pNext; - VkDisplayPropertiesKHR displayProperties; -} VkDisplayProperties2KHR; +typedef enum VkDebugReportFlagBitsEXT { + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001, + VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002, + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004, + VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008, + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010, + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDebugReportFlagBitsEXT; +typedef VkFlags VkDebugReportFlagsEXT; +typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)( + VkDebugReportFlagsEXT flags, + VkDebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + const char* pLayerPrefix, + const char* pMessage, + void* pUserData); -typedef struct VkDisplayPlaneProperties2KHR { - VkStructureType sType; - void* pNext; - VkDisplayPlanePropertiesKHR displayPlaneProperties; -} VkDisplayPlaneProperties2KHR; +typedef struct VkDebugReportCallbackCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugReportFlagsEXT flags; + PFN_vkDebugReportCallbackEXT pfnCallback; + void* pUserData; +} VkDebugReportCallbackCreateInfoEXT; -typedef struct VkDisplayModeProperties2KHR { - VkStructureType sType; - void* pNext; - VkDisplayModePropertiesKHR displayModeProperties; -} VkDisplayModeProperties2KHR; +typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback); +typedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkDebugReportMessageEXT)(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage); -typedef struct VkDisplayPlaneInfo2KHR { - VkStructureType sType; - const void* pNext; - VkDisplayModeKHR mode; - uint32_t planeIndex; -} VkDisplayPlaneInfo2KHR; +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT( + VkInstance instance, + const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDebugReportCallbackEXT* pCallback); -typedef struct VkDisplayPlaneCapabilities2KHR { - VkStructureType sType; - void* pNext; - VkDisplayPlaneCapabilitiesKHR capabilities; -} VkDisplayPlaneCapabilities2KHR; +VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT( + VkInstance instance, + VkDebugReportCallbackEXT callback, + const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModeProperties2KHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities); +VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT( + VkInstance instance, + VkDebugReportFlagsEXT flags, + VkDebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + const char* pLayerPrefix, + const char* pMessage); +#endif -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayProperties2KHR( - VkPhysicalDevice physicalDevice, - uint32_t* pPropertyCount, - VkDisplayProperties2KHR* pProperties); -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlaneProperties2KHR( - VkPhysicalDevice physicalDevice, - uint32_t* pPropertyCount, - VkDisplayPlaneProperties2KHR* pProperties); +#define VK_NV_glsl_shader 1 +#define VK_NV_GLSL_SHADER_SPEC_VERSION 1 +#define VK_NV_GLSL_SHADER_EXTENSION_NAME "VK_NV_glsl_shader" -VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModeProperties2KHR( - VkPhysicalDevice physicalDevice, - VkDisplayKHR display, - uint32_t* pPropertyCount, - VkDisplayModeProperties2KHR* pProperties); -VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilities2KHR( - VkPhysicalDevice physicalDevice, - const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, - VkDisplayPlaneCapabilities2KHR* pCapabilities); -#endif +#define VK_EXT_depth_range_unrestricted 1 +#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1 +#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME "VK_EXT_depth_range_unrestricted" -#define VK_KHR_dedicated_allocation 1 -#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3 -#define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation" -typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR; +#define VK_IMG_filter_cubic 1 +#define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1 +#define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic" -typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR; +#define VK_AMD_rasterization_order 1 +#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1 +#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order" +typedef enum VkRasterizationOrderAMD { + VK_RASTERIZATION_ORDER_STRICT_AMD = 0, + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1, + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF +} VkRasterizationOrderAMD; +typedef struct VkPipelineRasterizationStateRasterizationOrderAMD { + VkStructureType sType; + const void* pNext; + VkRasterizationOrderAMD rasterizationOrder; +} VkPipelineRasterizationStateRasterizationOrderAMD; -#define VK_KHR_storage_buffer_storage_class 1 -#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1 -#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class" -#define VK_KHR_relaxed_block_layout 1 -#define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1 -#define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout" +#define VK_AMD_shader_trinary_minmax 1 +#define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1 +#define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax" -#define VK_KHR_get_memory_requirements2 1 -#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1 -#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2" -typedef VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2KHR; +#define VK_AMD_shader_explicit_vertex_parameter 1 +#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1 +#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter" -typedef VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2KHR; -typedef VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2KHR; +#define VK_EXT_debug_marker 1 +#define VK_EXT_DEBUG_MARKER_SPEC_VERSION 4 +#define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker" +typedef struct VkDebugMarkerObjectNameInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugReportObjectTypeEXT objectType; + uint64_t object; + const char* pObjectName; +} VkDebugMarkerObjectNameInfoEXT; -typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR; +typedef struct VkDebugMarkerObjectTagInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugReportObjectTypeEXT objectType; + uint64_t object; + uint64_t tagName; + size_t tagSize; + const void* pTag; +} VkDebugMarkerObjectTagInfoEXT; -typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); +typedef struct VkDebugMarkerMarkerInfoEXT { + VkStructureType sType; + const void* pNext; + const char* pMarkerName; + float color[4]; +} VkDebugMarkerMarkerInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo); +typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2KHR( +VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT( VkDevice device, - const VkImageMemoryRequirementsInfo2* pInfo, - VkMemoryRequirements2* pMemoryRequirements); + const VkDebugMarkerObjectTagInfoEXT* pTagInfo); -VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2KHR( +VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT( VkDevice device, - const VkBufferMemoryRequirementsInfo2* pInfo, - VkMemoryRequirements2* pMemoryRequirements); + const VkDebugMarkerObjectNameInfoEXT* pNameInfo); -VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR( - VkDevice device, - const VkImageSparseMemoryRequirementsInfo2* pInfo, - uint32_t* pSparseMemoryRequirementCount, - VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); +VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT( + VkCommandBuffer commandBuffer, + const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT( + VkCommandBuffer commandBuffer); + +VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT( + VkCommandBuffer commandBuffer, + const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); #endif -#define VK_KHR_image_format_list 1 -#define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1 -#define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list" -typedef struct VkImageFormatListCreateInfoKHR { +#define VK_AMD_gcn_shader 1 +#define VK_AMD_GCN_SHADER_SPEC_VERSION 1 +#define VK_AMD_GCN_SHADER_EXTENSION_NAME "VK_AMD_gcn_shader" + + +#define VK_NV_dedicated_allocation 1 +#define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1 +#define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation" +typedef struct VkDedicatedAllocationImageCreateInfoNV { VkStructureType sType; const void* pNext; - uint32_t viewFormatCount; - const VkFormat* pViewFormats; -} VkImageFormatListCreateInfoKHR; - + VkBool32 dedicatedAllocation; +} VkDedicatedAllocationImageCreateInfoNV; +typedef struct VkDedicatedAllocationBufferCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 dedicatedAllocation; +} VkDedicatedAllocationBufferCreateInfoNV; -#define VK_KHR_sampler_ycbcr_conversion 1 -typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR; +typedef struct VkDedicatedAllocationMemoryAllocateInfoNV { + VkStructureType sType; + const void* pNext; + VkImage image; + VkBuffer buffer; +} VkDedicatedAllocationMemoryAllocateInfoNV; -#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 14 -#define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion" -typedef VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversionKHR; -typedef VkSamplerYcbcrRange VkSamplerYcbcrRangeKHR; -typedef VkChromaLocation VkChromaLocationKHR; +#define VK_EXT_transform_feedback 1 +#define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1 +#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback" +typedef VkFlags VkPipelineRasterizationStateStreamCreateFlagsEXT; +typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 transformFeedback; + VkBool32 geometryStreams; +} VkPhysicalDeviceTransformFeedbackFeaturesEXT; -typedef VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoKHR; +typedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxTransformFeedbackStreams; + uint32_t maxTransformFeedbackBuffers; + VkDeviceSize maxTransformFeedbackBufferSize; + uint32_t maxTransformFeedbackStreamDataSize; + uint32_t maxTransformFeedbackBufferDataSize; + uint32_t maxTransformFeedbackBufferDataStride; + VkBool32 transformFeedbackQueries; + VkBool32 transformFeedbackStreamsLinesTriangles; + VkBool32 transformFeedbackRasterizationStreamSelect; + VkBool32 transformFeedbackDraw; +} VkPhysicalDeviceTransformFeedbackPropertiesEXT; -typedef VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoKHR; +typedef struct VkPipelineRasterizationStateStreamCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationStateStreamCreateFlagsEXT flags; + uint32_t rasterizationStream; +} VkPipelineRasterizationStateStreamCreateInfoEXT; -typedef VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoKHR; +typedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes); +typedef void (VKAPI_PTR *PFN_vkCmdBeginTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdEndTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdBeginQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index); +typedef void (VKAPI_PTR *PFN_vkCmdEndQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectByteCountEXT)(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride); -typedef VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfoKHR; +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets, + const VkDeviceSize* pSizes); -typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR; +VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedbackEXT( + VkCommandBuffer commandBuffer, + uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VkBuffer* pCounterBuffers, + const VkDeviceSize* pCounterBufferOffsets); -typedef VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesKHR; +VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedbackEXT( + VkCommandBuffer commandBuffer, + uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VkBuffer* pCounterBuffers, + const VkDeviceSize* pCounterBufferOffsets); -typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversionKHR)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion); -typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversionKHR)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator); +VKAPI_ATTR void VKAPI_CALL vkCmdBeginQueryIndexedEXT( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query, + VkQueryControlFlags flags, + uint32_t index); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversionKHR( - VkDevice device, - const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSamplerYcbcrConversion* pYcbcrConversion); +VKAPI_ATTR void VKAPI_CALL vkCmdEndQueryIndexedEXT( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query, + uint32_t index); -VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR( - VkDevice device, - VkSamplerYcbcrConversion ycbcrConversion, - const VkAllocationCallbacks* pAllocator); +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCountEXT( + VkCommandBuffer commandBuffer, + uint32_t instanceCount, + uint32_t firstInstance, + VkBuffer counterBuffer, + VkDeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride); #endif -#define VK_KHR_bind_memory2 1 -#define VK_KHR_BIND_MEMORY_2_SPEC_VERSION 1 -#define VK_KHR_BIND_MEMORY_2_EXTENSION_NAME "VK_KHR_bind_memory2" -typedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR; +#define VK_NVX_binary_import 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuModuleNVX) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuFunctionNVX) +#define VK_NVX_BINARY_IMPORT_SPEC_VERSION 1 +#define VK_NVX_BINARY_IMPORT_EXTENSION_NAME "VK_NVX_binary_import" +typedef struct VkCuModuleCreateInfoNVX { + VkStructureType sType; + const void* pNext; + size_t dataSize; + const void* pData; +} VkCuModuleCreateInfoNVX; -typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR; +typedef struct VkCuFunctionCreateInfoNVX { + VkStructureType sType; + const void* pNext; + VkCuModuleNVX module; + const char* pName; +} VkCuFunctionCreateInfoNVX; -typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos); -typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos); +typedef struct VkCuLaunchInfoNVX { + VkStructureType sType; + const void* pNext; + VkCuFunctionNVX function; + uint32_t gridDimX; + uint32_t gridDimY; + uint32_t gridDimZ; + uint32_t blockDimX; + uint32_t blockDimY; + uint32_t blockDimZ; + uint32_t sharedMemBytes; + size_t paramCount; + const void* const * pParams; + size_t extraCount; + const void* const * pExtras; +} VkCuLaunchInfoNVX; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateCuModuleNVX)(VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule); +typedef VkResult (VKAPI_PTR *PFN_vkCreateCuFunctionNVX)(VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction); +typedef void (VKAPI_PTR *PFN_vkDestroyCuModuleNVX)(VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkDestroyCuFunctionNVX)(VkDevice device, VkCuFunctionNVX function, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdCuLaunchKernelNVX)(VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2KHR( +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuModuleNVX( VkDevice device, - uint32_t bindInfoCount, - const VkBindBufferMemoryInfo* pBindInfos); + const VkCuModuleCreateInfoNVX* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkCuModuleNVX* pModule); -VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR( +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuFunctionNVX( VkDevice device, - uint32_t bindInfoCount, - const VkBindImageMemoryInfo* pBindInfos); + const VkCuFunctionCreateInfoNVX* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkCuFunctionNVX* pFunction); + +VKAPI_ATTR void VKAPI_CALL vkDestroyCuModuleNVX( + VkDevice device, + VkCuModuleNVX module, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkDestroyCuFunctionNVX( + VkDevice device, + VkCuFunctionNVX function, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkCmdCuLaunchKernelNVX( + VkCommandBuffer commandBuffer, + const VkCuLaunchInfoNVX* pLaunchInfo); #endif -#define VK_KHR_maintenance3 1 -#define VK_KHR_MAINTENANCE3_SPEC_VERSION 1 -#define VK_KHR_MAINTENANCE3_EXTENSION_NAME "VK_KHR_maintenance3" -typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR; +#define VK_NVX_image_view_handle 1 +#define VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION 2 +#define VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME "VK_NVX_image_view_handle" +typedef struct VkImageViewHandleInfoNVX { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkDescriptorType descriptorType; + VkSampler sampler; +} VkImageViewHandleInfoNVX; -typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR; +typedef struct VkImageViewAddressPropertiesNVX { + VkStructureType sType; + void* pNext; + VkDeviceAddress deviceAddress; + VkDeviceSize size; +} VkImageViewAddressPropertiesNVX; -typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport); +typedef uint32_t (VKAPI_PTR *PFN_vkGetImageViewHandleNVX)(VkDevice device, const VkImageViewHandleInfoNVX* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetImageViewAddressNVX)(VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupportKHR( +VKAPI_ATTR uint32_t VKAPI_CALL vkGetImageViewHandleNVX( VkDevice device, - const VkDescriptorSetLayoutCreateInfo* pCreateInfo, - VkDescriptorSetLayoutSupport* pSupport); + const VkImageViewHandleInfoNVX* pInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetImageViewAddressNVX( + VkDevice device, + VkImageView imageView, + VkImageViewAddressPropertiesNVX* pProperties); #endif -#define VK_KHR_draw_indirect_count 1 -#define VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION 1 -#define VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_KHR_draw_indirect_count" -typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); -typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +#define VK_AMD_draw_indirect_count 1 +#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 2 +#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count" +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountKHR( +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, @@ -6190,7 +9943,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountKHR( uint32_t maxDrawCount, uint32_t stride); -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR( +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, @@ -6201,3663 +9954,4358 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR( #endif -#define VK_KHR_8bit_storage 1 -#define VK_KHR_8BIT_STORAGE_SPEC_VERSION 1 -#define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage" -typedef struct VkPhysicalDevice8BitStorageFeaturesKHR { +#define VK_AMD_negative_viewport_height 1 +#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1 +#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height" + + +#define VK_AMD_gpu_shader_half_float 1 +#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 2 +#define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float" + + +#define VK_AMD_shader_ballot 1 +#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1 +#define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot" + + +#define VK_AMD_texture_gather_bias_lod 1 +#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1 +#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod" +typedef struct VkTextureLODGatherFormatPropertiesAMD { + VkStructureType sType; + void* pNext; + VkBool32 supportsTextureGatherLODBiasAMD; +} VkTextureLODGatherFormatPropertiesAMD; + + + +#define VK_AMD_shader_info 1 +#define VK_AMD_SHADER_INFO_SPEC_VERSION 1 +#define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info" + +typedef enum VkShaderInfoTypeAMD { + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0, + VK_SHADER_INFO_TYPE_BINARY_AMD = 1, + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2, + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 0x7FFFFFFF +} VkShaderInfoTypeAMD; +typedef struct VkShaderResourceUsageAMD { + uint32_t numUsedVgprs; + uint32_t numUsedSgprs; + uint32_t ldsSizePerLocalWorkGroup; + size_t ldsUsageSizeInBytes; + size_t scratchMemUsageInBytes; +} VkShaderResourceUsageAMD; + +typedef struct VkShaderStatisticsInfoAMD { + VkShaderStageFlags shaderStageMask; + VkShaderResourceUsageAMD resourceUsage; + uint32_t numPhysicalVgprs; + uint32_t numPhysicalSgprs; + uint32_t numAvailableVgprs; + uint32_t numAvailableSgprs; + uint32_t computeWorkGroupSize[3]; +} VkShaderStatisticsInfoAMD; + +typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD( + VkDevice device, + VkPipeline pipeline, + VkShaderStageFlagBits shaderStage, + VkShaderInfoTypeAMD infoType, + size_t* pInfoSize, + void* pInfo); +#endif + + +#define VK_AMD_shader_image_load_store_lod 1 +#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1 +#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod" + + +#define VK_NV_corner_sampled_image 1 +#define VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION 2 +#define VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME "VK_NV_corner_sampled_image" +typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV { VkStructureType sType; void* pNext; - VkBool32 storageBuffer8BitAccess; - VkBool32 uniformAndStorageBuffer8BitAccess; - VkBool32 storagePushConstant8; -} VkPhysicalDevice8BitStorageFeaturesKHR; + VkBool32 cornerSampledImage; +} VkPhysicalDeviceCornerSampledImageFeaturesNV; -#define VK_KHR_shader_atomic_int64 1 -#define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1 -#define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64" -typedef struct VkPhysicalDeviceShaderAtomicInt64FeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 shaderBufferInt64Atomics; - VkBool32 shaderSharedInt64Atomics; -} VkPhysicalDeviceShaderAtomicInt64FeaturesKHR; +#define VK_IMG_format_pvrtc 1 +#define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1 +#define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc" +#define VK_NV_external_memory_capabilities 1 +#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 +#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities" -#define VK_KHR_driver_properties 1 -#define VK_MAX_DRIVER_NAME_SIZE_KHR 256 -#define VK_MAX_DRIVER_INFO_SIZE_KHR 256 -#define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1 -#define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties" +typedef enum VkExternalMemoryHandleTypeFlagBitsNV { + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkExternalMemoryHandleTypeFlagBitsNV; +typedef VkFlags VkExternalMemoryHandleTypeFlagsNV; -typedef enum VkDriverIdKHR { - VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1, - VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2, - VK_DRIVER_ID_MESA_RADV_KHR = 3, - VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4, - VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5, - VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6, - VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7, - VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8, - VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9, - VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10, - VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11, - VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12, - VK_DRIVER_ID_BEGIN_RANGE_KHR = VK_DRIVER_ID_AMD_PROPRIETARY_KHR, - VK_DRIVER_ID_END_RANGE_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR, - VK_DRIVER_ID_RANGE_SIZE_KHR = (VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR - VK_DRIVER_ID_AMD_PROPRIETARY_KHR + 1), - VK_DRIVER_ID_MAX_ENUM_KHR = 0x7FFFFFFF -} VkDriverIdKHR; -typedef struct VkConformanceVersionKHR { - uint8_t major; - uint8_t minor; - uint8_t subminor; - uint8_t patch; -} VkConformanceVersionKHR; +typedef enum VkExternalMemoryFeatureFlagBitsNV { + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001, + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002, + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004, + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkExternalMemoryFeatureFlagBitsNV; +typedef VkFlags VkExternalMemoryFeatureFlagsNV; +typedef struct VkExternalImageFormatPropertiesNV { + VkImageFormatProperties imageFormatProperties; + VkExternalMemoryFeatureFlagsNV externalMemoryFeatures; + VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes; + VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes; +} VkExternalImageFormatPropertiesNV; -typedef struct VkPhysicalDeviceDriverPropertiesKHR { - VkStructureType sType; - void* pNext; - VkDriverIdKHR driverID; - char driverName[VK_MAX_DRIVER_NAME_SIZE_KHR]; - char driverInfo[VK_MAX_DRIVER_INFO_SIZE_KHR]; - VkConformanceVersionKHR conformanceVersion; -} VkPhysicalDeviceDriverPropertiesKHR; +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties); +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkImageType type, + VkImageTiling tiling, + VkImageUsageFlags usage, + VkImageCreateFlags flags, + VkExternalMemoryHandleTypeFlagsNV externalHandleType, + VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties); +#endif -#define VK_KHR_shader_float_controls 1 -#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4 -#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls" +#define VK_NV_external_memory 1 +#define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1 +#define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory" +typedef struct VkExternalMemoryImageCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagsNV handleTypes; +} VkExternalMemoryImageCreateInfoNV; -typedef enum VkShaderFloatControlsIndependenceKHR { - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_BEGIN_RANGE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_END_RANGE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_RANGE_SIZE_KHR = (VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR + 1), - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM_KHR = 0x7FFFFFFF -} VkShaderFloatControlsIndependenceKHR; -typedef struct VkPhysicalDeviceFloatControlsPropertiesKHR { - VkStructureType sType; - void* pNext; - VkShaderFloatControlsIndependenceKHR denormBehaviorIndependence; - VkShaderFloatControlsIndependenceKHR roundingModeIndependence; - VkBool32 shaderSignedZeroInfNanPreserveFloat16; - VkBool32 shaderSignedZeroInfNanPreserveFloat32; - VkBool32 shaderSignedZeroInfNanPreserveFloat64; - VkBool32 shaderDenormPreserveFloat16; - VkBool32 shaderDenormPreserveFloat32; - VkBool32 shaderDenormPreserveFloat64; - VkBool32 shaderDenormFlushToZeroFloat16; - VkBool32 shaderDenormFlushToZeroFloat32; - VkBool32 shaderDenormFlushToZeroFloat64; - VkBool32 shaderRoundingModeRTEFloat16; - VkBool32 shaderRoundingModeRTEFloat32; - VkBool32 shaderRoundingModeRTEFloat64; - VkBool32 shaderRoundingModeRTZFloat16; - VkBool32 shaderRoundingModeRTZFloat32; - VkBool32 shaderRoundingModeRTZFloat64; -} VkPhysicalDeviceFloatControlsPropertiesKHR; +typedef struct VkExportMemoryAllocateInfoNV { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagsNV handleTypes; +} VkExportMemoryAllocateInfoNV; -#define VK_KHR_depth_stencil_resolve 1 -#define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1 -#define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve" +#define VK_EXT_validation_flags 1 +#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 2 +#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags" -typedef enum VkResolveModeFlagBitsKHR { - VK_RESOLVE_MODE_NONE_KHR = 0, - VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 0x00000001, - VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 0x00000002, - VK_RESOLVE_MODE_MIN_BIT_KHR = 0x00000004, - VK_RESOLVE_MODE_MAX_BIT_KHR = 0x00000008, - VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkResolveModeFlagBitsKHR; -typedef VkFlags VkResolveModeFlagsKHR; -typedef struct VkSubpassDescriptionDepthStencilResolveKHR { - VkStructureType sType; - const void* pNext; - VkResolveModeFlagBitsKHR depthResolveMode; - VkResolveModeFlagBitsKHR stencilResolveMode; - const VkAttachmentReference2KHR* pDepthStencilResolveAttachment; -} VkSubpassDescriptionDepthStencilResolveKHR; +typedef enum VkValidationCheckEXT { + VK_VALIDATION_CHECK_ALL_EXT = 0, + VK_VALIDATION_CHECK_SHADERS_EXT = 1, + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF +} VkValidationCheckEXT; +typedef struct VkValidationFlagsEXT { + VkStructureType sType; + const void* pNext; + uint32_t disabledValidationCheckCount; + const VkValidationCheckEXT* pDisabledValidationChecks; +} VkValidationFlagsEXT; -typedef struct VkPhysicalDeviceDepthStencilResolvePropertiesKHR { - VkStructureType sType; - void* pNext; - VkResolveModeFlagsKHR supportedDepthResolveModes; - VkResolveModeFlagsKHR supportedStencilResolveModes; - VkBool32 independentResolveNone; - VkBool32 independentResolve; -} VkPhysicalDeviceDepthStencilResolvePropertiesKHR; +#define VK_EXT_shader_subgroup_ballot 1 +#define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1 +#define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot" -#define VK_KHR_swapchain_mutable_format 1 -#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1 -#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format" +#define VK_EXT_shader_subgroup_vote 1 +#define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1 +#define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote" -#define VK_KHR_vulkan_memory_model 1 -#define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3 -#define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model" -typedef struct VkPhysicalDeviceVulkanMemoryModelFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 vulkanMemoryModel; - VkBool32 vulkanMemoryModelDeviceScope; - VkBool32 vulkanMemoryModelAvailabilityVisibilityChains; -} VkPhysicalDeviceVulkanMemoryModelFeaturesKHR; +#define VK_EXT_texture_compression_astc_hdr 1 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION 1 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME "VK_EXT_texture_compression_astc_hdr" +typedef VkPhysicalDeviceTextureCompressionASTCHDRFeatures VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT; -#define VK_KHR_surface_protected_capabilities 1 -#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION 1 -#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME "VK_KHR_surface_protected_capabilities" -typedef struct VkSurfaceProtectedCapabilitiesKHR { + +#define VK_EXT_astc_decode_mode 1 +#define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1 +#define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME "VK_EXT_astc_decode_mode" +typedef struct VkImageViewASTCDecodeModeEXT { VkStructureType sType; const void* pNext; - VkBool32 supportsProtected; -} VkSurfaceProtectedCapabilitiesKHR; - - + VkFormat decodeMode; +} VkImageViewASTCDecodeModeEXT; -#define VK_KHR_uniform_buffer_standard_layout 1 -#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1 -#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout" -typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR { +typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT { VkStructureType sType; void* pNext; - VkBool32 uniformBufferStandardLayout; -} VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR; + VkBool32 decodeModeSharedExponent; +} VkPhysicalDeviceASTCDecodeFeaturesEXT; -#define VK_KHR_pipeline_executable_properties 1 -#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION 1 -#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME "VK_KHR_pipeline_executable_properties" +#define VK_EXT_conditional_rendering 1 +#define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 2 +#define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME "VK_EXT_conditional_rendering" -typedef enum VkPipelineExecutableStatisticFormatKHR { - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BEGIN_RANGE_KHR = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_END_RANGE_KHR = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_RANGE_SIZE_KHR = (VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR + 1), - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 0x7FFFFFFF -} VkPipelineExecutableStatisticFormatKHR; -typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 pipelineExecutableInfo; -} VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR; +typedef enum VkConditionalRenderingFlagBitsEXT { + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0x00000001, + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkConditionalRenderingFlagBitsEXT; +typedef VkFlags VkConditionalRenderingFlagsEXT; +typedef struct VkConditionalRenderingBeginInfoEXT { + VkStructureType sType; + const void* pNext; + VkBuffer buffer; + VkDeviceSize offset; + VkConditionalRenderingFlagsEXT flags; +} VkConditionalRenderingBeginInfoEXT; -typedef struct VkPipelineInfoKHR { +typedef struct VkPhysicalDeviceConditionalRenderingFeaturesEXT { VkStructureType sType; - const void* pNext; - VkPipeline pipeline; -} VkPipelineInfoKHR; - -typedef struct VkPipelineExecutablePropertiesKHR { - VkStructureType sType; - void* pNext; - VkShaderStageFlags stages; - char name[VK_MAX_DESCRIPTION_SIZE]; - char description[VK_MAX_DESCRIPTION_SIZE]; - uint32_t subgroupSize; -} VkPipelineExecutablePropertiesKHR; + void* pNext; + VkBool32 conditionalRendering; + VkBool32 inheritedConditionalRendering; +} VkPhysicalDeviceConditionalRenderingFeaturesEXT; -typedef struct VkPipelineExecutableInfoKHR { +typedef struct VkCommandBufferInheritanceConditionalRenderingInfoEXT { VkStructureType sType; const void* pNext; - VkPipeline pipeline; - uint32_t executableIndex; -} VkPipelineExecutableInfoKHR; - -typedef union VkPipelineExecutableStatisticValueKHR { - VkBool32 b32; - int64_t i64; - uint64_t u64; - double f64; -} VkPipelineExecutableStatisticValueKHR; - -typedef struct VkPipelineExecutableStatisticKHR { - VkStructureType sType; - void* pNext; - char name[VK_MAX_DESCRIPTION_SIZE]; - char description[VK_MAX_DESCRIPTION_SIZE]; - VkPipelineExecutableStatisticFormatKHR format; - VkPipelineExecutableStatisticValueKHR value; -} VkPipelineExecutableStatisticKHR; - -typedef struct VkPipelineExecutableInternalRepresentationKHR { - VkStructureType sType; - void* pNext; - char name[VK_MAX_DESCRIPTION_SIZE]; - char description[VK_MAX_DESCRIPTION_SIZE]; - VkBool32 isText; - size_t dataSize; - void* pData; -} VkPipelineExecutableInternalRepresentationKHR; + VkBool32 conditionalRenderingEnable; +} VkCommandBufferInheritanceConditionalRenderingInfoEXT; -typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutablePropertiesKHR)(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableStatisticsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics); -typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableInternalRepresentationsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations); +typedef void (VKAPI_PTR *PFN_vkCmdBeginConditionalRenderingEXT)(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin); +typedef void (VKAPI_PTR *PFN_vkCmdEndConditionalRenderingEXT)(VkCommandBuffer commandBuffer); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR( - VkDevice device, - const VkPipelineInfoKHR* pPipelineInfo, - uint32_t* pExecutableCount, - VkPipelineExecutablePropertiesKHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR( - VkDevice device, - const VkPipelineExecutableInfoKHR* pExecutableInfo, - uint32_t* pStatisticCount, - VkPipelineExecutableStatisticKHR* pStatistics); +VKAPI_ATTR void VKAPI_CALL vkCmdBeginConditionalRenderingEXT( + VkCommandBuffer commandBuffer, + const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin); -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR( - VkDevice device, - const VkPipelineExecutableInfoKHR* pExecutableInfo, - uint32_t* pInternalRepresentationCount, - VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations); +VKAPI_ATTR void VKAPI_CALL vkCmdEndConditionalRenderingEXT( + VkCommandBuffer commandBuffer); #endif -#define VK_EXT_debug_report 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) -#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 9 -#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report" +#define VK_NV_clip_space_w_scaling 1 +#define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1 +#define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling" +typedef struct VkViewportWScalingNV { + float xcoeff; + float ycoeff; +} VkViewportWScalingNV; -typedef enum VkDebugReportObjectTypeEXT { - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0, - VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1, - VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2, - VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3, - VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4, - VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5, - VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6, - VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7, - VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8, - VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9, - VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10, - VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11, - VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12, - VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13, - VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14, - VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15, - VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16, - VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17, - VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18, - VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20, - VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23, - VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24, - VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25, - VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26, - VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27, - VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28, - VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29, - VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30, - VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31, - VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32, - VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33, - VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000, - VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000, - VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT, - VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT, - VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT, - VK_DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, - VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, - VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT = (VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT + 1), - VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDebugReportObjectTypeEXT; +typedef struct VkPipelineViewportWScalingStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 viewportWScalingEnable; + uint32_t viewportCount; + const VkViewportWScalingNV* pViewportWScalings; +} VkPipelineViewportWScalingStateCreateInfoNV; -typedef enum VkDebugReportFlagBitsEXT { - VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001, - VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002, - VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004, - VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008, - VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010, - VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDebugReportFlagBitsEXT; -typedef VkFlags VkDebugReportFlagsEXT; -typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)( - VkDebugReportFlagsEXT flags, - VkDebugReportObjectTypeEXT objectType, - uint64_t object, - size_t location, - int32_t messageCode, - const char* pLayerPrefix, - const char* pMessage, - void* pUserData); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings); -typedef struct VkDebugReportCallbackCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkDebugReportFlagsEXT flags; - PFN_vkDebugReportCallbackEXT pfnCallback; - void* pUserData; -} VkDebugReportCallbackCreateInfoEXT; +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV( + VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + const VkViewportWScalingNV* pViewportWScalings); +#endif -typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback); -typedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkDebugReportMessageEXT)(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage); + +#define VK_EXT_direct_mode_display 1 +#define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1 +#define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display" +typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT( - VkInstance instance, - const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDebugReportCallbackEXT* pCallback); +VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT( + VkPhysicalDevice physicalDevice, + VkDisplayKHR display); +#endif -VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT( - VkInstance instance, - VkDebugReportCallbackEXT callback, - const VkAllocationCallbacks* pAllocator); -VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT( - VkInstance instance, - VkDebugReportFlagsEXT flags, - VkDebugReportObjectTypeEXT objectType, - uint64_t object, - size_t location, - int32_t messageCode, - const char* pLayerPrefix, - const char* pMessage); +#define VK_EXT_display_surface_counter 1 +#define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1 +#define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter" + +typedef enum VkSurfaceCounterFlagBitsEXT { + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 0x00000001, + VK_SURFACE_COUNTER_VBLANK_EXT = VK_SURFACE_COUNTER_VBLANK_BIT_EXT, + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkSurfaceCounterFlagBitsEXT; +typedef VkFlags VkSurfaceCounterFlagsEXT; +typedef struct VkSurfaceCapabilities2EXT { + VkStructureType sType; + void* pNext; + uint32_t minImageCount; + uint32_t maxImageCount; + VkExtent2D currentExtent; + VkExtent2D minImageExtent; + VkExtent2D maxImageExtent; + uint32_t maxImageArrayLayers; + VkSurfaceTransformFlagsKHR supportedTransforms; + VkSurfaceTransformFlagBitsKHR currentTransform; + VkCompositeAlphaFlagsKHR supportedCompositeAlpha; + VkImageUsageFlags supportedUsageFlags; + VkSurfaceCounterFlagsEXT supportedSurfaceCounters; +} VkSurfaceCapabilities2EXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT( + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + VkSurfaceCapabilities2EXT* pSurfaceCapabilities); #endif -#define VK_NV_glsl_shader 1 -#define VK_NV_GLSL_SHADER_SPEC_VERSION 1 -#define VK_NV_GLSL_SHADER_EXTENSION_NAME "VK_NV_glsl_shader" +#define VK_EXT_display_control 1 +#define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1 +#define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control" +typedef enum VkDisplayPowerStateEXT { + VK_DISPLAY_POWER_STATE_OFF_EXT = 0, + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1, + VK_DISPLAY_POWER_STATE_ON_EXT = 2, + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDisplayPowerStateEXT; -#define VK_EXT_depth_range_unrestricted 1 -#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1 -#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME "VK_EXT_depth_range_unrestricted" +typedef enum VkDeviceEventTypeEXT { + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0, + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDeviceEventTypeEXT; +typedef enum VkDisplayEventTypeEXT { + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0, + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDisplayEventTypeEXT; +typedef struct VkDisplayPowerInfoEXT { + VkStructureType sType; + const void* pNext; + VkDisplayPowerStateEXT powerState; +} VkDisplayPowerInfoEXT; -#define VK_IMG_filter_cubic 1 -#define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1 -#define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic" +typedef struct VkDeviceEventInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceEventTypeEXT deviceEvent; +} VkDeviceEventInfoEXT; +typedef struct VkDisplayEventInfoEXT { + VkStructureType sType; + const void* pNext; + VkDisplayEventTypeEXT displayEvent; +} VkDisplayEventInfoEXT; -#define VK_AMD_rasterization_order 1 -#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1 -#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order" +typedef struct VkSwapchainCounterCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkSurfaceCounterFlagsEXT surfaceCounters; +} VkSwapchainCounterCreateInfoEXT; -typedef enum VkRasterizationOrderAMD { - VK_RASTERIZATION_ORDER_STRICT_AMD = 0, - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1, - VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD = VK_RASTERIZATION_ORDER_STRICT_AMD, - VK_RASTERIZATION_ORDER_END_RANGE_AMD = VK_RASTERIZATION_ORDER_RELAXED_AMD, - VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD = (VK_RASTERIZATION_ORDER_RELAXED_AMD - VK_RASTERIZATION_ORDER_STRICT_AMD + 1), - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF -} VkRasterizationOrderAMD; -typedef struct VkPipelineRasterizationStateRasterizationOrderAMD { - VkStructureType sType; - const void* pNext; - VkRasterizationOrderAMD rasterizationOrder; -} VkPipelineRasterizationStateRasterizationOrderAMD; +typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo); +typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence); +typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence); +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT( + VkDevice device, + VkDisplayKHR display, + const VkDisplayPowerInfoEXT* pDisplayPowerInfo); +VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT( + VkDevice device, + const VkDeviceEventInfoEXT* pDeviceEventInfo, + const VkAllocationCallbacks* pAllocator, + VkFence* pFence); +VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT( + VkDevice device, + VkDisplayKHR display, + const VkDisplayEventInfoEXT* pDisplayEventInfo, + const VkAllocationCallbacks* pAllocator, + VkFence* pFence); -#define VK_AMD_shader_trinary_minmax 1 -#define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1 -#define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax" +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT( + VkDevice device, + VkSwapchainKHR swapchain, + VkSurfaceCounterFlagBitsEXT counter, + uint64_t* pCounterValue); +#endif -#define VK_AMD_shader_explicit_vertex_parameter 1 -#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1 -#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter" +#define VK_GOOGLE_display_timing 1 +#define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1 +#define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing" +typedef struct VkRefreshCycleDurationGOOGLE { + uint64_t refreshDuration; +} VkRefreshCycleDurationGOOGLE; +typedef struct VkPastPresentationTimingGOOGLE { + uint32_t presentID; + uint64_t desiredPresentTime; + uint64_t actualPresentTime; + uint64_t earliestPresentTime; + uint64_t presentMargin; +} VkPastPresentationTimingGOOGLE; -#define VK_EXT_debug_marker 1 -#define VK_EXT_DEBUG_MARKER_SPEC_VERSION 4 -#define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker" -typedef struct VkDebugMarkerObjectNameInfoEXT { - VkStructureType sType; - const void* pNext; - VkDebugReportObjectTypeEXT objectType; - uint64_t object; - const char* pObjectName; -} VkDebugMarkerObjectNameInfoEXT; +typedef struct VkPresentTimeGOOGLE { + uint32_t presentID; + uint64_t desiredPresentTime; +} VkPresentTimeGOOGLE; -typedef struct VkDebugMarkerObjectTagInfoEXT { +typedef struct VkPresentTimesInfoGOOGLE { VkStructureType sType; const void* pNext; - VkDebugReportObjectTypeEXT objectType; - uint64_t object; - uint64_t tagName; - size_t tagSize; - const void* pTag; -} VkDebugMarkerObjectTagInfoEXT; - -typedef struct VkDebugMarkerMarkerInfoEXT { - VkStructureType sType; - const void* pNext; - const char* pMarkerName; - float color[4]; -} VkDebugMarkerMarkerInfoEXT; + uint32_t swapchainCount; + const VkPresentTimeGOOGLE* pTimes; +} VkPresentTimesInfoGOOGLE; -typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo); -typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo); -typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); -typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer); -typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT( +VKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE( VkDevice device, - const VkDebugMarkerObjectTagInfoEXT* pTagInfo); + VkSwapchainKHR swapchain, + VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties); -VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT( +VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE( VkDevice device, - const VkDebugMarkerObjectNameInfoEXT* pNameInfo); + VkSwapchainKHR swapchain, + uint32_t* pPresentationTimingCount, + VkPastPresentationTimingGOOGLE* pPresentationTimings); +#endif -VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT( - VkCommandBuffer commandBuffer, - const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); -VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT( - VkCommandBuffer commandBuffer); +#define VK_NV_sample_mask_override_coverage 1 +#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1 +#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage" -VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT( - VkCommandBuffer commandBuffer, - const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); -#endif +#define VK_NV_geometry_shader_passthrough 1 +#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1 +#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough" -#define VK_AMD_gcn_shader 1 -#define VK_AMD_GCN_SHADER_SPEC_VERSION 1 -#define VK_AMD_GCN_SHADER_EXTENSION_NAME "VK_AMD_gcn_shader" +#define VK_NV_viewport_array2 1 +#define VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION 1 +#define VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME "VK_NV_viewport_array2" +#define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION +#define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME -#define VK_NV_dedicated_allocation 1 -#define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1 -#define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation" -typedef struct VkDedicatedAllocationImageCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkBool32 dedicatedAllocation; -} VkDedicatedAllocationImageCreateInfoNV; -typedef struct VkDedicatedAllocationBufferCreateInfoNV { +#define VK_NVX_multiview_per_view_attributes 1 +#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1 +#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes" +typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX { VkStructureType sType; - const void* pNext; - VkBool32 dedicatedAllocation; -} VkDedicatedAllocationBufferCreateInfoNV; + void* pNext; + VkBool32 perViewPositionAllComponents; +} VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; -typedef struct VkDedicatedAllocationMemoryAllocateInfoNV { - VkStructureType sType; - const void* pNext; - VkImage image; - VkBuffer buffer; -} VkDedicatedAllocationMemoryAllocateInfoNV; +#define VK_NV_viewport_swizzle 1 +#define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1 +#define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle" -#define VK_EXT_transform_feedback 1 -#define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1 -#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback" -typedef VkFlags VkPipelineRasterizationStateStreamCreateFlagsEXT; -typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 transformFeedback; - VkBool32 geometryStreams; -} VkPhysicalDeviceTransformFeedbackFeaturesEXT; +typedef enum VkViewportCoordinateSwizzleNV { + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0, + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1, + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2, + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3, + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4, + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5, + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6, + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7, + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 0x7FFFFFFF +} VkViewportCoordinateSwizzleNV; +typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV; +typedef struct VkViewportSwizzleNV { + VkViewportCoordinateSwizzleNV x; + VkViewportCoordinateSwizzleNV y; + VkViewportCoordinateSwizzleNV z; + VkViewportCoordinateSwizzleNV w; +} VkViewportSwizzleNV; -typedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT { +typedef struct VkPipelineViewportSwizzleStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineViewportSwizzleStateCreateFlagsNV flags; + uint32_t viewportCount; + const VkViewportSwizzleNV* pViewportSwizzles; +} VkPipelineViewportSwizzleStateCreateInfoNV; + + + +#define VK_EXT_discard_rectangles 1 +#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1 +#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles" + +typedef enum VkDiscardRectangleModeEXT { + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0, + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1, + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDiscardRectangleModeEXT; +typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT; +typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT { VkStructureType sType; void* pNext; - uint32_t maxTransformFeedbackStreams; - uint32_t maxTransformFeedbackBuffers; - VkDeviceSize maxTransformFeedbackBufferSize; - uint32_t maxTransformFeedbackStreamDataSize; - uint32_t maxTransformFeedbackBufferDataSize; - uint32_t maxTransformFeedbackBufferDataStride; - VkBool32 transformFeedbackQueries; - VkBool32 transformFeedbackStreamsLinesTriangles; - VkBool32 transformFeedbackRasterizationStreamSelect; - VkBool32 transformFeedbackDraw; -} VkPhysicalDeviceTransformFeedbackPropertiesEXT; + uint32_t maxDiscardRectangles; +} VkPhysicalDeviceDiscardRectanglePropertiesEXT; -typedef struct VkPipelineRasterizationStateStreamCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkPipelineRasterizationStateStreamCreateFlagsEXT flags; - uint32_t rasterizationStream; -} VkPipelineRasterizationStateStreamCreateInfoEXT; +typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineDiscardRectangleStateCreateFlagsEXT flags; + VkDiscardRectangleModeEXT discardRectangleMode; + uint32_t discardRectangleCount; + const VkRect2D* pDiscardRectangles; +} VkPipelineDiscardRectangleStateCreateInfoEXT; -typedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes); -typedef void (VKAPI_PTR *PFN_vkCmdBeginTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); -typedef void (VKAPI_PTR *PFN_vkCmdEndTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); -typedef void (VKAPI_PTR *PFN_vkCmdBeginQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index); -typedef void (VKAPI_PTR *PFN_vkCmdEndQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index); -typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectByteCountEXT)(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride); +typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT( +VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT( VkCommandBuffer commandBuffer, - uint32_t firstBinding, - uint32_t bindingCount, - const VkBuffer* pBuffers, - const VkDeviceSize* pOffsets, - const VkDeviceSize* pSizes); + uint32_t firstDiscardRectangle, + uint32_t discardRectangleCount, + const VkRect2D* pDiscardRectangles); +#endif -VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedbackEXT( - VkCommandBuffer commandBuffer, - uint32_t firstCounterBuffer, - uint32_t counterBufferCount, - const VkBuffer* pCounterBuffers, - const VkDeviceSize* pCounterBufferOffsets); -VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedbackEXT( - VkCommandBuffer commandBuffer, - uint32_t firstCounterBuffer, - uint32_t counterBufferCount, - const VkBuffer* pCounterBuffers, - const VkDeviceSize* pCounterBufferOffsets); +#define VK_EXT_conservative_rasterization 1 +#define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1 +#define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization" + +typedef enum VkConservativeRasterizationModeEXT { + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0, + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1, + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2, + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkConservativeRasterizationModeEXT; +typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT; +typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT { + VkStructureType sType; + void* pNext; + float primitiveOverestimationSize; + float maxExtraPrimitiveOverestimationSize; + float extraPrimitiveOverestimationSizeGranularity; + VkBool32 primitiveUnderestimation; + VkBool32 conservativePointAndLineRasterization; + VkBool32 degenerateTrianglesRasterized; + VkBool32 degenerateLinesRasterized; + VkBool32 fullyCoveredFragmentShaderInputVariable; + VkBool32 conservativeRasterizationPostDepthCoverage; +} VkPhysicalDeviceConservativeRasterizationPropertiesEXT; + +typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationConservativeStateCreateFlagsEXT flags; + VkConservativeRasterizationModeEXT conservativeRasterizationMode; + float extraPrimitiveOverestimationSize; +} VkPipelineRasterizationConservativeStateCreateInfoEXT; + + + +#define VK_EXT_depth_clip_enable 1 +#define VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION 1 +#define VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME "VK_EXT_depth_clip_enable" +typedef VkFlags VkPipelineRasterizationDepthClipStateCreateFlagsEXT; +typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 depthClipEnable; +} VkPhysicalDeviceDepthClipEnableFeaturesEXT; + +typedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationDepthClipStateCreateFlagsEXT flags; + VkBool32 depthClipEnable; +} VkPipelineRasterizationDepthClipStateCreateInfoEXT; + -VKAPI_ATTR void VKAPI_CALL vkCmdBeginQueryIndexedEXT( - VkCommandBuffer commandBuffer, - VkQueryPool queryPool, - uint32_t query, - VkQueryControlFlags flags, - uint32_t index); -VKAPI_ATTR void VKAPI_CALL vkCmdEndQueryIndexedEXT( - VkCommandBuffer commandBuffer, - VkQueryPool queryPool, - uint32_t query, - uint32_t index); +#define VK_EXT_swapchain_colorspace 1 +#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 4 +#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace" -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCountEXT( - VkCommandBuffer commandBuffer, - uint32_t instanceCount, - uint32_t firstInstance, - VkBuffer counterBuffer, - VkDeviceSize counterBufferOffset, - uint32_t counterOffset, - uint32_t vertexStride); -#endif +#define VK_EXT_hdr_metadata 1 +#define VK_EXT_HDR_METADATA_SPEC_VERSION 2 +#define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata" +typedef struct VkXYColorEXT { + float x; + float y; +} VkXYColorEXT; -#define VK_NVX_image_view_handle 1 -#define VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION 1 -#define VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME "VK_NVX_image_view_handle" -typedef struct VkImageViewHandleInfoNVX { - VkStructureType sType; - const void* pNext; - VkImageView imageView; - VkDescriptorType descriptorType; - VkSampler sampler; -} VkImageViewHandleInfoNVX; +typedef struct VkHdrMetadataEXT { + VkStructureType sType; + const void* pNext; + VkXYColorEXT displayPrimaryRed; + VkXYColorEXT displayPrimaryGreen; + VkXYColorEXT displayPrimaryBlue; + VkXYColorEXT whitePoint; + float maxLuminance; + float minLuminance; + float maxContentLightLevel; + float maxFrameAverageLightLevel; +} VkHdrMetadataEXT; -typedef uint32_t (VKAPI_PTR *PFN_vkGetImageViewHandleNVX)(VkDevice device, const VkImageViewHandleInfoNVX* pInfo); +typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR uint32_t VKAPI_CALL vkGetImageViewHandleNVX( +VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT( VkDevice device, - const VkImageViewHandleInfoNVX* pInfo); + uint32_t swapchainCount, + const VkSwapchainKHR* pSwapchains, + const VkHdrMetadataEXT* pMetadata); #endif -#define VK_AMD_draw_indirect_count 1 -#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 2 -#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count" -typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); -typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +#define VK_EXT_external_memory_dma_buf 1 +#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1 +#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf" -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkBuffer countBuffer, - VkDeviceSize countBufferOffset, - uint32_t maxDrawCount, - uint32_t stride); -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkBuffer countBuffer, - VkDeviceSize countBufferOffset, - uint32_t maxDrawCount, - uint32_t stride); -#endif +#define VK_EXT_queue_family_foreign 1 +#define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1 +#define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign" +#define VK_QUEUE_FAMILY_FOREIGN_EXT (~2U) -#define VK_AMD_negative_viewport_height 1 -#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1 -#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height" +#define VK_EXT_debug_utils 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT) +#define VK_EXT_DEBUG_UTILS_SPEC_VERSION 2 +#define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils" +typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT; +typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT { + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001, + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010, + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100, + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000, + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDebugUtilsMessageSeverityFlagBitsEXT; -#define VK_AMD_gpu_shader_half_float 1 -#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 2 -#define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float" +typedef enum VkDebugUtilsMessageTypeFlagBitsEXT { + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001, + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002, + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004, + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDebugUtilsMessageTypeFlagBitsEXT; +typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT; +typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT; +typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT; +typedef struct VkDebugUtilsLabelEXT { + VkStructureType sType; + const void* pNext; + const char* pLabelName; + float color[4]; +} VkDebugUtilsLabelEXT; +typedef struct VkDebugUtilsObjectNameInfoEXT { + VkStructureType sType; + const void* pNext; + VkObjectType objectType; + uint64_t objectHandle; + const char* pObjectName; +} VkDebugUtilsObjectNameInfoEXT; -#define VK_AMD_shader_ballot 1 -#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1 -#define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot" +typedef struct VkDebugUtilsMessengerCallbackDataEXT { + VkStructureType sType; + const void* pNext; + VkDebugUtilsMessengerCallbackDataFlagsEXT flags; + const char* pMessageIdName; + int32_t messageIdNumber; + const char* pMessage; + uint32_t queueLabelCount; + const VkDebugUtilsLabelEXT* pQueueLabels; + uint32_t cmdBufLabelCount; + const VkDebugUtilsLabelEXT* pCmdBufLabels; + uint32_t objectCount; + const VkDebugUtilsObjectNameInfoEXT* pObjects; +} VkDebugUtilsMessengerCallbackDataEXT; +typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)( + VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VkDebugUtilsMessageTypeFlagsEXT messageTypes, + const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, + void* pUserData); -#define VK_AMD_texture_gather_bias_lod 1 -#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1 -#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod" -typedef struct VkTextureLODGatherFormatPropertiesAMD { +typedef struct VkDebugUtilsMessengerCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugUtilsMessengerCreateFlagsEXT flags; + VkDebugUtilsMessageSeverityFlagsEXT messageSeverity; + VkDebugUtilsMessageTypeFlagsEXT messageType; + PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback; + void* pUserData; +} VkDebugUtilsMessengerCreateInfoEXT; + +typedef struct VkDebugUtilsObjectTagInfoEXT { VkStructureType sType; - void* pNext; - VkBool32 supportsTextureGatherLODBiasAMD; -} VkTextureLODGatherFormatPropertiesAMD; + const void* pNext; + VkObjectType objectType; + uint64_t objectHandle; + uint64_t tagName; + size_t tagSize; + const void* pTag; +} VkDebugUtilsObjectTagInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectNameEXT)(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo); +typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectTagEXT)(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo); +typedef void (VKAPI_PTR *PFN_vkQueueBeginDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo); +typedef void (VKAPI_PTR *PFN_vkQueueEndDebugUtilsLabelEXT)(VkQueue queue); +typedef void (VKAPI_PTR *PFN_vkQueueInsertDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBeginDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdInsertDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugUtilsMessengerEXT)(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger); +typedef void (VKAPI_PTR *PFN_vkDestroyDebugUtilsMessengerEXT)(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkSubmitDebugUtilsMessageEXT)(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData); +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT( + VkDevice device, + const VkDebugUtilsObjectNameInfoEXT* pNameInfo); +VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT( + VkDevice device, + const VkDebugUtilsObjectTagInfoEXT* pTagInfo); -#define VK_AMD_shader_info 1 -#define VK_AMD_SHADER_INFO_SPEC_VERSION 1 -#define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info" +VKAPI_ATTR void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT( + VkQueue queue, + const VkDebugUtilsLabelEXT* pLabelInfo); -typedef enum VkShaderInfoTypeAMD { - VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0, - VK_SHADER_INFO_TYPE_BINARY_AMD = 1, - VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2, - VK_SHADER_INFO_TYPE_BEGIN_RANGE_AMD = VK_SHADER_INFO_TYPE_STATISTICS_AMD, - VK_SHADER_INFO_TYPE_END_RANGE_AMD = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD, - VK_SHADER_INFO_TYPE_RANGE_SIZE_AMD = (VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD - VK_SHADER_INFO_TYPE_STATISTICS_AMD + 1), - VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 0x7FFFFFFF -} VkShaderInfoTypeAMD; -typedef struct VkShaderResourceUsageAMD { - uint32_t numUsedVgprs; - uint32_t numUsedSgprs; - uint32_t ldsSizePerLocalWorkGroup; - size_t ldsUsageSizeInBytes; - size_t scratchMemUsageInBytes; -} VkShaderResourceUsageAMD; +VKAPI_ATTR void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT( + VkQueue queue); -typedef struct VkShaderStatisticsInfoAMD { - VkShaderStageFlags shaderStageMask; - VkShaderResourceUsageAMD resourceUsage; - uint32_t numPhysicalVgprs; - uint32_t numPhysicalSgprs; - uint32_t numAvailableVgprs; - uint32_t numAvailableSgprs; - uint32_t computeWorkGroupSize[3]; -} VkShaderStatisticsInfoAMD; +VKAPI_ATTR void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT( + VkQueue queue, + const VkDebugUtilsLabelEXT* pLabelInfo); -typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo); +VKAPI_ATTR void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT( + VkCommandBuffer commandBuffer, + const VkDebugUtilsLabelEXT* pLabelInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT( + VkCommandBuffer commandBuffer); + +VKAPI_ATTR void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT( + VkCommandBuffer commandBuffer, + const VkDebugUtilsLabelEXT* pLabelInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT( + VkInstance instance, + const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDebugUtilsMessengerEXT* pMessenger); + +VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT( + VkInstance instance, + VkDebugUtilsMessengerEXT messenger, + const VkAllocationCallbacks* pAllocator); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD( - VkDevice device, - VkPipeline pipeline, - VkShaderStageFlagBits shaderStage, - VkShaderInfoTypeAMD infoType, - size_t* pInfoSize, - void* pInfo); +VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT( + VkInstance instance, + VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VkDebugUtilsMessageTypeFlagsEXT messageTypes, + const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData); #endif -#define VK_AMD_shader_image_load_store_lod 1 -#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1 -#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod" +#define VK_EXT_sampler_filter_minmax 1 +#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2 +#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax" +typedef VkSamplerReductionMode VkSamplerReductionModeEXT; +typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT; -#define VK_NV_corner_sampled_image 1 -#define VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION 2 -#define VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME "VK_NV_corner_sampled_image" -typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 cornerSampledImage; -} VkPhysicalDeviceCornerSampledImageFeaturesNV; +typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT; -#define VK_IMG_format_pvrtc 1 -#define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1 -#define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc" +#define VK_AMD_gpu_shader_int16 1 +#define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 2 +#define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16" -#define VK_NV_external_memory_capabilities 1 -#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 -#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities" +#define VK_AMD_mixed_attachment_samples 1 +#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1 +#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples" -typedef enum VkExternalMemoryHandleTypeFlagBitsNV { - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF -} VkExternalMemoryHandleTypeFlagBitsNV; -typedef VkFlags VkExternalMemoryHandleTypeFlagsNV; -typedef enum VkExternalMemoryFeatureFlagBitsNV { - VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001, - VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002, - VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004, - VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF -} VkExternalMemoryFeatureFlagBitsNV; -typedef VkFlags VkExternalMemoryFeatureFlagsNV; -typedef struct VkExternalImageFormatPropertiesNV { - VkImageFormatProperties imageFormatProperties; - VkExternalMemoryFeatureFlagsNV externalMemoryFeatures; - VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes; - VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes; -} VkExternalImageFormatPropertiesNV; +#define VK_AMD_shader_fragment_mask 1 +#define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1 +#define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask" -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV( - VkPhysicalDevice physicalDevice, - VkFormat format, - VkImageType type, - VkImageTiling tiling, - VkImageUsageFlags usage, - VkImageCreateFlags flags, - VkExternalMemoryHandleTypeFlagsNV externalHandleType, - VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties); -#endif +#define VK_EXT_inline_uniform_block 1 +#define VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION 1 +#define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block" +typedef VkPhysicalDeviceInlineUniformBlockFeatures VkPhysicalDeviceInlineUniformBlockFeaturesEXT; +typedef VkPhysicalDeviceInlineUniformBlockProperties VkPhysicalDeviceInlineUniformBlockPropertiesEXT; -#define VK_NV_external_memory 1 -#define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1 -#define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory" -typedef struct VkExternalMemoryImageCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkExternalMemoryHandleTypeFlagsNV handleTypes; -} VkExternalMemoryImageCreateInfoNV; +typedef VkWriteDescriptorSetInlineUniformBlock VkWriteDescriptorSetInlineUniformBlockEXT; -typedef struct VkExportMemoryAllocateInfoNV { - VkStructureType sType; - const void* pNext; - VkExternalMemoryHandleTypeFlagsNV handleTypes; -} VkExportMemoryAllocateInfoNV; +typedef VkDescriptorPoolInlineUniformBlockCreateInfo VkDescriptorPoolInlineUniformBlockCreateInfoEXT; -#define VK_EXT_validation_flags 1 -#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1 -#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags" +#define VK_EXT_shader_stencil_export 1 +#define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1 +#define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export" -typedef enum VkValidationCheckEXT { - VK_VALIDATION_CHECK_ALL_EXT = 0, - VK_VALIDATION_CHECK_SHADERS_EXT = 1, - VK_VALIDATION_CHECK_BEGIN_RANGE_EXT = VK_VALIDATION_CHECK_ALL_EXT, - VK_VALIDATION_CHECK_END_RANGE_EXT = VK_VALIDATION_CHECK_SHADERS_EXT, - VK_VALIDATION_CHECK_RANGE_SIZE_EXT = (VK_VALIDATION_CHECK_SHADERS_EXT - VK_VALIDATION_CHECK_ALL_EXT + 1), - VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF -} VkValidationCheckEXT; -typedef struct VkValidationFlagsEXT { - VkStructureType sType; - const void* pNext; - uint32_t disabledValidationCheckCount; - const VkValidationCheckEXT* pDisabledValidationChecks; -} VkValidationFlagsEXT; +#define VK_EXT_sample_locations 1 +#define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1 +#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations" +typedef struct VkSampleLocationEXT { + float x; + float y; +} VkSampleLocationEXT; +typedef struct VkSampleLocationsInfoEXT { + VkStructureType sType; + const void* pNext; + VkSampleCountFlagBits sampleLocationsPerPixel; + VkExtent2D sampleLocationGridSize; + uint32_t sampleLocationsCount; + const VkSampleLocationEXT* pSampleLocations; +} VkSampleLocationsInfoEXT; -#define VK_EXT_shader_subgroup_ballot 1 -#define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1 -#define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot" +typedef struct VkAttachmentSampleLocationsEXT { + uint32_t attachmentIndex; + VkSampleLocationsInfoEXT sampleLocationsInfo; +} VkAttachmentSampleLocationsEXT; +typedef struct VkSubpassSampleLocationsEXT { + uint32_t subpassIndex; + VkSampleLocationsInfoEXT sampleLocationsInfo; +} VkSubpassSampleLocationsEXT; -#define VK_EXT_shader_subgroup_vote 1 -#define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1 -#define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote" +typedef struct VkRenderPassSampleLocationsBeginInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t attachmentInitialSampleLocationsCount; + const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations; + uint32_t postSubpassSampleLocationsCount; + const VkSubpassSampleLocationsEXT* pPostSubpassSampleLocations; +} VkRenderPassSampleLocationsBeginInfoEXT; +typedef struct VkPipelineSampleLocationsStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 sampleLocationsEnable; + VkSampleLocationsInfoEXT sampleLocationsInfo; +} VkPipelineSampleLocationsStateCreateInfoEXT; -#define VK_EXT_texture_compression_astc_hdr 1 -#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION 1 -#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME "VK_EXT_texture_compression_astc_hdr" -typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT { +typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT { + VkStructureType sType; + void* pNext; + VkSampleCountFlags sampleLocationSampleCounts; + VkExtent2D maxSampleLocationGridSize; + float sampleLocationCoordinateRange[2]; + uint32_t sampleLocationSubPixelBits; + VkBool32 variableSampleLocations; +} VkPhysicalDeviceSampleLocationsPropertiesEXT; + +typedef struct VkMultisamplePropertiesEXT { VkStructureType sType; - const void* pNext; - VkBool32 textureCompressionASTC_HDR; -} VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT; + void* pNext; + VkExtent2D maxSampleLocationGridSize; +} VkMultisamplePropertiesEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT( + VkCommandBuffer commandBuffer, + const VkSampleLocationsInfoEXT* pSampleLocationsInfo); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT( + VkPhysicalDevice physicalDevice, + VkSampleCountFlagBits samples, + VkMultisamplePropertiesEXT* pMultisampleProperties); +#endif +#define VK_EXT_blend_operation_advanced 1 +#define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2 +#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced" -#define VK_EXT_astc_decode_mode 1 -#define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1 -#define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME "VK_EXT_astc_decode_mode" -typedef struct VkImageViewASTCDecodeModeEXT { +typedef enum VkBlendOverlapEXT { + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0, + VK_BLEND_OVERLAP_DISJOINT_EXT = 1, + VK_BLEND_OVERLAP_CONJOINT_EXT = 2, + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 0x7FFFFFFF +} VkBlendOverlapEXT; +typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT { VkStructureType sType; - const void* pNext; - VkFormat decodeMode; -} VkImageViewASTCDecodeModeEXT; + void* pNext; + VkBool32 advancedBlendCoherentOperations; +} VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT; -typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT { +typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT { VkStructureType sType; void* pNext; - VkBool32 decodeModeSharedExponent; -} VkPhysicalDeviceASTCDecodeFeaturesEXT; + uint32_t advancedBlendMaxColorAttachments; + VkBool32 advancedBlendIndependentBlend; + VkBool32 advancedBlendNonPremultipliedSrcColor; + VkBool32 advancedBlendNonPremultipliedDstColor; + VkBool32 advancedBlendCorrelatedOverlap; + VkBool32 advancedBlendAllOperations; +} VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT; + +typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 srcPremultiplied; + VkBool32 dstPremultiplied; + VkBlendOverlapEXT blendOverlap; +} VkPipelineColorBlendAdvancedStateCreateInfoEXT; + + + +#define VK_NV_fragment_coverage_to_color 1 +#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1 +#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color" +typedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV; +typedef struct VkPipelineCoverageToColorStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineCoverageToColorStateCreateFlagsNV flags; + VkBool32 coverageToColorEnable; + uint32_t coverageToColorLocation; +} VkPipelineCoverageToColorStateCreateInfoNV; + + + +#define VK_NV_framebuffer_mixed_samples 1 +#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1 +#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples" + +typedef enum VkCoverageModulationModeNV { + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0, + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1, + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2, + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3, + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 0x7FFFFFFF +} VkCoverageModulationModeNV; +typedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV; +typedef struct VkPipelineCoverageModulationStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineCoverageModulationStateCreateFlagsNV flags; + VkCoverageModulationModeNV coverageModulationMode; + VkBool32 coverageModulationTableEnable; + uint32_t coverageModulationTableCount; + const float* pCoverageModulationTable; +} VkPipelineCoverageModulationStateCreateInfoNV; -#define VK_EXT_conditional_rendering 1 -#define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 2 -#define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME "VK_EXT_conditional_rendering" +#define VK_NV_fill_rectangle 1 +#define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1 +#define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle" -typedef enum VkConditionalRenderingFlagBitsEXT { - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0x00000001, - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkConditionalRenderingFlagBitsEXT; -typedef VkFlags VkConditionalRenderingFlagsEXT; -typedef struct VkConditionalRenderingBeginInfoEXT { - VkStructureType sType; - const void* pNext; - VkBuffer buffer; - VkDeviceSize offset; - VkConditionalRenderingFlagsEXT flags; -} VkConditionalRenderingBeginInfoEXT; -typedef struct VkPhysicalDeviceConditionalRenderingFeaturesEXT { +#define VK_NV_shader_sm_builtins 1 +#define VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION 1 +#define VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME "VK_NV_shader_sm_builtins" +typedef struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV { VkStructureType sType; void* pNext; - VkBool32 conditionalRendering; - VkBool32 inheritedConditionalRendering; -} VkPhysicalDeviceConditionalRenderingFeaturesEXT; + uint32_t shaderSMCount; + uint32_t shaderWarpsPerSM; +} VkPhysicalDeviceShaderSMBuiltinsPropertiesNV; -typedef struct VkCommandBufferInheritanceConditionalRenderingInfoEXT { +typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV { VkStructureType sType; - const void* pNext; - VkBool32 conditionalRenderingEnable; -} VkCommandBufferInheritanceConditionalRenderingInfoEXT; + void* pNext; + VkBool32 shaderSMBuiltins; +} VkPhysicalDeviceShaderSMBuiltinsFeaturesNV; -typedef void (VKAPI_PTR *PFN_vkCmdBeginConditionalRenderingEXT)(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin); -typedef void (VKAPI_PTR *PFN_vkCmdEndConditionalRenderingEXT)(VkCommandBuffer commandBuffer); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdBeginConditionalRenderingEXT( - VkCommandBuffer commandBuffer, - const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin); -VKAPI_ATTR void VKAPI_CALL vkCmdEndConditionalRenderingEXT( - VkCommandBuffer commandBuffer); -#endif +#define VK_EXT_post_depth_coverage 1 +#define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1 +#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage" + + +#define VK_EXT_image_drm_format_modifier 1 +#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 2 +#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME "VK_EXT_image_drm_format_modifier" +typedef struct VkDrmFormatModifierPropertiesEXT { + uint64_t drmFormatModifier; + uint32_t drmFormatModifierPlaneCount; + VkFormatFeatureFlags drmFormatModifierTilingFeatures; +} VkDrmFormatModifierPropertiesEXT; +typedef struct VkDrmFormatModifierPropertiesListEXT { + VkStructureType sType; + void* pNext; + uint32_t drmFormatModifierCount; + VkDrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties; +} VkDrmFormatModifierPropertiesListEXT; -#define VK_NVX_device_generated_commands 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkObjectTableNVX) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNVX) -#define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3 -#define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands" - -typedef enum VkIndirectCommandsTokenTypeNVX { - VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = 0, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = 1, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = 2, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = 3, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = 4, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = 5, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = 6, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = 7, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_BEGIN_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_END_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_RANGE_SIZE_NVX = (VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX - VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX + 1), - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF -} VkIndirectCommandsTokenTypeNVX; - -typedef enum VkObjectEntryTypeNVX { - VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = 0, - VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX = 1, - VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = 2, - VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = 3, - VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = 4, - VK_OBJECT_ENTRY_TYPE_BEGIN_RANGE_NVX = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX, - VK_OBJECT_ENTRY_TYPE_END_RANGE_NVX = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX, - VK_OBJECT_ENTRY_TYPE_RANGE_SIZE_NVX = (VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX - VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX + 1), - VK_OBJECT_ENTRY_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF -} VkObjectEntryTypeNVX; - -typedef enum VkIndirectCommandsLayoutUsageFlagBitsNVX { - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF -} VkIndirectCommandsLayoutUsageFlagBitsNVX; -typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNVX; - -typedef enum VkObjectEntryUsageFlagBitsNVX { - VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001, - VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002, - VK_OBJECT_ENTRY_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF -} VkObjectEntryUsageFlagBitsNVX; -typedef VkFlags VkObjectEntryUsageFlagsNVX; -typedef struct VkDeviceGeneratedCommandsFeaturesNVX { +typedef struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT { VkStructureType sType; const void* pNext; - VkBool32 computeBindingPointSupport; -} VkDeviceGeneratedCommandsFeaturesNVX; + uint64_t drmFormatModifier; + VkSharingMode sharingMode; + uint32_t queueFamilyIndexCount; + const uint32_t* pQueueFamilyIndices; +} VkPhysicalDeviceImageDrmFormatModifierInfoEXT; -typedef struct VkDeviceGeneratedCommandsLimitsNVX { +typedef struct VkImageDrmFormatModifierListCreateInfoEXT { VkStructureType sType; const void* pNext; - uint32_t maxIndirectCommandsLayoutTokenCount; - uint32_t maxObjectEntryCounts; - uint32_t minSequenceCountBufferOffsetAlignment; - uint32_t minSequenceIndexBufferOffsetAlignment; - uint32_t minCommandsTokenBufferOffsetAlignment; -} VkDeviceGeneratedCommandsLimitsNVX; - -typedef struct VkIndirectCommandsTokenNVX { - VkIndirectCommandsTokenTypeNVX tokenType; - VkBuffer buffer; - VkDeviceSize offset; -} VkIndirectCommandsTokenNVX; + uint32_t drmFormatModifierCount; + const uint64_t* pDrmFormatModifiers; +} VkImageDrmFormatModifierListCreateInfoEXT; -typedef struct VkIndirectCommandsLayoutTokenNVX { - VkIndirectCommandsTokenTypeNVX tokenType; - uint32_t bindingUnit; - uint32_t dynamicCount; - uint32_t divisor; -} VkIndirectCommandsLayoutTokenNVX; +typedef struct VkImageDrmFormatModifierExplicitCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint64_t drmFormatModifier; + uint32_t drmFormatModifierPlaneCount; + const VkSubresourceLayout* pPlaneLayouts; +} VkImageDrmFormatModifierExplicitCreateInfoEXT; -typedef struct VkIndirectCommandsLayoutCreateInfoNVX { - VkStructureType sType; - const void* pNext; - VkPipelineBindPoint pipelineBindPoint; - VkIndirectCommandsLayoutUsageFlagsNVX flags; - uint32_t tokenCount; - const VkIndirectCommandsLayoutTokenNVX* pTokens; -} VkIndirectCommandsLayoutCreateInfoNVX; +typedef struct VkImageDrmFormatModifierPropertiesEXT { + VkStructureType sType; + void* pNext; + uint64_t drmFormatModifier; +} VkImageDrmFormatModifierPropertiesEXT; -typedef struct VkCmdProcessCommandsInfoNVX { - VkStructureType sType; - const void* pNext; - VkObjectTableNVX objectTable; - VkIndirectCommandsLayoutNVX indirectCommandsLayout; - uint32_t indirectCommandsTokenCount; - const VkIndirectCommandsTokenNVX* pIndirectCommandsTokens; - uint32_t maxSequencesCount; - VkCommandBuffer targetCommandBuffer; - VkBuffer sequencesCountBuffer; - VkDeviceSize sequencesCountOffset; - VkBuffer sequencesIndexBuffer; - VkDeviceSize sequencesIndexOffset; -} VkCmdProcessCommandsInfoNVX; +typedef struct VkDrmFormatModifierProperties2EXT { + uint64_t drmFormatModifier; + uint32_t drmFormatModifierPlaneCount; + VkFormatFeatureFlags2 drmFormatModifierTilingFeatures; +} VkDrmFormatModifierProperties2EXT; -typedef struct VkCmdReserveSpaceForCommandsInfoNVX { - VkStructureType sType; - const void* pNext; - VkObjectTableNVX objectTable; - VkIndirectCommandsLayoutNVX indirectCommandsLayout; - uint32_t maxSequencesCount; -} VkCmdReserveSpaceForCommandsInfoNVX; +typedef struct VkDrmFormatModifierPropertiesList2EXT { + VkStructureType sType; + void* pNext; + uint32_t drmFormatModifierCount; + VkDrmFormatModifierProperties2EXT* pDrmFormatModifierProperties; +} VkDrmFormatModifierPropertiesList2EXT; -typedef struct VkObjectTableCreateInfoNVX { - VkStructureType sType; - const void* pNext; - uint32_t objectCount; - const VkObjectEntryTypeNVX* pObjectEntryTypes; - const uint32_t* pObjectEntryCounts; - const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags; - uint32_t maxUniformBuffersPerDescriptor; - uint32_t maxStorageBuffersPerDescriptor; - uint32_t maxStorageImagesPerDescriptor; - uint32_t maxSampledImagesPerDescriptor; - uint32_t maxPipelineLayouts; -} VkObjectTableCreateInfoNVX; - -typedef struct VkObjectTableEntryNVX { - VkObjectEntryTypeNVX type; - VkObjectEntryUsageFlagsNVX flags; -} VkObjectTableEntryNVX; - -typedef struct VkObjectTablePipelineEntryNVX { - VkObjectEntryTypeNVX type; - VkObjectEntryUsageFlagsNVX flags; - VkPipeline pipeline; -} VkObjectTablePipelineEntryNVX; - -typedef struct VkObjectTableDescriptorSetEntryNVX { - VkObjectEntryTypeNVX type; - VkObjectEntryUsageFlagsNVX flags; - VkPipelineLayout pipelineLayout; - VkDescriptorSet descriptorSet; -} VkObjectTableDescriptorSetEntryNVX; - -typedef struct VkObjectTableVertexBufferEntryNVX { - VkObjectEntryTypeNVX type; - VkObjectEntryUsageFlagsNVX flags; - VkBuffer buffer; -} VkObjectTableVertexBufferEntryNVX; - -typedef struct VkObjectTableIndexBufferEntryNVX { - VkObjectEntryTypeNVX type; - VkObjectEntryUsageFlagsNVX flags; - VkBuffer buffer; - VkIndexType indexType; -} VkObjectTableIndexBufferEntryNVX; - -typedef struct VkObjectTablePushConstantEntryNVX { - VkObjectEntryTypeNVX type; - VkObjectEntryUsageFlagsNVX flags; - VkPipelineLayout pipelineLayout; - VkShaderStageFlags stageFlags; -} VkObjectTablePushConstantEntryNVX; - -typedef void (VKAPI_PTR *PFN_vkCmdProcessCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo); -typedef void (VKAPI_PTR *PFN_vkCmdReserveSpaceForCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo); -typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNVX)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout); -typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNVX)(VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkCreateObjectTableNVX)(VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable); -typedef void (VKAPI_PTR *PFN_vkDestroyObjectTableNVX)(VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkRegisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices); -typedef VkResult (VKAPI_PTR *PFN_vkUnregisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX)(VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits); +typedef VkResult (VKAPI_PTR *PFN_vkGetImageDrmFormatModifierPropertiesEXT)(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdProcessCommandsNVX( - VkCommandBuffer commandBuffer, - const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo); +VKAPI_ATTR VkResult VKAPI_CALL vkGetImageDrmFormatModifierPropertiesEXT( + VkDevice device, + VkImage image, + VkImageDrmFormatModifierPropertiesEXT* pProperties); +#endif -VKAPI_ATTR void VKAPI_CALL vkCmdReserveSpaceForCommandsNVX( - VkCommandBuffer commandBuffer, - const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo); -VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNVX( - VkDevice device, - const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout); +#define VK_EXT_validation_cache 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT) +#define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1 +#define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache" -VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNVX( - VkDevice device, - VkIndirectCommandsLayoutNVX indirectCommandsLayout, - const VkAllocationCallbacks* pAllocator); +typedef enum VkValidationCacheHeaderVersionEXT { + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1, + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF +} VkValidationCacheHeaderVersionEXT; +typedef VkFlags VkValidationCacheCreateFlagsEXT; +typedef struct VkValidationCacheCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkValidationCacheCreateFlagsEXT flags; + size_t initialDataSize; + const void* pInitialData; +} VkValidationCacheCreateInfoEXT; + +typedef struct VkShaderModuleValidationCacheCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkValidationCacheEXT validationCache; +} VkShaderModuleValidationCacheCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache); +typedef void (VKAPI_PTR *PFN_vkDestroyValidationCacheEXT)(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches); +typedef VkResult (VKAPI_PTR *PFN_vkGetValidationCacheDataEXT)(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData); -VKAPI_ATTR VkResult VKAPI_CALL vkCreateObjectTableNVX( +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateValidationCacheEXT( VkDevice device, - const VkObjectTableCreateInfoNVX* pCreateInfo, + const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, - VkObjectTableNVX* pObjectTable); + VkValidationCacheEXT* pValidationCache); -VKAPI_ATTR void VKAPI_CALL vkDestroyObjectTableNVX( +VKAPI_ATTR void VKAPI_CALL vkDestroyValidationCacheEXT( VkDevice device, - VkObjectTableNVX objectTable, + VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator); -VKAPI_ATTR VkResult VKAPI_CALL vkRegisterObjectsNVX( +VKAPI_ATTR VkResult VKAPI_CALL vkMergeValidationCachesEXT( VkDevice device, - VkObjectTableNVX objectTable, - uint32_t objectCount, - const VkObjectTableEntryNVX* const* ppObjectTableEntries, - const uint32_t* pObjectIndices); + VkValidationCacheEXT dstCache, + uint32_t srcCacheCount, + const VkValidationCacheEXT* pSrcCaches); -VKAPI_ATTR VkResult VKAPI_CALL vkUnregisterObjectsNVX( +VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT( VkDevice device, - VkObjectTableNVX objectTable, - uint32_t objectCount, - const VkObjectEntryTypeNVX* pObjectEntryTypes, - const uint32_t* pObjectIndices); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( - VkPhysicalDevice physicalDevice, - VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, - VkDeviceGeneratedCommandsLimitsNVX* pLimits); + VkValidationCacheEXT validationCache, + size_t* pDataSize, + void* pData); #endif -#define VK_NV_clip_space_w_scaling 1 -#define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1 -#define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling" -typedef struct VkViewportWScalingNV { - float xcoeff; - float ycoeff; -} VkViewportWScalingNV; +#define VK_EXT_descriptor_indexing 1 +#define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2 +#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing" +typedef VkDescriptorBindingFlagBits VkDescriptorBindingFlagBitsEXT; -typedef struct VkPipelineViewportWScalingStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkBool32 viewportWScalingEnable; - uint32_t viewportCount; - const VkViewportWScalingNV* pViewportWScalings; -} VkPipelineViewportWScalingStateCreateInfoNV; +typedef VkDescriptorBindingFlags VkDescriptorBindingFlagsEXT; + +typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT; + +typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT; + +typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT; + +typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT; + +typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT; + + + +#define VK_EXT_shader_viewport_index_layer 1 +#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1 +#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer" + + +#define VK_NV_shading_rate_image 1 +#define VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION 3 +#define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image" + +typedef enum VkShadingRatePaletteEntryNV { + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0, + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1, + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2, + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3, + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4, + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5, + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6, + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7, + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8, + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9, + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10, + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11, + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 0x7FFFFFFF +} VkShadingRatePaletteEntryNV; + +typedef enum VkCoarseSampleOrderTypeNV { + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0, + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1, + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2, + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3, + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkCoarseSampleOrderTypeNV; +typedef struct VkShadingRatePaletteNV { + uint32_t shadingRatePaletteEntryCount; + const VkShadingRatePaletteEntryNV* pShadingRatePaletteEntries; +} VkShadingRatePaletteNV; + +typedef struct VkPipelineViewportShadingRateImageStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 shadingRateImageEnable; + uint32_t viewportCount; + const VkShadingRatePaletteNV* pShadingRatePalettes; +} VkPipelineViewportShadingRateImageStateCreateInfoNV; + +typedef struct VkPhysicalDeviceShadingRateImageFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 shadingRateImage; + VkBool32 shadingRateCoarseSampleOrder; +} VkPhysicalDeviceShadingRateImageFeaturesNV; + +typedef struct VkPhysicalDeviceShadingRateImagePropertiesNV { + VkStructureType sType; + void* pNext; + VkExtent2D shadingRateTexelSize; + uint32_t shadingRatePaletteSize; + uint32_t shadingRateMaxCoarseSamples; +} VkPhysicalDeviceShadingRateImagePropertiesNV; + +typedef struct VkCoarseSampleLocationNV { + uint32_t pixelX; + uint32_t pixelY; + uint32_t sample; +} VkCoarseSampleLocationNV; + +typedef struct VkCoarseSampleOrderCustomNV { + VkShadingRatePaletteEntryNV shadingRate; + uint32_t sampleCount; + uint32_t sampleLocationCount; + const VkCoarseSampleLocationNV* pSampleLocations; +} VkCoarseSampleOrderCustomNV; -typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings); +typedef struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkCoarseSampleOrderTypeNV sampleOrderType; + uint32_t customSampleOrderCount; + const VkCoarseSampleOrderCustomNV* pCustomSampleOrders; +} VkPipelineViewportCoarseSampleOrderStateCreateInfoNV; + +typedef void (VKAPI_PTR *PFN_vkCmdBindShadingRateImageNV)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportShadingRatePaletteNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes); +typedef void (VKAPI_PTR *PFN_vkCmdSetCoarseSampleOrderNV)(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV( +VKAPI_ATTR void VKAPI_CALL vkCmdBindShadingRateImageNV( + VkCommandBuffer commandBuffer, + VkImageView imageView, + VkImageLayout imageLayout); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportShadingRatePaletteNV( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, - const VkViewportWScalingNV* pViewportWScalings); -#endif - - -#define VK_EXT_direct_mode_display 1 -#define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1 -#define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display" -typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display); + const VkShadingRatePaletteNV* pShadingRatePalettes); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT( - VkPhysicalDevice physicalDevice, - VkDisplayKHR display); +VKAPI_ATTR void VKAPI_CALL vkCmdSetCoarseSampleOrderNV( + VkCommandBuffer commandBuffer, + VkCoarseSampleOrderTypeNV sampleOrderType, + uint32_t customSampleOrderCount, + const VkCoarseSampleOrderCustomNV* pCustomSampleOrders); #endif -#define VK_EXT_display_surface_counter 1 -#define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1 -#define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter" - -typedef enum VkSurfaceCounterFlagBitsEXT { - VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001, - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkSurfaceCounterFlagBitsEXT; -typedef VkFlags VkSurfaceCounterFlagsEXT; -typedef struct VkSurfaceCapabilities2EXT { - VkStructureType sType; - void* pNext; - uint32_t minImageCount; - uint32_t maxImageCount; - VkExtent2D currentExtent; - VkExtent2D minImageExtent; - VkExtent2D maxImageExtent; - uint32_t maxImageArrayLayers; - VkSurfaceTransformFlagsKHR supportedTransforms; - VkSurfaceTransformFlagBitsKHR currentTransform; - VkCompositeAlphaFlagsKHR supportedCompositeAlpha; - VkImageUsageFlags supportedUsageFlags; - VkSurfaceCounterFlagsEXT supportedSurfaceCounters; -} VkSurfaceCapabilities2EXT; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT( - VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - VkSurfaceCapabilities2EXT* pSurfaceCapabilities); -#endif - +#define VK_NV_ray_tracing 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureNV) +#define VK_NV_RAY_TRACING_SPEC_VERSION 3 +#define VK_NV_RAY_TRACING_EXTENSION_NAME "VK_NV_ray_tracing" +#define VK_SHADER_UNUSED_KHR (~0U) +#define VK_SHADER_UNUSED_NV VK_SHADER_UNUSED_KHR + +typedef enum VkRayTracingShaderGroupTypeKHR { + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0, + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1, + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2, + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR, + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR, + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR, + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkRayTracingShaderGroupTypeKHR; +typedef VkRayTracingShaderGroupTypeKHR VkRayTracingShaderGroupTypeNV; + + +typedef enum VkGeometryTypeKHR { + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0, + VK_GEOMETRY_TYPE_AABBS_KHR = 1, + VK_GEOMETRY_TYPE_INSTANCES_KHR = 2, + VK_GEOMETRY_TYPE_TRIANGLES_NV = VK_GEOMETRY_TYPE_TRIANGLES_KHR, + VK_GEOMETRY_TYPE_AABBS_NV = VK_GEOMETRY_TYPE_AABBS_KHR, + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkGeometryTypeKHR; +typedef VkGeometryTypeKHR VkGeometryTypeNV; + + +typedef enum VkAccelerationStructureTypeKHR { + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0, + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1, + VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = 2, + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR, + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR, + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAccelerationStructureTypeKHR; +typedef VkAccelerationStructureTypeKHR VkAccelerationStructureTypeNV; + + +typedef enum VkCopyAccelerationStructureModeKHR { + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0, + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1, + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2, + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3, + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR, + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR, + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkCopyAccelerationStructureModeKHR; +typedef VkCopyAccelerationStructureModeKHR VkCopyAccelerationStructureModeNV; -#define VK_EXT_display_control 1 -#define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1 -#define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control" -typedef enum VkDisplayPowerStateEXT { - VK_DISPLAY_POWER_STATE_OFF_EXT = 0, - VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1, - VK_DISPLAY_POWER_STATE_ON_EXT = 2, - VK_DISPLAY_POWER_STATE_BEGIN_RANGE_EXT = VK_DISPLAY_POWER_STATE_OFF_EXT, - VK_DISPLAY_POWER_STATE_END_RANGE_EXT = VK_DISPLAY_POWER_STATE_ON_EXT, - VK_DISPLAY_POWER_STATE_RANGE_SIZE_EXT = (VK_DISPLAY_POWER_STATE_ON_EXT - VK_DISPLAY_POWER_STATE_OFF_EXT + 1), - VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDisplayPowerStateEXT; +typedef enum VkAccelerationStructureMemoryRequirementsTypeNV { + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0, + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1, + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2, + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkAccelerationStructureMemoryRequirementsTypeNV; -typedef enum VkDeviceEventTypeEXT { - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0, - VK_DEVICE_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT, - VK_DEVICE_EVENT_TYPE_END_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT, - VK_DEVICE_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT + 1), - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDeviceEventTypeEXT; +typedef enum VkGeometryFlagBitsKHR { + VK_GEOMETRY_OPAQUE_BIT_KHR = 0x00000001, + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 0x00000002, + VK_GEOMETRY_OPAQUE_BIT_NV = VK_GEOMETRY_OPAQUE_BIT_KHR, + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR, + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkGeometryFlagBitsKHR; +typedef VkFlags VkGeometryFlagsKHR; +typedef VkGeometryFlagsKHR VkGeometryFlagsNV; + +typedef VkGeometryFlagBitsKHR VkGeometryFlagBitsNV; + + +typedef enum VkGeometryInstanceFlagBitsKHR { + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 0x00000001, + VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 0x00000002, + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 0x00000004, + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 0x00000008, + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR, + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR, + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR, + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR, + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR, + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkGeometryInstanceFlagBitsKHR; +typedef VkFlags VkGeometryInstanceFlagsKHR; +typedef VkGeometryInstanceFlagsKHR VkGeometryInstanceFlagsNV; + +typedef VkGeometryInstanceFlagBitsKHR VkGeometryInstanceFlagBitsNV; + + +typedef enum VkBuildAccelerationStructureFlagBitsKHR { + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 0x00000001, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 0x00000002, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 0x00000004, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 0x00000008, + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 0x00000010, + VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV = 0x00000020, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkBuildAccelerationStructureFlagBitsKHR; +typedef VkFlags VkBuildAccelerationStructureFlagsKHR; +typedef VkBuildAccelerationStructureFlagsKHR VkBuildAccelerationStructureFlagsNV; + +typedef VkBuildAccelerationStructureFlagBitsKHR VkBuildAccelerationStructureFlagBitsNV; -typedef enum VkDisplayEventTypeEXT { - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0, - VK_DISPLAY_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT, - VK_DISPLAY_EVENT_TYPE_END_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT, - VK_DISPLAY_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT + 1), - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDisplayEventTypeEXT; -typedef struct VkDisplayPowerInfoEXT { - VkStructureType sType; - const void* pNext; - VkDisplayPowerStateEXT powerState; -} VkDisplayPowerInfoEXT; +typedef struct VkRayTracingShaderGroupCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkRayTracingShaderGroupTypeKHR type; + uint32_t generalShader; + uint32_t closestHitShader; + uint32_t anyHitShader; + uint32_t intersectionShader; +} VkRayTracingShaderGroupCreateInfoNV; -typedef struct VkDeviceEventInfoEXT { - VkStructureType sType; - const void* pNext; - VkDeviceEventTypeEXT deviceEvent; -} VkDeviceEventInfoEXT; +typedef struct VkRayTracingPipelineCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + uint32_t groupCount; + const VkRayTracingShaderGroupCreateInfoNV* pGroups; + uint32_t maxRecursionDepth; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkRayTracingPipelineCreateInfoNV; -typedef struct VkDisplayEventInfoEXT { - VkStructureType sType; - const void* pNext; - VkDisplayEventTypeEXT displayEvent; -} VkDisplayEventInfoEXT; +typedef struct VkGeometryTrianglesNV { + VkStructureType sType; + const void* pNext; + VkBuffer vertexData; + VkDeviceSize vertexOffset; + uint32_t vertexCount; + VkDeviceSize vertexStride; + VkFormat vertexFormat; + VkBuffer indexData; + VkDeviceSize indexOffset; + uint32_t indexCount; + VkIndexType indexType; + VkBuffer transformData; + VkDeviceSize transformOffset; +} VkGeometryTrianglesNV; -typedef struct VkSwapchainCounterCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkSurfaceCounterFlagsEXT surfaceCounters; -} VkSwapchainCounterCreateInfoEXT; +typedef struct VkGeometryAABBNV { + VkStructureType sType; + const void* pNext; + VkBuffer aabbData; + uint32_t numAABBs; + uint32_t stride; + VkDeviceSize offset; +} VkGeometryAABBNV; -typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo); -typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence); -typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence); -typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue); +typedef struct VkGeometryDataNV { + VkGeometryTrianglesNV triangles; + VkGeometryAABBNV aabbs; +} VkGeometryDataNV; -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT( - VkDevice device, - VkDisplayKHR display, - const VkDisplayPowerInfoEXT* pDisplayPowerInfo); +typedef struct VkGeometryNV { + VkStructureType sType; + const void* pNext; + VkGeometryTypeKHR geometryType; + VkGeometryDataNV geometry; + VkGeometryFlagsKHR flags; +} VkGeometryNV; -VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT( - VkDevice device, - const VkDeviceEventInfoEXT* pDeviceEventInfo, - const VkAllocationCallbacks* pAllocator, - VkFence* pFence); +typedef struct VkAccelerationStructureInfoNV { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureTypeNV type; + VkBuildAccelerationStructureFlagsNV flags; + uint32_t instanceCount; + uint32_t geometryCount; + const VkGeometryNV* pGeometries; +} VkAccelerationStructureInfoNV; -VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT( - VkDevice device, - VkDisplayKHR display, - const VkDisplayEventInfoEXT* pDisplayEventInfo, - const VkAllocationCallbacks* pAllocator, - VkFence* pFence); +typedef struct VkAccelerationStructureCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkDeviceSize compactedSize; + VkAccelerationStructureInfoNV info; +} VkAccelerationStructureCreateInfoNV; -VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT( - VkDevice device, - VkSwapchainKHR swapchain, - VkSurfaceCounterFlagBitsEXT counter, - uint64_t* pCounterValue); -#endif +typedef struct VkBindAccelerationStructureMemoryInfoNV { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureNV accelerationStructure; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; + uint32_t deviceIndexCount; + const uint32_t* pDeviceIndices; +} VkBindAccelerationStructureMemoryInfoNV; +typedef struct VkWriteDescriptorSetAccelerationStructureNV { + VkStructureType sType; + const void* pNext; + uint32_t accelerationStructureCount; + const VkAccelerationStructureNV* pAccelerationStructures; +} VkWriteDescriptorSetAccelerationStructureNV; -#define VK_GOOGLE_display_timing 1 -#define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1 -#define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing" -typedef struct VkRefreshCycleDurationGOOGLE { - uint64_t refreshDuration; -} VkRefreshCycleDurationGOOGLE; +typedef struct VkAccelerationStructureMemoryRequirementsInfoNV { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureMemoryRequirementsTypeNV type; + VkAccelerationStructureNV accelerationStructure; +} VkAccelerationStructureMemoryRequirementsInfoNV; -typedef struct VkPastPresentationTimingGOOGLE { - uint32_t presentID; - uint64_t desiredPresentTime; - uint64_t actualPresentTime; - uint64_t earliestPresentTime; - uint64_t presentMargin; -} VkPastPresentationTimingGOOGLE; +typedef struct VkPhysicalDeviceRayTracingPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t shaderGroupHandleSize; + uint32_t maxRecursionDepth; + uint32_t maxShaderGroupStride; + uint32_t shaderGroupBaseAlignment; + uint64_t maxGeometryCount; + uint64_t maxInstanceCount; + uint64_t maxTriangleCount; + uint32_t maxDescriptorSetAccelerationStructures; +} VkPhysicalDeviceRayTracingPropertiesNV; -typedef struct VkPresentTimeGOOGLE { - uint32_t presentID; - uint64_t desiredPresentTime; -} VkPresentTimeGOOGLE; +typedef struct VkTransformMatrixKHR { + float matrix[3][4]; +} VkTransformMatrixKHR; -typedef struct VkPresentTimesInfoGOOGLE { - VkStructureType sType; - const void* pNext; - uint32_t swapchainCount; - const VkPresentTimeGOOGLE* pTimes; -} VkPresentTimesInfoGOOGLE; +typedef VkTransformMatrixKHR VkTransformMatrixNV; -typedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings); +typedef struct VkAabbPositionsKHR { + float minX; + float minY; + float minZ; + float maxX; + float maxY; + float maxZ; +} VkAabbPositionsKHR; + +typedef VkAabbPositionsKHR VkAabbPositionsNV; + +typedef struct VkAccelerationStructureInstanceKHR { + VkTransformMatrixKHR transform; + uint32_t instanceCustomIndex:24; + uint32_t mask:8; + uint32_t instanceShaderBindingTableRecordOffset:24; + VkGeometryInstanceFlagsKHR flags:8; + uint64_t accelerationStructureReference; +} VkAccelerationStructureInstanceKHR; + +typedef VkAccelerationStructureInstanceKHR VkAccelerationStructureInstanceNV; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureNV)(VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure); +typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureMemoryRequirementsNV)(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements); +typedef VkResult (VKAPI_PTR *PFN_vkBindAccelerationStructureMemoryNV)(VkDevice device, uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos); +typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureNV)(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset); +typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureNV)(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode); +typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysNV)(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth); +typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesNV)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesNV)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureHandleNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData); +typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesNV)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery); +typedef VkResult (VKAPI_PTR *PFN_vkCompileDeferredNV)(VkDevice device, VkPipeline pipeline, uint32_t shader); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE( +VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureNV( VkDevice device, - VkSwapchainKHR swapchain, - VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties); + const VkAccelerationStructureCreateInfoNV* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkAccelerationStructureNV* pAccelerationStructure); -VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE( +VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureNV( VkDevice device, - VkSwapchainKHR swapchain, - uint32_t* pPresentationTimingCount, - VkPastPresentationTimingGOOGLE* pPresentationTimings); -#endif + VkAccelerationStructureNV accelerationStructure, + const VkAllocationCallbacks* pAllocator); +VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV( + VkDevice device, + const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, + VkMemoryRequirements2KHR* pMemoryRequirements); -#define VK_NV_sample_mask_override_coverage 1 -#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1 -#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage" +VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryNV( + VkDevice device, + uint32_t bindInfoCount, + const VkBindAccelerationStructureMemoryInfoNV* pBindInfos); + +VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureNV( + VkCommandBuffer commandBuffer, + const VkAccelerationStructureInfoNV* pInfo, + VkBuffer instanceData, + VkDeviceSize instanceOffset, + VkBool32 update, + VkAccelerationStructureNV dst, + VkAccelerationStructureNV src, + VkBuffer scratch, + VkDeviceSize scratchOffset); +VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureNV( + VkCommandBuffer commandBuffer, + VkAccelerationStructureNV dst, + VkAccelerationStructureNV src, + VkCopyAccelerationStructureModeKHR mode); -#define VK_NV_geometry_shader_passthrough 1 -#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1 -#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough" +VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysNV( + VkCommandBuffer commandBuffer, + VkBuffer raygenShaderBindingTableBuffer, + VkDeviceSize raygenShaderBindingOffset, + VkBuffer missShaderBindingTableBuffer, + VkDeviceSize missShaderBindingOffset, + VkDeviceSize missShaderBindingStride, + VkBuffer hitShaderBindingTableBuffer, + VkDeviceSize hitShaderBindingOffset, + VkDeviceSize hitShaderBindingStride, + VkBuffer callableShaderBindingTableBuffer, + VkDeviceSize callableShaderBindingOffset, + VkDeviceSize callableShaderBindingStride, + uint32_t width, + uint32_t height, + uint32_t depth); +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesNV( + VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkRayTracingPipelineCreateInfoNV* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines); -#define VK_NV_viewport_array2 1 -#define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1 -#define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2" +VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesKHR( + VkDevice device, + VkPipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void* pData); +VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesNV( + VkDevice device, + VkPipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void* pData); -#define VK_NVX_multiview_per_view_attributes 1 -#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1 -#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes" -typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX { - VkStructureType sType; - void* pNext; - VkBool32 perViewPositionAllComponents; -} VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; +VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureHandleNV( + VkDevice device, + VkAccelerationStructureNV accelerationStructure, + size_t dataSize, + void* pData); +VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesNV( + VkCommandBuffer commandBuffer, + uint32_t accelerationStructureCount, + const VkAccelerationStructureNV* pAccelerationStructures, + VkQueryType queryType, + VkQueryPool queryPool, + uint32_t firstQuery); +VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNV( + VkDevice device, + VkPipeline pipeline, + uint32_t shader); +#endif -#define VK_NV_viewport_swizzle 1 -#define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1 -#define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle" -typedef enum VkViewportCoordinateSwizzleNV { - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0, - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1, - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2, - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3, - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4, - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5, - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6, - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7, - VK_VIEWPORT_COORDINATE_SWIZZLE_BEGIN_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV, - VK_VIEWPORT_COORDINATE_SWIZZLE_END_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV, - VK_VIEWPORT_COORDINATE_SWIZZLE_RANGE_SIZE_NV = (VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV + 1), - VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 0x7FFFFFFF -} VkViewportCoordinateSwizzleNV; -typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV; -typedef struct VkViewportSwizzleNV { - VkViewportCoordinateSwizzleNV x; - VkViewportCoordinateSwizzleNV y; - VkViewportCoordinateSwizzleNV z; - VkViewportCoordinateSwizzleNV w; -} VkViewportSwizzleNV; +#define VK_NV_representative_fragment_test 1 +#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 2 +#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME "VK_NV_representative_fragment_test" +typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 representativeFragmentTest; +} VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV; -typedef struct VkPipelineViewportSwizzleStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkPipelineViewportSwizzleStateCreateFlagsNV flags; - uint32_t viewportCount; - const VkViewportSwizzleNV* pViewportSwizzles; -} VkPipelineViewportSwizzleStateCreateInfoNV; +typedef struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 representativeFragmentTestEnable; +} VkPipelineRepresentativeFragmentTestStateCreateInfoNV; -#define VK_EXT_discard_rectangles 1 -#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1 -#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles" +#define VK_EXT_filter_cubic 1 +#define VK_EXT_FILTER_CUBIC_SPEC_VERSION 3 +#define VK_EXT_FILTER_CUBIC_EXTENSION_NAME "VK_EXT_filter_cubic" +typedef struct VkPhysicalDeviceImageViewImageFormatInfoEXT { + VkStructureType sType; + void* pNext; + VkImageViewType imageViewType; +} VkPhysicalDeviceImageViewImageFormatInfoEXT; -typedef enum VkDiscardRectangleModeEXT { - VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0, - VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1, - VK_DISCARD_RECTANGLE_MODE_BEGIN_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT, - VK_DISCARD_RECTANGLE_MODE_END_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT, - VK_DISCARD_RECTANGLE_MODE_RANGE_SIZE_EXT = (VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT - VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT + 1), - VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDiscardRectangleModeEXT; -typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT; -typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT { +typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT { VkStructureType sType; void* pNext; - uint32_t maxDiscardRectangles; -} VkPhysicalDeviceDiscardRectanglePropertiesEXT; + VkBool32 filterCubic; + VkBool32 filterCubicMinmax; +} VkFilterCubicImageViewImageFormatPropertiesEXT; -typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkPipelineDiscardRectangleStateCreateFlagsEXT flags; - VkDiscardRectangleModeEXT discardRectangleMode; - uint32_t discardRectangleCount; - const VkRect2D* pDiscardRectangles; -} VkPipelineDiscardRectangleStateCreateInfoEXT; -typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT( - VkCommandBuffer commandBuffer, - uint32_t firstDiscardRectangle, - uint32_t discardRectangleCount, - const VkRect2D* pDiscardRectangles); -#endif +#define VK_QCOM_render_pass_shader_resolve 1 +#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION 4 +#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME "VK_QCOM_render_pass_shader_resolve" -#define VK_EXT_conservative_rasterization 1 -#define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1 -#define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization" +#define VK_EXT_global_priority 1 +#define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2 +#define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority" +typedef VkQueueGlobalPriorityKHR VkQueueGlobalPriorityEXT; -typedef enum VkConservativeRasterizationModeEXT { - VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0, - VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1, - VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2, - VK_CONSERVATIVE_RASTERIZATION_MODE_BEGIN_RANGE_EXT = VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT, - VK_CONSERVATIVE_RASTERIZATION_MODE_END_RANGE_EXT = VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT, - VK_CONSERVATIVE_RASTERIZATION_MODE_RANGE_SIZE_EXT = (VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT - VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT + 1), - VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkConservativeRasterizationModeEXT; -typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT; -typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT { - VkStructureType sType; - void* pNext; - float primitiveOverestimationSize; - float maxExtraPrimitiveOverestimationSize; - float extraPrimitiveOverestimationSizeGranularity; - VkBool32 primitiveUnderestimation; - VkBool32 conservativePointAndLineRasterization; - VkBool32 degenerateTrianglesRasterized; - VkBool32 degenerateLinesRasterized; - VkBool32 fullyCoveredFragmentShaderInputVariable; - VkBool32 conservativeRasterizationPostDepthCoverage; -} VkPhysicalDeviceConservativeRasterizationPropertiesEXT; +typedef VkDeviceQueueGlobalPriorityCreateInfoKHR VkDeviceQueueGlobalPriorityCreateInfoEXT; -typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkPipelineRasterizationConservativeStateCreateFlagsEXT flags; - VkConservativeRasterizationModeEXT conservativeRasterizationMode; - float extraPrimitiveOverestimationSize; -} VkPipelineRasterizationConservativeStateCreateInfoEXT; +#define VK_EXT_external_memory_host 1 +#define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1 +#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host" +typedef struct VkImportMemoryHostPointerInfoEXT { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagBits handleType; + void* pHostPointer; +} VkImportMemoryHostPointerInfoEXT; + +typedef struct VkMemoryHostPointerPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; +} VkMemoryHostPointerPropertiesEXT; -#define VK_EXT_depth_clip_enable 1 -#define VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION 1 -#define VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME "VK_EXT_depth_clip_enable" -typedef VkFlags VkPipelineRasterizationDepthClipStateCreateFlagsEXT; -typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT { +typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT { VkStructureType sType; void* pNext; - VkBool32 depthClipEnable; -} VkPhysicalDeviceDepthClipEnableFeaturesEXT; + VkDeviceSize minImportedHostPointerAlignment; +} VkPhysicalDeviceExternalMemoryHostPropertiesEXT; -typedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkPipelineRasterizationDepthClipStateCreateFlagsEXT flags; - VkBool32 depthClipEnable; -} VkPipelineRasterizationDepthClipStateCreateInfoEXT; +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties); +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHostPointer, + VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties); +#endif -#define VK_EXT_swapchain_colorspace 1 -#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 4 -#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace" +#define VK_AMD_buffer_marker 1 +#define VK_AMD_BUFFER_MARKER_SPEC_VERSION 1 +#define VK_AMD_BUFFER_MARKER_EXTENSION_NAME "VK_AMD_buffer_marker" +typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarkerAMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker); +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD( + VkCommandBuffer commandBuffer, + VkPipelineStageFlagBits pipelineStage, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + uint32_t marker); +#endif -#define VK_EXT_hdr_metadata 1 -#define VK_EXT_HDR_METADATA_SPEC_VERSION 2 -#define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata" -typedef struct VkXYColorEXT { - float x; - float y; -} VkXYColorEXT; -typedef struct VkHdrMetadataEXT { +#define VK_AMD_pipeline_compiler_control 1 +#define VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION 1 +#define VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME "VK_AMD_pipeline_compiler_control" + +typedef enum VkPipelineCompilerControlFlagBitsAMD { + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF +} VkPipelineCompilerControlFlagBitsAMD; +typedef VkFlags VkPipelineCompilerControlFlagsAMD; +typedef struct VkPipelineCompilerControlCreateInfoAMD { + VkStructureType sType; + const void* pNext; + VkPipelineCompilerControlFlagsAMD compilerControlFlags; +} VkPipelineCompilerControlCreateInfoAMD; + + + +#define VK_EXT_calibrated_timestamps 1 +#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 2 +#define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps" + +typedef enum VkTimeDomainEXT { + VK_TIME_DOMAIN_DEVICE_EXT = 0, + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1, + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2, + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3, + VK_TIME_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF +} VkTimeDomainEXT; +typedef struct VkCalibratedTimestampInfoEXT { VkStructureType sType; const void* pNext; - VkXYColorEXT displayPrimaryRed; - VkXYColorEXT displayPrimaryGreen; - VkXYColorEXT displayPrimaryBlue; - VkXYColorEXT whitePoint; - float maxLuminance; - float minLuminance; - float maxContentLightLevel; - float maxFrameAverageLightLevel; -} VkHdrMetadataEXT; + VkTimeDomainEXT timeDomain; +} VkCalibratedTimestampInfoEXT; -typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains); +typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT( +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( + VkPhysicalDevice physicalDevice, + uint32_t* pTimeDomainCount, + VkTimeDomainEXT* pTimeDomains); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT( VkDevice device, - uint32_t swapchainCount, - const VkSwapchainKHR* pSwapchains, - const VkHdrMetadataEXT* pMetadata); + uint32_t timestampCount, + const VkCalibratedTimestampInfoEXT* pTimestampInfos, + uint64_t* pTimestamps, + uint64_t* pMaxDeviation); #endif -#define VK_EXT_external_memory_dma_buf 1 -#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1 -#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf" - +#define VK_AMD_shader_core_properties 1 +#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 2 +#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties" +typedef struct VkPhysicalDeviceShaderCorePropertiesAMD { + VkStructureType sType; + void* pNext; + uint32_t shaderEngineCount; + uint32_t shaderArraysPerEngineCount; + uint32_t computeUnitsPerShaderArray; + uint32_t simdPerComputeUnit; + uint32_t wavefrontsPerSimd; + uint32_t wavefrontSize; + uint32_t sgprsPerSimd; + uint32_t minSgprAllocation; + uint32_t maxSgprAllocation; + uint32_t sgprAllocationGranularity; + uint32_t vgprsPerSimd; + uint32_t minVgprAllocation; + uint32_t maxVgprAllocation; + uint32_t vgprAllocationGranularity; +} VkPhysicalDeviceShaderCorePropertiesAMD; -#define VK_EXT_queue_family_foreign 1 -#define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1 -#define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign" -#define VK_QUEUE_FAMILY_FOREIGN_EXT (~0U-2) -#define VK_EXT_debug_utils 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT) -#define VK_EXT_DEBUG_UTILS_SPEC_VERSION 1 -#define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils" -typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT; -typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT; +#define VK_AMD_memory_overallocation_behavior 1 +#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION 1 +#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME "VK_AMD_memory_overallocation_behavior" -typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT { - VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001, - VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010, - VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100, - VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000, - VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDebugUtilsMessageSeverityFlagBitsEXT; -typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT; +typedef enum VkMemoryOverallocationBehaviorAMD { + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0, + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1, + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2, + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 0x7FFFFFFF +} VkMemoryOverallocationBehaviorAMD; +typedef struct VkDeviceMemoryOverallocationCreateInfoAMD { + VkStructureType sType; + const void* pNext; + VkMemoryOverallocationBehaviorAMD overallocationBehavior; +} VkDeviceMemoryOverallocationCreateInfoAMD; -typedef enum VkDebugUtilsMessageTypeFlagBitsEXT { - VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001, - VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002, - VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004, - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDebugUtilsMessageTypeFlagBitsEXT; -typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT; -typedef struct VkDebugUtilsObjectNameInfoEXT { - VkStructureType sType; - const void* pNext; - VkObjectType objectType; - uint64_t objectHandle; - const char* pObjectName; -} VkDebugUtilsObjectNameInfoEXT; -typedef struct VkDebugUtilsObjectTagInfoEXT { - VkStructureType sType; - const void* pNext; - VkObjectType objectType; - uint64_t objectHandle; - uint64_t tagName; - size_t tagSize; - const void* pTag; -} VkDebugUtilsObjectTagInfoEXT; -typedef struct VkDebugUtilsLabelEXT { +#define VK_EXT_vertex_attribute_divisor 1 +#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 3 +#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor" +typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT { VkStructureType sType; - const void* pNext; - const char* pLabelName; - float color[4]; -} VkDebugUtilsLabelEXT; - -typedef struct VkDebugUtilsMessengerCallbackDataEXT { - VkStructureType sType; - const void* pNext; - VkDebugUtilsMessengerCallbackDataFlagsEXT flags; - const char* pMessageIdName; - int32_t messageIdNumber; - const char* pMessage; - uint32_t queueLabelCount; - const VkDebugUtilsLabelEXT* pQueueLabels; - uint32_t cmdBufLabelCount; - const VkDebugUtilsLabelEXT* pCmdBufLabels; - uint32_t objectCount; - const VkDebugUtilsObjectNameInfoEXT* pObjects; -} VkDebugUtilsMessengerCallbackDataEXT; - -typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)( - VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, - VkDebugUtilsMessageTypeFlagsEXT messageTypes, - const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, - void* pUserData); + void* pNext; + uint32_t maxVertexAttribDivisor; +} VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT; -typedef struct VkDebugUtilsMessengerCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkDebugUtilsMessengerCreateFlagsEXT flags; - VkDebugUtilsMessageSeverityFlagsEXT messageSeverity; - VkDebugUtilsMessageTypeFlagsEXT messageType; - PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback; - void* pUserData; -} VkDebugUtilsMessengerCreateInfoEXT; +typedef struct VkVertexInputBindingDivisorDescriptionEXT { + uint32_t binding; + uint32_t divisor; +} VkVertexInputBindingDivisorDescriptionEXT; -typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectNameEXT)(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo); -typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectTagEXT)(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo); -typedef void (VKAPI_PTR *PFN_vkQueueBeginDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo); -typedef void (VKAPI_PTR *PFN_vkQueueEndDebugUtilsLabelEXT)(VkQueue queue); -typedef void (VKAPI_PTR *PFN_vkQueueInsertDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo); -typedef void (VKAPI_PTR *PFN_vkCmdBeginDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo); -typedef void (VKAPI_PTR *PFN_vkCmdEndDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer); -typedef void (VKAPI_PTR *PFN_vkCmdInsertDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo); -typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugUtilsMessengerEXT)(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger); -typedef void (VKAPI_PTR *PFN_vkDestroyDebugUtilsMessengerEXT)(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkSubmitDebugUtilsMessageEXT)(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData); +typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t vertexBindingDivisorCount; + const VkVertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors; +} VkPipelineVertexInputDivisorStateCreateInfoEXT; -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT( - VkDevice device, - const VkDebugUtilsObjectNameInfoEXT* pNameInfo); +typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 vertexAttributeInstanceRateDivisor; + VkBool32 vertexAttributeInstanceRateZeroDivisor; +} VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT; -VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT( - VkDevice device, - const VkDebugUtilsObjectTagInfoEXT* pTagInfo); -VKAPI_ATTR void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT( - VkQueue queue, - const VkDebugUtilsLabelEXT* pLabelInfo); -VKAPI_ATTR void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT( - VkQueue queue); +#define VK_EXT_pipeline_creation_feedback 1 +#define VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION 1 +#define VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME "VK_EXT_pipeline_creation_feedback" +typedef VkPipelineCreationFeedbackFlagBits VkPipelineCreationFeedbackFlagBitsEXT; -VKAPI_ATTR void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT( - VkQueue queue, - const VkDebugUtilsLabelEXT* pLabelInfo); +typedef VkPipelineCreationFeedbackFlags VkPipelineCreationFeedbackFlagsEXT; -VKAPI_ATTR void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT( - VkCommandBuffer commandBuffer, - const VkDebugUtilsLabelEXT* pLabelInfo); +typedef VkPipelineCreationFeedbackCreateInfo VkPipelineCreationFeedbackCreateInfoEXT; -VKAPI_ATTR void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT( - VkCommandBuffer commandBuffer); +typedef VkPipelineCreationFeedback VkPipelineCreationFeedbackEXT; -VKAPI_ATTR void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT( - VkCommandBuffer commandBuffer, - const VkDebugUtilsLabelEXT* pLabelInfo); -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT( - VkInstance instance, - const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDebugUtilsMessengerEXT* pMessenger); -VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT( - VkInstance instance, - VkDebugUtilsMessengerEXT messenger, - const VkAllocationCallbacks* pAllocator); +#define VK_NV_shader_subgroup_partitioned 1 +#define VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1 +#define VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME "VK_NV_shader_subgroup_partitioned" -VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT( - VkInstance instance, - VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, - VkDebugUtilsMessageTypeFlagsEXT messageTypes, - const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData); -#endif +#define VK_NV_compute_shader_derivatives 1 +#define VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION 1 +#define VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME "VK_NV_compute_shader_derivatives" +typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 computeDerivativeGroupQuads; + VkBool32 computeDerivativeGroupLinear; +} VkPhysicalDeviceComputeShaderDerivativesFeaturesNV; -#define VK_EXT_sampler_filter_minmax 1 -#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2 -#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax" -typedef enum VkSamplerReductionModeEXT { - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0, - VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1, - VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2, - VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT, - VK_SAMPLER_REDUCTION_MODE_END_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_MAX_EXT, - VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE_EXT = (VK_SAMPLER_REDUCTION_MODE_MAX_EXT - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT + 1), - VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkSamplerReductionModeEXT; -typedef struct VkSamplerReductionModeCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkSamplerReductionModeEXT reductionMode; -} VkSamplerReductionModeCreateInfoEXT; -typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT { +#define VK_NV_mesh_shader 1 +#define VK_NV_MESH_SHADER_SPEC_VERSION 1 +#define VK_NV_MESH_SHADER_EXTENSION_NAME "VK_NV_mesh_shader" +typedef struct VkPhysicalDeviceMeshShaderFeaturesNV { VkStructureType sType; void* pNext; - VkBool32 filterMinmaxSingleComponentFormats; - VkBool32 filterMinmaxImageComponentMapping; -} VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT; - + VkBool32 taskShader; + VkBool32 meshShader; +} VkPhysicalDeviceMeshShaderFeaturesNV; +typedef struct VkPhysicalDeviceMeshShaderPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t maxDrawMeshTasksCount; + uint32_t maxTaskWorkGroupInvocations; + uint32_t maxTaskWorkGroupSize[3]; + uint32_t maxTaskTotalMemorySize; + uint32_t maxTaskOutputCount; + uint32_t maxMeshWorkGroupInvocations; + uint32_t maxMeshWorkGroupSize[3]; + uint32_t maxMeshTotalMemorySize; + uint32_t maxMeshOutputVertices; + uint32_t maxMeshOutputPrimitives; + uint32_t maxMeshMultiviewViewCount; + uint32_t meshOutputPerVertexGranularity; + uint32_t meshOutputPerPrimitiveGranularity; +} VkPhysicalDeviceMeshShaderPropertiesNV; -#define VK_AMD_gpu_shader_int16 1 -#define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 2 -#define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16" +typedef struct VkDrawMeshTasksIndirectCommandNV { + uint32_t taskCount; + uint32_t firstTask; +} VkDrawMeshTasksIndirectCommandNV; +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksNV)(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); -#define VK_AMD_mixed_attachment_samples 1 -#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1 -#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples" +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksNV( + VkCommandBuffer commandBuffer, + uint32_t taskCount, + uint32_t firstTask); +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectNV( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + uint32_t drawCount, + uint32_t stride); -#define VK_AMD_shader_fragment_mask 1 -#define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1 -#define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask" +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountNV( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); +#endif -#define VK_EXT_inline_uniform_block 1 -#define VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION 1 -#define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block" -typedef struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT { +#define VK_NV_fragment_shader_barycentric 1 +#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1 +#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_NV_fragment_shader_barycentric" +typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV { VkStructureType sType; void* pNext; - VkBool32 inlineUniformBlock; - VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; -} VkPhysicalDeviceInlineUniformBlockFeaturesEXT; + VkBool32 fragmentShaderBarycentric; +} VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV; + + -typedef struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT { +#define VK_NV_shader_image_footprint 1 +#define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 2 +#define VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME "VK_NV_shader_image_footprint" +typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV { VkStructureType sType; void* pNext; - uint32_t maxInlineUniformBlockSize; - uint32_t maxPerStageDescriptorInlineUniformBlocks; - uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; - uint32_t maxDescriptorSetInlineUniformBlocks; - uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; -} VkPhysicalDeviceInlineUniformBlockPropertiesEXT; + VkBool32 imageFootprint; +} VkPhysicalDeviceShaderImageFootprintFeaturesNV; + -typedef struct VkWriteDescriptorSetInlineUniformBlockEXT { + +#define VK_NV_scissor_exclusive 1 +#define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 1 +#define VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME "VK_NV_scissor_exclusive" +typedef struct VkPipelineViewportExclusiveScissorStateCreateInfoNV { VkStructureType sType; const void* pNext; - uint32_t dataSize; - const void* pData; -} VkWriteDescriptorSetInlineUniformBlockEXT; + uint32_t exclusiveScissorCount; + const VkRect2D* pExclusiveScissors; +} VkPipelineViewportExclusiveScissorStateCreateInfoNV; -typedef struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT { +typedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV { VkStructureType sType; - const void* pNext; - uint32_t maxInlineUniformBlockBindings; -} VkDescriptorPoolInlineUniformBlockCreateInfoEXT; + void* pNext; + VkBool32 exclusiveScissor; +} VkPhysicalDeviceExclusiveScissorFeaturesNV; +typedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors); +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorNV( + VkCommandBuffer commandBuffer, + uint32_t firstExclusiveScissor, + uint32_t exclusiveScissorCount, + const VkRect2D* pExclusiveScissors); +#endif -#define VK_EXT_shader_stencil_export 1 -#define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1 -#define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export" +#define VK_NV_device_diagnostic_checkpoints 1 +#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION 2 +#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME "VK_NV_device_diagnostic_checkpoints" +typedef struct VkQueueFamilyCheckpointPropertiesNV { + VkStructureType sType; + void* pNext; + VkPipelineStageFlags checkpointExecutionStageMask; +} VkQueueFamilyCheckpointPropertiesNV; -#define VK_EXT_sample_locations 1 -#define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1 -#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations" -typedef struct VkSampleLocationEXT { - float x; - float y; -} VkSampleLocationEXT; +typedef struct VkCheckpointDataNV { + VkStructureType sType; + void* pNext; + VkPipelineStageFlagBits stage; + void* pCheckpointMarker; +} VkCheckpointDataNV; -typedef struct VkSampleLocationsInfoEXT { - VkStructureType sType; - const void* pNext; - VkSampleCountFlagBits sampleLocationsPerPixel; - VkExtent2D sampleLocationGridSize; - uint32_t sampleLocationsCount; - const VkSampleLocationEXT* pSampleLocations; -} VkSampleLocationsInfoEXT; +typedef void (VKAPI_PTR *PFN_vkCmdSetCheckpointNV)(VkCommandBuffer commandBuffer, const void* pCheckpointMarker); +typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointDataNV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData); -typedef struct VkAttachmentSampleLocationsEXT { - uint32_t attachmentIndex; - VkSampleLocationsInfoEXT sampleLocationsInfo; -} VkAttachmentSampleLocationsEXT; +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetCheckpointNV( + VkCommandBuffer commandBuffer, + const void* pCheckpointMarker); -typedef struct VkSubpassSampleLocationsEXT { - uint32_t subpassIndex; - VkSampleLocationsInfoEXT sampleLocationsInfo; -} VkSubpassSampleLocationsEXT; +VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV( + VkQueue queue, + uint32_t* pCheckpointDataCount, + VkCheckpointDataNV* pCheckpointData); +#endif -typedef struct VkRenderPassSampleLocationsBeginInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t attachmentInitialSampleLocationsCount; - const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations; - uint32_t postSubpassSampleLocationsCount; - const VkSubpassSampleLocationsEXT* pPostSubpassSampleLocations; -} VkRenderPassSampleLocationsBeginInfoEXT; -typedef struct VkPipelineSampleLocationsStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkBool32 sampleLocationsEnable; - VkSampleLocationsInfoEXT sampleLocationsInfo; -} VkPipelineSampleLocationsStateCreateInfoEXT; +#define VK_INTEL_shader_integer_functions2 1 +#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION 1 +#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME "VK_INTEL_shader_integer_functions2" +typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL { + VkStructureType sType; + void* pNext; + VkBool32 shaderIntegerFunctions2; +} VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + + + +#define VK_INTEL_performance_query 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPerformanceConfigurationINTEL) +#define VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION 2 +#define VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME "VK_INTEL_performance_query" + +typedef enum VkPerformanceConfigurationTypeINTEL { + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0, + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkPerformanceConfigurationTypeINTEL; + +typedef enum VkQueryPoolSamplingModeINTEL { + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0, + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkQueryPoolSamplingModeINTEL; -typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT { - VkStructureType sType; - void* pNext; - VkSampleCountFlags sampleLocationSampleCounts; - VkExtent2D maxSampleLocationGridSize; - float sampleLocationCoordinateRange[2]; - uint32_t sampleLocationSubPixelBits; - VkBool32 variableSampleLocations; -} VkPhysicalDeviceSampleLocationsPropertiesEXT; +typedef enum VkPerformanceOverrideTypeINTEL { + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0, + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1, + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkPerformanceOverrideTypeINTEL; -typedef struct VkMultisamplePropertiesEXT { - VkStructureType sType; - void* pNext; - VkExtent2D maxSampleLocationGridSize; -} VkMultisamplePropertiesEXT; +typedef enum VkPerformanceParameterTypeINTEL { + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0, + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1, + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkPerformanceParameterTypeINTEL; -typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties); +typedef enum VkPerformanceValueTypeINTEL { + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0, + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1, + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2, + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3, + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4, + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkPerformanceValueTypeINTEL; +typedef union VkPerformanceValueDataINTEL { + uint32_t value32; + uint64_t value64; + float valueFloat; + VkBool32 valueBool; + const char* valueString; +} VkPerformanceValueDataINTEL; -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT( - VkCommandBuffer commandBuffer, - const VkSampleLocationsInfoEXT* pSampleLocationsInfo); +typedef struct VkPerformanceValueINTEL { + VkPerformanceValueTypeINTEL type; + VkPerformanceValueDataINTEL data; +} VkPerformanceValueINTEL; -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT( - VkPhysicalDevice physicalDevice, - VkSampleCountFlagBits samples, - VkMultisamplePropertiesEXT* pMultisampleProperties); -#endif +typedef struct VkInitializePerformanceApiInfoINTEL { + VkStructureType sType; + const void* pNext; + void* pUserData; +} VkInitializePerformanceApiInfoINTEL; +typedef struct VkQueryPoolPerformanceQueryCreateInfoINTEL { + VkStructureType sType; + const void* pNext; + VkQueryPoolSamplingModeINTEL performanceCountersSampling; +} VkQueryPoolPerformanceQueryCreateInfoINTEL; -#define VK_EXT_blend_operation_advanced 1 -#define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2 -#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced" +typedef VkQueryPoolPerformanceQueryCreateInfoINTEL VkQueryPoolCreateInfoINTEL; -typedef enum VkBlendOverlapEXT { - VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0, - VK_BLEND_OVERLAP_DISJOINT_EXT = 1, - VK_BLEND_OVERLAP_CONJOINT_EXT = 2, - VK_BLEND_OVERLAP_BEGIN_RANGE_EXT = VK_BLEND_OVERLAP_UNCORRELATED_EXT, - VK_BLEND_OVERLAP_END_RANGE_EXT = VK_BLEND_OVERLAP_CONJOINT_EXT, - VK_BLEND_OVERLAP_RANGE_SIZE_EXT = (VK_BLEND_OVERLAP_CONJOINT_EXT - VK_BLEND_OVERLAP_UNCORRELATED_EXT + 1), - VK_BLEND_OVERLAP_MAX_ENUM_EXT = 0x7FFFFFFF -} VkBlendOverlapEXT; -typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT { +typedef struct VkPerformanceMarkerInfoINTEL { VkStructureType sType; - void* pNext; - VkBool32 advancedBlendCoherentOperations; -} VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT; + const void* pNext; + uint64_t marker; +} VkPerformanceMarkerInfoINTEL; -typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT { +typedef struct VkPerformanceStreamMarkerInfoINTEL { VkStructureType sType; - void* pNext; - uint32_t advancedBlendMaxColorAttachments; - VkBool32 advancedBlendIndependentBlend; - VkBool32 advancedBlendNonPremultipliedSrcColor; - VkBool32 advancedBlendNonPremultipliedDstColor; - VkBool32 advancedBlendCorrelatedOverlap; - VkBool32 advancedBlendAllOperations; -} VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT; + const void* pNext; + uint32_t marker; +} VkPerformanceStreamMarkerInfoINTEL; -typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkBool32 srcPremultiplied; - VkBool32 dstPremultiplied; - VkBlendOverlapEXT blendOverlap; -} VkPipelineColorBlendAdvancedStateCreateInfoEXT; +typedef struct VkPerformanceOverrideInfoINTEL { + VkStructureType sType; + const void* pNext; + VkPerformanceOverrideTypeINTEL type; + VkBool32 enable; + uint64_t parameter; +} VkPerformanceOverrideInfoINTEL; +typedef struct VkPerformanceConfigurationAcquireInfoINTEL { + VkStructureType sType; + const void* pNext; + VkPerformanceConfigurationTypeINTEL type; +} VkPerformanceConfigurationAcquireInfoINTEL; +typedef VkResult (VKAPI_PTR *PFN_vkInitializePerformanceApiINTEL)(VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo); +typedef void (VKAPI_PTR *PFN_vkUninitializePerformanceApiINTEL)(VkDevice device); +typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceStreamMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceOverrideINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo); +typedef VkResult (VKAPI_PTR *PFN_vkAcquirePerformanceConfigurationINTEL)(VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration); +typedef VkResult (VKAPI_PTR *PFN_vkReleasePerformanceConfigurationINTEL)(VkDevice device, VkPerformanceConfigurationINTEL configuration); +typedef VkResult (VKAPI_PTR *PFN_vkQueueSetPerformanceConfigurationINTEL)(VkQueue queue, VkPerformanceConfigurationINTEL configuration); +typedef VkResult (VKAPI_PTR *PFN_vkGetPerformanceParameterINTEL)(VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue); -#define VK_NV_fragment_coverage_to_color 1 -#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1 -#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color" -typedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV; -typedef struct VkPipelineCoverageToColorStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkPipelineCoverageToColorStateCreateFlagsNV flags; - VkBool32 coverageToColorEnable; - uint32_t coverageToColorLocation; -} VkPipelineCoverageToColorStateCreateInfoNV; +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkInitializePerformanceApiINTEL( + VkDevice device, + const VkInitializePerformanceApiInfoINTEL* pInitializeInfo); +VKAPI_ATTR void VKAPI_CALL vkUninitializePerformanceApiINTEL( + VkDevice device); +VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceMarkerINTEL( + VkCommandBuffer commandBuffer, + const VkPerformanceMarkerInfoINTEL* pMarkerInfo); -#define VK_NV_framebuffer_mixed_samples 1 -#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1 -#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples" +VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceStreamMarkerINTEL( + VkCommandBuffer commandBuffer, + const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo); -typedef enum VkCoverageModulationModeNV { - VK_COVERAGE_MODULATION_MODE_NONE_NV = 0, - VK_COVERAGE_MODULATION_MODE_RGB_NV = 1, - VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2, - VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3, - VK_COVERAGE_MODULATION_MODE_BEGIN_RANGE_NV = VK_COVERAGE_MODULATION_MODE_NONE_NV, - VK_COVERAGE_MODULATION_MODE_END_RANGE_NV = VK_COVERAGE_MODULATION_MODE_RGBA_NV, - VK_COVERAGE_MODULATION_MODE_RANGE_SIZE_NV = (VK_COVERAGE_MODULATION_MODE_RGBA_NV - VK_COVERAGE_MODULATION_MODE_NONE_NV + 1), - VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 0x7FFFFFFF -} VkCoverageModulationModeNV; -typedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV; -typedef struct VkPipelineCoverageModulationStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkPipelineCoverageModulationStateCreateFlagsNV flags; - VkCoverageModulationModeNV coverageModulationMode; - VkBool32 coverageModulationTableEnable; - uint32_t coverageModulationTableCount; - const float* pCoverageModulationTable; -} VkPipelineCoverageModulationStateCreateInfoNV; +VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceOverrideINTEL( + VkCommandBuffer commandBuffer, + const VkPerformanceOverrideInfoINTEL* pOverrideInfo); +VKAPI_ATTR VkResult VKAPI_CALL vkAcquirePerformanceConfigurationINTEL( + VkDevice device, + const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, + VkPerformanceConfigurationINTEL* pConfiguration); +VKAPI_ATTR VkResult VKAPI_CALL vkReleasePerformanceConfigurationINTEL( + VkDevice device, + VkPerformanceConfigurationINTEL configuration); -#define VK_NV_fill_rectangle 1 -#define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1 -#define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle" +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSetPerformanceConfigurationINTEL( + VkQueue queue, + VkPerformanceConfigurationINTEL configuration); +VKAPI_ATTR VkResult VKAPI_CALL vkGetPerformanceParameterINTEL( + VkDevice device, + VkPerformanceParameterTypeINTEL parameter, + VkPerformanceValueINTEL* pValue); +#endif -#define VK_NV_shader_sm_builtins 1 -#define VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION 1 -#define VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME "VK_NV_shader_sm_builtins" -typedef struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV { - VkStructureType sType; - void* pNext; - uint32_t shaderSMCount; - uint32_t shaderWarpsPerSM; -} VkPhysicalDeviceShaderSMBuiltinsPropertiesNV; -typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV { +#define VK_EXT_pci_bus_info 1 +#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION 2 +#define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info" +typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT { VkStructureType sType; void* pNext; - VkBool32 shaderSMBuiltins; -} VkPhysicalDeviceShaderSMBuiltinsFeaturesNV; + uint32_t pciDomain; + uint32_t pciBus; + uint32_t pciDevice; + uint32_t pciFunction; +} VkPhysicalDevicePCIBusInfoPropertiesEXT; -#define VK_EXT_post_depth_coverage 1 -#define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1 -#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage" +#define VK_AMD_display_native_hdr 1 +#define VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION 1 +#define VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME "VK_AMD_display_native_hdr" +typedef struct VkDisplayNativeHdrSurfaceCapabilitiesAMD { + VkStructureType sType; + void* pNext; + VkBool32 localDimmingSupport; +} VkDisplayNativeHdrSurfaceCapabilitiesAMD; +typedef struct VkSwapchainDisplayNativeHdrCreateInfoAMD { + VkStructureType sType; + const void* pNext; + VkBool32 localDimmingEnable; +} VkSwapchainDisplayNativeHdrCreateInfoAMD; -#define VK_EXT_image_drm_format_modifier 1 -#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 1 -#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME "VK_EXT_image_drm_format_modifier" -typedef struct VkDrmFormatModifierPropertiesEXT { - uint64_t drmFormatModifier; - uint32_t drmFormatModifierPlaneCount; - VkFormatFeatureFlags drmFormatModifierTilingFeatures; -} VkDrmFormatModifierPropertiesEXT; +typedef void (VKAPI_PTR *PFN_vkSetLocalDimmingAMD)(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable); -typedef struct VkDrmFormatModifierPropertiesListEXT { - VkStructureType sType; - void* pNext; - uint32_t drmFormatModifierCount; - VkDrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties; -} VkDrmFormatModifierPropertiesListEXT; +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkSetLocalDimmingAMD( + VkDevice device, + VkSwapchainKHR swapChain, + VkBool32 localDimmingEnable); +#endif -typedef struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT { + +#define VK_EXT_fragment_density_map 1 +#define VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION 2 +#define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME "VK_EXT_fragment_density_map" +typedef struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT { VkStructureType sType; - const void* pNext; - uint64_t drmFormatModifier; - VkSharingMode sharingMode; - uint32_t queueFamilyIndexCount; - const uint32_t* pQueueFamilyIndices; -} VkPhysicalDeviceImageDrmFormatModifierInfoEXT; + void* pNext; + VkBool32 fragmentDensityMap; + VkBool32 fragmentDensityMapDynamic; + VkBool32 fragmentDensityMapNonSubsampledImages; +} VkPhysicalDeviceFragmentDensityMapFeaturesEXT; -typedef struct VkImageDrmFormatModifierListCreateInfoEXT { +typedef struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT { VkStructureType sType; - const void* pNext; - uint32_t drmFormatModifierCount; - const uint64_t* pDrmFormatModifiers; -} VkImageDrmFormatModifierListCreateInfoEXT; + void* pNext; + VkExtent2D minFragmentDensityTexelSize; + VkExtent2D maxFragmentDensityTexelSize; + VkBool32 fragmentDensityInvocations; +} VkPhysicalDeviceFragmentDensityMapPropertiesEXT; -typedef struct VkImageDrmFormatModifierExplicitCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint64_t drmFormatModifier; - uint32_t drmFormatModifierPlaneCount; - const VkSubresourceLayout* pPlaneLayouts; -} VkImageDrmFormatModifierExplicitCreateInfoEXT; +typedef struct VkRenderPassFragmentDensityMapCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkAttachmentReference fragmentDensityMapAttachment; +} VkRenderPassFragmentDensityMapCreateInfoEXT; -typedef struct VkImageDrmFormatModifierPropertiesEXT { - VkStructureType sType; - void* pNext; - uint64_t drmFormatModifier; -} VkImageDrmFormatModifierPropertiesEXT; -typedef VkResult (VKAPI_PTR *PFN_vkGetImageDrmFormatModifierPropertiesEXT)(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetImageDrmFormatModifierPropertiesEXT( - VkDevice device, - VkImage image, - VkImageDrmFormatModifierPropertiesEXT* pProperties); -#endif +#define VK_EXT_scalar_block_layout 1 +#define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1 +#define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout" +typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT; -#define VK_EXT_validation_cache 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT) -#define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1 -#define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache" -typedef enum VkValidationCacheHeaderVersionEXT { - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1, - VK_VALIDATION_CACHE_HEADER_VERSION_BEGIN_RANGE_EXT = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT, - VK_VALIDATION_CACHE_HEADER_VERSION_END_RANGE_EXT = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT, - VK_VALIDATION_CACHE_HEADER_VERSION_RANGE_SIZE_EXT = (VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT + 1), - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF -} VkValidationCacheHeaderVersionEXT; -typedef VkFlags VkValidationCacheCreateFlagsEXT; -typedef struct VkValidationCacheCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkValidationCacheCreateFlagsEXT flags; - size_t initialDataSize; - const void* pInitialData; -} VkValidationCacheCreateInfoEXT; +#define VK_GOOGLE_hlsl_functionality1 1 +#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION 1 +#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1" +#define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION +#define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME -typedef struct VkShaderModuleValidationCacheCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkValidationCacheEXT validationCache; -} VkShaderModuleValidationCacheCreateInfoEXT; -typedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache); -typedef void (VKAPI_PTR *PFN_vkDestroyValidationCacheEXT)(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches); -typedef VkResult (VKAPI_PTR *PFN_vkGetValidationCacheDataEXT)(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData); +#define VK_GOOGLE_decorate_string 1 +#define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 1 +#define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string" -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateValidationCacheEXT( - VkDevice device, - const VkValidationCacheCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkValidationCacheEXT* pValidationCache); -VKAPI_ATTR void VKAPI_CALL vkDestroyValidationCacheEXT( - VkDevice device, - VkValidationCacheEXT validationCache, - const VkAllocationCallbacks* pAllocator); +#define VK_EXT_subgroup_size_control 1 +#define VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION 2 +#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control" +typedef VkPhysicalDeviceSubgroupSizeControlFeatures VkPhysicalDeviceSubgroupSizeControlFeaturesEXT; -VKAPI_ATTR VkResult VKAPI_CALL vkMergeValidationCachesEXT( - VkDevice device, - VkValidationCacheEXT dstCache, - uint32_t srcCacheCount, - const VkValidationCacheEXT* pSrcCaches); +typedef VkPhysicalDeviceSubgroupSizeControlProperties VkPhysicalDeviceSubgroupSizeControlPropertiesEXT; -VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT( - VkDevice device, - VkValidationCacheEXT validationCache, - size_t* pDataSize, - void* pData); -#endif +typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT; -#define VK_EXT_descriptor_indexing 1 -#define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2 -#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing" -typedef enum VkDescriptorBindingFlagBitsEXT { - VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 0x00000001, - VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 0x00000002, - VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 0x00000004, - VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 0x00000008, - VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDescriptorBindingFlagBitsEXT; -typedef VkFlags VkDescriptorBindingFlagsEXT; -typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t bindingCount; - const VkDescriptorBindingFlagsEXT* pBindingFlags; -} VkDescriptorSetLayoutBindingFlagsCreateInfoEXT; +#define VK_AMD_shader_core_properties2 1 +#define VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION 1 +#define VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME "VK_AMD_shader_core_properties2" + +typedef enum VkShaderCorePropertiesFlagBitsAMD { + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF +} VkShaderCorePropertiesFlagBitsAMD; +typedef VkFlags VkShaderCorePropertiesFlagsAMD; +typedef struct VkPhysicalDeviceShaderCoreProperties2AMD { + VkStructureType sType; + void* pNext; + VkShaderCorePropertiesFlagsAMD shaderCoreFeatures; + uint32_t activeComputeUnitCount; +} VkPhysicalDeviceShaderCoreProperties2AMD; -typedef struct VkPhysicalDeviceDescriptorIndexingFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 shaderInputAttachmentArrayDynamicIndexing; - VkBool32 shaderUniformTexelBufferArrayDynamicIndexing; - VkBool32 shaderStorageTexelBufferArrayDynamicIndexing; - VkBool32 shaderUniformBufferArrayNonUniformIndexing; - VkBool32 shaderSampledImageArrayNonUniformIndexing; - VkBool32 shaderStorageBufferArrayNonUniformIndexing; - VkBool32 shaderStorageImageArrayNonUniformIndexing; - VkBool32 shaderInputAttachmentArrayNonUniformIndexing; - VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing; - VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing; - VkBool32 descriptorBindingUniformBufferUpdateAfterBind; - VkBool32 descriptorBindingSampledImageUpdateAfterBind; - VkBool32 descriptorBindingStorageImageUpdateAfterBind; - VkBool32 descriptorBindingStorageBufferUpdateAfterBind; - VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind; - VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind; - VkBool32 descriptorBindingUpdateUnusedWhilePending; - VkBool32 descriptorBindingPartiallyBound; - VkBool32 descriptorBindingVariableDescriptorCount; - VkBool32 runtimeDescriptorArray; -} VkPhysicalDeviceDescriptorIndexingFeaturesEXT; -typedef struct VkPhysicalDeviceDescriptorIndexingPropertiesEXT { + +#define VK_AMD_device_coherent_memory 1 +#define VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION 1 +#define VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME "VK_AMD_device_coherent_memory" +typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD { VkStructureType sType; void* pNext; - uint32_t maxUpdateAfterBindDescriptorsInAllPools; - VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; - VkBool32 shaderSampledImageArrayNonUniformIndexingNative; - VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; - VkBool32 shaderStorageImageArrayNonUniformIndexingNative; - VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; - VkBool32 robustBufferAccessUpdateAfterBind; - VkBool32 quadDivergentImplicitLod; - uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; - uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; - uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; - uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; - uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; - uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; - uint32_t maxPerStageUpdateAfterBindResources; - uint32_t maxDescriptorSetUpdateAfterBindSamplers; - uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; - uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; - uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; - uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; - uint32_t maxDescriptorSetUpdateAfterBindSampledImages; - uint32_t maxDescriptorSetUpdateAfterBindStorageImages; - uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; -} VkPhysicalDeviceDescriptorIndexingPropertiesEXT; + VkBool32 deviceCoherentMemory; +} VkPhysicalDeviceCoherentMemoryFeaturesAMD; -typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t descriptorSetCount; - const uint32_t* pDescriptorCounts; -} VkDescriptorSetVariableDescriptorCountAllocateInfoEXT; -typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupportEXT { + +#define VK_EXT_shader_image_atomic_int64 1 +#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION 1 +#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME "VK_EXT_shader_image_atomic_int64" +typedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT { VkStructureType sType; void* pNext; - uint32_t maxVariableDescriptorCount; -} VkDescriptorSetVariableDescriptorCountLayoutSupportEXT; + VkBool32 shaderImageInt64Atomics; + VkBool32 sparseImageInt64Atomics; +} VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT; -#define VK_EXT_shader_viewport_index_layer 1 -#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1 -#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer" +#define VK_EXT_memory_budget 1 +#define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1 +#define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME "VK_EXT_memory_budget" +typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT { + VkStructureType sType; + void* pNext; + VkDeviceSize heapBudget[VK_MAX_MEMORY_HEAPS]; + VkDeviceSize heapUsage[VK_MAX_MEMORY_HEAPS]; +} VkPhysicalDeviceMemoryBudgetPropertiesEXT; -#define VK_NV_shading_rate_image 1 -#define VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION 3 -#define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image" -typedef enum VkShadingRatePaletteEntryNV { - VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0, - VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1, - VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2, - VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3, - VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11, - VK_SHADING_RATE_PALETTE_ENTRY_BEGIN_RANGE_NV = VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV, - VK_SHADING_RATE_PALETTE_ENTRY_END_RANGE_NV = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV, - VK_SHADING_RATE_PALETTE_ENTRY_RANGE_SIZE_NV = (VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV - VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV + 1), - VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 0x7FFFFFFF -} VkShadingRatePaletteEntryNV; +#define VK_EXT_memory_priority 1 +#define VK_EXT_MEMORY_PRIORITY_SPEC_VERSION 1 +#define VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME "VK_EXT_memory_priority" +typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 memoryPriority; +} VkPhysicalDeviceMemoryPriorityFeaturesEXT; -typedef enum VkCoarseSampleOrderTypeNV { - VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0, - VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1, - VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2, - VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3, - VK_COARSE_SAMPLE_ORDER_TYPE_BEGIN_RANGE_NV = VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV, - VK_COARSE_SAMPLE_ORDER_TYPE_END_RANGE_NV = VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV, - VK_COARSE_SAMPLE_ORDER_TYPE_RANGE_SIZE_NV = (VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV - VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV + 1), - VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 0x7FFFFFFF -} VkCoarseSampleOrderTypeNV; -typedef struct VkShadingRatePaletteNV { - uint32_t shadingRatePaletteEntryCount; - const VkShadingRatePaletteEntryNV* pShadingRatePaletteEntries; -} VkShadingRatePaletteNV; +typedef struct VkMemoryPriorityAllocateInfoEXT { + VkStructureType sType; + const void* pNext; + float priority; +} VkMemoryPriorityAllocateInfoEXT; -typedef struct VkPipelineViewportShadingRateImageStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkBool32 shadingRateImageEnable; - uint32_t viewportCount; - const VkShadingRatePaletteNV* pShadingRatePalettes; -} VkPipelineViewportShadingRateImageStateCreateInfoNV; -typedef struct VkPhysicalDeviceShadingRateImageFeaturesNV { + +#define VK_NV_dedicated_allocation_image_aliasing 1 +#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION 1 +#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME "VK_NV_dedicated_allocation_image_aliasing" +typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV { VkStructureType sType; void* pNext; - VkBool32 shadingRateImage; - VkBool32 shadingRateCoarseSampleOrder; -} VkPhysicalDeviceShadingRateImageFeaturesNV; + VkBool32 dedicatedAllocationImageAliasing; +} VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; -typedef struct VkPhysicalDeviceShadingRateImagePropertiesNV { + + +#define VK_EXT_buffer_device_address 1 +#define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2 +#define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address" +typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT { VkStructureType sType; void* pNext; - VkExtent2D shadingRateTexelSize; - uint32_t shadingRatePaletteSize; - uint32_t shadingRateMaxCoarseSamples; -} VkPhysicalDeviceShadingRateImagePropertiesNV; + VkBool32 bufferDeviceAddress; + VkBool32 bufferDeviceAddressCaptureReplay; + VkBool32 bufferDeviceAddressMultiDevice; +} VkPhysicalDeviceBufferDeviceAddressFeaturesEXT; -typedef struct VkCoarseSampleLocationNV { - uint32_t pixelX; - uint32_t pixelY; - uint32_t sample; -} VkCoarseSampleLocationNV; +typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT; -typedef struct VkCoarseSampleOrderCustomNV { - VkShadingRatePaletteEntryNV shadingRate; - uint32_t sampleCount; - uint32_t sampleLocationCount; - const VkCoarseSampleLocationNV* pSampleLocations; -} VkCoarseSampleOrderCustomNV; +typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoEXT; -typedef struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkCoarseSampleOrderTypeNV sampleOrderType; - uint32_t customSampleOrderCount; - const VkCoarseSampleOrderCustomNV* pCustomSampleOrders; -} VkPipelineViewportCoarseSampleOrderStateCreateInfoNV; +typedef struct VkBufferDeviceAddressCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceAddress deviceAddress; +} VkBufferDeviceAddressCreateInfoEXT; -typedef void (VKAPI_PTR *PFN_vkCmdBindShadingRateImageNV)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout); -typedef void (VKAPI_PTR *PFN_vkCmdSetViewportShadingRatePaletteNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes); -typedef void (VKAPI_PTR *PFN_vkCmdSetCoarseSampleOrderNV)(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders); +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdBindShadingRateImageNV( - VkCommandBuffer commandBuffer, - VkImageView imageView, - VkImageLayout imageLayout); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportShadingRatePaletteNV( - VkCommandBuffer commandBuffer, - uint32_t firstViewport, - uint32_t viewportCount, - const VkShadingRatePaletteNV* pShadingRatePalettes); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetCoarseSampleOrderNV( - VkCommandBuffer commandBuffer, - VkCoarseSampleOrderTypeNV sampleOrderType, - uint32_t customSampleOrderCount, - const VkCoarseSampleOrderCustomNV* pCustomSampleOrders); +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); #endif -#define VK_NV_ray_tracing 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureNV) -#define VK_NV_RAY_TRACING_SPEC_VERSION 3 -#define VK_NV_RAY_TRACING_EXTENSION_NAME "VK_NV_ray_tracing" -#define VK_SHADER_UNUSED_NV (~0U) - -typedef enum VkAccelerationStructureTypeNV { - VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0, - VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1, - VK_ACCELERATION_STRUCTURE_TYPE_BEGIN_RANGE_NV = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV, - VK_ACCELERATION_STRUCTURE_TYPE_END_RANGE_NV = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV, - VK_ACCELERATION_STRUCTURE_TYPE_RANGE_SIZE_NV = (VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV - VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV + 1), - VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF -} VkAccelerationStructureTypeNV; - -typedef enum VkRayTracingShaderGroupTypeNV { - VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0, - VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1, - VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2, - VK_RAY_TRACING_SHADER_GROUP_TYPE_BEGIN_RANGE_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV, - VK_RAY_TRACING_SHADER_GROUP_TYPE_END_RANGE_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV, - VK_RAY_TRACING_SHADER_GROUP_TYPE_RANGE_SIZE_NV = (VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV - VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV + 1), - VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_NV = 0x7FFFFFFF -} VkRayTracingShaderGroupTypeNV; - -typedef enum VkGeometryTypeNV { - VK_GEOMETRY_TYPE_TRIANGLES_NV = 0, - VK_GEOMETRY_TYPE_AABBS_NV = 1, - VK_GEOMETRY_TYPE_BEGIN_RANGE_NV = VK_GEOMETRY_TYPE_TRIANGLES_NV, - VK_GEOMETRY_TYPE_END_RANGE_NV = VK_GEOMETRY_TYPE_AABBS_NV, - VK_GEOMETRY_TYPE_RANGE_SIZE_NV = (VK_GEOMETRY_TYPE_AABBS_NV - VK_GEOMETRY_TYPE_TRIANGLES_NV + 1), - VK_GEOMETRY_TYPE_MAX_ENUM_NV = 0x7FFFFFFF -} VkGeometryTypeNV; - -typedef enum VkCopyAccelerationStructureModeNV { - VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0, - VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1, - VK_COPY_ACCELERATION_STRUCTURE_MODE_BEGIN_RANGE_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV, - VK_COPY_ACCELERATION_STRUCTURE_MODE_END_RANGE_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV, - VK_COPY_ACCELERATION_STRUCTURE_MODE_RANGE_SIZE_NV = (VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV - VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV + 1), - VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_NV = 0x7FFFFFFF -} VkCopyAccelerationStructureModeNV; +#define VK_EXT_tooling_info 1 +#define VK_EXT_TOOLING_INFO_SPEC_VERSION 1 +#define VK_EXT_TOOLING_INFO_EXTENSION_NAME "VK_EXT_tooling_info" +typedef VkToolPurposeFlagBits VkToolPurposeFlagBitsEXT; -typedef enum VkAccelerationStructureMemoryRequirementsTypeNV { - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BEGIN_RANGE_NV = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_END_RANGE_NV = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_RANGE_SIZE_NV = (VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV + 1), - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV = 0x7FFFFFFF -} VkAccelerationStructureMemoryRequirementsTypeNV; +typedef VkToolPurposeFlags VkToolPurposeFlagsEXT; -typedef enum VkGeometryFlagBitsNV { - VK_GEOMETRY_OPAQUE_BIT_NV = 0x00000001, - VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 0x00000002, - VK_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF -} VkGeometryFlagBitsNV; -typedef VkFlags VkGeometryFlagsNV; - -typedef enum VkGeometryInstanceFlagBitsNV { - VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 0x00000001, - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 0x00000002, - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 0x00000004, - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 0x00000008, - VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF -} VkGeometryInstanceFlagBitsNV; -typedef VkFlags VkGeometryInstanceFlagsNV; - -typedef enum VkBuildAccelerationStructureFlagBitsNV { - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 0x00000001, - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 0x00000002, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 0x00000004, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 0x00000008, - VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 0x00000010, - VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF -} VkBuildAccelerationStructureFlagBitsNV; -typedef VkFlags VkBuildAccelerationStructureFlagsNV; -typedef struct VkRayTracingShaderGroupCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkRayTracingShaderGroupTypeNV type; - uint32_t generalShader; - uint32_t closestHitShader; - uint32_t anyHitShader; - uint32_t intersectionShader; -} VkRayTracingShaderGroupCreateInfoNV; +typedef VkPhysicalDeviceToolProperties VkPhysicalDeviceToolPropertiesEXT; -typedef struct VkRayTracingPipelineCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkPipelineCreateFlags flags; - uint32_t stageCount; - const VkPipelineShaderStageCreateInfo* pStages; - uint32_t groupCount; - const VkRayTracingShaderGroupCreateInfoNV* pGroups; - uint32_t maxRecursionDepth; - VkPipelineLayout layout; - VkPipeline basePipelineHandle; - int32_t basePipelineIndex; -} VkRayTracingPipelineCreateInfoNV; +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolPropertiesEXT)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolProperties* pToolProperties); -typedef struct VkGeometryTrianglesNV { - VkStructureType sType; - const void* pNext; - VkBuffer vertexData; - VkDeviceSize vertexOffset; - uint32_t vertexCount; - VkDeviceSize vertexStride; - VkFormat vertexFormat; - VkBuffer indexData; - VkDeviceSize indexOffset; - uint32_t indexCount; - VkIndexType indexType; - VkBuffer transformData; - VkDeviceSize transformOffset; -} VkGeometryTrianglesNV; +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolPropertiesEXT( + VkPhysicalDevice physicalDevice, + uint32_t* pToolCount, + VkPhysicalDeviceToolProperties* pToolProperties); +#endif -typedef struct VkGeometryAABBNV { - VkStructureType sType; - const void* pNext; - VkBuffer aabbData; - uint32_t numAABBs; - uint32_t stride; - VkDeviceSize offset; -} VkGeometryAABBNV; -typedef struct VkGeometryDataNV { - VkGeometryTrianglesNV triangles; - VkGeometryAABBNV aabbs; -} VkGeometryDataNV; +#define VK_EXT_separate_stencil_usage 1 +#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1 +#define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage" +typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT; -typedef struct VkGeometryNV { - VkStructureType sType; - const void* pNext; - VkGeometryTypeNV geometryType; - VkGeometryDataNV geometry; - VkGeometryFlagsNV flags; -} VkGeometryNV; -typedef struct VkAccelerationStructureInfoNV { - VkStructureType sType; - const void* pNext; - VkAccelerationStructureTypeNV type; - VkBuildAccelerationStructureFlagsNV flags; - uint32_t instanceCount; - uint32_t geometryCount; - const VkGeometryNV* pGeometries; -} VkAccelerationStructureInfoNV; -typedef struct VkAccelerationStructureCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkDeviceSize compactedSize; - VkAccelerationStructureInfoNV info; -} VkAccelerationStructureCreateInfoNV; +#define VK_EXT_validation_features 1 +#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 5 +#define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features" -typedef struct VkBindAccelerationStructureMemoryInfoNV { - VkStructureType sType; - const void* pNext; - VkAccelerationStructureNV accelerationStructure; - VkDeviceMemory memory; - VkDeviceSize memoryOffset; - uint32_t deviceIndexCount; - const uint32_t* pDeviceIndices; -} VkBindAccelerationStructureMemoryInfoNV; +typedef enum VkValidationFeatureEnableEXT { + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0, + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1, + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2, + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3, + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4, + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkValidationFeatureEnableEXT; -typedef struct VkWriteDescriptorSetAccelerationStructureNV { - VkStructureType sType; - const void* pNext; - uint32_t accelerationStructureCount; - const VkAccelerationStructureNV* pAccelerationStructures; -} VkWriteDescriptorSetAccelerationStructureNV; +typedef enum VkValidationFeatureDisableEXT { + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0, + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1, + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2, + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3, + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4, + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5, + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6, + VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT = 7, + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkValidationFeatureDisableEXT; +typedef struct VkValidationFeaturesEXT { + VkStructureType sType; + const void* pNext; + uint32_t enabledValidationFeatureCount; + const VkValidationFeatureEnableEXT* pEnabledValidationFeatures; + uint32_t disabledValidationFeatureCount; + const VkValidationFeatureDisableEXT* pDisabledValidationFeatures; +} VkValidationFeaturesEXT; -typedef struct VkAccelerationStructureMemoryRequirementsInfoNV { - VkStructureType sType; - const void* pNext; - VkAccelerationStructureMemoryRequirementsTypeNV type; - VkAccelerationStructureNV accelerationStructure; -} VkAccelerationStructureMemoryRequirementsInfoNV; -typedef struct VkPhysicalDeviceRayTracingPropertiesNV { - VkStructureType sType; - void* pNext; - uint32_t shaderGroupHandleSize; - uint32_t maxRecursionDepth; - uint32_t maxShaderGroupStride; - uint32_t shaderGroupBaseAlignment; - uint64_t maxGeometryCount; - uint64_t maxInstanceCount; - uint64_t maxTriangleCount; - uint32_t maxDescriptorSetAccelerationStructures; -} VkPhysicalDeviceRayTracingPropertiesNV; -typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureNV)(VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure); -typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureMemoryRequirementsNV)(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements); -typedef VkResult (VKAPI_PTR *PFN_vkBindAccelerationStructureMemoryNV)(VkDevice device, uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos); -typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureNV)(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset); -typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureNV)(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeNV mode); -typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysNV)(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth); -typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesNV)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); -typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesNV)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); -typedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureHandleNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData); -typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesNV)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery); -typedef VkResult (VKAPI_PTR *PFN_vkCompileDeferredNV)(VkDevice device, VkPipeline pipeline, uint32_t shader); +#define VK_NV_cooperative_matrix 1 +#define VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION 1 +#define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_NV_cooperative_matrix" -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureNV( - VkDevice device, - const VkAccelerationStructureCreateInfoNV* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkAccelerationStructureNV* pAccelerationStructure); +typedef enum VkComponentTypeNV { + VK_COMPONENT_TYPE_FLOAT16_NV = 0, + VK_COMPONENT_TYPE_FLOAT32_NV = 1, + VK_COMPONENT_TYPE_FLOAT64_NV = 2, + VK_COMPONENT_TYPE_SINT8_NV = 3, + VK_COMPONENT_TYPE_SINT16_NV = 4, + VK_COMPONENT_TYPE_SINT32_NV = 5, + VK_COMPONENT_TYPE_SINT64_NV = 6, + VK_COMPONENT_TYPE_UINT8_NV = 7, + VK_COMPONENT_TYPE_UINT16_NV = 8, + VK_COMPONENT_TYPE_UINT32_NV = 9, + VK_COMPONENT_TYPE_UINT64_NV = 10, + VK_COMPONENT_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkComponentTypeNV; -VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureNV( - VkDevice device, - VkAccelerationStructureNV accelerationStructure, - const VkAllocationCallbacks* pAllocator); +typedef enum VkScopeNV { + VK_SCOPE_DEVICE_NV = 1, + VK_SCOPE_WORKGROUP_NV = 2, + VK_SCOPE_SUBGROUP_NV = 3, + VK_SCOPE_QUEUE_FAMILY_NV = 5, + VK_SCOPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkScopeNV; +typedef struct VkCooperativeMatrixPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t MSize; + uint32_t NSize; + uint32_t KSize; + VkComponentTypeNV AType; + VkComponentTypeNV BType; + VkComponentTypeNV CType; + VkComponentTypeNV DType; + VkScopeNV scope; +} VkCooperativeMatrixPropertiesNV; -VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV( - VkDevice device, - const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, - VkMemoryRequirements2KHR* pMemoryRequirements); +typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 cooperativeMatrix; + VkBool32 cooperativeMatrixRobustBufferAccess; +} VkPhysicalDeviceCooperativeMatrixFeaturesNV; + +typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV { + VkStructureType sType; + void* pNext; + VkShaderStageFlags cooperativeMatrixSupportedStages; +} VkPhysicalDeviceCooperativeMatrixPropertiesNV; -VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryNV( - VkDevice device, - uint32_t bindInfoCount, - const VkBindAccelerationStructureMemoryInfoNV* pBindInfos); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties); -VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureNV( - VkCommandBuffer commandBuffer, - const VkAccelerationStructureInfoNV* pInfo, - VkBuffer instanceData, - VkDeviceSize instanceOffset, - VkBool32 update, - VkAccelerationStructureNV dst, - VkAccelerationStructureNV src, - VkBuffer scratch, - VkDeviceSize scratchOffset); +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkCooperativeMatrixPropertiesNV* pProperties); +#endif -VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureNV( - VkCommandBuffer commandBuffer, - VkAccelerationStructureNV dst, - VkAccelerationStructureNV src, - VkCopyAccelerationStructureModeNV mode); -VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysNV( - VkCommandBuffer commandBuffer, - VkBuffer raygenShaderBindingTableBuffer, - VkDeviceSize raygenShaderBindingOffset, - VkBuffer missShaderBindingTableBuffer, - VkDeviceSize missShaderBindingOffset, - VkDeviceSize missShaderBindingStride, - VkBuffer hitShaderBindingTableBuffer, - VkDeviceSize hitShaderBindingOffset, - VkDeviceSize hitShaderBindingStride, - VkBuffer callableShaderBindingTableBuffer, - VkDeviceSize callableShaderBindingOffset, - VkDeviceSize callableShaderBindingStride, - uint32_t width, - uint32_t height, - uint32_t depth); +#define VK_NV_coverage_reduction_mode 1 +#define VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION 1 +#define VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME "VK_NV_coverage_reduction_mode" -VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesNV( - VkDevice device, - VkPipelineCache pipelineCache, - uint32_t createInfoCount, - const VkRayTracingPipelineCreateInfoNV* pCreateInfos, - const VkAllocationCallbacks* pAllocator, - VkPipeline* pPipelines); +typedef enum VkCoverageReductionModeNV { + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0, + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1, + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 0x7FFFFFFF +} VkCoverageReductionModeNV; +typedef VkFlags VkPipelineCoverageReductionStateCreateFlagsNV; +typedef struct VkPhysicalDeviceCoverageReductionModeFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 coverageReductionMode; +} VkPhysicalDeviceCoverageReductionModeFeaturesNV; -VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesNV( - VkDevice device, - VkPipeline pipeline, - uint32_t firstGroup, - uint32_t groupCount, - size_t dataSize, - void* pData); +typedef struct VkPipelineCoverageReductionStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineCoverageReductionStateCreateFlagsNV flags; + VkCoverageReductionModeNV coverageReductionMode; +} VkPipelineCoverageReductionStateCreateInfoNV; -VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureHandleNV( - VkDevice device, - VkAccelerationStructureNV accelerationStructure, - size_t dataSize, - void* pData); +typedef struct VkFramebufferMixedSamplesCombinationNV { + VkStructureType sType; + void* pNext; + VkCoverageReductionModeNV coverageReductionMode; + VkSampleCountFlagBits rasterizationSamples; + VkSampleCountFlags depthStencilSamples; + VkSampleCountFlags colorSamples; +} VkFramebufferMixedSamplesCombinationNV; -VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesNV( - VkCommandBuffer commandBuffer, - uint32_t accelerationStructureCount, - const VkAccelerationStructureNV* pAccelerationStructures, - VkQueryType queryType, - VkQueryPool queryPool, - uint32_t firstQuery); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)(VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations); -VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNV( - VkDevice device, - VkPipeline pipeline, - uint32_t shader); +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + VkPhysicalDevice physicalDevice, + uint32_t* pCombinationCount, + VkFramebufferMixedSamplesCombinationNV* pCombinations); #endif -#define VK_NV_representative_fragment_test 1 -#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 2 -#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME "VK_NV_representative_fragment_test" -typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV { +#define VK_EXT_fragment_shader_interlock 1 +#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION 1 +#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME "VK_EXT_fragment_shader_interlock" +typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT { VkStructureType sType; void* pNext; - VkBool32 representativeFragmentTest; -} VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV; + VkBool32 fragmentShaderSampleInterlock; + VkBool32 fragmentShaderPixelInterlock; + VkBool32 fragmentShaderShadingRateInterlock; +} VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT; -typedef struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV { + + +#define VK_EXT_ycbcr_image_arrays 1 +#define VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION 1 +#define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME "VK_EXT_ycbcr_image_arrays" +typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT { VkStructureType sType; - const void* pNext; - VkBool32 representativeFragmentTestEnable; -} VkPipelineRepresentativeFragmentTestStateCreateInfoNV; + void* pNext; + VkBool32 ycbcrImageArrays; +} VkPhysicalDeviceYcbcrImageArraysFeaturesEXT; -#define VK_EXT_filter_cubic 1 -#define VK_EXT_FILTER_CUBIC_SPEC_VERSION 2 -#define VK_EXT_FILTER_CUBIC_EXTENSION_NAME "VK_EXT_filter_cubic" -typedef struct VkPhysicalDeviceImageViewImageFormatInfoEXT { +#define VK_EXT_provoking_vertex 1 +#define VK_EXT_PROVOKING_VERTEX_SPEC_VERSION 1 +#define VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME "VK_EXT_provoking_vertex" + +typedef enum VkProvokingVertexModeEXT { + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0, + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1, + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkProvokingVertexModeEXT; +typedef struct VkPhysicalDeviceProvokingVertexFeaturesEXT { VkStructureType sType; void* pNext; - VkImageViewType imageViewType; -} VkPhysicalDeviceImageViewImageFormatInfoEXT; + VkBool32 provokingVertexLast; + VkBool32 transformFeedbackPreservesProvokingVertex; +} VkPhysicalDeviceProvokingVertexFeaturesEXT; -typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT { +typedef struct VkPhysicalDeviceProvokingVertexPropertiesEXT { VkStructureType sType; void* pNext; - VkBool32 filterCubic; - VkBool32 filterCubicMinmax ; -} VkFilterCubicImageViewImageFormatPropertiesEXT; + VkBool32 provokingVertexModePerPipeline; + VkBool32 transformFeedbackPreservesTriangleFanProvokingVertex; +} VkPhysicalDeviceProvokingVertexPropertiesEXT; + +typedef struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkProvokingVertexModeEXT provokingVertexMode; +} VkPipelineRasterizationProvokingVertexStateCreateInfoEXT; -#define VK_EXT_global_priority 1 -#define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2 -#define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority" +#define VK_EXT_headless_surface 1 +#define VK_EXT_HEADLESS_SURFACE_SPEC_VERSION 1 +#define VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME "VK_EXT_headless_surface" +typedef VkFlags VkHeadlessSurfaceCreateFlagsEXT; +typedef struct VkHeadlessSurfaceCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkHeadlessSurfaceCreateFlagsEXT flags; +} VkHeadlessSurfaceCreateInfoEXT; -typedef enum VkQueueGlobalPriorityEXT { - VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128, - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256, - VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512, - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024, - VK_QUEUE_GLOBAL_PRIORITY_BEGIN_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT, - VK_QUEUE_GLOBAL_PRIORITY_END_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT, - VK_QUEUE_GLOBAL_PRIORITY_RANGE_SIZE_EXT = (VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT - VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT + 1), - VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 0x7FFFFFFF -} VkQueueGlobalPriorityEXT; -typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkQueueGlobalPriorityEXT globalPriority; -} VkDeviceQueueGlobalPriorityCreateInfoEXT; +typedef VkResult (VKAPI_PTR *PFN_vkCreateHeadlessSurfaceEXT)(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateHeadlessSurfaceEXT( + VkInstance instance, + const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif -#define VK_EXT_external_memory_host 1 -#define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1 -#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host" -typedef struct VkImportMemoryHostPointerInfoEXT { - VkStructureType sType; - const void* pNext; - VkExternalMemoryHandleTypeFlagBits handleType; - void* pHostPointer; -} VkImportMemoryHostPointerInfoEXT; +#define VK_EXT_line_rasterization 1 +#define VK_EXT_LINE_RASTERIZATION_SPEC_VERSION 1 +#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization" -typedef struct VkMemoryHostPointerPropertiesEXT { +typedef enum VkLineRasterizationModeEXT { + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0, + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1, + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2, + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3, + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkLineRasterizationModeEXT; +typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT { VkStructureType sType; void* pNext; - uint32_t memoryTypeBits; -} VkMemoryHostPointerPropertiesEXT; + VkBool32 rectangularLines; + VkBool32 bresenhamLines; + VkBool32 smoothLines; + VkBool32 stippledRectangularLines; + VkBool32 stippledBresenhamLines; + VkBool32 stippledSmoothLines; +} VkPhysicalDeviceLineRasterizationFeaturesEXT; -typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT { +typedef struct VkPhysicalDeviceLineRasterizationPropertiesEXT { VkStructureType sType; void* pNext; - VkDeviceSize minImportedHostPointerAlignment; -} VkPhysicalDeviceExternalMemoryHostPropertiesEXT; + uint32_t lineSubPixelPrecisionBits; +} VkPhysicalDeviceLineRasterizationPropertiesEXT; -typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties); +typedef struct VkPipelineRasterizationLineStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkLineRasterizationModeEXT lineRasterizationMode; + VkBool32 stippledLineEnable; + uint32_t lineStippleFactor; + uint16_t lineStipplePattern; +} VkPipelineRasterizationLineStateCreateInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEXT)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT( +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT( + VkCommandBuffer commandBuffer, + uint32_t lineStippleFactor, + uint16_t lineStipplePattern); +#endif + + +#define VK_EXT_shader_atomic_float 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME "VK_EXT_shader_atomic_float" +typedef struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderBufferFloat32Atomics; + VkBool32 shaderBufferFloat32AtomicAdd; + VkBool32 shaderBufferFloat64Atomics; + VkBool32 shaderBufferFloat64AtomicAdd; + VkBool32 shaderSharedFloat32Atomics; + VkBool32 shaderSharedFloat32AtomicAdd; + VkBool32 shaderSharedFloat64Atomics; + VkBool32 shaderSharedFloat64AtomicAdd; + VkBool32 shaderImageFloat32Atomics; + VkBool32 shaderImageFloat32AtomicAdd; + VkBool32 sparseImageFloat32Atomics; + VkBool32 sparseImageFloat32AtomicAdd; +} VkPhysicalDeviceShaderAtomicFloatFeaturesEXT; + + + +#define VK_EXT_host_query_reset 1 +#define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1 +#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset" +typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkResetQueryPoolEXT)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkResetQueryPoolEXT( VkDevice device, - VkExternalMemoryHandleTypeFlagBits handleType, - const void* pHostPointer, - VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties); + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount); #endif -#define VK_AMD_buffer_marker 1 -#define VK_AMD_BUFFER_MARKER_SPEC_VERSION 1 -#define VK_AMD_BUFFER_MARKER_EXTENSION_NAME "VK_AMD_buffer_marker" -typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarkerAMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker); +#define VK_EXT_index_type_uint8 1 +#define VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION 1 +#define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_EXT_index_type_uint8" +typedef struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 indexTypeUint8; +} VkPhysicalDeviceIndexTypeUint8FeaturesEXT; + + + +#define VK_EXT_extended_dynamic_state 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_extended_dynamic_state" +typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 extendedDynamicState; +} VkPhysicalDeviceExtendedDynamicStateFeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetCullModeEXT)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFaceEXT)(VkCommandBuffer commandBuffer, VkFrontFace frontFace); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopologyEXT)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports); +typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors); +typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2EXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOpEXT)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOpEXT)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD( +VKAPI_ATTR void VKAPI_CALL vkCmdSetCullModeEXT( VkCommandBuffer commandBuffer, - VkPipelineStageFlagBits pipelineStage, - VkBuffer dstBuffer, - VkDeviceSize dstOffset, - uint32_t marker); -#endif + VkCullModeFlags cullMode); +VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFaceEXT( + VkCommandBuffer commandBuffer, + VkFrontFace frontFace); -#define VK_AMD_pipeline_compiler_control 1 -#define VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION 1 -#define VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME "VK_AMD_pipeline_compiler_control" +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopologyEXT( + VkCommandBuffer commandBuffer, + VkPrimitiveTopology primitiveTopology); -typedef enum VkPipelineCompilerControlFlagBitsAMD { - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF -} VkPipelineCompilerControlFlagBitsAMD; -typedef VkFlags VkPipelineCompilerControlFlagsAMD; -typedef struct VkPipelineCompilerControlCreateInfoAMD { - VkStructureType sType; - const void* pNext; - VkPipelineCompilerControlFlagsAMD compilerControlFlags; -} VkPipelineCompilerControlCreateInfoAMD; +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCountEXT( + VkCommandBuffer commandBuffer, + uint32_t viewportCount, + const VkViewport* pViewports); +VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCountEXT( + VkCommandBuffer commandBuffer, + uint32_t scissorCount, + const VkRect2D* pScissors); +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2EXT( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets, + const VkDeviceSize* pSizes, + const VkDeviceSize* pStrides); -#define VK_EXT_calibrated_timestamps 1 -#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 1 -#define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps" +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthTestEnable); -typedef enum VkTimeDomainEXT { - VK_TIME_DOMAIN_DEVICE_EXT = 0, - VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1, - VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2, - VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3, - VK_TIME_DOMAIN_BEGIN_RANGE_EXT = VK_TIME_DOMAIN_DEVICE_EXT, - VK_TIME_DOMAIN_END_RANGE_EXT = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT, - VK_TIME_DOMAIN_RANGE_SIZE_EXT = (VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT - VK_TIME_DOMAIN_DEVICE_EXT + 1), - VK_TIME_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF -} VkTimeDomainEXT; -typedef struct VkCalibratedTimestampInfoEXT { - VkStructureType sType; - const void* pNext; - VkTimeDomainEXT timeDomain; -} VkCalibratedTimestampInfoEXT; +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthWriteEnable); -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains); -typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation); +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOpEXT( + VkCommandBuffer commandBuffer, + VkCompareOp depthCompareOp); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( - VkPhysicalDevice physicalDevice, - uint32_t* pTimeDomainCount, - VkTimeDomainEXT* pTimeDomains); +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthBoundsTestEnable); -VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT( - VkDevice device, - uint32_t timestampCount, - const VkCalibratedTimestampInfoEXT* pTimestampInfos, - uint64_t* pTimestamps, - uint64_t* pMaxDeviation); +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 stencilTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOpEXT( + VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + VkStencilOp failOp, + VkStencilOp passOp, + VkStencilOp depthFailOp, + VkCompareOp compareOp); #endif -#define VK_AMD_shader_core_properties 1 -#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 2 -#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties" -typedef struct VkPhysicalDeviceShaderCorePropertiesAMD { +#define VK_EXT_shader_atomic_float2 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME "VK_EXT_shader_atomic_float2" +typedef struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT { VkStructureType sType; void* pNext; - uint32_t shaderEngineCount; - uint32_t shaderArraysPerEngineCount; - uint32_t computeUnitsPerShaderArray; - uint32_t simdPerComputeUnit; - uint32_t wavefrontsPerSimd; - uint32_t wavefrontSize; - uint32_t sgprsPerSimd; - uint32_t minSgprAllocation; - uint32_t maxSgprAllocation; - uint32_t sgprAllocationGranularity; - uint32_t vgprsPerSimd; - uint32_t minVgprAllocation; - uint32_t maxVgprAllocation; - uint32_t vgprAllocationGranularity; -} VkPhysicalDeviceShaderCorePropertiesAMD; + VkBool32 shaderBufferFloat16Atomics; + VkBool32 shaderBufferFloat16AtomicAdd; + VkBool32 shaderBufferFloat16AtomicMinMax; + VkBool32 shaderBufferFloat32AtomicMinMax; + VkBool32 shaderBufferFloat64AtomicMinMax; + VkBool32 shaderSharedFloat16Atomics; + VkBool32 shaderSharedFloat16AtomicAdd; + VkBool32 shaderSharedFloat16AtomicMinMax; + VkBool32 shaderSharedFloat32AtomicMinMax; + VkBool32 shaderSharedFloat64AtomicMinMax; + VkBool32 shaderImageFloat32AtomicMinMax; + VkBool32 sparseImageFloat32AtomicMinMax; +} VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT; -#define VK_AMD_memory_overallocation_behavior 1 -#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION 1 -#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME "VK_AMD_memory_overallocation_behavior" +#define VK_EXT_shader_demote_to_helper_invocation 1 +#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1 +#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME "VK_EXT_shader_demote_to_helper_invocation" +typedef VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; + + + +#define VK_NV_device_generated_commands 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNV) +#define VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3 +#define VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NV_device_generated_commands" + +typedef enum VkIndirectCommandsTokenTypeNV { + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkIndirectCommandsTokenTypeNV; + +typedef enum VkIndirectStateFlagBitsNV { + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 0x00000001, + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkIndirectStateFlagBitsNV; +typedef VkFlags VkIndirectStateFlagsNV; + +typedef enum VkIndirectCommandsLayoutUsageFlagBitsNV { + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 0x00000001, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 0x00000002, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 0x00000004, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkIndirectCommandsLayoutUsageFlagBitsNV; +typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNV; +typedef struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t maxGraphicsShaderGroupCount; + uint32_t maxIndirectSequenceCount; + uint32_t maxIndirectCommandsTokenCount; + uint32_t maxIndirectCommandsStreamCount; + uint32_t maxIndirectCommandsTokenOffset; + uint32_t maxIndirectCommandsStreamStride; + uint32_t minSequencesCountBufferOffsetAlignment; + uint32_t minSequencesIndexBufferOffsetAlignment; + uint32_t minIndirectCommandsBufferOffsetAlignment; +} VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV; + +typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 deviceGeneratedCommands; +} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV; + +typedef struct VkGraphicsShaderGroupCreateInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + const VkPipelineVertexInputStateCreateInfo* pVertexInputState; + const VkPipelineTessellationStateCreateInfo* pTessellationState; +} VkGraphicsShaderGroupCreateInfoNV; + +typedef struct VkGraphicsPipelineShaderGroupsCreateInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t groupCount; + const VkGraphicsShaderGroupCreateInfoNV* pGroups; + uint32_t pipelineCount; + const VkPipeline* pPipelines; +} VkGraphicsPipelineShaderGroupsCreateInfoNV; + +typedef struct VkBindShaderGroupIndirectCommandNV { + uint32_t groupIndex; +} VkBindShaderGroupIndirectCommandNV; + +typedef struct VkBindIndexBufferIndirectCommandNV { + VkDeviceAddress bufferAddress; + uint32_t size; + VkIndexType indexType; +} VkBindIndexBufferIndirectCommandNV; -typedef enum VkMemoryOverallocationBehaviorAMD { - VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_BEGIN_RANGE_AMD = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_END_RANGE_AMD = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_RANGE_SIZE_AMD = (VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD - VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD + 1), - VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 0x7FFFFFFF -} VkMemoryOverallocationBehaviorAMD; -typedef struct VkDeviceMemoryOverallocationCreateInfoAMD { +typedef struct VkBindVertexBufferIndirectCommandNV { + VkDeviceAddress bufferAddress; + uint32_t size; + uint32_t stride; +} VkBindVertexBufferIndirectCommandNV; + +typedef struct VkSetStateFlagsIndirectCommandNV { + uint32_t data; +} VkSetStateFlagsIndirectCommandNV; + +typedef struct VkIndirectCommandsStreamNV { + VkBuffer buffer; + VkDeviceSize offset; +} VkIndirectCommandsStreamNV; + +typedef struct VkIndirectCommandsLayoutTokenNV { + VkStructureType sType; + const void* pNext; + VkIndirectCommandsTokenTypeNV tokenType; + uint32_t stream; + uint32_t offset; + uint32_t vertexBindingUnit; + VkBool32 vertexDynamicStride; + VkPipelineLayout pushconstantPipelineLayout; + VkShaderStageFlags pushconstantShaderStageFlags; + uint32_t pushconstantOffset; + uint32_t pushconstantSize; + VkIndirectStateFlagsNV indirectStateFlags; + uint32_t indexTypeCount; + const VkIndexType* pIndexTypes; + const uint32_t* pIndexTypeValues; +} VkIndirectCommandsLayoutTokenNV; + +typedef struct VkIndirectCommandsLayoutCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkIndirectCommandsLayoutUsageFlagsNV flags; + VkPipelineBindPoint pipelineBindPoint; + uint32_t tokenCount; + const VkIndirectCommandsLayoutTokenNV* pTokens; + uint32_t streamCount; + const uint32_t* pStreamStrides; +} VkIndirectCommandsLayoutCreateInfoNV; + +typedef struct VkGeneratedCommandsInfoNV { VkStructureType sType; const void* pNext; - VkMemoryOverallocationBehaviorAMD overallocationBehavior; -} VkDeviceMemoryOverallocationCreateInfoAMD; + VkPipelineBindPoint pipelineBindPoint; + VkPipeline pipeline; + VkIndirectCommandsLayoutNV indirectCommandsLayout; + uint32_t streamCount; + const VkIndirectCommandsStreamNV* pStreams; + uint32_t sequencesCount; + VkBuffer preprocessBuffer; + VkDeviceSize preprocessOffset; + VkDeviceSize preprocessSize; + VkBuffer sequencesCountBuffer; + VkDeviceSize sequencesCountOffset; + VkBuffer sequencesIndexBuffer; + VkDeviceSize sequencesIndexOffset; +} VkGeneratedCommandsInfoNV; +typedef struct VkGeneratedCommandsMemoryRequirementsInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineBindPoint pipelineBindPoint; + VkPipeline pipeline; + VkIndirectCommandsLayoutNV indirectCommandsLayout; + uint32_t maxSequencesCount; +} VkGeneratedCommandsMemoryRequirementsInfoNV; +typedef void (VKAPI_PTR *PFN_vkGetGeneratedCommandsMemoryRequirementsNV)(VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkCmdPreprocessGeneratedCommandsNV)(VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); +typedef void (VKAPI_PTR *PFN_vkCmdExecuteGeneratedCommandsNV)(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBindPipelineShaderGroupNV)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, uint32_t groupIndex); +typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNV)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout); +typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNV)(VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator); -#define VK_EXT_vertex_attribute_divisor 1 -#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 3 -#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor" -typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT { +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetGeneratedCommandsMemoryRequirementsNV( + VkDevice device, + const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkCmdPreprocessGeneratedCommandsNV( + VkCommandBuffer commandBuffer, + const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdExecuteGeneratedCommandsNV( + VkCommandBuffer commandBuffer, + VkBool32 isPreprocessed, + const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindPipelineShaderGroupNV( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipeline pipeline, + uint32_t groupIndex); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNV( + VkDevice device, + const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkIndirectCommandsLayoutNV* pIndirectCommandsLayout); + +VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNV( + VkDevice device, + VkIndirectCommandsLayoutNV indirectCommandsLayout, + const VkAllocationCallbacks* pAllocator); +#endif + + +#define VK_NV_inherited_viewport_scissor 1 +#define VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION 1 +#define VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME "VK_NV_inherited_viewport_scissor" +typedef struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV { VkStructureType sType; void* pNext; - uint32_t maxVertexAttribDivisor; -} VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT; + VkBool32 inheritedViewportScissor2D; +} VkPhysicalDeviceInheritedViewportScissorFeaturesNV; -typedef struct VkVertexInputBindingDivisorDescriptionEXT { - uint32_t binding; - uint32_t divisor; -} VkVertexInputBindingDivisorDescriptionEXT; +typedef struct VkCommandBufferInheritanceViewportScissorInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 viewportScissor2D; + uint32_t viewportDepthCount; + const VkViewport* pViewportDepths; +} VkCommandBufferInheritanceViewportScissorInfoNV; -typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t vertexBindingDivisorCount; - const VkVertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors; -} VkPipelineVertexInputDivisorStateCreateInfoEXT; -typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT { + +#define VK_EXT_texel_buffer_alignment 1 +#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION 1 +#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment" +typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT { VkStructureType sType; void* pNext; - VkBool32 vertexAttributeInstanceRateDivisor; - VkBool32 vertexAttributeInstanceRateZeroDivisor; -} VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT; + VkBool32 texelBufferAlignment; +} VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT; +typedef VkPhysicalDeviceTexelBufferAlignmentProperties VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT; -#define VK_EXT_pipeline_creation_feedback 1 -#define VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION 1 -#define VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME "VK_EXT_pipeline_creation_feedback" -typedef enum VkPipelineCreationFeedbackFlagBitsEXT { - VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 0x00000001, - VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 0x00000002, - VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 0x00000004, - VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkPipelineCreationFeedbackFlagBitsEXT; -typedef VkFlags VkPipelineCreationFeedbackFlagsEXT; -typedef struct VkPipelineCreationFeedbackEXT { - VkPipelineCreationFeedbackFlagsEXT flags; - uint64_t duration; -} VkPipelineCreationFeedbackEXT; - -typedef struct VkPipelineCreationFeedbackCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkPipelineCreationFeedbackEXT* pPipelineCreationFeedback; - uint32_t pipelineStageCreationFeedbackCount; - VkPipelineCreationFeedbackEXT* pPipelineStageCreationFeedbacks; -} VkPipelineCreationFeedbackCreateInfoEXT; +#define VK_QCOM_render_pass_transform 1 +#define VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION 2 +#define VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME "VK_QCOM_render_pass_transform" +typedef struct VkRenderPassTransformBeginInfoQCOM { + VkStructureType sType; + void* pNext; + VkSurfaceTransformFlagBitsKHR transform; +} VkRenderPassTransformBeginInfoQCOM; +typedef struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM { + VkStructureType sType; + void* pNext; + VkSurfaceTransformFlagBitsKHR transform; + VkRect2D renderArea; +} VkCommandBufferInheritanceRenderPassTransformInfoQCOM; -#define VK_NV_shader_subgroup_partitioned 1 -#define VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1 -#define VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME "VK_NV_shader_subgroup_partitioned" +#define VK_EXT_device_memory_report 1 +#define VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION 2 +#define VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME "VK_EXT_device_memory_report" -#define VK_NV_compute_shader_derivatives 1 -#define VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION 1 -#define VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME "VK_NV_compute_shader_derivatives" -typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV { +typedef enum VkDeviceMemoryReportEventTypeEXT { + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT = 0, + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT = 1, + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT = 2, + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT = 3, + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT = 4, + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDeviceMemoryReportEventTypeEXT; +typedef VkFlags VkDeviceMemoryReportFlagsEXT; +typedef struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT { VkStructureType sType; void* pNext; - VkBool32 computeDerivativeGroupQuads; - VkBool32 computeDerivativeGroupLinear; -} VkPhysicalDeviceComputeShaderDerivativesFeaturesNV; - + VkBool32 deviceMemoryReport; +} VkPhysicalDeviceDeviceMemoryReportFeaturesEXT; +typedef struct VkDeviceMemoryReportCallbackDataEXT { + VkStructureType sType; + void* pNext; + VkDeviceMemoryReportFlagsEXT flags; + VkDeviceMemoryReportEventTypeEXT type; + uint64_t memoryObjectId; + VkDeviceSize size; + VkObjectType objectType; + uint64_t objectHandle; + uint32_t heapIndex; +} VkDeviceMemoryReportCallbackDataEXT; + +typedef void (VKAPI_PTR *PFN_vkDeviceMemoryReportCallbackEXT)( + const VkDeviceMemoryReportCallbackDataEXT* pCallbackData, + void* pUserData); -#define VK_NV_mesh_shader 1 -#define VK_NV_MESH_SHADER_SPEC_VERSION 1 -#define VK_NV_MESH_SHADER_EXTENSION_NAME "VK_NV_mesh_shader" -typedef struct VkPhysicalDeviceMeshShaderFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 taskShader; - VkBool32 meshShader; -} VkPhysicalDeviceMeshShaderFeaturesNV; +typedef struct VkDeviceDeviceMemoryReportCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceMemoryReportFlagsEXT flags; + PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback; + void* pUserData; +} VkDeviceDeviceMemoryReportCreateInfoEXT; -typedef struct VkPhysicalDeviceMeshShaderPropertiesNV { - VkStructureType sType; - void* pNext; - uint32_t maxDrawMeshTasksCount; - uint32_t maxTaskWorkGroupInvocations; - uint32_t maxTaskWorkGroupSize[3]; - uint32_t maxTaskTotalMemorySize; - uint32_t maxTaskOutputCount; - uint32_t maxMeshWorkGroupInvocations; - uint32_t maxMeshWorkGroupSize[3]; - uint32_t maxMeshTotalMemorySize; - uint32_t maxMeshOutputVertices; - uint32_t maxMeshOutputPrimitives; - uint32_t maxMeshMultiviewViewCount; - uint32_t meshOutputPerVertexGranularity; - uint32_t meshOutputPerPrimitiveGranularity; -} VkPhysicalDeviceMeshShaderPropertiesNV; -typedef struct VkDrawMeshTasksIndirectCommandNV { - uint32_t taskCount; - uint32_t firstTask; -} VkDrawMeshTasksIndirectCommandNV; -typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksNV)(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask); -typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); -typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +#define VK_EXT_acquire_drm_display 1 +#define VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION 1 +#define VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_drm_display" +typedef VkResult (VKAPI_PTR *PFN_vkAcquireDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, VkDisplayKHR display); +typedef VkResult (VKAPI_PTR *PFN_vkGetDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, uint32_t connectorId, VkDisplayKHR* display); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksNV( - VkCommandBuffer commandBuffer, - uint32_t taskCount, - uint32_t firstTask); - -VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectNV( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - uint32_t drawCount, - uint32_t stride); +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireDrmDisplayEXT( + VkPhysicalDevice physicalDevice, + int32_t drmFd, + VkDisplayKHR display); -VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountNV( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkBuffer countBuffer, - VkDeviceSize countBufferOffset, - uint32_t maxDrawCount, - uint32_t stride); +VKAPI_ATTR VkResult VKAPI_CALL vkGetDrmDisplayEXT( + VkPhysicalDevice physicalDevice, + int32_t drmFd, + uint32_t connectorId, + VkDisplayKHR* display); #endif -#define VK_NV_fragment_shader_barycentric 1 -#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1 -#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_NV_fragment_shader_barycentric" -typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV { +#define VK_EXT_robustness2 1 +#define VK_EXT_ROBUSTNESS_2_SPEC_VERSION 1 +#define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2" +typedef struct VkPhysicalDeviceRobustness2FeaturesEXT { VkStructureType sType; void* pNext; - VkBool32 fragmentShaderBarycentric; -} VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV; - - + VkBool32 robustBufferAccess2; + VkBool32 robustImageAccess2; + VkBool32 nullDescriptor; +} VkPhysicalDeviceRobustness2FeaturesEXT; -#define VK_NV_shader_image_footprint 1 -#define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 2 -#define VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME "VK_NV_shader_image_footprint" -typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV { +typedef struct VkPhysicalDeviceRobustness2PropertiesEXT { VkStructureType sType; void* pNext; - VkBool32 imageFootprint; -} VkPhysicalDeviceShaderImageFootprintFeaturesNV; + VkDeviceSize robustStorageBufferAccessSizeAlignment; + VkDeviceSize robustUniformBufferAccessSizeAlignment; +} VkPhysicalDeviceRobustness2PropertiesEXT; -#define VK_NV_scissor_exclusive 1 -#define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 1 -#define VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME "VK_NV_scissor_exclusive" -typedef struct VkPipelineViewportExclusiveScissorStateCreateInfoNV { +#define VK_EXT_custom_border_color 1 +#define VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION 12 +#define VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME "VK_EXT_custom_border_color" +typedef struct VkSamplerCustomBorderColorCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkClearColorValue customBorderColor; + VkFormat format; +} VkSamplerCustomBorderColorCreateInfoEXT; + +typedef struct VkPhysicalDeviceCustomBorderColorPropertiesEXT { VkStructureType sType; - const void* pNext; - uint32_t exclusiveScissorCount; - const VkRect2D* pExclusiveScissors; -} VkPipelineViewportExclusiveScissorStateCreateInfoNV; + void* pNext; + uint32_t maxCustomBorderColorSamplers; +} VkPhysicalDeviceCustomBorderColorPropertiesEXT; -typedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV { +typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT { VkStructureType sType; void* pNext; - VkBool32 exclusiveScissor; -} VkPhysicalDeviceExclusiveScissorFeaturesNV; + VkBool32 customBorderColors; + VkBool32 customBorderColorWithoutFormat; +} VkPhysicalDeviceCustomBorderColorFeaturesEXT; -typedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorNV( - VkCommandBuffer commandBuffer, - uint32_t firstExclusiveScissor, - uint32_t exclusiveScissorCount, - const VkRect2D* pExclusiveScissors); -#endif +#define VK_GOOGLE_user_type 1 +#define VK_GOOGLE_USER_TYPE_SPEC_VERSION 1 +#define VK_GOOGLE_USER_TYPE_EXTENSION_NAME "VK_GOOGLE_user_type" -#define VK_NV_device_diagnostic_checkpoints 1 -#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION 2 -#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME "VK_NV_device_diagnostic_checkpoints" -typedef struct VkQueueFamilyCheckpointPropertiesNV { - VkStructureType sType; - void* pNext; - VkPipelineStageFlags checkpointExecutionStageMask; -} VkQueueFamilyCheckpointPropertiesNV; -typedef struct VkCheckpointDataNV { - VkStructureType sType; - void* pNext; - VkPipelineStageFlagBits stage; - void* pCheckpointMarker; -} VkCheckpointDataNV; +#define VK_EXT_private_data 1 +typedef VkPrivateDataSlot VkPrivateDataSlotEXT; -typedef void (VKAPI_PTR *PFN_vkCmdSetCheckpointNV)(VkCommandBuffer commandBuffer, const void* pCheckpointMarker); -typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointDataNV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData); +#define VK_EXT_PRIVATE_DATA_SPEC_VERSION 1 +#define VK_EXT_PRIVATE_DATA_EXTENSION_NAME "VK_EXT_private_data" +typedef VkPrivateDataSlotCreateFlags VkPrivateDataSlotCreateFlagsEXT; + +typedef VkPrivateDataSlotCreateFlagBits VkPrivateDataSlotCreateFlagBitsEXT; + +typedef VkPhysicalDevicePrivateDataFeatures VkPhysicalDevicePrivateDataFeaturesEXT; + +typedef VkDevicePrivateDataCreateInfo VkDevicePrivateDataCreateInfoEXT; + +typedef VkPrivateDataSlotCreateInfo VkPrivateDataSlotCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlotEXT)(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot); +typedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlotEXT)(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkSetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data); +typedef void (VKAPI_PTR *PFN_vkGetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetCheckpointNV( - VkCommandBuffer commandBuffer, - const void* pCheckpointMarker); +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePrivateDataSlotEXT( + VkDevice device, + const VkPrivateDataSlotCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkPrivateDataSlot* pPrivateDataSlot); -VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV( - VkQueue queue, - uint32_t* pCheckpointDataCount, - VkCheckpointDataNV* pCheckpointData); +VKAPI_ATTR void VKAPI_CALL vkDestroyPrivateDataSlotEXT( + VkDevice device, + VkPrivateDataSlot privateDataSlot, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetPrivateDataEXT( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t data); + +VKAPI_ATTR void VKAPI_CALL vkGetPrivateDataEXT( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t* pData); #endif -#define VK_INTEL_shader_integer_functions2 1 -#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION 1 -#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME "VK_INTEL_shader_integer_functions2" -typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL { +#define VK_EXT_pipeline_creation_cache_control 1 +#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION 3 +#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME "VK_EXT_pipeline_creation_cache_control" +typedef VkPhysicalDevicePipelineCreationCacheControlFeatures VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT; + + + +#define VK_NV_device_diagnostics_config 1 +#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION 1 +#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME "VK_NV_device_diagnostics_config" + +typedef enum VkDeviceDiagnosticsConfigFlagBitsNV { + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 0x00000001, + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 0x00000002, + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 0x00000004, + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkDeviceDiagnosticsConfigFlagBitsNV; +typedef VkFlags VkDeviceDiagnosticsConfigFlagsNV; +typedef struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV { VkStructureType sType; void* pNext; - VkBool32 shaderIntegerFunctions2; -} VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + VkBool32 diagnosticsConfig; +} VkPhysicalDeviceDiagnosticsConfigFeaturesNV; +typedef struct VkDeviceDiagnosticsConfigCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkDeviceDiagnosticsConfigFlagsNV flags; +} VkDeviceDiagnosticsConfigCreateInfoNV; + + + +#define VK_QCOM_render_pass_store_ops 1 +#define VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION 2 +#define VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME "VK_QCOM_render_pass_store_ops" + + +#define VK_NV_fragment_shading_rate_enums 1 +#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION 1 +#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME "VK_NV_fragment_shading_rate_enums" + +typedef enum VkFragmentShadingRateTypeNV { + VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV = 0, + VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV = 1, + VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkFragmentShadingRateTypeNV; + +typedef enum VkFragmentShadingRateNV { + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV = 0, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = 1, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV = 4, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV = 5, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV = 6, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV = 9, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV = 10, + VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV = 11, + VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV = 12, + VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV = 13, + VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV = 14, + VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV = 15, + VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV = 0x7FFFFFFF +} VkFragmentShadingRateNV; +typedef struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 fragmentShadingRateEnums; + VkBool32 supersampleFragmentShadingRates; + VkBool32 noInvocationFragmentShadingRates; +} VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV; +typedef struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV { + VkStructureType sType; + void* pNext; + VkSampleCountFlagBits maxFragmentShadingRateInvocationCount; +} VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV; -#define VK_INTEL_performance_query 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPerformanceConfigurationINTEL) -#define VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION 1 -#define VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME "VK_INTEL_performance_query" +typedef struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkFragmentShadingRateTypeNV shadingRateType; + VkFragmentShadingRateNV shadingRate; + VkFragmentShadingRateCombinerOpKHR combinerOps[2]; +} VkPipelineFragmentShadingRateEnumStateCreateInfoNV; -typedef enum VkPerformanceConfigurationTypeINTEL { - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0, - VK_PERFORMANCE_CONFIGURATION_TYPE_BEGIN_RANGE_INTEL = VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL, - VK_PERFORMANCE_CONFIGURATION_TYPE_END_RANGE_INTEL = VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL, - VK_PERFORMANCE_CONFIGURATION_TYPE_RANGE_SIZE_INTEL = (VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL + 1), - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF -} VkPerformanceConfigurationTypeINTEL; +typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateEnumNV)(VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); -typedef enum VkQueryPoolSamplingModeINTEL { - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0, - VK_QUERY_POOL_SAMPLING_MODE_BEGIN_RANGE_INTEL = VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL, - VK_QUERY_POOL_SAMPLING_MODE_END_RANGE_INTEL = VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL, - VK_QUERY_POOL_SAMPLING_MODE_RANGE_SIZE_INTEL = (VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL + 1), - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 0x7FFFFFFF -} VkQueryPoolSamplingModeINTEL; +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateEnumNV( + VkCommandBuffer commandBuffer, + VkFragmentShadingRateNV shadingRate, + const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); +#endif -typedef enum VkPerformanceOverrideTypeINTEL { - VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0, - VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1, - VK_PERFORMANCE_OVERRIDE_TYPE_BEGIN_RANGE_INTEL = VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL, - VK_PERFORMANCE_OVERRIDE_TYPE_END_RANGE_INTEL = VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL, - VK_PERFORMANCE_OVERRIDE_TYPE_RANGE_SIZE_INTEL = (VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL - VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL + 1), - VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF -} VkPerformanceOverrideTypeINTEL; -typedef enum VkPerformanceParameterTypeINTEL { - VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0, - VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1, - VK_PERFORMANCE_PARAMETER_TYPE_BEGIN_RANGE_INTEL = VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL, - VK_PERFORMANCE_PARAMETER_TYPE_END_RANGE_INTEL = VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL, - VK_PERFORMANCE_PARAMETER_TYPE_RANGE_SIZE_INTEL = (VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL - VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL + 1), - VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF -} VkPerformanceParameterTypeINTEL; +#define VK_NV_ray_tracing_motion_blur 1 +#define VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION 1 +#define VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME "VK_NV_ray_tracing_motion_blur" -typedef enum VkPerformanceValueTypeINTEL { - VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0, - VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1, - VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2, - VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3, - VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4, - VK_PERFORMANCE_VALUE_TYPE_BEGIN_RANGE_INTEL = VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL, - VK_PERFORMANCE_VALUE_TYPE_END_RANGE_INTEL = VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL, - VK_PERFORMANCE_VALUE_TYPE_RANGE_SIZE_INTEL = (VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL - VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL + 1), - VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF -} VkPerformanceValueTypeINTEL; -typedef union VkPerformanceValueDataINTEL { - uint32_t value32; - uint64_t value64; - float valueFloat; - VkBool32 valueBool; - const char* valueString; -} VkPerformanceValueDataINTEL; +typedef enum VkAccelerationStructureMotionInstanceTypeNV { + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0, + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1, + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2, + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkAccelerationStructureMotionInstanceTypeNV; +typedef VkFlags VkAccelerationStructureMotionInfoFlagsNV; +typedef VkFlags VkAccelerationStructureMotionInstanceFlagsNV; +typedef union VkDeviceOrHostAddressConstKHR { + VkDeviceAddress deviceAddress; + const void* hostAddress; +} VkDeviceOrHostAddressConstKHR; -typedef struct VkPerformanceValueINTEL { - VkPerformanceValueTypeINTEL type; - VkPerformanceValueDataINTEL data; -} VkPerformanceValueINTEL; +typedef struct VkAccelerationStructureGeometryMotionTrianglesDataNV { + VkStructureType sType; + const void* pNext; + VkDeviceOrHostAddressConstKHR vertexData; +} VkAccelerationStructureGeometryMotionTrianglesDataNV; -typedef struct VkInitializePerformanceApiInfoINTEL { +typedef struct VkAccelerationStructureMotionInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t maxInstances; + VkAccelerationStructureMotionInfoFlagsNV flags; +} VkAccelerationStructureMotionInfoNV; + +typedef struct VkAccelerationStructureMatrixMotionInstanceNV { + VkTransformMatrixKHR transformT0; + VkTransformMatrixKHR transformT1; + uint32_t instanceCustomIndex:24; + uint32_t mask:8; + uint32_t instanceShaderBindingTableRecordOffset:24; + VkGeometryInstanceFlagsKHR flags:8; + uint64_t accelerationStructureReference; +} VkAccelerationStructureMatrixMotionInstanceNV; + +typedef struct VkSRTDataNV { + float sx; + float a; + float b; + float pvx; + float sy; + float c; + float pvy; + float sz; + float pvz; + float qx; + float qy; + float qz; + float qw; + float tx; + float ty; + float tz; +} VkSRTDataNV; + +typedef struct VkAccelerationStructureSRTMotionInstanceNV { + VkSRTDataNV transformT0; + VkSRTDataNV transformT1; + uint32_t instanceCustomIndex:24; + uint32_t mask:8; + uint32_t instanceShaderBindingTableRecordOffset:24; + VkGeometryInstanceFlagsKHR flags:8; + uint64_t accelerationStructureReference; +} VkAccelerationStructureSRTMotionInstanceNV; + +typedef union VkAccelerationStructureMotionInstanceDataNV { + VkAccelerationStructureInstanceKHR staticInstance; + VkAccelerationStructureMatrixMotionInstanceNV matrixMotionInstance; + VkAccelerationStructureSRTMotionInstanceNV srtMotionInstance; +} VkAccelerationStructureMotionInstanceDataNV; + +typedef struct VkAccelerationStructureMotionInstanceNV { + VkAccelerationStructureMotionInstanceTypeNV type; + VkAccelerationStructureMotionInstanceFlagsNV flags; + VkAccelerationStructureMotionInstanceDataNV data; +} VkAccelerationStructureMotionInstanceNV; + +typedef struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV { VkStructureType sType; - const void* pNext; - void* pUserData; -} VkInitializePerformanceApiInfoINTEL; + void* pNext; + VkBool32 rayTracingMotionBlur; + VkBool32 rayTracingMotionBlurPipelineTraceRaysIndirect; +} VkPhysicalDeviceRayTracingMotionBlurFeaturesNV; -typedef struct VkQueryPoolCreateInfoINTEL { - VkStructureType sType; - const void* pNext; - VkQueryPoolSamplingModeINTEL performanceCountersSampling; -} VkQueryPoolCreateInfoINTEL; -typedef struct VkPerformanceMarkerInfoINTEL { - VkStructureType sType; - const void* pNext; - uint64_t marker; -} VkPerformanceMarkerInfoINTEL; -typedef struct VkPerformanceStreamMarkerInfoINTEL { +#define VK_EXT_ycbcr_2plane_444_formats 1 +#define VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION 1 +#define VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME "VK_EXT_ycbcr_2plane_444_formats" +typedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT { VkStructureType sType; - const void* pNext; - uint32_t marker; -} VkPerformanceStreamMarkerInfoINTEL; - -typedef struct VkPerformanceOverrideInfoINTEL { - VkStructureType sType; - const void* pNext; - VkPerformanceOverrideTypeINTEL type; - VkBool32 enable; - uint64_t parameter; -} VkPerformanceOverrideInfoINTEL; + void* pNext; + VkBool32 ycbcr2plane444Formats; +} VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; -typedef struct VkPerformanceConfigurationAcquireInfoINTEL { - VkStructureType sType; - const void* pNext; - VkPerformanceConfigurationTypeINTEL type; -} VkPerformanceConfigurationAcquireInfoINTEL; -typedef VkResult (VKAPI_PTR *PFN_vkInitializePerformanceApiINTEL)(VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo); -typedef void (VKAPI_PTR *PFN_vkUninitializePerformanceApiINTEL)(VkDevice device); -typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo); -typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceStreamMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo); -typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceOverrideINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo); -typedef VkResult (VKAPI_PTR *PFN_vkAcquirePerformanceConfigurationINTEL)(VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration); -typedef VkResult (VKAPI_PTR *PFN_vkReleasePerformanceConfigurationINTEL)(VkDevice device, VkPerformanceConfigurationINTEL configuration); -typedef VkResult (VKAPI_PTR *PFN_vkQueueSetPerformanceConfigurationINTEL)(VkQueue queue, VkPerformanceConfigurationINTEL configuration); -typedef VkResult (VKAPI_PTR *PFN_vkGetPerformanceParameterINTEL)(VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkInitializePerformanceApiINTEL( - VkDevice device, - const VkInitializePerformanceApiInfoINTEL* pInitializeInfo); +#define VK_EXT_fragment_density_map2 1 +#define VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION 1 +#define VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME "VK_EXT_fragment_density_map2" +typedef struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 fragmentDensityMapDeferred; +} VkPhysicalDeviceFragmentDensityMap2FeaturesEXT; -VKAPI_ATTR void VKAPI_CALL vkUninitializePerformanceApiINTEL( - VkDevice device); +typedef struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 subsampledLoads; + VkBool32 subsampledCoarseReconstructionEarlyAccess; + uint32_t maxSubsampledArrayLayers; + uint32_t maxDescriptorSetSubsampledSamplers; +} VkPhysicalDeviceFragmentDensityMap2PropertiesEXT; -VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceMarkerINTEL( - VkCommandBuffer commandBuffer, - const VkPerformanceMarkerInfoINTEL* pMarkerInfo); -VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceStreamMarkerINTEL( - VkCommandBuffer commandBuffer, - const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo); -VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceOverrideINTEL( - VkCommandBuffer commandBuffer, - const VkPerformanceOverrideInfoINTEL* pOverrideInfo); +#define VK_QCOM_rotated_copy_commands 1 +#define VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION 1 +#define VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME "VK_QCOM_rotated_copy_commands" +typedef struct VkCopyCommandTransformInfoQCOM { + VkStructureType sType; + const void* pNext; + VkSurfaceTransformFlagBitsKHR transform; +} VkCopyCommandTransformInfoQCOM; -VKAPI_ATTR VkResult VKAPI_CALL vkAcquirePerformanceConfigurationINTEL( - VkDevice device, - const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, - VkPerformanceConfigurationINTEL* pConfiguration); -VKAPI_ATTR VkResult VKAPI_CALL vkReleasePerformanceConfigurationINTEL( - VkDevice device, - VkPerformanceConfigurationINTEL configuration); -VKAPI_ATTR VkResult VKAPI_CALL vkQueueSetPerformanceConfigurationINTEL( - VkQueue queue, - VkPerformanceConfigurationINTEL configuration); +#define VK_EXT_image_robustness 1 +#define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1 +#define VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_image_robustness" +typedef VkPhysicalDeviceImageRobustnessFeatures VkPhysicalDeviceImageRobustnessFeaturesEXT; -VKAPI_ATTR VkResult VKAPI_CALL vkGetPerformanceParameterINTEL( - VkDevice device, - VkPerformanceParameterTypeINTEL parameter, - VkPerformanceValueINTEL* pValue); -#endif -#define VK_EXT_pci_bus_info 1 -#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION 2 -#define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info" -typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT { +#define VK_EXT_4444_formats 1 +#define VK_EXT_4444_FORMATS_SPEC_VERSION 1 +#define VK_EXT_4444_FORMATS_EXTENSION_NAME "VK_EXT_4444_formats" +typedef struct VkPhysicalDevice4444FormatsFeaturesEXT { VkStructureType sType; void* pNext; - uint32_t pciDomain; - uint32_t pciBus; - uint32_t pciDevice; - uint32_t pciFunction; -} VkPhysicalDevicePCIBusInfoPropertiesEXT; + VkBool32 formatA4R4G4B4; + VkBool32 formatA4B4G4R4; +} VkPhysicalDevice4444FormatsFeaturesEXT; -#define VK_AMD_display_native_hdr 1 -#define VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION 1 -#define VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME "VK_AMD_display_native_hdr" -typedef struct VkDisplayNativeHdrSurfaceCapabilitiesAMD { +#define VK_ARM_rasterization_order_attachment_access 1 +#define VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION 1 +#define VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME "VK_ARM_rasterization_order_attachment_access" +typedef struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM { VkStructureType sType; - void* pNext; - VkBool32 localDimmingSupport; -} VkDisplayNativeHdrSurfaceCapabilitiesAMD; + const void* pNext; + VkBool32 rasterizationOrderColorAttachmentAccess; + VkBool32 rasterizationOrderDepthAttachmentAccess; + VkBool32 rasterizationOrderStencilAttachmentAccess; +} VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM; -typedef struct VkSwapchainDisplayNativeHdrCreateInfoAMD { + + +#define VK_EXT_rgba10x6_formats 1 +#define VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION 1 +#define VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME "VK_EXT_rgba10x6_formats" +typedef struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT { VkStructureType sType; - const void* pNext; - VkBool32 localDimmingEnable; -} VkSwapchainDisplayNativeHdrCreateInfoAMD; + void* pNext; + VkBool32 formatRgba10x6WithoutYCbCrSampler; +} VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT; -typedef void (VKAPI_PTR *PFN_vkSetLocalDimmingAMD)(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable); + + +#define VK_NV_acquire_winrt_display 1 +#define VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION 1 +#define VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME "VK_NV_acquire_winrt_display" +typedef VkResult (VKAPI_PTR *PFN_vkAcquireWinrtDisplayNV)(VkPhysicalDevice physicalDevice, VkDisplayKHR display); +typedef VkResult (VKAPI_PTR *PFN_vkGetWinrtDisplayNV)(VkPhysicalDevice physicalDevice, uint32_t deviceRelativeId, VkDisplayKHR* pDisplay); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkSetLocalDimmingAMD( - VkDevice device, - VkSwapchainKHR swapChain, - VkBool32 localDimmingEnable); +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireWinrtDisplayNV( + VkPhysicalDevice physicalDevice, + VkDisplayKHR display); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetWinrtDisplayNV( + VkPhysicalDevice physicalDevice, + uint32_t deviceRelativeId, + VkDisplayKHR* pDisplay); #endif -#define VK_EXT_fragment_density_map 1 -#define VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION 1 -#define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME "VK_EXT_fragment_density_map" -typedef struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT { +#define VK_VALVE_mutable_descriptor_type 1 +#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1 +#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME "VK_VALVE_mutable_descriptor_type" +typedef struct VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE { + VkStructureType sType; + void* pNext; + VkBool32 mutableDescriptorType; +} VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE; + +typedef struct VkMutableDescriptorTypeListVALVE { + uint32_t descriptorTypeCount; + const VkDescriptorType* pDescriptorTypes; +} VkMutableDescriptorTypeListVALVE; + +typedef struct VkMutableDescriptorTypeCreateInfoVALVE { + VkStructureType sType; + const void* pNext; + uint32_t mutableDescriptorTypeListCount; + const VkMutableDescriptorTypeListVALVE* pMutableDescriptorTypeLists; +} VkMutableDescriptorTypeCreateInfoVALVE; + + + +#define VK_EXT_vertex_input_dynamic_state 1 +#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION 2 +#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_vertex_input_dynamic_state" +typedef struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT { VkStructureType sType; void* pNext; - VkBool32 fragmentDensityMap; - VkBool32 fragmentDensityMapDynamic; - VkBool32 fragmentDensityMapNonSubsampledImages; -} VkPhysicalDeviceFragmentDensityMapFeaturesEXT; + VkBool32 vertexInputDynamicState; +} VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT; -typedef struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT { +typedef struct VkVertexInputBindingDescription2EXT { + VkStructureType sType; + void* pNext; + uint32_t binding; + uint32_t stride; + VkVertexInputRate inputRate; + uint32_t divisor; +} VkVertexInputBindingDescription2EXT; + +typedef struct VkVertexInputAttributeDescription2EXT { VkStructureType sType; void* pNext; - VkExtent2D minFragmentDensityTexelSize; - VkExtent2D maxFragmentDensityTexelSize; - VkBool32 fragmentDensityInvocations; -} VkPhysicalDeviceFragmentDensityMapPropertiesEXT; + uint32_t location; + uint32_t binding; + VkFormat format; + uint32_t offset; +} VkVertexInputAttributeDescription2EXT; -typedef struct VkRenderPassFragmentDensityMapCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkAttachmentReference fragmentDensityMapAttachment; -} VkRenderPassFragmentDensityMapCreateInfoEXT; +typedef void (VKAPI_PTR *PFN_vkCmdSetVertexInputEXT)(VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions); +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetVertexInputEXT( + VkCommandBuffer commandBuffer, + uint32_t vertexBindingDescriptionCount, + const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, + uint32_t vertexAttributeDescriptionCount, + const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions); +#endif -#define VK_EXT_scalar_block_layout 1 -#define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1 -#define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout" -typedef struct VkPhysicalDeviceScalarBlockLayoutFeaturesEXT { +#define VK_EXT_physical_device_drm 1 +#define VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION 1 +#define VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME "VK_EXT_physical_device_drm" +typedef struct VkPhysicalDeviceDrmPropertiesEXT { VkStructureType sType; void* pNext; - VkBool32 scalarBlockLayout; -} VkPhysicalDeviceScalarBlockLayoutFeaturesEXT; + VkBool32 hasPrimary; + VkBool32 hasRender; + int64_t primaryMajor; + int64_t primaryMinor; + int64_t renderMajor; + int64_t renderMinor; +} VkPhysicalDeviceDrmPropertiesEXT; -#define VK_GOOGLE_hlsl_functionality1 1 -#define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION 1 -#define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1" +#define VK_EXT_depth_clip_control 1 +#define VK_EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION 1 +#define VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME "VK_EXT_depth_clip_control" +typedef struct VkPhysicalDeviceDepthClipControlFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 depthClipControl; +} VkPhysicalDeviceDepthClipControlFeaturesEXT; +typedef struct VkPipelineViewportDepthClipControlCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 negativeOneToOne; +} VkPipelineViewportDepthClipControlCreateInfoEXT; -#define VK_GOOGLE_decorate_string 1 -#define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 1 -#define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string" -#define VK_EXT_subgroup_size_control 1 -#define VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION 2 -#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control" -typedef struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT { +#define VK_EXT_primitive_topology_list_restart 1 +#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION 1 +#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME "VK_EXT_primitive_topology_list_restart" +typedef struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT { VkStructureType sType; void* pNext; - VkBool32 subgroupSizeControl; - VkBool32 computeFullSubgroups; -} VkPhysicalDeviceSubgroupSizeControlFeaturesEXT; + VkBool32 primitiveTopologyListRestart; + VkBool32 primitiveTopologyPatchListRestart; +} VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; + -typedef struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t minSubgroupSize; - uint32_t maxSubgroupSize; - uint32_t maxComputeWorkgroupSubgroups; - VkShaderStageFlags requiredSubgroupSizeStages; -} VkPhysicalDeviceSubgroupSizeControlPropertiesEXT; -typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT { +#define VK_HUAWEI_subpass_shading 1 +#define VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION 2 +#define VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME "VK_HUAWEI_subpass_shading" +typedef struct VkSubpassShadingPipelineCreateInfoHUAWEI { VkStructureType sType; void* pNext; - uint32_t requiredSubgroupSize; -} VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT; + VkRenderPass renderPass; + uint32_t subpass; +} VkSubpassShadingPipelineCreateInfoHUAWEI; +typedef struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI { + VkStructureType sType; + void* pNext; + VkBool32 subpassShading; +} VkPhysicalDeviceSubpassShadingFeaturesHUAWEI; +typedef struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI { + VkStructureType sType; + void* pNext; + uint32_t maxSubpassShadingWorkgroupSizeAspectRatio; +} VkPhysicalDeviceSubpassShadingPropertiesHUAWEI; -#define VK_AMD_shader_core_properties2 1 -#define VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION 1 -#define VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME "VK_AMD_shader_core_properties2" +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)(VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize); +typedef void (VKAPI_PTR *PFN_vkCmdSubpassShadingHUAWEI)(VkCommandBuffer commandBuffer); -typedef enum VkShaderCorePropertiesFlagBitsAMD { - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF -} VkShaderCorePropertiesFlagBitsAMD; -typedef VkFlags VkShaderCorePropertiesFlagsAMD; -typedef struct VkPhysicalDeviceShaderCoreProperties2AMD { - VkStructureType sType; - void* pNext; - VkShaderCorePropertiesFlagsAMD shaderCoreFeatures; - uint32_t activeComputeUnitCount; -} VkPhysicalDeviceShaderCoreProperties2AMD; +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( + VkDevice device, + VkRenderPass renderpass, + VkExtent2D* pMaxWorkgroupSize); +VKAPI_ATTR void VKAPI_CALL vkCmdSubpassShadingHUAWEI( + VkCommandBuffer commandBuffer); +#endif -#define VK_AMD_device_coherent_memory 1 -#define VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION 1 -#define VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME "VK_AMD_device_coherent_memory" -typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD { +#define VK_HUAWEI_invocation_mask 1 +#define VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION 1 +#define VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME "VK_HUAWEI_invocation_mask" +typedef struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI { VkStructureType sType; void* pNext; - VkBool32 deviceCoherentMemory; -} VkPhysicalDeviceCoherentMemoryFeaturesAMD; + VkBool32 invocationMask; +} VkPhysicalDeviceInvocationMaskFeaturesHUAWEI; +typedef void (VKAPI_PTR *PFN_vkCmdBindInvocationMaskHUAWEI)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout); - -#define VK_EXT_memory_budget 1 -#define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1 -#define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME "VK_EXT_memory_budget" -typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT { - VkStructureType sType; - void* pNext; - VkDeviceSize heapBudget[VK_MAX_MEMORY_HEAPS]; - VkDeviceSize heapUsage[VK_MAX_MEMORY_HEAPS]; -} VkPhysicalDeviceMemoryBudgetPropertiesEXT; +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindInvocationMaskHUAWEI( + VkCommandBuffer commandBuffer, + VkImageView imageView, + VkImageLayout imageLayout); +#endif +#define VK_NV_external_memory_rdma 1 +typedef void* VkRemoteAddressNV; +#define VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION 1 +#define VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME "VK_NV_external_memory_rdma" +typedef struct VkMemoryGetRemoteAddressInfoNV { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkMemoryGetRemoteAddressInfoNV; -#define VK_EXT_memory_priority 1 -#define VK_EXT_MEMORY_PRIORITY_SPEC_VERSION 1 -#define VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME "VK_EXT_memory_priority" -typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT { +typedef struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV { VkStructureType sType; void* pNext; - VkBool32 memoryPriority; -} VkPhysicalDeviceMemoryPriorityFeaturesEXT; + VkBool32 externalMemoryRDMA; +} VkPhysicalDeviceExternalMemoryRDMAFeaturesNV; -typedef struct VkMemoryPriorityAllocateInfoEXT { - VkStructureType sType; - const void* pNext; - float priority; -} VkMemoryPriorityAllocateInfoEXT; +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryRemoteAddressNV)(VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress); +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryRemoteAddressNV( + VkDevice device, + const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, + VkRemoteAddressNV* pAddress); +#endif -#define VK_NV_dedicated_allocation_image_aliasing 1 -#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION 1 -#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME "VK_NV_dedicated_allocation_image_aliasing" -typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV { +#define VK_EXT_extended_dynamic_state2 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME "VK_EXT_extended_dynamic_state2" +typedef struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT { VkStructureType sType; void* pNext; - VkBool32 dedicatedAllocationImageAliasing; -} VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + VkBool32 extendedDynamicState2; + VkBool32 extendedDynamicState2LogicOp; + VkBool32 extendedDynamicState2PatchControlPoints; +} VkPhysicalDeviceExtendedDynamicState2FeaturesEXT; +typedef void (VKAPI_PTR *PFN_vkCmdSetPatchControlPointsEXT)(VkCommandBuffer commandBuffer, uint32_t patchControlPoints); +typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetLogicOpEXT)(VkCommandBuffer commandBuffer, VkLogicOp logicOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable); +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetPatchControlPointsEXT( + VkCommandBuffer commandBuffer, + uint32_t patchControlPoints); -#define VK_EXT_buffer_device_address 1 -typedef uint64_t VkDeviceAddress; -#define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2 -#define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address" -typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 bufferDeviceAddress; - VkBool32 bufferDeviceAddressCaptureReplay; - VkBool32 bufferDeviceAddressMultiDevice; -} VkPhysicalDeviceBufferDeviceAddressFeaturesEXT; +VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 rasterizerDiscardEnable); -typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT; +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthBiasEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetLogicOpEXT( + VkCommandBuffer commandBuffer, + VkLogicOp logicOp); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 primitiveRestartEnable); +#endif -typedef struct VkBufferDeviceAddressInfoEXT { + +#define VK_EXT_color_write_enable 1 +#define VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION 1 +#define VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME "VK_EXT_color_write_enable" +typedef struct VkPhysicalDeviceColorWriteEnableFeaturesEXT { VkStructureType sType; - const void* pNext; - VkBuffer buffer; -} VkBufferDeviceAddressInfoEXT; + void* pNext; + VkBool32 colorWriteEnable; +} VkPhysicalDeviceColorWriteEnableFeaturesEXT; -typedef struct VkBufferDeviceAddressCreateInfoEXT { +typedef struct VkPipelineColorWriteCreateInfoEXT { VkStructureType sType; const void* pNext; - VkDeviceAddress deviceAddress; -} VkBufferDeviceAddressCreateInfoEXT; + uint32_t attachmentCount; + const VkBool32* pColorWriteEnables; +} VkPipelineColorWriteCreateInfoEXT; -typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdSetColorWriteEnableEXT)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkBool32* pColorWriteEnables); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT( - VkDevice device, - const VkBufferDeviceAddressInfoEXT* pInfo); +VKAPI_ATTR void VKAPI_CALL vkCmdSetColorWriteEnableEXT( + VkCommandBuffer commandBuffer, + uint32_t attachmentCount, + const VkBool32* pColorWriteEnables); #endif -#define VK_EXT_separate_stencil_usage 1 -#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1 -#define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage" -typedef struct VkImageStencilUsageCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkImageUsageFlags stencilUsage; -} VkImageStencilUsageCreateInfoEXT; - - +#define VK_EXT_global_priority_query 1 +#define VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION 1 +#define VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME "VK_EXT_global_priority_query" +#define VK_MAX_GLOBAL_PRIORITY_SIZE_EXT VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +typedef VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT; -#define VK_EXT_validation_features 1 -#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 2 -#define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features" +typedef VkQueueFamilyGlobalPriorityPropertiesKHR VkQueueFamilyGlobalPriorityPropertiesEXT; -typedef enum VkValidationFeatureEnableEXT { - VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0, - VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1, - VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2, - VK_VALIDATION_FEATURE_ENABLE_BEGIN_RANGE_EXT = VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT, - VK_VALIDATION_FEATURE_ENABLE_END_RANGE_EXT = VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT, - VK_VALIDATION_FEATURE_ENABLE_RANGE_SIZE_EXT = (VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT - VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT + 1), - VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkValidationFeatureEnableEXT; -typedef enum VkValidationFeatureDisableEXT { - VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0, - VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1, - VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2, - VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3, - VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4, - VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5, - VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6, - VK_VALIDATION_FEATURE_DISABLE_BEGIN_RANGE_EXT = VK_VALIDATION_FEATURE_DISABLE_ALL_EXT, - VK_VALIDATION_FEATURE_DISABLE_END_RANGE_EXT = VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT, - VK_VALIDATION_FEATURE_DISABLE_RANGE_SIZE_EXT = (VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT - VK_VALIDATION_FEATURE_DISABLE_ALL_EXT + 1), - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkValidationFeatureDisableEXT; -typedef struct VkValidationFeaturesEXT { - VkStructureType sType; - const void* pNext; - uint32_t enabledValidationFeatureCount; - const VkValidationFeatureEnableEXT* pEnabledValidationFeatures; - uint32_t disabledValidationFeatureCount; - const VkValidationFeatureDisableEXT* pDisabledValidationFeatures; -} VkValidationFeaturesEXT; +#define VK_EXT_image_view_min_lod 1 +#define VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION 1 +#define VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME "VK_EXT_image_view_min_lod" +typedef struct VkPhysicalDeviceImageViewMinLodFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 minLod; +} VkPhysicalDeviceImageViewMinLodFeaturesEXT; +typedef struct VkImageViewMinLodCreateInfoEXT { + VkStructureType sType; + const void* pNext; + float minLod; +} VkImageViewMinLodCreateInfoEXT; -#define VK_NV_cooperative_matrix 1 -#define VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION 1 -#define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_NV_cooperative_matrix" -typedef enum VkComponentTypeNV { - VK_COMPONENT_TYPE_FLOAT16_NV = 0, - VK_COMPONENT_TYPE_FLOAT32_NV = 1, - VK_COMPONENT_TYPE_FLOAT64_NV = 2, - VK_COMPONENT_TYPE_SINT8_NV = 3, - VK_COMPONENT_TYPE_SINT16_NV = 4, - VK_COMPONENT_TYPE_SINT32_NV = 5, - VK_COMPONENT_TYPE_SINT64_NV = 6, - VK_COMPONENT_TYPE_UINT8_NV = 7, - VK_COMPONENT_TYPE_UINT16_NV = 8, - VK_COMPONENT_TYPE_UINT32_NV = 9, - VK_COMPONENT_TYPE_UINT64_NV = 10, - VK_COMPONENT_TYPE_BEGIN_RANGE_NV = VK_COMPONENT_TYPE_FLOAT16_NV, - VK_COMPONENT_TYPE_END_RANGE_NV = VK_COMPONENT_TYPE_UINT64_NV, - VK_COMPONENT_TYPE_RANGE_SIZE_NV = (VK_COMPONENT_TYPE_UINT64_NV - VK_COMPONENT_TYPE_FLOAT16_NV + 1), - VK_COMPONENT_TYPE_MAX_ENUM_NV = 0x7FFFFFFF -} VkComponentTypeNV; -typedef enum VkScopeNV { - VK_SCOPE_DEVICE_NV = 1, - VK_SCOPE_WORKGROUP_NV = 2, - VK_SCOPE_SUBGROUP_NV = 3, - VK_SCOPE_QUEUE_FAMILY_NV = 5, - VK_SCOPE_BEGIN_RANGE_NV = VK_SCOPE_DEVICE_NV, - VK_SCOPE_END_RANGE_NV = VK_SCOPE_QUEUE_FAMILY_NV, - VK_SCOPE_RANGE_SIZE_NV = (VK_SCOPE_QUEUE_FAMILY_NV - VK_SCOPE_DEVICE_NV + 1), - VK_SCOPE_MAX_ENUM_NV = 0x7FFFFFFF -} VkScopeNV; -typedef struct VkCooperativeMatrixPropertiesNV { - VkStructureType sType; - void* pNext; - uint32_t MSize; - uint32_t NSize; - uint32_t KSize; - VkComponentTypeNV AType; - VkComponentTypeNV BType; - VkComponentTypeNV CType; - VkComponentTypeNV DType; - VkScopeNV scope; -} VkCooperativeMatrixPropertiesNV; +#define VK_EXT_multi_draw 1 +#define VK_EXT_MULTI_DRAW_SPEC_VERSION 1 +#define VK_EXT_MULTI_DRAW_EXTENSION_NAME "VK_EXT_multi_draw" +typedef struct VkPhysicalDeviceMultiDrawFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 multiDraw; +} VkPhysicalDeviceMultiDrawFeaturesEXT; -typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV { +typedef struct VkPhysicalDeviceMultiDrawPropertiesEXT { VkStructureType sType; void* pNext; - VkBool32 cooperativeMatrix; - VkBool32 cooperativeMatrixRobustBufferAccess; -} VkPhysicalDeviceCooperativeMatrixFeaturesNV; + uint32_t maxMultiDrawCount; +} VkPhysicalDeviceMultiDrawPropertiesEXT; -typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV { - VkStructureType sType; - void* pNext; - VkShaderStageFlags cooperativeMatrixSupportedStages; -} VkPhysicalDeviceCooperativeMatrixPropertiesNV; +typedef struct VkMultiDrawInfoEXT { + uint32_t firstVertex; + uint32_t vertexCount; +} VkMultiDrawInfoEXT; -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties); +typedef struct VkMultiDrawIndexedInfoEXT { + uint32_t firstIndex; + uint32_t indexCount; + int32_t vertexOffset; +} VkMultiDrawIndexedInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawInfoEXT* pVertexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiIndexedEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawIndexedInfoEXT* pIndexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride, const int32_t* pVertexOffset); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( - VkPhysicalDevice physicalDevice, - uint32_t* pPropertyCount, - VkCooperativeMatrixPropertiesNV* pProperties); +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiEXT( + VkCommandBuffer commandBuffer, + uint32_t drawCount, + const VkMultiDrawInfoEXT* pVertexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiIndexedEXT( + VkCommandBuffer commandBuffer, + uint32_t drawCount, + const VkMultiDrawIndexedInfoEXT* pIndexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + const int32_t* pVertexOffset); #endif -#define VK_NV_coverage_reduction_mode 1 -#define VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION 1 -#define VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME "VK_NV_coverage_reduction_mode" +#define VK_EXT_load_store_op_none 1 +#define VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION 1 +#define VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME "VK_EXT_load_store_op_none" -typedef enum VkCoverageReductionModeNV { - VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0, - VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1, - VK_COVERAGE_REDUCTION_MODE_BEGIN_RANGE_NV = VK_COVERAGE_REDUCTION_MODE_MERGE_NV, - VK_COVERAGE_REDUCTION_MODE_END_RANGE_NV = VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV, - VK_COVERAGE_REDUCTION_MODE_RANGE_SIZE_NV = (VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV - VK_COVERAGE_REDUCTION_MODE_MERGE_NV + 1), - VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 0x7FFFFFFF -} VkCoverageReductionModeNV; -typedef VkFlags VkPipelineCoverageReductionStateCreateFlagsNV; -typedef struct VkPhysicalDeviceCoverageReductionModeFeaturesNV { + +#define VK_EXT_border_color_swizzle 1 +#define VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION 1 +#define VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME "VK_EXT_border_color_swizzle" +typedef struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT { VkStructureType sType; void* pNext; - VkBool32 coverageReductionMode; -} VkPhysicalDeviceCoverageReductionModeFeaturesNV; + VkBool32 borderColorSwizzle; + VkBool32 borderColorSwizzleFromImage; +} VkPhysicalDeviceBorderColorSwizzleFeaturesEXT; -typedef struct VkPipelineCoverageReductionStateCreateInfoNV { - VkStructureType sType; - const void* pNext; - VkPipelineCoverageReductionStateCreateFlagsNV flags; - VkCoverageReductionModeNV coverageReductionMode; -} VkPipelineCoverageReductionStateCreateInfoNV; +typedef struct VkSamplerBorderColorComponentMappingCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkComponentMapping components; + VkBool32 srgb; +} VkSamplerBorderColorComponentMappingCreateInfoEXT; -typedef struct VkFramebufferMixedSamplesCombinationNV { - VkStructureType sType; - void* pNext; - VkCoverageReductionModeNV coverageReductionMode; - VkSampleCountFlagBits rasterizationSamples; - VkSampleCountFlags depthStencilSamples; - VkSampleCountFlags colorSamples; -} VkFramebufferMixedSamplesCombinationNV; -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)(VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations); + +#define VK_EXT_pageable_device_local_memory 1 +#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION 1 +#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME "VK_EXT_pageable_device_local_memory" +typedef struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 pageableDeviceLocalMemory; +} VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkSetDeviceMemoryPriorityEXT)(VkDevice device, VkDeviceMemory memory, float priority); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( - VkPhysicalDevice physicalDevice, - uint32_t* pCombinationCount, - VkFramebufferMixedSamplesCombinationNV* pCombinations); +VKAPI_ATTR void VKAPI_CALL vkSetDeviceMemoryPriorityEXT( + VkDevice device, + VkDeviceMemory memory, + float priority); #endif -#define VK_EXT_fragment_shader_interlock 1 -#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION 1 -#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME "VK_EXT_fragment_shader_interlock" -typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT { +#define VK_QCOM_fragment_density_map_offset 1 +#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION 1 +#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME "VK_QCOM_fragment_density_map_offset" +typedef struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM { VkStructureType sType; void* pNext; - VkBool32 fragmentShaderSampleInterlock; - VkBool32 fragmentShaderPixelInterlock; - VkBool32 fragmentShaderShadingRateInterlock; -} VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT; + VkBool32 fragmentDensityMapOffset; +} VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM; +typedef struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM { + VkStructureType sType; + void* pNext; + VkExtent2D fragmentDensityOffsetGranularity; +} VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM; +typedef struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM { + VkStructureType sType; + const void* pNext; + uint32_t fragmentDensityOffsetCount; + const VkOffset2D* pFragmentDensityOffsets; +} VkSubpassFragmentDensityMapOffsetEndInfoQCOM; -#define VK_EXT_ycbcr_image_arrays 1 -#define VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION 1 -#define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME "VK_EXT_ycbcr_image_arrays" -typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT { + + +#define VK_NV_linear_color_attachment 1 +#define VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION 1 +#define VK_NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME "VK_NV_linear_color_attachment" +typedef struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV { VkStructureType sType; void* pNext; - VkBool32 ycbcrImageArrays; -} VkPhysicalDeviceYcbcrImageArraysFeaturesEXT; - + VkBool32 linearColorAttachment; +} VkPhysicalDeviceLinearColorAttachmentFeaturesNV; + + + +#define VK_GOOGLE_surfaceless_query 1 +#define VK_GOOGLE_SURFACELESS_QUERY_SPEC_VERSION 1 +#define VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME "VK_GOOGLE_surfaceless_query" + + +#define VK_KHR_acceleration_structure 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR) +#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13 +#define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure" + +typedef enum VkBuildAccelerationStructureModeKHR { + VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = 0, + VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = 1, + VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkBuildAccelerationStructureModeKHR; + +typedef enum VkAccelerationStructureBuildTypeKHR { + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0, + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1, + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2, + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAccelerationStructureBuildTypeKHR; + +typedef enum VkAccelerationStructureCompatibilityKHR { + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0, + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1, + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAccelerationStructureCompatibilityKHR; + +typedef enum VkAccelerationStructureCreateFlagBitsKHR { + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 0x00000001, + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 0x00000004, + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAccelerationStructureCreateFlagBitsKHR; +typedef VkFlags VkAccelerationStructureCreateFlagsKHR; +typedef union VkDeviceOrHostAddressKHR { + VkDeviceAddress deviceAddress; + void* hostAddress; +} VkDeviceOrHostAddressKHR; +typedef struct VkAccelerationStructureBuildRangeInfoKHR { + uint32_t primitiveCount; + uint32_t primitiveOffset; + uint32_t firstVertex; + uint32_t transformOffset; +} VkAccelerationStructureBuildRangeInfoKHR; -#define VK_EXT_headless_surface 1 -#define VK_EXT_HEADLESS_SURFACE_SPEC_VERSION 0 -#define VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME "VK_EXT_headless_surface" -typedef VkFlags VkHeadlessSurfaceCreateFlagsEXT; -typedef struct VkHeadlessSurfaceCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkHeadlessSurfaceCreateFlagsEXT flags; -} VkHeadlessSurfaceCreateInfoEXT; +typedef struct VkAccelerationStructureGeometryTrianglesDataKHR { + VkStructureType sType; + const void* pNext; + VkFormat vertexFormat; + VkDeviceOrHostAddressConstKHR vertexData; + VkDeviceSize vertexStride; + uint32_t maxVertex; + VkIndexType indexType; + VkDeviceOrHostAddressConstKHR indexData; + VkDeviceOrHostAddressConstKHR transformData; +} VkAccelerationStructureGeometryTrianglesDataKHR; + +typedef struct VkAccelerationStructureGeometryAabbsDataKHR { + VkStructureType sType; + const void* pNext; + VkDeviceOrHostAddressConstKHR data; + VkDeviceSize stride; +} VkAccelerationStructureGeometryAabbsDataKHR; -typedef VkResult (VKAPI_PTR *PFN_vkCreateHeadlessSurfaceEXT)(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef struct VkAccelerationStructureGeometryInstancesDataKHR { + VkStructureType sType; + const void* pNext; + VkBool32 arrayOfPointers; + VkDeviceOrHostAddressConstKHR data; +} VkAccelerationStructureGeometryInstancesDataKHR; -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateHeadlessSurfaceEXT( - VkInstance instance, - const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif +typedef union VkAccelerationStructureGeometryDataKHR { + VkAccelerationStructureGeometryTrianglesDataKHR triangles; + VkAccelerationStructureGeometryAabbsDataKHR aabbs; + VkAccelerationStructureGeometryInstancesDataKHR instances; +} VkAccelerationStructureGeometryDataKHR; +typedef struct VkAccelerationStructureGeometryKHR { + VkStructureType sType; + const void* pNext; + VkGeometryTypeKHR geometryType; + VkAccelerationStructureGeometryDataKHR geometry; + VkGeometryFlagsKHR flags; +} VkAccelerationStructureGeometryKHR; -#define VK_EXT_line_rasterization 1 -#define VK_EXT_LINE_RASTERIZATION_SPEC_VERSION 1 -#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization" +typedef struct VkAccelerationStructureBuildGeometryInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureTypeKHR type; + VkBuildAccelerationStructureFlagsKHR flags; + VkBuildAccelerationStructureModeKHR mode; + VkAccelerationStructureKHR srcAccelerationStructure; + VkAccelerationStructureKHR dstAccelerationStructure; + uint32_t geometryCount; + const VkAccelerationStructureGeometryKHR* pGeometries; + const VkAccelerationStructureGeometryKHR* const* ppGeometries; + VkDeviceOrHostAddressKHR scratchData; +} VkAccelerationStructureBuildGeometryInfoKHR; + +typedef struct VkAccelerationStructureCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureCreateFlagsKHR createFlags; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; + VkAccelerationStructureTypeKHR type; + VkDeviceAddress deviceAddress; +} VkAccelerationStructureCreateInfoKHR; + +typedef struct VkWriteDescriptorSetAccelerationStructureKHR { + VkStructureType sType; + const void* pNext; + uint32_t accelerationStructureCount; + const VkAccelerationStructureKHR* pAccelerationStructures; +} VkWriteDescriptorSetAccelerationStructureKHR; -typedef enum VkLineRasterizationModeEXT { - VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0, - VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1, - VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2, - VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3, - VK_LINE_RASTERIZATION_MODE_BEGIN_RANGE_EXT = VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT, - VK_LINE_RASTERIZATION_MODE_END_RANGE_EXT = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT, - VK_LINE_RASTERIZATION_MODE_RANGE_SIZE_EXT = (VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT - VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT + 1), - VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkLineRasterizationModeEXT; -typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT { +typedef struct VkPhysicalDeviceAccelerationStructureFeaturesKHR { VkStructureType sType; void* pNext; - VkBool32 rectangularLines; - VkBool32 bresenhamLines; - VkBool32 smoothLines; - VkBool32 stippledRectangularLines; - VkBool32 stippledBresenhamLines; - VkBool32 stippledSmoothLines; -} VkPhysicalDeviceLineRasterizationFeaturesEXT; + VkBool32 accelerationStructure; + VkBool32 accelerationStructureCaptureReplay; + VkBool32 accelerationStructureIndirectBuild; + VkBool32 accelerationStructureHostCommands; + VkBool32 descriptorBindingAccelerationStructureUpdateAfterBind; +} VkPhysicalDeviceAccelerationStructureFeaturesKHR; -typedef struct VkPhysicalDeviceLineRasterizationPropertiesEXT { +typedef struct VkPhysicalDeviceAccelerationStructurePropertiesKHR { VkStructureType sType; void* pNext; - uint32_t lineSubPixelPrecisionBits; -} VkPhysicalDeviceLineRasterizationPropertiesEXT; + uint64_t maxGeometryCount; + uint64_t maxInstanceCount; + uint64_t maxPrimitiveCount; + uint32_t maxPerStageDescriptorAccelerationStructures; + uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures; + uint32_t maxDescriptorSetAccelerationStructures; + uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures; + uint32_t minAccelerationStructureScratchOffsetAlignment; +} VkPhysicalDeviceAccelerationStructurePropertiesKHR; -typedef struct VkPipelineRasterizationLineStateCreateInfoEXT { +typedef struct VkAccelerationStructureDeviceAddressInfoKHR { VkStructureType sType; const void* pNext; - VkLineRasterizationModeEXT lineRasterizationMode; - VkBool32 stippledLineEnable; - uint32_t lineStippleFactor; - uint16_t lineStipplePattern; -} VkPipelineRasterizationLineStateCreateInfoEXT; + VkAccelerationStructureKHR accelerationStructure; +} VkAccelerationStructureDeviceAddressInfoKHR; -typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEXT)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern); +typedef struct VkAccelerationStructureVersionInfoKHR { + VkStructureType sType; + const void* pNext; + const uint8_t* pVersionData; +} VkAccelerationStructureVersionInfoKHR; + +typedef struct VkCopyAccelerationStructureToMemoryInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureKHR src; + VkDeviceOrHostAddressKHR dst; + VkCopyAccelerationStructureModeKHR mode; +} VkCopyAccelerationStructureToMemoryInfoKHR; + +typedef struct VkCopyMemoryToAccelerationStructureInfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceOrHostAddressConstKHR src; + VkAccelerationStructureKHR dst; + VkCopyAccelerationStructureModeKHR mode; +} VkCopyMemoryToAccelerationStructureInfoKHR; + +typedef struct VkCopyAccelerationStructureInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureKHR src; + VkAccelerationStructureKHR dst; + VkCopyAccelerationStructureModeKHR mode; +} VkCopyAccelerationStructureInfoKHR; + +typedef struct VkAccelerationStructureBuildSizesInfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceSize accelerationStructureSize; + VkDeviceSize updateScratchSize; + VkDeviceSize buildScratchSize; +} VkAccelerationStructureBuildSizesInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureKHR)(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure); +typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureKHR)(VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); +typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresIndirectKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress* pIndirectDeviceAddresses, const uint32_t* pIndirectStrides, const uint32_t* const* ppMaxPrimitiveCounts); +typedef VkResult (VKAPI_PTR *PFN_vkBuildAccelerationStructuresKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); +typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureToMemoryKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkWriteAccelerationStructuresPropertiesKHR)(VkDevice device, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, size_t dataSize, void* pData, size_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureToMemoryKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetAccelerationStructureDeviceAddressKHR)(VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery); +typedef void (VKAPI_PTR *PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)(VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility); +typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureBuildSizesKHR)(VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT( +VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureKHR( + VkDevice device, + const VkAccelerationStructureCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkAccelerationStructureKHR* pAccelerationStructure); + +VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureKHR( + VkDevice device, + VkAccelerationStructureKHR accelerationStructure, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresKHR( VkCommandBuffer commandBuffer, - uint32_t lineStippleFactor, - uint16_t lineStipplePattern); -#endif + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, + const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); +VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresIndirectKHR( + VkCommandBuffer commandBuffer, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, + const VkDeviceAddress* pIndirectDeviceAddresses, + const uint32_t* pIndirectStrides, + const uint32_t* const* ppMaxPrimitiveCounts); -#define VK_EXT_host_query_reset 1 -#define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1 -#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset" -typedef struct VkPhysicalDeviceHostQueryResetFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 hostQueryReset; -} VkPhysicalDeviceHostQueryResetFeaturesEXT; +VKAPI_ATTR VkResult VKAPI_CALL vkBuildAccelerationStructuresKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, + const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); -typedef void (VKAPI_PTR *PFN_vkResetQueryPoolEXT)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); +VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyAccelerationStructureInfoKHR* pInfo); -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkResetQueryPoolEXT( +VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureToMemoryKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToAccelerationStructureKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkWriteAccelerationStructuresPropertiesKHR( + VkDevice device, + uint32_t accelerationStructureCount, + const VkAccelerationStructureKHR* pAccelerationStructures, + VkQueryType queryType, + size_t dataSize, + void* pData, + size_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureKHR( + VkCommandBuffer commandBuffer, + const VkCopyAccelerationStructureInfoKHR* pInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureToMemoryKHR( + VkCommandBuffer commandBuffer, + const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToAccelerationStructureKHR( + VkCommandBuffer commandBuffer, + const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); + +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetAccelerationStructureDeviceAddressKHR( VkDevice device, + const VkAccelerationStructureDeviceAddressInfoKHR* pInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesKHR( + VkCommandBuffer commandBuffer, + uint32_t accelerationStructureCount, + const VkAccelerationStructureKHR* pAccelerationStructures, + VkQueryType queryType, VkQueryPool queryPool, - uint32_t firstQuery, - uint32_t queryCount); + uint32_t firstQuery); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceAccelerationStructureCompatibilityKHR( + VkDevice device, + const VkAccelerationStructureVersionInfoKHR* pVersionInfo, + VkAccelerationStructureCompatibilityKHR* pCompatibility); + +VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureBuildSizesKHR( + VkDevice device, + VkAccelerationStructureBuildTypeKHR buildType, + const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, + const uint32_t* pMaxPrimitiveCounts, + VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); #endif -#define VK_EXT_index_type_uint8 1 -#define VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION 1 -#define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_EXT_index_type_uint8" -typedef struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 indexTypeUint8; -} VkPhysicalDeviceIndexTypeUint8FeaturesEXT; +#define VK_KHR_ray_tracing_pipeline 1 +#define VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION 1 +#define VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME "VK_KHR_ray_tracing_pipeline" +typedef enum VkShaderGroupShaderKHR { + VK_SHADER_GROUP_SHADER_GENERAL_KHR = 0, + VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR = 1, + VK_SHADER_GROUP_SHADER_ANY_HIT_KHR = 2, + VK_SHADER_GROUP_SHADER_INTERSECTION_KHR = 3, + VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR = 0x7FFFFFFF +} VkShaderGroupShaderKHR; +typedef struct VkRayTracingShaderGroupCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkRayTracingShaderGroupTypeKHR type; + uint32_t generalShader; + uint32_t closestHitShader; + uint32_t anyHitShader; + uint32_t intersectionShader; + const void* pShaderGroupCaptureReplayHandle; +} VkRayTracingShaderGroupCreateInfoKHR; +typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t maxPipelineRayPayloadSize; + uint32_t maxPipelineRayHitAttributeSize; +} VkRayTracingPipelineInterfaceCreateInfoKHR; + +typedef struct VkRayTracingPipelineCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + uint32_t groupCount; + const VkRayTracingShaderGroupCreateInfoKHR* pGroups; + uint32_t maxPipelineRayRecursionDepth; + const VkPipelineLibraryCreateInfoKHR* pLibraryInfo; + const VkRayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface; + const VkPipelineDynamicStateCreateInfo* pDynamicState; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkRayTracingPipelineCreateInfoKHR; + +typedef struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingPipeline; + VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplay; + VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed; + VkBool32 rayTracingPipelineTraceRaysIndirect; + VkBool32 rayTraversalPrimitiveCulling; +} VkPhysicalDeviceRayTracingPipelineFeaturesKHR; -#define VK_EXT_shader_demote_to_helper_invocation 1 -#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1 -#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME "VK_EXT_shader_demote_to_helper_invocation" -typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT { +typedef struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR { VkStructureType sType; void* pNext; - VkBool32 shaderDemoteToHelperInvocation; -} VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; + uint32_t shaderGroupHandleSize; + uint32_t maxRayRecursionDepth; + uint32_t maxShaderGroupStride; + uint32_t shaderGroupBaseAlignment; + uint32_t shaderGroupHandleCaptureReplaySize; + uint32_t maxRayDispatchInvocationCount; + uint32_t shaderGroupHandleAlignment; + uint32_t maxRayHitAttributeSize; +} VkPhysicalDeviceRayTracingPipelinePropertiesKHR; +typedef struct VkStridedDeviceAddressRegionKHR { + VkDeviceAddress deviceAddress; + VkDeviceSize stride; + VkDeviceSize size; +} VkStridedDeviceAddressRegionKHR; +typedef struct VkTraceRaysIndirectCommandKHR { + uint32_t width; + uint32_t height; + uint32_t depth; +} VkTraceRaysIndirectCommandKHR; -#define VK_EXT_texel_buffer_alignment 1 -#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION 1 -#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment" -typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 texelBufferAlignment; -} VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT; +typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth); +typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); +typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirectKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress); +typedef VkDeviceSize (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupStackSizeKHR)(VkDevice device, VkPipeline pipeline, uint32_t group, VkShaderGroupShaderKHR groupShader); +typedef void (VKAPI_PTR *PFN_vkCmdSetRayTracingPipelineStackSizeKHR)(VkCommandBuffer commandBuffer, uint32_t pipelineStackSize); -typedef struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT { +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysKHR( + VkCommandBuffer commandBuffer, + const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( + VkDevice device, + VkPipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void* pData); + +VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirectKHR( + VkCommandBuffer commandBuffer, + const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, + VkDeviceAddress indirectDeviceAddress); + +VKAPI_ATTR VkDeviceSize VKAPI_CALL vkGetRayTracingShaderGroupStackSizeKHR( + VkDevice device, + VkPipeline pipeline, + uint32_t group, + VkShaderGroupShaderKHR groupShader); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetRayTracingPipelineStackSizeKHR( + VkCommandBuffer commandBuffer, + uint32_t pipelineStackSize); +#endif + + +#define VK_KHR_ray_query 1 +#define VK_KHR_RAY_QUERY_SPEC_VERSION 1 +#define VK_KHR_RAY_QUERY_EXTENSION_NAME "VK_KHR_ray_query" +typedef struct VkPhysicalDeviceRayQueryFeaturesKHR { VkStructureType sType; void* pNext; - VkDeviceSize storageTexelBufferOffsetAlignmentBytes; - VkBool32 storageTexelBufferOffsetSingleTexelAlignment; - VkDeviceSize uniformTexelBufferOffsetAlignmentBytes; - VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; -} VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT; + VkBool32 rayQuery; +} VkPhysicalDeviceRayQueryFeaturesKHR; #ifdef __cplusplus diff --git a/Externals/Vulkan/Include/vulkan/vulkan_directfb.h b/Externals/Vulkan/Include/vulkan/vulkan_directfb.h new file mode 100644 index 000000000000..ab3504efafd1 --- /dev/null +++ b/Externals/Vulkan/Include/vulkan/vulkan_directfb.h @@ -0,0 +1,54 @@ +#ifndef VULKAN_DIRECTFB_H_ +#define VULKAN_DIRECTFB_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_EXT_directfb_surface 1 +#define VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION 1 +#define VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME "VK_EXT_directfb_surface" +typedef VkFlags VkDirectFBSurfaceCreateFlagsEXT; +typedef struct VkDirectFBSurfaceCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDirectFBSurfaceCreateFlagsEXT flags; + IDirectFB* dfb; + IDirectFBSurface* surface; +} VkDirectFBSurfaceCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateDirectFBSurfaceEXT)(VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, IDirectFB* dfb); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDirectFBSurfaceEXT( + VkInstance instance, + const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); + +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceDirectFBPresentationSupportEXT( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + IDirectFB* dfb); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/Vulkan/Include/vulkan/vulkan_enums.hpp b/Externals/Vulkan/Include/vulkan/vulkan_enums.hpp new file mode 100644 index 000000000000..ea2a434aa9dc --- /dev/null +++ b/Externals/Vulkan/Include/vulkan/vulkan_enums.hpp @@ -0,0 +1,18755 @@ +// Copyright 2015-2022 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_ENUMS_HPP +#define VULKAN_ENUMS_HPP + +namespace VULKAN_HPP_NAMESPACE +{ + template + struct CppType + {}; + + template + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = false; + }; + + VULKAN_HPP_INLINE std::string toHexString( uint32_t value ) + { + std::stringstream stream; + stream << std::hex << value; + return stream.str(); + } + + //============= + //=== ENUMs === + //============= + + //=== VK_VERSION_1_0 === + + enum class Result + { + eSuccess = VK_SUCCESS, + eNotReady = VK_NOT_READY, + eTimeout = VK_TIMEOUT, + eEventSet = VK_EVENT_SET, + eEventReset = VK_EVENT_RESET, + eIncomplete = VK_INCOMPLETE, + eErrorOutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY, + eErrorOutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY, + eErrorInitializationFailed = VK_ERROR_INITIALIZATION_FAILED, + eErrorDeviceLost = VK_ERROR_DEVICE_LOST, + eErrorMemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED, + eErrorLayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT, + eErrorExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT, + eErrorFeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT, + eErrorIncompatibleDriver = VK_ERROR_INCOMPATIBLE_DRIVER, + eErrorTooManyObjects = VK_ERROR_TOO_MANY_OBJECTS, + eErrorFormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED, + eErrorFragmentedPool = VK_ERROR_FRAGMENTED_POOL, + eErrorUnknown = VK_ERROR_UNKNOWN, + eErrorOutOfPoolMemory = VK_ERROR_OUT_OF_POOL_MEMORY, + eErrorInvalidExternalHandle = VK_ERROR_INVALID_EXTERNAL_HANDLE, + eErrorFragmentation = VK_ERROR_FRAGMENTATION, + eErrorInvalidOpaqueCaptureAddress = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, + ePipelineCompileRequired = VK_PIPELINE_COMPILE_REQUIRED, + eErrorSurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR, + eErrorNativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR, + eSuboptimalKHR = VK_SUBOPTIMAL_KHR, + eErrorOutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR, + eErrorIncompatibleDisplayKHR = VK_ERROR_INCOMPATIBLE_DISPLAY_KHR, + eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT, + eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV, + eErrorInvalidDrmFormatModifierPlaneLayoutEXT = VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT, + eErrorNotPermittedKHR = VK_ERROR_NOT_PERMITTED_KHR, +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + eErrorFullScreenExclusiveModeLostEXT = VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + eThreadIdleKHR = VK_THREAD_IDLE_KHR, + eThreadDoneKHR = VK_THREAD_DONE_KHR, + eOperationDeferredKHR = VK_OPERATION_DEFERRED_KHR, + eOperationNotDeferredKHR = VK_OPERATION_NOT_DEFERRED_KHR, + eErrorFragmentationEXT = VK_ERROR_FRAGMENTATION_EXT, + eErrorInvalidDeviceAddressEXT = VK_ERROR_INVALID_DEVICE_ADDRESS_EXT, + eErrorInvalidExternalHandleKHR = VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR, + eErrorInvalidOpaqueCaptureAddressKHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR, + eErrorNotPermittedEXT = VK_ERROR_NOT_PERMITTED_EXT, + eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY_KHR, + eErrorPipelineCompileRequiredEXT = VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT, + ePipelineCompileRequiredEXT = VK_PIPELINE_COMPILE_REQUIRED_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( Result value ) + { + switch ( value ) + { + case Result::eSuccess: return "Success"; + case Result::eNotReady: return "NotReady"; + case Result::eTimeout: return "Timeout"; + case Result::eEventSet: return "EventSet"; + case Result::eEventReset: return "EventReset"; + case Result::eIncomplete: return "Incomplete"; + case Result::eErrorOutOfHostMemory: return "ErrorOutOfHostMemory"; + case Result::eErrorOutOfDeviceMemory: return "ErrorOutOfDeviceMemory"; + case Result::eErrorInitializationFailed: return "ErrorInitializationFailed"; + case Result::eErrorDeviceLost: return "ErrorDeviceLost"; + case Result::eErrorMemoryMapFailed: return "ErrorMemoryMapFailed"; + case Result::eErrorLayerNotPresent: return "ErrorLayerNotPresent"; + case Result::eErrorExtensionNotPresent: return "ErrorExtensionNotPresent"; + case Result::eErrorFeatureNotPresent: return "ErrorFeatureNotPresent"; + case Result::eErrorIncompatibleDriver: return "ErrorIncompatibleDriver"; + case Result::eErrorTooManyObjects: return "ErrorTooManyObjects"; + case Result::eErrorFormatNotSupported: return "ErrorFormatNotSupported"; + case Result::eErrorFragmentedPool: return "ErrorFragmentedPool"; + case Result::eErrorUnknown: return "ErrorUnknown"; + case Result::eErrorOutOfPoolMemory: return "ErrorOutOfPoolMemory"; + case Result::eErrorInvalidExternalHandle: return "ErrorInvalidExternalHandle"; + case Result::eErrorFragmentation: return "ErrorFragmentation"; + case Result::eErrorInvalidOpaqueCaptureAddress: return "ErrorInvalidOpaqueCaptureAddress"; + case Result::ePipelineCompileRequired: return "PipelineCompileRequired"; + case Result::eErrorSurfaceLostKHR: return "ErrorSurfaceLostKHR"; + case Result::eErrorNativeWindowInUseKHR: return "ErrorNativeWindowInUseKHR"; + case Result::eSuboptimalKHR: return "SuboptimalKHR"; + case Result::eErrorOutOfDateKHR: return "ErrorOutOfDateKHR"; + case Result::eErrorIncompatibleDisplayKHR: return "ErrorIncompatibleDisplayKHR"; + case Result::eErrorValidationFailedEXT: return "ErrorValidationFailedEXT"; + case Result::eErrorInvalidShaderNV: return "ErrorInvalidShaderNV"; + case Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT: return "ErrorInvalidDrmFormatModifierPlaneLayoutEXT"; + case Result::eErrorNotPermittedKHR: return "ErrorNotPermittedKHR"; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + case Result::eErrorFullScreenExclusiveModeLostEXT: return "ErrorFullScreenExclusiveModeLostEXT"; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + case Result::eThreadIdleKHR: return "ThreadIdleKHR"; + case Result::eThreadDoneKHR: return "ThreadDoneKHR"; + case Result::eOperationDeferredKHR: return "OperationDeferredKHR"; + case Result::eOperationNotDeferredKHR: return "OperationNotDeferredKHR"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class StructureType + { + eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO, + eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, + eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO, + eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, + eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO, + eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, + eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE, + eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO, + eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, + eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, + eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO, + eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO, + eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, + eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO, + eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, + eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, + eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO, + ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO, + ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, + ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, + ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, + ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, + ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, + ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO, + ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, + ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, + ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, + ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, + eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, + eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO, + ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, + eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, + eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, + eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO, + eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO, + eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, + eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET, + eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, + eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, + eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, + eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, + eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, + eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO, + eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, + eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, + eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER, + eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO, + eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, + ePhysicalDeviceSubgroupProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES, + eBindBufferMemoryInfo = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO, + eBindImageMemoryInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO, + ePhysicalDevice16BitStorageFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, + eMemoryDedicatedRequirements = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS, + eMemoryDedicatedAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO, + eMemoryAllocateFlagsInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO, + eDeviceGroupRenderPassBeginInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO, + eDeviceGroupCommandBufferBeginInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO, + eDeviceGroupSubmitInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO, + eDeviceGroupBindSparseInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO, + eBindBufferMemoryDeviceGroupInfo = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO, + eBindImageMemoryDeviceGroupInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, + ePhysicalDeviceGroupProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES, + eDeviceGroupDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO, + eBufferMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2, + eImageMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2, + eImageSparseMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, + eMemoryRequirements2 = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, + eSparseImageMemoryRequirements2 = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2, + ePhysicalDeviceFeatures2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, + ePhysicalDeviceProperties2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, + eFormatProperties2 = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2, + eImageFormatProperties2 = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2, + ePhysicalDeviceImageFormatInfo2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, + eQueueFamilyProperties2 = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2, + ePhysicalDeviceMemoryProperties2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, + eSparseImageFormatProperties2 = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2, + ePhysicalDeviceSparseImageFormatInfo2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2, + ePhysicalDevicePointClippingProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, + eRenderPassInputAttachmentAspectCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO, + eImageViewUsageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO, + ePipelineTessellationDomainOriginStateCreateInfo = + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO, + eRenderPassMultiviewCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO, + ePhysicalDeviceMultiviewFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, + ePhysicalDeviceMultiviewProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, + ePhysicalDeviceVariablePointersFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, + eProtectedSubmitInfo = VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO, + ePhysicalDeviceProtectedMemoryFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, + ePhysicalDeviceProtectedMemoryProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES, + eDeviceQueueInfo2 = VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2, + eSamplerYcbcrConversionCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO, + eSamplerYcbcrConversionInfo = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO, + eBindImagePlaneMemoryInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO, + eImagePlaneMemoryRequirementsInfo = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO, + ePhysicalDeviceSamplerYcbcrConversionFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, + eSamplerYcbcrConversionImageFormatProperties = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES, + eDescriptorUpdateTemplateCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, + ePhysicalDeviceExternalImageFormatInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, + eExternalImageFormatProperties = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES, + ePhysicalDeviceExternalBufferInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO, + eExternalBufferProperties = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES, + ePhysicalDeviceIdProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES, + eExternalMemoryBufferCreateInfo = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO, + eExternalMemoryImageCreateInfo = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO, + eExportMemoryAllocateInfo = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO, + ePhysicalDeviceExternalFenceInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, + eExternalFenceProperties = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES, + eExportFenceCreateInfo = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO, + eExportSemaphoreCreateInfo = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO, + ePhysicalDeviceExternalSemaphoreInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, + eExternalSemaphoreProperties = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, + ePhysicalDeviceMaintenance3Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, + eDescriptorSetLayoutSupport = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT, + ePhysicalDeviceShaderDrawParametersFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, + ePhysicalDeviceVulkan11Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES, + ePhysicalDeviceVulkan11Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES, + ePhysicalDeviceVulkan12Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES, + ePhysicalDeviceVulkan12Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES, + eImageFormatListCreateInfo = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO, + eAttachmentDescription2 = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, + eAttachmentReference2 = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, + eSubpassDescription2 = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2, + eSubpassDependency2 = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2, + eRenderPassCreateInfo2 = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2, + eSubpassBeginInfo = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO, + eSubpassEndInfo = VK_STRUCTURE_TYPE_SUBPASS_END_INFO, + ePhysicalDevice8BitStorageFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, + ePhysicalDeviceDriverProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, + ePhysicalDeviceShaderAtomicInt64Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, + ePhysicalDeviceShaderFloat16Int8Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, + ePhysicalDeviceFloatControlsProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, + eDescriptorSetLayoutBindingFlagsCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO, + ePhysicalDeviceDescriptorIndexingFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, + ePhysicalDeviceDescriptorIndexingProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, + eDescriptorSetVariableDescriptorCountAllocateInfo = + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO, + eDescriptorSetVariableDescriptorCountLayoutSupport = + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT, + ePhysicalDeviceDepthStencilResolveProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, + eSubpassDescriptionDepthStencilResolve = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE, + ePhysicalDeviceScalarBlockLayoutFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, + eImageStencilUsageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO, + ePhysicalDeviceSamplerFilterMinmaxProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, + eSamplerReductionModeCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO, + ePhysicalDeviceVulkanMemoryModelFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, + ePhysicalDeviceImagelessFramebufferFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, + eFramebufferAttachmentsCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO, + eFramebufferAttachmentImageInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO, + eRenderPassAttachmentBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO, + ePhysicalDeviceUniformBufferStandardLayoutFeatures = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, + ePhysicalDeviceShaderSubgroupExtendedTypesFeatures = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, + ePhysicalDeviceSeparateDepthStencilLayoutsFeatures = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, + eAttachmentReferenceStencilLayout = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT, + eAttachmentDescriptionStencilLayout = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT, + ePhysicalDeviceHostQueryResetFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, + ePhysicalDeviceTimelineSemaphoreFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, + ePhysicalDeviceTimelineSemaphoreProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, + eSemaphoreTypeCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO, + eTimelineSemaphoreSubmitInfo = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, + eSemaphoreWaitInfo = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO, + eSemaphoreSignalInfo = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO, + ePhysicalDeviceBufferDeviceAddressFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, + eBufferDeviceAddressInfo = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, + eBufferOpaqueCaptureAddressCreateInfo = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO, + eMemoryOpaqueCaptureAddressAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO, + eDeviceMemoryOpaqueCaptureAddressInfo = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO, + ePhysicalDeviceVulkan13Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES, + ePhysicalDeviceVulkan13Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES, + ePipelineCreationFeedbackCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO, + ePhysicalDeviceShaderTerminateInvocationFeatures = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES, + ePhysicalDeviceToolProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES, + ePhysicalDeviceShaderDemoteToHelperInvocationFeatures = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, + ePhysicalDevicePrivateDataFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES, + eDevicePrivateDataCreateInfo = VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO, + ePrivateDataSlotCreateInfo = VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO, + ePhysicalDevicePipelineCreationCacheControlFeatures = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES, + eMemoryBarrier2 = VK_STRUCTURE_TYPE_MEMORY_BARRIER_2, + eBufferMemoryBarrier2 = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2, + eImageMemoryBarrier2 = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2, + eDependencyInfo = VK_STRUCTURE_TYPE_DEPENDENCY_INFO, + eSubmitInfo2 = VK_STRUCTURE_TYPE_SUBMIT_INFO_2, + eSemaphoreSubmitInfo = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO, + eCommandBufferSubmitInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO, + ePhysicalDeviceSynchronization2Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES, + ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES, + ePhysicalDeviceImageRobustnessFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES, + eCopyBufferInfo2 = VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2, + eCopyImageInfo2 = VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2, + eCopyBufferToImageInfo2 = VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2, + eCopyImageToBufferInfo2 = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2, + eBlitImageInfo2 = VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2, + eResolveImageInfo2 = VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2, + eBufferCopy2 = VK_STRUCTURE_TYPE_BUFFER_COPY_2, + eImageCopy2 = VK_STRUCTURE_TYPE_IMAGE_COPY_2, + eImageBlit2 = VK_STRUCTURE_TYPE_IMAGE_BLIT_2, + eBufferImageCopy2 = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2, + eImageResolve2 = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2, + ePhysicalDeviceSubgroupSizeControlProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES, + ePipelineShaderStageRequiredSubgroupSizeCreateInfo = + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO, + ePhysicalDeviceSubgroupSizeControlFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES, + ePhysicalDeviceInlineUniformBlockFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES, + ePhysicalDeviceInlineUniformBlockProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES, + eWriteDescriptorSetInlineUniformBlock = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK, + eDescriptorPoolInlineUniformBlockCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO, + ePhysicalDeviceTextureCompressionAstcHdrFeatures = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, + eRenderingInfo = VK_STRUCTURE_TYPE_RENDERING_INFO, + eRenderingAttachmentInfo = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO, + ePipelineRenderingCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO, + ePhysicalDeviceDynamicRenderingFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES, + eCommandBufferInheritanceRenderingInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO, + ePhysicalDeviceShaderIntegerDotProductFeatures = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES, + ePhysicalDeviceShaderIntegerDotProductProperties = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, + ePhysicalDeviceTexelBufferAlignmentProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES, + eFormatProperties3 = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3, + ePhysicalDeviceMaintenance4Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES, + ePhysicalDeviceMaintenance4Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES, + eDeviceBufferMemoryRequirements = VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS, + eDeviceImageMemoryRequirements = VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS, + eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR, + ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR, + eDeviceGroupPresentCapabilitiesKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR, + eImageSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR, + eBindImageMemorySwapchainInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR, + eAcquireNextImageInfoKHR = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR, + eDeviceGroupPresentInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR, + eDeviceGroupSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR, + eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR, + eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR, + eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR, +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR, +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ +#if defined( VK_USE_PLATFORM_XCB_KHR ) + eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR, +#endif /*VK_USE_PLATFORM_XCB_KHR*/ +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR, +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR, +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, + ePipelineRasterizationStateRasterizationOrderAMD = + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD, + eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT, + eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT, + eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoProfileKHR = VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR, + eVideoCapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR, + eVideoPictureResourceKHR = VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR, + eVideoGetMemoryPropertiesKHR = VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR, + eVideoBindMemoryKHR = VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR, + eVideoSessionCreateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR, + eVideoSessionParametersCreateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR, + eVideoSessionParametersUpdateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR, + eVideoBeginCodingInfoKHR = VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR, + eVideoEndCodingInfoKHR = VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR, + eVideoCodingControlInfoKHR = VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR, + eVideoReferenceSlotKHR = VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR, + eVideoQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR, + eVideoProfilesKHR = VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR, + ePhysicalDeviceVideoFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR, + eVideoFormatPropertiesKHR = VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR, + eQueueFamilyQueryResultStatusProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_2_KHR, + eVideoDecodeInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV, + eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV, + eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV, + ePhysicalDeviceTransformFeedbackFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, + ePhysicalDeviceTransformFeedbackPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT, + ePipelineRasterizationStateStreamCreateInfoEXT = + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT, + eCuModuleCreateInfoNVX = VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX, + eCuFunctionCreateInfoNVX = VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX, + eCuLaunchInfoNVX = VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX, + eImageViewHandleInfoNVX = VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX, + eImageViewAddressPropertiesNVX = VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoEncodeH264CapabilitiesEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT, + eVideoEncodeH264SessionCreateInfoEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT, + eVideoEncodeH264SessionParametersCreateInfoEXT = + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT, + eVideoEncodeH264SessionParametersAddInfoEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT, + eVideoEncodeH264VclFrameInfoEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT, + eVideoEncodeH264DpbSlotInfoEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT, + eVideoEncodeH264NaluSliceEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT, + eVideoEncodeH264EmitPictureParametersEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT, + eVideoEncodeH264ProfileEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT, + eVideoEncodeH264RateControlInfoEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT, + eVideoEncodeH264RateControlLayerInfoEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT, + eVideoEncodeH265CapabilitiesEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT, + eVideoEncodeH265SessionCreateInfoEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT, + eVideoEncodeH265SessionParametersCreateInfoEXT = + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT, + eVideoEncodeH265SessionParametersAddInfoEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT, + eVideoEncodeH265VclFrameInfoEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT, + eVideoEncodeH265DpbSlotInfoEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT, + eVideoEncodeH265NaluSliceEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_EXT, + eVideoEncodeH265EmitPictureParametersEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT, + eVideoEncodeH265ProfileEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT, + eVideoEncodeH265ReferenceListsEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT, + eVideoEncodeH265RateControlInfoEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT, + eVideoEncodeH265RateControlLayerInfoEXT = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT, + eVideoDecodeH264CapabilitiesEXT = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT, + eVideoDecodeH264SessionCreateInfoEXT = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT, + eVideoDecodeH264PictureInfoEXT = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT, + eVideoDecodeH264MvcEXT = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT, + eVideoDecodeH264ProfileEXT = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT, + eVideoDecodeH264SessionParametersCreateInfoEXT = + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT, + eVideoDecodeH264SessionParametersAddInfoEXT = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT, + eVideoDecodeH264DpbSlotInfoEXT = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eTextureLodGatherFormatPropertiesAMD = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD, + eRenderingFragmentShadingRateAttachmentInfoKHR = + VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR, + eRenderingFragmentDensityMapAttachmentInfoEXT = + VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT, + eAttachmentSampleCountInfoAMD = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD, + eMultiviewPerViewAttributesInfoNVX = VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX, +#if defined( VK_USE_PLATFORM_GGP ) + eStreamDescriptorSurfaceCreateInfoGGP = VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP, +#endif /*VK_USE_PLATFORM_GGP*/ + ePhysicalDeviceCornerSampledImageFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV, + eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV, + eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV, +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV, + eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV, + eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT, +#if defined( VK_USE_PLATFORM_VI_NN ) + eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN, +#endif /*VK_USE_PLATFORM_VI_NN*/ + eImageViewAstcDecodeModeEXT = VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT, + ePhysicalDeviceAstcDecodeFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT, +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + eImportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR, + eExportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR, + eMemoryWin32HandlePropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR, + eMemoryGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + eImportMemoryFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR, + eMemoryFdPropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR, + eMemoryGetFdInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR, +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + eWin32KeyedMutexAcquireReleaseInfoKHR = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR, + eImportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR, + eExportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR, + eD3D12FenceSubmitInfoKHR = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR, + eSemaphoreGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + eImportSemaphoreFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR, + eSemaphoreGetFdInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR, + ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR, + eCommandBufferInheritanceConditionalRenderingInfoEXT = + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT, + ePhysicalDeviceConditionalRenderingFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT, + eConditionalRenderingBeginInfoEXT = VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT, + ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR, + ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV, + eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT, + eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT, + eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT, + eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT, + eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT, + ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE, + ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX, + ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV, + ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT, + ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT, + ePhysicalDeviceConservativeRasterizationPropertiesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT, + ePipelineRasterizationConservativeStateCreateInfoEXT = + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT, + ePhysicalDeviceDepthClipEnableFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, + ePipelineRasterizationDepthClipStateCreateInfoEXT = + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT, + eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT, + eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR, +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + eImportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR, + eExportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR, + eFenceGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + eImportFenceFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR, + eFenceGetFdInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR, + ePhysicalDevicePerformanceQueryFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR, + ePhysicalDevicePerformanceQueryPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR, + eQueryPoolPerformanceCreateInfoKHR = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR, + ePerformanceQuerySubmitInfoKHR = VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR, + eAcquireProfilingLockInfoKHR = VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR, + ePerformanceCounterKHR = VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR, + ePerformanceCounterDescriptionKHR = VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR, + ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR, + eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR, + eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR, + eDisplayProperties2KHR = VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR, + eDisplayPlaneProperties2KHR = VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR, + eDisplayModeProperties2KHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR, + eDisplayPlaneInfo2KHR = VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR, + eDisplayPlaneCapabilities2KHR = VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR, +#if defined( VK_USE_PLATFORM_IOS_MVK ) + eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK, +#endif /*VK_USE_PLATFORM_IOS_MVK*/ +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK, +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + eDebugUtilsObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT, + eDebugUtilsObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT, + eDebugUtilsLabelEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, + eDebugUtilsMessengerCallbackDataEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT, + eDebugUtilsMessengerCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + eAndroidHardwareBufferUsageANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID, + eAndroidHardwareBufferPropertiesANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID, + eAndroidHardwareBufferFormatPropertiesANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID, + eImportAndroidHardwareBufferInfoANDROID = VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID, + eMemoryGetAndroidHardwareBufferInfoANDROID = VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID, + eExternalFormatANDROID = VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID, + eAndroidHardwareBufferFormatProperties2ANDROID = + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID, +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + eSampleLocationsInfoEXT = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT, + eRenderPassSampleLocationsBeginInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT, + ePipelineSampleLocationsStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT, + ePhysicalDeviceSampleLocationsPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT, + eMultisamplePropertiesEXT = VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT, + ePhysicalDeviceBlendOperationAdvancedFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT, + ePhysicalDeviceBlendOperationAdvancedPropertiesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT, + ePipelineColorBlendAdvancedStateCreateInfoEXT = + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT, + ePipelineCoverageToColorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV, + eWriteDescriptorSetAccelerationStructureKHR = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR, + eAccelerationStructureBuildGeometryInfoKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR, + eAccelerationStructureDeviceAddressInfoKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR, + eAccelerationStructureGeometryAabbsDataKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR, + eAccelerationStructureGeometryInstancesDataKHR = + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR, + eAccelerationStructureGeometryTrianglesDataKHR = + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR, + eAccelerationStructureGeometryKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR, + eAccelerationStructureVersionInfoKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR, + eCopyAccelerationStructureInfoKHR = VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR, + eCopyAccelerationStructureToMemoryInfoKHR = VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR, + eCopyMemoryToAccelerationStructureInfoKHR = VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR, + ePhysicalDeviceAccelerationStructureFeaturesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR, + ePhysicalDeviceAccelerationStructurePropertiesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR, + eAccelerationStructureCreateInfoKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR, + eAccelerationStructureBuildSizesInfoKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR, + ePhysicalDeviceRayTracingPipelineFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR, + ePhysicalDeviceRayTracingPipelinePropertiesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR, + eRayTracingPipelineCreateInfoKHR = VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR, + eRayTracingShaderGroupCreateInfoKHR = VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR, + eRayTracingPipelineInterfaceCreateInfoKHR = VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR, + ePhysicalDeviceRayQueryFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR, + ePipelineCoverageModulationStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV, + ePhysicalDeviceShaderSmBuiltinsFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV, + ePhysicalDeviceShaderSmBuiltinsPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV, + eDrmFormatModifierPropertiesListEXT = VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT, + ePhysicalDeviceImageDrmFormatModifierInfoEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT, + eImageDrmFormatModifierListCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT, + eImageDrmFormatModifierExplicitCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT, + eImageDrmFormatModifierPropertiesEXT = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT, + eDrmFormatModifierPropertiesList2EXT = VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT, + eValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT, + eShaderModuleValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + ePhysicalDevicePortabilitySubsetFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR, + ePhysicalDevicePortabilitySubsetPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + ePipelineViewportShadingRateImageStateCreateInfoNV = + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV, + ePhysicalDeviceShadingRateImageFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV, + ePhysicalDeviceShadingRateImagePropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV, + ePipelineViewportCoarseSampleOrderStateCreateInfoNV = + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV, + eRayTracingPipelineCreateInfoNV = VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV, + eAccelerationStructureCreateInfoNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV, + eGeometryNV = VK_STRUCTURE_TYPE_GEOMETRY_NV, + eGeometryTrianglesNV = VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV, + eGeometryAabbNV = VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV, + eBindAccelerationStructureMemoryInfoNV = VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV, + eWriteDescriptorSetAccelerationStructureNV = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV, + eAccelerationStructureMemoryRequirementsInfoNV = + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV, + ePhysicalDeviceRayTracingPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV, + eRayTracingShaderGroupCreateInfoNV = VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV, + eAccelerationStructureInfoNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV, + ePhysicalDeviceRepresentativeFragmentTestFeaturesNV = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV, + ePipelineRepresentativeFragmentTestStateCreateInfoNV = + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV, + ePhysicalDeviceImageViewImageFormatInfoEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT, + eFilterCubicImageViewImageFormatPropertiesEXT = + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT, + eImportMemoryHostPointerInfoEXT = VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT, + eMemoryHostPointerPropertiesEXT = VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT, + ePhysicalDeviceExternalMemoryHostPropertiesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT, + ePhysicalDeviceShaderClockFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR, + ePipelineCompilerControlCreateInfoAMD = VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD, + eCalibratedTimestampInfoEXT = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT, + ePhysicalDeviceShaderCorePropertiesAMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoDecodeH265CapabilitiesEXT = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT, + eVideoDecodeH265SessionCreateInfoEXT = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT, + eVideoDecodeH265SessionParametersCreateInfoEXT = + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT, + eVideoDecodeH265SessionParametersAddInfoEXT = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT, + eVideoDecodeH265ProfileEXT = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT, + eVideoDecodeH265PictureInfoEXT = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT, + eVideoDecodeH265DpbSlotInfoEXT = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eDeviceQueueGlobalPriorityCreateInfoKHR = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR, + ePhysicalDeviceGlobalPriorityQueryFeaturesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR, + eQueueFamilyGlobalPriorityPropertiesKHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR, + eDeviceMemoryOverallocationCreateInfoAMD = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD, + ePhysicalDeviceVertexAttributeDivisorPropertiesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT, + ePipelineVertexInputDivisorStateCreateInfoEXT = + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT, + ePhysicalDeviceVertexAttributeDivisorFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT, +#if defined( VK_USE_PLATFORM_GGP ) + ePresentFrameTokenGGP = VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP, +#endif /*VK_USE_PLATFORM_GGP*/ + ePhysicalDeviceComputeShaderDerivativesFeaturesNV = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV, + ePhysicalDeviceMeshShaderFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV, + ePhysicalDeviceMeshShaderPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV, + ePhysicalDeviceFragmentShaderBarycentricFeaturesNV = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV, + ePhysicalDeviceShaderImageFootprintFeaturesNV = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, + ePipelineViewportExclusiveScissorStateCreateInfoNV = + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV, + ePhysicalDeviceExclusiveScissorFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV, + eCheckpointDataNV = VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV, + eQueueFamilyCheckpointPropertiesNV = VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV, + ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL, + eQueryPoolPerformanceQueryCreateInfoINTEL = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL, + eInitializePerformanceApiInfoINTEL = VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL, + ePerformanceMarkerInfoINTEL = VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL, + ePerformanceStreamMarkerInfoINTEL = VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL, + ePerformanceOverrideInfoINTEL = VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL, + ePerformanceConfigurationAcquireInfoINTEL = VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL, + ePhysicalDevicePciBusInfoPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT, + eDisplayNativeHdrSurfaceCapabilitiesAMD = VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD, + eSwapchainDisplayNativeHdrCreateInfoAMD = VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD, +#if defined( VK_USE_PLATFORM_FUCHSIA ) + eImagepipeSurfaceCreateInfoFUCHSIA = VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA, +#endif /*VK_USE_PLATFORM_FUCHSIA*/ +#if defined( VK_USE_PLATFORM_METAL_EXT ) + eMetalSurfaceCreateInfoEXT = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT, +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + ePhysicalDeviceFragmentDensityMapFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, + ePhysicalDeviceFragmentDensityMapPropertiesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT, + eRenderPassFragmentDensityMapCreateInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT, + eFragmentShadingRateAttachmentInfoKHR = VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR, + ePipelineFragmentShadingRateStateCreateInfoKHR = + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR, + ePhysicalDeviceFragmentShadingRatePropertiesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR, + ePhysicalDeviceFragmentShadingRateFeaturesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR, + ePhysicalDeviceFragmentShadingRateKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR, + ePhysicalDeviceShaderCoreProperties2AMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD, + ePhysicalDeviceCoherentMemoryFeaturesAMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, + ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT, + ePhysicalDeviceMemoryBudgetPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT, + ePhysicalDeviceMemoryPriorityFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, + eMemoryPriorityAllocateInfoEXT = VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT, + eSurfaceProtectedCapabilitiesKHR = VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR, + ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, + ePhysicalDeviceBufferDeviceAddressFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, + eBufferDeviceAddressCreateInfoEXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT, + eValidationFeaturesEXT = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT, + ePhysicalDevicePresentWaitFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR, + ePhysicalDeviceCooperativeMatrixFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV, + eCooperativeMatrixPropertiesNV = VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV, + ePhysicalDeviceCooperativeMatrixPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV, + ePhysicalDeviceCoverageReductionModeFeaturesNV = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV, + ePipelineCoverageReductionStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV, + eFramebufferMixedSamplesCombinationNV = VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV, + ePhysicalDeviceFragmentShaderInterlockFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, + ePhysicalDeviceYcbcrImageArraysFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT, + ePhysicalDeviceProvokingVertexFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT, + ePipelineRasterizationProvokingVertexStateCreateInfoEXT = + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT, + ePhysicalDeviceProvokingVertexPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT, +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + eSurfaceFullScreenExclusiveInfoEXT = VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT, + eSurfaceCapabilitiesFullScreenExclusiveEXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT, + eSurfaceFullScreenExclusiveWin32InfoEXT = VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + eHeadlessSurfaceCreateInfoEXT = VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT, + ePhysicalDeviceLineRasterizationFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT, + ePipelineRasterizationLineStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT, + ePhysicalDeviceLineRasterizationPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT, + ePhysicalDeviceShaderAtomicFloatFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT, + ePhysicalDeviceIndexTypeUint8FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT, + ePhysicalDeviceExtendedDynamicStateFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT, + ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, + ePipelineInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR, + ePipelineExecutablePropertiesKHR = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR, + ePipelineExecutableInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR, + ePipelineExecutableStatisticKHR = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR, + ePipelineExecutableInternalRepresentationKHR = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR, + ePhysicalDeviceShaderAtomicFloat2FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT, + ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV, + eGraphicsShaderGroupCreateInfoNV = VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV, + eGraphicsPipelineShaderGroupsCreateInfoNV = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV, + eIndirectCommandsLayoutTokenNV = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV, + eIndirectCommandsLayoutCreateInfoNV = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV, + eGeneratedCommandsInfoNV = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV, + eGeneratedCommandsMemoryRequirementsInfoNV = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV, + ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV, + ePhysicalDeviceInheritedViewportScissorFeaturesNV = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV, + eCommandBufferInheritanceViewportScissorInfoNV = + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV, + ePhysicalDeviceTexelBufferAlignmentFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, + eCommandBufferInheritanceRenderPassTransformInfoQCOM = + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM, + eRenderPassTransformBeginInfoQCOM = VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM, + ePhysicalDeviceDeviceMemoryReportFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT, + eDeviceDeviceMemoryReportCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT, + eDeviceMemoryReportCallbackDataEXT = VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT, + ePhysicalDeviceRobustness2FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT, + ePhysicalDeviceRobustness2PropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT, + eSamplerCustomBorderColorCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT, + ePhysicalDeviceCustomBorderColorPropertiesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT, + ePhysicalDeviceCustomBorderColorFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT, + ePipelineLibraryCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR, + ePresentIdKHR = VK_STRUCTURE_TYPE_PRESENT_ID_KHR, + ePhysicalDevicePresentIdFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoEncodeInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR, + eVideoEncodeRateControlInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR, + eVideoEncodeRateControlLayerInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + ePhysicalDeviceDiagnosticsConfigFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, + eDeviceDiagnosticsConfigCreateInfoNV = VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV, + eQueueFamilyCheckpointProperties2NV = VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV, + eCheckpointData2NV = VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV, + ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR, + ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV, + ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV, + ePipelineFragmentShadingRateEnumStateCreateInfoNV = + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV, + eAccelerationStructureGeometryMotionTrianglesDataNV = + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV, + ePhysicalDeviceRayTracingMotionBlurFeaturesNV = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV, + eAccelerationStructureMotionInfoNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV, + ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT, + ePhysicalDeviceFragmentDensityMap2FeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT, + ePhysicalDeviceFragmentDensityMap2PropertiesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT, + eCopyCommandTransformInfoQCOM = VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM, + ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR, + ePhysicalDevice4444FormatsFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT, + ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM, + ePhysicalDeviceRgba10X6FormatsFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT, +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + eDirectfbSurfaceCreateInfoEXT = VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT, +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + ePhysicalDeviceMutableDescriptorTypeFeaturesVALVE = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE, + eMutableDescriptorTypeCreateInfoVALVE = VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE, + ePhysicalDeviceVertexInputDynamicStateFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT, + eVertexInputBindingDescription2EXT = VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT, + eVertexInputAttributeDescription2EXT = VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT, + ePhysicalDeviceDrmPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT, + ePhysicalDeviceDepthClipControlFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT, + ePipelineViewportDepthClipControlCreateInfoEXT = + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT, + ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT, +#if defined( VK_USE_PLATFORM_FUCHSIA ) + eImportMemoryZirconHandleInfoFUCHSIA = VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA, + eMemoryZirconHandlePropertiesFUCHSIA = VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA, + eMemoryGetZirconHandleInfoFUCHSIA = VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA, + eImportSemaphoreZirconHandleInfoFUCHSIA = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA, + eSemaphoreGetZirconHandleInfoFUCHSIA = VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA, + eBufferCollectionCreateInfoFUCHSIA = VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA, + eImportMemoryBufferCollectionFUCHSIA = VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA, + eBufferCollectionImageCreateInfoFUCHSIA = VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA, + eBufferCollectionPropertiesFUCHSIA = VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA, + eBufferConstraintsInfoFUCHSIA = VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA, + eBufferCollectionBufferCreateInfoFUCHSIA = VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA, + eImageConstraintsInfoFUCHSIA = VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA, + eImageFormatConstraintsInfoFUCHSIA = VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA, + eSysmemColorSpaceFUCHSIA = VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA, + eBufferCollectionConstraintsInfoFUCHSIA = VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA, +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + eSubpassShadingPipelineCreateInfoHUAWEI = VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI, + ePhysicalDeviceSubpassShadingFeaturesHUAWEI = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI, + ePhysicalDeviceSubpassShadingPropertiesHUAWEI = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI, + ePhysicalDeviceInvocationMaskFeaturesHUAWEI = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI, + eMemoryGetRemoteAddressInfoNV = VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV, + ePhysicalDeviceExternalMemoryRdmaFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV, + ePhysicalDeviceExtendedDynamicState2FeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT, +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + eScreenSurfaceCreateInfoQNX = VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX, +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + ePhysicalDeviceColorWriteEnableFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT, + ePipelineColorWriteCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT, + ePhysicalDeviceImageViewMinLodFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT, + eImageViewMinLodCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT, + ePhysicalDeviceMultiDrawFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT, + ePhysicalDeviceMultiDrawPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT, + ePhysicalDeviceBorderColorSwizzleFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT, + eSamplerBorderColorComponentMappingCreateInfoEXT = + VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT, + ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT, + ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM, + ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM, + eSubpassFragmentDensityMapOffsetEndInfoQCOM = VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM, + ePhysicalDeviceLinearColorAttachmentFeaturesNV = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV, + eAttachmentDescription2KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR, + eAttachmentDescriptionStencilLayoutKHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR, + eAttachmentReference2KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR, + eAttachmentReferenceStencilLayoutKHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR, + eAttachmentSampleCountInfoNV = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV, + eBindBufferMemoryDeviceGroupInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR, + eBindBufferMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR, + eBindImageMemoryDeviceGroupInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR, + eBindImageMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR, + eBindImagePlaneMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR, + eBlitImageInfo2KHR = VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR, + eBufferCopy2KHR = VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR, + eBufferDeviceAddressInfoEXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT, + eBufferDeviceAddressInfoKHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR, + eBufferImageCopy2KHR = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR, + eBufferMemoryBarrier2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR, + eBufferMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR, + eBufferOpaqueCaptureAddressCreateInfoKHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR, + eCommandBufferInheritanceRenderingInfoKHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR, + eCommandBufferSubmitInfoKHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR, + eCopyBufferInfo2KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR, + eCopyBufferToImageInfo2KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR, + eCopyImageInfo2KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR, + eCopyImageToBufferInfo2KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR, + eDebugReportCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT, + eDependencyInfoKHR = VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR, + eDescriptorPoolInlineUniformBlockCreateInfoEXT = + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT, + eDescriptorSetLayoutBindingFlagsCreateInfoEXT = + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT, + eDescriptorSetLayoutSupportKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR, + eDescriptorSetVariableDescriptorCountAllocateInfoEXT = + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT, + eDescriptorSetVariableDescriptorCountLayoutSupportEXT = + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT, + eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR, + eDeviceBufferMemoryRequirementsKHR = VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR, + eDeviceGroupBindSparseInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR, + eDeviceGroupCommandBufferBeginInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR, + eDeviceGroupDeviceCreateInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR, + eDeviceGroupRenderPassBeginInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR, + eDeviceGroupSubmitInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR, + eDeviceImageMemoryRequirementsKHR = VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR, + eDeviceMemoryOpaqueCaptureAddressInfoKHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR, + eDevicePrivateDataCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT, + eDeviceQueueGlobalPriorityCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT, + eExportFenceCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR, + eExportMemoryAllocateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR, + eExportSemaphoreCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR, + eExternalBufferPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR, + eExternalFencePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR, + eExternalImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR, + eExternalMemoryBufferCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR, + eExternalMemoryImageCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR, + eExternalSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR, + eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR, + eFormatProperties3KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR, + eFramebufferAttachmentsCreateInfoKHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR, + eFramebufferAttachmentImageInfoKHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR, + eImageBlit2KHR = VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR, + eImageCopy2KHR = VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR, + eImageFormatListCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR, + eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR, + eImageMemoryBarrier2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR, + eImageMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR, + eImagePlaneMemoryRequirementsInfoKHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR, + eImageResolve2KHR = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR, + eImageSparseMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR, + eImageStencilUsageCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT, + eImageViewUsageCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR, + eMemoryAllocateFlagsInfoKHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR, + eMemoryBarrier2KHR = VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR, + eMemoryDedicatedAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR, + eMemoryDedicatedRequirementsKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR, + eMemoryOpaqueCaptureAddressAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR, + eMemoryRequirements2KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR, + ePhysicalDevice16BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR, + ePhysicalDevice8BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR, + ePhysicalDeviceBufferAddressFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT, + ePhysicalDeviceBufferDeviceAddressFeaturesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR, + ePhysicalDeviceDepthStencilResolvePropertiesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR, + ePhysicalDeviceDescriptorIndexingFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT, + ePhysicalDeviceDescriptorIndexingPropertiesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT, + ePhysicalDeviceDriverPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR, + ePhysicalDeviceDynamicRenderingFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR, + ePhysicalDeviceExternalBufferInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR, + ePhysicalDeviceExternalFenceInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR, + ePhysicalDeviceExternalImageFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR, + ePhysicalDeviceExternalSemaphoreInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR, + ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR, + ePhysicalDeviceFloat16Int8FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR, + ePhysicalDeviceFloatControlsPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR, + ePhysicalDeviceGlobalPriorityQueryFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT, + ePhysicalDeviceGroupPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR, + ePhysicalDeviceHostQueryResetFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT, + ePhysicalDeviceIdPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR, + ePhysicalDeviceImagelessFramebufferFeaturesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR, + ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR, + ePhysicalDeviceImageRobustnessFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT, + ePhysicalDeviceInlineUniformBlockFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT, + ePhysicalDeviceInlineUniformBlockPropertiesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT, + ePhysicalDeviceMaintenance3PropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR, + ePhysicalDeviceMaintenance4FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR, + ePhysicalDeviceMaintenance4PropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR, + ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR, + ePhysicalDeviceMultiviewFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR, + ePhysicalDeviceMultiviewPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR, + ePhysicalDevicePipelineCreationCacheControlFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT, + ePhysicalDevicePointClippingPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR, + ePhysicalDevicePrivateDataFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT, + ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR, + ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT, + ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR, + ePhysicalDeviceScalarBlockLayoutFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT, + ePhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR, + ePhysicalDeviceShaderAtomicInt64FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR, + ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT, + ePhysicalDeviceShaderDrawParameterFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES, + ePhysicalDeviceShaderFloat16Int8FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR, + ePhysicalDeviceShaderIntegerDotProductFeaturesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR, + ePhysicalDeviceShaderIntegerDotProductPropertiesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR, + ePhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR, + ePhysicalDeviceShaderTerminateInvocationFeaturesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR, + ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR, + ePhysicalDeviceSubgroupSizeControlFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT, + ePhysicalDeviceSubgroupSizeControlPropertiesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT, + ePhysicalDeviceSynchronization2FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR, + ePhysicalDeviceTexelBufferAlignmentPropertiesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT, + ePhysicalDeviceTextureCompressionAstcHdrFeaturesEXT = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT, + ePhysicalDeviceTimelineSemaphoreFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR, + ePhysicalDeviceTimelineSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR, + ePhysicalDeviceToolPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT, + ePhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR, + ePhysicalDeviceVariablePointersFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR, + ePhysicalDeviceVariablePointerFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES, + ePhysicalDeviceVariablePointerFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR, + ePhysicalDeviceVulkanMemoryModelFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR, + ePhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR, + ePipelineCreationFeedbackCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT, + ePipelineRenderingCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR, + ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT, + ePipelineTessellationDomainOriginStateCreateInfoKHR = + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR, + ePrivateDataSlotCreateInfoEXT = VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT, + eQueryPoolCreateInfoINTEL = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL, + eQueueFamilyGlobalPriorityPropertiesEXT = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT, + eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR, + eRenderingAttachmentInfoKHR = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR, + eRenderingInfoKHR = VK_STRUCTURE_TYPE_RENDERING_INFO_KHR, + eRenderPassAttachmentBeginInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR, + eRenderPassCreateInfo2KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR, + eRenderPassInputAttachmentAspectCreateInfoKHR = + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR, + eRenderPassMultiviewCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR, + eResolveImageInfo2KHR = VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR, + eSamplerReductionModeCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT, + eSamplerYcbcrConversionCreateInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR, + eSamplerYcbcrConversionImageFormatPropertiesKHR = + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR, + eSamplerYcbcrConversionInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR, + eSemaphoreSignalInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR, + eSemaphoreSubmitInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR, + eSemaphoreTypeCreateInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR, + eSemaphoreWaitInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR, + eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR, + eSparseImageMemoryRequirements2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR, + eSubmitInfo2KHR = VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR, + eSubpassBeginInfoKHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR, + eSubpassDependency2KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR, + eSubpassDescription2KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR, + eSubpassDescriptionDepthStencilResolveKHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR, + eSubpassEndInfoKHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR, + eTimelineSemaphoreSubmitInfoKHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, + eWriteDescriptorSetInlineUniformBlockEXT = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( StructureType value ) + { + switch ( value ) + { + case StructureType::eApplicationInfo: return "ApplicationInfo"; + case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo"; + case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo"; + case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo"; + case StructureType::eSubmitInfo: return "SubmitInfo"; + case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo"; + case StructureType::eMappedMemoryRange: return "MappedMemoryRange"; + case StructureType::eBindSparseInfo: return "BindSparseInfo"; + case StructureType::eFenceCreateInfo: return "FenceCreateInfo"; + case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo"; + case StructureType::eEventCreateInfo: return "EventCreateInfo"; + case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo"; + case StructureType::eBufferCreateInfo: return "BufferCreateInfo"; + case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo"; + case StructureType::eImageCreateInfo: return "ImageCreateInfo"; + case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo"; + case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo"; + case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo"; + case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo"; + case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo"; + case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo"; + case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo"; + case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo"; + case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo"; + case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo"; + case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo"; + case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo"; + case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo"; + case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo"; + case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo"; + case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo"; + case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo"; + case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo"; + case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo"; + case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo"; + case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet"; + case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet"; + case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo"; + case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo"; + case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo"; + case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo"; + case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo"; + case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo"; + case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo"; + case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier"; + case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier"; + case StructureType::eMemoryBarrier: return "MemoryBarrier"; + case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo"; + case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo"; + case StructureType::ePhysicalDeviceSubgroupProperties: return "PhysicalDeviceSubgroupProperties"; + case StructureType::eBindBufferMemoryInfo: return "BindBufferMemoryInfo"; + case StructureType::eBindImageMemoryInfo: return "BindImageMemoryInfo"; + case StructureType::ePhysicalDevice16BitStorageFeatures: return "PhysicalDevice16BitStorageFeatures"; + case StructureType::eMemoryDedicatedRequirements: return "MemoryDedicatedRequirements"; + case StructureType::eMemoryDedicatedAllocateInfo: return "MemoryDedicatedAllocateInfo"; + case StructureType::eMemoryAllocateFlagsInfo: return "MemoryAllocateFlagsInfo"; + case StructureType::eDeviceGroupRenderPassBeginInfo: return "DeviceGroupRenderPassBeginInfo"; + case StructureType::eDeviceGroupCommandBufferBeginInfo: return "DeviceGroupCommandBufferBeginInfo"; + case StructureType::eDeviceGroupSubmitInfo: return "DeviceGroupSubmitInfo"; + case StructureType::eDeviceGroupBindSparseInfo: return "DeviceGroupBindSparseInfo"; + case StructureType::eBindBufferMemoryDeviceGroupInfo: return "BindBufferMemoryDeviceGroupInfo"; + case StructureType::eBindImageMemoryDeviceGroupInfo: return "BindImageMemoryDeviceGroupInfo"; + case StructureType::ePhysicalDeviceGroupProperties: return "PhysicalDeviceGroupProperties"; + case StructureType::eDeviceGroupDeviceCreateInfo: return "DeviceGroupDeviceCreateInfo"; + case StructureType::eBufferMemoryRequirementsInfo2: return "BufferMemoryRequirementsInfo2"; + case StructureType::eImageMemoryRequirementsInfo2: return "ImageMemoryRequirementsInfo2"; + case StructureType::eImageSparseMemoryRequirementsInfo2: return "ImageSparseMemoryRequirementsInfo2"; + case StructureType::eMemoryRequirements2: return "MemoryRequirements2"; + case StructureType::eSparseImageMemoryRequirements2: return "SparseImageMemoryRequirements2"; + case StructureType::ePhysicalDeviceFeatures2: return "PhysicalDeviceFeatures2"; + case StructureType::ePhysicalDeviceProperties2: return "PhysicalDeviceProperties2"; + case StructureType::eFormatProperties2: return "FormatProperties2"; + case StructureType::eImageFormatProperties2: return "ImageFormatProperties2"; + case StructureType::ePhysicalDeviceImageFormatInfo2: return "PhysicalDeviceImageFormatInfo2"; + case StructureType::eQueueFamilyProperties2: return "QueueFamilyProperties2"; + case StructureType::ePhysicalDeviceMemoryProperties2: return "PhysicalDeviceMemoryProperties2"; + case StructureType::eSparseImageFormatProperties2: return "SparseImageFormatProperties2"; + case StructureType::ePhysicalDeviceSparseImageFormatInfo2: return "PhysicalDeviceSparseImageFormatInfo2"; + case StructureType::ePhysicalDevicePointClippingProperties: return "PhysicalDevicePointClippingProperties"; + case StructureType::eRenderPassInputAttachmentAspectCreateInfo: + return "RenderPassInputAttachmentAspectCreateInfo"; + case StructureType::eImageViewUsageCreateInfo: return "ImageViewUsageCreateInfo"; + case StructureType::ePipelineTessellationDomainOriginStateCreateInfo: + return "PipelineTessellationDomainOriginStateCreateInfo"; + case StructureType::eRenderPassMultiviewCreateInfo: return "RenderPassMultiviewCreateInfo"; + case StructureType::ePhysicalDeviceMultiviewFeatures: return "PhysicalDeviceMultiviewFeatures"; + case StructureType::ePhysicalDeviceMultiviewProperties: return "PhysicalDeviceMultiviewProperties"; + case StructureType::ePhysicalDeviceVariablePointersFeatures: return "PhysicalDeviceVariablePointersFeatures"; + case StructureType::eProtectedSubmitInfo: return "ProtectedSubmitInfo"; + case StructureType::ePhysicalDeviceProtectedMemoryFeatures: return "PhysicalDeviceProtectedMemoryFeatures"; + case StructureType::ePhysicalDeviceProtectedMemoryProperties: return "PhysicalDeviceProtectedMemoryProperties"; + case StructureType::eDeviceQueueInfo2: return "DeviceQueueInfo2"; + case StructureType::eSamplerYcbcrConversionCreateInfo: return "SamplerYcbcrConversionCreateInfo"; + case StructureType::eSamplerYcbcrConversionInfo: return "SamplerYcbcrConversionInfo"; + case StructureType::eBindImagePlaneMemoryInfo: return "BindImagePlaneMemoryInfo"; + case StructureType::eImagePlaneMemoryRequirementsInfo: return "ImagePlaneMemoryRequirementsInfo"; + case StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures: + return "PhysicalDeviceSamplerYcbcrConversionFeatures"; + case StructureType::eSamplerYcbcrConversionImageFormatProperties: + return "SamplerYcbcrConversionImageFormatProperties"; + case StructureType::eDescriptorUpdateTemplateCreateInfo: return "DescriptorUpdateTemplateCreateInfo"; + case StructureType::ePhysicalDeviceExternalImageFormatInfo: return "PhysicalDeviceExternalImageFormatInfo"; + case StructureType::eExternalImageFormatProperties: return "ExternalImageFormatProperties"; + case StructureType::ePhysicalDeviceExternalBufferInfo: return "PhysicalDeviceExternalBufferInfo"; + case StructureType::eExternalBufferProperties: return "ExternalBufferProperties"; + case StructureType::ePhysicalDeviceIdProperties: return "PhysicalDeviceIdProperties"; + case StructureType::eExternalMemoryBufferCreateInfo: return "ExternalMemoryBufferCreateInfo"; + case StructureType::eExternalMemoryImageCreateInfo: return "ExternalMemoryImageCreateInfo"; + case StructureType::eExportMemoryAllocateInfo: return "ExportMemoryAllocateInfo"; + case StructureType::ePhysicalDeviceExternalFenceInfo: return "PhysicalDeviceExternalFenceInfo"; + case StructureType::eExternalFenceProperties: return "ExternalFenceProperties"; + case StructureType::eExportFenceCreateInfo: return "ExportFenceCreateInfo"; + case StructureType::eExportSemaphoreCreateInfo: return "ExportSemaphoreCreateInfo"; + case StructureType::ePhysicalDeviceExternalSemaphoreInfo: return "PhysicalDeviceExternalSemaphoreInfo"; + case StructureType::eExternalSemaphoreProperties: return "ExternalSemaphoreProperties"; + case StructureType::ePhysicalDeviceMaintenance3Properties: return "PhysicalDeviceMaintenance3Properties"; + case StructureType::eDescriptorSetLayoutSupport: return "DescriptorSetLayoutSupport"; + case StructureType::ePhysicalDeviceShaderDrawParametersFeatures: + return "PhysicalDeviceShaderDrawParametersFeatures"; + case StructureType::ePhysicalDeviceVulkan11Features: return "PhysicalDeviceVulkan11Features"; + case StructureType::ePhysicalDeviceVulkan11Properties: return "PhysicalDeviceVulkan11Properties"; + case StructureType::ePhysicalDeviceVulkan12Features: return "PhysicalDeviceVulkan12Features"; + case StructureType::ePhysicalDeviceVulkan12Properties: return "PhysicalDeviceVulkan12Properties"; + case StructureType::eImageFormatListCreateInfo: return "ImageFormatListCreateInfo"; + case StructureType::eAttachmentDescription2: return "AttachmentDescription2"; + case StructureType::eAttachmentReference2: return "AttachmentReference2"; + case StructureType::eSubpassDescription2: return "SubpassDescription2"; + case StructureType::eSubpassDependency2: return "SubpassDependency2"; + case StructureType::eRenderPassCreateInfo2: return "RenderPassCreateInfo2"; + case StructureType::eSubpassBeginInfo: return "SubpassBeginInfo"; + case StructureType::eSubpassEndInfo: return "SubpassEndInfo"; + case StructureType::ePhysicalDevice8BitStorageFeatures: return "PhysicalDevice8BitStorageFeatures"; + case StructureType::ePhysicalDeviceDriverProperties: return "PhysicalDeviceDriverProperties"; + case StructureType::ePhysicalDeviceShaderAtomicInt64Features: return "PhysicalDeviceShaderAtomicInt64Features"; + case StructureType::ePhysicalDeviceShaderFloat16Int8Features: return "PhysicalDeviceShaderFloat16Int8Features"; + case StructureType::ePhysicalDeviceFloatControlsProperties: return "PhysicalDeviceFloatControlsProperties"; + case StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo: + return "DescriptorSetLayoutBindingFlagsCreateInfo"; + case StructureType::ePhysicalDeviceDescriptorIndexingFeatures: return "PhysicalDeviceDescriptorIndexingFeatures"; + case StructureType::ePhysicalDeviceDescriptorIndexingProperties: + return "PhysicalDeviceDescriptorIndexingProperties"; + case StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo: + return "DescriptorSetVariableDescriptorCountAllocateInfo"; + case StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport: + return "DescriptorSetVariableDescriptorCountLayoutSupport"; + case StructureType::ePhysicalDeviceDepthStencilResolveProperties: + return "PhysicalDeviceDepthStencilResolveProperties"; + case StructureType::eSubpassDescriptionDepthStencilResolve: return "SubpassDescriptionDepthStencilResolve"; + case StructureType::ePhysicalDeviceScalarBlockLayoutFeatures: return "PhysicalDeviceScalarBlockLayoutFeatures"; + case StructureType::eImageStencilUsageCreateInfo: return "ImageStencilUsageCreateInfo"; + case StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties: + return "PhysicalDeviceSamplerFilterMinmaxProperties"; + case StructureType::eSamplerReductionModeCreateInfo: return "SamplerReductionModeCreateInfo"; + case StructureType::ePhysicalDeviceVulkanMemoryModelFeatures: return "PhysicalDeviceVulkanMemoryModelFeatures"; + case StructureType::ePhysicalDeviceImagelessFramebufferFeatures: + return "PhysicalDeviceImagelessFramebufferFeatures"; + case StructureType::eFramebufferAttachmentsCreateInfo: return "FramebufferAttachmentsCreateInfo"; + case StructureType::eFramebufferAttachmentImageInfo: return "FramebufferAttachmentImageInfo"; + case StructureType::eRenderPassAttachmentBeginInfo: return "RenderPassAttachmentBeginInfo"; + case StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures: + return "PhysicalDeviceUniformBufferStandardLayoutFeatures"; + case StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures: + return "PhysicalDeviceShaderSubgroupExtendedTypesFeatures"; + case StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures: + return "PhysicalDeviceSeparateDepthStencilLayoutsFeatures"; + case StructureType::eAttachmentReferenceStencilLayout: return "AttachmentReferenceStencilLayout"; + case StructureType::eAttachmentDescriptionStencilLayout: return "AttachmentDescriptionStencilLayout"; + case StructureType::ePhysicalDeviceHostQueryResetFeatures: return "PhysicalDeviceHostQueryResetFeatures"; + case StructureType::ePhysicalDeviceTimelineSemaphoreFeatures: return "PhysicalDeviceTimelineSemaphoreFeatures"; + case StructureType::ePhysicalDeviceTimelineSemaphoreProperties: + return "PhysicalDeviceTimelineSemaphoreProperties"; + case StructureType::eSemaphoreTypeCreateInfo: return "SemaphoreTypeCreateInfo"; + case StructureType::eTimelineSemaphoreSubmitInfo: return "TimelineSemaphoreSubmitInfo"; + case StructureType::eSemaphoreWaitInfo: return "SemaphoreWaitInfo"; + case StructureType::eSemaphoreSignalInfo: return "SemaphoreSignalInfo"; + case StructureType::ePhysicalDeviceBufferDeviceAddressFeatures: + return "PhysicalDeviceBufferDeviceAddressFeatures"; + case StructureType::eBufferDeviceAddressInfo: return "BufferDeviceAddressInfo"; + case StructureType::eBufferOpaqueCaptureAddressCreateInfo: return "BufferOpaqueCaptureAddressCreateInfo"; + case StructureType::eMemoryOpaqueCaptureAddressAllocateInfo: return "MemoryOpaqueCaptureAddressAllocateInfo"; + case StructureType::eDeviceMemoryOpaqueCaptureAddressInfo: return "DeviceMemoryOpaqueCaptureAddressInfo"; + case StructureType::ePhysicalDeviceVulkan13Features: return "PhysicalDeviceVulkan13Features"; + case StructureType::ePhysicalDeviceVulkan13Properties: return "PhysicalDeviceVulkan13Properties"; + case StructureType::ePipelineCreationFeedbackCreateInfo: return "PipelineCreationFeedbackCreateInfo"; + case StructureType::ePhysicalDeviceShaderTerminateInvocationFeatures: + return "PhysicalDeviceShaderTerminateInvocationFeatures"; + case StructureType::ePhysicalDeviceToolProperties: return "PhysicalDeviceToolProperties"; + case StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeatures: + return "PhysicalDeviceShaderDemoteToHelperInvocationFeatures"; + case StructureType::ePhysicalDevicePrivateDataFeatures: return "PhysicalDevicePrivateDataFeatures"; + case StructureType::eDevicePrivateDataCreateInfo: return "DevicePrivateDataCreateInfo"; + case StructureType::ePrivateDataSlotCreateInfo: return "PrivateDataSlotCreateInfo"; + case StructureType::ePhysicalDevicePipelineCreationCacheControlFeatures: + return "PhysicalDevicePipelineCreationCacheControlFeatures"; + case StructureType::eMemoryBarrier2: return "MemoryBarrier2"; + case StructureType::eBufferMemoryBarrier2: return "BufferMemoryBarrier2"; + case StructureType::eImageMemoryBarrier2: return "ImageMemoryBarrier2"; + case StructureType::eDependencyInfo: return "DependencyInfo"; + case StructureType::eSubmitInfo2: return "SubmitInfo2"; + case StructureType::eSemaphoreSubmitInfo: return "SemaphoreSubmitInfo"; + case StructureType::eCommandBufferSubmitInfo: return "CommandBufferSubmitInfo"; + case StructureType::ePhysicalDeviceSynchronization2Features: return "PhysicalDeviceSynchronization2Features"; + case StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures: + return "PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures"; + case StructureType::ePhysicalDeviceImageRobustnessFeatures: return "PhysicalDeviceImageRobustnessFeatures"; + case StructureType::eCopyBufferInfo2: return "CopyBufferInfo2"; + case StructureType::eCopyImageInfo2: return "CopyImageInfo2"; + case StructureType::eCopyBufferToImageInfo2: return "CopyBufferToImageInfo2"; + case StructureType::eCopyImageToBufferInfo2: return "CopyImageToBufferInfo2"; + case StructureType::eBlitImageInfo2: return "BlitImageInfo2"; + case StructureType::eResolveImageInfo2: return "ResolveImageInfo2"; + case StructureType::eBufferCopy2: return "BufferCopy2"; + case StructureType::eImageCopy2: return "ImageCopy2"; + case StructureType::eImageBlit2: return "ImageBlit2"; + case StructureType::eBufferImageCopy2: return "BufferImageCopy2"; + case StructureType::eImageResolve2: return "ImageResolve2"; + case StructureType::ePhysicalDeviceSubgroupSizeControlProperties: + return "PhysicalDeviceSubgroupSizeControlProperties"; + case StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfo: + return "PipelineShaderStageRequiredSubgroupSizeCreateInfo"; + case StructureType::ePhysicalDeviceSubgroupSizeControlFeatures: + return "PhysicalDeviceSubgroupSizeControlFeatures"; + case StructureType::ePhysicalDeviceInlineUniformBlockFeatures: return "PhysicalDeviceInlineUniformBlockFeatures"; + case StructureType::ePhysicalDeviceInlineUniformBlockProperties: + return "PhysicalDeviceInlineUniformBlockProperties"; + case StructureType::eWriteDescriptorSetInlineUniformBlock: return "WriteDescriptorSetInlineUniformBlock"; + case StructureType::eDescriptorPoolInlineUniformBlockCreateInfo: + return "DescriptorPoolInlineUniformBlockCreateInfo"; + case StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeatures: + return "PhysicalDeviceTextureCompressionAstcHdrFeatures"; + case StructureType::eRenderingInfo: return "RenderingInfo"; + case StructureType::eRenderingAttachmentInfo: return "RenderingAttachmentInfo"; + case StructureType::ePipelineRenderingCreateInfo: return "PipelineRenderingCreateInfo"; + case StructureType::ePhysicalDeviceDynamicRenderingFeatures: return "PhysicalDeviceDynamicRenderingFeatures"; + case StructureType::eCommandBufferInheritanceRenderingInfo: return "CommandBufferInheritanceRenderingInfo"; + case StructureType::ePhysicalDeviceShaderIntegerDotProductFeatures: + return "PhysicalDeviceShaderIntegerDotProductFeatures"; + case StructureType::ePhysicalDeviceShaderIntegerDotProductProperties: + return "PhysicalDeviceShaderIntegerDotProductProperties"; + case StructureType::ePhysicalDeviceTexelBufferAlignmentProperties: + return "PhysicalDeviceTexelBufferAlignmentProperties"; + case StructureType::eFormatProperties3: return "FormatProperties3"; + case StructureType::ePhysicalDeviceMaintenance4Features: return "PhysicalDeviceMaintenance4Features"; + case StructureType::ePhysicalDeviceMaintenance4Properties: return "PhysicalDeviceMaintenance4Properties"; + case StructureType::eDeviceBufferMemoryRequirements: return "DeviceBufferMemoryRequirements"; + case StructureType::eDeviceImageMemoryRequirements: return "DeviceImageMemoryRequirements"; + case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR"; + case StructureType::ePresentInfoKHR: return "PresentInfoKHR"; + case StructureType::eDeviceGroupPresentCapabilitiesKHR: return "DeviceGroupPresentCapabilitiesKHR"; + case StructureType::eImageSwapchainCreateInfoKHR: return "ImageSwapchainCreateInfoKHR"; + case StructureType::eBindImageMemorySwapchainInfoKHR: return "BindImageMemorySwapchainInfoKHR"; + case StructureType::eAcquireNextImageInfoKHR: return "AcquireNextImageInfoKHR"; + case StructureType::eDeviceGroupPresentInfoKHR: return "DeviceGroupPresentInfoKHR"; + case StructureType::eDeviceGroupSwapchainCreateInfoKHR: return "DeviceGroupSwapchainCreateInfoKHR"; + case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR"; + case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR"; + case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR"; +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR"; +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ +#if defined( VK_USE_PLATFORM_XCB_KHR ) + case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR"; +#endif /*VK_USE_PLATFORM_XCB_KHR*/ +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR"; +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR"; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR"; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT"; + case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: + return "PipelineRasterizationStateRasterizationOrderAMD"; + case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT"; + case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT"; + case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case StructureType::eVideoProfileKHR: return "VideoProfileKHR"; + case StructureType::eVideoCapabilitiesKHR: return "VideoCapabilitiesKHR"; + case StructureType::eVideoPictureResourceKHR: return "VideoPictureResourceKHR"; + case StructureType::eVideoGetMemoryPropertiesKHR: return "VideoGetMemoryPropertiesKHR"; + case StructureType::eVideoBindMemoryKHR: return "VideoBindMemoryKHR"; + case StructureType::eVideoSessionCreateInfoKHR: return "VideoSessionCreateInfoKHR"; + case StructureType::eVideoSessionParametersCreateInfoKHR: return "VideoSessionParametersCreateInfoKHR"; + case StructureType::eVideoSessionParametersUpdateInfoKHR: return "VideoSessionParametersUpdateInfoKHR"; + case StructureType::eVideoBeginCodingInfoKHR: return "VideoBeginCodingInfoKHR"; + case StructureType::eVideoEndCodingInfoKHR: return "VideoEndCodingInfoKHR"; + case StructureType::eVideoCodingControlInfoKHR: return "VideoCodingControlInfoKHR"; + case StructureType::eVideoReferenceSlotKHR: return "VideoReferenceSlotKHR"; + case StructureType::eVideoQueueFamilyProperties2KHR: return "VideoQueueFamilyProperties2KHR"; + case StructureType::eVideoProfilesKHR: return "VideoProfilesKHR"; + case StructureType::ePhysicalDeviceVideoFormatInfoKHR: return "PhysicalDeviceVideoFormatInfoKHR"; + case StructureType::eVideoFormatPropertiesKHR: return "VideoFormatPropertiesKHR"; + case StructureType::eQueueFamilyQueryResultStatusProperties2KHR: + return "QueueFamilyQueryResultStatusProperties2KHR"; + case StructureType::eVideoDecodeInfoKHR: return "VideoDecodeInfoKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV"; + case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV"; + case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV"; + case StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT: + return "PhysicalDeviceTransformFeedbackFeaturesEXT"; + case StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT: + return "PhysicalDeviceTransformFeedbackPropertiesEXT"; + case StructureType::ePipelineRasterizationStateStreamCreateInfoEXT: + return "PipelineRasterizationStateStreamCreateInfoEXT"; + case StructureType::eCuModuleCreateInfoNVX: return "CuModuleCreateInfoNVX"; + case StructureType::eCuFunctionCreateInfoNVX: return "CuFunctionCreateInfoNVX"; + case StructureType::eCuLaunchInfoNVX: return "CuLaunchInfoNVX"; + case StructureType::eImageViewHandleInfoNVX: return "ImageViewHandleInfoNVX"; + case StructureType::eImageViewAddressPropertiesNVX: return "ImageViewAddressPropertiesNVX"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case StructureType::eVideoEncodeH264CapabilitiesEXT: return "VideoEncodeH264CapabilitiesEXT"; + case StructureType::eVideoEncodeH264SessionCreateInfoEXT: return "VideoEncodeH264SessionCreateInfoEXT"; + case StructureType::eVideoEncodeH264SessionParametersCreateInfoEXT: + return "VideoEncodeH264SessionParametersCreateInfoEXT"; + case StructureType::eVideoEncodeH264SessionParametersAddInfoEXT: + return "VideoEncodeH264SessionParametersAddInfoEXT"; + case StructureType::eVideoEncodeH264VclFrameInfoEXT: return "VideoEncodeH264VclFrameInfoEXT"; + case StructureType::eVideoEncodeH264DpbSlotInfoEXT: return "VideoEncodeH264DpbSlotInfoEXT"; + case StructureType::eVideoEncodeH264NaluSliceEXT: return "VideoEncodeH264NaluSliceEXT"; + case StructureType::eVideoEncodeH264EmitPictureParametersEXT: return "VideoEncodeH264EmitPictureParametersEXT"; + case StructureType::eVideoEncodeH264ProfileEXT: return "VideoEncodeH264ProfileEXT"; + case StructureType::eVideoEncodeH264RateControlInfoEXT: return "VideoEncodeH264RateControlInfoEXT"; + case StructureType::eVideoEncodeH264RateControlLayerInfoEXT: return "VideoEncodeH264RateControlLayerInfoEXT"; + case StructureType::eVideoEncodeH265CapabilitiesEXT: return "VideoEncodeH265CapabilitiesEXT"; + case StructureType::eVideoEncodeH265SessionCreateInfoEXT: return "VideoEncodeH265SessionCreateInfoEXT"; + case StructureType::eVideoEncodeH265SessionParametersCreateInfoEXT: + return "VideoEncodeH265SessionParametersCreateInfoEXT"; + case StructureType::eVideoEncodeH265SessionParametersAddInfoEXT: + return "VideoEncodeH265SessionParametersAddInfoEXT"; + case StructureType::eVideoEncodeH265VclFrameInfoEXT: return "VideoEncodeH265VclFrameInfoEXT"; + case StructureType::eVideoEncodeH265DpbSlotInfoEXT: return "VideoEncodeH265DpbSlotInfoEXT"; + case StructureType::eVideoEncodeH265NaluSliceEXT: return "VideoEncodeH265NaluSliceEXT"; + case StructureType::eVideoEncodeH265EmitPictureParametersEXT: return "VideoEncodeH265EmitPictureParametersEXT"; + case StructureType::eVideoEncodeH265ProfileEXT: return "VideoEncodeH265ProfileEXT"; + case StructureType::eVideoEncodeH265ReferenceListsEXT: return "VideoEncodeH265ReferenceListsEXT"; + case StructureType::eVideoEncodeH265RateControlInfoEXT: return "VideoEncodeH265RateControlInfoEXT"; + case StructureType::eVideoEncodeH265RateControlLayerInfoEXT: return "VideoEncodeH265RateControlLayerInfoEXT"; + case StructureType::eVideoDecodeH264CapabilitiesEXT: return "VideoDecodeH264CapabilitiesEXT"; + case StructureType::eVideoDecodeH264SessionCreateInfoEXT: return "VideoDecodeH264SessionCreateInfoEXT"; + case StructureType::eVideoDecodeH264PictureInfoEXT: return "VideoDecodeH264PictureInfoEXT"; + case StructureType::eVideoDecodeH264MvcEXT: return "VideoDecodeH264MvcEXT"; + case StructureType::eVideoDecodeH264ProfileEXT: return "VideoDecodeH264ProfileEXT"; + case StructureType::eVideoDecodeH264SessionParametersCreateInfoEXT: + return "VideoDecodeH264SessionParametersCreateInfoEXT"; + case StructureType::eVideoDecodeH264SessionParametersAddInfoEXT: + return "VideoDecodeH264SessionParametersAddInfoEXT"; + case StructureType::eVideoDecodeH264DpbSlotInfoEXT: return "VideoDecodeH264DpbSlotInfoEXT"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case StructureType::eTextureLodGatherFormatPropertiesAMD: return "TextureLodGatherFormatPropertiesAMD"; + case StructureType::eRenderingFragmentShadingRateAttachmentInfoKHR: + return "RenderingFragmentShadingRateAttachmentInfoKHR"; + case StructureType::eRenderingFragmentDensityMapAttachmentInfoEXT: + return "RenderingFragmentDensityMapAttachmentInfoEXT"; + case StructureType::eAttachmentSampleCountInfoAMD: return "AttachmentSampleCountInfoAMD"; + case StructureType::eMultiviewPerViewAttributesInfoNVX: return "MultiviewPerViewAttributesInfoNVX"; +#if defined( VK_USE_PLATFORM_GGP ) + case StructureType::eStreamDescriptorSurfaceCreateInfoGGP: return "StreamDescriptorSurfaceCreateInfoGGP"; +#endif /*VK_USE_PLATFORM_GGP*/ + case StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV: + return "PhysicalDeviceCornerSampledImageFeaturesNV"; + case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV"; + case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV"; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV"; + case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV"; + case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV"; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT"; +#if defined( VK_USE_PLATFORM_VI_NN ) + case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN"; +#endif /*VK_USE_PLATFORM_VI_NN*/ + case StructureType::eImageViewAstcDecodeModeEXT: return "ImageViewAstcDecodeModeEXT"; + case StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT: return "PhysicalDeviceAstcDecodeFeaturesEXT"; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + case StructureType::eImportMemoryWin32HandleInfoKHR: return "ImportMemoryWin32HandleInfoKHR"; + case StructureType::eExportMemoryWin32HandleInfoKHR: return "ExportMemoryWin32HandleInfoKHR"; + case StructureType::eMemoryWin32HandlePropertiesKHR: return "MemoryWin32HandlePropertiesKHR"; + case StructureType::eMemoryGetWin32HandleInfoKHR: return "MemoryGetWin32HandleInfoKHR"; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + case StructureType::eImportMemoryFdInfoKHR: return "ImportMemoryFdInfoKHR"; + case StructureType::eMemoryFdPropertiesKHR: return "MemoryFdPropertiesKHR"; + case StructureType::eMemoryGetFdInfoKHR: return "MemoryGetFdInfoKHR"; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR: return "Win32KeyedMutexAcquireReleaseInfoKHR"; + case StructureType::eImportSemaphoreWin32HandleInfoKHR: return "ImportSemaphoreWin32HandleInfoKHR"; + case StructureType::eExportSemaphoreWin32HandleInfoKHR: return "ExportSemaphoreWin32HandleInfoKHR"; + case StructureType::eD3D12FenceSubmitInfoKHR: return "D3D12FenceSubmitInfoKHR"; + case StructureType::eSemaphoreGetWin32HandleInfoKHR: return "SemaphoreGetWin32HandleInfoKHR"; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + case StructureType::eImportSemaphoreFdInfoKHR: return "ImportSemaphoreFdInfoKHR"; + case StructureType::eSemaphoreGetFdInfoKHR: return "SemaphoreGetFdInfoKHR"; + case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: + return "PhysicalDevicePushDescriptorPropertiesKHR"; + case StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT: + return "CommandBufferInheritanceConditionalRenderingInfoEXT"; + case StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT: + return "PhysicalDeviceConditionalRenderingFeaturesEXT"; + case StructureType::eConditionalRenderingBeginInfoEXT: return "ConditionalRenderingBeginInfoEXT"; + case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR"; + case StructureType::ePipelineViewportWScalingStateCreateInfoNV: + return "PipelineViewportWScalingStateCreateInfoNV"; + case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT"; + case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT"; + case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT"; + case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT"; + case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT"; + case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE"; + case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: + return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX"; + case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV"; + case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: + return "PhysicalDeviceDiscardRectanglePropertiesEXT"; + case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: + return "PipelineDiscardRectangleStateCreateInfoEXT"; + case StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT: + return "PhysicalDeviceConservativeRasterizationPropertiesEXT"; + case StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT: + return "PipelineRasterizationConservativeStateCreateInfoEXT"; + case StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT: return "PhysicalDeviceDepthClipEnableFeaturesEXT"; + case StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT: + return "PipelineRasterizationDepthClipStateCreateInfoEXT"; + case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT"; + case StructureType::eSharedPresentSurfaceCapabilitiesKHR: return "SharedPresentSurfaceCapabilitiesKHR"; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + case StructureType::eImportFenceWin32HandleInfoKHR: return "ImportFenceWin32HandleInfoKHR"; + case StructureType::eExportFenceWin32HandleInfoKHR: return "ExportFenceWin32HandleInfoKHR"; + case StructureType::eFenceGetWin32HandleInfoKHR: return "FenceGetWin32HandleInfoKHR"; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + case StructureType::eImportFenceFdInfoKHR: return "ImportFenceFdInfoKHR"; + case StructureType::eFenceGetFdInfoKHR: return "FenceGetFdInfoKHR"; + case StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR: + return "PhysicalDevicePerformanceQueryFeaturesKHR"; + case StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR: + return "PhysicalDevicePerformanceQueryPropertiesKHR"; + case StructureType::eQueryPoolPerformanceCreateInfoKHR: return "QueryPoolPerformanceCreateInfoKHR"; + case StructureType::ePerformanceQuerySubmitInfoKHR: return "PerformanceQuerySubmitInfoKHR"; + case StructureType::eAcquireProfilingLockInfoKHR: return "AcquireProfilingLockInfoKHR"; + case StructureType::ePerformanceCounterKHR: return "PerformanceCounterKHR"; + case StructureType::ePerformanceCounterDescriptionKHR: return "PerformanceCounterDescriptionKHR"; + case StructureType::ePhysicalDeviceSurfaceInfo2KHR: return "PhysicalDeviceSurfaceInfo2KHR"; + case StructureType::eSurfaceCapabilities2KHR: return "SurfaceCapabilities2KHR"; + case StructureType::eSurfaceFormat2KHR: return "SurfaceFormat2KHR"; + case StructureType::eDisplayProperties2KHR: return "DisplayProperties2KHR"; + case StructureType::eDisplayPlaneProperties2KHR: return "DisplayPlaneProperties2KHR"; + case StructureType::eDisplayModeProperties2KHR: return "DisplayModeProperties2KHR"; + case StructureType::eDisplayPlaneInfo2KHR: return "DisplayPlaneInfo2KHR"; + case StructureType::eDisplayPlaneCapabilities2KHR: return "DisplayPlaneCapabilities2KHR"; +#if defined( VK_USE_PLATFORM_IOS_MVK ) + case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK"; +#endif /*VK_USE_PLATFORM_IOS_MVK*/ +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK"; +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + case StructureType::eDebugUtilsObjectNameInfoEXT: return "DebugUtilsObjectNameInfoEXT"; + case StructureType::eDebugUtilsObjectTagInfoEXT: return "DebugUtilsObjectTagInfoEXT"; + case StructureType::eDebugUtilsLabelEXT: return "DebugUtilsLabelEXT"; + case StructureType::eDebugUtilsMessengerCallbackDataEXT: return "DebugUtilsMessengerCallbackDataEXT"; + case StructureType::eDebugUtilsMessengerCreateInfoEXT: return "DebugUtilsMessengerCreateInfoEXT"; +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + case StructureType::eAndroidHardwareBufferUsageANDROID: return "AndroidHardwareBufferUsageANDROID"; + case StructureType::eAndroidHardwareBufferPropertiesANDROID: return "AndroidHardwareBufferPropertiesANDROID"; + case StructureType::eAndroidHardwareBufferFormatPropertiesANDROID: + return "AndroidHardwareBufferFormatPropertiesANDROID"; + case StructureType::eImportAndroidHardwareBufferInfoANDROID: return "ImportAndroidHardwareBufferInfoANDROID"; + case StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID: + return "MemoryGetAndroidHardwareBufferInfoANDROID"; + case StructureType::eExternalFormatANDROID: return "ExternalFormatANDROID"; + case StructureType::eAndroidHardwareBufferFormatProperties2ANDROID: + return "AndroidHardwareBufferFormatProperties2ANDROID"; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + case StructureType::eSampleLocationsInfoEXT: return "SampleLocationsInfoEXT"; + case StructureType::eRenderPassSampleLocationsBeginInfoEXT: return "RenderPassSampleLocationsBeginInfoEXT"; + case StructureType::ePipelineSampleLocationsStateCreateInfoEXT: + return "PipelineSampleLocationsStateCreateInfoEXT"; + case StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT: + return "PhysicalDeviceSampleLocationsPropertiesEXT"; + case StructureType::eMultisamplePropertiesEXT: return "MultisamplePropertiesEXT"; + case StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT: + return "PhysicalDeviceBlendOperationAdvancedFeaturesEXT"; + case StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT: + return "PhysicalDeviceBlendOperationAdvancedPropertiesEXT"; + case StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT: + return "PipelineColorBlendAdvancedStateCreateInfoEXT"; + case StructureType::ePipelineCoverageToColorStateCreateInfoNV: return "PipelineCoverageToColorStateCreateInfoNV"; + case StructureType::eWriteDescriptorSetAccelerationStructureKHR: + return "WriteDescriptorSetAccelerationStructureKHR"; + case StructureType::eAccelerationStructureBuildGeometryInfoKHR: + return "AccelerationStructureBuildGeometryInfoKHR"; + case StructureType::eAccelerationStructureDeviceAddressInfoKHR: + return "AccelerationStructureDeviceAddressInfoKHR"; + case StructureType::eAccelerationStructureGeometryAabbsDataKHR: + return "AccelerationStructureGeometryAabbsDataKHR"; + case StructureType::eAccelerationStructureGeometryInstancesDataKHR: + return "AccelerationStructureGeometryInstancesDataKHR"; + case StructureType::eAccelerationStructureGeometryTrianglesDataKHR: + return "AccelerationStructureGeometryTrianglesDataKHR"; + case StructureType::eAccelerationStructureGeometryKHR: return "AccelerationStructureGeometryKHR"; + case StructureType::eAccelerationStructureVersionInfoKHR: return "AccelerationStructureVersionInfoKHR"; + case StructureType::eCopyAccelerationStructureInfoKHR: return "CopyAccelerationStructureInfoKHR"; + case StructureType::eCopyAccelerationStructureToMemoryInfoKHR: return "CopyAccelerationStructureToMemoryInfoKHR"; + case StructureType::eCopyMemoryToAccelerationStructureInfoKHR: return "CopyMemoryToAccelerationStructureInfoKHR"; + case StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR: + return "PhysicalDeviceAccelerationStructureFeaturesKHR"; + case StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR: + return "PhysicalDeviceAccelerationStructurePropertiesKHR"; + case StructureType::eAccelerationStructureCreateInfoKHR: return "AccelerationStructureCreateInfoKHR"; + case StructureType::eAccelerationStructureBuildSizesInfoKHR: return "AccelerationStructureBuildSizesInfoKHR"; + case StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR: + return "PhysicalDeviceRayTracingPipelineFeaturesKHR"; + case StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR: + return "PhysicalDeviceRayTracingPipelinePropertiesKHR"; + case StructureType::eRayTracingPipelineCreateInfoKHR: return "RayTracingPipelineCreateInfoKHR"; + case StructureType::eRayTracingShaderGroupCreateInfoKHR: return "RayTracingShaderGroupCreateInfoKHR"; + case StructureType::eRayTracingPipelineInterfaceCreateInfoKHR: return "RayTracingPipelineInterfaceCreateInfoKHR"; + case StructureType::ePhysicalDeviceRayQueryFeaturesKHR: return "PhysicalDeviceRayQueryFeaturesKHR"; + case StructureType::ePipelineCoverageModulationStateCreateInfoNV: + return "PipelineCoverageModulationStateCreateInfoNV"; + case StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV: return "PhysicalDeviceShaderSmBuiltinsFeaturesNV"; + case StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV: + return "PhysicalDeviceShaderSmBuiltinsPropertiesNV"; + case StructureType::eDrmFormatModifierPropertiesListEXT: return "DrmFormatModifierPropertiesListEXT"; + case StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT: + return "PhysicalDeviceImageDrmFormatModifierInfoEXT"; + case StructureType::eImageDrmFormatModifierListCreateInfoEXT: return "ImageDrmFormatModifierListCreateInfoEXT"; + case StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT: + return "ImageDrmFormatModifierExplicitCreateInfoEXT"; + case StructureType::eImageDrmFormatModifierPropertiesEXT: return "ImageDrmFormatModifierPropertiesEXT"; + case StructureType::eDrmFormatModifierPropertiesList2EXT: return "DrmFormatModifierPropertiesList2EXT"; + case StructureType::eValidationCacheCreateInfoEXT: return "ValidationCacheCreateInfoEXT"; + case StructureType::eShaderModuleValidationCacheCreateInfoEXT: return "ShaderModuleValidationCacheCreateInfoEXT"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR: + return "PhysicalDevicePortabilitySubsetFeaturesKHR"; + case StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR: + return "PhysicalDevicePortabilitySubsetPropertiesKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV: + return "PipelineViewportShadingRateImageStateCreateInfoNV"; + case StructureType::ePhysicalDeviceShadingRateImageFeaturesNV: return "PhysicalDeviceShadingRateImageFeaturesNV"; + case StructureType::ePhysicalDeviceShadingRateImagePropertiesNV: + return "PhysicalDeviceShadingRateImagePropertiesNV"; + case StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV: + return "PipelineViewportCoarseSampleOrderStateCreateInfoNV"; + case StructureType::eRayTracingPipelineCreateInfoNV: return "RayTracingPipelineCreateInfoNV"; + case StructureType::eAccelerationStructureCreateInfoNV: return "AccelerationStructureCreateInfoNV"; + case StructureType::eGeometryNV: return "GeometryNV"; + case StructureType::eGeometryTrianglesNV: return "GeometryTrianglesNV"; + case StructureType::eGeometryAabbNV: return "GeometryAabbNV"; + case StructureType::eBindAccelerationStructureMemoryInfoNV: return "BindAccelerationStructureMemoryInfoNV"; + case StructureType::eWriteDescriptorSetAccelerationStructureNV: + return "WriteDescriptorSetAccelerationStructureNV"; + case StructureType::eAccelerationStructureMemoryRequirementsInfoNV: + return "AccelerationStructureMemoryRequirementsInfoNV"; + case StructureType::ePhysicalDeviceRayTracingPropertiesNV: return "PhysicalDeviceRayTracingPropertiesNV"; + case StructureType::eRayTracingShaderGroupCreateInfoNV: return "RayTracingShaderGroupCreateInfoNV"; + case StructureType::eAccelerationStructureInfoNV: return "AccelerationStructureInfoNV"; + case StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV: + return "PhysicalDeviceRepresentativeFragmentTestFeaturesNV"; + case StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV: + return "PipelineRepresentativeFragmentTestStateCreateInfoNV"; + case StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT: + return "PhysicalDeviceImageViewImageFormatInfoEXT"; + case StructureType::eFilterCubicImageViewImageFormatPropertiesEXT: + return "FilterCubicImageViewImageFormatPropertiesEXT"; + case StructureType::eImportMemoryHostPointerInfoEXT: return "ImportMemoryHostPointerInfoEXT"; + case StructureType::eMemoryHostPointerPropertiesEXT: return "MemoryHostPointerPropertiesEXT"; + case StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT: + return "PhysicalDeviceExternalMemoryHostPropertiesEXT"; + case StructureType::ePhysicalDeviceShaderClockFeaturesKHR: return "PhysicalDeviceShaderClockFeaturesKHR"; + case StructureType::ePipelineCompilerControlCreateInfoAMD: return "PipelineCompilerControlCreateInfoAMD"; + case StructureType::eCalibratedTimestampInfoEXT: return "CalibratedTimestampInfoEXT"; + case StructureType::ePhysicalDeviceShaderCorePropertiesAMD: return "PhysicalDeviceShaderCorePropertiesAMD"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case StructureType::eVideoDecodeH265CapabilitiesEXT: return "VideoDecodeH265CapabilitiesEXT"; + case StructureType::eVideoDecodeH265SessionCreateInfoEXT: return "VideoDecodeH265SessionCreateInfoEXT"; + case StructureType::eVideoDecodeH265SessionParametersCreateInfoEXT: + return "VideoDecodeH265SessionParametersCreateInfoEXT"; + case StructureType::eVideoDecodeH265SessionParametersAddInfoEXT: + return "VideoDecodeH265SessionParametersAddInfoEXT"; + case StructureType::eVideoDecodeH265ProfileEXT: return "VideoDecodeH265ProfileEXT"; + case StructureType::eVideoDecodeH265PictureInfoEXT: return "VideoDecodeH265PictureInfoEXT"; + case StructureType::eVideoDecodeH265DpbSlotInfoEXT: return "VideoDecodeH265DpbSlotInfoEXT"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case StructureType::eDeviceQueueGlobalPriorityCreateInfoKHR: return "DeviceQueueGlobalPriorityCreateInfoKHR"; + case StructureType::ePhysicalDeviceGlobalPriorityQueryFeaturesKHR: + return "PhysicalDeviceGlobalPriorityQueryFeaturesKHR"; + case StructureType::eQueueFamilyGlobalPriorityPropertiesKHR: return "QueueFamilyGlobalPriorityPropertiesKHR"; + case StructureType::eDeviceMemoryOverallocationCreateInfoAMD: return "DeviceMemoryOverallocationCreateInfoAMD"; + case StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT: + return "PhysicalDeviceVertexAttributeDivisorPropertiesEXT"; + case StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT: + return "PipelineVertexInputDivisorStateCreateInfoEXT"; + case StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT: + return "PhysicalDeviceVertexAttributeDivisorFeaturesEXT"; +#if defined( VK_USE_PLATFORM_GGP ) + case StructureType::ePresentFrameTokenGGP: return "PresentFrameTokenGGP"; +#endif /*VK_USE_PLATFORM_GGP*/ + case StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV: + return "PhysicalDeviceComputeShaderDerivativesFeaturesNV"; + case StructureType::ePhysicalDeviceMeshShaderFeaturesNV: return "PhysicalDeviceMeshShaderFeaturesNV"; + case StructureType::ePhysicalDeviceMeshShaderPropertiesNV: return "PhysicalDeviceMeshShaderPropertiesNV"; + case StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesNV: + return "PhysicalDeviceFragmentShaderBarycentricFeaturesNV"; + case StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV: + return "PhysicalDeviceShaderImageFootprintFeaturesNV"; + case StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV: + return "PipelineViewportExclusiveScissorStateCreateInfoNV"; + case StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV: return "PhysicalDeviceExclusiveScissorFeaturesNV"; + case StructureType::eCheckpointDataNV: return "CheckpointDataNV"; + case StructureType::eQueueFamilyCheckpointPropertiesNV: return "QueueFamilyCheckpointPropertiesNV"; + case StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL: + return "PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL"; + case StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL: return "QueryPoolPerformanceQueryCreateInfoINTEL"; + case StructureType::eInitializePerformanceApiInfoINTEL: return "InitializePerformanceApiInfoINTEL"; + case StructureType::ePerformanceMarkerInfoINTEL: return "PerformanceMarkerInfoINTEL"; + case StructureType::ePerformanceStreamMarkerInfoINTEL: return "PerformanceStreamMarkerInfoINTEL"; + case StructureType::ePerformanceOverrideInfoINTEL: return "PerformanceOverrideInfoINTEL"; + case StructureType::ePerformanceConfigurationAcquireInfoINTEL: return "PerformanceConfigurationAcquireInfoINTEL"; + case StructureType::ePhysicalDevicePciBusInfoPropertiesEXT: return "PhysicalDevicePciBusInfoPropertiesEXT"; + case StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD: return "DisplayNativeHdrSurfaceCapabilitiesAMD"; + case StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD: return "SwapchainDisplayNativeHdrCreateInfoAMD"; +#if defined( VK_USE_PLATFORM_FUCHSIA ) + case StructureType::eImagepipeSurfaceCreateInfoFUCHSIA: return "ImagepipeSurfaceCreateInfoFUCHSIA"; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ +#if defined( VK_USE_PLATFORM_METAL_EXT ) + case StructureType::eMetalSurfaceCreateInfoEXT: return "MetalSurfaceCreateInfoEXT"; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + case StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT: + return "PhysicalDeviceFragmentDensityMapFeaturesEXT"; + case StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT: + return "PhysicalDeviceFragmentDensityMapPropertiesEXT"; + case StructureType::eRenderPassFragmentDensityMapCreateInfoEXT: + return "RenderPassFragmentDensityMapCreateInfoEXT"; + case StructureType::eFragmentShadingRateAttachmentInfoKHR: return "FragmentShadingRateAttachmentInfoKHR"; + case StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR: + return "PipelineFragmentShadingRateStateCreateInfoKHR"; + case StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR: + return "PhysicalDeviceFragmentShadingRatePropertiesKHR"; + case StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR: + return "PhysicalDeviceFragmentShadingRateFeaturesKHR"; + case StructureType::ePhysicalDeviceFragmentShadingRateKHR: return "PhysicalDeviceFragmentShadingRateKHR"; + case StructureType::ePhysicalDeviceShaderCoreProperties2AMD: return "PhysicalDeviceShaderCoreProperties2AMD"; + case StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD: return "PhysicalDeviceCoherentMemoryFeaturesAMD"; + case StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT: + return "PhysicalDeviceShaderImageAtomicInt64FeaturesEXT"; + case StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT: return "PhysicalDeviceMemoryBudgetPropertiesEXT"; + case StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT: return "PhysicalDeviceMemoryPriorityFeaturesEXT"; + case StructureType::eMemoryPriorityAllocateInfoEXT: return "MemoryPriorityAllocateInfoEXT"; + case StructureType::eSurfaceProtectedCapabilitiesKHR: return "SurfaceProtectedCapabilitiesKHR"; + case StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV: + return "PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV"; + case StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT: + return "PhysicalDeviceBufferDeviceAddressFeaturesEXT"; + case StructureType::eBufferDeviceAddressCreateInfoEXT: return "BufferDeviceAddressCreateInfoEXT"; + case StructureType::eValidationFeaturesEXT: return "ValidationFeaturesEXT"; + case StructureType::ePhysicalDevicePresentWaitFeaturesKHR: return "PhysicalDevicePresentWaitFeaturesKHR"; + case StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV: + return "PhysicalDeviceCooperativeMatrixFeaturesNV"; + case StructureType::eCooperativeMatrixPropertiesNV: return "CooperativeMatrixPropertiesNV"; + case StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV: + return "PhysicalDeviceCooperativeMatrixPropertiesNV"; + case StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV: + return "PhysicalDeviceCoverageReductionModeFeaturesNV"; + case StructureType::ePipelineCoverageReductionStateCreateInfoNV: + return "PipelineCoverageReductionStateCreateInfoNV"; + case StructureType::eFramebufferMixedSamplesCombinationNV: return "FramebufferMixedSamplesCombinationNV"; + case StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT: + return "PhysicalDeviceFragmentShaderInterlockFeaturesEXT"; + case StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT: + return "PhysicalDeviceYcbcrImageArraysFeaturesEXT"; + case StructureType::ePhysicalDeviceProvokingVertexFeaturesEXT: return "PhysicalDeviceProvokingVertexFeaturesEXT"; + case StructureType::ePipelineRasterizationProvokingVertexStateCreateInfoEXT: + return "PipelineRasterizationProvokingVertexStateCreateInfoEXT"; + case StructureType::ePhysicalDeviceProvokingVertexPropertiesEXT: + return "PhysicalDeviceProvokingVertexPropertiesEXT"; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + case StructureType::eSurfaceFullScreenExclusiveInfoEXT: return "SurfaceFullScreenExclusiveInfoEXT"; + case StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT: + return "SurfaceCapabilitiesFullScreenExclusiveEXT"; + case StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT: return "SurfaceFullScreenExclusiveWin32InfoEXT"; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + case StructureType::eHeadlessSurfaceCreateInfoEXT: return "HeadlessSurfaceCreateInfoEXT"; + case StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT: + return "PhysicalDeviceLineRasterizationFeaturesEXT"; + case StructureType::ePipelineRasterizationLineStateCreateInfoEXT: + return "PipelineRasterizationLineStateCreateInfoEXT"; + case StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT: + return "PhysicalDeviceLineRasterizationPropertiesEXT"; + case StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT: + return "PhysicalDeviceShaderAtomicFloatFeaturesEXT"; + case StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT: return "PhysicalDeviceIndexTypeUint8FeaturesEXT"; + case StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT: + return "PhysicalDeviceExtendedDynamicStateFeaturesEXT"; + case StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR: + return "PhysicalDevicePipelineExecutablePropertiesFeaturesKHR"; + case StructureType::ePipelineInfoKHR: return "PipelineInfoKHR"; + case StructureType::ePipelineExecutablePropertiesKHR: return "PipelineExecutablePropertiesKHR"; + case StructureType::ePipelineExecutableInfoKHR: return "PipelineExecutableInfoKHR"; + case StructureType::ePipelineExecutableStatisticKHR: return "PipelineExecutableStatisticKHR"; + case StructureType::ePipelineExecutableInternalRepresentationKHR: + return "PipelineExecutableInternalRepresentationKHR"; + case StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT: + return "PhysicalDeviceShaderAtomicFloat2FeaturesEXT"; + case StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV: + return "PhysicalDeviceDeviceGeneratedCommandsPropertiesNV"; + case StructureType::eGraphicsShaderGroupCreateInfoNV: return "GraphicsShaderGroupCreateInfoNV"; + case StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV: return "GraphicsPipelineShaderGroupsCreateInfoNV"; + case StructureType::eIndirectCommandsLayoutTokenNV: return "IndirectCommandsLayoutTokenNV"; + case StructureType::eIndirectCommandsLayoutCreateInfoNV: return "IndirectCommandsLayoutCreateInfoNV"; + case StructureType::eGeneratedCommandsInfoNV: return "GeneratedCommandsInfoNV"; + case StructureType::eGeneratedCommandsMemoryRequirementsInfoNV: + return "GeneratedCommandsMemoryRequirementsInfoNV"; + case StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV: + return "PhysicalDeviceDeviceGeneratedCommandsFeaturesNV"; + case StructureType::ePhysicalDeviceInheritedViewportScissorFeaturesNV: + return "PhysicalDeviceInheritedViewportScissorFeaturesNV"; + case StructureType::eCommandBufferInheritanceViewportScissorInfoNV: + return "CommandBufferInheritanceViewportScissorInfoNV"; + case StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT: + return "PhysicalDeviceTexelBufferAlignmentFeaturesEXT"; + case StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM: + return "CommandBufferInheritanceRenderPassTransformInfoQCOM"; + case StructureType::eRenderPassTransformBeginInfoQCOM: return "RenderPassTransformBeginInfoQCOM"; + case StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT: + return "PhysicalDeviceDeviceMemoryReportFeaturesEXT"; + case StructureType::eDeviceDeviceMemoryReportCreateInfoEXT: return "DeviceDeviceMemoryReportCreateInfoEXT"; + case StructureType::eDeviceMemoryReportCallbackDataEXT: return "DeviceMemoryReportCallbackDataEXT"; + case StructureType::ePhysicalDeviceRobustness2FeaturesEXT: return "PhysicalDeviceRobustness2FeaturesEXT"; + case StructureType::ePhysicalDeviceRobustness2PropertiesEXT: return "PhysicalDeviceRobustness2PropertiesEXT"; + case StructureType::eSamplerCustomBorderColorCreateInfoEXT: return "SamplerCustomBorderColorCreateInfoEXT"; + case StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT: + return "PhysicalDeviceCustomBorderColorPropertiesEXT"; + case StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT: + return "PhysicalDeviceCustomBorderColorFeaturesEXT"; + case StructureType::ePipelineLibraryCreateInfoKHR: return "PipelineLibraryCreateInfoKHR"; + case StructureType::ePresentIdKHR: return "PresentIdKHR"; + case StructureType::ePhysicalDevicePresentIdFeaturesKHR: return "PhysicalDevicePresentIdFeaturesKHR"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case StructureType::eVideoEncodeInfoKHR: return "VideoEncodeInfoKHR"; + case StructureType::eVideoEncodeRateControlInfoKHR: return "VideoEncodeRateControlInfoKHR"; + case StructureType::eVideoEncodeRateControlLayerInfoKHR: return "VideoEncodeRateControlLayerInfoKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV: + return "PhysicalDeviceDiagnosticsConfigFeaturesNV"; + case StructureType::eDeviceDiagnosticsConfigCreateInfoNV: return "DeviceDiagnosticsConfigCreateInfoNV"; + case StructureType::eQueueFamilyCheckpointProperties2NV: return "QueueFamilyCheckpointProperties2NV"; + case StructureType::eCheckpointData2NV: return "CheckpointData2NV"; + case StructureType::ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR: + return "PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR"; + case StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV: + return "PhysicalDeviceFragmentShadingRateEnumsPropertiesNV"; + case StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV: + return "PhysicalDeviceFragmentShadingRateEnumsFeaturesNV"; + case StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV: + return "PipelineFragmentShadingRateEnumStateCreateInfoNV"; + case StructureType::eAccelerationStructureGeometryMotionTrianglesDataNV: + return "AccelerationStructureGeometryMotionTrianglesDataNV"; + case StructureType::ePhysicalDeviceRayTracingMotionBlurFeaturesNV: + return "PhysicalDeviceRayTracingMotionBlurFeaturesNV"; + case StructureType::eAccelerationStructureMotionInfoNV: return "AccelerationStructureMotionInfoNV"; + case StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT: + return "PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT"; + case StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT: + return "PhysicalDeviceFragmentDensityMap2FeaturesEXT"; + case StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT: + return "PhysicalDeviceFragmentDensityMap2PropertiesEXT"; + case StructureType::eCopyCommandTransformInfoQCOM: return "CopyCommandTransformInfoQCOM"; + case StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR: + return "PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR"; + case StructureType::ePhysicalDevice4444FormatsFeaturesEXT: return "PhysicalDevice4444FormatsFeaturesEXT"; + case StructureType::ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM: + return "PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM"; + case StructureType::ePhysicalDeviceRgba10X6FormatsFeaturesEXT: return "PhysicalDeviceRgba10X6FormatsFeaturesEXT"; +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + case StructureType::eDirectfbSurfaceCreateInfoEXT: return "DirectfbSurfaceCreateInfoEXT"; +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + case StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesVALVE: + return "PhysicalDeviceMutableDescriptorTypeFeaturesVALVE"; + case StructureType::eMutableDescriptorTypeCreateInfoVALVE: return "MutableDescriptorTypeCreateInfoVALVE"; + case StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT: + return "PhysicalDeviceVertexInputDynamicStateFeaturesEXT"; + case StructureType::eVertexInputBindingDescription2EXT: return "VertexInputBindingDescription2EXT"; + case StructureType::eVertexInputAttributeDescription2EXT: return "VertexInputAttributeDescription2EXT"; + case StructureType::ePhysicalDeviceDrmPropertiesEXT: return "PhysicalDeviceDrmPropertiesEXT"; + case StructureType::ePhysicalDeviceDepthClipControlFeaturesEXT: + return "PhysicalDeviceDepthClipControlFeaturesEXT"; + case StructureType::ePipelineViewportDepthClipControlCreateInfoEXT: + return "PipelineViewportDepthClipControlCreateInfoEXT"; + case StructureType::ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT: + return "PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT"; +#if defined( VK_USE_PLATFORM_FUCHSIA ) + case StructureType::eImportMemoryZirconHandleInfoFUCHSIA: return "ImportMemoryZirconHandleInfoFUCHSIA"; + case StructureType::eMemoryZirconHandlePropertiesFUCHSIA: return "MemoryZirconHandlePropertiesFUCHSIA"; + case StructureType::eMemoryGetZirconHandleInfoFUCHSIA: return "MemoryGetZirconHandleInfoFUCHSIA"; + case StructureType::eImportSemaphoreZirconHandleInfoFUCHSIA: return "ImportSemaphoreZirconHandleInfoFUCHSIA"; + case StructureType::eSemaphoreGetZirconHandleInfoFUCHSIA: return "SemaphoreGetZirconHandleInfoFUCHSIA"; + case StructureType::eBufferCollectionCreateInfoFUCHSIA: return "BufferCollectionCreateInfoFUCHSIA"; + case StructureType::eImportMemoryBufferCollectionFUCHSIA: return "ImportMemoryBufferCollectionFUCHSIA"; + case StructureType::eBufferCollectionImageCreateInfoFUCHSIA: return "BufferCollectionImageCreateInfoFUCHSIA"; + case StructureType::eBufferCollectionPropertiesFUCHSIA: return "BufferCollectionPropertiesFUCHSIA"; + case StructureType::eBufferConstraintsInfoFUCHSIA: return "BufferConstraintsInfoFUCHSIA"; + case StructureType::eBufferCollectionBufferCreateInfoFUCHSIA: return "BufferCollectionBufferCreateInfoFUCHSIA"; + case StructureType::eImageConstraintsInfoFUCHSIA: return "ImageConstraintsInfoFUCHSIA"; + case StructureType::eImageFormatConstraintsInfoFUCHSIA: return "ImageFormatConstraintsInfoFUCHSIA"; + case StructureType::eSysmemColorSpaceFUCHSIA: return "SysmemColorSpaceFUCHSIA"; + case StructureType::eBufferCollectionConstraintsInfoFUCHSIA: return "BufferCollectionConstraintsInfoFUCHSIA"; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + case StructureType::eSubpassShadingPipelineCreateInfoHUAWEI: return "SubpassShadingPipelineCreateInfoHUAWEI"; + case StructureType::ePhysicalDeviceSubpassShadingFeaturesHUAWEI: + return "PhysicalDeviceSubpassShadingFeaturesHUAWEI"; + case StructureType::ePhysicalDeviceSubpassShadingPropertiesHUAWEI: + return "PhysicalDeviceSubpassShadingPropertiesHUAWEI"; + case StructureType::ePhysicalDeviceInvocationMaskFeaturesHUAWEI: + return "PhysicalDeviceInvocationMaskFeaturesHUAWEI"; + case StructureType::eMemoryGetRemoteAddressInfoNV: return "MemoryGetRemoteAddressInfoNV"; + case StructureType::ePhysicalDeviceExternalMemoryRdmaFeaturesNV: + return "PhysicalDeviceExternalMemoryRdmaFeaturesNV"; + case StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT: + return "PhysicalDeviceExtendedDynamicState2FeaturesEXT"; +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + case StructureType::eScreenSurfaceCreateInfoQNX: return "ScreenSurfaceCreateInfoQNX"; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + case StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT: + return "PhysicalDeviceColorWriteEnableFeaturesEXT"; + case StructureType::ePipelineColorWriteCreateInfoEXT: return "PipelineColorWriteCreateInfoEXT"; + case StructureType::ePhysicalDeviceImageViewMinLodFeaturesEXT: return "PhysicalDeviceImageViewMinLodFeaturesEXT"; + case StructureType::eImageViewMinLodCreateInfoEXT: return "ImageViewMinLodCreateInfoEXT"; + case StructureType::ePhysicalDeviceMultiDrawFeaturesEXT: return "PhysicalDeviceMultiDrawFeaturesEXT"; + case StructureType::ePhysicalDeviceMultiDrawPropertiesEXT: return "PhysicalDeviceMultiDrawPropertiesEXT"; + case StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT: + return "PhysicalDeviceBorderColorSwizzleFeaturesEXT"; + case StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT: + return "SamplerBorderColorComponentMappingCreateInfoEXT"; + case StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT: + return "PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT"; + case StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM: + return "PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM"; + case StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM: + return "PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM"; + case StructureType::eSubpassFragmentDensityMapOffsetEndInfoQCOM: + return "SubpassFragmentDensityMapOffsetEndInfoQCOM"; + case StructureType::ePhysicalDeviceLinearColorAttachmentFeaturesNV: + return "PhysicalDeviceLinearColorAttachmentFeaturesNV"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ObjectType + { + eUnknown = VK_OBJECT_TYPE_UNKNOWN, + eInstance = VK_OBJECT_TYPE_INSTANCE, + ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE, + eDevice = VK_OBJECT_TYPE_DEVICE, + eQueue = VK_OBJECT_TYPE_QUEUE, + eSemaphore = VK_OBJECT_TYPE_SEMAPHORE, + eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER, + eFence = VK_OBJECT_TYPE_FENCE, + eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY, + eBuffer = VK_OBJECT_TYPE_BUFFER, + eImage = VK_OBJECT_TYPE_IMAGE, + eEvent = VK_OBJECT_TYPE_EVENT, + eQueryPool = VK_OBJECT_TYPE_QUERY_POOL, + eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW, + eImageView = VK_OBJECT_TYPE_IMAGE_VIEW, + eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE, + ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE, + ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT, + eRenderPass = VK_OBJECT_TYPE_RENDER_PASS, + ePipeline = VK_OBJECT_TYPE_PIPELINE, + eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT, + eSampler = VK_OBJECT_TYPE_SAMPLER, + eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL, + eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET, + eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER, + eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL, + eSamplerYcbcrConversion = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, + eDescriptorUpdateTemplate = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, + ePrivateDataSlot = VK_OBJECT_TYPE_PRIVATE_DATA_SLOT, + eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR, + eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR, + eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR, + eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR, + eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoSessionKHR = VK_OBJECT_TYPE_VIDEO_SESSION_KHR, + eVideoSessionParametersKHR = VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eCuModuleNVX = VK_OBJECT_TYPE_CU_MODULE_NVX, + eCuFunctionNVX = VK_OBJECT_TYPE_CU_FUNCTION_NVX, + eDebugUtilsMessengerEXT = VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT, + eAccelerationStructureKHR = VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR, + eValidationCacheEXT = VK_OBJECT_TYPE_VALIDATION_CACHE_EXT, + eAccelerationStructureNV = VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV, + ePerformanceConfigurationINTEL = VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL, + eDeferredOperationKHR = VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR, + eIndirectCommandsLayoutNV = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV, +#if defined( VK_USE_PLATFORM_FUCHSIA ) + eBufferCollectionFUCHSIA = VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA, +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR, + ePrivateDataSlotEXT = VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT, + eSamplerYcbcrConversionKHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( ObjectType value ) + { + switch ( value ) + { + case ObjectType::eUnknown: return "Unknown"; + case ObjectType::eInstance: return "Instance"; + case ObjectType::ePhysicalDevice: return "PhysicalDevice"; + case ObjectType::eDevice: return "Device"; + case ObjectType::eQueue: return "Queue"; + case ObjectType::eSemaphore: return "Semaphore"; + case ObjectType::eCommandBuffer: return "CommandBuffer"; + case ObjectType::eFence: return "Fence"; + case ObjectType::eDeviceMemory: return "DeviceMemory"; + case ObjectType::eBuffer: return "Buffer"; + case ObjectType::eImage: return "Image"; + case ObjectType::eEvent: return "Event"; + case ObjectType::eQueryPool: return "QueryPool"; + case ObjectType::eBufferView: return "BufferView"; + case ObjectType::eImageView: return "ImageView"; + case ObjectType::eShaderModule: return "ShaderModule"; + case ObjectType::ePipelineCache: return "PipelineCache"; + case ObjectType::ePipelineLayout: return "PipelineLayout"; + case ObjectType::eRenderPass: return "RenderPass"; + case ObjectType::ePipeline: return "Pipeline"; + case ObjectType::eDescriptorSetLayout: return "DescriptorSetLayout"; + case ObjectType::eSampler: return "Sampler"; + case ObjectType::eDescriptorPool: return "DescriptorPool"; + case ObjectType::eDescriptorSet: return "DescriptorSet"; + case ObjectType::eFramebuffer: return "Framebuffer"; + case ObjectType::eCommandPool: return "CommandPool"; + case ObjectType::eSamplerYcbcrConversion: return "SamplerYcbcrConversion"; + case ObjectType::eDescriptorUpdateTemplate: return "DescriptorUpdateTemplate"; + case ObjectType::ePrivateDataSlot: return "PrivateDataSlot"; + case ObjectType::eSurfaceKHR: return "SurfaceKHR"; + case ObjectType::eSwapchainKHR: return "SwapchainKHR"; + case ObjectType::eDisplayKHR: return "DisplayKHR"; + case ObjectType::eDisplayModeKHR: return "DisplayModeKHR"; + case ObjectType::eDebugReportCallbackEXT: return "DebugReportCallbackEXT"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case ObjectType::eVideoSessionKHR: return "VideoSessionKHR"; + case ObjectType::eVideoSessionParametersKHR: return "VideoSessionParametersKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case ObjectType::eCuModuleNVX: return "CuModuleNVX"; + case ObjectType::eCuFunctionNVX: return "CuFunctionNVX"; + case ObjectType::eDebugUtilsMessengerEXT: return "DebugUtilsMessengerEXT"; + case ObjectType::eAccelerationStructureKHR: return "AccelerationStructureKHR"; + case ObjectType::eValidationCacheEXT: return "ValidationCacheEXT"; + case ObjectType::eAccelerationStructureNV: return "AccelerationStructureNV"; + case ObjectType::ePerformanceConfigurationINTEL: return "PerformanceConfigurationINTEL"; + case ObjectType::eDeferredOperationKHR: return "DeferredOperationKHR"; + case ObjectType::eIndirectCommandsLayoutNV: return "IndirectCommandsLayoutNV"; +#if defined( VK_USE_PLATFORM_FUCHSIA ) + case ObjectType::eBufferCollectionFUCHSIA: return "BufferCollectionFUCHSIA"; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VendorId + { + eVIV = VK_VENDOR_ID_VIV, + eVSI = VK_VENDOR_ID_VSI, + eKazan = VK_VENDOR_ID_KAZAN, + eCodeplay = VK_VENDOR_ID_CODEPLAY, + eMESA = VK_VENDOR_ID_MESA, + ePocl = VK_VENDOR_ID_POCL + }; + + VULKAN_HPP_INLINE std::string to_string( VendorId value ) + { + switch ( value ) + { + case VendorId::eVIV: return "VIV"; + case VendorId::eVSI: return "VSI"; + case VendorId::eKazan: return "Kazan"; + case VendorId::eCodeplay: return "Codeplay"; + case VendorId::eMESA: return "MESA"; + case VendorId::ePocl: return "Pocl"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PipelineCacheHeaderVersion + { + eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineCacheHeaderVersion value ) + { + switch ( value ) + { + case PipelineCacheHeaderVersion::eOne: return "One"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class Format + { + eUndefined = VK_FORMAT_UNDEFINED, + eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8, + eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16, + eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16, + eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16, + eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16, + eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16, + eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16, + eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16, + eR8Unorm = VK_FORMAT_R8_UNORM, + eR8Snorm = VK_FORMAT_R8_SNORM, + eR8Uscaled = VK_FORMAT_R8_USCALED, + eR8Sscaled = VK_FORMAT_R8_SSCALED, + eR8Uint = VK_FORMAT_R8_UINT, + eR8Sint = VK_FORMAT_R8_SINT, + eR8Srgb = VK_FORMAT_R8_SRGB, + eR8G8Unorm = VK_FORMAT_R8G8_UNORM, + eR8G8Snorm = VK_FORMAT_R8G8_SNORM, + eR8G8Uscaled = VK_FORMAT_R8G8_USCALED, + eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED, + eR8G8Uint = VK_FORMAT_R8G8_UINT, + eR8G8Sint = VK_FORMAT_R8G8_SINT, + eR8G8Srgb = VK_FORMAT_R8G8_SRGB, + eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM, + eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM, + eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED, + eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED, + eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT, + eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT, + eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB, + eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM, + eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM, + eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED, + eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED, + eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT, + eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT, + eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB, + eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM, + eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM, + eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED, + eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED, + eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT, + eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT, + eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB, + eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM, + eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM, + eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED, + eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED, + eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT, + eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT, + eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB, + eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32, + eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32, + eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32, + eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32, + eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32, + eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32, + eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32, + eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32, + eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32, + eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32, + eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32, + eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32, + eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32, + eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32, + eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32, + eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32, + eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32, + eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32, + eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32, + eR16Unorm = VK_FORMAT_R16_UNORM, + eR16Snorm = VK_FORMAT_R16_SNORM, + eR16Uscaled = VK_FORMAT_R16_USCALED, + eR16Sscaled = VK_FORMAT_R16_SSCALED, + eR16Uint = VK_FORMAT_R16_UINT, + eR16Sint = VK_FORMAT_R16_SINT, + eR16Sfloat = VK_FORMAT_R16_SFLOAT, + eR16G16Unorm = VK_FORMAT_R16G16_UNORM, + eR16G16Snorm = VK_FORMAT_R16G16_SNORM, + eR16G16Uscaled = VK_FORMAT_R16G16_USCALED, + eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED, + eR16G16Uint = VK_FORMAT_R16G16_UINT, + eR16G16Sint = VK_FORMAT_R16G16_SINT, + eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT, + eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM, + eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM, + eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED, + eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED, + eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT, + eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT, + eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT, + eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM, + eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM, + eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED, + eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED, + eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT, + eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT, + eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT, + eR32Uint = VK_FORMAT_R32_UINT, + eR32Sint = VK_FORMAT_R32_SINT, + eR32Sfloat = VK_FORMAT_R32_SFLOAT, + eR32G32Uint = VK_FORMAT_R32G32_UINT, + eR32G32Sint = VK_FORMAT_R32G32_SINT, + eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT, + eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT, + eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT, + eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT, + eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT, + eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT, + eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT, + eR64Uint = VK_FORMAT_R64_UINT, + eR64Sint = VK_FORMAT_R64_SINT, + eR64Sfloat = VK_FORMAT_R64_SFLOAT, + eR64G64Uint = VK_FORMAT_R64G64_UINT, + eR64G64Sint = VK_FORMAT_R64G64_SINT, + eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT, + eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT, + eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT, + eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT, + eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT, + eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT, + eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT, + eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32, + eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, + eD16Unorm = VK_FORMAT_D16_UNORM, + eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32, + eD32Sfloat = VK_FORMAT_D32_SFLOAT, + eS8Uint = VK_FORMAT_S8_UINT, + eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT, + eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT, + eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT, + eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK, + eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK, + eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK, + eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK, + eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK, + eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK, + eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK, + eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK, + eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK, + eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK, + eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK, + eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK, + eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK, + eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK, + eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK, + eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK, + eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, + eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, + eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, + eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, + eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, + eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, + eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK, + eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK, + eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK, + eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK, + eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK, + eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK, + eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK, + eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK, + eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK, + eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK, + eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK, + eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK, + eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK, + eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK, + eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK, + eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK, + eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK, + eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK, + eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK, + eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK, + eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK, + eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK, + eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK, + eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK, + eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK, + eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK, + eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK, + eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK, + eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK, + eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK, + eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK, + eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK, + eG8B8G8R8422Unorm = VK_FORMAT_G8B8G8R8_422_UNORM, + eB8G8R8G8422Unorm = VK_FORMAT_B8G8R8G8_422_UNORM, + eG8B8R83Plane420Unorm = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, + eG8B8R82Plane420Unorm = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM, + eG8B8R83Plane422Unorm = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, + eG8B8R82Plane422Unorm = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM, + eG8B8R83Plane444Unorm = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, + eR10X6UnormPack16 = VK_FORMAT_R10X6_UNORM_PACK16, + eR10X6G10X6Unorm2Pack16 = VK_FORMAT_R10X6G10X6_UNORM_2PACK16, + eR10X6G10X6B10X6A10X6Unorm4Pack16 = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, + eG10X6B10X6G10X6R10X6422Unorm4Pack16 = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, + eB10X6G10X6R10X6G10X6422Unorm4Pack16 = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, + eG10X6B10X6R10X63Plane420Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, + eG10X6B10X6R10X62Plane420Unorm3Pack16 = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, + eG10X6B10X6R10X63Plane422Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, + eG10X6B10X6R10X62Plane422Unorm3Pack16 = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, + eG10X6B10X6R10X63Plane444Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, + eR12X4UnormPack16 = VK_FORMAT_R12X4_UNORM_PACK16, + eR12X4G12X4Unorm2Pack16 = VK_FORMAT_R12X4G12X4_UNORM_2PACK16, + eR12X4G12X4B12X4A12X4Unorm4Pack16 = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, + eG12X4B12X4G12X4R12X4422Unorm4Pack16 = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, + eB12X4G12X4R12X4G12X4422Unorm4Pack16 = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, + eG12X4B12X4R12X43Plane420Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, + eG12X4B12X4R12X42Plane420Unorm3Pack16 = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, + eG12X4B12X4R12X43Plane422Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, + eG12X4B12X4R12X42Plane422Unorm3Pack16 = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, + eG12X4B12X4R12X43Plane444Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, + eG16B16G16R16422Unorm = VK_FORMAT_G16B16G16R16_422_UNORM, + eB16G16R16G16422Unorm = VK_FORMAT_B16G16R16G16_422_UNORM, + eG16B16R163Plane420Unorm = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, + eG16B16R162Plane420Unorm = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM, + eG16B16R163Plane422Unorm = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, + eG16B16R162Plane422Unorm = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, + eG16B16R163Plane444Unorm = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, + eG8B8R82Plane444Unorm = VK_FORMAT_G8_B8R8_2PLANE_444_UNORM, + eG10X6B10X6R10X62Plane444Unorm3Pack16 = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16, + eG12X4B12X4R12X42Plane444Unorm3Pack16 = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16, + eG16B16R162Plane444Unorm = VK_FORMAT_G16_B16R16_2PLANE_444_UNORM, + eA4R4G4B4UnormPack16 = VK_FORMAT_A4R4G4B4_UNORM_PACK16, + eA4B4G4R4UnormPack16 = VK_FORMAT_A4B4G4R4_UNORM_PACK16, + eAstc4x4SfloatBlock = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK, + eAstc5x4SfloatBlock = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK, + eAstc5x5SfloatBlock = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK, + eAstc6x5SfloatBlock = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK, + eAstc6x6SfloatBlock = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK, + eAstc8x5SfloatBlock = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK, + eAstc8x6SfloatBlock = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK, + eAstc8x8SfloatBlock = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK, + eAstc10x5SfloatBlock = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK, + eAstc10x6SfloatBlock = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK, + eAstc10x8SfloatBlock = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK, + eAstc10x10SfloatBlock = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK, + eAstc12x10SfloatBlock = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK, + eAstc12x12SfloatBlock = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK, + ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG, + ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG, + ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG, + ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG, + ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG, + ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG, + ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG, + ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG, + eA4B4G4R4UnormPack16EXT = VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT, + eA4R4G4B4UnormPack16EXT = VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT, + eAstc10x10SfloatBlockEXT = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT, + eAstc10x5SfloatBlockEXT = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT, + eAstc10x6SfloatBlockEXT = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT, + eAstc10x8SfloatBlockEXT = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT, + eAstc12x10SfloatBlockEXT = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT, + eAstc12x12SfloatBlockEXT = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT, + eAstc4x4SfloatBlockEXT = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT, + eAstc5x4SfloatBlockEXT = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT, + eAstc5x5SfloatBlockEXT = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT, + eAstc6x5SfloatBlockEXT = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT, + eAstc6x6SfloatBlockEXT = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT, + eAstc8x5SfloatBlockEXT = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT, + eAstc8x6SfloatBlockEXT = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT, + eAstc8x8SfloatBlockEXT = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT, + eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR, + eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR, + eB16G16R16G16422UnormKHR = VK_FORMAT_B16G16R16G16_422_UNORM_KHR, + eB8G8R8G8422UnormKHR = VK_FORMAT_B8G8R8G8_422_UNORM_KHR, + eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR, + eG10X6B10X6R10X62Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR, + eG10X6B10X6R10X62Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR, + eG10X6B10X6R10X62Plane444Unorm3Pack16EXT = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT, + eG10X6B10X6R10X63Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR, + eG10X6B10X6R10X63Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR, + eG10X6B10X6R10X63Plane444Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR, + eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR, + eG12X4B12X4R12X42Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR, + eG12X4B12X4R12X42Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR, + eG12X4B12X4R12X42Plane444Unorm3Pack16EXT = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT, + eG12X4B12X4R12X43Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR, + eG12X4B12X4R12X43Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR, + eG12X4B12X4R12X43Plane444Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR, + eG16B16G16R16422UnormKHR = VK_FORMAT_G16B16G16R16_422_UNORM_KHR, + eG16B16R162Plane420UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR, + eG16B16R162Plane422UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR, + eG16B16R162Plane444UnormEXT = VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT, + eG16B16R163Plane420UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR, + eG16B16R163Plane422UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR, + eG16B16R163Plane444UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR, + eG8B8G8R8422UnormKHR = VK_FORMAT_G8B8G8R8_422_UNORM_KHR, + eG8B8R82Plane420UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR, + eG8B8R82Plane422UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR, + eG8B8R82Plane444UnormEXT = VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT, + eG8B8R83Plane420UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR, + eG8B8R83Plane422UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR, + eG8B8R83Plane444UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR, + eR10X6G10X6B10X6A10X6Unorm4Pack16KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR, + eR10X6G10X6Unorm2Pack16KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR, + eR10X6UnormPack16KHR = VK_FORMAT_R10X6_UNORM_PACK16_KHR, + eR12X4G12X4B12X4A12X4Unorm4Pack16KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR, + eR12X4G12X4Unorm2Pack16KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR, + eR12X4UnormPack16KHR = VK_FORMAT_R12X4_UNORM_PACK16_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( Format value ) + { + switch ( value ) + { + case Format::eUndefined: return "Undefined"; + case Format::eR4G4UnormPack8: return "R4G4UnormPack8"; + case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16"; + case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16"; + case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16"; + case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16"; + case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16"; + case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16"; + case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16"; + case Format::eR8Unorm: return "R8Unorm"; + case Format::eR8Snorm: return "R8Snorm"; + case Format::eR8Uscaled: return "R8Uscaled"; + case Format::eR8Sscaled: return "R8Sscaled"; + case Format::eR8Uint: return "R8Uint"; + case Format::eR8Sint: return "R8Sint"; + case Format::eR8Srgb: return "R8Srgb"; + case Format::eR8G8Unorm: return "R8G8Unorm"; + case Format::eR8G8Snorm: return "R8G8Snorm"; + case Format::eR8G8Uscaled: return "R8G8Uscaled"; + case Format::eR8G8Sscaled: return "R8G8Sscaled"; + case Format::eR8G8Uint: return "R8G8Uint"; + case Format::eR8G8Sint: return "R8G8Sint"; + case Format::eR8G8Srgb: return "R8G8Srgb"; + case Format::eR8G8B8Unorm: return "R8G8B8Unorm"; + case Format::eR8G8B8Snorm: return "R8G8B8Snorm"; + case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled"; + case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled"; + case Format::eR8G8B8Uint: return "R8G8B8Uint"; + case Format::eR8G8B8Sint: return "R8G8B8Sint"; + case Format::eR8G8B8Srgb: return "R8G8B8Srgb"; + case Format::eB8G8R8Unorm: return "B8G8R8Unorm"; + case Format::eB8G8R8Snorm: return "B8G8R8Snorm"; + case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled"; + case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled"; + case Format::eB8G8R8Uint: return "B8G8R8Uint"; + case Format::eB8G8R8Sint: return "B8G8R8Sint"; + case Format::eB8G8R8Srgb: return "B8G8R8Srgb"; + case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm"; + case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm"; + case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled"; + case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled"; + case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint"; + case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint"; + case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb"; + case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm"; + case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm"; + case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled"; + case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled"; + case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint"; + case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint"; + case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb"; + case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32"; + case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32"; + case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32"; + case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32"; + case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32"; + case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32"; + case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32"; + case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32"; + case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32"; + case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32"; + case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32"; + case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32"; + case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32"; + case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32"; + case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32"; + case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32"; + case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32"; + case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32"; + case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32"; + case Format::eR16Unorm: return "R16Unorm"; + case Format::eR16Snorm: return "R16Snorm"; + case Format::eR16Uscaled: return "R16Uscaled"; + case Format::eR16Sscaled: return "R16Sscaled"; + case Format::eR16Uint: return "R16Uint"; + case Format::eR16Sint: return "R16Sint"; + case Format::eR16Sfloat: return "R16Sfloat"; + case Format::eR16G16Unorm: return "R16G16Unorm"; + case Format::eR16G16Snorm: return "R16G16Snorm"; + case Format::eR16G16Uscaled: return "R16G16Uscaled"; + case Format::eR16G16Sscaled: return "R16G16Sscaled"; + case Format::eR16G16Uint: return "R16G16Uint"; + case Format::eR16G16Sint: return "R16G16Sint"; + case Format::eR16G16Sfloat: return "R16G16Sfloat"; + case Format::eR16G16B16Unorm: return "R16G16B16Unorm"; + case Format::eR16G16B16Snorm: return "R16G16B16Snorm"; + case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled"; + case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled"; + case Format::eR16G16B16Uint: return "R16G16B16Uint"; + case Format::eR16G16B16Sint: return "R16G16B16Sint"; + case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat"; + case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm"; + case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm"; + case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled"; + case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled"; + case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint"; + case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint"; + case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat"; + case Format::eR32Uint: return "R32Uint"; + case Format::eR32Sint: return "R32Sint"; + case Format::eR32Sfloat: return "R32Sfloat"; + case Format::eR32G32Uint: return "R32G32Uint"; + case Format::eR32G32Sint: return "R32G32Sint"; + case Format::eR32G32Sfloat: return "R32G32Sfloat"; + case Format::eR32G32B32Uint: return "R32G32B32Uint"; + case Format::eR32G32B32Sint: return "R32G32B32Sint"; + case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat"; + case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint"; + case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint"; + case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat"; + case Format::eR64Uint: return "R64Uint"; + case Format::eR64Sint: return "R64Sint"; + case Format::eR64Sfloat: return "R64Sfloat"; + case Format::eR64G64Uint: return "R64G64Uint"; + case Format::eR64G64Sint: return "R64G64Sint"; + case Format::eR64G64Sfloat: return "R64G64Sfloat"; + case Format::eR64G64B64Uint: return "R64G64B64Uint"; + case Format::eR64G64B64Sint: return "R64G64B64Sint"; + case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat"; + case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint"; + case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint"; + case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat"; + case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32"; + case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32"; + case Format::eD16Unorm: return "D16Unorm"; + case Format::eX8D24UnormPack32: return "X8D24UnormPack32"; + case Format::eD32Sfloat: return "D32Sfloat"; + case Format::eS8Uint: return "S8Uint"; + case Format::eD16UnormS8Uint: return "D16UnormS8Uint"; + case Format::eD24UnormS8Uint: return "D24UnormS8Uint"; + case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint"; + case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock"; + case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock"; + case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock"; + case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock"; + case Format::eBc2UnormBlock: return "Bc2UnormBlock"; + case Format::eBc2SrgbBlock: return "Bc2SrgbBlock"; + case Format::eBc3UnormBlock: return "Bc3UnormBlock"; + case Format::eBc3SrgbBlock: return "Bc3SrgbBlock"; + case Format::eBc4UnormBlock: return "Bc4UnormBlock"; + case Format::eBc4SnormBlock: return "Bc4SnormBlock"; + case Format::eBc5UnormBlock: return "Bc5UnormBlock"; + case Format::eBc5SnormBlock: return "Bc5SnormBlock"; + case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock"; + case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock"; + case Format::eBc7UnormBlock: return "Bc7UnormBlock"; + case Format::eBc7SrgbBlock: return "Bc7SrgbBlock"; + case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock"; + case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock"; + case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock"; + case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock"; + case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock"; + case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock"; + case Format::eEacR11UnormBlock: return "EacR11UnormBlock"; + case Format::eEacR11SnormBlock: return "EacR11SnormBlock"; + case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock"; + case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock"; + case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock"; + case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock"; + case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock"; + case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock"; + case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock"; + case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock"; + case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock"; + case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock"; + case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock"; + case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock"; + case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock"; + case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock"; + case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock"; + case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock"; + case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock"; + case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock"; + case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock"; + case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock"; + case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock"; + case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock"; + case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock"; + case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock"; + case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock"; + case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock"; + case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock"; + case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock"; + case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock"; + case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock"; + case Format::eG8B8G8R8422Unorm: return "G8B8G8R8422Unorm"; + case Format::eB8G8R8G8422Unorm: return "B8G8R8G8422Unorm"; + case Format::eG8B8R83Plane420Unorm: return "G8B8R83Plane420Unorm"; + case Format::eG8B8R82Plane420Unorm: return "G8B8R82Plane420Unorm"; + case Format::eG8B8R83Plane422Unorm: return "G8B8R83Plane422Unorm"; + case Format::eG8B8R82Plane422Unorm: return "G8B8R82Plane422Unorm"; + case Format::eG8B8R83Plane444Unorm: return "G8B8R83Plane444Unorm"; + case Format::eR10X6UnormPack16: return "R10X6UnormPack16"; + case Format::eR10X6G10X6Unorm2Pack16: return "R10X6G10X6Unorm2Pack16"; + case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16: return "R10X6G10X6B10X6A10X6Unorm4Pack16"; + case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: return "G10X6B10X6G10X6R10X6422Unorm4Pack16"; + case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: return "B10X6G10X6R10X6G10X6422Unorm4Pack16"; + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: return "G10X6B10X6R10X63Plane420Unorm3Pack16"; + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: return "G10X6B10X6R10X62Plane420Unorm3Pack16"; + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: return "G10X6B10X6R10X63Plane422Unorm3Pack16"; + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: return "G10X6B10X6R10X62Plane422Unorm3Pack16"; + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: return "G10X6B10X6R10X63Plane444Unorm3Pack16"; + case Format::eR12X4UnormPack16: return "R12X4UnormPack16"; + case Format::eR12X4G12X4Unorm2Pack16: return "R12X4G12X4Unorm2Pack16"; + case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16: return "R12X4G12X4B12X4A12X4Unorm4Pack16"; + case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: return "G12X4B12X4G12X4R12X4422Unorm4Pack16"; + case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: return "B12X4G12X4R12X4G12X4422Unorm4Pack16"; + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: return "G12X4B12X4R12X43Plane420Unorm3Pack16"; + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: return "G12X4B12X4R12X42Plane420Unorm3Pack16"; + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: return "G12X4B12X4R12X43Plane422Unorm3Pack16"; + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: return "G12X4B12X4R12X42Plane422Unorm3Pack16"; + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: return "G12X4B12X4R12X43Plane444Unorm3Pack16"; + case Format::eG16B16G16R16422Unorm: return "G16B16G16R16422Unorm"; + case Format::eB16G16R16G16422Unorm: return "B16G16R16G16422Unorm"; + case Format::eG16B16R163Plane420Unorm: return "G16B16R163Plane420Unorm"; + case Format::eG16B16R162Plane420Unorm: return "G16B16R162Plane420Unorm"; + case Format::eG16B16R163Plane422Unorm: return "G16B16R163Plane422Unorm"; + case Format::eG16B16R162Plane422Unorm: return "G16B16R162Plane422Unorm"; + case Format::eG16B16R163Plane444Unorm: return "G16B16R163Plane444Unorm"; + case Format::eG8B8R82Plane444Unorm: return "G8B8R82Plane444Unorm"; + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: return "G10X6B10X6R10X62Plane444Unorm3Pack16"; + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: return "G12X4B12X4R12X42Plane444Unorm3Pack16"; + case Format::eG16B16R162Plane444Unorm: return "G16B16R162Plane444Unorm"; + case Format::eA4R4G4B4UnormPack16: return "A4R4G4B4UnormPack16"; + case Format::eA4B4G4R4UnormPack16: return "A4B4G4R4UnormPack16"; + case Format::eAstc4x4SfloatBlock: return "Astc4x4SfloatBlock"; + case Format::eAstc5x4SfloatBlock: return "Astc5x4SfloatBlock"; + case Format::eAstc5x5SfloatBlock: return "Astc5x5SfloatBlock"; + case Format::eAstc6x5SfloatBlock: return "Astc6x5SfloatBlock"; + case Format::eAstc6x6SfloatBlock: return "Astc6x6SfloatBlock"; + case Format::eAstc8x5SfloatBlock: return "Astc8x5SfloatBlock"; + case Format::eAstc8x6SfloatBlock: return "Astc8x6SfloatBlock"; + case Format::eAstc8x8SfloatBlock: return "Astc8x8SfloatBlock"; + case Format::eAstc10x5SfloatBlock: return "Astc10x5SfloatBlock"; + case Format::eAstc10x6SfloatBlock: return "Astc10x6SfloatBlock"; + case Format::eAstc10x8SfloatBlock: return "Astc10x8SfloatBlock"; + case Format::eAstc10x10SfloatBlock: return "Astc10x10SfloatBlock"; + case Format::eAstc12x10SfloatBlock: return "Astc12x10SfloatBlock"; + case Format::eAstc12x12SfloatBlock: return "Astc12x12SfloatBlock"; + case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG"; + case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG"; + case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG"; + case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG"; + case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG"; + case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG"; + case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG"; + case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class FormatFeatureFlagBits : VkFormatFeatureFlags + { + eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, + eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, + eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT, + eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT, + eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT, + eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT, + eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT, + eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, + eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, + eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, + eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT, + eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT, + eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, + eTransferSrc = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT, + eTransferDst = VK_FORMAT_FEATURE_TRANSFER_DST_BIT, + eMidpointChromaSamples = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT, + eSampledImageYcbcrConversionLinearFilter = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT, + eSampledImageYcbcrConversionSeparateReconstructionFilter = + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT, + eSampledImageYcbcrConversionChromaReconstructionExplicit = + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT, + eSampledImageYcbcrConversionChromaReconstructionExplicitForceable = + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT, + eDisjoint = VK_FORMAT_FEATURE_DISJOINT_BIT, + eCositedChromaSamples = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT, + eSampledImageFilterMinmax = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT, + eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoDecodeOutputKHR = VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR, + eVideoDecodeDpbKHR = VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eAccelerationStructureVertexBufferKHR = VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR, + eFragmentDensityMapEXT = VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT, + eFragmentShadingRateAttachmentKHR = VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoEncodeInputKHR = VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR, + eVideoEncodeDpbKHR = VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eCositedChromaSamplesKHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR, + eDisjointKHR = VK_FORMAT_FEATURE_DISJOINT_BIT_KHR, + eMidpointChromaSamplesKHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR, + eSampledImageFilterCubicEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT, + eSampledImageFilterMinmaxEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT, + eSampledImageYcbcrConversionChromaReconstructionExplicitKHR = + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR, + eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR = + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR, + eSampledImageYcbcrConversionLinearFilterKHR = + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR, + eSampledImageYcbcrConversionSeparateReconstructionFilterKHR = + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR, + eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR, + eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( FormatFeatureFlagBits value ) + { + switch ( value ) + { + case FormatFeatureFlagBits::eSampledImage: return "SampledImage"; + case FormatFeatureFlagBits::eStorageImage: return "StorageImage"; + case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic"; + case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer"; + case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer"; + case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic"; + case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer"; + case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment"; + case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend"; + case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment"; + case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc"; + case FormatFeatureFlagBits::eBlitDst: return "BlitDst"; + case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear"; + case FormatFeatureFlagBits::eTransferSrc: return "TransferSrc"; + case FormatFeatureFlagBits::eTransferDst: return "TransferDst"; + case FormatFeatureFlagBits::eMidpointChromaSamples: return "MidpointChromaSamples"; + case FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilter: + return "SampledImageYcbcrConversionLinearFilter"; + case FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilter: + return "SampledImageYcbcrConversionSeparateReconstructionFilter"; + case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicit: + return "SampledImageYcbcrConversionChromaReconstructionExplicit"; + case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable: + return "SampledImageYcbcrConversionChromaReconstructionExplicitForceable"; + case FormatFeatureFlagBits::eDisjoint: return "Disjoint"; + case FormatFeatureFlagBits::eCositedChromaSamples: return "CositedChromaSamples"; + case FormatFeatureFlagBits::eSampledImageFilterMinmax: return "SampledImageFilterMinmax"; + case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case FormatFeatureFlagBits::eVideoDecodeOutputKHR: return "VideoDecodeOutputKHR"; + case FormatFeatureFlagBits::eVideoDecodeDpbKHR: return "VideoDecodeDpbKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case FormatFeatureFlagBits::eAccelerationStructureVertexBufferKHR: return "AccelerationStructureVertexBufferKHR"; + case FormatFeatureFlagBits::eFragmentDensityMapEXT: return "FragmentDensityMapEXT"; + case FormatFeatureFlagBits::eFragmentShadingRateAttachmentKHR: return "FragmentShadingRateAttachmentKHR"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case FormatFeatureFlagBits::eVideoEncodeInputKHR: return "VideoEncodeInputKHR"; + case FormatFeatureFlagBits::eVideoEncodeDpbKHR: return "VideoEncodeDpbKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ImageCreateFlagBits : VkImageCreateFlags + { + eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT, + eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, + eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, + eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT, + eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, + eAlias = VK_IMAGE_CREATE_ALIAS_BIT, + eSplitInstanceBindRegions = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT, + e2DArrayCompatible = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT, + eBlockTexelViewCompatible = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, + eExtendedUsage = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT, + eProtected = VK_IMAGE_CREATE_PROTECTED_BIT, + eDisjoint = VK_IMAGE_CREATE_DISJOINT_BIT, + eCornerSampledNV = VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV, + eSampleLocationsCompatibleDepthEXT = VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT, + eSubsampledEXT = VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT, + eFragmentDensityMapOffsetQCOM = VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM, + e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR, + eAliasKHR = VK_IMAGE_CREATE_ALIAS_BIT_KHR, + eBlockTexelViewCompatibleKHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR, + eDisjointKHR = VK_IMAGE_CREATE_DISJOINT_BIT_KHR, + eExtendedUsageKHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR, + eSplitInstanceBindRegionsKHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( ImageCreateFlagBits value ) + { + switch ( value ) + { + case ImageCreateFlagBits::eSparseBinding: return "SparseBinding"; + case ImageCreateFlagBits::eSparseResidency: return "SparseResidency"; + case ImageCreateFlagBits::eSparseAliased: return "SparseAliased"; + case ImageCreateFlagBits::eMutableFormat: return "MutableFormat"; + case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible"; + case ImageCreateFlagBits::eAlias: return "Alias"; + case ImageCreateFlagBits::eSplitInstanceBindRegions: return "SplitInstanceBindRegions"; + case ImageCreateFlagBits::e2DArrayCompatible: return "2DArrayCompatible"; + case ImageCreateFlagBits::eBlockTexelViewCompatible: return "BlockTexelViewCompatible"; + case ImageCreateFlagBits::eExtendedUsage: return "ExtendedUsage"; + case ImageCreateFlagBits::eProtected: return "Protected"; + case ImageCreateFlagBits::eDisjoint: return "Disjoint"; + case ImageCreateFlagBits::eCornerSampledNV: return "CornerSampledNV"; + case ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT: return "SampleLocationsCompatibleDepthEXT"; + case ImageCreateFlagBits::eSubsampledEXT: return "SubsampledEXT"; + case ImageCreateFlagBits::eFragmentDensityMapOffsetQCOM: return "FragmentDensityMapOffsetQCOM"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ImageTiling + { + eOptimal = VK_IMAGE_TILING_OPTIMAL, + eLinear = VK_IMAGE_TILING_LINEAR, + eDrmFormatModifierEXT = VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( ImageTiling value ) + { + switch ( value ) + { + case ImageTiling::eOptimal: return "Optimal"; + case ImageTiling::eLinear: return "Linear"; + case ImageTiling::eDrmFormatModifierEXT: return "DrmFormatModifierEXT"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ImageType + { + e1D = VK_IMAGE_TYPE_1D, + e2D = VK_IMAGE_TYPE_2D, + e3D = VK_IMAGE_TYPE_3D + }; + + VULKAN_HPP_INLINE std::string to_string( ImageType value ) + { + switch ( value ) + { + case ImageType::e1D: return "1D"; + case ImageType::e2D: return "2D"; + case ImageType::e3D: return "3D"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ImageUsageFlagBits : VkImageUsageFlags + { + eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT, + eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT, + eSampled = VK_IMAGE_USAGE_SAMPLED_BIT, + eStorage = VK_IMAGE_USAGE_STORAGE_BIT, + eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, + eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, + eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, + eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoDecodeDstKHR = VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR, + eVideoDecodeSrcKHR = VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR, + eVideoDecodeDpbKHR = VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eFragmentDensityMapEXT = VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT, + eFragmentShadingRateAttachmentKHR = VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoEncodeDstKHR = VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR, + eVideoEncodeSrcKHR = VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR, + eVideoEncodeDpbKHR = VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eInvocationMaskHUAWEI = VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI, + eShadingRateImageNV = VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV + }; + + VULKAN_HPP_INLINE std::string to_string( ImageUsageFlagBits value ) + { + switch ( value ) + { + case ImageUsageFlagBits::eTransferSrc: return "TransferSrc"; + case ImageUsageFlagBits::eTransferDst: return "TransferDst"; + case ImageUsageFlagBits::eSampled: return "Sampled"; + case ImageUsageFlagBits::eStorage: return "Storage"; + case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment"; + case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment"; + case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment"; + case ImageUsageFlagBits::eInputAttachment: return "InputAttachment"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case ImageUsageFlagBits::eVideoDecodeDstKHR: return "VideoDecodeDstKHR"; + case ImageUsageFlagBits::eVideoDecodeSrcKHR: return "VideoDecodeSrcKHR"; + case ImageUsageFlagBits::eVideoDecodeDpbKHR: return "VideoDecodeDpbKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case ImageUsageFlagBits::eFragmentDensityMapEXT: return "FragmentDensityMapEXT"; + case ImageUsageFlagBits::eFragmentShadingRateAttachmentKHR: return "FragmentShadingRateAttachmentKHR"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case ImageUsageFlagBits::eVideoEncodeDstKHR: return "VideoEncodeDstKHR"; + case ImageUsageFlagBits::eVideoEncodeSrcKHR: return "VideoEncodeSrcKHR"; + case ImageUsageFlagBits::eVideoEncodeDpbKHR: return "VideoEncodeDpbKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case ImageUsageFlagBits::eInvocationMaskHUAWEI: return "InvocationMaskHUAWEI"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class InternalAllocationType + { + eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE + }; + + VULKAN_HPP_INLINE std::string to_string( InternalAllocationType value ) + { + switch ( value ) + { + case InternalAllocationType::eExecutable: return "Executable"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class MemoryHeapFlagBits : VkMemoryHeapFlags + { + eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT, + eMultiInstance = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT, + eMultiInstanceKHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( MemoryHeapFlagBits value ) + { + switch ( value ) + { + case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal"; + case MemoryHeapFlagBits::eMultiInstance: return "MultiInstance"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class MemoryPropertyFlagBits : VkMemoryPropertyFlags + { + eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, + eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, + eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, + eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT, + eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT, + eProtected = VK_MEMORY_PROPERTY_PROTECTED_BIT, + eDeviceCoherentAMD = VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD, + eDeviceUncachedAMD = VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD, + eRdmaCapableNV = VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV + }; + + VULKAN_HPP_INLINE std::string to_string( MemoryPropertyFlagBits value ) + { + switch ( value ) + { + case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal"; + case MemoryPropertyFlagBits::eHostVisible: return "HostVisible"; + case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent"; + case MemoryPropertyFlagBits::eHostCached: return "HostCached"; + case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated"; + case MemoryPropertyFlagBits::eProtected: return "Protected"; + case MemoryPropertyFlagBits::eDeviceCoherentAMD: return "DeviceCoherentAMD"; + case MemoryPropertyFlagBits::eDeviceUncachedAMD: return "DeviceUncachedAMD"; + case MemoryPropertyFlagBits::eRdmaCapableNV: return "RdmaCapableNV"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PhysicalDeviceType + { + eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER, + eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, + eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, + eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, + eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU + }; + + VULKAN_HPP_INLINE std::string to_string( PhysicalDeviceType value ) + { + switch ( value ) + { + case PhysicalDeviceType::eOther: return "Other"; + case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu"; + case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu"; + case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu"; + case PhysicalDeviceType::eCpu: return "Cpu"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class QueueFlagBits : VkQueueFlags + { + eGraphics = VK_QUEUE_GRAPHICS_BIT, + eCompute = VK_QUEUE_COMPUTE_BIT, + eTransfer = VK_QUEUE_TRANSFER_BIT, + eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT, + eProtected = VK_QUEUE_PROTECTED_BIT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoDecodeKHR = VK_QUEUE_VIDEO_DECODE_BIT_KHR, + eVideoEncodeKHR = VK_QUEUE_VIDEO_ENCODE_BIT_KHR +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + }; + + VULKAN_HPP_INLINE std::string to_string( QueueFlagBits value ) + { + switch ( value ) + { + case QueueFlagBits::eGraphics: return "Graphics"; + case QueueFlagBits::eCompute: return "Compute"; + case QueueFlagBits::eTransfer: return "Transfer"; + case QueueFlagBits::eSparseBinding: return "SparseBinding"; + case QueueFlagBits::eProtected: return "Protected"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case QueueFlagBits::eVideoDecodeKHR: return "VideoDecodeKHR"; + case QueueFlagBits::eVideoEncodeKHR: return "VideoEncodeKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SampleCountFlagBits : VkSampleCountFlags + { + e1 = VK_SAMPLE_COUNT_1_BIT, + e2 = VK_SAMPLE_COUNT_2_BIT, + e4 = VK_SAMPLE_COUNT_4_BIT, + e8 = VK_SAMPLE_COUNT_8_BIT, + e16 = VK_SAMPLE_COUNT_16_BIT, + e32 = VK_SAMPLE_COUNT_32_BIT, + e64 = VK_SAMPLE_COUNT_64_BIT + }; + + VULKAN_HPP_INLINE std::string to_string( SampleCountFlagBits value ) + { + switch ( value ) + { + case SampleCountFlagBits::e1: return "1"; + case SampleCountFlagBits::e2: return "2"; + case SampleCountFlagBits::e4: return "4"; + case SampleCountFlagBits::e8: return "8"; + case SampleCountFlagBits::e16: return "16"; + case SampleCountFlagBits::e32: return "32"; + case SampleCountFlagBits::e64: return "64"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SystemAllocationScope + { + eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND, + eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT, + eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE, + eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE, + eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE + }; + + VULKAN_HPP_INLINE std::string to_string( SystemAllocationScope value ) + { + switch ( value ) + { + case SystemAllocationScope::eCommand: return "Command"; + case SystemAllocationScope::eObject: return "Object"; + case SystemAllocationScope::eCache: return "Cache"; + case SystemAllocationScope::eDevice: return "Device"; + case SystemAllocationScope::eInstance: return "Instance"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class InstanceCreateFlagBits + { + }; + + VULKAN_HPP_INLINE std::string to_string( InstanceCreateFlagBits ) + { + return "(void)"; + } + + enum class DeviceCreateFlagBits + { + }; + + VULKAN_HPP_INLINE std::string to_string( DeviceCreateFlagBits ) + { + return "(void)"; + } + + enum class PipelineStageFlagBits : VkPipelineStageFlags + { + eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, + eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, + eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT, + eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT, + eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT, + eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, + eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT, + eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, + eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT, + eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, + eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, + eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, + eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT, + eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, + eHost = VK_PIPELINE_STAGE_HOST_BIT, + eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, + eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, + eNone = VK_PIPELINE_STAGE_NONE, + eTransformFeedbackEXT = VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT, + eConditionalRenderingEXT = VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT, + eAccelerationStructureBuildKHR = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, + eRayTracingShaderKHR = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR, + eTaskShaderNV = VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV, + eMeshShaderNV = VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV, + eFragmentDensityProcessEXT = VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT, + eFragmentShadingRateAttachmentKHR = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + eCommandPreprocessNV = VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV, + eAccelerationStructureBuildNV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV, + eNoneKHR = VK_PIPELINE_STAGE_NONE_KHR, + eRayTracingShaderNV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV, + eShadingRateImageNV = VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineStageFlagBits value ) + { + switch ( value ) + { + case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe"; + case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect"; + case PipelineStageFlagBits::eVertexInput: return "VertexInput"; + case PipelineStageFlagBits::eVertexShader: return "VertexShader"; + case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader"; + case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader"; + case PipelineStageFlagBits::eGeometryShader: return "GeometryShader"; + case PipelineStageFlagBits::eFragmentShader: return "FragmentShader"; + case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests"; + case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests"; + case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput"; + case PipelineStageFlagBits::eComputeShader: return "ComputeShader"; + case PipelineStageFlagBits::eTransfer: return "Transfer"; + case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe"; + case PipelineStageFlagBits::eHost: return "Host"; + case PipelineStageFlagBits::eAllGraphics: return "AllGraphics"; + case PipelineStageFlagBits::eAllCommands: return "AllCommands"; + case PipelineStageFlagBits::eNone: return "None"; + case PipelineStageFlagBits::eTransformFeedbackEXT: return "TransformFeedbackEXT"; + case PipelineStageFlagBits::eConditionalRenderingEXT: return "ConditionalRenderingEXT"; + case PipelineStageFlagBits::eAccelerationStructureBuildKHR: return "AccelerationStructureBuildKHR"; + case PipelineStageFlagBits::eRayTracingShaderKHR: return "RayTracingShaderKHR"; + case PipelineStageFlagBits::eTaskShaderNV: return "TaskShaderNV"; + case PipelineStageFlagBits::eMeshShaderNV: return "MeshShaderNV"; + case PipelineStageFlagBits::eFragmentDensityProcessEXT: return "FragmentDensityProcessEXT"; + case PipelineStageFlagBits::eFragmentShadingRateAttachmentKHR: return "FragmentShadingRateAttachmentKHR"; + case PipelineStageFlagBits::eCommandPreprocessNV: return "CommandPreprocessNV"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class MemoryMapFlagBits : VkMemoryMapFlags + { + }; + + VULKAN_HPP_INLINE std::string to_string( MemoryMapFlagBits ) + { + return "(void)"; + } + + enum class ImageAspectFlagBits : VkImageAspectFlags + { + eColor = VK_IMAGE_ASPECT_COLOR_BIT, + eDepth = VK_IMAGE_ASPECT_DEPTH_BIT, + eStencil = VK_IMAGE_ASPECT_STENCIL_BIT, + eMetadata = VK_IMAGE_ASPECT_METADATA_BIT, + ePlane0 = VK_IMAGE_ASPECT_PLANE_0_BIT, + ePlane1 = VK_IMAGE_ASPECT_PLANE_1_BIT, + ePlane2 = VK_IMAGE_ASPECT_PLANE_2_BIT, + eMemoryPlane0EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT, + eMemoryPlane1EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT, + eMemoryPlane2EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT, + eMemoryPlane3EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT, + eNoneKHR = VK_IMAGE_ASPECT_NONE_KHR, + ePlane0KHR = VK_IMAGE_ASPECT_PLANE_0_BIT_KHR, + ePlane1KHR = VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, + ePlane2KHR = VK_IMAGE_ASPECT_PLANE_2_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( ImageAspectFlagBits value ) + { + switch ( value ) + { + case ImageAspectFlagBits::eColor: return "Color"; + case ImageAspectFlagBits::eDepth: return "Depth"; + case ImageAspectFlagBits::eStencil: return "Stencil"; + case ImageAspectFlagBits::eMetadata: return "Metadata"; + case ImageAspectFlagBits::ePlane0: return "Plane0"; + case ImageAspectFlagBits::ePlane1: return "Plane1"; + case ImageAspectFlagBits::ePlane2: return "Plane2"; + case ImageAspectFlagBits::eMemoryPlane0EXT: return "MemoryPlane0EXT"; + case ImageAspectFlagBits::eMemoryPlane1EXT: return "MemoryPlane1EXT"; + case ImageAspectFlagBits::eMemoryPlane2EXT: return "MemoryPlane2EXT"; + case ImageAspectFlagBits::eMemoryPlane3EXT: return "MemoryPlane3EXT"; + case ImageAspectFlagBits::eNoneKHR: return "NoneKHR"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SparseImageFormatFlagBits : VkSparseImageFormatFlags + { + eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT, + eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT, + eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT + }; + + VULKAN_HPP_INLINE std::string to_string( SparseImageFormatFlagBits value ) + { + switch ( value ) + { + case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail"; + case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize"; + case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SparseMemoryBindFlagBits : VkSparseMemoryBindFlags + { + eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT + }; + + VULKAN_HPP_INLINE std::string to_string( SparseMemoryBindFlagBits value ) + { + switch ( value ) + { + case SparseMemoryBindFlagBits::eMetadata: return "Metadata"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class FenceCreateFlagBits : VkFenceCreateFlags + { + eSignaled = VK_FENCE_CREATE_SIGNALED_BIT + }; + + VULKAN_HPP_INLINE std::string to_string( FenceCreateFlagBits value ) + { + switch ( value ) + { + case FenceCreateFlagBits::eSignaled: return "Signaled"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SemaphoreCreateFlagBits : VkSemaphoreCreateFlags + { + }; + + VULKAN_HPP_INLINE std::string to_string( SemaphoreCreateFlagBits ) + { + return "(void)"; + } + + enum class EventCreateFlagBits : VkEventCreateFlags + { + eDeviceOnly = VK_EVENT_CREATE_DEVICE_ONLY_BIT, + eDeviceOnlyKHR = VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( EventCreateFlagBits value ) + { + switch ( value ) + { + case EventCreateFlagBits::eDeviceOnly: return "DeviceOnly"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class QueryPipelineStatisticFlagBits : VkQueryPipelineStatisticFlags + { + eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, + eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, + eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, + eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, + eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, + eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, + eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, + eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT, + eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, + eTessellationEvaluationShaderInvocations = + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT, + eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT + }; + + VULKAN_HPP_INLINE std::string to_string( QueryPipelineStatisticFlagBits value ) + { + switch ( value ) + { + case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices"; + case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives"; + case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations"; + case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations"; + case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives"; + case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations"; + case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives"; + case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations"; + case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches"; + case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: + return "TessellationEvaluationShaderInvocations"; + case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class QueryResultFlagBits : VkQueryResultFlags + { + e64 = VK_QUERY_RESULT_64_BIT, + eWait = VK_QUERY_RESULT_WAIT_BIT, + eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT, + ePartial = VK_QUERY_RESULT_PARTIAL_BIT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eWithStatusKHR = VK_QUERY_RESULT_WITH_STATUS_BIT_KHR +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + }; + + VULKAN_HPP_INLINE std::string to_string( QueryResultFlagBits value ) + { + switch ( value ) + { + case QueryResultFlagBits::e64: return "64"; + case QueryResultFlagBits::eWait: return "Wait"; + case QueryResultFlagBits::eWithAvailability: return "WithAvailability"; + case QueryResultFlagBits::ePartial: return "Partial"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case QueryResultFlagBits::eWithStatusKHR: return "WithStatusKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class QueryType + { + eOcclusion = VK_QUERY_TYPE_OCCLUSION, + ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS, + eTimestamp = VK_QUERY_TYPE_TIMESTAMP, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eResultStatusOnlyKHR = VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eTransformFeedbackStreamEXT = VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT, + ePerformanceQueryKHR = VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR, + eAccelerationStructureCompactedSizeKHR = VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR, + eAccelerationStructureSerializationSizeKHR = VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR, + eAccelerationStructureCompactedSizeNV = VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV, + ePerformanceQueryINTEL = VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoEncodeBitstreamBufferRangeKHR = VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + }; + + VULKAN_HPP_INLINE std::string to_string( QueryType value ) + { + switch ( value ) + { + case QueryType::eOcclusion: return "Occlusion"; + case QueryType::ePipelineStatistics: return "PipelineStatistics"; + case QueryType::eTimestamp: return "Timestamp"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case QueryType::eResultStatusOnlyKHR: return "ResultStatusOnlyKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case QueryType::eTransformFeedbackStreamEXT: return "TransformFeedbackStreamEXT"; + case QueryType::ePerformanceQueryKHR: return "PerformanceQueryKHR"; + case QueryType::eAccelerationStructureCompactedSizeKHR: return "AccelerationStructureCompactedSizeKHR"; + case QueryType::eAccelerationStructureSerializationSizeKHR: return "AccelerationStructureSerializationSizeKHR"; + case QueryType::eAccelerationStructureCompactedSizeNV: return "AccelerationStructureCompactedSizeNV"; + case QueryType::ePerformanceQueryINTEL: return "PerformanceQueryINTEL"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case QueryType::eVideoEncodeBitstreamBufferRangeKHR: return "VideoEncodeBitstreamBufferRangeKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class QueryPoolCreateFlagBits + { + }; + + VULKAN_HPP_INLINE std::string to_string( QueryPoolCreateFlagBits ) + { + return "(void)"; + } + + enum class BufferCreateFlagBits : VkBufferCreateFlags + { + eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT, + eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, + eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, + eProtected = VK_BUFFER_CREATE_PROTECTED_BIT, + eDeviceAddressCaptureReplay = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, + eDeviceAddressCaptureReplayEXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT, + eDeviceAddressCaptureReplayKHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( BufferCreateFlagBits value ) + { + switch ( value ) + { + case BufferCreateFlagBits::eSparseBinding: return "SparseBinding"; + case BufferCreateFlagBits::eSparseResidency: return "SparseResidency"; + case BufferCreateFlagBits::eSparseAliased: return "SparseAliased"; + case BufferCreateFlagBits::eProtected: return "Protected"; + case BufferCreateFlagBits::eDeviceAddressCaptureReplay: return "DeviceAddressCaptureReplay"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class BufferUsageFlagBits : VkBufferUsageFlags + { + eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT, + eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT, + eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, + eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, + eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, + eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, + eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT, + eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, + eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT, + eShaderDeviceAddress = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoDecodeSrcKHR = VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR, + eVideoDecodeDstKHR = VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eTransformFeedbackBufferEXT = VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, + eTransformFeedbackCounterBufferEXT = VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT, + eConditionalRenderingEXT = VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT, + eAccelerationStructureBuildInputReadOnlyKHR = VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR, + eAccelerationStructureStorageKHR = VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR, + eShaderBindingTableKHR = VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoEncodeDstKHR = VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR, + eVideoEncodeSrcKHR = VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eRayTracingNV = VK_BUFFER_USAGE_RAY_TRACING_BIT_NV, + eShaderDeviceAddressEXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT, + eShaderDeviceAddressKHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( BufferUsageFlagBits value ) + { + switch ( value ) + { + case BufferUsageFlagBits::eTransferSrc: return "TransferSrc"; + case BufferUsageFlagBits::eTransferDst: return "TransferDst"; + case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer"; + case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer"; + case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer"; + case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer"; + case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer"; + case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer"; + case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer"; + case BufferUsageFlagBits::eShaderDeviceAddress: return "ShaderDeviceAddress"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case BufferUsageFlagBits::eVideoDecodeSrcKHR: return "VideoDecodeSrcKHR"; + case BufferUsageFlagBits::eVideoDecodeDstKHR: return "VideoDecodeDstKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case BufferUsageFlagBits::eTransformFeedbackBufferEXT: return "TransformFeedbackBufferEXT"; + case BufferUsageFlagBits::eTransformFeedbackCounterBufferEXT: return "TransformFeedbackCounterBufferEXT"; + case BufferUsageFlagBits::eConditionalRenderingEXT: return "ConditionalRenderingEXT"; + case BufferUsageFlagBits::eAccelerationStructureBuildInputReadOnlyKHR: + return "AccelerationStructureBuildInputReadOnlyKHR"; + case BufferUsageFlagBits::eAccelerationStructureStorageKHR: return "AccelerationStructureStorageKHR"; + case BufferUsageFlagBits::eShaderBindingTableKHR: return "ShaderBindingTableKHR"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case BufferUsageFlagBits::eVideoEncodeDstKHR: return "VideoEncodeDstKHR"; + case BufferUsageFlagBits::eVideoEncodeSrcKHR: return "VideoEncodeSrcKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SharingMode + { + eExclusive = VK_SHARING_MODE_EXCLUSIVE, + eConcurrent = VK_SHARING_MODE_CONCURRENT + }; + + VULKAN_HPP_INLINE std::string to_string( SharingMode value ) + { + switch ( value ) + { + case SharingMode::eExclusive: return "Exclusive"; + case SharingMode::eConcurrent: return "Concurrent"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class BufferViewCreateFlagBits : VkBufferViewCreateFlags + { + }; + + VULKAN_HPP_INLINE std::string to_string( BufferViewCreateFlagBits ) + { + return "(void)"; + } + + enum class ImageLayout + { + eUndefined = VK_IMAGE_LAYOUT_UNDEFINED, + eGeneral = VK_IMAGE_LAYOUT_GENERAL, + eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, + eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, + eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, + eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED, + eDepthReadOnlyStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, + eDepthAttachmentStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, + eDepthAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, + eDepthReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, + eStencilAttachmentOptimal = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, + eStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, + eReadOnlyOptimal = VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL, + eAttachmentOptimal = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL, + ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoDecodeDstKHR = VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR, + eVideoDecodeSrcKHR = VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR, + eVideoDecodeDpbKHR = VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, + eFragmentDensityMapOptimalEXT = VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT, + eFragmentShadingRateAttachmentOptimalKHR = VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoEncodeDstKHR = VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR, + eVideoEncodeSrcKHR = VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR, + eVideoEncodeDpbKHR = VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eAttachmentOptimalKHR = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR, + eDepthAttachmentOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR, + eDepthAttachmentStencilReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR, + eDepthReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR, + eDepthReadOnlyStencilAttachmentOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR, + eReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR, + eShadingRateOptimalNV = VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV, + eStencilAttachmentOptimalKHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR, + eStencilReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( ImageLayout value ) + { + switch ( value ) + { + case ImageLayout::eUndefined: return "Undefined"; + case ImageLayout::eGeneral: return "General"; + case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal"; + case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal"; + case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal"; + case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal"; + case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal"; + case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal"; + case ImageLayout::ePreinitialized: return "Preinitialized"; + case ImageLayout::eDepthReadOnlyStencilAttachmentOptimal: return "DepthReadOnlyStencilAttachmentOptimal"; + case ImageLayout::eDepthAttachmentStencilReadOnlyOptimal: return "DepthAttachmentStencilReadOnlyOptimal"; + case ImageLayout::eDepthAttachmentOptimal: return "DepthAttachmentOptimal"; + case ImageLayout::eDepthReadOnlyOptimal: return "DepthReadOnlyOptimal"; + case ImageLayout::eStencilAttachmentOptimal: return "StencilAttachmentOptimal"; + case ImageLayout::eStencilReadOnlyOptimal: return "StencilReadOnlyOptimal"; + case ImageLayout::eReadOnlyOptimal: return "ReadOnlyOptimal"; + case ImageLayout::eAttachmentOptimal: return "AttachmentOptimal"; + case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case ImageLayout::eVideoDecodeDstKHR: return "VideoDecodeDstKHR"; + case ImageLayout::eVideoDecodeSrcKHR: return "VideoDecodeSrcKHR"; + case ImageLayout::eVideoDecodeDpbKHR: return "VideoDecodeDpbKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case ImageLayout::eSharedPresentKHR: return "SharedPresentKHR"; + case ImageLayout::eFragmentDensityMapOptimalEXT: return "FragmentDensityMapOptimalEXT"; + case ImageLayout::eFragmentShadingRateAttachmentOptimalKHR: return "FragmentShadingRateAttachmentOptimalKHR"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case ImageLayout::eVideoEncodeDstKHR: return "VideoEncodeDstKHR"; + case ImageLayout::eVideoEncodeSrcKHR: return "VideoEncodeSrcKHR"; + case ImageLayout::eVideoEncodeDpbKHR: return "VideoEncodeDpbKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ComponentSwizzle + { + eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY, + eZero = VK_COMPONENT_SWIZZLE_ZERO, + eOne = VK_COMPONENT_SWIZZLE_ONE, + eR = VK_COMPONENT_SWIZZLE_R, + eG = VK_COMPONENT_SWIZZLE_G, + eB = VK_COMPONENT_SWIZZLE_B, + eA = VK_COMPONENT_SWIZZLE_A + }; + + VULKAN_HPP_INLINE std::string to_string( ComponentSwizzle value ) + { + switch ( value ) + { + case ComponentSwizzle::eIdentity: return "Identity"; + case ComponentSwizzle::eZero: return "Zero"; + case ComponentSwizzle::eOne: return "One"; + case ComponentSwizzle::eR: return "R"; + case ComponentSwizzle::eG: return "G"; + case ComponentSwizzle::eB: return "B"; + case ComponentSwizzle::eA: return "A"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ImageViewCreateFlagBits : VkImageViewCreateFlags + { + eFragmentDensityMapDynamicEXT = VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT, + eFragmentDensityMapDeferredEXT = VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( ImageViewCreateFlagBits value ) + { + switch ( value ) + { + case ImageViewCreateFlagBits::eFragmentDensityMapDynamicEXT: return "FragmentDensityMapDynamicEXT"; + case ImageViewCreateFlagBits::eFragmentDensityMapDeferredEXT: return "FragmentDensityMapDeferredEXT"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ImageViewType + { + e1D = VK_IMAGE_VIEW_TYPE_1D, + e2D = VK_IMAGE_VIEW_TYPE_2D, + e3D = VK_IMAGE_VIEW_TYPE_3D, + eCube = VK_IMAGE_VIEW_TYPE_CUBE, + e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY, + e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY, + eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY + }; + + VULKAN_HPP_INLINE std::string to_string( ImageViewType value ) + { + switch ( value ) + { + case ImageViewType::e1D: return "1D"; + case ImageViewType::e2D: return "2D"; + case ImageViewType::e3D: return "3D"; + case ImageViewType::eCube: return "Cube"; + case ImageViewType::e1DArray: return "1DArray"; + case ImageViewType::e2DArray: return "2DArray"; + case ImageViewType::eCubeArray: return "CubeArray"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ShaderModuleCreateFlagBits : VkShaderModuleCreateFlags + { + }; + + VULKAN_HPP_INLINE std::string to_string( ShaderModuleCreateFlagBits ) + { + return "(void)"; + } + + enum class BlendFactor + { + eZero = VK_BLEND_FACTOR_ZERO, + eOne = VK_BLEND_FACTOR_ONE, + eSrcColor = VK_BLEND_FACTOR_SRC_COLOR, + eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR, + eDstColor = VK_BLEND_FACTOR_DST_COLOR, + eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR, + eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA, + eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA, + eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA, + eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA, + eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR, + eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR, + eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA, + eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA, + eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE, + eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR, + eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, + eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA, + eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA + }; + + VULKAN_HPP_INLINE std::string to_string( BlendFactor value ) + { + switch ( value ) + { + case BlendFactor::eZero: return "Zero"; + case BlendFactor::eOne: return "One"; + case BlendFactor::eSrcColor: return "SrcColor"; + case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor"; + case BlendFactor::eDstColor: return "DstColor"; + case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor"; + case BlendFactor::eSrcAlpha: return "SrcAlpha"; + case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha"; + case BlendFactor::eDstAlpha: return "DstAlpha"; + case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha"; + case BlendFactor::eConstantColor: return "ConstantColor"; + case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor"; + case BlendFactor::eConstantAlpha: return "ConstantAlpha"; + case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha"; + case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate"; + case BlendFactor::eSrc1Color: return "Src1Color"; + case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color"; + case BlendFactor::eSrc1Alpha: return "Src1Alpha"; + case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class BlendOp + { + eAdd = VK_BLEND_OP_ADD, + eSubtract = VK_BLEND_OP_SUBTRACT, + eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT, + eMin = VK_BLEND_OP_MIN, + eMax = VK_BLEND_OP_MAX, + eZeroEXT = VK_BLEND_OP_ZERO_EXT, + eSrcEXT = VK_BLEND_OP_SRC_EXT, + eDstEXT = VK_BLEND_OP_DST_EXT, + eSrcOverEXT = VK_BLEND_OP_SRC_OVER_EXT, + eDstOverEXT = VK_BLEND_OP_DST_OVER_EXT, + eSrcInEXT = VK_BLEND_OP_SRC_IN_EXT, + eDstInEXT = VK_BLEND_OP_DST_IN_EXT, + eSrcOutEXT = VK_BLEND_OP_SRC_OUT_EXT, + eDstOutEXT = VK_BLEND_OP_DST_OUT_EXT, + eSrcAtopEXT = VK_BLEND_OP_SRC_ATOP_EXT, + eDstAtopEXT = VK_BLEND_OP_DST_ATOP_EXT, + eXorEXT = VK_BLEND_OP_XOR_EXT, + eMultiplyEXT = VK_BLEND_OP_MULTIPLY_EXT, + eScreenEXT = VK_BLEND_OP_SCREEN_EXT, + eOverlayEXT = VK_BLEND_OP_OVERLAY_EXT, + eDarkenEXT = VK_BLEND_OP_DARKEN_EXT, + eLightenEXT = VK_BLEND_OP_LIGHTEN_EXT, + eColordodgeEXT = VK_BLEND_OP_COLORDODGE_EXT, + eColorburnEXT = VK_BLEND_OP_COLORBURN_EXT, + eHardlightEXT = VK_BLEND_OP_HARDLIGHT_EXT, + eSoftlightEXT = VK_BLEND_OP_SOFTLIGHT_EXT, + eDifferenceEXT = VK_BLEND_OP_DIFFERENCE_EXT, + eExclusionEXT = VK_BLEND_OP_EXCLUSION_EXT, + eInvertEXT = VK_BLEND_OP_INVERT_EXT, + eInvertRgbEXT = VK_BLEND_OP_INVERT_RGB_EXT, + eLineardodgeEXT = VK_BLEND_OP_LINEARDODGE_EXT, + eLinearburnEXT = VK_BLEND_OP_LINEARBURN_EXT, + eVividlightEXT = VK_BLEND_OP_VIVIDLIGHT_EXT, + eLinearlightEXT = VK_BLEND_OP_LINEARLIGHT_EXT, + ePinlightEXT = VK_BLEND_OP_PINLIGHT_EXT, + eHardmixEXT = VK_BLEND_OP_HARDMIX_EXT, + eHslHueEXT = VK_BLEND_OP_HSL_HUE_EXT, + eHslSaturationEXT = VK_BLEND_OP_HSL_SATURATION_EXT, + eHslColorEXT = VK_BLEND_OP_HSL_COLOR_EXT, + eHslLuminosityEXT = VK_BLEND_OP_HSL_LUMINOSITY_EXT, + ePlusEXT = VK_BLEND_OP_PLUS_EXT, + ePlusClampedEXT = VK_BLEND_OP_PLUS_CLAMPED_EXT, + ePlusClampedAlphaEXT = VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT, + ePlusDarkerEXT = VK_BLEND_OP_PLUS_DARKER_EXT, + eMinusEXT = VK_BLEND_OP_MINUS_EXT, + eMinusClampedEXT = VK_BLEND_OP_MINUS_CLAMPED_EXT, + eContrastEXT = VK_BLEND_OP_CONTRAST_EXT, + eInvertOvgEXT = VK_BLEND_OP_INVERT_OVG_EXT, + eRedEXT = VK_BLEND_OP_RED_EXT, + eGreenEXT = VK_BLEND_OP_GREEN_EXT, + eBlueEXT = VK_BLEND_OP_BLUE_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( BlendOp value ) + { + switch ( value ) + { + case BlendOp::eAdd: return "Add"; + case BlendOp::eSubtract: return "Subtract"; + case BlendOp::eReverseSubtract: return "ReverseSubtract"; + case BlendOp::eMin: return "Min"; + case BlendOp::eMax: return "Max"; + case BlendOp::eZeroEXT: return "ZeroEXT"; + case BlendOp::eSrcEXT: return "SrcEXT"; + case BlendOp::eDstEXT: return "DstEXT"; + case BlendOp::eSrcOverEXT: return "SrcOverEXT"; + case BlendOp::eDstOverEXT: return "DstOverEXT"; + case BlendOp::eSrcInEXT: return "SrcInEXT"; + case BlendOp::eDstInEXT: return "DstInEXT"; + case BlendOp::eSrcOutEXT: return "SrcOutEXT"; + case BlendOp::eDstOutEXT: return "DstOutEXT"; + case BlendOp::eSrcAtopEXT: return "SrcAtopEXT"; + case BlendOp::eDstAtopEXT: return "DstAtopEXT"; + case BlendOp::eXorEXT: return "XorEXT"; + case BlendOp::eMultiplyEXT: return "MultiplyEXT"; + case BlendOp::eScreenEXT: return "ScreenEXT"; + case BlendOp::eOverlayEXT: return "OverlayEXT"; + case BlendOp::eDarkenEXT: return "DarkenEXT"; + case BlendOp::eLightenEXT: return "LightenEXT"; + case BlendOp::eColordodgeEXT: return "ColordodgeEXT"; + case BlendOp::eColorburnEXT: return "ColorburnEXT"; + case BlendOp::eHardlightEXT: return "HardlightEXT"; + case BlendOp::eSoftlightEXT: return "SoftlightEXT"; + case BlendOp::eDifferenceEXT: return "DifferenceEXT"; + case BlendOp::eExclusionEXT: return "ExclusionEXT"; + case BlendOp::eInvertEXT: return "InvertEXT"; + case BlendOp::eInvertRgbEXT: return "InvertRgbEXT"; + case BlendOp::eLineardodgeEXT: return "LineardodgeEXT"; + case BlendOp::eLinearburnEXT: return "LinearburnEXT"; + case BlendOp::eVividlightEXT: return "VividlightEXT"; + case BlendOp::eLinearlightEXT: return "LinearlightEXT"; + case BlendOp::ePinlightEXT: return "PinlightEXT"; + case BlendOp::eHardmixEXT: return "HardmixEXT"; + case BlendOp::eHslHueEXT: return "HslHueEXT"; + case BlendOp::eHslSaturationEXT: return "HslSaturationEXT"; + case BlendOp::eHslColorEXT: return "HslColorEXT"; + case BlendOp::eHslLuminosityEXT: return "HslLuminosityEXT"; + case BlendOp::ePlusEXT: return "PlusEXT"; + case BlendOp::ePlusClampedEXT: return "PlusClampedEXT"; + case BlendOp::ePlusClampedAlphaEXT: return "PlusClampedAlphaEXT"; + case BlendOp::ePlusDarkerEXT: return "PlusDarkerEXT"; + case BlendOp::eMinusEXT: return "MinusEXT"; + case BlendOp::eMinusClampedEXT: return "MinusClampedEXT"; + case BlendOp::eContrastEXT: return "ContrastEXT"; + case BlendOp::eInvertOvgEXT: return "InvertOvgEXT"; + case BlendOp::eRedEXT: return "RedEXT"; + case BlendOp::eGreenEXT: return "GreenEXT"; + case BlendOp::eBlueEXT: return "BlueEXT"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ColorComponentFlagBits : VkColorComponentFlags + { + eR = VK_COLOR_COMPONENT_R_BIT, + eG = VK_COLOR_COMPONENT_G_BIT, + eB = VK_COLOR_COMPONENT_B_BIT, + eA = VK_COLOR_COMPONENT_A_BIT + }; + + VULKAN_HPP_INLINE std::string to_string( ColorComponentFlagBits value ) + { + switch ( value ) + { + case ColorComponentFlagBits::eR: return "R"; + case ColorComponentFlagBits::eG: return "G"; + case ColorComponentFlagBits::eB: return "B"; + case ColorComponentFlagBits::eA: return "A"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class CompareOp + { + eNever = VK_COMPARE_OP_NEVER, + eLess = VK_COMPARE_OP_LESS, + eEqual = VK_COMPARE_OP_EQUAL, + eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL, + eGreater = VK_COMPARE_OP_GREATER, + eNotEqual = VK_COMPARE_OP_NOT_EQUAL, + eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL, + eAlways = VK_COMPARE_OP_ALWAYS + }; + + VULKAN_HPP_INLINE std::string to_string( CompareOp value ) + { + switch ( value ) + { + case CompareOp::eNever: return "Never"; + case CompareOp::eLess: return "Less"; + case CompareOp::eEqual: return "Equal"; + case CompareOp::eLessOrEqual: return "LessOrEqual"; + case CompareOp::eGreater: return "Greater"; + case CompareOp::eNotEqual: return "NotEqual"; + case CompareOp::eGreaterOrEqual: return "GreaterOrEqual"; + case CompareOp::eAlways: return "Always"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class CullModeFlagBits : VkCullModeFlags + { + eNone = VK_CULL_MODE_NONE, + eFront = VK_CULL_MODE_FRONT_BIT, + eBack = VK_CULL_MODE_BACK_BIT, + eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK + }; + + VULKAN_HPP_INLINE std::string to_string( CullModeFlagBits value ) + { + switch ( value ) + { + case CullModeFlagBits::eNone: return "None"; + case CullModeFlagBits::eFront: return "Front"; + case CullModeFlagBits::eBack: return "Back"; + case CullModeFlagBits::eFrontAndBack: return "FrontAndBack"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DynamicState + { + eViewport = VK_DYNAMIC_STATE_VIEWPORT, + eScissor = VK_DYNAMIC_STATE_SCISSOR, + eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH, + eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS, + eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS, + eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS, + eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK, + eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK, + eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE, + eCullMode = VK_DYNAMIC_STATE_CULL_MODE, + eFrontFace = VK_DYNAMIC_STATE_FRONT_FACE, + ePrimitiveTopology = VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY, + eViewportWithCount = VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT, + eScissorWithCount = VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT, + eVertexInputBindingStride = VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE, + eDepthTestEnable = VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE, + eDepthWriteEnable = VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE, + eDepthCompareOp = VK_DYNAMIC_STATE_DEPTH_COMPARE_OP, + eDepthBoundsTestEnable = VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE, + eStencilTestEnable = VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE, + eStencilOp = VK_DYNAMIC_STATE_STENCIL_OP, + eRasterizerDiscardEnable = VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE, + eDepthBiasEnable = VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE, + ePrimitiveRestartEnable = VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE, + eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV, + eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT, + eSampleLocationsEXT = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, + eRayTracingPipelineStackSizeKHR = VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR, + eViewportShadingRatePaletteNV = VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV, + eViewportCoarseSampleOrderNV = VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV, + eExclusiveScissorNV = VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV, + eFragmentShadingRateKHR = VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR, + eLineStippleEXT = VK_DYNAMIC_STATE_LINE_STIPPLE_EXT, + eVertexInputEXT = VK_DYNAMIC_STATE_VERTEX_INPUT_EXT, + ePatchControlPointsEXT = VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT, + eLogicOpEXT = VK_DYNAMIC_STATE_LOGIC_OP_EXT, + eColorWriteEnableEXT = VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT, + eCullModeEXT = VK_DYNAMIC_STATE_CULL_MODE_EXT, + eDepthBiasEnableEXT = VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT, + eDepthBoundsTestEnableEXT = VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT, + eDepthCompareOpEXT = VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT, + eDepthTestEnableEXT = VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT, + eDepthWriteEnableEXT = VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT, + eFrontFaceEXT = VK_DYNAMIC_STATE_FRONT_FACE_EXT, + ePrimitiveRestartEnableEXT = VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT, + ePrimitiveTopologyEXT = VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT, + eRasterizerDiscardEnableEXT = VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT, + eScissorWithCountEXT = VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT, + eStencilOpEXT = VK_DYNAMIC_STATE_STENCIL_OP_EXT, + eStencilTestEnableEXT = VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT, + eVertexInputBindingStrideEXT = VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT, + eViewportWithCountEXT = VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( DynamicState value ) + { + switch ( value ) + { + case DynamicState::eViewport: return "Viewport"; + case DynamicState::eScissor: return "Scissor"; + case DynamicState::eLineWidth: return "LineWidth"; + case DynamicState::eDepthBias: return "DepthBias"; + case DynamicState::eBlendConstants: return "BlendConstants"; + case DynamicState::eDepthBounds: return "DepthBounds"; + case DynamicState::eStencilCompareMask: return "StencilCompareMask"; + case DynamicState::eStencilWriteMask: return "StencilWriteMask"; + case DynamicState::eStencilReference: return "StencilReference"; + case DynamicState::eCullMode: return "CullMode"; + case DynamicState::eFrontFace: return "FrontFace"; + case DynamicState::ePrimitiveTopology: return "PrimitiveTopology"; + case DynamicState::eViewportWithCount: return "ViewportWithCount"; + case DynamicState::eScissorWithCount: return "ScissorWithCount"; + case DynamicState::eVertexInputBindingStride: return "VertexInputBindingStride"; + case DynamicState::eDepthTestEnable: return "DepthTestEnable"; + case DynamicState::eDepthWriteEnable: return "DepthWriteEnable"; + case DynamicState::eDepthCompareOp: return "DepthCompareOp"; + case DynamicState::eDepthBoundsTestEnable: return "DepthBoundsTestEnable"; + case DynamicState::eStencilTestEnable: return "StencilTestEnable"; + case DynamicState::eStencilOp: return "StencilOp"; + case DynamicState::eRasterizerDiscardEnable: return "RasterizerDiscardEnable"; + case DynamicState::eDepthBiasEnable: return "DepthBiasEnable"; + case DynamicState::ePrimitiveRestartEnable: return "PrimitiveRestartEnable"; + case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV"; + case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT"; + case DynamicState::eSampleLocationsEXT: return "SampleLocationsEXT"; + case DynamicState::eRayTracingPipelineStackSizeKHR: return "RayTracingPipelineStackSizeKHR"; + case DynamicState::eViewportShadingRatePaletteNV: return "ViewportShadingRatePaletteNV"; + case DynamicState::eViewportCoarseSampleOrderNV: return "ViewportCoarseSampleOrderNV"; + case DynamicState::eExclusiveScissorNV: return "ExclusiveScissorNV"; + case DynamicState::eFragmentShadingRateKHR: return "FragmentShadingRateKHR"; + case DynamicState::eLineStippleEXT: return "LineStippleEXT"; + case DynamicState::eVertexInputEXT: return "VertexInputEXT"; + case DynamicState::ePatchControlPointsEXT: return "PatchControlPointsEXT"; + case DynamicState::eLogicOpEXT: return "LogicOpEXT"; + case DynamicState::eColorWriteEnableEXT: return "ColorWriteEnableEXT"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class FrontFace + { + eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE, + eClockwise = VK_FRONT_FACE_CLOCKWISE + }; + + VULKAN_HPP_INLINE std::string to_string( FrontFace value ) + { + switch ( value ) + { + case FrontFace::eCounterClockwise: return "CounterClockwise"; + case FrontFace::eClockwise: return "Clockwise"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class LogicOp + { + eClear = VK_LOGIC_OP_CLEAR, + eAnd = VK_LOGIC_OP_AND, + eAndReverse = VK_LOGIC_OP_AND_REVERSE, + eCopy = VK_LOGIC_OP_COPY, + eAndInverted = VK_LOGIC_OP_AND_INVERTED, + eNoOp = VK_LOGIC_OP_NO_OP, + eXor = VK_LOGIC_OP_XOR, + eOr = VK_LOGIC_OP_OR, + eNor = VK_LOGIC_OP_NOR, + eEquivalent = VK_LOGIC_OP_EQUIVALENT, + eInvert = VK_LOGIC_OP_INVERT, + eOrReverse = VK_LOGIC_OP_OR_REVERSE, + eCopyInverted = VK_LOGIC_OP_COPY_INVERTED, + eOrInverted = VK_LOGIC_OP_OR_INVERTED, + eNand = VK_LOGIC_OP_NAND, + eSet = VK_LOGIC_OP_SET + }; + + VULKAN_HPP_INLINE std::string to_string( LogicOp value ) + { + switch ( value ) + { + case LogicOp::eClear: return "Clear"; + case LogicOp::eAnd: return "And"; + case LogicOp::eAndReverse: return "AndReverse"; + case LogicOp::eCopy: return "Copy"; + case LogicOp::eAndInverted: return "AndInverted"; + case LogicOp::eNoOp: return "NoOp"; + case LogicOp::eXor: return "Xor"; + case LogicOp::eOr: return "Or"; + case LogicOp::eNor: return "Nor"; + case LogicOp::eEquivalent: return "Equivalent"; + case LogicOp::eInvert: return "Invert"; + case LogicOp::eOrReverse: return "OrReverse"; + case LogicOp::eCopyInverted: return "CopyInverted"; + case LogicOp::eOrInverted: return "OrInverted"; + case LogicOp::eNand: return "Nand"; + case LogicOp::eSet: return "Set"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PipelineCreateFlagBits : VkPipelineCreateFlags + { + eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT, + eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT, + eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT, + eViewIndexFromDeviceIndex = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT, + eDispatchBase = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT, + eFailOnPipelineCompileRequired = VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT, + eEarlyReturnOnFailure = VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT, + eRenderingFragmentShadingRateAttachmentKHR = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + eRenderingFragmentDensityMapAttachmentEXT = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT, + eRayTracingNoNullAnyHitShadersKHR = VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, + eRayTracingNoNullClosestHitShadersKHR = VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, + eRayTracingNoNullMissShadersKHR = VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR, + eRayTracingNoNullIntersectionShadersKHR = VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, + eRayTracingSkipTrianglesKHR = VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR, + eRayTracingSkipAabbsKHR = VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR, + eRayTracingShaderGroupHandleCaptureReplayKHR = + VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR, + eDeferCompileNV = VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV, + eCaptureStatisticsKHR = VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR, + eCaptureInternalRepresentationsKHR = VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR, + eIndirectBindableNV = VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV, + eLibraryKHR = VK_PIPELINE_CREATE_LIBRARY_BIT_KHR, + eRayTracingAllowMotionNV = VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV, + eDispatchBaseKHR = VK_PIPELINE_CREATE_DISPATCH_BASE_KHR, + eEarlyReturnOnFailureEXT = VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT, + eFailOnPipelineCompileRequiredEXT = VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT, + eViewIndexFromDeviceIndexKHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR, + eVkPipelineRasterizationStateCreateFragmentDensityMapAttachmentEXT = + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT, + eVkPipelineRasterizationStateCreateFragmentShadingRateAttachmentKHR = + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineCreateFlagBits value ) + { + switch ( value ) + { + case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization"; + case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives"; + case PipelineCreateFlagBits::eDerivative: return "Derivative"; + case PipelineCreateFlagBits::eViewIndexFromDeviceIndex: return "ViewIndexFromDeviceIndex"; + case PipelineCreateFlagBits::eDispatchBase: return "DispatchBase"; + case PipelineCreateFlagBits::eFailOnPipelineCompileRequired: return "FailOnPipelineCompileRequired"; + case PipelineCreateFlagBits::eEarlyReturnOnFailure: return "EarlyReturnOnFailure"; + case PipelineCreateFlagBits::eRenderingFragmentShadingRateAttachmentKHR: + return "RenderingFragmentShadingRateAttachmentKHR"; + case PipelineCreateFlagBits::eRenderingFragmentDensityMapAttachmentEXT: + return "RenderingFragmentDensityMapAttachmentEXT"; + case PipelineCreateFlagBits::eRayTracingNoNullAnyHitShadersKHR: return "RayTracingNoNullAnyHitShadersKHR"; + case PipelineCreateFlagBits::eRayTracingNoNullClosestHitShadersKHR: return "RayTracingNoNullClosestHitShadersKHR"; + case PipelineCreateFlagBits::eRayTracingNoNullMissShadersKHR: return "RayTracingNoNullMissShadersKHR"; + case PipelineCreateFlagBits::eRayTracingNoNullIntersectionShadersKHR: + return "RayTracingNoNullIntersectionShadersKHR"; + case PipelineCreateFlagBits::eRayTracingSkipTrianglesKHR: return "RayTracingSkipTrianglesKHR"; + case PipelineCreateFlagBits::eRayTracingSkipAabbsKHR: return "RayTracingSkipAabbsKHR"; + case PipelineCreateFlagBits::eRayTracingShaderGroupHandleCaptureReplayKHR: + return "RayTracingShaderGroupHandleCaptureReplayKHR"; + case PipelineCreateFlagBits::eDeferCompileNV: return "DeferCompileNV"; + case PipelineCreateFlagBits::eCaptureStatisticsKHR: return "CaptureStatisticsKHR"; + case PipelineCreateFlagBits::eCaptureInternalRepresentationsKHR: return "CaptureInternalRepresentationsKHR"; + case PipelineCreateFlagBits::eIndirectBindableNV: return "IndirectBindableNV"; + case PipelineCreateFlagBits::eLibraryKHR: return "LibraryKHR"; + case PipelineCreateFlagBits::eRayTracingAllowMotionNV: return "RayTracingAllowMotionNV"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PipelineShaderStageCreateFlagBits : VkPipelineShaderStageCreateFlags + { + eAllowVaryingSubgroupSize = VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT, + eRequireFullSubgroups = VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT, + eAllowVaryingSubgroupSizeEXT = VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, + eRequireFullSubgroupsEXT = VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineShaderStageCreateFlagBits value ) + { + switch ( value ) + { + case PipelineShaderStageCreateFlagBits::eAllowVaryingSubgroupSize: return "AllowVaryingSubgroupSize"; + case PipelineShaderStageCreateFlagBits::eRequireFullSubgroups: return "RequireFullSubgroups"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PolygonMode + { + eFill = VK_POLYGON_MODE_FILL, + eLine = VK_POLYGON_MODE_LINE, + ePoint = VK_POLYGON_MODE_POINT, + eFillRectangleNV = VK_POLYGON_MODE_FILL_RECTANGLE_NV + }; + + VULKAN_HPP_INLINE std::string to_string( PolygonMode value ) + { + switch ( value ) + { + case PolygonMode::eFill: return "Fill"; + case PolygonMode::eLine: return "Line"; + case PolygonMode::ePoint: return "Point"; + case PolygonMode::eFillRectangleNV: return "FillRectangleNV"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PrimitiveTopology + { + ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST, + eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST, + eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, + eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, + eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP, + eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN, + eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, + eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY, + eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, + eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY, + ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST + }; + + VULKAN_HPP_INLINE std::string to_string( PrimitiveTopology value ) + { + switch ( value ) + { + case PrimitiveTopology::ePointList: return "PointList"; + case PrimitiveTopology::eLineList: return "LineList"; + case PrimitiveTopology::eLineStrip: return "LineStrip"; + case PrimitiveTopology::eTriangleList: return "TriangleList"; + case PrimitiveTopology::eTriangleStrip: return "TriangleStrip"; + case PrimitiveTopology::eTriangleFan: return "TriangleFan"; + case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency"; + case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency"; + case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency"; + case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency"; + case PrimitiveTopology::ePatchList: return "PatchList"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ShaderStageFlagBits : VkShaderStageFlags + { + eVertex = VK_SHADER_STAGE_VERTEX_BIT, + eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, + eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, + eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT, + eFragment = VK_SHADER_STAGE_FRAGMENT_BIT, + eCompute = VK_SHADER_STAGE_COMPUTE_BIT, + eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS, + eAll = VK_SHADER_STAGE_ALL, + eRaygenKHR = VK_SHADER_STAGE_RAYGEN_BIT_KHR, + eAnyHitKHR = VK_SHADER_STAGE_ANY_HIT_BIT_KHR, + eClosestHitKHR = VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, + eMissKHR = VK_SHADER_STAGE_MISS_BIT_KHR, + eIntersectionKHR = VK_SHADER_STAGE_INTERSECTION_BIT_KHR, + eCallableKHR = VK_SHADER_STAGE_CALLABLE_BIT_KHR, + eTaskNV = VK_SHADER_STAGE_TASK_BIT_NV, + eMeshNV = VK_SHADER_STAGE_MESH_BIT_NV, + eSubpassShadingHUAWEI = VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI, + eAnyHitNV = VK_SHADER_STAGE_ANY_HIT_BIT_NV, + eCallableNV = VK_SHADER_STAGE_CALLABLE_BIT_NV, + eClosestHitNV = VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV, + eIntersectionNV = VK_SHADER_STAGE_INTERSECTION_BIT_NV, + eMissNV = VK_SHADER_STAGE_MISS_BIT_NV, + eRaygenNV = VK_SHADER_STAGE_RAYGEN_BIT_NV + }; + + VULKAN_HPP_INLINE std::string to_string( ShaderStageFlagBits value ) + { + switch ( value ) + { + case ShaderStageFlagBits::eVertex: return "Vertex"; + case ShaderStageFlagBits::eTessellationControl: return "TessellationControl"; + case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation"; + case ShaderStageFlagBits::eGeometry: return "Geometry"; + case ShaderStageFlagBits::eFragment: return "Fragment"; + case ShaderStageFlagBits::eCompute: return "Compute"; + case ShaderStageFlagBits::eAllGraphics: return "AllGraphics"; + case ShaderStageFlagBits::eAll: return "All"; + case ShaderStageFlagBits::eRaygenKHR: return "RaygenKHR"; + case ShaderStageFlagBits::eAnyHitKHR: return "AnyHitKHR"; + case ShaderStageFlagBits::eClosestHitKHR: return "ClosestHitKHR"; + case ShaderStageFlagBits::eMissKHR: return "MissKHR"; + case ShaderStageFlagBits::eIntersectionKHR: return "IntersectionKHR"; + case ShaderStageFlagBits::eCallableKHR: return "CallableKHR"; + case ShaderStageFlagBits::eTaskNV: return "TaskNV"; + case ShaderStageFlagBits::eMeshNV: return "MeshNV"; + case ShaderStageFlagBits::eSubpassShadingHUAWEI: return "SubpassShadingHUAWEI"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class StencilOp + { + eKeep = VK_STENCIL_OP_KEEP, + eZero = VK_STENCIL_OP_ZERO, + eReplace = VK_STENCIL_OP_REPLACE, + eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP, + eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP, + eInvert = VK_STENCIL_OP_INVERT, + eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP, + eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP + }; + + VULKAN_HPP_INLINE std::string to_string( StencilOp value ) + { + switch ( value ) + { + case StencilOp::eKeep: return "Keep"; + case StencilOp::eZero: return "Zero"; + case StencilOp::eReplace: return "Replace"; + case StencilOp::eIncrementAndClamp: return "IncrementAndClamp"; + case StencilOp::eDecrementAndClamp: return "DecrementAndClamp"; + case StencilOp::eInvert: return "Invert"; + case StencilOp::eIncrementAndWrap: return "IncrementAndWrap"; + case StencilOp::eDecrementAndWrap: return "DecrementAndWrap"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VertexInputRate + { + eVertex = VK_VERTEX_INPUT_RATE_VERTEX, + eInstance = VK_VERTEX_INPUT_RATE_INSTANCE + }; + + VULKAN_HPP_INLINE std::string to_string( VertexInputRate value ) + { + switch ( value ) + { + case VertexInputRate::eVertex: return "Vertex"; + case VertexInputRate::eInstance: return "Instance"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PipelineDynamicStateCreateFlagBits : VkPipelineDynamicStateCreateFlags + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineDynamicStateCreateFlagBits ) + { + return "(void)"; + } + + enum class PipelineInputAssemblyStateCreateFlagBits : VkPipelineInputAssemblyStateCreateFlags + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineInputAssemblyStateCreateFlagBits ) + { + return "(void)"; + } + + enum class PipelineLayoutCreateFlagBits : VkPipelineLayoutCreateFlags + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineLayoutCreateFlagBits ) + { + return "(void)"; + } + + enum class PipelineMultisampleStateCreateFlagBits : VkPipelineMultisampleStateCreateFlags + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineMultisampleStateCreateFlagBits ) + { + return "(void)"; + } + + enum class PipelineRasterizationStateCreateFlagBits : VkPipelineRasterizationStateCreateFlags + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationStateCreateFlagBits ) + { + return "(void)"; + } + + enum class PipelineTessellationStateCreateFlagBits : VkPipelineTessellationStateCreateFlags + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineTessellationStateCreateFlagBits ) + { + return "(void)"; + } + + enum class PipelineVertexInputStateCreateFlagBits : VkPipelineVertexInputStateCreateFlags + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineVertexInputStateCreateFlagBits ) + { + return "(void)"; + } + + enum class PipelineViewportStateCreateFlagBits : VkPipelineViewportStateCreateFlags + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineViewportStateCreateFlagBits ) + { + return "(void)"; + } + + enum class BorderColor + { + eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK, + eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK, + eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK, + eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK, + eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE, + eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE, + eFloatCustomEXT = VK_BORDER_COLOR_FLOAT_CUSTOM_EXT, + eIntCustomEXT = VK_BORDER_COLOR_INT_CUSTOM_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( BorderColor value ) + { + switch ( value ) + { + case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack"; + case BorderColor::eIntTransparentBlack: return "IntTransparentBlack"; + case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack"; + case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack"; + case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite"; + case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite"; + case BorderColor::eFloatCustomEXT: return "FloatCustomEXT"; + case BorderColor::eIntCustomEXT: return "IntCustomEXT"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class Filter + { + eNearest = VK_FILTER_NEAREST, + eLinear = VK_FILTER_LINEAR, + eCubicIMG = VK_FILTER_CUBIC_IMG, + eCubicEXT = VK_FILTER_CUBIC_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( Filter value ) + { + switch ( value ) + { + case Filter::eNearest: return "Nearest"; + case Filter::eLinear: return "Linear"; + case Filter::eCubicIMG: return "CubicIMG"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SamplerAddressMode + { + eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT, + eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, + eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, + eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, + eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, + eMirrorClampToEdgeKHR = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( SamplerAddressMode value ) + { + switch ( value ) + { + case SamplerAddressMode::eRepeat: return "Repeat"; + case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat"; + case SamplerAddressMode::eClampToEdge: return "ClampToEdge"; + case SamplerAddressMode::eClampToBorder: return "ClampToBorder"; + case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SamplerCreateFlagBits : VkSamplerCreateFlags + { + eSubsampledEXT = VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT, + eSubsampledCoarseReconstructionEXT = VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( SamplerCreateFlagBits value ) + { + switch ( value ) + { + case SamplerCreateFlagBits::eSubsampledEXT: return "SubsampledEXT"; + case SamplerCreateFlagBits::eSubsampledCoarseReconstructionEXT: return "SubsampledCoarseReconstructionEXT"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SamplerMipmapMode + { + eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST, + eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR + }; + + VULKAN_HPP_INLINE std::string to_string( SamplerMipmapMode value ) + { + switch ( value ) + { + case SamplerMipmapMode::eNearest: return "Nearest"; + case SamplerMipmapMode::eLinear: return "Linear"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DescriptorPoolCreateFlagBits : VkDescriptorPoolCreateFlags + { + eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, + eUpdateAfterBind = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, + eHostOnlyVALVE = VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE, + eUpdateAfterBindEXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( DescriptorPoolCreateFlagBits value ) + { + switch ( value ) + { + case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet"; + case DescriptorPoolCreateFlagBits::eUpdateAfterBind: return "UpdateAfterBind"; + case DescriptorPoolCreateFlagBits::eHostOnlyVALVE: return "HostOnlyVALVE"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DescriptorSetLayoutCreateFlagBits : VkDescriptorSetLayoutCreateFlags + { + eUpdateAfterBindPool = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, + ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR, + eHostOnlyPoolVALVE = VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE, + eUpdateAfterBindPoolEXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( DescriptorSetLayoutCreateFlagBits value ) + { + switch ( value ) + { + case DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPool: return "UpdateAfterBindPool"; + case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR"; + case DescriptorSetLayoutCreateFlagBits::eHostOnlyPoolVALVE: return "HostOnlyPoolVALVE"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DescriptorType + { + eSampler = VK_DESCRIPTOR_TYPE_SAMPLER, + eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, + eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, + eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, + eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, + eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, + eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, + eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, + eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, + eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, + eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, + eInlineUniformBlock = VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK, + eAccelerationStructureKHR = VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, + eAccelerationStructureNV = VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV, + eMutableVALVE = VK_DESCRIPTOR_TYPE_MUTABLE_VALVE, + eInlineUniformBlockEXT = VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( DescriptorType value ) + { + switch ( value ) + { + case DescriptorType::eSampler: return "Sampler"; + case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler"; + case DescriptorType::eSampledImage: return "SampledImage"; + case DescriptorType::eStorageImage: return "StorageImage"; + case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer"; + case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer"; + case DescriptorType::eUniformBuffer: return "UniformBuffer"; + case DescriptorType::eStorageBuffer: return "StorageBuffer"; + case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic"; + case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic"; + case DescriptorType::eInputAttachment: return "InputAttachment"; + case DescriptorType::eInlineUniformBlock: return "InlineUniformBlock"; + case DescriptorType::eAccelerationStructureKHR: return "AccelerationStructureKHR"; + case DescriptorType::eAccelerationStructureNV: return "AccelerationStructureNV"; + case DescriptorType::eMutableVALVE: return "MutableVALVE"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DescriptorPoolResetFlagBits : VkDescriptorPoolResetFlags + { + }; + + VULKAN_HPP_INLINE std::string to_string( DescriptorPoolResetFlagBits ) + { + return "(void)"; + } + + enum class AccessFlagBits : VkAccessFlags + { + eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT, + eIndexRead = VK_ACCESS_INDEX_READ_BIT, + eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT, + eUniformRead = VK_ACCESS_UNIFORM_READ_BIT, + eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT, + eShaderRead = VK_ACCESS_SHADER_READ_BIT, + eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT, + eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT, + eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, + eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT, + eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, + eTransferRead = VK_ACCESS_TRANSFER_READ_BIT, + eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT, + eHostRead = VK_ACCESS_HOST_READ_BIT, + eHostWrite = VK_ACCESS_HOST_WRITE_BIT, + eMemoryRead = VK_ACCESS_MEMORY_READ_BIT, + eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT, + eNone = VK_ACCESS_NONE, + eTransformFeedbackWriteEXT = VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, + eTransformFeedbackCounterReadEXT = VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, + eTransformFeedbackCounterWriteEXT = VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, + eConditionalRenderingReadEXT = VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT, + eColorAttachmentReadNoncoherentEXT = VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, + eAccelerationStructureReadKHR = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR, + eAccelerationStructureWriteKHR = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, + eFragmentDensityMapReadEXT = VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT, + eFragmentShadingRateAttachmentReadKHR = VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, + eCommandPreprocessReadNV = VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV, + eCommandPreprocessWriteNV = VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV, + eAccelerationStructureReadNV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV, + eAccelerationStructureWriteNV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV, + eNoneKHR = VK_ACCESS_NONE_KHR, + eShadingRateImageReadNV = VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV + }; + + VULKAN_HPP_INLINE std::string to_string( AccessFlagBits value ) + { + switch ( value ) + { + case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead"; + case AccessFlagBits::eIndexRead: return "IndexRead"; + case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead"; + case AccessFlagBits::eUniformRead: return "UniformRead"; + case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead"; + case AccessFlagBits::eShaderRead: return "ShaderRead"; + case AccessFlagBits::eShaderWrite: return "ShaderWrite"; + case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead"; + case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite"; + case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead"; + case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite"; + case AccessFlagBits::eTransferRead: return "TransferRead"; + case AccessFlagBits::eTransferWrite: return "TransferWrite"; + case AccessFlagBits::eHostRead: return "HostRead"; + case AccessFlagBits::eHostWrite: return "HostWrite"; + case AccessFlagBits::eMemoryRead: return "MemoryRead"; + case AccessFlagBits::eMemoryWrite: return "MemoryWrite"; + case AccessFlagBits::eNone: return "None"; + case AccessFlagBits::eTransformFeedbackWriteEXT: return "TransformFeedbackWriteEXT"; + case AccessFlagBits::eTransformFeedbackCounterReadEXT: return "TransformFeedbackCounterReadEXT"; + case AccessFlagBits::eTransformFeedbackCounterWriteEXT: return "TransformFeedbackCounterWriteEXT"; + case AccessFlagBits::eConditionalRenderingReadEXT: return "ConditionalRenderingReadEXT"; + case AccessFlagBits::eColorAttachmentReadNoncoherentEXT: return "ColorAttachmentReadNoncoherentEXT"; + case AccessFlagBits::eAccelerationStructureReadKHR: return "AccelerationStructureReadKHR"; + case AccessFlagBits::eAccelerationStructureWriteKHR: return "AccelerationStructureWriteKHR"; + case AccessFlagBits::eFragmentDensityMapReadEXT: return "FragmentDensityMapReadEXT"; + case AccessFlagBits::eFragmentShadingRateAttachmentReadKHR: return "FragmentShadingRateAttachmentReadKHR"; + case AccessFlagBits::eCommandPreprocessReadNV: return "CommandPreprocessReadNV"; + case AccessFlagBits::eCommandPreprocessWriteNV: return "CommandPreprocessWriteNV"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class AttachmentDescriptionFlagBits : VkAttachmentDescriptionFlags + { + eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT + }; + + VULKAN_HPP_INLINE std::string to_string( AttachmentDescriptionFlagBits value ) + { + switch ( value ) + { + case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class AttachmentLoadOp + { + eLoad = VK_ATTACHMENT_LOAD_OP_LOAD, + eClear = VK_ATTACHMENT_LOAD_OP_CLEAR, + eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE, + eNoneEXT = VK_ATTACHMENT_LOAD_OP_NONE_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( AttachmentLoadOp value ) + { + switch ( value ) + { + case AttachmentLoadOp::eLoad: return "Load"; + case AttachmentLoadOp::eClear: return "Clear"; + case AttachmentLoadOp::eDontCare: return "DontCare"; + case AttachmentLoadOp::eNoneEXT: return "NoneEXT"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class AttachmentStoreOp + { + eStore = VK_ATTACHMENT_STORE_OP_STORE, + eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE, + eNone = VK_ATTACHMENT_STORE_OP_NONE, + eNoneEXT = VK_ATTACHMENT_STORE_OP_NONE_EXT, + eNoneKHR = VK_ATTACHMENT_STORE_OP_NONE_KHR, + eNoneQCOM = VK_ATTACHMENT_STORE_OP_NONE_QCOM + }; + + VULKAN_HPP_INLINE std::string to_string( AttachmentStoreOp value ) + { + switch ( value ) + { + case AttachmentStoreOp::eStore: return "Store"; + case AttachmentStoreOp::eDontCare: return "DontCare"; + case AttachmentStoreOp::eNone: return "None"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DependencyFlagBits : VkDependencyFlags + { + eByRegion = VK_DEPENDENCY_BY_REGION_BIT, + eDeviceGroup = VK_DEPENDENCY_DEVICE_GROUP_BIT, + eViewLocal = VK_DEPENDENCY_VIEW_LOCAL_BIT, + eDeviceGroupKHR = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR, + eViewLocalKHR = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( DependencyFlagBits value ) + { + switch ( value ) + { + case DependencyFlagBits::eByRegion: return "ByRegion"; + case DependencyFlagBits::eDeviceGroup: return "DeviceGroup"; + case DependencyFlagBits::eViewLocal: return "ViewLocal"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class FramebufferCreateFlagBits : VkFramebufferCreateFlags + { + eImageless = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, + eImagelessKHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( FramebufferCreateFlagBits value ) + { + switch ( value ) + { + case FramebufferCreateFlagBits::eImageless: return "Imageless"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PipelineBindPoint + { + eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS, + eCompute = VK_PIPELINE_BIND_POINT_COMPUTE, + eRayTracingKHR = VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, + eSubpassShadingHUAWEI = VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI, + eRayTracingNV = VK_PIPELINE_BIND_POINT_RAY_TRACING_NV + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineBindPoint value ) + { + switch ( value ) + { + case PipelineBindPoint::eGraphics: return "Graphics"; + case PipelineBindPoint::eCompute: return "Compute"; + case PipelineBindPoint::eRayTracingKHR: return "RayTracingKHR"; + case PipelineBindPoint::eSubpassShadingHUAWEI: return "SubpassShadingHUAWEI"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class RenderPassCreateFlagBits : VkRenderPassCreateFlags + { + eTransformQCOM = VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM + }; + + VULKAN_HPP_INLINE std::string to_string( RenderPassCreateFlagBits value ) + { + switch ( value ) + { + case RenderPassCreateFlagBits::eTransformQCOM: return "TransformQCOM"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SubpassDescriptionFlagBits : VkSubpassDescriptionFlags + { + ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX, + ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX, + eFragmentRegionQCOM = VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM, + eShaderResolveQCOM = VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM, + eRasterizationOrderAttachmentColorAccessARM = + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM, + eRasterizationOrderAttachmentDepthAccessARM = + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM, + eRasterizationOrderAttachmentStencilAccessARM = + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM + }; + + VULKAN_HPP_INLINE std::string to_string( SubpassDescriptionFlagBits value ) + { + switch ( value ) + { + case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX"; + case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX"; + case SubpassDescriptionFlagBits::eFragmentRegionQCOM: return "FragmentRegionQCOM"; + case SubpassDescriptionFlagBits::eShaderResolveQCOM: return "ShaderResolveQCOM"; + case SubpassDescriptionFlagBits::eRasterizationOrderAttachmentColorAccessARM: + return "RasterizationOrderAttachmentColorAccessARM"; + case SubpassDescriptionFlagBits::eRasterizationOrderAttachmentDepthAccessARM: + return "RasterizationOrderAttachmentDepthAccessARM"; + case SubpassDescriptionFlagBits::eRasterizationOrderAttachmentStencilAccessARM: + return "RasterizationOrderAttachmentStencilAccessARM"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class CommandPoolCreateFlagBits : VkCommandPoolCreateFlags + { + eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT, + eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, + eProtected = VK_COMMAND_POOL_CREATE_PROTECTED_BIT + }; + + VULKAN_HPP_INLINE std::string to_string( CommandPoolCreateFlagBits value ) + { + switch ( value ) + { + case CommandPoolCreateFlagBits::eTransient: return "Transient"; + case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer"; + case CommandPoolCreateFlagBits::eProtected: return "Protected"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class CommandPoolResetFlagBits : VkCommandPoolResetFlags + { + eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT + }; + + VULKAN_HPP_INLINE std::string to_string( CommandPoolResetFlagBits value ) + { + switch ( value ) + { + case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class CommandBufferLevel + { + ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY, + eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY + }; + + VULKAN_HPP_INLINE std::string to_string( CommandBufferLevel value ) + { + switch ( value ) + { + case CommandBufferLevel::ePrimary: return "Primary"; + case CommandBufferLevel::eSecondary: return "Secondary"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class CommandBufferResetFlagBits : VkCommandBufferResetFlags + { + eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT + }; + + VULKAN_HPP_INLINE std::string to_string( CommandBufferResetFlagBits value ) + { + switch ( value ) + { + case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class CommandBufferUsageFlagBits : VkCommandBufferUsageFlags + { + eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, + eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, + eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT + }; + + VULKAN_HPP_INLINE std::string to_string( CommandBufferUsageFlagBits value ) + { + switch ( value ) + { + case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit"; + case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue"; + case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class QueryControlFlagBits : VkQueryControlFlags + { + ePrecise = VK_QUERY_CONTROL_PRECISE_BIT + }; + + VULKAN_HPP_INLINE std::string to_string( QueryControlFlagBits value ) + { + switch ( value ) + { + case QueryControlFlagBits::ePrecise: return "Precise"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class IndexType + { + eUint16 = VK_INDEX_TYPE_UINT16, + eUint32 = VK_INDEX_TYPE_UINT32, + eNoneKHR = VK_INDEX_TYPE_NONE_KHR, + eUint8EXT = VK_INDEX_TYPE_UINT8_EXT, + eNoneNV = VK_INDEX_TYPE_NONE_NV + }; + + VULKAN_HPP_INLINE std::string to_string( IndexType value ) + { + switch ( value ) + { + case IndexType::eUint16: return "Uint16"; + case IndexType::eUint32: return "Uint32"; + case IndexType::eNoneKHR: return "NoneKHR"; + case IndexType::eUint8EXT: return "Uint8EXT"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class StencilFaceFlagBits : VkStencilFaceFlags + { + eFront = VK_STENCIL_FACE_FRONT_BIT, + eBack = VK_STENCIL_FACE_BACK_BIT, + eFrontAndBack = VK_STENCIL_FACE_FRONT_AND_BACK, + eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK + }; + + VULKAN_HPP_INLINE std::string to_string( StencilFaceFlagBits value ) + { + switch ( value ) + { + case StencilFaceFlagBits::eFront: return "Front"; + case StencilFaceFlagBits::eBack: return "Back"; + case StencilFaceFlagBits::eFrontAndBack: return "FrontAndBack"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SubpassContents + { + eInline = VK_SUBPASS_CONTENTS_INLINE, + eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS + }; + + VULKAN_HPP_INLINE std::string to_string( SubpassContents value ) + { + switch ( value ) + { + case SubpassContents::eInline: return "Inline"; + case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_VERSION_1_1 === + + enum class SubgroupFeatureFlagBits : VkSubgroupFeatureFlags + { + eBasic = VK_SUBGROUP_FEATURE_BASIC_BIT, + eVote = VK_SUBGROUP_FEATURE_VOTE_BIT, + eArithmetic = VK_SUBGROUP_FEATURE_ARITHMETIC_BIT, + eBallot = VK_SUBGROUP_FEATURE_BALLOT_BIT, + eShuffle = VK_SUBGROUP_FEATURE_SHUFFLE_BIT, + eShuffleRelative = VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT, + eClustered = VK_SUBGROUP_FEATURE_CLUSTERED_BIT, + eQuad = VK_SUBGROUP_FEATURE_QUAD_BIT, + ePartitionedNV = VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV + }; + + VULKAN_HPP_INLINE std::string to_string( SubgroupFeatureFlagBits value ) + { + switch ( value ) + { + case SubgroupFeatureFlagBits::eBasic: return "Basic"; + case SubgroupFeatureFlagBits::eVote: return "Vote"; + case SubgroupFeatureFlagBits::eArithmetic: return "Arithmetic"; + case SubgroupFeatureFlagBits::eBallot: return "Ballot"; + case SubgroupFeatureFlagBits::eShuffle: return "Shuffle"; + case SubgroupFeatureFlagBits::eShuffleRelative: return "ShuffleRelative"; + case SubgroupFeatureFlagBits::eClustered: return "Clustered"; + case SubgroupFeatureFlagBits::eQuad: return "Quad"; + case SubgroupFeatureFlagBits::ePartitionedNV: return "PartitionedNV"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PeerMemoryFeatureFlagBits : VkPeerMemoryFeatureFlags + { + eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT, + eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT, + eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT, + eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT + }; + using PeerMemoryFeatureFlagBitsKHR = PeerMemoryFeatureFlagBits; + + VULKAN_HPP_INLINE std::string to_string( PeerMemoryFeatureFlagBits value ) + { + switch ( value ) + { + case PeerMemoryFeatureFlagBits::eCopySrc: return "CopySrc"; + case PeerMemoryFeatureFlagBits::eCopyDst: return "CopyDst"; + case PeerMemoryFeatureFlagBits::eGenericSrc: return "GenericSrc"; + case PeerMemoryFeatureFlagBits::eGenericDst: return "GenericDst"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class MemoryAllocateFlagBits : VkMemoryAllocateFlags + { + eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT, + eDeviceAddress = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT, + eDeviceAddressCaptureReplay = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT + }; + using MemoryAllocateFlagBitsKHR = MemoryAllocateFlagBits; + + VULKAN_HPP_INLINE std::string to_string( MemoryAllocateFlagBits value ) + { + switch ( value ) + { + case MemoryAllocateFlagBits::eDeviceMask: return "DeviceMask"; + case MemoryAllocateFlagBits::eDeviceAddress: return "DeviceAddress"; + case MemoryAllocateFlagBits::eDeviceAddressCaptureReplay: return "DeviceAddressCaptureReplay"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class CommandPoolTrimFlagBits : VkCommandPoolTrimFlags + { + }; + + VULKAN_HPP_INLINE std::string to_string( CommandPoolTrimFlagBits ) + { + return "(void)"; + } + + enum class PointClippingBehavior + { + eAllClipPlanes = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES, + eUserClipPlanesOnly = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY + }; + using PointClippingBehaviorKHR = PointClippingBehavior; + + VULKAN_HPP_INLINE std::string to_string( PointClippingBehavior value ) + { + switch ( value ) + { + case PointClippingBehavior::eAllClipPlanes: return "AllClipPlanes"; + case PointClippingBehavior::eUserClipPlanesOnly: return "UserClipPlanesOnly"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class TessellationDomainOrigin + { + eUpperLeft = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, + eLowerLeft = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT + }; + using TessellationDomainOriginKHR = TessellationDomainOrigin; + + VULKAN_HPP_INLINE std::string to_string( TessellationDomainOrigin value ) + { + switch ( value ) + { + case TessellationDomainOrigin::eUpperLeft: return "UpperLeft"; + case TessellationDomainOrigin::eLowerLeft: return "LowerLeft"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DeviceQueueCreateFlagBits : VkDeviceQueueCreateFlags + { + eProtected = VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT + }; + + VULKAN_HPP_INLINE std::string to_string( DeviceQueueCreateFlagBits value ) + { + switch ( value ) + { + case DeviceQueueCreateFlagBits::eProtected: return "Protected"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SamplerYcbcrModelConversion + { + eRgbIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY, + eYcbcrIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY, + eYcbcr709 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709, + eYcbcr601 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601, + eYcbcr2020 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 + }; + using SamplerYcbcrModelConversionKHR = SamplerYcbcrModelConversion; + + VULKAN_HPP_INLINE std::string to_string( SamplerYcbcrModelConversion value ) + { + switch ( value ) + { + case SamplerYcbcrModelConversion::eRgbIdentity: return "RgbIdentity"; + case SamplerYcbcrModelConversion::eYcbcrIdentity: return "YcbcrIdentity"; + case SamplerYcbcrModelConversion::eYcbcr709: return "Ycbcr709"; + case SamplerYcbcrModelConversion::eYcbcr601: return "Ycbcr601"; + case SamplerYcbcrModelConversion::eYcbcr2020: return "Ycbcr2020"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SamplerYcbcrRange + { + eItuFull = VK_SAMPLER_YCBCR_RANGE_ITU_FULL, + eItuNarrow = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW + }; + using SamplerYcbcrRangeKHR = SamplerYcbcrRange; + + VULKAN_HPP_INLINE std::string to_string( SamplerYcbcrRange value ) + { + switch ( value ) + { + case SamplerYcbcrRange::eItuFull: return "ItuFull"; + case SamplerYcbcrRange::eItuNarrow: return "ItuNarrow"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ChromaLocation + { + eCositedEven = VK_CHROMA_LOCATION_COSITED_EVEN, + eMidpoint = VK_CHROMA_LOCATION_MIDPOINT + }; + using ChromaLocationKHR = ChromaLocation; + + VULKAN_HPP_INLINE std::string to_string( ChromaLocation value ) + { + switch ( value ) + { + case ChromaLocation::eCositedEven: return "CositedEven"; + case ChromaLocation::eMidpoint: return "Midpoint"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DescriptorUpdateTemplateType + { + eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, + ePushDescriptorsKHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR + }; + using DescriptorUpdateTemplateTypeKHR = DescriptorUpdateTemplateType; + + VULKAN_HPP_INLINE std::string to_string( DescriptorUpdateTemplateType value ) + { + switch ( value ) + { + case DescriptorUpdateTemplateType::eDescriptorSet: return "DescriptorSet"; + case DescriptorUpdateTemplateType::ePushDescriptorsKHR: return "PushDescriptorsKHR"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DescriptorUpdateTemplateCreateFlagBits : VkDescriptorUpdateTemplateCreateFlags + { + }; + + VULKAN_HPP_INLINE std::string to_string( DescriptorUpdateTemplateCreateFlagBits ) + { + return "(void)"; + } + + enum class ExternalMemoryHandleTypeFlagBits : VkExternalMemoryHandleTypeFlags + { + eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, + eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT, + eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, + eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT, + eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT, + eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT, + eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT, + eDmaBufEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT, +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + eAndroidHardwareBufferANDROID = VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + eHostAllocationEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT, + eHostMappedForeignMemoryEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT, +#if defined( VK_USE_PLATFORM_FUCHSIA ) + eZirconVmoFUCHSIA = VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA, +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + eRdmaAddressNV = VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV + }; + using ExternalMemoryHandleTypeFlagBitsKHR = ExternalMemoryHandleTypeFlagBits; + + VULKAN_HPP_INLINE std::string to_string( ExternalMemoryHandleTypeFlagBits value ) + { + switch ( value ) + { + case ExternalMemoryHandleTypeFlagBits::eOpaqueFd: return "OpaqueFd"; + case ExternalMemoryHandleTypeFlagBits::eOpaqueWin32: return "OpaqueWin32"; + case ExternalMemoryHandleTypeFlagBits::eOpaqueWin32Kmt: return "OpaqueWin32Kmt"; + case ExternalMemoryHandleTypeFlagBits::eD3D11Texture: return "D3D11Texture"; + case ExternalMemoryHandleTypeFlagBits::eD3D11TextureKmt: return "D3D11TextureKmt"; + case ExternalMemoryHandleTypeFlagBits::eD3D12Heap: return "D3D12Heap"; + case ExternalMemoryHandleTypeFlagBits::eD3D12Resource: return "D3D12Resource"; + case ExternalMemoryHandleTypeFlagBits::eDmaBufEXT: return "DmaBufEXT"; +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + case ExternalMemoryHandleTypeFlagBits::eAndroidHardwareBufferANDROID: return "AndroidHardwareBufferANDROID"; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + case ExternalMemoryHandleTypeFlagBits::eHostAllocationEXT: return "HostAllocationEXT"; + case ExternalMemoryHandleTypeFlagBits::eHostMappedForeignMemoryEXT: return "HostMappedForeignMemoryEXT"; +#if defined( VK_USE_PLATFORM_FUCHSIA ) + case ExternalMemoryHandleTypeFlagBits::eZirconVmoFUCHSIA: return "ZirconVmoFUCHSIA"; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + case ExternalMemoryHandleTypeFlagBits::eRdmaAddressNV: return "RdmaAddressNV"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ExternalMemoryFeatureFlagBits : VkExternalMemoryFeatureFlags + { + eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT, + eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT, + eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT + }; + using ExternalMemoryFeatureFlagBitsKHR = ExternalMemoryFeatureFlagBits; + + VULKAN_HPP_INLINE std::string to_string( ExternalMemoryFeatureFlagBits value ) + { + switch ( value ) + { + case ExternalMemoryFeatureFlagBits::eDedicatedOnly: return "DedicatedOnly"; + case ExternalMemoryFeatureFlagBits::eExportable: return "Exportable"; + case ExternalMemoryFeatureFlagBits::eImportable: return "Importable"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ExternalFenceHandleTypeFlagBits : VkExternalFenceHandleTypeFlags + { + eOpaqueFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT, + eOpaqueWin32 = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT, + eOpaqueWin32Kmt = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, + eSyncFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT + }; + using ExternalFenceHandleTypeFlagBitsKHR = ExternalFenceHandleTypeFlagBits; + + VULKAN_HPP_INLINE std::string to_string( ExternalFenceHandleTypeFlagBits value ) + { + switch ( value ) + { + case ExternalFenceHandleTypeFlagBits::eOpaqueFd: return "OpaqueFd"; + case ExternalFenceHandleTypeFlagBits::eOpaqueWin32: return "OpaqueWin32"; + case ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt: return "OpaqueWin32Kmt"; + case ExternalFenceHandleTypeFlagBits::eSyncFd: return "SyncFd"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ExternalFenceFeatureFlagBits : VkExternalFenceFeatureFlags + { + eExportable = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT, + eImportable = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT + }; + using ExternalFenceFeatureFlagBitsKHR = ExternalFenceFeatureFlagBits; + + VULKAN_HPP_INLINE std::string to_string( ExternalFenceFeatureFlagBits value ) + { + switch ( value ) + { + case ExternalFenceFeatureFlagBits::eExportable: return "Exportable"; + case ExternalFenceFeatureFlagBits::eImportable: return "Importable"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class FenceImportFlagBits : VkFenceImportFlags + { + eTemporary = VK_FENCE_IMPORT_TEMPORARY_BIT + }; + using FenceImportFlagBitsKHR = FenceImportFlagBits; + + VULKAN_HPP_INLINE std::string to_string( FenceImportFlagBits value ) + { + switch ( value ) + { + case FenceImportFlagBits::eTemporary: return "Temporary"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SemaphoreImportFlagBits : VkSemaphoreImportFlags + { + eTemporary = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT + }; + using SemaphoreImportFlagBitsKHR = SemaphoreImportFlagBits; + + VULKAN_HPP_INLINE std::string to_string( SemaphoreImportFlagBits value ) + { + switch ( value ) + { + case SemaphoreImportFlagBits::eTemporary: return "Temporary"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ExternalSemaphoreHandleTypeFlagBits : VkExternalSemaphoreHandleTypeFlags + { + eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT, + eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT, + eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, + eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT, + eSyncFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT, +#if defined( VK_USE_PLATFORM_FUCHSIA ) + eZirconEventFUCHSIA = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA, +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + eD3D11Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT + }; + using ExternalSemaphoreHandleTypeFlagBitsKHR = ExternalSemaphoreHandleTypeFlagBits; + + VULKAN_HPP_INLINE std::string to_string( ExternalSemaphoreHandleTypeFlagBits value ) + { + switch ( value ) + { + case ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd: return "OpaqueFd"; + case ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32: return "OpaqueWin32"; + case ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt: return "OpaqueWin32Kmt"; + case ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence: return "D3D12Fence"; + case ExternalSemaphoreHandleTypeFlagBits::eSyncFd: return "SyncFd"; +#if defined( VK_USE_PLATFORM_FUCHSIA ) + case ExternalSemaphoreHandleTypeFlagBits::eZirconEventFUCHSIA: return "ZirconEventFUCHSIA"; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ExternalSemaphoreFeatureFlagBits : VkExternalSemaphoreFeatureFlags + { + eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT, + eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT + }; + using ExternalSemaphoreFeatureFlagBitsKHR = ExternalSemaphoreFeatureFlagBits; + + VULKAN_HPP_INLINE std::string to_string( ExternalSemaphoreFeatureFlagBits value ) + { + switch ( value ) + { + case ExternalSemaphoreFeatureFlagBits::eExportable: return "Exportable"; + case ExternalSemaphoreFeatureFlagBits::eImportable: return "Importable"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_VERSION_1_2 === + + enum class DriverId + { + eAmdProprietary = VK_DRIVER_ID_AMD_PROPRIETARY, + eAmdOpenSource = VK_DRIVER_ID_AMD_OPEN_SOURCE, + eMesaRadv = VK_DRIVER_ID_MESA_RADV, + eNvidiaProprietary = VK_DRIVER_ID_NVIDIA_PROPRIETARY, + eIntelProprietaryWindows = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS, + eIntelOpenSourceMESA = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA, + eImaginationProprietary = VK_DRIVER_ID_IMAGINATION_PROPRIETARY, + eQualcommProprietary = VK_DRIVER_ID_QUALCOMM_PROPRIETARY, + eArmProprietary = VK_DRIVER_ID_ARM_PROPRIETARY, + eGoogleSwiftshader = VK_DRIVER_ID_GOOGLE_SWIFTSHADER, + eGgpProprietary = VK_DRIVER_ID_GGP_PROPRIETARY, + eBroadcomProprietary = VK_DRIVER_ID_BROADCOM_PROPRIETARY, + eMesaLlvmpipe = VK_DRIVER_ID_MESA_LLVMPIPE, + eMoltenvk = VK_DRIVER_ID_MOLTENVK, + eCoreaviProprietary = VK_DRIVER_ID_COREAVI_PROPRIETARY, + eJuiceProprietary = VK_DRIVER_ID_JUICE_PROPRIETARY, + eVerisiliconProprietary = VK_DRIVER_ID_VERISILICON_PROPRIETARY, + eMesaTurnip = VK_DRIVER_ID_MESA_TURNIP, + eMesaV3Dv = VK_DRIVER_ID_MESA_V3DV, + eMesaPanvk = VK_DRIVER_ID_MESA_PANVK, + eSamsungProprietary = VK_DRIVER_ID_SAMSUNG_PROPRIETARY, + eMesaVenus = VK_DRIVER_ID_MESA_VENUS + }; + using DriverIdKHR = DriverId; + + VULKAN_HPP_INLINE std::string to_string( DriverId value ) + { + switch ( value ) + { + case DriverId::eAmdProprietary: return "AmdProprietary"; + case DriverId::eAmdOpenSource: return "AmdOpenSource"; + case DriverId::eMesaRadv: return "MesaRadv"; + case DriverId::eNvidiaProprietary: return "NvidiaProprietary"; + case DriverId::eIntelProprietaryWindows: return "IntelProprietaryWindows"; + case DriverId::eIntelOpenSourceMESA: return "IntelOpenSourceMESA"; + case DriverId::eImaginationProprietary: return "ImaginationProprietary"; + case DriverId::eQualcommProprietary: return "QualcommProprietary"; + case DriverId::eArmProprietary: return "ArmProprietary"; + case DriverId::eGoogleSwiftshader: return "GoogleSwiftshader"; + case DriverId::eGgpProprietary: return "GgpProprietary"; + case DriverId::eBroadcomProprietary: return "BroadcomProprietary"; + case DriverId::eMesaLlvmpipe: return "MesaLlvmpipe"; + case DriverId::eMoltenvk: return "Moltenvk"; + case DriverId::eCoreaviProprietary: return "CoreaviProprietary"; + case DriverId::eJuiceProprietary: return "JuiceProprietary"; + case DriverId::eVerisiliconProprietary: return "VerisiliconProprietary"; + case DriverId::eMesaTurnip: return "MesaTurnip"; + case DriverId::eMesaV3Dv: return "MesaV3Dv"; + case DriverId::eMesaPanvk: return "MesaPanvk"; + case DriverId::eSamsungProprietary: return "SamsungProprietary"; + case DriverId::eMesaVenus: return "MesaVenus"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ShaderFloatControlsIndependence + { + e32BitOnly = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY, + eAll = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL, + eNone = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE + }; + using ShaderFloatControlsIndependenceKHR = ShaderFloatControlsIndependence; + + VULKAN_HPP_INLINE std::string to_string( ShaderFloatControlsIndependence value ) + { + switch ( value ) + { + case ShaderFloatControlsIndependence::e32BitOnly: return "32BitOnly"; + case ShaderFloatControlsIndependence::eAll: return "All"; + case ShaderFloatControlsIndependence::eNone: return "None"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DescriptorBindingFlagBits : VkDescriptorBindingFlags + { + eUpdateAfterBind = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT, + eUpdateUnusedWhilePending = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT, + ePartiallyBound = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT, + eVariableDescriptorCount = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT + }; + using DescriptorBindingFlagBitsEXT = DescriptorBindingFlagBits; + + VULKAN_HPP_INLINE std::string to_string( DescriptorBindingFlagBits value ) + { + switch ( value ) + { + case DescriptorBindingFlagBits::eUpdateAfterBind: return "UpdateAfterBind"; + case DescriptorBindingFlagBits::eUpdateUnusedWhilePending: return "UpdateUnusedWhilePending"; + case DescriptorBindingFlagBits::ePartiallyBound: return "PartiallyBound"; + case DescriptorBindingFlagBits::eVariableDescriptorCount: return "VariableDescriptorCount"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ResolveModeFlagBits : VkResolveModeFlags + { + eNone = VK_RESOLVE_MODE_NONE, + eSampleZero = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT, + eAverage = VK_RESOLVE_MODE_AVERAGE_BIT, + eMin = VK_RESOLVE_MODE_MIN_BIT, + eMax = VK_RESOLVE_MODE_MAX_BIT + }; + using ResolveModeFlagBitsKHR = ResolveModeFlagBits; + + VULKAN_HPP_INLINE std::string to_string( ResolveModeFlagBits value ) + { + switch ( value ) + { + case ResolveModeFlagBits::eNone: return "None"; + case ResolveModeFlagBits::eSampleZero: return "SampleZero"; + case ResolveModeFlagBits::eAverage: return "Average"; + case ResolveModeFlagBits::eMin: return "Min"; + case ResolveModeFlagBits::eMax: return "Max"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SamplerReductionMode + { + eWeightedAverage = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, + eMin = VK_SAMPLER_REDUCTION_MODE_MIN, + eMax = VK_SAMPLER_REDUCTION_MODE_MAX + }; + using SamplerReductionModeEXT = SamplerReductionMode; + + VULKAN_HPP_INLINE std::string to_string( SamplerReductionMode value ) + { + switch ( value ) + { + case SamplerReductionMode::eWeightedAverage: return "WeightedAverage"; + case SamplerReductionMode::eMin: return "Min"; + case SamplerReductionMode::eMax: return "Max"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SemaphoreType + { + eBinary = VK_SEMAPHORE_TYPE_BINARY, + eTimeline = VK_SEMAPHORE_TYPE_TIMELINE + }; + using SemaphoreTypeKHR = SemaphoreType; + + VULKAN_HPP_INLINE std::string to_string( SemaphoreType value ) + { + switch ( value ) + { + case SemaphoreType::eBinary: return "Binary"; + case SemaphoreType::eTimeline: return "Timeline"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SemaphoreWaitFlagBits : VkSemaphoreWaitFlags + { + eAny = VK_SEMAPHORE_WAIT_ANY_BIT + }; + using SemaphoreWaitFlagBitsKHR = SemaphoreWaitFlagBits; + + VULKAN_HPP_INLINE std::string to_string( SemaphoreWaitFlagBits value ) + { + switch ( value ) + { + case SemaphoreWaitFlagBits::eAny: return "Any"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_VERSION_1_3 === + + enum class PipelineCreationFeedbackFlagBits : VkPipelineCreationFeedbackFlags + { + eValid = VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT, + eApplicationPipelineCacheHit = VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT, + eBasePipelineAcceleration = VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT + }; + using PipelineCreationFeedbackFlagBitsEXT = PipelineCreationFeedbackFlagBits; + + VULKAN_HPP_INLINE std::string to_string( PipelineCreationFeedbackFlagBits value ) + { + switch ( value ) + { + case PipelineCreationFeedbackFlagBits::eValid: return "Valid"; + case PipelineCreationFeedbackFlagBits::eApplicationPipelineCacheHit: return "ApplicationPipelineCacheHit"; + case PipelineCreationFeedbackFlagBits::eBasePipelineAcceleration: return "BasePipelineAcceleration"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ToolPurposeFlagBits : VkToolPurposeFlags + { + eValidation = VK_TOOL_PURPOSE_VALIDATION_BIT, + eProfiling = VK_TOOL_PURPOSE_PROFILING_BIT, + eTracing = VK_TOOL_PURPOSE_TRACING_BIT, + eAdditionalFeatures = VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT, + eModifyingFeatures = VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT, + eDebugReportingEXT = VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT, + eDebugMarkersEXT = VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT + }; + using ToolPurposeFlagBitsEXT = ToolPurposeFlagBits; + + VULKAN_HPP_INLINE std::string to_string( ToolPurposeFlagBits value ) + { + switch ( value ) + { + case ToolPurposeFlagBits::eValidation: return "Validation"; + case ToolPurposeFlagBits::eProfiling: return "Profiling"; + case ToolPurposeFlagBits::eTracing: return "Tracing"; + case ToolPurposeFlagBits::eAdditionalFeatures: return "AdditionalFeatures"; + case ToolPurposeFlagBits::eModifyingFeatures: return "ModifyingFeatures"; + case ToolPurposeFlagBits::eDebugReportingEXT: return "DebugReportingEXT"; + case ToolPurposeFlagBits::eDebugMarkersEXT: return "DebugMarkersEXT"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PrivateDataSlotCreateFlagBits : VkPrivateDataSlotCreateFlags + { + }; + using PrivateDataSlotCreateFlagBitsEXT = PrivateDataSlotCreateFlagBits; + + VULKAN_HPP_INLINE std::string to_string( PrivateDataSlotCreateFlagBits ) + { + return "(void)"; + } + + enum class PipelineStageFlagBits2 : VkPipelineStageFlags2 + { + eNone = VK_PIPELINE_STAGE_2_NONE, + eTopOfPipe = VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT, + eDrawIndirect = VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT, + eVertexInput = VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT, + eVertexShader = VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT, + eTessellationControlShader = VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT, + eTessellationEvaluationShader = VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT, + eGeometryShader = VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT, + eFragmentShader = VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT, + eEarlyFragmentTests = VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT, + eLateFragmentTests = VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT, + eColorAttachmentOutput = VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT, + eComputeShader = VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT, + eAllTransfer = VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT, + eBottomOfPipe = VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT, + eHost = VK_PIPELINE_STAGE_2_HOST_BIT, + eAllGraphics = VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, + eAllCommands = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, + eCopy = VK_PIPELINE_STAGE_2_COPY_BIT, + eResolve = VK_PIPELINE_STAGE_2_RESOLVE_BIT, + eBlit = VK_PIPELINE_STAGE_2_BLIT_BIT, + eClear = VK_PIPELINE_STAGE_2_CLEAR_BIT, + eIndexInput = VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT, + eVertexAttributeInput = VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT, + ePreRasterizationShaders = VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoDecodeKHR = VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR, + eVideoEncodeKHR = VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eTransformFeedbackEXT = VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, + eConditionalRenderingEXT = VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, + eCommandPreprocessNV = VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, + eFragmentShadingRateAttachmentKHR = VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + eAccelerationStructureBuildKHR = VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, + eRayTracingShaderKHR = VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, + eFragmentDensityProcessEXT = VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, + eTaskShaderNV = VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, + eMeshShaderNV = VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, + eSubpassShadingHUAWEI = VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, + eInvocationMaskHUAWEI = VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI, + eAccelerationStructureBuildNV = VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV, + eRayTracingShaderNV = VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV, + eShadingRateImageNV = VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV, + eTransfer = VK_PIPELINE_STAGE_2_TRANSFER_BIT + }; + using PipelineStageFlagBits2KHR = PipelineStageFlagBits2; + + VULKAN_HPP_INLINE std::string to_string( PipelineStageFlagBits2 value ) + { + switch ( value ) + { + case PipelineStageFlagBits2::eNone: return "None"; + case PipelineStageFlagBits2::eTopOfPipe: return "TopOfPipe"; + case PipelineStageFlagBits2::eDrawIndirect: return "DrawIndirect"; + case PipelineStageFlagBits2::eVertexInput: return "VertexInput"; + case PipelineStageFlagBits2::eVertexShader: return "VertexShader"; + case PipelineStageFlagBits2::eTessellationControlShader: return "TessellationControlShader"; + case PipelineStageFlagBits2::eTessellationEvaluationShader: return "TessellationEvaluationShader"; + case PipelineStageFlagBits2::eGeometryShader: return "GeometryShader"; + case PipelineStageFlagBits2::eFragmentShader: return "FragmentShader"; + case PipelineStageFlagBits2::eEarlyFragmentTests: return "EarlyFragmentTests"; + case PipelineStageFlagBits2::eLateFragmentTests: return "LateFragmentTests"; + case PipelineStageFlagBits2::eColorAttachmentOutput: return "ColorAttachmentOutput"; + case PipelineStageFlagBits2::eComputeShader: return "ComputeShader"; + case PipelineStageFlagBits2::eAllTransfer: return "AllTransfer"; + case PipelineStageFlagBits2::eBottomOfPipe: return "BottomOfPipe"; + case PipelineStageFlagBits2::eHost: return "Host"; + case PipelineStageFlagBits2::eAllGraphics: return "AllGraphics"; + case PipelineStageFlagBits2::eAllCommands: return "AllCommands"; + case PipelineStageFlagBits2::eCopy: return "Copy"; + case PipelineStageFlagBits2::eResolve: return "Resolve"; + case PipelineStageFlagBits2::eBlit: return "Blit"; + case PipelineStageFlagBits2::eClear: return "Clear"; + case PipelineStageFlagBits2::eIndexInput: return "IndexInput"; + case PipelineStageFlagBits2::eVertexAttributeInput: return "VertexAttributeInput"; + case PipelineStageFlagBits2::ePreRasterizationShaders: return "PreRasterizationShaders"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case PipelineStageFlagBits2::eVideoDecodeKHR: return "VideoDecodeKHR"; + case PipelineStageFlagBits2::eVideoEncodeKHR: return "VideoEncodeKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case PipelineStageFlagBits2::eTransformFeedbackEXT: return "TransformFeedbackEXT"; + case PipelineStageFlagBits2::eConditionalRenderingEXT: return "ConditionalRenderingEXT"; + case PipelineStageFlagBits2::eCommandPreprocessNV: return "CommandPreprocessNV"; + case PipelineStageFlagBits2::eFragmentShadingRateAttachmentKHR: return "FragmentShadingRateAttachmentKHR"; + case PipelineStageFlagBits2::eAccelerationStructureBuildKHR: return "AccelerationStructureBuildKHR"; + case PipelineStageFlagBits2::eRayTracingShaderKHR: return "RayTracingShaderKHR"; + case PipelineStageFlagBits2::eFragmentDensityProcessEXT: return "FragmentDensityProcessEXT"; + case PipelineStageFlagBits2::eTaskShaderNV: return "TaskShaderNV"; + case PipelineStageFlagBits2::eMeshShaderNV: return "MeshShaderNV"; + case PipelineStageFlagBits2::eSubpassShadingHUAWEI: return "SubpassShadingHUAWEI"; + case PipelineStageFlagBits2::eInvocationMaskHUAWEI: return "InvocationMaskHUAWEI"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class AccessFlagBits2 : VkAccessFlags2 + { + eNone = VK_ACCESS_2_NONE, + eIndirectCommandRead = VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT, + eIndexRead = VK_ACCESS_2_INDEX_READ_BIT, + eVertexAttributeRead = VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT, + eUniformRead = VK_ACCESS_2_UNIFORM_READ_BIT, + eInputAttachmentRead = VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT, + eShaderRead = VK_ACCESS_2_SHADER_READ_BIT, + eShaderWrite = VK_ACCESS_2_SHADER_WRITE_BIT, + eColorAttachmentRead = VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT, + eColorAttachmentWrite = VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT, + eDepthStencilAttachmentRead = VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT, + eDepthStencilAttachmentWrite = VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, + eTransferRead = VK_ACCESS_2_TRANSFER_READ_BIT, + eTransferWrite = VK_ACCESS_2_TRANSFER_WRITE_BIT, + eHostRead = VK_ACCESS_2_HOST_READ_BIT, + eHostWrite = VK_ACCESS_2_HOST_WRITE_BIT, + eMemoryRead = VK_ACCESS_2_MEMORY_READ_BIT, + eMemoryWrite = VK_ACCESS_2_MEMORY_WRITE_BIT, + eShaderSampledRead = VK_ACCESS_2_SHADER_SAMPLED_READ_BIT, + eShaderStorageRead = VK_ACCESS_2_SHADER_STORAGE_READ_BIT, + eShaderStorageWrite = VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoDecodeReadKHR = VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR, + eVideoDecodeWriteKHR = VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR, + eVideoEncodeReadKHR = VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR, + eVideoEncodeWriteKHR = VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eTransformFeedbackWriteEXT = VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, + eTransformFeedbackCounterReadEXT = VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, + eTransformFeedbackCounterWriteEXT = VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, + eConditionalRenderingReadEXT = VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT, + eCommandPreprocessReadNV = VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV, + eCommandPreprocessWriteNV = VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV, + eFragmentShadingRateAttachmentReadKHR = VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, + eAccelerationStructureReadKHR = VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, + eAccelerationStructureWriteKHR = VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, + eFragmentDensityMapReadEXT = VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT, + eColorAttachmentReadNoncoherentEXT = VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, + eInvocationMaskReadHUAWEI = VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI, + eAccelerationStructureReadNV = VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV, + eAccelerationStructureWriteNV = VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV, + eShadingRateImageReadNV = VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV + }; + using AccessFlagBits2KHR = AccessFlagBits2; + + VULKAN_HPP_INLINE std::string to_string( AccessFlagBits2 value ) + { + switch ( value ) + { + case AccessFlagBits2::eNone: return "None"; + case AccessFlagBits2::eIndirectCommandRead: return "IndirectCommandRead"; + case AccessFlagBits2::eIndexRead: return "IndexRead"; + case AccessFlagBits2::eVertexAttributeRead: return "VertexAttributeRead"; + case AccessFlagBits2::eUniformRead: return "UniformRead"; + case AccessFlagBits2::eInputAttachmentRead: return "InputAttachmentRead"; + case AccessFlagBits2::eShaderRead: return "ShaderRead"; + case AccessFlagBits2::eShaderWrite: return "ShaderWrite"; + case AccessFlagBits2::eColorAttachmentRead: return "ColorAttachmentRead"; + case AccessFlagBits2::eColorAttachmentWrite: return "ColorAttachmentWrite"; + case AccessFlagBits2::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead"; + case AccessFlagBits2::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite"; + case AccessFlagBits2::eTransferRead: return "TransferRead"; + case AccessFlagBits2::eTransferWrite: return "TransferWrite"; + case AccessFlagBits2::eHostRead: return "HostRead"; + case AccessFlagBits2::eHostWrite: return "HostWrite"; + case AccessFlagBits2::eMemoryRead: return "MemoryRead"; + case AccessFlagBits2::eMemoryWrite: return "MemoryWrite"; + case AccessFlagBits2::eShaderSampledRead: return "ShaderSampledRead"; + case AccessFlagBits2::eShaderStorageRead: return "ShaderStorageRead"; + case AccessFlagBits2::eShaderStorageWrite: return "ShaderStorageWrite"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case AccessFlagBits2::eVideoDecodeReadKHR: return "VideoDecodeReadKHR"; + case AccessFlagBits2::eVideoDecodeWriteKHR: return "VideoDecodeWriteKHR"; + case AccessFlagBits2::eVideoEncodeReadKHR: return "VideoEncodeReadKHR"; + case AccessFlagBits2::eVideoEncodeWriteKHR: return "VideoEncodeWriteKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case AccessFlagBits2::eTransformFeedbackWriteEXT: return "TransformFeedbackWriteEXT"; + case AccessFlagBits2::eTransformFeedbackCounterReadEXT: return "TransformFeedbackCounterReadEXT"; + case AccessFlagBits2::eTransformFeedbackCounterWriteEXT: return "TransformFeedbackCounterWriteEXT"; + case AccessFlagBits2::eConditionalRenderingReadEXT: return "ConditionalRenderingReadEXT"; + case AccessFlagBits2::eCommandPreprocessReadNV: return "CommandPreprocessReadNV"; + case AccessFlagBits2::eCommandPreprocessWriteNV: return "CommandPreprocessWriteNV"; + case AccessFlagBits2::eFragmentShadingRateAttachmentReadKHR: return "FragmentShadingRateAttachmentReadKHR"; + case AccessFlagBits2::eAccelerationStructureReadKHR: return "AccelerationStructureReadKHR"; + case AccessFlagBits2::eAccelerationStructureWriteKHR: return "AccelerationStructureWriteKHR"; + case AccessFlagBits2::eFragmentDensityMapReadEXT: return "FragmentDensityMapReadEXT"; + case AccessFlagBits2::eColorAttachmentReadNoncoherentEXT: return "ColorAttachmentReadNoncoherentEXT"; + case AccessFlagBits2::eInvocationMaskReadHUAWEI: return "InvocationMaskReadHUAWEI"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class SubmitFlagBits : VkSubmitFlags + { + eProtected = VK_SUBMIT_PROTECTED_BIT + }; + using SubmitFlagBitsKHR = SubmitFlagBits; + + VULKAN_HPP_INLINE std::string to_string( SubmitFlagBits value ) + { + switch ( value ) + { + case SubmitFlagBits::eProtected: return "Protected"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class RenderingFlagBits : VkRenderingFlags + { + eContentsSecondaryCommandBuffers = VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT, + eSuspending = VK_RENDERING_SUSPENDING_BIT, + eResuming = VK_RENDERING_RESUMING_BIT + }; + using RenderingFlagBitsKHR = RenderingFlagBits; + + VULKAN_HPP_INLINE std::string to_string( RenderingFlagBits value ) + { + switch ( value ) + { + case RenderingFlagBits::eContentsSecondaryCommandBuffers: return "ContentsSecondaryCommandBuffers"; + case RenderingFlagBits::eSuspending: return "Suspending"; + case RenderingFlagBits::eResuming: return "Resuming"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class FormatFeatureFlagBits2 : VkFormatFeatureFlags2 + { + eSampledImage = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT, + eStorageImage = VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT, + eStorageImageAtomic = VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT, + eUniformTexelBuffer = VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT, + eStorageTexelBuffer = VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT, + eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT, + eVertexBuffer = VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT, + eColorAttachment = VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT, + eColorAttachmentBlend = VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT, + eDepthStencilAttachment = VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT, + eBlitSrc = VK_FORMAT_FEATURE_2_BLIT_SRC_BIT, + eBlitDst = VK_FORMAT_FEATURE_2_BLIT_DST_BIT, + eSampledImageFilterLinear = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT, + eSampledImageFilterCubic = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT, + eTransferSrc = VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT, + eTransferDst = VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT, + eSampledImageFilterMinmax = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT, + eMidpointChromaSamples = VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT, + eSampledImageYcbcrConversionLinearFilter = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT, + eSampledImageYcbcrConversionSeparateReconstructionFilter = + VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT, + eSampledImageYcbcrConversionChromaReconstructionExplicit = + VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT, + eSampledImageYcbcrConversionChromaReconstructionExplicitForceable = + VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT, + eDisjoint = VK_FORMAT_FEATURE_2_DISJOINT_BIT, + eCositedChromaSamples = VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT, + eStorageReadWithoutFormat = VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT, + eStorageWriteWithoutFormat = VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT, + eSampledImageDepthComparison = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoDecodeOutputKHR = VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR, + eVideoDecodeDpbKHR = VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eAccelerationStructureVertexBufferKHR = VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR, + eFragmentDensityMapEXT = VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT, + eFragmentShadingRateAttachmentKHR = VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eVideoEncodeInputKHR = VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR, + eVideoEncodeDpbKHR = VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eLinearColorAttachmentNV = VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV, + eSampledImageFilterCubicEXT = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT + }; + using FormatFeatureFlagBits2KHR = FormatFeatureFlagBits2; + + VULKAN_HPP_INLINE std::string to_string( FormatFeatureFlagBits2 value ) + { + switch ( value ) + { + case FormatFeatureFlagBits2::eSampledImage: return "SampledImage"; + case FormatFeatureFlagBits2::eStorageImage: return "StorageImage"; + case FormatFeatureFlagBits2::eStorageImageAtomic: return "StorageImageAtomic"; + case FormatFeatureFlagBits2::eUniformTexelBuffer: return "UniformTexelBuffer"; + case FormatFeatureFlagBits2::eStorageTexelBuffer: return "StorageTexelBuffer"; + case FormatFeatureFlagBits2::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic"; + case FormatFeatureFlagBits2::eVertexBuffer: return "VertexBuffer"; + case FormatFeatureFlagBits2::eColorAttachment: return "ColorAttachment"; + case FormatFeatureFlagBits2::eColorAttachmentBlend: return "ColorAttachmentBlend"; + case FormatFeatureFlagBits2::eDepthStencilAttachment: return "DepthStencilAttachment"; + case FormatFeatureFlagBits2::eBlitSrc: return "BlitSrc"; + case FormatFeatureFlagBits2::eBlitDst: return "BlitDst"; + case FormatFeatureFlagBits2::eSampledImageFilterLinear: return "SampledImageFilterLinear"; + case FormatFeatureFlagBits2::eSampledImageFilterCubic: return "SampledImageFilterCubic"; + case FormatFeatureFlagBits2::eTransferSrc: return "TransferSrc"; + case FormatFeatureFlagBits2::eTransferDst: return "TransferDst"; + case FormatFeatureFlagBits2::eSampledImageFilterMinmax: return "SampledImageFilterMinmax"; + case FormatFeatureFlagBits2::eMidpointChromaSamples: return "MidpointChromaSamples"; + case FormatFeatureFlagBits2::eSampledImageYcbcrConversionLinearFilter: + return "SampledImageYcbcrConversionLinearFilter"; + case FormatFeatureFlagBits2::eSampledImageYcbcrConversionSeparateReconstructionFilter: + return "SampledImageYcbcrConversionSeparateReconstructionFilter"; + case FormatFeatureFlagBits2::eSampledImageYcbcrConversionChromaReconstructionExplicit: + return "SampledImageYcbcrConversionChromaReconstructionExplicit"; + case FormatFeatureFlagBits2::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable: + return "SampledImageYcbcrConversionChromaReconstructionExplicitForceable"; + case FormatFeatureFlagBits2::eDisjoint: return "Disjoint"; + case FormatFeatureFlagBits2::eCositedChromaSamples: return "CositedChromaSamples"; + case FormatFeatureFlagBits2::eStorageReadWithoutFormat: return "StorageReadWithoutFormat"; + case FormatFeatureFlagBits2::eStorageWriteWithoutFormat: return "StorageWriteWithoutFormat"; + case FormatFeatureFlagBits2::eSampledImageDepthComparison: return "SampledImageDepthComparison"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case FormatFeatureFlagBits2::eVideoDecodeOutputKHR: return "VideoDecodeOutputKHR"; + case FormatFeatureFlagBits2::eVideoDecodeDpbKHR: return "VideoDecodeDpbKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case FormatFeatureFlagBits2::eAccelerationStructureVertexBufferKHR: return "AccelerationStructureVertexBufferKHR"; + case FormatFeatureFlagBits2::eFragmentDensityMapEXT: return "FragmentDensityMapEXT"; + case FormatFeatureFlagBits2::eFragmentShadingRateAttachmentKHR: return "FragmentShadingRateAttachmentKHR"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case FormatFeatureFlagBits2::eVideoEncodeInputKHR: return "VideoEncodeInputKHR"; + case FormatFeatureFlagBits2::eVideoEncodeDpbKHR: return "VideoEncodeDpbKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case FormatFeatureFlagBits2::eLinearColorAttachmentNV: return "LinearColorAttachmentNV"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_surface === + + enum class SurfaceTransformFlagBitsKHR : VkSurfaceTransformFlagsKHR + { + eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR, + eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR, + eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR, + eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR, + eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR, + eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR, + eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR, + eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR, + eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( SurfaceTransformFlagBitsKHR value ) + { + switch ( value ) + { + case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity"; + case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90"; + case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180"; + case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270"; + case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror"; + case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90"; + case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180"; + case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270"; + case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PresentModeKHR + { + eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR, + eMailbox = VK_PRESENT_MODE_MAILBOX_KHR, + eFifo = VK_PRESENT_MODE_FIFO_KHR, + eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR, + eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR, + eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( PresentModeKHR value ) + { + switch ( value ) + { + case PresentModeKHR::eImmediate: return "Immediate"; + case PresentModeKHR::eMailbox: return "Mailbox"; + case PresentModeKHR::eFifo: return "Fifo"; + case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed"; + case PresentModeKHR::eSharedDemandRefresh: return "SharedDemandRefresh"; + case PresentModeKHR::eSharedContinuousRefresh: return "SharedContinuousRefresh"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ColorSpaceKHR + { + eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, + eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT, + eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT, + eDisplayP3LinearEXT = VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT, + eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT, + eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT, + eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT, + eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT, + eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT, + eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT, + eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT, + eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT, + eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT, + ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT, + eExtendedSrgbNonlinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT, + eDisplayNativeAMD = VK_COLOR_SPACE_DISPLAY_NATIVE_AMD, + eVkColorspaceSrgbNonlinear = VK_COLORSPACE_SRGB_NONLINEAR_KHR, + eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( ColorSpaceKHR value ) + { + switch ( value ) + { + case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear"; + case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT"; + case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT"; + case ColorSpaceKHR::eDisplayP3LinearEXT: return "DisplayP3LinearEXT"; + case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT"; + case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT"; + case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT"; + case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT"; + case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT"; + case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT"; + case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT"; + case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT"; + case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT"; + case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT"; + case ColorSpaceKHR::eExtendedSrgbNonlinearEXT: return "ExtendedSrgbNonlinearEXT"; + case ColorSpaceKHR::eDisplayNativeAMD: return "DisplayNativeAMD"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class CompositeAlphaFlagBitsKHR : VkCompositeAlphaFlagsKHR + { + eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR, + ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR, + ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR, + eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( CompositeAlphaFlagBitsKHR value ) + { + switch ( value ) + { + case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque"; + case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied"; + case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied"; + case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_swapchain === + + enum class SwapchainCreateFlagBitsKHR : VkSwapchainCreateFlagsKHR + { + eSplitInstanceBindRegions = VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR, + eProtected = VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR, + eMutableFormat = VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( SwapchainCreateFlagBitsKHR value ) + { + switch ( value ) + { + case SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions: return "SplitInstanceBindRegions"; + case SwapchainCreateFlagBitsKHR::eProtected: return "Protected"; + case SwapchainCreateFlagBitsKHR::eMutableFormat: return "MutableFormat"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DeviceGroupPresentModeFlagBitsKHR : VkDeviceGroupPresentModeFlagsKHR + { + eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR, + eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR, + eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR, + eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( DeviceGroupPresentModeFlagBitsKHR value ) + { + switch ( value ) + { + case DeviceGroupPresentModeFlagBitsKHR::eLocal: return "Local"; + case DeviceGroupPresentModeFlagBitsKHR::eRemote: return "Remote"; + case DeviceGroupPresentModeFlagBitsKHR::eSum: return "Sum"; + case DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice: return "LocalMultiDevice"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_display === + + enum class DisplayPlaneAlphaFlagBitsKHR : VkDisplayPlaneAlphaFlagsKHR + { + eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR, + eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR, + ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR, + ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( DisplayPlaneAlphaFlagBitsKHR value ) + { + switch ( value ) + { + case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque"; + case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global"; + case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel"; + case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DisplayModeCreateFlagBitsKHR : VkDisplayModeCreateFlagsKHR + { + }; + + VULKAN_HPP_INLINE std::string to_string( DisplayModeCreateFlagBitsKHR ) + { + return "(void)"; + } + + enum class DisplaySurfaceCreateFlagBitsKHR : VkDisplaySurfaceCreateFlagsKHR + { + }; + + VULKAN_HPP_INLINE std::string to_string( DisplaySurfaceCreateFlagBitsKHR ) + { + return "(void)"; + } + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + enum class XlibSurfaceCreateFlagBitsKHR : VkXlibSurfaceCreateFlagsKHR + { + }; + + VULKAN_HPP_INLINE std::string to_string( XlibSurfaceCreateFlagBitsKHR ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + enum class XcbSurfaceCreateFlagBitsKHR : VkXcbSurfaceCreateFlagsKHR + { + }; + + VULKAN_HPP_INLINE std::string to_string( XcbSurfaceCreateFlagBitsKHR ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + enum class WaylandSurfaceCreateFlagBitsKHR : VkWaylandSurfaceCreateFlagsKHR + { + }; + + VULKAN_HPP_INLINE std::string to_string( WaylandSurfaceCreateFlagBitsKHR ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + + enum class AndroidSurfaceCreateFlagBitsKHR : VkAndroidSurfaceCreateFlagsKHR + { + }; + + VULKAN_HPP_INLINE std::string to_string( AndroidSurfaceCreateFlagBitsKHR ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + enum class Win32SurfaceCreateFlagBitsKHR : VkWin32SurfaceCreateFlagsKHR + { + }; + + VULKAN_HPP_INLINE std::string to_string( Win32SurfaceCreateFlagBitsKHR ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + + enum class DebugReportFlagBitsEXT : VkDebugReportFlagsEXT + { + eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT, + eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT, + ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT, + eError = VK_DEBUG_REPORT_ERROR_BIT_EXT, + eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( DebugReportFlagBitsEXT value ) + { + switch ( value ) + { + case DebugReportFlagBitsEXT::eInformation: return "Information"; + case DebugReportFlagBitsEXT::eWarning: return "Warning"; + case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning"; + case DebugReportFlagBitsEXT::eError: return "Error"; + case DebugReportFlagBitsEXT::eDebug: return "Debug"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DebugReportObjectTypeEXT + { + eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, + eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT, + ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT, + eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, + eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT, + eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT, + eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, + eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, + eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, + eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, + eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT, + eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT, + eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT, + eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT, + eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT, + ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT, + ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT, + eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, + ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, + eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT, + eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT, + eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT, + eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, + eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT, + eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT, + eSurfaceKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT, + eSwapchainKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT, + eDebugReportCallbackEXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT, + eDisplayKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT, + eDisplayModeKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT, + eValidationCacheEXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, + eSamplerYcbcrConversion = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT, + eDescriptorUpdateTemplate = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT, + eCuModuleNVX = VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT, + eCuFunctionNVX = VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT, + eAccelerationStructureKHR = VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT, + eAccelerationStructureNV = VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT, +#if defined( VK_USE_PLATFORM_FUCHSIA ) + eBufferCollectionFUCHSIA = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT, +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + eDebugReport = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT, + eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT, + eSamplerYcbcrConversionKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT, + eValidationCache = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( DebugReportObjectTypeEXT value ) + { + switch ( value ) + { + case DebugReportObjectTypeEXT::eUnknown: return "Unknown"; + case DebugReportObjectTypeEXT::eInstance: return "Instance"; + case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice"; + case DebugReportObjectTypeEXT::eDevice: return "Device"; + case DebugReportObjectTypeEXT::eQueue: return "Queue"; + case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore"; + case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer"; + case DebugReportObjectTypeEXT::eFence: return "Fence"; + case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory"; + case DebugReportObjectTypeEXT::eBuffer: return "Buffer"; + case DebugReportObjectTypeEXT::eImage: return "Image"; + case DebugReportObjectTypeEXT::eEvent: return "Event"; + case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool"; + case DebugReportObjectTypeEXT::eBufferView: return "BufferView"; + case DebugReportObjectTypeEXT::eImageView: return "ImageView"; + case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule"; + case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache"; + case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout"; + case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass"; + case DebugReportObjectTypeEXT::ePipeline: return "Pipeline"; + case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout"; + case DebugReportObjectTypeEXT::eSampler: return "Sampler"; + case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool"; + case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet"; + case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer"; + case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool"; + case DebugReportObjectTypeEXT::eSurfaceKHR: return "SurfaceKHR"; + case DebugReportObjectTypeEXT::eSwapchainKHR: return "SwapchainKHR"; + case DebugReportObjectTypeEXT::eDebugReportCallbackEXT: return "DebugReportCallbackEXT"; + case DebugReportObjectTypeEXT::eDisplayKHR: return "DisplayKHR"; + case DebugReportObjectTypeEXT::eDisplayModeKHR: return "DisplayModeKHR"; + case DebugReportObjectTypeEXT::eValidationCacheEXT: return "ValidationCacheEXT"; + case DebugReportObjectTypeEXT::eSamplerYcbcrConversion: return "SamplerYcbcrConversion"; + case DebugReportObjectTypeEXT::eDescriptorUpdateTemplate: return "DescriptorUpdateTemplate"; + case DebugReportObjectTypeEXT::eCuModuleNVX: return "CuModuleNVX"; + case DebugReportObjectTypeEXT::eCuFunctionNVX: return "CuFunctionNVX"; + case DebugReportObjectTypeEXT::eAccelerationStructureKHR: return "AccelerationStructureKHR"; + case DebugReportObjectTypeEXT::eAccelerationStructureNV: return "AccelerationStructureNV"; +#if defined( VK_USE_PLATFORM_FUCHSIA ) + case DebugReportObjectTypeEXT::eBufferCollectionFUCHSIA: return "BufferCollectionFUCHSIA"; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_AMD_rasterization_order === + + enum class RasterizationOrderAMD + { + eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD, + eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD + }; + + VULKAN_HPP_INLINE std::string to_string( RasterizationOrderAMD value ) + { + switch ( value ) + { + case RasterizationOrderAMD::eStrict: return "Strict"; + case RasterizationOrderAMD::eRelaxed: return "Relaxed"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + + enum class VideoCodecOperationFlagBitsKHR : VkVideoCodecOperationFlagsKHR + { + eInvalid = VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR, +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + eEncodeH264EXT = VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT, + eEncodeH265EXT = VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT, + eDecodeH264EXT = VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT, + eDecodeH265EXT = VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + }; + + VULKAN_HPP_INLINE std::string to_string( VideoCodecOperationFlagBitsKHR value ) + { + switch ( value ) + { + case VideoCodecOperationFlagBitsKHR::eInvalid: return "Invalid"; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + case VideoCodecOperationFlagBitsKHR::eEncodeH264EXT: return "EncodeH264EXT"; + case VideoCodecOperationFlagBitsKHR::eEncodeH265EXT: return "EncodeH265EXT"; + case VideoCodecOperationFlagBitsKHR::eDecodeH264EXT: return "DecodeH264EXT"; + case VideoCodecOperationFlagBitsKHR::eDecodeH265EXT: return "DecodeH265EXT"; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoChromaSubsamplingFlagBitsKHR : VkVideoChromaSubsamplingFlagsKHR + { + eInvalid = VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR, + eMonochrome = VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR, + e420 = VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR, + e422 = VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR, + e444 = VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( VideoChromaSubsamplingFlagBitsKHR value ) + { + switch ( value ) + { + case VideoChromaSubsamplingFlagBitsKHR::eInvalid: return "Invalid"; + case VideoChromaSubsamplingFlagBitsKHR::eMonochrome: return "Monochrome"; + case VideoChromaSubsamplingFlagBitsKHR::e420: return "420"; + case VideoChromaSubsamplingFlagBitsKHR::e422: return "422"; + case VideoChromaSubsamplingFlagBitsKHR::e444: return "444"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoComponentBitDepthFlagBitsKHR : VkVideoComponentBitDepthFlagsKHR + { + eInvalid = VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR, + e8 = VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR, + e10 = VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR, + e12 = VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( VideoComponentBitDepthFlagBitsKHR value ) + { + switch ( value ) + { + case VideoComponentBitDepthFlagBitsKHR::eInvalid: return "Invalid"; + case VideoComponentBitDepthFlagBitsKHR::e8: return "8"; + case VideoComponentBitDepthFlagBitsKHR::e10: return "10"; + case VideoComponentBitDepthFlagBitsKHR::e12: return "12"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoCapabilityFlagBitsKHR : VkVideoCapabilityFlagsKHR + { + eProtectedContent = VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR, + eSeparateReferenceImages = VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( VideoCapabilityFlagBitsKHR value ) + { + switch ( value ) + { + case VideoCapabilityFlagBitsKHR::eProtectedContent: return "ProtectedContent"; + case VideoCapabilityFlagBitsKHR::eSeparateReferenceImages: return "SeparateReferenceImages"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoSessionCreateFlagBitsKHR : VkVideoSessionCreateFlagsKHR + { + eDefault = VK_VIDEO_SESSION_CREATE_DEFAULT_KHR, + eProtectedContent = VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( VideoSessionCreateFlagBitsKHR value ) + { + switch ( value ) + { + case VideoSessionCreateFlagBitsKHR::eDefault: return "Default"; + case VideoSessionCreateFlagBitsKHR::eProtectedContent: return "ProtectedContent"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoCodingControlFlagBitsKHR : VkVideoCodingControlFlagsKHR + { + eDefault = VK_VIDEO_CODING_CONTROL_DEFAULT_KHR, + eReset = VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( VideoCodingControlFlagBitsKHR value ) + { + switch ( value ) + { + case VideoCodingControlFlagBitsKHR::eDefault: return "Default"; + case VideoCodingControlFlagBitsKHR::eReset: return "Reset"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoCodingQualityPresetFlagBitsKHR : VkVideoCodingQualityPresetFlagsKHR + { + eNormal = VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR, + ePower = VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR, + eQuality = VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( VideoCodingQualityPresetFlagBitsKHR value ) + { + switch ( value ) + { + case VideoCodingQualityPresetFlagBitsKHR::eNormal: return "Normal"; + case VideoCodingQualityPresetFlagBitsKHR::ePower: return "Power"; + case VideoCodingQualityPresetFlagBitsKHR::eQuality: return "Quality"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class QueryResultStatusKHR + { + eError = VK_QUERY_RESULT_STATUS_ERROR_KHR, + eNotReady = VK_QUERY_RESULT_STATUS_NOT_READY_KHR, + eComplete = VK_QUERY_RESULT_STATUS_COMPLETE_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( QueryResultStatusKHR value ) + { + switch ( value ) + { + case QueryResultStatusKHR::eError: return "Error"; + case QueryResultStatusKHR::eNotReady: return "NotReady"; + case QueryResultStatusKHR::eComplete: return "Complete"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoBeginCodingFlagBitsKHR : VkVideoBeginCodingFlagsKHR + { + }; + + VULKAN_HPP_INLINE std::string to_string( VideoBeginCodingFlagBitsKHR ) + { + return "(void)"; + } + + enum class VideoEndCodingFlagBitsKHR : VkVideoEndCodingFlagsKHR + { + }; + + VULKAN_HPP_INLINE std::string to_string( VideoEndCodingFlagBitsKHR ) + { + return "(void)"; + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_decode_queue === + + enum class VideoDecodeFlagBitsKHR : VkVideoDecodeFlagsKHR + { + eDefault = VK_VIDEO_DECODE_DEFAULT_KHR, + eReserved0 = VK_VIDEO_DECODE_RESERVED_0_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( VideoDecodeFlagBitsKHR value ) + { + switch ( value ) + { + case VideoDecodeFlagBitsKHR::eDefault: return "Default"; + case VideoDecodeFlagBitsKHR::eReserved0: return "Reserved0"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_transform_feedback === + + enum class PipelineRasterizationStateStreamCreateFlagBitsEXT : VkPipelineRasterizationStateStreamCreateFlagsEXT + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationStateStreamCreateFlagBitsEXT ) + { + return "(void)"; + } + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_encode_h264 === + + enum class VideoEncodeH264CapabilityFlagBitsEXT : VkVideoEncodeH264CapabilityFlagsEXT + { + eCabac = VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT, + eCavlc = VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT, + eWeightedBiPredImplicit = VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT, + eTransform8X8 = VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT, + eChromaQpOffset = VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT, + eSecondChromaQpOffset = VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT, + eDeblockingFilterDisabled = VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT, + eDeblockingFilterEnabled = VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT, + eDeblockingFilterPartial = VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT, + eMultipleSlicePerFrame = VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT, + eEvenlyDistributedSliceSize = VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH264CapabilityFlagBitsEXT value ) + { + switch ( value ) + { + case VideoEncodeH264CapabilityFlagBitsEXT::eCabac: return "Cabac"; + case VideoEncodeH264CapabilityFlagBitsEXT::eCavlc: return "Cavlc"; + case VideoEncodeH264CapabilityFlagBitsEXT::eWeightedBiPredImplicit: return "WeightedBiPredImplicit"; + case VideoEncodeH264CapabilityFlagBitsEXT::eTransform8X8: return "Transform8X8"; + case VideoEncodeH264CapabilityFlagBitsEXT::eChromaQpOffset: return "ChromaQpOffset"; + case VideoEncodeH264CapabilityFlagBitsEXT::eSecondChromaQpOffset: return "SecondChromaQpOffset"; + case VideoEncodeH264CapabilityFlagBitsEXT::eDeblockingFilterDisabled: return "DeblockingFilterDisabled"; + case VideoEncodeH264CapabilityFlagBitsEXT::eDeblockingFilterEnabled: return "DeblockingFilterEnabled"; + case VideoEncodeH264CapabilityFlagBitsEXT::eDeblockingFilterPartial: return "DeblockingFilterPartial"; + case VideoEncodeH264CapabilityFlagBitsEXT::eMultipleSlicePerFrame: return "MultipleSlicePerFrame"; + case VideoEncodeH264CapabilityFlagBitsEXT::eEvenlyDistributedSliceSize: return "EvenlyDistributedSliceSize"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoEncodeH264InputModeFlagBitsEXT : VkVideoEncodeH264InputModeFlagsEXT + { + eFrame = VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT, + eSlice = VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT, + eNonVcl = VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH264InputModeFlagBitsEXT value ) + { + switch ( value ) + { + case VideoEncodeH264InputModeFlagBitsEXT::eFrame: return "Frame"; + case VideoEncodeH264InputModeFlagBitsEXT::eSlice: return "Slice"; + case VideoEncodeH264InputModeFlagBitsEXT::eNonVcl: return "NonVcl"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoEncodeH264OutputModeFlagBitsEXT : VkVideoEncodeH264OutputModeFlagsEXT + { + eFrame = VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT, + eSlice = VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT, + eNonVcl = VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH264OutputModeFlagBitsEXT value ) + { + switch ( value ) + { + case VideoEncodeH264OutputModeFlagBitsEXT::eFrame: return "Frame"; + case VideoEncodeH264OutputModeFlagBitsEXT::eSlice: return "Slice"; + case VideoEncodeH264OutputModeFlagBitsEXT::eNonVcl: return "NonVcl"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoEncodeH264CreateFlagBitsEXT : VkVideoEncodeH264CreateFlagsEXT + { + eDefault = VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT, + eReserved0 = VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH264CreateFlagBitsEXT value ) + { + switch ( value ) + { + case VideoEncodeH264CreateFlagBitsEXT::eDefault: return "Default"; + case VideoEncodeH264CreateFlagBitsEXT::eReserved0: return "Reserved0"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoEncodeH264RateControlStructureFlagBitsEXT : VkVideoEncodeH264RateControlStructureFlagsEXT + { + eUnknown = VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT, + eFlat = VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT, + eDyadic = VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH264RateControlStructureFlagBitsEXT value ) + { + switch ( value ) + { + case VideoEncodeH264RateControlStructureFlagBitsEXT::eUnknown: return "Unknown"; + case VideoEncodeH264RateControlStructureFlagBitsEXT::eFlat: return "Flat"; + case VideoEncodeH264RateControlStructureFlagBitsEXT::eDyadic: return "Dyadic"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_encode_h265 === + + enum class VideoEncodeH265InputModeFlagBitsEXT : VkVideoEncodeH265InputModeFlagsEXT + { + eFrame = VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT, + eSlice = VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_BIT_EXT, + eNonVcl = VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265InputModeFlagBitsEXT value ) + { + switch ( value ) + { + case VideoEncodeH265InputModeFlagBitsEXT::eFrame: return "Frame"; + case VideoEncodeH265InputModeFlagBitsEXT::eSlice: return "Slice"; + case VideoEncodeH265InputModeFlagBitsEXT::eNonVcl: return "NonVcl"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoEncodeH265OutputModeFlagBitsEXT : VkVideoEncodeH265OutputModeFlagsEXT + { + eFrame = VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT, + eSlice = VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_BIT_EXT, + eNonVcl = VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265OutputModeFlagBitsEXT value ) + { + switch ( value ) + { + case VideoEncodeH265OutputModeFlagBitsEXT::eFrame: return "Frame"; + case VideoEncodeH265OutputModeFlagBitsEXT::eSlice: return "Slice"; + case VideoEncodeH265OutputModeFlagBitsEXT::eNonVcl: return "NonVcl"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoEncodeH265CtbSizeFlagBitsEXT : VkVideoEncodeH265CtbSizeFlagsEXT + { + e8 = VK_VIDEO_ENCODE_H265_CTB_SIZE_8_BIT_EXT, + e16 = VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT, + e32 = VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT, + e64 = VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265CtbSizeFlagBitsEXT value ) + { + switch ( value ) + { + case VideoEncodeH265CtbSizeFlagBitsEXT::e8: return "8"; + case VideoEncodeH265CtbSizeFlagBitsEXT::e16: return "16"; + case VideoEncodeH265CtbSizeFlagBitsEXT::e32: return "32"; + case VideoEncodeH265CtbSizeFlagBitsEXT::e64: return "64"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoEncodeH265RateControlStructureFlagBitsEXT : VkVideoEncodeH265RateControlStructureFlagsEXT + { + eUnknown = VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT, + eFlat = VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT, + eDyadic = VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265RateControlStructureFlagBitsEXT value ) + { + switch ( value ) + { + case VideoEncodeH265RateControlStructureFlagBitsEXT::eUnknown: return "Unknown"; + case VideoEncodeH265RateControlStructureFlagBitsEXT::eFlat: return "Flat"; + case VideoEncodeH265RateControlStructureFlagBitsEXT::eDyadic: return "Dyadic"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoEncodeH265CapabilityFlagBitsEXT : VkVideoEncodeH265CapabilityFlagsEXT + { + }; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265CapabilityFlagBitsEXT ) + { + return "(void)"; + } + + enum class VideoEncodeH265CreateFlagBitsEXT : VkVideoEncodeH265CreateFlagsEXT + { + }; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265CreateFlagBitsEXT ) + { + return "(void)"; + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_decode_h264 === + + enum class VideoDecodeH264PictureLayoutFlagBitsEXT : VkVideoDecodeH264PictureLayoutFlagsEXT + { + eProgressive = VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT, + eInterlacedInterleavedLines = VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT, + eInterlacedSeparatePlanes = VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( VideoDecodeH264PictureLayoutFlagBitsEXT value ) + { + switch ( value ) + { + case VideoDecodeH264PictureLayoutFlagBitsEXT::eProgressive: return "Progressive"; + case VideoDecodeH264PictureLayoutFlagBitsEXT::eInterlacedInterleavedLines: return "InterlacedInterleavedLines"; + case VideoDecodeH264PictureLayoutFlagBitsEXT::eInterlacedSeparatePlanes: return "InterlacedSeparatePlanes"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoDecodeH264CreateFlagBitsEXT : VkVideoDecodeH264CreateFlagsEXT + { + }; + + VULKAN_HPP_INLINE std::string to_string( VideoDecodeH264CreateFlagBitsEXT ) + { + return "(void)"; + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_AMD_shader_info === + + enum class ShaderInfoTypeAMD + { + eStatistics = VK_SHADER_INFO_TYPE_STATISTICS_AMD, + eBinary = VK_SHADER_INFO_TYPE_BINARY_AMD, + eDisassembly = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD + }; + + VULKAN_HPP_INLINE std::string to_string( ShaderInfoTypeAMD value ) + { + switch ( value ) + { + case ShaderInfoTypeAMD::eStatistics: return "Statistics"; + case ShaderInfoTypeAMD::eBinary: return "Binary"; + case ShaderInfoTypeAMD::eDisassembly: return "Disassembly"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + + enum class StreamDescriptorSurfaceCreateFlagBitsGGP : VkStreamDescriptorSurfaceCreateFlagsGGP + { + }; + + VULKAN_HPP_INLINE std::string to_string( StreamDescriptorSurfaceCreateFlagBitsGGP ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === + + enum class ExternalMemoryHandleTypeFlagBitsNV : VkExternalMemoryHandleTypeFlagsNV + { + eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV, + eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV, + eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV, + eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV + }; + + VULKAN_HPP_INLINE std::string to_string( ExternalMemoryHandleTypeFlagBitsNV value ) + { + switch ( value ) + { + case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32"; + case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt"; + case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image"; + case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ExternalMemoryFeatureFlagBitsNV : VkExternalMemoryFeatureFlagsNV + { + eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV, + eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV, + eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV + }; + + VULKAN_HPP_INLINE std::string to_string( ExternalMemoryFeatureFlagBitsNV value ) + { + switch ( value ) + { + case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly"; + case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable"; + case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_validation_flags === + + enum class ValidationCheckEXT + { + eAll = VK_VALIDATION_CHECK_ALL_EXT, + eShaders = VK_VALIDATION_CHECK_SHADERS_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( ValidationCheckEXT value ) + { + switch ( value ) + { + case ValidationCheckEXT::eAll: return "All"; + case ValidationCheckEXT::eShaders: return "Shaders"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + + enum class ViSurfaceCreateFlagBitsNN : VkViSurfaceCreateFlagsNN + { + }; + + VULKAN_HPP_INLINE std::string to_string( ViSurfaceCreateFlagBitsNN ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_EXT_conditional_rendering === + + enum class ConditionalRenderingFlagBitsEXT : VkConditionalRenderingFlagsEXT + { + eInverted = VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( ConditionalRenderingFlagBitsEXT value ) + { + switch ( value ) + { + case ConditionalRenderingFlagBitsEXT::eInverted: return "Inverted"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_display_surface_counter === + + enum class SurfaceCounterFlagBitsEXT : VkSurfaceCounterFlagsEXT + { + eVblank = VK_SURFACE_COUNTER_VBLANK_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( SurfaceCounterFlagBitsEXT value ) + { + switch ( value ) + { + case SurfaceCounterFlagBitsEXT::eVblank: return "Vblank"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_display_control === + + enum class DisplayPowerStateEXT + { + eOff = VK_DISPLAY_POWER_STATE_OFF_EXT, + eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT, + eOn = VK_DISPLAY_POWER_STATE_ON_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( DisplayPowerStateEXT value ) + { + switch ( value ) + { + case DisplayPowerStateEXT::eOff: return "Off"; + case DisplayPowerStateEXT::eSuspend: return "Suspend"; + case DisplayPowerStateEXT::eOn: return "On"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DeviceEventTypeEXT + { + eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( DeviceEventTypeEXT value ) + { + switch ( value ) + { + case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DisplayEventTypeEXT + { + eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( DisplayEventTypeEXT value ) + { + switch ( value ) + { + case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_viewport_swizzle === + + enum class ViewportCoordinateSwizzleNV + { + ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV, + eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV, + ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV, + eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV, + ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV, + eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV, + ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV, + eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV + }; + + VULKAN_HPP_INLINE std::string to_string( ViewportCoordinateSwizzleNV value ) + { + switch ( value ) + { + case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX"; + case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX"; + case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY"; + case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY"; + case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ"; + case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ"; + case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW"; + case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PipelineViewportSwizzleStateCreateFlagBitsNV : VkPipelineViewportSwizzleStateCreateFlagsNV + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineViewportSwizzleStateCreateFlagBitsNV ) + { + return "(void)"; + } + + //=== VK_EXT_discard_rectangles === + + enum class DiscardRectangleModeEXT + { + eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT, + eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( DiscardRectangleModeEXT value ) + { + switch ( value ) + { + case DiscardRectangleModeEXT::eInclusive: return "Inclusive"; + case DiscardRectangleModeEXT::eExclusive: return "Exclusive"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PipelineDiscardRectangleStateCreateFlagBitsEXT : VkPipelineDiscardRectangleStateCreateFlagsEXT + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineDiscardRectangleStateCreateFlagBitsEXT ) + { + return "(void)"; + } + + //=== VK_EXT_conservative_rasterization === + + enum class ConservativeRasterizationModeEXT + { + eDisabled = VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT, + eOverestimate = VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, + eUnderestimate = VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( ConservativeRasterizationModeEXT value ) + { + switch ( value ) + { + case ConservativeRasterizationModeEXT::eDisabled: return "Disabled"; + case ConservativeRasterizationModeEXT::eOverestimate: return "Overestimate"; + case ConservativeRasterizationModeEXT::eUnderestimate: return "Underestimate"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class + PipelineRasterizationConservativeStateCreateFlagBitsEXT : VkPipelineRasterizationConservativeStateCreateFlagsEXT + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationConservativeStateCreateFlagBitsEXT ) + { + return "(void)"; + } + + //=== VK_EXT_depth_clip_enable === + + enum class PipelineRasterizationDepthClipStateCreateFlagBitsEXT : VkPipelineRasterizationDepthClipStateCreateFlagsEXT + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationDepthClipStateCreateFlagBitsEXT ) + { + return "(void)"; + } + + //=== VK_KHR_performance_query === + + enum class PerformanceCounterDescriptionFlagBitsKHR : VkPerformanceCounterDescriptionFlagsKHR + { + ePerformanceImpacting = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR, + eConcurrentlyImpacted = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( PerformanceCounterDescriptionFlagBitsKHR value ) + { + switch ( value ) + { + case PerformanceCounterDescriptionFlagBitsKHR::ePerformanceImpacting: return "PerformanceImpacting"; + case PerformanceCounterDescriptionFlagBitsKHR::eConcurrentlyImpacted: return "ConcurrentlyImpacted"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PerformanceCounterScopeKHR + { + eCommandBuffer = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR, + eRenderPass = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR, + eCommand = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR, + eVkQueryScopeCommandBuffer = VK_QUERY_SCOPE_COMMAND_BUFFER_KHR, + eVkQueryScopeCommand = VK_QUERY_SCOPE_COMMAND_KHR, + eVkQueryScopeRenderPass = VK_QUERY_SCOPE_RENDER_PASS_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( PerformanceCounterScopeKHR value ) + { + switch ( value ) + { + case PerformanceCounterScopeKHR::eCommandBuffer: return "CommandBuffer"; + case PerformanceCounterScopeKHR::eRenderPass: return "RenderPass"; + case PerformanceCounterScopeKHR::eCommand: return "Command"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PerformanceCounterStorageKHR + { + eInt32 = VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR, + eInt64 = VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR, + eUint32 = VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR, + eUint64 = VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR, + eFloat32 = VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR, + eFloat64 = VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( PerformanceCounterStorageKHR value ) + { + switch ( value ) + { + case PerformanceCounterStorageKHR::eInt32: return "Int32"; + case PerformanceCounterStorageKHR::eInt64: return "Int64"; + case PerformanceCounterStorageKHR::eUint32: return "Uint32"; + case PerformanceCounterStorageKHR::eUint64: return "Uint64"; + case PerformanceCounterStorageKHR::eFloat32: return "Float32"; + case PerformanceCounterStorageKHR::eFloat64: return "Float64"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PerformanceCounterUnitKHR + { + eGeneric = VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR, + ePercentage = VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR, + eNanoseconds = VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR, + eBytes = VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR, + eBytesPerSecond = VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR, + eKelvin = VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR, + eWatts = VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR, + eVolts = VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR, + eAmps = VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR, + eHertz = VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR, + eCycles = VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( PerformanceCounterUnitKHR value ) + { + switch ( value ) + { + case PerformanceCounterUnitKHR::eGeneric: return "Generic"; + case PerformanceCounterUnitKHR::ePercentage: return "Percentage"; + case PerformanceCounterUnitKHR::eNanoseconds: return "Nanoseconds"; + case PerformanceCounterUnitKHR::eBytes: return "Bytes"; + case PerformanceCounterUnitKHR::eBytesPerSecond: return "BytesPerSecond"; + case PerformanceCounterUnitKHR::eKelvin: return "Kelvin"; + case PerformanceCounterUnitKHR::eWatts: return "Watts"; + case PerformanceCounterUnitKHR::eVolts: return "Volts"; + case PerformanceCounterUnitKHR::eAmps: return "Amps"; + case PerformanceCounterUnitKHR::eHertz: return "Hertz"; + case PerformanceCounterUnitKHR::eCycles: return "Cycles"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class AcquireProfilingLockFlagBitsKHR : VkAcquireProfilingLockFlagsKHR + { + }; + + VULKAN_HPP_INLINE std::string to_string( AcquireProfilingLockFlagBitsKHR ) + { + return "(void)"; + } + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + + enum class IOSSurfaceCreateFlagBitsMVK : VkIOSSurfaceCreateFlagsMVK + { + }; + + VULKAN_HPP_INLINE std::string to_string( IOSSurfaceCreateFlagBitsMVK ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + + enum class MacOSSurfaceCreateFlagBitsMVK : VkMacOSSurfaceCreateFlagsMVK + { + }; + + VULKAN_HPP_INLINE std::string to_string( MacOSSurfaceCreateFlagBitsMVK ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + + enum class DebugUtilsMessageSeverityFlagBitsEXT : VkDebugUtilsMessageSeverityFlagsEXT + { + eVerbose = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT, + eInfo = VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT, + eWarning = VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT, + eError = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessageSeverityFlagBitsEXT value ) + { + switch ( value ) + { + case DebugUtilsMessageSeverityFlagBitsEXT::eVerbose: return "Verbose"; + case DebugUtilsMessageSeverityFlagBitsEXT::eInfo: return "Info"; + case DebugUtilsMessageSeverityFlagBitsEXT::eWarning: return "Warning"; + case DebugUtilsMessageSeverityFlagBitsEXT::eError: return "Error"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DebugUtilsMessageTypeFlagBitsEXT : VkDebugUtilsMessageTypeFlagsEXT + { + eGeneral = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT, + eValidation = VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT, + ePerformance = VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessageTypeFlagBitsEXT value ) + { + switch ( value ) + { + case DebugUtilsMessageTypeFlagBitsEXT::eGeneral: return "General"; + case DebugUtilsMessageTypeFlagBitsEXT::eValidation: return "Validation"; + case DebugUtilsMessageTypeFlagBitsEXT::ePerformance: return "Performance"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DebugUtilsMessengerCallbackDataFlagBitsEXT : VkDebugUtilsMessengerCallbackDataFlagsEXT + { + }; + + VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessengerCallbackDataFlagBitsEXT ) + { + return "(void)"; + } + + enum class DebugUtilsMessengerCreateFlagBitsEXT : VkDebugUtilsMessengerCreateFlagsEXT + { + }; + + VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessengerCreateFlagBitsEXT ) + { + return "(void)"; + } + + //=== VK_EXT_blend_operation_advanced === + + enum class BlendOverlapEXT + { + eUncorrelated = VK_BLEND_OVERLAP_UNCORRELATED_EXT, + eDisjoint = VK_BLEND_OVERLAP_DISJOINT_EXT, + eConjoint = VK_BLEND_OVERLAP_CONJOINT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( BlendOverlapEXT value ) + { + switch ( value ) + { + case BlendOverlapEXT::eUncorrelated: return "Uncorrelated"; + case BlendOverlapEXT::eDisjoint: return "Disjoint"; + case BlendOverlapEXT::eConjoint: return "Conjoint"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_fragment_coverage_to_color === + + enum class PipelineCoverageToColorStateCreateFlagBitsNV : VkPipelineCoverageToColorStateCreateFlagsNV + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineCoverageToColorStateCreateFlagBitsNV ) + { + return "(void)"; + } + + //=== VK_KHR_acceleration_structure === + + enum class AccelerationStructureTypeKHR + { + eTopLevel = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR, + eBottomLevel = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR, + eGeneric = VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR + }; + using AccelerationStructureTypeNV = AccelerationStructureTypeKHR; + + VULKAN_HPP_INLINE std::string to_string( AccelerationStructureTypeKHR value ) + { + switch ( value ) + { + case AccelerationStructureTypeKHR::eTopLevel: return "TopLevel"; + case AccelerationStructureTypeKHR::eBottomLevel: return "BottomLevel"; + case AccelerationStructureTypeKHR::eGeneric: return "Generic"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class AccelerationStructureBuildTypeKHR + { + eHost = VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR, + eDevice = VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR, + eHostOrDevice = VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( AccelerationStructureBuildTypeKHR value ) + { + switch ( value ) + { + case AccelerationStructureBuildTypeKHR::eHost: return "Host"; + case AccelerationStructureBuildTypeKHR::eDevice: return "Device"; + case AccelerationStructureBuildTypeKHR::eHostOrDevice: return "HostOrDevice"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class GeometryFlagBitsKHR : VkGeometryFlagsKHR + { + eOpaque = VK_GEOMETRY_OPAQUE_BIT_KHR, + eNoDuplicateAnyHitInvocation = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR + }; + using GeometryFlagBitsNV = GeometryFlagBitsKHR; + + VULKAN_HPP_INLINE std::string to_string( GeometryFlagBitsKHR value ) + { + switch ( value ) + { + case GeometryFlagBitsKHR::eOpaque: return "Opaque"; + case GeometryFlagBitsKHR::eNoDuplicateAnyHitInvocation: return "NoDuplicateAnyHitInvocation"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class GeometryInstanceFlagBitsKHR : VkGeometryInstanceFlagsKHR + { + eTriangleFacingCullDisable = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR, + eTriangleFlipFacing = VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR, + eForceOpaque = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR, + eForceNoOpaque = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR, + eTriangleCullDisable = VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV, + eTriangleFrontCounterclockwiseKHR = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR, + eTriangleFrontCounterclockwise = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV + }; + using GeometryInstanceFlagBitsNV = GeometryInstanceFlagBitsKHR; + + VULKAN_HPP_INLINE std::string to_string( GeometryInstanceFlagBitsKHR value ) + { + switch ( value ) + { + case GeometryInstanceFlagBitsKHR::eTriangleFacingCullDisable: return "TriangleFacingCullDisable"; + case GeometryInstanceFlagBitsKHR::eTriangleFlipFacing: return "TriangleFlipFacing"; + case GeometryInstanceFlagBitsKHR::eForceOpaque: return "ForceOpaque"; + case GeometryInstanceFlagBitsKHR::eForceNoOpaque: return "ForceNoOpaque"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class BuildAccelerationStructureFlagBitsKHR : VkBuildAccelerationStructureFlagsKHR + { + eAllowUpdate = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR, + eAllowCompaction = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR, + ePreferFastTrace = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR, + ePreferFastBuild = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR, + eLowMemory = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR, + eMotionNV = VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV + }; + using BuildAccelerationStructureFlagBitsNV = BuildAccelerationStructureFlagBitsKHR; + + VULKAN_HPP_INLINE std::string to_string( BuildAccelerationStructureFlagBitsKHR value ) + { + switch ( value ) + { + case BuildAccelerationStructureFlagBitsKHR::eAllowUpdate: return "AllowUpdate"; + case BuildAccelerationStructureFlagBitsKHR::eAllowCompaction: return "AllowCompaction"; + case BuildAccelerationStructureFlagBitsKHR::ePreferFastTrace: return "PreferFastTrace"; + case BuildAccelerationStructureFlagBitsKHR::ePreferFastBuild: return "PreferFastBuild"; + case BuildAccelerationStructureFlagBitsKHR::eLowMemory: return "LowMemory"; + case BuildAccelerationStructureFlagBitsKHR::eMotionNV: return "MotionNV"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class CopyAccelerationStructureModeKHR + { + eClone = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR, + eCompact = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR, + eSerialize = VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR, + eDeserialize = VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR + }; + using CopyAccelerationStructureModeNV = CopyAccelerationStructureModeKHR; + + VULKAN_HPP_INLINE std::string to_string( CopyAccelerationStructureModeKHR value ) + { + switch ( value ) + { + case CopyAccelerationStructureModeKHR::eClone: return "Clone"; + case CopyAccelerationStructureModeKHR::eCompact: return "Compact"; + case CopyAccelerationStructureModeKHR::eSerialize: return "Serialize"; + case CopyAccelerationStructureModeKHR::eDeserialize: return "Deserialize"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class GeometryTypeKHR + { + eTriangles = VK_GEOMETRY_TYPE_TRIANGLES_KHR, + eAabbs = VK_GEOMETRY_TYPE_AABBS_KHR, + eInstances = VK_GEOMETRY_TYPE_INSTANCES_KHR + }; + using GeometryTypeNV = GeometryTypeKHR; + + VULKAN_HPP_INLINE std::string to_string( GeometryTypeKHR value ) + { + switch ( value ) + { + case GeometryTypeKHR::eTriangles: return "Triangles"; + case GeometryTypeKHR::eAabbs: return "Aabbs"; + case GeometryTypeKHR::eInstances: return "Instances"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class AccelerationStructureCompatibilityKHR + { + eCompatible = VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR, + eIncompatible = VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( AccelerationStructureCompatibilityKHR value ) + { + switch ( value ) + { + case AccelerationStructureCompatibilityKHR::eCompatible: return "Compatible"; + case AccelerationStructureCompatibilityKHR::eIncompatible: return "Incompatible"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class AccelerationStructureCreateFlagBitsKHR : VkAccelerationStructureCreateFlagsKHR + { + eDeviceAddressCaptureReplay = VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR, + eMotionNV = VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV + }; + + VULKAN_HPP_INLINE std::string to_string( AccelerationStructureCreateFlagBitsKHR value ) + { + switch ( value ) + { + case AccelerationStructureCreateFlagBitsKHR::eDeviceAddressCaptureReplay: return "DeviceAddressCaptureReplay"; + case AccelerationStructureCreateFlagBitsKHR::eMotionNV: return "MotionNV"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class BuildAccelerationStructureModeKHR + { + eBuild = VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR, + eUpdate = VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( BuildAccelerationStructureModeKHR value ) + { + switch ( value ) + { + case BuildAccelerationStructureModeKHR::eBuild: return "Build"; + case BuildAccelerationStructureModeKHR::eUpdate: return "Update"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_framebuffer_mixed_samples === + + enum class CoverageModulationModeNV + { + eNone = VK_COVERAGE_MODULATION_MODE_NONE_NV, + eRgb = VK_COVERAGE_MODULATION_MODE_RGB_NV, + eAlpha = VK_COVERAGE_MODULATION_MODE_ALPHA_NV, + eRgba = VK_COVERAGE_MODULATION_MODE_RGBA_NV + }; + + VULKAN_HPP_INLINE std::string to_string( CoverageModulationModeNV value ) + { + switch ( value ) + { + case CoverageModulationModeNV::eNone: return "None"; + case CoverageModulationModeNV::eRgb: return "Rgb"; + case CoverageModulationModeNV::eAlpha: return "Alpha"; + case CoverageModulationModeNV::eRgba: return "Rgba"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PipelineCoverageModulationStateCreateFlagBitsNV : VkPipelineCoverageModulationStateCreateFlagsNV + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineCoverageModulationStateCreateFlagBitsNV ) + { + return "(void)"; + } + + //=== VK_EXT_validation_cache === + + enum class ValidationCacheHeaderVersionEXT + { + eOne = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( ValidationCacheHeaderVersionEXT value ) + { + switch ( value ) + { + case ValidationCacheHeaderVersionEXT::eOne: return "One"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ValidationCacheCreateFlagBitsEXT : VkValidationCacheCreateFlagsEXT + { + }; + + VULKAN_HPP_INLINE std::string to_string( ValidationCacheCreateFlagBitsEXT ) + { + return "(void)"; + } + + //=== VK_NV_shading_rate_image === + + enum class ShadingRatePaletteEntryNV + { + eNoInvocations = VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV, + e16InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV, + e8InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV, + e4InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV, + e2InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV, + e1InvocationPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV, + e1InvocationPer2X1Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV, + e1InvocationPer1X2Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV, + e1InvocationPer2X2Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV, + e1InvocationPer4X2Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV, + e1InvocationPer2X4Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV, + e1InvocationPer4X4Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV + }; + + VULKAN_HPP_INLINE std::string to_string( ShadingRatePaletteEntryNV value ) + { + switch ( value ) + { + case ShadingRatePaletteEntryNV::eNoInvocations: return "NoInvocations"; + case ShadingRatePaletteEntryNV::e16InvocationsPerPixel: return "16InvocationsPerPixel"; + case ShadingRatePaletteEntryNV::e8InvocationsPerPixel: return "8InvocationsPerPixel"; + case ShadingRatePaletteEntryNV::e4InvocationsPerPixel: return "4InvocationsPerPixel"; + case ShadingRatePaletteEntryNV::e2InvocationsPerPixel: return "2InvocationsPerPixel"; + case ShadingRatePaletteEntryNV::e1InvocationPerPixel: return "1InvocationPerPixel"; + case ShadingRatePaletteEntryNV::e1InvocationPer2X1Pixels: return "1InvocationPer2X1Pixels"; + case ShadingRatePaletteEntryNV::e1InvocationPer1X2Pixels: return "1InvocationPer1X2Pixels"; + case ShadingRatePaletteEntryNV::e1InvocationPer2X2Pixels: return "1InvocationPer2X2Pixels"; + case ShadingRatePaletteEntryNV::e1InvocationPer4X2Pixels: return "1InvocationPer4X2Pixels"; + case ShadingRatePaletteEntryNV::e1InvocationPer2X4Pixels: return "1InvocationPer2X4Pixels"; + case ShadingRatePaletteEntryNV::e1InvocationPer4X4Pixels: return "1InvocationPer4X4Pixels"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class CoarseSampleOrderTypeNV + { + eDefault = VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV, + eCustom = VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV, + ePixelMajor = VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV, + eSampleMajor = VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV + }; + + VULKAN_HPP_INLINE std::string to_string( CoarseSampleOrderTypeNV value ) + { + switch ( value ) + { + case CoarseSampleOrderTypeNV::eDefault: return "Default"; + case CoarseSampleOrderTypeNV::eCustom: return "Custom"; + case CoarseSampleOrderTypeNV::ePixelMajor: return "PixelMajor"; + case CoarseSampleOrderTypeNV::eSampleMajor: return "SampleMajor"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_ray_tracing === + + enum class AccelerationStructureMemoryRequirementsTypeNV + { + eObject = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV, + eBuildScratch = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV, + eUpdateScratch = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV + }; + + VULKAN_HPP_INLINE std::string to_string( AccelerationStructureMemoryRequirementsTypeNV value ) + { + switch ( value ) + { + case AccelerationStructureMemoryRequirementsTypeNV::eObject: return "Object"; + case AccelerationStructureMemoryRequirementsTypeNV::eBuildScratch: return "BuildScratch"; + case AccelerationStructureMemoryRequirementsTypeNV::eUpdateScratch: return "UpdateScratch"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_AMD_pipeline_compiler_control === + + enum class PipelineCompilerControlFlagBitsAMD : VkPipelineCompilerControlFlagsAMD + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineCompilerControlFlagBitsAMD ) + { + return "(void)"; + } + + //=== VK_EXT_calibrated_timestamps === + + enum class TimeDomainEXT + { + eDevice = VK_TIME_DOMAIN_DEVICE_EXT, + eClockMonotonic = VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT, + eClockMonotonicRaw = VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT, + eQueryPerformanceCounter = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( TimeDomainEXT value ) + { + switch ( value ) + { + case TimeDomainEXT::eDevice: return "Device"; + case TimeDomainEXT::eClockMonotonic: return "ClockMonotonic"; + case TimeDomainEXT::eClockMonotonicRaw: return "ClockMonotonicRaw"; + case TimeDomainEXT::eQueryPerformanceCounter: return "QueryPerformanceCounter"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_decode_h265 === + + enum class VideoDecodeH265CreateFlagBitsEXT : VkVideoDecodeH265CreateFlagsEXT + { + }; + + VULKAN_HPP_INLINE std::string to_string( VideoDecodeH265CreateFlagBitsEXT ) + { + return "(void)"; + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_KHR_global_priority === + + enum class QueueGlobalPriorityKHR + { + eLow = VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR, + eMedium = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR, + eHigh = VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR, + eRealtime = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR + }; + using QueueGlobalPriorityEXT = QueueGlobalPriorityKHR; + + VULKAN_HPP_INLINE std::string to_string( QueueGlobalPriorityKHR value ) + { + switch ( value ) + { + case QueueGlobalPriorityKHR::eLow: return "Low"; + case QueueGlobalPriorityKHR::eMedium: return "Medium"; + case QueueGlobalPriorityKHR::eHigh: return "High"; + case QueueGlobalPriorityKHR::eRealtime: return "Realtime"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_AMD_memory_overallocation_behavior === + + enum class MemoryOverallocationBehaviorAMD + { + eDefault = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD, + eAllowed = VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD, + eDisallowed = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD + }; + + VULKAN_HPP_INLINE std::string to_string( MemoryOverallocationBehaviorAMD value ) + { + switch ( value ) + { + case MemoryOverallocationBehaviorAMD::eDefault: return "Default"; + case MemoryOverallocationBehaviorAMD::eAllowed: return "Allowed"; + case MemoryOverallocationBehaviorAMD::eDisallowed: return "Disallowed"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_INTEL_performance_query === + + enum class PerformanceConfigurationTypeINTEL + { + eCommandQueueMetricsDiscoveryActivated = + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL + }; + + VULKAN_HPP_INLINE std::string to_string( PerformanceConfigurationTypeINTEL value ) + { + switch ( value ) + { + case PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated: + return "CommandQueueMetricsDiscoveryActivated"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class QueryPoolSamplingModeINTEL + { + eManual = VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL + }; + + VULKAN_HPP_INLINE std::string to_string( QueryPoolSamplingModeINTEL value ) + { + switch ( value ) + { + case QueryPoolSamplingModeINTEL::eManual: return "Manual"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PerformanceOverrideTypeINTEL + { + eNullHardware = VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL, + eFlushGpuCaches = VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL + }; + + VULKAN_HPP_INLINE std::string to_string( PerformanceOverrideTypeINTEL value ) + { + switch ( value ) + { + case PerformanceOverrideTypeINTEL::eNullHardware: return "NullHardware"; + case PerformanceOverrideTypeINTEL::eFlushGpuCaches: return "FlushGpuCaches"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PerformanceParameterTypeINTEL + { + eHwCountersSupported = VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL, + eStreamMarkerValidBits = VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL + }; + + VULKAN_HPP_INLINE std::string to_string( PerformanceParameterTypeINTEL value ) + { + switch ( value ) + { + case PerformanceParameterTypeINTEL::eHwCountersSupported: return "HwCountersSupported"; + case PerformanceParameterTypeINTEL::eStreamMarkerValidBits: return "StreamMarkerValidBits"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PerformanceValueTypeINTEL + { + eUint32 = VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL, + eUint64 = VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL, + eFloat = VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL, + eBool = VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL, + eString = VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL + }; + + VULKAN_HPP_INLINE std::string to_string( PerformanceValueTypeINTEL value ) + { + switch ( value ) + { + case PerformanceValueTypeINTEL::eUint32: return "Uint32"; + case PerformanceValueTypeINTEL::eUint64: return "Uint64"; + case PerformanceValueTypeINTEL::eFloat: return "Float"; + case PerformanceValueTypeINTEL::eBool: return "Bool"; + case PerformanceValueTypeINTEL::eString: return "String"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + + enum class ImagePipeSurfaceCreateFlagBitsFUCHSIA : VkImagePipeSurfaceCreateFlagsFUCHSIA + { + }; + + VULKAN_HPP_INLINE std::string to_string( ImagePipeSurfaceCreateFlagBitsFUCHSIA ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + + enum class MetalSurfaceCreateFlagBitsEXT : VkMetalSurfaceCreateFlagsEXT + { + }; + + VULKAN_HPP_INLINE std::string to_string( MetalSurfaceCreateFlagBitsEXT ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_fragment_shading_rate === + + enum class FragmentShadingRateCombinerOpKHR + { + eKeep = VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR, + eReplace = VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR, + eMin = VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR, + eMax = VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR, + eMul = VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( FragmentShadingRateCombinerOpKHR value ) + { + switch ( value ) + { + case FragmentShadingRateCombinerOpKHR::eKeep: return "Keep"; + case FragmentShadingRateCombinerOpKHR::eReplace: return "Replace"; + case FragmentShadingRateCombinerOpKHR::eMin: return "Min"; + case FragmentShadingRateCombinerOpKHR::eMax: return "Max"; + case FragmentShadingRateCombinerOpKHR::eMul: return "Mul"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_AMD_shader_core_properties2 === + + enum class ShaderCorePropertiesFlagBitsAMD : VkShaderCorePropertiesFlagsAMD + { + }; + + VULKAN_HPP_INLINE std::string to_string( ShaderCorePropertiesFlagBitsAMD ) + { + return "(void)"; + } + + //=== VK_EXT_validation_features === + + enum class ValidationFeatureEnableEXT + { + eGpuAssisted = VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT, + eGpuAssistedReserveBindingSlot = VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT, + eBestPractices = VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT, + eDebugPrintf = VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT, + eSynchronizationValidation = VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( ValidationFeatureEnableEXT value ) + { + switch ( value ) + { + case ValidationFeatureEnableEXT::eGpuAssisted: return "GpuAssisted"; + case ValidationFeatureEnableEXT::eGpuAssistedReserveBindingSlot: return "GpuAssistedReserveBindingSlot"; + case ValidationFeatureEnableEXT::eBestPractices: return "BestPractices"; + case ValidationFeatureEnableEXT::eDebugPrintf: return "DebugPrintf"; + case ValidationFeatureEnableEXT::eSynchronizationValidation: return "SynchronizationValidation"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ValidationFeatureDisableEXT + { + eAll = VK_VALIDATION_FEATURE_DISABLE_ALL_EXT, + eShaders = VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT, + eThreadSafety = VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT, + eApiParameters = VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT, + eObjectLifetimes = VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT, + eCoreChecks = VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT, + eUniqueHandles = VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT, + eShaderValidationCache = VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( ValidationFeatureDisableEXT value ) + { + switch ( value ) + { + case ValidationFeatureDisableEXT::eAll: return "All"; + case ValidationFeatureDisableEXT::eShaders: return "Shaders"; + case ValidationFeatureDisableEXT::eThreadSafety: return "ThreadSafety"; + case ValidationFeatureDisableEXT::eApiParameters: return "ApiParameters"; + case ValidationFeatureDisableEXT::eObjectLifetimes: return "ObjectLifetimes"; + case ValidationFeatureDisableEXT::eCoreChecks: return "CoreChecks"; + case ValidationFeatureDisableEXT::eUniqueHandles: return "UniqueHandles"; + case ValidationFeatureDisableEXT::eShaderValidationCache: return "ShaderValidationCache"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_cooperative_matrix === + + enum class ScopeNV + { + eDevice = VK_SCOPE_DEVICE_NV, + eWorkgroup = VK_SCOPE_WORKGROUP_NV, + eSubgroup = VK_SCOPE_SUBGROUP_NV, + eQueueFamily = VK_SCOPE_QUEUE_FAMILY_NV + }; + + VULKAN_HPP_INLINE std::string to_string( ScopeNV value ) + { + switch ( value ) + { + case ScopeNV::eDevice: return "Device"; + case ScopeNV::eWorkgroup: return "Workgroup"; + case ScopeNV::eSubgroup: return "Subgroup"; + case ScopeNV::eQueueFamily: return "QueueFamily"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ComponentTypeNV + { + eFloat16 = VK_COMPONENT_TYPE_FLOAT16_NV, + eFloat32 = VK_COMPONENT_TYPE_FLOAT32_NV, + eFloat64 = VK_COMPONENT_TYPE_FLOAT64_NV, + eSint8 = VK_COMPONENT_TYPE_SINT8_NV, + eSint16 = VK_COMPONENT_TYPE_SINT16_NV, + eSint32 = VK_COMPONENT_TYPE_SINT32_NV, + eSint64 = VK_COMPONENT_TYPE_SINT64_NV, + eUint8 = VK_COMPONENT_TYPE_UINT8_NV, + eUint16 = VK_COMPONENT_TYPE_UINT16_NV, + eUint32 = VK_COMPONENT_TYPE_UINT32_NV, + eUint64 = VK_COMPONENT_TYPE_UINT64_NV + }; + + VULKAN_HPP_INLINE std::string to_string( ComponentTypeNV value ) + { + switch ( value ) + { + case ComponentTypeNV::eFloat16: return "Float16"; + case ComponentTypeNV::eFloat32: return "Float32"; + case ComponentTypeNV::eFloat64: return "Float64"; + case ComponentTypeNV::eSint8: return "Sint8"; + case ComponentTypeNV::eSint16: return "Sint16"; + case ComponentTypeNV::eSint32: return "Sint32"; + case ComponentTypeNV::eSint64: return "Sint64"; + case ComponentTypeNV::eUint8: return "Uint8"; + case ComponentTypeNV::eUint16: return "Uint16"; + case ComponentTypeNV::eUint32: return "Uint32"; + case ComponentTypeNV::eUint64: return "Uint64"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_coverage_reduction_mode === + + enum class CoverageReductionModeNV + { + eMerge = VK_COVERAGE_REDUCTION_MODE_MERGE_NV, + eTruncate = VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV + }; + + VULKAN_HPP_INLINE std::string to_string( CoverageReductionModeNV value ) + { + switch ( value ) + { + case CoverageReductionModeNV::eMerge: return "Merge"; + case CoverageReductionModeNV::eTruncate: return "Truncate"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PipelineCoverageReductionStateCreateFlagBitsNV : VkPipelineCoverageReductionStateCreateFlagsNV + { + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineCoverageReductionStateCreateFlagBitsNV ) + { + return "(void)"; + } + + //=== VK_EXT_provoking_vertex === + + enum class ProvokingVertexModeEXT + { + eFirstVertex = VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT, + eLastVertex = VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( ProvokingVertexModeEXT value ) + { + switch ( value ) + { + case ProvokingVertexModeEXT::eFirstVertex: return "FirstVertex"; + case ProvokingVertexModeEXT::eLastVertex: return "LastVertex"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + enum class FullScreenExclusiveEXT + { + eDefault = VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT, + eAllowed = VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT, + eDisallowed = VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT, + eApplicationControlled = VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( FullScreenExclusiveEXT value ) + { + switch ( value ) + { + case FullScreenExclusiveEXT::eDefault: return "Default"; + case FullScreenExclusiveEXT::eAllowed: return "Allowed"; + case FullScreenExclusiveEXT::eDisallowed: return "Disallowed"; + case FullScreenExclusiveEXT::eApplicationControlled: return "ApplicationControlled"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + + enum class HeadlessSurfaceCreateFlagBitsEXT : VkHeadlessSurfaceCreateFlagsEXT + { + }; + + VULKAN_HPP_INLINE std::string to_string( HeadlessSurfaceCreateFlagBitsEXT ) + { + return "(void)"; + } + + //=== VK_EXT_line_rasterization === + + enum class LineRasterizationModeEXT + { + eDefault = VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT, + eRectangular = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT, + eBresenham = VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT, + eRectangularSmooth = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( LineRasterizationModeEXT value ) + { + switch ( value ) + { + case LineRasterizationModeEXT::eDefault: return "Default"; + case LineRasterizationModeEXT::eRectangular: return "Rectangular"; + case LineRasterizationModeEXT::eBresenham: return "Bresenham"; + case LineRasterizationModeEXT::eRectangularSmooth: return "RectangularSmooth"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_pipeline_executable_properties === + + enum class PipelineExecutableStatisticFormatKHR + { + eBool32 = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR, + eInt64 = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR, + eUint64 = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR, + eFloat64 = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineExecutableStatisticFormatKHR value ) + { + switch ( value ) + { + case PipelineExecutableStatisticFormatKHR::eBool32: return "Bool32"; + case PipelineExecutableStatisticFormatKHR::eInt64: return "Int64"; + case PipelineExecutableStatisticFormatKHR::eUint64: return "Uint64"; + case PipelineExecutableStatisticFormatKHR::eFloat64: return "Float64"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_device_generated_commands === + + enum class IndirectStateFlagBitsNV : VkIndirectStateFlagsNV + { + eFlagFrontface = VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV + }; + + VULKAN_HPP_INLINE std::string to_string( IndirectStateFlagBitsNV value ) + { + switch ( value ) + { + case IndirectStateFlagBitsNV::eFlagFrontface: return "FlagFrontface"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class IndirectCommandsTokenTypeNV + { + eShaderGroup = VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV, + eStateFlags = VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV, + eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV, + eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV, + ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV, + eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV, + eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV, + eDrawTasks = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV + }; + + VULKAN_HPP_INLINE std::string to_string( IndirectCommandsTokenTypeNV value ) + { + switch ( value ) + { + case IndirectCommandsTokenTypeNV::eShaderGroup: return "ShaderGroup"; + case IndirectCommandsTokenTypeNV::eStateFlags: return "StateFlags"; + case IndirectCommandsTokenTypeNV::eIndexBuffer: return "IndexBuffer"; + case IndirectCommandsTokenTypeNV::eVertexBuffer: return "VertexBuffer"; + case IndirectCommandsTokenTypeNV::ePushConstant: return "PushConstant"; + case IndirectCommandsTokenTypeNV::eDrawIndexed: return "DrawIndexed"; + case IndirectCommandsTokenTypeNV::eDraw: return "Draw"; + case IndirectCommandsTokenTypeNV::eDrawTasks: return "DrawTasks"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class IndirectCommandsLayoutUsageFlagBitsNV : VkIndirectCommandsLayoutUsageFlagsNV + { + eExplicitPreprocess = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV, + eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV, + eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV + }; + + VULKAN_HPP_INLINE std::string to_string( IndirectCommandsLayoutUsageFlagBitsNV value ) + { + switch ( value ) + { + case IndirectCommandsLayoutUsageFlagBitsNV::eExplicitPreprocess: return "ExplicitPreprocess"; + case IndirectCommandsLayoutUsageFlagBitsNV::eIndexedSequences: return "IndexedSequences"; + case IndirectCommandsLayoutUsageFlagBitsNV::eUnorderedSequences: return "UnorderedSequences"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_device_memory_report === + + enum class DeviceMemoryReportEventTypeEXT + { + eAllocate = VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT, + eFree = VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT, + eImport = VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT, + eUnimport = VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT, + eAllocationFailed = VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( DeviceMemoryReportEventTypeEXT value ) + { + switch ( value ) + { + case DeviceMemoryReportEventTypeEXT::eAllocate: return "Allocate"; + case DeviceMemoryReportEventTypeEXT::eFree: return "Free"; + case DeviceMemoryReportEventTypeEXT::eImport: return "Import"; + case DeviceMemoryReportEventTypeEXT::eUnimport: return "Unimport"; + case DeviceMemoryReportEventTypeEXT::eAllocationFailed: return "AllocationFailed"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class DeviceMemoryReportFlagBitsEXT : VkDeviceMemoryReportFlagsEXT + { + }; + + VULKAN_HPP_INLINE std::string to_string( DeviceMemoryReportFlagBitsEXT ) + { + return "(void)"; + } + + //=== VK_EXT_pipeline_creation_cache_control === + + enum class PipelineCacheCreateFlagBits : VkPipelineCacheCreateFlags + { + eExternallySynchronized = VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, + eExternallySynchronizedEXT = VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineCacheCreateFlagBits value ) + { + switch ( value ) + { + case PipelineCacheCreateFlagBits::eExternallySynchronized: return "ExternallySynchronized"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_encode_queue === + + enum class VideoEncodeFlagBitsKHR : VkVideoEncodeFlagsKHR + { + eDefault = VK_VIDEO_ENCODE_DEFAULT_KHR, + eReserved0 = VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeFlagBitsKHR::eDefault: return "Default"; + case VideoEncodeFlagBitsKHR::eReserved0: return "Reserved0"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoEncodeRateControlFlagBitsKHR : VkVideoEncodeRateControlFlagsKHR + { + eDefault = VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR, + eReserved0 = VK_VIDEO_ENCODE_RATE_CONTROL_RESERVED_0_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeRateControlFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeRateControlFlagBitsKHR::eDefault: return "Default"; + case VideoEncodeRateControlFlagBitsKHR::eReserved0: return "Reserved0"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class VideoEncodeRateControlModeFlagBitsKHR : VkVideoEncodeRateControlModeFlagsKHR + { + eNone = VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR, + eCbr = VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR, + eVbr = VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeRateControlModeFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeRateControlModeFlagBitsKHR::eNone: return "None"; + case VideoEncodeRateControlModeFlagBitsKHR::eCbr: return "Cbr"; + case VideoEncodeRateControlModeFlagBitsKHR::eVbr: return "Vbr"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NV_device_diagnostics_config === + + enum class DeviceDiagnosticsConfigFlagBitsNV : VkDeviceDiagnosticsConfigFlagsNV + { + eEnableShaderDebugInfo = VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV, + eEnableResourceTracking = VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV, + eEnableAutomaticCheckpoints = VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV + }; + + VULKAN_HPP_INLINE std::string to_string( DeviceDiagnosticsConfigFlagBitsNV value ) + { + switch ( value ) + { + case DeviceDiagnosticsConfigFlagBitsNV::eEnableShaderDebugInfo: return "EnableShaderDebugInfo"; + case DeviceDiagnosticsConfigFlagBitsNV::eEnableResourceTracking: return "EnableResourceTracking"; + case DeviceDiagnosticsConfigFlagBitsNV::eEnableAutomaticCheckpoints: return "EnableAutomaticCheckpoints"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_fragment_shading_rate_enums === + + enum class FragmentShadingRateNV + { + e1InvocationPerPixel = VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV, + e1InvocationPer1X2Pixels = VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV, + e1InvocationPer2X1Pixels = VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV, + e1InvocationPer2X2Pixels = VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV, + e1InvocationPer2X4Pixels = VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV, + e1InvocationPer4X2Pixels = VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV, + e1InvocationPer4X4Pixels = VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV, + e2InvocationsPerPixel = VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV, + e4InvocationsPerPixel = VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV, + e8InvocationsPerPixel = VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV, + e16InvocationsPerPixel = VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV, + eNoInvocations = VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV + }; + + VULKAN_HPP_INLINE std::string to_string( FragmentShadingRateNV value ) + { + switch ( value ) + { + case FragmentShadingRateNV::e1InvocationPerPixel: return "1InvocationPerPixel"; + case FragmentShadingRateNV::e1InvocationPer1X2Pixels: return "1InvocationPer1X2Pixels"; + case FragmentShadingRateNV::e1InvocationPer2X1Pixels: return "1InvocationPer2X1Pixels"; + case FragmentShadingRateNV::e1InvocationPer2X2Pixels: return "1InvocationPer2X2Pixels"; + case FragmentShadingRateNV::e1InvocationPer2X4Pixels: return "1InvocationPer2X4Pixels"; + case FragmentShadingRateNV::e1InvocationPer4X2Pixels: return "1InvocationPer4X2Pixels"; + case FragmentShadingRateNV::e1InvocationPer4X4Pixels: return "1InvocationPer4X4Pixels"; + case FragmentShadingRateNV::e2InvocationsPerPixel: return "2InvocationsPerPixel"; + case FragmentShadingRateNV::e4InvocationsPerPixel: return "4InvocationsPerPixel"; + case FragmentShadingRateNV::e8InvocationsPerPixel: return "8InvocationsPerPixel"; + case FragmentShadingRateNV::e16InvocationsPerPixel: return "16InvocationsPerPixel"; + case FragmentShadingRateNV::eNoInvocations: return "NoInvocations"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class FragmentShadingRateTypeNV + { + eFragmentSize = VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV, + eEnums = VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV + }; + + VULKAN_HPP_INLINE std::string to_string( FragmentShadingRateTypeNV value ) + { + switch ( value ) + { + case FragmentShadingRateTypeNV::eFragmentSize: return "FragmentSize"; + case FragmentShadingRateTypeNV::eEnums: return "Enums"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_ray_tracing_motion_blur === + + enum class AccelerationStructureMotionInstanceTypeNV + { + eStatic = VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV, + eMatrixMotion = VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV, + eSrtMotion = VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV + }; + + VULKAN_HPP_INLINE std::string to_string( AccelerationStructureMotionInstanceTypeNV value ) + { + switch ( value ) + { + case AccelerationStructureMotionInstanceTypeNV::eStatic: return "Static"; + case AccelerationStructureMotionInstanceTypeNV::eMatrixMotion: return "MatrixMotion"; + case AccelerationStructureMotionInstanceTypeNV::eSrtMotion: return "SrtMotion"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class AccelerationStructureMotionInfoFlagBitsNV : VkAccelerationStructureMotionInfoFlagsNV + { + }; + + VULKAN_HPP_INLINE std::string to_string( AccelerationStructureMotionInfoFlagBitsNV ) + { + return "(void)"; + } + + enum class AccelerationStructureMotionInstanceFlagBitsNV : VkAccelerationStructureMotionInstanceFlagsNV + { + }; + + VULKAN_HPP_INLINE std::string to_string( AccelerationStructureMotionInstanceFlagBitsNV ) + { + return "(void)"; + } + + //=== VK_ARM_rasterization_order_attachment_access === + + enum class PipelineColorBlendStateCreateFlagBits : VkPipelineColorBlendStateCreateFlags + { + eRasterizationOrderAttachmentAccessARM = + VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineColorBlendStateCreateFlagBits value ) + { + switch ( value ) + { + case PipelineColorBlendStateCreateFlagBits::eRasterizationOrderAttachmentAccessARM: + return "RasterizationOrderAttachmentAccessARM"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class PipelineDepthStencilStateCreateFlagBits : VkPipelineDepthStencilStateCreateFlags + { + eRasterizationOrderAttachmentDepthAccessARM = + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM, + eRasterizationOrderAttachmentStencilAccessARM = + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM + }; + + VULKAN_HPP_INLINE std::string to_string( PipelineDepthStencilStateCreateFlagBits value ) + { + switch ( value ) + { + case PipelineDepthStencilStateCreateFlagBits::eRasterizationOrderAttachmentDepthAccessARM: + return "RasterizationOrderAttachmentDepthAccessARM"; + case PipelineDepthStencilStateCreateFlagBits::eRasterizationOrderAttachmentStencilAccessARM: + return "RasterizationOrderAttachmentStencilAccessARM"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + enum class DirectFBSurfaceCreateFlagBitsEXT : VkDirectFBSurfaceCreateFlagsEXT + { + }; + + VULKAN_HPP_INLINE std::string to_string( DirectFBSurfaceCreateFlagBitsEXT ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_KHR_ray_tracing_pipeline === + + enum class RayTracingShaderGroupTypeKHR + { + eGeneral = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR, + eTrianglesHitGroup = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR, + eProceduralHitGroup = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR + }; + using RayTracingShaderGroupTypeNV = RayTracingShaderGroupTypeKHR; + + VULKAN_HPP_INLINE std::string to_string( RayTracingShaderGroupTypeKHR value ) + { + switch ( value ) + { + case RayTracingShaderGroupTypeKHR::eGeneral: return "General"; + case RayTracingShaderGroupTypeKHR::eTrianglesHitGroup: return "TrianglesHitGroup"; + case RayTracingShaderGroupTypeKHR::eProceduralHitGroup: return "ProceduralHitGroup"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ShaderGroupShaderKHR + { + eGeneral = VK_SHADER_GROUP_SHADER_GENERAL_KHR, + eClosestHit = VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR, + eAnyHit = VK_SHADER_GROUP_SHADER_ANY_HIT_KHR, + eIntersection = VK_SHADER_GROUP_SHADER_INTERSECTION_KHR + }; + + VULKAN_HPP_INLINE std::string to_string( ShaderGroupShaderKHR value ) + { + switch ( value ) + { + case ShaderGroupShaderKHR::eGeneral: return "General"; + case ShaderGroupShaderKHR::eClosestHit: return "ClosestHit"; + case ShaderGroupShaderKHR::eAnyHit: return "AnyHit"; + case ShaderGroupShaderKHR::eIntersection: return "Intersection"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + enum class ImageConstraintsInfoFlagBitsFUCHSIA : VkImageConstraintsInfoFlagsFUCHSIA + { + eCpuReadRarely = VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA, + eCpuReadOften = VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA, + eCpuWriteRarely = VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA, + eCpuWriteOften = VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA, + eProtectedOptional = VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA + }; + + VULKAN_HPP_INLINE std::string to_string( ImageConstraintsInfoFlagBitsFUCHSIA value ) + { + switch ( value ) + { + case ImageConstraintsInfoFlagBitsFUCHSIA::eCpuReadRarely: return "CpuReadRarely"; + case ImageConstraintsInfoFlagBitsFUCHSIA::eCpuReadOften: return "CpuReadOften"; + case ImageConstraintsInfoFlagBitsFUCHSIA::eCpuWriteRarely: return "CpuWriteRarely"; + case ImageConstraintsInfoFlagBitsFUCHSIA::eCpuWriteOften: return "CpuWriteOften"; + case ImageConstraintsInfoFlagBitsFUCHSIA::eProtectedOptional: return "ProtectedOptional"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + + enum class ImageFormatConstraintsFlagBitsFUCHSIA : VkImageFormatConstraintsFlagsFUCHSIA + { + }; + + VULKAN_HPP_INLINE std::string to_string( ImageFormatConstraintsFlagBitsFUCHSIA ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + enum class ScreenSurfaceCreateFlagBitsQNX : VkScreenSurfaceCreateFlagsQNX + { + }; + + VULKAN_HPP_INLINE std::string to_string( ScreenSurfaceCreateFlagBitsQNX ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + template + struct cpp_type + {}; + + //===================== + //=== Format Traits === + //===================== + + // The texel block size in bytes. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t blockSize( VULKAN_HPP_NAMESPACE::Format format ) + { + switch ( format ) + { + case VULKAN_HPP_NAMESPACE::Format::eR4G4UnormPack8: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR4G4B4A4UnormPack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eB4G4R4A4UnormPack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR5G6B5UnormPack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eB5G6R5UnormPack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR5G5B5A1UnormPack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eB5G5R5A1UnormPack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eA1R5G5B5UnormPack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR8Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Snorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Uscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Sscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Srgb: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Unorm: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Snorm: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Uscaled: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Sscaled: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Uint: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Sint: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Srgb: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Snorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Uscaled: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Sscaled: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Uint: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Sint: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Srgb: return 3; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Snorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Uscaled: return 3; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Sscaled: return 3; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Uint: return 3; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Sint: return 3; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Srgb: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Unorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Snorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Uscaled: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Sscaled: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Uint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Sint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Srgb: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Unorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Snorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Uscaled: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Sscaled: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Uint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Sint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Srgb: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UnormPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SnormPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UscaledPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SscaledPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UintPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SintPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SrgbPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10UnormPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10SnormPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10UscaledPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10SscaledPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10UintPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10SintPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10UnormPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10SnormPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10UscaledPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10SscaledPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10UintPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10SintPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR16Unorm: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR16Snorm: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR16Uscaled: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR16Sscaled: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR16Uint: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR16Sint: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR16Sfloat: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Unorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Snorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Uscaled: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Sscaled: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Uint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Sint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Sfloat: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Unorm: return 6; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Snorm: return 6; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Uscaled: return 6; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Sscaled: return 6; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Uint: return 6; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Sint: return 6; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Sfloat: return 6; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Unorm: return 8; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Snorm: return 8; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Uscaled: return 8; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Sscaled: return 8; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Uint: return 8; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Sint: return 8; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Sfloat: return 8; + case VULKAN_HPP_NAMESPACE::Format::eR32Uint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR32Sint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR32Sfloat: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR32G32Uint: return 8; + case VULKAN_HPP_NAMESPACE::Format::eR32G32Sint: return 8; + case VULKAN_HPP_NAMESPACE::Format::eR32G32Sfloat: return 8; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32Uint: return 12; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32Sint: return 12; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32Sfloat: return 12; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32A32Uint: return 16; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32A32Sint: return 16; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32A32Sfloat: return 16; + case VULKAN_HPP_NAMESPACE::Format::eR64Uint: return 8; + case VULKAN_HPP_NAMESPACE::Format::eR64Sint: return 8; + case VULKAN_HPP_NAMESPACE::Format::eR64Sfloat: return 8; + case VULKAN_HPP_NAMESPACE::Format::eR64G64Uint: return 16; + case VULKAN_HPP_NAMESPACE::Format::eR64G64Sint: return 16; + case VULKAN_HPP_NAMESPACE::Format::eR64G64Sfloat: return 16; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64Uint: return 24; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64Sint: return 24; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64Sfloat: return 24; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64A64Uint: return 32; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64A64Sint: return 32; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64A64Sfloat: return 32; + case VULKAN_HPP_NAMESPACE::Format::eB10G11R11UfloatPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eE5B9G9R9UfloatPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eD16Unorm: return 2; + case VULKAN_HPP_NAMESPACE::Format::eX8D24UnormPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eD32Sfloat: return 4; + case VULKAN_HPP_NAMESPACE::Format::eS8Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eD16UnormS8Uint: return 3; + case VULKAN_HPP_NAMESPACE::Format::eD24UnormS8Uint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eD32SfloatS8Uint: return 5; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbUnormBlock: return 8; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbSrgbBlock: return 8; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbaUnormBlock: return 8; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbaSrgbBlock: return 8; + case VULKAN_HPP_NAMESPACE::Format::eBc2UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc2SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc3UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc3SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc4UnormBlock: return 8; + case VULKAN_HPP_NAMESPACE::Format::eBc4SnormBlock: return 8; + case VULKAN_HPP_NAMESPACE::Format::eBc5UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc5SnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc6HUfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc6HSfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc7UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc7SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8UnormBlock: return 8; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8SrgbBlock: return 8; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A1UnormBlock: return 8; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A1SrgbBlock: return 8; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A8UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A8SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eEacR11UnormBlock: return 8; + case VULKAN_HPP_NAMESPACE::Format::eEacR11SnormBlock: return 8; + case VULKAN_HPP_NAMESPACE::Format::eEacR11G11UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eEacR11G11SnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eG8B8G8R8422Unorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8G8422Unorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane420Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane420Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane422Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane422Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane444Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR10X6G10X6Unorm2Pack16: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR10X6G10X6B10X6A10X6Unorm4Pack16: return 8; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: return 8; + case VULKAN_HPP_NAMESPACE::Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: return 8; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: return 6; + case VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR12X4G12X4Unorm2Pack16: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR12X4G12X4B12X4A12X4Unorm4Pack16: return 8; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: return 8; + case VULKAN_HPP_NAMESPACE::Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: return 8; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG16B16G16R16422Unorm: return 8; + case VULKAN_HPP_NAMESPACE::Format::eB16G16R16G16422Unorm: return 8; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane420Unorm: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane420Unorm: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane422Unorm: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane422Unorm: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane444Unorm: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane444Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: return 6; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane444Unorm: return 6; + case VULKAN_HPP_NAMESPACE::Format::eA4R4G4B4UnormPack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eA4B4G4R4UnormPack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4SfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4SfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5SfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5SfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6SfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5SfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6SfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8SfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5SfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6SfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8SfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10SfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10SfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12SfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc12BppUnormBlockIMG: return 8; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc14BppUnormBlockIMG: return 8; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc22BppUnormBlockIMG: return 8; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc24BppUnormBlockIMG: return 8; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc12BppSrgbBlockIMG: return 8; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc14BppSrgbBlockIMG: return 8; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc22BppSrgbBlockIMG: return 8; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc24BppSrgbBlockIMG: return 8; + + default: VULKAN_HPP_ASSERT( false ); return 0; + } + } + + // The number of texels in a texel block. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t texelsPerBlock( VULKAN_HPP_NAMESPACE::Format format ) + { + switch ( format ) + { + case VULKAN_HPP_NAMESPACE::Format::eR4G4UnormPack8: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR4G4B4A4UnormPack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB4G4R4A4UnormPack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR5G6B5UnormPack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB5G6R5UnormPack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR5G5B5A1UnormPack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB5G5R5A1UnormPack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA1R5G5B5UnormPack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Snorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Uscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Sscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Srgb: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Snorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Uscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Sscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Srgb: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Snorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Uscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Sscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Srgb: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Snorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Uscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Sscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Srgb: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Snorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Uscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Sscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Srgb: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Snorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Uscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Sscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Srgb: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UnormPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SnormPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UscaledPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SscaledPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UintPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SintPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SrgbPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10UnormPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10SnormPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10UscaledPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10SscaledPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10UintPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10SintPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10UnormPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10SnormPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10UscaledPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10SscaledPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10UintPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10SintPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16Snorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16Uscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16Sscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Snorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Uscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Sscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Snorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Uscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Sscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Snorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Uscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Sscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR32Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR32Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR32Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR32G32Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR32G32Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR32G32Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32A32Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32A32Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32A32Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR64Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR64Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR64Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR64G64Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR64G64Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR64G64Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64A64Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64A64Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64A64Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB10G11R11UfloatPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eE5B9G9R9UfloatPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eD16Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eX8D24UnormPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eD32Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eS8Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eD16UnormS8Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eD24UnormS8Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eD32SfloatS8Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbUnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbSrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbaUnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbaSrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc2UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc2SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc3UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc3SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc4UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc4SnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc5UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc5SnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc6HUfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc6HSfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc7UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eBc7SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A1UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A1SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A8UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A8SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eEacR11UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eEacR11SnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eEacR11G11UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eEacR11G11SnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4UnormBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4SrgbBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4UnormBlock: return 20; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4SrgbBlock: return 20; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5UnormBlock: return 25; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5SrgbBlock: return 25; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5UnormBlock: return 30; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5SrgbBlock: return 30; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6UnormBlock: return 36; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6SrgbBlock: return 36; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5UnormBlock: return 40; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5SrgbBlock: return 40; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6UnormBlock: return 48; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6SrgbBlock: return 48; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8UnormBlock: return 64; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8SrgbBlock: return 64; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5UnormBlock: return 50; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5SrgbBlock: return 50; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6UnormBlock: return 60; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6SrgbBlock: return 60; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8UnormBlock: return 80; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8SrgbBlock: return 80; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10UnormBlock: return 100; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10SrgbBlock: return 100; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10UnormBlock: return 120; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10SrgbBlock: return 120; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12UnormBlock: return 144; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12SrgbBlock: return 144; + case VULKAN_HPP_NAMESPACE::Format::eG8B8G8R8422Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8G8422Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane420Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane420Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane422Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane422Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane444Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR10X6G10X6Unorm2Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR10X6G10X6B10X6A10X6Unorm4Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR12X4G12X4Unorm2Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR12X4G12X4B12X4A12X4Unorm4Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG16B16G16R16422Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eB16G16R16G16422Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane420Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane420Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane422Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane422Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane444Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane444Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane444Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA4R4G4B4UnormPack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eA4B4G4R4UnormPack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4SfloatBlock: return 16; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4SfloatBlock: return 20; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5SfloatBlock: return 25; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5SfloatBlock: return 30; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6SfloatBlock: return 36; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5SfloatBlock: return 40; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6SfloatBlock: return 48; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8SfloatBlock: return 64; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5SfloatBlock: return 50; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6SfloatBlock: return 60; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8SfloatBlock: return 80; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10SfloatBlock: return 100; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10SfloatBlock: return 120; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12SfloatBlock: return 144; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc12BppUnormBlockIMG: return 1; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc14BppUnormBlockIMG: return 1; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc22BppUnormBlockIMG: return 1; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc24BppUnormBlockIMG: return 1; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc12BppSrgbBlockIMG: return 1; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc14BppSrgbBlockIMG: return 1; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc22BppSrgbBlockIMG: return 1; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc24BppSrgbBlockIMG: return 1; + + default: VULKAN_HPP_ASSERT( false ); return 0; + } + } + + // The three-dimensional extent of a texel block. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 std::array blockExtent( VULKAN_HPP_NAMESPACE::Format format ) + { + switch ( format ) + { + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbUnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbSrgbBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbaUnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbaSrgbBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eBc2UnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eBc2SrgbBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eBc3UnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eBc3SrgbBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eBc4UnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eBc4SnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eBc5UnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eBc5SnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eBc6HUfloatBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eBc6HSfloatBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eBc7UnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eBc7SrgbBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8UnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8SrgbBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A1UnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A1SrgbBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A8UnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A8SrgbBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eEacR11UnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eEacR11SnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eEacR11G11UnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eEacR11G11SnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4UnormBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4SrgbBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4UnormBlock: return { 5, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4SrgbBlock: return { 5, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5UnormBlock: return { 5, 5, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5SrgbBlock: return { 5, 5, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5UnormBlock: return { 6, 5, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5SrgbBlock: return { 6, 5, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6UnormBlock: return { 6, 6, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6SrgbBlock: return { 6, 6, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5UnormBlock: return { 8, 5, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5SrgbBlock: return { 8, 5, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6UnormBlock: return { 8, 6, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6SrgbBlock: return { 8, 6, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8UnormBlock: return { 8, 8, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8SrgbBlock: return { 8, 8, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5UnormBlock: return { 10, 5, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5SrgbBlock: return { 10, 5, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6UnormBlock: return { 10, 6, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6SrgbBlock: return { 10, 6, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8UnormBlock: return { 10, 8, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8SrgbBlock: return { 10, 8, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10UnormBlock: return { 10, 10, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10SrgbBlock: return { 10, 10, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10UnormBlock: return { 12, 10, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10SrgbBlock: return { 12, 10, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12UnormBlock: return { 12, 12, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12SrgbBlock: return { 12, 12, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eG8B8G8R8422Unorm: return { 2, 1, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8G8422Unorm: return { 2, 1, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: return { 2, 1, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: return { 2, 1, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: return { 2, 1, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: return { 2, 1, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eG16B16G16R16422Unorm: return { 2, 1, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eB16G16R16G16422Unorm: return { 2, 1, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4SfloatBlock: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4SfloatBlock: return { 5, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5SfloatBlock: return { 5, 5, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5SfloatBlock: return { 6, 5, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6SfloatBlock: return { 6, 6, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5SfloatBlock: return { 8, 5, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6SfloatBlock: return { 8, 6, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8SfloatBlock: return { 8, 8, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5SfloatBlock: return { 10, 5, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6SfloatBlock: return { 10, 6, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8SfloatBlock: return { 10, 8, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10SfloatBlock: return { 10, 10, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10SfloatBlock: return { 12, 10, 1 }; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12SfloatBlock: return { 12, 12, 1 }; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc12BppUnormBlockIMG: return { 8, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc14BppUnormBlockIMG: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc22BppUnormBlockIMG: return { 8, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc24BppUnormBlockIMG: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc12BppSrgbBlockIMG: return { 8, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc14BppSrgbBlockIMG: return { 4, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc22BppSrgbBlockIMG: return { 8, 4, 1 }; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc24BppSrgbBlockIMG: return { 4, 4, 1 }; + + default: return { 1, 1, 1 }; + } + } + + // A textual description of the compression scheme, or an empty string if it is not compressed + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 char const * compressionScheme( VULKAN_HPP_NAMESPACE::Format format ) + { + switch ( format ) + { + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbUnormBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbSrgbBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbaUnormBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbaSrgbBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eBc2UnormBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eBc2SrgbBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eBc3UnormBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eBc3SrgbBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eBc4UnormBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eBc4SnormBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eBc5UnormBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eBc5SnormBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eBc6HUfloatBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eBc6HSfloatBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eBc7UnormBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eBc7SrgbBlock: return "BC"; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8UnormBlock: return "ETC2"; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8SrgbBlock: return "ETC2"; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A1UnormBlock: return "ETC2"; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A1SrgbBlock: return "ETC2"; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A8UnormBlock: return "ETC2"; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A8SrgbBlock: return "ETC2"; + case VULKAN_HPP_NAMESPACE::Format::eEacR11UnormBlock: return "EAC"; + case VULKAN_HPP_NAMESPACE::Format::eEacR11SnormBlock: return "EAC"; + case VULKAN_HPP_NAMESPACE::Format::eEacR11G11UnormBlock: return "EAC"; + case VULKAN_HPP_NAMESPACE::Format::eEacR11G11SnormBlock: return "EAC"; + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4UnormBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4SrgbBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4UnormBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4SrgbBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5UnormBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5SrgbBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5UnormBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5SrgbBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6UnormBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6SrgbBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5UnormBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5SrgbBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6UnormBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6SrgbBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8UnormBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8SrgbBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5UnormBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5SrgbBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6UnormBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6SrgbBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8UnormBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8SrgbBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10UnormBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10SrgbBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10UnormBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10SrgbBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12UnormBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12SrgbBlock: return "ASTC LDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4SfloatBlock: return "ASTC HDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4SfloatBlock: return "ASTC HDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5SfloatBlock: return "ASTC HDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5SfloatBlock: return "ASTC HDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6SfloatBlock: return "ASTC HDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5SfloatBlock: return "ASTC HDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6SfloatBlock: return "ASTC HDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8SfloatBlock: return "ASTC HDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5SfloatBlock: return "ASTC HDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6SfloatBlock: return "ASTC HDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8SfloatBlock: return "ASTC HDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10SfloatBlock: return "ASTC HDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10SfloatBlock: return "ASTC HDR"; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12SfloatBlock: return "ASTC HDR"; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc12BppUnormBlockIMG: return "PVRTC"; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc14BppUnormBlockIMG: return "PVRTC"; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc22BppUnormBlockIMG: return "PVRTC"; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc24BppUnormBlockIMG: return "PVRTC"; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc12BppSrgbBlockIMG: return "PVRTC"; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc14BppSrgbBlockIMG: return "PVRTC"; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc22BppSrgbBlockIMG: return "PVRTC"; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc24BppSrgbBlockIMG: return "PVRTC"; + + default: return ""; + } + } + + // True, if this format is a compressed one. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 bool isCompressed( VULKAN_HPP_NAMESPACE::Format format ) + { + return ( *VULKAN_HPP_NAMESPACE::compressionScheme( format ) != 0 ); + } + + // The number of bits into which the format is packed. A single image element in this format + // can be stored in the same space as a scalar type of this bit width. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t packed( VULKAN_HPP_NAMESPACE::Format format ) + { + switch ( format ) + { + case VULKAN_HPP_NAMESPACE::Format::eR4G4UnormPack8: return 8; + case VULKAN_HPP_NAMESPACE::Format::eR4G4B4A4UnormPack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eB4G4R4A4UnormPack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eR5G6B5UnormPack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eB5G6R5UnormPack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eR5G5B5A1UnormPack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eB5G5R5A1UnormPack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eA1R5G5B5UnormPack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UnormPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SnormPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UscaledPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SscaledPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UintPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SintPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SrgbPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10UnormPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10SnormPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10UscaledPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10SscaledPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10UintPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10SintPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10UnormPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10SnormPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10UscaledPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10SscaledPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10UintPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10SintPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eB10G11R11UfloatPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eE5B9G9R9UfloatPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eX8D24UnormPack32: return 32; + case VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eR10X6G10X6Unorm2Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eR10X6G10X6B10X6A10X6Unorm4Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eR12X4G12X4Unorm2Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eR12X4G12X4B12X4A12X4Unorm4Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eA4R4G4B4UnormPack16: return 16; + case VULKAN_HPP_NAMESPACE::Format::eA4B4G4R4UnormPack16: return 16; + + default: return 0; + } + } + + // The number of components of this format. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t componentCount( VULKAN_HPP_NAMESPACE::Format format ) + { + switch ( format ) + { + case VULKAN_HPP_NAMESPACE::Format::eR4G4UnormPack8: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR4G4B4A4UnormPack16: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB4G4R4A4UnormPack16: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR5G6B5UnormPack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eB5G6R5UnormPack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR5G5B5A1UnormPack16: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB5G5R5A1UnormPack16: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA1R5G5B5UnormPack16: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR8Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Snorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Uscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Sscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8Srgb: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Unorm: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Snorm: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Uscaled: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Sscaled: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Uint: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Sint: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR8G8Srgb: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Snorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Uscaled: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Sscaled: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Uint: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Sint: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Srgb: return 3; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Snorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Uscaled: return 3; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Sscaled: return 3; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Uint: return 3; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Sint: return 3; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Srgb: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Unorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Snorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Uscaled: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Sscaled: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Uint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Sint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Srgb: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Unorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Snorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Uscaled: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Sscaled: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Uint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Sint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Srgb: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UnormPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SnormPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UscaledPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SscaledPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UintPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SintPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SrgbPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10UnormPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10SnormPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10UscaledPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10SscaledPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10UintPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10SintPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10UnormPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10SnormPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10UscaledPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10SscaledPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10UintPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10SintPack32: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR16Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16Snorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16Uscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16Sscaled: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Unorm: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Snorm: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Uscaled: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Sscaled: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Uint: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Sint: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR16G16Sfloat: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Snorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Uscaled: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Sscaled: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Uint: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Sint: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Sfloat: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Unorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Snorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Uscaled: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Sscaled: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Uint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Sint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Sfloat: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR32Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR32Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR32Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR32G32Uint: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR32G32Sint: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR32G32Sfloat: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32Uint: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32Sint: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32Sfloat: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32A32Uint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32A32Sint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32A32Sfloat: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR64Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR64Sint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR64Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR64G64Uint: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR64G64Sint: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR64G64Sfloat: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64Uint: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64Sint: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64Sfloat: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64A64Uint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64A64Sint: return 4; + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64A64Sfloat: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB10G11R11UfloatPack32: return 3; + case VULKAN_HPP_NAMESPACE::Format::eE5B9G9R9UfloatPack32: return 3; + case VULKAN_HPP_NAMESPACE::Format::eD16Unorm: return 1; + case VULKAN_HPP_NAMESPACE::Format::eX8D24UnormPack32: return 1; + case VULKAN_HPP_NAMESPACE::Format::eD32Sfloat: return 1; + case VULKAN_HPP_NAMESPACE::Format::eS8Uint: return 1; + case VULKAN_HPP_NAMESPACE::Format::eD16UnormS8Uint: return 2; + case VULKAN_HPP_NAMESPACE::Format::eD24UnormS8Uint: return 2; + case VULKAN_HPP_NAMESPACE::Format::eD32SfloatS8Uint: return 2; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbUnormBlock: return 3; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbSrgbBlock: return 3; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbaUnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbaSrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eBc2UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eBc2SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eBc3UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eBc3SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eBc4UnormBlock: return 1; + case VULKAN_HPP_NAMESPACE::Format::eBc4SnormBlock: return 1; + case VULKAN_HPP_NAMESPACE::Format::eBc5UnormBlock: return 2; + case VULKAN_HPP_NAMESPACE::Format::eBc5SnormBlock: return 2; + case VULKAN_HPP_NAMESPACE::Format::eBc6HUfloatBlock: return 3; + case VULKAN_HPP_NAMESPACE::Format::eBc6HSfloatBlock: return 3; + case VULKAN_HPP_NAMESPACE::Format::eBc7UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eBc7SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8UnormBlock: return 3; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8SrgbBlock: return 3; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A1UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A1SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A8UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A8SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eEacR11UnormBlock: return 1; + case VULKAN_HPP_NAMESPACE::Format::eEacR11SnormBlock: return 1; + case VULKAN_HPP_NAMESPACE::Format::eEacR11G11UnormBlock: return 2; + case VULKAN_HPP_NAMESPACE::Format::eEacR11G11SnormBlock: return 2; + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12UnormBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12SrgbBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eG8B8G8R8422Unorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8G8422Unorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane420Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane420Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane422Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane422Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane444Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR10X6G10X6Unorm2Pack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR10X6G10X6B10X6A10X6Unorm4Pack16: return 4; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: return 4; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16: return 1; + case VULKAN_HPP_NAMESPACE::Format::eR12X4G12X4Unorm2Pack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eR12X4G12X4B12X4A12X4Unorm4Pack16: return 4; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: return 4; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG16B16G16R16422Unorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eB16G16R16G16422Unorm: return 4; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane420Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane420Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane422Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane422Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane444Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane444Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane444Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eA4R4G4B4UnormPack16: return 4; + case VULKAN_HPP_NAMESPACE::Format::eA4B4G4R4UnormPack16: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4SfloatBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4SfloatBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5SfloatBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5SfloatBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6SfloatBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5SfloatBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6SfloatBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8SfloatBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5SfloatBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6SfloatBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8SfloatBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10SfloatBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10SfloatBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12SfloatBlock: return 4; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc12BppUnormBlockIMG: return 4; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc14BppUnormBlockIMG: return 4; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc22BppUnormBlockIMG: return 4; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc24BppUnormBlockIMG: return 4; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc12BppSrgbBlockIMG: return 4; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc14BppSrgbBlockIMG: return 4; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc22BppSrgbBlockIMG: return 4; + case VULKAN_HPP_NAMESPACE::Format::ePvrtc24BppSrgbBlockIMG: return 4; + + default: return 0; + } + } + + // True, if the components of this format are compressed, otherwise false. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 bool componentsAreCompressed( VULKAN_HPP_NAMESPACE::Format format ) + { + switch ( format ) + { + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbUnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbSrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbaUnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eBc1RgbaSrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eBc2UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eBc2SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eBc3UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eBc3SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eBc4UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eBc4SnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eBc5UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eBc5SnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eBc6HUfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::eBc6HSfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::eBc7UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eBc7SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A1UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A1SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A8UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A8SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12UnormBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12SrgbBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc4x4SfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc5x4SfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc5x5SfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc6x5SfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc6x6SfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc8x5SfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc8x6SfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc8x8SfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc10x5SfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc10x6SfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc10x8SfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc10x10SfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc12x10SfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::eAstc12x12SfloatBlock: + case VULKAN_HPP_NAMESPACE::Format::ePvrtc12BppUnormBlockIMG: + case VULKAN_HPP_NAMESPACE::Format::ePvrtc14BppUnormBlockIMG: + case VULKAN_HPP_NAMESPACE::Format::ePvrtc22BppUnormBlockIMG: + case VULKAN_HPP_NAMESPACE::Format::ePvrtc24BppUnormBlockIMG: + case VULKAN_HPP_NAMESPACE::Format::ePvrtc12BppSrgbBlockIMG: + case VULKAN_HPP_NAMESPACE::Format::ePvrtc14BppSrgbBlockIMG: + case VULKAN_HPP_NAMESPACE::Format::ePvrtc22BppSrgbBlockIMG: + case VULKAN_HPP_NAMESPACE::Format::ePvrtc24BppSrgbBlockIMG: return true; + default: return false; + } + } + + // The number of bits in this component, if not compressed, otherwise 0. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t componentBits( VULKAN_HPP_NAMESPACE::Format format, + uint8_t component ) + { + switch ( format ) + { + case VULKAN_HPP_NAMESPACE::Format::eR4G4UnormPack8: + switch ( component ) + { + case 0: return 4; + case 1: return 4; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR4G4B4A4UnormPack16: + switch ( component ) + { + case 0: return 4; + case 1: return 4; + case 2: return 4; + case 3: return 4; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB4G4R4A4UnormPack16: + switch ( component ) + { + case 0: return 4; + case 1: return 4; + case 2: return 4; + case 3: return 4; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR5G6B5UnormPack16: + switch ( component ) + { + case 0: return 5; + case 1: return 6; + case 2: return 5; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB5G6R5UnormPack16: + switch ( component ) + { + case 0: return 5; + case 1: return 6; + case 2: return 5; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR5G5B5A1UnormPack16: + switch ( component ) + { + case 0: return 5; + case 1: return 5; + case 2: return 5; + case 3: return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB5G5R5A1UnormPack16: + switch ( component ) + { + case 0: return 5; + case 1: return 5; + case 2: return 5; + case 3: return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA1R5G5B5UnormPack16: + switch ( component ) + { + case 0: return 1; + case 1: return 5; + case 2: return 5; + case 3: return 5; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8Unorm: + switch ( component ) + { + case 0: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8Snorm: + switch ( component ) + { + case 0: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8Uscaled: + switch ( component ) + { + case 0: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8Sscaled: + switch ( component ) + { + case 0: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8Uint: + switch ( component ) + { + case 0: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8Sint: + switch ( component ) + { + case 0: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8Srgb: + switch ( component ) + { + case 0: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8Unorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8Snorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8Uscaled: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8Sscaled: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8Uint: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8Sint: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8Srgb: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Unorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Snorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Uscaled: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Sscaled: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Uint: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Sint: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8Srgb: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Unorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Snorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Uscaled: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Sscaled: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Uint: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Sint: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8Srgb: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Unorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Snorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Uscaled: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Sscaled: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Uint: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Sint: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR8G8B8A8Srgb: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Unorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Snorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Uscaled: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Sscaled: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Uint: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Sint: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Srgb: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UnormPack32: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SnormPack32: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UscaledPack32: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SscaledPack32: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UintPack32: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SintPack32: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SrgbPack32: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10UnormPack32: + switch ( component ) + { + case 0: return 2; + case 1: return 10; + case 2: return 10; + case 3: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10SnormPack32: + switch ( component ) + { + case 0: return 2; + case 1: return 10; + case 2: return 10; + case 3: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10UscaledPack32: + switch ( component ) + { + case 0: return 2; + case 1: return 10; + case 2: return 10; + case 3: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10SscaledPack32: + switch ( component ) + { + case 0: return 2; + case 1: return 10; + case 2: return 10; + case 3: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10UintPack32: + switch ( component ) + { + case 0: return 2; + case 1: return 10; + case 2: return 10; + case 3: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA2R10G10B10SintPack32: + switch ( component ) + { + case 0: return 2; + case 1: return 10; + case 2: return 10; + case 3: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10UnormPack32: + switch ( component ) + { + case 0: return 2; + case 1: return 10; + case 2: return 10; + case 3: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10SnormPack32: + switch ( component ) + { + case 0: return 2; + case 1: return 10; + case 2: return 10; + case 3: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10UscaledPack32: + switch ( component ) + { + case 0: return 2; + case 1: return 10; + case 2: return 10; + case 3: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10SscaledPack32: + switch ( component ) + { + case 0: return 2; + case 1: return 10; + case 2: return 10; + case 3: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10UintPack32: + switch ( component ) + { + case 0: return 2; + case 1: return 10; + case 2: return 10; + case 3: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA2B10G10R10SintPack32: + switch ( component ) + { + case 0: return 2; + case 1: return 10; + case 2: return 10; + case 3: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16Unorm: + switch ( component ) + { + case 0: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16Snorm: + switch ( component ) + { + case 0: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16Uscaled: + switch ( component ) + { + case 0: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16Sscaled: + switch ( component ) + { + case 0: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16Uint: + switch ( component ) + { + case 0: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16Sint: + switch ( component ) + { + case 0: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16Sfloat: + switch ( component ) + { + case 0: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16Unorm: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16Snorm: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16Uscaled: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16Sscaled: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16Uint: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16Sint: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16Sfloat: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Unorm: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Snorm: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Uscaled: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Sscaled: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Uint: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Sint: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16Sfloat: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Unorm: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + case 3: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Snorm: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + case 3: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Uscaled: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + case 3: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Sscaled: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + case 3: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Uint: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + case 3: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Sint: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + case 3: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR16G16B16A16Sfloat: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + case 3: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR32Uint: + switch ( component ) + { + case 0: return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR32Sint: + switch ( component ) + { + case 0: return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR32Sfloat: + switch ( component ) + { + case 0: return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR32G32Uint: + switch ( component ) + { + case 0: return 32; + case 1: return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR32G32Sint: + switch ( component ) + { + case 0: return 32; + case 1: return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR32G32Sfloat: + switch ( component ) + { + case 0: return 32; + case 1: return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32Uint: + switch ( component ) + { + case 0: return 32; + case 1: return 32; + case 2: return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32Sint: + switch ( component ) + { + case 0: return 32; + case 1: return 32; + case 2: return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32Sfloat: + switch ( component ) + { + case 0: return 32; + case 1: return 32; + case 2: return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32A32Uint: + switch ( component ) + { + case 0: return 32; + case 1: return 32; + case 2: return 32; + case 3: return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32A32Sint: + switch ( component ) + { + case 0: return 32; + case 1: return 32; + case 2: return 32; + case 3: return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR32G32B32A32Sfloat: + switch ( component ) + { + case 0: return 32; + case 1: return 32; + case 2: return 32; + case 3: return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR64Uint: + switch ( component ) + { + case 0: return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR64Sint: + switch ( component ) + { + case 0: return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR64Sfloat: + switch ( component ) + { + case 0: return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR64G64Uint: + switch ( component ) + { + case 0: return 64; + case 1: return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR64G64Sint: + switch ( component ) + { + case 0: return 64; + case 1: return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR64G64Sfloat: + switch ( component ) + { + case 0: return 64; + case 1: return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64Uint: + switch ( component ) + { + case 0: return 64; + case 1: return 64; + case 2: return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64Sint: + switch ( component ) + { + case 0: return 64; + case 1: return 64; + case 2: return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64Sfloat: + switch ( component ) + { + case 0: return 64; + case 1: return 64; + case 2: return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64A64Uint: + switch ( component ) + { + case 0: return 64; + case 1: return 64; + case 2: return 64; + case 3: return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64A64Sint: + switch ( component ) + { + case 0: return 64; + case 1: return 64; + case 2: return 64; + case 3: return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR64G64B64A64Sfloat: + switch ( component ) + { + case 0: return 64; + case 1: return 64; + case 2: return 64; + case 3: return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB10G11R11UfloatPack32: + switch ( component ) + { + case 0: return 10; + case 1: return 11; + case 2: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eE5B9G9R9UfloatPack32: + switch ( component ) + { + case 0: return 9; + case 1: return 9; + case 2: return 9; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eD16Unorm: + switch ( component ) + { + case 0: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eX8D24UnormPack32: + switch ( component ) + { + case 0: return 24; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eD32Sfloat: + switch ( component ) + { + case 0: return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eS8Uint: + switch ( component ) + { + case 0: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eD16UnormS8Uint: + switch ( component ) + { + case 0: return 16; + case 1: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eD24UnormS8Uint: + switch ( component ) + { + case 0: return 24; + case 1: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eD32SfloatS8Uint: + switch ( component ) + { + case 0: return 32; + case 1: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eEacR11UnormBlock: + switch ( component ) + { + case 0: return 11; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eEacR11SnormBlock: + switch ( component ) + { + case 0: return 11; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eEacR11G11UnormBlock: + switch ( component ) + { + case 0: return 11; + case 1: return 11; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eEacR11G11SnormBlock: + switch ( component ) + { + case 0: return 11; + case 1: return 11; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8G8R8422Unorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB8G8R8G8422Unorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + case 3: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane420Unorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane420Unorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane422Unorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane422Unorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane444Unorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16: + switch ( component ) + { + case 0: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR10X6G10X6Unorm2Pack16: + switch ( component ) + { + case 0: return 10; + case 1: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR10X6G10X6B10X6A10X6Unorm4Pack16: + switch ( component ) + { + case 0: return 10; + case 1: return 10; + case 2: return 10; + case 3: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: + switch ( component ) + { + case 0: return 10; + case 1: return 10; + case 2: return 10; + case 3: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: + switch ( component ) + { + case 0: return 10; + case 1: return 10; + case 2: return 10; + case 3: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: + switch ( component ) + { + case 0: return 10; + case 1: return 10; + case 2: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: + switch ( component ) + { + case 0: return 10; + case 1: return 10; + case 2: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: + switch ( component ) + { + case 0: return 10; + case 1: return 10; + case 2: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: + switch ( component ) + { + case 0: return 10; + case 1: return 10; + case 2: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: + switch ( component ) + { + case 0: return 10; + case 1: return 10; + case 2: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16: + switch ( component ) + { + case 0: return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR12X4G12X4Unorm2Pack16: + switch ( component ) + { + case 0: return 12; + case 1: return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eR12X4G12X4B12X4A12X4Unorm4Pack16: + switch ( component ) + { + case 0: return 12; + case 1: return 12; + case 2: return 12; + case 3: return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: + switch ( component ) + { + case 0: return 12; + case 1: return 12; + case 2: return 12; + case 3: return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: + switch ( component ) + { + case 0: return 12; + case 1: return 12; + case 2: return 12; + case 3: return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: + switch ( component ) + { + case 0: return 12; + case 1: return 12; + case 2: return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: + switch ( component ) + { + case 0: return 12; + case 1: return 12; + case 2: return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: + switch ( component ) + { + case 0: return 12; + case 1: return 12; + case 2: return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: + switch ( component ) + { + case 0: return 12; + case 1: return 12; + case 2: return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: + switch ( component ) + { + case 0: return 12; + case 1: return 12; + case 2: return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16G16R16422Unorm: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + case 3: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eB16G16R16G16422Unorm: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + case 3: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane420Unorm: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane420Unorm: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane422Unorm: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane422Unorm: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane444Unorm: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane444Unorm: + switch ( component ) + { + case 0: return 8; + case 1: return 8; + case 2: return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: + switch ( component ) + { + case 0: return 10; + case 1: return 10; + case 2: return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: + switch ( component ) + { + case 0: return 12; + case 1: return 12; + case 2: return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane444Unorm: + switch ( component ) + { + case 0: return 16; + case 1: return 16; + case 2: return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA4R4G4B4UnormPack16: + switch ( component ) + { + case 0: return 4; + case 1: return 4; + case 2: return 4; + case 3: return 4; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eA4B4G4R4UnormPack16: + switch ( component ) + { + case 0: return 4; + case 1: return 4; + case 2: return 4; + case 3: return 4; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + + default: return 0; + } + } + + // The plane this component lies in. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t componentPlaneIndex( VULKAN_HPP_NAMESPACE::Format format, + uint8_t component ) + { + switch ( format ) + { + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane420Unorm: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane420Unorm: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane422Unorm: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane422Unorm: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane444Unorm: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane420Unorm: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane420Unorm: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane422Unorm: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane422Unorm: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane444Unorm: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane444Unorm: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane444Unorm: + switch ( component ) + { + case 0: return 0; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + + default: return 0; + } + } + + // The number of image planes of this format. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t planeCount( VULKAN_HPP_NAMESPACE::Format format ) + { + switch ( format ) + { + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane420Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane420Unorm: return 2; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane422Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane422Unorm: return 2; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane444Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane420Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane420Unorm: return 2; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane422Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane422Unorm: return 2; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane444Unorm: return 3; + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane444Unorm: return 2; + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: return 2; + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane444Unorm: return 2; + + default: return 1; + } + } + + // The single-plane format that this plane is compatible with. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 VULKAN_HPP_NAMESPACE::Format + planeCompatibleFormat( VULKAN_HPP_NAMESPACE::Format format, uint8_t plane ) + { + switch ( format ) + { + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane420Unorm: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR8Unorm; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR8Unorm; + case 2: return VULKAN_HPP_NAMESPACE::Format::eR8Unorm; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane420Unorm: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR8Unorm; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR8G8Unorm; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane422Unorm: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR8Unorm; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR8Unorm; + case 2: return VULKAN_HPP_NAMESPACE::Format::eR8Unorm; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane422Unorm: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR8Unorm; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR8G8Unorm; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane444Unorm: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR8Unorm; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR8Unorm; + case 2: return VULKAN_HPP_NAMESPACE::Format::eR8Unorm; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16; + case 2: return VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR10X6G10X6Unorm2Pack16; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16; + case 2: return VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR10X6G10X6Unorm2Pack16; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16; + case 2: return VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16; + case 2: return VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR12X4G12X4Unorm2Pack16; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16; + case 2: return VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR12X4G12X4Unorm2Pack16; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16; + case 2: return VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane420Unorm: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR16Unorm; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR16Unorm; + case 2: return VULKAN_HPP_NAMESPACE::Format::eR16Unorm; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane420Unorm: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR16Unorm; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR16G16Unorm; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane422Unorm: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR16Unorm; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR16Unorm; + case 2: return VULKAN_HPP_NAMESPACE::Format::eR16Unorm; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane422Unorm: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR16Unorm; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR16G16Unorm; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane444Unorm: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR16Unorm; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR16Unorm; + case 2: return VULKAN_HPP_NAMESPACE::Format::eR16Unorm; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane444Unorm: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR8Unorm; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR8G8Unorm; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR10X6UnormPack16; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR10X6G10X6Unorm2Pack16; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR12X4UnormPack16; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR12X4G12X4Unorm2Pack16; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane444Unorm: + switch ( plane ) + { + case 0: return VULKAN_HPP_NAMESPACE::Format::eR16Unorm; + case 1: return VULKAN_HPP_NAMESPACE::Format::eR16G16Unorm; + default: VULKAN_HPP_ASSERT( false ); return VULKAN_HPP_NAMESPACE::Format::eUndefined; + } + + default: VULKAN_HPP_ASSERT( plane == 0 ); return format; + } + } + + // The relative height of this plane. A value of k means that this plane is 1/k the height of the overall format. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t planeHeightDivisor( VULKAN_HPP_NAMESPACE::Format format, + uint8_t plane ) + { + switch ( format ) + { + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane420Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane420Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane422Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane422Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane444Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane420Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane420Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane422Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane422Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane444Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane444Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane444Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + + default: VULKAN_HPP_ASSERT( plane == 0 ); return 1; + } + } + + // The relative width of this plane. A value of k means that this plane is 1/k the width of the overall format. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t planeWidthDivisor( VULKAN_HPP_NAMESPACE::Format format, + uint8_t plane ) + { + switch ( format ) + { + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane420Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane420Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane422Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane422Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R83Plane444Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane420Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane420Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane422Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + case 2: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane422Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R163Plane444Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + case 2: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG8B8R82Plane444Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case VULKAN_HPP_NAMESPACE::Format::eG16B16R162Plane444Unorm: + switch ( plane ) + { + case 0: return 1; + case 1: return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + + default: VULKAN_HPP_ASSERT( plane == 0 ); return 1; + } + } + + template + struct IndexTypeValue + {}; + + template <> + struct IndexTypeValue + { + static VULKAN_HPP_CONST_OR_CONSTEXPR IndexType value = IndexType::eUint16; + }; + + template <> + struct CppType + { + using Type = uint16_t; + }; + + template <> + struct IndexTypeValue + { + static VULKAN_HPP_CONST_OR_CONSTEXPR IndexType value = IndexType::eUint32; + }; + + template <> + struct CppType + { + using Type = uint32_t; + }; + + template <> + struct IndexTypeValue + { + static VULKAN_HPP_CONST_OR_CONSTEXPR IndexType value = IndexType::eUint8EXT; + }; + + template <> + struct CppType + { + using Type = uint8_t; + }; + + //================ + //=== BITMASKs === + //================ + + //=== VK_VERSION_1_0 === + + using FormatFeatureFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = + VkFlags( FormatFeatureFlagBits::eSampledImage ) | VkFlags( FormatFeatureFlagBits::eStorageImage ) | + VkFlags( FormatFeatureFlagBits::eStorageImageAtomic ) | VkFlags( FormatFeatureFlagBits::eUniformTexelBuffer ) | + VkFlags( FormatFeatureFlagBits::eStorageTexelBuffer ) | + VkFlags( FormatFeatureFlagBits::eStorageTexelBufferAtomic ) | VkFlags( FormatFeatureFlagBits::eVertexBuffer ) | + VkFlags( FormatFeatureFlagBits::eColorAttachment ) | VkFlags( FormatFeatureFlagBits::eColorAttachmentBlend ) | + VkFlags( FormatFeatureFlagBits::eDepthStencilAttachment ) | VkFlags( FormatFeatureFlagBits::eBlitSrc ) | + VkFlags( FormatFeatureFlagBits::eBlitDst ) | VkFlags( FormatFeatureFlagBits::eSampledImageFilterLinear ) | + VkFlags( FormatFeatureFlagBits::eTransferSrc ) | VkFlags( FormatFeatureFlagBits::eTransferDst ) | + VkFlags( FormatFeatureFlagBits::eMidpointChromaSamples ) | + VkFlags( FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilter ) | + VkFlags( FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilter ) | + VkFlags( FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicit ) | + VkFlags( FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable ) | + VkFlags( FormatFeatureFlagBits::eDisjoint ) | VkFlags( FormatFeatureFlagBits::eCositedChromaSamples ) | + VkFlags( FormatFeatureFlagBits::eSampledImageFilterMinmax ) | + VkFlags( FormatFeatureFlagBits::eSampledImageFilterCubicIMG ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | VkFlags( FormatFeatureFlagBits::eVideoDecodeOutputKHR ) | VkFlags( FormatFeatureFlagBits::eVideoDecodeDpbKHR ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + | VkFlags( FormatFeatureFlagBits::eAccelerationStructureVertexBufferKHR ) | + VkFlags( FormatFeatureFlagBits::eFragmentDensityMapEXT ) | + VkFlags( FormatFeatureFlagBits::eFragmentShadingRateAttachmentKHR ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | VkFlags( FormatFeatureFlagBits::eVideoEncodeInputKHR ) | VkFlags( FormatFeatureFlagBits::eVideoEncodeDpbKHR ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, + FormatFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return FormatFeatureFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FormatFeatureFlags operator&( FormatFeatureFlagBits bit0, + FormatFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return FormatFeatureFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FormatFeatureFlags operator^( FormatFeatureFlagBits bit0, + FormatFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return FormatFeatureFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FormatFeatureFlags operator~( FormatFeatureFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( FormatFeatureFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( FormatFeatureFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & FormatFeatureFlagBits::eSampledImage ) + result += "SampledImage | "; + if ( value & FormatFeatureFlagBits::eStorageImage ) + result += "StorageImage | "; + if ( value & FormatFeatureFlagBits::eStorageImageAtomic ) + result += "StorageImageAtomic | "; + if ( value & FormatFeatureFlagBits::eUniformTexelBuffer ) + result += "UniformTexelBuffer | "; + if ( value & FormatFeatureFlagBits::eStorageTexelBuffer ) + result += "StorageTexelBuffer | "; + if ( value & FormatFeatureFlagBits::eStorageTexelBufferAtomic ) + result += "StorageTexelBufferAtomic | "; + if ( value & FormatFeatureFlagBits::eVertexBuffer ) + result += "VertexBuffer | "; + if ( value & FormatFeatureFlagBits::eColorAttachment ) + result += "ColorAttachment | "; + if ( value & FormatFeatureFlagBits::eColorAttachmentBlend ) + result += "ColorAttachmentBlend | "; + if ( value & FormatFeatureFlagBits::eDepthStencilAttachment ) + result += "DepthStencilAttachment | "; + if ( value & FormatFeatureFlagBits::eBlitSrc ) + result += "BlitSrc | "; + if ( value & FormatFeatureFlagBits::eBlitDst ) + result += "BlitDst | "; + if ( value & FormatFeatureFlagBits::eSampledImageFilterLinear ) + result += "SampledImageFilterLinear | "; + if ( value & FormatFeatureFlagBits::eTransferSrc ) + result += "TransferSrc | "; + if ( value & FormatFeatureFlagBits::eTransferDst ) + result += "TransferDst | "; + if ( value & FormatFeatureFlagBits::eMidpointChromaSamples ) + result += "MidpointChromaSamples | "; + if ( value & FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilter ) + result += "SampledImageYcbcrConversionLinearFilter | "; + if ( value & FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilter ) + result += "SampledImageYcbcrConversionSeparateReconstructionFilter | "; + if ( value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicit ) + result += "SampledImageYcbcrConversionChromaReconstructionExplicit | "; + if ( value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable ) + result += "SampledImageYcbcrConversionChromaReconstructionExplicitForceable | "; + if ( value & FormatFeatureFlagBits::eDisjoint ) + result += "Disjoint | "; + if ( value & FormatFeatureFlagBits::eCositedChromaSamples ) + result += "CositedChromaSamples | "; + if ( value & FormatFeatureFlagBits::eSampledImageFilterMinmax ) + result += "SampledImageFilterMinmax | "; + if ( value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG ) + result += "SampledImageFilterCubicIMG | "; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & FormatFeatureFlagBits::eVideoDecodeOutputKHR ) + result += "VideoDecodeOutputKHR | "; + if ( value & FormatFeatureFlagBits::eVideoDecodeDpbKHR ) + result += "VideoDecodeDpbKHR | "; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + if ( value & FormatFeatureFlagBits::eAccelerationStructureVertexBufferKHR ) + result += "AccelerationStructureVertexBufferKHR | "; + if ( value & FormatFeatureFlagBits::eFragmentDensityMapEXT ) + result += "FragmentDensityMapEXT | "; + if ( value & FormatFeatureFlagBits::eFragmentShadingRateAttachmentKHR ) + result += "FragmentShadingRateAttachmentKHR | "; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & FormatFeatureFlagBits::eVideoEncodeInputKHR ) + result += "VideoEncodeInputKHR | "; + if ( value & FormatFeatureFlagBits::eVideoEncodeDpbKHR ) + result += "VideoEncodeDpbKHR | "; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using ImageCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = + VkFlags( ImageCreateFlagBits::eSparseBinding ) | VkFlags( ImageCreateFlagBits::eSparseResidency ) | + VkFlags( ImageCreateFlagBits::eSparseAliased ) | VkFlags( ImageCreateFlagBits::eMutableFormat ) | + VkFlags( ImageCreateFlagBits::eCubeCompatible ) | VkFlags( ImageCreateFlagBits::eAlias ) | + VkFlags( ImageCreateFlagBits::eSplitInstanceBindRegions ) | VkFlags( ImageCreateFlagBits::e2DArrayCompatible ) | + VkFlags( ImageCreateFlagBits::eBlockTexelViewCompatible ) | VkFlags( ImageCreateFlagBits::eExtendedUsage ) | + VkFlags( ImageCreateFlagBits::eProtected ) | VkFlags( ImageCreateFlagBits::eDisjoint ) | + VkFlags( ImageCreateFlagBits::eCornerSampledNV ) | + VkFlags( ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT ) | + VkFlags( ImageCreateFlagBits::eSubsampledEXT ) | VkFlags( ImageCreateFlagBits::eFragmentDensityMapOffsetQCOM ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageCreateFlags operator|( ImageCreateFlagBits bit0, + ImageCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ImageCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageCreateFlags operator&( ImageCreateFlagBits bit0, + ImageCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ImageCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageCreateFlags operator^( ImageCreateFlagBits bit0, + ImageCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ImageCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageCreateFlags operator~( ImageCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( ImageCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( ImageCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ImageCreateFlagBits::eSparseBinding ) + result += "SparseBinding | "; + if ( value & ImageCreateFlagBits::eSparseResidency ) + result += "SparseResidency | "; + if ( value & ImageCreateFlagBits::eSparseAliased ) + result += "SparseAliased | "; + if ( value & ImageCreateFlagBits::eMutableFormat ) + result += "MutableFormat | "; + if ( value & ImageCreateFlagBits::eCubeCompatible ) + result += "CubeCompatible | "; + if ( value & ImageCreateFlagBits::eAlias ) + result += "Alias | "; + if ( value & ImageCreateFlagBits::eSplitInstanceBindRegions ) + result += "SplitInstanceBindRegions | "; + if ( value & ImageCreateFlagBits::e2DArrayCompatible ) + result += "2DArrayCompatible | "; + if ( value & ImageCreateFlagBits::eBlockTexelViewCompatible ) + result += "BlockTexelViewCompatible | "; + if ( value & ImageCreateFlagBits::eExtendedUsage ) + result += "ExtendedUsage | "; + if ( value & ImageCreateFlagBits::eProtected ) + result += "Protected | "; + if ( value & ImageCreateFlagBits::eDisjoint ) + result += "Disjoint | "; + if ( value & ImageCreateFlagBits::eCornerSampledNV ) + result += "CornerSampledNV | "; + if ( value & ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT ) + result += "SampleLocationsCompatibleDepthEXT | "; + if ( value & ImageCreateFlagBits::eSubsampledEXT ) + result += "SubsampledEXT | "; + if ( value & ImageCreateFlagBits::eFragmentDensityMapOffsetQCOM ) + result += "FragmentDensityMapOffsetQCOM | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using ImageUsageFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ImageUsageFlagBits::eTransferSrc ) | VkFlags( ImageUsageFlagBits::eTransferDst ) | + VkFlags( ImageUsageFlagBits::eSampled ) | VkFlags( ImageUsageFlagBits::eStorage ) | + VkFlags( ImageUsageFlagBits::eColorAttachment ) | + VkFlags( ImageUsageFlagBits::eDepthStencilAttachment ) | + VkFlags( ImageUsageFlagBits::eTransientAttachment ) | VkFlags( ImageUsageFlagBits::eInputAttachment ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | VkFlags( ImageUsageFlagBits::eVideoDecodeDstKHR ) | + VkFlags( ImageUsageFlagBits::eVideoDecodeSrcKHR ) | VkFlags( ImageUsageFlagBits::eVideoDecodeDpbKHR ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + | VkFlags( ImageUsageFlagBits::eFragmentDensityMapEXT ) | + VkFlags( ImageUsageFlagBits::eFragmentShadingRateAttachmentKHR ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | VkFlags( ImageUsageFlagBits::eVideoEncodeDstKHR ) | + VkFlags( ImageUsageFlagBits::eVideoEncodeSrcKHR ) | VkFlags( ImageUsageFlagBits::eVideoEncodeDpbKHR ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + | VkFlags( ImageUsageFlagBits::eInvocationMaskHUAWEI ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageUsageFlags operator|( ImageUsageFlagBits bit0, + ImageUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ImageUsageFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageUsageFlags operator&( ImageUsageFlagBits bit0, + ImageUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ImageUsageFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageUsageFlags operator^( ImageUsageFlagBits bit0, + ImageUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ImageUsageFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageUsageFlags operator~( ImageUsageFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( ImageUsageFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( ImageUsageFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ImageUsageFlagBits::eTransferSrc ) + result += "TransferSrc | "; + if ( value & ImageUsageFlagBits::eTransferDst ) + result += "TransferDst | "; + if ( value & ImageUsageFlagBits::eSampled ) + result += "Sampled | "; + if ( value & ImageUsageFlagBits::eStorage ) + result += "Storage | "; + if ( value & ImageUsageFlagBits::eColorAttachment ) + result += "ColorAttachment | "; + if ( value & ImageUsageFlagBits::eDepthStencilAttachment ) + result += "DepthStencilAttachment | "; + if ( value & ImageUsageFlagBits::eTransientAttachment ) + result += "TransientAttachment | "; + if ( value & ImageUsageFlagBits::eInputAttachment ) + result += "InputAttachment | "; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & ImageUsageFlagBits::eVideoDecodeDstKHR ) + result += "VideoDecodeDstKHR | "; + if ( value & ImageUsageFlagBits::eVideoDecodeSrcKHR ) + result += "VideoDecodeSrcKHR | "; + if ( value & ImageUsageFlagBits::eVideoDecodeDpbKHR ) + result += "VideoDecodeDpbKHR | "; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + if ( value & ImageUsageFlagBits::eFragmentDensityMapEXT ) + result += "FragmentDensityMapEXT | "; + if ( value & ImageUsageFlagBits::eFragmentShadingRateAttachmentKHR ) + result += "FragmentShadingRateAttachmentKHR | "; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & ImageUsageFlagBits::eVideoEncodeDstKHR ) + result += "VideoEncodeDstKHR | "; + if ( value & ImageUsageFlagBits::eVideoEncodeSrcKHR ) + result += "VideoEncodeSrcKHR | "; + if ( value & ImageUsageFlagBits::eVideoEncodeDpbKHR ) + result += "VideoEncodeDpbKHR | "; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + if ( value & ImageUsageFlagBits::eInvocationMaskHUAWEI ) + result += "InvocationMaskHUAWEI | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using InstanceCreateFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( InstanceCreateFlags ) + { + return "{}"; + } + + using MemoryHeapFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( MemoryHeapFlagBits::eDeviceLocal ) | VkFlags( MemoryHeapFlagBits::eMultiInstance ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, + MemoryHeapFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return MemoryHeapFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryHeapFlags operator&( MemoryHeapFlagBits bit0, + MemoryHeapFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return MemoryHeapFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryHeapFlags operator^( MemoryHeapFlagBits bit0, + MemoryHeapFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return MemoryHeapFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryHeapFlags operator~( MemoryHeapFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( MemoryHeapFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( MemoryHeapFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & MemoryHeapFlagBits::eDeviceLocal ) + result += "DeviceLocal | "; + if ( value & MemoryHeapFlagBits::eMultiInstance ) + result += "MultiInstance | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using MemoryPropertyFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( MemoryPropertyFlagBits::eDeviceLocal ) | VkFlags( MemoryPropertyFlagBits::eHostVisible ) | + VkFlags( MemoryPropertyFlagBits::eHostCoherent ) | VkFlags( MemoryPropertyFlagBits::eHostCached ) | + VkFlags( MemoryPropertyFlagBits::eLazilyAllocated ) | VkFlags( MemoryPropertyFlagBits::eProtected ) | + VkFlags( MemoryPropertyFlagBits::eDeviceCoherentAMD ) | + VkFlags( MemoryPropertyFlagBits::eDeviceUncachedAMD ) | + VkFlags( MemoryPropertyFlagBits::eRdmaCapableNV ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryPropertyFlags + operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return MemoryPropertyFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryPropertyFlags + operator&( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return MemoryPropertyFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryPropertyFlags + operator^( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return MemoryPropertyFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( MemoryPropertyFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( MemoryPropertyFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & MemoryPropertyFlagBits::eDeviceLocal ) + result += "DeviceLocal | "; + if ( value & MemoryPropertyFlagBits::eHostVisible ) + result += "HostVisible | "; + if ( value & MemoryPropertyFlagBits::eHostCoherent ) + result += "HostCoherent | "; + if ( value & MemoryPropertyFlagBits::eHostCached ) + result += "HostCached | "; + if ( value & MemoryPropertyFlagBits::eLazilyAllocated ) + result += "LazilyAllocated | "; + if ( value & MemoryPropertyFlagBits::eProtected ) + result += "Protected | "; + if ( value & MemoryPropertyFlagBits::eDeviceCoherentAMD ) + result += "DeviceCoherentAMD | "; + if ( value & MemoryPropertyFlagBits::eDeviceUncachedAMD ) + result += "DeviceUncachedAMD | "; + if ( value & MemoryPropertyFlagBits::eRdmaCapableNV ) + result += "RdmaCapableNV | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using QueueFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( QueueFlagBits::eGraphics ) | VkFlags( QueueFlagBits::eCompute ) | + VkFlags( QueueFlagBits::eTransfer ) | VkFlags( QueueFlagBits::eSparseBinding ) | + VkFlags( QueueFlagBits::eProtected ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | VkFlags( QueueFlagBits::eVideoDecodeKHR ) | VkFlags( QueueFlagBits::eVideoEncodeKHR ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueueFlags operator|( QueueFlagBits bit0, + QueueFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return QueueFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueueFlags operator&( QueueFlagBits bit0, + QueueFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return QueueFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueueFlags operator^( QueueFlagBits bit0, + QueueFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return QueueFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueueFlags operator~( QueueFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( QueueFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( QueueFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & QueueFlagBits::eGraphics ) + result += "Graphics | "; + if ( value & QueueFlagBits::eCompute ) + result += "Compute | "; + if ( value & QueueFlagBits::eTransfer ) + result += "Transfer | "; + if ( value & QueueFlagBits::eSparseBinding ) + result += "SparseBinding | "; + if ( value & QueueFlagBits::eProtected ) + result += "Protected | "; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & QueueFlagBits::eVideoDecodeKHR ) + result += "VideoDecodeKHR | "; + if ( value & QueueFlagBits::eVideoEncodeKHR ) + result += "VideoEncodeKHR | "; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using SampleCountFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( SampleCountFlagBits::e1 ) | VkFlags( SampleCountFlagBits::e2 ) | + VkFlags( SampleCountFlagBits::e4 ) | VkFlags( SampleCountFlagBits::e8 ) | + VkFlags( SampleCountFlagBits::e16 ) | VkFlags( SampleCountFlagBits::e32 ) | + VkFlags( SampleCountFlagBits::e64 ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SampleCountFlags operator|( SampleCountFlagBits bit0, + SampleCountFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SampleCountFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SampleCountFlags operator&( SampleCountFlagBits bit0, + SampleCountFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SampleCountFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SampleCountFlags operator^( SampleCountFlagBits bit0, + SampleCountFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SampleCountFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SampleCountFlags operator~( SampleCountFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( SampleCountFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( SampleCountFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & SampleCountFlagBits::e1 ) + result += "1 | "; + if ( value & SampleCountFlagBits::e2 ) + result += "2 | "; + if ( value & SampleCountFlagBits::e4 ) + result += "4 | "; + if ( value & SampleCountFlagBits::e8 ) + result += "8 | "; + if ( value & SampleCountFlagBits::e16 ) + result += "16 | "; + if ( value & SampleCountFlagBits::e32 ) + result += "32 | "; + if ( value & SampleCountFlagBits::e64 ) + result += "64 | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using DeviceCreateFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( DeviceCreateFlags ) + { + return "{}"; + } + + using DeviceQueueCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( DeviceQueueCreateFlagBits::eProtected ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceQueueCreateFlags + operator|( DeviceQueueCreateFlagBits bit0, DeviceQueueCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return DeviceQueueCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceQueueCreateFlags + operator&( DeviceQueueCreateFlagBits bit0, DeviceQueueCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return DeviceQueueCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceQueueCreateFlags + operator^( DeviceQueueCreateFlagBits bit0, DeviceQueueCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return DeviceQueueCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceQueueCreateFlags operator~( DeviceQueueCreateFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( DeviceQueueCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( DeviceQueueCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & DeviceQueueCreateFlagBits::eProtected ) + result += "Protected | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using PipelineStageFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = + VkFlags( PipelineStageFlagBits::eTopOfPipe ) | VkFlags( PipelineStageFlagBits::eDrawIndirect ) | + VkFlags( PipelineStageFlagBits::eVertexInput ) | VkFlags( PipelineStageFlagBits::eVertexShader ) | + VkFlags( PipelineStageFlagBits::eTessellationControlShader ) | + VkFlags( PipelineStageFlagBits::eTessellationEvaluationShader ) | + VkFlags( PipelineStageFlagBits::eGeometryShader ) | VkFlags( PipelineStageFlagBits::eFragmentShader ) | + VkFlags( PipelineStageFlagBits::eEarlyFragmentTests ) | VkFlags( PipelineStageFlagBits::eLateFragmentTests ) | + VkFlags( PipelineStageFlagBits::eColorAttachmentOutput ) | VkFlags( PipelineStageFlagBits::eComputeShader ) | + VkFlags( PipelineStageFlagBits::eTransfer ) | VkFlags( PipelineStageFlagBits::eBottomOfPipe ) | + VkFlags( PipelineStageFlagBits::eHost ) | VkFlags( PipelineStageFlagBits::eAllGraphics ) | + VkFlags( PipelineStageFlagBits::eAllCommands ) | VkFlags( PipelineStageFlagBits::eNone ) | + VkFlags( PipelineStageFlagBits::eTransformFeedbackEXT ) | + VkFlags( PipelineStageFlagBits::eConditionalRenderingEXT ) | + VkFlags( PipelineStageFlagBits::eAccelerationStructureBuildKHR ) | + VkFlags( PipelineStageFlagBits::eRayTracingShaderKHR ) | VkFlags( PipelineStageFlagBits::eTaskShaderNV ) | + VkFlags( PipelineStageFlagBits::eMeshShaderNV ) | VkFlags( PipelineStageFlagBits::eFragmentDensityProcessEXT ) | + VkFlags( PipelineStageFlagBits::eFragmentShadingRateAttachmentKHR ) | + VkFlags( PipelineStageFlagBits::eCommandPreprocessNV ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags operator|( PipelineStageFlagBits bit0, + PipelineStageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineStageFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags operator&( PipelineStageFlagBits bit0, + PipelineStageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineStageFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags operator^( PipelineStageFlagBits bit0, + PipelineStageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineStageFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags operator~( PipelineStageFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( PipelineStageFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( PipelineStageFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & PipelineStageFlagBits::eTopOfPipe ) + result += "TopOfPipe | "; + if ( value & PipelineStageFlagBits::eDrawIndirect ) + result += "DrawIndirect | "; + if ( value & PipelineStageFlagBits::eVertexInput ) + result += "VertexInput | "; + if ( value & PipelineStageFlagBits::eVertexShader ) + result += "VertexShader | "; + if ( value & PipelineStageFlagBits::eTessellationControlShader ) + result += "TessellationControlShader | "; + if ( value & PipelineStageFlagBits::eTessellationEvaluationShader ) + result += "TessellationEvaluationShader | "; + if ( value & PipelineStageFlagBits::eGeometryShader ) + result += "GeometryShader | "; + if ( value & PipelineStageFlagBits::eFragmentShader ) + result += "FragmentShader | "; + if ( value & PipelineStageFlagBits::eEarlyFragmentTests ) + result += "EarlyFragmentTests | "; + if ( value & PipelineStageFlagBits::eLateFragmentTests ) + result += "LateFragmentTests | "; + if ( value & PipelineStageFlagBits::eColorAttachmentOutput ) + result += "ColorAttachmentOutput | "; + if ( value & PipelineStageFlagBits::eComputeShader ) + result += "ComputeShader | "; + if ( value & PipelineStageFlagBits::eTransfer ) + result += "Transfer | "; + if ( value & PipelineStageFlagBits::eBottomOfPipe ) + result += "BottomOfPipe | "; + if ( value & PipelineStageFlagBits::eHost ) + result += "Host | "; + if ( value & PipelineStageFlagBits::eAllGraphics ) + result += "AllGraphics | "; + if ( value & PipelineStageFlagBits::eAllCommands ) + result += "AllCommands | "; + if ( value & PipelineStageFlagBits::eTransformFeedbackEXT ) + result += "TransformFeedbackEXT | "; + if ( value & PipelineStageFlagBits::eConditionalRenderingEXT ) + result += "ConditionalRenderingEXT | "; + if ( value & PipelineStageFlagBits::eAccelerationStructureBuildKHR ) + result += "AccelerationStructureBuildKHR | "; + if ( value & PipelineStageFlagBits::eRayTracingShaderKHR ) + result += "RayTracingShaderKHR | "; + if ( value & PipelineStageFlagBits::eTaskShaderNV ) + result += "TaskShaderNV | "; + if ( value & PipelineStageFlagBits::eMeshShaderNV ) + result += "MeshShaderNV | "; + if ( value & PipelineStageFlagBits::eFragmentDensityProcessEXT ) + result += "FragmentDensityProcessEXT | "; + if ( value & PipelineStageFlagBits::eFragmentShadingRateAttachmentKHR ) + result += "FragmentShadingRateAttachmentKHR | "; + if ( value & PipelineStageFlagBits::eCommandPreprocessNV ) + result += "CommandPreprocessNV | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using MemoryMapFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( MemoryMapFlags ) + { + return "{}"; + } + + using ImageAspectFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ImageAspectFlagBits::eColor ) | VkFlags( ImageAspectFlagBits::eDepth ) | + VkFlags( ImageAspectFlagBits::eStencil ) | VkFlags( ImageAspectFlagBits::eMetadata ) | + VkFlags( ImageAspectFlagBits::ePlane0 ) | VkFlags( ImageAspectFlagBits::ePlane1 ) | + VkFlags( ImageAspectFlagBits::ePlane2 ) | VkFlags( ImageAspectFlagBits::eMemoryPlane0EXT ) | + VkFlags( ImageAspectFlagBits::eMemoryPlane1EXT ) | VkFlags( ImageAspectFlagBits::eMemoryPlane2EXT ) | + VkFlags( ImageAspectFlagBits::eMemoryPlane3EXT ) | VkFlags( ImageAspectFlagBits::eNoneKHR ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageAspectFlags operator|( ImageAspectFlagBits bit0, + ImageAspectFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ImageAspectFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageAspectFlags operator&( ImageAspectFlagBits bit0, + ImageAspectFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ImageAspectFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageAspectFlags operator^( ImageAspectFlagBits bit0, + ImageAspectFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ImageAspectFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageAspectFlags operator~( ImageAspectFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( ImageAspectFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( ImageAspectFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ImageAspectFlagBits::eColor ) + result += "Color | "; + if ( value & ImageAspectFlagBits::eDepth ) + result += "Depth | "; + if ( value & ImageAspectFlagBits::eStencil ) + result += "Stencil | "; + if ( value & ImageAspectFlagBits::eMetadata ) + result += "Metadata | "; + if ( value & ImageAspectFlagBits::ePlane0 ) + result += "Plane0 | "; + if ( value & ImageAspectFlagBits::ePlane1 ) + result += "Plane1 | "; + if ( value & ImageAspectFlagBits::ePlane2 ) + result += "Plane2 | "; + if ( value & ImageAspectFlagBits::eMemoryPlane0EXT ) + result += "MemoryPlane0EXT | "; + if ( value & ImageAspectFlagBits::eMemoryPlane1EXT ) + result += "MemoryPlane1EXT | "; + if ( value & ImageAspectFlagBits::eMemoryPlane2EXT ) + result += "MemoryPlane2EXT | "; + if ( value & ImageAspectFlagBits::eMemoryPlane3EXT ) + result += "MemoryPlane3EXT | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using SparseImageFormatFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( SparseImageFormatFlagBits::eSingleMiptail ) | + VkFlags( SparseImageFormatFlagBits::eAlignedMipSize ) | + VkFlags( SparseImageFormatFlagBits::eNonstandardBlockSize ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseImageFormatFlags + operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SparseImageFormatFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseImageFormatFlags + operator&( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SparseImageFormatFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseImageFormatFlags + operator^( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SparseImageFormatFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( SparseImageFormatFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( SparseImageFormatFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & SparseImageFormatFlagBits::eSingleMiptail ) + result += "SingleMiptail | "; + if ( value & SparseImageFormatFlagBits::eAlignedMipSize ) + result += "AlignedMipSize | "; + if ( value & SparseImageFormatFlagBits::eNonstandardBlockSize ) + result += "NonstandardBlockSize | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using SparseMemoryBindFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( SparseMemoryBindFlagBits::eMetadata ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseMemoryBindFlags + operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SparseMemoryBindFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseMemoryBindFlags + operator&( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SparseMemoryBindFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseMemoryBindFlags + operator^( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SparseMemoryBindFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( SparseMemoryBindFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( SparseMemoryBindFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & SparseMemoryBindFlagBits::eMetadata ) + result += "Metadata | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using FenceCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( FenceCreateFlagBits::eSignaled ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceCreateFlags operator|( FenceCreateFlagBits bit0, + FenceCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return FenceCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceCreateFlags operator&( FenceCreateFlagBits bit0, + FenceCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return FenceCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceCreateFlags operator^( FenceCreateFlagBits bit0, + FenceCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return FenceCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceCreateFlags operator~( FenceCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( FenceCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( FenceCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & FenceCreateFlagBits::eSignaled ) + result += "Signaled | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using SemaphoreCreateFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( SemaphoreCreateFlags ) + { + return "{}"; + } + + using EventCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( EventCreateFlagBits::eDeviceOnly ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR EventCreateFlags operator|( EventCreateFlagBits bit0, + EventCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return EventCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR EventCreateFlags operator&( EventCreateFlagBits bit0, + EventCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return EventCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR EventCreateFlags operator^( EventCreateFlagBits bit0, + EventCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return EventCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR EventCreateFlags operator~( EventCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( EventCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( EventCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & EventCreateFlagBits::eDeviceOnly ) + result += "DeviceOnly | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using QueryPipelineStatisticFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( QueryPipelineStatisticFlagBits::eInputAssemblyVertices ) | + VkFlags( QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives ) | + VkFlags( QueryPipelineStatisticFlagBits::eVertexShaderInvocations ) | + VkFlags( QueryPipelineStatisticFlagBits::eGeometryShaderInvocations ) | + VkFlags( QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives ) | + VkFlags( QueryPipelineStatisticFlagBits::eClippingInvocations ) | + VkFlags( QueryPipelineStatisticFlagBits::eClippingPrimitives ) | + VkFlags( QueryPipelineStatisticFlagBits::eFragmentShaderInvocations ) | + VkFlags( QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches ) | + VkFlags( QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations ) | + VkFlags( QueryPipelineStatisticFlagBits::eComputeShaderInvocations ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryPipelineStatisticFlags + operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return QueryPipelineStatisticFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryPipelineStatisticFlags + operator&( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return QueryPipelineStatisticFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryPipelineStatisticFlags + operator^( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return QueryPipelineStatisticFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( QueryPipelineStatisticFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( QueryPipelineStatisticFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices ) + result += "InputAssemblyVertices | "; + if ( value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives ) + result += "InputAssemblyPrimitives | "; + if ( value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations ) + result += "VertexShaderInvocations | "; + if ( value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations ) + result += "GeometryShaderInvocations | "; + if ( value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives ) + result += "GeometryShaderPrimitives | "; + if ( value & QueryPipelineStatisticFlagBits::eClippingInvocations ) + result += "ClippingInvocations | "; + if ( value & QueryPipelineStatisticFlagBits::eClippingPrimitives ) + result += "ClippingPrimitives | "; + if ( value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations ) + result += "FragmentShaderInvocations | "; + if ( value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches ) + result += "TessellationControlShaderPatches | "; + if ( value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations ) + result += "TessellationEvaluationShaderInvocations | "; + if ( value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations ) + result += "ComputeShaderInvocations | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using QueryPoolCreateFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( QueryPoolCreateFlags ) + { + return "{}"; + } + + using QueryResultFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( QueryResultFlagBits::e64 ) | VkFlags( QueryResultFlagBits::eWait ) | + VkFlags( QueryResultFlagBits::eWithAvailability ) | VkFlags( QueryResultFlagBits::ePartial ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | VkFlags( QueryResultFlagBits::eWithStatusKHR ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryResultFlags operator|( QueryResultFlagBits bit0, + QueryResultFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return QueryResultFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryResultFlags operator&( QueryResultFlagBits bit0, + QueryResultFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return QueryResultFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryResultFlags operator^( QueryResultFlagBits bit0, + QueryResultFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return QueryResultFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryResultFlags operator~( QueryResultFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( QueryResultFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( QueryResultFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & QueryResultFlagBits::e64 ) + result += "64 | "; + if ( value & QueryResultFlagBits::eWait ) + result += "Wait | "; + if ( value & QueryResultFlagBits::eWithAvailability ) + result += "WithAvailability | "; + if ( value & QueryResultFlagBits::ePartial ) + result += "Partial | "; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & QueryResultFlagBits::eWithStatusKHR ) + result += "WithStatusKHR | "; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using BufferCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( BufferCreateFlagBits::eSparseBinding ) | VkFlags( BufferCreateFlagBits::eSparseResidency ) | + VkFlags( BufferCreateFlagBits::eSparseAliased ) | VkFlags( BufferCreateFlagBits::eProtected ) | + VkFlags( BufferCreateFlagBits::eDeviceAddressCaptureReplay ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferCreateFlags operator|( BufferCreateFlagBits bit0, + BufferCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return BufferCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferCreateFlags operator&( BufferCreateFlagBits bit0, + BufferCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return BufferCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferCreateFlags operator^( BufferCreateFlagBits bit0, + BufferCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return BufferCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferCreateFlags operator~( BufferCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( BufferCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( BufferCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & BufferCreateFlagBits::eSparseBinding ) + result += "SparseBinding | "; + if ( value & BufferCreateFlagBits::eSparseResidency ) + result += "SparseResidency | "; + if ( value & BufferCreateFlagBits::eSparseAliased ) + result += "SparseAliased | "; + if ( value & BufferCreateFlagBits::eProtected ) + result += "Protected | "; + if ( value & BufferCreateFlagBits::eDeviceAddressCaptureReplay ) + result += "DeviceAddressCaptureReplay | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using BufferUsageFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = + VkFlags( BufferUsageFlagBits::eTransferSrc ) | VkFlags( BufferUsageFlagBits::eTransferDst ) | + VkFlags( BufferUsageFlagBits::eUniformTexelBuffer ) | VkFlags( BufferUsageFlagBits::eStorageTexelBuffer ) | + VkFlags( BufferUsageFlagBits::eUniformBuffer ) | VkFlags( BufferUsageFlagBits::eStorageBuffer ) | + VkFlags( BufferUsageFlagBits::eIndexBuffer ) | VkFlags( BufferUsageFlagBits::eVertexBuffer ) | + VkFlags( BufferUsageFlagBits::eIndirectBuffer ) | VkFlags( BufferUsageFlagBits::eShaderDeviceAddress ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | VkFlags( BufferUsageFlagBits::eVideoDecodeSrcKHR ) | VkFlags( BufferUsageFlagBits::eVideoDecodeDstKHR ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + | VkFlags( BufferUsageFlagBits::eTransformFeedbackBufferEXT ) | + VkFlags( BufferUsageFlagBits::eTransformFeedbackCounterBufferEXT ) | + VkFlags( BufferUsageFlagBits::eConditionalRenderingEXT ) | + VkFlags( BufferUsageFlagBits::eAccelerationStructureBuildInputReadOnlyKHR ) | + VkFlags( BufferUsageFlagBits::eAccelerationStructureStorageKHR ) | + VkFlags( BufferUsageFlagBits::eShaderBindingTableKHR ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | VkFlags( BufferUsageFlagBits::eVideoEncodeDstKHR ) | VkFlags( BufferUsageFlagBits::eVideoEncodeSrcKHR ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferUsageFlags operator|( BufferUsageFlagBits bit0, + BufferUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return BufferUsageFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferUsageFlags operator&( BufferUsageFlagBits bit0, + BufferUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return BufferUsageFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferUsageFlags operator^( BufferUsageFlagBits bit0, + BufferUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return BufferUsageFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferUsageFlags operator~( BufferUsageFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( BufferUsageFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( BufferUsageFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & BufferUsageFlagBits::eTransferSrc ) + result += "TransferSrc | "; + if ( value & BufferUsageFlagBits::eTransferDst ) + result += "TransferDst | "; + if ( value & BufferUsageFlagBits::eUniformTexelBuffer ) + result += "UniformTexelBuffer | "; + if ( value & BufferUsageFlagBits::eStorageTexelBuffer ) + result += "StorageTexelBuffer | "; + if ( value & BufferUsageFlagBits::eUniformBuffer ) + result += "UniformBuffer | "; + if ( value & BufferUsageFlagBits::eStorageBuffer ) + result += "StorageBuffer | "; + if ( value & BufferUsageFlagBits::eIndexBuffer ) + result += "IndexBuffer | "; + if ( value & BufferUsageFlagBits::eVertexBuffer ) + result += "VertexBuffer | "; + if ( value & BufferUsageFlagBits::eIndirectBuffer ) + result += "IndirectBuffer | "; + if ( value & BufferUsageFlagBits::eShaderDeviceAddress ) + result += "ShaderDeviceAddress | "; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & BufferUsageFlagBits::eVideoDecodeSrcKHR ) + result += "VideoDecodeSrcKHR | "; + if ( value & BufferUsageFlagBits::eVideoDecodeDstKHR ) + result += "VideoDecodeDstKHR | "; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + if ( value & BufferUsageFlagBits::eTransformFeedbackBufferEXT ) + result += "TransformFeedbackBufferEXT | "; + if ( value & BufferUsageFlagBits::eTransformFeedbackCounterBufferEXT ) + result += "TransformFeedbackCounterBufferEXT | "; + if ( value & BufferUsageFlagBits::eConditionalRenderingEXT ) + result += "ConditionalRenderingEXT | "; + if ( value & BufferUsageFlagBits::eAccelerationStructureBuildInputReadOnlyKHR ) + result += "AccelerationStructureBuildInputReadOnlyKHR | "; + if ( value & BufferUsageFlagBits::eAccelerationStructureStorageKHR ) + result += "AccelerationStructureStorageKHR | "; + if ( value & BufferUsageFlagBits::eShaderBindingTableKHR ) + result += "ShaderBindingTableKHR | "; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & BufferUsageFlagBits::eVideoEncodeDstKHR ) + result += "VideoEncodeDstKHR | "; + if ( value & BufferUsageFlagBits::eVideoEncodeSrcKHR ) + result += "VideoEncodeSrcKHR | "; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using BufferViewCreateFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( BufferViewCreateFlags ) + { + return "{}"; + } + + using ImageViewCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ImageViewCreateFlagBits::eFragmentDensityMapDynamicEXT ) | + VkFlags( ImageViewCreateFlagBits::eFragmentDensityMapDeferredEXT ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageViewCreateFlags + operator|( ImageViewCreateFlagBits bit0, ImageViewCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ImageViewCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageViewCreateFlags + operator&( ImageViewCreateFlagBits bit0, ImageViewCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ImageViewCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageViewCreateFlags + operator^( ImageViewCreateFlagBits bit0, ImageViewCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ImageViewCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageViewCreateFlags operator~( ImageViewCreateFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( ImageViewCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( ImageViewCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ImageViewCreateFlagBits::eFragmentDensityMapDynamicEXT ) + result += "FragmentDensityMapDynamicEXT | "; + if ( value & ImageViewCreateFlagBits::eFragmentDensityMapDeferredEXT ) + result += "FragmentDensityMapDeferredEXT | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using ShaderModuleCreateFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( ShaderModuleCreateFlags ) + { + return "{}"; + } + + using PipelineCacheCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( PipelineCacheCreateFlagBits::eExternallySynchronized ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCacheCreateFlags + operator|( PipelineCacheCreateFlagBits bit0, PipelineCacheCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineCacheCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCacheCreateFlags + operator&( PipelineCacheCreateFlagBits bit0, PipelineCacheCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineCacheCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCacheCreateFlags + operator^( PipelineCacheCreateFlagBits bit0, PipelineCacheCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineCacheCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCacheCreateFlags operator~( PipelineCacheCreateFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( PipelineCacheCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( PipelineCacheCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & PipelineCacheCreateFlagBits::eExternallySynchronized ) + result += "ExternallySynchronized | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using ColorComponentFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ColorComponentFlagBits::eR ) | VkFlags( ColorComponentFlagBits::eG ) | + VkFlags( ColorComponentFlagBits::eB ) | VkFlags( ColorComponentFlagBits::eA ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ColorComponentFlags + operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ColorComponentFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ColorComponentFlags + operator&( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ColorComponentFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ColorComponentFlags + operator^( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ColorComponentFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ColorComponentFlags operator~( ColorComponentFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( ColorComponentFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( ColorComponentFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ColorComponentFlagBits::eR ) + result += "R | "; + if ( value & ColorComponentFlagBits::eG ) + result += "G | "; + if ( value & ColorComponentFlagBits::eB ) + result += "B | "; + if ( value & ColorComponentFlagBits::eA ) + result += "A | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using CullModeFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( CullModeFlagBits::eNone ) | VkFlags( CullModeFlagBits::eFront ) | + VkFlags( CullModeFlagBits::eBack ) | VkFlags( CullModeFlagBits::eFrontAndBack ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CullModeFlags operator|( CullModeFlagBits bit0, + CullModeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return CullModeFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CullModeFlags operator&( CullModeFlagBits bit0, + CullModeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return CullModeFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CullModeFlags operator^( CullModeFlagBits bit0, + CullModeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return CullModeFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CullModeFlags operator~( CullModeFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( CullModeFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( CullModeFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & CullModeFlagBits::eFront ) + result += "Front | "; + if ( value & CullModeFlagBits::eBack ) + result += "Back | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using PipelineColorBlendStateCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( PipelineColorBlendStateCreateFlagBits::eRasterizationOrderAttachmentAccessARM ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineColorBlendStateCreateFlags operator|( + PipelineColorBlendStateCreateFlagBits bit0, PipelineColorBlendStateCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineColorBlendStateCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineColorBlendStateCreateFlags operator&( + PipelineColorBlendStateCreateFlagBits bit0, PipelineColorBlendStateCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineColorBlendStateCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineColorBlendStateCreateFlags operator^( + PipelineColorBlendStateCreateFlagBits bit0, PipelineColorBlendStateCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineColorBlendStateCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineColorBlendStateCreateFlags + operator~( PipelineColorBlendStateCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( PipelineColorBlendStateCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( PipelineColorBlendStateCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & PipelineColorBlendStateCreateFlagBits::eRasterizationOrderAttachmentAccessARM ) + result += "RasterizationOrderAttachmentAccessARM | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using PipelineCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = + VkFlags( PipelineCreateFlagBits::eDisableOptimization ) | VkFlags( PipelineCreateFlagBits::eAllowDerivatives ) | + VkFlags( PipelineCreateFlagBits::eDerivative ) | VkFlags( PipelineCreateFlagBits::eViewIndexFromDeviceIndex ) | + VkFlags( PipelineCreateFlagBits::eDispatchBase ) | + VkFlags( PipelineCreateFlagBits::eFailOnPipelineCompileRequired ) | + VkFlags( PipelineCreateFlagBits::eEarlyReturnOnFailure ) | + VkFlags( PipelineCreateFlagBits::eRenderingFragmentShadingRateAttachmentKHR ) | + VkFlags( PipelineCreateFlagBits::eRenderingFragmentDensityMapAttachmentEXT ) | + VkFlags( PipelineCreateFlagBits::eRayTracingNoNullAnyHitShadersKHR ) | + VkFlags( PipelineCreateFlagBits::eRayTracingNoNullClosestHitShadersKHR ) | + VkFlags( PipelineCreateFlagBits::eRayTracingNoNullMissShadersKHR ) | + VkFlags( PipelineCreateFlagBits::eRayTracingNoNullIntersectionShadersKHR ) | + VkFlags( PipelineCreateFlagBits::eRayTracingSkipTrianglesKHR ) | + VkFlags( PipelineCreateFlagBits::eRayTracingSkipAabbsKHR ) | + VkFlags( PipelineCreateFlagBits::eRayTracingShaderGroupHandleCaptureReplayKHR ) | + VkFlags( PipelineCreateFlagBits::eDeferCompileNV ) | VkFlags( PipelineCreateFlagBits::eCaptureStatisticsKHR ) | + VkFlags( PipelineCreateFlagBits::eCaptureInternalRepresentationsKHR ) | + VkFlags( PipelineCreateFlagBits::eIndirectBindableNV ) | VkFlags( PipelineCreateFlagBits::eLibraryKHR ) | + VkFlags( PipelineCreateFlagBits::eRayTracingAllowMotionNV ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreateFlags + operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreateFlags + operator&( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreateFlags + operator^( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreateFlags operator~( PipelineCreateFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( PipelineCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( PipelineCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & PipelineCreateFlagBits::eDisableOptimization ) + result += "DisableOptimization | "; + if ( value & PipelineCreateFlagBits::eAllowDerivatives ) + result += "AllowDerivatives | "; + if ( value & PipelineCreateFlagBits::eDerivative ) + result += "Derivative | "; + if ( value & PipelineCreateFlagBits::eViewIndexFromDeviceIndex ) + result += "ViewIndexFromDeviceIndex | "; + if ( value & PipelineCreateFlagBits::eDispatchBase ) + result += "DispatchBase | "; + if ( value & PipelineCreateFlagBits::eFailOnPipelineCompileRequired ) + result += "FailOnPipelineCompileRequired | "; + if ( value & PipelineCreateFlagBits::eEarlyReturnOnFailure ) + result += "EarlyReturnOnFailure | "; + if ( value & PipelineCreateFlagBits::eRenderingFragmentShadingRateAttachmentKHR ) + result += "RenderingFragmentShadingRateAttachmentKHR | "; + if ( value & PipelineCreateFlagBits::eRenderingFragmentDensityMapAttachmentEXT ) + result += "RenderingFragmentDensityMapAttachmentEXT | "; + if ( value & PipelineCreateFlagBits::eRayTracingNoNullAnyHitShadersKHR ) + result += "RayTracingNoNullAnyHitShadersKHR | "; + if ( value & PipelineCreateFlagBits::eRayTracingNoNullClosestHitShadersKHR ) + result += "RayTracingNoNullClosestHitShadersKHR | "; + if ( value & PipelineCreateFlagBits::eRayTracingNoNullMissShadersKHR ) + result += "RayTracingNoNullMissShadersKHR | "; + if ( value & PipelineCreateFlagBits::eRayTracingNoNullIntersectionShadersKHR ) + result += "RayTracingNoNullIntersectionShadersKHR | "; + if ( value & PipelineCreateFlagBits::eRayTracingSkipTrianglesKHR ) + result += "RayTracingSkipTrianglesKHR | "; + if ( value & PipelineCreateFlagBits::eRayTracingSkipAabbsKHR ) + result += "RayTracingSkipAabbsKHR | "; + if ( value & PipelineCreateFlagBits::eRayTracingShaderGroupHandleCaptureReplayKHR ) + result += "RayTracingShaderGroupHandleCaptureReplayKHR | "; + if ( value & PipelineCreateFlagBits::eDeferCompileNV ) + result += "DeferCompileNV | "; + if ( value & PipelineCreateFlagBits::eCaptureStatisticsKHR ) + result += "CaptureStatisticsKHR | "; + if ( value & PipelineCreateFlagBits::eCaptureInternalRepresentationsKHR ) + result += "CaptureInternalRepresentationsKHR | "; + if ( value & PipelineCreateFlagBits::eIndirectBindableNV ) + result += "IndirectBindableNV | "; + if ( value & PipelineCreateFlagBits::eLibraryKHR ) + result += "LibraryKHR | "; + if ( value & PipelineCreateFlagBits::eRayTracingAllowMotionNV ) + result += "RayTracingAllowMotionNV | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using PipelineDepthStencilStateCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( PipelineDepthStencilStateCreateFlagBits::eRasterizationOrderAttachmentDepthAccessARM ) | + VkFlags( PipelineDepthStencilStateCreateFlagBits::eRasterizationOrderAttachmentStencilAccessARM ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateFlags operator|( + PipelineDepthStencilStateCreateFlagBits bit0, PipelineDepthStencilStateCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineDepthStencilStateCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateFlags operator&( + PipelineDepthStencilStateCreateFlagBits bit0, PipelineDepthStencilStateCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineDepthStencilStateCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateFlags operator^( + PipelineDepthStencilStateCreateFlagBits bit0, PipelineDepthStencilStateCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineDepthStencilStateCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateFlags + operator~( PipelineDepthStencilStateCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( PipelineDepthStencilStateCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( PipelineDepthStencilStateCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & PipelineDepthStencilStateCreateFlagBits::eRasterizationOrderAttachmentDepthAccessARM ) + result += "RasterizationOrderAttachmentDepthAccessARM | "; + if ( value & PipelineDepthStencilStateCreateFlagBits::eRasterizationOrderAttachmentStencilAccessARM ) + result += "RasterizationOrderAttachmentStencilAccessARM | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using PipelineDynamicStateCreateFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineDynamicStateCreateFlags ) + { + return "{}"; + } + + using PipelineInputAssemblyStateCreateFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineInputAssemblyStateCreateFlags ) + { + return "{}"; + } + + using PipelineLayoutCreateFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineLayoutCreateFlags ) + { + return "{}"; + } + + using PipelineMultisampleStateCreateFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineMultisampleStateCreateFlags ) + { + return "{}"; + } + + using PipelineRasterizationStateCreateFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationStateCreateFlags ) + { + return "{}"; + } + + using PipelineShaderStageCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( PipelineShaderStageCreateFlagBits::eAllowVaryingSubgroupSize ) | + VkFlags( PipelineShaderStageCreateFlagBits::eRequireFullSubgroups ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateFlags + operator|( PipelineShaderStageCreateFlagBits bit0, PipelineShaderStageCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineShaderStageCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateFlags + operator&( PipelineShaderStageCreateFlagBits bit0, PipelineShaderStageCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineShaderStageCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateFlags + operator^( PipelineShaderStageCreateFlagBits bit0, PipelineShaderStageCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineShaderStageCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateFlags + operator~( PipelineShaderStageCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( PipelineShaderStageCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( PipelineShaderStageCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & PipelineShaderStageCreateFlagBits::eAllowVaryingSubgroupSize ) + result += "AllowVaryingSubgroupSize | "; + if ( value & PipelineShaderStageCreateFlagBits::eRequireFullSubgroups ) + result += "RequireFullSubgroups | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using PipelineTessellationStateCreateFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineTessellationStateCreateFlags ) + { + return "{}"; + } + + using PipelineVertexInputStateCreateFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineVertexInputStateCreateFlags ) + { + return "{}"; + } + + using PipelineViewportStateCreateFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineViewportStateCreateFlags ) + { + return "{}"; + } + + using ShaderStageFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ShaderStageFlagBits::eVertex ) | VkFlags( ShaderStageFlagBits::eTessellationControl ) | + VkFlags( ShaderStageFlagBits::eTessellationEvaluation ) | VkFlags( ShaderStageFlagBits::eGeometry ) | + VkFlags( ShaderStageFlagBits::eFragment ) | VkFlags( ShaderStageFlagBits::eCompute ) | + VkFlags( ShaderStageFlagBits::eAllGraphics ) | VkFlags( ShaderStageFlagBits::eAll ) | + VkFlags( ShaderStageFlagBits::eRaygenKHR ) | VkFlags( ShaderStageFlagBits::eAnyHitKHR ) | + VkFlags( ShaderStageFlagBits::eClosestHitKHR ) | VkFlags( ShaderStageFlagBits::eMissKHR ) | + VkFlags( ShaderStageFlagBits::eIntersectionKHR ) | VkFlags( ShaderStageFlagBits::eCallableKHR ) | + VkFlags( ShaderStageFlagBits::eTaskNV ) | VkFlags( ShaderStageFlagBits::eMeshNV ) | + VkFlags( ShaderStageFlagBits::eSubpassShadingHUAWEI ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ShaderStageFlags operator|( ShaderStageFlagBits bit0, + ShaderStageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ShaderStageFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ShaderStageFlags operator&( ShaderStageFlagBits bit0, + ShaderStageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ShaderStageFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ShaderStageFlags operator^( ShaderStageFlagBits bit0, + ShaderStageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ShaderStageFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ShaderStageFlags operator~( ShaderStageFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( ShaderStageFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( ShaderStageFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ShaderStageFlagBits::eVertex ) + result += "Vertex | "; + if ( value & ShaderStageFlagBits::eTessellationControl ) + result += "TessellationControl | "; + if ( value & ShaderStageFlagBits::eTessellationEvaluation ) + result += "TessellationEvaluation | "; + if ( value & ShaderStageFlagBits::eGeometry ) + result += "Geometry | "; + if ( value & ShaderStageFlagBits::eFragment ) + result += "Fragment | "; + if ( value & ShaderStageFlagBits::eCompute ) + result += "Compute | "; + if ( value & ShaderStageFlagBits::eRaygenKHR ) + result += "RaygenKHR | "; + if ( value & ShaderStageFlagBits::eAnyHitKHR ) + result += "AnyHitKHR | "; + if ( value & ShaderStageFlagBits::eClosestHitKHR ) + result += "ClosestHitKHR | "; + if ( value & ShaderStageFlagBits::eMissKHR ) + result += "MissKHR | "; + if ( value & ShaderStageFlagBits::eIntersectionKHR ) + result += "IntersectionKHR | "; + if ( value & ShaderStageFlagBits::eCallableKHR ) + result += "CallableKHR | "; + if ( value & ShaderStageFlagBits::eTaskNV ) + result += "TaskNV | "; + if ( value & ShaderStageFlagBits::eMeshNV ) + result += "MeshNV | "; + if ( value & ShaderStageFlagBits::eSubpassShadingHUAWEI ) + result += "SubpassShadingHUAWEI | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using SamplerCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( SamplerCreateFlagBits::eSubsampledEXT ) | + VkFlags( SamplerCreateFlagBits::eSubsampledCoarseReconstructionEXT ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SamplerCreateFlags operator|( SamplerCreateFlagBits bit0, + SamplerCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SamplerCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SamplerCreateFlags operator&( SamplerCreateFlagBits bit0, + SamplerCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SamplerCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SamplerCreateFlags operator^( SamplerCreateFlagBits bit0, + SamplerCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SamplerCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SamplerCreateFlags operator~( SamplerCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( SamplerCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( SamplerCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & SamplerCreateFlagBits::eSubsampledEXT ) + result += "SubsampledEXT | "; + if ( value & SamplerCreateFlagBits::eSubsampledCoarseReconstructionEXT ) + result += "SubsampledCoarseReconstructionEXT | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using DescriptorPoolCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( DescriptorPoolCreateFlagBits::eFreeDescriptorSet ) | + VkFlags( DescriptorPoolCreateFlagBits::eUpdateAfterBind ) | + VkFlags( DescriptorPoolCreateFlagBits::eHostOnlyVALVE ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorPoolCreateFlags + operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return DescriptorPoolCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorPoolCreateFlags + operator&( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return DescriptorPoolCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorPoolCreateFlags + operator^( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return DescriptorPoolCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( DescriptorPoolCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( DescriptorPoolCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet ) + result += "FreeDescriptorSet | "; + if ( value & DescriptorPoolCreateFlagBits::eUpdateAfterBind ) + result += "UpdateAfterBind | "; + if ( value & DescriptorPoolCreateFlagBits::eHostOnlyVALVE ) + result += "HostOnlyVALVE | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using DescriptorPoolResetFlags = Flags; + + VULKAN_HPP_INLINE std::string to_string( DescriptorPoolResetFlags ) + { + return "{}"; + } + + using DescriptorSetLayoutCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPool ) | + VkFlags( DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR ) | + VkFlags( DescriptorSetLayoutCreateFlagBits::eHostOnlyPoolVALVE ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateFlags + operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return DescriptorSetLayoutCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateFlags + operator&( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return DescriptorSetLayoutCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateFlags + operator^( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return DescriptorSetLayoutCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateFlags + operator~( DescriptorSetLayoutCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( DescriptorSetLayoutCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( DescriptorSetLayoutCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPool ) + result += "UpdateAfterBindPool | "; + if ( value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR ) + result += "PushDescriptorKHR | "; + if ( value & DescriptorSetLayoutCreateFlagBits::eHostOnlyPoolVALVE ) + result += "HostOnlyPoolVALVE | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using AccessFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = + VkFlags( AccessFlagBits::eIndirectCommandRead ) | VkFlags( AccessFlagBits::eIndexRead ) | + VkFlags( AccessFlagBits::eVertexAttributeRead ) | VkFlags( AccessFlagBits::eUniformRead ) | + VkFlags( AccessFlagBits::eInputAttachmentRead ) | VkFlags( AccessFlagBits::eShaderRead ) | + VkFlags( AccessFlagBits::eShaderWrite ) | VkFlags( AccessFlagBits::eColorAttachmentRead ) | + VkFlags( AccessFlagBits::eColorAttachmentWrite ) | VkFlags( AccessFlagBits::eDepthStencilAttachmentRead ) | + VkFlags( AccessFlagBits::eDepthStencilAttachmentWrite ) | VkFlags( AccessFlagBits::eTransferRead ) | + VkFlags( AccessFlagBits::eTransferWrite ) | VkFlags( AccessFlagBits::eHostRead ) | + VkFlags( AccessFlagBits::eHostWrite ) | VkFlags( AccessFlagBits::eMemoryRead ) | + VkFlags( AccessFlagBits::eMemoryWrite ) | VkFlags( AccessFlagBits::eNone ) | + VkFlags( AccessFlagBits::eTransformFeedbackWriteEXT ) | + VkFlags( AccessFlagBits::eTransformFeedbackCounterReadEXT ) | + VkFlags( AccessFlagBits::eTransformFeedbackCounterWriteEXT ) | + VkFlags( AccessFlagBits::eConditionalRenderingReadEXT ) | + VkFlags( AccessFlagBits::eColorAttachmentReadNoncoherentEXT ) | + VkFlags( AccessFlagBits::eAccelerationStructureReadKHR ) | + VkFlags( AccessFlagBits::eAccelerationStructureWriteKHR ) | + VkFlags( AccessFlagBits::eFragmentDensityMapReadEXT ) | + VkFlags( AccessFlagBits::eFragmentShadingRateAttachmentReadKHR ) | + VkFlags( AccessFlagBits::eCommandPreprocessReadNV ) | VkFlags( AccessFlagBits::eCommandPreprocessWriteNV ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags operator|( AccessFlagBits bit0, + AccessFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return AccessFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags operator&( AccessFlagBits bit0, + AccessFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return AccessFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags operator^( AccessFlagBits bit0, + AccessFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return AccessFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags operator~( AccessFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( AccessFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( AccessFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & AccessFlagBits::eIndirectCommandRead ) + result += "IndirectCommandRead | "; + if ( value & AccessFlagBits::eIndexRead ) + result += "IndexRead | "; + if ( value & AccessFlagBits::eVertexAttributeRead ) + result += "VertexAttributeRead | "; + if ( value & AccessFlagBits::eUniformRead ) + result += "UniformRead | "; + if ( value & AccessFlagBits::eInputAttachmentRead ) + result += "InputAttachmentRead | "; + if ( value & AccessFlagBits::eShaderRead ) + result += "ShaderRead | "; + if ( value & AccessFlagBits::eShaderWrite ) + result += "ShaderWrite | "; + if ( value & AccessFlagBits::eColorAttachmentRead ) + result += "ColorAttachmentRead | "; + if ( value & AccessFlagBits::eColorAttachmentWrite ) + result += "ColorAttachmentWrite | "; + if ( value & AccessFlagBits::eDepthStencilAttachmentRead ) + result += "DepthStencilAttachmentRead | "; + if ( value & AccessFlagBits::eDepthStencilAttachmentWrite ) + result += "DepthStencilAttachmentWrite | "; + if ( value & AccessFlagBits::eTransferRead ) + result += "TransferRead | "; + if ( value & AccessFlagBits::eTransferWrite ) + result += "TransferWrite | "; + if ( value & AccessFlagBits::eHostRead ) + result += "HostRead | "; + if ( value & AccessFlagBits::eHostWrite ) + result += "HostWrite | "; + if ( value & AccessFlagBits::eMemoryRead ) + result += "MemoryRead | "; + if ( value & AccessFlagBits::eMemoryWrite ) + result += "MemoryWrite | "; + if ( value & AccessFlagBits::eTransformFeedbackWriteEXT ) + result += "TransformFeedbackWriteEXT | "; + if ( value & AccessFlagBits::eTransformFeedbackCounterReadEXT ) + result += "TransformFeedbackCounterReadEXT | "; + if ( value & AccessFlagBits::eTransformFeedbackCounterWriteEXT ) + result += "TransformFeedbackCounterWriteEXT | "; + if ( value & AccessFlagBits::eConditionalRenderingReadEXT ) + result += "ConditionalRenderingReadEXT | "; + if ( value & AccessFlagBits::eColorAttachmentReadNoncoherentEXT ) + result += "ColorAttachmentReadNoncoherentEXT | "; + if ( value & AccessFlagBits::eAccelerationStructureReadKHR ) + result += "AccelerationStructureReadKHR | "; + if ( value & AccessFlagBits::eAccelerationStructureWriteKHR ) + result += "AccelerationStructureWriteKHR | "; + if ( value & AccessFlagBits::eFragmentDensityMapReadEXT ) + result += "FragmentDensityMapReadEXT | "; + if ( value & AccessFlagBits::eFragmentShadingRateAttachmentReadKHR ) + result += "FragmentShadingRateAttachmentReadKHR | "; + if ( value & AccessFlagBits::eCommandPreprocessReadNV ) + result += "CommandPreprocessReadNV | "; + if ( value & AccessFlagBits::eCommandPreprocessWriteNV ) + result += "CommandPreprocessWriteNV | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using AttachmentDescriptionFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( AttachmentDescriptionFlagBits::eMayAlias ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AttachmentDescriptionFlags + operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return AttachmentDescriptionFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AttachmentDescriptionFlags + operator&( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return AttachmentDescriptionFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AttachmentDescriptionFlags + operator^( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return AttachmentDescriptionFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( AttachmentDescriptionFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( AttachmentDescriptionFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & AttachmentDescriptionFlagBits::eMayAlias ) + result += "MayAlias | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using DependencyFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( DependencyFlagBits::eByRegion ) | VkFlags( DependencyFlagBits::eDeviceGroup ) | + VkFlags( DependencyFlagBits::eViewLocal ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DependencyFlags operator|( DependencyFlagBits bit0, + DependencyFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return DependencyFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DependencyFlags operator&( DependencyFlagBits bit0, + DependencyFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return DependencyFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DependencyFlags operator^( DependencyFlagBits bit0, + DependencyFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return DependencyFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DependencyFlags operator~( DependencyFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( DependencyFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( DependencyFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & DependencyFlagBits::eByRegion ) + result += "ByRegion | "; + if ( value & DependencyFlagBits::eDeviceGroup ) + result += "DeviceGroup | "; + if ( value & DependencyFlagBits::eViewLocal ) + result += "ViewLocal | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using FramebufferCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( FramebufferCreateFlagBits::eImageless ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FramebufferCreateFlags + operator|( FramebufferCreateFlagBits bit0, FramebufferCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return FramebufferCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FramebufferCreateFlags + operator&( FramebufferCreateFlagBits bit0, FramebufferCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return FramebufferCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FramebufferCreateFlags + operator^( FramebufferCreateFlagBits bit0, FramebufferCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return FramebufferCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FramebufferCreateFlags operator~( FramebufferCreateFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( FramebufferCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( FramebufferCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & FramebufferCreateFlagBits::eImageless ) + result += "Imageless | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using RenderPassCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( RenderPassCreateFlagBits::eTransformQCOM ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR RenderPassCreateFlags + operator|( RenderPassCreateFlagBits bit0, RenderPassCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return RenderPassCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR RenderPassCreateFlags + operator&( RenderPassCreateFlagBits bit0, RenderPassCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return RenderPassCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR RenderPassCreateFlags + operator^( RenderPassCreateFlagBits bit0, RenderPassCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return RenderPassCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR RenderPassCreateFlags operator~( RenderPassCreateFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( RenderPassCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( RenderPassCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & RenderPassCreateFlagBits::eTransformQCOM ) + result += "TransformQCOM | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using SubpassDescriptionFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( SubpassDescriptionFlagBits::ePerViewAttributesNVX ) | + VkFlags( SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX ) | + VkFlags( SubpassDescriptionFlagBits::eFragmentRegionQCOM ) | + VkFlags( SubpassDescriptionFlagBits::eShaderResolveQCOM ) | + VkFlags( SubpassDescriptionFlagBits::eRasterizationOrderAttachmentColorAccessARM ) | + VkFlags( SubpassDescriptionFlagBits::eRasterizationOrderAttachmentDepthAccessARM ) | + VkFlags( SubpassDescriptionFlagBits::eRasterizationOrderAttachmentStencilAccessARM ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubpassDescriptionFlags + operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SubpassDescriptionFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubpassDescriptionFlags + operator&( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SubpassDescriptionFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubpassDescriptionFlags + operator^( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SubpassDescriptionFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( SubpassDescriptionFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( SubpassDescriptionFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & SubpassDescriptionFlagBits::ePerViewAttributesNVX ) + result += "PerViewAttributesNVX | "; + if ( value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX ) + result += "PerViewPositionXOnlyNVX | "; + if ( value & SubpassDescriptionFlagBits::eFragmentRegionQCOM ) + result += "FragmentRegionQCOM | "; + if ( value & SubpassDescriptionFlagBits::eShaderResolveQCOM ) + result += "ShaderResolveQCOM | "; + if ( value & SubpassDescriptionFlagBits::eRasterizationOrderAttachmentColorAccessARM ) + result += "RasterizationOrderAttachmentColorAccessARM | "; + if ( value & SubpassDescriptionFlagBits::eRasterizationOrderAttachmentDepthAccessARM ) + result += "RasterizationOrderAttachmentDepthAccessARM | "; + if ( value & SubpassDescriptionFlagBits::eRasterizationOrderAttachmentStencilAccessARM ) + result += "RasterizationOrderAttachmentStencilAccessARM | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using CommandPoolCreateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( CommandPoolCreateFlagBits::eTransient ) | + VkFlags( CommandPoolCreateFlagBits::eResetCommandBuffer ) | + VkFlags( CommandPoolCreateFlagBits::eProtected ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolCreateFlags + operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return CommandPoolCreateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolCreateFlags + operator&( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return CommandPoolCreateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolCreateFlags + operator^( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return CommandPoolCreateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( CommandPoolCreateFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( CommandPoolCreateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & CommandPoolCreateFlagBits::eTransient ) + result += "Transient | "; + if ( value & CommandPoolCreateFlagBits::eResetCommandBuffer ) + result += "ResetCommandBuffer | "; + if ( value & CommandPoolCreateFlagBits::eProtected ) + result += "Protected | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using CommandPoolResetFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( CommandPoolResetFlagBits::eReleaseResources ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolResetFlags + operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return CommandPoolResetFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolResetFlags + operator&( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return CommandPoolResetFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolResetFlags + operator^( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return CommandPoolResetFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( CommandPoolResetFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( CommandPoolResetFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & CommandPoolResetFlagBits::eReleaseResources ) + result += "ReleaseResources | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using CommandBufferResetFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( CommandBufferResetFlagBits::eReleaseResources ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferResetFlags + operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return CommandBufferResetFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferResetFlags + operator&( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return CommandBufferResetFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferResetFlags + operator^( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return CommandBufferResetFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( CommandBufferResetFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( CommandBufferResetFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & CommandBufferResetFlagBits::eReleaseResources ) + result += "ReleaseResources | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using CommandBufferUsageFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( CommandBufferUsageFlagBits::eOneTimeSubmit ) | + VkFlags( CommandBufferUsageFlagBits::eRenderPassContinue ) | + VkFlags( CommandBufferUsageFlagBits::eSimultaneousUse ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferUsageFlags + operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return CommandBufferUsageFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferUsageFlags + operator&( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return CommandBufferUsageFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferUsageFlags + operator^( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return CommandBufferUsageFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( CommandBufferUsageFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( CommandBufferUsageFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & CommandBufferUsageFlagBits::eOneTimeSubmit ) + result += "OneTimeSubmit | "; + if ( value & CommandBufferUsageFlagBits::eRenderPassContinue ) + result += "RenderPassContinue | "; + if ( value & CommandBufferUsageFlagBits::eSimultaneousUse ) + result += "SimultaneousUse | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using QueryControlFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( QueryControlFlagBits::ePrecise ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryControlFlags operator|( QueryControlFlagBits bit0, + QueryControlFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return QueryControlFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryControlFlags operator&( QueryControlFlagBits bit0, + QueryControlFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return QueryControlFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryControlFlags operator^( QueryControlFlagBits bit0, + QueryControlFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return QueryControlFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryControlFlags operator~( QueryControlFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( QueryControlFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( QueryControlFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & QueryControlFlagBits::ePrecise ) + result += "Precise | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using StencilFaceFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( StencilFaceFlagBits::eFront ) | VkFlags( StencilFaceFlagBits::eBack ) | + VkFlags( StencilFaceFlagBits::eFrontAndBack ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR StencilFaceFlags operator|( StencilFaceFlagBits bit0, + StencilFaceFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return StencilFaceFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR StencilFaceFlags operator&( StencilFaceFlagBits bit0, + StencilFaceFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return StencilFaceFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR StencilFaceFlags operator^( StencilFaceFlagBits bit0, + StencilFaceFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return StencilFaceFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR StencilFaceFlags operator~( StencilFaceFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( StencilFaceFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( StencilFaceFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & StencilFaceFlagBits::eFront ) + result += "Front | "; + if ( value & StencilFaceFlagBits::eBack ) + result += "Back | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + //=== VK_VERSION_1_1 === + + using SubgroupFeatureFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( SubgroupFeatureFlagBits::eBasic ) | VkFlags( SubgroupFeatureFlagBits::eVote ) | + VkFlags( SubgroupFeatureFlagBits::eArithmetic ) | VkFlags( SubgroupFeatureFlagBits::eBallot ) | + VkFlags( SubgroupFeatureFlagBits::eShuffle ) | VkFlags( SubgroupFeatureFlagBits::eShuffleRelative ) | + VkFlags( SubgroupFeatureFlagBits::eClustered ) | VkFlags( SubgroupFeatureFlagBits::eQuad ) | + VkFlags( SubgroupFeatureFlagBits::ePartitionedNV ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubgroupFeatureFlags + operator|( SubgroupFeatureFlagBits bit0, SubgroupFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SubgroupFeatureFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubgroupFeatureFlags + operator&( SubgroupFeatureFlagBits bit0, SubgroupFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SubgroupFeatureFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubgroupFeatureFlags + operator^( SubgroupFeatureFlagBits bit0, SubgroupFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SubgroupFeatureFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubgroupFeatureFlags operator~( SubgroupFeatureFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( SubgroupFeatureFlags( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( SubgroupFeatureFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & SubgroupFeatureFlagBits::eBasic ) + result += "Basic | "; + if ( value & SubgroupFeatureFlagBits::eVote ) + result += "Vote | "; + if ( value & SubgroupFeatureFlagBits::eArithmetic ) + result += "Arithmetic | "; + if ( value & SubgroupFeatureFlagBits::eBallot ) + result += "Ballot | "; + if ( value & SubgroupFeatureFlagBits::eShuffle ) + result += "Shuffle | "; + if ( value & SubgroupFeatureFlagBits::eShuffleRelative ) + result += "ShuffleRelative | "; + if ( value & SubgroupFeatureFlagBits::eClustered ) + result += "Clustered | "; + if ( value & SubgroupFeatureFlagBits::eQuad ) + result += "Quad | "; + if ( value & SubgroupFeatureFlagBits::ePartitionedNV ) + result += "PartitionedNV | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using PeerMemoryFeatureFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( PeerMemoryFeatureFlagBits::eCopySrc ) | VkFlags( PeerMemoryFeatureFlagBits::eCopyDst ) | + VkFlags( PeerMemoryFeatureFlagBits::eGenericSrc ) | VkFlags( PeerMemoryFeatureFlagBits::eGenericDst ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PeerMemoryFeatureFlags + operator|( PeerMemoryFeatureFlagBits bit0, PeerMemoryFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PeerMemoryFeatureFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PeerMemoryFeatureFlags + operator&( PeerMemoryFeatureFlagBits bit0, PeerMemoryFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PeerMemoryFeatureFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PeerMemoryFeatureFlags + operator^( PeerMemoryFeatureFlagBits bit0, PeerMemoryFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PeerMemoryFeatureFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PeerMemoryFeatureFlags operator~( PeerMemoryFeatureFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( PeerMemoryFeatureFlags( bits ) ); + } + + using PeerMemoryFeatureFlagsKHR = PeerMemoryFeatureFlags; + + VULKAN_HPP_INLINE std::string to_string( PeerMemoryFeatureFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & PeerMemoryFeatureFlagBits::eCopySrc ) + result += "CopySrc | "; + if ( value & PeerMemoryFeatureFlagBits::eCopyDst ) + result += "CopyDst | "; + if ( value & PeerMemoryFeatureFlagBits::eGenericSrc ) + result += "GenericSrc | "; + if ( value & PeerMemoryFeatureFlagBits::eGenericDst ) + result += "GenericDst | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using MemoryAllocateFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( MemoryAllocateFlagBits::eDeviceMask ) | VkFlags( MemoryAllocateFlagBits::eDeviceAddress ) | + VkFlags( MemoryAllocateFlagBits::eDeviceAddressCaptureReplay ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryAllocateFlags + operator|( MemoryAllocateFlagBits bit0, MemoryAllocateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return MemoryAllocateFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryAllocateFlags + operator&( MemoryAllocateFlagBits bit0, MemoryAllocateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return MemoryAllocateFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryAllocateFlags + operator^( MemoryAllocateFlagBits bit0, MemoryAllocateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return MemoryAllocateFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryAllocateFlags operator~( MemoryAllocateFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( MemoryAllocateFlags( bits ) ); + } + + using MemoryAllocateFlagsKHR = MemoryAllocateFlags; + + VULKAN_HPP_INLINE std::string to_string( MemoryAllocateFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & MemoryAllocateFlagBits::eDeviceMask ) + result += "DeviceMask | "; + if ( value & MemoryAllocateFlagBits::eDeviceAddress ) + result += "DeviceAddress | "; + if ( value & MemoryAllocateFlagBits::eDeviceAddressCaptureReplay ) + result += "DeviceAddressCaptureReplay | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using CommandPoolTrimFlags = Flags; + + using CommandPoolTrimFlagsKHR = CommandPoolTrimFlags; + + VULKAN_HPP_INLINE std::string to_string( CommandPoolTrimFlags ) + { + return "{}"; + } + + using DescriptorUpdateTemplateCreateFlags = Flags; + + using DescriptorUpdateTemplateCreateFlagsKHR = DescriptorUpdateTemplateCreateFlags; + + VULKAN_HPP_INLINE std::string to_string( DescriptorUpdateTemplateCreateFlags ) + { + return "{}"; + } + + using ExternalMemoryHandleTypeFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) | + VkFlags( ExternalMemoryHandleTypeFlagBits::eOpaqueWin32 ) | + VkFlags( ExternalMemoryHandleTypeFlagBits::eOpaqueWin32Kmt ) | + VkFlags( ExternalMemoryHandleTypeFlagBits::eD3D11Texture ) | + VkFlags( ExternalMemoryHandleTypeFlagBits::eD3D11TextureKmt ) | + VkFlags( ExternalMemoryHandleTypeFlagBits::eD3D12Heap ) | + VkFlags( ExternalMemoryHandleTypeFlagBits::eD3D12Resource ) | + VkFlags( ExternalMemoryHandleTypeFlagBits::eDmaBufEXT ) +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + | VkFlags( ExternalMemoryHandleTypeFlagBits::eAndroidHardwareBufferANDROID ) +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + | VkFlags( ExternalMemoryHandleTypeFlagBits::eHostAllocationEXT ) | + VkFlags( ExternalMemoryHandleTypeFlagBits::eHostMappedForeignMemoryEXT ) +#if defined( VK_USE_PLATFORM_FUCHSIA ) + | VkFlags( ExternalMemoryHandleTypeFlagBits::eZirconVmoFUCHSIA ) +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + | VkFlags( ExternalMemoryHandleTypeFlagBits::eRdmaAddressNV ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlags + operator|( ExternalMemoryHandleTypeFlagBits bit0, ExternalMemoryHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalMemoryHandleTypeFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlags + operator&( ExternalMemoryHandleTypeFlagBits bit0, ExternalMemoryHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalMemoryHandleTypeFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlags + operator^( ExternalMemoryHandleTypeFlagBits bit0, ExternalMemoryHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalMemoryHandleTypeFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlags + operator~( ExternalMemoryHandleTypeFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( ExternalMemoryHandleTypeFlags( bits ) ); + } + + using ExternalMemoryHandleTypeFlagsKHR = ExternalMemoryHandleTypeFlags; + + VULKAN_HPP_INLINE std::string to_string( ExternalMemoryHandleTypeFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) + result += "OpaqueFd | "; + if ( value & ExternalMemoryHandleTypeFlagBits::eOpaqueWin32 ) + result += "OpaqueWin32 | "; + if ( value & ExternalMemoryHandleTypeFlagBits::eOpaqueWin32Kmt ) + result += "OpaqueWin32Kmt | "; + if ( value & ExternalMemoryHandleTypeFlagBits::eD3D11Texture ) + result += "D3D11Texture | "; + if ( value & ExternalMemoryHandleTypeFlagBits::eD3D11TextureKmt ) + result += "D3D11TextureKmt | "; + if ( value & ExternalMemoryHandleTypeFlagBits::eD3D12Heap ) + result += "D3D12Heap | "; + if ( value & ExternalMemoryHandleTypeFlagBits::eD3D12Resource ) + result += "D3D12Resource | "; + if ( value & ExternalMemoryHandleTypeFlagBits::eDmaBufEXT ) + result += "DmaBufEXT | "; +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + if ( value & ExternalMemoryHandleTypeFlagBits::eAndroidHardwareBufferANDROID ) + result += "AndroidHardwareBufferANDROID | "; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + if ( value & ExternalMemoryHandleTypeFlagBits::eHostAllocationEXT ) + result += "HostAllocationEXT | "; + if ( value & ExternalMemoryHandleTypeFlagBits::eHostMappedForeignMemoryEXT ) + result += "HostMappedForeignMemoryEXT | "; +#if defined( VK_USE_PLATFORM_FUCHSIA ) + if ( value & ExternalMemoryHandleTypeFlagBits::eZirconVmoFUCHSIA ) + result += "ZirconVmoFUCHSIA | "; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + if ( value & ExternalMemoryHandleTypeFlagBits::eRdmaAddressNV ) + result += "RdmaAddressNV | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using ExternalMemoryFeatureFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ExternalMemoryFeatureFlagBits::eDedicatedOnly ) | + VkFlags( ExternalMemoryFeatureFlagBits::eExportable ) | + VkFlags( ExternalMemoryFeatureFlagBits::eImportable ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlags + operator|( ExternalMemoryFeatureFlagBits bit0, ExternalMemoryFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalMemoryFeatureFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlags + operator&( ExternalMemoryFeatureFlagBits bit0, ExternalMemoryFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalMemoryFeatureFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlags + operator^( ExternalMemoryFeatureFlagBits bit0, ExternalMemoryFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalMemoryFeatureFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlags operator~( ExternalMemoryFeatureFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( ExternalMemoryFeatureFlags( bits ) ); + } + + using ExternalMemoryFeatureFlagsKHR = ExternalMemoryFeatureFlags; + + VULKAN_HPP_INLINE std::string to_string( ExternalMemoryFeatureFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ExternalMemoryFeatureFlagBits::eDedicatedOnly ) + result += "DedicatedOnly | "; + if ( value & ExternalMemoryFeatureFlagBits::eExportable ) + result += "Exportable | "; + if ( value & ExternalMemoryFeatureFlagBits::eImportable ) + result += "Importable | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using ExternalFenceHandleTypeFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ExternalFenceHandleTypeFlagBits::eOpaqueFd ) | + VkFlags( ExternalFenceHandleTypeFlagBits::eOpaqueWin32 ) | + VkFlags( ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt ) | + VkFlags( ExternalFenceHandleTypeFlagBits::eSyncFd ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceHandleTypeFlags + operator|( ExternalFenceHandleTypeFlagBits bit0, ExternalFenceHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalFenceHandleTypeFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceHandleTypeFlags + operator&( ExternalFenceHandleTypeFlagBits bit0, ExternalFenceHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalFenceHandleTypeFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceHandleTypeFlags + operator^( ExternalFenceHandleTypeFlagBits bit0, ExternalFenceHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalFenceHandleTypeFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceHandleTypeFlags operator~( ExternalFenceHandleTypeFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( ExternalFenceHandleTypeFlags( bits ) ); + } + + using ExternalFenceHandleTypeFlagsKHR = ExternalFenceHandleTypeFlags; + + VULKAN_HPP_INLINE std::string to_string( ExternalFenceHandleTypeFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ExternalFenceHandleTypeFlagBits::eOpaqueFd ) + result += "OpaqueFd | "; + if ( value & ExternalFenceHandleTypeFlagBits::eOpaqueWin32 ) + result += "OpaqueWin32 | "; + if ( value & ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt ) + result += "OpaqueWin32Kmt | "; + if ( value & ExternalFenceHandleTypeFlagBits::eSyncFd ) + result += "SyncFd | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using ExternalFenceFeatureFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = + VkFlags( ExternalFenceFeatureFlagBits::eExportable ) | VkFlags( ExternalFenceFeatureFlagBits::eImportable ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceFeatureFlags + operator|( ExternalFenceFeatureFlagBits bit0, ExternalFenceFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalFenceFeatureFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceFeatureFlags + operator&( ExternalFenceFeatureFlagBits bit0, ExternalFenceFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalFenceFeatureFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceFeatureFlags + operator^( ExternalFenceFeatureFlagBits bit0, ExternalFenceFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalFenceFeatureFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceFeatureFlags operator~( ExternalFenceFeatureFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( ExternalFenceFeatureFlags( bits ) ); + } + + using ExternalFenceFeatureFlagsKHR = ExternalFenceFeatureFlags; + + VULKAN_HPP_INLINE std::string to_string( ExternalFenceFeatureFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ExternalFenceFeatureFlagBits::eExportable ) + result += "Exportable | "; + if ( value & ExternalFenceFeatureFlagBits::eImportable ) + result += "Importable | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using FenceImportFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( FenceImportFlagBits::eTemporary ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceImportFlags operator|( FenceImportFlagBits bit0, + FenceImportFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return FenceImportFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceImportFlags operator&( FenceImportFlagBits bit0, + FenceImportFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return FenceImportFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceImportFlags operator^( FenceImportFlagBits bit0, + FenceImportFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return FenceImportFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceImportFlags operator~( FenceImportFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( FenceImportFlags( bits ) ); + } + + using FenceImportFlagsKHR = FenceImportFlags; + + VULKAN_HPP_INLINE std::string to_string( FenceImportFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & FenceImportFlagBits::eTemporary ) + result += "Temporary | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using SemaphoreImportFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( SemaphoreImportFlagBits::eTemporary ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreImportFlags + operator|( SemaphoreImportFlagBits bit0, SemaphoreImportFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SemaphoreImportFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreImportFlags + operator&( SemaphoreImportFlagBits bit0, SemaphoreImportFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SemaphoreImportFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreImportFlags + operator^( SemaphoreImportFlagBits bit0, SemaphoreImportFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SemaphoreImportFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreImportFlags operator~( SemaphoreImportFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( SemaphoreImportFlags( bits ) ); + } + + using SemaphoreImportFlagsKHR = SemaphoreImportFlags; + + VULKAN_HPP_INLINE std::string to_string( SemaphoreImportFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & SemaphoreImportFlagBits::eTemporary ) + result += "Temporary | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using ExternalSemaphoreHandleTypeFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) | + VkFlags( ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32 ) | + VkFlags( ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt ) | + VkFlags( ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence ) | + VkFlags( ExternalSemaphoreHandleTypeFlagBits::eSyncFd ) +#if defined( VK_USE_PLATFORM_FUCHSIA ) + | VkFlags( ExternalSemaphoreHandleTypeFlagBits::eZirconEventFUCHSIA ) +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreHandleTypeFlags + operator|( ExternalSemaphoreHandleTypeFlagBits bit0, ExternalSemaphoreHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalSemaphoreHandleTypeFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreHandleTypeFlags + operator&( ExternalSemaphoreHandleTypeFlagBits bit0, ExternalSemaphoreHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalSemaphoreHandleTypeFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreHandleTypeFlags + operator^( ExternalSemaphoreHandleTypeFlagBits bit0, ExternalSemaphoreHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalSemaphoreHandleTypeFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreHandleTypeFlags + operator~( ExternalSemaphoreHandleTypeFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( ExternalSemaphoreHandleTypeFlags( bits ) ); + } + + using ExternalSemaphoreHandleTypeFlagsKHR = ExternalSemaphoreHandleTypeFlags; + + VULKAN_HPP_INLINE std::string to_string( ExternalSemaphoreHandleTypeFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) + result += "OpaqueFd | "; + if ( value & ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32 ) + result += "OpaqueWin32 | "; + if ( value & ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt ) + result += "OpaqueWin32Kmt | "; + if ( value & ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence ) + result += "D3D12Fence | "; + if ( value & ExternalSemaphoreHandleTypeFlagBits::eSyncFd ) + result += "SyncFd | "; +#if defined( VK_USE_PLATFORM_FUCHSIA ) + if ( value & ExternalSemaphoreHandleTypeFlagBits::eZirconEventFUCHSIA ) + result += "ZirconEventFUCHSIA | "; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using ExternalSemaphoreFeatureFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ExternalSemaphoreFeatureFlagBits::eExportable ) | + VkFlags( ExternalSemaphoreFeatureFlagBits::eImportable ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreFeatureFlags + operator|( ExternalSemaphoreFeatureFlagBits bit0, ExternalSemaphoreFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalSemaphoreFeatureFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreFeatureFlags + operator&( ExternalSemaphoreFeatureFlagBits bit0, ExternalSemaphoreFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalSemaphoreFeatureFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreFeatureFlags + operator^( ExternalSemaphoreFeatureFlagBits bit0, ExternalSemaphoreFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalSemaphoreFeatureFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreFeatureFlags + operator~( ExternalSemaphoreFeatureFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( ExternalSemaphoreFeatureFlags( bits ) ); + } + + using ExternalSemaphoreFeatureFlagsKHR = ExternalSemaphoreFeatureFlags; + + VULKAN_HPP_INLINE std::string to_string( ExternalSemaphoreFeatureFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ExternalSemaphoreFeatureFlagBits::eExportable ) + result += "Exportable | "; + if ( value & ExternalSemaphoreFeatureFlagBits::eImportable ) + result += "Importable | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + //=== VK_VERSION_1_2 === + + using DescriptorBindingFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( DescriptorBindingFlagBits::eUpdateAfterBind ) | + VkFlags( DescriptorBindingFlagBits::eUpdateUnusedWhilePending ) | + VkFlags( DescriptorBindingFlagBits::ePartiallyBound ) | + VkFlags( DescriptorBindingFlagBits::eVariableDescriptorCount ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorBindingFlags + operator|( DescriptorBindingFlagBits bit0, DescriptorBindingFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return DescriptorBindingFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorBindingFlags + operator&( DescriptorBindingFlagBits bit0, DescriptorBindingFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return DescriptorBindingFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorBindingFlags + operator^( DescriptorBindingFlagBits bit0, DescriptorBindingFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return DescriptorBindingFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorBindingFlags operator~( DescriptorBindingFlagBits bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( DescriptorBindingFlags( bits ) ); + } + + using DescriptorBindingFlagsEXT = DescriptorBindingFlags; + + VULKAN_HPP_INLINE std::string to_string( DescriptorBindingFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & DescriptorBindingFlagBits::eUpdateAfterBind ) + result += "UpdateAfterBind | "; + if ( value & DescriptorBindingFlagBits::eUpdateUnusedWhilePending ) + result += "UpdateUnusedWhilePending | "; + if ( value & DescriptorBindingFlagBits::ePartiallyBound ) + result += "PartiallyBound | "; + if ( value & DescriptorBindingFlagBits::eVariableDescriptorCount ) + result += "VariableDescriptorCount | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using ResolveModeFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ResolveModeFlagBits::eNone ) | VkFlags( ResolveModeFlagBits::eSampleZero ) | + VkFlags( ResolveModeFlagBits::eAverage ) | VkFlags( ResolveModeFlagBits::eMin ) | + VkFlags( ResolveModeFlagBits::eMax ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ResolveModeFlags operator|( ResolveModeFlagBits bit0, + ResolveModeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ResolveModeFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ResolveModeFlags operator&( ResolveModeFlagBits bit0, + ResolveModeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ResolveModeFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ResolveModeFlags operator^( ResolveModeFlagBits bit0, + ResolveModeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ResolveModeFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ResolveModeFlags operator~( ResolveModeFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( ResolveModeFlags( bits ) ); + } + + using ResolveModeFlagsKHR = ResolveModeFlags; + + VULKAN_HPP_INLINE std::string to_string( ResolveModeFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ResolveModeFlagBits::eSampleZero ) + result += "SampleZero | "; + if ( value & ResolveModeFlagBits::eAverage ) + result += "Average | "; + if ( value & ResolveModeFlagBits::eMin ) + result += "Min | "; + if ( value & ResolveModeFlagBits::eMax ) + result += "Max | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using SemaphoreWaitFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( SemaphoreWaitFlagBits::eAny ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreWaitFlags operator|( SemaphoreWaitFlagBits bit0, + SemaphoreWaitFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SemaphoreWaitFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreWaitFlags operator&( SemaphoreWaitFlagBits bit0, + SemaphoreWaitFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SemaphoreWaitFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreWaitFlags operator^( SemaphoreWaitFlagBits bit0, + SemaphoreWaitFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SemaphoreWaitFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreWaitFlags operator~( SemaphoreWaitFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( SemaphoreWaitFlags( bits ) ); + } + + using SemaphoreWaitFlagsKHR = SemaphoreWaitFlags; + + VULKAN_HPP_INLINE std::string to_string( SemaphoreWaitFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & SemaphoreWaitFlagBits::eAny ) + result += "Any | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + //=== VK_VERSION_1_3 === + + using PipelineCreationFeedbackFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( PipelineCreationFeedbackFlagBits::eValid ) | + VkFlags( PipelineCreationFeedbackFlagBits::eApplicationPipelineCacheHit ) | + VkFlags( PipelineCreationFeedbackFlagBits::eBasePipelineAcceleration ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackFlags + operator|( PipelineCreationFeedbackFlagBits bit0, PipelineCreationFeedbackFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineCreationFeedbackFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackFlags + operator&( PipelineCreationFeedbackFlagBits bit0, PipelineCreationFeedbackFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineCreationFeedbackFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackFlags + operator^( PipelineCreationFeedbackFlagBits bit0, PipelineCreationFeedbackFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineCreationFeedbackFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackFlags + operator~( PipelineCreationFeedbackFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( PipelineCreationFeedbackFlags( bits ) ); + } + + using PipelineCreationFeedbackFlagsEXT = PipelineCreationFeedbackFlags; + + VULKAN_HPP_INLINE std::string to_string( PipelineCreationFeedbackFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & PipelineCreationFeedbackFlagBits::eValid ) + result += "Valid | "; + if ( value & PipelineCreationFeedbackFlagBits::eApplicationPipelineCacheHit ) + result += "ApplicationPipelineCacheHit | "; + if ( value & PipelineCreationFeedbackFlagBits::eBasePipelineAcceleration ) + result += "BasePipelineAcceleration | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using ToolPurposeFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ToolPurposeFlagBits::eValidation ) | VkFlags( ToolPurposeFlagBits::eProfiling ) | + VkFlags( ToolPurposeFlagBits::eTracing ) | VkFlags( ToolPurposeFlagBits::eAdditionalFeatures ) | + VkFlags( ToolPurposeFlagBits::eModifyingFeatures ) | + VkFlags( ToolPurposeFlagBits::eDebugReportingEXT ) | VkFlags( ToolPurposeFlagBits::eDebugMarkersEXT ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ToolPurposeFlags operator|( ToolPurposeFlagBits bit0, + ToolPurposeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ToolPurposeFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ToolPurposeFlags operator&( ToolPurposeFlagBits bit0, + ToolPurposeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ToolPurposeFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ToolPurposeFlags operator^( ToolPurposeFlagBits bit0, + ToolPurposeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return ToolPurposeFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ToolPurposeFlags operator~( ToolPurposeFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( ToolPurposeFlags( bits ) ); + } + + using ToolPurposeFlagsEXT = ToolPurposeFlags; + + VULKAN_HPP_INLINE std::string to_string( ToolPurposeFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ToolPurposeFlagBits::eValidation ) + result += "Validation | "; + if ( value & ToolPurposeFlagBits::eProfiling ) + result += "Profiling | "; + if ( value & ToolPurposeFlagBits::eTracing ) + result += "Tracing | "; + if ( value & ToolPurposeFlagBits::eAdditionalFeatures ) + result += "AdditionalFeatures | "; + if ( value & ToolPurposeFlagBits::eModifyingFeatures ) + result += "ModifyingFeatures | "; + if ( value & ToolPurposeFlagBits::eDebugReportingEXT ) + result += "DebugReportingEXT | "; + if ( value & ToolPurposeFlagBits::eDebugMarkersEXT ) + result += "DebugMarkersEXT | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using PrivateDataSlotCreateFlags = Flags; + + using PrivateDataSlotCreateFlagsEXT = PrivateDataSlotCreateFlags; + + VULKAN_HPP_INLINE std::string to_string( PrivateDataSlotCreateFlags ) + { + return "{}"; + } + + using PipelineStageFlags2 = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags64 + { + allFlags = + VkFlags64( PipelineStageFlagBits2::eNone ) | VkFlags64( PipelineStageFlagBits2::eTopOfPipe ) | + VkFlags64( PipelineStageFlagBits2::eDrawIndirect ) | VkFlags64( PipelineStageFlagBits2::eVertexInput ) | + VkFlags64( PipelineStageFlagBits2::eVertexShader ) | + VkFlags64( PipelineStageFlagBits2::eTessellationControlShader ) | + VkFlags64( PipelineStageFlagBits2::eTessellationEvaluationShader ) | + VkFlags64( PipelineStageFlagBits2::eGeometryShader ) | VkFlags64( PipelineStageFlagBits2::eFragmentShader ) | + VkFlags64( PipelineStageFlagBits2::eEarlyFragmentTests ) | + VkFlags64( PipelineStageFlagBits2::eLateFragmentTests ) | + VkFlags64( PipelineStageFlagBits2::eColorAttachmentOutput ) | + VkFlags64( PipelineStageFlagBits2::eComputeShader ) | VkFlags64( PipelineStageFlagBits2::eAllTransfer ) | + VkFlags64( PipelineStageFlagBits2::eBottomOfPipe ) | VkFlags64( PipelineStageFlagBits2::eHost ) | + VkFlags64( PipelineStageFlagBits2::eAllGraphics ) | VkFlags64( PipelineStageFlagBits2::eAllCommands ) | + VkFlags64( PipelineStageFlagBits2::eCopy ) | VkFlags64( PipelineStageFlagBits2::eResolve ) | + VkFlags64( PipelineStageFlagBits2::eBlit ) | VkFlags64( PipelineStageFlagBits2::eClear ) | + VkFlags64( PipelineStageFlagBits2::eIndexInput ) | VkFlags64( PipelineStageFlagBits2::eVertexAttributeInput ) | + VkFlags64( PipelineStageFlagBits2::ePreRasterizationShaders ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | VkFlags64( PipelineStageFlagBits2::eVideoDecodeKHR ) | VkFlags64( PipelineStageFlagBits2::eVideoEncodeKHR ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + | VkFlags64( PipelineStageFlagBits2::eTransformFeedbackEXT ) | + VkFlags64( PipelineStageFlagBits2::eConditionalRenderingEXT ) | + VkFlags64( PipelineStageFlagBits2::eCommandPreprocessNV ) | + VkFlags64( PipelineStageFlagBits2::eFragmentShadingRateAttachmentKHR ) | + VkFlags64( PipelineStageFlagBits2::eAccelerationStructureBuildKHR ) | + VkFlags64( PipelineStageFlagBits2::eRayTracingShaderKHR ) | + VkFlags64( PipelineStageFlagBits2::eFragmentDensityProcessEXT ) | + VkFlags64( PipelineStageFlagBits2::eTaskShaderNV ) | VkFlags64( PipelineStageFlagBits2::eMeshShaderNV ) | + VkFlags64( PipelineStageFlagBits2::eSubpassShadingHUAWEI ) | + VkFlags64( PipelineStageFlagBits2::eInvocationMaskHUAWEI ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags2 + operator|( PipelineStageFlagBits2 bit0, PipelineStageFlagBits2 bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineStageFlags2( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags2 + operator&( PipelineStageFlagBits2 bit0, PipelineStageFlagBits2 bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineStageFlags2( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags2 + operator^( PipelineStageFlagBits2 bit0, PipelineStageFlagBits2 bit1 ) VULKAN_HPP_NOEXCEPT + { + return PipelineStageFlags2( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags2 operator~( PipelineStageFlagBits2 bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( PipelineStageFlags2( bits ) ); + } + + using PipelineStageFlags2KHR = PipelineStageFlags2; + + VULKAN_HPP_INLINE std::string to_string( PipelineStageFlags2 value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & PipelineStageFlagBits2::eTopOfPipe ) + result += "TopOfPipe | "; + if ( value & PipelineStageFlagBits2::eDrawIndirect ) + result += "DrawIndirect | "; + if ( value & PipelineStageFlagBits2::eVertexInput ) + result += "VertexInput | "; + if ( value & PipelineStageFlagBits2::eVertexShader ) + result += "VertexShader | "; + if ( value & PipelineStageFlagBits2::eTessellationControlShader ) + result += "TessellationControlShader | "; + if ( value & PipelineStageFlagBits2::eTessellationEvaluationShader ) + result += "TessellationEvaluationShader | "; + if ( value & PipelineStageFlagBits2::eGeometryShader ) + result += "GeometryShader | "; + if ( value & PipelineStageFlagBits2::eFragmentShader ) + result += "FragmentShader | "; + if ( value & PipelineStageFlagBits2::eEarlyFragmentTests ) + result += "EarlyFragmentTests | "; + if ( value & PipelineStageFlagBits2::eLateFragmentTests ) + result += "LateFragmentTests | "; + if ( value & PipelineStageFlagBits2::eColorAttachmentOutput ) + result += "ColorAttachmentOutput | "; + if ( value & PipelineStageFlagBits2::eComputeShader ) + result += "ComputeShader | "; + if ( value & PipelineStageFlagBits2::eAllTransfer ) + result += "AllTransfer | "; + if ( value & PipelineStageFlagBits2::eBottomOfPipe ) + result += "BottomOfPipe | "; + if ( value & PipelineStageFlagBits2::eHost ) + result += "Host | "; + if ( value & PipelineStageFlagBits2::eAllGraphics ) + result += "AllGraphics | "; + if ( value & PipelineStageFlagBits2::eAllCommands ) + result += "AllCommands | "; + if ( value & PipelineStageFlagBits2::eCopy ) + result += "Copy | "; + if ( value & PipelineStageFlagBits2::eResolve ) + result += "Resolve | "; + if ( value & PipelineStageFlagBits2::eBlit ) + result += "Blit | "; + if ( value & PipelineStageFlagBits2::eClear ) + result += "Clear | "; + if ( value & PipelineStageFlagBits2::eIndexInput ) + result += "IndexInput | "; + if ( value & PipelineStageFlagBits2::eVertexAttributeInput ) + result += "VertexAttributeInput | "; + if ( value & PipelineStageFlagBits2::ePreRasterizationShaders ) + result += "PreRasterizationShaders | "; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & PipelineStageFlagBits2::eVideoDecodeKHR ) + result += "VideoDecodeKHR | "; + if ( value & PipelineStageFlagBits2::eVideoEncodeKHR ) + result += "VideoEncodeKHR | "; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + if ( value & PipelineStageFlagBits2::eTransformFeedbackEXT ) + result += "TransformFeedbackEXT | "; + if ( value & PipelineStageFlagBits2::eConditionalRenderingEXT ) + result += "ConditionalRenderingEXT | "; + if ( value & PipelineStageFlagBits2::eCommandPreprocessNV ) + result += "CommandPreprocessNV | "; + if ( value & PipelineStageFlagBits2::eFragmentShadingRateAttachmentKHR ) + result += "FragmentShadingRateAttachmentKHR | "; + if ( value & PipelineStageFlagBits2::eAccelerationStructureBuildKHR ) + result += "AccelerationStructureBuildKHR | "; + if ( value & PipelineStageFlagBits2::eRayTracingShaderKHR ) + result += "RayTracingShaderKHR | "; + if ( value & PipelineStageFlagBits2::eFragmentDensityProcessEXT ) + result += "FragmentDensityProcessEXT | "; + if ( value & PipelineStageFlagBits2::eTaskShaderNV ) + result += "TaskShaderNV | "; + if ( value & PipelineStageFlagBits2::eMeshShaderNV ) + result += "MeshShaderNV | "; + if ( value & PipelineStageFlagBits2::eSubpassShadingHUAWEI ) + result += "SubpassShadingHUAWEI | "; + if ( value & PipelineStageFlagBits2::eInvocationMaskHUAWEI ) + result += "InvocationMaskHUAWEI | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using AccessFlags2 = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags64 + { + allFlags = + VkFlags64( AccessFlagBits2::eNone ) | VkFlags64( AccessFlagBits2::eIndirectCommandRead ) | + VkFlags64( AccessFlagBits2::eIndexRead ) | VkFlags64( AccessFlagBits2::eVertexAttributeRead ) | + VkFlags64( AccessFlagBits2::eUniformRead ) | VkFlags64( AccessFlagBits2::eInputAttachmentRead ) | + VkFlags64( AccessFlagBits2::eShaderRead ) | VkFlags64( AccessFlagBits2::eShaderWrite ) | + VkFlags64( AccessFlagBits2::eColorAttachmentRead ) | VkFlags64( AccessFlagBits2::eColorAttachmentWrite ) | + VkFlags64( AccessFlagBits2::eDepthStencilAttachmentRead ) | + VkFlags64( AccessFlagBits2::eDepthStencilAttachmentWrite ) | VkFlags64( AccessFlagBits2::eTransferRead ) | + VkFlags64( AccessFlagBits2::eTransferWrite ) | VkFlags64( AccessFlagBits2::eHostRead ) | + VkFlags64( AccessFlagBits2::eHostWrite ) | VkFlags64( AccessFlagBits2::eMemoryRead ) | + VkFlags64( AccessFlagBits2::eMemoryWrite ) | VkFlags64( AccessFlagBits2::eShaderSampledRead ) | + VkFlags64( AccessFlagBits2::eShaderStorageRead ) | VkFlags64( AccessFlagBits2::eShaderStorageWrite ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | VkFlags64( AccessFlagBits2::eVideoDecodeReadKHR ) | VkFlags64( AccessFlagBits2::eVideoDecodeWriteKHR ) | + VkFlags64( AccessFlagBits2::eVideoEncodeReadKHR ) | VkFlags64( AccessFlagBits2::eVideoEncodeWriteKHR ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + | VkFlags64( AccessFlagBits2::eTransformFeedbackWriteEXT ) | + VkFlags64( AccessFlagBits2::eTransformFeedbackCounterReadEXT ) | + VkFlags64( AccessFlagBits2::eTransformFeedbackCounterWriteEXT ) | + VkFlags64( AccessFlagBits2::eConditionalRenderingReadEXT ) | + VkFlags64( AccessFlagBits2::eCommandPreprocessReadNV ) | + VkFlags64( AccessFlagBits2::eCommandPreprocessWriteNV ) | + VkFlags64( AccessFlagBits2::eFragmentShadingRateAttachmentReadKHR ) | + VkFlags64( AccessFlagBits2::eAccelerationStructureReadKHR ) | + VkFlags64( AccessFlagBits2::eAccelerationStructureWriteKHR ) | + VkFlags64( AccessFlagBits2::eFragmentDensityMapReadEXT ) | + VkFlags64( AccessFlagBits2::eColorAttachmentReadNoncoherentEXT ) | + VkFlags64( AccessFlagBits2::eInvocationMaskReadHUAWEI ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags2 operator|( AccessFlagBits2 bit0, + AccessFlagBits2 bit1 ) VULKAN_HPP_NOEXCEPT + { + return AccessFlags2( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags2 operator&( AccessFlagBits2 bit0, + AccessFlagBits2 bit1 ) VULKAN_HPP_NOEXCEPT + { + return AccessFlags2( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags2 operator^( AccessFlagBits2 bit0, + AccessFlagBits2 bit1 ) VULKAN_HPP_NOEXCEPT + { + return AccessFlags2( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags2 operator~( AccessFlagBits2 bits ) VULKAN_HPP_NOEXCEPT + { + return ~( AccessFlags2( bits ) ); + } + + using AccessFlags2KHR = AccessFlags2; + + VULKAN_HPP_INLINE std::string to_string( AccessFlags2 value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & AccessFlagBits2::eIndirectCommandRead ) + result += "IndirectCommandRead | "; + if ( value & AccessFlagBits2::eIndexRead ) + result += "IndexRead | "; + if ( value & AccessFlagBits2::eVertexAttributeRead ) + result += "VertexAttributeRead | "; + if ( value & AccessFlagBits2::eUniformRead ) + result += "UniformRead | "; + if ( value & AccessFlagBits2::eInputAttachmentRead ) + result += "InputAttachmentRead | "; + if ( value & AccessFlagBits2::eShaderRead ) + result += "ShaderRead | "; + if ( value & AccessFlagBits2::eShaderWrite ) + result += "ShaderWrite | "; + if ( value & AccessFlagBits2::eColorAttachmentRead ) + result += "ColorAttachmentRead | "; + if ( value & AccessFlagBits2::eColorAttachmentWrite ) + result += "ColorAttachmentWrite | "; + if ( value & AccessFlagBits2::eDepthStencilAttachmentRead ) + result += "DepthStencilAttachmentRead | "; + if ( value & AccessFlagBits2::eDepthStencilAttachmentWrite ) + result += "DepthStencilAttachmentWrite | "; + if ( value & AccessFlagBits2::eTransferRead ) + result += "TransferRead | "; + if ( value & AccessFlagBits2::eTransferWrite ) + result += "TransferWrite | "; + if ( value & AccessFlagBits2::eHostRead ) + result += "HostRead | "; + if ( value & AccessFlagBits2::eHostWrite ) + result += "HostWrite | "; + if ( value & AccessFlagBits2::eMemoryRead ) + result += "MemoryRead | "; + if ( value & AccessFlagBits2::eMemoryWrite ) + result += "MemoryWrite | "; + if ( value & AccessFlagBits2::eShaderSampledRead ) + result += "ShaderSampledRead | "; + if ( value & AccessFlagBits2::eShaderStorageRead ) + result += "ShaderStorageRead | "; + if ( value & AccessFlagBits2::eShaderStorageWrite ) + result += "ShaderStorageWrite | "; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & AccessFlagBits2::eVideoDecodeReadKHR ) + result += "VideoDecodeReadKHR | "; + if ( value & AccessFlagBits2::eVideoDecodeWriteKHR ) + result += "VideoDecodeWriteKHR | "; + if ( value & AccessFlagBits2::eVideoEncodeReadKHR ) + result += "VideoEncodeReadKHR | "; + if ( value & AccessFlagBits2::eVideoEncodeWriteKHR ) + result += "VideoEncodeWriteKHR | "; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + if ( value & AccessFlagBits2::eTransformFeedbackWriteEXT ) + result += "TransformFeedbackWriteEXT | "; + if ( value & AccessFlagBits2::eTransformFeedbackCounterReadEXT ) + result += "TransformFeedbackCounterReadEXT | "; + if ( value & AccessFlagBits2::eTransformFeedbackCounterWriteEXT ) + result += "TransformFeedbackCounterWriteEXT | "; + if ( value & AccessFlagBits2::eConditionalRenderingReadEXT ) + result += "ConditionalRenderingReadEXT | "; + if ( value & AccessFlagBits2::eCommandPreprocessReadNV ) + result += "CommandPreprocessReadNV | "; + if ( value & AccessFlagBits2::eCommandPreprocessWriteNV ) + result += "CommandPreprocessWriteNV | "; + if ( value & AccessFlagBits2::eFragmentShadingRateAttachmentReadKHR ) + result += "FragmentShadingRateAttachmentReadKHR | "; + if ( value & AccessFlagBits2::eAccelerationStructureReadKHR ) + result += "AccelerationStructureReadKHR | "; + if ( value & AccessFlagBits2::eAccelerationStructureWriteKHR ) + result += "AccelerationStructureWriteKHR | "; + if ( value & AccessFlagBits2::eFragmentDensityMapReadEXT ) + result += "FragmentDensityMapReadEXT | "; + if ( value & AccessFlagBits2::eColorAttachmentReadNoncoherentEXT ) + result += "ColorAttachmentReadNoncoherentEXT | "; + if ( value & AccessFlagBits2::eInvocationMaskReadHUAWEI ) + result += "InvocationMaskReadHUAWEI | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using SubmitFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( SubmitFlagBits::eProtected ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubmitFlags operator|( SubmitFlagBits bit0, + SubmitFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SubmitFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubmitFlags operator&( SubmitFlagBits bit0, + SubmitFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SubmitFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubmitFlags operator^( SubmitFlagBits bit0, + SubmitFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return SubmitFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubmitFlags operator~( SubmitFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( SubmitFlags( bits ) ); + } + + using SubmitFlagsKHR = SubmitFlags; + + VULKAN_HPP_INLINE std::string to_string( SubmitFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & SubmitFlagBits::eProtected ) + result += "Protected | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using RenderingFlags = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( RenderingFlagBits::eContentsSecondaryCommandBuffers ) | + VkFlags( RenderingFlagBits::eSuspending ) | VkFlags( RenderingFlagBits::eResuming ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR RenderingFlags operator|( RenderingFlagBits bit0, + RenderingFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return RenderingFlags( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR RenderingFlags operator&( RenderingFlagBits bit0, + RenderingFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return RenderingFlags( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR RenderingFlags operator^( RenderingFlagBits bit0, + RenderingFlagBits bit1 ) VULKAN_HPP_NOEXCEPT + { + return RenderingFlags( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR RenderingFlags operator~( RenderingFlagBits bits ) VULKAN_HPP_NOEXCEPT + { + return ~( RenderingFlags( bits ) ); + } + + using RenderingFlagsKHR = RenderingFlags; + + VULKAN_HPP_INLINE std::string to_string( RenderingFlags value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & RenderingFlagBits::eContentsSecondaryCommandBuffers ) + result += "ContentsSecondaryCommandBuffers | "; + if ( value & RenderingFlagBits::eSuspending ) + result += "Suspending | "; + if ( value & RenderingFlagBits::eResuming ) + result += "Resuming | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using FormatFeatureFlags2 = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags64 + { + allFlags = + VkFlags64( FormatFeatureFlagBits2::eSampledImage ) | VkFlags64( FormatFeatureFlagBits2::eStorageImage ) | + VkFlags64( FormatFeatureFlagBits2::eStorageImageAtomic ) | + VkFlags64( FormatFeatureFlagBits2::eUniformTexelBuffer ) | + VkFlags64( FormatFeatureFlagBits2::eStorageTexelBuffer ) | + VkFlags64( FormatFeatureFlagBits2::eStorageTexelBufferAtomic ) | + VkFlags64( FormatFeatureFlagBits2::eVertexBuffer ) | VkFlags64( FormatFeatureFlagBits2::eColorAttachment ) | + VkFlags64( FormatFeatureFlagBits2::eColorAttachmentBlend ) | + VkFlags64( FormatFeatureFlagBits2::eDepthStencilAttachment ) | VkFlags64( FormatFeatureFlagBits2::eBlitSrc ) | + VkFlags64( FormatFeatureFlagBits2::eBlitDst ) | VkFlags64( FormatFeatureFlagBits2::eSampledImageFilterLinear ) | + VkFlags64( FormatFeatureFlagBits2::eSampledImageFilterCubic ) | + VkFlags64( FormatFeatureFlagBits2::eTransferSrc ) | VkFlags64( FormatFeatureFlagBits2::eTransferDst ) | + VkFlags64( FormatFeatureFlagBits2::eSampledImageFilterMinmax ) | + VkFlags64( FormatFeatureFlagBits2::eMidpointChromaSamples ) | + VkFlags64( FormatFeatureFlagBits2::eSampledImageYcbcrConversionLinearFilter ) | + VkFlags64( FormatFeatureFlagBits2::eSampledImageYcbcrConversionSeparateReconstructionFilter ) | + VkFlags64( FormatFeatureFlagBits2::eSampledImageYcbcrConversionChromaReconstructionExplicit ) | + VkFlags64( FormatFeatureFlagBits2::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable ) | + VkFlags64( FormatFeatureFlagBits2::eDisjoint ) | VkFlags64( FormatFeatureFlagBits2::eCositedChromaSamples ) | + VkFlags64( FormatFeatureFlagBits2::eStorageReadWithoutFormat ) | + VkFlags64( FormatFeatureFlagBits2::eStorageWriteWithoutFormat ) | + VkFlags64( FormatFeatureFlagBits2::eSampledImageDepthComparison ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | VkFlags64( FormatFeatureFlagBits2::eVideoDecodeOutputKHR ) | + VkFlags64( FormatFeatureFlagBits2::eVideoDecodeDpbKHR ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + | VkFlags64( FormatFeatureFlagBits2::eAccelerationStructureVertexBufferKHR ) | + VkFlags64( FormatFeatureFlagBits2::eFragmentDensityMapEXT ) | + VkFlags64( FormatFeatureFlagBits2::eFragmentShadingRateAttachmentKHR ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | VkFlags64( FormatFeatureFlagBits2::eVideoEncodeInputKHR ) | + VkFlags64( FormatFeatureFlagBits2::eVideoEncodeDpbKHR ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + | VkFlags64( FormatFeatureFlagBits2::eLinearColorAttachmentNV ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FormatFeatureFlags2 + operator|( FormatFeatureFlagBits2 bit0, FormatFeatureFlagBits2 bit1 ) VULKAN_HPP_NOEXCEPT + { + return FormatFeatureFlags2( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FormatFeatureFlags2 + operator&( FormatFeatureFlagBits2 bit0, FormatFeatureFlagBits2 bit1 ) VULKAN_HPP_NOEXCEPT + { + return FormatFeatureFlags2( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FormatFeatureFlags2 + operator^( FormatFeatureFlagBits2 bit0, FormatFeatureFlagBits2 bit1 ) VULKAN_HPP_NOEXCEPT + { + return FormatFeatureFlags2( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FormatFeatureFlags2 operator~( FormatFeatureFlagBits2 bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( FormatFeatureFlags2( bits ) ); + } + + using FormatFeatureFlags2KHR = FormatFeatureFlags2; + + VULKAN_HPP_INLINE std::string to_string( FormatFeatureFlags2 value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & FormatFeatureFlagBits2::eSampledImage ) + result += "SampledImage | "; + if ( value & FormatFeatureFlagBits2::eStorageImage ) + result += "StorageImage | "; + if ( value & FormatFeatureFlagBits2::eStorageImageAtomic ) + result += "StorageImageAtomic | "; + if ( value & FormatFeatureFlagBits2::eUniformTexelBuffer ) + result += "UniformTexelBuffer | "; + if ( value & FormatFeatureFlagBits2::eStorageTexelBuffer ) + result += "StorageTexelBuffer | "; + if ( value & FormatFeatureFlagBits2::eStorageTexelBufferAtomic ) + result += "StorageTexelBufferAtomic | "; + if ( value & FormatFeatureFlagBits2::eVertexBuffer ) + result += "VertexBuffer | "; + if ( value & FormatFeatureFlagBits2::eColorAttachment ) + result += "ColorAttachment | "; + if ( value & FormatFeatureFlagBits2::eColorAttachmentBlend ) + result += "ColorAttachmentBlend | "; + if ( value & FormatFeatureFlagBits2::eDepthStencilAttachment ) + result += "DepthStencilAttachment | "; + if ( value & FormatFeatureFlagBits2::eBlitSrc ) + result += "BlitSrc | "; + if ( value & FormatFeatureFlagBits2::eBlitDst ) + result += "BlitDst | "; + if ( value & FormatFeatureFlagBits2::eSampledImageFilterLinear ) + result += "SampledImageFilterLinear | "; + if ( value & FormatFeatureFlagBits2::eSampledImageFilterCubic ) + result += "SampledImageFilterCubic | "; + if ( value & FormatFeatureFlagBits2::eTransferSrc ) + result += "TransferSrc | "; + if ( value & FormatFeatureFlagBits2::eTransferDst ) + result += "TransferDst | "; + if ( value & FormatFeatureFlagBits2::eSampledImageFilterMinmax ) + result += "SampledImageFilterMinmax | "; + if ( value & FormatFeatureFlagBits2::eMidpointChromaSamples ) + result += "MidpointChromaSamples | "; + if ( value & FormatFeatureFlagBits2::eSampledImageYcbcrConversionLinearFilter ) + result += "SampledImageYcbcrConversionLinearFilter | "; + if ( value & FormatFeatureFlagBits2::eSampledImageYcbcrConversionSeparateReconstructionFilter ) + result += "SampledImageYcbcrConversionSeparateReconstructionFilter | "; + if ( value & FormatFeatureFlagBits2::eSampledImageYcbcrConversionChromaReconstructionExplicit ) + result += "SampledImageYcbcrConversionChromaReconstructionExplicit | "; + if ( value & FormatFeatureFlagBits2::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable ) + result += "SampledImageYcbcrConversionChromaReconstructionExplicitForceable | "; + if ( value & FormatFeatureFlagBits2::eDisjoint ) + result += "Disjoint | "; + if ( value & FormatFeatureFlagBits2::eCositedChromaSamples ) + result += "CositedChromaSamples | "; + if ( value & FormatFeatureFlagBits2::eStorageReadWithoutFormat ) + result += "StorageReadWithoutFormat | "; + if ( value & FormatFeatureFlagBits2::eStorageWriteWithoutFormat ) + result += "StorageWriteWithoutFormat | "; + if ( value & FormatFeatureFlagBits2::eSampledImageDepthComparison ) + result += "SampledImageDepthComparison | "; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & FormatFeatureFlagBits2::eVideoDecodeOutputKHR ) + result += "VideoDecodeOutputKHR | "; + if ( value & FormatFeatureFlagBits2::eVideoDecodeDpbKHR ) + result += "VideoDecodeDpbKHR | "; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + if ( value & FormatFeatureFlagBits2::eAccelerationStructureVertexBufferKHR ) + result += "AccelerationStructureVertexBufferKHR | "; + if ( value & FormatFeatureFlagBits2::eFragmentDensityMapEXT ) + result += "FragmentDensityMapEXT | "; + if ( value & FormatFeatureFlagBits2::eFragmentShadingRateAttachmentKHR ) + result += "FragmentShadingRateAttachmentKHR | "; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & FormatFeatureFlagBits2::eVideoEncodeInputKHR ) + result += "VideoEncodeInputKHR | "; + if ( value & FormatFeatureFlagBits2::eVideoEncodeDpbKHR ) + result += "VideoEncodeDpbKHR | "; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + if ( value & FormatFeatureFlagBits2::eLinearColorAttachmentNV ) + result += "LinearColorAttachmentNV | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + //=== VK_KHR_surface === + + using CompositeAlphaFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( CompositeAlphaFlagBitsKHR::eOpaque ) | VkFlags( CompositeAlphaFlagBitsKHR::ePreMultiplied ) | + VkFlags( CompositeAlphaFlagBitsKHR::ePostMultiplied ) | VkFlags( CompositeAlphaFlagBitsKHR::eInherit ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CompositeAlphaFlagsKHR + operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return CompositeAlphaFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CompositeAlphaFlagsKHR + operator&( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return CompositeAlphaFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CompositeAlphaFlagsKHR + operator^( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return CompositeAlphaFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( CompositeAlphaFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( CompositeAlphaFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & CompositeAlphaFlagBitsKHR::eOpaque ) + result += "Opaque | "; + if ( value & CompositeAlphaFlagBitsKHR::ePreMultiplied ) + result += "PreMultiplied | "; + if ( value & CompositeAlphaFlagBitsKHR::ePostMultiplied ) + result += "PostMultiplied | "; + if ( value & CompositeAlphaFlagBitsKHR::eInherit ) + result += "Inherit | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + //=== VK_KHR_swapchain === + + using SwapchainCreateFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions ) | + VkFlags( SwapchainCreateFlagBitsKHR::eProtected ) | + VkFlags( SwapchainCreateFlagBitsKHR::eMutableFormat ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SwapchainCreateFlagsKHR + operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return SwapchainCreateFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SwapchainCreateFlagsKHR + operator&( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return SwapchainCreateFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SwapchainCreateFlagsKHR + operator^( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return SwapchainCreateFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( SwapchainCreateFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( SwapchainCreateFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions ) + result += "SplitInstanceBindRegions | "; + if ( value & SwapchainCreateFlagBitsKHR::eProtected ) + result += "Protected | "; + if ( value & SwapchainCreateFlagBitsKHR::eMutableFormat ) + result += "MutableFormat | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using DeviceGroupPresentModeFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( DeviceGroupPresentModeFlagBitsKHR::eLocal ) | + VkFlags( DeviceGroupPresentModeFlagBitsKHR::eRemote ) | + VkFlags( DeviceGroupPresentModeFlagBitsKHR::eSum ) | + VkFlags( DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceGroupPresentModeFlagsKHR + operator|( DeviceGroupPresentModeFlagBitsKHR bit0, DeviceGroupPresentModeFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return DeviceGroupPresentModeFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceGroupPresentModeFlagsKHR + operator&( DeviceGroupPresentModeFlagBitsKHR bit0, DeviceGroupPresentModeFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return DeviceGroupPresentModeFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceGroupPresentModeFlagsKHR + operator^( DeviceGroupPresentModeFlagBitsKHR bit0, DeviceGroupPresentModeFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return DeviceGroupPresentModeFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceGroupPresentModeFlagsKHR + operator~( DeviceGroupPresentModeFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT + { + return ~( DeviceGroupPresentModeFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( DeviceGroupPresentModeFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & DeviceGroupPresentModeFlagBitsKHR::eLocal ) + result += "Local | "; + if ( value & DeviceGroupPresentModeFlagBitsKHR::eRemote ) + result += "Remote | "; + if ( value & DeviceGroupPresentModeFlagBitsKHR::eSum ) + result += "Sum | "; + if ( value & DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice ) + result += "LocalMultiDevice | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + //=== VK_KHR_display === + + using DisplayModeCreateFlagsKHR = Flags; + + VULKAN_HPP_INLINE std::string to_string( DisplayModeCreateFlagsKHR ) + { + return "{}"; + } + + using DisplayPlaneAlphaFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( DisplayPlaneAlphaFlagBitsKHR::eOpaque ) | VkFlags( DisplayPlaneAlphaFlagBitsKHR::eGlobal ) | + VkFlags( DisplayPlaneAlphaFlagBitsKHR::ePerPixel ) | + VkFlags( DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DisplayPlaneAlphaFlagsKHR + operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DisplayPlaneAlphaFlagsKHR + operator&( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return DisplayPlaneAlphaFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DisplayPlaneAlphaFlagsKHR + operator^( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return DisplayPlaneAlphaFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( DisplayPlaneAlphaFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( DisplayPlaneAlphaFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & DisplayPlaneAlphaFlagBitsKHR::eOpaque ) + result += "Opaque | "; + if ( value & DisplayPlaneAlphaFlagBitsKHR::eGlobal ) + result += "Global | "; + if ( value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel ) + result += "PerPixel | "; + if ( value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied ) + result += "PerPixelPremultiplied | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using DisplaySurfaceCreateFlagsKHR = Flags; + + VULKAN_HPP_INLINE std::string to_string( DisplaySurfaceCreateFlagsKHR ) + { + return "{}"; + } + + using SurfaceTransformFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( SurfaceTransformFlagBitsKHR::eIdentity ) | VkFlags( SurfaceTransformFlagBitsKHR::eRotate90 ) | + VkFlags( SurfaceTransformFlagBitsKHR::eRotate180 ) | + VkFlags( SurfaceTransformFlagBitsKHR::eRotate270 ) | + VkFlags( SurfaceTransformFlagBitsKHR::eHorizontalMirror ) | + VkFlags( SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90 ) | + VkFlags( SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180 ) | + VkFlags( SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270 ) | + VkFlags( SurfaceTransformFlagBitsKHR::eInherit ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceTransformFlagsKHR + operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return SurfaceTransformFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceTransformFlagsKHR + operator&( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return SurfaceTransformFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceTransformFlagsKHR + operator^( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return SurfaceTransformFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( SurfaceTransformFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( SurfaceTransformFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & SurfaceTransformFlagBitsKHR::eIdentity ) + result += "Identity | "; + if ( value & SurfaceTransformFlagBitsKHR::eRotate90 ) + result += "Rotate90 | "; + if ( value & SurfaceTransformFlagBitsKHR::eRotate180 ) + result += "Rotate180 | "; + if ( value & SurfaceTransformFlagBitsKHR::eRotate270 ) + result += "Rotate270 | "; + if ( value & SurfaceTransformFlagBitsKHR::eHorizontalMirror ) + result += "HorizontalMirror | "; + if ( value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90 ) + result += "HorizontalMirrorRotate90 | "; + if ( value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180 ) + result += "HorizontalMirrorRotate180 | "; + if ( value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270 ) + result += "HorizontalMirrorRotate270 | "; + if ( value & SurfaceTransformFlagBitsKHR::eInherit ) + result += "Inherit | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + using XlibSurfaceCreateFlagsKHR = Flags; + + VULKAN_HPP_INLINE std::string to_string( XlibSurfaceCreateFlagsKHR ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + using XcbSurfaceCreateFlagsKHR = Flags; + + VULKAN_HPP_INLINE std::string to_string( XcbSurfaceCreateFlagsKHR ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + using WaylandSurfaceCreateFlagsKHR = Flags; + + VULKAN_HPP_INLINE std::string to_string( WaylandSurfaceCreateFlagsKHR ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + + using AndroidSurfaceCreateFlagsKHR = Flags; + + VULKAN_HPP_INLINE std::string to_string( AndroidSurfaceCreateFlagsKHR ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + using Win32SurfaceCreateFlagsKHR = Flags; + + VULKAN_HPP_INLINE std::string to_string( Win32SurfaceCreateFlagsKHR ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + + using DebugReportFlagsEXT = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( DebugReportFlagBitsEXT::eInformation ) | VkFlags( DebugReportFlagBitsEXT::eWarning ) | + VkFlags( DebugReportFlagBitsEXT::ePerformanceWarning ) | VkFlags( DebugReportFlagBitsEXT::eError ) | + VkFlags( DebugReportFlagBitsEXT::eDebug ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugReportFlagsEXT + operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return DebugReportFlagsEXT( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugReportFlagsEXT + operator&( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return DebugReportFlagsEXT( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugReportFlagsEXT + operator^( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return DebugReportFlagsEXT( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( DebugReportFlagsEXT( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( DebugReportFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & DebugReportFlagBitsEXT::eInformation ) + result += "Information | "; + if ( value & DebugReportFlagBitsEXT::eWarning ) + result += "Warning | "; + if ( value & DebugReportFlagBitsEXT::ePerformanceWarning ) + result += "PerformanceWarning | "; + if ( value & DebugReportFlagBitsEXT::eError ) + result += "Error | "; + if ( value & DebugReportFlagBitsEXT::eDebug ) + result += "Debug | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + + using VideoCodecOperationFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoCodecOperationFlagBitsKHR::eInvalid ) +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + | VkFlags( VideoCodecOperationFlagBitsKHR::eEncodeH264EXT ) | + VkFlags( VideoCodecOperationFlagBitsKHR::eEncodeH265EXT ) | + VkFlags( VideoCodecOperationFlagBitsKHR::eDecodeH264EXT ) | + VkFlags( VideoCodecOperationFlagBitsKHR::eDecodeH265EXT ) +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCodecOperationFlagsKHR + operator|( VideoCodecOperationFlagBitsKHR bit0, VideoCodecOperationFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoCodecOperationFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCodecOperationFlagsKHR + operator&( VideoCodecOperationFlagBitsKHR bit0, VideoCodecOperationFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoCodecOperationFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCodecOperationFlagsKHR + operator^( VideoCodecOperationFlagBitsKHR bit0, VideoCodecOperationFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoCodecOperationFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCodecOperationFlagsKHR operator~( VideoCodecOperationFlagBitsKHR bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( VideoCodecOperationFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoCodecOperationFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & VideoCodecOperationFlagBitsKHR::eEncodeH264EXT ) + result += "EncodeH264EXT | "; + if ( value & VideoCodecOperationFlagBitsKHR::eEncodeH265EXT ) + result += "EncodeH265EXT | "; + if ( value & VideoCodecOperationFlagBitsKHR::eDecodeH264EXT ) + result += "DecodeH264EXT | "; + if ( value & VideoCodecOperationFlagBitsKHR::eDecodeH265EXT ) + result += "DecodeH265EXT | "; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoChromaSubsamplingFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoChromaSubsamplingFlagBitsKHR::eInvalid ) | + VkFlags( VideoChromaSubsamplingFlagBitsKHR::eMonochrome ) | + VkFlags( VideoChromaSubsamplingFlagBitsKHR::e420 ) | + VkFlags( VideoChromaSubsamplingFlagBitsKHR::e422 ) | VkFlags( VideoChromaSubsamplingFlagBitsKHR::e444 ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoChromaSubsamplingFlagsKHR + operator|( VideoChromaSubsamplingFlagBitsKHR bit0, VideoChromaSubsamplingFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoChromaSubsamplingFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoChromaSubsamplingFlagsKHR + operator&( VideoChromaSubsamplingFlagBitsKHR bit0, VideoChromaSubsamplingFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoChromaSubsamplingFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoChromaSubsamplingFlagsKHR + operator^( VideoChromaSubsamplingFlagBitsKHR bit0, VideoChromaSubsamplingFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoChromaSubsamplingFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoChromaSubsamplingFlagsKHR + operator~( VideoChromaSubsamplingFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT + { + return ~( VideoChromaSubsamplingFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoChromaSubsamplingFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoChromaSubsamplingFlagBitsKHR::eMonochrome ) + result += "Monochrome | "; + if ( value & VideoChromaSubsamplingFlagBitsKHR::e420 ) + result += "420 | "; + if ( value & VideoChromaSubsamplingFlagBitsKHR::e422 ) + result += "422 | "; + if ( value & VideoChromaSubsamplingFlagBitsKHR::e444 ) + result += "444 | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoComponentBitDepthFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoComponentBitDepthFlagBitsKHR::eInvalid ) | + VkFlags( VideoComponentBitDepthFlagBitsKHR::e8 ) | VkFlags( VideoComponentBitDepthFlagBitsKHR::e10 ) | + VkFlags( VideoComponentBitDepthFlagBitsKHR::e12 ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoComponentBitDepthFlagsKHR + operator|( VideoComponentBitDepthFlagBitsKHR bit0, VideoComponentBitDepthFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoComponentBitDepthFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoComponentBitDepthFlagsKHR + operator&( VideoComponentBitDepthFlagBitsKHR bit0, VideoComponentBitDepthFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoComponentBitDepthFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoComponentBitDepthFlagsKHR + operator^( VideoComponentBitDepthFlagBitsKHR bit0, VideoComponentBitDepthFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoComponentBitDepthFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoComponentBitDepthFlagsKHR + operator~( VideoComponentBitDepthFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT + { + return ~( VideoComponentBitDepthFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoComponentBitDepthFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoComponentBitDepthFlagBitsKHR::e8 ) + result += "8 | "; + if ( value & VideoComponentBitDepthFlagBitsKHR::e10 ) + result += "10 | "; + if ( value & VideoComponentBitDepthFlagBitsKHR::e12 ) + result += "12 | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoCapabilityFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoCapabilityFlagBitsKHR::eProtectedContent ) | + VkFlags( VideoCapabilityFlagBitsKHR::eSeparateReferenceImages ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCapabilityFlagsKHR + operator|( VideoCapabilityFlagBitsKHR bit0, VideoCapabilityFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoCapabilityFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCapabilityFlagsKHR + operator&( VideoCapabilityFlagBitsKHR bit0, VideoCapabilityFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoCapabilityFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCapabilityFlagsKHR + operator^( VideoCapabilityFlagBitsKHR bit0, VideoCapabilityFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoCapabilityFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCapabilityFlagsKHR operator~( VideoCapabilityFlagBitsKHR bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( VideoCapabilityFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoCapabilityFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoCapabilityFlagBitsKHR::eProtectedContent ) + result += "ProtectedContent | "; + if ( value & VideoCapabilityFlagBitsKHR::eSeparateReferenceImages ) + result += "SeparateReferenceImages | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoSessionCreateFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = + VkFlags( VideoSessionCreateFlagBitsKHR::eDefault ) | VkFlags( VideoSessionCreateFlagBitsKHR::eProtectedContent ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoSessionCreateFlagsKHR + operator|( VideoSessionCreateFlagBitsKHR bit0, VideoSessionCreateFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoSessionCreateFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoSessionCreateFlagsKHR + operator&( VideoSessionCreateFlagBitsKHR bit0, VideoSessionCreateFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoSessionCreateFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoSessionCreateFlagsKHR + operator^( VideoSessionCreateFlagBitsKHR bit0, VideoSessionCreateFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoSessionCreateFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoSessionCreateFlagsKHR operator~( VideoSessionCreateFlagBitsKHR bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( VideoSessionCreateFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoSessionCreateFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoSessionCreateFlagBitsKHR::eProtectedContent ) + result += "ProtectedContent | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoBeginCodingFlagsKHR = Flags; + + VULKAN_HPP_INLINE std::string to_string( VideoBeginCodingFlagsKHR ) + { + return "{}"; + } + + using VideoEndCodingFlagsKHR = Flags; + + VULKAN_HPP_INLINE std::string to_string( VideoEndCodingFlagsKHR ) + { + return "{}"; + } + + using VideoCodingControlFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoCodingControlFlagBitsKHR::eDefault ) | VkFlags( VideoCodingControlFlagBitsKHR::eReset ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCodingControlFlagsKHR + operator|( VideoCodingControlFlagBitsKHR bit0, VideoCodingControlFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoCodingControlFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCodingControlFlagsKHR + operator&( VideoCodingControlFlagBitsKHR bit0, VideoCodingControlFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoCodingControlFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCodingControlFlagsKHR + operator^( VideoCodingControlFlagBitsKHR bit0, VideoCodingControlFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoCodingControlFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCodingControlFlagsKHR operator~( VideoCodingControlFlagBitsKHR bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( VideoCodingControlFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoCodingControlFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoCodingControlFlagBitsKHR::eReset ) + result += "Reset | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoCodingQualityPresetFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoCodingQualityPresetFlagBitsKHR::eNormal ) | + VkFlags( VideoCodingQualityPresetFlagBitsKHR::ePower ) | + VkFlags( VideoCodingQualityPresetFlagBitsKHR::eQuality ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCodingQualityPresetFlagsKHR + operator|( VideoCodingQualityPresetFlagBitsKHR bit0, VideoCodingQualityPresetFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoCodingQualityPresetFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCodingQualityPresetFlagsKHR + operator&( VideoCodingQualityPresetFlagBitsKHR bit0, VideoCodingQualityPresetFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoCodingQualityPresetFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCodingQualityPresetFlagsKHR + operator^( VideoCodingQualityPresetFlagBitsKHR bit0, VideoCodingQualityPresetFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoCodingQualityPresetFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoCodingQualityPresetFlagsKHR + operator~( VideoCodingQualityPresetFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT + { + return ~( VideoCodingQualityPresetFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoCodingQualityPresetFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoCodingQualityPresetFlagBitsKHR::eNormal ) + result += "Normal | "; + if ( value & VideoCodingQualityPresetFlagBitsKHR::ePower ) + result += "Power | "; + if ( value & VideoCodingQualityPresetFlagBitsKHR::eQuality ) + result += "Quality | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_decode_queue === + + using VideoDecodeFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoDecodeFlagBitsKHR::eDefault ) | VkFlags( VideoDecodeFlagBitsKHR::eReserved0 ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoDecodeFlagsKHR + operator|( VideoDecodeFlagBitsKHR bit0, VideoDecodeFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoDecodeFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoDecodeFlagsKHR + operator&( VideoDecodeFlagBitsKHR bit0, VideoDecodeFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoDecodeFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoDecodeFlagsKHR + operator^( VideoDecodeFlagBitsKHR bit0, VideoDecodeFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoDecodeFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoDecodeFlagsKHR operator~( VideoDecodeFlagBitsKHR bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( VideoDecodeFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoDecodeFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoDecodeFlagBitsKHR::eReserved0 ) + result += "Reserved0 | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_transform_feedback === + + using PipelineRasterizationStateStreamCreateFlagsEXT = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationStateStreamCreateFlagsEXT ) + { + return "{}"; + } + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_encode_h264 === + + using VideoEncodeH264CapabilityFlagsEXT = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoEncodeH264CapabilityFlagBitsEXT::eCabac ) | + VkFlags( VideoEncodeH264CapabilityFlagBitsEXT::eCavlc ) | + VkFlags( VideoEncodeH264CapabilityFlagBitsEXT::eWeightedBiPredImplicit ) | + VkFlags( VideoEncodeH264CapabilityFlagBitsEXT::eTransform8X8 ) | + VkFlags( VideoEncodeH264CapabilityFlagBitsEXT::eChromaQpOffset ) | + VkFlags( VideoEncodeH264CapabilityFlagBitsEXT::eSecondChromaQpOffset ) | + VkFlags( VideoEncodeH264CapabilityFlagBitsEXT::eDeblockingFilterDisabled ) | + VkFlags( VideoEncodeH264CapabilityFlagBitsEXT::eDeblockingFilterEnabled ) | + VkFlags( VideoEncodeH264CapabilityFlagBitsEXT::eDeblockingFilterPartial ) | + VkFlags( VideoEncodeH264CapabilityFlagBitsEXT::eMultipleSlicePerFrame ) | + VkFlags( VideoEncodeH264CapabilityFlagBitsEXT::eEvenlyDistributedSliceSize ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264CapabilityFlagsEXT operator|( + VideoEncodeH264CapabilityFlagBitsEXT bit0, VideoEncodeH264CapabilityFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH264CapabilityFlagsEXT( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264CapabilityFlagsEXT operator&( + VideoEncodeH264CapabilityFlagBitsEXT bit0, VideoEncodeH264CapabilityFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH264CapabilityFlagsEXT( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264CapabilityFlagsEXT operator^( + VideoEncodeH264CapabilityFlagBitsEXT bit0, VideoEncodeH264CapabilityFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH264CapabilityFlagsEXT( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264CapabilityFlagsEXT + operator~( VideoEncodeH264CapabilityFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT + { + return ~( VideoEncodeH264CapabilityFlagsEXT( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH264CapabilityFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoEncodeH264CapabilityFlagBitsEXT::eCabac ) + result += "Cabac | "; + if ( value & VideoEncodeH264CapabilityFlagBitsEXT::eCavlc ) + result += "Cavlc | "; + if ( value & VideoEncodeH264CapabilityFlagBitsEXT::eWeightedBiPredImplicit ) + result += "WeightedBiPredImplicit | "; + if ( value & VideoEncodeH264CapabilityFlagBitsEXT::eTransform8X8 ) + result += "Transform8X8 | "; + if ( value & VideoEncodeH264CapabilityFlagBitsEXT::eChromaQpOffset ) + result += "ChromaQpOffset | "; + if ( value & VideoEncodeH264CapabilityFlagBitsEXT::eSecondChromaQpOffset ) + result += "SecondChromaQpOffset | "; + if ( value & VideoEncodeH264CapabilityFlagBitsEXT::eDeblockingFilterDisabled ) + result += "DeblockingFilterDisabled | "; + if ( value & VideoEncodeH264CapabilityFlagBitsEXT::eDeblockingFilterEnabled ) + result += "DeblockingFilterEnabled | "; + if ( value & VideoEncodeH264CapabilityFlagBitsEXT::eDeblockingFilterPartial ) + result += "DeblockingFilterPartial | "; + if ( value & VideoEncodeH264CapabilityFlagBitsEXT::eMultipleSlicePerFrame ) + result += "MultipleSlicePerFrame | "; + if ( value & VideoEncodeH264CapabilityFlagBitsEXT::eEvenlyDistributedSliceSize ) + result += "EvenlyDistributedSliceSize | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoEncodeH264InputModeFlagsEXT = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoEncodeH264InputModeFlagBitsEXT::eFrame ) | + VkFlags( VideoEncodeH264InputModeFlagBitsEXT::eSlice ) | + VkFlags( VideoEncodeH264InputModeFlagBitsEXT::eNonVcl ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264InputModeFlagsEXT + operator|( VideoEncodeH264InputModeFlagBitsEXT bit0, VideoEncodeH264InputModeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH264InputModeFlagsEXT( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264InputModeFlagsEXT + operator&( VideoEncodeH264InputModeFlagBitsEXT bit0, VideoEncodeH264InputModeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH264InputModeFlagsEXT( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264InputModeFlagsEXT + operator^( VideoEncodeH264InputModeFlagBitsEXT bit0, VideoEncodeH264InputModeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH264InputModeFlagsEXT( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264InputModeFlagsEXT + operator~( VideoEncodeH264InputModeFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT + { + return ~( VideoEncodeH264InputModeFlagsEXT( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH264InputModeFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoEncodeH264InputModeFlagBitsEXT::eFrame ) + result += "Frame | "; + if ( value & VideoEncodeH264InputModeFlagBitsEXT::eSlice ) + result += "Slice | "; + if ( value & VideoEncodeH264InputModeFlagBitsEXT::eNonVcl ) + result += "NonVcl | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoEncodeH264OutputModeFlagsEXT = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoEncodeH264OutputModeFlagBitsEXT::eFrame ) | + VkFlags( VideoEncodeH264OutputModeFlagBitsEXT::eSlice ) | + VkFlags( VideoEncodeH264OutputModeFlagBitsEXT::eNonVcl ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264OutputModeFlagsEXT operator|( + VideoEncodeH264OutputModeFlagBitsEXT bit0, VideoEncodeH264OutputModeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH264OutputModeFlagsEXT( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264OutputModeFlagsEXT operator&( + VideoEncodeH264OutputModeFlagBitsEXT bit0, VideoEncodeH264OutputModeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH264OutputModeFlagsEXT( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264OutputModeFlagsEXT operator^( + VideoEncodeH264OutputModeFlagBitsEXT bit0, VideoEncodeH264OutputModeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH264OutputModeFlagsEXT( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264OutputModeFlagsEXT + operator~( VideoEncodeH264OutputModeFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT + { + return ~( VideoEncodeH264OutputModeFlagsEXT( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH264OutputModeFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoEncodeH264OutputModeFlagBitsEXT::eFrame ) + result += "Frame | "; + if ( value & VideoEncodeH264OutputModeFlagBitsEXT::eSlice ) + result += "Slice | "; + if ( value & VideoEncodeH264OutputModeFlagBitsEXT::eNonVcl ) + result += "NonVcl | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoEncodeH264CreateFlagsEXT = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = + VkFlags( VideoEncodeH264CreateFlagBitsEXT::eDefault ) | VkFlags( VideoEncodeH264CreateFlagBitsEXT::eReserved0 ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264CreateFlagsEXT + operator|( VideoEncodeH264CreateFlagBitsEXT bit0, VideoEncodeH264CreateFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH264CreateFlagsEXT( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264CreateFlagsEXT + operator&( VideoEncodeH264CreateFlagBitsEXT bit0, VideoEncodeH264CreateFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH264CreateFlagsEXT( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264CreateFlagsEXT + operator^( VideoEncodeH264CreateFlagBitsEXT bit0, VideoEncodeH264CreateFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH264CreateFlagsEXT( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264CreateFlagsEXT + operator~( VideoEncodeH264CreateFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT + { + return ~( VideoEncodeH264CreateFlagsEXT( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH264CreateFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoEncodeH264CreateFlagBitsEXT::eReserved0 ) + result += "Reserved0 | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoEncodeH264RateControlStructureFlagsEXT = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoEncodeH264RateControlStructureFlagBitsEXT::eUnknown ) | + VkFlags( VideoEncodeH264RateControlStructureFlagBitsEXT::eFlat ) | + VkFlags( VideoEncodeH264RateControlStructureFlagBitsEXT::eDyadic ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlStructureFlagsEXT + operator|( VideoEncodeH264RateControlStructureFlagBitsEXT bit0, + VideoEncodeH264RateControlStructureFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH264RateControlStructureFlagsEXT( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlStructureFlagsEXT + operator&( VideoEncodeH264RateControlStructureFlagBitsEXT bit0, + VideoEncodeH264RateControlStructureFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH264RateControlStructureFlagsEXT( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlStructureFlagsEXT + operator^( VideoEncodeH264RateControlStructureFlagBitsEXT bit0, + VideoEncodeH264RateControlStructureFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH264RateControlStructureFlagsEXT( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlStructureFlagsEXT + operator~( VideoEncodeH264RateControlStructureFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT + { + return ~( VideoEncodeH264RateControlStructureFlagsEXT( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH264RateControlStructureFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoEncodeH264RateControlStructureFlagBitsEXT::eFlat ) + result += "Flat | "; + if ( value & VideoEncodeH264RateControlStructureFlagBitsEXT::eDyadic ) + result += "Dyadic | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_encode_h265 === + + using VideoEncodeH265CapabilityFlagsEXT = Flags; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265CapabilityFlagsEXT ) + { + return "{}"; + } + + using VideoEncodeH265InputModeFlagsEXT = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoEncodeH265InputModeFlagBitsEXT::eFrame ) | + VkFlags( VideoEncodeH265InputModeFlagBitsEXT::eSlice ) | + VkFlags( VideoEncodeH265InputModeFlagBitsEXT::eNonVcl ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265InputModeFlagsEXT + operator|( VideoEncodeH265InputModeFlagBitsEXT bit0, VideoEncodeH265InputModeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH265InputModeFlagsEXT( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265InputModeFlagsEXT + operator&( VideoEncodeH265InputModeFlagBitsEXT bit0, VideoEncodeH265InputModeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH265InputModeFlagsEXT( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265InputModeFlagsEXT + operator^( VideoEncodeH265InputModeFlagBitsEXT bit0, VideoEncodeH265InputModeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH265InputModeFlagsEXT( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265InputModeFlagsEXT + operator~( VideoEncodeH265InputModeFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT + { + return ~( VideoEncodeH265InputModeFlagsEXT( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265InputModeFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoEncodeH265InputModeFlagBitsEXT::eFrame ) + result += "Frame | "; + if ( value & VideoEncodeH265InputModeFlagBitsEXT::eSlice ) + result += "Slice | "; + if ( value & VideoEncodeH265InputModeFlagBitsEXT::eNonVcl ) + result += "NonVcl | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoEncodeH265OutputModeFlagsEXT = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoEncodeH265OutputModeFlagBitsEXT::eFrame ) | + VkFlags( VideoEncodeH265OutputModeFlagBitsEXT::eSlice ) | + VkFlags( VideoEncodeH265OutputModeFlagBitsEXT::eNonVcl ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265OutputModeFlagsEXT operator|( + VideoEncodeH265OutputModeFlagBitsEXT bit0, VideoEncodeH265OutputModeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH265OutputModeFlagsEXT( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265OutputModeFlagsEXT operator&( + VideoEncodeH265OutputModeFlagBitsEXT bit0, VideoEncodeH265OutputModeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH265OutputModeFlagsEXT( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265OutputModeFlagsEXT operator^( + VideoEncodeH265OutputModeFlagBitsEXT bit0, VideoEncodeH265OutputModeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH265OutputModeFlagsEXT( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265OutputModeFlagsEXT + operator~( VideoEncodeH265OutputModeFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT + { + return ~( VideoEncodeH265OutputModeFlagsEXT( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265OutputModeFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoEncodeH265OutputModeFlagBitsEXT::eFrame ) + result += "Frame | "; + if ( value & VideoEncodeH265OutputModeFlagBitsEXT::eSlice ) + result += "Slice | "; + if ( value & VideoEncodeH265OutputModeFlagBitsEXT::eNonVcl ) + result += "NonVcl | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoEncodeH265CreateFlagsEXT = Flags; + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265CreateFlagsEXT ) + { + return "{}"; + } + + using VideoEncodeH265CtbSizeFlagsEXT = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoEncodeH265CtbSizeFlagBitsEXT::e8 ) | VkFlags( VideoEncodeH265CtbSizeFlagBitsEXT::e16 ) | + VkFlags( VideoEncodeH265CtbSizeFlagBitsEXT::e32 ) | VkFlags( VideoEncodeH265CtbSizeFlagBitsEXT::e64 ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265CtbSizeFlagsEXT + operator|( VideoEncodeH265CtbSizeFlagBitsEXT bit0, VideoEncodeH265CtbSizeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH265CtbSizeFlagsEXT( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265CtbSizeFlagsEXT + operator&( VideoEncodeH265CtbSizeFlagBitsEXT bit0, VideoEncodeH265CtbSizeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH265CtbSizeFlagsEXT( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265CtbSizeFlagsEXT + operator^( VideoEncodeH265CtbSizeFlagBitsEXT bit0, VideoEncodeH265CtbSizeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH265CtbSizeFlagsEXT( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265CtbSizeFlagsEXT + operator~( VideoEncodeH265CtbSizeFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT + { + return ~( VideoEncodeH265CtbSizeFlagsEXT( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265CtbSizeFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoEncodeH265CtbSizeFlagBitsEXT::e8 ) + result += "8 | "; + if ( value & VideoEncodeH265CtbSizeFlagBitsEXT::e16 ) + result += "16 | "; + if ( value & VideoEncodeH265CtbSizeFlagBitsEXT::e32 ) + result += "32 | "; + if ( value & VideoEncodeH265CtbSizeFlagBitsEXT::e64 ) + result += "64 | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoEncodeH265RateControlStructureFlagsEXT = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoEncodeH265RateControlStructureFlagBitsEXT::eUnknown ) | + VkFlags( VideoEncodeH265RateControlStructureFlagBitsEXT::eFlat ) | + VkFlags( VideoEncodeH265RateControlStructureFlagBitsEXT::eDyadic ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlStructureFlagsEXT + operator|( VideoEncodeH265RateControlStructureFlagBitsEXT bit0, + VideoEncodeH265RateControlStructureFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH265RateControlStructureFlagsEXT( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlStructureFlagsEXT + operator&( VideoEncodeH265RateControlStructureFlagBitsEXT bit0, + VideoEncodeH265RateControlStructureFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH265RateControlStructureFlagsEXT( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlStructureFlagsEXT + operator^( VideoEncodeH265RateControlStructureFlagBitsEXT bit0, + VideoEncodeH265RateControlStructureFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeH265RateControlStructureFlagsEXT( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlStructureFlagsEXT + operator~( VideoEncodeH265RateControlStructureFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT + { + return ~( VideoEncodeH265RateControlStructureFlagsEXT( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265RateControlStructureFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoEncodeH265RateControlStructureFlagBitsEXT::eFlat ) + result += "Flat | "; + if ( value & VideoEncodeH265RateControlStructureFlagBitsEXT::eDyadic ) + result += "Dyadic | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_decode_h264 === + + using VideoDecodeH264PictureLayoutFlagsEXT = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoDecodeH264PictureLayoutFlagBitsEXT::eProgressive ) | + VkFlags( VideoDecodeH264PictureLayoutFlagBitsEXT::eInterlacedInterleavedLines ) | + VkFlags( VideoDecodeH264PictureLayoutFlagBitsEXT::eInterlacedSeparatePlanes ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoDecodeH264PictureLayoutFlagsEXT operator|( + VideoDecodeH264PictureLayoutFlagBitsEXT bit0, VideoDecodeH264PictureLayoutFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoDecodeH264PictureLayoutFlagsEXT( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoDecodeH264PictureLayoutFlagsEXT operator&( + VideoDecodeH264PictureLayoutFlagBitsEXT bit0, VideoDecodeH264PictureLayoutFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoDecodeH264PictureLayoutFlagsEXT( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoDecodeH264PictureLayoutFlagsEXT operator^( + VideoDecodeH264PictureLayoutFlagBitsEXT bit0, VideoDecodeH264PictureLayoutFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoDecodeH264PictureLayoutFlagsEXT( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoDecodeH264PictureLayoutFlagsEXT + operator~( VideoDecodeH264PictureLayoutFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT + { + return ~( VideoDecodeH264PictureLayoutFlagsEXT( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoDecodeH264PictureLayoutFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoDecodeH264PictureLayoutFlagBitsEXT::eInterlacedInterleavedLines ) + result += "InterlacedInterleavedLines | "; + if ( value & VideoDecodeH264PictureLayoutFlagBitsEXT::eInterlacedSeparatePlanes ) + result += "InterlacedSeparatePlanes | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoDecodeH264CreateFlagsEXT = Flags; + + VULKAN_HPP_INLINE std::string to_string( VideoDecodeH264CreateFlagsEXT ) + { + return "{}"; + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + + using StreamDescriptorSurfaceCreateFlagsGGP = Flags; + + VULKAN_HPP_INLINE std::string to_string( StreamDescriptorSurfaceCreateFlagsGGP ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === + + using ExternalMemoryHandleTypeFlagsNV = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32 ) | + VkFlags( ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt ) | + VkFlags( ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image ) | + VkFlags( ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlagsNV + operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlagsNV + operator&( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalMemoryHandleTypeFlagsNV( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlagsNV + operator^( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalMemoryHandleTypeFlagsNV( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlagsNV + operator~( ExternalMemoryHandleTypeFlagBitsNV bits ) VULKAN_HPP_NOEXCEPT + { + return ~( ExternalMemoryHandleTypeFlagsNV( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( ExternalMemoryHandleTypeFlagsNV value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32 ) + result += "OpaqueWin32 | "; + if ( value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt ) + result += "OpaqueWin32Kmt | "; + if ( value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image ) + result += "D3D11Image | "; + if ( value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt ) + result += "D3D11ImageKmt | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using ExternalMemoryFeatureFlagsNV = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly ) | + VkFlags( ExternalMemoryFeatureFlagBitsNV::eExportable ) | + VkFlags( ExternalMemoryFeatureFlagBitsNV::eImportable ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlagsNV + operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlagsNV + operator&( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalMemoryFeatureFlagsNV( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlagsNV + operator^( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT + { + return ExternalMemoryFeatureFlagsNV( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( ExternalMemoryFeatureFlagsNV( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( ExternalMemoryFeatureFlagsNV value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly ) + result += "DedicatedOnly | "; + if ( value & ExternalMemoryFeatureFlagBitsNV::eExportable ) + result += "Exportable | "; + if ( value & ExternalMemoryFeatureFlagBitsNV::eImportable ) + result += "Importable | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + + using ViSurfaceCreateFlagsNN = Flags; + + VULKAN_HPP_INLINE std::string to_string( ViSurfaceCreateFlagsNN ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_EXT_conditional_rendering === + + using ConditionalRenderingFlagsEXT = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ConditionalRenderingFlagBitsEXT::eInverted ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ConditionalRenderingFlagsEXT + operator|( ConditionalRenderingFlagBitsEXT bit0, ConditionalRenderingFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return ConditionalRenderingFlagsEXT( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ConditionalRenderingFlagsEXT + operator&( ConditionalRenderingFlagBitsEXT bit0, ConditionalRenderingFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return ConditionalRenderingFlagsEXT( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ConditionalRenderingFlagsEXT + operator^( ConditionalRenderingFlagBitsEXT bit0, ConditionalRenderingFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return ConditionalRenderingFlagsEXT( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ConditionalRenderingFlagsEXT operator~( ConditionalRenderingFlagBitsEXT bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( ConditionalRenderingFlagsEXT( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( ConditionalRenderingFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ConditionalRenderingFlagBitsEXT::eInverted ) + result += "Inverted | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + //=== VK_EXT_display_surface_counter === + + using SurfaceCounterFlagsEXT = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( SurfaceCounterFlagBitsEXT::eVblank ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceCounterFlagsEXT + operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return SurfaceCounterFlagsEXT( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceCounterFlagsEXT + operator&( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return SurfaceCounterFlagsEXT( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceCounterFlagsEXT + operator^( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return SurfaceCounterFlagsEXT( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( SurfaceCounterFlagsEXT( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( SurfaceCounterFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & SurfaceCounterFlagBitsEXT::eVblank ) + result += "Vblank | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + //=== VK_NV_viewport_swizzle === + + using PipelineViewportSwizzleStateCreateFlagsNV = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineViewportSwizzleStateCreateFlagsNV ) + { + return "{}"; + } + + //=== VK_EXT_discard_rectangles === + + using PipelineDiscardRectangleStateCreateFlagsEXT = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineDiscardRectangleStateCreateFlagsEXT ) + { + return "{}"; + } + + //=== VK_EXT_conservative_rasterization === + + using PipelineRasterizationConservativeStateCreateFlagsEXT = + Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationConservativeStateCreateFlagsEXT ) + { + return "{}"; + } + + //=== VK_EXT_depth_clip_enable === + + using PipelineRasterizationDepthClipStateCreateFlagsEXT = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationDepthClipStateCreateFlagsEXT ) + { + return "{}"; + } + + //=== VK_KHR_performance_query === + + using PerformanceCounterDescriptionFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( PerformanceCounterDescriptionFlagBitsKHR::ePerformanceImpacting ) | + VkFlags( PerformanceCounterDescriptionFlagBitsKHR::eConcurrentlyImpacted ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PerformanceCounterDescriptionFlagsKHR operator|( + PerformanceCounterDescriptionFlagBitsKHR bit0, PerformanceCounterDescriptionFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return PerformanceCounterDescriptionFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PerformanceCounterDescriptionFlagsKHR operator&( + PerformanceCounterDescriptionFlagBitsKHR bit0, PerformanceCounterDescriptionFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return PerformanceCounterDescriptionFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PerformanceCounterDescriptionFlagsKHR operator^( + PerformanceCounterDescriptionFlagBitsKHR bit0, PerformanceCounterDescriptionFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return PerformanceCounterDescriptionFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PerformanceCounterDescriptionFlagsKHR + operator~( PerformanceCounterDescriptionFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT + { + return ~( PerformanceCounterDescriptionFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( PerformanceCounterDescriptionFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & PerformanceCounterDescriptionFlagBitsKHR::ePerformanceImpacting ) + result += "PerformanceImpacting | "; + if ( value & PerformanceCounterDescriptionFlagBitsKHR::eConcurrentlyImpacted ) + result += "ConcurrentlyImpacted | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using AcquireProfilingLockFlagsKHR = Flags; + + VULKAN_HPP_INLINE std::string to_string( AcquireProfilingLockFlagsKHR ) + { + return "{}"; + } + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + + using IOSSurfaceCreateFlagsMVK = Flags; + + VULKAN_HPP_INLINE std::string to_string( IOSSurfaceCreateFlagsMVK ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + + using MacOSSurfaceCreateFlagsMVK = Flags; + + VULKAN_HPP_INLINE std::string to_string( MacOSSurfaceCreateFlagsMVK ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + + using DebugUtilsMessageSeverityFlagsEXT = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( DebugUtilsMessageSeverityFlagBitsEXT::eVerbose ) | + VkFlags( DebugUtilsMessageSeverityFlagBitsEXT::eInfo ) | + VkFlags( DebugUtilsMessageSeverityFlagBitsEXT::eWarning ) | + VkFlags( DebugUtilsMessageSeverityFlagBitsEXT::eError ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageSeverityFlagsEXT operator|( + DebugUtilsMessageSeverityFlagBitsEXT bit0, DebugUtilsMessageSeverityFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return DebugUtilsMessageSeverityFlagsEXT( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageSeverityFlagsEXT operator&( + DebugUtilsMessageSeverityFlagBitsEXT bit0, DebugUtilsMessageSeverityFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return DebugUtilsMessageSeverityFlagsEXT( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageSeverityFlagsEXT operator^( + DebugUtilsMessageSeverityFlagBitsEXT bit0, DebugUtilsMessageSeverityFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return DebugUtilsMessageSeverityFlagsEXT( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageSeverityFlagsEXT + operator~( DebugUtilsMessageSeverityFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT + { + return ~( DebugUtilsMessageSeverityFlagsEXT( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessageSeverityFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & DebugUtilsMessageSeverityFlagBitsEXT::eVerbose ) + result += "Verbose | "; + if ( value & DebugUtilsMessageSeverityFlagBitsEXT::eInfo ) + result += "Info | "; + if ( value & DebugUtilsMessageSeverityFlagBitsEXT::eWarning ) + result += "Warning | "; + if ( value & DebugUtilsMessageSeverityFlagBitsEXT::eError ) + result += "Error | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using DebugUtilsMessageTypeFlagsEXT = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( DebugUtilsMessageTypeFlagBitsEXT::eGeneral ) | + VkFlags( DebugUtilsMessageTypeFlagBitsEXT::eValidation ) | + VkFlags( DebugUtilsMessageTypeFlagBitsEXT::ePerformance ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageTypeFlagsEXT + operator|( DebugUtilsMessageTypeFlagBitsEXT bit0, DebugUtilsMessageTypeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return DebugUtilsMessageTypeFlagsEXT( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageTypeFlagsEXT + operator&( DebugUtilsMessageTypeFlagBitsEXT bit0, DebugUtilsMessageTypeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return DebugUtilsMessageTypeFlagsEXT( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageTypeFlagsEXT + operator^( DebugUtilsMessageTypeFlagBitsEXT bit0, DebugUtilsMessageTypeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT + { + return DebugUtilsMessageTypeFlagsEXT( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageTypeFlagsEXT + operator~( DebugUtilsMessageTypeFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT + { + return ~( DebugUtilsMessageTypeFlagsEXT( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessageTypeFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & DebugUtilsMessageTypeFlagBitsEXT::eGeneral ) + result += "General | "; + if ( value & DebugUtilsMessageTypeFlagBitsEXT::eValidation ) + result += "Validation | "; + if ( value & DebugUtilsMessageTypeFlagBitsEXT::ePerformance ) + result += "Performance | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using DebugUtilsMessengerCallbackDataFlagsEXT = Flags; + + VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessengerCallbackDataFlagsEXT ) + { + return "{}"; + } + + using DebugUtilsMessengerCreateFlagsEXT = Flags; + + VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessengerCreateFlagsEXT ) + { + return "{}"; + } + + //=== VK_NV_fragment_coverage_to_color === + + using PipelineCoverageToColorStateCreateFlagsNV = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineCoverageToColorStateCreateFlagsNV ) + { + return "{}"; + } + + //=== VK_KHR_acceleration_structure === + + using GeometryFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( GeometryFlagBitsKHR::eOpaque ) | VkFlags( GeometryFlagBitsKHR::eNoDuplicateAnyHitInvocation ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryFlagsKHR operator|( GeometryFlagBitsKHR bit0, + GeometryFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return GeometryFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryFlagsKHR operator&( GeometryFlagBitsKHR bit0, + GeometryFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return GeometryFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryFlagsKHR operator^( GeometryFlagBitsKHR bit0, + GeometryFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return GeometryFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryFlagsKHR operator~( GeometryFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT + { + return ~( GeometryFlagsKHR( bits ) ); + } + + using GeometryFlagsNV = GeometryFlagsKHR; + + VULKAN_HPP_INLINE std::string to_string( GeometryFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & GeometryFlagBitsKHR::eOpaque ) + result += "Opaque | "; + if ( value & GeometryFlagBitsKHR::eNoDuplicateAnyHitInvocation ) + result += "NoDuplicateAnyHitInvocation | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using GeometryInstanceFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( GeometryInstanceFlagBitsKHR::eTriangleFacingCullDisable ) | + VkFlags( GeometryInstanceFlagBitsKHR::eTriangleFlipFacing ) | + VkFlags( GeometryInstanceFlagBitsKHR::eForceOpaque ) | + VkFlags( GeometryInstanceFlagBitsKHR::eForceNoOpaque ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryInstanceFlagsKHR + operator|( GeometryInstanceFlagBitsKHR bit0, GeometryInstanceFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return GeometryInstanceFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryInstanceFlagsKHR + operator&( GeometryInstanceFlagBitsKHR bit0, GeometryInstanceFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return GeometryInstanceFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryInstanceFlagsKHR + operator^( GeometryInstanceFlagBitsKHR bit0, GeometryInstanceFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return GeometryInstanceFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryInstanceFlagsKHR operator~( GeometryInstanceFlagBitsKHR bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( GeometryInstanceFlagsKHR( bits ) ); + } + + using GeometryInstanceFlagsNV = GeometryInstanceFlagsKHR; + + VULKAN_HPP_INLINE std::string to_string( GeometryInstanceFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & GeometryInstanceFlagBitsKHR::eTriangleFacingCullDisable ) + result += "TriangleFacingCullDisable | "; + if ( value & GeometryInstanceFlagBitsKHR::eTriangleFlipFacing ) + result += "TriangleFlipFacing | "; + if ( value & GeometryInstanceFlagBitsKHR::eForceOpaque ) + result += "ForceOpaque | "; + if ( value & GeometryInstanceFlagBitsKHR::eForceNoOpaque ) + result += "ForceNoOpaque | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using BuildAccelerationStructureFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( BuildAccelerationStructureFlagBitsKHR::eAllowUpdate ) | + VkFlags( BuildAccelerationStructureFlagBitsKHR::eAllowCompaction ) | + VkFlags( BuildAccelerationStructureFlagBitsKHR::ePreferFastTrace ) | + VkFlags( BuildAccelerationStructureFlagBitsKHR::ePreferFastBuild ) | + VkFlags( BuildAccelerationStructureFlagBitsKHR::eLowMemory ) | + VkFlags( BuildAccelerationStructureFlagBitsKHR::eMotionNV ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BuildAccelerationStructureFlagsKHR operator|( + BuildAccelerationStructureFlagBitsKHR bit0, BuildAccelerationStructureFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return BuildAccelerationStructureFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BuildAccelerationStructureFlagsKHR operator&( + BuildAccelerationStructureFlagBitsKHR bit0, BuildAccelerationStructureFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return BuildAccelerationStructureFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BuildAccelerationStructureFlagsKHR operator^( + BuildAccelerationStructureFlagBitsKHR bit0, BuildAccelerationStructureFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return BuildAccelerationStructureFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BuildAccelerationStructureFlagsKHR + operator~( BuildAccelerationStructureFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT + { + return ~( BuildAccelerationStructureFlagsKHR( bits ) ); + } + + using BuildAccelerationStructureFlagsNV = BuildAccelerationStructureFlagsKHR; + + VULKAN_HPP_INLINE std::string to_string( BuildAccelerationStructureFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & BuildAccelerationStructureFlagBitsKHR::eAllowUpdate ) + result += "AllowUpdate | "; + if ( value & BuildAccelerationStructureFlagBitsKHR::eAllowCompaction ) + result += "AllowCompaction | "; + if ( value & BuildAccelerationStructureFlagBitsKHR::ePreferFastTrace ) + result += "PreferFastTrace | "; + if ( value & BuildAccelerationStructureFlagBitsKHR::ePreferFastBuild ) + result += "PreferFastBuild | "; + if ( value & BuildAccelerationStructureFlagBitsKHR::eLowMemory ) + result += "LowMemory | "; + if ( value & BuildAccelerationStructureFlagBitsKHR::eMotionNV ) + result += "MotionNV | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using AccelerationStructureCreateFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( AccelerationStructureCreateFlagBitsKHR::eDeviceAddressCaptureReplay ) | + VkFlags( AccelerationStructureCreateFlagBitsKHR::eMotionNV ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccelerationStructureCreateFlagsKHR operator|( + AccelerationStructureCreateFlagBitsKHR bit0, AccelerationStructureCreateFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return AccelerationStructureCreateFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccelerationStructureCreateFlagsKHR operator&( + AccelerationStructureCreateFlagBitsKHR bit0, AccelerationStructureCreateFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return AccelerationStructureCreateFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccelerationStructureCreateFlagsKHR operator^( + AccelerationStructureCreateFlagBitsKHR bit0, AccelerationStructureCreateFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return AccelerationStructureCreateFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccelerationStructureCreateFlagsKHR + operator~( AccelerationStructureCreateFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT + { + return ~( AccelerationStructureCreateFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( AccelerationStructureCreateFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & AccelerationStructureCreateFlagBitsKHR::eDeviceAddressCaptureReplay ) + result += "DeviceAddressCaptureReplay | "; + if ( value & AccelerationStructureCreateFlagBitsKHR::eMotionNV ) + result += "MotionNV | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + //=== VK_NV_framebuffer_mixed_samples === + + using PipelineCoverageModulationStateCreateFlagsNV = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineCoverageModulationStateCreateFlagsNV ) + { + return "{}"; + } + + //=== VK_EXT_validation_cache === + + using ValidationCacheCreateFlagsEXT = Flags; + + VULKAN_HPP_INLINE std::string to_string( ValidationCacheCreateFlagsEXT ) + { + return "{}"; + } + + //=== VK_AMD_pipeline_compiler_control === + + using PipelineCompilerControlFlagsAMD = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineCompilerControlFlagsAMD ) + { + return "{}"; + } + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_decode_h265 === + + using VideoDecodeH265CreateFlagsEXT = Flags; + + VULKAN_HPP_INLINE std::string to_string( VideoDecodeH265CreateFlagsEXT ) + { + return "{}"; + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + + using ImagePipeSurfaceCreateFlagsFUCHSIA = Flags; + + VULKAN_HPP_INLINE std::string to_string( ImagePipeSurfaceCreateFlagsFUCHSIA ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + + using MetalSurfaceCreateFlagsEXT = Flags; + + VULKAN_HPP_INLINE std::string to_string( MetalSurfaceCreateFlagsEXT ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_AMD_shader_core_properties2 === + + using ShaderCorePropertiesFlagsAMD = Flags; + + VULKAN_HPP_INLINE std::string to_string( ShaderCorePropertiesFlagsAMD ) + { + return "{}"; + } + + //=== VK_NV_coverage_reduction_mode === + + using PipelineCoverageReductionStateCreateFlagsNV = Flags; + + VULKAN_HPP_INLINE std::string to_string( PipelineCoverageReductionStateCreateFlagsNV ) + { + return "{}"; + } + + //=== VK_EXT_headless_surface === + + using HeadlessSurfaceCreateFlagsEXT = Flags; + + VULKAN_HPP_INLINE std::string to_string( HeadlessSurfaceCreateFlagsEXT ) + { + return "{}"; + } + + //=== VK_NV_device_generated_commands === + + using IndirectStateFlagsNV = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( IndirectStateFlagBitsNV::eFlagFrontface ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectStateFlagsNV + operator|( IndirectStateFlagBitsNV bit0, IndirectStateFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT + { + return IndirectStateFlagsNV( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectStateFlagsNV + operator&( IndirectStateFlagBitsNV bit0, IndirectStateFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT + { + return IndirectStateFlagsNV( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectStateFlagsNV + operator^( IndirectStateFlagBitsNV bit0, IndirectStateFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT + { + return IndirectStateFlagsNV( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectStateFlagsNV operator~( IndirectStateFlagBitsNV bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( IndirectStateFlagsNV( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( IndirectStateFlagsNV value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & IndirectStateFlagBitsNV::eFlagFrontface ) + result += "FlagFrontface | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using IndirectCommandsLayoutUsageFlagsNV = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( IndirectCommandsLayoutUsageFlagBitsNV::eExplicitPreprocess ) | + VkFlags( IndirectCommandsLayoutUsageFlagBitsNV::eIndexedSequences ) | + VkFlags( IndirectCommandsLayoutUsageFlagBitsNV::eUnorderedSequences ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutUsageFlagsNV operator|( + IndirectCommandsLayoutUsageFlagBitsNV bit0, IndirectCommandsLayoutUsageFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT + { + return IndirectCommandsLayoutUsageFlagsNV( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutUsageFlagsNV operator&( + IndirectCommandsLayoutUsageFlagBitsNV bit0, IndirectCommandsLayoutUsageFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT + { + return IndirectCommandsLayoutUsageFlagsNV( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutUsageFlagsNV operator^( + IndirectCommandsLayoutUsageFlagBitsNV bit0, IndirectCommandsLayoutUsageFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT + { + return IndirectCommandsLayoutUsageFlagsNV( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutUsageFlagsNV + operator~( IndirectCommandsLayoutUsageFlagBitsNV bits ) VULKAN_HPP_NOEXCEPT + { + return ~( IndirectCommandsLayoutUsageFlagsNV( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( IndirectCommandsLayoutUsageFlagsNV value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & IndirectCommandsLayoutUsageFlagBitsNV::eExplicitPreprocess ) + result += "ExplicitPreprocess | "; + if ( value & IndirectCommandsLayoutUsageFlagBitsNV::eIndexedSequences ) + result += "IndexedSequences | "; + if ( value & IndirectCommandsLayoutUsageFlagBitsNV::eUnorderedSequences ) + result += "UnorderedSequences | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + //=== VK_EXT_device_memory_report === + + using DeviceMemoryReportFlagsEXT = Flags; + + VULKAN_HPP_INLINE std::string to_string( DeviceMemoryReportFlagsEXT ) + { + return "{}"; + } + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_encode_queue === + + using VideoEncodeFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoEncodeFlagBitsKHR::eDefault ) | VkFlags( VideoEncodeFlagBitsKHR::eReserved0 ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeFlagsKHR + operator|( VideoEncodeFlagBitsKHR bit0, VideoEncodeFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeFlagsKHR + operator&( VideoEncodeFlagBitsKHR bit0, VideoEncodeFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeFlagsKHR + operator^( VideoEncodeFlagBitsKHR bit0, VideoEncodeFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeFlagsKHR operator~( VideoEncodeFlagBitsKHR bits ) + VULKAN_HPP_NOEXCEPT + { + return ~( VideoEncodeFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoEncodeFlagBitsKHR::eReserved0 ) + result += "Reserved0 | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoEncodeRateControlFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoEncodeRateControlFlagBitsKHR::eDefault ) | + VkFlags( VideoEncodeRateControlFlagBitsKHR::eReserved0 ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeRateControlFlagsKHR + operator|( VideoEncodeRateControlFlagBitsKHR bit0, VideoEncodeRateControlFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeRateControlFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeRateControlFlagsKHR + operator&( VideoEncodeRateControlFlagBitsKHR bit0, VideoEncodeRateControlFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeRateControlFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeRateControlFlagsKHR + operator^( VideoEncodeRateControlFlagBitsKHR bit0, VideoEncodeRateControlFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeRateControlFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeRateControlFlagsKHR + operator~( VideoEncodeRateControlFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT + { + return ~( VideoEncodeRateControlFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeRateControlFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & VideoEncodeRateControlFlagBitsKHR::eReserved0 ) + result += "Reserved0 | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + using VideoEncodeRateControlModeFlagsKHR = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( VideoEncodeRateControlModeFlagBitsKHR::eNone ) | + VkFlags( VideoEncodeRateControlModeFlagBitsKHR::eCbr ) | + VkFlags( VideoEncodeRateControlModeFlagBitsKHR::eVbr ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeRateControlModeFlagsKHR operator|( + VideoEncodeRateControlModeFlagBitsKHR bit0, VideoEncodeRateControlModeFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeRateControlModeFlagsKHR( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeRateControlModeFlagsKHR operator&( + VideoEncodeRateControlModeFlagBitsKHR bit0, VideoEncodeRateControlModeFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeRateControlModeFlagsKHR( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeRateControlModeFlagsKHR operator^( + VideoEncodeRateControlModeFlagBitsKHR bit0, VideoEncodeRateControlModeFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT + { + return VideoEncodeRateControlModeFlagsKHR( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR VideoEncodeRateControlModeFlagsKHR + operator~( VideoEncodeRateControlModeFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT + { + return ~( VideoEncodeRateControlModeFlagsKHR( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeRateControlModeFlagsKHR value ) + { + if ( !value ) + return "{}"; + + std::string result; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NV_device_diagnostics_config === + + using DeviceDiagnosticsConfigFlagsNV = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( DeviceDiagnosticsConfigFlagBitsNV::eEnableShaderDebugInfo ) | + VkFlags( DeviceDiagnosticsConfigFlagBitsNV::eEnableResourceTracking ) | + VkFlags( DeviceDiagnosticsConfigFlagBitsNV::eEnableAutomaticCheckpoints ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigFlagsNV + operator|( DeviceDiagnosticsConfigFlagBitsNV bit0, DeviceDiagnosticsConfigFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT + { + return DeviceDiagnosticsConfigFlagsNV( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigFlagsNV + operator&( DeviceDiagnosticsConfigFlagBitsNV bit0, DeviceDiagnosticsConfigFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT + { + return DeviceDiagnosticsConfigFlagsNV( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigFlagsNV + operator^( DeviceDiagnosticsConfigFlagBitsNV bit0, DeviceDiagnosticsConfigFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT + { + return DeviceDiagnosticsConfigFlagsNV( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigFlagsNV + operator~( DeviceDiagnosticsConfigFlagBitsNV bits ) VULKAN_HPP_NOEXCEPT + { + return ~( DeviceDiagnosticsConfigFlagsNV( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( DeviceDiagnosticsConfigFlagsNV value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & DeviceDiagnosticsConfigFlagBitsNV::eEnableShaderDebugInfo ) + result += "EnableShaderDebugInfo | "; + if ( value & DeviceDiagnosticsConfigFlagBitsNV::eEnableResourceTracking ) + result += "EnableResourceTracking | "; + if ( value & DeviceDiagnosticsConfigFlagBitsNV::eEnableAutomaticCheckpoints ) + result += "EnableAutomaticCheckpoints | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + //=== VK_NV_ray_tracing_motion_blur === + + using AccelerationStructureMotionInfoFlagsNV = Flags; + + VULKAN_HPP_INLINE std::string to_string( AccelerationStructureMotionInfoFlagsNV ) + { + return "{}"; + } + + using AccelerationStructureMotionInstanceFlagsNV = Flags; + + VULKAN_HPP_INLINE std::string to_string( AccelerationStructureMotionInstanceFlagsNV ) + { + return "{}"; + } + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + using DirectFBSurfaceCreateFlagsEXT = Flags; + + VULKAN_HPP_INLINE std::string to_string( DirectFBSurfaceCreateFlagsEXT ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + using ImageFormatConstraintsFlagsFUCHSIA = Flags; + + VULKAN_HPP_INLINE std::string to_string( ImageFormatConstraintsFlagsFUCHSIA ) + { + return "{}"; + } + + using ImageConstraintsInfoFlagsFUCHSIA = Flags; + + template <> + struct FlagTraits + { + enum : VkFlags + { + allFlags = VkFlags( ImageConstraintsInfoFlagBitsFUCHSIA::eCpuReadRarely ) | + VkFlags( ImageConstraintsInfoFlagBitsFUCHSIA::eCpuReadOften ) | + VkFlags( ImageConstraintsInfoFlagBitsFUCHSIA::eCpuWriteRarely ) | + VkFlags( ImageConstraintsInfoFlagBitsFUCHSIA::eCpuWriteOften ) | + VkFlags( ImageConstraintsInfoFlagBitsFUCHSIA::eProtectedOptional ) + }; + }; + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageConstraintsInfoFlagsFUCHSIA + operator|( ImageConstraintsInfoFlagBitsFUCHSIA bit0, ImageConstraintsInfoFlagBitsFUCHSIA bit1 ) VULKAN_HPP_NOEXCEPT + { + return ImageConstraintsInfoFlagsFUCHSIA( bit0 ) | bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageConstraintsInfoFlagsFUCHSIA + operator&( ImageConstraintsInfoFlagBitsFUCHSIA bit0, ImageConstraintsInfoFlagBitsFUCHSIA bit1 ) VULKAN_HPP_NOEXCEPT + { + return ImageConstraintsInfoFlagsFUCHSIA( bit0 ) & bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageConstraintsInfoFlagsFUCHSIA + operator^( ImageConstraintsInfoFlagBitsFUCHSIA bit0, ImageConstraintsInfoFlagBitsFUCHSIA bit1 ) VULKAN_HPP_NOEXCEPT + { + return ImageConstraintsInfoFlagsFUCHSIA( bit0 ) ^ bit1; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageConstraintsInfoFlagsFUCHSIA + operator~( ImageConstraintsInfoFlagBitsFUCHSIA bits ) VULKAN_HPP_NOEXCEPT + { + return ~( ImageConstraintsInfoFlagsFUCHSIA( bits ) ); + } + + VULKAN_HPP_INLINE std::string to_string( ImageConstraintsInfoFlagsFUCHSIA value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & ImageConstraintsInfoFlagBitsFUCHSIA::eCpuReadRarely ) + result += "CpuReadRarely | "; + if ( value & ImageConstraintsInfoFlagBitsFUCHSIA::eCpuReadOften ) + result += "CpuReadOften | "; + if ( value & ImageConstraintsInfoFlagBitsFUCHSIA::eCpuWriteRarely ) + result += "CpuWriteRarely | "; + if ( value & ImageConstraintsInfoFlagBitsFUCHSIA::eCpuWriteOften ) + result += "CpuWriteOften | "; + if ( value & ImageConstraintsInfoFlagBitsFUCHSIA::eProtectedOptional ) + result += "ProtectedOptional | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + using ScreenSurfaceCreateFlagsQNX = Flags; + + VULKAN_HPP_INLINE std::string to_string( ScreenSurfaceCreateFlagsQNX ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + +} // namespace VULKAN_HPP_NAMESPACE +#endif diff --git a/Externals/Vulkan/Include/vulkan/vulkan_fuchsia.h b/Externals/Vulkan/Include/vulkan/vulkan_fuchsia.h index 81ebe55d313e..61774ff9cb71 100644 --- a/Externals/Vulkan/Include/vulkan/vulkan_fuchsia.h +++ b/Externals/Vulkan/Include/vulkan/vulkan_fuchsia.h @@ -2,19 +2,9 @@ #define VULKAN_FUCHSIA_H_ 1 /* -** Copyright (c) 2015-2019 The Khronos Group Inc. +** Copyright 2015-2022 The Khronos Group Inc. ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -50,6 +40,217 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA( VkSurfaceKHR* pSurface); #endif + +#define VK_FUCHSIA_external_memory 1 +#define VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION 1 +#define VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME "VK_FUCHSIA_external_memory" +typedef struct VkImportMemoryZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagBits handleType; + zx_handle_t handle; +} VkImportMemoryZirconHandleInfoFUCHSIA; + +typedef struct VkMemoryZirconHandlePropertiesFUCHSIA { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; +} VkMemoryZirconHandlePropertiesFUCHSIA; + +typedef struct VkMemoryGetZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkMemoryGetZirconHandleInfoFUCHSIA; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandleFUCHSIA)(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle); +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandleFUCHSIA( + VkDevice device, + const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, + zx_handle_t* pZirconHandle); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandlePropertiesFUCHSIA( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + zx_handle_t zirconHandle, + VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties); +#endif + + +#define VK_FUCHSIA_external_semaphore 1 +#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION 1 +#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_FUCHSIA_external_semaphore" +typedef struct VkImportSemaphoreZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkSemaphoreImportFlags flags; + VkExternalSemaphoreHandleTypeFlagBits handleType; + zx_handle_t zirconHandle; +} VkImportSemaphoreZirconHandleInfoFUCHSIA; + +typedef struct VkSemaphoreGetZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkExternalSemaphoreHandleTypeFlagBits handleType; +} VkSemaphoreGetZirconHandleInfoFUCHSIA; + +typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreZirconHandleFUCHSIA( + VkDevice device, + const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreZirconHandleFUCHSIA( + VkDevice device, + const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, + zx_handle_t* pZirconHandle); +#endif + + +#define VK_FUCHSIA_buffer_collection 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferCollectionFUCHSIA) +#define VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION 2 +#define VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME "VK_FUCHSIA_buffer_collection" +typedef VkFlags VkImageFormatConstraintsFlagsFUCHSIA; + +typedef enum VkImageConstraintsInfoFlagBitsFUCHSIA { + VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA = 0x00000001, + VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA = 0x00000002, + VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA = 0x00000004, + VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA = 0x00000008, + VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA = 0x00000010, + VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIA = 0x7FFFFFFF +} VkImageConstraintsInfoFlagBitsFUCHSIA; +typedef VkFlags VkImageConstraintsInfoFlagsFUCHSIA; +typedef struct VkBufferCollectionCreateInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + zx_handle_t collectionToken; +} VkBufferCollectionCreateInfoFUCHSIA; + +typedef struct VkImportMemoryBufferCollectionFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCollectionFUCHSIA collection; + uint32_t index; +} VkImportMemoryBufferCollectionFUCHSIA; + +typedef struct VkBufferCollectionImageCreateInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCollectionFUCHSIA collection; + uint32_t index; +} VkBufferCollectionImageCreateInfoFUCHSIA; + +typedef struct VkBufferCollectionConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + uint32_t minBufferCount; + uint32_t maxBufferCount; + uint32_t minBufferCountForCamping; + uint32_t minBufferCountForDedicatedSlack; + uint32_t minBufferCountForSharedSlack; +} VkBufferCollectionConstraintsInfoFUCHSIA; + +typedef struct VkBufferConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCreateInfo createInfo; + VkFormatFeatureFlags requiredFormatFeatures; + VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints; +} VkBufferConstraintsInfoFUCHSIA; + +typedef struct VkBufferCollectionBufferCreateInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCollectionFUCHSIA collection; + uint32_t index; +} VkBufferCollectionBufferCreateInfoFUCHSIA; + +typedef struct VkSysmemColorSpaceFUCHSIA { + VkStructureType sType; + const void* pNext; + uint32_t colorSpace; +} VkSysmemColorSpaceFUCHSIA; + +typedef struct VkBufferCollectionPropertiesFUCHSIA { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; + uint32_t bufferCount; + uint32_t createInfoIndex; + uint64_t sysmemPixelFormat; + VkFormatFeatureFlags formatFeatures; + VkSysmemColorSpaceFUCHSIA sysmemColorSpaceIndex; + VkComponentMapping samplerYcbcrConversionComponents; + VkSamplerYcbcrModelConversion suggestedYcbcrModel; + VkSamplerYcbcrRange suggestedYcbcrRange; + VkChromaLocation suggestedXChromaOffset; + VkChromaLocation suggestedYChromaOffset; +} VkBufferCollectionPropertiesFUCHSIA; + +typedef struct VkImageFormatConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkImageCreateInfo imageCreateInfo; + VkFormatFeatureFlags requiredFormatFeatures; + VkImageFormatConstraintsFlagsFUCHSIA flags; + uint64_t sysmemPixelFormat; + uint32_t colorSpaceCount; + const VkSysmemColorSpaceFUCHSIA* pColorSpaces; +} VkImageFormatConstraintsInfoFUCHSIA; + +typedef struct VkImageConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + uint32_t formatConstraintsCount; + const VkImageFormatConstraintsInfoFUCHSIA* pFormatConstraints; + VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints; + VkImageConstraintsInfoFlagsFUCHSIA flags; +} VkImageConstraintsInfoFUCHSIA; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferCollectionFUCHSIA)(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection); +typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); +typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); +typedef void (VKAPI_PTR *PFN_vkDestroyBufferCollectionFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetBufferCollectionPropertiesFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferCollectionFUCHSIA( + VkDevice device, + const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkBufferCollectionFUCHSIA* pCollection); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionImageConstraintsFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionBufferConstraintsFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); + +VKAPI_ATTR void VKAPI_CALL vkDestroyBufferCollectionFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetBufferCollectionPropertiesFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + VkBufferCollectionPropertiesFUCHSIA* pProperties); +#endif + #ifdef __cplusplus } #endif diff --git a/Externals/Vulkan/Include/vulkan/vulkan_funcs.hpp b/Externals/Vulkan/Include/vulkan/vulkan_funcs.hpp new file mode 100644 index 000000000000..8d556d68b758 --- /dev/null +++ b/Externals/Vulkan/Include/vulkan/vulkan_funcs.hpp @@ -0,0 +1,20957 @@ +// Copyright 2015-2022 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_FUNCS_HPP +#define VULKAN_FUNCS_HPP + +namespace VULKAN_HPP_NAMESPACE +{ + //=========================== + //=== COMMAND Definitions === + //=========================== + + //=== VK_VERSION_1_0 === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + createInstance( const VULKAN_HPP_NAMESPACE::InstanceCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Instance * pInstance, + Dispatch const & d ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateInstance( reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pInstance ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + createInstance( const VULKAN_HPP_NAMESPACE::InstanceCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Instance instance; + Result result = static_cast( + d.vkCreateInstance( reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &instance ) ) ); + return createResultValue( result, instance, VULKAN_HPP_NAMESPACE_STRING "::createInstance" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createInstanceUnique( const VULKAN_HPP_NAMESPACE::InstanceCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Instance instance; + Result result = static_cast( + d.vkCreateInstance( reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &instance ) ) ); + ObjectDestroy deleter( allocator, d ); + return createResultValue( + result, instance, VULKAN_HPP_NAMESPACE_STRING "::createInstanceUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Instance::destroy( const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyInstance( m_instance, reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Instance::destroy( Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyInstance( m_instance, + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::enumeratePhysicalDevices( uint32_t * pPhysicalDeviceCount, + VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEnumeratePhysicalDevices( + m_instance, pPhysicalDeviceCount, reinterpret_cast( pPhysicalDevices ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::enumeratePhysicalDevices( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector physicalDevices; + uint32_t physicalDeviceCount; + Result result; + do + { + result = static_cast( d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && physicalDeviceCount ) + { + physicalDevices.resize( physicalDeviceCount ); + result = static_cast( d.vkEnumeratePhysicalDevices( + m_instance, &physicalDeviceCount, reinterpret_cast( physicalDevices.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( physicalDeviceCount <= physicalDevices.size() ); + if ( physicalDeviceCount < physicalDevices.size() ) + { + physicalDevices.resize( physicalDeviceCount ); + } + } + return createResultValue( + result, physicalDevices, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDevices" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::enumeratePhysicalDevices( PhysicalDeviceAllocator & physicalDeviceAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector physicalDevices( physicalDeviceAllocator ); + uint32_t physicalDeviceCount; + Result result; + do + { + result = static_cast( d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && physicalDeviceCount ) + { + physicalDevices.resize( physicalDeviceCount ); + result = static_cast( d.vkEnumeratePhysicalDevices( + m_instance, &physicalDeviceCount, reinterpret_cast( physicalDevices.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( physicalDeviceCount <= physicalDevices.size() ); + if ( physicalDeviceCount < physicalDevices.size() ) + { + physicalDevices.resize( physicalDeviceCount ); + } + } + return createResultValue( + result, physicalDevices, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDevices" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pFeatures, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast( pFeatures ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures + PhysicalDevice::getFeatures( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features; + d.vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast( &features ) ); + return features; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + PhysicalDevice::getFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::FormatProperties * pFormatProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceFormatProperties( + m_physicalDevice, static_cast( format ), reinterpret_cast( pFormatProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties + PhysicalDevice::getFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::FormatProperties formatProperties; + d.vkGetPhysicalDeviceFormatProperties( + m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); + return formatProperties; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags, + VULKAN_HPP_NAMESPACE::ImageFormatProperties * pImageFormatProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceImageFormatProperties( + m_physicalDevice, + static_cast( format ), + static_cast( type ), + static_cast( tiling ), + static_cast( usage ), + static_cast( flags ), + reinterpret_cast( pImageFormatProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + PhysicalDevice::getImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties; + Result result = static_cast( d.vkGetPhysicalDeviceImageFormatProperties( + m_physicalDevice, + static_cast( format ), + static_cast( type ), + static_cast( tiling ), + static_cast( usage ), + static_cast( flags ), + reinterpret_cast( &imageFormatProperties ) ) ); + return createResultValue( + result, imageFormatProperties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void PhysicalDevice::getProperties( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast( pProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties + PhysicalDevice::getProperties( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties; + d.vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast( &properties ) ); + return properties; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + PhysicalDevice::getQueueFamilyProperties( uint32_t * pQueueFamilyPropertyCount, + VULKAN_HPP_NAMESPACE::QueueFamilyProperties * pQueueFamilyProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, + pQueueFamilyPropertyCount, + reinterpret_cast( pQueueFamilyProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getQueueFamilyProperties( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector queueFamilyProperties; + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + d.vkGetPhysicalDeviceQueueFamilyProperties( + m_physicalDevice, + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + return queueFamilyProperties; + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getQueueFamilyProperties( QueueFamilyPropertiesAllocator & queueFamilyPropertiesAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector queueFamilyProperties( + queueFamilyPropertiesAllocator ); + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + d.vkGetPhysicalDeviceQueueFamilyProperties( + m_physicalDevice, + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + return queueFamilyProperties; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + PhysicalDevice::getMemoryProperties( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties * pMemoryProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, + reinterpret_cast( pMemoryProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties + PhysicalDevice::getMemoryProperties( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties; + d.vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, + reinterpret_cast( &memoryProperties ) ); + return memoryProperties; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char * pName, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetInstanceProcAddr( m_instance, pName ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetInstanceProcAddr( m_instance, name.c_str() ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char * pName, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetDeviceProcAddr( m_device, pName ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetDeviceProcAddr( m_device, name.c_str() ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::createDevice( const VULKAN_HPP_NAMESPACE::DeviceCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Device * pDevice, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDevice( m_physicalDevice, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pDevice ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::createDevice( const VULKAN_HPP_NAMESPACE::DeviceCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Device device; + Result result = static_cast( + d.vkCreateDevice( m_physicalDevice, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &device ) ) ); + return createResultValue( result, device, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::createDevice" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::createDeviceUnique( const VULKAN_HPP_NAMESPACE::DeviceCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Device device; + Result result = static_cast( + d.vkCreateDevice( m_physicalDevice, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &device ) ) ); + ObjectDestroy deleter( allocator, d ); + return createResultValue( + result, device, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::createDeviceUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDevice( m_device, reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDevice( m_device, + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + enumerateInstanceExtensionProperties( const char * pLayerName, + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::ExtensionProperties * pProperties, + Dispatch const & d ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEnumerateInstanceExtensionProperties( + pLayerName, pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + enumerateInstanceExtensionProperties( Optional layerName, Dispatch const & d ) + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::enumerateInstanceExtensionProperties" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + enumerateInstanceExtensionProperties( Optional layerName, + ExtensionPropertiesAllocator & extensionPropertiesAllocator, + Dispatch const & d ) + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties( extensionPropertiesAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::enumerateInstanceExtensionProperties" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::enumerateDeviceExtensionProperties( const char * pLayerName, + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::ExtensionProperties * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEnumerateDeviceExtensionProperties( + m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::enumerateDeviceExtensionProperties( Optional layerName, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkEnumerateDeviceExtensionProperties( + m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, + layerName ? layerName->c_str() : nullptr, + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceExtensionProperties" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::enumerateDeviceExtensionProperties( Optional layerName, + ExtensionPropertiesAllocator & extensionPropertiesAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties( extensionPropertiesAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkEnumerateDeviceExtensionProperties( + m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, + layerName ? layerName->c_str() : nullptr, + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceExtensionProperties" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + enumerateInstanceLayerProperties( uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::LayerProperties * pProperties, + Dispatch const & d ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + enumerateInstanceLayerProperties( Dispatch const & d ) + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkEnumerateInstanceLayerProperties( + &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING "::enumerateInstanceLayerProperties" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + enumerateInstanceLayerProperties( LayerPropertiesAllocator & layerPropertiesAllocator, Dispatch const & d ) + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties( layerPropertiesAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkEnumerateInstanceLayerProperties( + &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING "::enumerateInstanceLayerProperties" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::enumerateDeviceLayerProperties( uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::LayerProperties * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEnumerateDeviceLayerProperties( + m_physicalDevice, pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::enumerateDeviceLayerProperties( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkEnumerateDeviceLayerProperties( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceLayerProperties" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::enumerateDeviceLayerProperties( LayerPropertiesAllocator & layerPropertiesAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties( layerPropertiesAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkEnumerateDeviceLayerProperties( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceLayerProperties" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, + uint32_t queueIndex, + VULKAN_HPP_NAMESPACE::Queue * pQueue, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast( pQueue ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Queue + Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Queue queue; + d.vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast( &queue ) ); + return queue; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, + const VULKAN_HPP_NAMESPACE::SubmitInfo * pSubmits, + VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkQueueSubmit( + m_queue, submitCount, reinterpret_cast( pSubmits ), static_cast( fence ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Queue::submit( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkQueueSubmit( m_queue, + submits.size(), + reinterpret_cast( submits.data() ), + static_cast( fence ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::waitIdle( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkQueueWaitIdle( m_queue ) ); + } +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Queue::waitIdle( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkQueueWaitIdle( m_queue ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::waitIdle" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitIdle( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkDeviceWaitIdle( m_device ) ); + } +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::waitIdle( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkDeviceWaitIdle( m_device ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitIdle" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::allocateMemory( const VULKAN_HPP_NAMESPACE::MemoryAllocateInfo * pAllocateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DeviceMemory * pMemory, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkAllocateMemory( m_device, + reinterpret_cast( pAllocateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pMemory ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::allocateMemory( const VULKAN_HPP_NAMESPACE::MemoryAllocateInfo & allocateInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DeviceMemory memory; + Result result = static_cast( + d.vkAllocateMemory( m_device, + reinterpret_cast( &allocateInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &memory ) ) ); + return createResultValue( result, memory, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateMemory" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::allocateMemoryUnique( const VULKAN_HPP_NAMESPACE::MemoryAllocateInfo & allocateInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DeviceMemory memory; + Result result = static_cast( + d.vkAllocateMemory( m_device, + reinterpret_cast( &allocateInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &memory ) ) ); + ObjectFree deleter( *this, allocator, d ); + return createResultValue( + result, memory, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateMemoryUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::freeMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkFreeMemory( + m_device, static_cast( memory ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::freeMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkFreeMemory( m_device, + static_cast( memory ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::free( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkFreeMemory( + m_device, static_cast( memory ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::free( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkFreeMemory( m_device, + static_cast( memory ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::mapMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::DeviceSize size, + VULKAN_HPP_NAMESPACE::MemoryMapFlags flags, + void ** ppData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkMapMemory( m_device, + static_cast( memory ), + static_cast( offset ), + static_cast( size ), + static_cast( flags ), + ppData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::mapMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::DeviceSize size, + VULKAN_HPP_NAMESPACE::MemoryMapFlags flags, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + void * pData; + Result result = static_cast( d.vkMapMemory( m_device, + static_cast( memory ), + static_cast( offset ), + static_cast( size ), + static_cast( flags ), + &pData ) ); + return createResultValue( result, pData, VULKAN_HPP_NAMESPACE_STRING "::Device::mapMemory" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::unmapMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUnmapMemory( m_device, static_cast( memory ) ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, + const VULKAN_HPP_NAMESPACE::MappedMemoryRange * pMemoryRanges, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkFlushMappedMemoryRanges( + m_device, memoryRangeCount, reinterpret_cast( pMemoryRanges ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::flushMappedMemoryRanges( ArrayProxy const & memoryRanges, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkFlushMappedMemoryRanges( + m_device, memoryRanges.size(), reinterpret_cast( memoryRanges.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::flushMappedMemoryRanges" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, + const VULKAN_HPP_NAMESPACE::MappedMemoryRange * pMemoryRanges, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkInvalidateMappedMemoryRanges( + m_device, memoryRangeCount, reinterpret_cast( pMemoryRanges ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::invalidateMappedMemoryRanges( + ArrayProxy const & memoryRanges, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkInvalidateMappedMemoryRanges( + m_device, memoryRanges.size(), reinterpret_cast( memoryRanges.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::invalidateMappedMemoryRanges" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::getMemoryCommitment( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize * pCommittedMemoryInBytes, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceMemoryCommitment( + m_device, static_cast( memory ), reinterpret_cast( pCommittedMemoryInBytes ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceSize + Device::getMemoryCommitment( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DeviceSize committedMemoryInBytes; + d.vkGetDeviceMemoryCommitment( + m_device, static_cast( memory ), reinterpret_cast( &committedMemoryInBytes ) ); + return committedMemoryInBytes; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindBufferMemory( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkBindBufferMemory( m_device, + static_cast( buffer ), + static_cast( memory ), + static_cast( memoryOffset ) ) ); + } +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::bindBufferMemory( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkBindBufferMemory( m_device, + static_cast( buffer ), + static_cast( memory ), + static_cast( memoryOffset ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindImageMemory( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkBindImageMemory( m_device, + static_cast( image ), + static_cast( memory ), + static_cast( memoryOffset ) ) ); + } +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::bindImageMemory( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkBindImageMemory( m_device, + static_cast( image ), + static_cast( memory ), + static_cast( memoryOffset ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::getBufferMemoryRequirements( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::MemoryRequirements * pMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetBufferMemoryRequirements( + m_device, static_cast( buffer ), reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements + Device::getBufferMemoryRequirements( VULKAN_HPP_NAMESPACE::Buffer buffer, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements; + d.vkGetBufferMemoryRequirements( + m_device, static_cast( buffer ), reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::getImageMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::MemoryRequirements * pMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageMemoryRequirements( + m_device, static_cast( image ), reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements + Device::getImageMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements; + d.vkGetImageMemoryRequirements( + m_device, static_cast( image ), reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( + VULKAN_HPP_NAMESPACE::Image image, + uint32_t * pSparseMemoryRequirementCount, + VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements * pSparseMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageSparseMemoryRequirements( + m_device, + static_cast( image ), + pSparseMemoryRequirementCount, + reinterpret_cast( pSparseMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector sparseMemoryRequirements; + uint32_t sparseMemoryRequirementCount; + d.vkGetImageSparseMemoryRequirements( + m_device, static_cast( image ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetImageSparseMemoryRequirements( + m_device, + static_cast( image ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + return sparseMemoryRequirements; + } + + template < + typename SparseImageMemoryRequirementsAllocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements( + VULKAN_HPP_NAMESPACE::Image image, + SparseImageMemoryRequirementsAllocator & sparseImageMemoryRequirementsAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector sparseMemoryRequirements( + sparseImageMemoryRequirementsAllocator ); + uint32_t sparseMemoryRequirementCount; + d.vkGetImageSparseMemoryRequirements( + m_device, static_cast( image ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetImageSparseMemoryRequirements( + m_device, + static_cast( image ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + return sparseMemoryRequirements; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + PhysicalDevice::getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::SparseImageFormatProperties * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceSparseImageFormatProperties( + m_physicalDevice, + static_cast( format ), + static_cast( type ), + static_cast( samples ), + static_cast( usage ), + static_cast( tiling ), + pPropertyCount, + reinterpret_cast( pProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties; + uint32_t propertyCount; + d.vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, + static_cast( format ), + static_cast( type ), + static_cast( samples ), + static_cast( usage ), + static_cast( tiling ), + &propertyCount, + nullptr ); + properties.resize( propertyCount ); + d.vkGetPhysicalDeviceSparseImageFormatProperties( + m_physicalDevice, + static_cast( format ), + static_cast( type ), + static_cast( samples ), + static_cast( usage ), + static_cast( tiling ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + return properties; + } + + template < + typename SparseImageFormatPropertiesAllocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties( + VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + SparseImageFormatPropertiesAllocator & sparseImageFormatPropertiesAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties( + sparseImageFormatPropertiesAllocator ); + uint32_t propertyCount; + d.vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, + static_cast( format ), + static_cast( type ), + static_cast( samples ), + static_cast( usage ), + static_cast( tiling ), + &propertyCount, + nullptr ); + properties.resize( propertyCount ); + d.vkGetPhysicalDeviceSparseImageFormatProperties( + m_physicalDevice, + static_cast( format ), + static_cast( type ), + static_cast( samples ), + static_cast( usage ), + static_cast( tiling ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + return properties; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Queue::bindSparse( uint32_t bindInfoCount, + const VULKAN_HPP_NAMESPACE::BindSparseInfo * pBindInfo, + VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkQueueBindSparse( m_queue, + bindInfoCount, + reinterpret_cast( pBindInfo ), + static_cast( fence ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Queue::bindSparse( ArrayProxy const & bindInfo, + VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = + static_cast( d.vkQueueBindSparse( m_queue, + bindInfo.size(), + reinterpret_cast( bindInfo.data() ), + static_cast( fence ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::bindSparse" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createFence( const VULKAN_HPP_NAMESPACE::FenceCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Fence * pFence, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateFence( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pFence ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::createFence( const VULKAN_HPP_NAMESPACE::FenceCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Fence fence; + Result result = static_cast( + d.vkCreateFence( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &fence ) ) ); + return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING "::Device::createFence" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createFenceUnique( const VULKAN_HPP_NAMESPACE::FenceCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Fence fence; + Result result = static_cast( + d.vkCreateFence( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &fence ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, fence, VULKAN_HPP_NAMESPACE_STRING "::Device::createFenceUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyFence( VULKAN_HPP_NAMESPACE::Fence fence, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyFence( + m_device, static_cast( fence ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroyFence( VULKAN_HPP_NAMESPACE::Fence fence, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyFence( m_device, + static_cast( fence ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Fence fence, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyFence( + m_device, static_cast( fence ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Fence fence, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyFence( m_device, + static_cast( fence ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, + const VULKAN_HPP_NAMESPACE::Fence * pFences, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkResetFences( m_device, fenceCount, reinterpret_cast( pFences ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::resetFences( ArrayProxy const & fences, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkResetFences( m_device, fences.size(), reinterpret_cast( fences.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetFences" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFenceStatus( VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetFenceStatus( m_device, static_cast( fence ) ) ); + } +#else + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFenceStatus( VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkGetFenceStatus( m_device, static_cast( fence ) ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceStatus", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eNotReady } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, + const VULKAN_HPP_NAMESPACE::Fence * pFences, + VULKAN_HPP_NAMESPACE::Bool32 waitAll, + uint64_t timeout, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkWaitForFences( + m_device, fenceCount, reinterpret_cast( pFences ), static_cast( waitAll ), timeout ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::waitForFences( ArrayProxy const & fences, + VULKAN_HPP_NAMESPACE::Bool32 waitAll, + uint64_t timeout, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkWaitForFences( m_device, + fences.size(), + reinterpret_cast( fences.data() ), + static_cast( waitAll ), + timeout ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::waitForFences", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eTimeout } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Semaphore * pSemaphore, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateSemaphore( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSemaphore ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Semaphore semaphore; + Result result = static_cast( + d.vkCreateSemaphore( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &semaphore ) ) ); + return createResultValue( result, semaphore, VULKAN_HPP_NAMESPACE_STRING "::Device::createSemaphore" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createSemaphoreUnique( const VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Semaphore semaphore; + Result result = static_cast( + d.vkCreateSemaphore( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &semaphore ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, semaphore, VULKAN_HPP_NAMESPACE_STRING "::Device::createSemaphoreUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroySemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySemaphore( + m_device, static_cast( semaphore ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroySemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySemaphore( m_device, + static_cast( semaphore ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Semaphore semaphore, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySemaphore( + m_device, static_cast( semaphore ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Semaphore semaphore, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySemaphore( m_device, + static_cast( semaphore ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createEvent( const VULKAN_HPP_NAMESPACE::EventCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Event * pEvent, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateEvent( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pEvent ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::createEvent( const VULKAN_HPP_NAMESPACE::EventCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Event event; + Result result = static_cast( + d.vkCreateEvent( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &event ) ) ); + return createResultValue( result, event, VULKAN_HPP_NAMESPACE_STRING "::Device::createEvent" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createEventUnique( const VULKAN_HPP_NAMESPACE::EventCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Event event; + Result result = static_cast( + d.vkCreateEvent( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &event ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, event, VULKAN_HPP_NAMESPACE_STRING "::Device::createEventUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyEvent( VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyEvent( + m_device, static_cast( event ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroyEvent( VULKAN_HPP_NAMESPACE::Event event, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyEvent( m_device, + static_cast( event ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyEvent( + m_device, static_cast( event ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Event event, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyEvent( m_device, + static_cast( event ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getEventStatus( VULKAN_HPP_NAMESPACE::Event event, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetEventStatus( m_device, static_cast( event ) ) ); + } +#else + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getEventStatus( VULKAN_HPP_NAMESPACE::Event event, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkGetEventStatus( m_device, static_cast( event ) ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::getEventStatus", + { VULKAN_HPP_NAMESPACE::Result::eEventSet, VULKAN_HPP_NAMESPACE::Result::eEventReset } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setEvent( VULKAN_HPP_NAMESPACE::Event event, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkSetEvent( m_device, static_cast( event ) ) ); + } +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::setEvent( VULKAN_HPP_NAMESPACE::Event event, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkSetEvent( m_device, static_cast( event ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setEvent" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::resetEvent( VULKAN_HPP_NAMESPACE::Event event, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkResetEvent( m_device, static_cast( event ) ) ); + } +#else + template + VULKAN_HPP_INLINE typename ResultValueType::type Device::resetEvent( VULKAN_HPP_NAMESPACE::Event event, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkResetEvent( m_device, static_cast( event ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetEvent" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createQueryPool( const VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::QueryPool * pQueryPool, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateQueryPool( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pQueryPool ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createQueryPool( const VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::QueryPool queryPool; + Result result = static_cast( + d.vkCreateQueryPool( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &queryPool ) ) ); + return createResultValue( result, queryPool, VULKAN_HPP_NAMESPACE_STRING "::Device::createQueryPool" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createQueryPoolUnique( const VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::QueryPool queryPool; + Result result = static_cast( + d.vkCreateQueryPool( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &queryPool ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, queryPool, VULKAN_HPP_NAMESPACE_STRING "::Device::createQueryPoolUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyQueryPool( + m_device, static_cast( queryPool ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroyQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyQueryPool( m_device, + static_cast( queryPool ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyQueryPool( + m_device, static_cast( queryPool ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyQueryPool( m_device, + static_cast( queryPool ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + size_t dataSize, + void * pData, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetQueryPoolResults( m_device, + static_cast( queryPool ), + firstQuery, + queryCount, + dataSize, + pData, + static_cast( stride ), + static_cast( flags ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_DEPRECATED( "This function is deprecated. Use one of the other flavours of it." ) + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE Result Device::getQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + ArrayProxy const & data, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkGetQueryPoolResults( m_device, + static_cast( queryPool ), + firstQuery, + queryCount, + data.size() * sizeof( T ), + reinterpret_cast( data.data() ), + static_cast( stride ), + static_cast( flags ) ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::getQueryPoolResults", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eNotReady } ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> + Device::getQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + size_t dataSize, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( d.vkGetQueryPoolResults( m_device, + static_cast( queryPool ), + firstQuery, + queryCount, + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ), + static_cast( stride ), + static_cast( flags ) ) ); + return createResultValue( result, + data, + VULKAN_HPP_NAMESPACE_STRING "::Device::getQueryPoolResults", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eNotReady } ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue + Device::getQueryPoolResult( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + DataType data; + Result result = static_cast( d.vkGetQueryPoolResults( m_device, + static_cast( queryPool ), + firstQuery, + queryCount, + sizeof( DataType ), + reinterpret_cast( &data ), + static_cast( stride ), + static_cast( flags ) ) ); + return createResultValue( result, + data, + VULKAN_HPP_NAMESPACE_STRING "::Device::getQueryPoolResult", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eNotReady } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createBuffer( const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Buffer * pBuffer, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateBuffer( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pBuffer ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::createBuffer( const VULKAN_HPP_NAMESPACE::BufferCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Buffer buffer; + Result result = static_cast( + d.vkCreateBuffer( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &buffer ) ) ); + return createResultValue( result, buffer, VULKAN_HPP_NAMESPACE_STRING "::Device::createBuffer" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createBufferUnique( const VULKAN_HPP_NAMESPACE::BufferCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Buffer buffer; + Result result = static_cast( + d.vkCreateBuffer( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &buffer ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, buffer, VULKAN_HPP_NAMESPACE_STRING "::Device::createBufferUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBuffer( + m_device, static_cast( buffer ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroyBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBuffer( m_device, + static_cast( buffer ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Buffer buffer, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBuffer( + m_device, static_cast( buffer ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Buffer buffer, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBuffer( m_device, + static_cast( buffer ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createBufferView( const VULKAN_HPP_NAMESPACE::BufferViewCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::BufferView * pView, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateBufferView( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pView ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createBufferView( const VULKAN_HPP_NAMESPACE::BufferViewCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::BufferView view; + Result result = static_cast( + d.vkCreateBufferView( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &view ) ) ); + return createResultValue( result, view, VULKAN_HPP_NAMESPACE_STRING "::Device::createBufferView" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createBufferViewUnique( const VULKAN_HPP_NAMESPACE::BufferViewCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::BufferView view; + Result result = static_cast( + d.vkCreateBufferView( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &view ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, view, VULKAN_HPP_NAMESPACE_STRING "::Device::createBufferViewUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyBufferView( VULKAN_HPP_NAMESPACE::BufferView bufferView, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBufferView( m_device, + static_cast( bufferView ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroyBufferView( VULKAN_HPP_NAMESPACE::BufferView bufferView, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBufferView( m_device, + static_cast( bufferView ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::BufferView bufferView, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBufferView( m_device, + static_cast( bufferView ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::BufferView bufferView, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBufferView( m_device, + static_cast( bufferView ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createImage( const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Image * pImage, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateImage( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pImage ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::createImage( const VULKAN_HPP_NAMESPACE::ImageCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Image image; + Result result = static_cast( + d.vkCreateImage( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &image ) ) ); + return createResultValue( result, image, VULKAN_HPP_NAMESPACE_STRING "::Device::createImage" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createImageUnique( const VULKAN_HPP_NAMESPACE::ImageCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Image image; + Result result = static_cast( + d.vkCreateImage( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &image ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, image, VULKAN_HPP_NAMESPACE_STRING "::Device::createImageUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyImage( VULKAN_HPP_NAMESPACE::Image image, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyImage( + m_device, static_cast( image ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroyImage( VULKAN_HPP_NAMESPACE::Image image, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyImage( m_device, + static_cast( image ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Image image, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyImage( + m_device, static_cast( image ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Image image, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyImage( m_device, + static_cast( image ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( VULKAN_HPP_NAMESPACE::Image image, + const VULKAN_HPP_NAMESPACE::ImageSubresource * pSubresource, + VULKAN_HPP_NAMESPACE::SubresourceLayout * pLayout, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageSubresourceLayout( m_device, + static_cast( image ), + reinterpret_cast( pSubresource ), + reinterpret_cast( pLayout ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SubresourceLayout + Device::getImageSubresourceLayout( VULKAN_HPP_NAMESPACE::Image image, + const VULKAN_HPP_NAMESPACE::ImageSubresource & subresource, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SubresourceLayout layout; + d.vkGetImageSubresourceLayout( m_device, + static_cast( image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + return layout; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createImageView( const VULKAN_HPP_NAMESPACE::ImageViewCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::ImageView * pView, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateImageView( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pView ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createImageView( const VULKAN_HPP_NAMESPACE::ImageViewCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ImageView view; + Result result = static_cast( + d.vkCreateImageView( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &view ) ) ); + return createResultValue( result, view, VULKAN_HPP_NAMESPACE_STRING "::Device::createImageView" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createImageViewUnique( const VULKAN_HPP_NAMESPACE::ImageViewCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ImageView view; + Result result = static_cast( + d.vkCreateImageView( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &view ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, view, VULKAN_HPP_NAMESPACE_STRING "::Device::createImageViewUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyImageView( VULKAN_HPP_NAMESPACE::ImageView imageView, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyImageView( + m_device, static_cast( imageView ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroyImageView( VULKAN_HPP_NAMESPACE::ImageView imageView, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyImageView( m_device, + static_cast( imageView ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::ImageView imageView, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyImageView( + m_device, static_cast( imageView ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::ImageView imageView, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyImageView( m_device, + static_cast( imageView ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createShaderModule( const VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::ShaderModule * pShaderModule, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateShaderModule( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pShaderModule ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createShaderModule( const VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ShaderModule shaderModule; + Result result = static_cast( + d.vkCreateShaderModule( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &shaderModule ) ) ); + return createResultValue( result, shaderModule, VULKAN_HPP_NAMESPACE_STRING "::Device::createShaderModule" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createShaderModuleUnique( const VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ShaderModule shaderModule; + Result result = static_cast( + d.vkCreateShaderModule( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &shaderModule ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, shaderModule, VULKAN_HPP_NAMESPACE_STRING "::Device::createShaderModuleUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyShaderModule( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyShaderModule( m_device, + static_cast( shaderModule ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyShaderModule( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyShaderModule( m_device, + static_cast( shaderModule ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyShaderModule( m_device, + static_cast( shaderModule ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyShaderModule( m_device, + static_cast( shaderModule ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createPipelineCache( const VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::PipelineCache * pPipelineCache, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreatePipelineCache( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPipelineCache ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createPipelineCache( const VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache; + Result result = static_cast( + d.vkCreatePipelineCache( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &pipelineCache ) ) ); + return createResultValue( result, pipelineCache, VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineCache" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createPipelineCacheUnique( const VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache; + Result result = static_cast( + d.vkCreatePipelineCache( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &pipelineCache ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, pipelineCache, VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineCacheUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyPipelineCache( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipelineCache( m_device, + static_cast( pipelineCache ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyPipelineCache( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipelineCache( m_device, + static_cast( pipelineCache ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipelineCache( m_device, + static_cast( pipelineCache ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipelineCache( m_device, + static_cast( pipelineCache ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getPipelineCacheData( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + size_t * pDataSize, + void * pData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPipelineCacheData( m_device, static_cast( pipelineCache ), pDataSize, pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getPipelineCacheData( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector data; + size_t dataSize; + Result result; + do + { + result = static_cast( + d.vkGetPipelineCacheData( m_device, static_cast( pipelineCache ), &dataSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( d.vkGetPipelineCacheData( m_device, + static_cast( pipelineCache ), + &dataSize, + reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( dataSize <= data.size() ); + if ( dataSize < data.size() ) + { + data.resize( dataSize ); + } + } + return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineCacheData" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getPipelineCacheData( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + Uint8_tAllocator & uint8_tAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector data( uint8_tAllocator ); + size_t dataSize; + Result result; + do + { + result = static_cast( + d.vkGetPipelineCacheData( m_device, static_cast( pipelineCache ), &dataSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( d.vkGetPipelineCacheData( m_device, + static_cast( pipelineCache ), + &dataSize, + reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( dataSize <= data.size() ); + if ( dataSize < data.size() ) + { + data.resize( dataSize ); + } + } + return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineCacheData" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::mergePipelineCaches( VULKAN_HPP_NAMESPACE::PipelineCache dstCache, + uint32_t srcCacheCount, + const VULKAN_HPP_NAMESPACE::PipelineCache * pSrcCaches, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkMergePipelineCaches( m_device, + static_cast( dstCache ), + srcCacheCount, + reinterpret_cast( pSrcCaches ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::mergePipelineCaches( VULKAN_HPP_NAMESPACE::PipelineCache dstCache, + ArrayProxy const & srcCaches, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = + static_cast( d.vkMergePipelineCaches( m_device, + static_cast( dstCache ), + srcCaches.size(), + reinterpret_cast( srcCaches.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::mergePipelineCaches" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createGraphicsPipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + uint32_t createInfoCount, + const VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo * pCreateInfos, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Pipeline * pPipelines, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateGraphicsPipelines( m_device, + static_cast( pipelineCache ), + createInfoCount, + reinterpret_cast( pCreateInfos ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPipelines ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> + Device::createGraphicsPipelines( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector pipelines( createInfos.size() ); + Result result = static_cast( + d.vkCreateGraphicsPipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + return createResultValue( + result, + pipelines, + VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelines", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> + Device::createGraphicsPipelines( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector pipelines( createInfos.size(), pipelineAllocator ); + Result result = static_cast( + d.vkCreateGraphicsPipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + return createResultValue( + result, + pipelines, + VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelines", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue + Device::createGraphicsPipeline( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Pipeline pipeline; + Result result = static_cast( + d.vkCreateGraphicsPipelines( m_device, + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &pipeline ) ) ); + return createResultValue( + result, + pipeline, + VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipeline", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createGraphicsPipelinesUnique( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector, PipelineAllocator> uniquePipelines; + std::vector pipelines( createInfos.size() ); + Result result = static_cast( + d.vkCreateGraphicsPipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) || + ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + uniquePipelines.reserve( createInfos.size() ); + ObjectDestroy deleter( *this, allocator, d ); + for ( size_t i = 0; i < createInfos.size(); i++ ) + { + uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); + } + } + return createResultValue( + result, + std::move( uniquePipelines ), + VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelinesUnique", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template < + typename Dispatch, + typename PipelineAllocator, + typename B, + typename std::enable_if>::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createGraphicsPipelinesUnique( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector, PipelineAllocator> uniquePipelines( pipelineAllocator ); + std::vector pipelines( createInfos.size() ); + Result result = static_cast( + d.vkCreateGraphicsPipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) || + ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + uniquePipelines.reserve( createInfos.size() ); + ObjectDestroy deleter( *this, allocator, d ); + for ( size_t i = 0; i < createInfos.size(); i++ ) + { + uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); + } + } + return createResultValue( + result, + std::move( uniquePipelines ), + VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelinesUnique", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> + Device::createGraphicsPipelineUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Pipeline pipeline; + Result result = static_cast( + d.vkCreateGraphicsPipelines( m_device, + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &pipeline ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, + pipeline, + VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelineUnique", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT }, + deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createComputePipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + uint32_t createInfoCount, + const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo * pCreateInfos, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Pipeline * pPipelines, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateComputePipelines( m_device, + static_cast( pipelineCache ), + createInfoCount, + reinterpret_cast( pCreateInfos ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPipelines ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> + Device::createComputePipelines( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector pipelines( createInfos.size() ); + Result result = static_cast( + d.vkCreateComputePipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + return createResultValue( + result, + pipelines, + VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelines", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> + Device::createComputePipelines( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector pipelines( createInfos.size(), pipelineAllocator ); + Result result = static_cast( + d.vkCreateComputePipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + return createResultValue( + result, + pipelines, + VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelines", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue + Device::createComputePipeline( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Pipeline pipeline; + Result result = static_cast( + d.vkCreateComputePipelines( m_device, + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &pipeline ) ) ); + return createResultValue( + result, + pipeline, + VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipeline", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createComputePipelinesUnique( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector, PipelineAllocator> uniquePipelines; + std::vector pipelines( createInfos.size() ); + Result result = static_cast( + d.vkCreateComputePipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) || + ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + uniquePipelines.reserve( createInfos.size() ); + ObjectDestroy deleter( *this, allocator, d ); + for ( size_t i = 0; i < createInfos.size(); i++ ) + { + uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); + } + } + return createResultValue( + result, + std::move( uniquePipelines ), + VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelinesUnique", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template < + typename Dispatch, + typename PipelineAllocator, + typename B, + typename std::enable_if>::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createComputePipelinesUnique( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector, PipelineAllocator> uniquePipelines( pipelineAllocator ); + std::vector pipelines( createInfos.size() ); + Result result = static_cast( + d.vkCreateComputePipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) || + ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + uniquePipelines.reserve( createInfos.size() ); + ObjectDestroy deleter( *this, allocator, d ); + for ( size_t i = 0; i < createInfos.size(); i++ ) + { + uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); + } + } + return createResultValue( + result, + std::move( uniquePipelines ), + VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelinesUnique", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> + Device::createComputePipelineUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Pipeline pipeline; + Result result = static_cast( + d.vkCreateComputePipelines( m_device, + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &pipeline ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, + pipeline, + VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelineUnique", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT }, + deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipeline( + m_device, static_cast( pipeline ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroyPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipeline( m_device, + static_cast( pipeline ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipeline( + m_device, static_cast( pipeline ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipeline( m_device, + static_cast( pipeline ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createPipelineLayout( const VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::PipelineLayout * pPipelineLayout, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreatePipelineLayout( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPipelineLayout ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createPipelineLayout( const VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout; + Result result = static_cast( + d.vkCreatePipelineLayout( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &pipelineLayout ) ) ); + return createResultValue( result, pipelineLayout, VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineLayout" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createPipelineLayoutUnique( const VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout; + Result result = static_cast( + d.vkCreatePipelineLayout( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &pipelineLayout ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, pipelineLayout, VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineLayoutUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipelineLayout( m_device, + static_cast( pipelineLayout ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipelineLayout( m_device, + static_cast( pipelineLayout ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipelineLayout( m_device, + static_cast( pipelineLayout ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipelineLayout( m_device, + static_cast( pipelineLayout ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createSampler( const VULKAN_HPP_NAMESPACE::SamplerCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Sampler * pSampler, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateSampler( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSampler ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createSampler( const VULKAN_HPP_NAMESPACE::SamplerCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Sampler sampler; + Result result = static_cast( + d.vkCreateSampler( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &sampler ) ) ); + return createResultValue( result, sampler, VULKAN_HPP_NAMESPACE_STRING "::Device::createSampler" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createSamplerUnique( const VULKAN_HPP_NAMESPACE::SamplerCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Sampler sampler; + Result result = static_cast( + d.vkCreateSampler( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &sampler ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, sampler, VULKAN_HPP_NAMESPACE_STRING "::Device::createSamplerUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroySampler( VULKAN_HPP_NAMESPACE::Sampler sampler, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySampler( + m_device, static_cast( sampler ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroySampler( VULKAN_HPP_NAMESPACE::Sampler sampler, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySampler( m_device, + static_cast( sampler ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Sampler sampler, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySampler( + m_device, static_cast( sampler ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Sampler sampler, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySampler( m_device, + static_cast( sampler ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createDescriptorSetLayout( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayout, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateDescriptorSetLayout( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSetLayout ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createDescriptorSetLayout( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DescriptorSetLayout setLayout; + Result result = static_cast( + d.vkCreateDescriptorSetLayout( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &setLayout ) ) ); + return createResultValue( result, setLayout, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorSetLayout" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createDescriptorSetLayoutUnique( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DescriptorSetLayout setLayout; + Result result = static_cast( + d.vkCreateDescriptorSetLayout( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &setLayout ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, setLayout, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorSetLayoutUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::destroyDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorSetLayout( m_device, + static_cast( descriptorSetLayout ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorSetLayout( m_device, + static_cast( descriptorSetLayout ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorSetLayout( m_device, + static_cast( descriptorSetLayout ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorSetLayout( m_device, + static_cast( descriptorSetLayout ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createDescriptorPool( const VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DescriptorPool * pDescriptorPool, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateDescriptorPool( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pDescriptorPool ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createDescriptorPool( const VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool; + Result result = static_cast( + d.vkCreateDescriptorPool( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &descriptorPool ) ) ); + return createResultValue( result, descriptorPool, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorPool" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createDescriptorPoolUnique( const VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool; + Result result = static_cast( + d.vkCreateDescriptorPool( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &descriptorPool ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, descriptorPool, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorPoolUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorPool( m_device, + static_cast( descriptorPool ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorPool( m_device, + static_cast( descriptorPool ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorPool( m_device, + static_cast( descriptorPool ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorPool( m_device, + static_cast( descriptorPool ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE Result Device::resetDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkResetDescriptorPool( + m_device, static_cast( descriptorPool ), static_cast( flags ) ) ); + } +#else + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::resetDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkResetDescriptorPool( + m_device, static_cast( descriptorPool ), static_cast( flags ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetDescriptorPool" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::allocateDescriptorSets( const VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo * pAllocateInfo, + VULKAN_HPP_NAMESPACE::DescriptorSet * pDescriptorSets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkAllocateDescriptorSets( m_device, + reinterpret_cast( pAllocateInfo ), + reinterpret_cast( pDescriptorSets ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::allocateDescriptorSets( const VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo & allocateInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector descriptorSets( + allocateInfo.descriptorSetCount ); + Result result = static_cast( + d.vkAllocateDescriptorSets( m_device, + reinterpret_cast( &allocateInfo ), + reinterpret_cast( descriptorSets.data() ) ) ); + return createResultValue( result, descriptorSets, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSets" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::allocateDescriptorSets( const VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo & allocateInfo, + DescriptorSetAllocator & descriptorSetAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector descriptorSets( + allocateInfo.descriptorSetCount, descriptorSetAllocator ); + Result result = static_cast( + d.vkAllocateDescriptorSets( m_device, + reinterpret_cast( &allocateInfo ), + reinterpret_cast( descriptorSets.data() ) ) ); + return createResultValue( result, descriptorSets, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSets" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType, DescriptorSetAllocator>>::type + Device::allocateDescriptorSetsUnique( const VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo & allocateInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector, DescriptorSetAllocator> uniqueDescriptorSets; + std::vector descriptorSets( allocateInfo.descriptorSetCount ); + Result result = static_cast( + d.vkAllocateDescriptorSets( m_device, + reinterpret_cast( &allocateInfo ), + reinterpret_cast( descriptorSets.data() ) ) ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + uniqueDescriptorSets.reserve( allocateInfo.descriptorSetCount ); + PoolFree deleter( *this, allocateInfo.descriptorPool, d ); + for ( size_t i = 0; i < allocateInfo.descriptorSetCount; i++ ) + { + uniqueDescriptorSets.push_back( UniqueHandle( descriptorSets[i], deleter ) ); + } + } + return createResultValue( + result, std::move( uniqueDescriptorSets ), VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSetsUnique" ); + } + + template >::value, + int>::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType, DescriptorSetAllocator>>::type + Device::allocateDescriptorSetsUnique( const VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo & allocateInfo, + DescriptorSetAllocator & descriptorSetAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector, DescriptorSetAllocator> uniqueDescriptorSets( + descriptorSetAllocator ); + std::vector descriptorSets( allocateInfo.descriptorSetCount ); + Result result = static_cast( + d.vkAllocateDescriptorSets( m_device, + reinterpret_cast( &allocateInfo ), + reinterpret_cast( descriptorSets.data() ) ) ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + uniqueDescriptorSets.reserve( allocateInfo.descriptorSetCount ); + PoolFree deleter( *this, allocateInfo.descriptorPool, d ); + for ( size_t i = 0; i < allocateInfo.descriptorSetCount; i++ ) + { + uniqueDescriptorSets.push_back( UniqueHandle( descriptorSets[i], deleter ) ); + } + } + return createResultValue( + result, std::move( uniqueDescriptorSets ), VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSetsUnique" ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE Result Device::freeDescriptorSets( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + uint32_t descriptorSetCount, + const VULKAN_HPP_NAMESPACE::DescriptorSet * pDescriptorSets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkFreeDescriptorSets( m_device, + static_cast( descriptorPool ), + descriptorSetCount, + reinterpret_cast( pDescriptorSets ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::freeDescriptorSets( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + ArrayProxy const & descriptorSets, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkFreeDescriptorSets( m_device, + static_cast( descriptorPool ), + descriptorSets.size(), + reinterpret_cast( descriptorSets.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::freeDescriptorSets" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE Result Device::free( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + uint32_t descriptorSetCount, + const VULKAN_HPP_NAMESPACE::DescriptorSet * pDescriptorSets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkFreeDescriptorSets( m_device, + static_cast( descriptorPool ), + descriptorSetCount, + reinterpret_cast( pDescriptorSets ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::free( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + ArrayProxy const & descriptorSets, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkFreeDescriptorSets( m_device, + static_cast( descriptorPool ), + descriptorSets.size(), + reinterpret_cast( descriptorSets.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::free" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::updateDescriptorSets( uint32_t descriptorWriteCount, + const VULKAN_HPP_NAMESPACE::WriteDescriptorSet * pDescriptorWrites, + uint32_t descriptorCopyCount, + const VULKAN_HPP_NAMESPACE::CopyDescriptorSet * pDescriptorCopies, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUpdateDescriptorSets( m_device, + descriptorWriteCount, + reinterpret_cast( pDescriptorWrites ), + descriptorCopyCount, + reinterpret_cast( pDescriptorCopies ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::updateDescriptorSets( ArrayProxy const & descriptorWrites, + ArrayProxy const & descriptorCopies, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUpdateDescriptorSets( m_device, + descriptorWrites.size(), + reinterpret_cast( descriptorWrites.data() ), + descriptorCopies.size(), + reinterpret_cast( descriptorCopies.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createFramebuffer( const VULKAN_HPP_NAMESPACE::FramebufferCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Framebuffer * pFramebuffer, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateFramebuffer( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pFramebuffer ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createFramebuffer( const VULKAN_HPP_NAMESPACE::FramebufferCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Framebuffer framebuffer; + Result result = static_cast( + d.vkCreateFramebuffer( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &framebuffer ) ) ); + return createResultValue( result, framebuffer, VULKAN_HPP_NAMESPACE_STRING "::Device::createFramebuffer" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createFramebufferUnique( const VULKAN_HPP_NAMESPACE::FramebufferCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Framebuffer framebuffer; + Result result = static_cast( + d.vkCreateFramebuffer( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &framebuffer ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, framebuffer, VULKAN_HPP_NAMESPACE_STRING "::Device::createFramebufferUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyFramebuffer( m_device, + static_cast( framebuffer ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyFramebuffer( m_device, + static_cast( framebuffer ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyFramebuffer( m_device, + static_cast( framebuffer ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyFramebuffer( m_device, + static_cast( framebuffer ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::RenderPass * pRenderPass, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateRenderPass( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pRenderPass ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::RenderPass renderPass; + Result result = static_cast( + d.vkCreateRenderPass( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &renderPass ) ) ); + return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPass" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createRenderPassUnique( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::RenderPass renderPass; + Result result = static_cast( + d.vkCreateRenderPass( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &renderPass ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, renderPass, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPassUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyRenderPass( m_device, + static_cast( renderPass ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroyRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyRenderPass( m_device, + static_cast( renderPass ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::RenderPass renderPass, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyRenderPass( m_device, + static_cast( renderPass ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::RenderPass renderPass, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyRenderPass( m_device, + static_cast( renderPass ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( VULKAN_HPP_NAMESPACE::RenderPass renderPass, + VULKAN_HPP_NAMESPACE::Extent2D * pGranularity, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetRenderAreaGranularity( + m_device, static_cast( renderPass ), reinterpret_cast( pGranularity ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Extent2D + Device::getRenderAreaGranularity( VULKAN_HPP_NAMESPACE::RenderPass renderPass, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Extent2D granularity; + d.vkGetRenderAreaGranularity( + m_device, static_cast( renderPass ), reinterpret_cast( &granularity ) ); + return granularity; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createCommandPool( const VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::CommandPool * pCommandPool, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateCommandPool( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pCommandPool ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createCommandPool( const VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::CommandPool commandPool; + Result result = static_cast( + d.vkCreateCommandPool( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &commandPool ) ) ); + return createResultValue( result, commandPool, VULKAN_HPP_NAMESPACE_STRING "::Device::createCommandPool" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createCommandPoolUnique( const VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::CommandPool commandPool; + Result result = static_cast( + d.vkCreateCommandPool( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &commandPool ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, commandPool, VULKAN_HPP_NAMESPACE_STRING "::Device::createCommandPoolUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCommandPool( m_device, + static_cast( commandPool ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCommandPool( m_device, + static_cast( commandPool ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCommandPool( m_device, + static_cast( commandPool ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCommandPool( m_device, + static_cast( commandPool ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::resetCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkResetCommandPool( + m_device, static_cast( commandPool ), static_cast( flags ) ) ); + } +#else + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::resetCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkResetCommandPool( + m_device, static_cast( commandPool ), static_cast( flags ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetCommandPool" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::allocateCommandBuffers( const VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo * pAllocateInfo, + VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkAllocateCommandBuffers( m_device, + reinterpret_cast( pAllocateInfo ), + reinterpret_cast( pCommandBuffers ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::allocateCommandBuffers( const VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo & allocateInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector commandBuffers( + allocateInfo.commandBufferCount ); + Result result = static_cast( + d.vkAllocateCommandBuffers( m_device, + reinterpret_cast( &allocateInfo ), + reinterpret_cast( commandBuffers.data() ) ) ); + return createResultValue( result, commandBuffers, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffers" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::allocateCommandBuffers( const VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo & allocateInfo, + CommandBufferAllocator & commandBufferAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector commandBuffers( + allocateInfo.commandBufferCount, commandBufferAllocator ); + Result result = static_cast( + d.vkAllocateCommandBuffers( m_device, + reinterpret_cast( &allocateInfo ), + reinterpret_cast( commandBuffers.data() ) ) ); + return createResultValue( result, commandBuffers, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffers" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType, CommandBufferAllocator>>::type + Device::allocateCommandBuffersUnique( const VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo & allocateInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector, CommandBufferAllocator> uniqueCommandBuffers; + std::vector commandBuffers( allocateInfo.commandBufferCount ); + Result result = static_cast( + d.vkAllocateCommandBuffers( m_device, + reinterpret_cast( &allocateInfo ), + reinterpret_cast( commandBuffers.data() ) ) ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + uniqueCommandBuffers.reserve( allocateInfo.commandBufferCount ); + PoolFree deleter( *this, allocateInfo.commandPool, d ); + for ( size_t i = 0; i < allocateInfo.commandBufferCount; i++ ) + { + uniqueCommandBuffers.push_back( UniqueHandle( commandBuffers[i], deleter ) ); + } + } + return createResultValue( + result, std::move( uniqueCommandBuffers ), VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffersUnique" ); + } + + template >::value, + int>::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType, CommandBufferAllocator>>::type + Device::allocateCommandBuffersUnique( const VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo & allocateInfo, + CommandBufferAllocator & commandBufferAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector, CommandBufferAllocator> uniqueCommandBuffers( + commandBufferAllocator ); + std::vector commandBuffers( allocateInfo.commandBufferCount ); + Result result = static_cast( + d.vkAllocateCommandBuffers( m_device, + reinterpret_cast( &allocateInfo ), + reinterpret_cast( commandBuffers.data() ) ) ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + uniqueCommandBuffers.reserve( allocateInfo.commandBufferCount ); + PoolFree deleter( *this, allocateInfo.commandPool, d ); + for ( size_t i = 0; i < allocateInfo.commandBufferCount; i++ ) + { + uniqueCommandBuffers.push_back( UniqueHandle( commandBuffers[i], deleter ) ); + } + } + return createResultValue( + result, std::move( uniqueCommandBuffers ), VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffersUnique" ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::freeCommandBuffers( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + uint32_t commandBufferCount, + const VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkFreeCommandBuffers( m_device, + static_cast( commandPool ), + commandBufferCount, + reinterpret_cast( pCommandBuffers ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::freeCommandBuffers( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + ArrayProxy const & commandBuffers, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkFreeCommandBuffers( m_device, + static_cast( commandPool ), + commandBuffers.size(), + reinterpret_cast( commandBuffers.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::free( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + uint32_t commandBufferCount, + const VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkFreeCommandBuffers( m_device, + static_cast( commandPool ), + commandBufferCount, + reinterpret_cast( pCommandBuffers ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::free( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + ArrayProxy const & commandBuffers, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkFreeCommandBuffers( m_device, + static_cast( commandPool ), + commandBuffers.size(), + reinterpret_cast( commandBuffers.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::begin( + const VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo * pBeginInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast( pBeginInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + CommandBuffer::begin( const VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo & beginInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast( &beginInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::begin" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::end( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEndCommandBuffer( m_commandBuffer ) ); + } +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + CommandBuffer::end( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkEndCommandBuffer( m_commandBuffer ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::end" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::reset( + VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkResetCommandBuffer( m_commandBuffer, static_cast( flags ) ) ); + } +#else + template + VULKAN_HPP_INLINE typename ResultValueType::type + CommandBuffer::reset( VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = + static_cast( d.vkResetCommandBuffer( m_commandBuffer, static_cast( flags ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::reset" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::Pipeline pipeline, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindPipeline( + m_commandBuffer, static_cast( pipelineBindPoint ), static_cast( pipeline ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, + uint32_t viewportCount, + const VULKAN_HPP_NAMESPACE::Viewport * pViewports, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewport( + m_commandBuffer, firstViewport, viewportCount, reinterpret_cast( pViewports ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, + ArrayProxy const & viewports, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewport( + m_commandBuffer, firstViewport, viewports.size(), reinterpret_cast( viewports.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, + uint32_t scissorCount, + const VULKAN_HPP_NAMESPACE::Rect2D * pScissors, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast( pScissors ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, + ArrayProxy const & scissors, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetScissor( + m_commandBuffer, firstScissor, scissors.size(), reinterpret_cast( scissors.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetLineWidth( m_commandBuffer, lineWidth ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, + float depthBiasClamp, + float depthBiasSlopeFactor, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4], + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetBlendConstants( m_commandBuffer, blendConstants ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, + float maxDepthBounds, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + uint32_t compareMask, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetStencilCompareMask( m_commandBuffer, static_cast( faceMask ), compareMask ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + uint32_t writeMask, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetStencilWriteMask( m_commandBuffer, static_cast( faceMask ), writeMask ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + uint32_t reference, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetStencilReference( m_commandBuffer, static_cast( faceMask ), reference ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t firstSet, + uint32_t descriptorSetCount, + const VULKAN_HPP_NAMESPACE::DescriptorSet * pDescriptorSets, + uint32_t dynamicOffsetCount, + const uint32_t * pDynamicOffsets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindDescriptorSets( m_commandBuffer, + static_cast( pipelineBindPoint ), + static_cast( layout ), + firstSet, + descriptorSetCount, + reinterpret_cast( pDescriptorSets ), + dynamicOffsetCount, + pDynamicOffsets ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t firstSet, + ArrayProxy const & descriptorSets, + ArrayProxy const & dynamicOffsets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindDescriptorSets( m_commandBuffer, + static_cast( pipelineBindPoint ), + static_cast( layout ), + firstSet, + descriptorSets.size(), + reinterpret_cast( descriptorSets.data() ), + dynamicOffsets.size(), + dynamicOffsets.data() ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::IndexType indexType, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindIndexBuffer( m_commandBuffer, + static_cast( buffer ), + static_cast( offset ), + static_cast( indexType ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, + uint32_t bindingCount, + const VULKAN_HPP_NAMESPACE::Buffer * pBuffers, + const VULKAN_HPP_NAMESPACE::DeviceSize * pOffsets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindVertexBuffers( m_commandBuffer, + firstBinding, + bindingCount, + reinterpret_cast( pBuffers ), + reinterpret_cast( pOffsets ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::bindVertexBuffers( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdBindVertexBuffers( m_commandBuffer, + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, + uint32_t instanceCount, + uint32_t firstVertex, + uint32_t firstInstance, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, + uint32_t instanceCount, + uint32_t firstIndex, + int32_t vertexOffset, + uint32_t firstInstance, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + uint32_t drawCount, + uint32_t stride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndirect( + m_commandBuffer, static_cast( buffer ), static_cast( offset ), drawCount, stride ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + uint32_t drawCount, + uint32_t stride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndexedIndirect( + m_commandBuffer, static_cast( buffer ), static_cast( offset ), drawCount, stride ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDispatchIndirect( m_commandBuffer, static_cast( buffer ), static_cast( offset ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + uint32_t regionCount, + const VULKAN_HPP_NAMESPACE::BufferCopy * pRegions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBuffer( m_commandBuffer, + static_cast( srcBuffer ), + static_cast( dstBuffer ), + regionCount, + reinterpret_cast( pRegions ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + ArrayProxy const & regions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBuffer( m_commandBuffer, + static_cast( srcBuffer ), + static_cast( dstBuffer ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::copyImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + uint32_t regionCount, + const VULKAN_HPP_NAMESPACE::ImageCopy * pRegions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImage( m_commandBuffer, + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regionCount, + reinterpret_cast( pRegions ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::copyImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImage( m_commandBuffer, + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::blitImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + uint32_t regionCount, + const VULKAN_HPP_NAMESPACE::ImageBlit * pRegions, + VULKAN_HPP_NAMESPACE::Filter filter, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBlitImage( m_commandBuffer, + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regionCount, + reinterpret_cast( pRegions ), + static_cast( filter ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::blitImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions, + VULKAN_HPP_NAMESPACE::Filter filter, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBlitImage( m_commandBuffer, + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ), + static_cast( filter ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + uint32_t regionCount, + const VULKAN_HPP_NAMESPACE::BufferImageCopy * pRegions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBufferToImage( m_commandBuffer, + static_cast( srcBuffer ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regionCount, + reinterpret_cast( pRegions ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBufferToImage( m_commandBuffer, + static_cast( srcBuffer ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + uint32_t regionCount, + const VULKAN_HPP_NAMESPACE::BufferImageCopy * pRegions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImageToBuffer( m_commandBuffer, + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstBuffer ), + regionCount, + reinterpret_cast( pRegions ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + ArrayProxy const & regions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImageToBuffer( m_commandBuffer, + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstBuffer ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + VULKAN_HPP_NAMESPACE::DeviceSize dataSize, + const void * pData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdUpdateBuffer( m_commandBuffer, + static_cast( dstBuffer ), + static_cast( dstOffset ), + static_cast( dataSize ), + pData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + ArrayProxy const & data, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdUpdateBuffer( m_commandBuffer, + static_cast( dstBuffer ), + static_cast( dstOffset ), + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + VULKAN_HPP_NAMESPACE::DeviceSize size, + uint32_t data, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdFillBuffer( m_commandBuffer, + static_cast( dstBuffer ), + static_cast( dstOffset ), + static_cast( size ), + data ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + const VULKAN_HPP_NAMESPACE::ClearColorValue * pColor, + uint32_t rangeCount, + const VULKAN_HPP_NAMESPACE::ImageSubresourceRange * pRanges, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdClearColorImage( m_commandBuffer, + static_cast( image ), + static_cast( imageLayout ), + reinterpret_cast( pColor ), + rangeCount, + reinterpret_cast( pRanges ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::clearColorImage( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + const VULKAN_HPP_NAMESPACE::ClearColorValue & color, + ArrayProxy const & ranges, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdClearColorImage( m_commandBuffer, + static_cast( image ), + static_cast( imageLayout ), + reinterpret_cast( &color ), + ranges.size(), + reinterpret_cast( ranges.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + const VULKAN_HPP_NAMESPACE::ClearDepthStencilValue * pDepthStencil, + uint32_t rangeCount, + const VULKAN_HPP_NAMESPACE::ImageSubresourceRange * pRanges, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdClearDepthStencilImage( m_commandBuffer, + static_cast( image ), + static_cast( imageLayout ), + reinterpret_cast( pDepthStencil ), + rangeCount, + reinterpret_cast( pRanges ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + const VULKAN_HPP_NAMESPACE::ClearDepthStencilValue & depthStencil, + ArrayProxy const & ranges, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdClearDepthStencilImage( m_commandBuffer, + static_cast( image ), + static_cast( imageLayout ), + reinterpret_cast( &depthStencil ), + ranges.size(), + reinterpret_cast( ranges.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, + const VULKAN_HPP_NAMESPACE::ClearAttachment * pAttachments, + uint32_t rectCount, + const VULKAN_HPP_NAMESPACE::ClearRect * pRects, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdClearAttachments( m_commandBuffer, + attachmentCount, + reinterpret_cast( pAttachments ), + rectCount, + reinterpret_cast( pRects ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::clearAttachments( ArrayProxy const & attachments, + ArrayProxy const & rects, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdClearAttachments( m_commandBuffer, + attachments.size(), + reinterpret_cast( attachments.data() ), + rects.size(), + reinterpret_cast( rects.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::resolveImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + uint32_t regionCount, + const VULKAN_HPP_NAMESPACE::ImageResolve * pRegions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResolveImage( m_commandBuffer, + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regionCount, + reinterpret_cast( pRegions ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::resolveImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResolveImage( m_commandBuffer, + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::setEvent( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetEvent( m_commandBuffer, static_cast( event ), static_cast( stageMask ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::resetEvent( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResetEvent( m_commandBuffer, static_cast( event ), static_cast( stageMask ) ); + } + + template + VULKAN_HPP_INLINE void + CommandBuffer::waitEvents( uint32_t eventCount, + const VULKAN_HPP_NAMESPACE::Event * pEvents, + VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, + uint32_t memoryBarrierCount, + const VULKAN_HPP_NAMESPACE::MemoryBarrier * pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier * pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier * pImageMemoryBarriers, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWaitEvents( m_commandBuffer, + eventCount, + reinterpret_cast( pEvents ), + static_cast( srcStageMask ), + static_cast( dstStageMask ), + memoryBarrierCount, + reinterpret_cast( pMemoryBarriers ), + bufferMemoryBarrierCount, + reinterpret_cast( pBufferMemoryBarriers ), + imageMemoryBarrierCount, + reinterpret_cast( pImageMemoryBarriers ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::waitEvents( ArrayProxy const & events, + VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWaitEvents( m_commandBuffer, + events.size(), + reinterpret_cast( events.data() ), + static_cast( srcStageMask ), + static_cast( dstStageMask ), + memoryBarriers.size(), + reinterpret_cast( memoryBarriers.data() ), + bufferMemoryBarriers.size(), + reinterpret_cast( bufferMemoryBarriers.data() ), + imageMemoryBarriers.size(), + reinterpret_cast( imageMemoryBarriers.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::pipelineBarrier( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, + VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags, + uint32_t memoryBarrierCount, + const VULKAN_HPP_NAMESPACE::MemoryBarrier * pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier * pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier * pImageMemoryBarriers, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPipelineBarrier( m_commandBuffer, + static_cast( srcStageMask ), + static_cast( dstStageMask ), + static_cast( dependencyFlags ), + memoryBarrierCount, + reinterpret_cast( pMemoryBarriers ), + bufferMemoryBarrierCount, + reinterpret_cast( pBufferMemoryBarriers ), + imageMemoryBarrierCount, + reinterpret_cast( pImageMemoryBarriers ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier( + VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, + VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPipelineBarrier( m_commandBuffer, + static_cast( srcStageMask ), + static_cast( dstStageMask ), + static_cast( dependencyFlags ), + memoryBarriers.size(), + reinterpret_cast( memoryBarriers.data() ), + bufferMemoryBarriers.size(), + reinterpret_cast( bufferMemoryBarriers.data() ), + imageMemoryBarriers.size(), + reinterpret_cast( imageMemoryBarriers.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::beginQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + VULKAN_HPP_NAMESPACE::QueryControlFlags flags, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginQuery( + m_commandBuffer, static_cast( queryPool ), query, static_cast( flags ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndQuery( m_commandBuffer, static_cast( queryPool ), query ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResetQueryPool( m_commandBuffer, static_cast( queryPool ), firstQuery, queryCount ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteTimestamp( m_commandBuffer, + static_cast( pipelineStage ), + static_cast( queryPool ), + query ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyQueryPoolResults( m_commandBuffer, + static_cast( queryPool ), + firstQuery, + queryCount, + static_cast( dstBuffer ), + static_cast( dstOffset ), + static_cast( stride ), + static_cast( flags ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout layout, + VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags, + uint32_t offset, + uint32_t size, + const void * pValues, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushConstants( m_commandBuffer, + static_cast( layout ), + static_cast( stageFlags ), + offset, + size, + pValues ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout layout, + VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags, + uint32_t offset, + ArrayProxy const & values, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushConstants( m_commandBuffer, + static_cast( layout ), + static_cast( stageFlags ), + offset, + values.size() * sizeof( ValuesType ), + reinterpret_cast( values.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::beginRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo * pRenderPassBegin, + VULKAN_HPP_NAMESPACE::SubpassContents contents, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginRenderPass( m_commandBuffer, + reinterpret_cast( pRenderPassBegin ), + static_cast( contents ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::beginRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin, + VULKAN_HPP_NAMESPACE::SubpassContents contents, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginRenderPass( m_commandBuffer, + reinterpret_cast( &renderPassBegin ), + static_cast( contents ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( VULKAN_HPP_NAMESPACE::SubpassContents contents, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdNextSubpass( m_commandBuffer, static_cast( contents ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndRenderPass( m_commandBuffer ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, + const VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdExecuteCommands( + m_commandBuffer, commandBufferCount, reinterpret_cast( pCommandBuffers ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::executeCommands( ArrayProxy const & commandBuffers, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdExecuteCommands( + m_commandBuffer, commandBuffers.size(), reinterpret_cast( commandBuffers.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_VERSION_1_1 === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result enumerateInstanceVersion( uint32_t * pApiVersion, + Dispatch const & d ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEnumerateInstanceVersion( pApiVersion ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type enumerateInstanceVersion( Dispatch const & d ) + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + uint32_t apiVersion; + Result result = static_cast( d.vkEnumerateInstanceVersion( &apiVersion ) ); + return createResultValue( result, apiVersion, VULKAN_HPP_NAMESPACE_STRING "::enumerateInstanceVersion" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::bindBufferMemory2( uint32_t bindInfoCount, + const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo * pBindInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkBindBufferMemory2( + m_device, bindInfoCount, reinterpret_cast( pBindInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::bindBufferMemory2( ArrayProxy const & bindInfos, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkBindBufferMemory2( + m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory2" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::bindImageMemory2( uint32_t bindInfoCount, + const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo * pBindInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkBindImageMemory2( m_device, bindInfoCount, reinterpret_cast( pBindInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::bindImageMemory2( ArrayProxy const & bindInfos, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkBindImageMemory2( + m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory2" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::getGroupPeerMemoryFeatures( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags * pPeerMemoryFeatures, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceGroupPeerMemoryFeatures( m_device, + heapIndex, + localDeviceIndex, + remoteDeviceIndex, + reinterpret_cast( pPeerMemoryFeatures ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags + Device::getGroupPeerMemoryFeatures( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags peerMemoryFeatures; + d.vkGetDeviceGroupPeerMemoryFeatures( m_device, + heapIndex, + localDeviceIndex, + remoteDeviceIndex, + reinterpret_cast( &peerMemoryFeatures ) ); + return peerMemoryFeatures; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::setDeviceMask( uint32_t deviceMask, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDeviceMask( m_commandBuffer, deviceMask ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::dispatchBase( uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDispatchBase( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroups( + uint32_t * pPhysicalDeviceGroupCount, + VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEnumeratePhysicalDeviceGroups( + m_instance, + pPhysicalDeviceGroupCount, + reinterpret_cast( pPhysicalDeviceGroupProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::enumeratePhysicalDeviceGroups( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector physicalDeviceGroupProperties; + uint32_t physicalDeviceGroupCount; + Result result; + do + { + result = + static_cast( d.vkEnumeratePhysicalDeviceGroups( m_instance, &physicalDeviceGroupCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceGroups( + m_instance, + &physicalDeviceGroupCount, + reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); + if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + } + } + return createResultValue( + result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroups" ); + } + + template < + typename PhysicalDeviceGroupPropertiesAllocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::enumeratePhysicalDeviceGroups( + PhysicalDeviceGroupPropertiesAllocator & physicalDeviceGroupPropertiesAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector physicalDeviceGroupProperties( + physicalDeviceGroupPropertiesAllocator ); + uint32_t physicalDeviceGroupCount; + Result result; + do + { + result = + static_cast( d.vkEnumeratePhysicalDeviceGroups( m_instance, &physicalDeviceGroupCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceGroups( + m_instance, + &physicalDeviceGroupCount, + reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); + if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + } + } + return createResultValue( + result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroups" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::getImageMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageMemoryRequirements2( m_device, + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getImageMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + d.vkGetImageMemoryRequirements2( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getImageMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + d.vkGetImageMemoryRequirements2( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::getBufferMemoryRequirements2( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetBufferMemoryRequirements2( m_device, + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getBufferMemoryRequirements2( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + d.vkGetBufferMemoryRequirements2( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getBufferMemoryRequirements2( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + d.vkGetBufferMemoryRequirements2( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2( + const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageSparseMemoryRequirements2( + m_device, + reinterpret_cast( pInfo ), + pSparseMemoryRequirementCount, + reinterpret_cast( pSparseMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector sparseMemoryRequirements; + uint32_t sparseMemoryRequirementCount; + d.vkGetImageSparseMemoryRequirements2( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetImageSparseMemoryRequirements2( + m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + return sparseMemoryRequirements; + } + + template < + typename SparseImageMemoryRequirements2Allocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements2( + const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info, + SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector sparseMemoryRequirements( + sparseImageMemoryRequirements2Allocator ); + uint32_t sparseMemoryRequirementCount; + d.vkGetImageSparseMemoryRequirements2( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetImageSparseMemoryRequirements2( + m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + return sparseMemoryRequirements; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 * pFeatures, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast( pFeatures ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 + PhysicalDevice::getFeatures2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 features; + d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast( &features ) ); + return features; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getFeatures2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 & features = + structureChain.template get(); + d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast( &features ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void PhysicalDevice::getProperties2( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceProperties2( m_physicalDevice, + reinterpret_cast( pProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 + PhysicalDevice::getProperties2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 properties; + d.vkGetPhysicalDeviceProperties2( m_physicalDevice, + reinterpret_cast( &properties ) ); + return properties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getProperties2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 & properties = + structureChain.template get(); + d.vkGetPhysicalDeviceProperties2( m_physicalDevice, + reinterpret_cast( &properties ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + PhysicalDevice::getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::FormatProperties2 * pFormatProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceFormatProperties2( + m_physicalDevice, static_cast( format ), reinterpret_cast( pFormatProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties2 + PhysicalDevice::getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::FormatProperties2 formatProperties; + d.vkGetPhysicalDeviceFormatProperties2( + m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); + return formatProperties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::FormatProperties2 & formatProperties = + structureChain.template get(); + d.vkGetPhysicalDeviceFormatProperties2( + m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 * pImageFormatInfo, + VULKAN_HPP_NAMESPACE::ImageFormatProperties2 * pImageFormatProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceImageFormatProperties2( + m_physicalDevice, + reinterpret_cast( pImageFormatInfo ), + reinterpret_cast( pImageFormatProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + PhysicalDevice::getImageFormatProperties2( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ImageFormatProperties2 imageFormatProperties; + Result result = static_cast( d.vkGetPhysicalDeviceImageFormatProperties2( + m_physicalDevice, + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + return createResultValue( + result, imageFormatProperties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getImageFormatProperties2( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::ImageFormatProperties2 & imageFormatProperties = + structureChain.template get(); + Result result = static_cast( d.vkGetPhysicalDeviceImageFormatProperties2( + m_physicalDevice, + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + return createResultValue( + result, structureChain, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + PhysicalDevice::getQueueFamilyProperties2( uint32_t * pQueueFamilyPropertyCount, + VULKAN_HPP_NAMESPACE::QueueFamilyProperties2 * pQueueFamilyProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceQueueFamilyProperties2( + m_physicalDevice, + pQueueFamilyPropertyCount, + reinterpret_cast( pQueueFamilyProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getQueueFamilyProperties2( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector queueFamilyProperties; + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + d.vkGetPhysicalDeviceQueueFamilyProperties2( + m_physicalDevice, + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + return queueFamilyProperties; + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getQueueFamilyProperties2( QueueFamilyProperties2Allocator & queueFamilyProperties2Allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector queueFamilyProperties( + queueFamilyProperties2Allocator ); + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + d.vkGetPhysicalDeviceQueueFamilyProperties2( + m_physicalDevice, + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + return queueFamilyProperties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getQueueFamilyProperties2( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + std::vector returnVector( queueFamilyPropertyCount ); + std::vector queueFamilyProperties( queueFamilyPropertyCount ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + queueFamilyProperties[i].pNext = + returnVector[i].template get().pNext; + } + d.vkGetPhysicalDeviceQueueFamilyProperties2( + m_physicalDevice, + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + returnVector[i].template get() = queueFamilyProperties[i]; + } + return returnVector; + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getQueueFamilyProperties2( StructureChainAllocator & structureChainAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + std::vector returnVector( queueFamilyPropertyCount, + structureChainAllocator ); + std::vector queueFamilyProperties( queueFamilyPropertyCount ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + queueFamilyProperties[i].pNext = + returnVector[i].template get().pNext; + } + d.vkGetPhysicalDeviceQueueFamilyProperties2( + m_physicalDevice, + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + returnVector[i].template get() = queueFamilyProperties[i]; + } + return returnVector; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + PhysicalDevice::getMemoryProperties2( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 * pMemoryProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceMemoryProperties2( + m_physicalDevice, reinterpret_cast( pMemoryProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 + PhysicalDevice::getMemoryProperties2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 memoryProperties; + d.vkGetPhysicalDeviceMemoryProperties2( + m_physicalDevice, reinterpret_cast( &memoryProperties ) ); + return memoryProperties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getMemoryProperties2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 & memoryProperties = + structureChain.template get(); + d.vkGetPhysicalDeviceMemoryProperties2( + m_physicalDevice, reinterpret_cast( &memoryProperties ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 * pFormatInfo, + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2 * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceSparseImageFormatProperties2( + m_physicalDevice, + reinterpret_cast( pFormatInfo ), + pPropertyCount, + reinterpret_cast( pProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties2( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties; + uint32_t propertyCount; + d.vkGetPhysicalDeviceSparseImageFormatProperties2( + m_physicalDevice, + reinterpret_cast( &formatInfo ), + &propertyCount, + nullptr ); + properties.resize( propertyCount ); + d.vkGetPhysicalDeviceSparseImageFormatProperties2( + m_physicalDevice, + reinterpret_cast( &formatInfo ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + return properties; + } + + template < + typename SparseImageFormatProperties2Allocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties2( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo, + SparseImageFormatProperties2Allocator & sparseImageFormatProperties2Allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties( + sparseImageFormatProperties2Allocator ); + uint32_t propertyCount; + d.vkGetPhysicalDeviceSparseImageFormatProperties2( + m_physicalDevice, + reinterpret_cast( &formatInfo ), + &propertyCount, + nullptr ); + properties.resize( propertyCount ); + d.vkGetPhysicalDeviceSparseImageFormatProperties2( + m_physicalDevice, + reinterpret_cast( &formatInfo ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + return properties; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::trimCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkTrimCommandPool( + m_device, static_cast( commandPool ), static_cast( flags ) ); + } + + template + VULKAN_HPP_INLINE void Device::getQueue2( const VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 * pQueueInfo, + VULKAN_HPP_NAMESPACE::Queue * pQueue, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceQueue2( + m_device, reinterpret_cast( pQueueInfo ), reinterpret_cast( pQueue ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Queue + Device::getQueue2( const VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 & queueInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Queue queue; + d.vkGetDeviceQueue2( + m_device, reinterpret_cast( &queueInfo ), reinterpret_cast( &queue ) ); + return queue; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createSamplerYcbcrConversion( const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion * pYcbcrConversion, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateSamplerYcbcrConversion( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pYcbcrConversion ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createSamplerYcbcrConversion( const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion; + Result result = static_cast( + d.vkCreateSamplerYcbcrConversion( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &ycbcrConversion ) ) ); + return createResultValue( + result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING "::Device::createSamplerYcbcrConversion" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createSamplerYcbcrConversionUnique( + const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion; + Result result = static_cast( + d.vkCreateSamplerYcbcrConversion( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &ycbcrConversion ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING "::Device::createSamplerYcbcrConversionUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::destroySamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySamplerYcbcrConversion( m_device, + static_cast( ycbcrConversion ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroySamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySamplerYcbcrConversion( + m_device, + static_cast( ycbcrConversion ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySamplerYcbcrConversion( m_device, + static_cast( ycbcrConversion ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySamplerYcbcrConversion( + m_device, + static_cast( ycbcrConversion ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplate( + const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate * pDescriptorUpdateTemplate, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDescriptorUpdateTemplate( + m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pDescriptorUpdateTemplate ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createDescriptorUpdateTemplate( const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate; + Result result = static_cast( d.vkCreateDescriptorUpdateTemplate( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &descriptorUpdateTemplate ) ) ); + return createResultValue( + result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplate" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createDescriptorUpdateTemplateUnique( + const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate; + Result result = static_cast( d.vkCreateDescriptorUpdateTemplate( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &descriptorUpdateTemplate ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, + descriptorUpdateTemplate, + VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplateUnique", + deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::destroyDescriptorUpdateTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorUpdateTemplate( m_device, + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyDescriptorUpdateTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorUpdateTemplate( + m_device, + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorUpdateTemplate( m_device, + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorUpdateTemplate( + m_device, + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::updateDescriptorSetWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorSet descriptorSet, + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + const void * pData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUpdateDescriptorSetWithTemplate( m_device, + static_cast( descriptorSet ), + static_cast( descriptorUpdateTemplate ), + pData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::updateDescriptorSetWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorSet descriptorSet, + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + DataType const & data, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUpdateDescriptorSetWithTemplate( m_device, + static_cast( descriptorSet ), + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( &data ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo * pExternalBufferInfo, + VULKAN_HPP_NAMESPACE::ExternalBufferProperties * pExternalBufferProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceExternalBufferProperties( + m_physicalDevice, + reinterpret_cast( pExternalBufferInfo ), + reinterpret_cast( pExternalBufferProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalBufferProperties + PhysicalDevice::getExternalBufferProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ExternalBufferProperties externalBufferProperties; + d.vkGetPhysicalDeviceExternalBufferProperties( + m_physicalDevice, + reinterpret_cast( &externalBufferInfo ), + reinterpret_cast( &externalBufferProperties ) ); + return externalBufferProperties; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void PhysicalDevice::getExternalFenceProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo * pExternalFenceInfo, + VULKAN_HPP_NAMESPACE::ExternalFenceProperties * pExternalFenceProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceExternalFenceProperties( + m_physicalDevice, + reinterpret_cast( pExternalFenceInfo ), + reinterpret_cast( pExternalFenceProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalFenceProperties + PhysicalDevice::getExternalFenceProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ExternalFenceProperties externalFenceProperties; + d.vkGetPhysicalDeviceExternalFenceProperties( + m_physicalDevice, + reinterpret_cast( &externalFenceInfo ), + reinterpret_cast( &externalFenceProperties ) ); + return externalFenceProperties; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphoreProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo, + VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties * pExternalSemaphoreProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceExternalSemaphoreProperties( + m_physicalDevice, + reinterpret_cast( pExternalSemaphoreInfo ), + reinterpret_cast( pExternalSemaphoreProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties + PhysicalDevice::getExternalSemaphoreProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties externalSemaphoreProperties; + d.vkGetPhysicalDeviceExternalSemaphoreProperties( + m_physicalDevice, + reinterpret_cast( &externalSemaphoreInfo ), + reinterpret_cast( &externalSemaphoreProperties ) ); + return externalSemaphoreProperties; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::getDescriptorSetLayoutSupport( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo * pCreateInfo, + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport * pSupport, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDescriptorSetLayoutSupport( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pSupport ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport + Device::getDescriptorSetLayoutSupport( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport support; + d.vkGetDescriptorSetLayoutSupport( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( &support ) ); + return support; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getDescriptorSetLayoutSupport( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport & support = + structureChain.template get(); + d.vkGetDescriptorSetLayoutSupport( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( &support ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_VERSION_1_2 === + + template + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndirectCount( m_commandBuffer, + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndexedIndirectCount( m_commandBuffer, + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::RenderPass * pRenderPass, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateRenderPass2( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pRenderPass ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::RenderPass renderPass; + Result result = static_cast( + d.vkCreateRenderPass2( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &renderPass ) ) ); + return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPass2" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createRenderPass2Unique( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::RenderPass renderPass; + Result result = static_cast( + d.vkCreateRenderPass2( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &renderPass ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, renderPass, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPass2Unique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::beginRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo * pRenderPassBegin, + const VULKAN_HPP_NAMESPACE::SubpassBeginInfo * pSubpassBeginInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginRenderPass2( m_commandBuffer, + reinterpret_cast( pRenderPassBegin ), + reinterpret_cast( pSubpassBeginInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::beginRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin, + const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginRenderPass2( m_commandBuffer, + reinterpret_cast( &renderPassBegin ), + reinterpret_cast( &subpassBeginInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo * pSubpassBeginInfo, + const VULKAN_HPP_NAMESPACE::SubpassEndInfo * pSubpassEndInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdNextSubpass2( m_commandBuffer, + reinterpret_cast( pSubpassBeginInfo ), + reinterpret_cast( pSubpassEndInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo, + const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdNextSubpass2( m_commandBuffer, + reinterpret_cast( &subpassBeginInfo ), + reinterpret_cast( &subpassEndInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2( const VULKAN_HPP_NAMESPACE::SubpassEndInfo * pSubpassEndInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndRenderPass2( m_commandBuffer, reinterpret_cast( pSubpassEndInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2( const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndRenderPass2( m_commandBuffer, reinterpret_cast( &subpassEndInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkResetQueryPool( m_device, static_cast( queryPool ), firstQuery, queryCount ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSemaphoreCounterValue( + VULKAN_HPP_NAMESPACE::Semaphore semaphore, uint64_t * pValue, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetSemaphoreCounterValue( m_device, static_cast( semaphore ), pValue ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getSemaphoreCounterValue( VULKAN_HPP_NAMESPACE::Semaphore semaphore, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + uint64_t value; + Result result = + static_cast( d.vkGetSemaphoreCounterValue( m_device, static_cast( semaphore ), &value ) ); + return createResultValue( result, value, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreCounterValue" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::waitSemaphores( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo * pWaitInfo, + uint64_t timeout, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkWaitSemaphores( m_device, reinterpret_cast( pWaitInfo ), timeout ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitSemaphores( + const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo, uint64_t timeout, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkWaitSemaphores( m_device, reinterpret_cast( &waitInfo ), timeout ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::waitSemaphores", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eTimeout } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::signalSemaphore( + const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo * pSignalInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkSignalSemaphore( m_device, reinterpret_cast( pSignalInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::signalSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkSignalSemaphore( m_device, reinterpret_cast( &signalInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::signalSemaphore" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo * pInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetBufferDeviceAddress( m_device, reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetBufferDeviceAddress( m_device, reinterpret_cast( &info ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddress( + const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetBufferOpaqueCaptureAddress( m_device, reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddress( + const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetBufferOpaqueCaptureAddress( m_device, reinterpret_cast( &info ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE uint64_t + Device::getMemoryOpaqueCaptureAddress( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo * pInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetDeviceMemoryOpaqueCaptureAddress( + m_device, reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE uint64_t + Device::getMemoryOpaqueCaptureAddress( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetDeviceMemoryOpaqueCaptureAddress( + m_device, reinterpret_cast( &info ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_VERSION_1_3 === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getToolProperties( uint32_t * pToolCount, + VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties * pToolProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceToolProperties( + m_physicalDevice, pToolCount, reinterpret_cast( pToolProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getToolProperties( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector toolProperties; + uint32_t toolCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceToolProperties( m_physicalDevice, &toolCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && toolCount ) + { + toolProperties.resize( toolCount ); + result = static_cast( d.vkGetPhysicalDeviceToolProperties( + m_physicalDevice, &toolCount, reinterpret_cast( toolProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() ); + if ( toolCount < toolProperties.size() ) + { + toolProperties.resize( toolCount ); + } + } + return createResultValue( + result, toolProperties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getToolProperties" ); + } + + template < + typename PhysicalDeviceToolPropertiesAllocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getToolProperties( PhysicalDeviceToolPropertiesAllocator & physicalDeviceToolPropertiesAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector toolProperties( + physicalDeviceToolPropertiesAllocator ); + uint32_t toolCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceToolProperties( m_physicalDevice, &toolCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && toolCount ) + { + toolProperties.resize( toolCount ); + result = static_cast( d.vkGetPhysicalDeviceToolProperties( + m_physicalDevice, &toolCount, reinterpret_cast( toolProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() ); + if ( toolCount < toolProperties.size() ) + { + toolProperties.resize( toolCount ); + } + } + return createResultValue( + result, toolProperties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getToolProperties" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createPrivateDataSlot( const VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::PrivateDataSlot * pPrivateDataSlot, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreatePrivateDataSlot( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPrivateDataSlot ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::createPrivateDataSlot( const VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot; + Result result = static_cast( + d.vkCreatePrivateDataSlot( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &privateDataSlot ) ) ); + return createResultValue( result, privateDataSlot, VULKAN_HPP_NAMESPACE_STRING "::Device::createPrivateDataSlot" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createPrivateDataSlotUnique( const VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot; + Result result = static_cast( + d.vkCreatePrivateDataSlot( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &privateDataSlot ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, privateDataSlot, VULKAN_HPP_NAMESPACE_STRING "::Device::createPrivateDataSlotUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyPrivateDataSlot( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPrivateDataSlot( m_device, + static_cast( privateDataSlot ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyPrivateDataSlot( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPrivateDataSlot( m_device, + static_cast( privateDataSlot ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPrivateDataSlot( m_device, + static_cast( privateDataSlot ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPrivateDataSlot( m_device, + static_cast( privateDataSlot ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::setPrivateData( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t data, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkSetPrivateData( m_device, + static_cast( objectType ), + objectHandle, + static_cast( privateDataSlot ), + data ) ); + } +#else + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::setPrivateData( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t data, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkSetPrivateData( m_device, + static_cast( objectType ), + objectHandle, + static_cast( privateDataSlot ), + data ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setPrivateData" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::getPrivateData( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t * pData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPrivateData( m_device, + static_cast( objectType ), + objectHandle, + static_cast( privateDataSlot ), + pData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t + Device::getPrivateData( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + uint64_t data; + d.vkGetPrivateData( m_device, + static_cast( objectType ), + objectHandle, + static_cast( privateDataSlot ), + &data ); + return data; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::setEvent2( VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::DependencyInfo * pDependencyInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetEvent2( + m_commandBuffer, static_cast( event ), reinterpret_cast( pDependencyInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::setEvent2( VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetEvent2( + m_commandBuffer, static_cast( event ), reinterpret_cast( &dependencyInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::resetEvent2( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResetEvent2( + m_commandBuffer, static_cast( event ), static_cast( stageMask ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::waitEvents2( uint32_t eventCount, + const VULKAN_HPP_NAMESPACE::Event * pEvents, + const VULKAN_HPP_NAMESPACE::DependencyInfo * pDependencyInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWaitEvents2( m_commandBuffer, + eventCount, + reinterpret_cast( pEvents ), + reinterpret_cast( pDependencyInfos ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::waitEvents2( ArrayProxy const & events, + ArrayProxy const & dependencyInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( events.size() == dependencyInfos.size() ); +# else + if ( events.size() != dependencyInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::waitEvents2: events.size() != dependencyInfos.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdWaitEvents2( m_commandBuffer, + events.size(), + reinterpret_cast( events.data() ), + reinterpret_cast( dependencyInfos.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2( const VULKAN_HPP_NAMESPACE::DependencyInfo * pDependencyInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPipelineBarrier2( m_commandBuffer, reinterpret_cast( pDependencyInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2( const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPipelineBarrier2( m_commandBuffer, reinterpret_cast( &dependencyInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp2( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteTimestamp2( + m_commandBuffer, static_cast( stage ), static_cast( queryPool ), query ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::submit2( uint32_t submitCount, + const VULKAN_HPP_NAMESPACE::SubmitInfo2 * pSubmits, + VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkQueueSubmit2( + m_queue, submitCount, reinterpret_cast( pSubmits ), static_cast( fence ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Queue::submit2( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkQueueSubmit2( m_queue, + submits.size(), + reinterpret_cast( submits.data() ), + static_cast( fence ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit2" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 * pCopyBufferInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBuffer2( m_commandBuffer, reinterpret_cast( pCopyBufferInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 & copyBufferInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBuffer2( m_commandBuffer, reinterpret_cast( ©BufferInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::copyImage2( const VULKAN_HPP_NAMESPACE::CopyImageInfo2 * pCopyImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImage2( m_commandBuffer, reinterpret_cast( pCopyImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::copyImage2( const VULKAN_HPP_NAMESPACE::CopyImageInfo2 & copyImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImage2( m_commandBuffer, reinterpret_cast( ©ImageInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::copyBufferToImage2( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 * pCopyBufferToImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBufferToImage2( m_commandBuffer, + reinterpret_cast( pCopyBufferToImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::copyBufferToImage2( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 & copyBufferToImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBufferToImage2( m_commandBuffer, + reinterpret_cast( ©BufferToImageInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::copyImageToBuffer2( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 * pCopyImageToBufferInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImageToBuffer2( m_commandBuffer, + reinterpret_cast( pCopyImageToBufferInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::copyImageToBuffer2( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 & copyImageToBufferInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImageToBuffer2( m_commandBuffer, + reinterpret_cast( ©ImageToBufferInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::blitImage2( const VULKAN_HPP_NAMESPACE::BlitImageInfo2 * pBlitImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBlitImage2( m_commandBuffer, reinterpret_cast( pBlitImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::blitImage2( const VULKAN_HPP_NAMESPACE::BlitImageInfo2 & blitImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBlitImage2( m_commandBuffer, reinterpret_cast( &blitImageInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::resolveImage2( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 * pResolveImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResolveImage2( m_commandBuffer, reinterpret_cast( pResolveImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::resolveImage2( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 & resolveImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResolveImage2( m_commandBuffer, reinterpret_cast( &resolveImageInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::beginRendering( const VULKAN_HPP_NAMESPACE::RenderingInfo * pRenderingInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginRendering( m_commandBuffer, reinterpret_cast( pRenderingInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::beginRendering( const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginRendering( m_commandBuffer, reinterpret_cast( &renderingInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::endRendering( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndRendering( m_commandBuffer ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setCullMode( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCullMode( m_commandBuffer, static_cast( cullMode ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setFrontFace( VULKAN_HPP_NAMESPACE::FrontFace frontFace, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetFrontFace( m_commandBuffer, static_cast( frontFace ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveTopology( VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetPrimitiveTopology( m_commandBuffer, static_cast( primitiveTopology ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCount( uint32_t viewportCount, + const VULKAN_HPP_NAMESPACE::Viewport * pViewports, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewportWithCount( m_commandBuffer, viewportCount, reinterpret_cast( pViewports ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::setViewportWithCount( ArrayProxy const & viewports, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewportWithCount( + m_commandBuffer, viewports.size(), reinterpret_cast( viewports.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCount( uint32_t scissorCount, + const VULKAN_HPP_NAMESPACE::Rect2D * pScissors, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetScissorWithCount( m_commandBuffer, scissorCount, reinterpret_cast( pScissors ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::setScissorWithCount( ArrayProxy const & scissors, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetScissorWithCount( + m_commandBuffer, scissors.size(), reinterpret_cast( scissors.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2( uint32_t firstBinding, + uint32_t bindingCount, + const VULKAN_HPP_NAMESPACE::Buffer * pBuffers, + const VULKAN_HPP_NAMESPACE::DeviceSize * pOffsets, + const VULKAN_HPP_NAMESPACE::DeviceSize * pSizes, + const VULKAN_HPP_NAMESPACE::DeviceSize * pStrides, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindVertexBuffers2( m_commandBuffer, + firstBinding, + bindingCount, + reinterpret_cast( pBuffers ), + reinterpret_cast( pOffsets ), + reinterpret_cast( pSizes ), + reinterpret_cast( pStrides ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::bindVertexBuffers2( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes, + ArrayProxy const & strides, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); + VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() ); + VULKAN_HPP_ASSERT( strides.empty() || buffers.size() == strides.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindVertexBuffers2: buffers.size() != offsets.size()" ); + } + if ( !sizes.empty() && buffers.size() != sizes.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindVertexBuffers2: buffers.size() != sizes.size()" ); + } + if ( !strides.empty() && buffers.size() != strides.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindVertexBuffers2: buffers.size() != strides.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdBindVertexBuffers2( m_commandBuffer, + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ), + reinterpret_cast( sizes.data() ), + reinterpret_cast( strides.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::setDepthTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthTestEnable( m_commandBuffer, static_cast( depthTestEnable ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setDepthWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthWriteEnable( m_commandBuffer, static_cast( depthWriteEnable ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setDepthCompareOp( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthCompareOp( m_commandBuffer, static_cast( depthCompareOp ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setDepthBoundsTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthBoundsTestEnable( m_commandBuffer, static_cast( depthBoundsTestEnable ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setStencilTestEnable( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetStencilTestEnable( m_commandBuffer, static_cast( stencilTestEnable ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setStencilOp( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + VULKAN_HPP_NAMESPACE::StencilOp failOp, + VULKAN_HPP_NAMESPACE::StencilOp passOp, + VULKAN_HPP_NAMESPACE::StencilOp depthFailOp, + VULKAN_HPP_NAMESPACE::CompareOp compareOp, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetStencilOp( m_commandBuffer, + static_cast( faceMask ), + static_cast( failOp ), + static_cast( passOp ), + static_cast( depthFailOp ), + static_cast( compareOp ) ); + } + + template + VULKAN_HPP_INLINE void + CommandBuffer::setRasterizerDiscardEnable( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetRasterizerDiscardEnable( m_commandBuffer, static_cast( rasterizerDiscardEnable ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setDepthBiasEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthBiasEnable( m_commandBuffer, static_cast( depthBiasEnable ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveRestartEnable( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetPrimitiveRestartEnable( m_commandBuffer, static_cast( primitiveRestartEnable ) ); + } + + template + VULKAN_HPP_INLINE void + Device::getBufferMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceBufferMemoryRequirements( m_device, + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getBufferMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + d.vkGetDeviceBufferMemoryRequirements( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getBufferMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + d.vkGetDeviceBufferMemoryRequirements( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::getImageMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceImageMemoryRequirements( m_device, + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getImageMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + d.vkGetDeviceImageMemoryRequirements( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getImageMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + d.vkGetDeviceImageMemoryRequirements( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceImageSparseMemoryRequirements( + m_device, + reinterpret_cast( pInfo ), + pSparseMemoryRequirementCount, + reinterpret_cast( pSparseMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector sparseMemoryRequirements; + uint32_t sparseMemoryRequirementCount; + d.vkGetDeviceImageSparseMemoryRequirements( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetDeviceImageSparseMemoryRequirements( + m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + return sparseMemoryRequirements; + } + + template < + typename SparseImageMemoryRequirements2Allocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector sparseMemoryRequirements( + sparseImageMemoryRequirements2Allocator ); + uint32_t sparseMemoryRequirementCount; + d.vkGetDeviceImageSparseMemoryRequirements( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetDeviceImageSparseMemoryRequirements( + m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + return sparseMemoryRequirements; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_surface === + + template + VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySurfaceKHR( + m_instance, static_cast( surface ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Instance::destroySurfaceKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySurfaceKHR( m_instance, + static_cast( surface ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Instance::destroy( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySurfaceKHR( + m_instance, static_cast( surface ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Instance::destroy( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySurfaceKHR( m_instance, + static_cast( surface ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, + VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + VULKAN_HPP_NAMESPACE::Bool32 * pSupported, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, + queueFamilyIndex, + static_cast( surface ), + reinterpret_cast( pSupported ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, + VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Bool32 supported; + Result result = + static_cast( d.vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, + queueFamilyIndex, + static_cast( surface ), + reinterpret_cast( &supported ) ) ); + return createResultValue( result, supported, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceSupportKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR * pSurfaceCapabilities, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSurfaceCapabilitiesKHR( + m_physicalDevice, + static_cast( surface ), + reinterpret_cast( pSurfaceCapabilities ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + PhysicalDevice::getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities; + Result result = static_cast( d.vkGetPhysicalDeviceSurfaceCapabilitiesKHR( + m_physicalDevice, + static_cast( surface ), + reinterpret_cast( &surfaceCapabilities ) ) ); + return createResultValue( + result, surfaceCapabilities, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilitiesKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + uint32_t * pSurfaceFormatCount, + VULKAN_HPP_NAMESPACE::SurfaceFormatKHR * pSurfaceFormats, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, + static_cast( surface ), + pSurfaceFormatCount, + reinterpret_cast( pSurfaceFormats ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector surfaceFormats; + uint32_t surfaceFormatCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormatsKHR( + m_physicalDevice, static_cast( surface ), &surfaceFormatCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && surfaceFormatCount ) + { + surfaceFormats.resize( surfaceFormatCount ); + result = static_cast( + d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, + static_cast( surface ), + &surfaceFormatCount, + reinterpret_cast( surfaceFormats.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); + if ( surfaceFormatCount < surfaceFormats.size() ) + { + surfaceFormats.resize( surfaceFormatCount ); + } + } + return createResultValue( + result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormatsKHR" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + SurfaceFormatKHRAllocator & surfaceFormatKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector surfaceFormats( surfaceFormatKHRAllocator ); + uint32_t surfaceFormatCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormatsKHR( + m_physicalDevice, static_cast( surface ), &surfaceFormatCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && surfaceFormatCount ) + { + surfaceFormats.resize( surfaceFormatCount ); + result = static_cast( + d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, + static_cast( surface ), + &surfaceFormatCount, + reinterpret_cast( surfaceFormats.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); + if ( surfaceFormatCount < surfaceFormats.size() ) + { + surfaceFormats.resize( surfaceFormatCount ); + } + } + return createResultValue( + result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormatsKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + uint32_t * pPresentModeCount, + VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, + static_cast( surface ), + pPresentModeCount, + reinterpret_cast( pPresentModes ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector presentModes; + uint32_t presentModeCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModesKHR( + m_physicalDevice, static_cast( surface ), &presentModeCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && presentModeCount ) + { + presentModes.resize( presentModeCount ); + result = static_cast( + d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, + static_cast( surface ), + &presentModeCount, + reinterpret_cast( presentModes.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); + if ( presentModeCount < presentModes.size() ) + { + presentModes.resize( presentModeCount ); + } + } + return createResultValue( + result, presentModes, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModesKHR" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + PresentModeKHRAllocator & presentModeKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector presentModes( presentModeKHRAllocator ); + uint32_t presentModeCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModesKHR( + m_physicalDevice, static_cast( surface ), &presentModeCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && presentModeCount ) + { + presentModes.resize( presentModeCount ); + result = static_cast( + d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, + static_cast( surface ), + &presentModeCount, + reinterpret_cast( presentModes.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); + if ( presentModeCount < presentModes.size() ) + { + presentModes.resize( presentModeCount ); + } + } + return createResultValue( + result, presentModes, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModesKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_swapchain === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createSwapchainKHR( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchain, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateSwapchainKHR( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSwapchain ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createSwapchainKHR( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain; + Result result = static_cast( + d.vkCreateSwapchainKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &swapchain ) ) ); + return createResultValue( result, swapchain, VULKAN_HPP_NAMESPACE_STRING "::Device::createSwapchainKHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createSwapchainKHRUnique( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain; + Result result = static_cast( + d.vkCreateSwapchainKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &swapchain ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, swapchain, VULKAN_HPP_NAMESPACE_STRING "::Device::createSwapchainKHRUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroySwapchainKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySwapchainKHR( m_device, + static_cast( swapchain ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroySwapchainKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySwapchainKHR( m_device, + static_cast( swapchain ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySwapchainKHR( m_device, + static_cast( swapchain ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySwapchainKHR( m_device, + static_cast( swapchain ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getSwapchainImagesKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + uint32_t * pSwapchainImageCount, + VULKAN_HPP_NAMESPACE::Image * pSwapchainImages, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetSwapchainImagesKHR( m_device, + static_cast( swapchain ), + pSwapchainImageCount, + reinterpret_cast( pSwapchainImages ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getSwapchainImagesKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector swapchainImages; + uint32_t swapchainImageCount; + Result result; + do + { + result = static_cast( d.vkGetSwapchainImagesKHR( + m_device, static_cast( swapchain ), &swapchainImageCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && swapchainImageCount ) + { + swapchainImages.resize( swapchainImageCount ); + result = + static_cast( d.vkGetSwapchainImagesKHR( m_device, + static_cast( swapchain ), + &swapchainImageCount, + reinterpret_cast( swapchainImages.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() ); + if ( swapchainImageCount < swapchainImages.size() ) + { + swapchainImages.resize( swapchainImageCount ); + } + } + return createResultValue( result, swapchainImages, VULKAN_HPP_NAMESPACE_STRING "::Device::getSwapchainImagesKHR" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getSwapchainImagesKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + ImageAllocator & imageAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector swapchainImages( imageAllocator ); + uint32_t swapchainImageCount; + Result result; + do + { + result = static_cast( d.vkGetSwapchainImagesKHR( + m_device, static_cast( swapchain ), &swapchainImageCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && swapchainImageCount ) + { + swapchainImages.resize( swapchainImageCount ); + result = + static_cast( d.vkGetSwapchainImagesKHR( m_device, + static_cast( swapchain ), + &swapchainImageCount, + reinterpret_cast( swapchainImages.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() ); + if ( swapchainImageCount < swapchainImages.size() ) + { + swapchainImages.resize( swapchainImageCount ); + } + } + return createResultValue( result, swapchainImages, VULKAN_HPP_NAMESPACE_STRING "::Device::getSwapchainImagesKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::acquireNextImageKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + uint64_t timeout, + VULKAN_HPP_NAMESPACE::Semaphore semaphore, + VULKAN_HPP_NAMESPACE::Fence fence, + uint32_t * pImageIndex, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkAcquireNextImageKHR( m_device, + static_cast( swapchain ), + timeout, + static_cast( semaphore ), + static_cast( fence ), + pImageIndex ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue + Device::acquireNextImageKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + uint64_t timeout, + VULKAN_HPP_NAMESPACE::Semaphore semaphore, + VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + uint32_t imageIndex; + Result result = static_cast( d.vkAcquireNextImageKHR( m_device, + static_cast( swapchain ), + timeout, + static_cast( semaphore ), + static_cast( fence ), + &imageIndex ) ); + return createResultValue( result, + imageIndex, + VULKAN_HPP_NAMESPACE_STRING "::Device::acquireNextImageKHR", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, + VULKAN_HPP_NAMESPACE::Result::eTimeout, + VULKAN_HPP_NAMESPACE::Result::eNotReady, + VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::presentKHR( + const VULKAN_HPP_NAMESPACE::PresentInfoKHR * pPresentInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkQueuePresentKHR( m_queue, reinterpret_cast( pPresentInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Queue::presentKHR( const VULKAN_HPP_NAMESPACE::PresentInfoKHR & presentInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = + static_cast( d.vkQueuePresentKHR( m_queue, reinterpret_cast( &presentInfo ) ) ); + return createResultValue( + result, + VULKAN_HPP_NAMESPACE_STRING "::Queue::presentKHR", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHR( + VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDeviceGroupPresentCapabilitiesKHR( + m_device, reinterpret_cast( pDeviceGroupPresentCapabilities ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::getGroupPresentCapabilitiesKHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR deviceGroupPresentCapabilities; + Result result = static_cast( d.vkGetDeviceGroupPresentCapabilitiesKHR( + m_device, reinterpret_cast( &deviceGroupPresentCapabilities ) ) ); + return createResultValue( + result, deviceGroupPresentCapabilities, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupPresentCapabilitiesKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR * pModes, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetDeviceGroupSurfacePresentModesKHR( m_device, + static_cast( surface ), + reinterpret_cast( pModes ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes; + Result result = static_cast( + d.vkGetDeviceGroupSurfacePresentModesKHR( m_device, + static_cast( surface ), + reinterpret_cast( &modes ) ) ); + return createResultValue( result, modes, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupSurfacePresentModesKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + uint32_t * pRectCount, + VULKAN_HPP_NAMESPACE::Rect2D * pRects, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDevicePresentRectanglesKHR( + m_physicalDevice, static_cast( surface ), pRectCount, reinterpret_cast( pRects ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector rects; + uint32_t rectCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDevicePresentRectanglesKHR( + m_physicalDevice, static_cast( surface ), &rectCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && rectCount ) + { + rects.resize( rectCount ); + result = static_cast( + d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, + static_cast( surface ), + &rectCount, + reinterpret_cast( rects.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( rectCount <= rects.size() ); + if ( rectCount < rects.size() ) + { + rects.resize( rectCount ); + } + } + return createResultValue( result, rects, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getPresentRectanglesKHR" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + Rect2DAllocator & rect2DAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector rects( rect2DAllocator ); + uint32_t rectCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDevicePresentRectanglesKHR( + m_physicalDevice, static_cast( surface ), &rectCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && rectCount ) + { + rects.resize( rectCount ); + result = static_cast( + d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, + static_cast( surface ), + &rectCount, + reinterpret_cast( rects.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( rectCount <= rects.size() ); + if ( rectCount < rects.size() ) + { + rects.resize( rectCount ); + } + } + return createResultValue( result, rects, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getPresentRectanglesKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::acquireNextImage2KHR( const VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR * pAcquireInfo, + uint32_t * pImageIndex, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkAcquireNextImage2KHR( + m_device, reinterpret_cast( pAcquireInfo ), pImageIndex ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue + Device::acquireNextImage2KHR( const VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR & acquireInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + uint32_t imageIndex; + Result result = static_cast( d.vkAcquireNextImage2KHR( + m_device, reinterpret_cast( &acquireInfo ), &imageIndex ) ); + return createResultValue( result, + imageIndex, + VULKAN_HPP_NAMESPACE_STRING "::Device::acquireNextImage2KHR", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, + VULKAN_HPP_NAMESPACE::Result::eTimeout, + VULKAN_HPP_NAMESPACE::Result::eNotReady, + VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_display === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getDisplayPropertiesKHR( uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceDisplayPropertiesKHR( + m_physicalDevice, pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getDisplayPropertiesKHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = + static_cast( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceDisplayPropertiesKHR( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPropertiesKHR" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getDisplayPropertiesKHR( DisplayPropertiesKHRAllocator & displayPropertiesKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties( displayPropertiesKHRAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = + static_cast( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceDisplayPropertiesKHR( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPropertiesKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( + m_physicalDevice, pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getDisplayPlanePropertiesKHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlanePropertiesKHR" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getDisplayPlanePropertiesKHR( + DisplayPlanePropertiesKHRAllocator & displayPlanePropertiesKHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties( + displayPlanePropertiesKHRAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlanePropertiesKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, + uint32_t * pDisplayCount, + VULKAN_HPP_NAMESPACE::DisplayKHR * pDisplays, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDisplayPlaneSupportedDisplaysKHR( + m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast( pDisplays ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector displays; + uint32_t displayCount; + Result result; + do + { + result = static_cast( + d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && displayCount ) + { + displays.resize( displayCount ); + result = static_cast( d.vkGetDisplayPlaneSupportedDisplaysKHR( + m_physicalDevice, planeIndex, &displayCount, reinterpret_cast( displays.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( displayCount <= displays.size() ); + if ( displayCount < displays.size() ) + { + displays.resize( displayCount ); + } + } + return createResultValue( + result, displays, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, + DisplayKHRAllocator & displayKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector displays( displayKHRAllocator ); + uint32_t displayCount; + Result result; + do + { + result = static_cast( + d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && displayCount ) + { + displays.resize( displayCount ); + result = static_cast( d.vkGetDisplayPlaneSupportedDisplaysKHR( + m_physicalDevice, planeIndex, &displayCount, reinterpret_cast( displays.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( displayCount <= displays.size() ); + if ( displayCount < displays.size() ) + { + displays.resize( displayCount ); + } + } + return createResultValue( + result, displays, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getDisplayModePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetDisplayModePropertiesKHR( m_physicalDevice, + static_cast( display ), + pPropertyCount, + reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getDisplayModePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetDisplayModePropertiesKHR( + m_physicalDevice, static_cast( display ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + d.vkGetDisplayModePropertiesKHR( m_physicalDevice, + static_cast( display ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayModePropertiesKHR" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getDisplayModePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, + DisplayModePropertiesKHRAllocator & displayModePropertiesKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties( + displayModePropertiesKHRAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetDisplayModePropertiesKHR( + m_physicalDevice, static_cast( display ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + d.vkGetDisplayModePropertiesKHR( m_physicalDevice, + static_cast( display ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayModePropertiesKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::createDisplayModeKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DisplayModeKHR * pMode, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateDisplayModeKHR( m_physicalDevice, + static_cast( display ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pMode ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + PhysicalDevice::createDisplayModeKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DisplayModeKHR mode; + Result result = static_cast( + d.vkCreateDisplayModeKHR( m_physicalDevice, + static_cast( display ), + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &mode ) ) ); + return createResultValue( result, mode, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::createDisplayModeKHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::createDisplayModeKHRUnique( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DisplayModeKHR mode; + Result result = static_cast( + d.vkCreateDisplayModeKHR( m_physicalDevice, + static_cast( display ), + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &mode ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, mode, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::createDisplayModeKHRUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getDisplayPlaneCapabilitiesKHR( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode, + uint32_t planeIndex, + VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR * pCapabilities, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, + static_cast( mode ), + planeIndex, + reinterpret_cast( pCapabilities ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + PhysicalDevice::getDisplayPlaneCapabilitiesKHR( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode, + uint32_t planeIndex, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities; + Result result = static_cast( + d.vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, + static_cast( mode ), + planeIndex, + reinterpret_cast( &capabilities ) ) ); + return createResultValue( + result, capabilities, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::createDisplayPlaneSurfaceKHR( const VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateDisplayPlaneSurfaceKHR( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Instance::createDisplayPlaneSurfaceKHR( const VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateDisplayPlaneSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDisplayPlaneSurfaceKHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::createDisplayPlaneSurfaceKHRUnique( const VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateDisplayPlaneSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDisplayPlaneSurfaceKHRUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_display_swapchain === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createSharedSwapchainsKHR( uint32_t swapchainCount, + const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR * pCreateInfos, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateSharedSwapchainsKHR( m_device, + swapchainCount, + reinterpret_cast( pCreateInfos ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSwapchains ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createSharedSwapchainsKHR( + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector swapchains( createInfos.size() ); + Result result = static_cast( + d.vkCreateSharedSwapchainsKHR( m_device, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( swapchains.data() ) ) ); + return createResultValue( result, swapchains, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHR" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createSharedSwapchainsKHR( + ArrayProxy const & createInfos, + Optional allocator, + SwapchainKHRAllocator & swapchainKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector swapchains( createInfos.size(), + swapchainKHRAllocator ); + Result result = static_cast( + d.vkCreateSharedSwapchainsKHR( m_device, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( swapchains.data() ) ) ); + return createResultValue( result, swapchains, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHR" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createSharedSwapchainKHR( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain; + Result result = static_cast( + d.vkCreateSharedSwapchainsKHR( m_device, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &swapchain ) ) ); + return createResultValue( result, swapchain, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainKHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType, SwapchainKHRAllocator>>::type + Device::createSharedSwapchainsKHRUnique( + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector, SwapchainKHRAllocator> uniqueSwapchains; + std::vector swapchains( createInfos.size() ); + Result result = static_cast( + d.vkCreateSharedSwapchainsKHR( m_device, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( swapchains.data() ) ) ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + uniqueSwapchains.reserve( createInfos.size() ); + ObjectDestroy deleter( *this, allocator, d ); + for ( size_t i = 0; i < createInfos.size(); i++ ) + { + uniqueSwapchains.push_back( UniqueHandle( swapchains[i], deleter ) ); + } + } + return createResultValue( + result, std::move( uniqueSwapchains ), VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHRUnique" ); + } + + template >::value, + int>::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType, SwapchainKHRAllocator>>::type + Device::createSharedSwapchainsKHRUnique( + ArrayProxy const & createInfos, + Optional allocator, + SwapchainKHRAllocator & swapchainKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector, SwapchainKHRAllocator> uniqueSwapchains( swapchainKHRAllocator ); + std::vector swapchains( createInfos.size() ); + Result result = static_cast( + d.vkCreateSharedSwapchainsKHR( m_device, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( swapchains.data() ) ) ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + uniqueSwapchains.reserve( createInfos.size() ); + ObjectDestroy deleter( *this, allocator, d ); + for ( size_t i = 0; i < createInfos.size(); i++ ) + { + uniqueSwapchains.push_back( UniqueHandle( swapchains[i], deleter ) ); + } + } + return createResultValue( + result, std::move( uniqueSwapchains ), VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHRUnique" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createSharedSwapchainKHRUnique( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + SwapchainKHR swapchain; + Result result = static_cast( + d.vkCreateSharedSwapchainsKHR( m_device, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &swapchain ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, swapchain, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainKHRUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::createXlibSurfaceKHR( const VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateXlibSurfaceKHR( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Instance::createXlibSurfaceKHR( const VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateXlibSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createXlibSurfaceKHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::createXlibSurfaceKHRUnique( const VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateXlibSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createXlibSurfaceKHRUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, + Display * dpy, + VisualID visualID, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, + Display & dpy, + VisualID visualID, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::createXcbSurfaceKHR( const VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateXcbSurfaceKHR( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Instance::createXcbSurfaceKHR( const VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateXcbSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createXcbSurfaceKHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::createXcbSurfaceKHRUnique( const VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateXcbSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createXcbSurfaceKHRUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, + xcb_connection_t * connection, + xcb_visualid_t visual_id, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, + xcb_connection_t & connection, + xcb_visualid_t visual_id, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::createWaylandSurfaceKHR( const VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateWaylandSurfaceKHR( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Instance::createWaylandSurfaceKHR( const VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateWaylandSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createWaylandSurfaceKHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::createWaylandSurfaceKHRUnique( const VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateWaylandSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createWaylandSurfaceKHRUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( + uint32_t queueFamilyIndex, struct wl_display * display, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( + uint32_t queueFamilyIndex, struct wl_display & display, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::createAndroidSurfaceKHR( const VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateAndroidSurfaceKHR( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Instance::createAndroidSurfaceKHR( const VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateAndroidSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createAndroidSurfaceKHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::createAndroidSurfaceKHRUnique( const VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateAndroidSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createAndroidSurfaceKHRUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::createWin32SurfaceKHR( const VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateWin32SurfaceKHR( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Instance::createWin32SurfaceKHR( const VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateWin32SurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createWin32SurfaceKHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::createWin32SurfaceKHRUnique( const VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateWin32SurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createWin32SurfaceKHRUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( + uint32_t queueFamilyIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex ) ); + } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::createDebugReportCallbackEXT( const VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT * pCallback, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateDebugReportCallbackEXT( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pCallback ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createDebugReportCallbackEXT( const VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback; + Result result = static_cast( + d.vkCreateDebugReportCallbackEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &callback ) ) ); + return createResultValue( + result, callback, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDebugReportCallbackEXT" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + Instance::createDebugReportCallbackEXTUnique( + const VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback; + Result result = static_cast( + d.vkCreateDebugReportCallbackEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &callback ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, callback, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDebugReportCallbackEXTUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Instance::destroyDebugReportCallbackEXT( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDebugReportCallbackEXT( m_instance, + static_cast( callback ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Instance::destroyDebugReportCallbackEXT( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDebugReportCallbackEXT( + m_instance, + static_cast( callback ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Instance::destroy( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDebugReportCallbackEXT( m_instance, + static_cast( callback ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Instance::destroy( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDebugReportCallbackEXT( + m_instance, + static_cast( callback ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags, + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + const char * pLayerPrefix, + const char * pMessage, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDebugReportMessageEXT( m_instance, + static_cast( flags ), + static_cast( objectType ), + object, + location, + messageCode, + pLayerPrefix, + pMessage ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags, + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + const std::string & layerPrefix, + const std::string & message, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDebugReportMessageEXT( m_instance, + static_cast( flags ), + static_cast( objectType ), + object, + location, + messageCode, + layerPrefix.c_str(), + message.c_str() ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_debug_marker === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( + const VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT * pTagInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast( pTagInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::debugMarkerSetObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT & tagInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast( &tagInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::debugMarkerSetObjectTagEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( + const VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT * pNameInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkDebugMarkerSetObjectNameEXT( + m_device, reinterpret_cast( pNameInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::debugMarkerSetObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT & nameInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkDebugMarkerSetObjectNameEXT( + m_device, reinterpret_cast( &nameInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::debugMarkerSetObjectNameEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::debugMarkerBeginEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT * pMarkerInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast( pMarkerInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::debugMarkerBeginEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast( &markerInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDebugMarkerEndEXT( m_commandBuffer ); + } + + template + VULKAN_HPP_INLINE void + CommandBuffer::debugMarkerInsertEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT * pMarkerInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast( pMarkerInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::debugMarkerInsertEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast( &markerInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileKHR * pVideoProfile, + VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR * pCapabilities, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceVideoCapabilitiesKHR( m_physicalDevice, + reinterpret_cast( pVideoProfile ), + reinterpret_cast( pCapabilities ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + PhysicalDevice::getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileKHR & videoProfile, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR capabilities; + Result result = static_cast( + d.vkGetPhysicalDeviceVideoCapabilitiesKHR( m_physicalDevice, + reinterpret_cast( &videoProfile ), + reinterpret_cast( &capabilities ) ) ); + return createResultValue( + result, capabilities, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileKHR & videoProfile, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR & capabilities = + structureChain.template get(); + Result result = static_cast( + d.vkGetPhysicalDeviceVideoCapabilitiesKHR( m_physicalDevice, + reinterpret_cast( &videoProfile ), + reinterpret_cast( &capabilities ) ) ); + return createResultValue( + result, structureChain, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getVideoFormatPropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo, + uint32_t * pVideoFormatPropertyCount, + VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR * pVideoFormatProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceVideoFormatPropertiesKHR( + m_physicalDevice, + reinterpret_cast( pVideoFormatInfo ), + pVideoFormatPropertyCount, + reinterpret_cast( pVideoFormatProperties ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getVideoFormatPropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector videoFormatProperties; + uint32_t videoFormatPropertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceVideoFormatPropertiesKHR( + m_physicalDevice, + reinterpret_cast( &videoFormatInfo ), + &videoFormatPropertyCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && videoFormatPropertyCount ) + { + videoFormatProperties.resize( videoFormatPropertyCount ); + result = static_cast( d.vkGetPhysicalDeviceVideoFormatPropertiesKHR( + m_physicalDevice, + reinterpret_cast( &videoFormatInfo ), + &videoFormatPropertyCount, + reinterpret_cast( videoFormatProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( videoFormatPropertyCount <= videoFormatProperties.size() ); + if ( videoFormatPropertyCount < videoFormatProperties.size() ) + { + videoFormatProperties.resize( videoFormatPropertyCount ); + } + } + return createResultValue( + result, videoFormatProperties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoFormatPropertiesKHR" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getVideoFormatPropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo, + VideoFormatPropertiesKHRAllocator & videoFormatPropertiesKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector videoFormatProperties( + videoFormatPropertiesKHRAllocator ); + uint32_t videoFormatPropertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceVideoFormatPropertiesKHR( + m_physicalDevice, + reinterpret_cast( &videoFormatInfo ), + &videoFormatPropertyCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && videoFormatPropertyCount ) + { + videoFormatProperties.resize( videoFormatPropertyCount ); + result = static_cast( d.vkGetPhysicalDeviceVideoFormatPropertiesKHR( + m_physicalDevice, + reinterpret_cast( &videoFormatInfo ), + &videoFormatPropertyCount, + reinterpret_cast( videoFormatProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( videoFormatPropertyCount <= videoFormatProperties.size() ); + if ( videoFormatPropertyCount < videoFormatProperties.size() ) + { + videoFormatProperties.resize( videoFormatPropertyCount ); + } + } + return createResultValue( + result, videoFormatProperties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoFormatPropertiesKHR" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createVideoSessionKHR( const VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::VideoSessionKHR * pVideoSession, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateVideoSessionKHR( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pVideoSession ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createVideoSessionKHR( const VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession; + Result result = static_cast( + d.vkCreateVideoSessionKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &videoSession ) ) ); + return createResultValue( result, videoSession, VULKAN_HPP_NAMESPACE_STRING "::Device::createVideoSessionKHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createVideoSessionKHRUnique( const VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession; + Result result = static_cast( + d.vkCreateVideoSessionKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &videoSession ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, videoSession, VULKAN_HPP_NAMESPACE_STRING "::Device::createVideoSessionKHRUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyVideoSessionKHR( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyVideoSessionKHR( m_device, + static_cast( videoSession ), + reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyVideoSessionKHR( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyVideoSessionKHR( m_device, + static_cast( videoSession ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyVideoSessionKHR( m_device, + static_cast( videoSession ), + reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyVideoSessionKHR( m_device, + static_cast( videoSession ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getVideoSessionMemoryRequirementsKHR( + VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + uint32_t * pVideoSessionMemoryRequirementsCount, + VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR * pVideoSessionMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetVideoSessionMemoryRequirementsKHR( + m_device, + static_cast( videoSession ), + pVideoSessionMemoryRequirementsCount, + reinterpret_cast( pVideoSessionMemoryRequirements ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getVideoSessionMemoryRequirementsKHR( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector videoSessionMemoryRequirements; + uint32_t videoSessionMemoryRequirementsCount; + Result result; + do + { + result = static_cast( d.vkGetVideoSessionMemoryRequirementsKHR( + m_device, static_cast( videoSession ), &videoSessionMemoryRequirementsCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && videoSessionMemoryRequirementsCount ) + { + videoSessionMemoryRequirements.resize( videoSessionMemoryRequirementsCount ); + result = static_cast( d.vkGetVideoSessionMemoryRequirementsKHR( + m_device, + static_cast( videoSession ), + &videoSessionMemoryRequirementsCount, + reinterpret_cast( videoSessionMemoryRequirements.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( videoSessionMemoryRequirementsCount <= videoSessionMemoryRequirements.size() ); + if ( videoSessionMemoryRequirementsCount < videoSessionMemoryRequirements.size() ) + { + videoSessionMemoryRequirements.resize( videoSessionMemoryRequirementsCount ); + } + } + return createResultValue( result, + videoSessionMemoryRequirements, + VULKAN_HPP_NAMESPACE_STRING "::Device::getVideoSessionMemoryRequirementsKHR" ); + } + + template < + typename VideoGetMemoryPropertiesKHRAllocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getVideoSessionMemoryRequirementsKHR( + VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + VideoGetMemoryPropertiesKHRAllocator & videoGetMemoryPropertiesKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector videoSessionMemoryRequirements( + videoGetMemoryPropertiesKHRAllocator ); + uint32_t videoSessionMemoryRequirementsCount; + Result result; + do + { + result = static_cast( d.vkGetVideoSessionMemoryRequirementsKHR( + m_device, static_cast( videoSession ), &videoSessionMemoryRequirementsCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && videoSessionMemoryRequirementsCount ) + { + videoSessionMemoryRequirements.resize( videoSessionMemoryRequirementsCount ); + result = static_cast( d.vkGetVideoSessionMemoryRequirementsKHR( + m_device, + static_cast( videoSession ), + &videoSessionMemoryRequirementsCount, + reinterpret_cast( videoSessionMemoryRequirements.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( videoSessionMemoryRequirementsCount <= videoSessionMemoryRequirements.size() ); + if ( videoSessionMemoryRequirementsCount < videoSessionMemoryRequirements.size() ) + { + videoSessionMemoryRequirements.resize( videoSessionMemoryRequirementsCount ); + } + } + return createResultValue( result, + videoSessionMemoryRequirements, + VULKAN_HPP_NAMESPACE_STRING "::Device::getVideoSessionMemoryRequirementsKHR" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::bindVideoSessionMemoryKHR( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + uint32_t videoSessionBindMemoryCount, + const VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR * pVideoSessionBindMemories, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkBindVideoSessionMemoryKHR( m_device, + static_cast( videoSession ), + videoSessionBindMemoryCount, + reinterpret_cast( pVideoSessionBindMemories ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::bindVideoSessionMemoryKHR( + VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + ArrayProxy const & videoSessionBindMemories, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkBindVideoSessionMemoryKHR( + m_device, + static_cast( videoSession ), + videoSessionBindMemories.size(), + reinterpret_cast( videoSessionBindMemories.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindVideoSessionMemoryKHR" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createVideoSessionParametersKHR( + const VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR * pVideoSessionParameters, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateVideoSessionParametersKHR( + m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pVideoSessionParameters ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createVideoSessionParametersKHR( + const VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters; + Result result = static_cast( d.vkCreateVideoSessionParametersKHR( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &videoSessionParameters ) ) ); + return createResultValue( + result, videoSessionParameters, VULKAN_HPP_NAMESPACE_STRING "::Device::createVideoSessionParametersKHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createVideoSessionParametersKHRUnique( + const VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters; + Result result = static_cast( d.vkCreateVideoSessionParametersKHR( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &videoSessionParameters ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, + videoSessionParameters, + VULKAN_HPP_NAMESPACE_STRING "::Device::createVideoSessionParametersKHRUnique", + deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::updateVideoSessionParametersKHR( + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters, + const VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR * pUpdateInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkUpdateVideoSessionParametersKHR( + m_device, + static_cast( videoSessionParameters ), + reinterpret_cast( pUpdateInfo ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::updateVideoSessionParametersKHR( + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters, + const VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR & updateInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkUpdateVideoSessionParametersKHR( + m_device, + static_cast( videoSessionParameters ), + reinterpret_cast( &updateInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::updateVideoSessionParametersKHR" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::destroyVideoSessionParametersKHR( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyVideoSessionParametersKHR( m_device, + static_cast( videoSessionParameters ), + reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyVideoSessionParametersKHR( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyVideoSessionParametersKHR( + m_device, + static_cast( videoSessionParameters ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyVideoSessionParametersKHR( m_device, + static_cast( videoSessionParameters ), + reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyVideoSessionParametersKHR( + m_device, + static_cast( videoSessionParameters ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::beginVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR * pBeginInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginVideoCodingKHR( m_commandBuffer, reinterpret_cast( pBeginInfo ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::beginVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR & beginInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginVideoCodingKHR( m_commandBuffer, reinterpret_cast( &beginInfo ) ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::endVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR * pEndCodingInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndVideoCodingKHR( m_commandBuffer, reinterpret_cast( pEndCodingInfo ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::endVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR & endCodingInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndVideoCodingKHR( m_commandBuffer, reinterpret_cast( &endCodingInfo ) ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::controlVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR * pCodingControlInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdControlVideoCodingKHR( m_commandBuffer, + reinterpret_cast( pCodingControlInfo ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::controlVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR & codingControlInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdControlVideoCodingKHR( m_commandBuffer, + reinterpret_cast( &codingControlInfo ) ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_decode_queue === + + template + VULKAN_HPP_INLINE void CommandBuffer::decodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR * pFrameInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDecodeVideoKHR( m_commandBuffer, reinterpret_cast( pFrameInfo ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::decodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR & frameInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDecodeVideoKHR( m_commandBuffer, reinterpret_cast( &frameInfo ) ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_transform_feedback === + + template + VULKAN_HPP_INLINE void + CommandBuffer::bindTransformFeedbackBuffersEXT( uint32_t firstBinding, + uint32_t bindingCount, + const VULKAN_HPP_NAMESPACE::Buffer * pBuffers, + const VULKAN_HPP_NAMESPACE::DeviceSize * pOffsets, + const VULKAN_HPP_NAMESPACE::DeviceSize * pSizes, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindTransformFeedbackBuffersEXT( m_commandBuffer, + firstBinding, + bindingCount, + reinterpret_cast( pBuffers ), + reinterpret_cast( pOffsets ), + reinterpret_cast( pSizes ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::bindTransformFeedbackBuffersEXT( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); + VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != offsets.size()" ); + } + if ( !sizes.empty() && buffers.size() != sizes.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != sizes.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdBindTransformFeedbackBuffersEXT( m_commandBuffer, + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ), + reinterpret_cast( sizes.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::beginTransformFeedbackEXT( uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VULKAN_HPP_NAMESPACE::Buffer * pCounterBuffers, + const VULKAN_HPP_NAMESPACE::DeviceSize * pCounterBufferOffsets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginTransformFeedbackEXT( m_commandBuffer, + firstCounterBuffer, + counterBufferCount, + reinterpret_cast( pCounterBuffers ), + reinterpret_cast( pCounterBufferOffsets ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::beginTransformFeedbackEXT( + uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() ); +# else + if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::beginTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdBeginTransformFeedbackEXT( m_commandBuffer, + firstCounterBuffer, + counterBuffers.size(), + reinterpret_cast( counterBuffers.data() ), + reinterpret_cast( counterBufferOffsets.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::endTransformFeedbackEXT( uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VULKAN_HPP_NAMESPACE::Buffer * pCounterBuffers, + const VULKAN_HPP_NAMESPACE::DeviceSize * pCounterBufferOffsets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndTransformFeedbackEXT( m_commandBuffer, + firstCounterBuffer, + counterBufferCount, + reinterpret_cast( pCounterBuffers ), + reinterpret_cast( pCounterBufferOffsets ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::endTransformFeedbackEXT( + uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() ); +# else + if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::endTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdEndTransformFeedbackEXT( m_commandBuffer, + firstCounterBuffer, + counterBuffers.size(), + reinterpret_cast( counterBuffers.data() ), + reinterpret_cast( counterBufferOffsets.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + VULKAN_HPP_NAMESPACE::QueryControlFlags flags, + uint32_t index, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginQueryIndexedEXT( + m_commandBuffer, static_cast( queryPool ), query, static_cast( flags ), index ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + uint32_t index, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndQueryIndexedEXT( m_commandBuffer, static_cast( queryPool ), query, index ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectByteCountEXT( uint32_t instanceCount, + uint32_t firstInstance, + VULKAN_HPP_NAMESPACE::Buffer counterBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndirectByteCountEXT( m_commandBuffer, + instanceCount, + firstInstance, + static_cast( counterBuffer ), + static_cast( counterBufferOffset ), + counterOffset, + vertexStride ); + } + + //=== VK_NVX_binary_import === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createCuModuleNVX( const VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::CuModuleNVX * pModule, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateCuModuleNVX( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pModule ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createCuModuleNVX( const VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::CuModuleNVX module; + Result result = static_cast( + d.vkCreateCuModuleNVX( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &module ) ) ); + return createResultValue( result, module, VULKAN_HPP_NAMESPACE_STRING "::Device::createCuModuleNVX" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createCuModuleNVXUnique( const VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::CuModuleNVX module; + Result result = static_cast( + d.vkCreateCuModuleNVX( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &module ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, module, VULKAN_HPP_NAMESPACE_STRING "::Device::createCuModuleNVXUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createCuFunctionNVX( const VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::CuFunctionNVX * pFunction, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateCuFunctionNVX( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pFunction ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createCuFunctionNVX( const VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::CuFunctionNVX function; + Result result = static_cast( + d.vkCreateCuFunctionNVX( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &function ) ) ); + return createResultValue( result, function, VULKAN_HPP_NAMESPACE_STRING "::Device::createCuFunctionNVX" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createCuFunctionNVXUnique( const VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::CuFunctionNVX function; + Result result = static_cast( + d.vkCreateCuFunctionNVX( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &function ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, function, VULKAN_HPP_NAMESPACE_STRING "::Device::createCuFunctionNVXUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyCuModuleNVX( VULKAN_HPP_NAMESPACE::CuModuleNVX module, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCuModuleNVX( + m_device, static_cast( module ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyCuModuleNVX( VULKAN_HPP_NAMESPACE::CuModuleNVX module, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCuModuleNVX( m_device, + static_cast( module ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::CuModuleNVX module, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCuModuleNVX( + m_device, static_cast( module ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::CuModuleNVX module, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCuModuleNVX( m_device, + static_cast( module ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroyCuFunctionNVX( VULKAN_HPP_NAMESPACE::CuFunctionNVX function, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCuFunctionNVX( m_device, + static_cast( function ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyCuFunctionNVX( VULKAN_HPP_NAMESPACE::CuFunctionNVX function, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCuFunctionNVX( m_device, + static_cast( function ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::CuFunctionNVX function, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCuFunctionNVX( m_device, + static_cast( function ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::CuFunctionNVX function, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCuFunctionNVX( m_device, + static_cast( function ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::cuLaunchKernelNVX( const VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX * pLaunchInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCuLaunchKernelNVX( m_commandBuffer, reinterpret_cast( pLaunchInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::cuLaunchKernelNVX( const VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX & launchInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCuLaunchKernelNVX( m_commandBuffer, reinterpret_cast( &launchInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NVX_image_view_handle === + + template + VULKAN_HPP_INLINE uint32_t Device::getImageViewHandleNVX( const VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX * pInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetImageViewHandleNVX( m_device, reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE uint32_t Device::getImageViewHandleNVX( const VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetImageViewHandleNVX( m_device, reinterpret_cast( &info ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getImageViewAddressNVX( VULKAN_HPP_NAMESPACE::ImageView imageView, + VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetImageViewAddressNVX( m_device, + static_cast( imageView ), + reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::getImageViewAddressNVX( VULKAN_HPP_NAMESPACE::ImageView imageView, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX properties; + Result result = static_cast( + d.vkGetImageViewAddressNVX( m_device, + static_cast( imageView ), + reinterpret_cast( &properties ) ) ); + return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING "::Device::getImageViewAddressNVX" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_AMD_draw_indirect_count === + + template + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndirectCountAMD( m_commandBuffer, + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + //=== VK_AMD_shader_info === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getShaderInfoAMD( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage, + VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType, + size_t * pInfoSize, + void * pInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetShaderInfoAMD( m_device, + static_cast( pipeline ), + static_cast( shaderStage ), + static_cast( infoType ), + pInfoSize, + pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getShaderInfoAMD( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage, + VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector info; + size_t infoSize; + Result result; + do + { + result = static_cast( d.vkGetShaderInfoAMD( m_device, + static_cast( pipeline ), + static_cast( shaderStage ), + static_cast( infoType ), + &infoSize, + nullptr ) ); + if ( ( result == Result::eSuccess ) && infoSize ) + { + info.resize( infoSize ); + result = static_cast( d.vkGetShaderInfoAMD( m_device, + static_cast( pipeline ), + static_cast( shaderStage ), + static_cast( infoType ), + &infoSize, + reinterpret_cast( info.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( infoSize <= info.size() ); + if ( infoSize < info.size() ) + { + info.resize( infoSize ); + } + } + return createResultValue( result, info, VULKAN_HPP_NAMESPACE_STRING "::Device::getShaderInfoAMD" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getShaderInfoAMD( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage, + VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType, + Uint8_tAllocator & uint8_tAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector info( uint8_tAllocator ); + size_t infoSize; + Result result; + do + { + result = static_cast( d.vkGetShaderInfoAMD( m_device, + static_cast( pipeline ), + static_cast( shaderStage ), + static_cast( infoType ), + &infoSize, + nullptr ) ); + if ( ( result == Result::eSuccess ) && infoSize ) + { + info.resize( infoSize ); + result = static_cast( d.vkGetShaderInfoAMD( m_device, + static_cast( pipeline ), + static_cast( shaderStage ), + static_cast( infoType ), + &infoSize, + reinterpret_cast( info.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( infoSize <= info.size() ); + if ( infoSize < info.size() ) + { + info.resize( infoSize ); + } + } + return createResultValue( result, info, VULKAN_HPP_NAMESPACE_STRING "::Device::getShaderInfoAMD" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_dynamic_rendering === + + template + VULKAN_HPP_INLINE void CommandBuffer::beginRenderingKHR( const VULKAN_HPP_NAMESPACE::RenderingInfo * pRenderingInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginRenderingKHR( m_commandBuffer, reinterpret_cast( pRenderingInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::beginRenderingKHR( const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginRenderingKHR( m_commandBuffer, reinterpret_cast( &renderingInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::endRenderingKHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndRenderingKHR( m_commandBuffer ); + } + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createStreamDescriptorSurfaceGGP( + const VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateStreamDescriptorSurfaceGGP( + m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Instance::createStreamDescriptorSurfaceGGP( + const VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( d.vkCreateStreamDescriptorSurfaceGGP( + m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createStreamDescriptorSurfaceGGP" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::createStreamDescriptorSurfaceGGPUnique( + const VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( d.vkCreateStreamDescriptorSurfaceGGP( + m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createStreamDescriptorSurfaceGGPUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( + VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType, + VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV * pExternalImageFormatProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceExternalImageFormatPropertiesNV( + m_physicalDevice, + static_cast( format ), + static_cast( type ), + static_cast( tiling ), + static_cast( usage ), + static_cast( flags ), + static_cast( externalHandleType ), + reinterpret_cast( pExternalImageFormatProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + PhysicalDevice::getExternalImageFormatPropertiesNV( + VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV externalImageFormatProperties; + Result result = static_cast( d.vkGetPhysicalDeviceExternalImageFormatPropertiesNV( + m_physicalDevice, + static_cast( format ), + static_cast( type ), + static_cast( tiling ), + static_cast( usage ), + static_cast( flags ), + static_cast( externalHandleType ), + reinterpret_cast( &externalImageFormatProperties ) ) ); + return createResultValue( result, + externalImageFormatProperties, + VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getExternalImageFormatPropertiesNV" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType, + HANDLE * pHandle, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetMemoryWin32HandleNV( m_device, + static_cast( memory ), + static_cast( handleType ), + pHandle ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + HANDLE handle; + Result result = + static_cast( d.vkGetMemoryWin32HandleNV( m_device, + static_cast( memory ), + static_cast( handleType ), + &handle ) ); + return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandleNV" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_get_physical_device_properties2 === + + template + VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 * pFeatures, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast( pFeatures ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 + PhysicalDevice::getFeatures2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 features; + d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast( &features ) ); + return features; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getFeatures2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 & features = + structureChain.template get(); + d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast( &features ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + PhysicalDevice::getProperties2KHR( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, + reinterpret_cast( pProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 + PhysicalDevice::getProperties2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 properties; + d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, + reinterpret_cast( &properties ) ); + return properties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getProperties2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 & properties = + structureChain.template get(); + d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, + reinterpret_cast( &properties ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + PhysicalDevice::getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::FormatProperties2 * pFormatProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceFormatProperties2KHR( + m_physicalDevice, static_cast( format ), reinterpret_cast( pFormatProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties2 + PhysicalDevice::getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::FormatProperties2 formatProperties; + d.vkGetPhysicalDeviceFormatProperties2KHR( + m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); + return formatProperties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::FormatProperties2 & formatProperties = + structureChain.template get(); + d.vkGetPhysicalDeviceFormatProperties2KHR( + m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 * pImageFormatInfo, + VULKAN_HPP_NAMESPACE::ImageFormatProperties2 * pImageFormatProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceImageFormatProperties2KHR( + m_physicalDevice, + reinterpret_cast( pImageFormatInfo ), + reinterpret_cast( pImageFormatProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + PhysicalDevice::getImageFormatProperties2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ImageFormatProperties2 imageFormatProperties; + Result result = static_cast( d.vkGetPhysicalDeviceImageFormatProperties2KHR( + m_physicalDevice, + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + return createResultValue( + result, imageFormatProperties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getImageFormatProperties2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::ImageFormatProperties2 & imageFormatProperties = + structureChain.template get(); + Result result = static_cast( d.vkGetPhysicalDeviceImageFormatProperties2KHR( + m_physicalDevice, + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + return createResultValue( + result, structureChain, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t * pQueueFamilyPropertyCount, + VULKAN_HPP_NAMESPACE::QueueFamilyProperties2 * pQueueFamilyProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( + m_physicalDevice, + pQueueFamilyPropertyCount, + reinterpret_cast( pQueueFamilyProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getQueueFamilyProperties2KHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector queueFamilyProperties; + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( + m_physicalDevice, + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + return queueFamilyProperties; + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getQueueFamilyProperties2KHR( QueueFamilyProperties2Allocator & queueFamilyProperties2Allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector queueFamilyProperties( + queueFamilyProperties2Allocator ); + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( + m_physicalDevice, + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + return queueFamilyProperties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getQueueFamilyProperties2KHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + std::vector returnVector( queueFamilyPropertyCount ); + std::vector queueFamilyProperties( queueFamilyPropertyCount ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + queueFamilyProperties[i].pNext = + returnVector[i].template get().pNext; + } + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( + m_physicalDevice, + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + returnVector[i].template get() = queueFamilyProperties[i]; + } + return returnVector; + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getQueueFamilyProperties2KHR( StructureChainAllocator & structureChainAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + std::vector returnVector( queueFamilyPropertyCount, + structureChainAllocator ); + std::vector queueFamilyProperties( queueFamilyPropertyCount ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + queueFamilyProperties[i].pNext = + returnVector[i].template get().pNext; + } + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( + m_physicalDevice, + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + returnVector[i].template get() = queueFamilyProperties[i]; + } + return returnVector; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + PhysicalDevice::getMemoryProperties2KHR( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 * pMemoryProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceMemoryProperties2KHR( + m_physicalDevice, reinterpret_cast( pMemoryProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 + PhysicalDevice::getMemoryProperties2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 memoryProperties; + d.vkGetPhysicalDeviceMemoryProperties2KHR( + m_physicalDevice, reinterpret_cast( &memoryProperties ) ); + return memoryProperties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getMemoryProperties2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 & memoryProperties = + structureChain.template get(); + d.vkGetPhysicalDeviceMemoryProperties2KHR( + m_physicalDevice, reinterpret_cast( &memoryProperties ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 * pFormatInfo, + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2 * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + m_physicalDevice, + reinterpret_cast( pFormatInfo ), + pPropertyCount, + reinterpret_cast( pProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties; + uint32_t propertyCount; + d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + m_physicalDevice, + reinterpret_cast( &formatInfo ), + &propertyCount, + nullptr ); + properties.resize( propertyCount ); + d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + m_physicalDevice, + reinterpret_cast( &formatInfo ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + return properties; + } + + template < + typename SparseImageFormatProperties2Allocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo, + SparseImageFormatProperties2Allocator & sparseImageFormatProperties2Allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties( + sparseImageFormatProperties2Allocator ); + uint32_t propertyCount; + d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + m_physicalDevice, + reinterpret_cast( &formatInfo ), + &propertyCount, + nullptr ); + properties.resize( propertyCount ); + d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + m_physicalDevice, + reinterpret_cast( &formatInfo ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + return properties; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_device_group === + + template + VULKAN_HPP_INLINE void + Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags * pPeerMemoryFeatures, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceGroupPeerMemoryFeaturesKHR( m_device, + heapIndex, + localDeviceIndex, + remoteDeviceIndex, + reinterpret_cast( pPeerMemoryFeatures ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags + Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags peerMemoryFeatures; + d.vkGetDeviceGroupPeerMemoryFeaturesKHR( m_device, + heapIndex, + localDeviceIndex, + remoteDeviceIndex, + reinterpret_cast( &peerMemoryFeatures ) ); + return peerMemoryFeatures; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHR( uint32_t deviceMask, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDeviceMaskKHR( m_commandBuffer, deviceMask ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::dispatchBaseKHR( uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDispatchBaseKHR( + m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); + } + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::createViSurfaceNN( const VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateViSurfaceNN( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Instance::createViSurfaceNN( const VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateViSurfaceNN( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createViSurfaceNN" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::createViSurfaceNNUnique( const VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateViSurfaceNN( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createViSurfaceNNUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_maintenance1 === + + template + VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkTrimCommandPoolKHR( + m_device, static_cast( commandPool ), static_cast( flags ) ); + } + + //=== VK_KHR_device_group_creation === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHR( + uint32_t * pPhysicalDeviceGroupCount, + VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( + m_instance, + pPhysicalDeviceGroupCount, + reinterpret_cast( pPhysicalDeviceGroupProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::enumeratePhysicalDeviceGroupsKHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector physicalDeviceGroupProperties; + uint32_t physicalDeviceGroupCount; + Result result; + do + { + result = + static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, &physicalDeviceGroupCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( + m_instance, + &physicalDeviceGroupCount, + reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); + if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + } + } + return createResultValue( result, + physicalDeviceGroupProperties, + VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroupsKHR" ); + } + + template < + typename PhysicalDeviceGroupPropertiesAllocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::enumeratePhysicalDeviceGroupsKHR( + PhysicalDeviceGroupPropertiesAllocator & physicalDeviceGroupPropertiesAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector physicalDeviceGroupProperties( + physicalDeviceGroupPropertiesAllocator ); + uint32_t physicalDeviceGroupCount; + Result result; + do + { + result = + static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, &physicalDeviceGroupCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( + m_instance, + &physicalDeviceGroupCount, + reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); + if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + } + } + return createResultValue( result, + physicalDeviceGroupProperties, + VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroupsKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_external_memory_capabilities === + + template + VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo * pExternalBufferInfo, + VULKAN_HPP_NAMESPACE::ExternalBufferProperties * pExternalBufferProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceExternalBufferPropertiesKHR( + m_physicalDevice, + reinterpret_cast( pExternalBufferInfo ), + reinterpret_cast( pExternalBufferProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalBufferProperties + PhysicalDevice::getExternalBufferPropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ExternalBufferProperties externalBufferProperties; + d.vkGetPhysicalDeviceExternalBufferPropertiesKHR( + m_physicalDevice, + reinterpret_cast( &externalBufferInfo ), + reinterpret_cast( &externalBufferProperties ) ); + return externalBufferProperties; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getMemoryWin32HandleKHR( const VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo, + HANDLE * pHandle, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryWin32HandleKHR( + m_device, reinterpret_cast( pGetWin32HandleInfo ), pHandle ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryWin32HandleKHR( const VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR & getWin32HandleInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + HANDLE handle; + Result result = static_cast( d.vkGetMemoryWin32HandleKHR( + m_device, reinterpret_cast( &getWin32HandleInfo ), &handle ) ); + return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandleKHR" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHR( + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + HANDLE handle, + VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryWin32HandlePropertiesKHR( + m_device, + static_cast( handleType ), + handle, + reinterpret_cast( pMemoryWin32HandleProperties ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::getMemoryWin32HandlePropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + HANDLE handle, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties; + Result result = static_cast( d.vkGetMemoryWin32HandlePropertiesKHR( + m_device, + static_cast( handleType ), + handle, + reinterpret_cast( &memoryWin32HandleProperties ) ) ); + return createResultValue( + result, memoryWin32HandleProperties, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandlePropertiesKHR" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getMemoryFdKHR( const VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR * pGetFdInfo, + int * pFd, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetMemoryFdKHR( m_device, reinterpret_cast( pGetFdInfo ), pFd ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryFdKHR( const VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR & getFdInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + int fd; + Result result = static_cast( + d.vkGetMemoryFdKHR( m_device, reinterpret_cast( &getFdInfo ), &fd ) ); + return createResultValue( result, fd, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryFdKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + int fd, + VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR * pMemoryFdProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetMemoryFdPropertiesKHR( m_device, + static_cast( handleType ), + fd, + reinterpret_cast( pMemoryFdProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + int fd, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR memoryFdProperties; + Result result = static_cast( + d.vkGetMemoryFdPropertiesKHR( m_device, + static_cast( handleType ), + fd, + reinterpret_cast( &memoryFdProperties ) ) ); + return createResultValue( + result, memoryFdProperties, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryFdPropertiesKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_external_semaphore_capabilities === + + template + VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo, + VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties * pExternalSemaphoreProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( + m_physicalDevice, + reinterpret_cast( pExternalSemaphoreInfo ), + reinterpret_cast( pExternalSemaphoreProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties + PhysicalDevice::getExternalSemaphorePropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties externalSemaphoreProperties; + d.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( + m_physicalDevice, + reinterpret_cast( &externalSemaphoreInfo ), + reinterpret_cast( &externalSemaphoreProperties ) ); + return externalSemaphoreProperties; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkImportSemaphoreWin32HandleKHR( + m_device, reinterpret_cast( pImportSemaphoreWin32HandleInfo ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::importSemaphoreWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkImportSemaphoreWin32HandleKHR( + m_device, reinterpret_cast( &importSemaphoreWin32HandleInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreWin32HandleKHR" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo, + HANDLE * pHandle, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetSemaphoreWin32HandleKHR( + m_device, reinterpret_cast( pGetWin32HandleInfo ), pHandle ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getSemaphoreWin32HandleKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + HANDLE handle; + Result result = static_cast( d.vkGetSemaphoreWin32HandleKHR( + m_device, reinterpret_cast( &getWin32HandleInfo ), &handle ) ); + return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreWin32HandleKHR" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::importSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkImportSemaphoreFdKHR( + m_device, reinterpret_cast( pImportSemaphoreFdInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::importSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkImportSemaphoreFdKHR( + m_device, reinterpret_cast( &importSemaphoreFdInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreFdKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR * pGetFdInfo, + int * pFd, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetSemaphoreFdKHR( m_device, reinterpret_cast( pGetFdInfo ), pFd ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR & getFdInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + int fd; + Result result = static_cast( + d.vkGetSemaphoreFdKHR( m_device, reinterpret_cast( &getFdInfo ), &fd ) ); + return createResultValue( result, fd, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreFdKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_push_descriptor === + + template + VULKAN_HPP_INLINE void + CommandBuffer::pushDescriptorSetKHR( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + uint32_t descriptorWriteCount, + const VULKAN_HPP_NAMESPACE::WriteDescriptorSet * pDescriptorWrites, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushDescriptorSetKHR( m_commandBuffer, + static_cast( pipelineBindPoint ), + static_cast( layout ), + set, + descriptorWriteCount, + reinterpret_cast( pDescriptorWrites ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + ArrayProxy const & descriptorWrites, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushDescriptorSetKHR( m_commandBuffer, + static_cast( pipelineBindPoint ), + static_cast( layout ), + set, + descriptorWrites.size(), + reinterpret_cast( descriptorWrites.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + const void * pData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, + static_cast( descriptorUpdateTemplate ), + static_cast( layout ), + set, + pData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + DataType const & data, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, + static_cast( descriptorUpdateTemplate ), + static_cast( layout ), + set, + reinterpret_cast( &data ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_conditional_rendering === + + template + VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT( + const VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginConditionalRenderingEXT( + m_commandBuffer, reinterpret_cast( pConditionalRenderingBegin ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT( + const VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginConditionalRenderingEXT( + m_commandBuffer, reinterpret_cast( &conditionalRenderingBegin ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::endConditionalRenderingEXT( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndConditionalRenderingEXT( m_commandBuffer ); + } + + //=== VK_KHR_descriptor_update_template === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( + const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate * pDescriptorUpdateTemplate, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDescriptorUpdateTemplateKHR( + m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pDescriptorUpdateTemplate ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createDescriptorUpdateTemplateKHR( + const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate; + Result result = static_cast( d.vkCreateDescriptorUpdateTemplateKHR( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &descriptorUpdateTemplate ) ) ); + return createResultValue( + result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplateKHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createDescriptorUpdateTemplateKHRUnique( + const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate; + Result result = static_cast( d.vkCreateDescriptorUpdateTemplateKHR( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &descriptorUpdateTemplate ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, + descriptorUpdateTemplate, + VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplateKHRUnique", + deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::destroyDescriptorUpdateTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorUpdateTemplateKHR( m_device, + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyDescriptorUpdateTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorUpdateTemplateKHR( + m_device, + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::updateDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorSet descriptorSet, + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + const void * pData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUpdateDescriptorSetWithTemplateKHR( m_device, + static_cast( descriptorSet ), + static_cast( descriptorUpdateTemplate ), + pData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::updateDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorSet descriptorSet, + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + DataType const & data, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUpdateDescriptorSetWithTemplateKHR( m_device, + static_cast( descriptorSet ), + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( &data ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_clip_space_w_scaling === + + template + VULKAN_HPP_INLINE void + CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, + uint32_t viewportCount, + const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * pViewportWScalings, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewportWScalingNV( m_commandBuffer, + firstViewport, + viewportCount, + reinterpret_cast( pViewportWScalings ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( + uint32_t firstViewport, + ArrayProxy const & viewportWScalings, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewportWScalingNV( m_commandBuffer, + firstViewport, + viewportWScalings.size(), + reinterpret_cast( viewportWScalings.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_direct_mode_display === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkReleaseDisplayEXT( m_physicalDevice, static_cast( display ) ) ); + } +#else + template + VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::releaseDisplayEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = + static_cast( d.vkReleaseDisplayEXT( m_physicalDevice, static_cast( display ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::releaseDisplayEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( + Display * dpy, VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast( display ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::acquireXlibDisplayEXT( Display & dpy, + VULKAN_HPP_NAMESPACE::DisplayKHR display, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = + static_cast( d.vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast( display ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireXlibDisplayEXT" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getRandROutputDisplayEXT( Display * dpy, + RROutput rrOutput, + VULKAN_HPP_NAMESPACE::DisplayKHR * pDisplay, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast( pDisplay ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DisplayKHR display; + Result result = static_cast( + d.vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast( &display ) ) ); + return createResultValue( + result, display, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getRandROutputDisplayEXT" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getRandROutputDisplayEXTUnique( Display & dpy, RROutput rrOutput, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DisplayKHR display; + Result result = static_cast( + d.vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast( &display ) ) ); + ObjectRelease deleter( *this, d ); + return createResultValue( + result, display, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getRandROutputDisplayEXTUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_display_surface_counter === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT * pSurfaceCapabilities, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2EXT( + m_physicalDevice, + static_cast( surface ), + reinterpret_cast( pSurfaceCapabilities ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + PhysicalDevice::getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT surfaceCapabilities; + Result result = static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2EXT( + m_physicalDevice, + static_cast( surface ), + reinterpret_cast( &surfaceCapabilities ) ) ); + return createResultValue( + result, surfaceCapabilities, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2EXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_display_control === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT * pDisplayPowerInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkDisplayPowerControlEXT( m_device, + static_cast( display ), + reinterpret_cast( pDisplayPowerInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT & displayPowerInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkDisplayPowerControlEXT( m_device, + static_cast( display ), + reinterpret_cast( &displayPowerInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::displayPowerControlEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::registerEventEXT( const VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT * pDeviceEventInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Fence * pFence, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkRegisterDeviceEventEXT( m_device, + reinterpret_cast( pDeviceEventInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pFence ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::registerEventEXT( const VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT & deviceEventInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Fence fence; + Result result = static_cast( + d.vkRegisterDeviceEventEXT( m_device, + reinterpret_cast( &deviceEventInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &fence ) ) ); + return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING "::Device::registerEventEXT" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + Device::registerEventEXTUnique( const VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT & deviceEventInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Fence fence; + Result result = static_cast( + d.vkRegisterDeviceEventEXT( m_device, + reinterpret_cast( &deviceEventInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &fence ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, fence, VULKAN_HPP_NAMESPACE_STRING "::Device::registerEventEXTUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::registerDisplayEventEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT * pDisplayEventInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Fence * pFence, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkRegisterDisplayEventEXT( m_device, + static_cast( display ), + reinterpret_cast( pDisplayEventInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pFence ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::registerDisplayEventEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT & displayEventInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Fence fence; + Result result = static_cast( + d.vkRegisterDisplayEventEXT( m_device, + static_cast( display ), + reinterpret_cast( &displayEventInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &fence ) ) ); + return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING "::Device::registerDisplayEventEXT" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + Device::registerDisplayEventEXTUnique( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT & displayEventInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Fence fence; + Result result = static_cast( + d.vkRegisterDisplayEventEXT( m_device, + static_cast( display ), + reinterpret_cast( &displayEventInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &fence ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, fence, VULKAN_HPP_NAMESPACE_STRING "::Device::registerDisplayEventEXTUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getSwapchainCounterEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter, + uint64_t * pCounterValue, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetSwapchainCounterEXT( m_device, + static_cast( swapchain ), + static_cast( counter ), + pCounterValue ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getSwapchainCounterEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + uint64_t counterValue; + Result result = + static_cast( d.vkGetSwapchainCounterEXT( m_device, + static_cast( swapchain ), + static_cast( counter ), + &counterValue ) ); + return createResultValue( result, counterValue, VULKAN_HPP_NAMESPACE_STRING "::Device::getSwapchainCounterEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_GOOGLE_display_timing === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getRefreshCycleDurationGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE * pDisplayTimingProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetRefreshCycleDurationGOOGLE( + m_device, + static_cast( swapchain ), + reinterpret_cast( pDisplayTimingProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::getRefreshCycleDurationGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE displayTimingProperties; + Result result = static_cast( d.vkGetRefreshCycleDurationGOOGLE( + m_device, + static_cast( swapchain ), + reinterpret_cast( &displayTimingProperties ) ) ); + return createResultValue( + result, displayTimingProperties, VULKAN_HPP_NAMESPACE_STRING "::Device::getRefreshCycleDurationGOOGLE" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getPastPresentationTimingGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + uint32_t * pPresentationTimingCount, + VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE * pPresentationTimings, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPastPresentationTimingGOOGLE( + m_device, + static_cast( swapchain ), + pPresentationTimingCount, + reinterpret_cast( pPresentationTimings ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getPastPresentationTimingGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector presentationTimings; + uint32_t presentationTimingCount; + Result result; + do + { + result = static_cast( d.vkGetPastPresentationTimingGOOGLE( + m_device, static_cast( swapchain ), &presentationTimingCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && presentationTimingCount ) + { + presentationTimings.resize( presentationTimingCount ); + result = static_cast( d.vkGetPastPresentationTimingGOOGLE( + m_device, + static_cast( swapchain ), + &presentationTimingCount, + reinterpret_cast( presentationTimings.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() ); + if ( presentationTimingCount < presentationTimings.size() ) + { + presentationTimings.resize( presentationTimingCount ); + } + } + return createResultValue( + result, presentationTimings, VULKAN_HPP_NAMESPACE_STRING "::Device::getPastPresentationTimingGOOGLE" ); + } + + template < + typename PastPresentationTimingGOOGLEAllocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getPastPresentationTimingGOOGLE( + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + PastPresentationTimingGOOGLEAllocator & pastPresentationTimingGOOGLEAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector presentationTimings( + pastPresentationTimingGOOGLEAllocator ); + uint32_t presentationTimingCount; + Result result; + do + { + result = static_cast( d.vkGetPastPresentationTimingGOOGLE( + m_device, static_cast( swapchain ), &presentationTimingCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && presentationTimingCount ) + { + presentationTimings.resize( presentationTimingCount ); + result = static_cast( d.vkGetPastPresentationTimingGOOGLE( + m_device, + static_cast( swapchain ), + &presentationTimingCount, + reinterpret_cast( presentationTimings.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() ); + if ( presentationTimingCount < presentationTimings.size() ) + { + presentationTimings.resize( presentationTimingCount ); + } + } + return createResultValue( + result, presentationTimings, VULKAN_HPP_NAMESPACE_STRING "::Device::getPastPresentationTimingGOOGLE" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_discard_rectangles === + + template + VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, + uint32_t discardRectangleCount, + const VULKAN_HPP_NAMESPACE::Rect2D * pDiscardRectangles, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDiscardRectangleEXT( m_commandBuffer, + firstDiscardRectangle, + discardRectangleCount, + reinterpret_cast( pDiscardRectangles ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, + ArrayProxy const & discardRectangles, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDiscardRectangleEXT( m_commandBuffer, + firstDiscardRectangle, + discardRectangles.size(), + reinterpret_cast( discardRectangles.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_hdr_metadata === + + template + VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, + const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains, + const VULKAN_HPP_NAMESPACE::HdrMetadataEXT * pMetadata, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkSetHdrMetadataEXT( m_device, + swapchainCount, + reinterpret_cast( pSwapchains ), + reinterpret_cast( pMetadata ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::setHdrMetadataEXT( ArrayProxy const & swapchains, + ArrayProxy const & metadata, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( swapchains.size() == metadata.size() ); +# else + if ( swapchains.size() != metadata.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkSetHdrMetadataEXT( m_device, + swapchains.size(), + reinterpret_cast( swapchains.data() ), + reinterpret_cast( metadata.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_create_renderpass2 === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::RenderPass * pRenderPass, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateRenderPass2KHR( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pRenderPass ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::RenderPass renderPass; + Result result = static_cast( + d.vkCreateRenderPass2KHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &renderPass ) ) ); + return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPass2KHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createRenderPass2KHRUnique( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::RenderPass renderPass; + Result result = static_cast( + d.vkCreateRenderPass2KHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &renderPass ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, renderPass, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPass2KHRUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::beginRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo * pRenderPassBegin, + const VULKAN_HPP_NAMESPACE::SubpassBeginInfo * pSubpassBeginInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginRenderPass2KHR( m_commandBuffer, + reinterpret_cast( pRenderPassBegin ), + reinterpret_cast( pSubpassBeginInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::beginRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin, + const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginRenderPass2KHR( m_commandBuffer, + reinterpret_cast( &renderPassBegin ), + reinterpret_cast( &subpassBeginInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::nextSubpass2KHR( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo * pSubpassBeginInfo, + const VULKAN_HPP_NAMESPACE::SubpassEndInfo * pSubpassEndInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdNextSubpass2KHR( m_commandBuffer, + reinterpret_cast( pSubpassBeginInfo ), + reinterpret_cast( pSubpassEndInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::nextSubpass2KHR( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo, + const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdNextSubpass2KHR( m_commandBuffer, + reinterpret_cast( &subpassBeginInfo ), + reinterpret_cast( &subpassEndInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( const VULKAN_HPP_NAMESPACE::SubpassEndInfo * pSubpassEndInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndRenderPass2KHR( m_commandBuffer, reinterpret_cast( pSubpassEndInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndRenderPass2KHR( m_commandBuffer, reinterpret_cast( &subpassEndInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_shared_presentable_image === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetSwapchainStatusKHR( m_device, static_cast( swapchain ) ) ); + } +#else + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getSwapchainStatusKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = + static_cast( d.vkGetSwapchainStatusKHR( m_device, static_cast( swapchain ) ) ); + return createResultValue( + result, + VULKAN_HPP_NAMESPACE_STRING "::Device::getSwapchainStatusKHR", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_external_fence_capabilities === + + template + VULKAN_HPP_INLINE void PhysicalDevice::getExternalFencePropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo * pExternalFenceInfo, + VULKAN_HPP_NAMESPACE::ExternalFenceProperties * pExternalFenceProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceExternalFencePropertiesKHR( + m_physicalDevice, + reinterpret_cast( pExternalFenceInfo ), + reinterpret_cast( pExternalFenceProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalFenceProperties + PhysicalDevice::getExternalFencePropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ExternalFenceProperties externalFenceProperties; + d.vkGetPhysicalDeviceExternalFencePropertiesKHR( + m_physicalDevice, + reinterpret_cast( &externalFenceInfo ), + reinterpret_cast( &externalFenceProperties ) ); + return externalFenceProperties; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::importFenceWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkImportFenceWin32HandleKHR( + m_device, reinterpret_cast( pImportFenceWin32HandleInfo ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::importFenceWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkImportFenceWin32HandleKHR( + m_device, reinterpret_cast( &importFenceWin32HandleInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importFenceWin32HandleKHR" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getFenceWin32HandleKHR( const VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR * pGetWin32HandleInfo, + HANDLE * pHandle, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetFenceWin32HandleKHR( + m_device, reinterpret_cast( pGetWin32HandleInfo ), pHandle ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getFenceWin32HandleKHR( const VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR & getWin32HandleInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + HANDLE handle; + Result result = static_cast( d.vkGetFenceWin32HandleKHR( + m_device, reinterpret_cast( &getWin32HandleInfo ), &handle ) ); + return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceWin32HandleKHR" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::importFenceFdKHR( const VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR * pImportFenceFdInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkImportFenceFdKHR( m_device, reinterpret_cast( pImportFenceFdInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::importFenceFdKHR( const VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR & importFenceFdInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkImportFenceFdKHR( m_device, reinterpret_cast( &importFenceFdInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importFenceFdKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getFenceFdKHR( const VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR * pGetFdInfo, + int * pFd, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetFenceFdKHR( m_device, reinterpret_cast( pGetFdInfo ), pFd ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getFenceFdKHR( const VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR & getFdInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + int fd; + Result result = static_cast( + d.vkGetFenceFdKHR( m_device, reinterpret_cast( &getFdInfo ), &fd ) ); + return createResultValue( result, fd, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceFdKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_performance_query === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( + uint32_t queueFamilyIndex, + uint32_t * pCounterCount, + VULKAN_HPP_NAMESPACE::PerformanceCounterKHR * pCounters, + VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR * pCounterDescriptions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + m_physicalDevice, + queueFamilyIndex, + pCounterCount, + reinterpret_cast( pCounters ), + reinterpret_cast( pCounterDescriptions ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType< + std::pair, + std::vector>>::type + PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::pair, + std::vector> + data; + std::vector & counters = data.first; + std::vector & counterDescriptions = + data.second; + uint32_t counterCount; + Result result; + do + { + result = static_cast( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + m_physicalDevice, queueFamilyIndex, &counterCount, nullptr, nullptr ) ); + if ( ( result == Result::eSuccess ) && counterCount ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + m_physicalDevice, + queueFamilyIndex, + &counterCount, + reinterpret_cast( counters.data() ), + reinterpret_cast( counterDescriptions.data() ) ) ); + VULKAN_HPP_ASSERT( counterCount <= counters.size() ); + } + } while ( result == Result::eIncomplete ); + if ( ( result == Result::eSuccess ) && ( counterCount < counters.size() ) ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + } + return createResultValue( + result, data, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR" ); + } + + template ::value && + std::is_same::value, + int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType< + std::pair, + std::vector>>::type + PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( + uint32_t queueFamilyIndex, + PerformanceCounterKHRAllocator & performanceCounterKHRAllocator, + PerformanceCounterDescriptionKHRAllocator & performanceCounterDescriptionKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::pair, + std::vector> + data( std::piecewise_construct, + std::forward_as_tuple( performanceCounterKHRAllocator ), + std::forward_as_tuple( performanceCounterDescriptionKHRAllocator ) ); + std::vector & counters = data.first; + std::vector & counterDescriptions = + data.second; + uint32_t counterCount; + Result result; + do + { + result = static_cast( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + m_physicalDevice, queueFamilyIndex, &counterCount, nullptr, nullptr ) ); + if ( ( result == Result::eSuccess ) && counterCount ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + m_physicalDevice, + queueFamilyIndex, + &counterCount, + reinterpret_cast( counters.data() ), + reinterpret_cast( counterDescriptions.data() ) ) ); + VULKAN_HPP_ASSERT( counterCount <= counters.size() ); + } + } while ( result == Result::eIncomplete ); + if ( ( result == Result::eSuccess ) && ( counterCount < counters.size() ) ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + } + return createResultValue( + result, data, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyPerformanceQueryPassesKHR( + const VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo, + uint32_t * pNumPasses, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( + m_physicalDevice, + reinterpret_cast( pPerformanceQueryCreateInfo ), + pNumPasses ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t PhysicalDevice::getQueueFamilyPerformanceQueryPassesKHR( + const VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + uint32_t numPasses; + d.vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( + m_physicalDevice, + reinterpret_cast( &performanceQueryCreateInfo ), + &numPasses ); + return numPasses; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::acquireProfilingLockKHR( + const VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkAcquireProfilingLockKHR( m_device, reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::acquireProfilingLockKHR( const VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR & info, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkAcquireProfilingLockKHR( m_device, reinterpret_cast( &info ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireProfilingLockKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::releaseProfilingLockKHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkReleaseProfilingLockKHR( m_device ); + } + + //=== VK_KHR_get_surface_capabilities2 === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo, + VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR * pSurfaceCapabilities, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( + m_physicalDevice, + reinterpret_cast( pSurfaceInfo ), + reinterpret_cast( pSurfaceCapabilities ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + PhysicalDevice::getSurfaceCapabilities2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR surfaceCapabilities; + Result result = static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( + m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + reinterpret_cast( &surfaceCapabilities ) ) ); + return createResultValue( + result, surfaceCapabilities, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfaceCapabilities2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR & surfaceCapabilities = + structureChain.template get(); + Result result = static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( + m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + reinterpret_cast( &surfaceCapabilities ) ) ); + return createResultValue( + result, structureChain, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getSurfaceFormats2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo, + uint32_t * pSurfaceFormatCount, + VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR * pSurfaceFormats, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( + m_physicalDevice, + reinterpret_cast( pSurfaceInfo ), + pSurfaceFormatCount, + reinterpret_cast( pSurfaceFormats ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getSurfaceFormats2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector surfaceFormats; + uint32_t surfaceFormatCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( + m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + &surfaceFormatCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && surfaceFormatCount ) + { + surfaceFormats.resize( surfaceFormatCount ); + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( + m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + &surfaceFormatCount, + reinterpret_cast( surfaceFormats.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); + if ( surfaceFormatCount < surfaceFormats.size() ) + { + surfaceFormats.resize( surfaceFormatCount ); + } + } + return createResultValue( + result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormats2KHR" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getSurfaceFormats2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, + SurfaceFormat2KHRAllocator & surfaceFormat2KHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector surfaceFormats( surfaceFormat2KHRAllocator ); + uint32_t surfaceFormatCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( + m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + &surfaceFormatCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && surfaceFormatCount ) + { + surfaceFormats.resize( surfaceFormatCount ); + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( + m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + &surfaceFormatCount, + reinterpret_cast( surfaceFormats.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); + if ( surfaceFormatCount < surfaceFormats.size() ) + { + surfaceFormats.resize( surfaceFormatCount ); + } + } + return createResultValue( + result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormats2KHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_get_display_properties2 === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getDisplayProperties2KHR( uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::DisplayProperties2KHR * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceDisplayProperties2KHR( + m_physicalDevice, pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getDisplayProperties2KHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = + static_cast( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceDisplayProperties2KHR( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayProperties2KHR" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getDisplayProperties2KHR( DisplayProperties2KHRAllocator & displayProperties2KHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties( displayProperties2KHRAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = + static_cast( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceDisplayProperties2KHR( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayProperties2KHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getDisplayPlaneProperties2KHR( uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( + m_physicalDevice, pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getDisplayPlaneProperties2KHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneProperties2KHR" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getDisplayPlaneProperties2KHR( + DisplayPlaneProperties2KHRAllocator & displayPlaneProperties2KHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties( + displayPlaneProperties2KHRAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneProperties2KHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getDisplayModeProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetDisplayModeProperties2KHR( m_physicalDevice, + static_cast( display ), + pPropertyCount, + reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getDisplayModeProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetDisplayModeProperties2KHR( + m_physicalDevice, static_cast( display ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + d.vkGetDisplayModeProperties2KHR( m_physicalDevice, + static_cast( display ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayModeProperties2KHR" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getDisplayModeProperties2KHR( + VULKAN_HPP_NAMESPACE::DisplayKHR display, + DisplayModeProperties2KHRAllocator & displayModeProperties2KHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties( + displayModeProperties2KHRAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetDisplayModeProperties2KHR( + m_physicalDevice, static_cast( display ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + d.vkGetDisplayModeProperties2KHR( m_physicalDevice, + static_cast( display ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayModeProperties2KHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilities2KHR( + const VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR * pDisplayPlaneInfo, + VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR * pCapabilities, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetDisplayPlaneCapabilities2KHR( m_physicalDevice, + reinterpret_cast( pDisplayPlaneInfo ), + reinterpret_cast( pCapabilities ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + PhysicalDevice::getDisplayPlaneCapabilities2KHR( + const VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR & displayPlaneInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR capabilities; + Result result = static_cast( + d.vkGetDisplayPlaneCapabilities2KHR( m_physicalDevice, + reinterpret_cast( &displayPlaneInfo ), + reinterpret_cast( &capabilities ) ) ); + return createResultValue( + result, capabilities, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneCapabilities2KHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::createIOSSurfaceMVK( const VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateIOSSurfaceMVK( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Instance::createIOSSurfaceMVK( const VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateIOSSurfaceMVK( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createIOSSurfaceMVK" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::createIOSSurfaceMVKUnique( const VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateIOSSurfaceMVK( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createIOSSurfaceMVKUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::createMacOSSurfaceMVK( const VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateMacOSSurfaceMVK( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Instance::createMacOSSurfaceMVK( const VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateMacOSSurfaceMVK( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createMacOSSurfaceMVK" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::createMacOSSurfaceMVKUnique( const VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateMacOSSurfaceMVK( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createMacOSSurfaceMVKUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setDebugUtilsObjectNameEXT( + const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT * pNameInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkSetDebugUtilsObjectNameEXT( + m_device, reinterpret_cast( pNameInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::setDebugUtilsObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT & nameInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkSetDebugUtilsObjectNameEXT( + m_device, reinterpret_cast( &nameInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setDebugUtilsObjectNameEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setDebugUtilsObjectTagEXT( + const VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT * pTagInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkSetDebugUtilsObjectTagEXT( m_device, reinterpret_cast( pTagInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::setDebugUtilsObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT & tagInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkSetDebugUtilsObjectTagEXT( m_device, reinterpret_cast( &tagInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setDebugUtilsObjectTagEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pLabelInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkQueueBeginDebugUtilsLabelEXT( m_queue, reinterpret_cast( pLabelInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkQueueBeginDebugUtilsLabelEXT( m_queue, reinterpret_cast( &labelInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Queue::endDebugUtilsLabelEXT( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkQueueEndDebugUtilsLabelEXT( m_queue ); + } + + template + VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pLabelInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkQueueInsertDebugUtilsLabelEXT( m_queue, reinterpret_cast( pLabelInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkQueueInsertDebugUtilsLabelEXT( m_queue, reinterpret_cast( &labelInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pLabelInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast( pLabelInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast( &labelInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::endDebugUtilsLabelEXT( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndDebugUtilsLabelEXT( m_commandBuffer ); + } + + template + VULKAN_HPP_INLINE void + CommandBuffer::insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pLabelInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdInsertDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast( pLabelInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdInsertDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast( &labelInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::createDebugUtilsMessengerEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT * pMessenger, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateDebugUtilsMessengerEXT( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pMessenger ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createDebugUtilsMessengerEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger; + Result result = static_cast( + d.vkCreateDebugUtilsMessengerEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &messenger ) ) ); + return createResultValue( + result, messenger, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDebugUtilsMessengerEXT" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + Instance::createDebugUtilsMessengerEXTUnique( + const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger; + Result result = static_cast( + d.vkCreateDebugUtilsMessengerEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &messenger ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, messenger, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDebugUtilsMessengerEXTUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Instance::destroyDebugUtilsMessengerEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDebugUtilsMessengerEXT( m_instance, + static_cast( messenger ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Instance::destroyDebugUtilsMessengerEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDebugUtilsMessengerEXT( + m_instance, + static_cast( messenger ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Instance::destroy( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDebugUtilsMessengerEXT( m_instance, + static_cast( messenger ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Instance::destroy( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDebugUtilsMessengerEXT( + m_instance, + static_cast( messenger ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT( + VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageTypes, + const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT * pCallbackData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkSubmitDebugUtilsMessageEXT( m_instance, + static_cast( messageSeverity ), + static_cast( messageTypes ), + reinterpret_cast( pCallbackData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Instance::submitDebugUtilsMessageEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageTypes, + const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT & callbackData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkSubmitDebugUtilsMessageEXT( m_instance, + static_cast( messageSeverity ), + static_cast( messageTypes ), + reinterpret_cast( &callbackData ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getAndroidHardwareBufferPropertiesANDROID( + const struct AHardwareBuffer * buffer, + VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetAndroidHardwareBufferPropertiesANDROID( + m_device, buffer, reinterpret_cast( pProperties ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID properties; + Result result = static_cast( d.vkGetAndroidHardwareBufferPropertiesANDROID( + m_device, &buffer, reinterpret_cast( &properties ) ) ); + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID & properties = + structureChain.template get(); + Result result = static_cast( d.vkGetAndroidHardwareBufferPropertiesANDROID( + m_device, &buffer, reinterpret_cast( &properties ) ) ); + return createResultValue( + result, structureChain, VULKAN_HPP_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryAndroidHardwareBufferANDROID( + const VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID * pInfo, + struct AHardwareBuffer ** pBuffer, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryAndroidHardwareBufferANDROID( + m_device, reinterpret_cast( pInfo ), pBuffer ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryAndroidHardwareBufferANDROID( + const VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + struct AHardwareBuffer * buffer; + Result result = static_cast( d.vkGetMemoryAndroidHardwareBufferANDROID( + m_device, reinterpret_cast( &info ), &buffer ) ); + return createResultValue( + result, buffer, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryAndroidHardwareBufferANDROID" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + //=== VK_EXT_sample_locations === + + template + VULKAN_HPP_INLINE void + CommandBuffer::setSampleLocationsEXT( const VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT * pSampleLocationsInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetSampleLocationsEXT( m_commandBuffer, + reinterpret_cast( pSampleLocationsInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::setSampleLocationsEXT( const VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT & sampleLocationsInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetSampleLocationsEXT( m_commandBuffer, + reinterpret_cast( &sampleLocationsInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void PhysicalDevice::getMultisamplePropertiesEXT( + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, + VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT * pMultisampleProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceMultisamplePropertiesEXT( + m_physicalDevice, + static_cast( samples ), + reinterpret_cast( pMultisampleProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT + PhysicalDevice::getMultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT multisampleProperties; + d.vkGetPhysicalDeviceMultisamplePropertiesEXT( + m_physicalDevice, + static_cast( samples ), + reinterpret_cast( &multisampleProperties ) ); + return multisampleProperties; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_get_memory_requirements2 === + + template + VULKAN_HPP_INLINE void + Device::getImageMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageMemoryRequirements2KHR( m_device, + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getImageMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + d.vkGetImageMemoryRequirements2KHR( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getImageMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + d.vkGetImageMemoryRequirements2KHR( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::getBufferMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetBufferMemoryRequirements2KHR( m_device, + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getBufferMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + d.vkGetBufferMemoryRequirements2KHR( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getBufferMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + d.vkGetBufferMemoryRequirements2KHR( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageSparseMemoryRequirements2KHR( + m_device, + reinterpret_cast( pInfo ), + pSparseMemoryRequirementCount, + reinterpret_cast( pSparseMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector sparseMemoryRequirements; + uint32_t sparseMemoryRequirementCount; + d.vkGetImageSparseMemoryRequirements2KHR( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetImageSparseMemoryRequirements2KHR( + m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + return sparseMemoryRequirements; + } + + template < + typename SparseImageMemoryRequirements2Allocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info, + SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector sparseMemoryRequirements( + sparseImageMemoryRequirements2Allocator ); + uint32_t sparseMemoryRequirementCount; + d.vkGetImageSparseMemoryRequirements2KHR( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetImageSparseMemoryRequirements2KHR( + m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + return sparseMemoryRequirements; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_acceleration_structure === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createAccelerationStructureKHR( + const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructure, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateAccelerationStructureKHR( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pAccelerationStructure ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure; + Result result = static_cast( d.vkCreateAccelerationStructureKHR( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &accelerationStructure ) ) ); + return createResultValue( + result, accelerationStructure, VULKAN_HPP_NAMESPACE_STRING "::Device::createAccelerationStructureKHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createAccelerationStructureKHRUnique( + const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure; + Result result = static_cast( d.vkCreateAccelerationStructureKHR( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &accelerationStructure ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, + accelerationStructure, + VULKAN_HPP_NAMESPACE_STRING "::Device::createAccelerationStructureKHRUnique", + deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::destroyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyAccelerationStructureKHR( m_device, + static_cast( accelerationStructure ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyAccelerationStructureKHR( + m_device, + static_cast( accelerationStructure ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyAccelerationStructureKHR( m_device, + static_cast( accelerationStructure ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyAccelerationStructureKHR( + m_device, + static_cast( accelerationStructure ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresKHR( + uint32_t infoCount, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR * pInfos, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBuildAccelerationStructuresKHR( + m_commandBuffer, + infoCount, + reinterpret_cast( pInfos ), + reinterpret_cast( ppBuildRangeInfos ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresKHR( + ArrayProxy const & infos, + ArrayProxy const & pBuildRangeInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( infos.size() == pBuildRangeInfos.size() ); +# else + if ( infos.size() != pBuildRangeInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdBuildAccelerationStructuresKHR( + m_commandBuffer, + infos.size(), + reinterpret_cast( infos.data() ), + reinterpret_cast( pBuildRangeInfos.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresIndirectKHR( + uint32_t infoCount, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR * pInfos, + const VULKAN_HPP_NAMESPACE::DeviceAddress * pIndirectDeviceAddresses, + const uint32_t * pIndirectStrides, + const uint32_t * const * ppMaxPrimitiveCounts, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBuildAccelerationStructuresIndirectKHR( + m_commandBuffer, + infoCount, + reinterpret_cast( pInfos ), + reinterpret_cast( pIndirectDeviceAddresses ), + pIndirectStrides, + ppMaxPrimitiveCounts ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresIndirectKHR( + ArrayProxy const & infos, + ArrayProxy const & indirectDeviceAddresses, + ArrayProxy const & indirectStrides, + ArrayProxy const & pMaxPrimitiveCounts, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( infos.size() == indirectDeviceAddresses.size() ); + VULKAN_HPP_ASSERT( infos.size() == indirectStrides.size() ); + VULKAN_HPP_ASSERT( infos.size() == pMaxPrimitiveCounts.size() ); +# else + if ( infos.size() != indirectDeviceAddresses.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectDeviceAddresses.size()" ); + } + if ( infos.size() != indirectStrides.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectStrides.size()" ); + } + if ( infos.size() != pMaxPrimitiveCounts.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != pMaxPrimitiveCounts.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdBuildAccelerationStructuresIndirectKHR( + m_commandBuffer, + infos.size(), + reinterpret_cast( infos.data() ), + reinterpret_cast( indirectDeviceAddresses.data() ), + indirectStrides.data(), + pMaxPrimitiveCounts.data() ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::buildAccelerationStructuresKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + uint32_t infoCount, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR * pInfos, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkBuildAccelerationStructuresKHR( + m_device, + static_cast( deferredOperation ), + infoCount, + reinterpret_cast( pInfos ), + reinterpret_cast( ppBuildRangeInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE Result Device::buildAccelerationStructuresKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + ArrayProxy const & infos, + ArrayProxy const & pBuildRangeInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( infos.size() == pBuildRangeInfos.size() ); +# else + if ( infos.size() != pBuildRangeInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::Device::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + Result result = static_cast( d.vkBuildAccelerationStructuresKHR( + m_device, + static_cast( deferredOperation ), + infos.size(), + reinterpret_cast( infos.data() ), + reinterpret_cast( pBuildRangeInfos.data() ) ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::buildAccelerationStructuresKHR", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, + VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR * pInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCopyAccelerationStructureKHR( m_device, + static_cast( deferredOperation ), + reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkCopyAccelerationStructureKHR( m_device, + static_cast( deferredOperation ), + reinterpret_cast( &info ) ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::copyAccelerationStructureKHR", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, + VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyAccelerationStructureToMemoryKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR * pInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCopyAccelerationStructureToMemoryKHR( + m_device, + static_cast( deferredOperation ), + reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyAccelerationStructureToMemoryKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkCopyAccelerationStructureToMemoryKHR( + m_device, + static_cast( deferredOperation ), + reinterpret_cast( &info ) ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::copyAccelerationStructureToMemoryKHR", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, + VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMemoryToAccelerationStructureKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR * pInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCopyMemoryToAccelerationStructureKHR( + m_device, + static_cast( deferredOperation ), + reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMemoryToAccelerationStructureKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkCopyMemoryToAccelerationStructureKHR( + m_device, + static_cast( deferredOperation ), + reinterpret_cast( &info ) ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::copyMemoryToAccelerationStructureKHR", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, + VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::writeAccelerationStructuresPropertiesKHR( + uint32_t accelerationStructureCount, + const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + size_t dataSize, + void * pData, + size_t stride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkWriteAccelerationStructuresPropertiesKHR( + m_device, + accelerationStructureCount, + reinterpret_cast( pAccelerationStructures ), + static_cast( queryType ), + dataSize, + pData, + stride ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_DEPRECATED( "This function is deprecated. Use one of the other flavours of it." ) + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type Device::writeAccelerationStructuresPropertiesKHR( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + ArrayProxy const & data, + size_t stride, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkWriteAccelerationStructuresPropertiesKHR( + m_device, + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + data.size() * sizeof( T ), + reinterpret_cast( data.data() ), + stride ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertiesKHR" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::writeAccelerationStructuresPropertiesKHR( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + size_t dataSize, + size_t stride, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( d.vkWriteAccelerationStructuresPropertiesKHR( + m_device, + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ), + stride ) ); + return createResultValue( + result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertiesKHR" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::writeAccelerationStructuresPropertyKHR( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + size_t stride, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + DataType data; + Result result = static_cast( d.vkWriteAccelerationStructuresPropertiesKHR( + m_device, + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + sizeof( DataType ), + reinterpret_cast( &data ), + stride ) ); + return createResultValue( + result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertyKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::copyAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR * pInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyAccelerationStructureKHR( m_commandBuffer, + reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::copyAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyAccelerationStructureKHR( m_commandBuffer, + reinterpret_cast( &info ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureToMemoryKHR( + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR * pInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyAccelerationStructureToMemoryKHR( + m_commandBuffer, reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureToMemoryKHR( + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyAccelerationStructureToMemoryKHR( + m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToAccelerationStructureKHR( + const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR * pInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyMemoryToAccelerationStructureKHR( + m_commandBuffer, reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToAccelerationStructureKHR( + const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyMemoryToAccelerationStructureKHR( + m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE DeviceAddress Device::getAccelerationStructureAddressKHR( + const VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR * pInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetAccelerationStructureDeviceAddressKHR( + m_device, reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE DeviceAddress Device::getAccelerationStructureAddressKHR( + const VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetAccelerationStructureDeviceAddressKHR( + m_device, reinterpret_cast( &info ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesKHR( + uint32_t accelerationStructureCount, + const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteAccelerationStructuresPropertiesKHR( + m_commandBuffer, + accelerationStructureCount, + reinterpret_cast( pAccelerationStructures ), + static_cast( queryType ), + static_cast( queryPool ), + firstQuery ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesKHR( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteAccelerationStructuresPropertiesKHR( + m_commandBuffer, + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + static_cast( queryPool ), + firstQuery ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::getAccelerationStructureCompatibilityKHR( + const VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR * pVersionInfo, + VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR * pCompatibility, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceAccelerationStructureCompatibilityKHR( + m_device, + reinterpret_cast( pVersionInfo ), + reinterpret_cast( pCompatibility ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR + Device::getAccelerationStructureCompatibilityKHR( + const VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR & versionInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR compatibility; + d.vkGetDeviceAccelerationStructureCompatibilityKHR( + m_device, + reinterpret_cast( &versionInfo ), + reinterpret_cast( &compatibility ) ); + return compatibility; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::getAccelerationStructureBuildSizesKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR * pBuildInfo, + const uint32_t * pMaxPrimitiveCounts, + VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR * pSizeInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetAccelerationStructureBuildSizesKHR( + m_device, + static_cast( buildType ), + reinterpret_cast( pBuildInfo ), + pMaxPrimitiveCounts, + reinterpret_cast( pSizeInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR + Device::getAccelerationStructureBuildSizesKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR & buildInfo, + ArrayProxy const & maxPrimitiveCounts, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( maxPrimitiveCounts.size() == buildInfo.geometryCount ); +# else + if ( maxPrimitiveCounts.size() != buildInfo.geometryCount ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::Device::getAccelerationStructureBuildSizesKHR: maxPrimitiveCounts.size() != buildInfo.geometryCount" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR sizeInfo; + d.vkGetAccelerationStructureBuildSizesKHR( + m_device, + static_cast( buildType ), + reinterpret_cast( &buildInfo ), + maxPrimitiveCounts.data(), + reinterpret_cast( &sizeInfo ) ); + return sizeInfo; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_sampler_ycbcr_conversion === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createSamplerYcbcrConversionKHR( const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion * pYcbcrConversion, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateSamplerYcbcrConversionKHR( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pYcbcrConversion ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createSamplerYcbcrConversionKHR( const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion; + Result result = static_cast( d.vkCreateSamplerYcbcrConversionKHR( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &ycbcrConversion ) ) ); + return createResultValue( + result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING "::Device::createSamplerYcbcrConversionKHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createSamplerYcbcrConversionKHRUnique( + const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion; + Result result = static_cast( d.vkCreateSamplerYcbcrConversionKHR( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &ycbcrConversion ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING "::Device::createSamplerYcbcrConversionKHRUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::destroySamplerYcbcrConversionKHR( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySamplerYcbcrConversionKHR( m_device, + static_cast( ycbcrConversion ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroySamplerYcbcrConversionKHR( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySamplerYcbcrConversionKHR( + m_device, + static_cast( ycbcrConversion ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_bind_memory2 === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::bindBufferMemory2KHR( uint32_t bindInfoCount, + const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo * pBindInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkBindBufferMemory2KHR( + m_device, bindInfoCount, reinterpret_cast( pBindInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::bindBufferMemory2KHR( ArrayProxy const & bindInfos, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkBindBufferMemory2KHR( + m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory2KHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::bindImageMemory2KHR( uint32_t bindInfoCount, + const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo * pBindInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkBindImageMemory2KHR( + m_device, bindInfoCount, reinterpret_cast( pBindInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::bindImageMemory2KHR( ArrayProxy const & bindInfos, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkBindImageMemory2KHR( + m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory2KHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_image_drm_format_modifier === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getImageDrmFormatModifierPropertiesEXT( + VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetImageDrmFormatModifierPropertiesEXT( + m_device, + static_cast( image ), + reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::getImageDrmFormatModifierPropertiesEXT( VULKAN_HPP_NAMESPACE::Image image, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT properties; + Result result = static_cast( d.vkGetImageDrmFormatModifierPropertiesEXT( + m_device, + static_cast( image ), + reinterpret_cast( &properties ) ) ); + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::Device::getImageDrmFormatModifierPropertiesEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_validation_cache === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createValidationCacheEXT( const VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::ValidationCacheEXT * pValidationCache, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateValidationCacheEXT( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pValidationCache ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::createValidationCacheEXT( const VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache; + Result result = static_cast( + d.vkCreateValidationCacheEXT( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &validationCache ) ) ); + return createResultValue( + result, validationCache, VULKAN_HPP_NAMESPACE_STRING "::Device::createValidationCacheEXT" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createValidationCacheEXTUnique( const VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache; + Result result = static_cast( + d.vkCreateValidationCacheEXT( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &validationCache ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, validationCache, VULKAN_HPP_NAMESPACE_STRING "::Device::createValidationCacheEXTUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::destroyValidationCacheEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyValidationCacheEXT( m_device, + static_cast( validationCache ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyValidationCacheEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyValidationCacheEXT( m_device, + static_cast( validationCache ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyValidationCacheEXT( m_device, + static_cast( validationCache ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyValidationCacheEXT( m_device, + static_cast( validationCache ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::mergeValidationCachesEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT dstCache, + uint32_t srcCacheCount, + const VULKAN_HPP_NAMESPACE::ValidationCacheEXT * pSrcCaches, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkMergeValidationCachesEXT( m_device, + static_cast( dstCache ), + srcCacheCount, + reinterpret_cast( pSrcCaches ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::mergeValidationCachesEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT dstCache, + ArrayProxy const & srcCaches, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkMergeValidationCachesEXT( m_device, + static_cast( dstCache ), + srcCaches.size(), + reinterpret_cast( srcCaches.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::mergeValidationCachesEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getValidationCacheDataEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, + size_t * pDataSize, + void * pData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetValidationCacheDataEXT( + m_device, static_cast( validationCache ), pDataSize, pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getValidationCacheDataEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector data; + size_t dataSize; + Result result; + do + { + result = static_cast( d.vkGetValidationCacheDataEXT( + m_device, static_cast( validationCache ), &dataSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = + static_cast( d.vkGetValidationCacheDataEXT( m_device, + static_cast( validationCache ), + &dataSize, + reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( dataSize <= data.size() ); + if ( dataSize < data.size() ) + { + data.resize( dataSize ); + } + } + return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getValidationCacheDataEXT" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getValidationCacheDataEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, + Uint8_tAllocator & uint8_tAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector data( uint8_tAllocator ); + size_t dataSize; + Result result; + do + { + result = static_cast( d.vkGetValidationCacheDataEXT( + m_device, static_cast( validationCache ), &dataSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = + static_cast( d.vkGetValidationCacheDataEXT( m_device, + static_cast( validationCache ), + &dataSize, + reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( dataSize <= data.size() ); + if ( dataSize < data.size() ) + { + data.resize( dataSize ); + } + } + return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getValidationCacheDataEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_shading_rate_image === + + template + VULKAN_HPP_INLINE void CommandBuffer::bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView imageView, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindShadingRateImageNV( + m_commandBuffer, static_cast( imageView ), static_cast( imageLayout ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setViewportShadingRatePaletteNV( + uint32_t firstViewport, + uint32_t viewportCount, + const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * pShadingRatePalettes, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewportShadingRatePaletteNV( m_commandBuffer, + firstViewport, + viewportCount, + reinterpret_cast( pShadingRatePalettes ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::setViewportShadingRatePaletteNV( + uint32_t firstViewport, + ArrayProxy const & shadingRatePalettes, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewportShadingRatePaletteNV( + m_commandBuffer, + firstViewport, + shadingRatePalettes.size(), + reinterpret_cast( shadingRatePalettes.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::setCoarseSampleOrderNV( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType, + uint32_t customSampleOrderCount, + const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * pCustomSampleOrders, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCoarseSampleOrderNV( m_commandBuffer, + static_cast( sampleOrderType ), + customSampleOrderCount, + reinterpret_cast( pCustomSampleOrders ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::setCoarseSampleOrderNV( + VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType, + ArrayProxy const & customSampleOrders, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCoarseSampleOrderNV( m_commandBuffer, + static_cast( sampleOrderType ), + customSampleOrders.size(), + reinterpret_cast( customSampleOrders.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_ray_tracing === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createAccelerationStructureNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructure, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateAccelerationStructureNV( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pAccelerationStructure ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::createAccelerationStructureNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure; + Result result = static_cast( d.vkCreateAccelerationStructureNV( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &accelerationStructure ) ) ); + return createResultValue( + result, accelerationStructure, VULKAN_HPP_NAMESPACE_STRING "::Device::createAccelerationStructureNV" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createAccelerationStructureNVUnique( + const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure; + Result result = static_cast( d.vkCreateAccelerationStructureNV( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &accelerationStructure ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, + accelerationStructure, + VULKAN_HPP_NAMESPACE_STRING "::Device::createAccelerationStructureNVUnique", + deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::destroyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyAccelerationStructureNV( m_device, + static_cast( accelerationStructure ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyAccelerationStructureNV( + m_device, + static_cast( accelerationStructure ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyAccelerationStructureNV( m_device, + static_cast( accelerationStructure ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyAccelerationStructureNV( + m_device, + static_cast( accelerationStructure ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::getAccelerationStructureMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR * pMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetAccelerationStructureMemoryRequirementsNV( + m_device, + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR + Device::getAccelerationStructureMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR memoryRequirements; + d.vkGetAccelerationStructureMemoryRequirementsNV( + m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getAccelerationStructureMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR & memoryRequirements = + structureChain.template get(); + d.vkGetAccelerationStructureMemoryRequirementsNV( + m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindAccelerationStructureMemoryNV( + uint32_t bindInfoCount, + const VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV * pBindInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkBindAccelerationStructureMemoryNV( + m_device, bindInfoCount, reinterpret_cast( pBindInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::bindAccelerationStructureMemoryNV( + ArrayProxy const & bindInfos, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkBindAccelerationStructureMemoryNV( + m_device, + bindInfos.size(), + reinterpret_cast( bindInfos.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindAccelerationStructureMemoryNV" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::buildAccelerationStructureNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV * pInfo, + VULKAN_HPP_NAMESPACE::Buffer instanceData, + VULKAN_HPP_NAMESPACE::DeviceSize instanceOffset, + VULKAN_HPP_NAMESPACE::Bool32 update, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, + VULKAN_HPP_NAMESPACE::Buffer scratch, + VULKAN_HPP_NAMESPACE::DeviceSize scratchOffset, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBuildAccelerationStructureNV( m_commandBuffer, + reinterpret_cast( pInfo ), + static_cast( instanceData ), + static_cast( instanceOffset ), + static_cast( update ), + static_cast( dst ), + static_cast( src ), + static_cast( scratch ), + static_cast( scratchOffset ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::buildAccelerationStructureNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV & info, + VULKAN_HPP_NAMESPACE::Buffer instanceData, + VULKAN_HPP_NAMESPACE::DeviceSize instanceOffset, + VULKAN_HPP_NAMESPACE::Bool32 update, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, + VULKAN_HPP_NAMESPACE::Buffer scratch, + VULKAN_HPP_NAMESPACE::DeviceSize scratchOffset, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBuildAccelerationStructureNV( m_commandBuffer, + reinterpret_cast( &info ), + static_cast( instanceData ), + static_cast( instanceOffset ), + static_cast( update ), + static_cast( dst ), + static_cast( src ), + static_cast( scratch ), + static_cast( scratchOffset ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::copyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyAccelerationStructureNV( m_commandBuffer, + static_cast( dst ), + static_cast( src ), + static_cast( mode ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer raygenShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize raygenShaderBindingOffset, + VULKAN_HPP_NAMESPACE::Buffer missShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingOffset, + VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingStride, + VULKAN_HPP_NAMESPACE::Buffer hitShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingOffset, + VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingStride, + VULKAN_HPP_NAMESPACE::Buffer callableShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingOffset, + VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingStride, + uint32_t width, + uint32_t height, + uint32_t depth, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdTraceRaysNV( m_commandBuffer, + static_cast( raygenShaderBindingTableBuffer ), + static_cast( raygenShaderBindingOffset ), + static_cast( missShaderBindingTableBuffer ), + static_cast( missShaderBindingOffset ), + static_cast( missShaderBindingStride ), + static_cast( hitShaderBindingTableBuffer ), + static_cast( hitShaderBindingOffset ), + static_cast( hitShaderBindingStride ), + static_cast( callableShaderBindingTableBuffer ), + static_cast( callableShaderBindingOffset ), + static_cast( callableShaderBindingStride ), + width, + height, + depth ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createRayTracingPipelinesNV( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + uint32_t createInfoCount, + const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV * pCreateInfos, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Pipeline * pPipelines, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateRayTracingPipelinesNV( m_device, + static_cast( pipelineCache ), + createInfoCount, + reinterpret_cast( pCreateInfos ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPipelines ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> + Device::createRayTracingPipelinesNV( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector pipelines( createInfos.size() ); + Result result = static_cast( + d.vkCreateRayTracingPipelinesNV( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + return createResultValue( + result, + pipelines, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNV", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> + Device::createRayTracingPipelinesNV( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector pipelines( createInfos.size(), pipelineAllocator ); + Result result = static_cast( + d.vkCreateRayTracingPipelinesNV( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + return createResultValue( + result, + pipelines, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNV", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue + Device::createRayTracingPipelineNV( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Pipeline pipeline; + Result result = static_cast( + d.vkCreateRayTracingPipelinesNV( m_device, + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &pipeline ) ) ); + return createResultValue( + result, + pipeline, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelineNV", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createRayTracingPipelinesNVUnique( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector, PipelineAllocator> uniquePipelines; + std::vector pipelines( createInfos.size() ); + Result result = static_cast( + d.vkCreateRayTracingPipelinesNV( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) || + ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + uniquePipelines.reserve( createInfos.size() ); + ObjectDestroy deleter( *this, allocator, d ); + for ( size_t i = 0; i < createInfos.size(); i++ ) + { + uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); + } + } + return createResultValue( + result, + std::move( uniquePipelines ), + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNVUnique", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template < + typename Dispatch, + typename PipelineAllocator, + typename B, + typename std::enable_if>::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createRayTracingPipelinesNVUnique( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector, PipelineAllocator> uniquePipelines( pipelineAllocator ); + std::vector pipelines( createInfos.size() ); + Result result = static_cast( + d.vkCreateRayTracingPipelinesNV( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) || + ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + uniquePipelines.reserve( createInfos.size() ); + ObjectDestroy deleter( *this, allocator, d ); + for ( size_t i = 0; i < createInfos.size(); i++ ) + { + uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); + } + } + return createResultValue( + result, + std::move( uniquePipelines ), + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNVUnique", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> + Device::createRayTracingPipelineNVUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Pipeline pipeline; + Result result = static_cast( + d.vkCreateRayTracingPipelinesNV( m_device, + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &pipeline ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, + pipeline, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelineNVUnique", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT }, + deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getRayTracingShaderGroupHandlesNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetRayTracingShaderGroupHandlesNV( + m_device, static_cast( pipeline ), firstGroup, groupCount, dataSize, pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_DEPRECATED( "This function is deprecated. Use one of the other flavours of it." ) + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type Device::getRayTracingShaderGroupHandlesNV( + VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + ArrayProxy const & data, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = + static_cast( d.vkGetRayTracingShaderGroupHandlesNV( m_device, + static_cast( pipeline ), + firstGroup, + groupCount, + data.size() * sizeof( T ), + reinterpret_cast( data.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingShaderGroupHandlesNV" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getRayTracingShaderGroupHandlesNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = + static_cast( d.vkGetRayTracingShaderGroupHandlesNV( m_device, + static_cast( pipeline ), + firstGroup, + groupCount, + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ) ); + return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingShaderGroupHandlesNV" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getRayTracingShaderGroupHandleNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + DataType data; + Result result = static_cast( d.vkGetRayTracingShaderGroupHandlesNV( m_device, + static_cast( pipeline ), + firstGroup, + groupCount, + sizeof( DataType ), + reinterpret_cast( &data ) ) ); + return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingShaderGroupHandleNV" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getAccelerationStructureHandleNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, + size_t dataSize, + void * pData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetAccelerationStructureHandleNV( + m_device, static_cast( accelerationStructure ), dataSize, pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_DEPRECATED( "This function is deprecated. Use one of the other flavours of it." ) + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type Device::getAccelerationStructureHandleNV( + VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, + ArrayProxy const & data, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkGetAccelerationStructureHandleNV( m_device, + static_cast( accelerationStructure ), + data.size() * sizeof( T ), + reinterpret_cast( data.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getAccelerationStructureHandleNV" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getAccelerationStructureHandleNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, + size_t dataSize, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( + d.vkGetAccelerationStructureHandleNV( m_device, + static_cast( accelerationStructure ), + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ) ); + return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getAccelerationStructureHandleNV" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getAccelerationStructureHandleNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + DataType data; + Result result = static_cast( + d.vkGetAccelerationStructureHandleNV( m_device, + static_cast( accelerationStructure ), + sizeof( DataType ), + reinterpret_cast( &data ) ) ); + return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getAccelerationStructureHandleNV" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesNV( + uint32_t accelerationStructureCount, + const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteAccelerationStructuresPropertiesNV( + m_commandBuffer, + accelerationStructureCount, + reinterpret_cast( pAccelerationStructures ), + static_cast( queryType ), + static_cast( queryPool ), + firstQuery ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesNV( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteAccelerationStructuresPropertiesNV( + m_commandBuffer, + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + static_cast( queryPool ), + firstQuery ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::compileDeferredNV( + VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t shader, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCompileDeferredNV( m_device, static_cast( pipeline ), shader ) ); + } +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::compileDeferredNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t shader, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = + static_cast( d.vkCompileDeferredNV( m_device, static_cast( pipeline ), shader ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::compileDeferredNV" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_maintenance3 === + + template + VULKAN_HPP_INLINE void + Device::getDescriptorSetLayoutSupportKHR( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo * pCreateInfo, + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport * pSupport, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDescriptorSetLayoutSupportKHR( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pSupport ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport + Device::getDescriptorSetLayoutSupportKHR( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport support; + d.vkGetDescriptorSetLayoutSupportKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( &support ) ); + return support; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getDescriptorSetLayoutSupportKHR( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport & support = + structureChain.template get(); + d.vkGetDescriptorSetLayoutSupportKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( &support ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_draw_indirect_count === + + template + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndirectCountKHR( m_commandBuffer, + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndexedIndirectCountKHR( m_commandBuffer, + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + //=== VK_EXT_external_memory_host === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryHostPointerPropertiesEXT( + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + const void * pHostPointer, + VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryHostPointerPropertiesEXT( + m_device, + static_cast( handleType ), + pHostPointer, + reinterpret_cast( pMemoryHostPointerProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::getMemoryHostPointerPropertiesEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + const void * pHostPointer, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT memoryHostPointerProperties; + Result result = static_cast( d.vkGetMemoryHostPointerPropertiesEXT( + m_device, + static_cast( handleType ), + pHostPointer, + reinterpret_cast( &memoryHostPointerProperties ) ) ); + return createResultValue( + result, memoryHostPointerProperties, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryHostPointerPropertiesEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_AMD_buffer_marker === + + template + VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarkerAMD( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + uint32_t marker, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteBufferMarkerAMD( m_commandBuffer, + static_cast( pipelineStage ), + static_cast( dstBuffer ), + static_cast( dstOffset ), + marker ); + } + + //=== VK_EXT_calibrated_timestamps === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getCalibrateableTimeDomainsEXT( uint32_t * pTimeDomainCount, + VULKAN_HPP_NAMESPACE::TimeDomainEXT * pTimeDomains, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( + m_physicalDevice, pTimeDomainCount, reinterpret_cast( pTimeDomains ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getCalibrateableTimeDomainsEXT( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector timeDomains; + uint32_t timeDomainCount; + Result result; + do + { + result = static_cast( + d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, &timeDomainCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && timeDomainCount ) + { + timeDomains.resize( timeDomainCount ); + result = static_cast( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( + m_physicalDevice, &timeDomainCount, reinterpret_cast( timeDomains.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() ); + if ( timeDomainCount < timeDomains.size() ) + { + timeDomains.resize( timeDomainCount ); + } + } + return createResultValue( + result, timeDomains, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCalibrateableTimeDomainsEXT" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getCalibrateableTimeDomainsEXT( TimeDomainEXTAllocator & timeDomainEXTAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector timeDomains( timeDomainEXTAllocator ); + uint32_t timeDomainCount; + Result result; + do + { + result = static_cast( + d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, &timeDomainCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && timeDomainCount ) + { + timeDomains.resize( timeDomainCount ); + result = static_cast( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( + m_physicalDevice, &timeDomainCount, reinterpret_cast( timeDomains.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() ); + if ( timeDomainCount < timeDomains.size() ) + { + timeDomains.resize( timeDomainCount ); + } + } + return createResultValue( + result, timeDomains, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCalibrateableTimeDomainsEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getCalibratedTimestampsEXT( uint32_t timestampCount, + const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT * pTimestampInfos, + uint64_t * pTimestamps, + uint64_t * pMaxDeviation, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetCalibratedTimestampsEXT( m_device, + timestampCount, + reinterpret_cast( pTimestampInfos ), + pTimestamps, + pMaxDeviation ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType, uint64_t>>::type + Device::getCalibratedTimestampsEXT( + ArrayProxy const & timestampInfos, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::pair, uint64_t> data( + std::piecewise_construct, std::forward_as_tuple( timestampInfos.size() ), std::forward_as_tuple( 0 ) ); + std::vector & timestamps = data.first; + uint64_t & maxDeviation = data.second; + Result result = static_cast( + d.vkGetCalibratedTimestampsEXT( m_device, + timestampInfos.size(), + reinterpret_cast( timestampInfos.data() ), + timestamps.data(), + &maxDeviation ) ); + return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampsEXT" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType, uint64_t>>::type + Device::getCalibratedTimestampsEXT( + ArrayProxy const & timestampInfos, + Uint64_tAllocator & uint64_tAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::pair, uint64_t> data( + std::piecewise_construct, + std::forward_as_tuple( timestampInfos.size(), uint64_tAllocator ), + std::forward_as_tuple( 0 ) ); + std::vector & timestamps = data.first; + uint64_t & maxDeviation = data.second; + Result result = static_cast( + d.vkGetCalibratedTimestampsEXT( m_device, + timestampInfos.size(), + reinterpret_cast( timestampInfos.data() ), + timestamps.data(), + &maxDeviation ) ); + return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampsEXT" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getCalibratedTimestampEXT( const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT & timestampInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::pair data; + uint64_t & timestamp = data.first; + uint64_t & maxDeviation = data.second; + Result result = static_cast( + d.vkGetCalibratedTimestampsEXT( m_device, + 1, + reinterpret_cast( ×tampInfo ), + ×tamp, + &maxDeviation ) ); + return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_mesh_shader === + + template + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksNV( uint32_t taskCount, + uint32_t firstTask, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMeshTasksNV( m_commandBuffer, taskCount, firstTask ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + uint32_t drawCount, + uint32_t stride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMeshTasksIndirectNV( + m_commandBuffer, static_cast( buffer ), static_cast( offset ), drawCount, stride ); + } + + template + VULKAN_HPP_INLINE void + CommandBuffer::drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMeshTasksIndirectCountNV( m_commandBuffer, + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + //=== VK_NV_scissor_exclusive === + + template + VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorNV( uint32_t firstExclusiveScissor, + uint32_t exclusiveScissorCount, + const VULKAN_HPP_NAMESPACE::Rect2D * pExclusiveScissors, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetExclusiveScissorNV( m_commandBuffer, + firstExclusiveScissor, + exclusiveScissorCount, + reinterpret_cast( pExclusiveScissors ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::setExclusiveScissorNV( uint32_t firstExclusiveScissor, + ArrayProxy const & exclusiveScissors, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetExclusiveScissorNV( m_commandBuffer, + firstExclusiveScissor, + exclusiveScissors.size(), + reinterpret_cast( exclusiveScissors.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_device_diagnostic_checkpoints === + + template + VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( const void * pCheckpointMarker, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCheckpointNV( m_commandBuffer, pCheckpointMarker ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( CheckpointMarkerType const & checkpointMarker, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCheckpointNV( m_commandBuffer, reinterpret_cast( &checkpointMarker ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Queue::getCheckpointDataNV( uint32_t * pCheckpointDataCount, + VULKAN_HPP_NAMESPACE::CheckpointDataNV * pCheckpointData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetQueueCheckpointDataNV( + m_queue, pCheckpointDataCount, reinterpret_cast( pCheckpointData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Queue::getCheckpointDataNV( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector checkpointData; + uint32_t checkpointDataCount; + d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, nullptr ); + checkpointData.resize( checkpointDataCount ); + d.vkGetQueueCheckpointDataNV( + m_queue, &checkpointDataCount, reinterpret_cast( checkpointData.data() ) ); + VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() ); + return checkpointData; + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Queue::getCheckpointDataNV( CheckpointDataNVAllocator & checkpointDataNVAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector checkpointData( checkpointDataNVAllocator ); + uint32_t checkpointDataCount; + d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, nullptr ); + checkpointData.resize( checkpointDataCount ); + d.vkGetQueueCheckpointDataNV( + m_queue, &checkpointDataCount, reinterpret_cast( checkpointData.data() ) ); + VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() ); + return checkpointData; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_timeline_semaphore === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSemaphoreCounterValueKHR( + VULKAN_HPP_NAMESPACE::Semaphore semaphore, uint64_t * pValue, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetSemaphoreCounterValueKHR( m_device, static_cast( semaphore ), pValue ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getSemaphoreCounterValueKHR( VULKAN_HPP_NAMESPACE::Semaphore semaphore, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + uint64_t value; + Result result = + static_cast( d.vkGetSemaphoreCounterValueKHR( m_device, static_cast( semaphore ), &value ) ); + return createResultValue( result, value, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreCounterValueKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::waitSemaphoresKHR( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo * pWaitInfo, + uint64_t timeout, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkWaitSemaphoresKHR( m_device, reinterpret_cast( pWaitInfo ), timeout ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitSemaphoresKHR( + const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo, uint64_t timeout, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkWaitSemaphoresKHR( m_device, reinterpret_cast( &waitInfo ), timeout ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::waitSemaphoresKHR", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eTimeout } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::signalSemaphoreKHR( + const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo * pSignalInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkSignalSemaphoreKHR( m_device, reinterpret_cast( pSignalInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::signalSemaphoreKHR( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkSignalSemaphoreKHR( m_device, reinterpret_cast( &signalInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::signalSemaphoreKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_INTEL_performance_query === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::initializePerformanceApiINTEL( + const VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL * pInitializeInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkInitializePerformanceApiINTEL( + m_device, reinterpret_cast( pInitializeInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::initializePerformanceApiINTEL( + const VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL & initializeInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkInitializePerformanceApiINTEL( + m_device, reinterpret_cast( &initializeInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::initializePerformanceApiINTEL" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::uninitializePerformanceApiINTEL( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUninitializePerformanceApiINTEL( m_device ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::setPerformanceMarkerINTEL( + const VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL * pMarkerInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCmdSetPerformanceMarkerINTEL( + m_commandBuffer, reinterpret_cast( pMarkerInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + CommandBuffer::setPerformanceMarkerINTEL( const VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL & markerInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkCmdSetPerformanceMarkerINTEL( + m_commandBuffer, reinterpret_cast( &markerInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceMarkerINTEL" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::setPerformanceStreamMarkerINTEL( + const VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL * pMarkerInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCmdSetPerformanceStreamMarkerINTEL( + m_commandBuffer, reinterpret_cast( pMarkerInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + CommandBuffer::setPerformanceStreamMarkerINTEL( + const VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL & markerInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkCmdSetPerformanceStreamMarkerINTEL( + m_commandBuffer, reinterpret_cast( &markerInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceStreamMarkerINTEL" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::setPerformanceOverrideINTEL( + const VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL * pOverrideInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCmdSetPerformanceOverrideINTEL( + m_commandBuffer, reinterpret_cast( pOverrideInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + CommandBuffer::setPerformanceOverrideINTEL( const VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL & overrideInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkCmdSetPerformanceOverrideINTEL( + m_commandBuffer, reinterpret_cast( &overrideInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceOverrideINTEL" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::acquirePerformanceConfigurationINTEL( + const VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL * pAcquireInfo, + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL * pConfiguration, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkAcquirePerformanceConfigurationINTEL( + m_device, + reinterpret_cast( pAcquireInfo ), + reinterpret_cast( pConfiguration ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::acquirePerformanceConfigurationINTEL( + const VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL & acquireInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration; + Result result = static_cast( d.vkAcquirePerformanceConfigurationINTEL( + m_device, + reinterpret_cast( &acquireInfo ), + reinterpret_cast( &configuration ) ) ); + return createResultValue( + result, configuration, VULKAN_HPP_NAMESPACE_STRING "::Device::acquirePerformanceConfigurationINTEL" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::acquirePerformanceConfigurationINTELUnique( + const VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL & acquireInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration; + Result result = static_cast( d.vkAcquirePerformanceConfigurationINTEL( + m_device, + reinterpret_cast( &acquireInfo ), + reinterpret_cast( &configuration ) ) ); + ObjectRelease deleter( *this, d ); + return createResultValue( + result, + configuration, + VULKAN_HPP_NAMESPACE_STRING "::Device::acquirePerformanceConfigurationINTELUnique", + deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::releasePerformanceConfigurationINTEL( + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkReleasePerformanceConfigurationINTEL( + m_device, static_cast( configuration ) ) ); + } +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::releasePerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkReleasePerformanceConfigurationINTEL( + m_device, static_cast( configuration ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::releasePerformanceConfigurationINTEL" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::release( + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkReleasePerformanceConfigurationINTEL( + m_device, static_cast( configuration ) ) ); + } +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::release( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkReleasePerformanceConfigurationINTEL( + m_device, static_cast( configuration ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::release" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::setPerformanceConfigurationINTEL( + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkQueueSetPerformanceConfigurationINTEL( + m_queue, static_cast( configuration ) ) ); + } +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Queue::setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkQueueSetPerformanceConfigurationINTEL( + m_queue, static_cast( configuration ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::setPerformanceConfigurationINTEL" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getPerformanceParameterINTEL( VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter, + VULKAN_HPP_NAMESPACE::PerformanceValueINTEL * pValue, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPerformanceParameterINTEL( m_device, + static_cast( parameter ), + reinterpret_cast( pValue ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::getPerformanceParameterINTEL( VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PerformanceValueINTEL value; + Result result = + static_cast( d.vkGetPerformanceParameterINTEL( m_device, + static_cast( parameter ), + reinterpret_cast( &value ) ) ); + return createResultValue( result, value, VULKAN_HPP_NAMESPACE_STRING "::Device::getPerformanceParameterINTEL" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_AMD_display_native_hdr === + + template + VULKAN_HPP_INLINE void Device::setLocalDimmingAMD( VULKAN_HPP_NAMESPACE::SwapchainKHR swapChain, + VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkSetLocalDimmingAMD( + m_device, static_cast( swapChain ), static_cast( localDimmingEnable ) ); + } + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createImagePipeSurfaceFUCHSIA( + const VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateImagePipeSurfaceFUCHSIA( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Instance::createImagePipeSurfaceFUCHSIA( const VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( d.vkCreateImagePipeSurfaceFUCHSIA( + m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createImagePipeSurfaceFUCHSIA" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::createImagePipeSurfaceFUCHSIAUnique( + const VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( d.vkCreateImagePipeSurfaceFUCHSIA( + m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createImagePipeSurfaceFUCHSIAUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::createMetalSurfaceEXT( const VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateMetalSurfaceEXT( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Instance::createMetalSurfaceEXT( const VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateMetalSurfaceEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createMetalSurfaceEXT" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::createMetalSurfaceEXTUnique( const VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateMetalSurfaceEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createMetalSurfaceEXTUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_fragment_shading_rate === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getFragmentShadingRatesKHR( + uint32_t * pFragmentShadingRateCount, + VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceFragmentShadingRatesKHR( + m_physicalDevice, + pFragmentShadingRateCount, + reinterpret_cast( pFragmentShadingRates ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType< + std::vector>::type + PhysicalDevice::getFragmentShadingRatesKHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector + fragmentShadingRates; + uint32_t fragmentShadingRateCount; + Result result; + do + { + result = static_cast( + d.vkGetPhysicalDeviceFragmentShadingRatesKHR( m_physicalDevice, &fragmentShadingRateCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && fragmentShadingRateCount ) + { + fragmentShadingRates.resize( fragmentShadingRateCount ); + result = static_cast( d.vkGetPhysicalDeviceFragmentShadingRatesKHR( + m_physicalDevice, + &fragmentShadingRateCount, + reinterpret_cast( fragmentShadingRates.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( fragmentShadingRateCount <= fragmentShadingRates.size() ); + if ( fragmentShadingRateCount < fragmentShadingRates.size() ) + { + fragmentShadingRates.resize( fragmentShadingRateCount ); + } + } + return createResultValue( + result, fragmentShadingRates, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getFragmentShadingRatesKHR" ); + } + + template ::value, + int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType< + std::vector>::type + PhysicalDevice::getFragmentShadingRatesKHR( + PhysicalDeviceFragmentShadingRateKHRAllocator & physicalDeviceFragmentShadingRateKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector + fragmentShadingRates( physicalDeviceFragmentShadingRateKHRAllocator ); + uint32_t fragmentShadingRateCount; + Result result; + do + { + result = static_cast( + d.vkGetPhysicalDeviceFragmentShadingRatesKHR( m_physicalDevice, &fragmentShadingRateCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && fragmentShadingRateCount ) + { + fragmentShadingRates.resize( fragmentShadingRateCount ); + result = static_cast( d.vkGetPhysicalDeviceFragmentShadingRatesKHR( + m_physicalDevice, + &fragmentShadingRateCount, + reinterpret_cast( fragmentShadingRates.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( fragmentShadingRateCount <= fragmentShadingRates.size() ); + if ( fragmentShadingRateCount < fragmentShadingRates.size() ) + { + fragmentShadingRates.resize( fragmentShadingRateCount ); + } + } + return createResultValue( + result, fragmentShadingRates, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getFragmentShadingRatesKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateKHR( + const VULKAN_HPP_NAMESPACE::Extent2D * pFragmentSize, + const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2], + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetFragmentShadingRateKHR( m_commandBuffer, + reinterpret_cast( pFragmentSize ), + reinterpret_cast( combinerOps ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateKHR( + const VULKAN_HPP_NAMESPACE::Extent2D & fragmentSize, + const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2], + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetFragmentShadingRateKHR( m_commandBuffer, + reinterpret_cast( &fragmentSize ), + reinterpret_cast( combinerOps ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_buffer_device_address === + + template + VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressEXT( + const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetBufferDeviceAddressEXT( m_device, reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressEXT( + const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetBufferDeviceAddressEXT( m_device, reinterpret_cast( &info ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_tooling_info === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getToolPropertiesEXT( uint32_t * pToolCount, + VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties * pToolProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceToolPropertiesEXT( + m_physicalDevice, pToolCount, reinterpret_cast( pToolProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getToolPropertiesEXT( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector toolProperties; + uint32_t toolCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceToolPropertiesEXT( m_physicalDevice, &toolCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && toolCount ) + { + toolProperties.resize( toolCount ); + result = static_cast( d.vkGetPhysicalDeviceToolPropertiesEXT( + m_physicalDevice, &toolCount, reinterpret_cast( toolProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() ); + if ( toolCount < toolProperties.size() ) + { + toolProperties.resize( toolCount ); + } + } + return createResultValue( + result, toolProperties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getToolPropertiesEXT" ); + } + + template < + typename PhysicalDeviceToolPropertiesAllocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getToolPropertiesEXT( PhysicalDeviceToolPropertiesAllocator & physicalDeviceToolPropertiesAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector toolProperties( + physicalDeviceToolPropertiesAllocator ); + uint32_t toolCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceToolPropertiesEXT( m_physicalDevice, &toolCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && toolCount ) + { + toolProperties.resize( toolCount ); + result = static_cast( d.vkGetPhysicalDeviceToolPropertiesEXT( + m_physicalDevice, &toolCount, reinterpret_cast( toolProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() ); + if ( toolCount < toolProperties.size() ) + { + toolProperties.resize( toolCount ); + } + } + return createResultValue( + result, toolProperties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getToolPropertiesEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_present_wait === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::waitForPresentKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + uint64_t presentId, + uint64_t timeout, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkWaitForPresentKHR( m_device, static_cast( swapchain ), presentId, timeout ) ); + } +#else + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitForPresentKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + uint64_t presentId, + uint64_t timeout, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkWaitForPresentKHR( m_device, static_cast( swapchain ), presentId, timeout ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::waitForPresentKHR", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eTimeout } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_cooperative_matrix === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getCooperativeMatrixPropertiesNV( uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( + m_physicalDevice, pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getCooperativeMatrixPropertiesNV( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( + m_physicalDevice, + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixPropertiesNV" ); + } + + template < + typename CooperativeMatrixPropertiesNVAllocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getCooperativeMatrixPropertiesNV( + CooperativeMatrixPropertiesNVAllocator & cooperativeMatrixPropertiesNVAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties( + cooperativeMatrixPropertiesNVAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( + m_physicalDevice, + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixPropertiesNV" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_coverage_reduction_mode === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV( + uint32_t * pCombinationCount, + VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV * pCombinations, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + m_physicalDevice, + pCombinationCount, + reinterpret_cast( pCombinations ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType< + std::vector>::type + PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector combinations; + uint32_t combinationCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + m_physicalDevice, &combinationCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && combinationCount ) + { + combinations.resize( combinationCount ); + result = static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + m_physicalDevice, + &combinationCount, + reinterpret_cast( combinations.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( combinationCount <= combinations.size() ); + if ( combinationCount < combinations.size() ) + { + combinations.resize( combinationCount ); + } + } + return createResultValue( result, + combinations, + VULKAN_HPP_NAMESPACE_STRING + "::PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV" ); + } + + template ::value, + int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType< + std::vector>::type + PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV( + FramebufferMixedSamplesCombinationNVAllocator & framebufferMixedSamplesCombinationNVAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector combinations( + framebufferMixedSamplesCombinationNVAllocator ); + uint32_t combinationCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + m_physicalDevice, &combinationCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && combinationCount ) + { + combinations.resize( combinationCount ); + result = static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + m_physicalDevice, + &combinationCount, + reinterpret_cast( combinations.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( combinationCount <= combinations.size() ); + if ( combinationCount < combinations.size() ) + { + combinations.resize( combinationCount ); + } + } + return createResultValue( result, + combinations, + VULKAN_HPP_NAMESPACE_STRING + "::PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModes2EXT( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo, + uint32_t * pPresentModeCount, + VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( + m_physicalDevice, + reinterpret_cast( pSurfaceInfo ), + pPresentModeCount, + reinterpret_cast( pPresentModes ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector presentModes; + uint32_t presentModeCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( + m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + &presentModeCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && presentModeCount ) + { + presentModes.resize( presentModeCount ); + result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( + m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + &presentModeCount, + reinterpret_cast( presentModes.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); + if ( presentModeCount < presentModes.size() ) + { + presentModes.resize( presentModeCount ); + } + } + return createResultValue( + result, presentModes, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModes2EXT" ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, + PresentModeKHRAllocator & presentModeKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector presentModes( presentModeKHRAllocator ); + uint32_t presentModeCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( + m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + &presentModeCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && presentModeCount ) + { + presentModes.resize( presentModeCount ); + result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( + m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + &presentModeCount, + reinterpret_cast( presentModes.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); + if ( presentModeCount < presentModes.size() ) + { + presentModes.resize( presentModeCount ); + } + } + return createResultValue( + result, presentModes, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModes2EXT" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +# ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::acquireFullScreenExclusiveModeEXT( + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkAcquireFullScreenExclusiveModeEXT( m_device, static_cast( swapchain ) ) ); + } +# else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::acquireFullScreenExclusiveModeEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkAcquireFullScreenExclusiveModeEXT( m_device, static_cast( swapchain ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireFullScreenExclusiveModeEXT" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +# ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::releaseFullScreenExclusiveModeEXT( + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkReleaseFullScreenExclusiveModeEXT( m_device, static_cast( swapchain ) ) ); + } +# else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::releaseFullScreenExclusiveModeEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkReleaseFullScreenExclusiveModeEXT( m_device, static_cast( swapchain ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::releaseFullScreenExclusiveModeEXT" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getGroupSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo, + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR * pModes, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDeviceGroupSurfacePresentModes2EXT( + m_device, + reinterpret_cast( pSurfaceInfo ), + reinterpret_cast( pModes ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::getGroupSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes; + Result result = static_cast( d.vkGetDeviceGroupSurfacePresentModes2EXT( + m_device, + reinterpret_cast( &surfaceInfo ), + reinterpret_cast( &modes ) ) ); + return createResultValue( result, modes, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupSurfacePresentModes2EXT" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::createHeadlessSurfaceEXT( const VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateHeadlessSurfaceEXT( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Instance::createHeadlessSurfaceEXT( const VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateHeadlessSurfaceEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createHeadlessSurfaceEXT" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::createHeadlessSurfaceEXTUnique( const VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateHeadlessSurfaceEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createHeadlessSurfaceEXTUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_buffer_device_address === + + template + VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressKHR( + const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetBufferDeviceAddressKHR( m_device, reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressKHR( + const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetBufferDeviceAddressKHR( m_device, reinterpret_cast( &info ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddressKHR( + const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetBufferOpaqueCaptureAddressKHR( m_device, + reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddressKHR( + const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetBufferOpaqueCaptureAddressKHR( m_device, + reinterpret_cast( &info ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE uint64_t + Device::getMemoryOpaqueCaptureAddressKHR( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo * pInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetDeviceMemoryOpaqueCaptureAddressKHR( + m_device, reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE uint64_t + Device::getMemoryOpaqueCaptureAddressKHR( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetDeviceMemoryOpaqueCaptureAddressKHR( + m_device, reinterpret_cast( &info ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_line_rasterization === + + template + VULKAN_HPP_INLINE void CommandBuffer::setLineStippleEXT( uint32_t lineStippleFactor, + uint16_t lineStipplePattern, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetLineStippleEXT( m_commandBuffer, lineStippleFactor, lineStipplePattern ); + } + + //=== VK_EXT_host_query_reset === + + template + VULKAN_HPP_INLINE void Device::resetQueryPoolEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkResetQueryPoolEXT( m_device, static_cast( queryPool ), firstQuery, queryCount ); + } + + //=== VK_EXT_extended_dynamic_state === + + template + VULKAN_HPP_INLINE void CommandBuffer::setCullModeEXT( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCullModeEXT( m_commandBuffer, static_cast( cullMode ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setFrontFaceEXT( VULKAN_HPP_NAMESPACE::FrontFace frontFace, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetFrontFaceEXT( m_commandBuffer, static_cast( frontFace ) ); + } + + template + VULKAN_HPP_INLINE void + CommandBuffer::setPrimitiveTopologyEXT( VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetPrimitiveTopologyEXT( m_commandBuffer, static_cast( primitiveTopology ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCountEXT( uint32_t viewportCount, + const VULKAN_HPP_NAMESPACE::Viewport * pViewports, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewportWithCountEXT( + m_commandBuffer, viewportCount, reinterpret_cast( pViewports ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::setViewportWithCountEXT( ArrayProxy const & viewports, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewportWithCountEXT( + m_commandBuffer, viewports.size(), reinterpret_cast( viewports.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCountEXT( uint32_t scissorCount, + const VULKAN_HPP_NAMESPACE::Rect2D * pScissors, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetScissorWithCountEXT( m_commandBuffer, scissorCount, reinterpret_cast( pScissors ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::setScissorWithCountEXT( ArrayProxy const & scissors, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetScissorWithCountEXT( + m_commandBuffer, scissors.size(), reinterpret_cast( scissors.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2EXT( uint32_t firstBinding, + uint32_t bindingCount, + const VULKAN_HPP_NAMESPACE::Buffer * pBuffers, + const VULKAN_HPP_NAMESPACE::DeviceSize * pOffsets, + const VULKAN_HPP_NAMESPACE::DeviceSize * pSizes, + const VULKAN_HPP_NAMESPACE::DeviceSize * pStrides, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindVertexBuffers2EXT( m_commandBuffer, + firstBinding, + bindingCount, + reinterpret_cast( pBuffers ), + reinterpret_cast( pOffsets ), + reinterpret_cast( pSizes ), + reinterpret_cast( pStrides ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::bindVertexBuffers2EXT( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes, + ArrayProxy const & strides, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); + VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() ); + VULKAN_HPP_ASSERT( strides.empty() || buffers.size() == strides.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != offsets.size()" ); + } + if ( !sizes.empty() && buffers.size() != sizes.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != sizes.size()" ); + } + if ( !strides.empty() && buffers.size() != strides.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != strides.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdBindVertexBuffers2EXT( m_commandBuffer, + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ), + reinterpret_cast( sizes.data() ), + reinterpret_cast( strides.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::setDepthTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthTestEnableEXT( m_commandBuffer, static_cast( depthTestEnable ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setDepthWriteEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthWriteEnableEXT( m_commandBuffer, static_cast( depthWriteEnable ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setDepthCompareOpEXT( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthCompareOpEXT( m_commandBuffer, static_cast( depthCompareOp ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setDepthBoundsTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthBoundsTestEnableEXT( m_commandBuffer, static_cast( depthBoundsTestEnable ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setStencilTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetStencilTestEnableEXT( m_commandBuffer, static_cast( stencilTestEnable ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setStencilOpEXT( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + VULKAN_HPP_NAMESPACE::StencilOp failOp, + VULKAN_HPP_NAMESPACE::StencilOp passOp, + VULKAN_HPP_NAMESPACE::StencilOp depthFailOp, + VULKAN_HPP_NAMESPACE::CompareOp compareOp, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetStencilOpEXT( m_commandBuffer, + static_cast( faceMask ), + static_cast( failOp ), + static_cast( passOp ), + static_cast( depthFailOp ), + static_cast( compareOp ) ); + } + + //=== VK_KHR_deferred_host_operations === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createDeferredOperationKHR( const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DeferredOperationKHR * pDeferredOperation, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateDeferredOperationKHR( m_device, + reinterpret_cast( pAllocator ), + reinterpret_cast( pDeferredOperation ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::createDeferredOperationKHR( Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation; + Result result = static_cast( + d.vkCreateDeferredOperationKHR( m_device, + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &deferredOperation ) ) ); + return createResultValue( + result, deferredOperation, VULKAN_HPP_NAMESPACE_STRING "::Device::createDeferredOperationKHR" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createDeferredOperationKHRUnique( Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation; + Result result = static_cast( + d.vkCreateDeferredOperationKHR( m_device, + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &deferredOperation ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, deferredOperation, VULKAN_HPP_NAMESPACE_STRING "::Device::createDeferredOperationKHRUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::destroyDeferredOperationKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDeferredOperationKHR( m_device, + static_cast( operation ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyDeferredOperationKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDeferredOperationKHR( m_device, + static_cast( operation ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDeferredOperationKHR( m_device, + static_cast( operation ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDeferredOperationKHR( m_device, + static_cast( operation ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE uint32_t Device::getDeferredOperationMaxConcurrencyKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetDeferredOperationMaxConcurrencyKHR( m_device, static_cast( operation ) ); + } + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getDeferredOperationResultKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetDeferredOperationResultKHR( m_device, static_cast( operation ) ) ); + } +#else + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getDeferredOperationResultKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkGetDeferredOperationResultKHR( m_device, static_cast( operation ) ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::getDeferredOperationResultKHR", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eNotReady } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::deferredOperationJoinKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkDeferredOperationJoinKHR( m_device, static_cast( operation ) ) ); + } +#else + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::deferredOperationJoinKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = + static_cast( d.vkDeferredOperationJoinKHR( m_device, static_cast( operation ) ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::deferredOperationJoinKHR", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, + VULKAN_HPP_NAMESPACE::Result::eThreadDoneKHR, + VULKAN_HPP_NAMESPACE::Result::eThreadIdleKHR } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_pipeline_executable_properties === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getPipelineExecutablePropertiesKHR( const VULKAN_HPP_NAMESPACE::PipelineInfoKHR * pPipelineInfo, + uint32_t * pExecutableCount, + VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPipelineExecutablePropertiesKHR( m_device, + reinterpret_cast( pPipelineInfo ), + pExecutableCount, + reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType< + std::vector>::type + Device::getPipelineExecutablePropertiesKHR( const VULKAN_HPP_NAMESPACE::PipelineInfoKHR & pipelineInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties; + uint32_t executableCount; + Result result; + do + { + result = static_cast( d.vkGetPipelineExecutablePropertiesKHR( + m_device, reinterpret_cast( &pipelineInfo ), &executableCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && executableCount ) + { + properties.resize( executableCount ); + result = static_cast( d.vkGetPipelineExecutablePropertiesKHR( + m_device, + reinterpret_cast( &pipelineInfo ), + &executableCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( executableCount <= properties.size() ); + if ( executableCount < properties.size() ) + { + properties.resize( executableCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutablePropertiesKHR" ); + } + + template < + typename PipelineExecutablePropertiesKHRAllocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType< + std::vector>::type + Device::getPipelineExecutablePropertiesKHR( + const VULKAN_HPP_NAMESPACE::PipelineInfoKHR & pipelineInfo, + PipelineExecutablePropertiesKHRAllocator & pipelineExecutablePropertiesKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector properties( + pipelineExecutablePropertiesKHRAllocator ); + uint32_t executableCount; + Result result; + do + { + result = static_cast( d.vkGetPipelineExecutablePropertiesKHR( + m_device, reinterpret_cast( &pipelineInfo ), &executableCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && executableCount ) + { + properties.resize( executableCount ); + result = static_cast( d.vkGetPipelineExecutablePropertiesKHR( + m_device, + reinterpret_cast( &pipelineInfo ), + &executableCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( executableCount <= properties.size() ); + if ( executableCount < properties.size() ) + { + properties.resize( executableCount ); + } + } + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutablePropertiesKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getPipelineExecutableStatisticsKHR( const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR * pExecutableInfo, + uint32_t * pStatisticCount, + VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR * pStatistics, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPipelineExecutableStatisticsKHR( m_device, + reinterpret_cast( pExecutableInfo ), + pStatisticCount, + reinterpret_cast( pStatistics ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getPipelineExecutableStatisticsKHR( const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector statistics; + uint32_t statisticCount; + Result result; + do + { + result = static_cast( d.vkGetPipelineExecutableStatisticsKHR( + m_device, + reinterpret_cast( &executableInfo ), + &statisticCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && statisticCount ) + { + statistics.resize( statisticCount ); + result = static_cast( d.vkGetPipelineExecutableStatisticsKHR( + m_device, + reinterpret_cast( &executableInfo ), + &statisticCount, + reinterpret_cast( statistics.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( statisticCount <= statistics.size() ); + if ( statisticCount < statistics.size() ) + { + statistics.resize( statisticCount ); + } + } + return createResultValue( + result, statistics, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutableStatisticsKHR" ); + } + + template < + typename PipelineExecutableStatisticKHRAllocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getPipelineExecutableStatisticsKHR( + const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo, + PipelineExecutableStatisticKHRAllocator & pipelineExecutableStatisticKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector statistics( + pipelineExecutableStatisticKHRAllocator ); + uint32_t statisticCount; + Result result; + do + { + result = static_cast( d.vkGetPipelineExecutableStatisticsKHR( + m_device, + reinterpret_cast( &executableInfo ), + &statisticCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && statisticCount ) + { + statistics.resize( statisticCount ); + result = static_cast( d.vkGetPipelineExecutableStatisticsKHR( + m_device, + reinterpret_cast( &executableInfo ), + &statisticCount, + reinterpret_cast( statistics.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( statisticCount <= statistics.size() ); + if ( statisticCount < statistics.size() ) + { + statistics.resize( statisticCount ); + } + } + return createResultValue( + result, statistics, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutableStatisticsKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPipelineExecutableInternalRepresentationsKHR( + const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR * pExecutableInfo, + uint32_t * pInternalRepresentationCount, + VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR * pInternalRepresentations, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPipelineExecutableInternalRepresentationsKHR( + m_device, + reinterpret_cast( pExecutableInfo ), + pInternalRepresentationCount, + reinterpret_cast( pInternalRepresentations ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getPipelineExecutableInternalRepresentationsKHR( + const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector + internalRepresentations; + uint32_t internalRepresentationCount; + Result result; + do + { + result = static_cast( d.vkGetPipelineExecutableInternalRepresentationsKHR( + m_device, + reinterpret_cast( &executableInfo ), + &internalRepresentationCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && internalRepresentationCount ) + { + internalRepresentations.resize( internalRepresentationCount ); + result = static_cast( d.vkGetPipelineExecutableInternalRepresentationsKHR( + m_device, + reinterpret_cast( &executableInfo ), + &internalRepresentationCount, + reinterpret_cast( internalRepresentations.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( internalRepresentationCount <= internalRepresentations.size() ); + if ( internalRepresentationCount < internalRepresentations.size() ) + { + internalRepresentations.resize( internalRepresentationCount ); + } + } + return createResultValue( result, + internalRepresentations, + VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutableInternalRepresentationsKHR" ); + } + + template < + typename PipelineExecutableInternalRepresentationKHRAllocator, + typename Dispatch, + typename B, + typename std::enable_if::value, + int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getPipelineExecutableInternalRepresentationsKHR( + const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo, + PipelineExecutableInternalRepresentationKHRAllocator & pipelineExecutableInternalRepresentationKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector + internalRepresentations( pipelineExecutableInternalRepresentationKHRAllocator ); + uint32_t internalRepresentationCount; + Result result; + do + { + result = static_cast( d.vkGetPipelineExecutableInternalRepresentationsKHR( + m_device, + reinterpret_cast( &executableInfo ), + &internalRepresentationCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && internalRepresentationCount ) + { + internalRepresentations.resize( internalRepresentationCount ); + result = static_cast( d.vkGetPipelineExecutableInternalRepresentationsKHR( + m_device, + reinterpret_cast( &executableInfo ), + &internalRepresentationCount, + reinterpret_cast( internalRepresentations.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( internalRepresentationCount <= internalRepresentations.size() ); + if ( internalRepresentationCount < internalRepresentations.size() ) + { + internalRepresentations.resize( internalRepresentationCount ); + } + } + return createResultValue( result, + internalRepresentations, + VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutableInternalRepresentationsKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_device_generated_commands === + + template + VULKAN_HPP_INLINE void Device::getGeneratedCommandsMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetGeneratedCommandsMemoryRequirementsNV( + m_device, + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getGeneratedCommandsMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + d.vkGetGeneratedCommandsMemoryRequirementsNV( + m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getGeneratedCommandsMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + d.vkGetGeneratedCommandsMemoryRequirementsNV( + m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsNV( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV * pGeneratedCommandsInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPreprocessGeneratedCommandsNV( + m_commandBuffer, reinterpret_cast( pGeneratedCommandsInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsNV( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPreprocessGeneratedCommandsNV( + m_commandBuffer, reinterpret_cast( &generatedCommandsInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsNV( + VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV * pGeneratedCommandsInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdExecuteGeneratedCommandsNV( m_commandBuffer, + static_cast( isPreprocessed ), + reinterpret_cast( pGeneratedCommandsInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsNV( + VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdExecuteGeneratedCommandsNV( m_commandBuffer, + static_cast( isPreprocessed ), + reinterpret_cast( &generatedCommandsInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::bindPipelineShaderGroupNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t groupIndex, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindPipelineShaderGroupNV( m_commandBuffer, + static_cast( pipelineBindPoint ), + static_cast( pipeline ), + groupIndex ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNV( + const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV * pIndirectCommandsLayout, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateIndirectCommandsLayoutNV( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pIndirectCommandsLayout ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createIndirectCommandsLayoutNV( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout; + Result result = static_cast( d.vkCreateIndirectCommandsLayoutNV( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &indirectCommandsLayout ) ) ); + return createResultValue( + result, indirectCommandsLayout, VULKAN_HPP_NAMESPACE_STRING "::Device::createIndirectCommandsLayoutNV" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createIndirectCommandsLayoutNVUnique( + const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout; + Result result = static_cast( d.vkCreateIndirectCommandsLayoutNV( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &indirectCommandsLayout ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, + indirectCommandsLayout, + VULKAN_HPP_NAMESPACE_STRING "::Device::createIndirectCommandsLayoutNVUnique", + deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::destroyIndirectCommandsLayoutNV( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyIndirectCommandsLayoutNV( m_device, + static_cast( indirectCommandsLayout ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyIndirectCommandsLayoutNV( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyIndirectCommandsLayoutNV( + m_device, + static_cast( indirectCommandsLayout ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyIndirectCommandsLayoutNV( m_device, + static_cast( indirectCommandsLayout ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyIndirectCommandsLayoutNV( + m_device, + static_cast( indirectCommandsLayout ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_acquire_drm_display === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::acquireDrmDisplayEXT( + int32_t drmFd, VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkAcquireDrmDisplayEXT( m_physicalDevice, drmFd, static_cast( display ) ) ); + } +#else + template + VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::acquireDrmDisplayEXT( + int32_t drmFd, VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = + static_cast( d.vkAcquireDrmDisplayEXT( m_physicalDevice, drmFd, static_cast( display ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireDrmDisplayEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getDrmDisplayEXT( int32_t drmFd, + uint32_t connectorId, + VULKAN_HPP_NAMESPACE::DisplayKHR * display, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetDrmDisplayEXT( m_physicalDevice, drmFd, connectorId, reinterpret_cast( display ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + PhysicalDevice::getDrmDisplayEXT( int32_t drmFd, uint32_t connectorId, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DisplayKHR display; + Result result = static_cast( + d.vkGetDrmDisplayEXT( m_physicalDevice, drmFd, connectorId, reinterpret_cast( &display ) ) ); + return createResultValue( result, display, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDrmDisplayEXT" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getDrmDisplayEXTUnique( int32_t drmFd, uint32_t connectorId, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DisplayKHR display; + Result result = static_cast( + d.vkGetDrmDisplayEXT( m_physicalDevice, drmFd, connectorId, reinterpret_cast( &display ) ) ); + ObjectRelease deleter( *this, d ); + return createResultValue( + result, display, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDrmDisplayEXTUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_private_data === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createPrivateDataSlotEXT( const VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::PrivateDataSlot * pPrivateDataSlot, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreatePrivateDataSlotEXT( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPrivateDataSlot ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::createPrivateDataSlotEXT( const VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot; + Result result = static_cast( + d.vkCreatePrivateDataSlotEXT( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &privateDataSlot ) ) ); + return createResultValue( + result, privateDataSlot, VULKAN_HPP_NAMESPACE_STRING "::Device::createPrivateDataSlotEXT" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createPrivateDataSlotEXTUnique( const VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot; + Result result = static_cast( + d.vkCreatePrivateDataSlotEXT( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &privateDataSlot ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, privateDataSlot, VULKAN_HPP_NAMESPACE_STRING "::Device::createPrivateDataSlotEXTUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::destroyPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPrivateDataSlotEXT( m_device, + static_cast( privateDataSlot ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPrivateDataSlotEXT( m_device, + static_cast( privateDataSlot ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t data, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkSetPrivateDataEXT( m_device, + static_cast( objectType ), + objectHandle, + static_cast( privateDataSlot ), + data ) ); + } +#else + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t data, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkSetPrivateDataEXT( m_device, + static_cast( objectType ), + objectHandle, + static_cast( privateDataSlot ), + data ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setPrivateDataEXT" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t * pData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPrivateDataEXT( m_device, + static_cast( objectType ), + objectHandle, + static_cast( privateDataSlot ), + pData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t + Device::getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + uint64_t data; + d.vkGetPrivateDataEXT( m_device, + static_cast( objectType ), + objectHandle, + static_cast( privateDataSlot ), + &data ); + return data; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_encode_queue === + + template + VULKAN_HPP_INLINE void CommandBuffer::encodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR * pEncodeInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEncodeVideoKHR( m_commandBuffer, reinterpret_cast( pEncodeInfo ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::encodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR & encodeInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEncodeVideoKHR( m_commandBuffer, reinterpret_cast( &encodeInfo ) ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_KHR_synchronization2 === + + template + VULKAN_HPP_INLINE void CommandBuffer::setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::DependencyInfo * pDependencyInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetEvent2KHR( + m_commandBuffer, static_cast( event ), reinterpret_cast( pDependencyInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetEvent2KHR( + m_commandBuffer, static_cast( event ), reinterpret_cast( &dependencyInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResetEvent2KHR( + m_commandBuffer, static_cast( event ), static_cast( stageMask ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::waitEvents2KHR( uint32_t eventCount, + const VULKAN_HPP_NAMESPACE::Event * pEvents, + const VULKAN_HPP_NAMESPACE::DependencyInfo * pDependencyInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWaitEvents2KHR( m_commandBuffer, + eventCount, + reinterpret_cast( pEvents ), + reinterpret_cast( pDependencyInfos ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::waitEvents2KHR( ArrayProxy const & events, + ArrayProxy const & dependencyInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( events.size() == dependencyInfos.size() ); +# else + if ( events.size() != dependencyInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::waitEvents2KHR: events.size() != dependencyInfos.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdWaitEvents2KHR( m_commandBuffer, + events.size(), + reinterpret_cast( events.data() ), + reinterpret_cast( dependencyInfos.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::pipelineBarrier2KHR( const VULKAN_HPP_NAMESPACE::DependencyInfo * pDependencyInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPipelineBarrier2KHR( m_commandBuffer, reinterpret_cast( pDependencyInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::pipelineBarrier2KHR( const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPipelineBarrier2KHR( m_commandBuffer, reinterpret_cast( &dependencyInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp2KHR( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteTimestamp2KHR( + m_commandBuffer, static_cast( stage ), static_cast( queryPool ), query ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::submit2KHR( uint32_t submitCount, + const VULKAN_HPP_NAMESPACE::SubmitInfo2 * pSubmits, + VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkQueueSubmit2KHR( + m_queue, submitCount, reinterpret_cast( pSubmits ), static_cast( fence ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Queue::submit2KHR( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkQueueSubmit2KHR( m_queue, + submits.size(), + reinterpret_cast( submits.data() ), + static_cast( fence ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit2KHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarker2AMD( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + uint32_t marker, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteBufferMarker2AMD( m_commandBuffer, + static_cast( stage ), + static_cast( dstBuffer ), + static_cast( dstOffset ), + marker ); + } + + template + VULKAN_HPP_INLINE void Queue::getCheckpointData2NV( uint32_t * pCheckpointDataCount, + VULKAN_HPP_NAMESPACE::CheckpointData2NV * pCheckpointData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetQueueCheckpointData2NV( + m_queue, pCheckpointDataCount, reinterpret_cast( pCheckpointData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Queue::getCheckpointData2NV( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector checkpointData; + uint32_t checkpointDataCount; + d.vkGetQueueCheckpointData2NV( m_queue, &checkpointDataCount, nullptr ); + checkpointData.resize( checkpointDataCount ); + d.vkGetQueueCheckpointData2NV( + m_queue, &checkpointDataCount, reinterpret_cast( checkpointData.data() ) ); + VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() ); + return checkpointData; + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Queue::getCheckpointData2NV( CheckpointData2NVAllocator & checkpointData2NVAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector checkpointData( checkpointData2NVAllocator ); + uint32_t checkpointDataCount; + d.vkGetQueueCheckpointData2NV( m_queue, &checkpointDataCount, nullptr ); + checkpointData.resize( checkpointDataCount ); + d.vkGetQueueCheckpointData2NV( + m_queue, &checkpointDataCount, reinterpret_cast( checkpointData.data() ) ); + VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() ); + return checkpointData; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_fragment_shading_rate_enums === + + template + VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateEnumNV( + VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate, + const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2], + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetFragmentShadingRateEnumNV( m_commandBuffer, + static_cast( shadingRate ), + reinterpret_cast( combinerOps ) ); + } + + //=== VK_KHR_copy_commands2 === + + template + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 * pCopyBufferInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBuffer2KHR( m_commandBuffer, reinterpret_cast( pCopyBufferInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 & copyBufferInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBuffer2KHR( m_commandBuffer, reinterpret_cast( ©BufferInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::copyImage2KHR( const VULKAN_HPP_NAMESPACE::CopyImageInfo2 * pCopyImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImage2KHR( m_commandBuffer, reinterpret_cast( pCopyImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::copyImage2KHR( const VULKAN_HPP_NAMESPACE::CopyImageInfo2 & copyImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImage2KHR( m_commandBuffer, reinterpret_cast( ©ImageInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::copyBufferToImage2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 * pCopyBufferToImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBufferToImage2KHR( m_commandBuffer, + reinterpret_cast( pCopyBufferToImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::copyBufferToImage2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 & copyBufferToImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBufferToImage2KHR( m_commandBuffer, + reinterpret_cast( ©BufferToImageInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::copyImageToBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 * pCopyImageToBufferInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImageToBuffer2KHR( m_commandBuffer, + reinterpret_cast( pCopyImageToBufferInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::copyImageToBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 & copyImageToBufferInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImageToBuffer2KHR( m_commandBuffer, + reinterpret_cast( ©ImageToBufferInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::blitImage2KHR( const VULKAN_HPP_NAMESPACE::BlitImageInfo2 * pBlitImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBlitImage2KHR( m_commandBuffer, reinterpret_cast( pBlitImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::blitImage2KHR( const VULKAN_HPP_NAMESPACE::BlitImageInfo2 & blitImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBlitImage2KHR( m_commandBuffer, reinterpret_cast( &blitImageInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::resolveImage2KHR( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 * pResolveImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResolveImage2KHR( m_commandBuffer, reinterpret_cast( pResolveImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::resolveImage2KHR( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 & resolveImageInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResolveImage2KHR( m_commandBuffer, reinterpret_cast( &resolveImageInfo ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + +# ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::acquireWinrtDisplayNV( + VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkAcquireWinrtDisplayNV( m_physicalDevice, static_cast( display ) ) ); + } +# else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::acquireWinrtDisplayNV( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = + static_cast( d.vkAcquireWinrtDisplayNV( m_physicalDevice, static_cast( display ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireWinrtDisplayNV" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + PhysicalDevice::getWinrtDisplayNV( uint32_t deviceRelativeId, + VULKAN_HPP_NAMESPACE::DisplayKHR * pDisplay, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetWinrtDisplayNV( m_physicalDevice, deviceRelativeId, reinterpret_cast( pDisplay ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + PhysicalDevice::getWinrtDisplayNV( uint32_t deviceRelativeId, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DisplayKHR display; + Result result = static_cast( + d.vkGetWinrtDisplayNV( m_physicalDevice, deviceRelativeId, reinterpret_cast( &display ) ) ); + return createResultValue( result, display, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getWinrtDisplayNV" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getWinrtDisplayNVUnique( uint32_t deviceRelativeId, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::DisplayKHR display; + Result result = static_cast( + d.vkGetWinrtDisplayNV( m_physicalDevice, deviceRelativeId, reinterpret_cast( &display ) ) ); + ObjectRelease deleter( *this, d ); + return createResultValue( + result, display, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getWinrtDisplayNVUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::createDirectFBSurfaceEXT( const VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateDirectFBSurfaceEXT( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Instance::createDirectFBSurfaceEXT( const VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateDirectFBSurfaceEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDirectFBSurfaceEXT" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::createDirectFBSurfaceEXTUnique( const VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateDirectFBSurfaceEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDirectFBSurfaceEXTUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getDirectFBPresentationSupportEXT( + uint32_t queueFamilyIndex, IDirectFB * dfb, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceDirectFBPresentationSupportEXT( m_physicalDevice, queueFamilyIndex, dfb ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getDirectFBPresentationSupportEXT( + uint32_t queueFamilyIndex, IDirectFB & dfb, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetPhysicalDeviceDirectFBPresentationSupportEXT( m_physicalDevice, queueFamilyIndex, &dfb ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_KHR_ray_tracing_pipeline === + + template + VULKAN_HPP_INLINE void CommandBuffer::traceRaysKHR( + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pRaygenShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pMissShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pHitShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pCallableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdTraceRaysKHR( m_commandBuffer, + reinterpret_cast( pRaygenShaderBindingTable ), + reinterpret_cast( pMissShaderBindingTable ), + reinterpret_cast( pHitShaderBindingTable ), + reinterpret_cast( pCallableShaderBindingTable ), + width, + height, + depth ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::traceRaysKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdTraceRaysKHR( m_commandBuffer, + reinterpret_cast( &raygenShaderBindingTable ), + reinterpret_cast( &missShaderBindingTable ), + reinterpret_cast( &hitShaderBindingTable ), + reinterpret_cast( &callableShaderBindingTable ), + width, + height, + depth ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createRayTracingPipelinesKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + uint32_t createInfoCount, + const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR * pCreateInfos, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Pipeline * pPipelines, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateRayTracingPipelinesKHR( m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + createInfoCount, + reinterpret_cast( pCreateInfos ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPipelines ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> + Device::createRayTracingPipelinesKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateRayTracingPipelinesKHR( + m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + return createResultValue( result, + pipelines, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesKHR", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, + VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> + Device::createRayTracingPipelinesKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector pipelines( createInfos.size(), pipelineAllocator ); + Result result = static_cast( d.vkCreateRayTracingPipelinesKHR( + m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + return createResultValue( result, + pipelines, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesKHR", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, + VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue + Device::createRayTracingPipelineKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Pipeline pipeline; + Result result = static_cast( + d.vkCreateRayTracingPipelinesKHR( m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &pipeline ) ) ); + return createResultValue( result, + pipeline, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelineKHR", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, + VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createRayTracingPipelinesKHRUnique( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector, PipelineAllocator> uniquePipelines; + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateRayTracingPipelinesKHR( + m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) || + ( result == VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) || + ( result == VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) || + ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + uniquePipelines.reserve( createInfos.size() ); + ObjectDestroy deleter( *this, allocator, d ); + for ( size_t i = 0; i < createInfos.size(); i++ ) + { + uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); + } + } + return createResultValue( result, + std::move( uniquePipelines ), + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesKHRUnique", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, + VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template < + typename Dispatch, + typename PipelineAllocator, + typename B, + typename std::enable_if>::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createRayTracingPipelinesKHRUnique( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector, PipelineAllocator> uniquePipelines( pipelineAllocator ); + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateRayTracingPipelinesKHR( + m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( pipelines.data() ) ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) || + ( result == VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) || + ( result == VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) || + ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + uniquePipelines.reserve( createInfos.size() ); + ObjectDestroy deleter( *this, allocator, d ); + for ( size_t i = 0; i < createInfos.size(); i++ ) + { + uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); + } + } + return createResultValue( result, + std::move( uniquePipelines ), + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesKHRUnique", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, + VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> + Device::createRayTracingPipelineKHRUnique( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Pipeline pipeline; + Result result = static_cast( + d.vkCreateRayTracingPipelinesKHR( m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &pipeline ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( result, + pipeline, + VULKAN_HPP_NAMESPACE_STRING + "::Device::createRayTracingPipelineKHRUnique", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, + VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR, + VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT }, + deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getRayTracingShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetRayTracingShaderGroupHandlesKHR( + m_device, static_cast( pipeline ), firstGroup, groupCount, dataSize, pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_DEPRECATED( "This function is deprecated. Use one of the other flavours of it." ) + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type Device::getRayTracingShaderGroupHandlesKHR( + VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + ArrayProxy const & data, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = + static_cast( d.vkGetRayTracingShaderGroupHandlesKHR( m_device, + static_cast( pipeline ), + firstGroup, + groupCount, + data.size() * sizeof( T ), + reinterpret_cast( data.data() ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingShaderGroupHandlesKHR" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getRayTracingShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = + static_cast( d.vkGetRayTracingShaderGroupHandlesKHR( m_device, + static_cast( pipeline ), + firstGroup, + groupCount, + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ) ); + return createResultValue( + result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingShaderGroupHandlesKHR" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getRayTracingShaderGroupHandleKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + DataType data; + Result result = static_cast( d.vkGetRayTracingShaderGroupHandlesKHR( m_device, + static_cast( pipeline ), + firstGroup, + groupCount, + sizeof( DataType ), + reinterpret_cast( &data ) ) ); + return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingShaderGroupHandleKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getRayTracingCaptureReplayShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( + m_device, static_cast( pipeline ), firstGroup, groupCount, dataSize, pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_DEPRECATED( "This function is deprecated. Use one of the other flavours of it." ) + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type Device::getRayTracingCaptureReplayShaderGroupHandlesKHR( + VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + ArrayProxy const & data, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( + d.vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( m_device, + static_cast( pipeline ), + firstGroup, + groupCount, + data.size() * sizeof( T ), + reinterpret_cast( data.data() ) ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingCaptureReplayShaderGroupHandlesKHR" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getRayTracingCaptureReplayShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( + d.vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( m_device, + static_cast( pipeline ), + firstGroup, + groupCount, + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ) ); + return createResultValue( + result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingCaptureReplayShaderGroupHandlesKHR" ); + } + + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getRayTracingCaptureReplayShaderGroupHandleKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + DataType data; + Result result = + static_cast( d.vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( m_device, + static_cast( pipeline ), + firstGroup, + groupCount, + sizeof( DataType ), + reinterpret_cast( &data ) ) ); + return createResultValue( + result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingCaptureReplayShaderGroupHandleKHR" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirectKHR( + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pRaygenShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pMissShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pHitShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pCallableShaderBindingTable, + VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdTraceRaysIndirectKHR( + m_commandBuffer, + reinterpret_cast( pRaygenShaderBindingTable ), + reinterpret_cast( pMissShaderBindingTable ), + reinterpret_cast( pHitShaderBindingTable ), + reinterpret_cast( pCallableShaderBindingTable ), + static_cast( indirectDeviceAddress ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirectKHR( + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable, + VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdTraceRaysIndirectKHR( + m_commandBuffer, + reinterpret_cast( &raygenShaderBindingTable ), + reinterpret_cast( &missShaderBindingTable ), + reinterpret_cast( &hitShaderBindingTable ), + reinterpret_cast( &callableShaderBindingTable ), + static_cast( indirectDeviceAddress ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE DeviceSize + Device::getRayTracingShaderGroupStackSizeKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t group, + VULKAN_HPP_NAMESPACE::ShaderGroupShaderKHR groupShader, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetRayTracingShaderGroupStackSizeKHR( + m_device, static_cast( pipeline ), group, static_cast( groupShader ) ) ); + } + + template + VULKAN_HPP_INLINE void + CommandBuffer::setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetRayTracingPipelineStackSizeKHR( m_commandBuffer, pipelineStackSize ); + } + + //=== VK_EXT_vertex_input_dynamic_state === + + template + VULKAN_HPP_INLINE void CommandBuffer::setVertexInputEXT( + uint32_t vertexBindingDescriptionCount, + const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT * pVertexBindingDescriptions, + uint32_t vertexAttributeDescriptionCount, + const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT * pVertexAttributeDescriptions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetVertexInputEXT( + m_commandBuffer, + vertexBindingDescriptionCount, + reinterpret_cast( pVertexBindingDescriptions ), + vertexAttributeDescriptionCount, + reinterpret_cast( pVertexAttributeDescriptions ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::setVertexInputEXT( + ArrayProxy const & vertexBindingDescriptions, + ArrayProxy const & vertexAttributeDescriptions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetVertexInputEXT( + m_commandBuffer, + vertexBindingDescriptions.size(), + reinterpret_cast( vertexBindingDescriptions.data() ), + vertexAttributeDescriptions.size(), + reinterpret_cast( vertexAttributeDescriptions.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo, + zx_handle_t * pZirconHandle, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryZirconHandleFUCHSIA( + m_device, reinterpret_cast( pGetZirconHandleInfo ), pZirconHandle ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA & getZirconHandleInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + zx_handle_t zirconHandle; + Result result = static_cast( d.vkGetMemoryZirconHandleFUCHSIA( + m_device, reinterpret_cast( &getZirconHandleInfo ), &zirconHandle ) ); + return createResultValue( + result, zirconHandle, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryZirconHandleFUCHSIA" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryZirconHandlePropertiesFUCHSIA( + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + zx_handle_t zirconHandle, + VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA * pMemoryZirconHandleProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryZirconHandlePropertiesFUCHSIA( + m_device, + static_cast( handleType ), + zirconHandle, + reinterpret_cast( pMemoryZirconHandleProperties ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryZirconHandlePropertiesFUCHSIA( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + zx_handle_t zirconHandle, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA memoryZirconHandleProperties; + Result result = static_cast( d.vkGetMemoryZirconHandlePropertiesFUCHSIA( + m_device, + static_cast( handleType ), + zirconHandle, + reinterpret_cast( &memoryZirconHandleProperties ) ) ); + return createResultValue( result, + memoryZirconHandleProperties, + VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryZirconHandlePropertiesFUCHSIA" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::importSemaphoreZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA * pImportSemaphoreZirconHandleInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkImportSemaphoreZirconHandleFUCHSIA( + m_device, + reinterpret_cast( pImportSemaphoreZirconHandleInfo ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::importSemaphoreZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA & importSemaphoreZirconHandleInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkImportSemaphoreZirconHandleFUCHSIA( + m_device, + reinterpret_cast( &importSemaphoreZirconHandleInfo ) ) ); + return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreZirconHandleFUCHSIA" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSemaphoreZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo, + zx_handle_t * pZirconHandle, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetSemaphoreZirconHandleFUCHSIA( + m_device, + reinterpret_cast( pGetZirconHandleInfo ), + pZirconHandle ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::getSemaphoreZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA & getZirconHandleInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + zx_handle_t zirconHandle; + Result result = static_cast( d.vkGetSemaphoreZirconHandleFUCHSIA( + m_device, + reinterpret_cast( &getZirconHandleInfo ), + &zirconHandle ) ); + return createResultValue( + result, zirconHandle, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreZirconHandleFUCHSIA" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createBufferCollectionFUCHSIA( const VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA * pCollection, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateBufferCollectionFUCHSIA( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pCollection ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::createBufferCollectionFUCHSIA( const VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection; + Result result = static_cast( d.vkCreateBufferCollectionFUCHSIA( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &collection ) ) ); + return createResultValue( + result, collection, VULKAN_HPP_NAMESPACE_STRING "::Device::createBufferCollectionFUCHSIA" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::createBufferCollectionFUCHSIAUnique( + const VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection; + Result result = static_cast( d.vkCreateBufferCollectionFUCHSIA( + m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &collection ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, collection, VULKAN_HPP_NAMESPACE_STRING "::Device::createBufferCollectionFUCHSIAUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setBufferCollectionImageConstraintsFUCHSIA( + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + const VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA * pImageConstraintsInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkSetBufferCollectionImageConstraintsFUCHSIA( + m_device, + static_cast( collection ), + reinterpret_cast( pImageConstraintsInfo ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::setBufferCollectionImageConstraintsFUCHSIA( + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + const VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA & imageConstraintsInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkSetBufferCollectionImageConstraintsFUCHSIA( + m_device, + static_cast( collection ), + reinterpret_cast( &imageConstraintsInfo ) ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::setBufferCollectionImageConstraintsFUCHSIA" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setBufferCollectionBufferConstraintsFUCHSIA( + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + const VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA * pBufferConstraintsInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkSetBufferCollectionBufferConstraintsFUCHSIA( + m_device, + static_cast( collection ), + reinterpret_cast( pBufferConstraintsInfo ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type + Device::setBufferCollectionBufferConstraintsFUCHSIA( + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + const VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA & bufferConstraintsInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + Result result = static_cast( d.vkSetBufferCollectionBufferConstraintsFUCHSIA( + m_device, + static_cast( collection ), + reinterpret_cast( &bufferConstraintsInfo ) ) ); + return createResultValue( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::setBufferCollectionBufferConstraintsFUCHSIA" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::destroyBufferCollectionFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBufferCollectionFUCHSIA( m_device, + static_cast( collection ), + reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + Device::destroyBufferCollectionFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBufferCollectionFUCHSIA( + m_device, + static_cast( collection ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBufferCollectionFUCHSIA( m_device, + static_cast( collection ), + reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBufferCollectionFUCHSIA( + m_device, + static_cast( collection ), + reinterpret_cast( + static_cast( allocator ) ) ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getBufferCollectionPropertiesFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetBufferCollectionPropertiesFUCHSIA( + m_device, + static_cast( collection ), + reinterpret_cast( pProperties ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Device::getBufferCollectionPropertiesFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA properties; + Result result = static_cast( d.vkGetBufferCollectionPropertiesFUCHSIA( + m_device, + static_cast( collection ), + reinterpret_cast( &properties ) ) ); + return createResultValue( + result, properties, VULKAN_HPP_NAMESPACE_STRING "::Device::getBufferCollectionPropertiesFUCHSIA" ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getSubpassShadingMaxWorkgroupSizeHUAWEI( VULKAN_HPP_NAMESPACE::RenderPass renderpass, + VULKAN_HPP_NAMESPACE::Extent2D * pMaxWorkgroupSize, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( + m_device, static_cast( renderpass ), reinterpret_cast( pMaxWorkgroupSize ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue + Device::getSubpassShadingMaxWorkgroupSizeHUAWEI( VULKAN_HPP_NAMESPACE::RenderPass renderpass, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::Extent2D maxWorkgroupSize; + Result result = static_cast( d.vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( + m_device, static_cast( renderpass ), reinterpret_cast( &maxWorkgroupSize ) ) ); + return createResultValue( result, + maxWorkgroupSize, + VULKAN_HPP_NAMESPACE_STRING "::Device::getSubpassShadingMaxWorkgroupSizeHUAWEI", + { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eIncomplete } ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void CommandBuffer::subpassShadingHUAWEI( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSubpassShadingHUAWEI( m_commandBuffer ); + } + + //=== VK_HUAWEI_invocation_mask === + + template + VULKAN_HPP_INLINE void CommandBuffer::bindInvocationMaskHUAWEI( VULKAN_HPP_NAMESPACE::ImageView imageView, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindInvocationMaskHUAWEI( + m_commandBuffer, static_cast( imageView ), static_cast( imageLayout ) ); + } + + //=== VK_NV_external_memory_rdma === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryRemoteAddressNV( + const VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo, + VULKAN_HPP_NAMESPACE::RemoteAddressNV * pAddress, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryRemoteAddressNV( + m_device, + reinterpret_cast( pMemoryGetRemoteAddressInfo ), + reinterpret_cast( pAddress ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryRemoteAddressNV( + const VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV & memoryGetRemoteAddressInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::RemoteAddressNV address; + Result result = static_cast( d.vkGetMemoryRemoteAddressNV( + m_device, + reinterpret_cast( &memoryGetRemoteAddressInfo ), + reinterpret_cast( &address ) ) ); + return createResultValue( result, address, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryRemoteAddressNV" ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_extended_dynamic_state2 === + + template + VULKAN_HPP_INLINE void CommandBuffer::setPatchControlPointsEXT( uint32_t patchControlPoints, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetPatchControlPointsEXT( m_commandBuffer, patchControlPoints ); + } + + template + VULKAN_HPP_INLINE void + CommandBuffer::setRasterizerDiscardEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetRasterizerDiscardEnableEXT( m_commandBuffer, static_cast( rasterizerDiscardEnable ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setDepthBiasEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthBiasEnableEXT( m_commandBuffer, static_cast( depthBiasEnable ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::setLogicOpEXT( VULKAN_HPP_NAMESPACE::LogicOp logicOp, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetLogicOpEXT( m_commandBuffer, static_cast( logicOp ) ); + } + + template + VULKAN_HPP_INLINE void + CommandBuffer::setPrimitiveRestartEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetPrimitiveRestartEnableEXT( m_commandBuffer, static_cast( primitiveRestartEnable ) ); + } + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Instance::createScreenSurfaceQNX( const VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCreateScreenSurfaceQNX( m_instance, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType::type + Instance::createScreenSurfaceQNX( const VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateScreenSurfaceQNX( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createScreenSurfaceQNX" ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + Instance::createScreenSurfaceQNXUnique( const VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + d.vkCreateScreenSurfaceQNX( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &surface ) ) ); + ObjectDestroy deleter( *this, allocator, d ); + return createResultValue( + result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createScreenSurfaceQNXUnique", deleter ); + } +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getScreenPresentationSupportQNX( + uint32_t queueFamilyIndex, struct _screen_window * window, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceScreenPresentationSupportQNX( m_physicalDevice, queueFamilyIndex, window ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getScreenPresentationSupportQNX( + uint32_t queueFamilyIndex, struct _screen_window & window, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetPhysicalDeviceScreenPresentationSupportQNX( m_physicalDevice, queueFamilyIndex, &window ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_EXT_color_write_enable === + + template + VULKAN_HPP_INLINE void CommandBuffer::setColorWriteEnableEXT( uint32_t attachmentCount, + const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetColorWriteEnableEXT( + m_commandBuffer, attachmentCount, reinterpret_cast( pColorWriteEnables ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::setColorWriteEnableEXT( ArrayProxy const & colorWriteEnables, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetColorWriteEnableEXT( + m_commandBuffer, colorWriteEnables.size(), reinterpret_cast( colorWriteEnables.data() ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_multi_draw === + + template + VULKAN_HPP_INLINE void CommandBuffer::drawMultiEXT( uint32_t drawCount, + const VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT * pVertexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMultiEXT( m_commandBuffer, + drawCount, + reinterpret_cast( pVertexInfo ), + instanceCount, + firstInstance, + stride ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void + CommandBuffer::drawMultiEXT( ArrayProxy const & vertexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMultiEXT( m_commandBuffer, + vertexInfo.size(), + reinterpret_cast( vertexInfo.data() ), + instanceCount, + firstInstance, + stride ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + CommandBuffer::drawMultiIndexedEXT( uint32_t drawCount, + const VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT * pIndexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + const int32_t * pVertexOffset, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMultiIndexedEXT( m_commandBuffer, + drawCount, + reinterpret_cast( pIndexInfo ), + instanceCount, + firstInstance, + stride, + pVertexOffset ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::drawMultiIndexedEXT( + ArrayProxy const & indexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + Optional vertexOffset, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMultiIndexedEXT( m_commandBuffer, + indexInfo.size(), + reinterpret_cast( indexInfo.data() ), + instanceCount, + firstInstance, + stride, + static_cast( vertexOffset ) ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_pageable_device_local_memory === + + template + VULKAN_HPP_INLINE void Device::setMemoryPriorityEXT( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + float priority, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkSetDeviceMemoryPriorityEXT( m_device, static_cast( memory ), priority ); + } + + //=== VK_KHR_maintenance4 === + + template + VULKAN_HPP_INLINE void + Device::getBufferMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceBufferMemoryRequirementsKHR( m_device, + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getBufferMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + d.vkGetDeviceBufferMemoryRequirementsKHR( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getBufferMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + d.vkGetDeviceBufferMemoryRequirementsKHR( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void + Device::getImageMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceImageMemoryRequirementsKHR( m_device, + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getImageMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + d.vkGetDeviceImageMemoryRequirementsKHR( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getImageMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + d.vkGetDeviceImageMemoryRequirementsKHR( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirementsKHR( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceImageSparseMemoryRequirementsKHR( + m_device, + reinterpret_cast( pInfo ), + pSparseMemoryRequirementCount, + reinterpret_cast( pSparseMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector sparseMemoryRequirements; + uint32_t sparseMemoryRequirementCount; + d.vkGetDeviceImageSparseMemoryRequirementsKHR( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetDeviceImageSparseMemoryRequirementsKHR( + m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + return sparseMemoryRequirements; + } + + template < + typename SparseImageMemoryRequirements2Allocator, + typename Dispatch, + typename B, + typename std::enable_if::value, int>::type> + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirementsKHR( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + std::vector sparseMemoryRequirements( + sparseImageMemoryRequirements2Allocator ); + uint32_t sparseMemoryRequirementCount; + d.vkGetDeviceImageSparseMemoryRequirementsKHR( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetDeviceImageSparseMemoryRequirementsKHR( + m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + return sparseMemoryRequirements; + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +} // namespace VULKAN_HPP_NAMESPACE +#endif diff --git a/Externals/Vulkan/Include/vulkan/vulkan_ggp.h b/Externals/Vulkan/Include/vulkan/vulkan_ggp.h index fd306131c322..19dfd22617e9 100644 --- a/Externals/Vulkan/Include/vulkan/vulkan_ggp.h +++ b/Externals/Vulkan/Include/vulkan/vulkan_ggp.h @@ -2,19 +2,9 @@ #define VULKAN_GGP_H_ 1 /* -** Copyright (c) 2015-2019 The Khronos Group Inc. +** Copyright 2015-2022 The Khronos Group Inc. ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. +** SPDX-License-Identifier: Apache-2.0 */ /* diff --git a/Externals/Vulkan/Include/vulkan/vulkan_handles.hpp b/Externals/Vulkan/Include/vulkan/vulkan_handles.hpp new file mode 100644 index 000000000000..aa81afc94a96 --- /dev/null +++ b/Externals/Vulkan/Include/vulkan/vulkan_handles.hpp @@ -0,0 +1,14971 @@ +// Copyright 2015-2022 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_HANDLES_HPP +#define VULKAN_HANDLES_HPP + +namespace VULKAN_HPP_NAMESPACE +{ + //=================================== + //=== STRUCT forward declarations === + //=================================== + + //=== VK_VERSION_1_0 === + struct Extent2D; + struct Extent3D; + struct Offset2D; + struct Offset3D; + struct Rect2D; + struct BaseInStructure; + struct BaseOutStructure; + struct BufferMemoryBarrier; + struct DispatchIndirectCommand; + struct DrawIndexedIndirectCommand; + struct DrawIndirectCommand; + struct ImageMemoryBarrier; + struct MemoryBarrier; + struct PipelineCacheHeaderVersionOne; + struct AllocationCallbacks; + struct ApplicationInfo; + struct FormatProperties; + struct ImageFormatProperties; + struct InstanceCreateInfo; + struct MemoryHeap; + struct MemoryType; + struct PhysicalDeviceFeatures; + struct PhysicalDeviceLimits; + struct PhysicalDeviceMemoryProperties; + struct PhysicalDeviceProperties; + struct PhysicalDeviceSparseProperties; + struct QueueFamilyProperties; + struct DeviceCreateInfo; + struct DeviceQueueCreateInfo; + struct ExtensionProperties; + struct LayerProperties; + struct SubmitInfo; + struct MappedMemoryRange; + struct MemoryAllocateInfo; + struct MemoryRequirements; + struct BindSparseInfo; + struct ImageSubresource; + struct SparseBufferMemoryBindInfo; + struct SparseImageFormatProperties; + struct SparseImageMemoryBind; + struct SparseImageMemoryBindInfo; + struct SparseImageMemoryRequirements; + struct SparseImageOpaqueMemoryBindInfo; + struct SparseMemoryBind; + struct FenceCreateInfo; + struct SemaphoreCreateInfo; + struct EventCreateInfo; + struct QueryPoolCreateInfo; + struct BufferCreateInfo; + struct BufferViewCreateInfo; + struct ImageCreateInfo; + struct SubresourceLayout; + struct ComponentMapping; + struct ImageSubresourceRange; + struct ImageViewCreateInfo; + struct ShaderModuleCreateInfo; + struct PipelineCacheCreateInfo; + struct ComputePipelineCreateInfo; + struct GraphicsPipelineCreateInfo; + struct PipelineColorBlendAttachmentState; + struct PipelineColorBlendStateCreateInfo; + struct PipelineDepthStencilStateCreateInfo; + struct PipelineDynamicStateCreateInfo; + struct PipelineInputAssemblyStateCreateInfo; + struct PipelineMultisampleStateCreateInfo; + struct PipelineRasterizationStateCreateInfo; + struct PipelineShaderStageCreateInfo; + struct PipelineTessellationStateCreateInfo; + struct PipelineVertexInputStateCreateInfo; + struct PipelineViewportStateCreateInfo; + struct SpecializationInfo; + struct SpecializationMapEntry; + struct StencilOpState; + struct VertexInputAttributeDescription; + struct VertexInputBindingDescription; + struct Viewport; + struct PipelineLayoutCreateInfo; + struct PushConstantRange; + struct SamplerCreateInfo; + struct CopyDescriptorSet; + struct DescriptorBufferInfo; + struct DescriptorImageInfo; + struct DescriptorPoolCreateInfo; + struct DescriptorPoolSize; + struct DescriptorSetAllocateInfo; + struct DescriptorSetLayoutBinding; + struct DescriptorSetLayoutCreateInfo; + struct WriteDescriptorSet; + struct AttachmentDescription; + struct AttachmentReference; + struct FramebufferCreateInfo; + struct RenderPassCreateInfo; + struct SubpassDependency; + struct SubpassDescription; + struct CommandPoolCreateInfo; + struct CommandBufferAllocateInfo; + struct CommandBufferBeginInfo; + struct CommandBufferInheritanceInfo; + struct BufferCopy; + struct BufferImageCopy; + struct ClearAttachment; + union ClearColorValue; + struct ClearDepthStencilValue; + struct ClearRect; + union ClearValue; + struct ImageBlit; + struct ImageCopy; + struct ImageResolve; + struct ImageSubresourceLayers; + struct RenderPassBeginInfo; + + //=== VK_VERSION_1_1 === + struct PhysicalDeviceSubgroupProperties; + struct BindBufferMemoryInfo; + using BindBufferMemoryInfoKHR = BindBufferMemoryInfo; + struct BindImageMemoryInfo; + using BindImageMemoryInfoKHR = BindImageMemoryInfo; + struct PhysicalDevice16BitStorageFeatures; + using PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures; + struct MemoryDedicatedRequirements; + using MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements; + struct MemoryDedicatedAllocateInfo; + using MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo; + struct MemoryAllocateFlagsInfo; + using MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo; + struct DeviceGroupRenderPassBeginInfo; + using DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo; + struct DeviceGroupCommandBufferBeginInfo; + using DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo; + struct DeviceGroupSubmitInfo; + using DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo; + struct DeviceGroupBindSparseInfo; + using DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo; + struct BindBufferMemoryDeviceGroupInfo; + using BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo; + struct BindImageMemoryDeviceGroupInfo; + using BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo; + struct PhysicalDeviceGroupProperties; + using PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties; + struct DeviceGroupDeviceCreateInfo; + using DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo; + struct BufferMemoryRequirementsInfo2; + using BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2; + struct ImageMemoryRequirementsInfo2; + using ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2; + struct ImageSparseMemoryRequirementsInfo2; + using ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2; + struct MemoryRequirements2; + using MemoryRequirements2KHR = MemoryRequirements2; + struct SparseImageMemoryRequirements2; + using SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2; + struct PhysicalDeviceFeatures2; + using PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2; + struct PhysicalDeviceProperties2; + using PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2; + struct FormatProperties2; + using FormatProperties2KHR = FormatProperties2; + struct ImageFormatProperties2; + using ImageFormatProperties2KHR = ImageFormatProperties2; + struct PhysicalDeviceImageFormatInfo2; + using PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2; + struct QueueFamilyProperties2; + using QueueFamilyProperties2KHR = QueueFamilyProperties2; + struct PhysicalDeviceMemoryProperties2; + using PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2; + struct SparseImageFormatProperties2; + using SparseImageFormatProperties2KHR = SparseImageFormatProperties2; + struct PhysicalDeviceSparseImageFormatInfo2; + using PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2; + struct PhysicalDevicePointClippingProperties; + using PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties; + struct RenderPassInputAttachmentAspectCreateInfo; + using RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo; + struct InputAttachmentAspectReference; + using InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference; + struct ImageViewUsageCreateInfo; + using ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo; + struct PipelineTessellationDomainOriginStateCreateInfo; + using PipelineTessellationDomainOriginStateCreateInfoKHR = PipelineTessellationDomainOriginStateCreateInfo; + struct RenderPassMultiviewCreateInfo; + using RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo; + struct PhysicalDeviceMultiviewFeatures; + using PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures; + struct PhysicalDeviceMultiviewProperties; + using PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties; + struct PhysicalDeviceVariablePointersFeatures; + using PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures; + using PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures; + using PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures; + struct PhysicalDeviceProtectedMemoryFeatures; + struct PhysicalDeviceProtectedMemoryProperties; + struct DeviceQueueInfo2; + struct ProtectedSubmitInfo; + struct SamplerYcbcrConversionCreateInfo; + using SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo; + struct SamplerYcbcrConversionInfo; + using SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo; + struct BindImagePlaneMemoryInfo; + using BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo; + struct ImagePlaneMemoryRequirementsInfo; + using ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo; + struct PhysicalDeviceSamplerYcbcrConversionFeatures; + using PhysicalDeviceSamplerYcbcrConversionFeaturesKHR = PhysicalDeviceSamplerYcbcrConversionFeatures; + struct SamplerYcbcrConversionImageFormatProperties; + using SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties; + struct DescriptorUpdateTemplateEntry; + using DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry; + struct DescriptorUpdateTemplateCreateInfo; + using DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo; + struct ExternalMemoryProperties; + using ExternalMemoryPropertiesKHR = ExternalMemoryProperties; + struct PhysicalDeviceExternalImageFormatInfo; + using PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo; + struct ExternalImageFormatProperties; + using ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties; + struct PhysicalDeviceExternalBufferInfo; + using PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo; + struct ExternalBufferProperties; + using ExternalBufferPropertiesKHR = ExternalBufferProperties; + struct PhysicalDeviceIDProperties; + using PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties; + struct ExternalMemoryImageCreateInfo; + using ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo; + struct ExternalMemoryBufferCreateInfo; + using ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo; + struct ExportMemoryAllocateInfo; + using ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo; + struct PhysicalDeviceExternalFenceInfo; + using PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo; + struct ExternalFenceProperties; + using ExternalFencePropertiesKHR = ExternalFenceProperties; + struct ExportFenceCreateInfo; + using ExportFenceCreateInfoKHR = ExportFenceCreateInfo; + struct ExportSemaphoreCreateInfo; + using ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo; + struct PhysicalDeviceExternalSemaphoreInfo; + using PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo; + struct ExternalSemaphoreProperties; + using ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties; + struct PhysicalDeviceMaintenance3Properties; + using PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties; + struct DescriptorSetLayoutSupport; + using DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport; + struct PhysicalDeviceShaderDrawParametersFeatures; + using PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures; + + //=== VK_VERSION_1_2 === + struct PhysicalDeviceVulkan11Features; + struct PhysicalDeviceVulkan11Properties; + struct PhysicalDeviceVulkan12Features; + struct PhysicalDeviceVulkan12Properties; + struct ImageFormatListCreateInfo; + using ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo; + struct RenderPassCreateInfo2; + using RenderPassCreateInfo2KHR = RenderPassCreateInfo2; + struct AttachmentDescription2; + using AttachmentDescription2KHR = AttachmentDescription2; + struct AttachmentReference2; + using AttachmentReference2KHR = AttachmentReference2; + struct SubpassDescription2; + using SubpassDescription2KHR = SubpassDescription2; + struct SubpassDependency2; + using SubpassDependency2KHR = SubpassDependency2; + struct SubpassBeginInfo; + using SubpassBeginInfoKHR = SubpassBeginInfo; + struct SubpassEndInfo; + using SubpassEndInfoKHR = SubpassEndInfo; + struct PhysicalDevice8BitStorageFeatures; + using PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures; + struct ConformanceVersion; + using ConformanceVersionKHR = ConformanceVersion; + struct PhysicalDeviceDriverProperties; + using PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties; + struct PhysicalDeviceShaderAtomicInt64Features; + using PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features; + struct PhysicalDeviceShaderFloat16Int8Features; + using PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features; + using PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features; + struct PhysicalDeviceFloatControlsProperties; + using PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties; + struct DescriptorSetLayoutBindingFlagsCreateInfo; + using DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo; + struct PhysicalDeviceDescriptorIndexingFeatures; + using PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures; + struct PhysicalDeviceDescriptorIndexingProperties; + using PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties; + struct DescriptorSetVariableDescriptorCountAllocateInfo; + using DescriptorSetVariableDescriptorCountAllocateInfoEXT = DescriptorSetVariableDescriptorCountAllocateInfo; + struct DescriptorSetVariableDescriptorCountLayoutSupport; + using DescriptorSetVariableDescriptorCountLayoutSupportEXT = DescriptorSetVariableDescriptorCountLayoutSupport; + struct SubpassDescriptionDepthStencilResolve; + using SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve; + struct PhysicalDeviceDepthStencilResolveProperties; + using PhysicalDeviceDepthStencilResolvePropertiesKHR = PhysicalDeviceDepthStencilResolveProperties; + struct PhysicalDeviceScalarBlockLayoutFeatures; + using PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures; + struct ImageStencilUsageCreateInfo; + using ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo; + struct SamplerReductionModeCreateInfo; + using SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo; + struct PhysicalDeviceSamplerFilterMinmaxProperties; + using PhysicalDeviceSamplerFilterMinmaxPropertiesEXT = PhysicalDeviceSamplerFilterMinmaxProperties; + struct PhysicalDeviceVulkanMemoryModelFeatures; + using PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures; + struct PhysicalDeviceImagelessFramebufferFeatures; + using PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures; + struct FramebufferAttachmentsCreateInfo; + using FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo; + struct FramebufferAttachmentImageInfo; + using FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo; + struct RenderPassAttachmentBeginInfo; + using RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo; + struct PhysicalDeviceUniformBufferStandardLayoutFeatures; + using PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = PhysicalDeviceUniformBufferStandardLayoutFeatures; + struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures; + using PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = PhysicalDeviceShaderSubgroupExtendedTypesFeatures; + struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures; + using PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = PhysicalDeviceSeparateDepthStencilLayoutsFeatures; + struct AttachmentReferenceStencilLayout; + using AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout; + struct AttachmentDescriptionStencilLayout; + using AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout; + struct PhysicalDeviceHostQueryResetFeatures; + using PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures; + struct PhysicalDeviceTimelineSemaphoreFeatures; + using PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures; + struct PhysicalDeviceTimelineSemaphoreProperties; + using PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties; + struct SemaphoreTypeCreateInfo; + using SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo; + struct TimelineSemaphoreSubmitInfo; + using TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo; + struct SemaphoreWaitInfo; + using SemaphoreWaitInfoKHR = SemaphoreWaitInfo; + struct SemaphoreSignalInfo; + using SemaphoreSignalInfoKHR = SemaphoreSignalInfo; + struct PhysicalDeviceBufferDeviceAddressFeatures; + using PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures; + struct BufferDeviceAddressInfo; + using BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo; + using BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo; + struct BufferOpaqueCaptureAddressCreateInfo; + using BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo; + struct MemoryOpaqueCaptureAddressAllocateInfo; + using MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo; + struct DeviceMemoryOpaqueCaptureAddressInfo; + using DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo; + + //=== VK_VERSION_1_3 === + struct PhysicalDeviceVulkan13Features; + struct PhysicalDeviceVulkan13Properties; + struct PipelineCreationFeedbackCreateInfo; + using PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfo; + struct PipelineCreationFeedback; + using PipelineCreationFeedbackEXT = PipelineCreationFeedback; + struct PhysicalDeviceShaderTerminateInvocationFeatures; + using PhysicalDeviceShaderTerminateInvocationFeaturesKHR = PhysicalDeviceShaderTerminateInvocationFeatures; + struct PhysicalDeviceToolProperties; + using PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolProperties; + struct PhysicalDeviceShaderDemoteToHelperInvocationFeatures; + using PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = PhysicalDeviceShaderDemoteToHelperInvocationFeatures; + struct PhysicalDevicePrivateDataFeatures; + using PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeatures; + struct DevicePrivateDataCreateInfo; + using DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfo; + struct PrivateDataSlotCreateInfo; + using PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfo; + struct PhysicalDevicePipelineCreationCacheControlFeatures; + using PhysicalDevicePipelineCreationCacheControlFeaturesEXT = PhysicalDevicePipelineCreationCacheControlFeatures; + struct MemoryBarrier2; + using MemoryBarrier2KHR = MemoryBarrier2; + struct BufferMemoryBarrier2; + using BufferMemoryBarrier2KHR = BufferMemoryBarrier2; + struct ImageMemoryBarrier2; + using ImageMemoryBarrier2KHR = ImageMemoryBarrier2; + struct DependencyInfo; + using DependencyInfoKHR = DependencyInfo; + struct SubmitInfo2; + using SubmitInfo2KHR = SubmitInfo2; + struct SemaphoreSubmitInfo; + using SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo; + struct CommandBufferSubmitInfo; + using CommandBufferSubmitInfoKHR = CommandBufferSubmitInfo; + struct PhysicalDeviceSynchronization2Features; + using PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2Features; + struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + using PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + struct PhysicalDeviceImageRobustnessFeatures; + using PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeatures; + struct CopyBufferInfo2; + using CopyBufferInfo2KHR = CopyBufferInfo2; + struct CopyImageInfo2; + using CopyImageInfo2KHR = CopyImageInfo2; + struct CopyBufferToImageInfo2; + using CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2; + struct CopyImageToBufferInfo2; + using CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2; + struct BlitImageInfo2; + using BlitImageInfo2KHR = BlitImageInfo2; + struct ResolveImageInfo2; + using ResolveImageInfo2KHR = ResolveImageInfo2; + struct BufferCopy2; + using BufferCopy2KHR = BufferCopy2; + struct ImageCopy2; + using ImageCopy2KHR = ImageCopy2; + struct ImageBlit2; + using ImageBlit2KHR = ImageBlit2; + struct BufferImageCopy2; + using BufferImageCopy2KHR = BufferImageCopy2; + struct ImageResolve2; + using ImageResolve2KHR = ImageResolve2; + struct PhysicalDeviceSubgroupSizeControlFeatures; + using PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeatures; + struct PhysicalDeviceSubgroupSizeControlProperties; + using PhysicalDeviceSubgroupSizeControlPropertiesEXT = PhysicalDeviceSubgroupSizeControlProperties; + struct PipelineShaderStageRequiredSubgroupSizeCreateInfo; + using PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo; + struct PhysicalDeviceInlineUniformBlockFeatures; + using PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeatures; + struct PhysicalDeviceInlineUniformBlockProperties; + using PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockProperties; + struct WriteDescriptorSetInlineUniformBlock; + using WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock; + struct DescriptorPoolInlineUniformBlockCreateInfo; + using DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfo; + struct PhysicalDeviceTextureCompressionASTCHDRFeatures; + using PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = PhysicalDeviceTextureCompressionASTCHDRFeatures; + struct RenderingInfo; + using RenderingInfoKHR = RenderingInfo; + struct RenderingAttachmentInfo; + using RenderingAttachmentInfoKHR = RenderingAttachmentInfo; + struct PipelineRenderingCreateInfo; + using PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo; + struct PhysicalDeviceDynamicRenderingFeatures; + using PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures; + struct CommandBufferInheritanceRenderingInfo; + using CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo; + struct PhysicalDeviceShaderIntegerDotProductFeatures; + using PhysicalDeviceShaderIntegerDotProductFeaturesKHR = PhysicalDeviceShaderIntegerDotProductFeatures; + struct PhysicalDeviceShaderIntegerDotProductProperties; + using PhysicalDeviceShaderIntegerDotProductPropertiesKHR = PhysicalDeviceShaderIntegerDotProductProperties; + struct PhysicalDeviceTexelBufferAlignmentProperties; + using PhysicalDeviceTexelBufferAlignmentPropertiesEXT = PhysicalDeviceTexelBufferAlignmentProperties; + struct FormatProperties3; + using FormatProperties3KHR = FormatProperties3; + struct PhysicalDeviceMaintenance4Features; + using PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4Features; + struct PhysicalDeviceMaintenance4Properties; + using PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4Properties; + struct DeviceBufferMemoryRequirements; + using DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirements; + struct DeviceImageMemoryRequirements; + using DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirements; + + //=== VK_KHR_surface === + struct SurfaceCapabilitiesKHR; + struct SurfaceFormatKHR; + + //=== VK_KHR_swapchain === + struct SwapchainCreateInfoKHR; + struct PresentInfoKHR; + struct ImageSwapchainCreateInfoKHR; + struct BindImageMemorySwapchainInfoKHR; + struct AcquireNextImageInfoKHR; + struct DeviceGroupPresentCapabilitiesKHR; + struct DeviceGroupPresentInfoKHR; + struct DeviceGroupSwapchainCreateInfoKHR; + + //=== VK_KHR_display === + struct DisplayModeCreateInfoKHR; + struct DisplayModeParametersKHR; + struct DisplayModePropertiesKHR; + struct DisplayPlaneCapabilitiesKHR; + struct DisplayPlanePropertiesKHR; + struct DisplayPropertiesKHR; + struct DisplaySurfaceCreateInfoKHR; + + //=== VK_KHR_display_swapchain === + struct DisplayPresentInfoKHR; + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + struct XlibSurfaceCreateInfoKHR; +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + struct XcbSurfaceCreateInfoKHR; +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + struct WaylandSurfaceCreateInfoKHR; +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + struct AndroidSurfaceCreateInfoKHR; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + struct Win32SurfaceCreateInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + struct DebugReportCallbackCreateInfoEXT; + + //=== VK_AMD_rasterization_order === + struct PipelineRasterizationStateRasterizationOrderAMD; + + //=== VK_EXT_debug_marker === + struct DebugMarkerObjectNameInfoEXT; + struct DebugMarkerObjectTagInfoEXT; + struct DebugMarkerMarkerInfoEXT; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + struct QueueFamilyQueryResultStatusProperties2KHR; + struct VideoQueueFamilyProperties2KHR; + struct VideoProfileKHR; + struct VideoProfilesKHR; + struct VideoCapabilitiesKHR; + struct PhysicalDeviceVideoFormatInfoKHR; + struct VideoFormatPropertiesKHR; + struct VideoPictureResourceKHR; + struct VideoReferenceSlotKHR; + struct VideoGetMemoryPropertiesKHR; + struct VideoBindMemoryKHR; + struct VideoSessionCreateInfoKHR; + struct VideoSessionParametersCreateInfoKHR; + struct VideoSessionParametersUpdateInfoKHR; + struct VideoBeginCodingInfoKHR; + struct VideoEndCodingInfoKHR; + struct VideoCodingControlInfoKHR; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_decode_queue === + struct VideoDecodeInfoKHR; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NV_dedicated_allocation === + struct DedicatedAllocationImageCreateInfoNV; + struct DedicatedAllocationBufferCreateInfoNV; + struct DedicatedAllocationMemoryAllocateInfoNV; + + //=== VK_EXT_transform_feedback === + struct PhysicalDeviceTransformFeedbackFeaturesEXT; + struct PhysicalDeviceTransformFeedbackPropertiesEXT; + struct PipelineRasterizationStateStreamCreateInfoEXT; + + //=== VK_NVX_binary_import === + struct CuModuleCreateInfoNVX; + struct CuFunctionCreateInfoNVX; + struct CuLaunchInfoNVX; + + //=== VK_NVX_image_view_handle === + struct ImageViewHandleInfoNVX; + struct ImageViewAddressPropertiesNVX; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_encode_h264 === + struct VideoEncodeH264CapabilitiesEXT; + struct VideoEncodeH264SessionCreateInfoEXT; + struct VideoEncodeH264SessionParametersCreateInfoEXT; + struct VideoEncodeH264SessionParametersAddInfoEXT; + struct VideoEncodeH264VclFrameInfoEXT; + struct VideoEncodeH264EmitPictureParametersEXT; + struct VideoEncodeH264DpbSlotInfoEXT; + struct VideoEncodeH264NaluSliceEXT; + struct VideoEncodeH264ProfileEXT; + struct VideoEncodeH264RateControlInfoEXT; + struct VideoEncodeH264RateControlLayerInfoEXT; + struct VideoEncodeH264QpEXT; + struct VideoEncodeH264FrameSizeEXT; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_encode_h265 === + struct VideoEncodeH265CapabilitiesEXT; + struct VideoEncodeH265SessionCreateInfoEXT; + struct VideoEncodeH265SessionParametersCreateInfoEXT; + struct VideoEncodeH265SessionParametersAddInfoEXT; + struct VideoEncodeH265VclFrameInfoEXT; + struct VideoEncodeH265EmitPictureParametersEXT; + struct VideoEncodeH265DpbSlotInfoEXT; + struct VideoEncodeH265NaluSliceEXT; + struct VideoEncodeH265ProfileEXT; + struct VideoEncodeH265ReferenceListsEXT; + struct VideoEncodeH265RateControlInfoEXT; + struct VideoEncodeH265RateControlLayerInfoEXT; + struct VideoEncodeH265QpEXT; + struct VideoEncodeH265FrameSizeEXT; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_decode_h264 === + struct VideoDecodeH264ProfileEXT; + struct VideoDecodeH264CapabilitiesEXT; + struct VideoDecodeH264SessionCreateInfoEXT; + struct VideoDecodeH264SessionParametersCreateInfoEXT; + struct VideoDecodeH264SessionParametersAddInfoEXT; + struct VideoDecodeH264PictureInfoEXT; + struct VideoDecodeH264MvcEXT; + struct VideoDecodeH264DpbSlotInfoEXT; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_AMD_texture_gather_bias_lod === + struct TextureLODGatherFormatPropertiesAMD; + + //=== VK_AMD_shader_info === + struct ShaderResourceUsageAMD; + struct ShaderStatisticsInfoAMD; + + //=== VK_KHR_dynamic_rendering === + struct RenderingFragmentShadingRateAttachmentInfoKHR; + struct RenderingFragmentDensityMapAttachmentInfoEXT; + struct AttachmentSampleCountInfoAMD; + using AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD; + struct MultiviewPerViewAttributesInfoNVX; + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + struct StreamDescriptorSurfaceCreateInfoGGP; +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_corner_sampled_image === + struct PhysicalDeviceCornerSampledImageFeaturesNV; + + //=== VK_NV_external_memory_capabilities === + struct ExternalImageFormatPropertiesNV; + + //=== VK_NV_external_memory === + struct ExternalMemoryImageCreateInfoNV; + struct ExportMemoryAllocateInfoNV; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + struct ImportMemoryWin32HandleInfoNV; + struct ExportMemoryWin32HandleInfoNV; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_win32_keyed_mutex === + struct Win32KeyedMutexAcquireReleaseInfoNV; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_validation_flags === + struct ValidationFlagsEXT; + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + struct ViSurfaceCreateInfoNN; +#endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_EXT_astc_decode_mode === + struct ImageViewASTCDecodeModeEXT; + struct PhysicalDeviceASTCDecodeFeaturesEXT; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + struct ImportMemoryWin32HandleInfoKHR; + struct ExportMemoryWin32HandleInfoKHR; + struct MemoryWin32HandlePropertiesKHR; + struct MemoryGetWin32HandleInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + struct ImportMemoryFdInfoKHR; + struct MemoryFdPropertiesKHR; + struct MemoryGetFdInfoKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_keyed_mutex === + struct Win32KeyedMutexAcquireReleaseInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + struct ImportSemaphoreWin32HandleInfoKHR; + struct ExportSemaphoreWin32HandleInfoKHR; + struct D3D12FenceSubmitInfoKHR; + struct SemaphoreGetWin32HandleInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + struct ImportSemaphoreFdInfoKHR; + struct SemaphoreGetFdInfoKHR; + + //=== VK_KHR_push_descriptor === + struct PhysicalDevicePushDescriptorPropertiesKHR; + + //=== VK_EXT_conditional_rendering === + struct ConditionalRenderingBeginInfoEXT; + struct PhysicalDeviceConditionalRenderingFeaturesEXT; + struct CommandBufferInheritanceConditionalRenderingInfoEXT; + + //=== VK_KHR_incremental_present === + struct PresentRegionsKHR; + struct PresentRegionKHR; + struct RectLayerKHR; + + //=== VK_NV_clip_space_w_scaling === + struct ViewportWScalingNV; + struct PipelineViewportWScalingStateCreateInfoNV; + + //=== VK_EXT_display_surface_counter === + struct SurfaceCapabilities2EXT; + + //=== VK_EXT_display_control === + struct DisplayPowerInfoEXT; + struct DeviceEventInfoEXT; + struct DisplayEventInfoEXT; + struct SwapchainCounterCreateInfoEXT; + + //=== VK_GOOGLE_display_timing === + struct RefreshCycleDurationGOOGLE; + struct PastPresentationTimingGOOGLE; + struct PresentTimesInfoGOOGLE; + struct PresentTimeGOOGLE; + + //=== VK_NVX_multiview_per_view_attributes === + struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; + + //=== VK_NV_viewport_swizzle === + struct ViewportSwizzleNV; + struct PipelineViewportSwizzleStateCreateInfoNV; + + //=== VK_EXT_discard_rectangles === + struct PhysicalDeviceDiscardRectanglePropertiesEXT; + struct PipelineDiscardRectangleStateCreateInfoEXT; + + //=== VK_EXT_conservative_rasterization === + struct PhysicalDeviceConservativeRasterizationPropertiesEXT; + struct PipelineRasterizationConservativeStateCreateInfoEXT; + + //=== VK_EXT_depth_clip_enable === + struct PhysicalDeviceDepthClipEnableFeaturesEXT; + struct PipelineRasterizationDepthClipStateCreateInfoEXT; + + //=== VK_EXT_hdr_metadata === + struct HdrMetadataEXT; + struct XYColorEXT; + + //=== VK_KHR_shared_presentable_image === + struct SharedPresentSurfaceCapabilitiesKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + struct ImportFenceWin32HandleInfoKHR; + struct ExportFenceWin32HandleInfoKHR; + struct FenceGetWin32HandleInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + struct ImportFenceFdInfoKHR; + struct FenceGetFdInfoKHR; + + //=== VK_KHR_performance_query === + struct PhysicalDevicePerformanceQueryFeaturesKHR; + struct PhysicalDevicePerformanceQueryPropertiesKHR; + struct PerformanceCounterKHR; + struct PerformanceCounterDescriptionKHR; + struct QueryPoolPerformanceCreateInfoKHR; + union PerformanceCounterResultKHR; + struct AcquireProfilingLockInfoKHR; + struct PerformanceQuerySubmitInfoKHR; + + //=== VK_KHR_get_surface_capabilities2 === + struct PhysicalDeviceSurfaceInfo2KHR; + struct SurfaceCapabilities2KHR; + struct SurfaceFormat2KHR; + + //=== VK_KHR_get_display_properties2 === + struct DisplayProperties2KHR; + struct DisplayPlaneProperties2KHR; + struct DisplayModeProperties2KHR; + struct DisplayPlaneInfo2KHR; + struct DisplayPlaneCapabilities2KHR; + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + struct IOSSurfaceCreateInfoMVK; +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + struct MacOSSurfaceCreateInfoMVK; +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + struct DebugUtilsLabelEXT; + struct DebugUtilsMessengerCallbackDataEXT; + struct DebugUtilsMessengerCreateInfoEXT; + struct DebugUtilsObjectNameInfoEXT; + struct DebugUtilsObjectTagInfoEXT; + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + struct AndroidHardwareBufferUsageANDROID; + struct AndroidHardwareBufferPropertiesANDROID; + struct AndroidHardwareBufferFormatPropertiesANDROID; + struct ImportAndroidHardwareBufferInfoANDROID; + struct MemoryGetAndroidHardwareBufferInfoANDROID; + struct ExternalFormatANDROID; + struct AndroidHardwareBufferFormatProperties2ANDROID; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + //=== VK_EXT_sample_locations === + struct SampleLocationEXT; + struct SampleLocationsInfoEXT; + struct AttachmentSampleLocationsEXT; + struct SubpassSampleLocationsEXT; + struct RenderPassSampleLocationsBeginInfoEXT; + struct PipelineSampleLocationsStateCreateInfoEXT; + struct PhysicalDeviceSampleLocationsPropertiesEXT; + struct MultisamplePropertiesEXT; + + //=== VK_EXT_blend_operation_advanced === + struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT; + struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT; + struct PipelineColorBlendAdvancedStateCreateInfoEXT; + + //=== VK_NV_fragment_coverage_to_color === + struct PipelineCoverageToColorStateCreateInfoNV; + + //=== VK_KHR_acceleration_structure === + union DeviceOrHostAddressKHR; + union DeviceOrHostAddressConstKHR; + struct AccelerationStructureBuildRangeInfoKHR; + struct AabbPositionsKHR; + using AabbPositionsNV = AabbPositionsKHR; + struct AccelerationStructureGeometryTrianglesDataKHR; + struct TransformMatrixKHR; + using TransformMatrixNV = TransformMatrixKHR; + struct AccelerationStructureBuildGeometryInfoKHR; + struct AccelerationStructureGeometryAabbsDataKHR; + struct AccelerationStructureInstanceKHR; + using AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR; + struct AccelerationStructureGeometryInstancesDataKHR; + union AccelerationStructureGeometryDataKHR; + struct AccelerationStructureGeometryKHR; + struct AccelerationStructureCreateInfoKHR; + struct WriteDescriptorSetAccelerationStructureKHR; + struct PhysicalDeviceAccelerationStructureFeaturesKHR; + struct PhysicalDeviceAccelerationStructurePropertiesKHR; + struct AccelerationStructureDeviceAddressInfoKHR; + struct AccelerationStructureVersionInfoKHR; + struct CopyAccelerationStructureToMemoryInfoKHR; + struct CopyMemoryToAccelerationStructureInfoKHR; + struct CopyAccelerationStructureInfoKHR; + struct AccelerationStructureBuildSizesInfoKHR; + + //=== VK_NV_framebuffer_mixed_samples === + struct PipelineCoverageModulationStateCreateInfoNV; + + //=== VK_NV_shader_sm_builtins === + struct PhysicalDeviceShaderSMBuiltinsPropertiesNV; + struct PhysicalDeviceShaderSMBuiltinsFeaturesNV; + + //=== VK_EXT_image_drm_format_modifier === + struct DrmFormatModifierPropertiesListEXT; + struct DrmFormatModifierPropertiesEXT; + struct PhysicalDeviceImageDrmFormatModifierInfoEXT; + struct ImageDrmFormatModifierListCreateInfoEXT; + struct ImageDrmFormatModifierExplicitCreateInfoEXT; + struct ImageDrmFormatModifierPropertiesEXT; + struct DrmFormatModifierPropertiesList2EXT; + struct DrmFormatModifierProperties2EXT; + + //=== VK_EXT_validation_cache === + struct ValidationCacheCreateInfoEXT; + struct ShaderModuleValidationCacheCreateInfoEXT; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_portability_subset === + struct PhysicalDevicePortabilitySubsetFeaturesKHR; + struct PhysicalDevicePortabilitySubsetPropertiesKHR; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NV_shading_rate_image === + struct ShadingRatePaletteNV; + struct PipelineViewportShadingRateImageStateCreateInfoNV; + struct PhysicalDeviceShadingRateImageFeaturesNV; + struct PhysicalDeviceShadingRateImagePropertiesNV; + struct CoarseSampleLocationNV; + struct CoarseSampleOrderCustomNV; + struct PipelineViewportCoarseSampleOrderStateCreateInfoNV; + + //=== VK_NV_ray_tracing === + struct RayTracingShaderGroupCreateInfoNV; + struct RayTracingPipelineCreateInfoNV; + struct GeometryTrianglesNV; + struct GeometryAABBNV; + struct GeometryDataNV; + struct GeometryNV; + struct AccelerationStructureInfoNV; + struct AccelerationStructureCreateInfoNV; + struct BindAccelerationStructureMemoryInfoNV; + struct WriteDescriptorSetAccelerationStructureNV; + struct AccelerationStructureMemoryRequirementsInfoNV; + struct PhysicalDeviceRayTracingPropertiesNV; + + //=== VK_NV_representative_fragment_test === + struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV; + struct PipelineRepresentativeFragmentTestStateCreateInfoNV; + + //=== VK_EXT_filter_cubic === + struct PhysicalDeviceImageViewImageFormatInfoEXT; + struct FilterCubicImageViewImageFormatPropertiesEXT; + + //=== VK_EXT_external_memory_host === + struct ImportMemoryHostPointerInfoEXT; + struct MemoryHostPointerPropertiesEXT; + struct PhysicalDeviceExternalMemoryHostPropertiesEXT; + + //=== VK_KHR_shader_clock === + struct PhysicalDeviceShaderClockFeaturesKHR; + + //=== VK_AMD_pipeline_compiler_control === + struct PipelineCompilerControlCreateInfoAMD; + + //=== VK_EXT_calibrated_timestamps === + struct CalibratedTimestampInfoEXT; + + //=== VK_AMD_shader_core_properties === + struct PhysicalDeviceShaderCorePropertiesAMD; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_EXT_video_decode_h265 === + struct VideoDecodeH265ProfileEXT; + struct VideoDecodeH265CapabilitiesEXT; + struct VideoDecodeH265SessionCreateInfoEXT; + struct VideoDecodeH265SessionParametersCreateInfoEXT; + struct VideoDecodeH265SessionParametersAddInfoEXT; + struct VideoDecodeH265PictureInfoEXT; + struct VideoDecodeH265DpbSlotInfoEXT; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_KHR_global_priority === + struct DeviceQueueGlobalPriorityCreateInfoKHR; + using DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfoKHR; + struct PhysicalDeviceGlobalPriorityQueryFeaturesKHR; + using PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeaturesKHR; + struct QueueFamilyGlobalPriorityPropertiesKHR; + using QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityPropertiesKHR; + + //=== VK_AMD_memory_overallocation_behavior === + struct DeviceMemoryOverallocationCreateInfoAMD; + + //=== VK_EXT_vertex_attribute_divisor === + struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT; + struct VertexInputBindingDivisorDescriptionEXT; + struct PipelineVertexInputDivisorStateCreateInfoEXT; + struct PhysicalDeviceVertexAttributeDivisorFeaturesEXT; + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_frame_token === + struct PresentFrameTokenGGP; +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_compute_shader_derivatives === + struct PhysicalDeviceComputeShaderDerivativesFeaturesNV; + + //=== VK_NV_mesh_shader === + struct PhysicalDeviceMeshShaderFeaturesNV; + struct PhysicalDeviceMeshShaderPropertiesNV; + struct DrawMeshTasksIndirectCommandNV; + + //=== VK_NV_fragment_shader_barycentric === + struct PhysicalDeviceFragmentShaderBarycentricFeaturesNV; + + //=== VK_NV_shader_image_footprint === + struct PhysicalDeviceShaderImageFootprintFeaturesNV; + + //=== VK_NV_scissor_exclusive === + struct PipelineViewportExclusiveScissorStateCreateInfoNV; + struct PhysicalDeviceExclusiveScissorFeaturesNV; + + //=== VK_NV_device_diagnostic_checkpoints === + struct QueueFamilyCheckpointPropertiesNV; + struct CheckpointDataNV; + + //=== VK_INTEL_shader_integer_functions2 === + struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + + //=== VK_INTEL_performance_query === + union PerformanceValueDataINTEL; + struct PerformanceValueINTEL; + struct InitializePerformanceApiInfoINTEL; + struct QueryPoolPerformanceQueryCreateInfoINTEL; + using QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL; + struct PerformanceMarkerInfoINTEL; + struct PerformanceStreamMarkerInfoINTEL; + struct PerformanceOverrideInfoINTEL; + struct PerformanceConfigurationAcquireInfoINTEL; + + //=== VK_EXT_pci_bus_info === + struct PhysicalDevicePCIBusInfoPropertiesEXT; + + //=== VK_AMD_display_native_hdr === + struct DisplayNativeHdrSurfaceCapabilitiesAMD; + struct SwapchainDisplayNativeHdrCreateInfoAMD; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + struct ImagePipeSurfaceCreateInfoFUCHSIA; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + struct MetalSurfaceCreateInfoEXT; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_EXT_fragment_density_map === + struct PhysicalDeviceFragmentDensityMapFeaturesEXT; + struct PhysicalDeviceFragmentDensityMapPropertiesEXT; + struct RenderPassFragmentDensityMapCreateInfoEXT; + + //=== VK_KHR_fragment_shading_rate === + struct FragmentShadingRateAttachmentInfoKHR; + struct PipelineFragmentShadingRateStateCreateInfoKHR; + struct PhysicalDeviceFragmentShadingRateFeaturesKHR; + struct PhysicalDeviceFragmentShadingRatePropertiesKHR; + struct PhysicalDeviceFragmentShadingRateKHR; + + //=== VK_AMD_shader_core_properties2 === + struct PhysicalDeviceShaderCoreProperties2AMD; + + //=== VK_AMD_device_coherent_memory === + struct PhysicalDeviceCoherentMemoryFeaturesAMD; + + //=== VK_EXT_shader_image_atomic_int64 === + struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT; + + //=== VK_EXT_memory_budget === + struct PhysicalDeviceMemoryBudgetPropertiesEXT; + + //=== VK_EXT_memory_priority === + struct PhysicalDeviceMemoryPriorityFeaturesEXT; + struct MemoryPriorityAllocateInfoEXT; + + //=== VK_KHR_surface_protected_capabilities === + struct SurfaceProtectedCapabilitiesKHR; + + //=== VK_NV_dedicated_allocation_image_aliasing === + struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + + //=== VK_EXT_buffer_device_address === + struct PhysicalDeviceBufferDeviceAddressFeaturesEXT; + using PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT; + struct BufferDeviceAddressCreateInfoEXT; + + //=== VK_EXT_validation_features === + struct ValidationFeaturesEXT; + + //=== VK_KHR_present_wait === + struct PhysicalDevicePresentWaitFeaturesKHR; + + //=== VK_NV_cooperative_matrix === + struct CooperativeMatrixPropertiesNV; + struct PhysicalDeviceCooperativeMatrixFeaturesNV; + struct PhysicalDeviceCooperativeMatrixPropertiesNV; + + //=== VK_NV_coverage_reduction_mode === + struct PhysicalDeviceCoverageReductionModeFeaturesNV; + struct PipelineCoverageReductionStateCreateInfoNV; + struct FramebufferMixedSamplesCombinationNV; + + //=== VK_EXT_fragment_shader_interlock === + struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT; + + //=== VK_EXT_ycbcr_image_arrays === + struct PhysicalDeviceYcbcrImageArraysFeaturesEXT; + + //=== VK_EXT_provoking_vertex === + struct PhysicalDeviceProvokingVertexFeaturesEXT; + struct PhysicalDeviceProvokingVertexPropertiesEXT; + struct PipelineRasterizationProvokingVertexStateCreateInfoEXT; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + struct SurfaceFullScreenExclusiveInfoEXT; + struct SurfaceCapabilitiesFullScreenExclusiveEXT; + struct SurfaceFullScreenExclusiveWin32InfoEXT; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + struct HeadlessSurfaceCreateInfoEXT; + + //=== VK_EXT_line_rasterization === + struct PhysicalDeviceLineRasterizationFeaturesEXT; + struct PhysicalDeviceLineRasterizationPropertiesEXT; + struct PipelineRasterizationLineStateCreateInfoEXT; + + //=== VK_EXT_shader_atomic_float === + struct PhysicalDeviceShaderAtomicFloatFeaturesEXT; + + //=== VK_EXT_index_type_uint8 === + struct PhysicalDeviceIndexTypeUint8FeaturesEXT; + + //=== VK_EXT_extended_dynamic_state === + struct PhysicalDeviceExtendedDynamicStateFeaturesEXT; + + //=== VK_KHR_pipeline_executable_properties === + struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR; + struct PipelineInfoKHR; + struct PipelineExecutablePropertiesKHR; + struct PipelineExecutableInfoKHR; + union PipelineExecutableStatisticValueKHR; + struct PipelineExecutableStatisticKHR; + struct PipelineExecutableInternalRepresentationKHR; + + //=== VK_EXT_shader_atomic_float2 === + struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT; + + //=== VK_NV_device_generated_commands === + struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV; + struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV; + struct GraphicsShaderGroupCreateInfoNV; + struct GraphicsPipelineShaderGroupsCreateInfoNV; + struct BindShaderGroupIndirectCommandNV; + struct BindIndexBufferIndirectCommandNV; + struct BindVertexBufferIndirectCommandNV; + struct SetStateFlagsIndirectCommandNV; + struct IndirectCommandsStreamNV; + struct IndirectCommandsLayoutTokenNV; + struct IndirectCommandsLayoutCreateInfoNV; + struct GeneratedCommandsInfoNV; + struct GeneratedCommandsMemoryRequirementsInfoNV; + + //=== VK_NV_inherited_viewport_scissor === + struct PhysicalDeviceInheritedViewportScissorFeaturesNV; + struct CommandBufferInheritanceViewportScissorInfoNV; + + //=== VK_EXT_texel_buffer_alignment === + struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT; + + //=== VK_QCOM_render_pass_transform === + struct RenderPassTransformBeginInfoQCOM; + struct CommandBufferInheritanceRenderPassTransformInfoQCOM; + + //=== VK_EXT_device_memory_report === + struct PhysicalDeviceDeviceMemoryReportFeaturesEXT; + struct DeviceDeviceMemoryReportCreateInfoEXT; + struct DeviceMemoryReportCallbackDataEXT; + + //=== VK_EXT_robustness2 === + struct PhysicalDeviceRobustness2FeaturesEXT; + struct PhysicalDeviceRobustness2PropertiesEXT; + + //=== VK_EXT_custom_border_color === + struct SamplerCustomBorderColorCreateInfoEXT; + struct PhysicalDeviceCustomBorderColorPropertiesEXT; + struct PhysicalDeviceCustomBorderColorFeaturesEXT; + + //=== VK_KHR_pipeline_library === + struct PipelineLibraryCreateInfoKHR; + + //=== VK_KHR_present_id === + struct PresentIdKHR; + struct PhysicalDevicePresentIdFeaturesKHR; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_encode_queue === + struct VideoEncodeInfoKHR; + struct VideoEncodeRateControlInfoKHR; + struct VideoEncodeRateControlLayerInfoKHR; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NV_device_diagnostics_config === + struct PhysicalDeviceDiagnosticsConfigFeaturesNV; + struct DeviceDiagnosticsConfigCreateInfoNV; + + //=== VK_KHR_synchronization2 === + struct QueueFamilyCheckpointProperties2NV; + struct CheckpointData2NV; + + //=== VK_KHR_shader_subgroup_uniform_control_flow === + struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; + + //=== VK_NV_fragment_shading_rate_enums === + struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV; + struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV; + struct PipelineFragmentShadingRateEnumStateCreateInfoNV; + + //=== VK_NV_ray_tracing_motion_blur === + struct AccelerationStructureGeometryMotionTrianglesDataNV; + struct AccelerationStructureMotionInfoNV; + struct AccelerationStructureMotionInstanceNV; + union AccelerationStructureMotionInstanceDataNV; + struct AccelerationStructureMatrixMotionInstanceNV; + struct AccelerationStructureSRTMotionInstanceNV; + struct SRTDataNV; + struct PhysicalDeviceRayTracingMotionBlurFeaturesNV; + + //=== VK_EXT_ycbcr_2plane_444_formats === + struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; + + //=== VK_EXT_fragment_density_map2 === + struct PhysicalDeviceFragmentDensityMap2FeaturesEXT; + struct PhysicalDeviceFragmentDensityMap2PropertiesEXT; + + //=== VK_QCOM_rotated_copy_commands === + struct CopyCommandTransformInfoQCOM; + + //=== VK_KHR_workgroup_memory_explicit_layout === + struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; + + //=== VK_EXT_4444_formats === + struct PhysicalDevice4444FormatsFeaturesEXT; + + //=== VK_ARM_rasterization_order_attachment_access === + struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM; + + //=== VK_EXT_rgba10x6_formats === + struct PhysicalDeviceRGBA10X6FormatsFeaturesEXT; + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + struct DirectFBSurfaceCreateInfoEXT; +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_KHR_ray_tracing_pipeline === + struct RayTracingShaderGroupCreateInfoKHR; + struct RayTracingPipelineCreateInfoKHR; + struct PhysicalDeviceRayTracingPipelineFeaturesKHR; + struct PhysicalDeviceRayTracingPipelinePropertiesKHR; + struct StridedDeviceAddressRegionKHR; + struct TraceRaysIndirectCommandKHR; + struct RayTracingPipelineInterfaceCreateInfoKHR; + + //=== VK_KHR_ray_query === + struct PhysicalDeviceRayQueryFeaturesKHR; + + //=== VK_VALVE_mutable_descriptor_type === + struct PhysicalDeviceMutableDescriptorTypeFeaturesVALVE; + struct MutableDescriptorTypeListVALVE; + struct MutableDescriptorTypeCreateInfoVALVE; + + //=== VK_EXT_vertex_input_dynamic_state === + struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT; + struct VertexInputBindingDescription2EXT; + struct VertexInputAttributeDescription2EXT; + + //=== VK_EXT_physical_device_drm === + struct PhysicalDeviceDrmPropertiesEXT; + + //=== VK_EXT_depth_clip_control === + struct PhysicalDeviceDepthClipControlFeaturesEXT; + struct PipelineViewportDepthClipControlCreateInfoEXT; + + //=== VK_EXT_primitive_topology_list_restart === + struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + struct ImportMemoryZirconHandleInfoFUCHSIA; + struct MemoryZirconHandlePropertiesFUCHSIA; + struct MemoryGetZirconHandleInfoFUCHSIA; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + struct ImportSemaphoreZirconHandleInfoFUCHSIA; + struct SemaphoreGetZirconHandleInfoFUCHSIA; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + struct BufferCollectionCreateInfoFUCHSIA; + struct ImportMemoryBufferCollectionFUCHSIA; + struct BufferCollectionImageCreateInfoFUCHSIA; + struct BufferConstraintsInfoFUCHSIA; + struct BufferCollectionBufferCreateInfoFUCHSIA; + struct BufferCollectionPropertiesFUCHSIA; + struct SysmemColorSpaceFUCHSIA; + struct ImageConstraintsInfoFUCHSIA; + struct ImageFormatConstraintsInfoFUCHSIA; + struct BufferCollectionConstraintsInfoFUCHSIA; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + struct SubpassShadingPipelineCreateInfoHUAWEI; + struct PhysicalDeviceSubpassShadingFeaturesHUAWEI; + struct PhysicalDeviceSubpassShadingPropertiesHUAWEI; + + //=== VK_HUAWEI_invocation_mask === + struct PhysicalDeviceInvocationMaskFeaturesHUAWEI; + + //=== VK_NV_external_memory_rdma === + struct MemoryGetRemoteAddressInfoNV; + struct PhysicalDeviceExternalMemoryRDMAFeaturesNV; + + //=== VK_EXT_extended_dynamic_state2 === + struct PhysicalDeviceExtendedDynamicState2FeaturesEXT; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + struct ScreenSurfaceCreateInfoQNX; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_EXT_color_write_enable === + struct PhysicalDeviceColorWriteEnableFeaturesEXT; + struct PipelineColorWriteCreateInfoEXT; + + //=== VK_EXT_image_view_min_lod === + struct PhysicalDeviceImageViewMinLodFeaturesEXT; + struct ImageViewMinLodCreateInfoEXT; + + //=== VK_EXT_multi_draw === + struct PhysicalDeviceMultiDrawFeaturesEXT; + struct PhysicalDeviceMultiDrawPropertiesEXT; + struct MultiDrawInfoEXT; + struct MultiDrawIndexedInfoEXT; + + //=== VK_EXT_border_color_swizzle === + struct PhysicalDeviceBorderColorSwizzleFeaturesEXT; + struct SamplerBorderColorComponentMappingCreateInfoEXT; + + //=== VK_EXT_pageable_device_local_memory === + struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; + + //=== VK_QCOM_fragment_density_map_offset === + struct PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM; + struct PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM; + struct SubpassFragmentDensityMapOffsetEndInfoQCOM; + + //=== VK_NV_linear_color_attachment === + struct PhysicalDeviceLinearColorAttachmentFeaturesNV; + + //=============== + //=== HANDLEs === + //=============== + + class SurfaceKHR + { + public: + using CType = VkSurfaceKHR; + using NativeType = VkSurfaceKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eSurfaceKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSurfaceKHR; + + public: + VULKAN_HPP_CONSTEXPR SurfaceKHR() = default; + VULKAN_HPP_CONSTEXPR SurfaceKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR( VkSurfaceKHR surfaceKHR ) VULKAN_HPP_NOEXCEPT : m_surfaceKHR( surfaceKHR ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + SurfaceKHR & operator=( VkSurfaceKHR surfaceKHR ) VULKAN_HPP_NOEXCEPT + { + m_surfaceKHR = surfaceKHR; + return *this; + } +#endif + + SurfaceKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_surfaceKHR = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceKHR const & ) const = default; +#else + bool operator==( SurfaceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_surfaceKHR == rhs.m_surfaceKHR; + } + + bool operator!=( SurfaceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_surfaceKHR != rhs.m_surfaceKHR; + } + + bool operator<( SurfaceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_surfaceKHR < rhs.m_surfaceKHR; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const VULKAN_HPP_NOEXCEPT + { + return m_surfaceKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_surfaceKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_surfaceKHR == VK_NULL_HANDLE; + } + + private: + VkSurfaceKHR m_surfaceKHR = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceKHR ) == sizeof( VkSurfaceKHR ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceKHR is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::SurfaceKHR; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::SurfaceKHR; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::SurfaceKHR; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class DebugReportCallbackEXT + { + public: + using CType = VkDebugReportCallbackEXT; + using NativeType = VkDebugReportCallbackEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDebugReportCallbackEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDebugReportCallbackEXT; + + public: + VULKAN_HPP_CONSTEXPR DebugReportCallbackEXT() = default; + VULKAN_HPP_CONSTEXPR DebugReportCallbackEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT + DebugReportCallbackEXT( VkDebugReportCallbackEXT debugReportCallbackEXT ) VULKAN_HPP_NOEXCEPT + : m_debugReportCallbackEXT( debugReportCallbackEXT ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + DebugReportCallbackEXT & operator=( VkDebugReportCallbackEXT debugReportCallbackEXT ) VULKAN_HPP_NOEXCEPT + { + m_debugReportCallbackEXT = debugReportCallbackEXT; + return *this; + } +#endif + + DebugReportCallbackEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_debugReportCallbackEXT = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DebugReportCallbackEXT const & ) const = default; +#else + bool operator==( DebugReportCallbackEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT; + } + + bool operator!=( DebugReportCallbackEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT; + } + + bool operator<( DebugReportCallbackEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const VULKAN_HPP_NOEXCEPT + { + return m_debugReportCallbackEXT; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_debugReportCallbackEXT != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_debugReportCallbackEXT == VK_NULL_HANDLE; + } + + private: + VkDebugReportCallbackEXT m_debugReportCallbackEXT = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT ) == + sizeof( VkDebugReportCallbackEXT ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugReportCallbackEXT is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class DebugUtilsMessengerEXT + { + public: + using CType = VkDebugUtilsMessengerEXT; + using NativeType = VkDebugUtilsMessengerEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDebugUtilsMessengerEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + VULKAN_HPP_CONSTEXPR DebugUtilsMessengerEXT() = default; + VULKAN_HPP_CONSTEXPR DebugUtilsMessengerEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT + DebugUtilsMessengerEXT( VkDebugUtilsMessengerEXT debugUtilsMessengerEXT ) VULKAN_HPP_NOEXCEPT + : m_debugUtilsMessengerEXT( debugUtilsMessengerEXT ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + DebugUtilsMessengerEXT & operator=( VkDebugUtilsMessengerEXT debugUtilsMessengerEXT ) VULKAN_HPP_NOEXCEPT + { + m_debugUtilsMessengerEXT = debugUtilsMessengerEXT; + return *this; + } +#endif + + DebugUtilsMessengerEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_debugUtilsMessengerEXT = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DebugUtilsMessengerEXT const & ) const = default; +#else + bool operator==( DebugUtilsMessengerEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_debugUtilsMessengerEXT == rhs.m_debugUtilsMessengerEXT; + } + + bool operator!=( DebugUtilsMessengerEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_debugUtilsMessengerEXT != rhs.m_debugUtilsMessengerEXT; + } + + bool operator<( DebugUtilsMessengerEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_debugUtilsMessengerEXT < rhs.m_debugUtilsMessengerEXT; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugUtilsMessengerEXT() const VULKAN_HPP_NOEXCEPT + { + return m_debugUtilsMessengerEXT; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_debugUtilsMessengerEXT != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_debugUtilsMessengerEXT == VK_NULL_HANDLE; + } + + private: + VkDebugUtilsMessengerEXT m_debugUtilsMessengerEXT = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT ) == + sizeof( VkDebugUtilsMessengerEXT ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugUtilsMessengerEXT is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class DisplayKHR + { + public: + using CType = VkDisplayKHR; + using NativeType = VkDisplayKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDisplayKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDisplayKHR; + + public: + VULKAN_HPP_CONSTEXPR DisplayKHR() = default; + VULKAN_HPP_CONSTEXPR DisplayKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR( VkDisplayKHR displayKHR ) VULKAN_HPP_NOEXCEPT : m_displayKHR( displayKHR ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + DisplayKHR & operator=( VkDisplayKHR displayKHR ) VULKAN_HPP_NOEXCEPT + { + m_displayKHR = displayKHR; + return *this; + } +#endif + + DisplayKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_displayKHR = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayKHR const & ) const = default; +#else + bool operator==( DisplayKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_displayKHR == rhs.m_displayKHR; + } + + bool operator!=( DisplayKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_displayKHR != rhs.m_displayKHR; + } + + bool operator<( DisplayKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_displayKHR < rhs.m_displayKHR; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const VULKAN_HPP_NOEXCEPT + { + return m_displayKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_displayKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_displayKHR == VK_NULL_HANDLE; + } + + private: + VkDisplayKHR m_displayKHR = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayKHR ) == sizeof( VkDisplayKHR ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayKHR is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::DisplayKHR; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DisplayKHR; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DisplayKHR; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class SwapchainKHR + { + public: + using CType = VkSwapchainKHR; + using NativeType = VkSwapchainKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eSwapchainKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSwapchainKHR; + + public: + VULKAN_HPP_CONSTEXPR SwapchainKHR() = default; + VULKAN_HPP_CONSTEXPR SwapchainKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR( VkSwapchainKHR swapchainKHR ) VULKAN_HPP_NOEXCEPT + : m_swapchainKHR( swapchainKHR ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + SwapchainKHR & operator=( VkSwapchainKHR swapchainKHR ) VULKAN_HPP_NOEXCEPT + { + m_swapchainKHR = swapchainKHR; + return *this; + } +#endif + + SwapchainKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_swapchainKHR = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainKHR const & ) const = default; +#else + bool operator==( SwapchainKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_swapchainKHR == rhs.m_swapchainKHR; + } + + bool operator!=( SwapchainKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_swapchainKHR != rhs.m_swapchainKHR; + } + + bool operator<( SwapchainKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_swapchainKHR < rhs.m_swapchainKHR; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const VULKAN_HPP_NOEXCEPT + { + return m_swapchainKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_swapchainKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_swapchainKHR == VK_NULL_HANDLE; + } + + private: + VkSwapchainKHR m_swapchainKHR = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainKHR ) == sizeof( VkSwapchainKHR ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SwapchainKHR is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::SwapchainKHR; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::SwapchainKHR; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::SwapchainKHR; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class Semaphore + { + public: + using CType = VkSemaphore; + using NativeType = VkSemaphore; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eSemaphore; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSemaphore; + + public: + VULKAN_HPP_CONSTEXPR Semaphore() = default; + VULKAN_HPP_CONSTEXPR Semaphore( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore( VkSemaphore semaphore ) VULKAN_HPP_NOEXCEPT : m_semaphore( semaphore ) {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + Semaphore & operator=( VkSemaphore semaphore ) VULKAN_HPP_NOEXCEPT + { + m_semaphore = semaphore; + return *this; + } +#endif + + Semaphore & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_semaphore = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Semaphore const & ) const = default; +#else + bool operator==( Semaphore const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_semaphore == rhs.m_semaphore; + } + + bool operator!=( Semaphore const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_semaphore != rhs.m_semaphore; + } + + bool operator<( Semaphore const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_semaphore < rhs.m_semaphore; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSemaphore() const VULKAN_HPP_NOEXCEPT + { + return m_semaphore; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_semaphore != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_semaphore == VK_NULL_HANDLE; + } + + private: + VkSemaphore m_semaphore = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Semaphore ) == sizeof( VkSemaphore ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Semaphore is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::Semaphore; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Semaphore; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Semaphore; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class Fence + { + public: + using CType = VkFence; + using NativeType = VkFence; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eFence; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eFence; + + public: + VULKAN_HPP_CONSTEXPR Fence() = default; + VULKAN_HPP_CONSTEXPR Fence( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT Fence( VkFence fence ) VULKAN_HPP_NOEXCEPT : m_fence( fence ) {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + Fence & operator=( VkFence fence ) VULKAN_HPP_NOEXCEPT + { + m_fence = fence; + return *this; + } +#endif + + Fence & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_fence = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Fence const & ) const = default; +#else + bool operator==( Fence const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_fence == rhs.m_fence; + } + + bool operator!=( Fence const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_fence != rhs.m_fence; + } + + bool operator<( Fence const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_fence < rhs.m_fence; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFence() const VULKAN_HPP_NOEXCEPT + { + return m_fence; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_fence != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_fence == VK_NULL_HANDLE; + } + + private: + VkFence m_fence = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Fence ) == sizeof( VkFence ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Fence is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::Fence; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Fence; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Fence; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class PerformanceConfigurationINTEL + { + public: + using CType = VkPerformanceConfigurationINTEL; + using NativeType = VkPerformanceConfigurationINTEL; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::ePerformanceConfigurationINTEL; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + VULKAN_HPP_CONSTEXPR PerformanceConfigurationINTEL() = default; + VULKAN_HPP_CONSTEXPR PerformanceConfigurationINTEL( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT + PerformanceConfigurationINTEL( VkPerformanceConfigurationINTEL performanceConfigurationINTEL ) VULKAN_HPP_NOEXCEPT + : m_performanceConfigurationINTEL( performanceConfigurationINTEL ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + PerformanceConfigurationINTEL & + operator=( VkPerformanceConfigurationINTEL performanceConfigurationINTEL ) VULKAN_HPP_NOEXCEPT + { + m_performanceConfigurationINTEL = performanceConfigurationINTEL; + return *this; + } +#endif + + PerformanceConfigurationINTEL & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_performanceConfigurationINTEL = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerformanceConfigurationINTEL const & ) const = default; +#else + bool operator==( PerformanceConfigurationINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_performanceConfigurationINTEL == rhs.m_performanceConfigurationINTEL; + } + + bool operator!=( PerformanceConfigurationINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_performanceConfigurationINTEL != rhs.m_performanceConfigurationINTEL; + } + + bool operator<( PerformanceConfigurationINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_performanceConfigurationINTEL < rhs.m_performanceConfigurationINTEL; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPerformanceConfigurationINTEL() const VULKAN_HPP_NOEXCEPT + { + return m_performanceConfigurationINTEL; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_performanceConfigurationINTEL != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_performanceConfigurationINTEL == VK_NULL_HANDLE; + } + + private: + VkPerformanceConfigurationINTEL m_performanceConfigurationINTEL = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL ) == + sizeof( VkPerformanceConfigurationINTEL ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PerformanceConfigurationINTEL is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class QueryPool + { + public: + using CType = VkQueryPool; + using NativeType = VkQueryPool; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eQueryPool; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eQueryPool; + + public: + VULKAN_HPP_CONSTEXPR QueryPool() = default; + VULKAN_HPP_CONSTEXPR QueryPool( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool( VkQueryPool queryPool ) VULKAN_HPP_NOEXCEPT : m_queryPool( queryPool ) {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + QueryPool & operator=( VkQueryPool queryPool ) VULKAN_HPP_NOEXCEPT + { + m_queryPool = queryPool; + return *this; + } +#endif + + QueryPool & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_queryPool = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueryPool const & ) const = default; +#else + bool operator==( QueryPool const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_queryPool == rhs.m_queryPool; + } + + bool operator!=( QueryPool const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_queryPool != rhs.m_queryPool; + } + + bool operator<( QueryPool const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_queryPool < rhs.m_queryPool; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueryPool() const VULKAN_HPP_NOEXCEPT + { + return m_queryPool; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_queryPool != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_queryPool == VK_NULL_HANDLE; + } + + private: + VkQueryPool m_queryPool = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueryPool ) == sizeof( VkQueryPool ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueryPool is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::QueryPool; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::QueryPool; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::QueryPool; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class Buffer + { + public: + using CType = VkBuffer; + using NativeType = VkBuffer; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eBuffer; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBuffer; + + public: + VULKAN_HPP_CONSTEXPR Buffer() = default; + VULKAN_HPP_CONSTEXPR Buffer( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT Buffer( VkBuffer buffer ) VULKAN_HPP_NOEXCEPT : m_buffer( buffer ) {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + Buffer & operator=( VkBuffer buffer ) VULKAN_HPP_NOEXCEPT + { + m_buffer = buffer; + return *this; + } +#endif + + Buffer & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_buffer = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Buffer const & ) const = default; +#else + bool operator==( Buffer const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_buffer == rhs.m_buffer; + } + + bool operator!=( Buffer const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_buffer != rhs.m_buffer; + } + + bool operator<( Buffer const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_buffer < rhs.m_buffer; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBuffer() const VULKAN_HPP_NOEXCEPT + { + return m_buffer; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_buffer != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_buffer == VK_NULL_HANDLE; + } + + private: + VkBuffer m_buffer = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Buffer ) == sizeof( VkBuffer ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Buffer is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::Buffer; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Buffer; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Buffer; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class PipelineLayout + { + public: + using CType = VkPipelineLayout; + using NativeType = VkPipelineLayout; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::ePipelineLayout; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipelineLayout; + + public: + VULKAN_HPP_CONSTEXPR PipelineLayout() = default; + VULKAN_HPP_CONSTEXPR PipelineLayout( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout( VkPipelineLayout pipelineLayout ) VULKAN_HPP_NOEXCEPT + : m_pipelineLayout( pipelineLayout ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + PipelineLayout & operator=( VkPipelineLayout pipelineLayout ) VULKAN_HPP_NOEXCEPT + { + m_pipelineLayout = pipelineLayout; + return *this; + } +#endif + + PipelineLayout & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_pipelineLayout = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineLayout const & ) const = default; +#else + bool operator==( PipelineLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_pipelineLayout == rhs.m_pipelineLayout; + } + + bool operator!=( PipelineLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_pipelineLayout != rhs.m_pipelineLayout; + } + + bool operator<( PipelineLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_pipelineLayout < rhs.m_pipelineLayout; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineLayout() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineLayout; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineLayout != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineLayout == VK_NULL_HANDLE; + } + + private: + VkPipelineLayout m_pipelineLayout = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineLayout ) == sizeof( VkPipelineLayout ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineLayout is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::PipelineLayout; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::PipelineLayout; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::PipelineLayout; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class DescriptorSet + { + public: + using CType = VkDescriptorSet; + using NativeType = VkDescriptorSet; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorSet; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorSet; + + public: + VULKAN_HPP_CONSTEXPR DescriptorSet() = default; + VULKAN_HPP_CONSTEXPR DescriptorSet( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet( VkDescriptorSet descriptorSet ) VULKAN_HPP_NOEXCEPT + : m_descriptorSet( descriptorSet ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + DescriptorSet & operator=( VkDescriptorSet descriptorSet ) VULKAN_HPP_NOEXCEPT + { + m_descriptorSet = descriptorSet; + return *this; + } +#endif + + DescriptorSet & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_descriptorSet = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSet const & ) const = default; +#else + bool operator==( DescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSet == rhs.m_descriptorSet; + } + + bool operator!=( DescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSet != rhs.m_descriptorSet; + } + + bool operator<( DescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSet < rhs.m_descriptorSet; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSet() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSet; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSet != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSet == VK_NULL_HANDLE; + } + + private: + VkDescriptorSet m_descriptorSet = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSet ) == sizeof( VkDescriptorSet ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSet is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::DescriptorSet; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DescriptorSet; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DescriptorSet; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class ImageView + { + public: + using CType = VkImageView; + using NativeType = VkImageView; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eImageView; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eImageView; + + public: + VULKAN_HPP_CONSTEXPR ImageView() = default; + VULKAN_HPP_CONSTEXPR ImageView( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT ImageView( VkImageView imageView ) VULKAN_HPP_NOEXCEPT : m_imageView( imageView ) {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + ImageView & operator=( VkImageView imageView ) VULKAN_HPP_NOEXCEPT + { + m_imageView = imageView; + return *this; + } +#endif + + ImageView & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_imageView = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageView const & ) const = default; +#else + bool operator==( ImageView const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_imageView == rhs.m_imageView; + } + + bool operator!=( ImageView const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_imageView != rhs.m_imageView; + } + + bool operator<( ImageView const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_imageView < rhs.m_imageView; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImageView() const VULKAN_HPP_NOEXCEPT + { + return m_imageView; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_imageView != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_imageView == VK_NULL_HANDLE; + } + + private: + VkImageView m_imageView = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageView ) == sizeof( VkImageView ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageView is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::ImageView; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::ImageView; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::ImageView; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class Pipeline + { + public: + using CType = VkPipeline; + using NativeType = VkPipeline; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::ePipeline; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipeline; + + public: + VULKAN_HPP_CONSTEXPR Pipeline() = default; + VULKAN_HPP_CONSTEXPR Pipeline( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline( VkPipeline pipeline ) VULKAN_HPP_NOEXCEPT : m_pipeline( pipeline ) {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + Pipeline & operator=( VkPipeline pipeline ) VULKAN_HPP_NOEXCEPT + { + m_pipeline = pipeline; + return *this; + } +#endif + + Pipeline & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_pipeline = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Pipeline const & ) const = default; +#else + bool operator==( Pipeline const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_pipeline == rhs.m_pipeline; + } + + bool operator!=( Pipeline const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_pipeline != rhs.m_pipeline; + } + + bool operator<( Pipeline const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_pipeline < rhs.m_pipeline; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipeline() const VULKAN_HPP_NOEXCEPT + { + return m_pipeline; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_pipeline != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_pipeline == VK_NULL_HANDLE; + } + + private: + VkPipeline m_pipeline = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Pipeline ) == sizeof( VkPipeline ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Pipeline is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::Pipeline; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Pipeline; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Pipeline; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class Image + { + public: + using CType = VkImage; + using NativeType = VkImage; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eImage; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eImage; + + public: + VULKAN_HPP_CONSTEXPR Image() = default; + VULKAN_HPP_CONSTEXPR Image( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT Image( VkImage image ) VULKAN_HPP_NOEXCEPT : m_image( image ) {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + Image & operator=( VkImage image ) VULKAN_HPP_NOEXCEPT + { + m_image = image; + return *this; + } +#endif + + Image & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_image = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Image const & ) const = default; +#else + bool operator==( Image const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_image == rhs.m_image; + } + + bool operator!=( Image const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_image != rhs.m_image; + } + + bool operator<( Image const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_image < rhs.m_image; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImage() const VULKAN_HPP_NOEXCEPT + { + return m_image; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_image != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_image == VK_NULL_HANDLE; + } + + private: + VkImage m_image = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Image ) == sizeof( VkImage ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Image is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::Image; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Image; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Image; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class AccelerationStructureNV + { + public: + using CType = VkAccelerationStructureNV; + using NativeType = VkAccelerationStructureNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eAccelerationStructureNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eAccelerationStructureNV; + + public: + VULKAN_HPP_CONSTEXPR AccelerationStructureNV() = default; + VULKAN_HPP_CONSTEXPR AccelerationStructureNV( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT + AccelerationStructureNV( VkAccelerationStructureNV accelerationStructureNV ) VULKAN_HPP_NOEXCEPT + : m_accelerationStructureNV( accelerationStructureNV ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + AccelerationStructureNV & operator=( VkAccelerationStructureNV accelerationStructureNV ) VULKAN_HPP_NOEXCEPT + { + m_accelerationStructureNV = accelerationStructureNV; + return *this; + } +#endif + + AccelerationStructureNV & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_accelerationStructureNV = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureNV const & ) const = default; +#else + bool operator==( AccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureNV == rhs.m_accelerationStructureNV; + } + + bool operator!=( AccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureNV != rhs.m_accelerationStructureNV; + } + + bool operator<( AccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureNV < rhs.m_accelerationStructureNV; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkAccelerationStructureNV() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureNV; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureNV != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureNV == VK_NULL_HANDLE; + } + + private: + VkAccelerationStructureNV m_accelerationStructureNV = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureNV ) == + sizeof( VkAccelerationStructureNV ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureNV is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::AccelerationStructureNV; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::AccelerationStructureNV; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::AccelerationStructureNV; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class DescriptorUpdateTemplate + { + public: + using CType = VkDescriptorUpdateTemplate; + using NativeType = VkDescriptorUpdateTemplate; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorUpdateTemplate; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorUpdateTemplate; + + public: + VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplate() = default; + VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplate( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT + DescriptorUpdateTemplate( VkDescriptorUpdateTemplate descriptorUpdateTemplate ) VULKAN_HPP_NOEXCEPT + : m_descriptorUpdateTemplate( descriptorUpdateTemplate ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + DescriptorUpdateTemplate & operator=( VkDescriptorUpdateTemplate descriptorUpdateTemplate ) VULKAN_HPP_NOEXCEPT + { + m_descriptorUpdateTemplate = descriptorUpdateTemplate; + return *this; + } +#endif + + DescriptorUpdateTemplate & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_descriptorUpdateTemplate = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorUpdateTemplate const & ) const = default; +#else + bool operator==( DescriptorUpdateTemplate const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_descriptorUpdateTemplate == rhs.m_descriptorUpdateTemplate; + } + + bool operator!=( DescriptorUpdateTemplate const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_descriptorUpdateTemplate != rhs.m_descriptorUpdateTemplate; + } + + bool operator<( DescriptorUpdateTemplate const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_descriptorUpdateTemplate < rhs.m_descriptorUpdateTemplate; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorUpdateTemplate() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorUpdateTemplate; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorUpdateTemplate != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorUpdateTemplate == VK_NULL_HANDLE; + } + + private: + VkDescriptorUpdateTemplate m_descriptorUpdateTemplate = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate ) == + sizeof( VkDescriptorUpdateTemplate ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorUpdateTemplate is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + using DescriptorUpdateTemplateKHR = DescriptorUpdateTemplate; + + class Event + { + public: + using CType = VkEvent; + using NativeType = VkEvent; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eEvent; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eEvent; + + public: + VULKAN_HPP_CONSTEXPR Event() = default; + VULKAN_HPP_CONSTEXPR Event( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT Event( VkEvent event ) VULKAN_HPP_NOEXCEPT : m_event( event ) {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + Event & operator=( VkEvent event ) VULKAN_HPP_NOEXCEPT + { + m_event = event; + return *this; + } +#endif + + Event & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_event = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Event const & ) const = default; +#else + bool operator==( Event const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_event == rhs.m_event; + } + + bool operator!=( Event const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_event != rhs.m_event; + } + + bool operator<( Event const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_event < rhs.m_event; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkEvent() const VULKAN_HPP_NOEXCEPT + { + return m_event; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_event != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_event == VK_NULL_HANDLE; + } + + private: + VkEvent m_event = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Event ) == sizeof( VkEvent ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Event is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::Event; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Event; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Event; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class AccelerationStructureKHR + { + public: + using CType = VkAccelerationStructureKHR; + using NativeType = VkAccelerationStructureKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eAccelerationStructureKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eAccelerationStructureKHR; + + public: + VULKAN_HPP_CONSTEXPR AccelerationStructureKHR() = default; + VULKAN_HPP_CONSTEXPR AccelerationStructureKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT + AccelerationStructureKHR( VkAccelerationStructureKHR accelerationStructureKHR ) VULKAN_HPP_NOEXCEPT + : m_accelerationStructureKHR( accelerationStructureKHR ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + AccelerationStructureKHR & operator=( VkAccelerationStructureKHR accelerationStructureKHR ) VULKAN_HPP_NOEXCEPT + { + m_accelerationStructureKHR = accelerationStructureKHR; + return *this; + } +#endif + + AccelerationStructureKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_accelerationStructureKHR = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureKHR const & ) const = default; +#else + bool operator==( AccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureKHR == rhs.m_accelerationStructureKHR; + } + + bool operator!=( AccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureKHR != rhs.m_accelerationStructureKHR; + } + + bool operator<( AccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureKHR < rhs.m_accelerationStructureKHR; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkAccelerationStructureKHR() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureKHR == VK_NULL_HANDLE; + } + + private: + VkAccelerationStructureKHR m_accelerationStructureKHR = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR ) == + sizeof( VkAccelerationStructureKHR ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureKHR is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::AccelerationStructureKHR; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::AccelerationStructureKHR; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::AccelerationStructureKHR; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class CommandBuffer + { + public: + using CType = VkCommandBuffer; + using NativeType = VkCommandBuffer; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eCommandBuffer; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCommandBuffer; + + public: + VULKAN_HPP_CONSTEXPR CommandBuffer() = default; + VULKAN_HPP_CONSTEXPR CommandBuffer( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer( VkCommandBuffer commandBuffer ) VULKAN_HPP_NOEXCEPT + : m_commandBuffer( commandBuffer ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + CommandBuffer & operator=( VkCommandBuffer commandBuffer ) VULKAN_HPP_NOEXCEPT + { + m_commandBuffer = commandBuffer; + return *this; + } +#endif + + CommandBuffer & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_commandBuffer = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBuffer const & ) const = default; +#else + bool operator==( CommandBuffer const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_commandBuffer == rhs.m_commandBuffer; + } + + bool operator!=( CommandBuffer const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_commandBuffer != rhs.m_commandBuffer; + } + + bool operator<( CommandBuffer const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_commandBuffer < rhs.m_commandBuffer; + } +#endif + + //=== VK_VERSION_1_0 === + + template + VULKAN_HPP_NODISCARD Result + begin( const VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo * pBeginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + begin( const VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo & beginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + end( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + end( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + reset( VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + typename ResultValueType::type + reset( VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void bindPipeline( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::Pipeline pipeline, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setViewport( uint32_t firstViewport, + uint32_t viewportCount, + const VULKAN_HPP_NAMESPACE::Viewport * pViewports, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void setViewport( uint32_t firstViewport, + ArrayProxy const & viewports, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void setScissor( uint32_t firstScissor, + uint32_t scissorCount, + const VULKAN_HPP_NAMESPACE::Rect2D * pScissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void setScissor( uint32_t firstScissor, + ArrayProxy const & scissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void setLineWidth( float lineWidth, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setDepthBias( float depthBiasConstantFactor, + float depthBiasClamp, + float depthBiasSlopeFactor, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setBlendConstants( const float blendConstants[4], + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setDepthBounds( float minDepthBounds, + float maxDepthBounds, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setStencilCompareMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + uint32_t compareMask, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setStencilWriteMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + uint32_t writeMask, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setStencilReference( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + uint32_t reference, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t firstSet, + uint32_t descriptorSetCount, + const VULKAN_HPP_NAMESPACE::DescriptorSet * pDescriptorSets, + uint32_t dynamicOffsetCount, + const uint32_t * pDynamicOffsets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t firstSet, + ArrayProxy const & descriptorSets, + ArrayProxy const & dynamicOffsets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::IndexType indexType, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void bindVertexBuffers( uint32_t firstBinding, + uint32_t bindingCount, + const VULKAN_HPP_NAMESPACE::Buffer * pBuffers, + const VULKAN_HPP_NAMESPACE::DeviceSize * pOffsets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void bindVertexBuffers( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void draw( uint32_t vertexCount, + uint32_t instanceCount, + uint32_t firstVertex, + uint32_t firstInstance, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void drawIndexed( uint32_t indexCount, + uint32_t instanceCount, + uint32_t firstIndex, + int32_t vertexOffset, + uint32_t firstInstance, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void drawIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + uint32_t drawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + uint32_t drawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void dispatch( uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void copyBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + uint32_t regionCount, + const VULKAN_HPP_NAMESPACE::BufferCopy * pRegions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void copyBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + ArrayProxy const & regions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void copyImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + uint32_t regionCount, + const VULKAN_HPP_NAMESPACE::ImageCopy * pRegions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void copyImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void blitImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + uint32_t regionCount, + const VULKAN_HPP_NAMESPACE::ImageBlit * pRegions, + VULKAN_HPP_NAMESPACE::Filter filter, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void blitImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions, + VULKAN_HPP_NAMESPACE::Filter filter, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + uint32_t regionCount, + const VULKAN_HPP_NAMESPACE::BufferImageCopy * pRegions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + uint32_t regionCount, + const VULKAN_HPP_NAMESPACE::BufferImageCopy * pRegions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + ArrayProxy const & regions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + VULKAN_HPP_NAMESPACE::DeviceSize dataSize, + const void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + ArrayProxy const & data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void fillBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + VULKAN_HPP_NAMESPACE::DeviceSize size, + uint32_t data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void clearColorImage( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + const VULKAN_HPP_NAMESPACE::ClearColorValue * pColor, + uint32_t rangeCount, + const VULKAN_HPP_NAMESPACE::ImageSubresourceRange * pRanges, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void clearColorImage( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + const VULKAN_HPP_NAMESPACE::ClearColorValue & color, + ArrayProxy const & ranges, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void + clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + const VULKAN_HPP_NAMESPACE::ClearDepthStencilValue * pDepthStencil, + uint32_t rangeCount, + const VULKAN_HPP_NAMESPACE::ImageSubresourceRange * pRanges, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void + clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + const VULKAN_HPP_NAMESPACE::ClearDepthStencilValue & depthStencil, + ArrayProxy const & ranges, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void clearAttachments( uint32_t attachmentCount, + const VULKAN_HPP_NAMESPACE::ClearAttachment * pAttachments, + uint32_t rectCount, + const VULKAN_HPP_NAMESPACE::ClearRect * pRects, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void clearAttachments( ArrayProxy const & attachments, + ArrayProxy const & rects, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void resolveImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + uint32_t regionCount, + const VULKAN_HPP_NAMESPACE::ImageResolve * pRegions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void resolveImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void setEvent( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void resetEvent( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void waitEvents( uint32_t eventCount, + const VULKAN_HPP_NAMESPACE::Event * pEvents, + VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, + uint32_t memoryBarrierCount, + const VULKAN_HPP_NAMESPACE::MemoryBarrier * pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier * pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier * pImageMemoryBarriers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void waitEvents( ArrayProxy const & events, + VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void pipelineBarrier( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, + VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags, + uint32_t memoryBarrierCount, + const VULKAN_HPP_NAMESPACE::MemoryBarrier * pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier * pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier * pImageMemoryBarriers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void pipelineBarrier( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, + VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void beginQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + VULKAN_HPP_NAMESPACE::QueryControlFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void writeTimestamp( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout layout, + VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags, + uint32_t offset, + uint32_t size, + const void * pValues, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout layout, + VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags, + uint32_t offset, + ArrayProxy const & values, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void beginRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo * pRenderPassBegin, + VULKAN_HPP_NAMESPACE::SubpassContents contents, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void beginRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin, + VULKAN_HPP_NAMESPACE::SubpassContents contents, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void nextSubpass( VULKAN_HPP_NAMESPACE::SubpassContents contents, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void endRenderPass( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void executeCommands( uint32_t commandBufferCount, + const VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void executeCommands( ArrayProxy const & commandBuffers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_VERSION_1_1 === + + template + void setDeviceMask( uint32_t deviceMask, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void dispatchBase( uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_2 === + + template + void drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void + drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void beginRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo * pRenderPassBegin, + const VULKAN_HPP_NAMESPACE::SubpassBeginInfo * pSubpassBeginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void beginRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin, + const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void nextSubpass2( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo * pSubpassBeginInfo, + const VULKAN_HPP_NAMESPACE::SubpassEndInfo * pSubpassEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void nextSubpass2( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo, + const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void endRenderPass2( const VULKAN_HPP_NAMESPACE::SubpassEndInfo * pSubpassEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void endRenderPass2( const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_VERSION_1_3 === + + template + void setEvent2( VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::DependencyInfo * pDependencyInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void setEvent2( VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void resetEvent2( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void waitEvents2( uint32_t eventCount, + const VULKAN_HPP_NAMESPACE::Event * pEvents, + const VULKAN_HPP_NAMESPACE::DependencyInfo * pDependencyInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void waitEvents2( ArrayProxy const & events, + ArrayProxy const & dependencyInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void pipelineBarrier2( const VULKAN_HPP_NAMESPACE::DependencyInfo * pDependencyInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void pipelineBarrier2( const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void writeTimestamp2( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void copyBuffer2( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 * pCopyBufferInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void copyBuffer2( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 & copyBufferInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void copyImage2( const VULKAN_HPP_NAMESPACE::CopyImageInfo2 * pCopyImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void copyImage2( const VULKAN_HPP_NAMESPACE::CopyImageInfo2 & copyImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void copyBufferToImage2( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 * pCopyBufferToImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void copyBufferToImage2( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 & copyBufferToImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void copyImageToBuffer2( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 * pCopyImageToBufferInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void copyImageToBuffer2( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 & copyImageToBufferInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void blitImage2( const VULKAN_HPP_NAMESPACE::BlitImageInfo2 * pBlitImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void blitImage2( const VULKAN_HPP_NAMESPACE::BlitImageInfo2 & blitImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void resolveImage2( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 * pResolveImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void resolveImage2( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 & resolveImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void beginRendering( const VULKAN_HPP_NAMESPACE::RenderingInfo * pRenderingInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void beginRendering( const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void endRendering( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setCullMode( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setFrontFace( VULKAN_HPP_NAMESPACE::FrontFace frontFace, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setPrimitiveTopology( VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setViewportWithCount( uint32_t viewportCount, + const VULKAN_HPP_NAMESPACE::Viewport * pViewports, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void setViewportWithCount( ArrayProxy const & viewports, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void setScissorWithCount( uint32_t scissorCount, + const VULKAN_HPP_NAMESPACE::Rect2D * pScissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void setScissorWithCount( ArrayProxy const & scissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void bindVertexBuffers2( uint32_t firstBinding, + uint32_t bindingCount, + const VULKAN_HPP_NAMESPACE::Buffer * pBuffers, + const VULKAN_HPP_NAMESPACE::DeviceSize * pOffsets, + const VULKAN_HPP_NAMESPACE::DeviceSize * pSizes, + const VULKAN_HPP_NAMESPACE::DeviceSize * pStrides, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void bindVertexBuffers2( + uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + ArrayProxy const & strides VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void setDepthTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setDepthWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setDepthCompareOp( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void + setDepthBoundsTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setStencilTestEnable( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setStencilOp( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + VULKAN_HPP_NAMESPACE::StencilOp failOp, + VULKAN_HPP_NAMESPACE::StencilOp passOp, + VULKAN_HPP_NAMESPACE::StencilOp depthFailOp, + VULKAN_HPP_NAMESPACE::CompareOp compareOp, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setRasterizerDiscardEnable( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + template + void setDepthBiasEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setPrimitiveRestartEnable( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_debug_marker === + + template + void debugMarkerBeginEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT * pMarkerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void debugMarkerBeginEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void debugMarkerEndEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void debugMarkerInsertEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT * pMarkerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void debugMarkerInsertEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + + template + void beginVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR * pBeginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void beginVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR & beginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void endVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR * pEndCodingInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void endVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR & endCodingInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void controlVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR * pCodingControlInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void controlVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR & codingControlInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_decode_queue === + + template + void decodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR * pFrameInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void decodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR & frameInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_transform_feedback === + + template + void bindTransformFeedbackBuffersEXT( uint32_t firstBinding, + uint32_t bindingCount, + const VULKAN_HPP_NAMESPACE::Buffer * pBuffers, + const VULKAN_HPP_NAMESPACE::DeviceSize * pOffsets, + const VULKAN_HPP_NAMESPACE::DeviceSize * pSizes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void bindTransformFeedbackBuffersEXT( + uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void beginTransformFeedbackEXT( uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VULKAN_HPP_NAMESPACE::Buffer * pCounterBuffers, + const VULKAN_HPP_NAMESPACE::DeviceSize * pCounterBufferOffsets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void beginTransformFeedbackEXT( uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void + endTransformFeedbackEXT( uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VULKAN_HPP_NAMESPACE::Buffer * pCounterBuffers, + const VULKAN_HPP_NAMESPACE::DeviceSize * pCounterBufferOffsets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void endTransformFeedbackEXT( uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + VULKAN_HPP_NAMESPACE::QueryControlFlags flags, + uint32_t index, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + uint32_t index, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void + drawIndirectByteCountEXT( uint32_t instanceCount, + uint32_t firstInstance, + VULKAN_HPP_NAMESPACE::Buffer counterBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NVX_binary_import === + + template + void cuLaunchKernelNVX( const VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX * pLaunchInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void cuLaunchKernelNVX( const VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX & launchInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_AMD_draw_indirect_count === + + template + void drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_dynamic_rendering === + + template + void beginRenderingKHR( const VULKAN_HPP_NAMESPACE::RenderingInfo * pRenderingInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void beginRenderingKHR( const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void endRenderingKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_device_group === + + template + void setDeviceMaskKHR( uint32_t deviceMask, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void dispatchBaseKHR( uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_push_descriptor === + + template + void pushDescriptorSetKHR( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + uint32_t descriptorWriteCount, + const VULKAN_HPP_NAMESPACE::WriteDescriptorSet * pDescriptorWrites, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void pushDescriptorSetKHR( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + ArrayProxy const & descriptorWrites, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void pushDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + const void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void pushDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + DataType const & data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_conditional_rendering === + + template + void beginConditionalRenderingEXT( + const VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void beginConditionalRenderingEXT( + const VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void endConditionalRenderingEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_clip_space_w_scaling === + + template + void setViewportWScalingNV( uint32_t firstViewport, + uint32_t viewportCount, + const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * pViewportWScalings, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void setViewportWScalingNV( uint32_t firstViewport, + ArrayProxy const & viewportWScalings, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_discard_rectangles === + + template + void + setDiscardRectangleEXT( uint32_t firstDiscardRectangle, + uint32_t discardRectangleCount, + const VULKAN_HPP_NAMESPACE::Rect2D * pDiscardRectangles, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void + setDiscardRectangleEXT( uint32_t firstDiscardRectangle, + ArrayProxy const & discardRectangles, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_create_renderpass2 === + + template + void beginRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo * pRenderPassBegin, + const VULKAN_HPP_NAMESPACE::SubpassBeginInfo * pSubpassBeginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void beginRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin, + const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void nextSubpass2KHR( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo * pSubpassBeginInfo, + const VULKAN_HPP_NAMESPACE::SubpassEndInfo * pSubpassEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void nextSubpass2KHR( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo, + const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void endRenderPass2KHR( const VULKAN_HPP_NAMESPACE::SubpassEndInfo * pSubpassEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void endRenderPass2KHR( const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_debug_utils === + + template + void + beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pLabelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void + beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void endDebugUtilsLabelEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void + insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pLabelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void + insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_sample_locations === + + template + void setSampleLocationsEXT( const VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT * pSampleLocationsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void setSampleLocationsEXT( const VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT & sampleLocationsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_acceleration_structure === + + template + void buildAccelerationStructuresKHR( + uint32_t infoCount, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR * pInfos, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void buildAccelerationStructuresKHR( + ArrayProxy const & infos, + ArrayProxy const & pBuildRangeInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void buildAccelerationStructuresIndirectKHR( + uint32_t infoCount, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR * pInfos, + const VULKAN_HPP_NAMESPACE::DeviceAddress * pIndirectDeviceAddresses, + const uint32_t * pIndirectStrides, + const uint32_t * const * ppMaxPrimitiveCounts, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void buildAccelerationStructuresIndirectKHR( + ArrayProxy const & infos, + ArrayProxy const & indirectDeviceAddresses, + ArrayProxy const & indirectStrides, + ArrayProxy const & pMaxPrimitiveCounts, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void copyAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void copyAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void copyAccelerationStructureToMemoryKHR( + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void copyAccelerationStructureToMemoryKHR( + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void copyMemoryToAccelerationStructureKHR( + const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void copyMemoryToAccelerationStructureKHR( + const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void writeAccelerationStructuresPropertiesKHR( + uint32_t accelerationStructureCount, + const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void writeAccelerationStructuresPropertiesKHR( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_shading_rate_image === + + template + void + bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView imageView, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setViewportShadingRatePaletteNV( uint32_t firstViewport, + uint32_t viewportCount, + const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * pShadingRatePalettes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void setViewportShadingRatePaletteNV( + uint32_t firstViewport, + ArrayProxy const & shadingRatePalettes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void + setCoarseSampleOrderNV( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType, + uint32_t customSampleOrderCount, + const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * pCustomSampleOrders, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void setCoarseSampleOrderNV( + VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType, + ArrayProxy const & customSampleOrders, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_ray_tracing === + + template + void buildAccelerationStructureNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV * pInfo, + VULKAN_HPP_NAMESPACE::Buffer instanceData, + VULKAN_HPP_NAMESPACE::DeviceSize instanceOffset, + VULKAN_HPP_NAMESPACE::Bool32 update, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, + VULKAN_HPP_NAMESPACE::Buffer scratch, + VULKAN_HPP_NAMESPACE::DeviceSize scratchOffset, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void buildAccelerationStructureNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV & info, + VULKAN_HPP_NAMESPACE::Buffer instanceData, + VULKAN_HPP_NAMESPACE::DeviceSize instanceOffset, + VULKAN_HPP_NAMESPACE::Bool32 update, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, + VULKAN_HPP_NAMESPACE::Buffer scratch, + VULKAN_HPP_NAMESPACE::DeviceSize scratchOffset, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void copyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + template + void traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer raygenShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize raygenShaderBindingOffset, + VULKAN_HPP_NAMESPACE::Buffer missShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingOffset, + VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingStride, + VULKAN_HPP_NAMESPACE::Buffer hitShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingOffset, + VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingStride, + VULKAN_HPP_NAMESPACE::Buffer callableShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingOffset, + VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingStride, + uint32_t width, + uint32_t height, + uint32_t depth, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void writeAccelerationStructuresPropertiesNV( + uint32_t accelerationStructureCount, + const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void writeAccelerationStructuresPropertiesNV( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_draw_indirect_count === + + template + void drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_AMD_buffer_marker === + + template + void writeBufferMarkerAMD( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + uint32_t marker, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_mesh_shader === + + template + void drawMeshTasksNV( uint32_t taskCount, + uint32_t firstTask, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void + drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + uint32_t drawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_scissor_exclusive === + + template + void setExclusiveScissorNV( uint32_t firstExclusiveScissor, + uint32_t exclusiveScissorCount, + const VULKAN_HPP_NAMESPACE::Rect2D * pExclusiveScissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void setExclusiveScissorNV( uint32_t firstExclusiveScissor, + ArrayProxy const & exclusiveScissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_device_diagnostic_checkpoints === + + template + void setCheckpointNV( const void * pCheckpointMarker, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void setCheckpointNV( CheckpointMarkerType const & checkpointMarker, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_INTEL_performance_query === + + template + VULKAN_HPP_NODISCARD Result setPerformanceMarkerINTEL( + const VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL * pMarkerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setPerformanceMarkerINTEL( const VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL & markerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result setPerformanceStreamMarkerINTEL( + const VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL * pMarkerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setPerformanceStreamMarkerINTEL( const VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL & markerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result setPerformanceOverrideINTEL( + const VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL * pOverrideInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setPerformanceOverrideINTEL( const VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL & overrideInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_fragment_shading_rate === + + template + void setFragmentShadingRateKHR( const VULKAN_HPP_NAMESPACE::Extent2D * pFragmentSize, + const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2], + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void setFragmentShadingRateKHR( const VULKAN_HPP_NAMESPACE::Extent2D & fragmentSize, + const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2], + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_line_rasterization === + + template + void setLineStippleEXT( uint32_t lineStippleFactor, + uint16_t lineStipplePattern, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_extended_dynamic_state === + + template + void setCullModeEXT( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setFrontFaceEXT( VULKAN_HPP_NAMESPACE::FrontFace frontFace, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void + setPrimitiveTopologyEXT( VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void + setViewportWithCountEXT( uint32_t viewportCount, + const VULKAN_HPP_NAMESPACE::Viewport * pViewports, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void + setViewportWithCountEXT( ArrayProxy const & viewports, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void + setScissorWithCountEXT( uint32_t scissorCount, + const VULKAN_HPP_NAMESPACE::Rect2D * pScissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void + setScissorWithCountEXT( ArrayProxy const & scissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void bindVertexBuffers2EXT( uint32_t firstBinding, + uint32_t bindingCount, + const VULKAN_HPP_NAMESPACE::Buffer * pBuffers, + const VULKAN_HPP_NAMESPACE::DeviceSize * pOffsets, + const VULKAN_HPP_NAMESPACE::DeviceSize * pSizes, + const VULKAN_HPP_NAMESPACE::DeviceSize * pStrides, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void bindVertexBuffers2EXT( + uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + ArrayProxy const & strides VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void setDepthTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void + setDepthWriteEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setDepthCompareOpEXT( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setDepthBoundsTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + template + void + setStencilTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setStencilOpEXT( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + VULKAN_HPP_NAMESPACE::StencilOp failOp, + VULKAN_HPP_NAMESPACE::StencilOp passOp, + VULKAN_HPP_NAMESPACE::StencilOp depthFailOp, + VULKAN_HPP_NAMESPACE::CompareOp compareOp, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_device_generated_commands === + + template + void preprocessGeneratedCommandsNV( const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV * pGeneratedCommandsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void preprocessGeneratedCommandsNV( const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void executeGeneratedCommandsNV( VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV * pGeneratedCommandsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void executeGeneratedCommandsNV( VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void bindPipelineShaderGroupNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t groupIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_encode_queue === + + template + void encodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR * pEncodeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void encodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR & encodeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_KHR_synchronization2 === + + template + void setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::DependencyInfo * pDependencyInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void waitEvents2KHR( uint32_t eventCount, + const VULKAN_HPP_NAMESPACE::Event * pEvents, + const VULKAN_HPP_NAMESPACE::DependencyInfo * pDependencyInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void waitEvents2KHR( ArrayProxy const & events, + ArrayProxy const & dependencyInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void pipelineBarrier2KHR( const VULKAN_HPP_NAMESPACE::DependencyInfo * pDependencyInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void pipelineBarrier2KHR( const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void writeTimestamp2KHR( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void writeBufferMarker2AMD( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + uint32_t marker, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_fragment_shading_rate_enums === + + template + void setFragmentShadingRateEnumNV( VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate, + const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2], + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_copy_commands2 === + + template + void copyBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 * pCopyBufferInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void copyBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 & copyBufferInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void copyImage2KHR( const VULKAN_HPP_NAMESPACE::CopyImageInfo2 * pCopyImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void copyImage2KHR( const VULKAN_HPP_NAMESPACE::CopyImageInfo2 & copyImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void copyBufferToImage2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 * pCopyBufferToImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void copyBufferToImage2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 & copyBufferToImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void copyImageToBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 * pCopyImageToBufferInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void copyImageToBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 & copyImageToBufferInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void blitImage2KHR( const VULKAN_HPP_NAMESPACE::BlitImageInfo2 * pBlitImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void blitImage2KHR( const VULKAN_HPP_NAMESPACE::BlitImageInfo2 & blitImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void resolveImage2KHR( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 * pResolveImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void resolveImage2KHR( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 & resolveImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_ray_tracing_pipeline === + + template + void traceRaysKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pRaygenShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pMissShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pHitShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pCallableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void traceRaysKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void traceRaysIndirectKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pRaygenShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pMissShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pHitShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR * pCallableShaderBindingTable, + VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void traceRaysIndirectKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable, + VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_vertex_input_dynamic_state === + + template + void + setVertexInputEXT( uint32_t vertexBindingDescriptionCount, + const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT * pVertexBindingDescriptions, + uint32_t vertexAttributeDescriptionCount, + const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT * pVertexAttributeDescriptions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void setVertexInputEXT( + ArrayProxy const & vertexBindingDescriptions, + ArrayProxy const & vertexAttributeDescriptions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_HUAWEI_subpass_shading === + + template + void subpassShadingHUAWEI( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_HUAWEI_invocation_mask === + + template + void + bindInvocationMaskHUAWEI( VULKAN_HPP_NAMESPACE::ImageView imageView, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_extended_dynamic_state2 === + + template + void + setPatchControlPointsEXT( uint32_t patchControlPoints, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setRasterizerDiscardEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + template + void setDepthBiasEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setLogicOpEXT( VULKAN_HPP_NAMESPACE::LogicOp logicOp, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void setPrimitiveRestartEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_color_write_enable === + + template + void + setColorWriteEnableEXT( uint32_t attachmentCount, + const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void + setColorWriteEnableEXT( ArrayProxy const & colorWriteEnables, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_multi_draw === + + template + void drawMultiEXT( uint32_t drawCount, + const VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT * pVertexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void drawMultiEXT( ArrayProxy const & vertexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void drawMultiIndexedEXT( uint32_t drawCount, + const VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT * pIndexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + const int32_t * pVertexOffset, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void drawMultiIndexedEXT( ArrayProxy const & indexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + Optional vertexOffset VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const VULKAN_HPP_NOEXCEPT + { + return m_commandBuffer; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_commandBuffer != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_commandBuffer == VK_NULL_HANDLE; + } + + private: + VkCommandBuffer m_commandBuffer = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBuffer ) == sizeof( VkCommandBuffer ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandBuffer is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::CommandBuffer; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::CommandBuffer; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::CommandBuffer; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class DeviceMemory + { + public: + using CType = VkDeviceMemory; + using NativeType = VkDeviceMemory; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDeviceMemory; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDeviceMemory; + + public: + VULKAN_HPP_CONSTEXPR DeviceMemory() = default; + VULKAN_HPP_CONSTEXPR DeviceMemory( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory( VkDeviceMemory deviceMemory ) VULKAN_HPP_NOEXCEPT + : m_deviceMemory( deviceMemory ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + DeviceMemory & operator=( VkDeviceMemory deviceMemory ) VULKAN_HPP_NOEXCEPT + { + m_deviceMemory = deviceMemory; + return *this; + } +#endif + + DeviceMemory & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_deviceMemory = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceMemory const & ) const = default; +#else + bool operator==( DeviceMemory const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_deviceMemory == rhs.m_deviceMemory; + } + + bool operator!=( DeviceMemory const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_deviceMemory != rhs.m_deviceMemory; + } + + bool operator<( DeviceMemory const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_deviceMemory < rhs.m_deviceMemory; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeviceMemory() const VULKAN_HPP_NOEXCEPT + { + return m_deviceMemory; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_deviceMemory != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_deviceMemory == VK_NULL_HANDLE; + } + + private: + VkDeviceMemory m_deviceMemory = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceMemory ) == sizeof( VkDeviceMemory ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceMemory is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::DeviceMemory; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DeviceMemory; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DeviceMemory; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + class VideoSessionKHR + { + public: + using CType = VkVideoSessionKHR; + using NativeType = VkVideoSessionKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eVideoSessionKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + VULKAN_HPP_CONSTEXPR VideoSessionKHR() = default; + VULKAN_HPP_CONSTEXPR VideoSessionKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT VideoSessionKHR( VkVideoSessionKHR videoSessionKHR ) VULKAN_HPP_NOEXCEPT + : m_videoSessionKHR( videoSessionKHR ) + {} + +# if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + VideoSessionKHR & operator=( VkVideoSessionKHR videoSessionKHR ) VULKAN_HPP_NOEXCEPT + { + m_videoSessionKHR = videoSessionKHR; + return *this; + } +# endif + + VideoSessionKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_videoSessionKHR = {}; + return *this; + } + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoSessionKHR const & ) const = default; +# else + bool operator==( VideoSessionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionKHR == rhs.m_videoSessionKHR; + } + + bool operator!=( VideoSessionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionKHR != rhs.m_videoSessionKHR; + } + + bool operator<( VideoSessionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionKHR < rhs.m_videoSessionKHR; + } +# endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkVideoSessionKHR() const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionKHR == VK_NULL_HANDLE; + } + + private: + VkVideoSessionKHR m_videoSessionKHR = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoSessionKHR ) == sizeof( VkVideoSessionKHR ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoSessionKHR is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::VideoSessionKHR; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::VideoSessionKHR; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + class DeferredOperationKHR + { + public: + using CType = VkDeferredOperationKHR; + using NativeType = VkDeferredOperationKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDeferredOperationKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + VULKAN_HPP_CONSTEXPR DeferredOperationKHR() = default; + VULKAN_HPP_CONSTEXPR DeferredOperationKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT DeferredOperationKHR( VkDeferredOperationKHR deferredOperationKHR ) VULKAN_HPP_NOEXCEPT + : m_deferredOperationKHR( deferredOperationKHR ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + DeferredOperationKHR & operator=( VkDeferredOperationKHR deferredOperationKHR ) VULKAN_HPP_NOEXCEPT + { + m_deferredOperationKHR = deferredOperationKHR; + return *this; + } +#endif + + DeferredOperationKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_deferredOperationKHR = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeferredOperationKHR const & ) const = default; +#else + bool operator==( DeferredOperationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_deferredOperationKHR == rhs.m_deferredOperationKHR; + } + + bool operator!=( DeferredOperationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_deferredOperationKHR != rhs.m_deferredOperationKHR; + } + + bool operator<( DeferredOperationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_deferredOperationKHR < rhs.m_deferredOperationKHR; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeferredOperationKHR() const VULKAN_HPP_NOEXCEPT + { + return m_deferredOperationKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_deferredOperationKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_deferredOperationKHR == VK_NULL_HANDLE; + } + + private: + VkDeferredOperationKHR m_deferredOperationKHR = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeferredOperationKHR ) == sizeof( VkDeferredOperationKHR ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeferredOperationKHR is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::DeferredOperationKHR; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DeferredOperationKHR; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + class BufferCollectionFUCHSIA + { + public: + using CType = VkBufferCollectionFUCHSIA; + using NativeType = VkBufferCollectionFUCHSIA; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eBufferCollectionFUCHSIA; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBufferCollectionFUCHSIA; + + public: + VULKAN_HPP_CONSTEXPR BufferCollectionFUCHSIA() = default; + VULKAN_HPP_CONSTEXPR BufferCollectionFUCHSIA( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT + BufferCollectionFUCHSIA( VkBufferCollectionFUCHSIA bufferCollectionFUCHSIA ) VULKAN_HPP_NOEXCEPT + : m_bufferCollectionFUCHSIA( bufferCollectionFUCHSIA ) + {} + +# if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + BufferCollectionFUCHSIA & operator=( VkBufferCollectionFUCHSIA bufferCollectionFUCHSIA ) VULKAN_HPP_NOEXCEPT + { + m_bufferCollectionFUCHSIA = bufferCollectionFUCHSIA; + return *this; + } +# endif + + BufferCollectionFUCHSIA & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_bufferCollectionFUCHSIA = {}; + return *this; + } + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCollectionFUCHSIA const & ) const = default; +# else + bool operator==( BufferCollectionFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_bufferCollectionFUCHSIA == rhs.m_bufferCollectionFUCHSIA; + } + + bool operator!=( BufferCollectionFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_bufferCollectionFUCHSIA != rhs.m_bufferCollectionFUCHSIA; + } + + bool operator<( BufferCollectionFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_bufferCollectionFUCHSIA < rhs.m_bufferCollectionFUCHSIA; + } +# endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferCollectionFUCHSIA() const VULKAN_HPP_NOEXCEPT + { + return m_bufferCollectionFUCHSIA; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_bufferCollectionFUCHSIA != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_bufferCollectionFUCHSIA == VK_NULL_HANDLE; + } + + private: + VkBufferCollectionFUCHSIA m_bufferCollectionFUCHSIA = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA ) == + sizeof( VkBufferCollectionFUCHSIA ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferCollectionFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + class BufferView + { + public: + using CType = VkBufferView; + using NativeType = VkBufferView; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eBufferView; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBufferView; + + public: + VULKAN_HPP_CONSTEXPR BufferView() = default; + VULKAN_HPP_CONSTEXPR BufferView( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT BufferView( VkBufferView bufferView ) VULKAN_HPP_NOEXCEPT : m_bufferView( bufferView ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + BufferView & operator=( VkBufferView bufferView ) VULKAN_HPP_NOEXCEPT + { + m_bufferView = bufferView; + return *this; + } +#endif + + BufferView & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_bufferView = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferView const & ) const = default; +#else + bool operator==( BufferView const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_bufferView == rhs.m_bufferView; + } + + bool operator!=( BufferView const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_bufferView != rhs.m_bufferView; + } + + bool operator<( BufferView const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_bufferView < rhs.m_bufferView; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferView() const VULKAN_HPP_NOEXCEPT + { + return m_bufferView; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_bufferView != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_bufferView == VK_NULL_HANDLE; + } + + private: + VkBufferView m_bufferView = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferView ) == sizeof( VkBufferView ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferView is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::BufferView; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::BufferView; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::BufferView; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class CommandPool + { + public: + using CType = VkCommandPool; + using NativeType = VkCommandPool; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eCommandPool; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCommandPool; + + public: + VULKAN_HPP_CONSTEXPR CommandPool() = default; + VULKAN_HPP_CONSTEXPR CommandPool( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool( VkCommandPool commandPool ) VULKAN_HPP_NOEXCEPT + : m_commandPool( commandPool ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + CommandPool & operator=( VkCommandPool commandPool ) VULKAN_HPP_NOEXCEPT + { + m_commandPool = commandPool; + return *this; + } +#endif + + CommandPool & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_commandPool = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandPool const & ) const = default; +#else + bool operator==( CommandPool const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_commandPool == rhs.m_commandPool; + } + + bool operator!=( CommandPool const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_commandPool != rhs.m_commandPool; + } + + bool operator<( CommandPool const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_commandPool < rhs.m_commandPool; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandPool() const VULKAN_HPP_NOEXCEPT + { + return m_commandPool; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_commandPool != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_commandPool == VK_NULL_HANDLE; + } + + private: + VkCommandPool m_commandPool = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandPool ) == sizeof( VkCommandPool ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandPool is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::CommandPool; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::CommandPool; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::CommandPool; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class PipelineCache + { + public: + using CType = VkPipelineCache; + using NativeType = VkPipelineCache; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::ePipelineCache; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipelineCache; + + public: + VULKAN_HPP_CONSTEXPR PipelineCache() = default; + VULKAN_HPP_CONSTEXPR PipelineCache( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache( VkPipelineCache pipelineCache ) VULKAN_HPP_NOEXCEPT + : m_pipelineCache( pipelineCache ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + PipelineCache & operator=( VkPipelineCache pipelineCache ) VULKAN_HPP_NOEXCEPT + { + m_pipelineCache = pipelineCache; + return *this; + } +#endif + + PipelineCache & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_pipelineCache = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCache const & ) const = default; +#else + bool operator==( PipelineCache const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_pipelineCache == rhs.m_pipelineCache; + } + + bool operator!=( PipelineCache const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_pipelineCache != rhs.m_pipelineCache; + } + + bool operator<( PipelineCache const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_pipelineCache < rhs.m_pipelineCache; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineCache() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineCache; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineCache != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineCache == VK_NULL_HANDLE; + } + + private: + VkPipelineCache m_pipelineCache = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCache ) == sizeof( VkPipelineCache ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineCache is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::PipelineCache; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::PipelineCache; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::PipelineCache; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class CuFunctionNVX + { + public: + using CType = VkCuFunctionNVX; + using NativeType = VkCuFunctionNVX; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eCuFunctionNVX; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCuFunctionNVX; + + public: + VULKAN_HPP_CONSTEXPR CuFunctionNVX() = default; + VULKAN_HPP_CONSTEXPR CuFunctionNVX( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT CuFunctionNVX( VkCuFunctionNVX cuFunctionNVX ) VULKAN_HPP_NOEXCEPT + : m_cuFunctionNVX( cuFunctionNVX ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + CuFunctionNVX & operator=( VkCuFunctionNVX cuFunctionNVX ) VULKAN_HPP_NOEXCEPT + { + m_cuFunctionNVX = cuFunctionNVX; + return *this; + } +#endif + + CuFunctionNVX & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_cuFunctionNVX = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CuFunctionNVX const & ) const = default; +#else + bool operator==( CuFunctionNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_cuFunctionNVX == rhs.m_cuFunctionNVX; + } + + bool operator!=( CuFunctionNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_cuFunctionNVX != rhs.m_cuFunctionNVX; + } + + bool operator<( CuFunctionNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_cuFunctionNVX < rhs.m_cuFunctionNVX; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCuFunctionNVX() const VULKAN_HPP_NOEXCEPT + { + return m_cuFunctionNVX; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_cuFunctionNVX != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_cuFunctionNVX == VK_NULL_HANDLE; + } + + private: + VkCuFunctionNVX m_cuFunctionNVX = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CuFunctionNVX ) == sizeof( VkCuFunctionNVX ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CuFunctionNVX is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::CuFunctionNVX; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::CuFunctionNVX; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::CuFunctionNVX; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class CuModuleNVX + { + public: + using CType = VkCuModuleNVX; + using NativeType = VkCuModuleNVX; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eCuModuleNVX; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCuModuleNVX; + + public: + VULKAN_HPP_CONSTEXPR CuModuleNVX() = default; + VULKAN_HPP_CONSTEXPR CuModuleNVX( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT CuModuleNVX( VkCuModuleNVX cuModuleNVX ) VULKAN_HPP_NOEXCEPT + : m_cuModuleNVX( cuModuleNVX ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + CuModuleNVX & operator=( VkCuModuleNVX cuModuleNVX ) VULKAN_HPP_NOEXCEPT + { + m_cuModuleNVX = cuModuleNVX; + return *this; + } +#endif + + CuModuleNVX & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_cuModuleNVX = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CuModuleNVX const & ) const = default; +#else + bool operator==( CuModuleNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_cuModuleNVX == rhs.m_cuModuleNVX; + } + + bool operator!=( CuModuleNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_cuModuleNVX != rhs.m_cuModuleNVX; + } + + bool operator<( CuModuleNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_cuModuleNVX < rhs.m_cuModuleNVX; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCuModuleNVX() const VULKAN_HPP_NOEXCEPT + { + return m_cuModuleNVX; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_cuModuleNVX != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_cuModuleNVX == VK_NULL_HANDLE; + } + + private: + VkCuModuleNVX m_cuModuleNVX = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CuModuleNVX ) == sizeof( VkCuModuleNVX ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CuModuleNVX is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::CuModuleNVX; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::CuModuleNVX; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::CuModuleNVX; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class DescriptorPool + { + public: + using CType = VkDescriptorPool; + using NativeType = VkDescriptorPool; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorPool; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorPool; + + public: + VULKAN_HPP_CONSTEXPR DescriptorPool() = default; + VULKAN_HPP_CONSTEXPR DescriptorPool( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool( VkDescriptorPool descriptorPool ) VULKAN_HPP_NOEXCEPT + : m_descriptorPool( descriptorPool ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + DescriptorPool & operator=( VkDescriptorPool descriptorPool ) VULKAN_HPP_NOEXCEPT + { + m_descriptorPool = descriptorPool; + return *this; + } +#endif + + DescriptorPool & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_descriptorPool = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorPool const & ) const = default; +#else + bool operator==( DescriptorPool const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_descriptorPool == rhs.m_descriptorPool; + } + + bool operator!=( DescriptorPool const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_descriptorPool != rhs.m_descriptorPool; + } + + bool operator<( DescriptorPool const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_descriptorPool < rhs.m_descriptorPool; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorPool() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorPool; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorPool != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorPool == VK_NULL_HANDLE; + } + + private: + VkDescriptorPool m_descriptorPool = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorPool ) == sizeof( VkDescriptorPool ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorPool is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::DescriptorPool; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DescriptorPool; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DescriptorPool; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class DescriptorSetLayout + { + public: + using CType = VkDescriptorSetLayout; + using NativeType = VkDescriptorSetLayout; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorSetLayout; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorSetLayout; + + public: + VULKAN_HPP_CONSTEXPR DescriptorSetLayout() = default; + VULKAN_HPP_CONSTEXPR DescriptorSetLayout( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout ) VULKAN_HPP_NOEXCEPT + : m_descriptorSetLayout( descriptorSetLayout ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + DescriptorSetLayout & operator=( VkDescriptorSetLayout descriptorSetLayout ) VULKAN_HPP_NOEXCEPT + { + m_descriptorSetLayout = descriptorSetLayout; + return *this; + } +#endif + + DescriptorSetLayout & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_descriptorSetLayout = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetLayout const & ) const = default; +#else + bool operator==( DescriptorSetLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSetLayout == rhs.m_descriptorSetLayout; + } + + bool operator!=( DescriptorSetLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSetLayout != rhs.m_descriptorSetLayout; + } + + bool operator<( DescriptorSetLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSetLayout < rhs.m_descriptorSetLayout; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSetLayout() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSetLayout; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSetLayout != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSetLayout == VK_NULL_HANDLE; + } + + private: + VkDescriptorSetLayout m_descriptorSetLayout = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSetLayout is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::DescriptorSetLayout; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DescriptorSetLayout; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DescriptorSetLayout; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class Framebuffer + { + public: + using CType = VkFramebuffer; + using NativeType = VkFramebuffer; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eFramebuffer; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eFramebuffer; + + public: + VULKAN_HPP_CONSTEXPR Framebuffer() = default; + VULKAN_HPP_CONSTEXPR Framebuffer( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer( VkFramebuffer framebuffer ) VULKAN_HPP_NOEXCEPT + : m_framebuffer( framebuffer ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + Framebuffer & operator=( VkFramebuffer framebuffer ) VULKAN_HPP_NOEXCEPT + { + m_framebuffer = framebuffer; + return *this; + } +#endif + + Framebuffer & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_framebuffer = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Framebuffer const & ) const = default; +#else + bool operator==( Framebuffer const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_framebuffer == rhs.m_framebuffer; + } + + bool operator!=( Framebuffer const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_framebuffer != rhs.m_framebuffer; + } + + bool operator<( Framebuffer const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_framebuffer < rhs.m_framebuffer; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFramebuffer() const VULKAN_HPP_NOEXCEPT + { + return m_framebuffer; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_framebuffer != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_framebuffer == VK_NULL_HANDLE; + } + + private: + VkFramebuffer m_framebuffer = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Framebuffer ) == sizeof( VkFramebuffer ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Framebuffer is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::Framebuffer; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Framebuffer; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Framebuffer; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class IndirectCommandsLayoutNV + { + public: + using CType = VkIndirectCommandsLayoutNV; + using NativeType = VkIndirectCommandsLayoutNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eIndirectCommandsLayoutNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutNV() = default; + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutNV( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT + IndirectCommandsLayoutNV( VkIndirectCommandsLayoutNV indirectCommandsLayoutNV ) VULKAN_HPP_NOEXCEPT + : m_indirectCommandsLayoutNV( indirectCommandsLayoutNV ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + IndirectCommandsLayoutNV & operator=( VkIndirectCommandsLayoutNV indirectCommandsLayoutNV ) VULKAN_HPP_NOEXCEPT + { + m_indirectCommandsLayoutNV = indirectCommandsLayoutNV; + return *this; + } +#endif + + IndirectCommandsLayoutNV & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_indirectCommandsLayoutNV = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsLayoutNV const & ) const = default; +#else + bool operator==( IndirectCommandsLayoutNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutNV == rhs.m_indirectCommandsLayoutNV; + } + + bool operator!=( IndirectCommandsLayoutNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutNV != rhs.m_indirectCommandsLayoutNV; + } + + bool operator<( IndirectCommandsLayoutNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutNV < rhs.m_indirectCommandsLayoutNV; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutNV() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutNV; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutNV != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutNV == VK_NULL_HANDLE; + } + + private: + VkIndirectCommandsLayoutNV m_indirectCommandsLayoutNV = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV ) == + sizeof( VkIndirectCommandsLayoutNV ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectCommandsLayoutNV is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class PrivateDataSlot + { + public: + using CType = VkPrivateDataSlot; + using NativeType = VkPrivateDataSlot; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::ePrivateDataSlot; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + VULKAN_HPP_CONSTEXPR PrivateDataSlot() = default; + VULKAN_HPP_CONSTEXPR PrivateDataSlot( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT PrivateDataSlot( VkPrivateDataSlot privateDataSlot ) VULKAN_HPP_NOEXCEPT + : m_privateDataSlot( privateDataSlot ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + PrivateDataSlot & operator=( VkPrivateDataSlot privateDataSlot ) VULKAN_HPP_NOEXCEPT + { + m_privateDataSlot = privateDataSlot; + return *this; + } +#endif + + PrivateDataSlot & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_privateDataSlot = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PrivateDataSlot const & ) const = default; +#else + bool operator==( PrivateDataSlot const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_privateDataSlot == rhs.m_privateDataSlot; + } + + bool operator!=( PrivateDataSlot const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_privateDataSlot != rhs.m_privateDataSlot; + } + + bool operator<( PrivateDataSlot const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_privateDataSlot < rhs.m_privateDataSlot; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPrivateDataSlot() const VULKAN_HPP_NOEXCEPT + { + return m_privateDataSlot; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_privateDataSlot != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_privateDataSlot == VK_NULL_HANDLE; + } + + private: + VkPrivateDataSlot m_privateDataSlot = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PrivateDataSlot ) == sizeof( VkPrivateDataSlot ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PrivateDataSlot is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::PrivateDataSlot; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::PrivateDataSlot; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + using PrivateDataSlotEXT = PrivateDataSlot; + + class RenderPass + { + public: + using CType = VkRenderPass; + using NativeType = VkRenderPass; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eRenderPass; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eRenderPass; + + public: + VULKAN_HPP_CONSTEXPR RenderPass() = default; + VULKAN_HPP_CONSTEXPR RenderPass( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass( VkRenderPass renderPass ) VULKAN_HPP_NOEXCEPT : m_renderPass( renderPass ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + RenderPass & operator=( VkRenderPass renderPass ) VULKAN_HPP_NOEXCEPT + { + m_renderPass = renderPass; + return *this; + } +#endif + + RenderPass & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_renderPass = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPass const & ) const = default; +#else + bool operator==( RenderPass const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_renderPass == rhs.m_renderPass; + } + + bool operator!=( RenderPass const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_renderPass != rhs.m_renderPass; + } + + bool operator<( RenderPass const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_renderPass < rhs.m_renderPass; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkRenderPass() const VULKAN_HPP_NOEXCEPT + { + return m_renderPass; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_renderPass != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_renderPass == VK_NULL_HANDLE; + } + + private: + VkRenderPass m_renderPass = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPass ) == sizeof( VkRenderPass ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPass is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::RenderPass; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::RenderPass; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::RenderPass; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class Sampler + { + public: + using CType = VkSampler; + using NativeType = VkSampler; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eSampler; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSampler; + + public: + VULKAN_HPP_CONSTEXPR Sampler() = default; + VULKAN_HPP_CONSTEXPR Sampler( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT Sampler( VkSampler sampler ) VULKAN_HPP_NOEXCEPT : m_sampler( sampler ) {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + Sampler & operator=( VkSampler sampler ) VULKAN_HPP_NOEXCEPT + { + m_sampler = sampler; + return *this; + } +#endif + + Sampler & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_sampler = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Sampler const & ) const = default; +#else + bool operator==( Sampler const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_sampler == rhs.m_sampler; + } + + bool operator!=( Sampler const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_sampler != rhs.m_sampler; + } + + bool operator<( Sampler const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_sampler < rhs.m_sampler; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSampler() const VULKAN_HPP_NOEXCEPT + { + return m_sampler; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_sampler != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_sampler == VK_NULL_HANDLE; + } + + private: + VkSampler m_sampler = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Sampler ) == sizeof( VkSampler ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Sampler is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::Sampler; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Sampler; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Sampler; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class SamplerYcbcrConversion + { + public: + using CType = VkSamplerYcbcrConversion; + using NativeType = VkSamplerYcbcrConversion; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eSamplerYcbcrConversion; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSamplerYcbcrConversion; + + public: + VULKAN_HPP_CONSTEXPR SamplerYcbcrConversion() = default; + VULKAN_HPP_CONSTEXPR SamplerYcbcrConversion( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT + SamplerYcbcrConversion( VkSamplerYcbcrConversion samplerYcbcrConversion ) VULKAN_HPP_NOEXCEPT + : m_samplerYcbcrConversion( samplerYcbcrConversion ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + SamplerYcbcrConversion & operator=( VkSamplerYcbcrConversion samplerYcbcrConversion ) VULKAN_HPP_NOEXCEPT + { + m_samplerYcbcrConversion = samplerYcbcrConversion; + return *this; + } +#endif + + SamplerYcbcrConversion & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_samplerYcbcrConversion = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerYcbcrConversion const & ) const = default; +#else + bool operator==( SamplerYcbcrConversion const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_samplerYcbcrConversion == rhs.m_samplerYcbcrConversion; + } + + bool operator!=( SamplerYcbcrConversion const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_samplerYcbcrConversion != rhs.m_samplerYcbcrConversion; + } + + bool operator<( SamplerYcbcrConversion const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_samplerYcbcrConversion < rhs.m_samplerYcbcrConversion; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSamplerYcbcrConversion() const VULKAN_HPP_NOEXCEPT + { + return m_samplerYcbcrConversion; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_samplerYcbcrConversion != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_samplerYcbcrConversion == VK_NULL_HANDLE; + } + + private: + VkSamplerYcbcrConversion m_samplerYcbcrConversion = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ) == + sizeof( VkSamplerYcbcrConversion ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerYcbcrConversion is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + using SamplerYcbcrConversionKHR = SamplerYcbcrConversion; + + class ShaderModule + { + public: + using CType = VkShaderModule; + using NativeType = VkShaderModule; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eShaderModule; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eShaderModule; + + public: + VULKAN_HPP_CONSTEXPR ShaderModule() = default; + VULKAN_HPP_CONSTEXPR ShaderModule( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule( VkShaderModule shaderModule ) VULKAN_HPP_NOEXCEPT + : m_shaderModule( shaderModule ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + ShaderModule & operator=( VkShaderModule shaderModule ) VULKAN_HPP_NOEXCEPT + { + m_shaderModule = shaderModule; + return *this; + } +#endif + + ShaderModule & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_shaderModule = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ShaderModule const & ) const = default; +#else + bool operator==( ShaderModule const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_shaderModule == rhs.m_shaderModule; + } + + bool operator!=( ShaderModule const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_shaderModule != rhs.m_shaderModule; + } + + bool operator<( ShaderModule const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_shaderModule < rhs.m_shaderModule; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderModule() const VULKAN_HPP_NOEXCEPT + { + return m_shaderModule; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_shaderModule != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_shaderModule == VK_NULL_HANDLE; + } + + private: + VkShaderModule m_shaderModule = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderModule ) == sizeof( VkShaderModule ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShaderModule is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::ShaderModule; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::ShaderModule; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::ShaderModule; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class ValidationCacheEXT + { + public: + using CType = VkValidationCacheEXT; + using NativeType = VkValidationCacheEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eValidationCacheEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eValidationCacheEXT; + + public: + VULKAN_HPP_CONSTEXPR ValidationCacheEXT() = default; + VULKAN_HPP_CONSTEXPR ValidationCacheEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT ValidationCacheEXT( VkValidationCacheEXT validationCacheEXT ) VULKAN_HPP_NOEXCEPT + : m_validationCacheEXT( validationCacheEXT ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + ValidationCacheEXT & operator=( VkValidationCacheEXT validationCacheEXT ) VULKAN_HPP_NOEXCEPT + { + m_validationCacheEXT = validationCacheEXT; + return *this; + } +#endif + + ValidationCacheEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_validationCacheEXT = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ValidationCacheEXT const & ) const = default; +#else + bool operator==( ValidationCacheEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_validationCacheEXT == rhs.m_validationCacheEXT; + } + + bool operator!=( ValidationCacheEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_validationCacheEXT != rhs.m_validationCacheEXT; + } + + bool operator<( ValidationCacheEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_validationCacheEXT < rhs.m_validationCacheEXT; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkValidationCacheEXT() const VULKAN_HPP_NOEXCEPT + { + return m_validationCacheEXT; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_validationCacheEXT != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_validationCacheEXT == VK_NULL_HANDLE; + } + + private: + VkValidationCacheEXT m_validationCacheEXT = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ValidationCacheEXT ) == sizeof( VkValidationCacheEXT ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ValidationCacheEXT is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::ValidationCacheEXT; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::ValidationCacheEXT; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::ValidationCacheEXT; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + class VideoSessionParametersKHR + { + public: + using CType = VkVideoSessionParametersKHR; + using NativeType = VkVideoSessionParametersKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eVideoSessionParametersKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + VULKAN_HPP_CONSTEXPR VideoSessionParametersKHR() = default; + VULKAN_HPP_CONSTEXPR VideoSessionParametersKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT + VideoSessionParametersKHR( VkVideoSessionParametersKHR videoSessionParametersKHR ) VULKAN_HPP_NOEXCEPT + : m_videoSessionParametersKHR( videoSessionParametersKHR ) + {} + +# if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + VideoSessionParametersKHR & operator=( VkVideoSessionParametersKHR videoSessionParametersKHR ) VULKAN_HPP_NOEXCEPT + { + m_videoSessionParametersKHR = videoSessionParametersKHR; + return *this; + } +# endif + + VideoSessionParametersKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_videoSessionParametersKHR = {}; + return *this; + } + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoSessionParametersKHR const & ) const = default; +# else + bool operator==( VideoSessionParametersKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionParametersKHR == rhs.m_videoSessionParametersKHR; + } + + bool operator!=( VideoSessionParametersKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionParametersKHR != rhs.m_videoSessionParametersKHR; + } + + bool operator<( VideoSessionParametersKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionParametersKHR < rhs.m_videoSessionParametersKHR; + } +# endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkVideoSessionParametersKHR() const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionParametersKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionParametersKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionParametersKHR == VK_NULL_HANDLE; + } + + private: + VkVideoSessionParametersKHR m_videoSessionParametersKHR = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR ) == + sizeof( VkVideoSessionParametersKHR ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoSessionParametersKHR is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + class Queue + { + public: + using CType = VkQueue; + using NativeType = VkQueue; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eQueue; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eQueue; + + public: + VULKAN_HPP_CONSTEXPR Queue() = default; + VULKAN_HPP_CONSTEXPR Queue( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT Queue( VkQueue queue ) VULKAN_HPP_NOEXCEPT : m_queue( queue ) {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + Queue & operator=( VkQueue queue ) VULKAN_HPP_NOEXCEPT + { + m_queue = queue; + return *this; + } +#endif + + Queue & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_queue = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Queue const & ) const = default; +#else + bool operator==( Queue const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_queue == rhs.m_queue; + } + + bool operator!=( Queue const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_queue != rhs.m_queue; + } + + bool operator<( Queue const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_queue < rhs.m_queue; + } +#endif + + //=== VK_VERSION_1_0 === + + template + VULKAN_HPP_NODISCARD Result + submit( uint32_t submitCount, + const VULKAN_HPP_NAMESPACE::SubmitInfo * pSubmits, + VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + submit( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + waitIdle( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + waitIdle( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + bindSparse( uint32_t bindInfoCount, + const VULKAN_HPP_NAMESPACE::BindSparseInfo * pBindInfo, + VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindSparse( ArrayProxy const & bindInfo, + VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_VERSION_1_3 === + + template + VULKAN_HPP_NODISCARD Result + submit2( uint32_t submitCount, + const VULKAN_HPP_NAMESPACE::SubmitInfo2 * pSubmits, + VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + submit2( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_swapchain === + + template + VULKAN_HPP_NODISCARD Result + presentKHR( const VULKAN_HPP_NAMESPACE::PresentInfoKHR * pPresentInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result presentKHR( const VULKAN_HPP_NAMESPACE::PresentInfoKHR & presentInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_debug_utils === + + template + void + beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pLabelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void + beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void endDebugUtilsLabelEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void + insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pLabelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void + insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_device_diagnostic_checkpoints === + + template + void getCheckpointDataNV( uint32_t * pCheckpointDataCount, + VULKAN_HPP_NAMESPACE::CheckpointDataNV * pCheckpointData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD std::vector + getCheckpointDataNV( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = CheckpointDataNVAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD std::vector + getCheckpointDataNV( CheckpointDataNVAllocator & checkpointDataNVAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_INTEL_performance_query === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result setPerformanceConfigurationINTEL( + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_synchronization2 === + + template + VULKAN_HPP_NODISCARD Result + submit2KHR( uint32_t submitCount, + const VULKAN_HPP_NAMESPACE::SubmitInfo2 * pSubmits, + VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + submit2KHR( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getCheckpointData2NV( uint32_t * pCheckpointDataCount, + VULKAN_HPP_NAMESPACE::CheckpointData2NV * pCheckpointData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD std::vector + getCheckpointData2NV( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = CheckpointData2NVAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD std::vector + getCheckpointData2NV( CheckpointData2NVAllocator & checkpointData2NVAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const VULKAN_HPP_NOEXCEPT + { + return m_queue; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_queue != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_queue == VK_NULL_HANDLE; + } + + private: + VkQueue m_queue = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Queue ) == sizeof( VkQueue ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Queue is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::Queue; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Queue; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Queue; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + +#ifndef VULKAN_HPP_NO_SMART_HANDLE + class Device; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueAccelerationStructureKHR = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueAccelerationStructureNV = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueBuffer = UniqueHandle; +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueBufferCollectionFUCHSIA = UniqueHandle; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueBufferView = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = PoolFree; + }; + using UniqueCommandBuffer = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueCommandPool = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueCuFunctionNVX = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueCuModuleNVX = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueDeferredOperationKHR = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueDescriptorPool = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = PoolFree; + }; + using UniqueDescriptorSet = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueDescriptorSetLayout = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueDescriptorUpdateTemplate = UniqueHandle; + using UniqueDescriptorUpdateTemplateKHR = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectFree; + }; + using UniqueDeviceMemory = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueEvent = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueFence = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueFramebuffer = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueImage = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueImageView = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueIndirectCommandsLayoutNV = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniquePipeline = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniquePipelineCache = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniquePipelineLayout = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniquePrivateDataSlot = UniqueHandle; + using UniquePrivateDataSlotEXT = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueQueryPool = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueRenderPass = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueSampler = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueSamplerYcbcrConversion = UniqueHandle; + using UniqueSamplerYcbcrConversionKHR = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueSemaphore = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueShaderModule = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueSwapchainKHR = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueValidationCacheEXT = UniqueHandle; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueVideoSessionKHR = UniqueHandle; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueVideoSessionParametersKHR = UniqueHandle; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ +#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ + + class Device + { + public: + using CType = VkDevice; + using NativeType = VkDevice; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDevice; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDevice; + + public: + VULKAN_HPP_CONSTEXPR Device() = default; + VULKAN_HPP_CONSTEXPR Device( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT Device( VkDevice device ) VULKAN_HPP_NOEXCEPT : m_device( device ) {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + Device & operator=( VkDevice device ) VULKAN_HPP_NOEXCEPT + { + m_device = device; + return *this; + } +#endif + + Device & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_device = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Device const & ) const = default; +#else + bool operator==( Device const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_device == rhs.m_device; + } + + bool operator!=( Device const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_device != rhs.m_device; + } + + bool operator<( Device const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_device < rhs.m_device; + } +#endif + + //=== VK_VERSION_1_0 === + + template + PFN_vkVoidFunction + getProcAddr( const char * pName, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + PFN_vkVoidFunction + getProcAddr( const std::string & name, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getQueue( uint32_t queueFamilyIndex, + uint32_t queueIndex, + VULKAN_HPP_NAMESPACE::Queue * pQueue, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Queue + getQueue( uint32_t queueFamilyIndex, + uint32_t queueIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + waitIdle( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + waitIdle( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + allocateMemory( const VULKAN_HPP_NAMESPACE::MemoryAllocateInfo * pAllocateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DeviceMemory * pMemory, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + allocateMemory( const VULKAN_HPP_NAMESPACE::MemoryAllocateInfo & allocateInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + allocateMemoryUnique( const VULKAN_HPP_NAMESPACE::MemoryAllocateInfo & allocateInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void freeMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void freeMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void free( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void free( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + mapMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::DeviceSize size, + VULKAN_HPP_NAMESPACE::MemoryMapFlags flags, + void ** ppData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + mapMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::DeviceSize size, + VULKAN_HPP_NAMESPACE::MemoryMapFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void unmapMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD Result + flushMappedMemoryRanges( uint32_t memoryRangeCount, + const VULKAN_HPP_NAMESPACE::MappedMemoryRange * pMemoryRanges, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + flushMappedMemoryRanges( ArrayProxy const & memoryRanges, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result invalidateMappedMemoryRanges( + uint32_t memoryRangeCount, + const VULKAN_HPP_NAMESPACE::MappedMemoryRange * pMemoryRanges, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + invalidateMappedMemoryRanges( ArrayProxy const & memoryRanges, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getMemoryCommitment( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize * pCommittedMemoryInBytes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceSize + getMemoryCommitment( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + bindBufferMemory( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindBufferMemory( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + bindImageMemory( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindImageMemory( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getBufferMemoryRequirements( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::MemoryRequirements * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements getBufferMemoryRequirements( + VULKAN_HPP_NAMESPACE::Buffer buffer, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getImageMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::MemoryRequirements * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements getImageMemoryRequirements( + VULKAN_HPP_NAMESPACE::Image image, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getImageSparseMemoryRequirements( + VULKAN_HPP_NAMESPACE::Image image, + uint32_t * pSparseMemoryRequirementCount, + VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements * pSparseMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = SparseImageMemoryRequirementsAllocator, + typename std::enable_if::value, + int>::type = 0> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, + SparseImageMemoryRequirementsAllocator & sparseImageMemoryRequirementsAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createFence( const VULKAN_HPP_NAMESPACE::FenceCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Fence * pFence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createFence( const VULKAN_HPP_NAMESPACE::FenceCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createFenceUnique( const VULKAN_HPP_NAMESPACE::FenceCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyFence( VULKAN_HPP_NAMESPACE::Fence fence, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyFence( VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::Fence fence, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::Fence fence, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + resetFences( uint32_t fenceCount, + const VULKAN_HPP_NAMESPACE::Fence * pFences, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + resetFences( ArrayProxy const & fences, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + getFenceStatus( VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD Result getFenceStatus( VULKAN_HPP_NAMESPACE::Fence fence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + waitForFences( uint32_t fenceCount, + const VULKAN_HPP_NAMESPACE::Fence * pFences, + VULKAN_HPP_NAMESPACE::Bool32 waitAll, + uint64_t timeout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result waitForFences( ArrayProxy const & fences, + VULKAN_HPP_NAMESPACE::Bool32 waitAll, + uint64_t timeout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Semaphore * pSemaphore, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createSemaphoreUnique( const VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroySemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroySemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::Semaphore semaphore, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::Semaphore semaphore, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createEvent( const VULKAN_HPP_NAMESPACE::EventCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Event * pEvent, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createEvent( const VULKAN_HPP_NAMESPACE::EventCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createEventUnique( const VULKAN_HPP_NAMESPACE::EventCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyEvent( VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyEvent( VULKAN_HPP_NAMESPACE::Event event VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::Event event, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + getEventStatus( VULKAN_HPP_NAMESPACE::Event event, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD Result getEventStatus( VULKAN_HPP_NAMESPACE::Event event, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + setEvent( VULKAN_HPP_NAMESPACE::Event event, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setEvent( VULKAN_HPP_NAMESPACE::Event event, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + resetEvent( VULKAN_HPP_NAMESPACE::Event event, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + typename ResultValueType::type + resetEvent( VULKAN_HPP_NAMESPACE::Event event, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createQueryPool( const VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::QueryPool * pQueryPool, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createQueryPool( const VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createQueryPoolUnique( const VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + getQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + size_t dataSize, + void * pData, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + getQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + ArrayProxy const & data, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD ResultValue> + getQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + size_t dataSize, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD ResultValue + getQueryPoolResult( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createBuffer( const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Buffer * pBuffer, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createBuffer( const VULKAN_HPP_NAMESPACE::BufferCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createBufferUnique( const VULKAN_HPP_NAMESPACE::BufferCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::Buffer buffer, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::Buffer buffer, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createBufferView( const VULKAN_HPP_NAMESPACE::BufferViewCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::BufferView * pView, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createBufferView( const VULKAN_HPP_NAMESPACE::BufferViewCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createBufferViewUnique( const VULKAN_HPP_NAMESPACE::BufferViewCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyBufferView( VULKAN_HPP_NAMESPACE::BufferView bufferView, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyBufferView( VULKAN_HPP_NAMESPACE::BufferView bufferView VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::BufferView bufferView, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::BufferView bufferView, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createImage( const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Image * pImage, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createImage( const VULKAN_HPP_NAMESPACE::ImageCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createImageUnique( const VULKAN_HPP_NAMESPACE::ImageCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyImage( VULKAN_HPP_NAMESPACE::Image image, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyImage( VULKAN_HPP_NAMESPACE::Image image VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::Image image, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::Image image, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getImageSubresourceLayout( VULKAN_HPP_NAMESPACE::Image image, + const VULKAN_HPP_NAMESPACE::ImageSubresource * pSubresource, + VULKAN_HPP_NAMESPACE::SubresourceLayout * pLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SubresourceLayout getImageSubresourceLayout( + VULKAN_HPP_NAMESPACE::Image image, + const VULKAN_HPP_NAMESPACE::ImageSubresource & subresource, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createImageView( const VULKAN_HPP_NAMESPACE::ImageViewCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::ImageView * pView, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createImageView( const VULKAN_HPP_NAMESPACE::ImageViewCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createImageViewUnique( const VULKAN_HPP_NAMESPACE::ImageViewCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyImageView( VULKAN_HPP_NAMESPACE::ImageView imageView, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyImageView( VULKAN_HPP_NAMESPACE::ImageView imageView VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::ImageView imageView, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::ImageView imageView, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createShaderModule( const VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::ShaderModule * pShaderModule, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createShaderModule( const VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createShaderModuleUnique( const VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyShaderModule( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyShaderModule( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createPipelineCache( const VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::PipelineCache * pPipelineCache, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createPipelineCache( const VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createPipelineCacheUnique( const VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyPipelineCache( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyPipelineCache( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + getPipelineCacheData( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + size_t * pDataSize, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getPipelineCacheData( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = Uint8_tAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getPipelineCacheData( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + Uint8_tAllocator & uint8_tAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + mergePipelineCaches( VULKAN_HPP_NAMESPACE::PipelineCache dstCache, + uint32_t srcCacheCount, + const VULKAN_HPP_NAMESPACE::PipelineCache * pSrcCaches, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + mergePipelineCaches( VULKAN_HPP_NAMESPACE::PipelineCache dstCache, + ArrayProxy const & srcCaches, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createGraphicsPipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + uint32_t createInfoCount, + const VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo * pCreateInfos, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Pipeline * pPipelines, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD ResultValue> + createGraphicsPipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PipelineAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD ResultValue> + createGraphicsPipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD ResultValue + createGraphicsPipeline( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template >> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createGraphicsPipelinesUnique( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template >, + typename B = PipelineAllocator, + typename std::enable_if>::value, + int>::type = 0> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createGraphicsPipelinesUnique( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD ResultValue> + createGraphicsPipelineUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createComputePipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + uint32_t createInfoCount, + const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo * pCreateInfos, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Pipeline * pPipelines, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD ResultValue> + createComputePipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PipelineAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD ResultValue> + createComputePipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD ResultValue + createComputePipeline( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template >> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createComputePipelinesUnique( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template >, + typename B = PipelineAllocator, + typename std::enable_if>::value, + int>::type = 0> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createComputePipelinesUnique( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD ResultValue> + createComputePipelineUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createPipelineLayout( const VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::PipelineLayout * pPipelineLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createPipelineLayout( const VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createPipelineLayoutUnique( const VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void + destroyPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createSampler( const VULKAN_HPP_NAMESPACE::SamplerCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Sampler * pSampler, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createSampler( const VULKAN_HPP_NAMESPACE::SamplerCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createSamplerUnique( const VULKAN_HPP_NAMESPACE::SamplerCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroySampler( VULKAN_HPP_NAMESPACE::Sampler sampler, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroySampler( VULKAN_HPP_NAMESPACE::Sampler sampler VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::Sampler sampler, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::Sampler sampler, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result createDescriptorSetLayout( + const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createDescriptorSetLayout( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createDescriptorSetLayoutUnique( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyDescriptorSetLayout( + VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createDescriptorPool( const VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DescriptorPool * pDescriptorPool, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createDescriptorPool( const VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createDescriptorPoolUnique( const VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void + destroyDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + Result resetDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + typename ResultValueType::type + resetDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + allocateDescriptorSets( const VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo * pAllocateInfo, + VULKAN_HPP_NAMESPACE::DescriptorSet * pDescriptorSets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType>::type + allocateDescriptorSets( const VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo & allocateInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = DescriptorSetAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType>::type + allocateDescriptorSets( const VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo & allocateInfo, + DescriptorSetAllocator & descriptorSetAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template >> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType, DescriptorSetAllocator>>::type + allocateDescriptorSetsUnique( const VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo & allocateInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename DescriptorSetAllocator = std::allocator>, + typename B = DescriptorSetAllocator, + typename std::enable_if>::value, + int>::type = 0> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType, DescriptorSetAllocator>>::type + allocateDescriptorSetsUnique( const VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo & allocateInfo, + DescriptorSetAllocator & descriptorSetAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + Result freeDescriptorSets( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + uint32_t descriptorSetCount, + const VULKAN_HPP_NAMESPACE::DescriptorSet * pDescriptorSets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + freeDescriptorSets( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + ArrayProxy const & descriptorSets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + Result free( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + uint32_t descriptorSetCount, + const VULKAN_HPP_NAMESPACE::DescriptorSet * pDescriptorSets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + free( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, + ArrayProxy const & descriptorSets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void updateDescriptorSets( uint32_t descriptorWriteCount, + const VULKAN_HPP_NAMESPACE::WriteDescriptorSet * pDescriptorWrites, + uint32_t descriptorCopyCount, + const VULKAN_HPP_NAMESPACE::CopyDescriptorSet * pDescriptorCopies, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void updateDescriptorSets( ArrayProxy const & descriptorWrites, + ArrayProxy const & descriptorCopies, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createFramebuffer( const VULKAN_HPP_NAMESPACE::FramebufferCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Framebuffer * pFramebuffer, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createFramebuffer( const VULKAN_HPP_NAMESPACE::FramebufferCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createFramebufferUnique( const VULKAN_HPP_NAMESPACE::FramebufferCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::RenderPass * pRenderPass, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createRenderPassUnique( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::RenderPass renderPass, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::RenderPass renderPass, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void + getRenderAreaGranularity( VULKAN_HPP_NAMESPACE::RenderPass renderPass, + VULKAN_HPP_NAMESPACE::Extent2D * pGranularity, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Extent2D + getRenderAreaGranularity( VULKAN_HPP_NAMESPACE::RenderPass renderPass, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createCommandPool( const VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::CommandPool * pCommandPool, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createCommandPool( const VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createCommandPoolUnique( const VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + resetCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + typename ResultValueType::type + resetCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + allocateCommandBuffers( const VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo * pAllocateInfo, + VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType>::type + allocateCommandBuffers( const VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo & allocateInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = CommandBufferAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType>::type + allocateCommandBuffers( const VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo & allocateInfo, + CommandBufferAllocator & commandBufferAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template >> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType, CommandBufferAllocator>>::type + allocateCommandBuffersUnique( const VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo & allocateInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename CommandBufferAllocator = std::allocator>, + typename B = CommandBufferAllocator, + typename std::enable_if>::value, + int>::type = 0> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType, CommandBufferAllocator>>::type + allocateCommandBuffersUnique( const VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo & allocateInfo, + CommandBufferAllocator & commandBufferAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void freeCommandBuffers( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + uint32_t commandBufferCount, + const VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void freeCommandBuffers( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + ArrayProxy const & commandBuffers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void free( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + uint32_t commandBufferCount, + const VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void free( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + ArrayProxy const & commandBuffers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_VERSION_1_1 === + + template + VULKAN_HPP_NODISCARD Result + bindBufferMemory2( uint32_t bindInfoCount, + const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo * pBindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindBufferMemory2( ArrayProxy const & bindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + bindImageMemory2( uint32_t bindInfoCount, + const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo * pBindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindImageMemory2( ArrayProxy const & bindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getGroupPeerMemoryFeatures( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags * pPeerMemoryFeatures, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags getGroupPeerMemoryFeatures( + uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getImageMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getImageMemoryRequirements2( + const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain getImageMemoryRequirements2( + const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getBufferMemoryRequirements2( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getBufferMemoryRequirements2( + const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain getBufferMemoryRequirements2( + const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getImageSparseMemoryRequirements2( + const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = SparseImageMemoryRequirements2Allocator, + typename std::enable_if::value, + int>::type = 0> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements2( + const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info, + SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void trimCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void getQueue2( const VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 * pQueueInfo, + VULKAN_HPP_NAMESPACE::Queue * pQueue, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Queue + getQueue2( const VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 & queueInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result createSamplerYcbcrConversion( + const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion * pYcbcrConversion, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createSamplerYcbcrConversion( const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createSamplerYcbcrConversionUnique( const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroySamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroySamplerYcbcrConversion( + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result createDescriptorUpdateTemplate( + const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate * pDescriptorUpdateTemplate, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + createDescriptorUpdateTemplate( const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createDescriptorUpdateTemplateUnique( const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyDescriptorUpdateTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyDescriptorUpdateTemplate( + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void updateDescriptorSetWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorSet descriptorSet, + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + const void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void updateDescriptorSetWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorSet descriptorSet, + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + DataType const & data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getDescriptorSetLayoutSupport( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo * pCreateInfo, + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport * pSupport, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport getDescriptorSetLayoutSupport( + const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain getDescriptorSetLayoutSupport( + const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_VERSION_1_2 === + + template + VULKAN_HPP_NODISCARD Result + createRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::RenderPass * pRenderPass, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createRenderPass2Unique( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD Result + getSemaphoreCounterValue( VULKAN_HPP_NAMESPACE::Semaphore semaphore, + uint64_t * pValue, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getSemaphoreCounterValue( VULKAN_HPP_NAMESPACE::Semaphore semaphore, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + waitSemaphores( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo * pWaitInfo, + uint64_t timeout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result waitSemaphores( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo, + uint64_t timeout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + signalSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo * pSignalInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + signalSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + DeviceAddress + getBufferAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + DeviceAddress + getBufferAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + uint64_t getBufferOpaqueCaptureAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + uint64_t getBufferOpaqueCaptureAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + uint64_t getMemoryOpaqueCaptureAddress( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + uint64_t getMemoryOpaqueCaptureAddress( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_VERSION_1_3 === + + template + VULKAN_HPP_NODISCARD Result + createPrivateDataSlot( const VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::PrivateDataSlot * pPrivateDataSlot, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + createPrivateDataSlot( const VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + createPrivateDataSlotUnique( const VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void + destroyPrivateDataSlot( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyPrivateDataSlot( + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + setPrivateData( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + typename ResultValueType::type + setPrivateData( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getPrivateData( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD uint64_t + getPrivateData( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getBufferMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getBufferMemoryRequirements( + const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain getBufferMemoryRequirements( + const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getImageMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getImageMemoryRequirements( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain getImageMemoryRequirements( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getImageSparseMemoryRequirements( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = SparseImageMemoryRequirements2Allocator, + typename std::enable_if::value, + int>::type = 0> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_swapchain === + + template + VULKAN_HPP_NODISCARD Result + createSwapchainKHR( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchain, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createSwapchainKHR( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createSwapchainKHRUnique( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroySwapchainKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroySwapchainKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + getSwapchainImagesKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + uint32_t * pSwapchainImageCount, + VULKAN_HPP_NAMESPACE::Image * pSwapchainImages, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSwapchainImagesKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = ImageAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSwapchainImagesKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + ImageAllocator & imageAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + acquireNextImageKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + uint64_t timeout, + VULKAN_HPP_NAMESPACE::Semaphore semaphore, + VULKAN_HPP_NAMESPACE::Fence fence, + uint32_t * pImageIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD ResultValue + acquireNextImageKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + uint64_t timeout, + VULKAN_HPP_NAMESPACE::Semaphore semaphore VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getGroupPresentCapabilitiesKHR( + VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + getGroupPresentCapabilitiesKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getGroupSurfacePresentModesKHR( + VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR * pModes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + acquireNextImage2KHR( const VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR * pAcquireInfo, + uint32_t * pImageIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD ResultValue + acquireNextImage2KHR( const VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR & acquireInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_display_swapchain === + + template + VULKAN_HPP_NODISCARD Result createSharedSwapchainsKHR( + uint32_t swapchainCount, + const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR * pCreateInfos, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType>::type + createSharedSwapchainsKHR( ArrayProxy const & createInfos, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = SwapchainKHRAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType>::type + createSharedSwapchainsKHR( ArrayProxy const & createInfos, + Optional allocator, + SwapchainKHRAllocator & swapchainKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createSharedSwapchainKHR( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template >> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType, SwapchainKHRAllocator>>::type + createSharedSwapchainsKHRUnique( + ArrayProxy const & createInfos, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template >, + typename B = SwapchainKHRAllocator, + typename std::enable_if>::value, + int>::type = 0> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType, SwapchainKHRAllocator>>::type + createSharedSwapchainsKHRUnique( + ArrayProxy const & createInfos, + Optional allocator, + SwapchainKHRAllocator & swapchainKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type + createSharedSwapchainKHRUnique( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_debug_marker === + + template + VULKAN_HPP_NODISCARD Result debugMarkerSetObjectTagEXT( + const VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT * pTagInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + debugMarkerSetObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT & tagInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result debugMarkerSetObjectNameEXT( + const VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT * pNameInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + debugMarkerSetObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT & nameInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + + template + VULKAN_HPP_NODISCARD Result + createVideoSessionKHR( const VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::VideoSessionKHR * pVideoSession, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createVideoSessionKHR( const VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createVideoSessionKHRUnique( const VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void + destroyVideoSessionKHR( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void + destroyVideoSessionKHR( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getVideoSessionMemoryRequirementsKHR( + VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + uint32_t * pVideoSessionMemoryRequirementsCount, + VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR * pVideoSessionMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getVideoSessionMemoryRequirementsKHR( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename VideoGetMemoryPropertiesKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = VideoGetMemoryPropertiesKHRAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getVideoSessionMemoryRequirementsKHR( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + VideoGetMemoryPropertiesKHRAllocator & videoGetMemoryPropertiesKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result bindVideoSessionMemoryKHR( + VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + uint32_t videoSessionBindMemoryCount, + const VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR * pVideoSessionBindMemories, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type bindVideoSessionMemoryKHR( + VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession, + ArrayProxy const & videoSessionBindMemories, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result createVideoSessionParametersKHR( + const VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR * pVideoSessionParameters, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + createVideoSessionParametersKHR( const VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createVideoSessionParametersKHRUnique( + const VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result updateVideoSessionParametersKHR( + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters, + const VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR * pUpdateInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + updateVideoSessionParametersKHR( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters, + const VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR & updateInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyVideoSessionParametersKHR( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyVideoSessionParametersKHR( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NVX_binary_import === + + template + VULKAN_HPP_NODISCARD Result + createCuModuleNVX( const VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::CuModuleNVX * pModule, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createCuModuleNVX( const VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createCuModuleNVXUnique( const VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createCuFunctionNVX( const VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::CuFunctionNVX * pFunction, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createCuFunctionNVX( const VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createCuFunctionNVXUnique( const VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyCuModuleNVX( VULKAN_HPP_NAMESPACE::CuModuleNVX module, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyCuModuleNVX( VULKAN_HPP_NAMESPACE::CuModuleNVX module, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::CuModuleNVX module, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::CuModuleNVX module, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyCuFunctionNVX( VULKAN_HPP_NAMESPACE::CuFunctionNVX function, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyCuFunctionNVX( VULKAN_HPP_NAMESPACE::CuFunctionNVX function, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::CuFunctionNVX function, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::CuFunctionNVX function, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NVX_image_view_handle === + + template + uint32_t + getImageViewHandleNVX( const VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + uint32_t + getImageViewHandleNVX( const VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + getImageViewAddressNVX( VULKAN_HPP_NAMESPACE::ImageView imageView, + VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + getImageViewAddressNVX( VULKAN_HPP_NAMESPACE::ImageView imageView, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_AMD_shader_info === + + template + VULKAN_HPP_NODISCARD Result + getShaderInfoAMD( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage, + VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType, + size_t * pInfoSize, + void * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getShaderInfoAMD( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage, + VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = Uint8_tAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getShaderInfoAMD( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage, + VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType, + Uint8_tAllocator & uint8_tAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + + template + VULKAN_HPP_NODISCARD Result + getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType, + HANDLE * pHandle, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_device_group === + + template + void getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags * pPeerMemoryFeatures, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags getGroupPeerMemoryFeaturesKHR( + uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_maintenance1 === + + template + void trimCommandPoolKHR( VULKAN_HPP_NAMESPACE::CommandPool commandPool, + VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + + template + VULKAN_HPP_NODISCARD Result + getMemoryWin32HandleKHR( const VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo, + HANDLE * pHandle, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getMemoryWin32HandleKHR( const VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR & getWin32HandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getMemoryWin32HandlePropertiesKHR( + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + HANDLE handle, + VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + getMemoryWin32HandlePropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + HANDLE handle, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + + template + VULKAN_HPP_NODISCARD Result + getMemoryFdKHR( const VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR * pGetFdInfo, + int * pFd, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getMemoryFdKHR( const VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR & getFdInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + int fd, + VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR * pMemoryFdProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + int fd, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + + template + VULKAN_HPP_NODISCARD Result importSemaphoreWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type importSemaphoreWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getSemaphoreWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo, + HANDLE * pHandle, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getSemaphoreWin32HandleKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + + template + VULKAN_HPP_NODISCARD Result + importSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + importSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + getSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR * pGetFdInfo, + int * pFd, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR & getFdInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_descriptor_update_template === + + template + VULKAN_HPP_NODISCARD Result createDescriptorUpdateTemplateKHR( + const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate * pDescriptorUpdateTemplate, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + createDescriptorUpdateTemplateKHR( const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createDescriptorUpdateTemplateKHRUnique( + const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyDescriptorUpdateTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyDescriptorUpdateTemplateKHR( + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void updateDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorSet descriptorSet, + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + const void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void updateDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorSet descriptorSet, + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + DataType const & data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_display_control === + + template + VULKAN_HPP_NODISCARD Result + displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT * pDisplayPowerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT & displayPowerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + registerEventEXT( const VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT * pDeviceEventInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Fence * pFence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + registerEventEXT( const VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT & deviceEventInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + registerEventEXTUnique( const VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT & deviceEventInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + registerDisplayEventEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT * pDisplayEventInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Fence * pFence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + registerDisplayEventEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT & displayEventInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + registerDisplayEventEXTUnique( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT & displayEventInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + getSwapchainCounterEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter, + uint64_t * pCounterValue, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getSwapchainCounterEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_GOOGLE_display_timing === + + template + VULKAN_HPP_NODISCARD Result getRefreshCycleDurationGOOGLE( + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE * pDisplayTimingProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + getRefreshCycleDurationGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getPastPresentationTimingGOOGLE( + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + uint32_t * pPresentationTimingCount, + VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE * pPresentationTimings, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getPastPresentationTimingGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename PastPresentationTimingGOOGLEAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PastPresentationTimingGOOGLEAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getPastPresentationTimingGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + PastPresentationTimingGOOGLEAllocator & pastPresentationTimingGOOGLEAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_hdr_metadata === + + template + void setHdrMetadataEXT( uint32_t swapchainCount, + const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains, + const VULKAN_HPP_NAMESPACE::HdrMetadataEXT * pMetadata, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void setHdrMetadataEXT( ArrayProxy const & swapchains, + ArrayProxy const & metadata, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_create_renderpass2 === + + template + VULKAN_HPP_NODISCARD Result + createRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::RenderPass * pRenderPass, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createRenderPass2KHRUnique( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_shared_presentable_image === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + getSwapchainStatusKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD Result getSwapchainStatusKHR( + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + + template + VULKAN_HPP_NODISCARD Result importFenceWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + importFenceWin32HandleKHR( const VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + getFenceWin32HandleKHR( const VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR * pGetWin32HandleInfo, + HANDLE * pHandle, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getFenceWin32HandleKHR( const VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR & getWin32HandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + + template + VULKAN_HPP_NODISCARD Result + importFenceFdKHR( const VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR * pImportFenceFdInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + importFenceFdKHR( const VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR & importFenceFdInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + getFenceFdKHR( const VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR * pGetFdInfo, + int * pFd, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getFenceFdKHR( const VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR & getFdInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_performance_query === + + template + VULKAN_HPP_NODISCARD Result + acquireProfilingLockKHR( const VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + acquireProfilingLockKHR( const VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void + releaseProfilingLockKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_debug_utils === + + template + VULKAN_HPP_NODISCARD Result setDebugUtilsObjectNameEXT( + const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT * pNameInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setDebugUtilsObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT & nameInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result setDebugUtilsObjectTagEXT( + const VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT * pTagInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setDebugUtilsObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT & tagInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + + template + VULKAN_HPP_NODISCARD Result getAndroidHardwareBufferPropertiesANDROID( + const struct AHardwareBuffer * buffer, + VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type + getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getMemoryAndroidHardwareBufferANDROID( + const VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID * pInfo, + struct AHardwareBuffer ** pBuffer, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getMemoryAndroidHardwareBufferANDROID( + const VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + //=== VK_KHR_get_memory_requirements2 === + + template + void getImageMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getImageMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain getImageMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getBufferMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getBufferMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain getBufferMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getImageSparseMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = SparseImageMemoryRequirements2Allocator, + typename std::enable_if::value, + int>::type = 0> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info, + SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_acceleration_structure === + + template + VULKAN_HPP_NODISCARD Result createAccelerationStructureKHR( + const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructure, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + createAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createAccelerationStructureKHRUnique( const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyAccelerationStructureKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result buildAccelerationStructuresKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + uint32_t infoCount, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR * pInfos, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + Result buildAccelerationStructuresKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + ArrayProxy const & infos, + ArrayProxy const & pBuildRangeInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result copyAccelerationStructureKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result copyAccelerationStructureToMemoryKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + copyAccelerationStructureToMemoryKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result copyMemoryToAccelerationStructureKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + copyMemoryToAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result writeAccelerationStructuresPropertiesKHR( + uint32_t accelerationStructureCount, + const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + size_t dataSize, + void * pData, + size_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + writeAccelerationStructuresPropertiesKHR( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + ArrayProxy const & data, + size_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type + writeAccelerationStructuresPropertiesKHR( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + size_t dataSize, + size_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + writeAccelerationStructuresPropertyKHR( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + size_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + DeviceAddress getAccelerationStructureAddressKHR( + const VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + DeviceAddress getAccelerationStructureAddressKHR( + const VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getAccelerationStructureCompatibilityKHR( + const VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR * pVersionInfo, + VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR * pCompatibility, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR + getAccelerationStructureCompatibilityKHR( + const VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR & versionInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getAccelerationStructureBuildSizesKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR * pBuildInfo, + const uint32_t * pMaxPrimitiveCounts, + VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR * pSizeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR + getAccelerationStructureBuildSizesKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR & buildInfo, + ArrayProxy const & maxPrimitiveCounts VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_sampler_ycbcr_conversion === + + template + VULKAN_HPP_NODISCARD Result createSamplerYcbcrConversionKHR( + const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion * pYcbcrConversion, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createSamplerYcbcrConversionKHR( const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createSamplerYcbcrConversionKHRUnique( const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroySamplerYcbcrConversionKHR( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroySamplerYcbcrConversionKHR( + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_bind_memory2 === + + template + VULKAN_HPP_NODISCARD Result + bindBufferMemory2KHR( uint32_t bindInfoCount, + const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo * pBindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindBufferMemory2KHR( ArrayProxy const & bindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + bindImageMemory2KHR( uint32_t bindInfoCount, + const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo * pBindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindImageMemory2KHR( ArrayProxy const & bindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_image_drm_format_modifier === + + template + VULKAN_HPP_NODISCARD Result getImageDrmFormatModifierPropertiesEXT( + VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + getImageDrmFormatModifierPropertiesEXT( VULKAN_HPP_NAMESPACE::Image image, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_validation_cache === + + template + VULKAN_HPP_NODISCARD Result + createValidationCacheEXT( const VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::ValidationCacheEXT * pValidationCache, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + createValidationCacheEXT( const VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + createValidationCacheEXTUnique( const VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyValidationCacheEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyValidationCacheEXT( + VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + mergeValidationCachesEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT dstCache, + uint32_t srcCacheCount, + const VULKAN_HPP_NAMESPACE::ValidationCacheEXT * pSrcCaches, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + mergeValidationCachesEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT dstCache, + ArrayProxy const & srcCaches, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getValidationCacheDataEXT( + VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, + size_t * pDataSize, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getValidationCacheDataEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = Uint8_tAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getValidationCacheDataEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, + Uint8_tAllocator & uint8_tAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_ray_tracing === + + template + VULKAN_HPP_NODISCARD Result createAccelerationStructureNV( + const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructure, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + createAccelerationStructureNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE + typename ResultValueType>::type + createAccelerationStructureNVUnique( const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyAccelerationStructureNV( + VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getAccelerationStructureMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR getAccelerationStructureMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain getAccelerationStructureMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result bindAccelerationStructureMemoryNV( + uint32_t bindInfoCount, + const VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV * pBindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type bindAccelerationStructureMemoryNV( + ArrayProxy const & bindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result createRayTracingPipelinesNV( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + uint32_t createInfoCount, + const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV * pCreateInfos, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Pipeline * pPipelines, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD ResultValue> + createRayTracingPipelinesNV( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PipelineAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD ResultValue> + createRayTracingPipelinesNV( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD ResultValue + createRayTracingPipelineNV( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template >> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createRayTracingPipelinesNVUnique( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template >, + typename B = PipelineAllocator, + typename std::enable_if>::value, + int>::type = 0> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createRayTracingPipelinesNVUnique( + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD ResultValue> + createRayTracingPipelineNVUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getRayTracingShaderGroupHandlesNV( + VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getRayTracingShaderGroupHandlesNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + ArrayProxy const & data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type + getRayTracingShaderGroupHandlesNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getRayTracingShaderGroupHandleNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getAccelerationStructureHandleNV( + VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, + size_t dataSize, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getAccelerationStructureHandleNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, + ArrayProxy const & data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type + getAccelerationStructureHandleNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, + size_t dataSize, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getAccelerationStructureHandleNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + compileDeferredNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t shader, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + compileDeferredNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t shader, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_maintenance3 === + + template + void getDescriptorSetLayoutSupportKHR( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo * pCreateInfo, + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport * pSupport, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport getDescriptorSetLayoutSupportKHR( + const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain getDescriptorSetLayoutSupportKHR( + const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_external_memory_host === + + template + VULKAN_HPP_NODISCARD Result getMemoryHostPointerPropertiesEXT( + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + const void * pHostPointer, + VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + getMemoryHostPointerPropertiesEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + const void * pHostPointer, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_calibrated_timestamps === + + template + VULKAN_HPP_NODISCARD Result getCalibratedTimestampsEXT( + uint32_t timestampCount, + const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT * pTimestampInfos, + uint64_t * pTimestamps, + uint64_t * pMaxDeviation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType, uint64_t>>::type + getCalibratedTimestampsEXT( + ArrayProxy const & timestampInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = Uint64_tAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType, uint64_t>>::type + getCalibratedTimestampsEXT( + ArrayProxy const & timestampInfos, + Uint64_tAllocator & uint64_tAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type + getCalibratedTimestampEXT( const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT & timestampInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_timeline_semaphore === + + template + VULKAN_HPP_NODISCARD Result getSemaphoreCounterValueKHR( + VULKAN_HPP_NAMESPACE::Semaphore semaphore, + uint64_t * pValue, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getSemaphoreCounterValueKHR( VULKAN_HPP_NAMESPACE::Semaphore semaphore, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + waitSemaphoresKHR( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo * pWaitInfo, + uint64_t timeout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result waitSemaphoresKHR( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo, + uint64_t timeout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + signalSemaphoreKHR( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo * pSignalInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + signalSemaphoreKHR( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_INTEL_performance_query === + + template + VULKAN_HPP_NODISCARD Result initializePerformanceApiINTEL( + const VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL * pInitializeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + initializePerformanceApiINTEL( const VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL & initializeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void uninitializePerformanceApiINTEL( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD Result acquirePerformanceConfigurationINTEL( + const VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL * pAcquireInfo, + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL * pConfiguration, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + acquirePerformanceConfigurationINTEL( + const VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL & acquireInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + acquirePerformanceConfigurationINTELUnique( + const VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL & acquireInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result releasePerformanceConfigurationINTEL( + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type releasePerformanceConfigurationINTEL( + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + release( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + release( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getPerformanceParameterINTEL( + VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter, + VULKAN_HPP_NAMESPACE::PerformanceValueINTEL * pValue, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getPerformanceParameterINTEL( VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_AMD_display_native_hdr === + + template + void setLocalDimmingAMD( VULKAN_HPP_NAMESPACE::SwapchainKHR swapChain, + VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_buffer_device_address === + + template + DeviceAddress + getBufferAddressEXT( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + DeviceAddress + getBufferAddressEXT( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_present_wait === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + waitForPresentKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + uint64_t presentId, + uint64_t timeout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD Result waitForPresentKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + uint64_t presentId, + uint64_t timeout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + +# ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result acquireFullScreenExclusiveModeEXT( + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + acquireFullScreenExclusiveModeEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +# ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result releaseFullScreenExclusiveModeEXT( + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + releaseFullScreenExclusiveModeEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getGroupSurfacePresentModes2EXT( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo, + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR * pModes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + getGroupSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_buffer_device_address === + + template + DeviceAddress + getBufferAddressKHR( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + DeviceAddress + getBufferAddressKHR( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + uint64_t getBufferOpaqueCaptureAddressKHR( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + uint64_t getBufferOpaqueCaptureAddressKHR( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + uint64_t getMemoryOpaqueCaptureAddressKHR( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + uint64_t getMemoryOpaqueCaptureAddressKHR( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_host_query_reset === + + template + void resetQueryPoolEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_deferred_host_operations === + + template + VULKAN_HPP_NODISCARD Result createDeferredOperationKHR( + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DeferredOperationKHR * pDeferredOperation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + createDeferredOperationKHR( Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + createDeferredOperationKHRUnique( Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyDeferredOperationKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyDeferredOperationKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + uint32_t getDeferredOperationMaxConcurrencyKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result getDeferredOperationResultKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD Result + getDeferredOperationResultKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + deferredOperationJoinKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + VULKAN_HPP_NODISCARD Result + deferredOperationJoinKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_pipeline_executable_properties === + + template + VULKAN_HPP_NODISCARD Result getPipelineExecutablePropertiesKHR( + const VULKAN_HPP_NAMESPACE::PipelineInfoKHR * pPipelineInfo, + uint32_t * pExecutableCount, + VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType< + std::vector>::type + getPipelineExecutablePropertiesKHR( const VULKAN_HPP_NAMESPACE::PipelineInfoKHR & pipelineInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PipelineExecutablePropertiesKHRAllocator, + typename std::enable_if::value, + int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType< + std::vector>::type + getPipelineExecutablePropertiesKHR( + const VULKAN_HPP_NAMESPACE::PipelineInfoKHR & pipelineInfo, + PipelineExecutablePropertiesKHRAllocator & pipelineExecutablePropertiesKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getPipelineExecutableStatisticsKHR( + const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR * pExecutableInfo, + uint32_t * pStatisticCount, + VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR * pStatistics, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType< + std::vector>::type + getPipelineExecutableStatisticsKHR( const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PipelineExecutableStatisticKHRAllocator, + typename std::enable_if::value, + int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType< + std::vector>::type + getPipelineExecutableStatisticsKHR( + const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo, + PipelineExecutableStatisticKHRAllocator & pipelineExecutableStatisticKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getPipelineExecutableInternalRepresentationsKHR( + const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR * pExecutableInfo, + uint32_t * pInternalRepresentationCount, + VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR * pInternalRepresentations, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getPipelineExecutableInternalRepresentationsKHR( + const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename PipelineExecutableInternalRepresentationKHRAllocator = + std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PipelineExecutableInternalRepresentationKHRAllocator, + typename std::enable_if::value, + int>::type = 0> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getPipelineExecutableInternalRepresentationsKHR( + const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo, + PipelineExecutableInternalRepresentationKHRAllocator & pipelineExecutableInternalRepresentationKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_device_generated_commands === + + template + void getGeneratedCommandsMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getGeneratedCommandsMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain getGeneratedCommandsMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result createIndirectCommandsLayoutNV( + const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV * pIndirectCommandsLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + createIndirectCommandsLayoutNV( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createIndirectCommandsLayoutNVUnique( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyIndirectCommandsLayoutNV( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyIndirectCommandsLayoutNV( + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_private_data === + + template + VULKAN_HPP_NODISCARD Result + createPrivateDataSlotEXT( const VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::PrivateDataSlot * pPrivateDataSlot, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + createPrivateDataSlotEXT( const VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + createPrivateDataSlotEXTUnique( const VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyPrivateDataSlotEXT( + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + typename ResultValueType::type + setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD uint64_t + getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_ray_tracing_pipeline === + + template + VULKAN_HPP_NODISCARD Result createRayTracingPipelinesKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + uint32_t createInfoCount, + const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR * pCreateInfos, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Pipeline * pPipelines, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD ResultValue> + createRayTracingPipelinesKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PipelineAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD ResultValue> + createRayTracingPipelinesKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD ResultValue + createRayTracingPipelineKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template >> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createRayTracingPipelinesKHRUnique( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template >, + typename B = PipelineAllocator, + typename std::enable_if>::value, + int>::type = 0> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createRayTracingPipelinesKHRUnique( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD ResultValue> + createRayTracingPipelineKHRUnique( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, + const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getRayTracingShaderGroupHandlesKHR( + VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getRayTracingShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + ArrayProxy const & data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type + getRayTracingShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getRayTracingShaderGroupHandleKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getRayTracingCaptureReplayShaderGroupHandlesKHR( + VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getRayTracingCaptureReplayShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + ArrayProxy const & data, + Dispatch const & d + VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type + getRayTracingCaptureReplayShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + Dispatch const & d + VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getRayTracingCaptureReplayShaderGroupHandleKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + Dispatch const & d + VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + DeviceSize getRayTracingShaderGroupStackSizeKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t group, + VULKAN_HPP_NAMESPACE::ShaderGroupShaderKHR groupShader, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + + template + VULKAN_HPP_NODISCARD Result getMemoryZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo, + zx_handle_t * pZirconHandle, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getMemoryZirconHandleFUCHSIA( const VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA & getZirconHandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getMemoryZirconHandlePropertiesFUCHSIA( + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + zx_handle_t zirconHandle, + VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA * pMemoryZirconHandleProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + getMemoryZirconHandlePropertiesFUCHSIA( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + zx_handle_t zirconHandle, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + + template + VULKAN_HPP_NODISCARD Result importSemaphoreZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA * pImportSemaphoreZirconHandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type importSemaphoreZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA & importSemaphoreZirconHandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getSemaphoreZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo, + zx_handle_t * pZirconHandle, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getSemaphoreZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA & getZirconHandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + template + VULKAN_HPP_NODISCARD Result createBufferCollectionFUCHSIA( + const VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA * pCollection, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + createBufferCollectionFUCHSIA( const VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createBufferCollectionFUCHSIAUnique( const VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result setBufferCollectionImageConstraintsFUCHSIA( + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + const VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA * pImageConstraintsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setBufferCollectionImageConstraintsFUCHSIA( + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + const VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA & imageConstraintsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result setBufferCollectionBufferConstraintsFUCHSIA( + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + const VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA * pBufferConstraintsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setBufferCollectionBufferConstraintsFUCHSIA( + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + const VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA & bufferConstraintsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyBufferCollectionFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyBufferCollectionFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getBufferCollectionPropertiesFUCHSIA( + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + getBufferCollectionPropertiesFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + + template + VULKAN_HPP_NODISCARD Result getSubpassShadingMaxWorkgroupSizeHUAWEI( + VULKAN_HPP_NAMESPACE::RenderPass renderpass, + VULKAN_HPP_NAMESPACE::Extent2D * pMaxWorkgroupSize, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD ResultValue + getSubpassShadingMaxWorkgroupSizeHUAWEI( VULKAN_HPP_NAMESPACE::RenderPass renderpass, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_external_memory_rdma === + + template + VULKAN_HPP_NODISCARD Result + getMemoryRemoteAddressNV( const VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo, + VULKAN_HPP_NAMESPACE::RemoteAddressNV * pAddress, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + getMemoryRemoteAddressNV( const VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV & memoryGetRemoteAddressInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_pageable_device_local_memory === + + template + void setMemoryPriorityEXT( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + float priority, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_maintenance4 === + + template + void getBufferMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getBufferMemoryRequirementsKHR( + const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain getBufferMemoryRequirementsKHR( + const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getImageMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getImageMemoryRequirementsKHR( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain getImageMemoryRequirementsKHR( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getImageSparseMemoryRequirementsKHR( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = SparseImageMemoryRequirements2Allocator, + typename std::enable_if::value, + int>::type = 0> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirementsKHR( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, + SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const VULKAN_HPP_NOEXCEPT + { + return m_device; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_device != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_device == VK_NULL_HANDLE; + } + + private: + VkDevice m_device = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Device ) == sizeof( VkDevice ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Device is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::Device; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Device; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Device; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class DisplayModeKHR + { + public: + using CType = VkDisplayModeKHR; + using NativeType = VkDisplayModeKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDisplayModeKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDisplayModeKHR; + + public: + VULKAN_HPP_CONSTEXPR DisplayModeKHR() = default; + VULKAN_HPP_CONSTEXPR DisplayModeKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR( VkDisplayModeKHR displayModeKHR ) VULKAN_HPP_NOEXCEPT + : m_displayModeKHR( displayModeKHR ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + DisplayModeKHR & operator=( VkDisplayModeKHR displayModeKHR ) VULKAN_HPP_NOEXCEPT + { + m_displayModeKHR = displayModeKHR; + return *this; + } +#endif + + DisplayModeKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_displayModeKHR = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayModeKHR const & ) const = default; +#else + bool operator==( DisplayModeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_displayModeKHR == rhs.m_displayModeKHR; + } + + bool operator!=( DisplayModeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_displayModeKHR != rhs.m_displayModeKHR; + } + + bool operator<( DisplayModeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_displayModeKHR < rhs.m_displayModeKHR; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const VULKAN_HPP_NOEXCEPT + { + return m_displayModeKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_displayModeKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_displayModeKHR == VK_NULL_HANDLE; + } + + private: + VkDisplayModeKHR m_displayModeKHR = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayModeKHR is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::DisplayModeKHR; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DisplayModeKHR; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::DisplayModeKHR; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + +#ifndef VULKAN_HPP_NO_SMART_HANDLE + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueDevice = UniqueHandle; +#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ + + class PhysicalDevice + { + public: + using CType = VkPhysicalDevice; + using NativeType = VkPhysicalDevice; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::ePhysicalDevice; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePhysicalDevice; + + public: + VULKAN_HPP_CONSTEXPR PhysicalDevice() = default; + VULKAN_HPP_CONSTEXPR PhysicalDevice( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice( VkPhysicalDevice physicalDevice ) VULKAN_HPP_NOEXCEPT + : m_physicalDevice( physicalDevice ) + {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + PhysicalDevice & operator=( VkPhysicalDevice physicalDevice ) VULKAN_HPP_NOEXCEPT + { + m_physicalDevice = physicalDevice; + return *this; + } +#endif + + PhysicalDevice & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_physicalDevice = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevice const & ) const = default; +#else + bool operator==( PhysicalDevice const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_physicalDevice == rhs.m_physicalDevice; + } + + bool operator!=( PhysicalDevice const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_physicalDevice != rhs.m_physicalDevice; + } + + bool operator<( PhysicalDevice const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_physicalDevice < rhs.m_physicalDevice; + } +#endif + + //=== VK_VERSION_1_0 === + + template + void getFeatures( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pFeatures, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures + getFeatures( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::FormatProperties * pFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties + getFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + getImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags, + VULKAN_HPP_NAMESPACE::ImageFormatProperties * pImageFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getProperties( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties + getProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void + getQueueFamilyProperties( uint32_t * pQueueFamilyPropertyCount, + VULKAN_HPP_NAMESPACE::QueueFamilyProperties * pQueueFamilyProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename QueueFamilyPropertiesAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = QueueFamilyPropertiesAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties( QueueFamilyPropertiesAllocator & queueFamilyPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getMemoryProperties( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties * pMemoryProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties + getMemoryProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createDevice( const VULKAN_HPP_NAMESPACE::DeviceCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Device * pDevice, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createDevice( const VULKAN_HPP_NAMESPACE::DeviceCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createDeviceUnique( const VULKAN_HPP_NAMESPACE::DeviceCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result enumerateDeviceExtensionProperties( + const char * pLayerName, + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::ExtensionProperties * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumerateDeviceExtensionProperties( Optional layerName + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = ExtensionPropertiesAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumerateDeviceExtensionProperties( Optional layerName, + ExtensionPropertiesAllocator & extensionPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result enumerateDeviceLayerProperties( + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::LayerProperties * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumerateDeviceLayerProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = LayerPropertiesAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumerateDeviceLayerProperties( LayerPropertiesAllocator & layerPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::SparseImageFormatProperties * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename SparseImageFormatPropertiesAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = SparseImageFormatPropertiesAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + SparseImageFormatPropertiesAllocator & sparseImageFormatPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_VERSION_1_1 === + + template + void getFeatures2( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 * pFeatures, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 + getFeatures2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain + getFeatures2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getProperties2( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 + getProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain + getProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::FormatProperties2 * pFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties2 + getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain + getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getImageFormatProperties2( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 * pImageFormatInfo, + VULKAN_HPP_NAMESPACE::ImageFormatProperties2 * pImageFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type + getImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getQueueFamilyProperties2( uint32_t * pQueueFamilyPropertyCount, + VULKAN_HPP_NAMESPACE::QueueFamilyProperties2 * pQueueFamilyProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename QueueFamilyProperties2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = QueueFamilyProperties2Allocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2( QueueFamilyProperties2Allocator & queueFamilyProperties2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = StructureChainAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2( StructureChainAllocator & structureChainAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getMemoryProperties2( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 * pMemoryProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 + getMemoryProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain + getMemoryProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getSparseImageFormatProperties2( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 * pFormatInfo, + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2 * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename SparseImageFormatProperties2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = SparseImageFormatProperties2Allocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo, + SparseImageFormatProperties2Allocator & sparseImageFormatProperties2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getExternalBufferProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo * pExternalBufferInfo, + VULKAN_HPP_NAMESPACE::ExternalBufferProperties * pExternalBufferProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalBufferProperties getExternalBufferProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getExternalFenceProperties( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo * pExternalFenceInfo, + VULKAN_HPP_NAMESPACE::ExternalFenceProperties * pExternalFenceProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalFenceProperties getExternalFenceProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getExternalSemaphoreProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo, + VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties * pExternalSemaphoreProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties getExternalSemaphoreProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_VERSION_1_3 === + + template + VULKAN_HPP_NODISCARD Result + getToolProperties( uint32_t * pToolCount, + VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties * pToolProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getToolProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename PhysicalDeviceToolPropertiesAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PhysicalDeviceToolPropertiesAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getToolProperties( PhysicalDeviceToolPropertiesAllocator & physicalDeviceToolPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_surface === + + template + VULKAN_HPP_NODISCARD Result + getSurfaceSupportKHR( uint32_t queueFamilyIndex, + VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + VULKAN_HPP_NAMESPACE::Bool32 * pSupported, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getSurfaceSupportKHR( uint32_t queueFamilyIndex, + VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getSurfaceCapabilitiesKHR( + VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR * pSurfaceCapabilities, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + uint32_t * pSurfaceFormatCount, + VULKAN_HPP_NAMESPACE::SurfaceFormatKHR * pSurfaceFormats, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = SurfaceFormatKHRAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + SurfaceFormatKHRAllocator & surfaceFormatKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getSurfacePresentModesKHR( + VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + uint32_t * pPresentModeCount, + VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PresentModeKHRAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + PresentModeKHRAllocator & presentModeKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_swapchain === + + template + VULKAN_HPP_NODISCARD Result + getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + uint32_t * pRectCount, + VULKAN_HPP_NAMESPACE::Rect2D * pRects, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = Rect2DAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + Rect2DAllocator & rect2DAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_display === + + template + VULKAN_HPP_NODISCARD Result + getDisplayPropertiesKHR( uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getDisplayPropertiesKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = DisplayPropertiesKHRAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getDisplayPropertiesKHR( DisplayPropertiesKHRAllocator & displayPropertiesKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getDisplayPlanePropertiesKHR( + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getDisplayPlanePropertiesKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename DisplayPlanePropertiesKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = DisplayPlanePropertiesKHRAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getDisplayPlanePropertiesKHR( DisplayPlanePropertiesKHRAllocator & displayPlanePropertiesKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getDisplayPlaneSupportedDisplaysKHR( + uint32_t planeIndex, + uint32_t * pDisplayCount, + VULKAN_HPP_NAMESPACE::DisplayKHR * pDisplays, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = DisplayKHRAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, + DisplayKHRAllocator & displayKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getDisplayModePropertiesKHR( + VULKAN_HPP_NAMESPACE::DisplayKHR display, + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getDisplayModePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename DisplayModePropertiesKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = DisplayModePropertiesKHRAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getDisplayModePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, + DisplayModePropertiesKHRAllocator & displayModePropertiesKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + createDisplayModeKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DisplayModeKHR * pMode, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createDisplayModeKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createDisplayModeKHRUnique( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getDisplayPlaneCapabilitiesKHR( + VULKAN_HPP_NAMESPACE::DisplayModeKHR mode, + uint32_t planeIndex, + VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR * pCapabilities, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + getDisplayPlaneCapabilitiesKHR( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode, + uint32_t planeIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + template + Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, + Display * dpy, + VisualID visualID, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, + Display & dpy, + VisualID visualID, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + template + Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, + xcb_connection_t * connection, + xcb_visualid_t visual_id, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, + xcb_connection_t & connection, + xcb_visualid_t visual_id, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + template + Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, + struct wl_display * display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, + struct wl_display & display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + template + Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + + template + VULKAN_HPP_NODISCARD Result + getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileKHR * pVideoProfile, + VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR * pCapabilities, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileKHR & videoProfile, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type + getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileKHR & videoProfile, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getVideoFormatPropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo, + uint32_t * pVideoFormatPropertyCount, + VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR * pVideoFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getVideoFormatPropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename VideoFormatPropertiesKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = VideoFormatPropertiesKHRAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getVideoFormatPropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo, + VideoFormatPropertiesKHRAllocator & videoFormatPropertiesKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NV_external_memory_capabilities === + + template + VULKAN_HPP_NODISCARD Result getExternalImageFormatPropertiesNV( + VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType, + VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV * pExternalImageFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + getExternalImageFormatPropertiesNV( + VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_get_physical_device_properties2 === + + template + void getFeatures2KHR( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 * pFeatures, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 + getFeatures2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain + getFeatures2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getProperties2KHR( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 + getProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain + getProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void + getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::FormatProperties2 * pFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties2 + getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain + getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getImageFormatProperties2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 * pImageFormatInfo, + VULKAN_HPP_NAMESPACE::ImageFormatProperties2 * pImageFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type + getImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getQueueFamilyProperties2KHR( uint32_t * pQueueFamilyPropertyCount, + VULKAN_HPP_NAMESPACE::QueueFamilyProperties2 * pQueueFamilyProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename QueueFamilyProperties2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = QueueFamilyProperties2Allocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2KHR( QueueFamilyProperties2Allocator & queueFamilyProperties2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = StructureChainAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2KHR( StructureChainAllocator & structureChainAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void + getMemoryProperties2KHR( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 * pMemoryProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 + getMemoryProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template + VULKAN_HPP_NODISCARD StructureChain + getMemoryProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getSparseImageFormatProperties2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 * pFormatInfo, + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2 * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename SparseImageFormatProperties2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = SparseImageFormatProperties2Allocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo, + SparseImageFormatProperties2Allocator & sparseImageFormatProperties2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_external_memory_capabilities === + + template + void getExternalBufferPropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo * pExternalBufferInfo, + VULKAN_HPP_NAMESPACE::ExternalBufferProperties * pExternalBufferProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalBufferProperties getExternalBufferPropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_external_semaphore_capabilities === + + template + void getExternalSemaphorePropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo, + VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties * pExternalSemaphoreProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties getExternalSemaphorePropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_direct_mode_display === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + Result releaseDisplayEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + typename ResultValueType::type + releaseDisplayEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + + template + VULKAN_HPP_NODISCARD Result + acquireXlibDisplayEXT( Display * dpy, + VULKAN_HPP_NAMESPACE::DisplayKHR display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + acquireXlibDisplayEXT( Display & dpy, + VULKAN_HPP_NAMESPACE::DisplayKHR display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + getRandROutputDisplayEXT( Display * dpy, + RROutput rrOutput, + VULKAN_HPP_NAMESPACE::DisplayKHR * pDisplay, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type getRandROutputDisplayEXT( + Display & dpy, RROutput rrOutput, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE typename ResultValueType>::type + getRandROutputDisplayEXTUnique( Display & dpy, + RROutput rrOutput, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_display_surface_counter === + + template + VULKAN_HPP_NODISCARD Result getSurfaceCapabilities2EXT( + VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT * pSurfaceCapabilities, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_external_fence_capabilities === + + template + void getExternalFencePropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo * pExternalFenceInfo, + VULKAN_HPP_NAMESPACE::ExternalFenceProperties * pExternalFenceProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalFenceProperties getExternalFencePropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_performance_query === + + template + VULKAN_HPP_NODISCARD Result enumerateQueueFamilyPerformanceQueryCountersKHR( + uint32_t queueFamilyIndex, + uint32_t * pCounterCount, + VULKAN_HPP_NAMESPACE::PerformanceCounterKHR * pCounters, + VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR * pCounterDescriptions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename PerformanceCounterDescriptionKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType< + std::pair, + std::vector>>::type + enumerateQueueFamilyPerformanceQueryCountersKHR( + uint32_t queueFamilyIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename PerformanceCounterDescriptionKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B1 = PerformanceCounterKHRAllocator, + typename B2 = PerformanceCounterDescriptionKHRAllocator, + typename std::enable_if::value && + std::is_same::value, + int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType< + std::pair, + std::vector>>::type + enumerateQueueFamilyPerformanceQueryCountersKHR( + uint32_t queueFamilyIndex, + PerformanceCounterKHRAllocator & performanceCounterKHRAllocator, + PerformanceCounterDescriptionKHRAllocator & performanceCounterDescriptionKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void getQueueFamilyPerformanceQueryPassesKHR( + const VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo, + uint32_t * pNumPasses, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD uint32_t getQueueFamilyPerformanceQueryPassesKHR( + const VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_get_surface_capabilities2 === + + template + VULKAN_HPP_NODISCARD Result getSurfaceCapabilities2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo, + VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR * pSurfaceCapabilities, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + getSurfaceCapabilities2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type + getSurfaceCapabilities2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + getSurfaceFormats2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo, + uint32_t * pSurfaceFormatCount, + VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR * pSurfaceFormats, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfaceFormats2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = SurfaceFormat2KHRAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfaceFormats2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, + SurfaceFormat2KHRAllocator & surfaceFormat2KHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_get_display_properties2 === + + template + VULKAN_HPP_NODISCARD Result + getDisplayProperties2KHR( uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::DisplayProperties2KHR * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getDisplayProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename DisplayProperties2KHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = DisplayProperties2KHRAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getDisplayProperties2KHR( DisplayProperties2KHRAllocator & displayProperties2KHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getDisplayPlaneProperties2KHR( + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getDisplayPlaneProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename DisplayPlaneProperties2KHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = DisplayPlaneProperties2KHRAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getDisplayPlaneProperties2KHR( DisplayPlaneProperties2KHRAllocator & displayPlaneProperties2KHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getDisplayModeProperties2KHR( + VULKAN_HPP_NAMESPACE::DisplayKHR display, + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getDisplayModeProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename DisplayModeProperties2KHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = DisplayModeProperties2KHRAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getDisplayModeProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, + DisplayModeProperties2KHRAllocator & displayModeProperties2KHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result getDisplayPlaneCapabilities2KHR( + const VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR * pDisplayPlaneInfo, + VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR * pCapabilities, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS + typename ResultValueType::type + getDisplayPlaneCapabilities2KHR( const VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR & displayPlaneInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_sample_locations === + + template + void getMultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, + VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT * pMultisampleProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT getMultisamplePropertiesEXT( + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_calibrated_timestamps === + + template + VULKAN_HPP_NODISCARD Result getCalibrateableTimeDomainsEXT( + uint32_t * pTimeDomainCount, + VULKAN_HPP_NAMESPACE::TimeDomainEXT * pTimeDomains, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCalibrateableTimeDomainsEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = TimeDomainEXTAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCalibrateableTimeDomainsEXT( TimeDomainEXTAllocator & timeDomainEXTAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_fragment_shading_rate === + + template + VULKAN_HPP_NODISCARD Result getFragmentShadingRatesKHR( + uint32_t * pFragmentShadingRateCount, + VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template < + typename PhysicalDeviceFragmentShadingRateKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType< + std::vector>::type + getFragmentShadingRatesKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename PhysicalDeviceFragmentShadingRateKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PhysicalDeviceFragmentShadingRateKHRAllocator, + typename std::enable_if::value, + int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType< + std::vector>::type + getFragmentShadingRatesKHR( + PhysicalDeviceFragmentShadingRateKHRAllocator & physicalDeviceFragmentShadingRateKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_EXT_tooling_info === + + template + VULKAN_HPP_NODISCARD Result + getToolPropertiesEXT( uint32_t * pToolCount, + VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties * pToolProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getToolPropertiesEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename PhysicalDeviceToolPropertiesAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PhysicalDeviceToolPropertiesAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getToolPropertiesEXT( PhysicalDeviceToolPropertiesAllocator & physicalDeviceToolPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_cooperative_matrix === + + template + VULKAN_HPP_NODISCARD Result getCooperativeMatrixPropertiesNV( + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getCooperativeMatrixPropertiesNV( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = CooperativeMatrixPropertiesNVAllocator, + typename std::enable_if::value, + int>::type = 0> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getCooperativeMatrixPropertiesNV( CooperativeMatrixPropertiesNVAllocator & cooperativeMatrixPropertiesNVAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_coverage_reduction_mode === + + template + VULKAN_HPP_NODISCARD Result getSupportedFramebufferMixedSamplesCombinationsNV( + uint32_t * pCombinationCount, + VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV * pCombinations, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template < + typename FramebufferMixedSamplesCombinationNVAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType< + std::vector>::type + getSupportedFramebufferMixedSamplesCombinationsNV( + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template < + typename FramebufferMixedSamplesCombinationNVAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = FramebufferMixedSamplesCombinationNVAllocator, + typename std::enable_if::value, + int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType< + std::vector>::type + getSupportedFramebufferMixedSamplesCombinationsNV( + FramebufferMixedSamplesCombinationNVAllocator & framebufferMixedSamplesCombinationNVAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + template + VULKAN_HPP_NODISCARD Result getSurfacePresentModes2EXT( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo, + uint32_t * pPresentModeCount, + VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PresentModeKHRAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, + PresentModeKHRAllocator & presentModeKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_acquire_drm_display === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + acquireDrmDisplayEXT( int32_t drmFd, + VULKAN_HPP_NAMESPACE::DisplayKHR display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + template + typename ResultValueType::type + acquireDrmDisplayEXT( int32_t drmFd, + VULKAN_HPP_NAMESPACE::DisplayKHR display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + getDrmDisplayEXT( int32_t drmFd, + uint32_t connectorId, + VULKAN_HPP_NAMESPACE::DisplayKHR * display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getDrmDisplayEXT( int32_t drmFd, + uint32_t connectorId, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + getDrmDisplayEXTUnique( int32_t drmFd, + uint32_t connectorId, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + +# ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD Result + acquireWinrtDisplayNV( VULKAN_HPP_NAMESPACE::DisplayKHR display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# else + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + acquireWinrtDisplayNV( VULKAN_HPP_NAMESPACE::DisplayKHR display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + getWinrtDisplayNV( uint32_t deviceRelativeId, + VULKAN_HPP_NAMESPACE::DisplayKHR * pDisplay, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + getWinrtDisplayNV( uint32_t deviceRelativeId, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + getWinrtDisplayNVUnique( uint32_t deviceRelativeId, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + template + Bool32 getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, + IDirectFB * dfb, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + Bool32 getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, + IDirectFB & dfb, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + template + Bool32 getScreenPresentationSupportQNX( uint32_t queueFamilyIndex, + struct _screen_window * window, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + Bool32 getScreenPresentationSupportQNX( uint32_t queueFamilyIndex, + struct _screen_window & window, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const VULKAN_HPP_NOEXCEPT + { + return m_physicalDevice; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_physicalDevice != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_physicalDevice == VK_NULL_HANDLE; + } + + private: + VkPhysicalDevice m_physicalDevice = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevice ) == sizeof( VkPhysicalDevice ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevice is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( + "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::PhysicalDevice; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::PhysicalDevice; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::PhysicalDevice; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + +#ifndef VULKAN_HPP_NO_SMART_HANDLE + class Instance; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueDebugReportCallbackEXT = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueDebugUtilsMessengerEXT = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueSurfaceKHR = UniqueHandle; +#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ + + class Instance + { + public: + using CType = VkInstance; + using NativeType = VkInstance; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eInstance; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eInstance; + + public: + VULKAN_HPP_CONSTEXPR Instance() = default; + VULKAN_HPP_CONSTEXPR Instance( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT Instance( VkInstance instance ) VULKAN_HPP_NOEXCEPT : m_instance( instance ) {} + +#if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + Instance & operator=( VkInstance instance ) VULKAN_HPP_NOEXCEPT + { + m_instance = instance; + return *this; + } +#endif + + Instance & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_instance = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Instance const & ) const = default; +#else + bool operator==( Instance const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_instance == rhs.m_instance; + } + + bool operator!=( Instance const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_instance != rhs.m_instance; + } + + bool operator<( Instance const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_instance < rhs.m_instance; + } +#endif + + //=== VK_VERSION_1_0 === + + template + void destroy( const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + enumeratePhysicalDevices( uint32_t * pPhysicalDeviceCount, + VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumeratePhysicalDevices( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PhysicalDeviceAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumeratePhysicalDevices( PhysicalDeviceAllocator & physicalDeviceAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + PFN_vkVoidFunction + getProcAddr( const char * pName, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + PFN_vkVoidFunction + getProcAddr( const std::string & name, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_VERSION_1_1 === + + template + VULKAN_HPP_NODISCARD Result enumeratePhysicalDeviceGroups( + uint32_t * pPhysicalDeviceGroupCount, + VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + enumeratePhysicalDeviceGroups( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PhysicalDeviceGroupPropertiesAllocator, + typename std::enable_if::value, + int>::type = 0> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + enumeratePhysicalDeviceGroups( PhysicalDeviceGroupPropertiesAllocator & physicalDeviceGroupPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_surface === + + template + void destroySurfaceKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroySurfaceKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_display === + + template + VULKAN_HPP_NODISCARD Result createDisplayPlaneSurfaceKHR( + const VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createDisplayPlaneSurfaceKHR( const VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createDisplayPlaneSurfaceKHRUnique( const VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + template + VULKAN_HPP_NODISCARD Result + createXlibSurfaceKHR( const VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createXlibSurfaceKHR( const VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createXlibSurfaceKHRUnique( const VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + template + VULKAN_HPP_NODISCARD Result + createXcbSurfaceKHR( const VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createXcbSurfaceKHR( const VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createXcbSurfaceKHRUnique( const VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + template + VULKAN_HPP_NODISCARD Result + createWaylandSurfaceKHR( const VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createWaylandSurfaceKHR( const VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createWaylandSurfaceKHRUnique( const VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + + template + VULKAN_HPP_NODISCARD Result + createAndroidSurfaceKHR( const VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createAndroidSurfaceKHR( const VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createAndroidSurfaceKHRUnique( const VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + template + VULKAN_HPP_NODISCARD Result + createWin32SurfaceKHR( const VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createWin32SurfaceKHR( const VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createWin32SurfaceKHRUnique( const VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + + template + VULKAN_HPP_NODISCARD Result createDebugReportCallbackEXT( + const VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT * pCallback, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + createDebugReportCallbackEXT( const VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE + typename ResultValueType>::type + createDebugReportCallbackEXTUnique( const VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyDebugReportCallbackEXT( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyDebugReportCallbackEXT( + VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags, + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + const char * pLayerPrefix, + const char * pMessage, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags, + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + const std::string & layerPrefix, + const std::string & message, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + + template + VULKAN_HPP_NODISCARD Result createStreamDescriptorSurfaceGGP( + const VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createStreamDescriptorSurfaceGGP( const VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createStreamDescriptorSurfaceGGPUnique( + const VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_GGP*/ + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + + template + VULKAN_HPP_NODISCARD Result + createViSurfaceNN( const VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createViSurfaceNN( const VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createViSurfaceNNUnique( const VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_device_group_creation === + + template + VULKAN_HPP_NODISCARD Result enumeratePhysicalDeviceGroupsKHR( + uint32_t * pPhysicalDeviceGroupCount, + VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + enumeratePhysicalDeviceGroupsKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = PhysicalDeviceGroupPropertiesAllocator, + typename std::enable_if::value, + int>::type = 0> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + enumeratePhysicalDeviceGroupsKHR( PhysicalDeviceGroupPropertiesAllocator & physicalDeviceGroupPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + + template + VULKAN_HPP_NODISCARD Result + createIOSSurfaceMVK( const VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createIOSSurfaceMVK( const VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createIOSSurfaceMVKUnique( const VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + + template + VULKAN_HPP_NODISCARD Result + createMacOSSurfaceMVK( const VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createMacOSSurfaceMVK( const VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createMacOSSurfaceMVKUnique( const VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + + template + VULKAN_HPP_NODISCARD Result createDebugUtilsMessengerEXT( + const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT * pMessenger, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + createDebugUtilsMessengerEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_INLINE + typename ResultValueType>::type + createDebugUtilsMessengerEXTUnique( const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroyDebugUtilsMessengerEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyDebugUtilsMessengerEXT( + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void destroy( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + void submitDebugUtilsMessageEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageTypes, + const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT * pCallbackData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void submitDebugUtilsMessageEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageTypes, + const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT & callbackData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + + template + VULKAN_HPP_NODISCARD Result createImagePipeSurfaceFUCHSIA( + const VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createImagePipeSurfaceFUCHSIA( const VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createImagePipeSurfaceFUCHSIAUnique( const VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + + template + VULKAN_HPP_NODISCARD Result + createMetalSurfaceEXT( const VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createMetalSurfaceEXT( const VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createMetalSurfaceEXTUnique( const VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_EXT_headless_surface === + + template + VULKAN_HPP_NODISCARD Result + createHeadlessSurfaceEXT( const VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createHeadlessSurfaceEXT( const VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createHeadlessSurfaceEXTUnique( const VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + template + VULKAN_HPP_NODISCARD Result + createDirectFBSurfaceEXT( const VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createDirectFBSurfaceEXT( const VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createDirectFBSurfaceEXTUnique( const VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + template + VULKAN_HPP_NODISCARD Result + createScreenSurfaceQNX( const VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + createScreenSurfaceQNX( const VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createScreenSurfaceQNXUnique( const VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const VULKAN_HPP_NOEXCEPT + { + return m_instance; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_instance != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_instance == VK_NULL_HANDLE; + } + + private: + VkInstance m_instance = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Instance ) == sizeof( VkInstance ), + "handle and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Instance is not nothrow_move_constructible!" ); + + template <> + struct VULKAN_HPP_DEPRECATED( "vk::cpp_type is deprecated. Use vk::CppType instead." ) cpp_type + { + using type = VULKAN_HPP_NAMESPACE::Instance; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Instance; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::Instance; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + //=== VK_VERSION_1_0 === + +#ifndef VULKAN_HPP_NO_SMART_HANDLE + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueInstance = UniqueHandle; +#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ + + template + VULKAN_HPP_NODISCARD Result createInstance( const VULKAN_HPP_NAMESPACE::InstanceCreateInfo * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::Instance * pInstance, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createInstance( + const VULKAN_HPP_NAMESPACE::InstanceCreateInfo & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE + typename ResultValueType>::type + createInstanceUnique( const VULKAN_HPP_NAMESPACE::InstanceCreateInfo & createInfo, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); +# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result enumerateInstanceExtensionProperties( + const char * pLayerName, + uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::ExtensionProperties * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumerateInstanceExtensionProperties( Optional layerName + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = ExtensionPropertiesAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumerateInstanceExtensionProperties( Optional layerName, + ExtensionPropertiesAllocator & extensionPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + template + VULKAN_HPP_NODISCARD Result + enumerateInstanceLayerProperties( uint32_t * pPropertyCount, + VULKAN_HPP_NAMESPACE::LayerProperties * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumerateInstanceLayerProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B = LayerPropertiesAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumerateInstanceLayerProperties( LayerPropertiesAllocator & layerPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_VERSION_1_1 === + + template + VULKAN_HPP_NODISCARD Result enumerateInstanceVersion( + uint32_t * pApiVersion, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + typename ResultValueType::type + enumerateInstanceVersion( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +} // namespace VULKAN_HPP_NAMESPACE +#endif diff --git a/Externals/Vulkan/Include/vulkan/vulkan_hash.hpp b/Externals/Vulkan/Include/vulkan/vulkan_hash.hpp new file mode 100644 index 000000000000..f5e13e58ceb5 --- /dev/null +++ b/Externals/Vulkan/Include/vulkan/vulkan_hash.hpp @@ -0,0 +1,13191 @@ +// Copyright 2015-2022 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_HASH_HPP +#define VULKAN_HASH_HPP + +#include + +namespace std +{ + //======================================= + //=== HASH structures for Flags types === + //======================================= + + template + struct hash> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Flags const & flags ) const VULKAN_HPP_NOEXCEPT + { + return std::hash::type>{}( + static_cast::type>( flags ) ); + } + }; + + //=================================== + //=== HASH structures for handles === + //=================================== + + //=== VK_VERSION_1_0 === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Instance const & instance ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( instance ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevice const & physicalDevice ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( physicalDevice ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Device const & device ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( device ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Queue const & queue ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( queue ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceMemory const & deviceMemory ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( deviceMemory ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Fence const & fence ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( fence ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Semaphore const & semaphore ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( semaphore ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Event const & event ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( event ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueryPool const & queryPool ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( queryPool ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Buffer const & buffer ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( buffer ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferView const & bufferView ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( bufferView ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Image const & image ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( image ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageView const & imageView ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( imageView ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShaderModule const & shaderModule ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( shaderModule ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCache const & pipelineCache ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( pipelineCache ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Pipeline const & pipeline ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( pipeline ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineLayout const & pipelineLayout ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( pipelineLayout ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Sampler const & sampler ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( sampler ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorPool const & descriptorPool ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( descriptorPool ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSet const & descriptorSet ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( descriptorSet ) ); + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DescriptorSetLayout const & descriptorSetLayout ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( descriptorSetLayout ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Framebuffer const & framebuffer ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( framebuffer ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPass const & renderPass ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( renderPass ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandPool const & commandPool ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( commandPool ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBuffer const & commandBuffer ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( commandBuffer ) ); + } + }; + + //=== VK_VERSION_1_1 === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion const & samplerYcbcrConversion ) const + VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( samplerYcbcrConversion ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate const & descriptorUpdateTemplate ) const + VULKAN_HPP_NOEXCEPT + { + return std::hash{}( + static_cast( descriptorUpdateTemplate ) ); + } + }; + + //=== VK_VERSION_1_3 === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PrivateDataSlot const & privateDataSlot ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( privateDataSlot ) ); + } + }; + + //=== VK_KHR_surface === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceKHR const & surfaceKHR ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( surfaceKHR ) ); + } + }; + + //=== VK_KHR_swapchain === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainKHR const & swapchainKHR ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( swapchainKHR ) ); + } + }; + + //=== VK_KHR_display === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayKHR const & displayKHR ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( displayKHR ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayModeKHR const & displayModeKHR ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( displayModeKHR ) ); + } + }; + + //=== VK_EXT_debug_report === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT const & debugReportCallbackEXT ) const + VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( debugReportCallbackEXT ) ); + } + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoSessionKHR const & videoSessionKHR ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( videoSessionKHR ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const & videoSessionParametersKHR ) const + VULKAN_HPP_NOEXCEPT + { + return std::hash{}( + static_cast( videoSessionParametersKHR ) ); + } + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NVX_binary_import === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CuModuleNVX const & cuModuleNVX ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( cuModuleNVX ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CuFunctionNVX const & cuFunctionNVX ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( cuFunctionNVX ) ); + } + }; + + //=== VK_EXT_debug_utils === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT const & debugUtilsMessengerEXT ) const + VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( debugUtilsMessengerEXT ) ); + } + }; + + //=== VK_KHR_acceleration_structure === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const & accelerationStructureKHR ) const + VULKAN_HPP_NOEXCEPT + { + return std::hash{}( + static_cast( accelerationStructureKHR ) ); + } + }; + + //=== VK_EXT_validation_cache === + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ValidationCacheEXT const & validationCacheEXT ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( validationCacheEXT ) ); + } + }; + + //=== VK_NV_ray_tracing === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureNV const & accelerationStructureNV ) const + VULKAN_HPP_NOEXCEPT + { + return std::hash{}( + static_cast( accelerationStructureNV ) ); + } + }; + + //=== VK_INTEL_performance_query === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL const & performanceConfigurationINTEL ) + const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( + static_cast( performanceConfigurationINTEL ) ); + } + }; + + //=== VK_KHR_deferred_host_operations === + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DeferredOperationKHR const & deferredOperationKHR ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( deferredOperationKHR ) ); + } + }; + + //=== VK_NV_device_generated_commands === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const & indirectCommandsLayoutNV ) const + VULKAN_HPP_NOEXCEPT + { + return std::hash{}( + static_cast( indirectCommandsLayoutNV ) ); + } + }; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const & bufferCollectionFUCHSIA ) const + VULKAN_HPP_NOEXCEPT + { + return std::hash{}( + static_cast( bufferCollectionFUCHSIA ) ); + } + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if 14 <= VULKAN_HPP_CPP_VERSION + //====================================== + //=== HASH structures for structures === + //====================================== + +# if !defined( VULKAN_HPP_HASH_COMBINE ) +# define VULKAN_HPP_HASH_COMBINE( seed, value ) \ + seed ^= std::hash::type>{}( value ) + 0x9e3779b9 + ( seed << 6 ) + ( seed >> 2 ) +# endif + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AabbPositionsKHR const & aabbPositionsKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.minX ); + VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.minY ); + VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.minZ ); + VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.maxX ); + VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.maxY ); + VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.maxZ ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR const & + accelerationStructureBuildRangeInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildRangeInfoKHR.primitiveCount ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildRangeInfoKHR.primitiveOffset ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildRangeInfoKHR.firstVertex ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildRangeInfoKHR.transformOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR const & + accelerationStructureBuildSizesInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildSizesInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildSizesInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildSizesInfoKHR.accelerationStructureSize ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildSizesInfoKHR.updateScratchSize ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildSizesInfoKHR.buildScratchSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const & + accelerationStructureCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.createFlags ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.offset ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.size ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.type ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.deviceAddress ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const & geometryTrianglesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.vertexData ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.vertexOffset ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.vertexCount ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.vertexStride ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.vertexFormat ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.indexData ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.indexOffset ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.indexCount ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.indexType ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.transformData ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.transformOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeometryAABBNV const & geometryAABBNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.aabbData ); + VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.numAABBs ); + VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.stride ); + VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.offset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeometryDataNV const & geometryDataNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, geometryDataNV.triangles ); + VULKAN_HPP_HASH_COMBINE( seed, geometryDataNV.aabbs ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeometryNV const & geometryNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, geometryNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, geometryNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, geometryNV.geometryType ); + VULKAN_HPP_HASH_COMBINE( seed, geometryNV.geometry ); + VULKAN_HPP_HASH_COMBINE( seed, geometryNV.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV const & accelerationStructureInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.type ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.instanceCount ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.geometryCount ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.pGeometries ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const & + accelerationStructureCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoNV.compactedSize ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoNV.info ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR const & + accelerationStructureDeviceAddressInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureDeviceAddressInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureDeviceAddressInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureDeviceAddressInfoKHR.accelerationStructure ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transformMatrixKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + for ( size_t i = 0; i < 3; ++i ) + { + for ( size_t j = 0; j < 4; ++j ) + { + VULKAN_HPP_HASH_COMBINE( seed, transformMatrixKHR.matrix[i][j] ); + } + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR const & + accelerationStructureInstanceKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.transform ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.instanceCustomIndex ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.mask ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.instanceShaderBindingTableRecordOffset ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.accelerationStructureReference ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV const & + accelerationStructureMatrixMotionInstanceNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.transformT0 ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.transformT1 ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.instanceCustomIndex ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.mask ); + VULKAN_HPP_HASH_COMBINE( seed, + accelerationStructureMatrixMotionInstanceNV.instanceShaderBindingTableRecordOffset ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.accelerationStructureReference ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV const & + accelerationStructureMemoryRequirementsInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMemoryRequirementsInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMemoryRequirementsInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMemoryRequirementsInfoNV.type ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMemoryRequirementsInfoNV.accelerationStructure ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV const & + accelerationStructureMotionInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMotionInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMotionInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMotionInfoNV.maxInstances ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMotionInfoNV.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SRTDataNV const & sRTDataNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.sx ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.a ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.b ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.pvx ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.sy ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.c ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.pvy ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.sz ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.pvz ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.qx ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.qy ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.qz ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.qw ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.tx ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.ty ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.tz ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV const & + accelerationStructureSRTMotionInstanceNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.transformT0 ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.transformT1 ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.instanceCustomIndex ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.mask ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.instanceShaderBindingTableRecordOffset ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.accelerationStructureReference ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR const & + accelerationStructureVersionInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureVersionInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureVersionInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureVersionInfoKHR.pVersionData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR const & acquireNextImageInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.swapchain ); + VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.timeout ); + VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.fence ); + VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.deviceMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR const & acquireProfilingLockInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, acquireProfilingLockInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, acquireProfilingLockInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, acquireProfilingLockInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, acquireProfilingLockInfoKHR.timeout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::AllocationCallbacks const & allocationCallbacks ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pUserData ); + VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pfnAllocation ); + VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pfnReallocation ); + VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pfnFree ); + VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pfnInternalAllocation ); + VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pfnInternalFree ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ComponentMapping const & componentMapping ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, componentMapping.r ); + VULKAN_HPP_HASH_COMBINE( seed, componentMapping.g ); + VULKAN_HPP_HASH_COMBINE( seed, componentMapping.b ); + VULKAN_HPP_HASH_COMBINE( seed, componentMapping.a ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID const & + androidHardwareBufferFormatProperties2ANDROID ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.format ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.externalFormat ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.formatFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.samplerYcbcrConversionComponents ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.suggestedYcbcrModel ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.suggestedYcbcrRange ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.suggestedXChromaOffset ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.suggestedYChromaOffset ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID const & + androidHardwareBufferFormatPropertiesANDROID ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.format ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.externalFormat ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.formatFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.samplerYcbcrConversionComponents ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.suggestedYcbcrModel ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.suggestedYcbcrRange ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.suggestedXChromaOffset ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.suggestedYChromaOffset ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID const & + androidHardwareBufferPropertiesANDROID ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferPropertiesANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferPropertiesANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferPropertiesANDROID.allocationSize ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferPropertiesANDROID.memoryTypeBits ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID const & + androidHardwareBufferUsageANDROID ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferUsageANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferUsageANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferUsageANDROID.androidHardwareBufferUsage ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const & androidSurfaceCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, androidSurfaceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, androidSurfaceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, androidSurfaceCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, androidSurfaceCreateInfoKHR.window ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ApplicationInfo const & applicationInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, applicationInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, applicationInfo.pNext ); + for ( const char * p = applicationInfo.pApplicationName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, applicationInfo.applicationVersion ); + for ( const char * p = applicationInfo.pEngineName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, applicationInfo.engineVersion ); + VULKAN_HPP_HASH_COMBINE( seed, applicationInfo.apiVersion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::AttachmentDescription const & attachmentDescription ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.flags ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.format ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.samples ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.loadOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.storeOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.stencilLoadOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.stencilStoreOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.initialLayout ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.finalLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AttachmentDescription2 const & attachmentDescription2 ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.flags ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.format ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.samples ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.loadOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.storeOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.stencilLoadOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.stencilStoreOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.initialLayout ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.finalLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout const & + attachmentDescriptionStencilLayout ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescriptionStencilLayout.sType ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescriptionStencilLayout.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescriptionStencilLayout.stencilInitialLayout ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescriptionStencilLayout.stencilFinalLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::AttachmentReference const & attachmentReference ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentReference.attachment ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentReference.layout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::AttachmentReference2 const & attachmentReference2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentReference2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentReference2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentReference2.attachment ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentReference2.layout ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentReference2.aspectMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout const & + attachmentReferenceStencilLayout ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentReferenceStencilLayout.sType ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentReferenceStencilLayout.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentReferenceStencilLayout.stencilLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD const & attachmentSampleCountInfoAMD ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleCountInfoAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleCountInfoAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleCountInfoAMD.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleCountInfoAMD.pColorAttachmentSamples ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleCountInfoAMD.depthStencilAttachmentSamples ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Extent2D const & extent2D ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, extent2D.width ); + VULKAN_HPP_HASH_COMBINE( seed, extent2D.height ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SampleLocationEXT const & sampleLocationEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationEXT.x ); + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationEXT.y ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.sampleLocationsPerPixel ); + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.sampleLocationGridSize ); + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.sampleLocationsCount ); + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.pSampleLocations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT const & attachmentSampleLocationsEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleLocationsEXT.attachmentIndex ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleLocationsEXT.sampleLocationsInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BaseInStructure const & baseInStructure ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, baseInStructure.sType ); + VULKAN_HPP_HASH_COMBINE( seed, baseInStructure.pNext ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BaseOutStructure const & baseOutStructure ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, baseOutStructure.sType ); + VULKAN_HPP_HASH_COMBINE( seed, baseOutStructure.pNext ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV const & + bindAccelerationStructureMemoryInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.accelerationStructure ); + VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.memory ); + VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.memoryOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.deviceIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.pDeviceIndices ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo const & bindBufferMemoryDeviceGroupInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryDeviceGroupInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryDeviceGroupInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryDeviceGroupInfo.deviceIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryDeviceGroupInfo.pDeviceIndices ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo const & bindBufferMemoryInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryInfo.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryInfo.memory ); + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryInfo.memoryOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Offset2D const & offset2D ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, offset2D.x ); + VULKAN_HPP_HASH_COMBINE( seed, offset2D.y ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Rect2D const & rect2D ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, rect2D.offset ); + VULKAN_HPP_HASH_COMBINE( seed, rect2D.extent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo const & bindImageMemoryDeviceGroupInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.deviceIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.pDeviceIndices ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.splitInstanceBindRegionCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.pSplitInstanceBindRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::BindImageMemoryInfo const & bindImageMemoryInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryInfo.image ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryInfo.memory ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryInfo.memoryOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR const & bindImageMemorySwapchainInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemorySwapchainInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemorySwapchainInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemorySwapchainInfoKHR.swapchain ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemorySwapchainInfoKHR.imageIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo const & bindImagePlaneMemoryInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindImagePlaneMemoryInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindImagePlaneMemoryInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindImagePlaneMemoryInfo.planeAspect ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV const & + bindIndexBufferIndirectCommandNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBufferIndirectCommandNV.bufferAddress ); + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBufferIndirectCommandNV.size ); + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBufferIndirectCommandNV.indexType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV const & + bindShaderGroupIndirectCommandNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindShaderGroupIndirectCommandNV.groupIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SparseMemoryBind const & sparseMemoryBind ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseMemoryBind.resourceOffset ); + VULKAN_HPP_HASH_COMBINE( seed, sparseMemoryBind.size ); + VULKAN_HPP_HASH_COMBINE( seed, sparseMemoryBind.memory ); + VULKAN_HPP_HASH_COMBINE( seed, sparseMemoryBind.memoryOffset ); + VULKAN_HPP_HASH_COMBINE( seed, sparseMemoryBind.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo const & sparseBufferMemoryBindInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseBufferMemoryBindInfo.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, sparseBufferMemoryBindInfo.bindCount ); + VULKAN_HPP_HASH_COMBINE( seed, sparseBufferMemoryBindInfo.pBinds ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo const & sparseImageOpaqueMemoryBindInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseImageOpaqueMemoryBindInfo.image ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageOpaqueMemoryBindInfo.bindCount ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageOpaqueMemoryBindInfo.pBinds ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageSubresource const & imageSubresource ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageSubresource.aspectMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresource.mipLevel ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresource.arrayLayer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Offset3D const & offset3D ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, offset3D.x ); + VULKAN_HPP_HASH_COMBINE( seed, offset3D.y ); + VULKAN_HPP_HASH_COMBINE( seed, offset3D.z ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Extent3D const & extent3D ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, extent3D.width ); + VULKAN_HPP_HASH_COMBINE( seed, extent3D.height ); + VULKAN_HPP_HASH_COMBINE( seed, extent3D.depth ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SparseImageMemoryBind const & sparseImageMemoryBind ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.subresource ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.offset ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.extent ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.memory ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.memoryOffset ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo const & sparseImageMemoryBindInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBindInfo.image ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBindInfo.bindCount ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBindInfo.pBinds ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindSparseInfo const & bindSparseInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.waitSemaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pWaitSemaphores ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.bufferBindCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pBufferBinds ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.imageOpaqueBindCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pImageOpaqueBinds ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.imageBindCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pImageBinds ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.signalSemaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pSignalSemaphores ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV const & + bindVertexBufferIndirectCommandNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBufferIndirectCommandNV.bufferAddress ); + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBufferIndirectCommandNV.size ); + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBufferIndirectCommandNV.stride ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresourceLayers ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceLayers.aspectMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceLayers.mipLevel ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceLayers.baseArrayLayer ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceLayers.layerCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageBlit2 const & imageBlit2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.srcSubresource ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.srcOffsets[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.dstSubresource ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.dstOffsets[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BlitImageInfo2 const & blitImageInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.srcImage ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.srcImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.dstImage ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.dstImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.pRegions ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.filter ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA const & + bufferCollectionBufferCreateInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionBufferCreateInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionBufferCreateInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionBufferCreateInfoFUCHSIA.collection ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionBufferCreateInfoFUCHSIA.index ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const & + bufferCollectionConstraintsInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.minBufferCount ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.maxBufferCount ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.minBufferCountForCamping ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.minBufferCountForDedicatedSlack ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.minBufferCountForSharedSlack ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA const & + bufferCollectionCreateInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionCreateInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionCreateInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionCreateInfoFUCHSIA.collectionToken ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA const & + bufferCollectionImageCreateInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionImageCreateInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionImageCreateInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionImageCreateInfoFUCHSIA.collection ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionImageCreateInfoFUCHSIA.index ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA const & sysmemColorSpaceFUCHSIA ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sysmemColorSpaceFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, sysmemColorSpaceFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, sysmemColorSpaceFUCHSIA.colorSpace ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA const & + bufferCollectionPropertiesFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.memoryTypeBits ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.bufferCount ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.createInfoIndex ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.sysmemPixelFormat ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.formatFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.sysmemColorSpaceIndex ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.samplerYcbcrConversionComponents ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.suggestedYcbcrModel ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.suggestedYcbcrRange ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.suggestedXChromaOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.suggestedYChromaOffset ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCreateInfo const & bufferCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.size ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.usage ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.sharingMode ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.queueFamilyIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.pQueueFamilyIndices ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA const & bufferConstraintsInfoFUCHSIA ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferConstraintsInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferConstraintsInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferConstraintsInfoFUCHSIA.createInfo ); + VULKAN_HPP_HASH_COMBINE( seed, bufferConstraintsInfoFUCHSIA.requiredFormatFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, bufferConstraintsInfoFUCHSIA.bufferCollectionConstraints ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCopy const & bufferCopy ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy.srcOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy.dstOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCopy2 const & bufferCopy2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy2.srcOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy2.dstOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy2.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT const & + bufferDeviceAddressCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressCreateInfoEXT.deviceAddress ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo const & bufferDeviceAddressInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressInfo.buffer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferImageCopy const & bufferImageCopy ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.bufferOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.bufferRowLength ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.bufferImageHeight ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.imageSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.imageOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.imageExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferImageCopy2 const & bufferImageCopy2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.bufferOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.bufferRowLength ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.bufferImageHeight ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.imageSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.imageOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.imageExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::BufferMemoryBarrier const & bufferMemoryBarrier ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.dstAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.srcQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.dstQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.offset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 const & bufferMemoryBarrier2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.srcStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.dstStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.dstAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.srcQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.dstQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.offset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 const & bufferMemoryRequirementsInfo2 ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryRequirementsInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryRequirementsInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryRequirementsInfo2.buffer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo const & + bufferOpaqueCaptureAddressCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferOpaqueCaptureAddressCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferOpaqueCaptureAddressCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferOpaqueCaptureAddressCreateInfo.opaqueCaptureAddress ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const & bufferViewCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.format ); + VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.offset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.range ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT const & calibratedTimestampInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, calibratedTimestampInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, calibratedTimestampInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, calibratedTimestampInfoEXT.timeDomain ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::CheckpointData2NV const & checkpointData2NV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, checkpointData2NV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, checkpointData2NV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, checkpointData2NV.stage ); + VULKAN_HPP_HASH_COMBINE( seed, checkpointData2NV.pCheckpointMarker ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CheckpointDataNV const & checkpointDataNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, checkpointDataNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, checkpointDataNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, checkpointDataNV.stage ); + VULKAN_HPP_HASH_COMBINE( seed, checkpointDataNV.pCheckpointMarker ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const & clearDepthStencilValue ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, clearDepthStencilValue.depth ); + VULKAN_HPP_HASH_COMBINE( seed, clearDepthStencilValue.stencil ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ClearRect const & clearRect ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, clearRect.rect ); + VULKAN_HPP_HASH_COMBINE( seed, clearRect.baseArrayLayer ); + VULKAN_HPP_HASH_COMBINE( seed, clearRect.layerCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV const & coarseSampleLocationNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, coarseSampleLocationNV.pixelX ); + VULKAN_HPP_HASH_COMBINE( seed, coarseSampleLocationNV.pixelY ); + VULKAN_HPP_HASH_COMBINE( seed, coarseSampleLocationNV.sample ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV const & coarseSampleOrderCustomNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, coarseSampleOrderCustomNV.shadingRate ); + VULKAN_HPP_HASH_COMBINE( seed, coarseSampleOrderCustomNV.sampleCount ); + VULKAN_HPP_HASH_COMBINE( seed, coarseSampleOrderCustomNV.sampleLocationCount ); + VULKAN_HPP_HASH_COMBINE( seed, coarseSampleOrderCustomNV.pSampleLocations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const & commandBufferAllocateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferAllocateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferAllocateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferAllocateInfo.commandPool ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferAllocateInfo.level ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferAllocateInfo.commandBufferCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo const & commandBufferInheritanceInfo ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.renderPass ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.subpass ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.framebuffer ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.occlusionQueryEnable ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.queryFlags ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.pipelineStatistics ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo const & commandBufferBeginInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferBeginInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferBeginInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferBeginInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferBeginInfo.pInheritanceInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT const & + commandBufferInheritanceConditionalRenderingInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceConditionalRenderingInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceConditionalRenderingInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceConditionalRenderingInfoEXT.conditionalRenderingEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM const & + commandBufferInheritanceRenderPassTransformInfoQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderPassTransformInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderPassTransformInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderPassTransformInfoQCOM.transform ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderPassTransformInfoQCOM.renderArea ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo const & + commandBufferInheritanceRenderingInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.viewMask ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.pColorAttachmentFormats ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.depthAttachmentFormat ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.stencilAttachmentFormat ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.rasterizationSamples ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Viewport const & viewport ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, viewport.x ); + VULKAN_HPP_HASH_COMBINE( seed, viewport.y ); + VULKAN_HPP_HASH_COMBINE( seed, viewport.width ); + VULKAN_HPP_HASH_COMBINE( seed, viewport.height ); + VULKAN_HPP_HASH_COMBINE( seed, viewport.minDepth ); + VULKAN_HPP_HASH_COMBINE( seed, viewport.maxDepth ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV const & + commandBufferInheritanceViewportScissorInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceViewportScissorInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceViewportScissorInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceViewportScissorInfoNV.viewportScissor2D ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceViewportScissorInfoNV.viewportDepthCount ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceViewportScissorInfoNV.pViewportDepths ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo const & commandBufferSubmitInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferSubmitInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferSubmitInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferSubmitInfo.commandBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferSubmitInfo.deviceMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const & commandPoolCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandPoolCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandPoolCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandPoolCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, commandPoolCreateInfo.queueFamilyIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SpecializationMapEntry const & specializationMapEntry ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, specializationMapEntry.constantID ); + VULKAN_HPP_HASH_COMBINE( seed, specializationMapEntry.offset ); + VULKAN_HPP_HASH_COMBINE( seed, specializationMapEntry.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SpecializationInfo const & specializationInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, specializationInfo.mapEntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, specializationInfo.pMapEntries ); + VULKAN_HPP_HASH_COMBINE( seed, specializationInfo.dataSize ); + VULKAN_HPP_HASH_COMBINE( seed, specializationInfo.pData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const & pipelineShaderStageCreateInfo ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.stage ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.module ); + for ( const char * p = pipelineShaderStageCreateInfo.pName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.pSpecializationInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const & computePipelineCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.stage ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.layout ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.basePipelineHandle ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.basePipelineIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT const & + conditionalRenderingBeginInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfoEXT.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfoEXT.offset ); + VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfoEXT.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ConformanceVersion const & conformanceVersion ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, conformanceVersion.major ); + VULKAN_HPP_HASH_COMBINE( seed, conformanceVersion.minor ); + VULKAN_HPP_HASH_COMBINE( seed, conformanceVersion.subminor ); + VULKAN_HPP_HASH_COMBINE( seed, conformanceVersion.patch ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV const & cooperativeMatrixPropertiesNV ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.MSize ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.NSize ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.KSize ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.AType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.BType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.CType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.DType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.scope ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR const & + copyAccelerationStructureInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyAccelerationStructureInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyAccelerationStructureInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyAccelerationStructureInfoKHR.src ); + VULKAN_HPP_HASH_COMBINE( seed, copyAccelerationStructureInfoKHR.dst ); + VULKAN_HPP_HASH_COMBINE( seed, copyAccelerationStructureInfoKHR.mode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyBufferInfo2 const & copyBufferInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.srcBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.dstBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 const & copyBufferToImageInfo2 ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.srcBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.dstImage ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.dstImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM const & copyCommandTransformInfoQCOM ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyCommandTransformInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyCommandTransformInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyCommandTransformInfoQCOM.transform ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::CopyDescriptorSet const & copyDescriptorSet ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.srcSet ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.srcBinding ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.srcArrayElement ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.dstSet ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.dstBinding ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.dstArrayElement ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.descriptorCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageCopy2 const & imageCopy2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.srcSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.srcOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.dstSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.dstOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.extent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyImageInfo2 const & copyImageInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.srcImage ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.srcImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.dstImage ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.dstImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 const & copyImageToBufferInfo2 ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.srcImage ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.srcImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.dstBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const & cuFunctionCreateInfoNVX ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cuFunctionCreateInfoNVX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cuFunctionCreateInfoNVX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cuFunctionCreateInfoNVX.module ); + for ( const char * p = cuFunctionCreateInfoNVX.pName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX const & cuLaunchInfoNVX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.function ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.gridDimX ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.gridDimY ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.gridDimZ ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.blockDimX ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.blockDimY ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.blockDimZ ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.sharedMemBytes ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.paramCount ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.pParams ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.extraCount ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.pExtras ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const & cuModuleCreateInfoNVX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cuModuleCreateInfoNVX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cuModuleCreateInfoNVX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cuModuleCreateInfoNVX.dataSize ); + VULKAN_HPP_HASH_COMBINE( seed, cuModuleCreateInfoNVX.pData ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR const & d3D12FenceSubmitInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.waitSemaphoreValuesCount ); + VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.pWaitSemaphoreValues ); + VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.signalSemaphoreValuesCount ); + VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.pSignalSemaphoreValues ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT const & debugMarkerMarkerInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerMarkerInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerMarkerInfoEXT.pNext ); + for ( const char * p = debugMarkerMarkerInfoEXT.pMarkerName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + for ( size_t i = 0; i < 4; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerMarkerInfoEXT.color[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT const & debugMarkerObjectNameInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectNameInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectNameInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectNameInfoEXT.objectType ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectNameInfoEXT.object ); + for ( const char * p = debugMarkerObjectNameInfoEXT.pObjectName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT const & debugMarkerObjectTagInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.objectType ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.object ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.tagName ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.tagSize ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.pTag ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const & + debugReportCallbackCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugReportCallbackCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugReportCallbackCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, debugReportCallbackCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, debugReportCallbackCreateInfoEXT.pfnCallback ); + VULKAN_HPP_HASH_COMBINE( seed, debugReportCallbackCreateInfoEXT.pUserData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT const & debugUtilsLabelEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsLabelEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsLabelEXT.pNext ); + for ( const char * p = debugUtilsLabelEXT.pLabelName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + for ( size_t i = 0; i < 4; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsLabelEXT.color[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT const & debugUtilsObjectNameInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectNameInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectNameInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectNameInfoEXT.objectType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectNameInfoEXT.objectHandle ); + for ( const char * p = debugUtilsObjectNameInfoEXT.pObjectName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT const & + debugUtilsMessengerCallbackDataEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.flags ); + for ( const char * p = debugUtilsMessengerCallbackDataEXT.pMessageIdName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.messageIdNumber ); + for ( const char * p = debugUtilsMessengerCallbackDataEXT.pMessage; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.queueLabelCount ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.pQueueLabels ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.cmdBufLabelCount ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.pCmdBufLabels ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.objectCount ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.pObjects ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const & + debugUtilsMessengerCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.messageSeverity ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.messageType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.pfnUserCallback ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.pUserData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT const & debugUtilsObjectTagInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.objectType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.objectHandle ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.tagName ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.tagSize ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.pTag ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV const & + dedicatedAllocationBufferCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationBufferCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationBufferCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationBufferCreateInfoNV.dedicatedAllocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV const & + dedicatedAllocationImageCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationImageCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationImageCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationImageCreateInfoNV.dedicatedAllocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV const & + dedicatedAllocationMemoryAllocateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationMemoryAllocateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationMemoryAllocateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationMemoryAllocateInfoNV.image ); + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationMemoryAllocateInfoNV.buffer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryBarrier2 const & memoryBarrier2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.srcStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.dstStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.dstAccessMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & imageSubresourceRange ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceRange.aspectMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceRange.baseMipLevel ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceRange.levelCount ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceRange.baseArrayLayer ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceRange.layerCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 const & imageMemoryBarrier2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.srcStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.dstStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.dstAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.oldLayout ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.newLayout ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.srcQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.dstQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.image ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.subresourceRange ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DependencyInfo const & dependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.dependencyFlags ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.memoryBarrierCount ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.pMemoryBarriers ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.bufferMemoryBarrierCount ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.pBufferMemoryBarriers ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.imageMemoryBarrierCount ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.pImageMemoryBarriers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DescriptorBufferInfo const & descriptorBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferInfo.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferInfo.offset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferInfo.range ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DescriptorImageInfo const & descriptorImageInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorImageInfo.sampler ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorImageInfo.imageView ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorImageInfo.imageLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DescriptorPoolSize const & descriptorPoolSize ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolSize.type ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolSize.descriptorCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const & descriptorPoolCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.maxSets ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.poolSizeCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.pPoolSizes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo const & + descriptorPoolInlineUniformBlockCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolInlineUniformBlockCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolInlineUniformBlockCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolInlineUniformBlockCreateInfo.maxInlineUniformBlockBindings ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const & descriptorSetAllocateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetAllocateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetAllocateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetAllocateInfo.descriptorPool ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetAllocateInfo.descriptorSetCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetAllocateInfo.pSetLayouts ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding const & descriptorSetLayoutBinding ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBinding.binding ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBinding.descriptorType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBinding.descriptorCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBinding.stageFlags ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBinding.pImmutableSamplers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo const & + descriptorSetLayoutBindingFlagsCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBindingFlagsCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBindingFlagsCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBindingFlagsCreateInfo.bindingCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBindingFlagsCreateInfo.pBindingFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const & descriptorSetLayoutCreateInfo ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutCreateInfo.bindingCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutCreateInfo.pBindings ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport const & descriptorSetLayoutSupport ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutSupport.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutSupport.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutSupport.supported ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo const & + descriptorSetVariableDescriptorCountAllocateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountAllocateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountAllocateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountAllocateInfo.descriptorSetCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountAllocateInfo.pDescriptorCounts ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport const & + descriptorSetVariableDescriptorCountLayoutSupport ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountLayoutSupport.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountLayoutSupport.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountLayoutSupport.maxVariableDescriptorCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry const & descriptorUpdateTemplateEntry ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.dstBinding ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.dstArrayElement ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.descriptorCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.descriptorType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.offset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.stride ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const & + descriptorUpdateTemplateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.descriptorUpdateEntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.pDescriptorUpdateEntries ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.templateType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.descriptorSetLayout ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.pipelineBindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.pipelineLayout ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.set ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements const & deviceBufferMemoryRequirements ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceBufferMemoryRequirements.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceBufferMemoryRequirements.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceBufferMemoryRequirements.pCreateInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo const & deviceQueueCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.queueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.queueCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.pQueuePriorities ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const & physicalDeviceFeatures ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.robustBufferAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.fullDrawIndexUint32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.imageCubeArray ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.independentBlend ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.geometryShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.tessellationShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sampleRateShading ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.dualSrcBlend ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.logicOp ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.multiDrawIndirect ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.drawIndirectFirstInstance ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.depthClamp ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.depthBiasClamp ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.fillModeNonSolid ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.depthBounds ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.wideLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.largePoints ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.alphaToOne ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.multiViewport ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.samplerAnisotropy ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.textureCompressionETC2 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.textureCompressionASTC_LDR ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.textureCompressionBC ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.occlusionQueryPrecise ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.pipelineStatisticsQuery ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.vertexPipelineStoresAndAtomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.fragmentStoresAndAtomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderTessellationAndGeometryPointSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderImageGatherExtended ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageImageExtendedFormats ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageImageMultisample ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageImageReadWithoutFormat ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageImageWriteWithoutFormat ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderUniformBufferArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderSampledImageArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageBufferArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageImageArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderClipDistance ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderCullDistance ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderInt64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderInt16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderResourceResidency ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderResourceMinLod ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseBinding ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidencyBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidencyImage2D ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidencyImage3D ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidency2Samples ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidency4Samples ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidency8Samples ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidency16Samples ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidencyAliased ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.variableMultisampleRate ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.inheritedQueries ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceCreateInfo const & deviceCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.queueCreateInfoCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.pQueueCreateInfos ); + VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.enabledLayerCount ); + for ( size_t i = 0; i < deviceCreateInfo.enabledLayerCount; ++i ) + { + for ( const char * p = deviceCreateInfo.ppEnabledLayerNames[i]; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + } + VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.enabledExtensionCount ); + for ( size_t i = 0; i < deviceCreateInfo.enabledExtensionCount; ++i ) + { + for ( const char * p = deviceCreateInfo.ppEnabledExtensionNames[i]; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + } + VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.pEnabledFeatures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT const & + deviceDeviceMemoryReportCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceDeviceMemoryReportCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceDeviceMemoryReportCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceDeviceMemoryReportCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, deviceDeviceMemoryReportCreateInfoEXT.pfnUserCallback ); + VULKAN_HPP_HASH_COMBINE( seed, deviceDeviceMemoryReportCreateInfoEXT.pUserData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV const & + deviceDiagnosticsConfigCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceDiagnosticsConfigCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceDiagnosticsConfigCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceDiagnosticsConfigCreateInfoNV.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const & deviceEventInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceEventInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceEventInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceEventInfoEXT.deviceEvent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo const & deviceGroupBindSparseInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupBindSparseInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupBindSparseInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupBindSparseInfo.resourceDeviceIndex ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupBindSparseInfo.memoryDeviceIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo const & + deviceGroupCommandBufferBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupCommandBufferBeginInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupCommandBufferBeginInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupCommandBufferBeginInfo.deviceMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo const & deviceGroupDeviceCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupDeviceCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupDeviceCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupDeviceCreateInfo.physicalDeviceCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupDeviceCreateInfo.pPhysicalDevices ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR const & + deviceGroupPresentCapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentCapabilitiesKHR.pNext ); + for ( size_t i = 0; i < VK_MAX_DEVICE_GROUP_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentCapabilitiesKHR.presentMask[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentCapabilitiesKHR.modes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR const & deviceGroupPresentInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentInfoKHR.swapchainCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentInfoKHR.pDeviceMasks ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentInfoKHR.mode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo const & deviceGroupRenderPassBeginInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupRenderPassBeginInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupRenderPassBeginInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupRenderPassBeginInfo.deviceMask ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupRenderPassBeginInfo.deviceRenderAreaCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupRenderPassBeginInfo.pDeviceRenderAreas ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo const & deviceGroupSubmitInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.waitSemaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.pWaitSemaphoreDeviceIndices ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.commandBufferCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.pCommandBufferDeviceMasks ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.signalSemaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.pSignalSemaphoreDeviceIndices ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR const & + deviceGroupSwapchainCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSwapchainCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSwapchainCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSwapchainCreateInfoKHR.modes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageCreateInfo const & imageCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.imageType ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.format ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.extent ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.mipLevels ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.arrayLayers ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.samples ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.tiling ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.usage ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.sharingMode ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.queueFamilyIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.pQueueFamilyIndices ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.initialLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements const & deviceImageMemoryRequirements ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceImageMemoryRequirements.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceImageMemoryRequirements.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceImageMemoryRequirements.pCreateInfo ); + VULKAN_HPP_HASH_COMBINE( seed, deviceImageMemoryRequirements.planeAspect ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo const & + deviceMemoryOpaqueCaptureAddressInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOpaqueCaptureAddressInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOpaqueCaptureAddressInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOpaqueCaptureAddressInfo.memory ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD const & + deviceMemoryOverallocationCreateInfoAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOverallocationCreateInfoAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOverallocationCreateInfoAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOverallocationCreateInfoAMD.overallocationBehavior ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT const & + deviceMemoryReportCallbackDataEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.type ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.memoryObjectId ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.size ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.objectType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.objectHandle ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.heapIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo const & devicePrivateDataCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, devicePrivateDataCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, devicePrivateDataCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, devicePrivateDataCreateInfo.privateDataSlotRequestCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoKHR const & + deviceQueueGlobalPriorityCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueGlobalPriorityCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueGlobalPriorityCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueGlobalPriorityCreateInfoKHR.globalPriority ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const & deviceQueueInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueInfo2.flags ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueInfo2.queueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueInfo2.queueIndex ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const & directFBSurfaceCreateInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, directFBSurfaceCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, directFBSurfaceCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, directFBSurfaceCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, directFBSurfaceCreateInfoEXT.dfb ); + VULKAN_HPP_HASH_COMBINE( seed, directFBSurfaceCreateInfoEXT.surface ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DispatchIndirectCommand const & dispatchIndirectCommand ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dispatchIndirectCommand.x ); + VULKAN_HPP_HASH_COMBINE( seed, dispatchIndirectCommand.y ); + VULKAN_HPP_HASH_COMBINE( seed, dispatchIndirectCommand.z ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const & displayEventInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayEventInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayEventInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayEventInfoEXT.displayEvent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const & displayModeParametersKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayModeParametersKHR.visibleRegion ); + VULKAN_HPP_HASH_COMBINE( seed, displayModeParametersKHR.refreshRate ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const & displayModeCreateInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayModeCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayModeCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayModeCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, displayModeCreateInfoKHR.parameters ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR const & displayModePropertiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayModePropertiesKHR.displayMode ); + VULKAN_HPP_HASH_COMBINE( seed, displayModePropertiesKHR.parameters ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR const & displayModeProperties2KHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayModeProperties2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayModeProperties2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayModeProperties2KHR.displayModeProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD const & + displayNativeHdrSurfaceCapabilitiesAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayNativeHdrSurfaceCapabilitiesAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayNativeHdrSurfaceCapabilitiesAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayNativeHdrSurfaceCapabilitiesAMD.localDimmingSupport ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR const & displayPlaneCapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.supportedAlpha ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.minSrcPosition ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.maxSrcPosition ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.minSrcExtent ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.maxSrcExtent ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.minDstPosition ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.maxDstPosition ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.minDstExtent ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.maxDstExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR const & displayPlaneCapabilities2KHR ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilities2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilities2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilities2KHR.capabilities ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR const & displayPlaneInfo2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneInfo2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneInfo2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneInfo2KHR.mode ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneInfo2KHR.planeIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR const & displayPlanePropertiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPlanePropertiesKHR.currentDisplay ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlanePropertiesKHR.currentStackIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR const & displayPlaneProperties2KHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneProperties2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneProperties2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneProperties2KHR.displayPlaneProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT const & displayPowerInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPowerInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayPowerInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayPowerInfoEXT.powerState ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR const & displayPresentInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPresentInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayPresentInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayPresentInfoKHR.srcRect ); + VULKAN_HPP_HASH_COMBINE( seed, displayPresentInfoKHR.dstRect ); + VULKAN_HPP_HASH_COMBINE( seed, displayPresentInfoKHR.persistent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR const & displayPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.display ); + for ( const char * p = displayPropertiesKHR.displayName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.physicalDimensions ); + VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.physicalResolution ); + VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.supportedTransforms ); + VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.planeReorderPossible ); + VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.persistentContent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DisplayProperties2KHR const & displayProperties2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayProperties2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayProperties2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayProperties2KHR.displayProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const & displaySurfaceCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.displayMode ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.planeIndex ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.planeStackIndex ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.transform ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.globalAlpha ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.alphaMode ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.imageExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand const & drawIndexedIndirectCommand ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drawIndexedIndirectCommand.indexCount ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndexedIndirectCommand.instanceCount ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndexedIndirectCommand.firstIndex ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndexedIndirectCommand.vertexOffset ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndexedIndirectCommand.firstInstance ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DrawIndirectCommand const & drawIndirectCommand ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCommand.vertexCount ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCommand.instanceCount ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCommand.firstVertex ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCommand.firstInstance ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV const & drawMeshTasksIndirectCommandNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drawMeshTasksIndirectCommandNV.taskCount ); + VULKAN_HPP_HASH_COMBINE( seed, drawMeshTasksIndirectCommandNV.firstTask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT const & drmFormatModifierProperties2EXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierProperties2EXT.drmFormatModifier ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierProperties2EXT.drmFormatModifierPlaneCount ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierProperties2EXT.drmFormatModifierTilingFeatures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT const & drmFormatModifierPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesEXT.drmFormatModifier ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesEXT.drmFormatModifierPlaneCount ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesEXT.drmFormatModifierTilingFeatures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT const & + drmFormatModifierPropertiesList2EXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesList2EXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesList2EXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesList2EXT.drmFormatModifierCount ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesList2EXT.pDrmFormatModifierProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT const & + drmFormatModifierPropertiesListEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesListEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesListEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesListEXT.drmFormatModifierCount ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesListEXT.pDrmFormatModifierProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::EventCreateInfo const & eventCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, eventCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, eventCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, eventCreateInfo.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo const & exportFenceCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportFenceCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportFenceCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportFenceCreateInfo.handleTypes ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR const & exportFenceWin32HandleInfoKHR ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportFenceWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportFenceWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportFenceWin32HandleInfoKHR.pAttributes ); + VULKAN_HPP_HASH_COMBINE( seed, exportFenceWin32HandleInfoKHR.dwAccess ); + VULKAN_HPP_HASH_COMBINE( seed, exportFenceWin32HandleInfoKHR.name ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo const & exportMemoryAllocateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfo.handleTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV const & exportMemoryAllocateInfoNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfoNV.handleTypes ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR const & exportMemoryWin32HandleInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoKHR.pAttributes ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoKHR.dwAccess ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoKHR.name ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV const & exportMemoryWin32HandleInfoNV ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoNV.pAttributes ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoNV.dwAccess ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo const & exportSemaphoreCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreCreateInfo.handleTypes ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR const & + exportSemaphoreWin32HandleInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreWin32HandleInfoKHR.pAttributes ); + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreWin32HandleInfoKHR.dwAccess ); + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreWin32HandleInfoKHR.name ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ExtensionProperties const & extensionProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + for ( size_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, extensionProperties.extensionName[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, extensionProperties.specVersion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const & externalMemoryProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryProperties.externalMemoryFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryProperties.exportFromImportedHandleTypes ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryProperties.compatibleHandleTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalBufferProperties const & externalBufferProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalBufferProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalBufferProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalBufferProperties.externalMemoryProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalFenceProperties const & externalFenceProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalFenceProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalFenceProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalFenceProperties.exportFromImportedHandleTypes ); + VULKAN_HPP_HASH_COMBINE( seed, externalFenceProperties.compatibleHandleTypes ); + VULKAN_HPP_HASH_COMBINE( seed, externalFenceProperties.externalFenceFeatures ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ExternalFormatANDROID const & externalFormatANDROID ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalFormatANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalFormatANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalFormatANDROID.externalFormat ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties const & externalImageFormatProperties ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatProperties.externalMemoryProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ImageFormatProperties const & imageFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties.maxExtent ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties.maxMipLevels ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties.maxArrayLayers ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties.sampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties.maxResourceSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV const & externalImageFormatPropertiesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatPropertiesNV.imageFormatProperties ); + VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatPropertiesNV.externalMemoryFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatPropertiesNV.exportFromImportedHandleTypes ); + VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatPropertiesNV.compatibleHandleTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo const & externalMemoryBufferCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryBufferCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryBufferCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryBufferCreateInfo.handleTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo const & externalMemoryImageCreateInfo ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfo.handleTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV const & externalMemoryImageCreateInfoNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfoNV.handleTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties const & externalSemaphoreProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalSemaphoreProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalSemaphoreProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalSemaphoreProperties.exportFromImportedHandleTypes ); + VULKAN_HPP_HASH_COMBINE( seed, externalSemaphoreProperties.compatibleHandleTypes ); + VULKAN_HPP_HASH_COMBINE( seed, externalSemaphoreProperties.externalSemaphoreFeatures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FenceCreateInfo const & fenceCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, fenceCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, fenceCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, fenceCreateInfo.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR const & fenceGetFdInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, fenceGetFdInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, fenceGetFdInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, fenceGetFdInfoKHR.fence ); + VULKAN_HPP_HASH_COMBINE( seed, fenceGetFdInfoKHR.handleType ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR const & fenceGetWin32HandleInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, fenceGetWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, fenceGetWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, fenceGetWin32HandleInfoKHR.fence ); + VULKAN_HPP_HASH_COMBINE( seed, fenceGetWin32HandleInfoKHR.handleType ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT const & + filterCubicImageViewImageFormatPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, filterCubicImageViewImageFormatPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, filterCubicImageViewImageFormatPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, filterCubicImageViewImageFormatPropertiesEXT.filterCubic ); + VULKAN_HPP_HASH_COMBINE( seed, filterCubicImageViewImageFormatPropertiesEXT.filterCubicMinmax ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FormatProperties const & formatProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, formatProperties.linearTilingFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties.optimalTilingFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties.bufferFeatures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::FormatProperties2 const & formatProperties2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, formatProperties2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties2.formatProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::FormatProperties3 const & formatProperties3 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, formatProperties3.sType ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties3.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties3.linearTilingFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties3.optimalTilingFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties3.bufferFeatures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR const & + fragmentShadingRateAttachmentInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, fragmentShadingRateAttachmentInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, fragmentShadingRateAttachmentInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, fragmentShadingRateAttachmentInfoKHR.pFragmentShadingRateAttachment ); + VULKAN_HPP_HASH_COMBINE( seed, fragmentShadingRateAttachmentInfoKHR.shadingRateAttachmentTexelSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo const & framebufferAttachmentImageInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.usage ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.width ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.height ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.layerCount ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.viewFormatCount ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.pViewFormats ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo const & + framebufferAttachmentsCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentsCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentsCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentsCreateInfo.attachmentImageInfoCount ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentsCreateInfo.pAttachmentImageInfos ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const & framebufferCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.renderPass ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.attachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.pAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.width ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.height ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.layers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV const & + framebufferMixedSamplesCombinationNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.coverageReductionMode ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.rasterizationSamples ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.depthStencilSamples ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.colorSamples ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV const & indirectCommandsStreamNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsStreamNV.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsStreamNV.offset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV const & generatedCommandsInfoNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.pipelineBindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.pipeline ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.indirectCommandsLayout ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.streamCount ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.pStreams ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sequencesCount ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.preprocessBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.preprocessOffset ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.preprocessSize ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sequencesCountBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sequencesCountOffset ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sequencesIndexBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sequencesIndexOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV const & + generatedCommandsMemoryRequirementsInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.pipelineBindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.pipeline ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.indirectCommandsLayout ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.maxSequencesCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VertexInputBindingDescription const & vertexInputBindingDescription ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription.binding ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription.stride ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription.inputRate ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription const & vertexInputAttributeDescription ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription.location ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription.binding ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription.format ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription.offset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo const & + pipelineVertexInputStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.vertexBindingDescriptionCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.pVertexBindingDescriptions ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.vertexAttributeDescriptionCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.pVertexAttributeDescriptions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo const & + pipelineInputAssemblyStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineInputAssemblyStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineInputAssemblyStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineInputAssemblyStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineInputAssemblyStateCreateInfo.topology ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineInputAssemblyStateCreateInfo.primitiveRestartEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo const & + pipelineTessellationStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationStateCreateInfo.patchControlPoints ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo const & pipelineViewportStateCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.viewportCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.pViewports ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.scissorCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.pScissors ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo const & + pipelineRasterizationStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.depthClampEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.rasterizerDiscardEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.polygonMode ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.cullMode ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.frontFace ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.depthBiasEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.depthBiasConstantFactor ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.depthBiasClamp ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.depthBiasSlopeFactor ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.lineWidth ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo const & + pipelineMultisampleStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.rasterizationSamples ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.sampleShadingEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.minSampleShading ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.pSampleMask ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.alphaToCoverageEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.alphaToOneEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::StencilOpState const & stencilOpState ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.failOp ); + VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.passOp ); + VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.depthFailOp ); + VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.compareOp ); + VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.compareMask ); + VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.writeMask ); + VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.reference ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo const & + pipelineDepthStencilStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.depthTestEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.depthWriteEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.depthCompareOp ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.depthBoundsTestEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.stencilTestEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.front ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.back ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.minDepthBounds ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.maxDepthBounds ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState const & + pipelineColorBlendAttachmentState ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.blendEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.srcColorBlendFactor ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.dstColorBlendFactor ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.colorBlendOp ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.srcAlphaBlendFactor ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.dstAlphaBlendFactor ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.alphaBlendOp ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.colorWriteMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo const & + pipelineColorBlendStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.logicOpEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.logicOp ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.attachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.pAttachments ); + for ( size_t i = 0; i < 4; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.blendConstants[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo const & pipelineDynamicStateCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineDynamicStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDynamicStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDynamicStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDynamicStateCreateInfo.dynamicStateCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDynamicStateCreateInfo.pDynamicStates ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const & graphicsPipelineCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.stageCount ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pStages ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pVertexInputState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pInputAssemblyState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pTessellationState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pViewportState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pRasterizationState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pMultisampleState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pDepthStencilState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pColorBlendState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pDynamicState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.layout ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.renderPass ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.subpass ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.basePipelineHandle ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.basePipelineIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV const & graphicsShaderGroupCreateInfoNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.stageCount ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.pStages ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.pVertexInputState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.pTessellationState ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV const & + graphicsPipelineShaderGroupsCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.groupCount ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.pGroups ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.pipelineCount ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.pPipelines ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::XYColorEXT const & xYColorEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, xYColorEXT.x ); + VULKAN_HPP_HASH_COMBINE( seed, xYColorEXT.y ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::HdrMetadataEXT const & hdrMetadataEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.displayPrimaryRed ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.displayPrimaryGreen ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.displayPrimaryBlue ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.whitePoint ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.maxLuminance ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.minLuminance ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.maxContentLightLevel ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.maxFrameAverageLightLevel ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const & headlessSurfaceCreateInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, headlessSurfaceCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, headlessSurfaceCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, headlessSurfaceCreateInfoEXT.flags ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_IOS_MVK ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const & iOSSurfaceCreateInfoMVK ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, iOSSurfaceCreateInfoMVK.sType ); + VULKAN_HPP_HASH_COMBINE( seed, iOSSurfaceCreateInfoMVK.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, iOSSurfaceCreateInfoMVK.flags ); + VULKAN_HPP_HASH_COMBINE( seed, iOSSurfaceCreateInfoMVK.pView ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_IOS_MVK*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageBlit const & imageBlit ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageBlit.srcSubresource ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, imageBlit.srcOffsets[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, imageBlit.dstSubresource ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, imageBlit.dstOffsets[i] ); + } + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA const & + imageFormatConstraintsInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.imageCreateInfo ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.requiredFormatFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.flags ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.sysmemPixelFormat ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.colorSpaceCount ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.pColorSpaces ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA const & imageConstraintsInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.formatConstraintsCount ); + VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.pFormatConstraints ); + VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.bufferCollectionConstraints ); + VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.flags ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageCopy const & imageCopy ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageCopy.srcSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy.srcOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy.dstSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy.dstOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy.extent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SubresourceLayout const & subresourceLayout ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout.offset ); + VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout.size ); + VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout.rowPitch ); + VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout.arrayPitch ); + VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout.depthPitch ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT const & + imageDrmFormatModifierExplicitCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierExplicitCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierExplicitCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierExplicitCreateInfoEXT.drmFormatModifier ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierExplicitCreateInfoEXT.drmFormatModifierPlaneCount ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierExplicitCreateInfoEXT.pPlaneLayouts ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT const & + imageDrmFormatModifierListCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierListCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierListCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierListCreateInfoEXT.drmFormatModifierCount ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierListCreateInfoEXT.pDrmFormatModifiers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT const & + imageDrmFormatModifierPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierPropertiesEXT.drmFormatModifier ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo const & imageFormatListCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageFormatListCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatListCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatListCreateInfo.viewFormatCount ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatListCreateInfo.pViewFormats ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageFormatProperties2 const & imageFormatProperties2 ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties2.imageFormatProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ImageMemoryBarrier const & imageMemoryBarrier ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.dstAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.oldLayout ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.newLayout ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.srcQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.dstQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.image ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.subresourceRange ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 const & imageMemoryRequirementsInfo2 ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryRequirementsInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryRequirementsInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryRequirementsInfo2.image ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const & + imagePipeSurfaceCreateInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imagePipeSurfaceCreateInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imagePipeSurfaceCreateInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imagePipeSurfaceCreateInfoFUCHSIA.flags ); + VULKAN_HPP_HASH_COMBINE( seed, imagePipeSurfaceCreateInfoFUCHSIA.imagePipeHandle ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo const & + imagePlaneMemoryRequirementsInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imagePlaneMemoryRequirementsInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imagePlaneMemoryRequirementsInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imagePlaneMemoryRequirementsInfo.planeAspect ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageResolve const & imageResolve ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageResolve.srcSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve.srcOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve.dstSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve.dstOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve.extent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageResolve2 const & imageResolve2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.srcSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.srcOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.dstSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.dstOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.extent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 const & + imageSparseMemoryRequirementsInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageSparseMemoryRequirementsInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageSparseMemoryRequirementsInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageSparseMemoryRequirementsInfo2.image ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo const & imageStencilUsageCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageStencilUsageCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageStencilUsageCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageStencilUsageCreateInfo.stencilUsage ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR const & imageSwapchainCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageSwapchainCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageSwapchainCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageSwapchainCreateInfoKHR.swapchain ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT const & imageViewASTCDecodeModeEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageViewASTCDecodeModeEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewASTCDecodeModeEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewASTCDecodeModeEXT.decodeMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX const & imageViewAddressPropertiesNVX ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageViewAddressPropertiesNVX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewAddressPropertiesNVX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewAddressPropertiesNVX.deviceAddress ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewAddressPropertiesNVX.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const & imageViewCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.image ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.viewType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.format ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.components ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.subresourceRange ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX const & imageViewHandleInfoNVX ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageViewHandleInfoNVX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewHandleInfoNVX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewHandleInfoNVX.imageView ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewHandleInfoNVX.descriptorType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewHandleInfoNVX.sampler ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT const & imageViewMinLodCreateInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageViewMinLodCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewMinLodCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewMinLodCreateInfoEXT.minLod ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo const & imageViewUsageCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageViewUsageCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewUsageCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewUsageCreateInfo.usage ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID const & + importAndroidHardwareBufferInfoANDROID ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importAndroidHardwareBufferInfoANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importAndroidHardwareBufferInfoANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importAndroidHardwareBufferInfoANDROID.buffer ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR const & importFenceFdInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.fence ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.fd ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR const & importFenceWin32HandleInfoKHR ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.fence ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.handle ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.name ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA const & + importMemoryBufferCollectionFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMemoryBufferCollectionFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryBufferCollectionFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryBufferCollectionFUCHSIA.collection ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryBufferCollectionFUCHSIA.index ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR const & importMemoryFdInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMemoryFdInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryFdInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryFdInfoKHR.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryFdInfoKHR.fd ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT const & importMemoryHostPointerInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMemoryHostPointerInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryHostPointerInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryHostPointerInfoEXT.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryHostPointerInfoEXT.pHostPointer ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR const & importMemoryWin32HandleInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoKHR.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoKHR.handle ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoKHR.name ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV const & importMemoryWin32HandleInfoNV ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoNV.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoNV.handle ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA const & + importMemoryZirconHandleInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMemoryZirconHandleInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryZirconHandleInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryZirconHandleInfoFUCHSIA.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryZirconHandleInfoFUCHSIA.handle ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR const & importSemaphoreFdInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.fd ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR const & + importSemaphoreWin32HandleInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.handle ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.name ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA const & + importSemaphoreZirconHandleInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.flags ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.zirconHandle ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV const & indirectCommandsLayoutTokenNV ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.tokenType ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.stream ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.offset ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.vertexBindingUnit ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.vertexDynamicStride ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pushconstantPipelineLayout ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pushconstantShaderStageFlags ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pushconstantOffset ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pushconstantSize ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.indirectStateFlags ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.indexTypeCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pIndexTypes ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pIndexTypeValues ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const & + indirectCommandsLayoutCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.pipelineBindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.tokenCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.pTokens ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.streamCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.pStreamStrides ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL const & + initializePerformanceApiInfoINTEL ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, initializePerformanceApiInfoINTEL.sType ); + VULKAN_HPP_HASH_COMBINE( seed, initializePerformanceApiInfoINTEL.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, initializePerformanceApiInfoINTEL.pUserData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference const & inputAttachmentAspectReference ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, inputAttachmentAspectReference.subpass ); + VULKAN_HPP_HASH_COMBINE( seed, inputAttachmentAspectReference.inputAttachmentIndex ); + VULKAN_HPP_HASH_COMBINE( seed, inputAttachmentAspectReference.aspectMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::InstanceCreateInfo const & instanceCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.pApplicationInfo ); + VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.enabledLayerCount ); + for ( size_t i = 0; i < instanceCreateInfo.enabledLayerCount; ++i ) + { + for ( const char * p = instanceCreateInfo.ppEnabledLayerNames[i]; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + } + VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.enabledExtensionCount ); + for ( size_t i = 0; i < instanceCreateInfo.enabledExtensionCount; ++i ) + { + for ( const char * p = instanceCreateInfo.ppEnabledExtensionNames[i]; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::LayerProperties const & layerProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + for ( size_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, layerProperties.layerName[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, layerProperties.specVersion ); + VULKAN_HPP_HASH_COMBINE( seed, layerProperties.implementationVersion ); + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, layerProperties.description[i] ); + } + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_MACOS_MVK ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const & macOSSurfaceCreateInfoMVK ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, macOSSurfaceCreateInfoMVK.sType ); + VULKAN_HPP_HASH_COMBINE( seed, macOSSurfaceCreateInfoMVK.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, macOSSurfaceCreateInfoMVK.flags ); + VULKAN_HPP_HASH_COMBINE( seed, macOSSurfaceCreateInfoMVK.pView ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::MappedMemoryRange const & mappedMemoryRange ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, mappedMemoryRange.sType ); + VULKAN_HPP_HASH_COMBINE( seed, mappedMemoryRange.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, mappedMemoryRange.memory ); + VULKAN_HPP_HASH_COMBINE( seed, mappedMemoryRange.offset ); + VULKAN_HPP_HASH_COMBINE( seed, mappedMemoryRange.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo const & memoryAllocateFlagsInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateFlagsInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateFlagsInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateFlagsInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateFlagsInfo.deviceMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const & memoryAllocateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateInfo.allocationSize ); + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateInfo.memoryTypeIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryBarrier const & memoryBarrier ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier.dstAccessMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo const & memoryDedicatedAllocateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedAllocateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedAllocateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedAllocateInfo.image ); + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedAllocateInfo.buffer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements const & memoryDedicatedRequirements ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedRequirements.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedRequirements.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedRequirements.prefersDedicatedAllocation ); + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedRequirements.requiresDedicatedAllocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR const & memoryFdPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryFdPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryFdPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryFdPropertiesKHR.memoryTypeBits ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID const & + memoryGetAndroidHardwareBufferInfoANDROID ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryGetAndroidHardwareBufferInfoANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetAndroidHardwareBufferInfoANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetAndroidHardwareBufferInfoANDROID.memory ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR const & memoryGetFdInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryGetFdInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetFdInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetFdInfoKHR.memory ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetFdInfoKHR.handleType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV const & memoryGetRemoteAddressInfoNV ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryGetRemoteAddressInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetRemoteAddressInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetRemoteAddressInfoNV.memory ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetRemoteAddressInfoNV.handleType ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR const & memoryGetWin32HandleInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryGetWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetWin32HandleInfoKHR.memory ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetWin32HandleInfoKHR.handleType ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA const & + memoryGetZirconHandleInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryGetZirconHandleInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetZirconHandleInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetZirconHandleInfoFUCHSIA.memory ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetZirconHandleInfoFUCHSIA.handleType ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryHeap const & memoryHeap ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryHeap.size ); + VULKAN_HPP_HASH_COMBINE( seed, memoryHeap.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT const & memoryHostPointerPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryHostPointerPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryHostPointerPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryHostPointerPropertiesEXT.memoryTypeBits ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo const & + memoryOpaqueCaptureAddressAllocateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryOpaqueCaptureAddressAllocateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryOpaqueCaptureAddressAllocateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryOpaqueCaptureAddressAllocateInfo.opaqueCaptureAddress ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT const & memoryPriorityAllocateInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryPriorityAllocateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryPriorityAllocateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryPriorityAllocateInfoEXT.priority ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::MemoryRequirements const & memoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements.size ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements.alignment ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements.memoryTypeBits ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::MemoryRequirements2 const & memoryRequirements2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements2.memoryRequirements ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryType const & memoryType ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryType.propertyFlags ); + VULKAN_HPP_HASH_COMBINE( seed, memoryType.heapIndex ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR const & memoryWin32HandlePropertiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryWin32HandlePropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryWin32HandlePropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryWin32HandlePropertiesKHR.memoryTypeBits ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA const & + memoryZirconHandlePropertiesFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryZirconHandlePropertiesFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryZirconHandlePropertiesFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryZirconHandlePropertiesFUCHSIA.memoryTypeBits ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const & metalSurfaceCreateInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, metalSurfaceCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, metalSurfaceCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, metalSurfaceCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, metalSurfaceCreateInfoEXT.pLayer ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT const & multiDrawIndexedInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, multiDrawIndexedInfoEXT.firstIndex ); + VULKAN_HPP_HASH_COMBINE( seed, multiDrawIndexedInfoEXT.indexCount ); + VULKAN_HPP_HASH_COMBINE( seed, multiDrawIndexedInfoEXT.vertexOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT const & multiDrawInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, multiDrawInfoEXT.firstVertex ); + VULKAN_HPP_HASH_COMBINE( seed, multiDrawInfoEXT.vertexCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT const & multisamplePropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, multisamplePropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, multisamplePropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, multisamplePropertiesEXT.maxSampleLocationGridSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX const & + multiviewPerViewAttributesInfoNVX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewAttributesInfoNVX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewAttributesInfoNVX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewAttributesInfoNVX.perViewAttributes ); + VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewAttributesInfoNVX.perViewAttributesPositionXOnly ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE const & mutableDescriptorTypeListVALVE ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeListVALVE.descriptorTypeCount ); + VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeListVALVE.pDescriptorTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE const & + mutableDescriptorTypeCreateInfoVALVE ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeCreateInfoVALVE.sType ); + VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeCreateInfoVALVE.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeCreateInfoVALVE.mutableDescriptorTypeListCount ); + VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeCreateInfoVALVE.pMutableDescriptorTypeLists ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE const & pastPresentationTimingGOOGLE ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingGOOGLE.presentID ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingGOOGLE.desiredPresentTime ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingGOOGLE.actualPresentTime ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingGOOGLE.earliestPresentTime ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingGOOGLE.presentMargin ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const & + performanceConfigurationAcquireInfoINTEL ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceConfigurationAcquireInfoINTEL.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceConfigurationAcquireInfoINTEL.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceConfigurationAcquireInfoINTEL.type ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR const & + performanceCounterDescriptionKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.flags ); + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.name[i] ); + } + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.category[i] ); + } + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.description[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PerformanceCounterKHR const & performanceCounterKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.unit ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.scope ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.storage ); + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.uuid[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL const & performanceMarkerInfoINTEL ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceMarkerInfoINTEL.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceMarkerInfoINTEL.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceMarkerInfoINTEL.marker ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL const & performanceOverrideInfoINTEL ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceOverrideInfoINTEL.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceOverrideInfoINTEL.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceOverrideInfoINTEL.type ); + VULKAN_HPP_HASH_COMBINE( seed, performanceOverrideInfoINTEL.enable ); + VULKAN_HPP_HASH_COMBINE( seed, performanceOverrideInfoINTEL.parameter ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR const & performanceQuerySubmitInfoKHR ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceQuerySubmitInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceQuerySubmitInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceQuerySubmitInfoKHR.counterPassIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL const & + performanceStreamMarkerInfoINTEL ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceStreamMarkerInfoINTEL.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceStreamMarkerInfoINTEL.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceStreamMarkerInfoINTEL.marker ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures const & + physicalDevice16BitStorageFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.storageBuffer16BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.uniformAndStorageBuffer16BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.storagePushConstant16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.storageInputOutput16 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT const & + physicalDevice4444FormatsFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice4444FormatsFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice4444FormatsFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice4444FormatsFeaturesEXT.formatA4R4G4B4 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice4444FormatsFeaturesEXT.formatA4B4G4R4 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures const & + physicalDevice8BitStorageFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice8BitStorageFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice8BitStorageFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice8BitStorageFeatures.storageBuffer8BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice8BitStorageFeatures.uniformAndStorageBuffer8BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice8BitStorageFeatures.storagePushConstant8 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT const & + physicalDeviceASTCDecodeFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceASTCDecodeFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceASTCDecodeFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceASTCDecodeFeaturesEXT.decodeModeSharedExponent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR const & + physicalDeviceAccelerationStructureFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructure ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructureCaptureReplay ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructureIndirectBuild ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructureHostCommands ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceAccelerationStructureFeaturesKHR.descriptorBindingAccelerationStructureUpdateAfterBind ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR const & + physicalDeviceAccelerationStructurePropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxGeometryCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxInstanceCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxPrimitiveCount ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceAccelerationStructurePropertiesKHR.maxPerStageDescriptorAccelerationStructures ); + VULKAN_HPP_HASH_COMBINE( + seed, + physicalDeviceAccelerationStructurePropertiesKHR.maxPerStageDescriptorUpdateAfterBindAccelerationStructures ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceAccelerationStructurePropertiesKHR.maxDescriptorSetAccelerationStructures ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceAccelerationStructurePropertiesKHR.maxDescriptorSetUpdateAfterBindAccelerationStructures ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceAccelerationStructurePropertiesKHR.minAccelerationStructureScratchOffsetAlignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & + physicalDeviceBlendOperationAdvancedFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedFeaturesEXT.advancedBlendCoherentOperations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & + physicalDeviceBlendOperationAdvancedPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendMaxColorAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendIndependentBlend ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendNonPremultipliedSrcColor ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendNonPremultipliedDstColor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendCorrelatedOverlap ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendAllOperations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT const & + physicalDeviceBorderColorSwizzleFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBorderColorSwizzleFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBorderColorSwizzleFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBorderColorSwizzleFeaturesEXT.borderColorSwizzle ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBorderColorSwizzleFeaturesEXT.borderColorSwizzleFromImage ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures const & + physicalDeviceBufferDeviceAddressFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddress ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddressCaptureReplay ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddressMultiDevice ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT const & + physicalDeviceBufferDeviceAddressFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeaturesEXT.bufferDeviceAddress ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeaturesEXT.bufferDeviceAddressCaptureReplay ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeaturesEXT.bufferDeviceAddressMultiDevice ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD const & + physicalDeviceCoherentMemoryFeaturesAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoherentMemoryFeaturesAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoherentMemoryFeaturesAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoherentMemoryFeaturesAMD.deviceCoherentMemory ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT const & + physicalDeviceColorWriteEnableFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceColorWriteEnableFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceColorWriteEnableFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceColorWriteEnableFeaturesEXT.colorWriteEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV const & + physicalDeviceComputeShaderDerivativesFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeShaderDerivativesFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeShaderDerivativesFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeShaderDerivativesFeaturesNV.computeDerivativeGroupQuads ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeShaderDerivativesFeaturesNV.computeDerivativeGroupLinear ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT const & + physicalDeviceConditionalRenderingFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConditionalRenderingFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConditionalRenderingFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConditionalRenderingFeaturesEXT.conditionalRendering ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConditionalRenderingFeaturesEXT.inheritedConditionalRendering ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT const & + physicalDeviceConservativeRasterizationPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.primitiveOverestimationSize ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceConservativeRasterizationPropertiesEXT.maxExtraPrimitiveOverestimationSize ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceConservativeRasterizationPropertiesEXT.extraPrimitiveOverestimationSizeGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.primitiveUnderestimation ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceConservativeRasterizationPropertiesEXT.conservativePointAndLineRasterization ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceConservativeRasterizationPropertiesEXT.degenerateTrianglesRasterized ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.degenerateLinesRasterized ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceConservativeRasterizationPropertiesEXT.fullyCoveredFragmentShaderInputVariable ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceConservativeRasterizationPropertiesEXT.conservativeRasterizationPostDepthCoverage ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV const & + physicalDeviceCooperativeMatrixFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesNV.cooperativeMatrix ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesNV.cooperativeMatrixRobustBufferAccess ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV const & + physicalDeviceCooperativeMatrixPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixPropertiesNV.cooperativeMatrixSupportedStages ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV const & + physicalDeviceCornerSampledImageFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCornerSampledImageFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCornerSampledImageFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCornerSampledImageFeaturesNV.cornerSampledImage ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV const & + physicalDeviceCoverageReductionModeFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoverageReductionModeFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoverageReductionModeFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoverageReductionModeFeaturesNV.coverageReductionMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT const & + physicalDeviceCustomBorderColorFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorFeaturesEXT.customBorderColors ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorFeaturesEXT.customBorderColorWithoutFormat ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT const & + physicalDeviceCustomBorderColorPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorPropertiesEXT.maxCustomBorderColorSamplers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & + physicalDeviceDedicatedAllocationImageAliasingFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDedicatedAllocationImageAliasingFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDedicatedAllocationImageAliasingFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDedicatedAllocationImageAliasingFeaturesNV.dedicatedAllocationImageAliasing ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT const & + physicalDeviceDepthClipControlFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipControlFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipControlFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipControlFeaturesEXT.depthClipControl ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT const & + physicalDeviceDepthClipEnableFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipEnableFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipEnableFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipEnableFeaturesEXT.depthClipEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties const & + physicalDeviceDepthStencilResolveProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.supportedDepthResolveModes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.supportedStencilResolveModes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.independentResolveNone ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.independentResolve ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures const & + physicalDeviceDescriptorIndexingFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingFeatures.shaderInputAttachmentArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingFeatures.shaderUniformBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingFeatures.shaderStorageBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingFeatures.shaderStorageImageArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingFeatures.shaderInputAttachmentArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingFeatures.descriptorBindingUniformBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingFeatures.descriptorBindingSampledImageUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageImageUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingUniformTexelBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageTexelBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingFeatures.descriptorBindingUpdateUnusedWhilePending ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingPartiallyBound ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingFeatures.descriptorBindingVariableDescriptorCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.runtimeDescriptorArray ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties const & + physicalDeviceDescriptorIndexingProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingProperties.maxUpdateAfterBindDescriptorsInAllPools ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.shaderUniformBufferArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.shaderSampledImageArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.shaderStorageBufferArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.shaderStorageImageArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.shaderInputAttachmentArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.robustBufferAccessUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.quadDivergentImplicitLod ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindSamplers ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindUniformBuffers ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindStorageBuffers ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindSampledImages ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindStorageImages ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindInputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxPerStageUpdateAfterBindResources ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindSamplers ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindUniformBuffers ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindStorageBuffers ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindSampledImages ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindStorageImages ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindInputAttachments ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & + physicalDeviceDeviceGeneratedCommandsFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesNV.deviceGeneratedCommands ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & + physicalDeviceDeviceGeneratedCommandsPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxGraphicsShaderGroupCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxIndirectSequenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxIndirectCommandsTokenCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxIndirectCommandsStreamCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxIndirectCommandsTokenOffset ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxIndirectCommandsStreamStride ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.minSequencesCountBufferOffsetAlignment ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.minSequencesIndexBufferOffsetAlignment ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.minIndirectCommandsBufferOffsetAlignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT const & + physicalDeviceDeviceMemoryReportFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceMemoryReportFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceMemoryReportFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceMemoryReportFeaturesEXT.deviceMemoryReport ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV const & + physicalDeviceDiagnosticsConfigFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiagnosticsConfigFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiagnosticsConfigFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiagnosticsConfigFeaturesNV.diagnosticsConfig ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT const & + physicalDeviceDiscardRectanglePropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiscardRectanglePropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiscardRectanglePropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiscardRectanglePropertiesEXT.maxDiscardRectangles ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties const & physicalDeviceDriverProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.driverID ); + for ( size_t i = 0; i < VK_MAX_DRIVER_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.driverName[i] ); + } + for ( size_t i = 0; i < VK_MAX_DRIVER_INFO_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.driverInfo[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.conformanceVersion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT const & physicalDeviceDrmPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.hasPrimary ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.hasRender ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.primaryMajor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.primaryMinor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.renderMajor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.renderMinor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures const & + physicalDeviceDynamicRenderingFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDynamicRenderingFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDynamicRenderingFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDynamicRenderingFeatures.dynamicRendering ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV const & + physicalDeviceExclusiveScissorFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExclusiveScissorFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExclusiveScissorFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExclusiveScissorFeaturesNV.exclusiveScissor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT const & + physicalDeviceExtendedDynamicState2FeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState2FeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState2FeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2LogicOp ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2PatchControlPoints ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT const & + physicalDeviceExtendedDynamicStateFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicStateFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicStateFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicStateFeaturesEXT.extendedDynamicState ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo const & + physicalDeviceExternalBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalBufferInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalBufferInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalBufferInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalBufferInfo.usage ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalBufferInfo.handleType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo const & physicalDeviceExternalFenceInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFenceInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFenceInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFenceInfo.handleType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo const & + physicalDeviceExternalImageFormatInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalImageFormatInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalImageFormatInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalImageFormatInfo.handleType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT const & + physicalDeviceExternalMemoryHostPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryHostPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryHostPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryHostPropertiesEXT.minImportedHostPointerAlignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV const & + physicalDeviceExternalMemoryRDMAFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryRDMAFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryRDMAFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryRDMAFeaturesNV.externalMemoryRDMA ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo const & + physicalDeviceExternalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalSemaphoreInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalSemaphoreInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalSemaphoreInfo.handleType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 const & physicalDeviceFeatures2 ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures2.features ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties const & + physicalDeviceFloatControlsProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.denormBehaviorIndependence ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.roundingModeIndependence ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderSignedZeroInfNanPreserveFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderSignedZeroInfNanPreserveFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderSignedZeroInfNanPreserveFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormPreserveFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormPreserveFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormPreserveFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormFlushToZeroFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormFlushToZeroFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormFlushToZeroFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTEFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTEFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTEFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTZFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTZFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTZFloat64 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT const & + physicalDeviceFragmentDensityMap2FeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2FeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2FeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2FeaturesEXT.fragmentDensityMapDeferred ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT const & + physicalDeviceFragmentDensityMap2PropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.subsampledLoads ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceFragmentDensityMap2PropertiesEXT.subsampledCoarseReconstructionEarlyAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.maxSubsampledArrayLayers ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceFragmentDensityMap2PropertiesEXT.maxDescriptorSetSubsampledSamplers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT const & + physicalDeviceFragmentDensityMapFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMap ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMapDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMapNonSubsampledImages ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & + physicalDeviceFragmentDensityMapOffsetFeaturesQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetFeaturesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetFeaturesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetFeaturesQCOM.fragmentDensityMapOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & + physicalDeviceFragmentDensityMapOffsetPropertiesQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetPropertiesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetPropertiesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceFragmentDensityMapOffsetPropertiesQCOM.fragmentDensityOffsetGranularity ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT const & + physicalDeviceFragmentDensityMapPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapPropertiesEXT.minFragmentDensityTexelSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapPropertiesEXT.maxFragmentDensityTexelSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapPropertiesEXT.fragmentDensityInvocations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & + physicalDeviceFragmentShaderBarycentricFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderBarycentricFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderBarycentricFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderBarycentricFeaturesNV.fragmentShaderBarycentric ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & + physicalDeviceFragmentShaderInterlockFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderInterlockFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderInterlockFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderSampleInterlock ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderPixelInterlock ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderShadingRateInterlock ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & + physicalDeviceFragmentShadingRateEnumsFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsFeaturesNV.fragmentShadingRateEnums ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsFeaturesNV.supersampleFragmentShadingRates ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceFragmentShadingRateEnumsFeaturesNV.noInvocationFragmentShadingRates ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & + physicalDeviceFragmentShadingRateEnumsPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceFragmentShadingRateEnumsPropertiesNV.maxFragmentShadingRateInvocationCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR const & + physicalDeviceFragmentShadingRateFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateFeaturesKHR.pipelineFragmentShadingRate ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateFeaturesKHR.primitiveFragmentShadingRate ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateFeaturesKHR.attachmentFragmentShadingRate ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR const & + physicalDeviceFragmentShadingRateKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateKHR.sampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateKHR.fragmentSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR const & + physicalDeviceFragmentShadingRatePropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceFragmentShadingRatePropertiesKHR.minFragmentShadingRateAttachmentTexelSize ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentShadingRateAttachmentTexelSize ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentShadingRateAttachmentTexelSizeAspectRatio ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceFragmentShadingRatePropertiesKHR.primitiveFragmentShadingRateWithMultipleViewports ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.layeredShadingRateAttachments ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateNonTrivialCombinerOps ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentSizeAspectRatio ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentShadingRateCoverageSamples ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentShadingRateRasterizationSamples ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithShaderDepthStencilWrites ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithSampleMask ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithShaderSampleMask ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithConservativeRasterization ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithFragmentShaderInterlock ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithCustomSampleLocations ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateStrictMultiplyCombiner ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesKHR const & + physicalDeviceGlobalPriorityQueryFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGlobalPriorityQueryFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGlobalPriorityQueryFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGlobalPriorityQueryFeaturesKHR.globalPriorityQuery ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties const & physicalDeviceGroupProperties ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGroupProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGroupProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGroupProperties.physicalDeviceCount ); + for ( size_t i = 0; i < VK_MAX_DEVICE_GROUP_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGroupProperties.physicalDevices[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGroupProperties.subsetAllocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures const & + physicalDeviceHostQueryResetFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostQueryResetFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostQueryResetFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostQueryResetFeatures.hostQueryReset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties const & physicalDeviceIDProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.pNext ); + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.deviceUUID[i] ); + } + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.driverUUID[i] ); + } + for ( size_t i = 0; i < VK_LUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.deviceLUID[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.deviceNodeMask ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.deviceLUIDValid ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT const & + physicalDeviceImageDrmFormatModifierInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.drmFormatModifier ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.sharingMode ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.queueFamilyIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.pQueueFamilyIndices ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 const & physicalDeviceImageFormatInfo2 ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.format ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.type ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.tiling ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.usage ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures const & + physicalDeviceImageRobustnessFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageRobustnessFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageRobustnessFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageRobustnessFeatures.robustImageAccess ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT const & + physicalDeviceImageViewImageFormatInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewImageFormatInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewImageFormatInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewImageFormatInfoEXT.imageViewType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT const & + physicalDeviceImageViewMinLodFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewMinLodFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewMinLodFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewMinLodFeaturesEXT.minLod ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures const & + physicalDeviceImagelessFramebufferFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImagelessFramebufferFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImagelessFramebufferFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImagelessFramebufferFeatures.imagelessFramebuffer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT const & + physicalDeviceIndexTypeUint8FeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIndexTypeUint8FeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIndexTypeUint8FeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIndexTypeUint8FeaturesEXT.indexTypeUint8 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV const & + physicalDeviceInheritedViewportScissorFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInheritedViewportScissorFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInheritedViewportScissorFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInheritedViewportScissorFeaturesNV.inheritedViewportScissor2D ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures const & + physicalDeviceInlineUniformBlockFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockFeatures.inlineUniformBlock ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceInlineUniformBlockFeatures.descriptorBindingInlineUniformBlockUpdateAfterBind ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties const & + physicalDeviceInlineUniformBlockProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.maxInlineUniformBlockSize ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceInlineUniformBlockProperties.maxPerStageDescriptorInlineUniformBlocks ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceInlineUniformBlockProperties.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.maxDescriptorSetInlineUniformBlocks ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceInlineUniformBlockProperties.maxDescriptorSetUpdateAfterBindInlineUniformBlocks ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI const & + physicalDeviceInvocationMaskFeaturesHUAWEI ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInvocationMaskFeaturesHUAWEI.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInvocationMaskFeaturesHUAWEI.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInvocationMaskFeaturesHUAWEI.invocationMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits const & physicalDeviceLimits ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxImageDimension1D ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxImageDimension2D ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxImageDimension3D ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxImageDimensionCube ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxImageArrayLayers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTexelBufferElements ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxUniformBufferRange ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxStorageBufferRange ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPushConstantsSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxMemoryAllocationCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxSamplerAllocationCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.bufferImageGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.sparseAddressSpaceSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxBoundDescriptorSets ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorSamplers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorUniformBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorStorageBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorSampledImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorStorageImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorInputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageResources ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetSamplers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetUniformBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetUniformBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetStorageBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetStorageBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetSampledImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetStorageImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetInputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxVertexInputAttributes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxVertexInputBindings ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxVertexInputAttributeOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxVertexInputBindingStride ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxVertexOutputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationGenerationLevel ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationPatchSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationControlPerVertexInputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationControlPerVertexOutputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationControlPerPatchOutputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationControlTotalOutputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationEvaluationInputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationEvaluationOutputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxGeometryShaderInvocations ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxGeometryInputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxGeometryOutputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxGeometryOutputVertices ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxGeometryTotalOutputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFragmentInputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFragmentOutputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFragmentDualSrcAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFragmentCombinedOutputResources ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxComputeSharedMemorySize ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxComputeWorkGroupCount[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxComputeWorkGroupInvocations ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxComputeWorkGroupSize[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.subPixelPrecisionBits ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.subTexelPrecisionBits ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.mipmapPrecisionBits ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDrawIndexedIndexValue ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDrawIndirectCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxSamplerLodBias ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxSamplerAnisotropy ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxViewports ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxViewportDimensions[i] ); + } + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.viewportBoundsRange[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.viewportSubPixelBits ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minMemoryMapAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minTexelBufferOffsetAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minUniformBufferOffsetAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minStorageBufferOffsetAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minTexelOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTexelOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minTexelGatherOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTexelGatherOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minInterpolationOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxInterpolationOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.subPixelInterpolationOffsetBits ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFramebufferWidth ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFramebufferHeight ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFramebufferLayers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.framebufferColorSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.framebufferDepthSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.framebufferStencilSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.framebufferNoAttachmentsSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxColorAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.sampledImageColorSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.sampledImageIntegerSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.sampledImageDepthSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.sampledImageStencilSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.storageImageSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxSampleMaskWords ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.timestampComputeAndGraphics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.timestampPeriod ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxClipDistances ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxCullDistances ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxCombinedClipAndCullDistances ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.discreteQueuePriorities ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.pointSizeRange[i] ); + } + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.lineWidthRange[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.pointSizeGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.lineWidthGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.strictLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.standardSampleLocations ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.optimalBufferCopyOffsetAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.optimalBufferCopyRowPitchAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.nonCoherentAtomSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT const & + physicalDeviceLineRasterizationFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.rectangularLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.bresenhamLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.smoothLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.stippledRectangularLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.stippledBresenhamLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.stippledSmoothLines ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT const & + physicalDeviceLineRasterizationPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationPropertiesEXT.lineSubPixelPrecisionBits ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV const & + physicalDeviceLinearColorAttachmentFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLinearColorAttachmentFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLinearColorAttachmentFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLinearColorAttachmentFeaturesNV.linearColorAttachment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties const & + physicalDeviceMaintenance3Properties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance3Properties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance3Properties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance3Properties.maxPerSetDescriptors ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance3Properties.maxMemoryAllocationSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features const & + physicalDeviceMaintenance4Features ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Features.maintenance4 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties const & + physicalDeviceMaintenance4Properties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Properties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Properties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Properties.maxBufferSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT const & + physicalDeviceMemoryBudgetPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryBudgetPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryBudgetPropertiesEXT.pNext ); + for ( size_t i = 0; i < VK_MAX_MEMORY_HEAPS; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryBudgetPropertiesEXT.heapBudget[i] ); + } + for ( size_t i = 0; i < VK_MAX_MEMORY_HEAPS; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryBudgetPropertiesEXT.heapUsage[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT const & + physicalDeviceMemoryPriorityFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryPriorityFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryPriorityFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryPriorityFeaturesEXT.memoryPriority ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties const & physicalDeviceMemoryProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties.memoryTypeCount ); + for ( size_t i = 0; i < VK_MAX_MEMORY_TYPES; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties.memoryTypes[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties.memoryHeapCount ); + for ( size_t i = 0; i < VK_MAX_MEMORY_HEAPS; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties.memoryHeaps[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 const & physicalDeviceMemoryProperties2 ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties2.memoryProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV const & + physicalDeviceMeshShaderFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesNV.taskShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesNV.meshShader ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV const & + physicalDeviceMeshShaderPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxDrawMeshTasksCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxTaskWorkGroupInvocations ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxTaskWorkGroupSize[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxTaskTotalMemorySize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxTaskOutputCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshWorkGroupInvocations ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshWorkGroupSize[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshTotalMemorySize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshOutputVertices ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshOutputPrimitives ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshMultiviewViewCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.meshOutputPerVertexGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.meshOutputPerPrimitiveGranularity ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT const & + physicalDeviceMultiDrawFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawFeaturesEXT.multiDraw ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT const & + physicalDeviceMultiDrawPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawPropertiesEXT.maxMultiDrawCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures const & physicalDeviceMultiviewFeatures ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewFeatures.multiview ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewFeatures.multiviewGeometryShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewFeatures.multiviewTessellationShader ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & + physicalDeviceMultiviewPerViewAttributesPropertiesNVX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewAttributesPropertiesNVX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewAttributesPropertiesNVX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceMultiviewPerViewAttributesPropertiesNVX.perViewPositionAllComponents ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties const & + physicalDeviceMultiviewProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewProperties.maxMultiviewViewCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewProperties.maxMultiviewInstanceIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & + physicalDeviceMutableDescriptorTypeFeaturesVALVE ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMutableDescriptorTypeFeaturesVALVE.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMutableDescriptorTypeFeaturesVALVE.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMutableDescriptorTypeFeaturesVALVE.mutableDescriptorType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT const & + physicalDevicePCIBusInfoPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.pciDomain ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.pciBus ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.pciDevice ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.pciFunction ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & + physicalDevicePageableDeviceLocalMemoryFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePageableDeviceLocalMemoryFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePageableDeviceLocalMemoryFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePageableDeviceLocalMemoryFeaturesEXT.pageableDeviceLocalMemory ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR const & + physicalDevicePerformanceQueryFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryFeaturesKHR.performanceCounterQueryPools ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryFeaturesKHR.performanceCounterMultipleQueryPools ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR const & + physicalDevicePerformanceQueryPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryPropertiesKHR.allowCommandBufferQueryCopies ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures const & + physicalDevicePipelineCreationCacheControlFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineCreationCacheControlFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineCreationCacheControlFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineCreationCacheControlFeatures.pipelineCreationCacheControl ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & + physicalDevicePipelineExecutablePropertiesFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineExecutablePropertiesFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineExecutablePropertiesFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineExecutablePropertiesFeaturesKHR.pipelineExecutableInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties const & + physicalDevicePointClippingProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePointClippingProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePointClippingProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePointClippingProperties.pointClippingBehavior ); + return seed; + } + }; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR const & + physicalDevicePortabilitySubsetFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.constantAlphaColorBlendFactors ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.events ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.imageViewFormatReinterpretation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.imageViewFormatSwizzle ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.imageView2DOn3DImage ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.multisampleArrayImage ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.mutableComparisonSamplers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.pointPolygons ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.samplerMipLodBias ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.separateStencilMaskRef ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDevicePortabilitySubsetFeaturesKHR.shaderSampleRateInterpolationFunctions ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.tessellationIsolines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.tessellationPointMode ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.triangleFans ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.vertexAttributeAccessBeyondStride ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR const & + physicalDevicePortabilitySubsetPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDevicePortabilitySubsetPropertiesKHR.minVertexInputBindingStrideAlignment ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR const & + physicalDevicePresentIdFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentIdFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentIdFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentIdFeaturesKHR.presentId ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR const & + physicalDevicePresentWaitFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentWaitFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentWaitFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentWaitFeaturesKHR.presentWait ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & + physicalDevicePrimitiveTopologyListRestartFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitiveTopologyListRestartFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitiveTopologyListRestartFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDevicePrimitiveTopologyListRestartFeaturesEXT.primitiveTopologyListRestart ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDevicePrimitiveTopologyListRestartFeaturesEXT.primitiveTopologyPatchListRestart ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures const & + physicalDevicePrivateDataFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrivateDataFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrivateDataFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrivateDataFeatures.privateData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties const & physicalDeviceSparseProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseProperties.residencyStandard2DBlockShape ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseProperties.residencyStandard2DMultisampleBlockShape ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseProperties.residencyStandard3DBlockShape ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseProperties.residencyAlignedMipSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseProperties.residencyNonResidentStrict ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties const & physicalDeviceProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.apiVersion ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.driverVersion ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.vendorID ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.deviceID ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.deviceType ); + for ( size_t i = 0; i < VK_MAX_PHYSICAL_DEVICE_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.deviceName[i] ); + } + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.pipelineCacheUUID[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.limits ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.sparseProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 const & physicalDeviceProperties2 ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties2.properties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures const & + physicalDeviceProtectedMemoryFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryFeatures.protectedMemory ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties const & + physicalDeviceProtectedMemoryProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryProperties.protectedNoFault ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT const & + physicalDeviceProvokingVertexFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexFeaturesEXT.provokingVertexLast ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceProvokingVertexFeaturesEXT.transformFeedbackPreservesProvokingVertex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT const & + physicalDeviceProvokingVertexPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexPropertiesEXT.provokingVertexModePerPipeline ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceProvokingVertexPropertiesEXT.transformFeedbackPreservesTriangleFanProvokingVertex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR const & + physicalDevicePushDescriptorPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushDescriptorPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushDescriptorPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushDescriptorPropertiesKHR.maxPushDescriptors ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & + physicalDeviceRGBA10X6FormatsFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRGBA10X6FormatsFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRGBA10X6FormatsFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRGBA10X6FormatsFeaturesEXT.formatRgba10x6WithoutYCbCrSampler ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const & + physicalDeviceRasterizationOrderAttachmentAccessFeaturesARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.rasterizationOrderColorAttachmentAccess ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.rasterizationOrderDepthAttachmentAccess ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.rasterizationOrderStencilAttachmentAccess ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR const & + physicalDeviceRayQueryFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayQueryFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayQueryFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayQueryFeaturesKHR.rayQuery ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV const & + physicalDeviceRayTracingMotionBlurFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMotionBlurFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMotionBlurFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMotionBlurFeaturesNV.rayTracingMotionBlur ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceRayTracingMotionBlurFeaturesNV.rayTracingMotionBlurPipelineTraceRaysIndirect ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR const & + physicalDeviceRayTracingPipelineFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineShaderGroupHandleCaptureReplay ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineShaderGroupHandleCaptureReplayMixed ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineTraceRaysIndirect ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.rayTraversalPrimitiveCulling ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR const & + physicalDeviceRayTracingPipelinePropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.shaderGroupHandleSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.maxRayRecursionDepth ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.maxShaderGroupStride ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.shaderGroupBaseAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.shaderGroupHandleCaptureReplaySize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.maxRayDispatchInvocationCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.shaderGroupHandleAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.maxRayHitAttributeSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV const & + physicalDeviceRayTracingPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.shaderGroupHandleSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxRecursionDepth ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxShaderGroupStride ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.shaderGroupBaseAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxGeometryCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxInstanceCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxTriangleCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxDescriptorSetAccelerationStructures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & + physicalDeviceRepresentativeFragmentTestFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRepresentativeFragmentTestFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRepresentativeFragmentTestFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRepresentativeFragmentTestFeaturesNV.representativeFragmentTest ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT const & + physicalDeviceRobustness2FeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2FeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2FeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2FeaturesEXT.robustBufferAccess2 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2FeaturesEXT.robustImageAccess2 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2FeaturesEXT.nullDescriptor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT const & + physicalDeviceRobustness2PropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2PropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2PropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2PropertiesEXT.robustStorageBufferAccessSizeAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2PropertiesEXT.robustUniformBufferAccessSizeAlignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT const & + physicalDeviceSampleLocationsPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.sampleLocationSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.maxSampleLocationGridSize ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.sampleLocationCoordinateRange[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.sampleLocationSubPixelBits ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.variableSampleLocations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties const & + physicalDeviceSamplerFilterMinmaxProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerFilterMinmaxProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerFilterMinmaxProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerFilterMinmaxProperties.filterMinmaxSingleComponentFormats ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerFilterMinmaxProperties.filterMinmaxImageComponentMapping ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures const & + physicalDeviceSamplerYcbcrConversionFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerYcbcrConversionFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerYcbcrConversionFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerYcbcrConversionFeatures.samplerYcbcrConversion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures const & + physicalDeviceScalarBlockLayoutFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceScalarBlockLayoutFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceScalarBlockLayoutFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceScalarBlockLayoutFeatures.scalarBlockLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & + physicalDeviceSeparateDepthStencilLayoutsFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSeparateDepthStencilLayoutsFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSeparateDepthStencilLayoutsFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSeparateDepthStencilLayoutsFeatures.separateDepthStencilLayouts ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & + physicalDeviceShaderAtomicFloat2FeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderBufferFloat16Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderBufferFloat16AtomicAdd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderBufferFloat16AtomicMinMax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderBufferFloat32AtomicMinMax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderBufferFloat64AtomicMinMax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderSharedFloat16Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderSharedFloat16AtomicAdd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderSharedFloat16AtomicMinMax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderSharedFloat32AtomicMinMax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderSharedFloat64AtomicMinMax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderImageFloat32AtomicMinMax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT const & + physicalDeviceShaderAtomicFloatFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderBufferFloat32Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderBufferFloat32AtomicAdd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderBufferFloat64Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderBufferFloat64AtomicAdd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderSharedFloat32Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderSharedFloat32AtomicAdd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderSharedFloat64Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderSharedFloat64AtomicAdd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32AtomicAdd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32AtomicAdd ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features const & + physicalDeviceShaderAtomicInt64Features ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicInt64Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicInt64Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicInt64Features.shaderBufferInt64Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicInt64Features.shaderSharedInt64Atomics ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR const & + physicalDeviceShaderClockFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderClockFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderClockFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderClockFeaturesKHR.shaderSubgroupClock ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderClockFeaturesKHR.shaderDeviceClock ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD const & + physicalDeviceShaderCoreProperties2AMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreProperties2AMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreProperties2AMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreProperties2AMD.shaderCoreFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreProperties2AMD.activeComputeUnitCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD const & + physicalDeviceShaderCorePropertiesAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.shaderEngineCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.shaderArraysPerEngineCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.computeUnitsPerShaderArray ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.simdPerComputeUnit ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.wavefrontsPerSimd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.wavefrontSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.sgprsPerSimd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.minSgprAllocation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.maxSgprAllocation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.sgprAllocationGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.vgprsPerSimd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.minVgprAllocation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.maxVgprAllocation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.vgprAllocationGranularity ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & + physicalDeviceShaderDemoteToHelperInvocationFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDemoteToHelperInvocationFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDemoteToHelperInvocationFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceShaderDemoteToHelperInvocationFeatures.shaderDemoteToHelperInvocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures const & + physicalDeviceShaderDrawParametersFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDrawParametersFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDrawParametersFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDrawParametersFeatures.shaderDrawParameters ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features const & + physicalDeviceShaderFloat16Int8Features ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat16Int8Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat16Int8Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat16Int8Features.shaderFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat16Int8Features.shaderInt8 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & + physicalDeviceShaderImageAtomicInt64FeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageAtomicInt64FeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageAtomicInt64FeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageAtomicInt64FeaturesEXT.sparseImageInt64Atomics ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV const & + physicalDeviceShaderImageFootprintFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageFootprintFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageFootprintFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageFootprintFeaturesNV.imageFootprint ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures const & + physicalDeviceShaderIntegerDotProductFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductFeatures.shaderIntegerDotProduct ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties const & + physicalDeviceShaderIntegerDotProductProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct8BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceShaderIntegerDotProductProperties.integerDotProduct8BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct8BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct4x8BitPackedUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct4x8BitPackedSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct4x8BitPackedMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct16BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct16BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct16BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct32BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct32BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct32BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct64BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct64BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct64BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceShaderIntegerDotProductProperties + .integerDotProductAccumulatingSaturating8BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, + physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating8BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceShaderIntegerDotProductProperties + .integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceShaderIntegerDotProductProperties + .integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceShaderIntegerDotProductProperties + .integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceShaderIntegerDotProductProperties + .integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceShaderIntegerDotProductProperties + .integerDotProductAccumulatingSaturating16BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, + physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating16BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceShaderIntegerDotProductProperties + .integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceShaderIntegerDotProductProperties + .integerDotProductAccumulatingSaturating32BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, + physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating32BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceShaderIntegerDotProductProperties + .integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceShaderIntegerDotProductProperties + .integerDotProductAccumulatingSaturating64BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, + physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating64BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceShaderIntegerDotProductProperties + .integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & + physicalDeviceShaderIntegerFunctions2FeaturesINTEL ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerFunctions2FeaturesINTEL.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerFunctions2FeaturesINTEL.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerFunctions2FeaturesINTEL.shaderIntegerFunctions2 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV const & + physicalDeviceShaderSMBuiltinsFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsFeaturesNV.shaderSMBuiltins ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV const & + physicalDeviceShaderSMBuiltinsPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsPropertiesNV.shaderSMCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsPropertiesNV.shaderWarpsPerSM ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & + physicalDeviceShaderSubgroupExtendedTypesFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupExtendedTypesFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupExtendedTypesFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupExtendedTypesFeatures.shaderSubgroupExtendedTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & + physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.shaderSubgroupUniformControlFlow ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures const & + physicalDeviceShaderTerminateInvocationFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTerminateInvocationFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTerminateInvocationFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTerminateInvocationFeatures.shaderTerminateInvocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV const & + physicalDeviceShadingRateImageFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImageFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImageFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImageFeaturesNV.shadingRateImage ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImageFeaturesNV.shadingRateCoarseSampleOrder ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV const & + physicalDeviceShadingRateImagePropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImagePropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImagePropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImagePropertiesNV.shadingRateTexelSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImagePropertiesNV.shadingRatePaletteSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImagePropertiesNV.shadingRateMaxCoarseSamples ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 const & + physicalDeviceSparseImageFormatInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.format ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.type ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.samples ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.usage ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.tiling ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties const & + physicalDeviceSubgroupProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.subgroupSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.supportedStages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.supportedOperations ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.quadOperationsInAllStages ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures const & + physicalDeviceSubgroupSizeControlFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlFeatures.subgroupSizeControl ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlFeatures.computeFullSubgroups ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties const & + physicalDeviceSubgroupSizeControlProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.minSubgroupSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.maxSubgroupSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.maxComputeWorkgroupSubgroups ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.requiredSubgroupSizeStages ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI const & + physicalDeviceSubpassShadingFeaturesHUAWEI ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingFeaturesHUAWEI.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingFeaturesHUAWEI.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingFeaturesHUAWEI.subpassShading ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI const & + physicalDeviceSubpassShadingPropertiesHUAWEI ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingPropertiesHUAWEI.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingPropertiesHUAWEI.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceSubpassShadingPropertiesHUAWEI.maxSubpassShadingWorkgroupSizeAspectRatio ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR const & physicalDeviceSurfaceInfo2KHR ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSurfaceInfo2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSurfaceInfo2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSurfaceInfo2KHR.surface ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features const & + physicalDeviceSynchronization2Features ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSynchronization2Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSynchronization2Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSynchronization2Features.synchronization2 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & + physicalDeviceTexelBufferAlignmentFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentFeaturesEXT.texelBufferAlignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties const & + physicalDeviceTexelBufferAlignmentProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceTexelBufferAlignmentProperties.storageTexelBufferOffsetAlignmentBytes ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceTexelBufferAlignmentProperties.storageTexelBufferOffsetSingleTexelAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceTexelBufferAlignmentProperties.uniformTexelBufferOffsetAlignmentBytes ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceTexelBufferAlignmentProperties.uniformTexelBufferOffsetSingleTexelAlignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures const & + physicalDeviceTextureCompressionASTCHDRFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTextureCompressionASTCHDRFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTextureCompressionASTCHDRFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTextureCompressionASTCHDRFeatures.textureCompressionASTC_HDR ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures const & + physicalDeviceTimelineSemaphoreFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreFeatures.timelineSemaphore ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties const & + physicalDeviceTimelineSemaphoreProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreProperties.maxTimelineSemaphoreValueDifference ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties const & physicalDeviceToolProperties ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.pNext ); + for ( size_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.name[i] ); + } + for ( size_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.version[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.purposes ); + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.description[i] ); + } + for ( size_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.layer[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT const & + physicalDeviceTransformFeedbackFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackFeaturesEXT.transformFeedback ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackFeaturesEXT.geometryStreams ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT const & + physicalDeviceTransformFeedbackPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackStreams ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackBufferSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackStreamDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackBufferDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackBufferDataStride ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.transformFeedbackQueries ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceTransformFeedbackPropertiesEXT.transformFeedbackStreamsLinesTriangles ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceTransformFeedbackPropertiesEXT.transformFeedbackRasterizationStreamSelect ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.transformFeedbackDraw ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures const & + physicalDeviceUniformBufferStandardLayoutFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceUniformBufferStandardLayoutFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceUniformBufferStandardLayoutFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceUniformBufferStandardLayoutFeatures.uniformBufferStandardLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures const & + physicalDeviceVariablePointersFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVariablePointersFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVariablePointersFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVariablePointersFeatures.variablePointersStorageBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVariablePointersFeatures.variablePointers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & + physicalDeviceVertexAttributeDivisorFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVertexAttributeDivisorFeaturesEXT.vertexAttributeInstanceRateDivisor ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVertexAttributeDivisorFeaturesEXT.vertexAttributeInstanceRateZeroDivisor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & + physicalDeviceVertexAttributeDivisorPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorPropertiesEXT.maxVertexAttribDivisor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & + physicalDeviceVertexInputDynamicStateFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexInputDynamicStateFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexInputDynamicStateFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexInputDynamicStateFeaturesEXT.vertexInputDynamicState ); + return seed; + } + }; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoProfileKHR const & videoProfileKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoProfileKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfileKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfileKHR.videoCodecOperation ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfileKHR.chromaSubsampling ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfileKHR.lumaBitDepth ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfileKHR.chromaBitDepth ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoProfilesKHR const & videoProfilesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoProfilesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfilesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfilesKHR.profileCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfilesKHR.pProfiles ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR const & + physicalDeviceVideoFormatInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoFormatInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoFormatInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoFormatInfoKHR.imageUsage ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoFormatInfoKHR.pVideoProfiles ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features const & physicalDeviceVulkan11Features ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.storageBuffer16BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.uniformAndStorageBuffer16BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.storagePushConstant16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.storageInputOutput16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.multiview ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.multiviewGeometryShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.multiviewTessellationShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.variablePointersStorageBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.variablePointers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.protectedMemory ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.samplerYcbcrConversion ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.shaderDrawParameters ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties const & + physicalDeviceVulkan11Properties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.pNext ); + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.deviceUUID[i] ); + } + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.driverUUID[i] ); + } + for ( size_t i = 0; i < VK_LUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.deviceLUID[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.deviceNodeMask ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.deviceLUIDValid ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.subgroupSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.subgroupSupportedStages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.subgroupSupportedOperations ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.subgroupQuadOperationsInAllStages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.pointClippingBehavior ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.maxMultiviewViewCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.maxMultiviewInstanceIndex ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.protectedNoFault ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.maxPerSetDescriptors ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.maxMemoryAllocationSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features const & physicalDeviceVulkan12Features ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.samplerMirrorClampToEdge ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.drawIndirectCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.storageBuffer8BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.uniformAndStorageBuffer8BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.storagePushConstant8 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderBufferInt64Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderSharedInt64Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderInt8 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderInputAttachmentArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderUniformBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderStorageImageArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderInputAttachmentArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingUniformBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingPartiallyBound ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingVariableDescriptorCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.runtimeDescriptorArray ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.samplerFilterMinmax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.scalarBlockLayout ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.imagelessFramebuffer ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.uniformBufferStandardLayout ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderSubgroupExtendedTypes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.separateDepthStencilLayouts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.hostQueryReset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.timelineSemaphore ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.bufferDeviceAddress ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.bufferDeviceAddressCaptureReplay ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.bufferDeviceAddressMultiDevice ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.vulkanMemoryModel ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.vulkanMemoryModelDeviceScope ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.vulkanMemoryModelAvailabilityVisibilityChains ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderOutputViewportIndex ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderOutputLayer ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.subgroupBroadcastDynamicId ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties const & + physicalDeviceVulkan12Properties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.driverID ); + for ( size_t i = 0; i < VK_MAX_DRIVER_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.driverName[i] ); + } + for ( size_t i = 0; i < VK_MAX_DRIVER_INFO_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.driverInfo[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.conformanceVersion ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.denormBehaviorIndependence ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.roundingModeIndependence ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderSignedZeroInfNanPreserveFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderSignedZeroInfNanPreserveFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderSignedZeroInfNanPreserveFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormPreserveFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormPreserveFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormPreserveFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormFlushToZeroFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormFlushToZeroFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormFlushToZeroFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTEFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTEFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTEFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTZFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTZFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTZFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxUpdateAfterBindDescriptorsInAllPools ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan12Properties.shaderUniformBufferArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderSampledImageArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan12Properties.shaderStorageBufferArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderStorageImageArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan12Properties.shaderInputAttachmentArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.robustBufferAccessUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.quadDivergentImplicitLod ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindSamplers ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindUniformBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindSampledImages ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageImages ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindInputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageUpdateAfterBindResources ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindSamplers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindSampledImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindStorageImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindInputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.supportedDepthResolveModes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.supportedStencilResolveModes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.independentResolveNone ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.independentResolve ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.filterMinmaxSingleComponentFormats ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.filterMinmaxImageComponentMapping ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxTimelineSemaphoreValueDifference ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.framebufferIntegerColorSampleCounts ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features const & physicalDeviceVulkan13Features ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.robustImageAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.inlineUniformBlock ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan13Features.descriptorBindingInlineUniformBlockUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.pipelineCreationCacheControl ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.privateData ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.shaderDemoteToHelperInvocation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.shaderTerminateInvocation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.subgroupSizeControl ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.computeFullSubgroups ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.synchronization2 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.textureCompressionASTC_HDR ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.shaderZeroInitializeWorkgroupMemory ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.dynamicRendering ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.shaderIntegerDotProduct ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.maintenance4 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties const & + physicalDeviceVulkan13Properties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.minSubgroupSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxSubgroupSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxComputeWorkgroupSubgroups ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.requiredSubgroupSizeStages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxInlineUniformBlockSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxPerStageDescriptorInlineUniformBlocks ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxDescriptorSetInlineUniformBlocks ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan13Properties.maxDescriptorSetUpdateAfterBindInlineUniformBlocks ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxInlineUniformTotalSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct8BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct8BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct8BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan13Properties.integerDotProduct4x8BitPackedUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct4x8BitPackedSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.integerDotProduct4x8BitPackedMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct16BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct16BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan13Properties.integerDotProduct16BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct32BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct32BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan13Properties.integerDotProduct32BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct64BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct64BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan13Properties.integerDotProduct64BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating8BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkan13Properties + .integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating16BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating32BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating64BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.storageTexelBufferOffsetAlignmentBytes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.storageTexelBufferOffsetSingleTexelAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.uniformTexelBufferOffsetAlignmentBytes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.uniformTexelBufferOffsetSingleTexelAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxBufferSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures const & + physicalDeviceVulkanMemoryModelFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkanMemoryModelFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkanMemoryModelFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkanMemoryModelFeatures.vulkanMemoryModel ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkanMemoryModelFeatures.vulkanMemoryModelDeviceScope ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceVulkanMemoryModelFeatures.vulkanMemoryModelAvailabilityVisibilityChains ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & + physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayoutScalarBlockLayout ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout8BitAccess ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout16BitAccess ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & + physicalDeviceYcbcr2Plane444FormatsFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.ycbcr2plane444Formats ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT const & + physicalDeviceYcbcrImageArraysFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcrImageArraysFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcrImageArraysFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcrImageArraysFeaturesEXT.ycbcrImageArrays ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & + physicalDeviceZeroInitializeWorkgroupMemoryFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceZeroInitializeWorkgroupMemoryFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceZeroInitializeWorkgroupMemoryFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( + seed, physicalDeviceZeroInitializeWorkgroupMemoryFeatures.shaderZeroInitializeWorkgroupMemory ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const & pipelineCacheCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheCreateInfo.initialDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheCreateInfo.pInitialData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne const & pipelineCacheHeaderVersionOne ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionOne.headerSize ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionOne.headerVersion ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionOne.vendorID ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionOne.deviceID ); + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionOne.pipelineCacheUUID[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT const & + pipelineColorBlendAdvancedStateCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAdvancedStateCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAdvancedStateCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAdvancedStateCreateInfoEXT.srcPremultiplied ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAdvancedStateCreateInfoEXT.dstPremultiplied ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAdvancedStateCreateInfoEXT.blendOverlap ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT const & pipelineColorWriteCreateInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorWriteCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorWriteCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorWriteCreateInfoEXT.attachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorWriteCreateInfoEXT.pColorWriteEnables ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD const & + pipelineCompilerControlCreateInfoAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCompilerControlCreateInfoAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCompilerControlCreateInfoAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCompilerControlCreateInfoAMD.compilerControlFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV const & + pipelineCoverageModulationStateCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.coverageModulationMode ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.coverageModulationTableEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.coverageModulationTableCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.pCoverageModulationTable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV const & + pipelineCoverageReductionStateCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageReductionStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageReductionStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageReductionStateCreateInfoNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageReductionStateCreateInfoNV.coverageReductionMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV const & + pipelineCoverageToColorStateCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageToColorStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageToColorStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageToColorStateCreateInfoNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageToColorStateCreateInfoNV.coverageToColorEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageToColorStateCreateInfoNV.coverageToColorLocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCreationFeedback const & pipelineCreationFeedback ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedback.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedback.duration ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo const & + pipelineCreationFeedbackCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedbackCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedbackCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedbackCreateInfo.pPipelineCreationFeedback ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedbackCreateInfo.pipelineStageCreationFeedbackCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedbackCreateInfo.pPipelineStageCreationFeedbacks ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT const & + pipelineDiscardRectangleStateCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.discardRectangleMode ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.discardRectangleCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.pDiscardRectangles ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR const & pipelineExecutableInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInfoKHR.pipeline ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInfoKHR.executableIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR const & + pipelineExecutableInternalRepresentationKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.pNext ); + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.name[i] ); + } + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.description[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.isText ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.dataSize ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.pData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR const & pipelineExecutablePropertiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.stages ); + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.name[i] ); + } + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.description[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.subgroupSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV const & + pipelineFragmentShadingRateEnumStateCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateEnumStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateEnumStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateEnumStateCreateInfoNV.shadingRateType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateEnumStateCreateInfoNV.shadingRate ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateEnumStateCreateInfoNV.combinerOps[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR const & + pipelineFragmentShadingRateStateCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateStateCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateStateCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateStateCreateInfoKHR.fragmentSize ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateStateCreateInfoKHR.combinerOps[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineInfoKHR const & pipelineInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineInfoKHR.pipeline ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PushConstantRange const & pushConstantRange ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pushConstantRange.stageFlags ); + VULKAN_HPP_HASH_COMBINE( seed, pushConstantRange.offset ); + VULKAN_HPP_HASH_COMBINE( seed, pushConstantRange.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const & pipelineLayoutCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.setLayoutCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.pSetLayouts ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.pushConstantRangeCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.pPushConstantRanges ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR const & pipelineLibraryCreateInfoKHR ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineLibraryCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLibraryCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLibraryCreateInfoKHR.libraryCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLibraryCreateInfoKHR.pLibraries ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT const & + pipelineRasterizationConservativeStateCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationConservativeStateCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationConservativeStateCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationConservativeStateCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, + pipelineRasterizationConservativeStateCreateInfoEXT.conservativeRasterizationMode ); + VULKAN_HPP_HASH_COMBINE( seed, + pipelineRasterizationConservativeStateCreateInfoEXT.extraPrimitiveOverestimationSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT const & + pipelineRasterizationDepthClipStateCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationDepthClipStateCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationDepthClipStateCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationDepthClipStateCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationDepthClipStateCreateInfoEXT.depthClipEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT const & + pipelineRasterizationLineStateCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfoEXT.lineRasterizationMode ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfoEXT.stippledLineEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfoEXT.lineStippleFactor ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfoEXT.lineStipplePattern ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT const & + pipelineRasterizationProvokingVertexStateCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationProvokingVertexStateCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationProvokingVertexStateCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationProvokingVertexStateCreateInfoEXT.provokingVertexMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD const & + pipelineRasterizationStateRasterizationOrderAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateRasterizationOrderAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateRasterizationOrderAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateRasterizationOrderAMD.rasterizationOrder ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT const & + pipelineRasterizationStateStreamCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateStreamCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateStreamCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateStreamCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateStreamCreateInfoEXT.rasterizationStream ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo const & pipelineRenderingCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.viewMask ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.pColorAttachmentFormats ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.depthAttachmentFormat ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.stencilAttachmentFormat ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV const & + pipelineRepresentativeFragmentTestStateCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRepresentativeFragmentTestStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRepresentativeFragmentTestStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, + pipelineRepresentativeFragmentTestStateCreateInfoNV.representativeFragmentTestEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT const & + pipelineSampleLocationsStateCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineSampleLocationsStateCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineSampleLocationsStateCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineSampleLocationsStateCreateInfoEXT.sampleLocationsEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineSampleLocationsStateCreateInfoEXT.sampleLocationsInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo const & + pipelineShaderStageRequiredSubgroupSizeCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageRequiredSubgroupSizeCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageRequiredSubgroupSizeCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageRequiredSubgroupSizeCreateInfo.requiredSubgroupSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo const & + pipelineTessellationDomainOriginStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationDomainOriginStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationDomainOriginStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationDomainOriginStateCreateInfo.domainOrigin ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT const & + vertexInputBindingDivisorDescriptionEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDivisorDescriptionEXT.binding ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDivisorDescriptionEXT.divisor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT const & + pipelineVertexInputDivisorStateCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputDivisorStateCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputDivisorStateCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputDivisorStateCreateInfoEXT.vertexBindingDivisorCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputDivisorStateCreateInfoEXT.pVertexBindingDivisors ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV const & + pipelineViewportCoarseSampleOrderStateCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportCoarseSampleOrderStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportCoarseSampleOrderStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportCoarseSampleOrderStateCreateInfoNV.sampleOrderType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportCoarseSampleOrderStateCreateInfoNV.customSampleOrderCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportCoarseSampleOrderStateCreateInfoNV.pCustomSampleOrders ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT const & + pipelineViewportDepthClipControlCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClipControlCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClipControlCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClipControlCreateInfoEXT.negativeOneToOne ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV const & + pipelineViewportExclusiveScissorStateCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportExclusiveScissorStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportExclusiveScissorStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportExclusiveScissorStateCreateInfoNV.exclusiveScissorCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportExclusiveScissorStateCreateInfoNV.pExclusiveScissors ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV const & shadingRatePaletteNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shadingRatePaletteNV.shadingRatePaletteEntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, shadingRatePaletteNV.pShadingRatePaletteEntries ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV const & + pipelineViewportShadingRateImageStateCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportShadingRateImageStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportShadingRateImageStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportShadingRateImageStateCreateInfoNV.shadingRateImageEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportShadingRateImageStateCreateInfoNV.viewportCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportShadingRateImageStateCreateInfoNV.pShadingRatePalettes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ViewportSwizzleNV const & viewportSwizzleNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, viewportSwizzleNV.x ); + VULKAN_HPP_HASH_COMBINE( seed, viewportSwizzleNV.y ); + VULKAN_HPP_HASH_COMBINE( seed, viewportSwizzleNV.z ); + VULKAN_HPP_HASH_COMBINE( seed, viewportSwizzleNV.w ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV const & + pipelineViewportSwizzleStateCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportSwizzleStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportSwizzleStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportSwizzleStateCreateInfoNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportSwizzleStateCreateInfoNV.viewportCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportSwizzleStateCreateInfoNV.pViewportSwizzles ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ViewportWScalingNV const & viewportWScalingNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, viewportWScalingNV.xcoeff ); + VULKAN_HPP_HASH_COMBINE( seed, viewportWScalingNV.ycoeff ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV const & + pipelineViewportWScalingStateCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportWScalingStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportWScalingStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportWScalingStateCreateInfoNV.viewportWScalingEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportWScalingStateCreateInfoNV.viewportCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportWScalingStateCreateInfoNV.pViewportWScalings ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_GGP ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP const & presentFrameTokenGGP ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentFrameTokenGGP.sType ); + VULKAN_HPP_HASH_COMBINE( seed, presentFrameTokenGGP.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, presentFrameTokenGGP.frameToken ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_GGP*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentIdKHR const & presentIdKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentIdKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, presentIdKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, presentIdKHR.swapchainCount ); + VULKAN_HPP_HASH_COMBINE( seed, presentIdKHR.pPresentIds ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentInfoKHR const & presentInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.waitSemaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.pWaitSemaphores ); + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.swapchainCount ); + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.pSwapchains ); + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.pImageIndices ); + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.pResults ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RectLayerKHR const & rectLayerKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, rectLayerKHR.offset ); + VULKAN_HPP_HASH_COMBINE( seed, rectLayerKHR.extent ); + VULKAN_HPP_HASH_COMBINE( seed, rectLayerKHR.layer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentRegionKHR const & presentRegionKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentRegionKHR.rectangleCount ); + VULKAN_HPP_HASH_COMBINE( seed, presentRegionKHR.pRectangles ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PresentRegionsKHR const & presentRegionsKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentRegionsKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, presentRegionsKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, presentRegionsKHR.swapchainCount ); + VULKAN_HPP_HASH_COMBINE( seed, presentRegionsKHR.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE const & presentTimeGOOGLE ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentTimeGOOGLE.presentID ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimeGOOGLE.desiredPresentTime ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE const & presentTimesInfoGOOGLE ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentTimesInfoGOOGLE.sType ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimesInfoGOOGLE.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimesInfoGOOGLE.swapchainCount ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimesInfoGOOGLE.pTimes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const & privateDataSlotCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, privateDataSlotCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, privateDataSlotCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, privateDataSlotCreateInfo.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo const & protectedSubmitInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, protectedSubmitInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, protectedSubmitInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, protectedSubmitInfo.protectedSubmit ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const & queryPoolCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.queryType ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.queryCount ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.pipelineStatistics ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR const & + queryPoolPerformanceCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceCreateInfoKHR.queueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceCreateInfoKHR.counterIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceCreateInfoKHR.pCounterIndices ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL const & + queryPoolPerformanceQueryCreateInfoINTEL ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceQueryCreateInfoINTEL.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceQueryCreateInfoINTEL.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceQueryCreateInfoINTEL.performanceCountersSampling ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV const & + queueFamilyCheckpointProperties2NV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointProperties2NV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointProperties2NV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointProperties2NV.checkpointExecutionStageMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV const & + queueFamilyCheckpointPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointPropertiesNV.checkpointExecutionStageMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesKHR const & + queueFamilyGlobalPriorityPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyGlobalPriorityPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyGlobalPriorityPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyGlobalPriorityPropertiesKHR.priorityCount ); + for ( size_t i = 0; i < VK_MAX_GLOBAL_PRIORITY_SIZE_KHR; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyGlobalPriorityPropertiesKHR.priorities[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::QueueFamilyProperties const & queueFamilyProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties.queueFlags ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties.queueCount ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties.timestampValidBits ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties.minImageTransferGranularity ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueueFamilyProperties2 const & queueFamilyProperties2 ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties2.queueFamilyProperties ); + return seed; + } + }; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR const & + queueFamilyQueryResultStatusProperties2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyQueryResultStatusProperties2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyQueryResultStatusProperties2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyQueryResultStatusProperties2KHR.supported ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR const & + rayTracingShaderGroupCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.type ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.generalShader ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.closestHitShader ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.anyHitShader ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.intersectionShader ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.pShaderGroupCaptureReplayHandle ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR const & + rayTracingPipelineInterfaceCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineInterfaceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineInterfaceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineInterfaceCreateInfoKHR.maxPipelineRayPayloadSize ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineInterfaceCreateInfoKHR.maxPipelineRayHitAttributeSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const & rayTracingPipelineCreateInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.stageCount ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pStages ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.groupCount ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pGroups ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.maxPipelineRayRecursionDepth ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pLibraryInfo ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pLibraryInterface ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pDynamicState ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.layout ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.basePipelineHandle ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.basePipelineIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV const & + rayTracingShaderGroupCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.type ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.generalShader ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.closestHitShader ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.anyHitShader ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.intersectionShader ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const & rayTracingPipelineCreateInfoNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.stageCount ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.pStages ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.groupCount ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.pGroups ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.maxRecursionDepth ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.layout ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.basePipelineHandle ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.basePipelineIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE const & refreshCycleDurationGOOGLE ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, refreshCycleDurationGOOGLE.refreshDuration ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo const & renderPassAttachmentBeginInfo ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassAttachmentBeginInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassAttachmentBeginInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassAttachmentBeginInfo.attachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassAttachmentBeginInfo.pAttachments ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::RenderPassBeginInfo const & renderPassBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.renderPass ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.framebuffer ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.renderArea ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.clearValueCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.pClearValues ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SubpassDescription const & subpassDescription ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.flags ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pipelineBindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.inputAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pInputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pColorAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pResolveAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pDepthStencilAttachment ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.preserveAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pPreserveAttachments ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SubpassDependency const & subpassDependency ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.srcSubpass ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.dstSubpass ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.srcStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.dstStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.dstAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.dependencyFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const & renderPassCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.attachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.pAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.subpassCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.pSubpasses ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.dependencyCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.pDependencies ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SubpassDescription2 const & subpassDescription2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.flags ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pipelineBindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.viewMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.inputAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pInputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pColorAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pResolveAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pDepthStencilAttachment ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.preserveAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pPreserveAttachments ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SubpassDependency2 const & subpassDependency2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.srcSubpass ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.dstSubpass ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.srcStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.dstStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.dstAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.dependencyFlags ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.viewOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const & renderPassCreateInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.flags ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.attachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.pAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.subpassCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.pSubpasses ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.dependencyCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.pDependencies ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.correlatedViewMaskCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.pCorrelatedViewMasks ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT const & + renderPassFragmentDensityMapCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapCreateInfoEXT.fragmentDensityMapAttachment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo const & + renderPassInputAttachmentAspectCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassInputAttachmentAspectCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassInputAttachmentAspectCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassInputAttachmentAspectCreateInfo.aspectReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassInputAttachmentAspectCreateInfo.pAspectReferences ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo const & renderPassMultiviewCreateInfo ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.subpassCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.pViewMasks ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.dependencyCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.pViewOffsets ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.correlationMaskCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.pCorrelationMasks ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT const & subpassSampleLocationsEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassSampleLocationsEXT.subpassIndex ); + VULKAN_HPP_HASH_COMBINE( seed, subpassSampleLocationsEXT.sampleLocationsInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT const & + renderPassSampleLocationsBeginInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.attachmentInitialSampleLocationsCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.pAttachmentInitialSampleLocations ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.postSubpassSampleLocationsCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.pPostSubpassSampleLocations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM const & + renderPassTransformBeginInfoQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassTransformBeginInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassTransformBeginInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassTransformBeginInfoQCOM.transform ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT const & + renderingFragmentDensityMapAttachmentInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentDensityMapAttachmentInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentDensityMapAttachmentInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentDensityMapAttachmentInfoEXT.imageView ); + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentDensityMapAttachmentInfoEXT.imageLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR const & + renderingFragmentShadingRateAttachmentInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentShadingRateAttachmentInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentShadingRateAttachmentInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentShadingRateAttachmentInfoKHR.imageView ); + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentShadingRateAttachmentInfoKHR.imageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentShadingRateAttachmentInfoKHR.shadingRateAttachmentTexelSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderingInfo const & renderingInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.renderArea ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.layerCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.viewMask ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.pColorAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.pDepthAttachment ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.pStencilAttachment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ResolveImageInfo2 const & resolveImageInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.srcImage ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.srcImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.dstImage ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.dstImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT const & + samplerBorderColorComponentMappingCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerBorderColorComponentMappingCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerBorderColorComponentMappingCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerBorderColorComponentMappingCreateInfoEXT.components ); + VULKAN_HPP_HASH_COMBINE( seed, samplerBorderColorComponentMappingCreateInfoEXT.srgb ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SamplerCreateInfo const & samplerCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.magFilter ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.minFilter ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.mipmapMode ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.addressModeU ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.addressModeV ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.addressModeW ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.mipLodBias ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.anisotropyEnable ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.maxAnisotropy ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.compareEnable ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.compareOp ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.minLod ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.maxLod ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.borderColor ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.unnormalizedCoordinates ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo const & samplerReductionModeCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerReductionModeCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerReductionModeCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerReductionModeCreateInfo.reductionMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const & + samplerYcbcrConversionCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.format ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.ycbcrModel ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.ycbcrRange ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.components ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.xChromaOffset ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.yChromaOffset ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.chromaFilter ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.forceExplicitReconstruction ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties const & + samplerYcbcrConversionImageFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionImageFormatProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionImageFormatProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionImageFormatProperties.combinedImageSamplerDescriptorCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo const & samplerYcbcrConversionInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionInfo.conversion ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const & screenSurfaceCreateInfoQNX ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, screenSurfaceCreateInfoQNX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, screenSurfaceCreateInfoQNX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, screenSurfaceCreateInfoQNX.flags ); + VULKAN_HPP_HASH_COMBINE( seed, screenSurfaceCreateInfoQNX.context ); + VULKAN_HPP_HASH_COMBINE( seed, screenSurfaceCreateInfoQNX.window ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const & semaphoreCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreCreateInfo.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR const & semaphoreGetFdInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetFdInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetFdInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetFdInfoKHR.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetFdInfoKHR.handleType ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR const & semaphoreGetWin32HandleInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetWin32HandleInfoKHR.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetWin32HandleInfoKHR.handleType ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA const & + semaphoreGetZirconHandleInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetZirconHandleInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetZirconHandleInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetZirconHandleInfoFUCHSIA.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetZirconHandleInfoFUCHSIA.handleType ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo const & semaphoreSignalInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSignalInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSignalInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSignalInfo.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSignalInfo.value ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo const & semaphoreSubmitInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.value ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.stageMask ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.deviceIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo const & semaphoreTypeCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreTypeCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreTypeCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreTypeCreateInfo.semaphoreType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreTypeCreateInfo.initialValue ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo const & semaphoreWaitInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.semaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.pSemaphores ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.pValues ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV const & setStateFlagsIndirectCommandNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, setStateFlagsIndirectCommandNV.data ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const & shaderModuleCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleCreateInfo.codeSize ); + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleCreateInfo.pCode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT const & + shaderModuleValidationCacheCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleValidationCacheCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleValidationCacheCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleValidationCacheCreateInfoEXT.validationCache ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD const & shaderResourceUsageAMD ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shaderResourceUsageAMD.numUsedVgprs ); + VULKAN_HPP_HASH_COMBINE( seed, shaderResourceUsageAMD.numUsedSgprs ); + VULKAN_HPP_HASH_COMBINE( seed, shaderResourceUsageAMD.ldsSizePerLocalWorkGroup ); + VULKAN_HPP_HASH_COMBINE( seed, shaderResourceUsageAMD.ldsUsageSizeInBytes ); + VULKAN_HPP_HASH_COMBINE( seed, shaderResourceUsageAMD.scratchMemUsageInBytes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD const & shaderStatisticsInfoAMD ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.shaderStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.resourceUsage ); + VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.numPhysicalVgprs ); + VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.numPhysicalSgprs ); + VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.numAvailableVgprs ); + VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.numAvailableSgprs ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.computeWorkGroupSize[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR const & + sharedPresentSurfaceCapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sharedPresentSurfaceCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, sharedPresentSurfaceCapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, sharedPresentSurfaceCapabilitiesKHR.sharedPresentSupportedUsageFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::SparseImageFormatProperties const & sparseImageFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties.aspectMask ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties.imageGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2 const & sparseImageFormatProperties2 ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties2.properties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements const & sparseImageMemoryRequirements ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements.formatProperties ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements.imageMipTailFirstLod ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements.imageMipTailSize ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements.imageMipTailOffset ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements.imageMipTailStride ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 const & sparseImageMemoryRequirements2 ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements2.memoryRequirements ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_GGP ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const & + streamDescriptorSurfaceCreateInfoGGP ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, streamDescriptorSurfaceCreateInfoGGP.sType ); + VULKAN_HPP_HASH_COMBINE( seed, streamDescriptorSurfaceCreateInfoGGP.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, streamDescriptorSurfaceCreateInfoGGP.flags ); + VULKAN_HPP_HASH_COMBINE( seed, streamDescriptorSurfaceCreateInfoGGP.streamDescriptor ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_GGP*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR const & stridedDeviceAddressRegionKHR ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, stridedDeviceAddressRegionKHR.deviceAddress ); + VULKAN_HPP_HASH_COMBINE( seed, stridedDeviceAddressRegionKHR.stride ); + VULKAN_HPP_HASH_COMBINE( seed, stridedDeviceAddressRegionKHR.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubmitInfo const & submitInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.waitSemaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.pWaitSemaphores ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.pWaitDstStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.commandBufferCount ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.pCommandBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.signalSemaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.pSignalSemaphores ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubmitInfo2 const & submitInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.flags ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.waitSemaphoreInfoCount ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.pWaitSemaphoreInfos ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.commandBufferInfoCount ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.pCommandBufferInfos ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.signalSemaphoreInfoCount ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.pSignalSemaphoreInfos ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubpassBeginInfo const & subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassBeginInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subpassBeginInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, subpassBeginInfo.contents ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve const & + subpassDescriptionDepthStencilResolve ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassDescriptionDepthStencilResolve.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescriptionDepthStencilResolve.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescriptionDepthStencilResolve.depthResolveMode ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescriptionDepthStencilResolve.stencilResolveMode ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescriptionDepthStencilResolve.pDepthStencilResolveAttachment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubpassEndInfo const & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassEndInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subpassEndInfo.pNext ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM const & + subpassFragmentDensityMapOffsetEndInfoQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassFragmentDensityMapOffsetEndInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subpassFragmentDensityMapOffsetEndInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, subpassFragmentDensityMapOffsetEndInfoQCOM.fragmentDensityOffsetCount ); + VULKAN_HPP_HASH_COMBINE( seed, subpassFragmentDensityMapOffsetEndInfoQCOM.pFragmentDensityOffsets ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI const & + subpassShadingPipelineCreateInfoHUAWEI ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassShadingPipelineCreateInfoHUAWEI.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subpassShadingPipelineCreateInfoHUAWEI.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, subpassShadingPipelineCreateInfoHUAWEI.renderPass ); + VULKAN_HPP_HASH_COMBINE( seed, subpassShadingPipelineCreateInfoHUAWEI.subpass ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT const & surfaceCapabilities2EXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.minImageCount ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.maxImageCount ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.currentExtent ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.minImageExtent ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.maxImageExtent ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.maxImageArrayLayers ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.supportedTransforms ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.currentTransform ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.supportedCompositeAlpha ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.supportedUsageFlags ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.supportedSurfaceCounters ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR const & surfaceCapabilitiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.minImageCount ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.maxImageCount ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.currentExtent ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.minImageExtent ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.maxImageExtent ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.maxImageArrayLayers ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.supportedTransforms ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.currentTransform ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.supportedCompositeAlpha ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.supportedUsageFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR const & surfaceCapabilities2KHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2KHR.surfaceCapabilities ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT const & + surfaceCapabilitiesFullScreenExclusiveEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesFullScreenExclusiveEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesFullScreenExclusiveEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesFullScreenExclusiveEXT.fullScreenExclusiveSupported ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceFormatKHR const & surfaceFormatKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceFormatKHR.format ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceFormatKHR.colorSpace ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR const & surfaceFormat2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceFormat2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceFormat2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceFormat2KHR.surfaceFormat ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT const & + surfaceFullScreenExclusiveInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveInfoEXT.fullScreenExclusive ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT const & + surfaceFullScreenExclusiveWin32InfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveWin32InfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveWin32InfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveWin32InfoEXT.hmonitor ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR const & surfaceProtectedCapabilitiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceProtectedCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceProtectedCapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceProtectedCapabilitiesKHR.supportsProtected ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT const & swapchainCounterCreateInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, swapchainCounterCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCounterCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCounterCreateInfoEXT.surfaceCounters ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const & swapchainCreateInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.surface ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.minImageCount ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageFormat ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageColorSpace ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageExtent ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageArrayLayers ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageUsage ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageSharingMode ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.queueFamilyIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.pQueueFamilyIndices ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.preTransform ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.compositeAlpha ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.presentMode ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.clipped ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.oldSwapchain ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD const & + swapchainDisplayNativeHdrCreateInfoAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, swapchainDisplayNativeHdrCreateInfoAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainDisplayNativeHdrCreateInfoAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainDisplayNativeHdrCreateInfoAMD.localDimmingEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD const & + textureLODGatherFormatPropertiesAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, textureLODGatherFormatPropertiesAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, textureLODGatherFormatPropertiesAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, textureLODGatherFormatPropertiesAMD.supportsTextureGatherLODBiasAMD ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo const & timelineSemaphoreSubmitInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.waitSemaphoreValueCount ); + VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.pWaitSemaphoreValues ); + VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.signalSemaphoreValueCount ); + VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.pSignalSemaphoreValues ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR const & traceRaysIndirectCommandKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommandKHR.width ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommandKHR.height ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommandKHR.depth ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const & validationCacheCreateInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, validationCacheCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, validationCacheCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, validationCacheCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, validationCacheCreateInfoEXT.initialDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, validationCacheCreateInfoEXT.pInitialData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT const & validationFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.enabledValidationFeatureCount ); + VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.pEnabledValidationFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.disabledValidationFeatureCount ); + VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.pDisabledValidationFeatures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ValidationFlagsEXT const & validationFlagsEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, validationFlagsEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, validationFlagsEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, validationFlagsEXT.disabledValidationCheckCount ); + VULKAN_HPP_HASH_COMBINE( seed, validationFlagsEXT.pDisabledValidationChecks ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT const & + vertexInputAttributeDescription2EXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.location ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.binding ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.format ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.offset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT const & + vertexInputBindingDescription2EXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.binding ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.stride ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.inputRate ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.divisor ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_VI_NN ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const & viSurfaceCreateInfoNN ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, viSurfaceCreateInfoNN.sType ); + VULKAN_HPP_HASH_COMBINE( seed, viSurfaceCreateInfoNN.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, viSurfaceCreateInfoNN.flags ); + VULKAN_HPP_HASH_COMBINE( seed, viSurfaceCreateInfoNN.window ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_VI_NN*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR const & videoPictureResourceKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceKHR.codedOffset ); + VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceKHR.codedExtent ); + VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceKHR.baseArrayLayer ); + VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceKHR.imageViewBinding ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR const & videoReferenceSlotKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoReferenceSlotKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoReferenceSlotKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoReferenceSlotKHR.slotIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoReferenceSlotKHR.pPictureResource ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR const & videoBeginCodingInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.codecQualityPreset ); + VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.videoSession ); + VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.videoSessionParameters ); + VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.referenceSlotCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.pReferenceSlots ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR const & videoBindMemoryKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoBindMemoryKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoBindMemoryKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoBindMemoryKHR.memoryBindIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoBindMemoryKHR.memory ); + VULKAN_HPP_HASH_COMBINE( seed, videoBindMemoryKHR.memoryOffset ); + VULKAN_HPP_HASH_COMBINE( seed, videoBindMemoryKHR.memorySize ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR const & videoCapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.capabilityFlags ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.minBitstreamBufferOffsetAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.minBitstreamBufferSizeAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.videoPictureExtentGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.minExtent ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.maxExtent ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.maxReferencePicturesSlotsCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.maxReferencePicturesActiveCount ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR const & videoCodingControlInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoCodingControlInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoCodingControlInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoCodingControlInfoKHR.flags ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesEXT const & videoDecodeH264CapabilitiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264CapabilitiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264CapabilitiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264CapabilitiesEXT.maxLevel ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264CapabilitiesEXT.fieldOffsetGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264CapabilitiesEXT.stdExtensionVersion ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT const & videoDecodeH264DpbSlotInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264DpbSlotInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264DpbSlotInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264DpbSlotInfoEXT.pStdReferenceInfo ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT const & videoDecodeH264MvcEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264MvcEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264MvcEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264MvcEXT.pStdMvc ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT const & videoDecodeH264PictureInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264PictureInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264PictureInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264PictureInfoEXT.pStdPictureInfo ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264PictureInfoEXT.slicesCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264PictureInfoEXT.pSlicesDataOffsets ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT const & videoDecodeH264ProfileEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264ProfileEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264ProfileEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264ProfileEXT.stdProfileIdc ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264ProfileEXT.pictureLayout ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT const & + videoDecodeH264SessionCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionCreateInfoEXT.pStdExtensionVersion ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT const & + videoDecodeH264SessionParametersAddInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoEXT.spsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoEXT.pSpsStd ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoEXT.ppsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoEXT.pPpsStd ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT const & + videoDecodeH264SessionParametersCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersCreateInfoEXT.maxSpsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersCreateInfoEXT.maxPpsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersCreateInfoEXT.pParametersAddInfo ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesEXT const & videoDecodeH265CapabilitiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265CapabilitiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265CapabilitiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265CapabilitiesEXT.maxLevel ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265CapabilitiesEXT.stdExtensionVersion ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT const & videoDecodeH265DpbSlotInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265DpbSlotInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265DpbSlotInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265DpbSlotInfoEXT.pStdReferenceInfo ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT const & videoDecodeH265PictureInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265PictureInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265PictureInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265PictureInfoEXT.pStdPictureInfo ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265PictureInfoEXT.slicesCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265PictureInfoEXT.pSlicesDataOffsets ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT const & videoDecodeH265ProfileEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265ProfileEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265ProfileEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265ProfileEXT.stdProfileIdc ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT const & + videoDecodeH265SessionCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionCreateInfoEXT.pStdExtensionVersion ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT const & + videoDecodeH265SessionParametersAddInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoEXT.spsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoEXT.pSpsStd ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoEXT.ppsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoEXT.pPpsStd ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT const & + videoDecodeH265SessionParametersCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoEXT.maxSpsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoEXT.maxPpsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoEXT.pParametersAddInfo ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR const & videoDecodeInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.codedOffset ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.codedExtent ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.srcBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.srcBufferOffset ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.srcBufferRange ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.dstPictureResource ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.pSetupReferenceSlot ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.referenceSlotCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.pReferenceSlots ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT const & videoEncodeH264CapabilitiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.inputModeFlags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.outputModeFlags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.minPictureSizeInMbs ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.maxPictureSizeInMbs ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.inputImageDataAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.maxNumL0ReferenceForP ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.maxNumL0ReferenceForB ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.maxNumL1Reference ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.qualityLevelCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.stdExtensionVersion ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT const & videoEncodeH264DpbSlotInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264DpbSlotInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264DpbSlotInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264DpbSlotInfoEXT.slotIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264DpbSlotInfoEXT.pStdPictureInfo ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT const & + videoEncodeH264EmitPictureParametersEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264EmitPictureParametersEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264EmitPictureParametersEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264EmitPictureParametersEXT.spsId ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264EmitPictureParametersEXT.emitSpsEnable ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264EmitPictureParametersEXT.ppsIdEntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264EmitPictureParametersEXT.ppsIdEntries ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT const & videoEncodeH264FrameSizeEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264FrameSizeEXT.frameISize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264FrameSizeEXT.framePSize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264FrameSizeEXT.frameBSize ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT const & videoEncodeH264NaluSliceEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceEXT.pSliceHeaderStd ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceEXT.mbCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceEXT.refFinalList0EntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceEXT.pRefFinalList0Entries ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceEXT.refFinalList1EntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceEXT.pRefFinalList1Entries ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT const & videoEncodeH264ProfileEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ProfileEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ProfileEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ProfileEXT.stdProfileIdc ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT const & videoEncodeH264QpEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QpEXT.qpI ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QpEXT.qpP ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QpEXT.qpB ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT const & + videoEncodeH264RateControlInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoEXT.gopFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoEXT.idrPeriod ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoEXT.consecutiveBFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoEXT.rateControlStructure ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoEXT.temporalLayerCount ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT const & + videoEncodeH264RateControlLayerInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.temporalLayerId ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.useInitialRcQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.initialRcQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.useMinQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.minQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.useMaxQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.maxQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.useMaxFrameSize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.maxFrameSize ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT const & + videoEncodeH264SessionCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionCreateInfoEXT.maxPictureSizeInMbs ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionCreateInfoEXT.pStdExtensionVersion ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT const & + videoEncodeH264SessionParametersAddInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoEXT.spsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoEXT.pSpsStd ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoEXT.ppsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoEXT.pPpsStd ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT const & + videoEncodeH264SessionParametersCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersCreateInfoEXT.maxSpsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersCreateInfoEXT.maxPpsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersCreateInfoEXT.pParametersAddInfo ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT const & videoEncodeH264VclFrameInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264VclFrameInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264VclFrameInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264VclFrameInfoEXT.refDefaultFinalList0EntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264VclFrameInfoEXT.pRefDefaultFinalList0Entries ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264VclFrameInfoEXT.refDefaultFinalList1EntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264VclFrameInfoEXT.pRefDefaultFinalList1Entries ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264VclFrameInfoEXT.naluSliceEntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264VclFrameInfoEXT.pNaluSliceEntries ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264VclFrameInfoEXT.pCurrentPictureInfo ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT const & videoEncodeH265CapabilitiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.inputModeFlags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.outputModeFlags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.ctbSizes ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.inputImageDataAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.maxNumL0ReferenceForP ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.maxNumL0ReferenceForB ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.maxNumL1Reference ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.maxNumSubLayers ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.qualityLevelCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.stdExtensionVersion ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT const & videoEncodeH265DpbSlotInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265DpbSlotInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265DpbSlotInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265DpbSlotInfoEXT.slotIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265DpbSlotInfoEXT.pStdReferenceInfo ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT const & + videoEncodeH265EmitPictureParametersEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersEXT.vpsId ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersEXT.spsId ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersEXT.emitVpsEnable ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersEXT.emitSpsEnable ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersEXT.ppsIdEntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersEXT.ppsIdEntries ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT const & videoEncodeH265FrameSizeEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265FrameSizeEXT.frameISize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265FrameSizeEXT.framePSize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265FrameSizeEXT.frameBSize ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT const & + videoEncodeH265ReferenceListsEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ReferenceListsEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ReferenceListsEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ReferenceListsEXT.referenceList0EntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ReferenceListsEXT.pReferenceList0Entries ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ReferenceListsEXT.referenceList1EntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ReferenceListsEXT.pReferenceList1Entries ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ReferenceListsEXT.pReferenceModifications ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT const & videoEncodeH265NaluSliceEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265NaluSliceEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265NaluSliceEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265NaluSliceEXT.ctbCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265NaluSliceEXT.pReferenceFinalLists ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265NaluSliceEXT.pSliceHeaderStd ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT const & videoEncodeH265ProfileEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ProfileEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ProfileEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ProfileEXT.stdProfileIdc ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT const & videoEncodeH265QpEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QpEXT.qpI ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QpEXT.qpP ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QpEXT.qpB ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT const & + videoEncodeH265RateControlInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoEXT.gopFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoEXT.idrPeriod ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoEXT.consecutiveBFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoEXT.rateControlStructure ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoEXT.subLayerCount ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT const & + videoEncodeH265RateControlLayerInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.temporalId ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.useInitialRcQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.initialRcQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.useMinQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.minQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.useMaxQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.maxQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.useMaxFrameSize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.maxFrameSize ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT const & + videoEncodeH265SessionCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionCreateInfoEXT.pStdExtensionVersion ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT const & + videoEncodeH265SessionParametersAddInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.vpsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.pVpsStd ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.spsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.pSpsStd ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.ppsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.pPpsStd ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT const & + videoEncodeH265SessionParametersCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoEXT.maxVpsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoEXT.maxSpsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoEXT.maxPpsStdCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoEXT.pParametersAddInfo ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT const & videoEncodeH265VclFrameInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265VclFrameInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265VclFrameInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265VclFrameInfoEXT.pReferenceFinalLists ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265VclFrameInfoEXT.naluSliceEntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265VclFrameInfoEXT.pNaluSliceEntries ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265VclFrameInfoEXT.pCurrentPictureInfo ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR const & videoEncodeInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.qualityLevel ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.codedExtent ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.dstBitstreamBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.dstBitstreamBufferOffset ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.dstBitstreamBufferMaxRange ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.srcPictureResource ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.pSetupReferenceSlot ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.referenceSlotCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.pReferenceSlots ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.precedingExternallyEncodedBytes ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR const & + videoEncodeRateControlLayerInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.averageBitrate ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.maxBitrate ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.frameRateNumerator ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.frameRateDenominator ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.virtualBufferSizeInMs ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.initialVirtualBufferSizeInMs ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR const & videoEncodeRateControlInfoKHR ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.rateControlMode ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.layerCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.pLayerConfigs ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR const & videoEndCodingInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEndCodingInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEndCodingInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEndCodingInfoKHR.flags ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR const & videoFormatPropertiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.format ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR const & videoGetMemoryPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoGetMemoryPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoGetMemoryPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoGetMemoryPropertiesKHR.memoryBindIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoGetMemoryPropertiesKHR.pMemoryRequirements ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR const & videoQueueFamilyProperties2KHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoQueueFamilyProperties2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoQueueFamilyProperties2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoQueueFamilyProperties2KHR.videoCodecOperations ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const & videoSessionCreateInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.queueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.pVideoProfile ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.pictureFormat ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.maxCodedExtent ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.referencePicturesFormat ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.maxReferencePicturesSlotsCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.maxReferencePicturesActiveCount ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const & + videoSessionParametersCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersCreateInfoKHR.videoSessionParametersTemplate ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersCreateInfoKHR.videoSession ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR const & + videoSessionParametersUpdateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersUpdateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersUpdateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersUpdateInfoKHR.updateSequenceCount ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const & waylandSurfaceCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, waylandSurfaceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, waylandSurfaceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, waylandSurfaceCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, waylandSurfaceCreateInfoKHR.display ); + VULKAN_HPP_HASH_COMBINE( seed, waylandSurfaceCreateInfoKHR.surface ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR const & + win32KeyedMutexAcquireReleaseInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.acquireCount ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pAcquireSyncs ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pAcquireKeys ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pAcquireTimeouts ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.releaseCount ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pReleaseSyncs ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pReleaseKeys ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV const & + win32KeyedMutexAcquireReleaseInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.acquireCount ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pAcquireSyncs ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pAcquireKeys ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pAcquireTimeoutMilliseconds ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.releaseCount ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pReleaseSyncs ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pReleaseKeys ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const & win32SurfaceCreateInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, win32SurfaceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, win32SurfaceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, win32SurfaceCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, win32SurfaceCreateInfoKHR.hinstance ); + VULKAN_HPP_HASH_COMBINE( seed, win32SurfaceCreateInfoKHR.hwnd ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::WriteDescriptorSet const & writeDescriptorSet ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.sType ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.dstSet ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.dstBinding ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.dstArrayElement ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.descriptorCount ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.descriptorType ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.pImageInfo ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.pBufferInfo ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.pTexelBufferView ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR const & + writeDescriptorSetAccelerationStructureKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureKHR.accelerationStructureCount ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureKHR.pAccelerationStructures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV const & + writeDescriptorSetAccelerationStructureNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureNV.accelerationStructureCount ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureNV.pAccelerationStructures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock const & + writeDescriptorSetInlineUniformBlock ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetInlineUniformBlock.sType ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetInlineUniformBlock.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetInlineUniformBlock.dataSize ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetInlineUniformBlock.pData ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_XCB_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const & xcbSurfaceCreateInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, xcbSurfaceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, xcbSurfaceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, xcbSurfaceCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, xcbSurfaceCreateInfoKHR.connection ); + VULKAN_HPP_HASH_COMBINE( seed, xcbSurfaceCreateInfoKHR.window ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_XCB_KHR*/ + +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const & xlibSurfaceCreateInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, xlibSurfaceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, xlibSurfaceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, xlibSurfaceCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, xlibSurfaceCreateInfoKHR.dpy ); + VULKAN_HPP_HASH_COMBINE( seed, xlibSurfaceCreateInfoKHR.window ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#endif // 14 <= VULKAN_HPP_CPP_VERSION + +} // namespace std +#endif // VULKAN_HASH_HPP diff --git a/Externals/Vulkan/Include/vulkan/vulkan_ios.h b/Externals/Vulkan/Include/vulkan/vulkan_ios.h index 72ef1a8a8250..57922054393b 100644 --- a/Externals/Vulkan/Include/vulkan/vulkan_ios.h +++ b/Externals/Vulkan/Include/vulkan/vulkan_ios.h @@ -2,19 +2,9 @@ #define VULKAN_IOS_H_ 1 /* -** Copyright (c) 2015-2019 The Khronos Group Inc. +** Copyright 2015-2022 The Khronos Group Inc. ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -30,7 +20,7 @@ extern "C" { #define VK_MVK_ios_surface 1 -#define VK_MVK_IOS_SURFACE_SPEC_VERSION 2 +#define VK_MVK_IOS_SURFACE_SPEC_VERSION 3 #define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface" typedef VkFlags VkIOSSurfaceCreateFlagsMVK; typedef struct VkIOSSurfaceCreateInfoMVK { diff --git a/Externals/Vulkan/Include/vulkan/vulkan_macos.h b/Externals/Vulkan/Include/vulkan/vulkan_macos.h index e6e5deaa3662..8e197c7cff41 100644 --- a/Externals/Vulkan/Include/vulkan/vulkan_macos.h +++ b/Externals/Vulkan/Include/vulkan/vulkan_macos.h @@ -2,19 +2,9 @@ #define VULKAN_MACOS_H_ 1 /* -** Copyright (c) 2015-2019 The Khronos Group Inc. +** Copyright 2015-2022 The Khronos Group Inc. ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -30,7 +20,7 @@ extern "C" { #define VK_MVK_macos_surface 1 -#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 2 +#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 3 #define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface" typedef VkFlags VkMacOSSurfaceCreateFlagsMVK; typedef struct VkMacOSSurfaceCreateInfoMVK { diff --git a/Externals/Vulkan/Include/vulkan/vulkan_metal.h b/Externals/Vulkan/Include/vulkan/vulkan_metal.h index 3dec68c7713d..3631f1200a54 100644 --- a/Externals/Vulkan/Include/vulkan/vulkan_metal.h +++ b/Externals/Vulkan/Include/vulkan/vulkan_metal.h @@ -2,19 +2,9 @@ #define VULKAN_METAL_H_ 1 /* -** Copyright (c) 2015-2019 The Khronos Group Inc. +** Copyright 2015-2022 The Khronos Group Inc. ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. +** SPDX-License-Identifier: Apache-2.0 */ /* diff --git a/Externals/Vulkan/Include/vulkan/vulkan_raii.hpp b/Externals/Vulkan/Include/vulkan/vulkan_raii.hpp new file mode 100644 index 000000000000..a5304301d750 --- /dev/null +++ b/Externals/Vulkan/Include/vulkan/vulkan_raii.hpp @@ -0,0 +1,18669 @@ +// Copyright 2015-2022 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_RAII_HPP +#define VULKAN_RAII_HPP + +#include + +#if !defined( VULKAN_HPP_RAII_NAMESPACE ) +# define VULKAN_HPP_RAII_NAMESPACE raii +#endif + +namespace VULKAN_HPP_NAMESPACE +{ + namespace VULKAN_HPP_RAII_NAMESPACE + { +#if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) && !defined( VULKAN_HPP_NO_EXCEPTIONS ) + + template + VULKAN_HPP_CONSTEXPR_14 VULKAN_HPP_INLINE T exchange( T & obj, U && newValue ) + { +# if ( 14 <= VULKAN_HPP_CPP_VERSION ) + return std::exchange( obj, std::forward( newValue ) ); +# else + T oldValue = std::move( obj ); + obj = std::forward( newValue ); + return oldValue; +# endif + } + + class ContextDispatcher : public DispatchLoaderBase + { + public: + ContextDispatcher( PFN_vkGetInstanceProcAddr getProcAddr ) + : vkGetInstanceProcAddr( getProcAddr ) + //=== VK_VERSION_1_0 === + , vkCreateInstance( PFN_vkCreateInstance( getProcAddr( NULL, "vkCreateInstance" ) ) ) + , vkEnumerateInstanceExtensionProperties( PFN_vkEnumerateInstanceExtensionProperties( + getProcAddr( NULL, "vkEnumerateInstanceExtensionProperties" ) ) ) + , vkEnumerateInstanceLayerProperties( + PFN_vkEnumerateInstanceLayerProperties( getProcAddr( NULL, "vkEnumerateInstanceLayerProperties" ) ) ) + //=== VK_VERSION_1_1 === + , vkEnumerateInstanceVersion( + PFN_vkEnumerateInstanceVersion( getProcAddr( NULL, "vkEnumerateInstanceVersion" ) ) ) + {} + + public: + PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = 0; + + //=== VK_VERSION_1_0 === + PFN_vkCreateInstance vkCreateInstance = 0; + PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties = 0; + PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties = 0; + + //=== VK_VERSION_1_1 === + PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion = 0; + }; + + class InstanceDispatcher : public DispatchLoaderBase + { + public: + InstanceDispatcher( PFN_vkGetInstanceProcAddr getProcAddr, VkInstance instance ) + : vkGetInstanceProcAddr( getProcAddr ) + { + //=== VK_VERSION_1_0 === + vkDestroyInstance = PFN_vkDestroyInstance( vkGetInstanceProcAddr( instance, "vkDestroyInstance" ) ); + vkEnumeratePhysicalDevices = + PFN_vkEnumeratePhysicalDevices( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDevices" ) ); + vkGetPhysicalDeviceFeatures = + PFN_vkGetPhysicalDeviceFeatures( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures" ) ); + vkGetPhysicalDeviceFormatProperties = PFN_vkGetPhysicalDeviceFormatProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties" ) ); + vkGetPhysicalDeviceImageFormatProperties = PFN_vkGetPhysicalDeviceImageFormatProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties" ) ); + vkGetPhysicalDeviceProperties = + PFN_vkGetPhysicalDeviceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties" ) ); + vkGetPhysicalDeviceQueueFamilyProperties = PFN_vkGetPhysicalDeviceQueueFamilyProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties" ) ); + vkGetPhysicalDeviceMemoryProperties = PFN_vkGetPhysicalDeviceMemoryProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties" ) ); + vkCreateDevice = PFN_vkCreateDevice( vkGetInstanceProcAddr( instance, "vkCreateDevice" ) ); + vkEnumerateDeviceExtensionProperties = PFN_vkEnumerateDeviceExtensionProperties( + vkGetInstanceProcAddr( instance, "vkEnumerateDeviceExtensionProperties" ) ); + vkEnumerateDeviceLayerProperties = + PFN_vkEnumerateDeviceLayerProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceLayerProperties" ) ); + vkGetPhysicalDeviceSparseImageFormatProperties = PFN_vkGetPhysicalDeviceSparseImageFormatProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties" ) ); + + //=== VK_VERSION_1_1 === + vkEnumeratePhysicalDeviceGroups = + PFN_vkEnumeratePhysicalDeviceGroups( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroups" ) ); + vkGetPhysicalDeviceFeatures2 = + PFN_vkGetPhysicalDeviceFeatures2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2" ) ); + vkGetPhysicalDeviceProperties2 = + PFN_vkGetPhysicalDeviceProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2" ) ); + vkGetPhysicalDeviceFormatProperties2 = PFN_vkGetPhysicalDeviceFormatProperties2( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2" ) ); + vkGetPhysicalDeviceImageFormatProperties2 = PFN_vkGetPhysicalDeviceImageFormatProperties2( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2" ) ); + vkGetPhysicalDeviceQueueFamilyProperties2 = PFN_vkGetPhysicalDeviceQueueFamilyProperties2( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2" ) ); + vkGetPhysicalDeviceMemoryProperties2 = PFN_vkGetPhysicalDeviceMemoryProperties2( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2" ) ); + vkGetPhysicalDeviceSparseImageFormatProperties2 = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2" ) ); + vkGetPhysicalDeviceExternalBufferProperties = PFN_vkGetPhysicalDeviceExternalBufferProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferProperties" ) ); + vkGetPhysicalDeviceExternalFenceProperties = PFN_vkGetPhysicalDeviceExternalFenceProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFenceProperties" ) ); + vkGetPhysicalDeviceExternalSemaphoreProperties = PFN_vkGetPhysicalDeviceExternalSemaphoreProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphoreProperties" ) ); + + //=== VK_VERSION_1_3 === + vkGetPhysicalDeviceToolProperties = PFN_vkGetPhysicalDeviceToolProperties( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolProperties" ) ); + + //=== VK_EXT_acquire_drm_display === + vkAcquireDrmDisplayEXT = + PFN_vkAcquireDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireDrmDisplayEXT" ) ); + vkGetDrmDisplayEXT = PFN_vkGetDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetDrmDisplayEXT" ) ); + +# if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + vkAcquireXlibDisplayEXT = + PFN_vkAcquireXlibDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireXlibDisplayEXT" ) ); + vkGetRandROutputDisplayEXT = + PFN_vkGetRandROutputDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetRandROutputDisplayEXT" ) ); +# endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_calibrated_timestamps === + vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT" ) ); + + //=== VK_EXT_debug_report === + vkCreateDebugReportCallbackEXT = + PFN_vkCreateDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" ) ); + vkDestroyDebugReportCallbackEXT = + PFN_vkDestroyDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugReportCallbackEXT" ) ); + vkDebugReportMessageEXT = + PFN_vkDebugReportMessageEXT( vkGetInstanceProcAddr( instance, "vkDebugReportMessageEXT" ) ); + + //=== VK_EXT_debug_utils === + vkCreateDebugUtilsMessengerEXT = + PFN_vkCreateDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugUtilsMessengerEXT" ) ); + vkDestroyDebugUtilsMessengerEXT = + PFN_vkDestroyDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugUtilsMessengerEXT" ) ); + vkSubmitDebugUtilsMessageEXT = + PFN_vkSubmitDebugUtilsMessageEXT( vkGetInstanceProcAddr( instance, "vkSubmitDebugUtilsMessageEXT" ) ); + + //=== VK_EXT_direct_mode_display === + vkReleaseDisplayEXT = PFN_vkReleaseDisplayEXT( vkGetInstanceProcAddr( instance, "vkReleaseDisplayEXT" ) ); + +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + vkCreateDirectFBSurfaceEXT = + PFN_vkCreateDirectFBSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateDirectFBSurfaceEXT" ) ); + vkGetPhysicalDeviceDirectFBPresentationSupportEXT = PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT" ) ); +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_EXT_display_surface_counter === + vkGetPhysicalDeviceSurfaceCapabilities2EXT = PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT" ) ); + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + vkGetPhysicalDeviceSurfacePresentModes2EXT = PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModes2EXT" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + vkCreateHeadlessSurfaceEXT = + PFN_vkCreateHeadlessSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateHeadlessSurfaceEXT" ) ); + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + vkCreateMetalSurfaceEXT = + PFN_vkCreateMetalSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateMetalSurfaceEXT" ) ); +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_EXT_sample_locations === + vkGetPhysicalDeviceMultisamplePropertiesEXT = PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT" ) ); + + //=== VK_EXT_tooling_info === + vkGetPhysicalDeviceToolPropertiesEXT = PFN_vkGetPhysicalDeviceToolPropertiesEXT( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolPropertiesEXT" ) ); + if ( !vkGetPhysicalDeviceToolProperties ) + vkGetPhysicalDeviceToolProperties = vkGetPhysicalDeviceToolPropertiesEXT; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + vkCreateImagePipeSurfaceFUCHSIA = + PFN_vkCreateImagePipeSurfaceFUCHSIA( vkGetInstanceProcAddr( instance, "vkCreateImagePipeSurfaceFUCHSIA" ) ); +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + vkCreateStreamDescriptorSurfaceGGP = PFN_vkCreateStreamDescriptorSurfaceGGP( + vkGetInstanceProcAddr( instance, "vkCreateStreamDescriptorSurfaceGGP" ) ); +# endif /*VK_USE_PLATFORM_GGP*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + vkCreateAndroidSurfaceKHR = + PFN_vkCreateAndroidSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateAndroidSurfaceKHR" ) ); +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + //=== VK_KHR_device_group === + vkGetPhysicalDevicePresentRectanglesKHR = PFN_vkGetPhysicalDevicePresentRectanglesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDevicePresentRectanglesKHR" ) ); + + //=== VK_KHR_device_group_creation === + vkEnumeratePhysicalDeviceGroupsKHR = PFN_vkEnumeratePhysicalDeviceGroupsKHR( + vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroupsKHR" ) ); + if ( !vkEnumeratePhysicalDeviceGroups ) + vkEnumeratePhysicalDeviceGroups = vkEnumeratePhysicalDeviceGroupsKHR; + + //=== VK_KHR_display === + vkGetPhysicalDeviceDisplayPropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPropertiesKHR" ) ); + vkGetPhysicalDeviceDisplayPlanePropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" ) ); + vkGetDisplayPlaneSupportedDisplaysKHR = PFN_vkGetDisplayPlaneSupportedDisplaysKHR( + vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneSupportedDisplaysKHR" ) ); + vkGetDisplayModePropertiesKHR = + PFN_vkGetDisplayModePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModePropertiesKHR" ) ); + vkCreateDisplayModeKHR = + PFN_vkCreateDisplayModeKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayModeKHR" ) ); + vkGetDisplayPlaneCapabilitiesKHR = + PFN_vkGetDisplayPlaneCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilitiesKHR" ) ); + vkCreateDisplayPlaneSurfaceKHR = + PFN_vkCreateDisplayPlaneSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayPlaneSurfaceKHR" ) ); + + //=== VK_KHR_external_fence_capabilities === + vkGetPhysicalDeviceExternalFencePropertiesKHR = PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR" ) ); + if ( !vkGetPhysicalDeviceExternalFenceProperties ) + vkGetPhysicalDeviceExternalFenceProperties = vkGetPhysicalDeviceExternalFencePropertiesKHR; + + //=== VK_KHR_external_memory_capabilities === + vkGetPhysicalDeviceExternalBufferPropertiesKHR = PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR" ) ); + if ( !vkGetPhysicalDeviceExternalBufferProperties ) + vkGetPhysicalDeviceExternalBufferProperties = vkGetPhysicalDeviceExternalBufferPropertiesKHR; + + //=== VK_KHR_external_semaphore_capabilities === + vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR" ) ); + if ( !vkGetPhysicalDeviceExternalSemaphoreProperties ) + vkGetPhysicalDeviceExternalSemaphoreProperties = vkGetPhysicalDeviceExternalSemaphorePropertiesKHR; + + //=== VK_KHR_fragment_shading_rate === + vkGetPhysicalDeviceFragmentShadingRatesKHR = PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFragmentShadingRatesKHR" ) ); + + //=== VK_KHR_get_display_properties2 === + vkGetPhysicalDeviceDisplayProperties2KHR = PFN_vkGetPhysicalDeviceDisplayProperties2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayProperties2KHR" ) ); + vkGetPhysicalDeviceDisplayPlaneProperties2KHR = PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" ) ); + vkGetDisplayModeProperties2KHR = + PFN_vkGetDisplayModeProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModeProperties2KHR" ) ); + vkGetDisplayPlaneCapabilities2KHR = PFN_vkGetDisplayPlaneCapabilities2KHR( + vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilities2KHR" ) ); + + //=== VK_KHR_get_physical_device_properties2 === + vkGetPhysicalDeviceFeatures2KHR = + PFN_vkGetPhysicalDeviceFeatures2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2KHR" ) ); + if ( !vkGetPhysicalDeviceFeatures2 ) + vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2KHR; + vkGetPhysicalDeviceProperties2KHR = PFN_vkGetPhysicalDeviceProperties2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceProperties2 ) + vkGetPhysicalDeviceProperties2 = vkGetPhysicalDeviceProperties2KHR; + vkGetPhysicalDeviceFormatProperties2KHR = PFN_vkGetPhysicalDeviceFormatProperties2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceFormatProperties2 ) + vkGetPhysicalDeviceFormatProperties2 = vkGetPhysicalDeviceFormatProperties2KHR; + vkGetPhysicalDeviceImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceImageFormatProperties2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceImageFormatProperties2 ) + vkGetPhysicalDeviceImageFormatProperties2 = vkGetPhysicalDeviceImageFormatProperties2KHR; + vkGetPhysicalDeviceQueueFamilyProperties2KHR = PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceQueueFamilyProperties2 ) + vkGetPhysicalDeviceQueueFamilyProperties2 = vkGetPhysicalDeviceQueueFamilyProperties2KHR; + vkGetPhysicalDeviceMemoryProperties2KHR = PFN_vkGetPhysicalDeviceMemoryProperties2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceMemoryProperties2 ) + vkGetPhysicalDeviceMemoryProperties2 = vkGetPhysicalDeviceMemoryProperties2KHR; + vkGetPhysicalDeviceSparseImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceSparseImageFormatProperties2 ) + vkGetPhysicalDeviceSparseImageFormatProperties2 = vkGetPhysicalDeviceSparseImageFormatProperties2KHR; + + //=== VK_KHR_get_surface_capabilities2 === + vkGetPhysicalDeviceSurfaceCapabilities2KHR = PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR" ) ); + vkGetPhysicalDeviceSurfaceFormats2KHR = PFN_vkGetPhysicalDeviceSurfaceFormats2KHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormats2KHR" ) ); + + //=== VK_KHR_performance_query === + vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = + PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR" ) ); + vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = + PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR" ) ); + + //=== VK_KHR_surface === + vkDestroySurfaceKHR = PFN_vkDestroySurfaceKHR( vkGetInstanceProcAddr( instance, "vkDestroySurfaceKHR" ) ); + vkGetPhysicalDeviceSurfaceSupportKHR = PFN_vkGetPhysicalDeviceSurfaceSupportKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceSupportKHR" ) ); + vkGetPhysicalDeviceSurfaceCapabilitiesKHR = PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" ) ); + vkGetPhysicalDeviceSurfaceFormatsKHR = PFN_vkGetPhysicalDeviceSurfaceFormatsKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormatsKHR" ) ); + vkGetPhysicalDeviceSurfacePresentModesKHR = PFN_vkGetPhysicalDeviceSurfacePresentModesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModesKHR" ) ); + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + vkGetPhysicalDeviceVideoCapabilitiesKHR = PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoCapabilitiesKHR" ) ); + vkGetPhysicalDeviceVideoFormatPropertiesKHR = PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoFormatPropertiesKHR" ) ); +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + vkCreateWaylandSurfaceKHR = + PFN_vkCreateWaylandSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWaylandSurfaceKHR" ) ); + vkGetPhysicalDeviceWaylandPresentationSupportKHR = PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR" ) ); +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + vkCreateWin32SurfaceKHR = + PFN_vkCreateWin32SurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWin32SurfaceKHR" ) ); + vkGetPhysicalDeviceWin32PresentationSupportKHR = PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + vkCreateXcbSurfaceKHR = PFN_vkCreateXcbSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXcbSurfaceKHR" ) ); + vkGetPhysicalDeviceXcbPresentationSupportKHR = PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR" ) ); +# endif /*VK_USE_PLATFORM_XCB_KHR*/ + +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + vkCreateXlibSurfaceKHR = + PFN_vkCreateXlibSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXlibSurfaceKHR" ) ); + vkGetPhysicalDeviceXlibPresentationSupportKHR = PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR" ) ); +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +# if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + vkCreateIOSSurfaceMVK = PFN_vkCreateIOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateIOSSurfaceMVK" ) ); +# endif /*VK_USE_PLATFORM_IOS_MVK*/ + +# if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + vkCreateMacOSSurfaceMVK = + PFN_vkCreateMacOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateMacOSSurfaceMVK" ) ); +# endif /*VK_USE_PLATFORM_MACOS_MVK*/ + +# if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + vkCreateViSurfaceNN = PFN_vkCreateViSurfaceNN( vkGetInstanceProcAddr( instance, "vkCreateViSurfaceNN" ) ); +# endif /*VK_USE_PLATFORM_VI_NN*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + vkAcquireWinrtDisplayNV = + PFN_vkAcquireWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkAcquireWinrtDisplayNV" ) ); + vkGetWinrtDisplayNV = PFN_vkGetWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkGetWinrtDisplayNV" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_NV_cooperative_matrix === + vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV" ) ); + + //=== VK_NV_coverage_reduction_mode === + vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = + PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV" ) ); + + //=== VK_NV_external_memory_capabilities === + vkGetPhysicalDeviceExternalImageFormatPropertiesNV = PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" ) ); + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + vkCreateScreenSurfaceQNX = + PFN_vkCreateScreenSurfaceQNX( vkGetInstanceProcAddr( instance, "vkCreateScreenSurfaceQNX" ) ); + vkGetPhysicalDeviceScreenPresentationSupportQNX = PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceScreenPresentationSupportQNX" ) ); +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr" ) ); + } + + public: + //=== VK_VERSION_1_0 === + PFN_vkDestroyInstance vkDestroyInstance = 0; + PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices = 0; + PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures = 0; + PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties = 0; + PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties = 0; + PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties = 0; + PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties = 0; + PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties = 0; + PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = 0; + PFN_vkCreateDevice vkCreateDevice = 0; + PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties = 0; + PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties = 0; + PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties = 0; + + //=== VK_VERSION_1_1 === + PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups = 0; + PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 = 0; + PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 = 0; + PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 = 0; + PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 = 0; + PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 = 0; + PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 = 0; + PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 = 0; + PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties = 0; + PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties = 0; + PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties = 0; + + //=== VK_VERSION_1_3 === + PFN_vkGetPhysicalDeviceToolProperties vkGetPhysicalDeviceToolProperties = 0; + + //=== VK_EXT_acquire_drm_display === + PFN_vkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXT = 0; + PFN_vkGetDrmDisplayEXT vkGetDrmDisplayEXT = 0; + +# if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT = 0; + PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT = 0; +# else + PFN_dummy vkAcquireXlibDisplayEXT_placeholder = 0; + PFN_dummy vkGetRandROutputDisplayEXT_placeholder = 0; +# endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_calibrated_timestamps === + PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 0; + + //=== VK_EXT_debug_report === + PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT = 0; + PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT = 0; + PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT = 0; + + //=== VK_EXT_debug_utils === + PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT = 0; + PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT = 0; + PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT = 0; + + //=== VK_EXT_direct_mode_display === + PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT = 0; + +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT = 0; + PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT = 0; +# else + PFN_dummy vkCreateDirectFBSurfaceEXT_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceDirectFBPresentationSupportEXT_placeholder = 0; +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_EXT_display_surface_counter === + PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT = 0; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT = 0; +# else + PFN_dummy vkGetPhysicalDeviceSurfacePresentModes2EXT_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT = 0; + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT = 0; +# else + PFN_dummy vkCreateMetalSurfaceEXT_placeholder = 0; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_EXT_sample_locations === + PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT = 0; + + //=== VK_EXT_tooling_info === + PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT = 0; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA = 0; +# else + PFN_dummy vkCreateImagePipeSurfaceFUCHSIA_placeholder = 0; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP = 0; +# else + PFN_dummy vkCreateStreamDescriptorSurfaceGGP_placeholder = 0; +# endif /*VK_USE_PLATFORM_GGP*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR = 0; +# else + PFN_dummy vkCreateAndroidSurfaceKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + //=== VK_KHR_device_group === + PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR = 0; + + //=== VK_KHR_device_group_creation === + PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR = 0; + + //=== VK_KHR_display === + PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR = 0; + PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 0; + PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR = 0; + PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR = 0; + PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR = 0; + PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR = 0; + PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR = 0; + + //=== VK_KHR_external_fence_capabilities === + PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR = 0; + + //=== VK_KHR_external_memory_capabilities === + PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR = 0; + + //=== VK_KHR_external_semaphore_capabilities === + PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 0; + + //=== VK_KHR_fragment_shading_rate === + PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR vkGetPhysicalDeviceFragmentShadingRatesKHR = 0; + + //=== VK_KHR_get_display_properties2 === + PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR = 0; + PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 0; + PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR = 0; + PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR = 0; + + //=== VK_KHR_get_physical_device_properties2 === + PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR = 0; + PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR = 0; + PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR = 0; + PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR = 0; + PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR = 0; + PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR = 0; + PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 0; + + //=== VK_KHR_get_surface_capabilities2 === + PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR = 0; + PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR = 0; + + //=== VK_KHR_performance_query === + PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR + vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = 0; + PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR + vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = 0; + + //=== VK_KHR_surface === + PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR = 0; + PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR = 0; + PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 0; + PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR = 0; + PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR = 0; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR = 0; + PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR = 0; +# else + PFN_dummy vkGetPhysicalDeviceVideoCapabilitiesKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceVideoFormatPropertiesKHR_placeholder = 0; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR = 0; + PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR = 0; +# else + PFN_dummy vkCreateWaylandSurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceWaylandPresentationSupportKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR = 0; + PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR = 0; +# else + PFN_dummy vkCreateWin32SurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceWin32PresentationSupportKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR = 0; + PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR = 0; +# else + PFN_dummy vkCreateXcbSurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceXcbPresentationSupportKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_XCB_KHR*/ + +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR = 0; + PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR = 0; +# else + PFN_dummy vkCreateXlibSurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceXlibPresentationSupportKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +# if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK = 0; +# else + PFN_dummy vkCreateIOSSurfaceMVK_placeholder = 0; +# endif /*VK_USE_PLATFORM_IOS_MVK*/ + +# if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK = 0; +# else + PFN_dummy vkCreateMacOSSurfaceMVK_placeholder = 0; +# endif /*VK_USE_PLATFORM_MACOS_MVK*/ + +# if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN = 0; +# else + PFN_dummy vkCreateViSurfaceNN_placeholder = 0; +# endif /*VK_USE_PLATFORM_VI_NN*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + PFN_vkAcquireWinrtDisplayNV vkAcquireWinrtDisplayNV = 0; + PFN_vkGetWinrtDisplayNV vkGetWinrtDisplayNV = 0; +# else + PFN_dummy vkAcquireWinrtDisplayNV_placeholder = 0; + PFN_dummy vkGetWinrtDisplayNV_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_NV_cooperative_matrix === + PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 0; + + //=== VK_NV_coverage_reduction_mode === + PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV + vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 0; + + //=== VK_NV_external_memory_capabilities === + PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 0; + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + PFN_vkCreateScreenSurfaceQNX vkCreateScreenSurfaceQNX = 0; + PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX vkGetPhysicalDeviceScreenPresentationSupportQNX = 0; +# else + PFN_dummy vkCreateScreenSurfaceQNX_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceScreenPresentationSupportQNX_placeholder = 0; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = 0; + }; + + class DeviceDispatcher : public DispatchLoaderBase + { + public: + DeviceDispatcher( PFN_vkGetDeviceProcAddr getProcAddr, VkDevice device ) : vkGetDeviceProcAddr( getProcAddr ) + { + //=== VK_VERSION_1_0 === + vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetDeviceProcAddr( device, "vkGetDeviceProcAddr" ) ); + vkDestroyDevice = PFN_vkDestroyDevice( vkGetDeviceProcAddr( device, "vkDestroyDevice" ) ); + vkGetDeviceQueue = PFN_vkGetDeviceQueue( vkGetDeviceProcAddr( device, "vkGetDeviceQueue" ) ); + vkQueueSubmit = PFN_vkQueueSubmit( vkGetDeviceProcAddr( device, "vkQueueSubmit" ) ); + vkQueueWaitIdle = PFN_vkQueueWaitIdle( vkGetDeviceProcAddr( device, "vkQueueWaitIdle" ) ); + vkDeviceWaitIdle = PFN_vkDeviceWaitIdle( vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" ) ); + vkAllocateMemory = PFN_vkAllocateMemory( vkGetDeviceProcAddr( device, "vkAllocateMemory" ) ); + vkFreeMemory = PFN_vkFreeMemory( vkGetDeviceProcAddr( device, "vkFreeMemory" ) ); + vkMapMemory = PFN_vkMapMemory( vkGetDeviceProcAddr( device, "vkMapMemory" ) ); + vkUnmapMemory = PFN_vkUnmapMemory( vkGetDeviceProcAddr( device, "vkUnmapMemory" ) ); + vkFlushMappedMemoryRanges = + PFN_vkFlushMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" ) ); + vkInvalidateMappedMemoryRanges = + PFN_vkInvalidateMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" ) ); + vkGetDeviceMemoryCommitment = + PFN_vkGetDeviceMemoryCommitment( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" ) ); + vkBindBufferMemory = PFN_vkBindBufferMemory( vkGetDeviceProcAddr( device, "vkBindBufferMemory" ) ); + vkBindImageMemory = PFN_vkBindImageMemory( vkGetDeviceProcAddr( device, "vkBindImageMemory" ) ); + vkGetBufferMemoryRequirements = + PFN_vkGetBufferMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" ) ); + vkGetImageMemoryRequirements = + PFN_vkGetImageMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" ) ); + vkGetImageSparseMemoryRequirements = + PFN_vkGetImageSparseMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" ) ); + vkQueueBindSparse = PFN_vkQueueBindSparse( vkGetDeviceProcAddr( device, "vkQueueBindSparse" ) ); + vkCreateFence = PFN_vkCreateFence( vkGetDeviceProcAddr( device, "vkCreateFence" ) ); + vkDestroyFence = PFN_vkDestroyFence( vkGetDeviceProcAddr( device, "vkDestroyFence" ) ); + vkResetFences = PFN_vkResetFences( vkGetDeviceProcAddr( device, "vkResetFences" ) ); + vkGetFenceStatus = PFN_vkGetFenceStatus( vkGetDeviceProcAddr( device, "vkGetFenceStatus" ) ); + vkWaitForFences = PFN_vkWaitForFences( vkGetDeviceProcAddr( device, "vkWaitForFences" ) ); + vkCreateSemaphore = PFN_vkCreateSemaphore( vkGetDeviceProcAddr( device, "vkCreateSemaphore" ) ); + vkDestroySemaphore = PFN_vkDestroySemaphore( vkGetDeviceProcAddr( device, "vkDestroySemaphore" ) ); + vkCreateEvent = PFN_vkCreateEvent( vkGetDeviceProcAddr( device, "vkCreateEvent" ) ); + vkDestroyEvent = PFN_vkDestroyEvent( vkGetDeviceProcAddr( device, "vkDestroyEvent" ) ); + vkGetEventStatus = PFN_vkGetEventStatus( vkGetDeviceProcAddr( device, "vkGetEventStatus" ) ); + vkSetEvent = PFN_vkSetEvent( vkGetDeviceProcAddr( device, "vkSetEvent" ) ); + vkResetEvent = PFN_vkResetEvent( vkGetDeviceProcAddr( device, "vkResetEvent" ) ); + vkCreateQueryPool = PFN_vkCreateQueryPool( vkGetDeviceProcAddr( device, "vkCreateQueryPool" ) ); + vkDestroyQueryPool = PFN_vkDestroyQueryPool( vkGetDeviceProcAddr( device, "vkDestroyQueryPool" ) ); + vkGetQueryPoolResults = PFN_vkGetQueryPoolResults( vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" ) ); + vkCreateBuffer = PFN_vkCreateBuffer( vkGetDeviceProcAddr( device, "vkCreateBuffer" ) ); + vkDestroyBuffer = PFN_vkDestroyBuffer( vkGetDeviceProcAddr( device, "vkDestroyBuffer" ) ); + vkCreateBufferView = PFN_vkCreateBufferView( vkGetDeviceProcAddr( device, "vkCreateBufferView" ) ); + vkDestroyBufferView = PFN_vkDestroyBufferView( vkGetDeviceProcAddr( device, "vkDestroyBufferView" ) ); + vkCreateImage = PFN_vkCreateImage( vkGetDeviceProcAddr( device, "vkCreateImage" ) ); + vkDestroyImage = PFN_vkDestroyImage( vkGetDeviceProcAddr( device, "vkDestroyImage" ) ); + vkGetImageSubresourceLayout = + PFN_vkGetImageSubresourceLayout( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" ) ); + vkCreateImageView = PFN_vkCreateImageView( vkGetDeviceProcAddr( device, "vkCreateImageView" ) ); + vkDestroyImageView = PFN_vkDestroyImageView( vkGetDeviceProcAddr( device, "vkDestroyImageView" ) ); + vkCreateShaderModule = PFN_vkCreateShaderModule( vkGetDeviceProcAddr( device, "vkCreateShaderModule" ) ); + vkDestroyShaderModule = PFN_vkDestroyShaderModule( vkGetDeviceProcAddr( device, "vkDestroyShaderModule" ) ); + vkCreatePipelineCache = PFN_vkCreatePipelineCache( vkGetDeviceProcAddr( device, "vkCreatePipelineCache" ) ); + vkDestroyPipelineCache = PFN_vkDestroyPipelineCache( vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" ) ); + vkGetPipelineCacheData = PFN_vkGetPipelineCacheData( vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" ) ); + vkMergePipelineCaches = PFN_vkMergePipelineCaches( vkGetDeviceProcAddr( device, "vkMergePipelineCaches" ) ); + vkCreateGraphicsPipelines = + PFN_vkCreateGraphicsPipelines( vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" ) ); + vkCreateComputePipelines = + PFN_vkCreateComputePipelines( vkGetDeviceProcAddr( device, "vkCreateComputePipelines" ) ); + vkDestroyPipeline = PFN_vkDestroyPipeline( vkGetDeviceProcAddr( device, "vkDestroyPipeline" ) ); + vkCreatePipelineLayout = PFN_vkCreatePipelineLayout( vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" ) ); + vkDestroyPipelineLayout = + PFN_vkDestroyPipelineLayout( vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" ) ); + vkCreateSampler = PFN_vkCreateSampler( vkGetDeviceProcAddr( device, "vkCreateSampler" ) ); + vkDestroySampler = PFN_vkDestroySampler( vkGetDeviceProcAddr( device, "vkDestroySampler" ) ); + vkCreateDescriptorSetLayout = + PFN_vkCreateDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" ) ); + vkDestroyDescriptorSetLayout = + PFN_vkDestroyDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" ) ); + vkCreateDescriptorPool = PFN_vkCreateDescriptorPool( vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" ) ); + vkDestroyDescriptorPool = + PFN_vkDestroyDescriptorPool( vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" ) ); + vkResetDescriptorPool = PFN_vkResetDescriptorPool( vkGetDeviceProcAddr( device, "vkResetDescriptorPool" ) ); + vkAllocateDescriptorSets = + PFN_vkAllocateDescriptorSets( vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" ) ); + vkFreeDescriptorSets = PFN_vkFreeDescriptorSets( vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" ) ); + vkUpdateDescriptorSets = PFN_vkUpdateDescriptorSets( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" ) ); + vkCreateFramebuffer = PFN_vkCreateFramebuffer( vkGetDeviceProcAddr( device, "vkCreateFramebuffer" ) ); + vkDestroyFramebuffer = PFN_vkDestroyFramebuffer( vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" ) ); + vkCreateRenderPass = PFN_vkCreateRenderPass( vkGetDeviceProcAddr( device, "vkCreateRenderPass" ) ); + vkDestroyRenderPass = PFN_vkDestroyRenderPass( vkGetDeviceProcAddr( device, "vkDestroyRenderPass" ) ); + vkGetRenderAreaGranularity = + PFN_vkGetRenderAreaGranularity( vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" ) ); + vkCreateCommandPool = PFN_vkCreateCommandPool( vkGetDeviceProcAddr( device, "vkCreateCommandPool" ) ); + vkDestroyCommandPool = PFN_vkDestroyCommandPool( vkGetDeviceProcAddr( device, "vkDestroyCommandPool" ) ); + vkResetCommandPool = PFN_vkResetCommandPool( vkGetDeviceProcAddr( device, "vkResetCommandPool" ) ); + vkAllocateCommandBuffers = + PFN_vkAllocateCommandBuffers( vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" ) ); + vkFreeCommandBuffers = PFN_vkFreeCommandBuffers( vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" ) ); + vkBeginCommandBuffer = PFN_vkBeginCommandBuffer( vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" ) ); + vkEndCommandBuffer = PFN_vkEndCommandBuffer( vkGetDeviceProcAddr( device, "vkEndCommandBuffer" ) ); + vkResetCommandBuffer = PFN_vkResetCommandBuffer( vkGetDeviceProcAddr( device, "vkResetCommandBuffer" ) ); + vkCmdBindPipeline = PFN_vkCmdBindPipeline( vkGetDeviceProcAddr( device, "vkCmdBindPipeline" ) ); + vkCmdSetViewport = PFN_vkCmdSetViewport( vkGetDeviceProcAddr( device, "vkCmdSetViewport" ) ); + vkCmdSetScissor = PFN_vkCmdSetScissor( vkGetDeviceProcAddr( device, "vkCmdSetScissor" ) ); + vkCmdSetLineWidth = PFN_vkCmdSetLineWidth( vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" ) ); + vkCmdSetDepthBias = PFN_vkCmdSetDepthBias( vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" ) ); + vkCmdSetBlendConstants = PFN_vkCmdSetBlendConstants( vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" ) ); + vkCmdSetDepthBounds = PFN_vkCmdSetDepthBounds( vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" ) ); + vkCmdSetStencilCompareMask = + PFN_vkCmdSetStencilCompareMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" ) ); + vkCmdSetStencilWriteMask = + PFN_vkCmdSetStencilWriteMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" ) ); + vkCmdSetStencilReference = + PFN_vkCmdSetStencilReference( vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" ) ); + vkCmdBindDescriptorSets = + PFN_vkCmdBindDescriptorSets( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" ) ); + vkCmdBindIndexBuffer = PFN_vkCmdBindIndexBuffer( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" ) ); + vkCmdBindVertexBuffers = PFN_vkCmdBindVertexBuffers( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" ) ); + vkCmdDraw = PFN_vkCmdDraw( vkGetDeviceProcAddr( device, "vkCmdDraw" ) ); + vkCmdDrawIndexed = PFN_vkCmdDrawIndexed( vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" ) ); + vkCmdDrawIndirect = PFN_vkCmdDrawIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" ) ); + vkCmdDrawIndexedIndirect = + PFN_vkCmdDrawIndexedIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" ) ); + vkCmdDispatch = PFN_vkCmdDispatch( vkGetDeviceProcAddr( device, "vkCmdDispatch" ) ); + vkCmdDispatchIndirect = PFN_vkCmdDispatchIndirect( vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" ) ); + vkCmdCopyBuffer = PFN_vkCmdCopyBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" ) ); + vkCmdCopyImage = PFN_vkCmdCopyImage( vkGetDeviceProcAddr( device, "vkCmdCopyImage" ) ); + vkCmdBlitImage = PFN_vkCmdBlitImage( vkGetDeviceProcAddr( device, "vkCmdBlitImage" ) ); + vkCmdCopyBufferToImage = PFN_vkCmdCopyBufferToImage( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" ) ); + vkCmdCopyImageToBuffer = PFN_vkCmdCopyImageToBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" ) ); + vkCmdUpdateBuffer = PFN_vkCmdUpdateBuffer( vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" ) ); + vkCmdFillBuffer = PFN_vkCmdFillBuffer( vkGetDeviceProcAddr( device, "vkCmdFillBuffer" ) ); + vkCmdClearColorImage = PFN_vkCmdClearColorImage( vkGetDeviceProcAddr( device, "vkCmdClearColorImage" ) ); + vkCmdClearDepthStencilImage = + PFN_vkCmdClearDepthStencilImage( vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" ) ); + vkCmdClearAttachments = PFN_vkCmdClearAttachments( vkGetDeviceProcAddr( device, "vkCmdClearAttachments" ) ); + vkCmdResolveImage = PFN_vkCmdResolveImage( vkGetDeviceProcAddr( device, "vkCmdResolveImage" ) ); + vkCmdSetEvent = PFN_vkCmdSetEvent( vkGetDeviceProcAddr( device, "vkCmdSetEvent" ) ); + vkCmdResetEvent = PFN_vkCmdResetEvent( vkGetDeviceProcAddr( device, "vkCmdResetEvent" ) ); + vkCmdWaitEvents = PFN_vkCmdWaitEvents( vkGetDeviceProcAddr( device, "vkCmdWaitEvents" ) ); + vkCmdPipelineBarrier = PFN_vkCmdPipelineBarrier( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" ) ); + vkCmdBeginQuery = PFN_vkCmdBeginQuery( vkGetDeviceProcAddr( device, "vkCmdBeginQuery" ) ); + vkCmdEndQuery = PFN_vkCmdEndQuery( vkGetDeviceProcAddr( device, "vkCmdEndQuery" ) ); + vkCmdResetQueryPool = PFN_vkCmdResetQueryPool( vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" ) ); + vkCmdWriteTimestamp = PFN_vkCmdWriteTimestamp( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" ) ); + vkCmdCopyQueryPoolResults = + PFN_vkCmdCopyQueryPoolResults( vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" ) ); + vkCmdPushConstants = PFN_vkCmdPushConstants( vkGetDeviceProcAddr( device, "vkCmdPushConstants" ) ); + vkCmdBeginRenderPass = PFN_vkCmdBeginRenderPass( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" ) ); + vkCmdNextSubpass = PFN_vkCmdNextSubpass( vkGetDeviceProcAddr( device, "vkCmdNextSubpass" ) ); + vkCmdEndRenderPass = PFN_vkCmdEndRenderPass( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" ) ); + vkCmdExecuteCommands = PFN_vkCmdExecuteCommands( vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" ) ); + + //=== VK_VERSION_1_1 === + vkBindBufferMemory2 = PFN_vkBindBufferMemory2( vkGetDeviceProcAddr( device, "vkBindBufferMemory2" ) ); + vkBindImageMemory2 = PFN_vkBindImageMemory2( vkGetDeviceProcAddr( device, "vkBindImageMemory2" ) ); + vkGetDeviceGroupPeerMemoryFeatures = + PFN_vkGetDeviceGroupPeerMemoryFeatures( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeatures" ) ); + vkCmdSetDeviceMask = PFN_vkCmdSetDeviceMask( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMask" ) ); + vkCmdDispatchBase = PFN_vkCmdDispatchBase( vkGetDeviceProcAddr( device, "vkCmdDispatchBase" ) ); + vkGetImageMemoryRequirements2 = + PFN_vkGetImageMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2" ) ); + vkGetBufferMemoryRequirements2 = + PFN_vkGetBufferMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2" ) ); + vkGetImageSparseMemoryRequirements2 = PFN_vkGetImageSparseMemoryRequirements2( + vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2" ) ); + vkTrimCommandPool = PFN_vkTrimCommandPool( vkGetDeviceProcAddr( device, "vkTrimCommandPool" ) ); + vkGetDeviceQueue2 = PFN_vkGetDeviceQueue2( vkGetDeviceProcAddr( device, "vkGetDeviceQueue2" ) ); + vkCreateSamplerYcbcrConversion = + PFN_vkCreateSamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversion" ) ); + vkDestroySamplerYcbcrConversion = + PFN_vkDestroySamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversion" ) ); + vkCreateDescriptorUpdateTemplate = + PFN_vkCreateDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplate" ) ); + vkDestroyDescriptorUpdateTemplate = + PFN_vkDestroyDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplate" ) ); + vkUpdateDescriptorSetWithTemplate = + PFN_vkUpdateDescriptorSetWithTemplate( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplate" ) ); + vkGetDescriptorSetLayoutSupport = + PFN_vkGetDescriptorSetLayoutSupport( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupport" ) ); + + //=== VK_VERSION_1_2 === + vkCmdDrawIndirectCount = PFN_vkCmdDrawIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCount" ) ); + vkCmdDrawIndexedIndirectCount = + PFN_vkCmdDrawIndexedIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCount" ) ); + vkCreateRenderPass2 = PFN_vkCreateRenderPass2( vkGetDeviceProcAddr( device, "vkCreateRenderPass2" ) ); + vkCmdBeginRenderPass2 = PFN_vkCmdBeginRenderPass2( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2" ) ); + vkCmdNextSubpass2 = PFN_vkCmdNextSubpass2( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2" ) ); + vkCmdEndRenderPass2 = PFN_vkCmdEndRenderPass2( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2" ) ); + vkResetQueryPool = PFN_vkResetQueryPool( vkGetDeviceProcAddr( device, "vkResetQueryPool" ) ); + vkGetSemaphoreCounterValue = + PFN_vkGetSemaphoreCounterValue( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValue" ) ); + vkWaitSemaphores = PFN_vkWaitSemaphores( vkGetDeviceProcAddr( device, "vkWaitSemaphores" ) ); + vkSignalSemaphore = PFN_vkSignalSemaphore( vkGetDeviceProcAddr( device, "vkSignalSemaphore" ) ); + vkGetBufferDeviceAddress = + PFN_vkGetBufferDeviceAddress( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddress" ) ); + vkGetBufferOpaqueCaptureAddress = + PFN_vkGetBufferOpaqueCaptureAddress( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddress" ) ); + vkGetDeviceMemoryOpaqueCaptureAddress = PFN_vkGetDeviceMemoryOpaqueCaptureAddress( + vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddress" ) ); + + //=== VK_VERSION_1_3 === + vkCreatePrivateDataSlot = + PFN_vkCreatePrivateDataSlot( vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlot" ) ); + vkDestroyPrivateDataSlot = + PFN_vkDestroyPrivateDataSlot( vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlot" ) ); + vkSetPrivateData = PFN_vkSetPrivateData( vkGetDeviceProcAddr( device, "vkSetPrivateData" ) ); + vkGetPrivateData = PFN_vkGetPrivateData( vkGetDeviceProcAddr( device, "vkGetPrivateData" ) ); + vkCmdSetEvent2 = PFN_vkCmdSetEvent2( vkGetDeviceProcAddr( device, "vkCmdSetEvent2" ) ); + vkCmdResetEvent2 = PFN_vkCmdResetEvent2( vkGetDeviceProcAddr( device, "vkCmdResetEvent2" ) ); + vkCmdWaitEvents2 = PFN_vkCmdWaitEvents2( vkGetDeviceProcAddr( device, "vkCmdWaitEvents2" ) ); + vkCmdPipelineBarrier2 = PFN_vkCmdPipelineBarrier2( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2" ) ); + vkCmdWriteTimestamp2 = PFN_vkCmdWriteTimestamp2( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2" ) ); + vkQueueSubmit2 = PFN_vkQueueSubmit2( vkGetDeviceProcAddr( device, "vkQueueSubmit2" ) ); + vkCmdCopyBuffer2 = PFN_vkCmdCopyBuffer2( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2" ) ); + vkCmdCopyImage2 = PFN_vkCmdCopyImage2( vkGetDeviceProcAddr( device, "vkCmdCopyImage2" ) ); + vkCmdCopyBufferToImage2 = + PFN_vkCmdCopyBufferToImage2( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2" ) ); + vkCmdCopyImageToBuffer2 = + PFN_vkCmdCopyImageToBuffer2( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2" ) ); + vkCmdBlitImage2 = PFN_vkCmdBlitImage2( vkGetDeviceProcAddr( device, "vkCmdBlitImage2" ) ); + vkCmdResolveImage2 = PFN_vkCmdResolveImage2( vkGetDeviceProcAddr( device, "vkCmdResolveImage2" ) ); + vkCmdBeginRendering = PFN_vkCmdBeginRendering( vkGetDeviceProcAddr( device, "vkCmdBeginRendering" ) ); + vkCmdEndRendering = PFN_vkCmdEndRendering( vkGetDeviceProcAddr( device, "vkCmdEndRendering" ) ); + vkCmdSetCullMode = PFN_vkCmdSetCullMode( vkGetDeviceProcAddr( device, "vkCmdSetCullMode" ) ); + vkCmdSetFrontFace = PFN_vkCmdSetFrontFace( vkGetDeviceProcAddr( device, "vkCmdSetFrontFace" ) ); + vkCmdSetPrimitiveTopology = + PFN_vkCmdSetPrimitiveTopology( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopology" ) ); + vkCmdSetViewportWithCount = + PFN_vkCmdSetViewportWithCount( vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCount" ) ); + vkCmdSetScissorWithCount = + PFN_vkCmdSetScissorWithCount( vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCount" ) ); + vkCmdBindVertexBuffers2 = + PFN_vkCmdBindVertexBuffers2( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2" ) ); + vkCmdSetDepthTestEnable = + PFN_vkCmdSetDepthTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnable" ) ); + vkCmdSetDepthWriteEnable = + PFN_vkCmdSetDepthWriteEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnable" ) ); + vkCmdSetDepthCompareOp = PFN_vkCmdSetDepthCompareOp( vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOp" ) ); + vkCmdSetDepthBoundsTestEnable = + PFN_vkCmdSetDepthBoundsTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnable" ) ); + vkCmdSetStencilTestEnable = + PFN_vkCmdSetStencilTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnable" ) ); + vkCmdSetStencilOp = PFN_vkCmdSetStencilOp( vkGetDeviceProcAddr( device, "vkCmdSetStencilOp" ) ); + vkCmdSetRasterizerDiscardEnable = + PFN_vkCmdSetRasterizerDiscardEnable( vkGetDeviceProcAddr( device, "vkCmdSetRasterizerDiscardEnable" ) ); + vkCmdSetDepthBiasEnable = + PFN_vkCmdSetDepthBiasEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthBiasEnable" ) ); + vkCmdSetPrimitiveRestartEnable = + PFN_vkCmdSetPrimitiveRestartEnable( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveRestartEnable" ) ); + vkGetDeviceBufferMemoryRequirements = PFN_vkGetDeviceBufferMemoryRequirements( + vkGetDeviceProcAddr( device, "vkGetDeviceBufferMemoryRequirements" ) ); + vkGetDeviceImageMemoryRequirements = + PFN_vkGetDeviceImageMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetDeviceImageMemoryRequirements" ) ); + vkGetDeviceImageSparseMemoryRequirements = PFN_vkGetDeviceImageSparseMemoryRequirements( + vkGetDeviceProcAddr( device, "vkGetDeviceImageSparseMemoryRequirements" ) ); + + //=== VK_AMD_buffer_marker === + vkCmdWriteBufferMarkerAMD = + PFN_vkCmdWriteBufferMarkerAMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarkerAMD" ) ); + + //=== VK_AMD_display_native_hdr === + vkSetLocalDimmingAMD = PFN_vkSetLocalDimmingAMD( vkGetDeviceProcAddr( device, "vkSetLocalDimmingAMD" ) ); + + //=== VK_AMD_draw_indirect_count === + vkCmdDrawIndirectCountAMD = + PFN_vkCmdDrawIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountAMD" ) ); + if ( !vkCmdDrawIndirectCount ) + vkCmdDrawIndirectCount = vkCmdDrawIndirectCountAMD; + vkCmdDrawIndexedIndirectCountAMD = + PFN_vkCmdDrawIndexedIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountAMD" ) ); + if ( !vkCmdDrawIndexedIndirectCount ) + vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountAMD; + + //=== VK_AMD_shader_info === + vkGetShaderInfoAMD = PFN_vkGetShaderInfoAMD( vkGetDeviceProcAddr( device, "vkGetShaderInfoAMD" ) ); + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + vkGetAndroidHardwareBufferPropertiesANDROID = PFN_vkGetAndroidHardwareBufferPropertiesANDROID( + vkGetDeviceProcAddr( device, "vkGetAndroidHardwareBufferPropertiesANDROID" ) ); + vkGetMemoryAndroidHardwareBufferANDROID = PFN_vkGetMemoryAndroidHardwareBufferANDROID( + vkGetDeviceProcAddr( device, "vkGetMemoryAndroidHardwareBufferANDROID" ) ); +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + //=== VK_EXT_buffer_device_address === + vkGetBufferDeviceAddressEXT = + PFN_vkGetBufferDeviceAddressEXT( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressEXT" ) ); + if ( !vkGetBufferDeviceAddress ) + vkGetBufferDeviceAddress = vkGetBufferDeviceAddressEXT; + + //=== VK_EXT_calibrated_timestamps === + vkGetCalibratedTimestampsEXT = + PFN_vkGetCalibratedTimestampsEXT( vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsEXT" ) ); + + //=== VK_EXT_color_write_enable === + vkCmdSetColorWriteEnableEXT = + PFN_vkCmdSetColorWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorWriteEnableEXT" ) ); + + //=== VK_EXT_conditional_rendering === + vkCmdBeginConditionalRenderingEXT = + PFN_vkCmdBeginConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRenderingEXT" ) ); + vkCmdEndConditionalRenderingEXT = + PFN_vkCmdEndConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdEndConditionalRenderingEXT" ) ); + + //=== VK_EXT_debug_marker === + vkDebugMarkerSetObjectTagEXT = + PFN_vkDebugMarkerSetObjectTagEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" ) ); + vkDebugMarkerSetObjectNameEXT = + PFN_vkDebugMarkerSetObjectNameEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" ) ); + vkCmdDebugMarkerBeginEXT = + PFN_vkCmdDebugMarkerBeginEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" ) ); + vkCmdDebugMarkerEndEXT = PFN_vkCmdDebugMarkerEndEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" ) ); + vkCmdDebugMarkerInsertEXT = + PFN_vkCmdDebugMarkerInsertEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" ) ); + + //=== VK_EXT_debug_utils === + vkSetDebugUtilsObjectNameEXT = + PFN_vkSetDebugUtilsObjectNameEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectNameEXT" ) ); + vkSetDebugUtilsObjectTagEXT = + PFN_vkSetDebugUtilsObjectTagEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectTagEXT" ) ); + vkQueueBeginDebugUtilsLabelEXT = + PFN_vkQueueBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueBeginDebugUtilsLabelEXT" ) ); + vkQueueEndDebugUtilsLabelEXT = + PFN_vkQueueEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueEndDebugUtilsLabelEXT" ) ); + vkQueueInsertDebugUtilsLabelEXT = + PFN_vkQueueInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueInsertDebugUtilsLabelEXT" ) ); + vkCmdBeginDebugUtilsLabelEXT = + PFN_vkCmdBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdBeginDebugUtilsLabelEXT" ) ); + vkCmdEndDebugUtilsLabelEXT = + PFN_vkCmdEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdEndDebugUtilsLabelEXT" ) ); + vkCmdInsertDebugUtilsLabelEXT = + PFN_vkCmdInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdInsertDebugUtilsLabelEXT" ) ); + + //=== VK_EXT_discard_rectangles === + vkCmdSetDiscardRectangleEXT = + PFN_vkCmdSetDiscardRectangleEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" ) ); + + //=== VK_EXT_display_control === + vkDisplayPowerControlEXT = + PFN_vkDisplayPowerControlEXT( vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" ) ); + vkRegisterDeviceEventEXT = + PFN_vkRegisterDeviceEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" ) ); + vkRegisterDisplayEventEXT = + PFN_vkRegisterDisplayEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" ) ); + vkGetSwapchainCounterEXT = + PFN_vkGetSwapchainCounterEXT( vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" ) ); + + //=== VK_EXT_extended_dynamic_state === + vkCmdSetCullModeEXT = PFN_vkCmdSetCullModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetCullModeEXT" ) ); + if ( !vkCmdSetCullMode ) + vkCmdSetCullMode = vkCmdSetCullModeEXT; + vkCmdSetFrontFaceEXT = PFN_vkCmdSetFrontFaceEXT( vkGetDeviceProcAddr( device, "vkCmdSetFrontFaceEXT" ) ); + if ( !vkCmdSetFrontFace ) + vkCmdSetFrontFace = vkCmdSetFrontFaceEXT; + vkCmdSetPrimitiveTopologyEXT = + PFN_vkCmdSetPrimitiveTopologyEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopologyEXT" ) ); + if ( !vkCmdSetPrimitiveTopology ) + vkCmdSetPrimitiveTopology = vkCmdSetPrimitiveTopologyEXT; + vkCmdSetViewportWithCountEXT = + PFN_vkCmdSetViewportWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCountEXT" ) ); + if ( !vkCmdSetViewportWithCount ) + vkCmdSetViewportWithCount = vkCmdSetViewportWithCountEXT; + vkCmdSetScissorWithCountEXT = + PFN_vkCmdSetScissorWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCountEXT" ) ); + if ( !vkCmdSetScissorWithCount ) + vkCmdSetScissorWithCount = vkCmdSetScissorWithCountEXT; + vkCmdBindVertexBuffers2EXT = + PFN_vkCmdBindVertexBuffers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2EXT" ) ); + if ( !vkCmdBindVertexBuffers2 ) + vkCmdBindVertexBuffers2 = vkCmdBindVertexBuffers2EXT; + vkCmdSetDepthTestEnableEXT = + PFN_vkCmdSetDepthTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnableEXT" ) ); + if ( !vkCmdSetDepthTestEnable ) + vkCmdSetDepthTestEnable = vkCmdSetDepthTestEnableEXT; + vkCmdSetDepthWriteEnableEXT = + PFN_vkCmdSetDepthWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnableEXT" ) ); + if ( !vkCmdSetDepthWriteEnable ) + vkCmdSetDepthWriteEnable = vkCmdSetDepthWriteEnableEXT; + vkCmdSetDepthCompareOpEXT = + PFN_vkCmdSetDepthCompareOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOpEXT" ) ); + if ( !vkCmdSetDepthCompareOp ) + vkCmdSetDepthCompareOp = vkCmdSetDepthCompareOpEXT; + vkCmdSetDepthBoundsTestEnableEXT = + PFN_vkCmdSetDepthBoundsTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnableEXT" ) ); + if ( !vkCmdSetDepthBoundsTestEnable ) + vkCmdSetDepthBoundsTestEnable = vkCmdSetDepthBoundsTestEnableEXT; + vkCmdSetStencilTestEnableEXT = + PFN_vkCmdSetStencilTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnableEXT" ) ); + if ( !vkCmdSetStencilTestEnable ) + vkCmdSetStencilTestEnable = vkCmdSetStencilTestEnableEXT; + vkCmdSetStencilOpEXT = PFN_vkCmdSetStencilOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilOpEXT" ) ); + if ( !vkCmdSetStencilOp ) + vkCmdSetStencilOp = vkCmdSetStencilOpEXT; + + //=== VK_EXT_extended_dynamic_state2 === + vkCmdSetPatchControlPointsEXT = + PFN_vkCmdSetPatchControlPointsEXT( vkGetDeviceProcAddr( device, "vkCmdSetPatchControlPointsEXT" ) ); + vkCmdSetRasterizerDiscardEnableEXT = + PFN_vkCmdSetRasterizerDiscardEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizerDiscardEnableEXT" ) ); + if ( !vkCmdSetRasterizerDiscardEnable ) + vkCmdSetRasterizerDiscardEnable = vkCmdSetRasterizerDiscardEnableEXT; + vkCmdSetDepthBiasEnableEXT = + PFN_vkCmdSetDepthBiasEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBiasEnableEXT" ) ); + if ( !vkCmdSetDepthBiasEnable ) + vkCmdSetDepthBiasEnable = vkCmdSetDepthBiasEnableEXT; + vkCmdSetLogicOpEXT = PFN_vkCmdSetLogicOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetLogicOpEXT" ) ); + vkCmdSetPrimitiveRestartEnableEXT = + PFN_vkCmdSetPrimitiveRestartEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveRestartEnableEXT" ) ); + if ( !vkCmdSetPrimitiveRestartEnable ) + vkCmdSetPrimitiveRestartEnable = vkCmdSetPrimitiveRestartEnableEXT; + + //=== VK_EXT_external_memory_host === + vkGetMemoryHostPointerPropertiesEXT = PFN_vkGetMemoryHostPointerPropertiesEXT( + vkGetDeviceProcAddr( device, "vkGetMemoryHostPointerPropertiesEXT" ) ); + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + vkAcquireFullScreenExclusiveModeEXT = PFN_vkAcquireFullScreenExclusiveModeEXT( + vkGetDeviceProcAddr( device, "vkAcquireFullScreenExclusiveModeEXT" ) ); + vkReleaseFullScreenExclusiveModeEXT = PFN_vkReleaseFullScreenExclusiveModeEXT( + vkGetDeviceProcAddr( device, "vkReleaseFullScreenExclusiveModeEXT" ) ); + vkGetDeviceGroupSurfacePresentModes2EXT = PFN_vkGetDeviceGroupSurfacePresentModes2EXT( + vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModes2EXT" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_hdr_metadata === + vkSetHdrMetadataEXT = PFN_vkSetHdrMetadataEXT( vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" ) ); + + //=== VK_EXT_host_query_reset === + vkResetQueryPoolEXT = PFN_vkResetQueryPoolEXT( vkGetDeviceProcAddr( device, "vkResetQueryPoolEXT" ) ); + if ( !vkResetQueryPool ) + vkResetQueryPool = vkResetQueryPoolEXT; + + //=== VK_EXT_image_drm_format_modifier === + vkGetImageDrmFormatModifierPropertiesEXT = PFN_vkGetImageDrmFormatModifierPropertiesEXT( + vkGetDeviceProcAddr( device, "vkGetImageDrmFormatModifierPropertiesEXT" ) ); + + //=== VK_EXT_line_rasterization === + vkCmdSetLineStippleEXT = PFN_vkCmdSetLineStippleEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleEXT" ) ); + + //=== VK_EXT_multi_draw === + vkCmdDrawMultiEXT = PFN_vkCmdDrawMultiEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiEXT" ) ); + vkCmdDrawMultiIndexedEXT = + PFN_vkCmdDrawMultiIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiIndexedEXT" ) ); + + //=== VK_EXT_pageable_device_local_memory === + vkSetDeviceMemoryPriorityEXT = + PFN_vkSetDeviceMemoryPriorityEXT( vkGetDeviceProcAddr( device, "vkSetDeviceMemoryPriorityEXT" ) ); + + //=== VK_EXT_private_data === + vkCreatePrivateDataSlotEXT = + PFN_vkCreatePrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlotEXT" ) ); + if ( !vkCreatePrivateDataSlot ) + vkCreatePrivateDataSlot = vkCreatePrivateDataSlotEXT; + vkDestroyPrivateDataSlotEXT = + PFN_vkDestroyPrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlotEXT" ) ); + if ( !vkDestroyPrivateDataSlot ) + vkDestroyPrivateDataSlot = vkDestroyPrivateDataSlotEXT; + vkSetPrivateDataEXT = PFN_vkSetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkSetPrivateDataEXT" ) ); + if ( !vkSetPrivateData ) + vkSetPrivateData = vkSetPrivateDataEXT; + vkGetPrivateDataEXT = PFN_vkGetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkGetPrivateDataEXT" ) ); + if ( !vkGetPrivateData ) + vkGetPrivateData = vkGetPrivateDataEXT; + + //=== VK_EXT_sample_locations === + vkCmdSetSampleLocationsEXT = + PFN_vkCmdSetSampleLocationsEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEXT" ) ); + + //=== VK_EXT_transform_feedback === + vkCmdBindTransformFeedbackBuffersEXT = PFN_vkCmdBindTransformFeedbackBuffersEXT( + vkGetDeviceProcAddr( device, "vkCmdBindTransformFeedbackBuffersEXT" ) ); + vkCmdBeginTransformFeedbackEXT = + PFN_vkCmdBeginTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdBeginTransformFeedbackEXT" ) ); + vkCmdEndTransformFeedbackEXT = + PFN_vkCmdEndTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdEndTransformFeedbackEXT" ) ); + vkCmdBeginQueryIndexedEXT = + PFN_vkCmdBeginQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdBeginQueryIndexedEXT" ) ); + vkCmdEndQueryIndexedEXT = + PFN_vkCmdEndQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdEndQueryIndexedEXT" ) ); + vkCmdDrawIndirectByteCountEXT = + PFN_vkCmdDrawIndirectByteCountEXT( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectByteCountEXT" ) ); + + //=== VK_EXT_validation_cache === + vkCreateValidationCacheEXT = + PFN_vkCreateValidationCacheEXT( vkGetDeviceProcAddr( device, "vkCreateValidationCacheEXT" ) ); + vkDestroyValidationCacheEXT = + PFN_vkDestroyValidationCacheEXT( vkGetDeviceProcAddr( device, "vkDestroyValidationCacheEXT" ) ); + vkMergeValidationCachesEXT = + PFN_vkMergeValidationCachesEXT( vkGetDeviceProcAddr( device, "vkMergeValidationCachesEXT" ) ); + vkGetValidationCacheDataEXT = + PFN_vkGetValidationCacheDataEXT( vkGetDeviceProcAddr( device, "vkGetValidationCacheDataEXT" ) ); + + //=== VK_EXT_vertex_input_dynamic_state === + vkCmdSetVertexInputEXT = PFN_vkCmdSetVertexInputEXT( vkGetDeviceProcAddr( device, "vkCmdSetVertexInputEXT" ) ); + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + vkCreateBufferCollectionFUCHSIA = + PFN_vkCreateBufferCollectionFUCHSIA( vkGetDeviceProcAddr( device, "vkCreateBufferCollectionFUCHSIA" ) ); + vkSetBufferCollectionImageConstraintsFUCHSIA = PFN_vkSetBufferCollectionImageConstraintsFUCHSIA( + vkGetDeviceProcAddr( device, "vkSetBufferCollectionImageConstraintsFUCHSIA" ) ); + vkSetBufferCollectionBufferConstraintsFUCHSIA = PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA( + vkGetDeviceProcAddr( device, "vkSetBufferCollectionBufferConstraintsFUCHSIA" ) ); + vkDestroyBufferCollectionFUCHSIA = + PFN_vkDestroyBufferCollectionFUCHSIA( vkGetDeviceProcAddr( device, "vkDestroyBufferCollectionFUCHSIA" ) ); + vkGetBufferCollectionPropertiesFUCHSIA = PFN_vkGetBufferCollectionPropertiesFUCHSIA( + vkGetDeviceProcAddr( device, "vkGetBufferCollectionPropertiesFUCHSIA" ) ); +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + vkGetMemoryZirconHandleFUCHSIA = + PFN_vkGetMemoryZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandleFUCHSIA" ) ); + vkGetMemoryZirconHandlePropertiesFUCHSIA = PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA( + vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandlePropertiesFUCHSIA" ) ); +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + vkImportSemaphoreZirconHandleFUCHSIA = PFN_vkImportSemaphoreZirconHandleFUCHSIA( + vkGetDeviceProcAddr( device, "vkImportSemaphoreZirconHandleFUCHSIA" ) ); + vkGetSemaphoreZirconHandleFUCHSIA = + PFN_vkGetSemaphoreZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetSemaphoreZirconHandleFUCHSIA" ) ); +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_GOOGLE_display_timing === + vkGetRefreshCycleDurationGOOGLE = + PFN_vkGetRefreshCycleDurationGOOGLE( vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" ) ); + vkGetPastPresentationTimingGOOGLE = + PFN_vkGetPastPresentationTimingGOOGLE( vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" ) ); + + //=== VK_HUAWEI_invocation_mask === + vkCmdBindInvocationMaskHUAWEI = + PFN_vkCmdBindInvocationMaskHUAWEI( vkGetDeviceProcAddr( device, "vkCmdBindInvocationMaskHUAWEI" ) ); + + //=== VK_HUAWEI_subpass_shading === + vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( + vkGetDeviceProcAddr( device, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI" ) ); + vkCmdSubpassShadingHUAWEI = + PFN_vkCmdSubpassShadingHUAWEI( vkGetDeviceProcAddr( device, "vkCmdSubpassShadingHUAWEI" ) ); + + //=== VK_INTEL_performance_query === + vkInitializePerformanceApiINTEL = + PFN_vkInitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkInitializePerformanceApiINTEL" ) ); + vkUninitializePerformanceApiINTEL = + PFN_vkUninitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkUninitializePerformanceApiINTEL" ) ); + vkCmdSetPerformanceMarkerINTEL = + PFN_vkCmdSetPerformanceMarkerINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceMarkerINTEL" ) ); + vkCmdSetPerformanceStreamMarkerINTEL = PFN_vkCmdSetPerformanceStreamMarkerINTEL( + vkGetDeviceProcAddr( device, "vkCmdSetPerformanceStreamMarkerINTEL" ) ); + vkCmdSetPerformanceOverrideINTEL = + PFN_vkCmdSetPerformanceOverrideINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceOverrideINTEL" ) ); + vkAcquirePerformanceConfigurationINTEL = PFN_vkAcquirePerformanceConfigurationINTEL( + vkGetDeviceProcAddr( device, "vkAcquirePerformanceConfigurationINTEL" ) ); + vkReleasePerformanceConfigurationINTEL = PFN_vkReleasePerformanceConfigurationINTEL( + vkGetDeviceProcAddr( device, "vkReleasePerformanceConfigurationINTEL" ) ); + vkQueueSetPerformanceConfigurationINTEL = PFN_vkQueueSetPerformanceConfigurationINTEL( + vkGetDeviceProcAddr( device, "vkQueueSetPerformanceConfigurationINTEL" ) ); + vkGetPerformanceParameterINTEL = + PFN_vkGetPerformanceParameterINTEL( vkGetDeviceProcAddr( device, "vkGetPerformanceParameterINTEL" ) ); + + //=== VK_KHR_acceleration_structure === + vkCreateAccelerationStructureKHR = + PFN_vkCreateAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureKHR" ) ); + vkDestroyAccelerationStructureKHR = + PFN_vkDestroyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureKHR" ) ); + vkCmdBuildAccelerationStructuresKHR = PFN_vkCmdBuildAccelerationStructuresKHR( + vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresKHR" ) ); + vkCmdBuildAccelerationStructuresIndirectKHR = PFN_vkCmdBuildAccelerationStructuresIndirectKHR( + vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresIndirectKHR" ) ); + vkBuildAccelerationStructuresKHR = + PFN_vkBuildAccelerationStructuresKHR( vkGetDeviceProcAddr( device, "vkBuildAccelerationStructuresKHR" ) ); + vkCopyAccelerationStructureKHR = + PFN_vkCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureKHR" ) ); + vkCopyAccelerationStructureToMemoryKHR = PFN_vkCopyAccelerationStructureToMemoryKHR( + vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureToMemoryKHR" ) ); + vkCopyMemoryToAccelerationStructureKHR = PFN_vkCopyMemoryToAccelerationStructureKHR( + vkGetDeviceProcAddr( device, "vkCopyMemoryToAccelerationStructureKHR" ) ); + vkWriteAccelerationStructuresPropertiesKHR = PFN_vkWriteAccelerationStructuresPropertiesKHR( + vkGetDeviceProcAddr( device, "vkWriteAccelerationStructuresPropertiesKHR" ) ); + vkCmdCopyAccelerationStructureKHR = + PFN_vkCmdCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureKHR" ) ); + vkCmdCopyAccelerationStructureToMemoryKHR = PFN_vkCmdCopyAccelerationStructureToMemoryKHR( + vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureToMemoryKHR" ) ); + vkCmdCopyMemoryToAccelerationStructureKHR = PFN_vkCmdCopyMemoryToAccelerationStructureKHR( + vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToAccelerationStructureKHR" ) ); + vkGetAccelerationStructureDeviceAddressKHR = PFN_vkGetAccelerationStructureDeviceAddressKHR( + vkGetDeviceProcAddr( device, "vkGetAccelerationStructureDeviceAddressKHR" ) ); + vkCmdWriteAccelerationStructuresPropertiesKHR = PFN_vkCmdWriteAccelerationStructuresPropertiesKHR( + vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesKHR" ) ); + vkGetDeviceAccelerationStructureCompatibilityKHR = PFN_vkGetDeviceAccelerationStructureCompatibilityKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceAccelerationStructureCompatibilityKHR" ) ); + vkGetAccelerationStructureBuildSizesKHR = PFN_vkGetAccelerationStructureBuildSizesKHR( + vkGetDeviceProcAddr( device, "vkGetAccelerationStructureBuildSizesKHR" ) ); + + //=== VK_KHR_bind_memory2 === + vkBindBufferMemory2KHR = PFN_vkBindBufferMemory2KHR( vkGetDeviceProcAddr( device, "vkBindBufferMemory2KHR" ) ); + if ( !vkBindBufferMemory2 ) + vkBindBufferMemory2 = vkBindBufferMemory2KHR; + vkBindImageMemory2KHR = PFN_vkBindImageMemory2KHR( vkGetDeviceProcAddr( device, "vkBindImageMemory2KHR" ) ); + if ( !vkBindImageMemory2 ) + vkBindImageMemory2 = vkBindImageMemory2KHR; + + //=== VK_KHR_buffer_device_address === + vkGetBufferDeviceAddressKHR = + PFN_vkGetBufferDeviceAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressKHR" ) ); + if ( !vkGetBufferDeviceAddress ) + vkGetBufferDeviceAddress = vkGetBufferDeviceAddressKHR; + vkGetBufferOpaqueCaptureAddressKHR = + PFN_vkGetBufferOpaqueCaptureAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddressKHR" ) ); + if ( !vkGetBufferOpaqueCaptureAddress ) + vkGetBufferOpaqueCaptureAddress = vkGetBufferOpaqueCaptureAddressKHR; + vkGetDeviceMemoryOpaqueCaptureAddressKHR = PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR" ) ); + if ( !vkGetDeviceMemoryOpaqueCaptureAddress ) + vkGetDeviceMemoryOpaqueCaptureAddress = vkGetDeviceMemoryOpaqueCaptureAddressKHR; + + //=== VK_KHR_copy_commands2 === + vkCmdCopyBuffer2KHR = PFN_vkCmdCopyBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2KHR" ) ); + if ( !vkCmdCopyBuffer2 ) + vkCmdCopyBuffer2 = vkCmdCopyBuffer2KHR; + vkCmdCopyImage2KHR = PFN_vkCmdCopyImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImage2KHR" ) ); + if ( !vkCmdCopyImage2 ) + vkCmdCopyImage2 = vkCmdCopyImage2KHR; + vkCmdCopyBufferToImage2KHR = + PFN_vkCmdCopyBufferToImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2KHR" ) ); + if ( !vkCmdCopyBufferToImage2 ) + vkCmdCopyBufferToImage2 = vkCmdCopyBufferToImage2KHR; + vkCmdCopyImageToBuffer2KHR = + PFN_vkCmdCopyImageToBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2KHR" ) ); + if ( !vkCmdCopyImageToBuffer2 ) + vkCmdCopyImageToBuffer2 = vkCmdCopyImageToBuffer2KHR; + vkCmdBlitImage2KHR = PFN_vkCmdBlitImage2KHR( vkGetDeviceProcAddr( device, "vkCmdBlitImage2KHR" ) ); + if ( !vkCmdBlitImage2 ) + vkCmdBlitImage2 = vkCmdBlitImage2KHR; + vkCmdResolveImage2KHR = PFN_vkCmdResolveImage2KHR( vkGetDeviceProcAddr( device, "vkCmdResolveImage2KHR" ) ); + if ( !vkCmdResolveImage2 ) + vkCmdResolveImage2 = vkCmdResolveImage2KHR; + + //=== VK_KHR_create_renderpass2 === + vkCreateRenderPass2KHR = PFN_vkCreateRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCreateRenderPass2KHR" ) ); + if ( !vkCreateRenderPass2 ) + vkCreateRenderPass2 = vkCreateRenderPass2KHR; + vkCmdBeginRenderPass2KHR = + PFN_vkCmdBeginRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2KHR" ) ); + if ( !vkCmdBeginRenderPass2 ) + vkCmdBeginRenderPass2 = vkCmdBeginRenderPass2KHR; + vkCmdNextSubpass2KHR = PFN_vkCmdNextSubpass2KHR( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2KHR" ) ); + if ( !vkCmdNextSubpass2 ) + vkCmdNextSubpass2 = vkCmdNextSubpass2KHR; + vkCmdEndRenderPass2KHR = PFN_vkCmdEndRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2KHR" ) ); + if ( !vkCmdEndRenderPass2 ) + vkCmdEndRenderPass2 = vkCmdEndRenderPass2KHR; + + //=== VK_KHR_deferred_host_operations === + vkCreateDeferredOperationKHR = + PFN_vkCreateDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkCreateDeferredOperationKHR" ) ); + vkDestroyDeferredOperationKHR = + PFN_vkDestroyDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkDestroyDeferredOperationKHR" ) ); + vkGetDeferredOperationMaxConcurrencyKHR = PFN_vkGetDeferredOperationMaxConcurrencyKHR( + vkGetDeviceProcAddr( device, "vkGetDeferredOperationMaxConcurrencyKHR" ) ); + vkGetDeferredOperationResultKHR = + PFN_vkGetDeferredOperationResultKHR( vkGetDeviceProcAddr( device, "vkGetDeferredOperationResultKHR" ) ); + vkDeferredOperationJoinKHR = + PFN_vkDeferredOperationJoinKHR( vkGetDeviceProcAddr( device, "vkDeferredOperationJoinKHR" ) ); + + //=== VK_KHR_descriptor_update_template === + vkCreateDescriptorUpdateTemplateKHR = PFN_vkCreateDescriptorUpdateTemplateKHR( + vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplateKHR" ) ); + if ( !vkCreateDescriptorUpdateTemplate ) + vkCreateDescriptorUpdateTemplate = vkCreateDescriptorUpdateTemplateKHR; + vkDestroyDescriptorUpdateTemplateKHR = PFN_vkDestroyDescriptorUpdateTemplateKHR( + vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplateKHR" ) ); + if ( !vkDestroyDescriptorUpdateTemplate ) + vkDestroyDescriptorUpdateTemplate = vkDestroyDescriptorUpdateTemplateKHR; + vkUpdateDescriptorSetWithTemplateKHR = PFN_vkUpdateDescriptorSetWithTemplateKHR( + vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplateKHR" ) ); + if ( !vkUpdateDescriptorSetWithTemplate ) + vkUpdateDescriptorSetWithTemplate = vkUpdateDescriptorSetWithTemplateKHR; + vkCmdPushDescriptorSetWithTemplateKHR = PFN_vkCmdPushDescriptorSetWithTemplateKHR( + vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" ) ); + + //=== VK_KHR_device_group === + vkGetDeviceGroupPeerMemoryFeaturesKHR = PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeaturesKHR" ) ); + if ( !vkGetDeviceGroupPeerMemoryFeatures ) + vkGetDeviceGroupPeerMemoryFeatures = vkGetDeviceGroupPeerMemoryFeaturesKHR; + vkCmdSetDeviceMaskKHR = PFN_vkCmdSetDeviceMaskKHR( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMaskKHR" ) ); + if ( !vkCmdSetDeviceMask ) + vkCmdSetDeviceMask = vkCmdSetDeviceMaskKHR; + vkCmdDispatchBaseKHR = PFN_vkCmdDispatchBaseKHR( vkGetDeviceProcAddr( device, "vkCmdDispatchBaseKHR" ) ); + if ( !vkCmdDispatchBase ) + vkCmdDispatchBase = vkCmdDispatchBaseKHR; + vkGetDeviceGroupPresentCapabilitiesKHR = PFN_vkGetDeviceGroupPresentCapabilitiesKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHR" ) ); + vkGetDeviceGroupSurfacePresentModesKHR = PFN_vkGetDeviceGroupSurfacePresentModesKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHR" ) ); + vkAcquireNextImage2KHR = PFN_vkAcquireNextImage2KHR( vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHR" ) ); + + //=== VK_KHR_display_swapchain === + vkCreateSharedSwapchainsKHR = + PFN_vkCreateSharedSwapchainsKHR( vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" ) ); + + //=== VK_KHR_draw_indirect_count === + vkCmdDrawIndirectCountKHR = + PFN_vkCmdDrawIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountKHR" ) ); + if ( !vkCmdDrawIndirectCount ) + vkCmdDrawIndirectCount = vkCmdDrawIndirectCountKHR; + vkCmdDrawIndexedIndirectCountKHR = + PFN_vkCmdDrawIndexedIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountKHR" ) ); + if ( !vkCmdDrawIndexedIndirectCount ) + vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountKHR; + + //=== VK_KHR_dynamic_rendering === + vkCmdBeginRenderingKHR = PFN_vkCmdBeginRenderingKHR( vkGetDeviceProcAddr( device, "vkCmdBeginRenderingKHR" ) ); + if ( !vkCmdBeginRendering ) + vkCmdBeginRendering = vkCmdBeginRenderingKHR; + vkCmdEndRenderingKHR = PFN_vkCmdEndRenderingKHR( vkGetDeviceProcAddr( device, "vkCmdEndRenderingKHR" ) ); + if ( !vkCmdEndRendering ) + vkCmdEndRendering = vkCmdEndRenderingKHR; + + //=== VK_KHR_external_fence_fd === + vkImportFenceFdKHR = PFN_vkImportFenceFdKHR( vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" ) ); + vkGetFenceFdKHR = PFN_vkGetFenceFdKHR( vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" ) ); + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + vkImportFenceWin32HandleKHR = + PFN_vkImportFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportFenceWin32HandleKHR" ) ); + vkGetFenceWin32HandleKHR = + PFN_vkGetFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetFenceWin32HandleKHR" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + vkGetMemoryFdKHR = PFN_vkGetMemoryFdKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" ) ); + vkGetMemoryFdPropertiesKHR = + PFN_vkGetMemoryFdPropertiesKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" ) ); + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + vkGetMemoryWin32HandleKHR = + PFN_vkGetMemoryWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleKHR" ) ); + vkGetMemoryWin32HandlePropertiesKHR = PFN_vkGetMemoryWin32HandlePropertiesKHR( + vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandlePropertiesKHR" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + vkImportSemaphoreFdKHR = PFN_vkImportSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" ) ); + vkGetSemaphoreFdKHR = PFN_vkGetSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" ) ); + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + vkImportSemaphoreWin32HandleKHR = + PFN_vkImportSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreWin32HandleKHR" ) ); + vkGetSemaphoreWin32HandleKHR = + PFN_vkGetSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreWin32HandleKHR" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_fragment_shading_rate === + vkCmdSetFragmentShadingRateKHR = + PFN_vkCmdSetFragmentShadingRateKHR( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateKHR" ) ); + + //=== VK_KHR_get_memory_requirements2 === + vkGetImageMemoryRequirements2KHR = + PFN_vkGetImageMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2KHR" ) ); + if ( !vkGetImageMemoryRequirements2 ) + vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2KHR; + vkGetBufferMemoryRequirements2KHR = + PFN_vkGetBufferMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2KHR" ) ); + if ( !vkGetBufferMemoryRequirements2 ) + vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2KHR; + vkGetImageSparseMemoryRequirements2KHR = PFN_vkGetImageSparseMemoryRequirements2KHR( + vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2KHR" ) ); + if ( !vkGetImageSparseMemoryRequirements2 ) + vkGetImageSparseMemoryRequirements2 = vkGetImageSparseMemoryRequirements2KHR; + + //=== VK_KHR_maintenance1 === + vkTrimCommandPoolKHR = PFN_vkTrimCommandPoolKHR( vkGetDeviceProcAddr( device, "vkTrimCommandPoolKHR" ) ); + if ( !vkTrimCommandPool ) + vkTrimCommandPool = vkTrimCommandPoolKHR; + + //=== VK_KHR_maintenance3 === + vkGetDescriptorSetLayoutSupportKHR = + PFN_vkGetDescriptorSetLayoutSupportKHR( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupportKHR" ) ); + if ( !vkGetDescriptorSetLayoutSupport ) + vkGetDescriptorSetLayoutSupport = vkGetDescriptorSetLayoutSupportKHR; + + //=== VK_KHR_maintenance4 === + vkGetDeviceBufferMemoryRequirementsKHR = PFN_vkGetDeviceBufferMemoryRequirementsKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceBufferMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceBufferMemoryRequirements ) + vkGetDeviceBufferMemoryRequirements = vkGetDeviceBufferMemoryRequirementsKHR; + vkGetDeviceImageMemoryRequirementsKHR = PFN_vkGetDeviceImageMemoryRequirementsKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceImageMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceImageMemoryRequirements ) + vkGetDeviceImageMemoryRequirements = vkGetDeviceImageMemoryRequirementsKHR; + vkGetDeviceImageSparseMemoryRequirementsKHR = PFN_vkGetDeviceImageSparseMemoryRequirementsKHR( + vkGetDeviceProcAddr( device, "vkGetDeviceImageSparseMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceImageSparseMemoryRequirements ) + vkGetDeviceImageSparseMemoryRequirements = vkGetDeviceImageSparseMemoryRequirementsKHR; + + //=== VK_KHR_performance_query === + vkAcquireProfilingLockKHR = + PFN_vkAcquireProfilingLockKHR( vkGetDeviceProcAddr( device, "vkAcquireProfilingLockKHR" ) ); + vkReleaseProfilingLockKHR = + PFN_vkReleaseProfilingLockKHR( vkGetDeviceProcAddr( device, "vkReleaseProfilingLockKHR" ) ); + + //=== VK_KHR_pipeline_executable_properties === + vkGetPipelineExecutablePropertiesKHR = PFN_vkGetPipelineExecutablePropertiesKHR( + vkGetDeviceProcAddr( device, "vkGetPipelineExecutablePropertiesKHR" ) ); + vkGetPipelineExecutableStatisticsKHR = PFN_vkGetPipelineExecutableStatisticsKHR( + vkGetDeviceProcAddr( device, "vkGetPipelineExecutableStatisticsKHR" ) ); + vkGetPipelineExecutableInternalRepresentationsKHR = PFN_vkGetPipelineExecutableInternalRepresentationsKHR( + vkGetDeviceProcAddr( device, "vkGetPipelineExecutableInternalRepresentationsKHR" ) ); + + //=== VK_KHR_present_wait === + vkWaitForPresentKHR = PFN_vkWaitForPresentKHR( vkGetDeviceProcAddr( device, "vkWaitForPresentKHR" ) ); + + //=== VK_KHR_push_descriptor === + vkCmdPushDescriptorSetKHR = + PFN_vkCmdPushDescriptorSetKHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" ) ); + + //=== VK_KHR_ray_tracing_pipeline === + vkCmdTraceRaysKHR = PFN_vkCmdTraceRaysKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysKHR" ) ); + vkCreateRayTracingPipelinesKHR = + PFN_vkCreateRayTracingPipelinesKHR( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesKHR" ) ); + vkGetRayTracingShaderGroupHandlesKHR = PFN_vkGetRayTracingShaderGroupHandlesKHR( + vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesKHR" ) ); + vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( + vkGetDeviceProcAddr( device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" ) ); + vkCmdTraceRaysIndirectKHR = + PFN_vkCmdTraceRaysIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysIndirectKHR" ) ); + vkGetRayTracingShaderGroupStackSizeKHR = PFN_vkGetRayTracingShaderGroupStackSizeKHR( + vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupStackSizeKHR" ) ); + vkCmdSetRayTracingPipelineStackSizeKHR = PFN_vkCmdSetRayTracingPipelineStackSizeKHR( + vkGetDeviceProcAddr( device, "vkCmdSetRayTracingPipelineStackSizeKHR" ) ); + + //=== VK_KHR_sampler_ycbcr_conversion === + vkCreateSamplerYcbcrConversionKHR = + PFN_vkCreateSamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversionKHR" ) ); + if ( !vkCreateSamplerYcbcrConversion ) + vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversionKHR; + vkDestroySamplerYcbcrConversionKHR = + PFN_vkDestroySamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversionKHR" ) ); + if ( !vkDestroySamplerYcbcrConversion ) + vkDestroySamplerYcbcrConversion = vkDestroySamplerYcbcrConversionKHR; + + //=== VK_KHR_shared_presentable_image === + vkGetSwapchainStatusKHR = + PFN_vkGetSwapchainStatusKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" ) ); + + //=== VK_KHR_swapchain === + vkCreateSwapchainKHR = PFN_vkCreateSwapchainKHR( vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" ) ); + vkDestroySwapchainKHR = PFN_vkDestroySwapchainKHR( vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" ) ); + vkGetSwapchainImagesKHR = + PFN_vkGetSwapchainImagesKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" ) ); + vkAcquireNextImageKHR = PFN_vkAcquireNextImageKHR( vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" ) ); + vkQueuePresentKHR = PFN_vkQueuePresentKHR( vkGetDeviceProcAddr( device, "vkQueuePresentKHR" ) ); + + //=== VK_KHR_synchronization2 === + vkCmdSetEvent2KHR = PFN_vkCmdSetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdSetEvent2KHR" ) ); + if ( !vkCmdSetEvent2 ) + vkCmdSetEvent2 = vkCmdSetEvent2KHR; + vkCmdResetEvent2KHR = PFN_vkCmdResetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdResetEvent2KHR" ) ); + if ( !vkCmdResetEvent2 ) + vkCmdResetEvent2 = vkCmdResetEvent2KHR; + vkCmdWaitEvents2KHR = PFN_vkCmdWaitEvents2KHR( vkGetDeviceProcAddr( device, "vkCmdWaitEvents2KHR" ) ); + if ( !vkCmdWaitEvents2 ) + vkCmdWaitEvents2 = vkCmdWaitEvents2KHR; + vkCmdPipelineBarrier2KHR = + PFN_vkCmdPipelineBarrier2KHR( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2KHR" ) ); + if ( !vkCmdPipelineBarrier2 ) + vkCmdPipelineBarrier2 = vkCmdPipelineBarrier2KHR; + vkCmdWriteTimestamp2KHR = + PFN_vkCmdWriteTimestamp2KHR( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2KHR" ) ); + if ( !vkCmdWriteTimestamp2 ) + vkCmdWriteTimestamp2 = vkCmdWriteTimestamp2KHR; + vkQueueSubmit2KHR = PFN_vkQueueSubmit2KHR( vkGetDeviceProcAddr( device, "vkQueueSubmit2KHR" ) ); + if ( !vkQueueSubmit2 ) + vkQueueSubmit2 = vkQueueSubmit2KHR; + vkCmdWriteBufferMarker2AMD = + PFN_vkCmdWriteBufferMarker2AMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarker2AMD" ) ); + vkGetQueueCheckpointData2NV = + PFN_vkGetQueueCheckpointData2NV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointData2NV" ) ); + + //=== VK_KHR_timeline_semaphore === + vkGetSemaphoreCounterValueKHR = + PFN_vkGetSemaphoreCounterValueKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValueKHR" ) ); + if ( !vkGetSemaphoreCounterValue ) + vkGetSemaphoreCounterValue = vkGetSemaphoreCounterValueKHR; + vkWaitSemaphoresKHR = PFN_vkWaitSemaphoresKHR( vkGetDeviceProcAddr( device, "vkWaitSemaphoresKHR" ) ); + if ( !vkWaitSemaphores ) + vkWaitSemaphores = vkWaitSemaphoresKHR; + vkSignalSemaphoreKHR = PFN_vkSignalSemaphoreKHR( vkGetDeviceProcAddr( device, "vkSignalSemaphoreKHR" ) ); + if ( !vkSignalSemaphore ) + vkSignalSemaphore = vkSignalSemaphoreKHR; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_decode_queue === + vkCmdDecodeVideoKHR = PFN_vkCmdDecodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdDecodeVideoKHR" ) ); +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_encode_queue === + vkCmdEncodeVideoKHR = PFN_vkCmdEncodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdEncodeVideoKHR" ) ); +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + vkCreateVideoSessionKHR = + PFN_vkCreateVideoSessionKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionKHR" ) ); + vkDestroyVideoSessionKHR = + PFN_vkDestroyVideoSessionKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionKHR" ) ); + vkGetVideoSessionMemoryRequirementsKHR = PFN_vkGetVideoSessionMemoryRequirementsKHR( + vkGetDeviceProcAddr( device, "vkGetVideoSessionMemoryRequirementsKHR" ) ); + vkBindVideoSessionMemoryKHR = + PFN_vkBindVideoSessionMemoryKHR( vkGetDeviceProcAddr( device, "vkBindVideoSessionMemoryKHR" ) ); + vkCreateVideoSessionParametersKHR = + PFN_vkCreateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionParametersKHR" ) ); + vkUpdateVideoSessionParametersKHR = + PFN_vkUpdateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkUpdateVideoSessionParametersKHR" ) ); + vkDestroyVideoSessionParametersKHR = + PFN_vkDestroyVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionParametersKHR" ) ); + vkCmdBeginVideoCodingKHR = + PFN_vkCmdBeginVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdBeginVideoCodingKHR" ) ); + vkCmdEndVideoCodingKHR = PFN_vkCmdEndVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdEndVideoCodingKHR" ) ); + vkCmdControlVideoCodingKHR = + PFN_vkCmdControlVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdControlVideoCodingKHR" ) ); +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NVX_binary_import === + vkCreateCuModuleNVX = PFN_vkCreateCuModuleNVX( vkGetDeviceProcAddr( device, "vkCreateCuModuleNVX" ) ); + vkCreateCuFunctionNVX = PFN_vkCreateCuFunctionNVX( vkGetDeviceProcAddr( device, "vkCreateCuFunctionNVX" ) ); + vkDestroyCuModuleNVX = PFN_vkDestroyCuModuleNVX( vkGetDeviceProcAddr( device, "vkDestroyCuModuleNVX" ) ); + vkDestroyCuFunctionNVX = PFN_vkDestroyCuFunctionNVX( vkGetDeviceProcAddr( device, "vkDestroyCuFunctionNVX" ) ); + vkCmdCuLaunchKernelNVX = PFN_vkCmdCuLaunchKernelNVX( vkGetDeviceProcAddr( device, "vkCmdCuLaunchKernelNVX" ) ); + + //=== VK_NVX_image_view_handle === + vkGetImageViewHandleNVX = + PFN_vkGetImageViewHandleNVX( vkGetDeviceProcAddr( device, "vkGetImageViewHandleNVX" ) ); + vkGetImageViewAddressNVX = + PFN_vkGetImageViewAddressNVX( vkGetDeviceProcAddr( device, "vkGetImageViewAddressNVX" ) ); + + //=== VK_NV_clip_space_w_scaling === + vkCmdSetViewportWScalingNV = + PFN_vkCmdSetViewportWScalingNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" ) ); + + //=== VK_NV_device_diagnostic_checkpoints === + vkCmdSetCheckpointNV = PFN_vkCmdSetCheckpointNV( vkGetDeviceProcAddr( device, "vkCmdSetCheckpointNV" ) ); + vkGetQueueCheckpointDataNV = + PFN_vkGetQueueCheckpointDataNV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointDataNV" ) ); + + //=== VK_NV_device_generated_commands === + vkGetGeneratedCommandsMemoryRequirementsNV = PFN_vkGetGeneratedCommandsMemoryRequirementsNV( + vkGetDeviceProcAddr( device, "vkGetGeneratedCommandsMemoryRequirementsNV" ) ); + vkCmdPreprocessGeneratedCommandsNV = + PFN_vkCmdPreprocessGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdPreprocessGeneratedCommandsNV" ) ); + vkCmdExecuteGeneratedCommandsNV = + PFN_vkCmdExecuteGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdExecuteGeneratedCommandsNV" ) ); + vkCmdBindPipelineShaderGroupNV = + PFN_vkCmdBindPipelineShaderGroupNV( vkGetDeviceProcAddr( device, "vkCmdBindPipelineShaderGroupNV" ) ); + vkCreateIndirectCommandsLayoutNV = + PFN_vkCreateIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNV" ) ); + vkDestroyIndirectCommandsLayoutNV = + PFN_vkDestroyIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNV" ) ); + + //=== VK_NV_external_memory_rdma === + vkGetMemoryRemoteAddressNV = + PFN_vkGetMemoryRemoteAddressNV( vkGetDeviceProcAddr( device, "vkGetMemoryRemoteAddressNV" ) ); + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + vkGetMemoryWin32HandleNV = + PFN_vkGetMemoryWin32HandleNV( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleNV" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_NV_fragment_shading_rate_enums === + vkCmdSetFragmentShadingRateEnumNV = + PFN_vkCmdSetFragmentShadingRateEnumNV( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateEnumNV" ) ); + + //=== VK_NV_mesh_shader === + vkCmdDrawMeshTasksNV = PFN_vkCmdDrawMeshTasksNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksNV" ) ); + vkCmdDrawMeshTasksIndirectNV = + PFN_vkCmdDrawMeshTasksIndirectNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectNV" ) ); + vkCmdDrawMeshTasksIndirectCountNV = + PFN_vkCmdDrawMeshTasksIndirectCountNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountNV" ) ); + + //=== VK_NV_ray_tracing === + vkCreateAccelerationStructureNV = + PFN_vkCreateAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureNV" ) ); + vkDestroyAccelerationStructureNV = + PFN_vkDestroyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureNV" ) ); + vkGetAccelerationStructureMemoryRequirementsNV = PFN_vkGetAccelerationStructureMemoryRequirementsNV( + vkGetDeviceProcAddr( device, "vkGetAccelerationStructureMemoryRequirementsNV" ) ); + vkBindAccelerationStructureMemoryNV = PFN_vkBindAccelerationStructureMemoryNV( + vkGetDeviceProcAddr( device, "vkBindAccelerationStructureMemoryNV" ) ); + vkCmdBuildAccelerationStructureNV = + PFN_vkCmdBuildAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructureNV" ) ); + vkCmdCopyAccelerationStructureNV = + PFN_vkCmdCopyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureNV" ) ); + vkCmdTraceRaysNV = PFN_vkCmdTraceRaysNV( vkGetDeviceProcAddr( device, "vkCmdTraceRaysNV" ) ); + vkCreateRayTracingPipelinesNV = + PFN_vkCreateRayTracingPipelinesNV( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesNV" ) ); + vkGetRayTracingShaderGroupHandlesNV = PFN_vkGetRayTracingShaderGroupHandlesNV( + vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesNV" ) ); + if ( !vkGetRayTracingShaderGroupHandlesKHR ) + vkGetRayTracingShaderGroupHandlesKHR = vkGetRayTracingShaderGroupHandlesNV; + vkGetAccelerationStructureHandleNV = + PFN_vkGetAccelerationStructureHandleNV( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureHandleNV" ) ); + vkCmdWriteAccelerationStructuresPropertiesNV = PFN_vkCmdWriteAccelerationStructuresPropertiesNV( + vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesNV" ) ); + vkCompileDeferredNV = PFN_vkCompileDeferredNV( vkGetDeviceProcAddr( device, "vkCompileDeferredNV" ) ); + + //=== VK_NV_scissor_exclusive === + vkCmdSetExclusiveScissorNV = + PFN_vkCmdSetExclusiveScissorNV( vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorNV" ) ); + + //=== VK_NV_shading_rate_image === + vkCmdBindShadingRateImageNV = + PFN_vkCmdBindShadingRateImageNV( vkGetDeviceProcAddr( device, "vkCmdBindShadingRateImageNV" ) ); + vkCmdSetViewportShadingRatePaletteNV = PFN_vkCmdSetViewportShadingRatePaletteNV( + vkGetDeviceProcAddr( device, "vkCmdSetViewportShadingRatePaletteNV" ) ); + vkCmdSetCoarseSampleOrderNV = + PFN_vkCmdSetCoarseSampleOrderNV( vkGetDeviceProcAddr( device, "vkCmdSetCoarseSampleOrderNV" ) ); + } + + public: + //=== VK_VERSION_1_0 === + PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = 0; + PFN_vkDestroyDevice vkDestroyDevice = 0; + PFN_vkGetDeviceQueue vkGetDeviceQueue = 0; + PFN_vkQueueSubmit vkQueueSubmit = 0; + PFN_vkQueueWaitIdle vkQueueWaitIdle = 0; + PFN_vkDeviceWaitIdle vkDeviceWaitIdle = 0; + PFN_vkAllocateMemory vkAllocateMemory = 0; + PFN_vkFreeMemory vkFreeMemory = 0; + PFN_vkMapMemory vkMapMemory = 0; + PFN_vkUnmapMemory vkUnmapMemory = 0; + PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges = 0; + PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges = 0; + PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment = 0; + PFN_vkBindBufferMemory vkBindBufferMemory = 0; + PFN_vkBindImageMemory vkBindImageMemory = 0; + PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements = 0; + PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements = 0; + PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements = 0; + PFN_vkQueueBindSparse vkQueueBindSparse = 0; + PFN_vkCreateFence vkCreateFence = 0; + PFN_vkDestroyFence vkDestroyFence = 0; + PFN_vkResetFences vkResetFences = 0; + PFN_vkGetFenceStatus vkGetFenceStatus = 0; + PFN_vkWaitForFences vkWaitForFences = 0; + PFN_vkCreateSemaphore vkCreateSemaphore = 0; + PFN_vkDestroySemaphore vkDestroySemaphore = 0; + PFN_vkCreateEvent vkCreateEvent = 0; + PFN_vkDestroyEvent vkDestroyEvent = 0; + PFN_vkGetEventStatus vkGetEventStatus = 0; + PFN_vkSetEvent vkSetEvent = 0; + PFN_vkResetEvent vkResetEvent = 0; + PFN_vkCreateQueryPool vkCreateQueryPool = 0; + PFN_vkDestroyQueryPool vkDestroyQueryPool = 0; + PFN_vkGetQueryPoolResults vkGetQueryPoolResults = 0; + PFN_vkCreateBuffer vkCreateBuffer = 0; + PFN_vkDestroyBuffer vkDestroyBuffer = 0; + PFN_vkCreateBufferView vkCreateBufferView = 0; + PFN_vkDestroyBufferView vkDestroyBufferView = 0; + PFN_vkCreateImage vkCreateImage = 0; + PFN_vkDestroyImage vkDestroyImage = 0; + PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout = 0; + PFN_vkCreateImageView vkCreateImageView = 0; + PFN_vkDestroyImageView vkDestroyImageView = 0; + PFN_vkCreateShaderModule vkCreateShaderModule = 0; + PFN_vkDestroyShaderModule vkDestroyShaderModule = 0; + PFN_vkCreatePipelineCache vkCreatePipelineCache = 0; + PFN_vkDestroyPipelineCache vkDestroyPipelineCache = 0; + PFN_vkGetPipelineCacheData vkGetPipelineCacheData = 0; + PFN_vkMergePipelineCaches vkMergePipelineCaches = 0; + PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines = 0; + PFN_vkCreateComputePipelines vkCreateComputePipelines = 0; + PFN_vkDestroyPipeline vkDestroyPipeline = 0; + PFN_vkCreatePipelineLayout vkCreatePipelineLayout = 0; + PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout = 0; + PFN_vkCreateSampler vkCreateSampler = 0; + PFN_vkDestroySampler vkDestroySampler = 0; + PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout = 0; + PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout = 0; + PFN_vkCreateDescriptorPool vkCreateDescriptorPool = 0; + PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool = 0; + PFN_vkResetDescriptorPool vkResetDescriptorPool = 0; + PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets = 0; + PFN_vkFreeDescriptorSets vkFreeDescriptorSets = 0; + PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets = 0; + PFN_vkCreateFramebuffer vkCreateFramebuffer = 0; + PFN_vkDestroyFramebuffer vkDestroyFramebuffer = 0; + PFN_vkCreateRenderPass vkCreateRenderPass = 0; + PFN_vkDestroyRenderPass vkDestroyRenderPass = 0; + PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity = 0; + PFN_vkCreateCommandPool vkCreateCommandPool = 0; + PFN_vkDestroyCommandPool vkDestroyCommandPool = 0; + PFN_vkResetCommandPool vkResetCommandPool = 0; + PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers = 0; + PFN_vkFreeCommandBuffers vkFreeCommandBuffers = 0; + PFN_vkBeginCommandBuffer vkBeginCommandBuffer = 0; + PFN_vkEndCommandBuffer vkEndCommandBuffer = 0; + PFN_vkResetCommandBuffer vkResetCommandBuffer = 0; + PFN_vkCmdBindPipeline vkCmdBindPipeline = 0; + PFN_vkCmdSetViewport vkCmdSetViewport = 0; + PFN_vkCmdSetScissor vkCmdSetScissor = 0; + PFN_vkCmdSetLineWidth vkCmdSetLineWidth = 0; + PFN_vkCmdSetDepthBias vkCmdSetDepthBias = 0; + PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants = 0; + PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds = 0; + PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask = 0; + PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask = 0; + PFN_vkCmdSetStencilReference vkCmdSetStencilReference = 0; + PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets = 0; + PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer = 0; + PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers = 0; + PFN_vkCmdDraw vkCmdDraw = 0; + PFN_vkCmdDrawIndexed vkCmdDrawIndexed = 0; + PFN_vkCmdDrawIndirect vkCmdDrawIndirect = 0; + PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect = 0; + PFN_vkCmdDispatch vkCmdDispatch = 0; + PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect = 0; + PFN_vkCmdCopyBuffer vkCmdCopyBuffer = 0; + PFN_vkCmdCopyImage vkCmdCopyImage = 0; + PFN_vkCmdBlitImage vkCmdBlitImage = 0; + PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage = 0; + PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer = 0; + PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer = 0; + PFN_vkCmdFillBuffer vkCmdFillBuffer = 0; + PFN_vkCmdClearColorImage vkCmdClearColorImage = 0; + PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage = 0; + PFN_vkCmdClearAttachments vkCmdClearAttachments = 0; + PFN_vkCmdResolveImage vkCmdResolveImage = 0; + PFN_vkCmdSetEvent vkCmdSetEvent = 0; + PFN_vkCmdResetEvent vkCmdResetEvent = 0; + PFN_vkCmdWaitEvents vkCmdWaitEvents = 0; + PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier = 0; + PFN_vkCmdBeginQuery vkCmdBeginQuery = 0; + PFN_vkCmdEndQuery vkCmdEndQuery = 0; + PFN_vkCmdResetQueryPool vkCmdResetQueryPool = 0; + PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp = 0; + PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults = 0; + PFN_vkCmdPushConstants vkCmdPushConstants = 0; + PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass = 0; + PFN_vkCmdNextSubpass vkCmdNextSubpass = 0; + PFN_vkCmdEndRenderPass vkCmdEndRenderPass = 0; + PFN_vkCmdExecuteCommands vkCmdExecuteCommands = 0; + + //=== VK_VERSION_1_1 === + PFN_vkBindBufferMemory2 vkBindBufferMemory2 = 0; + PFN_vkBindImageMemory2 vkBindImageMemory2 = 0; + PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures = 0; + PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask = 0; + PFN_vkCmdDispatchBase vkCmdDispatchBase = 0; + PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 = 0; + PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 = 0; + PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 = 0; + PFN_vkTrimCommandPool vkTrimCommandPool = 0; + PFN_vkGetDeviceQueue2 vkGetDeviceQueue2 = 0; + PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion = 0; + PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion = 0; + PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate = 0; + PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate = 0; + PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate = 0; + PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport = 0; + + //=== VK_VERSION_1_2 === + PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount = 0; + PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount = 0; + PFN_vkCreateRenderPass2 vkCreateRenderPass2 = 0; + PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2 = 0; + PFN_vkCmdNextSubpass2 vkCmdNextSubpass2 = 0; + PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2 = 0; + PFN_vkResetQueryPool vkResetQueryPool = 0; + PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue = 0; + PFN_vkWaitSemaphores vkWaitSemaphores = 0; + PFN_vkSignalSemaphore vkSignalSemaphore = 0; + PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress = 0; + PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress = 0; + PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress = 0; + + //=== VK_VERSION_1_3 === + PFN_vkCreatePrivateDataSlot vkCreatePrivateDataSlot = 0; + PFN_vkDestroyPrivateDataSlot vkDestroyPrivateDataSlot = 0; + PFN_vkSetPrivateData vkSetPrivateData = 0; + PFN_vkGetPrivateData vkGetPrivateData = 0; + PFN_vkCmdSetEvent2 vkCmdSetEvent2 = 0; + PFN_vkCmdResetEvent2 vkCmdResetEvent2 = 0; + PFN_vkCmdWaitEvents2 vkCmdWaitEvents2 = 0; + PFN_vkCmdPipelineBarrier2 vkCmdPipelineBarrier2 = 0; + PFN_vkCmdWriteTimestamp2 vkCmdWriteTimestamp2 = 0; + PFN_vkQueueSubmit2 vkQueueSubmit2 = 0; + PFN_vkCmdCopyBuffer2 vkCmdCopyBuffer2 = 0; + PFN_vkCmdCopyImage2 vkCmdCopyImage2 = 0; + PFN_vkCmdCopyBufferToImage2 vkCmdCopyBufferToImage2 = 0; + PFN_vkCmdCopyImageToBuffer2 vkCmdCopyImageToBuffer2 = 0; + PFN_vkCmdBlitImage2 vkCmdBlitImage2 = 0; + PFN_vkCmdResolveImage2 vkCmdResolveImage2 = 0; + PFN_vkCmdBeginRendering vkCmdBeginRendering = 0; + PFN_vkCmdEndRendering vkCmdEndRendering = 0; + PFN_vkCmdSetCullMode vkCmdSetCullMode = 0; + PFN_vkCmdSetFrontFace vkCmdSetFrontFace = 0; + PFN_vkCmdSetPrimitiveTopology vkCmdSetPrimitiveTopology = 0; + PFN_vkCmdSetViewportWithCount vkCmdSetViewportWithCount = 0; + PFN_vkCmdSetScissorWithCount vkCmdSetScissorWithCount = 0; + PFN_vkCmdBindVertexBuffers2 vkCmdBindVertexBuffers2 = 0; + PFN_vkCmdSetDepthTestEnable vkCmdSetDepthTestEnable = 0; + PFN_vkCmdSetDepthWriteEnable vkCmdSetDepthWriteEnable = 0; + PFN_vkCmdSetDepthCompareOp vkCmdSetDepthCompareOp = 0; + PFN_vkCmdSetDepthBoundsTestEnable vkCmdSetDepthBoundsTestEnable = 0; + PFN_vkCmdSetStencilTestEnable vkCmdSetStencilTestEnable = 0; + PFN_vkCmdSetStencilOp vkCmdSetStencilOp = 0; + PFN_vkCmdSetRasterizerDiscardEnable vkCmdSetRasterizerDiscardEnable = 0; + PFN_vkCmdSetDepthBiasEnable vkCmdSetDepthBiasEnable = 0; + PFN_vkCmdSetPrimitiveRestartEnable vkCmdSetPrimitiveRestartEnable = 0; + PFN_vkGetDeviceBufferMemoryRequirements vkGetDeviceBufferMemoryRequirements = 0; + PFN_vkGetDeviceImageMemoryRequirements vkGetDeviceImageMemoryRequirements = 0; + PFN_vkGetDeviceImageSparseMemoryRequirements vkGetDeviceImageSparseMemoryRequirements = 0; + + //=== VK_AMD_buffer_marker === + PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD = 0; + + //=== VK_AMD_display_native_hdr === + PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD = 0; + + //=== VK_AMD_draw_indirect_count === + PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD = 0; + PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD = 0; + + //=== VK_AMD_shader_info === + PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD = 0; + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID = 0; + PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID = 0; +# else + PFN_dummy vkGetAndroidHardwareBufferPropertiesANDROID_placeholder = 0; + PFN_dummy vkGetMemoryAndroidHardwareBufferANDROID_placeholder = 0; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + //=== VK_EXT_buffer_device_address === + PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT = 0; + + //=== VK_EXT_calibrated_timestamps === + PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT = 0; + + //=== VK_EXT_color_write_enable === + PFN_vkCmdSetColorWriteEnableEXT vkCmdSetColorWriteEnableEXT = 0; + + //=== VK_EXT_conditional_rendering === + PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT = 0; + PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT = 0; + + //=== VK_EXT_debug_marker === + PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT = 0; + PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT = 0; + PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT = 0; + PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT = 0; + PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT = 0; + + //=== VK_EXT_debug_utils === + PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT = 0; + PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT = 0; + PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT = 0; + PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT = 0; + PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT = 0; + PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT = 0; + PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT = 0; + PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT = 0; + + //=== VK_EXT_discard_rectangles === + PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT = 0; + + //=== VK_EXT_display_control === + PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT = 0; + PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT = 0; + PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT = 0; + PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT = 0; + + //=== VK_EXT_extended_dynamic_state === + PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT = 0; + PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT = 0; + PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT = 0; + PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT = 0; + PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT = 0; + PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT = 0; + PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT = 0; + PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT = 0; + PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT = 0; + PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT = 0; + PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT = 0; + PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT = 0; + + //=== VK_EXT_extended_dynamic_state2 === + PFN_vkCmdSetPatchControlPointsEXT vkCmdSetPatchControlPointsEXT = 0; + PFN_vkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXT = 0; + PFN_vkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXT = 0; + PFN_vkCmdSetLogicOpEXT vkCmdSetLogicOpEXT = 0; + PFN_vkCmdSetPrimitiveRestartEnableEXT vkCmdSetPrimitiveRestartEnableEXT = 0; + + //=== VK_EXT_external_memory_host === + PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT = 0; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT = 0; + PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT = 0; + PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT = 0; +# else + PFN_dummy vkAcquireFullScreenExclusiveModeEXT_placeholder = 0; + PFN_dummy vkReleaseFullScreenExclusiveModeEXT_placeholder = 0; + PFN_dummy vkGetDeviceGroupSurfacePresentModes2EXT_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_hdr_metadata === + PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT = 0; + + //=== VK_EXT_host_query_reset === + PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT = 0; + + //=== VK_EXT_image_drm_format_modifier === + PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT = 0; + + //=== VK_EXT_line_rasterization === + PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT = 0; + + //=== VK_EXT_multi_draw === + PFN_vkCmdDrawMultiEXT vkCmdDrawMultiEXT = 0; + PFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT = 0; + + //=== VK_EXT_pageable_device_local_memory === + PFN_vkSetDeviceMemoryPriorityEXT vkSetDeviceMemoryPriorityEXT = 0; + + //=== VK_EXT_private_data === + PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT = 0; + PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT = 0; + PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT = 0; + PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT = 0; + + //=== VK_EXT_sample_locations === + PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT = 0; + + //=== VK_EXT_transform_feedback === + PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT = 0; + PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT = 0; + PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT = 0; + PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT = 0; + PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT = 0; + PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT = 0; + + //=== VK_EXT_validation_cache === + PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT = 0; + PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT = 0; + PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT = 0; + PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT = 0; + + //=== VK_EXT_vertex_input_dynamic_state === + PFN_vkCmdSetVertexInputEXT vkCmdSetVertexInputEXT = 0; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + PFN_vkCreateBufferCollectionFUCHSIA vkCreateBufferCollectionFUCHSIA = 0; + PFN_vkSetBufferCollectionImageConstraintsFUCHSIA vkSetBufferCollectionImageConstraintsFUCHSIA = 0; + PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA vkSetBufferCollectionBufferConstraintsFUCHSIA = 0; + PFN_vkDestroyBufferCollectionFUCHSIA vkDestroyBufferCollectionFUCHSIA = 0; + PFN_vkGetBufferCollectionPropertiesFUCHSIA vkGetBufferCollectionPropertiesFUCHSIA = 0; +# else + PFN_dummy vkCreateBufferCollectionFUCHSIA_placeholder = 0; + PFN_dummy vkSetBufferCollectionImageConstraintsFUCHSIA_placeholder = 0; + PFN_dummy vkSetBufferCollectionBufferConstraintsFUCHSIA_placeholder = 0; + PFN_dummy vkDestroyBufferCollectionFUCHSIA_placeholder = 0; + PFN_dummy vkGetBufferCollectionPropertiesFUCHSIA_placeholder = 0; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + PFN_vkGetMemoryZirconHandleFUCHSIA vkGetMemoryZirconHandleFUCHSIA = 0; + PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA vkGetMemoryZirconHandlePropertiesFUCHSIA = 0; +# else + PFN_dummy vkGetMemoryZirconHandleFUCHSIA_placeholder = 0; + PFN_dummy vkGetMemoryZirconHandlePropertiesFUCHSIA_placeholder = 0; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + PFN_vkImportSemaphoreZirconHandleFUCHSIA vkImportSemaphoreZirconHandleFUCHSIA = 0; + PFN_vkGetSemaphoreZirconHandleFUCHSIA vkGetSemaphoreZirconHandleFUCHSIA = 0; +# else + PFN_dummy vkImportSemaphoreZirconHandleFUCHSIA_placeholder = 0; + PFN_dummy vkGetSemaphoreZirconHandleFUCHSIA_placeholder = 0; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_GOOGLE_display_timing === + PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE = 0; + PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE = 0; + + //=== VK_HUAWEI_invocation_mask === + PFN_vkCmdBindInvocationMaskHUAWEI vkCmdBindInvocationMaskHUAWEI = 0; + + //=== VK_HUAWEI_subpass_shading === + PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = 0; + PFN_vkCmdSubpassShadingHUAWEI vkCmdSubpassShadingHUAWEI = 0; + + //=== VK_INTEL_performance_query === + PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL = 0; + PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL = 0; + PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL = 0; + PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL = 0; + PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL = 0; + PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL = 0; + PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL = 0; + PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL = 0; + PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL = 0; + + //=== VK_KHR_acceleration_structure === + PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR = 0; + PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR = 0; + PFN_vkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHR = 0; + PFN_vkCmdBuildAccelerationStructuresIndirectKHR vkCmdBuildAccelerationStructuresIndirectKHR = 0; + PFN_vkBuildAccelerationStructuresKHR vkBuildAccelerationStructuresKHR = 0; + PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR = 0; + PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR = 0; + PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR = 0; + PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR = 0; + PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR = 0; + PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR = 0; + PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR = 0; + PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR = 0; + PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR = 0; + PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR = 0; + PFN_vkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHR = 0; + + //=== VK_KHR_bind_memory2 === + PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR = 0; + PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR = 0; + + //=== VK_KHR_buffer_device_address === + PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR = 0; + PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR = 0; + PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR = 0; + + //=== VK_KHR_copy_commands2 === + PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR = 0; + PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR = 0; + PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR = 0; + PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR = 0; + PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR = 0; + PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR = 0; + + //=== VK_KHR_create_renderpass2 === + PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR = 0; + PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR = 0; + PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR = 0; + PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR = 0; + + //=== VK_KHR_deferred_host_operations === + PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR = 0; + PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR = 0; + PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR = 0; + PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR = 0; + PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR = 0; + + //=== VK_KHR_descriptor_update_template === + PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR = 0; + PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR = 0; + PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR = 0; + PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR = 0; + + //=== VK_KHR_device_group === + PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR = 0; + PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR = 0; + PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR = 0; + PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR = 0; + PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR = 0; + PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR = 0; + + //=== VK_KHR_display_swapchain === + PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR = 0; + + //=== VK_KHR_draw_indirect_count === + PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR = 0; + PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR = 0; + + //=== VK_KHR_dynamic_rendering === + PFN_vkCmdBeginRenderingKHR vkCmdBeginRenderingKHR = 0; + PFN_vkCmdEndRenderingKHR vkCmdEndRenderingKHR = 0; + + //=== VK_KHR_external_fence_fd === + PFN_vkImportFenceFdKHR vkImportFenceFdKHR = 0; + PFN_vkGetFenceFdKHR vkGetFenceFdKHR = 0; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR = 0; + PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR = 0; +# else + PFN_dummy vkImportFenceWin32HandleKHR_placeholder = 0; + PFN_dummy vkGetFenceWin32HandleKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR = 0; + PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR = 0; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR = 0; + PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR = 0; +# else + PFN_dummy vkGetMemoryWin32HandleKHR_placeholder = 0; + PFN_dummy vkGetMemoryWin32HandlePropertiesKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR = 0; + PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR = 0; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR = 0; + PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR = 0; +# else + PFN_dummy vkImportSemaphoreWin32HandleKHR_placeholder = 0; + PFN_dummy vkGetSemaphoreWin32HandleKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_fragment_shading_rate === + PFN_vkCmdSetFragmentShadingRateKHR vkCmdSetFragmentShadingRateKHR = 0; + + //=== VK_KHR_get_memory_requirements2 === + PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR = 0; + PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR = 0; + PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR = 0; + + //=== VK_KHR_maintenance1 === + PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR = 0; + + //=== VK_KHR_maintenance3 === + PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR = 0; + + //=== VK_KHR_maintenance4 === + PFN_vkGetDeviceBufferMemoryRequirementsKHR vkGetDeviceBufferMemoryRequirementsKHR = 0; + PFN_vkGetDeviceImageMemoryRequirementsKHR vkGetDeviceImageMemoryRequirementsKHR = 0; + PFN_vkGetDeviceImageSparseMemoryRequirementsKHR vkGetDeviceImageSparseMemoryRequirementsKHR = 0; + + //=== VK_KHR_performance_query === + PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR = 0; + PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR = 0; + + //=== VK_KHR_pipeline_executable_properties === + PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR = 0; + PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR = 0; + PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR = 0; + + //=== VK_KHR_present_wait === + PFN_vkWaitForPresentKHR vkWaitForPresentKHR = 0; + + //=== VK_KHR_push_descriptor === + PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR = 0; + + //=== VK_KHR_ray_tracing_pipeline === + PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR = 0; + PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR = 0; + PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR = 0; + PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = 0; + PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR = 0; + PFN_vkGetRayTracingShaderGroupStackSizeKHR vkGetRayTracingShaderGroupStackSizeKHR = 0; + PFN_vkCmdSetRayTracingPipelineStackSizeKHR vkCmdSetRayTracingPipelineStackSizeKHR = 0; + + //=== VK_KHR_sampler_ycbcr_conversion === + PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR = 0; + PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR = 0; + + //=== VK_KHR_shared_presentable_image === + PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR = 0; + + //=== VK_KHR_swapchain === + PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR = 0; + PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR = 0; + PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR = 0; + PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR = 0; + PFN_vkQueuePresentKHR vkQueuePresentKHR = 0; + + //=== VK_KHR_synchronization2 === + PFN_vkCmdSetEvent2KHR vkCmdSetEvent2KHR = 0; + PFN_vkCmdResetEvent2KHR vkCmdResetEvent2KHR = 0; + PFN_vkCmdWaitEvents2KHR vkCmdWaitEvents2KHR = 0; + PFN_vkCmdPipelineBarrier2KHR vkCmdPipelineBarrier2KHR = 0; + PFN_vkCmdWriteTimestamp2KHR vkCmdWriteTimestamp2KHR = 0; + PFN_vkQueueSubmit2KHR vkQueueSubmit2KHR = 0; + PFN_vkCmdWriteBufferMarker2AMD vkCmdWriteBufferMarker2AMD = 0; + PFN_vkGetQueueCheckpointData2NV vkGetQueueCheckpointData2NV = 0; + + //=== VK_KHR_timeline_semaphore === + PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR = 0; + PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR = 0; + PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR = 0; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_decode_queue === + PFN_vkCmdDecodeVideoKHR vkCmdDecodeVideoKHR = 0; +# else + PFN_dummy vkCmdDecodeVideoKHR_placeholder = 0; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_encode_queue === + PFN_vkCmdEncodeVideoKHR vkCmdEncodeVideoKHR = 0; +# else + PFN_dummy vkCmdEncodeVideoKHR_placeholder = 0; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + PFN_vkCreateVideoSessionKHR vkCreateVideoSessionKHR = 0; + PFN_vkDestroyVideoSessionKHR vkDestroyVideoSessionKHR = 0; + PFN_vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR = 0; + PFN_vkBindVideoSessionMemoryKHR vkBindVideoSessionMemoryKHR = 0; + PFN_vkCreateVideoSessionParametersKHR vkCreateVideoSessionParametersKHR = 0; + PFN_vkUpdateVideoSessionParametersKHR vkUpdateVideoSessionParametersKHR = 0; + PFN_vkDestroyVideoSessionParametersKHR vkDestroyVideoSessionParametersKHR = 0; + PFN_vkCmdBeginVideoCodingKHR vkCmdBeginVideoCodingKHR = 0; + PFN_vkCmdEndVideoCodingKHR vkCmdEndVideoCodingKHR = 0; + PFN_vkCmdControlVideoCodingKHR vkCmdControlVideoCodingKHR = 0; +# else + PFN_dummy vkCreateVideoSessionKHR_placeholder = 0; + PFN_dummy vkDestroyVideoSessionKHR_placeholder = 0; + PFN_dummy vkGetVideoSessionMemoryRequirementsKHR_placeholder = 0; + PFN_dummy vkBindVideoSessionMemoryKHR_placeholder = 0; + PFN_dummy vkCreateVideoSessionParametersKHR_placeholder = 0; + PFN_dummy vkUpdateVideoSessionParametersKHR_placeholder = 0; + PFN_dummy vkDestroyVideoSessionParametersKHR_placeholder = 0; + PFN_dummy vkCmdBeginVideoCodingKHR_placeholder = 0; + PFN_dummy vkCmdEndVideoCodingKHR_placeholder = 0; + PFN_dummy vkCmdControlVideoCodingKHR_placeholder = 0; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NVX_binary_import === + PFN_vkCreateCuModuleNVX vkCreateCuModuleNVX = 0; + PFN_vkCreateCuFunctionNVX vkCreateCuFunctionNVX = 0; + PFN_vkDestroyCuModuleNVX vkDestroyCuModuleNVX = 0; + PFN_vkDestroyCuFunctionNVX vkDestroyCuFunctionNVX = 0; + PFN_vkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVX = 0; + + //=== VK_NVX_image_view_handle === + PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX = 0; + PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX = 0; + + //=== VK_NV_clip_space_w_scaling === + PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV = 0; + + //=== VK_NV_device_diagnostic_checkpoints === + PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV = 0; + PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV = 0; + + //=== VK_NV_device_generated_commands === + PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV = 0; + PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV = 0; + PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV = 0; + PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV = 0; + PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV = 0; + PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV = 0; + + //=== VK_NV_external_memory_rdma === + PFN_vkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNV = 0; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV = 0; +# else + PFN_dummy vkGetMemoryWin32HandleNV_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_NV_fragment_shading_rate_enums === + PFN_vkCmdSetFragmentShadingRateEnumNV vkCmdSetFragmentShadingRateEnumNV = 0; + + //=== VK_NV_mesh_shader === + PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV = 0; + PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV = 0; + PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV = 0; + + //=== VK_NV_ray_tracing === + PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV = 0; + PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV = 0; + PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV = 0; + PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV = 0; + PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV = 0; + PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV = 0; + PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV = 0; + PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV = 0; + PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV = 0; + PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV = 0; + PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV = 0; + PFN_vkCompileDeferredNV vkCompileDeferredNV = 0; + + //=== VK_NV_scissor_exclusive === + PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV = 0; + + //=== VK_NV_shading_rate_image === + PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV = 0; + PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV = 0; + PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV = 0; + }; + + //======================================== + //=== RAII HANDLE forward declarations === + //======================================== + + //=== VK_VERSION_1_0 === + class Instance; + class PhysicalDevice; + class Device; + class Queue; + class DeviceMemory; + class Fence; + class Semaphore; + class Event; + class QueryPool; + class Buffer; + class BufferView; + class Image; + class ImageView; + class ShaderModule; + class PipelineCache; + class Pipeline; + class PipelineLayout; + class Sampler; + class DescriptorPool; + class DescriptorSet; + class DescriptorSetLayout; + class Framebuffer; + class RenderPass; + class CommandPool; + class CommandBuffer; + + //=== VK_VERSION_1_1 === + class SamplerYcbcrConversion; + class DescriptorUpdateTemplate; + + //=== VK_VERSION_1_3 === + class PrivateDataSlot; + + //=== VK_KHR_surface === + class SurfaceKHR; + + //=== VK_KHR_swapchain === + class SwapchainKHR; + + //=== VK_KHR_display === + class DisplayKHR; + class DisplayModeKHR; + + //=== VK_EXT_debug_report === + class DebugReportCallbackEXT; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + class VideoSessionKHR; + class VideoSessionParametersKHR; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NVX_binary_import === + class CuModuleNVX; + class CuFunctionNVX; + + //=== VK_EXT_debug_utils === + class DebugUtilsMessengerEXT; + + //=== VK_KHR_acceleration_structure === + class AccelerationStructureKHR; + + //=== VK_EXT_validation_cache === + class ValidationCacheEXT; + + //=== VK_NV_ray_tracing === + class AccelerationStructureNV; + + //=== VK_INTEL_performance_query === + class PerformanceConfigurationINTEL; + + //=== VK_KHR_deferred_host_operations === + class DeferredOperationKHR; + + //=== VK_NV_device_generated_commands === + class IndirectCommandsLayoutNV; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + class BufferCollectionFUCHSIA; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //==================== + //=== RAII HANDLES === + //==================== + + class Context + { + public: +# if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL + Context() + : m_dispatcher( new VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ContextDispatcher( + m_dynamicLoader.getProcAddress( "vkGetInstanceProcAddr" ) ) ) +# else + Context( PFN_vkGetInstanceProcAddr getInstanceProcAddr ) + : m_dispatcher( new VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ContextDispatcher( getInstanceProcAddr ) ) +# endif + {} + + ~Context() = default; + + Context( Context const & ) = delete; + Context( Context && rhs ) VULKAN_HPP_NOEXCEPT +# if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL + : m_dynamicLoader( std::move( rhs.m_dynamicLoader ) ) + , m_dispatcher( rhs.m_dispatcher.release() ) +# else + : m_dispatcher( rhs.m_dispatcher.release() ) +# endif + {} + Context & operator=( Context const & ) = delete; + Context & operator =( Context && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { +# if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL + m_dynamicLoader = std::move( rhs.m_dynamicLoader ); +# endif + m_dispatcher.reset( rhs.m_dispatcher.release() ); + } + return *this; + } + + //=== VK_VERSION_1_0 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Instance createInstance( + VULKAN_HPP_NAMESPACE::InstanceCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD std::vector enumerateInstanceExtensionProperties( + Optional layerName VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const; + + VULKAN_HPP_NODISCARD std::vector enumerateInstanceLayerProperties() const; + + //=== VK_VERSION_1_1 === + + VULKAN_HPP_NODISCARD uint32_t enumerateInstanceVersion() const; + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ContextDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return &*m_dispatcher; + } + + private: +# if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL + VULKAN_HPP_NAMESPACE::DynamicLoader m_dynamicLoader; +# endif + std::unique_ptr m_dispatcher; + }; + + class Instance + { + public: + using CType = VkInstance; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eInstance; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eInstance; + + public: + Instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Context const & context, + VULKAN_HPP_NAMESPACE::InstanceCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_allocator( static_cast( allocator ) ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + context.getDispatcher()->vkCreateInstance( reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_instance ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateInstance" ); + } + m_dispatcher.reset( new VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher( + context.getDispatcher()->vkGetInstanceProcAddr, static_cast( m_instance ) ) ); + } + + Instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Context const & context, + VkInstance instance, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( instance ) + , m_allocator( static_cast( allocator ) ) + { + m_dispatcher.reset( new VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher( + context.getDispatcher()->vkGetInstanceProcAddr, static_cast( m_instance ) ) ); + } + + Instance( std::nullptr_t ) {} + + ~Instance() + { + if ( m_instance ) + { + getDispatcher()->vkDestroyInstance( static_cast( m_instance ), + reinterpret_cast( m_allocator ) ); + } + } + + Instance() = delete; + Instance( Instance const & ) = delete; + Instance( Instance && rhs ) VULKAN_HPP_NOEXCEPT + : m_instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( rhs.m_dispatcher.release() ) + {} + Instance & operator=( Instance const & ) = delete; + Instance & operator =( Instance && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_instance ) + { + getDispatcher()->vkDestroyInstance( static_cast( m_instance ), + reinterpret_cast( m_allocator ) ); + } + m_instance = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher.reset( rhs.m_dispatcher.release() ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Instance const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_instance; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return &*m_dispatcher; + } + + //=== VK_VERSION_1_0 === + + VULKAN_HPP_NODISCARD std::vector enumeratePhysicalDevices() const; + + VULKAN_HPP_NODISCARD PFN_vkVoidFunction getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_1 === + + VULKAN_HPP_NODISCARD std::vector + enumeratePhysicalDeviceGroups() const; + + //=== VK_KHR_display === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createDisplayPlaneSurfaceKHR( + VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createXlibSurfaceKHR( + VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +# if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createXcbSurfaceKHR( + VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_USE_PLATFORM_XCB_KHR*/ + +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createWaylandSurfaceKHR( + VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createAndroidSurfaceKHR( + VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createWin32SurfaceKHR( + VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::DebugReportCallbackEXT createDebugReportCallbackEXT( + VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + void debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags, + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_, + uint64_t object, + size_t location, + int32_t messageCode, + const std::string & layerPrefix, + const std::string & message ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createStreamDescriptorSurfaceGGP( + VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_USE_PLATFORM_GGP*/ + +# if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createViSurfaceNN( + VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_device_group_creation === + + VULKAN_HPP_NODISCARD std::vector + enumeratePhysicalDeviceGroupsKHR() const; + +# if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createIOSSurfaceMVK( + VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_USE_PLATFORM_IOS_MVK*/ + +# if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createMacOSSurfaceMVK( + VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::DebugUtilsMessengerEXT createDebugUtilsMessengerEXT( + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + void submitDebugUtilsMessageEXT( + VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageTypes, + const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT & callbackData ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createImagePipeSurfaceFUCHSIA( + VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createMetalSurfaceEXT( + VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_EXT_headless_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createHeadlessSurfaceEXT( + VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createDirectFBSurfaceEXT( + VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createScreenSurfaceQNX( + VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + private: + VULKAN_HPP_NAMESPACE::Instance m_instance = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + std::unique_ptr m_dispatcher; + }; + + class PhysicalDevice + { + public: + using CType = VkPhysicalDevice; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::ePhysicalDevice; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePhysicalDevice; + + public: + PhysicalDevice( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VkPhysicalDevice physicalDevice ) + : m_physicalDevice( physicalDevice ), m_dispatcher( instance.getDispatcher() ) + {} + + PhysicalDevice( std::nullptr_t ) {} + + PhysicalDevice() = delete; + PhysicalDevice( PhysicalDevice const & ) = delete; + PhysicalDevice( PhysicalDevice && rhs ) VULKAN_HPP_NOEXCEPT + : m_physicalDevice( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_physicalDevice, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + PhysicalDevice & operator=( PhysicalDevice const & ) = delete; + PhysicalDevice & operator =( PhysicalDevice && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + m_physicalDevice = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_physicalDevice, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::PhysicalDevice const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_physicalDevice; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_VERSION_1_0 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures getFeatures() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties + getFormatProperties( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageFormatProperties getImageFormatProperties( + VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties getProperties() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties + getMemoryProperties() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Device createDevice( + VULKAN_HPP_NAMESPACE::DeviceCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD std::vector enumerateDeviceExtensionProperties( + Optional layerName VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const; + + VULKAN_HPP_NODISCARD std::vector enumerateDeviceLayerProperties() const; + + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageTiling tiling ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_1 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 getFeatures2() const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getFeatures2() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 getProperties2() const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getProperties2() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties2 + getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain + getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageFormatProperties2 + getImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const; + + template + VULKAN_HPP_NODISCARD StructureChain + getImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const; + + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2() const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties2() const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 + getMemoryProperties2() const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getMemoryProperties2() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties2( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalBufferProperties getExternalBufferProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalFenceProperties getExternalFenceProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties getExternalSemaphoreProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_3 === + + VULKAN_HPP_NODISCARD std::vector getToolProperties() const; + + //=== VK_KHR_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 + getSurfaceSupportKHR( uint32_t queueFamilyIndex, VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR + getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const; + + VULKAN_HPP_NODISCARD std::vector + getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const; + + VULKAN_HPP_NODISCARD std::vector getSurfacePresentModesKHR( + VULKAN_HPP_NAMESPACE::SurfaceKHR surface VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const; + + //=== VK_KHR_swapchain === + + VULKAN_HPP_NODISCARD std::vector + getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const; + + //=== VK_KHR_display === + + VULKAN_HPP_NODISCARD std::vector getDisplayPropertiesKHR() const; + + VULKAN_HPP_NODISCARD std::vector + getDisplayPlanePropertiesKHR() const; + + VULKAN_HPP_NODISCARD std::vector + getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const; + +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 getXlibPresentationSupportKHR( + uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +# if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 getXcbPresentationSupportKHR( + uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_USE_PLATFORM_XCB_KHR*/ + +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 + getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, + struct wl_display & display ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 + getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR + getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileKHR & videoProfile ) const; + + template + VULKAN_HPP_NODISCARD StructureChain + getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileKHR & videoProfile ) const; + + VULKAN_HPP_NODISCARD std::vector getVideoFormatPropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo ) const; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NV_external_memory_capabilities === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV getExternalImageFormatPropertiesNV( + VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType + VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const; + + //=== VK_KHR_get_physical_device_properties2 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 getFeatures2KHR() const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getFeatures2KHR() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 + getProperties2KHR() const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getProperties2KHR() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties2 + getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain + getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageFormatProperties2 getImageFormatProperties2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const; + + template + VULKAN_HPP_NODISCARD StructureChain getImageFormatProperties2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const; + + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2KHR() const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties2KHR() const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 + getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_external_memory_capabilities === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalBufferProperties getExternalBufferPropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_external_semaphore_capabilities === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties getExternalSemaphorePropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const + VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + + void acquireXlibDisplayEXT( Display & dpy, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::DisplayKHR getRandROutputDisplayEXT( Display & dpy, + RROutput rrOutput ) const; +# endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_display_surface_counter === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT + getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const; + + //=== VK_KHR_external_fence_capabilities === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalFenceProperties getExternalFencePropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_performance_query === + + VULKAN_HPP_NODISCARD std::pair, std::vector> + enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex ) const; + + VULKAN_HPP_NODISCARD uint32_t getQueueFamilyPerformanceQueryPassesKHR( + const VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_get_surface_capabilities2 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR + getSurfaceCapabilities2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const; + + template + VULKAN_HPP_NODISCARD StructureChain + getSurfaceCapabilities2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const; + + VULKAN_HPP_NODISCARD std::vector + getSurfaceFormats2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const; + + //=== VK_KHR_get_display_properties2 === + + VULKAN_HPP_NODISCARD std::vector getDisplayProperties2KHR() const; + + VULKAN_HPP_NODISCARD std::vector + getDisplayPlaneProperties2KHR() const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR + getDisplayPlaneCapabilities2KHR( const VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR & displayPlaneInfo ) const; + + //=== VK_EXT_sample_locations === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT + getMultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_calibrated_timestamps === + + VULKAN_HPP_NODISCARD std::vector getCalibrateableTimeDomainsEXT() const; + + //=== VK_KHR_fragment_shading_rate === + + VULKAN_HPP_NODISCARD std::vector + getFragmentShadingRatesKHR() const; + + //=== VK_EXT_tooling_info === + + VULKAN_HPP_NODISCARD std::vector getToolPropertiesEXT() const; + + //=== VK_NV_cooperative_matrix === + + VULKAN_HPP_NODISCARD std::vector + getCooperativeMatrixPropertiesNV() const; + + //=== VK_NV_coverage_reduction_mode === + + VULKAN_HPP_NODISCARD std::vector + getSupportedFramebufferMixedSamplesCombinationsNV() const; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + VULKAN_HPP_NODISCARD std::vector + getSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_acquire_drm_display === + + void acquireDrmDisplayEXT( int32_t drmFd, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::DisplayKHR getDrmDisplayEXT( int32_t drmFd, + uint32_t connectorId ) const; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::DisplayKHR getWinrtDisplayNV( uint32_t deviceRelativeId ) const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 + getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, IDirectFB & dfb ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 + getScreenPresentationSupportQNX( uint32_t queueFamilyIndex, + struct _screen_window & window ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + private: + VULKAN_HPP_NAMESPACE::PhysicalDevice m_physicalDevice = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher = nullptr; + }; + + class PhysicalDevices : public std::vector + { + public: + PhysicalDevices( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance ) + { + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * dispatcher = + instance.getDispatcher(); + std::vector physicalDevices; + uint32_t physicalDeviceCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( dispatcher->vkEnumeratePhysicalDevices( + static_cast( *instance ), &physicalDeviceCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && physicalDeviceCount ) + { + physicalDevices.resize( physicalDeviceCount ); + result = static_cast( dispatcher->vkEnumeratePhysicalDevices( + static_cast( *instance ), &physicalDeviceCount, physicalDevices.data() ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( physicalDeviceCount <= physicalDevices.size() ); + this->reserve( physicalDeviceCount ); + for ( auto const & physicalDevice : physicalDevices ) + { + this->emplace_back( instance, physicalDevice ); + } + } + else + { + throwResultException( result, "vkEnumeratePhysicalDevices" ); + } + } + + PhysicalDevices() = delete; + PhysicalDevices( PhysicalDevices const & ) = delete; + PhysicalDevices( PhysicalDevices && rhs ) = default; + PhysicalDevices & operator=( PhysicalDevices const & ) = delete; + PhysicalDevices & operator=( PhysicalDevices && rhs ) = default; + }; + + class Device + { + public: + using CType = VkDevice; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDevice; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDevice; + + public: + Device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice, + VULKAN_HPP_NAMESPACE::DeviceCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_allocator( static_cast( allocator ) ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( physicalDevice.getDispatcher()->vkCreateDevice( + static_cast( *physicalDevice ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_device ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateDevice" ); + } + m_dispatcher.reset( new VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher( + physicalDevice.getDispatcher()->vkGetDeviceProcAddr, static_cast( m_device ) ) ); + } + + Device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice, + VkDevice device, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( device ), m_allocator( static_cast( allocator ) ) + { + m_dispatcher.reset( new VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher( + physicalDevice.getDispatcher()->vkGetDeviceProcAddr, static_cast( m_device ) ) ); + } + + Device( std::nullptr_t ) {} + + ~Device() + { + if ( m_device ) + { + getDispatcher()->vkDestroyDevice( static_cast( m_device ), + reinterpret_cast( m_allocator ) ); + } + } + + Device() = delete; + Device( Device const & ) = delete; + Device( Device && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( rhs.m_dispatcher.release() ) + {} + Device & operator=( Device const & ) = delete; + Device & operator =( Device && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_device ) + { + getDispatcher()->vkDestroyDevice( static_cast( m_device ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher.reset( rhs.m_dispatcher.release() ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Device const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return &*m_dispatcher; + } + + //=== VK_VERSION_1_0 === + + VULKAN_HPP_NODISCARD PFN_vkVoidFunction getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Queue getQueue( uint32_t queueFamilyIndex, + uint32_t queueIndex ) const; + + void waitIdle() const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::DeviceMemory allocateMemory( + VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const & allocateInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + void + flushMappedMemoryRanges( ArrayProxy const & memoryRanges ) const; + + void invalidateMappedMemoryRanges( + ArrayProxy const & memoryRanges ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Fence createFence( + VULKAN_HPP_NAMESPACE::FenceCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + void resetFences( ArrayProxy const & fences ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result + waitForFences( ArrayProxy const & fences, + VULKAN_HPP_NAMESPACE::Bool32 waitAll, + uint64_t timeout ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Semaphore createSemaphore( + VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Event createEvent( + VULKAN_HPP_NAMESPACE::EventCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::QueryPool createQueryPool( + VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Buffer createBuffer( + VULKAN_HPP_NAMESPACE::BufferCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::BufferView createBufferView( + VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Image createImage( + VULKAN_HPP_NAMESPACE::ImageCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::ImageView createImageView( + VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::ShaderModule createShaderModule( + VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::PipelineCache createPipelineCache( + VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD std::vector createGraphicsPipelines( + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::ArrayProxy const & createInfos, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Pipeline createGraphicsPipeline( + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD std::vector createComputePipelines( + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::ArrayProxy const & createInfos, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Pipeline createComputePipeline( + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::PipelineLayout createPipelineLayout( + VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Sampler createSampler( + VULKAN_HPP_NAMESPACE::SamplerCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::DescriptorSetLayout createDescriptorSetLayout( + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::DescriptorPool createDescriptorPool( + VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD std::vector + allocateDescriptorSets( VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const & allocateInfo ) const; + + void updateDescriptorSets( + ArrayProxy const & descriptorWrites, + ArrayProxy const & descriptorCopies ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Framebuffer createFramebuffer( + VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::RenderPass createRenderPass( + VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::CommandPool createCommandPool( + VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD std::vector + allocateCommandBuffers( VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const & allocateInfo ) const; + + //=== VK_VERSION_1_1 === + + void bindBufferMemory2( ArrayProxy const & bindInfos ) const; + + void bindImageMemory2( ArrayProxy const & bindInfos ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags getGroupPeerMemoryFeatures( + uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getImageMemoryRequirements2( + const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getImageMemoryRequirements2( + const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getBufferMemoryRequirements2( + const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getBufferMemoryRequirements2( + const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info ) const + VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Queue + getQueue2( VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const & queueInfo ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SamplerYcbcrConversion createSamplerYcbcrConversion( + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::DescriptorUpdateTemplate createDescriptorUpdateTemplate( + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport getDescriptorSetLayoutSupport( + const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getDescriptorSetLayoutSupport( + const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_2 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::RenderPass createRenderPass2( + VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result + waitSemaphores( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const; + + void signalSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress + getBufferAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD uint64_t getBufferOpaqueCaptureAddress( + const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD uint64_t getMemoryOpaqueCaptureAddress( + const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_3 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::PrivateDataSlot createPrivateDataSlot( + VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + void setPrivateData( VULKAN_HPP_NAMESPACE::ObjectType objectType_, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t data ) const; + + VULKAN_HPP_NODISCARD uint64_t + getPrivateData( VULKAN_HPP_NAMESPACE::ObjectType objectType_, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getBufferMemoryRequirements( + const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getBufferMemoryRequirements( + const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getImageMemoryRequirements( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getImageMemoryRequirements( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_swapchain === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR createSwapchainKHR( + VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR + getGroupPresentCapabilitiesKHR() const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR + getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const; + + VULKAN_HPP_NODISCARD std::pair + acquireNextImage2KHR( const VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR & acquireInfo ) const; + + //=== VK_KHR_display_swapchain === + + VULKAN_HPP_NODISCARD std::vector createSharedSwapchainsKHR( + VULKAN_HPP_NAMESPACE::ArrayProxy const & createInfos, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR createSharedSwapchainKHR( + VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + //=== VK_EXT_debug_marker === + + void debugMarkerSetObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT & tagInfo ) const; + + void debugMarkerSetObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT & nameInfo ) const; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::VideoSessionKHR createVideoSessionKHR( + VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::VideoSessionParametersKHR createVideoSessionParametersKHR( + VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NVX_binary_import === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::CuModuleNVX createCuModuleNVX( + VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::CuFunctionNVX createCuFunctionNVX( + VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + //=== VK_NVX_image_view_handle === + + VULKAN_HPP_NODISCARD uint32_t + getImageViewHandleNVX( const VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX & info ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_device_group === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags getGroupPeerMemoryFeaturesKHR( + uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + + VULKAN_HPP_NODISCARD HANDLE + getMemoryWin32HandleKHR( const VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR + getMemoryWin32HandlePropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + HANDLE handle ) const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + + VULKAN_HPP_NODISCARD int getMemoryFdKHR( const VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR & getFdInfo ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR + getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, int fd ) const; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + + void importSemaphoreWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const; + + VULKAN_HPP_NODISCARD HANDLE getSemaphoreWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + + void importSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const; + + VULKAN_HPP_NODISCARD int getSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR & getFdInfo ) const; + + //=== VK_KHR_descriptor_update_template === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::DescriptorUpdateTemplate createDescriptorUpdateTemplateKHR( + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + void destroyDescriptorUpdateTemplateKHR( + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_display_control === + + void displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT & displayPowerInfo ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Fence registerEventEXT( + VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const & deviceEventInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Fence registerDisplayEventEXT( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const & display, + VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const & displayEventInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + //=== VK_EXT_hdr_metadata === + + void setHdrMetadataEXT( ArrayProxy const & swapchains, + ArrayProxy const & metadata ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_KHR_create_renderpass2 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::RenderPass createRenderPass2KHR( + VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + + void importFenceWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const; + + VULKAN_HPP_NODISCARD HANDLE + getFenceWin32HandleKHR( const VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + + void importFenceFdKHR( const VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR & importFenceFdInfo ) const; + + VULKAN_HPP_NODISCARD int getFenceFdKHR( const VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR & getFdInfo ) const; + + //=== VK_KHR_performance_query === + + void acquireProfilingLockKHR( const VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR & info ) const; + + void releaseProfilingLockKHR() const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_debug_utils === + + void setDebugUtilsObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT & nameInfo ) const; + + void setDebugUtilsObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT & tagInfo ) const; + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID + getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const; + + template + VULKAN_HPP_NODISCARD StructureChain + getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const; + + VULKAN_HPP_NODISCARD struct AHardwareBuffer * getMemoryAndroidHardwareBufferANDROID( + const VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID & info ) const; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + //=== VK_KHR_get_memory_requirements2 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getImageMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getImageMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getBufferMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getBufferMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_acceleration_structure === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureKHR createAccelerationStructureKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result buildAccelerationStructuresKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + ArrayProxy const & infos, + ArrayProxy const & + pBuildRangeInfos ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result + copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result copyAccelerationStructureToMemoryKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result copyMemoryToAccelerationStructureKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info ) const; + + template + VULKAN_HPP_NODISCARD std::vector writeAccelerationStructuresPropertiesKHR( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + size_t dataSize, + size_t stride ) const; + + template + VULKAN_HPP_NODISCARD DataType writeAccelerationStructuresPropertyKHR( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + size_t stride ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress getAccelerationStructureAddressKHR( + const VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR & info ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR + getAccelerationStructureCompatibilityKHR( + const VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR & versionInfo ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR + getAccelerationStructureBuildSizesKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR & buildInfo, + ArrayProxy const & maxPrimitiveCounts VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_sampler_ycbcr_conversion === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SamplerYcbcrConversion createSamplerYcbcrConversionKHR( + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + void destroySamplerYcbcrConversionKHR( + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_bind_memory2 === + + void bindBufferMemory2KHR( ArrayProxy const & bindInfos ) const; + + void bindImageMemory2KHR( ArrayProxy const & bindInfos ) const; + + //=== VK_EXT_validation_cache === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::ValidationCacheEXT createValidationCacheEXT( + VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + //=== VK_NV_ray_tracing === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureNV createAccelerationStructureNV( + VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR getAccelerationStructureMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getAccelerationStructureMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT; + + void bindAccelerationStructureMemoryNV( + ArrayProxy const & bindInfos ) const; + + VULKAN_HPP_NODISCARD std::vector createRayTracingPipelinesNV( + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::ArrayProxy const & createInfos, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Pipeline createRayTracingPipelineNV( + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + //=== VK_KHR_maintenance3 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport getDescriptorSetLayoutSupportKHR( + const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getDescriptorSetLayoutSupportKHR( + const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_external_memory_host === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT + getMemoryHostPointerPropertiesEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + const void * pHostPointer ) const; + + //=== VK_EXT_calibrated_timestamps === + + VULKAN_HPP_NODISCARD std::pair, uint64_t> getCalibratedTimestampsEXT( + ArrayProxy const & timestampInfos ) const; + + VULKAN_HPP_NODISCARD std::pair + getCalibratedTimestampEXT( const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT & timestampInfo ) const; + + //=== VK_KHR_timeline_semaphore === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result + waitSemaphoresKHR( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const; + + void signalSemaphoreKHR( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo ) const; + + //=== VK_INTEL_performance_query === + + void initializePerformanceApiINTEL( + const VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL & initializeInfo ) const; + + void uninitializePerformanceApiINTEL() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::PerformanceConfigurationINTEL + acquirePerformanceConfigurationINTEL( + VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const & acquireInfo ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PerformanceValueINTEL + getPerformanceParameterINTEL( VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter ) const; + + //=== VK_EXT_buffer_device_address === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress + getBufferAddressEXT( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR getGroupSurfacePresentModes2EXT( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_buffer_device_address === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress + getBufferAddressKHR( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD uint64_t getBufferOpaqueCaptureAddressKHR( + const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD uint64_t getMemoryOpaqueCaptureAddressKHR( + const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_deferred_host_operations === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR createDeferredOperationKHR( + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + //=== VK_KHR_pipeline_executable_properties === + + VULKAN_HPP_NODISCARD std::vector + getPipelineExecutablePropertiesKHR( const VULKAN_HPP_NAMESPACE::PipelineInfoKHR & pipelineInfo ) const; + + VULKAN_HPP_NODISCARD std::vector + getPipelineExecutableStatisticsKHR( + const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo ) const; + + VULKAN_HPP_NODISCARD std::vector + getPipelineExecutableInternalRepresentationsKHR( + const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo ) const; + + //=== VK_NV_device_generated_commands === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getGeneratedCommandsMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getGeneratedCommandsMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::IndirectCommandsLayoutNV createIndirectCommandsLayoutNV( + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + //=== VK_EXT_private_data === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::PrivateDataSlot createPrivateDataSlotEXT( + VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + void destroyPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot + VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional allocator + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + void setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType_, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t data ) const; + + VULKAN_HPP_NODISCARD uint64_t + getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType_, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_ray_tracing_pipeline === + + VULKAN_HPP_NODISCARD std::vector createRayTracingPipelinesKHR( + VULKAN_HPP_NAMESPACE::Optional< + const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation, + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::ArrayProxy const & createInfos, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::Pipeline createRayTracingPipelineKHR( + VULKAN_HPP_NAMESPACE::Optional< + const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation, + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + + VULKAN_HPP_NODISCARD zx_handle_t getMemoryZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA + getMemoryZirconHandlePropertiesFUCHSIA( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + zx_handle_t zirconHandle ) const; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + + void importSemaphoreZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA & importSemaphoreZirconHandleInfo ) const; + + VULKAN_HPP_NODISCARD zx_handle_t getSemaphoreZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::BufferCollectionFUCHSIA createBufferCollectionFUCHSIA( + VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_NV_external_memory_rdma === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::RemoteAddressNV getMemoryRemoteAddressNV( + const VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV & memoryGetRemoteAddressInfo ) const; + + //=== VK_KHR_maintenance4 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getBufferMemoryRequirementsKHR( + const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getBufferMemoryRequirementsKHR( + const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getImageMemoryRequirementsKHR( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT; + + template + VULKAN_HPP_NODISCARD StructureChain getImageMemoryRequirementsKHR( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const + VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + std::unique_ptr m_dispatcher; + }; + + class AccelerationStructureKHR + { + public: + using CType = VkAccelerationStructureKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eAccelerationStructureKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eAccelerationStructureKHR; + + public: + AccelerationStructureKHR( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreateAccelerationStructureKHR( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_accelerationStructure ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateAccelerationStructureKHR" ); + } + } + + AccelerationStructureKHR( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkAccelerationStructureKHR accelerationStructure, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_accelerationStructure( accelerationStructure ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + AccelerationStructureKHR( std::nullptr_t ) {} + + ~AccelerationStructureKHR() + { + if ( m_accelerationStructure ) + { + getDispatcher()->vkDestroyAccelerationStructureKHR( + static_cast( m_device ), + static_cast( m_accelerationStructure ), + reinterpret_cast( m_allocator ) ); + } + } + + AccelerationStructureKHR() = delete; + AccelerationStructureKHR( AccelerationStructureKHR const & ) = delete; + AccelerationStructureKHR( AccelerationStructureKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_accelerationStructure( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_accelerationStructure, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + AccelerationStructureKHR & operator=( AccelerationStructureKHR const & ) = delete; + AccelerationStructureKHR & operator=( AccelerationStructureKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_accelerationStructure ) + { + getDispatcher()->vkDestroyAccelerationStructureKHR( + static_cast( m_device ), + static_cast( m_accelerationStructure ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_accelerationStructure = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_accelerationStructure, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructure; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR m_accelerationStructure = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class AccelerationStructureNV + { + public: + using CType = VkAccelerationStructureNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eAccelerationStructureNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eAccelerationStructureNV; + + public: + AccelerationStructureNV( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreateAccelerationStructureNV( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_accelerationStructure ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateAccelerationStructureNV" ); + } + } + + AccelerationStructureNV( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkAccelerationStructureNV accelerationStructure, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_accelerationStructure( accelerationStructure ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + AccelerationStructureNV( std::nullptr_t ) {} + + ~AccelerationStructureNV() + { + if ( m_accelerationStructure ) + { + getDispatcher()->vkDestroyAccelerationStructureNV( + static_cast( m_device ), + static_cast( m_accelerationStructure ), + reinterpret_cast( m_allocator ) ); + } + } + + AccelerationStructureNV() = delete; + AccelerationStructureNV( AccelerationStructureNV const & ) = delete; + AccelerationStructureNV( AccelerationStructureNV && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_accelerationStructure( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_accelerationStructure, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + AccelerationStructureNV & operator=( AccelerationStructureNV const & ) = delete; + AccelerationStructureNV & operator=( AccelerationStructureNV && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_accelerationStructure ) + { + getDispatcher()->vkDestroyAccelerationStructureNV( + static_cast( m_device ), + static_cast( m_accelerationStructure ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_accelerationStructure = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_accelerationStructure, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::AccelerationStructureNV const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructure; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_NV_ray_tracing === + + template + VULKAN_HPP_NODISCARD std::vector getHandle( size_t dataSize ) const; + + template + VULKAN_HPP_NODISCARD DataType getHandle() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureNV m_accelerationStructure = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class Buffer + { + public: + using CType = VkBuffer; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eBuffer; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBuffer; + + public: + Buffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::BufferCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateBuffer( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_buffer ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateBuffer" ); + } + } + + Buffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkBuffer buffer, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_buffer( buffer ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + Buffer( std::nullptr_t ) {} + + ~Buffer() + { + if ( m_buffer ) + { + getDispatcher()->vkDestroyBuffer( static_cast( m_device ), + static_cast( m_buffer ), + reinterpret_cast( m_allocator ) ); + } + } + + Buffer() = delete; + Buffer( Buffer const & ) = delete; + Buffer( Buffer && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_buffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_buffer, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + Buffer & operator=( Buffer const & ) = delete; + Buffer & operator =( Buffer && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_buffer ) + { + getDispatcher()->vkDestroyBuffer( static_cast( m_device ), + static_cast( m_buffer ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_buffer = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_buffer, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Buffer const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_buffer; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_VERSION_1_0 === + + void bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements getMemoryRequirements() const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Buffer m_buffer = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + class BufferCollectionFUCHSIA + { + public: + using CType = VkBufferCollectionFUCHSIA; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eBufferCollectionFUCHSIA; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBufferCollectionFUCHSIA; + + public: + BufferCollectionFUCHSIA( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreateBufferCollectionFUCHSIA( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_collection ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateBufferCollectionFUCHSIA" ); + } + } + + BufferCollectionFUCHSIA( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkBufferCollectionFUCHSIA collection, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_collection( collection ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + BufferCollectionFUCHSIA( std::nullptr_t ) {} + + ~BufferCollectionFUCHSIA() + { + if ( m_collection ) + { + getDispatcher()->vkDestroyBufferCollectionFUCHSIA( + static_cast( m_device ), + static_cast( m_collection ), + reinterpret_cast( m_allocator ) ); + } + } + + BufferCollectionFUCHSIA() = delete; + BufferCollectionFUCHSIA( BufferCollectionFUCHSIA const & ) = delete; + BufferCollectionFUCHSIA( BufferCollectionFUCHSIA && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_collection( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_collection, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + BufferCollectionFUCHSIA & operator=( BufferCollectionFUCHSIA const & ) = delete; + BufferCollectionFUCHSIA & operator=( BufferCollectionFUCHSIA && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_collection ) + { + getDispatcher()->vkDestroyBufferCollectionFUCHSIA( + static_cast( m_device ), + static_cast( m_collection ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_collection = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_collection, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_collection; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_FUCHSIA_buffer_collection === + + void setImageConstraints( const VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA & imageConstraintsInfo ) const; + + void + setBufferConstraints( const VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA & bufferConstraintsInfo ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA getProperties() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA m_collection = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + class BufferView + { + public: + using CType = VkBufferView; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eBufferView; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBufferView; + + public: + BufferView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateBufferView( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_bufferView ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateBufferView" ); + } + } + + BufferView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkBufferView bufferView, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_bufferView( bufferView ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + BufferView( std::nullptr_t ) {} + + ~BufferView() + { + if ( m_bufferView ) + { + getDispatcher()->vkDestroyBufferView( static_cast( m_device ), + static_cast( m_bufferView ), + reinterpret_cast( m_allocator ) ); + } + } + + BufferView() = delete; + BufferView( BufferView const & ) = delete; + BufferView( BufferView && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_bufferView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_bufferView, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + BufferView & operator=( BufferView const & ) = delete; + BufferView & operator =( BufferView && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_bufferView ) + { + getDispatcher()->vkDestroyBufferView( static_cast( m_device ), + static_cast( m_bufferView ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_bufferView = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_bufferView, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::BufferView const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_bufferView; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::BufferView m_bufferView = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class CommandPool + { + public: + using CType = VkCommandPool; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eCommandPool; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCommandPool; + + public: + CommandPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateCommandPool( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_commandPool ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateCommandPool" ); + } + } + + CommandPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkCommandPool commandPool, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_commandPool( commandPool ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + CommandPool( std::nullptr_t ) {} + + ~CommandPool() + { + if ( m_commandPool ) + { + getDispatcher()->vkDestroyCommandPool( static_cast( m_device ), + static_cast( m_commandPool ), + reinterpret_cast( m_allocator ) ); + } + } + + CommandPool() = delete; + CommandPool( CommandPool const & ) = delete; + CommandPool( CommandPool && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_commandPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandPool, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + CommandPool & operator=( CommandPool const & ) = delete; + CommandPool & operator =( CommandPool && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_commandPool ) + { + getDispatcher()->vkDestroyCommandPool( static_cast( m_device ), + static_cast( m_commandPool ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_commandPool = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandPool, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::CommandPool const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_commandPool; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_VERSION_1_0 === + + void reset( VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const; + + //=== VK_VERSION_1_1 === + + void trim( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_maintenance1 === + + void trimKHR( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::CommandPool m_commandPool = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class CommandBuffer + { + public: + using CType = VkCommandBuffer; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eCommandBuffer; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCommandBuffer; + + public: + CommandBuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkCommandBuffer commandBuffer, + VkCommandPool commandPool ) + : m_device( *device ) + , m_commandPool( commandPool ) + , m_commandBuffer( commandBuffer ) + , m_dispatcher( device.getDispatcher() ) + {} + + CommandBuffer( std::nullptr_t ) {} + + ~CommandBuffer() + { + if ( m_commandBuffer ) + { + getDispatcher()->vkFreeCommandBuffers( static_cast( m_device ), + static_cast( m_commandPool ), + 1, + reinterpret_cast( &m_commandBuffer ) ); + } + } + + CommandBuffer() = delete; + CommandBuffer( CommandBuffer const & ) = delete; + CommandBuffer( CommandBuffer && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_commandPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandPool, {} ) ) + , m_commandBuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandBuffer, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + CommandBuffer & operator=( CommandBuffer const & ) = delete; + CommandBuffer & operator =( CommandBuffer && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_commandBuffer ) + { + getDispatcher()->vkFreeCommandBuffers( static_cast( m_device ), + static_cast( m_commandPool ), + 1, + reinterpret_cast( &m_commandBuffer ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_commandPool = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandPool, {} ); + m_commandBuffer = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandBuffer, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::CommandBuffer const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_commandBuffer; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_VERSION_1_0 === + + void begin( const VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo & beginInfo ) const; + + void end() const; + + void reset( VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const; + + void bindPipeline( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::Pipeline pipeline ) const VULKAN_HPP_NOEXCEPT; + + void setViewport( uint32_t firstViewport, + ArrayProxy const & viewports ) const VULKAN_HPP_NOEXCEPT; + + void setScissor( uint32_t firstScissor, + ArrayProxy const & scissors ) const VULKAN_HPP_NOEXCEPT; + + void setLineWidth( float lineWidth ) const VULKAN_HPP_NOEXCEPT; + + void setDepthBias( float depthBiasConstantFactor, + float depthBiasClamp, + float depthBiasSlopeFactor ) const VULKAN_HPP_NOEXCEPT; + + void setBlendConstants( const float blendConstants[4] ) const VULKAN_HPP_NOEXCEPT; + + void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const VULKAN_HPP_NOEXCEPT; + + void setStencilCompareMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + uint32_t compareMask ) const VULKAN_HPP_NOEXCEPT; + + void setStencilWriteMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + uint32_t writeMask ) const VULKAN_HPP_NOEXCEPT; + + void setStencilReference( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + uint32_t reference ) const VULKAN_HPP_NOEXCEPT; + + void bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t firstSet, + ArrayProxy const & descriptorSets, + ArrayProxy const & dynamicOffsets ) const VULKAN_HPP_NOEXCEPT; + + void bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::IndexType indexType ) const VULKAN_HPP_NOEXCEPT; + + void bindVertexBuffers( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + void draw( uint32_t vertexCount, + uint32_t instanceCount, + uint32_t firstVertex, + uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT; + + void drawIndexed( uint32_t indexCount, + uint32_t instanceCount, + uint32_t firstIndex, + int32_t vertexOffset, + uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT; + + void drawIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + uint32_t drawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + void drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + uint32_t drawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT; + + void dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset ) const VULKAN_HPP_NOEXCEPT; + + void copyBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT; + + void copyImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT; + + void blitImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions, + VULKAN_HPP_NAMESPACE::Filter filter ) const VULKAN_HPP_NOEXCEPT; + + void copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions ) const + VULKAN_HPP_NOEXCEPT; + + void copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + ArrayProxy const & regions ) const + VULKAN_HPP_NOEXCEPT; + + template + void updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + ArrayProxy const & data ) const VULKAN_HPP_NOEXCEPT; + + void fillBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + VULKAN_HPP_NAMESPACE::DeviceSize size, + uint32_t data ) const VULKAN_HPP_NOEXCEPT; + + void clearColorImage( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + const VULKAN_HPP_NAMESPACE::ClearColorValue & color, + ArrayProxy const & ranges ) const + VULKAN_HPP_NOEXCEPT; + + void clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + const VULKAN_HPP_NAMESPACE::ClearDepthStencilValue & depthStencil, + ArrayProxy const & ranges ) const + VULKAN_HPP_NOEXCEPT; + + void + clearAttachments( ArrayProxy const & attachments, + ArrayProxy const & rects ) const VULKAN_HPP_NOEXCEPT; + + void + resolveImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT; + + void setEvent( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask + VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + void resetEvent( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask + VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + void waitEvents( ArrayProxy const & events, + VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers ) const + VULKAN_HPP_NOEXCEPT; + + void pipelineBarrier( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, + VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers ) + const VULKAN_HPP_NOEXCEPT; + + void beginQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + VULKAN_HPP_NAMESPACE::QueryControlFlags flags + VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + void endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT; + + void resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT; + + void writeTimestamp( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query ) const VULKAN_HPP_NOEXCEPT; + + void copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags + VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + template + void pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout layout, + VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags, + uint32_t offset, + ArrayProxy const & values ) const VULKAN_HPP_NOEXCEPT; + + void beginRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin, + VULKAN_HPP_NAMESPACE::SubpassContents contents ) const VULKAN_HPP_NOEXCEPT; + + void nextSubpass( VULKAN_HPP_NAMESPACE::SubpassContents contents ) const VULKAN_HPP_NOEXCEPT; + + void endRenderPass() const VULKAN_HPP_NOEXCEPT; + + void executeCommands( ArrayProxy const & commandBuffers ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_1 === + + void setDeviceMask( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT; + + void dispatchBase( uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_2 === + + void drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + void drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + void + beginRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin, + const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT; + + void nextSubpass2( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo, + const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT; + + void endRenderPass2( const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_3 === + + void setEvent2( VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT; + + void resetEvent2( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask + VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + void waitEvents2( ArrayProxy const & events, + ArrayProxy const & dependencyInfos ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + void pipelineBarrier2( const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT; + + void writeTimestamp2( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query ) const VULKAN_HPP_NOEXCEPT; + + void copyBuffer2( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT; + + void copyImage2( const VULKAN_HPP_NAMESPACE::CopyImageInfo2 & copyImageInfo ) const VULKAN_HPP_NOEXCEPT; + + void copyBufferToImage2( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 & copyBufferToImageInfo ) const + VULKAN_HPP_NOEXCEPT; + + void copyImageToBuffer2( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 & copyImageToBufferInfo ) const + VULKAN_HPP_NOEXCEPT; + + void blitImage2( const VULKAN_HPP_NAMESPACE::BlitImageInfo2 & blitImageInfo ) const VULKAN_HPP_NOEXCEPT; + + void resolveImage2( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT; + + void beginRendering( const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo ) const VULKAN_HPP_NOEXCEPT; + + void endRendering() const VULKAN_HPP_NOEXCEPT; + + void setCullMode( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + void setFrontFace( VULKAN_HPP_NAMESPACE::FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT; + + void setPrimitiveTopology( VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT; + + void setViewportWithCount( ArrayProxy const & viewports ) const + VULKAN_HPP_NOEXCEPT; + + void setScissorWithCount( ArrayProxy const & scissors ) const + VULKAN_HPP_NOEXCEPT; + + void bindVertexBuffers2( + uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + ArrayProxy const & strides + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + void setDepthTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT; + + void setDepthWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT; + + void setDepthCompareOp( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT; + + void setDepthBoundsTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT; + + void setStencilTestEnable( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT; + + void setStencilOp( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + VULKAN_HPP_NAMESPACE::StencilOp failOp, + VULKAN_HPP_NAMESPACE::StencilOp passOp, + VULKAN_HPP_NAMESPACE::StencilOp depthFailOp, + VULKAN_HPP_NAMESPACE::CompareOp compareOp ) const VULKAN_HPP_NOEXCEPT; + + void setRasterizerDiscardEnable( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT; + + void setDepthBiasEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT; + + void setPrimitiveRestartEnable( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_debug_marker === + + void debugMarkerBeginEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo ) const + VULKAN_HPP_NOEXCEPT; + + void debugMarkerEndEXT() const VULKAN_HPP_NOEXCEPT; + + void debugMarkerInsertEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo ) const + VULKAN_HPP_NOEXCEPT; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + + void beginVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR & beginInfo ) const + VULKAN_HPP_NOEXCEPT; + + void endVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR & endCodingInfo ) const + VULKAN_HPP_NOEXCEPT; + + void controlVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR & codingControlInfo ) const + VULKAN_HPP_NOEXCEPT; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_decode_queue === + + void decodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR & frameInfo ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_transform_feedback === + + void bindTransformFeedbackBuffersEXT( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + void beginTransformFeedbackEXT( uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + void endTransformFeedbackEXT( uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + void beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + VULKAN_HPP_NAMESPACE::QueryControlFlags flags, + uint32_t index ) const VULKAN_HPP_NOEXCEPT; + + void endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + uint32_t index ) const VULKAN_HPP_NOEXCEPT; + + void drawIndirectByteCountEXT( uint32_t instanceCount, + uint32_t firstInstance, + VULKAN_HPP_NAMESPACE::Buffer counterBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NVX_binary_import === + + void cuLaunchKernelNVX( const VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX & launchInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_AMD_draw_indirect_count === + + void drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + void drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_dynamic_rendering === + + void beginRenderingKHR( const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo ) const VULKAN_HPP_NOEXCEPT; + + void endRenderingKHR() const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_device_group === + + void setDeviceMaskKHR( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT; + + void dispatchBaseKHR( uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_push_descriptor === + + void pushDescriptorSetKHR( + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + ArrayProxy const & descriptorWrites ) const VULKAN_HPP_NOEXCEPT; + + template + void pushDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + DataType const & data ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_conditional_rendering === + + void beginConditionalRenderingEXT( const VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT & + conditionalRenderingBegin ) const VULKAN_HPP_NOEXCEPT; + + void endConditionalRenderingEXT() const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_clip_space_w_scaling === + + void setViewportWScalingNV( uint32_t firstViewport, + ArrayProxy const & viewportWScalings ) + const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_discard_rectangles === + + void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, + ArrayProxy const & discardRectangles ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_create_renderpass2 === + + void beginRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin, + const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo ) const + VULKAN_HPP_NOEXCEPT; + + void nextSubpass2KHR( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo, + const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT; + + void endRenderPass2KHR( const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_debug_utils === + + void + beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT; + + void endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT; + + void insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_sample_locations === + + void setSampleLocationsEXT( const VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT & sampleLocationsInfo ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_acceleration_structure === + + void buildAccelerationStructuresKHR( + ArrayProxy const & infos, + ArrayProxy const & + pBuildRangeInfos ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + void buildAccelerationStructuresIndirectKHR( + ArrayProxy const & infos, + ArrayProxy const & indirectDeviceAddresses, + ArrayProxy const & indirectStrides, + ArrayProxy const & pMaxPrimitiveCounts ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + void copyAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info ) const + VULKAN_HPP_NOEXCEPT; + + void copyAccelerationStructureToMemoryKHR( + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info ) const VULKAN_HPP_NOEXCEPT; + + void copyMemoryToAccelerationStructureKHR( + const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT; + + void writeAccelerationStructuresPropertiesKHR( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_shading_rate_image === + + void bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView imageView, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT; + + void setViewportShadingRatePaletteNV( uint32_t firstViewport, + ArrayProxy const & + shadingRatePalettes ) const VULKAN_HPP_NOEXCEPT; + + void setCoarseSampleOrderNV( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType, + ArrayProxy const & + customSampleOrders ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_ray_tracing === + + void buildAccelerationStructureNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV & info, + VULKAN_HPP_NAMESPACE::Buffer instanceData, + VULKAN_HPP_NAMESPACE::DeviceSize instanceOffset, + VULKAN_HPP_NAMESPACE::Bool32 update, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, + VULKAN_HPP_NAMESPACE::Buffer scratch, + VULKAN_HPP_NAMESPACE::DeviceSize scratchOffset ) const VULKAN_HPP_NOEXCEPT; + + void copyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode ) const + VULKAN_HPP_NOEXCEPT; + + void traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer raygenShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize raygenShaderBindingOffset, + VULKAN_HPP_NAMESPACE::Buffer missShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingOffset, + VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingStride, + VULKAN_HPP_NAMESPACE::Buffer hitShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingOffset, + VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingStride, + VULKAN_HPP_NAMESPACE::Buffer callableShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingOffset, + VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingStride, + uint32_t width, + uint32_t height, + uint32_t depth ) const VULKAN_HPP_NOEXCEPT; + + void writeAccelerationStructuresPropertiesNV( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_draw_indirect_count === + + void drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + void drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_AMD_buffer_marker === + + void writeBufferMarkerAMD( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + uint32_t marker ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_mesh_shader === + + void drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask ) const VULKAN_HPP_NOEXCEPT; + + void drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + uint32_t drawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + void drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_scissor_exclusive === + + void setExclusiveScissorNV( uint32_t firstExclusiveScissor, + ArrayProxy const & exclusiveScissors ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_device_diagnostic_checkpoints === + + template + void setCheckpointNV( CheckpointMarkerType const & checkpointMarker ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_INTEL_performance_query === + + void setPerformanceMarkerINTEL( const VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL & markerInfo ) const; + + void setPerformanceStreamMarkerINTEL( + const VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL & markerInfo ) const; + + void setPerformanceOverrideINTEL( const VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL & overrideInfo ) const; + + //=== VK_KHR_fragment_shading_rate === + + void setFragmentShadingRateKHR( + const VULKAN_HPP_NAMESPACE::Extent2D & fragmentSize, + const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_line_rasterization === + + void setLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_extended_dynamic_state === + + void setCullModeEXT( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + void setFrontFaceEXT( VULKAN_HPP_NAMESPACE::FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT; + + void + setPrimitiveTopologyEXT( VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT; + + void setViewportWithCountEXT( ArrayProxy const & viewports ) const + VULKAN_HPP_NOEXCEPT; + + void setScissorWithCountEXT( ArrayProxy const & scissors ) const + VULKAN_HPP_NOEXCEPT; + + void bindVertexBuffers2EXT( + uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + ArrayProxy const & strides + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + void setDepthTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT; + + void setDepthWriteEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT; + + void setDepthCompareOpEXT( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT; + + void setDepthBoundsTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT; + + void setStencilTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT; + + void setStencilOpEXT( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + VULKAN_HPP_NAMESPACE::StencilOp failOp, + VULKAN_HPP_NAMESPACE::StencilOp passOp, + VULKAN_HPP_NAMESPACE::StencilOp depthFailOp, + VULKAN_HPP_NAMESPACE::CompareOp compareOp ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_device_generated_commands === + + void preprocessGeneratedCommandsNV( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT; + + void executeGeneratedCommandsNV( + VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT; + + void bindPipelineShaderGroupNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t groupIndex ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_encode_queue === + + void encodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR & encodeInfo ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_KHR_synchronization2 === + + void setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT; + + void resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask + VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + void waitEvents2KHR( ArrayProxy const & events, + ArrayProxy const & dependencyInfos ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + void pipelineBarrier2KHR( const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT; + + void writeTimestamp2KHR( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query ) const VULKAN_HPP_NOEXCEPT; + + void writeBufferMarker2AMD( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + uint32_t marker ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_fragment_shading_rate_enums === + + void setFragmentShadingRateEnumNV( + VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate, + const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_copy_commands2 === + + void copyBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT; + + void copyImage2KHR( const VULKAN_HPP_NAMESPACE::CopyImageInfo2 & copyImageInfo ) const VULKAN_HPP_NOEXCEPT; + + void copyBufferToImage2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 & copyBufferToImageInfo ) const + VULKAN_HPP_NOEXCEPT; + + void copyImageToBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 & copyImageToBufferInfo ) const + VULKAN_HPP_NOEXCEPT; + + void blitImage2KHR( const VULKAN_HPP_NAMESPACE::BlitImageInfo2 & blitImageInfo ) const VULKAN_HPP_NOEXCEPT; + + void + resolveImage2KHR( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_ray_tracing_pipeline === + + void traceRaysKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth ) const VULKAN_HPP_NOEXCEPT; + + void traceRaysIndirectKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable, + VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT; + + void setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_vertex_input_dynamic_state === + + void setVertexInputEXT( + ArrayProxy const & vertexBindingDescriptions, + ArrayProxy const & + vertexAttributeDescriptions ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_HUAWEI_subpass_shading === + + void subpassShadingHUAWEI() const VULKAN_HPP_NOEXCEPT; + + //=== VK_HUAWEI_invocation_mask === + + void bindInvocationMaskHUAWEI( VULKAN_HPP_NAMESPACE::ImageView imageView, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_extended_dynamic_state2 === + + void setPatchControlPointsEXT( uint32_t patchControlPoints ) const VULKAN_HPP_NOEXCEPT; + + void + setRasterizerDiscardEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT; + + void setDepthBiasEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT; + + void setLogicOpEXT( VULKAN_HPP_NAMESPACE::LogicOp logicOp ) const VULKAN_HPP_NOEXCEPT; + + void + setPrimitiveRestartEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_color_write_enable === + + void setColorWriteEnableEXT( ArrayProxy const & colorWriteEnables ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_multi_draw === + + void drawMultiEXT( ArrayProxy const & vertexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + void drawMultiIndexedEXT( ArrayProxy const & indexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + Optional vertexOffset + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::CommandPool m_commandPool = {}; + VULKAN_HPP_NAMESPACE::CommandBuffer m_commandBuffer = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class CommandBuffers : public std::vector + { + public: + CommandBuffers( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const & allocateInfo ) + { + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher(); + std::vector commandBuffers( allocateInfo.commandBufferCount ); + VULKAN_HPP_NAMESPACE::Result result = static_cast( + dispatcher->vkAllocateCommandBuffers( static_cast( *device ), + reinterpret_cast( &allocateInfo ), + commandBuffers.data() ) ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + this->reserve( allocateInfo.commandBufferCount ); + for ( auto const & commandBuffer : commandBuffers ) + { + this->emplace_back( device, commandBuffer, static_cast( allocateInfo.commandPool ) ); + } + } + else + { + throwResultException( result, "vkAllocateCommandBuffers" ); + } + } + + CommandBuffers() = delete; + CommandBuffers( CommandBuffers const & ) = delete; + CommandBuffers( CommandBuffers && rhs ) = default; + CommandBuffers & operator=( CommandBuffers const & ) = delete; + CommandBuffers & operator=( CommandBuffers && rhs ) = default; + }; + + class CuFunctionNVX + { + public: + using CType = VkCuFunctionNVX; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eCuFunctionNVX; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCuFunctionNVX; + + public: + CuFunctionNVX( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreateCuFunctionNVX( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_function ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateCuFunctionNVX" ); + } + } + + CuFunctionNVX( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkCuFunctionNVX function, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_function( function ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + CuFunctionNVX( std::nullptr_t ) {} + + ~CuFunctionNVX() + { + if ( m_function ) + { + getDispatcher()->vkDestroyCuFunctionNVX( static_cast( m_device ), + static_cast( m_function ), + reinterpret_cast( m_allocator ) ); + } + } + + CuFunctionNVX() = delete; + CuFunctionNVX( CuFunctionNVX const & ) = delete; + CuFunctionNVX( CuFunctionNVX && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_function( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_function, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + CuFunctionNVX & operator=( CuFunctionNVX const & ) = delete; + CuFunctionNVX & operator =( CuFunctionNVX && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_function ) + { + getDispatcher()->vkDestroyCuFunctionNVX( static_cast( m_device ), + static_cast( m_function ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_function = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_function, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::CuFunctionNVX const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_function; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::CuFunctionNVX m_function = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class CuModuleNVX + { + public: + using CType = VkCuModuleNVX; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eCuModuleNVX; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCuModuleNVX; + + public: + CuModuleNVX( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateCuModuleNVX( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_module ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateCuModuleNVX" ); + } + } + + CuModuleNVX( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkCuModuleNVX module, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_module( module ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + CuModuleNVX( std::nullptr_t ) {} + + ~CuModuleNVX() + { + if ( m_module ) + { + getDispatcher()->vkDestroyCuModuleNVX( static_cast( m_device ), + static_cast( m_module ), + reinterpret_cast( m_allocator ) ); + } + } + + CuModuleNVX() = delete; + CuModuleNVX( CuModuleNVX const & ) = delete; + CuModuleNVX( CuModuleNVX && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_module( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_module, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + CuModuleNVX & operator=( CuModuleNVX const & ) = delete; + CuModuleNVX & operator =( CuModuleNVX && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_module ) + { + getDispatcher()->vkDestroyCuModuleNVX( static_cast( m_device ), + static_cast( m_module ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_module = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_module, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::CuModuleNVX const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_module; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::CuModuleNVX m_module = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class DebugReportCallbackEXT + { + public: + using CType = VkDebugReportCallbackEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDebugReportCallbackEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDebugReportCallbackEXT; + + public: + DebugReportCallbackEXT( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateDebugReportCallbackEXT( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_callback ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateDebugReportCallbackEXT" ); + } + } + + DebugReportCallbackEXT( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VkDebugReportCallbackEXT callback, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_callback( callback ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + {} + + DebugReportCallbackEXT( std::nullptr_t ) {} + + ~DebugReportCallbackEXT() + { + if ( m_callback ) + { + getDispatcher()->vkDestroyDebugReportCallbackEXT( + static_cast( m_instance ), + static_cast( m_callback ), + reinterpret_cast( m_allocator ) ); + } + } + + DebugReportCallbackEXT() = delete; + DebugReportCallbackEXT( DebugReportCallbackEXT const & ) = delete; + DebugReportCallbackEXT( DebugReportCallbackEXT && rhs ) VULKAN_HPP_NOEXCEPT + : m_instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} ) ) + , m_callback( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_callback, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + DebugReportCallbackEXT & operator=( DebugReportCallbackEXT const & ) = delete; + DebugReportCallbackEXT & operator=( DebugReportCallbackEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_callback ) + { + getDispatcher()->vkDestroyDebugReportCallbackEXT( + static_cast( m_instance ), + static_cast( m_callback ), + reinterpret_cast( m_allocator ) ); + } + m_instance = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} ); + m_callback = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_callback, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_callback; + } + + VULKAN_HPP_NAMESPACE::Instance getInstance() const + { + return m_instance; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Instance m_instance = {}; + VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT m_callback = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher = nullptr; + }; + + class DebugUtilsMessengerEXT + { + public: + using CType = VkDebugUtilsMessengerEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDebugUtilsMessengerEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + DebugUtilsMessengerEXT( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateDebugUtilsMessengerEXT( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_messenger ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateDebugUtilsMessengerEXT" ); + } + } + + DebugUtilsMessengerEXT( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VkDebugUtilsMessengerEXT messenger, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_messenger( messenger ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + {} + + DebugUtilsMessengerEXT( std::nullptr_t ) {} + + ~DebugUtilsMessengerEXT() + { + if ( m_messenger ) + { + getDispatcher()->vkDestroyDebugUtilsMessengerEXT( + static_cast( m_instance ), + static_cast( m_messenger ), + reinterpret_cast( m_allocator ) ); + } + } + + DebugUtilsMessengerEXT() = delete; + DebugUtilsMessengerEXT( DebugUtilsMessengerEXT const & ) = delete; + DebugUtilsMessengerEXT( DebugUtilsMessengerEXT && rhs ) VULKAN_HPP_NOEXCEPT + : m_instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} ) ) + , m_messenger( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_messenger, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + DebugUtilsMessengerEXT & operator=( DebugUtilsMessengerEXT const & ) = delete; + DebugUtilsMessengerEXT & operator=( DebugUtilsMessengerEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_messenger ) + { + getDispatcher()->vkDestroyDebugUtilsMessengerEXT( + static_cast( m_instance ), + static_cast( m_messenger ), + reinterpret_cast( m_allocator ) ); + } + m_instance = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} ); + m_messenger = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_messenger, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_messenger; + } + + VULKAN_HPP_NAMESPACE::Instance getInstance() const + { + return m_instance; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Instance m_instance = {}; + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT m_messenger = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher = nullptr; + }; + + class DeferredOperationKHR + { + public: + using CType = VkDeferredOperationKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDeferredOperationKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + DeferredOperationKHR( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreateDeferredOperationKHR( + static_cast( *device ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_operation ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateDeferredOperationKHR" ); + } + } + + DeferredOperationKHR( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkDeferredOperationKHR operation, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_operation( operation ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + DeferredOperationKHR( std::nullptr_t ) {} + + ~DeferredOperationKHR() + { + if ( m_operation ) + { + getDispatcher()->vkDestroyDeferredOperationKHR( + static_cast( m_device ), + static_cast( m_operation ), + reinterpret_cast( m_allocator ) ); + } + } + + DeferredOperationKHR() = delete; + DeferredOperationKHR( DeferredOperationKHR const & ) = delete; + DeferredOperationKHR( DeferredOperationKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_operation( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_operation, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + DeferredOperationKHR & operator=( DeferredOperationKHR const & ) = delete; + DeferredOperationKHR & operator=( DeferredOperationKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_operation ) + { + getDispatcher()->vkDestroyDeferredOperationKHR( + static_cast( m_device ), + static_cast( m_operation ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_operation = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_operation, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DeferredOperationKHR const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_operation; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_KHR_deferred_host_operations === + + VULKAN_HPP_NODISCARD uint32_t getMaxConcurrency() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getResult() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result join() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::DeferredOperationKHR m_operation = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class DescriptorPool + { + public: + using CType = VkDescriptorPool; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorPool; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorPool; + + public: + DescriptorPool( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreateDescriptorPool( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_descriptorPool ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateDescriptorPool" ); + } + } + + DescriptorPool( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkDescriptorPool descriptorPool, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_descriptorPool( descriptorPool ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + DescriptorPool( std::nullptr_t ) {} + + ~DescriptorPool() + { + if ( m_descriptorPool ) + { + getDispatcher()->vkDestroyDescriptorPool( static_cast( m_device ), + static_cast( m_descriptorPool ), + reinterpret_cast( m_allocator ) ); + } + } + + DescriptorPool() = delete; + DescriptorPool( DescriptorPool const & ) = delete; + DescriptorPool( DescriptorPool && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_descriptorPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorPool, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + DescriptorPool & operator=( DescriptorPool const & ) = delete; + DescriptorPool & operator =( DescriptorPool && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_descriptorPool ) + { + getDispatcher()->vkDestroyDescriptorPool( static_cast( m_device ), + static_cast( m_descriptorPool ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_descriptorPool = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorPool, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DescriptorPool const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorPool; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_VERSION_1_0 === + + void reset( VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::DescriptorPool m_descriptorPool = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class DescriptorSet + { + public: + using CType = VkDescriptorSet; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorSet; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorSet; + + public: + DescriptorSet( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkDescriptorSet descriptorSet, + VkDescriptorPool descriptorPool ) + : m_device( *device ) + , m_descriptorPool( descriptorPool ) + , m_descriptorSet( descriptorSet ) + , m_dispatcher( device.getDispatcher() ) + {} + + DescriptorSet( std::nullptr_t ) {} + + ~DescriptorSet() + { + if ( m_descriptorSet ) + { + getDispatcher()->vkFreeDescriptorSets( static_cast( m_device ), + static_cast( m_descriptorPool ), + 1, + reinterpret_cast( &m_descriptorSet ) ); + } + } + + DescriptorSet() = delete; + DescriptorSet( DescriptorSet const & ) = delete; + DescriptorSet( DescriptorSet && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_descriptorPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorPool, {} ) ) + , m_descriptorSet( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorSet, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + DescriptorSet & operator=( DescriptorSet const & ) = delete; + DescriptorSet & operator =( DescriptorSet && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_descriptorSet ) + { + getDispatcher()->vkFreeDescriptorSets( static_cast( m_device ), + static_cast( m_descriptorPool ), + 1, + reinterpret_cast( &m_descriptorSet ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_descriptorPool = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorPool, {} ); + m_descriptorSet = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorSet, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DescriptorSet const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSet; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_VERSION_1_1 === + + template + void updateWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + DataType const & data ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_descriptor_update_template === + + template + void updateWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + DataType const & data ) const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::DescriptorPool m_descriptorPool = {}; + VULKAN_HPP_NAMESPACE::DescriptorSet m_descriptorSet = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class DescriptorSets : public std::vector + { + public: + DescriptorSets( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const & allocateInfo ) + { + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher(); + std::vector descriptorSets( allocateInfo.descriptorSetCount ); + VULKAN_HPP_NAMESPACE::Result result = static_cast( + dispatcher->vkAllocateDescriptorSets( static_cast( *device ), + reinterpret_cast( &allocateInfo ), + descriptorSets.data() ) ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + this->reserve( allocateInfo.descriptorSetCount ); + for ( auto const & descriptorSet : descriptorSets ) + { + this->emplace_back( device, descriptorSet, static_cast( allocateInfo.descriptorPool ) ); + } + } + else + { + throwResultException( result, "vkAllocateDescriptorSets" ); + } + } + + DescriptorSets() = delete; + DescriptorSets( DescriptorSets const & ) = delete; + DescriptorSets( DescriptorSets && rhs ) = default; + DescriptorSets & operator=( DescriptorSets const & ) = delete; + DescriptorSets & operator=( DescriptorSets && rhs ) = default; + }; + + class DescriptorSetLayout + { + public: + using CType = VkDescriptorSetLayout; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorSetLayout; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorSetLayout; + + public: + DescriptorSetLayout( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreateDescriptorSetLayout( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_descriptorSetLayout ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateDescriptorSetLayout" ); + } + } + + DescriptorSetLayout( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkDescriptorSetLayout descriptorSetLayout, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_descriptorSetLayout( descriptorSetLayout ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + DescriptorSetLayout( std::nullptr_t ) {} + + ~DescriptorSetLayout() + { + if ( m_descriptorSetLayout ) + { + getDispatcher()->vkDestroyDescriptorSetLayout( + static_cast( m_device ), + static_cast( m_descriptorSetLayout ), + reinterpret_cast( m_allocator ) ); + } + } + + DescriptorSetLayout() = delete; + DescriptorSetLayout( DescriptorSetLayout const & ) = delete; + DescriptorSetLayout( DescriptorSetLayout && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_descriptorSetLayout( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorSetLayout, + {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + DescriptorSetLayout & operator=( DescriptorSetLayout const & ) = delete; + DescriptorSetLayout & operator =( DescriptorSetLayout && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_descriptorSetLayout ) + { + getDispatcher()->vkDestroyDescriptorSetLayout( + static_cast( m_device ), + static_cast( m_descriptorSetLayout ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_descriptorSetLayout = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorSetLayout, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DescriptorSetLayout const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSetLayout; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::DescriptorSetLayout m_descriptorSetLayout = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class DescriptorUpdateTemplate + { + public: + using CType = VkDescriptorUpdateTemplate; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorUpdateTemplate; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorUpdateTemplate; + + public: + DescriptorUpdateTemplate( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreateDescriptorUpdateTemplate( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_descriptorUpdateTemplate ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateDescriptorUpdateTemplate" ); + } + } + + DescriptorUpdateTemplate( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_descriptorUpdateTemplate( descriptorUpdateTemplate ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + DescriptorUpdateTemplate( std::nullptr_t ) {} + + ~DescriptorUpdateTemplate() + { + if ( m_descriptorUpdateTemplate ) + { + getDispatcher()->vkDestroyDescriptorUpdateTemplate( + static_cast( m_device ), + static_cast( m_descriptorUpdateTemplate ), + reinterpret_cast( m_allocator ) ); + } + } + + DescriptorUpdateTemplate() = delete; + DescriptorUpdateTemplate( DescriptorUpdateTemplate const & ) = delete; + DescriptorUpdateTemplate( DescriptorUpdateTemplate && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_descriptorUpdateTemplate( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorUpdateTemplate, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + DescriptorUpdateTemplate & operator=( DescriptorUpdateTemplate const & ) = delete; + DescriptorUpdateTemplate & operator=( DescriptorUpdateTemplate && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_descriptorUpdateTemplate ) + { + getDispatcher()->vkDestroyDescriptorUpdateTemplate( + static_cast( m_device ), + static_cast( m_descriptorUpdateTemplate ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_descriptorUpdateTemplate = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorUpdateTemplate, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorUpdateTemplate; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate m_descriptorUpdateTemplate = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class DeviceMemory + { + public: + using CType = VkDeviceMemory; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDeviceMemory; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDeviceMemory; + + public: + DeviceMemory( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const & allocateInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkAllocateMemory( static_cast( *device ), + reinterpret_cast( &allocateInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_memory ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkAllocateMemory" ); + } + } + + DeviceMemory( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkDeviceMemory memory, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_memory( memory ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + DeviceMemory( std::nullptr_t ) {} + + ~DeviceMemory() + { + if ( m_memory ) + { + getDispatcher()->vkFreeMemory( static_cast( m_device ), + static_cast( m_memory ), + reinterpret_cast( m_allocator ) ); + } + } + + DeviceMemory() = delete; + DeviceMemory( DeviceMemory const & ) = delete; + DeviceMemory( DeviceMemory && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_memory( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_memory, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + DeviceMemory & operator=( DeviceMemory const & ) = delete; + DeviceMemory & operator =( DeviceMemory && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_memory ) + { + getDispatcher()->vkFreeMemory( static_cast( m_device ), + static_cast( m_memory ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_memory = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_memory, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DeviceMemory const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_memory; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_VERSION_1_0 === + + VULKAN_HPP_NODISCARD void * + mapMemory( VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::DeviceSize size, + VULKAN_HPP_NAMESPACE::MemoryMapFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const; + + void unmapMemory() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceSize getCommitment() const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + + VULKAN_HPP_NODISCARD HANDLE + getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType ) const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_pageable_device_local_memory === + + void setPriorityEXT( float priority ) const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory m_memory = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class DisplayKHR + { + public: + using CType = VkDisplayKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDisplayKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDisplayKHR; + + public: + DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice, + int32_t drmFd, + uint32_t connectorId ) + : m_physicalDevice( *physicalDevice ), m_dispatcher( physicalDevice.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + physicalDevice.getDispatcher()->vkGetDrmDisplayEXT( static_cast( *physicalDevice ), + drmFd, + connectorId, + reinterpret_cast( &m_display ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkGetDrmDisplayEXT" ); + } + } + +# if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice, + Display & dpy, + RROutput rrOutput ) + : m_physicalDevice( *physicalDevice ), m_dispatcher( physicalDevice.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( physicalDevice.getDispatcher()->vkGetRandROutputDisplayEXT( + static_cast( *physicalDevice ), + &dpy, + rrOutput, + reinterpret_cast( &m_display ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkGetRandROutputDisplayEXT" ); + } + } +# endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice, + uint32_t deviceRelativeId ) + : m_physicalDevice( *physicalDevice ), m_dispatcher( physicalDevice.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + physicalDevice.getDispatcher()->vkGetWinrtDisplayNV( static_cast( *physicalDevice ), + deviceRelativeId, + reinterpret_cast( &m_display ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkGetWinrtDisplayNV" ); + } + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice, + VkDisplayKHR display ) + : m_physicalDevice( *physicalDevice ), m_display( display ), m_dispatcher( physicalDevice.getDispatcher() ) + {} + + DisplayKHR( std::nullptr_t ) {} + + ~DisplayKHR() + { + if ( m_display ) + { + getDispatcher()->vkReleaseDisplayEXT( static_cast( m_physicalDevice ), + static_cast( m_display ) ); + } + } + + DisplayKHR() = delete; + DisplayKHR( DisplayKHR const & ) = delete; + DisplayKHR( DisplayKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_physicalDevice( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_physicalDevice, {} ) ) + , m_display( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_display, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + DisplayKHR & operator=( DisplayKHR const & ) = delete; + DisplayKHR & operator =( DisplayKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_display ) + { + getDispatcher()->vkReleaseDisplayEXT( static_cast( m_physicalDevice ), + static_cast( m_display ) ); + } + m_physicalDevice = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_physicalDevice, {} ); + m_display = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_display, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DisplayKHR const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_display; + } + + VULKAN_HPP_NAMESPACE::PhysicalDevice getPhysicalDevice() const + { + return m_physicalDevice; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_KHR_display === + + VULKAN_HPP_NODISCARD std::vector getModeProperties() const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::DisplayModeKHR createMode( + VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + //=== VK_KHR_get_display_properties2 === + + VULKAN_HPP_NODISCARD std::vector getModeProperties2() const; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + + void acquireWinrtNV() const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + private: + VULKAN_HPP_NAMESPACE::PhysicalDevice m_physicalDevice = {}; + VULKAN_HPP_NAMESPACE::DisplayKHR m_display = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher = nullptr; + }; + + class DisplayKHRs : public std::vector + { + public: + DisplayKHRs( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice, + uint32_t planeIndex ) + { + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * dispatcher = + physicalDevice.getDispatcher(); + std::vector displays; + uint32_t displayCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( dispatcher->vkGetDisplayPlaneSupportedDisplaysKHR( + static_cast( *physicalDevice ), planeIndex, &displayCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && displayCount ) + { + displays.resize( displayCount ); + result = static_cast( dispatcher->vkGetDisplayPlaneSupportedDisplaysKHR( + static_cast( *physicalDevice ), planeIndex, &displayCount, displays.data() ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( displayCount <= displays.size() ); + this->reserve( displayCount ); + for ( auto const & displayKHR : displays ) + { + this->emplace_back( physicalDevice, displayKHR ); + } + } + else + { + throwResultException( result, "vkGetDisplayPlaneSupportedDisplaysKHR" ); + } + } + + DisplayKHRs() = delete; + DisplayKHRs( DisplayKHRs const & ) = delete; + DisplayKHRs( DisplayKHRs && rhs ) = default; + DisplayKHRs & operator=( DisplayKHRs const & ) = delete; + DisplayKHRs & operator=( DisplayKHRs && rhs ) = default; + }; + + class DisplayModeKHR + { + public: + using CType = VkDisplayModeKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eDisplayModeKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDisplayModeKHR; + + public: + DisplayModeKHR( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const & display, + VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_physicalDevice( display.getPhysicalDevice() ), m_dispatcher( display.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( display.getDispatcher()->vkCreateDisplayModeKHR( + static_cast( display.getPhysicalDevice() ), + static_cast( *display ), + reinterpret_cast( &createInfo ), + reinterpret_cast( + static_cast( allocator ) ), + reinterpret_cast( &m_displayModeKHR ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateDisplayModeKHR" ); + } + } + + DisplayModeKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const & display, + VkDisplayModeKHR displayModeKHR ) + : m_physicalDevice( display.getPhysicalDevice() ) + , m_displayModeKHR( displayModeKHR ) + , m_dispatcher( display.getDispatcher() ) + {} + + DisplayModeKHR( std::nullptr_t ) {} + + DisplayModeKHR() = delete; + DisplayModeKHR( DisplayModeKHR const & ) = delete; + DisplayModeKHR( DisplayModeKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_physicalDevice( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_physicalDevice, {} ) ) + , m_displayModeKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_displayModeKHR, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + DisplayModeKHR & operator=( DisplayModeKHR const & ) = delete; + DisplayModeKHR & operator =( DisplayModeKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + m_physicalDevice = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_physicalDevice, {} ); + m_displayModeKHR = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_displayModeKHR, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DisplayModeKHR const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_displayModeKHR; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_KHR_display === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR + getDisplayPlaneCapabilities( uint32_t planeIndex ) const; + + private: + VULKAN_HPP_NAMESPACE::PhysicalDevice m_physicalDevice = {}; + VULKAN_HPP_NAMESPACE::DisplayModeKHR m_displayModeKHR = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher = nullptr; + }; + + class Event + { + public: + using CType = VkEvent; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eEvent; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eEvent; + + public: + Event( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::EventCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateEvent( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_event ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateEvent" ); + } + } + + Event( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkEvent event, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_event( event ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + Event( std::nullptr_t ) {} + + ~Event() + { + if ( m_event ) + { + getDispatcher()->vkDestroyEvent( static_cast( m_device ), + static_cast( m_event ), + reinterpret_cast( m_allocator ) ); + } + } + + Event() = delete; + Event( Event const & ) = delete; + Event( Event && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_event( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_event, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + Event & operator=( Event const & ) = delete; + Event & operator =( Event && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_event ) + { + getDispatcher()->vkDestroyEvent( static_cast( m_device ), + static_cast( m_event ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_event = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_event, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Event const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_event; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_VERSION_1_0 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getStatus() const; + + void set() const; + + void reset() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Event m_event = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class Fence + { + public: + using CType = VkFence; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eFence; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eFence; + + public: + Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::FenceCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateFence( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_fence ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateFence" ); + } + } + + Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const & deviceEventInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkRegisterDeviceEventEXT( + static_cast( *device ), + reinterpret_cast( &deviceEventInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_fence ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkRegisterDeviceEventEXT" ); + } + } + + Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const & display, + VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const & displayEventInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkRegisterDisplayEventEXT( + static_cast( *device ), + static_cast( *display ), + reinterpret_cast( &displayEventInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_fence ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkRegisterDisplayEventEXT" ); + } + } + + Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkFence fence, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_fence( fence ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + Fence( std::nullptr_t ) {} + + ~Fence() + { + if ( m_fence ) + { + getDispatcher()->vkDestroyFence( static_cast( m_device ), + static_cast( m_fence ), + reinterpret_cast( m_allocator ) ); + } + } + + Fence() = delete; + Fence( Fence const & ) = delete; + Fence( Fence && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_fence, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + Fence & operator=( Fence const & ) = delete; + Fence & operator =( Fence && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_fence ) + { + getDispatcher()->vkDestroyFence( static_cast( m_device ), + static_cast( m_fence ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_fence = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_fence, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Fence const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_fence; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_VERSION_1_0 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getStatus() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Fence m_fence = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class Framebuffer + { + public: + using CType = VkFramebuffer; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eFramebuffer; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eFramebuffer; + + public: + Framebuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateFramebuffer( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_framebuffer ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateFramebuffer" ); + } + } + + Framebuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkFramebuffer framebuffer, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_framebuffer( framebuffer ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + Framebuffer( std::nullptr_t ) {} + + ~Framebuffer() + { + if ( m_framebuffer ) + { + getDispatcher()->vkDestroyFramebuffer( static_cast( m_device ), + static_cast( m_framebuffer ), + reinterpret_cast( m_allocator ) ); + } + } + + Framebuffer() = delete; + Framebuffer( Framebuffer const & ) = delete; + Framebuffer( Framebuffer && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_framebuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_framebuffer, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + Framebuffer & operator=( Framebuffer const & ) = delete; + Framebuffer & operator =( Framebuffer && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_framebuffer ) + { + getDispatcher()->vkDestroyFramebuffer( static_cast( m_device ), + static_cast( m_framebuffer ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_framebuffer = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_framebuffer, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Framebuffer const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_framebuffer; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Framebuffer m_framebuffer = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class Image + { + public: + using CType = VkImage; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eImage; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eImage; + + public: + Image( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::ImageCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateImage( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_image ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateImage" ); + } + } + + Image( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkImage image, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_image( image ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + Image( std::nullptr_t ) {} + + ~Image() + { + if ( m_image ) + { + getDispatcher()->vkDestroyImage( static_cast( m_device ), + static_cast( m_image ), + reinterpret_cast( m_allocator ) ); + } + } + + Image() = delete; + Image( Image const & ) = delete; + Image( Image && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_image( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_image, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + Image & operator=( Image const & ) = delete; + Image & operator =( Image && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_image ) + { + getDispatcher()->vkDestroyImage( static_cast( m_device ), + static_cast( m_image ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_image = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_image, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Image const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_image; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_VERSION_1_0 === + + void bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements getMemoryRequirements() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD std::vector + getSparseMemoryRequirements() const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SubresourceLayout + getSubresourceLayout( const VULKAN_HPP_NAMESPACE::ImageSubresource & subresource ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_image_drm_format_modifier === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT + getDrmFormatModifierPropertiesEXT() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Image m_image = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class ImageView + { + public: + using CType = VkImageView; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eImageView; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eImageView; + + public: + ImageView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateImageView( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_imageView ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateImageView" ); + } + } + + ImageView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkImageView imageView, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_imageView( imageView ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + ImageView( std::nullptr_t ) {} + + ~ImageView() + { + if ( m_imageView ) + { + getDispatcher()->vkDestroyImageView( static_cast( m_device ), + static_cast( m_imageView ), + reinterpret_cast( m_allocator ) ); + } + } + + ImageView() = delete; + ImageView( ImageView const & ) = delete; + ImageView( ImageView && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_imageView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_imageView, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + ImageView & operator=( ImageView const & ) = delete; + ImageView & operator =( ImageView && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_imageView ) + { + getDispatcher()->vkDestroyImageView( static_cast( m_device ), + static_cast( m_imageView ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_imageView = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_imageView, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::ImageView const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_imageView; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_NVX_image_view_handle === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX getAddressNVX() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::ImageView m_imageView = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class IndirectCommandsLayoutNV + { + public: + using CType = VkIndirectCommandsLayoutNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eIndirectCommandsLayoutNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + IndirectCommandsLayoutNV( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreateIndirectCommandsLayoutNV( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_indirectCommandsLayout ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateIndirectCommandsLayoutNV" ); + } + } + + IndirectCommandsLayoutNV( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkIndirectCommandsLayoutNV indirectCommandsLayout, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_indirectCommandsLayout( indirectCommandsLayout ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + IndirectCommandsLayoutNV( std::nullptr_t ) {} + + ~IndirectCommandsLayoutNV() + { + if ( m_indirectCommandsLayout ) + { + getDispatcher()->vkDestroyIndirectCommandsLayoutNV( + static_cast( m_device ), + static_cast( m_indirectCommandsLayout ), + reinterpret_cast( m_allocator ) ); + } + } + + IndirectCommandsLayoutNV() = delete; + IndirectCommandsLayoutNV( IndirectCommandsLayoutNV const & ) = delete; + IndirectCommandsLayoutNV( IndirectCommandsLayoutNV && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_indirectCommandsLayout( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_indirectCommandsLayout, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + IndirectCommandsLayoutNV & operator=( IndirectCommandsLayoutNV const & ) = delete; + IndirectCommandsLayoutNV & operator=( IndirectCommandsLayoutNV && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_indirectCommandsLayout ) + { + getDispatcher()->vkDestroyIndirectCommandsLayoutNV( + static_cast( m_device ), + static_cast( m_indirectCommandsLayout ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_indirectCommandsLayout = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_indirectCommandsLayout, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayout; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV m_indirectCommandsLayout = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class PerformanceConfigurationINTEL + { + public: + using CType = VkPerformanceConfigurationINTEL; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::ePerformanceConfigurationINTEL; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + PerformanceConfigurationINTEL( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const & acquireInfo ) + : m_device( *device ), m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkAcquirePerformanceConfigurationINTEL( + static_cast( *device ), + reinterpret_cast( &acquireInfo ), + reinterpret_cast( &m_configuration ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkAcquirePerformanceConfigurationINTEL" ); + } + } + + PerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkPerformanceConfigurationINTEL configuration ) + : m_device( *device ), m_configuration( configuration ), m_dispatcher( device.getDispatcher() ) + {} + + PerformanceConfigurationINTEL( std::nullptr_t ) {} + + ~PerformanceConfigurationINTEL() + { + if ( m_configuration ) + { + getDispatcher()->vkReleasePerformanceConfigurationINTEL( + static_cast( m_device ), static_cast( m_configuration ) ); + } + } + + PerformanceConfigurationINTEL() = delete; + PerformanceConfigurationINTEL( PerformanceConfigurationINTEL const & ) = delete; + PerformanceConfigurationINTEL( PerformanceConfigurationINTEL && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_configuration( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_configuration, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + PerformanceConfigurationINTEL & operator=( PerformanceConfigurationINTEL const & ) = delete; + PerformanceConfigurationINTEL & operator=( PerformanceConfigurationINTEL && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_configuration ) + { + getDispatcher()->vkReleasePerformanceConfigurationINTEL( + static_cast( m_device ), static_cast( m_configuration ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_configuration = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_configuration, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_configuration; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL m_configuration = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class PipelineCache + { + public: + using CType = VkPipelineCache; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::ePipelineCache; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipelineCache; + + public: + PipelineCache( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreatePipelineCache( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_pipelineCache ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreatePipelineCache" ); + } + } + + PipelineCache( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkPipelineCache pipelineCache, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_pipelineCache( pipelineCache ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + PipelineCache( std::nullptr_t ) {} + + ~PipelineCache() + { + if ( m_pipelineCache ) + { + getDispatcher()->vkDestroyPipelineCache( static_cast( m_device ), + static_cast( m_pipelineCache ), + reinterpret_cast( m_allocator ) ); + } + } + + PipelineCache() = delete; + PipelineCache( PipelineCache const & ) = delete; + PipelineCache( PipelineCache && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_pipelineCache( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipelineCache, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + PipelineCache & operator=( PipelineCache const & ) = delete; + PipelineCache & operator =( PipelineCache && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_pipelineCache ) + { + getDispatcher()->vkDestroyPipelineCache( static_cast( m_device ), + static_cast( m_pipelineCache ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_pipelineCache = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipelineCache, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::PipelineCache const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineCache; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_VERSION_1_0 === + + VULKAN_HPP_NODISCARD std::vector getData() const; + + void merge( ArrayProxy const & srcCaches ) const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::PipelineCache m_pipelineCache = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class Pipeline + { + public: + using CType = VkPipeline; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::ePipeline; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipeline; + + public: + Pipeline( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + m_constructorSuccessCode = static_cast( getDispatcher()->vkCreateComputePipelines( + static_cast( *device ), + pipelineCache ? static_cast( **pipelineCache ) : 0, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_pipeline ) ) ); + if ( ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + throwResultException( m_constructorSuccessCode, "vkCreateComputePipelines" ); + } + } + + Pipeline( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + m_constructorSuccessCode = + static_cast( getDispatcher()->vkCreateGraphicsPipelines( + static_cast( *device ), + pipelineCache ? static_cast( **pipelineCache ) : 0, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_pipeline ) ) ); + if ( ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + throwResultException( m_constructorSuccessCode, "vkCreateGraphicsPipelines" ); + } + } + + Pipeline( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::Optional< + const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation, + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + m_constructorSuccessCode = + static_cast( getDispatcher()->vkCreateRayTracingPipelinesKHR( + static_cast( *device ), + deferredOperation ? static_cast( **deferredOperation ) : 0, + pipelineCache ? static_cast( **pipelineCache ) : 0, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_pipeline ) ) ); + if ( ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) && + ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) && + ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + throwResultException( m_constructorSuccessCode, "vkCreateRayTracingPipelinesKHR" ); + } + } + + Pipeline( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + m_constructorSuccessCode = + static_cast( getDispatcher()->vkCreateRayTracingPipelinesNV( + static_cast( *device ), + pipelineCache ? static_cast( **pipelineCache ) : 0, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_pipeline ) ) ); + if ( ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + throwResultException( m_constructorSuccessCode, "vkCreateRayTracingPipelinesNV" ); + } + } + + Pipeline( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkPipeline pipeline, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr, + VULKAN_HPP_NAMESPACE::Result successCode = VULKAN_HPP_NAMESPACE::Result::eSuccess ) + : m_device( *device ) + , m_pipeline( pipeline ) + , m_allocator( static_cast( allocator ) ) + , m_constructorSuccessCode( successCode ) + , m_dispatcher( device.getDispatcher() ) + {} + + Pipeline( std::nullptr_t ) {} + + ~Pipeline() + { + if ( m_pipeline ) + { + getDispatcher()->vkDestroyPipeline( static_cast( m_device ), + static_cast( m_pipeline ), + reinterpret_cast( m_allocator ) ); + } + } + + Pipeline() = delete; + Pipeline( Pipeline const & ) = delete; + Pipeline( Pipeline && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_pipeline( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipeline, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + Pipeline & operator=( Pipeline const & ) = delete; + Pipeline & operator =( Pipeline && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_pipeline ) + { + getDispatcher()->vkDestroyPipeline( static_cast( m_device ), + static_cast( m_pipeline ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_pipeline = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipeline, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Pipeline const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_pipeline; + } + + VULKAN_HPP_NAMESPACE::Result getConstructorSuccessCode() const + { + return m_constructorSuccessCode; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_AMD_shader_info === + + VULKAN_HPP_NODISCARD std::vector + getShaderInfoAMD( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage, + VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType ) const; + + //=== VK_NV_ray_tracing === + + template + VULKAN_HPP_NODISCARD std::vector + getRayTracingShaderGroupHandlesNV( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const; + + template + VULKAN_HPP_NODISCARD DataType getRayTracingShaderGroupHandleNV( uint32_t firstGroup, uint32_t groupCount ) const; + + void compileDeferredNV( uint32_t shader ) const; + + //=== VK_KHR_ray_tracing_pipeline === + + template + VULKAN_HPP_NODISCARD std::vector + getRayTracingShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const; + + template + VULKAN_HPP_NODISCARD DataType getRayTracingShaderGroupHandleKHR( uint32_t firstGroup, uint32_t groupCount ) const; + + template + VULKAN_HPP_NODISCARD std::vector getRayTracingCaptureReplayShaderGroupHandlesKHR( + uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const; + + template + VULKAN_HPP_NODISCARD DataType getRayTracingCaptureReplayShaderGroupHandleKHR( uint32_t firstGroup, + uint32_t groupCount ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceSize getRayTracingShaderGroupStackSizeKHR( + uint32_t group, VULKAN_HPP_NAMESPACE::ShaderGroupShaderKHR groupShader ) const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Pipeline m_pipeline = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::Result m_constructorSuccessCode; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class Pipelines : public std::vector + { + public: + Pipelines( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::ArrayProxy const & createInfos, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + { + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher(); + std::vector pipelines( createInfos.size() ); + VULKAN_HPP_NAMESPACE::Result result = + static_cast( dispatcher->vkCreateComputePipelines( + static_cast( *device ), + pipelineCache ? static_cast( **pipelineCache ) : 0, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + pipelines.data() ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) || + ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + this->reserve( createInfos.size() ); + for ( auto const & pipeline : pipelines ) + { + this->emplace_back( device, pipeline, allocator, result ); + } + } + else + { + throwResultException( result, "vkCreateComputePipelines" ); + } + } + + Pipelines( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::ArrayProxy const & createInfos, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + { + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher(); + std::vector pipelines( createInfos.size() ); + VULKAN_HPP_NAMESPACE::Result result = + static_cast( dispatcher->vkCreateGraphicsPipelines( + static_cast( *device ), + pipelineCache ? static_cast( **pipelineCache ) : 0, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + pipelines.data() ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) || + ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + this->reserve( createInfos.size() ); + for ( auto const & pipeline : pipelines ) + { + this->emplace_back( device, pipeline, allocator, result ); + } + } + else + { + throwResultException( result, "vkCreateGraphicsPipelines" ); + } + } + + Pipelines( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::Optional< + const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation, + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::ArrayProxy const & createInfos, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + { + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher(); + std::vector pipelines( createInfos.size() ); + VULKAN_HPP_NAMESPACE::Result result = + static_cast( dispatcher->vkCreateRayTracingPipelinesKHR( + static_cast( *device ), + deferredOperation ? static_cast( **deferredOperation ) : 0, + pipelineCache ? static_cast( **pipelineCache ) : 0, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + pipelines.data() ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) || + ( result == VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) || + ( result == VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) || + ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + this->reserve( createInfos.size() ); + for ( auto const & pipeline : pipelines ) + { + this->emplace_back( device, pipeline, allocator, result ); + } + } + else + { + throwResultException( result, "vkCreateRayTracingPipelinesKHR" ); + } + } + + Pipelines( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::ArrayProxy const & createInfos, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + { + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher(); + std::vector pipelines( createInfos.size() ); + VULKAN_HPP_NAMESPACE::Result result = + static_cast( dispatcher->vkCreateRayTracingPipelinesNV( + static_cast( *device ), + pipelineCache ? static_cast( **pipelineCache ) : 0, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + pipelines.data() ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) || + ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) + { + this->reserve( createInfos.size() ); + for ( auto const & pipeline : pipelines ) + { + this->emplace_back( device, pipeline, allocator, result ); + } + } + else + { + throwResultException( result, "vkCreateRayTracingPipelinesNV" ); + } + } + + Pipelines() = delete; + Pipelines( Pipelines const & ) = delete; + Pipelines( Pipelines && rhs ) = default; + Pipelines & operator=( Pipelines const & ) = delete; + Pipelines & operator=( Pipelines && rhs ) = default; + }; + + class PipelineLayout + { + public: + using CType = VkPipelineLayout; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::ePipelineLayout; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipelineLayout; + + public: + PipelineLayout( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreatePipelineLayout( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_pipelineLayout ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreatePipelineLayout" ); + } + } + + PipelineLayout( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkPipelineLayout pipelineLayout, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_pipelineLayout( pipelineLayout ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + PipelineLayout( std::nullptr_t ) {} + + ~PipelineLayout() + { + if ( m_pipelineLayout ) + { + getDispatcher()->vkDestroyPipelineLayout( static_cast( m_device ), + static_cast( m_pipelineLayout ), + reinterpret_cast( m_allocator ) ); + } + } + + PipelineLayout() = delete; + PipelineLayout( PipelineLayout const & ) = delete; + PipelineLayout( PipelineLayout && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_pipelineLayout( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipelineLayout, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + PipelineLayout & operator=( PipelineLayout const & ) = delete; + PipelineLayout & operator =( PipelineLayout && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_pipelineLayout ) + { + getDispatcher()->vkDestroyPipelineLayout( static_cast( m_device ), + static_cast( m_pipelineLayout ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_pipelineLayout = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipelineLayout, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::PipelineLayout const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineLayout; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::PipelineLayout m_pipelineLayout = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class PrivateDataSlot + { + public: + using CType = VkPrivateDataSlot; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::ePrivateDataSlot; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + PrivateDataSlot( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreatePrivateDataSlot( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_privateDataSlot ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreatePrivateDataSlot" ); + } + } + + PrivateDataSlot( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkPrivateDataSlot privateDataSlot, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_privateDataSlot( privateDataSlot ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + PrivateDataSlot( std::nullptr_t ) {} + + ~PrivateDataSlot() + { + if ( m_privateDataSlot ) + { + getDispatcher()->vkDestroyPrivateDataSlot( static_cast( m_device ), + static_cast( m_privateDataSlot ), + reinterpret_cast( m_allocator ) ); + } + } + + PrivateDataSlot() = delete; + PrivateDataSlot( PrivateDataSlot const & ) = delete; + PrivateDataSlot( PrivateDataSlot && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_privateDataSlot( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_privateDataSlot, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + PrivateDataSlot & operator=( PrivateDataSlot const & ) = delete; + PrivateDataSlot & operator =( PrivateDataSlot && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_privateDataSlot ) + { + getDispatcher()->vkDestroyPrivateDataSlot( static_cast( m_device ), + static_cast( m_privateDataSlot ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_privateDataSlot = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_privateDataSlot, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::PrivateDataSlot const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_privateDataSlot; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::PrivateDataSlot m_privateDataSlot = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class QueryPool + { + public: + using CType = VkQueryPool; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eQueryPool; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eQueryPool; + + public: + QueryPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateQueryPool( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_queryPool ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateQueryPool" ); + } + } + + QueryPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkQueryPool queryPool, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_queryPool( queryPool ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + QueryPool( std::nullptr_t ) {} + + ~QueryPool() + { + if ( m_queryPool ) + { + getDispatcher()->vkDestroyQueryPool( static_cast( m_device ), + static_cast( m_queryPool ), + reinterpret_cast( m_allocator ) ); + } + } + + QueryPool() = delete; + QueryPool( QueryPool const & ) = delete; + QueryPool( QueryPool && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_queryPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_queryPool, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + QueryPool & operator=( QueryPool const & ) = delete; + QueryPool & operator =( QueryPool && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_queryPool ) + { + getDispatcher()->vkDestroyQueryPool( static_cast( m_device ), + static_cast( m_queryPool ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_queryPool = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_queryPool, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::QueryPool const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_queryPool; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_VERSION_1_0 === + + template + VULKAN_HPP_NODISCARD std::pair> + getResults( uint32_t firstQuery, + uint32_t queryCount, + size_t dataSize, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const; + + template + VULKAN_HPP_NODISCARD std::pair + getResult( uint32_t firstQuery, + uint32_t queryCount, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const; + + //=== VK_VERSION_1_2 === + + void reset( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_host_query_reset === + + void resetEXT( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::QueryPool m_queryPool = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class Queue + { + public: + using CType = VkQueue; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eQueue; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eQueue; + + public: + Queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + uint32_t queueFamilyIndex, + uint32_t queueIndex ) + : m_dispatcher( device.getDispatcher() ) + { + getDispatcher()->vkGetDeviceQueue( + static_cast( *device ), queueFamilyIndex, queueIndex, reinterpret_cast( &m_queue ) ); + } + + Queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const & queueInfo ) + : m_dispatcher( device.getDispatcher() ) + { + getDispatcher()->vkGetDeviceQueue2( static_cast( *device ), + reinterpret_cast( &queueInfo ), + reinterpret_cast( &m_queue ) ); + } + + Queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, VkQueue queue ) + : m_queue( queue ), m_dispatcher( device.getDispatcher() ) + {} + + Queue( std::nullptr_t ) {} + + Queue() = delete; + Queue( Queue const & ) = delete; + Queue( Queue && rhs ) VULKAN_HPP_NOEXCEPT + : m_queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_queue, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + Queue & operator=( Queue const & ) = delete; + Queue & operator =( Queue && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + m_queue = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_queue, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Queue const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_queue; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_VERSION_1_0 === + + void submit( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const; + + void waitIdle() const; + + void bindSparse( ArrayProxy const & bindInfo, + VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const; + + //=== VK_VERSION_1_3 === + + void submit2( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const; + + //=== VK_KHR_swapchain === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result + presentKHR( const VULKAN_HPP_NAMESPACE::PresentInfoKHR & presentInfo ) const; + + //=== VK_EXT_debug_utils === + + void + beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT; + + void endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT; + + void insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_device_diagnostic_checkpoints === + + VULKAN_HPP_NODISCARD std::vector + getCheckpointDataNV() const VULKAN_HPP_NOEXCEPT; + + //=== VK_INTEL_performance_query === + + void setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration ) const; + + //=== VK_KHR_synchronization2 === + + void submit2KHR( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const; + + VULKAN_HPP_NODISCARD std::vector + getCheckpointData2NV() const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Queue m_queue = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class RenderPass + { + public: + using CType = VkRenderPass; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eRenderPass; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eRenderPass; + + public: + RenderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateRenderPass( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_renderPass ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateRenderPass" ); + } + } + + RenderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateRenderPass2( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_renderPass ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateRenderPass2" ); + } + } + + RenderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkRenderPass renderPass, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_renderPass( renderPass ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + RenderPass( std::nullptr_t ) {} + + ~RenderPass() + { + if ( m_renderPass ) + { + getDispatcher()->vkDestroyRenderPass( static_cast( m_device ), + static_cast( m_renderPass ), + reinterpret_cast( m_allocator ) ); + } + } + + RenderPass() = delete; + RenderPass( RenderPass const & ) = delete; + RenderPass( RenderPass && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_renderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_renderPass, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + RenderPass & operator=( RenderPass const & ) = delete; + RenderPass & operator =( RenderPass && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_renderPass ) + { + getDispatcher()->vkDestroyRenderPass( static_cast( m_device ), + static_cast( m_renderPass ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_renderPass = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_renderPass, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::RenderPass const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_renderPass; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_VERSION_1_0 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Extent2D getRenderAreaGranularity() const VULKAN_HPP_NOEXCEPT; + + //=== VK_HUAWEI_subpass_shading === + + VULKAN_HPP_NODISCARD std::pair + getSubpassShadingMaxWorkgroupSizeHUAWEI() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::RenderPass m_renderPass = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class Sampler + { + public: + using CType = VkSampler; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eSampler; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSampler; + + public: + Sampler( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::SamplerCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateSampler( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_sampler ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateSampler" ); + } + } + + Sampler( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkSampler sampler, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_sampler( sampler ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + Sampler( std::nullptr_t ) {} + + ~Sampler() + { + if ( m_sampler ) + { + getDispatcher()->vkDestroySampler( static_cast( m_device ), + static_cast( m_sampler ), + reinterpret_cast( m_allocator ) ); + } + } + + Sampler() = delete; + Sampler( Sampler const & ) = delete; + Sampler( Sampler && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_sampler( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_sampler, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + Sampler & operator=( Sampler const & ) = delete; + Sampler & operator =( Sampler && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_sampler ) + { + getDispatcher()->vkDestroySampler( static_cast( m_device ), + static_cast( m_sampler ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_sampler = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_sampler, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Sampler const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_sampler; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Sampler m_sampler = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class SamplerYcbcrConversion + { + public: + using CType = VkSamplerYcbcrConversion; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eSamplerYcbcrConversion; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSamplerYcbcrConversion; + + public: + SamplerYcbcrConversion( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreateSamplerYcbcrConversion( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_ycbcrConversion ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateSamplerYcbcrConversion" ); + } + } + + SamplerYcbcrConversion( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkSamplerYcbcrConversion ycbcrConversion, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_ycbcrConversion( ycbcrConversion ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + SamplerYcbcrConversion( std::nullptr_t ) {} + + ~SamplerYcbcrConversion() + { + if ( m_ycbcrConversion ) + { + getDispatcher()->vkDestroySamplerYcbcrConversion( + static_cast( m_device ), + static_cast( m_ycbcrConversion ), + reinterpret_cast( m_allocator ) ); + } + } + + SamplerYcbcrConversion() = delete; + SamplerYcbcrConversion( SamplerYcbcrConversion const & ) = delete; + SamplerYcbcrConversion( SamplerYcbcrConversion && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_ycbcrConversion( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_ycbcrConversion, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + SamplerYcbcrConversion & operator=( SamplerYcbcrConversion const & ) = delete; + SamplerYcbcrConversion & operator=( SamplerYcbcrConversion && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_ycbcrConversion ) + { + getDispatcher()->vkDestroySamplerYcbcrConversion( + static_cast( m_device ), + static_cast( m_ycbcrConversion ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_ycbcrConversion = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_ycbcrConversion, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_ycbcrConversion; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion m_ycbcrConversion = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class Semaphore + { + public: + using CType = VkSemaphore; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eSemaphore; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSemaphore; + + public: + Semaphore( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateSemaphore( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_semaphore ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateSemaphore" ); + } + } + + Semaphore( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkSemaphore semaphore, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_semaphore( semaphore ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + Semaphore( std::nullptr_t ) {} + + ~Semaphore() + { + if ( m_semaphore ) + { + getDispatcher()->vkDestroySemaphore( static_cast( m_device ), + static_cast( m_semaphore ), + reinterpret_cast( m_allocator ) ); + } + } + + Semaphore() = delete; + Semaphore( Semaphore const & ) = delete; + Semaphore( Semaphore && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_semaphore( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_semaphore, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + Semaphore & operator=( Semaphore const & ) = delete; + Semaphore & operator =( Semaphore && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_semaphore ) + { + getDispatcher()->vkDestroySemaphore( static_cast( m_device ), + static_cast( m_semaphore ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_semaphore = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_semaphore, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Semaphore const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_semaphore; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_VERSION_1_2 === + + VULKAN_HPP_NODISCARD uint64_t getCounterValue() const; + + //=== VK_KHR_timeline_semaphore === + + VULKAN_HPP_NODISCARD uint64_t getCounterValueKHR() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Semaphore m_semaphore = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class ShaderModule + { + public: + using CType = VkShaderModule; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eShaderModule; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eShaderModule; + + public: + ShaderModule( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreateShaderModule( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_shaderModule ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateShaderModule" ); + } + } + + ShaderModule( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkShaderModule shaderModule, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_shaderModule( shaderModule ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + ShaderModule( std::nullptr_t ) {} + + ~ShaderModule() + { + if ( m_shaderModule ) + { + getDispatcher()->vkDestroyShaderModule( static_cast( m_device ), + static_cast( m_shaderModule ), + reinterpret_cast( m_allocator ) ); + } + } + + ShaderModule() = delete; + ShaderModule( ShaderModule const & ) = delete; + ShaderModule( ShaderModule && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_shaderModule( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_shaderModule, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + ShaderModule & operator=( ShaderModule const & ) = delete; + ShaderModule & operator =( ShaderModule && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_shaderModule ) + { + getDispatcher()->vkDestroyShaderModule( static_cast( m_device ), + static_cast( m_shaderModule ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_shaderModule = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_shaderModule, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::ShaderModule const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_shaderModule; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::ShaderModule m_shaderModule = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class SurfaceKHR + { + public: + using CType = VkSurfaceKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eSurfaceKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSurfaceKHR; + + public: +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateAndroidSurfaceKHR( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_surface ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateAndroidSurfaceKHR" ); + } + } +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateDirectFBSurfaceEXT( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_surface ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateDirectFBSurfaceEXT" ); + } + } +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateDisplayPlaneSurfaceKHR( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_surface ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateDisplayPlaneSurfaceKHR" ); + } + } + + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateHeadlessSurfaceEXT( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_surface ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateHeadlessSurfaceEXT" ); + } + } + +# if defined( VK_USE_PLATFORM_IOS_MVK ) + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateIOSSurfaceMVK( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_surface ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateIOSSurfaceMVK" ); + } + } +# endif /*VK_USE_PLATFORM_IOS_MVK*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateImagePipeSurfaceFUCHSIA( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_surface ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateImagePipeSurfaceFUCHSIA" ); + } + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_MACOS_MVK ) + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateMacOSSurfaceMVK( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_surface ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateMacOSSurfaceMVK" ); + } + } +# endif /*VK_USE_PLATFORM_MACOS_MVK*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateMetalSurfaceEXT( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_surface ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateMetalSurfaceEXT" ); + } + } +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateScreenSurfaceQNX( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_surface ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateScreenSurfaceQNX" ); + } + } +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + +# if defined( VK_USE_PLATFORM_GGP ) + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateStreamDescriptorSurfaceGGP( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_surface ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateStreamDescriptorSurfaceGGP" ); + } + } +# endif /*VK_USE_PLATFORM_GGP*/ + +# if defined( VK_USE_PLATFORM_VI_NN ) + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateViSurfaceNN( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_surface ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateViSurfaceNN" ); + } + } +# endif /*VK_USE_PLATFORM_VI_NN*/ + +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateWaylandSurfaceKHR( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_surface ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateWaylandSurfaceKHR" ); + } + } +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateWin32SurfaceKHR( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_surface ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateWin32SurfaceKHR" ); + } + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_XCB_KHR ) + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateXcbSurfaceKHR( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_surface ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateXcbSurfaceKHR" ); + } + } +# endif /*VK_USE_PLATFORM_XCB_KHR*/ + +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( instance.getDispatcher()->vkCreateXlibSurfaceKHR( + static_cast( *instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_surface ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateXlibSurfaceKHR" ); + } + } +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ + + SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, + VkSurfaceKHR surface, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_instance( *instance ) + , m_surface( surface ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + {} + + SurfaceKHR( std::nullptr_t ) {} + + ~SurfaceKHR() + { + if ( m_surface ) + { + getDispatcher()->vkDestroySurfaceKHR( static_cast( m_instance ), + static_cast( m_surface ), + reinterpret_cast( m_allocator ) ); + } + } + + SurfaceKHR() = delete; + SurfaceKHR( SurfaceKHR const & ) = delete; + SurfaceKHR( SurfaceKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} ) ) + , m_surface( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_surface, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + SurfaceKHR & operator=( SurfaceKHR const & ) = delete; + SurfaceKHR & operator =( SurfaceKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_surface ) + { + getDispatcher()->vkDestroySurfaceKHR( static_cast( m_instance ), + static_cast( m_surface ), + reinterpret_cast( m_allocator ) ); + } + m_instance = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} ); + m_surface = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_surface, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::SurfaceKHR const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_surface; + } + + VULKAN_HPP_NAMESPACE::Instance getInstance() const + { + return m_instance; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + private: + VULKAN_HPP_NAMESPACE::Instance m_instance = {}; + VULKAN_HPP_NAMESPACE::SurfaceKHR m_surface = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher = nullptr; + }; + + class SwapchainKHR + { + public: + using CType = VkSwapchainKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eSwapchainKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSwapchainKHR; + + public: + SwapchainKHR( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreateSwapchainKHR( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_swapchain ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateSwapchainKHR" ); + } + } + + SwapchainKHR( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkSwapchainKHR swapchain, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_swapchain( swapchain ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + SwapchainKHR( std::nullptr_t ) {} + + ~SwapchainKHR() + { + if ( m_swapchain ) + { + getDispatcher()->vkDestroySwapchainKHR( static_cast( m_device ), + static_cast( m_swapchain ), + reinterpret_cast( m_allocator ) ); + } + } + + SwapchainKHR() = delete; + SwapchainKHR( SwapchainKHR const & ) = delete; + SwapchainKHR( SwapchainKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_swapchain( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_swapchain, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + SwapchainKHR & operator=( SwapchainKHR const & ) = delete; + SwapchainKHR & operator =( SwapchainKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_swapchain ) + { + getDispatcher()->vkDestroySwapchainKHR( static_cast( m_device ), + static_cast( m_swapchain ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_swapchain = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_swapchain, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::SwapchainKHR const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_swapchain; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_KHR_swapchain === + + VULKAN_HPP_NODISCARD std::vector getImages() const; + + VULKAN_HPP_NODISCARD std::pair + acquireNextImage( uint64_t timeout, + VULKAN_HPP_NAMESPACE::Semaphore semaphore VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const; + + //=== VK_EXT_display_control === + + VULKAN_HPP_NODISCARD uint64_t getCounterEXT( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter ) const; + + //=== VK_GOOGLE_display_timing === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE getRefreshCycleDurationGOOGLE() const; + + VULKAN_HPP_NODISCARD std::vector + getPastPresentationTimingGOOGLE() const; + + //=== VK_KHR_shared_presentable_image === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getStatus() const; + + //=== VK_AMD_display_native_hdr === + + void setLocalDimmingAMD( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_present_wait === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result waitForPresent( uint64_t presentId, uint64_t timeout ) const; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + void acquireFullScreenExclusiveModeEXT() const; + + void releaseFullScreenExclusiveModeEXT() const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::SwapchainKHR m_swapchain = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + class SwapchainKHRs : public std::vector + { + public: + SwapchainKHRs( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::ArrayProxy const & createInfos, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + { + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher(); + std::vector swapchains( createInfos.size() ); + VULKAN_HPP_NAMESPACE::Result result = + static_cast( dispatcher->vkCreateSharedSwapchainsKHR( + static_cast( *device ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( + static_cast( allocator ) ), + swapchains.data() ) ); + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + this->reserve( createInfos.size() ); + for ( auto const & swapchainKHR : swapchains ) + { + this->emplace_back( device, swapchainKHR, allocator ); + } + } + else + { + throwResultException( result, "vkCreateSharedSwapchainsKHR" ); + } + } + + SwapchainKHRs() = delete; + SwapchainKHRs( SwapchainKHRs const & ) = delete; + SwapchainKHRs( SwapchainKHRs && rhs ) = default; + SwapchainKHRs & operator=( SwapchainKHRs const & ) = delete; + SwapchainKHRs & operator=( SwapchainKHRs && rhs ) = default; + }; + + class ValidationCacheEXT + { + public: + using CType = VkValidationCacheEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eValidationCacheEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eValidationCacheEXT; + + public: + ValidationCacheEXT( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreateValidationCacheEXT( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_validationCache ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateValidationCacheEXT" ); + } + } + + ValidationCacheEXT( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkValidationCacheEXT validationCache, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_validationCache( validationCache ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + ValidationCacheEXT( std::nullptr_t ) {} + + ~ValidationCacheEXT() + { + if ( m_validationCache ) + { + getDispatcher()->vkDestroyValidationCacheEXT( + static_cast( m_device ), + static_cast( m_validationCache ), + reinterpret_cast( m_allocator ) ); + } + } + + ValidationCacheEXT() = delete; + ValidationCacheEXT( ValidationCacheEXT const & ) = delete; + ValidationCacheEXT( ValidationCacheEXT && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_validationCache( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_validationCache, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + ValidationCacheEXT & operator=( ValidationCacheEXT const & ) = delete; + ValidationCacheEXT & operator =( ValidationCacheEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_validationCache ) + { + getDispatcher()->vkDestroyValidationCacheEXT( + static_cast( m_device ), + static_cast( m_validationCache ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_validationCache = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_validationCache, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::ValidationCacheEXT const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_validationCache; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_EXT_validation_cache === + + void merge( ArrayProxy const & srcCaches ) const; + + VULKAN_HPP_NODISCARD std::vector getData() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::ValidationCacheEXT m_validationCache = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + class VideoSessionKHR + { + public: + using CType = VkVideoSessionKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eVideoSessionKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + VideoSessionKHR( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreateVideoSessionKHR( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_videoSession ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateVideoSessionKHR" ); + } + } + + VideoSessionKHR( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkVideoSessionKHR videoSession, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_videoSession( videoSession ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + VideoSessionKHR( std::nullptr_t ) {} + + ~VideoSessionKHR() + { + if ( m_videoSession ) + { + getDispatcher()->vkDestroyVideoSessionKHR( static_cast( m_device ), + static_cast( m_videoSession ), + reinterpret_cast( m_allocator ) ); + } + } + + VideoSessionKHR() = delete; + VideoSessionKHR( VideoSessionKHR const & ) = delete; + VideoSessionKHR( VideoSessionKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_videoSession( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_videoSession, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + VideoSessionKHR & operator=( VideoSessionKHR const & ) = delete; + VideoSessionKHR & operator =( VideoSessionKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_videoSession ) + { + getDispatcher()->vkDestroyVideoSessionKHR( static_cast( m_device ), + static_cast( m_videoSession ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_videoSession = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_videoSession, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::VideoSessionKHR const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_videoSession; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_KHR_video_queue === + + VULKAN_HPP_NODISCARD std::vector getMemoryRequirements() const; + + void + bindMemory( ArrayProxy const & videoSessionBindMemories ) const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::VideoSessionKHR m_videoSession = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + class VideoSessionParametersKHR + { + public: + using CType = VkVideoSessionParametersKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = + VULKAN_HPP_NAMESPACE::ObjectType::eVideoSessionParametersKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + VideoSessionParametersKHR( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( device.getDispatcher()->vkCreateVideoSessionParametersKHR( + static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_videoSessionParameters ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, "vkCreateVideoSessionParametersKHR" ); + } + } + + VideoSessionParametersKHR( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkVideoSessionParametersKHR videoSessionParameters, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_videoSessionParameters( videoSessionParameters ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + {} + + VideoSessionParametersKHR( std::nullptr_t ) {} + + ~VideoSessionParametersKHR() + { + if ( m_videoSessionParameters ) + { + getDispatcher()->vkDestroyVideoSessionParametersKHR( + static_cast( m_device ), + static_cast( m_videoSessionParameters ), + reinterpret_cast( m_allocator ) ); + } + } + + VideoSessionParametersKHR() = delete; + VideoSessionParametersKHR( VideoSessionParametersKHR const & ) = delete; + VideoSessionParametersKHR( VideoSessionParametersKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_videoSessionParameters( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_videoSessionParameters, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + {} + VideoSessionParametersKHR & operator=( VideoSessionParametersKHR const & ) = delete; + VideoSessionParametersKHR & operator=( VideoSessionParametersKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + if ( m_videoSessionParameters ) + { + getDispatcher()->vkDestroyVideoSessionParametersKHR( + static_cast( m_device ), + static_cast( m_videoSessionParameters ), + reinterpret_cast( m_allocator ) ); + } + m_device = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ); + m_videoSessionParameters = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_videoSessionParameters, {} ); + m_allocator = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ); + m_dispatcher = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionParameters; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + //=== VK_KHR_video_queue === + + void update( const VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR & updateInfo ) const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR m_videoSessionParameters = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = nullptr; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=========================== + //=== COMMAND Definitions === + //=========================== + + //=== VK_VERSION_1_0 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Instance Context::createInstance( + VULKAN_HPP_NAMESPACE::InstanceCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Instance( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Instance::enumeratePhysicalDevices() const + { + return VULKAN_HPP_RAII_NAMESPACE::PhysicalDevices( *this ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures + PhysicalDevice::getFeatures() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features; + getDispatcher()->vkGetPhysicalDeviceFeatures( static_cast( m_physicalDevice ), + reinterpret_cast( &features ) ); + return features; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties + PhysicalDevice::getFormatProperties( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::FormatProperties formatProperties; + getDispatcher()->vkGetPhysicalDeviceFormatProperties( + static_cast( m_physicalDevice ), + static_cast( format ), + reinterpret_cast( &formatProperties ) ); + return formatProperties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageFormatProperties + PhysicalDevice::getImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags ) const + { + VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties( + static_cast( m_physicalDevice ), + static_cast( format ), + static_cast( type ), + static_cast( tiling ), + static_cast( usage ), + static_cast( flags ), + reinterpret_cast( &imageFormatProperties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties" ); + } + return imageFormatProperties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties + PhysicalDevice::getProperties() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties; + getDispatcher()->vkGetPhysicalDeviceProperties( static_cast( m_physicalDevice ), + reinterpret_cast( &properties ) ); + return properties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getQueueFamilyProperties() const VULKAN_HPP_NOEXCEPT + { + uint32_t queueFamilyPropertyCount; + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties( + static_cast( m_physicalDevice ), &queueFamilyPropertyCount, nullptr ); + std::vector queueFamilyProperties( queueFamilyPropertyCount ); + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties( + static_cast( m_physicalDevice ), + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + VULKAN_HPP_ASSERT( queueFamilyPropertyCount == queueFamilyProperties.size() ); + return queueFamilyProperties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties + PhysicalDevice::getMemoryProperties() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties; + getDispatcher()->vkGetPhysicalDeviceMemoryProperties( + static_cast( m_physicalDevice ), + reinterpret_cast( &memoryProperties ) ); + return memoryProperties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PFN_vkVoidFunction + Instance::getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT + { + return getDispatcher()->vkGetInstanceProcAddr( static_cast( m_instance ), name.c_str() ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PFN_vkVoidFunction + Device::getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT + { + return getDispatcher()->vkGetDeviceProcAddr( static_cast( m_device ), name.c_str() ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Device PhysicalDevice::createDevice( + VULKAN_HPP_NAMESPACE::DeviceCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Device( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Context::enumerateInstanceExtensionProperties( Optional layerName ) const + { + std::vector properties; + uint32_t propertyCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( getDispatcher()->vkEnumerateInstanceExtensionProperties( + layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkEnumerateInstanceExtensionProperties( + layerName ? layerName->c_str() : nullptr, + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Context::enumerateInstanceExtensionProperties" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return properties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::enumerateDeviceExtensionProperties( Optional layerName ) const + { + std::vector properties; + uint32_t propertyCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( + getDispatcher()->vkEnumerateDeviceExtensionProperties( static_cast( m_physicalDevice ), + layerName ? layerName->c_str() : nullptr, + &propertyCount, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkEnumerateDeviceExtensionProperties( + static_cast( m_physicalDevice ), + layerName ? layerName->c_str() : nullptr, + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, + VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceExtensionProperties" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return properties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Context::enumerateInstanceLayerProperties() const + { + std::vector properties; + uint32_t propertyCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( + getDispatcher()->vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkEnumerateInstanceLayerProperties( + &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Context::enumerateInstanceLayerProperties" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return properties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::enumerateDeviceLayerProperties() const + { + std::vector properties; + uint32_t propertyCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( getDispatcher()->vkEnumerateDeviceLayerProperties( + static_cast( m_physicalDevice ), &propertyCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkEnumerateDeviceLayerProperties( + static_cast( m_physicalDevice ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceLayerProperties" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return properties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Queue + Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Queue( *this, queueFamilyIndex, queueIndex ); + } + + VULKAN_HPP_INLINE void Queue::submit( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence ) const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkQueueSubmit( static_cast( m_queue ), + submits.size(), + reinterpret_cast( submits.data() ), + static_cast( fence ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit" ); + } + } + + VULKAN_HPP_INLINE void Queue::waitIdle() const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkQueueWaitIdle( static_cast( m_queue ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::waitIdle" ); + } + } + + VULKAN_HPP_INLINE void Device::waitIdle() const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkDeviceWaitIdle( static_cast( m_device ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitIdle" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::DeviceMemory Device::allocateMemory( + VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const & allocateInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::DeviceMemory( *this, allocateInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE void * + DeviceMemory::mapMemory( VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::DeviceSize size, + VULKAN_HPP_NAMESPACE::MemoryMapFlags flags ) const + { + void * pData; + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkMapMemory( static_cast( m_device ), + static_cast( m_memory ), + static_cast( offset ), + static_cast( size ), + static_cast( flags ), + &pData ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DeviceMemory::mapMemory" ); + } + return pData; + } + + VULKAN_HPP_INLINE void DeviceMemory::unmapMemory() const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkUnmapMemory( static_cast( m_device ), static_cast( m_memory ) ); + } + + VULKAN_HPP_INLINE void Device::flushMappedMemoryRanges( + ArrayProxy const & memoryRanges ) const + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkFlushMappedMemoryRanges( + static_cast( m_device ), + memoryRanges.size(), + reinterpret_cast( memoryRanges.data() ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::flushMappedMemoryRanges" ); + } + } + + VULKAN_HPP_INLINE void Device::invalidateMappedMemoryRanges( + ArrayProxy const & memoryRanges ) const + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkInvalidateMappedMemoryRanges( + static_cast( m_device ), + memoryRanges.size(), + reinterpret_cast( memoryRanges.data() ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::invalidateMappedMemoryRanges" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceSize + DeviceMemory::getCommitment() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::DeviceSize committedMemoryInBytes; + getDispatcher()->vkGetDeviceMemoryCommitment( static_cast( m_device ), + static_cast( m_memory ), + reinterpret_cast( &committedMemoryInBytes ) ); + return committedMemoryInBytes; + } + + VULKAN_HPP_INLINE void Buffer::bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset ) const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkBindBufferMemory( static_cast( m_device ), + static_cast( m_buffer ), + static_cast( memory ), + static_cast( memoryOffset ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Buffer::bindMemory" ); + } + } + + VULKAN_HPP_INLINE void Image::bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset ) const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkBindImageMemory( static_cast( m_device ), + static_cast( m_image ), + static_cast( memory ), + static_cast( memoryOffset ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Image::bindMemory" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements + Buffer::getMemoryRequirements() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements; + getDispatcher()->vkGetBufferMemoryRequirements( static_cast( m_device ), + static_cast( m_buffer ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements + Image::getMemoryRequirements() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements; + getDispatcher()->vkGetImageMemoryRequirements( static_cast( m_device ), + static_cast( m_image ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Image::getSparseMemoryRequirements() const VULKAN_HPP_NOEXCEPT + { + uint32_t sparseMemoryRequirementCount; + getDispatcher()->vkGetImageSparseMemoryRequirements( + static_cast( m_device ), static_cast( m_image ), &sparseMemoryRequirementCount, nullptr ); + std::vector sparseMemoryRequirements( + sparseMemoryRequirementCount ); + getDispatcher()->vkGetImageSparseMemoryRequirements( + static_cast( m_device ), + static_cast( m_image ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount == sparseMemoryRequirements.size() ); + return sparseMemoryRequirements; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageTiling tiling ) const + VULKAN_HPP_NOEXCEPT + { + uint32_t propertyCount; + getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties( + static_cast( m_physicalDevice ), + static_cast( format ), + static_cast( type ), + static_cast( samples ), + static_cast( usage ), + static_cast( tiling ), + &propertyCount, + nullptr ); + std::vector properties( propertyCount ); + getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties( + static_cast( m_physicalDevice ), + static_cast( format ), + static_cast( type ), + static_cast( samples ), + static_cast( usage ), + static_cast( tiling ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + VULKAN_HPP_ASSERT( propertyCount == properties.size() ); + return properties; + } + + VULKAN_HPP_INLINE void Queue::bindSparse( ArrayProxy const & bindInfo, + VULKAN_HPP_NAMESPACE::Fence fence ) const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkQueueBindSparse( static_cast( m_queue ), + bindInfo.size(), + reinterpret_cast( bindInfo.data() ), + static_cast( fence ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::bindSparse" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Fence Device::createFence( + VULKAN_HPP_NAMESPACE::FenceCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Fence( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void Device::resetFences( ArrayProxy const & fences ) const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( getDispatcher()->vkResetFences( + static_cast( m_device ), fences.size(), reinterpret_cast( fences.data() ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetFences" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Fence::getStatus() const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkGetFenceStatus( static_cast( m_device ), static_cast( m_fence ) ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eNotReady ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Fence::getStatus" ); + } + return result; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result + Device::waitForFences( ArrayProxy const & fences, + VULKAN_HPP_NAMESPACE::Bool32 waitAll, + uint64_t timeout ) const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkWaitForFences( static_cast( m_device ), + fences.size(), + reinterpret_cast( fences.data() ), + static_cast( waitAll ), + timeout ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitForFences" ); + } + return result; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Semaphore Device::createSemaphore( + VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Semaphore( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Event Device::createEvent( + VULKAN_HPP_NAMESPACE::EventCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Event( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Event::getStatus() const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkGetEventStatus( static_cast( m_device ), static_cast( m_event ) ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eEventSet ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eEventReset ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Event::getStatus" ); + } + return result; + } + + VULKAN_HPP_INLINE void Event::set() const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkSetEvent( static_cast( m_device ), static_cast( m_event ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Event::set" ); + } + } + + VULKAN_HPP_INLINE void Event::reset() const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkResetEvent( static_cast( m_device ), static_cast( m_event ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Event::reset" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::QueryPool Device::createQueryPool( + VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::QueryPool( *this, createInfo, allocator ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair> + QueryPool::getResults( uint32_t firstQuery, + uint32_t queryCount, + size_t dataSize, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags ) const + { + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = + static_cast( getDispatcher()->vkGetQueryPoolResults( static_cast( m_device ), + static_cast( m_queryPool ), + firstQuery, + queryCount, + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ), + static_cast( stride ), + static_cast( flags ) ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eNotReady ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::QueryPool::getResults" ); + } + return std::make_pair( result, data ); + } + + template + VULKAN_HPP_NODISCARD std::pair + QueryPool::getResult( uint32_t firstQuery, + uint32_t queryCount, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags ) const + { + DataType data; + Result result = + static_cast( getDispatcher()->vkGetQueryPoolResults( static_cast( m_device ), + static_cast( m_queryPool ), + firstQuery, + queryCount, + sizeof( DataType ), + reinterpret_cast( &data ), + static_cast( stride ), + static_cast( flags ) ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eNotReady ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::QueryPool::getResult" ); + } + return std::make_pair( result, data ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Buffer Device::createBuffer( + VULKAN_HPP_NAMESPACE::BufferCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Buffer( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::BufferView Device::createBufferView( + VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::BufferView( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Image Device::createImage( + VULKAN_HPP_NAMESPACE::ImageCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Image( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SubresourceLayout Image::getSubresourceLayout( + const VULKAN_HPP_NAMESPACE::ImageSubresource & subresource ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::SubresourceLayout layout; + getDispatcher()->vkGetImageSubresourceLayout( static_cast( m_device ), + static_cast( m_image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + return layout; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::ImageView Device::createImageView( + VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::ImageView( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::ShaderModule Device::createShaderModule( + VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::ShaderModule( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::PipelineCache Device::createPipelineCache( + VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::PipelineCache( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PipelineCache::getData() const + { + std::vector data; + size_t dataSize; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( getDispatcher()->vkGetPipelineCacheData( + static_cast( m_device ), static_cast( m_pipelineCache ), &dataSize, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( + getDispatcher()->vkGetPipelineCacheData( static_cast( m_device ), + static_cast( m_pipelineCache ), + &dataSize, + reinterpret_cast( data.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PipelineCache::getData" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( dataSize <= data.size() ); + if ( dataSize < data.size() ) + { + data.resize( dataSize ); + } + } + return data; + } + + VULKAN_HPP_INLINE void + PipelineCache::merge( ArrayProxy const & srcCaches ) const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkMergePipelineCaches( static_cast( m_device ), + static_cast( m_pipelineCache ), + srcCaches.size(), + reinterpret_cast( srcCaches.data() ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PipelineCache::merge" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::createGraphicsPipelines( + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::ArrayProxy const & createInfos, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Pipelines( *this, pipelineCache, createInfos, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Pipeline Device::createGraphicsPipeline( + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Pipeline( *this, pipelineCache, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::createComputePipelines( + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::ArrayProxy const & createInfos, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Pipelines( *this, pipelineCache, createInfos, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Pipeline Device::createComputePipeline( + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Pipeline( *this, pipelineCache, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::PipelineLayout Device::createPipelineLayout( + VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::PipelineLayout( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Sampler Device::createSampler( + VULKAN_HPP_NAMESPACE::SamplerCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Sampler( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::DescriptorSetLayout + Device::createDescriptorSetLayout( + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::DescriptorSetLayout( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::DescriptorPool Device::createDescriptorPool( + VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::DescriptorPool( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void + DescriptorPool::reset( VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkResetDescriptorPool( static_cast( m_device ), + static_cast( m_descriptorPool ), + static_cast( flags ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::allocateDescriptorSets( VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const & allocateInfo ) const + { + return VULKAN_HPP_RAII_NAMESPACE::DescriptorSets( *this, allocateInfo ); + } + + VULKAN_HPP_INLINE void Device::updateDescriptorSets( + ArrayProxy const & descriptorWrites, + ArrayProxy const & descriptorCopies ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkUpdateDescriptorSets( + static_cast( m_device ), + descriptorWrites.size(), + reinterpret_cast( descriptorWrites.data() ), + descriptorCopies.size(), + reinterpret_cast( descriptorCopies.data() ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Framebuffer Device::createFramebuffer( + VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Framebuffer( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::RenderPass Device::createRenderPass( + VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::RenderPass( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Extent2D + RenderPass::getRenderAreaGranularity() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::Extent2D granularity; + getDispatcher()->vkGetRenderAreaGranularity( static_cast( m_device ), + static_cast( m_renderPass ), + reinterpret_cast( &granularity ) ); + return granularity; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::CommandPool Device::createCommandPool( + VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::CommandPool( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void CommandPool::reset( VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags ) const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkResetCommandPool( static_cast( m_device ), + static_cast( m_commandPool ), + static_cast( flags ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandPool::reset" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::allocateCommandBuffers( VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const & allocateInfo ) const + { + return VULKAN_HPP_RAII_NAMESPACE::CommandBuffers( *this, allocateInfo ); + } + + VULKAN_HPP_INLINE void CommandBuffer::begin( const VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo & beginInfo ) const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkBeginCommandBuffer( static_cast( m_commandBuffer ), + reinterpret_cast( &beginInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::begin" ); + } + } + + VULKAN_HPP_INLINE void CommandBuffer::end() const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkEndCommandBuffer( static_cast( m_commandBuffer ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::end" ); + } + } + + VULKAN_HPP_INLINE void CommandBuffer::reset( VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags ) const + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkResetCommandBuffer( + static_cast( m_commandBuffer ), static_cast( flags ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::reset" ); + } + } + + VULKAN_HPP_INLINE void + CommandBuffer::bindPipeline( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::Pipeline pipeline ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdBindPipeline( static_cast( m_commandBuffer ), + static_cast( pipelineBindPoint ), + static_cast( pipeline ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setViewport( + uint32_t firstViewport, + ArrayProxy const & viewports ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetViewport( static_cast( m_commandBuffer ), + firstViewport, + viewports.size(), + reinterpret_cast( viewports.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setScissor( + uint32_t firstScissor, ArrayProxy const & scissors ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetScissor( static_cast( m_commandBuffer ), + firstScissor, + scissors.size(), + reinterpret_cast( scissors.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetLineWidth( static_cast( m_commandBuffer ), lineWidth ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, + float depthBiasClamp, + float depthBiasSlopeFactor ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetDepthBias( static_cast( m_commandBuffer ), + depthBiasConstantFactor, + depthBiasClamp, + depthBiasSlopeFactor ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetBlendConstants( static_cast( m_commandBuffer ), blendConstants ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, + float maxDepthBounds ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetDepthBounds( + static_cast( m_commandBuffer ), minDepthBounds, maxDepthBounds ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + uint32_t compareMask ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetStencilCompareMask( + static_cast( m_commandBuffer ), static_cast( faceMask ), compareMask ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + uint32_t writeMask ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetStencilWriteMask( + static_cast( m_commandBuffer ), static_cast( faceMask ), writeMask ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + uint32_t reference ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetStencilReference( + static_cast( m_commandBuffer ), static_cast( faceMask ), reference ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t firstSet, + ArrayProxy const & descriptorSets, + ArrayProxy const & dynamicOffsets ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdBindDescriptorSets( static_cast( m_commandBuffer ), + static_cast( pipelineBindPoint ), + static_cast( layout ), + firstSet, + descriptorSets.size(), + reinterpret_cast( descriptorSets.data() ), + dynamicOffsets.size(), + dynamicOffsets.data() ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::IndexType indexType ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdBindIndexBuffer( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( indexType ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( + uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdBindVertexBuffers( static_cast( m_commandBuffer ), + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, + uint32_t instanceCount, + uint32_t firstVertex, + uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdDraw( + static_cast( m_commandBuffer ), vertexCount, instanceCount, firstVertex, firstInstance ); + } + + VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, + uint32_t instanceCount, + uint32_t firstIndex, + int32_t vertexOffset, + uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdDrawIndexed( static_cast( m_commandBuffer ), + indexCount, + instanceCount, + firstIndex, + vertexOffset, + firstInstance ); + } + + VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + uint32_t drawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdDrawIndirect( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + drawCount, + stride ); + } + + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + uint32_t drawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdDrawIndexedIndirect( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + drawCount, + stride ); + } + + VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdDispatch( + static_cast( m_commandBuffer ), groupCountX, groupCountY, groupCountZ ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdDispatchIndirect( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( + VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdCopyBuffer( static_cast( m_commandBuffer ), + static_cast( srcBuffer ), + static_cast( dstBuffer ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::copyImage( + VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdCopyImage( static_cast( m_commandBuffer ), + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::blitImage( VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions, + VULKAN_HPP_NAMESPACE::Filter filter ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdBlitImage( static_cast( m_commandBuffer ), + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ), + static_cast( filter ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( + VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdCopyBufferToImage( static_cast( m_commandBuffer ), + static_cast( srcBuffer ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( + VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdCopyImageToBuffer( static_cast( m_commandBuffer ), + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstBuffer ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } + + template + VULKAN_HPP_INLINE void + CommandBuffer::updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + ArrayProxy const & data ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdUpdateBuffer( static_cast( m_commandBuffer ), + static_cast( dstBuffer ), + static_cast( dstOffset ), + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + VULKAN_HPP_NAMESPACE::DeviceSize size, + uint32_t data ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdFillBuffer( static_cast( m_commandBuffer ), + static_cast( dstBuffer ), + static_cast( dstOffset ), + static_cast( size ), + data ); + } + + VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( + VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + const VULKAN_HPP_NAMESPACE::ClearColorValue & color, + ArrayProxy const & ranges ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdClearColorImage( static_cast( m_commandBuffer ), + static_cast( image ), + static_cast( imageLayout ), + reinterpret_cast( &color ), + ranges.size(), + reinterpret_cast( ranges.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( + VULKAN_HPP_NAMESPACE::Image image, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, + const VULKAN_HPP_NAMESPACE::ClearDepthStencilValue & depthStencil, + ArrayProxy const & ranges ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdClearDepthStencilImage( + static_cast( m_commandBuffer ), + static_cast( image ), + static_cast( imageLayout ), + reinterpret_cast( &depthStencil ), + ranges.size(), + reinterpret_cast( ranges.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( + ArrayProxy const & attachments, + ArrayProxy const & rects ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdClearAttachments( static_cast( m_commandBuffer ), + attachments.size(), + reinterpret_cast( attachments.data() ), + rects.size(), + reinterpret_cast( rects.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::resolveImage( + VULKAN_HPP_NAMESPACE::Image srcImage, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdResolveImage( static_cast( m_commandBuffer ), + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setEvent( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetEvent( static_cast( m_commandBuffer ), + static_cast( event ), + static_cast( stageMask ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::resetEvent( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdResetEvent( static_cast( m_commandBuffer ), + static_cast( event ), + static_cast( stageMask ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::waitEvents( + ArrayProxy const & events, + VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdWaitEvents( static_cast( m_commandBuffer ), + events.size(), + reinterpret_cast( events.data() ), + static_cast( srcStageMask ), + static_cast( dstStageMask ), + memoryBarriers.size(), + reinterpret_cast( memoryBarriers.data() ), + bufferMemoryBarriers.size(), + reinterpret_cast( bufferMemoryBarriers.data() ), + imageMemoryBarriers.size(), + reinterpret_cast( imageMemoryBarriers.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier( + VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, + VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdPipelineBarrier( + static_cast( m_commandBuffer ), + static_cast( srcStageMask ), + static_cast( dstStageMask ), + static_cast( dependencyFlags ), + memoryBarriers.size(), + reinterpret_cast( memoryBarriers.data() ), + bufferMemoryBarriers.size(), + reinterpret_cast( bufferMemoryBarriers.data() ), + imageMemoryBarriers.size(), + reinterpret_cast( imageMemoryBarriers.data() ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::beginQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + VULKAN_HPP_NAMESPACE::QueryControlFlags flags ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdBeginQuery( static_cast( m_commandBuffer ), + static_cast( queryPool ), + query, + static_cast( flags ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdEndQuery( + static_cast( m_commandBuffer ), static_cast( queryPool ), query ); + } + + VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdResetQueryPool( static_cast( m_commandBuffer ), + static_cast( queryPool ), + firstQuery, + queryCount ); + } + + VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdWriteTimestamp( static_cast( m_commandBuffer ), + static_cast( pipelineStage ), + static_cast( queryPool ), + query ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + VULKAN_HPP_NAMESPACE::DeviceSize stride, + VULKAN_HPP_NAMESPACE::QueryResultFlags flags ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdCopyQueryPoolResults( static_cast( m_commandBuffer ), + static_cast( queryPool ), + firstQuery, + queryCount, + static_cast( dstBuffer ), + static_cast( dstOffset ), + static_cast( stride ), + static_cast( flags ) ); + } + + template + VULKAN_HPP_INLINE void + CommandBuffer::pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout layout, + VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags, + uint32_t offset, + ArrayProxy const & values ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdPushConstants( static_cast( m_commandBuffer ), + static_cast( layout ), + static_cast( stageFlags ), + offset, + values.size() * sizeof( ValuesType ), + reinterpret_cast( values.data() ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::beginRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin, + VULKAN_HPP_NAMESPACE::SubpassContents contents ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdBeginRenderPass( static_cast( m_commandBuffer ), + reinterpret_cast( &renderPassBegin ), + static_cast( contents ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::nextSubpass( VULKAN_HPP_NAMESPACE::SubpassContents contents ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdNextSubpass( static_cast( m_commandBuffer ), + static_cast( contents ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdEndRenderPass( static_cast( m_commandBuffer ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::executeCommands( + ArrayProxy const & commandBuffers ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdExecuteCommands( static_cast( m_commandBuffer ), + commandBuffers.size(), + reinterpret_cast( commandBuffers.data() ) ); + } + + //=== VK_VERSION_1_1 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t Context::enumerateInstanceVersion() const + { + uint32_t apiVersion; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkEnumerateInstanceVersion( &apiVersion ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Context::enumerateInstanceVersion" ); + } + return apiVersion; + } + + VULKAN_HPP_INLINE void + Device::bindBufferMemory2( ArrayProxy const & bindInfos ) const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkBindBufferMemory2( static_cast( m_device ), + bindInfos.size(), + reinterpret_cast( bindInfos.data() ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory2" ); + } + } + + VULKAN_HPP_INLINE void + Device::bindImageMemory2( ArrayProxy const & bindInfos ) const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkBindImageMemory2( static_cast( m_device ), + bindInfos.size(), + reinterpret_cast( bindInfos.data() ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory2" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags + Device::getGroupPeerMemoryFeatures( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags peerMemoryFeatures; + getDispatcher()->vkGetDeviceGroupPeerMemoryFeatures( + static_cast( m_device ), + heapIndex, + localDeviceIndex, + remoteDeviceIndex, + reinterpret_cast( &peerMemoryFeatures ) ); + return peerMemoryFeatures; + } + + VULKAN_HPP_INLINE void CommandBuffer::setDeviceMask( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetDeviceMask( static_cast( m_commandBuffer ), deviceMask ); + } + + VULKAN_HPP_INLINE void CommandBuffer::dispatchBase( uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdDispatchBase( static_cast( m_commandBuffer ), + baseGroupX, + baseGroupY, + baseGroupZ, + groupCountX, + groupCountY, + groupCountZ ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Instance::enumeratePhysicalDeviceGroups() const + { + std::vector physicalDeviceGroupProperties; + uint32_t physicalDeviceGroupCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( getDispatcher()->vkEnumeratePhysicalDeviceGroups( + static_cast( m_instance ), &physicalDeviceGroupCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && physicalDeviceGroupCount ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + result = static_cast( getDispatcher()->vkEnumeratePhysicalDeviceGroups( + static_cast( m_instance ), + &physicalDeviceGroupCount, + reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroups" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); + if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + } + } + return physicalDeviceGroupProperties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getImageMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const + VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetImageMemoryRequirements2( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getImageMemoryRequirements2( + const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT + { + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + getDispatcher()->vkGetImageMemoryRequirements2( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getBufferMemoryRequirements2( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const + VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetBufferMemoryRequirements2( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getBufferMemoryRequirements2( + const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT + { + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + getDispatcher()->vkGetBufferMemoryRequirements2( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements2( + const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT + { + uint32_t sparseMemoryRequirementCount; + getDispatcher()->vkGetImageSparseMemoryRequirements2( + static_cast( m_device ), + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + nullptr ); + std::vector sparseMemoryRequirements( + sparseMemoryRequirementCount ); + getDispatcher()->vkGetImageSparseMemoryRequirements2( + static_cast( m_device ), + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount == sparseMemoryRequirements.size() ); + return sparseMemoryRequirements; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 + PhysicalDevice::getFeatures2() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 features; + getDispatcher()->vkGetPhysicalDeviceFeatures2( static_cast( m_physicalDevice ), + reinterpret_cast( &features ) ); + return features; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getFeatures2() const VULKAN_HPP_NOEXCEPT + { + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 & features = + structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceFeatures2( static_cast( m_physicalDevice ), + reinterpret_cast( &features ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 + PhysicalDevice::getProperties2() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 properties; + getDispatcher()->vkGetPhysicalDeviceProperties2( static_cast( m_physicalDevice ), + reinterpret_cast( &properties ) ); + return properties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getProperties2() const VULKAN_HPP_NOEXCEPT + { + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 & properties = + structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceProperties2( static_cast( m_physicalDevice ), + reinterpret_cast( &properties ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties2 + PhysicalDevice::getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::FormatProperties2 formatProperties; + getDispatcher()->vkGetPhysicalDeviceFormatProperties2( + static_cast( m_physicalDevice ), + static_cast( format ), + reinterpret_cast( &formatProperties ) ); + return formatProperties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT + { + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::FormatProperties2 & formatProperties = + structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceFormatProperties2( + static_cast( m_physicalDevice ), + static_cast( format ), + reinterpret_cast( &formatProperties ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageFormatProperties2 + PhysicalDevice::getImageFormatProperties2( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const + { + VULKAN_HPP_NAMESPACE::ImageFormatProperties2 imageFormatProperties; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2( + static_cast( m_physicalDevice ), + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" ); + } + return imageFormatProperties; + } + + template + VULKAN_HPP_NODISCARD StructureChain PhysicalDevice::getImageFormatProperties2( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const + { + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::ImageFormatProperties2 & imageFormatProperties = + structureChain.template get(); + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2( + static_cast( m_physicalDevice ), + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" ); + } + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getQueueFamilyProperties2() const VULKAN_HPP_NOEXCEPT + { + uint32_t queueFamilyPropertyCount; + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( + static_cast( m_physicalDevice ), &queueFamilyPropertyCount, nullptr ); + std::vector queueFamilyProperties( queueFamilyPropertyCount ); + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( + static_cast( m_physicalDevice ), + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + VULKAN_HPP_ASSERT( queueFamilyPropertyCount == queueFamilyProperties.size() ); + return queueFamilyProperties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2() const + { + uint32_t queueFamilyPropertyCount; + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( + static_cast( m_physicalDevice ), &queueFamilyPropertyCount, nullptr ); + std::vector returnVector( queueFamilyPropertyCount ); + std::vector queueFamilyProperties( queueFamilyPropertyCount ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + queueFamilyProperties[i].pNext = + returnVector[i].template get().pNext; + } + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( + static_cast( m_physicalDevice ), + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + returnVector[i].template get() = queueFamilyProperties[i]; + } + return returnVector; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 + PhysicalDevice::getMemoryProperties2() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 memoryProperties; + getDispatcher()->vkGetPhysicalDeviceMemoryProperties2( + static_cast( m_physicalDevice ), + reinterpret_cast( &memoryProperties ) ); + return memoryProperties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getMemoryProperties2() const VULKAN_HPP_NOEXCEPT + { + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 & memoryProperties = + structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceMemoryProperties2( + static_cast( m_physicalDevice ), + reinterpret_cast( &memoryProperties ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties2( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const VULKAN_HPP_NOEXCEPT + { + uint32_t propertyCount; + getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2( + static_cast( m_physicalDevice ), + reinterpret_cast( &formatInfo ), + &propertyCount, + nullptr ); + std::vector properties( propertyCount ); + getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2( + static_cast( m_physicalDevice ), + reinterpret_cast( &formatInfo ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + VULKAN_HPP_ASSERT( propertyCount == properties.size() ); + return properties; + } + + VULKAN_HPP_INLINE void + CommandPool::trim( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkTrimCommandPool( static_cast( m_device ), + static_cast( m_commandPool ), + static_cast( flags ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Queue + Device::getQueue2( VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const & queueInfo ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Queue( *this, queueInfo ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SamplerYcbcrConversion + Device::createSamplerYcbcrConversion( + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SamplerYcbcrConversion( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::DescriptorUpdateTemplate + Device::createDescriptorUpdateTemplate( + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::DescriptorUpdateTemplate( *this, createInfo, allocator ); + } + + template + VULKAN_HPP_INLINE void + DescriptorSet::updateWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + DataType const & data ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkUpdateDescriptorSetWithTemplate( + static_cast( m_device ), + static_cast( m_descriptorSet ), + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( &data ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalBufferProperties + PhysicalDevice::getExternalBufferProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::ExternalBufferProperties externalBufferProperties; + getDispatcher()->vkGetPhysicalDeviceExternalBufferProperties( + static_cast( m_physicalDevice ), + reinterpret_cast( &externalBufferInfo ), + reinterpret_cast( &externalBufferProperties ) ); + return externalBufferProperties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalFenceProperties + PhysicalDevice::getExternalFenceProperties( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::ExternalFenceProperties externalFenceProperties; + getDispatcher()->vkGetPhysicalDeviceExternalFenceProperties( + static_cast( m_physicalDevice ), + reinterpret_cast( &externalFenceInfo ), + reinterpret_cast( &externalFenceProperties ) ); + return externalFenceProperties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties + PhysicalDevice::getExternalSemaphoreProperties( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & + externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties externalSemaphoreProperties; + getDispatcher()->vkGetPhysicalDeviceExternalSemaphoreProperties( + static_cast( m_physicalDevice ), + reinterpret_cast( &externalSemaphoreInfo ), + reinterpret_cast( &externalSemaphoreProperties ) ); + return externalSemaphoreProperties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport + Device::getDescriptorSetLayoutSupport( + const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport support; + getDispatcher()->vkGetDescriptorSetLayoutSupport( + static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( &support ) ); + return support; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getDescriptorSetLayoutSupport( + const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT + { + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport & support = + structureChain.template get(); + getDispatcher()->vkGetDescriptorSetLayoutSupport( + static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( &support ) ); + return structureChain; + } + + //=== VK_VERSION_1_2 === + + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdDrawIndirectCount( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdDrawIndexedIndirectCount( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::RenderPass Device::createRenderPass2( + VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::RenderPass( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2( + const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin, + const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdBeginRenderPass2( static_cast( m_commandBuffer ), + reinterpret_cast( &renderPassBegin ), + reinterpret_cast( &subpassBeginInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2( + const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo, + const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdNextSubpass2( static_cast( m_commandBuffer ), + reinterpret_cast( &subpassBeginInfo ), + reinterpret_cast( &subpassEndInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2( + const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdEndRenderPass2( static_cast( m_commandBuffer ), + reinterpret_cast( &subpassEndInfo ) ); + } + + VULKAN_HPP_INLINE void QueryPool::reset( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkResetQueryPool( + static_cast( m_device ), static_cast( m_queryPool ), firstQuery, queryCount ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Semaphore::getCounterValue() const + { + uint64_t value; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetSemaphoreCounterValue( + static_cast( m_device ), static_cast( m_semaphore ), &value ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Semaphore::getCounterValue" ); + } + return value; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result + Device::waitSemaphores( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkWaitSemaphores( + static_cast( m_device ), reinterpret_cast( &waitInfo ), timeout ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitSemaphores" ); + } + return result; + } + + VULKAN_HPP_INLINE void Device::signalSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo ) const + { + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkSignalSemaphore( + static_cast( m_device ), reinterpret_cast( &signalInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::signalSemaphore" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress + Device::getBufferAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT + { + return static_cast( getDispatcher()->vkGetBufferDeviceAddress( + static_cast( m_device ), reinterpret_cast( &info ) ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddress( + const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT + { + return getDispatcher()->vkGetBufferOpaqueCaptureAddress( + static_cast( m_device ), reinterpret_cast( &info ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getMemoryOpaqueCaptureAddress( + const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT + { + return getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddress( + static_cast( m_device ), reinterpret_cast( &info ) ); + } + + //=== VK_VERSION_1_3 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getToolProperties() const + { + std::vector toolProperties; + uint32_t toolCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( getDispatcher()->vkGetPhysicalDeviceToolProperties( + static_cast( m_physicalDevice ), &toolCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && toolCount ) + { + toolProperties.resize( toolCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceToolProperties( + static_cast( m_physicalDevice ), + &toolCount, + reinterpret_cast( toolProperties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getToolProperties" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() ); + if ( toolCount < toolProperties.size() ) + { + toolProperties.resize( toolCount ); + } + } + return toolProperties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::PrivateDataSlot Device::createPrivateDataSlot( + VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::PrivateDataSlot( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void Device::setPrivateData( VULKAN_HPP_NAMESPACE::ObjectType objectType_, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t data ) const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkSetPrivateData( static_cast( m_device ), + static_cast( objectType_ ), + objectHandle, + static_cast( privateDataSlot ), + data ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setPrivateData" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t + Device::getPrivateData( VULKAN_HPP_NAMESPACE::ObjectType objectType_, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT + { + uint64_t data; + getDispatcher()->vkGetPrivateData( static_cast( m_device ), + static_cast( objectType_ ), + objectHandle, + static_cast( privateDataSlot ), + &data ); + return data; + } + + VULKAN_HPP_INLINE void + CommandBuffer::setEvent2( VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetEvent2( static_cast( m_commandBuffer ), + static_cast( event ), + reinterpret_cast( &dependencyInfo ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::resetEvent2( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdResetEvent2( static_cast( m_commandBuffer ), + static_cast( event ), + static_cast( stageMask ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::waitEvents2( ArrayProxy const & events, + ArrayProxy const & dependencyInfos ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( events.size() == dependencyInfos.size() ); +# else + if ( events.size() != dependencyInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::waitEvents2: events.size() != dependencyInfos.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdWaitEvents2( static_cast( m_commandBuffer ), + events.size(), + reinterpret_cast( events.data() ), + reinterpret_cast( dependencyInfos.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2( + const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdPipelineBarrier2( static_cast( m_commandBuffer ), + reinterpret_cast( &dependencyInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp2( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdWriteTimestamp2( static_cast( m_commandBuffer ), + static_cast( stage ), + static_cast( queryPool ), + query ); + } + + VULKAN_HPP_INLINE void Queue::submit2( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence ) const + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkQueueSubmit2( static_cast( m_queue ), + submits.size(), + reinterpret_cast( submits.data() ), + static_cast( fence ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit2" ); + } + } + + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2( + const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdCopyBuffer2( static_cast( m_commandBuffer ), + reinterpret_cast( ©BufferInfo ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::copyImage2( const VULKAN_HPP_NAMESPACE::CopyImageInfo2 & copyImageInfo ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdCopyImage2( static_cast( m_commandBuffer ), + reinterpret_cast( ©ImageInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage2( + const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdCopyBufferToImage2( + static_cast( m_commandBuffer ), + reinterpret_cast( ©BufferToImageInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer2( + const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdCopyImageToBuffer2( + static_cast( m_commandBuffer ), + reinterpret_cast( ©ImageToBufferInfo ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::blitImage2( const VULKAN_HPP_NAMESPACE::BlitImageInfo2 & blitImageInfo ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdBlitImage2( static_cast( m_commandBuffer ), + reinterpret_cast( &blitImageInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::resolveImage2( + const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdResolveImage2( static_cast( m_commandBuffer ), + reinterpret_cast( &resolveImageInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::beginRendering( + const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdBeginRendering( static_cast( m_commandBuffer ), + reinterpret_cast( &renderingInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::endRendering() const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdEndRendering( static_cast( m_commandBuffer ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setCullMode( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetCullMode( static_cast( m_commandBuffer ), + static_cast( cullMode ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setFrontFace( VULKAN_HPP_NAMESPACE::FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetFrontFace( static_cast( m_commandBuffer ), + static_cast( frontFace ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveTopology( + VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetPrimitiveTopology( static_cast( m_commandBuffer ), + static_cast( primitiveTopology ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCount( + ArrayProxy const & viewports ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetViewportWithCount( static_cast( m_commandBuffer ), + viewports.size(), + reinterpret_cast( viewports.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCount( + ArrayProxy const & scissors ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetScissorWithCount( static_cast( m_commandBuffer ), + scissors.size(), + reinterpret_cast( scissors.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2( + uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes, + ArrayProxy const & strides ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); + VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() ); + VULKAN_HPP_ASSERT( strides.empty() || buffers.size() == strides.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindVertexBuffers2: buffers.size() != offsets.size()" ); + } + if ( !sizes.empty() && buffers.size() != sizes.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindVertexBuffers2: buffers.size() != sizes.size()" ); + } + if ( !strides.empty() && buffers.size() != strides.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindVertexBuffers2: buffers.size() != strides.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdBindVertexBuffers2( static_cast( m_commandBuffer ), + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ), + reinterpret_cast( sizes.data() ), + reinterpret_cast( strides.data() ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setDepthTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetDepthTestEnable( static_cast( m_commandBuffer ), + static_cast( depthTestEnable ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setDepthWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetDepthWriteEnable( static_cast( m_commandBuffer ), + static_cast( depthWriteEnable ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setDepthCompareOp( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetDepthCompareOp( static_cast( m_commandBuffer ), + static_cast( depthCompareOp ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setDepthBoundsTestEnable( + VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetDepthBoundsTestEnable( static_cast( m_commandBuffer ), + static_cast( depthBoundsTestEnable ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setStencilTestEnable( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetStencilTestEnable( static_cast( m_commandBuffer ), + static_cast( stencilTestEnable ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setStencilOp( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + VULKAN_HPP_NAMESPACE::StencilOp failOp, + VULKAN_HPP_NAMESPACE::StencilOp passOp, + VULKAN_HPP_NAMESPACE::StencilOp depthFailOp, + VULKAN_HPP_NAMESPACE::CompareOp compareOp ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetStencilOp( static_cast( m_commandBuffer ), + static_cast( faceMask ), + static_cast( failOp ), + static_cast( passOp ), + static_cast( depthFailOp ), + static_cast( compareOp ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setRasterizerDiscardEnable( + VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetRasterizerDiscardEnable( static_cast( m_commandBuffer ), + static_cast( rasterizerDiscardEnable ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setDepthBiasEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetDepthBiasEnable( static_cast( m_commandBuffer ), + static_cast( depthBiasEnable ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveRestartEnable( + VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT + { + getDispatcher()->vkCmdSetPrimitiveRestartEnable( static_cast( m_commandBuffer ), + static_cast( primitiveRestartEnable ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getBufferMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const + VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetDeviceBufferMemoryRequirements( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getBufferMemoryRequirements( + const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT + { + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + getDispatcher()->vkGetDeviceBufferMemoryRequirements( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 Device::getImageMemoryRequirements( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetDeviceImageMemoryRequirements( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getImageMemoryRequirements( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT + { + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + getDispatcher()->vkGetDeviceImageMemoryRequirements( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const + VULKAN_HPP_NOEXCEPT + { + uint32_t sparseMemoryRequirementCount; + getDispatcher()->vkGetDeviceImageSparseMemoryRequirements( + static_cast( m_device ), + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + nullptr ); + std::vector sparseMemoryRequirements( + sparseMemoryRequirementCount ); + getDispatcher()->vkGetDeviceImageSparseMemoryRequirements( + static_cast( m_device ), + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount == sparseMemoryRequirements.size() ); + return sparseMemoryRequirements; + } + + //=== VK_KHR_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32 + PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceSupportKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Bool32 supported; + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkGetPhysicalDeviceSurfaceSupportKHR( static_cast( m_physicalDevice ), + queueFamilyIndex, + static_cast( surface ), + reinterpret_cast( &supported ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceSupportKHR" ); + } + return supported; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR + PhysicalDevice::getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilitiesKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilitiesKHR( + static_cast( m_physicalDevice ), + static_cast( surface ), + reinterpret_cast( &surfaceCapabilities ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilitiesKHR" ); + } + return surfaceCapabilities; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR && + "Function needs extension enabled!" ); + + std::vector surfaceFormats; + uint32_t surfaceFormatCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR( static_cast( m_physicalDevice ), + static_cast( surface ), + &surfaceFormatCount, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && surfaceFormatCount ) + { + surfaceFormats.resize( surfaceFormatCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR( + static_cast( m_physicalDevice ), + static_cast( surface ), + &surfaceFormatCount, + reinterpret_cast( surfaceFormats.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormatsKHR" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); + if ( surfaceFormatCount < surfaceFormats.size() ) + { + surfaceFormats.resize( surfaceFormatCount ); + } + } + return surfaceFormats; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR && + "Function needs extension enabled!" ); + + std::vector presentModes; + uint32_t presentModeCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR( static_cast( m_physicalDevice ), + static_cast( surface ), + &presentModeCount, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && presentModeCount ) + { + presentModes.resize( presentModeCount ); + result = + static_cast( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR( + static_cast( m_physicalDevice ), + static_cast( surface ), + &presentModeCount, + reinterpret_cast( presentModes.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModesKHR" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); + if ( presentModeCount < presentModes.size() ) + { + presentModes.resize( presentModeCount ); + } + } + return presentModes; + } + + //=== VK_KHR_swapchain === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR Device::createSwapchainKHR( + VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector SwapchainKHR::getImages() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainImagesKHR && + "Function needs extension enabled!" ); + + std::vector swapchainImages; + uint32_t swapchainImageCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( + getDispatcher()->vkGetSwapchainImagesKHR( static_cast( m_device ), + static_cast( m_swapchain ), + &swapchainImageCount, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && swapchainImageCount ) + { + swapchainImages.resize( swapchainImageCount ); + result = static_cast( + getDispatcher()->vkGetSwapchainImagesKHR( static_cast( m_device ), + static_cast( m_swapchain ), + &swapchainImageCount, + swapchainImages.data() ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getImages" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() ); + if ( swapchainImageCount < swapchainImages.size() ) + { + swapchainImages.resize( swapchainImageCount ); + } + } + return swapchainImages; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair + SwapchainKHR::acquireNextImage( uint64_t timeout, + VULKAN_HPP_NAMESPACE::Semaphore semaphore, + VULKAN_HPP_NAMESPACE::Fence fence ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireNextImageKHR && + "Function needs extension enabled!" ); + + uint32_t imageIndex; + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkAcquireNextImageKHR( static_cast( m_device ), + static_cast( m_swapchain ), + timeout, + static_cast( semaphore ), + static_cast( fence ), + &imageIndex ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eNotReady ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::acquireNextImage" ); + } + return std::make_pair( result, imageIndex ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result + Queue::presentKHR( const VULKAN_HPP_NAMESPACE::PresentInfoKHR & presentInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueuePresentKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkQueuePresentKHR( + static_cast( m_queue ), reinterpret_cast( &presentInfo ) ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::presentKHR" ); + } + return result; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR + Device::getGroupPresentCapabilitiesKHR() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDeviceGroupPresentCapabilitiesKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR deviceGroupPresentCapabilities; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetDeviceGroupPresentCapabilitiesKHR( + static_cast( m_device ), + reinterpret_cast( &deviceGroupPresentCapabilities ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupPresentCapabilitiesKHR" ); + } + return deviceGroupPresentCapabilities; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR + Device::getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDeviceGroupSurfacePresentModesKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetDeviceGroupSurfacePresentModesKHR( + static_cast( m_device ), + static_cast( surface ), + reinterpret_cast( &modes ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupSurfacePresentModesKHR" ); + } + return modes; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR && + "Function needs extension enabled!" ); + + std::vector rects; + uint32_t rectCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR( static_cast( m_physicalDevice ), + static_cast( surface ), + &rectCount, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && rectCount ) + { + rects.resize( rectCount ); + result = static_cast( + getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR( static_cast( m_physicalDevice ), + static_cast( surface ), + &rectCount, + reinterpret_cast( rects.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getPresentRectanglesKHR" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( rectCount <= rects.size() ); + if ( rectCount < rects.size() ) + { + rects.resize( rectCount ); + } + } + return rects; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair + Device::acquireNextImage2KHR( const VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR & acquireInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireNextImage2KHR && + "Function needs extension enabled!" ); + + uint32_t imageIndex; + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkAcquireNextImage2KHR( static_cast( m_device ), + reinterpret_cast( &acquireInfo ), + &imageIndex ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eNotReady ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireNextImage2KHR" ); + } + return std::make_pair( result, imageIndex ); + } + + //=== VK_KHR_display === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getDisplayPropertiesKHR() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR && + "Function needs extension enabled!" ); + + std::vector properties; + uint32_t propertyCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR( + static_cast( m_physicalDevice ), &propertyCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR( + static_cast( m_physicalDevice ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPropertiesKHR" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return properties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getDisplayPlanePropertiesKHR() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR && + "Function needs extension enabled!" ); + + std::vector properties; + uint32_t propertyCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = + static_cast( getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR( + static_cast( m_physicalDevice ), &propertyCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = + static_cast( getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR( + static_cast( m_physicalDevice ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlanePropertiesKHR" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return properties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const + { + return VULKAN_HPP_RAII_NAMESPACE::DisplayKHRs( *this, planeIndex ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + DisplayKHR::getModeProperties() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayModePropertiesKHR && + "Function needs extension enabled!" ); + + std::vector properties; + uint32_t propertyCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( + getDispatcher()->vkGetDisplayModePropertiesKHR( static_cast( m_physicalDevice ), + static_cast( m_display ), + &propertyCount, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkGetDisplayModePropertiesKHR( + static_cast( m_physicalDevice ), + static_cast( m_display ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayKHR::getModeProperties" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return properties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::DisplayModeKHR DisplayKHR::createMode( + VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::DisplayModeKHR( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR + DisplayModeKHR::getDisplayPlaneCapabilities( uint32_t planeIndex ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayPlaneCapabilitiesKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetDisplayPlaneCapabilitiesKHR( + static_cast( m_physicalDevice ), + static_cast( m_displayModeKHR ), + planeIndex, + reinterpret_cast( &capabilities ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayModeKHR::getDisplayPlaneCapabilities" ); + } + return capabilities; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createDisplayPlaneSurfaceKHR( + VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator ); + } + + //=== VK_KHR_display_swapchain === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::createSharedSwapchainsKHR( + VULKAN_HPP_NAMESPACE::ArrayProxy const & createInfos, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SwapchainKHRs( *this, createInfos, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR Device::createSharedSwapchainKHR( + VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR( *this, createInfo, allocator ); + } + +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createXlibSurfaceKHR( + VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32 PhysicalDevice::getXlibPresentationSupportKHR( + uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceXlibPresentationSupportKHR && + "Function needs extension enabled!" ); + + return static_cast( getDispatcher()->vkGetPhysicalDeviceXlibPresentationSupportKHR( + static_cast( m_physicalDevice ), queueFamilyIndex, &dpy, visualID ) ); + } +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +# if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createXcbSurfaceKHR( + VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32 PhysicalDevice::getXcbPresentationSupportKHR( + uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceXcbPresentationSupportKHR && + "Function needs extension enabled!" ); + + return static_cast( getDispatcher()->vkGetPhysicalDeviceXcbPresentationSupportKHR( + static_cast( m_physicalDevice ), queueFamilyIndex, &connection, visual_id ) ); + } +# endif /*VK_USE_PLATFORM_XCB_KHR*/ + +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createWaylandSurfaceKHR( + VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32 + PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, + struct wl_display & display ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceWaylandPresentationSupportKHR && + "Function needs extension enabled!" ); + + return static_cast( + getDispatcher()->vkGetPhysicalDeviceWaylandPresentationSupportKHR( + static_cast( m_physicalDevice ), queueFamilyIndex, &display ) ); + } +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createAndroidSurfaceKHR( + VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createWin32SurfaceKHR( + VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32 + PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceWin32PresentationSupportKHR && + "Function needs extension enabled!" ); + + return static_cast( getDispatcher()->vkGetPhysicalDeviceWin32PresentationSupportKHR( + static_cast( m_physicalDevice ), queueFamilyIndex ) ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::DebugReportCallbackEXT + Instance::createDebugReportCallbackEXT( + VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::DebugReportCallbackEXT( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags, + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_, + uint64_t object, + size_t location, + int32_t messageCode, + const std::string & layerPrefix, + const std::string & message ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkDebugReportMessageEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkDebugReportMessageEXT( static_cast( m_instance ), + static_cast( flags ), + static_cast( objectType_ ), + object, + location, + messageCode, + layerPrefix.c_str(), + message.c_str() ); + } + + //=== VK_EXT_debug_marker === + + VULKAN_HPP_INLINE void + Device::debugMarkerSetObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT & tagInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkDebugMarkerSetObjectTagEXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkDebugMarkerSetObjectTagEXT( + static_cast( m_device ), reinterpret_cast( &tagInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::debugMarkerSetObjectTagEXT" ); + } + } + + VULKAN_HPP_INLINE void + Device::debugMarkerSetObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT & nameInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkDebugMarkerSetObjectNameEXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkDebugMarkerSetObjectNameEXT( + static_cast( m_device ), reinterpret_cast( &nameInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::debugMarkerSetObjectNameEXT" ); + } + } + + VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( + const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerBeginEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdDebugMarkerBeginEXT( static_cast( m_commandBuffer ), + reinterpret_cast( &markerInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerEndEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdDebugMarkerEndEXT( static_cast( m_commandBuffer ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( + const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerInsertEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdDebugMarkerInsertEXT( static_cast( m_commandBuffer ), + reinterpret_cast( &markerInfo ) ); + } + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_queue === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR + PhysicalDevice::getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileKHR & videoProfile ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR capabilities; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &videoProfile ), + reinterpret_cast( &capabilities ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" ); + } + return capabilities; + } + + template + VULKAN_HPP_NODISCARD StructureChain + PhysicalDevice::getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileKHR & videoProfile ) const + { + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR & capabilities = + structureChain.template get(); + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &videoProfile ), + reinterpret_cast( &capabilities ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" ); + } + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getVideoFormatPropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR && + "Function needs extension enabled!" ); + + std::vector videoFormatProperties; + uint32_t videoFormatPropertyCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = + static_cast( getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &videoFormatInfo ), + &videoFormatPropertyCount, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && videoFormatPropertyCount ) + { + videoFormatProperties.resize( videoFormatPropertyCount ); + result = + static_cast( getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &videoFormatInfo ), + &videoFormatPropertyCount, + reinterpret_cast( videoFormatProperties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoFormatPropertiesKHR" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( videoFormatPropertyCount <= videoFormatProperties.size() ); + if ( videoFormatPropertyCount < videoFormatProperties.size() ) + { + videoFormatProperties.resize( videoFormatPropertyCount ); + } + } + return videoFormatProperties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::VideoSessionKHR Device::createVideoSessionKHR( + VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::VideoSessionKHR( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + VideoSessionKHR::getMemoryRequirements() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR && + "Function needs extension enabled!" ); + + std::vector videoSessionMemoryRequirements; + uint32_t videoSessionMemoryRequirementsCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( + getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR( static_cast( m_device ), + static_cast( m_videoSession ), + &videoSessionMemoryRequirementsCount, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && videoSessionMemoryRequirementsCount ) + { + videoSessionMemoryRequirements.resize( videoSessionMemoryRequirementsCount ); + result = static_cast( getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR( + static_cast( m_device ), + static_cast( m_videoSession ), + &videoSessionMemoryRequirementsCount, + reinterpret_cast( videoSessionMemoryRequirements.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::VideoSessionKHR::getMemoryRequirements" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( videoSessionMemoryRequirementsCount <= videoSessionMemoryRequirements.size() ); + if ( videoSessionMemoryRequirementsCount < videoSessionMemoryRequirements.size() ) + { + videoSessionMemoryRequirements.resize( videoSessionMemoryRequirementsCount ); + } + } + return videoSessionMemoryRequirements; + } + + VULKAN_HPP_INLINE void VideoSessionKHR::bindMemory( + ArrayProxy const & videoSessionBindMemories ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBindVideoSessionMemoryKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkBindVideoSessionMemoryKHR( + static_cast( m_device ), + static_cast( m_videoSession ), + videoSessionBindMemories.size(), + reinterpret_cast( videoSessionBindMemories.data() ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::VideoSessionKHR::bindMemory" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::VideoSessionParametersKHR + Device::createVideoSessionParametersKHR( + VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::VideoSessionParametersKHR( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void VideoSessionParametersKHR::update( + const VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR & updateInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateVideoSessionParametersKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkUpdateVideoSessionParametersKHR( + static_cast( m_device ), + static_cast( m_videoSessionParameters ), + reinterpret_cast( &updateInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::VideoSessionParametersKHR::update" ); + } + } + + VULKAN_HPP_INLINE void CommandBuffer::beginVideoCodingKHR( + const VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR & beginInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginVideoCodingKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdBeginVideoCodingKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &beginInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::endVideoCodingKHR( + const VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR & endCodingInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndVideoCodingKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdEndVideoCodingKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &endCodingInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::controlVideoCodingKHR( + const VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR & codingControlInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdControlVideoCodingKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdControlVideoCodingKHR( + static_cast( m_commandBuffer ), + reinterpret_cast( &codingControlInfo ) ); + } +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_decode_queue === + + VULKAN_HPP_INLINE void CommandBuffer::decodeVideoKHR( + const VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR & frameInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecodeVideoKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdDecodeVideoKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &frameInfo ) ); + } +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_transform_feedback === + + VULKAN_HPP_INLINE void CommandBuffer::bindTransformFeedbackBuffersEXT( + uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdBindTransformFeedbackBuffersEXT && + "Function needs extension enabled!" ); + +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); + VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != offsets.size()" ); + } + if ( !sizes.empty() && buffers.size() != sizes.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != sizes.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdBindTransformFeedbackBuffersEXT( static_cast( m_commandBuffer ), + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ), + reinterpret_cast( sizes.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::beginTransformFeedbackEXT( + uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdBeginTransformFeedbackEXT && + "Function needs extension enabled!" ); + +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() ); +# else + if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::beginTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdBeginTransformFeedbackEXT( + static_cast( m_commandBuffer ), + firstCounterBuffer, + counterBuffers.size(), + reinterpret_cast( counterBuffers.data() ), + reinterpret_cast( counterBufferOffsets.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::endTransformFeedbackEXT( + uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdEndTransformFeedbackEXT && + "Function needs extension enabled!" ); + +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() ); +# else + if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::endTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdEndTransformFeedbackEXT( + static_cast( m_commandBuffer ), + firstCounterBuffer, + counterBuffers.size(), + reinterpret_cast( counterBuffers.data() ), + reinterpret_cast( counterBufferOffsets.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + VULKAN_HPP_NAMESPACE::QueryControlFlags flags, + uint32_t index ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginQueryIndexedEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdBeginQueryIndexedEXT( static_cast( m_commandBuffer ), + static_cast( queryPool ), + query, + static_cast( flags ), + index ); + } + + VULKAN_HPP_INLINE void CommandBuffer::endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + uint32_t index ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndQueryIndexedEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdEndQueryIndexedEXT( + static_cast( m_commandBuffer ), static_cast( queryPool ), query, index ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::drawIndirectByteCountEXT( uint32_t instanceCount, + uint32_t firstInstance, + VULKAN_HPP_NAMESPACE::Buffer counterBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdDrawIndirectByteCountEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdDrawIndirectByteCountEXT( static_cast( m_commandBuffer ), + instanceCount, + firstInstance, + static_cast( counterBuffer ), + static_cast( counterBufferOffset ), + counterOffset, + vertexStride ); + } + + //=== VK_NVX_binary_import === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::CuModuleNVX Device::createCuModuleNVX( + VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::CuModuleNVX( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::CuFunctionNVX Device::createCuFunctionNVX( + VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::CuFunctionNVX( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void CommandBuffer::cuLaunchKernelNVX( + const VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX & launchInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCuLaunchKernelNVX && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdCuLaunchKernelNVX( static_cast( m_commandBuffer ), + reinterpret_cast( &launchInfo ) ); + } + + //=== VK_NVX_image_view_handle === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t Device::getImageViewHandleNVX( + const VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewHandleNVX && + "Function needs extension enabled!" ); + + return getDispatcher()->vkGetImageViewHandleNVX( static_cast( m_device ), + reinterpret_cast( &info ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX + ImageView::getAddressNVX() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewAddressNVX && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX properties; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetImageViewAddressNVX( + static_cast( m_device ), + static_cast( m_imageView ), + reinterpret_cast( &properties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::ImageView::getAddressNVX" ); + } + return properties; + } + + //=== VK_AMD_draw_indirect_count === + + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCountAMD && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdDrawIndirectCountAMD( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdDrawIndexedIndirectCountAMD && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdDrawIndexedIndirectCountAMD( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + //=== VK_AMD_shader_info === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Pipeline::getShaderInfoAMD( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage, + VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderInfoAMD && + "Function needs extension enabled!" ); + + std::vector info; + size_t infoSize; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( + getDispatcher()->vkGetShaderInfoAMD( static_cast( m_device ), + static_cast( m_pipeline ), + static_cast( shaderStage ), + static_cast( infoType ), + &infoSize, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && infoSize ) + { + info.resize( infoSize ); + result = static_cast( + getDispatcher()->vkGetShaderInfoAMD( static_cast( m_device ), + static_cast( m_pipeline ), + static_cast( shaderStage ), + static_cast( infoType ), + &infoSize, + reinterpret_cast( info.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getShaderInfoAMD" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( infoSize <= info.size() ); + if ( infoSize < info.size() ) + { + info.resize( infoSize ); + } + } + return info; + } + + //=== VK_KHR_dynamic_rendering === + + VULKAN_HPP_INLINE void CommandBuffer::beginRenderingKHR( + const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderingKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdBeginRenderingKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &renderingInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::endRenderingKHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderingKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdEndRenderingKHR( static_cast( m_commandBuffer ) ); + } + +# if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR + Instance::createStreamDescriptorSurfaceGGP( + VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV + PhysicalDevice::getExternalImageFormatPropertiesNV( + VULKAN_HPP_NAMESPACE::Format format, + VULKAN_HPP_NAMESPACE::ImageType type, + VULKAN_HPP_NAMESPACE::ImageTiling tiling, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceExternalImageFormatPropertiesNV && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV externalImageFormatProperties; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetPhysicalDeviceExternalImageFormatPropertiesNV( + static_cast( m_physicalDevice ), + static_cast( format ), + static_cast( type ), + static_cast( tiling ), + static_cast( usage ), + static_cast( flags ), + static_cast( externalHandleType ), + reinterpret_cast( &externalImageFormatProperties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, + VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getExternalImageFormatPropertiesNV" ); + } + return externalImageFormatProperties; + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE + DeviceMemory::getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryWin32HandleNV && + "Function needs extension enabled!" ); + + HANDLE handle; + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkGetMemoryWin32HandleNV( static_cast( m_device ), + static_cast( m_memory ), + static_cast( handleType ), + &handle ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DeviceMemory::getMemoryWin32HandleNV" ); + } + return handle; + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_get_physical_device_properties2 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 + PhysicalDevice::getFeatures2KHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceFeatures2KHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 features; + getDispatcher()->vkGetPhysicalDeviceFeatures2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &features ) ); + return features; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getFeatures2KHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceFeatures2KHR && + "Function needs extension enabled!" ); + + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 & features = + structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceFeatures2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &features ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 + PhysicalDevice::getProperties2KHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceProperties2KHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 properties; + getDispatcher()->vkGetPhysicalDeviceProperties2KHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &properties ) ); + return properties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getProperties2KHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceProperties2KHR && + "Function needs extension enabled!" ); + + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 & properties = + structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceProperties2KHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &properties ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties2 + PhysicalDevice::getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::FormatProperties2 formatProperties; + getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR( + static_cast( m_physicalDevice ), + static_cast( format ), + reinterpret_cast( &formatProperties ) ); + return formatProperties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR && + "Function needs extension enabled!" ); + + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::FormatProperties2 & formatProperties = + structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR( + static_cast( m_physicalDevice ), + static_cast( format ), + reinterpret_cast( &formatProperties ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageFormatProperties2 + PhysicalDevice::getImageFormatProperties2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::ImageFormatProperties2 imageFormatProperties; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" ); + } + return imageFormatProperties; + } + + template + VULKAN_HPP_NODISCARD StructureChain PhysicalDevice::getImageFormatProperties2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const + { + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::ImageFormatProperties2 & imageFormatProperties = + structureChain.template get(); + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" ); + } + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getQueueFamilyProperties2KHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR && + "Function needs extension enabled!" ); + + uint32_t queueFamilyPropertyCount; + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( + static_cast( m_physicalDevice ), &queueFamilyPropertyCount, nullptr ); + std::vector queueFamilyProperties( queueFamilyPropertyCount ); + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( + static_cast( m_physicalDevice ), + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + VULKAN_HPP_ASSERT( queueFamilyPropertyCount == queueFamilyProperties.size() ); + return queueFamilyProperties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getQueueFamilyProperties2KHR() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR && + "Function needs extension enabled!" ); + + uint32_t queueFamilyPropertyCount; + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( + static_cast( m_physicalDevice ), &queueFamilyPropertyCount, nullptr ); + std::vector returnVector( queueFamilyPropertyCount ); + std::vector queueFamilyProperties( queueFamilyPropertyCount ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + queueFamilyProperties[i].pNext = + returnVector[i].template get().pNext; + } + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( + static_cast( m_physicalDevice ), + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + returnVector[i].template get() = queueFamilyProperties[i]; + } + return returnVector; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 + PhysicalDevice::getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 memoryProperties; + getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &memoryProperties ) ); + return memoryProperties; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + PhysicalDevice::getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR && + "Function needs extension enabled!" ); + + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 & memoryProperties = + structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &memoryProperties ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR && + "Function needs extension enabled!" ); + + uint32_t propertyCount; + getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &formatInfo ), + &propertyCount, + nullptr ); + std::vector properties( propertyCount ); + getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &formatInfo ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + VULKAN_HPP_ASSERT( propertyCount == properties.size() ); + return properties; + } + + //=== VK_KHR_device_group === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags + Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDeviceGroupPeerMemoryFeaturesKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags peerMemoryFeatures; + getDispatcher()->vkGetDeviceGroupPeerMemoryFeaturesKHR( + static_cast( m_device ), + heapIndex, + localDeviceIndex, + remoteDeviceIndex, + reinterpret_cast( &peerMemoryFeatures ) ); + return peerMemoryFeatures; + } + + VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHR( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDeviceMaskKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetDeviceMaskKHR( static_cast( m_commandBuffer ), deviceMask ); + } + + VULKAN_HPP_INLINE void CommandBuffer::dispatchBaseKHR( uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchBaseKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdDispatchBaseKHR( static_cast( m_commandBuffer ), + baseGroupX, + baseGroupY, + baseGroupZ, + groupCountX, + groupCountY, + groupCountZ ); + } + +# if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createViSurfaceNN( + VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_maintenance1 === + + VULKAN_HPP_INLINE void + CommandPool::trimKHR( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkTrimCommandPoolKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkTrimCommandPoolKHR( static_cast( m_device ), + static_cast( m_commandPool ), + static_cast( flags ) ); + } + + //=== VK_KHR_device_group_creation === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Instance::enumeratePhysicalDeviceGroupsKHR() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR && + "Function needs extension enabled!" ); + + std::vector physicalDeviceGroupProperties; + uint32_t physicalDeviceGroupCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR( + static_cast( m_instance ), &physicalDeviceGroupCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && physicalDeviceGroupCount ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + result = static_cast( getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR( + static_cast( m_instance ), + &physicalDeviceGroupCount, + reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroupsKHR" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); + if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + } + } + return physicalDeviceGroupProperties; + } + + //=== VK_KHR_external_memory_capabilities === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalBufferProperties + PhysicalDevice::getExternalBufferPropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceExternalBufferPropertiesKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::ExternalBufferProperties externalBufferProperties; + getDispatcher()->vkGetPhysicalDeviceExternalBufferPropertiesKHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &externalBufferInfo ), + reinterpret_cast( &externalBufferProperties ) ); + return externalBufferProperties; + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE Device::getMemoryWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetMemoryWin32HandleKHR && + "Function needs extension enabled!" ); + + HANDLE handle; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetMemoryWin32HandleKHR( + static_cast( m_device ), + reinterpret_cast( &getWin32HandleInfo ), + &handle ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandleKHR" ); + } + return handle; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR + Device::getMemoryWin32HandlePropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + HANDLE handle ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetMemoryWin32HandlePropertiesKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetMemoryWin32HandlePropertiesKHR( + static_cast( m_device ), + static_cast( handleType ), + handle, + reinterpret_cast( &memoryWin32HandleProperties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandlePropertiesKHR" ); + } + return memoryWin32HandleProperties; + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE int + Device::getMemoryFdKHR( const VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR & getFdInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryFdKHR && + "Function needs extension enabled!" ); + + int fd; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetMemoryFdKHR( + static_cast( m_device ), reinterpret_cast( &getFdInfo ), &fd ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryFdKHR" ); + } + return fd; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR + Device::getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + int fd ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryFdPropertiesKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR memoryFdProperties; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetMemoryFdPropertiesKHR( + static_cast( m_device ), + static_cast( handleType ), + fd, + reinterpret_cast( &memoryFdProperties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryFdPropertiesKHR" ); + } + return memoryFdProperties; + } + + //=== VK_KHR_external_semaphore_capabilities === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties + PhysicalDevice::getExternalSemaphorePropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const + VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties externalSemaphoreProperties; + getDispatcher()->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &externalSemaphoreInfo ), + reinterpret_cast( &externalSemaphoreProperties ) ); + return externalSemaphoreProperties; + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + + VULKAN_HPP_INLINE void Device::importSemaphoreWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkImportSemaphoreWin32HandleKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkImportSemaphoreWin32HandleKHR( + static_cast( m_device ), + reinterpret_cast( &importSemaphoreWin32HandleInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreWin32HandleKHR" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE Device::getSemaphoreWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetSemaphoreWin32HandleKHR && + "Function needs extension enabled!" ); + + HANDLE handle; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetSemaphoreWin32HandleKHR( + static_cast( m_device ), + reinterpret_cast( &getWin32HandleInfo ), + &handle ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreWin32HandleKHR" ); + } + return handle; + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + + VULKAN_HPP_INLINE void + Device::importSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkImportSemaphoreFdKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkImportSemaphoreFdKHR( + static_cast( m_device ), + reinterpret_cast( &importSemaphoreFdInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreFdKHR" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE int + Device::getSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR & getFdInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreFdKHR && + "Function needs extension enabled!" ); + + int fd; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetSemaphoreFdKHR( + static_cast( m_device ), reinterpret_cast( &getFdInfo ), &fd ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreFdKHR" ); + } + return fd; + } + + //=== VK_KHR_push_descriptor === + + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + ArrayProxy const & descriptorWrites ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSetKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdPushDescriptorSetKHR( + static_cast( m_commandBuffer ), + static_cast( pipelineBindPoint ), + static_cast( layout ), + set, + descriptorWrites.size(), + reinterpret_cast( descriptorWrites.data() ) ); + } + + template + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + DataType const & data ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdPushDescriptorSetWithTemplateKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdPushDescriptorSetWithTemplateKHR( + static_cast( m_commandBuffer ), + static_cast( descriptorUpdateTemplate ), + static_cast( layout ), + set, + reinterpret_cast( &data ) ); + } + + //=== VK_EXT_conditional_rendering === + + VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT( + const VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin ) const + VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdBeginConditionalRenderingEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdBeginConditionalRenderingEXT( + static_cast( m_commandBuffer ), + reinterpret_cast( &conditionalRenderingBegin ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::endConditionalRenderingEXT() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdEndConditionalRenderingEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdEndConditionalRenderingEXT( static_cast( m_commandBuffer ) ); + } + + //=== VK_KHR_descriptor_update_template === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::DescriptorUpdateTemplate + Device::createDescriptorUpdateTemplateKHR( + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::DescriptorUpdateTemplate( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + Optional allocator ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkDestroyDescriptorUpdateTemplateKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkDestroyDescriptorUpdateTemplateKHR( + static_cast( m_device ), + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( + static_cast( allocator ) ) ); + } + + template + VULKAN_HPP_INLINE void + DescriptorSet::updateWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + DataType const & data ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkUpdateDescriptorSetWithTemplateKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkUpdateDescriptorSetWithTemplateKHR( + static_cast( m_device ), + static_cast( m_descriptorSet ), + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( &data ) ); + } + + //=== VK_NV_clip_space_w_scaling === + + VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( + uint32_t firstViewport, + ArrayProxy const & viewportWScalings ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetViewportWScalingNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetViewportWScalingNV( + static_cast( m_commandBuffer ), + firstViewport, + viewportWScalings.size(), + reinterpret_cast( viewportWScalings.data() ) ); + } + +# if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + + VULKAN_HPP_INLINE void PhysicalDevice::acquireXlibDisplayEXT( Display & dpy, + VULKAN_HPP_NAMESPACE::DisplayKHR display ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireXlibDisplayEXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkAcquireXlibDisplayEXT( + static_cast( m_physicalDevice ), &dpy, static_cast( display ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireXlibDisplayEXT" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::DisplayKHR + PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const + { + return VULKAN_HPP_RAII_NAMESPACE::DisplayKHR( *this, dpy, rrOutput ); + } +# endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_display_surface_counter === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT + PhysicalDevice::getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2EXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT surfaceCapabilities; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2EXT( + static_cast( m_physicalDevice ), + static_cast( surface ), + reinterpret_cast( &surfaceCapabilities ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2EXT" ); + } + return surfaceCapabilities; + } + + //=== VK_EXT_display_control === + + VULKAN_HPP_INLINE void + Device::displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, + const VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT & displayPowerInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkDisplayPowerControlEXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkDisplayPowerControlEXT( + static_cast( m_device ), + static_cast( display ), + reinterpret_cast( &displayPowerInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::displayPowerControlEXT" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Fence Device::registerEventEXT( + VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const & deviceEventInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Fence( *this, deviceEventInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Fence Device::registerDisplayEventEXT( + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const & display, + VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const & displayEventInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Fence( *this, display, displayEventInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t + SwapchainKHR::getCounterEXT( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainCounterEXT && + "Function needs extension enabled!" ); + + uint64_t counterValue; + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkGetSwapchainCounterEXT( static_cast( m_device ), + static_cast( m_swapchain ), + static_cast( counter ), + &counterValue ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getCounterEXT" ); + } + return counterValue; + } + + //=== VK_GOOGLE_display_timing === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE + SwapchainKHR::getRefreshCycleDurationGOOGLE() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetRefreshCycleDurationGOOGLE && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE displayTimingProperties; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetRefreshCycleDurationGOOGLE( + static_cast( m_device ), + static_cast( m_swapchain ), + reinterpret_cast( &displayTimingProperties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getRefreshCycleDurationGOOGLE" ); + } + return displayTimingProperties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + SwapchainKHR::getPastPresentationTimingGOOGLE() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPastPresentationTimingGOOGLE && + "Function needs extension enabled!" ); + + std::vector presentationTimings; + uint32_t presentationTimingCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPastPresentationTimingGOOGLE( static_cast( m_device ), + static_cast( m_swapchain ), + &presentationTimingCount, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && presentationTimingCount ) + { + presentationTimings.resize( presentationTimingCount ); + result = static_cast( getDispatcher()->vkGetPastPresentationTimingGOOGLE( + static_cast( m_device ), + static_cast( m_swapchain ), + &presentationTimingCount, + reinterpret_cast( presentationTimings.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getPastPresentationTimingGOOGLE" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() ); + if ( presentationTimingCount < presentationTimings.size() ) + { + presentationTimings.resize( presentationTimingCount ); + } + } + return presentationTimings; + } + + //=== VK_EXT_discard_rectangles === + + VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( + uint32_t firstDiscardRectangle, + ArrayProxy const & discardRectangles ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetDiscardRectangleEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetDiscardRectangleEXT( static_cast( m_commandBuffer ), + firstDiscardRectangle, + discardRectangles.size(), + reinterpret_cast( discardRectangles.data() ) ); + } + + //=== VK_EXT_hdr_metadata === + + VULKAN_HPP_INLINE void + Device::setHdrMetadataEXT( ArrayProxy const & swapchains, + ArrayProxy const & metadata ) const + VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetHdrMetadataEXT && + "Function needs extension enabled!" ); + +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( swapchains.size() == metadata.size() ); +# else + if ( swapchains.size() != metadata.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkSetHdrMetadataEXT( static_cast( m_device ), + swapchains.size(), + reinterpret_cast( swapchains.data() ), + reinterpret_cast( metadata.data() ) ); + } + + //=== VK_KHR_create_renderpass2 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::RenderPass Device::createRenderPass2KHR( + VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::RenderPass( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2KHR( + const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin, + const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderPass2KHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdBeginRenderPass2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &renderPassBegin ), + reinterpret_cast( &subpassBeginInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2KHR( + const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo, + const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdNextSubpass2KHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdNextSubpass2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &subpassBeginInfo ), + reinterpret_cast( &subpassEndInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( + const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderPass2KHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdEndRenderPass2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &subpassEndInfo ) ); + } + + //=== VK_KHR_shared_presentable_image === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result SwapchainKHR::getStatus() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetSwapchainStatusKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetSwapchainStatusKHR( + static_cast( m_device ), static_cast( m_swapchain ) ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getStatus" ); + } + return result; + } + + //=== VK_KHR_external_fence_capabilities === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalFenceProperties + PhysicalDevice::getExternalFencePropertiesKHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceExternalFencePropertiesKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::ExternalFenceProperties externalFenceProperties; + getDispatcher()->vkGetPhysicalDeviceExternalFencePropertiesKHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &externalFenceInfo ), + reinterpret_cast( &externalFenceProperties ) ); + return externalFenceProperties; + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + + VULKAN_HPP_INLINE void Device::importFenceWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkImportFenceWin32HandleKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkImportFenceWin32HandleKHR( + static_cast( m_device ), + reinterpret_cast( &importFenceWin32HandleInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importFenceWin32HandleKHR" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE Device::getFenceWin32HandleKHR( + const VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetFenceWin32HandleKHR && + "Function needs extension enabled!" ); + + HANDLE handle; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetFenceWin32HandleKHR( + static_cast( m_device ), + reinterpret_cast( &getWin32HandleInfo ), + &handle ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceWin32HandleKHR" ); + } + return handle; + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + + VULKAN_HPP_INLINE void + Device::importFenceFdKHR( const VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR & importFenceFdInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkImportFenceFdKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkImportFenceFdKHR( + static_cast( m_device ), reinterpret_cast( &importFenceFdInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importFenceFdKHR" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE int + Device::getFenceFdKHR( const VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR & getFdInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetFenceFdKHR && + "Function needs extension enabled!" ); + + int fd; + VULKAN_HPP_NAMESPACE::Result result = static_cast( getDispatcher()->vkGetFenceFdKHR( + static_cast( m_device ), reinterpret_cast( &getFdInfo ), &fd ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceFdKHR" ); + } + return fd; + } + + //=== VK_KHR_performance_query === + + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::pair, std::vector> + PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR && + "Function needs extension enabled!" ); + + std::pair, std::vector> data; + std::vector & counters = data.first; + std::vector & counterDescriptions = data.second; + uint32_t counterCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( + getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + static_cast( m_physicalDevice ), queueFamilyIndex, &counterCount, nullptr, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && counterCount ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + result = static_cast( + getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + static_cast( m_physicalDevice ), + queueFamilyIndex, + &counterCount, + reinterpret_cast( counters.data() ), + reinterpret_cast( counterDescriptions.data() ) ) ); + VULKAN_HPP_ASSERT( counterCount <= counters.size() ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( counterCount < counters.size() ) ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + } + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( + result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR" ); + } + return data; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t PhysicalDevice::getQueueFamilyPerformanceQueryPassesKHR( + const VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR && + "Function needs extension enabled!" ); + + uint32_t numPasses; + getDispatcher()->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &performanceQueryCreateInfo ), + &numPasses ); + return numPasses; + } + + VULKAN_HPP_INLINE void + Device::acquireProfilingLockKHR( const VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireProfilingLockKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkAcquireProfilingLockKHR( + static_cast( m_device ), reinterpret_cast( &info ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireProfilingLockKHR" ); + } + } + + VULKAN_HPP_INLINE void Device::releaseProfilingLockKHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseProfilingLockKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkReleaseProfilingLockKHR( static_cast( m_device ) ); + } + + //=== VK_KHR_get_surface_capabilities2 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR + PhysicalDevice::getSurfaceCapabilities2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR surfaceCapabilities; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &surfaceInfo ), + reinterpret_cast( &surfaceCapabilities ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" ); + } + return surfaceCapabilities; + } + + template + VULKAN_HPP_NODISCARD StructureChain PhysicalDevice::getSurfaceCapabilities2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const + { + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR & surfaceCapabilities = + structureChain.template get(); + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &surfaceInfo ), + reinterpret_cast( &surfaceCapabilities ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" ); + } + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSurfaceFormats2KHR( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR && + "Function needs extension enabled!" ); + + std::vector surfaceFormats; + uint32_t surfaceFormatCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &surfaceInfo ), + &surfaceFormatCount, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && surfaceFormatCount ) + { + surfaceFormats.resize( surfaceFormatCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &surfaceInfo ), + &surfaceFormatCount, + reinterpret_cast( surfaceFormats.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormats2KHR" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); + if ( surfaceFormatCount < surfaceFormats.size() ) + { + surfaceFormats.resize( surfaceFormatCount ); + } + } + return surfaceFormats; + } + + //=== VK_KHR_get_display_properties2 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getDisplayProperties2KHR() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR && + "Function needs extension enabled!" ); + + std::vector properties; + uint32_t propertyCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR( + static_cast( m_physicalDevice ), &propertyCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR( + static_cast( m_physicalDevice ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayProperties2KHR" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return properties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getDisplayPlaneProperties2KHR() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR && + "Function needs extension enabled!" ); + + std::vector properties; + uint32_t propertyCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = + static_cast( getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR( + static_cast( m_physicalDevice ), &propertyCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = + static_cast( getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR( + static_cast( m_physicalDevice ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneProperties2KHR" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return properties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + DisplayKHR::getModeProperties2() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDisplayModeProperties2KHR && + "Function needs extension enabled!" ); + + std::vector properties; + uint32_t propertyCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( + getDispatcher()->vkGetDisplayModeProperties2KHR( static_cast( m_physicalDevice ), + static_cast( m_display ), + &propertyCount, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkGetDisplayModeProperties2KHR( + static_cast( m_physicalDevice ), + static_cast( m_display ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayKHR::getModeProperties2" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return properties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR + PhysicalDevice::getDisplayPlaneCapabilities2KHR( + const VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR & displayPlaneInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDisplayPlaneCapabilities2KHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR capabilities; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetDisplayPlaneCapabilities2KHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &displayPlaneInfo ), + reinterpret_cast( &capabilities ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneCapabilities2KHR" ); + } + return capabilities; + } + +# if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createIOSSurfaceMVK( + VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_IOS_MVK*/ + +# if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createMacOSSurfaceMVK( + VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + + VULKAN_HPP_INLINE void + Device::setDebugUtilsObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT & nameInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetDebugUtilsObjectNameEXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkSetDebugUtilsObjectNameEXT( + static_cast( m_device ), reinterpret_cast( &nameInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setDebugUtilsObjectNameEXT" ); + } + } + + VULKAN_HPP_INLINE void + Device::setDebugUtilsObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT & tagInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetDebugUtilsObjectTagEXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkSetDebugUtilsObjectTagEXT( + static_cast( m_device ), reinterpret_cast( &tagInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setDebugUtilsObjectTagEXT" ); + } + } + + VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( + const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueueBeginDebugUtilsLabelEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkQueueBeginDebugUtilsLabelEXT( static_cast( m_queue ), + reinterpret_cast( &labelInfo ) ); + } + + VULKAN_HPP_INLINE void Queue::endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueueEndDebugUtilsLabelEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkQueueEndDebugUtilsLabelEXT( static_cast( m_queue ) ); + } + + VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( + const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueueInsertDebugUtilsLabelEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkQueueInsertDebugUtilsLabelEXT( static_cast( m_queue ), + reinterpret_cast( &labelInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::beginDebugUtilsLabelEXT( + const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginDebugUtilsLabelEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdBeginDebugUtilsLabelEXT( static_cast( m_commandBuffer ), + reinterpret_cast( &labelInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndDebugUtilsLabelEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdEndDebugUtilsLabelEXT( static_cast( m_commandBuffer ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::insertDebugUtilsLabelEXT( + const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdInsertDebugUtilsLabelEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdInsertDebugUtilsLabelEXT( static_cast( m_commandBuffer ), + reinterpret_cast( &labelInfo ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::DebugUtilsMessengerEXT + Instance::createDebugUtilsMessengerEXT( + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::DebugUtilsMessengerEXT( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT( + VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageTypes, + const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT & callbackData ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSubmitDebugUtilsMessageEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkSubmitDebugUtilsMessageEXT( + static_cast( m_instance ), + static_cast( messageSeverity ), + static_cast( messageTypes ), + reinterpret_cast( &callbackData ) ); + } + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID + Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID properties; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID( + static_cast( m_device ), + &buffer, + reinterpret_cast( &properties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" ); + } + return properties; + } + + template + VULKAN_HPP_NODISCARD StructureChain + Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const + { + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID & properties = + structureChain.template get(); + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID( + static_cast( m_device ), + &buffer, + reinterpret_cast( &properties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" ); + } + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE struct AHardwareBuffer * Device::getMemoryAndroidHardwareBufferANDROID( + const VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID & info ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetMemoryAndroidHardwareBufferANDROID && + "Function needs extension enabled!" ); + + struct AHardwareBuffer * buffer; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetMemoryAndroidHardwareBufferANDROID( + static_cast( m_device ), + reinterpret_cast( &info ), + &buffer ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryAndroidHardwareBufferANDROID" ); + } + return buffer; + } +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + //=== VK_EXT_sample_locations === + + VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( + const VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT & sampleLocationsInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetSampleLocationsEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetSampleLocationsEXT( + static_cast( m_commandBuffer ), + reinterpret_cast( &sampleLocationsInfo ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT + PhysicalDevice::getMultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples ) const + VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceMultisamplePropertiesEXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT multisampleProperties; + getDispatcher()->vkGetPhysicalDeviceMultisamplePropertiesEXT( + static_cast( m_physicalDevice ), + static_cast( samples ), + reinterpret_cast( &multisampleProperties ) ); + return multisampleProperties; + } + + //=== VK_KHR_get_memory_requirements2 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getImageMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const + VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetImageMemoryRequirements2KHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetImageMemoryRequirements2KHR( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getImageMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetImageMemoryRequirements2KHR && + "Function needs extension enabled!" ); + + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + getDispatcher()->vkGetImageMemoryRequirements2KHR( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getBufferMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const + VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetBufferMemoryRequirements2KHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetBufferMemoryRequirements2KHR( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getBufferMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetBufferMemoryRequirements2KHR && + "Function needs extension enabled!" ); + + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + getDispatcher()->vkGetBufferMemoryRequirements2KHR( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements2KHR( + const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetImageSparseMemoryRequirements2KHR && + "Function needs extension enabled!" ); + + uint32_t sparseMemoryRequirementCount; + getDispatcher()->vkGetImageSparseMemoryRequirements2KHR( + static_cast( m_device ), + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + nullptr ); + std::vector sparseMemoryRequirements( + sparseMemoryRequirementCount ); + getDispatcher()->vkGetImageSparseMemoryRequirements2KHR( + static_cast( m_device ), + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount == sparseMemoryRequirements.size() ); + return sparseMemoryRequirements; + } + + //=== VK_KHR_acceleration_structure === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureKHR + Device::createAccelerationStructureKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureKHR( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresKHR( + ArrayProxy const & infos, + ArrayProxy const & pBuildRangeInfos ) + const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdBuildAccelerationStructuresKHR && + "Function needs extension enabled!" ); + +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( infos.size() == pBuildRangeInfos.size() ); +# else + if ( infos.size() != pBuildRangeInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdBuildAccelerationStructuresKHR( + static_cast( m_commandBuffer ), + infos.size(), + reinterpret_cast( infos.data() ), + reinterpret_cast( pBuildRangeInfos.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresIndirectKHR( + ArrayProxy const & infos, + ArrayProxy const & indirectDeviceAddresses, + ArrayProxy const & indirectStrides, + ArrayProxy const & pMaxPrimitiveCounts ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdBuildAccelerationStructuresIndirectKHR && + "Function needs extension enabled!" ); + +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( infos.size() == indirectDeviceAddresses.size() ); + VULKAN_HPP_ASSERT( infos.size() == indirectStrides.size() ); + VULKAN_HPP_ASSERT( infos.size() == pMaxPrimitiveCounts.size() ); +# else + if ( infos.size() != indirectDeviceAddresses.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectDeviceAddresses.size()" ); + } + if ( infos.size() != indirectStrides.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectStrides.size()" ); + } + if ( infos.size() != pMaxPrimitiveCounts.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != pMaxPrimitiveCounts.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdBuildAccelerationStructuresIndirectKHR( + static_cast( m_commandBuffer ), + infos.size(), + reinterpret_cast( infos.data() ), + reinterpret_cast( indirectDeviceAddresses.data() ), + indirectStrides.data(), + pMaxPrimitiveCounts.data() ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Device::buildAccelerationStructuresKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + ArrayProxy const & infos, + ArrayProxy const & pBuildRangeInfos ) + const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkBuildAccelerationStructuresKHR && + "Function needs extension enabled!" ); + if ( infos.size() != pBuildRangeInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::Device::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" ); + } + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkBuildAccelerationStructuresKHR( + static_cast( m_device ), + static_cast( deferredOperation ), + infos.size(), + reinterpret_cast( infos.data() ), + reinterpret_cast( pBuildRangeInfos.data() ) ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::buildAccelerationStructuresKHR" ); + } + return result; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result + Device::copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCopyAccelerationStructureKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkCopyAccelerationStructureKHR( + static_cast( m_device ), + static_cast( deferredOperation ), + reinterpret_cast( &info ) ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyAccelerationStructureKHR" ); + } + return result; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Device::copyAccelerationStructureToMemoryKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCopyAccelerationStructureToMemoryKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkCopyAccelerationStructureToMemoryKHR( + static_cast( m_device ), + static_cast( deferredOperation ), + reinterpret_cast( &info ) ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyAccelerationStructureToMemoryKHR" ); + } + return result; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Device::copyMemoryToAccelerationStructureKHR( + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCopyMemoryToAccelerationStructureKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkCopyMemoryToAccelerationStructureKHR( + static_cast( m_device ), + static_cast( deferredOperation ), + reinterpret_cast( &info ) ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyMemoryToAccelerationStructureKHR" ); + } + return result; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Device::writeAccelerationStructuresPropertiesKHR( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + size_t dataSize, + size_t stride ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR( + static_cast( m_device ), + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ), + stride ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertiesKHR" ); + } + return data; + } + + template + VULKAN_HPP_NODISCARD DataType Device::writeAccelerationStructuresPropertyKHR( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + size_t stride ) const + { + DataType data; + Result result = static_cast( getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR( + static_cast( m_device ), + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + sizeof( DataType ), + reinterpret_cast( &data ), + stride ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertyKHR" ); + } + return data; + } + + VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureKHR( + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdCopyAccelerationStructureKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdCopyAccelerationStructureKHR( + static_cast( m_commandBuffer ), + reinterpret_cast( &info ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureToMemoryKHR( + const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdCopyAccelerationStructureToMemoryKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdCopyAccelerationStructureToMemoryKHR( + static_cast( m_commandBuffer ), + reinterpret_cast( &info ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToAccelerationStructureKHR( + const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdCopyMemoryToAccelerationStructureKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdCopyMemoryToAccelerationStructureKHR( + static_cast( m_commandBuffer ), + reinterpret_cast( &info ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress + Device::getAccelerationStructureAddressKHR( + const VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetAccelerationStructureDeviceAddressKHR && + "Function needs extension enabled!" ); + + return static_cast( + getDispatcher()->vkGetAccelerationStructureDeviceAddressKHR( + static_cast( m_device ), + reinterpret_cast( &info ) ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesKHR( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesKHR( + static_cast( m_commandBuffer ), + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + static_cast( queryPool ), + firstQuery ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR + Device::getAccelerationStructureCompatibilityKHR( + const VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR & versionInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDeviceAccelerationStructureCompatibilityKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR compatibility; + getDispatcher()->vkGetDeviceAccelerationStructureCompatibilityKHR( + static_cast( m_device ), + reinterpret_cast( &versionInfo ), + reinterpret_cast( &compatibility ) ); + return compatibility; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR + Device::getAccelerationStructureBuildSizesKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType, + const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR & buildInfo, + ArrayProxy const & maxPrimitiveCounts ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetAccelerationStructureBuildSizesKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR sizeInfo; + getDispatcher()->vkGetAccelerationStructureBuildSizesKHR( + static_cast( m_device ), + static_cast( buildType ), + reinterpret_cast( &buildInfo ), + maxPrimitiveCounts.data(), + reinterpret_cast( &sizeInfo ) ); + return sizeInfo; + } + + //=== VK_KHR_sampler_ycbcr_conversion === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SamplerYcbcrConversion + Device::createSamplerYcbcrConversionKHR( + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SamplerYcbcrConversion( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, + Optional allocator ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkDestroySamplerYcbcrConversionKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkDestroySamplerYcbcrConversionKHR( + static_cast( m_device ), + static_cast( ycbcrConversion ), + reinterpret_cast( + static_cast( allocator ) ) ); + } + + //=== VK_KHR_bind_memory2 === + + VULKAN_HPP_INLINE void Device::bindBufferMemory2KHR( + ArrayProxy const & bindInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBindBufferMemory2KHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkBindBufferMemory2KHR( + static_cast( m_device ), + bindInfos.size(), + reinterpret_cast( bindInfos.data() ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory2KHR" ); + } + } + + VULKAN_HPP_INLINE void + Device::bindImageMemory2KHR( ArrayProxy const & bindInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBindImageMemory2KHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkBindImageMemory2KHR( static_cast( m_device ), + bindInfos.size(), + reinterpret_cast( bindInfos.data() ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory2KHR" ); + } + } + + //=== VK_EXT_image_drm_format_modifier === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT + Image::getDrmFormatModifierPropertiesEXT() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetImageDrmFormatModifierPropertiesEXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT properties; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetImageDrmFormatModifierPropertiesEXT( + static_cast( m_device ), + static_cast( m_image ), + reinterpret_cast( &properties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Image::getDrmFormatModifierPropertiesEXT" ); + } + return properties; + } + + //=== VK_EXT_validation_cache === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::ValidationCacheEXT + Device::createValidationCacheEXT( + VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::ValidationCacheEXT( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void + ValidationCacheEXT::merge( ArrayProxy const & srcCaches ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkMergeValidationCachesEXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkMergeValidationCachesEXT( + static_cast( m_device ), + static_cast( m_validationCache ), + srcCaches.size(), + reinterpret_cast( srcCaches.data() ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::ValidationCacheEXT::merge" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector ValidationCacheEXT::getData() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetValidationCacheDataEXT && + "Function needs extension enabled!" ); + + std::vector data; + size_t dataSize; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( + getDispatcher()->vkGetValidationCacheDataEXT( static_cast( m_device ), + static_cast( m_validationCache ), + &dataSize, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( + getDispatcher()->vkGetValidationCacheDataEXT( static_cast( m_device ), + static_cast( m_validationCache ), + &dataSize, + reinterpret_cast( data.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::ValidationCacheEXT::getData" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( dataSize <= data.size() ); + if ( dataSize < data.size() ) + { + data.resize( dataSize ); + } + } + return data; + } + + //=== VK_NV_shading_rate_image === + + VULKAN_HPP_INLINE void + CommandBuffer::bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView imageView, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindShadingRateImageNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdBindShadingRateImageNV( static_cast( m_commandBuffer ), + static_cast( imageView ), + static_cast( imageLayout ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setViewportShadingRatePaletteNV( + uint32_t firstViewport, ArrayProxy const & shadingRatePalettes ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetViewportShadingRatePaletteNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetViewportShadingRatePaletteNV( + static_cast( m_commandBuffer ), + firstViewport, + shadingRatePalettes.size(), + reinterpret_cast( shadingRatePalettes.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setCoarseSampleOrderNV( + VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType, + ArrayProxy const & customSampleOrders ) const + VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoarseSampleOrderNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetCoarseSampleOrderNV( + static_cast( m_commandBuffer ), + static_cast( sampleOrderType ), + customSampleOrders.size(), + reinterpret_cast( customSampleOrders.data() ) ); + } + + //=== VK_NV_ray_tracing === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureNV + Device::createAccelerationStructureNV( + VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureNV( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR + Device::getAccelerationStructureMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR memoryRequirements; + getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getAccelerationStructureMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV && + "Function needs extension enabled!" ); + + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR & memoryRequirements = + structureChain.template get(); + getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } + + VULKAN_HPP_INLINE void Device::bindAccelerationStructureMemoryNV( + ArrayProxy const & bindInfos ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkBindAccelerationStructureMemoryNV && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkBindAccelerationStructureMemoryNV( + static_cast( m_device ), + bindInfos.size(), + reinterpret_cast( bindInfos.data() ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindAccelerationStructureMemoryNV" ); + } + } + + VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructureNV( + const VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV & info, + VULKAN_HPP_NAMESPACE::Buffer instanceData, + VULKAN_HPP_NAMESPACE::DeviceSize instanceOffset, + VULKAN_HPP_NAMESPACE::Bool32 update, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, + VULKAN_HPP_NAMESPACE::Buffer scratch, + VULKAN_HPP_NAMESPACE::DeviceSize scratchOffset ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildAccelerationStructureNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdBuildAccelerationStructureNV( + static_cast( m_commandBuffer ), + reinterpret_cast( &info ), + static_cast( instanceData ), + static_cast( instanceOffset ), + static_cast( update ), + static_cast( dst ), + static_cast( src ), + static_cast( scratch ), + static_cast( scratchOffset ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureNV( + VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyAccelerationStructureNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdCopyAccelerationStructureNV( static_cast( m_commandBuffer ), + static_cast( dst ), + static_cast( src ), + static_cast( mode ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer raygenShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize raygenShaderBindingOffset, + VULKAN_HPP_NAMESPACE::Buffer missShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingOffset, + VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingStride, + VULKAN_HPP_NAMESPACE::Buffer hitShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingOffset, + VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingStride, + VULKAN_HPP_NAMESPACE::Buffer callableShaderBindingTableBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingOffset, + VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingStride, + uint32_t width, + uint32_t height, + uint32_t depth ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdTraceRaysNV( static_cast( m_commandBuffer ), + static_cast( raygenShaderBindingTableBuffer ), + static_cast( raygenShaderBindingOffset ), + static_cast( missShaderBindingTableBuffer ), + static_cast( missShaderBindingOffset ), + static_cast( missShaderBindingStride ), + static_cast( hitShaderBindingTableBuffer ), + static_cast( hitShaderBindingOffset ), + static_cast( hitShaderBindingStride ), + static_cast( callableShaderBindingTableBuffer ), + static_cast( callableShaderBindingOffset ), + static_cast( callableShaderBindingStride ), + width, + height, + depth ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::createRayTracingPipelinesNV( + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::ArrayProxy const & createInfos, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Pipelines( *this, pipelineCache, createInfos, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Pipeline Device::createRayTracingPipelineNV( + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Pipeline( *this, pipelineCache, createInfo, allocator ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Pipeline::getRayTracingShaderGroupHandlesNV( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetRayTracingShaderGroupHandlesNV && + "Function needs extension enabled!" ); + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( + getDispatcher()->vkGetRayTracingShaderGroupHandlesNV( static_cast( m_device ), + static_cast( m_pipeline ), + firstGroup, + groupCount, + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandlesNV" ); + } + return data; + } + + template + VULKAN_HPP_NODISCARD DataType Pipeline::getRayTracingShaderGroupHandleNV( uint32_t firstGroup, + uint32_t groupCount ) const + { + DataType data; + Result result = static_cast( + getDispatcher()->vkGetRayTracingShaderGroupHandlesNV( static_cast( m_device ), + static_cast( m_pipeline ), + firstGroup, + groupCount, + sizeof( DataType ), + reinterpret_cast( &data ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandleNV" ); + } + return data; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + AccelerationStructureNV::getHandle( size_t dataSize ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureHandleNV && + "Function needs extension enabled!" ); + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( getDispatcher()->vkGetAccelerationStructureHandleNV( + static_cast( m_device ), + static_cast( m_accelerationStructure ), + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::AccelerationStructureNV::getHandle" ); + } + return data; + } + + template + VULKAN_HPP_NODISCARD DataType AccelerationStructureNV::getHandle() const + { + DataType data; + Result result = static_cast( getDispatcher()->vkGetAccelerationStructureHandleNV( + static_cast( m_device ), + static_cast( m_accelerationStructure ), + sizeof( DataType ), + reinterpret_cast( &data ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::AccelerationStructureNV::getHandle" ); + } + return data; + } + + VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesNV( + ArrayProxy const & accelerationStructures, + VULKAN_HPP_NAMESPACE::QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesNV( + static_cast( m_commandBuffer ), + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + static_cast( queryPool ), + firstQuery ); + } + + VULKAN_HPP_INLINE void Pipeline::compileDeferredNV( uint32_t shader ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCompileDeferredNV && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkCompileDeferredNV( + static_cast( m_device ), static_cast( m_pipeline ), shader ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::compileDeferredNV" ); + } + } + + //=== VK_KHR_maintenance3 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport + Device::getDescriptorSetLayoutSupportKHR( + const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDescriptorSetLayoutSupportKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport support; + getDispatcher()->vkGetDescriptorSetLayoutSupportKHR( + static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( &support ) ); + return support; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getDescriptorSetLayoutSupportKHR( + const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDescriptorSetLayoutSupportKHR && + "Function needs extension enabled!" ); + + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport & support = + structureChain.template get(); + getDispatcher()->vkGetDescriptorSetLayoutSupportKHR( + static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( &support ) ); + return structureChain; + } + + //=== VK_KHR_draw_indirect_count === + + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCountKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdDrawIndirectCountKHR( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdDrawIndexedIndirectCountKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdDrawIndexedIndirectCountKHR( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + //=== VK_EXT_external_memory_host === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT + Device::getMemoryHostPointerPropertiesEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + const void * pHostPointer ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetMemoryHostPointerPropertiesEXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT memoryHostPointerProperties; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetMemoryHostPointerPropertiesEXT( + static_cast( m_device ), + static_cast( handleType ), + pHostPointer, + reinterpret_cast( &memoryHostPointerProperties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryHostPointerPropertiesEXT" ); + } + return memoryHostPointerProperties; + } + + //=== VK_AMD_buffer_marker === + + VULKAN_HPP_INLINE void + CommandBuffer::writeBufferMarkerAMD( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + uint32_t marker ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteBufferMarkerAMD && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdWriteBufferMarkerAMD( static_cast( m_commandBuffer ), + static_cast( pipelineStage ), + static_cast( dstBuffer ), + static_cast( dstOffset ), + marker ); + } + + //=== VK_EXT_calibrated_timestamps === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getCalibrateableTimeDomainsEXT() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT && + "Function needs extension enabled!" ); + + std::vector timeDomains; + uint32_t timeDomainCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = + static_cast( getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( + static_cast( m_physicalDevice ), &timeDomainCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && timeDomainCount ) + { + timeDomains.resize( timeDomainCount ); + result = + static_cast( getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( + static_cast( m_physicalDevice ), + &timeDomainCount, + reinterpret_cast( timeDomains.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCalibrateableTimeDomainsEXT" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() ); + if ( timeDomainCount < timeDomains.size() ) + { + timeDomains.resize( timeDomainCount ); + } + } + return timeDomains; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair, uint64_t> + Device::getCalibratedTimestampsEXT( + ArrayProxy const & timestampInfos ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetCalibratedTimestampsEXT && + "Function needs extension enabled!" ); + + std::pair, uint64_t> data( + std::piecewise_construct, std::forward_as_tuple( timestampInfos.size() ), std::forward_as_tuple( 0 ) ); + std::vector & timestamps = data.first; + uint64_t & maxDeviation = data.second; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetCalibratedTimestampsEXT( + static_cast( m_device ), + timestampInfos.size(), + reinterpret_cast( timestampInfos.data() ), + timestamps.data(), + &maxDeviation ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampsEXT" ); + } + return data; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair + Device::getCalibratedTimestampEXT( const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT & timestampInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetCalibratedTimestampsEXT && + "Function needs extension enabled!" ); + + std::pair data; + uint64_t & timestamp = data.first; + uint64_t & maxDeviation = data.second; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetCalibratedTimestampsEXT( + static_cast( m_device ), + 1, + reinterpret_cast( ×tampInfo ), + ×tamp, + &maxDeviation ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampEXT" ); + } + return data; + } + + //=== VK_NV_mesh_shader === + + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksNV( uint32_t taskCount, + uint32_t firstTask ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdDrawMeshTasksNV( static_cast( m_commandBuffer ), taskCount, firstTask ); + } + + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + uint32_t drawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdDrawMeshTasksIndirectNV( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + drawCount, + stride ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer buffer, + VULKAN_HPP_NAMESPACE::DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectCountNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdDrawMeshTasksIndirectCountNV( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + //=== VK_NV_scissor_exclusive === + + VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorNV( + uint32_t firstExclusiveScissor, + ArrayProxy const & exclusiveScissors ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetExclusiveScissorNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetExclusiveScissorNV( static_cast( m_commandBuffer ), + firstExclusiveScissor, + exclusiveScissors.size(), + reinterpret_cast( exclusiveScissors.data() ) ); + } + + //=== VK_NV_device_diagnostic_checkpoints === + + template + VULKAN_HPP_INLINE void + CommandBuffer::setCheckpointNV( CheckpointMarkerType const & checkpointMarker ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetCheckpointNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetCheckpointNV( static_cast( m_commandBuffer ), + reinterpret_cast( &checkpointMarker ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Queue::getCheckpointDataNV() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetQueueCheckpointDataNV && + "Function needs extension enabled!" ); + + uint32_t checkpointDataCount; + getDispatcher()->vkGetQueueCheckpointDataNV( static_cast( m_queue ), &checkpointDataCount, nullptr ); + std::vector checkpointData( checkpointDataCount ); + getDispatcher()->vkGetQueueCheckpointDataNV( static_cast( m_queue ), + &checkpointDataCount, + reinterpret_cast( checkpointData.data() ) ); + VULKAN_HPP_ASSERT( checkpointDataCount == checkpointData.size() ); + return checkpointData; + } + + //=== VK_KHR_timeline_semaphore === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Semaphore::getCounterValueKHR() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetSemaphoreCounterValueKHR && + "Function needs extension enabled!" ); + + uint64_t value; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetSemaphoreCounterValueKHR( + static_cast( m_device ), static_cast( m_semaphore ), &value ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Semaphore::getCounterValueKHR" ); + } + return value; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result + Device::waitSemaphoresKHR( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkWaitSemaphoresKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkWaitSemaphoresKHR( + static_cast( m_device ), reinterpret_cast( &waitInfo ), timeout ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitSemaphoresKHR" ); + } + return result; + } + + VULKAN_HPP_INLINE void + Device::signalSemaphoreKHR( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSignalSemaphoreKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkSignalSemaphoreKHR( + static_cast( m_device ), reinterpret_cast( &signalInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::signalSemaphoreKHR" ); + } + } + + //=== VK_INTEL_performance_query === + + VULKAN_HPP_INLINE void Device::initializePerformanceApiINTEL( + const VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL & initializeInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkInitializePerformanceApiINTEL && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkInitializePerformanceApiINTEL( + static_cast( m_device ), + reinterpret_cast( &initializeInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::initializePerformanceApiINTEL" ); + } + } + + VULKAN_HPP_INLINE void Device::uninitializePerformanceApiINTEL() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkUninitializePerformanceApiINTEL && + "Function needs extension enabled!" ); + + getDispatcher()->vkUninitializePerformanceApiINTEL( static_cast( m_device ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setPerformanceMarkerINTEL( + const VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL & markerInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetPerformanceMarkerINTEL && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkCmdSetPerformanceMarkerINTEL( + static_cast( m_commandBuffer ), + reinterpret_cast( &markerInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceMarkerINTEL" ); + } + } + + VULKAN_HPP_INLINE void CommandBuffer::setPerformanceStreamMarkerINTEL( + const VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL & markerInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetPerformanceStreamMarkerINTEL && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkCmdSetPerformanceStreamMarkerINTEL( + static_cast( m_commandBuffer ), + reinterpret_cast( &markerInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceStreamMarkerINTEL" ); + } + } + + VULKAN_HPP_INLINE void CommandBuffer::setPerformanceOverrideINTEL( + const VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL & overrideInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetPerformanceOverrideINTEL && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkCmdSetPerformanceOverrideINTEL( + static_cast( m_commandBuffer ), + reinterpret_cast( &overrideInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceOverrideINTEL" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::PerformanceConfigurationINTEL + Device::acquirePerformanceConfigurationINTEL( + VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const & acquireInfo ) const + { + return VULKAN_HPP_RAII_NAMESPACE::PerformanceConfigurationINTEL( *this, acquireInfo ); + } + + VULKAN_HPP_INLINE void + Queue::setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkQueueSetPerformanceConfigurationINTEL && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkQueueSetPerformanceConfigurationINTEL( + static_cast( m_queue ), static_cast( configuration ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::setPerformanceConfigurationINTEL" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PerformanceValueINTEL + Device::getPerformanceParameterINTEL( VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPerformanceParameterINTEL && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::PerformanceValueINTEL value; + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkGetPerformanceParameterINTEL( static_cast( m_device ), + static_cast( parameter ), + reinterpret_cast( &value ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPerformanceParameterINTEL" ); + } + return value; + } + + //=== VK_AMD_display_native_hdr === + + VULKAN_HPP_INLINE void + SwapchainKHR::setLocalDimmingAMD( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetLocalDimmingAMD && + "Function needs extension enabled!" ); + + getDispatcher()->vkSetLocalDimmingAMD( static_cast( m_device ), + static_cast( m_swapchain ), + static_cast( localDimmingEnable ) ); + } + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR + Instance::createImagePipeSurfaceFUCHSIA( + VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createMetalSurfaceEXT( + VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_fragment_shading_rate === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getFragmentShadingRatesKHR() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR && + "Function needs extension enabled!" ); + + std::vector fragmentShadingRates; + uint32_t fragmentShadingRateCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR( + static_cast( m_physicalDevice ), &fragmentShadingRateCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && fragmentShadingRateCount ) + { + fragmentShadingRates.resize( fragmentShadingRateCount ); + result = + static_cast( getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR( + static_cast( m_physicalDevice ), + &fragmentShadingRateCount, + reinterpret_cast( fragmentShadingRates.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getFragmentShadingRatesKHR" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( fragmentShadingRateCount <= fragmentShadingRates.size() ); + if ( fragmentShadingRateCount < fragmentShadingRates.size() ) + { + fragmentShadingRates.resize( fragmentShadingRateCount ); + } + } + return fragmentShadingRates; + } + + VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateKHR( + const VULKAN_HPP_NAMESPACE::Extent2D & fragmentSize, + const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetFragmentShadingRateKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetFragmentShadingRateKHR( + static_cast( m_commandBuffer ), + reinterpret_cast( &fragmentSize ), + reinterpret_cast( combinerOps ) ); + } + + //=== VK_EXT_buffer_device_address === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress Device::getBufferAddressEXT( + const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetBufferDeviceAddressEXT && + "Function needs extension enabled!" ); + + return static_cast( getDispatcher()->vkGetBufferDeviceAddressEXT( + static_cast( m_device ), reinterpret_cast( &info ) ) ); + } + + //=== VK_EXT_tooling_info === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getToolPropertiesEXT() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT && + "Function needs extension enabled!" ); + + std::vector toolProperties; + uint32_t toolCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT( + static_cast( m_physicalDevice ), &toolCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && toolCount ) + { + toolProperties.resize( toolCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT( + static_cast( m_physicalDevice ), + &toolCount, + reinterpret_cast( toolProperties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getToolPropertiesEXT" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() ); + if ( toolCount < toolProperties.size() ) + { + toolProperties.resize( toolCount ); + } + } + return toolProperties; + } + + //=== VK_KHR_present_wait === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result + SwapchainKHR::waitForPresent( uint64_t presentId, uint64_t timeout ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkWaitForPresentKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkWaitForPresentKHR( + static_cast( m_device ), static_cast( m_swapchain ), presentId, timeout ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::waitForPresent" ); + } + return result; + } + + //=== VK_NV_cooperative_matrix === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getCooperativeMatrixPropertiesNV() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV && + "Function needs extension enabled!" ); + + std::vector properties; + uint32_t propertyCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = + static_cast( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( + static_cast( m_physicalDevice ), &propertyCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( + static_cast( m_physicalDevice ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, + VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixPropertiesNV" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + } + return properties; + } + + //=== VK_NV_coverage_reduction_mode === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV && + "Function needs extension enabled!" ); + + std::vector combinations; + uint32_t combinationCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + static_cast( m_physicalDevice ), &combinationCount, nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && combinationCount ) + { + combinations.resize( combinationCount ); + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + static_cast( m_physicalDevice ), + &combinationCount, + reinterpret_cast( combinations.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( + result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( combinationCount <= combinations.size() ); + if ( combinationCount < combinations.size() ) + { + combinations.resize( combinationCount ); + } + } + return combinations; + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSurfacePresentModes2EXT( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT && + "Function needs extension enabled!" ); + + std::vector presentModes; + uint32_t presentModeCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT( + static_cast( m_physicalDevice ), + reinterpret_cast( &surfaceInfo ), + &presentModeCount, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && presentModeCount ) + { + presentModes.resize( presentModeCount ); + result = + static_cast( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT( + static_cast( m_physicalDevice ), + reinterpret_cast( &surfaceInfo ), + &presentModeCount, + reinterpret_cast( presentModes.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModes2EXT" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); + if ( presentModeCount < presentModes.size() ) + { + presentModes.resize( presentModeCount ); + } + } + return presentModes; + } + + VULKAN_HPP_INLINE void SwapchainKHR::acquireFullScreenExclusiveModeEXT() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkAcquireFullScreenExclusiveModeEXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkAcquireFullScreenExclusiveModeEXT( + static_cast( m_device ), static_cast( m_swapchain ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::acquireFullScreenExclusiveModeEXT" ); + } + } + + VULKAN_HPP_INLINE void SwapchainKHR::releaseFullScreenExclusiveModeEXT() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkReleaseFullScreenExclusiveModeEXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkReleaseFullScreenExclusiveModeEXT( + static_cast( m_device ), static_cast( m_swapchain ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::releaseFullScreenExclusiveModeEXT" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR + Device::getGroupSurfacePresentModes2EXT( + const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDeviceGroupSurfacePresentModes2EXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetDeviceGroupSurfacePresentModes2EXT( + static_cast( m_device ), + reinterpret_cast( &surfaceInfo ), + reinterpret_cast( &modes ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupSurfacePresentModes2EXT" ); + } + return modes; + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createHeadlessSurfaceEXT( + VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator ); + } + + //=== VK_KHR_buffer_device_address === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress Device::getBufferAddressKHR( + const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetBufferDeviceAddressKHR && + "Function needs extension enabled!" ); + + return static_cast( getDispatcher()->vkGetBufferDeviceAddressKHR( + static_cast( m_device ), reinterpret_cast( &info ) ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddressKHR( + const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetBufferOpaqueCaptureAddressKHR && + "Function needs extension enabled!" ); + + return getDispatcher()->vkGetBufferOpaqueCaptureAddressKHR( + static_cast( m_device ), reinterpret_cast( &info ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getMemoryOpaqueCaptureAddressKHR( + const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddressKHR && + "Function needs extension enabled!" ); + + return getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddressKHR( + static_cast( m_device ), reinterpret_cast( &info ) ); + } + + //=== VK_EXT_line_rasterization === + + VULKAN_HPP_INLINE void CommandBuffer::setLineStippleEXT( uint32_t lineStippleFactor, + uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineStippleEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetLineStippleEXT( + static_cast( m_commandBuffer ), lineStippleFactor, lineStipplePattern ); + } + + //=== VK_EXT_host_query_reset === + + VULKAN_HPP_INLINE void QueryPool::resetEXT( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkResetQueryPoolEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkResetQueryPoolEXT( + static_cast( m_device ), static_cast( m_queryPool ), firstQuery, queryCount ); + } + + //=== VK_EXT_extended_dynamic_state === + + VULKAN_HPP_INLINE void + CommandBuffer::setCullModeEXT( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCullModeEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetCullModeEXT( static_cast( m_commandBuffer ), + static_cast( cullMode ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setFrontFaceEXT( VULKAN_HPP_NAMESPACE::FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetFrontFaceEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetFrontFaceEXT( static_cast( m_commandBuffer ), + static_cast( frontFace ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveTopologyEXT( + VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetPrimitiveTopologyEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetPrimitiveTopologyEXT( static_cast( m_commandBuffer ), + static_cast( primitiveTopology ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCountEXT( + ArrayProxy const & viewports ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetViewportWithCountEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetViewportWithCountEXT( static_cast( m_commandBuffer ), + viewports.size(), + reinterpret_cast( viewports.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCountEXT( + ArrayProxy const & scissors ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetScissorWithCountEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetScissorWithCountEXT( static_cast( m_commandBuffer ), + scissors.size(), + reinterpret_cast( scissors.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2EXT( + uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes, + ArrayProxy const & strides ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdBindVertexBuffers2EXT && + "Function needs extension enabled!" ); + +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); + VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() ); + VULKAN_HPP_ASSERT( strides.empty() || buffers.size() == strides.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != offsets.size()" ); + } + if ( !sizes.empty() && buffers.size() != sizes.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != sizes.size()" ); + } + if ( !strides.empty() && buffers.size() != strides.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != strides.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdBindVertexBuffers2EXT( static_cast( m_commandBuffer ), + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ), + reinterpret_cast( sizes.data() ), + reinterpret_cast( strides.data() ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setDepthTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetDepthTestEnableEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetDepthTestEnableEXT( static_cast( m_commandBuffer ), + static_cast( depthTestEnable ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setDepthWriteEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetDepthWriteEnableEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetDepthWriteEnableEXT( static_cast( m_commandBuffer ), + static_cast( depthWriteEnable ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setDepthCompareOpEXT( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetDepthCompareOpEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetDepthCompareOpEXT( static_cast( m_commandBuffer ), + static_cast( depthCompareOp ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setDepthBoundsTestEnableEXT( + VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetDepthBoundsTestEnableEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetDepthBoundsTestEnableEXT( static_cast( m_commandBuffer ), + static_cast( depthBoundsTestEnable ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setStencilTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetStencilTestEnableEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetStencilTestEnableEXT( static_cast( m_commandBuffer ), + static_cast( stencilTestEnable ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setStencilOpEXT( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, + VULKAN_HPP_NAMESPACE::StencilOp failOp, + VULKAN_HPP_NAMESPACE::StencilOp passOp, + VULKAN_HPP_NAMESPACE::StencilOp depthFailOp, + VULKAN_HPP_NAMESPACE::CompareOp compareOp ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilOpEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetStencilOpEXT( static_cast( m_commandBuffer ), + static_cast( faceMask ), + static_cast( failOp ), + static_cast( passOp ), + static_cast( depthFailOp ), + static_cast( compareOp ) ); + } + + //=== VK_KHR_deferred_host_operations === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR + Device::createDeferredOperationKHR( + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR( *this, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t DeferredOperationKHR::getMaxConcurrency() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDeferredOperationMaxConcurrencyKHR && + "Function needs extension enabled!" ); + + return getDispatcher()->vkGetDeferredOperationMaxConcurrencyKHR( + static_cast( m_device ), static_cast( m_operation ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result + DeferredOperationKHR::getResult() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDeferredOperationResultKHR && + "Function needs extension enabled!" ); + + return static_cast( getDispatcher()->vkGetDeferredOperationResultKHR( + static_cast( m_device ), static_cast( m_operation ) ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result DeferredOperationKHR::join() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkDeferredOperationJoinKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkDeferredOperationJoinKHR( + static_cast( m_device ), static_cast( m_operation ) ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eThreadDoneKHR ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eThreadIdleKHR ) ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DeferredOperationKHR::join" ); + } + return result; + } + + //=== VK_KHR_pipeline_executable_properties === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getPipelineExecutablePropertiesKHR( const VULKAN_HPP_NAMESPACE::PipelineInfoKHR & pipelineInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPipelineExecutablePropertiesKHR && + "Function needs extension enabled!" ); + + std::vector properties; + uint32_t executableCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( getDispatcher()->vkGetPipelineExecutablePropertiesKHR( + static_cast( m_device ), + reinterpret_cast( &pipelineInfo ), + &executableCount, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && executableCount ) + { + properties.resize( executableCount ); + result = static_cast( getDispatcher()->vkGetPipelineExecutablePropertiesKHR( + static_cast( m_device ), + reinterpret_cast( &pipelineInfo ), + &executableCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutablePropertiesKHR" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( executableCount <= properties.size() ); + if ( executableCount < properties.size() ) + { + properties.resize( executableCount ); + } + } + return properties; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getPipelineExecutableStatisticsKHR( + const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPipelineExecutableStatisticsKHR && + "Function needs extension enabled!" ); + + std::vector statistics; + uint32_t statisticCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = static_cast( getDispatcher()->vkGetPipelineExecutableStatisticsKHR( + static_cast( m_device ), + reinterpret_cast( &executableInfo ), + &statisticCount, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && statisticCount ) + { + statistics.resize( statisticCount ); + result = static_cast( getDispatcher()->vkGetPipelineExecutableStatisticsKHR( + static_cast( m_device ), + reinterpret_cast( &executableInfo ), + &statisticCount, + reinterpret_cast( statistics.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutableStatisticsKHR" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( statisticCount <= statistics.size() ); + if ( statisticCount < statistics.size() ) + { + statistics.resize( statisticCount ); + } + } + return statistics; + } + + VULKAN_HPP_NODISCARD + VULKAN_HPP_INLINE std::vector + Device::getPipelineExecutableInternalRepresentationsKHR( + const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR && + "Function needs extension enabled!" ); + + std::vector internalRepresentations; + uint32_t internalRepresentationCount; + VULKAN_HPP_NAMESPACE::Result result; + do + { + result = + static_cast( getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR( + static_cast( m_device ), + reinterpret_cast( &executableInfo ), + &internalRepresentationCount, + nullptr ) ); + if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && internalRepresentationCount ) + { + internalRepresentations.resize( internalRepresentationCount ); + result = static_cast( + getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR( + static_cast( m_device ), + reinterpret_cast( &executableInfo ), + &internalRepresentationCount, + reinterpret_cast( internalRepresentations.data() ) ) ); + } + } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutableInternalRepresentationsKHR" ); + } + if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + VULKAN_HPP_ASSERT( internalRepresentationCount <= internalRepresentations.size() ); + if ( internalRepresentationCount < internalRepresentations.size() ) + { + internalRepresentations.resize( internalRepresentationCount ); + } + } + return internalRepresentations; + } + + //=== VK_NV_device_generated_commands === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getGeneratedCommandsMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getGeneratedCommandsMemoryRequirementsNV( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV && + "Function needs extension enabled!" ); + + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } + + VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsNV( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdPreprocessGeneratedCommandsNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdPreprocessGeneratedCommandsNV( + static_cast( m_commandBuffer ), + reinterpret_cast( &generatedCommandsInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsNV( + VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdExecuteGeneratedCommandsNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdExecuteGeneratedCommandsNV( + static_cast( m_commandBuffer ), + static_cast( isPreprocessed ), + reinterpret_cast( &generatedCommandsInfo ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::bindPipelineShaderGroupNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t groupIndex ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdBindPipelineShaderGroupNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdBindPipelineShaderGroupNV( static_cast( m_commandBuffer ), + static_cast( pipelineBindPoint ), + static_cast( pipeline ), + groupIndex ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::IndirectCommandsLayoutNV + Device::createIndirectCommandsLayoutNV( + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::IndirectCommandsLayoutNV( *this, createInfo, allocator ); + } + + //=== VK_EXT_acquire_drm_display === + + VULKAN_HPP_INLINE void PhysicalDevice::acquireDrmDisplayEXT( int32_t drmFd, + VULKAN_HPP_NAMESPACE::DisplayKHR display ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireDrmDisplayEXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkAcquireDrmDisplayEXT( + static_cast( m_physicalDevice ), drmFd, static_cast( display ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireDrmDisplayEXT" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::DisplayKHR + PhysicalDevice::getDrmDisplayEXT( int32_t drmFd, uint32_t connectorId ) const + { + return VULKAN_HPP_RAII_NAMESPACE::DisplayKHR( *this, drmFd, connectorId ); + } + + //=== VK_EXT_private_data === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::PrivateDataSlot Device::createPrivateDataSlotEXT( + VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::PrivateDataSlot( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void Device::destroyPrivateDataSlotEXT( + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + Optional allocator ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkDestroyPrivateDataSlotEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkDestroyPrivateDataSlotEXT( + static_cast( m_device ), + static_cast( privateDataSlot ), + reinterpret_cast( + static_cast( allocator ) ) ); + } + + VULKAN_HPP_INLINE void Device::setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType_, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + uint64_t data ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetPrivateDataEXT && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkSetPrivateDataEXT( static_cast( m_device ), + static_cast( objectType_ ), + objectHandle, + static_cast( privateDataSlot ), + data ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setPrivateDataEXT" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t + Device::getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType_, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPrivateDataEXT && + "Function needs extension enabled!" ); + + uint64_t data; + getDispatcher()->vkGetPrivateDataEXT( static_cast( m_device ), + static_cast( objectType_ ), + objectHandle, + static_cast( privateDataSlot ), + &data ); + return data; + } + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_video_encode_queue === + + VULKAN_HPP_INLINE void CommandBuffer::encodeVideoKHR( + const VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR & encodeInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEncodeVideoKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdEncodeVideoKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &encodeInfo ) ); + } +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_KHR_synchronization2 === + + VULKAN_HPP_INLINE void CommandBuffer::setEvent2KHR( + VULKAN_HPP_NAMESPACE::Event event, + const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetEvent2KHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetEvent2KHR( static_cast( m_commandBuffer ), + static_cast( event ), + reinterpret_cast( &dependencyInfo ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResetEvent2KHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdResetEvent2KHR( static_cast( m_commandBuffer ), + static_cast( event ), + static_cast( stageMask ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::waitEvents2KHR( ArrayProxy const & events, + ArrayProxy const & dependencyInfos ) + const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWaitEvents2KHR && + "Function needs extension enabled!" ); + +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( events.size() == dependencyInfos.size() ); +# else + if ( events.size() != dependencyInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::waitEvents2KHR: events.size() != dependencyInfos.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdWaitEvents2KHR( static_cast( m_commandBuffer ), + events.size(), + reinterpret_cast( events.data() ), + reinterpret_cast( dependencyInfos.data() ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2KHR( + const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPipelineBarrier2KHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdPipelineBarrier2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &dependencyInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp2KHR( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteTimestamp2KHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdWriteTimestamp2KHR( static_cast( m_commandBuffer ), + static_cast( stage ), + static_cast( queryPool ), + query ); + } + + VULKAN_HPP_INLINE void Queue::submit2KHR( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSubmit2KHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = static_cast( + getDispatcher()->vkQueueSubmit2KHR( static_cast( m_queue ), + submits.size(), + reinterpret_cast( submits.data() ), + static_cast( fence ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit2KHR" ); + } + } + + VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarker2AMD( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, + uint32_t marker ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteBufferMarker2AMD && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdWriteBufferMarker2AMD( static_cast( m_commandBuffer ), + static_cast( stage ), + static_cast( dstBuffer ), + static_cast( dstOffset ), + marker ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Queue::getCheckpointData2NV() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueueCheckpointData2NV && + "Function needs extension enabled!" ); + + uint32_t checkpointDataCount; + getDispatcher()->vkGetQueueCheckpointData2NV( static_cast( m_queue ), &checkpointDataCount, nullptr ); + std::vector checkpointData( checkpointDataCount ); + getDispatcher()->vkGetQueueCheckpointData2NV( static_cast( m_queue ), + &checkpointDataCount, + reinterpret_cast( checkpointData.data() ) ); + VULKAN_HPP_ASSERT( checkpointDataCount == checkpointData.size() ); + return checkpointData; + } + + //=== VK_NV_fragment_shading_rate_enums === + + VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateEnumNV( + VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate, + const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetFragmentShadingRateEnumNV && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetFragmentShadingRateEnumNV( + static_cast( m_commandBuffer ), + static_cast( shadingRate ), + reinterpret_cast( combinerOps ) ); + } + + //=== VK_KHR_copy_commands2 === + + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2KHR( + const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBuffer2KHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdCopyBuffer2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( ©BufferInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::copyImage2KHR( + const VULKAN_HPP_NAMESPACE::CopyImageInfo2 & copyImageInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImage2KHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdCopyImage2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( ©ImageInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage2KHR( + const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBufferToImage2KHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdCopyBufferToImage2KHR( + static_cast( m_commandBuffer ), + reinterpret_cast( ©BufferToImageInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer2KHR( + const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImageToBuffer2KHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdCopyImageToBuffer2KHR( + static_cast( m_commandBuffer ), + reinterpret_cast( ©ImageToBufferInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::blitImage2KHR( + const VULKAN_HPP_NAMESPACE::BlitImageInfo2 & blitImageInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBlitImage2KHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdBlitImage2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &blitImageInfo ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::resolveImage2KHR( + const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResolveImage2KHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdResolveImage2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &resolveImageInfo ) ); + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + + VULKAN_HPP_INLINE void DisplayKHR::acquireWinrtNV() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireWinrtDisplayNV && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkAcquireWinrtDisplayNV( + static_cast( m_physicalDevice ), static_cast( m_display ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayKHR::acquireWinrtNV" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::DisplayKHR + PhysicalDevice::getWinrtDisplayNV( uint32_t deviceRelativeId ) const + { + return VULKAN_HPP_RAII_NAMESPACE::DisplayKHR( *this, deviceRelativeId ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createDirectFBSurfaceEXT( + VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32 + PhysicalDevice::getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, + IDirectFB & dfb ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceDirectFBPresentationSupportEXT && + "Function needs extension enabled!" ); + + return static_cast( + getDispatcher()->vkGetPhysicalDeviceDirectFBPresentationSupportEXT( + static_cast( m_physicalDevice ), queueFamilyIndex, &dfb ) ); + } +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_KHR_ray_tracing_pipeline === + + VULKAN_HPP_INLINE void CommandBuffer::traceRaysKHR( + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdTraceRaysKHR( + static_cast( m_commandBuffer ), + reinterpret_cast( &raygenShaderBindingTable ), + reinterpret_cast( &missShaderBindingTable ), + reinterpret_cast( &hitShaderBindingTable ), + reinterpret_cast( &callableShaderBindingTable ), + width, + height, + depth ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::createRayTracingPipelinesKHR( + VULKAN_HPP_NAMESPACE::Optional< + const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation, + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::ArrayProxy const & createInfos, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Pipelines( *this, deferredOperation, pipelineCache, createInfos, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::Pipeline Device::createRayTracingPipelineKHR( + VULKAN_HPP_NAMESPACE::Optional< + const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation, + VULKAN_HPP_NAMESPACE::Optional const & + pipelineCache, + VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::Pipeline( *this, deferredOperation, pipelineCache, createInfo, allocator ); + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Pipeline::getRayTracingShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( + getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR( static_cast( m_device ), + static_cast( m_pipeline ), + firstGroup, + groupCount, + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandlesKHR" ); + } + return data; + } + + template + VULKAN_HPP_NODISCARD DataType Pipeline::getRayTracingShaderGroupHandleKHR( uint32_t firstGroup, + uint32_t groupCount ) const + { + DataType data; + Result result = static_cast( + getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR( static_cast( m_device ), + static_cast( m_pipeline ), + firstGroup, + groupCount, + sizeof( DataType ), + reinterpret_cast( &data ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandleKHR" ); + } + return data; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Pipeline::getRayTracingCaptureReplayShaderGroupHandlesKHR( uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( + getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( static_cast( m_device ), + static_cast( m_pipeline ), + firstGroup, + groupCount, + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( + result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingCaptureReplayShaderGroupHandlesKHR" ); + } + return data; + } + + template + VULKAN_HPP_NODISCARD DataType Pipeline::getRayTracingCaptureReplayShaderGroupHandleKHR( uint32_t firstGroup, + uint32_t groupCount ) const + { + DataType data; + Result result = static_cast( + getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( static_cast( m_device ), + static_cast( m_pipeline ), + firstGroup, + groupCount, + sizeof( DataType ), + reinterpret_cast( &data ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( + result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingCaptureReplayShaderGroupHandleKHR" ); + } + return data; + } + + VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirectKHR( + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable, + const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable, + VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdTraceRaysIndirectKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdTraceRaysIndirectKHR( + static_cast( m_commandBuffer ), + reinterpret_cast( &raygenShaderBindingTable ), + reinterpret_cast( &missShaderBindingTable ), + reinterpret_cast( &hitShaderBindingTable ), + reinterpret_cast( &callableShaderBindingTable ), + static_cast( indirectDeviceAddress ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceSize + Pipeline::getRayTracingShaderGroupStackSizeKHR( + uint32_t group, VULKAN_HPP_NAMESPACE::ShaderGroupShaderKHR groupShader ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetRayTracingShaderGroupStackSizeKHR && + "Function needs extension enabled!" ); + + return static_cast( + getDispatcher()->vkGetRayTracingShaderGroupStackSizeKHR( static_cast( m_device ), + static_cast( m_pipeline ), + group, + static_cast( groupShader ) ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetRayTracingPipelineStackSizeKHR && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetRayTracingPipelineStackSizeKHR( static_cast( m_commandBuffer ), + pipelineStackSize ); + } + + //=== VK_EXT_vertex_input_dynamic_state === + + VULKAN_HPP_INLINE void CommandBuffer::setVertexInputEXT( + ArrayProxy const & vertexBindingDescriptions, + ArrayProxy const & vertexAttributeDescriptions ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetVertexInputEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetVertexInputEXT( + static_cast( m_commandBuffer ), + vertexBindingDescriptions.size(), + reinterpret_cast( vertexBindingDescriptions.data() ), + vertexAttributeDescriptions.size(), + reinterpret_cast( vertexAttributeDescriptions.data() ) ); + } + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE zx_handle_t Device::getMemoryZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetMemoryZirconHandleFUCHSIA && + "Function needs extension enabled!" ); + + zx_handle_t zirconHandle; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetMemoryZirconHandleFUCHSIA( + static_cast( m_device ), + reinterpret_cast( &getZirconHandleInfo ), + &zirconHandle ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryZirconHandleFUCHSIA" ); + } + return zirconHandle; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA + Device::getMemoryZirconHandlePropertiesFUCHSIA( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, + zx_handle_t zirconHandle ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetMemoryZirconHandlePropertiesFUCHSIA && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA memoryZirconHandleProperties; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetMemoryZirconHandlePropertiesFUCHSIA( + static_cast( m_device ), + static_cast( handleType ), + zirconHandle, + reinterpret_cast( &memoryZirconHandleProperties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryZirconHandlePropertiesFUCHSIA" ); + } + return memoryZirconHandleProperties; + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + + VULKAN_HPP_INLINE void Device::importSemaphoreZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA & importSemaphoreZirconHandleInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkImportSemaphoreZirconHandleFUCHSIA && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkImportSemaphoreZirconHandleFUCHSIA( + static_cast( m_device ), + reinterpret_cast( &importSemaphoreZirconHandleInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreZirconHandleFUCHSIA" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE zx_handle_t Device::getSemaphoreZirconHandleFUCHSIA( + const VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetSemaphoreZirconHandleFUCHSIA && + "Function needs extension enabled!" ); + + zx_handle_t zirconHandle; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetSemaphoreZirconHandleFUCHSIA( + static_cast( m_device ), + reinterpret_cast( &getZirconHandleInfo ), + &zirconHandle ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreZirconHandleFUCHSIA" ); + } + return zirconHandle; + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::BufferCollectionFUCHSIA + Device::createBufferCollectionFUCHSIA( + VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::BufferCollectionFUCHSIA( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void BufferCollectionFUCHSIA::setImageConstraints( + const VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA & imageConstraintsInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkSetBufferCollectionImageConstraintsFUCHSIA && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkSetBufferCollectionImageConstraintsFUCHSIA( + static_cast( m_device ), + static_cast( m_collection ), + reinterpret_cast( &imageConstraintsInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::BufferCollectionFUCHSIA::setImageConstraints" ); + } + } + + VULKAN_HPP_INLINE void BufferCollectionFUCHSIA::setBufferConstraints( + const VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA & bufferConstraintsInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkSetBufferCollectionBufferConstraintsFUCHSIA && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkSetBufferCollectionBufferConstraintsFUCHSIA( + static_cast( m_device ), + static_cast( m_collection ), + reinterpret_cast( &bufferConstraintsInfo ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::BufferCollectionFUCHSIA::setBufferConstraints" ); + } + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA + BufferCollectionFUCHSIA::getProperties() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetBufferCollectionPropertiesFUCHSIA && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA properties; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetBufferCollectionPropertiesFUCHSIA( + static_cast( m_device ), + static_cast( m_collection ), + reinterpret_cast( &properties ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::BufferCollectionFUCHSIA::getProperties" ); + } + return properties; + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair + RenderPass::getSubpassShadingMaxWorkgroupSizeHUAWEI() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::Extent2D maxWorkgroupSize; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( + static_cast( m_device ), + static_cast( m_renderPass ), + reinterpret_cast( &maxWorkgroupSize ) ) ); + if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && + ( result != VULKAN_HPP_NAMESPACE::Result::eIncomplete ) ) + { + throwResultException( result, + VULKAN_HPP_NAMESPACE_STRING "::RenderPass::getSubpassShadingMaxWorkgroupSizeHUAWEI" ); + } + return std::make_pair( result, maxWorkgroupSize ); + } + + VULKAN_HPP_INLINE void CommandBuffer::subpassShadingHUAWEI() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSubpassShadingHUAWEI && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSubpassShadingHUAWEI( static_cast( m_commandBuffer ) ); + } + + //=== VK_HUAWEI_invocation_mask === + + VULKAN_HPP_INLINE void + CommandBuffer::bindInvocationMaskHUAWEI( VULKAN_HPP_NAMESPACE::ImageView imageView, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdBindInvocationMaskHUAWEI && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdBindInvocationMaskHUAWEI( static_cast( m_commandBuffer ), + static_cast( imageView ), + static_cast( imageLayout ) ); + } + + //=== VK_NV_external_memory_rdma === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::RemoteAddressNV Device::getMemoryRemoteAddressNV( + const VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV & memoryGetRemoteAddressInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetMemoryRemoteAddressNV && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::RemoteAddressNV address; + VULKAN_HPP_NAMESPACE::Result result = + static_cast( getDispatcher()->vkGetMemoryRemoteAddressNV( + static_cast( m_device ), + reinterpret_cast( &memoryGetRemoteAddressInfo ), + reinterpret_cast( &address ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryRemoteAddressNV" ); + } + return address; + } + + //=== VK_EXT_extended_dynamic_state2 === + + VULKAN_HPP_INLINE void + CommandBuffer::setPatchControlPointsEXT( uint32_t patchControlPoints ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetPatchControlPointsEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetPatchControlPointsEXT( static_cast( m_commandBuffer ), + patchControlPoints ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setRasterizerDiscardEnableEXT( + VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetRasterizerDiscardEnableEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetRasterizerDiscardEnableEXT( static_cast( m_commandBuffer ), + static_cast( rasterizerDiscardEnable ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setDepthBiasEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetDepthBiasEnableEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetDepthBiasEnableEXT( static_cast( m_commandBuffer ), + static_cast( depthBiasEnable ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::setLogicOpEXT( VULKAN_HPP_NAMESPACE::LogicOp logicOp ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLogicOpEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetLogicOpEXT( static_cast( m_commandBuffer ), + static_cast( logicOp ) ); + } + + VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveRestartEnableEXT( + VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetPrimitiveRestartEnableEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetPrimitiveRestartEnableEXT( static_cast( m_commandBuffer ), + static_cast( primitiveRestartEnable ) ); + } + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createScreenSurfaceQNX( + VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32 + PhysicalDevice::getScreenPresentationSupportQNX( uint32_t queueFamilyIndex, + struct _screen_window & window ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceScreenPresentationSupportQNX && + "Function needs extension enabled!" ); + + return static_cast( + getDispatcher()->vkGetPhysicalDeviceScreenPresentationSupportQNX( + static_cast( m_physicalDevice ), queueFamilyIndex, &window ) ); + } +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_EXT_color_write_enable === + + VULKAN_HPP_INLINE void CommandBuffer::setColorWriteEnableEXT( + ArrayProxy const & colorWriteEnables ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetColorWriteEnableEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdSetColorWriteEnableEXT( static_cast( m_commandBuffer ), + colorWriteEnables.size(), + reinterpret_cast( colorWriteEnables.data() ) ); + } + + //=== VK_EXT_multi_draw === + + VULKAN_HPP_INLINE void + CommandBuffer::drawMultiEXT( ArrayProxy const & vertexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMultiEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdDrawMultiEXT( static_cast( m_commandBuffer ), + vertexInfo.size(), + reinterpret_cast( vertexInfo.data() ), + instanceCount, + firstInstance, + stride ); + } + + VULKAN_HPP_INLINE void CommandBuffer::drawMultiIndexedEXT( + ArrayProxy const & indexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + Optional vertexOffset ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMultiIndexedEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkCmdDrawMultiIndexedEXT( + static_cast( m_commandBuffer ), + indexInfo.size(), + reinterpret_cast( indexInfo.data() ), + instanceCount, + firstInstance, + stride, + static_cast( vertexOffset ) ); + } + + //=== VK_EXT_pageable_device_local_memory === + + VULKAN_HPP_INLINE void DeviceMemory::setPriorityEXT( float priority ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkSetDeviceMemoryPriorityEXT && + "Function needs extension enabled!" ); + + getDispatcher()->vkSetDeviceMemoryPriorityEXT( + static_cast( m_device ), static_cast( m_memory ), priority ); + } + + //=== VK_KHR_maintenance4 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getBufferMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const + VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getBufferMemoryRequirementsKHR( + const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR && + "Function needs extension enabled!" ); + + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getImageMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const + VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR && + "Function needs extension enabled!" ); + + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return memoryRequirements; + } + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getImageMemoryRequirementsKHR( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR && + "Function needs extension enabled!" ); + + StructureChain structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = + structureChain.template get(); + getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + return structureChain; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirementsKHR( + const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetDeviceImageSparseMemoryRequirementsKHR && + "Function needs extension enabled!" ); + + uint32_t sparseMemoryRequirementCount; + getDispatcher()->vkGetDeviceImageSparseMemoryRequirementsKHR( + static_cast( m_device ), + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + nullptr ); + std::vector sparseMemoryRequirements( + sparseMemoryRequirementCount ); + getDispatcher()->vkGetDeviceImageSparseMemoryRequirementsKHR( + static_cast( m_device ), + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount == sparseMemoryRequirements.size() ); + return sparseMemoryRequirements; + } + +#endif + } // namespace VULKAN_HPP_RAII_NAMESPACE +} // namespace VULKAN_HPP_NAMESPACE +#endif diff --git a/Externals/Vulkan/Include/vulkan/vulkan_screen.h b/Externals/Vulkan/Include/vulkan/vulkan_screen.h new file mode 100644 index 000000000000..f0ef40a6caff --- /dev/null +++ b/Externals/Vulkan/Include/vulkan/vulkan_screen.h @@ -0,0 +1,54 @@ +#ifndef VULKAN_SCREEN_H_ +#define VULKAN_SCREEN_H_ 1 + +/* +** Copyright 2015-2022 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_QNX_screen_surface 1 +#define VK_QNX_SCREEN_SURFACE_SPEC_VERSION 1 +#define VK_QNX_SCREEN_SURFACE_EXTENSION_NAME "VK_QNX_screen_surface" +typedef VkFlags VkScreenSurfaceCreateFlagsQNX; +typedef struct VkScreenSurfaceCreateInfoQNX { + VkStructureType sType; + const void* pNext; + VkScreenSurfaceCreateFlagsQNX flags; + struct _screen_context* context; + struct _screen_window* window; +} VkScreenSurfaceCreateInfoQNX; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateScreenSurfaceQNX)(VkInstance instance, const VkScreenSurfaceCreateInfoQNX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct _screen_window* window); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateScreenSurfaceQNX( + VkInstance instance, + const VkScreenSurfaceCreateInfoQNX* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); + +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceScreenPresentationSupportQNX( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + struct _screen_window* window); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/Vulkan/Include/vulkan/vulkan_structs.hpp b/Externals/Vulkan/Include/vulkan/vulkan_structs.hpp new file mode 100644 index 000000000000..1f55ae3333ab --- /dev/null +++ b/Externals/Vulkan/Include/vulkan/vulkan_structs.hpp @@ -0,0 +1,102190 @@ +// Copyright 2015-2022 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_STRUCTS_HPP +#define VULKAN_STRUCTS_HPP + +namespace VULKAN_HPP_NAMESPACE +{ + //=============== + //=== STRUCTS === + //=============== + + struct AabbPositionsKHR + { + using NativeType = VkAabbPositionsKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AabbPositionsKHR( float minX_ = {}, + float minY_ = {}, + float minZ_ = {}, + float maxX_ = {}, + float maxY_ = {}, + float maxZ_ = {} ) VULKAN_HPP_NOEXCEPT + : minX( minX_ ) + , minY( minY_ ) + , minZ( minZ_ ) + , maxX( maxX_ ) + , maxY( maxY_ ) + , maxZ( maxZ_ ) + {} + + VULKAN_HPP_CONSTEXPR AabbPositionsKHR( AabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AabbPositionsKHR( VkAabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AabbPositionsKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AabbPositionsKHR & operator=( AabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AabbPositionsKHR & operator=( VkAabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMinX( float minX_ ) VULKAN_HPP_NOEXCEPT + { + minX = minX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMinY( float minY_ ) VULKAN_HPP_NOEXCEPT + { + minY = minY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMinZ( float minZ_ ) VULKAN_HPP_NOEXCEPT + { + minZ = minZ_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMaxX( float maxX_ ) VULKAN_HPP_NOEXCEPT + { + maxX = maxX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMaxY( float maxY_ ) VULKAN_HPP_NOEXCEPT + { + maxY = maxY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMaxZ( float maxZ_ ) VULKAN_HPP_NOEXCEPT + { + maxZ = maxZ_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAabbPositionsKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAabbPositionsKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( minX, minY, minZ, maxX, maxY, maxZ ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AabbPositionsKHR const & ) const = default; +#else + bool operator==( AabbPositionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( minX == rhs.minX ) && ( minY == rhs.minY ) && ( minZ == rhs.minZ ) && ( maxX == rhs.maxX ) && + ( maxY == rhs.maxY ) && ( maxZ == rhs.maxZ ); +# endif + } + + bool operator!=( AabbPositionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float minX = {}; + float minY = {}; + float minZ = {}; + float maxX = {}; + float maxY = {}; + float maxZ = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AabbPositionsKHR ) == sizeof( VkAabbPositionsKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AabbPositionsKHR is not nothrow_move_constructible!" ); + using AabbPositionsNV = AabbPositionsKHR; + + union DeviceOrHostAddressConstKHR + { + using NativeType = VkDeviceOrHostAddressConstKHR; +#if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} ) + : deviceAddress( deviceAddress_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR( const void * hostAddress_ ) : hostAddress( hostAddress_ ) {} +#endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR & + setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR & + setHostAddress( const void * hostAddress_ ) VULKAN_HPP_NOEXCEPT + { + hostAddress = hostAddress_; + return *this; + } +#endif /*VULKAN_HPP_NO_UNION_SETTERS*/ + + operator VkDeviceOrHostAddressConstKHR const &() const + { + return *reinterpret_cast( this ); + } + + operator VkDeviceOrHostAddressConstKHR &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress; + const void * hostAddress; +#else + VkDeviceAddress deviceAddress; + const void * hostAddress; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + + struct AccelerationStructureGeometryTrianglesDataKHR + { + using NativeType = VkAccelerationStructureGeometryTrianglesDataKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAccelerationStructureGeometryTrianglesDataKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR( + VULKAN_HPP_NAMESPACE::Format vertexFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_ = {}, + uint32_t maxVertex_ = {}, + VULKAN_HPP_NAMESPACE::IndexType indexType_ = VULKAN_HPP_NAMESPACE::IndexType::eUint16, + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR indexData_ = {}, + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR transformData_ = {} ) VULKAN_HPP_NOEXCEPT + : vertexFormat( vertexFormat_ ) + , vertexData( vertexData_ ) + , vertexStride( vertexStride_ ) + , maxVertex( maxVertex_ ) + , indexType( indexType_ ) + , indexData( indexData_ ) + , transformData( transformData_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR( + AccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryTrianglesDataKHR( VkAccelerationStructureGeometryTrianglesDataKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : AccelerationStructureGeometryTrianglesDataKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureGeometryTrianglesDataKHR & + operator=( AccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryTrianglesDataKHR & + operator=( VkAccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & + setVertexFormat( VULKAN_HPP_NAMESPACE::Format vertexFormat_ ) VULKAN_HPP_NOEXCEPT + { + vertexFormat = vertexFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & + setVertexData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & vertexData_ ) VULKAN_HPP_NOEXCEPT + { + vertexData = vertexData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & + setVertexStride( VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_ ) VULKAN_HPP_NOEXCEPT + { + vertexStride = vertexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & + setMaxVertex( uint32_t maxVertex_ ) VULKAN_HPP_NOEXCEPT + { + maxVertex = maxVertex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & + setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & + setIndexData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & indexData_ ) VULKAN_HPP_NOEXCEPT + { + indexData = indexData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & + setTransformData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & transformData_ ) VULKAN_HPP_NOEXCEPT + { + transformData = transformData_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureGeometryTrianglesDataKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureGeometryTrianglesDataKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, vertexFormat, vertexData, vertexStride, maxVertex, indexType, indexData, transformData ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryTrianglesDataKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Format vertexFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData = {}; + VULKAN_HPP_NAMESPACE::DeviceSize vertexStride = {}; + uint32_t maxVertex = {}; + VULKAN_HPP_NAMESPACE::IndexType indexType = VULKAN_HPP_NAMESPACE::IndexType::eUint16; + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR indexData = {}; + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR transformData = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR ) == + sizeof( VkAccelerationStructureGeometryTrianglesDataKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureGeometryTrianglesDataKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AccelerationStructureGeometryTrianglesDataKHR; + }; + + struct AccelerationStructureGeometryAabbsDataKHR + { + using NativeType = VkAccelerationStructureGeometryAabbsDataKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAccelerationStructureGeometryAabbsDataKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureGeometryAabbsDataKHR( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize stride_ = {} ) VULKAN_HPP_NOEXCEPT + : data( data_ ) + , stride( stride_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR( + AccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryAabbsDataKHR( VkAccelerationStructureGeometryAabbsDataKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : AccelerationStructureGeometryAabbsDataKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureGeometryAabbsDataKHR & + operator=( AccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryAabbsDataKHR & + operator=( VkAccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR & + setData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & data_ ) VULKAN_HPP_NOEXCEPT + { + data = data_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR & + setStride( VULKAN_HPP_NAMESPACE::DeviceSize stride_ ) VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureGeometryAabbsDataKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureGeometryAabbsDataKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, data, stride ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryAabbsDataKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data = {}; + VULKAN_HPP_NAMESPACE::DeviceSize stride = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR ) == + sizeof( VkAccelerationStructureGeometryAabbsDataKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureGeometryAabbsDataKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AccelerationStructureGeometryAabbsDataKHR; + }; + + struct AccelerationStructureGeometryInstancesDataKHR + { + using NativeType = VkAccelerationStructureGeometryInstancesDataKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAccelerationStructureGeometryInstancesDataKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR( + VULKAN_HPP_NAMESPACE::Bool32 arrayOfPointers_ = {}, + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data_ = {} ) VULKAN_HPP_NOEXCEPT + : arrayOfPointers( arrayOfPointers_ ) + , data( data_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR( + AccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryInstancesDataKHR( VkAccelerationStructureGeometryInstancesDataKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : AccelerationStructureGeometryInstancesDataKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureGeometryInstancesDataKHR & + operator=( AccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryInstancesDataKHR & + operator=( VkAccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR & + setArrayOfPointers( VULKAN_HPP_NAMESPACE::Bool32 arrayOfPointers_ ) VULKAN_HPP_NOEXCEPT + { + arrayOfPointers = arrayOfPointers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR & + setData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & data_ ) VULKAN_HPP_NOEXCEPT + { + data = data_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureGeometryInstancesDataKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureGeometryInstancesDataKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, arrayOfPointers, data ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryInstancesDataKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 arrayOfPointers = {}; + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR ) == + sizeof( VkAccelerationStructureGeometryInstancesDataKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureGeometryInstancesDataKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AccelerationStructureGeometryInstancesDataKHR; + }; + + union AccelerationStructureGeometryDataKHR + { + using NativeType = VkAccelerationStructureGeometryDataKHR; +#if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR triangles_ = {} ) + : triangles( triangles_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureGeometryDataKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR aabbs_ ) + : aabbs( aabbs_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR instances_ ) + : instances( instances_ ) + {} +#endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR & setTriangles( + VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR const & triangles_ ) VULKAN_HPP_NOEXCEPT + { + triangles = triangles_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR & + setAabbs( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR const & aabbs_ ) VULKAN_HPP_NOEXCEPT + { + aabbs = aabbs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR & setInstances( + VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR const & instances_ ) VULKAN_HPP_NOEXCEPT + { + instances = instances_; + return *this; + } +#endif /*VULKAN_HPP_NO_UNION_SETTERS*/ + + operator VkAccelerationStructureGeometryDataKHR const &() const + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryDataKHR &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR triangles; + VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR aabbs; + VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR instances; +#else + VkAccelerationStructureGeometryTrianglesDataKHR triangles; + VkAccelerationStructureGeometryAabbsDataKHR aabbs; + VkAccelerationStructureGeometryInstancesDataKHR instances; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + + struct AccelerationStructureGeometryKHR + { + using NativeType = VkAccelerationStructureGeometryKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureGeometryKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR( + VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles, + VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR geometry_ = {}, + VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_ = {} ) VULKAN_HPP_NOEXCEPT + : geometryType( geometryType_ ) + , geometry( geometry_ ) + , flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureGeometryKHR( AccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryKHR( VkAccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureGeometryKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureGeometryKHR & + operator=( AccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryKHR & operator=( VkAccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR & + setGeometryType( VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ ) VULKAN_HPP_NOEXCEPT + { + geometryType = geometryType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR & + setGeometry( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR const & geometry_ ) VULKAN_HPP_NOEXCEPT + { + geometry = geometry_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR & + setFlags( VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureGeometryKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureGeometryKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, geometryType, geometry, flags ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles; + VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR geometry = {}; + VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR ) == + sizeof( VkAccelerationStructureGeometryKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureGeometryKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AccelerationStructureGeometryKHR; + }; + + union DeviceOrHostAddressKHR + { + using NativeType = VkDeviceOrHostAddressKHR; +#if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} ) + : deviceAddress( deviceAddress_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR( void * hostAddress_ ) : hostAddress( hostAddress_ ) {} +#endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR & + setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR & setHostAddress( void * hostAddress_ ) VULKAN_HPP_NOEXCEPT + { + hostAddress = hostAddress_; + return *this; + } +#endif /*VULKAN_HPP_NO_UNION_SETTERS*/ + + operator VkDeviceOrHostAddressKHR const &() const + { + return *reinterpret_cast( this ); + } + + operator VkDeviceOrHostAddressKHR &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress; + void * hostAddress; +#else + VkDeviceAddress deviceAddress; + void * hostAddress; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + + struct AccelerationStructureBuildGeometryInfoKHR + { + using NativeType = VkAccelerationStructureBuildGeometryInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAccelerationStructureBuildGeometryInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_ = + VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel, + VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags_ = {}, + VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR mode_ = + VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR::eBuild, + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR srcAccelerationStructure_ = {}, + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dstAccelerationStructure_ = {}, + uint32_t geometryCount_ = {}, + const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * pGeometries_ = {}, + const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const * ppGeometries_ = {}, + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR scratchData_ = {} ) VULKAN_HPP_NOEXCEPT + : type( type_ ) + , flags( flags_ ) + , mode( mode_ ) + , srcAccelerationStructure( srcAccelerationStructure_ ) + , dstAccelerationStructure( dstAccelerationStructure_ ) + , geometryCount( geometryCount_ ) + , pGeometries( pGeometries_ ) + , ppGeometries( ppGeometries_ ) + , scratchData( scratchData_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR( + AccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureBuildGeometryInfoKHR( VkAccelerationStructureBuildGeometryInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : AccelerationStructureBuildGeometryInfoKHR( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureBuildGeometryInfoKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_, + VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags_, + VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR mode_, + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR srcAccelerationStructure_, + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dstAccelerationStructure_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR> const & geometries_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const> const & pGeometries_ = {}, + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR scratchData_ = {} ) + : type( type_ ) + , flags( flags_ ) + , mode( mode_ ) + , srcAccelerationStructure( srcAccelerationStructure_ ) + , dstAccelerationStructure( dstAccelerationStructure_ ) + , geometryCount( static_cast( !geometries_.empty() ? geometries_.size() : pGeometries_.size() ) ) + , pGeometries( geometries_.data() ) + , ppGeometries( pGeometries_.data() ) + , scratchData( scratchData_ ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( ( !geometries_.empty() + !pGeometries_.empty() ) <= 1 ); +# else + if ( 1 < ( !geometries_.empty() + !pGeometries_.empty() ) ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::AccelerationStructureBuildGeometryInfoKHR::AccelerationStructureBuildGeometryInfoKHR: 1 < ( !geometries_.empty() + !pGeometries_.empty() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureBuildGeometryInfoKHR & + operator=( AccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureBuildGeometryInfoKHR & + operator=( VkAccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & + setType( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & + setMode( VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setSrcAccelerationStructure( + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR srcAccelerationStructure_ ) VULKAN_HPP_NOEXCEPT + { + srcAccelerationStructure = srcAccelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setDstAccelerationStructure( + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dstAccelerationStructure_ ) VULKAN_HPP_NOEXCEPT + { + dstAccelerationStructure = dstAccelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & + setGeometryCount( uint32_t geometryCount_ ) VULKAN_HPP_NOEXCEPT + { + geometryCount = geometryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & + setPGeometries( const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * pGeometries_ ) VULKAN_HPP_NOEXCEPT + { + pGeometries = pGeometries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureBuildGeometryInfoKHR & setGeometries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR> const & geometries_ ) VULKAN_HPP_NOEXCEPT + { + geometryCount = static_cast( geometries_.size() ); + pGeometries = geometries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setPpGeometries( + const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const * ppGeometries_ ) VULKAN_HPP_NOEXCEPT + { + ppGeometries = ppGeometries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureBuildGeometryInfoKHR & setPGeometries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const> const & pGeometries_ ) VULKAN_HPP_NOEXCEPT + { + geometryCount = static_cast( pGeometries_.size() ); + ppGeometries = pGeometries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & + setScratchData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const & scratchData_ ) VULKAN_HPP_NOEXCEPT + { + scratchData = scratchData_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureBuildGeometryInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureBuildGeometryInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + type, + flags, + mode, + srcAccelerationStructure, + dstAccelerationStructure, + geometryCount, + pGeometries, + ppGeometries, + scratchData ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureBuildGeometryInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type = + VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel; + VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags = {}; + VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR mode = + VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR::eBuild; + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR srcAccelerationStructure = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dstAccelerationStructure = {}; + uint32_t geometryCount = {}; + const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * pGeometries = {}; + const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const * ppGeometries = {}; + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR scratchData = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR ) == + sizeof( VkAccelerationStructureBuildGeometryInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureBuildGeometryInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AccelerationStructureBuildGeometryInfoKHR; + }; + + struct AccelerationStructureBuildRangeInfoKHR + { + using NativeType = VkAccelerationStructureBuildRangeInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureBuildRangeInfoKHR( uint32_t primitiveCount_ = {}, + uint32_t primitiveOffset_ = {}, + uint32_t firstVertex_ = {}, + uint32_t transformOffset_ = {} ) VULKAN_HPP_NOEXCEPT + : primitiveCount( primitiveCount_ ) + , primitiveOffset( primitiveOffset_ ) + , firstVertex( firstVertex_ ) + , transformOffset( transformOffset_ ) + {} + + VULKAN_HPP_CONSTEXPR AccelerationStructureBuildRangeInfoKHR( AccelerationStructureBuildRangeInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureBuildRangeInfoKHR( VkAccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureBuildRangeInfoKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureBuildRangeInfoKHR & + operator=( AccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureBuildRangeInfoKHR & + operator=( VkAccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & + setPrimitiveCount( uint32_t primitiveCount_ ) VULKAN_HPP_NOEXCEPT + { + primitiveCount = primitiveCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & + setPrimitiveOffset( uint32_t primitiveOffset_ ) VULKAN_HPP_NOEXCEPT + { + primitiveOffset = primitiveOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & + setFirstVertex( uint32_t firstVertex_ ) VULKAN_HPP_NOEXCEPT + { + firstVertex = firstVertex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & + setTransformOffset( uint32_t transformOffset_ ) VULKAN_HPP_NOEXCEPT + { + transformOffset = transformOffset_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureBuildRangeInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureBuildRangeInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( primitiveCount, primitiveOffset, firstVertex, transformOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureBuildRangeInfoKHR const & ) const = default; +#else + bool operator==( AccelerationStructureBuildRangeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( primitiveCount == rhs.primitiveCount ) && ( primitiveOffset == rhs.primitiveOffset ) && + ( firstVertex == rhs.firstVertex ) && ( transformOffset == rhs.transformOffset ); +# endif + } + + bool operator!=( AccelerationStructureBuildRangeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t primitiveCount = {}; + uint32_t primitiveOffset = {}; + uint32_t firstVertex = {}; + uint32_t transformOffset = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR ) == + sizeof( VkAccelerationStructureBuildRangeInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureBuildRangeInfoKHR is not nothrow_move_constructible!" ); + + struct AccelerationStructureBuildSizesInfoKHR + { + using NativeType = VkAccelerationStructureBuildSizesInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAccelerationStructureBuildSizesInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureBuildSizesInfoKHR( + VULKAN_HPP_NAMESPACE::DeviceSize accelerationStructureSize_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize updateScratchSize_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize buildScratchSize_ = {} ) VULKAN_HPP_NOEXCEPT + : accelerationStructureSize( accelerationStructureSize_ ) + , updateScratchSize( updateScratchSize_ ) + , buildScratchSize( buildScratchSize_ ) + {} + + VULKAN_HPP_CONSTEXPR AccelerationStructureBuildSizesInfoKHR( AccelerationStructureBuildSizesInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureBuildSizesInfoKHR( VkAccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureBuildSizesInfoKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureBuildSizesInfoKHR & + operator=( AccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureBuildSizesInfoKHR & + operator=( VkAccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildSizesInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildSizesInfoKHR & + setAccelerationStructureSize( VULKAN_HPP_NAMESPACE::DeviceSize accelerationStructureSize_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructureSize = accelerationStructureSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildSizesInfoKHR & + setUpdateScratchSize( VULKAN_HPP_NAMESPACE::DeviceSize updateScratchSize_ ) VULKAN_HPP_NOEXCEPT + { + updateScratchSize = updateScratchSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildSizesInfoKHR & + setBuildScratchSize( VULKAN_HPP_NAMESPACE::DeviceSize buildScratchSize_ ) VULKAN_HPP_NOEXCEPT + { + buildScratchSize = buildScratchSize_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureBuildSizesInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureBuildSizesInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, accelerationStructureSize, updateScratchSize, buildScratchSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureBuildSizesInfoKHR const & ) const = default; +#else + bool operator==( AccelerationStructureBuildSizesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( accelerationStructureSize == rhs.accelerationStructureSize ) && + ( updateScratchSize == rhs.updateScratchSize ) && ( buildScratchSize == rhs.buildScratchSize ); +# endif + } + + bool operator!=( AccelerationStructureBuildSizesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureBuildSizesInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceSize accelerationStructureSize = {}; + VULKAN_HPP_NAMESPACE::DeviceSize updateScratchSize = {}; + VULKAN_HPP_NAMESPACE::DeviceSize buildScratchSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR ) == + sizeof( VkAccelerationStructureBuildSizesInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureBuildSizesInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AccelerationStructureBuildSizesInfoKHR; + }; + + struct AccelerationStructureCreateInfoKHR + { + using NativeType = VkAccelerationStructureCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAccelerationStructureCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + AccelerationStructureCreateInfoKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags_ = {}, + VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, + VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_ = + VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel, + VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} ) VULKAN_HPP_NOEXCEPT + : createFlags( createFlags_ ) + , buffer( buffer_ ) + , offset( offset_ ) + , size( size_ ) + , type( type_ ) + , deviceAddress( deviceAddress_ ) + {} + + VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoKHR( AccelerationStructureCreateInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureCreateInfoKHR( VkAccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureCreateInfoKHR & + operator=( AccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureCreateInfoKHR & + operator=( VkAccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & + setCreateFlags( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags_ ) VULKAN_HPP_NOEXCEPT + { + createFlags = createFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & + setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & + setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & + setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & + setType( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & + setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, createFlags, buffer, offset, size, type, deviceAddress ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureCreateInfoKHR const & ) const = default; +#else + bool operator==( AccelerationStructureCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( createFlags == rhs.createFlags ) && + ( buffer == rhs.buffer ) && ( offset == rhs.offset ) && ( size == rhs.size ) && ( type == rhs.type ) && + ( deviceAddress == rhs.deviceAddress ); +# endif + } + + bool operator!=( AccelerationStructureCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags = {}; + VULKAN_HPP_NAMESPACE::Buffer buffer = {}; + VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize size = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type = + VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel; + VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR ) == + sizeof( VkAccelerationStructureCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AccelerationStructureCreateInfoKHR; + }; + + struct GeometryTrianglesNV + { + using NativeType = VkGeometryTrianglesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeometryTrianglesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + GeometryTrianglesNV( VULKAN_HPP_NAMESPACE::Buffer vertexData_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize vertexOffset_ = {}, + uint32_t vertexCount_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_ = {}, + VULKAN_HPP_NAMESPACE::Format vertexFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::Buffer indexData_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize indexOffset_ = {}, + uint32_t indexCount_ = {}, + VULKAN_HPP_NAMESPACE::IndexType indexType_ = VULKAN_HPP_NAMESPACE::IndexType::eUint16, + VULKAN_HPP_NAMESPACE::Buffer transformData_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize transformOffset_ = {} ) VULKAN_HPP_NOEXCEPT + : vertexData( vertexData_ ) + , vertexOffset( vertexOffset_ ) + , vertexCount( vertexCount_ ) + , vertexStride( vertexStride_ ) + , vertexFormat( vertexFormat_ ) + , indexData( indexData_ ) + , indexOffset( indexOffset_ ) + , indexCount( indexCount_ ) + , indexType( indexType_ ) + , transformData( transformData_ ) + , transformOffset( transformOffset_ ) + {} + + VULKAN_HPP_CONSTEXPR GeometryTrianglesNV( GeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeometryTrianglesNV( VkGeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : GeometryTrianglesNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + GeometryTrianglesNV & operator=( GeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeometryTrianglesNV & operator=( VkGeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & + setVertexData( VULKAN_HPP_NAMESPACE::Buffer vertexData_ ) VULKAN_HPP_NOEXCEPT + { + vertexData = vertexData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & + setVertexOffset( VULKAN_HPP_NAMESPACE::DeviceSize vertexOffset_ ) VULKAN_HPP_NOEXCEPT + { + vertexOffset = vertexOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT + { + vertexCount = vertexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & + setVertexStride( VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_ ) VULKAN_HPP_NOEXCEPT + { + vertexStride = vertexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & + setVertexFormat( VULKAN_HPP_NAMESPACE::Format vertexFormat_ ) VULKAN_HPP_NOEXCEPT + { + vertexFormat = vertexFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & + setIndexData( VULKAN_HPP_NAMESPACE::Buffer indexData_ ) VULKAN_HPP_NOEXCEPT + { + indexData = indexData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & + setIndexOffset( VULKAN_HPP_NAMESPACE::DeviceSize indexOffset_ ) VULKAN_HPP_NOEXCEPT + { + indexOffset = indexOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT + { + indexCount = indexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & + setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & + setTransformData( VULKAN_HPP_NAMESPACE::Buffer transformData_ ) VULKAN_HPP_NOEXCEPT + { + transformData = transformData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & + setTransformOffset( VULKAN_HPP_NAMESPACE::DeviceSize transformOffset_ ) VULKAN_HPP_NOEXCEPT + { + transformOffset = transformOffset_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkGeometryTrianglesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkGeometryTrianglesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + vertexData, + vertexOffset, + vertexCount, + vertexStride, + vertexFormat, + indexData, + indexOffset, + indexCount, + indexType, + transformData, + transformOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeometryTrianglesNV const & ) const = default; +#else + bool operator==( GeometryTrianglesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vertexData == rhs.vertexData ) && + ( vertexOffset == rhs.vertexOffset ) && ( vertexCount == rhs.vertexCount ) && + ( vertexStride == rhs.vertexStride ) && ( vertexFormat == rhs.vertexFormat ) && + ( indexData == rhs.indexData ) && ( indexOffset == rhs.indexOffset ) && ( indexCount == rhs.indexCount ) && + ( indexType == rhs.indexType ) && ( transformData == rhs.transformData ) && + ( transformOffset == rhs.transformOffset ); +# endif + } + + bool operator!=( GeometryTrianglesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeometryTrianglesNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Buffer vertexData = {}; + VULKAN_HPP_NAMESPACE::DeviceSize vertexOffset = {}; + uint32_t vertexCount = {}; + VULKAN_HPP_NAMESPACE::DeviceSize vertexStride = {}; + VULKAN_HPP_NAMESPACE::Format vertexFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::Buffer indexData = {}; + VULKAN_HPP_NAMESPACE::DeviceSize indexOffset = {}; + uint32_t indexCount = {}; + VULKAN_HPP_NAMESPACE::IndexType indexType = VULKAN_HPP_NAMESPACE::IndexType::eUint16; + VULKAN_HPP_NAMESPACE::Buffer transformData = {}; + VULKAN_HPP_NAMESPACE::DeviceSize transformOffset = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeometryTrianglesNV ) == sizeof( VkGeometryTrianglesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GeometryTrianglesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = GeometryTrianglesNV; + }; + + struct GeometryAABBNV + { + using NativeType = VkGeometryAABBNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeometryAabbNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeometryAABBNV( VULKAN_HPP_NAMESPACE::Buffer aabbData_ = {}, + uint32_t numAABBs_ = {}, + uint32_t stride_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {} ) VULKAN_HPP_NOEXCEPT + : aabbData( aabbData_ ) + , numAABBs( numAABBs_ ) + , stride( stride_ ) + , offset( offset_ ) + {} + + VULKAN_HPP_CONSTEXPR GeometryAABBNV( GeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeometryAABBNV( VkGeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT + : GeometryAABBNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + GeometryAABBNV & operator=( GeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeometryAABBNV & operator=( VkGeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setAabbData( VULKAN_HPP_NAMESPACE::Buffer aabbData_ ) VULKAN_HPP_NOEXCEPT + { + aabbData = aabbData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setNumAABBs( uint32_t numAABBs_ ) VULKAN_HPP_NOEXCEPT + { + numAABBs = numAABBs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkGeometryAABBNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkGeometryAABBNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, aabbData, numAABBs, stride, offset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeometryAABBNV const & ) const = default; +#else + bool operator==( GeometryAABBNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( aabbData == rhs.aabbData ) && + ( numAABBs == rhs.numAABBs ) && ( stride == rhs.stride ) && ( offset == rhs.offset ); +# endif + } + + bool operator!=( GeometryAABBNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeometryAabbNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Buffer aabbData = {}; + uint32_t numAABBs = {}; + uint32_t stride = {}; + VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeometryAABBNV ) == sizeof( VkGeometryAABBNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GeometryAABBNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = GeometryAABBNV; + }; + + struct GeometryDataNV + { + using NativeType = VkGeometryDataNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeometryDataNV( VULKAN_HPP_NAMESPACE::GeometryTrianglesNV triangles_ = {}, + VULKAN_HPP_NAMESPACE::GeometryAABBNV aabbs_ = {} ) VULKAN_HPP_NOEXCEPT + : triangles( triangles_ ) + , aabbs( aabbs_ ) + {} + + VULKAN_HPP_CONSTEXPR GeometryDataNV( GeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeometryDataNV( VkGeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + : GeometryDataNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + GeometryDataNV & operator=( GeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeometryDataNV & operator=( VkGeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeometryDataNV & + setTriangles( VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const & triangles_ ) VULKAN_HPP_NOEXCEPT + { + triangles = triangles_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryDataNV & + setAabbs( VULKAN_HPP_NAMESPACE::GeometryAABBNV const & aabbs_ ) VULKAN_HPP_NOEXCEPT + { + aabbs = aabbs_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkGeometryDataNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkGeometryDataNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( triangles, aabbs ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeometryDataNV const & ) const = default; +#else + bool operator==( GeometryDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( triangles == rhs.triangles ) && ( aabbs == rhs.aabbs ); +# endif + } + + bool operator!=( GeometryDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::GeometryTrianglesNV triangles = {}; + VULKAN_HPP_NAMESPACE::GeometryAABBNV aabbs = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeometryDataNV ) == sizeof( VkGeometryDataNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GeometryDataNV is not nothrow_move_constructible!" ); + + struct GeometryNV + { + using NativeType = VkGeometryNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeometryNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeometryNV( + VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles, + VULKAN_HPP_NAMESPACE::GeometryDataNV geometry_ = {}, + VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_ = {} ) VULKAN_HPP_NOEXCEPT + : geometryType( geometryType_ ) + , geometry( geometry_ ) + , flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR GeometryNV( GeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeometryNV( VkGeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT + : GeometryNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + GeometryNV & operator=( GeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeometryNV & operator=( VkGeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeometryNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryNV & + setGeometryType( VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ ) VULKAN_HPP_NOEXCEPT + { + geometryType = geometryType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryNV & + setGeometry( VULKAN_HPP_NAMESPACE::GeometryDataNV const & geometry_ ) VULKAN_HPP_NOEXCEPT + { + geometry = geometry_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryNV & setFlags( VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkGeometryNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkGeometryNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, geometryType, geometry, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeometryNV const & ) const = default; +#else + bool operator==( GeometryNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( geometryType == rhs.geometryType ) && + ( geometry == rhs.geometry ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( GeometryNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeometryNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles; + VULKAN_HPP_NAMESPACE::GeometryDataNV geometry = {}; + VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeometryNV ) == sizeof( VkGeometryNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GeometryNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = GeometryNV; + }; + + struct AccelerationStructureInfoNV + { + using NativeType = VkAccelerationStructureInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + AccelerationStructureInfoNV( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV type_ = {}, + VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags_ = {}, + uint32_t instanceCount_ = {}, + uint32_t geometryCount_ = {}, + const VULKAN_HPP_NAMESPACE::GeometryNV * pGeometries_ = {} ) VULKAN_HPP_NOEXCEPT + : type( type_ ) + , flags( flags_ ) + , instanceCount( instanceCount_ ) + , geometryCount( geometryCount_ ) + , pGeometries( pGeometries_ ) + {} + + VULKAN_HPP_CONSTEXPR + AccelerationStructureInfoNV( AccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureInfoNV( VkAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureInfoNV( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureInfoNV( + VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV type_, + VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags_, + uint32_t instanceCount_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & geometries_ ) + : type( type_ ) + , flags( flags_ ) + , instanceCount( instanceCount_ ) + , geometryCount( static_cast( geometries_.size() ) ) + , pGeometries( geometries_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureInfoNV & operator=( AccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureInfoNV & operator=( VkAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & + setType( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & + setFlags( VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & + setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT + { + instanceCount = instanceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & + setGeometryCount( uint32_t geometryCount_ ) VULKAN_HPP_NOEXCEPT + { + geometryCount = geometryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & + setPGeometries( const VULKAN_HPP_NAMESPACE::GeometryNV * pGeometries_ ) VULKAN_HPP_NOEXCEPT + { + pGeometries = pGeometries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureInfoNV & setGeometries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & geometries_ ) + VULKAN_HPP_NOEXCEPT + { + geometryCount = static_cast( geometries_.size() ); + pGeometries = geometries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, flags, instanceCount, geometryCount, pGeometries ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureInfoNV const & ) const = default; +#else + bool operator==( AccelerationStructureInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( flags == rhs.flags ) && + ( instanceCount == rhs.instanceCount ) && ( geometryCount == rhs.geometryCount ) && + ( pGeometries == rhs.pGeometries ); +# endif + } + + bool operator!=( AccelerationStructureInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV type = {}; + VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags = {}; + uint32_t instanceCount = {}; + uint32_t geometryCount = {}; + const VULKAN_HPP_NAMESPACE::GeometryNV * pGeometries = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV ) == + sizeof( VkAccelerationStructureInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AccelerationStructureInfoNV; + }; + + struct AccelerationStructureCreateInfoNV + { + using NativeType = VkAccelerationStructureCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAccelerationStructureCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoNV( + VULKAN_HPP_NAMESPACE::DeviceSize compactedSize_ = {}, + VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV info_ = {} ) VULKAN_HPP_NOEXCEPT + : compactedSize( compactedSize_ ) + , info( info_ ) + {} + + VULKAN_HPP_CONSTEXPR + AccelerationStructureCreateInfoNV( AccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureCreateInfoNV( VkAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureCreateInfoNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureCreateInfoNV & + operator=( AccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureCreateInfoNV & operator=( VkAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV & + setCompactedSize( VULKAN_HPP_NAMESPACE::DeviceSize compactedSize_ ) VULKAN_HPP_NOEXCEPT + { + compactedSize = compactedSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV & + setInfo( VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV const & info_ ) VULKAN_HPP_NOEXCEPT + { + info = info_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, compactedSize, info ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureCreateInfoNV const & ) const = default; +#else + bool operator==( AccelerationStructureCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( compactedSize == rhs.compactedSize ) && + ( info == rhs.info ); +# endif + } + + bool operator!=( AccelerationStructureCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceSize compactedSize = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV info = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV ) == + sizeof( VkAccelerationStructureCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AccelerationStructureCreateInfoNV; + }; + + struct AccelerationStructureDeviceAddressInfoKHR + { + using NativeType = VkAccelerationStructureDeviceAddressInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAccelerationStructureDeviceAddressInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureDeviceAddressInfoKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure_ = {} ) VULKAN_HPP_NOEXCEPT + : accelerationStructure( accelerationStructure_ ) + {} + + VULKAN_HPP_CONSTEXPR AccelerationStructureDeviceAddressInfoKHR( + AccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureDeviceAddressInfoKHR( VkAccelerationStructureDeviceAddressInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : AccelerationStructureDeviceAddressInfoKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureDeviceAddressInfoKHR & + operator=( AccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureDeviceAddressInfoKHR & + operator=( VkAccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDeviceAddressInfoKHR & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDeviceAddressInfoKHR & setAccelerationStructure( + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureDeviceAddressInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureDeviceAddressInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, accelerationStructure ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureDeviceAddressInfoKHR const & ) const = default; +#else + bool operator==( AccelerationStructureDeviceAddressInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructure == rhs.accelerationStructure ); +# endif + } + + bool operator!=( AccelerationStructureDeviceAddressInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureDeviceAddressInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR ) == + sizeof( VkAccelerationStructureDeviceAddressInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureDeviceAddressInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AccelerationStructureDeviceAddressInfoKHR; + }; + + struct AccelerationStructureGeometryMotionTrianglesDataNV + { + using NativeType = VkAccelerationStructureGeometryMotionTrianglesDataNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAccelerationStructureGeometryMotionTrianglesDataNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV( + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData_ = {} ) VULKAN_HPP_NOEXCEPT + : vertexData( vertexData_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV( + AccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryMotionTrianglesDataNV( + VkAccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureGeometryMotionTrianglesDataNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureGeometryMotionTrianglesDataNV & + operator=( AccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryMotionTrianglesDataNV & + operator=( VkAccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV & + setVertexData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & vertexData_ ) VULKAN_HPP_NOEXCEPT + { + vertexData = vertexData_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureGeometryMotionTrianglesDataNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureGeometryMotionTrianglesDataNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vertexData ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryMotionTrianglesDataNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV ) == + sizeof( VkAccelerationStructureGeometryMotionTrianglesDataNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureGeometryMotionTrianglesDataNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AccelerationStructureGeometryMotionTrianglesDataNV; + }; + + struct TransformMatrixKHR + { + using NativeType = VkTransformMatrixKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + TransformMatrixKHR( std::array, 3> const & matrix_ = {} ) VULKAN_HPP_NOEXCEPT + : matrix( matrix_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR( TransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TransformMatrixKHR( VkTransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : TransformMatrixKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + TransformMatrixKHR & operator=( TransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TransformMatrixKHR & operator=( VkTransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR & + setMatrix( std::array, 3> matrix_ ) VULKAN_HPP_NOEXCEPT + { + matrix = matrix_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkTransformMatrixKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkTransformMatrixKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( matrix ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TransformMatrixKHR const & ) const = default; +#else + bool operator==( TransformMatrixKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( matrix == rhs.matrix ); +# endif + } + + bool operator!=( TransformMatrixKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ArrayWrapper2D matrix = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TransformMatrixKHR ) == sizeof( VkTransformMatrixKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TransformMatrixKHR is not nothrow_move_constructible!" ); + using TransformMatrixNV = TransformMatrixKHR; + + struct AccelerationStructureInstanceKHR + { + using NativeType = VkAccelerationStructureInstanceKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureInstanceKHR( VULKAN_HPP_NAMESPACE::TransformMatrixKHR transform_ = {}, + uint32_t instanceCustomIndex_ = {}, + uint32_t mask_ = {}, + uint32_t instanceShaderBindingTableRecordOffset_ = {}, + VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ = {}, + uint64_t accelerationStructureReference_ = {} ) VULKAN_HPP_NOEXCEPT + : transform( transform_ ) + , instanceCustomIndex( instanceCustomIndex_ ) + , mask( mask_ ) + , instanceShaderBindingTableRecordOffset( instanceShaderBindingTableRecordOffset_ ) + , flags( flags_ ) + , accelerationStructureReference( accelerationStructureReference_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureInstanceKHR( AccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureInstanceKHR( VkAccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureInstanceKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureInstanceKHR & + operator=( AccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureInstanceKHR & operator=( VkAccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & + setTransform( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transform_ ) VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & + setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) VULKAN_HPP_NOEXCEPT + { + instanceCustomIndex = instanceCustomIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & setMask( uint32_t mask_ ) VULKAN_HPP_NOEXCEPT + { + mask = mask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & + setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) VULKAN_HPP_NOEXCEPT + { + instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_; + return *this; + } + + AccelerationStructureInstanceKHR & + setFlags( VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = *reinterpret_cast( &flags_ ); + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & + setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructureReference = accelerationStructureReference_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureInstanceKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureInstanceKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( transform, + instanceCustomIndex, + mask, + instanceShaderBindingTableRecordOffset, + flags, + accelerationStructureReference ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureInstanceKHR const & ) const = default; +#else + bool operator==( AccelerationStructureInstanceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( transform == rhs.transform ) && ( instanceCustomIndex == rhs.instanceCustomIndex ) && + ( mask == rhs.mask ) && + ( instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset ) && + ( flags == rhs.flags ) && ( accelerationStructureReference == rhs.accelerationStructureReference ); +# endif + } + + bool operator!=( AccelerationStructureInstanceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::TransformMatrixKHR transform = {}; + uint32_t instanceCustomIndex : 24; + uint32_t mask : 8; + uint32_t instanceShaderBindingTableRecordOffset : 24; + VkGeometryInstanceFlagsKHR flags : 8; + uint64_t accelerationStructureReference = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR ) == + sizeof( VkAccelerationStructureInstanceKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureInstanceKHR is not nothrow_move_constructible!" ); + using AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR; + + struct AccelerationStructureMatrixMotionInstanceNV + { + using NativeType = VkAccelerationStructureMatrixMotionInstanceNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureMatrixMotionInstanceNV( VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT0_ = {}, + VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT1_ = {}, + uint32_t instanceCustomIndex_ = {}, + uint32_t mask_ = {}, + uint32_t instanceShaderBindingTableRecordOffset_ = {}, + VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ = {}, + uint64_t accelerationStructureReference_ = {} ) VULKAN_HPP_NOEXCEPT + : transformT0( transformT0_ ) + , transformT1( transformT1_ ) + , instanceCustomIndex( instanceCustomIndex_ ) + , mask( mask_ ) + , instanceShaderBindingTableRecordOffset( instanceShaderBindingTableRecordOffset_ ) + , flags( flags_ ) + , accelerationStructureReference( accelerationStructureReference_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV( + AccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureMatrixMotionInstanceNV( VkAccelerationStructureMatrixMotionInstanceNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : AccelerationStructureMatrixMotionInstanceNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureMatrixMotionInstanceNV & + operator=( AccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureMatrixMotionInstanceNV & + operator=( VkAccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & + setTransformT0( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transformT0_ ) VULKAN_HPP_NOEXCEPT + { + transformT0 = transformT0_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & + setTransformT1( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transformT1_ ) VULKAN_HPP_NOEXCEPT + { + transformT1 = transformT1_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & + setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) VULKAN_HPP_NOEXCEPT + { + instanceCustomIndex = instanceCustomIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & setMask( uint32_t mask_ ) VULKAN_HPP_NOEXCEPT + { + mask = mask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & + setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) VULKAN_HPP_NOEXCEPT + { + instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_; + return *this; + } + + AccelerationStructureMatrixMotionInstanceNV & + setFlags( VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = *reinterpret_cast( &flags_ ); + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & + setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructureReference = accelerationStructureReference_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureMatrixMotionInstanceNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureMatrixMotionInstanceNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( transformT0, + transformT1, + instanceCustomIndex, + mask, + instanceShaderBindingTableRecordOffset, + flags, + accelerationStructureReference ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureMatrixMotionInstanceNV const & ) const = default; +#else + bool operator==( AccelerationStructureMatrixMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( transformT0 == rhs.transformT0 ) && ( transformT1 == rhs.transformT1 ) && + ( instanceCustomIndex == rhs.instanceCustomIndex ) && ( mask == rhs.mask ) && + ( instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset ) && + ( flags == rhs.flags ) && ( accelerationStructureReference == rhs.accelerationStructureReference ); +# endif + } + + bool operator!=( AccelerationStructureMatrixMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT0 = {}; + VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT1 = {}; + uint32_t instanceCustomIndex : 24; + uint32_t mask : 8; + uint32_t instanceShaderBindingTableRecordOffset : 24; + VkGeometryInstanceFlagsKHR flags : 8; + uint64_t accelerationStructureReference = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV ) == + sizeof( VkAccelerationStructureMatrixMotionInstanceNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureMatrixMotionInstanceNV is not nothrow_move_constructible!" ); + + struct AccelerationStructureMemoryRequirementsInfoNV + { + using NativeType = VkAccelerationStructureMemoryRequirementsInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAccelerationStructureMemoryRequirementsInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureMemoryRequirementsInfoNV( + VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type_ = + VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV::eObject, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ = {} ) VULKAN_HPP_NOEXCEPT + : type( type_ ) + , accelerationStructure( accelerationStructure_ ) + {} + + VULKAN_HPP_CONSTEXPR AccelerationStructureMemoryRequirementsInfoNV( + AccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureMemoryRequirementsInfoNV( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : AccelerationStructureMemoryRequirementsInfoNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureMemoryRequirementsInfoNV & + operator=( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureMemoryRequirementsInfoNV & + operator=( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV & + setType( VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV & setAccelerationStructure( + VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureMemoryRequirementsInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureMemoryRequirementsInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, accelerationStructure ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureMemoryRequirementsInfoNV const & ) const = default; +#else + bool operator==( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && + ( accelerationStructure == rhs.accelerationStructure ); +# endif + } + + bool operator!=( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureMemoryRequirementsInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type = + VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV::eObject; + VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV ) == + sizeof( VkAccelerationStructureMemoryRequirementsInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureMemoryRequirementsInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AccelerationStructureMemoryRequirementsInfoNV; + }; + + struct AccelerationStructureMotionInfoNV + { + using NativeType = VkAccelerationStructureMotionInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAccelerationStructureMotionInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureMotionInfoNV( + uint32_t maxInstances_ = {}, + VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoFlagsNV flags_ = {} ) VULKAN_HPP_NOEXCEPT + : maxInstances( maxInstances_ ) + , flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR + AccelerationStructureMotionInfoNV( AccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureMotionInfoNV( VkAccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureMotionInfoNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureMotionInfoNV & + operator=( AccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureMotionInfoNV & operator=( VkAccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV & + setMaxInstances( uint32_t maxInstances_ ) VULKAN_HPP_NOEXCEPT + { + maxInstances = maxInstances_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV & + setFlags( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureMotionInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureMotionInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxInstances, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureMotionInfoNV const & ) const = default; +#else + bool operator==( AccelerationStructureMotionInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxInstances == rhs.maxInstances ) && + ( flags == rhs.flags ); +# endif + } + + bool operator!=( AccelerationStructureMotionInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureMotionInfoNV; + const void * pNext = {}; + uint32_t maxInstances = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoFlagsNV flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV ) == + sizeof( VkAccelerationStructureMotionInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureMotionInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AccelerationStructureMotionInfoNV; + }; + + struct SRTDataNV + { + using NativeType = VkSRTDataNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SRTDataNV( float sx_ = {}, + float a_ = {}, + float b_ = {}, + float pvx_ = {}, + float sy_ = {}, + float c_ = {}, + float pvy_ = {}, + float sz_ = {}, + float pvz_ = {}, + float qx_ = {}, + float qy_ = {}, + float qz_ = {}, + float qw_ = {}, + float tx_ = {}, + float ty_ = {}, + float tz_ = {} ) VULKAN_HPP_NOEXCEPT + : sx( sx_ ) + , a( a_ ) + , b( b_ ) + , pvx( pvx_ ) + , sy( sy_ ) + , c( c_ ) + , pvy( pvy_ ) + , sz( sz_ ) + , pvz( pvz_ ) + , qx( qx_ ) + , qy( qy_ ) + , qz( qz_ ) + , qw( qw_ ) + , tx( tx_ ) + , ty( ty_ ) + , tz( tz_ ) + {} + + VULKAN_HPP_CONSTEXPR SRTDataNV( SRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SRTDataNV( VkSRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT : SRTDataNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SRTDataNV & operator=( SRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SRTDataNV & operator=( VkSRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setSx( float sx_ ) VULKAN_HPP_NOEXCEPT + { + sx = sx_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setA( float a_ ) VULKAN_HPP_NOEXCEPT + { + a = a_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setB( float b_ ) VULKAN_HPP_NOEXCEPT + { + b = b_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setPvx( float pvx_ ) VULKAN_HPP_NOEXCEPT + { + pvx = pvx_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setSy( float sy_ ) VULKAN_HPP_NOEXCEPT + { + sy = sy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setC( float c_ ) VULKAN_HPP_NOEXCEPT + { + c = c_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setPvy( float pvy_ ) VULKAN_HPP_NOEXCEPT + { + pvy = pvy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setSz( float sz_ ) VULKAN_HPP_NOEXCEPT + { + sz = sz_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setPvz( float pvz_ ) VULKAN_HPP_NOEXCEPT + { + pvz = pvz_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQx( float qx_ ) VULKAN_HPP_NOEXCEPT + { + qx = qx_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQy( float qy_ ) VULKAN_HPP_NOEXCEPT + { + qy = qy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQz( float qz_ ) VULKAN_HPP_NOEXCEPT + { + qz = qz_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQw( float qw_ ) VULKAN_HPP_NOEXCEPT + { + qw = qw_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setTx( float tx_ ) VULKAN_HPP_NOEXCEPT + { + tx = tx_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setTy( float ty_ ) VULKAN_HPP_NOEXCEPT + { + ty = ty_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setTz( float tz_ ) VULKAN_HPP_NOEXCEPT + { + tz = tz_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSRTDataNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSRTDataNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sx, a, b, pvx, sy, c, pvy, sz, pvz, qx, qy, qz, qw, tx, ty, tz ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SRTDataNV const & ) const = default; +#else + bool operator==( SRTDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sx == rhs.sx ) && ( a == rhs.a ) && ( b == rhs.b ) && ( pvx == rhs.pvx ) && ( sy == rhs.sy ) && + ( c == rhs.c ) && ( pvy == rhs.pvy ) && ( sz == rhs.sz ) && ( pvz == rhs.pvz ) && ( qx == rhs.qx ) && + ( qy == rhs.qy ) && ( qz == rhs.qz ) && ( qw == rhs.qw ) && ( tx == rhs.tx ) && ( ty == rhs.ty ) && + ( tz == rhs.tz ); +# endif + } + + bool operator!=( SRTDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float sx = {}; + float a = {}; + float b = {}; + float pvx = {}; + float sy = {}; + float c = {}; + float pvy = {}; + float sz = {}; + float pvz = {}; + float qx = {}; + float qy = {}; + float qz = {}; + float qw = {}; + float tx = {}; + float ty = {}; + float tz = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SRTDataNV ) == sizeof( VkSRTDataNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SRTDataNV is not nothrow_move_constructible!" ); + + struct AccelerationStructureSRTMotionInstanceNV + { + using NativeType = VkAccelerationStructureSRTMotionInstanceNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + AccelerationStructureSRTMotionInstanceNV( VULKAN_HPP_NAMESPACE::SRTDataNV transformT0_ = {}, + VULKAN_HPP_NAMESPACE::SRTDataNV transformT1_ = {}, + uint32_t instanceCustomIndex_ = {}, + uint32_t mask_ = {}, + uint32_t instanceShaderBindingTableRecordOffset_ = {}, + VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ = {}, + uint64_t accelerationStructureReference_ = {} ) VULKAN_HPP_NOEXCEPT + : transformT0( transformT0_ ) + , transformT1( transformT1_ ) + , instanceCustomIndex( instanceCustomIndex_ ) + , mask( mask_ ) + , instanceShaderBindingTableRecordOffset( instanceShaderBindingTableRecordOffset_ ) + , flags( flags_ ) + , accelerationStructureReference( accelerationStructureReference_ ) + {} + + VULKAN_HPP_CONSTEXPR AccelerationStructureSRTMotionInstanceNV( + AccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureSRTMotionInstanceNV( VkAccelerationStructureSRTMotionInstanceNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : AccelerationStructureSRTMotionInstanceNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureSRTMotionInstanceNV & + operator=( AccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureSRTMotionInstanceNV & + operator=( VkAccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & + setTransformT0( VULKAN_HPP_NAMESPACE::SRTDataNV const & transformT0_ ) VULKAN_HPP_NOEXCEPT + { + transformT0 = transformT0_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & + setTransformT1( VULKAN_HPP_NAMESPACE::SRTDataNV const & transformT1_ ) VULKAN_HPP_NOEXCEPT + { + transformT1 = transformT1_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & + setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) VULKAN_HPP_NOEXCEPT + { + instanceCustomIndex = instanceCustomIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & setMask( uint32_t mask_ ) VULKAN_HPP_NOEXCEPT + { + mask = mask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & + setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) VULKAN_HPP_NOEXCEPT + { + instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_; + return *this; + } + + AccelerationStructureSRTMotionInstanceNV & + setFlags( VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = *reinterpret_cast( &flags_ ); + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & + setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructureReference = accelerationStructureReference_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureSRTMotionInstanceNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureSRTMotionInstanceNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( transformT0, + transformT1, + instanceCustomIndex, + mask, + instanceShaderBindingTableRecordOffset, + flags, + accelerationStructureReference ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureSRTMotionInstanceNV const & ) const = default; +#else + bool operator==( AccelerationStructureSRTMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( transformT0 == rhs.transformT0 ) && ( transformT1 == rhs.transformT1 ) && + ( instanceCustomIndex == rhs.instanceCustomIndex ) && ( mask == rhs.mask ) && + ( instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset ) && + ( flags == rhs.flags ) && ( accelerationStructureReference == rhs.accelerationStructureReference ); +# endif + } + + bool operator!=( AccelerationStructureSRTMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::SRTDataNV transformT0 = {}; + VULKAN_HPP_NAMESPACE::SRTDataNV transformT1 = {}; + uint32_t instanceCustomIndex : 24; + uint32_t mask : 8; + uint32_t instanceShaderBindingTableRecordOffset : 24; + VkGeometryInstanceFlagsKHR flags : 8; + uint64_t accelerationStructureReference = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV ) == + sizeof( VkAccelerationStructureSRTMotionInstanceNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureSRTMotionInstanceNV is not nothrow_move_constructible!" ); + + union AccelerationStructureMotionInstanceDataNV + { + using NativeType = VkAccelerationStructureMotionInstanceDataNV; +#if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV( + VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR staticInstance_ = {} ) + : staticInstance( staticInstance_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV( + VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV matrixMotionInstance_ ) + : matrixMotionInstance( matrixMotionInstance_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV( + VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV srtMotionInstance_ ) + : srtMotionInstance( srtMotionInstance_ ) + {} +#endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV & setStaticInstance( + VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR const & staticInstance_ ) VULKAN_HPP_NOEXCEPT + { + staticInstance = staticInstance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV & setMatrixMotionInstance( + VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV const & matrixMotionInstance_ ) + VULKAN_HPP_NOEXCEPT + { + matrixMotionInstance = matrixMotionInstance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV & setSrtMotionInstance( + VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV const & srtMotionInstance_ ) VULKAN_HPP_NOEXCEPT + { + srtMotionInstance = srtMotionInstance_; + return *this; + } +#endif /*VULKAN_HPP_NO_UNION_SETTERS*/ + + operator VkAccelerationStructureMotionInstanceDataNV const &() const + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureMotionInstanceDataNV &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR staticInstance; + VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV matrixMotionInstance; + VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV srtMotionInstance; +#else + VkAccelerationStructureInstanceKHR staticInstance; + VkAccelerationStructureMatrixMotionInstanceNV matrixMotionInstance; + VkAccelerationStructureSRTMotionInstanceNV srtMotionInstance; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + + struct AccelerationStructureMotionInstanceNV + { + using NativeType = VkAccelerationStructureMotionInstanceNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV( + VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV type_ = + VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV::eStatic, + VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceFlagsNV flags_ = {}, + VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV data_ = {} ) VULKAN_HPP_NOEXCEPT + : type( type_ ) + , flags( flags_ ) + , data( data_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV( AccelerationStructureMotionInstanceNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureMotionInstanceNV( VkAccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureMotionInstanceNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureMotionInstanceNV & + operator=( AccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureMotionInstanceNV & + operator=( VkAccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV & + setType( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV & + setFlags( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV & + setData( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV const & data_ ) VULKAN_HPP_NOEXCEPT + { + data = data_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureMotionInstanceNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureMotionInstanceNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( type, flags, data ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV type = + VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV::eStatic; + VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceFlagsNV flags = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV data = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV ) == + sizeof( VkAccelerationStructureMotionInstanceNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureMotionInstanceNV is not nothrow_move_constructible!" ); + + struct AccelerationStructureVersionInfoKHR + { + using NativeType = VkAccelerationStructureVersionInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAccelerationStructureVersionInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureVersionInfoKHR( const uint8_t * pVersionData_ = {} ) VULKAN_HPP_NOEXCEPT + : pVersionData( pVersionData_ ) + {} + + VULKAN_HPP_CONSTEXPR AccelerationStructureVersionInfoKHR( AccelerationStructureVersionInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureVersionInfoKHR( VkAccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureVersionInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AccelerationStructureVersionInfoKHR & + operator=( AccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureVersionInfoKHR & + operator=( VkAccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureVersionInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureVersionInfoKHR & + setPVersionData( const uint8_t * pVersionData_ ) VULKAN_HPP_NOEXCEPT + { + pVersionData = pVersionData_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAccelerationStructureVersionInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAccelerationStructureVersionInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pVersionData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureVersionInfoKHR const & ) const = default; +#else + bool operator==( AccelerationStructureVersionInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pVersionData == rhs.pVersionData ); +# endif + } + + bool operator!=( AccelerationStructureVersionInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureVersionInfoKHR; + const void * pNext = {}; + const uint8_t * pVersionData = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR ) == + sizeof( VkAccelerationStructureVersionInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AccelerationStructureVersionInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AccelerationStructureVersionInfoKHR; + }; + + struct AcquireNextImageInfoKHR + { + using NativeType = VkAcquireNextImageInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAcquireNextImageInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AcquireNextImageInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ = {}, + uint64_t timeout_ = {}, + VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, + VULKAN_HPP_NAMESPACE::Fence fence_ = {}, + uint32_t deviceMask_ = {} ) VULKAN_HPP_NOEXCEPT + : swapchain( swapchain_ ) + , timeout( timeout_ ) + , semaphore( semaphore_ ) + , fence( fence_ ) + , deviceMask( deviceMask_ ) + {} + + VULKAN_HPP_CONSTEXPR AcquireNextImageInfoKHR( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AcquireNextImageInfoKHR( VkAcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AcquireNextImageInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AcquireNextImageInfoKHR & operator=( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AcquireNextImageInfoKHR & operator=( VkAcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & + setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT + { + swapchain = swapchain_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setTimeout( uint64_t timeout_ ) VULKAN_HPP_NOEXCEPT + { + timeout = timeout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & + setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT + { + fence = fence_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT + { + deviceMask = deviceMask_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAcquireNextImageInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAcquireNextImageInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchain, timeout, semaphore, fence, deviceMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AcquireNextImageInfoKHR const & ) const = default; +#else + bool operator==( AcquireNextImageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain ) && + ( timeout == rhs.timeout ) && ( semaphore == rhs.semaphore ) && ( fence == rhs.fence ) && + ( deviceMask == rhs.deviceMask ); +# endif + } + + bool operator!=( AcquireNextImageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAcquireNextImageInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain = {}; + uint64_t timeout = {}; + VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; + VULKAN_HPP_NAMESPACE::Fence fence = {}; + uint32_t deviceMask = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR ) == + sizeof( VkAcquireNextImageInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AcquireNextImageInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AcquireNextImageInfoKHR; + }; + + struct AcquireProfilingLockInfoKHR + { + using NativeType = VkAcquireProfilingLockInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAcquireProfilingLockInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AcquireProfilingLockInfoKHR( VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags_ = {}, + uint64_t timeout_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , timeout( timeout_ ) + {} + + VULKAN_HPP_CONSTEXPR + AcquireProfilingLockInfoKHR( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AcquireProfilingLockInfoKHR( VkAcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AcquireProfilingLockInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AcquireProfilingLockInfoKHR & operator=( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AcquireProfilingLockInfoKHR & operator=( VkAcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setTimeout( uint64_t timeout_ ) VULKAN_HPP_NOEXCEPT + { + timeout = timeout_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAcquireProfilingLockInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAcquireProfilingLockInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, timeout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AcquireProfilingLockInfoKHR const & ) const = default; +#else + bool operator==( AcquireProfilingLockInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( timeout == rhs.timeout ); +# endif + } + + bool operator!=( AcquireProfilingLockInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAcquireProfilingLockInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags = {}; + uint64_t timeout = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR ) == + sizeof( VkAcquireProfilingLockInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AcquireProfilingLockInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AcquireProfilingLockInfoKHR; + }; + + struct AllocationCallbacks + { + using NativeType = VkAllocationCallbacks; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AllocationCallbacks( void * pUserData_ = {}, + PFN_vkAllocationFunction pfnAllocation_ = {}, + PFN_vkReallocationFunction pfnReallocation_ = {}, + PFN_vkFreeFunction pfnFree_ = {}, + PFN_vkInternalAllocationNotification pfnInternalAllocation_ = {}, + PFN_vkInternalFreeNotification pfnInternalFree_ = {} ) VULKAN_HPP_NOEXCEPT + : pUserData( pUserData_ ) + , pfnAllocation( pfnAllocation_ ) + , pfnReallocation( pfnReallocation_ ) + , pfnFree( pfnFree_ ) + , pfnInternalAllocation( pfnInternalAllocation_ ) + , pfnInternalFree( pfnInternalFree_ ) + {} + + VULKAN_HPP_CONSTEXPR AllocationCallbacks( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AllocationCallbacks( VkAllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT + : AllocationCallbacks( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AllocationCallbacks & operator=( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AllocationCallbacks & operator=( VkAllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT + { + pUserData = pUserData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & + setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ ) VULKAN_HPP_NOEXCEPT + { + pfnAllocation = pfnAllocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & + setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ ) VULKAN_HPP_NOEXCEPT + { + pfnReallocation = pfnReallocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnFree( PFN_vkFreeFunction pfnFree_ ) VULKAN_HPP_NOEXCEPT + { + pfnFree = pfnFree_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & + setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ ) VULKAN_HPP_NOEXCEPT + { + pfnInternalAllocation = pfnInternalAllocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & + setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ ) VULKAN_HPP_NOEXCEPT + { + pfnInternalFree = pfnInternalFree_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAllocationCallbacks const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAllocationCallbacks &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( pUserData, pfnAllocation, pfnReallocation, pfnFree, pfnInternalAllocation, pfnInternalFree ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AllocationCallbacks const & ) const = default; +#else + bool operator==( AllocationCallbacks const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( pUserData == rhs.pUserData ) && ( pfnAllocation == rhs.pfnAllocation ) && + ( pfnReallocation == rhs.pfnReallocation ) && ( pfnFree == rhs.pfnFree ) && + ( pfnInternalAllocation == rhs.pfnInternalAllocation ) && ( pfnInternalFree == rhs.pfnInternalFree ); +# endif + } + + bool operator!=( AllocationCallbacks const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + void * pUserData = {}; + PFN_vkAllocationFunction pfnAllocation = {}; + PFN_vkReallocationFunction pfnReallocation = {}; + PFN_vkFreeFunction pfnFree = {}; + PFN_vkInternalAllocationNotification pfnInternalAllocation = {}; + PFN_vkInternalFreeNotification pfnInternalFree = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AllocationCallbacks is not nothrow_move_constructible!" ); + + struct ComponentMapping + { + using NativeType = VkComponentMapping; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ComponentMapping( VULKAN_HPP_NAMESPACE::ComponentSwizzle r_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity, + VULKAN_HPP_NAMESPACE::ComponentSwizzle g_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity, + VULKAN_HPP_NAMESPACE::ComponentSwizzle b_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity, + VULKAN_HPP_NAMESPACE::ComponentSwizzle a_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity ) + VULKAN_HPP_NOEXCEPT + : r( r_ ) + , g( g_ ) + , b( b_ ) + , a( a_ ) + {} + + VULKAN_HPP_CONSTEXPR ComponentMapping( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ComponentMapping( VkComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT + : ComponentMapping( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ComponentMapping & operator=( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ComponentMapping & operator=( VkComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setR( VULKAN_HPP_NAMESPACE::ComponentSwizzle r_ ) VULKAN_HPP_NOEXCEPT + { + r = r_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setG( VULKAN_HPP_NAMESPACE::ComponentSwizzle g_ ) VULKAN_HPP_NOEXCEPT + { + g = g_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setB( VULKAN_HPP_NAMESPACE::ComponentSwizzle b_ ) VULKAN_HPP_NOEXCEPT + { + b = b_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setA( VULKAN_HPP_NAMESPACE::ComponentSwizzle a_ ) VULKAN_HPP_NOEXCEPT + { + a = a_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkComponentMapping const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkComponentMapping &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( r, g, b, a ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ComponentMapping const & ) const = default; +#else + bool operator==( ComponentMapping const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( r == rhs.r ) && ( g == rhs.g ) && ( b == rhs.b ) && ( a == rhs.a ); +# endif + } + + bool operator!=( ComponentMapping const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ComponentSwizzle r = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity; + VULKAN_HPP_NAMESPACE::ComponentSwizzle g = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity; + VULKAN_HPP_NAMESPACE::ComponentSwizzle b = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity; + VULKAN_HPP_NAMESPACE::ComponentSwizzle a = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ComponentMapping ) == sizeof( VkComponentMapping ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ComponentMapping is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + struct AndroidHardwareBufferFormatProperties2ANDROID + { + using NativeType = VkAndroidHardwareBufferFormatProperties2ANDROID; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAndroidHardwareBufferFormatProperties2ANDROID; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatProperties2ANDROID( + VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + uint64_t externalFormat_ = {}, + VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 formatFeatures_ = {}, + VULKAN_HPP_NAMESPACE::ComponentMapping samplerYcbcrConversionComponents_ = {}, + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_ = + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity, + VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange_ = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull, + VULKAN_HPP_NAMESPACE::ChromaLocation suggestedXChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven, + VULKAN_HPP_NAMESPACE::ChromaLocation suggestedYChromaOffset_ = + VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven ) VULKAN_HPP_NOEXCEPT + : format( format_ ) + , externalFormat( externalFormat_ ) + , formatFeatures( formatFeatures_ ) + , samplerYcbcrConversionComponents( samplerYcbcrConversionComponents_ ) + , suggestedYcbcrModel( suggestedYcbcrModel_ ) + , suggestedYcbcrRange( suggestedYcbcrRange_ ) + , suggestedXChromaOffset( suggestedXChromaOffset_ ) + , suggestedYChromaOffset( suggestedYChromaOffset_ ) + {} + + VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatProperties2ANDROID( + AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AndroidHardwareBufferFormatProperties2ANDROID( VkAndroidHardwareBufferFormatProperties2ANDROID const & rhs ) + VULKAN_HPP_NOEXCEPT + : AndroidHardwareBufferFormatProperties2ANDROID( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AndroidHardwareBufferFormatProperties2ANDROID & + operator=( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AndroidHardwareBufferFormatProperties2ANDROID & + operator=( VkAndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkAndroidHardwareBufferFormatProperties2ANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAndroidHardwareBufferFormatProperties2ANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + format, + externalFormat, + formatFeatures, + samplerYcbcrConversionComponents, + suggestedYcbcrModel, + suggestedYcbcrRange, + suggestedXChromaOffset, + suggestedYChromaOffset ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AndroidHardwareBufferFormatProperties2ANDROID const & ) const = default; +# else + bool operator==( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && + ( externalFormat == rhs.externalFormat ) && ( formatFeatures == rhs.formatFeatures ) && + ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) && + ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) && + ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) && + ( suggestedYChromaOffset == rhs.suggestedYChromaOffset ); +# endif + } + + bool operator!=( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidHardwareBufferFormatProperties2ANDROID; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; + uint64_t externalFormat = {}; + VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 formatFeatures = {}; + VULKAN_HPP_NAMESPACE::ComponentMapping samplerYcbcrConversionComponents = {}; + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel = + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity; + VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull; + VULKAN_HPP_NAMESPACE::ChromaLocation suggestedXChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven; + VULKAN_HPP_NAMESPACE::ChromaLocation suggestedYChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID ) == + sizeof( VkAndroidHardwareBufferFormatProperties2ANDROID ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AndroidHardwareBufferFormatProperties2ANDROID is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AndroidHardwareBufferFormatProperties2ANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + struct AndroidHardwareBufferFormatPropertiesANDROID + { + using NativeType = VkAndroidHardwareBufferFormatPropertiesANDROID; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAndroidHardwareBufferFormatPropertiesANDROID; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatPropertiesANDROID( + VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + uint64_t externalFormat_ = {}, + VULKAN_HPP_NAMESPACE::FormatFeatureFlags formatFeatures_ = {}, + VULKAN_HPP_NAMESPACE::ComponentMapping samplerYcbcrConversionComponents_ = {}, + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_ = + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity, + VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange_ = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull, + VULKAN_HPP_NAMESPACE::ChromaLocation suggestedXChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven, + VULKAN_HPP_NAMESPACE::ChromaLocation suggestedYChromaOffset_ = + VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven ) VULKAN_HPP_NOEXCEPT + : format( format_ ) + , externalFormat( externalFormat_ ) + , formatFeatures( formatFeatures_ ) + , samplerYcbcrConversionComponents( samplerYcbcrConversionComponents_ ) + , suggestedYcbcrModel( suggestedYcbcrModel_ ) + , suggestedYcbcrRange( suggestedYcbcrRange_ ) + , suggestedXChromaOffset( suggestedXChromaOffset_ ) + , suggestedYChromaOffset( suggestedYChromaOffset_ ) + {} + + VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatPropertiesANDROID( + AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AndroidHardwareBufferFormatPropertiesANDROID( VkAndroidHardwareBufferFormatPropertiesANDROID const & rhs ) + VULKAN_HPP_NOEXCEPT + : AndroidHardwareBufferFormatPropertiesANDROID( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AndroidHardwareBufferFormatPropertiesANDROID & + operator=( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AndroidHardwareBufferFormatPropertiesANDROID & + operator=( VkAndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkAndroidHardwareBufferFormatPropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAndroidHardwareBufferFormatPropertiesANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + format, + externalFormat, + formatFeatures, + samplerYcbcrConversionComponents, + suggestedYcbcrModel, + suggestedYcbcrRange, + suggestedXChromaOffset, + suggestedYChromaOffset ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AndroidHardwareBufferFormatPropertiesANDROID const & ) const = default; +# else + bool operator==( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && + ( externalFormat == rhs.externalFormat ) && ( formatFeatures == rhs.formatFeatures ) && + ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) && + ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) && + ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) && + ( suggestedYChromaOffset == rhs.suggestedYChromaOffset ); +# endif + } + + bool operator!=( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidHardwareBufferFormatPropertiesANDROID; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; + uint64_t externalFormat = {}; + VULKAN_HPP_NAMESPACE::FormatFeatureFlags formatFeatures = {}; + VULKAN_HPP_NAMESPACE::ComponentMapping samplerYcbcrConversionComponents = {}; + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel = + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity; + VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull; + VULKAN_HPP_NAMESPACE::ChromaLocation suggestedXChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven; + VULKAN_HPP_NAMESPACE::ChromaLocation suggestedYChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID ) == + sizeof( VkAndroidHardwareBufferFormatPropertiesANDROID ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AndroidHardwareBufferFormatPropertiesANDROID is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AndroidHardwareBufferFormatPropertiesANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + struct AndroidHardwareBufferPropertiesANDROID + { + using NativeType = VkAndroidHardwareBufferPropertiesANDROID; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAndroidHardwareBufferPropertiesANDROID; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AndroidHardwareBufferPropertiesANDROID( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ = {}, + uint32_t memoryTypeBits_ = {} ) VULKAN_HPP_NOEXCEPT + : allocationSize( allocationSize_ ) + , memoryTypeBits( memoryTypeBits_ ) + {} + + VULKAN_HPP_CONSTEXPR AndroidHardwareBufferPropertiesANDROID( AndroidHardwareBufferPropertiesANDROID const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + AndroidHardwareBufferPropertiesANDROID( VkAndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + : AndroidHardwareBufferPropertiesANDROID( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AndroidHardwareBufferPropertiesANDROID & + operator=( AndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AndroidHardwareBufferPropertiesANDROID & + operator=( VkAndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkAndroidHardwareBufferPropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAndroidHardwareBufferPropertiesANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, allocationSize, memoryTypeBits ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AndroidHardwareBufferPropertiesANDROID const & ) const = default; +# else + bool operator==( AndroidHardwareBufferPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allocationSize == rhs.allocationSize ) && + ( memoryTypeBits == rhs.memoryTypeBits ); +# endif + } + + bool operator!=( AndroidHardwareBufferPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidHardwareBufferPropertiesANDROID; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceSize allocationSize = {}; + uint32_t memoryTypeBits = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID ) == + sizeof( VkAndroidHardwareBufferPropertiesANDROID ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AndroidHardwareBufferPropertiesANDROID is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AndroidHardwareBufferPropertiesANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + struct AndroidHardwareBufferUsageANDROID + { + using NativeType = VkAndroidHardwareBufferUsageANDROID; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAndroidHardwareBufferUsageANDROID; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + AndroidHardwareBufferUsageANDROID( uint64_t androidHardwareBufferUsage_ = {} ) VULKAN_HPP_NOEXCEPT + : androidHardwareBufferUsage( androidHardwareBufferUsage_ ) + {} + + VULKAN_HPP_CONSTEXPR + AndroidHardwareBufferUsageANDROID( AndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AndroidHardwareBufferUsageANDROID( VkAndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + : AndroidHardwareBufferUsageANDROID( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AndroidHardwareBufferUsageANDROID & + operator=( AndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AndroidHardwareBufferUsageANDROID & operator=( VkAndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkAndroidHardwareBufferUsageANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAndroidHardwareBufferUsageANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, androidHardwareBufferUsage ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AndroidHardwareBufferUsageANDROID const & ) const = default; +# else + bool operator==( AndroidHardwareBufferUsageANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( androidHardwareBufferUsage == rhs.androidHardwareBufferUsage ); +# endif + } + + bool operator!=( AndroidHardwareBufferUsageANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidHardwareBufferUsageANDROID; + void * pNext = {}; + uint64_t androidHardwareBufferUsage = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID ) == + sizeof( VkAndroidHardwareBufferUsageANDROID ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AndroidHardwareBufferUsageANDROID is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AndroidHardwareBufferUsageANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + struct AndroidSurfaceCreateInfoKHR + { + using NativeType = VkAndroidSurfaceCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAndroidSurfaceCreateInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AndroidSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags_ = {}, + struct ANativeWindow * window_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , window( window_ ) + {} + + VULKAN_HPP_CONSTEXPR + AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AndroidSurfaceCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AndroidSurfaceCreateInfoKHR & operator=( AndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AndroidSurfaceCreateInfoKHR & operator=( VkAndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR & + setWindow( struct ANativeWindow * window_ ) VULKAN_HPP_NOEXCEPT + { + window = window_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAndroidSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAndroidSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, window ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AndroidSurfaceCreateInfoKHR const & ) const = default; +# else + bool operator==( AndroidSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( window == rhs.window ); +# endif + } + + bool operator!=( AndroidSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidSurfaceCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags = {}; + struct ANativeWindow * window = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR ) == + sizeof( VkAndroidSurfaceCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AndroidSurfaceCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AndroidSurfaceCreateInfoKHR; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + struct ApplicationInfo + { + using NativeType = VkApplicationInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eApplicationInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ApplicationInfo( const char * pApplicationName_ = {}, + uint32_t applicationVersion_ = {}, + const char * pEngineName_ = {}, + uint32_t engineVersion_ = {}, + uint32_t apiVersion_ = {} ) VULKAN_HPP_NOEXCEPT + : pApplicationName( pApplicationName_ ) + , applicationVersion( applicationVersion_ ) + , pEngineName( pEngineName_ ) + , engineVersion( engineVersion_ ) + , apiVersion( apiVersion_ ) + {} + + VULKAN_HPP_CONSTEXPR ApplicationInfo( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ApplicationInfo( VkApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ApplicationInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ApplicationInfo & operator=( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ApplicationInfo & operator=( VkApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPApplicationName( const char * pApplicationName_ ) VULKAN_HPP_NOEXCEPT + { + pApplicationName = pApplicationName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setApplicationVersion( uint32_t applicationVersion_ ) VULKAN_HPP_NOEXCEPT + { + applicationVersion = applicationVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPEngineName( const char * pEngineName_ ) VULKAN_HPP_NOEXCEPT + { + pEngineName = pEngineName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setEngineVersion( uint32_t engineVersion_ ) VULKAN_HPP_NOEXCEPT + { + engineVersion = engineVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setApiVersion( uint32_t apiVersion_ ) VULKAN_HPP_NOEXCEPT + { + apiVersion = apiVersion_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkApplicationInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkApplicationInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pApplicationName, applicationVersion, pEngineName, engineVersion, apiVersion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( pApplicationName != rhs.pApplicationName ) + if ( auto cmp = strcmp( pApplicationName, rhs.pApplicationName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = applicationVersion <=> rhs.applicationVersion; cmp != 0 ) + return cmp; + if ( pEngineName != rhs.pEngineName ) + if ( auto cmp = strcmp( pEngineName, rhs.pEngineName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = engineVersion <=> rhs.engineVersion; cmp != 0 ) + return cmp; + if ( auto cmp = apiVersion <=> rhs.apiVersion; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( ( pApplicationName == rhs.pApplicationName ) || + ( strcmp( pApplicationName, rhs.pApplicationName ) == 0 ) ) && + ( applicationVersion == rhs.applicationVersion ) && + ( ( pEngineName == rhs.pEngineName ) || ( strcmp( pEngineName, rhs.pEngineName ) == 0 ) ) && + ( engineVersion == rhs.engineVersion ) && ( apiVersion == rhs.apiVersion ); + } + + bool operator!=( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eApplicationInfo; + const void * pNext = {}; + const char * pApplicationName = {}; + uint32_t applicationVersion = {}; + const char * pEngineName = {}; + uint32_t engineVersion = {}; + uint32_t apiVersion = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ApplicationInfo ) == sizeof( VkApplicationInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ApplicationInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ApplicationInfo; + }; + + struct AttachmentDescription + { + using NativeType = VkAttachmentDescription; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AttachmentDescription( + VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, + VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad, + VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore, + VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad, + VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore, + VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) + VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , format( format_ ) + , samples( samples_ ) + , loadOp( loadOp_ ) + , storeOp( storeOp_ ) + , stencilLoadOp( stencilLoadOp_ ) + , stencilStoreOp( stencilStoreOp_ ) + , initialLayout( initialLayout_ ) + , finalLayout( finalLayout_ ) + {} + + VULKAN_HPP_CONSTEXPR AttachmentDescription( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentDescription( VkAttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentDescription( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AttachmentDescription & operator=( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentDescription & operator=( VkAttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & + setFlags( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & + setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & + setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT + { + samples = samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & + setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT + { + loadOp = loadOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & + setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT + { + storeOp = storeOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & + setStencilLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ ) VULKAN_HPP_NOEXCEPT + { + stencilLoadOp = stencilLoadOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & + setStencilStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ ) VULKAN_HPP_NOEXCEPT + { + stencilStoreOp = stencilStoreOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & + setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT + { + initialLayout = initialLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & + setFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ ) VULKAN_HPP_NOEXCEPT + { + finalLayout = finalLayout_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAttachmentDescription const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAttachmentDescription &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + flags, format, samples, loadOp, storeOp, stencilLoadOp, stencilStoreOp, initialLayout, finalLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentDescription const & ) const = default; +#else + bool operator==( AttachmentDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( flags == rhs.flags ) && ( format == rhs.format ) && ( samples == rhs.samples ) && + ( loadOp == rhs.loadOp ) && ( storeOp == rhs.storeOp ) && ( stencilLoadOp == rhs.stencilLoadOp ) && + ( stencilStoreOp == rhs.stencilStoreOp ) && ( initialLayout == rhs.initialLayout ) && + ( finalLayout == rhs.finalLayout ); +# endif + } + + bool operator!=( AttachmentDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags = {}; + VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; + VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad; + VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore; + VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad; + VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore; + VULKAN_HPP_NAMESPACE::ImageLayout initialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + VULKAN_HPP_NAMESPACE::ImageLayout finalLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentDescription ) == sizeof( VkAttachmentDescription ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AttachmentDescription is not nothrow_move_constructible!" ); + + struct AttachmentDescription2 + { + using NativeType = VkAttachmentDescription2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentDescription2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AttachmentDescription2( + VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, + VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad, + VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore, + VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad, + VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore, + VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) + VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , format( format_ ) + , samples( samples_ ) + , loadOp( loadOp_ ) + , storeOp( storeOp_ ) + , stencilLoadOp( stencilLoadOp_ ) + , stencilStoreOp( stencilStoreOp_ ) + , initialLayout( initialLayout_ ) + , finalLayout( finalLayout_ ) + {} + + VULKAN_HPP_CONSTEXPR AttachmentDescription2( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentDescription2( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentDescription2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AttachmentDescription2 & operator=( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentDescription2 & operator=( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & + setFlags( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & + setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & + setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT + { + samples = samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & + setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT + { + loadOp = loadOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & + setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT + { + storeOp = storeOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & + setStencilLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ ) VULKAN_HPP_NOEXCEPT + { + stencilLoadOp = stencilLoadOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & + setStencilStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ ) VULKAN_HPP_NOEXCEPT + { + stencilStoreOp = stencilStoreOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & + setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT + { + initialLayout = initialLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & + setFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ ) VULKAN_HPP_NOEXCEPT + { + finalLayout = finalLayout_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAttachmentDescription2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAttachmentDescription2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + format, + samples, + loadOp, + storeOp, + stencilLoadOp, + stencilStoreOp, + initialLayout, + finalLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentDescription2 const & ) const = default; +#else + bool operator==( AttachmentDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( format == rhs.format ) && + ( samples == rhs.samples ) && ( loadOp == rhs.loadOp ) && ( storeOp == rhs.storeOp ) && + ( stencilLoadOp == rhs.stencilLoadOp ) && ( stencilStoreOp == rhs.stencilStoreOp ) && + ( initialLayout == rhs.initialLayout ) && ( finalLayout == rhs.finalLayout ); +# endif + } + + bool operator!=( AttachmentDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentDescription2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags = {}; + VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; + VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad; + VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore; + VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad; + VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore; + VULKAN_HPP_NAMESPACE::ImageLayout initialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + VULKAN_HPP_NAMESPACE::ImageLayout finalLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentDescription2 ) == + sizeof( VkAttachmentDescription2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AttachmentDescription2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AttachmentDescription2; + }; + using AttachmentDescription2KHR = AttachmentDescription2; + + struct AttachmentDescriptionStencilLayout + { + using NativeType = VkAttachmentDescriptionStencilLayout; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eAttachmentDescriptionStencilLayout; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AttachmentDescriptionStencilLayout( + VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) + VULKAN_HPP_NOEXCEPT + : stencilInitialLayout( stencilInitialLayout_ ) + , stencilFinalLayout( stencilFinalLayout_ ) + {} + + VULKAN_HPP_CONSTEXPR AttachmentDescriptionStencilLayout( AttachmentDescriptionStencilLayout const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + AttachmentDescriptionStencilLayout( VkAttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentDescriptionStencilLayout( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AttachmentDescriptionStencilLayout & + operator=( AttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentDescriptionStencilLayout & + operator=( VkAttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout & + setStencilInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout_ ) VULKAN_HPP_NOEXCEPT + { + stencilInitialLayout = stencilInitialLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout & + setStencilFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout_ ) VULKAN_HPP_NOEXCEPT + { + stencilFinalLayout = stencilFinalLayout_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAttachmentDescriptionStencilLayout const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAttachmentDescriptionStencilLayout &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stencilInitialLayout, stencilFinalLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentDescriptionStencilLayout const & ) const = default; +#else + bool operator==( AttachmentDescriptionStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stencilInitialLayout == rhs.stencilInitialLayout ) && + ( stencilFinalLayout == rhs.stencilFinalLayout ); +# endif + } + + bool operator!=( AttachmentDescriptionStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentDescriptionStencilLayout; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout ) == + sizeof( VkAttachmentDescriptionStencilLayout ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AttachmentDescriptionStencilLayout is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AttachmentDescriptionStencilLayout; + }; + using AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout; + + struct AttachmentReference + { + using NativeType = VkAttachmentReference; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AttachmentReference( + uint32_t attachment_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout layout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) VULKAN_HPP_NOEXCEPT + : attachment( attachment_ ) + , layout( layout_ ) + {} + + VULKAN_HPP_CONSTEXPR AttachmentReference( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentReference( VkAttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentReference( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AttachmentReference & operator=( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentReference & operator=( VkAttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentReference & setAttachment( uint32_t attachment_ ) VULKAN_HPP_NOEXCEPT + { + attachment = attachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReference & + setLayout( VULKAN_HPP_NAMESPACE::ImageLayout layout_ ) VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAttachmentReference const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAttachmentReference &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( attachment, layout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentReference const & ) const = default; +#else + bool operator==( AttachmentReference const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( attachment == rhs.attachment ) && ( layout == rhs.layout ); +# endif + } + + bool operator!=( AttachmentReference const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t attachment = {}; + VULKAN_HPP_NAMESPACE::ImageLayout layout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentReference ) == sizeof( VkAttachmentReference ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AttachmentReference is not nothrow_move_constructible!" ); + + struct AttachmentReference2 + { + using NativeType = VkAttachmentReference2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentReference2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + AttachmentReference2( uint32_t attachment_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout layout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {} ) VULKAN_HPP_NOEXCEPT + : attachment( attachment_ ) + , layout( layout_ ) + , aspectMask( aspectMask_ ) + {} + + VULKAN_HPP_CONSTEXPR AttachmentReference2( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentReference2( VkAttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentReference2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AttachmentReference2 & operator=( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentReference2 & operator=( VkAttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setAttachment( uint32_t attachment_ ) VULKAN_HPP_NOEXCEPT + { + attachment = attachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & + setLayout( VULKAN_HPP_NAMESPACE::ImageLayout layout_ ) VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & + setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAttachmentReference2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAttachmentReference2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, attachment, layout, aspectMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentReference2 const & ) const = default; +#else + bool operator==( AttachmentReference2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachment == rhs.attachment ) && + ( layout == rhs.layout ) && ( aspectMask == rhs.aspectMask ); +# endif + } + + bool operator!=( AttachmentReference2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentReference2; + const void * pNext = {}; + uint32_t attachment = {}; + VULKAN_HPP_NAMESPACE::ImageLayout layout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentReference2 ) == sizeof( VkAttachmentReference2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AttachmentReference2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AttachmentReference2; + }; + using AttachmentReference2KHR = AttachmentReference2; + + struct AttachmentReferenceStencilLayout + { + using NativeType = VkAttachmentReferenceStencilLayout; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentReferenceStencilLayout; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + AttachmentReferenceStencilLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout_ = + VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) VULKAN_HPP_NOEXCEPT + : stencilLayout( stencilLayout_ ) + {} + + VULKAN_HPP_CONSTEXPR + AttachmentReferenceStencilLayout( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentReferenceStencilLayout( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentReferenceStencilLayout( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AttachmentReferenceStencilLayout & + operator=( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentReferenceStencilLayout & operator=( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout & + setStencilLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout_ ) VULKAN_HPP_NOEXCEPT + { + stencilLayout = stencilLayout_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAttachmentReferenceStencilLayout const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAttachmentReferenceStencilLayout &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stencilLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentReferenceStencilLayout const & ) const = default; +#else + bool operator==( AttachmentReferenceStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stencilLayout == rhs.stencilLayout ); +# endif + } + + bool operator!=( AttachmentReferenceStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentReferenceStencilLayout; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout ) == + sizeof( VkAttachmentReferenceStencilLayout ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AttachmentReferenceStencilLayout is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AttachmentReferenceStencilLayout; + }; + using AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout; + + struct AttachmentSampleCountInfoAMD + { + using NativeType = VkAttachmentSampleCountInfoAMD; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentSampleCountInfoAMD; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + AttachmentSampleCountInfoAMD( uint32_t colorAttachmentCount_ = {}, + const VULKAN_HPP_NAMESPACE::SampleCountFlagBits * pColorAttachmentSamples_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits depthStencilAttachmentSamples_ = + VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1 ) VULKAN_HPP_NOEXCEPT + : colorAttachmentCount( colorAttachmentCount_ ) + , pColorAttachmentSamples( pColorAttachmentSamples_ ) + , depthStencilAttachmentSamples( depthStencilAttachmentSamples_ ) + {} + + VULKAN_HPP_CONSTEXPR + AttachmentSampleCountInfoAMD( AttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentSampleCountInfoAMD( VkAttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentSampleCountInfoAMD( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AttachmentSampleCountInfoAMD( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::SampleCountFlagBits> const & colorAttachmentSamples_, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits depthStencilAttachmentSamples_ = + VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1 ) + : colorAttachmentCount( static_cast( colorAttachmentSamples_.size() ) ) + , pColorAttachmentSamples( colorAttachmentSamples_.data() ) + , depthStencilAttachmentSamples( depthStencilAttachmentSamples_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AttachmentSampleCountInfoAMD & operator=( AttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentSampleCountInfoAMD & operator=( VkAttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD & + setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD & setPColorAttachmentSamples( + const VULKAN_HPP_NAMESPACE::SampleCountFlagBits * pColorAttachmentSamples_ ) VULKAN_HPP_NOEXCEPT + { + pColorAttachmentSamples = pColorAttachmentSamples_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AttachmentSampleCountInfoAMD & setColorAttachmentSamples( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + colorAttachmentSamples_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachmentSamples_.size() ); + pColorAttachmentSamples = colorAttachmentSamples_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD & setDepthStencilAttachmentSamples( + VULKAN_HPP_NAMESPACE::SampleCountFlagBits depthStencilAttachmentSamples_ ) VULKAN_HPP_NOEXCEPT + { + depthStencilAttachmentSamples = depthStencilAttachmentSamples_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAttachmentSampleCountInfoAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAttachmentSampleCountInfoAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, colorAttachmentCount, pColorAttachmentSamples, depthStencilAttachmentSamples ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentSampleCountInfoAMD const & ) const = default; +#else + bool operator==( AttachmentSampleCountInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) && + ( pColorAttachmentSamples == rhs.pColorAttachmentSamples ) && + ( depthStencilAttachmentSamples == rhs.depthStencilAttachmentSamples ); +# endif + } + + bool operator!=( AttachmentSampleCountInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentSampleCountInfoAMD; + const void * pNext = {}; + uint32_t colorAttachmentCount = {}; + const VULKAN_HPP_NAMESPACE::SampleCountFlagBits * pColorAttachmentSamples = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlagBits depthStencilAttachmentSamples = + VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD ) == + sizeof( VkAttachmentSampleCountInfoAMD ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AttachmentSampleCountInfoAMD is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = AttachmentSampleCountInfoAMD; + }; + using AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD; + + struct Extent2D + { + using NativeType = VkExtent2D; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR Extent2D( uint32_t width_ = {}, uint32_t height_ = {} ) VULKAN_HPP_NOEXCEPT + : width( width_ ) + , height( height_ ) + {} + + VULKAN_HPP_CONSTEXPR Extent2D( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Extent2D( VkExtent2D const & rhs ) VULKAN_HPP_NOEXCEPT : Extent2D( *reinterpret_cast( &rhs ) ) {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + Extent2D & operator=( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Extent2D & operator=( VkExtent2D const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Extent2D & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT + { + width = width_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Extent2D & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT + { + height = height_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkExtent2D const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExtent2D &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( width, height ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Extent2D const & ) const = default; +#else + bool operator==( Extent2D const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( width == rhs.width ) && ( height == rhs.height ); +# endif + } + + bool operator!=( Extent2D const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t width = {}; + uint32_t height = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Extent2D ) == sizeof( VkExtent2D ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Extent2D is not nothrow_move_constructible!" ); + + struct SampleLocationEXT + { + using NativeType = VkSampleLocationEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SampleLocationEXT( float x_ = {}, float y_ = {} ) VULKAN_HPP_NOEXCEPT + : x( x_ ) + , y( y_ ) + {} + + VULKAN_HPP_CONSTEXPR SampleLocationEXT( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SampleLocationEXT( VkSampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SampleLocationEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SampleLocationEXT & operator=( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SampleLocationEXT & operator=( VkSampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT & setX( float x_ ) VULKAN_HPP_NOEXCEPT + { + x = x_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT & setY( float y_ ) VULKAN_HPP_NOEXCEPT + { + y = y_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSampleLocationEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSampleLocationEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( x, y ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SampleLocationEXT const & ) const = default; +#else + bool operator==( SampleLocationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( x == rhs.x ) && ( y == rhs.y ); +# endif + } + + bool operator!=( SampleLocationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float x = {}; + float y = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SampleLocationEXT ) == sizeof( VkSampleLocationEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SampleLocationEXT is not nothrow_move_constructible!" ); + + struct SampleLocationsInfoEXT + { + using NativeType = VkSampleLocationsInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSampleLocationsInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SampleLocationsInfoEXT( + VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel_ = + VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, + VULKAN_HPP_NAMESPACE::Extent2D sampleLocationGridSize_ = {}, + uint32_t sampleLocationsCount_ = {}, + const VULKAN_HPP_NAMESPACE::SampleLocationEXT * pSampleLocations_ = {} ) VULKAN_HPP_NOEXCEPT + : sampleLocationsPerPixel( sampleLocationsPerPixel_ ) + , sampleLocationGridSize( sampleLocationGridSize_ ) + , sampleLocationsCount( sampleLocationsCount_ ) + , pSampleLocations( pSampleLocations_ ) + {} + + VULKAN_HPP_CONSTEXPR SampleLocationsInfoEXT( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SampleLocationsInfoEXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SampleLocationsInfoEXT( + VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel_, + VULKAN_HPP_NAMESPACE::Extent2D sampleLocationGridSize_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + sampleLocations_ ) + : sampleLocationsPerPixel( sampleLocationsPerPixel_ ) + , sampleLocationGridSize( sampleLocationGridSize_ ) + , sampleLocationsCount( static_cast( sampleLocations_.size() ) ) + , pSampleLocations( sampleLocations_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SampleLocationsInfoEXT & operator=( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SampleLocationsInfoEXT & operator=( VkSampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setSampleLocationsPerPixel( + VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel_ ) VULKAN_HPP_NOEXCEPT + { + sampleLocationsPerPixel = sampleLocationsPerPixel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & + setSampleLocationGridSize( VULKAN_HPP_NAMESPACE::Extent2D const & sampleLocationGridSize_ ) VULKAN_HPP_NOEXCEPT + { + sampleLocationGridSize = sampleLocationGridSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & + setSampleLocationsCount( uint32_t sampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT + { + sampleLocationsCount = sampleLocationsCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & + setPSampleLocations( const VULKAN_HPP_NAMESPACE::SampleLocationEXT * pSampleLocations_ ) VULKAN_HPP_NOEXCEPT + { + pSampleLocations = pSampleLocations_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SampleLocationsInfoEXT & setSampleLocations( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + sampleLocations_ ) VULKAN_HPP_NOEXCEPT + { + sampleLocationsCount = static_cast( sampleLocations_.size() ); + pSampleLocations = sampleLocations_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSampleLocationsInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSampleLocationsInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, sampleLocationsPerPixel, sampleLocationGridSize, sampleLocationsCount, pSampleLocations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SampleLocationsInfoEXT const & ) const = default; +#else + bool operator==( SampleLocationsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( sampleLocationsPerPixel == rhs.sampleLocationsPerPixel ) && + ( sampleLocationGridSize == rhs.sampleLocationGridSize ) && + ( sampleLocationsCount == rhs.sampleLocationsCount ) && ( pSampleLocations == rhs.pSampleLocations ); +# endif + } + + bool operator!=( SampleLocationsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSampleLocationsInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; + VULKAN_HPP_NAMESPACE::Extent2D sampleLocationGridSize = {}; + uint32_t sampleLocationsCount = {}; + const VULKAN_HPP_NAMESPACE::SampleLocationEXT * pSampleLocations = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT ) == + sizeof( VkSampleLocationsInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SampleLocationsInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SampleLocationsInfoEXT; + }; + + struct AttachmentSampleLocationsEXT + { + using NativeType = VkAttachmentSampleLocationsEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AttachmentSampleLocationsEXT( + uint32_t attachmentIndex_ = {}, + VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_ = {} ) VULKAN_HPP_NOEXCEPT + : attachmentIndex( attachmentIndex_ ) + , sampleLocationsInfo( sampleLocationsInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR + AttachmentSampleLocationsEXT( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentSampleLocationsEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + AttachmentSampleLocationsEXT & operator=( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentSampleLocationsEXT & operator=( VkAttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT & + setAttachmentIndex( uint32_t attachmentIndex_ ) VULKAN_HPP_NOEXCEPT + { + attachmentIndex = attachmentIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT & setSampleLocationsInfo( + VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT + { + sampleLocationsInfo = sampleLocationsInfo_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkAttachmentSampleLocationsEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkAttachmentSampleLocationsEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( attachmentIndex, sampleLocationsInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentSampleLocationsEXT const & ) const = default; +#else + bool operator==( AttachmentSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( attachmentIndex == rhs.attachmentIndex ) && ( sampleLocationsInfo == rhs.sampleLocationsInfo ); +# endif + } + + bool operator!=( AttachmentSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t attachmentIndex = {}; + VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT ) == + sizeof( VkAttachmentSampleLocationsEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "AttachmentSampleLocationsEXT is not nothrow_move_constructible!" ); + + struct BaseInStructure + { + using NativeType = VkBaseInStructure; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + BaseInStructure( VULKAN_HPP_NAMESPACE::StructureType sType_ = + VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo ) VULKAN_HPP_NOEXCEPT : sType( sType_ ) + {} + + BaseInStructure( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BaseInStructure( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT + : BaseInStructure( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BaseInStructure & operator=( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BaseInStructure & operator=( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BaseInStructure & + setPNext( const struct VULKAN_HPP_NAMESPACE::BaseInStructure * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBaseInStructure const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBaseInStructure &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BaseInStructure const & ) const = default; +#else + bool operator==( BaseInStructure const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ); +# endif + } + + bool operator!=( BaseInStructure const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo; + const struct VULKAN_HPP_NAMESPACE::BaseInStructure * pNext = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BaseInStructure ) == sizeof( VkBaseInStructure ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BaseInStructure is not nothrow_move_constructible!" ); + + struct BaseOutStructure + { + using NativeType = VkBaseOutStructure; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + BaseOutStructure( VULKAN_HPP_NAMESPACE::StructureType sType_ = + VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo ) VULKAN_HPP_NOEXCEPT : sType( sType_ ) + {} + + BaseOutStructure( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BaseOutStructure( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT + : BaseOutStructure( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BaseOutStructure & operator=( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BaseOutStructure & operator=( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BaseOutStructure & + setPNext( struct VULKAN_HPP_NAMESPACE::BaseOutStructure * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBaseOutStructure const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBaseOutStructure &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BaseOutStructure const & ) const = default; +#else + bool operator==( BaseOutStructure const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ); +# endif + } + + bool operator!=( BaseOutStructure const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo; + struct VULKAN_HPP_NAMESPACE::BaseOutStructure * pNext = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BaseOutStructure ) == sizeof( VkBaseOutStructure ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BaseOutStructure is not nothrow_move_constructible!" ); + + struct BindAccelerationStructureMemoryInfoNV + { + using NativeType = VkBindAccelerationStructureMemoryInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eBindAccelerationStructureMemoryInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BindAccelerationStructureMemoryInfoNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ = {}, + VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ = {}, + uint32_t deviceIndexCount_ = {}, + const uint32_t * pDeviceIndices_ = {} ) VULKAN_HPP_NOEXCEPT + : accelerationStructure( accelerationStructure_ ) + , memory( memory_ ) + , memoryOffset( memoryOffset_ ) + , deviceIndexCount( deviceIndexCount_ ) + , pDeviceIndices( pDeviceIndices_ ) + {} + + VULKAN_HPP_CONSTEXPR BindAccelerationStructureMemoryInfoNV( BindAccelerationStructureMemoryInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + BindAccelerationStructureMemoryInfoNV( VkBindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : BindAccelerationStructureMemoryInfoNV( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindAccelerationStructureMemoryInfoNV( + VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_, + VULKAN_HPP_NAMESPACE::DeviceMemory memory_, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceIndices_ ) + : accelerationStructure( accelerationStructure_ ) + , memory( memory_ ) + , memoryOffset( memoryOffset_ ) + , deviceIndexCount( static_cast( deviceIndices_.size() ) ) + , pDeviceIndices( deviceIndices_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BindAccelerationStructureMemoryInfoNV & + operator=( BindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindAccelerationStructureMemoryInfoNV & + operator=( VkBindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setAccelerationStructure( + VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & + setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & + setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & + setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT + { + deviceIndexCount = deviceIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & + setPDeviceIndices( const uint32_t * pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT + { + pDeviceIndices = pDeviceIndices_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindAccelerationStructureMemoryInfoNV & setDeviceIndices( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT + { + deviceIndexCount = static_cast( deviceIndices_.size() ); + pDeviceIndices = deviceIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBindAccelerationStructureMemoryInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBindAccelerationStructureMemoryInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, accelerationStructure, memory, memoryOffset, deviceIndexCount, pDeviceIndices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindAccelerationStructureMemoryInfoNV const & ) const = default; +#else + bool operator==( BindAccelerationStructureMemoryInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( accelerationStructure == rhs.accelerationStructure ) && ( memory == rhs.memory ) && + ( memoryOffset == rhs.memoryOffset ) && ( deviceIndexCount == rhs.deviceIndexCount ) && + ( pDeviceIndices == rhs.pDeviceIndices ); +# endif + } + + bool operator!=( BindAccelerationStructureMemoryInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindAccelerationStructureMemoryInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset = {}; + uint32_t deviceIndexCount = {}; + const uint32_t * pDeviceIndices = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV ) == + sizeof( VkBindAccelerationStructureMemoryInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BindAccelerationStructureMemoryInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BindAccelerationStructureMemoryInfoNV; + }; + + struct BindBufferMemoryDeviceGroupInfo + { + using NativeType = VkBindBufferMemoryDeviceGroupInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindBufferMemoryDeviceGroupInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindBufferMemoryDeviceGroupInfo( uint32_t deviceIndexCount_ = {}, + const uint32_t * pDeviceIndices_ = {} ) VULKAN_HPP_NOEXCEPT + : deviceIndexCount( deviceIndexCount_ ) + , pDeviceIndices( pDeviceIndices_ ) + {} + + VULKAN_HPP_CONSTEXPR + BindBufferMemoryDeviceGroupInfo( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindBufferMemoryDeviceGroupInfo( VkBindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BindBufferMemoryDeviceGroupInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindBufferMemoryDeviceGroupInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceIndices_ ) + : deviceIndexCount( static_cast( deviceIndices_.size() ) ), pDeviceIndices( deviceIndices_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BindBufferMemoryDeviceGroupInfo & + operator=( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindBufferMemoryDeviceGroupInfo & operator=( VkBindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & + setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT + { + deviceIndexCount = deviceIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & + setPDeviceIndices( const uint32_t * pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT + { + pDeviceIndices = pDeviceIndices_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindBufferMemoryDeviceGroupInfo & setDeviceIndices( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT + { + deviceIndexCount = static_cast( deviceIndices_.size() ); + pDeviceIndices = deviceIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBindBufferMemoryDeviceGroupInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBindBufferMemoryDeviceGroupInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceIndexCount, pDeviceIndices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindBufferMemoryDeviceGroupInfo const & ) const = default; +#else + bool operator==( BindBufferMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceIndexCount == rhs.deviceIndexCount ) && + ( pDeviceIndices == rhs.pDeviceIndices ); +# endif + } + + bool operator!=( BindBufferMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindBufferMemoryDeviceGroupInfo; + const void * pNext = {}; + uint32_t deviceIndexCount = {}; + const uint32_t * pDeviceIndices = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo ) == + sizeof( VkBindBufferMemoryDeviceGroupInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BindBufferMemoryDeviceGroupInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BindBufferMemoryDeviceGroupInfo; + }; + using BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo; + + struct BindBufferMemoryInfo + { + using NativeType = VkBindBufferMemoryInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindBufferMemoryInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindBufferMemoryInfo( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, + VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ = {} ) VULKAN_HPP_NOEXCEPT + : buffer( buffer_ ) + , memory( memory_ ) + , memoryOffset( memoryOffset_ ) + {} + + VULKAN_HPP_CONSTEXPR BindBufferMemoryInfo( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindBufferMemoryInfo( VkBindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BindBufferMemoryInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BindBufferMemoryInfo & operator=( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindBufferMemoryInfo & operator=( VkBindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & + setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & + setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBindBufferMemoryInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBindBufferMemoryInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, buffer, memory, memoryOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindBufferMemoryInfo const & ) const = default; +#else + bool operator==( BindBufferMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ) && ( memory == rhs.memory ) && + ( memoryOffset == rhs.memoryOffset ); +# endif + } + + bool operator!=( BindBufferMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindBufferMemoryInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Buffer buffer = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo ) == sizeof( VkBindBufferMemoryInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindBufferMemoryInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BindBufferMemoryInfo; + }; + using BindBufferMemoryInfoKHR = BindBufferMemoryInfo; + + struct Offset2D + { + using NativeType = VkOffset2D; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR Offset2D( int32_t x_ = {}, int32_t y_ = {} ) VULKAN_HPP_NOEXCEPT + : x( x_ ) + , y( y_ ) + {} + + VULKAN_HPP_CONSTEXPR Offset2D( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Offset2D( VkOffset2D const & rhs ) VULKAN_HPP_NOEXCEPT : Offset2D( *reinterpret_cast( &rhs ) ) {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + Offset2D & operator=( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Offset2D & operator=( VkOffset2D const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Offset2D & setX( int32_t x_ ) VULKAN_HPP_NOEXCEPT + { + x = x_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Offset2D & setY( int32_t y_ ) VULKAN_HPP_NOEXCEPT + { + y = y_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkOffset2D const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkOffset2D &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( x, y ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Offset2D const & ) const = default; +#else + bool operator==( Offset2D const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( x == rhs.x ) && ( y == rhs.y ); +# endif + } + + bool operator!=( Offset2D const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + int32_t x = {}; + int32_t y = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Offset2D ) == sizeof( VkOffset2D ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Offset2D is not nothrow_move_constructible!" ); + + struct Rect2D + { + using NativeType = VkRect2D; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR Rect2D( VULKAN_HPP_NAMESPACE::Offset2D offset_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D extent_ = {} ) VULKAN_HPP_NOEXCEPT + : offset( offset_ ) + , extent( extent_ ) + {} + + VULKAN_HPP_CONSTEXPR Rect2D( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Rect2D( VkRect2D const & rhs ) VULKAN_HPP_NOEXCEPT : Rect2D( *reinterpret_cast( &rhs ) ) {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + Rect2D & operator=( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Rect2D & operator=( VkRect2D const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Rect2D & setOffset( VULKAN_HPP_NAMESPACE::Offset2D const & offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Rect2D & setExtent( VULKAN_HPP_NAMESPACE::Extent2D const & extent_ ) VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRect2D const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRect2D &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( offset, extent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Rect2D const & ) const = default; +#else + bool operator==( Rect2D const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( offset == rhs.offset ) && ( extent == rhs.extent ); +# endif + } + + bool operator!=( Rect2D const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::Offset2D offset = {}; + VULKAN_HPP_NAMESPACE::Extent2D extent = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Rect2D ) == sizeof( VkRect2D ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Rect2D is not nothrow_move_constructible!" ); + + struct BindImageMemoryDeviceGroupInfo + { + using NativeType = VkBindImageMemoryDeviceGroupInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImageMemoryDeviceGroupInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindImageMemoryDeviceGroupInfo( + uint32_t deviceIndexCount_ = {}, + const uint32_t * pDeviceIndices_ = {}, + uint32_t splitInstanceBindRegionCount_ = {}, + const VULKAN_HPP_NAMESPACE::Rect2D * pSplitInstanceBindRegions_ = {} ) VULKAN_HPP_NOEXCEPT + : deviceIndexCount( deviceIndexCount_ ) + , pDeviceIndices( pDeviceIndices_ ) + , splitInstanceBindRegionCount( splitInstanceBindRegionCount_ ) + , pSplitInstanceBindRegions( pSplitInstanceBindRegions_ ) + {} + + VULKAN_HPP_CONSTEXPR + BindImageMemoryDeviceGroupInfo( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindImageMemoryDeviceGroupInfo( VkBindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BindImageMemoryDeviceGroupInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindImageMemoryDeviceGroupInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceIndices_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + splitInstanceBindRegions_ = {} ) + : deviceIndexCount( static_cast( deviceIndices_.size() ) ) + , pDeviceIndices( deviceIndices_.data() ) + , splitInstanceBindRegionCount( static_cast( splitInstanceBindRegions_.size() ) ) + , pSplitInstanceBindRegions( splitInstanceBindRegions_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BindImageMemoryDeviceGroupInfo & + operator=( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindImageMemoryDeviceGroupInfo & operator=( VkBindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & + setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT + { + deviceIndexCount = deviceIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & + setPDeviceIndices( const uint32_t * pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT + { + pDeviceIndices = pDeviceIndices_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindImageMemoryDeviceGroupInfo & setDeviceIndices( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT + { + deviceIndexCount = static_cast( deviceIndices_.size() ); + pDeviceIndices = deviceIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & + setSplitInstanceBindRegionCount( uint32_t splitInstanceBindRegionCount_ ) VULKAN_HPP_NOEXCEPT + { + splitInstanceBindRegionCount = splitInstanceBindRegionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setPSplitInstanceBindRegions( + const VULKAN_HPP_NAMESPACE::Rect2D * pSplitInstanceBindRegions_ ) VULKAN_HPP_NOEXCEPT + { + pSplitInstanceBindRegions = pSplitInstanceBindRegions_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindImageMemoryDeviceGroupInfo & setSplitInstanceBindRegions( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + splitInstanceBindRegions_ ) VULKAN_HPP_NOEXCEPT + { + splitInstanceBindRegionCount = static_cast( splitInstanceBindRegions_.size() ); + pSplitInstanceBindRegions = splitInstanceBindRegions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBindImageMemoryDeviceGroupInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBindImageMemoryDeviceGroupInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, deviceIndexCount, pDeviceIndices, splitInstanceBindRegionCount, pSplitInstanceBindRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindImageMemoryDeviceGroupInfo const & ) const = default; +#else + bool operator==( BindImageMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceIndexCount == rhs.deviceIndexCount ) && + ( pDeviceIndices == rhs.pDeviceIndices ) && + ( splitInstanceBindRegionCount == rhs.splitInstanceBindRegionCount ) && + ( pSplitInstanceBindRegions == rhs.pSplitInstanceBindRegions ); +# endif + } + + bool operator!=( BindImageMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImageMemoryDeviceGroupInfo; + const void * pNext = {}; + uint32_t deviceIndexCount = {}; + const uint32_t * pDeviceIndices = {}; + uint32_t splitInstanceBindRegionCount = {}; + const VULKAN_HPP_NAMESPACE::Rect2D * pSplitInstanceBindRegions = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo ) == + sizeof( VkBindImageMemoryDeviceGroupInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BindImageMemoryDeviceGroupInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BindImageMemoryDeviceGroupInfo; + }; + using BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo; + + struct BindImageMemoryInfo + { + using NativeType = VkBindImageMemoryInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImageMemoryInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindImageMemoryInfo( VULKAN_HPP_NAMESPACE::Image image_ = {}, + VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ = {} ) VULKAN_HPP_NOEXCEPT + : image( image_ ) + , memory( memory_ ) + , memoryOffset( memoryOffset_ ) + {} + + VULKAN_HPP_CONSTEXPR BindImageMemoryInfo( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindImageMemoryInfo( VkBindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BindImageMemoryInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BindImageMemoryInfo & operator=( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindImageMemoryInfo & operator=( VkBindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & + setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & + setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBindImageMemoryInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBindImageMemoryInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image, memory, memoryOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindImageMemoryInfo const & ) const = default; +#else + bool operator==( BindImageMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( memory == rhs.memory ) && + ( memoryOffset == rhs.memoryOffset ); +# endif + } + + bool operator!=( BindImageMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImageMemoryInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Image image = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindImageMemoryInfo ) == sizeof( VkBindImageMemoryInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindImageMemoryInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BindImageMemoryInfo; + }; + using BindImageMemoryInfoKHR = BindImageMemoryInfo; + + struct BindImageMemorySwapchainInfoKHR + { + using NativeType = VkBindImageMemorySwapchainInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImageMemorySwapchainInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindImageMemorySwapchainInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ = {}, + uint32_t imageIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : swapchain( swapchain_ ) + , imageIndex( imageIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR + BindImageMemorySwapchainInfoKHR( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindImageMemorySwapchainInfoKHR( VkBindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : BindImageMemorySwapchainInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BindImageMemorySwapchainInfoKHR & + operator=( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindImageMemorySwapchainInfoKHR & operator=( VkBindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & + setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT + { + swapchain = swapchain_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setImageIndex( uint32_t imageIndex_ ) VULKAN_HPP_NOEXCEPT + { + imageIndex = imageIndex_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBindImageMemorySwapchainInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBindImageMemorySwapchainInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchain, imageIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindImageMemorySwapchainInfoKHR const & ) const = default; +#else + bool operator==( BindImageMemorySwapchainInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain ) && + ( imageIndex == rhs.imageIndex ); +# endif + } + + bool operator!=( BindImageMemorySwapchainInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImageMemorySwapchainInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain = {}; + uint32_t imageIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR ) == + sizeof( VkBindImageMemorySwapchainInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BindImageMemorySwapchainInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BindImageMemorySwapchainInfoKHR; + }; + + struct BindImagePlaneMemoryInfo + { + using NativeType = VkBindImagePlaneMemoryInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImagePlaneMemoryInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BindImagePlaneMemoryInfo( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ = + VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor ) VULKAN_HPP_NOEXCEPT + : planeAspect( planeAspect_ ) + {} + + VULKAN_HPP_CONSTEXPR BindImagePlaneMemoryInfo( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindImagePlaneMemoryInfo( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BindImagePlaneMemoryInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BindImagePlaneMemoryInfo & operator=( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindImagePlaneMemoryInfo & operator=( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo & + setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT + { + planeAspect = planeAspect_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBindImagePlaneMemoryInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBindImagePlaneMemoryInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, planeAspect ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindImagePlaneMemoryInfo const & ) const = default; +#else + bool operator==( BindImagePlaneMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( planeAspect == rhs.planeAspect ); +# endif + } + + bool operator!=( BindImagePlaneMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImagePlaneMemoryInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo ) == + sizeof( VkBindImagePlaneMemoryInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindImagePlaneMemoryInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BindImagePlaneMemoryInfo; + }; + using BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo; + + struct BindIndexBufferIndirectCommandNV + { + using NativeType = VkBindIndexBufferIndirectCommandNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindIndexBufferIndirectCommandNV( + VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ = {}, + uint32_t size_ = {}, + VULKAN_HPP_NAMESPACE::IndexType indexType_ = VULKAN_HPP_NAMESPACE::IndexType::eUint16 ) VULKAN_HPP_NOEXCEPT + : bufferAddress( bufferAddress_ ) + , size( size_ ) + , indexType( indexType_ ) + {} + + VULKAN_HPP_CONSTEXPR + BindIndexBufferIndirectCommandNV( BindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindIndexBufferIndirectCommandNV( VkBindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + : BindIndexBufferIndirectCommandNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BindIndexBufferIndirectCommandNV & + operator=( BindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindIndexBufferIndirectCommandNV & operator=( VkBindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV & + setBufferAddress( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ ) VULKAN_HPP_NOEXCEPT + { + bufferAddress = bufferAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV & + setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBindIndexBufferIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBindIndexBufferIndirectCommandNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( bufferAddress, size, indexType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindIndexBufferIndirectCommandNV const & ) const = default; +#else + bool operator==( BindIndexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( bufferAddress == rhs.bufferAddress ) && ( size == rhs.size ) && ( indexType == rhs.indexType ); +# endif + } + + bool operator!=( BindIndexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress = {}; + uint32_t size = {}; + VULKAN_HPP_NAMESPACE::IndexType indexType = VULKAN_HPP_NAMESPACE::IndexType::eUint16; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV ) == + sizeof( VkBindIndexBufferIndirectCommandNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BindIndexBufferIndirectCommandNV is not nothrow_move_constructible!" ); + + struct BindShaderGroupIndirectCommandNV + { + using NativeType = VkBindShaderGroupIndirectCommandNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindShaderGroupIndirectCommandNV( uint32_t groupIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : groupIndex( groupIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR + BindShaderGroupIndirectCommandNV( BindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindShaderGroupIndirectCommandNV( VkBindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + : BindShaderGroupIndirectCommandNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BindShaderGroupIndirectCommandNV & + operator=( BindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindShaderGroupIndirectCommandNV & operator=( VkBindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindShaderGroupIndirectCommandNV & setGroupIndex( uint32_t groupIndex_ ) VULKAN_HPP_NOEXCEPT + { + groupIndex = groupIndex_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBindShaderGroupIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBindShaderGroupIndirectCommandNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( groupIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindShaderGroupIndirectCommandNV const & ) const = default; +#else + bool operator==( BindShaderGroupIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( groupIndex == rhs.groupIndex ); +# endif + } + + bool operator!=( BindShaderGroupIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t groupIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV ) == + sizeof( VkBindShaderGroupIndirectCommandNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BindShaderGroupIndirectCommandNV is not nothrow_move_constructible!" ); + + struct SparseMemoryBind + { + using NativeType = VkSparseMemoryBind; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SparseMemoryBind( VULKAN_HPP_NAMESPACE::DeviceSize resourceOffset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, + VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ = {}, + VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT + : resourceOffset( resourceOffset_ ) + , size( size_ ) + , memory( memory_ ) + , memoryOffset( memoryOffset_ ) + , flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR SparseMemoryBind( SparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseMemoryBind( VkSparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseMemoryBind( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SparseMemoryBind & operator=( SparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseMemoryBind & operator=( VkSparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & + setResourceOffset( VULKAN_HPP_NAMESPACE::DeviceSize resourceOffset_ ) VULKAN_HPP_NOEXCEPT + { + resourceOffset = resourceOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & + setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & + setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & + setFlags( VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSparseMemoryBind const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSparseMemoryBind &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( resourceOffset, size, memory, memoryOffset, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseMemoryBind const & ) const = default; +#else + bool operator==( SparseMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( resourceOffset == rhs.resourceOffset ) && ( size == rhs.size ) && ( memory == rhs.memory ) && + ( memoryOffset == rhs.memoryOffset ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( SparseMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DeviceSize resourceOffset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize size = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset = {}; + VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SparseMemoryBind is not nothrow_move_constructible!" ); + + struct SparseBufferMemoryBindInfo + { + using NativeType = VkSparseBufferMemoryBindInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SparseBufferMemoryBindInfo( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, + uint32_t bindCount_ = {}, + const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_ = {} ) VULKAN_HPP_NOEXCEPT + : buffer( buffer_ ) + , bindCount( bindCount_ ) + , pBinds( pBinds_ ) + {} + + VULKAN_HPP_CONSTEXPR + SparseBufferMemoryBindInfo( SparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseBufferMemoryBindInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SparseBufferMemoryBindInfo( + VULKAN_HPP_NAMESPACE::Buffer buffer_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & binds_ ) + : buffer( buffer_ ), bindCount( static_cast( binds_.size() ) ), pBinds( binds_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SparseBufferMemoryBindInfo & operator=( SparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseBufferMemoryBindInfo & operator=( VkSparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo & + setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo & setBindCount( uint32_t bindCount_ ) VULKAN_HPP_NOEXCEPT + { + bindCount = bindCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo & + setPBinds( const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_ ) VULKAN_HPP_NOEXCEPT + { + pBinds = pBinds_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SparseBufferMemoryBindInfo & setBinds( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & binds_ ) + VULKAN_HPP_NOEXCEPT + { + bindCount = static_cast( binds_.size() ); + pBinds = binds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSparseBufferMemoryBindInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSparseBufferMemoryBindInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( buffer, bindCount, pBinds ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseBufferMemoryBindInfo const & ) const = default; +#else + bool operator==( SparseBufferMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( buffer == rhs.buffer ) && ( bindCount == rhs.bindCount ) && ( pBinds == rhs.pBinds ); +# endif + } + + bool operator!=( SparseBufferMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::Buffer buffer = {}; + uint32_t bindCount = {}; + const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo ) == + sizeof( VkSparseBufferMemoryBindInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SparseBufferMemoryBindInfo is not nothrow_move_constructible!" ); + + struct SparseImageOpaqueMemoryBindInfo + { + using NativeType = VkSparseImageOpaqueMemoryBindInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SparseImageOpaqueMemoryBindInfo( VULKAN_HPP_NAMESPACE::Image image_ = {}, + uint32_t bindCount_ = {}, + const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_ = {} ) VULKAN_HPP_NOEXCEPT + : image( image_ ) + , bindCount( bindCount_ ) + , pBinds( pBinds_ ) + {} + + VULKAN_HPP_CONSTEXPR + SparseImageOpaqueMemoryBindInfo( SparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseImageOpaqueMemoryBindInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SparseImageOpaqueMemoryBindInfo( + VULKAN_HPP_NAMESPACE::Image image_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & binds_ ) + : image( image_ ), bindCount( static_cast( binds_.size() ) ), pBinds( binds_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SparseImageOpaqueMemoryBindInfo & + operator=( SparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageOpaqueMemoryBindInfo & operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo & + setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo & setBindCount( uint32_t bindCount_ ) VULKAN_HPP_NOEXCEPT + { + bindCount = bindCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo & + setPBinds( const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_ ) VULKAN_HPP_NOEXCEPT + { + pBinds = pBinds_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SparseImageOpaqueMemoryBindInfo & setBinds( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & binds_ ) + VULKAN_HPP_NOEXCEPT + { + bindCount = static_cast( binds_.size() ); + pBinds = binds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSparseImageOpaqueMemoryBindInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSparseImageOpaqueMemoryBindInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( image, bindCount, pBinds ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseImageOpaqueMemoryBindInfo const & ) const = default; +#else + bool operator==( SparseImageOpaqueMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( image == rhs.image ) && ( bindCount == rhs.bindCount ) && ( pBinds == rhs.pBinds ); +# endif + } + + bool operator!=( SparseImageOpaqueMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::Image image = {}; + uint32_t bindCount = {}; + const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo ) == + sizeof( VkSparseImageOpaqueMemoryBindInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SparseImageOpaqueMemoryBindInfo is not nothrow_move_constructible!" ); + + struct ImageSubresource + { + using NativeType = VkImageSubresource; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageSubresource( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}, + uint32_t mipLevel_ = {}, + uint32_t arrayLayer_ = {} ) VULKAN_HPP_NOEXCEPT + : aspectMask( aspectMask_ ) + , mipLevel( mipLevel_ ) + , arrayLayer( arrayLayer_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageSubresource( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageSubresource( VkImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageSubresource( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageSubresource & operator=( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageSubresource & operator=( VkImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageSubresource & + setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setMipLevel( uint32_t mipLevel_ ) VULKAN_HPP_NOEXCEPT + { + mipLevel = mipLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setArrayLayer( uint32_t arrayLayer_ ) VULKAN_HPP_NOEXCEPT + { + arrayLayer = arrayLayer_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageSubresource const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageSubresource &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( aspectMask, mipLevel, arrayLayer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageSubresource const & ) const = default; +#else + bool operator==( ImageSubresource const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( aspectMask == rhs.aspectMask ) && ( mipLevel == rhs.mipLevel ) && ( arrayLayer == rhs.arrayLayer ); +# endif + } + + bool operator!=( ImageSubresource const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {}; + uint32_t mipLevel = {}; + uint32_t arrayLayer = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSubresource ) == sizeof( VkImageSubresource ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageSubresource is not nothrow_move_constructible!" ); + + struct Offset3D + { + using NativeType = VkOffset3D; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR Offset3D( int32_t x_ = {}, int32_t y_ = {}, int32_t z_ = {} ) VULKAN_HPP_NOEXCEPT + : x( x_ ) + , y( y_ ) + , z( z_ ) + {} + + VULKAN_HPP_CONSTEXPR Offset3D( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Offset3D( VkOffset3D const & rhs ) VULKAN_HPP_NOEXCEPT : Offset3D( *reinterpret_cast( &rhs ) ) {} + + explicit Offset3D( Offset2D const & offset2D, int32_t z_ = {} ) : x( offset2D.x ), y( offset2D.y ), z( z_ ) {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + Offset3D & operator=( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Offset3D & operator=( VkOffset3D const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Offset3D & setX( int32_t x_ ) VULKAN_HPP_NOEXCEPT + { + x = x_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Offset3D & setY( int32_t y_ ) VULKAN_HPP_NOEXCEPT + { + y = y_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Offset3D & setZ( int32_t z_ ) VULKAN_HPP_NOEXCEPT + { + z = z_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkOffset3D const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkOffset3D &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( x, y, z ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Offset3D const & ) const = default; +#else + bool operator==( Offset3D const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( x == rhs.x ) && ( y == rhs.y ) && ( z == rhs.z ); +# endif + } + + bool operator!=( Offset3D const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + int32_t x = {}; + int32_t y = {}; + int32_t z = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Offset3D ) == sizeof( VkOffset3D ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Offset3D is not nothrow_move_constructible!" ); + + struct Extent3D + { + using NativeType = VkExtent3D; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + Extent3D( uint32_t width_ = {}, uint32_t height_ = {}, uint32_t depth_ = {} ) VULKAN_HPP_NOEXCEPT + : width( width_ ) + , height( height_ ) + , depth( depth_ ) + {} + + VULKAN_HPP_CONSTEXPR Extent3D( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Extent3D( VkExtent3D const & rhs ) VULKAN_HPP_NOEXCEPT : Extent3D( *reinterpret_cast( &rhs ) ) {} + + explicit Extent3D( Extent2D const & extent2D, uint32_t depth_ = {} ) + : width( extent2D.width ), height( extent2D.height ), depth( depth_ ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + Extent3D & operator=( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Extent3D & operator=( VkExtent3D const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Extent3D & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT + { + width = width_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Extent3D & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT + { + height = height_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Extent3D & setDepth( uint32_t depth_ ) VULKAN_HPP_NOEXCEPT + { + depth = depth_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkExtent3D const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExtent3D &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( width, height, depth ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Extent3D const & ) const = default; +#else + bool operator==( Extent3D const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( width == rhs.width ) && ( height == rhs.height ) && ( depth == rhs.depth ); +# endif + } + + bool operator!=( Extent3D const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t width = {}; + uint32_t height = {}; + uint32_t depth = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Extent3D ) == sizeof( VkExtent3D ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Extent3D is not nothrow_move_constructible!" ); + + struct SparseImageMemoryBind + { + using NativeType = VkSparseImageMemoryBind; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SparseImageMemoryBind( VULKAN_HPP_NAMESPACE::ImageSubresource subresource_ = {}, + VULKAN_HPP_NAMESPACE::Offset3D offset_ = {}, + VULKAN_HPP_NAMESPACE::Extent3D extent_ = {}, + VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ = {}, + VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT + : subresource( subresource_ ) + , offset( offset_ ) + , extent( extent_ ) + , memory( memory_ ) + , memoryOffset( memoryOffset_ ) + , flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR SparseImageMemoryBind( SparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseImageMemoryBind( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SparseImageMemoryBind & operator=( SparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageMemoryBind & operator=( VkSparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & + setSubresource( VULKAN_HPP_NAMESPACE::ImageSubresource const & subresource_ ) VULKAN_HPP_NOEXCEPT + { + subresource = subresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & + setOffset( VULKAN_HPP_NAMESPACE::Offset3D const & offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & + setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & + setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & + setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & + setFlags( VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSparseImageMemoryBind const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSparseImageMemoryBind &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( subresource, offset, extent, memory, memoryOffset, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseImageMemoryBind const & ) const = default; +#else + bool operator==( SparseImageMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( subresource == rhs.subresource ) && ( offset == rhs.offset ) && ( extent == rhs.extent ) && + ( memory == rhs.memory ) && ( memoryOffset == rhs.memoryOffset ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( SparseImageMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ImageSubresource subresource = {}; + VULKAN_HPP_NAMESPACE::Offset3D offset = {}; + VULKAN_HPP_NAMESPACE::Extent3D extent = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset = {}; + VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SparseImageMemoryBind is not nothrow_move_constructible!" ); + + struct SparseImageMemoryBindInfo + { + using NativeType = VkSparseImageMemoryBindInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SparseImageMemoryBindInfo( VULKAN_HPP_NAMESPACE::Image image_ = {}, + uint32_t bindCount_ = {}, + const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind * pBinds_ = {} ) VULKAN_HPP_NOEXCEPT + : image( image_ ) + , bindCount( bindCount_ ) + , pBinds( pBinds_ ) + {} + + VULKAN_HPP_CONSTEXPR + SparseImageMemoryBindInfo( SparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseImageMemoryBindInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SparseImageMemoryBindInfo( + VULKAN_HPP_NAMESPACE::Image image_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & binds_ ) + : image( image_ ), bindCount( static_cast( binds_.size() ) ), pBinds( binds_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SparseImageMemoryBindInfo & operator=( SparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageMemoryBindInfo & operator=( VkSparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo & + setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo & setBindCount( uint32_t bindCount_ ) VULKAN_HPP_NOEXCEPT + { + bindCount = bindCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo & + setPBinds( const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind * pBinds_ ) VULKAN_HPP_NOEXCEPT + { + pBinds = pBinds_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SparseImageMemoryBindInfo & setBinds( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & binds_ ) + VULKAN_HPP_NOEXCEPT + { + bindCount = static_cast( binds_.size() ); + pBinds = binds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSparseImageMemoryBindInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSparseImageMemoryBindInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( image, bindCount, pBinds ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseImageMemoryBindInfo const & ) const = default; +#else + bool operator==( SparseImageMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( image == rhs.image ) && ( bindCount == rhs.bindCount ) && ( pBinds == rhs.pBinds ); +# endif + } + + bool operator!=( SparseImageMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::Image image = {}; + uint32_t bindCount = {}; + const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind * pBinds = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo ) == + sizeof( VkSparseImageMemoryBindInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SparseImageMemoryBindInfo is not nothrow_move_constructible!" ); + + struct BindSparseInfo + { + using NativeType = VkBindSparseInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindSparseInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BindSparseInfo( uint32_t waitSemaphoreCount_ = {}, + const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ = {}, + uint32_t bufferBindCount_ = {}, + const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo * pBufferBinds_ = {}, + uint32_t imageOpaqueBindCount_ = {}, + const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo * pImageOpaqueBinds_ = {}, + uint32_t imageBindCount_ = {}, + const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo * pImageBinds_ = {}, + uint32_t signalSemaphoreCount_ = {}, + const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores_ = {} ) VULKAN_HPP_NOEXCEPT + : waitSemaphoreCount( waitSemaphoreCount_ ) + , pWaitSemaphores( pWaitSemaphores_ ) + , bufferBindCount( bufferBindCount_ ) + , pBufferBinds( pBufferBinds_ ) + , imageOpaqueBindCount( imageOpaqueBindCount_ ) + , pImageOpaqueBinds( pImageOpaqueBinds_ ) + , imageBindCount( imageBindCount_ ) + , pImageBinds( pImageBinds_ ) + , signalSemaphoreCount( signalSemaphoreCount_ ) + , pSignalSemaphores( pSignalSemaphores_ ) + {} + + VULKAN_HPP_CONSTEXPR BindSparseInfo( BindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindSparseInfo( VkBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BindSparseInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindSparseInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphores_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + bufferBinds_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + imageOpaqueBinds_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + imageBinds_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + signalSemaphores_ = {} ) + : waitSemaphoreCount( static_cast( waitSemaphores_.size() ) ) + , pWaitSemaphores( waitSemaphores_.data() ) + , bufferBindCount( static_cast( bufferBinds_.size() ) ) + , pBufferBinds( bufferBinds_.data() ) + , imageOpaqueBindCount( static_cast( imageOpaqueBinds_.size() ) ) + , pImageOpaqueBinds( imageOpaqueBinds_.data() ) + , imageBindCount( static_cast( imageBinds_.size() ) ) + , pImageBinds( imageBinds_.data() ) + , signalSemaphoreCount( static_cast( signalSemaphores_.size() ) ) + , pSignalSemaphores( signalSemaphores_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BindSparseInfo & operator=( BindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindSparseInfo & operator=( VkBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = waitSemaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & + setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT + { + pWaitSemaphores = pWaitSemaphores_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindSparseInfo & setWaitSemaphores( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphores_ ) + VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = static_cast( waitSemaphores_.size() ); + pWaitSemaphores = waitSemaphores_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setBufferBindCount( uint32_t bufferBindCount_ ) VULKAN_HPP_NOEXCEPT + { + bufferBindCount = bufferBindCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & + setPBufferBinds( const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo * pBufferBinds_ ) VULKAN_HPP_NOEXCEPT + { + pBufferBinds = pBufferBinds_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindSparseInfo & setBufferBinds( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + bufferBinds_ ) VULKAN_HPP_NOEXCEPT + { + bufferBindCount = static_cast( bufferBinds_.size() ); + pBufferBinds = bufferBinds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & + setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ ) VULKAN_HPP_NOEXCEPT + { + imageOpaqueBindCount = imageOpaqueBindCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPImageOpaqueBinds( + const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo * pImageOpaqueBinds_ ) VULKAN_HPP_NOEXCEPT + { + pImageOpaqueBinds = pImageOpaqueBinds_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindSparseInfo & setImageOpaqueBinds( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + imageOpaqueBinds_ ) VULKAN_HPP_NOEXCEPT + { + imageOpaqueBindCount = static_cast( imageOpaqueBinds_.size() ); + pImageOpaqueBinds = imageOpaqueBinds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setImageBindCount( uint32_t imageBindCount_ ) VULKAN_HPP_NOEXCEPT + { + imageBindCount = imageBindCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & + setPImageBinds( const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo * pImageBinds_ ) VULKAN_HPP_NOEXCEPT + { + pImageBinds = pImageBinds_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindSparseInfo & setImageBinds( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + imageBinds_ ) VULKAN_HPP_NOEXCEPT + { + imageBindCount = static_cast( imageBinds_.size() ); + pImageBinds = imageBinds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & + setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT + { + signalSemaphoreCount = signalSemaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & + setPSignalSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores_ ) VULKAN_HPP_NOEXCEPT + { + pSignalSemaphores = pSignalSemaphores_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindSparseInfo & setSignalSemaphores( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphores_ ) + VULKAN_HPP_NOEXCEPT + { + signalSemaphoreCount = static_cast( signalSemaphores_.size() ); + pSignalSemaphores = signalSemaphores_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBindSparseInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBindSparseInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + waitSemaphoreCount, + pWaitSemaphores, + bufferBindCount, + pBufferBinds, + imageOpaqueBindCount, + pImageOpaqueBinds, + imageBindCount, + pImageBinds, + signalSemaphoreCount, + pSignalSemaphores ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindSparseInfo const & ) const = default; +#else + bool operator==( BindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) && + ( pWaitSemaphores == rhs.pWaitSemaphores ) && ( bufferBindCount == rhs.bufferBindCount ) && + ( pBufferBinds == rhs.pBufferBinds ) && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount ) && + ( pImageOpaqueBinds == rhs.pImageOpaqueBinds ) && ( imageBindCount == rhs.imageBindCount ) && + ( pImageBinds == rhs.pImageBinds ) && ( signalSemaphoreCount == rhs.signalSemaphoreCount ) && + ( pSignalSemaphores == rhs.pSignalSemaphores ); +# endif + } + + bool operator!=( BindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindSparseInfo; + const void * pNext = {}; + uint32_t waitSemaphoreCount = {}; + const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores = {}; + uint32_t bufferBindCount = {}; + const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo * pBufferBinds = {}; + uint32_t imageOpaqueBindCount = {}; + const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo * pImageOpaqueBinds = {}; + uint32_t imageBindCount = {}; + const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo * pImageBinds = {}; + uint32_t signalSemaphoreCount = {}; + const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindSparseInfo ) == sizeof( VkBindSparseInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindSparseInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BindSparseInfo; + }; + + struct BindVertexBufferIndirectCommandNV + { + using NativeType = VkBindVertexBufferIndirectCommandNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindVertexBufferIndirectCommandNV( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ = {}, + uint32_t size_ = {}, + uint32_t stride_ = {} ) VULKAN_HPP_NOEXCEPT + : bufferAddress( bufferAddress_ ) + , size( size_ ) + , stride( stride_ ) + {} + + VULKAN_HPP_CONSTEXPR + BindVertexBufferIndirectCommandNV( BindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindVertexBufferIndirectCommandNV( VkBindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + : BindVertexBufferIndirectCommandNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BindVertexBufferIndirectCommandNV & + operator=( BindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindVertexBufferIndirectCommandNV & operator=( VkBindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & + setBufferAddress( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ ) VULKAN_HPP_NOEXCEPT + { + bufferAddress = bufferAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBindVertexBufferIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBindVertexBufferIndirectCommandNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( bufferAddress, size, stride ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindVertexBufferIndirectCommandNV const & ) const = default; +#else + bool operator==( BindVertexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( bufferAddress == rhs.bufferAddress ) && ( size == rhs.size ) && ( stride == rhs.stride ); +# endif + } + + bool operator!=( BindVertexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress = {}; + uint32_t size = {}; + uint32_t stride = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV ) == + sizeof( VkBindVertexBufferIndirectCommandNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BindVertexBufferIndirectCommandNV is not nothrow_move_constructible!" ); + + struct ImageSubresourceLayers + { + using NativeType = VkImageSubresourceLayers; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageSubresourceLayers( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}, + uint32_t mipLevel_ = {}, + uint32_t baseArrayLayer_ = {}, + uint32_t layerCount_ = {} ) VULKAN_HPP_NOEXCEPT + : aspectMask( aspectMask_ ) + , mipLevel( mipLevel_ ) + , baseArrayLayer( baseArrayLayer_ ) + , layerCount( layerCount_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageSubresourceLayers( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageSubresourceLayers( VkImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageSubresourceLayers( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageSubresourceLayers & operator=( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageSubresourceLayers & operator=( VkImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & + setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setMipLevel( uint32_t mipLevel_ ) VULKAN_HPP_NOEXCEPT + { + mipLevel = mipLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT + { + baseArrayLayer = baseArrayLayer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageSubresourceLayers const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageSubresourceLayers &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( aspectMask, mipLevel, baseArrayLayer, layerCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageSubresourceLayers const & ) const = default; +#else + bool operator==( ImageSubresourceLayers const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( aspectMask == rhs.aspectMask ) && ( mipLevel == rhs.mipLevel ) && + ( baseArrayLayer == rhs.baseArrayLayer ) && ( layerCount == rhs.layerCount ); +# endif + } + + bool operator!=( ImageSubresourceLayers const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {}; + uint32_t mipLevel = {}; + uint32_t baseArrayLayer = {}; + uint32_t layerCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers ) == + sizeof( VkImageSubresourceLayers ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageSubresourceLayers is not nothrow_move_constructible!" ); + + struct ImageBlit2 + { + using NativeType = VkImageBlit2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageBlit2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + ImageBlit2( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, + std::array const & srcOffsets_ = {}, + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, + std::array const & dstOffsets_ = {} ) VULKAN_HPP_NOEXCEPT + : srcSubresource( srcSubresource_ ) + , srcOffsets( srcOffsets_ ) + , dstSubresource( dstSubresource_ ) + , dstOffsets( dstOffsets_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 ImageBlit2( ImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageBlit2( VkImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageBlit2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageBlit2 & operator=( ImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageBlit2 & operator=( VkImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & + setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & + setSrcOffsets( std::array const & srcOffsets_ ) VULKAN_HPP_NOEXCEPT + { + srcOffsets = srcOffsets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & + setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & + setDstOffsets( std::array const & dstOffsets_ ) VULKAN_HPP_NOEXCEPT + { + dstOffsets = dstOffsets_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageBlit2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageBlit2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcSubresource, srcOffsets, dstSubresource, dstOffsets ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageBlit2 const & ) const = default; +#else + bool operator==( ImageBlit2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubresource == rhs.srcSubresource ) && + ( srcOffsets == rhs.srcOffsets ) && ( dstSubresource == rhs.dstSubresource ) && + ( dstOffsets == rhs.dstOffsets ); +# endif + } + + bool operator!=( ImageBlit2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageBlit2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D srcOffsets = {}; + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D dstOffsets = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageBlit2 ) == sizeof( VkImageBlit2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageBlit2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageBlit2; + }; + using ImageBlit2KHR = ImageBlit2; + + struct BlitImageInfo2 + { + using NativeType = VkBlitImageInfo2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBlitImageInfo2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2( + VULKAN_HPP_NAMESPACE::Image srcImage_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + VULKAN_HPP_NAMESPACE::Image dstImage_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + uint32_t regionCount_ = {}, + const VULKAN_HPP_NAMESPACE::ImageBlit2 * pRegions_ = {}, + VULKAN_HPP_NAMESPACE::Filter filter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest ) VULKAN_HPP_NOEXCEPT + : srcImage( srcImage_ ) + , srcImageLayout( srcImageLayout_ ) + , dstImage( dstImage_ ) + , dstImageLayout( dstImageLayout_ ) + , regionCount( regionCount_ ) + , pRegions( pRegions_ ) + , filter( filter_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2( BlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BlitImageInfo2( VkBlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : BlitImageInfo2( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BlitImageInfo2( + VULKAN_HPP_NAMESPACE::Image srcImage_, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, + VULKAN_HPP_NAMESPACE::Image dstImage_, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_, + VULKAN_HPP_NAMESPACE::Filter filter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest ) + : srcImage( srcImage_ ) + , srcImageLayout( srcImageLayout_ ) + , dstImage( dstImage_ ) + , dstImageLayout( dstImageLayout_ ) + , regionCount( static_cast( regions_.size() ) ) + , pRegions( regions_.data() ) + , filter( filter_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BlitImageInfo2 & operator=( BlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BlitImageInfo2 & operator=( VkBlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & + setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & + setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & + setPRegions( const VULKAN_HPP_NAMESPACE::ImageBlit2 * pRegions_ ) VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BlitImageInfo2 & setRegions( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) + VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setFilter( VULKAN_HPP_NAMESPACE::Filter filter_ ) VULKAN_HPP_NOEXCEPT + { + filter = filter_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBlitImageInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBlitImageInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BlitImageInfo2 const & ) const = default; +#else + bool operator==( BlitImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && + ( srcImageLayout == rhs.srcImageLayout ) && ( dstImage == rhs.dstImage ) && + ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && + ( pRegions == rhs.pRegions ) && ( filter == rhs.filter ); +# endif + } + + bool operator!=( BlitImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBlitImageInfo2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Image srcImage = {}; + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + VULKAN_HPP_NAMESPACE::Image dstImage = {}; + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + uint32_t regionCount = {}; + const VULKAN_HPP_NAMESPACE::ImageBlit2 * pRegions = {}; + VULKAN_HPP_NAMESPACE::Filter filter = VULKAN_HPP_NAMESPACE::Filter::eNearest; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BlitImageInfo2 ) == sizeof( VkBlitImageInfo2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BlitImageInfo2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BlitImageInfo2; + }; + using BlitImageInfo2KHR = BlitImageInfo2; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct BufferCollectionBufferCreateInfoFUCHSIA + { + using NativeType = VkBufferCollectionBufferCreateInfoFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eBufferCollectionBufferCreateInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BufferCollectionBufferCreateInfoFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ = {}, + uint32_t index_ = {} ) VULKAN_HPP_NOEXCEPT + : collection( collection_ ) + , index( index_ ) + {} + + VULKAN_HPP_CONSTEXPR BufferCollectionBufferCreateInfoFUCHSIA( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + BufferCollectionBufferCreateInfoFUCHSIA( VkBufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferCollectionBufferCreateInfoFUCHSIA( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferCollectionBufferCreateInfoFUCHSIA & + operator=( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCollectionBufferCreateInfoFUCHSIA & + operator=( VkBufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA & + setCollection( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ ) VULKAN_HPP_NOEXCEPT + { + collection = collection_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT + { + index = index_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferCollectionBufferCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferCollectionBufferCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, collection, index ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCollectionBufferCreateInfoFUCHSIA const & ) const = default; +# else + bool operator==( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( collection == rhs.collection ) && + ( index == rhs.index ); +# endif + } + + bool operator!=( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferCollectionBufferCreateInfoFUCHSIA; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection = {}; + uint32_t index = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA ) == + sizeof( VkBufferCollectionBufferCreateInfoFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BufferCollectionBufferCreateInfoFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferCollectionBufferCreateInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct BufferCollectionConstraintsInfoFUCHSIA + { + using NativeType = VkBufferCollectionConstraintsInfoFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eBufferCollectionConstraintsInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BufferCollectionConstraintsInfoFUCHSIA( uint32_t minBufferCount_ = {}, + uint32_t maxBufferCount_ = {}, + uint32_t minBufferCountForCamping_ = {}, + uint32_t minBufferCountForDedicatedSlack_ = {}, + uint32_t minBufferCountForSharedSlack_ = {} ) VULKAN_HPP_NOEXCEPT + : minBufferCount( minBufferCount_ ) + , maxBufferCount( maxBufferCount_ ) + , minBufferCountForCamping( minBufferCountForCamping_ ) + , minBufferCountForDedicatedSlack( minBufferCountForDedicatedSlack_ ) + , minBufferCountForSharedSlack( minBufferCountForSharedSlack_ ) + {} + + VULKAN_HPP_CONSTEXPR BufferCollectionConstraintsInfoFUCHSIA( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + BufferCollectionConstraintsInfoFUCHSIA( VkBufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferCollectionConstraintsInfoFUCHSIA( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferCollectionConstraintsInfoFUCHSIA & + operator=( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCollectionConstraintsInfoFUCHSIA & + operator=( VkBufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & + setMinBufferCount( uint32_t minBufferCount_ ) VULKAN_HPP_NOEXCEPT + { + minBufferCount = minBufferCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & + setMaxBufferCount( uint32_t maxBufferCount_ ) VULKAN_HPP_NOEXCEPT + { + maxBufferCount = maxBufferCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & + setMinBufferCountForCamping( uint32_t minBufferCountForCamping_ ) VULKAN_HPP_NOEXCEPT + { + minBufferCountForCamping = minBufferCountForCamping_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & + setMinBufferCountForDedicatedSlack( uint32_t minBufferCountForDedicatedSlack_ ) VULKAN_HPP_NOEXCEPT + { + minBufferCountForDedicatedSlack = minBufferCountForDedicatedSlack_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & + setMinBufferCountForSharedSlack( uint32_t minBufferCountForSharedSlack_ ) VULKAN_HPP_NOEXCEPT + { + minBufferCountForSharedSlack = minBufferCountForSharedSlack_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferCollectionConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferCollectionConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + minBufferCount, + maxBufferCount, + minBufferCountForCamping, + minBufferCountForDedicatedSlack, + minBufferCountForSharedSlack ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCollectionConstraintsInfoFUCHSIA const & ) const = default; +# else + bool operator==( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minBufferCount == rhs.minBufferCount ) && + ( maxBufferCount == rhs.maxBufferCount ) && ( minBufferCountForCamping == rhs.minBufferCountForCamping ) && + ( minBufferCountForDedicatedSlack == rhs.minBufferCountForDedicatedSlack ) && + ( minBufferCountForSharedSlack == rhs.minBufferCountForSharedSlack ); +# endif + } + + bool operator!=( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferCollectionConstraintsInfoFUCHSIA; + const void * pNext = {}; + uint32_t minBufferCount = {}; + uint32_t maxBufferCount = {}; + uint32_t minBufferCountForCamping = {}; + uint32_t minBufferCountForDedicatedSlack = {}; + uint32_t minBufferCountForSharedSlack = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA ) == + sizeof( VkBufferCollectionConstraintsInfoFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BufferCollectionConstraintsInfoFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferCollectionConstraintsInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct BufferCollectionCreateInfoFUCHSIA + { + using NativeType = VkBufferCollectionCreateInfoFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eBufferCollectionCreateInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferCollectionCreateInfoFUCHSIA( zx_handle_t collectionToken_ = {} ) VULKAN_HPP_NOEXCEPT + : collectionToken( collectionToken_ ) + {} + + VULKAN_HPP_CONSTEXPR + BufferCollectionCreateInfoFUCHSIA( BufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCollectionCreateInfoFUCHSIA( VkBufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferCollectionCreateInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferCollectionCreateInfoFUCHSIA & + operator=( BufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCollectionCreateInfoFUCHSIA & operator=( VkBufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCollectionCreateInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionCreateInfoFUCHSIA & + setCollectionToken( zx_handle_t collectionToken_ ) VULKAN_HPP_NOEXCEPT + { + collectionToken = collectionToken_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferCollectionCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferCollectionCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, collectionToken ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( BufferCollectionCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &collectionToken, &rhs.collectionToken, sizeof( zx_handle_t ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( BufferCollectionCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( memcmp( &collectionToken, &rhs.collectionToken, sizeof( zx_handle_t ) ) == 0 ); + } + + bool operator!=( BufferCollectionCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferCollectionCreateInfoFUCHSIA; + const void * pNext = {}; + zx_handle_t collectionToken = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA ) == + sizeof( VkBufferCollectionCreateInfoFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BufferCollectionCreateInfoFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferCollectionCreateInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct BufferCollectionImageCreateInfoFUCHSIA + { + using NativeType = VkBufferCollectionImageCreateInfoFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eBufferCollectionImageCreateInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BufferCollectionImageCreateInfoFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ = {}, + uint32_t index_ = {} ) VULKAN_HPP_NOEXCEPT + : collection( collection_ ) + , index( index_ ) + {} + + VULKAN_HPP_CONSTEXPR BufferCollectionImageCreateInfoFUCHSIA( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + BufferCollectionImageCreateInfoFUCHSIA( VkBufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferCollectionImageCreateInfoFUCHSIA( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferCollectionImageCreateInfoFUCHSIA & + operator=( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCollectionImageCreateInfoFUCHSIA & + operator=( VkBufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA & + setCollection( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ ) VULKAN_HPP_NOEXCEPT + { + collection = collection_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT + { + index = index_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferCollectionImageCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferCollectionImageCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, collection, index ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCollectionImageCreateInfoFUCHSIA const & ) const = default; +# else + bool operator==( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( collection == rhs.collection ) && + ( index == rhs.index ); +# endif + } + + bool operator!=( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferCollectionImageCreateInfoFUCHSIA; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection = {}; + uint32_t index = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA ) == + sizeof( VkBufferCollectionImageCreateInfoFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BufferCollectionImageCreateInfoFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferCollectionImageCreateInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct SysmemColorSpaceFUCHSIA + { + using NativeType = VkSysmemColorSpaceFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSysmemColorSpaceFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SysmemColorSpaceFUCHSIA( uint32_t colorSpace_ = {} ) VULKAN_HPP_NOEXCEPT + : colorSpace( colorSpace_ ) + {} + + VULKAN_HPP_CONSTEXPR SysmemColorSpaceFUCHSIA( SysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SysmemColorSpaceFUCHSIA( VkSysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : SysmemColorSpaceFUCHSIA( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SysmemColorSpaceFUCHSIA & operator=( SysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SysmemColorSpaceFUCHSIA & operator=( VkSysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SysmemColorSpaceFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SysmemColorSpaceFUCHSIA & setColorSpace( uint32_t colorSpace_ ) VULKAN_HPP_NOEXCEPT + { + colorSpace = colorSpace_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSysmemColorSpaceFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSysmemColorSpaceFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, colorSpace ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SysmemColorSpaceFUCHSIA const & ) const = default; +# else + bool operator==( SysmemColorSpaceFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorSpace == rhs.colorSpace ); +# endif + } + + bool operator!=( SysmemColorSpaceFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSysmemColorSpaceFUCHSIA; + const void * pNext = {}; + uint32_t colorSpace = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA ) == + sizeof( VkSysmemColorSpaceFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SysmemColorSpaceFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SysmemColorSpaceFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct BufferCollectionPropertiesFUCHSIA + { + using NativeType = VkBufferCollectionPropertiesFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eBufferCollectionPropertiesFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferCollectionPropertiesFUCHSIA( + uint32_t memoryTypeBits_ = {}, + uint32_t bufferCount_ = {}, + uint32_t createInfoIndex_ = {}, + uint64_t sysmemPixelFormat_ = {}, + VULKAN_HPP_NAMESPACE::FormatFeatureFlags formatFeatures_ = {}, + VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA sysmemColorSpaceIndex_ = {}, + VULKAN_HPP_NAMESPACE::ComponentMapping samplerYcbcrConversionComponents_ = {}, + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_ = + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity, + VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange_ = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull, + VULKAN_HPP_NAMESPACE::ChromaLocation suggestedXChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven, + VULKAN_HPP_NAMESPACE::ChromaLocation suggestedYChromaOffset_ = + VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven ) VULKAN_HPP_NOEXCEPT + : memoryTypeBits( memoryTypeBits_ ) + , bufferCount( bufferCount_ ) + , createInfoIndex( createInfoIndex_ ) + , sysmemPixelFormat( sysmemPixelFormat_ ) + , formatFeatures( formatFeatures_ ) + , sysmemColorSpaceIndex( sysmemColorSpaceIndex_ ) + , samplerYcbcrConversionComponents( samplerYcbcrConversionComponents_ ) + , suggestedYcbcrModel( suggestedYcbcrModel_ ) + , suggestedYcbcrRange( suggestedYcbcrRange_ ) + , suggestedXChromaOffset( suggestedXChromaOffset_ ) + , suggestedYChromaOffset( suggestedYChromaOffset_ ) + {} + + VULKAN_HPP_CONSTEXPR + BufferCollectionPropertiesFUCHSIA( BufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCollectionPropertiesFUCHSIA( VkBufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferCollectionPropertiesFUCHSIA( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferCollectionPropertiesFUCHSIA & + operator=( BufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCollectionPropertiesFUCHSIA & operator=( VkBufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & + setMemoryTypeBits( uint32_t memoryTypeBits_ ) VULKAN_HPP_NOEXCEPT + { + memoryTypeBits = memoryTypeBits_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & + setBufferCount( uint32_t bufferCount_ ) VULKAN_HPP_NOEXCEPT + { + bufferCount = bufferCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & + setCreateInfoIndex( uint32_t createInfoIndex_ ) VULKAN_HPP_NOEXCEPT + { + createInfoIndex = createInfoIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & + setSysmemPixelFormat( uint64_t sysmemPixelFormat_ ) VULKAN_HPP_NOEXCEPT + { + sysmemPixelFormat = sysmemPixelFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & + setFormatFeatures( VULKAN_HPP_NAMESPACE::FormatFeatureFlags formatFeatures_ ) VULKAN_HPP_NOEXCEPT + { + formatFeatures = formatFeatures_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & setSysmemColorSpaceIndex( + VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA const & sysmemColorSpaceIndex_ ) VULKAN_HPP_NOEXCEPT + { + sysmemColorSpaceIndex = sysmemColorSpaceIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & setSamplerYcbcrConversionComponents( + VULKAN_HPP_NAMESPACE::ComponentMapping const & samplerYcbcrConversionComponents_ ) VULKAN_HPP_NOEXCEPT + { + samplerYcbcrConversionComponents = samplerYcbcrConversionComponents_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & setSuggestedYcbcrModel( + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_ ) VULKAN_HPP_NOEXCEPT + { + suggestedYcbcrModel = suggestedYcbcrModel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & + setSuggestedYcbcrRange( VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange_ ) VULKAN_HPP_NOEXCEPT + { + suggestedYcbcrRange = suggestedYcbcrRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & + setSuggestedXChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation suggestedXChromaOffset_ ) VULKAN_HPP_NOEXCEPT + { + suggestedXChromaOffset = suggestedXChromaOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionPropertiesFUCHSIA & + setSuggestedYChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation suggestedYChromaOffset_ ) VULKAN_HPP_NOEXCEPT + { + suggestedYChromaOffset = suggestedYChromaOffset_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferCollectionPropertiesFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferCollectionPropertiesFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + memoryTypeBits, + bufferCount, + createInfoIndex, + sysmemPixelFormat, + formatFeatures, + sysmemColorSpaceIndex, + samplerYcbcrConversionComponents, + suggestedYcbcrModel, + suggestedYcbcrRange, + suggestedXChromaOffset, + suggestedYChromaOffset ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCollectionPropertiesFUCHSIA const & ) const = default; +# else + bool operator==( BufferCollectionPropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits ) && + ( bufferCount == rhs.bufferCount ) && ( createInfoIndex == rhs.createInfoIndex ) && + ( sysmemPixelFormat == rhs.sysmemPixelFormat ) && ( formatFeatures == rhs.formatFeatures ) && + ( sysmemColorSpaceIndex == rhs.sysmemColorSpaceIndex ) && + ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) && + ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) && + ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) && + ( suggestedYChromaOffset == rhs.suggestedYChromaOffset ); +# endif + } + + bool operator!=( BufferCollectionPropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferCollectionPropertiesFUCHSIA; + void * pNext = {}; + uint32_t memoryTypeBits = {}; + uint32_t bufferCount = {}; + uint32_t createInfoIndex = {}; + uint64_t sysmemPixelFormat = {}; + VULKAN_HPP_NAMESPACE::FormatFeatureFlags formatFeatures = {}; + VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA sysmemColorSpaceIndex = {}; + VULKAN_HPP_NAMESPACE::ComponentMapping samplerYcbcrConversionComponents = {}; + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel = + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity; + VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull; + VULKAN_HPP_NAMESPACE::ChromaLocation suggestedXChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven; + VULKAN_HPP_NAMESPACE::ChromaLocation suggestedYChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA ) == + sizeof( VkBufferCollectionPropertiesFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BufferCollectionPropertiesFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferCollectionPropertiesFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + struct BufferCreateInfo + { + using NativeType = VkBufferCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BufferCreateInfo( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, + VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ = {}, + VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive, + uint32_t queueFamilyIndexCount_ = {}, + const uint32_t * pQueueFamilyIndices_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , size( size_ ) + , usage( usage_ ) + , sharingMode( sharingMode_ ) + , queueFamilyIndexCount( queueFamilyIndexCount_ ) + , pQueueFamilyIndices( pQueueFamilyIndices_ ) + {} + + VULKAN_HPP_CONSTEXPR BufferCreateInfo( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCreateInfo( VkBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BufferCreateInfo( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_, + VULKAN_HPP_NAMESPACE::DeviceSize size_, + VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_, + VULKAN_HPP_NAMESPACE::SharingMode sharingMode_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_ ) + : flags( flags_ ) + , size( size_ ) + , usage( usage_ ) + , sharingMode( sharingMode_ ) + , queueFamilyIndexCount( static_cast( queueFamilyIndices_.size() ) ) + , pQueueFamilyIndices( queueFamilyIndices_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferCreateInfo & operator=( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCreateInfo & operator=( VkBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & + setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & + setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT + { + sharingMode = sharingMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & + setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = queueFamilyIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & + setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT + { + pQueueFamilyIndices = pQueueFamilyIndices_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BufferCreateInfo & setQueueFamilyIndices( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = static_cast( queueFamilyIndices_.size() ); + pQueueFamilyIndices = queueFamilyIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, size, usage, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCreateInfo const & ) const = default; +#else + bool operator==( BufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( size == rhs.size ) && + ( usage == rhs.usage ) && ( sharingMode == rhs.sharingMode ) && + ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) && + ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ); +# endif + } + + bool operator!=( BufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::BufferCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::DeviceSize size = {}; + VULKAN_HPP_NAMESPACE::BufferUsageFlags usage = {}; + VULKAN_HPP_NAMESPACE::SharingMode sharingMode = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive; + uint32_t queueFamilyIndexCount = {}; + const uint32_t * pQueueFamilyIndices = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferCreateInfo; + }; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct BufferConstraintsInfoFUCHSIA + { + using NativeType = VkBufferConstraintsInfoFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferConstraintsInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferConstraintsInfoFUCHSIA( + VULKAN_HPP_NAMESPACE::BufferCreateInfo createInfo_ = {}, + VULKAN_HPP_NAMESPACE::FormatFeatureFlags requiredFormatFeatures_ = {}, + VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints_ = {} ) + VULKAN_HPP_NOEXCEPT + : createInfo( createInfo_ ) + , requiredFormatFeatures( requiredFormatFeatures_ ) + , bufferCollectionConstraints( bufferCollectionConstraints_ ) + {} + + VULKAN_HPP_CONSTEXPR + BufferConstraintsInfoFUCHSIA( BufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferConstraintsInfoFUCHSIA( VkBufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferConstraintsInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferConstraintsInfoFUCHSIA & operator=( BufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferConstraintsInfoFUCHSIA & operator=( VkBufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA & + setCreateInfo( VULKAN_HPP_NAMESPACE::BufferCreateInfo const & createInfo_ ) VULKAN_HPP_NOEXCEPT + { + createInfo = createInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA & + setRequiredFormatFeatures( VULKAN_HPP_NAMESPACE::FormatFeatureFlags requiredFormatFeatures_ ) VULKAN_HPP_NOEXCEPT + { + requiredFormatFeatures = requiredFormatFeatures_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA & setBufferCollectionConstraints( + VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const & bufferCollectionConstraints_ ) + VULKAN_HPP_NOEXCEPT + { + bufferCollectionConstraints = bufferCollectionConstraints_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, createInfo, requiredFormatFeatures, bufferCollectionConstraints ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferConstraintsInfoFUCHSIA const & ) const = default; +# else + bool operator==( BufferConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( createInfo == rhs.createInfo ) && + ( requiredFormatFeatures == rhs.requiredFormatFeatures ) && + ( bufferCollectionConstraints == rhs.bufferCollectionConstraints ); +# endif + } + + bool operator!=( BufferConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferConstraintsInfoFUCHSIA; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::BufferCreateInfo createInfo = {}; + VULKAN_HPP_NAMESPACE::FormatFeatureFlags requiredFormatFeatures = {}; + VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA ) == + sizeof( VkBufferConstraintsInfoFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BufferConstraintsInfoFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferConstraintsInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + struct BufferCopy + { + using NativeType = VkBufferCopy; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferCopy( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize size_ = {} ) VULKAN_HPP_NOEXCEPT + : srcOffset( srcOffset_ ) + , dstOffset( dstOffset_ ) + , size( size_ ) + {} + + VULKAN_HPP_CONSTEXPR BufferCopy( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCopy( VkBufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferCopy( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferCopy & operator=( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCopy & operator=( VkBufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCopy & setSrcOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ ) VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy & setDstOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ ) VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferCopy const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferCopy &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( srcOffset, dstOffset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCopy const & ) const = default; +#else + bool operator==( BufferCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( srcOffset == rhs.srcOffset ) && ( dstOffset == rhs.dstOffset ) && ( size == rhs.size ); +# endif + } + + bool operator!=( BufferCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DeviceSize srcOffset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize size = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCopy ) == sizeof( VkBufferCopy ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferCopy is not nothrow_move_constructible!" ); + + struct BufferCopy2 + { + using NativeType = VkBufferCopy2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferCopy2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferCopy2( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize size_ = {} ) VULKAN_HPP_NOEXCEPT + : srcOffset( srcOffset_ ) + , dstOffset( dstOffset_ ) + , size( size_ ) + {} + + VULKAN_HPP_CONSTEXPR BufferCopy2( BufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCopy2( VkBufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferCopy2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferCopy2 & operator=( BufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCopy2 & operator=( VkBufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & + setSrcOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ ) VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & + setDstOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ ) VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferCopy2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferCopy2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcOffset, dstOffset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCopy2 const & ) const = default; +#else + bool operator==( BufferCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcOffset == rhs.srcOffset ) && + ( dstOffset == rhs.dstOffset ) && ( size == rhs.size ); +# endif + } + + bool operator!=( BufferCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferCopy2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceSize srcOffset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize dstOffset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize size = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCopy2 ) == sizeof( VkBufferCopy2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferCopy2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferCopy2; + }; + using BufferCopy2KHR = BufferCopy2; + + struct BufferDeviceAddressCreateInfoEXT + { + using NativeType = VkBufferDeviceAddressCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferDeviceAddressCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BufferDeviceAddressCreateInfoEXT( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} ) VULKAN_HPP_NOEXCEPT + : deviceAddress( deviceAddress_ ) + {} + + VULKAN_HPP_CONSTEXPR + BufferDeviceAddressCreateInfoEXT( BufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferDeviceAddressCreateInfoEXT( VkBufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferDeviceAddressCreateInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferDeviceAddressCreateInfoEXT & + operator=( BufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferDeviceAddressCreateInfoEXT & operator=( VkBufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressCreateInfoEXT & + setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferDeviceAddressCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferDeviceAddressCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceAddress ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferDeviceAddressCreateInfoEXT const & ) const = default; +#else + bool operator==( BufferDeviceAddressCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceAddress == rhs.deviceAddress ); +# endif + } + + bool operator!=( BufferDeviceAddressCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferDeviceAddressCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT ) == + sizeof( VkBufferDeviceAddressCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BufferDeviceAddressCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferDeviceAddressCreateInfoEXT; + }; + + struct BufferDeviceAddressInfo + { + using NativeType = VkBufferDeviceAddressInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferDeviceAddressInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferDeviceAddressInfo( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {} ) VULKAN_HPP_NOEXCEPT + : buffer( buffer_ ) + {} + + VULKAN_HPP_CONSTEXPR BufferDeviceAddressInfo( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferDeviceAddressInfo( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferDeviceAddressInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferDeviceAddressInfo & operator=( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferDeviceAddressInfo & operator=( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo & + setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferDeviceAddressInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferDeviceAddressInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, buffer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferDeviceAddressInfo const & ) const = default; +#else + bool operator==( BufferDeviceAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ); +# endif + } + + bool operator!=( BufferDeviceAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferDeviceAddressInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Buffer buffer = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo ) == + sizeof( VkBufferDeviceAddressInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferDeviceAddressInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferDeviceAddressInfo; + }; + using BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo; + using BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo; + + struct BufferImageCopy + { + using NativeType = VkBufferImageCopy; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferImageCopy( VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ = {}, + uint32_t bufferRowLength_ = {}, + uint32_t bufferImageHeight_ = {}, + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_ = {}, + VULKAN_HPP_NAMESPACE::Offset3D imageOffset_ = {}, + VULKAN_HPP_NAMESPACE::Extent3D imageExtent_ = {} ) VULKAN_HPP_NOEXCEPT + : bufferOffset( bufferOffset_ ) + , bufferRowLength( bufferRowLength_ ) + , bufferImageHeight( bufferImageHeight_ ) + , imageSubresource( imageSubresource_ ) + , imageOffset( imageOffset_ ) + , imageExtent( imageExtent_ ) + {} + + VULKAN_HPP_CONSTEXPR BufferImageCopy( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferImageCopy( VkBufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferImageCopy( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferImageCopy & operator=( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferImageCopy & operator=( VkBufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & + setBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ ) VULKAN_HPP_NOEXCEPT + { + bufferOffset = bufferOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferRowLength( uint32_t bufferRowLength_ ) VULKAN_HPP_NOEXCEPT + { + bufferRowLength = bufferRowLength_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferImageHeight( uint32_t bufferImageHeight_ ) VULKAN_HPP_NOEXCEPT + { + bufferImageHeight = bufferImageHeight_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & + setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & + setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT + { + imageOffset = imageOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & + setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferImageCopy const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferImageCopy &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( bufferOffset, bufferRowLength, bufferImageHeight, imageSubresource, imageOffset, imageExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferImageCopy const & ) const = default; +#else + bool operator==( BufferImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( bufferOffset == rhs.bufferOffset ) && ( bufferRowLength == rhs.bufferRowLength ) && + ( bufferImageHeight == rhs.bufferImageHeight ) && ( imageSubresource == rhs.imageSubresource ) && + ( imageOffset == rhs.imageOffset ) && ( imageExtent == rhs.imageExtent ); +# endif + } + + bool operator!=( BufferImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset = {}; + uint32_t bufferRowLength = {}; + uint32_t bufferImageHeight = {}; + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource = {}; + VULKAN_HPP_NAMESPACE::Offset3D imageOffset = {}; + VULKAN_HPP_NAMESPACE::Extent3D imageExtent = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferImageCopy ) == sizeof( VkBufferImageCopy ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferImageCopy is not nothrow_move_constructible!" ); + + struct BufferImageCopy2 + { + using NativeType = VkBufferImageCopy2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferImageCopy2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferImageCopy2( VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ = {}, + uint32_t bufferRowLength_ = {}, + uint32_t bufferImageHeight_ = {}, + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_ = {}, + VULKAN_HPP_NAMESPACE::Offset3D imageOffset_ = {}, + VULKAN_HPP_NAMESPACE::Extent3D imageExtent_ = {} ) VULKAN_HPP_NOEXCEPT + : bufferOffset( bufferOffset_ ) + , bufferRowLength( bufferRowLength_ ) + , bufferImageHeight( bufferImageHeight_ ) + , imageSubresource( imageSubresource_ ) + , imageOffset( imageOffset_ ) + , imageExtent( imageExtent_ ) + {} + + VULKAN_HPP_CONSTEXPR BufferImageCopy2( BufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferImageCopy2( VkBufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferImageCopy2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferImageCopy2 & operator=( BufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferImageCopy2 & operator=( VkBufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & + setBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ ) VULKAN_HPP_NOEXCEPT + { + bufferOffset = bufferOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setBufferRowLength( uint32_t bufferRowLength_ ) VULKAN_HPP_NOEXCEPT + { + bufferRowLength = bufferRowLength_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setBufferImageHeight( uint32_t bufferImageHeight_ ) VULKAN_HPP_NOEXCEPT + { + bufferImageHeight = bufferImageHeight_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & + setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & + setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT + { + imageOffset = imageOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & + setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferImageCopy2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferImageCopy2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, bufferOffset, bufferRowLength, bufferImageHeight, imageSubresource, imageOffset, imageExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferImageCopy2 const & ) const = default; +#else + bool operator==( BufferImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bufferOffset == rhs.bufferOffset ) && + ( bufferRowLength == rhs.bufferRowLength ) && ( bufferImageHeight == rhs.bufferImageHeight ) && + ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) && + ( imageExtent == rhs.imageExtent ); +# endif + } + + bool operator!=( BufferImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferImageCopy2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset = {}; + uint32_t bufferRowLength = {}; + uint32_t bufferImageHeight = {}; + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource = {}; + VULKAN_HPP_NAMESPACE::Offset3D imageOffset = {}; + VULKAN_HPP_NAMESPACE::Extent3D imageExtent = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferImageCopy2 ) == sizeof( VkBufferImageCopy2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferImageCopy2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferImageCopy2; + }; + using BufferImageCopy2KHR = BufferImageCopy2; + + struct BufferMemoryBarrier + { + using NativeType = VkBufferMemoryBarrier; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferMemoryBarrier; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferMemoryBarrier( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {}, + VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {}, + uint32_t srcQueueFamilyIndex_ = {}, + uint32_t dstQueueFamilyIndex_ = {}, + VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize size_ = {} ) VULKAN_HPP_NOEXCEPT + : srcAccessMask( srcAccessMask_ ) + , dstAccessMask( dstAccessMask_ ) + , srcQueueFamilyIndex( srcQueueFamilyIndex_ ) + , dstQueueFamilyIndex( dstQueueFamilyIndex_ ) + , buffer( buffer_ ) + , offset( offset_ ) + , size( size_ ) + {} + + VULKAN_HPP_CONSTEXPR BufferMemoryBarrier( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferMemoryBarrier( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferMemoryBarrier & operator=( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferMemoryBarrier & operator=( VkBufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & + setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & + setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & + setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & + setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & + setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferMemoryBarrier &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, srcAccessMask, dstAccessMask, srcQueueFamilyIndex, dstQueueFamilyIndex, buffer, offset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferMemoryBarrier const & ) const = default; +#else + bool operator==( BufferMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcAccessMask == rhs.srcAccessMask ) && + ( dstAccessMask == rhs.dstAccessMask ) && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) && + ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && ( buffer == rhs.buffer ) && + ( offset == rhs.offset ) && ( size == rhs.size ); +# endif + } + + bool operator!=( BufferMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferMemoryBarrier; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {}; + VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {}; + uint32_t srcQueueFamilyIndex = {}; + uint32_t dstQueueFamilyIndex = {}; + VULKAN_HPP_NAMESPACE::Buffer buffer = {}; + VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize size = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferMemoryBarrier is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferMemoryBarrier; + }; + + struct BufferMemoryBarrier2 + { + using NativeType = VkBufferMemoryBarrier2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferMemoryBarrier2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferMemoryBarrier2( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ = {}, + VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ = {}, + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ = {}, + VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ = {}, + uint32_t srcQueueFamilyIndex_ = {}, + uint32_t dstQueueFamilyIndex_ = {}, + VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize size_ = {} ) VULKAN_HPP_NOEXCEPT + : srcStageMask( srcStageMask_ ) + , srcAccessMask( srcAccessMask_ ) + , dstStageMask( dstStageMask_ ) + , dstAccessMask( dstAccessMask_ ) + , srcQueueFamilyIndex( srcQueueFamilyIndex_ ) + , dstQueueFamilyIndex( dstQueueFamilyIndex_ ) + , buffer( buffer_ ) + , offset( offset_ ) + , size( size_ ) + {} + + VULKAN_HPP_CONSTEXPR BufferMemoryBarrier2( BufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferMemoryBarrier2( VkBufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferMemoryBarrier2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferMemoryBarrier2 & operator=( BufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferMemoryBarrier2 & operator=( VkBufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & + setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ ) VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & + setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & + setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ ) VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & + setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & + setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & + setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & + setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferMemoryBarrier2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferMemoryBarrier2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + srcStageMask, + srcAccessMask, + dstStageMask, + dstAccessMask, + srcQueueFamilyIndex, + dstQueueFamilyIndex, + buffer, + offset, + size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferMemoryBarrier2 const & ) const = default; +#else + bool operator==( BufferMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcStageMask == rhs.srcStageMask ) && + ( srcAccessMask == rhs.srcAccessMask ) && ( dstStageMask == rhs.dstStageMask ) && + ( dstAccessMask == rhs.dstAccessMask ) && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) && + ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && ( buffer == rhs.buffer ) && + ( offset == rhs.offset ) && ( size == rhs.size ); +# endif + } + + bool operator!=( BufferMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferMemoryBarrier2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask = {}; + VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask = {}; + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask = {}; + VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask = {}; + uint32_t srcQueueFamilyIndex = {}; + uint32_t dstQueueFamilyIndex = {}; + VULKAN_HPP_NAMESPACE::Buffer buffer = {}; + VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize size = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 ) == sizeof( VkBufferMemoryBarrier2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferMemoryBarrier2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferMemoryBarrier2; + }; + using BufferMemoryBarrier2KHR = BufferMemoryBarrier2; + + struct BufferMemoryRequirementsInfo2 + { + using NativeType = VkBufferMemoryRequirementsInfo2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferMemoryRequirementsInfo2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferMemoryRequirementsInfo2( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {} ) VULKAN_HPP_NOEXCEPT + : buffer( buffer_ ) + {} + + VULKAN_HPP_CONSTEXPR + BufferMemoryRequirementsInfo2( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferMemoryRequirementsInfo2( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferMemoryRequirementsInfo2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferMemoryRequirementsInfo2 & + operator=( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferMemoryRequirementsInfo2 & operator=( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 & + setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, buffer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferMemoryRequirementsInfo2 const & ) const = default; +#else + bool operator==( BufferMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ); +# endif + } + + bool operator!=( BufferMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferMemoryRequirementsInfo2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Buffer buffer = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 ) == + sizeof( VkBufferMemoryRequirementsInfo2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BufferMemoryRequirementsInfo2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferMemoryRequirementsInfo2; + }; + using BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2; + + struct BufferOpaqueCaptureAddressCreateInfo + { + using NativeType = VkBufferOpaqueCaptureAddressCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eBufferOpaqueCaptureAddressCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferOpaqueCaptureAddressCreateInfo( uint64_t opaqueCaptureAddress_ = {} ) VULKAN_HPP_NOEXCEPT + : opaqueCaptureAddress( opaqueCaptureAddress_ ) + {} + + VULKAN_HPP_CONSTEXPR BufferOpaqueCaptureAddressCreateInfo( BufferOpaqueCaptureAddressCreateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + BufferOpaqueCaptureAddressCreateInfo( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferOpaqueCaptureAddressCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferOpaqueCaptureAddressCreateInfo & + operator=( BufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferOpaqueCaptureAddressCreateInfo & + operator=( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo & + setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) VULKAN_HPP_NOEXCEPT + { + opaqueCaptureAddress = opaqueCaptureAddress_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferOpaqueCaptureAddressCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferOpaqueCaptureAddressCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, opaqueCaptureAddress ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferOpaqueCaptureAddressCreateInfo const & ) const = default; +#else + bool operator==( BufferOpaqueCaptureAddressCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( opaqueCaptureAddress == rhs.opaqueCaptureAddress ); +# endif + } + + bool operator!=( BufferOpaqueCaptureAddressCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferOpaqueCaptureAddressCreateInfo; + const void * pNext = {}; + uint64_t opaqueCaptureAddress = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo ) == + sizeof( VkBufferOpaqueCaptureAddressCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "BufferOpaqueCaptureAddressCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferOpaqueCaptureAddressCreateInfo; + }; + using BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo; + + struct BufferViewCreateInfo + { + using NativeType = VkBufferViewCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferViewCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BufferViewCreateInfo( VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, + VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize range_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , buffer( buffer_ ) + , format( format_ ) + , offset( offset_ ) + , range( range_ ) + {} + + VULKAN_HPP_CONSTEXPR BufferViewCreateInfo( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferViewCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BufferViewCreateInfo & operator=( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferViewCreateInfo & operator=( VkBufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & + setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & + setRange( VULKAN_HPP_NAMESPACE::DeviceSize range_ ) VULKAN_HPP_NOEXCEPT + { + range = range_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkBufferViewCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkBufferViewCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, buffer, format, offset, range ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferViewCreateInfo const & ) const = default; +#else + bool operator==( BufferViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( buffer == rhs.buffer ) && + ( format == rhs.format ) && ( offset == rhs.offset ) && ( range == rhs.range ); +# endif + } + + bool operator!=( BufferViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferViewCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::Buffer buffer = {}; + VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize range = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferViewCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = BufferViewCreateInfo; + }; + + struct CalibratedTimestampInfoEXT + { + using NativeType = VkCalibratedTimestampInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCalibratedTimestampInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + CalibratedTimestampInfoEXT( VULKAN_HPP_NAMESPACE::TimeDomainEXT timeDomain_ = + VULKAN_HPP_NAMESPACE::TimeDomainEXT::eDevice ) VULKAN_HPP_NOEXCEPT + : timeDomain( timeDomain_ ) + {} + + VULKAN_HPP_CONSTEXPR + CalibratedTimestampInfoEXT( CalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CalibratedTimestampInfoEXT( VkCalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : CalibratedTimestampInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CalibratedTimestampInfoEXT & operator=( CalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CalibratedTimestampInfoEXT & operator=( VkCalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoEXT & + setTimeDomain( VULKAN_HPP_NAMESPACE::TimeDomainEXT timeDomain_ ) VULKAN_HPP_NOEXCEPT + { + timeDomain = timeDomain_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCalibratedTimestampInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCalibratedTimestampInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, timeDomain ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CalibratedTimestampInfoEXT const & ) const = default; +#else + bool operator==( CalibratedTimestampInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( timeDomain == rhs.timeDomain ); +# endif + } + + bool operator!=( CalibratedTimestampInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCalibratedTimestampInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::TimeDomainEXT timeDomain = VULKAN_HPP_NAMESPACE::TimeDomainEXT::eDevice; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT ) == + sizeof( VkCalibratedTimestampInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CalibratedTimestampInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CalibratedTimestampInfoEXT; + }; + + struct CheckpointData2NV + { + using NativeType = VkCheckpointData2NV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCheckpointData2NV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CheckpointData2NV( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage_ = {}, + void * pCheckpointMarker_ = {} ) VULKAN_HPP_NOEXCEPT + : stage( stage_ ) + , pCheckpointMarker( pCheckpointMarker_ ) + {} + + VULKAN_HPP_CONSTEXPR CheckpointData2NV( CheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CheckpointData2NV( VkCheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT + : CheckpointData2NV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CheckpointData2NV & operator=( CheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CheckpointData2NV & operator=( VkCheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkCheckpointData2NV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCheckpointData2NV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stage, pCheckpointMarker ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CheckpointData2NV const & ) const = default; +#else + bool operator==( CheckpointData2NV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stage == rhs.stage ) && + ( pCheckpointMarker == rhs.pCheckpointMarker ); +# endif + } + + bool operator!=( CheckpointData2NV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCheckpointData2NV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage = {}; + void * pCheckpointMarker = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CheckpointData2NV ) == sizeof( VkCheckpointData2NV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CheckpointData2NV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CheckpointData2NV; + }; + + struct CheckpointDataNV + { + using NativeType = VkCheckpointDataNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCheckpointDataNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CheckpointDataNV( + VULKAN_HPP_NAMESPACE::PipelineStageFlagBits stage_ = VULKAN_HPP_NAMESPACE::PipelineStageFlagBits::eTopOfPipe, + void * pCheckpointMarker_ = {} ) VULKAN_HPP_NOEXCEPT + : stage( stage_ ) + , pCheckpointMarker( pCheckpointMarker_ ) + {} + + VULKAN_HPP_CONSTEXPR CheckpointDataNV( CheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CheckpointDataNV( VkCheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + : CheckpointDataNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CheckpointDataNV & operator=( CheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CheckpointDataNV & operator=( VkCheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkCheckpointDataNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCheckpointDataNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stage, pCheckpointMarker ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CheckpointDataNV const & ) const = default; +#else + bool operator==( CheckpointDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stage == rhs.stage ) && + ( pCheckpointMarker == rhs.pCheckpointMarker ); +# endif + } + + bool operator!=( CheckpointDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCheckpointDataNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineStageFlagBits stage = VULKAN_HPP_NAMESPACE::PipelineStageFlagBits::eTopOfPipe; + void * pCheckpointMarker = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CheckpointDataNV ) == sizeof( VkCheckpointDataNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CheckpointDataNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CheckpointDataNV; + }; + + union ClearColorValue + { + using NativeType = VkClearColorValue; +#if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array & float32_ = {} ) : float32( float32_ ) {} + + VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array & int32_ ) : int32( int32_ ) {} + + VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array & uint32_ ) : uint32( uint32_ ) {} +#endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setFloat32( std::array float32_ ) VULKAN_HPP_NOEXCEPT + { + float32 = float32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setInt32( std::array int32_ ) VULKAN_HPP_NOEXCEPT + { + int32 = int32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setUint32( std::array uint32_ ) VULKAN_HPP_NOEXCEPT + { + uint32 = uint32_; + return *this; + } +#endif /*VULKAN_HPP_NO_UNION_SETTERS*/ + + operator VkClearColorValue const &() const + { + return *reinterpret_cast( this ); + } + + operator VkClearColorValue &() + { + return *reinterpret_cast( this ); + } + + VULKAN_HPP_NAMESPACE::ArrayWrapper1D float32; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D int32; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D uint32; + }; + + struct ClearDepthStencilValue + { + using NativeType = VkClearDepthStencilValue; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ClearDepthStencilValue( float depth_ = {}, uint32_t stencil_ = {} ) VULKAN_HPP_NOEXCEPT + : depth( depth_ ) + , stencil( stencil_ ) + {} + + VULKAN_HPP_CONSTEXPR ClearDepthStencilValue( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClearDepthStencilValue( VkClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT + : ClearDepthStencilValue( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ClearDepthStencilValue & operator=( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClearDepthStencilValue & operator=( VkClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue & setDepth( float depth_ ) VULKAN_HPP_NOEXCEPT + { + depth = depth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue & setStencil( uint32_t stencil_ ) VULKAN_HPP_NOEXCEPT + { + stencil = stencil_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkClearDepthStencilValue const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkClearDepthStencilValue &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( depth, stencil ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ClearDepthStencilValue const & ) const = default; +#else + bool operator==( ClearDepthStencilValue const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( depth == rhs.depth ) && ( stencil == rhs.stencil ); +# endif + } + + bool operator!=( ClearDepthStencilValue const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float depth = {}; + uint32_t stencil = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue ) == + sizeof( VkClearDepthStencilValue ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClearDepthStencilValue is not nothrow_move_constructible!" ); + + union ClearValue + { + using NativeType = VkClearValue; +#if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 ClearValue( VULKAN_HPP_NAMESPACE::ClearColorValue color_ = {} ) : color( color_ ) {} + + VULKAN_HPP_CONSTEXPR_14 ClearValue( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil_ ) + : depthStencil( depthStencil_ ) + {} +#endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClearValue & + setColor( VULKAN_HPP_NAMESPACE::ClearColorValue const & color_ ) VULKAN_HPP_NOEXCEPT + { + color = color_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearValue & + setDepthStencil( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const & depthStencil_ ) VULKAN_HPP_NOEXCEPT + { + depthStencil = depthStencil_; + return *this; + } +#endif /*VULKAN_HPP_NO_UNION_SETTERS*/ + + operator VkClearValue const &() const + { + return *reinterpret_cast( this ); + } + + operator VkClearValue &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + VULKAN_HPP_NAMESPACE::ClearColorValue color; + VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil; +#else + VkClearColorValue color; + VkClearDepthStencilValue depthStencil; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + + struct ClearAttachment + { + using NativeType = VkClearAttachment; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 ClearAttachment( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}, + uint32_t colorAttachment_ = {}, + VULKAN_HPP_NAMESPACE::ClearValue clearValue_ = {} ) VULKAN_HPP_NOEXCEPT + : aspectMask( aspectMask_ ) + , colorAttachment( colorAttachment_ ) + , clearValue( clearValue_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 ClearAttachment( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClearAttachment( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT + : ClearAttachment( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ClearAttachment & operator=( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClearAttachment & operator=( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClearAttachment & + setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearAttachment & setColorAttachment( uint32_t colorAttachment_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachment = colorAttachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearAttachment & + setClearValue( VULKAN_HPP_NAMESPACE::ClearValue const & clearValue_ ) VULKAN_HPP_NOEXCEPT + { + clearValue = clearValue_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkClearAttachment const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkClearAttachment &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std:: + tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( aspectMask, colorAttachment, clearValue ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {}; + uint32_t colorAttachment = {}; + VULKAN_HPP_NAMESPACE::ClearValue clearValue = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClearAttachment ) == sizeof( VkClearAttachment ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClearAttachment is not nothrow_move_constructible!" ); + + struct ClearRect + { + using NativeType = VkClearRect; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ClearRect( VULKAN_HPP_NAMESPACE::Rect2D rect_ = {}, + uint32_t baseArrayLayer_ = {}, + uint32_t layerCount_ = {} ) VULKAN_HPP_NOEXCEPT + : rect( rect_ ) + , baseArrayLayer( baseArrayLayer_ ) + , layerCount( layerCount_ ) + {} + + VULKAN_HPP_CONSTEXPR ClearRect( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClearRect( VkClearRect const & rhs ) VULKAN_HPP_NOEXCEPT : ClearRect( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ClearRect & operator=( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClearRect & operator=( VkClearRect const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClearRect & setRect( VULKAN_HPP_NAMESPACE::Rect2D const & rect_ ) VULKAN_HPP_NOEXCEPT + { + rect = rect_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearRect & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT + { + baseArrayLayer = baseArrayLayer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearRect & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkClearRect const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkClearRect &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( rect, baseArrayLayer, layerCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ClearRect const & ) const = default; +#else + bool operator==( ClearRect const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( rect == rhs.rect ) && ( baseArrayLayer == rhs.baseArrayLayer ) && ( layerCount == rhs.layerCount ); +# endif + } + + bool operator!=( ClearRect const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::Rect2D rect = {}; + uint32_t baseArrayLayer = {}; + uint32_t layerCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClearRect ) == sizeof( VkClearRect ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClearRect is not nothrow_move_constructible!" ); + + struct CoarseSampleLocationNV + { + using NativeType = VkCoarseSampleLocationNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + CoarseSampleLocationNV( uint32_t pixelX_ = {}, uint32_t pixelY_ = {}, uint32_t sample_ = {} ) VULKAN_HPP_NOEXCEPT + : pixelX( pixelX_ ) + , pixelY( pixelY_ ) + , sample( sample_ ) + {} + + VULKAN_HPP_CONSTEXPR CoarseSampleLocationNV( CoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CoarseSampleLocationNV( VkCoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT + : CoarseSampleLocationNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CoarseSampleLocationNV & operator=( CoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CoarseSampleLocationNV & operator=( VkCoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & setPixelX( uint32_t pixelX_ ) VULKAN_HPP_NOEXCEPT + { + pixelX = pixelX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & setPixelY( uint32_t pixelY_ ) VULKAN_HPP_NOEXCEPT + { + pixelY = pixelY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & setSample( uint32_t sample_ ) VULKAN_HPP_NOEXCEPT + { + sample = sample_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCoarseSampleLocationNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCoarseSampleLocationNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( pixelX, pixelY, sample ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CoarseSampleLocationNV const & ) const = default; +#else + bool operator==( CoarseSampleLocationNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( pixelX == rhs.pixelX ) && ( pixelY == rhs.pixelY ) && ( sample == rhs.sample ); +# endif + } + + bool operator!=( CoarseSampleLocationNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t pixelX = {}; + uint32_t pixelY = {}; + uint32_t sample = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV ) == + sizeof( VkCoarseSampleLocationNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CoarseSampleLocationNV is not nothrow_move_constructible!" ); + + struct CoarseSampleOrderCustomNV + { + using NativeType = VkCoarseSampleOrderCustomNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CoarseSampleOrderCustomNV( + VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate_ = + VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV::eNoInvocations, + uint32_t sampleCount_ = {}, + uint32_t sampleLocationCount_ = {}, + const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV * pSampleLocations_ = {} ) VULKAN_HPP_NOEXCEPT + : shadingRate( shadingRate_ ) + , sampleCount( sampleCount_ ) + , sampleLocationCount( sampleLocationCount_ ) + , pSampleLocations( pSampleLocations_ ) + {} + + VULKAN_HPP_CONSTEXPR + CoarseSampleOrderCustomNV( CoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CoarseSampleOrderCustomNV( VkCoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT + : CoarseSampleOrderCustomNV( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CoarseSampleOrderCustomNV( + VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate_, + uint32_t sampleCount_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + sampleLocations_ ) + : shadingRate( shadingRate_ ) + , sampleCount( sampleCount_ ) + , sampleLocationCount( static_cast( sampleLocations_.size() ) ) + , pSampleLocations( sampleLocations_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CoarseSampleOrderCustomNV & operator=( CoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CoarseSampleOrderCustomNV & operator=( VkCoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & + setShadingRate( VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate_ ) VULKAN_HPP_NOEXCEPT + { + shadingRate = shadingRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & setSampleCount( uint32_t sampleCount_ ) VULKAN_HPP_NOEXCEPT + { + sampleCount = sampleCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & + setSampleLocationCount( uint32_t sampleLocationCount_ ) VULKAN_HPP_NOEXCEPT + { + sampleLocationCount = sampleLocationCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & + setPSampleLocations( const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV * pSampleLocations_ ) VULKAN_HPP_NOEXCEPT + { + pSampleLocations = pSampleLocations_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CoarseSampleOrderCustomNV & setSampleLocations( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + sampleLocations_ ) VULKAN_HPP_NOEXCEPT + { + sampleLocationCount = static_cast( sampleLocations_.size() ); + pSampleLocations = sampleLocations_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCoarseSampleOrderCustomNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCoarseSampleOrderCustomNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( shadingRate, sampleCount, sampleLocationCount, pSampleLocations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CoarseSampleOrderCustomNV const & ) const = default; +#else + bool operator==( CoarseSampleOrderCustomNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( shadingRate == rhs.shadingRate ) && ( sampleCount == rhs.sampleCount ) && + ( sampleLocationCount == rhs.sampleLocationCount ) && ( pSampleLocations == rhs.pSampleLocations ); +# endif + } + + bool operator!=( CoarseSampleOrderCustomNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate = + VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV::eNoInvocations; + uint32_t sampleCount = {}; + uint32_t sampleLocationCount = {}; + const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV * pSampleLocations = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV ) == + sizeof( VkCoarseSampleOrderCustomNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CoarseSampleOrderCustomNV is not nothrow_move_constructible!" ); + + struct CommandBufferAllocateInfo + { + using NativeType = VkCommandBufferAllocateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferAllocateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferAllocateInfo( + VULKAN_HPP_NAMESPACE::CommandPool commandPool_ = {}, + VULKAN_HPP_NAMESPACE::CommandBufferLevel level_ = VULKAN_HPP_NAMESPACE::CommandBufferLevel::ePrimary, + uint32_t commandBufferCount_ = {} ) VULKAN_HPP_NOEXCEPT + : commandPool( commandPool_ ) + , level( level_ ) + , commandBufferCount( commandBufferCount_ ) + {} + + VULKAN_HPP_CONSTEXPR + CommandBufferAllocateInfo( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferAllocateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CommandBufferAllocateInfo & operator=( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferAllocateInfo & operator=( VkCommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & + setCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool_ ) VULKAN_HPP_NOEXCEPT + { + commandPool = commandPool_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & + setLevel( VULKAN_HPP_NAMESPACE::CommandBufferLevel level_ ) VULKAN_HPP_NOEXCEPT + { + level = level_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & + setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT + { + commandBufferCount = commandBufferCount_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCommandBufferAllocateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCommandBufferAllocateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, commandPool, level, commandBufferCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferAllocateInfo const & ) const = default; +#else + bool operator==( CommandBufferAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( commandPool == rhs.commandPool ) && + ( level == rhs.level ) && ( commandBufferCount == rhs.commandBufferCount ); +# endif + } + + bool operator!=( CommandBufferAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferAllocateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::CommandPool commandPool = {}; + VULKAN_HPP_NAMESPACE::CommandBufferLevel level = VULKAN_HPP_NAMESPACE::CommandBufferLevel::ePrimary; + uint32_t commandBufferCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo ) == + sizeof( VkCommandBufferAllocateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandBufferAllocateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CommandBufferAllocateInfo; + }; + + struct CommandBufferInheritanceInfo + { + using NativeType = VkCommandBufferInheritanceInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferInheritanceInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceInfo( + VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, + uint32_t subpass_ = {}, + VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryEnable_ = {}, + VULKAN_HPP_NAMESPACE::QueryControlFlags queryFlags_ = {}, + VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ = {} ) VULKAN_HPP_NOEXCEPT + : renderPass( renderPass_ ) + , subpass( subpass_ ) + , framebuffer( framebuffer_ ) + , occlusionQueryEnable( occlusionQueryEnable_ ) + , queryFlags( queryFlags_ ) + , pipelineStatistics( pipelineStatistics_ ) + {} + + VULKAN_HPP_CONSTEXPR + CommandBufferInheritanceInfo( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferInheritanceInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CommandBufferInheritanceInfo & operator=( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceInfo & operator=( VkCommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & + setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT + { + renderPass = renderPass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT + { + subpass = subpass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & + setFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ ) VULKAN_HPP_NOEXCEPT + { + framebuffer = framebuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & + setOcclusionQueryEnable( VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryEnable_ ) VULKAN_HPP_NOEXCEPT + { + occlusionQueryEnable = occlusionQueryEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & + setQueryFlags( VULKAN_HPP_NAMESPACE::QueryControlFlags queryFlags_ ) VULKAN_HPP_NOEXCEPT + { + queryFlags = queryFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & + setPipelineStatistics( VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ ) VULKAN_HPP_NOEXCEPT + { + pipelineStatistics = pipelineStatistics_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCommandBufferInheritanceInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCommandBufferInheritanceInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, renderPass, subpass, framebuffer, occlusionQueryEnable, queryFlags, pipelineStatistics ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferInheritanceInfo const & ) const = default; +#else + bool operator==( CommandBufferInheritanceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPass == rhs.renderPass ) && + ( subpass == rhs.subpass ) && ( framebuffer == rhs.framebuffer ) && + ( occlusionQueryEnable == rhs.occlusionQueryEnable ) && ( queryFlags == rhs.queryFlags ) && + ( pipelineStatistics == rhs.pipelineStatistics ); +# endif + } + + bool operator!=( CommandBufferInheritanceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::RenderPass renderPass = {}; + uint32_t subpass = {}; + VULKAN_HPP_NAMESPACE::Framebuffer framebuffer = {}; + VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryEnable = {}; + VULKAN_HPP_NAMESPACE::QueryControlFlags queryFlags = {}; + VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo ) == + sizeof( VkCommandBufferInheritanceInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "CommandBufferInheritanceInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CommandBufferInheritanceInfo; + }; + + struct CommandBufferBeginInfo + { + using NativeType = VkCommandBufferBeginInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferBeginInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferBeginInfo( + VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags flags_ = {}, + const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * pInheritanceInfo_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , pInheritanceInfo( pInheritanceInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR CommandBufferBeginInfo( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferBeginInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CommandBufferBeginInfo & operator=( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferBeginInfo & operator=( VkCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & + setFlags( VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & setPInheritanceInfo( + const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * pInheritanceInfo_ ) VULKAN_HPP_NOEXCEPT + { + pInheritanceInfo = pInheritanceInfo_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCommandBufferBeginInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCommandBufferBeginInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pInheritanceInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferBeginInfo const & ) const = default; +#else + bool operator==( CommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( pInheritanceInfo == rhs.pInheritanceInfo ); +# endif + } + + bool operator!=( CommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferBeginInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags flags = {}; + const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * pInheritanceInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo ) == + sizeof( VkCommandBufferBeginInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandBufferBeginInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CommandBufferBeginInfo; + }; + + struct CommandBufferInheritanceConditionalRenderingInfoEXT + { + using NativeType = VkCommandBufferInheritanceConditionalRenderingInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceConditionalRenderingInfoEXT( + VULKAN_HPP_NAMESPACE::Bool32 conditionalRenderingEnable_ = {} ) VULKAN_HPP_NOEXCEPT + : conditionalRenderingEnable( conditionalRenderingEnable_ ) + {} + + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceConditionalRenderingInfoEXT( + CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceConditionalRenderingInfoEXT( + VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferInheritanceConditionalRenderingInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CommandBufferInheritanceConditionalRenderingInfoEXT & + operator=( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceConditionalRenderingInfoEXT & + operator=( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceConditionalRenderingInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceConditionalRenderingInfoEXT & + setConditionalRenderingEnable( VULKAN_HPP_NAMESPACE::Bool32 conditionalRenderingEnable_ ) VULKAN_HPP_NOEXCEPT + { + conditionalRenderingEnable = conditionalRenderingEnable_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCommandBufferInheritanceConditionalRenderingInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCommandBufferInheritanceConditionalRenderingInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, conditionalRenderingEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferInheritanceConditionalRenderingInfoEXT const & ) const = default; +#else + bool operator==( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( conditionalRenderingEnable == rhs.conditionalRenderingEnable ); +# endif + } + + bool operator!=( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 conditionalRenderingEnable = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT ) == + sizeof( VkCommandBufferInheritanceConditionalRenderingInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT>::value, + "CommandBufferInheritanceConditionalRenderingInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CommandBufferInheritanceConditionalRenderingInfoEXT; + }; + + struct CommandBufferInheritanceRenderPassTransformInfoQCOM + { + using NativeType = VkCommandBufferInheritanceRenderPassTransformInfoQCOM; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderPassTransformInfoQCOM( + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ = + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, + VULKAN_HPP_NAMESPACE::Rect2D renderArea_ = {} ) VULKAN_HPP_NOEXCEPT + : transform( transform_ ) + , renderArea( renderArea_ ) + {} + + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderPassTransformInfoQCOM( + CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceRenderPassTransformInfoQCOM( + VkCommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferInheritanceRenderPassTransformInfoQCOM( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CommandBufferInheritanceRenderPassTransformInfoQCOM & + operator=( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceRenderPassTransformInfoQCOM & + operator=( VkCommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM & + setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM & + setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT + { + renderArea = renderArea_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, transform, renderArea ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferInheritanceRenderPassTransformInfoQCOM const & ) const = default; +#else + bool operator==( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transform == rhs.transform ) && + ( renderArea == rhs.renderArea ); +# endif + } + + bool operator!=( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity; + VULKAN_HPP_NAMESPACE::Rect2D renderArea = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM ) == + sizeof( VkCommandBufferInheritanceRenderPassTransformInfoQCOM ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM>::value, + "CommandBufferInheritanceRenderPassTransformInfoQCOM is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CommandBufferInheritanceRenderPassTransformInfoQCOM; + }; + + struct CommandBufferInheritanceRenderingInfo + { + using NativeType = VkCommandBufferInheritanceRenderingInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eCommandBufferInheritanceRenderingInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderingInfo( + VULKAN_HPP_NAMESPACE::RenderingFlags flags_ = {}, + uint32_t viewMask_ = {}, + uint32_t colorAttachmentCount_ = {}, + const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ = {}, + VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1 ) + VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , viewMask( viewMask_ ) + , colorAttachmentCount( colorAttachmentCount_ ) + , pColorAttachmentFormats( pColorAttachmentFormats_ ) + , depthAttachmentFormat( depthAttachmentFormat_ ) + , stencilAttachmentFormat( stencilAttachmentFormat_ ) + , rasterizationSamples( rasterizationSamples_ ) + {} + + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderingInfo( CommandBufferInheritanceRenderingInfo const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceRenderingInfo( VkCommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferInheritanceRenderingInfo( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CommandBufferInheritanceRenderingInfo( + VULKAN_HPP_NAMESPACE::RenderingFlags flags_, + uint32_t viewMask_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & colorAttachmentFormats_, + VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1 ) + : flags( flags_ ) + , viewMask( viewMask_ ) + , colorAttachmentCount( static_cast( colorAttachmentFormats_.size() ) ) + , pColorAttachmentFormats( colorAttachmentFormats_.data() ) + , depthAttachmentFormat( depthAttachmentFormat_ ) + , stencilAttachmentFormat( stencilAttachmentFormat_ ) + , rasterizationSamples( rasterizationSamples_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CommandBufferInheritanceRenderingInfo & + operator=( CommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceRenderingInfo & + operator=( VkCommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & + setFlags( VULKAN_HPP_NAMESPACE::RenderingFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & + setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT + { + viewMask = viewMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & + setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & + setPColorAttachmentFormats( const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT + { + pColorAttachmentFormats = pColorAttachmentFormats_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CommandBufferInheritanceRenderingInfo & setColorAttachmentFormats( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachmentFormats_.size() ); + pColorAttachmentFormats = colorAttachmentFormats_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & + setDepthAttachmentFormat( VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT + { + depthAttachmentFormat = depthAttachmentFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & + setStencilAttachmentFormat( VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT + { + stencilAttachmentFormat = stencilAttachmentFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & + setRasterizationSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ ) VULKAN_HPP_NOEXCEPT + { + rasterizationSamples = rasterizationSamples_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCommandBufferInheritanceRenderingInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCommandBufferInheritanceRenderingInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + viewMask, + colorAttachmentCount, + pColorAttachmentFormats, + depthAttachmentFormat, + stencilAttachmentFormat, + rasterizationSamples ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferInheritanceRenderingInfo const & ) const = default; +#else + bool operator==( CommandBufferInheritanceRenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( viewMask == rhs.viewMask ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) && + ( pColorAttachmentFormats == rhs.pColorAttachmentFormats ) && + ( depthAttachmentFormat == rhs.depthAttachmentFormat ) && + ( stencilAttachmentFormat == rhs.stencilAttachmentFormat ) && + ( rasterizationSamples == rhs.rasterizationSamples ); +# endif + } + + bool operator!=( CommandBufferInheritanceRenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceRenderingInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::RenderingFlags flags = {}; + uint32_t viewMask = {}; + uint32_t colorAttachmentCount = {}; + const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats = {}; + VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo ) == + sizeof( VkCommandBufferInheritanceRenderingInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "CommandBufferInheritanceRenderingInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CommandBufferInheritanceRenderingInfo; + }; + using CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo; + + struct Viewport + { + using NativeType = VkViewport; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR Viewport( float x_ = {}, + float y_ = {}, + float width_ = {}, + float height_ = {}, + float minDepth_ = {}, + float maxDepth_ = {} ) VULKAN_HPP_NOEXCEPT + : x( x_ ) + , y( y_ ) + , width( width_ ) + , height( height_ ) + , minDepth( minDepth_ ) + , maxDepth( maxDepth_ ) + {} + + VULKAN_HPP_CONSTEXPR Viewport( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Viewport( VkViewport const & rhs ) VULKAN_HPP_NOEXCEPT : Viewport( *reinterpret_cast( &rhs ) ) {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + Viewport & operator=( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Viewport & operator=( VkViewport const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Viewport & setX( float x_ ) VULKAN_HPP_NOEXCEPT + { + x = x_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Viewport & setY( float y_ ) VULKAN_HPP_NOEXCEPT + { + y = y_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Viewport & setWidth( float width_ ) VULKAN_HPP_NOEXCEPT + { + width = width_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Viewport & setHeight( float height_ ) VULKAN_HPP_NOEXCEPT + { + height = height_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Viewport & setMinDepth( float minDepth_ ) VULKAN_HPP_NOEXCEPT + { + minDepth = minDepth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Viewport & setMaxDepth( float maxDepth_ ) VULKAN_HPP_NOEXCEPT + { + maxDepth = maxDepth_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkViewport const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkViewport &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( x, y, width, height, minDepth, maxDepth ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Viewport const & ) const = default; +#else + bool operator==( Viewport const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( x == rhs.x ) && ( y == rhs.y ) && ( width == rhs.width ) && ( height == rhs.height ) && + ( minDepth == rhs.minDepth ) && ( maxDepth == rhs.maxDepth ); +# endif + } + + bool operator!=( Viewport const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float x = {}; + float y = {}; + float width = {}; + float height = {}; + float minDepth = {}; + float maxDepth = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Viewport ) == sizeof( VkViewport ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Viewport is not nothrow_move_constructible!" ); + + struct CommandBufferInheritanceViewportScissorInfoNV + { + using NativeType = VkCommandBufferInheritanceViewportScissorInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eCommandBufferInheritanceViewportScissorInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceViewportScissorInfoNV( + VULKAN_HPP_NAMESPACE::Bool32 viewportScissor2D_ = {}, + uint32_t viewportDepthCount_ = {}, + const VULKAN_HPP_NAMESPACE::Viewport * pViewportDepths_ = {} ) VULKAN_HPP_NOEXCEPT + : viewportScissor2D( viewportScissor2D_ ) + , viewportDepthCount( viewportDepthCount_ ) + , pViewportDepths( pViewportDepths_ ) + {} + + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceViewportScissorInfoNV( + CommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceViewportScissorInfoNV( VkCommandBufferInheritanceViewportScissorInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : CommandBufferInheritanceViewportScissorInfoNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CommandBufferInheritanceViewportScissorInfoNV & + operator=( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceViewportScissorInfoNV & + operator=( VkCommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV & + setViewportScissor2D( VULKAN_HPP_NAMESPACE::Bool32 viewportScissor2D_ ) VULKAN_HPP_NOEXCEPT + { + viewportScissor2D = viewportScissor2D_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV & + setViewportDepthCount( uint32_t viewportDepthCount_ ) VULKAN_HPP_NOEXCEPT + { + viewportDepthCount = viewportDepthCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV & + setPViewportDepths( const VULKAN_HPP_NAMESPACE::Viewport * pViewportDepths_ ) VULKAN_HPP_NOEXCEPT + { + pViewportDepths = pViewportDepths_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCommandBufferInheritanceViewportScissorInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCommandBufferInheritanceViewportScissorInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, viewportScissor2D, viewportDepthCount, pViewportDepths ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferInheritanceViewportScissorInfoNV const & ) const = default; +#else + bool operator==( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewportScissor2D == rhs.viewportScissor2D ) && + ( viewportDepthCount == rhs.viewportDepthCount ) && ( pViewportDepths == rhs.pViewportDepths ); +# endif + } + + bool operator!=( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceViewportScissorInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 viewportScissor2D = {}; + uint32_t viewportDepthCount = {}; + const VULKAN_HPP_NAMESPACE::Viewport * pViewportDepths = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV ) == + sizeof( VkCommandBufferInheritanceViewportScissorInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "CommandBufferInheritanceViewportScissorInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CommandBufferInheritanceViewportScissorInfoNV; + }; + + struct CommandBufferSubmitInfo + { + using NativeType = VkCommandBufferSubmitInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferSubmitInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferSubmitInfo( VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer_ = {}, + uint32_t deviceMask_ = {} ) VULKAN_HPP_NOEXCEPT + : commandBuffer( commandBuffer_ ) + , deviceMask( deviceMask_ ) + {} + + VULKAN_HPP_CONSTEXPR CommandBufferSubmitInfo( CommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferSubmitInfo( VkCommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferSubmitInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CommandBufferSubmitInfo & operator=( CommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferSubmitInfo & operator=( VkCommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo & + setCommandBuffer( VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer_ ) VULKAN_HPP_NOEXCEPT + { + commandBuffer = commandBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT + { + deviceMask = deviceMask_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCommandBufferSubmitInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCommandBufferSubmitInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, commandBuffer, deviceMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferSubmitInfo const & ) const = default; +#else + bool operator==( CommandBufferSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( commandBuffer == rhs.commandBuffer ) && + ( deviceMask == rhs.deviceMask ); +# endif + } + + bool operator!=( CommandBufferSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferSubmitInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer = {}; + uint32_t deviceMask = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo ) == + sizeof( VkCommandBufferSubmitInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandBufferSubmitInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CommandBufferSubmitInfo; + }; + using CommandBufferSubmitInfoKHR = CommandBufferSubmitInfo; + + struct CommandPoolCreateInfo + { + using NativeType = VkCommandPoolCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandPoolCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandPoolCreateInfo( VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags_ = {}, + uint32_t queueFamilyIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , queueFamilyIndex( queueFamilyIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR CommandPoolCreateInfo( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandPoolCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CommandPoolCreateInfo & operator=( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandPoolCreateInfo & operator=( VkCommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & + setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCommandPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCommandPoolCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, queueFamilyIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandPoolCreateInfo const & ) const = default; +#else + bool operator==( CommandPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( queueFamilyIndex == rhs.queueFamilyIndex ); +# endif + } + + bool operator!=( CommandPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandPoolCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags = {}; + uint32_t queueFamilyIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandPoolCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CommandPoolCreateInfo; + }; + + struct SpecializationMapEntry + { + using NativeType = VkSpecializationMapEntry; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SpecializationMapEntry( uint32_t constantID_ = {}, uint32_t offset_ = {}, size_t size_ = {} ) VULKAN_HPP_NOEXCEPT + : constantID( constantID_ ) + , offset( offset_ ) + , size( size_ ) + {} + + VULKAN_HPP_CONSTEXPR SpecializationMapEntry( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SpecializationMapEntry( VkSpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT + : SpecializationMapEntry( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SpecializationMapEntry & operator=( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SpecializationMapEntry & operator=( VkSpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setConstantID( uint32_t constantID_ ) VULKAN_HPP_NOEXCEPT + { + constantID = constantID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setSize( size_t size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSpecializationMapEntry const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSpecializationMapEntry &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( constantID, offset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SpecializationMapEntry const & ) const = default; +#else + bool operator==( SpecializationMapEntry const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( constantID == rhs.constantID ) && ( offset == rhs.offset ) && ( size == rhs.size ); +# endif + } + + bool operator!=( SpecializationMapEntry const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t constantID = {}; + uint32_t offset = {}; + size_t size = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SpecializationMapEntry ) == + sizeof( VkSpecializationMapEntry ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SpecializationMapEntry is not nothrow_move_constructible!" ); + + struct SpecializationInfo + { + using NativeType = VkSpecializationInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SpecializationInfo( uint32_t mapEntryCount_ = {}, + const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * pMapEntries_ = {}, + size_t dataSize_ = {}, + const void * pData_ = {} ) VULKAN_HPP_NOEXCEPT + : mapEntryCount( mapEntryCount_ ) + , pMapEntries( pMapEntries_ ) + , dataSize( dataSize_ ) + , pData( pData_ ) + {} + + VULKAN_HPP_CONSTEXPR SpecializationInfo( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SpecializationInfo( VkSpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SpecializationInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + SpecializationInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::SpecializationMapEntry> const & mapEntries_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & data_ = {} ) + : mapEntryCount( static_cast( mapEntries_.size() ) ) + , pMapEntries( mapEntries_.data() ) + , dataSize( data_.size() * sizeof( T ) ) + , pData( data_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SpecializationInfo & operator=( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SpecializationInfo & operator=( VkSpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setMapEntryCount( uint32_t mapEntryCount_ ) VULKAN_HPP_NOEXCEPT + { + mapEntryCount = mapEntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & + setPMapEntries( const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * pMapEntries_ ) VULKAN_HPP_NOEXCEPT + { + pMapEntries = pMapEntries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SpecializationInfo & setMapEntries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + mapEntries_ ) VULKAN_HPP_NOEXCEPT + { + mapEntryCount = static_cast( mapEntries_.size() ); + pMapEntries = mapEntries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setDataSize( size_t dataSize_ ) VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + SpecializationInfo & + setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & data_ ) VULKAN_HPP_NOEXCEPT + { + dataSize = data_.size() * sizeof( T ); + pData = data_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSpecializationInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSpecializationInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( mapEntryCount, pMapEntries, dataSize, pData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SpecializationInfo const & ) const = default; +#else + bool operator==( SpecializationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( mapEntryCount == rhs.mapEntryCount ) && ( pMapEntries == rhs.pMapEntries ) && + ( dataSize == rhs.dataSize ) && ( pData == rhs.pData ); +# endif + } + + bool operator!=( SpecializationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t mapEntryCount = {}; + const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * pMapEntries = {}; + size_t dataSize = {}; + const void * pData = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SpecializationInfo ) == sizeof( VkSpecializationInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SpecializationInfo is not nothrow_move_constructible!" ); + + struct PipelineShaderStageCreateInfo + { + using NativeType = VkPipelineShaderStageCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineShaderStageCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage_ = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex, + VULKAN_HPP_NAMESPACE::ShaderModule module_ = {}, + const char * pName_ = {}, + const VULKAN_HPP_NAMESPACE::SpecializationInfo * pSpecializationInfo_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , stage( stage_ ) + , module( module_ ) + , pName( pName_ ) + , pSpecializationInfo( pSpecializationInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR + PipelineShaderStageCreateInfo( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineShaderStageCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineShaderStageCreateInfo & + operator=( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineShaderStageCreateInfo & operator=( VkPipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & + setStage( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage_ ) VULKAN_HPP_NOEXCEPT + { + stage = stage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & + setModule( VULKAN_HPP_NAMESPACE::ShaderModule module_ ) VULKAN_HPP_NOEXCEPT + { + module = module_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT + { + pName = pName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPSpecializationInfo( + const VULKAN_HPP_NAMESPACE::SpecializationInfo * pSpecializationInfo_ ) VULKAN_HPP_NOEXCEPT + { + pSpecializationInfo = pSpecializationInfo_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineShaderStageCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineShaderStageCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, stage, module, pName, pSpecializationInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = stage <=> rhs.stage; cmp != 0 ) + return cmp; + if ( auto cmp = module <=> rhs.module; cmp != 0 ) + return cmp; + if ( pName != rhs.pName ) + if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = pSpecializationInfo <=> rhs.pSpecializationInfo; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stage == rhs.stage ) && + ( module == rhs.module ) && ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) ) && + ( pSpecializationInfo == rhs.pSpecializationInfo ); + } + + bool operator!=( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineShaderStageCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex; + VULKAN_HPP_NAMESPACE::ShaderModule module = {}; + const char * pName = {}; + const VULKAN_HPP_NAMESPACE::SpecializationInfo * pSpecializationInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo ) == + sizeof( VkPipelineShaderStageCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineShaderStageCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineShaderStageCreateInfo; + }; + + struct ComputePipelineCreateInfo + { + using NativeType = VkComputePipelineCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eComputePipelineCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ComputePipelineCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo stage_ = {}, + VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, + VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , stage( stage_ ) + , layout( layout_ ) + , basePipelineHandle( basePipelineHandle_ ) + , basePipelineIndex( basePipelineIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR + ComputePipelineCreateInfo( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ComputePipelineCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ComputePipelineCreateInfo & operator=( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ComputePipelineCreateInfo & operator=( VkComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & + setStage( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const & stage_ ) VULKAN_HPP_NOEXCEPT + { + stage = stage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & + setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & + setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT + { + basePipelineHandle = basePipelineHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & + setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT + { + basePipelineIndex = basePipelineIndex_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkComputePipelineCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkComputePipelineCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, stage, layout, basePipelineHandle, basePipelineIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ComputePipelineCreateInfo const & ) const = default; +#else + bool operator==( ComputePipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stage == rhs.stage ) && + ( layout == rhs.layout ) && ( basePipelineHandle == rhs.basePipelineHandle ) && + ( basePipelineIndex == rhs.basePipelineIndex ); +# endif + } + + bool operator!=( ComputePipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eComputePipelineCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo stage = {}; + VULKAN_HPP_NAMESPACE::PipelineLayout layout = {}; + VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle = {}; + int32_t basePipelineIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo ) == + sizeof( VkComputePipelineCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ComputePipelineCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ComputePipelineCreateInfo; + }; + + struct ConditionalRenderingBeginInfoEXT + { + using NativeType = VkConditionalRenderingBeginInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eConditionalRenderingBeginInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ConditionalRenderingBeginInfoEXT( + VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, + VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT flags_ = {} ) VULKAN_HPP_NOEXCEPT + : buffer( buffer_ ) + , offset( offset_ ) + , flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR + ConditionalRenderingBeginInfoEXT( ConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ConditionalRenderingBeginInfoEXT( VkConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ConditionalRenderingBeginInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ConditionalRenderingBeginInfoEXT & + operator=( ConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ConditionalRenderingBeginInfoEXT & operator=( VkConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & + setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & + setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkConditionalRenderingBeginInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkConditionalRenderingBeginInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, buffer, offset, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ConditionalRenderingBeginInfoEXT const & ) const = default; +#else + bool operator==( ConditionalRenderingBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ) && ( offset == rhs.offset ) && + ( flags == rhs.flags ); +# endif + } + + bool operator!=( ConditionalRenderingBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eConditionalRenderingBeginInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Buffer buffer = {}; + VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; + VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT ) == + sizeof( VkConditionalRenderingBeginInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ConditionalRenderingBeginInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ConditionalRenderingBeginInfoEXT; + }; + + struct ConformanceVersion + { + using NativeType = VkConformanceVersion; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ConformanceVersion( uint8_t major_ = {}, + uint8_t minor_ = {}, + uint8_t subminor_ = {}, + uint8_t patch_ = {} ) VULKAN_HPP_NOEXCEPT + : major( major_ ) + , minor( minor_ ) + , subminor( subminor_ ) + , patch( patch_ ) + {} + + VULKAN_HPP_CONSTEXPR ConformanceVersion( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ConformanceVersion( VkConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT + : ConformanceVersion( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ConformanceVersion & operator=( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ConformanceVersion & operator=( VkConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setMajor( uint8_t major_ ) VULKAN_HPP_NOEXCEPT + { + major = major_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setMinor( uint8_t minor_ ) VULKAN_HPP_NOEXCEPT + { + minor = minor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setSubminor( uint8_t subminor_ ) VULKAN_HPP_NOEXCEPT + { + subminor = subminor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setPatch( uint8_t patch_ ) VULKAN_HPP_NOEXCEPT + { + patch = patch_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkConformanceVersion const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkConformanceVersion &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( major, minor, subminor, patch ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ConformanceVersion const & ) const = default; +#else + bool operator==( ConformanceVersion const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( major == rhs.major ) && ( minor == rhs.minor ) && ( subminor == rhs.subminor ) && ( patch == rhs.patch ); +# endif + } + + bool operator!=( ConformanceVersion const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint8_t major = {}; + uint8_t minor = {}; + uint8_t subminor = {}; + uint8_t patch = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ConformanceVersion ) == sizeof( VkConformanceVersion ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ConformanceVersion is not nothrow_move_constructible!" ); + using ConformanceVersionKHR = ConformanceVersion; + + struct CooperativeMatrixPropertiesNV + { + using NativeType = VkCooperativeMatrixPropertiesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCooperativeMatrixPropertiesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesNV( + uint32_t MSize_ = {}, + uint32_t NSize_ = {}, + uint32_t KSize_ = {}, + VULKAN_HPP_NAMESPACE::ComponentTypeNV AType_ = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16, + VULKAN_HPP_NAMESPACE::ComponentTypeNV BType_ = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16, + VULKAN_HPP_NAMESPACE::ComponentTypeNV CType_ = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16, + VULKAN_HPP_NAMESPACE::ComponentTypeNV DType_ = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16, + VULKAN_HPP_NAMESPACE::ScopeNV scope_ = VULKAN_HPP_NAMESPACE::ScopeNV::eDevice ) VULKAN_HPP_NOEXCEPT + : MSize( MSize_ ) + , NSize( NSize_ ) + , KSize( KSize_ ) + , AType( AType_ ) + , BType( BType_ ) + , CType( CType_ ) + , DType( DType_ ) + , scope( scope_ ) + {} + + VULKAN_HPP_CONSTEXPR + CooperativeMatrixPropertiesNV( CooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CooperativeMatrixPropertiesNV( VkCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : CooperativeMatrixPropertiesNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CooperativeMatrixPropertiesNV & + operator=( CooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CooperativeMatrixPropertiesNV & operator=( VkCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV & setMSize( uint32_t MSize_ ) VULKAN_HPP_NOEXCEPT + { + MSize = MSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV & setNSize( uint32_t NSize_ ) VULKAN_HPP_NOEXCEPT + { + NSize = NSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV & setKSize( uint32_t KSize_ ) VULKAN_HPP_NOEXCEPT + { + KSize = KSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV & + setAType( VULKAN_HPP_NAMESPACE::ComponentTypeNV AType_ ) VULKAN_HPP_NOEXCEPT + { + AType = AType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV & + setBType( VULKAN_HPP_NAMESPACE::ComponentTypeNV BType_ ) VULKAN_HPP_NOEXCEPT + { + BType = BType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV & + setCType( VULKAN_HPP_NAMESPACE::ComponentTypeNV CType_ ) VULKAN_HPP_NOEXCEPT + { + CType = CType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV & + setDType( VULKAN_HPP_NAMESPACE::ComponentTypeNV DType_ ) VULKAN_HPP_NOEXCEPT + { + DType = DType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV & + setScope( VULKAN_HPP_NAMESPACE::ScopeNV scope_ ) VULKAN_HPP_NOEXCEPT + { + scope = scope_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCooperativeMatrixPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCooperativeMatrixPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, MSize, NSize, KSize, AType, BType, CType, DType, scope ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CooperativeMatrixPropertiesNV const & ) const = default; +#else + bool operator==( CooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( MSize == rhs.MSize ) && ( NSize == rhs.NSize ) && + ( KSize == rhs.KSize ) && ( AType == rhs.AType ) && ( BType == rhs.BType ) && ( CType == rhs.CType ) && + ( DType == rhs.DType ) && ( scope == rhs.scope ); +# endif + } + + bool operator!=( CooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCooperativeMatrixPropertiesNV; + void * pNext = {}; + uint32_t MSize = {}; + uint32_t NSize = {}; + uint32_t KSize = {}; + VULKAN_HPP_NAMESPACE::ComponentTypeNV AType = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16; + VULKAN_HPP_NAMESPACE::ComponentTypeNV BType = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16; + VULKAN_HPP_NAMESPACE::ComponentTypeNV CType = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16; + VULKAN_HPP_NAMESPACE::ComponentTypeNV DType = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16; + VULKAN_HPP_NAMESPACE::ScopeNV scope = VULKAN_HPP_NAMESPACE::ScopeNV::eDevice; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV ) == + sizeof( VkCooperativeMatrixPropertiesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "CooperativeMatrixPropertiesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CooperativeMatrixPropertiesNV; + }; + + struct CopyAccelerationStructureInfoKHR + { + using NativeType = VkCopyAccelerationStructureInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyAccelerationStructureInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyAccelerationStructureInfoKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src_ = {}, + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst_ = {}, + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ = + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone ) VULKAN_HPP_NOEXCEPT + : src( src_ ) + , dst( dst_ ) + , mode( mode_ ) + {} + + VULKAN_HPP_CONSTEXPR + CopyAccelerationStructureInfoKHR( CopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyAccelerationStructureInfoKHR( VkCopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyAccelerationStructureInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CopyAccelerationStructureInfoKHR & + operator=( CopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyAccelerationStructureInfoKHR & operator=( VkCopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & + setSrc( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src_ ) VULKAN_HPP_NOEXCEPT + { + src = src_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & + setDst( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst_ ) VULKAN_HPP_NOEXCEPT + { + dst = dst_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & + setMode( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCopyAccelerationStructureInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCopyAccelerationStructureInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, src, dst, mode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyAccelerationStructureInfoKHR const & ) const = default; +#else + bool operator==( CopyAccelerationStructureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( src == rhs.src ) && ( dst == rhs.dst ) && + ( mode == rhs.mode ); +# endif + } + + bool operator!=( CopyAccelerationStructureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyAccelerationStructureInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst = {}; + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode = + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR ) == + sizeof( VkCopyAccelerationStructureInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "CopyAccelerationStructureInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CopyAccelerationStructureInfoKHR; + }; + + struct CopyAccelerationStructureToMemoryInfoKHR + { + using NativeType = VkCopyAccelerationStructureToMemoryInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eCopyAccelerationStructureToMemoryInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR( + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src_ = {}, + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR dst_ = {}, + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ = + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone ) VULKAN_HPP_NOEXCEPT + : src( src_ ) + , dst( dst_ ) + , mode( mode_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR( + CopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyAccelerationStructureToMemoryInfoKHR( VkCopyAccelerationStructureToMemoryInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : CopyAccelerationStructureToMemoryInfoKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CopyAccelerationStructureToMemoryInfoKHR & + operator=( CopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyAccelerationStructureToMemoryInfoKHR & + operator=( VkCopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR & + setSrc( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src_ ) VULKAN_HPP_NOEXCEPT + { + src = src_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR & + setDst( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const & dst_ ) VULKAN_HPP_NOEXCEPT + { + dst = dst_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR & + setMode( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCopyAccelerationStructureToMemoryInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCopyAccelerationStructureToMemoryInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, src, dst, mode ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyAccelerationStructureToMemoryInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src = {}; + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR dst = {}; + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode = + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR ) == + sizeof( VkCopyAccelerationStructureToMemoryInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "CopyAccelerationStructureToMemoryInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CopyAccelerationStructureToMemoryInfoKHR; + }; + + struct CopyBufferInfo2 + { + using NativeType = VkCopyBufferInfo2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyBufferInfo2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyBufferInfo2( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ = {}, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ = {}, + uint32_t regionCount_ = {}, + const VULKAN_HPP_NAMESPACE::BufferCopy2 * pRegions_ = {} ) VULKAN_HPP_NOEXCEPT + : srcBuffer( srcBuffer_ ) + , dstBuffer( dstBuffer_ ) + , regionCount( regionCount_ ) + , pRegions( pRegions_ ) + {} + + VULKAN_HPP_CONSTEXPR CopyBufferInfo2( CopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyBufferInfo2( VkCopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyBufferInfo2( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyBufferInfo2( + VULKAN_HPP_NAMESPACE::Buffer srcBuffer_, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) + : srcBuffer( srcBuffer_ ) + , dstBuffer( dstBuffer_ ) + , regionCount( static_cast( regions_.size() ) ) + , pRegions( regions_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CopyBufferInfo2 & operator=( CopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyBufferInfo2 & operator=( VkCopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & + setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT + { + srcBuffer = srcBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & + setDstBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ ) VULKAN_HPP_NOEXCEPT + { + dstBuffer = dstBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & + setPRegions( const VULKAN_HPP_NAMESPACE::BufferCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyBufferInfo2 & setRegions( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) + VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCopyBufferInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCopyBufferInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcBuffer, dstBuffer, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyBufferInfo2 const & ) const = default; +#else + bool operator==( CopyBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcBuffer == rhs.srcBuffer ) && + ( dstBuffer == rhs.dstBuffer ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( CopyBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyBufferInfo2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Buffer srcBuffer = {}; + VULKAN_HPP_NAMESPACE::Buffer dstBuffer = {}; + uint32_t regionCount = {}; + const VULKAN_HPP_NAMESPACE::BufferCopy2 * pRegions = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyBufferInfo2 ) == sizeof( VkCopyBufferInfo2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyBufferInfo2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CopyBufferInfo2; + }; + using CopyBufferInfo2KHR = CopyBufferInfo2; + + struct CopyBufferToImageInfo2 + { + using NativeType = VkCopyBufferToImageInfo2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyBufferToImageInfo2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyBufferToImageInfo2( + VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ = {}, + VULKAN_HPP_NAMESPACE::Image dstImage_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + uint32_t regionCount_ = {}, + const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_ = {} ) VULKAN_HPP_NOEXCEPT + : srcBuffer( srcBuffer_ ) + , dstImage( dstImage_ ) + , dstImageLayout( dstImageLayout_ ) + , regionCount( regionCount_ ) + , pRegions( pRegions_ ) + {} + + VULKAN_HPP_CONSTEXPR CopyBufferToImageInfo2( CopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyBufferToImageInfo2( VkCopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyBufferToImageInfo2( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyBufferToImageInfo2( + VULKAN_HPP_NAMESPACE::Buffer srcBuffer_, + VULKAN_HPP_NAMESPACE::Image dstImage_, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) + : srcBuffer( srcBuffer_ ) + , dstImage( dstImage_ ) + , dstImageLayout( dstImageLayout_ ) + , regionCount( static_cast( regions_.size() ) ) + , pRegions( regions_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CopyBufferToImageInfo2 & operator=( CopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyBufferToImageInfo2 & operator=( VkCopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & + setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT + { + srcBuffer = srcBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & + setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & + setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & + setPRegions( const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyBufferToImageInfo2 & setRegions( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) + VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCopyBufferToImageInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCopyBufferToImageInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyBufferToImageInfo2 const & ) const = default; +#else + bool operator==( CopyBufferToImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcBuffer == rhs.srcBuffer ) && + ( dstImage == rhs.dstImage ) && ( dstImageLayout == rhs.dstImageLayout ) && + ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( CopyBufferToImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyBufferToImageInfo2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Buffer srcBuffer = {}; + VULKAN_HPP_NAMESPACE::Image dstImage = {}; + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + uint32_t regionCount = {}; + const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 ) == + sizeof( VkCopyBufferToImageInfo2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyBufferToImageInfo2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CopyBufferToImageInfo2; + }; + using CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2; + + struct CopyCommandTransformInfoQCOM + { + using NativeType = VkCopyCommandTransformInfoQCOM; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyCommandTransformInfoQCOM; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + CopyCommandTransformInfoQCOM( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ = + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity ) VULKAN_HPP_NOEXCEPT + : transform( transform_ ) + {} + + VULKAN_HPP_CONSTEXPR + CopyCommandTransformInfoQCOM( CopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyCommandTransformInfoQCOM( VkCopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyCommandTransformInfoQCOM( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CopyCommandTransformInfoQCOM & operator=( CopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyCommandTransformInfoQCOM & operator=( VkCopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyCommandTransformInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyCommandTransformInfoQCOM & + setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCopyCommandTransformInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCopyCommandTransformInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, transform ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyCommandTransformInfoQCOM const & ) const = default; +#else + bool operator==( CopyCommandTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transform == rhs.transform ); +# endif + } + + bool operator!=( CopyCommandTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyCommandTransformInfoQCOM; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM ) == + sizeof( VkCopyCommandTransformInfoQCOM ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "CopyCommandTransformInfoQCOM is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CopyCommandTransformInfoQCOM; + }; + + struct CopyDescriptorSet + { + using NativeType = VkCopyDescriptorSet; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyDescriptorSet; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyDescriptorSet( VULKAN_HPP_NAMESPACE::DescriptorSet srcSet_ = {}, + uint32_t srcBinding_ = {}, + uint32_t srcArrayElement_ = {}, + VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ = {}, + uint32_t dstBinding_ = {}, + uint32_t dstArrayElement_ = {}, + uint32_t descriptorCount_ = {} ) VULKAN_HPP_NOEXCEPT + : srcSet( srcSet_ ) + , srcBinding( srcBinding_ ) + , srcArrayElement( srcArrayElement_ ) + , dstSet( dstSet_ ) + , dstBinding( dstBinding_ ) + , dstArrayElement( dstArrayElement_ ) + , descriptorCount( descriptorCount_ ) + {} + + VULKAN_HPP_CONSTEXPR CopyDescriptorSet( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyDescriptorSet( VkCopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyDescriptorSet( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CopyDescriptorSet & operator=( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyDescriptorSet & operator=( VkCopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & + setSrcSet( VULKAN_HPP_NAMESPACE::DescriptorSet srcSet_ ) VULKAN_HPP_NOEXCEPT + { + srcSet = srcSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcBinding( uint32_t srcBinding_ ) VULKAN_HPP_NOEXCEPT + { + srcBinding = srcBinding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcArrayElement( uint32_t srcArrayElement_ ) VULKAN_HPP_NOEXCEPT + { + srcArrayElement = srcArrayElement_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & + setDstSet( VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ ) VULKAN_HPP_NOEXCEPT + { + dstSet = dstSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT + { + dstBinding = dstBinding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT + { + dstArrayElement = dstArrayElement_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT + { + descriptorCount = descriptorCount_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCopyDescriptorSet const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCopyDescriptorSet &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, srcSet, srcBinding, srcArrayElement, dstSet, dstBinding, dstArrayElement, descriptorCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyDescriptorSet const & ) const = default; +#else + bool operator==( CopyDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSet == rhs.srcSet ) && + ( srcBinding == rhs.srcBinding ) && ( srcArrayElement == rhs.srcArrayElement ) && + ( dstSet == rhs.dstSet ) && ( dstBinding == rhs.dstBinding ) && + ( dstArrayElement == rhs.dstArrayElement ) && ( descriptorCount == rhs.descriptorCount ); +# endif + } + + bool operator!=( CopyDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyDescriptorSet; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DescriptorSet srcSet = {}; + uint32_t srcBinding = {}; + uint32_t srcArrayElement = {}; + VULKAN_HPP_NAMESPACE::DescriptorSet dstSet = {}; + uint32_t dstBinding = {}; + uint32_t dstArrayElement = {}; + uint32_t descriptorCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyDescriptorSet is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CopyDescriptorSet; + }; + + struct ImageCopy2 + { + using NativeType = VkImageCopy2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageCopy2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageCopy2( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, + VULKAN_HPP_NAMESPACE::Offset3D srcOffset_ = {}, + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, + VULKAN_HPP_NAMESPACE::Offset3D dstOffset_ = {}, + VULKAN_HPP_NAMESPACE::Extent3D extent_ = {} ) VULKAN_HPP_NOEXCEPT + : srcSubresource( srcSubresource_ ) + , srcOffset( srcOffset_ ) + , dstSubresource( dstSubresource_ ) + , dstOffset( dstOffset_ ) + , extent( extent_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageCopy2( ImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageCopy2( VkImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageCopy2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageCopy2 & operator=( ImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageCopy2 & operator=( VkImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & + setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & + setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & + setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & + setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageCopy2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageCopy2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcSubresource, srcOffset, dstSubresource, dstOffset, extent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageCopy2 const & ) const = default; +#else + bool operator==( ImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubresource == rhs.srcSubresource ) && + ( srcOffset == rhs.srcOffset ) && ( dstSubresource == rhs.dstSubresource ) && + ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent ); +# endif + } + + bool operator!=( ImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageCopy2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {}; + VULKAN_HPP_NAMESPACE::Offset3D srcOffset = {}; + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {}; + VULKAN_HPP_NAMESPACE::Offset3D dstOffset = {}; + VULKAN_HPP_NAMESPACE::Extent3D extent = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageCopy2 ) == sizeof( VkImageCopy2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageCopy2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageCopy2; + }; + using ImageCopy2KHR = ImageCopy2; + + struct CopyImageInfo2 + { + using NativeType = VkCopyImageInfo2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyImageInfo2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + CopyImageInfo2( VULKAN_HPP_NAMESPACE::Image srcImage_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + VULKAN_HPP_NAMESPACE::Image dstImage_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + uint32_t regionCount_ = {}, + const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions_ = {} ) VULKAN_HPP_NOEXCEPT + : srcImage( srcImage_ ) + , srcImageLayout( srcImageLayout_ ) + , dstImage( dstImage_ ) + , dstImageLayout( dstImageLayout_ ) + , regionCount( regionCount_ ) + , pRegions( pRegions_ ) + {} + + VULKAN_HPP_CONSTEXPR CopyImageInfo2( CopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyImageInfo2( VkCopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyImageInfo2( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyImageInfo2( + VULKAN_HPP_NAMESPACE::Image srcImage_, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, + VULKAN_HPP_NAMESPACE::Image dstImage_, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) + : srcImage( srcImage_ ) + , srcImageLayout( srcImageLayout_ ) + , dstImage( dstImage_ ) + , dstImageLayout( dstImageLayout_ ) + , regionCount( static_cast( regions_.size() ) ) + , pRegions( regions_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CopyImageInfo2 & operator=( CopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyImageInfo2 & operator=( VkCopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & + setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & + setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & + setPRegions( const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyImageInfo2 & setRegions( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) + VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCopyImageInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCopyImageInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyImageInfo2 const & ) const = default; +#else + bool operator==( CopyImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && + ( srcImageLayout == rhs.srcImageLayout ) && ( dstImage == rhs.dstImage ) && + ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && + ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( CopyImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyImageInfo2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Image srcImage = {}; + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + VULKAN_HPP_NAMESPACE::Image dstImage = {}; + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + uint32_t regionCount = {}; + const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyImageInfo2 ) == sizeof( VkCopyImageInfo2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyImageInfo2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CopyImageInfo2; + }; + using CopyImageInfo2KHR = CopyImageInfo2; + + struct CopyImageToBufferInfo2 + { + using NativeType = VkCopyImageToBufferInfo2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyImageToBufferInfo2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyImageToBufferInfo2( + VULKAN_HPP_NAMESPACE::Image srcImage_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ = {}, + uint32_t regionCount_ = {}, + const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_ = {} ) VULKAN_HPP_NOEXCEPT + : srcImage( srcImage_ ) + , srcImageLayout( srcImageLayout_ ) + , dstBuffer( dstBuffer_ ) + , regionCount( regionCount_ ) + , pRegions( pRegions_ ) + {} + + VULKAN_HPP_CONSTEXPR CopyImageToBufferInfo2( CopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyImageToBufferInfo2( VkCopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyImageToBufferInfo2( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyImageToBufferInfo2( + VULKAN_HPP_NAMESPACE::Image srcImage_, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) + : srcImage( srcImage_ ) + , srcImageLayout( srcImageLayout_ ) + , dstBuffer( dstBuffer_ ) + , regionCount( static_cast( regions_.size() ) ) + , pRegions( regions_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CopyImageToBufferInfo2 & operator=( CopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyImageToBufferInfo2 & operator=( VkCopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & + setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & + setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & + setDstBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ ) VULKAN_HPP_NOEXCEPT + { + dstBuffer = dstBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & + setPRegions( const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyImageToBufferInfo2 & setRegions( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) + VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCopyImageToBufferInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCopyImageToBufferInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyImageToBufferInfo2 const & ) const = default; +#else + bool operator==( CopyImageToBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && + ( srcImageLayout == rhs.srcImageLayout ) && ( dstBuffer == rhs.dstBuffer ) && + ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( CopyImageToBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyImageToBufferInfo2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Image srcImage = {}; + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + VULKAN_HPP_NAMESPACE::Buffer dstBuffer = {}; + uint32_t regionCount = {}; + const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 ) == + sizeof( VkCopyImageToBufferInfo2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyImageToBufferInfo2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CopyImageToBufferInfo2; + }; + using CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2; + + struct CopyMemoryToAccelerationStructureInfoKHR + { + using NativeType = VkCopyMemoryToAccelerationStructureInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eCopyMemoryToAccelerationStructureInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR( + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR src_ = {}, + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst_ = {}, + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ = + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone ) VULKAN_HPP_NOEXCEPT + : src( src_ ) + , dst( dst_ ) + , mode( mode_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR( + CopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyMemoryToAccelerationStructureInfoKHR( VkCopyMemoryToAccelerationStructureInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : CopyMemoryToAccelerationStructureInfoKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CopyMemoryToAccelerationStructureInfoKHR & + operator=( CopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyMemoryToAccelerationStructureInfoKHR & + operator=( VkCopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR & + setSrc( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & src_ ) VULKAN_HPP_NOEXCEPT + { + src = src_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR & + setDst( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst_ ) VULKAN_HPP_NOEXCEPT + { + dst = dst_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR & + setMode( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCopyMemoryToAccelerationStructureInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCopyMemoryToAccelerationStructureInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, src, dst, mode ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyMemoryToAccelerationStructureInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR src = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst = {}; + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode = + VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR ) == + sizeof( VkCopyMemoryToAccelerationStructureInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "CopyMemoryToAccelerationStructureInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CopyMemoryToAccelerationStructureInfoKHR; + }; + + struct CuFunctionCreateInfoNVX + { + using NativeType = VkCuFunctionCreateInfoNVX; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCuFunctionCreateInfoNVX; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CuFunctionCreateInfoNVX( VULKAN_HPP_NAMESPACE::CuModuleNVX module_ = {}, + const char * pName_ = {} ) VULKAN_HPP_NOEXCEPT + : module( module_ ) + , pName( pName_ ) + {} + + VULKAN_HPP_CONSTEXPR CuFunctionCreateInfoNVX( CuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CuFunctionCreateInfoNVX( VkCuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + : CuFunctionCreateInfoNVX( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CuFunctionCreateInfoNVX & operator=( CuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CuFunctionCreateInfoNVX & operator=( VkCuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX & + setModule( VULKAN_HPP_NAMESPACE::CuModuleNVX module_ ) VULKAN_HPP_NOEXCEPT + { + module = module_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT + { + pName = pName_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCuFunctionCreateInfoNVX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCuFunctionCreateInfoNVX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, module, pName ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( CuFunctionCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = module <=> rhs.module; cmp != 0 ) + return cmp; + if ( pName != rhs.pName ) + if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( CuFunctionCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( module == rhs.module ) && + ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) ); + } + + bool operator!=( CuFunctionCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCuFunctionCreateInfoNVX; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::CuModuleNVX module = {}; + const char * pName = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX ) == + sizeof( VkCuFunctionCreateInfoNVX ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CuFunctionCreateInfoNVX is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CuFunctionCreateInfoNVX; + }; + + struct CuLaunchInfoNVX + { + using NativeType = VkCuLaunchInfoNVX; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCuLaunchInfoNVX; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CuLaunchInfoNVX( VULKAN_HPP_NAMESPACE::CuFunctionNVX function_ = {}, + uint32_t gridDimX_ = {}, + uint32_t gridDimY_ = {}, + uint32_t gridDimZ_ = {}, + uint32_t blockDimX_ = {}, + uint32_t blockDimY_ = {}, + uint32_t blockDimZ_ = {}, + uint32_t sharedMemBytes_ = {}, + size_t paramCount_ = {}, + const void * const * pParams_ = {}, + size_t extraCount_ = {}, + const void * const * pExtras_ = {} ) VULKAN_HPP_NOEXCEPT + : function( function_ ) + , gridDimX( gridDimX_ ) + , gridDimY( gridDimY_ ) + , gridDimZ( gridDimZ_ ) + , blockDimX( blockDimX_ ) + , blockDimY( blockDimY_ ) + , blockDimZ( blockDimZ_ ) + , sharedMemBytes( sharedMemBytes_ ) + , paramCount( paramCount_ ) + , pParams( pParams_ ) + , extraCount( extraCount_ ) + , pExtras( pExtras_ ) + {} + + VULKAN_HPP_CONSTEXPR CuLaunchInfoNVX( CuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CuLaunchInfoNVX( VkCuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + : CuLaunchInfoNVX( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CuLaunchInfoNVX( VULKAN_HPP_NAMESPACE::CuFunctionNVX function_, + uint32_t gridDimX_, + uint32_t gridDimY_, + uint32_t gridDimZ_, + uint32_t blockDimX_, + uint32_t blockDimY_, + uint32_t blockDimZ_, + uint32_t sharedMemBytes_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & params_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & extras_ = {} ) + : function( function_ ) + , gridDimX( gridDimX_ ) + , gridDimY( gridDimY_ ) + , gridDimZ( gridDimZ_ ) + , blockDimX( blockDimX_ ) + , blockDimY( blockDimY_ ) + , blockDimZ( blockDimZ_ ) + , sharedMemBytes( sharedMemBytes_ ) + , paramCount( params_.size() ) + , pParams( params_.data() ) + , extraCount( extras_.size() ) + , pExtras( extras_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CuLaunchInfoNVX & operator=( CuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CuLaunchInfoNVX & operator=( VkCuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & + setFunction( VULKAN_HPP_NAMESPACE::CuFunctionNVX function_ ) VULKAN_HPP_NOEXCEPT + { + function = function_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setGridDimX( uint32_t gridDimX_ ) VULKAN_HPP_NOEXCEPT + { + gridDimX = gridDimX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setGridDimY( uint32_t gridDimY_ ) VULKAN_HPP_NOEXCEPT + { + gridDimY = gridDimY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setGridDimZ( uint32_t gridDimZ_ ) VULKAN_HPP_NOEXCEPT + { + gridDimZ = gridDimZ_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setBlockDimX( uint32_t blockDimX_ ) VULKAN_HPP_NOEXCEPT + { + blockDimX = blockDimX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setBlockDimY( uint32_t blockDimY_ ) VULKAN_HPP_NOEXCEPT + { + blockDimY = blockDimY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setBlockDimZ( uint32_t blockDimZ_ ) VULKAN_HPP_NOEXCEPT + { + blockDimZ = blockDimZ_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setSharedMemBytes( uint32_t sharedMemBytes_ ) VULKAN_HPP_NOEXCEPT + { + sharedMemBytes = sharedMemBytes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setParamCount( size_t paramCount_ ) VULKAN_HPP_NOEXCEPT + { + paramCount = paramCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setPParams( const void * const * pParams_ ) VULKAN_HPP_NOEXCEPT + { + pParams = pParams_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CuLaunchInfoNVX & + setParams( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & params_ ) VULKAN_HPP_NOEXCEPT + { + paramCount = params_.size(); + pParams = params_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setExtraCount( size_t extraCount_ ) VULKAN_HPP_NOEXCEPT + { + extraCount = extraCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setPExtras( const void * const * pExtras_ ) VULKAN_HPP_NOEXCEPT + { + pExtras = pExtras_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CuLaunchInfoNVX & + setExtras( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & extras_ ) VULKAN_HPP_NOEXCEPT + { + extraCount = extras_.size(); + pExtras = extras_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCuLaunchInfoNVX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCuLaunchInfoNVX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + function, + gridDimX, + gridDimY, + gridDimZ, + blockDimX, + blockDimY, + blockDimZ, + sharedMemBytes, + paramCount, + pParams, + extraCount, + pExtras ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CuLaunchInfoNVX const & ) const = default; +#else + bool operator==( CuLaunchInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( function == rhs.function ) && + ( gridDimX == rhs.gridDimX ) && ( gridDimY == rhs.gridDimY ) && ( gridDimZ == rhs.gridDimZ ) && + ( blockDimX == rhs.blockDimX ) && ( blockDimY == rhs.blockDimY ) && ( blockDimZ == rhs.blockDimZ ) && + ( sharedMemBytes == rhs.sharedMemBytes ) && ( paramCount == rhs.paramCount ) && + ( pParams == rhs.pParams ) && ( extraCount == rhs.extraCount ) && ( pExtras == rhs.pExtras ); +# endif + } + + bool operator!=( CuLaunchInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCuLaunchInfoNVX; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::CuFunctionNVX function = {}; + uint32_t gridDimX = {}; + uint32_t gridDimY = {}; + uint32_t gridDimZ = {}; + uint32_t blockDimX = {}; + uint32_t blockDimY = {}; + uint32_t blockDimZ = {}; + uint32_t sharedMemBytes = {}; + size_t paramCount = {}; + const void * const * pParams = {}; + size_t extraCount = {}; + const void * const * pExtras = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX ) == sizeof( VkCuLaunchInfoNVX ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CuLaunchInfoNVX is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CuLaunchInfoNVX; + }; + + struct CuModuleCreateInfoNVX + { + using NativeType = VkCuModuleCreateInfoNVX; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCuModuleCreateInfoNVX; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CuModuleCreateInfoNVX( size_t dataSize_ = {}, const void * pData_ = {} ) VULKAN_HPP_NOEXCEPT + : dataSize( dataSize_ ) + , pData( pData_ ) + {} + + VULKAN_HPP_CONSTEXPR CuModuleCreateInfoNVX( CuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CuModuleCreateInfoNVX( VkCuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + : CuModuleCreateInfoNVX( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + CuModuleCreateInfoNVX( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & data_ ) + : dataSize( data_.size() * sizeof( T ) ), pData( data_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CuModuleCreateInfoNVX & operator=( CuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CuModuleCreateInfoNVX & operator=( VkCuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX & setDataSize( size_t dataSize_ ) VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + CuModuleCreateInfoNVX & + setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & data_ ) VULKAN_HPP_NOEXCEPT + { + dataSize = data_.size() * sizeof( T ); + pData = data_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkCuModuleCreateInfoNVX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkCuModuleCreateInfoNVX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dataSize, pData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CuModuleCreateInfoNVX const & ) const = default; +#else + bool operator==( CuModuleCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData ); +# endif + } + + bool operator!=( CuModuleCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCuModuleCreateInfoNVX; + const void * pNext = {}; + size_t dataSize = {}; + const void * pData = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX ) == sizeof( VkCuModuleCreateInfoNVX ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CuModuleCreateInfoNVX is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = CuModuleCreateInfoNVX; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct D3D12FenceSubmitInfoKHR + { + using NativeType = VkD3D12FenceSubmitInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eD3D12FenceSubmitInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR D3D12FenceSubmitInfoKHR( uint32_t waitSemaphoreValuesCount_ = {}, + const uint64_t * pWaitSemaphoreValues_ = {}, + uint32_t signalSemaphoreValuesCount_ = {}, + const uint64_t * pSignalSemaphoreValues_ = {} ) VULKAN_HPP_NOEXCEPT + : waitSemaphoreValuesCount( waitSemaphoreValuesCount_ ) + , pWaitSemaphoreValues( pWaitSemaphoreValues_ ) + , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ ) + , pSignalSemaphoreValues( pSignalSemaphoreValues_ ) + {} + + VULKAN_HPP_CONSTEXPR D3D12FenceSubmitInfoKHR( D3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : D3D12FenceSubmitInfoKHR( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + D3D12FenceSubmitInfoKHR( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphoreValues_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphoreValues_ = {} ) + : waitSemaphoreValuesCount( static_cast( waitSemaphoreValues_.size() ) ) + , pWaitSemaphoreValues( waitSemaphoreValues_.data() ) + , signalSemaphoreValuesCount( static_cast( signalSemaphoreValues_.size() ) ) + , pSignalSemaphoreValues( signalSemaphoreValues_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + D3D12FenceSubmitInfoKHR & operator=( D3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + D3D12FenceSubmitInfoKHR & operator=( VkD3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & + setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreValuesCount = waitSemaphoreValuesCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & + setPWaitSemaphoreValues( const uint64_t * pWaitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT + { + pWaitSemaphoreValues = pWaitSemaphoreValues_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + D3D12FenceSubmitInfoKHR & setWaitSemaphoreValues( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreValuesCount = static_cast( waitSemaphoreValues_.size() ); + pWaitSemaphoreValues = waitSemaphoreValues_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & + setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ ) VULKAN_HPP_NOEXCEPT + { + signalSemaphoreValuesCount = signalSemaphoreValuesCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & + setPSignalSemaphoreValues( const uint64_t * pSignalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT + { + pSignalSemaphoreValues = pSignalSemaphoreValues_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + D3D12FenceSubmitInfoKHR & setSignalSemaphoreValues( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT + { + signalSemaphoreValuesCount = static_cast( signalSemaphoreValues_.size() ); + pSignalSemaphoreValues = signalSemaphoreValues_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkD3D12FenceSubmitInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkD3D12FenceSubmitInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + waitSemaphoreValuesCount, + pWaitSemaphoreValues, + signalSemaphoreValuesCount, + pSignalSemaphoreValues ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( D3D12FenceSubmitInfoKHR const & ) const = default; +# else + bool operator==( D3D12FenceSubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount ) && + ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues ) && + ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount ) && + ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues ); +# endif + } + + bool operator!=( D3D12FenceSubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eD3D12FenceSubmitInfoKHR; + const void * pNext = {}; + uint32_t waitSemaphoreValuesCount = {}; + const uint64_t * pWaitSemaphoreValues = {}; + uint32_t signalSemaphoreValuesCount = {}; + const uint64_t * pSignalSemaphoreValues = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR ) == + sizeof( VkD3D12FenceSubmitInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "D3D12FenceSubmitInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = D3D12FenceSubmitInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + struct DebugMarkerMarkerInfoEXT + { + using NativeType = VkDebugMarkerMarkerInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugMarkerMarkerInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT( const char * pMarkerName_ = {}, + std::array const & color_ = {} ) VULKAN_HPP_NOEXCEPT + : pMarkerName( pMarkerName_ ) + , color( color_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + DebugMarkerMarkerInfoEXT( DebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugMarkerMarkerInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DebugMarkerMarkerInfoEXT & operator=( DebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugMarkerMarkerInfoEXT & operator=( VkDebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & setPMarkerName( const char * pMarkerName_ ) VULKAN_HPP_NOEXCEPT + { + pMarkerName = pMarkerName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & setColor( std::array color_ ) VULKAN_HPP_NOEXCEPT + { + color = color_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDebugMarkerMarkerInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDebugMarkerMarkerInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pMarkerName, color ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::partial_ordering operator<=>( DebugMarkerMarkerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( pMarkerName != rhs.pMarkerName ) + if ( auto cmp = strcmp( pMarkerName, rhs.pMarkerName ); cmp != 0 ) + return ( cmp < 0 ) ? std::partial_ordering::less : std::partial_ordering::greater; + if ( auto cmp = color <=> rhs.color; cmp != 0 ) + return cmp; + + return std::partial_ordering::equivalent; + } +#endif + + bool operator==( DebugMarkerMarkerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( ( pMarkerName == rhs.pMarkerName ) || ( strcmp( pMarkerName, rhs.pMarkerName ) == 0 ) ) && + ( color == rhs.color ); + } + + bool operator!=( DebugMarkerMarkerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugMarkerMarkerInfoEXT; + const void * pNext = {}; + const char * pMarkerName = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D color = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT ) == + sizeof( VkDebugMarkerMarkerInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugMarkerMarkerInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DebugMarkerMarkerInfoEXT; + }; + + struct DebugMarkerObjectNameInfoEXT + { + using NativeType = VkDebugMarkerObjectNameInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugMarkerObjectNameInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DebugMarkerObjectNameInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown, + uint64_t object_ = {}, + const char * pObjectName_ = {} ) VULKAN_HPP_NOEXCEPT + : objectType( objectType_ ) + , object( object_ ) + , pObjectName( pObjectName_ ) + {} + + VULKAN_HPP_CONSTEXPR + DebugMarkerObjectNameInfoEXT( DebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugMarkerObjectNameInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DebugMarkerObjectNameInfoEXT & operator=( DebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugMarkerObjectNameInfoEXT & operator=( VkDebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & + setObjectType( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ ) VULKAN_HPP_NOEXCEPT + { + objectType = objectType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setObject( uint64_t object_ ) VULKAN_HPP_NOEXCEPT + { + object = object_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & + setPObjectName( const char * pObjectName_ ) VULKAN_HPP_NOEXCEPT + { + pObjectName = pObjectName_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDebugMarkerObjectNameInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDebugMarkerObjectNameInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, objectType, object, pObjectName ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( DebugMarkerObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = objectType <=> rhs.objectType; cmp != 0 ) + return cmp; + if ( auto cmp = object <=> rhs.object; cmp != 0 ) + return cmp; + if ( pObjectName != rhs.pObjectName ) + if ( auto cmp = strcmp( pObjectName, rhs.pObjectName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( DebugMarkerObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && + ( object == rhs.object ) && + ( ( pObjectName == rhs.pObjectName ) || ( strcmp( pObjectName, rhs.pObjectName ) == 0 ) ); + } + + bool operator!=( DebugMarkerObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugMarkerObjectNameInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + uint64_t object = {}; + const char * pObjectName = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT ) == + sizeof( VkDebugMarkerObjectNameInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DebugMarkerObjectNameInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DebugMarkerObjectNameInfoEXT; + }; + + struct DebugMarkerObjectTagInfoEXT + { + using NativeType = VkDebugMarkerObjectTagInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugMarkerObjectTagInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DebugMarkerObjectTagInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown, + uint64_t object_ = {}, + uint64_t tagName_ = {}, + size_t tagSize_ = {}, + const void * pTag_ = {} ) VULKAN_HPP_NOEXCEPT + : objectType( objectType_ ) + , object( object_ ) + , tagName( tagName_ ) + , tagSize( tagSize_ ) + , pTag( pTag_ ) + {} + + VULKAN_HPP_CONSTEXPR + DebugMarkerObjectTagInfoEXT( DebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugMarkerObjectTagInfoEXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + DebugMarkerObjectTagInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_, + uint64_t object_, + uint64_t tagName_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & tag_ ) + : objectType( objectType_ ) + , object( object_ ) + , tagName( tagName_ ) + , tagSize( tag_.size() * sizeof( T ) ) + , pTag( tag_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DebugMarkerObjectTagInfoEXT & operator=( DebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugMarkerObjectTagInfoEXT & operator=( VkDebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & + setObjectType( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ ) VULKAN_HPP_NOEXCEPT + { + objectType = objectType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setObject( uint64_t object_ ) VULKAN_HPP_NOEXCEPT + { + object = object_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setTagName( uint64_t tagName_ ) VULKAN_HPP_NOEXCEPT + { + tagName = tagName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setTagSize( size_t tagSize_ ) VULKAN_HPP_NOEXCEPT + { + tagSize = tagSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setPTag( const void * pTag_ ) VULKAN_HPP_NOEXCEPT + { + pTag = pTag_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + DebugMarkerObjectTagInfoEXT & + setTag( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & tag_ ) VULKAN_HPP_NOEXCEPT + { + tagSize = tag_.size() * sizeof( T ); + pTag = tag_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDebugMarkerObjectTagInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDebugMarkerObjectTagInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, objectType, object, tagName, tagSize, pTag ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DebugMarkerObjectTagInfoEXT const & ) const = default; +#else + bool operator==( DebugMarkerObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && + ( object == rhs.object ) && ( tagName == rhs.tagName ) && ( tagSize == rhs.tagSize ) && + ( pTag == rhs.pTag ); +# endif + } + + bool operator!=( DebugMarkerObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugMarkerObjectTagInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + uint64_t object = {}; + uint64_t tagName = {}; + size_t tagSize = {}; + const void * pTag = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT ) == + sizeof( VkDebugMarkerObjectTagInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DebugMarkerObjectTagInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DebugMarkerObjectTagInfoEXT; + }; + + struct DebugReportCallbackCreateInfoEXT + { + using NativeType = VkDebugReportCallbackCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugReportCallbackCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DebugReportCallbackCreateInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags_ = {}, + PFN_vkDebugReportCallbackEXT pfnCallback_ = {}, + void * pUserData_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , pfnCallback( pfnCallback_ ) + , pUserData( pUserData_ ) + {} + + VULKAN_HPP_CONSTEXPR + DebugReportCallbackCreateInfoEXT( DebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugReportCallbackCreateInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DebugReportCallbackCreateInfoEXT & + operator=( DebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugReportCallbackCreateInfoEXT & operator=( VkDebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & + setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ ) VULKAN_HPP_NOEXCEPT + { + pfnCallback = pfnCallback_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT + { + pUserData = pUserData_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDebugReportCallbackCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDebugReportCallbackCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pfnCallback, pUserData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DebugReportCallbackCreateInfoEXT const & ) const = default; +#else + bool operator==( DebugReportCallbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( pfnCallback == rhs.pfnCallback ) && ( pUserData == rhs.pUserData ); +# endif + } + + bool operator!=( DebugReportCallbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugReportCallbackCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags = {}; + PFN_vkDebugReportCallbackEXT pfnCallback = {}; + void * pUserData = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT ) == + sizeof( VkDebugReportCallbackCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DebugReportCallbackCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DebugReportCallbackCreateInfoEXT; + }; + + struct DebugUtilsLabelEXT + { + using NativeType = VkDebugUtilsLabelEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsLabelEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT( const char * pLabelName_ = {}, + std::array const & color_ = {} ) VULKAN_HPP_NOEXCEPT + : pLabelName( pLabelName_ ) + , color( color_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugUtilsLabelEXT( VkDebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugUtilsLabelEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DebugUtilsLabelEXT & operator=( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugUtilsLabelEXT & operator=( VkDebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setPLabelName( const char * pLabelName_ ) VULKAN_HPP_NOEXCEPT + { + pLabelName = pLabelName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setColor( std::array color_ ) VULKAN_HPP_NOEXCEPT + { + color = color_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDebugUtilsLabelEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDebugUtilsLabelEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pLabelName, color ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::partial_ordering operator<=>( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( pLabelName != rhs.pLabelName ) + if ( auto cmp = strcmp( pLabelName, rhs.pLabelName ); cmp != 0 ) + return ( cmp < 0 ) ? std::partial_ordering::less : std::partial_ordering::greater; + if ( auto cmp = color <=> rhs.color; cmp != 0 ) + return cmp; + + return std::partial_ordering::equivalent; + } +#endif + + bool operator==( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( ( pLabelName == rhs.pLabelName ) || ( strcmp( pLabelName, rhs.pLabelName ) == 0 ) ) && + ( color == rhs.color ); + } + + bool operator!=( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsLabelEXT; + const void * pNext = {}; + const char * pLabelName = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D color = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT ) == sizeof( VkDebugUtilsLabelEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugUtilsLabelEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DebugUtilsLabelEXT; + }; + + struct DebugUtilsObjectNameInfoEXT + { + using NativeType = VkDebugUtilsObjectNameInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsObjectNameInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DebugUtilsObjectNameInfoEXT( + VULKAN_HPP_NAMESPACE::ObjectType objectType_ = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown, + uint64_t objectHandle_ = {}, + const char * pObjectName_ = {} ) VULKAN_HPP_NOEXCEPT + : objectType( objectType_ ) + , objectHandle( objectHandle_ ) + , pObjectName( pObjectName_ ) + {} + + VULKAN_HPP_CONSTEXPR + DebugUtilsObjectNameInfoEXT( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugUtilsObjectNameInfoEXT( VkDebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugUtilsObjectNameInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DebugUtilsObjectNameInfoEXT & operator=( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugUtilsObjectNameInfoEXT & operator=( VkDebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & + setObjectType( VULKAN_HPP_NAMESPACE::ObjectType objectType_ ) VULKAN_HPP_NOEXCEPT + { + objectType = objectType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setObjectHandle( uint64_t objectHandle_ ) VULKAN_HPP_NOEXCEPT + { + objectHandle = objectHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & + setPObjectName( const char * pObjectName_ ) VULKAN_HPP_NOEXCEPT + { + pObjectName = pObjectName_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDebugUtilsObjectNameInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDebugUtilsObjectNameInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, objectType, objectHandle, pObjectName ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = objectType <=> rhs.objectType; cmp != 0 ) + return cmp; + if ( auto cmp = objectHandle <=> rhs.objectHandle; cmp != 0 ) + return cmp; + if ( pObjectName != rhs.pObjectName ) + if ( auto cmp = strcmp( pObjectName, rhs.pObjectName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && + ( objectHandle == rhs.objectHandle ) && + ( ( pObjectName == rhs.pObjectName ) || ( strcmp( pObjectName, rhs.pObjectName ) == 0 ) ); + } + + bool operator!=( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsObjectNameInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown; + uint64_t objectHandle = {}; + const char * pObjectName = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT ) == + sizeof( VkDebugUtilsObjectNameInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DebugUtilsObjectNameInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DebugUtilsObjectNameInfoEXT; + }; + + struct DebugUtilsMessengerCallbackDataEXT + { + using NativeType = VkDebugUtilsMessengerCallbackDataEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDebugUtilsMessengerCallbackDataEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT( + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_ = {}, + const char * pMessageIdName_ = {}, + int32_t messageIdNumber_ = {}, + const char * pMessage_ = {}, + uint32_t queueLabelCount_ = {}, + const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pQueueLabels_ = {}, + uint32_t cmdBufLabelCount_ = {}, + const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pCmdBufLabels_ = {}, + uint32_t objectCount_ = {}, + const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT * pObjects_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , pMessageIdName( pMessageIdName_ ) + , messageIdNumber( messageIdNumber_ ) + , pMessage( pMessage_ ) + , queueLabelCount( queueLabelCount_ ) + , pQueueLabels( pQueueLabels_ ) + , cmdBufLabelCount( cmdBufLabelCount_ ) + , pCmdBufLabels( pCmdBufLabels_ ) + , objectCount( objectCount_ ) + , pObjects( pObjects_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT( DebugUtilsMessengerCallbackDataEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + DebugUtilsMessengerCallbackDataEXT( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugUtilsMessengerCallbackDataEXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DebugUtilsMessengerCallbackDataEXT( + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_, + const char * pMessageIdName_, + int32_t messageIdNumber_, + const char * pMessage_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + queueLabels_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + cmdBufLabels_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + objects_ = {} ) + : flags( flags_ ) + , pMessageIdName( pMessageIdName_ ) + , messageIdNumber( messageIdNumber_ ) + , pMessage( pMessage_ ) + , queueLabelCount( static_cast( queueLabels_.size() ) ) + , pQueueLabels( queueLabels_.data() ) + , cmdBufLabelCount( static_cast( cmdBufLabels_.size() ) ) + , pCmdBufLabels( cmdBufLabels_.data() ) + , objectCount( static_cast( objects_.size() ) ) + , pObjects( objects_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DebugUtilsMessengerCallbackDataEXT & + operator=( DebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugUtilsMessengerCallbackDataEXT & + operator=( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & + setFlags( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & + setPMessageIdName( const char * pMessageIdName_ ) VULKAN_HPP_NOEXCEPT + { + pMessageIdName = pMessageIdName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & + setMessageIdNumber( int32_t messageIdNumber_ ) VULKAN_HPP_NOEXCEPT + { + messageIdNumber = messageIdNumber_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & + setPMessage( const char * pMessage_ ) VULKAN_HPP_NOEXCEPT + { + pMessage = pMessage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & + setQueueLabelCount( uint32_t queueLabelCount_ ) VULKAN_HPP_NOEXCEPT + { + queueLabelCount = queueLabelCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & + setPQueueLabels( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pQueueLabels_ ) VULKAN_HPP_NOEXCEPT + { + pQueueLabels = pQueueLabels_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DebugUtilsMessengerCallbackDataEXT & setQueueLabels( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + queueLabels_ ) VULKAN_HPP_NOEXCEPT + { + queueLabelCount = static_cast( queueLabels_.size() ); + pQueueLabels = queueLabels_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & + setCmdBufLabelCount( uint32_t cmdBufLabelCount_ ) VULKAN_HPP_NOEXCEPT + { + cmdBufLabelCount = cmdBufLabelCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & + setPCmdBufLabels( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pCmdBufLabels_ ) VULKAN_HPP_NOEXCEPT + { + pCmdBufLabels = pCmdBufLabels_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DebugUtilsMessengerCallbackDataEXT & setCmdBufLabels( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + cmdBufLabels_ ) VULKAN_HPP_NOEXCEPT + { + cmdBufLabelCount = static_cast( cmdBufLabels_.size() ); + pCmdBufLabels = cmdBufLabels_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & + setObjectCount( uint32_t objectCount_ ) VULKAN_HPP_NOEXCEPT + { + objectCount = objectCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & + setPObjects( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT * pObjects_ ) VULKAN_HPP_NOEXCEPT + { + pObjects = pObjects_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DebugUtilsMessengerCallbackDataEXT & setObjects( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + objects_ ) VULKAN_HPP_NOEXCEPT + { + objectCount = static_cast( objects_.size() ); + pObjects = objects_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDebugUtilsMessengerCallbackDataEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDebugUtilsMessengerCallbackDataEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + pMessageIdName, + messageIdNumber, + pMessage, + queueLabelCount, + pQueueLabels, + cmdBufLabelCount, + pCmdBufLabels, + objectCount, + pObjects ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( pMessageIdName != rhs.pMessageIdName ) + if ( auto cmp = strcmp( pMessageIdName, rhs.pMessageIdName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = messageIdNumber <=> rhs.messageIdNumber; cmp != 0 ) + return cmp; + if ( pMessage != rhs.pMessage ) + if ( auto cmp = strcmp( pMessage, rhs.pMessage ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = queueLabelCount <=> rhs.queueLabelCount; cmp != 0 ) + return cmp; + if ( auto cmp = pQueueLabels <=> rhs.pQueueLabels; cmp != 0 ) + return cmp; + if ( auto cmp = cmdBufLabelCount <=> rhs.cmdBufLabelCount; cmp != 0 ) + return cmp; + if ( auto cmp = pCmdBufLabels <=> rhs.pCmdBufLabels; cmp != 0 ) + return cmp; + if ( auto cmp = objectCount <=> rhs.objectCount; cmp != 0 ) + return cmp; + if ( auto cmp = pObjects <=> rhs.pObjects; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( ( pMessageIdName == rhs.pMessageIdName ) || ( strcmp( pMessageIdName, rhs.pMessageIdName ) == 0 ) ) && + ( messageIdNumber == rhs.messageIdNumber ) && + ( ( pMessage == rhs.pMessage ) || ( strcmp( pMessage, rhs.pMessage ) == 0 ) ) && + ( queueLabelCount == rhs.queueLabelCount ) && ( pQueueLabels == rhs.pQueueLabels ) && + ( cmdBufLabelCount == rhs.cmdBufLabelCount ) && ( pCmdBufLabels == rhs.pCmdBufLabels ) && + ( objectCount == rhs.objectCount ) && ( pObjects == rhs.pObjects ); + } + + bool operator!=( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsMessengerCallbackDataEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags = {}; + const char * pMessageIdName = {}; + int32_t messageIdNumber = {}; + const char * pMessage = {}; + uint32_t queueLabelCount = {}; + const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pQueueLabels = {}; + uint32_t cmdBufLabelCount = {}; + const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pCmdBufLabels = {}; + uint32_t objectCount = {}; + const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT * pObjects = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT ) == + sizeof( VkDebugUtilsMessengerCallbackDataEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DebugUtilsMessengerCallbackDataEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DebugUtilsMessengerCallbackDataEXT; + }; + + struct DebugUtilsMessengerCreateInfoEXT + { + using NativeType = VkDebugUtilsMessengerCreateInfoEXT; + + static const bool allowDuplicate = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsMessengerCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DebugUtilsMessengerCreateInfoEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags_ = {}, + VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity_ = {}, + VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageType_ = {}, + PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ = {}, + void * pUserData_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , messageSeverity( messageSeverity_ ) + , messageType( messageType_ ) + , pfnUserCallback( pfnUserCallback_ ) + , pUserData( pUserData_ ) + {} + + VULKAN_HPP_CONSTEXPR + DebugUtilsMessengerCreateInfoEXT( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugUtilsMessengerCreateInfoEXT( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugUtilsMessengerCreateInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DebugUtilsMessengerCreateInfoEXT & + operator=( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugUtilsMessengerCreateInfoEXT & operator=( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & + setMessageSeverity( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity_ ) VULKAN_HPP_NOEXCEPT + { + messageSeverity = messageSeverity_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & + setMessageType( VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageType_ ) VULKAN_HPP_NOEXCEPT + { + messageType = messageType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & + setPfnUserCallback( PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ ) VULKAN_HPP_NOEXCEPT + { + pfnUserCallback = pfnUserCallback_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT + { + pUserData = pUserData_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDebugUtilsMessengerCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDebugUtilsMessengerCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, messageSeverity, messageType, pfnUserCallback, pUserData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DebugUtilsMessengerCreateInfoEXT const & ) const = default; +#else + bool operator==( DebugUtilsMessengerCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( messageSeverity == rhs.messageSeverity ) && ( messageType == rhs.messageType ) && + ( pfnUserCallback == rhs.pfnUserCallback ) && ( pUserData == rhs.pUserData ); +# endif + } + + bool operator!=( DebugUtilsMessengerCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsMessengerCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags = {}; + VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity = {}; + VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageType = {}; + PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback = {}; + void * pUserData = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT ) == + sizeof( VkDebugUtilsMessengerCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DebugUtilsMessengerCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DebugUtilsMessengerCreateInfoEXT; + }; + + struct DebugUtilsObjectTagInfoEXT + { + using NativeType = VkDebugUtilsObjectTagInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsObjectTagInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DebugUtilsObjectTagInfoEXT( + VULKAN_HPP_NAMESPACE::ObjectType objectType_ = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown, + uint64_t objectHandle_ = {}, + uint64_t tagName_ = {}, + size_t tagSize_ = {}, + const void * pTag_ = {} ) VULKAN_HPP_NOEXCEPT + : objectType( objectType_ ) + , objectHandle( objectHandle_ ) + , tagName( tagName_ ) + , tagSize( tagSize_ ) + , pTag( pTag_ ) + {} + + VULKAN_HPP_CONSTEXPR + DebugUtilsObjectTagInfoEXT( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugUtilsObjectTagInfoEXT( VkDebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugUtilsObjectTagInfoEXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + DebugUtilsObjectTagInfoEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType_, + uint64_t objectHandle_, + uint64_t tagName_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & tag_ ) + : objectType( objectType_ ) + , objectHandle( objectHandle_ ) + , tagName( tagName_ ) + , tagSize( tag_.size() * sizeof( T ) ) + , pTag( tag_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DebugUtilsObjectTagInfoEXT & operator=( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugUtilsObjectTagInfoEXT & operator=( VkDebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & + setObjectType( VULKAN_HPP_NAMESPACE::ObjectType objectType_ ) VULKAN_HPP_NOEXCEPT + { + objectType = objectType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setObjectHandle( uint64_t objectHandle_ ) VULKAN_HPP_NOEXCEPT + { + objectHandle = objectHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setTagName( uint64_t tagName_ ) VULKAN_HPP_NOEXCEPT + { + tagName = tagName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setTagSize( size_t tagSize_ ) VULKAN_HPP_NOEXCEPT + { + tagSize = tagSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setPTag( const void * pTag_ ) VULKAN_HPP_NOEXCEPT + { + pTag = pTag_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + DebugUtilsObjectTagInfoEXT & + setTag( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & tag_ ) VULKAN_HPP_NOEXCEPT + { + tagSize = tag_.size() * sizeof( T ); + pTag = tag_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDebugUtilsObjectTagInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDebugUtilsObjectTagInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, objectType, objectHandle, tagName, tagSize, pTag ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DebugUtilsObjectTagInfoEXT const & ) const = default; +#else + bool operator==( DebugUtilsObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && + ( objectHandle == rhs.objectHandle ) && ( tagName == rhs.tagName ) && ( tagSize == rhs.tagSize ) && + ( pTag == rhs.pTag ); +# endif + } + + bool operator!=( DebugUtilsObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsObjectTagInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown; + uint64_t objectHandle = {}; + uint64_t tagName = {}; + size_t tagSize = {}; + const void * pTag = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT ) == + sizeof( VkDebugUtilsObjectTagInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugUtilsObjectTagInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DebugUtilsObjectTagInfoEXT; + }; + + struct DedicatedAllocationBufferCreateInfoNV + { + using NativeType = VkDedicatedAllocationBufferCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDedicatedAllocationBufferCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DedicatedAllocationBufferCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ = {} ) + VULKAN_HPP_NOEXCEPT : dedicatedAllocation( dedicatedAllocation_ ) + {} + + VULKAN_HPP_CONSTEXPR DedicatedAllocationBufferCreateInfoNV( DedicatedAllocationBufferCreateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : DedicatedAllocationBufferCreateInfoNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DedicatedAllocationBufferCreateInfoNV & + operator=( DedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DedicatedAllocationBufferCreateInfoNV & + operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationBufferCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationBufferCreateInfoNV & + setDedicatedAllocation( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ ) VULKAN_HPP_NOEXCEPT + { + dedicatedAllocation = dedicatedAllocation_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDedicatedAllocationBufferCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDedicatedAllocationBufferCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dedicatedAllocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DedicatedAllocationBufferCreateInfoNV const & ) const = default; +#else + bool operator==( DedicatedAllocationBufferCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dedicatedAllocation == rhs.dedicatedAllocation ); +# endif + } + + bool operator!=( DedicatedAllocationBufferCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDedicatedAllocationBufferCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV ) == + sizeof( VkDedicatedAllocationBufferCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DedicatedAllocationBufferCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DedicatedAllocationBufferCreateInfoNV; + }; + + struct DedicatedAllocationImageCreateInfoNV + { + using NativeType = VkDedicatedAllocationImageCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDedicatedAllocationImageCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DedicatedAllocationImageCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ = {} ) VULKAN_HPP_NOEXCEPT + : dedicatedAllocation( dedicatedAllocation_ ) + {} + + VULKAN_HPP_CONSTEXPR DedicatedAllocationImageCreateInfoNV( DedicatedAllocationImageCreateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : DedicatedAllocationImageCreateInfoNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DedicatedAllocationImageCreateInfoNV & + operator=( DedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DedicatedAllocationImageCreateInfoNV & + operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationImageCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationImageCreateInfoNV & + setDedicatedAllocation( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ ) VULKAN_HPP_NOEXCEPT + { + dedicatedAllocation = dedicatedAllocation_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDedicatedAllocationImageCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDedicatedAllocationImageCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dedicatedAllocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DedicatedAllocationImageCreateInfoNV const & ) const = default; +#else + bool operator==( DedicatedAllocationImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dedicatedAllocation == rhs.dedicatedAllocation ); +# endif + } + + bool operator!=( DedicatedAllocationImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDedicatedAllocationImageCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV ) == + sizeof( VkDedicatedAllocationImageCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DedicatedAllocationImageCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DedicatedAllocationImageCreateInfoNV; + }; + + struct DedicatedAllocationMemoryAllocateInfoNV + { + using NativeType = VkDedicatedAllocationMemoryAllocateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDedicatedAllocationMemoryAllocateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DedicatedAllocationMemoryAllocateInfoNV( VULKAN_HPP_NAMESPACE::Image image_ = {}, + VULKAN_HPP_NAMESPACE::Buffer buffer_ = {} ) VULKAN_HPP_NOEXCEPT + : image( image_ ) + , buffer( buffer_ ) + {} + + VULKAN_HPP_CONSTEXPR DedicatedAllocationMemoryAllocateInfoNV( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : DedicatedAllocationMemoryAllocateInfoNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DedicatedAllocationMemoryAllocateInfoNV & + operator=( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DedicatedAllocationMemoryAllocateInfoNV & + operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV & + setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV & + setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDedicatedAllocationMemoryAllocateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDedicatedAllocationMemoryAllocateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image, buffer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DedicatedAllocationMemoryAllocateInfoNV const & ) const = default; +#else + bool operator==( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( buffer == rhs.buffer ); +# endif + } + + bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDedicatedAllocationMemoryAllocateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Image image = {}; + VULKAN_HPP_NAMESPACE::Buffer buffer = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV ) == + sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DedicatedAllocationMemoryAllocateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DedicatedAllocationMemoryAllocateInfoNV; + }; + + struct MemoryBarrier2 + { + using NativeType = VkMemoryBarrier2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryBarrier2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryBarrier2( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ = {}, + VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ = {}, + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ = {}, + VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ = {} ) VULKAN_HPP_NOEXCEPT + : srcStageMask( srcStageMask_ ) + , srcAccessMask( srcAccessMask_ ) + , dstStageMask( dstStageMask_ ) + , dstAccessMask( dstAccessMask_ ) + {} + + VULKAN_HPP_CONSTEXPR MemoryBarrier2( MemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryBarrier2( VkMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryBarrier2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryBarrier2 & operator=( MemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryBarrier2 & operator=( VkMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & + setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ ) VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & + setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & + setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ ) VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & + setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMemoryBarrier2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryBarrier2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcStageMask, srcAccessMask, dstStageMask, dstAccessMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryBarrier2 const & ) const = default; +#else + bool operator==( MemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcStageMask == rhs.srcStageMask ) && + ( srcAccessMask == rhs.srcAccessMask ) && ( dstStageMask == rhs.dstStageMask ) && + ( dstAccessMask == rhs.dstAccessMask ); +# endif + } + + bool operator!=( MemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryBarrier2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask = {}; + VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask = {}; + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask = {}; + VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryBarrier2 ) == sizeof( VkMemoryBarrier2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryBarrier2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryBarrier2; + }; + using MemoryBarrier2KHR = MemoryBarrier2; + + struct ImageSubresourceRange + { + using NativeType = VkImageSubresourceRange; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageSubresourceRange( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}, + uint32_t baseMipLevel_ = {}, + uint32_t levelCount_ = {}, + uint32_t baseArrayLayer_ = {}, + uint32_t layerCount_ = {} ) VULKAN_HPP_NOEXCEPT + : aspectMask( aspectMask_ ) + , baseMipLevel( baseMipLevel_ ) + , levelCount( levelCount_ ) + , baseArrayLayer( baseArrayLayer_ ) + , layerCount( layerCount_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageSubresourceRange( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageSubresourceRange( VkImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageSubresourceRange( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageSubresourceRange & operator=( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageSubresourceRange & operator=( VkImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & + setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setBaseMipLevel( uint32_t baseMipLevel_ ) VULKAN_HPP_NOEXCEPT + { + baseMipLevel = baseMipLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setLevelCount( uint32_t levelCount_ ) VULKAN_HPP_NOEXCEPT + { + levelCount = levelCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT + { + baseArrayLayer = baseArrayLayer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageSubresourceRange const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageSubresourceRange &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( aspectMask, baseMipLevel, levelCount, baseArrayLayer, layerCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageSubresourceRange const & ) const = default; +#else + bool operator==( ImageSubresourceRange const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( aspectMask == rhs.aspectMask ) && ( baseMipLevel == rhs.baseMipLevel ) && + ( levelCount == rhs.levelCount ) && ( baseArrayLayer == rhs.baseArrayLayer ) && + ( layerCount == rhs.layerCount ); +# endif + } + + bool operator!=( ImageSubresourceRange const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {}; + uint32_t baseMipLevel = {}; + uint32_t levelCount = {}; + uint32_t baseArrayLayer = {}; + uint32_t layerCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageSubresourceRange is not nothrow_move_constructible!" ); + + struct ImageMemoryBarrier2 + { + using NativeType = VkImageMemoryBarrier2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageMemoryBarrier2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImageMemoryBarrier2( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ = {}, + VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ = {}, + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ = {}, + VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + uint32_t srcQueueFamilyIndex_ = {}, + uint32_t dstQueueFamilyIndex_ = {}, + VULKAN_HPP_NAMESPACE::Image image_ = {}, + VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_ = {} ) VULKAN_HPP_NOEXCEPT + : srcStageMask( srcStageMask_ ) + , srcAccessMask( srcAccessMask_ ) + , dstStageMask( dstStageMask_ ) + , dstAccessMask( dstAccessMask_ ) + , oldLayout( oldLayout_ ) + , newLayout( newLayout_ ) + , srcQueueFamilyIndex( srcQueueFamilyIndex_ ) + , dstQueueFamilyIndex( dstQueueFamilyIndex_ ) + , image( image_ ) + , subresourceRange( subresourceRange_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageMemoryBarrier2( ImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageMemoryBarrier2( VkImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageMemoryBarrier2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageMemoryBarrier2 & operator=( ImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageMemoryBarrier2 & operator=( VkImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & + setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ ) VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & + setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & + setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ ) VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & + setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & + setOldLayout( VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ ) VULKAN_HPP_NOEXCEPT + { + oldLayout = oldLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & + setNewLayout( VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ ) VULKAN_HPP_NOEXCEPT + { + newLayout = newLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & + setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & + setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & + setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT + { + subresourceRange = subresourceRange_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageMemoryBarrier2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageMemoryBarrier2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + srcStageMask, + srcAccessMask, + dstStageMask, + dstAccessMask, + oldLayout, + newLayout, + srcQueueFamilyIndex, + dstQueueFamilyIndex, + image, + subresourceRange ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageMemoryBarrier2 const & ) const = default; +#else + bool operator==( ImageMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcStageMask == rhs.srcStageMask ) && + ( srcAccessMask == rhs.srcAccessMask ) && ( dstStageMask == rhs.dstStageMask ) && + ( dstAccessMask == rhs.dstAccessMask ) && ( oldLayout == rhs.oldLayout ) && + ( newLayout == rhs.newLayout ) && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) && + ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && ( image == rhs.image ) && + ( subresourceRange == rhs.subresourceRange ); +# endif + } + + bool operator!=( ImageMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryBarrier2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask = {}; + VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask = {}; + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask = {}; + VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask = {}; + VULKAN_HPP_NAMESPACE::ImageLayout oldLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + VULKAN_HPP_NAMESPACE::ImageLayout newLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + uint32_t srcQueueFamilyIndex = {}; + uint32_t dstQueueFamilyIndex = {}; + VULKAN_HPP_NAMESPACE::Image image = {}; + VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 ) == sizeof( VkImageMemoryBarrier2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageMemoryBarrier2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageMemoryBarrier2; + }; + using ImageMemoryBarrier2KHR = ImageMemoryBarrier2; + + struct DependencyInfo + { + using NativeType = VkDependencyInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDependencyInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DependencyInfo( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ = {}, + uint32_t memoryBarrierCount_ = {}, + const VULKAN_HPP_NAMESPACE::MemoryBarrier2 * pMemoryBarriers_ = {}, + uint32_t bufferMemoryBarrierCount_ = {}, + const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 * pBufferMemoryBarriers_ = {}, + uint32_t imageMemoryBarrierCount_ = {}, + const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 * pImageMemoryBarriers_ = {} ) VULKAN_HPP_NOEXCEPT + : dependencyFlags( dependencyFlags_ ) + , memoryBarrierCount( memoryBarrierCount_ ) + , pMemoryBarriers( pMemoryBarriers_ ) + , bufferMemoryBarrierCount( bufferMemoryBarrierCount_ ) + , pBufferMemoryBarriers( pBufferMemoryBarriers_ ) + , imageMemoryBarrierCount( imageMemoryBarrierCount_ ) + , pImageMemoryBarriers( pImageMemoryBarriers_ ) + {} + + VULKAN_HPP_CONSTEXPR DependencyInfo( DependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DependencyInfo( VkDependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DependencyInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DependencyInfo( + VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & memoryBarriers_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + bufferMemoryBarriers_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + imageMemoryBarriers_ = {} ) + : dependencyFlags( dependencyFlags_ ) + , memoryBarrierCount( static_cast( memoryBarriers_.size() ) ) + , pMemoryBarriers( memoryBarriers_.data() ) + , bufferMemoryBarrierCount( static_cast( bufferMemoryBarriers_.size() ) ) + , pBufferMemoryBarriers( bufferMemoryBarriers_.data() ) + , imageMemoryBarrierCount( static_cast( imageMemoryBarriers_.size() ) ) + , pImageMemoryBarriers( imageMemoryBarriers_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DependencyInfo & operator=( DependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DependencyInfo & operator=( VkDependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & + setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT + { + dependencyFlags = dependencyFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setMemoryBarrierCount( uint32_t memoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT + { + memoryBarrierCount = memoryBarrierCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & + setPMemoryBarriers( const VULKAN_HPP_NAMESPACE::MemoryBarrier2 * pMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT + { + pMemoryBarriers = pMemoryBarriers_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DependencyInfo & setMemoryBarriers( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + memoryBarriers_ ) VULKAN_HPP_NOEXCEPT + { + memoryBarrierCount = static_cast( memoryBarriers_.size() ); + pMemoryBarriers = memoryBarriers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & + setBufferMemoryBarrierCount( uint32_t bufferMemoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT + { + bufferMemoryBarrierCount = bufferMemoryBarrierCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setPBufferMemoryBarriers( + const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 * pBufferMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT + { + pBufferMemoryBarriers = pBufferMemoryBarriers_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DependencyInfo & setBufferMemoryBarriers( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + bufferMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT + { + bufferMemoryBarrierCount = static_cast( bufferMemoryBarriers_.size() ); + pBufferMemoryBarriers = bufferMemoryBarriers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & + setImageMemoryBarrierCount( uint32_t imageMemoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT + { + imageMemoryBarrierCount = imageMemoryBarrierCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setPImageMemoryBarriers( + const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 * pImageMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT + { + pImageMemoryBarriers = pImageMemoryBarriers_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DependencyInfo & setImageMemoryBarriers( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + imageMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT + { + imageMemoryBarrierCount = static_cast( imageMemoryBarriers_.size() ); + pImageMemoryBarriers = imageMemoryBarriers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDependencyInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDependencyInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + dependencyFlags, + memoryBarrierCount, + pMemoryBarriers, + bufferMemoryBarrierCount, + pBufferMemoryBarriers, + imageMemoryBarrierCount, + pImageMemoryBarriers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DependencyInfo const & ) const = default; +#else + bool operator==( DependencyInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dependencyFlags == rhs.dependencyFlags ) && + ( memoryBarrierCount == rhs.memoryBarrierCount ) && ( pMemoryBarriers == rhs.pMemoryBarriers ) && + ( bufferMemoryBarrierCount == rhs.bufferMemoryBarrierCount ) && + ( pBufferMemoryBarriers == rhs.pBufferMemoryBarriers ) && + ( imageMemoryBarrierCount == rhs.imageMemoryBarrierCount ) && + ( pImageMemoryBarriers == rhs.pImageMemoryBarriers ); +# endif + } + + bool operator!=( DependencyInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDependencyInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags = {}; + uint32_t memoryBarrierCount = {}; + const VULKAN_HPP_NAMESPACE::MemoryBarrier2 * pMemoryBarriers = {}; + uint32_t bufferMemoryBarrierCount = {}; + const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 * pBufferMemoryBarriers = {}; + uint32_t imageMemoryBarrierCount = {}; + const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 * pImageMemoryBarriers = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DependencyInfo ) == sizeof( VkDependencyInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DependencyInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DependencyInfo; + }; + using DependencyInfoKHR = DependencyInfo; + + struct DescriptorBufferInfo + { + using NativeType = VkDescriptorBufferInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorBufferInfo( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize range_ = {} ) VULKAN_HPP_NOEXCEPT + : buffer( buffer_ ) + , offset( offset_ ) + , range( range_ ) + {} + + VULKAN_HPP_CONSTEXPR DescriptorBufferInfo( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorBufferInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DescriptorBufferInfo & operator=( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorBufferInfo & operator=( VkDescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & + setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & + setRange( VULKAN_HPP_NAMESPACE::DeviceSize range_ ) VULKAN_HPP_NOEXCEPT + { + range = range_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDescriptorBufferInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDescriptorBufferInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( buffer, offset, range ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorBufferInfo const & ) const = default; +#else + bool operator==( DescriptorBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( buffer == rhs.buffer ) && ( offset == rhs.offset ) && ( range == rhs.range ); +# endif + } + + bool operator!=( DescriptorBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::Buffer buffer = {}; + VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize range = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorBufferInfo is not nothrow_move_constructible!" ); + + struct DescriptorImageInfo + { + using NativeType = VkDescriptorImageInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorImageInfo( VULKAN_HPP_NAMESPACE::Sampler sampler_ = {}, + VULKAN_HPP_NAMESPACE::ImageView imageView_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ = + VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) VULKAN_HPP_NOEXCEPT + : sampler( sampler_ ) + , imageView( imageView_ ) + , imageLayout( imageLayout_ ) + {} + + VULKAN_HPP_CONSTEXPR DescriptorImageInfo( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorImageInfo( VkDescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorImageInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DescriptorImageInfo & operator=( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorImageInfo & operator=( VkDescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & + setSampler( VULKAN_HPP_NAMESPACE::Sampler sampler_ ) VULKAN_HPP_NOEXCEPT + { + sampler = sampler_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & + setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & + setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT + { + imageLayout = imageLayout_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDescriptorImageInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDescriptorImageInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sampler, imageView, imageLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorImageInfo const & ) const = default; +#else + bool operator==( DescriptorImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sampler == rhs.sampler ) && ( imageView == rhs.imageView ) && ( imageLayout == rhs.imageLayout ); +# endif + } + + bool operator!=( DescriptorImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::Sampler sampler = {}; + VULKAN_HPP_NAMESPACE::ImageView imageView = {}; + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorImageInfo is not nothrow_move_constructible!" ); + + struct DescriptorPoolSize + { + using NativeType = VkDescriptorPoolSize; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DescriptorPoolSize( VULKAN_HPP_NAMESPACE::DescriptorType type_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler, + uint32_t descriptorCount_ = {} ) VULKAN_HPP_NOEXCEPT + : type( type_ ) + , descriptorCount( descriptorCount_ ) + {} + + VULKAN_HPP_CONSTEXPR DescriptorPoolSize( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorPoolSize( VkDescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorPoolSize( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DescriptorPoolSize & operator=( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorPoolSize & operator=( VkDescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize & + setType( VULKAN_HPP_NAMESPACE::DescriptorType type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT + { + descriptorCount = descriptorCount_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDescriptorPoolSize const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDescriptorPoolSize &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( type, descriptorCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorPoolSize const & ) const = default; +#else + bool operator==( DescriptorPoolSize const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( type == rhs.type ) && ( descriptorCount == rhs.descriptorCount ); +# endif + } + + bool operator!=( DescriptorPoolSize const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DescriptorType type = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler; + uint32_t descriptorCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorPoolSize is not nothrow_move_constructible!" ); + + struct DescriptorPoolCreateInfo + { + using NativeType = VkDescriptorPoolCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorPoolCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DescriptorPoolCreateInfo( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags_ = {}, + uint32_t maxSets_ = {}, + uint32_t poolSizeCount_ = {}, + const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * pPoolSizes_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , maxSets( maxSets_ ) + , poolSizeCount( poolSizeCount_ ) + , pPoolSizes( pPoolSizes_ ) + {} + + VULKAN_HPP_CONSTEXPR DescriptorPoolCreateInfo( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorPoolCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorPoolCreateInfo( + VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags_, + uint32_t maxSets_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & poolSizes_ ) + : flags( flags_ ) + , maxSets( maxSets_ ) + , poolSizeCount( static_cast( poolSizes_.size() ) ) + , pPoolSizes( poolSizes_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DescriptorPoolCreateInfo & operator=( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorPoolCreateInfo & operator=( VkDescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setMaxSets( uint32_t maxSets_ ) VULKAN_HPP_NOEXCEPT + { + maxSets = maxSets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPoolSizeCount( uint32_t poolSizeCount_ ) VULKAN_HPP_NOEXCEPT + { + poolSizeCount = poolSizeCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & + setPPoolSizes( const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * pPoolSizes_ ) VULKAN_HPP_NOEXCEPT + { + pPoolSizes = pPoolSizes_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorPoolCreateInfo & setPoolSizes( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & poolSizes_ ) + VULKAN_HPP_NOEXCEPT + { + poolSizeCount = static_cast( poolSizes_.size() ); + pPoolSizes = poolSizes_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDescriptorPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDescriptorPoolCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, maxSets, poolSizeCount, pPoolSizes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorPoolCreateInfo const & ) const = default; +#else + bool operator==( DescriptorPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( maxSets == rhs.maxSets ) && + ( poolSizeCount == rhs.poolSizeCount ) && ( pPoolSizes == rhs.pPoolSizes ); +# endif + } + + bool operator!=( DescriptorPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorPoolCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags = {}; + uint32_t maxSets = {}; + uint32_t poolSizeCount = {}; + const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * pPoolSizes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo ) == + sizeof( VkDescriptorPoolCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorPoolCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DescriptorPoolCreateInfo; + }; + + struct DescriptorPoolInlineUniformBlockCreateInfo + { + using NativeType = VkDescriptorPoolInlineUniformBlockCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDescriptorPoolInlineUniformBlockCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DescriptorPoolInlineUniformBlockCreateInfo( uint32_t maxInlineUniformBlockBindings_ = {} ) VULKAN_HPP_NOEXCEPT + : maxInlineUniformBlockBindings( maxInlineUniformBlockBindings_ ) + {} + + VULKAN_HPP_CONSTEXPR DescriptorPoolInlineUniformBlockCreateInfo( + DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorPoolInlineUniformBlockCreateInfo( VkDescriptorPoolInlineUniformBlockCreateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT + : DescriptorPoolInlineUniformBlockCreateInfo( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DescriptorPoolInlineUniformBlockCreateInfo & + operator=( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorPoolInlineUniformBlockCreateInfo & + operator=( VkDescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfo & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfo & + setMaxInlineUniformBlockBindings( uint32_t maxInlineUniformBlockBindings_ ) VULKAN_HPP_NOEXCEPT + { + maxInlineUniformBlockBindings = maxInlineUniformBlockBindings_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDescriptorPoolInlineUniformBlockCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDescriptorPoolInlineUniformBlockCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxInlineUniformBlockBindings ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorPoolInlineUniformBlockCreateInfo const & ) const = default; +#else + bool operator==( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( maxInlineUniformBlockBindings == rhs.maxInlineUniformBlockBindings ); +# endif + } + + bool operator!=( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorPoolInlineUniformBlockCreateInfo; + const void * pNext = {}; + uint32_t maxInlineUniformBlockBindings = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo ) == + sizeof( VkDescriptorPoolInlineUniformBlockCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DescriptorPoolInlineUniformBlockCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DescriptorPoolInlineUniformBlockCreateInfo; + }; + using DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfo; + + struct DescriptorSetAllocateInfo + { + using NativeType = VkDescriptorSetAllocateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetAllocateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorSetAllocateInfo( + VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool_ = {}, + uint32_t descriptorSetCount_ = {}, + const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ = {} ) VULKAN_HPP_NOEXCEPT + : descriptorPool( descriptorPool_ ) + , descriptorSetCount( descriptorSetCount_ ) + , pSetLayouts( pSetLayouts_ ) + {} + + VULKAN_HPP_CONSTEXPR + DescriptorSetAllocateInfo( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorSetAllocateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetAllocateInfo( + VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + setLayouts_ ) + : descriptorPool( descriptorPool_ ) + , descriptorSetCount( static_cast( setLayouts_.size() ) ) + , pSetLayouts( setLayouts_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DescriptorSetAllocateInfo & operator=( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetAllocateInfo & operator=( VkDescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & + setDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool_ ) VULKAN_HPP_NOEXCEPT + { + descriptorPool = descriptorPool_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & + setDescriptorSetCount( uint32_t descriptorSetCount_ ) VULKAN_HPP_NOEXCEPT + { + descriptorSetCount = descriptorSetCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & + setPSetLayouts( const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ ) VULKAN_HPP_NOEXCEPT + { + pSetLayouts = pSetLayouts_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetAllocateInfo & setSetLayouts( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + setLayouts_ ) VULKAN_HPP_NOEXCEPT + { + descriptorSetCount = static_cast( setLayouts_.size() ); + pSetLayouts = setLayouts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDescriptorSetAllocateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDescriptorSetAllocateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, descriptorPool, descriptorSetCount, pSetLayouts ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetAllocateInfo const & ) const = default; +#else + bool operator==( DescriptorSetAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorPool == rhs.descriptorPool ) && + ( descriptorSetCount == rhs.descriptorSetCount ) && ( pSetLayouts == rhs.pSetLayouts ); +# endif + } + + bool operator!=( DescriptorSetAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetAllocateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool = {}; + uint32_t descriptorSetCount = {}; + const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo ) == + sizeof( VkDescriptorSetAllocateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSetAllocateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DescriptorSetAllocateInfo; + }; + + struct DescriptorSetLayoutBinding + { + using NativeType = VkDescriptorSetLayoutBinding; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBinding( + uint32_t binding_ = {}, + VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler, + uint32_t descriptorCount_ = {}, + VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ = {}, + const VULKAN_HPP_NAMESPACE::Sampler * pImmutableSamplers_ = {} ) VULKAN_HPP_NOEXCEPT + : binding( binding_ ) + , descriptorType( descriptorType_ ) + , descriptorCount( descriptorCount_ ) + , stageFlags( stageFlags_ ) + , pImmutableSamplers( pImmutableSamplers_ ) + {} + + VULKAN_HPP_CONSTEXPR + DescriptorSetLayoutBinding( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorSetLayoutBinding( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetLayoutBinding( + uint32_t binding_, + VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_, + VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & immutableSamplers_ ) + : binding( binding_ ) + , descriptorType( descriptorType_ ) + , descriptorCount( static_cast( immutableSamplers_.size() ) ) + , stageFlags( stageFlags_ ) + , pImmutableSamplers( immutableSamplers_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DescriptorSetLayoutBinding & operator=( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetLayoutBinding & operator=( VkDescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & + setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT + { + descriptorType = descriptorType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & + setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT + { + descriptorCount = descriptorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & + setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & + setPImmutableSamplers( const VULKAN_HPP_NAMESPACE::Sampler * pImmutableSamplers_ ) VULKAN_HPP_NOEXCEPT + { + pImmutableSamplers = pImmutableSamplers_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetLayoutBinding & setImmutableSamplers( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & immutableSamplers_ ) + VULKAN_HPP_NOEXCEPT + { + descriptorCount = static_cast( immutableSamplers_.size() ); + pImmutableSamplers = immutableSamplers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDescriptorSetLayoutBinding const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDescriptorSetLayoutBinding &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( binding, descriptorType, descriptorCount, stageFlags, pImmutableSamplers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetLayoutBinding const & ) const = default; +#else + bool operator==( DescriptorSetLayoutBinding const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( binding == rhs.binding ) && ( descriptorType == rhs.descriptorType ) && + ( descriptorCount == rhs.descriptorCount ) && ( stageFlags == rhs.stageFlags ) && + ( pImmutableSamplers == rhs.pImmutableSamplers ); +# endif + } + + bool operator!=( DescriptorSetLayoutBinding const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t binding = {}; + VULKAN_HPP_NAMESPACE::DescriptorType descriptorType = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler; + uint32_t descriptorCount = {}; + VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags = {}; + const VULKAN_HPP_NAMESPACE::Sampler * pImmutableSamplers = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding ) == + sizeof( VkDescriptorSetLayoutBinding ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSetLayoutBinding is not nothrow_move_constructible!" ); + + struct DescriptorSetLayoutBindingFlagsCreateInfo + { + using NativeType = VkDescriptorSetLayoutBindingFlagsCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBindingFlagsCreateInfo( + uint32_t bindingCount_ = {}, + const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * pBindingFlags_ = {} ) VULKAN_HPP_NOEXCEPT + : bindingCount( bindingCount_ ) + , pBindingFlags( pBindingFlags_ ) + {} + + VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBindingFlagsCreateInfo( + DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetLayoutBindingFlagsCreateInfo( VkDescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT + : DescriptorSetLayoutBindingFlagsCreateInfo( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetLayoutBindingFlagsCreateInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + bindingFlags_ ) + : bindingCount( static_cast( bindingFlags_.size() ) ), pBindingFlags( bindingFlags_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DescriptorSetLayoutBindingFlagsCreateInfo & + operator=( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetLayoutBindingFlagsCreateInfo & + operator=( VkDescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo & + setBindingCount( uint32_t bindingCount_ ) VULKAN_HPP_NOEXCEPT + { + bindingCount = bindingCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo & + setPBindingFlags( const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * pBindingFlags_ ) VULKAN_HPP_NOEXCEPT + { + pBindingFlags = pBindingFlags_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetLayoutBindingFlagsCreateInfo & setBindingFlags( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + bindingFlags_ ) VULKAN_HPP_NOEXCEPT + { + bindingCount = static_cast( bindingFlags_.size() ); + pBindingFlags = bindingFlags_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDescriptorSetLayoutBindingFlagsCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDescriptorSetLayoutBindingFlagsCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, bindingCount, pBindingFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetLayoutBindingFlagsCreateInfo const & ) const = default; +#else + bool operator==( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bindingCount == rhs.bindingCount ) && + ( pBindingFlags == rhs.pBindingFlags ); +# endif + } + + bool operator!=( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo; + const void * pNext = {}; + uint32_t bindingCount = {}; + const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * pBindingFlags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo ) == + sizeof( VkDescriptorSetLayoutBindingFlagsCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DescriptorSetLayoutBindingFlagsCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DescriptorSetLayoutBindingFlagsCreateInfo; + }; + using DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo; + + struct DescriptorSetLayoutCreateInfo + { + using NativeType = VkDescriptorSetLayoutCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetLayoutCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateInfo( + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags_ = {}, + uint32_t bindingCount_ = {}, + const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * pBindings_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , bindingCount( bindingCount_ ) + , pBindings( pBindings_ ) + {} + + VULKAN_HPP_CONSTEXPR + DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorSetLayoutCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetLayoutCreateInfo( + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + bindings_ ) + : flags( flags_ ), bindingCount( static_cast( bindings_.size() ) ), pBindings( bindings_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DescriptorSetLayoutCreateInfo & + operator=( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetLayoutCreateInfo & operator=( VkDescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & + setBindingCount( uint32_t bindingCount_ ) VULKAN_HPP_NOEXCEPT + { + bindingCount = bindingCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & + setPBindings( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * pBindings_ ) VULKAN_HPP_NOEXCEPT + { + pBindings = pBindings_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetLayoutCreateInfo & setBindings( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + bindings_ ) VULKAN_HPP_NOEXCEPT + { + bindingCount = static_cast( bindings_.size() ); + pBindings = bindings_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDescriptorSetLayoutCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDescriptorSetLayoutCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, bindingCount, pBindings ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetLayoutCreateInfo const & ) const = default; +#else + bool operator==( DescriptorSetLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( bindingCount == rhs.bindingCount ) && ( pBindings == rhs.pBindings ); +# endif + } + + bool operator!=( DescriptorSetLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetLayoutCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags = {}; + uint32_t bindingCount = {}; + const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * pBindings = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo ) == + sizeof( VkDescriptorSetLayoutCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DescriptorSetLayoutCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DescriptorSetLayoutCreateInfo; + }; + + struct DescriptorSetLayoutSupport + { + using NativeType = VkDescriptorSetLayoutSupport; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetLayoutSupport; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorSetLayoutSupport( VULKAN_HPP_NAMESPACE::Bool32 supported_ = {} ) VULKAN_HPP_NOEXCEPT + : supported( supported_ ) + {} + + VULKAN_HPP_CONSTEXPR + DescriptorSetLayoutSupport( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetLayoutSupport( VkDescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorSetLayoutSupport( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DescriptorSetLayoutSupport & operator=( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetLayoutSupport & operator=( VkDescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDescriptorSetLayoutSupport const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDescriptorSetLayoutSupport &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, supported ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetLayoutSupport const & ) const = default; +#else + bool operator==( DescriptorSetLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supported == rhs.supported ); +# endif + } + + bool operator!=( DescriptorSetLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetLayoutSupport; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 supported = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport ) == + sizeof( VkDescriptorSetLayoutSupport ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSetLayoutSupport is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DescriptorSetLayoutSupport; + }; + using DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport; + + struct DescriptorSetVariableDescriptorCountAllocateInfo + { + using NativeType = VkDescriptorSetVariableDescriptorCountAllocateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DescriptorSetVariableDescriptorCountAllocateInfo( uint32_t descriptorSetCount_ = {}, + const uint32_t * pDescriptorCounts_ = {} ) VULKAN_HPP_NOEXCEPT + : descriptorSetCount( descriptorSetCount_ ) + , pDescriptorCounts( pDescriptorCounts_ ) + {} + + VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountAllocateInfo( + DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetVariableDescriptorCountAllocateInfo( VkDescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT + : DescriptorSetVariableDescriptorCountAllocateInfo( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetVariableDescriptorCountAllocateInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & descriptorCounts_ ) + : descriptorSetCount( static_cast( descriptorCounts_.size() ) ) + , pDescriptorCounts( descriptorCounts_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DescriptorSetVariableDescriptorCountAllocateInfo & + operator=( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetVariableDescriptorCountAllocateInfo & + operator=( VkDescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & + setDescriptorSetCount( uint32_t descriptorSetCount_ ) VULKAN_HPP_NOEXCEPT + { + descriptorSetCount = descriptorSetCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & + setPDescriptorCounts( const uint32_t * pDescriptorCounts_ ) VULKAN_HPP_NOEXCEPT + { + pDescriptorCounts = pDescriptorCounts_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetVariableDescriptorCountAllocateInfo & setDescriptorCounts( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & descriptorCounts_ ) VULKAN_HPP_NOEXCEPT + { + descriptorSetCount = static_cast( descriptorCounts_.size() ); + pDescriptorCounts = descriptorCounts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDescriptorSetVariableDescriptorCountAllocateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDescriptorSetVariableDescriptorCountAllocateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, descriptorSetCount, pDescriptorCounts ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetVariableDescriptorCountAllocateInfo const & ) const = default; +#else + bool operator==( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorSetCount == rhs.descriptorSetCount ) && + ( pDescriptorCounts == rhs.pDescriptorCounts ); +# endif + } + + bool operator!=( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo; + const void * pNext = {}; + uint32_t descriptorSetCount = {}; + const uint32_t * pDescriptorCounts = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo ) == + sizeof( VkDescriptorSetVariableDescriptorCountAllocateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DescriptorSetVariableDescriptorCountAllocateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DescriptorSetVariableDescriptorCountAllocateInfo; + }; + using DescriptorSetVariableDescriptorCountAllocateInfoEXT = DescriptorSetVariableDescriptorCountAllocateInfo; + + struct DescriptorSetVariableDescriptorCountLayoutSupport + { + using NativeType = VkDescriptorSetVariableDescriptorCountLayoutSupport; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DescriptorSetVariableDescriptorCountLayoutSupport( uint32_t maxVariableDescriptorCount_ = {} ) VULKAN_HPP_NOEXCEPT + : maxVariableDescriptorCount( maxVariableDescriptorCount_ ) + {} + + VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountLayoutSupport( + DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetVariableDescriptorCountLayoutSupport( VkDescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) + VULKAN_HPP_NOEXCEPT + : DescriptorSetVariableDescriptorCountLayoutSupport( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DescriptorSetVariableDescriptorCountLayoutSupport & + operator=( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetVariableDescriptorCountLayoutSupport & + operator=( VkDescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDescriptorSetVariableDescriptorCountLayoutSupport const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDescriptorSetVariableDescriptorCountLayoutSupport &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxVariableDescriptorCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetVariableDescriptorCountLayoutSupport const & ) const = default; +#else + bool operator==( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( maxVariableDescriptorCount == rhs.maxVariableDescriptorCount ); +# endif + } + + bool operator!=( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport; + void * pNext = {}; + uint32_t maxVariableDescriptorCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport ) == + sizeof( VkDescriptorSetVariableDescriptorCountLayoutSupport ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DescriptorSetVariableDescriptorCountLayoutSupport is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DescriptorSetVariableDescriptorCountLayoutSupport; + }; + using DescriptorSetVariableDescriptorCountLayoutSupportEXT = DescriptorSetVariableDescriptorCountLayoutSupport; + + struct DescriptorUpdateTemplateEntry + { + using NativeType = VkDescriptorUpdateTemplateEntry; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateEntry( + uint32_t dstBinding_ = {}, + uint32_t dstArrayElement_ = {}, + uint32_t descriptorCount_ = {}, + VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler, + size_t offset_ = {}, + size_t stride_ = {} ) VULKAN_HPP_NOEXCEPT + : dstBinding( dstBinding_ ) + , dstArrayElement( dstArrayElement_ ) + , descriptorCount( descriptorCount_ ) + , descriptorType( descriptorType_ ) + , offset( offset_ ) + , stride( stride_ ) + {} + + VULKAN_HPP_CONSTEXPR + DescriptorUpdateTemplateEntry( DescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorUpdateTemplateEntry( VkDescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorUpdateTemplateEntry( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DescriptorUpdateTemplateEntry & + operator=( DescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorUpdateTemplateEntry & operator=( VkDescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT + { + dstBinding = dstBinding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & + setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT + { + dstArrayElement = dstArrayElement_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & + setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT + { + descriptorCount = descriptorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & + setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT + { + descriptorType = descriptorType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setOffset( size_t offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setStride( size_t stride_ ) VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDescriptorUpdateTemplateEntry const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDescriptorUpdateTemplateEntry &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( dstBinding, dstArrayElement, descriptorCount, descriptorType, offset, stride ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorUpdateTemplateEntry const & ) const = default; +#else + bool operator==( DescriptorUpdateTemplateEntry const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( dstBinding == rhs.dstBinding ) && ( dstArrayElement == rhs.dstArrayElement ) && + ( descriptorCount == rhs.descriptorCount ) && ( descriptorType == rhs.descriptorType ) && + ( offset == rhs.offset ) && ( stride == rhs.stride ); +# endif + } + + bool operator!=( DescriptorUpdateTemplateEntry const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t dstBinding = {}; + uint32_t dstArrayElement = {}; + uint32_t descriptorCount = {}; + VULKAN_HPP_NAMESPACE::DescriptorType descriptorType = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler; + size_t offset = {}; + size_t stride = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry ) == + sizeof( VkDescriptorUpdateTemplateEntry ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DescriptorUpdateTemplateEntry is not nothrow_move_constructible!" ); + using DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry; + + struct DescriptorUpdateTemplateCreateInfo + { + using NativeType = VkDescriptorUpdateTemplateCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDescriptorUpdateTemplateCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateCreateInfo( + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags flags_ = {}, + uint32_t descriptorUpdateEntryCount_ = {}, + const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry * pDescriptorUpdateEntries_ = {}, + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType templateType_ = + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet, + VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ = {}, + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, + VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout_ = {}, + uint32_t set_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ ) + , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ ) + , templateType( templateType_ ) + , descriptorSetLayout( descriptorSetLayout_ ) + , pipelineBindPoint( pipelineBindPoint_ ) + , pipelineLayout( pipelineLayout_ ) + , set( set_ ) + {} + + VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateCreateInfo( DescriptorUpdateTemplateCreateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + DescriptorUpdateTemplateCreateInfo( VkDescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorUpdateTemplateCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorUpdateTemplateCreateInfo( + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + descriptorUpdateEntries_, + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType templateType_ = + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet, + VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ = {}, + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, + VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout_ = {}, + uint32_t set_ = {} ) + : flags( flags_ ) + , descriptorUpdateEntryCount( static_cast( descriptorUpdateEntries_.size() ) ) + , pDescriptorUpdateEntries( descriptorUpdateEntries_.data() ) + , templateType( templateType_ ) + , descriptorSetLayout( descriptorSetLayout_ ) + , pipelineBindPoint( pipelineBindPoint_ ) + , pipelineLayout( pipelineLayout_ ) + , set( set_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DescriptorUpdateTemplateCreateInfo & + operator=( DescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorUpdateTemplateCreateInfo & + operator=( VkDescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & + setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ ) VULKAN_HPP_NOEXCEPT + { + descriptorUpdateEntryCount = descriptorUpdateEntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setPDescriptorUpdateEntries( + const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry * pDescriptorUpdateEntries_ ) VULKAN_HPP_NOEXCEPT + { + pDescriptorUpdateEntries = pDescriptorUpdateEntries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorUpdateTemplateCreateInfo & setDescriptorUpdateEntries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + descriptorUpdateEntries_ ) VULKAN_HPP_NOEXCEPT + { + descriptorUpdateEntryCount = static_cast( descriptorUpdateEntries_.size() ); + pDescriptorUpdateEntries = descriptorUpdateEntries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & + setTemplateType( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType templateType_ ) VULKAN_HPP_NOEXCEPT + { + templateType = templateType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & + setDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ ) VULKAN_HPP_NOEXCEPT + { + descriptorSetLayout = descriptorSetLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & + setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & + setPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout_ ) VULKAN_HPP_NOEXCEPT + { + pipelineLayout = pipelineLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setSet( uint32_t set_ ) VULKAN_HPP_NOEXCEPT + { + set = set_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDescriptorUpdateTemplateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDescriptorUpdateTemplateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + descriptorUpdateEntryCount, + pDescriptorUpdateEntries, + templateType, + descriptorSetLayout, + pipelineBindPoint, + pipelineLayout, + set ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorUpdateTemplateCreateInfo const & ) const = default; +#else + bool operator==( DescriptorUpdateTemplateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount ) && + ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries ) && ( templateType == rhs.templateType ) && + ( descriptorSetLayout == rhs.descriptorSetLayout ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && + ( pipelineLayout == rhs.pipelineLayout ) && ( set == rhs.set ); +# endif + } + + bool operator!=( DescriptorUpdateTemplateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorUpdateTemplateCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags flags = {}; + uint32_t descriptorUpdateEntryCount = {}; + const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry * pDescriptorUpdateEntries = {}; + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType templateType = + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet; + VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout = {}; + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics; + VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout = {}; + uint32_t set = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo ) == + sizeof( VkDescriptorUpdateTemplateCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DescriptorUpdateTemplateCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DescriptorUpdateTemplateCreateInfo; + }; + using DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo; + + struct DeviceBufferMemoryRequirements + { + using NativeType = VkDeviceBufferMemoryRequirements; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceBufferMemoryRequirements; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceBufferMemoryRequirements( + const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo_ = {} ) VULKAN_HPP_NOEXCEPT + : pCreateInfo( pCreateInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR + DeviceBufferMemoryRequirements( DeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceBufferMemoryRequirements( VkDeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceBufferMemoryRequirements( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceBufferMemoryRequirements & + operator=( DeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceBufferMemoryRequirements & operator=( VkDeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceBufferMemoryRequirements & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceBufferMemoryRequirements & + setPCreateInfo( const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo_ ) VULKAN_HPP_NOEXCEPT + { + pCreateInfo = pCreateInfo_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceBufferMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceBufferMemoryRequirements &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pCreateInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceBufferMemoryRequirements const & ) const = default; +#else + bool operator==( DeviceBufferMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pCreateInfo == rhs.pCreateInfo ); +# endif + } + + bool operator!=( DeviceBufferMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceBufferMemoryRequirements; + const void * pNext = {}; + const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements ) == + sizeof( VkDeviceBufferMemoryRequirements ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DeviceBufferMemoryRequirements is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceBufferMemoryRequirements; + }; + using DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirements; + + struct DeviceQueueCreateInfo + { + using NativeType = VkDeviceQueueCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceQueueCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceQueueCreateInfo( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ = {}, + uint32_t queueFamilyIndex_ = {}, + uint32_t queueCount_ = {}, + const float * pQueuePriorities_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , queueFamilyIndex( queueFamilyIndex_ ) + , queueCount( queueCount_ ) + , pQueuePriorities( pQueuePriorities_ ) + {} + + VULKAN_HPP_CONSTEXPR DeviceQueueCreateInfo( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceQueueCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceQueueCreateInfo( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_, + uint32_t queueFamilyIndex_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queuePriorities_ ) + : flags( flags_ ) + , queueFamilyIndex( queueFamilyIndex_ ) + , queueCount( static_cast( queuePriorities_.size() ) ) + , pQueuePriorities( queuePriorities_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceQueueCreateInfo & operator=( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceQueueCreateInfo & operator=( VkDeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & + setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setQueueCount( uint32_t queueCount_ ) VULKAN_HPP_NOEXCEPT + { + queueCount = queueCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & + setPQueuePriorities( const float * pQueuePriorities_ ) VULKAN_HPP_NOEXCEPT + { + pQueuePriorities = pQueuePriorities_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceQueueCreateInfo & setQueuePriorities( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queuePriorities_ ) VULKAN_HPP_NOEXCEPT + { + queueCount = static_cast( queuePriorities_.size() ); + pQueuePriorities = queuePriorities_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceQueueCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceQueueCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, queueFamilyIndex, queueCount, pQueuePriorities ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceQueueCreateInfo const & ) const = default; +#else + bool operator==( DeviceQueueCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( queueFamilyIndex == rhs.queueFamilyIndex ) && ( queueCount == rhs.queueCount ) && + ( pQueuePriorities == rhs.pQueuePriorities ); +# endif + } + + bool operator!=( DeviceQueueCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceQueueCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags = {}; + uint32_t queueFamilyIndex = {}; + uint32_t queueCount = {}; + const float * pQueuePriorities = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceQueueCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceQueueCreateInfo; + }; + + struct PhysicalDeviceFeatures + { + using NativeType = VkPhysicalDeviceFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFeatures( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 independentBlend_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 geometryShader_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 tessellationShader_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 logicOp_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 depthClamp_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 depthBounds_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 wideLines_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 largePoints_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 alphaToOne_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 multiViewport_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderInt64_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderInt16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 sparseBinding_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries_ = {} ) VULKAN_HPP_NOEXCEPT + : robustBufferAccess( robustBufferAccess_ ) + , fullDrawIndexUint32( fullDrawIndexUint32_ ) + , imageCubeArray( imageCubeArray_ ) + , independentBlend( independentBlend_ ) + , geometryShader( geometryShader_ ) + , tessellationShader( tessellationShader_ ) + , sampleRateShading( sampleRateShading_ ) + , dualSrcBlend( dualSrcBlend_ ) + , logicOp( logicOp_ ) + , multiDrawIndirect( multiDrawIndirect_ ) + , drawIndirectFirstInstance( drawIndirectFirstInstance_ ) + , depthClamp( depthClamp_ ) + , depthBiasClamp( depthBiasClamp_ ) + , fillModeNonSolid( fillModeNonSolid_ ) + , depthBounds( depthBounds_ ) + , wideLines( wideLines_ ) + , largePoints( largePoints_ ) + , alphaToOne( alphaToOne_ ) + , multiViewport( multiViewport_ ) + , samplerAnisotropy( samplerAnisotropy_ ) + , textureCompressionETC2( textureCompressionETC2_ ) + , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ ) + , textureCompressionBC( textureCompressionBC_ ) + , occlusionQueryPrecise( occlusionQueryPrecise_ ) + , pipelineStatisticsQuery( pipelineStatisticsQuery_ ) + , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ ) + , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ ) + , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ ) + , shaderImageGatherExtended( shaderImageGatherExtended_ ) + , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ ) + , shaderStorageImageMultisample( shaderStorageImageMultisample_ ) + , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ ) + , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ ) + , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ ) + , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ ) + , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ ) + , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ ) + , shaderClipDistance( shaderClipDistance_ ) + , shaderCullDistance( shaderCullDistance_ ) + , shaderFloat64( shaderFloat64_ ) + , shaderInt64( shaderInt64_ ) + , shaderInt16( shaderInt16_ ) + , shaderResourceResidency( shaderResourceResidency_ ) + , shaderResourceMinLod( shaderResourceMinLod_ ) + , sparseBinding( sparseBinding_ ) + , sparseResidencyBuffer( sparseResidencyBuffer_ ) + , sparseResidencyImage2D( sparseResidencyImage2D_ ) + , sparseResidencyImage3D( sparseResidencyImage3D_ ) + , sparseResidency2Samples( sparseResidency2Samples_ ) + , sparseResidency4Samples( sparseResidency4Samples_ ) + , sparseResidency8Samples( sparseResidency8Samples_ ) + , sparseResidency16Samples( sparseResidency16Samples_ ) + , sparseResidencyAliased( sparseResidencyAliased_ ) + , variableMultisampleRate( variableMultisampleRate_ ) + , inheritedQueries( inheritedQueries_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFeatures( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFeatures & operator=( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFeatures & operator=( VkPhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setRobustBufferAccess( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess_ ) VULKAN_HPP_NOEXCEPT + { + robustBufferAccess = robustBufferAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setFullDrawIndexUint32( VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32_ ) VULKAN_HPP_NOEXCEPT + { + fullDrawIndexUint32 = fullDrawIndexUint32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setImageCubeArray( VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray_ ) VULKAN_HPP_NOEXCEPT + { + imageCubeArray = imageCubeArray_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setIndependentBlend( VULKAN_HPP_NAMESPACE::Bool32 independentBlend_ ) VULKAN_HPP_NOEXCEPT + { + independentBlend = independentBlend_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 geometryShader_ ) VULKAN_HPP_NOEXCEPT + { + geometryShader = geometryShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 tessellationShader_ ) VULKAN_HPP_NOEXCEPT + { + tessellationShader = tessellationShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setSampleRateShading( VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading_ ) VULKAN_HPP_NOEXCEPT + { + sampleRateShading = sampleRateShading_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setDualSrcBlend( VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend_ ) VULKAN_HPP_NOEXCEPT + { + dualSrcBlend = dualSrcBlend_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setLogicOp( VULKAN_HPP_NAMESPACE::Bool32 logicOp_ ) VULKAN_HPP_NOEXCEPT + { + logicOp = logicOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setMultiDrawIndirect( VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect_ ) VULKAN_HPP_NOEXCEPT + { + multiDrawIndirect = multiDrawIndirect_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setDrawIndirectFirstInstance( VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance_ ) VULKAN_HPP_NOEXCEPT + { + drawIndirectFirstInstance = drawIndirectFirstInstance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setDepthClamp( VULKAN_HPP_NAMESPACE::Bool32 depthClamp_ ) VULKAN_HPP_NOEXCEPT + { + depthClamp = depthClamp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setDepthBiasClamp( VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp_ ) VULKAN_HPP_NOEXCEPT + { + depthBiasClamp = depthBiasClamp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setFillModeNonSolid( VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid_ ) VULKAN_HPP_NOEXCEPT + { + fillModeNonSolid = fillModeNonSolid_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setDepthBounds( VULKAN_HPP_NAMESPACE::Bool32 depthBounds_ ) VULKAN_HPP_NOEXCEPT + { + depthBounds = depthBounds_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setWideLines( VULKAN_HPP_NAMESPACE::Bool32 wideLines_ ) VULKAN_HPP_NOEXCEPT + { + wideLines = wideLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setLargePoints( VULKAN_HPP_NAMESPACE::Bool32 largePoints_ ) VULKAN_HPP_NOEXCEPT + { + largePoints = largePoints_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setAlphaToOne( VULKAN_HPP_NAMESPACE::Bool32 alphaToOne_ ) VULKAN_HPP_NOEXCEPT + { + alphaToOne = alphaToOne_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setMultiViewport( VULKAN_HPP_NAMESPACE::Bool32 multiViewport_ ) VULKAN_HPP_NOEXCEPT + { + multiViewport = multiViewport_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setSamplerAnisotropy( VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy_ ) VULKAN_HPP_NOEXCEPT + { + samplerAnisotropy = samplerAnisotropy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setTextureCompressionETC2( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2_ ) VULKAN_HPP_NOEXCEPT + { + textureCompressionETC2 = textureCompressionETC2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setTextureCompressionASTC_LDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR_ ) VULKAN_HPP_NOEXCEPT + { + textureCompressionASTC_LDR = textureCompressionASTC_LDR_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setTextureCompressionBC( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC_ ) VULKAN_HPP_NOEXCEPT + { + textureCompressionBC = textureCompressionBC_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setOcclusionQueryPrecise( VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise_ ) VULKAN_HPP_NOEXCEPT + { + occlusionQueryPrecise = occlusionQueryPrecise_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setPipelineStatisticsQuery( VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery_ ) VULKAN_HPP_NOEXCEPT + { + pipelineStatisticsQuery = pipelineStatisticsQuery_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setVertexPipelineStoresAndAtomics( + VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics_ ) VULKAN_HPP_NOEXCEPT + { + vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setFragmentStoresAndAtomics( VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics_ ) VULKAN_HPP_NOEXCEPT + { + fragmentStoresAndAtomics = fragmentStoresAndAtomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderTessellationAndGeometryPointSize( + VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize_ ) VULKAN_HPP_NOEXCEPT + { + shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setShaderImageGatherExtended( VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended_ ) VULKAN_HPP_NOEXCEPT + { + shaderImageGatherExtended = shaderImageGatherExtended_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageExtendedFormats( + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats_ ) VULKAN_HPP_NOEXCEPT + { + shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageMultisample( + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample_ ) VULKAN_HPP_NOEXCEPT + { + shaderStorageImageMultisample = shaderStorageImageMultisample_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageReadWithoutFormat( + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat_ ) VULKAN_HPP_NOEXCEPT + { + shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageWriteWithoutFormat( + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat_ ) VULKAN_HPP_NOEXCEPT + { + shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderUniformBufferArrayDynamicIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderSampledImageArrayDynamicIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageBufferArrayDynamicIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageArrayDynamicIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setShaderClipDistance( VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance_ ) VULKAN_HPP_NOEXCEPT + { + shaderClipDistance = shaderClipDistance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setShaderCullDistance( VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance_ ) VULKAN_HPP_NOEXCEPT + { + shaderCullDistance = shaderCullDistance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setShaderFloat64( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64_ ) VULKAN_HPP_NOEXCEPT + { + shaderFloat64 = shaderFloat64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setShaderInt64( VULKAN_HPP_NAMESPACE::Bool32 shaderInt64_ ) VULKAN_HPP_NOEXCEPT + { + shaderInt64 = shaderInt64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setShaderInt16( VULKAN_HPP_NAMESPACE::Bool32 shaderInt16_ ) VULKAN_HPP_NOEXCEPT + { + shaderInt16 = shaderInt16_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setShaderResourceResidency( VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency_ ) VULKAN_HPP_NOEXCEPT + { + shaderResourceResidency = shaderResourceResidency_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setShaderResourceMinLod( VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod_ ) VULKAN_HPP_NOEXCEPT + { + shaderResourceMinLod = shaderResourceMinLod_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setSparseBinding( VULKAN_HPP_NAMESPACE::Bool32 sparseBinding_ ) VULKAN_HPP_NOEXCEPT + { + sparseBinding = sparseBinding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setSparseResidencyBuffer( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer_ ) VULKAN_HPP_NOEXCEPT + { + sparseResidencyBuffer = sparseResidencyBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setSparseResidencyImage2D( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D_ ) VULKAN_HPP_NOEXCEPT + { + sparseResidencyImage2D = sparseResidencyImage2D_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setSparseResidencyImage3D( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D_ ) VULKAN_HPP_NOEXCEPT + { + sparseResidencyImage3D = sparseResidencyImage3D_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setSparseResidency2Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples_ ) VULKAN_HPP_NOEXCEPT + { + sparseResidency2Samples = sparseResidency2Samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setSparseResidency4Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples_ ) VULKAN_HPP_NOEXCEPT + { + sparseResidency4Samples = sparseResidency4Samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setSparseResidency8Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples_ ) VULKAN_HPP_NOEXCEPT + { + sparseResidency8Samples = sparseResidency8Samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setSparseResidency16Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples_ ) VULKAN_HPP_NOEXCEPT + { + sparseResidency16Samples = sparseResidency16Samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setSparseResidencyAliased( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased_ ) VULKAN_HPP_NOEXCEPT + { + sparseResidencyAliased = sparseResidencyAliased_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setVariableMultisampleRate( VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate_ ) VULKAN_HPP_NOEXCEPT + { + variableMultisampleRate = variableMultisampleRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & + setInheritedQueries( VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries_ ) VULKAN_HPP_NOEXCEPT + { + inheritedQueries = inheritedQueries_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( robustBufferAccess, + fullDrawIndexUint32, + imageCubeArray, + independentBlend, + geometryShader, + tessellationShader, + sampleRateShading, + dualSrcBlend, + logicOp, + multiDrawIndirect, + drawIndirectFirstInstance, + depthClamp, + depthBiasClamp, + fillModeNonSolid, + depthBounds, + wideLines, + largePoints, + alphaToOne, + multiViewport, + samplerAnisotropy, + textureCompressionETC2, + textureCompressionASTC_LDR, + textureCompressionBC, + occlusionQueryPrecise, + pipelineStatisticsQuery, + vertexPipelineStoresAndAtomics, + fragmentStoresAndAtomics, + shaderTessellationAndGeometryPointSize, + shaderImageGatherExtended, + shaderStorageImageExtendedFormats, + shaderStorageImageMultisample, + shaderStorageImageReadWithoutFormat, + shaderStorageImageWriteWithoutFormat, + shaderUniformBufferArrayDynamicIndexing, + shaderSampledImageArrayDynamicIndexing, + shaderStorageBufferArrayDynamicIndexing, + shaderStorageImageArrayDynamicIndexing, + shaderClipDistance, + shaderCullDistance, + shaderFloat64, + shaderInt64, + shaderInt16, + shaderResourceResidency, + shaderResourceMinLod, + sparseBinding, + sparseResidencyBuffer, + sparseResidencyImage2D, + sparseResidencyImage3D, + sparseResidency2Samples, + sparseResidency4Samples, + sparseResidency8Samples, + sparseResidency16Samples, + sparseResidencyAliased, + variableMultisampleRate, + inheritedQueries ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( robustBufferAccess == rhs.robustBufferAccess ) && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 ) && + ( imageCubeArray == rhs.imageCubeArray ) && ( independentBlend == rhs.independentBlend ) && + ( geometryShader == rhs.geometryShader ) && ( tessellationShader == rhs.tessellationShader ) && + ( sampleRateShading == rhs.sampleRateShading ) && ( dualSrcBlend == rhs.dualSrcBlend ) && + ( logicOp == rhs.logicOp ) && ( multiDrawIndirect == rhs.multiDrawIndirect ) && + ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance ) && ( depthClamp == rhs.depthClamp ) && + ( depthBiasClamp == rhs.depthBiasClamp ) && ( fillModeNonSolid == rhs.fillModeNonSolid ) && + ( depthBounds == rhs.depthBounds ) && ( wideLines == rhs.wideLines ) && + ( largePoints == rhs.largePoints ) && ( alphaToOne == rhs.alphaToOne ) && + ( multiViewport == rhs.multiViewport ) && ( samplerAnisotropy == rhs.samplerAnisotropy ) && + ( textureCompressionETC2 == rhs.textureCompressionETC2 ) && + ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR ) && + ( textureCompressionBC == rhs.textureCompressionBC ) && + ( occlusionQueryPrecise == rhs.occlusionQueryPrecise ) && + ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery ) && + ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics ) && + ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics ) && + ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize ) && + ( shaderImageGatherExtended == rhs.shaderImageGatherExtended ) && + ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats ) && + ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample ) && + ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat ) && + ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat ) && + ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing ) && + ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing ) && + ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing ) && + ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing ) && + ( shaderClipDistance == rhs.shaderClipDistance ) && ( shaderCullDistance == rhs.shaderCullDistance ) && + ( shaderFloat64 == rhs.shaderFloat64 ) && ( shaderInt64 == rhs.shaderInt64 ) && + ( shaderInt16 == rhs.shaderInt16 ) && ( shaderResourceResidency == rhs.shaderResourceResidency ) && + ( shaderResourceMinLod == rhs.shaderResourceMinLod ) && ( sparseBinding == rhs.sparseBinding ) && + ( sparseResidencyBuffer == rhs.sparseResidencyBuffer ) && + ( sparseResidencyImage2D == rhs.sparseResidencyImage2D ) && + ( sparseResidencyImage3D == rhs.sparseResidencyImage3D ) && + ( sparseResidency2Samples == rhs.sparseResidency2Samples ) && + ( sparseResidency4Samples == rhs.sparseResidency4Samples ) && + ( sparseResidency8Samples == rhs.sparseResidency8Samples ) && + ( sparseResidency16Samples == rhs.sparseResidency16Samples ) && + ( sparseResidencyAliased == rhs.sparseResidencyAliased ) && + ( variableMultisampleRate == rhs.variableMultisampleRate ) && ( inheritedQueries == rhs.inheritedQueries ); +# endif + } + + bool operator!=( PhysicalDeviceFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess = {}; + VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32 = {}; + VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray = {}; + VULKAN_HPP_NAMESPACE::Bool32 independentBlend = {}; + VULKAN_HPP_NAMESPACE::Bool32 geometryShader = {}; + VULKAN_HPP_NAMESPACE::Bool32 tessellationShader = {}; + VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading = {}; + VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend = {}; + VULKAN_HPP_NAMESPACE::Bool32 logicOp = {}; + VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect = {}; + VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance = {}; + VULKAN_HPP_NAMESPACE::Bool32 depthClamp = {}; + VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp = {}; + VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid = {}; + VULKAN_HPP_NAMESPACE::Bool32 depthBounds = {}; + VULKAN_HPP_NAMESPACE::Bool32 wideLines = {}; + VULKAN_HPP_NAMESPACE::Bool32 largePoints = {}; + VULKAN_HPP_NAMESPACE::Bool32 alphaToOne = {}; + VULKAN_HPP_NAMESPACE::Bool32 multiViewport = {}; + VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy = {}; + VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2 = {}; + VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR = {}; + VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC = {}; + VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise = {}; + VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery = {}; + VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderInt64 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderInt16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod = {}; + VULKAN_HPP_NAMESPACE::Bool32 sparseBinding = {}; + VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer = {}; + VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D = {}; + VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D = {}; + VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples = {}; + VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples = {}; + VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples = {}; + VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples = {}; + VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased = {}; + VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate = {}; + VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures ) == + sizeof( VkPhysicalDeviceFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFeatures is not nothrow_move_constructible!" ); + + struct DeviceCreateInfo + { + using NativeType = VkDeviceCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceCreateInfo( VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags_ = {}, + uint32_t queueCreateInfoCount_ = {}, + const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo * pQueueCreateInfos_ = {}, + uint32_t enabledLayerCount_ = {}, + const char * const * ppEnabledLayerNames_ = {}, + uint32_t enabledExtensionCount_ = {}, + const char * const * ppEnabledExtensionNames_ = {}, + const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures_ = {} ) + VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , queueCreateInfoCount( queueCreateInfoCount_ ) + , pQueueCreateInfos( pQueueCreateInfos_ ) + , enabledLayerCount( enabledLayerCount_ ) + , ppEnabledLayerNames( ppEnabledLayerNames_ ) + , enabledExtensionCount( enabledExtensionCount_ ) + , ppEnabledExtensionNames( ppEnabledExtensionNames_ ) + , pEnabledFeatures( pEnabledFeatures_ ) + {} + + VULKAN_HPP_CONSTEXPR DeviceCreateInfo( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceCreateInfo( VkDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceCreateInfo( + VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + queueCreateInfos_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pEnabledLayerNames_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pEnabledExtensionNames_ = {}, + const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures_ = {} ) + : flags( flags_ ) + , queueCreateInfoCount( static_cast( queueCreateInfos_.size() ) ) + , pQueueCreateInfos( queueCreateInfos_.data() ) + , enabledLayerCount( static_cast( pEnabledLayerNames_.size() ) ) + , ppEnabledLayerNames( pEnabledLayerNames_.data() ) + , enabledExtensionCount( static_cast( pEnabledExtensionNames_.size() ) ) + , ppEnabledExtensionNames( pEnabledExtensionNames_.data() ) + , pEnabledFeatures( pEnabledFeatures_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceCreateInfo & operator=( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceCreateInfo & operator=( VkDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & + setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ ) VULKAN_HPP_NOEXCEPT + { + queueCreateInfoCount = queueCreateInfoCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & + setPQueueCreateInfos( const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo * pQueueCreateInfos_ ) VULKAN_HPP_NOEXCEPT + { + pQueueCreateInfos = pQueueCreateInfos_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceCreateInfo & setQueueCreateInfos( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + queueCreateInfos_ ) VULKAN_HPP_NOEXCEPT + { + queueCreateInfoCount = static_cast( queueCreateInfos_.size() ); + pQueueCreateInfos = queueCreateInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) VULKAN_HPP_NOEXCEPT + { + enabledLayerCount = enabledLayerCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & + setPpEnabledLayerNames( const char * const * ppEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT + { + ppEnabledLayerNames = ppEnabledLayerNames_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceCreateInfo & setPEnabledLayerNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + pEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT + { + enabledLayerCount = static_cast( pEnabledLayerNames_.size() ); + ppEnabledLayerNames = pEnabledLayerNames_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & + setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) VULKAN_HPP_NOEXCEPT + { + enabledExtensionCount = enabledExtensionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & + setPpEnabledExtensionNames( const char * const * ppEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT + { + ppEnabledExtensionNames = ppEnabledExtensionNames_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceCreateInfo & setPEnabledExtensionNames( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pEnabledExtensionNames_ ) + VULKAN_HPP_NOEXCEPT + { + enabledExtensionCount = static_cast( pEnabledExtensionNames_.size() ); + ppEnabledExtensionNames = pEnabledExtensionNames_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & + setPEnabledFeatures( const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures_ ) VULKAN_HPP_NOEXCEPT + { + pEnabledFeatures = pEnabledFeatures_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + queueCreateInfoCount, + pQueueCreateInfos, + enabledLayerCount, + ppEnabledLayerNames, + enabledExtensionCount, + ppEnabledExtensionNames, + pEnabledFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = queueCreateInfoCount <=> rhs.queueCreateInfoCount; cmp != 0 ) + return cmp; + if ( auto cmp = pQueueCreateInfos <=> rhs.pQueueCreateInfos; cmp != 0 ) + return cmp; + if ( auto cmp = enabledLayerCount <=> rhs.enabledLayerCount; cmp != 0 ) + return cmp; + for ( size_t i = 0; i < enabledLayerCount; ++i ) + { + if ( ppEnabledLayerNames[i] != rhs.ppEnabledLayerNames[i] ) + if ( auto cmp = strcmp( ppEnabledLayerNames[i], rhs.ppEnabledLayerNames[i] ); cmp != 0 ) + return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater; + } + if ( auto cmp = enabledExtensionCount <=> rhs.enabledExtensionCount; cmp != 0 ) + return cmp; + for ( size_t i = 0; i < enabledExtensionCount; ++i ) + { + if ( ppEnabledExtensionNames[i] != rhs.ppEnabledExtensionNames[i] ) + if ( auto cmp = strcmp( ppEnabledExtensionNames[i], rhs.ppEnabledExtensionNames[i] ); cmp != 0 ) + return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater; + } + if ( auto cmp = pEnabledFeatures <=> rhs.pEnabledFeatures; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( queueCreateInfoCount == rhs.queueCreateInfoCount ) && ( pQueueCreateInfos == rhs.pQueueCreateInfos ) && + ( enabledLayerCount == rhs.enabledLayerCount ) && + [this, rhs] + { + bool equal = true; + for ( size_t i = 0; equal && ( i < enabledLayerCount ); ++i ) + { + equal = ( ( ppEnabledLayerNames[i] == rhs.ppEnabledLayerNames[i] ) || + ( strcmp( ppEnabledLayerNames[i], rhs.ppEnabledLayerNames[i] ) == 0 ) ); + } + return equal; + }() && ( enabledExtensionCount == rhs.enabledExtensionCount ) && + [this, rhs] + { + bool equal = true; + for ( size_t i = 0; equal && ( i < enabledExtensionCount ); ++i ) + { + equal = ( ( ppEnabledExtensionNames[i] == rhs.ppEnabledExtensionNames[i] ) || + ( strcmp( ppEnabledExtensionNames[i], rhs.ppEnabledExtensionNames[i] ) == 0 ) ); + } + return equal; + }() && ( pEnabledFeatures == rhs.pEnabledFeatures ); + } + + bool operator!=( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags = {}; + uint32_t queueCreateInfoCount = {}; + const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo * pQueueCreateInfos = {}; + uint32_t enabledLayerCount = {}; + const char * const * ppEnabledLayerNames = {}; + uint32_t enabledExtensionCount = {}; + const char * const * ppEnabledExtensionNames = {}; + const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceCreateInfo; + }; + + struct DeviceDeviceMemoryReportCreateInfoEXT + { + using NativeType = VkDeviceDeviceMemoryReportCreateInfoEXT; + + static const bool allowDuplicate = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDeviceDeviceMemoryReportCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DeviceDeviceMemoryReportCreateInfoEXT( VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags_ = {}, + PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback_ = {}, + void * pUserData_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , pfnUserCallback( pfnUserCallback_ ) + , pUserData( pUserData_ ) + {} + + VULKAN_HPP_CONSTEXPR DeviceDeviceMemoryReportCreateInfoEXT( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + DeviceDeviceMemoryReportCreateInfoEXT( VkDeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceDeviceMemoryReportCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceDeviceMemoryReportCreateInfoEXT & + operator=( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceDeviceMemoryReportCreateInfoEXT & + operator=( VkDeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & + setPfnUserCallback( PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback_ ) VULKAN_HPP_NOEXCEPT + { + pfnUserCallback = pfnUserCallback_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & + setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT + { + pUserData = pUserData_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceDeviceMemoryReportCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceDeviceMemoryReportCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pfnUserCallback, pUserData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceDeviceMemoryReportCreateInfoEXT const & ) const = default; +#else + bool operator==( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( pfnUserCallback == rhs.pfnUserCallback ) && ( pUserData == rhs.pUserData ); +# endif + } + + bool operator!=( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceDeviceMemoryReportCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags = {}; + PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback = {}; + void * pUserData = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT ) == + sizeof( VkDeviceDeviceMemoryReportCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DeviceDeviceMemoryReportCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceDeviceMemoryReportCreateInfoEXT; + }; + + struct DeviceDiagnosticsConfigCreateInfoNV + { + using NativeType = VkDeviceDiagnosticsConfigCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDeviceDiagnosticsConfigCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigCreateInfoNV( + VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags_ = {} ) VULKAN_HPP_NOEXCEPT : flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigCreateInfoNV( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + DeviceDiagnosticsConfigCreateInfoNV( VkDeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceDiagnosticsConfigCreateInfoNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceDiagnosticsConfigCreateInfoNV & + operator=( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceDiagnosticsConfigCreateInfoNV & + operator=( VkDeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceDiagnosticsConfigCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceDiagnosticsConfigCreateInfoNV & + setFlags( VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceDiagnosticsConfigCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceDiagnosticsConfigCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceDiagnosticsConfigCreateInfoNV const & ) const = default; +#else + bool operator==( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceDiagnosticsConfigCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV ) == + sizeof( VkDeviceDiagnosticsConfigCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DeviceDiagnosticsConfigCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceDiagnosticsConfigCreateInfoNV; + }; + + struct DeviceEventInfoEXT + { + using NativeType = VkDeviceEventInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceEventInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DeviceEventInfoEXT( VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent_ = + VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT::eDisplayHotplug ) VULKAN_HPP_NOEXCEPT + : deviceEvent( deviceEvent_ ) + {} + + VULKAN_HPP_CONSTEXPR DeviceEventInfoEXT( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceEventInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceEventInfoEXT & operator=( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceEventInfoEXT & operator=( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT & + setDeviceEvent( VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent_ ) VULKAN_HPP_NOEXCEPT + { + deviceEvent = deviceEvent_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceEventInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceEvent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceEventInfoEXT const & ) const = default; +#else + bool operator==( DeviceEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceEvent == rhs.deviceEvent ); +# endif + } + + bool operator!=( DeviceEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceEventInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent = VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT::eDisplayHotplug; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceEventInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceEventInfoEXT; + }; + + struct DeviceGroupBindSparseInfo + { + using NativeType = VkDeviceGroupBindSparseInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupBindSparseInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceGroupBindSparseInfo( uint32_t resourceDeviceIndex_ = {}, + uint32_t memoryDeviceIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : resourceDeviceIndex( resourceDeviceIndex_ ) + , memoryDeviceIndex( memoryDeviceIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR + DeviceGroupBindSparseInfo( DeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupBindSparseInfo( VkDeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupBindSparseInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceGroupBindSparseInfo & operator=( DeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupBindSparseInfo & operator=( VkDeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo & + setResourceDeviceIndex( uint32_t resourceDeviceIndex_ ) VULKAN_HPP_NOEXCEPT + { + resourceDeviceIndex = resourceDeviceIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo & + setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ ) VULKAN_HPP_NOEXCEPT + { + memoryDeviceIndex = memoryDeviceIndex_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceGroupBindSparseInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceGroupBindSparseInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, resourceDeviceIndex, memoryDeviceIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupBindSparseInfo const & ) const = default; +#else + bool operator==( DeviceGroupBindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( resourceDeviceIndex == rhs.resourceDeviceIndex ) && + ( memoryDeviceIndex == rhs.memoryDeviceIndex ); +# endif + } + + bool operator!=( DeviceGroupBindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupBindSparseInfo; + const void * pNext = {}; + uint32_t resourceDeviceIndex = {}; + uint32_t memoryDeviceIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo ) == + sizeof( VkDeviceGroupBindSparseInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceGroupBindSparseInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceGroupBindSparseInfo; + }; + using DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo; + + struct DeviceGroupCommandBufferBeginInfo + { + using NativeType = VkDeviceGroupCommandBufferBeginInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDeviceGroupCommandBufferBeginInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceGroupCommandBufferBeginInfo( uint32_t deviceMask_ = {} ) VULKAN_HPP_NOEXCEPT + : deviceMask( deviceMask_ ) + {} + + VULKAN_HPP_CONSTEXPR + DeviceGroupCommandBufferBeginInfo( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupCommandBufferBeginInfo( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupCommandBufferBeginInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceGroupCommandBufferBeginInfo & + operator=( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupCommandBufferBeginInfo & operator=( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo & + setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT + { + deviceMask = deviceMask_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceGroupCommandBufferBeginInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceGroupCommandBufferBeginInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupCommandBufferBeginInfo const & ) const = default; +#else + bool operator==( DeviceGroupCommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceMask == rhs.deviceMask ); +# endif + } + + bool operator!=( DeviceGroupCommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupCommandBufferBeginInfo; + const void * pNext = {}; + uint32_t deviceMask = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo ) == + sizeof( VkDeviceGroupCommandBufferBeginInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DeviceGroupCommandBufferBeginInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceGroupCommandBufferBeginInfo; + }; + using DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo; + + struct DeviceGroupDeviceCreateInfo + { + using NativeType = VkDeviceGroupDeviceCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupDeviceCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceGroupDeviceCreateInfo( + uint32_t physicalDeviceCount_ = {}, + const VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices_ = {} ) VULKAN_HPP_NOEXCEPT + : physicalDeviceCount( physicalDeviceCount_ ) + , pPhysicalDevices( pPhysicalDevices_ ) + {} + + VULKAN_HPP_CONSTEXPR + DeviceGroupDeviceCreateInfo( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupDeviceCreateInfo( VkDeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupDeviceCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupDeviceCreateInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + physicalDevices_ ) + : physicalDeviceCount( static_cast( physicalDevices_.size() ) ) + , pPhysicalDevices( physicalDevices_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceGroupDeviceCreateInfo & operator=( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupDeviceCreateInfo & operator=( VkDeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & + setPhysicalDeviceCount( uint32_t physicalDeviceCount_ ) VULKAN_HPP_NOEXCEPT + { + physicalDeviceCount = physicalDeviceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & + setPPhysicalDevices( const VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices_ ) VULKAN_HPP_NOEXCEPT + { + pPhysicalDevices = pPhysicalDevices_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupDeviceCreateInfo & setPhysicalDevices( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + physicalDevices_ ) VULKAN_HPP_NOEXCEPT + { + physicalDeviceCount = static_cast( physicalDevices_.size() ); + pPhysicalDevices = physicalDevices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceGroupDeviceCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceGroupDeviceCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, physicalDeviceCount, pPhysicalDevices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupDeviceCreateInfo const & ) const = default; +#else + bool operator==( DeviceGroupDeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( physicalDeviceCount == rhs.physicalDeviceCount ) && + ( pPhysicalDevices == rhs.pPhysicalDevices ); +# endif + } + + bool operator!=( DeviceGroupDeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupDeviceCreateInfo; + const void * pNext = {}; + uint32_t physicalDeviceCount = {}; + const VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo ) == + sizeof( VkDeviceGroupDeviceCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DeviceGroupDeviceCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceGroupDeviceCreateInfo; + }; + using DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo; + + struct DeviceGroupPresentCapabilitiesKHR + { + using NativeType = VkDeviceGroupPresentCapabilitiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDeviceGroupPresentCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentCapabilitiesKHR( + std::array const & presentMask_ = {}, + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes_ = {} ) VULKAN_HPP_NOEXCEPT + : presentMask( presentMask_ ) + , modes( modes_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + DeviceGroupPresentCapabilitiesKHR( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupPresentCapabilitiesKHR( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupPresentCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceGroupPresentCapabilitiesKHR & + operator=( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupPresentCapabilitiesKHR & operator=( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDeviceGroupPresentCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceGroupPresentCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentMask, modes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupPresentCapabilitiesKHR const & ) const = default; +#else + bool operator==( DeviceGroupPresentCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentMask == rhs.presentMask ) && + ( modes == rhs.modes ); +# endif + } + + bool operator!=( DeviceGroupPresentCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupPresentCapabilitiesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D presentMask = {}; + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR ) == + sizeof( VkDeviceGroupPresentCapabilitiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DeviceGroupPresentCapabilitiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceGroupPresentCapabilitiesKHR; + }; + + struct DeviceGroupPresentInfoKHR + { + using NativeType = VkDeviceGroupPresentInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupPresentInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DeviceGroupPresentInfoKHR( uint32_t swapchainCount_ = {}, + const uint32_t * pDeviceMasks_ = {}, + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_ = + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal ) VULKAN_HPP_NOEXCEPT + : swapchainCount( swapchainCount_ ) + , pDeviceMasks( pDeviceMasks_ ) + , mode( mode_ ) + {} + + VULKAN_HPP_CONSTEXPR + DeviceGroupPresentInfoKHR( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupPresentInfoKHR( VkDeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupPresentInfoKHR( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupPresentInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceMasks_, + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_ = + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal ) + : swapchainCount( static_cast( deviceMasks_.size() ) ) + , pDeviceMasks( deviceMasks_.data() ) + , mode( mode_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceGroupPresentInfoKHR & operator=( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupPresentInfoKHR & operator=( VkDeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & + setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & + setPDeviceMasks( const uint32_t * pDeviceMasks_ ) VULKAN_HPP_NOEXCEPT + { + pDeviceMasks = pDeviceMasks_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupPresentInfoKHR & setDeviceMasks( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceMasks_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( deviceMasks_.size() ); + pDeviceMasks = deviceMasks_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & + setMode( VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_ ) VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceGroupPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceGroupPresentInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchainCount, pDeviceMasks, mode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupPresentInfoKHR const & ) const = default; +#else + bool operator==( DeviceGroupPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && + ( pDeviceMasks == rhs.pDeviceMasks ) && ( mode == rhs.mode ); +# endif + } + + bool operator!=( DeviceGroupPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupPresentInfoKHR; + const void * pNext = {}; + uint32_t swapchainCount = {}; + const uint32_t * pDeviceMasks = {}; + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode = + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR ) == + sizeof( VkDeviceGroupPresentInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceGroupPresentInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceGroupPresentInfoKHR; + }; + + struct DeviceGroupRenderPassBeginInfo + { + using NativeType = VkDeviceGroupRenderPassBeginInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupRenderPassBeginInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceGroupRenderPassBeginInfo( uint32_t deviceMask_ = {}, + uint32_t deviceRenderAreaCount_ = {}, + const VULKAN_HPP_NAMESPACE::Rect2D * pDeviceRenderAreas_ = {} ) + VULKAN_HPP_NOEXCEPT + : deviceMask( deviceMask_ ) + , deviceRenderAreaCount( deviceRenderAreaCount_ ) + , pDeviceRenderAreas( pDeviceRenderAreas_ ) + {} + + VULKAN_HPP_CONSTEXPR + DeviceGroupRenderPassBeginInfo( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupRenderPassBeginInfo( VkDeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupRenderPassBeginInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupRenderPassBeginInfo( + uint32_t deviceMask_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceRenderAreas_ ) + : deviceMask( deviceMask_ ) + , deviceRenderAreaCount( static_cast( deviceRenderAreas_.size() ) ) + , pDeviceRenderAreas( deviceRenderAreas_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceGroupRenderPassBeginInfo & + operator=( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupRenderPassBeginInfo & operator=( VkDeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT + { + deviceMask = deviceMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & + setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ ) VULKAN_HPP_NOEXCEPT + { + deviceRenderAreaCount = deviceRenderAreaCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & + setPDeviceRenderAreas( const VULKAN_HPP_NAMESPACE::Rect2D * pDeviceRenderAreas_ ) VULKAN_HPP_NOEXCEPT + { + pDeviceRenderAreas = pDeviceRenderAreas_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupRenderPassBeginInfo & setDeviceRenderAreas( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceRenderAreas_ ) + VULKAN_HPP_NOEXCEPT + { + deviceRenderAreaCount = static_cast( deviceRenderAreas_.size() ); + pDeviceRenderAreas = deviceRenderAreas_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceGroupRenderPassBeginInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceGroupRenderPassBeginInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceMask, deviceRenderAreaCount, pDeviceRenderAreas ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupRenderPassBeginInfo const & ) const = default; +#else + bool operator==( DeviceGroupRenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceMask == rhs.deviceMask ) && + ( deviceRenderAreaCount == rhs.deviceRenderAreaCount ) && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas ); +# endif + } + + bool operator!=( DeviceGroupRenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupRenderPassBeginInfo; + const void * pNext = {}; + uint32_t deviceMask = {}; + uint32_t deviceRenderAreaCount = {}; + const VULKAN_HPP_NAMESPACE::Rect2D * pDeviceRenderAreas = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo ) == + sizeof( VkDeviceGroupRenderPassBeginInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DeviceGroupRenderPassBeginInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceGroupRenderPassBeginInfo; + }; + using DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo; + + struct DeviceGroupSubmitInfo + { + using NativeType = VkDeviceGroupSubmitInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupSubmitInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DeviceGroupSubmitInfo( uint32_t waitSemaphoreCount_ = {}, + const uint32_t * pWaitSemaphoreDeviceIndices_ = {}, + uint32_t commandBufferCount_ = {}, + const uint32_t * pCommandBufferDeviceMasks_ = {}, + uint32_t signalSemaphoreCount_ = {}, + const uint32_t * pSignalSemaphoreDeviceIndices_ = {} ) VULKAN_HPP_NOEXCEPT + : waitSemaphoreCount( waitSemaphoreCount_ ) + , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ ) + , commandBufferCount( commandBufferCount_ ) + , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ ) + , signalSemaphoreCount( signalSemaphoreCount_ ) + , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ ) + {} + + VULKAN_HPP_CONSTEXPR DeviceGroupSubmitInfo( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupSubmitInfo( VkDeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupSubmitInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupSubmitInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphoreDeviceIndices_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & commandBufferDeviceMasks_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphoreDeviceIndices_ = {} ) + : waitSemaphoreCount( static_cast( waitSemaphoreDeviceIndices_.size() ) ) + , pWaitSemaphoreDeviceIndices( waitSemaphoreDeviceIndices_.data() ) + , commandBufferCount( static_cast( commandBufferDeviceMasks_.size() ) ) + , pCommandBufferDeviceMasks( commandBufferDeviceMasks_.data() ) + , signalSemaphoreCount( static_cast( signalSemaphoreDeviceIndices_.size() ) ) + , pSignalSemaphoreDeviceIndices( signalSemaphoreDeviceIndices_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceGroupSubmitInfo & operator=( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupSubmitInfo & operator=( VkDeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & + setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = waitSemaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & + setPWaitSemaphoreDeviceIndices( const uint32_t * pWaitSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT + { + pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupSubmitInfo & setWaitSemaphoreDeviceIndices( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphoreDeviceIndices_ ) + VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = static_cast( waitSemaphoreDeviceIndices_.size() ); + pWaitSemaphoreDeviceIndices = waitSemaphoreDeviceIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & + setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT + { + commandBufferCount = commandBufferCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & + setPCommandBufferDeviceMasks( const uint32_t * pCommandBufferDeviceMasks_ ) VULKAN_HPP_NOEXCEPT + { + pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupSubmitInfo & setCommandBufferDeviceMasks( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & commandBufferDeviceMasks_ ) + VULKAN_HPP_NOEXCEPT + { + commandBufferCount = static_cast( commandBufferDeviceMasks_.size() ); + pCommandBufferDeviceMasks = commandBufferDeviceMasks_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & + setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT + { + signalSemaphoreCount = signalSemaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & + setPSignalSemaphoreDeviceIndices( const uint32_t * pSignalSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT + { + pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupSubmitInfo & setSignalSemaphoreDeviceIndices( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphoreDeviceIndices_ ) + VULKAN_HPP_NOEXCEPT + { + signalSemaphoreCount = static_cast( signalSemaphoreDeviceIndices_.size() ); + pSignalSemaphoreDeviceIndices = signalSemaphoreDeviceIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceGroupSubmitInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceGroupSubmitInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + waitSemaphoreCount, + pWaitSemaphoreDeviceIndices, + commandBufferCount, + pCommandBufferDeviceMasks, + signalSemaphoreCount, + pSignalSemaphoreDeviceIndices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupSubmitInfo const & ) const = default; +#else + bool operator==( DeviceGroupSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) && + ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices ) && + ( commandBufferCount == rhs.commandBufferCount ) && + ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks ) && + ( signalSemaphoreCount == rhs.signalSemaphoreCount ) && + ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices ); +# endif + } + + bool operator!=( DeviceGroupSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupSubmitInfo; + const void * pNext = {}; + uint32_t waitSemaphoreCount = {}; + const uint32_t * pWaitSemaphoreDeviceIndices = {}; + uint32_t commandBufferCount = {}; + const uint32_t * pCommandBufferDeviceMasks = {}; + uint32_t signalSemaphoreCount = {}; + const uint32_t * pSignalSemaphoreDeviceIndices = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo ) == sizeof( VkDeviceGroupSubmitInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceGroupSubmitInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceGroupSubmitInfo; + }; + using DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo; + + struct DeviceGroupSwapchainCreateInfoKHR + { + using NativeType = VkDeviceGroupSwapchainCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDeviceGroupSwapchainCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceGroupSwapchainCreateInfoKHR( + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes_ = {} ) VULKAN_HPP_NOEXCEPT : modes( modes_ ) + {} + + VULKAN_HPP_CONSTEXPR + DeviceGroupSwapchainCreateInfoKHR( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupSwapchainCreateInfoKHR( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupSwapchainCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceGroupSwapchainCreateInfoKHR & + operator=( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupSwapchainCreateInfoKHR & operator=( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR & + setModes( VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes_ ) VULKAN_HPP_NOEXCEPT + { + modes = modes_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceGroupSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceGroupSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, modes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupSwapchainCreateInfoKHR const & ) const = default; +#else + bool operator==( DeviceGroupSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( modes == rhs.modes ); +# endif + } + + bool operator!=( DeviceGroupSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupSwapchainCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR ) == + sizeof( VkDeviceGroupSwapchainCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DeviceGroupSwapchainCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceGroupSwapchainCreateInfoKHR; + }; + + struct ImageCreateInfo + { + using NativeType = VkImageCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageCreateInfo( + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::ImageType imageType_ = VULKAN_HPP_NAMESPACE::ImageType::e1D, + VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::Extent3D extent_ = {}, + uint32_t mipLevels_ = {}, + uint32_t arrayLayers_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, + VULKAN_HPP_NAMESPACE::ImageTiling tiling_ = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {}, + VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive, + uint32_t queueFamilyIndexCount_ = {}, + const uint32_t * pQueueFamilyIndices_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) + VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , imageType( imageType_ ) + , format( format_ ) + , extent( extent_ ) + , mipLevels( mipLevels_ ) + , arrayLayers( arrayLayers_ ) + , samples( samples_ ) + , tiling( tiling_ ) + , usage( usage_ ) + , sharingMode( sharingMode_ ) + , queueFamilyIndexCount( queueFamilyIndexCount_ ) + , pQueueFamilyIndices( pQueueFamilyIndices_ ) + , initialLayout( initialLayout_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageCreateInfo( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageCreateInfo( VkImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageCreateInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ImageType imageType_, + VULKAN_HPP_NAMESPACE::Format format_, + VULKAN_HPP_NAMESPACE::Extent3D extent_, + uint32_t mipLevels_, + uint32_t arrayLayers_, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_, + VULKAN_HPP_NAMESPACE::ImageTiling tiling_, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_, + VULKAN_HPP_NAMESPACE::SharingMode sharingMode_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_, + VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) + : flags( flags_ ) + , imageType( imageType_ ) + , format( format_ ) + , extent( extent_ ) + , mipLevels( mipLevels_ ) + , arrayLayers( arrayLayers_ ) + , samples( samples_ ) + , tiling( tiling_ ) + , usage( usage_ ) + , sharingMode( sharingMode_ ) + , queueFamilyIndexCount( static_cast( queueFamilyIndices_.size() ) ) + , pQueueFamilyIndices( queueFamilyIndices_.data() ) + , initialLayout( initialLayout_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageCreateInfo & operator=( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageCreateInfo & operator=( VkImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & + setImageType( VULKAN_HPP_NAMESPACE::ImageType imageType_ ) VULKAN_HPP_NOEXCEPT + { + imageType = imageType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & + setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setMipLevels( uint32_t mipLevels_ ) VULKAN_HPP_NOEXCEPT + { + mipLevels = mipLevels_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setArrayLayers( uint32_t arrayLayers_ ) VULKAN_HPP_NOEXCEPT + { + arrayLayers = arrayLayers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & + setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT + { + samples = samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT + { + tiling = tiling_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & + setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & + setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT + { + sharingMode = sharingMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & + setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = queueFamilyIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & + setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT + { + pQueueFamilyIndices = pQueueFamilyIndices_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageCreateInfo & setQueueFamilyIndices( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = static_cast( queueFamilyIndices_.size() ); + pQueueFamilyIndices = queueFamilyIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & + setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT + { + initialLayout = initialLayout_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + imageType, + format, + extent, + mipLevels, + arrayLayers, + samples, + tiling, + usage, + sharingMode, + queueFamilyIndexCount, + pQueueFamilyIndices, + initialLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageCreateInfo const & ) const = default; +#else + bool operator==( ImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( imageType == rhs.imageType ) && ( format == rhs.format ) && ( extent == rhs.extent ) && + ( mipLevels == rhs.mipLevels ) && ( arrayLayers == rhs.arrayLayers ) && ( samples == rhs.samples ) && + ( tiling == rhs.tiling ) && ( usage == rhs.usage ) && ( sharingMode == rhs.sharingMode ) && + ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) && + ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ) && ( initialLayout == rhs.initialLayout ); +# endif + } + + bool operator!=( ImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::ImageType imageType = VULKAN_HPP_NAMESPACE::ImageType::e1D; + VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::Extent3D extent = {}; + uint32_t mipLevels = {}; + uint32_t arrayLayers = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; + VULKAN_HPP_NAMESPACE::ImageTiling tiling = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal; + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {}; + VULKAN_HPP_NAMESPACE::SharingMode sharingMode = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive; + uint32_t queueFamilyIndexCount = {}; + const uint32_t * pQueueFamilyIndices = {}; + VULKAN_HPP_NAMESPACE::ImageLayout initialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageCreateInfo ) == sizeof( VkImageCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageCreateInfo; + }; + + struct DeviceImageMemoryRequirements + { + using NativeType = VkDeviceImageMemoryRequirements; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceImageMemoryRequirements; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DeviceImageMemoryRequirements( const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo_ = {}, + VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ = + VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor ) VULKAN_HPP_NOEXCEPT + : pCreateInfo( pCreateInfo_ ) + , planeAspect( planeAspect_ ) + {} + + VULKAN_HPP_CONSTEXPR + DeviceImageMemoryRequirements( DeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceImageMemoryRequirements( VkDeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceImageMemoryRequirements( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceImageMemoryRequirements & + operator=( DeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceImageMemoryRequirements & operator=( VkDeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements & + setPCreateInfo( const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo_ ) VULKAN_HPP_NOEXCEPT + { + pCreateInfo = pCreateInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements & + setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT + { + planeAspect = planeAspect_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceImageMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceImageMemoryRequirements &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pCreateInfo, planeAspect ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceImageMemoryRequirements const & ) const = default; +#else + bool operator==( DeviceImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pCreateInfo == rhs.pCreateInfo ) && + ( planeAspect == rhs.planeAspect ); +# endif + } + + bool operator!=( DeviceImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceImageMemoryRequirements; + const void * pNext = {}; + const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo = {}; + VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements ) == + sizeof( VkDeviceImageMemoryRequirements ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DeviceImageMemoryRequirements is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceImageMemoryRequirements; + }; + using DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirements; + + struct DeviceMemoryOpaqueCaptureAddressInfo + { + using NativeType = VkDeviceMemoryOpaqueCaptureAddressInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDeviceMemoryOpaqueCaptureAddressInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DeviceMemoryOpaqueCaptureAddressInfo( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {} ) VULKAN_HPP_NOEXCEPT + : memory( memory_ ) + {} + + VULKAN_HPP_CONSTEXPR DeviceMemoryOpaqueCaptureAddressInfo( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + DeviceMemoryOpaqueCaptureAddressInfo( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceMemoryOpaqueCaptureAddressInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceMemoryOpaqueCaptureAddressInfo & + operator=( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceMemoryOpaqueCaptureAddressInfo & + operator=( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo & + setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceMemoryOpaqueCaptureAddressInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceMemoryOpaqueCaptureAddressInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceMemoryOpaqueCaptureAddressInfo const & ) const = default; +#else + bool operator==( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ); +# endif + } + + bool operator!=( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceMemoryOpaqueCaptureAddressInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo ) == + sizeof( VkDeviceMemoryOpaqueCaptureAddressInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DeviceMemoryOpaqueCaptureAddressInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceMemoryOpaqueCaptureAddressInfo; + }; + using DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo; + + struct DeviceMemoryOverallocationCreateInfoAMD + { + using NativeType = VkDeviceMemoryOverallocationCreateInfoAMD; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDeviceMemoryOverallocationCreateInfoAMD; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceMemoryOverallocationCreateInfoAMD( + VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior_ = + VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD::eDefault ) VULKAN_HPP_NOEXCEPT + : overallocationBehavior( overallocationBehavior_ ) + {} + + VULKAN_HPP_CONSTEXPR DeviceMemoryOverallocationCreateInfoAMD( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + DeviceMemoryOverallocationCreateInfoAMD( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceMemoryOverallocationCreateInfoAMD( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceMemoryOverallocationCreateInfoAMD & + operator=( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceMemoryOverallocationCreateInfoAMD & + operator=( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOverallocationCreateInfoAMD & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOverallocationCreateInfoAMD & setOverallocationBehavior( + VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior_ ) VULKAN_HPP_NOEXCEPT + { + overallocationBehavior = overallocationBehavior_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceMemoryOverallocationCreateInfoAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceMemoryOverallocationCreateInfoAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, overallocationBehavior ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceMemoryOverallocationCreateInfoAMD const & ) const = default; +#else + bool operator==( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( overallocationBehavior == rhs.overallocationBehavior ); +# endif + } + + bool operator!=( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceMemoryOverallocationCreateInfoAMD; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior = + VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD::eDefault; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD ) == + sizeof( VkDeviceMemoryOverallocationCreateInfoAMD ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DeviceMemoryOverallocationCreateInfoAMD is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceMemoryOverallocationCreateInfoAMD; + }; + + struct DeviceMemoryReportCallbackDataEXT + { + using NativeType = VkDeviceMemoryReportCallbackDataEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDeviceMemoryReportCallbackDataEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceMemoryReportCallbackDataEXT( + VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags_ = {}, + VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT type_ = + VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT::eAllocate, + uint64_t memoryObjectId_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, + VULKAN_HPP_NAMESPACE::ObjectType objectType_ = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown, + uint64_t objectHandle_ = {}, + uint32_t heapIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , type( type_ ) + , memoryObjectId( memoryObjectId_ ) + , size( size_ ) + , objectType( objectType_ ) + , objectHandle( objectHandle_ ) + , heapIndex( heapIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR + DeviceMemoryReportCallbackDataEXT( DeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceMemoryReportCallbackDataEXT( VkDeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceMemoryReportCallbackDataEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceMemoryReportCallbackDataEXT & + operator=( DeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceMemoryReportCallbackDataEXT & operator=( VkDeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDeviceMemoryReportCallbackDataEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceMemoryReportCallbackDataEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, type, memoryObjectId, size, objectType, objectHandle, heapIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceMemoryReportCallbackDataEXT const & ) const = default; +#else + bool operator==( DeviceMemoryReportCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( type == rhs.type ) && + ( memoryObjectId == rhs.memoryObjectId ) && ( size == rhs.size ) && ( objectType == rhs.objectType ) && + ( objectHandle == rhs.objectHandle ) && ( heapIndex == rhs.heapIndex ); +# endif + } + + bool operator!=( DeviceMemoryReportCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceMemoryReportCallbackDataEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags = {}; + VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT type = + VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT::eAllocate; + uint64_t memoryObjectId = {}; + VULKAN_HPP_NAMESPACE::DeviceSize size = {}; + VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown; + uint64_t objectHandle = {}; + uint32_t heapIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT ) == + sizeof( VkDeviceMemoryReportCallbackDataEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DeviceMemoryReportCallbackDataEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceMemoryReportCallbackDataEXT; + }; + + struct DevicePrivateDataCreateInfo + { + using NativeType = VkDevicePrivateDataCreateInfo; + + static const bool allowDuplicate = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDevicePrivateDataCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DevicePrivateDataCreateInfo( uint32_t privateDataSlotRequestCount_ = {} ) VULKAN_HPP_NOEXCEPT + : privateDataSlotRequestCount( privateDataSlotRequestCount_ ) + {} + + VULKAN_HPP_CONSTEXPR + DevicePrivateDataCreateInfo( DevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DevicePrivateDataCreateInfo( VkDevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DevicePrivateDataCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DevicePrivateDataCreateInfo & operator=( DevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DevicePrivateDataCreateInfo & operator=( VkDevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfo & + setPrivateDataSlotRequestCount( uint32_t privateDataSlotRequestCount_ ) VULKAN_HPP_NOEXCEPT + { + privateDataSlotRequestCount = privateDataSlotRequestCount_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDevicePrivateDataCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDevicePrivateDataCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, privateDataSlotRequestCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DevicePrivateDataCreateInfo const & ) const = default; +#else + bool operator==( DevicePrivateDataCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( privateDataSlotRequestCount == rhs.privateDataSlotRequestCount ); +# endif + } + + bool operator!=( DevicePrivateDataCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDevicePrivateDataCreateInfo; + const void * pNext = {}; + uint32_t privateDataSlotRequestCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo ) == + sizeof( VkDevicePrivateDataCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DevicePrivateDataCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DevicePrivateDataCreateInfo; + }; + using DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfo; + + struct DeviceQueueGlobalPriorityCreateInfoKHR + { + using NativeType = VkDeviceQueueGlobalPriorityCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDeviceQueueGlobalPriorityCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DeviceQueueGlobalPriorityCreateInfoKHR( VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR globalPriority_ = + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow ) VULKAN_HPP_NOEXCEPT + : globalPriority( globalPriority_ ) + {} + + VULKAN_HPP_CONSTEXPR DeviceQueueGlobalPriorityCreateInfoKHR( DeviceQueueGlobalPriorityCreateInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + DeviceQueueGlobalPriorityCreateInfoKHR( VkDeviceQueueGlobalPriorityCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceQueueGlobalPriorityCreateInfoKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceQueueGlobalPriorityCreateInfoKHR & + operator=( DeviceQueueGlobalPriorityCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceQueueGlobalPriorityCreateInfoKHR & + operator=( VkDeviceQueueGlobalPriorityCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceQueueGlobalPriorityCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueGlobalPriorityCreateInfoKHR & + setGlobalPriority( VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR globalPriority_ ) VULKAN_HPP_NOEXCEPT + { + globalPriority = globalPriority_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceQueueGlobalPriorityCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceQueueGlobalPriorityCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, globalPriority ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceQueueGlobalPriorityCreateInfoKHR const & ) const = default; +#else + bool operator==( DeviceQueueGlobalPriorityCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( globalPriority == rhs.globalPriority ); +# endif + } + + bool operator!=( DeviceQueueGlobalPriorityCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceQueueGlobalPriorityCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR globalPriority = VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoKHR ) == + sizeof( VkDeviceQueueGlobalPriorityCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DeviceQueueGlobalPriorityCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceQueueGlobalPriorityCreateInfoKHR; + }; + using DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfoKHR; + + struct DeviceQueueInfo2 + { + using NativeType = VkDeviceQueueInfo2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceQueueInfo2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceQueueInfo2( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ = {}, + uint32_t queueFamilyIndex_ = {}, + uint32_t queueIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , queueFamilyIndex( queueFamilyIndex_ ) + , queueIndex( queueIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR DeviceQueueInfo2( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceQueueInfo2( VkDeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceQueueInfo2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceQueueInfo2 & operator=( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceQueueInfo2 & operator=( VkDeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & + setFlags( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setQueueIndex( uint32_t queueIndex_ ) VULKAN_HPP_NOEXCEPT + { + queueIndex = queueIndex_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDeviceQueueInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDeviceQueueInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, queueFamilyIndex, queueIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceQueueInfo2 const & ) const = default; +#else + bool operator==( DeviceQueueInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( queueFamilyIndex == rhs.queueFamilyIndex ) && ( queueIndex == rhs.queueIndex ); +# endif + } + + bool operator!=( DeviceQueueInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceQueueInfo2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags = {}; + uint32_t queueFamilyIndex = {}; + uint32_t queueIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 ) == sizeof( VkDeviceQueueInfo2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceQueueInfo2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DeviceQueueInfo2; + }; + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + struct DirectFBSurfaceCreateInfoEXT + { + using NativeType = VkDirectFBSurfaceCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDirectfbSurfaceCreateInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DirectFBSurfaceCreateInfoEXT( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags_ = {}, + IDirectFB * dfb_ = {}, + IDirectFBSurface * surface_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , dfb( dfb_ ) + , surface( surface_ ) + {} + + VULKAN_HPP_CONSTEXPR + DirectFBSurfaceCreateInfoEXT( DirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DirectFBSurfaceCreateInfoEXT( VkDirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DirectFBSurfaceCreateInfoEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DirectFBSurfaceCreateInfoEXT & operator=( DirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DirectFBSurfaceCreateInfoEXT & operator=( VkDirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setDfb( IDirectFB * dfb_ ) VULKAN_HPP_NOEXCEPT + { + dfb = dfb_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setSurface( IDirectFBSurface * surface_ ) VULKAN_HPP_NOEXCEPT + { + surface = surface_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDirectFBSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDirectFBSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, dfb, surface ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DirectFBSurfaceCreateInfoEXT const & ) const = default; +# else + bool operator==( DirectFBSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dfb == rhs.dfb ) && + ( surface == rhs.surface ); +# endif + } + + bool operator!=( DirectFBSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDirectfbSurfaceCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags = {}; + IDirectFB * dfb = {}; + IDirectFBSurface * surface = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT ) == + sizeof( VkDirectFBSurfaceCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DirectFBSurfaceCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DirectFBSurfaceCreateInfoEXT; + }; +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + struct DispatchIndirectCommand + { + using NativeType = VkDispatchIndirectCommand; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DispatchIndirectCommand( uint32_t x_ = {}, uint32_t y_ = {}, uint32_t z_ = {} ) VULKAN_HPP_NOEXCEPT + : x( x_ ) + , y( y_ ) + , z( z_ ) + {} + + VULKAN_HPP_CONSTEXPR DispatchIndirectCommand( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT + : DispatchIndirectCommand( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DispatchIndirectCommand & operator=( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DispatchIndirectCommand & operator=( VkDispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setX( uint32_t x_ ) VULKAN_HPP_NOEXCEPT + { + x = x_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setY( uint32_t y_ ) VULKAN_HPP_NOEXCEPT + { + y = y_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setZ( uint32_t z_ ) VULKAN_HPP_NOEXCEPT + { + z = z_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDispatchIndirectCommand const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDispatchIndirectCommand &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( x, y, z ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DispatchIndirectCommand const & ) const = default; +#else + bool operator==( DispatchIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( x == rhs.x ) && ( y == rhs.y ) && ( z == rhs.z ); +# endif + } + + bool operator!=( DispatchIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t x = {}; + uint32_t y = {}; + uint32_t z = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DispatchIndirectCommand ) == + sizeof( VkDispatchIndirectCommand ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DispatchIndirectCommand is not nothrow_move_constructible!" ); + + struct DisplayEventInfoEXT + { + using NativeType = VkDisplayEventInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayEventInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DisplayEventInfoEXT( VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent_ = + VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT::eFirstPixelOut ) VULKAN_HPP_NOEXCEPT + : displayEvent( displayEvent_ ) + {} + + VULKAN_HPP_CONSTEXPR DisplayEventInfoEXT( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayEventInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplayEventInfoEXT & operator=( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayEventInfoEXT & operator=( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT & + setDisplayEvent( VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent_ ) VULKAN_HPP_NOEXCEPT + { + displayEvent = displayEvent_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDisplayEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplayEventInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, displayEvent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayEventInfoEXT const & ) const = default; +#else + bool operator==( DisplayEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayEvent == rhs.displayEvent ); +# endif + } + + bool operator!=( DisplayEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayEventInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent = VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT::eFirstPixelOut; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayEventInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DisplayEventInfoEXT; + }; + + struct DisplayModeParametersKHR + { + using NativeType = VkDisplayModeParametersKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayModeParametersKHR( VULKAN_HPP_NAMESPACE::Extent2D visibleRegion_ = {}, + uint32_t refreshRate_ = {} ) VULKAN_HPP_NOEXCEPT + : visibleRegion( visibleRegion_ ) + , refreshRate( refreshRate_ ) + {} + + VULKAN_HPP_CONSTEXPR DisplayModeParametersKHR( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayModeParametersKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplayModeParametersKHR & operator=( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayModeParametersKHR & operator=( VkDisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR & + setVisibleRegion( VULKAN_HPP_NAMESPACE::Extent2D const & visibleRegion_ ) VULKAN_HPP_NOEXCEPT + { + visibleRegion = visibleRegion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR & setRefreshRate( uint32_t refreshRate_ ) VULKAN_HPP_NOEXCEPT + { + refreshRate = refreshRate_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDisplayModeParametersKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplayModeParametersKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( visibleRegion, refreshRate ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayModeParametersKHR const & ) const = default; +#else + bool operator==( DisplayModeParametersKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( visibleRegion == rhs.visibleRegion ) && ( refreshRate == rhs.refreshRate ); +# endif + } + + bool operator!=( DisplayModeParametersKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::Extent2D visibleRegion = {}; + uint32_t refreshRate = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR ) == + sizeof( VkDisplayModeParametersKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayModeParametersKHR is not nothrow_move_constructible!" ); + + struct DisplayModeCreateInfoKHR + { + using NativeType = VkDisplayModeCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayModeCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DisplayModeCreateInfoKHR( VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags_ = {}, + VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , parameters( parameters_ ) + {} + + VULKAN_HPP_CONSTEXPR DisplayModeCreateInfoKHR( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayModeCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplayModeCreateInfoKHR & operator=( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayModeCreateInfoKHR & operator=( VkDisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & + setParameters( VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const & parameters_ ) VULKAN_HPP_NOEXCEPT + { + parameters = parameters_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDisplayModeCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplayModeCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, parameters ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayModeCreateInfoKHR const & ) const = default; +#else + bool operator==( DisplayModeCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( parameters == rhs.parameters ); +# endif + } + + bool operator!=( DisplayModeCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayModeCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags = {}; + VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR ) == + sizeof( VkDisplayModeCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayModeCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DisplayModeCreateInfoKHR; + }; + + struct DisplayModePropertiesKHR + { + using NativeType = VkDisplayModePropertiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DisplayModePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode_ = {}, + VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters_ = {} ) VULKAN_HPP_NOEXCEPT + : displayMode( displayMode_ ) + , parameters( parameters_ ) + {} + + VULKAN_HPP_CONSTEXPR DisplayModePropertiesKHR( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayModePropertiesKHR( VkDisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayModePropertiesKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplayModePropertiesKHR & operator=( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayModePropertiesKHR & operator=( VkDisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDisplayModePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplayModePropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( displayMode, parameters ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayModePropertiesKHR const & ) const = default; +#else + bool operator==( DisplayModePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( displayMode == rhs.displayMode ) && ( parameters == rhs.parameters ); +# endif + } + + bool operator!=( DisplayModePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode = {}; + VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR ) == + sizeof( VkDisplayModePropertiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayModePropertiesKHR is not nothrow_move_constructible!" ); + + struct DisplayModeProperties2KHR + { + using NativeType = VkDisplayModeProperties2KHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayModeProperties2KHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayModeProperties2KHR( + VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR displayModeProperties_ = {} ) VULKAN_HPP_NOEXCEPT + : displayModeProperties( displayModeProperties_ ) + {} + + VULKAN_HPP_CONSTEXPR + DisplayModeProperties2KHR( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayModeProperties2KHR( VkDisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayModeProperties2KHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplayModeProperties2KHR & operator=( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayModeProperties2KHR & operator=( VkDisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDisplayModeProperties2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplayModeProperties2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, displayModeProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayModeProperties2KHR const & ) const = default; +#else + bool operator==( DisplayModeProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayModeProperties == rhs.displayModeProperties ); +# endif + } + + bool operator!=( DisplayModeProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayModeProperties2KHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR displayModeProperties = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR ) == + sizeof( VkDisplayModeProperties2KHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayModeProperties2KHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DisplayModeProperties2KHR; + }; + + struct DisplayNativeHdrSurfaceCapabilitiesAMD + { + using NativeType = VkDisplayNativeHdrSurfaceCapabilitiesAMD; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayNativeHdrSurfaceCapabilitiesAMD( + VULKAN_HPP_NAMESPACE::Bool32 localDimmingSupport_ = {} ) VULKAN_HPP_NOEXCEPT + : localDimmingSupport( localDimmingSupport_ ) + {} + + VULKAN_HPP_CONSTEXPR DisplayNativeHdrSurfaceCapabilitiesAMD( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + DisplayNativeHdrSurfaceCapabilitiesAMD( VkDisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayNativeHdrSurfaceCapabilitiesAMD( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplayNativeHdrSurfaceCapabilitiesAMD & + operator=( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayNativeHdrSurfaceCapabilitiesAMD & + operator=( VkDisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDisplayNativeHdrSurfaceCapabilitiesAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplayNativeHdrSurfaceCapabilitiesAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, localDimmingSupport ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayNativeHdrSurfaceCapabilitiesAMD const & ) const = default; +#else + bool operator==( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( localDimmingSupport == rhs.localDimmingSupport ); +# endif + } + + bool operator!=( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 localDimmingSupport = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD ) == + sizeof( VkDisplayNativeHdrSurfaceCapabilitiesAMD ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DisplayNativeHdrSurfaceCapabilitiesAMD is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DisplayNativeHdrSurfaceCapabilitiesAMD; + }; + + struct DisplayPlaneCapabilitiesKHR + { + using NativeType = VkDisplayPlaneCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DisplayPlaneCapabilitiesKHR( VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR supportedAlpha_ = {}, + VULKAN_HPP_NAMESPACE::Offset2D minSrcPosition_ = {}, + VULKAN_HPP_NAMESPACE::Offset2D maxSrcPosition_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D minSrcExtent_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D maxSrcExtent_ = {}, + VULKAN_HPP_NAMESPACE::Offset2D minDstPosition_ = {}, + VULKAN_HPP_NAMESPACE::Offset2D maxDstPosition_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D minDstExtent_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D maxDstExtent_ = {} ) VULKAN_HPP_NOEXCEPT + : supportedAlpha( supportedAlpha_ ) + , minSrcPosition( minSrcPosition_ ) + , maxSrcPosition( maxSrcPosition_ ) + , minSrcExtent( minSrcExtent_ ) + , maxSrcExtent( maxSrcExtent_ ) + , minDstPosition( minDstPosition_ ) + , maxDstPosition( maxDstPosition_ ) + , minDstExtent( minDstExtent_ ) + , maxDstExtent( maxDstExtent_ ) + {} + + VULKAN_HPP_CONSTEXPR + DisplayPlaneCapabilitiesKHR( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPlaneCapabilitiesKHR( VkDisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayPlaneCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplayPlaneCapabilitiesKHR & operator=( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPlaneCapabilitiesKHR & operator=( VkDisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDisplayPlaneCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplayPlaneCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( supportedAlpha, + minSrcPosition, + maxSrcPosition, + minSrcExtent, + maxSrcExtent, + minDstPosition, + maxDstPosition, + minDstExtent, + maxDstExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayPlaneCapabilitiesKHR const & ) const = default; +#else + bool operator==( DisplayPlaneCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( supportedAlpha == rhs.supportedAlpha ) && ( minSrcPosition == rhs.minSrcPosition ) && + ( maxSrcPosition == rhs.maxSrcPosition ) && ( minSrcExtent == rhs.minSrcExtent ) && + ( maxSrcExtent == rhs.maxSrcExtent ) && ( minDstPosition == rhs.minDstPosition ) && + ( maxDstPosition == rhs.maxDstPosition ) && ( minDstExtent == rhs.minDstExtent ) && + ( maxDstExtent == rhs.maxDstExtent ); +# endif + } + + bool operator!=( DisplayPlaneCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR supportedAlpha = {}; + VULKAN_HPP_NAMESPACE::Offset2D minSrcPosition = {}; + VULKAN_HPP_NAMESPACE::Offset2D maxSrcPosition = {}; + VULKAN_HPP_NAMESPACE::Extent2D minSrcExtent = {}; + VULKAN_HPP_NAMESPACE::Extent2D maxSrcExtent = {}; + VULKAN_HPP_NAMESPACE::Offset2D minDstPosition = {}; + VULKAN_HPP_NAMESPACE::Offset2D maxDstPosition = {}; + VULKAN_HPP_NAMESPACE::Extent2D minDstExtent = {}; + VULKAN_HPP_NAMESPACE::Extent2D maxDstExtent = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR ) == + sizeof( VkDisplayPlaneCapabilitiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DisplayPlaneCapabilitiesKHR is not nothrow_move_constructible!" ); + + struct DisplayPlaneCapabilities2KHR + { + using NativeType = VkDisplayPlaneCapabilities2KHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPlaneCapabilities2KHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilities2KHR( + VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities_ = {} ) VULKAN_HPP_NOEXCEPT + : capabilities( capabilities_ ) + {} + + VULKAN_HPP_CONSTEXPR + DisplayPlaneCapabilities2KHR( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPlaneCapabilities2KHR( VkDisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayPlaneCapabilities2KHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplayPlaneCapabilities2KHR & operator=( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPlaneCapabilities2KHR & operator=( VkDisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDisplayPlaneCapabilities2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplayPlaneCapabilities2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, capabilities ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayPlaneCapabilities2KHR const & ) const = default; +#else + bool operator==( DisplayPlaneCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( capabilities == rhs.capabilities ); +# endif + } + + bool operator!=( DisplayPlaneCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPlaneCapabilities2KHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR ) == + sizeof( VkDisplayPlaneCapabilities2KHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DisplayPlaneCapabilities2KHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DisplayPlaneCapabilities2KHR; + }; + + struct DisplayPlaneInfo2KHR + { + using NativeType = VkDisplayPlaneInfo2KHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPlaneInfo2KHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayPlaneInfo2KHR( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode_ = {}, + uint32_t planeIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : mode( mode_ ) + , planeIndex( planeIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR DisplayPlaneInfo2KHR( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPlaneInfo2KHR( VkDisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayPlaneInfo2KHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplayPlaneInfo2KHR & operator=( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPlaneInfo2KHR & operator=( VkDisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & + setMode( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode_ ) VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setPlaneIndex( uint32_t planeIndex_ ) VULKAN_HPP_NOEXCEPT + { + planeIndex = planeIndex_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDisplayPlaneInfo2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplayPlaneInfo2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, mode, planeIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayPlaneInfo2KHR const & ) const = default; +#else + bool operator==( DisplayPlaneInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mode == rhs.mode ) && + ( planeIndex == rhs.planeIndex ); +# endif + } + + bool operator!=( DisplayPlaneInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPlaneInfo2KHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DisplayModeKHR mode = {}; + uint32_t planeIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR ) == sizeof( VkDisplayPlaneInfo2KHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayPlaneInfo2KHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DisplayPlaneInfo2KHR; + }; + + struct DisplayPlanePropertiesKHR + { + using NativeType = VkDisplayPlanePropertiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayPlanePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR currentDisplay_ = {}, + uint32_t currentStackIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : currentDisplay( currentDisplay_ ) + , currentStackIndex( currentStackIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR + DisplayPlanePropertiesKHR( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPlanePropertiesKHR( VkDisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayPlanePropertiesKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplayPlanePropertiesKHR & operator=( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPlanePropertiesKHR & operator=( VkDisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDisplayPlanePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplayPlanePropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( currentDisplay, currentStackIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayPlanePropertiesKHR const & ) const = default; +#else + bool operator==( DisplayPlanePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( currentDisplay == rhs.currentDisplay ) && ( currentStackIndex == rhs.currentStackIndex ); +# endif + } + + bool operator!=( DisplayPlanePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DisplayKHR currentDisplay = {}; + uint32_t currentStackIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR ) == + sizeof( VkDisplayPlanePropertiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayPlanePropertiesKHR is not nothrow_move_constructible!" ); + + struct DisplayPlaneProperties2KHR + { + using NativeType = VkDisplayPlaneProperties2KHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPlaneProperties2KHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayPlaneProperties2KHR( + VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR displayPlaneProperties_ = {} ) VULKAN_HPP_NOEXCEPT + : displayPlaneProperties( displayPlaneProperties_ ) + {} + + VULKAN_HPP_CONSTEXPR + DisplayPlaneProperties2KHR( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPlaneProperties2KHR( VkDisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayPlaneProperties2KHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplayPlaneProperties2KHR & operator=( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPlaneProperties2KHR & operator=( VkDisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDisplayPlaneProperties2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplayPlaneProperties2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, displayPlaneProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayPlaneProperties2KHR const & ) const = default; +#else + bool operator==( DisplayPlaneProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( displayPlaneProperties == rhs.displayPlaneProperties ); +# endif + } + + bool operator!=( DisplayPlaneProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPlaneProperties2KHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR displayPlaneProperties = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR ) == + sizeof( VkDisplayPlaneProperties2KHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayPlaneProperties2KHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DisplayPlaneProperties2KHR; + }; + + struct DisplayPowerInfoEXT + { + using NativeType = VkDisplayPowerInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPowerInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayPowerInfoEXT( VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState_ = + VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT::eOff ) VULKAN_HPP_NOEXCEPT + : powerState( powerState_ ) + {} + + VULKAN_HPP_CONSTEXPR DisplayPowerInfoEXT( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayPowerInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplayPowerInfoEXT & operator=( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPowerInfoEXT & operator=( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT & + setPowerState( VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState_ ) VULKAN_HPP_NOEXCEPT + { + powerState = powerState_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDisplayPowerInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplayPowerInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, powerState ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayPowerInfoEXT const & ) const = default; +#else + bool operator==( DisplayPowerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( powerState == rhs.powerState ); +# endif + } + + bool operator!=( DisplayPowerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPowerInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState = VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT::eOff; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayPowerInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DisplayPowerInfoEXT; + }; + + struct DisplayPresentInfoKHR + { + using NativeType = VkDisplayPresentInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPresentInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayPresentInfoKHR( VULKAN_HPP_NAMESPACE::Rect2D srcRect_ = {}, + VULKAN_HPP_NAMESPACE::Rect2D dstRect_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 persistent_ = {} ) VULKAN_HPP_NOEXCEPT + : srcRect( srcRect_ ) + , dstRect( dstRect_ ) + , persistent( persistent_ ) + {} + + VULKAN_HPP_CONSTEXPR DisplayPresentInfoKHR( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayPresentInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplayPresentInfoKHR & operator=( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPresentInfoKHR & operator=( VkDisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & + setSrcRect( VULKAN_HPP_NAMESPACE::Rect2D const & srcRect_ ) VULKAN_HPP_NOEXCEPT + { + srcRect = srcRect_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & + setDstRect( VULKAN_HPP_NAMESPACE::Rect2D const & dstRect_ ) VULKAN_HPP_NOEXCEPT + { + dstRect = dstRect_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & + setPersistent( VULKAN_HPP_NAMESPACE::Bool32 persistent_ ) VULKAN_HPP_NOEXCEPT + { + persistent = persistent_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDisplayPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplayPresentInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcRect, dstRect, persistent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayPresentInfoKHR const & ) const = default; +#else + bool operator==( DisplayPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcRect == rhs.srcRect ) && + ( dstRect == rhs.dstRect ) && ( persistent == rhs.persistent ); +# endif + } + + bool operator!=( DisplayPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPresentInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Rect2D srcRect = {}; + VULKAN_HPP_NAMESPACE::Rect2D dstRect = {}; + VULKAN_HPP_NAMESPACE::Bool32 persistent = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayPresentInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DisplayPresentInfoKHR; + }; + + struct DisplayPropertiesKHR + { + using NativeType = VkDisplayPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DisplayPropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display_ = {}, + const char * displayName_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D physicalDimensions_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D physicalResolution_ = {}, + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 planeReorderPossible_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 persistentContent_ = {} ) VULKAN_HPP_NOEXCEPT + : display( display_ ) + , displayName( displayName_ ) + , physicalDimensions( physicalDimensions_ ) + , physicalResolution( physicalResolution_ ) + , supportedTransforms( supportedTransforms_ ) + , planeReorderPossible( planeReorderPossible_ ) + , persistentContent( persistentContent_ ) + {} + + VULKAN_HPP_CONSTEXPR DisplayPropertiesKHR( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPropertiesKHR( VkDisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayPropertiesKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplayPropertiesKHR & operator=( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPropertiesKHR & operator=( VkDisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDisplayPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplayPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( display, + displayName, + physicalDimensions, + physicalResolution, + supportedTransforms, + planeReorderPossible, + persistentContent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = display <=> rhs.display; cmp != 0 ) + return cmp; + if ( displayName != rhs.displayName ) + if ( auto cmp = strcmp( displayName, rhs.displayName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = physicalDimensions <=> rhs.physicalDimensions; cmp != 0 ) + return cmp; + if ( auto cmp = physicalResolution <=> rhs.physicalResolution; cmp != 0 ) + return cmp; + if ( auto cmp = supportedTransforms <=> rhs.supportedTransforms; cmp != 0 ) + return cmp; + if ( auto cmp = planeReorderPossible <=> rhs.planeReorderPossible; cmp != 0 ) + return cmp; + if ( auto cmp = persistentContent <=> rhs.persistentContent; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( display == rhs.display ) && + ( ( displayName == rhs.displayName ) || ( strcmp( displayName, rhs.displayName ) == 0 ) ) && + ( physicalDimensions == rhs.physicalDimensions ) && ( physicalResolution == rhs.physicalResolution ) && + ( supportedTransforms == rhs.supportedTransforms ) && + ( planeReorderPossible == rhs.planeReorderPossible ) && ( persistentContent == rhs.persistentContent ); + } + + bool operator!=( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::DisplayKHR display = {}; + const char * displayName = {}; + VULKAN_HPP_NAMESPACE::Extent2D physicalDimensions = {}; + VULKAN_HPP_NAMESPACE::Extent2D physicalResolution = {}; + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms = {}; + VULKAN_HPP_NAMESPACE::Bool32 planeReorderPossible = {}; + VULKAN_HPP_NAMESPACE::Bool32 persistentContent = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayPropertiesKHR is not nothrow_move_constructible!" ); + + struct DisplayProperties2KHR + { + using NativeType = VkDisplayProperties2KHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayProperties2KHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DisplayProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR displayProperties_ = {} ) VULKAN_HPP_NOEXCEPT + : displayProperties( displayProperties_ ) + {} + + VULKAN_HPP_CONSTEXPR DisplayProperties2KHR( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayProperties2KHR( VkDisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayProperties2KHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplayProperties2KHR & operator=( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayProperties2KHR & operator=( VkDisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDisplayProperties2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplayProperties2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, displayProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayProperties2KHR const & ) const = default; +#else + bool operator==( DisplayProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayProperties == rhs.displayProperties ); +# endif + } + + bool operator!=( DisplayProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayProperties2KHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR displayProperties = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayProperties2KHR ) == sizeof( VkDisplayProperties2KHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayProperties2KHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DisplayProperties2KHR; + }; + + struct DisplaySurfaceCreateInfoKHR + { + using NativeType = VkDisplaySurfaceCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplaySurfaceCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DisplaySurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags_ = {}, + VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode_ = {}, + uint32_t planeIndex_ = {}, + uint32_t planeStackIndex_ = {}, + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ = + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, + float globalAlpha_ = {}, + VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode_ = + VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR::eOpaque, + VULKAN_HPP_NAMESPACE::Extent2D imageExtent_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , displayMode( displayMode_ ) + , planeIndex( planeIndex_ ) + , planeStackIndex( planeStackIndex_ ) + , transform( transform_ ) + , globalAlpha( globalAlpha_ ) + , alphaMode( alphaMode_ ) + , imageExtent( imageExtent_ ) + {} + + VULKAN_HPP_CONSTEXPR + DisplaySurfaceCreateInfoKHR( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplaySurfaceCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DisplaySurfaceCreateInfoKHR & operator=( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplaySurfaceCreateInfoKHR & operator=( VkDisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & + setDisplayMode( VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode_ ) VULKAN_HPP_NOEXCEPT + { + displayMode = displayMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPlaneIndex( uint32_t planeIndex_ ) VULKAN_HPP_NOEXCEPT + { + planeIndex = planeIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & + setPlaneStackIndex( uint32_t planeStackIndex_ ) VULKAN_HPP_NOEXCEPT + { + planeStackIndex = planeStackIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & + setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setGlobalAlpha( float globalAlpha_ ) VULKAN_HPP_NOEXCEPT + { + globalAlpha = globalAlpha_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & + setAlphaMode( VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode_ ) VULKAN_HPP_NOEXCEPT + { + alphaMode = alphaMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & + setImageExtent( VULKAN_HPP_NAMESPACE::Extent2D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDisplaySurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDisplaySurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, flags, displayMode, planeIndex, planeStackIndex, transform, globalAlpha, alphaMode, imageExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplaySurfaceCreateInfoKHR const & ) const = default; +#else + bool operator==( DisplaySurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( displayMode == rhs.displayMode ) && ( planeIndex == rhs.planeIndex ) && + ( planeStackIndex == rhs.planeStackIndex ) && ( transform == rhs.transform ) && + ( globalAlpha == rhs.globalAlpha ) && ( alphaMode == rhs.alphaMode ) && ( imageExtent == rhs.imageExtent ); +# endif + } + + bool operator!=( DisplaySurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplaySurfaceCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags = {}; + VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode = {}; + uint32_t planeIndex = {}; + uint32_t planeStackIndex = {}; + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity; + float globalAlpha = {}; + VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode = + VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR::eOpaque; + VULKAN_HPP_NAMESPACE::Extent2D imageExtent = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR ) == + sizeof( VkDisplaySurfaceCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DisplaySurfaceCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DisplaySurfaceCreateInfoKHR; + }; + + struct DrawIndexedIndirectCommand + { + using NativeType = VkDrawIndexedIndirectCommand; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrawIndexedIndirectCommand( uint32_t indexCount_ = {}, + uint32_t instanceCount_ = {}, + uint32_t firstIndex_ = {}, + int32_t vertexOffset_ = {}, + uint32_t firstInstance_ = {} ) VULKAN_HPP_NOEXCEPT + : indexCount( indexCount_ ) + , instanceCount( instanceCount_ ) + , firstIndex( firstIndex_ ) + , vertexOffset( vertexOffset_ ) + , firstInstance( firstInstance_ ) + {} + + VULKAN_HPP_CONSTEXPR + DrawIndexedIndirectCommand( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT + : DrawIndexedIndirectCommand( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DrawIndexedIndirectCommand & operator=( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrawIndexedIndirectCommand & operator=( VkDrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT + { + indexCount = indexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT + { + instanceCount = instanceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setFirstIndex( uint32_t firstIndex_ ) VULKAN_HPP_NOEXCEPT + { + firstIndex = firstIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setVertexOffset( int32_t vertexOffset_ ) VULKAN_HPP_NOEXCEPT + { + vertexOffset = vertexOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) VULKAN_HPP_NOEXCEPT + { + firstInstance = firstInstance_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDrawIndexedIndirectCommand const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDrawIndexedIndirectCommand &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( indexCount, instanceCount, firstIndex, vertexOffset, firstInstance ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrawIndexedIndirectCommand const & ) const = default; +#else + bool operator==( DrawIndexedIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( indexCount == rhs.indexCount ) && ( instanceCount == rhs.instanceCount ) && + ( firstIndex == rhs.firstIndex ) && ( vertexOffset == rhs.vertexOffset ) && + ( firstInstance == rhs.firstInstance ); +# endif + } + + bool operator!=( DrawIndexedIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t indexCount = {}; + uint32_t instanceCount = {}; + uint32_t firstIndex = {}; + int32_t vertexOffset = {}; + uint32_t firstInstance = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand ) == + sizeof( VkDrawIndexedIndirectCommand ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DrawIndexedIndirectCommand is not nothrow_move_constructible!" ); + + struct DrawIndirectCommand + { + using NativeType = VkDrawIndirectCommand; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrawIndirectCommand( uint32_t vertexCount_ = {}, + uint32_t instanceCount_ = {}, + uint32_t firstVertex_ = {}, + uint32_t firstInstance_ = {} ) VULKAN_HPP_NOEXCEPT + : vertexCount( vertexCount_ ) + , instanceCount( instanceCount_ ) + , firstVertex( firstVertex_ ) + , firstInstance( firstInstance_ ) + {} + + VULKAN_HPP_CONSTEXPR DrawIndirectCommand( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrawIndirectCommand( VkDrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT + : DrawIndirectCommand( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DrawIndirectCommand & operator=( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrawIndirectCommand & operator=( VkDrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT + { + vertexCount = vertexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT + { + instanceCount = instanceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setFirstVertex( uint32_t firstVertex_ ) VULKAN_HPP_NOEXCEPT + { + firstVertex = firstVertex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) VULKAN_HPP_NOEXCEPT + { + firstInstance = firstInstance_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDrawIndirectCommand const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDrawIndirectCommand &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( vertexCount, instanceCount, firstVertex, firstInstance ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrawIndirectCommand const & ) const = default; +#else + bool operator==( DrawIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( vertexCount == rhs.vertexCount ) && ( instanceCount == rhs.instanceCount ) && + ( firstVertex == rhs.firstVertex ) && ( firstInstance == rhs.firstInstance ); +# endif + } + + bool operator!=( DrawIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t vertexCount = {}; + uint32_t instanceCount = {}; + uint32_t firstVertex = {}; + uint32_t firstInstance = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DrawIndirectCommand is not nothrow_move_constructible!" ); + + struct DrawMeshTasksIndirectCommandNV + { + using NativeType = VkDrawMeshTasksIndirectCommandNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrawMeshTasksIndirectCommandNV( uint32_t taskCount_ = {}, + uint32_t firstTask_ = {} ) VULKAN_HPP_NOEXCEPT + : taskCount( taskCount_ ) + , firstTask( firstTask_ ) + {} + + VULKAN_HPP_CONSTEXPR + DrawMeshTasksIndirectCommandNV( DrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrawMeshTasksIndirectCommandNV( VkDrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + : DrawMeshTasksIndirectCommandNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DrawMeshTasksIndirectCommandNV & + operator=( DrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrawMeshTasksIndirectCommandNV & operator=( VkDrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandNV & setTaskCount( uint32_t taskCount_ ) VULKAN_HPP_NOEXCEPT + { + taskCount = taskCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandNV & setFirstTask( uint32_t firstTask_ ) VULKAN_HPP_NOEXCEPT + { + firstTask = firstTask_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkDrawMeshTasksIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDrawMeshTasksIndirectCommandNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( taskCount, firstTask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrawMeshTasksIndirectCommandNV const & ) const = default; +#else + bool operator==( DrawMeshTasksIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( taskCount == rhs.taskCount ) && ( firstTask == rhs.firstTask ); +# endif + } + + bool operator!=( DrawMeshTasksIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t taskCount = {}; + uint32_t firstTask = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV ) == + sizeof( VkDrawMeshTasksIndirectCommandNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DrawMeshTasksIndirectCommandNV is not nothrow_move_constructible!" ); + + struct DrmFormatModifierProperties2EXT + { + using NativeType = VkDrmFormatModifierProperties2EXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrmFormatModifierProperties2EXT( + uint64_t drmFormatModifier_ = {}, + uint32_t drmFormatModifierPlaneCount_ = {}, + VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 drmFormatModifierTilingFeatures_ = {} ) VULKAN_HPP_NOEXCEPT + : drmFormatModifier( drmFormatModifier_ ) + , drmFormatModifierPlaneCount( drmFormatModifierPlaneCount_ ) + , drmFormatModifierTilingFeatures( drmFormatModifierTilingFeatures_ ) + {} + + VULKAN_HPP_CONSTEXPR + DrmFormatModifierProperties2EXT( DrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrmFormatModifierProperties2EXT( VkDrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DrmFormatModifierProperties2EXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DrmFormatModifierProperties2EXT & + operator=( DrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrmFormatModifierProperties2EXT & operator=( VkDrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDrmFormatModifierProperties2EXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDrmFormatModifierProperties2EXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( drmFormatModifier, drmFormatModifierPlaneCount, drmFormatModifierTilingFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrmFormatModifierProperties2EXT const & ) const = default; +#else + bool operator==( DrmFormatModifierProperties2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( drmFormatModifier == rhs.drmFormatModifier ) && + ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) && + ( drmFormatModifierTilingFeatures == rhs.drmFormatModifierTilingFeatures ); +# endif + } + + bool operator!=( DrmFormatModifierProperties2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint64_t drmFormatModifier = {}; + uint32_t drmFormatModifierPlaneCount = {}; + VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 drmFormatModifierTilingFeatures = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT ) == + sizeof( VkDrmFormatModifierProperties2EXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DrmFormatModifierProperties2EXT is not nothrow_move_constructible!" ); + + struct DrmFormatModifierPropertiesEXT + { + using NativeType = VkDrmFormatModifierPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesEXT( + uint64_t drmFormatModifier_ = {}, + uint32_t drmFormatModifierPlaneCount_ = {}, + VULKAN_HPP_NAMESPACE::FormatFeatureFlags drmFormatModifierTilingFeatures_ = {} ) VULKAN_HPP_NOEXCEPT + : drmFormatModifier( drmFormatModifier_ ) + , drmFormatModifierPlaneCount( drmFormatModifierPlaneCount_ ) + , drmFormatModifierTilingFeatures( drmFormatModifierTilingFeatures_ ) + {} + + VULKAN_HPP_CONSTEXPR + DrmFormatModifierPropertiesEXT( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrmFormatModifierPropertiesEXT( VkDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DrmFormatModifierPropertiesEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DrmFormatModifierPropertiesEXT & + operator=( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrmFormatModifierPropertiesEXT & operator=( VkDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDrmFormatModifierPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDrmFormatModifierPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( drmFormatModifier, drmFormatModifierPlaneCount, drmFormatModifierTilingFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrmFormatModifierPropertiesEXT const & ) const = default; +#else + bool operator==( DrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( drmFormatModifier == rhs.drmFormatModifier ) && + ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) && + ( drmFormatModifierTilingFeatures == rhs.drmFormatModifierTilingFeatures ); +# endif + } + + bool operator!=( DrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint64_t drmFormatModifier = {}; + uint32_t drmFormatModifierPlaneCount = {}; + VULKAN_HPP_NAMESPACE::FormatFeatureFlags drmFormatModifierTilingFeatures = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT ) == + sizeof( VkDrmFormatModifierPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DrmFormatModifierPropertiesEXT is not nothrow_move_constructible!" ); + + struct DrmFormatModifierPropertiesList2EXT + { + using NativeType = VkDrmFormatModifierPropertiesList2EXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDrmFormatModifierPropertiesList2EXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesList2EXT( + uint32_t drmFormatModifierCount_ = {}, + VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT * pDrmFormatModifierProperties_ = {} ) VULKAN_HPP_NOEXCEPT + : drmFormatModifierCount( drmFormatModifierCount_ ) + , pDrmFormatModifierProperties( pDrmFormatModifierProperties_ ) + {} + + VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesList2EXT( DrmFormatModifierPropertiesList2EXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + DrmFormatModifierPropertiesList2EXT( VkDrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DrmFormatModifierPropertiesList2EXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DrmFormatModifierPropertiesList2EXT( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + drmFormatModifierProperties_ ) + : drmFormatModifierCount( static_cast( drmFormatModifierProperties_.size() ) ) + , pDrmFormatModifierProperties( drmFormatModifierProperties_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DrmFormatModifierPropertiesList2EXT & + operator=( DrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrmFormatModifierPropertiesList2EXT & + operator=( VkDrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDrmFormatModifierPropertiesList2EXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDrmFormatModifierPropertiesList2EXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifierProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrmFormatModifierPropertiesList2EXT const & ) const = default; +#else + bool operator==( DrmFormatModifierPropertiesList2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( drmFormatModifierCount == rhs.drmFormatModifierCount ) && + ( pDrmFormatModifierProperties == rhs.pDrmFormatModifierProperties ); +# endif + } + + bool operator!=( DrmFormatModifierPropertiesList2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDrmFormatModifierPropertiesList2EXT; + void * pNext = {}; + uint32_t drmFormatModifierCount = {}; + VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT * pDrmFormatModifierProperties = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT ) == + sizeof( VkDrmFormatModifierPropertiesList2EXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DrmFormatModifierPropertiesList2EXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DrmFormatModifierPropertiesList2EXT; + }; + + struct DrmFormatModifierPropertiesListEXT + { + using NativeType = VkDrmFormatModifierPropertiesListEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eDrmFormatModifierPropertiesListEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesListEXT( + uint32_t drmFormatModifierCount_ = {}, + VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT * pDrmFormatModifierProperties_ = {} ) VULKAN_HPP_NOEXCEPT + : drmFormatModifierCount( drmFormatModifierCount_ ) + , pDrmFormatModifierProperties( pDrmFormatModifierProperties_ ) + {} + + VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesListEXT( DrmFormatModifierPropertiesListEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + DrmFormatModifierPropertiesListEXT( VkDrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DrmFormatModifierPropertiesListEXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DrmFormatModifierPropertiesListEXT( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + drmFormatModifierProperties_ ) + : drmFormatModifierCount( static_cast( drmFormatModifierProperties_.size() ) ) + , pDrmFormatModifierProperties( drmFormatModifierProperties_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DrmFormatModifierPropertiesListEXT & + operator=( DrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrmFormatModifierPropertiesListEXT & + operator=( VkDrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkDrmFormatModifierPropertiesListEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkDrmFormatModifierPropertiesListEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifierProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrmFormatModifierPropertiesListEXT const & ) const = default; +#else + bool operator==( DrmFormatModifierPropertiesListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( drmFormatModifierCount == rhs.drmFormatModifierCount ) && + ( pDrmFormatModifierProperties == rhs.pDrmFormatModifierProperties ); +# endif + } + + bool operator!=( DrmFormatModifierPropertiesListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDrmFormatModifierPropertiesListEXT; + void * pNext = {}; + uint32_t drmFormatModifierCount = {}; + VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT * pDrmFormatModifierProperties = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT ) == + sizeof( VkDrmFormatModifierPropertiesListEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "DrmFormatModifierPropertiesListEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = DrmFormatModifierPropertiesListEXT; + }; + + struct EventCreateInfo + { + using NativeType = VkEventCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eEventCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR EventCreateInfo( VULKAN_HPP_NAMESPACE::EventCreateFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR EventCreateInfo( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + EventCreateInfo( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : EventCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + EventCreateInfo & operator=( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + EventCreateInfo & operator=( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 EventCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 EventCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::EventCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkEventCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkEventCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( EventCreateInfo const & ) const = default; +#else + bool operator==( EventCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( EventCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eEventCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::EventCreateFlags flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::EventCreateInfo ) == sizeof( VkEventCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "EventCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = EventCreateInfo; + }; + + struct ExportFenceCreateInfo + { + using NativeType = VkExportFenceCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportFenceCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ExportFenceCreateInfo( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes_ = {} ) VULKAN_HPP_NOEXCEPT + : handleTypes( handleTypes_ ) + {} + + VULKAN_HPP_CONSTEXPR ExportFenceCreateInfo( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportFenceCreateInfo( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportFenceCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExportFenceCreateInfo & operator=( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportFenceCreateInfo & operator=( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo & + setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkExportFenceCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExportFenceCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportFenceCreateInfo const & ) const = default; +#else + bool operator==( ExportFenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes ); +# endif + } + + bool operator!=( ExportFenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportFenceCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo ) == sizeof( VkExportFenceCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportFenceCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExportFenceCreateInfo; + }; + using ExportFenceCreateInfoKHR = ExportFenceCreateInfo; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct ExportFenceWin32HandleInfoKHR + { + using NativeType = VkExportFenceWin32HandleInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportFenceWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES * pAttributes_ = {}, + DWORD dwAccess_ = {}, + LPCWSTR name_ = {} ) VULKAN_HPP_NOEXCEPT + : pAttributes( pAttributes_ ) + , dwAccess( dwAccess_ ) + , name( name_ ) + {} + + VULKAN_HPP_CONSTEXPR + ExportFenceWin32HandleInfoKHR( ExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportFenceWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExportFenceWin32HandleInfoKHR & + operator=( ExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportFenceWin32HandleInfoKHR & operator=( VkExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & + setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT + { + pAttributes = pAttributes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT + { + dwAccess = dwAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT + { + name = name_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkExportFenceWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExportFenceWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pAttributes, dwAccess, name ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportFenceWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( ExportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && + ( dwAccess == rhs.dwAccess ) && ( name == rhs.name ); +# endif + } + + bool operator!=( ExportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportFenceWin32HandleInfoKHR; + const void * pNext = {}; + const SECURITY_ATTRIBUTES * pAttributes = {}; + DWORD dwAccess = {}; + LPCWSTR name = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR ) == + sizeof( VkExportFenceWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ExportFenceWin32HandleInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExportFenceWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + struct ExportMemoryAllocateInfo + { + using NativeType = VkExportMemoryAllocateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMemoryAllocateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfo( + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {} ) VULKAN_HPP_NOEXCEPT + : handleTypes( handleTypes_ ) + {} + + VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfo( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMemoryAllocateInfo( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMemoryAllocateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExportMemoryAllocateInfo & operator=( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMemoryAllocateInfo & operator=( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo & + setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkExportMemoryAllocateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExportMemoryAllocateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMemoryAllocateInfo const & ) const = default; +#else + bool operator==( ExportMemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes ); +# endif + } + + bool operator!=( ExportMemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryAllocateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo ) == + sizeof( VkExportMemoryAllocateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportMemoryAllocateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExportMemoryAllocateInfo; + }; + using ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo; + + struct ExportMemoryAllocateInfoNV + { + using NativeType = VkExportMemoryAllocateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMemoryAllocateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfoNV( + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ = {} ) VULKAN_HPP_NOEXCEPT + : handleTypes( handleTypes_ ) + {} + + VULKAN_HPP_CONSTEXPR + ExportMemoryAllocateInfoNV( ExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMemoryAllocateInfoNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExportMemoryAllocateInfoNV & operator=( ExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMemoryAllocateInfoNV & operator=( VkExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfoNV & + setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ ) VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkExportMemoryAllocateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExportMemoryAllocateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMemoryAllocateInfoNV const & ) const = default; +#else + bool operator==( ExportMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes ); +# endif + } + + bool operator!=( ExportMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryAllocateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV ) == + sizeof( VkExportMemoryAllocateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportMemoryAllocateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExportMemoryAllocateInfoNV; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct ExportMemoryWin32HandleInfoKHR + { + using NativeType = VkExportMemoryWin32HandleInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMemoryWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES * pAttributes_ = {}, + DWORD dwAccess_ = {}, + LPCWSTR name_ = {} ) VULKAN_HPP_NOEXCEPT + : pAttributes( pAttributes_ ) + , dwAccess( dwAccess_ ) + , name( name_ ) + {} + + VULKAN_HPP_CONSTEXPR + ExportMemoryWin32HandleInfoKHR( ExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMemoryWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExportMemoryWin32HandleInfoKHR & + operator=( ExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMemoryWin32HandleInfoKHR & operator=( VkExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & + setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT + { + pAttributes = pAttributes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT + { + dwAccess = dwAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT + { + name = name_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkExportMemoryWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExportMemoryWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pAttributes, dwAccess, name ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMemoryWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( ExportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && + ( dwAccess == rhs.dwAccess ) && ( name == rhs.name ); +# endif + } + + bool operator!=( ExportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryWin32HandleInfoKHR; + const void * pNext = {}; + const SECURITY_ATTRIBUTES * pAttributes = {}; + DWORD dwAccess = {}; + LPCWSTR name = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR ) == + sizeof( VkExportMemoryWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ExportMemoryWin32HandleInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExportMemoryWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct ExportMemoryWin32HandleInfoNV + { + using NativeType = VkExportMemoryWin32HandleInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMemoryWin32HandleInfoNV; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES * pAttributes_ = {}, + DWORD dwAccess_ = {} ) VULKAN_HPP_NOEXCEPT + : pAttributes( pAttributes_ ) + , dwAccess( dwAccess_ ) + {} + + VULKAN_HPP_CONSTEXPR + ExportMemoryWin32HandleInfoNV( ExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMemoryWin32HandleInfoNV( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExportMemoryWin32HandleInfoNV & + operator=( ExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMemoryWin32HandleInfoNV & operator=( VkExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & + setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT + { + pAttributes = pAttributes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT + { + dwAccess = dwAccess_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkExportMemoryWin32HandleInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExportMemoryWin32HandleInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pAttributes, dwAccess ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMemoryWin32HandleInfoNV const & ) const = default; +# else + bool operator==( ExportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && + ( dwAccess == rhs.dwAccess ); +# endif + } + + bool operator!=( ExportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryWin32HandleInfoNV; + const void * pNext = {}; + const SECURITY_ATTRIBUTES * pAttributes = {}; + DWORD dwAccess = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV ) == + sizeof( VkExportMemoryWin32HandleInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ExportMemoryWin32HandleInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExportMemoryWin32HandleInfoNV; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + struct ExportSemaphoreCreateInfo + { + using NativeType = VkExportSemaphoreCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportSemaphoreCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportSemaphoreCreateInfo( + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes_ = {} ) VULKAN_HPP_NOEXCEPT + : handleTypes( handleTypes_ ) + {} + + VULKAN_HPP_CONSTEXPR + ExportSemaphoreCreateInfo( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportSemaphoreCreateInfo( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportSemaphoreCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExportSemaphoreCreateInfo & operator=( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportSemaphoreCreateInfo & operator=( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo & + setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkExportSemaphoreCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExportSemaphoreCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportSemaphoreCreateInfo const & ) const = default; +#else + bool operator==( ExportSemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes ); +# endif + } + + bool operator!=( ExportSemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportSemaphoreCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo ) == + sizeof( VkExportSemaphoreCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportSemaphoreCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExportSemaphoreCreateInfo; + }; + using ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct ExportSemaphoreWin32HandleInfoKHR + { + using NativeType = VkExportSemaphoreWin32HandleInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eExportSemaphoreWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES * pAttributes_ = {}, + DWORD dwAccess_ = {}, + LPCWSTR name_ = {} ) VULKAN_HPP_NOEXCEPT + : pAttributes( pAttributes_ ) + , dwAccess( dwAccess_ ) + , name( name_ ) + {} + + VULKAN_HPP_CONSTEXPR + ExportSemaphoreWin32HandleInfoKHR( ExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportSemaphoreWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExportSemaphoreWin32HandleInfoKHR & + operator=( ExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportSemaphoreWin32HandleInfoKHR & operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & + setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT + { + pAttributes = pAttributes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT + { + dwAccess = dwAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT + { + name = name_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkExportSemaphoreWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExportSemaphoreWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pAttributes, dwAccess, name ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportSemaphoreWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( ExportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && + ( dwAccess == rhs.dwAccess ) && ( name == rhs.name ); +# endif + } + + bool operator!=( ExportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportSemaphoreWin32HandleInfoKHR; + const void * pNext = {}; + const SECURITY_ATTRIBUTES * pAttributes = {}; + DWORD dwAccess = {}; + LPCWSTR name = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR ) == + sizeof( VkExportSemaphoreWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ExportSemaphoreWin32HandleInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExportSemaphoreWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + struct ExtensionProperties + { + using NativeType = VkExtensionProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + ExtensionProperties( std::array const & extensionName_ = {}, + uint32_t specVersion_ = {} ) VULKAN_HPP_NOEXCEPT + : extensionName( extensionName_ ) + , specVersion( specVersion_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 ExtensionProperties( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExtensionProperties( VkExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : ExtensionProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExtensionProperties & operator=( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExtensionProperties & operator=( VkExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkExtensionProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExtensionProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, uint32_t const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( extensionName, specVersion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExtensionProperties const & ) const = default; +#else + bool operator==( ExtensionProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( extensionName == rhs.extensionName ) && ( specVersion == rhs.specVersion ); +# endif + } + + bool operator!=( ExtensionProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ArrayWrapper1D extensionName = {}; + uint32_t specVersion = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExtensionProperties ) == sizeof( VkExtensionProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExtensionProperties is not nothrow_move_constructible!" ); + + struct ExternalMemoryProperties + { + using NativeType = VkExternalMemoryProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalMemoryProperties( + VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags externalMemoryFeatures_ = {}, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes_ = {}, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags compatibleHandleTypes_ = {} ) VULKAN_HPP_NOEXCEPT + : externalMemoryFeatures( externalMemoryFeatures_ ) + , exportFromImportedHandleTypes( exportFromImportedHandleTypes_ ) + , compatibleHandleTypes( compatibleHandleTypes_ ) + {} + + VULKAN_HPP_CONSTEXPR ExternalMemoryProperties( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalMemoryProperties( VkExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalMemoryProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExternalMemoryProperties & operator=( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalMemoryProperties & operator=( VkExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkExternalMemoryProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExternalMemoryProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( externalMemoryFeatures, exportFromImportedHandleTypes, compatibleHandleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalMemoryProperties const & ) const = default; +#else + bool operator==( ExternalMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( externalMemoryFeatures == rhs.externalMemoryFeatures ) && + ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) && + ( compatibleHandleTypes == rhs.compatibleHandleTypes ); +# endif + } + + bool operator!=( ExternalMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags externalMemoryFeatures = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags compatibleHandleTypes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalMemoryProperties ) == + sizeof( VkExternalMemoryProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalMemoryProperties is not nothrow_move_constructible!" ); + using ExternalMemoryPropertiesKHR = ExternalMemoryProperties; + + struct ExternalBufferProperties + { + using NativeType = VkExternalBufferProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalBufferProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalBufferProperties( + VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties_ = {} ) VULKAN_HPP_NOEXCEPT + : externalMemoryProperties( externalMemoryProperties_ ) + {} + + VULKAN_HPP_CONSTEXPR ExternalBufferProperties( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalBufferProperties( VkExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalBufferProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExternalBufferProperties & operator=( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalBufferProperties & operator=( VkExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkExternalBufferProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExternalBufferProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, externalMemoryProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalBufferProperties const & ) const = default; +#else + bool operator==( ExternalBufferProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( externalMemoryProperties == rhs.externalMemoryProperties ); +# endif + } + + bool operator!=( ExternalBufferProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalBufferProperties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalBufferProperties ) == + sizeof( VkExternalBufferProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalBufferProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExternalBufferProperties; + }; + using ExternalBufferPropertiesKHR = ExternalBufferProperties; + + struct ExternalFenceProperties + { + using NativeType = VkExternalFenceProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalFenceProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalFenceProperties( + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags exportFromImportedHandleTypes_ = {}, + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags compatibleHandleTypes_ = {}, + VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags externalFenceFeatures_ = {} ) VULKAN_HPP_NOEXCEPT + : exportFromImportedHandleTypes( exportFromImportedHandleTypes_ ) + , compatibleHandleTypes( compatibleHandleTypes_ ) + , externalFenceFeatures( externalFenceFeatures_ ) + {} + + VULKAN_HPP_CONSTEXPR ExternalFenceProperties( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalFenceProperties( VkExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalFenceProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExternalFenceProperties & operator=( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalFenceProperties & operator=( VkExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkExternalFenceProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExternalFenceProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, exportFromImportedHandleTypes, compatibleHandleTypes, externalFenceFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalFenceProperties const & ) const = default; +#else + bool operator==( ExternalFenceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) && + ( compatibleHandleTypes == rhs.compatibleHandleTypes ) && + ( externalFenceFeatures == rhs.externalFenceFeatures ); +# endif + } + + bool operator!=( ExternalFenceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalFenceProperties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags exportFromImportedHandleTypes = {}; + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags compatibleHandleTypes = {}; + VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags externalFenceFeatures = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalFenceProperties ) == + sizeof( VkExternalFenceProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalFenceProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExternalFenceProperties; + }; + using ExternalFencePropertiesKHR = ExternalFenceProperties; + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + struct ExternalFormatANDROID + { + using NativeType = VkExternalFormatANDROID; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalFormatANDROID; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalFormatANDROID( uint64_t externalFormat_ = {} ) VULKAN_HPP_NOEXCEPT + : externalFormat( externalFormat_ ) + {} + + VULKAN_HPP_CONSTEXPR ExternalFormatANDROID( ExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalFormatANDROID( VkExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalFormatANDROID( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExternalFormatANDROID & operator=( ExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalFormatANDROID & operator=( VkExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalFormatANDROID & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalFormatANDROID & setExternalFormat( uint64_t externalFormat_ ) VULKAN_HPP_NOEXCEPT + { + externalFormat = externalFormat_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkExternalFormatANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExternalFormatANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, externalFormat ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalFormatANDROID const & ) const = default; +# else + bool operator==( ExternalFormatANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalFormat == rhs.externalFormat ); +# endif + } + + bool operator!=( ExternalFormatANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalFormatANDROID; + void * pNext = {}; + uint64_t externalFormat = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalFormatANDROID ) == sizeof( VkExternalFormatANDROID ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalFormatANDROID is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExternalFormatANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + struct ExternalImageFormatProperties + { + using NativeType = VkExternalImageFormatProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalImageFormatProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalImageFormatProperties( + VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties_ = {} ) VULKAN_HPP_NOEXCEPT + : externalMemoryProperties( externalMemoryProperties_ ) + {} + + VULKAN_HPP_CONSTEXPR + ExternalImageFormatProperties( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalImageFormatProperties( VkExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalImageFormatProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExternalImageFormatProperties & + operator=( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalImageFormatProperties & operator=( VkExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkExternalImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExternalImageFormatProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, externalMemoryProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalImageFormatProperties const & ) const = default; +#else + bool operator==( ExternalImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( externalMemoryProperties == rhs.externalMemoryProperties ); +# endif + } + + bool operator!=( ExternalImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalImageFormatProperties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties ) == + sizeof( VkExternalImageFormatProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ExternalImageFormatProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExternalImageFormatProperties; + }; + using ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties; + + struct ImageFormatProperties + { + using NativeType = VkImageFormatProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImageFormatProperties( VULKAN_HPP_NAMESPACE::Extent3D maxExtent_ = {}, + uint32_t maxMipLevels_ = {}, + uint32_t maxArrayLayers_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize maxResourceSize_ = {} ) VULKAN_HPP_NOEXCEPT + : maxExtent( maxExtent_ ) + , maxMipLevels( maxMipLevels_ ) + , maxArrayLayers( maxArrayLayers_ ) + , sampleCounts( sampleCounts_ ) + , maxResourceSize( maxResourceSize_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageFormatProperties( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageFormatProperties( VkImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageFormatProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageFormatProperties & operator=( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageFormatProperties & operator=( VkImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageFormatProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( maxExtent, maxMipLevels, maxArrayLayers, sampleCounts, maxResourceSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageFormatProperties const & ) const = default; +#else + bool operator==( ImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( maxExtent == rhs.maxExtent ) && ( maxMipLevels == rhs.maxMipLevels ) && + ( maxArrayLayers == rhs.maxArrayLayers ) && ( sampleCounts == rhs.sampleCounts ) && + ( maxResourceSize == rhs.maxResourceSize ); +# endif + } + + bool operator!=( ImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::Extent3D maxExtent = {}; + uint32_t maxMipLevels = {}; + uint32_t maxArrayLayers = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts = {}; + VULKAN_HPP_NAMESPACE::DeviceSize maxResourceSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageFormatProperties ) == sizeof( VkImageFormatProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageFormatProperties is not nothrow_move_constructible!" ); + + struct ExternalImageFormatPropertiesNV + { + using NativeType = VkExternalImageFormatPropertiesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalImageFormatPropertiesNV( + VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties_ = {}, + VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlagsNV externalMemoryFeatures_ = {}, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes_ = {}, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes_ = {} ) VULKAN_HPP_NOEXCEPT + : imageFormatProperties( imageFormatProperties_ ) + , externalMemoryFeatures( externalMemoryFeatures_ ) + , exportFromImportedHandleTypes( exportFromImportedHandleTypes_ ) + , compatibleHandleTypes( compatibleHandleTypes_ ) + {} + + VULKAN_HPP_CONSTEXPR + ExternalImageFormatPropertiesNV( ExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalImageFormatPropertiesNV( VkExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalImageFormatPropertiesNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExternalImageFormatPropertiesNV & + operator=( ExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalImageFormatPropertiesNV & operator=( VkExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkExternalImageFormatPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExternalImageFormatPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + imageFormatProperties, externalMemoryFeatures, exportFromImportedHandleTypes, compatibleHandleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalImageFormatPropertiesNV const & ) const = default; +#else + bool operator==( ExternalImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( imageFormatProperties == rhs.imageFormatProperties ) && + ( externalMemoryFeatures == rhs.externalMemoryFeatures ) && + ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) && + ( compatibleHandleTypes == rhs.compatibleHandleTypes ); +# endif + } + + bool operator!=( ExternalImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlagsNV externalMemoryFeatures = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV ) == + sizeof( VkExternalImageFormatPropertiesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ExternalImageFormatPropertiesNV is not nothrow_move_constructible!" ); + + struct ExternalMemoryBufferCreateInfo + { + using NativeType = VkExternalMemoryBufferCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalMemoryBufferCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalMemoryBufferCreateInfo( + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {} ) VULKAN_HPP_NOEXCEPT + : handleTypes( handleTypes_ ) + {} + + VULKAN_HPP_CONSTEXPR + ExternalMemoryBufferCreateInfo( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalMemoryBufferCreateInfo( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalMemoryBufferCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExternalMemoryBufferCreateInfo & + operator=( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalMemoryBufferCreateInfo & operator=( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo & + setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkExternalMemoryBufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExternalMemoryBufferCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalMemoryBufferCreateInfo const & ) const = default; +#else + bool operator==( ExternalMemoryBufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes ); +# endif + } + + bool operator!=( ExternalMemoryBufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalMemoryBufferCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo ) == + sizeof( VkExternalMemoryBufferCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ExternalMemoryBufferCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExternalMemoryBufferCreateInfo; + }; + using ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo; + + struct ExternalMemoryImageCreateInfo + { + using NativeType = VkExternalMemoryImageCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalMemoryImageCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfo( + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {} ) VULKAN_HPP_NOEXCEPT + : handleTypes( handleTypes_ ) + {} + + VULKAN_HPP_CONSTEXPR + ExternalMemoryImageCreateInfo( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalMemoryImageCreateInfo( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalMemoryImageCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExternalMemoryImageCreateInfo & + operator=( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalMemoryImageCreateInfo & operator=( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo & + setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkExternalMemoryImageCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExternalMemoryImageCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalMemoryImageCreateInfo const & ) const = default; +#else + bool operator==( ExternalMemoryImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes ); +# endif + } + + bool operator!=( ExternalMemoryImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalMemoryImageCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo ) == + sizeof( VkExternalMemoryImageCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ExternalMemoryImageCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExternalMemoryImageCreateInfo; + }; + using ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo; + + struct ExternalMemoryImageCreateInfoNV + { + using NativeType = VkExternalMemoryImageCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalMemoryImageCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfoNV( + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ = {} ) VULKAN_HPP_NOEXCEPT + : handleTypes( handleTypes_ ) + {} + + VULKAN_HPP_CONSTEXPR + ExternalMemoryImageCreateInfoNV( ExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalMemoryImageCreateInfoNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExternalMemoryImageCreateInfoNV & + operator=( ExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalMemoryImageCreateInfoNV & operator=( VkExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfoNV & + setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ ) VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkExternalMemoryImageCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExternalMemoryImageCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalMemoryImageCreateInfoNV const & ) const = default; +#else + bool operator==( ExternalMemoryImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes ); +# endif + } + + bool operator!=( ExternalMemoryImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalMemoryImageCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV ) == + sizeof( VkExternalMemoryImageCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ExternalMemoryImageCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExternalMemoryImageCreateInfoNV; + }; + + struct ExternalSemaphoreProperties + { + using NativeType = VkExternalSemaphoreProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalSemaphoreProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalSemaphoreProperties( + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes_ = {}, + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags compatibleHandleTypes_ = {}, + VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags externalSemaphoreFeatures_ = {} ) VULKAN_HPP_NOEXCEPT + : exportFromImportedHandleTypes( exportFromImportedHandleTypes_ ) + , compatibleHandleTypes( compatibleHandleTypes_ ) + , externalSemaphoreFeatures( externalSemaphoreFeatures_ ) + {} + + VULKAN_HPP_CONSTEXPR + ExternalSemaphoreProperties( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalSemaphoreProperties( VkExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalSemaphoreProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ExternalSemaphoreProperties & operator=( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalSemaphoreProperties & operator=( VkExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkExternalSemaphoreProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkExternalSemaphoreProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, exportFromImportedHandleTypes, compatibleHandleTypes, externalSemaphoreFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalSemaphoreProperties const & ) const = default; +#else + bool operator==( ExternalSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) && + ( compatibleHandleTypes == rhs.compatibleHandleTypes ) && + ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures ); +# endif + } + + bool operator!=( ExternalSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalSemaphoreProperties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes = {}; + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags compatibleHandleTypes = {}; + VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags externalSemaphoreFeatures = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties ) == + sizeof( VkExternalSemaphoreProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ExternalSemaphoreProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ExternalSemaphoreProperties; + }; + using ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties; + + struct FenceCreateInfo + { + using NativeType = VkFenceCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFenceCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FenceCreateInfo( VULKAN_HPP_NAMESPACE::FenceCreateFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR FenceCreateInfo( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FenceCreateInfo( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : FenceCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + FenceCreateInfo & operator=( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FenceCreateInfo & operator=( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::FenceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkFenceCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkFenceCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FenceCreateInfo const & ) const = default; +#else + bool operator==( FenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( FenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFenceCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::FenceCreateFlags flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FenceCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = FenceCreateInfo; + }; + + struct FenceGetFdInfoKHR + { + using NativeType = VkFenceGetFdInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFenceGetFdInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + FenceGetFdInfoKHR( VULKAN_HPP_NAMESPACE::Fence fence_ = {}, + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT + : fence( fence_ ) + , handleType( handleType_ ) + {} + + VULKAN_HPP_CONSTEXPR FenceGetFdInfoKHR( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : FenceGetFdInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + FenceGetFdInfoKHR & operator=( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FenceGetFdInfoKHR & operator=( VkFenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT + { + fence = fence_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkFenceGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkFenceGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fence, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FenceGetFdInfoKHR const & ) const = default; +#else + bool operator==( FenceGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && + ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( FenceGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFenceGetFdInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Fence fence = {}; + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FenceGetFdInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = FenceGetFdInfoKHR; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct FenceGetWin32HandleInfoKHR + { + using NativeType = VkFenceGetWin32HandleInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFenceGetWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FenceGetWin32HandleInfoKHR( + VULKAN_HPP_NAMESPACE::Fence fence_ = {}, + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT + : fence( fence_ ) + , handleType( handleType_ ) + {} + + VULKAN_HPP_CONSTEXPR + FenceGetWin32HandleInfoKHR( FenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : FenceGetWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + FenceGetWin32HandleInfoKHR & operator=( FenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FenceGetWin32HandleInfoKHR & operator=( VkFenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR & + setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT + { + fence = fence_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkFenceGetWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkFenceGetWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fence, handleType ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FenceGetWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( FenceGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && + ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( FenceGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFenceGetWin32HandleInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Fence fence = {}; + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR ) == + sizeof( VkFenceGetWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FenceGetWin32HandleInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = FenceGetWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + struct FilterCubicImageViewImageFormatPropertiesEXT + { + using NativeType = VkFilterCubicImageViewImageFormatPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eFilterCubicImageViewImageFormatPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FilterCubicImageViewImageFormatPropertiesEXT( + VULKAN_HPP_NAMESPACE::Bool32 filterCubic_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 filterCubicMinmax_ = {} ) VULKAN_HPP_NOEXCEPT + : filterCubic( filterCubic_ ) + , filterCubicMinmax( filterCubicMinmax_ ) + {} + + VULKAN_HPP_CONSTEXPR FilterCubicImageViewImageFormatPropertiesEXT( + FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FilterCubicImageViewImageFormatPropertiesEXT( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : FilterCubicImageViewImageFormatPropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + FilterCubicImageViewImageFormatPropertiesEXT & + operator=( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FilterCubicImageViewImageFormatPropertiesEXT & + operator=( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkFilterCubicImageViewImageFormatPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkFilterCubicImageViewImageFormatPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, filterCubic, filterCubicMinmax ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FilterCubicImageViewImageFormatPropertiesEXT const & ) const = default; +#else + bool operator==( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( filterCubic == rhs.filterCubic ) && + ( filterCubicMinmax == rhs.filterCubicMinmax ); +# endif + } + + bool operator!=( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFilterCubicImageViewImageFormatPropertiesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 filterCubic = {}; + VULKAN_HPP_NAMESPACE::Bool32 filterCubicMinmax = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT ) == + sizeof( VkFilterCubicImageViewImageFormatPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "FilterCubicImageViewImageFormatPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = FilterCubicImageViewImageFormatPropertiesEXT; + }; + + struct FormatProperties + { + using NativeType = VkFormatProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + FormatProperties( VULKAN_HPP_NAMESPACE::FormatFeatureFlags linearTilingFeatures_ = {}, + VULKAN_HPP_NAMESPACE::FormatFeatureFlags optimalTilingFeatures_ = {}, + VULKAN_HPP_NAMESPACE::FormatFeatureFlags bufferFeatures_ = {} ) VULKAN_HPP_NOEXCEPT + : linearTilingFeatures( linearTilingFeatures_ ) + , optimalTilingFeatures( optimalTilingFeatures_ ) + , bufferFeatures( bufferFeatures_ ) + {} + + VULKAN_HPP_CONSTEXPR FormatProperties( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FormatProperties( VkFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : FormatProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + FormatProperties & operator=( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FormatProperties & operator=( VkFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkFormatProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkFormatProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( linearTilingFeatures, optimalTilingFeatures, bufferFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FormatProperties const & ) const = default; +#else + bool operator==( FormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( linearTilingFeatures == rhs.linearTilingFeatures ) && + ( optimalTilingFeatures == rhs.optimalTilingFeatures ) && ( bufferFeatures == rhs.bufferFeatures ); +# endif + } + + bool operator!=( FormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::FormatFeatureFlags linearTilingFeatures = {}; + VULKAN_HPP_NAMESPACE::FormatFeatureFlags optimalTilingFeatures = {}; + VULKAN_HPP_NAMESPACE::FormatFeatureFlags bufferFeatures = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FormatProperties ) == sizeof( VkFormatProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FormatProperties is not nothrow_move_constructible!" ); + + struct FormatProperties2 + { + using NativeType = VkFormatProperties2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFormatProperties2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + FormatProperties2( VULKAN_HPP_NAMESPACE::FormatProperties formatProperties_ = {} ) VULKAN_HPP_NOEXCEPT + : formatProperties( formatProperties_ ) + {} + + VULKAN_HPP_CONSTEXPR FormatProperties2( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FormatProperties2( VkFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + : FormatProperties2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + FormatProperties2 & operator=( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FormatProperties2 & operator=( VkFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkFormatProperties2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std:: + tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, formatProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FormatProperties2 const & ) const = default; +#else + bool operator==( FormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( formatProperties == rhs.formatProperties ); +# endif + } + + bool operator!=( FormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFormatProperties2; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::FormatProperties formatProperties = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FormatProperties2 ) == sizeof( VkFormatProperties2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FormatProperties2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = FormatProperties2; + }; + using FormatProperties2KHR = FormatProperties2; + + struct FormatProperties3 + { + using NativeType = VkFormatProperties3; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFormatProperties3; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + FormatProperties3( VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 linearTilingFeatures_ = {}, + VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 optimalTilingFeatures_ = {}, + VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 bufferFeatures_ = {} ) VULKAN_HPP_NOEXCEPT + : linearTilingFeatures( linearTilingFeatures_ ) + , optimalTilingFeatures( optimalTilingFeatures_ ) + , bufferFeatures( bufferFeatures_ ) + {} + + VULKAN_HPP_CONSTEXPR FormatProperties3( FormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FormatProperties3( VkFormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT + : FormatProperties3( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + FormatProperties3 & operator=( FormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FormatProperties3 & operator=( VkFormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkFormatProperties3 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkFormatProperties3 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, linearTilingFeatures, optimalTilingFeatures, bufferFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FormatProperties3 const & ) const = default; +#else + bool operator==( FormatProperties3 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( linearTilingFeatures == rhs.linearTilingFeatures ) && + ( optimalTilingFeatures == rhs.optimalTilingFeatures ) && ( bufferFeatures == rhs.bufferFeatures ); +# endif + } + + bool operator!=( FormatProperties3 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFormatProperties3; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 linearTilingFeatures = {}; + VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 optimalTilingFeatures = {}; + VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 bufferFeatures = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FormatProperties3 ) == sizeof( VkFormatProperties3 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FormatProperties3 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = FormatProperties3; + }; + using FormatProperties3KHR = FormatProperties3; + + struct FragmentShadingRateAttachmentInfoKHR + { + using NativeType = VkFragmentShadingRateAttachmentInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eFragmentShadingRateAttachmentInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FragmentShadingRateAttachmentInfoKHR( + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pFragmentShadingRateAttachment_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D shadingRateAttachmentTexelSize_ = {} ) VULKAN_HPP_NOEXCEPT + : pFragmentShadingRateAttachment( pFragmentShadingRateAttachment_ ) + , shadingRateAttachmentTexelSize( shadingRateAttachmentTexelSize_ ) + {} + + VULKAN_HPP_CONSTEXPR FragmentShadingRateAttachmentInfoKHR( FragmentShadingRateAttachmentInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + FragmentShadingRateAttachmentInfoKHR( VkFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : FragmentShadingRateAttachmentInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + FragmentShadingRateAttachmentInfoKHR & + operator=( FragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FragmentShadingRateAttachmentInfoKHR & + operator=( VkFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & setPFragmentShadingRateAttachment( + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pFragmentShadingRateAttachment_ ) VULKAN_HPP_NOEXCEPT + { + pFragmentShadingRateAttachment = pFragmentShadingRateAttachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & setShadingRateAttachmentTexelSize( + VULKAN_HPP_NAMESPACE::Extent2D const & shadingRateAttachmentTexelSize_ ) VULKAN_HPP_NOEXCEPT + { + shadingRateAttachmentTexelSize = shadingRateAttachmentTexelSize_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkFragmentShadingRateAttachmentInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkFragmentShadingRateAttachmentInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pFragmentShadingRateAttachment, shadingRateAttachmentTexelSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FragmentShadingRateAttachmentInfoKHR const & ) const = default; +#else + bool operator==( FragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( pFragmentShadingRateAttachment == rhs.pFragmentShadingRateAttachment ) && + ( shadingRateAttachmentTexelSize == rhs.shadingRateAttachmentTexelSize ); +# endif + } + + bool operator!=( FragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFragmentShadingRateAttachmentInfoKHR; + const void * pNext = {}; + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pFragmentShadingRateAttachment = {}; + VULKAN_HPP_NAMESPACE::Extent2D shadingRateAttachmentTexelSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR ) == + sizeof( VkFragmentShadingRateAttachmentInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "FragmentShadingRateAttachmentInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = FragmentShadingRateAttachmentInfoKHR; + }; + + struct FramebufferAttachmentImageInfo + { + using NativeType = VkFramebufferAttachmentImageInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFramebufferAttachmentImageInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + FramebufferAttachmentImageInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {}, + uint32_t width_ = {}, + uint32_t height_ = {}, + uint32_t layerCount_ = {}, + uint32_t viewFormatCount_ = {}, + const VULKAN_HPP_NAMESPACE::Format * pViewFormats_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , usage( usage_ ) + , width( width_ ) + , height( height_ ) + , layerCount( layerCount_ ) + , viewFormatCount( viewFormatCount_ ) + , pViewFormats( pViewFormats_ ) + {} + + VULKAN_HPP_CONSTEXPR + FramebufferAttachmentImageInfo( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FramebufferAttachmentImageInfo( VkFramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : FramebufferAttachmentImageInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FramebufferAttachmentImageInfo( + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_, + uint32_t width_, + uint32_t height_, + uint32_t layerCount_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewFormats_ ) + : flags( flags_ ) + , usage( usage_ ) + , width( width_ ) + , height( height_ ) + , layerCount( layerCount_ ) + , viewFormatCount( static_cast( viewFormats_.size() ) ) + , pViewFormats( viewFormats_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + FramebufferAttachmentImageInfo & + operator=( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FramebufferAttachmentImageInfo & operator=( VkFramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & + setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & + setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT + { + width = width_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT + { + height = height_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & + setViewFormatCount( uint32_t viewFormatCount_ ) VULKAN_HPP_NOEXCEPT + { + viewFormatCount = viewFormatCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & + setPViewFormats( const VULKAN_HPP_NAMESPACE::Format * pViewFormats_ ) VULKAN_HPP_NOEXCEPT + { + pViewFormats = pViewFormats_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FramebufferAttachmentImageInfo & setViewFormats( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewFormats_ ) + VULKAN_HPP_NOEXCEPT + { + viewFormatCount = static_cast( viewFormats_.size() ); + pViewFormats = viewFormats_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkFramebufferAttachmentImageInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkFramebufferAttachmentImageInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, usage, width, height, layerCount, viewFormatCount, pViewFormats ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FramebufferAttachmentImageInfo const & ) const = default; +#else + bool operator==( FramebufferAttachmentImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( usage == rhs.usage ) && + ( width == rhs.width ) && ( height == rhs.height ) && ( layerCount == rhs.layerCount ) && + ( viewFormatCount == rhs.viewFormatCount ) && ( pViewFormats == rhs.pViewFormats ); +# endif + } + + bool operator!=( FramebufferAttachmentImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferAttachmentImageInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {}; + uint32_t width = {}; + uint32_t height = {}; + uint32_t layerCount = {}; + uint32_t viewFormatCount = {}; + const VULKAN_HPP_NAMESPACE::Format * pViewFormats = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo ) == + sizeof( VkFramebufferAttachmentImageInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "FramebufferAttachmentImageInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = FramebufferAttachmentImageInfo; + }; + using FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo; + + struct FramebufferAttachmentsCreateInfo + { + using NativeType = VkFramebufferAttachmentsCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFramebufferAttachmentsCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FramebufferAttachmentsCreateInfo( + uint32_t attachmentImageInfoCount_ = {}, + const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * pAttachmentImageInfos_ = {} ) VULKAN_HPP_NOEXCEPT + : attachmentImageInfoCount( attachmentImageInfoCount_ ) + , pAttachmentImageInfos( pAttachmentImageInfos_ ) + {} + + VULKAN_HPP_CONSTEXPR + FramebufferAttachmentsCreateInfo( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FramebufferAttachmentsCreateInfo( VkFramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : FramebufferAttachmentsCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FramebufferAttachmentsCreateInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + attachmentImageInfos_ ) + : attachmentImageInfoCount( static_cast( attachmentImageInfos_.size() ) ) + , pAttachmentImageInfos( attachmentImageInfos_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + FramebufferAttachmentsCreateInfo & + operator=( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FramebufferAttachmentsCreateInfo & operator=( VkFramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & + setAttachmentImageInfoCount( uint32_t attachmentImageInfoCount_ ) VULKAN_HPP_NOEXCEPT + { + attachmentImageInfoCount = attachmentImageInfoCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & setPAttachmentImageInfos( + const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * pAttachmentImageInfos_ ) VULKAN_HPP_NOEXCEPT + { + pAttachmentImageInfos = pAttachmentImageInfos_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FramebufferAttachmentsCreateInfo & setAttachmentImageInfos( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + attachmentImageInfos_ ) VULKAN_HPP_NOEXCEPT + { + attachmentImageInfoCount = static_cast( attachmentImageInfos_.size() ); + pAttachmentImageInfos = attachmentImageInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkFramebufferAttachmentsCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkFramebufferAttachmentsCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, attachmentImageInfoCount, pAttachmentImageInfos ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FramebufferAttachmentsCreateInfo const & ) const = default; +#else + bool operator==( FramebufferAttachmentsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( attachmentImageInfoCount == rhs.attachmentImageInfoCount ) && + ( pAttachmentImageInfos == rhs.pAttachmentImageInfos ); +# endif + } + + bool operator!=( FramebufferAttachmentsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferAttachmentsCreateInfo; + const void * pNext = {}; + uint32_t attachmentImageInfoCount = {}; + const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * pAttachmentImageInfos = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo ) == + sizeof( VkFramebufferAttachmentsCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "FramebufferAttachmentsCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = FramebufferAttachmentsCreateInfo; + }; + using FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo; + + struct FramebufferCreateInfo + { + using NativeType = VkFramebufferCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFramebufferCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FramebufferCreateInfo( VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, + uint32_t attachmentCount_ = {}, + const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_ = {}, + uint32_t width_ = {}, + uint32_t height_ = {}, + uint32_t layers_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , renderPass( renderPass_ ) + , attachmentCount( attachmentCount_ ) + , pAttachments( pAttachments_ ) + , width( width_ ) + , height( height_ ) + , layers( layers_ ) + {} + + VULKAN_HPP_CONSTEXPR FramebufferCreateInfo( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : FramebufferCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FramebufferCreateInfo( + VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_, + VULKAN_HPP_NAMESPACE::RenderPass renderPass_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachments_, + uint32_t width_ = {}, + uint32_t height_ = {}, + uint32_t layers_ = {} ) + : flags( flags_ ) + , renderPass( renderPass_ ) + , attachmentCount( static_cast( attachments_.size() ) ) + , pAttachments( attachments_.data() ) + , width( width_ ) + , height( height_ ) + , layers( layers_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + FramebufferCreateInfo & operator=( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FramebufferCreateInfo & operator=( VkFramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & + setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT + { + renderPass = renderPass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & + setPAttachments( const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_ ) VULKAN_HPP_NOEXCEPT + { + pAttachments = pAttachments_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FramebufferCreateInfo & setAttachments( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachments_ ) + VULKAN_HPP_NOEXCEPT + { + attachmentCount = static_cast( attachments_.size() ); + pAttachments = attachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT + { + width = width_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT + { + height = height_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setLayers( uint32_t layers_ ) VULKAN_HPP_NOEXCEPT + { + layers = layers_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkFramebufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkFramebufferCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, renderPass, attachmentCount, pAttachments, width, height, layers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FramebufferCreateInfo const & ) const = default; +#else + bool operator==( FramebufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( renderPass == rhs.renderPass ) && ( attachmentCount == rhs.attachmentCount ) && + ( pAttachments == rhs.pAttachments ) && ( width == rhs.width ) && ( height == rhs.height ) && + ( layers == rhs.layers ); +# endif + } + + bool operator!=( FramebufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::RenderPass renderPass = {}; + uint32_t attachmentCount = {}; + const VULKAN_HPP_NAMESPACE::ImageView * pAttachments = {}; + uint32_t width = {}; + uint32_t height = {}; + uint32_t layers = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FramebufferCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = FramebufferCreateInfo; + }; + + struct FramebufferMixedSamplesCombinationNV + { + using NativeType = VkFramebufferMixedSamplesCombinationNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eFramebufferMixedSamplesCombinationNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FramebufferMixedSamplesCombinationNV( + VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode_ = + VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, + VULKAN_HPP_NAMESPACE::SampleCountFlags depthStencilSamples_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlags colorSamples_ = {} ) VULKAN_HPP_NOEXCEPT + : coverageReductionMode( coverageReductionMode_ ) + , rasterizationSamples( rasterizationSamples_ ) + , depthStencilSamples( depthStencilSamples_ ) + , colorSamples( colorSamples_ ) + {} + + VULKAN_HPP_CONSTEXPR FramebufferMixedSamplesCombinationNV( FramebufferMixedSamplesCombinationNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + FramebufferMixedSamplesCombinationNV( VkFramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT + : FramebufferMixedSamplesCombinationNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + FramebufferMixedSamplesCombinationNV & + operator=( FramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FramebufferMixedSamplesCombinationNV & + operator=( VkFramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkFramebufferMixedSamplesCombinationNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkFramebufferMixedSamplesCombinationNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, coverageReductionMode, rasterizationSamples, depthStencilSamples, colorSamples ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FramebufferMixedSamplesCombinationNV const & ) const = default; +#else + bool operator==( FramebufferMixedSamplesCombinationNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( coverageReductionMode == rhs.coverageReductionMode ) && + ( rasterizationSamples == rhs.rasterizationSamples ) && + ( depthStencilSamples == rhs.depthStencilSamples ) && ( colorSamples == rhs.colorSamples ); +# endif + } + + bool operator!=( FramebufferMixedSamplesCombinationNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferMixedSamplesCombinationNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode = + VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge; + VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; + VULKAN_HPP_NAMESPACE::SampleCountFlags depthStencilSamples = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlags colorSamples = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV ) == + sizeof( VkFramebufferMixedSamplesCombinationNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "FramebufferMixedSamplesCombinationNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = FramebufferMixedSamplesCombinationNV; + }; + + struct IndirectCommandsStreamNV + { + using NativeType = VkIndirectCommandsStreamNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectCommandsStreamNV( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {} ) VULKAN_HPP_NOEXCEPT + : buffer( buffer_ ) + , offset( offset_ ) + {} + + VULKAN_HPP_CONSTEXPR IndirectCommandsStreamNV( IndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsStreamNV( VkIndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsStreamNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + IndirectCommandsStreamNV & operator=( IndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsStreamNV & operator=( VkIndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsStreamNV & + setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsStreamNV & + setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkIndirectCommandsStreamNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkIndirectCommandsStreamNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( buffer, offset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsStreamNV const & ) const = default; +#else + bool operator==( IndirectCommandsStreamNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( buffer == rhs.buffer ) && ( offset == rhs.offset ); +# endif + } + + bool operator!=( IndirectCommandsStreamNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::Buffer buffer = {}; + VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV ) == + sizeof( VkIndirectCommandsStreamNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectCommandsStreamNV is not nothrow_move_constructible!" ); + + struct GeneratedCommandsInfoNV + { + using NativeType = VkGeneratedCommandsInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeneratedCommandsInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeneratedCommandsInfoNV( + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, + VULKAN_HPP_NAMESPACE::Pipeline pipeline_ = {}, + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ = {}, + uint32_t streamCount_ = {}, + const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV * pStreams_ = {}, + uint32_t sequencesCount_ = {}, + VULKAN_HPP_NAMESPACE::Buffer preprocessBuffer_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize preprocessOffset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize_ = {}, + VULKAN_HPP_NAMESPACE::Buffer sequencesCountBuffer_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize sequencesCountOffset_ = {}, + VULKAN_HPP_NAMESPACE::Buffer sequencesIndexBuffer_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize sequencesIndexOffset_ = {} ) VULKAN_HPP_NOEXCEPT + : pipelineBindPoint( pipelineBindPoint_ ) + , pipeline( pipeline_ ) + , indirectCommandsLayout( indirectCommandsLayout_ ) + , streamCount( streamCount_ ) + , pStreams( pStreams_ ) + , sequencesCount( sequencesCount_ ) + , preprocessBuffer( preprocessBuffer_ ) + , preprocessOffset( preprocessOffset_ ) + , preprocessSize( preprocessSize_ ) + , sequencesCountBuffer( sequencesCountBuffer_ ) + , sequencesCountOffset( sequencesCountOffset_ ) + , sequencesIndexBuffer( sequencesIndexBuffer_ ) + , sequencesIndexOffset( sequencesIndexOffset_ ) + {} + + VULKAN_HPP_CONSTEXPR GeneratedCommandsInfoNV( GeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeneratedCommandsInfoNV( VkGeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : GeneratedCommandsInfoNV( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GeneratedCommandsInfoNV( + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_, + VULKAN_HPP_NAMESPACE::Pipeline pipeline_, + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + streams_, + uint32_t sequencesCount_ = {}, + VULKAN_HPP_NAMESPACE::Buffer preprocessBuffer_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize preprocessOffset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize_ = {}, + VULKAN_HPP_NAMESPACE::Buffer sequencesCountBuffer_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize sequencesCountOffset_ = {}, + VULKAN_HPP_NAMESPACE::Buffer sequencesIndexBuffer_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize sequencesIndexOffset_ = {} ) + : pipelineBindPoint( pipelineBindPoint_ ) + , pipeline( pipeline_ ) + , indirectCommandsLayout( indirectCommandsLayout_ ) + , streamCount( static_cast( streams_.size() ) ) + , pStreams( streams_.data() ) + , sequencesCount( sequencesCount_ ) + , preprocessBuffer( preprocessBuffer_ ) + , preprocessOffset( preprocessOffset_ ) + , preprocessSize( preprocessSize_ ) + , sequencesCountBuffer( sequencesCountBuffer_ ) + , sequencesCountOffset( sequencesCountOffset_ ) + , sequencesIndexBuffer( sequencesIndexBuffer_ ) + , sequencesIndexOffset( sequencesIndexOffset_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + GeneratedCommandsInfoNV & operator=( GeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeneratedCommandsInfoNV & operator=( VkGeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & + setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & + setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setIndirectCommandsLayout( + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ ) VULKAN_HPP_NOEXCEPT + { + indirectCommandsLayout = indirectCommandsLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setStreamCount( uint32_t streamCount_ ) VULKAN_HPP_NOEXCEPT + { + streamCount = streamCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & + setPStreams( const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV * pStreams_ ) VULKAN_HPP_NOEXCEPT + { + pStreams = pStreams_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GeneratedCommandsInfoNV & setStreams( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + streams_ ) VULKAN_HPP_NOEXCEPT + { + streamCount = static_cast( streams_.size() ); + pStreams = streams_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesCount( uint32_t sequencesCount_ ) VULKAN_HPP_NOEXCEPT + { + sequencesCount = sequencesCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & + setPreprocessBuffer( VULKAN_HPP_NAMESPACE::Buffer preprocessBuffer_ ) VULKAN_HPP_NOEXCEPT + { + preprocessBuffer = preprocessBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & + setPreprocessOffset( VULKAN_HPP_NAMESPACE::DeviceSize preprocessOffset_ ) VULKAN_HPP_NOEXCEPT + { + preprocessOffset = preprocessOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & + setPreprocessSize( VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize_ ) VULKAN_HPP_NOEXCEPT + { + preprocessSize = preprocessSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & + setSequencesCountBuffer( VULKAN_HPP_NAMESPACE::Buffer sequencesCountBuffer_ ) VULKAN_HPP_NOEXCEPT + { + sequencesCountBuffer = sequencesCountBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & + setSequencesCountOffset( VULKAN_HPP_NAMESPACE::DeviceSize sequencesCountOffset_ ) VULKAN_HPP_NOEXCEPT + { + sequencesCountOffset = sequencesCountOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & + setSequencesIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer sequencesIndexBuffer_ ) VULKAN_HPP_NOEXCEPT + { + sequencesIndexBuffer = sequencesIndexBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & + setSequencesIndexOffset( VULKAN_HPP_NAMESPACE::DeviceSize sequencesIndexOffset_ ) VULKAN_HPP_NOEXCEPT + { + sequencesIndexOffset = sequencesIndexOffset_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkGeneratedCommandsInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkGeneratedCommandsInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + pipelineBindPoint, + pipeline, + indirectCommandsLayout, + streamCount, + pStreams, + sequencesCount, + preprocessBuffer, + preprocessOffset, + preprocessSize, + sequencesCountBuffer, + sequencesCountOffset, + sequencesIndexBuffer, + sequencesIndexOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeneratedCommandsInfoNV const & ) const = default; +#else + bool operator==( GeneratedCommandsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && + ( pipeline == rhs.pipeline ) && ( indirectCommandsLayout == rhs.indirectCommandsLayout ) && + ( streamCount == rhs.streamCount ) && ( pStreams == rhs.pStreams ) && + ( sequencesCount == rhs.sequencesCount ) && ( preprocessBuffer == rhs.preprocessBuffer ) && + ( preprocessOffset == rhs.preprocessOffset ) && ( preprocessSize == rhs.preprocessSize ) && + ( sequencesCountBuffer == rhs.sequencesCountBuffer ) && + ( sequencesCountOffset == rhs.sequencesCountOffset ) && + ( sequencesIndexBuffer == rhs.sequencesIndexBuffer ) && + ( sequencesIndexOffset == rhs.sequencesIndexOffset ); +# endif + } + + bool operator!=( GeneratedCommandsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeneratedCommandsInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics; + VULKAN_HPP_NAMESPACE::Pipeline pipeline = {}; + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout = {}; + uint32_t streamCount = {}; + const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV * pStreams = {}; + uint32_t sequencesCount = {}; + VULKAN_HPP_NAMESPACE::Buffer preprocessBuffer = {}; + VULKAN_HPP_NAMESPACE::DeviceSize preprocessOffset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize = {}; + VULKAN_HPP_NAMESPACE::Buffer sequencesCountBuffer = {}; + VULKAN_HPP_NAMESPACE::DeviceSize sequencesCountOffset = {}; + VULKAN_HPP_NAMESPACE::Buffer sequencesIndexBuffer = {}; + VULKAN_HPP_NAMESPACE::DeviceSize sequencesIndexOffset = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV ) == + sizeof( VkGeneratedCommandsInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GeneratedCommandsInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = GeneratedCommandsInfoNV; + }; + + struct GeneratedCommandsMemoryRequirementsInfoNV + { + using NativeType = VkGeneratedCommandsMemoryRequirementsInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eGeneratedCommandsMemoryRequirementsInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoNV( + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, + VULKAN_HPP_NAMESPACE::Pipeline pipeline_ = {}, + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ = {}, + uint32_t maxSequencesCount_ = {} ) VULKAN_HPP_NOEXCEPT + : pipelineBindPoint( pipelineBindPoint_ ) + , pipeline( pipeline_ ) + , indirectCommandsLayout( indirectCommandsLayout_ ) + , maxSequencesCount( maxSequencesCount_ ) + {} + + VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoNV( + GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeneratedCommandsMemoryRequirementsInfoNV( VkGeneratedCommandsMemoryRequirementsInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : GeneratedCommandsMemoryRequirementsInfoNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + GeneratedCommandsMemoryRequirementsInfoNV & + operator=( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeneratedCommandsMemoryRequirementsInfoNV & + operator=( VkGeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & + setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & + setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & setIndirectCommandsLayout( + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ ) VULKAN_HPP_NOEXCEPT + { + indirectCommandsLayout = indirectCommandsLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & + setMaxSequencesCount( uint32_t maxSequencesCount_ ) VULKAN_HPP_NOEXCEPT + { + maxSequencesCount = maxSequencesCount_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkGeneratedCommandsMemoryRequirementsInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkGeneratedCommandsMemoryRequirementsInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineBindPoint, pipeline, indirectCommandsLayout, maxSequencesCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeneratedCommandsMemoryRequirementsInfoNV const & ) const = default; +#else + bool operator==( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && + ( pipeline == rhs.pipeline ) && ( indirectCommandsLayout == rhs.indirectCommandsLayout ) && + ( maxSequencesCount == rhs.maxSequencesCount ); +# endif + } + + bool operator!=( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeneratedCommandsMemoryRequirementsInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics; + VULKAN_HPP_NAMESPACE::Pipeline pipeline = {}; + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout = {}; + uint32_t maxSequencesCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV ) == + sizeof( VkGeneratedCommandsMemoryRequirementsInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "GeneratedCommandsMemoryRequirementsInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = GeneratedCommandsMemoryRequirementsInfoNV; + }; + + struct VertexInputBindingDescription + { + using NativeType = VkVertexInputBindingDescription; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VertexInputBindingDescription( uint32_t binding_ = {}, + uint32_t stride_ = {}, + VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ = + VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex ) VULKAN_HPP_NOEXCEPT + : binding( binding_ ) + , stride( stride_ ) + , inputRate( inputRate_ ) + {} + + VULKAN_HPP_CONSTEXPR + VertexInputBindingDescription( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT + : VertexInputBindingDescription( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VertexInputBindingDescription & + operator=( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VertexInputBindingDescription & operator=( VkVertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & + setInputRate( VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ ) VULKAN_HPP_NOEXCEPT + { + inputRate = inputRate_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVertexInputBindingDescription const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVertexInputBindingDescription &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( binding, stride, inputRate ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VertexInputBindingDescription const & ) const = default; +#else + bool operator==( VertexInputBindingDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( binding == rhs.binding ) && ( stride == rhs.stride ) && ( inputRate == rhs.inputRate ); +# endif + } + + bool operator!=( VertexInputBindingDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t binding = {}; + uint32_t stride = {}; + VULKAN_HPP_NAMESPACE::VertexInputRate inputRate = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VertexInputBindingDescription ) == + sizeof( VkVertexInputBindingDescription ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VertexInputBindingDescription is not nothrow_move_constructible!" ); + + struct VertexInputAttributeDescription + { + using NativeType = VkVertexInputAttributeDescription; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VertexInputAttributeDescription( uint32_t location_ = {}, + uint32_t binding_ = {}, + VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + uint32_t offset_ = {} ) VULKAN_HPP_NOEXCEPT + : location( location_ ) + , binding( binding_ ) + , format( format_ ) + , offset( offset_ ) + {} + + VULKAN_HPP_CONSTEXPR + VertexInputAttributeDescription( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT + : VertexInputAttributeDescription( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VertexInputAttributeDescription & + operator=( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VertexInputAttributeDescription & operator=( VkVertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setLocation( uint32_t location_ ) VULKAN_HPP_NOEXCEPT + { + location = location_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & + setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVertexInputAttributeDescription const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVertexInputAttributeDescription &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( location, binding, format, offset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VertexInputAttributeDescription const & ) const = default; +#else + bool operator==( VertexInputAttributeDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( location == rhs.location ) && ( binding == rhs.binding ) && ( format == rhs.format ) && + ( offset == rhs.offset ); +# endif + } + + bool operator!=( VertexInputAttributeDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t location = {}; + uint32_t binding = {}; + VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; + uint32_t offset = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription ) == + sizeof( VkVertexInputAttributeDescription ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VertexInputAttributeDescription is not nothrow_move_constructible!" ); + + struct PipelineVertexInputStateCreateInfo + { + using NativeType = VkPipelineVertexInputStateCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineVertexInputStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineVertexInputStateCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags_ = {}, + uint32_t vertexBindingDescriptionCount_ = {}, + const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription * pVertexBindingDescriptions_ = {}, + uint32_t vertexAttributeDescriptionCount_ = {}, + const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * pVertexAttributeDescriptions_ = {} ) + VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ ) + , pVertexBindingDescriptions( pVertexBindingDescriptions_ ) + , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ ) + , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineVertexInputStateCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineVertexInputStateCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + vertexBindingDescriptions_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + vertexAttributeDescriptions_ = {} ) + : flags( flags_ ) + , vertexBindingDescriptionCount( static_cast( vertexBindingDescriptions_.size() ) ) + , pVertexBindingDescriptions( vertexBindingDescriptions_.data() ) + , vertexAttributeDescriptionCount( static_cast( vertexAttributeDescriptions_.size() ) ) + , pVertexAttributeDescriptions( vertexAttributeDescriptions_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineVertexInputStateCreateInfo & + operator=( PipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineVertexInputStateCreateInfo & + operator=( VkPipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & + setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ ) VULKAN_HPP_NOEXCEPT + { + vertexBindingDescriptionCount = vertexBindingDescriptionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setPVertexBindingDescriptions( + const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription * pVertexBindingDescriptions_ ) VULKAN_HPP_NOEXCEPT + { + pVertexBindingDescriptions = pVertexBindingDescriptions_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineVertexInputStateCreateInfo & setVertexBindingDescriptions( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + vertexBindingDescriptions_ ) VULKAN_HPP_NOEXCEPT + { + vertexBindingDescriptionCount = static_cast( vertexBindingDescriptions_.size() ); + pVertexBindingDescriptions = vertexBindingDescriptions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & + setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ ) VULKAN_HPP_NOEXCEPT + { + vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setPVertexAttributeDescriptions( + const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * pVertexAttributeDescriptions_ ) VULKAN_HPP_NOEXCEPT + { + pVertexAttributeDescriptions = pVertexAttributeDescriptions_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineVertexInputStateCreateInfo & setVertexAttributeDescriptions( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + vertexAttributeDescriptions_ ) VULKAN_HPP_NOEXCEPT + { + vertexAttributeDescriptionCount = static_cast( vertexAttributeDescriptions_.size() ); + pVertexAttributeDescriptions = vertexAttributeDescriptions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineVertexInputStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineVertexInputStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + vertexBindingDescriptionCount, + pVertexBindingDescriptions, + vertexAttributeDescriptionCount, + pVertexAttributeDescriptions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineVertexInputStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineVertexInputStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount ) && + ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions ) && + ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount ) && + ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions ); +# endif + } + + bool operator!=( PipelineVertexInputStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineVertexInputStateCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags = {}; + uint32_t vertexBindingDescriptionCount = {}; + const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription * pVertexBindingDescriptions = {}; + uint32_t vertexAttributeDescriptionCount = {}; + const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * pVertexAttributeDescriptions = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo ) == + sizeof( VkPipelineVertexInputStateCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineVertexInputStateCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineVertexInputStateCreateInfo; + }; + + struct PipelineInputAssemblyStateCreateInfo + { + using NativeType = VkPipelineInputAssemblyStateCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineInputAssemblyStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineInputAssemblyStateCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::PrimitiveTopology topology_ = VULKAN_HPP_NAMESPACE::PrimitiveTopology::ePointList, + VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , topology( topology_ ) + , primitiveRestartEnable( primitiveRestartEnable_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineInputAssemblyStateCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineInputAssemblyStateCreateInfo & + operator=( PipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineInputAssemblyStateCreateInfo & + operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & + setTopology( VULKAN_HPP_NAMESPACE::PrimitiveTopology topology_ ) VULKAN_HPP_NOEXCEPT + { + topology = topology_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & + setPrimitiveRestartEnable( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable_ ) VULKAN_HPP_NOEXCEPT + { + primitiveRestartEnable = primitiveRestartEnable_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineInputAssemblyStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineInputAssemblyStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, topology, primitiveRestartEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineInputAssemblyStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineInputAssemblyStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( topology == rhs.topology ) && ( primitiveRestartEnable == rhs.primitiveRestartEnable ); +# endif + } + + bool operator!=( PipelineInputAssemblyStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineInputAssemblyStateCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::PrimitiveTopology topology = VULKAN_HPP_NAMESPACE::PrimitiveTopology::ePointList; + VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo ) == + sizeof( VkPipelineInputAssemblyStateCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineInputAssemblyStateCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineInputAssemblyStateCreateInfo; + }; + + struct PipelineTessellationStateCreateInfo + { + using NativeType = VkPipelineTessellationStateCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineTessellationStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PipelineTessellationStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags_ = {}, + uint32_t patchControlPoints_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , patchControlPoints( patchControlPoints_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineTessellationStateCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineTessellationStateCreateInfo & + operator=( PipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineTessellationStateCreateInfo & + operator=( VkPipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & + setPatchControlPoints( uint32_t patchControlPoints_ ) VULKAN_HPP_NOEXCEPT + { + patchControlPoints = patchControlPoints_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineTessellationStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineTessellationStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, patchControlPoints ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineTessellationStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineTessellationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( patchControlPoints == rhs.patchControlPoints ); +# endif + } + + bool operator!=( PipelineTessellationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineTessellationStateCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags = {}; + uint32_t patchControlPoints = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo ) == + sizeof( VkPipelineTessellationStateCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineTessellationStateCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineTessellationStateCreateInfo; + }; + + struct PipelineViewportStateCreateInfo + { + using NativeType = VkPipelineViewportStateCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PipelineViewportStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_ = {}, + uint32_t viewportCount_ = {}, + const VULKAN_HPP_NAMESPACE::Viewport * pViewports_ = {}, + uint32_t scissorCount_ = {}, + const VULKAN_HPP_NAMESPACE::Rect2D * pScissors_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , viewportCount( viewportCount_ ) + , pViewports( pViewports_ ) + , scissorCount( scissorCount_ ) + , pScissors( pScissors_ ) + {} + + VULKAN_HPP_CONSTEXPR + PipelineViewportStateCreateInfo( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineViewportStateCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportStateCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewports_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & scissors_ = {} ) + : flags( flags_ ) + , viewportCount( static_cast( viewports_.size() ) ) + , pViewports( viewports_.data() ) + , scissorCount( static_cast( scissors_.size() ) ) + , pScissors( scissors_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineViewportStateCreateInfo & + operator=( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportStateCreateInfo & operator=( VkPipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & + setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT + { + viewportCount = viewportCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & + setPViewports( const VULKAN_HPP_NAMESPACE::Viewport * pViewports_ ) VULKAN_HPP_NOEXCEPT + { + pViewports = pViewports_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportStateCreateInfo & setViewports( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewports_ ) + VULKAN_HPP_NOEXCEPT + { + viewportCount = static_cast( viewports_.size() ); + pViewports = viewports_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & + setScissorCount( uint32_t scissorCount_ ) VULKAN_HPP_NOEXCEPT + { + scissorCount = scissorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & + setPScissors( const VULKAN_HPP_NAMESPACE::Rect2D * pScissors_ ) VULKAN_HPP_NOEXCEPT + { + pScissors = pScissors_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportStateCreateInfo & + setScissors( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & scissors_ ) + VULKAN_HPP_NOEXCEPT + { + scissorCount = static_cast( scissors_.size() ); + pScissors = scissors_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineViewportStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineViewportStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, viewportCount, pViewports, scissorCount, pScissors ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineViewportStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( viewportCount == rhs.viewportCount ) && ( pViewports == rhs.pViewports ) && + ( scissorCount == rhs.scissorCount ) && ( pScissors == rhs.pScissors ); +# endif + } + + bool operator!=( PipelineViewportStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportStateCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags = {}; + uint32_t viewportCount = {}; + const VULKAN_HPP_NAMESPACE::Viewport * pViewports = {}; + uint32_t scissorCount = {}; + const VULKAN_HPP_NAMESPACE::Rect2D * pScissors = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo ) == + sizeof( VkPipelineViewportStateCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineViewportStateCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineViewportStateCreateInfo; + }; + + struct PipelineRasterizationStateCreateInfo + { + using NativeType = VkPipelineRasterizationStateCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineRasterizationStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRasterizationStateCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable_ = {}, + VULKAN_HPP_NAMESPACE::PolygonMode polygonMode_ = VULKAN_HPP_NAMESPACE::PolygonMode::eFill, + VULKAN_HPP_NAMESPACE::CullModeFlags cullMode_ = {}, + VULKAN_HPP_NAMESPACE::FrontFace frontFace_ = VULKAN_HPP_NAMESPACE::FrontFace::eCounterClockwise, + VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable_ = {}, + float depthBiasConstantFactor_ = {}, + float depthBiasClamp_ = {}, + float depthBiasSlopeFactor_ = {}, + float lineWidth_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , depthClampEnable( depthClampEnable_ ) + , rasterizerDiscardEnable( rasterizerDiscardEnable_ ) + , polygonMode( polygonMode_ ) + , cullMode( cullMode_ ) + , frontFace( frontFace_ ) + , depthBiasEnable( depthBiasEnable_ ) + , depthBiasConstantFactor( depthBiasConstantFactor_ ) + , depthBiasClamp( depthBiasClamp_ ) + , depthBiasSlopeFactor( depthBiasSlopeFactor_ ) + , lineWidth( lineWidth_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineRasterizationStateCreateInfo( PipelineRasterizationStateCreateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineRasterizationStateCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineRasterizationStateCreateInfo & + operator=( PipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationStateCreateInfo & + operator=( VkPipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & + setDepthClampEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable_ ) VULKAN_HPP_NOEXCEPT + { + depthClampEnable = depthClampEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & + setRasterizerDiscardEnable( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable_ ) VULKAN_HPP_NOEXCEPT + { + rasterizerDiscardEnable = rasterizerDiscardEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & + setPolygonMode( VULKAN_HPP_NAMESPACE::PolygonMode polygonMode_ ) VULKAN_HPP_NOEXCEPT + { + polygonMode = polygonMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & + setCullMode( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode_ ) VULKAN_HPP_NOEXCEPT + { + cullMode = cullMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & + setFrontFace( VULKAN_HPP_NAMESPACE::FrontFace frontFace_ ) VULKAN_HPP_NOEXCEPT + { + frontFace = frontFace_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & + setDepthBiasEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable_ ) VULKAN_HPP_NOEXCEPT + { + depthBiasEnable = depthBiasEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & + setDepthBiasConstantFactor( float depthBiasConstantFactor_ ) VULKAN_HPP_NOEXCEPT + { + depthBiasConstantFactor = depthBiasConstantFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & + setDepthBiasClamp( float depthBiasClamp_ ) VULKAN_HPP_NOEXCEPT + { + depthBiasClamp = depthBiasClamp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & + setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ ) VULKAN_HPP_NOEXCEPT + { + depthBiasSlopeFactor = depthBiasSlopeFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setLineWidth( float lineWidth_ ) VULKAN_HPP_NOEXCEPT + { + lineWidth = lineWidth_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineRasterizationStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineRasterizationStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + depthClampEnable, + rasterizerDiscardEnable, + polygonMode, + cullMode, + frontFace, + depthBiasEnable, + depthBiasConstantFactor, + depthBiasClamp, + depthBiasSlopeFactor, + lineWidth ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRasterizationStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineRasterizationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( depthClampEnable == rhs.depthClampEnable ) && + ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable ) && ( polygonMode == rhs.polygonMode ) && + ( cullMode == rhs.cullMode ) && ( frontFace == rhs.frontFace ) && + ( depthBiasEnable == rhs.depthBiasEnable ) && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor ) && + ( depthBiasClamp == rhs.depthBiasClamp ) && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor ) && + ( lineWidth == rhs.lineWidth ); +# endif + } + + bool operator!=( PipelineRasterizationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationStateCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable = {}; + VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable = {}; + VULKAN_HPP_NAMESPACE::PolygonMode polygonMode = VULKAN_HPP_NAMESPACE::PolygonMode::eFill; + VULKAN_HPP_NAMESPACE::CullModeFlags cullMode = {}; + VULKAN_HPP_NAMESPACE::FrontFace frontFace = VULKAN_HPP_NAMESPACE::FrontFace::eCounterClockwise; + VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable = {}; + float depthBiasConstantFactor = {}; + float depthBiasClamp = {}; + float depthBiasSlopeFactor = {}; + float lineWidth = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo ) == + sizeof( VkPipelineRasterizationStateCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineRasterizationStateCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineRasterizationStateCreateInfo; + }; + + struct PipelineMultisampleStateCreateInfo + { + using NativeType = VkPipelineMultisampleStateCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineMultisampleStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineMultisampleStateCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, + VULKAN_HPP_NAMESPACE::Bool32 sampleShadingEnable_ = {}, + float minSampleShading_ = {}, + const VULKAN_HPP_NAMESPACE::SampleMask * pSampleMask_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 alphaToCoverageEnable_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 alphaToOneEnable_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , rasterizationSamples( rasterizationSamples_ ) + , sampleShadingEnable( sampleShadingEnable_ ) + , minSampleShading( minSampleShading_ ) + , pSampleMask( pSampleMask_ ) + , alphaToCoverageEnable( alphaToCoverageEnable_ ) + , alphaToOneEnable( alphaToOneEnable_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineMultisampleStateCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineMultisampleStateCreateInfo & + operator=( PipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineMultisampleStateCreateInfo & + operator=( VkPipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & + setRasterizationSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ ) VULKAN_HPP_NOEXCEPT + { + rasterizationSamples = rasterizationSamples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & + setSampleShadingEnable( VULKAN_HPP_NAMESPACE::Bool32 sampleShadingEnable_ ) VULKAN_HPP_NOEXCEPT + { + sampleShadingEnable = sampleShadingEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & + setMinSampleShading( float minSampleShading_ ) VULKAN_HPP_NOEXCEPT + { + minSampleShading = minSampleShading_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & + setPSampleMask( const VULKAN_HPP_NAMESPACE::SampleMask * pSampleMask_ ) VULKAN_HPP_NOEXCEPT + { + pSampleMask = pSampleMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & + setAlphaToCoverageEnable( VULKAN_HPP_NAMESPACE::Bool32 alphaToCoverageEnable_ ) VULKAN_HPP_NOEXCEPT + { + alphaToCoverageEnable = alphaToCoverageEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & + setAlphaToOneEnable( VULKAN_HPP_NAMESPACE::Bool32 alphaToOneEnable_ ) VULKAN_HPP_NOEXCEPT + { + alphaToOneEnable = alphaToOneEnable_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineMultisampleStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineMultisampleStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + rasterizationSamples, + sampleShadingEnable, + minSampleShading, + pSampleMask, + alphaToCoverageEnable, + alphaToOneEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineMultisampleStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineMultisampleStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( rasterizationSamples == rhs.rasterizationSamples ) && + ( sampleShadingEnable == rhs.sampleShadingEnable ) && ( minSampleShading == rhs.minSampleShading ) && + ( pSampleMask == rhs.pSampleMask ) && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable ) && + ( alphaToOneEnable == rhs.alphaToOneEnable ); +# endif + } + + bool operator!=( PipelineMultisampleStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineMultisampleStateCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; + VULKAN_HPP_NAMESPACE::Bool32 sampleShadingEnable = {}; + float minSampleShading = {}; + const VULKAN_HPP_NAMESPACE::SampleMask * pSampleMask = {}; + VULKAN_HPP_NAMESPACE::Bool32 alphaToCoverageEnable = {}; + VULKAN_HPP_NAMESPACE::Bool32 alphaToOneEnable = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo ) == + sizeof( VkPipelineMultisampleStateCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineMultisampleStateCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineMultisampleStateCreateInfo; + }; + + struct StencilOpState + { + using NativeType = VkStencilOpState; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + StencilOpState( VULKAN_HPP_NAMESPACE::StencilOp failOp_ = VULKAN_HPP_NAMESPACE::StencilOp::eKeep, + VULKAN_HPP_NAMESPACE::StencilOp passOp_ = VULKAN_HPP_NAMESPACE::StencilOp::eKeep, + VULKAN_HPP_NAMESPACE::StencilOp depthFailOp_ = VULKAN_HPP_NAMESPACE::StencilOp::eKeep, + VULKAN_HPP_NAMESPACE::CompareOp compareOp_ = VULKAN_HPP_NAMESPACE::CompareOp::eNever, + uint32_t compareMask_ = {}, + uint32_t writeMask_ = {}, + uint32_t reference_ = {} ) VULKAN_HPP_NOEXCEPT + : failOp( failOp_ ) + , passOp( passOp_ ) + , depthFailOp( depthFailOp_ ) + , compareOp( compareOp_ ) + , compareMask( compareMask_ ) + , writeMask( writeMask_ ) + , reference( reference_ ) + {} + + VULKAN_HPP_CONSTEXPR StencilOpState( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + StencilOpState( VkStencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT + : StencilOpState( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + StencilOpState & operator=( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + StencilOpState & operator=( VkStencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 StencilOpState & setFailOp( VULKAN_HPP_NAMESPACE::StencilOp failOp_ ) VULKAN_HPP_NOEXCEPT + { + failOp = failOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState & setPassOp( VULKAN_HPP_NAMESPACE::StencilOp passOp_ ) VULKAN_HPP_NOEXCEPT + { + passOp = passOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState & + setDepthFailOp( VULKAN_HPP_NAMESPACE::StencilOp depthFailOp_ ) VULKAN_HPP_NOEXCEPT + { + depthFailOp = depthFailOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState & + setCompareOp( VULKAN_HPP_NAMESPACE::CompareOp compareOp_ ) VULKAN_HPP_NOEXCEPT + { + compareOp = compareOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState & setCompareMask( uint32_t compareMask_ ) VULKAN_HPP_NOEXCEPT + { + compareMask = compareMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState & setWriteMask( uint32_t writeMask_ ) VULKAN_HPP_NOEXCEPT + { + writeMask = writeMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState & setReference( uint32_t reference_ ) VULKAN_HPP_NOEXCEPT + { + reference = reference_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkStencilOpState const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkStencilOpState &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( failOp, passOp, depthFailOp, compareOp, compareMask, writeMask, reference ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( StencilOpState const & ) const = default; +#else + bool operator==( StencilOpState const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( failOp == rhs.failOp ) && ( passOp == rhs.passOp ) && ( depthFailOp == rhs.depthFailOp ) && + ( compareOp == rhs.compareOp ) && ( compareMask == rhs.compareMask ) && ( writeMask == rhs.writeMask ) && + ( reference == rhs.reference ); +# endif + } + + bool operator!=( StencilOpState const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StencilOp failOp = VULKAN_HPP_NAMESPACE::StencilOp::eKeep; + VULKAN_HPP_NAMESPACE::StencilOp passOp = VULKAN_HPP_NAMESPACE::StencilOp::eKeep; + VULKAN_HPP_NAMESPACE::StencilOp depthFailOp = VULKAN_HPP_NAMESPACE::StencilOp::eKeep; + VULKAN_HPP_NAMESPACE::CompareOp compareOp = VULKAN_HPP_NAMESPACE::CompareOp::eNever; + uint32_t compareMask = {}; + uint32_t writeMask = {}; + uint32_t reference = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::StencilOpState ) == sizeof( VkStencilOpState ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "StencilOpState is not nothrow_move_constructible!" ); + + struct PipelineDepthStencilStateCreateInfo + { + using NativeType = VkPipelineDepthStencilStateCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineDepthStencilStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable_ = {}, + VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp_ = VULKAN_HPP_NAMESPACE::CompareOp::eNever, + VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable_ = {}, + VULKAN_HPP_NAMESPACE::StencilOpState front_ = {}, + VULKAN_HPP_NAMESPACE::StencilOpState back_ = {}, + float minDepthBounds_ = {}, + float maxDepthBounds_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , depthTestEnable( depthTestEnable_ ) + , depthWriteEnable( depthWriteEnable_ ) + , depthCompareOp( depthCompareOp_ ) + , depthBoundsTestEnable( depthBoundsTestEnable_ ) + , stencilTestEnable( stencilTestEnable_ ) + , front( front_ ) + , back( back_ ) + , minDepthBounds( minDepthBounds_ ) + , maxDepthBounds( maxDepthBounds_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateInfo( PipelineDepthStencilStateCreateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineDepthStencilStateCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineDepthStencilStateCreateInfo & + operator=( PipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineDepthStencilStateCreateInfo & + operator=( VkPipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & + setDepthTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable_ ) VULKAN_HPP_NOEXCEPT + { + depthTestEnable = depthTestEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & + setDepthWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable_ ) VULKAN_HPP_NOEXCEPT + { + depthWriteEnable = depthWriteEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & + setDepthCompareOp( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp_ ) VULKAN_HPP_NOEXCEPT + { + depthCompareOp = depthCompareOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & + setDepthBoundsTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable_ ) VULKAN_HPP_NOEXCEPT + { + depthBoundsTestEnable = depthBoundsTestEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & + setStencilTestEnable( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable_ ) VULKAN_HPP_NOEXCEPT + { + stencilTestEnable = stencilTestEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & + setFront( VULKAN_HPP_NAMESPACE::StencilOpState const & front_ ) VULKAN_HPP_NOEXCEPT + { + front = front_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & + setBack( VULKAN_HPP_NAMESPACE::StencilOpState const & back_ ) VULKAN_HPP_NOEXCEPT + { + back = back_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & + setMinDepthBounds( float minDepthBounds_ ) VULKAN_HPP_NOEXCEPT + { + minDepthBounds = minDepthBounds_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & + setMaxDepthBounds( float maxDepthBounds_ ) VULKAN_HPP_NOEXCEPT + { + maxDepthBounds = maxDepthBounds_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineDepthStencilStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineDepthStencilStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + depthTestEnable, + depthWriteEnable, + depthCompareOp, + depthBoundsTestEnable, + stencilTestEnable, + front, + back, + minDepthBounds, + maxDepthBounds ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineDepthStencilStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineDepthStencilStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( depthTestEnable == rhs.depthTestEnable ) && ( depthWriteEnable == rhs.depthWriteEnable ) && + ( depthCompareOp == rhs.depthCompareOp ) && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable ) && + ( stencilTestEnable == rhs.stencilTestEnable ) && ( front == rhs.front ) && ( back == rhs.back ) && + ( minDepthBounds == rhs.minDepthBounds ) && ( maxDepthBounds == rhs.maxDepthBounds ); +# endif + } + + bool operator!=( PipelineDepthStencilStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDepthStencilStateCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable = {}; + VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable = {}; + VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp = VULKAN_HPP_NAMESPACE::CompareOp::eNever; + VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable = {}; + VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable = {}; + VULKAN_HPP_NAMESPACE::StencilOpState front = {}; + VULKAN_HPP_NAMESPACE::StencilOpState back = {}; + float minDepthBounds = {}; + float maxDepthBounds = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo ) == + sizeof( VkPipelineDepthStencilStateCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineDepthStencilStateCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineDepthStencilStateCreateInfo; + }; + + struct PipelineColorBlendAttachmentState + { + using NativeType = VkPipelineColorBlendAttachmentState; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineColorBlendAttachmentState( + VULKAN_HPP_NAMESPACE::Bool32 blendEnable_ = {}, + VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero, + VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero, + VULKAN_HPP_NAMESPACE::BlendOp colorBlendOp_ = VULKAN_HPP_NAMESPACE::BlendOp::eAdd, + VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero, + VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero, + VULKAN_HPP_NAMESPACE::BlendOp alphaBlendOp_ = VULKAN_HPP_NAMESPACE::BlendOp::eAdd, + VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask_ = {} ) VULKAN_HPP_NOEXCEPT + : blendEnable( blendEnable_ ) + , srcColorBlendFactor( srcColorBlendFactor_ ) + , dstColorBlendFactor( dstColorBlendFactor_ ) + , colorBlendOp( colorBlendOp_ ) + , srcAlphaBlendFactor( srcAlphaBlendFactor_ ) + , dstAlphaBlendFactor( dstAlphaBlendFactor_ ) + , alphaBlendOp( alphaBlendOp_ ) + , colorWriteMask( colorWriteMask_ ) + {} + + VULKAN_HPP_CONSTEXPR + PipelineColorBlendAttachmentState( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineColorBlendAttachmentState( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineColorBlendAttachmentState & + operator=( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineColorBlendAttachmentState & operator=( VkPipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & + setBlendEnable( VULKAN_HPP_NAMESPACE::Bool32 blendEnable_ ) VULKAN_HPP_NOEXCEPT + { + blendEnable = blendEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & + setSrcColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT + { + srcColorBlendFactor = srcColorBlendFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & + setDstColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT + { + dstColorBlendFactor = dstColorBlendFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & + setColorBlendOp( VULKAN_HPP_NAMESPACE::BlendOp colorBlendOp_ ) VULKAN_HPP_NOEXCEPT + { + colorBlendOp = colorBlendOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & + setSrcAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT + { + srcAlphaBlendFactor = srcAlphaBlendFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & + setDstAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT + { + dstAlphaBlendFactor = dstAlphaBlendFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & + setAlphaBlendOp( VULKAN_HPP_NAMESPACE::BlendOp alphaBlendOp_ ) VULKAN_HPP_NOEXCEPT + { + alphaBlendOp = alphaBlendOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & + setColorWriteMask( VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask_ ) VULKAN_HPP_NOEXCEPT + { + colorWriteMask = colorWriteMask_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineColorBlendAttachmentState const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineColorBlendAttachmentState &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( blendEnable, + srcColorBlendFactor, + dstColorBlendFactor, + colorBlendOp, + srcAlphaBlendFactor, + dstAlphaBlendFactor, + alphaBlendOp, + colorWriteMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineColorBlendAttachmentState const & ) const = default; +#else + bool operator==( PipelineColorBlendAttachmentState const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( blendEnable == rhs.blendEnable ) && ( srcColorBlendFactor == rhs.srcColorBlendFactor ) && + ( dstColorBlendFactor == rhs.dstColorBlendFactor ) && ( colorBlendOp == rhs.colorBlendOp ) && + ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor ) && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor ) && + ( alphaBlendOp == rhs.alphaBlendOp ) && ( colorWriteMask == rhs.colorWriteMask ); +# endif + } + + bool operator!=( PipelineColorBlendAttachmentState const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::Bool32 blendEnable = {}; + VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero; + VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero; + VULKAN_HPP_NAMESPACE::BlendOp colorBlendOp = VULKAN_HPP_NAMESPACE::BlendOp::eAdd; + VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero; + VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero; + VULKAN_HPP_NAMESPACE::BlendOp alphaBlendOp = VULKAN_HPP_NAMESPACE::BlendOp::eAdd; + VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState ) == + sizeof( VkPipelineColorBlendAttachmentState ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineColorBlendAttachmentState is not nothrow_move_constructible!" ); + + struct PipelineColorBlendStateCreateInfo + { + using NativeType = VkPipelineColorBlendStateCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineColorBlendStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable_ = {}, + VULKAN_HPP_NAMESPACE::LogicOp logicOp_ = VULKAN_HPP_NAMESPACE::LogicOp::eClear, + uint32_t attachmentCount_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * pAttachments_ = {}, + std::array const & blendConstants_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , logicOpEnable( logicOpEnable_ ) + , logicOp( logicOp_ ) + , attachmentCount( attachmentCount_ ) + , pAttachments( pAttachments_ ) + , blendConstants( blendConstants_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + PipelineColorBlendStateCreateInfo( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineColorBlendStateCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineColorBlendStateCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_, + VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable_, + VULKAN_HPP_NAMESPACE::LogicOp logicOp_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState> const & attachments_, + std::array const & blendConstants_ = {} ) + : flags( flags_ ) + , logicOpEnable( logicOpEnable_ ) + , logicOp( logicOp_ ) + , attachmentCount( static_cast( attachments_.size() ) ) + , pAttachments( attachments_.data() ) + , blendConstants( blendConstants_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineColorBlendStateCreateInfo & + operator=( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineColorBlendStateCreateInfo & operator=( VkPipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & + setLogicOpEnable( VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable_ ) VULKAN_HPP_NOEXCEPT + { + logicOpEnable = logicOpEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & + setLogicOp( VULKAN_HPP_NAMESPACE::LogicOp logicOp_ ) VULKAN_HPP_NOEXCEPT + { + logicOp = logicOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & + setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setPAttachments( + const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * pAttachments_ ) VULKAN_HPP_NOEXCEPT + { + pAttachments = pAttachments_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineColorBlendStateCreateInfo & setAttachments( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState> const & attachments_ ) VULKAN_HPP_NOEXCEPT + { + attachmentCount = static_cast( attachments_.size() ); + pAttachments = attachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & + setBlendConstants( std::array blendConstants_ ) VULKAN_HPP_NOEXCEPT + { + blendConstants = blendConstants_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineColorBlendStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineColorBlendStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, logicOpEnable, logicOp, attachmentCount, pAttachments, blendConstants ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineColorBlendStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineColorBlendStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( logicOpEnable == rhs.logicOpEnable ) && ( logicOp == rhs.logicOp ) && + ( attachmentCount == rhs.attachmentCount ) && ( pAttachments == rhs.pAttachments ) && + ( blendConstants == rhs.blendConstants ); +# endif + } + + bool operator!=( PipelineColorBlendStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineColorBlendStateCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable = {}; + VULKAN_HPP_NAMESPACE::LogicOp logicOp = VULKAN_HPP_NAMESPACE::LogicOp::eClear; + uint32_t attachmentCount = {}; + const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * pAttachments = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D blendConstants = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo ) == + sizeof( VkPipelineColorBlendStateCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineColorBlendStateCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineColorBlendStateCreateInfo; + }; + + struct PipelineDynamicStateCreateInfo + { + using NativeType = VkPipelineDynamicStateCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineDynamicStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineDynamicStateCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_ = {}, + uint32_t dynamicStateCount_ = {}, + const VULKAN_HPP_NAMESPACE::DynamicState * pDynamicStates_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , dynamicStateCount( dynamicStateCount_ ) + , pDynamicStates( pDynamicStates_ ) + {} + + VULKAN_HPP_CONSTEXPR + PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineDynamicStateCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineDynamicStateCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & dynamicStates_ ) + : flags( flags_ ) + , dynamicStateCount( static_cast( dynamicStates_.size() ) ) + , pDynamicStates( dynamicStates_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineDynamicStateCreateInfo & + operator=( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineDynamicStateCreateInfo & operator=( VkPipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & + setDynamicStateCount( uint32_t dynamicStateCount_ ) VULKAN_HPP_NOEXCEPT + { + dynamicStateCount = dynamicStateCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & + setPDynamicStates( const VULKAN_HPP_NAMESPACE::DynamicState * pDynamicStates_ ) VULKAN_HPP_NOEXCEPT + { + pDynamicStates = pDynamicStates_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineDynamicStateCreateInfo & setDynamicStates( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & dynamicStates_ ) + VULKAN_HPP_NOEXCEPT + { + dynamicStateCount = static_cast( dynamicStates_.size() ); + pDynamicStates = dynamicStates_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineDynamicStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineDynamicStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, dynamicStateCount, pDynamicStates ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineDynamicStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineDynamicStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( dynamicStateCount == rhs.dynamicStateCount ) && ( pDynamicStates == rhs.pDynamicStates ); +# endif + } + + bool operator!=( PipelineDynamicStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDynamicStateCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags = {}; + uint32_t dynamicStateCount = {}; + const VULKAN_HPP_NAMESPACE::DynamicState * pDynamicStates = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo ) == + sizeof( VkPipelineDynamicStateCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineDynamicStateCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineDynamicStateCreateInfo; + }; + + struct GraphicsPipelineCreateInfo + { + using NativeType = VkGraphicsPipelineCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGraphicsPipelineCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ = {}, + uint32_t stageCount_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo * pViewportState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo * pMultisampleState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo * pDepthStencilState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo * pColorBlendState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState_ = {}, + VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, + VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, + uint32_t subpass_ = {}, + VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , stageCount( stageCount_ ) + , pStages( pStages_ ) + , pVertexInputState( pVertexInputState_ ) + , pInputAssemblyState( pInputAssemblyState_ ) + , pTessellationState( pTessellationState_ ) + , pViewportState( pViewportState_ ) + , pRasterizationState( pRasterizationState_ ) + , pMultisampleState( pMultisampleState_ ) + , pDepthStencilState( pDepthStencilState_ ) + , pColorBlendState( pColorBlendState_ ) + , pDynamicState( pDynamicState_ ) + , layout( layout_ ) + , renderPass( renderPass_ ) + , subpass( subpass_ ) + , basePipelineHandle( basePipelineHandle_ ) + , basePipelineIndex( basePipelineIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + GraphicsPipelineCreateInfo( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : GraphicsPipelineCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GraphicsPipelineCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + stages_, + const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo * pViewportState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo * pMultisampleState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo * pDepthStencilState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo * pColorBlendState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState_ = {}, + VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, + VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, + uint32_t subpass_ = {}, + VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {} ) + : flags( flags_ ) + , stageCount( static_cast( stages_.size() ) ) + , pStages( stages_.data() ) + , pVertexInputState( pVertexInputState_ ) + , pInputAssemblyState( pInputAssemblyState_ ) + , pTessellationState( pTessellationState_ ) + , pViewportState( pViewportState_ ) + , pRasterizationState( pRasterizationState_ ) + , pMultisampleState( pMultisampleState_ ) + , pDepthStencilState( pDepthStencilState_ ) + , pColorBlendState( pColorBlendState_ ) + , pDynamicState( pDynamicState_ ) + , layout( layout_ ) + , renderPass( renderPass_ ) + , subpass( subpass_ ) + , basePipelineHandle( basePipelineHandle_ ) + , basePipelineIndex( basePipelineIndex_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + GraphicsPipelineCreateInfo & operator=( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GraphicsPipelineCreateInfo & operator=( VkGraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT + { + stageCount = stageCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & + setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT + { + pStages = pStages_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GraphicsPipelineCreateInfo & setStages( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + stages_ ) VULKAN_HPP_NOEXCEPT + { + stageCount = static_cast( stages_.size() ); + pStages = stages_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPVertexInputState( + const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState_ ) VULKAN_HPP_NOEXCEPT + { + pVertexInputState = pVertexInputState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPInputAssemblyState( + const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState_ ) VULKAN_HPP_NOEXCEPT + { + pInputAssemblyState = pInputAssemblyState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPTessellationState( + const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ ) VULKAN_HPP_NOEXCEPT + { + pTessellationState = pTessellationState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPViewportState( + const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo * pViewportState_ ) VULKAN_HPP_NOEXCEPT + { + pViewportState = pViewportState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPRasterizationState( + const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState_ ) VULKAN_HPP_NOEXCEPT + { + pRasterizationState = pRasterizationState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPMultisampleState( + const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo * pMultisampleState_ ) VULKAN_HPP_NOEXCEPT + { + pMultisampleState = pMultisampleState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPDepthStencilState( + const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo * pDepthStencilState_ ) VULKAN_HPP_NOEXCEPT + { + pDepthStencilState = pDepthStencilState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPColorBlendState( + const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo * pColorBlendState_ ) VULKAN_HPP_NOEXCEPT + { + pColorBlendState = pColorBlendState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPDynamicState( + const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState_ ) VULKAN_HPP_NOEXCEPT + { + pDynamicState = pDynamicState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & + setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & + setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT + { + renderPass = renderPass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT + { + subpass = subpass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & + setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT + { + basePipelineHandle = basePipelineHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & + setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT + { + basePipelineIndex = basePipelineIndex_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkGraphicsPipelineCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkGraphicsPipelineCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + stageCount, + pStages, + pVertexInputState, + pInputAssemblyState, + pTessellationState, + pViewportState, + pRasterizationState, + pMultisampleState, + pDepthStencilState, + pColorBlendState, + pDynamicState, + layout, + renderPass, + subpass, + basePipelineHandle, + basePipelineIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GraphicsPipelineCreateInfo const & ) const = default; +#else + bool operator==( GraphicsPipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) && + ( pVertexInputState == rhs.pVertexInputState ) && ( pInputAssemblyState == rhs.pInputAssemblyState ) && + ( pTessellationState == rhs.pTessellationState ) && ( pViewportState == rhs.pViewportState ) && + ( pRasterizationState == rhs.pRasterizationState ) && ( pMultisampleState == rhs.pMultisampleState ) && + ( pDepthStencilState == rhs.pDepthStencilState ) && ( pColorBlendState == rhs.pColorBlendState ) && + ( pDynamicState == rhs.pDynamicState ) && ( layout == rhs.layout ) && ( renderPass == rhs.renderPass ) && + ( subpass == rhs.subpass ) && ( basePipelineHandle == rhs.basePipelineHandle ) && + ( basePipelineIndex == rhs.basePipelineIndex ); +# endif + } + + bool operator!=( GraphicsPipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGraphicsPipelineCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags = {}; + uint32_t stageCount = {}; + const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages = {}; + const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState = {}; + const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState = {}; + const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState = {}; + const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo * pViewportState = {}; + const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState = {}; + const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo * pMultisampleState = {}; + const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo * pDepthStencilState = {}; + const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo * pColorBlendState = {}; + const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState = {}; + VULKAN_HPP_NAMESPACE::PipelineLayout layout = {}; + VULKAN_HPP_NAMESPACE::RenderPass renderPass = {}; + uint32_t subpass = {}; + VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle = {}; + int32_t basePipelineIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo ) == + sizeof( VkGraphicsPipelineCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GraphicsPipelineCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = GraphicsPipelineCreateInfo; + }; + + struct GraphicsShaderGroupCreateInfoNV + { + using NativeType = VkGraphicsShaderGroupCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGraphicsShaderGroupCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GraphicsShaderGroupCreateInfoNV( + uint32_t stageCount_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ = {} ) VULKAN_HPP_NOEXCEPT + : stageCount( stageCount_ ) + , pStages( pStages_ ) + , pVertexInputState( pVertexInputState_ ) + , pTessellationState( pTessellationState_ ) + {} + + VULKAN_HPP_CONSTEXPR + GraphicsShaderGroupCreateInfoNV( GraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GraphicsShaderGroupCreateInfoNV( VkGraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : GraphicsShaderGroupCreateInfoNV( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GraphicsShaderGroupCreateInfoNV( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + stages_, + const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ = {} ) + : stageCount( static_cast( stages_.size() ) ) + , pStages( stages_.data() ) + , pVertexInputState( pVertexInputState_ ) + , pTessellationState( pTessellationState_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + GraphicsShaderGroupCreateInfoNV & + operator=( GraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GraphicsShaderGroupCreateInfoNV & operator=( VkGraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT + { + stageCount = stageCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & + setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT + { + pStages = pStages_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GraphicsShaderGroupCreateInfoNV & setStages( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + stages_ ) VULKAN_HPP_NOEXCEPT + { + stageCount = static_cast( stages_.size() ); + pStages = stages_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setPVertexInputState( + const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState_ ) VULKAN_HPP_NOEXCEPT + { + pVertexInputState = pVertexInputState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setPTessellationState( + const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ ) VULKAN_HPP_NOEXCEPT + { + pTessellationState = pTessellationState_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkGraphicsShaderGroupCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkGraphicsShaderGroupCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stageCount, pStages, pVertexInputState, pTessellationState ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GraphicsShaderGroupCreateInfoNV const & ) const = default; +#else + bool operator==( GraphicsShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageCount == rhs.stageCount ) && + ( pStages == rhs.pStages ) && ( pVertexInputState == rhs.pVertexInputState ) && + ( pTessellationState == rhs.pTessellationState ); +# endif + } + + bool operator!=( GraphicsShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGraphicsShaderGroupCreateInfoNV; + const void * pNext = {}; + uint32_t stageCount = {}; + const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages = {}; + const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState = {}; + const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV ) == + sizeof( VkGraphicsShaderGroupCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "GraphicsShaderGroupCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = GraphicsShaderGroupCreateInfoNV; + }; + + struct GraphicsPipelineShaderGroupsCreateInfoNV + { + using NativeType = VkGraphicsPipelineShaderGroupsCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GraphicsPipelineShaderGroupsCreateInfoNV( + uint32_t groupCount_ = {}, + const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV * pGroups_ = {}, + uint32_t pipelineCount_ = {}, + const VULKAN_HPP_NAMESPACE::Pipeline * pPipelines_ = {} ) VULKAN_HPP_NOEXCEPT + : groupCount( groupCount_ ) + , pGroups( pGroups_ ) + , pipelineCount( pipelineCount_ ) + , pPipelines( pPipelines_ ) + {} + + VULKAN_HPP_CONSTEXPR GraphicsPipelineShaderGroupsCreateInfoNV( + GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GraphicsPipelineShaderGroupsCreateInfoNV( VkGraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : GraphicsPipelineShaderGroupsCreateInfoNV( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GraphicsPipelineShaderGroupsCreateInfoNV( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + groups_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pipelines_ = {} ) + : groupCount( static_cast( groups_.size() ) ) + , pGroups( groups_.data() ) + , pipelineCount( static_cast( pipelines_.size() ) ) + , pPipelines( pipelines_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + GraphicsPipelineShaderGroupsCreateInfoNV & + operator=( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GraphicsPipelineShaderGroupsCreateInfoNV & + operator=( VkGraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & + setGroupCount( uint32_t groupCount_ ) VULKAN_HPP_NOEXCEPT + { + groupCount = groupCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & + setPGroups( const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV * pGroups_ ) VULKAN_HPP_NOEXCEPT + { + pGroups = pGroups_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GraphicsPipelineShaderGroupsCreateInfoNV & setGroups( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + groups_ ) VULKAN_HPP_NOEXCEPT + { + groupCount = static_cast( groups_.size() ); + pGroups = groups_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & + setPipelineCount( uint32_t pipelineCount_ ) VULKAN_HPP_NOEXCEPT + { + pipelineCount = pipelineCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & + setPPipelines( const VULKAN_HPP_NAMESPACE::Pipeline * pPipelines_ ) VULKAN_HPP_NOEXCEPT + { + pPipelines = pPipelines_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GraphicsPipelineShaderGroupsCreateInfoNV & setPipelines( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pipelines_ ) + VULKAN_HPP_NOEXCEPT + { + pipelineCount = static_cast( pipelines_.size() ); + pPipelines = pipelines_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkGraphicsPipelineShaderGroupsCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkGraphicsPipelineShaderGroupsCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, groupCount, pGroups, pipelineCount, pPipelines ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GraphicsPipelineShaderGroupsCreateInfoNV const & ) const = default; +#else + bool operator==( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( groupCount == rhs.groupCount ) && + ( pGroups == rhs.pGroups ) && ( pipelineCount == rhs.pipelineCount ) && ( pPipelines == rhs.pPipelines ); +# endif + } + + bool operator!=( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV; + const void * pNext = {}; + uint32_t groupCount = {}; + const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV * pGroups = {}; + uint32_t pipelineCount = {}; + const VULKAN_HPP_NAMESPACE::Pipeline * pPipelines = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV ) == + sizeof( VkGraphicsPipelineShaderGroupsCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "GraphicsPipelineShaderGroupsCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = GraphicsPipelineShaderGroupsCreateInfoNV; + }; + + struct XYColorEXT + { + using NativeType = VkXYColorEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR XYColorEXT( float x_ = {}, float y_ = {} ) VULKAN_HPP_NOEXCEPT + : x( x_ ) + , y( y_ ) + {} + + VULKAN_HPP_CONSTEXPR XYColorEXT( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + XYColorEXT( VkXYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : XYColorEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + XYColorEXT & operator=( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + XYColorEXT & operator=( VkXYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 XYColorEXT & setX( float x_ ) VULKAN_HPP_NOEXCEPT + { + x = x_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XYColorEXT & setY( float y_ ) VULKAN_HPP_NOEXCEPT + { + y = y_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkXYColorEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkXYColorEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( x, y ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( XYColorEXT const & ) const = default; +#else + bool operator==( XYColorEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( x == rhs.x ) && ( y == rhs.y ); +# endif + } + + bool operator!=( XYColorEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float x = {}; + float y = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::XYColorEXT ) == sizeof( VkXYColorEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "XYColorEXT is not nothrow_move_constructible!" ); + + struct HdrMetadataEXT + { + using NativeType = VkHdrMetadataEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eHdrMetadataEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR HdrMetadataEXT( VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryRed_ = {}, + VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryGreen_ = {}, + VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryBlue_ = {}, + VULKAN_HPP_NAMESPACE::XYColorEXT whitePoint_ = {}, + float maxLuminance_ = {}, + float minLuminance_ = {}, + float maxContentLightLevel_ = {}, + float maxFrameAverageLightLevel_ = {} ) VULKAN_HPP_NOEXCEPT + : displayPrimaryRed( displayPrimaryRed_ ) + , displayPrimaryGreen( displayPrimaryGreen_ ) + , displayPrimaryBlue( displayPrimaryBlue_ ) + , whitePoint( whitePoint_ ) + , maxLuminance( maxLuminance_ ) + , minLuminance( minLuminance_ ) + , maxContentLightLevel( maxContentLightLevel_ ) + , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ ) + {} + + VULKAN_HPP_CONSTEXPR HdrMetadataEXT( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + HdrMetadataEXT( VkHdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : HdrMetadataEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + HdrMetadataEXT & operator=( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + HdrMetadataEXT & operator=( VkHdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & + setDisplayPrimaryRed( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryRed_ ) VULKAN_HPP_NOEXCEPT + { + displayPrimaryRed = displayPrimaryRed_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & + setDisplayPrimaryGreen( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryGreen_ ) VULKAN_HPP_NOEXCEPT + { + displayPrimaryGreen = displayPrimaryGreen_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & + setDisplayPrimaryBlue( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryBlue_ ) VULKAN_HPP_NOEXCEPT + { + displayPrimaryBlue = displayPrimaryBlue_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & + setWhitePoint( VULKAN_HPP_NAMESPACE::XYColorEXT const & whitePoint_ ) VULKAN_HPP_NOEXCEPT + { + whitePoint = whitePoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxLuminance( float maxLuminance_ ) VULKAN_HPP_NOEXCEPT + { + maxLuminance = maxLuminance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMinLuminance( float minLuminance_ ) VULKAN_HPP_NOEXCEPT + { + minLuminance = minLuminance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxContentLightLevel( float maxContentLightLevel_ ) VULKAN_HPP_NOEXCEPT + { + maxContentLightLevel = maxContentLightLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & + setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ ) VULKAN_HPP_NOEXCEPT + { + maxFrameAverageLightLevel = maxFrameAverageLightLevel_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkHdrMetadataEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkHdrMetadataEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + displayPrimaryRed, + displayPrimaryGreen, + displayPrimaryBlue, + whitePoint, + maxLuminance, + minLuminance, + maxContentLightLevel, + maxFrameAverageLightLevel ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( HdrMetadataEXT const & ) const = default; +#else + bool operator==( HdrMetadataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayPrimaryRed == rhs.displayPrimaryRed ) && + ( displayPrimaryGreen == rhs.displayPrimaryGreen ) && ( displayPrimaryBlue == rhs.displayPrimaryBlue ) && + ( whitePoint == rhs.whitePoint ) && ( maxLuminance == rhs.maxLuminance ) && + ( minLuminance == rhs.minLuminance ) && ( maxContentLightLevel == rhs.maxContentLightLevel ) && + ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel ); +# endif + } + + bool operator!=( HdrMetadataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eHdrMetadataEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryRed = {}; + VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryGreen = {}; + VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryBlue = {}; + VULKAN_HPP_NAMESPACE::XYColorEXT whitePoint = {}; + float maxLuminance = {}; + float minLuminance = {}; + float maxContentLightLevel = {}; + float maxFrameAverageLightLevel = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "HdrMetadataEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = HdrMetadataEXT; + }; + + struct HeadlessSurfaceCreateInfoEXT + { + using NativeType = VkHeadlessSurfaceCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eHeadlessSurfaceCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR HeadlessSurfaceCreateInfoEXT( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags_ = {} ) + VULKAN_HPP_NOEXCEPT : flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR + HeadlessSurfaceCreateInfoEXT( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + HeadlessSurfaceCreateInfoEXT( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : HeadlessSurfaceCreateInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + HeadlessSurfaceCreateInfoEXT & operator=( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + HeadlessSurfaceCreateInfoEXT & operator=( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkHeadlessSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkHeadlessSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( HeadlessSurfaceCreateInfoEXT const & ) const = default; +#else + bool operator==( HeadlessSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( HeadlessSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eHeadlessSurfaceCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT ) == + sizeof( VkHeadlessSurfaceCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "HeadlessSurfaceCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = HeadlessSurfaceCreateInfoEXT; + }; + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + struct IOSSurfaceCreateInfoMVK + { + using NativeType = VkIOSSurfaceCreateInfoMVK; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIosSurfaceCreateInfoMVK; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IOSSurfaceCreateInfoMVK( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags_ = {}, + const void * pView_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , pView( pView_ ) + {} + + VULKAN_HPP_CONSTEXPR IOSSurfaceCreateInfoMVK( IOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT + : IOSSurfaceCreateInfoMVK( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + IOSSurfaceCreateInfoMVK & operator=( IOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IOSSurfaceCreateInfoMVK & operator=( VkIOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & + setFlags( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & setPView( const void * pView_ ) VULKAN_HPP_NOEXCEPT + { + pView = pView_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkIOSSurfaceCreateInfoMVK const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkIOSSurfaceCreateInfoMVK &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pView ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IOSSurfaceCreateInfoMVK const & ) const = default; +# else + bool operator==( IOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pView == rhs.pView ); +# endif + } + + bool operator!=( IOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIosSurfaceCreateInfoMVK; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags = {}; + const void * pView = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK ) == + sizeof( VkIOSSurfaceCreateInfoMVK ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IOSSurfaceCreateInfoMVK is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = IOSSurfaceCreateInfoMVK; + }; +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + + struct ImageBlit + { + using NativeType = VkImageBlit; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + ImageBlit( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, + std::array const & srcOffsets_ = {}, + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, + std::array const & dstOffsets_ = {} ) VULKAN_HPP_NOEXCEPT + : srcSubresource( srcSubresource_ ) + , srcOffsets( srcOffsets_ ) + , dstSubresource( dstSubresource_ ) + , dstOffsets( dstOffsets_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 ImageBlit( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageBlit( VkImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT : ImageBlit( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageBlit & operator=( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageBlit & operator=( VkImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageBlit & + setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit & + setSrcOffsets( std::array const & srcOffsets_ ) VULKAN_HPP_NOEXCEPT + { + srcOffsets = srcOffsets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit & + setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit & + setDstOffsets( std::array const & dstOffsets_ ) VULKAN_HPP_NOEXCEPT + { + dstOffsets = dstOffsets_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageBlit const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageBlit &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( srcSubresource, srcOffsets, dstSubresource, dstOffsets ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageBlit const & ) const = default; +#else + bool operator==( ImageBlit const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( srcSubresource == rhs.srcSubresource ) && ( srcOffsets == rhs.srcOffsets ) && + ( dstSubresource == rhs.dstSubresource ) && ( dstOffsets == rhs.dstOffsets ); +# endif + } + + bool operator!=( ImageBlit const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D srcOffsets = {}; + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D dstOffsets = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageBlit ) == sizeof( VkImageBlit ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageBlit is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct ImageFormatConstraintsInfoFUCHSIA + { + using NativeType = VkImageFormatConstraintsInfoFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eImageFormatConstraintsInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageFormatConstraintsInfoFUCHSIA( + VULKAN_HPP_NAMESPACE::ImageCreateInfo imageCreateInfo_ = {}, + VULKAN_HPP_NAMESPACE::FormatFeatureFlags requiredFormatFeatures_ = {}, + VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA flags_ = {}, + uint64_t sysmemPixelFormat_ = {}, + uint32_t colorSpaceCount_ = {}, + const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA * pColorSpaces_ = {} ) VULKAN_HPP_NOEXCEPT + : imageCreateInfo( imageCreateInfo_ ) + , requiredFormatFeatures( requiredFormatFeatures_ ) + , flags( flags_ ) + , sysmemPixelFormat( sysmemPixelFormat_ ) + , colorSpaceCount( colorSpaceCount_ ) + , pColorSpaces( pColorSpaces_ ) + {} + + VULKAN_HPP_CONSTEXPR + ImageFormatConstraintsInfoFUCHSIA( ImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageFormatConstraintsInfoFUCHSIA( VkImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageFormatConstraintsInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageFormatConstraintsInfoFUCHSIA & + operator=( ImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageFormatConstraintsInfoFUCHSIA & operator=( VkImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & + setImageCreateInfo( VULKAN_HPP_NAMESPACE::ImageCreateInfo const & imageCreateInfo_ ) VULKAN_HPP_NOEXCEPT + { + imageCreateInfo = imageCreateInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & + setRequiredFormatFeatures( VULKAN_HPP_NAMESPACE::FormatFeatureFlags requiredFormatFeatures_ ) VULKAN_HPP_NOEXCEPT + { + requiredFormatFeatures = requiredFormatFeatures_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & + setFlags( VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & + setSysmemPixelFormat( uint64_t sysmemPixelFormat_ ) VULKAN_HPP_NOEXCEPT + { + sysmemPixelFormat = sysmemPixelFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & + setColorSpaceCount( uint32_t colorSpaceCount_ ) VULKAN_HPP_NOEXCEPT + { + colorSpaceCount = colorSpaceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & + setPColorSpaces( const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA * pColorSpaces_ ) VULKAN_HPP_NOEXCEPT + { + pColorSpaces = pColorSpaces_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageFormatConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageFormatConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + imageCreateInfo, + requiredFormatFeatures, + flags, + sysmemPixelFormat, + colorSpaceCount, + pColorSpaces ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageFormatConstraintsInfoFUCHSIA const & ) const = default; +# else + bool operator==( ImageFormatConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageCreateInfo == rhs.imageCreateInfo ) && + ( requiredFormatFeatures == rhs.requiredFormatFeatures ) && ( flags == rhs.flags ) && + ( sysmemPixelFormat == rhs.sysmemPixelFormat ) && ( colorSpaceCount == rhs.colorSpaceCount ) && + ( pColorSpaces == rhs.pColorSpaces ); +# endif + } + + bool operator!=( ImageFormatConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageFormatConstraintsInfoFUCHSIA; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageCreateInfo imageCreateInfo = {}; + VULKAN_HPP_NAMESPACE::FormatFeatureFlags requiredFormatFeatures = {}; + VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA flags = {}; + uint64_t sysmemPixelFormat = {}; + uint32_t colorSpaceCount = {}; + const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA * pColorSpaces = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA ) == + sizeof( VkImageFormatConstraintsInfoFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImageFormatConstraintsInfoFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageFormatConstraintsInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct ImageConstraintsInfoFUCHSIA + { + using NativeType = VkImageConstraintsInfoFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageConstraintsInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageConstraintsInfoFUCHSIA( + uint32_t formatConstraintsCount_ = {}, + const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA * pFormatConstraints_ = {}, + VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints_ = {}, + VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA flags_ = {} ) VULKAN_HPP_NOEXCEPT + : formatConstraintsCount( formatConstraintsCount_ ) + , pFormatConstraints( pFormatConstraints_ ) + , bufferCollectionConstraints( bufferCollectionConstraints_ ) + , flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR + ImageConstraintsInfoFUCHSIA( ImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageConstraintsInfoFUCHSIA( VkImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageConstraintsInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageConstraintsInfoFUCHSIA( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA> const & formatConstraints_, + VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints_ = {}, + VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA flags_ = {} ) + : formatConstraintsCount( static_cast( formatConstraints_.size() ) ) + , pFormatConstraints( formatConstraints_.data() ) + , bufferCollectionConstraints( bufferCollectionConstraints_ ) + , flags( flags_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageConstraintsInfoFUCHSIA & operator=( ImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageConstraintsInfoFUCHSIA & operator=( VkImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & + setFormatConstraintsCount( uint32_t formatConstraintsCount_ ) VULKAN_HPP_NOEXCEPT + { + formatConstraintsCount = formatConstraintsCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setPFormatConstraints( + const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA * pFormatConstraints_ ) VULKAN_HPP_NOEXCEPT + { + pFormatConstraints = pFormatConstraints_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageConstraintsInfoFUCHSIA & setFormatConstraints( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA> const & formatConstraints_ ) VULKAN_HPP_NOEXCEPT + { + formatConstraintsCount = static_cast( formatConstraints_.size() ); + pFormatConstraints = formatConstraints_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setBufferCollectionConstraints( + VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const & bufferCollectionConstraints_ ) + VULKAN_HPP_NOEXCEPT + { + bufferCollectionConstraints = bufferCollectionConstraints_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & + setFlags( VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, formatConstraintsCount, pFormatConstraints, bufferCollectionConstraints, flags ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageConstraintsInfoFUCHSIA const & ) const = default; +# else + bool operator==( ImageConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( formatConstraintsCount == rhs.formatConstraintsCount ) && + ( pFormatConstraints == rhs.pFormatConstraints ) && + ( bufferCollectionConstraints == rhs.bufferCollectionConstraints ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( ImageConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageConstraintsInfoFUCHSIA; + const void * pNext = {}; + uint32_t formatConstraintsCount = {}; + const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA * pFormatConstraints = {}; + VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints = {}; + VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA ) == + sizeof( VkImageConstraintsInfoFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImageConstraintsInfoFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageConstraintsInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + struct ImageCopy + { + using NativeType = VkImageCopy; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageCopy( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, + VULKAN_HPP_NAMESPACE::Offset3D srcOffset_ = {}, + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, + VULKAN_HPP_NAMESPACE::Offset3D dstOffset_ = {}, + VULKAN_HPP_NAMESPACE::Extent3D extent_ = {} ) VULKAN_HPP_NOEXCEPT + : srcSubresource( srcSubresource_ ) + , srcOffset( srcOffset_ ) + , dstSubresource( dstSubresource_ ) + , dstOffset( dstOffset_ ) + , extent( extent_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageCopy( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageCopy( VkImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT : ImageCopy( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageCopy & operator=( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageCopy & operator=( VkImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageCopy & + setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy & + setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy & + setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy & + setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageCopy const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageCopy &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( srcSubresource, srcOffset, dstSubresource, dstOffset, extent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageCopy const & ) const = default; +#else + bool operator==( ImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( srcSubresource == rhs.srcSubresource ) && ( srcOffset == rhs.srcOffset ) && + ( dstSubresource == rhs.dstSubresource ) && ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent ); +# endif + } + + bool operator!=( ImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {}; + VULKAN_HPP_NAMESPACE::Offset3D srcOffset = {}; + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {}; + VULKAN_HPP_NAMESPACE::Offset3D dstOffset = {}; + VULKAN_HPP_NAMESPACE::Extent3D extent = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageCopy ) == sizeof( VkImageCopy ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageCopy is not nothrow_move_constructible!" ); + + struct SubresourceLayout + { + using NativeType = VkSubresourceLayout; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubresourceLayout( VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize rowPitch_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize arrayPitch_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize depthPitch_ = {} ) VULKAN_HPP_NOEXCEPT + : offset( offset_ ) + , size( size_ ) + , rowPitch( rowPitch_ ) + , arrayPitch( arrayPitch_ ) + , depthPitch( depthPitch_ ) + {} + + VULKAN_HPP_CONSTEXPR SubresourceLayout( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubresourceLayout( VkSubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT + : SubresourceLayout( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SubresourceLayout & operator=( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubresourceLayout & operator=( VkSubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkSubresourceLayout const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSubresourceLayout &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( offset, size, rowPitch, arrayPitch, depthPitch ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubresourceLayout const & ) const = default; +#else + bool operator==( SubresourceLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( offset == rhs.offset ) && ( size == rhs.size ) && ( rowPitch == rhs.rowPitch ) && + ( arrayPitch == rhs.arrayPitch ) && ( depthPitch == rhs.depthPitch ); +# endif + } + + bool operator!=( SubresourceLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize size = {}; + VULKAN_HPP_NAMESPACE::DeviceSize rowPitch = {}; + VULKAN_HPP_NAMESPACE::DeviceSize arrayPitch = {}; + VULKAN_HPP_NAMESPACE::DeviceSize depthPitch = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubresourceLayout ) == sizeof( VkSubresourceLayout ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubresourceLayout is not nothrow_move_constructible!" ); + + struct ImageDrmFormatModifierExplicitCreateInfoEXT + { + using NativeType = VkImageDrmFormatModifierExplicitCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierExplicitCreateInfoEXT( + uint64_t drmFormatModifier_ = {}, + uint32_t drmFormatModifierPlaneCount_ = {}, + const VULKAN_HPP_NAMESPACE::SubresourceLayout * pPlaneLayouts_ = {} ) VULKAN_HPP_NOEXCEPT + : drmFormatModifier( drmFormatModifier_ ) + , drmFormatModifierPlaneCount( drmFormatModifierPlaneCount_ ) + , pPlaneLayouts( pPlaneLayouts_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierExplicitCreateInfoEXT( + ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageDrmFormatModifierExplicitCreateInfoEXT( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : ImageDrmFormatModifierExplicitCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageDrmFormatModifierExplicitCreateInfoEXT( + uint64_t drmFormatModifier_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + planeLayouts_ ) + : drmFormatModifier( drmFormatModifier_ ) + , drmFormatModifierPlaneCount( static_cast( planeLayouts_.size() ) ) + , pPlaneLayouts( planeLayouts_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageDrmFormatModifierExplicitCreateInfoEXT & + operator=( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageDrmFormatModifierExplicitCreateInfoEXT & + operator=( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & + setDrmFormatModifier( uint64_t drmFormatModifier_ ) VULKAN_HPP_NOEXCEPT + { + drmFormatModifier = drmFormatModifier_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & + setDrmFormatModifierPlaneCount( uint32_t drmFormatModifierPlaneCount_ ) VULKAN_HPP_NOEXCEPT + { + drmFormatModifierPlaneCount = drmFormatModifierPlaneCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & + setPPlaneLayouts( const VULKAN_HPP_NAMESPACE::SubresourceLayout * pPlaneLayouts_ ) VULKAN_HPP_NOEXCEPT + { + pPlaneLayouts = pPlaneLayouts_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageDrmFormatModifierExplicitCreateInfoEXT & setPlaneLayouts( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + planeLayouts_ ) VULKAN_HPP_NOEXCEPT + { + drmFormatModifierPlaneCount = static_cast( planeLayouts_.size() ); + pPlaneLayouts = planeLayouts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageDrmFormatModifierExplicitCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageDrmFormatModifierExplicitCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, drmFormatModifier, drmFormatModifierPlaneCount, pPlaneLayouts ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageDrmFormatModifierExplicitCreateInfoEXT const & ) const = default; +#else + bool operator==( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifier == rhs.drmFormatModifier ) && + ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) && + ( pPlaneLayouts == rhs.pPlaneLayouts ); +# endif + } + + bool operator!=( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT; + const void * pNext = {}; + uint64_t drmFormatModifier = {}; + uint32_t drmFormatModifierPlaneCount = {}; + const VULKAN_HPP_NAMESPACE::SubresourceLayout * pPlaneLayouts = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT ) == + sizeof( VkImageDrmFormatModifierExplicitCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImageDrmFormatModifierExplicitCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageDrmFormatModifierExplicitCreateInfoEXT; + }; + + struct ImageDrmFormatModifierListCreateInfoEXT + { + using NativeType = VkImageDrmFormatModifierListCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eImageDrmFormatModifierListCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImageDrmFormatModifierListCreateInfoEXT( uint32_t drmFormatModifierCount_ = {}, + const uint64_t * pDrmFormatModifiers_ = {} ) VULKAN_HPP_NOEXCEPT + : drmFormatModifierCount( drmFormatModifierCount_ ) + , pDrmFormatModifiers( pDrmFormatModifiers_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierListCreateInfoEXT( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + ImageDrmFormatModifierListCreateInfoEXT( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageDrmFormatModifierListCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageDrmFormatModifierListCreateInfoEXT( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & drmFormatModifiers_ ) + : drmFormatModifierCount( static_cast( drmFormatModifiers_.size() ) ) + , pDrmFormatModifiers( drmFormatModifiers_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageDrmFormatModifierListCreateInfoEXT & + operator=( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageDrmFormatModifierListCreateInfoEXT & + operator=( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & + setDrmFormatModifierCount( uint32_t drmFormatModifierCount_ ) VULKAN_HPP_NOEXCEPT + { + drmFormatModifierCount = drmFormatModifierCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & + setPDrmFormatModifiers( const uint64_t * pDrmFormatModifiers_ ) VULKAN_HPP_NOEXCEPT + { + pDrmFormatModifiers = pDrmFormatModifiers_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageDrmFormatModifierListCreateInfoEXT & setDrmFormatModifiers( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & drmFormatModifiers_ ) VULKAN_HPP_NOEXCEPT + { + drmFormatModifierCount = static_cast( drmFormatModifiers_.size() ); + pDrmFormatModifiers = drmFormatModifiers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageDrmFormatModifierListCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageDrmFormatModifierListCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifiers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageDrmFormatModifierListCreateInfoEXT const & ) const = default; +#else + bool operator==( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( drmFormatModifierCount == rhs.drmFormatModifierCount ) && + ( pDrmFormatModifiers == rhs.pDrmFormatModifiers ); +# endif + } + + bool operator!=( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierListCreateInfoEXT; + const void * pNext = {}; + uint32_t drmFormatModifierCount = {}; + const uint64_t * pDrmFormatModifiers = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT ) == + sizeof( VkImageDrmFormatModifierListCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImageDrmFormatModifierListCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageDrmFormatModifierListCreateInfoEXT; + }; + + struct ImageDrmFormatModifierPropertiesEXT + { + using NativeType = VkImageDrmFormatModifierPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eImageDrmFormatModifierPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierPropertiesEXT( uint64_t drmFormatModifier_ = {} ) VULKAN_HPP_NOEXCEPT + : drmFormatModifier( drmFormatModifier_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierPropertiesEXT( ImageDrmFormatModifierPropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + ImageDrmFormatModifierPropertiesEXT( VkImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageDrmFormatModifierPropertiesEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageDrmFormatModifierPropertiesEXT & + operator=( ImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageDrmFormatModifierPropertiesEXT & + operator=( VkImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkImageDrmFormatModifierPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageDrmFormatModifierPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, drmFormatModifier ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageDrmFormatModifierPropertiesEXT const & ) const = default; +#else + bool operator==( ImageDrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifier == rhs.drmFormatModifier ); +# endif + } + + bool operator!=( ImageDrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierPropertiesEXT; + void * pNext = {}; + uint64_t drmFormatModifier = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT ) == + sizeof( VkImageDrmFormatModifierPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImageDrmFormatModifierPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageDrmFormatModifierPropertiesEXT; + }; + + struct ImageFormatListCreateInfo + { + using NativeType = VkImageFormatListCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageFormatListCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImageFormatListCreateInfo( uint32_t viewFormatCount_ = {}, + const VULKAN_HPP_NAMESPACE::Format * pViewFormats_ = {} ) VULKAN_HPP_NOEXCEPT + : viewFormatCount( viewFormatCount_ ) + , pViewFormats( pViewFormats_ ) + {} + + VULKAN_HPP_CONSTEXPR + ImageFormatListCreateInfo( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageFormatListCreateInfo( VkImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageFormatListCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageFormatListCreateInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewFormats_ ) + : viewFormatCount( static_cast( viewFormats_.size() ) ), pViewFormats( viewFormats_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageFormatListCreateInfo & operator=( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageFormatListCreateInfo & operator=( VkImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & + setViewFormatCount( uint32_t viewFormatCount_ ) VULKAN_HPP_NOEXCEPT + { + viewFormatCount = viewFormatCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & + setPViewFormats( const VULKAN_HPP_NAMESPACE::Format * pViewFormats_ ) VULKAN_HPP_NOEXCEPT + { + pViewFormats = pViewFormats_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageFormatListCreateInfo & setViewFormats( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewFormats_ ) + VULKAN_HPP_NOEXCEPT + { + viewFormatCount = static_cast( viewFormats_.size() ); + pViewFormats = viewFormats_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageFormatListCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageFormatListCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, viewFormatCount, pViewFormats ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageFormatListCreateInfo const & ) const = default; +#else + bool operator==( ImageFormatListCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewFormatCount == rhs.viewFormatCount ) && + ( pViewFormats == rhs.pViewFormats ); +# endif + } + + bool operator!=( ImageFormatListCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageFormatListCreateInfo; + const void * pNext = {}; + uint32_t viewFormatCount = {}; + const VULKAN_HPP_NAMESPACE::Format * pViewFormats = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo ) == + sizeof( VkImageFormatListCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageFormatListCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageFormatListCreateInfo; + }; + using ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo; + + struct ImageFormatProperties2 + { + using NativeType = VkImageFormatProperties2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageFormatProperties2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageFormatProperties2( + VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties_ = {} ) VULKAN_HPP_NOEXCEPT + : imageFormatProperties( imageFormatProperties_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageFormatProperties2( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageFormatProperties2( VkImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageFormatProperties2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageFormatProperties2 & operator=( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageFormatProperties2 & operator=( VkImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkImageFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageFormatProperties2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageFormatProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageFormatProperties2 const & ) const = default; +#else + bool operator==( ImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageFormatProperties == rhs.imageFormatProperties ); +# endif + } + + bool operator!=( ImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageFormatProperties2; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageFormatProperties2 ) == + sizeof( VkImageFormatProperties2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageFormatProperties2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageFormatProperties2; + }; + using ImageFormatProperties2KHR = ImageFormatProperties2; + + struct ImageMemoryBarrier + { + using NativeType = VkImageMemoryBarrier; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageMemoryBarrier; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImageMemoryBarrier( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {}, + VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + uint32_t srcQueueFamilyIndex_ = {}, + uint32_t dstQueueFamilyIndex_ = {}, + VULKAN_HPP_NAMESPACE::Image image_ = {}, + VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_ = {} ) VULKAN_HPP_NOEXCEPT + : srcAccessMask( srcAccessMask_ ) + , dstAccessMask( dstAccessMask_ ) + , oldLayout( oldLayout_ ) + , newLayout( newLayout_ ) + , srcQueueFamilyIndex( srcQueueFamilyIndex_ ) + , dstQueueFamilyIndex( dstQueueFamilyIndex_ ) + , image( image_ ) + , subresourceRange( subresourceRange_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageMemoryBarrier( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageMemoryBarrier( VkImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageMemoryBarrier( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageMemoryBarrier & operator=( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageMemoryBarrier & operator=( VkImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & + setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & + setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & + setOldLayout( VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ ) VULKAN_HPP_NOEXCEPT + { + oldLayout = oldLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & + setNewLayout( VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ ) VULKAN_HPP_NOEXCEPT + { + newLayout = newLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & + setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & + setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & + setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT + { + subresourceRange = subresourceRange_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageMemoryBarrier &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + srcAccessMask, + dstAccessMask, + oldLayout, + newLayout, + srcQueueFamilyIndex, + dstQueueFamilyIndex, + image, + subresourceRange ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageMemoryBarrier const & ) const = default; +#else + bool operator==( ImageMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcAccessMask == rhs.srcAccessMask ) && + ( dstAccessMask == rhs.dstAccessMask ) && ( oldLayout == rhs.oldLayout ) && + ( newLayout == rhs.newLayout ) && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) && + ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && ( image == rhs.image ) && + ( subresourceRange == rhs.subresourceRange ); +# endif + } + + bool operator!=( ImageMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryBarrier; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {}; + VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {}; + VULKAN_HPP_NAMESPACE::ImageLayout oldLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + VULKAN_HPP_NAMESPACE::ImageLayout newLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + uint32_t srcQueueFamilyIndex = {}; + uint32_t dstQueueFamilyIndex = {}; + VULKAN_HPP_NAMESPACE::Image image = {}; + VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageMemoryBarrier is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageMemoryBarrier; + }; + + struct ImageMemoryRequirementsInfo2 + { + using NativeType = VkImageMemoryRequirementsInfo2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageMemoryRequirementsInfo2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageMemoryRequirementsInfo2( VULKAN_HPP_NAMESPACE::Image image_ = {} ) VULKAN_HPP_NOEXCEPT + : image( image_ ) + {} + + VULKAN_HPP_CONSTEXPR + ImageMemoryRequirementsInfo2( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageMemoryRequirementsInfo2( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageMemoryRequirementsInfo2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageMemoryRequirementsInfo2 & operator=( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageMemoryRequirementsInfo2 & operator=( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 & + setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageMemoryRequirementsInfo2 const & ) const = default; +#else + bool operator==( ImageMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ); +# endif + } + + bool operator!=( ImageMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryRequirementsInfo2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Image image = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 ) == + sizeof( VkImageMemoryRequirementsInfo2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImageMemoryRequirementsInfo2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageMemoryRequirementsInfo2; + }; + using ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct ImagePipeSurfaceCreateInfoFUCHSIA + { + using NativeType = VkImagePipeSurfaceCreateInfoFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eImagepipeSurfaceCreateInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImagePipeSurfaceCreateInfoFUCHSIA( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags_ = {}, + zx_handle_t imagePipeHandle_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , imagePipeHandle( imagePipeHandle_ ) + {} + + VULKAN_HPP_CONSTEXPR + ImagePipeSurfaceCreateInfoFUCHSIA( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImagePipeSurfaceCreateInfoFUCHSIA( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : ImagePipeSurfaceCreateInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImagePipeSurfaceCreateInfoFUCHSIA & + operator=( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImagePipeSurfaceCreateInfoFUCHSIA & operator=( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA & + setFlags( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA & + setImagePipeHandle( zx_handle_t imagePipeHandle_ ) VULKAN_HPP_NOEXCEPT + { + imagePipeHandle = imagePipeHandle_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImagePipeSurfaceCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImagePipeSurfaceCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, imagePipeHandle ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &imagePipeHandle, &rhs.imagePipeHandle, sizeof( zx_handle_t ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( memcmp( &imagePipeHandle, &rhs.imagePipeHandle, sizeof( zx_handle_t ) ) == 0 ); + } + + bool operator!=( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImagepipeSurfaceCreateInfoFUCHSIA; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags = {}; + zx_handle_t imagePipeHandle = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA ) == + sizeof( VkImagePipeSurfaceCreateInfoFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImagePipeSurfaceCreateInfoFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImagePipeSurfaceCreateInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + struct ImagePlaneMemoryRequirementsInfo + { + using NativeType = VkImagePlaneMemoryRequirementsInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImagePlaneMemoryRequirementsInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImagePlaneMemoryRequirementsInfo( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ = + VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor ) VULKAN_HPP_NOEXCEPT + : planeAspect( planeAspect_ ) + {} + + VULKAN_HPP_CONSTEXPR + ImagePlaneMemoryRequirementsInfo( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImagePlaneMemoryRequirementsInfo( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ImagePlaneMemoryRequirementsInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImagePlaneMemoryRequirementsInfo & + operator=( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImagePlaneMemoryRequirementsInfo & operator=( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo & + setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT + { + planeAspect = planeAspect_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImagePlaneMemoryRequirementsInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImagePlaneMemoryRequirementsInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, planeAspect ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImagePlaneMemoryRequirementsInfo const & ) const = default; +#else + bool operator==( ImagePlaneMemoryRequirementsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( planeAspect == rhs.planeAspect ); +# endif + } + + bool operator!=( ImagePlaneMemoryRequirementsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImagePlaneMemoryRequirementsInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo ) == + sizeof( VkImagePlaneMemoryRequirementsInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImagePlaneMemoryRequirementsInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImagePlaneMemoryRequirementsInfo; + }; + using ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo; + + struct ImageResolve + { + using NativeType = VkImageResolve; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageResolve( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, + VULKAN_HPP_NAMESPACE::Offset3D srcOffset_ = {}, + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, + VULKAN_HPP_NAMESPACE::Offset3D dstOffset_ = {}, + VULKAN_HPP_NAMESPACE::Extent3D extent_ = {} ) VULKAN_HPP_NOEXCEPT + : srcSubresource( srcSubresource_ ) + , srcOffset( srcOffset_ ) + , dstSubresource( dstSubresource_ ) + , dstOffset( dstOffset_ ) + , extent( extent_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageResolve( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageResolve( VkImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageResolve( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageResolve & operator=( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageResolve & operator=( VkImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageResolve & + setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve & + setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve & + setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve & + setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve & + setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageResolve const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageResolve &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( srcSubresource, srcOffset, dstSubresource, dstOffset, extent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageResolve const & ) const = default; +#else + bool operator==( ImageResolve const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( srcSubresource == rhs.srcSubresource ) && ( srcOffset == rhs.srcOffset ) && + ( dstSubresource == rhs.dstSubresource ) && ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent ); +# endif + } + + bool operator!=( ImageResolve const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {}; + VULKAN_HPP_NAMESPACE::Offset3D srcOffset = {}; + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {}; + VULKAN_HPP_NAMESPACE::Offset3D dstOffset = {}; + VULKAN_HPP_NAMESPACE::Extent3D extent = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageResolve ) == sizeof( VkImageResolve ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageResolve is not nothrow_move_constructible!" ); + + struct ImageResolve2 + { + using NativeType = VkImageResolve2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageResolve2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageResolve2( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, + VULKAN_HPP_NAMESPACE::Offset3D srcOffset_ = {}, + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, + VULKAN_HPP_NAMESPACE::Offset3D dstOffset_ = {}, + VULKAN_HPP_NAMESPACE::Extent3D extent_ = {} ) VULKAN_HPP_NOEXCEPT + : srcSubresource( srcSubresource_ ) + , srcOffset( srcOffset_ ) + , dstSubresource( dstSubresource_ ) + , dstOffset( dstOffset_ ) + , extent( extent_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageResolve2( ImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageResolve2( VkImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageResolve2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageResolve2 & operator=( ImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageResolve2 & operator=( VkImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & + setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & + setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & + setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & + setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & + setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageResolve2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageResolve2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcSubresource, srcOffset, dstSubresource, dstOffset, extent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageResolve2 const & ) const = default; +#else + bool operator==( ImageResolve2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubresource == rhs.srcSubresource ) && + ( srcOffset == rhs.srcOffset ) && ( dstSubresource == rhs.dstSubresource ) && + ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent ); +# endif + } + + bool operator!=( ImageResolve2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageResolve2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {}; + VULKAN_HPP_NAMESPACE::Offset3D srcOffset = {}; + VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {}; + VULKAN_HPP_NAMESPACE::Offset3D dstOffset = {}; + VULKAN_HPP_NAMESPACE::Extent3D extent = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageResolve2 ) == sizeof( VkImageResolve2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageResolve2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageResolve2; + }; + using ImageResolve2KHR = ImageResolve2; + + struct ImageSparseMemoryRequirementsInfo2 + { + using NativeType = VkImageSparseMemoryRequirementsInfo2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eImageSparseMemoryRequirementsInfo2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImageSparseMemoryRequirementsInfo2( VULKAN_HPP_NAMESPACE::Image image_ = {} ) VULKAN_HPP_NOEXCEPT + : image( image_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageSparseMemoryRequirementsInfo2( ImageSparseMemoryRequirementsInfo2 const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + ImageSparseMemoryRequirementsInfo2( VkImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageSparseMemoryRequirementsInfo2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageSparseMemoryRequirementsInfo2 & + operator=( ImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageSparseMemoryRequirementsInfo2 & + operator=( VkImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageSparseMemoryRequirementsInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSparseMemoryRequirementsInfo2 & + setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageSparseMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageSparseMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageSparseMemoryRequirementsInfo2 const & ) const = default; +#else + bool operator==( ImageSparseMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ); +# endif + } + + bool operator!=( ImageSparseMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageSparseMemoryRequirementsInfo2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Image image = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 ) == + sizeof( VkImageSparseMemoryRequirementsInfo2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImageSparseMemoryRequirementsInfo2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageSparseMemoryRequirementsInfo2; + }; + using ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2; + + struct ImageStencilUsageCreateInfo + { + using NativeType = VkImageStencilUsageCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageStencilUsageCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImageStencilUsageCreateInfo( VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage_ = {} ) VULKAN_HPP_NOEXCEPT + : stencilUsage( stencilUsage_ ) + {} + + VULKAN_HPP_CONSTEXPR + ImageStencilUsageCreateInfo( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageStencilUsageCreateInfo( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageStencilUsageCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageStencilUsageCreateInfo & operator=( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageStencilUsageCreateInfo & operator=( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo & + setStencilUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage_ ) VULKAN_HPP_NOEXCEPT + { + stencilUsage = stencilUsage_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageStencilUsageCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageStencilUsageCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stencilUsage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageStencilUsageCreateInfo const & ) const = default; +#else + bool operator==( ImageStencilUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stencilUsage == rhs.stencilUsage ); +# endif + } + + bool operator!=( ImageStencilUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageStencilUsageCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo ) == + sizeof( VkImageStencilUsageCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImageStencilUsageCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageStencilUsageCreateInfo; + }; + using ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo; + + struct ImageSwapchainCreateInfoKHR + { + using NativeType = VkImageSwapchainCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageSwapchainCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImageSwapchainCreateInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ = {} ) VULKAN_HPP_NOEXCEPT + : swapchain( swapchain_ ) + {} + + VULKAN_HPP_CONSTEXPR + ImageSwapchainCreateInfoKHR( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageSwapchainCreateInfoKHR( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageSwapchainCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageSwapchainCreateInfoKHR & operator=( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageSwapchainCreateInfoKHR & operator=( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR & + setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT + { + swapchain = swapchain_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchain ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageSwapchainCreateInfoKHR const & ) const = default; +#else + bool operator==( ImageSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain ); +# endif + } + + bool operator!=( ImageSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageSwapchainCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR ) == + sizeof( VkImageSwapchainCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImageSwapchainCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageSwapchainCreateInfoKHR; + }; + + struct ImageViewASTCDecodeModeEXT + { + using NativeType = VkImageViewASTCDecodeModeEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewAstcDecodeModeEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageViewASTCDecodeModeEXT( + VULKAN_HPP_NAMESPACE::Format decodeMode_ = VULKAN_HPP_NAMESPACE::Format::eUndefined ) VULKAN_HPP_NOEXCEPT + : decodeMode( decodeMode_ ) + {} + + VULKAN_HPP_CONSTEXPR + ImageViewASTCDecodeModeEXT( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewASTCDecodeModeEXT( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageViewASTCDecodeModeEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageViewASTCDecodeModeEXT & operator=( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewASTCDecodeModeEXT & operator=( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT & + setDecodeMode( VULKAN_HPP_NAMESPACE::Format decodeMode_ ) VULKAN_HPP_NOEXCEPT + { + decodeMode = decodeMode_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageViewASTCDecodeModeEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageViewASTCDecodeModeEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, decodeMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageViewASTCDecodeModeEXT const & ) const = default; +#else + bool operator==( ImageViewASTCDecodeModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( decodeMode == rhs.decodeMode ); +# endif + } + + bool operator!=( ImageViewASTCDecodeModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewAstcDecodeModeEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Format decodeMode = VULKAN_HPP_NAMESPACE::Format::eUndefined; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT ) == + sizeof( VkImageViewASTCDecodeModeEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageViewASTCDecodeModeEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageViewASTCDecodeModeEXT; + }; + + struct ImageViewAddressPropertiesNVX + { + using NativeType = VkImageViewAddressPropertiesNVX; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewAddressPropertiesNVX; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImageViewAddressPropertiesNVX( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize size_ = {} ) VULKAN_HPP_NOEXCEPT + : deviceAddress( deviceAddress_ ) + , size( size_ ) + {} + + VULKAN_HPP_CONSTEXPR + ImageViewAddressPropertiesNVX( ImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewAddressPropertiesNVX( VkImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageViewAddressPropertiesNVX( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageViewAddressPropertiesNVX & + operator=( ImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewAddressPropertiesNVX & operator=( VkImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkImageViewAddressPropertiesNVX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageViewAddressPropertiesNVX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceAddress, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageViewAddressPropertiesNVX const & ) const = default; +#else + bool operator==( ImageViewAddressPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceAddress == rhs.deviceAddress ) && + ( size == rhs.size ); +# endif + } + + bool operator!=( ImageViewAddressPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewAddressPropertiesNVX; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {}; + VULKAN_HPP_NAMESPACE::DeviceSize size = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX ) == + sizeof( VkImageViewAddressPropertiesNVX ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImageViewAddressPropertiesNVX is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageViewAddressPropertiesNVX; + }; + + struct ImageViewCreateInfo + { + using NativeType = VkImageViewCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImageViewCreateInfo( VULKAN_HPP_NAMESPACE::ImageViewCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::Image image_ = {}, + VULKAN_HPP_NAMESPACE::ImageViewType viewType_ = VULKAN_HPP_NAMESPACE::ImageViewType::e1D, + VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::ComponentMapping components_ = {}, + VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , image( image_ ) + , viewType( viewType_ ) + , format( format_ ) + , components( components_ ) + , subresourceRange( subresourceRange_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageViewCreateInfo( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewCreateInfo( VkImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageViewCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageViewCreateInfo & operator=( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewCreateInfo & operator=( VkImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::ImageViewCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & + setViewType( VULKAN_HPP_NAMESPACE::ImageViewType viewType_ ) VULKAN_HPP_NOEXCEPT + { + viewType = viewType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & + setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT + { + components = components_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & + setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT + { + subresourceRange = subresourceRange_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageViewCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageViewCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, image, viewType, format, components, subresourceRange ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageViewCreateInfo const & ) const = default; +#else + bool operator==( ImageViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( image == rhs.image ) && + ( viewType == rhs.viewType ) && ( format == rhs.format ) && ( components == rhs.components ) && + ( subresourceRange == rhs.subresourceRange ); +# endif + } + + bool operator!=( ImageViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageViewCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::Image image = {}; + VULKAN_HPP_NAMESPACE::ImageViewType viewType = VULKAN_HPP_NAMESPACE::ImageViewType::e1D; + VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::ComponentMapping components = {}; + VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageViewCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageViewCreateInfo; + }; + + struct ImageViewHandleInfoNVX + { + using NativeType = VkImageViewHandleInfoNVX; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewHandleInfoNVX; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageViewHandleInfoNVX( + VULKAN_HPP_NAMESPACE::ImageView imageView_ = {}, + VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler, + VULKAN_HPP_NAMESPACE::Sampler sampler_ = {} ) VULKAN_HPP_NOEXCEPT + : imageView( imageView_ ) + , descriptorType( descriptorType_ ) + , sampler( sampler_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageViewHandleInfoNVX( ImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewHandleInfoNVX( VkImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageViewHandleInfoNVX( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageViewHandleInfoNVX & operator=( ImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewHandleInfoNVX & operator=( VkImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & + setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & + setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT + { + descriptorType = descriptorType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & + setSampler( VULKAN_HPP_NAMESPACE::Sampler sampler_ ) VULKAN_HPP_NOEXCEPT + { + sampler = sampler_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageViewHandleInfoNVX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageViewHandleInfoNVX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageView, descriptorType, sampler ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageViewHandleInfoNVX const & ) const = default; +#else + bool operator==( ImageViewHandleInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageView == rhs.imageView ) && + ( descriptorType == rhs.descriptorType ) && ( sampler == rhs.sampler ); +# endif + } + + bool operator!=( ImageViewHandleInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewHandleInfoNVX; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageView imageView = {}; + VULKAN_HPP_NAMESPACE::DescriptorType descriptorType = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler; + VULKAN_HPP_NAMESPACE::Sampler sampler = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX ) == + sizeof( VkImageViewHandleInfoNVX ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageViewHandleInfoNVX is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageViewHandleInfoNVX; + }; + + struct ImageViewMinLodCreateInfoEXT + { + using NativeType = VkImageViewMinLodCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewMinLodCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageViewMinLodCreateInfoEXT( float minLod_ = {} ) VULKAN_HPP_NOEXCEPT : minLod( minLod_ ) {} + + VULKAN_HPP_CONSTEXPR + ImageViewMinLodCreateInfoEXT( ImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewMinLodCreateInfoEXT( VkImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageViewMinLodCreateInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageViewMinLodCreateInfoEXT & operator=( ImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewMinLodCreateInfoEXT & operator=( VkImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageViewMinLodCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewMinLodCreateInfoEXT & setMinLod( float minLod_ ) VULKAN_HPP_NOEXCEPT + { + minLod = minLod_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageViewMinLodCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageViewMinLodCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minLod ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageViewMinLodCreateInfoEXT const & ) const = default; +#else + bool operator==( ImageViewMinLodCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minLod == rhs.minLod ); +# endif + } + + bool operator!=( ImageViewMinLodCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewMinLodCreateInfoEXT; + const void * pNext = {}; + float minLod = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT ) == + sizeof( VkImageViewMinLodCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImageViewMinLodCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageViewMinLodCreateInfoEXT; + }; + + struct ImageViewUsageCreateInfo + { + using NativeType = VkImageViewUsageCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewUsageCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImageViewUsageCreateInfo( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {} ) VULKAN_HPP_NOEXCEPT + : usage( usage_ ) + {} + + VULKAN_HPP_CONSTEXPR ImageViewUsageCreateInfo( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewUsageCreateInfo( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageViewUsageCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImageViewUsageCreateInfo & operator=( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewUsageCreateInfo & operator=( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo & + setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImageViewUsageCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImageViewUsageCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, usage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageViewUsageCreateInfo const & ) const = default; +#else + bool operator==( ImageViewUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( usage == rhs.usage ); +# endif + } + + bool operator!=( ImageViewUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewUsageCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo ) == + sizeof( VkImageViewUsageCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageViewUsageCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImageViewUsageCreateInfo; + }; + using ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo; + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + struct ImportAndroidHardwareBufferInfoANDROID + { + using NativeType = VkImportAndroidHardwareBufferInfoANDROID; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eImportAndroidHardwareBufferInfoANDROID; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImportAndroidHardwareBufferInfoANDROID( struct AHardwareBuffer * buffer_ = {} ) VULKAN_HPP_NOEXCEPT + : buffer( buffer_ ) + {} + + VULKAN_HPP_CONSTEXPR ImportAndroidHardwareBufferInfoANDROID( ImportAndroidHardwareBufferInfoANDROID const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + ImportAndroidHardwareBufferInfoANDROID( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportAndroidHardwareBufferInfoANDROID( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImportAndroidHardwareBufferInfoANDROID & + operator=( ImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportAndroidHardwareBufferInfoANDROID & + operator=( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportAndroidHardwareBufferInfoANDROID & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportAndroidHardwareBufferInfoANDROID & + setBuffer( struct AHardwareBuffer * buffer_ ) VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImportAndroidHardwareBufferInfoANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImportAndroidHardwareBufferInfoANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, buffer ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportAndroidHardwareBufferInfoANDROID const & ) const = default; +# else + bool operator==( ImportAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ); +# endif + } + + bool operator!=( ImportAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportAndroidHardwareBufferInfoANDROID; + const void * pNext = {}; + struct AHardwareBuffer * buffer = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID ) == + sizeof( VkImportAndroidHardwareBufferInfoANDROID ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImportAndroidHardwareBufferInfoANDROID is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImportAndroidHardwareBufferInfoANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + struct ImportFenceFdInfoKHR + { + using NativeType = VkImportFenceFdInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportFenceFdInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportFenceFdInfoKHR( VULKAN_HPP_NAMESPACE::Fence fence_ = {}, + VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd, + int fd_ = {} ) VULKAN_HPP_NOEXCEPT + : fence( fence_ ) + , flags( flags_ ) + , handleType( handleType_ ) + , fd( fd_ ) + {} + + VULKAN_HPP_CONSTEXPR ImportFenceFdInfoKHR( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportFenceFdInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImportFenceFdInfoKHR & operator=( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportFenceFdInfoKHR & operator=( VkImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT + { + fence = fence_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT + { + fd = fd_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImportFenceFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImportFenceFdInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fence, flags, handleType, fd ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportFenceFdInfoKHR const & ) const = default; +#else + bool operator==( ImportFenceFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && ( flags == rhs.flags ) && + ( handleType == rhs.handleType ) && ( fd == rhs.fd ); +# endif + } + + bool operator!=( ImportFenceFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportFenceFdInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Fence fence = {}; + VULKAN_HPP_NAMESPACE::FenceImportFlags flags = {}; + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd; + int fd = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportFenceFdInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImportFenceFdInfoKHR; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct ImportFenceWin32HandleInfoKHR + { + using NativeType = VkImportFenceWin32HandleInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportFenceWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImportFenceWin32HandleInfoKHR( VULKAN_HPP_NAMESPACE::Fence fence_ = {}, + VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd, + HANDLE handle_ = {}, + LPCWSTR name_ = {} ) VULKAN_HPP_NOEXCEPT + : fence( fence_ ) + , flags( flags_ ) + , handleType( handleType_ ) + , handle( handle_ ) + , name( name_ ) + {} + + VULKAN_HPP_CONSTEXPR + ImportFenceWin32HandleInfoKHR( ImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportFenceWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImportFenceWin32HandleInfoKHR & + operator=( ImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportFenceWin32HandleInfoKHR & operator=( VkImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & + setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT + { + fence = fence_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT + { + name = name_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImportFenceWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImportFenceWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fence, flags, handleType, handle, name ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportFenceWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( ImportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && ( flags == rhs.flags ) && + ( handleType == rhs.handleType ) && ( handle == rhs.handle ) && ( name == rhs.name ); +# endif + } + + bool operator!=( ImportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportFenceWin32HandleInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Fence fence = {}; + VULKAN_HPP_NAMESPACE::FenceImportFlags flags = {}; + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd; + HANDLE handle = {}; + LPCWSTR name = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR ) == + sizeof( VkImportFenceWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImportFenceWin32HandleInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImportFenceWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct ImportMemoryBufferCollectionFUCHSIA + { + using NativeType = VkImportMemoryBufferCollectionFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eImportMemoryBufferCollectionFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImportMemoryBufferCollectionFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ = {}, + uint32_t index_ = {} ) VULKAN_HPP_NOEXCEPT + : collection( collection_ ) + , index( index_ ) + {} + + VULKAN_HPP_CONSTEXPR ImportMemoryBufferCollectionFUCHSIA( ImportMemoryBufferCollectionFUCHSIA const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryBufferCollectionFUCHSIA( VkImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMemoryBufferCollectionFUCHSIA( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImportMemoryBufferCollectionFUCHSIA & + operator=( ImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryBufferCollectionFUCHSIA & + operator=( VkImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA & + setCollection( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ ) VULKAN_HPP_NOEXCEPT + { + collection = collection_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT + { + index = index_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImportMemoryBufferCollectionFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImportMemoryBufferCollectionFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, collection, index ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportMemoryBufferCollectionFUCHSIA const & ) const = default; +# else + bool operator==( ImportMemoryBufferCollectionFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( collection == rhs.collection ) && + ( index == rhs.index ); +# endif + } + + bool operator!=( ImportMemoryBufferCollectionFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryBufferCollectionFUCHSIA; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection = {}; + uint32_t index = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA ) == + sizeof( VkImportMemoryBufferCollectionFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImportMemoryBufferCollectionFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImportMemoryBufferCollectionFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + struct ImportMemoryFdInfoKHR + { + using NativeType = VkImportMemoryFdInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryFdInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportMemoryFdInfoKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + int fd_ = {} ) VULKAN_HPP_NOEXCEPT + : handleType( handleType_ ) + , fd( fd_ ) + {} + + VULKAN_HPP_CONSTEXPR ImportMemoryFdInfoKHR( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMemoryFdInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImportMemoryFdInfoKHR & operator=( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryFdInfoKHR & operator=( VkImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT + { + fd = fd_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImportMemoryFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImportMemoryFdInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType, fd ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportMemoryFdInfoKHR const & ) const = default; +#else + bool operator==( ImportMemoryFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && ( fd == rhs.fd ); +# endif + } + + bool operator!=( ImportMemoryFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryFdInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + int fd = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportMemoryFdInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImportMemoryFdInfoKHR; + }; + + struct ImportMemoryHostPointerInfoEXT + { + using NativeType = VkImportMemoryHostPointerInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryHostPointerInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImportMemoryHostPointerInfoEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + void * pHostPointer_ = {} ) VULKAN_HPP_NOEXCEPT + : handleType( handleType_ ) + , pHostPointer( pHostPointer_ ) + {} + + VULKAN_HPP_CONSTEXPR + ImportMemoryHostPointerInfoEXT( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryHostPointerInfoEXT( VkImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMemoryHostPointerInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImportMemoryHostPointerInfoEXT & + operator=( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryHostPointerInfoEXT & operator=( VkImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & setPHostPointer( void * pHostPointer_ ) VULKAN_HPP_NOEXCEPT + { + pHostPointer = pHostPointer_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImportMemoryHostPointerInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImportMemoryHostPointerInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType, pHostPointer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportMemoryHostPointerInfoEXT const & ) const = default; +#else + bool operator==( ImportMemoryHostPointerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && + ( pHostPointer == rhs.pHostPointer ); +# endif + } + + bool operator!=( ImportMemoryHostPointerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryHostPointerInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + void * pHostPointer = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT ) == + sizeof( VkImportMemoryHostPointerInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImportMemoryHostPointerInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImportMemoryHostPointerInfoEXT; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct ImportMemoryWin32HandleInfoKHR + { + using NativeType = VkImportMemoryWin32HandleInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImportMemoryWin32HandleInfoKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + HANDLE handle_ = {}, + LPCWSTR name_ = {} ) VULKAN_HPP_NOEXCEPT + : handleType( handleType_ ) + , handle( handle_ ) + , name( name_ ) + {} + + VULKAN_HPP_CONSTEXPR + ImportMemoryWin32HandleInfoKHR( ImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMemoryWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImportMemoryWin32HandleInfoKHR & + operator=( ImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryWin32HandleInfoKHR & operator=( VkImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT + { + name = name_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImportMemoryWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImportMemoryWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType, handle, name ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportMemoryWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( ImportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && + ( handle == rhs.handle ) && ( name == rhs.name ); +# endif + } + + bool operator!=( ImportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryWin32HandleInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + HANDLE handle = {}; + LPCWSTR name = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR ) == + sizeof( VkImportMemoryWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImportMemoryWin32HandleInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImportMemoryWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct ImportMemoryWin32HandleInfoNV + { + using NativeType = VkImportMemoryWin32HandleInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryWin32HandleInfoNV; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImportMemoryWin32HandleInfoNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType_ = {}, + HANDLE handle_ = {} ) VULKAN_HPP_NOEXCEPT + : handleType( handleType_ ) + , handle( handle_ ) + {} + + VULKAN_HPP_CONSTEXPR + ImportMemoryWin32HandleInfoNV( ImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMemoryWin32HandleInfoNV( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImportMemoryWin32HandleInfoNV & + operator=( ImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryWin32HandleInfoNV & operator=( VkImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImportMemoryWin32HandleInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImportMemoryWin32HandleInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType, handle ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportMemoryWin32HandleInfoNV const & ) const = default; +# else + bool operator==( ImportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && + ( handle == rhs.handle ); +# endif + } + + bool operator!=( ImportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryWin32HandleInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType = {}; + HANDLE handle = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV ) == + sizeof( VkImportMemoryWin32HandleInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImportMemoryWin32HandleInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImportMemoryWin32HandleInfoNV; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct ImportMemoryZirconHandleInfoFUCHSIA + { + using NativeType = VkImportMemoryZirconHandleInfoFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eImportMemoryZirconHandleInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImportMemoryZirconHandleInfoFUCHSIA( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + zx_handle_t handle_ = {} ) VULKAN_HPP_NOEXCEPT + : handleType( handleType_ ) + , handle( handle_ ) + {} + + VULKAN_HPP_CONSTEXPR ImportMemoryZirconHandleInfoFUCHSIA( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryZirconHandleInfoFUCHSIA( VkImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMemoryZirconHandleInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImportMemoryZirconHandleInfoFUCHSIA & + operator=( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryZirconHandleInfoFUCHSIA & + operator=( VkImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA & setHandle( zx_handle_t handle_ ) VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImportMemoryZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImportMemoryZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType, handle ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = handleType <=> rhs.handleType; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &handle, &rhs.handle, sizeof( zx_handle_t ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && + ( memcmp( &handle, &rhs.handle, sizeof( zx_handle_t ) ) == 0 ); + } + + bool operator!=( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryZirconHandleInfoFUCHSIA; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + zx_handle_t handle = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA ) == + sizeof( VkImportMemoryZirconHandleInfoFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImportMemoryZirconHandleInfoFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImportMemoryZirconHandleInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + struct ImportSemaphoreFdInfoKHR + { + using NativeType = VkImportSemaphoreFdInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportSemaphoreFdInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImportSemaphoreFdInfoKHR( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, + VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, + int fd_ = {} ) VULKAN_HPP_NOEXCEPT + : semaphore( semaphore_ ) + , flags( flags_ ) + , handleType( handleType_ ) + , fd( fd_ ) + {} + + VULKAN_HPP_CONSTEXPR ImportSemaphoreFdInfoKHR( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportSemaphoreFdInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImportSemaphoreFdInfoKHR & operator=( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportSemaphoreFdInfoKHR & operator=( VkImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & + setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT + { + fd = fd_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImportSemaphoreFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImportSemaphoreFdInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, flags, handleType, fd ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportSemaphoreFdInfoKHR const & ) const = default; +#else + bool operator==( ImportSemaphoreFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && + ( flags == rhs.flags ) && ( handleType == rhs.handleType ) && ( fd == rhs.fd ); +# endif + } + + bool operator!=( ImportSemaphoreFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportSemaphoreFdInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; + VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags = {}; + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; + int fd = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR ) == + sizeof( VkImportSemaphoreFdInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportSemaphoreFdInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImportSemaphoreFdInfoKHR; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct ImportSemaphoreWin32HandleInfoKHR + { + using NativeType = VkImportSemaphoreWin32HandleInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eImportSemaphoreWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImportSemaphoreWin32HandleInfoKHR( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, + VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, + HANDLE handle_ = {}, + LPCWSTR name_ = {} ) VULKAN_HPP_NOEXCEPT + : semaphore( semaphore_ ) + , flags( flags_ ) + , handleType( handleType_ ) + , handle( handle_ ) + , name( name_ ) + {} + + VULKAN_HPP_CONSTEXPR + ImportSemaphoreWin32HandleInfoKHR( ImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportSemaphoreWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImportSemaphoreWin32HandleInfoKHR & + operator=( ImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportSemaphoreWin32HandleInfoKHR & operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & + setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT + { + name = name_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImportSemaphoreWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImportSemaphoreWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, flags, handleType, handle, name ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportSemaphoreWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( ImportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && + ( flags == rhs.flags ) && ( handleType == rhs.handleType ) && ( handle == rhs.handle ) && + ( name == rhs.name ); +# endif + } + + bool operator!=( ImportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportSemaphoreWin32HandleInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; + VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags = {}; + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; + HANDLE handle = {}; + LPCWSTR name = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR ) == + sizeof( VkImportSemaphoreWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImportSemaphoreWin32HandleInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImportSemaphoreWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct ImportSemaphoreZirconHandleInfoFUCHSIA + { + using NativeType = VkImportSemaphoreZirconHandleInfoFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eImportSemaphoreZirconHandleInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImportSemaphoreZirconHandleInfoFUCHSIA( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, + VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, + zx_handle_t zirconHandle_ = {} ) VULKAN_HPP_NOEXCEPT + : semaphore( semaphore_ ) + , flags( flags_ ) + , handleType( handleType_ ) + , zirconHandle( zirconHandle_ ) + {} + + VULKAN_HPP_CONSTEXPR ImportSemaphoreZirconHandleInfoFUCHSIA( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + ImportSemaphoreZirconHandleInfoFUCHSIA( VkImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportSemaphoreZirconHandleInfoFUCHSIA( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ImportSemaphoreZirconHandleInfoFUCHSIA & + operator=( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportSemaphoreZirconHandleInfoFUCHSIA & + operator=( VkImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & + setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & + setFlags( VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & + setZirconHandle( zx_handle_t zirconHandle_ ) VULKAN_HPP_NOEXCEPT + { + zirconHandle = zirconHandle_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkImportSemaphoreZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkImportSemaphoreZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, flags, handleType, zirconHandle ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = semaphore <=> rhs.semaphore; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = handleType <=> rhs.handleType; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &zirconHandle, &rhs.zirconHandle, sizeof( zx_handle_t ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && + ( flags == rhs.flags ) && ( handleType == rhs.handleType ) && + ( memcmp( &zirconHandle, &rhs.zirconHandle, sizeof( zx_handle_t ) ) == 0 ); + } + + bool operator!=( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportSemaphoreZirconHandleInfoFUCHSIA; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; + VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags = {}; + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; + zx_handle_t zirconHandle = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA ) == + sizeof( VkImportSemaphoreZirconHandleInfoFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ImportSemaphoreZirconHandleInfoFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ImportSemaphoreZirconHandleInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + struct IndirectCommandsLayoutTokenNV + { + using NativeType = VkIndirectCommandsLayoutTokenNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectCommandsLayoutTokenNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + IndirectCommandsLayoutTokenNV( VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType_ = + VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV::eShaderGroup, + uint32_t stream_ = {}, + uint32_t offset_ = {}, + uint32_t vertexBindingUnit_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 vertexDynamicStride_ = {}, + VULKAN_HPP_NAMESPACE::PipelineLayout pushconstantPipelineLayout_ = {}, + VULKAN_HPP_NAMESPACE::ShaderStageFlags pushconstantShaderStageFlags_ = {}, + uint32_t pushconstantOffset_ = {}, + uint32_t pushconstantSize_ = {}, + VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV indirectStateFlags_ = {}, + uint32_t indexTypeCount_ = {}, + const VULKAN_HPP_NAMESPACE::IndexType * pIndexTypes_ = {}, + const uint32_t * pIndexTypeValues_ = {} ) VULKAN_HPP_NOEXCEPT + : tokenType( tokenType_ ) + , stream( stream_ ) + , offset( offset_ ) + , vertexBindingUnit( vertexBindingUnit_ ) + , vertexDynamicStride( vertexDynamicStride_ ) + , pushconstantPipelineLayout( pushconstantPipelineLayout_ ) + , pushconstantShaderStageFlags( pushconstantShaderStageFlags_ ) + , pushconstantOffset( pushconstantOffset_ ) + , pushconstantSize( pushconstantSize_ ) + , indirectStateFlags( indirectStateFlags_ ) + , indexTypeCount( indexTypeCount_ ) + , pIndexTypes( pIndexTypes_ ) + , pIndexTypeValues( pIndexTypeValues_ ) + {} + + VULKAN_HPP_CONSTEXPR + IndirectCommandsLayoutTokenNV( IndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsLayoutTokenNV( VkIndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsLayoutTokenNV( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutTokenNV( + VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType_, + uint32_t stream_, + uint32_t offset_, + uint32_t vertexBindingUnit_, + VULKAN_HPP_NAMESPACE::Bool32 vertexDynamicStride_, + VULKAN_HPP_NAMESPACE::PipelineLayout pushconstantPipelineLayout_, + VULKAN_HPP_NAMESPACE::ShaderStageFlags pushconstantShaderStageFlags_, + uint32_t pushconstantOffset_, + uint32_t pushconstantSize_, + VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV indirectStateFlags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & indexTypes_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & indexTypeValues_ = {} ) + : tokenType( tokenType_ ) + , stream( stream_ ) + , offset( offset_ ) + , vertexBindingUnit( vertexBindingUnit_ ) + , vertexDynamicStride( vertexDynamicStride_ ) + , pushconstantPipelineLayout( pushconstantPipelineLayout_ ) + , pushconstantShaderStageFlags( pushconstantShaderStageFlags_ ) + , pushconstantOffset( pushconstantOffset_ ) + , pushconstantSize( pushconstantSize_ ) + , indirectStateFlags( indirectStateFlags_ ) + , indexTypeCount( static_cast( indexTypes_.size() ) ) + , pIndexTypes( indexTypes_.data() ) + , pIndexTypeValues( indexTypeValues_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( indexTypes_.size() == indexTypeValues_.size() ); +# else + if ( indexTypes_.size() != indexTypeValues_.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::IndirectCommandsLayoutTokenNV::IndirectCommandsLayoutTokenNV: indexTypes_.size() != indexTypeValues_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + IndirectCommandsLayoutTokenNV & + operator=( IndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsLayoutTokenNV & operator=( VkIndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & + setTokenType( VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType_ ) VULKAN_HPP_NOEXCEPT + { + tokenType = tokenType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setStream( uint32_t stream_ ) VULKAN_HPP_NOEXCEPT + { + stream = stream_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & + setVertexBindingUnit( uint32_t vertexBindingUnit_ ) VULKAN_HPP_NOEXCEPT + { + vertexBindingUnit = vertexBindingUnit_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & + setVertexDynamicStride( VULKAN_HPP_NAMESPACE::Bool32 vertexDynamicStride_ ) VULKAN_HPP_NOEXCEPT + { + vertexDynamicStride = vertexDynamicStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPushconstantPipelineLayout( + VULKAN_HPP_NAMESPACE::PipelineLayout pushconstantPipelineLayout_ ) VULKAN_HPP_NOEXCEPT + { + pushconstantPipelineLayout = pushconstantPipelineLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPushconstantShaderStageFlags( + VULKAN_HPP_NAMESPACE::ShaderStageFlags pushconstantShaderStageFlags_ ) VULKAN_HPP_NOEXCEPT + { + pushconstantShaderStageFlags = pushconstantShaderStageFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & + setPushconstantOffset( uint32_t pushconstantOffset_ ) VULKAN_HPP_NOEXCEPT + { + pushconstantOffset = pushconstantOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & + setPushconstantSize( uint32_t pushconstantSize_ ) VULKAN_HPP_NOEXCEPT + { + pushconstantSize = pushconstantSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & + setIndirectStateFlags( VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV indirectStateFlags_ ) VULKAN_HPP_NOEXCEPT + { + indirectStateFlags = indirectStateFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & + setIndexTypeCount( uint32_t indexTypeCount_ ) VULKAN_HPP_NOEXCEPT + { + indexTypeCount = indexTypeCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & + setPIndexTypes( const VULKAN_HPP_NAMESPACE::IndexType * pIndexTypes_ ) VULKAN_HPP_NOEXCEPT + { + pIndexTypes = pIndexTypes_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutTokenNV & setIndexTypes( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & indexTypes_ ) + VULKAN_HPP_NOEXCEPT + { + indexTypeCount = static_cast( indexTypes_.size() ); + pIndexTypes = indexTypes_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & + setPIndexTypeValues( const uint32_t * pIndexTypeValues_ ) VULKAN_HPP_NOEXCEPT + { + pIndexTypeValues = pIndexTypeValues_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutTokenNV & setIndexTypeValues( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & indexTypeValues_ ) VULKAN_HPP_NOEXCEPT + { + indexTypeCount = static_cast( indexTypeValues_.size() ); + pIndexTypeValues = indexTypeValues_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkIndirectCommandsLayoutTokenNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkIndirectCommandsLayoutTokenNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + tokenType, + stream, + offset, + vertexBindingUnit, + vertexDynamicStride, + pushconstantPipelineLayout, + pushconstantShaderStageFlags, + pushconstantOffset, + pushconstantSize, + indirectStateFlags, + indexTypeCount, + pIndexTypes, + pIndexTypeValues ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsLayoutTokenNV const & ) const = default; +#else + bool operator==( IndirectCommandsLayoutTokenNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tokenType == rhs.tokenType ) && + ( stream == rhs.stream ) && ( offset == rhs.offset ) && ( vertexBindingUnit == rhs.vertexBindingUnit ) && + ( vertexDynamicStride == rhs.vertexDynamicStride ) && + ( pushconstantPipelineLayout == rhs.pushconstantPipelineLayout ) && + ( pushconstantShaderStageFlags == rhs.pushconstantShaderStageFlags ) && + ( pushconstantOffset == rhs.pushconstantOffset ) && ( pushconstantSize == rhs.pushconstantSize ) && + ( indirectStateFlags == rhs.indirectStateFlags ) && ( indexTypeCount == rhs.indexTypeCount ) && + ( pIndexTypes == rhs.pIndexTypes ) && ( pIndexTypeValues == rhs.pIndexTypeValues ); +# endif + } + + bool operator!=( IndirectCommandsLayoutTokenNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIndirectCommandsLayoutTokenNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType = + VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV::eShaderGroup; + uint32_t stream = {}; + uint32_t offset = {}; + uint32_t vertexBindingUnit = {}; + VULKAN_HPP_NAMESPACE::Bool32 vertexDynamicStride = {}; + VULKAN_HPP_NAMESPACE::PipelineLayout pushconstantPipelineLayout = {}; + VULKAN_HPP_NAMESPACE::ShaderStageFlags pushconstantShaderStageFlags = {}; + uint32_t pushconstantOffset = {}; + uint32_t pushconstantSize = {}; + VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV indirectStateFlags = {}; + uint32_t indexTypeCount = {}; + const VULKAN_HPP_NAMESPACE::IndexType * pIndexTypes = {}; + const uint32_t * pIndexTypeValues = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV ) == + sizeof( VkIndirectCommandsLayoutTokenNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "IndirectCommandsLayoutTokenNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = IndirectCommandsLayoutTokenNV; + }; + + struct IndirectCommandsLayoutCreateInfoNV + { + using NativeType = VkIndirectCommandsLayoutCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eIndirectCommandsLayoutCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutCreateInfoNV( + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags_ = {}, + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, + uint32_t tokenCount_ = {}, + const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV * pTokens_ = {}, + uint32_t streamCount_ = {}, + const uint32_t * pStreamStrides_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , pipelineBindPoint( pipelineBindPoint_ ) + , tokenCount( tokenCount_ ) + , pTokens( pTokens_ ) + , streamCount( streamCount_ ) + , pStreamStrides( pStreamStrides_ ) + {} + + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutCreateInfoNV( IndirectCommandsLayoutCreateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsLayoutCreateInfoNV( VkIndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsLayoutCreateInfoNV( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutCreateInfoNV( + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags_, + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + tokens_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & streamStrides_ = {} ) + : flags( flags_ ) + , pipelineBindPoint( pipelineBindPoint_ ) + , tokenCount( static_cast( tokens_.size() ) ) + , pTokens( tokens_.data() ) + , streamCount( static_cast( streamStrides_.size() ) ) + , pStreamStrides( streamStrides_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + IndirectCommandsLayoutCreateInfoNV & + operator=( IndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsLayoutCreateInfoNV & + operator=( VkIndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & + setFlags( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & + setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & + setTokenCount( uint32_t tokenCount_ ) VULKAN_HPP_NOEXCEPT + { + tokenCount = tokenCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & + setPTokens( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV * pTokens_ ) VULKAN_HPP_NOEXCEPT + { + pTokens = pTokens_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutCreateInfoNV & setTokens( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + tokens_ ) VULKAN_HPP_NOEXCEPT + { + tokenCount = static_cast( tokens_.size() ); + pTokens = tokens_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & + setStreamCount( uint32_t streamCount_ ) VULKAN_HPP_NOEXCEPT + { + streamCount = streamCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & + setPStreamStrides( const uint32_t * pStreamStrides_ ) VULKAN_HPP_NOEXCEPT + { + pStreamStrides = pStreamStrides_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutCreateInfoNV & setStreamStrides( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & streamStrides_ ) VULKAN_HPP_NOEXCEPT + { + streamCount = static_cast( streamStrides_.size() ); + pStreamStrides = streamStrides_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkIndirectCommandsLayoutCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkIndirectCommandsLayoutCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pipelineBindPoint, tokenCount, pTokens, streamCount, pStreamStrides ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsLayoutCreateInfoNV const & ) const = default; +#else + bool operator==( IndirectCommandsLayoutCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( tokenCount == rhs.tokenCount ) && + ( pTokens == rhs.pTokens ) && ( streamCount == rhs.streamCount ) && + ( pStreamStrides == rhs.pStreamStrides ); +# endif + } + + bool operator!=( IndirectCommandsLayoutCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIndirectCommandsLayoutCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags = {}; + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics; + uint32_t tokenCount = {}; + const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV * pTokens = {}; + uint32_t streamCount = {}; + const uint32_t * pStreamStrides = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV ) == + sizeof( VkIndirectCommandsLayoutCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "IndirectCommandsLayoutCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = IndirectCommandsLayoutCreateInfoNV; + }; + + struct InitializePerformanceApiInfoINTEL + { + using NativeType = VkInitializePerformanceApiInfoINTEL; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eInitializePerformanceApiInfoINTEL; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR InitializePerformanceApiInfoINTEL( void * pUserData_ = {} ) VULKAN_HPP_NOEXCEPT + : pUserData( pUserData_ ) + {} + + VULKAN_HPP_CONSTEXPR + InitializePerformanceApiInfoINTEL( InitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + InitializePerformanceApiInfoINTEL( VkInitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + : InitializePerformanceApiInfoINTEL( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + InitializePerformanceApiInfoINTEL & + operator=( InitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + InitializePerformanceApiInfoINTEL & operator=( VkInitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 InitializePerformanceApiInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InitializePerformanceApiInfoINTEL & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT + { + pUserData = pUserData_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkInitializePerformanceApiInfoINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkInitializePerformanceApiInfoINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pUserData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( InitializePerformanceApiInfoINTEL const & ) const = default; +#else + bool operator==( InitializePerformanceApiInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pUserData == rhs.pUserData ); +# endif + } + + bool operator!=( InitializePerformanceApiInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eInitializePerformanceApiInfoINTEL; + const void * pNext = {}; + void * pUserData = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL ) == + sizeof( VkInitializePerformanceApiInfoINTEL ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "InitializePerformanceApiInfoINTEL is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = InitializePerformanceApiInfoINTEL; + }; + + struct InputAttachmentAspectReference + { + using NativeType = VkInputAttachmentAspectReference; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + InputAttachmentAspectReference( uint32_t subpass_ = {}, + uint32_t inputAttachmentIndex_ = {}, + VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {} ) VULKAN_HPP_NOEXCEPT + : subpass( subpass_ ) + , inputAttachmentIndex( inputAttachmentIndex_ ) + , aspectMask( aspectMask_ ) + {} + + VULKAN_HPP_CONSTEXPR + InputAttachmentAspectReference( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + InputAttachmentAspectReference( VkInputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT + : InputAttachmentAspectReference( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + InputAttachmentAspectReference & + operator=( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + InputAttachmentAspectReference & operator=( VkInputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT + { + subpass = subpass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & + setInputAttachmentIndex( uint32_t inputAttachmentIndex_ ) VULKAN_HPP_NOEXCEPT + { + inputAttachmentIndex = inputAttachmentIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & + setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkInputAttachmentAspectReference const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkInputAttachmentAspectReference &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( subpass, inputAttachmentIndex, aspectMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( InputAttachmentAspectReference const & ) const = default; +#else + bool operator==( InputAttachmentAspectReference const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( subpass == rhs.subpass ) && ( inputAttachmentIndex == rhs.inputAttachmentIndex ) && + ( aspectMask == rhs.aspectMask ); +# endif + } + + bool operator!=( InputAttachmentAspectReference const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t subpass = {}; + uint32_t inputAttachmentIndex = {}; + VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference ) == + sizeof( VkInputAttachmentAspectReference ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "InputAttachmentAspectReference is not nothrow_move_constructible!" ); + using InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference; + + struct InstanceCreateInfo + { + using NativeType = VkInstanceCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eInstanceCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR InstanceCreateInfo( VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags_ = {}, + const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo_ = {}, + uint32_t enabledLayerCount_ = {}, + const char * const * ppEnabledLayerNames_ = {}, + uint32_t enabledExtensionCount_ = {}, + const char * const * ppEnabledExtensionNames_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , pApplicationInfo( pApplicationInfo_ ) + , enabledLayerCount( enabledLayerCount_ ) + , ppEnabledLayerNames( ppEnabledLayerNames_ ) + , enabledExtensionCount( enabledExtensionCount_ ) + , ppEnabledExtensionNames( ppEnabledExtensionNames_ ) + {} + + VULKAN_HPP_CONSTEXPR InstanceCreateInfo( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + InstanceCreateInfo( VkInstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : InstanceCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + InstanceCreateInfo( + VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags_, + const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pEnabledLayerNames_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pEnabledExtensionNames_ = {} ) + : flags( flags_ ) + , pApplicationInfo( pApplicationInfo_ ) + , enabledLayerCount( static_cast( pEnabledLayerNames_.size() ) ) + , ppEnabledLayerNames( pEnabledLayerNames_.data() ) + , enabledExtensionCount( static_cast( pEnabledExtensionNames_.size() ) ) + , ppEnabledExtensionNames( pEnabledExtensionNames_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + InstanceCreateInfo & operator=( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + InstanceCreateInfo & operator=( VkInstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & + setPApplicationInfo( const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo_ ) VULKAN_HPP_NOEXCEPT + { + pApplicationInfo = pApplicationInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) VULKAN_HPP_NOEXCEPT + { + enabledLayerCount = enabledLayerCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & + setPpEnabledLayerNames( const char * const * ppEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT + { + ppEnabledLayerNames = ppEnabledLayerNames_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + InstanceCreateInfo & setPEnabledLayerNames( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pEnabledLayerNames_ ) + VULKAN_HPP_NOEXCEPT + { + enabledLayerCount = static_cast( pEnabledLayerNames_.size() ); + ppEnabledLayerNames = pEnabledLayerNames_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & + setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) VULKAN_HPP_NOEXCEPT + { + enabledExtensionCount = enabledExtensionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & + setPpEnabledExtensionNames( const char * const * ppEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT + { + ppEnabledExtensionNames = ppEnabledExtensionNames_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + InstanceCreateInfo & setPEnabledExtensionNames( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pEnabledExtensionNames_ ) + VULKAN_HPP_NOEXCEPT + { + enabledExtensionCount = static_cast( pEnabledExtensionNames_.size() ); + ppEnabledExtensionNames = pEnabledExtensionNames_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkInstanceCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkInstanceCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + pApplicationInfo, + enabledLayerCount, + ppEnabledLayerNames, + enabledExtensionCount, + ppEnabledExtensionNames ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = pApplicationInfo <=> rhs.pApplicationInfo; cmp != 0 ) + return cmp; + if ( auto cmp = enabledLayerCount <=> rhs.enabledLayerCount; cmp != 0 ) + return cmp; + for ( size_t i = 0; i < enabledLayerCount; ++i ) + { + if ( ppEnabledLayerNames[i] != rhs.ppEnabledLayerNames[i] ) + if ( auto cmp = strcmp( ppEnabledLayerNames[i], rhs.ppEnabledLayerNames[i] ); cmp != 0 ) + return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater; + } + if ( auto cmp = enabledExtensionCount <=> rhs.enabledExtensionCount; cmp != 0 ) + return cmp; + for ( size_t i = 0; i < enabledExtensionCount; ++i ) + { + if ( ppEnabledExtensionNames[i] != rhs.ppEnabledExtensionNames[i] ) + if ( auto cmp = strcmp( ppEnabledExtensionNames[i], rhs.ppEnabledExtensionNames[i] ); cmp != 0 ) + return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater; + } + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( pApplicationInfo == rhs.pApplicationInfo ) && ( enabledLayerCount == rhs.enabledLayerCount ) && + [this, rhs] + { + bool equal = true; + for ( size_t i = 0; equal && ( i < enabledLayerCount ); ++i ) + { + equal = ( ( ppEnabledLayerNames[i] == rhs.ppEnabledLayerNames[i] ) || + ( strcmp( ppEnabledLayerNames[i], rhs.ppEnabledLayerNames[i] ) == 0 ) ); + } + return equal; + }() && ( enabledExtensionCount == rhs.enabledExtensionCount ) && + [this, rhs] + { + bool equal = true; + for ( size_t i = 0; equal && ( i < enabledExtensionCount ); ++i ) + { + equal = ( ( ppEnabledExtensionNames[i] == rhs.ppEnabledExtensionNames[i] ) || + ( strcmp( ppEnabledExtensionNames[i], rhs.ppEnabledExtensionNames[i] ) == 0 ) ); + } + return equal; + }(); + } + + bool operator!=( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eInstanceCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags = {}; + const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo = {}; + uint32_t enabledLayerCount = {}; + const char * const * ppEnabledLayerNames = {}; + uint32_t enabledExtensionCount = {}; + const char * const * ppEnabledExtensionNames = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "InstanceCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = InstanceCreateInfo; + }; + + struct LayerProperties + { + using NativeType = VkLayerProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + LayerProperties( std::array const & layerName_ = {}, + uint32_t specVersion_ = {}, + uint32_t implementationVersion_ = {}, + std::array const & description_ = {} ) VULKAN_HPP_NOEXCEPT + : layerName( layerName_ ) + , specVersion( specVersion_ ) + , implementationVersion( implementationVersion_ ) + , description( description_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 LayerProperties( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + LayerProperties( VkLayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : LayerProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + LayerProperties & operator=( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + LayerProperties & operator=( VkLayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkLayerProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkLayerProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + uint32_t const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( layerName, specVersion, implementationVersion, description ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( LayerProperties const & ) const = default; +#else + bool operator==( LayerProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( layerName == rhs.layerName ) && ( specVersion == rhs.specVersion ) && + ( implementationVersion == rhs.implementationVersion ) && ( description == rhs.description ); +# endif + } + + bool operator!=( LayerProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ArrayWrapper1D layerName = {}; + uint32_t specVersion = {}; + uint32_t implementationVersion = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D description = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::LayerProperties ) == sizeof( VkLayerProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "LayerProperties is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + struct MacOSSurfaceCreateInfoMVK + { + using NativeType = VkMacOSSurfaceCreateInfoMVK; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMacosSurfaceCreateInfoMVK; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MacOSSurfaceCreateInfoMVK( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags_ = {}, + const void * pView_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , pView( pView_ ) + {} + + VULKAN_HPP_CONSTEXPR + MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT + : MacOSSurfaceCreateInfoMVK( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MacOSSurfaceCreateInfoMVK & operator=( MacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MacOSSurfaceCreateInfoMVK & operator=( VkMacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & + setFlags( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & setPView( const void * pView_ ) VULKAN_HPP_NOEXCEPT + { + pView = pView_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMacOSSurfaceCreateInfoMVK const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMacOSSurfaceCreateInfoMVK &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pView ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MacOSSurfaceCreateInfoMVK const & ) const = default; +# else + bool operator==( MacOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pView == rhs.pView ); +# endif + } + + bool operator!=( MacOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMacosSurfaceCreateInfoMVK; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags = {}; + const void * pView = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK ) == + sizeof( VkMacOSSurfaceCreateInfoMVK ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MacOSSurfaceCreateInfoMVK is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MacOSSurfaceCreateInfoMVK; + }; +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + struct MappedMemoryRange + { + using NativeType = VkMappedMemoryRange; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMappedMemoryRange; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MappedMemoryRange( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize size_ = {} ) VULKAN_HPP_NOEXCEPT + : memory( memory_ ) + , offset( offset_ ) + , size( size_ ) + {} + + VULKAN_HPP_CONSTEXPR MappedMemoryRange( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MappedMemoryRange( VkMappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT + : MappedMemoryRange( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MappedMemoryRange & operator=( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MappedMemoryRange & operator=( VkMappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & + setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & + setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMappedMemoryRange const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMappedMemoryRange &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory, offset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MappedMemoryRange const & ) const = default; +#else + bool operator==( MappedMemoryRange const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( offset == rhs.offset ) && + ( size == rhs.size ); +# endif + } + + bool operator!=( MappedMemoryRange const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMappedMemoryRange; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; + VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize size = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MappedMemoryRange is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MappedMemoryRange; + }; + + struct MemoryAllocateFlagsInfo + { + using NativeType = VkMemoryAllocateFlagsInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryAllocateFlagsInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryAllocateFlagsInfo( VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags_ = {}, + uint32_t deviceMask_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , deviceMask( deviceMask_ ) + {} + + VULKAN_HPP_CONSTEXPR MemoryAllocateFlagsInfo( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryAllocateFlagsInfo( VkMemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryAllocateFlagsInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryAllocateFlagsInfo & operator=( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryAllocateFlagsInfo & operator=( VkMemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & + setFlags( VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT + { + deviceMask = deviceMask_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMemoryAllocateFlagsInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryAllocateFlagsInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, deviceMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryAllocateFlagsInfo const & ) const = default; +#else + bool operator==( MemoryAllocateFlagsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( deviceMask == rhs.deviceMask ); +# endif + } + + bool operator!=( MemoryAllocateFlagsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryAllocateFlagsInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags = {}; + uint32_t deviceMask = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo ) == + sizeof( VkMemoryAllocateFlagsInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryAllocateFlagsInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryAllocateFlagsInfo; + }; + using MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo; + + struct MemoryAllocateInfo + { + using NativeType = VkMemoryAllocateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryAllocateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryAllocateInfo( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ = {}, + uint32_t memoryTypeIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : allocationSize( allocationSize_ ) + , memoryTypeIndex( memoryTypeIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR MemoryAllocateInfo( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryAllocateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryAllocateInfo & operator=( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryAllocateInfo & operator=( VkMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & + setAllocationSize( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ ) VULKAN_HPP_NOEXCEPT + { + allocationSize = allocationSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setMemoryTypeIndex( uint32_t memoryTypeIndex_ ) VULKAN_HPP_NOEXCEPT + { + memoryTypeIndex = memoryTypeIndex_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMemoryAllocateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryAllocateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, allocationSize, memoryTypeIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryAllocateInfo const & ) const = default; +#else + bool operator==( MemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allocationSize == rhs.allocationSize ) && + ( memoryTypeIndex == rhs.memoryTypeIndex ); +# endif + } + + bool operator!=( MemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryAllocateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceSize allocationSize = {}; + uint32_t memoryTypeIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryAllocateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryAllocateInfo; + }; + + struct MemoryBarrier + { + using NativeType = VkMemoryBarrier; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryBarrier; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryBarrier( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {}, + VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {} ) VULKAN_HPP_NOEXCEPT + : srcAccessMask( srcAccessMask_ ) + , dstAccessMask( dstAccessMask_ ) + {} + + VULKAN_HPP_CONSTEXPR MemoryBarrier( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryBarrier( VkMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryBarrier( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryBarrier & operator=( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryBarrier & operator=( VkMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & + setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & + setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryBarrier &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcAccessMask, dstAccessMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryBarrier const & ) const = default; +#else + bool operator==( MemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcAccessMask == rhs.srcAccessMask ) && + ( dstAccessMask == rhs.dstAccessMask ); +# endif + } + + bool operator!=( MemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryBarrier; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {}; + VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryBarrier ) == sizeof( VkMemoryBarrier ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryBarrier is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryBarrier; + }; + + struct MemoryDedicatedAllocateInfo + { + using NativeType = VkMemoryDedicatedAllocateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryDedicatedAllocateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryDedicatedAllocateInfo( VULKAN_HPP_NAMESPACE::Image image_ = {}, + VULKAN_HPP_NAMESPACE::Buffer buffer_ = {} ) VULKAN_HPP_NOEXCEPT + : image( image_ ) + , buffer( buffer_ ) + {} + + VULKAN_HPP_CONSTEXPR + MemoryDedicatedAllocateInfo( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryDedicatedAllocateInfo( VkMemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryDedicatedAllocateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryDedicatedAllocateInfo & operator=( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryDedicatedAllocateInfo & operator=( VkMemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & + setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & + setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMemoryDedicatedAllocateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryDedicatedAllocateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image, buffer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryDedicatedAllocateInfo const & ) const = default; +#else + bool operator==( MemoryDedicatedAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( buffer == rhs.buffer ); +# endif + } + + bool operator!=( MemoryDedicatedAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryDedicatedAllocateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Image image = {}; + VULKAN_HPP_NAMESPACE::Buffer buffer = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo ) == + sizeof( VkMemoryDedicatedAllocateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "MemoryDedicatedAllocateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryDedicatedAllocateInfo; + }; + using MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo; + + struct MemoryDedicatedRequirements + { + using NativeType = VkMemoryDedicatedRequirements; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryDedicatedRequirements; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + MemoryDedicatedRequirements( VULKAN_HPP_NAMESPACE::Bool32 prefersDedicatedAllocation_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 requiresDedicatedAllocation_ = {} ) VULKAN_HPP_NOEXCEPT + : prefersDedicatedAllocation( prefersDedicatedAllocation_ ) + , requiresDedicatedAllocation( requiresDedicatedAllocation_ ) + {} + + VULKAN_HPP_CONSTEXPR + MemoryDedicatedRequirements( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryDedicatedRequirements( VkMemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryDedicatedRequirements( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryDedicatedRequirements & operator=( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryDedicatedRequirements & operator=( VkMemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkMemoryDedicatedRequirements const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryDedicatedRequirements &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, prefersDedicatedAllocation, requiresDedicatedAllocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryDedicatedRequirements const & ) const = default; +#else + bool operator==( MemoryDedicatedRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation ) && + ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation ); +# endif + } + + bool operator!=( MemoryDedicatedRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryDedicatedRequirements; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 prefersDedicatedAllocation = {}; + VULKAN_HPP_NAMESPACE::Bool32 requiresDedicatedAllocation = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements ) == + sizeof( VkMemoryDedicatedRequirements ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "MemoryDedicatedRequirements is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryDedicatedRequirements; + }; + using MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements; + + struct MemoryFdPropertiesKHR + { + using NativeType = VkMemoryFdPropertiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryFdPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryFdPropertiesKHR( uint32_t memoryTypeBits_ = {} ) VULKAN_HPP_NOEXCEPT + : memoryTypeBits( memoryTypeBits_ ) + {} + + VULKAN_HPP_CONSTEXPR MemoryFdPropertiesKHR( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryFdPropertiesKHR( VkMemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryFdPropertiesKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryFdPropertiesKHR & operator=( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryFdPropertiesKHR & operator=( VkMemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkMemoryFdPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryFdPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryTypeBits ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryFdPropertiesKHR const & ) const = default; +#else + bool operator==( MemoryFdPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits ); +# endif + } + + bool operator!=( MemoryFdPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryFdPropertiesKHR; + void * pNext = {}; + uint32_t memoryTypeBits = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryFdPropertiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryFdPropertiesKHR; + }; + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + struct MemoryGetAndroidHardwareBufferInfoANDROID + { + using NativeType = VkMemoryGetAndroidHardwareBufferInfoANDROID; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + MemoryGetAndroidHardwareBufferInfoANDROID( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {} ) VULKAN_HPP_NOEXCEPT + : memory( memory_ ) + {} + + VULKAN_HPP_CONSTEXPR MemoryGetAndroidHardwareBufferInfoANDROID( + MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetAndroidHardwareBufferInfoANDROID( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) + VULKAN_HPP_NOEXCEPT + : MemoryGetAndroidHardwareBufferInfoANDROID( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryGetAndroidHardwareBufferInfoANDROID & + operator=( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetAndroidHardwareBufferInfoANDROID & + operator=( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryGetAndroidHardwareBufferInfoANDROID & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetAndroidHardwareBufferInfoANDROID & + setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMemoryGetAndroidHardwareBufferInfoANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryGetAndroidHardwareBufferInfoANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryGetAndroidHardwareBufferInfoANDROID const & ) const = default; +# else + bool operator==( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ); +# endif + } + + bool operator!=( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID ) == + sizeof( VkMemoryGetAndroidHardwareBufferInfoANDROID ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "MemoryGetAndroidHardwareBufferInfoANDROID is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryGetAndroidHardwareBufferInfoANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + struct MemoryGetFdInfoKHR + { + using NativeType = VkMemoryGetFdInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetFdInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + MemoryGetFdInfoKHR( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT + : memory( memory_ ) + , handleType( handleType_ ) + {} + + VULKAN_HPP_CONSTEXPR MemoryGetFdInfoKHR( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryGetFdInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryGetFdInfoKHR & operator=( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetFdInfoKHR & operator=( VkMemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & + setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMemoryGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryGetFdInfoKHR const & ) const = default; +#else + bool operator==( MemoryGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && + ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( MemoryGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetFdInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryGetFdInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryGetFdInfoKHR; + }; + + struct MemoryGetRemoteAddressInfoNV + { + using NativeType = VkMemoryGetRemoteAddressInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetRemoteAddressInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryGetRemoteAddressInfoNV( + VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT + : memory( memory_ ) + , handleType( handleType_ ) + {} + + VULKAN_HPP_CONSTEXPR + MemoryGetRemoteAddressInfoNV( MemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetRemoteAddressInfoNV( VkMemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryGetRemoteAddressInfoNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryGetRemoteAddressInfoNV & operator=( MemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetRemoteAddressInfoNV & operator=( VkMemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV & + setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMemoryGetRemoteAddressInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryGetRemoteAddressInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryGetRemoteAddressInfoNV const & ) const = default; +#else + bool operator==( MemoryGetRemoteAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && + ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( MemoryGetRemoteAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetRemoteAddressInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV ) == + sizeof( VkMemoryGetRemoteAddressInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "MemoryGetRemoteAddressInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryGetRemoteAddressInfoNV; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct MemoryGetWin32HandleInfoKHR + { + using NativeType = VkMemoryGetWin32HandleInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryGetWin32HandleInfoKHR( + VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT + : memory( memory_ ) + , handleType( handleType_ ) + {} + + VULKAN_HPP_CONSTEXPR + MemoryGetWin32HandleInfoKHR( MemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryGetWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryGetWin32HandleInfoKHR & operator=( MemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetWin32HandleInfoKHR & operator=( VkMemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR & + setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMemoryGetWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryGetWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory, handleType ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryGetWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( MemoryGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && + ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( MemoryGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetWin32HandleInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR ) == + sizeof( VkMemoryGetWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "MemoryGetWin32HandleInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryGetWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct MemoryGetZirconHandleInfoFUCHSIA + { + using NativeType = VkMemoryGetZirconHandleInfoFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetZirconHandleInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryGetZirconHandleInfoFUCHSIA( + VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT + : memory( memory_ ) + , handleType( handleType_ ) + {} + + VULKAN_HPP_CONSTEXPR + MemoryGetZirconHandleInfoFUCHSIA( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetZirconHandleInfoFUCHSIA( VkMemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryGetZirconHandleInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryGetZirconHandleInfoFUCHSIA & + operator=( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetZirconHandleInfoFUCHSIA & operator=( VkMemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA & + setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMemoryGetZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryGetZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory, handleType ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryGetZirconHandleInfoFUCHSIA const & ) const = default; +# else + bool operator==( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && + ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetZirconHandleInfoFUCHSIA; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA ) == + sizeof( VkMemoryGetZirconHandleInfoFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "MemoryGetZirconHandleInfoFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryGetZirconHandleInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + struct MemoryHeap + { + using NativeType = VkMemoryHeap; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryHeap( VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, + VULKAN_HPP_NAMESPACE::MemoryHeapFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT + : size( size_ ) + , flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR MemoryHeap( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryHeap( VkMemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryHeap( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryHeap & operator=( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryHeap & operator=( VkMemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkMemoryHeap const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryHeap &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( size, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryHeap const & ) const = default; +#else + bool operator==( MemoryHeap const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( size == rhs.size ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( MemoryHeap const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DeviceSize size = {}; + VULKAN_HPP_NAMESPACE::MemoryHeapFlags flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryHeap ) == sizeof( VkMemoryHeap ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryHeap is not nothrow_move_constructible!" ); + + struct MemoryHostPointerPropertiesEXT + { + using NativeType = VkMemoryHostPointerPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryHostPointerPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryHostPointerPropertiesEXT( uint32_t memoryTypeBits_ = {} ) VULKAN_HPP_NOEXCEPT + : memoryTypeBits( memoryTypeBits_ ) + {} + + VULKAN_HPP_CONSTEXPR + MemoryHostPointerPropertiesEXT( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryHostPointerPropertiesEXT( VkMemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryHostPointerPropertiesEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryHostPointerPropertiesEXT & + operator=( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryHostPointerPropertiesEXT & operator=( VkMemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkMemoryHostPointerPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryHostPointerPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryTypeBits ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryHostPointerPropertiesEXT const & ) const = default; +#else + bool operator==( MemoryHostPointerPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits ); +# endif + } + + bool operator!=( MemoryHostPointerPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryHostPointerPropertiesEXT; + void * pNext = {}; + uint32_t memoryTypeBits = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT ) == + sizeof( VkMemoryHostPointerPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "MemoryHostPointerPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryHostPointerPropertiesEXT; + }; + + struct MemoryOpaqueCaptureAddressAllocateInfo + { + using NativeType = VkMemoryOpaqueCaptureAddressAllocateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eMemoryOpaqueCaptureAddressAllocateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + MemoryOpaqueCaptureAddressAllocateInfo( uint64_t opaqueCaptureAddress_ = {} ) VULKAN_HPP_NOEXCEPT + : opaqueCaptureAddress( opaqueCaptureAddress_ ) + {} + + VULKAN_HPP_CONSTEXPR MemoryOpaqueCaptureAddressAllocateInfo( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + MemoryOpaqueCaptureAddressAllocateInfo( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryOpaqueCaptureAddressAllocateInfo( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryOpaqueCaptureAddressAllocateInfo & + operator=( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryOpaqueCaptureAddressAllocateInfo & + operator=( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo & + setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) VULKAN_HPP_NOEXCEPT + { + opaqueCaptureAddress = opaqueCaptureAddress_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMemoryOpaqueCaptureAddressAllocateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryOpaqueCaptureAddressAllocateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, opaqueCaptureAddress ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryOpaqueCaptureAddressAllocateInfo const & ) const = default; +#else + bool operator==( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( opaqueCaptureAddress == rhs.opaqueCaptureAddress ); +# endif + } + + bool operator!=( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryOpaqueCaptureAddressAllocateInfo; + const void * pNext = {}; + uint64_t opaqueCaptureAddress = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo ) == + sizeof( VkMemoryOpaqueCaptureAddressAllocateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "MemoryOpaqueCaptureAddressAllocateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryOpaqueCaptureAddressAllocateInfo; + }; + using MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo; + + struct MemoryPriorityAllocateInfoEXT + { + using NativeType = VkMemoryPriorityAllocateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryPriorityAllocateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryPriorityAllocateInfoEXT( float priority_ = {} ) VULKAN_HPP_NOEXCEPT + : priority( priority_ ) + {} + + VULKAN_HPP_CONSTEXPR + MemoryPriorityAllocateInfoEXT( MemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryPriorityAllocateInfoEXT( VkMemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryPriorityAllocateInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryPriorityAllocateInfoEXT & + operator=( MemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryPriorityAllocateInfoEXT & operator=( VkMemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryPriorityAllocateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryPriorityAllocateInfoEXT & setPriority( float priority_ ) VULKAN_HPP_NOEXCEPT + { + priority = priority_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMemoryPriorityAllocateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryPriorityAllocateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, priority ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryPriorityAllocateInfoEXT const & ) const = default; +#else + bool operator==( MemoryPriorityAllocateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( priority == rhs.priority ); +# endif + } + + bool operator!=( MemoryPriorityAllocateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryPriorityAllocateInfoEXT; + const void * pNext = {}; + float priority = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT ) == + sizeof( VkMemoryPriorityAllocateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "MemoryPriorityAllocateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryPriorityAllocateInfoEXT; + }; + + struct MemoryRequirements + { + using NativeType = VkMemoryRequirements; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryRequirements( VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize alignment_ = {}, + uint32_t memoryTypeBits_ = {} ) VULKAN_HPP_NOEXCEPT + : size( size_ ) + , alignment( alignment_ ) + , memoryTypeBits( memoryTypeBits_ ) + {} + + VULKAN_HPP_CONSTEXPR MemoryRequirements( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryRequirements( VkMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryRequirements( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryRequirements & operator=( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryRequirements & operator=( VkMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryRequirements &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( size, alignment, memoryTypeBits ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryRequirements const & ) const = default; +#else + bool operator==( MemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( size == rhs.size ) && ( alignment == rhs.alignment ) && ( memoryTypeBits == rhs.memoryTypeBits ); +# endif + } + + bool operator!=( MemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DeviceSize size = {}; + VULKAN_HPP_NAMESPACE::DeviceSize alignment = {}; + uint32_t memoryTypeBits = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryRequirements ) == sizeof( VkMemoryRequirements ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryRequirements is not nothrow_move_constructible!" ); + + struct MemoryRequirements2 + { + using NativeType = VkMemoryRequirements2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryRequirements2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + MemoryRequirements2( VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements_ = {} ) VULKAN_HPP_NOEXCEPT + : memoryRequirements( memoryRequirements_ ) + {} + + VULKAN_HPP_CONSTEXPR MemoryRequirements2( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryRequirements2( VkMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryRequirements2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryRequirements2 & operator=( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryRequirements2 & operator=( VkMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkMemoryRequirements2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryRequirements2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryRequirements ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryRequirements2 const & ) const = default; +#else + bool operator==( MemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryRequirements == rhs.memoryRequirements ); +# endif + } + + bool operator!=( MemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryRequirements2; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryRequirements2 ) == sizeof( VkMemoryRequirements2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryRequirements2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryRequirements2; + }; + using MemoryRequirements2KHR = MemoryRequirements2; + + struct MemoryType + { + using NativeType = VkMemoryType; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryType( VULKAN_HPP_NAMESPACE::MemoryPropertyFlags propertyFlags_ = {}, + uint32_t heapIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : propertyFlags( propertyFlags_ ) + , heapIndex( heapIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR MemoryType( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryType( VkMemoryType const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryType( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryType & operator=( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryType & operator=( VkMemoryType const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkMemoryType const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryType &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( propertyFlags, heapIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryType const & ) const = default; +#else + bool operator==( MemoryType const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( propertyFlags == rhs.propertyFlags ) && ( heapIndex == rhs.heapIndex ); +# endif + } + + bool operator!=( MemoryType const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::MemoryPropertyFlags propertyFlags = {}; + uint32_t heapIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryType ) == sizeof( VkMemoryType ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryType is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct MemoryWin32HandlePropertiesKHR + { + using NativeType = VkMemoryWin32HandlePropertiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryWin32HandlePropertiesKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryWin32HandlePropertiesKHR( uint32_t memoryTypeBits_ = {} ) VULKAN_HPP_NOEXCEPT + : memoryTypeBits( memoryTypeBits_ ) + {} + + VULKAN_HPP_CONSTEXPR + MemoryWin32HandlePropertiesKHR( MemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryWin32HandlePropertiesKHR( VkMemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryWin32HandlePropertiesKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryWin32HandlePropertiesKHR & + operator=( MemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryWin32HandlePropertiesKHR & operator=( VkMemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkMemoryWin32HandlePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryWin32HandlePropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryTypeBits ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryWin32HandlePropertiesKHR const & ) const = default; +# else + bool operator==( MemoryWin32HandlePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits ); +# endif + } + + bool operator!=( MemoryWin32HandlePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryWin32HandlePropertiesKHR; + void * pNext = {}; + uint32_t memoryTypeBits = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR ) == + sizeof( VkMemoryWin32HandlePropertiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "MemoryWin32HandlePropertiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryWin32HandlePropertiesKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct MemoryZirconHandlePropertiesFUCHSIA + { + using NativeType = VkMemoryZirconHandlePropertiesFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eMemoryZirconHandlePropertiesFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryZirconHandlePropertiesFUCHSIA( uint32_t memoryTypeBits_ = {} ) VULKAN_HPP_NOEXCEPT + : memoryTypeBits( memoryTypeBits_ ) + {} + + VULKAN_HPP_CONSTEXPR MemoryZirconHandlePropertiesFUCHSIA( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + MemoryZirconHandlePropertiesFUCHSIA( VkMemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryZirconHandlePropertiesFUCHSIA( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryZirconHandlePropertiesFUCHSIA & + operator=( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryZirconHandlePropertiesFUCHSIA & + operator=( VkMemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkMemoryZirconHandlePropertiesFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMemoryZirconHandlePropertiesFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryTypeBits ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryZirconHandlePropertiesFUCHSIA const & ) const = default; +# else + bool operator==( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits ); +# endif + } + + bool operator!=( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryZirconHandlePropertiesFUCHSIA; + void * pNext = {}; + uint32_t memoryTypeBits = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA ) == + sizeof( VkMemoryZirconHandlePropertiesFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "MemoryZirconHandlePropertiesFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MemoryZirconHandlePropertiesFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + struct MetalSurfaceCreateInfoEXT + { + using NativeType = VkMetalSurfaceCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMetalSurfaceCreateInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MetalSurfaceCreateInfoEXT( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags_ = {}, + const CAMetalLayer * pLayer_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , pLayer( pLayer_ ) + {} + + VULKAN_HPP_CONSTEXPR + MetalSurfaceCreateInfoEXT( MetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MetalSurfaceCreateInfoEXT( VkMetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MetalSurfaceCreateInfoEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MetalSurfaceCreateInfoEXT & operator=( MetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MetalSurfaceCreateInfoEXT & operator=( VkMetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & setPLayer( const CAMetalLayer * pLayer_ ) VULKAN_HPP_NOEXCEPT + { + pLayer = pLayer_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMetalSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMetalSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pLayer ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MetalSurfaceCreateInfoEXT const & ) const = default; +# else + bool operator==( MetalSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pLayer == rhs.pLayer ); +# endif + } + + bool operator!=( MetalSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMetalSurfaceCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags = {}; + const CAMetalLayer * pLayer = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT ) == + sizeof( VkMetalSurfaceCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MetalSurfaceCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MetalSurfaceCreateInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + struct MultiDrawIndexedInfoEXT + { + using NativeType = VkMultiDrawIndexedInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MultiDrawIndexedInfoEXT( uint32_t firstIndex_ = {}, + uint32_t indexCount_ = {}, + int32_t vertexOffset_ = {} ) VULKAN_HPP_NOEXCEPT + : firstIndex( firstIndex_ ) + , indexCount( indexCount_ ) + , vertexOffset( vertexOffset_ ) + {} + + VULKAN_HPP_CONSTEXPR MultiDrawIndexedInfoEXT( MultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MultiDrawIndexedInfoEXT( VkMultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MultiDrawIndexedInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MultiDrawIndexedInfoEXT & operator=( MultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MultiDrawIndexedInfoEXT & operator=( VkMultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT & setFirstIndex( uint32_t firstIndex_ ) VULKAN_HPP_NOEXCEPT + { + firstIndex = firstIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT + { + indexCount = indexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT & setVertexOffset( int32_t vertexOffset_ ) VULKAN_HPP_NOEXCEPT + { + vertexOffset = vertexOffset_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMultiDrawIndexedInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMultiDrawIndexedInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( firstIndex, indexCount, vertexOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MultiDrawIndexedInfoEXT const & ) const = default; +#else + bool operator==( MultiDrawIndexedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( firstIndex == rhs.firstIndex ) && ( indexCount == rhs.indexCount ) && + ( vertexOffset == rhs.vertexOffset ); +# endif + } + + bool operator!=( MultiDrawIndexedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t firstIndex = {}; + uint32_t indexCount = {}; + int32_t vertexOffset = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT ) == + sizeof( VkMultiDrawIndexedInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MultiDrawIndexedInfoEXT is not nothrow_move_constructible!" ); + + struct MultiDrawInfoEXT + { + using NativeType = VkMultiDrawInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MultiDrawInfoEXT( uint32_t firstVertex_ = {}, uint32_t vertexCount_ = {} ) VULKAN_HPP_NOEXCEPT + : firstVertex( firstVertex_ ) + , vertexCount( vertexCount_ ) + {} + + VULKAN_HPP_CONSTEXPR MultiDrawInfoEXT( MultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MultiDrawInfoEXT( VkMultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MultiDrawInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MultiDrawInfoEXT & operator=( MultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MultiDrawInfoEXT & operator=( VkMultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MultiDrawInfoEXT & setFirstVertex( uint32_t firstVertex_ ) VULKAN_HPP_NOEXCEPT + { + firstVertex = firstVertex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiDrawInfoEXT & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT + { + vertexCount = vertexCount_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMultiDrawInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMultiDrawInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( firstVertex, vertexCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MultiDrawInfoEXT const & ) const = default; +#else + bool operator==( MultiDrawInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( firstVertex == rhs.firstVertex ) && ( vertexCount == rhs.vertexCount ); +# endif + } + + bool operator!=( MultiDrawInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t firstVertex = {}; + uint32_t vertexCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT ) == sizeof( VkMultiDrawInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MultiDrawInfoEXT is not nothrow_move_constructible!" ); + + struct MultisamplePropertiesEXT + { + using NativeType = VkMultisamplePropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMultisamplePropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + MultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize_ = {} ) VULKAN_HPP_NOEXCEPT + : maxSampleLocationGridSize( maxSampleLocationGridSize_ ) + {} + + VULKAN_HPP_CONSTEXPR MultisamplePropertiesEXT( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MultisamplePropertiesEXT( VkMultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MultisamplePropertiesEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MultisamplePropertiesEXT & operator=( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MultisamplePropertiesEXT & operator=( VkMultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkMultisamplePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMultisamplePropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxSampleLocationGridSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MultisamplePropertiesEXT const & ) const = default; +#else + bool operator==( MultisamplePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize ); +# endif + } + + bool operator!=( MultisamplePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMultisamplePropertiesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT ) == + sizeof( VkMultisamplePropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MultisamplePropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MultisamplePropertiesEXT; + }; + + struct MultiviewPerViewAttributesInfoNVX + { + using NativeType = VkMultiviewPerViewAttributesInfoNVX; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eMultiviewPerViewAttributesInfoNVX; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MultiviewPerViewAttributesInfoNVX( + VULKAN_HPP_NAMESPACE::Bool32 perViewAttributes_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 perViewAttributesPositionXOnly_ = {} ) VULKAN_HPP_NOEXCEPT + : perViewAttributes( perViewAttributes_ ) + , perViewAttributesPositionXOnly( perViewAttributesPositionXOnly_ ) + {} + + VULKAN_HPP_CONSTEXPR + MultiviewPerViewAttributesInfoNVX( MultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MultiviewPerViewAttributesInfoNVX( VkMultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + : MultiviewPerViewAttributesInfoNVX( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MultiviewPerViewAttributesInfoNVX & + operator=( MultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MultiviewPerViewAttributesInfoNVX & operator=( VkMultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX & + setPerViewAttributes( VULKAN_HPP_NAMESPACE::Bool32 perViewAttributes_ ) VULKAN_HPP_NOEXCEPT + { + perViewAttributes = perViewAttributes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX & setPerViewAttributesPositionXOnly( + VULKAN_HPP_NAMESPACE::Bool32 perViewAttributesPositionXOnly_ ) VULKAN_HPP_NOEXCEPT + { + perViewAttributesPositionXOnly = perViewAttributesPositionXOnly_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMultiviewPerViewAttributesInfoNVX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMultiviewPerViewAttributesInfoNVX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, perViewAttributes, perViewAttributesPositionXOnly ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MultiviewPerViewAttributesInfoNVX const & ) const = default; +#else + bool operator==( MultiviewPerViewAttributesInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( perViewAttributes == rhs.perViewAttributes ) && + ( perViewAttributesPositionXOnly == rhs.perViewAttributesPositionXOnly ); +# endif + } + + bool operator!=( MultiviewPerViewAttributesInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMultiviewPerViewAttributesInfoNVX; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 perViewAttributes = {}; + VULKAN_HPP_NAMESPACE::Bool32 perViewAttributesPositionXOnly = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX ) == + sizeof( VkMultiviewPerViewAttributesInfoNVX ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "MultiviewPerViewAttributesInfoNVX is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MultiviewPerViewAttributesInfoNVX; + }; + + struct MutableDescriptorTypeListVALVE + { + using NativeType = VkMutableDescriptorTypeListVALVE; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MutableDescriptorTypeListVALVE( + uint32_t descriptorTypeCount_ = {}, + const VULKAN_HPP_NAMESPACE::DescriptorType * pDescriptorTypes_ = {} ) VULKAN_HPP_NOEXCEPT + : descriptorTypeCount( descriptorTypeCount_ ) + , pDescriptorTypes( pDescriptorTypes_ ) + {} + + VULKAN_HPP_CONSTEXPR + MutableDescriptorTypeListVALVE( MutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MutableDescriptorTypeListVALVE( VkMutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + : MutableDescriptorTypeListVALVE( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + MutableDescriptorTypeListVALVE( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + descriptorTypes_ ) + : descriptorTypeCount( static_cast( descriptorTypes_.size() ) ) + , pDescriptorTypes( descriptorTypes_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MutableDescriptorTypeListVALVE & + operator=( MutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MutableDescriptorTypeListVALVE & operator=( VkMutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeListVALVE & + setDescriptorTypeCount( uint32_t descriptorTypeCount_ ) VULKAN_HPP_NOEXCEPT + { + descriptorTypeCount = descriptorTypeCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeListVALVE & + setPDescriptorTypes( const VULKAN_HPP_NAMESPACE::DescriptorType * pDescriptorTypes_ ) VULKAN_HPP_NOEXCEPT + { + pDescriptorTypes = pDescriptorTypes_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + MutableDescriptorTypeListVALVE & setDescriptorTypes( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + descriptorTypes_ ) VULKAN_HPP_NOEXCEPT + { + descriptorTypeCount = static_cast( descriptorTypes_.size() ); + pDescriptorTypes = descriptorTypes_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMutableDescriptorTypeListVALVE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMutableDescriptorTypeListVALVE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( descriptorTypeCount, pDescriptorTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MutableDescriptorTypeListVALVE const & ) const = default; +#else + bool operator==( MutableDescriptorTypeListVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( descriptorTypeCount == rhs.descriptorTypeCount ) && ( pDescriptorTypes == rhs.pDescriptorTypes ); +# endif + } + + bool operator!=( MutableDescriptorTypeListVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t descriptorTypeCount = {}; + const VULKAN_HPP_NAMESPACE::DescriptorType * pDescriptorTypes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE ) == + sizeof( VkMutableDescriptorTypeListVALVE ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "MutableDescriptorTypeListVALVE is not nothrow_move_constructible!" ); + + struct MutableDescriptorTypeCreateInfoVALVE + { + using NativeType = VkMutableDescriptorTypeCreateInfoVALVE; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eMutableDescriptorTypeCreateInfoVALVE; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MutableDescriptorTypeCreateInfoVALVE( + uint32_t mutableDescriptorTypeListCount_ = {}, + const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE * pMutableDescriptorTypeLists_ = {} ) + VULKAN_HPP_NOEXCEPT + : mutableDescriptorTypeListCount( mutableDescriptorTypeListCount_ ) + , pMutableDescriptorTypeLists( pMutableDescriptorTypeLists_ ) + {} + + VULKAN_HPP_CONSTEXPR MutableDescriptorTypeCreateInfoVALVE( MutableDescriptorTypeCreateInfoVALVE const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + MutableDescriptorTypeCreateInfoVALVE( VkMutableDescriptorTypeCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + : MutableDescriptorTypeCreateInfoVALVE( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + MutableDescriptorTypeCreateInfoVALVE( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + mutableDescriptorTypeLists_ ) + : mutableDescriptorTypeListCount( static_cast( mutableDescriptorTypeLists_.size() ) ) + , pMutableDescriptorTypeLists( mutableDescriptorTypeLists_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MutableDescriptorTypeCreateInfoVALVE & + operator=( MutableDescriptorTypeCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MutableDescriptorTypeCreateInfoVALVE & + operator=( VkMutableDescriptorTypeCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoVALVE & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoVALVE & + setMutableDescriptorTypeListCount( uint32_t mutableDescriptorTypeListCount_ ) VULKAN_HPP_NOEXCEPT + { + mutableDescriptorTypeListCount = mutableDescriptorTypeListCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoVALVE & setPMutableDescriptorTypeLists( + const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE * pMutableDescriptorTypeLists_ ) VULKAN_HPP_NOEXCEPT + { + pMutableDescriptorTypeLists = pMutableDescriptorTypeLists_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + MutableDescriptorTypeCreateInfoVALVE & setMutableDescriptorTypeLists( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + mutableDescriptorTypeLists_ ) VULKAN_HPP_NOEXCEPT + { + mutableDescriptorTypeListCount = static_cast( mutableDescriptorTypeLists_.size() ); + pMutableDescriptorTypeLists = mutableDescriptorTypeLists_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkMutableDescriptorTypeCreateInfoVALVE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkMutableDescriptorTypeCreateInfoVALVE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, mutableDescriptorTypeListCount, pMutableDescriptorTypeLists ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MutableDescriptorTypeCreateInfoVALVE const & ) const = default; +#else + bool operator==( MutableDescriptorTypeCreateInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( mutableDescriptorTypeListCount == rhs.mutableDescriptorTypeListCount ) && + ( pMutableDescriptorTypeLists == rhs.pMutableDescriptorTypeLists ); +# endif + } + + bool operator!=( MutableDescriptorTypeCreateInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMutableDescriptorTypeCreateInfoVALVE; + const void * pNext = {}; + uint32_t mutableDescriptorTypeListCount = {}; + const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE * pMutableDescriptorTypeLists = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE ) == + sizeof( VkMutableDescriptorTypeCreateInfoVALVE ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "MutableDescriptorTypeCreateInfoVALVE is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = MutableDescriptorTypeCreateInfoVALVE; + }; + + struct PastPresentationTimingGOOGLE + { + using NativeType = VkPastPresentationTimingGOOGLE; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PastPresentationTimingGOOGLE( uint32_t presentID_ = {}, + uint64_t desiredPresentTime_ = {}, + uint64_t actualPresentTime_ = {}, + uint64_t earliestPresentTime_ = {}, + uint64_t presentMargin_ = {} ) VULKAN_HPP_NOEXCEPT + : presentID( presentID_ ) + , desiredPresentTime( desiredPresentTime_ ) + , actualPresentTime( actualPresentTime_ ) + , earliestPresentTime( earliestPresentTime_ ) + , presentMargin( presentMargin_ ) + {} + + VULKAN_HPP_CONSTEXPR + PastPresentationTimingGOOGLE( PastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT + : PastPresentationTimingGOOGLE( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PastPresentationTimingGOOGLE & operator=( PastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PastPresentationTimingGOOGLE & operator=( VkPastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPastPresentationTimingGOOGLE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPastPresentationTimingGOOGLE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( presentID, desiredPresentTime, actualPresentTime, earliestPresentTime, presentMargin ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PastPresentationTimingGOOGLE const & ) const = default; +#else + bool operator==( PastPresentationTimingGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( presentID == rhs.presentID ) && ( desiredPresentTime == rhs.desiredPresentTime ) && + ( actualPresentTime == rhs.actualPresentTime ) && ( earliestPresentTime == rhs.earliestPresentTime ) && + ( presentMargin == rhs.presentMargin ); +# endif + } + + bool operator!=( PastPresentationTimingGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t presentID = {}; + uint64_t desiredPresentTime = {}; + uint64_t actualPresentTime = {}; + uint64_t earliestPresentTime = {}; + uint64_t presentMargin = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE ) == + sizeof( VkPastPresentationTimingGOOGLE ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PastPresentationTimingGOOGLE is not nothrow_move_constructible!" ); + + struct PerformanceConfigurationAcquireInfoINTEL + { + using NativeType = VkPerformanceConfigurationAcquireInfoINTEL; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePerformanceConfigurationAcquireInfoINTEL; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PerformanceConfigurationAcquireInfoINTEL( + VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type_ = + VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated ) + VULKAN_HPP_NOEXCEPT : type( type_ ) + {} + + VULKAN_HPP_CONSTEXPR PerformanceConfigurationAcquireInfoINTEL( + PerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceConfigurationAcquireInfoINTEL( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) + VULKAN_HPP_NOEXCEPT + : PerformanceConfigurationAcquireInfoINTEL( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PerformanceConfigurationAcquireInfoINTEL & + operator=( PerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceConfigurationAcquireInfoINTEL & + operator=( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceConfigurationAcquireInfoINTEL & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceConfigurationAcquireInfoINTEL & + setType( VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPerformanceConfigurationAcquireInfoINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPerformanceConfigurationAcquireInfoINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerformanceConfigurationAcquireInfoINTEL const & ) const = default; +#else + bool operator==( PerformanceConfigurationAcquireInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ); +# endif + } + + bool operator!=( PerformanceConfigurationAcquireInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceConfigurationAcquireInfoINTEL; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type = + VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL ) == + sizeof( VkPerformanceConfigurationAcquireInfoINTEL ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PerformanceConfigurationAcquireInfoINTEL is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PerformanceConfigurationAcquireInfoINTEL; + }; + + struct PerformanceCounterDescriptionKHR + { + using NativeType = VkPerformanceCounterDescriptionKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceCounterDescriptionKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionKHR( + VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR flags_ = {}, + std::array const & name_ = {}, + std::array const & category_ = {}, + std::array const & description_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , name( name_ ) + , category( category_ ) + , description( description_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + PerformanceCounterDescriptionKHR( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceCounterDescriptionKHR( VkPerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceCounterDescriptionKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PerformanceCounterDescriptionKHR & + operator=( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceCounterDescriptionKHR & operator=( VkPerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPerformanceCounterDescriptionKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPerformanceCounterDescriptionKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, name, category, description ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerformanceCounterDescriptionKHR const & ) const = default; +#else + bool operator==( PerformanceCounterDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( name == rhs.name ) && + ( category == rhs.category ) && ( description == rhs.description ); +# endif + } + + bool operator!=( PerformanceCounterDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceCounterDescriptionKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR flags = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D name = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D category = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D description = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR ) == + sizeof( VkPerformanceCounterDescriptionKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PerformanceCounterDescriptionKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PerformanceCounterDescriptionKHR; + }; + + struct PerformanceCounterKHR + { + using NativeType = VkPerformanceCounterKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceCounterKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterKHR( + VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR unit_ = VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR::eGeneric, + VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR scope_ = + VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR::eCommandBuffer, + VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR storage_ = + VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR::eInt32, + std::array const & uuid_ = {} ) VULKAN_HPP_NOEXCEPT + : unit( unit_ ) + , scope( scope_ ) + , storage( storage_ ) + , uuid( uuid_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterKHR( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceCounterKHR( VkPerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceCounterKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PerformanceCounterKHR & operator=( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceCounterKHR & operator=( VkPerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPerformanceCounterKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPerformanceCounterKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, unit, scope, storage, uuid ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerformanceCounterKHR const & ) const = default; +#else + bool operator==( PerformanceCounterKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( unit == rhs.unit ) && ( scope == rhs.scope ) && + ( storage == rhs.storage ) && ( uuid == rhs.uuid ); +# endif + } + + bool operator!=( PerformanceCounterKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceCounterKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR unit = VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR::eGeneric; + VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR scope = + VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR::eCommandBuffer; + VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR storage = + VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR::eInt32; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D uuid = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceCounterKHR ) == sizeof( VkPerformanceCounterKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceCounterKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PerformanceCounterKHR; + }; + + union PerformanceCounterResultKHR + { + using NativeType = VkPerformanceCounterResultKHR; +#if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( int32_t int32_ = {} ) : int32( int32_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( int64_t int64_ ) : int64( int64_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( uint32_t uint32_ ) : uint32( uint32_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( uint64_t uint64_ ) : uint64( uint64_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( float float32_ ) : float32( float32_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( double float64_ ) : float64( float64_ ) {} +#endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setInt32( int32_t int32_ ) VULKAN_HPP_NOEXCEPT + { + int32 = int32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setInt64( int64_t int64_ ) VULKAN_HPP_NOEXCEPT + { + int64 = int64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setUint32( uint32_t uint32_ ) VULKAN_HPP_NOEXCEPT + { + uint32 = uint32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setUint64( uint64_t uint64_ ) VULKAN_HPP_NOEXCEPT + { + uint64 = uint64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setFloat32( float float32_ ) VULKAN_HPP_NOEXCEPT + { + float32 = float32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setFloat64( double float64_ ) VULKAN_HPP_NOEXCEPT + { + float64 = float64_; + return *this; + } +#endif /*VULKAN_HPP_NO_UNION_SETTERS*/ + + operator VkPerformanceCounterResultKHR const &() const + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceCounterResultKHR &() + { + return *reinterpret_cast( this ); + } + + int32_t int32; + int64_t int64; + uint32_t uint32; + uint64_t uint64; + float float32; + double float64; + }; + + struct PerformanceMarkerInfoINTEL + { + using NativeType = VkPerformanceMarkerInfoINTEL; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceMarkerInfoINTEL; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PerformanceMarkerInfoINTEL( uint64_t marker_ = {} ) VULKAN_HPP_NOEXCEPT : marker( marker_ ) {} + + VULKAN_HPP_CONSTEXPR + PerformanceMarkerInfoINTEL( PerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceMarkerInfoINTEL( VkPerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceMarkerInfoINTEL( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PerformanceMarkerInfoINTEL & operator=( PerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceMarkerInfoINTEL & operator=( VkPerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceMarkerInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceMarkerInfoINTEL & setMarker( uint64_t marker_ ) VULKAN_HPP_NOEXCEPT + { + marker = marker_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPerformanceMarkerInfoINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPerformanceMarkerInfoINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, marker ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerformanceMarkerInfoINTEL const & ) const = default; +#else + bool operator==( PerformanceMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( marker == rhs.marker ); +# endif + } + + bool operator!=( PerformanceMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceMarkerInfoINTEL; + const void * pNext = {}; + uint64_t marker = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL ) == + sizeof( VkPerformanceMarkerInfoINTEL ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceMarkerInfoINTEL is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PerformanceMarkerInfoINTEL; + }; + + struct PerformanceOverrideInfoINTEL + { + using NativeType = VkPerformanceOverrideInfoINTEL; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceOverrideInfoINTEL; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PerformanceOverrideInfoINTEL( VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type_ = + VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL::eNullHardware, + VULKAN_HPP_NAMESPACE::Bool32 enable_ = {}, + uint64_t parameter_ = {} ) VULKAN_HPP_NOEXCEPT + : type( type_ ) + , enable( enable_ ) + , parameter( parameter_ ) + {} + + VULKAN_HPP_CONSTEXPR + PerformanceOverrideInfoINTEL( PerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceOverrideInfoINTEL( VkPerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceOverrideInfoINTEL( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PerformanceOverrideInfoINTEL & operator=( PerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceOverrideInfoINTEL & operator=( VkPerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & + setType( VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & + setEnable( VULKAN_HPP_NAMESPACE::Bool32 enable_ ) VULKAN_HPP_NOEXCEPT + { + enable = enable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setParameter( uint64_t parameter_ ) VULKAN_HPP_NOEXCEPT + { + parameter = parameter_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPerformanceOverrideInfoINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPerformanceOverrideInfoINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, enable, parameter ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerformanceOverrideInfoINTEL const & ) const = default; +#else + bool operator==( PerformanceOverrideInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( enable == rhs.enable ) && + ( parameter == rhs.parameter ); +# endif + } + + bool operator!=( PerformanceOverrideInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceOverrideInfoINTEL; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type = + VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL::eNullHardware; + VULKAN_HPP_NAMESPACE::Bool32 enable = {}; + uint64_t parameter = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL ) == + sizeof( VkPerformanceOverrideInfoINTEL ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PerformanceOverrideInfoINTEL is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PerformanceOverrideInfoINTEL; + }; + + struct PerformanceQuerySubmitInfoKHR + { + using NativeType = VkPerformanceQuerySubmitInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceQuerySubmitInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PerformanceQuerySubmitInfoKHR( uint32_t counterPassIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : counterPassIndex( counterPassIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR + PerformanceQuerySubmitInfoKHR( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceQuerySubmitInfoKHR( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceQuerySubmitInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PerformanceQuerySubmitInfoKHR & + operator=( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceQuerySubmitInfoKHR & operator=( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR & + setCounterPassIndex( uint32_t counterPassIndex_ ) VULKAN_HPP_NOEXCEPT + { + counterPassIndex = counterPassIndex_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPerformanceQuerySubmitInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPerformanceQuerySubmitInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, counterPassIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerformanceQuerySubmitInfoKHR const & ) const = default; +#else + bool operator==( PerformanceQuerySubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( counterPassIndex == rhs.counterPassIndex ); +# endif + } + + bool operator!=( PerformanceQuerySubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceQuerySubmitInfoKHR; + const void * pNext = {}; + uint32_t counterPassIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR ) == + sizeof( VkPerformanceQuerySubmitInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PerformanceQuerySubmitInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PerformanceQuerySubmitInfoKHR; + }; + + struct PerformanceStreamMarkerInfoINTEL + { + using NativeType = VkPerformanceStreamMarkerInfoINTEL; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceStreamMarkerInfoINTEL; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PerformanceStreamMarkerInfoINTEL( uint32_t marker_ = {} ) VULKAN_HPP_NOEXCEPT + : marker( marker_ ) + {} + + VULKAN_HPP_CONSTEXPR + PerformanceStreamMarkerInfoINTEL( PerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceStreamMarkerInfoINTEL( VkPerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceStreamMarkerInfoINTEL( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PerformanceStreamMarkerInfoINTEL & + operator=( PerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceStreamMarkerInfoINTEL & operator=( VkPerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceStreamMarkerInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceStreamMarkerInfoINTEL & setMarker( uint32_t marker_ ) VULKAN_HPP_NOEXCEPT + { + marker = marker_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPerformanceStreamMarkerInfoINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPerformanceStreamMarkerInfoINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, marker ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerformanceStreamMarkerInfoINTEL const & ) const = default; +#else + bool operator==( PerformanceStreamMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( marker == rhs.marker ); +# endif + } + + bool operator!=( PerformanceStreamMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceStreamMarkerInfoINTEL; + const void * pNext = {}; + uint32_t marker = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL ) == + sizeof( VkPerformanceStreamMarkerInfoINTEL ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PerformanceStreamMarkerInfoINTEL is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PerformanceStreamMarkerInfoINTEL; + }; + + union PerformanceValueDataINTEL + { + using NativeType = VkPerformanceValueDataINTEL; +#if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( uint32_t value32_ = {} ) : value32( value32_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( uint64_t value64_ ) : value64( value64_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( float valueFloat_ ) : valueFloat( valueFloat_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( const char * valueString_ ) : valueString( valueString_ ) {} +#endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValue32( uint32_t value32_ ) VULKAN_HPP_NOEXCEPT + { + value32 = value32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValue64( uint64_t value64_ ) VULKAN_HPP_NOEXCEPT + { + value64 = value64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValueFloat( float valueFloat_ ) VULKAN_HPP_NOEXCEPT + { + valueFloat = valueFloat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & + setValueBool( VULKAN_HPP_NAMESPACE::Bool32 valueBool_ ) VULKAN_HPP_NOEXCEPT + { + valueBool = valueBool_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValueString( const char * valueString_ ) VULKAN_HPP_NOEXCEPT + { + valueString = valueString_; + return *this; + } +#endif /*VULKAN_HPP_NO_UNION_SETTERS*/ + + operator VkPerformanceValueDataINTEL const &() const + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceValueDataINTEL &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + uint32_t value32; + uint64_t value64; + float valueFloat; + VULKAN_HPP_NAMESPACE::Bool32 valueBool; + const char * valueString; +#else + uint32_t value32; + uint64_t value64; + float valueFloat; + VkBool32 valueBool; + const char * valueString; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + + struct PerformanceValueINTEL + { + using NativeType = VkPerformanceValueINTEL; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceValueINTEL( + VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL type_ = VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL::eUint32, + VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL data_ = {} ) VULKAN_HPP_NOEXCEPT + : type( type_ ) + , data( data_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueINTEL( PerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceValueINTEL( VkPerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceValueINTEL( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PerformanceValueINTEL & operator=( PerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceValueINTEL & operator=( VkPerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceValueINTEL & + setType( VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueINTEL & + setData( VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL const & data_ ) VULKAN_HPP_NOEXCEPT + { + data = data_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPerformanceValueINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPerformanceValueINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( type, data ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL type = VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL::eUint32; + VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL data = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceValueINTEL ) == sizeof( VkPerformanceValueINTEL ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceValueINTEL is not nothrow_move_constructible!" ); + + struct PhysicalDevice16BitStorageFeatures + { + using NativeType = VkPhysicalDevice16BitStorageFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevice16BitStorageFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDevice16BitStorageFeatures( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ = {} ) VULKAN_HPP_NOEXCEPT + : storageBuffer16BitAccess( storageBuffer16BitAccess_ ) + , uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ ) + , storagePushConstant16( storagePushConstant16_ ) + , storageInputOutput16( storageInputOutput16_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDevice16BitStorageFeatures( PhysicalDevice16BitStorageFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevice16BitStorageFeatures( VkPhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevice16BitStorageFeatures( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevice16BitStorageFeatures & + operator=( PhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevice16BitStorageFeatures & + operator=( VkPhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & + setStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT + { + storageBuffer16BitAccess = storageBuffer16BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setUniformAndStorageBuffer16BitAccess( + VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT + { + uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & + setStoragePushConstant16( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ ) VULKAN_HPP_NOEXCEPT + { + storagePushConstant16 = storagePushConstant16_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & + setStorageInputOutput16( VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ ) VULKAN_HPP_NOEXCEPT + { + storageInputOutput16 = storageInputOutput16_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDevice16BitStorageFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevice16BitStorageFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + storageBuffer16BitAccess, + uniformAndStorageBuffer16BitAccess, + storagePushConstant16, + storageInputOutput16 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevice16BitStorageFeatures const & ) const = default; +#else + bool operator==( PhysicalDevice16BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess ) && + ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess ) && + ( storagePushConstant16 == rhs.storagePushConstant16 ) && + ( storageInputOutput16 == rhs.storageInputOutput16 ); +# endif + } + + bool operator!=( PhysicalDevice16BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevice16BitStorageFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess = {}; + VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess = {}; + VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16 = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures ) == + sizeof( VkPhysicalDevice16BitStorageFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDevice16BitStorageFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevice16BitStorageFeatures; + }; + using PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures; + + struct PhysicalDevice4444FormatsFeaturesEXT + { + using NativeType = VkPhysicalDevice4444FormatsFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevice4444FormatsFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDevice4444FormatsFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4_ = {} ) VULKAN_HPP_NOEXCEPT + : formatA4R4G4B4( formatA4R4G4B4_ ) + , formatA4B4G4R4( formatA4B4G4R4_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDevice4444FormatsFeaturesEXT( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevice4444FormatsFeaturesEXT( VkPhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevice4444FormatsFeaturesEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevice4444FormatsFeaturesEXT & + operator=( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevice4444FormatsFeaturesEXT & + operator=( VkPhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & + setFormatA4R4G4B4( VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4_ ) VULKAN_HPP_NOEXCEPT + { + formatA4R4G4B4 = formatA4R4G4B4_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & + setFormatA4B4G4R4( VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4_ ) VULKAN_HPP_NOEXCEPT + { + formatA4B4G4R4 = formatA4B4G4R4_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDevice4444FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevice4444FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, formatA4R4G4B4, formatA4B4G4R4 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevice4444FormatsFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( formatA4R4G4B4 == rhs.formatA4R4G4B4 ) && + ( formatA4B4G4R4 == rhs.formatA4B4G4R4 ); +# endif + } + + bool operator!=( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevice4444FormatsFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4 = {}; + VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4 = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT ) == + sizeof( VkPhysicalDevice4444FormatsFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDevice4444FormatsFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevice4444FormatsFeaturesEXT; + }; + + struct PhysicalDevice8BitStorageFeatures + { + using NativeType = VkPhysicalDevice8BitStorageFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevice8BitStorageFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDevice8BitStorageFeatures( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ = {} ) VULKAN_HPP_NOEXCEPT + : storageBuffer8BitAccess( storageBuffer8BitAccess_ ) + , uniformAndStorageBuffer8BitAccess( uniformAndStorageBuffer8BitAccess_ ) + , storagePushConstant8( storagePushConstant8_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDevice8BitStorageFeatures( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevice8BitStorageFeatures( VkPhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevice8BitStorageFeatures( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevice8BitStorageFeatures & + operator=( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevice8BitStorageFeatures & operator=( VkPhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & + setStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT + { + storageBuffer8BitAccess = storageBuffer8BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & setUniformAndStorageBuffer8BitAccess( + VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT + { + uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & + setStoragePushConstant8( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ ) VULKAN_HPP_NOEXCEPT + { + storagePushConstant8 = storagePushConstant8_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDevice8BitStorageFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevice8BitStorageFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, storageBuffer8BitAccess, uniformAndStorageBuffer8BitAccess, storagePushConstant8 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevice8BitStorageFeatures const & ) const = default; +#else + bool operator==( PhysicalDevice8BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( storageBuffer8BitAccess == rhs.storageBuffer8BitAccess ) && + ( uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess ) && + ( storagePushConstant8 == rhs.storagePushConstant8 ); +# endif + } + + bool operator!=( PhysicalDevice8BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevice8BitStorageFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess = {}; + VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess = {}; + VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8 = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures ) == + sizeof( VkPhysicalDevice8BitStorageFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDevice8BitStorageFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevice8BitStorageFeatures; + }; + using PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures; + + struct PhysicalDeviceASTCDecodeFeaturesEXT + { + using NativeType = VkPhysicalDeviceASTCDecodeFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceASTCDecodeFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent_ = {} ) VULKAN_HPP_NOEXCEPT + : decodeModeSharedExponent( decodeModeSharedExponent_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceASTCDecodeFeaturesEXT( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceASTCDecodeFeaturesEXT( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceASTCDecodeFeaturesEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceASTCDecodeFeaturesEXT & + operator=( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceASTCDecodeFeaturesEXT & + operator=( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT & + setDecodeModeSharedExponent( VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent_ ) VULKAN_HPP_NOEXCEPT + { + decodeModeSharedExponent = decodeModeSharedExponent_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceASTCDecodeFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceASTCDecodeFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, decodeModeSharedExponent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceASTCDecodeFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( decodeModeSharedExponent == rhs.decodeModeSharedExponent ); +# endif + } + + bool operator!=( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT ) == + sizeof( VkPhysicalDeviceASTCDecodeFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceASTCDecodeFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceASTCDecodeFeaturesEXT; + }; + + struct PhysicalDeviceAccelerationStructureFeaturesKHR + { + using NativeType = VkPhysicalDeviceAccelerationStructureFeaturesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceAccelerationStructureFeaturesKHR( + VULKAN_HPP_NAMESPACE::Bool32 accelerationStructure_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureCaptureReplay_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureIndirectBuild_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureHostCommands_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingAccelerationStructureUpdateAfterBind_ = {} ) VULKAN_HPP_NOEXCEPT + : accelerationStructure( accelerationStructure_ ) + , accelerationStructureCaptureReplay( accelerationStructureCaptureReplay_ ) + , accelerationStructureIndirectBuild( accelerationStructureIndirectBuild_ ) + , accelerationStructureHostCommands( accelerationStructureHostCommands_ ) + , descriptorBindingAccelerationStructureUpdateAfterBind( descriptorBindingAccelerationStructureUpdateAfterBind_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceAccelerationStructureFeaturesKHR( + PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceAccelerationStructureFeaturesKHR( VkPhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceAccelerationStructureFeaturesKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceAccelerationStructureFeaturesKHR & + operator=( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceAccelerationStructureFeaturesKHR & + operator=( VkPhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & + setAccelerationStructure( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructure_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & setAccelerationStructureCaptureReplay( + VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureCaptureReplay_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructureCaptureReplay = accelerationStructureCaptureReplay_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & setAccelerationStructureIndirectBuild( + VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureIndirectBuild_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructureIndirectBuild = accelerationStructureIndirectBuild_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & setAccelerationStructureHostCommands( + VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureHostCommands_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructureHostCommands = accelerationStructureHostCommands_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & + setDescriptorBindingAccelerationStructureUpdateAfterBind( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingAccelerationStructureUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingAccelerationStructureUpdateAfterBind = descriptorBindingAccelerationStructureUpdateAfterBind_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceAccelerationStructureFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceAccelerationStructureFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + accelerationStructure, + accelerationStructureCaptureReplay, + accelerationStructureIndirectBuild, + accelerationStructureHostCommands, + descriptorBindingAccelerationStructureUpdateAfterBind ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceAccelerationStructureFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( accelerationStructure == rhs.accelerationStructure ) && + ( accelerationStructureCaptureReplay == rhs.accelerationStructureCaptureReplay ) && + ( accelerationStructureIndirectBuild == rhs.accelerationStructureIndirectBuild ) && + ( accelerationStructureHostCommands == rhs.accelerationStructureHostCommands ) && + ( descriptorBindingAccelerationStructureUpdateAfterBind == + rhs.descriptorBindingAccelerationStructureUpdateAfterBind ); +# endif + } + + bool operator!=( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 accelerationStructure = {}; + VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureCaptureReplay = {}; + VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureIndirectBuild = {}; + VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureHostCommands = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingAccelerationStructureUpdateAfterBind = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR ) == + sizeof( VkPhysicalDeviceAccelerationStructureFeaturesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceAccelerationStructureFeaturesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceAccelerationStructureFeaturesKHR; + }; + + struct PhysicalDeviceAccelerationStructurePropertiesKHR + { + using NativeType = VkPhysicalDeviceAccelerationStructurePropertiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceAccelerationStructurePropertiesKHR( + uint64_t maxGeometryCount_ = {}, + uint64_t maxInstanceCount_ = {}, + uint64_t maxPrimitiveCount_ = {}, + uint32_t maxPerStageDescriptorAccelerationStructures_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures_ = {}, + uint32_t maxDescriptorSetAccelerationStructures_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures_ = {}, + uint32_t minAccelerationStructureScratchOffsetAlignment_ = {} ) VULKAN_HPP_NOEXCEPT + : maxGeometryCount( maxGeometryCount_ ) + , maxInstanceCount( maxInstanceCount_ ) + , maxPrimitiveCount( maxPrimitiveCount_ ) + , maxPerStageDescriptorAccelerationStructures( maxPerStageDescriptorAccelerationStructures_ ) + , maxPerStageDescriptorUpdateAfterBindAccelerationStructures( + maxPerStageDescriptorUpdateAfterBindAccelerationStructures_ ) + , maxDescriptorSetAccelerationStructures( maxDescriptorSetAccelerationStructures_ ) + , maxDescriptorSetUpdateAfterBindAccelerationStructures( maxDescriptorSetUpdateAfterBindAccelerationStructures_ ) + , minAccelerationStructureScratchOffsetAlignment( minAccelerationStructureScratchOffsetAlignment_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceAccelerationStructurePropertiesKHR( + PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceAccelerationStructurePropertiesKHR( VkPhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceAccelerationStructurePropertiesKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceAccelerationStructurePropertiesKHR & + operator=( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceAccelerationStructurePropertiesKHR & + operator=( VkPhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceAccelerationStructurePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceAccelerationStructurePropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxGeometryCount, + maxInstanceCount, + maxPrimitiveCount, + maxPerStageDescriptorAccelerationStructures, + maxPerStageDescriptorUpdateAfterBindAccelerationStructures, + maxDescriptorSetAccelerationStructures, + maxDescriptorSetUpdateAfterBindAccelerationStructures, + minAccelerationStructureScratchOffsetAlignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceAccelerationStructurePropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxGeometryCount == rhs.maxGeometryCount ) && + ( maxInstanceCount == rhs.maxInstanceCount ) && ( maxPrimitiveCount == rhs.maxPrimitiveCount ) && + ( maxPerStageDescriptorAccelerationStructures == rhs.maxPerStageDescriptorAccelerationStructures ) && + ( maxPerStageDescriptorUpdateAfterBindAccelerationStructures == + rhs.maxPerStageDescriptorUpdateAfterBindAccelerationStructures ) && + ( maxDescriptorSetAccelerationStructures == rhs.maxDescriptorSetAccelerationStructures ) && + ( maxDescriptorSetUpdateAfterBindAccelerationStructures == + rhs.maxDescriptorSetUpdateAfterBindAccelerationStructures ) && + ( minAccelerationStructureScratchOffsetAlignment == rhs.minAccelerationStructureScratchOffsetAlignment ); +# endif + } + + bool operator!=( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR; + void * pNext = {}; + uint64_t maxGeometryCount = {}; + uint64_t maxInstanceCount = {}; + uint64_t maxPrimitiveCount = {}; + uint32_t maxPerStageDescriptorAccelerationStructures = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures = {}; + uint32_t maxDescriptorSetAccelerationStructures = {}; + uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures = {}; + uint32_t minAccelerationStructureScratchOffsetAlignment = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR ) == + sizeof( VkPhysicalDeviceAccelerationStructurePropertiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceAccelerationStructurePropertiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceAccelerationStructurePropertiesKHR; + }; + + struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT + { + using NativeType = VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations_ = {} ) VULKAN_HPP_NOEXCEPT + : advancedBlendCoherentOperations( advancedBlendCoherentOperations_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedFeaturesEXT( + PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceBlendOperationAdvancedFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceBlendOperationAdvancedFeaturesEXT & + operator=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceBlendOperationAdvancedFeaturesEXT & + operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT & setAdvancedBlendCoherentOperations( + VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations_ ) VULKAN_HPP_NOEXCEPT + { + advancedBlendCoherentOperations = advancedBlendCoherentOperations_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, advancedBlendCoherentOperations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations ); +# endif + } + + bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == + sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceBlendOperationAdvancedFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceBlendOperationAdvancedFeaturesEXT; + }; + + struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT + { + using NativeType = VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedPropertiesEXT( + uint32_t advancedBlendMaxColorAttachments_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 advancedBlendIndependentBlend_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedSrcColor_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedDstColor_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCorrelatedOverlap_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 advancedBlendAllOperations_ = {} ) VULKAN_HPP_NOEXCEPT + : advancedBlendMaxColorAttachments( advancedBlendMaxColorAttachments_ ) + , advancedBlendIndependentBlend( advancedBlendIndependentBlend_ ) + , advancedBlendNonPremultipliedSrcColor( advancedBlendNonPremultipliedSrcColor_ ) + , advancedBlendNonPremultipliedDstColor( advancedBlendNonPremultipliedDstColor_ ) + , advancedBlendCorrelatedOverlap( advancedBlendCorrelatedOverlap_ ) + , advancedBlendAllOperations( advancedBlendAllOperations_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedPropertiesEXT( + PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceBlendOperationAdvancedPropertiesEXT( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceBlendOperationAdvancedPropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceBlendOperationAdvancedPropertiesEXT & + operator=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceBlendOperationAdvancedPropertiesEXT & + operator=( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + advancedBlendMaxColorAttachments, + advancedBlendIndependentBlend, + advancedBlendNonPremultipliedSrcColor, + advancedBlendNonPremultipliedDstColor, + advancedBlendCorrelatedOverlap, + advancedBlendAllOperations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments ) && + ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend ) && + ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor ) && + ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor ) && + ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap ) && + ( advancedBlendAllOperations == rhs.advancedBlendAllOperations ); +# endif + } + + bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT; + void * pNext = {}; + uint32_t advancedBlendMaxColorAttachments = {}; + VULKAN_HPP_NAMESPACE::Bool32 advancedBlendIndependentBlend = {}; + VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedSrcColor = {}; + VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedDstColor = {}; + VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCorrelatedOverlap = {}; + VULKAN_HPP_NAMESPACE::Bool32 advancedBlendAllOperations = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == + sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceBlendOperationAdvancedPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceBlendOperationAdvancedPropertiesEXT; + }; + + struct PhysicalDeviceBorderColorSwizzleFeaturesEXT + { + using NativeType = VkPhysicalDeviceBorderColorSwizzleFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceBorderColorSwizzleFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzle_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzleFromImage_ = {} ) VULKAN_HPP_NOEXCEPT + : borderColorSwizzle( borderColorSwizzle_ ) + , borderColorSwizzleFromImage( borderColorSwizzleFromImage_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceBorderColorSwizzleFeaturesEXT( + PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceBorderColorSwizzleFeaturesEXT( VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceBorderColorSwizzleFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceBorderColorSwizzleFeaturesEXT & + operator=( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceBorderColorSwizzleFeaturesEXT & + operator=( VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT & + setBorderColorSwizzle( VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzle_ ) VULKAN_HPP_NOEXCEPT + { + borderColorSwizzle = borderColorSwizzle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT & + setBorderColorSwizzleFromImage( VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzleFromImage_ ) VULKAN_HPP_NOEXCEPT + { + borderColorSwizzleFromImage = borderColorSwizzleFromImage_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, borderColorSwizzle, borderColorSwizzleFromImage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( borderColorSwizzle == rhs.borderColorSwizzle ) && + ( borderColorSwizzleFromImage == rhs.borderColorSwizzleFromImage ); +# endif + } + + bool operator!=( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzle = {}; + VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzleFromImage = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT ) == + sizeof( VkPhysicalDeviceBorderColorSwizzleFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceBorderColorSwizzleFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceBorderColorSwizzleFeaturesEXT; + }; + + struct PhysicalDeviceBufferDeviceAddressFeatures + { + using NativeType = VkPhysicalDeviceBufferDeviceAddressFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceBufferDeviceAddressFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeatures( + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ = {} ) VULKAN_HPP_NOEXCEPT + : bufferDeviceAddress( bufferDeviceAddress_ ) + , bufferDeviceAddressCaptureReplay( bufferDeviceAddressCaptureReplay_ ) + , bufferDeviceAddressMultiDevice( bufferDeviceAddressMultiDevice_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeatures( + PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceBufferDeviceAddressFeatures( VkPhysicalDeviceBufferDeviceAddressFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceBufferDeviceAddressFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceBufferDeviceAddressFeatures & + operator=( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceBufferDeviceAddressFeatures & + operator=( VkPhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & + setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddress = bufferDeviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setBufferDeviceAddressCaptureReplay( + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setBufferDeviceAddressMultiDevice( + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceBufferDeviceAddressFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceBufferDeviceAddressFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, bufferDeviceAddress, bufferDeviceAddressCaptureReplay, bufferDeviceAddressMultiDevice ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceBufferDeviceAddressFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bufferDeviceAddress == rhs.bufferDeviceAddress ) && + ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay ) && + ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice ); +# endif + } + + bool operator!=( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBufferDeviceAddressFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress = {}; + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay = {}; + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures ) == + sizeof( VkPhysicalDeviceBufferDeviceAddressFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceBufferDeviceAddressFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceBufferDeviceAddressFeatures; + }; + using PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures; + + struct PhysicalDeviceBufferDeviceAddressFeaturesEXT + { + using NativeType = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ = {} ) VULKAN_HPP_NOEXCEPT + : bufferDeviceAddress( bufferDeviceAddress_ ) + , bufferDeviceAddressCaptureReplay( bufferDeviceAddressCaptureReplay_ ) + , bufferDeviceAddressMultiDevice( bufferDeviceAddressMultiDevice_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeaturesEXT( + PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceBufferDeviceAddressFeaturesEXT( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceBufferDeviceAddressFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceBufferDeviceAddressFeaturesEXT & + operator=( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceBufferDeviceAddressFeaturesEXT & + operator=( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT & + setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddress = bufferDeviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT & setBufferDeviceAddressCaptureReplay( + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT & setBufferDeviceAddressMultiDevice( + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, bufferDeviceAddress, bufferDeviceAddressCaptureReplay, bufferDeviceAddressMultiDevice ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bufferDeviceAddress == rhs.bufferDeviceAddress ) && + ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay ) && + ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice ); +# endif + } + + bool operator!=( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress = {}; + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay = {}; + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT ) == + sizeof( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceBufferDeviceAddressFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceBufferDeviceAddressFeaturesEXT; + }; + using PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT; + + struct PhysicalDeviceCoherentMemoryFeaturesAMD + { + using NativeType = VkPhysicalDeviceCoherentMemoryFeaturesAMD; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCoherentMemoryFeaturesAMD( + VULKAN_HPP_NAMESPACE::Bool32 deviceCoherentMemory_ = {} ) VULKAN_HPP_NOEXCEPT + : deviceCoherentMemory( deviceCoherentMemory_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCoherentMemoryFeaturesAMD( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCoherentMemoryFeaturesAMD( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCoherentMemoryFeaturesAMD( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceCoherentMemoryFeaturesAMD & + operator=( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCoherentMemoryFeaturesAMD & + operator=( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoherentMemoryFeaturesAMD & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoherentMemoryFeaturesAMD & + setDeviceCoherentMemory( VULKAN_HPP_NAMESPACE::Bool32 deviceCoherentMemory_ ) VULKAN_HPP_NOEXCEPT + { + deviceCoherentMemory = deviceCoherentMemory_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceCoherentMemoryFeaturesAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceCoherentMemoryFeaturesAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceCoherentMemory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCoherentMemoryFeaturesAMD const & ) const = default; +#else + bool operator==( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceCoherentMemory == rhs.deviceCoherentMemory ); +# endif + } + + bool operator!=( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 deviceCoherentMemory = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD ) == + sizeof( VkPhysicalDeviceCoherentMemoryFeaturesAMD ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceCoherentMemoryFeaturesAMD is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceCoherentMemoryFeaturesAMD; + }; + + struct PhysicalDeviceColorWriteEnableFeaturesEXT + { + using NativeType = VkPhysicalDeviceColorWriteEnableFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceColorWriteEnableFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 colorWriteEnable_ = {} ) VULKAN_HPP_NOEXCEPT : colorWriteEnable( colorWriteEnable_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceColorWriteEnableFeaturesEXT( + PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceColorWriteEnableFeaturesEXT( VkPhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceColorWriteEnableFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceColorWriteEnableFeaturesEXT & + operator=( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceColorWriteEnableFeaturesEXT & + operator=( VkPhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceColorWriteEnableFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceColorWriteEnableFeaturesEXT & + setColorWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 colorWriteEnable_ ) VULKAN_HPP_NOEXCEPT + { + colorWriteEnable = colorWriteEnable_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceColorWriteEnableFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceColorWriteEnableFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, colorWriteEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceColorWriteEnableFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorWriteEnable == rhs.colorWriteEnable ); +# endif + } + + bool operator!=( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 colorWriteEnable = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT ) == + sizeof( VkPhysicalDeviceColorWriteEnableFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceColorWriteEnableFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceColorWriteEnableFeaturesEXT; + }; + + struct PhysicalDeviceComputeShaderDerivativesFeaturesNV + { + using NativeType = VkPhysicalDeviceComputeShaderDerivativesFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceComputeShaderDerivativesFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupQuads_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupLinear_ = {} ) VULKAN_HPP_NOEXCEPT + : computeDerivativeGroupQuads( computeDerivativeGroupQuads_ ) + , computeDerivativeGroupLinear( computeDerivativeGroupLinear_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceComputeShaderDerivativesFeaturesNV( + PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceComputeShaderDerivativesFeaturesNV( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceComputeShaderDerivativesFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceComputeShaderDerivativesFeaturesNV & + operator=( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceComputeShaderDerivativesFeaturesNV & + operator=( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesNV & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesNV & + setComputeDerivativeGroupQuads( VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupQuads_ ) VULKAN_HPP_NOEXCEPT + { + computeDerivativeGroupQuads = computeDerivativeGroupQuads_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesNV & + setComputeDerivativeGroupLinear( VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupLinear_ ) VULKAN_HPP_NOEXCEPT + { + computeDerivativeGroupLinear = computeDerivativeGroupLinear_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, computeDerivativeGroupQuads, computeDerivativeGroupLinear ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( computeDerivativeGroupQuads == rhs.computeDerivativeGroupQuads ) && + ( computeDerivativeGroupLinear == rhs.computeDerivativeGroupLinear ); +# endif + } + + bool operator!=( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupQuads = {}; + VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupLinear = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV ) == + sizeof( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceComputeShaderDerivativesFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceComputeShaderDerivativesFeaturesNV; + }; + + struct PhysicalDeviceConditionalRenderingFeaturesEXT + { + using NativeType = VkPhysicalDeviceConditionalRenderingFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceConditionalRenderingFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 conditionalRendering_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 inheritedConditionalRendering_ = {} ) VULKAN_HPP_NOEXCEPT + : conditionalRendering( conditionalRendering_ ) + , inheritedConditionalRendering( inheritedConditionalRendering_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceConditionalRenderingFeaturesEXT( + PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceConditionalRenderingFeaturesEXT( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceConditionalRenderingFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceConditionalRenderingFeaturesEXT & + operator=( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceConditionalRenderingFeaturesEXT & + operator=( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT & + setConditionalRendering( VULKAN_HPP_NAMESPACE::Bool32 conditionalRendering_ ) VULKAN_HPP_NOEXCEPT + { + conditionalRendering = conditionalRendering_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT & setInheritedConditionalRendering( + VULKAN_HPP_NAMESPACE::Bool32 inheritedConditionalRendering_ ) VULKAN_HPP_NOEXCEPT + { + inheritedConditionalRendering = inheritedConditionalRendering_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceConditionalRenderingFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceConditionalRenderingFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, conditionalRendering, inheritedConditionalRendering ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceConditionalRenderingFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( conditionalRendering == rhs.conditionalRendering ) && + ( inheritedConditionalRendering == rhs.inheritedConditionalRendering ); +# endif + } + + bool operator!=( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 conditionalRendering = {}; + VULKAN_HPP_NAMESPACE::Bool32 inheritedConditionalRendering = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT ) == + sizeof( VkPhysicalDeviceConditionalRenderingFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceConditionalRenderingFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceConditionalRenderingFeaturesEXT; + }; + + struct PhysicalDeviceConservativeRasterizationPropertiesEXT + { + using NativeType = VkPhysicalDeviceConservativeRasterizationPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceConservativeRasterizationPropertiesEXT( + float primitiveOverestimationSize_ = {}, + float maxExtraPrimitiveOverestimationSize_ = {}, + float extraPrimitiveOverestimationSizeGranularity_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 primitiveUnderestimation_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 conservativePointAndLineRasterization_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 degenerateTrianglesRasterized_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 degenerateLinesRasterized_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fullyCoveredFragmentShaderInputVariable_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 conservativeRasterizationPostDepthCoverage_ = {} ) VULKAN_HPP_NOEXCEPT + : primitiveOverestimationSize( primitiveOverestimationSize_ ) + , maxExtraPrimitiveOverestimationSize( maxExtraPrimitiveOverestimationSize_ ) + , extraPrimitiveOverestimationSizeGranularity( extraPrimitiveOverestimationSizeGranularity_ ) + , primitiveUnderestimation( primitiveUnderestimation_ ) + , conservativePointAndLineRasterization( conservativePointAndLineRasterization_ ) + , degenerateTrianglesRasterized( degenerateTrianglesRasterized_ ) + , degenerateLinesRasterized( degenerateLinesRasterized_ ) + , fullyCoveredFragmentShaderInputVariable( fullyCoveredFragmentShaderInputVariable_ ) + , conservativeRasterizationPostDepthCoverage( conservativeRasterizationPostDepthCoverage_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceConservativeRasterizationPropertiesEXT( + PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceConservativeRasterizationPropertiesEXT( + VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceConservativeRasterizationPropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceConservativeRasterizationPropertiesEXT & + operator=( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceConservativeRasterizationPropertiesEXT & + operator=( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + primitiveOverestimationSize, + maxExtraPrimitiveOverestimationSize, + extraPrimitiveOverestimationSizeGranularity, + primitiveUnderestimation, + conservativePointAndLineRasterization, + degenerateTrianglesRasterized, + degenerateLinesRasterized, + fullyCoveredFragmentShaderInputVariable, + conservativeRasterizationPostDepthCoverage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceConservativeRasterizationPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( primitiveOverestimationSize == rhs.primitiveOverestimationSize ) && + ( maxExtraPrimitiveOverestimationSize == rhs.maxExtraPrimitiveOverestimationSize ) && + ( extraPrimitiveOverestimationSizeGranularity == rhs.extraPrimitiveOverestimationSizeGranularity ) && + ( primitiveUnderestimation == rhs.primitiveUnderestimation ) && + ( conservativePointAndLineRasterization == rhs.conservativePointAndLineRasterization ) && + ( degenerateTrianglesRasterized == rhs.degenerateTrianglesRasterized ) && + ( degenerateLinesRasterized == rhs.degenerateLinesRasterized ) && + ( fullyCoveredFragmentShaderInputVariable == rhs.fullyCoveredFragmentShaderInputVariable ) && + ( conservativeRasterizationPostDepthCoverage == rhs.conservativeRasterizationPostDepthCoverage ); +# endif + } + + bool operator!=( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT; + void * pNext = {}; + float primitiveOverestimationSize = {}; + float maxExtraPrimitiveOverestimationSize = {}; + float extraPrimitiveOverestimationSizeGranularity = {}; + VULKAN_HPP_NAMESPACE::Bool32 primitiveUnderestimation = {}; + VULKAN_HPP_NAMESPACE::Bool32 conservativePointAndLineRasterization = {}; + VULKAN_HPP_NAMESPACE::Bool32 degenerateTrianglesRasterized = {}; + VULKAN_HPP_NAMESPACE::Bool32 degenerateLinesRasterized = {}; + VULKAN_HPP_NAMESPACE::Bool32 fullyCoveredFragmentShaderInputVariable = {}; + VULKAN_HPP_NAMESPACE::Bool32 conservativeRasterizationPostDepthCoverage = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT ) == + sizeof( VkPhysicalDeviceConservativeRasterizationPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT>::value, + "PhysicalDeviceConservativeRasterizationPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceConservativeRasterizationPropertiesEXT; + }; + + struct PhysicalDeviceCooperativeMatrixFeaturesNV + { + using NativeType = VkPhysicalDeviceCooperativeMatrixFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess_ = {} ) VULKAN_HPP_NOEXCEPT + : cooperativeMatrix( cooperativeMatrix_ ) + , cooperativeMatrixRobustBufferAccess( cooperativeMatrixRobustBufferAccess_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesNV( + PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCooperativeMatrixFeaturesNV( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCooperativeMatrixFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceCooperativeMatrixFeaturesNV & + operator=( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCooperativeMatrixFeaturesNV & + operator=( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV & + setCooperativeMatrix( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix_ ) VULKAN_HPP_NOEXCEPT + { + cooperativeMatrix = cooperativeMatrix_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV & setCooperativeMatrixRobustBufferAccess( + VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess_ ) VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixRobustBufferAccess = cooperativeMatrixRobustBufferAccess_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceCooperativeMatrixFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceCooperativeMatrixFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, cooperativeMatrix, cooperativeMatrixRobustBufferAccess ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCooperativeMatrixFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeMatrix == rhs.cooperativeMatrix ) && + ( cooperativeMatrixRobustBufferAccess == rhs.cooperativeMatrixRobustBufferAccess ); +# endif + } + + bool operator!=( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix = {}; + VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV ) == + sizeof( VkPhysicalDeviceCooperativeMatrixFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceCooperativeMatrixFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrixFeaturesNV; + }; + + struct PhysicalDeviceCooperativeMatrixPropertiesNV + { + using NativeType = VkPhysicalDeviceCooperativeMatrixPropertiesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesNV( + VULKAN_HPP_NAMESPACE::ShaderStageFlags cooperativeMatrixSupportedStages_ = {} ) VULKAN_HPP_NOEXCEPT + : cooperativeMatrixSupportedStages( cooperativeMatrixSupportedStages_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesNV( + PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCooperativeMatrixPropertiesNV( VkPhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCooperativeMatrixPropertiesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceCooperativeMatrixPropertiesNV & + operator=( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCooperativeMatrixPropertiesNV & + operator=( VkPhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceCooperativeMatrixPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceCooperativeMatrixPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std:: + tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, cooperativeMatrixSupportedStages ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCooperativeMatrixPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( cooperativeMatrixSupportedStages == rhs.cooperativeMatrixSupportedStages ); +# endif + } + + bool operator!=( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ShaderStageFlags cooperativeMatrixSupportedStages = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV ) == + sizeof( VkPhysicalDeviceCooperativeMatrixPropertiesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceCooperativeMatrixPropertiesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrixPropertiesNV; + }; + + struct PhysicalDeviceCornerSampledImageFeaturesNV + { + using NativeType = VkPhysicalDeviceCornerSampledImageFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCornerSampledImageFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 cornerSampledImage_ = {} ) VULKAN_HPP_NOEXCEPT + : cornerSampledImage( cornerSampledImage_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCornerSampledImageFeaturesNV( + PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCornerSampledImageFeaturesNV( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCornerSampledImageFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceCornerSampledImageFeaturesNV & + operator=( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCornerSampledImageFeaturesNV & + operator=( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCornerSampledImageFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCornerSampledImageFeaturesNV & + setCornerSampledImage( VULKAN_HPP_NAMESPACE::Bool32 cornerSampledImage_ ) VULKAN_HPP_NOEXCEPT + { + cornerSampledImage = cornerSampledImage_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceCornerSampledImageFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceCornerSampledImageFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, cornerSampledImage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCornerSampledImageFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cornerSampledImage == rhs.cornerSampledImage ); +# endif + } + + bool operator!=( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 cornerSampledImage = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV ) == + sizeof( VkPhysicalDeviceCornerSampledImageFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceCornerSampledImageFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceCornerSampledImageFeaturesNV; + }; + + struct PhysicalDeviceCoverageReductionModeFeaturesNV + { + using NativeType = VkPhysicalDeviceCoverageReductionModeFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCoverageReductionModeFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 coverageReductionMode_ = {} ) VULKAN_HPP_NOEXCEPT + : coverageReductionMode( coverageReductionMode_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCoverageReductionModeFeaturesNV( + PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCoverageReductionModeFeaturesNV( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCoverageReductionModeFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceCoverageReductionModeFeaturesNV & + operator=( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCoverageReductionModeFeaturesNV & + operator=( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoverageReductionModeFeaturesNV & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoverageReductionModeFeaturesNV & + setCoverageReductionMode( VULKAN_HPP_NAMESPACE::Bool32 coverageReductionMode_ ) VULKAN_HPP_NOEXCEPT + { + coverageReductionMode = coverageReductionMode_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceCoverageReductionModeFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceCoverageReductionModeFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, coverageReductionMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCoverageReductionModeFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( coverageReductionMode == rhs.coverageReductionMode ); +# endif + } + + bool operator!=( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 coverageReductionMode = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV ) == + sizeof( VkPhysicalDeviceCoverageReductionModeFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceCoverageReductionModeFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceCoverageReductionModeFeaturesNV; + }; + + struct PhysicalDeviceCustomBorderColorFeaturesEXT + { + using NativeType = VkPhysicalDeviceCustomBorderColorFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 customBorderColors_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat_ = {} ) VULKAN_HPP_NOEXCEPT + : customBorderColors( customBorderColors_ ) + , customBorderColorWithoutFormat( customBorderColorWithoutFormat_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorFeaturesEXT( + PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCustomBorderColorFeaturesEXT( VkPhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCustomBorderColorFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceCustomBorderColorFeaturesEXT & + operator=( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCustomBorderColorFeaturesEXT & + operator=( VkPhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT & + setCustomBorderColors( VULKAN_HPP_NAMESPACE::Bool32 customBorderColors_ ) VULKAN_HPP_NOEXCEPT + { + customBorderColors = customBorderColors_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT & setCustomBorderColorWithoutFormat( + VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat_ ) VULKAN_HPP_NOEXCEPT + { + customBorderColorWithoutFormat = customBorderColorWithoutFormat_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceCustomBorderColorFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceCustomBorderColorFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, customBorderColors, customBorderColorWithoutFormat ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCustomBorderColorFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( customBorderColors == rhs.customBorderColors ) && + ( customBorderColorWithoutFormat == rhs.customBorderColorWithoutFormat ); +# endif + } + + bool operator!=( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 customBorderColors = {}; + VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT ) == + sizeof( VkPhysicalDeviceCustomBorderColorFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceCustomBorderColorFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceCustomBorderColorFeaturesEXT; + }; + + struct PhysicalDeviceCustomBorderColorPropertiesEXT + { + using NativeType = VkPhysicalDeviceCustomBorderColorPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceCustomBorderColorPropertiesEXT( uint32_t maxCustomBorderColorSamplers_ = {} ) VULKAN_HPP_NOEXCEPT + : maxCustomBorderColorSamplers( maxCustomBorderColorSamplers_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorPropertiesEXT( + PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCustomBorderColorPropertiesEXT( VkPhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCustomBorderColorPropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceCustomBorderColorPropertiesEXT & + operator=( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCustomBorderColorPropertiesEXT & + operator=( VkPhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceCustomBorderColorPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceCustomBorderColorPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxCustomBorderColorSamplers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCustomBorderColorPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( maxCustomBorderColorSamplers == rhs.maxCustomBorderColorSamplers ); +# endif + } + + bool operator!=( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT; + void * pNext = {}; + uint32_t maxCustomBorderColorSamplers = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT ) == + sizeof( VkPhysicalDeviceCustomBorderColorPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceCustomBorderColorPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceCustomBorderColorPropertiesEXT; + }; + + struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + { + using NativeType = VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocationImageAliasing_ = {} ) VULKAN_HPP_NOEXCEPT + : dedicatedAllocationImageAliasing( dedicatedAllocationImageAliasing_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( + PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( + VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & + operator=( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & + operator=( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( + &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & + setDedicatedAllocationImageAliasing( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocationImageAliasing_ ) + VULKAN_HPP_NOEXCEPT + { + dedicatedAllocationImageAliasing = dedicatedAllocationImageAliasing_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dedicatedAllocationImageAliasing ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( dedicatedAllocationImageAliasing == rhs.dedicatedAllocationImageAliasing ); +# endif + } + + bool operator!=( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = + StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocationImageAliasing = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV ) == + sizeof( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>::value, + "PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + }; + + struct PhysicalDeviceDepthClipControlFeaturesEXT + { + using NativeType = VkPhysicalDeviceDepthClipControlFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceDepthClipControlFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipControlFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 depthClipControl_ = {} ) VULKAN_HPP_NOEXCEPT : depthClipControl( depthClipControl_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipControlFeaturesEXT( + PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDepthClipControlFeaturesEXT( VkPhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDepthClipControlFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDepthClipControlFeaturesEXT & + operator=( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDepthClipControlFeaturesEXT & + operator=( VkPhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipControlFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipControlFeaturesEXT & + setDepthClipControl( VULKAN_HPP_NAMESPACE::Bool32 depthClipControl_ ) VULKAN_HPP_NOEXCEPT + { + depthClipControl = depthClipControl_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceDepthClipControlFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceDepthClipControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, depthClipControl ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDepthClipControlFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthClipControl == rhs.depthClipControl ); +# endif + } + + bool operator!=( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDepthClipControlFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 depthClipControl = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT ) == + sizeof( VkPhysicalDeviceDepthClipControlFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceDepthClipControlFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceDepthClipControlFeaturesEXT; + }; + + struct PhysicalDeviceDepthClipEnableFeaturesEXT + { + using NativeType = VkPhysicalDeviceDepthClipEnableFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDepthClipEnableFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ = {} ) VULKAN_HPP_NOEXCEPT + : depthClipEnable( depthClipEnable_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipEnableFeaturesEXT( + PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDepthClipEnableFeaturesEXT( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDepthClipEnableFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDepthClipEnableFeaturesEXT & + operator=( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDepthClipEnableFeaturesEXT & + operator=( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT & + setDepthClipEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ ) VULKAN_HPP_NOEXCEPT + { + depthClipEnable = depthClipEnable_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceDepthClipEnableFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceDepthClipEnableFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, depthClipEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDepthClipEnableFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthClipEnable == rhs.depthClipEnable ); +# endif + } + + bool operator!=( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT ) == + sizeof( VkPhysicalDeviceDepthClipEnableFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceDepthClipEnableFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceDepthClipEnableFeaturesEXT; + }; + + struct PhysicalDeviceDepthStencilResolveProperties + { + using NativeType = VkPhysicalDeviceDepthStencilResolveProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceDepthStencilResolveProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthStencilResolveProperties( + VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes_ = {}, + VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 independentResolveNone_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 independentResolve_ = {} ) VULKAN_HPP_NOEXCEPT + : supportedDepthResolveModes( supportedDepthResolveModes_ ) + , supportedStencilResolveModes( supportedStencilResolveModes_ ) + , independentResolveNone( independentResolveNone_ ) + , independentResolve( independentResolve_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthStencilResolveProperties( + PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDepthStencilResolveProperties( VkPhysicalDeviceDepthStencilResolveProperties const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDepthStencilResolveProperties( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDepthStencilResolveProperties & + operator=( PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDepthStencilResolveProperties & + operator=( VkPhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceDepthStencilResolveProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceDepthStencilResolveProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + supportedDepthResolveModes, + supportedStencilResolveModes, + independentResolveNone, + independentResolve ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDepthStencilResolveProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceDepthStencilResolveProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( supportedDepthResolveModes == rhs.supportedDepthResolveModes ) && + ( supportedStencilResolveModes == rhs.supportedStencilResolveModes ) && + ( independentResolveNone == rhs.independentResolveNone ) && + ( independentResolve == rhs.independentResolve ); +# endif + } + + bool operator!=( PhysicalDeviceDepthStencilResolveProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDepthStencilResolveProperties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes = {}; + VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes = {}; + VULKAN_HPP_NAMESPACE::Bool32 independentResolveNone = {}; + VULKAN_HPP_NAMESPACE::Bool32 independentResolve = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties ) == + sizeof( VkPhysicalDeviceDepthStencilResolveProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceDepthStencilResolveProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceDepthStencilResolveProperties; + }; + using PhysicalDeviceDepthStencilResolvePropertiesKHR = PhysicalDeviceDepthStencilResolveProperties; + + struct PhysicalDeviceDescriptorIndexingFeatures + { + using NativeType = VkPhysicalDeviceDescriptorIndexingFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceDescriptorIndexingFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingFeatures( + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderInputAttachmentArrayDynamicIndexing( shaderInputAttachmentArrayDynamicIndexing_ ) + , shaderUniformTexelBufferArrayDynamicIndexing( shaderUniformTexelBufferArrayDynamicIndexing_ ) + , shaderStorageTexelBufferArrayDynamicIndexing( shaderStorageTexelBufferArrayDynamicIndexing_ ) + , shaderUniformBufferArrayNonUniformIndexing( shaderUniformBufferArrayNonUniformIndexing_ ) + , shaderSampledImageArrayNonUniformIndexing( shaderSampledImageArrayNonUniformIndexing_ ) + , shaderStorageBufferArrayNonUniformIndexing( shaderStorageBufferArrayNonUniformIndexing_ ) + , shaderStorageImageArrayNonUniformIndexing( shaderStorageImageArrayNonUniformIndexing_ ) + , shaderInputAttachmentArrayNonUniformIndexing( shaderInputAttachmentArrayNonUniformIndexing_ ) + , shaderUniformTexelBufferArrayNonUniformIndexing( shaderUniformTexelBufferArrayNonUniformIndexing_ ) + , shaderStorageTexelBufferArrayNonUniformIndexing( shaderStorageTexelBufferArrayNonUniformIndexing_ ) + , descriptorBindingUniformBufferUpdateAfterBind( descriptorBindingUniformBufferUpdateAfterBind_ ) + , descriptorBindingSampledImageUpdateAfterBind( descriptorBindingSampledImageUpdateAfterBind_ ) + , descriptorBindingStorageImageUpdateAfterBind( descriptorBindingStorageImageUpdateAfterBind_ ) + , descriptorBindingStorageBufferUpdateAfterBind( descriptorBindingStorageBufferUpdateAfterBind_ ) + , descriptorBindingUniformTexelBufferUpdateAfterBind( descriptorBindingUniformTexelBufferUpdateAfterBind_ ) + , descriptorBindingStorageTexelBufferUpdateAfterBind( descriptorBindingStorageTexelBufferUpdateAfterBind_ ) + , descriptorBindingUpdateUnusedWhilePending( descriptorBindingUpdateUnusedWhilePending_ ) + , descriptorBindingPartiallyBound( descriptorBindingPartiallyBound_ ) + , descriptorBindingVariableDescriptorCount( descriptorBindingVariableDescriptorCount_ ) + , runtimeDescriptorArray( runtimeDescriptorArray_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingFeatures( + PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorIndexingFeatures( VkPhysicalDeviceDescriptorIndexingFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDescriptorIndexingFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDescriptorIndexingFeatures & + operator=( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorIndexingFeatures & + operator=( VkPhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderInputAttachmentArrayDynamicIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderUniformTexelBufferArrayDynamicIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderStorageTexelBufferArrayDynamicIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderUniformBufferArrayNonUniformIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderSampledImageArrayNonUniformIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderStorageBufferArrayNonUniformIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderStorageImageArrayNonUniformIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderInputAttachmentArrayNonUniformIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setShaderUniformTexelBufferArrayNonUniformIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setShaderStorageTexelBufferArrayNonUniformIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingUniformBufferUpdateAfterBind( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingSampledImageUpdateAfterBind( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingStorageImageUpdateAfterBind( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingStorageBufferUpdateAfterBind( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setDescriptorBindingUniformTexelBufferUpdateAfterBind( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setDescriptorBindingStorageTexelBufferUpdateAfterBind( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingUpdateUnusedWhilePending( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingPartiallyBound( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingVariableDescriptorCount( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setRuntimeDescriptorArray( VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ ) VULKAN_HPP_NOEXCEPT + { + runtimeDescriptorArray = runtimeDescriptorArray_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceDescriptorIndexingFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceDescriptorIndexingFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + shaderInputAttachmentArrayDynamicIndexing, + shaderUniformTexelBufferArrayDynamicIndexing, + shaderStorageTexelBufferArrayDynamicIndexing, + shaderUniformBufferArrayNonUniformIndexing, + shaderSampledImageArrayNonUniformIndexing, + shaderStorageBufferArrayNonUniformIndexing, + shaderStorageImageArrayNonUniformIndexing, + shaderInputAttachmentArrayNonUniformIndexing, + shaderUniformTexelBufferArrayNonUniformIndexing, + shaderStorageTexelBufferArrayNonUniformIndexing, + descriptorBindingUniformBufferUpdateAfterBind, + descriptorBindingSampledImageUpdateAfterBind, + descriptorBindingStorageImageUpdateAfterBind, + descriptorBindingStorageBufferUpdateAfterBind, + descriptorBindingUniformTexelBufferUpdateAfterBind, + descriptorBindingStorageTexelBufferUpdateAfterBind, + descriptorBindingUpdateUnusedWhilePending, + descriptorBindingPartiallyBound, + descriptorBindingVariableDescriptorCount, + runtimeDescriptorArray ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDescriptorIndexingFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderInputAttachmentArrayDynamicIndexing == rhs.shaderInputAttachmentArrayDynamicIndexing ) && + ( shaderUniformTexelBufferArrayDynamicIndexing == rhs.shaderUniformTexelBufferArrayDynamicIndexing ) && + ( shaderStorageTexelBufferArrayDynamicIndexing == rhs.shaderStorageTexelBufferArrayDynamicIndexing ) && + ( shaderUniformBufferArrayNonUniformIndexing == rhs.shaderUniformBufferArrayNonUniformIndexing ) && + ( shaderSampledImageArrayNonUniformIndexing == rhs.shaderSampledImageArrayNonUniformIndexing ) && + ( shaderStorageBufferArrayNonUniformIndexing == rhs.shaderStorageBufferArrayNonUniformIndexing ) && + ( shaderStorageImageArrayNonUniformIndexing == rhs.shaderStorageImageArrayNonUniformIndexing ) && + ( shaderInputAttachmentArrayNonUniformIndexing == rhs.shaderInputAttachmentArrayNonUniformIndexing ) && + ( shaderUniformTexelBufferArrayNonUniformIndexing == + rhs.shaderUniformTexelBufferArrayNonUniformIndexing ) && + ( shaderStorageTexelBufferArrayNonUniformIndexing == + rhs.shaderStorageTexelBufferArrayNonUniformIndexing ) && + ( descriptorBindingUniformBufferUpdateAfterBind == rhs.descriptorBindingUniformBufferUpdateAfterBind ) && + ( descriptorBindingSampledImageUpdateAfterBind == rhs.descriptorBindingSampledImageUpdateAfterBind ) && + ( descriptorBindingStorageImageUpdateAfterBind == rhs.descriptorBindingStorageImageUpdateAfterBind ) && + ( descriptorBindingStorageBufferUpdateAfterBind == rhs.descriptorBindingStorageBufferUpdateAfterBind ) && + ( descriptorBindingUniformTexelBufferUpdateAfterBind == + rhs.descriptorBindingUniformTexelBufferUpdateAfterBind ) && + ( descriptorBindingStorageTexelBufferUpdateAfterBind == + rhs.descriptorBindingStorageTexelBufferUpdateAfterBind ) && + ( descriptorBindingUpdateUnusedWhilePending == rhs.descriptorBindingUpdateUnusedWhilePending ) && + ( descriptorBindingPartiallyBound == rhs.descriptorBindingPartiallyBound ) && + ( descriptorBindingVariableDescriptorCount == rhs.descriptorBindingVariableDescriptorCount ) && + ( runtimeDescriptorArray == rhs.runtimeDescriptorArray ); +# endif + } + + bool operator!=( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount = {}; + VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures ) == + sizeof( VkPhysicalDeviceDescriptorIndexingFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceDescriptorIndexingFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorIndexingFeatures; + }; + using PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures; + + struct PhysicalDeviceDescriptorIndexingProperties + { + using NativeType = VkPhysicalDeviceDescriptorIndexingProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceDescriptorIndexingProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingProperties( + uint32_t maxUpdateAfterBindDescriptorsInAllPools_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexingNative_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexingNative_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexingNative_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccessUpdateAfterBind_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 quadDivergentImplicitLod_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments_ = {}, + uint32_t maxPerStageUpdateAfterBindResources_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindSamplers_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindSampledImages_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindStorageImages_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments_ = {} ) VULKAN_HPP_NOEXCEPT + : maxUpdateAfterBindDescriptorsInAllPools( maxUpdateAfterBindDescriptorsInAllPools_ ) + , shaderUniformBufferArrayNonUniformIndexingNative( shaderUniformBufferArrayNonUniformIndexingNative_ ) + , shaderSampledImageArrayNonUniformIndexingNative( shaderSampledImageArrayNonUniformIndexingNative_ ) + , shaderStorageBufferArrayNonUniformIndexingNative( shaderStorageBufferArrayNonUniformIndexingNative_ ) + , shaderStorageImageArrayNonUniformIndexingNative( shaderStorageImageArrayNonUniformIndexingNative_ ) + , shaderInputAttachmentArrayNonUniformIndexingNative( shaderInputAttachmentArrayNonUniformIndexingNative_ ) + , robustBufferAccessUpdateAfterBind( robustBufferAccessUpdateAfterBind_ ) + , quadDivergentImplicitLod( quadDivergentImplicitLod_ ) + , maxPerStageDescriptorUpdateAfterBindSamplers( maxPerStageDescriptorUpdateAfterBindSamplers_ ) + , maxPerStageDescriptorUpdateAfterBindUniformBuffers( maxPerStageDescriptorUpdateAfterBindUniformBuffers_ ) + , maxPerStageDescriptorUpdateAfterBindStorageBuffers( maxPerStageDescriptorUpdateAfterBindStorageBuffers_ ) + , maxPerStageDescriptorUpdateAfterBindSampledImages( maxPerStageDescriptorUpdateAfterBindSampledImages_ ) + , maxPerStageDescriptorUpdateAfterBindStorageImages( maxPerStageDescriptorUpdateAfterBindStorageImages_ ) + , maxPerStageDescriptorUpdateAfterBindInputAttachments( maxPerStageDescriptorUpdateAfterBindInputAttachments_ ) + , maxPerStageUpdateAfterBindResources( maxPerStageUpdateAfterBindResources_ ) + , maxDescriptorSetUpdateAfterBindSamplers( maxDescriptorSetUpdateAfterBindSamplers_ ) + , maxDescriptorSetUpdateAfterBindUniformBuffers( maxDescriptorSetUpdateAfterBindUniformBuffers_ ) + , maxDescriptorSetUpdateAfterBindUniformBuffersDynamic( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ ) + , maxDescriptorSetUpdateAfterBindStorageBuffers( maxDescriptorSetUpdateAfterBindStorageBuffers_ ) + , maxDescriptorSetUpdateAfterBindStorageBuffersDynamic( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ ) + , maxDescriptorSetUpdateAfterBindSampledImages( maxDescriptorSetUpdateAfterBindSampledImages_ ) + , maxDescriptorSetUpdateAfterBindStorageImages( maxDescriptorSetUpdateAfterBindStorageImages_ ) + , maxDescriptorSetUpdateAfterBindInputAttachments( maxDescriptorSetUpdateAfterBindInputAttachments_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingProperties( + PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorIndexingProperties( VkPhysicalDeviceDescriptorIndexingProperties const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDescriptorIndexingProperties( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDescriptorIndexingProperties & + operator=( PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorIndexingProperties & + operator=( VkPhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceDescriptorIndexingProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceDescriptorIndexingProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxUpdateAfterBindDescriptorsInAllPools, + shaderUniformBufferArrayNonUniformIndexingNative, + shaderSampledImageArrayNonUniformIndexingNative, + shaderStorageBufferArrayNonUniformIndexingNative, + shaderStorageImageArrayNonUniformIndexingNative, + shaderInputAttachmentArrayNonUniformIndexingNative, + robustBufferAccessUpdateAfterBind, + quadDivergentImplicitLod, + maxPerStageDescriptorUpdateAfterBindSamplers, + maxPerStageDescriptorUpdateAfterBindUniformBuffers, + maxPerStageDescriptorUpdateAfterBindStorageBuffers, + maxPerStageDescriptorUpdateAfterBindSampledImages, + maxPerStageDescriptorUpdateAfterBindStorageImages, + maxPerStageDescriptorUpdateAfterBindInputAttachments, + maxPerStageUpdateAfterBindResources, + maxDescriptorSetUpdateAfterBindSamplers, + maxDescriptorSetUpdateAfterBindUniformBuffers, + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic, + maxDescriptorSetUpdateAfterBindStorageBuffers, + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic, + maxDescriptorSetUpdateAfterBindSampledImages, + maxDescriptorSetUpdateAfterBindStorageImages, + maxDescriptorSetUpdateAfterBindInputAttachments ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDescriptorIndexingProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceDescriptorIndexingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( maxUpdateAfterBindDescriptorsInAllPools == rhs.maxUpdateAfterBindDescriptorsInAllPools ) && + ( shaderUniformBufferArrayNonUniformIndexingNative == + rhs.shaderUniformBufferArrayNonUniformIndexingNative ) && + ( shaderSampledImageArrayNonUniformIndexingNative == + rhs.shaderSampledImageArrayNonUniformIndexingNative ) && + ( shaderStorageBufferArrayNonUniformIndexingNative == + rhs.shaderStorageBufferArrayNonUniformIndexingNative ) && + ( shaderStorageImageArrayNonUniformIndexingNative == + rhs.shaderStorageImageArrayNonUniformIndexingNative ) && + ( shaderInputAttachmentArrayNonUniformIndexingNative == + rhs.shaderInputAttachmentArrayNonUniformIndexingNative ) && + ( robustBufferAccessUpdateAfterBind == rhs.robustBufferAccessUpdateAfterBind ) && + ( quadDivergentImplicitLod == rhs.quadDivergentImplicitLod ) && + ( maxPerStageDescriptorUpdateAfterBindSamplers == rhs.maxPerStageDescriptorUpdateAfterBindSamplers ) && + ( maxPerStageDescriptorUpdateAfterBindUniformBuffers == + rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers ) && + ( maxPerStageDescriptorUpdateAfterBindStorageBuffers == + rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers ) && + ( maxPerStageDescriptorUpdateAfterBindSampledImages == + rhs.maxPerStageDescriptorUpdateAfterBindSampledImages ) && + ( maxPerStageDescriptorUpdateAfterBindStorageImages == + rhs.maxPerStageDescriptorUpdateAfterBindStorageImages ) && + ( maxPerStageDescriptorUpdateAfterBindInputAttachments == + rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments ) && + ( maxPerStageUpdateAfterBindResources == rhs.maxPerStageUpdateAfterBindResources ) && + ( maxDescriptorSetUpdateAfterBindSamplers == rhs.maxDescriptorSetUpdateAfterBindSamplers ) && + ( maxDescriptorSetUpdateAfterBindUniformBuffers == rhs.maxDescriptorSetUpdateAfterBindUniformBuffers ) && + ( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic == + rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ) && + ( maxDescriptorSetUpdateAfterBindStorageBuffers == rhs.maxDescriptorSetUpdateAfterBindStorageBuffers ) && + ( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic == + rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ) && + ( maxDescriptorSetUpdateAfterBindSampledImages == rhs.maxDescriptorSetUpdateAfterBindSampledImages ) && + ( maxDescriptorSetUpdateAfterBindStorageImages == rhs.maxDescriptorSetUpdateAfterBindStorageImages ) && + ( maxDescriptorSetUpdateAfterBindInputAttachments == rhs.maxDescriptorSetUpdateAfterBindInputAttachments ); +# endif + } + + bool operator!=( PhysicalDeviceDescriptorIndexingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingProperties; + void * pNext = {}; + uint32_t maxUpdateAfterBindDescriptorsInAllPools = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexingNative = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexingNative = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexingNative = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative = {}; + VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccessUpdateAfterBind = {}; + VULKAN_HPP_NAMESPACE::Bool32 quadDivergentImplicitLod = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments = {}; + uint32_t maxPerStageUpdateAfterBindResources = {}; + uint32_t maxDescriptorSetUpdateAfterBindSamplers = {}; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers = {}; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = {}; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers = {}; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = {}; + uint32_t maxDescriptorSetUpdateAfterBindSampledImages = {}; + uint32_t maxDescriptorSetUpdateAfterBindStorageImages = {}; + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties ) == + sizeof( VkPhysicalDeviceDescriptorIndexingProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceDescriptorIndexingProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorIndexingProperties; + }; + using PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties; + + struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV + { + using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands_ = {} ) VULKAN_HPP_NOEXCEPT + : deviceGeneratedCommands( deviceGeneratedCommands_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( + PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & + operator=( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & + operator=( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & + setDeviceGeneratedCommands( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands_ ) VULKAN_HPP_NOEXCEPT + { + deviceGeneratedCommands = deviceGeneratedCommands_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceGeneratedCommands ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( deviceGeneratedCommands == rhs.deviceGeneratedCommands ); +# endif + } + + bool operator!=( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV ) == + sizeof( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceDeviceGeneratedCommandsFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV; + }; + + struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV + { + using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( + uint32_t maxGraphicsShaderGroupCount_ = {}, + uint32_t maxIndirectSequenceCount_ = {}, + uint32_t maxIndirectCommandsTokenCount_ = {}, + uint32_t maxIndirectCommandsStreamCount_ = {}, + uint32_t maxIndirectCommandsTokenOffset_ = {}, + uint32_t maxIndirectCommandsStreamStride_ = {}, + uint32_t minSequencesCountBufferOffsetAlignment_ = {}, + uint32_t minSequencesIndexBufferOffsetAlignment_ = {}, + uint32_t minIndirectCommandsBufferOffsetAlignment_ = {} ) VULKAN_HPP_NOEXCEPT + : maxGraphicsShaderGroupCount( maxGraphicsShaderGroupCount_ ) + , maxIndirectSequenceCount( maxIndirectSequenceCount_ ) + , maxIndirectCommandsTokenCount( maxIndirectCommandsTokenCount_ ) + , maxIndirectCommandsStreamCount( maxIndirectCommandsStreamCount_ ) + , maxIndirectCommandsTokenOffset( maxIndirectCommandsTokenOffset_ ) + , maxIndirectCommandsStreamStride( maxIndirectCommandsStreamStride_ ) + , minSequencesCountBufferOffsetAlignment( minSequencesCountBufferOffsetAlignment_ ) + , minSequencesIndexBufferOffsetAlignment( minSequencesIndexBufferOffsetAlignment_ ) + , minIndirectCommandsBufferOffsetAlignment( minIndirectCommandsBufferOffsetAlignment_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( + PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDeviceGeneratedCommandsPropertiesNV & + operator=( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDeviceGeneratedCommandsPropertiesNV & + operator=( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxGraphicsShaderGroupCount, + maxIndirectSequenceCount, + maxIndirectCommandsTokenCount, + maxIndirectCommandsStreamCount, + maxIndirectCommandsTokenOffset, + maxIndirectCommandsStreamStride, + minSequencesCountBufferOffsetAlignment, + minSequencesIndexBufferOffsetAlignment, + minIndirectCommandsBufferOffsetAlignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( maxGraphicsShaderGroupCount == rhs.maxGraphicsShaderGroupCount ) && + ( maxIndirectSequenceCount == rhs.maxIndirectSequenceCount ) && + ( maxIndirectCommandsTokenCount == rhs.maxIndirectCommandsTokenCount ) && + ( maxIndirectCommandsStreamCount == rhs.maxIndirectCommandsStreamCount ) && + ( maxIndirectCommandsTokenOffset == rhs.maxIndirectCommandsTokenOffset ) && + ( maxIndirectCommandsStreamStride == rhs.maxIndirectCommandsStreamStride ) && + ( minSequencesCountBufferOffsetAlignment == rhs.minSequencesCountBufferOffsetAlignment ) && + ( minSequencesIndexBufferOffsetAlignment == rhs.minSequencesIndexBufferOffsetAlignment ) && + ( minIndirectCommandsBufferOffsetAlignment == rhs.minIndirectCommandsBufferOffsetAlignment ); +# endif + } + + bool operator!=( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV; + void * pNext = {}; + uint32_t maxGraphicsShaderGroupCount = {}; + uint32_t maxIndirectSequenceCount = {}; + uint32_t maxIndirectCommandsTokenCount = {}; + uint32_t maxIndirectCommandsStreamCount = {}; + uint32_t maxIndirectCommandsTokenOffset = {}; + uint32_t maxIndirectCommandsStreamStride = {}; + uint32_t minSequencesCountBufferOffsetAlignment = {}; + uint32_t minSequencesIndexBufferOffsetAlignment = {}; + uint32_t minIndirectCommandsBufferOffsetAlignment = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV ) == + sizeof( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceDeviceGeneratedCommandsPropertiesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV; + }; + + struct PhysicalDeviceDeviceMemoryReportFeaturesEXT + { + using NativeType = VkPhysicalDeviceDeviceMemoryReportFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceMemoryReportFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 deviceMemoryReport_ = {} ) VULKAN_HPP_NOEXCEPT + : deviceMemoryReport( deviceMemoryReport_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceMemoryReportFeaturesEXT( + PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDeviceMemoryReportFeaturesEXT( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDeviceMemoryReportFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDeviceMemoryReportFeaturesEXT & + operator=( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDeviceMemoryReportFeaturesEXT & + operator=( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceMemoryReportFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceMemoryReportFeaturesEXT & + setDeviceMemoryReport( VULKAN_HPP_NAMESPACE::Bool32 deviceMemoryReport_ ) VULKAN_HPP_NOEXCEPT + { + deviceMemoryReport = deviceMemoryReport_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceMemoryReport ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceMemoryReport == rhs.deviceMemoryReport ); +# endif + } + + bool operator!=( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 deviceMemoryReport = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT ) == + sizeof( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceDeviceMemoryReportFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceMemoryReportFeaturesEXT; + }; + + struct PhysicalDeviceDiagnosticsConfigFeaturesNV + { + using NativeType = VkPhysicalDeviceDiagnosticsConfigFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDiagnosticsConfigFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 diagnosticsConfig_ = {} ) VULKAN_HPP_NOEXCEPT + : diagnosticsConfig( diagnosticsConfig_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDiagnosticsConfigFeaturesNV( + PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDiagnosticsConfigFeaturesNV( VkPhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDiagnosticsConfigFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDiagnosticsConfigFeaturesNV & + operator=( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDiagnosticsConfigFeaturesNV & + operator=( VkPhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiagnosticsConfigFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiagnosticsConfigFeaturesNV & + setDiagnosticsConfig( VULKAN_HPP_NAMESPACE::Bool32 diagnosticsConfig_ ) VULKAN_HPP_NOEXCEPT + { + diagnosticsConfig = diagnosticsConfig_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, diagnosticsConfig ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDiagnosticsConfigFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( diagnosticsConfig == rhs.diagnosticsConfig ); +# endif + } + + bool operator!=( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 diagnosticsConfig = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV ) == + sizeof( VkPhysicalDeviceDiagnosticsConfigFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceDiagnosticsConfigFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceDiagnosticsConfigFeaturesNV; + }; + + struct PhysicalDeviceDiscardRectanglePropertiesEXT + { + using NativeType = VkPhysicalDeviceDiscardRectanglePropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = {} ) VULKAN_HPP_NOEXCEPT + : maxDiscardRectangles( maxDiscardRectangles_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDiscardRectanglePropertiesEXT( + PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDiscardRectanglePropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDiscardRectanglePropertiesEXT & + operator=( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDiscardRectanglePropertiesEXT & + operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceDiscardRectanglePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceDiscardRectanglePropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxDiscardRectangles ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDiscardRectanglePropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxDiscardRectangles == rhs.maxDiscardRectangles ); +# endif + } + + bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT; + void * pNext = {}; + uint32_t maxDiscardRectangles = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT ) == + sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceDiscardRectanglePropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceDiscardRectanglePropertiesEXT; + }; + + struct PhysicalDeviceDriverProperties + { + using NativeType = VkPhysicalDeviceDriverProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDriverProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDriverProperties( + VULKAN_HPP_NAMESPACE::DriverId driverID_ = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary, + std::array const & driverName_ = {}, + std::array const & driverInfo_ = {}, + VULKAN_HPP_NAMESPACE::ConformanceVersion conformanceVersion_ = {} ) VULKAN_HPP_NOEXCEPT + : driverID( driverID_ ) + , driverName( driverName_ ) + , driverInfo( driverInfo_ ) + , conformanceVersion( conformanceVersion_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceDriverProperties( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDriverProperties( VkPhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDriverProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDriverProperties & + operator=( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDriverProperties & operator=( VkPhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceDriverProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceDriverProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + VULKAN_HPP_NAMESPACE::ConformanceVersion const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, driverID, driverName, driverInfo, conformanceVersion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDriverProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceDriverProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( driverID == rhs.driverID ) && + ( driverName == rhs.driverName ) && ( driverInfo == rhs.driverInfo ) && + ( conformanceVersion == rhs.conformanceVersion ); +# endif + } + + bool operator!=( PhysicalDeviceDriverProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDriverProperties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::DriverId driverID = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D driverName = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D driverInfo = {}; + VULKAN_HPP_NAMESPACE::ConformanceVersion conformanceVersion = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties ) == + sizeof( VkPhysicalDeviceDriverProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceDriverProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceDriverProperties; + }; + using PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties; + + struct PhysicalDeviceDrmPropertiesEXT + { + using NativeType = VkPhysicalDeviceDrmPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDrmPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDrmPropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 hasPrimary_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 hasRender_ = {}, + int64_t primaryMajor_ = {}, + int64_t primaryMinor_ = {}, + int64_t renderMajor_ = {}, + int64_t renderMinor_ = {} ) VULKAN_HPP_NOEXCEPT + : hasPrimary( hasPrimary_ ) + , hasRender( hasRender_ ) + , primaryMajor( primaryMajor_ ) + , primaryMinor( primaryMinor_ ) + , renderMajor( renderMajor_ ) + , renderMinor( renderMinor_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDrmPropertiesEXT( PhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDrmPropertiesEXT( VkPhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDrmPropertiesEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDrmPropertiesEXT & + operator=( PhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDrmPropertiesEXT & operator=( VkPhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceDrmPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceDrmPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, hasPrimary, hasRender, primaryMajor, primaryMinor, renderMajor, renderMinor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDrmPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDrmPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hasPrimary == rhs.hasPrimary ) && + ( hasRender == rhs.hasRender ) && ( primaryMajor == rhs.primaryMajor ) && + ( primaryMinor == rhs.primaryMinor ) && ( renderMajor == rhs.renderMajor ) && + ( renderMinor == rhs.renderMinor ); +# endif + } + + bool operator!=( PhysicalDeviceDrmPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDrmPropertiesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 hasPrimary = {}; + VULKAN_HPP_NAMESPACE::Bool32 hasRender = {}; + int64_t primaryMajor = {}; + int64_t primaryMinor = {}; + int64_t renderMajor = {}; + int64_t renderMinor = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT ) == + sizeof( VkPhysicalDeviceDrmPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceDrmPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceDrmPropertiesEXT; + }; + + struct PhysicalDeviceDynamicRenderingFeatures + { + using NativeType = VkPhysicalDeviceDynamicRenderingFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceDynamicRenderingFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDynamicRenderingFeatures( VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ = {} ) VULKAN_HPP_NOEXCEPT + : dynamicRendering( dynamicRendering_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingFeatures( PhysicalDeviceDynamicRenderingFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDynamicRenderingFeatures( VkPhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDynamicRenderingFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDynamicRenderingFeatures & + operator=( PhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDynamicRenderingFeatures & + operator=( VkPhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingFeatures & + setDynamicRendering( VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ ) VULKAN_HPP_NOEXCEPT + { + dynamicRendering = dynamicRendering_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceDynamicRenderingFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceDynamicRenderingFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dynamicRendering ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDynamicRenderingFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceDynamicRenderingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dynamicRendering == rhs.dynamicRendering ); +# endif + } + + bool operator!=( PhysicalDeviceDynamicRenderingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDynamicRenderingFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures ) == + sizeof( VkPhysicalDeviceDynamicRenderingFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceDynamicRenderingFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceDynamicRenderingFeatures; + }; + using PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures; + + struct PhysicalDeviceExclusiveScissorFeaturesNV + { + using NativeType = VkPhysicalDeviceExclusiveScissorFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExclusiveScissorFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 exclusiveScissor_ = {} ) + VULKAN_HPP_NOEXCEPT : exclusiveScissor( exclusiveScissor_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceExclusiveScissorFeaturesNV( + PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExclusiveScissorFeaturesNV( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExclusiveScissorFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceExclusiveScissorFeaturesNV & + operator=( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExclusiveScissorFeaturesNV & + operator=( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExclusiveScissorFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExclusiveScissorFeaturesNV & + setExclusiveScissor( VULKAN_HPP_NAMESPACE::Bool32 exclusiveScissor_ ) VULKAN_HPP_NOEXCEPT + { + exclusiveScissor = exclusiveScissor_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceExclusiveScissorFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceExclusiveScissorFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, exclusiveScissor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExclusiveScissorFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exclusiveScissor == rhs.exclusiveScissor ); +# endif + } + + bool operator!=( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 exclusiveScissor = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV ) == + sizeof( VkPhysicalDeviceExclusiveScissorFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceExclusiveScissorFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceExclusiveScissorFeaturesNV; + }; + + struct PhysicalDeviceExtendedDynamicState2FeaturesEXT + { + using NativeType = VkPhysicalDeviceExtendedDynamicState2FeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicState2FeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2LogicOp_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2PatchControlPoints_ = {} ) VULKAN_HPP_NOEXCEPT + : extendedDynamicState2( extendedDynamicState2_ ) + , extendedDynamicState2LogicOp( extendedDynamicState2LogicOp_ ) + , extendedDynamicState2PatchControlPoints( extendedDynamicState2PatchControlPoints_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicState2FeaturesEXT( + PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExtendedDynamicState2FeaturesEXT( VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExtendedDynamicState2FeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceExtendedDynamicState2FeaturesEXT & + operator=( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExtendedDynamicState2FeaturesEXT & + operator=( VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT & + setExtendedDynamicState2( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2_ ) VULKAN_HPP_NOEXCEPT + { + extendedDynamicState2 = extendedDynamicState2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT & + setExtendedDynamicState2LogicOp( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2LogicOp_ ) VULKAN_HPP_NOEXCEPT + { + extendedDynamicState2LogicOp = extendedDynamicState2LogicOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT & setExtendedDynamicState2PatchControlPoints( + VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2PatchControlPoints_ ) VULKAN_HPP_NOEXCEPT + { + extendedDynamicState2PatchControlPoints = extendedDynamicState2PatchControlPoints_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, extendedDynamicState2, extendedDynamicState2LogicOp, extendedDynamicState2PatchControlPoints ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( extendedDynamicState2 == rhs.extendedDynamicState2 ) && + ( extendedDynamicState2LogicOp == rhs.extendedDynamicState2LogicOp ) && + ( extendedDynamicState2PatchControlPoints == rhs.extendedDynamicState2PatchControlPoints ); +# endif + } + + bool operator!=( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2 = {}; + VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2LogicOp = {}; + VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2PatchControlPoints = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT ) == + sizeof( VkPhysicalDeviceExtendedDynamicState2FeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceExtendedDynamicState2FeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceExtendedDynamicState2FeaturesEXT; + }; + + struct PhysicalDeviceExtendedDynamicStateFeaturesEXT + { + using NativeType = VkPhysicalDeviceExtendedDynamicStateFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicStateFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState_ = {} ) VULKAN_HPP_NOEXCEPT + : extendedDynamicState( extendedDynamicState_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicStateFeaturesEXT( + PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExtendedDynamicStateFeaturesEXT( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExtendedDynamicStateFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceExtendedDynamicStateFeaturesEXT & + operator=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExtendedDynamicStateFeaturesEXT & + operator=( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT & + setExtendedDynamicState( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState_ ) VULKAN_HPP_NOEXCEPT + { + extendedDynamicState = extendedDynamicState_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, extendedDynamicState ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( extendedDynamicState == rhs.extendedDynamicState ); +# endif + } + + bool operator!=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT ) == + sizeof( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceExtendedDynamicStateFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceExtendedDynamicStateFeaturesEXT; + }; + + struct PhysicalDeviceExternalBufferInfo + { + using NativeType = VkPhysicalDeviceExternalBufferInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalBufferInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalBufferInfo( + VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ = {}, + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , usage( usage_ ) + , handleType( handleType_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceExternalBufferInfo( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalBufferInfo( VkPhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalBufferInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceExternalBufferInfo & + operator=( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalBufferInfo & operator=( VkPhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & + setFlags( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & + setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceExternalBufferInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceExternalBufferInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, usage, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalBufferInfo const & ) const = default; +#else + bool operator==( PhysicalDeviceExternalBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( usage == rhs.usage ) && + ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( PhysicalDeviceExternalBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalBufferInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::BufferCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::BufferUsageFlags usage = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo ) == + sizeof( VkPhysicalDeviceExternalBufferInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalBufferInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalBufferInfo; + }; + using PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo; + + struct PhysicalDeviceExternalFenceInfo + { + using NativeType = VkPhysicalDeviceExternalFenceInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalFenceInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFenceInfo( + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT + : handleType( handleType_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceExternalFenceInfo( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalFenceInfo( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalFenceInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceExternalFenceInfo & + operator=( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalFenceInfo & operator=( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceExternalFenceInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceExternalFenceInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalFenceInfo const & ) const = default; +#else + bool operator==( PhysicalDeviceExternalFenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( PhysicalDeviceExternalFenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalFenceInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo ) == + sizeof( VkPhysicalDeviceExternalFenceInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalFenceInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalFenceInfo; + }; + using PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo; + + struct PhysicalDeviceExternalImageFormatInfo + { + using NativeType = VkPhysicalDeviceExternalImageFormatInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceExternalImageFormatInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalImageFormatInfo( + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT + : handleType( handleType_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalImageFormatInfo( PhysicalDeviceExternalImageFormatInfo const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalImageFormatInfo( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalImageFormatInfo( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceExternalImageFormatInfo & + operator=( PhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalImageFormatInfo & + operator=( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceExternalImageFormatInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceExternalImageFormatInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalImageFormatInfo const & ) const = default; +#else + bool operator==( PhysicalDeviceExternalImageFormatInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( PhysicalDeviceExternalImageFormatInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalImageFormatInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo ) == + sizeof( VkPhysicalDeviceExternalImageFormatInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalImageFormatInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalImageFormatInfo; + }; + using PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo; + + struct PhysicalDeviceExternalMemoryHostPropertiesEXT + { + using NativeType = VkPhysicalDeviceExternalMemoryHostPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryHostPropertiesEXT( + VULKAN_HPP_NAMESPACE::DeviceSize minImportedHostPointerAlignment_ = {} ) VULKAN_HPP_NOEXCEPT + : minImportedHostPointerAlignment( minImportedHostPointerAlignment_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryHostPropertiesEXT( + PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalMemoryHostPropertiesEXT( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalMemoryHostPropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceExternalMemoryHostPropertiesEXT & + operator=( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalMemoryHostPropertiesEXT & + operator=( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minImportedHostPointerAlignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalMemoryHostPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( minImportedHostPointerAlignment == rhs.minImportedHostPointerAlignment ); +# endif + } + + bool operator!=( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceSize minImportedHostPointerAlignment = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT ) == + sizeof( VkPhysicalDeviceExternalMemoryHostPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalMemoryHostPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalMemoryHostPropertiesEXT; + }; + + struct PhysicalDeviceExternalMemoryRDMAFeaturesNV + { + using NativeType = VkPhysicalDeviceExternalMemoryRDMAFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceExternalMemoryRdmaFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryRDMAFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 externalMemoryRDMA_ = {} ) VULKAN_HPP_NOEXCEPT + : externalMemoryRDMA( externalMemoryRDMA_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryRDMAFeaturesNV( + PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalMemoryRDMAFeaturesNV( VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalMemoryRDMAFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceExternalMemoryRDMAFeaturesNV & + operator=( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalMemoryRDMAFeaturesNV & + operator=( VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryRDMAFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryRDMAFeaturesNV & + setExternalMemoryRDMA( VULKAN_HPP_NAMESPACE::Bool32 externalMemoryRDMA_ ) VULKAN_HPP_NOEXCEPT + { + externalMemoryRDMA = externalMemoryRDMA_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, externalMemoryRDMA ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalMemoryRDMA == rhs.externalMemoryRDMA ); +# endif + } + + bool operator!=( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalMemoryRdmaFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 externalMemoryRDMA = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV ) == + sizeof( VkPhysicalDeviceExternalMemoryRDMAFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalMemoryRDMAFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalMemoryRDMAFeaturesNV; + }; + + struct PhysicalDeviceExternalSemaphoreInfo + { + using NativeType = VkPhysicalDeviceExternalSemaphoreInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceExternalSemaphoreInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSemaphoreInfo( + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT + : handleType( handleType_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSemaphoreInfo( PhysicalDeviceExternalSemaphoreInfo const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalSemaphoreInfo( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalSemaphoreInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceExternalSemaphoreInfo & + operator=( PhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalSemaphoreInfo & + operator=( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceExternalSemaphoreInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceExternalSemaphoreInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalSemaphoreInfo const & ) const = default; +#else + bool operator==( PhysicalDeviceExternalSemaphoreInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( PhysicalDeviceExternalSemaphoreInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalSemaphoreInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo ) == + sizeof( VkPhysicalDeviceExternalSemaphoreInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalSemaphoreInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalSemaphoreInfo; + }; + using PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo; + + struct PhysicalDeviceFeatures2 + { + using NativeType = VkPhysicalDeviceFeatures2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFeatures2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFeatures2( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features_ = {} ) VULKAN_HPP_NOEXCEPT + : features( features_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures2( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFeatures2( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFeatures2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFeatures2 & operator=( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFeatures2 & operator=( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 & + setFeatures( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const & features_ ) VULKAN_HPP_NOEXCEPT + { + features = features_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceFeatures2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFeatures2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, features ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFeatures2 const & ) const = default; +#else + bool operator==( PhysicalDeviceFeatures2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( features == rhs.features ); +# endif + } + + bool operator!=( PhysicalDeviceFeatures2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFeatures2; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 ) == + sizeof( VkPhysicalDeviceFeatures2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFeatures2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceFeatures2; + }; + using PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2; + + struct PhysicalDeviceFloatControlsProperties + { + using NativeType = VkPhysicalDeviceFloatControlsProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceFloatControlsProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFloatControlsProperties( + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence_ = + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly, + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence_ = + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly, + VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat32_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat64_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat32_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat64_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat32_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat64_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat32_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat64_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat32_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat64_ = {} ) VULKAN_HPP_NOEXCEPT + : denormBehaviorIndependence( denormBehaviorIndependence_ ) + , roundingModeIndependence( roundingModeIndependence_ ) + , shaderSignedZeroInfNanPreserveFloat16( shaderSignedZeroInfNanPreserveFloat16_ ) + , shaderSignedZeroInfNanPreserveFloat32( shaderSignedZeroInfNanPreserveFloat32_ ) + , shaderSignedZeroInfNanPreserveFloat64( shaderSignedZeroInfNanPreserveFloat64_ ) + , shaderDenormPreserveFloat16( shaderDenormPreserveFloat16_ ) + , shaderDenormPreserveFloat32( shaderDenormPreserveFloat32_ ) + , shaderDenormPreserveFloat64( shaderDenormPreserveFloat64_ ) + , shaderDenormFlushToZeroFloat16( shaderDenormFlushToZeroFloat16_ ) + , shaderDenormFlushToZeroFloat32( shaderDenormFlushToZeroFloat32_ ) + , shaderDenormFlushToZeroFloat64( shaderDenormFlushToZeroFloat64_ ) + , shaderRoundingModeRTEFloat16( shaderRoundingModeRTEFloat16_ ) + , shaderRoundingModeRTEFloat32( shaderRoundingModeRTEFloat32_ ) + , shaderRoundingModeRTEFloat64( shaderRoundingModeRTEFloat64_ ) + , shaderRoundingModeRTZFloat16( shaderRoundingModeRTZFloat16_ ) + , shaderRoundingModeRTZFloat32( shaderRoundingModeRTZFloat32_ ) + , shaderRoundingModeRTZFloat64( shaderRoundingModeRTZFloat64_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFloatControlsProperties( PhysicalDeviceFloatControlsProperties const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFloatControlsProperties( VkPhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFloatControlsProperties( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFloatControlsProperties & + operator=( PhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFloatControlsProperties & + operator=( VkPhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceFloatControlsProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFloatControlsProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + denormBehaviorIndependence, + roundingModeIndependence, + shaderSignedZeroInfNanPreserveFloat16, + shaderSignedZeroInfNanPreserveFloat32, + shaderSignedZeroInfNanPreserveFloat64, + shaderDenormPreserveFloat16, + shaderDenormPreserveFloat32, + shaderDenormPreserveFloat64, + shaderDenormFlushToZeroFloat16, + shaderDenormFlushToZeroFloat32, + shaderDenormFlushToZeroFloat64, + shaderRoundingModeRTEFloat16, + shaderRoundingModeRTEFloat32, + shaderRoundingModeRTEFloat64, + shaderRoundingModeRTZFloat16, + shaderRoundingModeRTZFloat32, + shaderRoundingModeRTZFloat64 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFloatControlsProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceFloatControlsProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( denormBehaviorIndependence == rhs.denormBehaviorIndependence ) && + ( roundingModeIndependence == rhs.roundingModeIndependence ) && + ( shaderSignedZeroInfNanPreserveFloat16 == rhs.shaderSignedZeroInfNanPreserveFloat16 ) && + ( shaderSignedZeroInfNanPreserveFloat32 == rhs.shaderSignedZeroInfNanPreserveFloat32 ) && + ( shaderSignedZeroInfNanPreserveFloat64 == rhs.shaderSignedZeroInfNanPreserveFloat64 ) && + ( shaderDenormPreserveFloat16 == rhs.shaderDenormPreserveFloat16 ) && + ( shaderDenormPreserveFloat32 == rhs.shaderDenormPreserveFloat32 ) && + ( shaderDenormPreserveFloat64 == rhs.shaderDenormPreserveFloat64 ) && + ( shaderDenormFlushToZeroFloat16 == rhs.shaderDenormFlushToZeroFloat16 ) && + ( shaderDenormFlushToZeroFloat32 == rhs.shaderDenormFlushToZeroFloat32 ) && + ( shaderDenormFlushToZeroFloat64 == rhs.shaderDenormFlushToZeroFloat64 ) && + ( shaderRoundingModeRTEFloat16 == rhs.shaderRoundingModeRTEFloat16 ) && + ( shaderRoundingModeRTEFloat32 == rhs.shaderRoundingModeRTEFloat32 ) && + ( shaderRoundingModeRTEFloat64 == rhs.shaderRoundingModeRTEFloat64 ) && + ( shaderRoundingModeRTZFloat16 == rhs.shaderRoundingModeRTZFloat16 ) && + ( shaderRoundingModeRTZFloat32 == rhs.shaderRoundingModeRTZFloat32 ) && + ( shaderRoundingModeRTZFloat64 == rhs.shaderRoundingModeRTZFloat64 ); +# endif + } + + bool operator!=( PhysicalDeviceFloatControlsProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFloatControlsProperties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence = + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly; + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence = + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly; + VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat32 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat64 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat32 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat64 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat32 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat64 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat32 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat64 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat32 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat64 = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties ) == + sizeof( VkPhysicalDeviceFloatControlsProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceFloatControlsProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceFloatControlsProperties; + }; + using PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties; + + struct PhysicalDeviceFragmentDensityMap2FeaturesEXT + { + using NativeType = VkPhysicalDeviceFragmentDensityMap2FeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2FeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDeferred_ = {} ) VULKAN_HPP_NOEXCEPT + : fragmentDensityMapDeferred( fragmentDensityMapDeferred_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2FeaturesEXT( + PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMap2FeaturesEXT( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentDensityMap2FeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFragmentDensityMap2FeaturesEXT & + operator=( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMap2FeaturesEXT & + operator=( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2FeaturesEXT & + setFragmentDensityMapDeferred( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDeferred_ ) VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapDeferred = fragmentDensityMapDeferred_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentDensityMapDeferred ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( fragmentDensityMapDeferred == rhs.fragmentDensityMapDeferred ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDeferred = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT ) == + sizeof( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentDensityMap2FeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMap2FeaturesEXT; + }; + + struct PhysicalDeviceFragmentDensityMap2PropertiesEXT + { + using NativeType = VkPhysicalDeviceFragmentDensityMap2PropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2PropertiesEXT( + VULKAN_HPP_NAMESPACE::Bool32 subsampledLoads_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 subsampledCoarseReconstructionEarlyAccess_ = {}, + uint32_t maxSubsampledArrayLayers_ = {}, + uint32_t maxDescriptorSetSubsampledSamplers_ = {} ) VULKAN_HPP_NOEXCEPT + : subsampledLoads( subsampledLoads_ ) + , subsampledCoarseReconstructionEarlyAccess( subsampledCoarseReconstructionEarlyAccess_ ) + , maxSubsampledArrayLayers( maxSubsampledArrayLayers_ ) + , maxDescriptorSetSubsampledSamplers( maxDescriptorSetSubsampledSamplers_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2PropertiesEXT( + PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMap2PropertiesEXT( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentDensityMap2PropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFragmentDensityMap2PropertiesEXT & + operator=( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMap2PropertiesEXT & + operator=( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + subsampledLoads, + subsampledCoarseReconstructionEarlyAccess, + maxSubsampledArrayLayers, + maxDescriptorSetSubsampledSamplers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subsampledLoads == rhs.subsampledLoads ) && + ( subsampledCoarseReconstructionEarlyAccess == rhs.subsampledCoarseReconstructionEarlyAccess ) && + ( maxSubsampledArrayLayers == rhs.maxSubsampledArrayLayers ) && + ( maxDescriptorSetSubsampledSamplers == rhs.maxDescriptorSetSubsampledSamplers ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 subsampledLoads = {}; + VULKAN_HPP_NAMESPACE::Bool32 subsampledCoarseReconstructionEarlyAccess = {}; + uint32_t maxSubsampledArrayLayers = {}; + uint32_t maxDescriptorSetSubsampledSamplers = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT ) == + sizeof( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentDensityMap2PropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMap2PropertiesEXT; + }; + + struct PhysicalDeviceFragmentDensityMapFeaturesEXT + { + using NativeType = VkPhysicalDeviceFragmentDensityMapFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMap_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDynamic_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapNonSubsampledImages_ = {} ) VULKAN_HPP_NOEXCEPT + : fragmentDensityMap( fragmentDensityMap_ ) + , fragmentDensityMapDynamic( fragmentDensityMapDynamic_ ) + , fragmentDensityMapNonSubsampledImages( fragmentDensityMapNonSubsampledImages_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapFeaturesEXT( + PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMapFeaturesEXT( VkPhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentDensityMapFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFragmentDensityMapFeaturesEXT & + operator=( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMapFeaturesEXT & + operator=( VkPhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT & + setFragmentDensityMap( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMap_ ) VULKAN_HPP_NOEXCEPT + { + fragmentDensityMap = fragmentDensityMap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT & + setFragmentDensityMapDynamic( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDynamic_ ) VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapDynamic = fragmentDensityMapDynamic_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT & setFragmentDensityMapNonSubsampledImages( + VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapNonSubsampledImages_ ) VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapNonSubsampledImages = fragmentDensityMapNonSubsampledImages_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, fragmentDensityMap, fragmentDensityMapDynamic, fragmentDensityMapNonSubsampledImages ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentDensityMapFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityMap == rhs.fragmentDensityMap ) && + ( fragmentDensityMapDynamic == rhs.fragmentDensityMapDynamic ) && + ( fragmentDensityMapNonSubsampledImages == rhs.fragmentDensityMapNonSubsampledImages ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMap = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDynamic = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapNonSubsampledImages = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT ) == + sizeof( VkPhysicalDeviceFragmentDensityMapFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentDensityMapFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapFeaturesEXT; + }; + + struct PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM + { + using NativeType = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM( + VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapOffset_ = {} ) VULKAN_HPP_NOEXCEPT + : fragmentDensityMapOffset( fragmentDensityMapOffset_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM( + PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM( + VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM & + operator=( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM & + operator=( VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM & + setFragmentDensityMapOffset( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapOffset_ ) VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapOffset = fragmentDensityMapOffset_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentDensityMapOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( fragmentDensityMapOffset == rhs.fragmentDensityMapOffset ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapOffset = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM ) == + sizeof( VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM; + }; + + struct PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM + { + using NativeType = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM( + VULKAN_HPP_NAMESPACE::Extent2D fragmentDensityOffsetGranularity_ = {} ) VULKAN_HPP_NOEXCEPT + : fragmentDensityOffsetGranularity( fragmentDensityOffsetGranularity_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM( + PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM( + VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM & + operator=( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM & + operator=( VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentDensityOffsetGranularity ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( fragmentDensityOffsetGranularity == rhs.fragmentDensityOffsetGranularity ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Extent2D fragmentDensityOffsetGranularity = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM ) == + sizeof( VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM>::value, + "PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM; + }; + + struct PhysicalDeviceFragmentDensityMapPropertiesEXT + { + using NativeType = VkPhysicalDeviceFragmentDensityMapPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapPropertiesEXT( + VULKAN_HPP_NAMESPACE::Extent2D minFragmentDensityTexelSize_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D maxFragmentDensityTexelSize_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityInvocations_ = {} ) VULKAN_HPP_NOEXCEPT + : minFragmentDensityTexelSize( minFragmentDensityTexelSize_ ) + , maxFragmentDensityTexelSize( maxFragmentDensityTexelSize_ ) + , fragmentDensityInvocations( fragmentDensityInvocations_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapPropertiesEXT( + PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMapPropertiesEXT( VkPhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentDensityMapPropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFragmentDensityMapPropertiesEXT & + operator=( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMapPropertiesEXT & + operator=( VkPhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, minFragmentDensityTexelSize, maxFragmentDensityTexelSize, fragmentDensityInvocations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentDensityMapPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( minFragmentDensityTexelSize == rhs.minFragmentDensityTexelSize ) && + ( maxFragmentDensityTexelSize == rhs.maxFragmentDensityTexelSize ) && + ( fragmentDensityInvocations == rhs.fragmentDensityInvocations ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Extent2D minFragmentDensityTexelSize = {}; + VULKAN_HPP_NAMESPACE::Extent2D maxFragmentDensityTexelSize = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityInvocations = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT ) == + sizeof( VkPhysicalDeviceFragmentDensityMapPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentDensityMapPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapPropertiesEXT; + }; + + struct PhysicalDeviceFragmentShaderBarycentricFeaturesNV + { + using NativeType = VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderBarycentricFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderBarycentric_ = {} ) VULKAN_HPP_NOEXCEPT + : fragmentShaderBarycentric( fragmentShaderBarycentric_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderBarycentricFeaturesNV( + PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShaderBarycentricFeaturesNV( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentShaderBarycentricFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFragmentShaderBarycentricFeaturesNV & + operator=( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShaderBarycentricFeaturesNV & + operator=( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderBarycentricFeaturesNV & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderBarycentricFeaturesNV & + setFragmentShaderBarycentric( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderBarycentric_ ) VULKAN_HPP_NOEXCEPT + { + fragmentShaderBarycentric = fragmentShaderBarycentric_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentShaderBarycentric ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( fragmentShaderBarycentric == rhs.fragmentShaderBarycentric ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderBarycentric = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV ) == + sizeof( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentShaderBarycentricFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShaderBarycentricFeaturesNV; + }; + + struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT + { + using NativeType = VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderInterlockFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderShadingRateInterlock_ = {} ) VULKAN_HPP_NOEXCEPT + : fragmentShaderSampleInterlock( fragmentShaderSampleInterlock_ ) + , fragmentShaderPixelInterlock( fragmentShaderPixelInterlock_ ) + , fragmentShaderShadingRateInterlock( fragmentShaderShadingRateInterlock_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderInterlockFeaturesEXT( + PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShaderInterlockFeaturesEXT( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentShaderInterlockFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFragmentShaderInterlockFeaturesEXT & + operator=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShaderInterlockFeaturesEXT & + operator=( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setFragmentShaderSampleInterlock( + VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock_ ) VULKAN_HPP_NOEXCEPT + { + fragmentShaderSampleInterlock = fragmentShaderSampleInterlock_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & + setFragmentShaderPixelInterlock( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock_ ) VULKAN_HPP_NOEXCEPT + { + fragmentShaderPixelInterlock = fragmentShaderPixelInterlock_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setFragmentShaderShadingRateInterlock( + VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderShadingRateInterlock_ ) VULKAN_HPP_NOEXCEPT + { + fragmentShaderShadingRateInterlock = fragmentShaderShadingRateInterlock_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, fragmentShaderSampleInterlock, fragmentShaderPixelInterlock, fragmentShaderShadingRateInterlock ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( fragmentShaderSampleInterlock == rhs.fragmentShaderSampleInterlock ) && + ( fragmentShaderPixelInterlock == rhs.fragmentShaderPixelInterlock ) && + ( fragmentShaderShadingRateInterlock == rhs.fragmentShaderShadingRateInterlock ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderShadingRateInterlock = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT ) == + sizeof( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentShaderInterlockFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShaderInterlockFeaturesEXT; + }; + + struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV + { + using NativeType = VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateEnums_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 supersampleFragmentShadingRates_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 noInvocationFragmentShadingRates_ = {} ) VULKAN_HPP_NOEXCEPT + : fragmentShadingRateEnums( fragmentShadingRateEnums_ ) + , supersampleFragmentShadingRates( supersampleFragmentShadingRates_ ) + , noInvocationFragmentShadingRates( noInvocationFragmentShadingRates_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( + PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & + operator=( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & + operator=( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & + setFragmentShadingRateEnums( VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateEnums_ ) VULKAN_HPP_NOEXCEPT + { + fragmentShadingRateEnums = fragmentShadingRateEnums_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & setSupersampleFragmentShadingRates( + VULKAN_HPP_NAMESPACE::Bool32 supersampleFragmentShadingRates_ ) VULKAN_HPP_NOEXCEPT + { + supersampleFragmentShadingRates = supersampleFragmentShadingRates_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & setNoInvocationFragmentShadingRates( + VULKAN_HPP_NAMESPACE::Bool32 noInvocationFragmentShadingRates_ ) VULKAN_HPP_NOEXCEPT + { + noInvocationFragmentShadingRates = noInvocationFragmentShadingRates_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, fragmentShadingRateEnums, supersampleFragmentShadingRates, noInvocationFragmentShadingRates ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( fragmentShadingRateEnums == rhs.fragmentShadingRateEnums ) && + ( supersampleFragmentShadingRates == rhs.supersampleFragmentShadingRates ) && + ( noInvocationFragmentShadingRates == rhs.noInvocationFragmentShadingRates ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateEnums = {}; + VULKAN_HPP_NAMESPACE::Bool32 supersampleFragmentShadingRates = {}; + VULKAN_HPP_NAMESPACE::Bool32 noInvocationFragmentShadingRates = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV ) == + sizeof( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentShadingRateEnumsFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShadingRateEnumsFeaturesNV; + }; + + struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV + { + using NativeType = VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( + VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount_ = + VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1 ) VULKAN_HPP_NOEXCEPT + : maxFragmentShadingRateInvocationCount( maxFragmentShadingRateInvocationCount_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( + PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( + VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & + operator=( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & + operator=( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & + setMaxFragmentShadingRateInvocationCount( + VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount_ ) VULKAN_HPP_NOEXCEPT + { + maxFragmentShadingRateInvocationCount = maxFragmentShadingRateInvocationCount_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxFragmentShadingRateInvocationCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( maxFragmentShadingRateInvocationCount == rhs.maxFragmentShadingRateInvocationCount ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount = + VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV ) == + sizeof( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentShadingRateEnumsPropertiesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShadingRateEnumsPropertiesNV; + }; + + struct PhysicalDeviceFragmentShadingRateFeaturesKHR + { + using NativeType = VkPhysicalDeviceFragmentShadingRateFeaturesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateFeaturesKHR( + VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 attachmentFragmentShadingRate_ = {} ) VULKAN_HPP_NOEXCEPT + : pipelineFragmentShadingRate( pipelineFragmentShadingRate_ ) + , primitiveFragmentShadingRate( primitiveFragmentShadingRate_ ) + , attachmentFragmentShadingRate( attachmentFragmentShadingRate_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateFeaturesKHR( + PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShadingRateFeaturesKHR( VkPhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentShadingRateFeaturesKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFragmentShadingRateFeaturesKHR & + operator=( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShadingRateFeaturesKHR & + operator=( VkPhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & + setPipelineFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT + { + pipelineFragmentShadingRate = pipelineFragmentShadingRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & + setPrimitiveFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT + { + primitiveFragmentShadingRate = primitiveFragmentShadingRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & setAttachmentFragmentShadingRate( + VULKAN_HPP_NAMESPACE::Bool32 attachmentFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT + { + attachmentFragmentShadingRate = attachmentFragmentShadingRate_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, pipelineFragmentShadingRate, primitiveFragmentShadingRate, attachmentFragmentShadingRate ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentShadingRateFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( pipelineFragmentShadingRate == rhs.pipelineFragmentShadingRate ) && + ( primitiveFragmentShadingRate == rhs.primitiveFragmentShadingRate ) && + ( attachmentFragmentShadingRate == rhs.attachmentFragmentShadingRate ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate = {}; + VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate = {}; + VULKAN_HPP_NAMESPACE::Bool32 attachmentFragmentShadingRate = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR ) == + sizeof( VkPhysicalDeviceFragmentShadingRateFeaturesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentShadingRateFeaturesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShadingRateFeaturesKHR; + }; + + struct PhysicalDeviceFragmentShadingRateKHR + { + using NativeType = VkPhysicalDeviceFragmentShadingRateKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceFragmentShadingRateKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFragmentShadingRateKHR( VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D fragmentSize_ = {} ) VULKAN_HPP_NOEXCEPT + : sampleCounts( sampleCounts_ ) + , fragmentSize( fragmentSize_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateKHR( PhysicalDeviceFragmentShadingRateKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShadingRateKHR( VkPhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentShadingRateKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFragmentShadingRateKHR & + operator=( PhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShadingRateKHR & + operator=( VkPhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceFragmentShadingRateKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFragmentShadingRateKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, sampleCounts, fragmentSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentShadingRateKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentShadingRateKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleCounts == rhs.sampleCounts ) && + ( fragmentSize == rhs.fragmentSize ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentShadingRateKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts = {}; + VULKAN_HPP_NAMESPACE::Extent2D fragmentSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR ) == + sizeof( VkPhysicalDeviceFragmentShadingRateKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentShadingRateKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShadingRateKHR; + }; + + struct PhysicalDeviceFragmentShadingRatePropertiesKHR + { + using NativeType = VkPhysicalDeviceFragmentShadingRatePropertiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRatePropertiesKHR( + VULKAN_HPP_NAMESPACE::Extent2D minFragmentShadingRateAttachmentTexelSize_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D maxFragmentShadingRateAttachmentTexelSize_ = {}, + uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRateWithMultipleViewports_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 layeredShadingRateAttachments_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateNonTrivialCombinerOps_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D maxFragmentSize_ = {}, + uint32_t maxFragmentSizeAspectRatio_ = {}, + uint32_t maxFragmentShadingRateCoverageSamples_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateRasterizationSamples_ = + VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderDepthStencilWrites_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithSampleMask_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderSampleMask_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithConservativeRasterization_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithFragmentShaderInterlock_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithCustomSampleLocations_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateStrictMultiplyCombiner_ = {} ) VULKAN_HPP_NOEXCEPT + : minFragmentShadingRateAttachmentTexelSize( minFragmentShadingRateAttachmentTexelSize_ ) + , maxFragmentShadingRateAttachmentTexelSize( maxFragmentShadingRateAttachmentTexelSize_ ) + , maxFragmentShadingRateAttachmentTexelSizeAspectRatio( maxFragmentShadingRateAttachmentTexelSizeAspectRatio_ ) + , primitiveFragmentShadingRateWithMultipleViewports( primitiveFragmentShadingRateWithMultipleViewports_ ) + , layeredShadingRateAttachments( layeredShadingRateAttachments_ ) + , fragmentShadingRateNonTrivialCombinerOps( fragmentShadingRateNonTrivialCombinerOps_ ) + , maxFragmentSize( maxFragmentSize_ ) + , maxFragmentSizeAspectRatio( maxFragmentSizeAspectRatio_ ) + , maxFragmentShadingRateCoverageSamples( maxFragmentShadingRateCoverageSamples_ ) + , maxFragmentShadingRateRasterizationSamples( maxFragmentShadingRateRasterizationSamples_ ) + , fragmentShadingRateWithShaderDepthStencilWrites( fragmentShadingRateWithShaderDepthStencilWrites_ ) + , fragmentShadingRateWithSampleMask( fragmentShadingRateWithSampleMask_ ) + , fragmentShadingRateWithShaderSampleMask( fragmentShadingRateWithShaderSampleMask_ ) + , fragmentShadingRateWithConservativeRasterization( fragmentShadingRateWithConservativeRasterization_ ) + , fragmentShadingRateWithFragmentShaderInterlock( fragmentShadingRateWithFragmentShaderInterlock_ ) + , fragmentShadingRateWithCustomSampleLocations( fragmentShadingRateWithCustomSampleLocations_ ) + , fragmentShadingRateStrictMultiplyCombiner( fragmentShadingRateStrictMultiplyCombiner_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRatePropertiesKHR( + PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShadingRatePropertiesKHR( VkPhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentShadingRatePropertiesKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceFragmentShadingRatePropertiesKHR & + operator=( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShadingRatePropertiesKHR & + operator=( VkPhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + minFragmentShadingRateAttachmentTexelSize, + maxFragmentShadingRateAttachmentTexelSize, + maxFragmentShadingRateAttachmentTexelSizeAspectRatio, + primitiveFragmentShadingRateWithMultipleViewports, + layeredShadingRateAttachments, + fragmentShadingRateNonTrivialCombinerOps, + maxFragmentSize, + maxFragmentSizeAspectRatio, + maxFragmentShadingRateCoverageSamples, + maxFragmentShadingRateRasterizationSamples, + fragmentShadingRateWithShaderDepthStencilWrites, + fragmentShadingRateWithSampleMask, + fragmentShadingRateWithShaderSampleMask, + fragmentShadingRateWithConservativeRasterization, + fragmentShadingRateWithFragmentShaderInterlock, + fragmentShadingRateWithCustomSampleLocations, + fragmentShadingRateStrictMultiplyCombiner ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentShadingRatePropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( minFragmentShadingRateAttachmentTexelSize == rhs.minFragmentShadingRateAttachmentTexelSize ) && + ( maxFragmentShadingRateAttachmentTexelSize == rhs.maxFragmentShadingRateAttachmentTexelSize ) && + ( maxFragmentShadingRateAttachmentTexelSizeAspectRatio == + rhs.maxFragmentShadingRateAttachmentTexelSizeAspectRatio ) && + ( primitiveFragmentShadingRateWithMultipleViewports == + rhs.primitiveFragmentShadingRateWithMultipleViewports ) && + ( layeredShadingRateAttachments == rhs.layeredShadingRateAttachments ) && + ( fragmentShadingRateNonTrivialCombinerOps == rhs.fragmentShadingRateNonTrivialCombinerOps ) && + ( maxFragmentSize == rhs.maxFragmentSize ) && + ( maxFragmentSizeAspectRatio == rhs.maxFragmentSizeAspectRatio ) && + ( maxFragmentShadingRateCoverageSamples == rhs.maxFragmentShadingRateCoverageSamples ) && + ( maxFragmentShadingRateRasterizationSamples == rhs.maxFragmentShadingRateRasterizationSamples ) && + ( fragmentShadingRateWithShaderDepthStencilWrites == + rhs.fragmentShadingRateWithShaderDepthStencilWrites ) && + ( fragmentShadingRateWithSampleMask == rhs.fragmentShadingRateWithSampleMask ) && + ( fragmentShadingRateWithShaderSampleMask == rhs.fragmentShadingRateWithShaderSampleMask ) && + ( fragmentShadingRateWithConservativeRasterization == + rhs.fragmentShadingRateWithConservativeRasterization ) && + ( fragmentShadingRateWithFragmentShaderInterlock == rhs.fragmentShadingRateWithFragmentShaderInterlock ) && + ( fragmentShadingRateWithCustomSampleLocations == rhs.fragmentShadingRateWithCustomSampleLocations ) && + ( fragmentShadingRateStrictMultiplyCombiner == rhs.fragmentShadingRateStrictMultiplyCombiner ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Extent2D minFragmentShadingRateAttachmentTexelSize = {}; + VULKAN_HPP_NAMESPACE::Extent2D maxFragmentShadingRateAttachmentTexelSize = {}; + uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio = {}; + VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRateWithMultipleViewports = {}; + VULKAN_HPP_NAMESPACE::Bool32 layeredShadingRateAttachments = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateNonTrivialCombinerOps = {}; + VULKAN_HPP_NAMESPACE::Extent2D maxFragmentSize = {}; + uint32_t maxFragmentSizeAspectRatio = {}; + uint32_t maxFragmentShadingRateCoverageSamples = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateRasterizationSamples = + VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderDepthStencilWrites = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithSampleMask = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderSampleMask = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithConservativeRasterization = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithFragmentShaderInterlock = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithCustomSampleLocations = {}; + VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateStrictMultiplyCombiner = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR ) == + sizeof( VkPhysicalDeviceFragmentShadingRatePropertiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentShadingRatePropertiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShadingRatePropertiesKHR; + }; + + struct PhysicalDeviceGlobalPriorityQueryFeaturesKHR + { + using NativeType = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceGlobalPriorityQueryFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceGlobalPriorityQueryFeaturesKHR( + VULKAN_HPP_NAMESPACE::Bool32 globalPriorityQuery_ = {} ) VULKAN_HPP_NOEXCEPT + : globalPriorityQuery( globalPriorityQuery_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceGlobalPriorityQueryFeaturesKHR( + PhysicalDeviceGlobalPriorityQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceGlobalPriorityQueryFeaturesKHR( VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceGlobalPriorityQueryFeaturesKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceGlobalPriorityQueryFeaturesKHR & + operator=( PhysicalDeviceGlobalPriorityQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceGlobalPriorityQueryFeaturesKHR & + operator=( VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGlobalPriorityQueryFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGlobalPriorityQueryFeaturesKHR & + setGlobalPriorityQuery( VULKAN_HPP_NAMESPACE::Bool32 globalPriorityQuery_ ) VULKAN_HPP_NOEXCEPT + { + globalPriorityQuery = globalPriorityQuery_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, globalPriorityQuery ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceGlobalPriorityQueryFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceGlobalPriorityQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( globalPriorityQuery == rhs.globalPriorityQuery ); +# endif + } + + bool operator!=( PhysicalDeviceGlobalPriorityQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceGlobalPriorityQueryFeaturesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 globalPriorityQuery = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesKHR ) == + sizeof( VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceGlobalPriorityQueryFeaturesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceGlobalPriorityQueryFeaturesKHR; + }; + using PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeaturesKHR; + + struct PhysicalDeviceGroupProperties + { + using NativeType = VkPhysicalDeviceGroupProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceGroupProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGroupProperties( + uint32_t physicalDeviceCount_ = {}, + std::array const & physicalDevices_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 subsetAllocation_ = {} ) VULKAN_HPP_NOEXCEPT + : physicalDeviceCount( physicalDeviceCount_ ) + , physicalDevices( physicalDevices_ ) + , subsetAllocation( subsetAllocation_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceGroupProperties( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceGroupProperties( VkPhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceGroupProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceGroupProperties & + operator=( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceGroupProperties & operator=( VkPhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceGroupProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceGroupProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple< + VULKAN_HPP_NAMESPACE::StructureType const &, + void * const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + VULKAN_HPP_NAMESPACE::Bool32 const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, physicalDeviceCount, physicalDevices, subsetAllocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceGroupProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceGroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( physicalDeviceCount == rhs.physicalDeviceCount ) && + ( physicalDevices == rhs.physicalDevices ) && ( subsetAllocation == rhs.subsetAllocation ); +# endif + } + + bool operator!=( PhysicalDeviceGroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceGroupProperties; + void * pNext = {}; + uint32_t physicalDeviceCount = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D + physicalDevices = {}; + VULKAN_HPP_NAMESPACE::Bool32 subsetAllocation = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties ) == + sizeof( VkPhysicalDeviceGroupProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceGroupProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceGroupProperties; + }; + using PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties; + + struct PhysicalDeviceHostQueryResetFeatures + { + using NativeType = VkPhysicalDeviceHostQueryResetFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceHostQueryResetFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceHostQueryResetFeatures( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ = {} ) VULKAN_HPP_NOEXCEPT + : hostQueryReset( hostQueryReset_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceHostQueryResetFeatures( PhysicalDeviceHostQueryResetFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceHostQueryResetFeatures( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceHostQueryResetFeatures( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceHostQueryResetFeatures & + operator=( PhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceHostQueryResetFeatures & + operator=( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures & + setHostQueryReset( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ ) VULKAN_HPP_NOEXCEPT + { + hostQueryReset = hostQueryReset_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceHostQueryResetFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceHostQueryResetFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, hostQueryReset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceHostQueryResetFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceHostQueryResetFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hostQueryReset == rhs.hostQueryReset ); +# endif + } + + bool operator!=( PhysicalDeviceHostQueryResetFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceHostQueryResetFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures ) == + sizeof( VkPhysicalDeviceHostQueryResetFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceHostQueryResetFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceHostQueryResetFeatures; + }; + using PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures; + + struct PhysicalDeviceIDProperties + { + using NativeType = VkPhysicalDeviceIDProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceIdProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceIDProperties( std::array const & deviceUUID_ = {}, + std::array const & driverUUID_ = {}, + std::array const & deviceLUID_ = {}, + uint32_t deviceNodeMask_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 deviceLUIDValid_ = {} ) VULKAN_HPP_NOEXCEPT + : deviceUUID( deviceUUID_ ) + , driverUUID( driverUUID_ ) + , deviceLUID( deviceLUID_ ) + , deviceNodeMask( deviceNodeMask_ ) + , deviceLUIDValid( deviceLUIDValid_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceIDProperties( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceIDProperties( VkPhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceIDProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceIDProperties & operator=( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceIDProperties & operator=( VkPhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceIDProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceIDProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::Bool32 const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceUUID, driverUUID, deviceLUID, deviceNodeMask, deviceLUIDValid ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceIDProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceIDProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceUUID == rhs.deviceUUID ) && + ( driverUUID == rhs.driverUUID ) && ( deviceLUID == rhs.deviceLUID ) && + ( deviceNodeMask == rhs.deviceNodeMask ) && ( deviceLUIDValid == rhs.deviceLUIDValid ); +# endif + } + + bool operator!=( PhysicalDeviceIDProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceIdProperties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D deviceUUID = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D driverUUID = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D deviceLUID = {}; + uint32_t deviceNodeMask = {}; + VULKAN_HPP_NAMESPACE::Bool32 deviceLUIDValid = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties ) == + sizeof( VkPhysicalDeviceIDProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceIDProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceIDProperties; + }; + using PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties; + + struct PhysicalDeviceImageDrmFormatModifierInfoEXT + { + using NativeType = VkPhysicalDeviceImageDrmFormatModifierInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageDrmFormatModifierInfoEXT( + uint64_t drmFormatModifier_ = {}, + VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive, + uint32_t queueFamilyIndexCount_ = {}, + const uint32_t * pQueueFamilyIndices_ = {} ) VULKAN_HPP_NOEXCEPT + : drmFormatModifier( drmFormatModifier_ ) + , sharingMode( sharingMode_ ) + , queueFamilyIndexCount( queueFamilyIndexCount_ ) + , pQueueFamilyIndices( pQueueFamilyIndices_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageDrmFormatModifierInfoEXT( + PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageDrmFormatModifierInfoEXT( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageDrmFormatModifierInfoEXT( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PhysicalDeviceImageDrmFormatModifierInfoEXT( + uint64_t drmFormatModifier_, + VULKAN_HPP_NAMESPACE::SharingMode sharingMode_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_ ) + : drmFormatModifier( drmFormatModifier_ ) + , sharingMode( sharingMode_ ) + , queueFamilyIndexCount( static_cast( queueFamilyIndices_.size() ) ) + , pQueueFamilyIndices( queueFamilyIndices_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceImageDrmFormatModifierInfoEXT & + operator=( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageDrmFormatModifierInfoEXT & + operator=( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & + setDrmFormatModifier( uint64_t drmFormatModifier_ ) VULKAN_HPP_NOEXCEPT + { + drmFormatModifier = drmFormatModifier_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & + setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT + { + sharingMode = sharingMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & + setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = queueFamilyIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & + setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT + { + pQueueFamilyIndices = pQueueFamilyIndices_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PhysicalDeviceImageDrmFormatModifierInfoEXT & setQueueFamilyIndices( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = static_cast( queueFamilyIndices_.size() ); + pQueueFamilyIndices = queueFamilyIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, drmFormatModifier, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageDrmFormatModifierInfoEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifier == rhs.drmFormatModifier ) && + ( sharingMode == rhs.sharingMode ) && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) && + ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ); +# endif + } + + bool operator!=( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT; + const void * pNext = {}; + uint64_t drmFormatModifier = {}; + VULKAN_HPP_NAMESPACE::SharingMode sharingMode = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive; + uint32_t queueFamilyIndexCount = {}; + const uint32_t * pQueueFamilyIndices = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT ) == + sizeof( VkPhysicalDeviceImageDrmFormatModifierInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageDrmFormatModifierInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceImageDrmFormatModifierInfoEXT; + }; + + struct PhysicalDeviceImageFormatInfo2 + { + using NativeType = VkPhysicalDeviceImageFormatInfo2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageFormatInfo2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageFormatInfo2( + VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::ImageType type_ = VULKAN_HPP_NAMESPACE::ImageType::e1D, + VULKAN_HPP_NAMESPACE::ImageTiling tiling_ = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {}, + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT + : format( format_ ) + , type( type_ ) + , tiling( tiling_ ) + , usage( usage_ ) + , flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceImageFormatInfo2( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageFormatInfo2( VkPhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageFormatInfo2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceImageFormatInfo2 & + operator=( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageFormatInfo2 & operator=( VkPhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & + setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & + setType( VULKAN_HPP_NAMESPACE::ImageType type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & + setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT + { + tiling = tiling_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & + setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & + setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceImageFormatInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceImageFormatInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, format, type, tiling, usage, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageFormatInfo2 const & ) const = default; +#else + bool operator==( PhysicalDeviceImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( type == rhs.type ) && + ( tiling == rhs.tiling ) && ( usage == rhs.usage ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( PhysicalDeviceImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageFormatInfo2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::ImageType type = VULKAN_HPP_NAMESPACE::ImageType::e1D; + VULKAN_HPP_NAMESPACE::ImageTiling tiling = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal; + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {}; + VULKAN_HPP_NAMESPACE::ImageCreateFlags flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 ) == + sizeof( VkPhysicalDeviceImageFormatInfo2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageFormatInfo2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceImageFormatInfo2; + }; + using PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2; + + struct PhysicalDeviceImageRobustnessFeatures + { + using NativeType = VkPhysicalDeviceImageRobustnessFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceImageRobustnessFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceImageRobustnessFeatures( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ = {} ) VULKAN_HPP_NOEXCEPT + : robustImageAccess( robustImageAccess_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageRobustnessFeatures( PhysicalDeviceImageRobustnessFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageRobustnessFeatures( VkPhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageRobustnessFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceImageRobustnessFeatures & + operator=( PhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageRobustnessFeatures & + operator=( VkPhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeatures & + setRobustImageAccess( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ ) VULKAN_HPP_NOEXCEPT + { + robustImageAccess = robustImageAccess_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceImageRobustnessFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceImageRobustnessFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, robustImageAccess ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageRobustnessFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceImageRobustnessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( robustImageAccess == rhs.robustImageAccess ); +# endif + } + + bool operator!=( PhysicalDeviceImageRobustnessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageRobustnessFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures ) == + sizeof( VkPhysicalDeviceImageRobustnessFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageRobustnessFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceImageRobustnessFeatures; + }; + using PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeatures; + + struct PhysicalDeviceImageViewImageFormatInfoEXT + { + using NativeType = VkPhysicalDeviceImageViewImageFormatInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceImageViewImageFormatInfoEXT( VULKAN_HPP_NAMESPACE::ImageViewType imageViewType_ = + VULKAN_HPP_NAMESPACE::ImageViewType::e1D ) VULKAN_HPP_NOEXCEPT + : imageViewType( imageViewType_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewImageFormatInfoEXT( + PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageViewImageFormatInfoEXT( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageViewImageFormatInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceImageViewImageFormatInfoEXT & + operator=( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageViewImageFormatInfoEXT & + operator=( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT & + setImageViewType( VULKAN_HPP_NAMESPACE::ImageViewType imageViewType_ ) VULKAN_HPP_NOEXCEPT + { + imageViewType = imageViewType_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceImageViewImageFormatInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceImageViewImageFormatInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageViewType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageViewImageFormatInfoEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageViewType == rhs.imageViewType ); +# endif + } + + bool operator!=( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageViewType imageViewType = VULKAN_HPP_NAMESPACE::ImageViewType::e1D; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT ) == + sizeof( VkPhysicalDeviceImageViewImageFormatInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageViewImageFormatInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceImageViewImageFormatInfoEXT; + }; + + struct PhysicalDeviceImageViewMinLodFeaturesEXT + { + using NativeType = VkPhysicalDeviceImageViewMinLodFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceImageViewMinLodFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceImageViewMinLodFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 minLod_ = {} ) VULKAN_HPP_NOEXCEPT + : minLod( minLod_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewMinLodFeaturesEXT( + PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageViewMinLodFeaturesEXT( VkPhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageViewMinLodFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceImageViewMinLodFeaturesEXT & + operator=( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageViewMinLodFeaturesEXT & + operator=( VkPhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewMinLodFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewMinLodFeaturesEXT & + setMinLod( VULKAN_HPP_NAMESPACE::Bool32 minLod_ ) VULKAN_HPP_NOEXCEPT + { + minLod = minLod_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceImageViewMinLodFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceImageViewMinLodFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minLod ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageViewMinLodFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minLod == rhs.minLod ); +# endif + } + + bool operator!=( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageViewMinLodFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 minLod = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT ) == + sizeof( VkPhysicalDeviceImageViewMinLodFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageViewMinLodFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceImageViewMinLodFeaturesEXT; + }; + + struct PhysicalDeviceImagelessFramebufferFeatures + { + using NativeType = VkPhysicalDeviceImagelessFramebufferFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceImagelessFramebufferFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImagelessFramebufferFeatures( + VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ = {} ) VULKAN_HPP_NOEXCEPT + : imagelessFramebuffer( imagelessFramebuffer_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImagelessFramebufferFeatures( + PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImagelessFramebufferFeatures( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImagelessFramebufferFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceImagelessFramebufferFeatures & + operator=( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImagelessFramebufferFeatures & + operator=( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures & + setImagelessFramebuffer( VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ ) VULKAN_HPP_NOEXCEPT + { + imagelessFramebuffer = imagelessFramebuffer_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceImagelessFramebufferFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceImagelessFramebufferFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imagelessFramebuffer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImagelessFramebufferFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imagelessFramebuffer == rhs.imagelessFramebuffer ); +# endif + } + + bool operator!=( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImagelessFramebufferFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures ) == + sizeof( VkPhysicalDeviceImagelessFramebufferFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceImagelessFramebufferFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceImagelessFramebufferFeatures; + }; + using PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures; + + struct PhysicalDeviceIndexTypeUint8FeaturesEXT + { + using NativeType = VkPhysicalDeviceIndexTypeUint8FeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceIndexTypeUint8FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8_ = {} ) VULKAN_HPP_NOEXCEPT + : indexTypeUint8( indexTypeUint8_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceIndexTypeUint8FeaturesEXT( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceIndexTypeUint8FeaturesEXT( VkPhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceIndexTypeUint8FeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceIndexTypeUint8FeaturesEXT & + operator=( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceIndexTypeUint8FeaturesEXT & + operator=( VkPhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8FeaturesEXT & + setIndexTypeUint8( VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8_ ) VULKAN_HPP_NOEXCEPT + { + indexTypeUint8 = indexTypeUint8_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceIndexTypeUint8FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceIndexTypeUint8FeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, indexTypeUint8 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceIndexTypeUint8FeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( indexTypeUint8 == rhs.indexTypeUint8 ); +# endif + } + + bool operator!=( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8 = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT ) == + sizeof( VkPhysicalDeviceIndexTypeUint8FeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceIndexTypeUint8FeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceIndexTypeUint8FeaturesEXT; + }; + + struct PhysicalDeviceInheritedViewportScissorFeaturesNV + { + using NativeType = VkPhysicalDeviceInheritedViewportScissorFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceInheritedViewportScissorFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceInheritedViewportScissorFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 inheritedViewportScissor2D_ = {} ) VULKAN_HPP_NOEXCEPT + : inheritedViewportScissor2D( inheritedViewportScissor2D_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceInheritedViewportScissorFeaturesNV( + PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceInheritedViewportScissorFeaturesNV( VkPhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceInheritedViewportScissorFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceInheritedViewportScissorFeaturesNV & + operator=( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceInheritedViewportScissorFeaturesNV & + operator=( VkPhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInheritedViewportScissorFeaturesNV & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInheritedViewportScissorFeaturesNV & + setInheritedViewportScissor2D( VULKAN_HPP_NAMESPACE::Bool32 inheritedViewportScissor2D_ ) VULKAN_HPP_NOEXCEPT + { + inheritedViewportScissor2D = inheritedViewportScissor2D_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, inheritedViewportScissor2D ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceInheritedViewportScissorFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( inheritedViewportScissor2D == rhs.inheritedViewportScissor2D ); +# endif + } + + bool operator!=( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceInheritedViewportScissorFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 inheritedViewportScissor2D = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV ) == + sizeof( VkPhysicalDeviceInheritedViewportScissorFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceInheritedViewportScissorFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceInheritedViewportScissorFeaturesNV; + }; + + struct PhysicalDeviceInlineUniformBlockFeatures + { + using NativeType = VkPhysicalDeviceInlineUniformBlockFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceInlineUniformBlockFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockFeatures( + VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ = {} ) VULKAN_HPP_NOEXCEPT + : inlineUniformBlock( inlineUniformBlock_ ) + , descriptorBindingInlineUniformBlockUpdateAfterBind( descriptorBindingInlineUniformBlockUpdateAfterBind_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockFeatures( + PhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceInlineUniformBlockFeatures( VkPhysicalDeviceInlineUniformBlockFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceInlineUniformBlockFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceInlineUniformBlockFeatures & + operator=( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceInlineUniformBlockFeatures & + operator=( VkPhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures & + setInlineUniformBlock( VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_ ) VULKAN_HPP_NOEXCEPT + { + inlineUniformBlock = inlineUniformBlock_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures & + setDescriptorBindingInlineUniformBlockUpdateAfterBind( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingInlineUniformBlockUpdateAfterBind = descriptorBindingInlineUniformBlockUpdateAfterBind_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceInlineUniformBlockFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceInlineUniformBlockFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, inlineUniformBlock, descriptorBindingInlineUniformBlockUpdateAfterBind ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceInlineUniformBlockFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( inlineUniformBlock == rhs.inlineUniformBlock ) && + ( descriptorBindingInlineUniformBlockUpdateAfterBind == + rhs.descriptorBindingInlineUniformBlockUpdateAfterBind ); +# endif + } + + bool operator!=( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures ) == + sizeof( VkPhysicalDeviceInlineUniformBlockFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceInlineUniformBlockFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceInlineUniformBlockFeatures; + }; + using PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeatures; + + struct PhysicalDeviceInlineUniformBlockProperties + { + using NativeType = VkPhysicalDeviceInlineUniformBlockProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceInlineUniformBlockProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockProperties( + uint32_t maxInlineUniformBlockSize_ = {}, + uint32_t maxPerStageDescriptorInlineUniformBlocks_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ = {}, + uint32_t maxDescriptorSetInlineUniformBlocks_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ = {} ) VULKAN_HPP_NOEXCEPT + : maxInlineUniformBlockSize( maxInlineUniformBlockSize_ ) + , maxPerStageDescriptorInlineUniformBlocks( maxPerStageDescriptorInlineUniformBlocks_ ) + , maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks( + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ ) + , maxDescriptorSetInlineUniformBlocks( maxDescriptorSetInlineUniformBlocks_ ) + , maxDescriptorSetUpdateAfterBindInlineUniformBlocks( maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockProperties( + PhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceInlineUniformBlockProperties( VkPhysicalDeviceInlineUniformBlockProperties const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceInlineUniformBlockProperties( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceInlineUniformBlockProperties & + operator=( PhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceInlineUniformBlockProperties & + operator=( VkPhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceInlineUniformBlockProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceInlineUniformBlockProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxInlineUniformBlockSize, + maxPerStageDescriptorInlineUniformBlocks, + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks, + maxDescriptorSetInlineUniformBlocks, + maxDescriptorSetUpdateAfterBindInlineUniformBlocks ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceInlineUniformBlockProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceInlineUniformBlockProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( maxInlineUniformBlockSize == rhs.maxInlineUniformBlockSize ) && + ( maxPerStageDescriptorInlineUniformBlocks == rhs.maxPerStageDescriptorInlineUniformBlocks ) && + ( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks == + rhs.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks ) && + ( maxDescriptorSetInlineUniformBlocks == rhs.maxDescriptorSetInlineUniformBlocks ) && + ( maxDescriptorSetUpdateAfterBindInlineUniformBlocks == + rhs.maxDescriptorSetUpdateAfterBindInlineUniformBlocks ); +# endif + } + + bool operator!=( PhysicalDeviceInlineUniformBlockProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockProperties; + void * pNext = {}; + uint32_t maxInlineUniformBlockSize = {}; + uint32_t maxPerStageDescriptorInlineUniformBlocks = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = {}; + uint32_t maxDescriptorSetInlineUniformBlocks = {}; + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties ) == + sizeof( VkPhysicalDeviceInlineUniformBlockProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceInlineUniformBlockProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceInlineUniformBlockProperties; + }; + using PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockProperties; + + struct PhysicalDeviceInvocationMaskFeaturesHUAWEI + { + using NativeType = VkPhysicalDeviceInvocationMaskFeaturesHUAWEI; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceInvocationMaskFeaturesHUAWEI; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceInvocationMaskFeaturesHUAWEI( VULKAN_HPP_NAMESPACE::Bool32 invocationMask_ = {} ) + VULKAN_HPP_NOEXCEPT : invocationMask( invocationMask_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceInvocationMaskFeaturesHUAWEI( + PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceInvocationMaskFeaturesHUAWEI( VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceInvocationMaskFeaturesHUAWEI( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceInvocationMaskFeaturesHUAWEI & + operator=( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceInvocationMaskFeaturesHUAWEI & + operator=( VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInvocationMaskFeaturesHUAWEI & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInvocationMaskFeaturesHUAWEI & + setInvocationMask( VULKAN_HPP_NAMESPACE::Bool32 invocationMask_ ) VULKAN_HPP_NOEXCEPT + { + invocationMask = invocationMask_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, invocationMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & ) const = default; +#else + bool operator==( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( invocationMask == rhs.invocationMask ); +# endif + } + + bool operator!=( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceInvocationMaskFeaturesHUAWEI; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 invocationMask = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI ) == + sizeof( VkPhysicalDeviceInvocationMaskFeaturesHUAWEI ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceInvocationMaskFeaturesHUAWEI is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceInvocationMaskFeaturesHUAWEI; + }; + + struct PhysicalDeviceLimits + { + using NativeType = VkPhysicalDeviceLimits; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceLimits( uint32_t maxImageDimension1D_ = {}, + uint32_t maxImageDimension2D_ = {}, + uint32_t maxImageDimension3D_ = {}, + uint32_t maxImageDimensionCube_ = {}, + uint32_t maxImageArrayLayers_ = {}, + uint32_t maxTexelBufferElements_ = {}, + uint32_t maxUniformBufferRange_ = {}, + uint32_t maxStorageBufferRange_ = {}, + uint32_t maxPushConstantsSize_ = {}, + uint32_t maxMemoryAllocationCount_ = {}, + uint32_t maxSamplerAllocationCount_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize bufferImageGranularity_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize sparseAddressSpaceSize_ = {}, + uint32_t maxBoundDescriptorSets_ = {}, + uint32_t maxPerStageDescriptorSamplers_ = {}, + uint32_t maxPerStageDescriptorUniformBuffers_ = {}, + uint32_t maxPerStageDescriptorStorageBuffers_ = {}, + uint32_t maxPerStageDescriptorSampledImages_ = {}, + uint32_t maxPerStageDescriptorStorageImages_ = {}, + uint32_t maxPerStageDescriptorInputAttachments_ = {}, + uint32_t maxPerStageResources_ = {}, + uint32_t maxDescriptorSetSamplers_ = {}, + uint32_t maxDescriptorSetUniformBuffers_ = {}, + uint32_t maxDescriptorSetUniformBuffersDynamic_ = {}, + uint32_t maxDescriptorSetStorageBuffers_ = {}, + uint32_t maxDescriptorSetStorageBuffersDynamic_ = {}, + uint32_t maxDescriptorSetSampledImages_ = {}, + uint32_t maxDescriptorSetStorageImages_ = {}, + uint32_t maxDescriptorSetInputAttachments_ = {}, + uint32_t maxVertexInputAttributes_ = {}, + uint32_t maxVertexInputBindings_ = {}, + uint32_t maxVertexInputAttributeOffset_ = {}, + uint32_t maxVertexInputBindingStride_ = {}, + uint32_t maxVertexOutputComponents_ = {}, + uint32_t maxTessellationGenerationLevel_ = {}, + uint32_t maxTessellationPatchSize_ = {}, + uint32_t maxTessellationControlPerVertexInputComponents_ = {}, + uint32_t maxTessellationControlPerVertexOutputComponents_ = {}, + uint32_t maxTessellationControlPerPatchOutputComponents_ = {}, + uint32_t maxTessellationControlTotalOutputComponents_ = {}, + uint32_t maxTessellationEvaluationInputComponents_ = {}, + uint32_t maxTessellationEvaluationOutputComponents_ = {}, + uint32_t maxGeometryShaderInvocations_ = {}, + uint32_t maxGeometryInputComponents_ = {}, + uint32_t maxGeometryOutputComponents_ = {}, + uint32_t maxGeometryOutputVertices_ = {}, + uint32_t maxGeometryTotalOutputComponents_ = {}, + uint32_t maxFragmentInputComponents_ = {}, + uint32_t maxFragmentOutputAttachments_ = {}, + uint32_t maxFragmentDualSrcAttachments_ = {}, + uint32_t maxFragmentCombinedOutputResources_ = {}, + uint32_t maxComputeSharedMemorySize_ = {}, + std::array const & maxComputeWorkGroupCount_ = {}, + uint32_t maxComputeWorkGroupInvocations_ = {}, + std::array const & maxComputeWorkGroupSize_ = {}, + uint32_t subPixelPrecisionBits_ = {}, + uint32_t subTexelPrecisionBits_ = {}, + uint32_t mipmapPrecisionBits_ = {}, + uint32_t maxDrawIndexedIndexValue_ = {}, + uint32_t maxDrawIndirectCount_ = {}, + float maxSamplerLodBias_ = {}, + float maxSamplerAnisotropy_ = {}, + uint32_t maxViewports_ = {}, + std::array const & maxViewportDimensions_ = {}, + std::array const & viewportBoundsRange_ = {}, + uint32_t viewportSubPixelBits_ = {}, + size_t minMemoryMapAlignment_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize minTexelBufferOffsetAlignment_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize minUniformBufferOffsetAlignment_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize minStorageBufferOffsetAlignment_ = {}, + int32_t minTexelOffset_ = {}, + uint32_t maxTexelOffset_ = {}, + int32_t minTexelGatherOffset_ = {}, + uint32_t maxTexelGatherOffset_ = {}, + float minInterpolationOffset_ = {}, + float maxInterpolationOffset_ = {}, + uint32_t subPixelInterpolationOffsetBits_ = {}, + uint32_t maxFramebufferWidth_ = {}, + uint32_t maxFramebufferHeight_ = {}, + uint32_t maxFramebufferLayers_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferColorSampleCounts_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferDepthSampleCounts_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferStencilSampleCounts_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferNoAttachmentsSampleCounts_ = {}, + uint32_t maxColorAttachments_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageColorSampleCounts_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageIntegerSampleCounts_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageDepthSampleCounts_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageStencilSampleCounts_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlags storageImageSampleCounts_ = {}, + uint32_t maxSampleMaskWords_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 timestampComputeAndGraphics_ = {}, + float timestampPeriod_ = {}, + uint32_t maxClipDistances_ = {}, + uint32_t maxCullDistances_ = {}, + uint32_t maxCombinedClipAndCullDistances_ = {}, + uint32_t discreteQueuePriorities_ = {}, + std::array const & pointSizeRange_ = {}, + std::array const & lineWidthRange_ = {}, + float pointSizeGranularity_ = {}, + float lineWidthGranularity_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 strictLines_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 standardSampleLocations_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize optimalBufferCopyOffsetAlignment_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize optimalBufferCopyRowPitchAlignment_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize nonCoherentAtomSize_ = {} ) VULKAN_HPP_NOEXCEPT + : maxImageDimension1D( maxImageDimension1D_ ) + , maxImageDimension2D( maxImageDimension2D_ ) + , maxImageDimension3D( maxImageDimension3D_ ) + , maxImageDimensionCube( maxImageDimensionCube_ ) + , maxImageArrayLayers( maxImageArrayLayers_ ) + , maxTexelBufferElements( maxTexelBufferElements_ ) + , maxUniformBufferRange( maxUniformBufferRange_ ) + , maxStorageBufferRange( maxStorageBufferRange_ ) + , maxPushConstantsSize( maxPushConstantsSize_ ) + , maxMemoryAllocationCount( maxMemoryAllocationCount_ ) + , maxSamplerAllocationCount( maxSamplerAllocationCount_ ) + , bufferImageGranularity( bufferImageGranularity_ ) + , sparseAddressSpaceSize( sparseAddressSpaceSize_ ) + , maxBoundDescriptorSets( maxBoundDescriptorSets_ ) + , maxPerStageDescriptorSamplers( maxPerStageDescriptorSamplers_ ) + , maxPerStageDescriptorUniformBuffers( maxPerStageDescriptorUniformBuffers_ ) + , maxPerStageDescriptorStorageBuffers( maxPerStageDescriptorStorageBuffers_ ) + , maxPerStageDescriptorSampledImages( maxPerStageDescriptorSampledImages_ ) + , maxPerStageDescriptorStorageImages( maxPerStageDescriptorStorageImages_ ) + , maxPerStageDescriptorInputAttachments( maxPerStageDescriptorInputAttachments_ ) + , maxPerStageResources( maxPerStageResources_ ) + , maxDescriptorSetSamplers( maxDescriptorSetSamplers_ ) + , maxDescriptorSetUniformBuffers( maxDescriptorSetUniformBuffers_ ) + , maxDescriptorSetUniformBuffersDynamic( maxDescriptorSetUniformBuffersDynamic_ ) + , maxDescriptorSetStorageBuffers( maxDescriptorSetStorageBuffers_ ) + , maxDescriptorSetStorageBuffersDynamic( maxDescriptorSetStorageBuffersDynamic_ ) + , maxDescriptorSetSampledImages( maxDescriptorSetSampledImages_ ) + , maxDescriptorSetStorageImages( maxDescriptorSetStorageImages_ ) + , maxDescriptorSetInputAttachments( maxDescriptorSetInputAttachments_ ) + , maxVertexInputAttributes( maxVertexInputAttributes_ ) + , maxVertexInputBindings( maxVertexInputBindings_ ) + , maxVertexInputAttributeOffset( maxVertexInputAttributeOffset_ ) + , maxVertexInputBindingStride( maxVertexInputBindingStride_ ) + , maxVertexOutputComponents( maxVertexOutputComponents_ ) + , maxTessellationGenerationLevel( maxTessellationGenerationLevel_ ) + , maxTessellationPatchSize( maxTessellationPatchSize_ ) + , maxTessellationControlPerVertexInputComponents( maxTessellationControlPerVertexInputComponents_ ) + , maxTessellationControlPerVertexOutputComponents( maxTessellationControlPerVertexOutputComponents_ ) + , maxTessellationControlPerPatchOutputComponents( maxTessellationControlPerPatchOutputComponents_ ) + , maxTessellationControlTotalOutputComponents( maxTessellationControlTotalOutputComponents_ ) + , maxTessellationEvaluationInputComponents( maxTessellationEvaluationInputComponents_ ) + , maxTessellationEvaluationOutputComponents( maxTessellationEvaluationOutputComponents_ ) + , maxGeometryShaderInvocations( maxGeometryShaderInvocations_ ) + , maxGeometryInputComponents( maxGeometryInputComponents_ ) + , maxGeometryOutputComponents( maxGeometryOutputComponents_ ) + , maxGeometryOutputVertices( maxGeometryOutputVertices_ ) + , maxGeometryTotalOutputComponents( maxGeometryTotalOutputComponents_ ) + , maxFragmentInputComponents( maxFragmentInputComponents_ ) + , maxFragmentOutputAttachments( maxFragmentOutputAttachments_ ) + , maxFragmentDualSrcAttachments( maxFragmentDualSrcAttachments_ ) + , maxFragmentCombinedOutputResources( maxFragmentCombinedOutputResources_ ) + , maxComputeSharedMemorySize( maxComputeSharedMemorySize_ ) + , maxComputeWorkGroupCount( maxComputeWorkGroupCount_ ) + , maxComputeWorkGroupInvocations( maxComputeWorkGroupInvocations_ ) + , maxComputeWorkGroupSize( maxComputeWorkGroupSize_ ) + , subPixelPrecisionBits( subPixelPrecisionBits_ ) + , subTexelPrecisionBits( subTexelPrecisionBits_ ) + , mipmapPrecisionBits( mipmapPrecisionBits_ ) + , maxDrawIndexedIndexValue( maxDrawIndexedIndexValue_ ) + , maxDrawIndirectCount( maxDrawIndirectCount_ ) + , maxSamplerLodBias( maxSamplerLodBias_ ) + , maxSamplerAnisotropy( maxSamplerAnisotropy_ ) + , maxViewports( maxViewports_ ) + , maxViewportDimensions( maxViewportDimensions_ ) + , viewportBoundsRange( viewportBoundsRange_ ) + , viewportSubPixelBits( viewportSubPixelBits_ ) + , minMemoryMapAlignment( minMemoryMapAlignment_ ) + , minTexelBufferOffsetAlignment( minTexelBufferOffsetAlignment_ ) + , minUniformBufferOffsetAlignment( minUniformBufferOffsetAlignment_ ) + , minStorageBufferOffsetAlignment( minStorageBufferOffsetAlignment_ ) + , minTexelOffset( minTexelOffset_ ) + , maxTexelOffset( maxTexelOffset_ ) + , minTexelGatherOffset( minTexelGatherOffset_ ) + , maxTexelGatherOffset( maxTexelGatherOffset_ ) + , minInterpolationOffset( minInterpolationOffset_ ) + , maxInterpolationOffset( maxInterpolationOffset_ ) + , subPixelInterpolationOffsetBits( subPixelInterpolationOffsetBits_ ) + , maxFramebufferWidth( maxFramebufferWidth_ ) + , maxFramebufferHeight( maxFramebufferHeight_ ) + , maxFramebufferLayers( maxFramebufferLayers_ ) + , framebufferColorSampleCounts( framebufferColorSampleCounts_ ) + , framebufferDepthSampleCounts( framebufferDepthSampleCounts_ ) + , framebufferStencilSampleCounts( framebufferStencilSampleCounts_ ) + , framebufferNoAttachmentsSampleCounts( framebufferNoAttachmentsSampleCounts_ ) + , maxColorAttachments( maxColorAttachments_ ) + , sampledImageColorSampleCounts( sampledImageColorSampleCounts_ ) + , sampledImageIntegerSampleCounts( sampledImageIntegerSampleCounts_ ) + , sampledImageDepthSampleCounts( sampledImageDepthSampleCounts_ ) + , sampledImageStencilSampleCounts( sampledImageStencilSampleCounts_ ) + , storageImageSampleCounts( storageImageSampleCounts_ ) + , maxSampleMaskWords( maxSampleMaskWords_ ) + , timestampComputeAndGraphics( timestampComputeAndGraphics_ ) + , timestampPeriod( timestampPeriod_ ) + , maxClipDistances( maxClipDistances_ ) + , maxCullDistances( maxCullDistances_ ) + , maxCombinedClipAndCullDistances( maxCombinedClipAndCullDistances_ ) + , discreteQueuePriorities( discreteQueuePriorities_ ) + , pointSizeRange( pointSizeRange_ ) + , lineWidthRange( lineWidthRange_ ) + , pointSizeGranularity( pointSizeGranularity_ ) + , lineWidthGranularity( lineWidthGranularity_ ) + , strictLines( strictLines_ ) + , standardSampleLocations( standardSampleLocations_ ) + , optimalBufferCopyOffsetAlignment( optimalBufferCopyOffsetAlignment_ ) + , optimalBufferCopyRowPitchAlignment( optimalBufferCopyRowPitchAlignment_ ) + , nonCoherentAtomSize( nonCoherentAtomSize_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLimits( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLimits( VkPhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceLimits( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceLimits & operator=( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLimits & operator=( VkPhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceLimits const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceLimits &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + float const &, + float const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + uint32_t const &, + size_t const &, + VULKAN_HPP_NAMESPACE::DeviceSize const &, + VULKAN_HPP_NAMESPACE::DeviceSize const &, + VULKAN_HPP_NAMESPACE::DeviceSize const &, + int32_t const &, + uint32_t const &, + int32_t const &, + uint32_t const &, + float const &, + float const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::SampleCountFlags const &, + VULKAN_HPP_NAMESPACE::SampleCountFlags const &, + VULKAN_HPP_NAMESPACE::SampleCountFlags const &, + VULKAN_HPP_NAMESPACE::SampleCountFlags const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::SampleCountFlags const &, + VULKAN_HPP_NAMESPACE::SampleCountFlags const &, + VULKAN_HPP_NAMESPACE::SampleCountFlags const &, + VULKAN_HPP_NAMESPACE::SampleCountFlags const &, + VULKAN_HPP_NAMESPACE::SampleCountFlags const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + float const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + float const &, + float const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::DeviceSize const &, + VULKAN_HPP_NAMESPACE::DeviceSize const &, + VULKAN_HPP_NAMESPACE::DeviceSize const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( maxImageDimension1D, + maxImageDimension2D, + maxImageDimension3D, + maxImageDimensionCube, + maxImageArrayLayers, + maxTexelBufferElements, + maxUniformBufferRange, + maxStorageBufferRange, + maxPushConstantsSize, + maxMemoryAllocationCount, + maxSamplerAllocationCount, + bufferImageGranularity, + sparseAddressSpaceSize, + maxBoundDescriptorSets, + maxPerStageDescriptorSamplers, + maxPerStageDescriptorUniformBuffers, + maxPerStageDescriptorStorageBuffers, + maxPerStageDescriptorSampledImages, + maxPerStageDescriptorStorageImages, + maxPerStageDescriptorInputAttachments, + maxPerStageResources, + maxDescriptorSetSamplers, + maxDescriptorSetUniformBuffers, + maxDescriptorSetUniformBuffersDynamic, + maxDescriptorSetStorageBuffers, + maxDescriptorSetStorageBuffersDynamic, + maxDescriptorSetSampledImages, + maxDescriptorSetStorageImages, + maxDescriptorSetInputAttachments, + maxVertexInputAttributes, + maxVertexInputBindings, + maxVertexInputAttributeOffset, + maxVertexInputBindingStride, + maxVertexOutputComponents, + maxTessellationGenerationLevel, + maxTessellationPatchSize, + maxTessellationControlPerVertexInputComponents, + maxTessellationControlPerVertexOutputComponents, + maxTessellationControlPerPatchOutputComponents, + maxTessellationControlTotalOutputComponents, + maxTessellationEvaluationInputComponents, + maxTessellationEvaluationOutputComponents, + maxGeometryShaderInvocations, + maxGeometryInputComponents, + maxGeometryOutputComponents, + maxGeometryOutputVertices, + maxGeometryTotalOutputComponents, + maxFragmentInputComponents, + maxFragmentOutputAttachments, + maxFragmentDualSrcAttachments, + maxFragmentCombinedOutputResources, + maxComputeSharedMemorySize, + maxComputeWorkGroupCount, + maxComputeWorkGroupInvocations, + maxComputeWorkGroupSize, + subPixelPrecisionBits, + subTexelPrecisionBits, + mipmapPrecisionBits, + maxDrawIndexedIndexValue, + maxDrawIndirectCount, + maxSamplerLodBias, + maxSamplerAnisotropy, + maxViewports, + maxViewportDimensions, + viewportBoundsRange, + viewportSubPixelBits, + minMemoryMapAlignment, + minTexelBufferOffsetAlignment, + minUniformBufferOffsetAlignment, + minStorageBufferOffsetAlignment, + minTexelOffset, + maxTexelOffset, + minTexelGatherOffset, + maxTexelGatherOffset, + minInterpolationOffset, + maxInterpolationOffset, + subPixelInterpolationOffsetBits, + maxFramebufferWidth, + maxFramebufferHeight, + maxFramebufferLayers, + framebufferColorSampleCounts, + framebufferDepthSampleCounts, + framebufferStencilSampleCounts, + framebufferNoAttachmentsSampleCounts, + maxColorAttachments, + sampledImageColorSampleCounts, + sampledImageIntegerSampleCounts, + sampledImageDepthSampleCounts, + sampledImageStencilSampleCounts, + storageImageSampleCounts, + maxSampleMaskWords, + timestampComputeAndGraphics, + timestampPeriod, + maxClipDistances, + maxCullDistances, + maxCombinedClipAndCullDistances, + discreteQueuePriorities, + pointSizeRange, + lineWidthRange, + pointSizeGranularity, + lineWidthGranularity, + strictLines, + standardSampleLocations, + optimalBufferCopyOffsetAlignment, + optimalBufferCopyRowPitchAlignment, + nonCoherentAtomSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceLimits const & ) const = default; +#else + bool operator==( PhysicalDeviceLimits const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( maxImageDimension1D == rhs.maxImageDimension1D ) && ( maxImageDimension2D == rhs.maxImageDimension2D ) && + ( maxImageDimension3D == rhs.maxImageDimension3D ) && + ( maxImageDimensionCube == rhs.maxImageDimensionCube ) && + ( maxImageArrayLayers == rhs.maxImageArrayLayers ) && + ( maxTexelBufferElements == rhs.maxTexelBufferElements ) && + ( maxUniformBufferRange == rhs.maxUniformBufferRange ) && + ( maxStorageBufferRange == rhs.maxStorageBufferRange ) && + ( maxPushConstantsSize == rhs.maxPushConstantsSize ) && + ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount ) && + ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount ) && + ( bufferImageGranularity == rhs.bufferImageGranularity ) && + ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize ) && + ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets ) && + ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers ) && + ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers ) && + ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers ) && + ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages ) && + ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages ) && + ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments ) && + ( maxPerStageResources == rhs.maxPerStageResources ) && + ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers ) && + ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers ) && + ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic ) && + ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers ) && + ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic ) && + ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages ) && + ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages ) && + ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments ) && + ( maxVertexInputAttributes == rhs.maxVertexInputAttributes ) && + ( maxVertexInputBindings == rhs.maxVertexInputBindings ) && + ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset ) && + ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride ) && + ( maxVertexOutputComponents == rhs.maxVertexOutputComponents ) && + ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel ) && + ( maxTessellationPatchSize == rhs.maxTessellationPatchSize ) && + ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents ) && + ( maxTessellationControlPerVertexOutputComponents == + rhs.maxTessellationControlPerVertexOutputComponents ) && + ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents ) && + ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents ) && + ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents ) && + ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents ) && + ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations ) && + ( maxGeometryInputComponents == rhs.maxGeometryInputComponents ) && + ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents ) && + ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices ) && + ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents ) && + ( maxFragmentInputComponents == rhs.maxFragmentInputComponents ) && + ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments ) && + ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments ) && + ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources ) && + ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize ) && + ( maxComputeWorkGroupCount == rhs.maxComputeWorkGroupCount ) && + ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations ) && + ( maxComputeWorkGroupSize == rhs.maxComputeWorkGroupSize ) && + ( subPixelPrecisionBits == rhs.subPixelPrecisionBits ) && + ( subTexelPrecisionBits == rhs.subTexelPrecisionBits ) && + ( mipmapPrecisionBits == rhs.mipmapPrecisionBits ) && + ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue ) && + ( maxDrawIndirectCount == rhs.maxDrawIndirectCount ) && ( maxSamplerLodBias == rhs.maxSamplerLodBias ) && + ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy ) && ( maxViewports == rhs.maxViewports ) && + ( maxViewportDimensions == rhs.maxViewportDimensions ) && + ( viewportBoundsRange == rhs.viewportBoundsRange ) && + ( viewportSubPixelBits == rhs.viewportSubPixelBits ) && + ( minMemoryMapAlignment == rhs.minMemoryMapAlignment ) && + ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment ) && + ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment ) && + ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment ) && + ( minTexelOffset == rhs.minTexelOffset ) && ( maxTexelOffset == rhs.maxTexelOffset ) && + ( minTexelGatherOffset == rhs.minTexelGatherOffset ) && + ( maxTexelGatherOffset == rhs.maxTexelGatherOffset ) && + ( minInterpolationOffset == rhs.minInterpolationOffset ) && + ( maxInterpolationOffset == rhs.maxInterpolationOffset ) && + ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits ) && + ( maxFramebufferWidth == rhs.maxFramebufferWidth ) && + ( maxFramebufferHeight == rhs.maxFramebufferHeight ) && + ( maxFramebufferLayers == rhs.maxFramebufferLayers ) && + ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts ) && + ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts ) && + ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts ) && + ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts ) && + ( maxColorAttachments == rhs.maxColorAttachments ) && + ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts ) && + ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts ) && + ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts ) && + ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts ) && + ( storageImageSampleCounts == rhs.storageImageSampleCounts ) && + ( maxSampleMaskWords == rhs.maxSampleMaskWords ) && + ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics ) && + ( timestampPeriod == rhs.timestampPeriod ) && ( maxClipDistances == rhs.maxClipDistances ) && + ( maxCullDistances == rhs.maxCullDistances ) && + ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances ) && + ( discreteQueuePriorities == rhs.discreteQueuePriorities ) && ( pointSizeRange == rhs.pointSizeRange ) && + ( lineWidthRange == rhs.lineWidthRange ) && ( pointSizeGranularity == rhs.pointSizeGranularity ) && + ( lineWidthGranularity == rhs.lineWidthGranularity ) && ( strictLines == rhs.strictLines ) && + ( standardSampleLocations == rhs.standardSampleLocations ) && + ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment ) && + ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment ) && + ( nonCoherentAtomSize == rhs.nonCoherentAtomSize ); +# endif + } + + bool operator!=( PhysicalDeviceLimits const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t maxImageDimension1D = {}; + uint32_t maxImageDimension2D = {}; + uint32_t maxImageDimension3D = {}; + uint32_t maxImageDimensionCube = {}; + uint32_t maxImageArrayLayers = {}; + uint32_t maxTexelBufferElements = {}; + uint32_t maxUniformBufferRange = {}; + uint32_t maxStorageBufferRange = {}; + uint32_t maxPushConstantsSize = {}; + uint32_t maxMemoryAllocationCount = {}; + uint32_t maxSamplerAllocationCount = {}; + VULKAN_HPP_NAMESPACE::DeviceSize bufferImageGranularity = {}; + VULKAN_HPP_NAMESPACE::DeviceSize sparseAddressSpaceSize = {}; + uint32_t maxBoundDescriptorSets = {}; + uint32_t maxPerStageDescriptorSamplers = {}; + uint32_t maxPerStageDescriptorUniformBuffers = {}; + uint32_t maxPerStageDescriptorStorageBuffers = {}; + uint32_t maxPerStageDescriptorSampledImages = {}; + uint32_t maxPerStageDescriptorStorageImages = {}; + uint32_t maxPerStageDescriptorInputAttachments = {}; + uint32_t maxPerStageResources = {}; + uint32_t maxDescriptorSetSamplers = {}; + uint32_t maxDescriptorSetUniformBuffers = {}; + uint32_t maxDescriptorSetUniformBuffersDynamic = {}; + uint32_t maxDescriptorSetStorageBuffers = {}; + uint32_t maxDescriptorSetStorageBuffersDynamic = {}; + uint32_t maxDescriptorSetSampledImages = {}; + uint32_t maxDescriptorSetStorageImages = {}; + uint32_t maxDescriptorSetInputAttachments = {}; + uint32_t maxVertexInputAttributes = {}; + uint32_t maxVertexInputBindings = {}; + uint32_t maxVertexInputAttributeOffset = {}; + uint32_t maxVertexInputBindingStride = {}; + uint32_t maxVertexOutputComponents = {}; + uint32_t maxTessellationGenerationLevel = {}; + uint32_t maxTessellationPatchSize = {}; + uint32_t maxTessellationControlPerVertexInputComponents = {}; + uint32_t maxTessellationControlPerVertexOutputComponents = {}; + uint32_t maxTessellationControlPerPatchOutputComponents = {}; + uint32_t maxTessellationControlTotalOutputComponents = {}; + uint32_t maxTessellationEvaluationInputComponents = {}; + uint32_t maxTessellationEvaluationOutputComponents = {}; + uint32_t maxGeometryShaderInvocations = {}; + uint32_t maxGeometryInputComponents = {}; + uint32_t maxGeometryOutputComponents = {}; + uint32_t maxGeometryOutputVertices = {}; + uint32_t maxGeometryTotalOutputComponents = {}; + uint32_t maxFragmentInputComponents = {}; + uint32_t maxFragmentOutputAttachments = {}; + uint32_t maxFragmentDualSrcAttachments = {}; + uint32_t maxFragmentCombinedOutputResources = {}; + uint32_t maxComputeSharedMemorySize = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D maxComputeWorkGroupCount = {}; + uint32_t maxComputeWorkGroupInvocations = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D maxComputeWorkGroupSize = {}; + uint32_t subPixelPrecisionBits = {}; + uint32_t subTexelPrecisionBits = {}; + uint32_t mipmapPrecisionBits = {}; + uint32_t maxDrawIndexedIndexValue = {}; + uint32_t maxDrawIndirectCount = {}; + float maxSamplerLodBias = {}; + float maxSamplerAnisotropy = {}; + uint32_t maxViewports = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D maxViewportDimensions = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D viewportBoundsRange = {}; + uint32_t viewportSubPixelBits = {}; + size_t minMemoryMapAlignment = {}; + VULKAN_HPP_NAMESPACE::DeviceSize minTexelBufferOffsetAlignment = {}; + VULKAN_HPP_NAMESPACE::DeviceSize minUniformBufferOffsetAlignment = {}; + VULKAN_HPP_NAMESPACE::DeviceSize minStorageBufferOffsetAlignment = {}; + int32_t minTexelOffset = {}; + uint32_t maxTexelOffset = {}; + int32_t minTexelGatherOffset = {}; + uint32_t maxTexelGatherOffset = {}; + float minInterpolationOffset = {}; + float maxInterpolationOffset = {}; + uint32_t subPixelInterpolationOffsetBits = {}; + uint32_t maxFramebufferWidth = {}; + uint32_t maxFramebufferHeight = {}; + uint32_t maxFramebufferLayers = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferColorSampleCounts = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferDepthSampleCounts = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferStencilSampleCounts = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferNoAttachmentsSampleCounts = {}; + uint32_t maxColorAttachments = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageColorSampleCounts = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageIntegerSampleCounts = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageDepthSampleCounts = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageStencilSampleCounts = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlags storageImageSampleCounts = {}; + uint32_t maxSampleMaskWords = {}; + VULKAN_HPP_NAMESPACE::Bool32 timestampComputeAndGraphics = {}; + float timestampPeriod = {}; + uint32_t maxClipDistances = {}; + uint32_t maxCullDistances = {}; + uint32_t maxCombinedClipAndCullDistances = {}; + uint32_t discreteQueuePriorities = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D pointSizeRange = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D lineWidthRange = {}; + float pointSizeGranularity = {}; + float lineWidthGranularity = {}; + VULKAN_HPP_NAMESPACE::Bool32 strictLines = {}; + VULKAN_HPP_NAMESPACE::Bool32 standardSampleLocations = {}; + VULKAN_HPP_NAMESPACE::DeviceSize optimalBufferCopyOffsetAlignment = {}; + VULKAN_HPP_NAMESPACE::DeviceSize optimalBufferCopyRowPitchAlignment = {}; + VULKAN_HPP_NAMESPACE::DeviceSize nonCoherentAtomSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceLimits is not nothrow_move_constructible!" ); + + struct PhysicalDeviceLineRasterizationFeaturesEXT + { + using NativeType = VkPhysicalDeviceLineRasterizationFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 rectangularLines_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 smoothLines_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines_ = {} ) VULKAN_HPP_NOEXCEPT + : rectangularLines( rectangularLines_ ) + , bresenhamLines( bresenhamLines_ ) + , smoothLines( smoothLines_ ) + , stippledRectangularLines( stippledRectangularLines_ ) + , stippledBresenhamLines( stippledBresenhamLines_ ) + , stippledSmoothLines( stippledSmoothLines_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationFeaturesEXT( + PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLineRasterizationFeaturesEXT( VkPhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceLineRasterizationFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceLineRasterizationFeaturesEXT & + operator=( PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLineRasterizationFeaturesEXT & + operator=( VkPhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & + setRectangularLines( VULKAN_HPP_NAMESPACE::Bool32 rectangularLines_ ) VULKAN_HPP_NOEXCEPT + { + rectangularLines = rectangularLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & + setBresenhamLines( VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines_ ) VULKAN_HPP_NOEXCEPT + { + bresenhamLines = bresenhamLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & + setSmoothLines( VULKAN_HPP_NAMESPACE::Bool32 smoothLines_ ) VULKAN_HPP_NOEXCEPT + { + smoothLines = smoothLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & + setStippledRectangularLines( VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines_ ) VULKAN_HPP_NOEXCEPT + { + stippledRectangularLines = stippledRectangularLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & + setStippledBresenhamLines( VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines_ ) VULKAN_HPP_NOEXCEPT + { + stippledBresenhamLines = stippledBresenhamLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & + setStippledSmoothLines( VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines_ ) VULKAN_HPP_NOEXCEPT + { + stippledSmoothLines = stippledSmoothLines_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceLineRasterizationFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceLineRasterizationFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + rectangularLines, + bresenhamLines, + smoothLines, + stippledRectangularLines, + stippledBresenhamLines, + stippledSmoothLines ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceLineRasterizationFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rectangularLines == rhs.rectangularLines ) && + ( bresenhamLines == rhs.bresenhamLines ) && ( smoothLines == rhs.smoothLines ) && + ( stippledRectangularLines == rhs.stippledRectangularLines ) && + ( stippledBresenhamLines == rhs.stippledBresenhamLines ) && + ( stippledSmoothLines == rhs.stippledSmoothLines ); +# endif + } + + bool operator!=( PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 rectangularLines = {}; + VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines = {}; + VULKAN_HPP_NAMESPACE::Bool32 smoothLines = {}; + VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines = {}; + VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines = {}; + VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT ) == + sizeof( VkPhysicalDeviceLineRasterizationFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceLineRasterizationFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceLineRasterizationFeaturesEXT; + }; + + struct PhysicalDeviceLineRasterizationPropertiesEXT + { + using NativeType = VkPhysicalDeviceLineRasterizationPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceLineRasterizationPropertiesEXT( uint32_t lineSubPixelPrecisionBits_ = {} ) VULKAN_HPP_NOEXCEPT + : lineSubPixelPrecisionBits( lineSubPixelPrecisionBits_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationPropertiesEXT( + PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLineRasterizationPropertiesEXT( VkPhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceLineRasterizationPropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceLineRasterizationPropertiesEXT & + operator=( PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLineRasterizationPropertiesEXT & + operator=( VkPhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceLineRasterizationPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceLineRasterizationPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, lineSubPixelPrecisionBits ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceLineRasterizationPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( lineSubPixelPrecisionBits == rhs.lineSubPixelPrecisionBits ); +# endif + } + + bool operator!=( PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT; + void * pNext = {}; + uint32_t lineSubPixelPrecisionBits = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT ) == + sizeof( VkPhysicalDeviceLineRasterizationPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceLineRasterizationPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceLineRasterizationPropertiesEXT; + }; + + struct PhysicalDeviceLinearColorAttachmentFeaturesNV + { + using NativeType = VkPhysicalDeviceLinearColorAttachmentFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceLinearColorAttachmentFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceLinearColorAttachmentFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 linearColorAttachment_ = {} ) VULKAN_HPP_NOEXCEPT + : linearColorAttachment( linearColorAttachment_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceLinearColorAttachmentFeaturesNV( + PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLinearColorAttachmentFeaturesNV( VkPhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceLinearColorAttachmentFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceLinearColorAttachmentFeaturesNV & + operator=( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLinearColorAttachmentFeaturesNV & + operator=( VkPhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLinearColorAttachmentFeaturesNV & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLinearColorAttachmentFeaturesNV & + setLinearColorAttachment( VULKAN_HPP_NAMESPACE::Bool32 linearColorAttachment_ ) VULKAN_HPP_NOEXCEPT + { + linearColorAttachment = linearColorAttachment_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, linearColorAttachment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceLinearColorAttachmentFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( linearColorAttachment == rhs.linearColorAttachment ); +# endif + } + + bool operator!=( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceLinearColorAttachmentFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 linearColorAttachment = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV ) == + sizeof( VkPhysicalDeviceLinearColorAttachmentFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceLinearColorAttachmentFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceLinearColorAttachmentFeaturesNV; + }; + + struct PhysicalDeviceMaintenance3Properties + { + using NativeType = VkPhysicalDeviceMaintenance3Properties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceMaintenance3Properties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance3Properties( + uint32_t maxPerSetDescriptors_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize_ = {} ) VULKAN_HPP_NOEXCEPT + : maxPerSetDescriptors( maxPerSetDescriptors_ ) + , maxMemoryAllocationSize( maxMemoryAllocationSize_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance3Properties( PhysicalDeviceMaintenance3Properties const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance3Properties( VkPhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance3Properties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance3Properties & + operator=( PhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance3Properties & + operator=( VkPhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceMaintenance3Properties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceMaintenance3Properties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxPerSetDescriptors, maxMemoryAllocationSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance3Properties const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance3Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxPerSetDescriptors == rhs.maxPerSetDescriptors ) && + ( maxMemoryAllocationSize == rhs.maxMemoryAllocationSize ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance3Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMaintenance3Properties; + void * pNext = {}; + uint32_t maxPerSetDescriptors = {}; + VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties ) == + sizeof( VkPhysicalDeviceMaintenance3Properties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance3Properties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance3Properties; + }; + using PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties; + + struct PhysicalDeviceMaintenance4Features + { + using NativeType = VkPhysicalDeviceMaintenance4Features; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceMaintenance4Features; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceMaintenance4Features( VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ = {} ) VULKAN_HPP_NOEXCEPT + : maintenance4( maintenance4_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Features( PhysicalDeviceMaintenance4Features const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance4Features( VkPhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance4Features( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance4Features & + operator=( PhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance4Features & + operator=( VkPhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance4Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance4Features & + setMaintenance4( VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ ) VULKAN_HPP_NOEXCEPT + { + maintenance4 = maintenance4_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceMaintenance4Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceMaintenance4Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maintenance4 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance4Features const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance4Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maintenance4 == rhs.maintenance4 ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance4Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMaintenance4Features; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 maintenance4 = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features ) == + sizeof( VkPhysicalDeviceMaintenance4Features ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance4Features is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance4Features; + }; + using PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4Features; + + struct PhysicalDeviceMaintenance4Properties + { + using NativeType = VkPhysicalDeviceMaintenance4Properties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceMaintenance4Properties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceMaintenance4Properties( VULKAN_HPP_NAMESPACE::DeviceSize maxBufferSize_ = {} ) VULKAN_HPP_NOEXCEPT + : maxBufferSize( maxBufferSize_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Properties( PhysicalDeviceMaintenance4Properties const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance4Properties( VkPhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance4Properties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance4Properties & + operator=( PhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance4Properties & + operator=( VkPhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceMaintenance4Properties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceMaintenance4Properties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxBufferSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance4Properties const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance4Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxBufferSize == rhs.maxBufferSize ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance4Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMaintenance4Properties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceSize maxBufferSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties ) == + sizeof( VkPhysicalDeviceMaintenance4Properties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance4Properties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance4Properties; + }; + using PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4Properties; + + struct PhysicalDeviceMemoryBudgetPropertiesEXT + { + using NativeType = VkPhysicalDeviceMemoryBudgetPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT( + std::array const & heapBudget_ = {}, + std::array const & heapUsage_ = {} ) VULKAN_HPP_NOEXCEPT + : heapBudget( heapBudget_ ) + , heapUsage( heapUsage_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT( + PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMemoryBudgetPropertiesEXT( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMemoryBudgetPropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceMemoryBudgetPropertiesEXT & + operator=( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMemoryBudgetPropertiesEXT & + operator=( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceMemoryBudgetPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceMemoryBudgetPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, heapBudget, heapUsage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMemoryBudgetPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( heapBudget == rhs.heapBudget ) && + ( heapUsage == rhs.heapUsage ); +# endif + } + + bool operator!=( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D heapBudget = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D heapUsage = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT ) == + sizeof( VkPhysicalDeviceMemoryBudgetPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceMemoryBudgetPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceMemoryBudgetPropertiesEXT; + }; + + struct PhysicalDeviceMemoryPriorityFeaturesEXT + { + using NativeType = VkPhysicalDeviceMemoryPriorityFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceMemoryPriorityFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 memoryPriority_ = {} ) VULKAN_HPP_NOEXCEPT + : memoryPriority( memoryPriority_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryPriorityFeaturesEXT( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMemoryPriorityFeaturesEXT( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMemoryPriorityFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceMemoryPriorityFeaturesEXT & + operator=( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMemoryPriorityFeaturesEXT & + operator=( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryPriorityFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryPriorityFeaturesEXT & + setMemoryPriority( VULKAN_HPP_NAMESPACE::Bool32 memoryPriority_ ) VULKAN_HPP_NOEXCEPT + { + memoryPriority = memoryPriority_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceMemoryPriorityFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceMemoryPriorityFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryPriority ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMemoryPriorityFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryPriority == rhs.memoryPriority ); +# endif + } + + bool operator!=( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 memoryPriority = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT ) == + sizeof( VkPhysicalDeviceMemoryPriorityFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceMemoryPriorityFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceMemoryPriorityFeaturesEXT; + }; + + struct PhysicalDeviceMemoryProperties + { + using NativeType = VkPhysicalDeviceMemoryProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties( + uint32_t memoryTypeCount_ = {}, + std::array const & memoryTypes_ = {}, + uint32_t memoryHeapCount_ = {}, + std::array const & memoryHeaps_ = {} ) VULKAN_HPP_NOEXCEPT + : memoryTypeCount( memoryTypeCount_ ) + , memoryTypes( memoryTypes_ ) + , memoryHeapCount( memoryHeapCount_ ) + , memoryHeaps( memoryHeaps_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceMemoryProperties( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMemoryProperties( VkPhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMemoryProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceMemoryProperties & + operator=( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMemoryProperties & operator=( VkPhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceMemoryProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceMemoryProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( memoryTypeCount, memoryTypes, memoryHeapCount, memoryHeaps ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMemoryProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( memoryTypeCount == rhs.memoryTypeCount ) && ( memoryTypes == rhs.memoryTypes ) && + ( memoryHeapCount == rhs.memoryHeapCount ) && ( memoryHeaps == rhs.memoryHeaps ); +# endif + } + + bool operator!=( PhysicalDeviceMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t memoryTypeCount = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D memoryTypes = {}; + uint32_t memoryHeapCount = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D memoryHeaps = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties ) == + sizeof( VkPhysicalDeviceMemoryProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceMemoryProperties is not nothrow_move_constructible!" ); + + struct PhysicalDeviceMemoryProperties2 + { + using NativeType = VkPhysicalDeviceMemoryProperties2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMemoryProperties2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties2( + VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties_ = {} ) VULKAN_HPP_NOEXCEPT + : memoryProperties( memoryProperties_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceMemoryProperties2( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMemoryProperties2( VkPhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMemoryProperties2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceMemoryProperties2 & + operator=( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMemoryProperties2 & operator=( VkPhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceMemoryProperties2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceMemoryProperties2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMemoryProperties2 const & ) const = default; +#else + bool operator==( PhysicalDeviceMemoryProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryProperties == rhs.memoryProperties ); +# endif + } + + bool operator!=( PhysicalDeviceMemoryProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMemoryProperties2; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 ) == + sizeof( VkPhysicalDeviceMemoryProperties2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceMemoryProperties2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceMemoryProperties2; + }; + using PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2; + + struct PhysicalDeviceMeshShaderFeaturesNV + { + using NativeType = VkPhysicalDeviceMeshShaderFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceMeshShaderFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceMeshShaderFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 taskShader_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 meshShader_ = {} ) VULKAN_HPP_NOEXCEPT + : taskShader( taskShader_ ) + , meshShader( meshShader_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesNV( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMeshShaderFeaturesNV( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMeshShaderFeaturesNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceMeshShaderFeaturesNV & + operator=( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMeshShaderFeaturesNV & + operator=( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV & + setTaskShader( VULKAN_HPP_NAMESPACE::Bool32 taskShader_ ) VULKAN_HPP_NOEXCEPT + { + taskShader = taskShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV & + setMeshShader( VULKAN_HPP_NAMESPACE::Bool32 meshShader_ ) VULKAN_HPP_NOEXCEPT + { + meshShader = meshShader_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceMeshShaderFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceMeshShaderFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, taskShader, meshShader ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMeshShaderFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( taskShader == rhs.taskShader ) && + ( meshShader == rhs.meshShader ); +# endif + } + + bool operator!=( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMeshShaderFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 taskShader = {}; + VULKAN_HPP_NAMESPACE::Bool32 meshShader = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV ) == + sizeof( VkPhysicalDeviceMeshShaderFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceMeshShaderFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceMeshShaderFeaturesNV; + }; + + struct PhysicalDeviceMeshShaderPropertiesNV + { + using NativeType = VkPhysicalDeviceMeshShaderPropertiesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceMeshShaderPropertiesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceMeshShaderPropertiesNV( uint32_t maxDrawMeshTasksCount_ = {}, + uint32_t maxTaskWorkGroupInvocations_ = {}, + std::array const & maxTaskWorkGroupSize_ = {}, + uint32_t maxTaskTotalMemorySize_ = {}, + uint32_t maxTaskOutputCount_ = {}, + uint32_t maxMeshWorkGroupInvocations_ = {}, + std::array const & maxMeshWorkGroupSize_ = {}, + uint32_t maxMeshTotalMemorySize_ = {}, + uint32_t maxMeshOutputVertices_ = {}, + uint32_t maxMeshOutputPrimitives_ = {}, + uint32_t maxMeshMultiviewViewCount_ = {}, + uint32_t meshOutputPerVertexGranularity_ = {}, + uint32_t meshOutputPerPrimitiveGranularity_ = {} ) VULKAN_HPP_NOEXCEPT + : maxDrawMeshTasksCount( maxDrawMeshTasksCount_ ) + , maxTaskWorkGroupInvocations( maxTaskWorkGroupInvocations_ ) + , maxTaskWorkGroupSize( maxTaskWorkGroupSize_ ) + , maxTaskTotalMemorySize( maxTaskTotalMemorySize_ ) + , maxTaskOutputCount( maxTaskOutputCount_ ) + , maxMeshWorkGroupInvocations( maxMeshWorkGroupInvocations_ ) + , maxMeshWorkGroupSize( maxMeshWorkGroupSize_ ) + , maxMeshTotalMemorySize( maxMeshTotalMemorySize_ ) + , maxMeshOutputVertices( maxMeshOutputVertices_ ) + , maxMeshOutputPrimitives( maxMeshOutputPrimitives_ ) + , maxMeshMultiviewViewCount( maxMeshMultiviewViewCount_ ) + , meshOutputPerVertexGranularity( meshOutputPerVertexGranularity_ ) + , meshOutputPerPrimitiveGranularity( meshOutputPerPrimitiveGranularity_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesNV( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMeshShaderPropertiesNV( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMeshShaderPropertiesNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceMeshShaderPropertiesNV & + operator=( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMeshShaderPropertiesNV & + operator=( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceMeshShaderPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceMeshShaderPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxDrawMeshTasksCount, + maxTaskWorkGroupInvocations, + maxTaskWorkGroupSize, + maxTaskTotalMemorySize, + maxTaskOutputCount, + maxMeshWorkGroupInvocations, + maxMeshWorkGroupSize, + maxMeshTotalMemorySize, + maxMeshOutputVertices, + maxMeshOutputPrimitives, + maxMeshMultiviewViewCount, + meshOutputPerVertexGranularity, + meshOutputPerPrimitiveGranularity ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMeshShaderPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( maxDrawMeshTasksCount == rhs.maxDrawMeshTasksCount ) && + ( maxTaskWorkGroupInvocations == rhs.maxTaskWorkGroupInvocations ) && + ( maxTaskWorkGroupSize == rhs.maxTaskWorkGroupSize ) && + ( maxTaskTotalMemorySize == rhs.maxTaskTotalMemorySize ) && + ( maxTaskOutputCount == rhs.maxTaskOutputCount ) && + ( maxMeshWorkGroupInvocations == rhs.maxMeshWorkGroupInvocations ) && + ( maxMeshWorkGroupSize == rhs.maxMeshWorkGroupSize ) && + ( maxMeshTotalMemorySize == rhs.maxMeshTotalMemorySize ) && + ( maxMeshOutputVertices == rhs.maxMeshOutputVertices ) && + ( maxMeshOutputPrimitives == rhs.maxMeshOutputPrimitives ) && + ( maxMeshMultiviewViewCount == rhs.maxMeshMultiviewViewCount ) && + ( meshOutputPerVertexGranularity == rhs.meshOutputPerVertexGranularity ) && + ( meshOutputPerPrimitiveGranularity == rhs.meshOutputPerPrimitiveGranularity ); +# endif + } + + bool operator!=( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMeshShaderPropertiesNV; + void * pNext = {}; + uint32_t maxDrawMeshTasksCount = {}; + uint32_t maxTaskWorkGroupInvocations = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D maxTaskWorkGroupSize = {}; + uint32_t maxTaskTotalMemorySize = {}; + uint32_t maxTaskOutputCount = {}; + uint32_t maxMeshWorkGroupInvocations = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D maxMeshWorkGroupSize = {}; + uint32_t maxMeshTotalMemorySize = {}; + uint32_t maxMeshOutputVertices = {}; + uint32_t maxMeshOutputPrimitives = {}; + uint32_t maxMeshMultiviewViewCount = {}; + uint32_t meshOutputPerVertexGranularity = {}; + uint32_t meshOutputPerPrimitiveGranularity = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV ) == + sizeof( VkPhysicalDeviceMeshShaderPropertiesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceMeshShaderPropertiesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceMeshShaderPropertiesNV; + }; + + struct PhysicalDeviceMultiDrawFeaturesEXT + { + using NativeType = VkPhysicalDeviceMultiDrawFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceMultiDrawFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceMultiDrawFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 multiDraw_ = {} ) VULKAN_HPP_NOEXCEPT + : multiDraw( multiDraw_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawFeaturesEXT( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiDrawFeaturesEXT( VkPhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMultiDrawFeaturesEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceMultiDrawFeaturesEXT & + operator=( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiDrawFeaturesEXT & + operator=( VkPhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiDrawFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiDrawFeaturesEXT & + setMultiDraw( VULKAN_HPP_NAMESPACE::Bool32 multiDraw_ ) VULKAN_HPP_NOEXCEPT + { + multiDraw = multiDraw_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceMultiDrawFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceMultiDrawFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, multiDraw ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMultiDrawFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multiDraw == rhs.multiDraw ); +# endif + } + + bool operator!=( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiDrawFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 multiDraw = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT ) == + sizeof( VkPhysicalDeviceMultiDrawFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceMultiDrawFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceMultiDrawFeaturesEXT; + }; + + struct PhysicalDeviceMultiDrawPropertiesEXT + { + using NativeType = VkPhysicalDeviceMultiDrawPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceMultiDrawPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawPropertiesEXT( uint32_t maxMultiDrawCount_ = {} ) VULKAN_HPP_NOEXCEPT + : maxMultiDrawCount( maxMultiDrawCount_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawPropertiesEXT( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiDrawPropertiesEXT( VkPhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMultiDrawPropertiesEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceMultiDrawPropertiesEXT & + operator=( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiDrawPropertiesEXT & + operator=( VkPhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceMultiDrawPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceMultiDrawPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxMultiDrawCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMultiDrawPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxMultiDrawCount == rhs.maxMultiDrawCount ); +# endif + } + + bool operator!=( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiDrawPropertiesEXT; + void * pNext = {}; + uint32_t maxMultiDrawCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT ) == + sizeof( VkPhysicalDeviceMultiDrawPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceMultiDrawPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceMultiDrawPropertiesEXT; + }; + + struct PhysicalDeviceMultiviewFeatures + { + using NativeType = VkPhysicalDeviceMultiviewFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMultiviewFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewFeatures( + VULKAN_HPP_NAMESPACE::Bool32 multiview_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ = {} ) VULKAN_HPP_NOEXCEPT + : multiview( multiview_ ) + , multiviewGeometryShader( multiviewGeometryShader_ ) + , multiviewTessellationShader( multiviewTessellationShader_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceMultiviewFeatures( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiviewFeatures( VkPhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMultiviewFeatures( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceMultiviewFeatures & + operator=( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiviewFeatures & operator=( VkPhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & + setMultiview( VULKAN_HPP_NAMESPACE::Bool32 multiview_ ) VULKAN_HPP_NOEXCEPT + { + multiview = multiview_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & + setMultiviewGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ ) VULKAN_HPP_NOEXCEPT + { + multiviewGeometryShader = multiviewGeometryShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & + setMultiviewTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ ) VULKAN_HPP_NOEXCEPT + { + multiviewTessellationShader = multiviewTessellationShader_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceMultiviewFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceMultiviewFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, multiview, multiviewGeometryShader, multiviewTessellationShader ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMultiviewFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceMultiviewFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multiview == rhs.multiview ) && + ( multiviewGeometryShader == rhs.multiviewGeometryShader ) && + ( multiviewTessellationShader == rhs.multiviewTessellationShader ); +# endif + } + + bool operator!=( PhysicalDeviceMultiviewFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiviewFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 multiview = {}; + VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader = {}; + VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures ) == + sizeof( VkPhysicalDeviceMultiviewFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceMultiviewFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceMultiviewFeatures; + }; + using PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures; + + struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + { + using NativeType = VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( + VULKAN_HPP_NAMESPACE::Bool32 perViewPositionAllComponents_ = {} ) VULKAN_HPP_NOEXCEPT + : perViewPositionAllComponents( perViewPositionAllComponents_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( + PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( + VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX & + operator=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX & + operator=( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, perViewPositionAllComponents ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & ) const = default; +#else + bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( perViewPositionAllComponents == rhs.perViewPositionAllComponents ); +# endif + } + + bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 perViewPositionAllComponents = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == + sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>::value, + "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; + }; + + struct PhysicalDeviceMultiviewProperties + { + using NativeType = VkPhysicalDeviceMultiviewProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceMultiviewProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceMultiviewProperties( uint32_t maxMultiviewViewCount_ = {}, + uint32_t maxMultiviewInstanceIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : maxMultiviewViewCount( maxMultiviewViewCount_ ) + , maxMultiviewInstanceIndex( maxMultiviewInstanceIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceMultiviewProperties( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiviewProperties( VkPhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMultiviewProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceMultiviewProperties & + operator=( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiviewProperties & operator=( VkPhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceMultiviewProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceMultiviewProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxMultiviewViewCount, maxMultiviewInstanceIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMultiviewProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceMultiviewProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( maxMultiviewViewCount == rhs.maxMultiviewViewCount ) && + ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex ); +# endif + } + + bool operator!=( PhysicalDeviceMultiviewProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiviewProperties; + void * pNext = {}; + uint32_t maxMultiviewViewCount = {}; + uint32_t maxMultiviewInstanceIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties ) == + sizeof( VkPhysicalDeviceMultiviewProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceMultiviewProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceMultiviewProperties; + }; + using PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties; + + struct PhysicalDeviceMutableDescriptorTypeFeaturesVALVE + { + using NativeType = VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesVALVE; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMutableDescriptorTypeFeaturesVALVE( + VULKAN_HPP_NAMESPACE::Bool32 mutableDescriptorType_ = {} ) VULKAN_HPP_NOEXCEPT + : mutableDescriptorType( mutableDescriptorType_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMutableDescriptorTypeFeaturesVALVE( + PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMutableDescriptorTypeFeaturesVALVE( VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMutableDescriptorTypeFeaturesVALVE( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceMutableDescriptorTypeFeaturesVALVE & + operator=( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMutableDescriptorTypeFeaturesVALVE & + operator=( VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMutableDescriptorTypeFeaturesVALVE & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMutableDescriptorTypeFeaturesVALVE & + setMutableDescriptorType( VULKAN_HPP_NAMESPACE::Bool32 mutableDescriptorType_ ) VULKAN_HPP_NOEXCEPT + { + mutableDescriptorType = mutableDescriptorType_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, mutableDescriptorType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & ) const = default; +#else + bool operator==( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mutableDescriptorType == rhs.mutableDescriptorType ); +# endif + } + + bool operator!=( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesVALVE; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 mutableDescriptorType = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE ) == + sizeof( VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceMutableDescriptorTypeFeaturesVALVE is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceMutableDescriptorTypeFeaturesVALVE; + }; + + struct PhysicalDevicePCIBusInfoPropertiesEXT + { + using NativeType = VkPhysicalDevicePCIBusInfoPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevicePciBusInfoPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePCIBusInfoPropertiesEXT( uint32_t pciDomain_ = {}, + uint32_t pciBus_ = {}, + uint32_t pciDevice_ = {}, + uint32_t pciFunction_ = {} ) VULKAN_HPP_NOEXCEPT + : pciDomain( pciDomain_ ) + , pciBus( pciBus_ ) + , pciDevice( pciDevice_ ) + , pciFunction( pciFunction_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDevicePCIBusInfoPropertiesEXT( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePCIBusInfoPropertiesEXT( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePCIBusInfoPropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevicePCIBusInfoPropertiesEXT & + operator=( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePCIBusInfoPropertiesEXT & + operator=( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDevicePCIBusInfoPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevicePCIBusInfoPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pciDomain, pciBus, pciDevice, pciFunction ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePCIBusInfoPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pciDomain == rhs.pciDomain ) && + ( pciBus == rhs.pciBus ) && ( pciDevice == rhs.pciDevice ) && ( pciFunction == rhs.pciFunction ); +# endif + } + + bool operator!=( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT; + void * pNext = {}; + uint32_t pciDomain = {}; + uint32_t pciBus = {}; + uint32_t pciDevice = {}; + uint32_t pciFunction = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT ) == + sizeof( VkPhysicalDevicePCIBusInfoPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDevicePCIBusInfoPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevicePCIBusInfoPropertiesEXT; + }; + + struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT + { + using NativeType = VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 pageableDeviceLocalMemory_ = {} ) VULKAN_HPP_NOEXCEPT + : pageableDeviceLocalMemory( pageableDeviceLocalMemory_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( + PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( + VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT & + operator=( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT & + operator=( VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT & + setPageableDeviceLocalMemory( VULKAN_HPP_NAMESPACE::Bool32 pageableDeviceLocalMemory_ ) VULKAN_HPP_NOEXCEPT + { + pageableDeviceLocalMemory = pageableDeviceLocalMemory_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pageableDeviceLocalMemory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( pageableDeviceLocalMemory == rhs.pageableDeviceLocalMemory ); +# endif + } + + bool operator!=( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 pageableDeviceLocalMemory = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT ) == + sizeof( VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; + }; + + struct PhysicalDevicePerformanceQueryFeaturesKHR + { + using NativeType = VkPhysicalDevicePerformanceQueryFeaturesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryFeaturesKHR( + VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools_ = {} ) VULKAN_HPP_NOEXCEPT + : performanceCounterQueryPools( performanceCounterQueryPools_ ) + , performanceCounterMultipleQueryPools( performanceCounterMultipleQueryPools_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryFeaturesKHR( + PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePerformanceQueryFeaturesKHR( VkPhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDevicePerformanceQueryFeaturesKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevicePerformanceQueryFeaturesKHR & + operator=( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePerformanceQueryFeaturesKHR & + operator=( VkPhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR & + setPerformanceCounterQueryPools( VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools_ ) VULKAN_HPP_NOEXCEPT + { + performanceCounterQueryPools = performanceCounterQueryPools_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR & setPerformanceCounterMultipleQueryPools( + VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools_ ) VULKAN_HPP_NOEXCEPT + { + performanceCounterMultipleQueryPools = performanceCounterMultipleQueryPools_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDevicePerformanceQueryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevicePerformanceQueryFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, performanceCounterQueryPools, performanceCounterMultipleQueryPools ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePerformanceQueryFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( performanceCounterQueryPools == rhs.performanceCounterQueryPools ) && + ( performanceCounterMultipleQueryPools == rhs.performanceCounterMultipleQueryPools ); +# endif + } + + bool operator!=( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools = {}; + VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR ) == + sizeof( VkPhysicalDevicePerformanceQueryFeaturesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDevicePerformanceQueryFeaturesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevicePerformanceQueryFeaturesKHR; + }; + + struct PhysicalDevicePerformanceQueryPropertiesKHR + { + using NativeType = VkPhysicalDevicePerformanceQueryPropertiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryPropertiesKHR( + VULKAN_HPP_NAMESPACE::Bool32 allowCommandBufferQueryCopies_ = {} ) VULKAN_HPP_NOEXCEPT + : allowCommandBufferQueryCopies( allowCommandBufferQueryCopies_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryPropertiesKHR( + PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePerformanceQueryPropertiesKHR( VkPhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDevicePerformanceQueryPropertiesKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevicePerformanceQueryPropertiesKHR & + operator=( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePerformanceQueryPropertiesKHR & + operator=( VkPhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDevicePerformanceQueryPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevicePerformanceQueryPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, allowCommandBufferQueryCopies ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePerformanceQueryPropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( allowCommandBufferQueryCopies == rhs.allowCommandBufferQueryCopies ); +# endif + } + + bool operator!=( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 allowCommandBufferQueryCopies = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR ) == + sizeof( VkPhysicalDevicePerformanceQueryPropertiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDevicePerformanceQueryPropertiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevicePerformanceQueryPropertiesKHR; + }; + + struct PhysicalDevicePipelineCreationCacheControlFeatures + { + using NativeType = VkPhysicalDevicePipelineCreationCacheControlFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevicePipelineCreationCacheControlFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineCreationCacheControlFeatures( + VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ = {} ) VULKAN_HPP_NOEXCEPT + : pipelineCreationCacheControl( pipelineCreationCacheControl_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineCreationCacheControlFeatures( + PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePipelineCreationCacheControlFeatures( + VkPhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePipelineCreationCacheControlFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevicePipelineCreationCacheControlFeatures & + operator=( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePipelineCreationCacheControlFeatures & + operator=( VkPhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeatures & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeatures & + setPipelineCreationCacheControl( VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ ) VULKAN_HPP_NOEXCEPT + { + pipelineCreationCacheControl = pipelineCreationCacheControl_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDevicePipelineCreationCacheControlFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevicePipelineCreationCacheControlFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineCreationCacheControl ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePipelineCreationCacheControlFeatures const & ) const = default; +#else + bool operator==( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( pipelineCreationCacheControl == rhs.pipelineCreationCacheControl ); +# endif + } + + bool operator!=( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePipelineCreationCacheControlFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures ) == + sizeof( VkPhysicalDevicePipelineCreationCacheControlFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDevicePipelineCreationCacheControlFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevicePipelineCreationCacheControlFeatures; + }; + using PhysicalDevicePipelineCreationCacheControlFeaturesEXT = PhysicalDevicePipelineCreationCacheControlFeatures; + + struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR + { + using NativeType = VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( + VULKAN_HPP_NAMESPACE::Bool32 pipelineExecutableInfo_ = {} ) VULKAN_HPP_NOEXCEPT + : pipelineExecutableInfo( pipelineExecutableInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( + PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( + VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & + operator=( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & + operator=( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & + setPipelineExecutableInfo( VULKAN_HPP_NAMESPACE::Bool32 pipelineExecutableInfo_ ) VULKAN_HPP_NOEXCEPT + { + pipelineExecutableInfo = pipelineExecutableInfo_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineExecutableInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( pipelineExecutableInfo == rhs.pipelineExecutableInfo ); +# endif + } + + bool operator!=( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 pipelineExecutableInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR ) == + sizeof( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR>::value, + "PhysicalDevicePipelineExecutablePropertiesFeaturesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevicePipelineExecutablePropertiesFeaturesKHR; + }; + + struct PhysicalDevicePointClippingProperties + { + using NativeType = VkPhysicalDevicePointClippingProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevicePointClippingProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePointClippingProperties( + VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior_ = + VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes ) VULKAN_HPP_NOEXCEPT + : pointClippingBehavior( pointClippingBehavior_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDevicePointClippingProperties( PhysicalDevicePointClippingProperties const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePointClippingProperties( VkPhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePointClippingProperties( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevicePointClippingProperties & + operator=( PhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePointClippingProperties & + operator=( VkPhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDevicePointClippingProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevicePointClippingProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pointClippingBehavior ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePointClippingProperties const & ) const = default; +#else + bool operator==( PhysicalDevicePointClippingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pointClippingBehavior == rhs.pointClippingBehavior ); +# endif + } + + bool operator!=( PhysicalDevicePointClippingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePointClippingProperties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior = + VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties ) == + sizeof( VkPhysicalDevicePointClippingProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDevicePointClippingProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevicePointClippingProperties; + }; + using PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct PhysicalDevicePortabilitySubsetFeaturesKHR + { + using NativeType = VkPhysicalDevicePortabilitySubsetFeaturesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetFeaturesKHR( + VULKAN_HPP_NAMESPACE::Bool32 constantAlphaColorBlendFactors_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 events_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatReinterpretation_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatSwizzle_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 imageView2DOn3DImage_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 multisampleArrayImage_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 mutableComparisonSamplers_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 pointPolygons_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 samplerMipLodBias_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 separateStencilMaskRef_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSampleRateInterpolationFunctions_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 tessellationIsolines_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 tessellationPointMode_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 triangleFans_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeAccessBeyondStride_ = {} ) VULKAN_HPP_NOEXCEPT + : constantAlphaColorBlendFactors( constantAlphaColorBlendFactors_ ) + , events( events_ ) + , imageViewFormatReinterpretation( imageViewFormatReinterpretation_ ) + , imageViewFormatSwizzle( imageViewFormatSwizzle_ ) + , imageView2DOn3DImage( imageView2DOn3DImage_ ) + , multisampleArrayImage( multisampleArrayImage_ ) + , mutableComparisonSamplers( mutableComparisonSamplers_ ) + , pointPolygons( pointPolygons_ ) + , samplerMipLodBias( samplerMipLodBias_ ) + , separateStencilMaskRef( separateStencilMaskRef_ ) + , shaderSampleRateInterpolationFunctions( shaderSampleRateInterpolationFunctions_ ) + , tessellationIsolines( tessellationIsolines_ ) + , tessellationPointMode( tessellationPointMode_ ) + , triangleFans( triangleFans_ ) + , vertexAttributeAccessBeyondStride( vertexAttributeAccessBeyondStride_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetFeaturesKHR( + PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePortabilitySubsetFeaturesKHR( VkPhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDevicePortabilitySubsetFeaturesKHR( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevicePortabilitySubsetFeaturesKHR & + operator=( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePortabilitySubsetFeaturesKHR & + operator=( VkPhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setConstantAlphaColorBlendFactors( + VULKAN_HPP_NAMESPACE::Bool32 constantAlphaColorBlendFactors_ ) VULKAN_HPP_NOEXCEPT + { + constantAlphaColorBlendFactors = constantAlphaColorBlendFactors_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & + setEvents( VULKAN_HPP_NAMESPACE::Bool32 events_ ) VULKAN_HPP_NOEXCEPT + { + events = events_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setImageViewFormatReinterpretation( + VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatReinterpretation_ ) VULKAN_HPP_NOEXCEPT + { + imageViewFormatReinterpretation = imageViewFormatReinterpretation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & + setImageViewFormatSwizzle( VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatSwizzle_ ) VULKAN_HPP_NOEXCEPT + { + imageViewFormatSwizzle = imageViewFormatSwizzle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & + setImageView2DOn3DImage( VULKAN_HPP_NAMESPACE::Bool32 imageView2DOn3DImage_ ) VULKAN_HPP_NOEXCEPT + { + imageView2DOn3DImage = imageView2DOn3DImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & + setMultisampleArrayImage( VULKAN_HPP_NAMESPACE::Bool32 multisampleArrayImage_ ) VULKAN_HPP_NOEXCEPT + { + multisampleArrayImage = multisampleArrayImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & + setMutableComparisonSamplers( VULKAN_HPP_NAMESPACE::Bool32 mutableComparisonSamplers_ ) VULKAN_HPP_NOEXCEPT + { + mutableComparisonSamplers = mutableComparisonSamplers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & + setPointPolygons( VULKAN_HPP_NAMESPACE::Bool32 pointPolygons_ ) VULKAN_HPP_NOEXCEPT + { + pointPolygons = pointPolygons_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & + setSamplerMipLodBias( VULKAN_HPP_NAMESPACE::Bool32 samplerMipLodBias_ ) VULKAN_HPP_NOEXCEPT + { + samplerMipLodBias = samplerMipLodBias_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & + setSeparateStencilMaskRef( VULKAN_HPP_NAMESPACE::Bool32 separateStencilMaskRef_ ) VULKAN_HPP_NOEXCEPT + { + separateStencilMaskRef = separateStencilMaskRef_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setShaderSampleRateInterpolationFunctions( + VULKAN_HPP_NAMESPACE::Bool32 shaderSampleRateInterpolationFunctions_ ) VULKAN_HPP_NOEXCEPT + { + shaderSampleRateInterpolationFunctions = shaderSampleRateInterpolationFunctions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & + setTessellationIsolines( VULKAN_HPP_NAMESPACE::Bool32 tessellationIsolines_ ) VULKAN_HPP_NOEXCEPT + { + tessellationIsolines = tessellationIsolines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & + setTessellationPointMode( VULKAN_HPP_NAMESPACE::Bool32 tessellationPointMode_ ) VULKAN_HPP_NOEXCEPT + { + tessellationPointMode = tessellationPointMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & + setTriangleFans( VULKAN_HPP_NAMESPACE::Bool32 triangleFans_ ) VULKAN_HPP_NOEXCEPT + { + triangleFans = triangleFans_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setVertexAttributeAccessBeyondStride( + VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeAccessBeyondStride_ ) VULKAN_HPP_NOEXCEPT + { + vertexAttributeAccessBeyondStride = vertexAttributeAccessBeyondStride_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDevicePortabilitySubsetFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevicePortabilitySubsetFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + constantAlphaColorBlendFactors, + events, + imageViewFormatReinterpretation, + imageViewFormatSwizzle, + imageView2DOn3DImage, + multisampleArrayImage, + mutableComparisonSamplers, + pointPolygons, + samplerMipLodBias, + separateStencilMaskRef, + shaderSampleRateInterpolationFunctions, + tessellationIsolines, + tessellationPointMode, + triangleFans, + vertexAttributeAccessBeyondStride ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePortabilitySubsetFeaturesKHR const & ) const = default; +# else + bool operator==( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( constantAlphaColorBlendFactors == rhs.constantAlphaColorBlendFactors ) && ( events == rhs.events ) && + ( imageViewFormatReinterpretation == rhs.imageViewFormatReinterpretation ) && + ( imageViewFormatSwizzle == rhs.imageViewFormatSwizzle ) && + ( imageView2DOn3DImage == rhs.imageView2DOn3DImage ) && + ( multisampleArrayImage == rhs.multisampleArrayImage ) && + ( mutableComparisonSamplers == rhs.mutableComparisonSamplers ) && ( pointPolygons == rhs.pointPolygons ) && + ( samplerMipLodBias == rhs.samplerMipLodBias ) && + ( separateStencilMaskRef == rhs.separateStencilMaskRef ) && + ( shaderSampleRateInterpolationFunctions == rhs.shaderSampleRateInterpolationFunctions ) && + ( tessellationIsolines == rhs.tessellationIsolines ) && + ( tessellationPointMode == rhs.tessellationPointMode ) && ( triangleFans == rhs.triangleFans ) && + ( vertexAttributeAccessBeyondStride == rhs.vertexAttributeAccessBeyondStride ); +# endif + } + + bool operator!=( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 constantAlphaColorBlendFactors = {}; + VULKAN_HPP_NAMESPACE::Bool32 events = {}; + VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatReinterpretation = {}; + VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatSwizzle = {}; + VULKAN_HPP_NAMESPACE::Bool32 imageView2DOn3DImage = {}; + VULKAN_HPP_NAMESPACE::Bool32 multisampleArrayImage = {}; + VULKAN_HPP_NAMESPACE::Bool32 mutableComparisonSamplers = {}; + VULKAN_HPP_NAMESPACE::Bool32 pointPolygons = {}; + VULKAN_HPP_NAMESPACE::Bool32 samplerMipLodBias = {}; + VULKAN_HPP_NAMESPACE::Bool32 separateStencilMaskRef = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSampleRateInterpolationFunctions = {}; + VULKAN_HPP_NAMESPACE::Bool32 tessellationIsolines = {}; + VULKAN_HPP_NAMESPACE::Bool32 tessellationPointMode = {}; + VULKAN_HPP_NAMESPACE::Bool32 triangleFans = {}; + VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeAccessBeyondStride = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR ) == + sizeof( VkPhysicalDevicePortabilitySubsetFeaturesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDevicePortabilitySubsetFeaturesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevicePortabilitySubsetFeaturesKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct PhysicalDevicePortabilitySubsetPropertiesKHR + { + using NativeType = VkPhysicalDevicePortabilitySubsetPropertiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetPropertiesKHR( + uint32_t minVertexInputBindingStrideAlignment_ = {} ) VULKAN_HPP_NOEXCEPT + : minVertexInputBindingStrideAlignment( minVertexInputBindingStrideAlignment_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetPropertiesKHR( + PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePortabilitySubsetPropertiesKHR( VkPhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDevicePortabilitySubsetPropertiesKHR( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevicePortabilitySubsetPropertiesKHR & + operator=( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePortabilitySubsetPropertiesKHR & + operator=( VkPhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetPropertiesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetPropertiesKHR & + setMinVertexInputBindingStrideAlignment( uint32_t minVertexInputBindingStrideAlignment_ ) VULKAN_HPP_NOEXCEPT + { + minVertexInputBindingStrideAlignment = minVertexInputBindingStrideAlignment_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDevicePortabilitySubsetPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevicePortabilitySubsetPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minVertexInputBindingStrideAlignment ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePortabilitySubsetPropertiesKHR const & ) const = default; +# else + bool operator==( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( minVertexInputBindingStrideAlignment == rhs.minVertexInputBindingStrideAlignment ); +# endif + } + + bool operator!=( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR; + void * pNext = {}; + uint32_t minVertexInputBindingStrideAlignment = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR ) == + sizeof( VkPhysicalDevicePortabilitySubsetPropertiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDevicePortabilitySubsetPropertiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevicePortabilitySubsetPropertiesKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + struct PhysicalDevicePresentIdFeaturesKHR + { + using NativeType = VkPhysicalDevicePresentIdFeaturesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevicePresentIdFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDevicePresentIdFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 presentId_ = {} ) VULKAN_HPP_NOEXCEPT + : presentId( presentId_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentIdFeaturesKHR( PhysicalDevicePresentIdFeaturesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePresentIdFeaturesKHR( VkPhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePresentIdFeaturesKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevicePresentIdFeaturesKHR & + operator=( PhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePresentIdFeaturesKHR & + operator=( VkPhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentIdFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentIdFeaturesKHR & + setPresentId( VULKAN_HPP_NAMESPACE::Bool32 presentId_ ) VULKAN_HPP_NOEXCEPT + { + presentId = presentId_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDevicePresentIdFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevicePresentIdFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentId ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePresentIdFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePresentIdFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentId == rhs.presentId ); +# endif + } + + bool operator!=( PhysicalDevicePresentIdFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePresentIdFeaturesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 presentId = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR ) == + sizeof( VkPhysicalDevicePresentIdFeaturesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDevicePresentIdFeaturesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevicePresentIdFeaturesKHR; + }; + + struct PhysicalDevicePresentWaitFeaturesKHR + { + using NativeType = VkPhysicalDevicePresentWaitFeaturesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevicePresentWaitFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDevicePresentWaitFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 presentWait_ = {} ) VULKAN_HPP_NOEXCEPT + : presentWait( presentWait_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentWaitFeaturesKHR( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePresentWaitFeaturesKHR( VkPhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePresentWaitFeaturesKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevicePresentWaitFeaturesKHR & + operator=( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePresentWaitFeaturesKHR & + operator=( VkPhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWaitFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWaitFeaturesKHR & + setPresentWait( VULKAN_HPP_NAMESPACE::Bool32 presentWait_ ) VULKAN_HPP_NOEXCEPT + { + presentWait = presentWait_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDevicePresentWaitFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevicePresentWaitFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentWait ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePresentWaitFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentWait == rhs.presentWait ); +# endif + } + + bool operator!=( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePresentWaitFeaturesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 presentWait = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR ) == + sizeof( VkPhysicalDevicePresentWaitFeaturesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDevicePresentWaitFeaturesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevicePresentWaitFeaturesKHR; + }; + + struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT + { + using NativeType = VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyListRestart_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyPatchListRestart_ = {} ) VULKAN_HPP_NOEXCEPT + : primitiveTopologyListRestart( primitiveTopologyListRestart_ ) + , primitiveTopologyPatchListRestart( primitiveTopologyPatchListRestart_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( + PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( + VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT & + operator=( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT & + operator=( VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT & + setPrimitiveTopologyListRestart( VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyListRestart_ ) VULKAN_HPP_NOEXCEPT + { + primitiveTopologyListRestart = primitiveTopologyListRestart_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT & + setPrimitiveTopologyPatchListRestart( VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyPatchListRestart_ ) + VULKAN_HPP_NOEXCEPT + { + primitiveTopologyPatchListRestart = primitiveTopologyPatchListRestart_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, primitiveTopologyListRestart, primitiveTopologyPatchListRestart ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( primitiveTopologyListRestart == rhs.primitiveTopologyListRestart ) && + ( primitiveTopologyPatchListRestart == rhs.primitiveTopologyPatchListRestart ); +# endif + } + + bool operator!=( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyListRestart = {}; + VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyPatchListRestart = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT ) == + sizeof( VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>::value, + "PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; + }; + + struct PhysicalDevicePrivateDataFeatures + { + using NativeType = VkPhysicalDevicePrivateDataFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevicePrivateDataFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDevicePrivateDataFeatures( VULKAN_HPP_NAMESPACE::Bool32 privateData_ = {} ) VULKAN_HPP_NOEXCEPT + : privateData( privateData_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDevicePrivateDataFeatures( PhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePrivateDataFeatures( VkPhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePrivateDataFeatures( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevicePrivateDataFeatures & + operator=( PhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePrivateDataFeatures & operator=( VkPhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeatures & + setPrivateData( VULKAN_HPP_NAMESPACE::Bool32 privateData_ ) VULKAN_HPP_NOEXCEPT + { + privateData = privateData_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDevicePrivateDataFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevicePrivateDataFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, privateData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePrivateDataFeatures const & ) const = default; +#else + bool operator==( PhysicalDevicePrivateDataFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( privateData == rhs.privateData ); +# endif + } + + bool operator!=( PhysicalDevicePrivateDataFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePrivateDataFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 privateData = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures ) == + sizeof( VkPhysicalDevicePrivateDataFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDevicePrivateDataFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevicePrivateDataFeatures; + }; + using PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeatures; + + struct PhysicalDeviceSparseProperties + { + using NativeType = VkPhysicalDeviceSparseProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseProperties( + VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DBlockShape_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DMultisampleBlockShape_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 residencyStandard3DBlockShape_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 residencyAlignedMipSize_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 residencyNonResidentStrict_ = {} ) VULKAN_HPP_NOEXCEPT + : residencyStandard2DBlockShape( residencyStandard2DBlockShape_ ) + , residencyStandard2DMultisampleBlockShape( residencyStandard2DMultisampleBlockShape_ ) + , residencyStandard3DBlockShape( residencyStandard3DBlockShape_ ) + , residencyAlignedMipSize( residencyAlignedMipSize_ ) + , residencyNonResidentStrict( residencyNonResidentStrict_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceSparseProperties( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSparseProperties( VkPhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSparseProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceSparseProperties & + operator=( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSparseProperties & operator=( VkPhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceSparseProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceSparseProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( residencyStandard2DBlockShape, + residencyStandard2DMultisampleBlockShape, + residencyStandard3DBlockShape, + residencyAlignedMipSize, + residencyNonResidentStrict ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSparseProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceSparseProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape ) && + ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape ) && + ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape ) && + ( residencyAlignedMipSize == rhs.residencyAlignedMipSize ) && + ( residencyNonResidentStrict == rhs.residencyNonResidentStrict ); +# endif + } + + bool operator!=( PhysicalDeviceSparseProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DBlockShape = {}; + VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DMultisampleBlockShape = {}; + VULKAN_HPP_NAMESPACE::Bool32 residencyStandard3DBlockShape = {}; + VULKAN_HPP_NAMESPACE::Bool32 residencyAlignedMipSize = {}; + VULKAN_HPP_NAMESPACE::Bool32 residencyNonResidentStrict = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties ) == + sizeof( VkPhysicalDeviceSparseProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceSparseProperties is not nothrow_move_constructible!" ); + + struct PhysicalDeviceProperties + { + using NativeType = VkPhysicalDeviceProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties( + uint32_t apiVersion_ = {}, + uint32_t driverVersion_ = {}, + uint32_t vendorID_ = {}, + uint32_t deviceID_ = {}, + VULKAN_HPP_NAMESPACE::PhysicalDeviceType deviceType_ = VULKAN_HPP_NAMESPACE::PhysicalDeviceType::eOther, + std::array const & deviceName_ = {}, + std::array const & pipelineCacheUUID_ = {}, + VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits limits_ = {}, + VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties sparseProperties_ = {} ) VULKAN_HPP_NOEXCEPT + : apiVersion( apiVersion_ ) + , driverVersion( driverVersion_ ) + , vendorID( vendorID_ ) + , deviceID( deviceID_ ) + , deviceType( deviceType_ ) + , deviceName( deviceName_ ) + , pipelineCacheUUID( pipelineCacheUUID_ ) + , limits( limits_ ) + , sparseProperties( sparseProperties_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceProperties( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProperties( VkPhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceProperties & operator=( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProperties & operator=( VkPhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits const &, + VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( apiVersion, + driverVersion, + vendorID, + deviceID, + deviceType, + deviceName, + pipelineCacheUUID, + limits, + sparseProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( apiVersion == rhs.apiVersion ) && ( driverVersion == rhs.driverVersion ) && + ( vendorID == rhs.vendorID ) && ( deviceID == rhs.deviceID ) && ( deviceType == rhs.deviceType ) && + ( deviceName == rhs.deviceName ) && ( pipelineCacheUUID == rhs.pipelineCacheUUID ) && + ( limits == rhs.limits ) && ( sparseProperties == rhs.sparseProperties ); +# endif + } + + bool operator!=( PhysicalDeviceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t apiVersion = {}; + uint32_t driverVersion = {}; + uint32_t vendorID = {}; + uint32_t deviceID = {}; + VULKAN_HPP_NAMESPACE::PhysicalDeviceType deviceType = VULKAN_HPP_NAMESPACE::PhysicalDeviceType::eOther; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D deviceName = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D pipelineCacheUUID = {}; + VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits limits = {}; + VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties sparseProperties = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties ) == + sizeof( VkPhysicalDeviceProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceProperties is not nothrow_move_constructible!" ); + + struct PhysicalDeviceProperties2 + { + using NativeType = VkPhysicalDeviceProperties2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceProperties2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceProperties2( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties_ = {} ) VULKAN_HPP_NOEXCEPT + : properties( properties_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceProperties2( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProperties2( VkPhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceProperties2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceProperties2 & operator=( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProperties2 & operator=( VkPhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceProperties2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceProperties2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, properties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceProperties2 const & ) const = default; +#else + bool operator==( PhysicalDeviceProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( properties == rhs.properties ); +# endif + } + + bool operator!=( PhysicalDeviceProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProperties2; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 ) == + sizeof( VkPhysicalDeviceProperties2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceProperties2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceProperties2; + }; + using PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2; + + struct PhysicalDeviceProtectedMemoryFeatures + { + using NativeType = VkPhysicalDeviceProtectedMemoryFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceProtectedMemoryFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceProtectedMemoryFeatures( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ = {} ) VULKAN_HPP_NOEXCEPT + : protectedMemory( protectedMemory_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryFeatures( PhysicalDeviceProtectedMemoryFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProtectedMemoryFeatures( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceProtectedMemoryFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceProtectedMemoryFeatures & + operator=( PhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProtectedMemoryFeatures & + operator=( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures & + setProtectedMemory( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ ) VULKAN_HPP_NOEXCEPT + { + protectedMemory = protectedMemory_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceProtectedMemoryFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceProtectedMemoryFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, protectedMemory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceProtectedMemoryFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceProtectedMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( protectedMemory == rhs.protectedMemory ); +# endif + } + + bool operator!=( PhysicalDeviceProtectedMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 protectedMemory = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures ) == + sizeof( VkPhysicalDeviceProtectedMemoryFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceProtectedMemoryFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceProtectedMemoryFeatures; + }; + + struct PhysicalDeviceProtectedMemoryProperties + { + using NativeType = VkPhysicalDeviceProtectedMemoryProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceProtectedMemoryProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceProtectedMemoryProperties( VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault_ = {} ) VULKAN_HPP_NOEXCEPT + : protectedNoFault( protectedNoFault_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryProperties( PhysicalDeviceProtectedMemoryProperties const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProtectedMemoryProperties( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceProtectedMemoryProperties( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceProtectedMemoryProperties & + operator=( PhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProtectedMemoryProperties & + operator=( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceProtectedMemoryProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceProtectedMemoryProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, protectedNoFault ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceProtectedMemoryProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceProtectedMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( protectedNoFault == rhs.protectedNoFault ); +# endif + } + + bool operator!=( PhysicalDeviceProtectedMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryProperties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties ) == + sizeof( VkPhysicalDeviceProtectedMemoryProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceProtectedMemoryProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceProtectedMemoryProperties; + }; + + struct PhysicalDeviceProvokingVertexFeaturesEXT + { + using NativeType = VkPhysicalDeviceProvokingVertexFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceProvokingVertexFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 provokingVertexLast_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackPreservesProvokingVertex_ = {} ) VULKAN_HPP_NOEXCEPT + : provokingVertexLast( provokingVertexLast_ ) + , transformFeedbackPreservesProvokingVertex( transformFeedbackPreservesProvokingVertex_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexFeaturesEXT( + PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProvokingVertexFeaturesEXT( VkPhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceProvokingVertexFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceProvokingVertexFeaturesEXT & + operator=( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProvokingVertexFeaturesEXT & + operator=( VkPhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT & + setProvokingVertexLast( VULKAN_HPP_NAMESPACE::Bool32 provokingVertexLast_ ) VULKAN_HPP_NOEXCEPT + { + provokingVertexLast = provokingVertexLast_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT & setTransformFeedbackPreservesProvokingVertex( + VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackPreservesProvokingVertex_ ) VULKAN_HPP_NOEXCEPT + { + transformFeedbackPreservesProvokingVertex = transformFeedbackPreservesProvokingVertex_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceProvokingVertexFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceProvokingVertexFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, provokingVertexLast, transformFeedbackPreservesProvokingVertex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceProvokingVertexFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( provokingVertexLast == rhs.provokingVertexLast ) && + ( transformFeedbackPreservesProvokingVertex == rhs.transformFeedbackPreservesProvokingVertex ); +# endif + } + + bool operator!=( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProvokingVertexFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 provokingVertexLast = {}; + VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackPreservesProvokingVertex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT ) == + sizeof( VkPhysicalDeviceProvokingVertexFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceProvokingVertexFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceProvokingVertexFeaturesEXT; + }; + + struct PhysicalDeviceProvokingVertexPropertiesEXT + { + using NativeType = VkPhysicalDeviceProvokingVertexPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceProvokingVertexPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexPropertiesEXT( + VULKAN_HPP_NAMESPACE::Bool32 provokingVertexModePerPipeline_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackPreservesTriangleFanProvokingVertex_ = {} ) VULKAN_HPP_NOEXCEPT + : provokingVertexModePerPipeline( provokingVertexModePerPipeline_ ) + , transformFeedbackPreservesTriangleFanProvokingVertex( transformFeedbackPreservesTriangleFanProvokingVertex_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexPropertiesEXT( + PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProvokingVertexPropertiesEXT( VkPhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceProvokingVertexPropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceProvokingVertexPropertiesEXT & + operator=( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProvokingVertexPropertiesEXT & + operator=( VkPhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceProvokingVertexPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceProvokingVertexPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, provokingVertexModePerPipeline, transformFeedbackPreservesTriangleFanProvokingVertex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceProvokingVertexPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( provokingVertexModePerPipeline == rhs.provokingVertexModePerPipeline ) && + ( transformFeedbackPreservesTriangleFanProvokingVertex == + rhs.transformFeedbackPreservesTriangleFanProvokingVertex ); +# endif + } + + bool operator!=( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProvokingVertexPropertiesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 provokingVertexModePerPipeline = {}; + VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackPreservesTriangleFanProvokingVertex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT ) == + sizeof( VkPhysicalDeviceProvokingVertexPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceProvokingVertexPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceProvokingVertexPropertiesEXT; + }; + + struct PhysicalDevicePushDescriptorPropertiesKHR + { + using NativeType = VkPhysicalDevicePushDescriptorPropertiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDevicePushDescriptorPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = {} ) VULKAN_HPP_NOEXCEPT + : maxPushDescriptors( maxPushDescriptors_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDevicePushDescriptorPropertiesKHR( + PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDevicePushDescriptorPropertiesKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDevicePushDescriptorPropertiesKHR & + operator=( PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePushDescriptorPropertiesKHR & + operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDevicePushDescriptorPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDevicePushDescriptorPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxPushDescriptors ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePushDescriptorPropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxPushDescriptors == rhs.maxPushDescriptors ); +# endif + } + + bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePushDescriptorPropertiesKHR; + void * pNext = {}; + uint32_t maxPushDescriptors = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR ) == + sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDevicePushDescriptorPropertiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDevicePushDescriptorPropertiesKHR; + }; + + struct PhysicalDeviceRGBA10X6FormatsFeaturesEXT + { + using NativeType = VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceRgba10X6FormatsFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRGBA10X6FormatsFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 formatRgba10x6WithoutYCbCrSampler_ = {} ) VULKAN_HPP_NOEXCEPT + : formatRgba10x6WithoutYCbCrSampler( formatRgba10x6WithoutYCbCrSampler_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRGBA10X6FormatsFeaturesEXT( + PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRGBA10X6FormatsFeaturesEXT( VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRGBA10X6FormatsFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceRGBA10X6FormatsFeaturesEXT & + operator=( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRGBA10X6FormatsFeaturesEXT & + operator=( VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRGBA10X6FormatsFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRGBA10X6FormatsFeaturesEXT & setFormatRgba10x6WithoutYCbCrSampler( + VULKAN_HPP_NAMESPACE::Bool32 formatRgba10x6WithoutYCbCrSampler_ ) VULKAN_HPP_NOEXCEPT + { + formatRgba10x6WithoutYCbCrSampler = formatRgba10x6WithoutYCbCrSampler_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, formatRgba10x6WithoutYCbCrSampler ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( formatRgba10x6WithoutYCbCrSampler == rhs.formatRgba10x6WithoutYCbCrSampler ); +# endif + } + + bool operator!=( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRgba10X6FormatsFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 formatRgba10x6WithoutYCbCrSampler = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT ) == + sizeof( VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceRGBA10X6FormatsFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceRGBA10X6FormatsFeaturesEXT; + }; + + struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM + { + using NativeType = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM( + VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderColorAttachmentAccess_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderDepthAttachmentAccess_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderStencilAttachmentAccess_ = {} ) VULKAN_HPP_NOEXCEPT + : rasterizationOrderColorAttachmentAccess( rasterizationOrderColorAttachmentAccess_ ) + , rasterizationOrderDepthAttachmentAccess( rasterizationOrderDepthAttachmentAccess_ ) + , rasterizationOrderStencilAttachmentAccess( rasterizationOrderStencilAttachmentAccess_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM( + PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM( + VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM & operator =( + PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM & + operator=( VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( + &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM & + setRasterizationOrderColorAttachmentAccess( + VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderColorAttachmentAccess_ ) VULKAN_HPP_NOEXCEPT + { + rasterizationOrderColorAttachmentAccess = rasterizationOrderColorAttachmentAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM & + setRasterizationOrderDepthAttachmentAccess( + VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderDepthAttachmentAccess_ ) VULKAN_HPP_NOEXCEPT + { + rasterizationOrderDepthAttachmentAccess = rasterizationOrderDepthAttachmentAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM & + setRasterizationOrderStencilAttachmentAccess( + VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderStencilAttachmentAccess_ ) VULKAN_HPP_NOEXCEPT + { + rasterizationOrderStencilAttachmentAccess = rasterizationOrderStencilAttachmentAccess_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + rasterizationOrderColorAttachmentAccess, + rasterizationOrderDepthAttachmentAccess, + rasterizationOrderStencilAttachmentAccess ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( rasterizationOrderColorAttachmentAccess == rhs.rasterizationOrderColorAttachmentAccess ) && + ( rasterizationOrderDepthAttachmentAccess == rhs.rasterizationOrderDepthAttachmentAccess ) && + ( rasterizationOrderStencilAttachmentAccess == rhs.rasterizationOrderStencilAttachmentAccess ); +# endif + } + + bool operator!=( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = + StructureType::ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderColorAttachmentAccess = {}; + VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderDepthAttachmentAccess = {}; + VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderStencilAttachmentAccess = {}; + }; + VULKAN_HPP_STATIC_ASSERT( + sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM ) == + sizeof( VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM>::value, + "PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM; + }; + + struct PhysicalDeviceRayQueryFeaturesKHR + { + using NativeType = VkPhysicalDeviceRayQueryFeaturesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceRayQueryFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceRayQueryFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 rayQuery_ = {} ) VULKAN_HPP_NOEXCEPT + : rayQuery( rayQuery_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceRayQueryFeaturesKHR( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayQueryFeaturesKHR( VkPhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayQueryFeaturesKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceRayQueryFeaturesKHR & + operator=( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayQueryFeaturesKHR & operator=( VkPhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayQueryFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayQueryFeaturesKHR & + setRayQuery( VULKAN_HPP_NAMESPACE::Bool32 rayQuery_ ) VULKAN_HPP_NOEXCEPT + { + rayQuery = rayQuery_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceRayQueryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceRayQueryFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rayQuery ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayQueryFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayQuery == rhs.rayQuery ); +# endif + } + + bool operator!=( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayQueryFeaturesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 rayQuery = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR ) == + sizeof( VkPhysicalDeviceRayQueryFeaturesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayQueryFeaturesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceRayQueryFeaturesKHR; + }; + + struct PhysicalDeviceRayTracingMotionBlurFeaturesNV + { + using NativeType = VkPhysicalDeviceRayTracingMotionBlurFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceRayTracingMotionBlurFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingMotionBlurFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlur_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlurPipelineTraceRaysIndirect_ = {} ) VULKAN_HPP_NOEXCEPT + : rayTracingMotionBlur( rayTracingMotionBlur_ ) + , rayTracingMotionBlurPipelineTraceRaysIndirect( rayTracingMotionBlurPipelineTraceRaysIndirect_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingMotionBlurFeaturesNV( + PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingMotionBlurFeaturesNV( VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingMotionBlurFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingMotionBlurFeaturesNV & + operator=( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingMotionBlurFeaturesNV & + operator=( VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV & + setRayTracingMotionBlur( VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlur_ ) VULKAN_HPP_NOEXCEPT + { + rayTracingMotionBlur = rayTracingMotionBlur_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV & + setRayTracingMotionBlurPipelineTraceRaysIndirect( + VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlurPipelineTraceRaysIndirect_ ) VULKAN_HPP_NOEXCEPT + { + rayTracingMotionBlurPipelineTraceRaysIndirect = rayTracingMotionBlurPipelineTraceRaysIndirect_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rayTracingMotionBlur, rayTracingMotionBlurPipelineTraceRaysIndirect ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingMotionBlur == rhs.rayTracingMotionBlur ) && + ( rayTracingMotionBlurPipelineTraceRaysIndirect == rhs.rayTracingMotionBlurPipelineTraceRaysIndirect ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayTracingMotionBlurFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlur = {}; + VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlurPipelineTraceRaysIndirect = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV ) == + sizeof( VkPhysicalDeviceRayTracingMotionBlurFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingMotionBlurFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingMotionBlurFeaturesNV; + }; + + struct PhysicalDeviceRayTracingPipelineFeaturesKHR + { + using NativeType = VkPhysicalDeviceRayTracingPipelineFeaturesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelineFeaturesKHR( + VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipeline_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 rayTraversalPrimitiveCulling_ = {} ) VULKAN_HPP_NOEXCEPT + : rayTracingPipeline( rayTracingPipeline_ ) + , rayTracingPipelineShaderGroupHandleCaptureReplay( rayTracingPipelineShaderGroupHandleCaptureReplay_ ) + , rayTracingPipelineShaderGroupHandleCaptureReplayMixed( rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ ) + , rayTracingPipelineTraceRaysIndirect( rayTracingPipelineTraceRaysIndirect_ ) + , rayTraversalPrimitiveCulling( rayTraversalPrimitiveCulling_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelineFeaturesKHR( + PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingPipelineFeaturesKHR( VkPhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingPipelineFeaturesKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingPipelineFeaturesKHR & + operator=( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingPipelineFeaturesKHR & + operator=( VkPhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & + setRayTracingPipeline( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipeline_ ) VULKAN_HPP_NOEXCEPT + { + rayTracingPipeline = rayTracingPipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & + setRayTracingPipelineShaderGroupHandleCaptureReplay( + VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay_ ) VULKAN_HPP_NOEXCEPT + { + rayTracingPipelineShaderGroupHandleCaptureReplay = rayTracingPipelineShaderGroupHandleCaptureReplay_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & + setRayTracingPipelineShaderGroupHandleCaptureReplayMixed( + VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ ) VULKAN_HPP_NOEXCEPT + { + rayTracingPipelineShaderGroupHandleCaptureReplayMixed = rayTracingPipelineShaderGroupHandleCaptureReplayMixed_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & setRayTracingPipelineTraceRaysIndirect( + VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect_ ) VULKAN_HPP_NOEXCEPT + { + rayTracingPipelineTraceRaysIndirect = rayTracingPipelineTraceRaysIndirect_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & + setRayTraversalPrimitiveCulling( VULKAN_HPP_NAMESPACE::Bool32 rayTraversalPrimitiveCulling_ ) VULKAN_HPP_NOEXCEPT + { + rayTraversalPrimitiveCulling = rayTraversalPrimitiveCulling_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + rayTracingPipeline, + rayTracingPipelineShaderGroupHandleCaptureReplay, + rayTracingPipelineShaderGroupHandleCaptureReplayMixed, + rayTracingPipelineTraceRaysIndirect, + rayTraversalPrimitiveCulling ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingPipelineFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingPipeline == rhs.rayTracingPipeline ) && + ( rayTracingPipelineShaderGroupHandleCaptureReplay == + rhs.rayTracingPipelineShaderGroupHandleCaptureReplay ) && + ( rayTracingPipelineShaderGroupHandleCaptureReplayMixed == + rhs.rayTracingPipelineShaderGroupHandleCaptureReplayMixed ) && + ( rayTracingPipelineTraceRaysIndirect == rhs.rayTracingPipelineTraceRaysIndirect ) && + ( rayTraversalPrimitiveCulling == rhs.rayTraversalPrimitiveCulling ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipeline = {}; + VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay = {}; + VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed = {}; + VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect = {}; + VULKAN_HPP_NAMESPACE::Bool32 rayTraversalPrimitiveCulling = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR ) == + sizeof( VkPhysicalDeviceRayTracingPipelineFeaturesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingPipelineFeaturesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingPipelineFeaturesKHR; + }; + + struct PhysicalDeviceRayTracingPipelinePropertiesKHR + { + using NativeType = VkPhysicalDeviceRayTracingPipelinePropertiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceRayTracingPipelinePropertiesKHR( uint32_t shaderGroupHandleSize_ = {}, + uint32_t maxRayRecursionDepth_ = {}, + uint32_t maxShaderGroupStride_ = {}, + uint32_t shaderGroupBaseAlignment_ = {}, + uint32_t shaderGroupHandleCaptureReplaySize_ = {}, + uint32_t maxRayDispatchInvocationCount_ = {}, + uint32_t shaderGroupHandleAlignment_ = {}, + uint32_t maxRayHitAttributeSize_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderGroupHandleSize( shaderGroupHandleSize_ ) + , maxRayRecursionDepth( maxRayRecursionDepth_ ) + , maxShaderGroupStride( maxShaderGroupStride_ ) + , shaderGroupBaseAlignment( shaderGroupBaseAlignment_ ) + , shaderGroupHandleCaptureReplaySize( shaderGroupHandleCaptureReplaySize_ ) + , maxRayDispatchInvocationCount( maxRayDispatchInvocationCount_ ) + , shaderGroupHandleAlignment( shaderGroupHandleAlignment_ ) + , maxRayHitAttributeSize( maxRayHitAttributeSize_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelinePropertiesKHR( + PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingPipelinePropertiesKHR( VkPhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingPipelinePropertiesKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingPipelinePropertiesKHR & + operator=( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingPipelinePropertiesKHR & + operator=( VkPhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + shaderGroupHandleSize, + maxRayRecursionDepth, + maxShaderGroupStride, + shaderGroupBaseAlignment, + shaderGroupHandleCaptureReplaySize, + maxRayDispatchInvocationCount, + shaderGroupHandleAlignment, + maxRayHitAttributeSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingPipelinePropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderGroupHandleSize == rhs.shaderGroupHandleSize ) && + ( maxRayRecursionDepth == rhs.maxRayRecursionDepth ) && + ( maxShaderGroupStride == rhs.maxShaderGroupStride ) && + ( shaderGroupBaseAlignment == rhs.shaderGroupBaseAlignment ) && + ( shaderGroupHandleCaptureReplaySize == rhs.shaderGroupHandleCaptureReplaySize ) && + ( maxRayDispatchInvocationCount == rhs.maxRayDispatchInvocationCount ) && + ( shaderGroupHandleAlignment == rhs.shaderGroupHandleAlignment ) && + ( maxRayHitAttributeSize == rhs.maxRayHitAttributeSize ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR; + void * pNext = {}; + uint32_t shaderGroupHandleSize = {}; + uint32_t maxRayRecursionDepth = {}; + uint32_t maxShaderGroupStride = {}; + uint32_t shaderGroupBaseAlignment = {}; + uint32_t shaderGroupHandleCaptureReplaySize = {}; + uint32_t maxRayDispatchInvocationCount = {}; + uint32_t shaderGroupHandleAlignment = {}; + uint32_t maxRayHitAttributeSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR ) == + sizeof( VkPhysicalDeviceRayTracingPipelinePropertiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingPipelinePropertiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingPipelinePropertiesKHR; + }; + + struct PhysicalDeviceRayTracingPropertiesNV + { + using NativeType = VkPhysicalDeviceRayTracingPropertiesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceRayTracingPropertiesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceRayTracingPropertiesNV( uint32_t shaderGroupHandleSize_ = {}, + uint32_t maxRecursionDepth_ = {}, + uint32_t maxShaderGroupStride_ = {}, + uint32_t shaderGroupBaseAlignment_ = {}, + uint64_t maxGeometryCount_ = {}, + uint64_t maxInstanceCount_ = {}, + uint64_t maxTriangleCount_ = {}, + uint32_t maxDescriptorSetAccelerationStructures_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderGroupHandleSize( shaderGroupHandleSize_ ) + , maxRecursionDepth( maxRecursionDepth_ ) + , maxShaderGroupStride( maxShaderGroupStride_ ) + , shaderGroupBaseAlignment( shaderGroupBaseAlignment_ ) + , maxGeometryCount( maxGeometryCount_ ) + , maxInstanceCount( maxInstanceCount_ ) + , maxTriangleCount( maxTriangleCount_ ) + , maxDescriptorSetAccelerationStructures( maxDescriptorSetAccelerationStructures_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPropertiesNV( PhysicalDeviceRayTracingPropertiesNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingPropertiesNV( VkPhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingPropertiesNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingPropertiesNV & + operator=( PhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingPropertiesNV & + operator=( VkPhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceRayTracingPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceRayTracingPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + shaderGroupHandleSize, + maxRecursionDepth, + maxShaderGroupStride, + shaderGroupBaseAlignment, + maxGeometryCount, + maxInstanceCount, + maxTriangleCount, + maxDescriptorSetAccelerationStructures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderGroupHandleSize == rhs.shaderGroupHandleSize ) && ( maxRecursionDepth == rhs.maxRecursionDepth ) && + ( maxShaderGroupStride == rhs.maxShaderGroupStride ) && + ( shaderGroupBaseAlignment == rhs.shaderGroupBaseAlignment ) && + ( maxGeometryCount == rhs.maxGeometryCount ) && ( maxInstanceCount == rhs.maxInstanceCount ) && + ( maxTriangleCount == rhs.maxTriangleCount ) && + ( maxDescriptorSetAccelerationStructures == rhs.maxDescriptorSetAccelerationStructures ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayTracingPropertiesNV; + void * pNext = {}; + uint32_t shaderGroupHandleSize = {}; + uint32_t maxRecursionDepth = {}; + uint32_t maxShaderGroupStride = {}; + uint32_t shaderGroupBaseAlignment = {}; + uint64_t maxGeometryCount = {}; + uint64_t maxInstanceCount = {}; + uint64_t maxTriangleCount = {}; + uint32_t maxDescriptorSetAccelerationStructures = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV ) == + sizeof( VkPhysicalDeviceRayTracingPropertiesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingPropertiesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingPropertiesNV; + }; + + struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV + { + using NativeType = VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRepresentativeFragmentTestFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTest_ = {} ) VULKAN_HPP_NOEXCEPT + : representativeFragmentTest( representativeFragmentTest_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRepresentativeFragmentTestFeaturesNV( + PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRepresentativeFragmentTestFeaturesNV( + VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRepresentativeFragmentTestFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceRepresentativeFragmentTestFeaturesNV & + operator=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRepresentativeFragmentTestFeaturesNV & + operator=( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRepresentativeFragmentTestFeaturesNV & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRepresentativeFragmentTestFeaturesNV & + setRepresentativeFragmentTest( VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTest_ ) VULKAN_HPP_NOEXCEPT + { + representativeFragmentTest = representativeFragmentTest_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, representativeFragmentTest ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( representativeFragmentTest == rhs.representativeFragmentTest ); +# endif + } + + bool operator!=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTest = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV ) == + sizeof( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceRepresentativeFragmentTestFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceRepresentativeFragmentTestFeaturesNV; + }; + + struct PhysicalDeviceRobustness2FeaturesEXT + { + using NativeType = VkPhysicalDeviceRobustness2FeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceRobustness2FeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceRobustness2FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 nullDescriptor_ = {} ) VULKAN_HPP_NOEXCEPT + : robustBufferAccess2( robustBufferAccess2_ ) + , robustImageAccess2( robustImageAccess2_ ) + , nullDescriptor( nullDescriptor_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2FeaturesEXT( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRobustness2FeaturesEXT( VkPhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRobustness2FeaturesEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceRobustness2FeaturesEXT & + operator=( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRobustness2FeaturesEXT & + operator=( VkPhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & + setRobustBufferAccess2( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2_ ) VULKAN_HPP_NOEXCEPT + { + robustBufferAccess2 = robustBufferAccess2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & + setRobustImageAccess2( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2_ ) VULKAN_HPP_NOEXCEPT + { + robustImageAccess2 = robustImageAccess2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & + setNullDescriptor( VULKAN_HPP_NAMESPACE::Bool32 nullDescriptor_ ) VULKAN_HPP_NOEXCEPT + { + nullDescriptor = nullDescriptor_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceRobustness2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceRobustness2FeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, robustBufferAccess2, robustImageAccess2, nullDescriptor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRobustness2FeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( robustBufferAccess2 == rhs.robustBufferAccess2 ) && + ( robustImageAccess2 == rhs.robustImageAccess2 ) && ( nullDescriptor == rhs.nullDescriptor ); +# endif + } + + bool operator!=( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRobustness2FeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2 = {}; + VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2 = {}; + VULKAN_HPP_NAMESPACE::Bool32 nullDescriptor = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT ) == + sizeof( VkPhysicalDeviceRobustness2FeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceRobustness2FeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceRobustness2FeaturesEXT; + }; + + struct PhysicalDeviceRobustness2PropertiesEXT + { + using NativeType = VkPhysicalDeviceRobustness2PropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceRobustness2PropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2PropertiesEXT( + VULKAN_HPP_NAMESPACE::DeviceSize robustStorageBufferAccessSizeAlignment_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize robustUniformBufferAccessSizeAlignment_ = {} ) VULKAN_HPP_NOEXCEPT + : robustStorageBufferAccessSizeAlignment( robustStorageBufferAccessSizeAlignment_ ) + , robustUniformBufferAccessSizeAlignment( robustUniformBufferAccessSizeAlignment_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2PropertiesEXT( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRobustness2PropertiesEXT( VkPhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRobustness2PropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceRobustness2PropertiesEXT & + operator=( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRobustness2PropertiesEXT & + operator=( VkPhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceRobustness2PropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceRobustness2PropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, robustStorageBufferAccessSizeAlignment, robustUniformBufferAccessSizeAlignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRobustness2PropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( robustStorageBufferAccessSizeAlignment == rhs.robustStorageBufferAccessSizeAlignment ) && + ( robustUniformBufferAccessSizeAlignment == rhs.robustUniformBufferAccessSizeAlignment ); +# endif + } + + bool operator!=( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRobustness2PropertiesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceSize robustStorageBufferAccessSizeAlignment = {}; + VULKAN_HPP_NAMESPACE::DeviceSize robustUniformBufferAccessSizeAlignment = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT ) == + sizeof( VkPhysicalDeviceRobustness2PropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceRobustness2PropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceRobustness2PropertiesEXT; + }; + + struct PhysicalDeviceSampleLocationsPropertiesEXT + { + using NativeType = VkPhysicalDeviceSampleLocationsPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT( + VULKAN_HPP_NAMESPACE::SampleCountFlags sampleLocationSampleCounts_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize_ = {}, + std::array const & sampleLocationCoordinateRange_ = {}, + uint32_t sampleLocationSubPixelBits_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 variableSampleLocations_ = {} ) VULKAN_HPP_NOEXCEPT + : sampleLocationSampleCounts( sampleLocationSampleCounts_ ) + , maxSampleLocationGridSize( maxSampleLocationGridSize_ ) + , sampleLocationCoordinateRange( sampleLocationCoordinateRange_ ) + , sampleLocationSubPixelBits( sampleLocationSubPixelBits_ ) + , variableSampleLocations( variableSampleLocations_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT( + PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSampleLocationsPropertiesEXT( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSampleLocationsPropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceSampleLocationsPropertiesEXT & + operator=( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSampleLocationsPropertiesEXT & + operator=( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceSampleLocationsPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceSampleLocationsPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::Bool32 const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + sampleLocationSampleCounts, + maxSampleLocationGridSize, + sampleLocationCoordinateRange, + sampleLocationSubPixelBits, + variableSampleLocations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSampleLocationsPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( sampleLocationSampleCounts == rhs.sampleLocationSampleCounts ) && + ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize ) && + ( sampleLocationCoordinateRange == rhs.sampleLocationCoordinateRange ) && + ( sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits ) && + ( variableSampleLocations == rhs.variableSampleLocations ); +# endif + } + + bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlags sampleLocationSampleCounts = {}; + VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D sampleLocationCoordinateRange = {}; + uint32_t sampleLocationSubPixelBits = {}; + VULKAN_HPP_NAMESPACE::Bool32 variableSampleLocations = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT ) == + sizeof( VkPhysicalDeviceSampleLocationsPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceSampleLocationsPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceSampleLocationsPropertiesEXT; + }; + + struct PhysicalDeviceSamplerFilterMinmaxProperties + { + using NativeType = VkPhysicalDeviceSamplerFilterMinmaxProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerFilterMinmaxProperties( + VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping_ = {} ) VULKAN_HPP_NOEXCEPT + : filterMinmaxSingleComponentFormats( filterMinmaxSingleComponentFormats_ ) + , filterMinmaxImageComponentMapping( filterMinmaxImageComponentMapping_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerFilterMinmaxProperties( + PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSamplerFilterMinmaxProperties( VkPhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSamplerFilterMinmaxProperties( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceSamplerFilterMinmaxProperties & + operator=( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSamplerFilterMinmaxProperties & + operator=( VkPhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceSamplerFilterMinmaxProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceSamplerFilterMinmaxProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, filterMinmaxSingleComponentFormats, filterMinmaxImageComponentMapping ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSamplerFilterMinmaxProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats ) && + ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping ); +# endif + } + + bool operator!=( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats = {}; + VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties ) == + sizeof( VkPhysicalDeviceSamplerFilterMinmaxProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceSamplerFilterMinmaxProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceSamplerFilterMinmaxProperties; + }; + using PhysicalDeviceSamplerFilterMinmaxPropertiesEXT = PhysicalDeviceSamplerFilterMinmaxProperties; + + struct PhysicalDeviceSamplerYcbcrConversionFeatures + { + using NativeType = VkPhysicalDeviceSamplerYcbcrConversionFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerYcbcrConversionFeatures( + VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ = {} ) VULKAN_HPP_NOEXCEPT + : samplerYcbcrConversion( samplerYcbcrConversion_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerYcbcrConversionFeatures( + PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSamplerYcbcrConversionFeatures( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSamplerYcbcrConversionFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceSamplerYcbcrConversionFeatures & + operator=( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSamplerYcbcrConversionFeatures & + operator=( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures & + setSamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ ) VULKAN_HPP_NOEXCEPT + { + samplerYcbcrConversion = samplerYcbcrConversion_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceSamplerYcbcrConversionFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceSamplerYcbcrConversionFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, samplerYcbcrConversion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSamplerYcbcrConversionFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( samplerYcbcrConversion == rhs.samplerYcbcrConversion ); +# endif + } + + bool operator!=( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures ) == + sizeof( VkPhysicalDeviceSamplerYcbcrConversionFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceSamplerYcbcrConversionFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceSamplerYcbcrConversionFeatures; + }; + using PhysicalDeviceSamplerYcbcrConversionFeaturesKHR = PhysicalDeviceSamplerYcbcrConversionFeatures; + + struct PhysicalDeviceScalarBlockLayoutFeatures + { + using NativeType = VkPhysicalDeviceScalarBlockLayoutFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceScalarBlockLayoutFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceScalarBlockLayoutFeatures( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ = {} ) + VULKAN_HPP_NOEXCEPT : scalarBlockLayout( scalarBlockLayout_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceScalarBlockLayoutFeatures( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceScalarBlockLayoutFeatures( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceScalarBlockLayoutFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceScalarBlockLayoutFeatures & + operator=( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceScalarBlockLayoutFeatures & + operator=( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures & + setScalarBlockLayout( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT + { + scalarBlockLayout = scalarBlockLayout_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceScalarBlockLayoutFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceScalarBlockLayoutFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, scalarBlockLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceScalarBlockLayoutFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( scalarBlockLayout == rhs.scalarBlockLayout ); +# endif + } + + bool operator!=( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceScalarBlockLayoutFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures ) == + sizeof( VkPhysicalDeviceScalarBlockLayoutFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceScalarBlockLayoutFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceScalarBlockLayoutFeatures; + }; + using PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures; + + struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures + { + using NativeType = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSeparateDepthStencilLayoutsFeatures( + VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ = {} ) VULKAN_HPP_NOEXCEPT + : separateDepthStencilLayouts( separateDepthStencilLayouts_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSeparateDepthStencilLayoutsFeatures( + PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSeparateDepthStencilLayoutsFeatures( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSeparateDepthStencilLayoutsFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceSeparateDepthStencilLayoutsFeatures & + operator=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSeparateDepthStencilLayoutsFeatures & + operator=( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures & + setSeparateDepthStencilLayouts( VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ ) VULKAN_HPP_NOEXCEPT + { + separateDepthStencilLayouts = separateDepthStencilLayouts_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, separateDepthStencilLayouts ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( separateDepthStencilLayouts == rhs.separateDepthStencilLayouts ); +# endif + } + + bool operator!=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures ) == + sizeof( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceSeparateDepthStencilLayoutsFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceSeparateDepthStencilLayoutsFeatures; + }; + using PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = PhysicalDeviceSeparateDepthStencilLayoutsFeatures; + + struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT + { + using NativeType = VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloat2FeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16Atomics_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicAdd_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicMinMax_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicMinMax_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicMinMax_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16Atomics_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicAdd_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicMinMax_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicMinMax_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicMinMax_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicMinMax_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicMinMax_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderBufferFloat16Atomics( shaderBufferFloat16Atomics_ ) + , shaderBufferFloat16AtomicAdd( shaderBufferFloat16AtomicAdd_ ) + , shaderBufferFloat16AtomicMinMax( shaderBufferFloat16AtomicMinMax_ ) + , shaderBufferFloat32AtomicMinMax( shaderBufferFloat32AtomicMinMax_ ) + , shaderBufferFloat64AtomicMinMax( shaderBufferFloat64AtomicMinMax_ ) + , shaderSharedFloat16Atomics( shaderSharedFloat16Atomics_ ) + , shaderSharedFloat16AtomicAdd( shaderSharedFloat16AtomicAdd_ ) + , shaderSharedFloat16AtomicMinMax( shaderSharedFloat16AtomicMinMax_ ) + , shaderSharedFloat32AtomicMinMax( shaderSharedFloat32AtomicMinMax_ ) + , shaderSharedFloat64AtomicMinMax( shaderSharedFloat64AtomicMinMax_ ) + , shaderImageFloat32AtomicMinMax( shaderImageFloat32AtomicMinMax_ ) + , sparseImageFloat32AtomicMinMax( sparseImageFloat32AtomicMinMax_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloat2FeaturesEXT( + PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderAtomicFloat2FeaturesEXT( VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderAtomicFloat2FeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderAtomicFloat2FeaturesEXT & + operator=( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderAtomicFloat2FeaturesEXT & + operator=( VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & + setShaderBufferFloat16Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16Atomics_ ) VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat16Atomics = shaderBufferFloat16Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & + setShaderBufferFloat16AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicAdd_ ) VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat16AtomicAdd = shaderBufferFloat16AtomicAdd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderBufferFloat16AtomicMinMax( + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat16AtomicMinMax = shaderBufferFloat16AtomicMinMax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderBufferFloat32AtomicMinMax( + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat32AtomicMinMax = shaderBufferFloat32AtomicMinMax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderBufferFloat64AtomicMinMax( + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat64AtomicMinMax = shaderBufferFloat64AtomicMinMax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & + setShaderSharedFloat16Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16Atomics_ ) VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat16Atomics = shaderSharedFloat16Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & + setShaderSharedFloat16AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicAdd_ ) VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat16AtomicAdd = shaderSharedFloat16AtomicAdd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderSharedFloat16AtomicMinMax( + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat16AtomicMinMax = shaderSharedFloat16AtomicMinMax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderSharedFloat32AtomicMinMax( + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat32AtomicMinMax = shaderSharedFloat32AtomicMinMax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderSharedFloat64AtomicMinMax( + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat64AtomicMinMax = shaderSharedFloat64AtomicMinMax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderImageFloat32AtomicMinMax( + VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT + { + shaderImageFloat32AtomicMinMax = shaderImageFloat32AtomicMinMax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setSparseImageFloat32AtomicMinMax( + VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT + { + sparseImageFloat32AtomicMinMax = sparseImageFloat32AtomicMinMax_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + shaderBufferFloat16Atomics, + shaderBufferFloat16AtomicAdd, + shaderBufferFloat16AtomicMinMax, + shaderBufferFloat32AtomicMinMax, + shaderBufferFloat64AtomicMinMax, + shaderSharedFloat16Atomics, + shaderSharedFloat16AtomicAdd, + shaderSharedFloat16AtomicMinMax, + shaderSharedFloat32AtomicMinMax, + shaderSharedFloat64AtomicMinMax, + shaderImageFloat32AtomicMinMax, + sparseImageFloat32AtomicMinMax ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderBufferFloat16Atomics == rhs.shaderBufferFloat16Atomics ) && + ( shaderBufferFloat16AtomicAdd == rhs.shaderBufferFloat16AtomicAdd ) && + ( shaderBufferFloat16AtomicMinMax == rhs.shaderBufferFloat16AtomicMinMax ) && + ( shaderBufferFloat32AtomicMinMax == rhs.shaderBufferFloat32AtomicMinMax ) && + ( shaderBufferFloat64AtomicMinMax == rhs.shaderBufferFloat64AtomicMinMax ) && + ( shaderSharedFloat16Atomics == rhs.shaderSharedFloat16Atomics ) && + ( shaderSharedFloat16AtomicAdd == rhs.shaderSharedFloat16AtomicAdd ) && + ( shaderSharedFloat16AtomicMinMax == rhs.shaderSharedFloat16AtomicMinMax ) && + ( shaderSharedFloat32AtomicMinMax == rhs.shaderSharedFloat32AtomicMinMax ) && + ( shaderSharedFloat64AtomicMinMax == rhs.shaderSharedFloat64AtomicMinMax ) && + ( shaderImageFloat32AtomicMinMax == rhs.shaderImageFloat32AtomicMinMax ) && + ( sparseImageFloat32AtomicMinMax == rhs.sparseImageFloat32AtomicMinMax ); +# endif + } + + bool operator!=( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16Atomics = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicAdd = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicMinMax = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicMinMax = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicMinMax = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16Atomics = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicAdd = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicMinMax = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicMinMax = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicMinMax = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicMinMax = {}; + VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicMinMax = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT ) == + sizeof( VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderAtomicFloat2FeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderAtomicFloat2FeaturesEXT; + }; + + struct PhysicalDeviceShaderAtomicFloatFeaturesEXT + { + using NativeType = VkPhysicalDeviceShaderAtomicFloatFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloatFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64Atomics_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicAdd_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32Atomics_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicAdd_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64Atomics_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicAdd_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32Atomics_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicAdd_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32Atomics_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicAdd_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderBufferFloat32Atomics( shaderBufferFloat32Atomics_ ) + , shaderBufferFloat32AtomicAdd( shaderBufferFloat32AtomicAdd_ ) + , shaderBufferFloat64Atomics( shaderBufferFloat64Atomics_ ) + , shaderBufferFloat64AtomicAdd( shaderBufferFloat64AtomicAdd_ ) + , shaderSharedFloat32Atomics( shaderSharedFloat32Atomics_ ) + , shaderSharedFloat32AtomicAdd( shaderSharedFloat32AtomicAdd_ ) + , shaderSharedFloat64Atomics( shaderSharedFloat64Atomics_ ) + , shaderSharedFloat64AtomicAdd( shaderSharedFloat64AtomicAdd_ ) + , shaderImageFloat32Atomics( shaderImageFloat32Atomics_ ) + , shaderImageFloat32AtomicAdd( shaderImageFloat32AtomicAdd_ ) + , sparseImageFloat32Atomics( sparseImageFloat32Atomics_ ) + , sparseImageFloat32AtomicAdd( sparseImageFloat32AtomicAdd_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloatFeaturesEXT( + PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderAtomicFloatFeaturesEXT( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderAtomicFloatFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderAtomicFloatFeaturesEXT & + operator=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderAtomicFloatFeaturesEXT & + operator=( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & + setShaderBufferFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat32Atomics = shaderBufferFloat32Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & + setShaderBufferFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat32AtomicAdd = shaderBufferFloat32AtomicAdd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & + setShaderBufferFloat64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64Atomics_ ) VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat64Atomics = shaderBufferFloat64Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & + setShaderBufferFloat64AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicAdd_ ) VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat64AtomicAdd = shaderBufferFloat64AtomicAdd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & + setShaderSharedFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat32Atomics = shaderSharedFloat32Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & + setShaderSharedFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat32AtomicAdd = shaderSharedFloat32AtomicAdd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & + setShaderSharedFloat64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64Atomics_ ) VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat64Atomics = shaderSharedFloat64Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & + setShaderSharedFloat64AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicAdd_ ) VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat64AtomicAdd = shaderSharedFloat64AtomicAdd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & + setShaderImageFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT + { + shaderImageFloat32Atomics = shaderImageFloat32Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & + setShaderImageFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT + { + shaderImageFloat32AtomicAdd = shaderImageFloat32AtomicAdd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & + setSparseImageFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT + { + sparseImageFloat32Atomics = sparseImageFloat32Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & + setSparseImageFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT + { + sparseImageFloat32AtomicAdd = sparseImageFloat32AtomicAdd_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + shaderBufferFloat32Atomics, + shaderBufferFloat32AtomicAdd, + shaderBufferFloat64Atomics, + shaderBufferFloat64AtomicAdd, + shaderSharedFloat32Atomics, + shaderSharedFloat32AtomicAdd, + shaderSharedFloat64Atomics, + shaderSharedFloat64AtomicAdd, + shaderImageFloat32Atomics, + shaderImageFloat32AtomicAdd, + sparseImageFloat32Atomics, + sparseImageFloat32AtomicAdd ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderBufferFloat32Atomics == rhs.shaderBufferFloat32Atomics ) && + ( shaderBufferFloat32AtomicAdd == rhs.shaderBufferFloat32AtomicAdd ) && + ( shaderBufferFloat64Atomics == rhs.shaderBufferFloat64Atomics ) && + ( shaderBufferFloat64AtomicAdd == rhs.shaderBufferFloat64AtomicAdd ) && + ( shaderSharedFloat32Atomics == rhs.shaderSharedFloat32Atomics ) && + ( shaderSharedFloat32AtomicAdd == rhs.shaderSharedFloat32AtomicAdd ) && + ( shaderSharedFloat64Atomics == rhs.shaderSharedFloat64Atomics ) && + ( shaderSharedFloat64AtomicAdd == rhs.shaderSharedFloat64AtomicAdd ) && + ( shaderImageFloat32Atomics == rhs.shaderImageFloat32Atomics ) && + ( shaderImageFloat32AtomicAdd == rhs.shaderImageFloat32AtomicAdd ) && + ( sparseImageFloat32Atomics == rhs.sparseImageFloat32Atomics ) && + ( sparseImageFloat32AtomicAdd == rhs.sparseImageFloat32AtomicAdd ); +# endif + } + + bool operator!=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64Atomics = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicAdd = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32Atomics = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicAdd = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64Atomics = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicAdd = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32Atomics = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicAdd = {}; + VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32Atomics = {}; + VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicAdd = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT ) == + sizeof( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderAtomicFloatFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderAtomicFloatFeaturesEXT; + }; + + struct PhysicalDeviceShaderAtomicInt64Features + { + using NativeType = VkPhysicalDeviceShaderAtomicInt64Features; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderAtomicInt64Features; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicInt64Features( + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderBufferInt64Atomics( shaderBufferInt64Atomics_ ) + , shaderSharedInt64Atomics( shaderSharedInt64Atomics_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicInt64Features( PhysicalDeviceShaderAtomicInt64Features const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderAtomicInt64Features( VkPhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderAtomicInt64Features( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderAtomicInt64Features & + operator=( PhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderAtomicInt64Features & + operator=( VkPhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features & + setShaderBufferInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ ) VULKAN_HPP_NOEXCEPT + { + shaderBufferInt64Atomics = shaderBufferInt64Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features & + setShaderSharedInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ ) VULKAN_HPP_NOEXCEPT + { + shaderSharedInt64Atomics = shaderSharedInt64Atomics_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderAtomicInt64Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderAtomicInt64Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderBufferInt64Atomics, shaderSharedInt64Atomics ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderAtomicInt64Features const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderAtomicInt64Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderBufferInt64Atomics == rhs.shaderBufferInt64Atomics ) && + ( shaderSharedInt64Atomics == rhs.shaderSharedInt64Atomics ); +# endif + } + + bool operator!=( PhysicalDeviceShaderAtomicInt64Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderAtomicInt64Features; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features ) == + sizeof( VkPhysicalDeviceShaderAtomicInt64Features ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderAtomicInt64Features is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderAtomicInt64Features; + }; + using PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features; + + struct PhysicalDeviceShaderClockFeaturesKHR + { + using NativeType = VkPhysicalDeviceShaderClockFeaturesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderClockFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderClockFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderSubgroupClock( shaderSubgroupClock_ ) + , shaderDeviceClock( shaderDeviceClock_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderClockFeaturesKHR( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderClockFeaturesKHR( VkPhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderClockFeaturesKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderClockFeaturesKHR & + operator=( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderClockFeaturesKHR & + operator=( VkPhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & + setShaderSubgroupClock( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock_ ) VULKAN_HPP_NOEXCEPT + { + shaderSubgroupClock = shaderSubgroupClock_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & + setShaderDeviceClock( VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock_ ) VULKAN_HPP_NOEXCEPT + { + shaderDeviceClock = shaderDeviceClock_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderClockFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderClockFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderSubgroupClock, shaderDeviceClock ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderClockFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSubgroupClock == rhs.shaderSubgroupClock ) && + ( shaderDeviceClock == rhs.shaderDeviceClock ); +# endif + } + + bool operator!=( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderClockFeaturesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR ) == + sizeof( VkPhysicalDeviceShaderClockFeaturesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderClockFeaturesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderClockFeaturesKHR; + }; + + struct PhysicalDeviceShaderCoreProperties2AMD + { + using NativeType = VkPhysicalDeviceShaderCoreProperties2AMD; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderCoreProperties2AMD; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreProperties2AMD( + VULKAN_HPP_NAMESPACE::ShaderCorePropertiesFlagsAMD shaderCoreFeatures_ = {}, + uint32_t activeComputeUnitCount_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderCoreFeatures( shaderCoreFeatures_ ) + , activeComputeUnitCount( activeComputeUnitCount_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreProperties2AMD( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderCoreProperties2AMD( VkPhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderCoreProperties2AMD( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderCoreProperties2AMD & + operator=( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderCoreProperties2AMD & + operator=( VkPhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceShaderCoreProperties2AMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderCoreProperties2AMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderCoreFeatures, activeComputeUnitCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderCoreProperties2AMD const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCoreFeatures == rhs.shaderCoreFeatures ) && + ( activeComputeUnitCount == rhs.activeComputeUnitCount ); +# endif + } + + bool operator!=( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderCoreProperties2AMD; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ShaderCorePropertiesFlagsAMD shaderCoreFeatures = {}; + uint32_t activeComputeUnitCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD ) == + sizeof( VkPhysicalDeviceShaderCoreProperties2AMD ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderCoreProperties2AMD is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderCoreProperties2AMD; + }; + + struct PhysicalDeviceShaderCorePropertiesAMD + { + using NativeType = VkPhysicalDeviceShaderCorePropertiesAMD; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderCorePropertiesAMD; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderCorePropertiesAMD( uint32_t shaderEngineCount_ = {}, + uint32_t shaderArraysPerEngineCount_ = {}, + uint32_t computeUnitsPerShaderArray_ = {}, + uint32_t simdPerComputeUnit_ = {}, + uint32_t wavefrontsPerSimd_ = {}, + uint32_t wavefrontSize_ = {}, + uint32_t sgprsPerSimd_ = {}, + uint32_t minSgprAllocation_ = {}, + uint32_t maxSgprAllocation_ = {}, + uint32_t sgprAllocationGranularity_ = {}, + uint32_t vgprsPerSimd_ = {}, + uint32_t minVgprAllocation_ = {}, + uint32_t maxVgprAllocation_ = {}, + uint32_t vgprAllocationGranularity_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderEngineCount( shaderEngineCount_ ) + , shaderArraysPerEngineCount( shaderArraysPerEngineCount_ ) + , computeUnitsPerShaderArray( computeUnitsPerShaderArray_ ) + , simdPerComputeUnit( simdPerComputeUnit_ ) + , wavefrontsPerSimd( wavefrontsPerSimd_ ) + , wavefrontSize( wavefrontSize_ ) + , sgprsPerSimd( sgprsPerSimd_ ) + , minSgprAllocation( minSgprAllocation_ ) + , maxSgprAllocation( maxSgprAllocation_ ) + , sgprAllocationGranularity( sgprAllocationGranularity_ ) + , vgprsPerSimd( vgprsPerSimd_ ) + , minVgprAllocation( minVgprAllocation_ ) + , maxVgprAllocation( maxVgprAllocation_ ) + , vgprAllocationGranularity( vgprAllocationGranularity_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCorePropertiesAMD( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderCorePropertiesAMD( VkPhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderCorePropertiesAMD( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderCorePropertiesAMD & + operator=( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderCorePropertiesAMD & + operator=( VkPhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceShaderCorePropertiesAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderCorePropertiesAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + shaderEngineCount, + shaderArraysPerEngineCount, + computeUnitsPerShaderArray, + simdPerComputeUnit, + wavefrontsPerSimd, + wavefrontSize, + sgprsPerSimd, + minSgprAllocation, + maxSgprAllocation, + sgprAllocationGranularity, + vgprsPerSimd, + minVgprAllocation, + maxVgprAllocation, + vgprAllocationGranularity ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderCorePropertiesAMD const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderEngineCount == rhs.shaderEngineCount ) && + ( shaderArraysPerEngineCount == rhs.shaderArraysPerEngineCount ) && + ( computeUnitsPerShaderArray == rhs.computeUnitsPerShaderArray ) && + ( simdPerComputeUnit == rhs.simdPerComputeUnit ) && ( wavefrontsPerSimd == rhs.wavefrontsPerSimd ) && + ( wavefrontSize == rhs.wavefrontSize ) && ( sgprsPerSimd == rhs.sgprsPerSimd ) && + ( minSgprAllocation == rhs.minSgprAllocation ) && ( maxSgprAllocation == rhs.maxSgprAllocation ) && + ( sgprAllocationGranularity == rhs.sgprAllocationGranularity ) && ( vgprsPerSimd == rhs.vgprsPerSimd ) && + ( minVgprAllocation == rhs.minVgprAllocation ) && ( maxVgprAllocation == rhs.maxVgprAllocation ) && + ( vgprAllocationGranularity == rhs.vgprAllocationGranularity ); +# endif + } + + bool operator!=( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderCorePropertiesAMD; + void * pNext = {}; + uint32_t shaderEngineCount = {}; + uint32_t shaderArraysPerEngineCount = {}; + uint32_t computeUnitsPerShaderArray = {}; + uint32_t simdPerComputeUnit = {}; + uint32_t wavefrontsPerSimd = {}; + uint32_t wavefrontSize = {}; + uint32_t sgprsPerSimd = {}; + uint32_t minSgprAllocation = {}; + uint32_t maxSgprAllocation = {}; + uint32_t sgprAllocationGranularity = {}; + uint32_t vgprsPerSimd = {}; + uint32_t minVgprAllocation = {}; + uint32_t maxVgprAllocation = {}; + uint32_t vgprAllocationGranularity = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD ) == + sizeof( VkPhysicalDeviceShaderCorePropertiesAMD ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderCorePropertiesAMD is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderCorePropertiesAMD; + }; + + struct PhysicalDeviceShaderDemoteToHelperInvocationFeatures + { + using NativeType = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDemoteToHelperInvocationFeatures( + VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderDemoteToHelperInvocation( shaderDemoteToHelperInvocation_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDemoteToHelperInvocationFeatures( + PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderDemoteToHelperInvocationFeatures( + VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderDemoteToHelperInvocationFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderDemoteToHelperInvocationFeatures & + operator=( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderDemoteToHelperInvocationFeatures & + operator=( VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeatures & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeatures & setShaderDemoteToHelperInvocation( + VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ ) VULKAN_HPP_NOEXCEPT + { + shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderDemoteToHelperInvocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderDemoteToHelperInvocation == rhs.shaderDemoteToHelperInvocation ); +# endif + } + + bool operator!=( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures ) == + sizeof( VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures>::value, + "PhysicalDeviceShaderDemoteToHelperInvocationFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderDemoteToHelperInvocationFeatures; + }; + using PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = PhysicalDeviceShaderDemoteToHelperInvocationFeatures; + + struct PhysicalDeviceShaderDrawParametersFeatures + { + using NativeType = VkPhysicalDeviceShaderDrawParametersFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderDrawParametersFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDrawParametersFeatures( + VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderDrawParameters( shaderDrawParameters_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDrawParametersFeatures( + PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderDrawParametersFeatures( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderDrawParametersFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderDrawParametersFeatures & + operator=( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderDrawParametersFeatures & + operator=( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures & + setShaderDrawParameters( VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ ) VULKAN_HPP_NOEXCEPT + { + shaderDrawParameters = shaderDrawParameters_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderDrawParametersFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderDrawParametersFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderDrawParameters ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderDrawParametersFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderDrawParameters == rhs.shaderDrawParameters ); +# endif + } + + bool operator!=( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderDrawParametersFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures ) == + sizeof( VkPhysicalDeviceShaderDrawParametersFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderDrawParametersFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderDrawParametersFeatures; + }; + using PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures; + + struct PhysicalDeviceShaderFloat16Int8Features + { + using NativeType = VkPhysicalDeviceShaderFloat16Int8Features; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderFloat16Int8Features; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderFloat16Int8Features( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderFloat16( shaderFloat16_ ) + , shaderInt8( shaderInt8_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloat16Int8Features( PhysicalDeviceShaderFloat16Int8Features const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderFloat16Int8Features( VkPhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderFloat16Int8Features( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderFloat16Int8Features & + operator=( PhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderFloat16Int8Features & + operator=( VkPhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & + setShaderFloat16( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ ) VULKAN_HPP_NOEXCEPT + { + shaderFloat16 = shaderFloat16_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & + setShaderInt8( VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ ) VULKAN_HPP_NOEXCEPT + { + shaderInt8 = shaderInt8_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderFloat16Int8Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderFloat16Int8Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderFloat16, shaderInt8 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderFloat16Int8Features const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderFloat16Int8Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderFloat16 == rhs.shaderFloat16 ) && + ( shaderInt8 == rhs.shaderInt8 ); +# endif + } + + bool operator!=( PhysicalDeviceShaderFloat16Int8Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderFloat16Int8Features; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderInt8 = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features ) == + sizeof( VkPhysicalDeviceShaderFloat16Int8Features ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderFloat16Int8Features is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderFloat16Int8Features; + }; + using PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features; + using PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features; + + struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT + { + using NativeType = VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderImageInt64Atomics( shaderImageInt64Atomics_ ) + , sparseImageInt64Atomics( sparseImageInt64Atomics_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( + PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & + operator=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & + operator=( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & + setShaderImageInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics_ ) VULKAN_HPP_NOEXCEPT + { + shaderImageInt64Atomics = shaderImageInt64Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & + setSparseImageInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics_ ) VULKAN_HPP_NOEXCEPT + { + sparseImageInt64Atomics = sparseImageInt64Atomics_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderImageInt64Atomics, sparseImageInt64Atomics ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderImageInt64Atomics == rhs.shaderImageInt64Atomics ) && + ( sparseImageInt64Atomics == rhs.sparseImageInt64Atomics ); +# endif + } + + bool operator!=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics = {}; + VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT ) == + sizeof( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderImageAtomicInt64FeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderImageAtomicInt64FeaturesEXT; + }; + + struct PhysicalDeviceShaderImageFootprintFeaturesNV + { + using NativeType = VkPhysicalDeviceShaderImageFootprintFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageFootprintFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 imageFootprint_ = {} ) VULKAN_HPP_NOEXCEPT : imageFootprint( imageFootprint_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageFootprintFeaturesNV( + PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderImageFootprintFeaturesNV( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderImageFootprintFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderImageFootprintFeaturesNV & + operator=( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderImageFootprintFeaturesNV & + operator=( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageFootprintFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageFootprintFeaturesNV & + setImageFootprint( VULKAN_HPP_NAMESPACE::Bool32 imageFootprint_ ) VULKAN_HPP_NOEXCEPT + { + imageFootprint = imageFootprint_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderImageFootprintFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderImageFootprintFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageFootprint ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderImageFootprintFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageFootprint == rhs.imageFootprint ); +# endif + } + + bool operator!=( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 imageFootprint = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV ) == + sizeof( VkPhysicalDeviceShaderImageFootprintFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderImageFootprintFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderImageFootprintFeaturesNV; + }; + + struct PhysicalDeviceShaderIntegerDotProductFeatures + { + using NativeType = VkPhysicalDeviceShaderIntegerDotProductFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderIntegerDotProductFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductFeatures( + VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderIntegerDotProduct( shaderIntegerDotProduct_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductFeatures( + PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderIntegerDotProductFeatures( VkPhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderIntegerDotProductFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderIntegerDotProductFeatures & + operator=( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderIntegerDotProductFeatures & + operator=( VkPhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductFeatures & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductFeatures & + setShaderIntegerDotProduct( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ ) VULKAN_HPP_NOEXCEPT + { + shaderIntegerDotProduct = shaderIntegerDotProduct_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderIntegerDotProductFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderIntegerDotProductFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderIntegerDotProduct ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderIntegerDotProductFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderIntegerDotProduct == rhs.shaderIntegerDotProduct ); +# endif + } + + bool operator!=( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderIntegerDotProductFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures ) == + sizeof( VkPhysicalDeviceShaderIntegerDotProductFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderIntegerDotProductFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderIntegerDotProductFeatures; + }; + using PhysicalDeviceShaderIntegerDotProductFeaturesKHR = PhysicalDeviceShaderIntegerDotProductFeatures; + + struct PhysicalDeviceShaderIntegerDotProductProperties + { + using NativeType = VkPhysicalDeviceShaderIntegerDotProductProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderIntegerDotProductProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductProperties( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ = {} ) + VULKAN_HPP_NOEXCEPT + : integerDotProduct8BitUnsignedAccelerated( integerDotProduct8BitUnsignedAccelerated_ ) + , integerDotProduct8BitSignedAccelerated( integerDotProduct8BitSignedAccelerated_ ) + , integerDotProduct8BitMixedSignednessAccelerated( integerDotProduct8BitMixedSignednessAccelerated_ ) + , integerDotProduct4x8BitPackedUnsignedAccelerated( integerDotProduct4x8BitPackedUnsignedAccelerated_ ) + , integerDotProduct4x8BitPackedSignedAccelerated( integerDotProduct4x8BitPackedSignedAccelerated_ ) + , integerDotProduct4x8BitPackedMixedSignednessAccelerated( + integerDotProduct4x8BitPackedMixedSignednessAccelerated_ ) + , integerDotProduct16BitUnsignedAccelerated( integerDotProduct16BitUnsignedAccelerated_ ) + , integerDotProduct16BitSignedAccelerated( integerDotProduct16BitSignedAccelerated_ ) + , integerDotProduct16BitMixedSignednessAccelerated( integerDotProduct16BitMixedSignednessAccelerated_ ) + , integerDotProduct32BitUnsignedAccelerated( integerDotProduct32BitUnsignedAccelerated_ ) + , integerDotProduct32BitSignedAccelerated( integerDotProduct32BitSignedAccelerated_ ) + , integerDotProduct32BitMixedSignednessAccelerated( integerDotProduct32BitMixedSignednessAccelerated_ ) + , integerDotProduct64BitUnsignedAccelerated( integerDotProduct64BitUnsignedAccelerated_ ) + , integerDotProduct64BitSignedAccelerated( integerDotProduct64BitSignedAccelerated_ ) + , integerDotProduct64BitMixedSignednessAccelerated( integerDotProduct64BitMixedSignednessAccelerated_ ) + , integerDotProductAccumulatingSaturating8BitUnsignedAccelerated( + integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ ) + , integerDotProductAccumulatingSaturating8BitSignedAccelerated( + integerDotProductAccumulatingSaturating8BitSignedAccelerated_ ) + , integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated( + integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ ) + , integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated( + integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ ) + , integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated( + integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ ) + , integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated( + integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ ) + , integerDotProductAccumulatingSaturating16BitUnsignedAccelerated( + integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ ) + , integerDotProductAccumulatingSaturating16BitSignedAccelerated( + integerDotProductAccumulatingSaturating16BitSignedAccelerated_ ) + , integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated( + integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ ) + , integerDotProductAccumulatingSaturating32BitUnsignedAccelerated( + integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ ) + , integerDotProductAccumulatingSaturating32BitSignedAccelerated( + integerDotProductAccumulatingSaturating32BitSignedAccelerated_ ) + , integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated( + integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ ) + , integerDotProductAccumulatingSaturating64BitUnsignedAccelerated( + integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ ) + , integerDotProductAccumulatingSaturating64BitSignedAccelerated( + integerDotProductAccumulatingSaturating64BitSignedAccelerated_ ) + , integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated( + integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductProperties( + PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderIntegerDotProductProperties( VkPhysicalDeviceShaderIntegerDotProductProperties const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderIntegerDotProductProperties( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderIntegerDotProductProperties & + operator=( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderIntegerDotProductProperties & + operator=( VkPhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProduct8BitUnsignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitUnsignedAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProduct8BitUnsignedAccelerated = integerDotProduct8BitUnsignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & setIntegerDotProduct8BitSignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitSignedAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProduct8BitSignedAccelerated = integerDotProduct8BitSignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProduct8BitMixedSignednessAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitMixedSignednessAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProduct8BitMixedSignednessAccelerated = integerDotProduct8BitMixedSignednessAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProduct4x8BitPackedUnsignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProduct4x8BitPackedUnsignedAccelerated = integerDotProduct4x8BitPackedUnsignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProduct4x8BitPackedSignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedSignedAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProduct4x8BitPackedSignedAccelerated = integerDotProduct4x8BitPackedSignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProduct4x8BitPackedMixedSignednessAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProduct4x8BitPackedMixedSignednessAccelerated = + integerDotProduct4x8BitPackedMixedSignednessAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProduct16BitUnsignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitUnsignedAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProduct16BitUnsignedAccelerated = integerDotProduct16BitUnsignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProduct16BitSignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitSignedAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProduct16BitSignedAccelerated = integerDotProduct16BitSignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProduct16BitMixedSignednessAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitMixedSignednessAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProduct16BitMixedSignednessAccelerated = integerDotProduct16BitMixedSignednessAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProduct32BitUnsignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitUnsignedAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProduct32BitUnsignedAccelerated = integerDotProduct32BitUnsignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProduct32BitSignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitSignedAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProduct32BitSignedAccelerated = integerDotProduct32BitSignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProduct32BitMixedSignednessAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitMixedSignednessAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProduct32BitMixedSignednessAccelerated = integerDotProduct32BitMixedSignednessAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProduct64BitUnsignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitUnsignedAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProduct64BitUnsignedAccelerated = integerDotProduct64BitUnsignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProduct64BitSignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitSignedAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProduct64BitSignedAccelerated = integerDotProduct64BitSignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProduct64BitMixedSignednessAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitMixedSignednessAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProduct64BitMixedSignednessAccelerated = integerDotProduct64BitMixedSignednessAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProductAccumulatingSaturating8BitUnsignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ ) + VULKAN_HPP_NOEXCEPT + { + integerDotProductAccumulatingSaturating8BitUnsignedAccelerated = + integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProductAccumulatingSaturating8BitSignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated_ ) VULKAN_HPP_NOEXCEPT + { + integerDotProductAccumulatingSaturating8BitSignedAccelerated = + integerDotProductAccumulatingSaturating8BitSignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ ) + VULKAN_HPP_NOEXCEPT + { + integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = + integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ ) + VULKAN_HPP_NOEXCEPT + { + integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = + integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ ) + VULKAN_HPP_NOEXCEPT + { + integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = + integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ ) + VULKAN_HPP_NOEXCEPT + { + integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = + integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProductAccumulatingSaturating16BitUnsignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ ) + VULKAN_HPP_NOEXCEPT + { + integerDotProductAccumulatingSaturating16BitUnsignedAccelerated = + integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProductAccumulatingSaturating16BitSignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated_ ) + VULKAN_HPP_NOEXCEPT + { + integerDotProductAccumulatingSaturating16BitSignedAccelerated = + integerDotProductAccumulatingSaturating16BitSignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ ) + VULKAN_HPP_NOEXCEPT + { + integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = + integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProductAccumulatingSaturating32BitUnsignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ ) + VULKAN_HPP_NOEXCEPT + { + integerDotProductAccumulatingSaturating32BitUnsignedAccelerated = + integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProductAccumulatingSaturating32BitSignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated_ ) + VULKAN_HPP_NOEXCEPT + { + integerDotProductAccumulatingSaturating32BitSignedAccelerated = + integerDotProductAccumulatingSaturating32BitSignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ ) + VULKAN_HPP_NOEXCEPT + { + integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = + integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProductAccumulatingSaturating64BitUnsignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ ) + VULKAN_HPP_NOEXCEPT + { + integerDotProductAccumulatingSaturating64BitUnsignedAccelerated = + integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProductAccumulatingSaturating64BitSignedAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated_ ) + VULKAN_HPP_NOEXCEPT + { + integerDotProductAccumulatingSaturating64BitSignedAccelerated = + integerDotProductAccumulatingSaturating64BitSignedAccelerated_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductProperties & + setIntegerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated( + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ ) + VULKAN_HPP_NOEXCEPT + { + integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = + integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderIntegerDotProductProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderIntegerDotProductProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + integerDotProduct8BitUnsignedAccelerated, + integerDotProduct8BitSignedAccelerated, + integerDotProduct8BitMixedSignednessAccelerated, + integerDotProduct4x8BitPackedUnsignedAccelerated, + integerDotProduct4x8BitPackedSignedAccelerated, + integerDotProduct4x8BitPackedMixedSignednessAccelerated, + integerDotProduct16BitUnsignedAccelerated, + integerDotProduct16BitSignedAccelerated, + integerDotProduct16BitMixedSignednessAccelerated, + integerDotProduct32BitUnsignedAccelerated, + integerDotProduct32BitSignedAccelerated, + integerDotProduct32BitMixedSignednessAccelerated, + integerDotProduct64BitUnsignedAccelerated, + integerDotProduct64BitSignedAccelerated, + integerDotProduct64BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating8BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating8BitSignedAccelerated, + integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated, + integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated, + integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating16BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating16BitSignedAccelerated, + integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating32BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating32BitSignedAccelerated, + integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating64BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating64BitSignedAccelerated, + integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderIntegerDotProductProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( integerDotProduct8BitUnsignedAccelerated == rhs.integerDotProduct8BitUnsignedAccelerated ) && + ( integerDotProduct8BitSignedAccelerated == rhs.integerDotProduct8BitSignedAccelerated ) && + ( integerDotProduct8BitMixedSignednessAccelerated == + rhs.integerDotProduct8BitMixedSignednessAccelerated ) && + ( integerDotProduct4x8BitPackedUnsignedAccelerated == + rhs.integerDotProduct4x8BitPackedUnsignedAccelerated ) && + ( integerDotProduct4x8BitPackedSignedAccelerated == rhs.integerDotProduct4x8BitPackedSignedAccelerated ) && + ( integerDotProduct4x8BitPackedMixedSignednessAccelerated == + rhs.integerDotProduct4x8BitPackedMixedSignednessAccelerated ) && + ( integerDotProduct16BitUnsignedAccelerated == rhs.integerDotProduct16BitUnsignedAccelerated ) && + ( integerDotProduct16BitSignedAccelerated == rhs.integerDotProduct16BitSignedAccelerated ) && + ( integerDotProduct16BitMixedSignednessAccelerated == + rhs.integerDotProduct16BitMixedSignednessAccelerated ) && + ( integerDotProduct32BitUnsignedAccelerated == rhs.integerDotProduct32BitUnsignedAccelerated ) && + ( integerDotProduct32BitSignedAccelerated == rhs.integerDotProduct32BitSignedAccelerated ) && + ( integerDotProduct32BitMixedSignednessAccelerated == + rhs.integerDotProduct32BitMixedSignednessAccelerated ) && + ( integerDotProduct64BitUnsignedAccelerated == rhs.integerDotProduct64BitUnsignedAccelerated ) && + ( integerDotProduct64BitSignedAccelerated == rhs.integerDotProduct64BitSignedAccelerated ) && + ( integerDotProduct64BitMixedSignednessAccelerated == + rhs.integerDotProduct64BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating8BitUnsignedAccelerated == + rhs.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating8BitSignedAccelerated == + rhs.integerDotProductAccumulatingSaturating8BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated == + rhs.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated == + rhs.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating16BitUnsignedAccelerated == + rhs.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating16BitSignedAccelerated == + rhs.integerDotProductAccumulatingSaturating16BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating32BitUnsignedAccelerated == + rhs.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating32BitSignedAccelerated == + rhs.integerDotProductAccumulatingSaturating32BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating64BitUnsignedAccelerated == + rhs.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating64BitSignedAccelerated == + rhs.integerDotProductAccumulatingSaturating64BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ); +# endif + } + + bool operator!=( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderIntegerDotProductProperties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties ) == + sizeof( VkPhysicalDeviceShaderIntegerDotProductProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderIntegerDotProductProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderIntegerDotProductProperties; + }; + using PhysicalDeviceShaderIntegerDotProductPropertiesKHR = PhysicalDeviceShaderIntegerDotProductProperties; + + struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + { + using NativeType = VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( + VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerFunctions2_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderIntegerFunctions2( shaderIntegerFunctions2_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( + PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( + VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & + operator=( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & + operator=( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & + setShaderIntegerFunctions2( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerFunctions2_ ) VULKAN_HPP_NOEXCEPT + { + shaderIntegerFunctions2 = shaderIntegerFunctions2_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderIntegerFunctions2 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderIntegerFunctions2 == rhs.shaderIntegerFunctions2 ); +# endif + } + + bool operator!=( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerFunctions2 = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL ) == + sizeof( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + }; + + struct PhysicalDeviceShaderSMBuiltinsFeaturesNV + { + using NativeType = VkPhysicalDeviceShaderSMBuiltinsFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 shaderSMBuiltins_ = {} ) + VULKAN_HPP_NOEXCEPT : shaderSMBuiltins( shaderSMBuiltins_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsFeaturesNV( + PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderSMBuiltinsFeaturesNV( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderSMBuiltinsFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderSMBuiltinsFeaturesNV & + operator=( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderSMBuiltinsFeaturesNV & + operator=( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsFeaturesNV & + setShaderSMBuiltins( VULKAN_HPP_NAMESPACE::Bool32 shaderSMBuiltins_ ) VULKAN_HPP_NOEXCEPT + { + shaderSMBuiltins = shaderSMBuiltins_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderSMBuiltins ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSMBuiltins == rhs.shaderSMBuiltins ); +# endif + } + + bool operator!=( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSMBuiltins = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV ) == + sizeof( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderSMBuiltinsFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSMBuiltinsFeaturesNV; + }; + + struct PhysicalDeviceShaderSMBuiltinsPropertiesNV + { + using NativeType = VkPhysicalDeviceShaderSMBuiltinsPropertiesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderSMBuiltinsPropertiesNV( uint32_t shaderSMCount_ = {}, + uint32_t shaderWarpsPerSM_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderSMCount( shaderSMCount_ ) + , shaderWarpsPerSM( shaderWarpsPerSM_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsPropertiesNV( + PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderSMBuiltinsPropertiesNV( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderSMBuiltinsPropertiesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderSMBuiltinsPropertiesNV & + operator=( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderSMBuiltinsPropertiesNV & + operator=( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderSMCount, shaderWarpsPerSM ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSMCount == rhs.shaderSMCount ) && + ( shaderWarpsPerSM == rhs.shaderWarpsPerSM ); +# endif + } + + bool operator!=( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV; + void * pNext = {}; + uint32_t shaderSMCount = {}; + uint32_t shaderWarpsPerSM = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV ) == + sizeof( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderSMBuiltinsPropertiesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSMBuiltinsPropertiesNV; + }; + + struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures + { + using NativeType = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupExtendedTypesFeatures( + VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderSubgroupExtendedTypes( shaderSubgroupExtendedTypes_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupExtendedTypesFeatures( + PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderSubgroupExtendedTypesFeatures( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderSubgroupExtendedTypesFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderSubgroupExtendedTypesFeatures & + operator=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderSubgroupExtendedTypesFeatures & + operator=( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures & + setShaderSubgroupExtendedTypes( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ ) VULKAN_HPP_NOEXCEPT + { + shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderSubgroupExtendedTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderSubgroupExtendedTypes == rhs.shaderSubgroupExtendedTypes ); +# endif + } + + bool operator!=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures ) == + sizeof( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderSubgroupExtendedTypesFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSubgroupExtendedTypesFeatures; + }; + using PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = PhysicalDeviceShaderSubgroupExtendedTypesFeatures; + + struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + { + using NativeType = VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR( + VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupUniformControlFlow_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderSubgroupUniformControlFlow( shaderSubgroupUniformControlFlow_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR( + PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR( + VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR & + operator=( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR & + operator=( VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( + &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR & + setShaderSubgroupUniformControlFlow( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupUniformControlFlow_ ) + VULKAN_HPP_NOEXCEPT + { + shaderSubgroupUniformControlFlow = shaderSubgroupUniformControlFlow_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderSubgroupUniformControlFlow ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderSubgroupUniformControlFlow == rhs.shaderSubgroupUniformControlFlow ); +# endif + } + + bool operator!=( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = + StructureType::ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupUniformControlFlow = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR ) == + sizeof( VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>::value, + "PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; + }; + + struct PhysicalDeviceShaderTerminateInvocationFeatures + { + using NativeType = VkPhysicalDeviceShaderTerminateInvocationFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShaderTerminateInvocationFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTerminateInvocationFeatures( + VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderTerminateInvocation( shaderTerminateInvocation_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTerminateInvocationFeatures( + PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderTerminateInvocationFeatures( VkPhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderTerminateInvocationFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShaderTerminateInvocationFeatures & + operator=( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderTerminateInvocationFeatures & + operator=( VkPhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeatures & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeatures & + setShaderTerminateInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ ) VULKAN_HPP_NOEXCEPT + { + shaderTerminateInvocation = shaderTerminateInvocation_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShaderTerminateInvocationFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShaderTerminateInvocationFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderTerminateInvocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderTerminateInvocationFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderTerminateInvocation == rhs.shaderTerminateInvocation ); +# endif + } + + bool operator!=( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderTerminateInvocationFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures ) == + sizeof( VkPhysicalDeviceShaderTerminateInvocationFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderTerminateInvocationFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderTerminateInvocationFeatures; + }; + using PhysicalDeviceShaderTerminateInvocationFeaturesKHR = PhysicalDeviceShaderTerminateInvocationFeatures; + + struct PhysicalDeviceShadingRateImageFeaturesNV + { + using NativeType = VkPhysicalDeviceShadingRateImageFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShadingRateImageFeaturesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImageFeaturesNV( + VULKAN_HPP_NAMESPACE::Bool32 shadingRateImage_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shadingRateCoarseSampleOrder_ = {} ) VULKAN_HPP_NOEXCEPT + : shadingRateImage( shadingRateImage_ ) + , shadingRateCoarseSampleOrder( shadingRateCoarseSampleOrder_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImageFeaturesNV( + PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShadingRateImageFeaturesNV( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShadingRateImageFeaturesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShadingRateImageFeaturesNV & + operator=( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShadingRateImageFeaturesNV & + operator=( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV & + setShadingRateImage( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImage_ ) VULKAN_HPP_NOEXCEPT + { + shadingRateImage = shadingRateImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV & + setShadingRateCoarseSampleOrder( VULKAN_HPP_NAMESPACE::Bool32 shadingRateCoarseSampleOrder_ ) VULKAN_HPP_NOEXCEPT + { + shadingRateCoarseSampleOrder = shadingRateCoarseSampleOrder_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceShadingRateImageFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShadingRateImageFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shadingRateImage, shadingRateCoarseSampleOrder ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShadingRateImageFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shadingRateImage == rhs.shadingRateImage ) && + ( shadingRateCoarseSampleOrder == rhs.shadingRateCoarseSampleOrder ); +# endif + } + + bool operator!=( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShadingRateImageFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shadingRateImage = {}; + VULKAN_HPP_NAMESPACE::Bool32 shadingRateCoarseSampleOrder = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV ) == + sizeof( VkPhysicalDeviceShadingRateImageFeaturesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShadingRateImageFeaturesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShadingRateImageFeaturesNV; + }; + + struct PhysicalDeviceShadingRateImagePropertiesNV + { + using NativeType = VkPhysicalDeviceShadingRateImagePropertiesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceShadingRateImagePropertiesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShadingRateImagePropertiesNV( VULKAN_HPP_NAMESPACE::Extent2D shadingRateTexelSize_ = {}, + uint32_t shadingRatePaletteSize_ = {}, + uint32_t shadingRateMaxCoarseSamples_ = {} ) VULKAN_HPP_NOEXCEPT + : shadingRateTexelSize( shadingRateTexelSize_ ) + , shadingRatePaletteSize( shadingRatePaletteSize_ ) + , shadingRateMaxCoarseSamples( shadingRateMaxCoarseSamples_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImagePropertiesNV( + PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShadingRateImagePropertiesNV( VkPhysicalDeviceShadingRateImagePropertiesNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShadingRateImagePropertiesNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceShadingRateImagePropertiesNV & + operator=( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShadingRateImagePropertiesNV & + operator=( VkPhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceShadingRateImagePropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceShadingRateImagePropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shadingRateTexelSize, shadingRatePaletteSize, shadingRateMaxCoarseSamples ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShadingRateImagePropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shadingRateTexelSize == rhs.shadingRateTexelSize ) && + ( shadingRatePaletteSize == rhs.shadingRatePaletteSize ) && + ( shadingRateMaxCoarseSamples == rhs.shadingRateMaxCoarseSamples ); +# endif + } + + bool operator!=( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShadingRateImagePropertiesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Extent2D shadingRateTexelSize = {}; + uint32_t shadingRatePaletteSize = {}; + uint32_t shadingRateMaxCoarseSamples = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV ) == + sizeof( VkPhysicalDeviceShadingRateImagePropertiesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceShadingRateImagePropertiesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceShadingRateImagePropertiesNV; + }; + + struct PhysicalDeviceSparseImageFormatInfo2 + { + using NativeType = VkPhysicalDeviceSparseImageFormatInfo2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceSparseImageFormatInfo2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseImageFormatInfo2( + VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::ImageType type_ = VULKAN_HPP_NAMESPACE::ImageType::e1D, + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {}, + VULKAN_HPP_NAMESPACE::ImageTiling tiling_ = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal ) VULKAN_HPP_NOEXCEPT + : format( format_ ) + , type( type_ ) + , samples( samples_ ) + , usage( usage_ ) + , tiling( tiling_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseImageFormatInfo2( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSparseImageFormatInfo2( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSparseImageFormatInfo2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceSparseImageFormatInfo2 & + operator=( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSparseImageFormatInfo2 & + operator=( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & + setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & + setType( VULKAN_HPP_NAMESPACE::ImageType type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & + setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT + { + samples = samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & + setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & + setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT + { + tiling = tiling_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceSparseImageFormatInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceSparseImageFormatInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, format, type, samples, usage, tiling ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSparseImageFormatInfo2 const & ) const = default; +#else + bool operator==( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( type == rhs.type ) && + ( samples == rhs.samples ) && ( usage == rhs.usage ) && ( tiling == rhs.tiling ); +# endif + } + + bool operator!=( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSparseImageFormatInfo2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::ImageType type = VULKAN_HPP_NAMESPACE::ImageType::e1D; + VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; + VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {}; + VULKAN_HPP_NAMESPACE::ImageTiling tiling = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 ) == + sizeof( VkPhysicalDeviceSparseImageFormatInfo2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceSparseImageFormatInfo2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceSparseImageFormatInfo2; + }; + using PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2; + + struct PhysicalDeviceSubgroupProperties + { + using NativeType = VkPhysicalDeviceSubgroupProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSubgroupProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupProperties( + uint32_t subgroupSize_ = {}, + VULKAN_HPP_NAMESPACE::ShaderStageFlags supportedStages_ = {}, + VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags supportedOperations_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 quadOperationsInAllStages_ = {} ) VULKAN_HPP_NOEXCEPT + : subgroupSize( subgroupSize_ ) + , supportedStages( supportedStages_ ) + , supportedOperations( supportedOperations_ ) + , quadOperationsInAllStages( quadOperationsInAllStages_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceSubgroupProperties( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubgroupProperties( VkPhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSubgroupProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceSubgroupProperties & + operator=( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubgroupProperties & operator=( VkPhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceSubgroupProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceSubgroupProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, subgroupSize, supportedStages, supportedOperations, quadOperationsInAllStages ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSubgroupProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceSubgroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subgroupSize == rhs.subgroupSize ) && + ( supportedStages == rhs.supportedStages ) && ( supportedOperations == rhs.supportedOperations ) && + ( quadOperationsInAllStages == rhs.quadOperationsInAllStages ); +# endif + } + + bool operator!=( PhysicalDeviceSubgroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupProperties; + void * pNext = {}; + uint32_t subgroupSize = {}; + VULKAN_HPP_NAMESPACE::ShaderStageFlags supportedStages = {}; + VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags supportedOperations = {}; + VULKAN_HPP_NAMESPACE::Bool32 quadOperationsInAllStages = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties ) == + sizeof( VkPhysicalDeviceSubgroupProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceSubgroupProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceSubgroupProperties; + }; + + struct PhysicalDeviceSubgroupSizeControlFeatures + { + using NativeType = VkPhysicalDeviceSubgroupSizeControlFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceSubgroupSizeControlFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlFeatures( + VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ = {} ) VULKAN_HPP_NOEXCEPT + : subgroupSizeControl( subgroupSizeControl_ ) + , computeFullSubgroups( computeFullSubgroups_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlFeatures( + PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubgroupSizeControlFeatures( VkPhysicalDeviceSubgroupSizeControlFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSubgroupSizeControlFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceSubgroupSizeControlFeatures & + operator=( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubgroupSizeControlFeatures & + operator=( VkPhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures & + setSubgroupSizeControl( VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_ ) VULKAN_HPP_NOEXCEPT + { + subgroupSizeControl = subgroupSizeControl_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures & + setComputeFullSubgroups( VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ ) VULKAN_HPP_NOEXCEPT + { + computeFullSubgroups = computeFullSubgroups_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceSubgroupSizeControlFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceSubgroupSizeControlFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, subgroupSizeControl, computeFullSubgroups ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSubgroupSizeControlFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subgroupSizeControl == rhs.subgroupSizeControl ) && + ( computeFullSubgroups == rhs.computeFullSubgroups ); +# endif + } + + bool operator!=( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupSizeControlFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl = {}; + VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures ) == + sizeof( VkPhysicalDeviceSubgroupSizeControlFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceSubgroupSizeControlFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceSubgroupSizeControlFeatures; + }; + using PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeatures; + + struct PhysicalDeviceSubgroupSizeControlProperties + { + using NativeType = VkPhysicalDeviceSubgroupSizeControlProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceSubgroupSizeControlProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlProperties( + uint32_t minSubgroupSize_ = {}, + uint32_t maxSubgroupSize_ = {}, + uint32_t maxComputeWorkgroupSubgroups_ = {}, + VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages_ = {} ) VULKAN_HPP_NOEXCEPT + : minSubgroupSize( minSubgroupSize_ ) + , maxSubgroupSize( maxSubgroupSize_ ) + , maxComputeWorkgroupSubgroups( maxComputeWorkgroupSubgroups_ ) + , requiredSubgroupSizeStages( requiredSubgroupSizeStages_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlProperties( + PhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubgroupSizeControlProperties( VkPhysicalDeviceSubgroupSizeControlProperties const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSubgroupSizeControlProperties( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceSubgroupSizeControlProperties & + operator=( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubgroupSizeControlProperties & + operator=( VkPhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceSubgroupSizeControlProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceSubgroupSizeControlProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, minSubgroupSize, maxSubgroupSize, maxComputeWorkgroupSubgroups, requiredSubgroupSizeStages ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSubgroupSizeControlProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minSubgroupSize == rhs.minSubgroupSize ) && + ( maxSubgroupSize == rhs.maxSubgroupSize ) && + ( maxComputeWorkgroupSubgroups == rhs.maxComputeWorkgroupSubgroups ) && + ( requiredSubgroupSizeStages == rhs.requiredSubgroupSizeStages ); +# endif + } + + bool operator!=( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupSizeControlProperties; + void * pNext = {}; + uint32_t minSubgroupSize = {}; + uint32_t maxSubgroupSize = {}; + uint32_t maxComputeWorkgroupSubgroups = {}; + VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties ) == + sizeof( VkPhysicalDeviceSubgroupSizeControlProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceSubgroupSizeControlProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceSubgroupSizeControlProperties; + }; + using PhysicalDeviceSubgroupSizeControlPropertiesEXT = PhysicalDeviceSubgroupSizeControlProperties; + + struct PhysicalDeviceSubpassShadingFeaturesHUAWEI + { + using NativeType = VkPhysicalDeviceSubpassShadingFeaturesHUAWEI; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceSubpassShadingFeaturesHUAWEI; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingFeaturesHUAWEI( VULKAN_HPP_NAMESPACE::Bool32 subpassShading_ = {} ) + VULKAN_HPP_NOEXCEPT : subpassShading( subpassShading_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingFeaturesHUAWEI( + PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubpassShadingFeaturesHUAWEI( VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSubpassShadingFeaturesHUAWEI( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceSubpassShadingFeaturesHUAWEI & + operator=( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubpassShadingFeaturesHUAWEI & + operator=( VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassShadingFeaturesHUAWEI & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassShadingFeaturesHUAWEI & + setSubpassShading( VULKAN_HPP_NAMESPACE::Bool32 subpassShading_ ) VULKAN_HPP_NOEXCEPT + { + subpassShading = subpassShading_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, subpassShading ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & ) const = default; +#else + bool operator==( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subpassShading == rhs.subpassShading ); +# endif + } + + bool operator!=( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubpassShadingFeaturesHUAWEI; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 subpassShading = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI ) == + sizeof( VkPhysicalDeviceSubpassShadingFeaturesHUAWEI ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceSubpassShadingFeaturesHUAWEI is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceSubpassShadingFeaturesHUAWEI; + }; + + struct PhysicalDeviceSubpassShadingPropertiesHUAWEI + { + using NativeType = VkPhysicalDeviceSubpassShadingPropertiesHUAWEI; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceSubpassShadingPropertiesHUAWEI; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingPropertiesHUAWEI( + uint32_t maxSubpassShadingWorkgroupSizeAspectRatio_ = {} ) VULKAN_HPP_NOEXCEPT + : maxSubpassShadingWorkgroupSizeAspectRatio( maxSubpassShadingWorkgroupSizeAspectRatio_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingPropertiesHUAWEI( + PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubpassShadingPropertiesHUAWEI( VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSubpassShadingPropertiesHUAWEI( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceSubpassShadingPropertiesHUAWEI & + operator=( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubpassShadingPropertiesHUAWEI & + operator=( VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxSubpassShadingWorkgroupSizeAspectRatio ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & ) const = default; +#else + bool operator==( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( maxSubpassShadingWorkgroupSizeAspectRatio == rhs.maxSubpassShadingWorkgroupSizeAspectRatio ); +# endif + } + + bool operator!=( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubpassShadingPropertiesHUAWEI; + void * pNext = {}; + uint32_t maxSubpassShadingWorkgroupSizeAspectRatio = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI ) == + sizeof( VkPhysicalDeviceSubpassShadingPropertiesHUAWEI ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceSubpassShadingPropertiesHUAWEI is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceSubpassShadingPropertiesHUAWEI; + }; + + struct PhysicalDeviceSurfaceInfo2KHR + { + using NativeType = VkPhysicalDeviceSurfaceInfo2KHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSurfaceInfo2KHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceSurfaceInfo2KHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ = {} ) VULKAN_HPP_NOEXCEPT + : surface( surface_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceSurfaceInfo2KHR( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSurfaceInfo2KHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceSurfaceInfo2KHR & + operator=( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSurfaceInfo2KHR & operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR & + setSurface( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ ) VULKAN_HPP_NOEXCEPT + { + surface = surface_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceSurfaceInfo2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceSurfaceInfo2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std:: + tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, surface ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSurfaceInfo2KHR const & ) const = default; +#else + bool operator==( PhysicalDeviceSurfaceInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surface == rhs.surface ); +# endif + } + + bool operator!=( PhysicalDeviceSurfaceInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSurfaceInfo2KHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SurfaceKHR surface = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR ) == + sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceSurfaceInfo2KHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceSurfaceInfo2KHR; + }; + + struct PhysicalDeviceSynchronization2Features + { + using NativeType = VkPhysicalDeviceSynchronization2Features; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceSynchronization2Features; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceSynchronization2Features( VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ = {} ) VULKAN_HPP_NOEXCEPT + : synchronization2( synchronization2_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSynchronization2Features( PhysicalDeviceSynchronization2Features const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSynchronization2Features( VkPhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSynchronization2Features( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceSynchronization2Features & + operator=( PhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSynchronization2Features & + operator=( VkPhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSynchronization2Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSynchronization2Features & + setSynchronization2( VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ ) VULKAN_HPP_NOEXCEPT + { + synchronization2 = synchronization2_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceSynchronization2Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceSynchronization2Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, synchronization2 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSynchronization2Features const & ) const = default; +#else + bool operator==( PhysicalDeviceSynchronization2Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( synchronization2 == rhs.synchronization2 ); +# endif + } + + bool operator!=( PhysicalDeviceSynchronization2Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSynchronization2Features; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 synchronization2 = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features ) == + sizeof( VkPhysicalDeviceSynchronization2Features ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceSynchronization2Features is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceSynchronization2Features; + }; + using PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2Features; + + struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT + { + using NativeType = VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment_ = {} ) VULKAN_HPP_NOEXCEPT + : texelBufferAlignment( texelBufferAlignment_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentFeaturesEXT( + PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTexelBufferAlignmentFeaturesEXT( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTexelBufferAlignmentFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceTexelBufferAlignmentFeaturesEXT & + operator=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTexelBufferAlignmentFeaturesEXT & + operator=( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT & + setTexelBufferAlignment( VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment_ ) VULKAN_HPP_NOEXCEPT + { + texelBufferAlignment = texelBufferAlignment_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, texelBufferAlignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( texelBufferAlignment == rhs.texelBufferAlignment ); +# endif + } + + bool operator!=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT ) == + sizeof( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceTexelBufferAlignmentFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceTexelBufferAlignmentFeaturesEXT; + }; + + struct PhysicalDeviceTexelBufferAlignmentProperties + { + using NativeType = VkPhysicalDeviceTexelBufferAlignmentProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceTexelBufferAlignmentProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentProperties( + VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 storageTexelBufferOffsetSingleTexelAlignment_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize uniformTexelBufferOffsetAlignmentBytes_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 uniformTexelBufferOffsetSingleTexelAlignment_ = {} ) VULKAN_HPP_NOEXCEPT + : storageTexelBufferOffsetAlignmentBytes( storageTexelBufferOffsetAlignmentBytes_ ) + , storageTexelBufferOffsetSingleTexelAlignment( storageTexelBufferOffsetSingleTexelAlignment_ ) + , uniformTexelBufferOffsetAlignmentBytes( uniformTexelBufferOffsetAlignmentBytes_ ) + , uniformTexelBufferOffsetSingleTexelAlignment( uniformTexelBufferOffsetSingleTexelAlignment_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentProperties( + PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTexelBufferAlignmentProperties( VkPhysicalDeviceTexelBufferAlignmentProperties const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTexelBufferAlignmentProperties( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceTexelBufferAlignmentProperties & + operator=( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTexelBufferAlignmentProperties & + operator=( VkPhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceTexelBufferAlignmentProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceTexelBufferAlignmentProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + storageTexelBufferOffsetAlignmentBytes, + storageTexelBufferOffsetSingleTexelAlignment, + uniformTexelBufferOffsetAlignmentBytes, + uniformTexelBufferOffsetSingleTexelAlignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTexelBufferAlignmentProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( storageTexelBufferOffsetAlignmentBytes == rhs.storageTexelBufferOffsetAlignmentBytes ) && + ( storageTexelBufferOffsetSingleTexelAlignment == rhs.storageTexelBufferOffsetSingleTexelAlignment ) && + ( uniformTexelBufferOffsetAlignmentBytes == rhs.uniformTexelBufferOffsetAlignmentBytes ) && + ( uniformTexelBufferOffsetSingleTexelAlignment == rhs.uniformTexelBufferOffsetSingleTexelAlignment ); +# endif + } + + bool operator!=( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentProperties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes = {}; + VULKAN_HPP_NAMESPACE::Bool32 storageTexelBufferOffsetSingleTexelAlignment = {}; + VULKAN_HPP_NAMESPACE::DeviceSize uniformTexelBufferOffsetAlignmentBytes = {}; + VULKAN_HPP_NAMESPACE::Bool32 uniformTexelBufferOffsetSingleTexelAlignment = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties ) == + sizeof( VkPhysicalDeviceTexelBufferAlignmentProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceTexelBufferAlignmentProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceTexelBufferAlignmentProperties; + }; + using PhysicalDeviceTexelBufferAlignmentPropertiesEXT = PhysicalDeviceTexelBufferAlignmentProperties; + + struct PhysicalDeviceTextureCompressionASTCHDRFeatures + { + using NativeType = VkPhysicalDeviceTextureCompressionASTCHDRFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTextureCompressionASTCHDRFeatures( + VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ = {} ) VULKAN_HPP_NOEXCEPT + : textureCompressionASTC_HDR( textureCompressionASTC_HDR_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTextureCompressionASTCHDRFeatures( + PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTextureCompressionASTCHDRFeatures( VkPhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTextureCompressionASTCHDRFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceTextureCompressionASTCHDRFeatures & + operator=( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTextureCompressionASTCHDRFeatures & + operator=( VkPhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeatures & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeatures & + setTextureCompressionASTC_HDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ ) VULKAN_HPP_NOEXCEPT + { + textureCompressionASTC_HDR = textureCompressionASTC_HDR_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, textureCompressionASTC_HDR ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTextureCompressionASTCHDRFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( textureCompressionASTC_HDR == rhs.textureCompressionASTC_HDR ); +# endif + } + + bool operator!=( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures ) == + sizeof( VkPhysicalDeviceTextureCompressionASTCHDRFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceTextureCompressionASTCHDRFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceTextureCompressionASTCHDRFeatures; + }; + using PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = PhysicalDeviceTextureCompressionASTCHDRFeatures; + + struct PhysicalDeviceTimelineSemaphoreFeatures + { + using NativeType = VkPhysicalDeviceTimelineSemaphoreFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceTimelineSemaphoreFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreFeatures( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ = {} ) + VULKAN_HPP_NOEXCEPT : timelineSemaphore( timelineSemaphore_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreFeatures( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTimelineSemaphoreFeatures( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTimelineSemaphoreFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceTimelineSemaphoreFeatures & + operator=( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTimelineSemaphoreFeatures & + operator=( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures & + setTimelineSemaphore( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ ) VULKAN_HPP_NOEXCEPT + { + timelineSemaphore = timelineSemaphore_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceTimelineSemaphoreFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceTimelineSemaphoreFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, timelineSemaphore ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTimelineSemaphoreFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( timelineSemaphore == rhs.timelineSemaphore ); +# endif + } + + bool operator!=( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTimelineSemaphoreFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures ) == + sizeof( VkPhysicalDeviceTimelineSemaphoreFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceTimelineSemaphoreFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceTimelineSemaphoreFeatures; + }; + using PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures; + + struct PhysicalDeviceTimelineSemaphoreProperties + { + using NativeType = VkPhysicalDeviceTimelineSemaphoreProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceTimelineSemaphoreProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreProperties( uint64_t maxTimelineSemaphoreValueDifference_ = {} ) + VULKAN_HPP_NOEXCEPT : maxTimelineSemaphoreValueDifference( maxTimelineSemaphoreValueDifference_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreProperties( + PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTimelineSemaphoreProperties( VkPhysicalDeviceTimelineSemaphoreProperties const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTimelineSemaphoreProperties( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceTimelineSemaphoreProperties & + operator=( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTimelineSemaphoreProperties & + operator=( VkPhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceTimelineSemaphoreProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceTimelineSemaphoreProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxTimelineSemaphoreValueDifference ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTimelineSemaphoreProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( maxTimelineSemaphoreValueDifference == rhs.maxTimelineSemaphoreValueDifference ); +# endif + } + + bool operator!=( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTimelineSemaphoreProperties; + void * pNext = {}; + uint64_t maxTimelineSemaphoreValueDifference = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties ) == + sizeof( VkPhysicalDeviceTimelineSemaphoreProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceTimelineSemaphoreProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceTimelineSemaphoreProperties; + }; + using PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties; + + struct PhysicalDeviceToolProperties + { + using NativeType = VkPhysicalDeviceToolProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceToolProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceToolProperties( + std::array const & name_ = {}, + std::array const & version_ = {}, + VULKAN_HPP_NAMESPACE::ToolPurposeFlags purposes_ = {}, + std::array const & description_ = {}, + std::array const & layer_ = {} ) VULKAN_HPP_NOEXCEPT + : name( name_ ) + , version( version_ ) + , purposes( purposes_ ) + , description( description_ ) + , layer( layer_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceToolProperties( PhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceToolProperties( VkPhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceToolProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceToolProperties & operator=( PhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceToolProperties & operator=( VkPhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceToolProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceToolProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + VULKAN_HPP_NAMESPACE::ToolPurposeFlags const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, name, version, purposes, description, layer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceToolProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceToolProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( name == rhs.name ) && ( version == rhs.version ) && + ( purposes == rhs.purposes ) && ( description == rhs.description ) && ( layer == rhs.layer ); +# endif + } + + bool operator!=( PhysicalDeviceToolProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceToolProperties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D name = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D version = {}; + VULKAN_HPP_NAMESPACE::ToolPurposeFlags purposes = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D description = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D layer = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties ) == + sizeof( VkPhysicalDeviceToolProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceToolProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceToolProperties; + }; + using PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolProperties; + + struct PhysicalDeviceTransformFeedbackFeaturesEXT + { + using NativeType = VkPhysicalDeviceTransformFeedbackFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 transformFeedback_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 geometryStreams_ = {} ) VULKAN_HPP_NOEXCEPT + : transformFeedback( transformFeedback_ ) + , geometryStreams( geometryStreams_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackFeaturesEXT( + PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTransformFeedbackFeaturesEXT( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTransformFeedbackFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceTransformFeedbackFeaturesEXT & + operator=( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTransformFeedbackFeaturesEXT & + operator=( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT & + setTransformFeedback( VULKAN_HPP_NAMESPACE::Bool32 transformFeedback_ ) VULKAN_HPP_NOEXCEPT + { + transformFeedback = transformFeedback_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT & + setGeometryStreams( VULKAN_HPP_NAMESPACE::Bool32 geometryStreams_ ) VULKAN_HPP_NOEXCEPT + { + geometryStreams = geometryStreams_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceTransformFeedbackFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceTransformFeedbackFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, transformFeedback, geometryStreams ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTransformFeedbackFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transformFeedback == rhs.transformFeedback ) && + ( geometryStreams == rhs.geometryStreams ); +# endif + } + + bool operator!=( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 transformFeedback = {}; + VULKAN_HPP_NAMESPACE::Bool32 geometryStreams = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT ) == + sizeof( VkPhysicalDeviceTransformFeedbackFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceTransformFeedbackFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceTransformFeedbackFeaturesEXT; + }; + + struct PhysicalDeviceTransformFeedbackPropertiesEXT + { + using NativeType = VkPhysicalDeviceTransformFeedbackPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackPropertiesEXT( + uint32_t maxTransformFeedbackStreams_ = {}, + uint32_t maxTransformFeedbackBuffers_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize maxTransformFeedbackBufferSize_ = {}, + uint32_t maxTransformFeedbackStreamDataSize_ = {}, + uint32_t maxTransformFeedbackBufferDataSize_ = {}, + uint32_t maxTransformFeedbackBufferDataStride_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackQueries_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackStreamsLinesTriangles_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackRasterizationStreamSelect_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackDraw_ = {} ) VULKAN_HPP_NOEXCEPT + : maxTransformFeedbackStreams( maxTransformFeedbackStreams_ ) + , maxTransformFeedbackBuffers( maxTransformFeedbackBuffers_ ) + , maxTransformFeedbackBufferSize( maxTransformFeedbackBufferSize_ ) + , maxTransformFeedbackStreamDataSize( maxTransformFeedbackStreamDataSize_ ) + , maxTransformFeedbackBufferDataSize( maxTransformFeedbackBufferDataSize_ ) + , maxTransformFeedbackBufferDataStride( maxTransformFeedbackBufferDataStride_ ) + , transformFeedbackQueries( transformFeedbackQueries_ ) + , transformFeedbackStreamsLinesTriangles( transformFeedbackStreamsLinesTriangles_ ) + , transformFeedbackRasterizationStreamSelect( transformFeedbackRasterizationStreamSelect_ ) + , transformFeedbackDraw( transformFeedbackDraw_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackPropertiesEXT( + PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTransformFeedbackPropertiesEXT( VkPhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTransformFeedbackPropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceTransformFeedbackPropertiesEXT & + operator=( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTransformFeedbackPropertiesEXT & + operator=( VkPhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceTransformFeedbackPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceTransformFeedbackPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxTransformFeedbackStreams, + maxTransformFeedbackBuffers, + maxTransformFeedbackBufferSize, + maxTransformFeedbackStreamDataSize, + maxTransformFeedbackBufferDataSize, + maxTransformFeedbackBufferDataStride, + transformFeedbackQueries, + transformFeedbackStreamsLinesTriangles, + transformFeedbackRasterizationStreamSelect, + transformFeedbackDraw ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTransformFeedbackPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( maxTransformFeedbackStreams == rhs.maxTransformFeedbackStreams ) && + ( maxTransformFeedbackBuffers == rhs.maxTransformFeedbackBuffers ) && + ( maxTransformFeedbackBufferSize == rhs.maxTransformFeedbackBufferSize ) && + ( maxTransformFeedbackStreamDataSize == rhs.maxTransformFeedbackStreamDataSize ) && + ( maxTransformFeedbackBufferDataSize == rhs.maxTransformFeedbackBufferDataSize ) && + ( maxTransformFeedbackBufferDataStride == rhs.maxTransformFeedbackBufferDataStride ) && + ( transformFeedbackQueries == rhs.transformFeedbackQueries ) && + ( transformFeedbackStreamsLinesTriangles == rhs.transformFeedbackStreamsLinesTriangles ) && + ( transformFeedbackRasterizationStreamSelect == rhs.transformFeedbackRasterizationStreamSelect ) && + ( transformFeedbackDraw == rhs.transformFeedbackDraw ); +# endif + } + + bool operator!=( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT; + void * pNext = {}; + uint32_t maxTransformFeedbackStreams = {}; + uint32_t maxTransformFeedbackBuffers = {}; + VULKAN_HPP_NAMESPACE::DeviceSize maxTransformFeedbackBufferSize = {}; + uint32_t maxTransformFeedbackStreamDataSize = {}; + uint32_t maxTransformFeedbackBufferDataSize = {}; + uint32_t maxTransformFeedbackBufferDataStride = {}; + VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackQueries = {}; + VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackStreamsLinesTriangles = {}; + VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackRasterizationStreamSelect = {}; + VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackDraw = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT ) == + sizeof( VkPhysicalDeviceTransformFeedbackPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceTransformFeedbackPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceTransformFeedbackPropertiesEXT; + }; + + struct PhysicalDeviceUniformBufferStandardLayoutFeatures + { + using NativeType = VkPhysicalDeviceUniformBufferStandardLayoutFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceUniformBufferStandardLayoutFeatures( + VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ = {} ) VULKAN_HPP_NOEXCEPT + : uniformBufferStandardLayout( uniformBufferStandardLayout_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceUniformBufferStandardLayoutFeatures( + PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceUniformBufferStandardLayoutFeatures( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceUniformBufferStandardLayoutFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceUniformBufferStandardLayoutFeatures & + operator=( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceUniformBufferStandardLayoutFeatures & + operator=( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures & + setUniformBufferStandardLayout( VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ ) VULKAN_HPP_NOEXCEPT + { + uniformBufferStandardLayout = uniformBufferStandardLayout_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, uniformBufferStandardLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceUniformBufferStandardLayoutFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( uniformBufferStandardLayout == rhs.uniformBufferStandardLayout ); +# endif + } + + bool operator!=( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures ) == + sizeof( VkPhysicalDeviceUniformBufferStandardLayoutFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceUniformBufferStandardLayoutFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceUniformBufferStandardLayoutFeatures; + }; + using PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = PhysicalDeviceUniformBufferStandardLayoutFeatures; + + struct PhysicalDeviceVariablePointersFeatures + { + using NativeType = VkPhysicalDeviceVariablePointersFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceVariablePointersFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceVariablePointersFeatures( VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ = {} ) VULKAN_HPP_NOEXCEPT + : variablePointersStorageBuffer( variablePointersStorageBuffer_ ) + , variablePointers( variablePointers_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVariablePointersFeatures( PhysicalDeviceVariablePointersFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVariablePointersFeatures( VkPhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVariablePointersFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceVariablePointersFeatures & + operator=( PhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVariablePointersFeatures & + operator=( VkPhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & setVariablePointersStorageBuffer( + VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ ) VULKAN_HPP_NOEXCEPT + { + variablePointersStorageBuffer = variablePointersStorageBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & + setVariablePointers( VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ ) VULKAN_HPP_NOEXCEPT + { + variablePointers = variablePointers_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceVariablePointersFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceVariablePointersFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, variablePointersStorageBuffer, variablePointers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVariablePointersFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceVariablePointersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer ) && + ( variablePointers == rhs.variablePointers ); +# endif + } + + bool operator!=( PhysicalDeviceVariablePointersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVariablePointersFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer = {}; + VULKAN_HPP_NAMESPACE::Bool32 variablePointers = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures ) == + sizeof( VkPhysicalDeviceVariablePointersFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceVariablePointersFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceVariablePointersFeatures; + }; + using PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures; + using PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures; + using PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures; + + struct PhysicalDeviceVertexAttributeDivisorFeaturesEXT + { + using NativeType = VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor_ = {} ) VULKAN_HPP_NOEXCEPT + : vertexAttributeInstanceRateDivisor( vertexAttributeInstanceRateDivisor_ ) + , vertexAttributeInstanceRateZeroDivisor( vertexAttributeInstanceRateZeroDivisor_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorFeaturesEXT( + PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVertexAttributeDivisorFeaturesEXT( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVertexAttributeDivisorFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceVertexAttributeDivisorFeaturesEXT & + operator=( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVertexAttributeDivisorFeaturesEXT & + operator=( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeaturesEXT & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeaturesEXT & setVertexAttributeInstanceRateDivisor( + VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor_ ) VULKAN_HPP_NOEXCEPT + { + vertexAttributeInstanceRateDivisor = vertexAttributeInstanceRateDivisor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeaturesEXT & setVertexAttributeInstanceRateZeroDivisor( + VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor_ ) VULKAN_HPP_NOEXCEPT + { + vertexAttributeInstanceRateZeroDivisor = vertexAttributeInstanceRateZeroDivisor_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vertexAttributeInstanceRateDivisor, vertexAttributeInstanceRateZeroDivisor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( vertexAttributeInstanceRateDivisor == rhs.vertexAttributeInstanceRateDivisor ) && + ( vertexAttributeInstanceRateZeroDivisor == rhs.vertexAttributeInstanceRateZeroDivisor ); +# endif + } + + bool operator!=( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor = {}; + VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT ) == + sizeof( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceVertexAttributeDivisorFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceVertexAttributeDivisorFeaturesEXT; + }; + + struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT + { + using NativeType = VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceVertexAttributeDivisorPropertiesEXT( uint32_t maxVertexAttribDivisor_ = {} ) VULKAN_HPP_NOEXCEPT + : maxVertexAttribDivisor( maxVertexAttribDivisor_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorPropertiesEXT( + PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVertexAttributeDivisorPropertiesEXT( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVertexAttributeDivisorPropertiesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceVertexAttributeDivisorPropertiesEXT & + operator=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVertexAttributeDivisorPropertiesEXT & + operator=( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxVertexAttribDivisor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( maxVertexAttribDivisor == rhs.maxVertexAttribDivisor ); +# endif + } + + bool operator!=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT; + void * pNext = {}; + uint32_t maxVertexAttribDivisor = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT ) == + sizeof( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceVertexAttributeDivisorPropertiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceVertexAttributeDivisorPropertiesEXT; + }; + + struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT + { + using NativeType = VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexInputDynamicStateFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 vertexInputDynamicState_ = {} ) VULKAN_HPP_NOEXCEPT + : vertexInputDynamicState( vertexInputDynamicState_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexInputDynamicStateFeaturesEXT( + PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVertexInputDynamicStateFeaturesEXT( VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVertexInputDynamicStateFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceVertexInputDynamicStateFeaturesEXT & + operator=( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVertexInputDynamicStateFeaturesEXT & + operator=( VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexInputDynamicStateFeaturesEXT & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexInputDynamicStateFeaturesEXT & + setVertexInputDynamicState( VULKAN_HPP_NAMESPACE::Bool32 vertexInputDynamicState_ ) VULKAN_HPP_NOEXCEPT + { + vertexInputDynamicState = vertexInputDynamicState_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vertexInputDynamicState ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( vertexInputDynamicState == rhs.vertexInputDynamicState ); +# endif + } + + bool operator!=( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 vertexInputDynamicState = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT ) == + sizeof( VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceVertexInputDynamicStateFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceVertexInputDynamicStateFeaturesEXT; + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoProfileKHR + { + using NativeType = VkVideoProfileKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoProfileKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoProfileKHR( VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR videoCodecOperation_ = + VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR::eInvalid, + VULKAN_HPP_NAMESPACE::VideoChromaSubsamplingFlagsKHR chromaSubsampling_ = {}, + VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR lumaBitDepth_ = {}, + VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR chromaBitDepth_ = {} ) VULKAN_HPP_NOEXCEPT + : videoCodecOperation( videoCodecOperation_ ) + , chromaSubsampling( chromaSubsampling_ ) + , lumaBitDepth( lumaBitDepth_ ) + , chromaBitDepth( chromaBitDepth_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoProfileKHR( VideoProfileKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoProfileKHR( VkVideoProfileKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoProfileKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoProfileKHR & operator=( VideoProfileKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoProfileKHR & operator=( VkVideoProfileKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoProfileKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileKHR & setVideoCodecOperation( + VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR videoCodecOperation_ ) VULKAN_HPP_NOEXCEPT + { + videoCodecOperation = videoCodecOperation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileKHR & setChromaSubsampling( + VULKAN_HPP_NAMESPACE::VideoChromaSubsamplingFlagsKHR chromaSubsampling_ ) VULKAN_HPP_NOEXCEPT + { + chromaSubsampling = chromaSubsampling_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileKHR & + setLumaBitDepth( VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR lumaBitDepth_ ) VULKAN_HPP_NOEXCEPT + { + lumaBitDepth = lumaBitDepth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileKHR & + setChromaBitDepth( VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR chromaBitDepth_ ) VULKAN_HPP_NOEXCEPT + { + chromaBitDepth = chromaBitDepth_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoProfileKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoProfileKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, videoCodecOperation, chromaSubsampling, lumaBitDepth, chromaBitDepth ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoProfileKHR const & ) const = default; +# else + bool operator==( VideoProfileKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoCodecOperation == rhs.videoCodecOperation ) && + ( chromaSubsampling == rhs.chromaSubsampling ) && ( lumaBitDepth == rhs.lumaBitDepth ) && + ( chromaBitDepth == rhs.chromaBitDepth ); +# endif + } + + bool operator!=( VideoProfileKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoProfileKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR videoCodecOperation = + VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR::eInvalid; + VULKAN_HPP_NAMESPACE::VideoChromaSubsamplingFlagsKHR chromaSubsampling = {}; + VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR lumaBitDepth = {}; + VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR chromaBitDepth = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoProfileKHR ) == sizeof( VkVideoProfileKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoProfileKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoProfileKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoProfilesKHR + { + using NativeType = VkVideoProfilesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoProfilesKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoProfilesKHR( uint32_t profileCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoProfileKHR * pProfiles_ = {} ) VULKAN_HPP_NOEXCEPT + : profileCount( profileCount_ ) + , pProfiles( pProfiles_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoProfilesKHR( VideoProfilesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoProfilesKHR( VkVideoProfilesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoProfilesKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoProfilesKHR & operator=( VideoProfilesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoProfilesKHR & operator=( VkVideoProfilesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoProfilesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfilesKHR & setProfileCount( uint32_t profileCount_ ) VULKAN_HPP_NOEXCEPT + { + profileCount = profileCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfilesKHR & + setPProfiles( const VULKAN_HPP_NAMESPACE::VideoProfileKHR * pProfiles_ ) VULKAN_HPP_NOEXCEPT + { + pProfiles = pProfiles_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoProfilesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoProfilesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, profileCount, pProfiles ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoProfilesKHR const & ) const = default; +# else + bool operator==( VideoProfilesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( profileCount == rhs.profileCount ) && + ( pProfiles == rhs.pProfiles ); +# endif + } + + bool operator!=( VideoProfilesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoProfilesKHR; + void * pNext = {}; + uint32_t profileCount = {}; + const VULKAN_HPP_NAMESPACE::VideoProfileKHR * pProfiles = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoProfilesKHR ) == sizeof( VkVideoProfilesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoProfilesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoProfilesKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct PhysicalDeviceVideoFormatInfoKHR + { + using NativeType = VkPhysicalDeviceVideoFormatInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVideoFormatInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoFormatInfoKHR( + VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_ = {}, + const VULKAN_HPP_NAMESPACE::VideoProfilesKHR * pVideoProfiles_ = {} ) VULKAN_HPP_NOEXCEPT + : imageUsage( imageUsage_ ) + , pVideoProfiles( pVideoProfiles_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceVideoFormatInfoKHR( PhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVideoFormatInfoKHR( VkPhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVideoFormatInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceVideoFormatInfoKHR & + operator=( PhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVideoFormatInfoKHR & operator=( VkPhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceVideoFormatInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceVideoFormatInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageUsage, pVideoProfiles ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVideoFormatInfoKHR const & ) const = default; +# else + bool operator==( PhysicalDeviceVideoFormatInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageUsage == rhs.imageUsage ) && + ( pVideoProfiles == rhs.pVideoProfiles ); +# endif + } + + bool operator!=( PhysicalDeviceVideoFormatInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVideoFormatInfoKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage = {}; + const VULKAN_HPP_NAMESPACE::VideoProfilesKHR * pVideoProfiles = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR ) == + sizeof( VkPhysicalDeviceVideoFormatInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceVideoFormatInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceVideoFormatInfoKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + struct PhysicalDeviceVulkan11Features + { + using NativeType = VkPhysicalDeviceVulkan11Features; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan11Features; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceVulkan11Features( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 multiview_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ = {} ) VULKAN_HPP_NOEXCEPT + : storageBuffer16BitAccess( storageBuffer16BitAccess_ ) + , uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ ) + , storagePushConstant16( storagePushConstant16_ ) + , storageInputOutput16( storageInputOutput16_ ) + , multiview( multiview_ ) + , multiviewGeometryShader( multiviewGeometryShader_ ) + , multiviewTessellationShader( multiviewTessellationShader_ ) + , variablePointersStorageBuffer( variablePointersStorageBuffer_ ) + , variablePointers( variablePointers_ ) + , protectedMemory( protectedMemory_ ) + , samplerYcbcrConversion( samplerYcbcrConversion_ ) + , shaderDrawParameters( shaderDrawParameters_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceVulkan11Features( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan11Features( VkPhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkan11Features( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceVulkan11Features & + operator=( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan11Features & operator=( VkPhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & + setStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT + { + storageBuffer16BitAccess = storageBuffer16BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setUniformAndStorageBuffer16BitAccess( + VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT + { + uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & + setStoragePushConstant16( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ ) VULKAN_HPP_NOEXCEPT + { + storagePushConstant16 = storagePushConstant16_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & + setStorageInputOutput16( VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ ) VULKAN_HPP_NOEXCEPT + { + storageInputOutput16 = storageInputOutput16_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & + setMultiview( VULKAN_HPP_NAMESPACE::Bool32 multiview_ ) VULKAN_HPP_NOEXCEPT + { + multiview = multiview_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & + setMultiviewGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ ) VULKAN_HPP_NOEXCEPT + { + multiviewGeometryShader = multiviewGeometryShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & + setMultiviewTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ ) VULKAN_HPP_NOEXCEPT + { + multiviewTessellationShader = multiviewTessellationShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setVariablePointersStorageBuffer( + VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ ) VULKAN_HPP_NOEXCEPT + { + variablePointersStorageBuffer = variablePointersStorageBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & + setVariablePointers( VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ ) VULKAN_HPP_NOEXCEPT + { + variablePointers = variablePointers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & + setProtectedMemory( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ ) VULKAN_HPP_NOEXCEPT + { + protectedMemory = protectedMemory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & + setSamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ ) VULKAN_HPP_NOEXCEPT + { + samplerYcbcrConversion = samplerYcbcrConversion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & + setShaderDrawParameters( VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ ) VULKAN_HPP_NOEXCEPT + { + shaderDrawParameters = shaderDrawParameters_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceVulkan11Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceVulkan11Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + storageBuffer16BitAccess, + uniformAndStorageBuffer16BitAccess, + storagePushConstant16, + storageInputOutput16, + multiview, + multiviewGeometryShader, + multiviewTessellationShader, + variablePointersStorageBuffer, + variablePointers, + protectedMemory, + samplerYcbcrConversion, + shaderDrawParameters ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVulkan11Features const & ) const = default; +#else + bool operator==( PhysicalDeviceVulkan11Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess ) && + ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess ) && + ( storagePushConstant16 == rhs.storagePushConstant16 ) && + ( storageInputOutput16 == rhs.storageInputOutput16 ) && ( multiview == rhs.multiview ) && + ( multiviewGeometryShader == rhs.multiviewGeometryShader ) && + ( multiviewTessellationShader == rhs.multiviewTessellationShader ) && + ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer ) && + ( variablePointers == rhs.variablePointers ) && ( protectedMemory == rhs.protectedMemory ) && + ( samplerYcbcrConversion == rhs.samplerYcbcrConversion ) && + ( shaderDrawParameters == rhs.shaderDrawParameters ); +# endif + } + + bool operator!=( PhysicalDeviceVulkan11Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan11Features; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess = {}; + VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess = {}; + VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 multiview = {}; + VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader = {}; + VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader = {}; + VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer = {}; + VULKAN_HPP_NAMESPACE::Bool32 variablePointers = {}; + VULKAN_HPP_NAMESPACE::Bool32 protectedMemory = {}; + VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features ) == + sizeof( VkPhysicalDeviceVulkan11Features ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkan11Features is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan11Features; + }; + + struct PhysicalDeviceVulkan11Properties + { + using NativeType = VkPhysicalDeviceVulkan11Properties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan11Properties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Properties( + std::array const & deviceUUID_ = {}, + std::array const & driverUUID_ = {}, + std::array const & deviceLUID_ = {}, + uint32_t deviceNodeMask_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 deviceLUIDValid_ = {}, + uint32_t subgroupSize_ = {}, + VULKAN_HPP_NAMESPACE::ShaderStageFlags subgroupSupportedStages_ = {}, + VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags subgroupSupportedOperations_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 subgroupQuadOperationsInAllStages_ = {}, + VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior_ = + VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes, + uint32_t maxMultiviewViewCount_ = {}, + uint32_t maxMultiviewInstanceIndex_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault_ = {}, + uint32_t maxPerSetDescriptors_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize_ = {} ) VULKAN_HPP_NOEXCEPT + : deviceUUID( deviceUUID_ ) + , driverUUID( driverUUID_ ) + , deviceLUID( deviceLUID_ ) + , deviceNodeMask( deviceNodeMask_ ) + , deviceLUIDValid( deviceLUIDValid_ ) + , subgroupSize( subgroupSize_ ) + , subgroupSupportedStages( subgroupSupportedStages_ ) + , subgroupSupportedOperations( subgroupSupportedOperations_ ) + , subgroupQuadOperationsInAllStages( subgroupQuadOperationsInAllStages_ ) + , pointClippingBehavior( pointClippingBehavior_ ) + , maxMultiviewViewCount( maxMultiviewViewCount_ ) + , maxMultiviewInstanceIndex( maxMultiviewInstanceIndex_ ) + , protectedNoFault( protectedNoFault_ ) + , maxPerSetDescriptors( maxPerSetDescriptors_ ) + , maxMemoryAllocationSize( maxMemoryAllocationSize_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceVulkan11Properties( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan11Properties( VkPhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkan11Properties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceVulkan11Properties & + operator=( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan11Properties & operator=( VkPhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceVulkan11Properties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceVulkan11Properties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, + VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::PointClippingBehavior const &, + uint32_t const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::DeviceSize const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + deviceUUID, + driverUUID, + deviceLUID, + deviceNodeMask, + deviceLUIDValid, + subgroupSize, + subgroupSupportedStages, + subgroupSupportedOperations, + subgroupQuadOperationsInAllStages, + pointClippingBehavior, + maxMultiviewViewCount, + maxMultiviewInstanceIndex, + protectedNoFault, + maxPerSetDescriptors, + maxMemoryAllocationSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVulkan11Properties const & ) const = default; +#else + bool operator==( PhysicalDeviceVulkan11Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceUUID == rhs.deviceUUID ) && + ( driverUUID == rhs.driverUUID ) && ( deviceLUID == rhs.deviceLUID ) && + ( deviceNodeMask == rhs.deviceNodeMask ) && ( deviceLUIDValid == rhs.deviceLUIDValid ) && + ( subgroupSize == rhs.subgroupSize ) && ( subgroupSupportedStages == rhs.subgroupSupportedStages ) && + ( subgroupSupportedOperations == rhs.subgroupSupportedOperations ) && + ( subgroupQuadOperationsInAllStages == rhs.subgroupQuadOperationsInAllStages ) && + ( pointClippingBehavior == rhs.pointClippingBehavior ) && + ( maxMultiviewViewCount == rhs.maxMultiviewViewCount ) && + ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex ) && + ( protectedNoFault == rhs.protectedNoFault ) && ( maxPerSetDescriptors == rhs.maxPerSetDescriptors ) && + ( maxMemoryAllocationSize == rhs.maxMemoryAllocationSize ); +# endif + } + + bool operator!=( PhysicalDeviceVulkan11Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan11Properties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D deviceUUID = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D driverUUID = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D deviceLUID = {}; + uint32_t deviceNodeMask = {}; + VULKAN_HPP_NAMESPACE::Bool32 deviceLUIDValid = {}; + uint32_t subgroupSize = {}; + VULKAN_HPP_NAMESPACE::ShaderStageFlags subgroupSupportedStages = {}; + VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags subgroupSupportedOperations = {}; + VULKAN_HPP_NAMESPACE::Bool32 subgroupQuadOperationsInAllStages = {}; + VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior = + VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes; + uint32_t maxMultiviewViewCount = {}; + uint32_t maxMultiviewInstanceIndex = {}; + VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault = {}; + uint32_t maxPerSetDescriptors = {}; + VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties ) == + sizeof( VkPhysicalDeviceVulkan11Properties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkan11Properties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan11Properties; + }; + + struct PhysicalDeviceVulkan12Features + { + using NativeType = VkPhysicalDeviceVulkan12Features; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan12Features; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan12Features( + VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 samplerFilterMinmax_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderOutputViewportIndex_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderOutputLayer_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 subgroupBroadcastDynamicId_ = {} ) VULKAN_HPP_NOEXCEPT + : samplerMirrorClampToEdge( samplerMirrorClampToEdge_ ) + , drawIndirectCount( drawIndirectCount_ ) + , storageBuffer8BitAccess( storageBuffer8BitAccess_ ) + , uniformAndStorageBuffer8BitAccess( uniformAndStorageBuffer8BitAccess_ ) + , storagePushConstant8( storagePushConstant8_ ) + , shaderBufferInt64Atomics( shaderBufferInt64Atomics_ ) + , shaderSharedInt64Atomics( shaderSharedInt64Atomics_ ) + , shaderFloat16( shaderFloat16_ ) + , shaderInt8( shaderInt8_ ) + , descriptorIndexing( descriptorIndexing_ ) + , shaderInputAttachmentArrayDynamicIndexing( shaderInputAttachmentArrayDynamicIndexing_ ) + , shaderUniformTexelBufferArrayDynamicIndexing( shaderUniformTexelBufferArrayDynamicIndexing_ ) + , shaderStorageTexelBufferArrayDynamicIndexing( shaderStorageTexelBufferArrayDynamicIndexing_ ) + , shaderUniformBufferArrayNonUniformIndexing( shaderUniformBufferArrayNonUniformIndexing_ ) + , shaderSampledImageArrayNonUniformIndexing( shaderSampledImageArrayNonUniformIndexing_ ) + , shaderStorageBufferArrayNonUniformIndexing( shaderStorageBufferArrayNonUniformIndexing_ ) + , shaderStorageImageArrayNonUniformIndexing( shaderStorageImageArrayNonUniformIndexing_ ) + , shaderInputAttachmentArrayNonUniformIndexing( shaderInputAttachmentArrayNonUniformIndexing_ ) + , shaderUniformTexelBufferArrayNonUniformIndexing( shaderUniformTexelBufferArrayNonUniformIndexing_ ) + , shaderStorageTexelBufferArrayNonUniformIndexing( shaderStorageTexelBufferArrayNonUniformIndexing_ ) + , descriptorBindingUniformBufferUpdateAfterBind( descriptorBindingUniformBufferUpdateAfterBind_ ) + , descriptorBindingSampledImageUpdateAfterBind( descriptorBindingSampledImageUpdateAfterBind_ ) + , descriptorBindingStorageImageUpdateAfterBind( descriptorBindingStorageImageUpdateAfterBind_ ) + , descriptorBindingStorageBufferUpdateAfterBind( descriptorBindingStorageBufferUpdateAfterBind_ ) + , descriptorBindingUniformTexelBufferUpdateAfterBind( descriptorBindingUniformTexelBufferUpdateAfterBind_ ) + , descriptorBindingStorageTexelBufferUpdateAfterBind( descriptorBindingStorageTexelBufferUpdateAfterBind_ ) + , descriptorBindingUpdateUnusedWhilePending( descriptorBindingUpdateUnusedWhilePending_ ) + , descriptorBindingPartiallyBound( descriptorBindingPartiallyBound_ ) + , descriptorBindingVariableDescriptorCount( descriptorBindingVariableDescriptorCount_ ) + , runtimeDescriptorArray( runtimeDescriptorArray_ ) + , samplerFilterMinmax( samplerFilterMinmax_ ) + , scalarBlockLayout( scalarBlockLayout_ ) + , imagelessFramebuffer( imagelessFramebuffer_ ) + , uniformBufferStandardLayout( uniformBufferStandardLayout_ ) + , shaderSubgroupExtendedTypes( shaderSubgroupExtendedTypes_ ) + , separateDepthStencilLayouts( separateDepthStencilLayouts_ ) + , hostQueryReset( hostQueryReset_ ) + , timelineSemaphore( timelineSemaphore_ ) + , bufferDeviceAddress( bufferDeviceAddress_ ) + , bufferDeviceAddressCaptureReplay( bufferDeviceAddressCaptureReplay_ ) + , bufferDeviceAddressMultiDevice( bufferDeviceAddressMultiDevice_ ) + , vulkanMemoryModel( vulkanMemoryModel_ ) + , vulkanMemoryModelDeviceScope( vulkanMemoryModelDeviceScope_ ) + , vulkanMemoryModelAvailabilityVisibilityChains( vulkanMemoryModelAvailabilityVisibilityChains_ ) + , shaderOutputViewportIndex( shaderOutputViewportIndex_ ) + , shaderOutputLayer( shaderOutputLayer_ ) + , subgroupBroadcastDynamicId( subgroupBroadcastDynamicId_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceVulkan12Features( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan12Features( VkPhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkan12Features( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceVulkan12Features & + operator=( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan12Features & operator=( VkPhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setSamplerMirrorClampToEdge( VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge_ ) VULKAN_HPP_NOEXCEPT + { + samplerMirrorClampToEdge = samplerMirrorClampToEdge_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setDrawIndirectCount( VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount_ ) VULKAN_HPP_NOEXCEPT + { + drawIndirectCount = drawIndirectCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT + { + storageBuffer8BitAccess = storageBuffer8BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setUniformAndStorageBuffer8BitAccess( + VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT + { + uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setStoragePushConstant8( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ ) VULKAN_HPP_NOEXCEPT + { + storagePushConstant8 = storagePushConstant8_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setShaderBufferInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ ) VULKAN_HPP_NOEXCEPT + { + shaderBufferInt64Atomics = shaderBufferInt64Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setShaderSharedInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ ) VULKAN_HPP_NOEXCEPT + { + shaderSharedInt64Atomics = shaderSharedInt64Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setShaderFloat16( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ ) VULKAN_HPP_NOEXCEPT + { + shaderFloat16 = shaderFloat16_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setShaderInt8( VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ ) VULKAN_HPP_NOEXCEPT + { + shaderInt8 = shaderInt8_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setDescriptorIndexing( VULKAN_HPP_NAMESPACE::Bool32 descriptorIndexing_ ) VULKAN_HPP_NOEXCEPT + { + descriptorIndexing = descriptorIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderInputAttachmentArrayDynamicIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderUniformTexelBufferArrayDynamicIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderStorageTexelBufferArrayDynamicIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderUniformBufferArrayNonUniformIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderSampledImageArrayNonUniformIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderStorageBufferArrayNonUniformIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderStorageImageArrayNonUniformIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderInputAttachmentArrayNonUniformIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderUniformTexelBufferArrayNonUniformIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderStorageTexelBufferArrayNonUniformIndexing( + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT + { + shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingUniformBufferUpdateAfterBind( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingSampledImageUpdateAfterBind( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingStorageImageUpdateAfterBind( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingStorageBufferUpdateAfterBind( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingUniformTexelBufferUpdateAfterBind( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingStorageTexelBufferUpdateAfterBind( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingUpdateUnusedWhilePending( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingPartiallyBound( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingVariableDescriptorCount( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setRuntimeDescriptorArray( VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ ) VULKAN_HPP_NOEXCEPT + { + runtimeDescriptorArray = runtimeDescriptorArray_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setSamplerFilterMinmax( VULKAN_HPP_NAMESPACE::Bool32 samplerFilterMinmax_ ) VULKAN_HPP_NOEXCEPT + { + samplerFilterMinmax = samplerFilterMinmax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setScalarBlockLayout( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT + { + scalarBlockLayout = scalarBlockLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setImagelessFramebuffer( VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ ) VULKAN_HPP_NOEXCEPT + { + imagelessFramebuffer = imagelessFramebuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setUniformBufferStandardLayout( VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ ) VULKAN_HPP_NOEXCEPT + { + uniformBufferStandardLayout = uniformBufferStandardLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setShaderSubgroupExtendedTypes( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ ) VULKAN_HPP_NOEXCEPT + { + shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setSeparateDepthStencilLayouts( VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ ) VULKAN_HPP_NOEXCEPT + { + separateDepthStencilLayouts = separateDepthStencilLayouts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setHostQueryReset( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ ) VULKAN_HPP_NOEXCEPT + { + hostQueryReset = hostQueryReset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setTimelineSemaphore( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ ) VULKAN_HPP_NOEXCEPT + { + timelineSemaphore = timelineSemaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddress = bufferDeviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setBufferDeviceAddressCaptureReplay( + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setBufferDeviceAddressMultiDevice( + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setVulkanMemoryModel( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ ) VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModel = vulkanMemoryModel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setVulkanMemoryModelDeviceScope( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ ) VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setVulkanMemoryModelAvailabilityVisibilityChains( + VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setShaderOutputViewportIndex( VULKAN_HPP_NAMESPACE::Bool32 shaderOutputViewportIndex_ ) VULKAN_HPP_NOEXCEPT + { + shaderOutputViewportIndex = shaderOutputViewportIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setShaderOutputLayer( VULKAN_HPP_NAMESPACE::Bool32 shaderOutputLayer_ ) VULKAN_HPP_NOEXCEPT + { + shaderOutputLayer = shaderOutputLayer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setSubgroupBroadcastDynamicId( VULKAN_HPP_NAMESPACE::Bool32 subgroupBroadcastDynamicId_ ) VULKAN_HPP_NOEXCEPT + { + subgroupBroadcastDynamicId = subgroupBroadcastDynamicId_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceVulkan12Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceVulkan12Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + samplerMirrorClampToEdge, + drawIndirectCount, + storageBuffer8BitAccess, + uniformAndStorageBuffer8BitAccess, + storagePushConstant8, + shaderBufferInt64Atomics, + shaderSharedInt64Atomics, + shaderFloat16, + shaderInt8, + descriptorIndexing, + shaderInputAttachmentArrayDynamicIndexing, + shaderUniformTexelBufferArrayDynamicIndexing, + shaderStorageTexelBufferArrayDynamicIndexing, + shaderUniformBufferArrayNonUniformIndexing, + shaderSampledImageArrayNonUniformIndexing, + shaderStorageBufferArrayNonUniformIndexing, + shaderStorageImageArrayNonUniformIndexing, + shaderInputAttachmentArrayNonUniformIndexing, + shaderUniformTexelBufferArrayNonUniformIndexing, + shaderStorageTexelBufferArrayNonUniformIndexing, + descriptorBindingUniformBufferUpdateAfterBind, + descriptorBindingSampledImageUpdateAfterBind, + descriptorBindingStorageImageUpdateAfterBind, + descriptorBindingStorageBufferUpdateAfterBind, + descriptorBindingUniformTexelBufferUpdateAfterBind, + descriptorBindingStorageTexelBufferUpdateAfterBind, + descriptorBindingUpdateUnusedWhilePending, + descriptorBindingPartiallyBound, + descriptorBindingVariableDescriptorCount, + runtimeDescriptorArray, + samplerFilterMinmax, + scalarBlockLayout, + imagelessFramebuffer, + uniformBufferStandardLayout, + shaderSubgroupExtendedTypes, + separateDepthStencilLayouts, + hostQueryReset, + timelineSemaphore, + bufferDeviceAddress, + bufferDeviceAddressCaptureReplay, + bufferDeviceAddressMultiDevice, + vulkanMemoryModel, + vulkanMemoryModelDeviceScope, + vulkanMemoryModelAvailabilityVisibilityChains, + shaderOutputViewportIndex, + shaderOutputLayer, + subgroupBroadcastDynamicId ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVulkan12Features const & ) const = default; +#else + bool operator==( PhysicalDeviceVulkan12Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( samplerMirrorClampToEdge == rhs.samplerMirrorClampToEdge ) && + ( drawIndirectCount == rhs.drawIndirectCount ) && + ( storageBuffer8BitAccess == rhs.storageBuffer8BitAccess ) && + ( uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess ) && + ( storagePushConstant8 == rhs.storagePushConstant8 ) && + ( shaderBufferInt64Atomics == rhs.shaderBufferInt64Atomics ) && + ( shaderSharedInt64Atomics == rhs.shaderSharedInt64Atomics ) && ( shaderFloat16 == rhs.shaderFloat16 ) && + ( shaderInt8 == rhs.shaderInt8 ) && ( descriptorIndexing == rhs.descriptorIndexing ) && + ( shaderInputAttachmentArrayDynamicIndexing == rhs.shaderInputAttachmentArrayDynamicIndexing ) && + ( shaderUniformTexelBufferArrayDynamicIndexing == rhs.shaderUniformTexelBufferArrayDynamicIndexing ) && + ( shaderStorageTexelBufferArrayDynamicIndexing == rhs.shaderStorageTexelBufferArrayDynamicIndexing ) && + ( shaderUniformBufferArrayNonUniformIndexing == rhs.shaderUniformBufferArrayNonUniformIndexing ) && + ( shaderSampledImageArrayNonUniformIndexing == rhs.shaderSampledImageArrayNonUniformIndexing ) && + ( shaderStorageBufferArrayNonUniformIndexing == rhs.shaderStorageBufferArrayNonUniformIndexing ) && + ( shaderStorageImageArrayNonUniformIndexing == rhs.shaderStorageImageArrayNonUniformIndexing ) && + ( shaderInputAttachmentArrayNonUniformIndexing == rhs.shaderInputAttachmentArrayNonUniformIndexing ) && + ( shaderUniformTexelBufferArrayNonUniformIndexing == + rhs.shaderUniformTexelBufferArrayNonUniformIndexing ) && + ( shaderStorageTexelBufferArrayNonUniformIndexing == + rhs.shaderStorageTexelBufferArrayNonUniformIndexing ) && + ( descriptorBindingUniformBufferUpdateAfterBind == rhs.descriptorBindingUniformBufferUpdateAfterBind ) && + ( descriptorBindingSampledImageUpdateAfterBind == rhs.descriptorBindingSampledImageUpdateAfterBind ) && + ( descriptorBindingStorageImageUpdateAfterBind == rhs.descriptorBindingStorageImageUpdateAfterBind ) && + ( descriptorBindingStorageBufferUpdateAfterBind == rhs.descriptorBindingStorageBufferUpdateAfterBind ) && + ( descriptorBindingUniformTexelBufferUpdateAfterBind == + rhs.descriptorBindingUniformTexelBufferUpdateAfterBind ) && + ( descriptorBindingStorageTexelBufferUpdateAfterBind == + rhs.descriptorBindingStorageTexelBufferUpdateAfterBind ) && + ( descriptorBindingUpdateUnusedWhilePending == rhs.descriptorBindingUpdateUnusedWhilePending ) && + ( descriptorBindingPartiallyBound == rhs.descriptorBindingPartiallyBound ) && + ( descriptorBindingVariableDescriptorCount == rhs.descriptorBindingVariableDescriptorCount ) && + ( runtimeDescriptorArray == rhs.runtimeDescriptorArray ) && + ( samplerFilterMinmax == rhs.samplerFilterMinmax ) && ( scalarBlockLayout == rhs.scalarBlockLayout ) && + ( imagelessFramebuffer == rhs.imagelessFramebuffer ) && + ( uniformBufferStandardLayout == rhs.uniformBufferStandardLayout ) && + ( shaderSubgroupExtendedTypes == rhs.shaderSubgroupExtendedTypes ) && + ( separateDepthStencilLayouts == rhs.separateDepthStencilLayouts ) && + ( hostQueryReset == rhs.hostQueryReset ) && ( timelineSemaphore == rhs.timelineSemaphore ) && + ( bufferDeviceAddress == rhs.bufferDeviceAddress ) && + ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay ) && + ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice ) && + ( vulkanMemoryModel == rhs.vulkanMemoryModel ) && + ( vulkanMemoryModelDeviceScope == rhs.vulkanMemoryModelDeviceScope ) && + ( vulkanMemoryModelAvailabilityVisibilityChains == rhs.vulkanMemoryModelAvailabilityVisibilityChains ) && + ( shaderOutputViewportIndex == rhs.shaderOutputViewportIndex ) && + ( shaderOutputLayer == rhs.shaderOutputLayer ) && + ( subgroupBroadcastDynamicId == rhs.subgroupBroadcastDynamicId ); +# endif + } + + bool operator!=( PhysicalDeviceVulkan12Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan12Features; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge = {}; + VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount = {}; + VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess = {}; + VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess = {}; + VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderInt8 = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount = {}; + VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray = {}; + VULKAN_HPP_NAMESPACE::Bool32 samplerFilterMinmax = {}; + VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout = {}; + VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer = {}; + VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes = {}; + VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts = {}; + VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset = {}; + VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore = {}; + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress = {}; + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay = {}; + VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice = {}; + VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel = {}; + VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope = {}; + VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderOutputViewportIndex = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderOutputLayer = {}; + VULKAN_HPP_NAMESPACE::Bool32 subgroupBroadcastDynamicId = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features ) == + sizeof( VkPhysicalDeviceVulkan12Features ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkan12Features is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan12Features; + }; + + struct PhysicalDeviceVulkan12Properties + { + using NativeType = VkPhysicalDeviceVulkan12Properties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan12Properties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Properties( + VULKAN_HPP_NAMESPACE::DriverId driverID_ = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary, + std::array const & driverName_ = {}, + std::array const & driverInfo_ = {}, + VULKAN_HPP_NAMESPACE::ConformanceVersion conformanceVersion_ = {}, + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence_ = + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly, + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence_ = + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly, + VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat32_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat64_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat32_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat64_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat32_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat64_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat32_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat64_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat16_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat32_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat64_ = {}, + uint32_t maxUpdateAfterBindDescriptorsInAllPools_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexingNative_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexingNative_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexingNative_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccessUpdateAfterBind_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 quadDivergentImplicitLod_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments_ = {}, + uint32_t maxPerStageUpdateAfterBindResources_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindSamplers_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindSampledImages_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindStorageImages_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments_ = {}, + VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes_ = {}, + VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 independentResolveNone_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 independentResolve_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping_ = {}, + uint64_t maxTimelineSemaphoreValueDifference_ = {}, + VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferIntegerColorSampleCounts_ = {} ) VULKAN_HPP_NOEXCEPT + : driverID( driverID_ ) + , driverName( driverName_ ) + , driverInfo( driverInfo_ ) + , conformanceVersion( conformanceVersion_ ) + , denormBehaviorIndependence( denormBehaviorIndependence_ ) + , roundingModeIndependence( roundingModeIndependence_ ) + , shaderSignedZeroInfNanPreserveFloat16( shaderSignedZeroInfNanPreserveFloat16_ ) + , shaderSignedZeroInfNanPreserveFloat32( shaderSignedZeroInfNanPreserveFloat32_ ) + , shaderSignedZeroInfNanPreserveFloat64( shaderSignedZeroInfNanPreserveFloat64_ ) + , shaderDenormPreserveFloat16( shaderDenormPreserveFloat16_ ) + , shaderDenormPreserveFloat32( shaderDenormPreserveFloat32_ ) + , shaderDenormPreserveFloat64( shaderDenormPreserveFloat64_ ) + , shaderDenormFlushToZeroFloat16( shaderDenormFlushToZeroFloat16_ ) + , shaderDenormFlushToZeroFloat32( shaderDenormFlushToZeroFloat32_ ) + , shaderDenormFlushToZeroFloat64( shaderDenormFlushToZeroFloat64_ ) + , shaderRoundingModeRTEFloat16( shaderRoundingModeRTEFloat16_ ) + , shaderRoundingModeRTEFloat32( shaderRoundingModeRTEFloat32_ ) + , shaderRoundingModeRTEFloat64( shaderRoundingModeRTEFloat64_ ) + , shaderRoundingModeRTZFloat16( shaderRoundingModeRTZFloat16_ ) + , shaderRoundingModeRTZFloat32( shaderRoundingModeRTZFloat32_ ) + , shaderRoundingModeRTZFloat64( shaderRoundingModeRTZFloat64_ ) + , maxUpdateAfterBindDescriptorsInAllPools( maxUpdateAfterBindDescriptorsInAllPools_ ) + , shaderUniformBufferArrayNonUniformIndexingNative( shaderUniformBufferArrayNonUniformIndexingNative_ ) + , shaderSampledImageArrayNonUniformIndexingNative( shaderSampledImageArrayNonUniformIndexingNative_ ) + , shaderStorageBufferArrayNonUniformIndexingNative( shaderStorageBufferArrayNonUniformIndexingNative_ ) + , shaderStorageImageArrayNonUniformIndexingNative( shaderStorageImageArrayNonUniformIndexingNative_ ) + , shaderInputAttachmentArrayNonUniformIndexingNative( shaderInputAttachmentArrayNonUniformIndexingNative_ ) + , robustBufferAccessUpdateAfterBind( robustBufferAccessUpdateAfterBind_ ) + , quadDivergentImplicitLod( quadDivergentImplicitLod_ ) + , maxPerStageDescriptorUpdateAfterBindSamplers( maxPerStageDescriptorUpdateAfterBindSamplers_ ) + , maxPerStageDescriptorUpdateAfterBindUniformBuffers( maxPerStageDescriptorUpdateAfterBindUniformBuffers_ ) + , maxPerStageDescriptorUpdateAfterBindStorageBuffers( maxPerStageDescriptorUpdateAfterBindStorageBuffers_ ) + , maxPerStageDescriptorUpdateAfterBindSampledImages( maxPerStageDescriptorUpdateAfterBindSampledImages_ ) + , maxPerStageDescriptorUpdateAfterBindStorageImages( maxPerStageDescriptorUpdateAfterBindStorageImages_ ) + , maxPerStageDescriptorUpdateAfterBindInputAttachments( maxPerStageDescriptorUpdateAfterBindInputAttachments_ ) + , maxPerStageUpdateAfterBindResources( maxPerStageUpdateAfterBindResources_ ) + , maxDescriptorSetUpdateAfterBindSamplers( maxDescriptorSetUpdateAfterBindSamplers_ ) + , maxDescriptorSetUpdateAfterBindUniformBuffers( maxDescriptorSetUpdateAfterBindUniformBuffers_ ) + , maxDescriptorSetUpdateAfterBindUniformBuffersDynamic( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ ) + , maxDescriptorSetUpdateAfterBindStorageBuffers( maxDescriptorSetUpdateAfterBindStorageBuffers_ ) + , maxDescriptorSetUpdateAfterBindStorageBuffersDynamic( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ ) + , maxDescriptorSetUpdateAfterBindSampledImages( maxDescriptorSetUpdateAfterBindSampledImages_ ) + , maxDescriptorSetUpdateAfterBindStorageImages( maxDescriptorSetUpdateAfterBindStorageImages_ ) + , maxDescriptorSetUpdateAfterBindInputAttachments( maxDescriptorSetUpdateAfterBindInputAttachments_ ) + , supportedDepthResolveModes( supportedDepthResolveModes_ ) + , supportedStencilResolveModes( supportedStencilResolveModes_ ) + , independentResolveNone( independentResolveNone_ ) + , independentResolve( independentResolve_ ) + , filterMinmaxSingleComponentFormats( filterMinmaxSingleComponentFormats_ ) + , filterMinmaxImageComponentMapping( filterMinmaxImageComponentMapping_ ) + , maxTimelineSemaphoreValueDifference( maxTimelineSemaphoreValueDifference_ ) + , framebufferIntegerColorSampleCounts( framebufferIntegerColorSampleCounts_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceVulkan12Properties( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan12Properties( VkPhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkan12Properties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceVulkan12Properties & + operator=( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan12Properties & operator=( VkPhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceVulkan12Properties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceVulkan12Properties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + VULKAN_HPP_NAMESPACE::ConformanceVersion const &, + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &, + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::ResolveModeFlags const &, + VULKAN_HPP_NAMESPACE::ResolveModeFlags const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + uint64_t const &, + VULKAN_HPP_NAMESPACE::SampleCountFlags const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + driverID, + driverName, + driverInfo, + conformanceVersion, + denormBehaviorIndependence, + roundingModeIndependence, + shaderSignedZeroInfNanPreserveFloat16, + shaderSignedZeroInfNanPreserveFloat32, + shaderSignedZeroInfNanPreserveFloat64, + shaderDenormPreserveFloat16, + shaderDenormPreserveFloat32, + shaderDenormPreserveFloat64, + shaderDenormFlushToZeroFloat16, + shaderDenormFlushToZeroFloat32, + shaderDenormFlushToZeroFloat64, + shaderRoundingModeRTEFloat16, + shaderRoundingModeRTEFloat32, + shaderRoundingModeRTEFloat64, + shaderRoundingModeRTZFloat16, + shaderRoundingModeRTZFloat32, + shaderRoundingModeRTZFloat64, + maxUpdateAfterBindDescriptorsInAllPools, + shaderUniformBufferArrayNonUniformIndexingNative, + shaderSampledImageArrayNonUniformIndexingNative, + shaderStorageBufferArrayNonUniformIndexingNative, + shaderStorageImageArrayNonUniformIndexingNative, + shaderInputAttachmentArrayNonUniformIndexingNative, + robustBufferAccessUpdateAfterBind, + quadDivergentImplicitLod, + maxPerStageDescriptorUpdateAfterBindSamplers, + maxPerStageDescriptorUpdateAfterBindUniformBuffers, + maxPerStageDescriptorUpdateAfterBindStorageBuffers, + maxPerStageDescriptorUpdateAfterBindSampledImages, + maxPerStageDescriptorUpdateAfterBindStorageImages, + maxPerStageDescriptorUpdateAfterBindInputAttachments, + maxPerStageUpdateAfterBindResources, + maxDescriptorSetUpdateAfterBindSamplers, + maxDescriptorSetUpdateAfterBindUniformBuffers, + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic, + maxDescriptorSetUpdateAfterBindStorageBuffers, + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic, + maxDescriptorSetUpdateAfterBindSampledImages, + maxDescriptorSetUpdateAfterBindStorageImages, + maxDescriptorSetUpdateAfterBindInputAttachments, + supportedDepthResolveModes, + supportedStencilResolveModes, + independentResolveNone, + independentResolve, + filterMinmaxSingleComponentFormats, + filterMinmaxImageComponentMapping, + maxTimelineSemaphoreValueDifference, + framebufferIntegerColorSampleCounts ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVulkan12Properties const & ) const = default; +#else + bool operator==( PhysicalDeviceVulkan12Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( driverID == rhs.driverID ) && + ( driverName == rhs.driverName ) && ( driverInfo == rhs.driverInfo ) && + ( conformanceVersion == rhs.conformanceVersion ) && + ( denormBehaviorIndependence == rhs.denormBehaviorIndependence ) && + ( roundingModeIndependence == rhs.roundingModeIndependence ) && + ( shaderSignedZeroInfNanPreserveFloat16 == rhs.shaderSignedZeroInfNanPreserveFloat16 ) && + ( shaderSignedZeroInfNanPreserveFloat32 == rhs.shaderSignedZeroInfNanPreserveFloat32 ) && + ( shaderSignedZeroInfNanPreserveFloat64 == rhs.shaderSignedZeroInfNanPreserveFloat64 ) && + ( shaderDenormPreserveFloat16 == rhs.shaderDenormPreserveFloat16 ) && + ( shaderDenormPreserveFloat32 == rhs.shaderDenormPreserveFloat32 ) && + ( shaderDenormPreserveFloat64 == rhs.shaderDenormPreserveFloat64 ) && + ( shaderDenormFlushToZeroFloat16 == rhs.shaderDenormFlushToZeroFloat16 ) && + ( shaderDenormFlushToZeroFloat32 == rhs.shaderDenormFlushToZeroFloat32 ) && + ( shaderDenormFlushToZeroFloat64 == rhs.shaderDenormFlushToZeroFloat64 ) && + ( shaderRoundingModeRTEFloat16 == rhs.shaderRoundingModeRTEFloat16 ) && + ( shaderRoundingModeRTEFloat32 == rhs.shaderRoundingModeRTEFloat32 ) && + ( shaderRoundingModeRTEFloat64 == rhs.shaderRoundingModeRTEFloat64 ) && + ( shaderRoundingModeRTZFloat16 == rhs.shaderRoundingModeRTZFloat16 ) && + ( shaderRoundingModeRTZFloat32 == rhs.shaderRoundingModeRTZFloat32 ) && + ( shaderRoundingModeRTZFloat64 == rhs.shaderRoundingModeRTZFloat64 ) && + ( maxUpdateAfterBindDescriptorsInAllPools == rhs.maxUpdateAfterBindDescriptorsInAllPools ) && + ( shaderUniformBufferArrayNonUniformIndexingNative == + rhs.shaderUniformBufferArrayNonUniformIndexingNative ) && + ( shaderSampledImageArrayNonUniformIndexingNative == + rhs.shaderSampledImageArrayNonUniformIndexingNative ) && + ( shaderStorageBufferArrayNonUniformIndexingNative == + rhs.shaderStorageBufferArrayNonUniformIndexingNative ) && + ( shaderStorageImageArrayNonUniformIndexingNative == + rhs.shaderStorageImageArrayNonUniformIndexingNative ) && + ( shaderInputAttachmentArrayNonUniformIndexingNative == + rhs.shaderInputAttachmentArrayNonUniformIndexingNative ) && + ( robustBufferAccessUpdateAfterBind == rhs.robustBufferAccessUpdateAfterBind ) && + ( quadDivergentImplicitLod == rhs.quadDivergentImplicitLod ) && + ( maxPerStageDescriptorUpdateAfterBindSamplers == rhs.maxPerStageDescriptorUpdateAfterBindSamplers ) && + ( maxPerStageDescriptorUpdateAfterBindUniformBuffers == + rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers ) && + ( maxPerStageDescriptorUpdateAfterBindStorageBuffers == + rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers ) && + ( maxPerStageDescriptorUpdateAfterBindSampledImages == + rhs.maxPerStageDescriptorUpdateAfterBindSampledImages ) && + ( maxPerStageDescriptorUpdateAfterBindStorageImages == + rhs.maxPerStageDescriptorUpdateAfterBindStorageImages ) && + ( maxPerStageDescriptorUpdateAfterBindInputAttachments == + rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments ) && + ( maxPerStageUpdateAfterBindResources == rhs.maxPerStageUpdateAfterBindResources ) && + ( maxDescriptorSetUpdateAfterBindSamplers == rhs.maxDescriptorSetUpdateAfterBindSamplers ) && + ( maxDescriptorSetUpdateAfterBindUniformBuffers == rhs.maxDescriptorSetUpdateAfterBindUniformBuffers ) && + ( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic == + rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ) && + ( maxDescriptorSetUpdateAfterBindStorageBuffers == rhs.maxDescriptorSetUpdateAfterBindStorageBuffers ) && + ( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic == + rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ) && + ( maxDescriptorSetUpdateAfterBindSampledImages == rhs.maxDescriptorSetUpdateAfterBindSampledImages ) && + ( maxDescriptorSetUpdateAfterBindStorageImages == rhs.maxDescriptorSetUpdateAfterBindStorageImages ) && + ( maxDescriptorSetUpdateAfterBindInputAttachments == + rhs.maxDescriptorSetUpdateAfterBindInputAttachments ) && + ( supportedDepthResolveModes == rhs.supportedDepthResolveModes ) && + ( supportedStencilResolveModes == rhs.supportedStencilResolveModes ) && + ( independentResolveNone == rhs.independentResolveNone ) && + ( independentResolve == rhs.independentResolve ) && + ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats ) && + ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping ) && + ( maxTimelineSemaphoreValueDifference == rhs.maxTimelineSemaphoreValueDifference ) && + ( framebufferIntegerColorSampleCounts == rhs.framebufferIntegerColorSampleCounts ); +# endif + } + + bool operator!=( PhysicalDeviceVulkan12Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan12Properties; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::DriverId driverID = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D driverName = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D driverInfo = {}; + VULKAN_HPP_NAMESPACE::ConformanceVersion conformanceVersion = {}; + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence = + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly; + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence = + VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly; + VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat32 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat64 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat32 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat64 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat32 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat64 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat32 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat64 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat16 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat32 = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat64 = {}; + uint32_t maxUpdateAfterBindDescriptorsInAllPools = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexingNative = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexingNative = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexingNative = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative = {}; + VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccessUpdateAfterBind = {}; + VULKAN_HPP_NAMESPACE::Bool32 quadDivergentImplicitLod = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments = {}; + uint32_t maxPerStageUpdateAfterBindResources = {}; + uint32_t maxDescriptorSetUpdateAfterBindSamplers = {}; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers = {}; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = {}; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers = {}; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = {}; + uint32_t maxDescriptorSetUpdateAfterBindSampledImages = {}; + uint32_t maxDescriptorSetUpdateAfterBindStorageImages = {}; + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments = {}; + VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes = {}; + VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes = {}; + VULKAN_HPP_NAMESPACE::Bool32 independentResolveNone = {}; + VULKAN_HPP_NAMESPACE::Bool32 independentResolve = {}; + VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats = {}; + VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping = {}; + uint64_t maxTimelineSemaphoreValueDifference = {}; + VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferIntegerColorSampleCounts = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties ) == + sizeof( VkPhysicalDeviceVulkan12Properties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkan12Properties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan12Properties; + }; + + struct PhysicalDeviceVulkan13Features + { + using NativeType = VkPhysicalDeviceVulkan13Features; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan13Features; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Features( + VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 privateData_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ = {} ) VULKAN_HPP_NOEXCEPT + : robustImageAccess( robustImageAccess_ ) + , inlineUniformBlock( inlineUniformBlock_ ) + , descriptorBindingInlineUniformBlockUpdateAfterBind( descriptorBindingInlineUniformBlockUpdateAfterBind_ ) + , pipelineCreationCacheControl( pipelineCreationCacheControl_ ) + , privateData( privateData_ ) + , shaderDemoteToHelperInvocation( shaderDemoteToHelperInvocation_ ) + , shaderTerminateInvocation( shaderTerminateInvocation_ ) + , subgroupSizeControl( subgroupSizeControl_ ) + , computeFullSubgroups( computeFullSubgroups_ ) + , synchronization2( synchronization2_ ) + , textureCompressionASTC_HDR( textureCompressionASTC_HDR_ ) + , shaderZeroInitializeWorkgroupMemory( shaderZeroInitializeWorkgroupMemory_ ) + , dynamicRendering( dynamicRendering_ ) + , shaderIntegerDotProduct( shaderIntegerDotProduct_ ) + , maintenance4( maintenance4_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceVulkan13Features( PhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan13Features( VkPhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkan13Features( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceVulkan13Features & + operator=( PhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan13Features & operator=( VkPhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & + setRobustImageAccess( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ ) VULKAN_HPP_NOEXCEPT + { + robustImageAccess = robustImageAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & + setInlineUniformBlock( VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_ ) VULKAN_HPP_NOEXCEPT + { + inlineUniformBlock = inlineUniformBlock_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setDescriptorBindingInlineUniformBlockUpdateAfterBind( + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT + { + descriptorBindingInlineUniformBlockUpdateAfterBind = descriptorBindingInlineUniformBlockUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & + setPipelineCreationCacheControl( VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ ) VULKAN_HPP_NOEXCEPT + { + pipelineCreationCacheControl = pipelineCreationCacheControl_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & + setPrivateData( VULKAN_HPP_NAMESPACE::Bool32 privateData_ ) VULKAN_HPP_NOEXCEPT + { + privateData = privateData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setShaderDemoteToHelperInvocation( + VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ ) VULKAN_HPP_NOEXCEPT + { + shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & + setShaderTerminateInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ ) VULKAN_HPP_NOEXCEPT + { + shaderTerminateInvocation = shaderTerminateInvocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & + setSubgroupSizeControl( VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_ ) VULKAN_HPP_NOEXCEPT + { + subgroupSizeControl = subgroupSizeControl_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & + setComputeFullSubgroups( VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ ) VULKAN_HPP_NOEXCEPT + { + computeFullSubgroups = computeFullSubgroups_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & + setSynchronization2( VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ ) VULKAN_HPP_NOEXCEPT + { + synchronization2 = synchronization2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & + setTextureCompressionASTC_HDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ ) VULKAN_HPP_NOEXCEPT + { + textureCompressionASTC_HDR = textureCompressionASTC_HDR_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setShaderZeroInitializeWorkgroupMemory( + VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ ) VULKAN_HPP_NOEXCEPT + { + shaderZeroInitializeWorkgroupMemory = shaderZeroInitializeWorkgroupMemory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & + setDynamicRendering( VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ ) VULKAN_HPP_NOEXCEPT + { + dynamicRendering = dynamicRendering_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & + setShaderIntegerDotProduct( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ ) VULKAN_HPP_NOEXCEPT + { + shaderIntegerDotProduct = shaderIntegerDotProduct_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & + setMaintenance4( VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ ) VULKAN_HPP_NOEXCEPT + { + maintenance4 = maintenance4_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceVulkan13Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceVulkan13Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + robustImageAccess, + inlineUniformBlock, + descriptorBindingInlineUniformBlockUpdateAfterBind, + pipelineCreationCacheControl, + privateData, + shaderDemoteToHelperInvocation, + shaderTerminateInvocation, + subgroupSizeControl, + computeFullSubgroups, + synchronization2, + textureCompressionASTC_HDR, + shaderZeroInitializeWorkgroupMemory, + dynamicRendering, + shaderIntegerDotProduct, + maintenance4 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVulkan13Features const & ) const = default; +#else + bool operator==( PhysicalDeviceVulkan13Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( robustImageAccess == rhs.robustImageAccess ) && + ( inlineUniformBlock == rhs.inlineUniformBlock ) && + ( descriptorBindingInlineUniformBlockUpdateAfterBind == + rhs.descriptorBindingInlineUniformBlockUpdateAfterBind ) && + ( pipelineCreationCacheControl == rhs.pipelineCreationCacheControl ) && + ( privateData == rhs.privateData ) && + ( shaderDemoteToHelperInvocation == rhs.shaderDemoteToHelperInvocation ) && + ( shaderTerminateInvocation == rhs.shaderTerminateInvocation ) && + ( subgroupSizeControl == rhs.subgroupSizeControl ) && + ( computeFullSubgroups == rhs.computeFullSubgroups ) && ( synchronization2 == rhs.synchronization2 ) && + ( textureCompressionASTC_HDR == rhs.textureCompressionASTC_HDR ) && + ( shaderZeroInitializeWorkgroupMemory == rhs.shaderZeroInitializeWorkgroupMemory ) && + ( dynamicRendering == rhs.dynamicRendering ) && + ( shaderIntegerDotProduct == rhs.shaderIntegerDotProduct ) && ( maintenance4 == rhs.maintenance4 ); +# endif + } + + bool operator!=( PhysicalDeviceVulkan13Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan13Features; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess = {}; + VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock = {}; + VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind = {}; + VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl = {}; + VULKAN_HPP_NAMESPACE::Bool32 privateData = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation = {}; + VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl = {}; + VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups = {}; + VULKAN_HPP_NAMESPACE::Bool32 synchronization2 = {}; + VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory = {}; + VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct = {}; + VULKAN_HPP_NAMESPACE::Bool32 maintenance4 = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features ) == + sizeof( VkPhysicalDeviceVulkan13Features ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkan13Features is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan13Features; + }; + + struct PhysicalDeviceVulkan13Properties + { + using NativeType = VkPhysicalDeviceVulkan13Properties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan13Properties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Properties( + uint32_t minSubgroupSize_ = {}, + uint32_t maxSubgroupSize_ = {}, + uint32_t maxComputeWorkgroupSubgroups_ = {}, + VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages_ = {}, + uint32_t maxInlineUniformBlockSize_ = {}, + uint32_t maxPerStageDescriptorInlineUniformBlocks_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ = {}, + uint32_t maxDescriptorSetInlineUniformBlocks_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ = {}, + uint32_t maxInlineUniformTotalSize_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 storageTexelBufferOffsetSingleTexelAlignment_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize uniformTexelBufferOffsetAlignmentBytes_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 uniformTexelBufferOffsetSingleTexelAlignment_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize maxBufferSize_ = {} ) VULKAN_HPP_NOEXCEPT + : minSubgroupSize( minSubgroupSize_ ) + , maxSubgroupSize( maxSubgroupSize_ ) + , maxComputeWorkgroupSubgroups( maxComputeWorkgroupSubgroups_ ) + , requiredSubgroupSizeStages( requiredSubgroupSizeStages_ ) + , maxInlineUniformBlockSize( maxInlineUniformBlockSize_ ) + , maxPerStageDescriptorInlineUniformBlocks( maxPerStageDescriptorInlineUniformBlocks_ ) + , maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks( + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ ) + , maxDescriptorSetInlineUniformBlocks( maxDescriptorSetInlineUniformBlocks_ ) + , maxDescriptorSetUpdateAfterBindInlineUniformBlocks( maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ ) + , maxInlineUniformTotalSize( maxInlineUniformTotalSize_ ) + , integerDotProduct8BitUnsignedAccelerated( integerDotProduct8BitUnsignedAccelerated_ ) + , integerDotProduct8BitSignedAccelerated( integerDotProduct8BitSignedAccelerated_ ) + , integerDotProduct8BitMixedSignednessAccelerated( integerDotProduct8BitMixedSignednessAccelerated_ ) + , integerDotProduct4x8BitPackedUnsignedAccelerated( integerDotProduct4x8BitPackedUnsignedAccelerated_ ) + , integerDotProduct4x8BitPackedSignedAccelerated( integerDotProduct4x8BitPackedSignedAccelerated_ ) + , integerDotProduct4x8BitPackedMixedSignednessAccelerated( + integerDotProduct4x8BitPackedMixedSignednessAccelerated_ ) + , integerDotProduct16BitUnsignedAccelerated( integerDotProduct16BitUnsignedAccelerated_ ) + , integerDotProduct16BitSignedAccelerated( integerDotProduct16BitSignedAccelerated_ ) + , integerDotProduct16BitMixedSignednessAccelerated( integerDotProduct16BitMixedSignednessAccelerated_ ) + , integerDotProduct32BitUnsignedAccelerated( integerDotProduct32BitUnsignedAccelerated_ ) + , integerDotProduct32BitSignedAccelerated( integerDotProduct32BitSignedAccelerated_ ) + , integerDotProduct32BitMixedSignednessAccelerated( integerDotProduct32BitMixedSignednessAccelerated_ ) + , integerDotProduct64BitUnsignedAccelerated( integerDotProduct64BitUnsignedAccelerated_ ) + , integerDotProduct64BitSignedAccelerated( integerDotProduct64BitSignedAccelerated_ ) + , integerDotProduct64BitMixedSignednessAccelerated( integerDotProduct64BitMixedSignednessAccelerated_ ) + , integerDotProductAccumulatingSaturating8BitUnsignedAccelerated( + integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ ) + , integerDotProductAccumulatingSaturating8BitSignedAccelerated( + integerDotProductAccumulatingSaturating8BitSignedAccelerated_ ) + , integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated( + integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ ) + , integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated( + integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ ) + , integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated( + integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ ) + , integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated( + integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ ) + , integerDotProductAccumulatingSaturating16BitUnsignedAccelerated( + integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ ) + , integerDotProductAccumulatingSaturating16BitSignedAccelerated( + integerDotProductAccumulatingSaturating16BitSignedAccelerated_ ) + , integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated( + integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ ) + , integerDotProductAccumulatingSaturating32BitUnsignedAccelerated( + integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ ) + , integerDotProductAccumulatingSaturating32BitSignedAccelerated( + integerDotProductAccumulatingSaturating32BitSignedAccelerated_ ) + , integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated( + integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ ) + , integerDotProductAccumulatingSaturating64BitUnsignedAccelerated( + integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ ) + , integerDotProductAccumulatingSaturating64BitSignedAccelerated( + integerDotProductAccumulatingSaturating64BitSignedAccelerated_ ) + , integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated( + integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ ) + , storageTexelBufferOffsetAlignmentBytes( storageTexelBufferOffsetAlignmentBytes_ ) + , storageTexelBufferOffsetSingleTexelAlignment( storageTexelBufferOffsetSingleTexelAlignment_ ) + , uniformTexelBufferOffsetAlignmentBytes( uniformTexelBufferOffsetAlignmentBytes_ ) + , uniformTexelBufferOffsetSingleTexelAlignment( uniformTexelBufferOffsetSingleTexelAlignment_ ) + , maxBufferSize( maxBufferSize_ ) + {} + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceVulkan13Properties( PhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan13Properties( VkPhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkan13Properties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceVulkan13Properties & + operator=( PhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan13Properties & operator=( VkPhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPhysicalDeviceVulkan13Properties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceVulkan13Properties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + minSubgroupSize, + maxSubgroupSize, + maxComputeWorkgroupSubgroups, + requiredSubgroupSizeStages, + maxInlineUniformBlockSize, + maxPerStageDescriptorInlineUniformBlocks, + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks, + maxDescriptorSetInlineUniformBlocks, + maxDescriptorSetUpdateAfterBindInlineUniformBlocks, + maxInlineUniformTotalSize, + integerDotProduct8BitUnsignedAccelerated, + integerDotProduct8BitSignedAccelerated, + integerDotProduct8BitMixedSignednessAccelerated, + integerDotProduct4x8BitPackedUnsignedAccelerated, + integerDotProduct4x8BitPackedSignedAccelerated, + integerDotProduct4x8BitPackedMixedSignednessAccelerated, + integerDotProduct16BitUnsignedAccelerated, + integerDotProduct16BitSignedAccelerated, + integerDotProduct16BitMixedSignednessAccelerated, + integerDotProduct32BitUnsignedAccelerated, + integerDotProduct32BitSignedAccelerated, + integerDotProduct32BitMixedSignednessAccelerated, + integerDotProduct64BitUnsignedAccelerated, + integerDotProduct64BitSignedAccelerated, + integerDotProduct64BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating8BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating8BitSignedAccelerated, + integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated, + integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated, + integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating16BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating16BitSignedAccelerated, + integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating32BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating32BitSignedAccelerated, + integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating64BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating64BitSignedAccelerated, + integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated, + storageTexelBufferOffsetAlignmentBytes, + storageTexelBufferOffsetSingleTexelAlignment, + uniformTexelBufferOffsetAlignmentBytes, + uniformTexelBufferOffsetSingleTexelAlignment, + maxBufferSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVulkan13Properties const & ) const = default; +#else + bool operator==( PhysicalDeviceVulkan13Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minSubgroupSize == rhs.minSubgroupSize ) && + ( maxSubgroupSize == rhs.maxSubgroupSize ) && + ( maxComputeWorkgroupSubgroups == rhs.maxComputeWorkgroupSubgroups ) && + ( requiredSubgroupSizeStages == rhs.requiredSubgroupSizeStages ) && + ( maxInlineUniformBlockSize == rhs.maxInlineUniformBlockSize ) && + ( maxPerStageDescriptorInlineUniformBlocks == rhs.maxPerStageDescriptorInlineUniformBlocks ) && + ( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks == + rhs.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks ) && + ( maxDescriptorSetInlineUniformBlocks == rhs.maxDescriptorSetInlineUniformBlocks ) && + ( maxDescriptorSetUpdateAfterBindInlineUniformBlocks == + rhs.maxDescriptorSetUpdateAfterBindInlineUniformBlocks ) && + ( maxInlineUniformTotalSize == rhs.maxInlineUniformTotalSize ) && + ( integerDotProduct8BitUnsignedAccelerated == rhs.integerDotProduct8BitUnsignedAccelerated ) && + ( integerDotProduct8BitSignedAccelerated == rhs.integerDotProduct8BitSignedAccelerated ) && + ( integerDotProduct8BitMixedSignednessAccelerated == + rhs.integerDotProduct8BitMixedSignednessAccelerated ) && + ( integerDotProduct4x8BitPackedUnsignedAccelerated == + rhs.integerDotProduct4x8BitPackedUnsignedAccelerated ) && + ( integerDotProduct4x8BitPackedSignedAccelerated == rhs.integerDotProduct4x8BitPackedSignedAccelerated ) && + ( integerDotProduct4x8BitPackedMixedSignednessAccelerated == + rhs.integerDotProduct4x8BitPackedMixedSignednessAccelerated ) && + ( integerDotProduct16BitUnsignedAccelerated == rhs.integerDotProduct16BitUnsignedAccelerated ) && + ( integerDotProduct16BitSignedAccelerated == rhs.integerDotProduct16BitSignedAccelerated ) && + ( integerDotProduct16BitMixedSignednessAccelerated == + rhs.integerDotProduct16BitMixedSignednessAccelerated ) && + ( integerDotProduct32BitUnsignedAccelerated == rhs.integerDotProduct32BitUnsignedAccelerated ) && + ( integerDotProduct32BitSignedAccelerated == rhs.integerDotProduct32BitSignedAccelerated ) && + ( integerDotProduct32BitMixedSignednessAccelerated == + rhs.integerDotProduct32BitMixedSignednessAccelerated ) && + ( integerDotProduct64BitUnsignedAccelerated == rhs.integerDotProduct64BitUnsignedAccelerated ) && + ( integerDotProduct64BitSignedAccelerated == rhs.integerDotProduct64BitSignedAccelerated ) && + ( integerDotProduct64BitMixedSignednessAccelerated == + rhs.integerDotProduct64BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating8BitUnsignedAccelerated == + rhs.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating8BitSignedAccelerated == + rhs.integerDotProductAccumulatingSaturating8BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated == + rhs.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated == + rhs.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating16BitUnsignedAccelerated == + rhs.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating16BitSignedAccelerated == + rhs.integerDotProductAccumulatingSaturating16BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating32BitUnsignedAccelerated == + rhs.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating32BitSignedAccelerated == + rhs.integerDotProductAccumulatingSaturating32BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating64BitUnsignedAccelerated == + rhs.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating64BitSignedAccelerated == + rhs.integerDotProductAccumulatingSaturating64BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ) && + ( storageTexelBufferOffsetAlignmentBytes == rhs.storageTexelBufferOffsetAlignmentBytes ) && + ( storageTexelBufferOffsetSingleTexelAlignment == rhs.storageTexelBufferOffsetSingleTexelAlignment ) && + ( uniformTexelBufferOffsetAlignmentBytes == rhs.uniformTexelBufferOffsetAlignmentBytes ) && + ( uniformTexelBufferOffsetSingleTexelAlignment == rhs.uniformTexelBufferOffsetSingleTexelAlignment ) && + ( maxBufferSize == rhs.maxBufferSize ); +# endif + } + + bool operator!=( PhysicalDeviceVulkan13Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan13Properties; + void * pNext = {}; + uint32_t minSubgroupSize = {}; + uint32_t maxSubgroupSize = {}; + uint32_t maxComputeWorkgroupSubgroups = {}; + VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages = {}; + uint32_t maxInlineUniformBlockSize = {}; + uint32_t maxPerStageDescriptorInlineUniformBlocks = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = {}; + uint32_t maxDescriptorSetInlineUniformBlocks = {}; + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks = {}; + uint32_t maxInlineUniformTotalSize = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated = {}; + VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = {}; + VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes = {}; + VULKAN_HPP_NAMESPACE::Bool32 storageTexelBufferOffsetSingleTexelAlignment = {}; + VULKAN_HPP_NAMESPACE::DeviceSize uniformTexelBufferOffsetAlignmentBytes = {}; + VULKAN_HPP_NAMESPACE::Bool32 uniformTexelBufferOffsetSingleTexelAlignment = {}; + VULKAN_HPP_NAMESPACE::DeviceSize maxBufferSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties ) == + sizeof( VkPhysicalDeviceVulkan13Properties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkan13Properties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan13Properties; + }; + + struct PhysicalDeviceVulkanMemoryModelFeatures + { + using NativeType = VkPhysicalDeviceVulkanMemoryModelFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceVulkanMemoryModelFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanMemoryModelFeatures( + VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ = {} ) VULKAN_HPP_NOEXCEPT + : vulkanMemoryModel( vulkanMemoryModel_ ) + , vulkanMemoryModelDeviceScope( vulkanMemoryModelDeviceScope_ ) + , vulkanMemoryModelAvailabilityVisibilityChains( vulkanMemoryModelAvailabilityVisibilityChains_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanMemoryModelFeatures( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkanMemoryModelFeatures( VkPhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkanMemoryModelFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceVulkanMemoryModelFeatures & + operator=( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkanMemoryModelFeatures & + operator=( VkPhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & + setVulkanMemoryModel( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ ) VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModel = vulkanMemoryModel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & + setVulkanMemoryModelDeviceScope( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ ) VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & setVulkanMemoryModelAvailabilityVisibilityChains( + VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceVulkanMemoryModelFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceVulkanMemoryModelFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, vulkanMemoryModel, vulkanMemoryModelDeviceScope, vulkanMemoryModelAvailabilityVisibilityChains ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVulkanMemoryModelFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vulkanMemoryModel == rhs.vulkanMemoryModel ) && + ( vulkanMemoryModelDeviceScope == rhs.vulkanMemoryModelDeviceScope ) && + ( vulkanMemoryModelAvailabilityVisibilityChains == rhs.vulkanMemoryModelAvailabilityVisibilityChains ); +# endif + } + + bool operator!=( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkanMemoryModelFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel = {}; + VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope = {}; + VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures ) == + sizeof( VkPhysicalDeviceVulkanMemoryModelFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkanMemoryModelFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkanMemoryModelFeatures; + }; + using PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures; + + struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + { + using NativeType = VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( + VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout8BitAccess_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout16BitAccess_ = {} ) VULKAN_HPP_NOEXCEPT + : workgroupMemoryExplicitLayout( workgroupMemoryExplicitLayout_ ) + , workgroupMemoryExplicitLayoutScalarBlockLayout( workgroupMemoryExplicitLayoutScalarBlockLayout_ ) + , workgroupMemoryExplicitLayout8BitAccess( workgroupMemoryExplicitLayout8BitAccess_ ) + , workgroupMemoryExplicitLayout16BitAccess( workgroupMemoryExplicitLayout16BitAccess_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( + PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( + VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & + operator=( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & + operator=( VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & setWorkgroupMemoryExplicitLayout( + VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout_ ) VULKAN_HPP_NOEXCEPT + { + workgroupMemoryExplicitLayout = workgroupMemoryExplicitLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & + setWorkgroupMemoryExplicitLayoutScalarBlockLayout( + VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT + { + workgroupMemoryExplicitLayoutScalarBlockLayout = workgroupMemoryExplicitLayoutScalarBlockLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & + setWorkgroupMemoryExplicitLayout8BitAccess( + VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout8BitAccess_ ) VULKAN_HPP_NOEXCEPT + { + workgroupMemoryExplicitLayout8BitAccess = workgroupMemoryExplicitLayout8BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & + setWorkgroupMemoryExplicitLayout16BitAccess( + VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout16BitAccess_ ) VULKAN_HPP_NOEXCEPT + { + workgroupMemoryExplicitLayout16BitAccess = workgroupMemoryExplicitLayout16BitAccess_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + workgroupMemoryExplicitLayout, + workgroupMemoryExplicitLayoutScalarBlockLayout, + workgroupMemoryExplicitLayout8BitAccess, + workgroupMemoryExplicitLayout16BitAccess ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( workgroupMemoryExplicitLayout == rhs.workgroupMemoryExplicitLayout ) && + ( workgroupMemoryExplicitLayoutScalarBlockLayout == rhs.workgroupMemoryExplicitLayoutScalarBlockLayout ) && + ( workgroupMemoryExplicitLayout8BitAccess == rhs.workgroupMemoryExplicitLayout8BitAccess ) && + ( workgroupMemoryExplicitLayout16BitAccess == rhs.workgroupMemoryExplicitLayout16BitAccess ); +# endif + } + + bool operator!=( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout = {}; + VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout = {}; + VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout8BitAccess = {}; + VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout16BitAccess = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR ) == + sizeof( VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>::value, + "PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; + }; + + struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT + { + using NativeType = VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 ycbcr2plane444Formats_ = {} ) VULKAN_HPP_NOEXCEPT + : ycbcr2plane444Formats( ycbcr2plane444Formats_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( + PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & + operator=( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & + operator=( VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & + setYcbcr2plane444Formats( VULKAN_HPP_NAMESPACE::Bool32 ycbcr2plane444Formats_ ) VULKAN_HPP_NOEXCEPT + { + ycbcr2plane444Formats = ycbcr2plane444Formats_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, ycbcr2plane444Formats ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ycbcr2plane444Formats == rhs.ycbcr2plane444Formats ); +# endif + } + + bool operator!=( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 ycbcr2plane444Formats = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT ) == + sizeof( VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; + }; + + struct PhysicalDeviceYcbcrImageArraysFeaturesEXT + { + using NativeType = VkPhysicalDeviceYcbcrImageArraysFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrImageArraysFeaturesEXT( + VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays_ = {} ) VULKAN_HPP_NOEXCEPT : ycbcrImageArrays( ycbcrImageArrays_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrImageArraysFeaturesEXT( + PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceYcbcrImageArraysFeaturesEXT( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PhysicalDeviceYcbcrImageArraysFeaturesEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceYcbcrImageArraysFeaturesEXT & + operator=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceYcbcrImageArraysFeaturesEXT & + operator=( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT & + setYcbcrImageArrays( VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays_ ) VULKAN_HPP_NOEXCEPT + { + ycbcrImageArrays = ycbcrImageArrays_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, ycbcrImageArrays ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ycbcrImageArrays == rhs.ycbcrImageArrays ); +# endif + } + + bool operator!=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT ) == + sizeof( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PhysicalDeviceYcbcrImageArraysFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceYcbcrImageArraysFeaturesEXT; + }; + + struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + { + using NativeType = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( + VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderZeroInitializeWorkgroupMemory( shaderZeroInitializeWorkgroupMemory_ ) + {} + + VULKAN_HPP_CONSTEXPR PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( + PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( + VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & + operator=( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & + operator=( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & + setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & + setShaderZeroInitializeWorkgroupMemory( VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ ) + VULKAN_HPP_NOEXCEPT + { + shaderZeroInitializeWorkgroupMemory = shaderZeroInitializeWorkgroupMemory_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderZeroInitializeWorkgroupMemory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderZeroInitializeWorkgroupMemory == rhs.shaderZeroInitializeWorkgroupMemory ); +# endif + } + + bool operator!=( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures ) == + sizeof( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures>::value, + "PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + }; + using PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + + struct PipelineCacheCreateInfo + { + using NativeType = VkPipelineCacheCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCacheCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCacheCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags_ = {}, + size_t initialDataSize_ = {}, + const void * pInitialData_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , initialDataSize( initialDataSize_ ) + , pInitialData( pInitialData_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineCacheCreateInfo( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCacheCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + PipelineCacheCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & initialData_ ) + : flags( flags_ ), initialDataSize( initialData_.size() * sizeof( T ) ), pInitialData( initialData_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineCacheCreateInfo & operator=( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCacheCreateInfo & operator=( VkPipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setInitialDataSize( size_t initialDataSize_ ) VULKAN_HPP_NOEXCEPT + { + initialDataSize = initialDataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setPInitialData( const void * pInitialData_ ) VULKAN_HPP_NOEXCEPT + { + pInitialData = pInitialData_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + PipelineCacheCreateInfo & + setInitialData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & initialData_ ) VULKAN_HPP_NOEXCEPT + { + initialDataSize = initialData_.size() * sizeof( T ); + pInitialData = initialData_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineCacheCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineCacheCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, initialDataSize, pInitialData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCacheCreateInfo const & ) const = default; +#else + bool operator==( PipelineCacheCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( initialDataSize == rhs.initialDataSize ) && ( pInitialData == rhs.pInitialData ); +# endif + } + + bool operator!=( PipelineCacheCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCacheCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags = {}; + size_t initialDataSize = {}; + const void * pInitialData = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo ) == + sizeof( VkPipelineCacheCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineCacheCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineCacheCreateInfo; + }; + + struct PipelineCacheHeaderVersionOne + { + using NativeType = VkPipelineCacheHeaderVersionOne; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne( + uint32_t headerSize_ = {}, + VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion headerVersion_ = + VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion::eOne, + uint32_t vendorID_ = {}, + uint32_t deviceID_ = {}, + std::array const & pipelineCacheUUID_ = {} ) VULKAN_HPP_NOEXCEPT + : headerSize( headerSize_ ) + , headerVersion( headerVersion_ ) + , vendorID( vendorID_ ) + , deviceID( deviceID_ ) + , pipelineCacheUUID( pipelineCacheUUID_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + PipelineCacheHeaderVersionOne( PipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCacheHeaderVersionOne( VkPipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCacheHeaderVersionOne( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineCacheHeaderVersionOne & + operator=( PipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCacheHeaderVersionOne & operator=( VkPipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setHeaderSize( uint32_t headerSize_ ) VULKAN_HPP_NOEXCEPT + { + headerSize = headerSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & + setHeaderVersion( VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion headerVersion_ ) VULKAN_HPP_NOEXCEPT + { + headerVersion = headerVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setVendorID( uint32_t vendorID_ ) VULKAN_HPP_NOEXCEPT + { + vendorID = vendorID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setDeviceID( uint32_t deviceID_ ) VULKAN_HPP_NOEXCEPT + { + deviceID = deviceID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & + setPipelineCacheUUID( std::array pipelineCacheUUID_ ) VULKAN_HPP_NOEXCEPT + { + pipelineCacheUUID = pipelineCacheUUID_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineCacheHeaderVersionOne const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineCacheHeaderVersionOne &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( headerSize, headerVersion, vendorID, deviceID, pipelineCacheUUID ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCacheHeaderVersionOne const & ) const = default; +#else + bool operator==( PipelineCacheHeaderVersionOne const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( headerSize == rhs.headerSize ) && ( headerVersion == rhs.headerVersion ) && + ( vendorID == rhs.vendorID ) && ( deviceID == rhs.deviceID ) && + ( pipelineCacheUUID == rhs.pipelineCacheUUID ); +# endif + } + + bool operator!=( PipelineCacheHeaderVersionOne const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t headerSize = {}; + VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion headerVersion = + VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion::eOne; + uint32_t vendorID = {}; + uint32_t deviceID = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D pipelineCacheUUID = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne ) == + sizeof( VkPipelineCacheHeaderVersionOne ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineCacheHeaderVersionOne is not nothrow_move_constructible!" ); + + struct PipelineColorBlendAdvancedStateCreateInfoEXT + { + using NativeType = VkPipelineColorBlendAdvancedStateCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineColorBlendAdvancedStateCreateInfoEXT( + VULKAN_HPP_NAMESPACE::Bool32 srcPremultiplied_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 dstPremultiplied_ = {}, + VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_ = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated ) + VULKAN_HPP_NOEXCEPT + : srcPremultiplied( srcPremultiplied_ ) + , dstPremultiplied( dstPremultiplied_ ) + , blendOverlap( blendOverlap_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineColorBlendAdvancedStateCreateInfoEXT( + PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineColorBlendAdvancedStateCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineColorBlendAdvancedStateCreateInfoEXT & + operator=( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineColorBlendAdvancedStateCreateInfoEXT & + operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & + setSrcPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 srcPremultiplied_ ) VULKAN_HPP_NOEXCEPT + { + srcPremultiplied = srcPremultiplied_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & + setDstPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 dstPremultiplied_ ) VULKAN_HPP_NOEXCEPT + { + dstPremultiplied = dstPremultiplied_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & + setBlendOverlap( VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_ ) VULKAN_HPP_NOEXCEPT + { + blendOverlap = blendOverlap_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineColorBlendAdvancedStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineColorBlendAdvancedStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcPremultiplied, dstPremultiplied, blendOverlap ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineColorBlendAdvancedStateCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcPremultiplied == rhs.srcPremultiplied ) && + ( dstPremultiplied == rhs.dstPremultiplied ) && ( blendOverlap == rhs.blendOverlap ); +# endif + } + + bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 srcPremultiplied = {}; + VULKAN_HPP_NAMESPACE::Bool32 dstPremultiplied = {}; + VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT ) == + sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineColorBlendAdvancedStateCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineColorBlendAdvancedStateCreateInfoEXT; + }; + + struct PipelineColorWriteCreateInfoEXT + { + using NativeType = VkPipelineColorWriteCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineColorWriteCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineColorWriteCreateInfoEXT( + uint32_t attachmentCount_ = {}, + const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables_ = {} ) VULKAN_HPP_NOEXCEPT + : attachmentCount( attachmentCount_ ) + , pColorWriteEnables( pColorWriteEnables_ ) + {} + + VULKAN_HPP_CONSTEXPR + PipelineColorWriteCreateInfoEXT( PipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineColorWriteCreateInfoEXT( VkPipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineColorWriteCreateInfoEXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineColorWriteCreateInfoEXT( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & colorWriteEnables_ ) + : attachmentCount( static_cast( colorWriteEnables_.size() ) ) + , pColorWriteEnables( colorWriteEnables_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineColorWriteCreateInfoEXT & + operator=( PipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineColorWriteCreateInfoEXT & operator=( VkPipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT & + setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT & + setPColorWriteEnables( const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables_ ) VULKAN_HPP_NOEXCEPT + { + pColorWriteEnables = pColorWriteEnables_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineColorWriteCreateInfoEXT & setColorWriteEnables( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & colorWriteEnables_ ) + VULKAN_HPP_NOEXCEPT + { + attachmentCount = static_cast( colorWriteEnables_.size() ); + pColorWriteEnables = colorWriteEnables_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineColorWriteCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineColorWriteCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, attachmentCount, pColorWriteEnables ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineColorWriteCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineColorWriteCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentCount == rhs.attachmentCount ) && + ( pColorWriteEnables == rhs.pColorWriteEnables ); +# endif + } + + bool operator!=( PipelineColorWriteCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineColorWriteCreateInfoEXT; + const void * pNext = {}; + uint32_t attachmentCount = {}; + const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT ) == + sizeof( VkPipelineColorWriteCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineColorWriteCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineColorWriteCreateInfoEXT; + }; + + struct PipelineCompilerControlCreateInfoAMD + { + using NativeType = VkPipelineCompilerControlCreateInfoAMD; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineCompilerControlCreateInfoAMD; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCompilerControlCreateInfoAMD( + VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags_ = {} ) VULKAN_HPP_NOEXCEPT + : compilerControlFlags( compilerControlFlags_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineCompilerControlCreateInfoAMD( PipelineCompilerControlCreateInfoAMD const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PipelineCompilerControlCreateInfoAMD( VkPipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCompilerControlCreateInfoAMD( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineCompilerControlCreateInfoAMD & + operator=( PipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCompilerControlCreateInfoAMD & + operator=( VkPipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCompilerControlCreateInfoAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCompilerControlCreateInfoAMD & setCompilerControlFlags( + VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags_ ) VULKAN_HPP_NOEXCEPT + { + compilerControlFlags = compilerControlFlags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineCompilerControlCreateInfoAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineCompilerControlCreateInfoAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, compilerControlFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCompilerControlCreateInfoAMD const & ) const = default; +#else + bool operator==( PipelineCompilerControlCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( compilerControlFlags == rhs.compilerControlFlags ); +# endif + } + + bool operator!=( PipelineCompilerControlCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCompilerControlCreateInfoAMD; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD ) == + sizeof( VkPipelineCompilerControlCreateInfoAMD ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineCompilerControlCreateInfoAMD is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineCompilerControlCreateInfoAMD; + }; + + struct PipelineCoverageModulationStateCreateInfoNV + { + using NativeType = VkPipelineCoverageModulationStateCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineCoverageModulationStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCoverageModulationStateCreateInfoNV( + VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_ = {}, + VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode_ = + VULKAN_HPP_NAMESPACE::CoverageModulationModeNV::eNone, + VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable_ = {}, + uint32_t coverageModulationTableCount_ = {}, + const float * pCoverageModulationTable_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , coverageModulationMode( coverageModulationMode_ ) + , coverageModulationTableEnable( coverageModulationTableEnable_ ) + , coverageModulationTableCount( coverageModulationTableCount_ ) + , pCoverageModulationTable( pCoverageModulationTable_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineCoverageModulationStateCreateInfoNV( + PipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineCoverageModulationStateCreateInfoNV( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineCoverageModulationStateCreateInfoNV( + VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_, + VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode_, + VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & coverageModulationTable_ ) + : flags( flags_ ) + , coverageModulationMode( coverageModulationMode_ ) + , coverageModulationTableEnable( coverageModulationTableEnable_ ) + , coverageModulationTableCount( static_cast( coverageModulationTable_.size() ) ) + , pCoverageModulationTable( coverageModulationTable_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineCoverageModulationStateCreateInfoNV & + operator=( PipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCoverageModulationStateCreateInfoNV & + operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & + setFlags( VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationMode( + VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode_ ) VULKAN_HPP_NOEXCEPT + { + coverageModulationMode = coverageModulationMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationTableEnable( + VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable_ ) VULKAN_HPP_NOEXCEPT + { + coverageModulationTableEnable = coverageModulationTableEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & + setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ ) VULKAN_HPP_NOEXCEPT + { + coverageModulationTableCount = coverageModulationTableCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & + setPCoverageModulationTable( const float * pCoverageModulationTable_ ) VULKAN_HPP_NOEXCEPT + { + pCoverageModulationTable = pCoverageModulationTable_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationTable( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & coverageModulationTable_ ) VULKAN_HPP_NOEXCEPT + { + coverageModulationTableCount = static_cast( coverageModulationTable_.size() ); + pCoverageModulationTable = coverageModulationTable_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineCoverageModulationStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineCoverageModulationStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + coverageModulationMode, + coverageModulationTableEnable, + coverageModulationTableCount, + pCoverageModulationTable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCoverageModulationStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineCoverageModulationStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( coverageModulationMode == rhs.coverageModulationMode ) && + ( coverageModulationTableEnable == rhs.coverageModulationTableEnable ) && + ( coverageModulationTableCount == rhs.coverageModulationTableCount ) && + ( pCoverageModulationTable == rhs.pCoverageModulationTable ); +# endif + } + + bool operator!=( PipelineCoverageModulationStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCoverageModulationStateCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags = {}; + VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode = + VULKAN_HPP_NAMESPACE::CoverageModulationModeNV::eNone; + VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable = {}; + uint32_t coverageModulationTableCount = {}; + const float * pCoverageModulationTable = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV ) == + sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineCoverageModulationStateCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineCoverageModulationStateCreateInfoNV; + }; + + struct PipelineCoverageReductionStateCreateInfoNV + { + using NativeType = VkPipelineCoverageReductionStateCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineCoverageReductionStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCoverageReductionStateCreateInfoNV( + VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags_ = {}, + VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode_ = + VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , coverageReductionMode( coverageReductionMode_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineCoverageReductionStateCreateInfoNV( + PipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCoverageReductionStateCreateInfoNV( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineCoverageReductionStateCreateInfoNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineCoverageReductionStateCreateInfoNV & + operator=( PipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCoverageReductionStateCreateInfoNV & + operator=( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV & + setFlags( VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV & setCoverageReductionMode( + VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode_ ) VULKAN_HPP_NOEXCEPT + { + coverageReductionMode = coverageReductionMode_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineCoverageReductionStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineCoverageReductionStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, coverageReductionMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCoverageReductionStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineCoverageReductionStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( coverageReductionMode == rhs.coverageReductionMode ); +# endif + } + + bool operator!=( PipelineCoverageReductionStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCoverageReductionStateCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags = {}; + VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode = + VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV ) == + sizeof( VkPipelineCoverageReductionStateCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineCoverageReductionStateCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineCoverageReductionStateCreateInfoNV; + }; + + struct PipelineCoverageToColorStateCreateInfoNV + { + using NativeType = VkPipelineCoverageToColorStateCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineCoverageToColorStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCoverageToColorStateCreateInfoNV( + VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 coverageToColorEnable_ = {}, + uint32_t coverageToColorLocation_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , coverageToColorEnable( coverageToColorEnable_ ) + , coverageToColorLocation( coverageToColorLocation_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineCoverageToColorStateCreateInfoNV( + PipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineCoverageToColorStateCreateInfoNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineCoverageToColorStateCreateInfoNV & + operator=( PipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCoverageToColorStateCreateInfoNV & + operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV & + setFlags( VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV & + setCoverageToColorEnable( VULKAN_HPP_NAMESPACE::Bool32 coverageToColorEnable_ ) VULKAN_HPP_NOEXCEPT + { + coverageToColorEnable = coverageToColorEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV & + setCoverageToColorLocation( uint32_t coverageToColorLocation_ ) VULKAN_HPP_NOEXCEPT + { + coverageToColorLocation = coverageToColorLocation_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineCoverageToColorStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineCoverageToColorStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, coverageToColorEnable, coverageToColorLocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCoverageToColorStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineCoverageToColorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( coverageToColorEnable == rhs.coverageToColorEnable ) && + ( coverageToColorLocation == rhs.coverageToColorLocation ); +# endif + } + + bool operator!=( PipelineCoverageToColorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCoverageToColorStateCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags = {}; + VULKAN_HPP_NAMESPACE::Bool32 coverageToColorEnable = {}; + uint32_t coverageToColorLocation = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV ) == + sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineCoverageToColorStateCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineCoverageToColorStateCreateInfoNV; + }; + + struct PipelineCreationFeedback + { + using NativeType = VkPipelineCreationFeedback; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCreationFeedback( VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlags flags_ = {}, + uint64_t duration_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , duration( duration_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineCreationFeedback( PipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCreationFeedback( VkPipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCreationFeedback( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineCreationFeedback & operator=( PipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCreationFeedback & operator=( VkPipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPipelineCreationFeedback const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineCreationFeedback &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( flags, duration ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCreationFeedback const & ) const = default; +#else + bool operator==( PipelineCreationFeedback const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( flags == rhs.flags ) && ( duration == rhs.duration ); +# endif + } + + bool operator!=( PipelineCreationFeedback const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlags flags = {}; + uint64_t duration = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCreationFeedback ) == + sizeof( VkPipelineCreationFeedback ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineCreationFeedback is not nothrow_move_constructible!" ); + using PipelineCreationFeedbackEXT = PipelineCreationFeedback; + + struct PipelineCreationFeedbackCreateInfo + { + using NativeType = VkPipelineCreationFeedbackCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineCreationFeedbackCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineCreationFeedback_ = {}, + uint32_t pipelineStageCreationFeedbackCount_ = {}, + VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineStageCreationFeedbacks_ = {} ) VULKAN_HPP_NOEXCEPT + : pPipelineCreationFeedback( pPipelineCreationFeedback_ ) + , pipelineStageCreationFeedbackCount( pipelineStageCreationFeedbackCount_ ) + , pPipelineStageCreationFeedbacks( pPipelineStageCreationFeedbacks_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackCreateInfo( PipelineCreationFeedbackCreateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PipelineCreationFeedbackCreateInfo( VkPipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCreationFeedbackCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineCreationFeedbackCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineCreationFeedback_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + pipelineStageCreationFeedbacks_ ) + : pPipelineCreationFeedback( pPipelineCreationFeedback_ ) + , pipelineStageCreationFeedbackCount( static_cast( pipelineStageCreationFeedbacks_.size() ) ) + , pPipelineStageCreationFeedbacks( pipelineStageCreationFeedbacks_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineCreationFeedbackCreateInfo & + operator=( PipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCreationFeedbackCreateInfo & + operator=( VkPipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo & setPPipelineCreationFeedback( + VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineCreationFeedback_ ) VULKAN_HPP_NOEXCEPT + { + pPipelineCreationFeedback = pPipelineCreationFeedback_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo & + setPipelineStageCreationFeedbackCount( uint32_t pipelineStageCreationFeedbackCount_ ) VULKAN_HPP_NOEXCEPT + { + pipelineStageCreationFeedbackCount = pipelineStageCreationFeedbackCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo & setPPipelineStageCreationFeedbacks( + VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineStageCreationFeedbacks_ ) VULKAN_HPP_NOEXCEPT + { + pPipelineStageCreationFeedbacks = pPipelineStageCreationFeedbacks_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineCreationFeedbackCreateInfo & setPipelineStageCreationFeedbacks( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + pipelineStageCreationFeedbacks_ ) VULKAN_HPP_NOEXCEPT + { + pipelineStageCreationFeedbackCount = static_cast( pipelineStageCreationFeedbacks_.size() ); + pPipelineStageCreationFeedbacks = pipelineStageCreationFeedbacks_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineCreationFeedbackCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineCreationFeedbackCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, pPipelineCreationFeedback, pipelineStageCreationFeedbackCount, pPipelineStageCreationFeedbacks ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCreationFeedbackCreateInfo const & ) const = default; +#else + bool operator==( PipelineCreationFeedbackCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( pPipelineCreationFeedback == rhs.pPipelineCreationFeedback ) && + ( pipelineStageCreationFeedbackCount == rhs.pipelineStageCreationFeedbackCount ) && + ( pPipelineStageCreationFeedbacks == rhs.pPipelineStageCreationFeedbacks ); +# endif + } + + bool operator!=( PipelineCreationFeedbackCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCreationFeedbackCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineCreationFeedback = {}; + uint32_t pipelineStageCreationFeedbackCount = {}; + VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineStageCreationFeedbacks = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo ) == + sizeof( VkPipelineCreationFeedbackCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineCreationFeedbackCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineCreationFeedbackCreateInfo; + }; + using PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfo; + + struct PipelineDiscardRectangleStateCreateInfoEXT + { + using NativeType = VkPipelineDiscardRectangleStateCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineDiscardRectangleStateCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineDiscardRectangleStateCreateInfoEXT( + VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_ = {}, + VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode_ = + VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT::eInclusive, + uint32_t discardRectangleCount_ = {}, + const VULKAN_HPP_NAMESPACE::Rect2D * pDiscardRectangles_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , discardRectangleMode( discardRectangleMode_ ) + , discardRectangleCount( discardRectangleCount_ ) + , pDiscardRectangles( pDiscardRectangles_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineDiscardRectangleStateCreateInfoEXT( + PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineDiscardRectangleStateCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineDiscardRectangleStateCreateInfoEXT( + VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_, + VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & discardRectangles_ ) + : flags( flags_ ) + , discardRectangleMode( discardRectangleMode_ ) + , discardRectangleCount( static_cast( discardRectangles_.size() ) ) + , pDiscardRectangles( discardRectangles_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineDiscardRectangleStateCreateInfoEXT & + operator=( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineDiscardRectangleStateCreateInfoEXT & + operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & + setDiscardRectangleMode( VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode_ ) VULKAN_HPP_NOEXCEPT + { + discardRectangleMode = discardRectangleMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & + setDiscardRectangleCount( uint32_t discardRectangleCount_ ) VULKAN_HPP_NOEXCEPT + { + discardRectangleCount = discardRectangleCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & + setPDiscardRectangles( const VULKAN_HPP_NAMESPACE::Rect2D * pDiscardRectangles_ ) VULKAN_HPP_NOEXCEPT + { + pDiscardRectangles = pDiscardRectangles_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineDiscardRectangleStateCreateInfoEXT & setDiscardRectangles( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & discardRectangles_ ) + VULKAN_HPP_NOEXCEPT + { + discardRectangleCount = static_cast( discardRectangles_.size() ); + pDiscardRectangles = discardRectangles_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineDiscardRectangleStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineDiscardRectangleStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, discardRectangleMode, discardRectangleCount, pDiscardRectangles ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineDiscardRectangleStateCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( discardRectangleMode == rhs.discardRectangleMode ) && + ( discardRectangleCount == rhs.discardRectangleCount ) && ( pDiscardRectangles == rhs.pDiscardRectangles ); +# endif + } + + bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags = {}; + VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode = + VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT::eInclusive; + uint32_t discardRectangleCount = {}; + const VULKAN_HPP_NAMESPACE::Rect2D * pDiscardRectangles = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT ) == + sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineDiscardRectangleStateCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineDiscardRectangleStateCreateInfoEXT; + }; + + struct PipelineExecutableInfoKHR + { + using NativeType = VkPipelineExecutableInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineExecutableInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineExecutableInfoKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ = {}, + uint32_t executableIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : pipeline( pipeline_ ) + , executableIndex( executableIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR + PipelineExecutableInfoKHR( PipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineExecutableInfoKHR( VkPipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineExecutableInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineExecutableInfoKHR & operator=( PipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineExecutableInfoKHR & operator=( VkPipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR & + setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR & + setExecutableIndex( uint32_t executableIndex_ ) VULKAN_HPP_NOEXCEPT + { + executableIndex = executableIndex_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineExecutableInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineExecutableInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipeline, executableIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineExecutableInfoKHR const & ) const = default; +#else + bool operator==( PipelineExecutableInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipeline == rhs.pipeline ) && + ( executableIndex == rhs.executableIndex ); +# endif + } + + bool operator!=( PipelineExecutableInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutableInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Pipeline pipeline = {}; + uint32_t executableIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR ) == + sizeof( VkPipelineExecutableInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineExecutableInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineExecutableInfoKHR; + }; + + struct PipelineExecutableInternalRepresentationKHR + { + using NativeType = VkPipelineExecutableInternalRepresentationKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineExecutableInternalRepresentationKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + PipelineExecutableInternalRepresentationKHR( std::array const & name_ = {}, + std::array const & description_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 isText_ = {}, + size_t dataSize_ = {}, + void * pData_ = {} ) VULKAN_HPP_NOEXCEPT + : name( name_ ) + , description( description_ ) + , isText( isText_ ) + , dataSize( dataSize_ ) + , pData( pData_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInternalRepresentationKHR( + PipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineExecutableInternalRepresentationKHR( VkPipelineExecutableInternalRepresentationKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineExecutableInternalRepresentationKHR( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + PipelineExecutableInternalRepresentationKHR( std::array const & name_, + std::array const & description_, + VULKAN_HPP_NAMESPACE::Bool32 isText_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & data_ ) + : name( name_ ) + , description( description_ ) + , isText( isText_ ) + , dataSize( data_.size() * sizeof( T ) ) + , pData( data_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineExecutableInternalRepresentationKHR & + operator=( PipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineExecutableInternalRepresentationKHR & + operator=( VkPipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPipelineExecutableInternalRepresentationKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineExecutableInternalRepresentationKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + size_t const &, + void * const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, name, description, isText, dataSize, pData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineExecutableInternalRepresentationKHR const & ) const = default; +#else + bool operator==( PipelineExecutableInternalRepresentationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( name == rhs.name ) && + ( description == rhs.description ) && ( isText == rhs.isText ) && ( dataSize == rhs.dataSize ) && + ( pData == rhs.pData ); +# endif + } + + bool operator!=( PipelineExecutableInternalRepresentationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutableInternalRepresentationKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D name = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D description = {}; + VULKAN_HPP_NAMESPACE::Bool32 isText = {}; + size_t dataSize = {}; + void * pData = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR ) == + sizeof( VkPipelineExecutableInternalRepresentationKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineExecutableInternalRepresentationKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineExecutableInternalRepresentationKHR; + }; + + struct PipelineExecutablePropertiesKHR + { + using NativeType = VkPipelineExecutablePropertiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineExecutablePropertiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + PipelineExecutablePropertiesKHR( VULKAN_HPP_NAMESPACE::ShaderStageFlags stages_ = {}, + std::array const & name_ = {}, + std::array const & description_ = {}, + uint32_t subgroupSize_ = {} ) VULKAN_HPP_NOEXCEPT + : stages( stages_ ) + , name( name_ ) + , description( description_ ) + , subgroupSize( subgroupSize_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + PipelineExecutablePropertiesKHR( PipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineExecutablePropertiesKHR( VkPipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineExecutablePropertiesKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineExecutablePropertiesKHR & + operator=( PipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineExecutablePropertiesKHR & operator=( VkPipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPipelineExecutablePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineExecutablePropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + uint32_t const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stages, name, description, subgroupSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineExecutablePropertiesKHR const & ) const = default; +#else + bool operator==( PipelineExecutablePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stages == rhs.stages ) && ( name == rhs.name ) && + ( description == rhs.description ) && ( subgroupSize == rhs.subgroupSize ); +# endif + } + + bool operator!=( PipelineExecutablePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutablePropertiesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ShaderStageFlags stages = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D name = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D description = {}; + uint32_t subgroupSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR ) == + sizeof( VkPipelineExecutablePropertiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineExecutablePropertiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineExecutablePropertiesKHR; + }; + + union PipelineExecutableStatisticValueKHR + { + using NativeType = VkPipelineExecutableStatisticValueKHR; +#if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( VULKAN_HPP_NAMESPACE::Bool32 b32_ = {} ) : b32( b32_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( int64_t i64_ ) : i64( i64_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( uint64_t u64_ ) : u64( u64_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( double f64_ ) : f64( f64_ ) {} +#endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & + setB32( VULKAN_HPP_NAMESPACE::Bool32 b32_ ) VULKAN_HPP_NOEXCEPT + { + b32 = b32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setI64( int64_t i64_ ) VULKAN_HPP_NOEXCEPT + { + i64 = i64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setU64( uint64_t u64_ ) VULKAN_HPP_NOEXCEPT + { + u64 = u64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setF64( double f64_ ) VULKAN_HPP_NOEXCEPT + { + f64 = f64_; + return *this; + } +#endif /*VULKAN_HPP_NO_UNION_SETTERS*/ + + operator VkPipelineExecutableStatisticValueKHR const &() const + { + return *reinterpret_cast( this ); + } + + operator VkPipelineExecutableStatisticValueKHR &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + VULKAN_HPP_NAMESPACE::Bool32 b32; + int64_t i64; + uint64_t u64; + double f64; +#else + VkBool32 b32; + int64_t i64; + uint64_t u64; + double f64; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + + struct PipelineExecutableStatisticKHR + { + using NativeType = VkPipelineExecutableStatisticKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineExecutableStatisticKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticKHR( + std::array const & name_ = {}, + std::array const & description_ = {}, + VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR format_ = + VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR::eBool32, + VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR value_ = {} ) VULKAN_HPP_NOEXCEPT + : name( name_ ) + , description( description_ ) + , format( format_ ) + , value( value_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + PipelineExecutableStatisticKHR( PipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineExecutableStatisticKHR( VkPipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineExecutableStatisticKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineExecutableStatisticKHR & + operator=( PipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineExecutableStatisticKHR & operator=( VkPipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPipelineExecutableStatisticKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineExecutableStatisticKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &, + VULKAN_HPP_NAMESPACE::ArrayWrapper1D const &, + VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR const &, + VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, name, description, format, value ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutableStatisticKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D name = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D description = {}; + VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR format = + VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR::eBool32; + VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR value = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR ) == + sizeof( VkPipelineExecutableStatisticKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineExecutableStatisticKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineExecutableStatisticKHR; + }; + + struct PipelineFragmentShadingRateEnumStateCreateInfoNV + { + using NativeType = VkPipelineFragmentShadingRateEnumStateCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV( + VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType_ = + VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV::eFragmentSize, + VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate_ = + VULKAN_HPP_NAMESPACE::FragmentShadingRateNV::e1InvocationPerPixel, + std::array const & + combinerOps_ = { { VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep, + VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep } } ) VULKAN_HPP_NOEXCEPT + : shadingRateType( shadingRateType_ ) + , shadingRate( shadingRate_ ) + , combinerOps( combinerOps_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV( + PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineFragmentShadingRateEnumStateCreateInfoNV( VkPipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineFragmentShadingRateEnumStateCreateInfoNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineFragmentShadingRateEnumStateCreateInfoNV & + operator=( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineFragmentShadingRateEnumStateCreateInfoNV & + operator=( VkPipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV & + setShadingRateType( VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType_ ) VULKAN_HPP_NOEXCEPT + { + shadingRateType = shadingRateType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV & + setShadingRate( VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate_ ) VULKAN_HPP_NOEXCEPT + { + shadingRate = shadingRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV & setCombinerOps( + std::array combinerOps_ ) VULKAN_HPP_NOEXCEPT + { + combinerOps = combinerOps_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shadingRateType, shadingRate, combinerOps ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineFragmentShadingRateEnumStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shadingRateType == rhs.shadingRateType ) && + ( shadingRate == rhs.shadingRate ) && ( combinerOps == rhs.combinerOps ); +# endif + } + + bool operator!=( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType = + VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV::eFragmentSize; + VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate = + VULKAN_HPP_NAMESPACE::FragmentShadingRateNV::e1InvocationPerPixel; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D combinerOps = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV ) == + sizeof( VkPipelineFragmentShadingRateEnumStateCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineFragmentShadingRateEnumStateCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineFragmentShadingRateEnumStateCreateInfoNV; + }; + + struct PipelineFragmentShadingRateStateCreateInfoKHR + { + using NativeType = VkPipelineFragmentShadingRateStateCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR( + VULKAN_HPP_NAMESPACE::Extent2D fragmentSize_ = {}, + std::array const & + combinerOps_ = { { VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep, + VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep } } ) VULKAN_HPP_NOEXCEPT + : fragmentSize( fragmentSize_ ) + , combinerOps( combinerOps_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR( + PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineFragmentShadingRateStateCreateInfoKHR( VkPipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineFragmentShadingRateStateCreateInfoKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineFragmentShadingRateStateCreateInfoKHR & + operator=( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineFragmentShadingRateStateCreateInfoKHR & + operator=( VkPipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR & + setFragmentSize( VULKAN_HPP_NAMESPACE::Extent2D const & fragmentSize_ ) VULKAN_HPP_NOEXCEPT + { + fragmentSize = fragmentSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR & setCombinerOps( + std::array combinerOps_ ) VULKAN_HPP_NOEXCEPT + { + combinerOps = combinerOps_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineFragmentShadingRateStateCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineFragmentShadingRateStateCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentSize, combinerOps ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineFragmentShadingRateStateCreateInfoKHR const & ) const = default; +#else + bool operator==( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentSize == rhs.fragmentSize ) && + ( combinerOps == rhs.combinerOps ); +# endif + } + + bool operator!=( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Extent2D fragmentSize = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D combinerOps = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR ) == + sizeof( VkPipelineFragmentShadingRateStateCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineFragmentShadingRateStateCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineFragmentShadingRateStateCreateInfoKHR; + }; + + struct PipelineInfoKHR + { + using NativeType = VkPipelineInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineInfoKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ = {} ) VULKAN_HPP_NOEXCEPT + : pipeline( pipeline_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineInfoKHR( PipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineInfoKHR( VkPipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineInfoKHR & operator=( PipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineInfoKHR & operator=( VkPipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineInfoKHR & + setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std:: + tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipeline ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineInfoKHR const & ) const = default; +#else + bool operator==( PipelineInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipeline == rhs.pipeline ); +# endif + } + + bool operator!=( PipelineInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Pipeline pipeline = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineInfoKHR ) == sizeof( VkPipelineInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineInfoKHR; + }; + + struct PushConstantRange + { + using NativeType = VkPushConstantRange; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PushConstantRange( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ = {}, + uint32_t offset_ = {}, + uint32_t size_ = {} ) VULKAN_HPP_NOEXCEPT + : stageFlags( stageFlags_ ) + , offset( offset_ ) + , size( size_ ) + {} + + VULKAN_HPP_CONSTEXPR PushConstantRange( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PushConstantRange( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT + : PushConstantRange( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PushConstantRange & operator=( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PushConstantRange & operator=( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PushConstantRange & + setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPushConstantRange const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPushConstantRange &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( stageFlags, offset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PushConstantRange const & ) const = default; +#else + bool operator==( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( stageFlags == rhs.stageFlags ) && ( offset == rhs.offset ) && ( size == rhs.size ); +# endif + } + + bool operator!=( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags = {}; + uint32_t offset = {}; + uint32_t size = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PushConstantRange ) == sizeof( VkPushConstantRange ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PushConstantRange is not nothrow_move_constructible!" ); + + struct PipelineLayoutCreateInfo + { + using NativeType = VkPipelineLayoutCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineLayoutCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineLayoutCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags_ = {}, + uint32_t setLayoutCount_ = {}, + const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ = {}, + uint32_t pushConstantRangeCount_ = {}, + const VULKAN_HPP_NAMESPACE::PushConstantRange * pPushConstantRanges_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , setLayoutCount( setLayoutCount_ ) + , pSetLayouts( pSetLayouts_ ) + , pushConstantRangeCount( pushConstantRangeCount_ ) + , pPushConstantRanges( pPushConstantRanges_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineLayoutCreateInfo( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineLayoutCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineLayoutCreateInfo( + VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + setLayouts_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + pushConstantRanges_ = {} ) + : flags( flags_ ) + , setLayoutCount( static_cast( setLayouts_.size() ) ) + , pSetLayouts( setLayouts_.data() ) + , pushConstantRangeCount( static_cast( pushConstantRanges_.size() ) ) + , pPushConstantRanges( pushConstantRanges_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineLayoutCreateInfo & operator=( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineLayoutCreateInfo & operator=( VkPipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setSetLayoutCount( uint32_t setLayoutCount_ ) VULKAN_HPP_NOEXCEPT + { + setLayoutCount = setLayoutCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & + setPSetLayouts( const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ ) VULKAN_HPP_NOEXCEPT + { + pSetLayouts = pSetLayouts_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineLayoutCreateInfo & setSetLayouts( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + setLayouts_ ) VULKAN_HPP_NOEXCEPT + { + setLayoutCount = static_cast( setLayouts_.size() ); + pSetLayouts = setLayouts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & + setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) VULKAN_HPP_NOEXCEPT + { + pushConstantRangeCount = pushConstantRangeCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & + setPPushConstantRanges( const VULKAN_HPP_NAMESPACE::PushConstantRange * pPushConstantRanges_ ) VULKAN_HPP_NOEXCEPT + { + pPushConstantRanges = pPushConstantRanges_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineLayoutCreateInfo & setPushConstantRanges( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + pushConstantRanges_ ) VULKAN_HPP_NOEXCEPT + { + pushConstantRangeCount = static_cast( pushConstantRanges_.size() ); + pPushConstantRanges = pushConstantRanges_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineLayoutCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineLayoutCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, setLayoutCount, pSetLayouts, pushConstantRangeCount, pPushConstantRanges ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineLayoutCreateInfo const & ) const = default; +#else + bool operator==( PipelineLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( setLayoutCount == rhs.setLayoutCount ) && ( pSetLayouts == rhs.pSetLayouts ) && + ( pushConstantRangeCount == rhs.pushConstantRangeCount ) && + ( pPushConstantRanges == rhs.pPushConstantRanges ); +# endif + } + + bool operator!=( PipelineLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineLayoutCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags = {}; + uint32_t setLayoutCount = {}; + const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts = {}; + uint32_t pushConstantRangeCount = {}; + const VULKAN_HPP_NAMESPACE::PushConstantRange * pPushConstantRanges = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo ) == + sizeof( VkPipelineLayoutCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineLayoutCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineLayoutCreateInfo; + }; + + struct PipelineLibraryCreateInfoKHR + { + using NativeType = VkPipelineLibraryCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineLibraryCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PipelineLibraryCreateInfoKHR( uint32_t libraryCount_ = {}, + const VULKAN_HPP_NAMESPACE::Pipeline * pLibraries_ = {} ) VULKAN_HPP_NOEXCEPT + : libraryCount( libraryCount_ ) + , pLibraries( pLibraries_ ) + {} + + VULKAN_HPP_CONSTEXPR + PipelineLibraryCreateInfoKHR( PipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineLibraryCreateInfoKHR( VkPipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineLibraryCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineLibraryCreateInfoKHR( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & libraries_ ) + : libraryCount( static_cast( libraries_.size() ) ), pLibraries( libraries_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineLibraryCreateInfoKHR & operator=( PipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineLibraryCreateInfoKHR & operator=( VkPipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & setLibraryCount( uint32_t libraryCount_ ) VULKAN_HPP_NOEXCEPT + { + libraryCount = libraryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & + setPLibraries( const VULKAN_HPP_NAMESPACE::Pipeline * pLibraries_ ) VULKAN_HPP_NOEXCEPT + { + pLibraries = pLibraries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineLibraryCreateInfoKHR & setLibraries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & libraries_ ) + VULKAN_HPP_NOEXCEPT + { + libraryCount = static_cast( libraries_.size() ); + pLibraries = libraries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineLibraryCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineLibraryCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, libraryCount, pLibraries ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineLibraryCreateInfoKHR const & ) const = default; +#else + bool operator==( PipelineLibraryCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( libraryCount == rhs.libraryCount ) && + ( pLibraries == rhs.pLibraries ); +# endif + } + + bool operator!=( PipelineLibraryCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineLibraryCreateInfoKHR; + const void * pNext = {}; + uint32_t libraryCount = {}; + const VULKAN_HPP_NAMESPACE::Pipeline * pLibraries = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR ) == + sizeof( VkPipelineLibraryCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineLibraryCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineLibraryCreateInfoKHR; + }; + + struct PipelineRasterizationConservativeStateCreateInfoEXT + { + using NativeType = VkPipelineRasterizationConservativeStateCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRasterizationConservativeStateCreateInfoEXT( + VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags_ = {}, + VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode_ = + VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT::eDisabled, + float extraPrimitiveOverestimationSize_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , conservativeRasterizationMode( conservativeRasterizationMode_ ) + , extraPrimitiveOverestimationSize( extraPrimitiveOverestimationSize_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineRasterizationConservativeStateCreateInfoEXT( + PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationConservativeStateCreateInfoEXT( + VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineRasterizationConservativeStateCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineRasterizationConservativeStateCreateInfoEXT & + operator=( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationConservativeStateCreateInfoEXT & + operator=( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & setConservativeRasterizationMode( + VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode_ ) VULKAN_HPP_NOEXCEPT + { + conservativeRasterizationMode = conservativeRasterizationMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & + setExtraPrimitiveOverestimationSize( float extraPrimitiveOverestimationSize_ ) VULKAN_HPP_NOEXCEPT + { + extraPrimitiveOverestimationSize = extraPrimitiveOverestimationSize_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineRasterizationConservativeStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineRasterizationConservativeStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, conservativeRasterizationMode, extraPrimitiveOverestimationSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRasterizationConservativeStateCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( conservativeRasterizationMode == rhs.conservativeRasterizationMode ) && + ( extraPrimitiveOverestimationSize == rhs.extraPrimitiveOverestimationSize ); +# endif + } + + bool operator!=( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags = {}; + VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode = + VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT::eDisabled; + float extraPrimitiveOverestimationSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT ) == + sizeof( VkPipelineRasterizationConservativeStateCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT>::value, + "PipelineRasterizationConservativeStateCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineRasterizationConservativeStateCreateInfoEXT; + }; + + struct PipelineRasterizationDepthClipStateCreateInfoEXT + { + using NativeType = VkPipelineRasterizationDepthClipStateCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRasterizationDepthClipStateCreateInfoEXT( + VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , depthClipEnable( depthClipEnable_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineRasterizationDepthClipStateCreateInfoEXT( + PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationDepthClipStateCreateInfoEXT( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineRasterizationDepthClipStateCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineRasterizationDepthClipStateCreateInfoEXT & + operator=( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationDepthClipStateCreateInfoEXT & + operator=( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT & + setDepthClipEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ ) VULKAN_HPP_NOEXCEPT + { + depthClipEnable = depthClipEnable_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineRasterizationDepthClipStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineRasterizationDepthClipStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, depthClipEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRasterizationDepthClipStateCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( depthClipEnable == rhs.depthClipEnable ); +# endif + } + + bool operator!=( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags = {}; + VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT ) == + sizeof( VkPipelineRasterizationDepthClipStateCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineRasterizationDepthClipStateCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineRasterizationDepthClipStateCreateInfoEXT; + }; + + struct PipelineRasterizationLineStateCreateInfoEXT + { + using NativeType = VkPipelineRasterizationLineStateCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineRasterizationLineStateCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRasterizationLineStateCreateInfoEXT( + VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode_ = + VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT::eDefault, + VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable_ = {}, + uint32_t lineStippleFactor_ = {}, + uint16_t lineStipplePattern_ = {} ) VULKAN_HPP_NOEXCEPT + : lineRasterizationMode( lineRasterizationMode_ ) + , stippledLineEnable( stippledLineEnable_ ) + , lineStippleFactor( lineStippleFactor_ ) + , lineStipplePattern( lineStipplePattern_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineRasterizationLineStateCreateInfoEXT( + PipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationLineStateCreateInfoEXT( VkPipelineRasterizationLineStateCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineRasterizationLineStateCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineRasterizationLineStateCreateInfoEXT & + operator=( PipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationLineStateCreateInfoEXT & + operator=( VkPipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT & setLineRasterizationMode( + VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode_ ) VULKAN_HPP_NOEXCEPT + { + lineRasterizationMode = lineRasterizationMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT & + setStippledLineEnable( VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable_ ) VULKAN_HPP_NOEXCEPT + { + stippledLineEnable = stippledLineEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT & + setLineStippleFactor( uint32_t lineStippleFactor_ ) VULKAN_HPP_NOEXCEPT + { + lineStippleFactor = lineStippleFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT & + setLineStipplePattern( uint16_t lineStipplePattern_ ) VULKAN_HPP_NOEXCEPT + { + lineStipplePattern = lineStipplePattern_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineRasterizationLineStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineRasterizationLineStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, lineRasterizationMode, stippledLineEnable, lineStippleFactor, lineStipplePattern ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRasterizationLineStateCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineRasterizationLineStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( lineRasterizationMode == rhs.lineRasterizationMode ) && + ( stippledLineEnable == rhs.stippledLineEnable ) && ( lineStippleFactor == rhs.lineStippleFactor ) && + ( lineStipplePattern == rhs.lineStipplePattern ); +# endif + } + + bool operator!=( PipelineRasterizationLineStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationLineStateCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode = + VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT::eDefault; + VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable = {}; + uint32_t lineStippleFactor = {}; + uint16_t lineStipplePattern = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT ) == + sizeof( VkPipelineRasterizationLineStateCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineRasterizationLineStateCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineRasterizationLineStateCreateInfoEXT; + }; + + struct PipelineRasterizationProvokingVertexStateCreateInfoEXT + { + using NativeType = VkPipelineRasterizationProvokingVertexStateCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineRasterizationProvokingVertexStateCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRasterizationProvokingVertexStateCreateInfoEXT( + VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT provokingVertexMode_ = + VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT::eFirstVertex ) VULKAN_HPP_NOEXCEPT + : provokingVertexMode( provokingVertexMode_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineRasterizationProvokingVertexStateCreateInfoEXT( + PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationProvokingVertexStateCreateInfoEXT( + VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineRasterizationProvokingVertexStateCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineRasterizationProvokingVertexStateCreateInfoEXT & + operator=( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationProvokingVertexStateCreateInfoEXT & + operator=( VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationProvokingVertexStateCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationProvokingVertexStateCreateInfoEXT & + setProvokingVertexMode( VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT provokingVertexMode_ ) VULKAN_HPP_NOEXCEPT + { + provokingVertexMode = provokingVertexMode_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, provokingVertexMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( provokingVertexMode == rhs.provokingVertexMode ); +# endif + } + + bool operator!=( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationProvokingVertexStateCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT provokingVertexMode = + VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT::eFirstVertex; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT ) == + sizeof( VkPipelineRasterizationProvokingVertexStateCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT>::value, + "PipelineRasterizationProvokingVertexStateCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineRasterizationProvokingVertexStateCreateInfoEXT; + }; + + struct PipelineRasterizationStateRasterizationOrderAMD + { + using NativeType = VkPipelineRasterizationStateRasterizationOrderAMD; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineRasterizationStateRasterizationOrderAMD; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRasterizationStateRasterizationOrderAMD( + VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder_ = + VULKAN_HPP_NAMESPACE::RasterizationOrderAMD::eStrict ) VULKAN_HPP_NOEXCEPT + : rasterizationOrder( rasterizationOrder_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineRasterizationStateRasterizationOrderAMD( + PipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineRasterizationStateRasterizationOrderAMD( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineRasterizationStateRasterizationOrderAMD & + operator=( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationStateRasterizationOrderAMD & + operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateRasterizationOrderAMD & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateRasterizationOrderAMD & + setRasterizationOrder( VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder_ ) VULKAN_HPP_NOEXCEPT + { + rasterizationOrder = rasterizationOrder_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineRasterizationStateRasterizationOrderAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineRasterizationStateRasterizationOrderAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rasterizationOrder ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRasterizationStateRasterizationOrderAMD const & ) const = default; +#else + bool operator==( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rasterizationOrder == rhs.rasterizationOrder ); +# endif + } + + bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationStateRasterizationOrderAMD; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder = + VULKAN_HPP_NAMESPACE::RasterizationOrderAMD::eStrict; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD ) == + sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineRasterizationStateRasterizationOrderAMD is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineRasterizationStateRasterizationOrderAMD; + }; + + struct PipelineRasterizationStateStreamCreateInfoEXT + { + using NativeType = VkPipelineRasterizationStateStreamCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineRasterizationStateStreamCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRasterizationStateStreamCreateInfoEXT( + VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags_ = {}, + uint32_t rasterizationStream_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , rasterizationStream( rasterizationStream_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineRasterizationStateStreamCreateInfoEXT( + PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationStateStreamCreateInfoEXT( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineRasterizationStateStreamCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineRasterizationStateStreamCreateInfoEXT & + operator=( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationStateStreamCreateInfoEXT & + operator=( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT & + setRasterizationStream( uint32_t rasterizationStream_ ) VULKAN_HPP_NOEXCEPT + { + rasterizationStream = rasterizationStream_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineRasterizationStateStreamCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineRasterizationStateStreamCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, rasterizationStream ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRasterizationStateStreamCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( rasterizationStream == rhs.rasterizationStream ); +# endif + } + + bool operator!=( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationStateStreamCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags = {}; + uint32_t rasterizationStream = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT ) == + sizeof( VkPipelineRasterizationStateStreamCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineRasterizationStateStreamCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineRasterizationStateStreamCreateInfoEXT; + }; + + struct PipelineRenderingCreateInfo + { + using NativeType = VkPipelineRenderingCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRenderingCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRenderingCreateInfo( + uint32_t viewMask_ = {}, + uint32_t colorAttachmentCount_ = {}, + const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ = {}, + VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined ) + VULKAN_HPP_NOEXCEPT + : viewMask( viewMask_ ) + , colorAttachmentCount( colorAttachmentCount_ ) + , pColorAttachmentFormats( pColorAttachmentFormats_ ) + , depthAttachmentFormat( depthAttachmentFormat_ ) + , stencilAttachmentFormat( stencilAttachmentFormat_ ) + {} + + VULKAN_HPP_CONSTEXPR + PipelineRenderingCreateInfo( PipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRenderingCreateInfo( VkPipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineRenderingCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineRenderingCreateInfo( + uint32_t viewMask_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & colorAttachmentFormats_, + VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined ) + : viewMask( viewMask_ ) + , colorAttachmentCount( static_cast( colorAttachmentFormats_.size() ) ) + , pColorAttachmentFormats( colorAttachmentFormats_.data() ) + , depthAttachmentFormat( depthAttachmentFormat_ ) + , stencilAttachmentFormat( stencilAttachmentFormat_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineRenderingCreateInfo & operator=( PipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRenderingCreateInfo & operator=( VkPipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT + { + viewMask = viewMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & + setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & + setPColorAttachmentFormats( const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT + { + pColorAttachmentFormats = pColorAttachmentFormats_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineRenderingCreateInfo & setColorAttachmentFormats( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachmentFormats_.size() ); + pColorAttachmentFormats = colorAttachmentFormats_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & + setDepthAttachmentFormat( VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT + { + depthAttachmentFormat = depthAttachmentFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & + setStencilAttachmentFormat( VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT + { + stencilAttachmentFormat = stencilAttachmentFormat_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineRenderingCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineRenderingCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + viewMask, + colorAttachmentCount, + pColorAttachmentFormats, + depthAttachmentFormat, + stencilAttachmentFormat ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRenderingCreateInfo const & ) const = default; +#else + bool operator==( PipelineRenderingCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewMask == rhs.viewMask ) && + ( colorAttachmentCount == rhs.colorAttachmentCount ) && + ( pColorAttachmentFormats == rhs.pColorAttachmentFormats ) && + ( depthAttachmentFormat == rhs.depthAttachmentFormat ) && + ( stencilAttachmentFormat == rhs.stencilAttachmentFormat ); +# endif + } + + bool operator!=( PipelineRenderingCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRenderingCreateInfo; + const void * pNext = {}; + uint32_t viewMask = {}; + uint32_t colorAttachmentCount = {}; + const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats = {}; + VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo ) == + sizeof( VkPipelineRenderingCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineRenderingCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineRenderingCreateInfo; + }; + using PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo; + + struct PipelineRepresentativeFragmentTestStateCreateInfoNV + { + using NativeType = VkPipelineRepresentativeFragmentTestStateCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRepresentativeFragmentTestStateCreateInfoNV( + VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable_ = {} ) VULKAN_HPP_NOEXCEPT + : representativeFragmentTestEnable( representativeFragmentTestEnable_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineRepresentativeFragmentTestStateCreateInfoNV( + PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRepresentativeFragmentTestStateCreateInfoNV( + VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineRepresentativeFragmentTestStateCreateInfoNV( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineRepresentativeFragmentTestStateCreateInfoNV & + operator=( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRepresentativeFragmentTestStateCreateInfoNV & + operator=( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRepresentativeFragmentTestStateCreateInfoNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRepresentativeFragmentTestStateCreateInfoNV & setRepresentativeFragmentTestEnable( + VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable_ ) VULKAN_HPP_NOEXCEPT + { + representativeFragmentTestEnable = representativeFragmentTestEnable_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, representativeFragmentTestEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRepresentativeFragmentTestStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( representativeFragmentTestEnable == rhs.representativeFragmentTestEnable ); +# endif + } + + bool operator!=( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV ) == + sizeof( VkPipelineRepresentativeFragmentTestStateCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible< + VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV>::value, + "PipelineRepresentativeFragmentTestStateCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineRepresentativeFragmentTestStateCreateInfoNV; + }; + + struct PipelineSampleLocationsStateCreateInfoEXT + { + using NativeType = VkPipelineSampleLocationsStateCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineSampleLocationsStateCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineSampleLocationsStateCreateInfoEXT( + VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable_ = {}, + VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_ = {} ) VULKAN_HPP_NOEXCEPT + : sampleLocationsEnable( sampleLocationsEnable_ ) + , sampleLocationsInfo( sampleLocationsInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineSampleLocationsStateCreateInfoEXT( + PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineSampleLocationsStateCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineSampleLocationsStateCreateInfoEXT & + operator=( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineSampleLocationsStateCreateInfoEXT & + operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT & + setSampleLocationsEnable( VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable_ ) VULKAN_HPP_NOEXCEPT + { + sampleLocationsEnable = sampleLocationsEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT & setSampleLocationsInfo( + VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT + { + sampleLocationsInfo = sampleLocationsInfo_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineSampleLocationsStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineSampleLocationsStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, sampleLocationsEnable, sampleLocationsInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineSampleLocationsStateCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( sampleLocationsEnable == rhs.sampleLocationsEnable ) && + ( sampleLocationsInfo == rhs.sampleLocationsInfo ); +# endif + } + + bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineSampleLocationsStateCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable = {}; + VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT ) == + sizeof( VkPipelineSampleLocationsStateCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineSampleLocationsStateCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineSampleLocationsStateCreateInfoEXT; + }; + + struct PipelineShaderStageRequiredSubgroupSizeCreateInfo + { + using NativeType = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PipelineShaderStageRequiredSubgroupSizeCreateInfo( uint32_t requiredSubgroupSize_ = {} ) VULKAN_HPP_NOEXCEPT + : requiredSubgroupSize( requiredSubgroupSize_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineShaderStageRequiredSubgroupSizeCreateInfo( + PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineShaderStageRequiredSubgroupSizeCreateInfo( VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineShaderStageRequiredSubgroupSizeCreateInfo( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineShaderStageRequiredSubgroupSizeCreateInfo & + operator=( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineShaderStageRequiredSubgroupSizeCreateInfo & + operator=( VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, requiredSubgroupSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & ) const = default; +#else + bool operator==( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( requiredSubgroupSize == rhs.requiredSubgroupSize ); +# endif + } + + bool operator!=( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfo; + void * pNext = {}; + uint32_t requiredSubgroupSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo ) == + sizeof( VkPipelineShaderStageRequiredSubgroupSizeCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineShaderStageRequiredSubgroupSizeCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineShaderStageRequiredSubgroupSizeCreateInfo; + }; + using PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo; + + struct PipelineTessellationDomainOriginStateCreateInfo + { + using NativeType = VkPipelineTessellationDomainOriginStateCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineTessellationDomainOriginStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineTessellationDomainOriginStateCreateInfo( + VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin_ = + VULKAN_HPP_NAMESPACE::TessellationDomainOrigin::eUpperLeft ) VULKAN_HPP_NOEXCEPT : domainOrigin( domainOrigin_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineTessellationDomainOriginStateCreateInfo( + PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineTessellationDomainOriginStateCreateInfo( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineTessellationDomainOriginStateCreateInfo( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineTessellationDomainOriginStateCreateInfo & + operator=( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineTessellationDomainOriginStateCreateInfo & + operator=( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo & + setDomainOrigin( VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin_ ) VULKAN_HPP_NOEXCEPT + { + domainOrigin = domainOrigin_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineTessellationDomainOriginStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineTessellationDomainOriginStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, domainOrigin ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineTessellationDomainOriginStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( domainOrigin == rhs.domainOrigin ); +# endif + } + + bool operator!=( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineTessellationDomainOriginStateCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin = + VULKAN_HPP_NAMESPACE::TessellationDomainOrigin::eUpperLeft; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo ) == + sizeof( VkPipelineTessellationDomainOriginStateCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineTessellationDomainOriginStateCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineTessellationDomainOriginStateCreateInfo; + }; + using PipelineTessellationDomainOriginStateCreateInfoKHR = PipelineTessellationDomainOriginStateCreateInfo; + + struct VertexInputBindingDivisorDescriptionEXT + { + using NativeType = VkVertexInputBindingDivisorDescriptionEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VertexInputBindingDivisorDescriptionEXT( uint32_t binding_ = {}, + uint32_t divisor_ = {} ) VULKAN_HPP_NOEXCEPT + : binding( binding_ ) + , divisor( divisor_ ) + {} + + VULKAN_HPP_CONSTEXPR VertexInputBindingDivisorDescriptionEXT( VertexInputBindingDivisorDescriptionEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + VertexInputBindingDivisorDescriptionEXT( VkVertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VertexInputBindingDivisorDescriptionEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VertexInputBindingDivisorDescriptionEXT & + operator=( VertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VertexInputBindingDivisorDescriptionEXT & + operator=( VkVertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescriptionEXT & + setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescriptionEXT & + setDivisor( uint32_t divisor_ ) VULKAN_HPP_NOEXCEPT + { + divisor = divisor_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVertexInputBindingDivisorDescriptionEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVertexInputBindingDivisorDescriptionEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( binding, divisor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VertexInputBindingDivisorDescriptionEXT const & ) const = default; +#else + bool operator==( VertexInputBindingDivisorDescriptionEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( binding == rhs.binding ) && ( divisor == rhs.divisor ); +# endif + } + + bool operator!=( VertexInputBindingDivisorDescriptionEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t binding = {}; + uint32_t divisor = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT ) == + sizeof( VkVertexInputBindingDivisorDescriptionEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VertexInputBindingDivisorDescriptionEXT is not nothrow_move_constructible!" ); + + struct PipelineVertexInputDivisorStateCreateInfoEXT + { + using NativeType = VkPipelineVertexInputDivisorStateCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineVertexInputDivisorStateCreateInfoEXT( + uint32_t vertexBindingDivisorCount_ = {}, + const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT * pVertexBindingDivisors_ = {} ) + VULKAN_HPP_NOEXCEPT + : vertexBindingDivisorCount( vertexBindingDivisorCount_ ) + , pVertexBindingDivisors( pVertexBindingDivisors_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineVertexInputDivisorStateCreateInfoEXT( + PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineVertexInputDivisorStateCreateInfoEXT( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineVertexInputDivisorStateCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineVertexInputDivisorStateCreateInfoEXT( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT> const & vertexBindingDivisors_ ) + : vertexBindingDivisorCount( static_cast( vertexBindingDivisors_.size() ) ) + , pVertexBindingDivisors( vertexBindingDivisors_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineVertexInputDivisorStateCreateInfoEXT & + operator=( PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineVertexInputDivisorStateCreateInfoEXT & + operator=( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfoEXT & + setVertexBindingDivisorCount( uint32_t vertexBindingDivisorCount_ ) VULKAN_HPP_NOEXCEPT + { + vertexBindingDivisorCount = vertexBindingDivisorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfoEXT & setPVertexBindingDivisors( + const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT * pVertexBindingDivisors_ ) + VULKAN_HPP_NOEXCEPT + { + pVertexBindingDivisors = pVertexBindingDivisors_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineVertexInputDivisorStateCreateInfoEXT & setVertexBindingDivisors( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT> const & vertexBindingDivisors_ ) + VULKAN_HPP_NOEXCEPT + { + vertexBindingDivisorCount = static_cast( vertexBindingDivisors_.size() ); + pVertexBindingDivisors = vertexBindingDivisors_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineVertexInputDivisorStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineVertexInputDivisorStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vertexBindingDivisorCount, pVertexBindingDivisors ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineVertexInputDivisorStateCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( vertexBindingDivisorCount == rhs.vertexBindingDivisorCount ) && + ( pVertexBindingDivisors == rhs.pVertexBindingDivisors ); +# endif + } + + bool operator!=( PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT; + const void * pNext = {}; + uint32_t vertexBindingDivisorCount = {}; + const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT * pVertexBindingDivisors = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT ) == + sizeof( VkPipelineVertexInputDivisorStateCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineVertexInputDivisorStateCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineVertexInputDivisorStateCreateInfoEXT; + }; + + struct PipelineViewportCoarseSampleOrderStateCreateInfoNV + { + using NativeType = VkPipelineViewportCoarseSampleOrderStateCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineViewportCoarseSampleOrderStateCreateInfoNV( + VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType_ = + VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV::eDefault, + uint32_t customSampleOrderCount_ = {}, + const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * pCustomSampleOrders_ = {} ) VULKAN_HPP_NOEXCEPT + : sampleOrderType( sampleOrderType_ ) + , customSampleOrderCount( customSampleOrderCount_ ) + , pCustomSampleOrders( pCustomSampleOrders_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineViewportCoarseSampleOrderStateCreateInfoNV( + PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportCoarseSampleOrderStateCreateInfoNV( + VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineViewportCoarseSampleOrderStateCreateInfoNV( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportCoarseSampleOrderStateCreateInfoNV( + VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + customSampleOrders_ ) + : sampleOrderType( sampleOrderType_ ) + , customSampleOrderCount( static_cast( customSampleOrders_.size() ) ) + , pCustomSampleOrders( customSampleOrders_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineViewportCoarseSampleOrderStateCreateInfoNV & + operator=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportCoarseSampleOrderStateCreateInfoNV & + operator=( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV & + setSampleOrderType( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType_ ) VULKAN_HPP_NOEXCEPT + { + sampleOrderType = sampleOrderType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV & + setCustomSampleOrderCount( uint32_t customSampleOrderCount_ ) VULKAN_HPP_NOEXCEPT + { + customSampleOrderCount = customSampleOrderCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV & setPCustomSampleOrders( + const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * pCustomSampleOrders_ ) VULKAN_HPP_NOEXCEPT + { + pCustomSampleOrders = pCustomSampleOrders_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportCoarseSampleOrderStateCreateInfoNV & setCustomSampleOrders( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + customSampleOrders_ ) VULKAN_HPP_NOEXCEPT + { + customSampleOrderCount = static_cast( customSampleOrders_.size() ); + pCustomSampleOrders = customSampleOrders_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, sampleOrderType, customSampleOrderCount, pCustomSampleOrders ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleOrderType == rhs.sampleOrderType ) && + ( customSampleOrderCount == rhs.customSampleOrderCount ) && + ( pCustomSampleOrders == rhs.pCustomSampleOrders ); +# endif + } + + bool operator!=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType = + VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV::eDefault; + uint32_t customSampleOrderCount = {}; + const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * pCustomSampleOrders = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV ) == + sizeof( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineViewportCoarseSampleOrderStateCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineViewportCoarseSampleOrderStateCreateInfoNV; + }; + + struct PipelineViewportDepthClipControlCreateInfoEXT + { + using NativeType = VkPipelineViewportDepthClipControlCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineViewportDepthClipControlCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineViewportDepthClipControlCreateInfoEXT( + VULKAN_HPP_NAMESPACE::Bool32 negativeOneToOne_ = {} ) VULKAN_HPP_NOEXCEPT : negativeOneToOne( negativeOneToOne_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineViewportDepthClipControlCreateInfoEXT( + PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportDepthClipControlCreateInfoEXT( VkPipelineViewportDepthClipControlCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineViewportDepthClipControlCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineViewportDepthClipControlCreateInfoEXT & + operator=( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportDepthClipControlCreateInfoEXT & + operator=( VkPipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClipControlCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClipControlCreateInfoEXT & + setNegativeOneToOne( VULKAN_HPP_NAMESPACE::Bool32 negativeOneToOne_ ) VULKAN_HPP_NOEXCEPT + { + negativeOneToOne = negativeOneToOne_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineViewportDepthClipControlCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineViewportDepthClipControlCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, negativeOneToOne ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportDepthClipControlCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( negativeOneToOne == rhs.negativeOneToOne ); +# endif + } + + bool operator!=( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportDepthClipControlCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 negativeOneToOne = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT ) == + sizeof( VkPipelineViewportDepthClipControlCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineViewportDepthClipControlCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineViewportDepthClipControlCreateInfoEXT; + }; + + struct PipelineViewportExclusiveScissorStateCreateInfoNV + { + using NativeType = VkPipelineViewportExclusiveScissorStateCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineViewportExclusiveScissorStateCreateInfoNV( + uint32_t exclusiveScissorCount_ = {}, + const VULKAN_HPP_NAMESPACE::Rect2D * pExclusiveScissors_ = {} ) VULKAN_HPP_NOEXCEPT + : exclusiveScissorCount( exclusiveScissorCount_ ) + , pExclusiveScissors( pExclusiveScissors_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineViewportExclusiveScissorStateCreateInfoNV( + PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportExclusiveScissorStateCreateInfoNV( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineViewportExclusiveScissorStateCreateInfoNV( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportExclusiveScissorStateCreateInfoNV( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & exclusiveScissors_ ) + : exclusiveScissorCount( static_cast( exclusiveScissors_.size() ) ) + , pExclusiveScissors( exclusiveScissors_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineViewportExclusiveScissorStateCreateInfoNV & + operator=( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportExclusiveScissorStateCreateInfoNV & + operator=( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV & + setExclusiveScissorCount( uint32_t exclusiveScissorCount_ ) VULKAN_HPP_NOEXCEPT + { + exclusiveScissorCount = exclusiveScissorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV & + setPExclusiveScissors( const VULKAN_HPP_NAMESPACE::Rect2D * pExclusiveScissors_ ) VULKAN_HPP_NOEXCEPT + { + pExclusiveScissors = pExclusiveScissors_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportExclusiveScissorStateCreateInfoNV & setExclusiveScissors( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & exclusiveScissors_ ) + VULKAN_HPP_NOEXCEPT + { + exclusiveScissorCount = static_cast( exclusiveScissors_.size() ); + pExclusiveScissors = exclusiveScissors_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineViewportExclusiveScissorStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineViewportExclusiveScissorStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, exclusiveScissorCount, pExclusiveScissors ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportExclusiveScissorStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( exclusiveScissorCount == rhs.exclusiveScissorCount ) && ( pExclusiveScissors == rhs.pExclusiveScissors ); +# endif + } + + bool operator!=( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV; + const void * pNext = {}; + uint32_t exclusiveScissorCount = {}; + const VULKAN_HPP_NAMESPACE::Rect2D * pExclusiveScissors = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV ) == + sizeof( VkPipelineViewportExclusiveScissorStateCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineViewportExclusiveScissorStateCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineViewportExclusiveScissorStateCreateInfoNV; + }; + + struct ShadingRatePaletteNV + { + using NativeType = VkShadingRatePaletteNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ShadingRatePaletteNV( + uint32_t shadingRatePaletteEntryCount_ = {}, + const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV * pShadingRatePaletteEntries_ = {} ) VULKAN_HPP_NOEXCEPT + : shadingRatePaletteEntryCount( shadingRatePaletteEntryCount_ ) + , pShadingRatePaletteEntries( pShadingRatePaletteEntries_ ) + {} + + VULKAN_HPP_CONSTEXPR ShadingRatePaletteNV( ShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShadingRatePaletteNV( VkShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ShadingRatePaletteNV( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ShadingRatePaletteNV( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + shadingRatePaletteEntries_ ) + : shadingRatePaletteEntryCount( static_cast( shadingRatePaletteEntries_.size() ) ) + , pShadingRatePaletteEntries( shadingRatePaletteEntries_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ShadingRatePaletteNV & operator=( ShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShadingRatePaletteNV & operator=( VkShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ShadingRatePaletteNV & + setShadingRatePaletteEntryCount( uint32_t shadingRatePaletteEntryCount_ ) VULKAN_HPP_NOEXCEPT + { + shadingRatePaletteEntryCount = shadingRatePaletteEntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShadingRatePaletteNV & setPShadingRatePaletteEntries( + const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV * pShadingRatePaletteEntries_ ) VULKAN_HPP_NOEXCEPT + { + pShadingRatePaletteEntries = pShadingRatePaletteEntries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ShadingRatePaletteNV & setShadingRatePaletteEntries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + shadingRatePaletteEntries_ ) VULKAN_HPP_NOEXCEPT + { + shadingRatePaletteEntryCount = static_cast( shadingRatePaletteEntries_.size() ); + pShadingRatePaletteEntries = shadingRatePaletteEntries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkShadingRatePaletteNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkShadingRatePaletteNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( shadingRatePaletteEntryCount, pShadingRatePaletteEntries ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ShadingRatePaletteNV const & ) const = default; +#else + bool operator==( ShadingRatePaletteNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( shadingRatePaletteEntryCount == rhs.shadingRatePaletteEntryCount ) && + ( pShadingRatePaletteEntries == rhs.pShadingRatePaletteEntries ); +# endif + } + + bool operator!=( ShadingRatePaletteNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t shadingRatePaletteEntryCount = {}; + const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV * pShadingRatePaletteEntries = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV ) == sizeof( VkShadingRatePaletteNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShadingRatePaletteNV is not nothrow_move_constructible!" ); + + struct PipelineViewportShadingRateImageStateCreateInfoNV + { + using NativeType = VkPipelineViewportShadingRateImageStateCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineViewportShadingRateImageStateCreateInfoNV( + VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable_ = {}, + uint32_t viewportCount_ = {}, + const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * pShadingRatePalettes_ = {} ) VULKAN_HPP_NOEXCEPT + : shadingRateImageEnable( shadingRateImageEnable_ ) + , viewportCount( viewportCount_ ) + , pShadingRatePalettes( pShadingRatePalettes_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineViewportShadingRateImageStateCreateInfoNV( + PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportShadingRateImageStateCreateInfoNV( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineViewportShadingRateImageStateCreateInfoNV( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportShadingRateImageStateCreateInfoNV( + VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + shadingRatePalettes_ ) + : shadingRateImageEnable( shadingRateImageEnable_ ) + , viewportCount( static_cast( shadingRatePalettes_.size() ) ) + , pShadingRatePalettes( shadingRatePalettes_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineViewportShadingRateImageStateCreateInfoNV & + operator=( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportShadingRateImageStateCreateInfoNV & + operator=( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = + *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV & + setShadingRateImageEnable( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable_ ) VULKAN_HPP_NOEXCEPT + { + shadingRateImageEnable = shadingRateImageEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV & + setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT + { + viewportCount = viewportCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV & setPShadingRatePalettes( + const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * pShadingRatePalettes_ ) VULKAN_HPP_NOEXCEPT + { + pShadingRatePalettes = pShadingRatePalettes_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportShadingRateImageStateCreateInfoNV & setShadingRatePalettes( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + shadingRatePalettes_ ) VULKAN_HPP_NOEXCEPT + { + viewportCount = static_cast( shadingRatePalettes_.size() ); + pShadingRatePalettes = shadingRatePalettes_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineViewportShadingRateImageStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineViewportShadingRateImageStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shadingRateImageEnable, viewportCount, pShadingRatePalettes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportShadingRateImageStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shadingRateImageEnable == rhs.shadingRateImageEnable ) && ( viewportCount == rhs.viewportCount ) && + ( pShadingRatePalettes == rhs.pShadingRatePalettes ); +# endif + } + + bool operator!=( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable = {}; + uint32_t viewportCount = {}; + const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * pShadingRatePalettes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV ) == + sizeof( VkPipelineViewportShadingRateImageStateCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineViewportShadingRateImageStateCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineViewportShadingRateImageStateCreateInfoNV; + }; + + struct ViewportSwizzleNV + { + using NativeType = VkViewportSwizzleNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ViewportSwizzleNV( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x_ = + VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX, + VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV y_ = + VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX, + VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV z_ = + VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX, + VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV w_ = + VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX ) VULKAN_HPP_NOEXCEPT + : x( x_ ) + , y( y_ ) + , z( z_ ) + , w( w_ ) + {} + + VULKAN_HPP_CONSTEXPR ViewportSwizzleNV( ViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ViewportSwizzleNV( VkViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ViewportSwizzleNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ViewportSwizzleNV & operator=( ViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ViewportSwizzleNV & operator=( VkViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & + setX( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x_ ) VULKAN_HPP_NOEXCEPT + { + x = x_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & + setY( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV y_ ) VULKAN_HPP_NOEXCEPT + { + y = y_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & + setZ( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV z_ ) VULKAN_HPP_NOEXCEPT + { + z = z_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & + setW( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV w_ ) VULKAN_HPP_NOEXCEPT + { + w = w_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkViewportSwizzleNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkViewportSwizzleNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( x, y, z, w ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ViewportSwizzleNV const & ) const = default; +#else + bool operator==( ViewportSwizzleNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( x == rhs.x ) && ( y == rhs.y ) && ( z == rhs.z ) && ( w == rhs.w ); +# endif + } + + bool operator!=( ViewportSwizzleNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX; + VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV y = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX; + VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV z = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX; + VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV w = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ViewportSwizzleNV is not nothrow_move_constructible!" ); + + struct PipelineViewportSwizzleStateCreateInfoNV + { + using NativeType = VkPipelineViewportSwizzleStateCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineViewportSwizzleStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineViewportSwizzleStateCreateInfoNV( + VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags_ = {}, + uint32_t viewportCount_ = {}, + const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV * pViewportSwizzles_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , viewportCount( viewportCount_ ) + , pViewportSwizzles( pViewportSwizzles_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineViewportSwizzleStateCreateInfoNV( + PipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineViewportSwizzleStateCreateInfoNV( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportSwizzleStateCreateInfoNV( + VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + viewportSwizzles_ ) + : flags( flags_ ) + , viewportCount( static_cast( viewportSwizzles_.size() ) ) + , pViewportSwizzles( viewportSwizzles_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineViewportSwizzleStateCreateInfoNV & + operator=( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportSwizzleStateCreateInfoNV & + operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV & + setFlags( VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV & + setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT + { + viewportCount = viewportCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV & + setPViewportSwizzles( const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV * pViewportSwizzles_ ) VULKAN_HPP_NOEXCEPT + { + pViewportSwizzles = pViewportSwizzles_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportSwizzleStateCreateInfoNV & setViewportSwizzles( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + viewportSwizzles_ ) VULKAN_HPP_NOEXCEPT + { + viewportCount = static_cast( viewportSwizzles_.size() ); + pViewportSwizzles = viewportSwizzles_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineViewportSwizzleStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineViewportSwizzleStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, viewportCount, pViewportSwizzles ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportSwizzleStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( viewportCount == rhs.viewportCount ) && ( pViewportSwizzles == rhs.pViewportSwizzles ); +# endif + } + + bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportSwizzleStateCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags = {}; + uint32_t viewportCount = {}; + const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV * pViewportSwizzles = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV ) == + sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineViewportSwizzleStateCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineViewportSwizzleStateCreateInfoNV; + }; + + struct ViewportWScalingNV + { + using NativeType = VkViewportWScalingNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ViewportWScalingNV( float xcoeff_ = {}, float ycoeff_ = {} ) VULKAN_HPP_NOEXCEPT + : xcoeff( xcoeff_ ) + , ycoeff( ycoeff_ ) + {} + + VULKAN_HPP_CONSTEXPR ViewportWScalingNV( ViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ViewportWScalingNV( VkViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ViewportWScalingNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ViewportWScalingNV & operator=( ViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ViewportWScalingNV & operator=( VkViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ViewportWScalingNV & setXcoeff( float xcoeff_ ) VULKAN_HPP_NOEXCEPT + { + xcoeff = xcoeff_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ViewportWScalingNV & setYcoeff( float ycoeff_ ) VULKAN_HPP_NOEXCEPT + { + ycoeff = ycoeff_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkViewportWScalingNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkViewportWScalingNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( xcoeff, ycoeff ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ViewportWScalingNV const & ) const = default; +#else + bool operator==( ViewportWScalingNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( xcoeff == rhs.xcoeff ) && ( ycoeff == rhs.ycoeff ); +# endif + } + + bool operator!=( ViewportWScalingNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float xcoeff = {}; + float ycoeff = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ViewportWScalingNV is not nothrow_move_constructible!" ); + + struct PipelineViewportWScalingStateCreateInfoNV + { + using NativeType = VkPipelineViewportWScalingStateCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::ePipelineViewportWScalingStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineViewportWScalingStateCreateInfoNV( + VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable_ = {}, + uint32_t viewportCount_ = {}, + const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * pViewportWScalings_ = {} ) VULKAN_HPP_NOEXCEPT + : viewportWScalingEnable( viewportWScalingEnable_ ) + , viewportCount( viewportCount_ ) + , pViewportWScalings( pViewportWScalings_ ) + {} + + VULKAN_HPP_CONSTEXPR PipelineViewportWScalingStateCreateInfoNV( + PipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PipelineViewportWScalingStateCreateInfoNV( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportWScalingStateCreateInfoNV( + VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + viewportWScalings_ ) + : viewportWScalingEnable( viewportWScalingEnable_ ) + , viewportCount( static_cast( viewportWScalings_.size() ) ) + , pViewportWScalings( viewportWScalings_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineViewportWScalingStateCreateInfoNV & + operator=( PipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportWScalingStateCreateInfoNV & + operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV & + setViewportWScalingEnable( VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable_ ) VULKAN_HPP_NOEXCEPT + { + viewportWScalingEnable = viewportWScalingEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV & + setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT + { + viewportCount = viewportCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV & + setPViewportWScalings( const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * pViewportWScalings_ ) VULKAN_HPP_NOEXCEPT + { + pViewportWScalings = pViewportWScalings_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportWScalingStateCreateInfoNV & setViewportWScalings( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + viewportWScalings_ ) VULKAN_HPP_NOEXCEPT + { + viewportCount = static_cast( viewportWScalings_.size() ); + pViewportWScalings = viewportWScalings_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPipelineViewportWScalingStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPipelineViewportWScalingStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, viewportWScalingEnable, viewportCount, pViewportWScalings ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportWScalingStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineViewportWScalingStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( viewportWScalingEnable == rhs.viewportWScalingEnable ) && ( viewportCount == rhs.viewportCount ) && + ( pViewportWScalings == rhs.pViewportWScalings ); +# endif + } + + bool operator!=( PipelineViewportWScalingStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportWScalingStateCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable = {}; + uint32_t viewportCount = {}; + const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * pViewportWScalings = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV ) == + sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "PipelineViewportWScalingStateCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PipelineViewportWScalingStateCreateInfoNV; + }; + +#if defined( VK_USE_PLATFORM_GGP ) + struct PresentFrameTokenGGP + { + using NativeType = VkPresentFrameTokenGGP; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentFrameTokenGGP; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PresentFrameTokenGGP( GgpFrameToken frameToken_ = {} ) VULKAN_HPP_NOEXCEPT + : frameToken( frameToken_ ) + {} + + VULKAN_HPP_CONSTEXPR PresentFrameTokenGGP( PresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentFrameTokenGGP( VkPresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT + : PresentFrameTokenGGP( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PresentFrameTokenGGP & operator=( PresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentFrameTokenGGP & operator=( VkPresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentFrameTokenGGP & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentFrameTokenGGP & setFrameToken( GgpFrameToken frameToken_ ) VULKAN_HPP_NOEXCEPT + { + frameToken = frameToken_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPresentFrameTokenGGP const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPresentFrameTokenGGP &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, frameToken ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( PresentFrameTokenGGP const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &frameToken, &rhs.frameToken, sizeof( GgpFrameToken ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( PresentFrameTokenGGP const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( memcmp( &frameToken, &rhs.frameToken, sizeof( GgpFrameToken ) ) == 0 ); + } + + bool operator!=( PresentFrameTokenGGP const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentFrameTokenGGP; + const void * pNext = {}; + GgpFrameToken frameToken = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP ) == sizeof( VkPresentFrameTokenGGP ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentFrameTokenGGP is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PresentFrameTokenGGP; + }; +#endif /*VK_USE_PLATFORM_GGP*/ + + struct PresentIdKHR + { + using NativeType = VkPresentIdKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentIdKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PresentIdKHR( uint32_t swapchainCount_ = {}, + const uint64_t * pPresentIds_ = {} ) VULKAN_HPP_NOEXCEPT + : swapchainCount( swapchainCount_ ) + , pPresentIds( pPresentIds_ ) + {} + + VULKAN_HPP_CONSTEXPR PresentIdKHR( PresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentIdKHR( VkPresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PresentIdKHR( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentIdKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & presentIds_ ) + : swapchainCount( static_cast( presentIds_.size() ) ), pPresentIds( presentIds_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PresentIdKHR & operator=( PresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentIdKHR & operator=( VkPresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentIdKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentIdKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentIdKHR & setPPresentIds( const uint64_t * pPresentIds_ ) VULKAN_HPP_NOEXCEPT + { + pPresentIds = pPresentIds_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentIdKHR & setPresentIds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & presentIds_ ) + VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( presentIds_.size() ); + pPresentIds = presentIds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPresentIdKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPresentIdKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchainCount, pPresentIds ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentIdKHR const & ) const = default; +#else + bool operator==( PresentIdKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && + ( pPresentIds == rhs.pPresentIds ); +# endif + } + + bool operator!=( PresentIdKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentIdKHR; + const void * pNext = {}; + uint32_t swapchainCount = {}; + const uint64_t * pPresentIds = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentIdKHR ) == sizeof( VkPresentIdKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentIdKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PresentIdKHR; + }; + + struct PresentInfoKHR + { + using NativeType = VkPresentInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PresentInfoKHR( uint32_t waitSemaphoreCount_ = {}, + const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ = {}, + uint32_t swapchainCount_ = {}, + const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains_ = {}, + const uint32_t * pImageIndices_ = {}, + VULKAN_HPP_NAMESPACE::Result * pResults_ = {} ) VULKAN_HPP_NOEXCEPT + : waitSemaphoreCount( waitSemaphoreCount_ ) + , pWaitSemaphores( pWaitSemaphores_ ) + , swapchainCount( swapchainCount_ ) + , pSwapchains( pSwapchains_ ) + , pImageIndices( pImageIndices_ ) + , pResults( pResults_ ) + {} + + VULKAN_HPP_CONSTEXPR PresentInfoKHR( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentInfoKHR( VkPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PresentInfoKHR( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentInfoKHR( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphores_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & swapchains_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & imageIndices_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & results_ = {} ) + : waitSemaphoreCount( static_cast( waitSemaphores_.size() ) ) + , pWaitSemaphores( waitSemaphores_.data() ) + , swapchainCount( static_cast( swapchains_.size() ) ) + , pSwapchains( swapchains_.data() ) + , pImageIndices( imageIndices_.data() ) + , pResults( results_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( swapchains_.size() == imageIndices_.size() ); + VULKAN_HPP_ASSERT( results_.empty() || ( swapchains_.size() == results_.size() ) ); + VULKAN_HPP_ASSERT( results_.empty() || ( imageIndices_.size() == results_.size() ) ); +# else + if ( swapchains_.size() != imageIndices_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::PresentInfoKHR::PresentInfoKHR: swapchains_.size() != imageIndices_.size()" ); + } + if ( !results_.empty() && ( swapchains_.size() != results_.size() ) ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::PresentInfoKHR::PresentInfoKHR: !results_.empty() && ( swapchains_.size() != results_.size() )" ); + } + if ( !results_.empty() && ( imageIndices_.size() != results_.size() ) ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::PresentInfoKHR::PresentInfoKHR: !results_.empty() && ( imageIndices_.size() != results_.size() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PresentInfoKHR & operator=( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentInfoKHR & operator=( VkPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = waitSemaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & + setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT + { + pWaitSemaphores = pWaitSemaphores_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentInfoKHR & setWaitSemaphores( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphores_ ) + VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = static_cast( waitSemaphores_.size() ); + pWaitSemaphores = waitSemaphores_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & + setPSwapchains( const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains_ ) VULKAN_HPP_NOEXCEPT + { + pSwapchains = pSwapchains_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentInfoKHR & setSwapchains( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & swapchains_ ) + VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( swapchains_.size() ); + pSwapchains = swapchains_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPImageIndices( const uint32_t * pImageIndices_ ) VULKAN_HPP_NOEXCEPT + { + pImageIndices = pImageIndices_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentInfoKHR & setImageIndices( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & imageIndices_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( imageIndices_.size() ); + pImageIndices = imageIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPResults( VULKAN_HPP_NAMESPACE::Result * pResults_ ) VULKAN_HPP_NOEXCEPT + { + pResults = pResults_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentInfoKHR & setResults( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & results_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( results_.size() ); + pResults = results_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPresentInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, waitSemaphoreCount, pWaitSemaphores, swapchainCount, pSwapchains, pImageIndices, pResults ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentInfoKHR const & ) const = default; +#else + bool operator==( PresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) && + ( pWaitSemaphores == rhs.pWaitSemaphores ) && ( swapchainCount == rhs.swapchainCount ) && + ( pSwapchains == rhs.pSwapchains ) && ( pImageIndices == rhs.pImageIndices ) && + ( pResults == rhs.pResults ); +# endif + } + + bool operator!=( PresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentInfoKHR; + const void * pNext = {}; + uint32_t waitSemaphoreCount = {}; + const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores = {}; + uint32_t swapchainCount = {}; + const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains = {}; + const uint32_t * pImageIndices = {}; + VULKAN_HPP_NAMESPACE::Result * pResults = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PresentInfoKHR; + }; + + struct RectLayerKHR + { + using NativeType = VkRectLayerKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RectLayerKHR( VULKAN_HPP_NAMESPACE::Offset2D offset_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D extent_ = {}, + uint32_t layer_ = {} ) VULKAN_HPP_NOEXCEPT + : offset( offset_ ) + , extent( extent_ ) + , layer( layer_ ) + {} + + VULKAN_HPP_CONSTEXPR RectLayerKHR( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RectLayerKHR( VkRectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : RectLayerKHR( *reinterpret_cast( &rhs ) ) + {} + + explicit RectLayerKHR( Rect2D const & rect2D, uint32_t layer_ = {} ) + : offset( rect2D.offset ), extent( rect2D.extent ), layer( layer_ ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RectLayerKHR & operator=( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RectLayerKHR & operator=( VkRectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & + setOffset( VULKAN_HPP_NAMESPACE::Offset2D const & offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & + setExtent( VULKAN_HPP_NAMESPACE::Extent2D const & extent_ ) VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & setLayer( uint32_t layer_ ) VULKAN_HPP_NOEXCEPT + { + layer = layer_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRectLayerKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRectLayerKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( offset, extent, layer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RectLayerKHR const & ) const = default; +#else + bool operator==( RectLayerKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( offset == rhs.offset ) && ( extent == rhs.extent ) && ( layer == rhs.layer ); +# endif + } + + bool operator!=( RectLayerKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::Offset2D offset = {}; + VULKAN_HPP_NAMESPACE::Extent2D extent = {}; + uint32_t layer = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RectLayerKHR ) == sizeof( VkRectLayerKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RectLayerKHR is not nothrow_move_constructible!" ); + + struct PresentRegionKHR + { + using NativeType = VkPresentRegionKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PresentRegionKHR( uint32_t rectangleCount_ = {}, + const VULKAN_HPP_NAMESPACE::RectLayerKHR * pRectangles_ = {} ) VULKAN_HPP_NOEXCEPT + : rectangleCount( rectangleCount_ ) + , pRectangles( pRectangles_ ) + {} + + VULKAN_HPP_CONSTEXPR PresentRegionKHR( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentRegionKHR( VkPresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PresentRegionKHR( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentRegionKHR( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & rectangles_ ) + : rectangleCount( static_cast( rectangles_.size() ) ), pRectangles( rectangles_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PresentRegionKHR & operator=( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentRegionKHR & operator=( VkPresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR & setRectangleCount( uint32_t rectangleCount_ ) VULKAN_HPP_NOEXCEPT + { + rectangleCount = rectangleCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR & + setPRectangles( const VULKAN_HPP_NAMESPACE::RectLayerKHR * pRectangles_ ) VULKAN_HPP_NOEXCEPT + { + pRectangles = pRectangles_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentRegionKHR & setRectangles( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & rectangles_ ) + VULKAN_HPP_NOEXCEPT + { + rectangleCount = static_cast( rectangles_.size() ); + pRectangles = rectangles_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPresentRegionKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPresentRegionKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( rectangleCount, pRectangles ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentRegionKHR const & ) const = default; +#else + bool operator==( PresentRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( rectangleCount == rhs.rectangleCount ) && ( pRectangles == rhs.pRectangles ); +# endif + } + + bool operator!=( PresentRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t rectangleCount = {}; + const VULKAN_HPP_NAMESPACE::RectLayerKHR * pRectangles = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentRegionKHR is not nothrow_move_constructible!" ); + + struct PresentRegionsKHR + { + using NativeType = VkPresentRegionsKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentRegionsKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PresentRegionsKHR( uint32_t swapchainCount_ = {}, + const VULKAN_HPP_NAMESPACE::PresentRegionKHR * pRegions_ = {} ) VULKAN_HPP_NOEXCEPT + : swapchainCount( swapchainCount_ ) + , pRegions( pRegions_ ) + {} + + VULKAN_HPP_CONSTEXPR PresentRegionsKHR( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentRegionsKHR( VkPresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PresentRegionsKHR( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentRegionsKHR( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) + : swapchainCount( static_cast( regions_.size() ) ), pRegions( regions_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PresentRegionsKHR & operator=( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentRegionsKHR & operator=( VkPresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & + setPRegions( const VULKAN_HPP_NAMESPACE::PresentRegionKHR * pRegions_ ) VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentRegionsKHR & setRegions( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) + VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPresentRegionsKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPresentRegionsKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchainCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentRegionsKHR const & ) const = default; +#else + bool operator==( PresentRegionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && + ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( PresentRegionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentRegionsKHR; + const void * pNext = {}; + uint32_t swapchainCount = {}; + const VULKAN_HPP_NAMESPACE::PresentRegionKHR * pRegions = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentRegionsKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PresentRegionsKHR; + }; + + struct PresentTimeGOOGLE + { + using NativeType = VkPresentTimeGOOGLE; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PresentTimeGOOGLE( uint32_t presentID_ = {}, + uint64_t desiredPresentTime_ = {} ) VULKAN_HPP_NOEXCEPT + : presentID( presentID_ ) + , desiredPresentTime( desiredPresentTime_ ) + {} + + VULKAN_HPP_CONSTEXPR PresentTimeGOOGLE( PresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT + : PresentTimeGOOGLE( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PresentTimeGOOGLE & operator=( PresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentTimeGOOGLE & operator=( VkPresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentTimeGOOGLE & setPresentID( uint32_t presentID_ ) VULKAN_HPP_NOEXCEPT + { + presentID = presentID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimeGOOGLE & + setDesiredPresentTime( uint64_t desiredPresentTime_ ) VULKAN_HPP_NOEXCEPT + { + desiredPresentTime = desiredPresentTime_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPresentTimeGOOGLE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPresentTimeGOOGLE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( presentID, desiredPresentTime ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentTimeGOOGLE const & ) const = default; +#else + bool operator==( PresentTimeGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( presentID == rhs.presentID ) && ( desiredPresentTime == rhs.desiredPresentTime ); +# endif + } + + bool operator!=( PresentTimeGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t presentID = {}; + uint64_t desiredPresentTime = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentTimeGOOGLE is not nothrow_move_constructible!" ); + + struct PresentTimesInfoGOOGLE + { + using NativeType = VkPresentTimesInfoGOOGLE; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentTimesInfoGOOGLE; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = {}, + const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE * pTimes_ = {} ) VULKAN_HPP_NOEXCEPT + : swapchainCount( swapchainCount_ ) + , pTimes( pTimes_ ) + {} + + VULKAN_HPP_CONSTEXPR PresentTimesInfoGOOGLE( PresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT + : PresentTimesInfoGOOGLE( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentTimesInfoGOOGLE( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & times_ ) + : swapchainCount( static_cast( times_.size() ) ), pTimes( times_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PresentTimesInfoGOOGLE & operator=( PresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentTimesInfoGOOGLE & operator=( VkPresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & + setPTimes( const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE * pTimes_ ) VULKAN_HPP_NOEXCEPT + { + pTimes = pTimes_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentTimesInfoGOOGLE & setTimes( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & times_ ) + VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( times_.size() ); + pTimes = times_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPresentTimesInfoGOOGLE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPresentTimesInfoGOOGLE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchainCount, pTimes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentTimesInfoGOOGLE const & ) const = default; +#else + bool operator==( PresentTimesInfoGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && + ( pTimes == rhs.pTimes ); +# endif + } + + bool operator!=( PresentTimesInfoGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentTimesInfoGOOGLE; + const void * pNext = {}; + uint32_t swapchainCount = {}; + const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE * pTimes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE ) == + sizeof( VkPresentTimesInfoGOOGLE ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentTimesInfoGOOGLE is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PresentTimesInfoGOOGLE; + }; + + struct PrivateDataSlotCreateInfo + { + using NativeType = VkPrivateDataSlotCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePrivateDataSlotCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PrivateDataSlotCreateInfo( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR + PrivateDataSlotCreateInfo( PrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PrivateDataSlotCreateInfo( VkPrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PrivateDataSlotCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PrivateDataSlotCreateInfo & operator=( PrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PrivateDataSlotCreateInfo & operator=( VkPrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkPrivateDataSlotCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkPrivateDataSlotCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PrivateDataSlotCreateInfo const & ) const = default; +#else + bool operator==( PrivateDataSlotCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( PrivateDataSlotCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePrivateDataSlotCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlags flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo ) == + sizeof( VkPrivateDataSlotCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PrivateDataSlotCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = PrivateDataSlotCreateInfo; + }; + using PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfo; + + struct ProtectedSubmitInfo + { + using NativeType = VkProtectedSubmitInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eProtectedSubmitInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ProtectedSubmitInfo( VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit_ = {} ) VULKAN_HPP_NOEXCEPT + : protectedSubmit( protectedSubmit_ ) + {} + + VULKAN_HPP_CONSTEXPR ProtectedSubmitInfo( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ProtectedSubmitInfo( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ProtectedSubmitInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ProtectedSubmitInfo & operator=( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ProtectedSubmitInfo & operator=( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo & + setProtectedSubmit( VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit_ ) VULKAN_HPP_NOEXCEPT + { + protectedSubmit = protectedSubmit_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkProtectedSubmitInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkProtectedSubmitInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, protectedSubmit ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ProtectedSubmitInfo const & ) const = default; +#else + bool operator==( ProtectedSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( protectedSubmit == rhs.protectedSubmit ); +# endif + } + + bool operator!=( ProtectedSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eProtectedSubmitInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo ) == sizeof( VkProtectedSubmitInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ProtectedSubmitInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ProtectedSubmitInfo; + }; + + struct QueryPoolCreateInfo + { + using NativeType = VkQueryPoolCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueryPoolCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueryPoolCreateInfo( + VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::QueryType queryType_ = VULKAN_HPP_NAMESPACE::QueryType::eOcclusion, + uint32_t queryCount_ = {}, + VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , queryType( queryType_ ) + , queryCount( queryCount_ ) + , pipelineStatistics( pipelineStatistics_ ) + {} + + VULKAN_HPP_CONSTEXPR QueryPoolCreateInfo( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : QueryPoolCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + QueryPoolCreateInfo & operator=( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueryPoolCreateInfo & operator=( VkQueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & + setQueryType( VULKAN_HPP_NAMESPACE::QueryType queryType_ ) VULKAN_HPP_NOEXCEPT + { + queryType = queryType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setQueryCount( uint32_t queryCount_ ) VULKAN_HPP_NOEXCEPT + { + queryCount = queryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & + setPipelineStatistics( VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ ) VULKAN_HPP_NOEXCEPT + { + pipelineStatistics = pipelineStatistics_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkQueryPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkQueryPoolCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, queryType, queryCount, pipelineStatistics ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueryPoolCreateInfo const & ) const = default; +#else + bool operator==( QueryPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( queryType == rhs.queryType ) && ( queryCount == rhs.queryCount ) && + ( pipelineStatistics == rhs.pipelineStatistics ); +# endif + } + + bool operator!=( QueryPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueryPoolCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::QueryType queryType = VULKAN_HPP_NAMESPACE::QueryType::eOcclusion; + uint32_t queryCount = {}; + VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueryPoolCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = QueryPoolCreateInfo; + }; + + struct QueryPoolPerformanceCreateInfoKHR + { + using NativeType = VkQueryPoolPerformanceCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eQueryPoolPerformanceCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueryPoolPerformanceCreateInfoKHR( uint32_t queueFamilyIndex_ = {}, + uint32_t counterIndexCount_ = {}, + const uint32_t * pCounterIndices_ = {} ) VULKAN_HPP_NOEXCEPT + : queueFamilyIndex( queueFamilyIndex_ ) + , counterIndexCount( counterIndexCount_ ) + , pCounterIndices( pCounterIndices_ ) + {} + + VULKAN_HPP_CONSTEXPR + QueryPoolPerformanceCreateInfoKHR( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueryPoolPerformanceCreateInfoKHR( VkQueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : QueryPoolPerformanceCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + QueryPoolPerformanceCreateInfoKHR( + uint32_t queueFamilyIndex_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & counterIndices_ ) + : queueFamilyIndex( queueFamilyIndex_ ) + , counterIndexCount( static_cast( counterIndices_.size() ) ) + , pCounterIndices( counterIndices_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + QueryPoolPerformanceCreateInfoKHR & + operator=( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueryPoolPerformanceCreateInfoKHR & operator=( VkQueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & + setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & + setCounterIndexCount( uint32_t counterIndexCount_ ) VULKAN_HPP_NOEXCEPT + { + counterIndexCount = counterIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & + setPCounterIndices( const uint32_t * pCounterIndices_ ) VULKAN_HPP_NOEXCEPT + { + pCounterIndices = pCounterIndices_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + QueryPoolPerformanceCreateInfoKHR & setCounterIndices( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & counterIndices_ ) VULKAN_HPP_NOEXCEPT + { + counterIndexCount = static_cast( counterIndices_.size() ); + pCounterIndices = counterIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkQueryPoolPerformanceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkQueryPoolPerformanceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, queueFamilyIndex, counterIndexCount, pCounterIndices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueryPoolPerformanceCreateInfoKHR const & ) const = default; +#else + bool operator==( QueryPoolPerformanceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueFamilyIndex == rhs.queueFamilyIndex ) && + ( counterIndexCount == rhs.counterIndexCount ) && ( pCounterIndices == rhs.pCounterIndices ); +# endif + } + + bool operator!=( QueryPoolPerformanceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueryPoolPerformanceCreateInfoKHR; + const void * pNext = {}; + uint32_t queueFamilyIndex = {}; + uint32_t counterIndexCount = {}; + const uint32_t * pCounterIndices = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR ) == + sizeof( VkQueryPoolPerformanceCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "QueryPoolPerformanceCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = QueryPoolPerformanceCreateInfoKHR; + }; + + struct QueryPoolPerformanceQueryCreateInfoINTEL + { + using NativeType = VkQueryPoolPerformanceQueryCreateInfoINTEL; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueryPoolPerformanceQueryCreateInfoINTEL( + VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling_ = + VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL::eManual ) VULKAN_HPP_NOEXCEPT + : performanceCountersSampling( performanceCountersSampling_ ) + {} + + VULKAN_HPP_CONSTEXPR QueryPoolPerformanceQueryCreateInfoINTEL( + QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueryPoolPerformanceQueryCreateInfoINTEL( VkQueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) + VULKAN_HPP_NOEXCEPT + : QueryPoolPerformanceQueryCreateInfoINTEL( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + QueryPoolPerformanceQueryCreateInfoINTEL & + operator=( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueryPoolPerformanceQueryCreateInfoINTEL & + operator=( VkQueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceQueryCreateInfoINTEL & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceQueryCreateInfoINTEL & setPerformanceCountersSampling( + VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling_ ) VULKAN_HPP_NOEXCEPT + { + performanceCountersSampling = performanceCountersSampling_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkQueryPoolPerformanceQueryCreateInfoINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkQueryPoolPerformanceQueryCreateInfoINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, performanceCountersSampling ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueryPoolPerformanceQueryCreateInfoINTEL const & ) const = default; +#else + bool operator==( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( performanceCountersSampling == rhs.performanceCountersSampling ); +# endif + } + + bool operator!=( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling = + VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL::eManual; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL ) == + sizeof( VkQueryPoolPerformanceQueryCreateInfoINTEL ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "QueryPoolPerformanceQueryCreateInfoINTEL is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = QueryPoolPerformanceQueryCreateInfoINTEL; + }; + using QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL; + + struct QueueFamilyCheckpointProperties2NV + { + using NativeType = VkQueueFamilyCheckpointProperties2NV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eQueueFamilyCheckpointProperties2NV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointProperties2NV( + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 checkpointExecutionStageMask_ = {} ) VULKAN_HPP_NOEXCEPT + : checkpointExecutionStageMask( checkpointExecutionStageMask_ ) + {} + + VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointProperties2NV( QueueFamilyCheckpointProperties2NV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyCheckpointProperties2NV( VkQueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT + : QueueFamilyCheckpointProperties2NV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + QueueFamilyCheckpointProperties2NV & + operator=( QueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyCheckpointProperties2NV & + operator=( VkQueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkQueueFamilyCheckpointProperties2NV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkQueueFamilyCheckpointProperties2NV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, checkpointExecutionStageMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueueFamilyCheckpointProperties2NV const & ) const = default; +#else + bool operator==( QueueFamilyCheckpointProperties2NV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( checkpointExecutionStageMask == rhs.checkpointExecutionStageMask ); +# endif + } + + bool operator!=( QueueFamilyCheckpointProperties2NV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueueFamilyCheckpointProperties2NV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 checkpointExecutionStageMask = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV ) == + sizeof( VkQueueFamilyCheckpointProperties2NV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "QueueFamilyCheckpointProperties2NV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = QueueFamilyCheckpointProperties2NV; + }; + + struct QueueFamilyCheckpointPropertiesNV + { + using NativeType = VkQueueFamilyCheckpointPropertiesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eQueueFamilyCheckpointPropertiesNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointPropertiesNV( + VULKAN_HPP_NAMESPACE::PipelineStageFlags checkpointExecutionStageMask_ = {} ) VULKAN_HPP_NOEXCEPT + : checkpointExecutionStageMask( checkpointExecutionStageMask_ ) + {} + + VULKAN_HPP_CONSTEXPR + QueueFamilyCheckpointPropertiesNV( QueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyCheckpointPropertiesNV( VkQueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : QueueFamilyCheckpointPropertiesNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + QueueFamilyCheckpointPropertiesNV & + operator=( QueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyCheckpointPropertiesNV & operator=( VkQueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkQueueFamilyCheckpointPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkQueueFamilyCheckpointPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, checkpointExecutionStageMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueueFamilyCheckpointPropertiesNV const & ) const = default; +#else + bool operator==( QueueFamilyCheckpointPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( checkpointExecutionStageMask == rhs.checkpointExecutionStageMask ); +# endif + } + + bool operator!=( QueueFamilyCheckpointPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueueFamilyCheckpointPropertiesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineStageFlags checkpointExecutionStageMask = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV ) == + sizeof( VkQueueFamilyCheckpointPropertiesNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "QueueFamilyCheckpointPropertiesNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = QueueFamilyCheckpointPropertiesNV; + }; + + struct QueueFamilyGlobalPriorityPropertiesKHR + { + using NativeType = VkQueueFamilyGlobalPriorityPropertiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eQueueFamilyGlobalPriorityPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 QueueFamilyGlobalPriorityPropertiesKHR( + uint32_t priorityCount_ = {}, + std::array const & + priorities_ = { { VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow, + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow, + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow, + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow, + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow, + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow, + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow, + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow, + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow, + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow, + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow, + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow, + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow, + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow, + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow, + VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow } } ) VULKAN_HPP_NOEXCEPT + : priorityCount( priorityCount_ ) + , priorities( priorities_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 QueueFamilyGlobalPriorityPropertiesKHR( QueueFamilyGlobalPriorityPropertiesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyGlobalPriorityPropertiesKHR( VkQueueFamilyGlobalPriorityPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : QueueFamilyGlobalPriorityPropertiesKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + QueueFamilyGlobalPriorityPropertiesKHR & + operator=( QueueFamilyGlobalPriorityPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyGlobalPriorityPropertiesKHR & + operator=( VkQueueFamilyGlobalPriorityPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 QueueFamilyGlobalPriorityPropertiesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueueFamilyGlobalPriorityPropertiesKHR & + setPriorityCount( uint32_t priorityCount_ ) VULKAN_HPP_NOEXCEPT + { + priorityCount = priorityCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueueFamilyGlobalPriorityPropertiesKHR & setPriorities( + std::array priorities_ ) + VULKAN_HPP_NOEXCEPT + { + priorities = priorities_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkQueueFamilyGlobalPriorityPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkQueueFamilyGlobalPriorityPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, priorityCount, priorities ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueueFamilyGlobalPriorityPropertiesKHR const & ) const = default; +#else + bool operator==( QueueFamilyGlobalPriorityPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( priorityCount == rhs.priorityCount ) && + ( priorities == rhs.priorities ); +# endif + } + + bool operator!=( QueueFamilyGlobalPriorityPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueueFamilyGlobalPriorityPropertiesKHR; + void * pNext = {}; + uint32_t priorityCount = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D + priorities = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesKHR ) == + sizeof( VkQueueFamilyGlobalPriorityPropertiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "QueueFamilyGlobalPriorityPropertiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = QueueFamilyGlobalPriorityPropertiesKHR; + }; + using QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityPropertiesKHR; + + struct QueueFamilyProperties + { + using NativeType = VkQueueFamilyProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + QueueFamilyProperties( VULKAN_HPP_NAMESPACE::QueueFlags queueFlags_ = {}, + uint32_t queueCount_ = {}, + uint32_t timestampValidBits_ = {}, + VULKAN_HPP_NAMESPACE::Extent3D minImageTransferGranularity_ = {} ) VULKAN_HPP_NOEXCEPT + : queueFlags( queueFlags_ ) + , queueCount( queueCount_ ) + , timestampValidBits( timestampValidBits_ ) + , minImageTransferGranularity( minImageTransferGranularity_ ) + {} + + VULKAN_HPP_CONSTEXPR QueueFamilyProperties( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyProperties( VkQueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : QueueFamilyProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + QueueFamilyProperties & operator=( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyProperties & operator=( VkQueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkQueueFamilyProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkQueueFamilyProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( queueFlags, queueCount, timestampValidBits, minImageTransferGranularity ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueueFamilyProperties const & ) const = default; +#else + bool operator==( QueueFamilyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( queueFlags == rhs.queueFlags ) && ( queueCount == rhs.queueCount ) && + ( timestampValidBits == rhs.timestampValidBits ) && + ( minImageTransferGranularity == rhs.minImageTransferGranularity ); +# endif + } + + bool operator!=( QueueFamilyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::QueueFlags queueFlags = {}; + uint32_t queueCount = {}; + uint32_t timestampValidBits = {}; + VULKAN_HPP_NAMESPACE::Extent3D minImageTransferGranularity = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueueFamilyProperties is not nothrow_move_constructible!" ); + + struct QueueFamilyProperties2 + { + using NativeType = VkQueueFamilyProperties2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueueFamilyProperties2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueueFamilyProperties2( + VULKAN_HPP_NAMESPACE::QueueFamilyProperties queueFamilyProperties_ = {} ) VULKAN_HPP_NOEXCEPT + : queueFamilyProperties( queueFamilyProperties_ ) + {} + + VULKAN_HPP_CONSTEXPR QueueFamilyProperties2( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyProperties2( VkQueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + : QueueFamilyProperties2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + QueueFamilyProperties2 & operator=( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyProperties2 & operator=( VkQueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkQueueFamilyProperties2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkQueueFamilyProperties2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, queueFamilyProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueueFamilyProperties2 const & ) const = default; +#else + bool operator==( QueueFamilyProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueFamilyProperties == rhs.queueFamilyProperties ); +# endif + } + + bool operator!=( QueueFamilyProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueueFamilyProperties2; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::QueueFamilyProperties queueFamilyProperties = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyProperties2 ) == + sizeof( VkQueueFamilyProperties2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueueFamilyProperties2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = QueueFamilyProperties2; + }; + using QueueFamilyProperties2KHR = QueueFamilyProperties2; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct QueueFamilyQueryResultStatusProperties2KHR + { + using NativeType = VkQueueFamilyQueryResultStatusProperties2KHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eQueueFamilyQueryResultStatusProperties2KHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + QueueFamilyQueryResultStatusProperties2KHR( VULKAN_HPP_NAMESPACE::Bool32 supported_ = {} ) VULKAN_HPP_NOEXCEPT + : supported( supported_ ) + {} + + VULKAN_HPP_CONSTEXPR QueueFamilyQueryResultStatusProperties2KHR( + QueueFamilyQueryResultStatusProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyQueryResultStatusProperties2KHR( VkQueueFamilyQueryResultStatusProperties2KHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : QueueFamilyQueryResultStatusProperties2KHR( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + QueueFamilyQueryResultStatusProperties2KHR & + operator=( QueueFamilyQueryResultStatusProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyQueryResultStatusProperties2KHR & + operator=( VkQueueFamilyQueryResultStatusProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 QueueFamilyQueryResultStatusProperties2KHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueueFamilyQueryResultStatusProperties2KHR & + setSupported( VULKAN_HPP_NAMESPACE::Bool32 supported_ ) VULKAN_HPP_NOEXCEPT + { + supported = supported_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkQueueFamilyQueryResultStatusProperties2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkQueueFamilyQueryResultStatusProperties2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, supported ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueueFamilyQueryResultStatusProperties2KHR const & ) const = default; +# else + bool operator==( QueueFamilyQueryResultStatusProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supported == rhs.supported ); +# endif + } + + bool operator!=( QueueFamilyQueryResultStatusProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueueFamilyQueryResultStatusProperties2KHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 supported = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusProperties2KHR ) == + sizeof( VkQueueFamilyQueryResultStatusProperties2KHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "QueueFamilyQueryResultStatusProperties2KHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = QueueFamilyQueryResultStatusProperties2KHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + struct RayTracingShaderGroupCreateInfoKHR + { + using NativeType = VkRayTracingShaderGroupCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eRayTracingShaderGroupCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + RayTracingShaderGroupCreateInfoKHR( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ = + VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral, + uint32_t generalShader_ = {}, + uint32_t closestHitShader_ = {}, + uint32_t anyHitShader_ = {}, + uint32_t intersectionShader_ = {}, + const void * pShaderGroupCaptureReplayHandle_ = {} ) VULKAN_HPP_NOEXCEPT + : type( type_ ) + , generalShader( generalShader_ ) + , closestHitShader( closestHitShader_ ) + , anyHitShader( anyHitShader_ ) + , intersectionShader( intersectionShader_ ) + , pShaderGroupCaptureReplayHandle( pShaderGroupCaptureReplayHandle_ ) + {} + + VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoKHR( RayTracingShaderGroupCreateInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + RayTracingShaderGroupCreateInfoKHR( VkRayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : RayTracingShaderGroupCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RayTracingShaderGroupCreateInfoKHR & + operator=( RayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RayTracingShaderGroupCreateInfoKHR & + operator=( VkRayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & + setType( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & + setGeneralShader( uint32_t generalShader_ ) VULKAN_HPP_NOEXCEPT + { + generalShader = generalShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & + setClosestHitShader( uint32_t closestHitShader_ ) VULKAN_HPP_NOEXCEPT + { + closestHitShader = closestHitShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & + setAnyHitShader( uint32_t anyHitShader_ ) VULKAN_HPP_NOEXCEPT + { + anyHitShader = anyHitShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & + setIntersectionShader( uint32_t intersectionShader_ ) VULKAN_HPP_NOEXCEPT + { + intersectionShader = intersectionShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & + setPShaderGroupCaptureReplayHandle( const void * pShaderGroupCaptureReplayHandle_ ) VULKAN_HPP_NOEXCEPT + { + pShaderGroupCaptureReplayHandle = pShaderGroupCaptureReplayHandle_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRayTracingShaderGroupCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRayTracingShaderGroupCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + type, + generalShader, + closestHitShader, + anyHitShader, + intersectionShader, + pShaderGroupCaptureReplayHandle ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RayTracingShaderGroupCreateInfoKHR const & ) const = default; +#else + bool operator==( RayTracingShaderGroupCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && + ( generalShader == rhs.generalShader ) && ( closestHitShader == rhs.closestHitShader ) && + ( anyHitShader == rhs.anyHitShader ) && ( intersectionShader == rhs.intersectionShader ) && + ( pShaderGroupCaptureReplayHandle == rhs.pShaderGroupCaptureReplayHandle ); +# endif + } + + bool operator!=( RayTracingShaderGroupCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingShaderGroupCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type = + VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral; + uint32_t generalShader = {}; + uint32_t closestHitShader = {}; + uint32_t anyHitShader = {}; + uint32_t intersectionShader = {}; + const void * pShaderGroupCaptureReplayHandle = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR ) == + sizeof( VkRayTracingShaderGroupCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "RayTracingShaderGroupCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RayTracingShaderGroupCreateInfoKHR; + }; + + struct RayTracingPipelineInterfaceCreateInfoKHR + { + using NativeType = VkRayTracingPipelineInterfaceCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eRayTracingPipelineInterfaceCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + RayTracingPipelineInterfaceCreateInfoKHR( uint32_t maxPipelineRayPayloadSize_ = {}, + uint32_t maxPipelineRayHitAttributeSize_ = {} ) VULKAN_HPP_NOEXCEPT + : maxPipelineRayPayloadSize( maxPipelineRayPayloadSize_ ) + , maxPipelineRayHitAttributeSize( maxPipelineRayHitAttributeSize_ ) + {} + + VULKAN_HPP_CONSTEXPR RayTracingPipelineInterfaceCreateInfoKHR( + RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RayTracingPipelineInterfaceCreateInfoKHR( VkRayTracingPipelineInterfaceCreateInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : RayTracingPipelineInterfaceCreateInfoKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RayTracingPipelineInterfaceCreateInfoKHR & + operator=( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RayTracingPipelineInterfaceCreateInfoKHR & + operator=( VkRayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR & + setMaxPipelineRayPayloadSize( uint32_t maxPipelineRayPayloadSize_ ) VULKAN_HPP_NOEXCEPT + { + maxPipelineRayPayloadSize = maxPipelineRayPayloadSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR & + setMaxPipelineRayHitAttributeSize( uint32_t maxPipelineRayHitAttributeSize_ ) VULKAN_HPP_NOEXCEPT + { + maxPipelineRayHitAttributeSize = maxPipelineRayHitAttributeSize_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRayTracingPipelineInterfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRayTracingPipelineInterfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxPipelineRayPayloadSize, maxPipelineRayHitAttributeSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RayTracingPipelineInterfaceCreateInfoKHR const & ) const = default; +#else + bool operator==( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( maxPipelineRayPayloadSize == rhs.maxPipelineRayPayloadSize ) && + ( maxPipelineRayHitAttributeSize == rhs.maxPipelineRayHitAttributeSize ); +# endif + } + + bool operator!=( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingPipelineInterfaceCreateInfoKHR; + const void * pNext = {}; + uint32_t maxPipelineRayPayloadSize = {}; + uint32_t maxPipelineRayHitAttributeSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR ) == + sizeof( VkRayTracingPipelineInterfaceCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "RayTracingPipelineInterfaceCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RayTracingPipelineInterfaceCreateInfoKHR; + }; + + struct RayTracingPipelineCreateInfoKHR + { + using NativeType = VkRayTracingPipelineCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRayTracingPipelineCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoKHR( + VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ = {}, + uint32_t stageCount_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ = {}, + uint32_t groupCount_ = {}, + const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR * pGroups_ = {}, + uint32_t maxPipelineRayRecursionDepth_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR * pLibraryInfo_ = {}, + const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * pLibraryInterface_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState_ = {}, + VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, + VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , stageCount( stageCount_ ) + , pStages( pStages_ ) + , groupCount( groupCount_ ) + , pGroups( pGroups_ ) + , maxPipelineRayRecursionDepth( maxPipelineRayRecursionDepth_ ) + , pLibraryInfo( pLibraryInfo_ ) + , pLibraryInterface( pLibraryInterface_ ) + , pDynamicState( pDynamicState_ ) + , layout( layout_ ) + , basePipelineHandle( basePipelineHandle_ ) + , basePipelineIndex( basePipelineIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR + RayTracingPipelineCreateInfoKHR( RayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RayTracingPipelineCreateInfoKHR( VkRayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : RayTracingPipelineCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RayTracingPipelineCreateInfoKHR( + VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + stages_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR> const & groups_ = {}, + uint32_t maxPipelineRayRecursionDepth_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR * pLibraryInfo_ = {}, + const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * pLibraryInterface_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState_ = {}, + VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, + VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {} ) + : flags( flags_ ) + , stageCount( static_cast( stages_.size() ) ) + , pStages( stages_.data() ) + , groupCount( static_cast( groups_.size() ) ) + , pGroups( groups_.data() ) + , maxPipelineRayRecursionDepth( maxPipelineRayRecursionDepth_ ) + , pLibraryInfo( pLibraryInfo_ ) + , pLibraryInterface( pLibraryInterface_ ) + , pDynamicState( pDynamicState_ ) + , layout( layout_ ) + , basePipelineHandle( basePipelineHandle_ ) + , basePipelineIndex( basePipelineIndex_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RayTracingPipelineCreateInfoKHR & + operator=( RayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RayTracingPipelineCreateInfoKHR & operator=( VkRayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT + { + stageCount = stageCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & + setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT + { + pStages = pStages_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RayTracingPipelineCreateInfoKHR & setStages( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + stages_ ) VULKAN_HPP_NOEXCEPT + { + stageCount = static_cast( stages_.size() ); + pStages = stages_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setGroupCount( uint32_t groupCount_ ) VULKAN_HPP_NOEXCEPT + { + groupCount = groupCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & + setPGroups( const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR * pGroups_ ) VULKAN_HPP_NOEXCEPT + { + pGroups = pGroups_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RayTracingPipelineCreateInfoKHR & + setGroups( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR> const & groups_ ) VULKAN_HPP_NOEXCEPT + { + groupCount = static_cast( groups_.size() ); + pGroups = groups_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & + setMaxPipelineRayRecursionDepth( uint32_t maxPipelineRayRecursionDepth_ ) VULKAN_HPP_NOEXCEPT + { + maxPipelineRayRecursionDepth = maxPipelineRayRecursionDepth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & + setPLibraryInfo( const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR * pLibraryInfo_ ) VULKAN_HPP_NOEXCEPT + { + pLibraryInfo = pLibraryInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setPLibraryInterface( + const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * pLibraryInterface_ ) VULKAN_HPP_NOEXCEPT + { + pLibraryInterface = pLibraryInterface_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setPDynamicState( + const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState_ ) VULKAN_HPP_NOEXCEPT + { + pDynamicState = pDynamicState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & + setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & + setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT + { + basePipelineHandle = basePipelineHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & + setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT + { + basePipelineIndex = basePipelineIndex_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRayTracingPipelineCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRayTracingPipelineCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + stageCount, + pStages, + groupCount, + pGroups, + maxPipelineRayRecursionDepth, + pLibraryInfo, + pLibraryInterface, + pDynamicState, + layout, + basePipelineHandle, + basePipelineIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RayTracingPipelineCreateInfoKHR const & ) const = default; +#else + bool operator==( RayTracingPipelineCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) && ( groupCount == rhs.groupCount ) && + ( pGroups == rhs.pGroups ) && ( maxPipelineRayRecursionDepth == rhs.maxPipelineRayRecursionDepth ) && + ( pLibraryInfo == rhs.pLibraryInfo ) && ( pLibraryInterface == rhs.pLibraryInterface ) && + ( pDynamicState == rhs.pDynamicState ) && ( layout == rhs.layout ) && + ( basePipelineHandle == rhs.basePipelineHandle ) && ( basePipelineIndex == rhs.basePipelineIndex ); +# endif + } + + bool operator!=( RayTracingPipelineCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingPipelineCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags = {}; + uint32_t stageCount = {}; + const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages = {}; + uint32_t groupCount = {}; + const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR * pGroups = {}; + uint32_t maxPipelineRayRecursionDepth = {}; + const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR * pLibraryInfo = {}; + const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * pLibraryInterface = {}; + const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState = {}; + VULKAN_HPP_NAMESPACE::PipelineLayout layout = {}; + VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle = {}; + int32_t basePipelineIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR ) == + sizeof( VkRayTracingPipelineCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "RayTracingPipelineCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RayTracingPipelineCreateInfoKHR; + }; + + struct RayTracingShaderGroupCreateInfoNV + { + using NativeType = VkRayTracingShaderGroupCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eRayTracingShaderGroupCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + RayTracingShaderGroupCreateInfoNV( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ = + VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral, + uint32_t generalShader_ = {}, + uint32_t closestHitShader_ = {}, + uint32_t anyHitShader_ = {}, + uint32_t intersectionShader_ = {} ) VULKAN_HPP_NOEXCEPT + : type( type_ ) + , generalShader( generalShader_ ) + , closestHitShader( closestHitShader_ ) + , anyHitShader( anyHitShader_ ) + , intersectionShader( intersectionShader_ ) + {} + + VULKAN_HPP_CONSTEXPR + RayTracingShaderGroupCreateInfoNV( RayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RayTracingShaderGroupCreateInfoNV( VkRayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : RayTracingShaderGroupCreateInfoNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RayTracingShaderGroupCreateInfoNV & + operator=( RayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RayTracingShaderGroupCreateInfoNV & operator=( VkRayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & + setType( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & + setGeneralShader( uint32_t generalShader_ ) VULKAN_HPP_NOEXCEPT + { + generalShader = generalShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & + setClosestHitShader( uint32_t closestHitShader_ ) VULKAN_HPP_NOEXCEPT + { + closestHitShader = closestHitShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & + setAnyHitShader( uint32_t anyHitShader_ ) VULKAN_HPP_NOEXCEPT + { + anyHitShader = anyHitShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & + setIntersectionShader( uint32_t intersectionShader_ ) VULKAN_HPP_NOEXCEPT + { + intersectionShader = intersectionShader_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRayTracingShaderGroupCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRayTracingShaderGroupCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, generalShader, closestHitShader, anyHitShader, intersectionShader ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RayTracingShaderGroupCreateInfoNV const & ) const = default; +#else + bool operator==( RayTracingShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && + ( generalShader == rhs.generalShader ) && ( closestHitShader == rhs.closestHitShader ) && + ( anyHitShader == rhs.anyHitShader ) && ( intersectionShader == rhs.intersectionShader ); +# endif + } + + bool operator!=( RayTracingShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingShaderGroupCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type = + VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral; + uint32_t generalShader = {}; + uint32_t closestHitShader = {}; + uint32_t anyHitShader = {}; + uint32_t intersectionShader = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV ) == + sizeof( VkRayTracingShaderGroupCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "RayTracingShaderGroupCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RayTracingShaderGroupCreateInfoNV; + }; + + struct RayTracingPipelineCreateInfoNV + { + using NativeType = VkRayTracingPipelineCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRayTracingPipelineCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + RayTracingPipelineCreateInfoNV( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ = {}, + uint32_t stageCount_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ = {}, + uint32_t groupCount_ = {}, + const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV * pGroups_ = {}, + uint32_t maxRecursionDepth_ = {}, + VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, + VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , stageCount( stageCount_ ) + , pStages( pStages_ ) + , groupCount( groupCount_ ) + , pGroups( pGroups_ ) + , maxRecursionDepth( maxRecursionDepth_ ) + , layout( layout_ ) + , basePipelineHandle( basePipelineHandle_ ) + , basePipelineIndex( basePipelineIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR + RayTracingPipelineCreateInfoNV( RayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RayTracingPipelineCreateInfoNV( VkRayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : RayTracingPipelineCreateInfoNV( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RayTracingPipelineCreateInfoNV( + VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + stages_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV> const & groups_ = {}, + uint32_t maxRecursionDepth_ = {}, + VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, + VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {} ) + : flags( flags_ ) + , stageCount( static_cast( stages_.size() ) ) + , pStages( stages_.data() ) + , groupCount( static_cast( groups_.size() ) ) + , pGroups( groups_.data() ) + , maxRecursionDepth( maxRecursionDepth_ ) + , layout( layout_ ) + , basePipelineHandle( basePipelineHandle_ ) + , basePipelineIndex( basePipelineIndex_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RayTracingPipelineCreateInfoNV & + operator=( RayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RayTracingPipelineCreateInfoNV & operator=( VkRayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & + setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT + { + stageCount = stageCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & + setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT + { + pStages = pStages_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RayTracingPipelineCreateInfoNV & setStages( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + stages_ ) VULKAN_HPP_NOEXCEPT + { + stageCount = static_cast( stages_.size() ); + pStages = stages_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setGroupCount( uint32_t groupCount_ ) VULKAN_HPP_NOEXCEPT + { + groupCount = groupCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & + setPGroups( const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV * pGroups_ ) VULKAN_HPP_NOEXCEPT + { + pGroups = pGroups_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RayTracingPipelineCreateInfoNV & + setGroups( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV> const & groups_ ) VULKAN_HPP_NOEXCEPT + { + groupCount = static_cast( groups_.size() ); + pGroups = groups_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & + setMaxRecursionDepth( uint32_t maxRecursionDepth_ ) VULKAN_HPP_NOEXCEPT + { + maxRecursionDepth = maxRecursionDepth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & + setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & + setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT + { + basePipelineHandle = basePipelineHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & + setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT + { + basePipelineIndex = basePipelineIndex_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRayTracingPipelineCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRayTracingPipelineCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + stageCount, + pStages, + groupCount, + pGroups, + maxRecursionDepth, + layout, + basePipelineHandle, + basePipelineIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RayTracingPipelineCreateInfoNV const & ) const = default; +#else + bool operator==( RayTracingPipelineCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) && ( groupCount == rhs.groupCount ) && + ( pGroups == rhs.pGroups ) && ( maxRecursionDepth == rhs.maxRecursionDepth ) && ( layout == rhs.layout ) && + ( basePipelineHandle == rhs.basePipelineHandle ) && ( basePipelineIndex == rhs.basePipelineIndex ); +# endif + } + + bool operator!=( RayTracingPipelineCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingPipelineCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags = {}; + uint32_t stageCount = {}; + const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages = {}; + uint32_t groupCount = {}; + const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV * pGroups = {}; + uint32_t maxRecursionDepth = {}; + VULKAN_HPP_NAMESPACE::PipelineLayout layout = {}; + VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle = {}; + int32_t basePipelineIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV ) == + sizeof( VkRayTracingPipelineCreateInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "RayTracingPipelineCreateInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RayTracingPipelineCreateInfoNV; + }; + + struct RefreshCycleDurationGOOGLE + { + using NativeType = VkRefreshCycleDurationGOOGLE; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = {} ) VULKAN_HPP_NOEXCEPT + : refreshDuration( refreshDuration_ ) + {} + + VULKAN_HPP_CONSTEXPR + RefreshCycleDurationGOOGLE( RefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT + : RefreshCycleDurationGOOGLE( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RefreshCycleDurationGOOGLE & operator=( RefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RefreshCycleDurationGOOGLE & operator=( VkRefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkRefreshCycleDurationGOOGLE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRefreshCycleDurationGOOGLE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( refreshDuration ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RefreshCycleDurationGOOGLE const & ) const = default; +#else + bool operator==( RefreshCycleDurationGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( refreshDuration == rhs.refreshDuration ); +# endif + } + + bool operator!=( RefreshCycleDurationGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint64_t refreshDuration = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE ) == + sizeof( VkRefreshCycleDurationGOOGLE ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RefreshCycleDurationGOOGLE is not nothrow_move_constructible!" ); + + struct RenderPassAttachmentBeginInfo + { + using NativeType = VkRenderPassAttachmentBeginInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassAttachmentBeginInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + RenderPassAttachmentBeginInfo( uint32_t attachmentCount_ = {}, + const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_ = {} ) VULKAN_HPP_NOEXCEPT + : attachmentCount( attachmentCount_ ) + , pAttachments( pAttachments_ ) + {} + + VULKAN_HPP_CONSTEXPR + RenderPassAttachmentBeginInfo( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassAttachmentBeginInfo( VkRenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassAttachmentBeginInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassAttachmentBeginInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachments_ ) + : attachmentCount( static_cast( attachments_.size() ) ), pAttachments( attachments_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RenderPassAttachmentBeginInfo & + operator=( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassAttachmentBeginInfo & operator=( VkRenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & + setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & + setPAttachments( const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_ ) VULKAN_HPP_NOEXCEPT + { + pAttachments = pAttachments_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassAttachmentBeginInfo & setAttachments( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachments_ ) + VULKAN_HPP_NOEXCEPT + { + attachmentCount = static_cast( attachments_.size() ); + pAttachments = attachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRenderPassAttachmentBeginInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRenderPassAttachmentBeginInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, attachmentCount, pAttachments ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassAttachmentBeginInfo const & ) const = default; +#else + bool operator==( RenderPassAttachmentBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentCount == rhs.attachmentCount ) && + ( pAttachments == rhs.pAttachments ); +# endif + } + + bool operator!=( RenderPassAttachmentBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassAttachmentBeginInfo; + const void * pNext = {}; + uint32_t attachmentCount = {}; + const VULKAN_HPP_NAMESPACE::ImageView * pAttachments = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo ) == + sizeof( VkRenderPassAttachmentBeginInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "RenderPassAttachmentBeginInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RenderPassAttachmentBeginInfo; + }; + using RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo; + + struct RenderPassBeginInfo + { + using NativeType = VkRenderPassBeginInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassBeginInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + RenderPassBeginInfo( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, + VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ = {}, + VULKAN_HPP_NAMESPACE::Rect2D renderArea_ = {}, + uint32_t clearValueCount_ = {}, + const VULKAN_HPP_NAMESPACE::ClearValue * pClearValues_ = {} ) VULKAN_HPP_NOEXCEPT + : renderPass( renderPass_ ) + , framebuffer( framebuffer_ ) + , renderArea( renderArea_ ) + , clearValueCount( clearValueCount_ ) + , pClearValues( pClearValues_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassBeginInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassBeginInfo( + VULKAN_HPP_NAMESPACE::RenderPass renderPass_, + VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_, + VULKAN_HPP_NAMESPACE::Rect2D renderArea_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & clearValues_ ) + : renderPass( renderPass_ ) + , framebuffer( framebuffer_ ) + , renderArea( renderArea_ ) + , clearValueCount( static_cast( clearValues_.size() ) ) + , pClearValues( clearValues_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RenderPassBeginInfo & operator=( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassBeginInfo & operator=( VkRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & + setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT + { + renderPass = renderPass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & + setFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ ) VULKAN_HPP_NOEXCEPT + { + framebuffer = framebuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & + setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT + { + renderArea = renderArea_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setClearValueCount( uint32_t clearValueCount_ ) VULKAN_HPP_NOEXCEPT + { + clearValueCount = clearValueCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & + setPClearValues( const VULKAN_HPP_NAMESPACE::ClearValue * pClearValues_ ) VULKAN_HPP_NOEXCEPT + { + pClearValues = pClearValues_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassBeginInfo & setClearValues( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & clearValues_ ) + VULKAN_HPP_NOEXCEPT + { + clearValueCount = static_cast( clearValues_.size() ); + pClearValues = clearValues_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRenderPassBeginInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRenderPassBeginInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, renderPass, framebuffer, renderArea, clearValueCount, pClearValues ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassBeginInfo const & ) const = default; +#else + bool operator==( RenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPass == rhs.renderPass ) && + ( framebuffer == rhs.framebuffer ) && ( renderArea == rhs.renderArea ) && + ( clearValueCount == rhs.clearValueCount ) && ( pClearValues == rhs.pClearValues ); +# endif + } + + bool operator!=( RenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassBeginInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::RenderPass renderPass = {}; + VULKAN_HPP_NAMESPACE::Framebuffer framebuffer = {}; + VULKAN_HPP_NAMESPACE::Rect2D renderArea = {}; + uint32_t clearValueCount = {}; + const VULKAN_HPP_NAMESPACE::ClearValue * pClearValues = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassBeginInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RenderPassBeginInfo; + }; + + struct SubpassDescription + { + using NativeType = VkSubpassDescription; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassDescription( + VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, + uint32_t inputAttachmentCount_ = {}, + const VULKAN_HPP_NAMESPACE::AttachmentReference * pInputAttachments_ = {}, + uint32_t colorAttachmentCount_ = {}, + const VULKAN_HPP_NAMESPACE::AttachmentReference * pColorAttachments_ = {}, + const VULKAN_HPP_NAMESPACE::AttachmentReference * pResolveAttachments_ = {}, + const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment_ = {}, + uint32_t preserveAttachmentCount_ = {}, + const uint32_t * pPreserveAttachments_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , pipelineBindPoint( pipelineBindPoint_ ) + , inputAttachmentCount( inputAttachmentCount_ ) + , pInputAttachments( pInputAttachments_ ) + , colorAttachmentCount( colorAttachmentCount_ ) + , pColorAttachments( pColorAttachments_ ) + , pResolveAttachments( pResolveAttachments_ ) + , pDepthStencilAttachment( pDepthStencilAttachment_ ) + , preserveAttachmentCount( preserveAttachmentCount_ ) + , pPreserveAttachments( pPreserveAttachments_ ) + {} + + VULKAN_HPP_CONSTEXPR SubpassDescription( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassDescription( VkSubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT + : SubpassDescription( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription( + VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_, + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + inputAttachments_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + colorAttachments_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + resolveAttachments_ = {}, + const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & preserveAttachments_ = {} ) + : flags( flags_ ) + , pipelineBindPoint( pipelineBindPoint_ ) + , inputAttachmentCount( static_cast( inputAttachments_.size() ) ) + , pInputAttachments( inputAttachments_.data() ) + , colorAttachmentCount( static_cast( colorAttachments_.size() ) ) + , pColorAttachments( colorAttachments_.data() ) + , pResolveAttachments( resolveAttachments_.data() ) + , pDepthStencilAttachment( pDepthStencilAttachment_ ) + , preserveAttachmentCount( static_cast( preserveAttachments_.size() ) ) + , pPreserveAttachments( preserveAttachments_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( resolveAttachments_.empty() || ( colorAttachments_.size() == resolveAttachments_.size() ) ); +# else + if ( !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() ) ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::SubpassDescription::SubpassDescription: !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SubpassDescription & operator=( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassDescription & operator=( VkSubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & + setFlags( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & + setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & + setInputAttachmentCount( uint32_t inputAttachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + inputAttachmentCount = inputAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & + setPInputAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference * pInputAttachments_ ) VULKAN_HPP_NOEXCEPT + { + pInputAttachments = pInputAttachments_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription & setInputAttachments( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + inputAttachments_ ) VULKAN_HPP_NOEXCEPT + { + inputAttachmentCount = static_cast( inputAttachments_.size() ); + pInputAttachments = inputAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & + setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & + setPColorAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference * pColorAttachments_ ) VULKAN_HPP_NOEXCEPT + { + pColorAttachments = pColorAttachments_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription & setColorAttachments( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + colorAttachments_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachments_.size() ); + pColorAttachments = colorAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPResolveAttachments( + const VULKAN_HPP_NAMESPACE::AttachmentReference * pResolveAttachments_ ) VULKAN_HPP_NOEXCEPT + { + pResolveAttachments = pResolveAttachments_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription & setResolveAttachments( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + resolveAttachments_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( resolveAttachments_.size() ); + pResolveAttachments = resolveAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPDepthStencilAttachment( + const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment_ ) VULKAN_HPP_NOEXCEPT + { + pDepthStencilAttachment = pDepthStencilAttachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & + setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + preserveAttachmentCount = preserveAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & + setPPreserveAttachments( const uint32_t * pPreserveAttachments_ ) VULKAN_HPP_NOEXCEPT + { + pPreserveAttachments = pPreserveAttachments_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription & setPreserveAttachments( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & preserveAttachments_ ) VULKAN_HPP_NOEXCEPT + { + preserveAttachmentCount = static_cast( preserveAttachments_.size() ); + pPreserveAttachments = preserveAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSubpassDescription const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSubpassDescription &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( flags, + pipelineBindPoint, + inputAttachmentCount, + pInputAttachments, + colorAttachmentCount, + pColorAttachments, + pResolveAttachments, + pDepthStencilAttachment, + preserveAttachmentCount, + pPreserveAttachments ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassDescription const & ) const = default; +#else + bool operator==( SubpassDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( flags == rhs.flags ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && + ( inputAttachmentCount == rhs.inputAttachmentCount ) && ( pInputAttachments == rhs.pInputAttachments ) && + ( colorAttachmentCount == rhs.colorAttachmentCount ) && ( pColorAttachments == rhs.pColorAttachments ) && + ( pResolveAttachments == rhs.pResolveAttachments ) && + ( pDepthStencilAttachment == rhs.pDepthStencilAttachment ) && + ( preserveAttachmentCount == rhs.preserveAttachmentCount ) && + ( pPreserveAttachments == rhs.pPreserveAttachments ); +# endif + } + + bool operator!=( SubpassDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags = {}; + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics; + uint32_t inputAttachmentCount = {}; + const VULKAN_HPP_NAMESPACE::AttachmentReference * pInputAttachments = {}; + uint32_t colorAttachmentCount = {}; + const VULKAN_HPP_NAMESPACE::AttachmentReference * pColorAttachments = {}; + const VULKAN_HPP_NAMESPACE::AttachmentReference * pResolveAttachments = {}; + const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment = {}; + uint32_t preserveAttachmentCount = {}; + const uint32_t * pPreserveAttachments = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassDescription ) == sizeof( VkSubpassDescription ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassDescription is not nothrow_move_constructible!" ); + + struct SubpassDependency + { + using NativeType = VkSubpassDependency; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SubpassDependency( uint32_t srcSubpass_ = {}, + uint32_t dstSubpass_ = {}, + VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ = {}, + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ = {}, + VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {}, + VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {}, + VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ = {} ) VULKAN_HPP_NOEXCEPT + : srcSubpass( srcSubpass_ ) + , dstSubpass( dstSubpass_ ) + , srcStageMask( srcStageMask_ ) + , dstStageMask( dstStageMask_ ) + , srcAccessMask( srcAccessMask_ ) + , dstAccessMask( dstAccessMask_ ) + , dependencyFlags( dependencyFlags_ ) + {} + + VULKAN_HPP_CONSTEXPR SubpassDependency( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassDependency( VkSubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT + : SubpassDependency( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SubpassDependency & operator=( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassDependency & operator=( VkSubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setSrcSubpass( uint32_t srcSubpass_ ) VULKAN_HPP_NOEXCEPT + { + srcSubpass = srcSubpass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDstSubpass( uint32_t dstSubpass_ ) VULKAN_HPP_NOEXCEPT + { + dstSubpass = dstSubpass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency & + setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ ) VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency & + setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ ) VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency & + setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency & + setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency & + setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT + { + dependencyFlags = dependencyFlags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSubpassDependency const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSubpassDependency &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + srcSubpass, dstSubpass, srcStageMask, dstStageMask, srcAccessMask, dstAccessMask, dependencyFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassDependency const & ) const = default; +#else + bool operator==( SubpassDependency const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( srcSubpass == rhs.srcSubpass ) && ( dstSubpass == rhs.dstSubpass ) && + ( srcStageMask == rhs.srcStageMask ) && ( dstStageMask == rhs.dstStageMask ) && + ( srcAccessMask == rhs.srcAccessMask ) && ( dstAccessMask == rhs.dstAccessMask ) && + ( dependencyFlags == rhs.dependencyFlags ); +# endif + } + + bool operator!=( SubpassDependency const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t srcSubpass = {}; + uint32_t dstSubpass = {}; + VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask = {}; + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask = {}; + VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {}; + VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {}; + VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassDependency ) == sizeof( VkSubpassDependency ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassDependency is not nothrow_move_constructible!" ); + + struct RenderPassCreateInfo + { + using NativeType = VkRenderPassCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + RenderPassCreateInfo( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ = {}, + uint32_t attachmentCount_ = {}, + const VULKAN_HPP_NAMESPACE::AttachmentDescription * pAttachments_ = {}, + uint32_t subpassCount_ = {}, + const VULKAN_HPP_NAMESPACE::SubpassDescription * pSubpasses_ = {}, + uint32_t dependencyCount_ = {}, + const VULKAN_HPP_NAMESPACE::SubpassDependency * pDependencies_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , attachmentCount( attachmentCount_ ) + , pAttachments( pAttachments_ ) + , subpassCount( subpassCount_ ) + , pSubpasses( pSubpasses_ ) + , dependencyCount( dependencyCount_ ) + , pDependencies( pDependencies_ ) + {} + + VULKAN_HPP_CONSTEXPR RenderPassCreateInfo( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo( + VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + attachments_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + subpasses_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + dependencies_ = {} ) + : flags( flags_ ) + , attachmentCount( static_cast( attachments_.size() ) ) + , pAttachments( attachments_.data() ) + , subpassCount( static_cast( subpasses_.size() ) ) + , pSubpasses( subpasses_.data() ) + , dependencyCount( static_cast( dependencies_.size() ) ) + , pDependencies( dependencies_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RenderPassCreateInfo & operator=( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassCreateInfo & operator=( VkRenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & + setPAttachments( const VULKAN_HPP_NAMESPACE::AttachmentDescription * pAttachments_ ) VULKAN_HPP_NOEXCEPT + { + pAttachments = pAttachments_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo & setAttachments( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + attachments_ ) VULKAN_HPP_NOEXCEPT + { + attachmentCount = static_cast( attachments_.size() ); + pAttachments = attachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT + { + subpassCount = subpassCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & + setPSubpasses( const VULKAN_HPP_NAMESPACE::SubpassDescription * pSubpasses_ ) VULKAN_HPP_NOEXCEPT + { + pSubpasses = pSubpasses_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo & setSubpasses( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & subpasses_ ) + VULKAN_HPP_NOEXCEPT + { + subpassCount = static_cast( subpasses_.size() ); + pSubpasses = subpasses_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT + { + dependencyCount = dependencyCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & + setPDependencies( const VULKAN_HPP_NAMESPACE::SubpassDependency * pDependencies_ ) VULKAN_HPP_NOEXCEPT + { + pDependencies = pDependencies_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo & setDependencies( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + dependencies_ ) VULKAN_HPP_NOEXCEPT + { + dependencyCount = static_cast( dependencies_.size() ); + pDependencies = dependencies_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRenderPassCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRenderPassCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, flags, attachmentCount, pAttachments, subpassCount, pSubpasses, dependencyCount, pDependencies ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassCreateInfo const & ) const = default; +#else + bool operator==( RenderPassCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( attachmentCount == rhs.attachmentCount ) && ( pAttachments == rhs.pAttachments ) && + ( subpassCount == rhs.subpassCount ) && ( pSubpasses == rhs.pSubpasses ) && + ( dependencyCount == rhs.dependencyCount ) && ( pDependencies == rhs.pDependencies ); +# endif + } + + bool operator!=( RenderPassCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags = {}; + uint32_t attachmentCount = {}; + const VULKAN_HPP_NAMESPACE::AttachmentDescription * pAttachments = {}; + uint32_t subpassCount = {}; + const VULKAN_HPP_NAMESPACE::SubpassDescription * pSubpasses = {}; + uint32_t dependencyCount = {}; + const VULKAN_HPP_NAMESPACE::SubpassDependency * pDependencies = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RenderPassCreateInfo; + }; + + struct SubpassDescription2 + { + using NativeType = VkSubpassDescription2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassDescription2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassDescription2( + VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, + uint32_t viewMask_ = {}, + uint32_t inputAttachmentCount_ = {}, + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pInputAttachments_ = {}, + uint32_t colorAttachmentCount_ = {}, + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pColorAttachments_ = {}, + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pResolveAttachments_ = {}, + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment_ = {}, + uint32_t preserveAttachmentCount_ = {}, + const uint32_t * pPreserveAttachments_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , pipelineBindPoint( pipelineBindPoint_ ) + , viewMask( viewMask_ ) + , inputAttachmentCount( inputAttachmentCount_ ) + , pInputAttachments( pInputAttachments_ ) + , colorAttachmentCount( colorAttachmentCount_ ) + , pColorAttachments( pColorAttachments_ ) + , pResolveAttachments( pResolveAttachments_ ) + , pDepthStencilAttachment( pDepthStencilAttachment_ ) + , preserveAttachmentCount( preserveAttachmentCount_ ) + , pPreserveAttachments( pPreserveAttachments_ ) + {} + + VULKAN_HPP_CONSTEXPR SubpassDescription2( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassDescription2( VkSubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT + : SubpassDescription2( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription2( + VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_, + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_, + uint32_t viewMask_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + inputAttachments_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + colorAttachments_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + resolveAttachments_ = {}, + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & preserveAttachments_ = {} ) + : flags( flags_ ) + , pipelineBindPoint( pipelineBindPoint_ ) + , viewMask( viewMask_ ) + , inputAttachmentCount( static_cast( inputAttachments_.size() ) ) + , pInputAttachments( inputAttachments_.data() ) + , colorAttachmentCount( static_cast( colorAttachments_.size() ) ) + , pColorAttachments( colorAttachments_.data() ) + , pResolveAttachments( resolveAttachments_.data() ) + , pDepthStencilAttachment( pDepthStencilAttachment_ ) + , preserveAttachmentCount( static_cast( preserveAttachments_.size() ) ) + , pPreserveAttachments( preserveAttachments_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( resolveAttachments_.empty() || ( colorAttachments_.size() == resolveAttachments_.size() ) ); +# else + if ( !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() ) ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::SubpassDescription2::SubpassDescription2: !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SubpassDescription2 & operator=( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassDescription2 & operator=( VkSubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & + setFlags( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & + setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT + { + viewMask = viewMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & + setInputAttachmentCount( uint32_t inputAttachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + inputAttachmentCount = inputAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & + setPInputAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pInputAttachments_ ) VULKAN_HPP_NOEXCEPT + { + pInputAttachments = pInputAttachments_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription2 & setInputAttachments( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + inputAttachments_ ) VULKAN_HPP_NOEXCEPT + { + inputAttachmentCount = static_cast( inputAttachments_.size() ); + pInputAttachments = inputAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & + setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & + setPColorAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pColorAttachments_ ) VULKAN_HPP_NOEXCEPT + { + pColorAttachments = pColorAttachments_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription2 & setColorAttachments( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + colorAttachments_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachments_.size() ); + pColorAttachments = colorAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPResolveAttachments( + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pResolveAttachments_ ) VULKAN_HPP_NOEXCEPT + { + pResolveAttachments = pResolveAttachments_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription2 & setResolveAttachments( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + resolveAttachments_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( resolveAttachments_.size() ); + pResolveAttachments = resolveAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPDepthStencilAttachment( + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment_ ) VULKAN_HPP_NOEXCEPT + { + pDepthStencilAttachment = pDepthStencilAttachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & + setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + preserveAttachmentCount = preserveAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & + setPPreserveAttachments( const uint32_t * pPreserveAttachments_ ) VULKAN_HPP_NOEXCEPT + { + pPreserveAttachments = pPreserveAttachments_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription2 & setPreserveAttachments( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & preserveAttachments_ ) VULKAN_HPP_NOEXCEPT + { + preserveAttachmentCount = static_cast( preserveAttachments_.size() ); + pPreserveAttachments = preserveAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSubpassDescription2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSubpassDescription2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + pipelineBindPoint, + viewMask, + inputAttachmentCount, + pInputAttachments, + colorAttachmentCount, + pColorAttachments, + pResolveAttachments, + pDepthStencilAttachment, + preserveAttachmentCount, + pPreserveAttachments ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassDescription2 const & ) const = default; +#else + bool operator==( SubpassDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( viewMask == rhs.viewMask ) && + ( inputAttachmentCount == rhs.inputAttachmentCount ) && ( pInputAttachments == rhs.pInputAttachments ) && + ( colorAttachmentCount == rhs.colorAttachmentCount ) && ( pColorAttachments == rhs.pColorAttachments ) && + ( pResolveAttachments == rhs.pResolveAttachments ) && + ( pDepthStencilAttachment == rhs.pDepthStencilAttachment ) && + ( preserveAttachmentCount == rhs.preserveAttachmentCount ) && + ( pPreserveAttachments == rhs.pPreserveAttachments ); +# endif + } + + bool operator!=( SubpassDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassDescription2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags = {}; + VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics; + uint32_t viewMask = {}; + uint32_t inputAttachmentCount = {}; + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pInputAttachments = {}; + uint32_t colorAttachmentCount = {}; + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pColorAttachments = {}; + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pResolveAttachments = {}; + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment = {}; + uint32_t preserveAttachmentCount = {}; + const uint32_t * pPreserveAttachments = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassDescription2 ) == sizeof( VkSubpassDescription2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassDescription2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SubpassDescription2; + }; + using SubpassDescription2KHR = SubpassDescription2; + + struct SubpassDependency2 + { + using NativeType = VkSubpassDependency2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassDependency2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassDependency2( uint32_t srcSubpass_ = {}, + uint32_t dstSubpass_ = {}, + VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ = {}, + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ = {}, + VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {}, + VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {}, + VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ = {}, + int32_t viewOffset_ = {} ) VULKAN_HPP_NOEXCEPT + : srcSubpass( srcSubpass_ ) + , dstSubpass( dstSubpass_ ) + , srcStageMask( srcStageMask_ ) + , dstStageMask( dstStageMask_ ) + , srcAccessMask( srcAccessMask_ ) + , dstAccessMask( dstAccessMask_ ) + , dependencyFlags( dependencyFlags_ ) + , viewOffset( viewOffset_ ) + {} + + VULKAN_HPP_CONSTEXPR SubpassDependency2( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassDependency2( VkSubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT + : SubpassDependency2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SubpassDependency2 & operator=( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassDependency2 & operator=( VkSubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setSrcSubpass( uint32_t srcSubpass_ ) VULKAN_HPP_NOEXCEPT + { + srcSubpass = srcSubpass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDstSubpass( uint32_t dstSubpass_ ) VULKAN_HPP_NOEXCEPT + { + dstSubpass = dstSubpass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & + setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ ) VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & + setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ ) VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & + setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & + setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & + setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT + { + dependencyFlags = dependencyFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setViewOffset( int32_t viewOffset_ ) VULKAN_HPP_NOEXCEPT + { + viewOffset = viewOffset_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSubpassDependency2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSubpassDependency2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + srcSubpass, + dstSubpass, + srcStageMask, + dstStageMask, + srcAccessMask, + dstAccessMask, + dependencyFlags, + viewOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassDependency2 const & ) const = default; +#else + bool operator==( SubpassDependency2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubpass == rhs.srcSubpass ) && + ( dstSubpass == rhs.dstSubpass ) && ( srcStageMask == rhs.srcStageMask ) && + ( dstStageMask == rhs.dstStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) && + ( dstAccessMask == rhs.dstAccessMask ) && ( dependencyFlags == rhs.dependencyFlags ) && + ( viewOffset == rhs.viewOffset ); +# endif + } + + bool operator!=( SubpassDependency2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassDependency2; + const void * pNext = {}; + uint32_t srcSubpass = {}; + uint32_t dstSubpass = {}; + VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask = {}; + VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask = {}; + VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {}; + VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {}; + VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags = {}; + int32_t viewOffset = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassDependency2 ) == sizeof( VkSubpassDependency2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassDependency2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SubpassDependency2; + }; + using SubpassDependency2KHR = SubpassDependency2; + + struct RenderPassCreateInfo2 + { + using NativeType = VkRenderPassCreateInfo2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassCreateInfo2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassCreateInfo2( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ = {}, + uint32_t attachmentCount_ = {}, + const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * pAttachments_ = {}, + uint32_t subpassCount_ = {}, + const VULKAN_HPP_NAMESPACE::SubpassDescription2 * pSubpasses_ = {}, + uint32_t dependencyCount_ = {}, + const VULKAN_HPP_NAMESPACE::SubpassDependency2 * pDependencies_ = {}, + uint32_t correlatedViewMaskCount_ = {}, + const uint32_t * pCorrelatedViewMasks_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , attachmentCount( attachmentCount_ ) + , pAttachments( pAttachments_ ) + , subpassCount( subpassCount_ ) + , pSubpasses( pSubpasses_ ) + , dependencyCount( dependencyCount_ ) + , pDependencies( pDependencies_ ) + , correlatedViewMaskCount( correlatedViewMaskCount_ ) + , pCorrelatedViewMasks( pCorrelatedViewMasks_ ) + {} + + VULKAN_HPP_CONSTEXPR RenderPassCreateInfo2( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassCreateInfo2( VkRenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassCreateInfo2( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo2( + VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + attachments_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + subpasses_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + dependencies_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & correlatedViewMasks_ = {} ) + : flags( flags_ ) + , attachmentCount( static_cast( attachments_.size() ) ) + , pAttachments( attachments_.data() ) + , subpassCount( static_cast( subpasses_.size() ) ) + , pSubpasses( subpasses_.data() ) + , dependencyCount( static_cast( dependencies_.size() ) ) + , pDependencies( dependencies_.data() ) + , correlatedViewMaskCount( static_cast( correlatedViewMasks_.size() ) ) + , pCorrelatedViewMasks( correlatedViewMasks_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RenderPassCreateInfo2 & operator=( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassCreateInfo2 & operator=( VkRenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & + setFlags( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & + setPAttachments( const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * pAttachments_ ) VULKAN_HPP_NOEXCEPT + { + pAttachments = pAttachments_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo2 & setAttachments( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + attachments_ ) VULKAN_HPP_NOEXCEPT + { + attachmentCount = static_cast( attachments_.size() ); + pAttachments = attachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT + { + subpassCount = subpassCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & + setPSubpasses( const VULKAN_HPP_NAMESPACE::SubpassDescription2 * pSubpasses_ ) VULKAN_HPP_NOEXCEPT + { + pSubpasses = pSubpasses_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo2 & setSubpasses( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + subpasses_ ) VULKAN_HPP_NOEXCEPT + { + subpassCount = static_cast( subpasses_.size() ); + pSubpasses = subpasses_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT + { + dependencyCount = dependencyCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & + setPDependencies( const VULKAN_HPP_NAMESPACE::SubpassDependency2 * pDependencies_ ) VULKAN_HPP_NOEXCEPT + { + pDependencies = pDependencies_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo2 & setDependencies( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + dependencies_ ) VULKAN_HPP_NOEXCEPT + { + dependencyCount = static_cast( dependencies_.size() ); + pDependencies = dependencies_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & + setCorrelatedViewMaskCount( uint32_t correlatedViewMaskCount_ ) VULKAN_HPP_NOEXCEPT + { + correlatedViewMaskCount = correlatedViewMaskCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & + setPCorrelatedViewMasks( const uint32_t * pCorrelatedViewMasks_ ) VULKAN_HPP_NOEXCEPT + { + pCorrelatedViewMasks = pCorrelatedViewMasks_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo2 & setCorrelatedViewMasks( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & correlatedViewMasks_ ) VULKAN_HPP_NOEXCEPT + { + correlatedViewMaskCount = static_cast( correlatedViewMasks_.size() ); + pCorrelatedViewMasks = correlatedViewMasks_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRenderPassCreateInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRenderPassCreateInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + attachmentCount, + pAttachments, + subpassCount, + pSubpasses, + dependencyCount, + pDependencies, + correlatedViewMaskCount, + pCorrelatedViewMasks ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassCreateInfo2 const & ) const = default; +#else + bool operator==( RenderPassCreateInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( attachmentCount == rhs.attachmentCount ) && ( pAttachments == rhs.pAttachments ) && + ( subpassCount == rhs.subpassCount ) && ( pSubpasses == rhs.pSubpasses ) && + ( dependencyCount == rhs.dependencyCount ) && ( pDependencies == rhs.pDependencies ) && + ( correlatedViewMaskCount == rhs.correlatedViewMaskCount ) && + ( pCorrelatedViewMasks == rhs.pCorrelatedViewMasks ); +# endif + } + + bool operator!=( RenderPassCreateInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassCreateInfo2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags = {}; + uint32_t attachmentCount = {}; + const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * pAttachments = {}; + uint32_t subpassCount = {}; + const VULKAN_HPP_NAMESPACE::SubpassDescription2 * pSubpasses = {}; + uint32_t dependencyCount = {}; + const VULKAN_HPP_NAMESPACE::SubpassDependency2 * pDependencies = {}; + uint32_t correlatedViewMaskCount = {}; + const uint32_t * pCorrelatedViewMasks = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 ) == sizeof( VkRenderPassCreateInfo2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassCreateInfo2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RenderPassCreateInfo2; + }; + using RenderPassCreateInfo2KHR = RenderPassCreateInfo2; + + struct RenderPassFragmentDensityMapCreateInfoEXT + { + using NativeType = VkRenderPassFragmentDensityMapCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eRenderPassFragmentDensityMapCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassFragmentDensityMapCreateInfoEXT( + VULKAN_HPP_NAMESPACE::AttachmentReference fragmentDensityMapAttachment_ = {} ) VULKAN_HPP_NOEXCEPT + : fragmentDensityMapAttachment( fragmentDensityMapAttachment_ ) + {} + + VULKAN_HPP_CONSTEXPR RenderPassFragmentDensityMapCreateInfoEXT( + RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassFragmentDensityMapCreateInfoEXT( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : RenderPassFragmentDensityMapCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RenderPassFragmentDensityMapCreateInfoEXT & + operator=( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassFragmentDensityMapCreateInfoEXT & + operator=( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapCreateInfoEXT & setFragmentDensityMapAttachment( + VULKAN_HPP_NAMESPACE::AttachmentReference const & fragmentDensityMapAttachment_ ) VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapAttachment = fragmentDensityMapAttachment_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRenderPassFragmentDensityMapCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRenderPassFragmentDensityMapCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentDensityMapAttachment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassFragmentDensityMapCreateInfoEXT const & ) const = default; +#else + bool operator==( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( fragmentDensityMapAttachment == rhs.fragmentDensityMapAttachment ); +# endif + } + + bool operator!=( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassFragmentDensityMapCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::AttachmentReference fragmentDensityMapAttachment = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT ) == + sizeof( VkRenderPassFragmentDensityMapCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "RenderPassFragmentDensityMapCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RenderPassFragmentDensityMapCreateInfoEXT; + }; + + struct RenderPassInputAttachmentAspectCreateInfo + { + using NativeType = VkRenderPassInputAttachmentAspectCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eRenderPassInputAttachmentAspectCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassInputAttachmentAspectCreateInfo( + uint32_t aspectReferenceCount_ = {}, + const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * pAspectReferences_ = {} ) VULKAN_HPP_NOEXCEPT + : aspectReferenceCount( aspectReferenceCount_ ) + , pAspectReferences( pAspectReferences_ ) + {} + + VULKAN_HPP_CONSTEXPR RenderPassInputAttachmentAspectCreateInfo( + RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassInputAttachmentAspectCreateInfo( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) + VULKAN_HPP_NOEXCEPT + : RenderPassInputAttachmentAspectCreateInfo( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassInputAttachmentAspectCreateInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + aspectReferences_ ) + : aspectReferenceCount( static_cast( aspectReferences_.size() ) ) + , pAspectReferences( aspectReferences_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RenderPassInputAttachmentAspectCreateInfo & + operator=( RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassInputAttachmentAspectCreateInfo & + operator=( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & + setAspectReferenceCount( uint32_t aspectReferenceCount_ ) VULKAN_HPP_NOEXCEPT + { + aspectReferenceCount = aspectReferenceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & setPAspectReferences( + const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * pAspectReferences_ ) VULKAN_HPP_NOEXCEPT + { + pAspectReferences = pAspectReferences_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassInputAttachmentAspectCreateInfo & setAspectReferences( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + aspectReferences_ ) VULKAN_HPP_NOEXCEPT + { + aspectReferenceCount = static_cast( aspectReferences_.size() ); + pAspectReferences = aspectReferences_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRenderPassInputAttachmentAspectCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRenderPassInputAttachmentAspectCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, aspectReferenceCount, pAspectReferences ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassInputAttachmentAspectCreateInfo const & ) const = default; +#else + bool operator==( RenderPassInputAttachmentAspectCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( aspectReferenceCount == rhs.aspectReferenceCount ) && + ( pAspectReferences == rhs.pAspectReferences ); +# endif + } + + bool operator!=( RenderPassInputAttachmentAspectCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassInputAttachmentAspectCreateInfo; + const void * pNext = {}; + uint32_t aspectReferenceCount = {}; + const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * pAspectReferences = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo ) == + sizeof( VkRenderPassInputAttachmentAspectCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "RenderPassInputAttachmentAspectCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RenderPassInputAttachmentAspectCreateInfo; + }; + using RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo; + + struct RenderPassMultiviewCreateInfo + { + using NativeType = VkRenderPassMultiviewCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassMultiviewCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassMultiviewCreateInfo( uint32_t subpassCount_ = {}, + const uint32_t * pViewMasks_ = {}, + uint32_t dependencyCount_ = {}, + const int32_t * pViewOffsets_ = {}, + uint32_t correlationMaskCount_ = {}, + const uint32_t * pCorrelationMasks_ = {} ) VULKAN_HPP_NOEXCEPT + : subpassCount( subpassCount_ ) + , pViewMasks( pViewMasks_ ) + , dependencyCount( dependencyCount_ ) + , pViewOffsets( pViewOffsets_ ) + , correlationMaskCount( correlationMaskCount_ ) + , pCorrelationMasks( pCorrelationMasks_ ) + {} + + VULKAN_HPP_CONSTEXPR + RenderPassMultiviewCreateInfo( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassMultiviewCreateInfo( VkRenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassMultiviewCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassMultiviewCreateInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewMasks_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewOffsets_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & correlationMasks_ = {} ) + : subpassCount( static_cast( viewMasks_.size() ) ) + , pViewMasks( viewMasks_.data() ) + , dependencyCount( static_cast( viewOffsets_.size() ) ) + , pViewOffsets( viewOffsets_.data() ) + , correlationMaskCount( static_cast( correlationMasks_.size() ) ) + , pCorrelationMasks( correlationMasks_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RenderPassMultiviewCreateInfo & + operator=( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassMultiviewCreateInfo & operator=( VkRenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & + setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT + { + subpassCount = subpassCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & + setPViewMasks( const uint32_t * pViewMasks_ ) VULKAN_HPP_NOEXCEPT + { + pViewMasks = pViewMasks_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassMultiviewCreateInfo & setViewMasks( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewMasks_ ) VULKAN_HPP_NOEXCEPT + { + subpassCount = static_cast( viewMasks_.size() ); + pViewMasks = viewMasks_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & + setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT + { + dependencyCount = dependencyCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & + setPViewOffsets( const int32_t * pViewOffsets_ ) VULKAN_HPP_NOEXCEPT + { + pViewOffsets = pViewOffsets_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassMultiviewCreateInfo & setViewOffsets( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewOffsets_ ) VULKAN_HPP_NOEXCEPT + { + dependencyCount = static_cast( viewOffsets_.size() ); + pViewOffsets = viewOffsets_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & + setCorrelationMaskCount( uint32_t correlationMaskCount_ ) VULKAN_HPP_NOEXCEPT + { + correlationMaskCount = correlationMaskCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & + setPCorrelationMasks( const uint32_t * pCorrelationMasks_ ) VULKAN_HPP_NOEXCEPT + { + pCorrelationMasks = pCorrelationMasks_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassMultiviewCreateInfo & setCorrelationMasks( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & correlationMasks_ ) VULKAN_HPP_NOEXCEPT + { + correlationMaskCount = static_cast( correlationMasks_.size() ); + pCorrelationMasks = correlationMasks_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRenderPassMultiviewCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRenderPassMultiviewCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + subpassCount, + pViewMasks, + dependencyCount, + pViewOffsets, + correlationMaskCount, + pCorrelationMasks ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassMultiviewCreateInfo const & ) const = default; +#else + bool operator==( RenderPassMultiviewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subpassCount == rhs.subpassCount ) && + ( pViewMasks == rhs.pViewMasks ) && ( dependencyCount == rhs.dependencyCount ) && + ( pViewOffsets == rhs.pViewOffsets ) && ( correlationMaskCount == rhs.correlationMaskCount ) && + ( pCorrelationMasks == rhs.pCorrelationMasks ); +# endif + } + + bool operator!=( RenderPassMultiviewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassMultiviewCreateInfo; + const void * pNext = {}; + uint32_t subpassCount = {}; + const uint32_t * pViewMasks = {}; + uint32_t dependencyCount = {}; + const int32_t * pViewOffsets = {}; + uint32_t correlationMaskCount = {}; + const uint32_t * pCorrelationMasks = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo ) == + sizeof( VkRenderPassMultiviewCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "RenderPassMultiviewCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RenderPassMultiviewCreateInfo; + }; + using RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo; + + struct SubpassSampleLocationsEXT + { + using NativeType = VkSubpassSampleLocationsEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassSampleLocationsEXT( + uint32_t subpassIndex_ = {}, + VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_ = {} ) VULKAN_HPP_NOEXCEPT + : subpassIndex( subpassIndex_ ) + , sampleLocationsInfo( sampleLocationsInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR + SubpassSampleLocationsEXT( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SubpassSampleLocationsEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SubpassSampleLocationsEXT & operator=( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassSampleLocationsEXT & operator=( VkSubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT & setSubpassIndex( uint32_t subpassIndex_ ) VULKAN_HPP_NOEXCEPT + { + subpassIndex = subpassIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT & setSampleLocationsInfo( + VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT + { + sampleLocationsInfo = sampleLocationsInfo_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSubpassSampleLocationsEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSubpassSampleLocationsEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( subpassIndex, sampleLocationsInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassSampleLocationsEXT const & ) const = default; +#else + bool operator==( SubpassSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( subpassIndex == rhs.subpassIndex ) && ( sampleLocationsInfo == rhs.sampleLocationsInfo ); +# endif + } + + bool operator!=( SubpassSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t subpassIndex = {}; + VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT ) == + sizeof( VkSubpassSampleLocationsEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassSampleLocationsEXT is not nothrow_move_constructible!" ); + + struct RenderPassSampleLocationsBeginInfoEXT + { + using NativeType = VkRenderPassSampleLocationsBeginInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eRenderPassSampleLocationsBeginInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassSampleLocationsBeginInfoEXT( + uint32_t attachmentInitialSampleLocationsCount_ = {}, + const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * pAttachmentInitialSampleLocations_ = {}, + uint32_t postSubpassSampleLocationsCount_ = {}, + const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT * pPostSubpassSampleLocations_ = {} ) VULKAN_HPP_NOEXCEPT + : attachmentInitialSampleLocationsCount( attachmentInitialSampleLocationsCount_ ) + , pAttachmentInitialSampleLocations( pAttachmentInitialSampleLocations_ ) + , postSubpassSampleLocationsCount( postSubpassSampleLocationsCount_ ) + , pPostSubpassSampleLocations( pPostSubpassSampleLocations_ ) + {} + + VULKAN_HPP_CONSTEXPR RenderPassSampleLocationsBeginInfoEXT( RenderPassSampleLocationsBeginInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassSampleLocationsBeginInfoEXT( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassSampleLocationsBeginInfoEXT( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + attachmentInitialSampleLocations_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + postSubpassSampleLocations_ = {} ) + : attachmentInitialSampleLocationsCount( static_cast( attachmentInitialSampleLocations_.size() ) ) + , pAttachmentInitialSampleLocations( attachmentInitialSampleLocations_.data() ) + , postSubpassSampleLocationsCount( static_cast( postSubpassSampleLocations_.size() ) ) + , pPostSubpassSampleLocations( postSubpassSampleLocations_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RenderPassSampleLocationsBeginInfoEXT & + operator=( RenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassSampleLocationsBeginInfoEXT & + operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & + setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT + { + attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & setPAttachmentInitialSampleLocations( + const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * pAttachmentInitialSampleLocations_ ) + VULKAN_HPP_NOEXCEPT + { + pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassSampleLocationsBeginInfoEXT & setAttachmentInitialSampleLocations( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + attachmentInitialSampleLocations_ ) VULKAN_HPP_NOEXCEPT + { + attachmentInitialSampleLocationsCount = static_cast( attachmentInitialSampleLocations_.size() ); + pAttachmentInitialSampleLocations = attachmentInitialSampleLocations_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & + setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT + { + postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & setPPostSubpassSampleLocations( + const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT * pPostSubpassSampleLocations_ ) VULKAN_HPP_NOEXCEPT + { + pPostSubpassSampleLocations = pPostSubpassSampleLocations_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassSampleLocationsBeginInfoEXT & setPostSubpassSampleLocations( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + postSubpassSampleLocations_ ) VULKAN_HPP_NOEXCEPT + { + postSubpassSampleLocationsCount = static_cast( postSubpassSampleLocations_.size() ); + pPostSubpassSampleLocations = postSubpassSampleLocations_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRenderPassSampleLocationsBeginInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRenderPassSampleLocationsBeginInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + attachmentInitialSampleLocationsCount, + pAttachmentInitialSampleLocations, + postSubpassSampleLocationsCount, + pPostSubpassSampleLocations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassSampleLocationsBeginInfoEXT const & ) const = default; +#else + bool operator==( RenderPassSampleLocationsBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( attachmentInitialSampleLocationsCount == rhs.attachmentInitialSampleLocationsCount ) && + ( pAttachmentInitialSampleLocations == rhs.pAttachmentInitialSampleLocations ) && + ( postSubpassSampleLocationsCount == rhs.postSubpassSampleLocationsCount ) && + ( pPostSubpassSampleLocations == rhs.pPostSubpassSampleLocations ); +# endif + } + + bool operator!=( RenderPassSampleLocationsBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassSampleLocationsBeginInfoEXT; + const void * pNext = {}; + uint32_t attachmentInitialSampleLocationsCount = {}; + const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * pAttachmentInitialSampleLocations = {}; + uint32_t postSubpassSampleLocationsCount = {}; + const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT * pPostSubpassSampleLocations = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT ) == + sizeof( VkRenderPassSampleLocationsBeginInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "RenderPassSampleLocationsBeginInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RenderPassSampleLocationsBeginInfoEXT; + }; + + struct RenderPassTransformBeginInfoQCOM + { + using NativeType = VkRenderPassTransformBeginInfoQCOM; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassTransformBeginInfoQCOM; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassTransformBeginInfoQCOM( + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ = + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity ) VULKAN_HPP_NOEXCEPT : transform( transform_ ) + {} + + VULKAN_HPP_CONSTEXPR + RenderPassTransformBeginInfoQCOM( RenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassTransformBeginInfoQCOM( VkRenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassTransformBeginInfoQCOM( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RenderPassTransformBeginInfoQCOM & + operator=( RenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassTransformBeginInfoQCOM & operator=( VkRenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassTransformBeginInfoQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassTransformBeginInfoQCOM & + setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRenderPassTransformBeginInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRenderPassTransformBeginInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, transform ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassTransformBeginInfoQCOM const & ) const = default; +#else + bool operator==( RenderPassTransformBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transform == rhs.transform ); +# endif + } + + bool operator!=( RenderPassTransformBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassTransformBeginInfoQCOM; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM ) == + sizeof( VkRenderPassTransformBeginInfoQCOM ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "RenderPassTransformBeginInfoQCOM is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RenderPassTransformBeginInfoQCOM; + }; + + struct RenderingAttachmentInfo + { + using NativeType = VkRenderingAttachmentInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderingAttachmentInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo( + VULKAN_HPP_NAMESPACE::ImageView imageView_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + VULKAN_HPP_NAMESPACE::ResolveModeFlagBits resolveMode_ = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone, + VULKAN_HPP_NAMESPACE::ImageView resolveImageView_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout resolveImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad, + VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore, + VULKAN_HPP_NAMESPACE::ClearValue clearValue_ = {} ) VULKAN_HPP_NOEXCEPT + : imageView( imageView_ ) + , imageLayout( imageLayout_ ) + , resolveMode( resolveMode_ ) + , resolveImageView( resolveImageView_ ) + , resolveImageLayout( resolveImageLayout_ ) + , loadOp( loadOp_ ) + , storeOp( storeOp_ ) + , clearValue( clearValue_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + RenderingAttachmentInfo( RenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingAttachmentInfo( VkRenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderingAttachmentInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RenderingAttachmentInfo & operator=( RenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingAttachmentInfo & operator=( VkRenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & + setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & + setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT + { + imageLayout = imageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & + setResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits resolveMode_ ) VULKAN_HPP_NOEXCEPT + { + resolveMode = resolveMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & + setResolveImageView( VULKAN_HPP_NAMESPACE::ImageView resolveImageView_ ) VULKAN_HPP_NOEXCEPT + { + resolveImageView = resolveImageView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & + setResolveImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout resolveImageLayout_ ) VULKAN_HPP_NOEXCEPT + { + resolveImageLayout = resolveImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & + setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT + { + loadOp = loadOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & + setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT + { + storeOp = storeOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & + setClearValue( VULKAN_HPP_NAMESPACE::ClearValue const & clearValue_ ) VULKAN_HPP_NOEXCEPT + { + clearValue = clearValue_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRenderingAttachmentInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRenderingAttachmentInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + imageView, + imageLayout, + resolveMode, + resolveImageView, + resolveImageLayout, + loadOp, + storeOp, + clearValue ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderingAttachmentInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageView imageView = {}; + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + VULKAN_HPP_NAMESPACE::ResolveModeFlagBits resolveMode = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone; + VULKAN_HPP_NAMESPACE::ImageView resolveImageView = {}; + VULKAN_HPP_NAMESPACE::ImageLayout resolveImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad; + VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore; + VULKAN_HPP_NAMESPACE::ClearValue clearValue = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo ) == + sizeof( VkRenderingAttachmentInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderingAttachmentInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RenderingAttachmentInfo; + }; + using RenderingAttachmentInfoKHR = RenderingAttachmentInfo; + + struct RenderingFragmentDensityMapAttachmentInfoEXT + { + using NativeType = VkRenderingFragmentDensityMapAttachmentInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eRenderingFragmentDensityMapAttachmentInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderingFragmentDensityMapAttachmentInfoEXT( + VULKAN_HPP_NAMESPACE::ImageView imageView_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) + VULKAN_HPP_NOEXCEPT + : imageView( imageView_ ) + , imageLayout( imageLayout_ ) + {} + + VULKAN_HPP_CONSTEXPR RenderingFragmentDensityMapAttachmentInfoEXT( + RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingFragmentDensityMapAttachmentInfoEXT( VkRenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : RenderingFragmentDensityMapAttachmentInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RenderingFragmentDensityMapAttachmentInfoEXT & + operator=( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingFragmentDensityMapAttachmentInfoEXT & + operator=( VkRenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT & + setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT & + setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT + { + imageLayout = imageLayout_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRenderingFragmentDensityMapAttachmentInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRenderingFragmentDensityMapAttachmentInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageView, imageLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderingFragmentDensityMapAttachmentInfoEXT const & ) const = default; +#else + bool operator==( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageView == rhs.imageView ) && + ( imageLayout == rhs.imageLayout ); +# endif + } + + bool operator!=( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderingFragmentDensityMapAttachmentInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageView imageView = {}; + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT ) == + sizeof( VkRenderingFragmentDensityMapAttachmentInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "RenderingFragmentDensityMapAttachmentInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RenderingFragmentDensityMapAttachmentInfoEXT; + }; + + struct RenderingFragmentShadingRateAttachmentInfoKHR + { + using NativeType = VkRenderingFragmentShadingRateAttachmentInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eRenderingFragmentShadingRateAttachmentInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderingFragmentShadingRateAttachmentInfoKHR( + VULKAN_HPP_NAMESPACE::ImageView imageView_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + VULKAN_HPP_NAMESPACE::Extent2D shadingRateAttachmentTexelSize_ = {} ) VULKAN_HPP_NOEXCEPT + : imageView( imageView_ ) + , imageLayout( imageLayout_ ) + , shadingRateAttachmentTexelSize( shadingRateAttachmentTexelSize_ ) + {} + + VULKAN_HPP_CONSTEXPR RenderingFragmentShadingRateAttachmentInfoKHR( + RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingFragmentShadingRateAttachmentInfoKHR( VkRenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : RenderingFragmentShadingRateAttachmentInfoKHR( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RenderingFragmentShadingRateAttachmentInfoKHR & + operator=( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingFragmentShadingRateAttachmentInfoKHR & + operator=( VkRenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR & + setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR & + setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT + { + imageLayout = imageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR & setShadingRateAttachmentTexelSize( + VULKAN_HPP_NAMESPACE::Extent2D const & shadingRateAttachmentTexelSize_ ) VULKAN_HPP_NOEXCEPT + { + shadingRateAttachmentTexelSize = shadingRateAttachmentTexelSize_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRenderingFragmentShadingRateAttachmentInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRenderingFragmentShadingRateAttachmentInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageView, imageLayout, shadingRateAttachmentTexelSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderingFragmentShadingRateAttachmentInfoKHR const & ) const = default; +#else + bool operator==( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageView == rhs.imageView ) && + ( imageLayout == rhs.imageLayout ) && + ( shadingRateAttachmentTexelSize == rhs.shadingRateAttachmentTexelSize ); +# endif + } + + bool operator!=( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderingFragmentShadingRateAttachmentInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageView imageView = {}; + VULKAN_HPP_NAMESPACE::ImageLayout imageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + VULKAN_HPP_NAMESPACE::Extent2D shadingRateAttachmentTexelSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR ) == + sizeof( VkRenderingFragmentShadingRateAttachmentInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "RenderingFragmentShadingRateAttachmentInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RenderingFragmentShadingRateAttachmentInfoKHR; + }; + + struct RenderingInfo + { + using NativeType = VkRenderingInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderingInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 RenderingInfo( + VULKAN_HPP_NAMESPACE::RenderingFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::Rect2D renderArea_ = {}, + uint32_t layerCount_ = {}, + uint32_t viewMask_ = {}, + uint32_t colorAttachmentCount_ = {}, + const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pColorAttachments_ = {}, + const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pDepthAttachment_ = {}, + const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pStencilAttachment_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , renderArea( renderArea_ ) + , layerCount( layerCount_ ) + , viewMask( viewMask_ ) + , colorAttachmentCount( colorAttachmentCount_ ) + , pColorAttachments( pColorAttachments_ ) + , pDepthAttachment( pDepthAttachment_ ) + , pStencilAttachment( pStencilAttachment_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo( RenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingInfo( VkRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderingInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderingInfo( + VULKAN_HPP_NAMESPACE::RenderingFlags flags_, + VULKAN_HPP_NAMESPACE::Rect2D renderArea_, + uint32_t layerCount_, + uint32_t viewMask_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + colorAttachments_, + const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pDepthAttachment_ = {}, + const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pStencilAttachment_ = {} ) + : flags( flags_ ) + , renderArea( renderArea_ ) + , layerCount( layerCount_ ) + , viewMask( viewMask_ ) + , colorAttachmentCount( static_cast( colorAttachments_.size() ) ) + , pColorAttachments( colorAttachments_.data() ) + , pDepthAttachment( pDepthAttachment_ ) + , pStencilAttachment( pStencilAttachment_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + RenderingInfo & operator=( RenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingInfo & operator=( VkRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setFlags( VULKAN_HPP_NAMESPACE::RenderingFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & + setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT + { + renderArea = renderArea_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT + { + viewMask = viewMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & + setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPColorAttachments( + const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pColorAttachments_ ) VULKAN_HPP_NOEXCEPT + { + pColorAttachments = pColorAttachments_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderingInfo & setColorAttachments( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + colorAttachments_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachments_.size() ); + pColorAttachments = colorAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & + setPDepthAttachment( const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pDepthAttachment_ ) VULKAN_HPP_NOEXCEPT + { + pDepthAttachment = pDepthAttachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPStencilAttachment( + const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pStencilAttachment_ ) VULKAN_HPP_NOEXCEPT + { + pStencilAttachment = pStencilAttachment_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkRenderingInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkRenderingInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + renderArea, + layerCount, + viewMask, + colorAttachmentCount, + pColorAttachments, + pDepthAttachment, + pStencilAttachment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderingInfo const & ) const = default; +#else + bool operator==( RenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( renderArea == rhs.renderArea ) && ( layerCount == rhs.layerCount ) && ( viewMask == rhs.viewMask ) && + ( colorAttachmentCount == rhs.colorAttachmentCount ) && ( pColorAttachments == rhs.pColorAttachments ) && + ( pDepthAttachment == rhs.pDepthAttachment ) && ( pStencilAttachment == rhs.pStencilAttachment ); +# endif + } + + bool operator!=( RenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderingInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::RenderingFlags flags = {}; + VULKAN_HPP_NAMESPACE::Rect2D renderArea = {}; + uint32_t layerCount = {}; + uint32_t viewMask = {}; + uint32_t colorAttachmentCount = {}; + const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pColorAttachments = {}; + const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pDepthAttachment = {}; + const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pStencilAttachment = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingInfo ) == sizeof( VkRenderingInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderingInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = RenderingInfo; + }; + using RenderingInfoKHR = RenderingInfo; + + struct ResolveImageInfo2 + { + using NativeType = VkResolveImageInfo2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eResolveImageInfo2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ResolveImageInfo2( + VULKAN_HPP_NAMESPACE::Image srcImage_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + VULKAN_HPP_NAMESPACE::Image dstImage_ = {}, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, + uint32_t regionCount_ = {}, + const VULKAN_HPP_NAMESPACE::ImageResolve2 * pRegions_ = {} ) VULKAN_HPP_NOEXCEPT + : srcImage( srcImage_ ) + , srcImageLayout( srcImageLayout_ ) + , dstImage( dstImage_ ) + , dstImageLayout( dstImageLayout_ ) + , regionCount( regionCount_ ) + , pRegions( pRegions_ ) + {} + + VULKAN_HPP_CONSTEXPR ResolveImageInfo2( ResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ResolveImageInfo2( VkResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : ResolveImageInfo2( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ResolveImageInfo2( + VULKAN_HPP_NAMESPACE::Image srcImage_, + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, + VULKAN_HPP_NAMESPACE::Image dstImage_, + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) + : srcImage( srcImage_ ) + , srcImageLayout( srcImageLayout_ ) + , dstImage( dstImage_ ) + , dstImageLayout( dstImageLayout_ ) + , regionCount( static_cast( regions_.size() ) ) + , pRegions( regions_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ResolveImageInfo2 & operator=( ResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ResolveImageInfo2 & operator=( VkResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & + setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & + setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & + setPRegions( const VULKAN_HPP_NAMESPACE::ImageResolve2 * pRegions_ ) VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ResolveImageInfo2 & setRegions( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) + VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkResolveImageInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkResolveImageInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ResolveImageInfo2 const & ) const = default; +#else + bool operator==( ResolveImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && + ( srcImageLayout == rhs.srcImageLayout ) && ( dstImage == rhs.dstImage ) && + ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && + ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( ResolveImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eResolveImageInfo2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Image srcImage = {}; + VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + VULKAN_HPP_NAMESPACE::Image dstImage = {}; + VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; + uint32_t regionCount = {}; + const VULKAN_HPP_NAMESPACE::ImageResolve2 * pRegions = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ResolveImageInfo2 ) == sizeof( VkResolveImageInfo2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ResolveImageInfo2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ResolveImageInfo2; + }; + using ResolveImageInfo2KHR = ResolveImageInfo2; + + struct SamplerBorderColorComponentMappingCreateInfoEXT + { + using NativeType = VkSamplerBorderColorComponentMappingCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SamplerBorderColorComponentMappingCreateInfoEXT( VULKAN_HPP_NAMESPACE::ComponentMapping components_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 srgb_ = {} ) VULKAN_HPP_NOEXCEPT + : components( components_ ) + , srgb( srgb_ ) + {} + + VULKAN_HPP_CONSTEXPR SamplerBorderColorComponentMappingCreateInfoEXT( + SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerBorderColorComponentMappingCreateInfoEXT( VkSamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : SamplerBorderColorComponentMappingCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SamplerBorderColorComponentMappingCreateInfoEXT & + operator=( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerBorderColorComponentMappingCreateInfoEXT & + operator=( VkSamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT & + setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT + { + components = components_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT & + setSrgb( VULKAN_HPP_NAMESPACE::Bool32 srgb_ ) VULKAN_HPP_NOEXCEPT + { + srgb = srgb_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSamplerBorderColorComponentMappingCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSamplerBorderColorComponentMappingCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, components, srgb ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerBorderColorComponentMappingCreateInfoEXT const & ) const = default; +#else + bool operator==( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( components == rhs.components ) && + ( srgb == rhs.srgb ); +# endif + } + + bool operator!=( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ComponentMapping components = {}; + VULKAN_HPP_NAMESPACE::Bool32 srgb = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT ) == + sizeof( VkSamplerBorderColorComponentMappingCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SamplerBorderColorComponentMappingCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SamplerBorderColorComponentMappingCreateInfoEXT; + }; + + struct SamplerCreateInfo + { + using NativeType = VkSamplerCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SamplerCreateInfo( + VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::Filter magFilter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest, + VULKAN_HPP_NAMESPACE::Filter minFilter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest, + VULKAN_HPP_NAMESPACE::SamplerMipmapMode mipmapMode_ = VULKAN_HPP_NAMESPACE::SamplerMipmapMode::eNearest, + VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU_ = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat, + VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV_ = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat, + VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW_ = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat, + float mipLodBias_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 anisotropyEnable_ = {}, + float maxAnisotropy_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 compareEnable_ = {}, + VULKAN_HPP_NAMESPACE::CompareOp compareOp_ = VULKAN_HPP_NAMESPACE::CompareOp::eNever, + float minLod_ = {}, + float maxLod_ = {}, + VULKAN_HPP_NAMESPACE::BorderColor borderColor_ = VULKAN_HPP_NAMESPACE::BorderColor::eFloatTransparentBlack, + VULKAN_HPP_NAMESPACE::Bool32 unnormalizedCoordinates_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , magFilter( magFilter_ ) + , minFilter( minFilter_ ) + , mipmapMode( mipmapMode_ ) + , addressModeU( addressModeU_ ) + , addressModeV( addressModeV_ ) + , addressModeW( addressModeW_ ) + , mipLodBias( mipLodBias_ ) + , anisotropyEnable( anisotropyEnable_ ) + , maxAnisotropy( maxAnisotropy_ ) + , compareEnable( compareEnable_ ) + , compareOp( compareOp_ ) + , minLod( minLod_ ) + , maxLod( maxLod_ ) + , borderColor( borderColor_ ) + , unnormalizedCoordinates( unnormalizedCoordinates_ ) + {} + + VULKAN_HPP_CONSTEXPR SamplerCreateInfo( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerCreateInfo( VkSamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SamplerCreateInfo & operator=( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerCreateInfo & operator=( VkSamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & + setMagFilter( VULKAN_HPP_NAMESPACE::Filter magFilter_ ) VULKAN_HPP_NOEXCEPT + { + magFilter = magFilter_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & + setMinFilter( VULKAN_HPP_NAMESPACE::Filter minFilter_ ) VULKAN_HPP_NOEXCEPT + { + minFilter = minFilter_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & + setMipmapMode( VULKAN_HPP_NAMESPACE::SamplerMipmapMode mipmapMode_ ) VULKAN_HPP_NOEXCEPT + { + mipmapMode = mipmapMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & + setAddressModeU( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU_ ) VULKAN_HPP_NOEXCEPT + { + addressModeU = addressModeU_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & + setAddressModeV( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV_ ) VULKAN_HPP_NOEXCEPT + { + addressModeV = addressModeV_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & + setAddressModeW( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW_ ) VULKAN_HPP_NOEXCEPT + { + addressModeW = addressModeW_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMipLodBias( float mipLodBias_ ) VULKAN_HPP_NOEXCEPT + { + mipLodBias = mipLodBias_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & + setAnisotropyEnable( VULKAN_HPP_NAMESPACE::Bool32 anisotropyEnable_ ) VULKAN_HPP_NOEXCEPT + { + anisotropyEnable = anisotropyEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMaxAnisotropy( float maxAnisotropy_ ) VULKAN_HPP_NOEXCEPT + { + maxAnisotropy = maxAnisotropy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & + setCompareEnable( VULKAN_HPP_NAMESPACE::Bool32 compareEnable_ ) VULKAN_HPP_NOEXCEPT + { + compareEnable = compareEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & + setCompareOp( VULKAN_HPP_NAMESPACE::CompareOp compareOp_ ) VULKAN_HPP_NOEXCEPT + { + compareOp = compareOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMinLod( float minLod_ ) VULKAN_HPP_NOEXCEPT + { + minLod = minLod_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMaxLod( float maxLod_ ) VULKAN_HPP_NOEXCEPT + { + maxLod = maxLod_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & + setBorderColor( VULKAN_HPP_NAMESPACE::BorderColor borderColor_ ) VULKAN_HPP_NOEXCEPT + { + borderColor = borderColor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & + setUnnormalizedCoordinates( VULKAN_HPP_NAMESPACE::Bool32 unnormalizedCoordinates_ ) VULKAN_HPP_NOEXCEPT + { + unnormalizedCoordinates = unnormalizedCoordinates_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSamplerCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSamplerCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + magFilter, + minFilter, + mipmapMode, + addressModeU, + addressModeV, + addressModeW, + mipLodBias, + anisotropyEnable, + maxAnisotropy, + compareEnable, + compareOp, + minLod, + maxLod, + borderColor, + unnormalizedCoordinates ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerCreateInfo const & ) const = default; +#else + bool operator==( SamplerCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( magFilter == rhs.magFilter ) && ( minFilter == rhs.minFilter ) && ( mipmapMode == rhs.mipmapMode ) && + ( addressModeU == rhs.addressModeU ) && ( addressModeV == rhs.addressModeV ) && + ( addressModeW == rhs.addressModeW ) && ( mipLodBias == rhs.mipLodBias ) && + ( anisotropyEnable == rhs.anisotropyEnable ) && ( maxAnisotropy == rhs.maxAnisotropy ) && + ( compareEnable == rhs.compareEnable ) && ( compareOp == rhs.compareOp ) && ( minLod == rhs.minLod ) && + ( maxLod == rhs.maxLod ) && ( borderColor == rhs.borderColor ) && + ( unnormalizedCoordinates == rhs.unnormalizedCoordinates ); +# endif + } + + bool operator!=( SamplerCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags = {}; + VULKAN_HPP_NAMESPACE::Filter magFilter = VULKAN_HPP_NAMESPACE::Filter::eNearest; + VULKAN_HPP_NAMESPACE::Filter minFilter = VULKAN_HPP_NAMESPACE::Filter::eNearest; + VULKAN_HPP_NAMESPACE::SamplerMipmapMode mipmapMode = VULKAN_HPP_NAMESPACE::SamplerMipmapMode::eNearest; + VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat; + VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat; + VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat; + float mipLodBias = {}; + VULKAN_HPP_NAMESPACE::Bool32 anisotropyEnable = {}; + float maxAnisotropy = {}; + VULKAN_HPP_NAMESPACE::Bool32 compareEnable = {}; + VULKAN_HPP_NAMESPACE::CompareOp compareOp = VULKAN_HPP_NAMESPACE::CompareOp::eNever; + float minLod = {}; + float maxLod = {}; + VULKAN_HPP_NAMESPACE::BorderColor borderColor = VULKAN_HPP_NAMESPACE::BorderColor::eFloatTransparentBlack; + VULKAN_HPP_NAMESPACE::Bool32 unnormalizedCoordinates = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SamplerCreateInfo; + }; + + struct SamplerCustomBorderColorCreateInfoEXT + { + using NativeType = VkSamplerCustomBorderColorCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eSamplerCustomBorderColorCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT( + VULKAN_HPP_NAMESPACE::ClearColorValue customBorderColor_ = {}, + VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined ) VULKAN_HPP_NOEXCEPT + : customBorderColor( customBorderColor_ ) + , format( format_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT( SamplerCustomBorderColorCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + SamplerCustomBorderColorCreateInfoEXT( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerCustomBorderColorCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SamplerCustomBorderColorCreateInfoEXT & + operator=( SamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerCustomBorderColorCreateInfoEXT & + operator=( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT & + setCustomBorderColor( VULKAN_HPP_NAMESPACE::ClearColorValue const & customBorderColor_ ) VULKAN_HPP_NOEXCEPT + { + customBorderColor = customBorderColor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT & + setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSamplerCustomBorderColorCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSamplerCustomBorderColorCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, customBorderColor, format ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerCustomBorderColorCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ClearColorValue customBorderColor = {}; + VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT ) == + sizeof( VkSamplerCustomBorderColorCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SamplerCustomBorderColorCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SamplerCustomBorderColorCreateInfoEXT; + }; + + struct SamplerReductionModeCreateInfo + { + using NativeType = VkSamplerReductionModeCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerReductionModeCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SamplerReductionModeCreateInfo( + VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode_ = + VULKAN_HPP_NAMESPACE::SamplerReductionMode::eWeightedAverage ) VULKAN_HPP_NOEXCEPT + : reductionMode( reductionMode_ ) + {} + + VULKAN_HPP_CONSTEXPR + SamplerReductionModeCreateInfo( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerReductionModeCreateInfo( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerReductionModeCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SamplerReductionModeCreateInfo & + operator=( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerReductionModeCreateInfo & operator=( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo & + setReductionMode( VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode_ ) VULKAN_HPP_NOEXCEPT + { + reductionMode = reductionMode_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSamplerReductionModeCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSamplerReductionModeCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, reductionMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerReductionModeCreateInfo const & ) const = default; +#else + bool operator==( SamplerReductionModeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( reductionMode == rhs.reductionMode ); +# endif + } + + bool operator!=( SamplerReductionModeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerReductionModeCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode = + VULKAN_HPP_NAMESPACE::SamplerReductionMode::eWeightedAverage; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo ) == + sizeof( VkSamplerReductionModeCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SamplerReductionModeCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SamplerReductionModeCreateInfo; + }; + using SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo; + + struct SamplerYcbcrConversionCreateInfo + { + using NativeType = VkSamplerYcbcrConversionCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerYcbcrConversionCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionCreateInfo( + VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel_ = + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity, + VULKAN_HPP_NAMESPACE::SamplerYcbcrRange ycbcrRange_ = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull, + VULKAN_HPP_NAMESPACE::ComponentMapping components_ = {}, + VULKAN_HPP_NAMESPACE::ChromaLocation xChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven, + VULKAN_HPP_NAMESPACE::ChromaLocation yChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven, + VULKAN_HPP_NAMESPACE::Filter chromaFilter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest, + VULKAN_HPP_NAMESPACE::Bool32 forceExplicitReconstruction_ = {} ) VULKAN_HPP_NOEXCEPT + : format( format_ ) + , ycbcrModel( ycbcrModel_ ) + , ycbcrRange( ycbcrRange_ ) + , components( components_ ) + , xChromaOffset( xChromaOffset_ ) + , yChromaOffset( yChromaOffset_ ) + , chromaFilter( chromaFilter_ ) + , forceExplicitReconstruction( forceExplicitReconstruction_ ) + {} + + VULKAN_HPP_CONSTEXPR + SamplerYcbcrConversionCreateInfo( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerYcbcrConversionCreateInfo( VkSamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerYcbcrConversionCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SamplerYcbcrConversionCreateInfo & + operator=( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerYcbcrConversionCreateInfo & operator=( VkSamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & + setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & + setYcbcrModel( VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel_ ) VULKAN_HPP_NOEXCEPT + { + ycbcrModel = ycbcrModel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & + setYcbcrRange( VULKAN_HPP_NAMESPACE::SamplerYcbcrRange ycbcrRange_ ) VULKAN_HPP_NOEXCEPT + { + ycbcrRange = ycbcrRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & + setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT + { + components = components_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & + setXChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation xChromaOffset_ ) VULKAN_HPP_NOEXCEPT + { + xChromaOffset = xChromaOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & + setYChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation yChromaOffset_ ) VULKAN_HPP_NOEXCEPT + { + yChromaOffset = yChromaOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & + setChromaFilter( VULKAN_HPP_NAMESPACE::Filter chromaFilter_ ) VULKAN_HPP_NOEXCEPT + { + chromaFilter = chromaFilter_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & + setForceExplicitReconstruction( VULKAN_HPP_NAMESPACE::Bool32 forceExplicitReconstruction_ ) VULKAN_HPP_NOEXCEPT + { + forceExplicitReconstruction = forceExplicitReconstruction_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSamplerYcbcrConversionCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSamplerYcbcrConversionCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + format, + ycbcrModel, + ycbcrRange, + components, + xChromaOffset, + yChromaOffset, + chromaFilter, + forceExplicitReconstruction ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerYcbcrConversionCreateInfo const & ) const = default; +#else + bool operator==( SamplerYcbcrConversionCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && + ( ycbcrModel == rhs.ycbcrModel ) && ( ycbcrRange == rhs.ycbcrRange ) && ( components == rhs.components ) && + ( xChromaOffset == rhs.xChromaOffset ) && ( yChromaOffset == rhs.yChromaOffset ) && + ( chromaFilter == rhs.chromaFilter ) && ( forceExplicitReconstruction == rhs.forceExplicitReconstruction ); +# endif + } + + bool operator!=( SamplerYcbcrConversionCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel = + VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity; + VULKAN_HPP_NAMESPACE::SamplerYcbcrRange ycbcrRange = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull; + VULKAN_HPP_NAMESPACE::ComponentMapping components = {}; + VULKAN_HPP_NAMESPACE::ChromaLocation xChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven; + VULKAN_HPP_NAMESPACE::ChromaLocation yChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven; + VULKAN_HPP_NAMESPACE::Filter chromaFilter = VULKAN_HPP_NAMESPACE::Filter::eNearest; + VULKAN_HPP_NAMESPACE::Bool32 forceExplicitReconstruction = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo ) == + sizeof( VkSamplerYcbcrConversionCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SamplerYcbcrConversionCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SamplerYcbcrConversionCreateInfo; + }; + using SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo; + + struct SamplerYcbcrConversionImageFormatProperties + { + using NativeType = VkSamplerYcbcrConversionImageFormatProperties; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eSamplerYcbcrConversionImageFormatProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionImageFormatProperties( + uint32_t combinedImageSamplerDescriptorCount_ = {} ) VULKAN_HPP_NOEXCEPT + : combinedImageSamplerDescriptorCount( combinedImageSamplerDescriptorCount_ ) + {} + + VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionImageFormatProperties( + SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerYcbcrConversionImageFormatProperties( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) + VULKAN_HPP_NOEXCEPT + : SamplerYcbcrConversionImageFormatProperties( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SamplerYcbcrConversionImageFormatProperties & + operator=( SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerYcbcrConversionImageFormatProperties & + operator=( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkSamplerYcbcrConversionImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSamplerYcbcrConversionImageFormatProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, combinedImageSamplerDescriptorCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerYcbcrConversionImageFormatProperties const & ) const = default; +#else + bool operator==( SamplerYcbcrConversionImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( combinedImageSamplerDescriptorCount == rhs.combinedImageSamplerDescriptorCount ); +# endif + } + + bool operator!=( SamplerYcbcrConversionImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionImageFormatProperties; + void * pNext = {}; + uint32_t combinedImageSamplerDescriptorCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties ) == + sizeof( VkSamplerYcbcrConversionImageFormatProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SamplerYcbcrConversionImageFormatProperties is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SamplerYcbcrConversionImageFormatProperties; + }; + using SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties; + + struct SamplerYcbcrConversionInfo + { + using NativeType = VkSamplerYcbcrConversionInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerYcbcrConversionInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SamplerYcbcrConversionInfo( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion_ = {} ) VULKAN_HPP_NOEXCEPT + : conversion( conversion_ ) + {} + + VULKAN_HPP_CONSTEXPR + SamplerYcbcrConversionInfo( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerYcbcrConversionInfo( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerYcbcrConversionInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SamplerYcbcrConversionInfo & operator=( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerYcbcrConversionInfo & operator=( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo & + setConversion( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion_ ) VULKAN_HPP_NOEXCEPT + { + conversion = conversion_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSamplerYcbcrConversionInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSamplerYcbcrConversionInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, conversion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerYcbcrConversionInfo const & ) const = default; +#else + bool operator==( SamplerYcbcrConversionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( conversion == rhs.conversion ); +# endif + } + + bool operator!=( SamplerYcbcrConversionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo ) == + sizeof( VkSamplerYcbcrConversionInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerYcbcrConversionInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SamplerYcbcrConversionInfo; + }; + using SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + struct ScreenSurfaceCreateInfoQNX + { + using NativeType = VkScreenSurfaceCreateInfoQNX; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eScreenSurfaceCreateInfoQNX; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ScreenSurfaceCreateInfoQNX( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX flags_ = {}, + struct _screen_context * context_ = {}, + struct _screen_window * window_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , context( context_ ) + , window( window_ ) + {} + + VULKAN_HPP_CONSTEXPR + ScreenSurfaceCreateInfoQNX( ScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ScreenSurfaceCreateInfoQNX( VkScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT + : ScreenSurfaceCreateInfoQNX( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ScreenSurfaceCreateInfoQNX & operator=( ScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ScreenSurfaceCreateInfoQNX & operator=( VkScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & + setFlags( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & + setContext( struct _screen_context * context_ ) VULKAN_HPP_NOEXCEPT + { + context = context_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & + setWindow( struct _screen_window * window_ ) VULKAN_HPP_NOEXCEPT + { + window = window_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkScreenSurfaceCreateInfoQNX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkScreenSurfaceCreateInfoQNX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, context, window ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ScreenSurfaceCreateInfoQNX const & ) const = default; +# else + bool operator==( ScreenSurfaceCreateInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( context == rhs.context ) && + ( window == rhs.window ); +# endif + } + + bool operator!=( ScreenSurfaceCreateInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eScreenSurfaceCreateInfoQNX; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX flags = {}; + struct _screen_context * context = {}; + struct _screen_window * window = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX ) == + sizeof( VkScreenSurfaceCreateInfoQNX ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ScreenSurfaceCreateInfoQNX is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ScreenSurfaceCreateInfoQNX; + }; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + struct SemaphoreCreateInfo + { + using NativeType = VkSemaphoreCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SemaphoreCreateInfo( VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR SemaphoreCreateInfo( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SemaphoreCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SemaphoreCreateInfo & operator=( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreCreateInfo & operator=( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSemaphoreCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSemaphoreCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreCreateInfo const & ) const = default; +#else + bool operator==( SemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( SemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SemaphoreCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SemaphoreCreateInfo; + }; + + struct SemaphoreGetFdInfoKHR + { + using NativeType = VkSemaphoreGetFdInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreGetFdInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SemaphoreGetFdInfoKHR( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) + VULKAN_HPP_NOEXCEPT + : semaphore( semaphore_ ) + , handleType( handleType_ ) + {} + + VULKAN_HPP_CONSTEXPR SemaphoreGetFdInfoKHR( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SemaphoreGetFdInfoKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SemaphoreGetFdInfoKHR & operator=( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreGetFdInfoKHR & operator=( VkSemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & + setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSemaphoreGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSemaphoreGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreGetFdInfoKHR const & ) const = default; +#else + bool operator==( SemaphoreGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && + ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( SemaphoreGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreGetFdInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SemaphoreGetFdInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SemaphoreGetFdInfoKHR; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct SemaphoreGetWin32HandleInfoKHR + { + using NativeType = VkSemaphoreGetWin32HandleInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreGetWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SemaphoreGetWin32HandleInfoKHR( + VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT + : semaphore( semaphore_ ) + , handleType( handleType_ ) + {} + + VULKAN_HPP_CONSTEXPR + SemaphoreGetWin32HandleInfoKHR( SemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SemaphoreGetWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SemaphoreGetWin32HandleInfoKHR & + operator=( SemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreGetWin32HandleInfoKHR & operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR & + setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSemaphoreGetWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSemaphoreGetWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, handleType ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreGetWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( SemaphoreGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && + ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( SemaphoreGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreGetWin32HandleInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR ) == + sizeof( VkSemaphoreGetWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SemaphoreGetWin32HandleInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SemaphoreGetWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + struct SemaphoreGetZirconHandleInfoFUCHSIA + { + using NativeType = VkSemaphoreGetZirconHandleInfoFUCHSIA; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eSemaphoreGetZirconHandleInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SemaphoreGetZirconHandleInfoFUCHSIA( + VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) VULKAN_HPP_NOEXCEPT + : semaphore( semaphore_ ) + , handleType( handleType_ ) + {} + + VULKAN_HPP_CONSTEXPR SemaphoreGetZirconHandleInfoFUCHSIA( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + SemaphoreGetZirconHandleInfoFUCHSIA( VkSemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : SemaphoreGetZirconHandleInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SemaphoreGetZirconHandleInfoFUCHSIA & + operator=( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreGetZirconHandleInfoFUCHSIA & + operator=( VkSemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA & + setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA & + setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSemaphoreGetZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSemaphoreGetZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, handleType ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreGetZirconHandleInfoFUCHSIA const & ) const = default; +# else + bool operator==( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && + ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreGetZirconHandleInfoFUCHSIA; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = + VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA ) == + sizeof( VkSemaphoreGetZirconHandleInfoFUCHSIA ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SemaphoreGetZirconHandleInfoFUCHSIA is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SemaphoreGetZirconHandleInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + struct SemaphoreSignalInfo + { + using NativeType = VkSemaphoreSignalInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreSignalInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SemaphoreSignalInfo( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, + uint64_t value_ = {} ) VULKAN_HPP_NOEXCEPT + : semaphore( semaphore_ ) + , value( value_ ) + {} + + VULKAN_HPP_CONSTEXPR SemaphoreSignalInfo( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreSignalInfo( VkSemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SemaphoreSignalInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SemaphoreSignalInfo & operator=( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreSignalInfo & operator=( VkSemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & + setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT + { + value = value_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSemaphoreSignalInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSemaphoreSignalInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, value ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreSignalInfo const & ) const = default; +#else + bool operator==( SemaphoreSignalInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && + ( value == rhs.value ); +# endif + } + + bool operator!=( SemaphoreSignalInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreSignalInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; + uint64_t value = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo ) == sizeof( VkSemaphoreSignalInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SemaphoreSignalInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SemaphoreSignalInfo; + }; + using SemaphoreSignalInfoKHR = SemaphoreSignalInfo; + + struct SemaphoreSubmitInfo + { + using NativeType = VkSemaphoreSubmitInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreSubmitInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfo( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, + uint64_t value_ = {}, + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask_ = {}, + uint32_t deviceIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : semaphore( semaphore_ ) + , value( value_ ) + , stageMask( stageMask_ ) + , deviceIndex( deviceIndex_ ) + {} + + VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfo( SemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreSubmitInfo( VkSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SemaphoreSubmitInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SemaphoreSubmitInfo & operator=( SemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreSubmitInfo & operator=( VkSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & + setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT + { + value = value_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & + setStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask_ ) VULKAN_HPP_NOEXCEPT + { + stageMask = stageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setDeviceIndex( uint32_t deviceIndex_ ) VULKAN_HPP_NOEXCEPT + { + deviceIndex = deviceIndex_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSemaphoreSubmitInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSemaphoreSubmitInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, value, stageMask, deviceIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreSubmitInfo const & ) const = default; +#else + bool operator==( SemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && + ( value == rhs.value ) && ( stageMask == rhs.stageMask ) && ( deviceIndex == rhs.deviceIndex ); +# endif + } + + bool operator!=( SemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreSubmitInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; + uint64_t value = {}; + VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask = {}; + uint32_t deviceIndex = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo ) == sizeof( VkSemaphoreSubmitInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SemaphoreSubmitInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SemaphoreSubmitInfo; + }; + using SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo; + + struct SemaphoreTypeCreateInfo + { + using NativeType = VkSemaphoreTypeCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreTypeCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SemaphoreTypeCreateInfo( + VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType_ = VULKAN_HPP_NAMESPACE::SemaphoreType::eBinary, + uint64_t initialValue_ = {} ) VULKAN_HPP_NOEXCEPT + : semaphoreType( semaphoreType_ ) + , initialValue( initialValue_ ) + {} + + VULKAN_HPP_CONSTEXPR SemaphoreTypeCreateInfo( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreTypeCreateInfo( VkSemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SemaphoreTypeCreateInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SemaphoreTypeCreateInfo & operator=( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreTypeCreateInfo & operator=( VkSemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & + setSemaphoreType( VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType_ ) VULKAN_HPP_NOEXCEPT + { + semaphoreType = semaphoreType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setInitialValue( uint64_t initialValue_ ) VULKAN_HPP_NOEXCEPT + { + initialValue = initialValue_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSemaphoreTypeCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSemaphoreTypeCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphoreType, initialValue ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreTypeCreateInfo const & ) const = default; +#else + bool operator==( SemaphoreTypeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphoreType == rhs.semaphoreType ) && + ( initialValue == rhs.initialValue ); +# endif + } + + bool operator!=( SemaphoreTypeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreTypeCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType = VULKAN_HPP_NAMESPACE::SemaphoreType::eBinary; + uint64_t initialValue = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo ) == + sizeof( VkSemaphoreTypeCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SemaphoreTypeCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SemaphoreTypeCreateInfo; + }; + using SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo; + + struct SemaphoreWaitInfo + { + using NativeType = VkSemaphoreWaitInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreWaitInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SemaphoreWaitInfo( VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_ = {}, + uint32_t semaphoreCount_ = {}, + const VULKAN_HPP_NAMESPACE::Semaphore * pSemaphores_ = {}, + const uint64_t * pValues_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , semaphoreCount( semaphoreCount_ ) + , pSemaphores( pSemaphores_ ) + , pValues( pValues_ ) + {} + + VULKAN_HPP_CONSTEXPR SemaphoreWaitInfo( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreWaitInfo( VkSemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SemaphoreWaitInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SemaphoreWaitInfo( + VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & semaphores_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & values_ = {} ) + : flags( flags_ ) + , semaphoreCount( static_cast( semaphores_.size() ) ) + , pSemaphores( semaphores_.data() ) + , pValues( values_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( semaphores_.size() == values_.size() ); +# else + if ( semaphores_.size() != values_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::SemaphoreWaitInfo::SemaphoreWaitInfo: semaphores_.size() != values_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SemaphoreWaitInfo & operator=( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreWaitInfo & operator=( VkSemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & + setFlags( VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setSemaphoreCount( uint32_t semaphoreCount_ ) VULKAN_HPP_NOEXCEPT + { + semaphoreCount = semaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & + setPSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pSemaphores_ ) VULKAN_HPP_NOEXCEPT + { + pSemaphores = pSemaphores_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SemaphoreWaitInfo & setSemaphores( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & semaphores_ ) + VULKAN_HPP_NOEXCEPT + { + semaphoreCount = static_cast( semaphores_.size() ); + pSemaphores = semaphores_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPValues( const uint64_t * pValues_ ) VULKAN_HPP_NOEXCEPT + { + pValues = pValues_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SemaphoreWaitInfo & + setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & values_ ) VULKAN_HPP_NOEXCEPT + { + semaphoreCount = static_cast( values_.size() ); + pValues = values_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSemaphoreWaitInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSemaphoreWaitInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, semaphoreCount, pSemaphores, pValues ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreWaitInfo const & ) const = default; +#else + bool operator==( SemaphoreWaitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( semaphoreCount == rhs.semaphoreCount ) && ( pSemaphores == rhs.pSemaphores ) && + ( pValues == rhs.pValues ); +# endif + } + + bool operator!=( SemaphoreWaitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreWaitInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags = {}; + uint32_t semaphoreCount = {}; + const VULKAN_HPP_NAMESPACE::Semaphore * pSemaphores = {}; + const uint64_t * pValues = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo ) == sizeof( VkSemaphoreWaitInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SemaphoreWaitInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SemaphoreWaitInfo; + }; + using SemaphoreWaitInfoKHR = SemaphoreWaitInfo; + + struct SetStateFlagsIndirectCommandNV + { + using NativeType = VkSetStateFlagsIndirectCommandNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SetStateFlagsIndirectCommandNV( uint32_t data_ = {} ) VULKAN_HPP_NOEXCEPT : data( data_ ) {} + + VULKAN_HPP_CONSTEXPR + SetStateFlagsIndirectCommandNV( SetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SetStateFlagsIndirectCommandNV( VkSetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + : SetStateFlagsIndirectCommandNV( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SetStateFlagsIndirectCommandNV & + operator=( SetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SetStateFlagsIndirectCommandNV & operator=( VkSetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SetStateFlagsIndirectCommandNV & setData( uint32_t data_ ) VULKAN_HPP_NOEXCEPT + { + data = data_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSetStateFlagsIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSetStateFlagsIndirectCommandNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( data ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SetStateFlagsIndirectCommandNV const & ) const = default; +#else + bool operator==( SetStateFlagsIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( data == rhs.data ); +# endif + } + + bool operator!=( SetStateFlagsIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t data = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV ) == + sizeof( VkSetStateFlagsIndirectCommandNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SetStateFlagsIndirectCommandNV is not nothrow_move_constructible!" ); + + struct ShaderModuleCreateInfo + { + using NativeType = VkShaderModuleCreateInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eShaderModuleCreateInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ShaderModuleCreateInfo( VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags_ = {}, + size_t codeSize_ = {}, + const uint32_t * pCode_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , codeSize( codeSize_ ) + , pCode( pCode_ ) + {} + + VULKAN_HPP_CONSTEXPR ShaderModuleCreateInfo( ShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ShaderModuleCreateInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ShaderModuleCreateInfo( VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & code_ ) + : flags( flags_ ), codeSize( code_.size() * 4 ), pCode( code_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ShaderModuleCreateInfo & operator=( ShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderModuleCreateInfo & operator=( VkShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & + setFlags( VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setCodeSize( size_t codeSize_ ) VULKAN_HPP_NOEXCEPT + { + codeSize = codeSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setPCode( const uint32_t * pCode_ ) VULKAN_HPP_NOEXCEPT + { + pCode = pCode_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ShaderModuleCreateInfo & + setCode( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & code_ ) VULKAN_HPP_NOEXCEPT + { + codeSize = code_.size() * 4; + pCode = code_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkShaderModuleCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkShaderModuleCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, codeSize, pCode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ShaderModuleCreateInfo const & ) const = default; +#else + bool operator==( ShaderModuleCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( codeSize == rhs.codeSize ) && ( pCode == rhs.pCode ); +# endif + } + + bool operator!=( ShaderModuleCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eShaderModuleCreateInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags = {}; + size_t codeSize = {}; + const uint32_t * pCode = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo ) == + sizeof( VkShaderModuleCreateInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShaderModuleCreateInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ShaderModuleCreateInfo; + }; + + struct ShaderModuleValidationCacheCreateInfoEXT + { + using NativeType = VkShaderModuleValidationCacheCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eShaderModuleValidationCacheCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ShaderModuleValidationCacheCreateInfoEXT( + VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache_ = {} ) VULKAN_HPP_NOEXCEPT + : validationCache( validationCache_ ) + {} + + VULKAN_HPP_CONSTEXPR ShaderModuleValidationCacheCreateInfoEXT( + ShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : ShaderModuleValidationCacheCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ShaderModuleValidationCacheCreateInfoEXT & + operator=( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderModuleValidationCacheCreateInfoEXT & + operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ShaderModuleValidationCacheCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderModuleValidationCacheCreateInfoEXT & + setValidationCache( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache_ ) VULKAN_HPP_NOEXCEPT + { + validationCache = validationCache_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkShaderModuleValidationCacheCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkShaderModuleValidationCacheCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, validationCache ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ShaderModuleValidationCacheCreateInfoEXT const & ) const = default; +#else + bool operator==( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( validationCache == rhs.validationCache ); +# endif + } + + bool operator!=( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eShaderModuleValidationCacheCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT ) == + sizeof( VkShaderModuleValidationCacheCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ShaderModuleValidationCacheCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ShaderModuleValidationCacheCreateInfoEXT; + }; + + struct ShaderResourceUsageAMD + { + using NativeType = VkShaderResourceUsageAMD; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ShaderResourceUsageAMD( uint32_t numUsedVgprs_ = {}, + uint32_t numUsedSgprs_ = {}, + uint32_t ldsSizePerLocalWorkGroup_ = {}, + size_t ldsUsageSizeInBytes_ = {}, + size_t scratchMemUsageInBytes_ = {} ) VULKAN_HPP_NOEXCEPT + : numUsedVgprs( numUsedVgprs_ ) + , numUsedSgprs( numUsedSgprs_ ) + , ldsSizePerLocalWorkGroup( ldsSizePerLocalWorkGroup_ ) + , ldsUsageSizeInBytes( ldsUsageSizeInBytes_ ) + , scratchMemUsageInBytes( scratchMemUsageInBytes_ ) + {} + + VULKAN_HPP_CONSTEXPR ShaderResourceUsageAMD( ShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderResourceUsageAMD( VkShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : ShaderResourceUsageAMD( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ShaderResourceUsageAMD & operator=( ShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderResourceUsageAMD & operator=( VkShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkShaderResourceUsageAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkShaderResourceUsageAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + numUsedVgprs, numUsedSgprs, ldsSizePerLocalWorkGroup, ldsUsageSizeInBytes, scratchMemUsageInBytes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ShaderResourceUsageAMD const & ) const = default; +#else + bool operator==( ShaderResourceUsageAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( numUsedVgprs == rhs.numUsedVgprs ) && ( numUsedSgprs == rhs.numUsedSgprs ) && + ( ldsSizePerLocalWorkGroup == rhs.ldsSizePerLocalWorkGroup ) && + ( ldsUsageSizeInBytes == rhs.ldsUsageSizeInBytes ) && + ( scratchMemUsageInBytes == rhs.scratchMemUsageInBytes ); +# endif + } + + bool operator!=( ShaderResourceUsageAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t numUsedVgprs = {}; + uint32_t numUsedSgprs = {}; + uint32_t ldsSizePerLocalWorkGroup = {}; + size_t ldsUsageSizeInBytes = {}; + size_t scratchMemUsageInBytes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD ) == + sizeof( VkShaderResourceUsageAMD ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShaderResourceUsageAMD is not nothrow_move_constructible!" ); + + struct ShaderStatisticsInfoAMD + { + using NativeType = VkShaderStatisticsInfoAMD; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + ShaderStatisticsInfoAMD( VULKAN_HPP_NAMESPACE::ShaderStageFlags shaderStageMask_ = {}, + VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD resourceUsage_ = {}, + uint32_t numPhysicalVgprs_ = {}, + uint32_t numPhysicalSgprs_ = {}, + uint32_t numAvailableVgprs_ = {}, + uint32_t numAvailableSgprs_ = {}, + std::array const & computeWorkGroupSize_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderStageMask( shaderStageMask_ ) + , resourceUsage( resourceUsage_ ) + , numPhysicalVgprs( numPhysicalVgprs_ ) + , numPhysicalSgprs( numPhysicalSgprs_ ) + , numAvailableVgprs( numAvailableVgprs_ ) + , numAvailableSgprs( numAvailableSgprs_ ) + , computeWorkGroupSize( computeWorkGroupSize_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + ShaderStatisticsInfoAMD( ShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderStatisticsInfoAMD( VkShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : ShaderStatisticsInfoAMD( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ShaderStatisticsInfoAMD & operator=( ShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderStatisticsInfoAMD & operator=( VkShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkShaderStatisticsInfoAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkShaderStatisticsInfoAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( shaderStageMask, + resourceUsage, + numPhysicalVgprs, + numPhysicalSgprs, + numAvailableVgprs, + numAvailableSgprs, + computeWorkGroupSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ShaderStatisticsInfoAMD const & ) const = default; +#else + bool operator==( ShaderStatisticsInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( shaderStageMask == rhs.shaderStageMask ) && ( resourceUsage == rhs.resourceUsage ) && + ( numPhysicalVgprs == rhs.numPhysicalVgprs ) && ( numPhysicalSgprs == rhs.numPhysicalSgprs ) && + ( numAvailableVgprs == rhs.numAvailableVgprs ) && ( numAvailableSgprs == rhs.numAvailableSgprs ) && + ( computeWorkGroupSize == rhs.computeWorkGroupSize ); +# endif + } + + bool operator!=( ShaderStatisticsInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ShaderStageFlags shaderStageMask = {}; + VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD resourceUsage = {}; + uint32_t numPhysicalVgprs = {}; + uint32_t numPhysicalSgprs = {}; + uint32_t numAvailableVgprs = {}; + uint32_t numAvailableSgprs = {}; + VULKAN_HPP_NAMESPACE::ArrayWrapper1D computeWorkGroupSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD ) == + sizeof( VkShaderStatisticsInfoAMD ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShaderStatisticsInfoAMD is not nothrow_move_constructible!" ); + + struct SharedPresentSurfaceCapabilitiesKHR + { + using NativeType = VkSharedPresentSurfaceCapabilitiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eSharedPresentSurfaceCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SharedPresentSurfaceCapabilitiesKHR( + VULKAN_HPP_NAMESPACE::ImageUsageFlags sharedPresentSupportedUsageFlags_ = {} ) VULKAN_HPP_NOEXCEPT + : sharedPresentSupportedUsageFlags( sharedPresentSupportedUsageFlags_ ) + {} + + VULKAN_HPP_CONSTEXPR SharedPresentSurfaceCapabilitiesKHR( SharedPresentSurfaceCapabilitiesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + SharedPresentSurfaceCapabilitiesKHR( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SharedPresentSurfaceCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SharedPresentSurfaceCapabilitiesKHR & + operator=( SharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SharedPresentSurfaceCapabilitiesKHR & + operator=( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkSharedPresentSurfaceCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSharedPresentSurfaceCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std:: + tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, sharedPresentSupportedUsageFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SharedPresentSurfaceCapabilitiesKHR const & ) const = default; +#else + bool operator==( SharedPresentSurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags ); +# endif + } + + bool operator!=( SharedPresentSurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSharedPresentSurfaceCapabilitiesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::ImageUsageFlags sharedPresentSupportedUsageFlags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR ) == + sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SharedPresentSurfaceCapabilitiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SharedPresentSurfaceCapabilitiesKHR; + }; + + struct SparseImageFormatProperties + { + using NativeType = VkSparseImageFormatProperties; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SparseImageFormatProperties( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}, + VULKAN_HPP_NAMESPACE::Extent3D imageGranularity_ = {}, + VULKAN_HPP_NAMESPACE::SparseImageFormatFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT + : aspectMask( aspectMask_ ) + , imageGranularity( imageGranularity_ ) + , flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR + SparseImageFormatProperties( SparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageFormatProperties( VkSparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseImageFormatProperties( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SparseImageFormatProperties & operator=( SparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageFormatProperties & operator=( VkSparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkSparseImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSparseImageFormatProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( aspectMask, imageGranularity, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseImageFormatProperties const & ) const = default; +#else + bool operator==( SparseImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( aspectMask == rhs.aspectMask ) && ( imageGranularity == rhs.imageGranularity ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( SparseImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {}; + VULKAN_HPP_NAMESPACE::Extent3D imageGranularity = {}; + VULKAN_HPP_NAMESPACE::SparseImageFormatFlags flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageFormatProperties ) == + sizeof( VkSparseImageFormatProperties ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SparseImageFormatProperties is not nothrow_move_constructible!" ); + + struct SparseImageFormatProperties2 + { + using NativeType = VkSparseImageFormatProperties2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSparseImageFormatProperties2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SparseImageFormatProperties2( + VULKAN_HPP_NAMESPACE::SparseImageFormatProperties properties_ = {} ) VULKAN_HPP_NOEXCEPT + : properties( properties_ ) + {} + + VULKAN_HPP_CONSTEXPR + SparseImageFormatProperties2( SparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageFormatProperties2( VkSparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseImageFormatProperties2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SparseImageFormatProperties2 & operator=( SparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageFormatProperties2 & operator=( VkSparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkSparseImageFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSparseImageFormatProperties2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, properties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseImageFormatProperties2 const & ) const = default; +#else + bool operator==( SparseImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( properties == rhs.properties ); +# endif + } + + bool operator!=( SparseImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSparseImageFormatProperties2; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::SparseImageFormatProperties properties = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2 ) == + sizeof( VkSparseImageFormatProperties2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SparseImageFormatProperties2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SparseImageFormatProperties2; + }; + using SparseImageFormatProperties2KHR = SparseImageFormatProperties2; + + struct SparseImageMemoryRequirements + { + using NativeType = VkSparseImageMemoryRequirements; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SparseImageMemoryRequirements( VULKAN_HPP_NAMESPACE::SparseImageFormatProperties formatProperties_ = {}, + uint32_t imageMipTailFirstLod_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize imageMipTailSize_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize imageMipTailOffset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize imageMipTailStride_ = {} ) VULKAN_HPP_NOEXCEPT + : formatProperties( formatProperties_ ) + , imageMipTailFirstLod( imageMipTailFirstLod_ ) + , imageMipTailSize( imageMipTailSize_ ) + , imageMipTailOffset( imageMipTailOffset_ ) + , imageMipTailStride( imageMipTailStride_ ) + {} + + VULKAN_HPP_CONSTEXPR + SparseImageMemoryRequirements( SparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageMemoryRequirements( VkSparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseImageMemoryRequirements( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SparseImageMemoryRequirements & + operator=( SparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageMemoryRequirements & operator=( VkSparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkSparseImageMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSparseImageMemoryRequirements &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + formatProperties, imageMipTailFirstLod, imageMipTailSize, imageMipTailOffset, imageMipTailStride ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseImageMemoryRequirements const & ) const = default; +#else + bool operator==( SparseImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( formatProperties == rhs.formatProperties ) && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod ) && + ( imageMipTailSize == rhs.imageMipTailSize ) && ( imageMipTailOffset == rhs.imageMipTailOffset ) && + ( imageMipTailStride == rhs.imageMipTailStride ); +# endif + } + + bool operator!=( SparseImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::SparseImageFormatProperties formatProperties = {}; + uint32_t imageMipTailFirstLod = {}; + VULKAN_HPP_NAMESPACE::DeviceSize imageMipTailSize = {}; + VULKAN_HPP_NAMESPACE::DeviceSize imageMipTailOffset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize imageMipTailStride = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements ) == + sizeof( VkSparseImageMemoryRequirements ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SparseImageMemoryRequirements is not nothrow_move_constructible!" ); + + struct SparseImageMemoryRequirements2 + { + using NativeType = VkSparseImageMemoryRequirements2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSparseImageMemoryRequirements2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements2( + VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements memoryRequirements_ = {} ) VULKAN_HPP_NOEXCEPT + : memoryRequirements( memoryRequirements_ ) + {} + + VULKAN_HPP_CONSTEXPR + SparseImageMemoryRequirements2( SparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageMemoryRequirements2( VkSparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseImageMemoryRequirements2( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SparseImageMemoryRequirements2 & + operator=( SparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageMemoryRequirements2 & operator=( VkSparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkSparseImageMemoryRequirements2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSparseImageMemoryRequirements2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryRequirements ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseImageMemoryRequirements2 const & ) const = default; +#else + bool operator==( SparseImageMemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryRequirements == rhs.memoryRequirements ); +# endif + } + + bool operator!=( SparseImageMemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSparseImageMemoryRequirements2; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements memoryRequirements = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 ) == + sizeof( VkSparseImageMemoryRequirements2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SparseImageMemoryRequirements2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SparseImageMemoryRequirements2; + }; + using SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2; + +#if defined( VK_USE_PLATFORM_GGP ) + struct StreamDescriptorSurfaceCreateInfoGGP + { + using NativeType = VkStreamDescriptorSurfaceCreateInfoGGP; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eStreamDescriptorSurfaceCreateInfoGGP; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + StreamDescriptorSurfaceCreateInfoGGP( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags_ = {}, + GgpStreamDescriptor streamDescriptor_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , streamDescriptor( streamDescriptor_ ) + {} + + VULKAN_HPP_CONSTEXPR StreamDescriptorSurfaceCreateInfoGGP( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + StreamDescriptorSurfaceCreateInfoGGP( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT + : StreamDescriptorSurfaceCreateInfoGGP( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + StreamDescriptorSurfaceCreateInfoGGP & + operator=( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + StreamDescriptorSurfaceCreateInfoGGP & + operator=( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP & + setFlags( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP & + setStreamDescriptor( GgpStreamDescriptor streamDescriptor_ ) VULKAN_HPP_NOEXCEPT + { + streamDescriptor = streamDescriptor_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkStreamDescriptorSurfaceCreateInfoGGP const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkStreamDescriptorSurfaceCreateInfoGGP &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, streamDescriptor ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &streamDescriptor, &rhs.streamDescriptor, sizeof( GgpStreamDescriptor ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( memcmp( &streamDescriptor, &rhs.streamDescriptor, sizeof( GgpStreamDescriptor ) ) == 0 ); + } + + bool operator!=( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eStreamDescriptorSurfaceCreateInfoGGP; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags = {}; + GgpStreamDescriptor streamDescriptor = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP ) == + sizeof( VkStreamDescriptorSurfaceCreateInfoGGP ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "StreamDescriptorSurfaceCreateInfoGGP is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = StreamDescriptorSurfaceCreateInfoGGP; + }; +#endif /*VK_USE_PLATFORM_GGP*/ + + struct StridedDeviceAddressRegionKHR + { + using NativeType = VkStridedDeviceAddressRegionKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + StridedDeviceAddressRegionKHR( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize stride_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize size_ = {} ) VULKAN_HPP_NOEXCEPT + : deviceAddress( deviceAddress_ ) + , stride( stride_ ) + , size( size_ ) + {} + + VULKAN_HPP_CONSTEXPR + StridedDeviceAddressRegionKHR( StridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + StridedDeviceAddressRegionKHR( VkStridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : StridedDeviceAddressRegionKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + StridedDeviceAddressRegionKHR & + operator=( StridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + StridedDeviceAddressRegionKHR & operator=( VkStridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR & + setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR & + setStride( VULKAN_HPP_NAMESPACE::DeviceSize stride_ ) VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR & + setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkStridedDeviceAddressRegionKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkStridedDeviceAddressRegionKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( deviceAddress, stride, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( StridedDeviceAddressRegionKHR const & ) const = default; +#else + bool operator==( StridedDeviceAddressRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( deviceAddress == rhs.deviceAddress ) && ( stride == rhs.stride ) && ( size == rhs.size ); +# endif + } + + bool operator!=( StridedDeviceAddressRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {}; + VULKAN_HPP_NAMESPACE::DeviceSize stride = {}; + VULKAN_HPP_NAMESPACE::DeviceSize size = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR ) == + sizeof( VkStridedDeviceAddressRegionKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "StridedDeviceAddressRegionKHR is not nothrow_move_constructible!" ); + + struct SubmitInfo + { + using NativeType = VkSubmitInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubmitInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SubmitInfo( uint32_t waitSemaphoreCount_ = {}, + const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ = {}, + const VULKAN_HPP_NAMESPACE::PipelineStageFlags * pWaitDstStageMask_ = {}, + uint32_t commandBufferCount_ = {}, + const VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers_ = {}, + uint32_t signalSemaphoreCount_ = {}, + const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores_ = {} ) VULKAN_HPP_NOEXCEPT + : waitSemaphoreCount( waitSemaphoreCount_ ) + , pWaitSemaphores( pWaitSemaphores_ ) + , pWaitDstStageMask( pWaitDstStageMask_ ) + , commandBufferCount( commandBufferCount_ ) + , pCommandBuffers( pCommandBuffers_ ) + , signalSemaphoreCount( signalSemaphoreCount_ ) + , pSignalSemaphores( pSignalSemaphores_ ) + {} + + VULKAN_HPP_CONSTEXPR SubmitInfo( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubmitInfo( VkSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SubmitInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphores_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + waitDstStageMask_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + commandBuffers_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + signalSemaphores_ = {} ) + : waitSemaphoreCount( static_cast( waitSemaphores_.size() ) ) + , pWaitSemaphores( waitSemaphores_.data() ) + , pWaitDstStageMask( waitDstStageMask_.data() ) + , commandBufferCount( static_cast( commandBuffers_.size() ) ) + , pCommandBuffers( commandBuffers_.data() ) + , signalSemaphoreCount( static_cast( signalSemaphores_.size() ) ) + , pSignalSemaphores( signalSemaphores_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( waitSemaphores_.size() == waitDstStageMask_.size() ); +# else + if ( waitSemaphores_.size() != waitDstStageMask_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::SubmitInfo::SubmitInfo: waitSemaphores_.size() != waitDstStageMask_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SubmitInfo & operator=( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubmitInfo & operator=( VkSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = waitSemaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & + setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT + { + pWaitSemaphores = pWaitSemaphores_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo & setWaitSemaphores( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphores_ ) + VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = static_cast( waitSemaphores_.size() ); + pWaitSemaphores = waitSemaphores_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & + setPWaitDstStageMask( const VULKAN_HPP_NAMESPACE::PipelineStageFlags * pWaitDstStageMask_ ) VULKAN_HPP_NOEXCEPT + { + pWaitDstStageMask = pWaitDstStageMask_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo & setWaitDstStageMask( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + waitDstStageMask_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = static_cast( waitDstStageMask_.size() ); + pWaitDstStageMask = waitDstStageMask_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT + { + commandBufferCount = commandBufferCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & + setPCommandBuffers( const VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers_ ) VULKAN_HPP_NOEXCEPT + { + pCommandBuffers = pCommandBuffers_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo & setCommandBuffers( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & commandBuffers_ ) + VULKAN_HPP_NOEXCEPT + { + commandBufferCount = static_cast( commandBuffers_.size() ); + pCommandBuffers = commandBuffers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT + { + signalSemaphoreCount = signalSemaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & + setPSignalSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores_ ) VULKAN_HPP_NOEXCEPT + { + pSignalSemaphores = pSignalSemaphores_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo & setSignalSemaphores( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphores_ ) + VULKAN_HPP_NOEXCEPT + { + signalSemaphoreCount = static_cast( signalSemaphores_.size() ); + pSignalSemaphores = signalSemaphores_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSubmitInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSubmitInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + waitSemaphoreCount, + pWaitSemaphores, + pWaitDstStageMask, + commandBufferCount, + pCommandBuffers, + signalSemaphoreCount, + pSignalSemaphores ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubmitInfo const & ) const = default; +#else + bool operator==( SubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) && + ( pWaitSemaphores == rhs.pWaitSemaphores ) && ( pWaitDstStageMask == rhs.pWaitDstStageMask ) && + ( commandBufferCount == rhs.commandBufferCount ) && ( pCommandBuffers == rhs.pCommandBuffers ) && + ( signalSemaphoreCount == rhs.signalSemaphoreCount ) && ( pSignalSemaphores == rhs.pSignalSemaphores ); +# endif + } + + bool operator!=( SubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubmitInfo; + const void * pNext = {}; + uint32_t waitSemaphoreCount = {}; + const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores = {}; + const VULKAN_HPP_NAMESPACE::PipelineStageFlags * pWaitDstStageMask = {}; + uint32_t commandBufferCount = {}; + const VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers = {}; + uint32_t signalSemaphoreCount = {}; + const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubmitInfo ) == sizeof( VkSubmitInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubmitInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SubmitInfo; + }; + + struct SubmitInfo2 + { + using NativeType = VkSubmitInfo2; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubmitInfo2; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SubmitInfo2( VULKAN_HPP_NAMESPACE::SubmitFlags flags_ = {}, + uint32_t waitSemaphoreInfoCount_ = {}, + const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pWaitSemaphoreInfos_ = {}, + uint32_t commandBufferInfoCount_ = {}, + const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo * pCommandBufferInfos_ = {}, + uint32_t signalSemaphoreInfoCount_ = {}, + const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pSignalSemaphoreInfos_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , waitSemaphoreInfoCount( waitSemaphoreInfoCount_ ) + , pWaitSemaphoreInfos( pWaitSemaphoreInfos_ ) + , commandBufferInfoCount( commandBufferInfoCount_ ) + , pCommandBufferInfos( pCommandBufferInfos_ ) + , signalSemaphoreInfoCount( signalSemaphoreInfoCount_ ) + , pSignalSemaphoreInfos( pSignalSemaphoreInfos_ ) + {} + + VULKAN_HPP_CONSTEXPR SubmitInfo2( SubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubmitInfo2( VkSubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : SubmitInfo2( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo2( VULKAN_HPP_NAMESPACE::SubmitFlags flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + waitSemaphoreInfos_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo> const & commandBufferInfos_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + signalSemaphoreInfos_ = {} ) + : flags( flags_ ) + , waitSemaphoreInfoCount( static_cast( waitSemaphoreInfos_.size() ) ) + , pWaitSemaphoreInfos( waitSemaphoreInfos_.data() ) + , commandBufferInfoCount( static_cast( commandBufferInfos_.size() ) ) + , pCommandBufferInfos( commandBufferInfos_.data() ) + , signalSemaphoreInfoCount( static_cast( signalSemaphoreInfos_.size() ) ) + , pSignalSemaphoreInfos( signalSemaphoreInfos_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SubmitInfo2 & operator=( SubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubmitInfo2 & operator=( VkSubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setFlags( VULKAN_HPP_NAMESPACE::SubmitFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & + setWaitSemaphoreInfoCount( uint32_t waitSemaphoreInfoCount_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreInfoCount = waitSemaphoreInfoCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPWaitSemaphoreInfos( + const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pWaitSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT + { + pWaitSemaphoreInfos = pWaitSemaphoreInfos_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo2 & setWaitSemaphoreInfos( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + waitSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreInfoCount = static_cast( waitSemaphoreInfos_.size() ); + pWaitSemaphoreInfos = waitSemaphoreInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & + setCommandBufferInfoCount( uint32_t commandBufferInfoCount_ ) VULKAN_HPP_NOEXCEPT + { + commandBufferInfoCount = commandBufferInfoCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPCommandBufferInfos( + const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo * pCommandBufferInfos_ ) VULKAN_HPP_NOEXCEPT + { + pCommandBufferInfos = pCommandBufferInfos_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo2 & setCommandBufferInfos( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + commandBufferInfos_ ) VULKAN_HPP_NOEXCEPT + { + commandBufferInfoCount = static_cast( commandBufferInfos_.size() ); + pCommandBufferInfos = commandBufferInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & + setSignalSemaphoreInfoCount( uint32_t signalSemaphoreInfoCount_ ) VULKAN_HPP_NOEXCEPT + { + signalSemaphoreInfoCount = signalSemaphoreInfoCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPSignalSemaphoreInfos( + const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pSignalSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT + { + pSignalSemaphoreInfos = pSignalSemaphoreInfos_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo2 & setSignalSemaphoreInfos( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + signalSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT + { + signalSemaphoreInfoCount = static_cast( signalSemaphoreInfos_.size() ); + pSignalSemaphoreInfos = signalSemaphoreInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSubmitInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSubmitInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + waitSemaphoreInfoCount, + pWaitSemaphoreInfos, + commandBufferInfoCount, + pCommandBufferInfos, + signalSemaphoreInfoCount, + pSignalSemaphoreInfos ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubmitInfo2 const & ) const = default; +#else + bool operator==( SubmitInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( waitSemaphoreInfoCount == rhs.waitSemaphoreInfoCount ) && + ( pWaitSemaphoreInfos == rhs.pWaitSemaphoreInfos ) && + ( commandBufferInfoCount == rhs.commandBufferInfoCount ) && + ( pCommandBufferInfos == rhs.pCommandBufferInfos ) && + ( signalSemaphoreInfoCount == rhs.signalSemaphoreInfoCount ) && + ( pSignalSemaphoreInfos == rhs.pSignalSemaphoreInfos ); +# endif + } + + bool operator!=( SubmitInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubmitInfo2; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SubmitFlags flags = {}; + uint32_t waitSemaphoreInfoCount = {}; + const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pWaitSemaphoreInfos = {}; + uint32_t commandBufferInfoCount = {}; + const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo * pCommandBufferInfos = {}; + uint32_t signalSemaphoreInfoCount = {}; + const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pSignalSemaphoreInfos = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubmitInfo2 ) == sizeof( VkSubmitInfo2 ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubmitInfo2 is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SubmitInfo2; + }; + using SubmitInfo2KHR = SubmitInfo2; + + struct SubpassBeginInfo + { + using NativeType = VkSubpassBeginInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassBeginInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassBeginInfo( VULKAN_HPP_NAMESPACE::SubpassContents contents_ = + VULKAN_HPP_NAMESPACE::SubpassContents::eInline ) VULKAN_HPP_NOEXCEPT + : contents( contents_ ) + {} + + VULKAN_HPP_CONSTEXPR SubpassBeginInfo( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassBeginInfo( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SubpassBeginInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SubpassBeginInfo & operator=( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassBeginInfo & operator=( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo & + setContents( VULKAN_HPP_NAMESPACE::SubpassContents contents_ ) VULKAN_HPP_NOEXCEPT + { + contents = contents_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSubpassBeginInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSubpassBeginInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, contents ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassBeginInfo const & ) const = default; +#else + bool operator==( SubpassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( contents == rhs.contents ); +# endif + } + + bool operator!=( SubpassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassBeginInfo; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SubpassContents contents = VULKAN_HPP_NAMESPACE::SubpassContents::eInline; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassBeginInfo ) == sizeof( VkSubpassBeginInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassBeginInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SubpassBeginInfo; + }; + using SubpassBeginInfoKHR = SubpassBeginInfo; + + struct SubpassDescriptionDepthStencilResolve + { + using NativeType = VkSubpassDescriptionDepthStencilResolve; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eSubpassDescriptionDepthStencilResolve; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassDescriptionDepthStencilResolve( + VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode_ = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone, + VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode_ = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone, + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilResolveAttachment_ = {} ) VULKAN_HPP_NOEXCEPT + : depthResolveMode( depthResolveMode_ ) + , stencilResolveMode( stencilResolveMode_ ) + , pDepthStencilResolveAttachment( pDepthStencilResolveAttachment_ ) + {} + + VULKAN_HPP_CONSTEXPR SubpassDescriptionDepthStencilResolve( SubpassDescriptionDepthStencilResolve const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + SubpassDescriptionDepthStencilResolve( VkSubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT + : SubpassDescriptionDepthStencilResolve( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SubpassDescriptionDepthStencilResolve & + operator=( SubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassDescriptionDepthStencilResolve & + operator=( VkSubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & + setDepthResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode_ ) VULKAN_HPP_NOEXCEPT + { + depthResolveMode = depthResolveMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & + setStencilResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode_ ) VULKAN_HPP_NOEXCEPT + { + stencilResolveMode = stencilResolveMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & setPDepthStencilResolveAttachment( + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilResolveAttachment_ ) VULKAN_HPP_NOEXCEPT + { + pDepthStencilResolveAttachment = pDepthStencilResolveAttachment_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSubpassDescriptionDepthStencilResolve const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSubpassDescriptionDepthStencilResolve &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, depthResolveMode, stencilResolveMode, pDepthStencilResolveAttachment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassDescriptionDepthStencilResolve const & ) const = default; +#else + bool operator==( SubpassDescriptionDepthStencilResolve const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthResolveMode == rhs.depthResolveMode ) && + ( stencilResolveMode == rhs.stencilResolveMode ) && + ( pDepthStencilResolveAttachment == rhs.pDepthStencilResolveAttachment ); +# endif + } + + bool operator!=( SubpassDescriptionDepthStencilResolve const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassDescriptionDepthStencilResolve; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone; + VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone; + const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilResolveAttachment = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve ) == + sizeof( VkSubpassDescriptionDepthStencilResolve ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SubpassDescriptionDepthStencilResolve is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SubpassDescriptionDepthStencilResolve; + }; + using SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve; + + struct SubpassEndInfo + { + using NativeType = VkSubpassEndInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassEndInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassEndInfo() VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_CONSTEXPR SubpassEndInfo( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassEndInfo( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SubpassEndInfo( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SubpassEndInfo & operator=( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassEndInfo & operator=( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassEndInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSubpassEndInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSubpassEndInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassEndInfo const & ) const = default; +#else + bool operator==( SubpassEndInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ); +# endif + } + + bool operator!=( SubpassEndInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassEndInfo; + const void * pNext = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassEndInfo ) == sizeof( VkSubpassEndInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassEndInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SubpassEndInfo; + }; + using SubpassEndInfoKHR = SubpassEndInfo; + + struct SubpassFragmentDensityMapOffsetEndInfoQCOM + { + using NativeType = VkSubpassFragmentDensityMapOffsetEndInfoQCOM; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eSubpassFragmentDensityMapOffsetEndInfoQCOM; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassFragmentDensityMapOffsetEndInfoQCOM( + uint32_t fragmentDensityOffsetCount_ = {}, + const VULKAN_HPP_NAMESPACE::Offset2D * pFragmentDensityOffsets_ = {} ) VULKAN_HPP_NOEXCEPT + : fragmentDensityOffsetCount( fragmentDensityOffsetCount_ ) + , pFragmentDensityOffsets( pFragmentDensityOffsets_ ) + {} + + VULKAN_HPP_CONSTEXPR SubpassFragmentDensityMapOffsetEndInfoQCOM( + SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassFragmentDensityMapOffsetEndInfoQCOM( VkSubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) + VULKAN_HPP_NOEXCEPT + : SubpassFragmentDensityMapOffsetEndInfoQCOM( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassFragmentDensityMapOffsetEndInfoQCOM( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + fragmentDensityOffsets_ ) + : fragmentDensityOffsetCount( static_cast( fragmentDensityOffsets_.size() ) ) + , pFragmentDensityOffsets( fragmentDensityOffsets_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SubpassFragmentDensityMapOffsetEndInfoQCOM & + operator=( SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassFragmentDensityMapOffsetEndInfoQCOM & + operator=( VkSubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassFragmentDensityMapOffsetEndInfoQCOM & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassFragmentDensityMapOffsetEndInfoQCOM & + setFragmentDensityOffsetCount( uint32_t fragmentDensityOffsetCount_ ) VULKAN_HPP_NOEXCEPT + { + fragmentDensityOffsetCount = fragmentDensityOffsetCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassFragmentDensityMapOffsetEndInfoQCOM & + setPFragmentDensityOffsets( const VULKAN_HPP_NAMESPACE::Offset2D * pFragmentDensityOffsets_ ) VULKAN_HPP_NOEXCEPT + { + pFragmentDensityOffsets = pFragmentDensityOffsets_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassFragmentDensityMapOffsetEndInfoQCOM & setFragmentDensityOffsets( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + fragmentDensityOffsets_ ) VULKAN_HPP_NOEXCEPT + { + fragmentDensityOffsetCount = static_cast( fragmentDensityOffsets_.size() ); + pFragmentDensityOffsets = fragmentDensityOffsets_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSubpassFragmentDensityMapOffsetEndInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSubpassFragmentDensityMapOffsetEndInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentDensityOffsetCount, pFragmentDensityOffsets ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassFragmentDensityMapOffsetEndInfoQCOM const & ) const = default; +#else + bool operator==( SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( fragmentDensityOffsetCount == rhs.fragmentDensityOffsetCount ) && + ( pFragmentDensityOffsets == rhs.pFragmentDensityOffsets ); +# endif + } + + bool operator!=( SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassFragmentDensityMapOffsetEndInfoQCOM; + const void * pNext = {}; + uint32_t fragmentDensityOffsetCount = {}; + const VULKAN_HPP_NAMESPACE::Offset2D * pFragmentDensityOffsets = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM ) == + sizeof( VkSubpassFragmentDensityMapOffsetEndInfoQCOM ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SubpassFragmentDensityMapOffsetEndInfoQCOM is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SubpassFragmentDensityMapOffsetEndInfoQCOM; + }; + + struct SubpassShadingPipelineCreateInfoHUAWEI + { + using NativeType = VkSubpassShadingPipelineCreateInfoHUAWEI; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eSubpassShadingPipelineCreateInfoHUAWEI; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassShadingPipelineCreateInfoHUAWEI( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, + uint32_t subpass_ = {} ) VULKAN_HPP_NOEXCEPT + : renderPass( renderPass_ ) + , subpass( subpass_ ) + {} + + VULKAN_HPP_CONSTEXPR SubpassShadingPipelineCreateInfoHUAWEI( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + SubpassShadingPipelineCreateInfoHUAWEI( VkSubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + : SubpassShadingPipelineCreateInfoHUAWEI( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SubpassShadingPipelineCreateInfoHUAWEI & + operator=( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassShadingPipelineCreateInfoHUAWEI & + operator=( VkSubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkSubpassShadingPipelineCreateInfoHUAWEI const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSubpassShadingPipelineCreateInfoHUAWEI &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, renderPass, subpass ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassShadingPipelineCreateInfoHUAWEI const & ) const = default; +#else + bool operator==( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPass == rhs.renderPass ) && + ( subpass == rhs.subpass ); +# endif + } + + bool operator!=( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassShadingPipelineCreateInfoHUAWEI; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::RenderPass renderPass = {}; + uint32_t subpass = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI ) == + sizeof( VkSubpassShadingPipelineCreateInfoHUAWEI ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SubpassShadingPipelineCreateInfoHUAWEI is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SubpassShadingPipelineCreateInfoHUAWEI; + }; + + struct SurfaceCapabilities2EXT + { + using NativeType = VkSurfaceCapabilities2EXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceCapabilities2EXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceCapabilities2EXT( + uint32_t minImageCount_ = {}, + uint32_t maxImageCount_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D currentExtent_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D minImageExtent_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D maxImageExtent_ = {}, + uint32_t maxImageArrayLayers_ = {}, + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms_ = {}, + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform_ = + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, + VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha_ = {}, + VULKAN_HPP_NAMESPACE::ImageUsageFlags supportedUsageFlags_ = {}, + VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT supportedSurfaceCounters_ = {} ) VULKAN_HPP_NOEXCEPT + : minImageCount( minImageCount_ ) + , maxImageCount( maxImageCount_ ) + , currentExtent( currentExtent_ ) + , minImageExtent( minImageExtent_ ) + , maxImageExtent( maxImageExtent_ ) + , maxImageArrayLayers( maxImageArrayLayers_ ) + , supportedTransforms( supportedTransforms_ ) + , currentTransform( currentTransform_ ) + , supportedCompositeAlpha( supportedCompositeAlpha_ ) + , supportedUsageFlags( supportedUsageFlags_ ) + , supportedSurfaceCounters( supportedSurfaceCounters_ ) + {} + + VULKAN_HPP_CONSTEXPR SurfaceCapabilities2EXT( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCapabilities2EXT( VkSurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceCapabilities2EXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SurfaceCapabilities2EXT & operator=( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCapabilities2EXT & operator=( VkSurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkSurfaceCapabilities2EXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSurfaceCapabilities2EXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + minImageCount, + maxImageCount, + currentExtent, + minImageExtent, + maxImageExtent, + maxImageArrayLayers, + supportedTransforms, + currentTransform, + supportedCompositeAlpha, + supportedUsageFlags, + supportedSurfaceCounters ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceCapabilities2EXT const & ) const = default; +#else + bool operator==( SurfaceCapabilities2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minImageCount == rhs.minImageCount ) && + ( maxImageCount == rhs.maxImageCount ) && ( currentExtent == rhs.currentExtent ) && + ( minImageExtent == rhs.minImageExtent ) && ( maxImageExtent == rhs.maxImageExtent ) && + ( maxImageArrayLayers == rhs.maxImageArrayLayers ) && ( supportedTransforms == rhs.supportedTransforms ) && + ( currentTransform == rhs.currentTransform ) && + ( supportedCompositeAlpha == rhs.supportedCompositeAlpha ) && + ( supportedUsageFlags == rhs.supportedUsageFlags ) && + ( supportedSurfaceCounters == rhs.supportedSurfaceCounters ); +# endif + } + + bool operator!=( SurfaceCapabilities2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceCapabilities2EXT; + void * pNext = {}; + uint32_t minImageCount = {}; + uint32_t maxImageCount = {}; + VULKAN_HPP_NAMESPACE::Extent2D currentExtent = {}; + VULKAN_HPP_NAMESPACE::Extent2D minImageExtent = {}; + VULKAN_HPP_NAMESPACE::Extent2D maxImageExtent = {}; + uint32_t maxImageArrayLayers = {}; + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms = {}; + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform = + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity; + VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha = {}; + VULKAN_HPP_NAMESPACE::ImageUsageFlags supportedUsageFlags = {}; + VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT supportedSurfaceCounters = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT ) == + sizeof( VkSurfaceCapabilities2EXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceCapabilities2EXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SurfaceCapabilities2EXT; + }; + + struct SurfaceCapabilitiesKHR + { + using NativeType = VkSurfaceCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SurfaceCapabilitiesKHR( uint32_t minImageCount_ = {}, + uint32_t maxImageCount_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D currentExtent_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D minImageExtent_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D maxImageExtent_ = {}, + uint32_t maxImageArrayLayers_ = {}, + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms_ = {}, + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform_ = + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, + VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha_ = {}, + VULKAN_HPP_NAMESPACE::ImageUsageFlags supportedUsageFlags_ = {} ) VULKAN_HPP_NOEXCEPT + : minImageCount( minImageCount_ ) + , maxImageCount( maxImageCount_ ) + , currentExtent( currentExtent_ ) + , minImageExtent( minImageExtent_ ) + , maxImageExtent( maxImageExtent_ ) + , maxImageArrayLayers( maxImageArrayLayers_ ) + , supportedTransforms( supportedTransforms_ ) + , currentTransform( currentTransform_ ) + , supportedCompositeAlpha( supportedCompositeAlpha_ ) + , supportedUsageFlags( supportedUsageFlags_ ) + {} + + VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesKHR( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCapabilitiesKHR( VkSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SurfaceCapabilitiesKHR & operator=( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCapabilitiesKHR & operator=( VkSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkSurfaceCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSurfaceCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( minImageCount, + maxImageCount, + currentExtent, + minImageExtent, + maxImageExtent, + maxImageArrayLayers, + supportedTransforms, + currentTransform, + supportedCompositeAlpha, + supportedUsageFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceCapabilitiesKHR const & ) const = default; +#else + bool operator==( SurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( minImageCount == rhs.minImageCount ) && ( maxImageCount == rhs.maxImageCount ) && + ( currentExtent == rhs.currentExtent ) && ( minImageExtent == rhs.minImageExtent ) && + ( maxImageExtent == rhs.maxImageExtent ) && ( maxImageArrayLayers == rhs.maxImageArrayLayers ) && + ( supportedTransforms == rhs.supportedTransforms ) && ( currentTransform == rhs.currentTransform ) && + ( supportedCompositeAlpha == rhs.supportedCompositeAlpha ) && + ( supportedUsageFlags == rhs.supportedUsageFlags ); +# endif + } + + bool operator!=( SurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t minImageCount = {}; + uint32_t maxImageCount = {}; + VULKAN_HPP_NAMESPACE::Extent2D currentExtent = {}; + VULKAN_HPP_NAMESPACE::Extent2D minImageExtent = {}; + VULKAN_HPP_NAMESPACE::Extent2D maxImageExtent = {}; + uint32_t maxImageArrayLayers = {}; + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms = {}; + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform = + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity; + VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha = {}; + VULKAN_HPP_NAMESPACE::ImageUsageFlags supportedUsageFlags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR ) == + sizeof( VkSurfaceCapabilitiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceCapabilitiesKHR is not nothrow_move_constructible!" ); + + struct SurfaceCapabilities2KHR + { + using NativeType = VkSurfaceCapabilities2KHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceCapabilities2KHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceCapabilities2KHR( + VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities_ = {} ) VULKAN_HPP_NOEXCEPT + : surfaceCapabilities( surfaceCapabilities_ ) + {} + + VULKAN_HPP_CONSTEXPR SurfaceCapabilities2KHR( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCapabilities2KHR( VkSurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceCapabilities2KHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SurfaceCapabilities2KHR & operator=( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCapabilities2KHR & operator=( VkSurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkSurfaceCapabilities2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSurfaceCapabilities2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, surfaceCapabilities ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceCapabilities2KHR const & ) const = default; +#else + bool operator==( SurfaceCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surfaceCapabilities == rhs.surfaceCapabilities ); +# endif + } + + bool operator!=( SurfaceCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceCapabilities2KHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR ) == + sizeof( VkSurfaceCapabilities2KHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceCapabilities2KHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SurfaceCapabilities2KHR; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct SurfaceCapabilitiesFullScreenExclusiveEXT + { + using NativeType = VkSurfaceCapabilitiesFullScreenExclusiveEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesFullScreenExclusiveEXT( + VULKAN_HPP_NAMESPACE::Bool32 fullScreenExclusiveSupported_ = {} ) VULKAN_HPP_NOEXCEPT + : fullScreenExclusiveSupported( fullScreenExclusiveSupported_ ) + {} + + VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesFullScreenExclusiveEXT( + SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCapabilitiesFullScreenExclusiveEXT( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : SurfaceCapabilitiesFullScreenExclusiveEXT( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SurfaceCapabilitiesFullScreenExclusiveEXT & + operator=( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCapabilitiesFullScreenExclusiveEXT & + operator=( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesFullScreenExclusiveEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesFullScreenExclusiveEXT & + setFullScreenExclusiveSupported( VULKAN_HPP_NAMESPACE::Bool32 fullScreenExclusiveSupported_ ) VULKAN_HPP_NOEXCEPT + { + fullScreenExclusiveSupported = fullScreenExclusiveSupported_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSurfaceCapabilitiesFullScreenExclusiveEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSurfaceCapabilitiesFullScreenExclusiveEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fullScreenExclusiveSupported ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceCapabilitiesFullScreenExclusiveEXT const & ) const = default; +# else + bool operator==( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( fullScreenExclusiveSupported == rhs.fullScreenExclusiveSupported ); +# endif + } + + bool operator!=( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 fullScreenExclusiveSupported = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT ) == + sizeof( VkSurfaceCapabilitiesFullScreenExclusiveEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SurfaceCapabilitiesFullScreenExclusiveEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SurfaceCapabilitiesFullScreenExclusiveEXT; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + struct SurfaceFormatKHR + { + using NativeType = VkSurfaceFormatKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SurfaceFormatKHR( VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::ColorSpaceKHR colorSpace_ = + VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear ) VULKAN_HPP_NOEXCEPT + : format( format_ ) + , colorSpace( colorSpace_ ) + {} + + VULKAN_HPP_CONSTEXPR SurfaceFormatKHR( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceFormatKHR( VkSurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceFormatKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SurfaceFormatKHR & operator=( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceFormatKHR & operator=( VkSurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkSurfaceFormatKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSurfaceFormatKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( format, colorSpace ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceFormatKHR const & ) const = default; +#else + bool operator==( SurfaceFormatKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( format == rhs.format ) && ( colorSpace == rhs.colorSpace ); +# endif + } + + bool operator!=( SurfaceFormatKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::ColorSpaceKHR colorSpace = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceFormatKHR is not nothrow_move_constructible!" ); + + struct SurfaceFormat2KHR + { + using NativeType = VkSurfaceFormat2KHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceFormat2KHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SurfaceFormat2KHR( VULKAN_HPP_NAMESPACE::SurfaceFormatKHR surfaceFormat_ = {} ) VULKAN_HPP_NOEXCEPT + : surfaceFormat( surfaceFormat_ ) + {} + + VULKAN_HPP_CONSTEXPR SurfaceFormat2KHR( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceFormat2KHR( VkSurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceFormat2KHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SurfaceFormat2KHR & operator=( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceFormat2KHR & operator=( VkSurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkSurfaceFormat2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSurfaceFormat2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std:: + tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, surfaceFormat ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceFormat2KHR const & ) const = default; +#else + bool operator==( SurfaceFormat2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surfaceFormat == rhs.surfaceFormat ); +# endif + } + + bool operator!=( SurfaceFormat2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceFormat2KHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::SurfaceFormatKHR surfaceFormat = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceFormat2KHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SurfaceFormat2KHR; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct SurfaceFullScreenExclusiveInfoEXT + { + using NativeType = VkSurfaceFullScreenExclusiveInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eSurfaceFullScreenExclusiveInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SurfaceFullScreenExclusiveInfoEXT( VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive_ = + VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT::eDefault ) VULKAN_HPP_NOEXCEPT + : fullScreenExclusive( fullScreenExclusive_ ) + {} + + VULKAN_HPP_CONSTEXPR + SurfaceFullScreenExclusiveInfoEXT( SurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceFullScreenExclusiveInfoEXT( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceFullScreenExclusiveInfoEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SurfaceFullScreenExclusiveInfoEXT & + operator=( SurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceFullScreenExclusiveInfoEXT & operator=( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveInfoEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveInfoEXT & + setFullScreenExclusive( VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive_ ) VULKAN_HPP_NOEXCEPT + { + fullScreenExclusive = fullScreenExclusive_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSurfaceFullScreenExclusiveInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSurfaceFullScreenExclusiveInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fullScreenExclusive ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceFullScreenExclusiveInfoEXT const & ) const = default; +# else + bool operator==( SurfaceFullScreenExclusiveInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fullScreenExclusive == rhs.fullScreenExclusive ); +# endif + } + + bool operator!=( SurfaceFullScreenExclusiveInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceFullScreenExclusiveInfoEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive = + VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT::eDefault; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT ) == + sizeof( VkSurfaceFullScreenExclusiveInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SurfaceFullScreenExclusiveInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SurfaceFullScreenExclusiveInfoEXT; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct SurfaceFullScreenExclusiveWin32InfoEXT + { + using NativeType = VkSurfaceFullScreenExclusiveWin32InfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveWin32InfoEXT( HMONITOR hmonitor_ = {} ) VULKAN_HPP_NOEXCEPT + : hmonitor( hmonitor_ ) + {} + + VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveWin32InfoEXT( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + SurfaceFullScreenExclusiveWin32InfoEXT( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceFullScreenExclusiveWin32InfoEXT( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SurfaceFullScreenExclusiveWin32InfoEXT & + operator=( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceFullScreenExclusiveWin32InfoEXT & + operator=( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveWin32InfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveWin32InfoEXT & + setHmonitor( HMONITOR hmonitor_ ) VULKAN_HPP_NOEXCEPT + { + hmonitor = hmonitor_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSurfaceFullScreenExclusiveWin32InfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSurfaceFullScreenExclusiveWin32InfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, hmonitor ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceFullScreenExclusiveWin32InfoEXT const & ) const = default; +# else + bool operator==( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hmonitor == rhs.hmonitor ); +# endif + } + + bool operator!=( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT; + const void * pNext = {}; + HMONITOR hmonitor = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT ) == + sizeof( VkSurfaceFullScreenExclusiveWin32InfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SurfaceFullScreenExclusiveWin32InfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SurfaceFullScreenExclusiveWin32InfoEXT; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + struct SurfaceProtectedCapabilitiesKHR + { + using NativeType = VkSurfaceProtectedCapabilitiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceProtectedCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SurfaceProtectedCapabilitiesKHR( VULKAN_HPP_NAMESPACE::Bool32 supportsProtected_ = {} ) VULKAN_HPP_NOEXCEPT + : supportsProtected( supportsProtected_ ) + {} + + VULKAN_HPP_CONSTEXPR + SurfaceProtectedCapabilitiesKHR( SurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceProtectedCapabilitiesKHR( VkSurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceProtectedCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SurfaceProtectedCapabilitiesKHR & + operator=( SurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceProtectedCapabilitiesKHR & operator=( VkSurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SurfaceProtectedCapabilitiesKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceProtectedCapabilitiesKHR & + setSupportsProtected( VULKAN_HPP_NAMESPACE::Bool32 supportsProtected_ ) VULKAN_HPP_NOEXCEPT + { + supportsProtected = supportsProtected_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSurfaceProtectedCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSurfaceProtectedCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, supportsProtected ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceProtectedCapabilitiesKHR const & ) const = default; +#else + bool operator==( SurfaceProtectedCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportsProtected == rhs.supportsProtected ); +# endif + } + + bool operator!=( SurfaceProtectedCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceProtectedCapabilitiesKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 supportsProtected = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR ) == + sizeof( VkSurfaceProtectedCapabilitiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SurfaceProtectedCapabilitiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SurfaceProtectedCapabilitiesKHR; + }; + + struct SwapchainCounterCreateInfoEXT + { + using NativeType = VkSwapchainCounterCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainCounterCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SwapchainCounterCreateInfoEXT( + VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters_ = {} ) VULKAN_HPP_NOEXCEPT + : surfaceCounters( surfaceCounters_ ) + {} + + VULKAN_HPP_CONSTEXPR + SwapchainCounterCreateInfoEXT( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SwapchainCounterCreateInfoEXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SwapchainCounterCreateInfoEXT & + operator=( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainCounterCreateInfoEXT & operator=( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT & + setSurfaceCounters( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters_ ) VULKAN_HPP_NOEXCEPT + { + surfaceCounters = surfaceCounters_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSwapchainCounterCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSwapchainCounterCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, surfaceCounters ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainCounterCreateInfoEXT const & ) const = default; +#else + bool operator==( SwapchainCounterCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surfaceCounters == rhs.surfaceCounters ); +# endif + } + + bool operator!=( SwapchainCounterCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSwapchainCounterCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT ) == + sizeof( VkSwapchainCounterCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SwapchainCounterCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SwapchainCounterCreateInfoEXT; + }; + + struct SwapchainCreateInfoKHR + { + using NativeType = VkSwapchainCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SwapchainCreateInfoKHR( + VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags_ = {}, + VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ = {}, + uint32_t minImageCount_ = {}, + VULKAN_HPP_NAMESPACE::Format imageFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace_ = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear, + VULKAN_HPP_NAMESPACE::Extent2D imageExtent_ = {}, + uint32_t imageArrayLayers_ = {}, + VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_ = {}, + VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode_ = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive, + uint32_t queueFamilyIndexCount_ = {}, + const uint32_t * pQueueFamilyIndices_ = {}, + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_ = + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, + VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha_ = + VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque, + VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate, + VULKAN_HPP_NAMESPACE::Bool32 clipped_ = {}, + VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , surface( surface_ ) + , minImageCount( minImageCount_ ) + , imageFormat( imageFormat_ ) + , imageColorSpace( imageColorSpace_ ) + , imageExtent( imageExtent_ ) + , imageArrayLayers( imageArrayLayers_ ) + , imageUsage( imageUsage_ ) + , imageSharingMode( imageSharingMode_ ) + , queueFamilyIndexCount( queueFamilyIndexCount_ ) + , pQueueFamilyIndices( pQueueFamilyIndices_ ) + , preTransform( preTransform_ ) + , compositeAlpha( compositeAlpha_ ) + , presentMode( presentMode_ ) + , clipped( clipped_ ) + , oldSwapchain( oldSwapchain_ ) + {} + + VULKAN_HPP_CONSTEXPR SwapchainCreateInfoKHR( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SwapchainCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SwapchainCreateInfoKHR( + VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags_, + VULKAN_HPP_NAMESPACE::SurfaceKHR surface_, + uint32_t minImageCount_, + VULKAN_HPP_NAMESPACE::Format imageFormat_, + VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace_, + VULKAN_HPP_NAMESPACE::Extent2D imageExtent_, + uint32_t imageArrayLayers_, + VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_, + VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_, + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_ = + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, + VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha_ = + VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque, + VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate, + VULKAN_HPP_NAMESPACE::Bool32 clipped_ = {}, + VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain_ = {} ) + : flags( flags_ ) + , surface( surface_ ) + , minImageCount( minImageCount_ ) + , imageFormat( imageFormat_ ) + , imageColorSpace( imageColorSpace_ ) + , imageExtent( imageExtent_ ) + , imageArrayLayers( imageArrayLayers_ ) + , imageUsage( imageUsage_ ) + , imageSharingMode( imageSharingMode_ ) + , queueFamilyIndexCount( static_cast( queueFamilyIndices_.size() ) ) + , pQueueFamilyIndices( queueFamilyIndices_.data() ) + , preTransform( preTransform_ ) + , compositeAlpha( compositeAlpha_ ) + , presentMode( presentMode_ ) + , clipped( clipped_ ) + , oldSwapchain( oldSwapchain_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SwapchainCreateInfoKHR & operator=( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainCreateInfoKHR & operator=( VkSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & + setSurface( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ ) VULKAN_HPP_NOEXCEPT + { + surface = surface_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setMinImageCount( uint32_t minImageCount_ ) VULKAN_HPP_NOEXCEPT + { + minImageCount = minImageCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & + setImageFormat( VULKAN_HPP_NAMESPACE::Format imageFormat_ ) VULKAN_HPP_NOEXCEPT + { + imageFormat = imageFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & + setImageColorSpace( VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace_ ) VULKAN_HPP_NOEXCEPT + { + imageColorSpace = imageColorSpace_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & + setImageExtent( VULKAN_HPP_NAMESPACE::Extent2D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & + setImageArrayLayers( uint32_t imageArrayLayers_ ) VULKAN_HPP_NOEXCEPT + { + imageArrayLayers = imageArrayLayers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & + setImageUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_ ) VULKAN_HPP_NOEXCEPT + { + imageUsage = imageUsage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & + setImageSharingMode( VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode_ ) VULKAN_HPP_NOEXCEPT + { + imageSharingMode = imageSharingMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & + setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = queueFamilyIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & + setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT + { + pQueueFamilyIndices = pQueueFamilyIndices_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SwapchainCreateInfoKHR & setQueueFamilyIndices( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = static_cast( queueFamilyIndices_.size() ); + pQueueFamilyIndices = queueFamilyIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & + setPreTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_ ) VULKAN_HPP_NOEXCEPT + { + preTransform = preTransform_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & + setCompositeAlpha( VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha_ ) VULKAN_HPP_NOEXCEPT + { + compositeAlpha = compositeAlpha_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & + setPresentMode( VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ ) VULKAN_HPP_NOEXCEPT + { + presentMode = presentMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & + setClipped( VULKAN_HPP_NAMESPACE::Bool32 clipped_ ) VULKAN_HPP_NOEXCEPT + { + clipped = clipped_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & + setOldSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain_ ) VULKAN_HPP_NOEXCEPT + { + oldSwapchain = oldSwapchain_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + surface, + minImageCount, + imageFormat, + imageColorSpace, + imageExtent, + imageArrayLayers, + imageUsage, + imageSharingMode, + queueFamilyIndexCount, + pQueueFamilyIndices, + preTransform, + compositeAlpha, + presentMode, + clipped, + oldSwapchain ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainCreateInfoKHR const & ) const = default; +#else + bool operator==( SwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( surface == rhs.surface ) && + ( minImageCount == rhs.minImageCount ) && ( imageFormat == rhs.imageFormat ) && + ( imageColorSpace == rhs.imageColorSpace ) && ( imageExtent == rhs.imageExtent ) && + ( imageArrayLayers == rhs.imageArrayLayers ) && ( imageUsage == rhs.imageUsage ) && + ( imageSharingMode == rhs.imageSharingMode ) && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) && + ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ) && ( preTransform == rhs.preTransform ) && + ( compositeAlpha == rhs.compositeAlpha ) && ( presentMode == rhs.presentMode ) && + ( clipped == rhs.clipped ) && ( oldSwapchain == rhs.oldSwapchain ); +# endif + } + + bool operator!=( SwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSwapchainCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags = {}; + VULKAN_HPP_NAMESPACE::SurfaceKHR surface = {}; + uint32_t minImageCount = {}; + VULKAN_HPP_NAMESPACE::Format imageFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear; + VULKAN_HPP_NAMESPACE::Extent2D imageExtent = {}; + uint32_t imageArrayLayers = {}; + VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage = {}; + VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive; + uint32_t queueFamilyIndexCount = {}; + const uint32_t * pQueueFamilyIndices = {}; + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform = + VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity; + VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha = + VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque; + VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate; + VULKAN_HPP_NAMESPACE::Bool32 clipped = {}; + VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR ) == + sizeof( VkSwapchainCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SwapchainCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SwapchainCreateInfoKHR; + }; + + struct SwapchainDisplayNativeHdrCreateInfoAMD + { + using NativeType = VkSwapchainDisplayNativeHdrCreateInfoAMD; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SwapchainDisplayNativeHdrCreateInfoAMD( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable_ = {} ) + VULKAN_HPP_NOEXCEPT : localDimmingEnable( localDimmingEnable_ ) + {} + + VULKAN_HPP_CONSTEXPR SwapchainDisplayNativeHdrCreateInfoAMD( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + SwapchainDisplayNativeHdrCreateInfoAMD( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : SwapchainDisplayNativeHdrCreateInfoAMD( + *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + SwapchainDisplayNativeHdrCreateInfoAMD & + operator=( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainDisplayNativeHdrCreateInfoAMD & + operator=( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SwapchainDisplayNativeHdrCreateInfoAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainDisplayNativeHdrCreateInfoAMD & + setLocalDimmingEnable( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable_ ) VULKAN_HPP_NOEXCEPT + { + localDimmingEnable = localDimmingEnable_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkSwapchainDisplayNativeHdrCreateInfoAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkSwapchainDisplayNativeHdrCreateInfoAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, localDimmingEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainDisplayNativeHdrCreateInfoAMD const & ) const = default; +#else + bool operator==( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( localDimmingEnable == rhs.localDimmingEnable ); +# endif + } + + bool operator!=( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD ) == + sizeof( VkSwapchainDisplayNativeHdrCreateInfoAMD ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "SwapchainDisplayNativeHdrCreateInfoAMD is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = SwapchainDisplayNativeHdrCreateInfoAMD; + }; + + struct TextureLODGatherFormatPropertiesAMD + { + using NativeType = VkTextureLODGatherFormatPropertiesAMD; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eTextureLodGatherFormatPropertiesAMD; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TextureLODGatherFormatPropertiesAMD( + VULKAN_HPP_NAMESPACE::Bool32 supportsTextureGatherLODBiasAMD_ = {} ) VULKAN_HPP_NOEXCEPT + : supportsTextureGatherLODBiasAMD( supportsTextureGatherLODBiasAMD_ ) + {} + + VULKAN_HPP_CONSTEXPR TextureLODGatherFormatPropertiesAMD( TextureLODGatherFormatPropertiesAMD const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + TextureLODGatherFormatPropertiesAMD( VkTextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : TextureLODGatherFormatPropertiesAMD( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + TextureLODGatherFormatPropertiesAMD & + operator=( TextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TextureLODGatherFormatPropertiesAMD & + operator=( VkTextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkTextureLODGatherFormatPropertiesAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkTextureLODGatherFormatPropertiesAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, supportsTextureGatherLODBiasAMD ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TextureLODGatherFormatPropertiesAMD const & ) const = default; +#else + bool operator==( TextureLODGatherFormatPropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD ); +# endif + } + + bool operator!=( TextureLODGatherFormatPropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eTextureLodGatherFormatPropertiesAMD; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 supportsTextureGatherLODBiasAMD = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD ) == + sizeof( VkTextureLODGatherFormatPropertiesAMD ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "TextureLODGatherFormatPropertiesAMD is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = TextureLODGatherFormatPropertiesAMD; + }; + + struct TimelineSemaphoreSubmitInfo + { + using NativeType = VkTimelineSemaphoreSubmitInfo; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTimelineSemaphoreSubmitInfo; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + TimelineSemaphoreSubmitInfo( uint32_t waitSemaphoreValueCount_ = {}, + const uint64_t * pWaitSemaphoreValues_ = {}, + uint32_t signalSemaphoreValueCount_ = {}, + const uint64_t * pSignalSemaphoreValues_ = {} ) VULKAN_HPP_NOEXCEPT + : waitSemaphoreValueCount( waitSemaphoreValueCount_ ) + , pWaitSemaphoreValues( pWaitSemaphoreValues_ ) + , signalSemaphoreValueCount( signalSemaphoreValueCount_ ) + , pSignalSemaphoreValues( pSignalSemaphoreValues_ ) + {} + + VULKAN_HPP_CONSTEXPR + TimelineSemaphoreSubmitInfo( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TimelineSemaphoreSubmitInfo( VkTimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : TimelineSemaphoreSubmitInfo( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + TimelineSemaphoreSubmitInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphoreValues_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphoreValues_ = {} ) + : waitSemaphoreValueCount( static_cast( waitSemaphoreValues_.size() ) ) + , pWaitSemaphoreValues( waitSemaphoreValues_.data() ) + , signalSemaphoreValueCount( static_cast( signalSemaphoreValues_.size() ) ) + , pSignalSemaphoreValues( signalSemaphoreValues_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + TimelineSemaphoreSubmitInfo & operator=( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TimelineSemaphoreSubmitInfo & operator=( VkTimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & + setWaitSemaphoreValueCount( uint32_t waitSemaphoreValueCount_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreValueCount = waitSemaphoreValueCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & + setPWaitSemaphoreValues( const uint64_t * pWaitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT + { + pWaitSemaphoreValues = pWaitSemaphoreValues_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + TimelineSemaphoreSubmitInfo & setWaitSemaphoreValues( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreValueCount = static_cast( waitSemaphoreValues_.size() ); + pWaitSemaphoreValues = waitSemaphoreValues_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & + setSignalSemaphoreValueCount( uint32_t signalSemaphoreValueCount_ ) VULKAN_HPP_NOEXCEPT + { + signalSemaphoreValueCount = signalSemaphoreValueCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & + setPSignalSemaphoreValues( const uint64_t * pSignalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT + { + pSignalSemaphoreValues = pSignalSemaphoreValues_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + TimelineSemaphoreSubmitInfo & setSignalSemaphoreValues( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT + { + signalSemaphoreValueCount = static_cast( signalSemaphoreValues_.size() ); + pSignalSemaphoreValues = signalSemaphoreValues_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkTimelineSemaphoreSubmitInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkTimelineSemaphoreSubmitInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + waitSemaphoreValueCount, + pWaitSemaphoreValues, + signalSemaphoreValueCount, + pSignalSemaphoreValues ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TimelineSemaphoreSubmitInfo const & ) const = default; +#else + bool operator==( TimelineSemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( waitSemaphoreValueCount == rhs.waitSemaphoreValueCount ) && + ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues ) && + ( signalSemaphoreValueCount == rhs.signalSemaphoreValueCount ) && + ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues ); +# endif + } + + bool operator!=( TimelineSemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eTimelineSemaphoreSubmitInfo; + const void * pNext = {}; + uint32_t waitSemaphoreValueCount = {}; + const uint64_t * pWaitSemaphoreValues = {}; + uint32_t signalSemaphoreValueCount = {}; + const uint64_t * pSignalSemaphoreValues = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo ) == + sizeof( VkTimelineSemaphoreSubmitInfo ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "TimelineSemaphoreSubmitInfo is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = TimelineSemaphoreSubmitInfo; + }; + using TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo; + + struct TraceRaysIndirectCommandKHR + { + using NativeType = VkTraceRaysIndirectCommandKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TraceRaysIndirectCommandKHR( uint32_t width_ = {}, + uint32_t height_ = {}, + uint32_t depth_ = {} ) VULKAN_HPP_NOEXCEPT + : width( width_ ) + , height( height_ ) + , depth( depth_ ) + {} + + VULKAN_HPP_CONSTEXPR + TraceRaysIndirectCommandKHR( TraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TraceRaysIndirectCommandKHR( VkTraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : TraceRaysIndirectCommandKHR( *reinterpret_cast( &rhs ) ) + {} + + explicit TraceRaysIndirectCommandKHR( Extent2D const & extent2D, uint32_t depth_ = {} ) + : width( extent2D.width ), height( extent2D.height ), depth( depth_ ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + TraceRaysIndirectCommandKHR & operator=( TraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TraceRaysIndirectCommandKHR & operator=( VkTraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT + { + width = width_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT + { + height = height_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & setDepth( uint32_t depth_ ) VULKAN_HPP_NOEXCEPT + { + depth = depth_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkTraceRaysIndirectCommandKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkTraceRaysIndirectCommandKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( width, height, depth ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TraceRaysIndirectCommandKHR const & ) const = default; +#else + bool operator==( TraceRaysIndirectCommandKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( width == rhs.width ) && ( height == rhs.height ) && ( depth == rhs.depth ); +# endif + } + + bool operator!=( TraceRaysIndirectCommandKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t width = {}; + uint32_t height = {}; + uint32_t depth = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR ) == + sizeof( VkTraceRaysIndirectCommandKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "TraceRaysIndirectCommandKHR is not nothrow_move_constructible!" ); + + struct ValidationCacheCreateInfoEXT + { + using NativeType = VkValidationCacheCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eValidationCacheCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ValidationCacheCreateInfoEXT( VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags_ = {}, + size_t initialDataSize_ = {}, + const void * pInitialData_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , initialDataSize( initialDataSize_ ) + , pInitialData( pInitialData_ ) + {} + + VULKAN_HPP_CONSTEXPR + ValidationCacheCreateInfoEXT( ValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ValidationCacheCreateInfoEXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + ValidationCacheCreateInfoEXT( VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & initialData_ ) + : flags( flags_ ), initialDataSize( initialData_.size() * sizeof( T ) ), pInitialData( initialData_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ValidationCacheCreateInfoEXT & operator=( ValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ValidationCacheCreateInfoEXT & operator=( VkValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & + setInitialDataSize( size_t initialDataSize_ ) VULKAN_HPP_NOEXCEPT + { + initialDataSize = initialDataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & + setPInitialData( const void * pInitialData_ ) VULKAN_HPP_NOEXCEPT + { + pInitialData = pInitialData_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + ValidationCacheCreateInfoEXT & + setInitialData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & initialData_ ) VULKAN_HPP_NOEXCEPT + { + initialDataSize = initialData_.size() * sizeof( T ); + pInitialData = initialData_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkValidationCacheCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkValidationCacheCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, initialDataSize, pInitialData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ValidationCacheCreateInfoEXT const & ) const = default; +#else + bool operator==( ValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( initialDataSize == rhs.initialDataSize ) && ( pInitialData == rhs.pInitialData ); +# endif + } + + bool operator!=( ValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eValidationCacheCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags = {}; + size_t initialDataSize = {}; + const void * pInitialData = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT ) == + sizeof( VkValidationCacheCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "ValidationCacheCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ValidationCacheCreateInfoEXT; + }; + + struct ValidationFeaturesEXT + { + using NativeType = VkValidationFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eValidationFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ValidationFeaturesEXT( + uint32_t enabledValidationFeatureCount_ = {}, + const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT * pEnabledValidationFeatures_ = {}, + uint32_t disabledValidationFeatureCount_ = {}, + const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * pDisabledValidationFeatures_ = {} ) VULKAN_HPP_NOEXCEPT + : enabledValidationFeatureCount( enabledValidationFeatureCount_ ) + , pEnabledValidationFeatures( pEnabledValidationFeatures_ ) + , disabledValidationFeatureCount( disabledValidationFeatureCount_ ) + , pDisabledValidationFeatures( pDisabledValidationFeatures_ ) + {} + + VULKAN_HPP_CONSTEXPR ValidationFeaturesEXT( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ValidationFeaturesEXT( VkValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ValidationFeaturesEXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ValidationFeaturesEXT( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + enabledValidationFeatures_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + disabledValidationFeatures_ = {} ) + : enabledValidationFeatureCount( static_cast( enabledValidationFeatures_.size() ) ) + , pEnabledValidationFeatures( enabledValidationFeatures_.data() ) + , disabledValidationFeatureCount( static_cast( disabledValidationFeatures_.size() ) ) + , pDisabledValidationFeatures( disabledValidationFeatures_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ValidationFeaturesEXT & operator=( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ValidationFeaturesEXT & operator=( VkValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & + setEnabledValidationFeatureCount( uint32_t enabledValidationFeatureCount_ ) VULKAN_HPP_NOEXCEPT + { + enabledValidationFeatureCount = enabledValidationFeatureCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setPEnabledValidationFeatures( + const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT * pEnabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT + { + pEnabledValidationFeatures = pEnabledValidationFeatures_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ValidationFeaturesEXT & setEnabledValidationFeatures( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + enabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT + { + enabledValidationFeatureCount = static_cast( enabledValidationFeatures_.size() ); + pEnabledValidationFeatures = enabledValidationFeatures_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & + setDisabledValidationFeatureCount( uint32_t disabledValidationFeatureCount_ ) VULKAN_HPP_NOEXCEPT + { + disabledValidationFeatureCount = disabledValidationFeatureCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setPDisabledValidationFeatures( + const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * pDisabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT + { + pDisabledValidationFeatures = pDisabledValidationFeatures_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ValidationFeaturesEXT & setDisabledValidationFeatures( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + disabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT + { + disabledValidationFeatureCount = static_cast( disabledValidationFeatures_.size() ); + pDisabledValidationFeatures = disabledValidationFeatures_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkValidationFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkValidationFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + enabledValidationFeatureCount, + pEnabledValidationFeatures, + disabledValidationFeatureCount, + pDisabledValidationFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ValidationFeaturesEXT const & ) const = default; +#else + bool operator==( ValidationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( enabledValidationFeatureCount == rhs.enabledValidationFeatureCount ) && + ( pEnabledValidationFeatures == rhs.pEnabledValidationFeatures ) && + ( disabledValidationFeatureCount == rhs.disabledValidationFeatureCount ) && + ( pDisabledValidationFeatures == rhs.pDisabledValidationFeatures ); +# endif + } + + bool operator!=( ValidationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eValidationFeaturesEXT; + const void * pNext = {}; + uint32_t enabledValidationFeatureCount = {}; + const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT * pEnabledValidationFeatures = {}; + uint32_t disabledValidationFeatureCount = {}; + const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * pDisabledValidationFeatures = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT ) == sizeof( VkValidationFeaturesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ValidationFeaturesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ValidationFeaturesEXT; + }; + + struct ValidationFlagsEXT + { + using NativeType = VkValidationFlagsEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eValidationFlagsEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ValidationFlagsEXT( + uint32_t disabledValidationCheckCount_ = {}, + const VULKAN_HPP_NAMESPACE::ValidationCheckEXT * pDisabledValidationChecks_ = {} ) VULKAN_HPP_NOEXCEPT + : disabledValidationCheckCount( disabledValidationCheckCount_ ) + , pDisabledValidationChecks( pDisabledValidationChecks_ ) + {} + + VULKAN_HPP_CONSTEXPR ValidationFlagsEXT( ValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ValidationFlagsEXT( VkValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ValidationFlagsEXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ValidationFlagsEXT( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + disabledValidationChecks_ ) + : disabledValidationCheckCount( static_cast( disabledValidationChecks_.size() ) ) + , pDisabledValidationChecks( disabledValidationChecks_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ValidationFlagsEXT & operator=( ValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ValidationFlagsEXT & operator=( VkValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT & + setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ ) VULKAN_HPP_NOEXCEPT + { + disabledValidationCheckCount = disabledValidationCheckCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT & setPDisabledValidationChecks( + const VULKAN_HPP_NAMESPACE::ValidationCheckEXT * pDisabledValidationChecks_ ) VULKAN_HPP_NOEXCEPT + { + pDisabledValidationChecks = pDisabledValidationChecks_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ValidationFlagsEXT & setDisabledValidationChecks( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + disabledValidationChecks_ ) VULKAN_HPP_NOEXCEPT + { + disabledValidationCheckCount = static_cast( disabledValidationChecks_.size() ); + pDisabledValidationChecks = disabledValidationChecks_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkValidationFlagsEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkValidationFlagsEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, disabledValidationCheckCount, pDisabledValidationChecks ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ValidationFlagsEXT const & ) const = default; +#else + bool operator==( ValidationFlagsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( disabledValidationCheckCount == rhs.disabledValidationCheckCount ) && + ( pDisabledValidationChecks == rhs.pDisabledValidationChecks ); +# endif + } + + bool operator!=( ValidationFlagsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eValidationFlagsEXT; + const void * pNext = {}; + uint32_t disabledValidationCheckCount = {}; + const VULKAN_HPP_NAMESPACE::ValidationCheckEXT * pDisabledValidationChecks = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ValidationFlagsEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ValidationFlagsEXT; + }; + + struct VertexInputAttributeDescription2EXT + { + using NativeType = VkVertexInputAttributeDescription2EXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVertexInputAttributeDescription2EXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription2EXT( + uint32_t location_ = {}, + uint32_t binding_ = {}, + VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + uint32_t offset_ = {} ) VULKAN_HPP_NOEXCEPT + : location( location_ ) + , binding( binding_ ) + , format( format_ ) + , offset( offset_ ) + {} + + VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription2EXT( VertexInputAttributeDescription2EXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + VertexInputAttributeDescription2EXT( VkVertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VertexInputAttributeDescription2EXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VertexInputAttributeDescription2EXT & + operator=( VertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VertexInputAttributeDescription2EXT & + operator=( VkVertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setLocation( uint32_t location_ ) VULKAN_HPP_NOEXCEPT + { + location = location_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & + setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVertexInputAttributeDescription2EXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVertexInputAttributeDescription2EXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, location, binding, format, offset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VertexInputAttributeDescription2EXT const & ) const = default; +#else + bool operator==( VertexInputAttributeDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( location == rhs.location ) && + ( binding == rhs.binding ) && ( format == rhs.format ) && ( offset == rhs.offset ); +# endif + } + + bool operator!=( VertexInputAttributeDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVertexInputAttributeDescription2EXT; + void * pNext = {}; + uint32_t location = {}; + uint32_t binding = {}; + VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; + uint32_t offset = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT ) == + sizeof( VkVertexInputAttributeDescription2EXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VertexInputAttributeDescription2EXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VertexInputAttributeDescription2EXT; + }; + + struct VertexInputBindingDescription2EXT + { + using NativeType = VkVertexInputBindingDescription2EXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVertexInputBindingDescription2EXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VertexInputBindingDescription2EXT( + uint32_t binding_ = {}, + uint32_t stride_ = {}, + VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex, + uint32_t divisor_ = {} ) VULKAN_HPP_NOEXCEPT + : binding( binding_ ) + , stride( stride_ ) + , inputRate( inputRate_ ) + , divisor( divisor_ ) + {} + + VULKAN_HPP_CONSTEXPR + VertexInputBindingDescription2EXT( VertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VertexInputBindingDescription2EXT( VkVertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VertexInputBindingDescription2EXT( *reinterpret_cast( &rhs ) ) + {} +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VertexInputBindingDescription2EXT & + operator=( VertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VertexInputBindingDescription2EXT & operator=( VkVertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & + setInputRate( VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ ) VULKAN_HPP_NOEXCEPT + { + inputRate = inputRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setDivisor( uint32_t divisor_ ) VULKAN_HPP_NOEXCEPT + { + divisor = divisor_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVertexInputBindingDescription2EXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVertexInputBindingDescription2EXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, binding, stride, inputRate, divisor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VertexInputBindingDescription2EXT const & ) const = default; +#else + bool operator==( VertexInputBindingDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( binding == rhs.binding ) && + ( stride == rhs.stride ) && ( inputRate == rhs.inputRate ) && ( divisor == rhs.divisor ); +# endif + } + + bool operator!=( VertexInputBindingDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVertexInputBindingDescription2EXT; + void * pNext = {}; + uint32_t binding = {}; + uint32_t stride = {}; + VULKAN_HPP_NAMESPACE::VertexInputRate inputRate = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex; + uint32_t divisor = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT ) == + sizeof( VkVertexInputBindingDescription2EXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VertexInputBindingDescription2EXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VertexInputBindingDescription2EXT; + }; + +#if defined( VK_USE_PLATFORM_VI_NN ) + struct ViSurfaceCreateInfoNN + { + using NativeType = VkViSurfaceCreateInfoNN; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eViSurfaceCreateInfoNN; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ViSurfaceCreateInfoNN( VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags_ = {}, + void * window_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , window( window_ ) + {} + + VULKAN_HPP_CONSTEXPR ViSurfaceCreateInfoNN( ViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT + : ViSurfaceCreateInfoNN( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + ViSurfaceCreateInfoNN & operator=( ViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ViSurfaceCreateInfoNN & operator=( VkViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & + setFlags( VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & setWindow( void * window_ ) VULKAN_HPP_NOEXCEPT + { + window = window_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkViSurfaceCreateInfoNN const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkViSurfaceCreateInfoNN &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, window ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ViSurfaceCreateInfoNN const & ) const = default; +# else + bool operator==( ViSurfaceCreateInfoNN const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( window == rhs.window ); +# endif + } + + bool operator!=( ViSurfaceCreateInfoNN const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eViSurfaceCreateInfoNN; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags = {}; + void * window = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ViSurfaceCreateInfoNN is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = ViSurfaceCreateInfoNN; + }; +#endif /*VK_USE_PLATFORM_VI_NN*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoPictureResourceKHR + { + using NativeType = VkVideoPictureResourceKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoPictureResourceKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoPictureResourceKHR( VULKAN_HPP_NAMESPACE::Offset2D codedOffset_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D codedExtent_ = {}, + uint32_t baseArrayLayer_ = {}, + VULKAN_HPP_NAMESPACE::ImageView imageViewBinding_ = {} ) VULKAN_HPP_NOEXCEPT + : codedOffset( codedOffset_ ) + , codedExtent( codedExtent_ ) + , baseArrayLayer( baseArrayLayer_ ) + , imageViewBinding( imageViewBinding_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoPictureResourceKHR( VideoPictureResourceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoPictureResourceKHR( VkVideoPictureResourceKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoPictureResourceKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoPictureResourceKHR & operator=( VideoPictureResourceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoPictureResourceKHR & operator=( VkVideoPictureResourceKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceKHR & + setCodedOffset( VULKAN_HPP_NAMESPACE::Offset2D const & codedOffset_ ) VULKAN_HPP_NOEXCEPT + { + codedOffset = codedOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceKHR & + setCodedExtent( VULKAN_HPP_NAMESPACE::Extent2D const & codedExtent_ ) VULKAN_HPP_NOEXCEPT + { + codedExtent = codedExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceKHR & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT + { + baseArrayLayer = baseArrayLayer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceKHR & + setImageViewBinding( VULKAN_HPP_NAMESPACE::ImageView imageViewBinding_ ) VULKAN_HPP_NOEXCEPT + { + imageViewBinding = imageViewBinding_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoPictureResourceKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoPictureResourceKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, codedOffset, codedExtent, baseArrayLayer, imageViewBinding ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoPictureResourceKHR const & ) const = default; +# else + bool operator==( VideoPictureResourceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( codedOffset == rhs.codedOffset ) && + ( codedExtent == rhs.codedExtent ) && ( baseArrayLayer == rhs.baseArrayLayer ) && + ( imageViewBinding == rhs.imageViewBinding ); +# endif + } + + bool operator!=( VideoPictureResourceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoPictureResourceKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Offset2D codedOffset = {}; + VULKAN_HPP_NAMESPACE::Extent2D codedExtent = {}; + uint32_t baseArrayLayer = {}; + VULKAN_HPP_NAMESPACE::ImageView imageViewBinding = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR ) == + sizeof( VkVideoPictureResourceKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoPictureResourceKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoPictureResourceKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoReferenceSlotKHR + { + using NativeType = VkVideoReferenceSlotKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoReferenceSlotKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoReferenceSlotKHR( + int8_t slotIndex_ = {}, + const VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR * pPictureResource_ = {} ) VULKAN_HPP_NOEXCEPT + : slotIndex( slotIndex_ ) + , pPictureResource( pPictureResource_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoReferenceSlotKHR( VideoReferenceSlotKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoReferenceSlotKHR( VkVideoReferenceSlotKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoReferenceSlotKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoReferenceSlotKHR & operator=( VideoReferenceSlotKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoReferenceSlotKHR & operator=( VkVideoReferenceSlotKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotKHR & setSlotIndex( int8_t slotIndex_ ) VULKAN_HPP_NOEXCEPT + { + slotIndex = slotIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotKHR & + setPPictureResource( const VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR * pPictureResource_ ) VULKAN_HPP_NOEXCEPT + { + pPictureResource = pPictureResource_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoReferenceSlotKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoReferenceSlotKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, slotIndex, pPictureResource ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoReferenceSlotKHR const & ) const = default; +# else + bool operator==( VideoReferenceSlotKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( slotIndex == rhs.slotIndex ) && + ( pPictureResource == rhs.pPictureResource ); +# endif + } + + bool operator!=( VideoReferenceSlotKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoReferenceSlotKHR; + const void * pNext = {}; + int8_t slotIndex = {}; + const VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR * pPictureResource = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR ) == sizeof( VkVideoReferenceSlotKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoReferenceSlotKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoReferenceSlotKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoBeginCodingInfoKHR + { + using NativeType = VkVideoBeginCodingInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoBeginCodingInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoBeginCodingInfoKHR( + VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR flags_ = {}, + VULKAN_HPP_NAMESPACE::VideoCodingQualityPresetFlagsKHR codecQualityPreset_ = {}, + VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession_ = {}, + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters_ = {}, + uint32_t referenceSlotCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , codecQualityPreset( codecQualityPreset_ ) + , videoSession( videoSession_ ) + , videoSessionParameters( videoSessionParameters_ ) + , referenceSlotCount( referenceSlotCount_ ) + , pReferenceSlots( pReferenceSlots_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoBeginCodingInfoKHR( VideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoBeginCodingInfoKHR( VkVideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoBeginCodingInfoKHR( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoBeginCodingInfoKHR( + VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR flags_, + VULKAN_HPP_NAMESPACE::VideoCodingQualityPresetFlagsKHR codecQualityPreset_, + VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession_, + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + referenceSlots_ ) + : flags( flags_ ) + , codecQualityPreset( codecQualityPreset_ ) + , videoSession( videoSession_ ) + , videoSessionParameters( videoSessionParameters_ ) + , referenceSlotCount( static_cast( referenceSlots_.size() ) ) + , pReferenceSlots( referenceSlots_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoBeginCodingInfoKHR & operator=( VideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoBeginCodingInfoKHR & operator=( VkVideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setCodecQualityPreset( + VULKAN_HPP_NAMESPACE::VideoCodingQualityPresetFlagsKHR codecQualityPreset_ ) VULKAN_HPP_NOEXCEPT + { + codecQualityPreset = codecQualityPreset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & + setVideoSession( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession_ ) VULKAN_HPP_NOEXCEPT + { + videoSession = videoSession_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setVideoSessionParameters( + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters_ ) VULKAN_HPP_NOEXCEPT + { + videoSessionParameters = videoSessionParameters_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & + setReferenceSlotCount( uint32_t referenceSlotCount_ ) VULKAN_HPP_NOEXCEPT + { + referenceSlotCount = referenceSlotCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & + setPReferenceSlots( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots_ ) VULKAN_HPP_NOEXCEPT + { + pReferenceSlots = pReferenceSlots_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoBeginCodingInfoKHR & setReferenceSlots( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + referenceSlots_ ) VULKAN_HPP_NOEXCEPT + { + referenceSlotCount = static_cast( referenceSlots_.size() ); + pReferenceSlots = referenceSlots_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoBeginCodingInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoBeginCodingInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + codecQualityPreset, + videoSession, + videoSessionParameters, + referenceSlotCount, + pReferenceSlots ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoBeginCodingInfoKHR const & ) const = default; +# else + bool operator==( VideoBeginCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( codecQualityPreset == rhs.codecQualityPreset ) && ( videoSession == rhs.videoSession ) && + ( videoSessionParameters == rhs.videoSessionParameters ) && + ( referenceSlotCount == rhs.referenceSlotCount ) && ( pReferenceSlots == rhs.pReferenceSlots ); +# endif + } + + bool operator!=( VideoBeginCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoBeginCodingInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR flags = {}; + VULKAN_HPP_NAMESPACE::VideoCodingQualityPresetFlagsKHR codecQualityPreset = {}; + VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession = {}; + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters = {}; + uint32_t referenceSlotCount = {}; + const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR ) == + sizeof( VkVideoBeginCodingInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoBeginCodingInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoBeginCodingInfoKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoBindMemoryKHR + { + using NativeType = VkVideoBindMemoryKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoBindMemoryKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoBindMemoryKHR( uint32_t memoryBindIndex_ = {}, + VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize memorySize_ = {} ) VULKAN_HPP_NOEXCEPT + : memoryBindIndex( memoryBindIndex_ ) + , memory( memory_ ) + , memoryOffset( memoryOffset_ ) + , memorySize( memorySize_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoBindMemoryKHR( VideoBindMemoryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoBindMemoryKHR( VkVideoBindMemoryKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoBindMemoryKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoBindMemoryKHR & operator=( VideoBindMemoryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoBindMemoryKHR & operator=( VkVideoBindMemoryKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoBindMemoryKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBindMemoryKHR & setMemoryBindIndex( uint32_t memoryBindIndex_ ) VULKAN_HPP_NOEXCEPT + { + memoryBindIndex = memoryBindIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBindMemoryKHR & + setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBindMemoryKHR & + setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBindMemoryKHR & + setMemorySize( VULKAN_HPP_NAMESPACE::DeviceSize memorySize_ ) VULKAN_HPP_NOEXCEPT + { + memorySize = memorySize_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoBindMemoryKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoBindMemoryKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryBindIndex, memory, memoryOffset, memorySize ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoBindMemoryKHR const & ) const = default; +# else + bool operator==( VideoBindMemoryKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryBindIndex == rhs.memoryBindIndex ) && + ( memory == rhs.memory ) && ( memoryOffset == rhs.memoryOffset ) && ( memorySize == rhs.memorySize ); +# endif + } + + bool operator!=( VideoBindMemoryKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoBindMemoryKHR; + const void * pNext = {}; + uint32_t memoryBindIndex = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; + VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize memorySize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR ) == sizeof( VkVideoBindMemoryKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoBindMemoryKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoBindMemoryKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoCapabilitiesKHR + { + using NativeType = VkVideoCapabilitiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoCapabilitiesKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoCapabilitiesKHR( VULKAN_HPP_NAMESPACE::VideoCapabilityFlagsKHR capabilityFlags_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize minBitstreamBufferOffsetAlignment_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize minBitstreamBufferSizeAlignment_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D videoPictureExtentGranularity_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D minExtent_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D maxExtent_ = {}, + uint32_t maxReferencePicturesSlotsCount_ = {}, + uint32_t maxReferencePicturesActiveCount_ = {} ) VULKAN_HPP_NOEXCEPT + : capabilityFlags( capabilityFlags_ ) + , minBitstreamBufferOffsetAlignment( minBitstreamBufferOffsetAlignment_ ) + , minBitstreamBufferSizeAlignment( minBitstreamBufferSizeAlignment_ ) + , videoPictureExtentGranularity( videoPictureExtentGranularity_ ) + , minExtent( minExtent_ ) + , maxExtent( maxExtent_ ) + , maxReferencePicturesSlotsCount( maxReferencePicturesSlotsCount_ ) + , maxReferencePicturesActiveCount( maxReferencePicturesActiveCount_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoCapabilitiesKHR( VideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoCapabilitiesKHR( VkVideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoCapabilitiesKHR & operator=( VideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoCapabilitiesKHR & operator=( VkVideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkVideoCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + capabilityFlags, + minBitstreamBufferOffsetAlignment, + minBitstreamBufferSizeAlignment, + videoPictureExtentGranularity, + minExtent, + maxExtent, + maxReferencePicturesSlotsCount, + maxReferencePicturesActiveCount ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoCapabilitiesKHR const & ) const = default; +# else + bool operator==( VideoCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( capabilityFlags == rhs.capabilityFlags ) && + ( minBitstreamBufferOffsetAlignment == rhs.minBitstreamBufferOffsetAlignment ) && + ( minBitstreamBufferSizeAlignment == rhs.minBitstreamBufferSizeAlignment ) && + ( videoPictureExtentGranularity == rhs.videoPictureExtentGranularity ) && ( minExtent == rhs.minExtent ) && + ( maxExtent == rhs.maxExtent ) && + ( maxReferencePicturesSlotsCount == rhs.maxReferencePicturesSlotsCount ) && + ( maxReferencePicturesActiveCount == rhs.maxReferencePicturesActiveCount ); +# endif + } + + bool operator!=( VideoCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoCapabilitiesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoCapabilityFlagsKHR capabilityFlags = {}; + VULKAN_HPP_NAMESPACE::DeviceSize minBitstreamBufferOffsetAlignment = {}; + VULKAN_HPP_NAMESPACE::DeviceSize minBitstreamBufferSizeAlignment = {}; + VULKAN_HPP_NAMESPACE::Extent2D videoPictureExtentGranularity = {}; + VULKAN_HPP_NAMESPACE::Extent2D minExtent = {}; + VULKAN_HPP_NAMESPACE::Extent2D maxExtent = {}; + uint32_t maxReferencePicturesSlotsCount = {}; + uint32_t maxReferencePicturesActiveCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR ) == sizeof( VkVideoCapabilitiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoCapabilitiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoCapabilitiesKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoCodingControlInfoKHR + { + using NativeType = VkVideoCodingControlInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoCodingControlInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoCodingControlInfoKHR( VULKAN_HPP_NAMESPACE::VideoCodingControlFlagsKHR flags_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoCodingControlInfoKHR( VideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoCodingControlInfoKHR( VkVideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoCodingControlInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoCodingControlInfoKHR & operator=( VideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoCodingControlInfoKHR & operator=( VkVideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoCodingControlInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoCodingControlInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::VideoCodingControlFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoCodingControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoCodingControlInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoCodingControlInfoKHR const & ) const = default; +# else + bool operator==( VideoCodingControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( VideoCodingControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoCodingControlInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoCodingControlFlagsKHR flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR ) == + sizeof( VkVideoCodingControlInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoCodingControlInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoCodingControlInfoKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeH264CapabilitiesEXT + { + using NativeType = VkVideoDecodeH264CapabilitiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH264CapabilitiesEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264CapabilitiesEXT( + uint32_t maxLevel_ = {}, + VULKAN_HPP_NAMESPACE::Offset2D fieldOffsetGranularity_ = {}, + VULKAN_HPP_NAMESPACE::ExtensionProperties stdExtensionVersion_ = {} ) VULKAN_HPP_NOEXCEPT + : maxLevel( maxLevel_ ) + , fieldOffsetGranularity( fieldOffsetGranularity_ ) + , stdExtensionVersion( stdExtensionVersion_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + VideoDecodeH264CapabilitiesEXT( VideoDecodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264CapabilitiesEXT( VkVideoDecodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH264CapabilitiesEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeH264CapabilitiesEXT & + operator=( VideoDecodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264CapabilitiesEXT & operator=( VkVideoDecodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkVideoDecodeH264CapabilitiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeH264CapabilitiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxLevel, fieldOffsetGranularity, stdExtensionVersion ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH264CapabilitiesEXT const & ) const = default; +# else + bool operator==( VideoDecodeH264CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxLevel == rhs.maxLevel ) && + ( fieldOffsetGranularity == rhs.fieldOffsetGranularity ) && + ( stdExtensionVersion == rhs.stdExtensionVersion ); +# endif + } + + bool operator!=( VideoDecodeH264CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeH264CapabilitiesEXT; + void * pNext = {}; + uint32_t maxLevel = {}; + VULKAN_HPP_NAMESPACE::Offset2D fieldOffsetGranularity = {}; + VULKAN_HPP_NAMESPACE::ExtensionProperties stdExtensionVersion = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesEXT ) == + sizeof( VkVideoDecodeH264CapabilitiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoDecodeH264CapabilitiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeH264CapabilitiesEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeH264DpbSlotInfoEXT + { + using NativeType = VkVideoDecodeH264DpbSlotInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH264DpbSlotInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH264DpbSlotInfoEXT( + const StdVideoDecodeH264ReferenceInfo * pStdReferenceInfo_ = {} ) VULKAN_HPP_NOEXCEPT + : pStdReferenceInfo( pStdReferenceInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoDecodeH264DpbSlotInfoEXT( VideoDecodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264DpbSlotInfoEXT( VkVideoDecodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH264DpbSlotInfoEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeH264DpbSlotInfoEXT & + operator=( VideoDecodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264DpbSlotInfoEXT & operator=( VkVideoDecodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264DpbSlotInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264DpbSlotInfoEXT & + setPStdReferenceInfo( const StdVideoDecodeH264ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT + { + pStdReferenceInfo = pStdReferenceInfo_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoDecodeH264DpbSlotInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeH264DpbSlotInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdReferenceInfo ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH264DpbSlotInfoEXT const & ) const = default; +# else + bool operator==( VideoDecodeH264DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo ); +# endif + } + + bool operator!=( VideoDecodeH264DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeH264DpbSlotInfoEXT; + const void * pNext = {}; + const StdVideoDecodeH264ReferenceInfo * pStdReferenceInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoEXT ) == + sizeof( VkVideoDecodeH264DpbSlotInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoDecodeH264DpbSlotInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeH264DpbSlotInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeH264MvcEXT + { + using NativeType = VkVideoDecodeH264MvcEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH264MvcEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH264MvcEXT( const StdVideoDecodeH264Mvc * pStdMvc_ = {} ) VULKAN_HPP_NOEXCEPT + : pStdMvc( pStdMvc_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoDecodeH264MvcEXT( VideoDecodeH264MvcEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264MvcEXT( VkVideoDecodeH264MvcEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH264MvcEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeH264MvcEXT & operator=( VideoDecodeH264MvcEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264MvcEXT & operator=( VkVideoDecodeH264MvcEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264MvcEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264MvcEXT & + setPStdMvc( const StdVideoDecodeH264Mvc * pStdMvc_ ) VULKAN_HPP_NOEXCEPT + { + pStdMvc = pStdMvc_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoDecodeH264MvcEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeH264MvcEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdMvc ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH264MvcEXT const & ) const = default; +# else + bool operator==( VideoDecodeH264MvcEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdMvc == rhs.pStdMvc ); +# endif + } + + bool operator!=( VideoDecodeH264MvcEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeH264MvcEXT; + const void * pNext = {}; + const StdVideoDecodeH264Mvc * pStdMvc = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264MvcEXT ) == sizeof( VkVideoDecodeH264MvcEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH264MvcEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeH264MvcEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeH264PictureInfoEXT + { + using NativeType = VkVideoDecodeH264PictureInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH264PictureInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH264PictureInfoEXT( const StdVideoDecodeH264PictureInfo * pStdPictureInfo_ = {}, + uint32_t slicesCount_ = {}, + const uint32_t * pSlicesDataOffsets_ = {} ) VULKAN_HPP_NOEXCEPT + : pStdPictureInfo( pStdPictureInfo_ ) + , slicesCount( slicesCount_ ) + , pSlicesDataOffsets( pSlicesDataOffsets_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoDecodeH264PictureInfoEXT( VideoDecodeH264PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264PictureInfoEXT( VkVideoDecodeH264PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH264PictureInfoEXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH264PictureInfoEXT( + const StdVideoDecodeH264PictureInfo * pStdPictureInfo_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & slicesDataOffsets_ ) + : pStdPictureInfo( pStdPictureInfo_ ) + , slicesCount( static_cast( slicesDataOffsets_.size() ) ) + , pSlicesDataOffsets( slicesDataOffsets_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeH264PictureInfoEXT & + operator=( VideoDecodeH264PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264PictureInfoEXT & operator=( VkVideoDecodeH264PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoEXT & + setPStdPictureInfo( const StdVideoDecodeH264PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoEXT & setSlicesCount( uint32_t slicesCount_ ) VULKAN_HPP_NOEXCEPT + { + slicesCount = slicesCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoEXT & + setPSlicesDataOffsets( const uint32_t * pSlicesDataOffsets_ ) VULKAN_HPP_NOEXCEPT + { + pSlicesDataOffsets = pSlicesDataOffsets_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH264PictureInfoEXT & setSlicesDataOffsets( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & slicesDataOffsets_ ) VULKAN_HPP_NOEXCEPT + { + slicesCount = static_cast( slicesDataOffsets_.size() ); + pSlicesDataOffsets = slicesDataOffsets_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoDecodeH264PictureInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeH264PictureInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdPictureInfo, slicesCount, pSlicesDataOffsets ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH264PictureInfoEXT const & ) const = default; +# else + bool operator==( VideoDecodeH264PictureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) && + ( slicesCount == rhs.slicesCount ) && ( pSlicesDataOffsets == rhs.pSlicesDataOffsets ); +# endif + } + + bool operator!=( VideoDecodeH264PictureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeH264PictureInfoEXT; + const void * pNext = {}; + const StdVideoDecodeH264PictureInfo * pStdPictureInfo = {}; + uint32_t slicesCount = {}; + const uint32_t * pSlicesDataOffsets = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoEXT ) == + sizeof( VkVideoDecodeH264PictureInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoDecodeH264PictureInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeH264PictureInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeH264ProfileEXT + { + using NativeType = VkVideoDecodeH264ProfileEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH264ProfileEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH264ProfileEXT( + StdVideoH264ProfileIdc stdProfileIdc_ = {}, + VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagsEXT pictureLayout_ = {} ) VULKAN_HPP_NOEXCEPT + : stdProfileIdc( stdProfileIdc_ ) + , pictureLayout( pictureLayout_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoDecodeH264ProfileEXT( VideoDecodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264ProfileEXT( VkVideoDecodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH264ProfileEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeH264ProfileEXT & operator=( VideoDecodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264ProfileEXT & operator=( VkVideoDecodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileEXT & + setStdProfileIdc( StdVideoH264ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT + { + stdProfileIdc = stdProfileIdc_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileEXT & + setPictureLayout( VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagsEXT pictureLayout_ ) VULKAN_HPP_NOEXCEPT + { + pictureLayout = pictureLayout_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoDecodeH264ProfileEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeH264ProfileEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stdProfileIdc, pictureLayout ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoDecodeH264ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = pictureLayout <=> rhs.pictureLayout; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( VideoDecodeH264ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ) == 0 ) && + ( pictureLayout == rhs.pictureLayout ); + } + + bool operator!=( VideoDecodeH264ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeH264ProfileEXT; + const void * pNext = {}; + StdVideoH264ProfileIdc stdProfileIdc = {}; + VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagsEXT pictureLayout = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileEXT ) == + sizeof( VkVideoDecodeH264ProfileEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH264ProfileEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeH264ProfileEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeH264SessionCreateInfoEXT + { + using NativeType = VkVideoDecodeH264SessionCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoDecodeH264SessionCreateInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionCreateInfoEXT( + VULKAN_HPP_NAMESPACE::VideoDecodeH264CreateFlagsEXT flags_ = {}, + const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , pStdExtensionVersion( pStdExtensionVersion_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionCreateInfoEXT( VideoDecodeH264SessionCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264SessionCreateInfoEXT( VkVideoDecodeH264SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH264SessionCreateInfoEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeH264SessionCreateInfoEXT & + operator=( VideoDecodeH264SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264SessionCreateInfoEXT & + operator=( VkVideoDecodeH264SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::VideoDecodeH264CreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionCreateInfoEXT & setPStdExtensionVersion( + const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion_ ) VULKAN_HPP_NOEXCEPT + { + pStdExtensionVersion = pStdExtensionVersion_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoDecodeH264SessionCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeH264SessionCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pStdExtensionVersion ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH264SessionCreateInfoEXT const & ) const = default; +# else + bool operator==( VideoDecodeH264SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( pStdExtensionVersion == rhs.pStdExtensionVersion ); +# endif + } + + bool operator!=( VideoDecodeH264SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeH264SessionCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoDecodeH264CreateFlagsEXT flags = {}; + const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionCreateInfoEXT ) == + sizeof( VkVideoDecodeH264SessionCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoDecodeH264SessionCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeH264SessionCreateInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeH264SessionParametersAddInfoEXT + { + using NativeType = VkVideoDecodeH264SessionParametersAddInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoDecodeH264SessionParametersAddInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH264SessionParametersAddInfoEXT( + uint32_t spsStdCount_ = {}, + const StdVideoH264SequenceParameterSet * pSpsStd_ = {}, + uint32_t ppsStdCount_ = {}, + const StdVideoH264PictureParameterSet * pPpsStd_ = {} ) VULKAN_HPP_NOEXCEPT + : spsStdCount( spsStdCount_ ) + , pSpsStd( pSpsStd_ ) + , ppsStdCount( ppsStdCount_ ) + , pPpsStd( pPpsStd_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoDecodeH264SessionParametersAddInfoEXT( + VideoDecodeH264SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264SessionParametersAddInfoEXT( VkVideoDecodeH264SessionParametersAddInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : VideoDecodeH264SessionParametersAddInfoEXT( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH264SessionParametersAddInfoEXT( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & spsStd_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & ppsStd_ = {} ) + : spsStdCount( static_cast( spsStd_.size() ) ) + , pSpsStd( spsStd_.data() ) + , ppsStdCount( static_cast( ppsStd_.size() ) ) + , pPpsStd( ppsStd_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeH264SessionParametersAddInfoEXT & + operator=( VideoDecodeH264SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264SessionParametersAddInfoEXT & + operator=( VkVideoDecodeH264SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoEXT & + setSpsStdCount( uint32_t spsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + spsStdCount = spsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoEXT & + setPSpsStd( const StdVideoH264SequenceParameterSet * pSpsStd_ ) VULKAN_HPP_NOEXCEPT + { + pSpsStd = pSpsStd_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH264SessionParametersAddInfoEXT & + setSpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & spsStd_ ) + VULKAN_HPP_NOEXCEPT + { + spsStdCount = static_cast( spsStd_.size() ); + pSpsStd = spsStd_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoEXT & + setPpsStdCount( uint32_t ppsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + ppsStdCount = ppsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoEXT & + setPPpsStd( const StdVideoH264PictureParameterSet * pPpsStd_ ) VULKAN_HPP_NOEXCEPT + { + pPpsStd = pPpsStd_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH264SessionParametersAddInfoEXT & + setPpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & ppsStd_ ) + VULKAN_HPP_NOEXCEPT + { + ppsStdCount = static_cast( ppsStd_.size() ); + pPpsStd = ppsStd_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoDecodeH264SessionParametersAddInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeH264SessionParametersAddInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, spsStdCount, pSpsStd, ppsStdCount, pPpsStd ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH264SessionParametersAddInfoEXT const & ) const = default; +# else + bool operator==( VideoDecodeH264SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( spsStdCount == rhs.spsStdCount ) && + ( pSpsStd == rhs.pSpsStd ) && ( ppsStdCount == rhs.ppsStdCount ) && ( pPpsStd == rhs.pPpsStd ); +# endif + } + + bool operator!=( VideoDecodeH264SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeH264SessionParametersAddInfoEXT; + const void * pNext = {}; + uint32_t spsStdCount = {}; + const StdVideoH264SequenceParameterSet * pSpsStd = {}; + uint32_t ppsStdCount = {}; + const StdVideoH264PictureParameterSet * pPpsStd = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT ) == + sizeof( VkVideoDecodeH264SessionParametersAddInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoDecodeH264SessionParametersAddInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeH264SessionParametersAddInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeH264SessionParametersCreateInfoEXT + { + using NativeType = VkVideoDecodeH264SessionParametersCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoDecodeH264SessionParametersCreateInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH264SessionParametersCreateInfoEXT( + uint32_t maxSpsStdCount_ = {}, + uint32_t maxPpsStdCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT * pParametersAddInfo_ = {} ) + VULKAN_HPP_NOEXCEPT + : maxSpsStdCount( maxSpsStdCount_ ) + , maxPpsStdCount( maxPpsStdCount_ ) + , pParametersAddInfo( pParametersAddInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoDecodeH264SessionParametersCreateInfoEXT( + VideoDecodeH264SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264SessionParametersCreateInfoEXT( VkVideoDecodeH264SessionParametersCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : VideoDecodeH264SessionParametersCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeH264SessionParametersCreateInfoEXT & + operator=( VideoDecodeH264SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264SessionParametersCreateInfoEXT & + operator=( VkVideoDecodeH264SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoEXT & + setMaxSpsStdCount( uint32_t maxSpsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + maxSpsStdCount = maxSpsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoEXT & + setMaxPpsStdCount( uint32_t maxPpsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + maxPpsStdCount = maxPpsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoEXT & setPParametersAddInfo( + const VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT + { + pParametersAddInfo = pParametersAddInfo_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoDecodeH264SessionParametersCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeH264SessionParametersCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxSpsStdCount, maxPpsStdCount, pParametersAddInfo ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH264SessionParametersCreateInfoEXT const & ) const = default; +# else + bool operator==( VideoDecodeH264SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxSpsStdCount == rhs.maxSpsStdCount ) && + ( maxPpsStdCount == rhs.maxPpsStdCount ) && ( pParametersAddInfo == rhs.pParametersAddInfo ); +# endif + } + + bool operator!=( VideoDecodeH264SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeH264SessionParametersCreateInfoEXT; + const void * pNext = {}; + uint32_t maxSpsStdCount = {}; + uint32_t maxPpsStdCount = {}; + const VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoEXT * pParametersAddInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoEXT ) == + sizeof( VkVideoDecodeH264SessionParametersCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoDecodeH264SessionParametersCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeH264SessionParametersCreateInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeH265CapabilitiesEXT + { + using NativeType = VkVideoDecodeH265CapabilitiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH265CapabilitiesEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265CapabilitiesEXT( + uint32_t maxLevel_ = {}, VULKAN_HPP_NAMESPACE::ExtensionProperties stdExtensionVersion_ = {} ) VULKAN_HPP_NOEXCEPT + : maxLevel( maxLevel_ ) + , stdExtensionVersion( stdExtensionVersion_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + VideoDecodeH265CapabilitiesEXT( VideoDecodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265CapabilitiesEXT( VkVideoDecodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH265CapabilitiesEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeH265CapabilitiesEXT & + operator=( VideoDecodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265CapabilitiesEXT & operator=( VkVideoDecodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkVideoDecodeH265CapabilitiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeH265CapabilitiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxLevel, stdExtensionVersion ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH265CapabilitiesEXT const & ) const = default; +# else + bool operator==( VideoDecodeH265CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxLevel == rhs.maxLevel ) && + ( stdExtensionVersion == rhs.stdExtensionVersion ); +# endif + } + + bool operator!=( VideoDecodeH265CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeH265CapabilitiesEXT; + void * pNext = {}; + uint32_t maxLevel = {}; + VULKAN_HPP_NAMESPACE::ExtensionProperties stdExtensionVersion = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesEXT ) == + sizeof( VkVideoDecodeH265CapabilitiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoDecodeH265CapabilitiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeH265CapabilitiesEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeH265DpbSlotInfoEXT + { + using NativeType = VkVideoDecodeH265DpbSlotInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH265DpbSlotInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH265DpbSlotInfoEXT( + const StdVideoDecodeH265ReferenceInfo * pStdReferenceInfo_ = {} ) VULKAN_HPP_NOEXCEPT + : pStdReferenceInfo( pStdReferenceInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoDecodeH265DpbSlotInfoEXT( VideoDecodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265DpbSlotInfoEXT( VkVideoDecodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH265DpbSlotInfoEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeH265DpbSlotInfoEXT & + operator=( VideoDecodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265DpbSlotInfoEXT & operator=( VkVideoDecodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265DpbSlotInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265DpbSlotInfoEXT & + setPStdReferenceInfo( const StdVideoDecodeH265ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT + { + pStdReferenceInfo = pStdReferenceInfo_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoDecodeH265DpbSlotInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeH265DpbSlotInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdReferenceInfo ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH265DpbSlotInfoEXT const & ) const = default; +# else + bool operator==( VideoDecodeH265DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo ); +# endif + } + + bool operator!=( VideoDecodeH265DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeH265DpbSlotInfoEXT; + const void * pNext = {}; + const StdVideoDecodeH265ReferenceInfo * pStdReferenceInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoEXT ) == + sizeof( VkVideoDecodeH265DpbSlotInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoDecodeH265DpbSlotInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeH265DpbSlotInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeH265PictureInfoEXT + { + using NativeType = VkVideoDecodeH265PictureInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH265PictureInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH265PictureInfoEXT( StdVideoDecodeH265PictureInfo * pStdPictureInfo_ = {}, + uint32_t slicesCount_ = {}, + const uint32_t * pSlicesDataOffsets_ = {} ) VULKAN_HPP_NOEXCEPT + : pStdPictureInfo( pStdPictureInfo_ ) + , slicesCount( slicesCount_ ) + , pSlicesDataOffsets( pSlicesDataOffsets_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoDecodeH265PictureInfoEXT( VideoDecodeH265PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265PictureInfoEXT( VkVideoDecodeH265PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH265PictureInfoEXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH265PictureInfoEXT( + StdVideoDecodeH265PictureInfo * pStdPictureInfo_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & slicesDataOffsets_ ) + : pStdPictureInfo( pStdPictureInfo_ ) + , slicesCount( static_cast( slicesDataOffsets_.size() ) ) + , pSlicesDataOffsets( slicesDataOffsets_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeH265PictureInfoEXT & + operator=( VideoDecodeH265PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265PictureInfoEXT & operator=( VkVideoDecodeH265PictureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoEXT & + setPStdPictureInfo( StdVideoDecodeH265PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoEXT & setSlicesCount( uint32_t slicesCount_ ) VULKAN_HPP_NOEXCEPT + { + slicesCount = slicesCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoEXT & + setPSlicesDataOffsets( const uint32_t * pSlicesDataOffsets_ ) VULKAN_HPP_NOEXCEPT + { + pSlicesDataOffsets = pSlicesDataOffsets_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH265PictureInfoEXT & setSlicesDataOffsets( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & slicesDataOffsets_ ) VULKAN_HPP_NOEXCEPT + { + slicesCount = static_cast( slicesDataOffsets_.size() ); + pSlicesDataOffsets = slicesDataOffsets_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoDecodeH265PictureInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeH265PictureInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdPictureInfo, slicesCount, pSlicesDataOffsets ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH265PictureInfoEXT const & ) const = default; +# else + bool operator==( VideoDecodeH265PictureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) && + ( slicesCount == rhs.slicesCount ) && ( pSlicesDataOffsets == rhs.pSlicesDataOffsets ); +# endif + } + + bool operator!=( VideoDecodeH265PictureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeH265PictureInfoEXT; + const void * pNext = {}; + StdVideoDecodeH265PictureInfo * pStdPictureInfo = {}; + uint32_t slicesCount = {}; + const uint32_t * pSlicesDataOffsets = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoEXT ) == + sizeof( VkVideoDecodeH265PictureInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoDecodeH265PictureInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeH265PictureInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeH265ProfileEXT + { + using NativeType = VkVideoDecodeH265ProfileEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH265ProfileEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH265ProfileEXT( StdVideoH265ProfileIdc stdProfileIdc_ = {} ) VULKAN_HPP_NOEXCEPT + : stdProfileIdc( stdProfileIdc_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoDecodeH265ProfileEXT( VideoDecodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265ProfileEXT( VkVideoDecodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH265ProfileEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeH265ProfileEXT & operator=( VideoDecodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265ProfileEXT & operator=( VkVideoDecodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265ProfileEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265ProfileEXT & + setStdProfileIdc( StdVideoH265ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT + { + stdProfileIdc = stdProfileIdc_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoDecodeH265ProfileEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeH265ProfileEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stdProfileIdc ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoDecodeH265ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( VideoDecodeH265ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ) == 0 ); + } + + bool operator!=( VideoDecodeH265ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeH265ProfileEXT; + const void * pNext = {}; + StdVideoH265ProfileIdc stdProfileIdc = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileEXT ) == + sizeof( VkVideoDecodeH265ProfileEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH265ProfileEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeH265ProfileEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeH265SessionCreateInfoEXT + { + using NativeType = VkVideoDecodeH265SessionCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoDecodeH265SessionCreateInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionCreateInfoEXT( + VULKAN_HPP_NAMESPACE::VideoDecodeH265CreateFlagsEXT flags_ = {}, + const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , pStdExtensionVersion( pStdExtensionVersion_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionCreateInfoEXT( VideoDecodeH265SessionCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265SessionCreateInfoEXT( VkVideoDecodeH265SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH265SessionCreateInfoEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeH265SessionCreateInfoEXT & + operator=( VideoDecodeH265SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265SessionCreateInfoEXT & + operator=( VkVideoDecodeH265SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::VideoDecodeH265CreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionCreateInfoEXT & setPStdExtensionVersion( + const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion_ ) VULKAN_HPP_NOEXCEPT + { + pStdExtensionVersion = pStdExtensionVersion_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoDecodeH265SessionCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeH265SessionCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pStdExtensionVersion ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH265SessionCreateInfoEXT const & ) const = default; +# else + bool operator==( VideoDecodeH265SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( pStdExtensionVersion == rhs.pStdExtensionVersion ); +# endif + } + + bool operator!=( VideoDecodeH265SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeH265SessionCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoDecodeH265CreateFlagsEXT flags = {}; + const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionCreateInfoEXT ) == + sizeof( VkVideoDecodeH265SessionCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoDecodeH265SessionCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeH265SessionCreateInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeH265SessionParametersAddInfoEXT + { + using NativeType = VkVideoDecodeH265SessionParametersAddInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoDecodeH265SessionParametersAddInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH265SessionParametersAddInfoEXT( + uint32_t spsStdCount_ = {}, + const StdVideoH265SequenceParameterSet * pSpsStd_ = {}, + uint32_t ppsStdCount_ = {}, + const StdVideoH265PictureParameterSet * pPpsStd_ = {} ) VULKAN_HPP_NOEXCEPT + : spsStdCount( spsStdCount_ ) + , pSpsStd( pSpsStd_ ) + , ppsStdCount( ppsStdCount_ ) + , pPpsStd( pPpsStd_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoDecodeH265SessionParametersAddInfoEXT( + VideoDecodeH265SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265SessionParametersAddInfoEXT( VkVideoDecodeH265SessionParametersAddInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : VideoDecodeH265SessionParametersAddInfoEXT( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH265SessionParametersAddInfoEXT( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & spsStd_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & ppsStd_ = {} ) + : spsStdCount( static_cast( spsStd_.size() ) ) + , pSpsStd( spsStd_.data() ) + , ppsStdCount( static_cast( ppsStd_.size() ) ) + , pPpsStd( ppsStd_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeH265SessionParametersAddInfoEXT & + operator=( VideoDecodeH265SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265SessionParametersAddInfoEXT & + operator=( VkVideoDecodeH265SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoEXT & + setSpsStdCount( uint32_t spsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + spsStdCount = spsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoEXT & + setPSpsStd( const StdVideoH265SequenceParameterSet * pSpsStd_ ) VULKAN_HPP_NOEXCEPT + { + pSpsStd = pSpsStd_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH265SessionParametersAddInfoEXT & + setSpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & spsStd_ ) + VULKAN_HPP_NOEXCEPT + { + spsStdCount = static_cast( spsStd_.size() ); + pSpsStd = spsStd_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoEXT & + setPpsStdCount( uint32_t ppsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + ppsStdCount = ppsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoEXT & + setPPpsStd( const StdVideoH265PictureParameterSet * pPpsStd_ ) VULKAN_HPP_NOEXCEPT + { + pPpsStd = pPpsStd_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH265SessionParametersAddInfoEXT & + setPpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & ppsStd_ ) + VULKAN_HPP_NOEXCEPT + { + ppsStdCount = static_cast( ppsStd_.size() ); + pPpsStd = ppsStd_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoDecodeH265SessionParametersAddInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeH265SessionParametersAddInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, spsStdCount, pSpsStd, ppsStdCount, pPpsStd ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH265SessionParametersAddInfoEXT const & ) const = default; +# else + bool operator==( VideoDecodeH265SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( spsStdCount == rhs.spsStdCount ) && + ( pSpsStd == rhs.pSpsStd ) && ( ppsStdCount == rhs.ppsStdCount ) && ( pPpsStd == rhs.pPpsStd ); +# endif + } + + bool operator!=( VideoDecodeH265SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeH265SessionParametersAddInfoEXT; + const void * pNext = {}; + uint32_t spsStdCount = {}; + const StdVideoH265SequenceParameterSet * pSpsStd = {}; + uint32_t ppsStdCount = {}; + const StdVideoH265PictureParameterSet * pPpsStd = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT ) == + sizeof( VkVideoDecodeH265SessionParametersAddInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoDecodeH265SessionParametersAddInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeH265SessionParametersAddInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeH265SessionParametersCreateInfoEXT + { + using NativeType = VkVideoDecodeH265SessionParametersCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoDecodeH265SessionParametersCreateInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH265SessionParametersCreateInfoEXT( + uint32_t maxSpsStdCount_ = {}, + uint32_t maxPpsStdCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT * pParametersAddInfo_ = {} ) + VULKAN_HPP_NOEXCEPT + : maxSpsStdCount( maxSpsStdCount_ ) + , maxPpsStdCount( maxPpsStdCount_ ) + , pParametersAddInfo( pParametersAddInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoDecodeH265SessionParametersCreateInfoEXT( + VideoDecodeH265SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265SessionParametersCreateInfoEXT( VkVideoDecodeH265SessionParametersCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : VideoDecodeH265SessionParametersCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeH265SessionParametersCreateInfoEXT & + operator=( VideoDecodeH265SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265SessionParametersCreateInfoEXT & + operator=( VkVideoDecodeH265SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoEXT & + setMaxSpsStdCount( uint32_t maxSpsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + maxSpsStdCount = maxSpsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoEXT & + setMaxPpsStdCount( uint32_t maxPpsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + maxPpsStdCount = maxPpsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoEXT & setPParametersAddInfo( + const VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT + { + pParametersAddInfo = pParametersAddInfo_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoDecodeH265SessionParametersCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeH265SessionParametersCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxSpsStdCount, maxPpsStdCount, pParametersAddInfo ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH265SessionParametersCreateInfoEXT const & ) const = default; +# else + bool operator==( VideoDecodeH265SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxSpsStdCount == rhs.maxSpsStdCount ) && + ( maxPpsStdCount == rhs.maxPpsStdCount ) && ( pParametersAddInfo == rhs.pParametersAddInfo ); +# endif + } + + bool operator!=( VideoDecodeH265SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeH265SessionParametersCreateInfoEXT; + const void * pNext = {}; + uint32_t maxSpsStdCount = {}; + uint32_t maxPpsStdCount = {}; + const VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoEXT * pParametersAddInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoEXT ) == + sizeof( VkVideoDecodeH265SessionParametersCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoDecodeH265SessionParametersCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeH265SessionParametersCreateInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoDecodeInfoKHR + { + using NativeType = VkVideoDecodeInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeInfoKHR( + VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR flags_ = {}, + VULKAN_HPP_NAMESPACE::Offset2D codedOffset_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D codedExtent_ = {}, + VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize srcBufferOffset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize srcBufferRange_ = {}, + VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR dstPictureResource_ = {}, + const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot_ = {}, + uint32_t referenceSlotCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , codedOffset( codedOffset_ ) + , codedExtent( codedExtent_ ) + , srcBuffer( srcBuffer_ ) + , srcBufferOffset( srcBufferOffset_ ) + , srcBufferRange( srcBufferRange_ ) + , dstPictureResource( dstPictureResource_ ) + , pSetupReferenceSlot( pSetupReferenceSlot_ ) + , referenceSlotCount( referenceSlotCount_ ) + , pReferenceSlots( pReferenceSlots_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoDecodeInfoKHR( VideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeInfoKHR( VkVideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeInfoKHR( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeInfoKHR( + VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR flags_, + VULKAN_HPP_NAMESPACE::Offset2D codedOffset_, + VULKAN_HPP_NAMESPACE::Extent2D codedExtent_, + VULKAN_HPP_NAMESPACE::Buffer srcBuffer_, + VULKAN_HPP_NAMESPACE::DeviceSize srcBufferOffset_, + VULKAN_HPP_NAMESPACE::DeviceSize srcBufferRange_, + VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR dstPictureResource_, + const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + referenceSlots_ ) + : flags( flags_ ) + , codedOffset( codedOffset_ ) + , codedExtent( codedExtent_ ) + , srcBuffer( srcBuffer_ ) + , srcBufferOffset( srcBufferOffset_ ) + , srcBufferRange( srcBufferRange_ ) + , dstPictureResource( dstPictureResource_ ) + , pSetupReferenceSlot( pSetupReferenceSlot_ ) + , referenceSlotCount( static_cast( referenceSlots_.size() ) ) + , pReferenceSlots( referenceSlots_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoDecodeInfoKHR & operator=( VideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeInfoKHR & operator=( VkVideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & + setCodedOffset( VULKAN_HPP_NAMESPACE::Offset2D const & codedOffset_ ) VULKAN_HPP_NOEXCEPT + { + codedOffset = codedOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & + setCodedExtent( VULKAN_HPP_NAMESPACE::Extent2D const & codedExtent_ ) VULKAN_HPP_NOEXCEPT + { + codedExtent = codedExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & + setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT + { + srcBuffer = srcBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & + setSrcBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcBufferOffset_ ) VULKAN_HPP_NOEXCEPT + { + srcBufferOffset = srcBufferOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & + setSrcBufferRange( VULKAN_HPP_NAMESPACE::DeviceSize srcBufferRange_ ) VULKAN_HPP_NOEXCEPT + { + srcBufferRange = srcBufferRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setDstPictureResource( + VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR const & dstPictureResource_ ) VULKAN_HPP_NOEXCEPT + { + dstPictureResource = dstPictureResource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setPSetupReferenceSlot( + const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot_ ) VULKAN_HPP_NOEXCEPT + { + pSetupReferenceSlot = pSetupReferenceSlot_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & + setReferenceSlotCount( uint32_t referenceSlotCount_ ) VULKAN_HPP_NOEXCEPT + { + referenceSlotCount = referenceSlotCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & + setPReferenceSlots( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots_ ) VULKAN_HPP_NOEXCEPT + { + pReferenceSlots = pReferenceSlots_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeInfoKHR & setReferenceSlots( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + referenceSlots_ ) VULKAN_HPP_NOEXCEPT + { + referenceSlotCount = static_cast( referenceSlots_.size() ); + pReferenceSlots = referenceSlots_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoDecodeInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoDecodeInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + codedOffset, + codedExtent, + srcBuffer, + srcBufferOffset, + srcBufferRange, + dstPictureResource, + pSetupReferenceSlot, + referenceSlotCount, + pReferenceSlots ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeInfoKHR const & ) const = default; +# else + bool operator==( VideoDecodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( codedOffset == rhs.codedOffset ) && ( codedExtent == rhs.codedExtent ) && + ( srcBuffer == rhs.srcBuffer ) && ( srcBufferOffset == rhs.srcBufferOffset ) && + ( srcBufferRange == rhs.srcBufferRange ) && ( dstPictureResource == rhs.dstPictureResource ) && + ( pSetupReferenceSlot == rhs.pSetupReferenceSlot ) && ( referenceSlotCount == rhs.referenceSlotCount ) && + ( pReferenceSlots == rhs.pReferenceSlots ); +# endif + } + + bool operator!=( VideoDecodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoDecodeInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR flags = {}; + VULKAN_HPP_NAMESPACE::Offset2D codedOffset = {}; + VULKAN_HPP_NAMESPACE::Extent2D codedExtent = {}; + VULKAN_HPP_NAMESPACE::Buffer srcBuffer = {}; + VULKAN_HPP_NAMESPACE::DeviceSize srcBufferOffset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize srcBufferRange = {}; + VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR dstPictureResource = {}; + const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot = {}; + uint32_t referenceSlotCount = {}; + const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR ) == sizeof( VkVideoDecodeInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoDecodeInfoKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH264CapabilitiesEXT + { + using NativeType = VkVideoEncodeH264CapabilitiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264CapabilitiesEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT( + VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilityFlagsEXT flags_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeH264InputModeFlagsEXT inputModeFlags_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeH264OutputModeFlagsEXT outputModeFlags_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D minPictureSizeInMbs_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D maxPictureSizeInMbs_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D inputImageDataAlignment_ = {}, + uint8_t maxNumL0ReferenceForP_ = {}, + uint8_t maxNumL0ReferenceForB_ = {}, + uint8_t maxNumL1Reference_ = {}, + uint8_t qualityLevelCount_ = {}, + VULKAN_HPP_NAMESPACE::ExtensionProperties stdExtensionVersion_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , inputModeFlags( inputModeFlags_ ) + , outputModeFlags( outputModeFlags_ ) + , minPictureSizeInMbs( minPictureSizeInMbs_ ) + , maxPictureSizeInMbs( maxPictureSizeInMbs_ ) + , inputImageDataAlignment( inputImageDataAlignment_ ) + , maxNumL0ReferenceForP( maxNumL0ReferenceForP_ ) + , maxNumL0ReferenceForB( maxNumL0ReferenceForB_ ) + , maxNumL1Reference( maxNumL1Reference_ ) + , qualityLevelCount( qualityLevelCount_ ) + , stdExtensionVersion( stdExtensionVersion_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + VideoEncodeH264CapabilitiesEXT( VideoEncodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264CapabilitiesEXT( VkVideoEncodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264CapabilitiesEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH264CapabilitiesEXT & + operator=( VideoEncodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264CapabilitiesEXT & operator=( VkVideoEncodeH264CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT & + setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilityFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT & + setInputModeFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH264InputModeFlagsEXT inputModeFlags_ ) VULKAN_HPP_NOEXCEPT + { + inputModeFlags = inputModeFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT & + setOutputModeFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH264OutputModeFlagsEXT outputModeFlags_ ) VULKAN_HPP_NOEXCEPT + { + outputModeFlags = outputModeFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT & + setMinPictureSizeInMbs( VULKAN_HPP_NAMESPACE::Extent2D const & minPictureSizeInMbs_ ) VULKAN_HPP_NOEXCEPT + { + minPictureSizeInMbs = minPictureSizeInMbs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT & + setMaxPictureSizeInMbs( VULKAN_HPP_NAMESPACE::Extent2D const & maxPictureSizeInMbs_ ) VULKAN_HPP_NOEXCEPT + { + maxPictureSizeInMbs = maxPictureSizeInMbs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT & + setInputImageDataAlignment( VULKAN_HPP_NAMESPACE::Extent2D const & inputImageDataAlignment_ ) VULKAN_HPP_NOEXCEPT + { + inputImageDataAlignment = inputImageDataAlignment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT & + setMaxNumL0ReferenceForP( uint8_t maxNumL0ReferenceForP_ ) VULKAN_HPP_NOEXCEPT + { + maxNumL0ReferenceForP = maxNumL0ReferenceForP_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT & + setMaxNumL0ReferenceForB( uint8_t maxNumL0ReferenceForB_ ) VULKAN_HPP_NOEXCEPT + { + maxNumL0ReferenceForB = maxNumL0ReferenceForB_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT & + setMaxNumL1Reference( uint8_t maxNumL1Reference_ ) VULKAN_HPP_NOEXCEPT + { + maxNumL1Reference = maxNumL1Reference_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT & + setQualityLevelCount( uint8_t qualityLevelCount_ ) VULKAN_HPP_NOEXCEPT + { + qualityLevelCount = qualityLevelCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264CapabilitiesEXT & setStdExtensionVersion( + VULKAN_HPP_NAMESPACE::ExtensionProperties const & stdExtensionVersion_ ) VULKAN_HPP_NOEXCEPT + { + stdExtensionVersion = stdExtensionVersion_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH264CapabilitiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH264CapabilitiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + inputModeFlags, + outputModeFlags, + minPictureSizeInMbs, + maxPictureSizeInMbs, + inputImageDataAlignment, + maxNumL0ReferenceForP, + maxNumL0ReferenceForB, + maxNumL1Reference, + qualityLevelCount, + stdExtensionVersion ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264CapabilitiesEXT const & ) const = default; +# else + bool operator==( VideoEncodeH264CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( inputModeFlags == rhs.inputModeFlags ) && ( outputModeFlags == rhs.outputModeFlags ) && + ( minPictureSizeInMbs == rhs.minPictureSizeInMbs ) && ( maxPictureSizeInMbs == rhs.maxPictureSizeInMbs ) && + ( inputImageDataAlignment == rhs.inputImageDataAlignment ) && + ( maxNumL0ReferenceForP == rhs.maxNumL0ReferenceForP ) && + ( maxNumL0ReferenceForB == rhs.maxNumL0ReferenceForB ) && ( maxNumL1Reference == rhs.maxNumL1Reference ) && + ( qualityLevelCount == rhs.qualityLevelCount ) && ( stdExtensionVersion == rhs.stdExtensionVersion ); +# endif + } + + bool operator!=( VideoEncodeH264CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH264CapabilitiesEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilityFlagsEXT flags = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH264InputModeFlagsEXT inputModeFlags = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH264OutputModeFlagsEXT outputModeFlags = {}; + VULKAN_HPP_NAMESPACE::Extent2D minPictureSizeInMbs = {}; + VULKAN_HPP_NAMESPACE::Extent2D maxPictureSizeInMbs = {}; + VULKAN_HPP_NAMESPACE::Extent2D inputImageDataAlignment = {}; + uint8_t maxNumL0ReferenceForP = {}; + uint8_t maxNumL0ReferenceForB = {}; + uint8_t maxNumL1Reference = {}; + uint8_t qualityLevelCount = {}; + VULKAN_HPP_NAMESPACE::ExtensionProperties stdExtensionVersion = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT ) == + sizeof( VkVideoEncodeH264CapabilitiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH264CapabilitiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH264CapabilitiesEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH264DpbSlotInfoEXT + { + using NativeType = VkVideoEncodeH264DpbSlotInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264DpbSlotInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeH264DpbSlotInfoEXT( int8_t slotIndex_ = {}, + const StdVideoEncodeH264PictureInfo * pStdPictureInfo_ = {} ) VULKAN_HPP_NOEXCEPT + : slotIndex( slotIndex_ ) + , pStdPictureInfo( pStdPictureInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoEncodeH264DpbSlotInfoEXT( VideoEncodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264DpbSlotInfoEXT( VkVideoEncodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264DpbSlotInfoEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH264DpbSlotInfoEXT & + operator=( VideoEncodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264DpbSlotInfoEXT & operator=( VkVideoEncodeH264DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264DpbSlotInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264DpbSlotInfoEXT & setSlotIndex( int8_t slotIndex_ ) VULKAN_HPP_NOEXCEPT + { + slotIndex = slotIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264DpbSlotInfoEXT & + setPStdPictureInfo( const StdVideoEncodeH264PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH264DpbSlotInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH264DpbSlotInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, slotIndex, pStdPictureInfo ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264DpbSlotInfoEXT const & ) const = default; +# else + bool operator==( VideoEncodeH264DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( slotIndex == rhs.slotIndex ) && + ( pStdPictureInfo == rhs.pStdPictureInfo ); +# endif + } + + bool operator!=( VideoEncodeH264DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH264DpbSlotInfoEXT; + const void * pNext = {}; + int8_t slotIndex = {}; + const StdVideoEncodeH264PictureInfo * pStdPictureInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT ) == + sizeof( VkVideoEncodeH264DpbSlotInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH264DpbSlotInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH264DpbSlotInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH264EmitPictureParametersEXT + { + using NativeType = VkVideoEncodeH264EmitPictureParametersEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoEncodeH264EmitPictureParametersEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeH264EmitPictureParametersEXT( uint8_t spsId_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 emitSpsEnable_ = {}, + uint32_t ppsIdEntryCount_ = {}, + const uint8_t * ppsIdEntries_ = {} ) VULKAN_HPP_NOEXCEPT + : spsId( spsId_ ) + , emitSpsEnable( emitSpsEnable_ ) + , ppsIdEntryCount( ppsIdEntryCount_ ) + , ppsIdEntries( ppsIdEntries_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoEncodeH264EmitPictureParametersEXT( VideoEncodeH264EmitPictureParametersEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264EmitPictureParametersEXT( VkVideoEncodeH264EmitPictureParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264EmitPictureParametersEXT( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264EmitPictureParametersEXT( + uint8_t spsId_, + VULKAN_HPP_NAMESPACE::Bool32 emitSpsEnable_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & psIdEntries_ ) + : spsId( spsId_ ) + , emitSpsEnable( emitSpsEnable_ ) + , ppsIdEntryCount( static_cast( psIdEntries_.size() ) ) + , ppsIdEntries( psIdEntries_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH264EmitPictureParametersEXT & + operator=( VideoEncodeH264EmitPictureParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264EmitPictureParametersEXT & + operator=( VkVideoEncodeH264EmitPictureParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264EmitPictureParametersEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264EmitPictureParametersEXT & setSpsId( uint8_t spsId_ ) VULKAN_HPP_NOEXCEPT + { + spsId = spsId_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264EmitPictureParametersEXT & + setEmitSpsEnable( VULKAN_HPP_NAMESPACE::Bool32 emitSpsEnable_ ) VULKAN_HPP_NOEXCEPT + { + emitSpsEnable = emitSpsEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264EmitPictureParametersEXT & + setPpsIdEntryCount( uint32_t ppsIdEntryCount_ ) VULKAN_HPP_NOEXCEPT + { + ppsIdEntryCount = ppsIdEntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264EmitPictureParametersEXT & + setPpsIdEntries( const uint8_t * ppsIdEntries_ ) VULKAN_HPP_NOEXCEPT + { + ppsIdEntries = ppsIdEntries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264EmitPictureParametersEXT & setPsIdEntries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & psIdEntries_ ) VULKAN_HPP_NOEXCEPT + { + ppsIdEntryCount = static_cast( psIdEntries_.size() ); + ppsIdEntries = psIdEntries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH264EmitPictureParametersEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH264EmitPictureParametersEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, spsId, emitSpsEnable, ppsIdEntryCount, ppsIdEntries ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264EmitPictureParametersEXT const & ) const = default; +# else + bool operator==( VideoEncodeH264EmitPictureParametersEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( spsId == rhs.spsId ) && + ( emitSpsEnable == rhs.emitSpsEnable ) && ( ppsIdEntryCount == rhs.ppsIdEntryCount ) && + ( ppsIdEntries == rhs.ppsIdEntries ); +# endif + } + + bool operator!=( VideoEncodeH264EmitPictureParametersEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH264EmitPictureParametersEXT; + const void * pNext = {}; + uint8_t spsId = {}; + VULKAN_HPP_NAMESPACE::Bool32 emitSpsEnable = {}; + uint32_t ppsIdEntryCount = {}; + const uint8_t * ppsIdEntries = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersEXT ) == + sizeof( VkVideoEncodeH264EmitPictureParametersEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH264EmitPictureParametersEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH264EmitPictureParametersEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH264FrameSizeEXT + { + using NativeType = VkVideoEncodeH264FrameSizeEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264FrameSizeEXT( uint32_t frameISize_ = {}, + uint32_t framePSize_ = {}, + uint32_t frameBSize_ = {} ) VULKAN_HPP_NOEXCEPT + : frameISize( frameISize_ ) + , framePSize( framePSize_ ) + , frameBSize( frameBSize_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoEncodeH264FrameSizeEXT( VideoEncodeH264FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264FrameSizeEXT( VkVideoEncodeH264FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264FrameSizeEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH264FrameSizeEXT & operator=( VideoEncodeH264FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264FrameSizeEXT & operator=( VkVideoEncodeH264FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeEXT & setFrameISize( uint32_t frameISize_ ) VULKAN_HPP_NOEXCEPT + { + frameISize = frameISize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeEXT & setFramePSize( uint32_t framePSize_ ) VULKAN_HPP_NOEXCEPT + { + framePSize = framePSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeEXT & setFrameBSize( uint32_t frameBSize_ ) VULKAN_HPP_NOEXCEPT + { + frameBSize = frameBSize_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH264FrameSizeEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH264FrameSizeEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( frameISize, framePSize, frameBSize ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264FrameSizeEXT const & ) const = default; +# else + bool operator==( VideoEncodeH264FrameSizeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( frameISize == rhs.frameISize ) && ( framePSize == rhs.framePSize ) && ( frameBSize == rhs.frameBSize ); +# endif + } + + bool operator!=( VideoEncodeH264FrameSizeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + uint32_t frameISize = {}; + uint32_t framePSize = {}; + uint32_t frameBSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT ) == + sizeof( VkVideoEncodeH264FrameSizeEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH264FrameSizeEXT is not nothrow_move_constructible!" ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH264NaluSliceEXT + { + using NativeType = VkVideoEncodeH264NaluSliceEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264NaluSliceEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264NaluSliceEXT( + const StdVideoEncodeH264SliceHeader * pSliceHeaderStd_ = {}, + uint32_t mbCount_ = {}, + uint8_t refFinalList0EntryCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefFinalList0Entries_ = {}, + uint8_t refFinalList1EntryCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefFinalList1Entries_ = {} ) VULKAN_HPP_NOEXCEPT + : pSliceHeaderStd( pSliceHeaderStd_ ) + , mbCount( mbCount_ ) + , refFinalList0EntryCount( refFinalList0EntryCount_ ) + , pRefFinalList0Entries( pRefFinalList0Entries_ ) + , refFinalList1EntryCount( refFinalList1EntryCount_ ) + , pRefFinalList1Entries( pRefFinalList1Entries_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoEncodeH264NaluSliceEXT( VideoEncodeH264NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264NaluSliceEXT( VkVideoEncodeH264NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264NaluSliceEXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264NaluSliceEXT( + const StdVideoEncodeH264SliceHeader * pSliceHeaderStd_, + uint32_t mbCount_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + refFinalList0Entries_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + refFinalList1Entries_ = {} ) + : pSliceHeaderStd( pSliceHeaderStd_ ) + , mbCount( mbCount_ ) + , refFinalList0EntryCount( static_cast( refFinalList0Entries_.size() ) ) + , pRefFinalList0Entries( refFinalList0Entries_.data() ) + , refFinalList1EntryCount( static_cast( refFinalList1Entries_.size() ) ) + , pRefFinalList1Entries( refFinalList1Entries_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH264NaluSliceEXT & operator=( VideoEncodeH264NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264NaluSliceEXT & operator=( VkVideoEncodeH264NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceEXT & + setPSliceHeaderStd( const StdVideoEncodeH264SliceHeader * pSliceHeaderStd_ ) VULKAN_HPP_NOEXCEPT + { + pSliceHeaderStd = pSliceHeaderStd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceEXT & setMbCount( uint32_t mbCount_ ) VULKAN_HPP_NOEXCEPT + { + mbCount = mbCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceEXT & + setRefFinalList0EntryCount( uint8_t refFinalList0EntryCount_ ) VULKAN_HPP_NOEXCEPT + { + refFinalList0EntryCount = refFinalList0EntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceEXT & setPRefFinalList0Entries( + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefFinalList0Entries_ ) VULKAN_HPP_NOEXCEPT + { + pRefFinalList0Entries = pRefFinalList0Entries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264NaluSliceEXT & setRefFinalList0Entries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + refFinalList0Entries_ ) VULKAN_HPP_NOEXCEPT + { + refFinalList0EntryCount = static_cast( refFinalList0Entries_.size() ); + pRefFinalList0Entries = refFinalList0Entries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceEXT & + setRefFinalList1EntryCount( uint8_t refFinalList1EntryCount_ ) VULKAN_HPP_NOEXCEPT + { + refFinalList1EntryCount = refFinalList1EntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceEXT & setPRefFinalList1Entries( + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefFinalList1Entries_ ) VULKAN_HPP_NOEXCEPT + { + pRefFinalList1Entries = pRefFinalList1Entries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264NaluSliceEXT & setRefFinalList1Entries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + refFinalList1Entries_ ) VULKAN_HPP_NOEXCEPT + { + refFinalList1EntryCount = static_cast( refFinalList1Entries_.size() ); + pRefFinalList1Entries = refFinalList1Entries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH264NaluSliceEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH264NaluSliceEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + pSliceHeaderStd, + mbCount, + refFinalList0EntryCount, + pRefFinalList0Entries, + refFinalList1EntryCount, + pRefFinalList1Entries ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264NaluSliceEXT const & ) const = default; +# else + bool operator==( VideoEncodeH264NaluSliceEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pSliceHeaderStd == rhs.pSliceHeaderStd ) && + ( mbCount == rhs.mbCount ) && ( refFinalList0EntryCount == rhs.refFinalList0EntryCount ) && + ( pRefFinalList0Entries == rhs.pRefFinalList0Entries ) && + ( refFinalList1EntryCount == rhs.refFinalList1EntryCount ) && + ( pRefFinalList1Entries == rhs.pRefFinalList1Entries ); +# endif + } + + bool operator!=( VideoEncodeH264NaluSliceEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH264NaluSliceEXT; + const void * pNext = {}; + const StdVideoEncodeH264SliceHeader * pSliceHeaderStd = {}; + uint32_t mbCount = {}; + uint8_t refFinalList0EntryCount = {}; + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefFinalList0Entries = {}; + uint8_t refFinalList1EntryCount = {}; + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefFinalList1Entries = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT ) == + sizeof( VkVideoEncodeH264NaluSliceEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH264NaluSliceEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH264NaluSliceEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH264ProfileEXT + { + using NativeType = VkVideoEncodeH264ProfileEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264ProfileEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264ProfileEXT( StdVideoH264ProfileIdc stdProfileIdc_ = {} ) VULKAN_HPP_NOEXCEPT + : stdProfileIdc( stdProfileIdc_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoEncodeH264ProfileEXT( VideoEncodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264ProfileEXT( VkVideoEncodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264ProfileEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH264ProfileEXT & operator=( VideoEncodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264ProfileEXT & operator=( VkVideoEncodeH264ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264ProfileEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264ProfileEXT & + setStdProfileIdc( StdVideoH264ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT + { + stdProfileIdc = stdProfileIdc_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH264ProfileEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH264ProfileEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stdProfileIdc ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoEncodeH264ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( VideoEncodeH264ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ) == 0 ); + } + + bool operator!=( VideoEncodeH264ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH264ProfileEXT; + const void * pNext = {}; + StdVideoH264ProfileIdc stdProfileIdc = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileEXT ) == + sizeof( VkVideoEncodeH264ProfileEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264ProfileEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH264ProfileEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH264QpEXT + { + using NativeType = VkVideoEncodeH264QpEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeH264QpEXT( int32_t qpI_ = {}, int32_t qpP_ = {}, int32_t qpB_ = {} ) VULKAN_HPP_NOEXCEPT + : qpI( qpI_ ) + , qpP( qpP_ ) + , qpB( qpB_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoEncodeH264QpEXT( VideoEncodeH264QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264QpEXT( VkVideoEncodeH264QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264QpEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH264QpEXT & operator=( VideoEncodeH264QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264QpEXT & operator=( VkVideoEncodeH264QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpEXT & setQpI( int32_t qpI_ ) VULKAN_HPP_NOEXCEPT + { + qpI = qpI_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpEXT & setQpP( int32_t qpP_ ) VULKAN_HPP_NOEXCEPT + { + qpP = qpP_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpEXT & setQpB( int32_t qpB_ ) VULKAN_HPP_NOEXCEPT + { + qpB = qpB_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH264QpEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH264QpEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( qpI, qpP, qpB ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264QpEXT const & ) const = default; +# else + bool operator==( VideoEncodeH264QpEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( qpI == rhs.qpI ) && ( qpP == rhs.qpP ) && ( qpB == rhs.qpB ); +# endif + } + + bool operator!=( VideoEncodeH264QpEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + int32_t qpI = {}; + int32_t qpP = {}; + int32_t qpB = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT ) == sizeof( VkVideoEncodeH264QpEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264QpEXT is not nothrow_move_constructible!" ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH264RateControlInfoEXT + { + using NativeType = VkVideoEncodeH264RateControlInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoEncodeH264RateControlInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlInfoEXT( + uint32_t gopFrameCount_ = {}, + uint32_t idrPeriod_ = {}, + uint32_t consecutiveBFrameCount_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlStructureFlagBitsEXT rateControlStructure_ = + VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlStructureFlagBitsEXT::eUnknown, + uint8_t temporalLayerCount_ = {} ) VULKAN_HPP_NOEXCEPT + : gopFrameCount( gopFrameCount_ ) + , idrPeriod( idrPeriod_ ) + , consecutiveBFrameCount( consecutiveBFrameCount_ ) + , rateControlStructure( rateControlStructure_ ) + , temporalLayerCount( temporalLayerCount_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoEncodeH264RateControlInfoEXT( VideoEncodeH264RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264RateControlInfoEXT( VkVideoEncodeH264RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264RateControlInfoEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH264RateControlInfoEXT & + operator=( VideoEncodeH264RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264RateControlInfoEXT & operator=( VkVideoEncodeH264RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoEXT & + setGopFrameCount( uint32_t gopFrameCount_ ) VULKAN_HPP_NOEXCEPT + { + gopFrameCount = gopFrameCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoEXT & setIdrPeriod( uint32_t idrPeriod_ ) VULKAN_HPP_NOEXCEPT + { + idrPeriod = idrPeriod_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoEXT & + setConsecutiveBFrameCount( uint32_t consecutiveBFrameCount_ ) VULKAN_HPP_NOEXCEPT + { + consecutiveBFrameCount = consecutiveBFrameCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoEXT & setRateControlStructure( + VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlStructureFlagBitsEXT rateControlStructure_ ) VULKAN_HPP_NOEXCEPT + { + rateControlStructure = rateControlStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoEXT & + setTemporalLayerCount( uint8_t temporalLayerCount_ ) VULKAN_HPP_NOEXCEPT + { + temporalLayerCount = temporalLayerCount_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH264RateControlInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH264RateControlInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, gopFrameCount, idrPeriod, consecutiveBFrameCount, rateControlStructure, temporalLayerCount ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264RateControlInfoEXT const & ) const = default; +# else + bool operator==( VideoEncodeH264RateControlInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( gopFrameCount == rhs.gopFrameCount ) && + ( idrPeriod == rhs.idrPeriod ) && ( consecutiveBFrameCount == rhs.consecutiveBFrameCount ) && + ( rateControlStructure == rhs.rateControlStructure ) && ( temporalLayerCount == rhs.temporalLayerCount ); +# endif + } + + bool operator!=( VideoEncodeH264RateControlInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH264RateControlInfoEXT; + const void * pNext = {}; + uint32_t gopFrameCount = {}; + uint32_t idrPeriod = {}; + uint32_t consecutiveBFrameCount = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlStructureFlagBitsEXT rateControlStructure = + VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlStructureFlagBitsEXT::eUnknown; + uint8_t temporalLayerCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT ) == + sizeof( VkVideoEncodeH264RateControlInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH264RateControlInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH264RateControlInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH264RateControlLayerInfoEXT + { + using NativeType = VkVideoEncodeH264RateControlLayerInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoEncodeH264RateControlLayerInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlLayerInfoEXT( + uint8_t temporalLayerId_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 useInitialRcQp_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT initialRcQp_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 useMinQp_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT minQp_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 useMaxQp_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT maxQp_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 useMaxFrameSize_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT maxFrameSize_ = {} ) VULKAN_HPP_NOEXCEPT + : temporalLayerId( temporalLayerId_ ) + , useInitialRcQp( useInitialRcQp_ ) + , initialRcQp( initialRcQp_ ) + , useMinQp( useMinQp_ ) + , minQp( minQp_ ) + , useMaxQp( useMaxQp_ ) + , maxQp( maxQp_ ) + , useMaxFrameSize( useMaxFrameSize_ ) + , maxFrameSize( maxFrameSize_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlLayerInfoEXT( VideoEncodeH264RateControlLayerInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264RateControlLayerInfoEXT( VkVideoEncodeH264RateControlLayerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264RateControlLayerInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH264RateControlLayerInfoEXT & + operator=( VideoEncodeH264RateControlLayerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264RateControlLayerInfoEXT & + operator=( VkVideoEncodeH264RateControlLayerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT & + setTemporalLayerId( uint8_t temporalLayerId_ ) VULKAN_HPP_NOEXCEPT + { + temporalLayerId = temporalLayerId_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT & + setUseInitialRcQp( VULKAN_HPP_NAMESPACE::Bool32 useInitialRcQp_ ) VULKAN_HPP_NOEXCEPT + { + useInitialRcQp = useInitialRcQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT & + setInitialRcQp( VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT const & initialRcQp_ ) VULKAN_HPP_NOEXCEPT + { + initialRcQp = initialRcQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT & + setUseMinQp( VULKAN_HPP_NAMESPACE::Bool32 useMinQp_ ) VULKAN_HPP_NOEXCEPT + { + useMinQp = useMinQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT & + setMinQp( VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT const & minQp_ ) VULKAN_HPP_NOEXCEPT + { + minQp = minQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT & + setUseMaxQp( VULKAN_HPP_NAMESPACE::Bool32 useMaxQp_ ) VULKAN_HPP_NOEXCEPT + { + useMaxQp = useMaxQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT & + setMaxQp( VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT const & maxQp_ ) VULKAN_HPP_NOEXCEPT + { + maxQp = maxQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT & + setUseMaxFrameSize( VULKAN_HPP_NAMESPACE::Bool32 useMaxFrameSize_ ) VULKAN_HPP_NOEXCEPT + { + useMaxFrameSize = useMaxFrameSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoEXT & + setMaxFrameSize( VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT const & maxFrameSize_ ) VULKAN_HPP_NOEXCEPT + { + maxFrameSize = maxFrameSize_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH264RateControlLayerInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH264RateControlLayerInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + temporalLayerId, + useInitialRcQp, + initialRcQp, + useMinQp, + minQp, + useMaxQp, + maxQp, + useMaxFrameSize, + maxFrameSize ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264RateControlLayerInfoEXT const & ) const = default; +# else + bool operator==( VideoEncodeH264RateControlLayerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( temporalLayerId == rhs.temporalLayerId ) && + ( useInitialRcQp == rhs.useInitialRcQp ) && ( initialRcQp == rhs.initialRcQp ) && + ( useMinQp == rhs.useMinQp ) && ( minQp == rhs.minQp ) && ( useMaxQp == rhs.useMaxQp ) && + ( maxQp == rhs.maxQp ) && ( useMaxFrameSize == rhs.useMaxFrameSize ) && + ( maxFrameSize == rhs.maxFrameSize ); +# endif + } + + bool operator!=( VideoEncodeH264RateControlLayerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH264RateControlLayerInfoEXT; + const void * pNext = {}; + uint8_t temporalLayerId = {}; + VULKAN_HPP_NAMESPACE::Bool32 useInitialRcQp = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT initialRcQp = {}; + VULKAN_HPP_NAMESPACE::Bool32 useMinQp = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT minQp = {}; + VULKAN_HPP_NAMESPACE::Bool32 useMaxQp = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT maxQp = {}; + VULKAN_HPP_NAMESPACE::Bool32 useMaxFrameSize = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT maxFrameSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT ) == + sizeof( VkVideoEncodeH264RateControlLayerInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH264RateControlLayerInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH264RateControlLayerInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH264SessionCreateInfoEXT + { + using NativeType = VkVideoEncodeH264SessionCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoEncodeH264SessionCreateInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoEXT( + VULKAN_HPP_NAMESPACE::VideoEncodeH264CreateFlagsEXT flags_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D maxPictureSizeInMbs_ = {}, + const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , maxPictureSizeInMbs( maxPictureSizeInMbs_ ) + , pStdExtensionVersion( pStdExtensionVersion_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoEXT( VideoEncodeH264SessionCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264SessionCreateInfoEXT( VkVideoEncodeH264SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264SessionCreateInfoEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH264SessionCreateInfoEXT & + operator=( VideoEncodeH264SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264SessionCreateInfoEXT & + operator=( VkVideoEncodeH264SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH264CreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoEXT & + setMaxPictureSizeInMbs( VULKAN_HPP_NAMESPACE::Extent2D const & maxPictureSizeInMbs_ ) VULKAN_HPP_NOEXCEPT + { + maxPictureSizeInMbs = maxPictureSizeInMbs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoEXT & setPStdExtensionVersion( + const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion_ ) VULKAN_HPP_NOEXCEPT + { + pStdExtensionVersion = pStdExtensionVersion_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH264SessionCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH264SessionCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, maxPictureSizeInMbs, pStdExtensionVersion ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264SessionCreateInfoEXT const & ) const = default; +# else + bool operator==( VideoEncodeH264SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( maxPictureSizeInMbs == rhs.maxPictureSizeInMbs ) && ( pStdExtensionVersion == rhs.pStdExtensionVersion ); +# endif + } + + bool operator!=( VideoEncodeH264SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH264SessionCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH264CreateFlagsEXT flags = {}; + VULKAN_HPP_NAMESPACE::Extent2D maxPictureSizeInMbs = {}; + const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoEXT ) == + sizeof( VkVideoEncodeH264SessionCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH264SessionCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH264SessionCreateInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH264SessionParametersAddInfoEXT + { + using NativeType = VkVideoEncodeH264SessionParametersAddInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoEncodeH264SessionParametersAddInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersAddInfoEXT( + uint32_t spsStdCount_ = {}, + const StdVideoH264SequenceParameterSet * pSpsStd_ = {}, + uint32_t ppsStdCount_ = {}, + const StdVideoH264PictureParameterSet * pPpsStd_ = {} ) VULKAN_HPP_NOEXCEPT + : spsStdCount( spsStdCount_ ) + , pSpsStd( pSpsStd_ ) + , ppsStdCount( ppsStdCount_ ) + , pPpsStd( pPpsStd_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersAddInfoEXT( + VideoEncodeH264SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264SessionParametersAddInfoEXT( VkVideoEncodeH264SessionParametersAddInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : VideoEncodeH264SessionParametersAddInfoEXT( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264SessionParametersAddInfoEXT( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & spsStd_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & ppsStd_ = {} ) + : spsStdCount( static_cast( spsStd_.size() ) ) + , pSpsStd( spsStd_.data() ) + , ppsStdCount( static_cast( ppsStd_.size() ) ) + , pPpsStd( ppsStd_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH264SessionParametersAddInfoEXT & + operator=( VideoEncodeH264SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264SessionParametersAddInfoEXT & + operator=( VkVideoEncodeH264SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoEXT & + setSpsStdCount( uint32_t spsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + spsStdCount = spsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoEXT & + setPSpsStd( const StdVideoH264SequenceParameterSet * pSpsStd_ ) VULKAN_HPP_NOEXCEPT + { + pSpsStd = pSpsStd_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264SessionParametersAddInfoEXT & + setSpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & spsStd_ ) + VULKAN_HPP_NOEXCEPT + { + spsStdCount = static_cast( spsStd_.size() ); + pSpsStd = spsStd_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoEXT & + setPpsStdCount( uint32_t ppsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + ppsStdCount = ppsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoEXT & + setPPpsStd( const StdVideoH264PictureParameterSet * pPpsStd_ ) VULKAN_HPP_NOEXCEPT + { + pPpsStd = pPpsStd_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264SessionParametersAddInfoEXT & + setPpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & ppsStd_ ) + VULKAN_HPP_NOEXCEPT + { + ppsStdCount = static_cast( ppsStd_.size() ); + pPpsStd = ppsStd_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH264SessionParametersAddInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH264SessionParametersAddInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, spsStdCount, pSpsStd, ppsStdCount, pPpsStd ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264SessionParametersAddInfoEXT const & ) const = default; +# else + bool operator==( VideoEncodeH264SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( spsStdCount == rhs.spsStdCount ) && + ( pSpsStd == rhs.pSpsStd ) && ( ppsStdCount == rhs.ppsStdCount ) && ( pPpsStd == rhs.pPpsStd ); +# endif + } + + bool operator!=( VideoEncodeH264SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH264SessionParametersAddInfoEXT; + const void * pNext = {}; + uint32_t spsStdCount = {}; + const StdVideoH264SequenceParameterSet * pSpsStd = {}; + uint32_t ppsStdCount = {}; + const StdVideoH264PictureParameterSet * pPpsStd = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT ) == + sizeof( VkVideoEncodeH264SessionParametersAddInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH264SessionParametersAddInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH264SessionParametersAddInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH264SessionParametersCreateInfoEXT + { + using NativeType = VkVideoEncodeH264SessionParametersCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoEncodeH264SessionParametersCreateInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersCreateInfoEXT( + uint32_t maxSpsStdCount_ = {}, + uint32_t maxPpsStdCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT * pParametersAddInfo_ = {} ) + VULKAN_HPP_NOEXCEPT + : maxSpsStdCount( maxSpsStdCount_ ) + , maxPpsStdCount( maxPpsStdCount_ ) + , pParametersAddInfo( pParametersAddInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersCreateInfoEXT( + VideoEncodeH264SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264SessionParametersCreateInfoEXT( VkVideoEncodeH264SessionParametersCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : VideoEncodeH264SessionParametersCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH264SessionParametersCreateInfoEXT & + operator=( VideoEncodeH264SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264SessionParametersCreateInfoEXT & + operator=( VkVideoEncodeH264SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoEXT & + setMaxSpsStdCount( uint32_t maxSpsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + maxSpsStdCount = maxSpsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoEXT & + setMaxPpsStdCount( uint32_t maxPpsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + maxPpsStdCount = maxPpsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoEXT & setPParametersAddInfo( + const VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT + { + pParametersAddInfo = pParametersAddInfo_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH264SessionParametersCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH264SessionParametersCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxSpsStdCount, maxPpsStdCount, pParametersAddInfo ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264SessionParametersCreateInfoEXT const & ) const = default; +# else + bool operator==( VideoEncodeH264SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxSpsStdCount == rhs.maxSpsStdCount ) && + ( maxPpsStdCount == rhs.maxPpsStdCount ) && ( pParametersAddInfo == rhs.pParametersAddInfo ); +# endif + } + + bool operator!=( VideoEncodeH264SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH264SessionParametersCreateInfoEXT; + const void * pNext = {}; + uint32_t maxSpsStdCount = {}; + uint32_t maxPpsStdCount = {}; + const VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT * pParametersAddInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT ) == + sizeof( VkVideoEncodeH264SessionParametersCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH264SessionParametersCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH264SessionParametersCreateInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH264VclFrameInfoEXT + { + using NativeType = VkVideoEncodeH264VclFrameInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264VclFrameInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264VclFrameInfoEXT( + uint8_t refDefaultFinalList0EntryCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefDefaultFinalList0Entries_ = {}, + uint8_t refDefaultFinalList1EntryCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefDefaultFinalList1Entries_ = {}, + uint32_t naluSliceEntryCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT * pNaluSliceEntries_ = {}, + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pCurrentPictureInfo_ = {} ) VULKAN_HPP_NOEXCEPT + : refDefaultFinalList0EntryCount( refDefaultFinalList0EntryCount_ ) + , pRefDefaultFinalList0Entries( pRefDefaultFinalList0Entries_ ) + , refDefaultFinalList1EntryCount( refDefaultFinalList1EntryCount_ ) + , pRefDefaultFinalList1Entries( pRefDefaultFinalList1Entries_ ) + , naluSliceEntryCount( naluSliceEntryCount_ ) + , pNaluSliceEntries( pNaluSliceEntries_ ) + , pCurrentPictureInfo( pCurrentPictureInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoEncodeH264VclFrameInfoEXT( VideoEncodeH264VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264VclFrameInfoEXT( VkVideoEncodeH264VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264VclFrameInfoEXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264VclFrameInfoEXT( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + refDefaultFinalList0Entries_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + refDefaultFinalList1Entries_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + naluSliceEntries_ = {}, + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pCurrentPictureInfo_ = {} ) + : refDefaultFinalList0EntryCount( static_cast( refDefaultFinalList0Entries_.size() ) ) + , pRefDefaultFinalList0Entries( refDefaultFinalList0Entries_.data() ) + , refDefaultFinalList1EntryCount( static_cast( refDefaultFinalList1Entries_.size() ) ) + , pRefDefaultFinalList1Entries( refDefaultFinalList1Entries_.data() ) + , naluSliceEntryCount( static_cast( naluSliceEntries_.size() ) ) + , pNaluSliceEntries( naluSliceEntries_.data() ) + , pCurrentPictureInfo( pCurrentPictureInfo_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH264VclFrameInfoEXT & + operator=( VideoEncodeH264VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264VclFrameInfoEXT & operator=( VkVideoEncodeH264VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT & + setRefDefaultFinalList0EntryCount( uint8_t refDefaultFinalList0EntryCount_ ) VULKAN_HPP_NOEXCEPT + { + refDefaultFinalList0EntryCount = refDefaultFinalList0EntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT & setPRefDefaultFinalList0Entries( + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefDefaultFinalList0Entries_ ) VULKAN_HPP_NOEXCEPT + { + pRefDefaultFinalList0Entries = pRefDefaultFinalList0Entries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264VclFrameInfoEXT & setRefDefaultFinalList0Entries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + refDefaultFinalList0Entries_ ) VULKAN_HPP_NOEXCEPT + { + refDefaultFinalList0EntryCount = static_cast( refDefaultFinalList0Entries_.size() ); + pRefDefaultFinalList0Entries = refDefaultFinalList0Entries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT & + setRefDefaultFinalList1EntryCount( uint8_t refDefaultFinalList1EntryCount_ ) VULKAN_HPP_NOEXCEPT + { + refDefaultFinalList1EntryCount = refDefaultFinalList1EntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT & setPRefDefaultFinalList1Entries( + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefDefaultFinalList1Entries_ ) VULKAN_HPP_NOEXCEPT + { + pRefDefaultFinalList1Entries = pRefDefaultFinalList1Entries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264VclFrameInfoEXT & setRefDefaultFinalList1Entries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + refDefaultFinalList1Entries_ ) VULKAN_HPP_NOEXCEPT + { + refDefaultFinalList1EntryCount = static_cast( refDefaultFinalList1Entries_.size() ); + pRefDefaultFinalList1Entries = refDefaultFinalList1Entries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT & + setNaluSliceEntryCount( uint32_t naluSliceEntryCount_ ) VULKAN_HPP_NOEXCEPT + { + naluSliceEntryCount = naluSliceEntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT & setPNaluSliceEntries( + const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT * pNaluSliceEntries_ ) VULKAN_HPP_NOEXCEPT + { + pNaluSliceEntries = pNaluSliceEntries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264VclFrameInfoEXT & setNaluSliceEntries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + naluSliceEntries_ ) VULKAN_HPP_NOEXCEPT + { + naluSliceEntryCount = static_cast( naluSliceEntries_.size() ); + pNaluSliceEntries = naluSliceEntries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264VclFrameInfoEXT & setPCurrentPictureInfo( + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pCurrentPictureInfo_ ) VULKAN_HPP_NOEXCEPT + { + pCurrentPictureInfo = pCurrentPictureInfo_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH264VclFrameInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH264VclFrameInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + refDefaultFinalList0EntryCount, + pRefDefaultFinalList0Entries, + refDefaultFinalList1EntryCount, + pRefDefaultFinalList1Entries, + naluSliceEntryCount, + pNaluSliceEntries, + pCurrentPictureInfo ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264VclFrameInfoEXT const & ) const = default; +# else + bool operator==( VideoEncodeH264VclFrameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( refDefaultFinalList0EntryCount == rhs.refDefaultFinalList0EntryCount ) && + ( pRefDefaultFinalList0Entries == rhs.pRefDefaultFinalList0Entries ) && + ( refDefaultFinalList1EntryCount == rhs.refDefaultFinalList1EntryCount ) && + ( pRefDefaultFinalList1Entries == rhs.pRefDefaultFinalList1Entries ) && + ( naluSliceEntryCount == rhs.naluSliceEntryCount ) && ( pNaluSliceEntries == rhs.pNaluSliceEntries ) && + ( pCurrentPictureInfo == rhs.pCurrentPictureInfo ); +# endif + } + + bool operator!=( VideoEncodeH264VclFrameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH264VclFrameInfoEXT; + const void * pNext = {}; + uint8_t refDefaultFinalList0EntryCount = {}; + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefDefaultFinalList0Entries = {}; + uint8_t refDefaultFinalList1EntryCount = {}; + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pRefDefaultFinalList1Entries = {}; + uint32_t naluSliceEntryCount = {}; + const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceEXT * pNaluSliceEntries = {}; + const VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT * pCurrentPictureInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT ) == + sizeof( VkVideoEncodeH264VclFrameInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH264VclFrameInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH264VclFrameInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH265CapabilitiesEXT + { + using NativeType = VkVideoEncodeH265CapabilitiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265CapabilitiesEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT( + VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilityFlagsEXT flags_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeH265InputModeFlagsEXT inputModeFlags_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeH265OutputModeFlagsEXT outputModeFlags_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeH265CtbSizeFlagsEXT ctbSizes_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D inputImageDataAlignment_ = {}, + uint8_t maxNumL0ReferenceForP_ = {}, + uint8_t maxNumL0ReferenceForB_ = {}, + uint8_t maxNumL1Reference_ = {}, + uint8_t maxNumSubLayers_ = {}, + uint8_t qualityLevelCount_ = {}, + VULKAN_HPP_NAMESPACE::ExtensionProperties stdExtensionVersion_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , inputModeFlags( inputModeFlags_ ) + , outputModeFlags( outputModeFlags_ ) + , ctbSizes( ctbSizes_ ) + , inputImageDataAlignment( inputImageDataAlignment_ ) + , maxNumL0ReferenceForP( maxNumL0ReferenceForP_ ) + , maxNumL0ReferenceForB( maxNumL0ReferenceForB_ ) + , maxNumL1Reference( maxNumL1Reference_ ) + , maxNumSubLayers( maxNumSubLayers_ ) + , qualityLevelCount( qualityLevelCount_ ) + , stdExtensionVersion( stdExtensionVersion_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 + VideoEncodeH265CapabilitiesEXT( VideoEncodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265CapabilitiesEXT( VkVideoEncodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265CapabilitiesEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH265CapabilitiesEXT & + operator=( VideoEncodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265CapabilitiesEXT & operator=( VkVideoEncodeH265CapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT & + setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilityFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT & + setInputModeFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH265InputModeFlagsEXT inputModeFlags_ ) VULKAN_HPP_NOEXCEPT + { + inputModeFlags = inputModeFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT & + setOutputModeFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH265OutputModeFlagsEXT outputModeFlags_ ) VULKAN_HPP_NOEXCEPT + { + outputModeFlags = outputModeFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT & + setCtbSizes( VULKAN_HPP_NAMESPACE::VideoEncodeH265CtbSizeFlagsEXT ctbSizes_ ) VULKAN_HPP_NOEXCEPT + { + ctbSizes = ctbSizes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT & + setInputImageDataAlignment( VULKAN_HPP_NAMESPACE::Extent2D const & inputImageDataAlignment_ ) VULKAN_HPP_NOEXCEPT + { + inputImageDataAlignment = inputImageDataAlignment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT & + setMaxNumL0ReferenceForP( uint8_t maxNumL0ReferenceForP_ ) VULKAN_HPP_NOEXCEPT + { + maxNumL0ReferenceForP = maxNumL0ReferenceForP_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT & + setMaxNumL0ReferenceForB( uint8_t maxNumL0ReferenceForB_ ) VULKAN_HPP_NOEXCEPT + { + maxNumL0ReferenceForB = maxNumL0ReferenceForB_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT & + setMaxNumL1Reference( uint8_t maxNumL1Reference_ ) VULKAN_HPP_NOEXCEPT + { + maxNumL1Reference = maxNumL1Reference_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT & + setMaxNumSubLayers( uint8_t maxNumSubLayers_ ) VULKAN_HPP_NOEXCEPT + { + maxNumSubLayers = maxNumSubLayers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT & + setQualityLevelCount( uint8_t qualityLevelCount_ ) VULKAN_HPP_NOEXCEPT + { + qualityLevelCount = qualityLevelCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265CapabilitiesEXT & setStdExtensionVersion( + VULKAN_HPP_NAMESPACE::ExtensionProperties const & stdExtensionVersion_ ) VULKAN_HPP_NOEXCEPT + { + stdExtensionVersion = stdExtensionVersion_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH265CapabilitiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH265CapabilitiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + inputModeFlags, + outputModeFlags, + ctbSizes, + inputImageDataAlignment, + maxNumL0ReferenceForP, + maxNumL0ReferenceForB, + maxNumL1Reference, + maxNumSubLayers, + qualityLevelCount, + stdExtensionVersion ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265CapabilitiesEXT const & ) const = default; +# else + bool operator==( VideoEncodeH265CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( inputModeFlags == rhs.inputModeFlags ) && ( outputModeFlags == rhs.outputModeFlags ) && + ( ctbSizes == rhs.ctbSizes ) && ( inputImageDataAlignment == rhs.inputImageDataAlignment ) && + ( maxNumL0ReferenceForP == rhs.maxNumL0ReferenceForP ) && + ( maxNumL0ReferenceForB == rhs.maxNumL0ReferenceForB ) && ( maxNumL1Reference == rhs.maxNumL1Reference ) && + ( maxNumSubLayers == rhs.maxNumSubLayers ) && ( qualityLevelCount == rhs.qualityLevelCount ) && + ( stdExtensionVersion == rhs.stdExtensionVersion ); +# endif + } + + bool operator!=( VideoEncodeH265CapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH265CapabilitiesEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilityFlagsEXT flags = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH265InputModeFlagsEXT inputModeFlags = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH265OutputModeFlagsEXT outputModeFlags = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH265CtbSizeFlagsEXT ctbSizes = {}; + VULKAN_HPP_NAMESPACE::Extent2D inputImageDataAlignment = {}; + uint8_t maxNumL0ReferenceForP = {}; + uint8_t maxNumL0ReferenceForB = {}; + uint8_t maxNumL1Reference = {}; + uint8_t maxNumSubLayers = {}; + uint8_t qualityLevelCount = {}; + VULKAN_HPP_NAMESPACE::ExtensionProperties stdExtensionVersion = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT ) == + sizeof( VkVideoEncodeH265CapabilitiesEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH265CapabilitiesEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH265CapabilitiesEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH265DpbSlotInfoEXT + { + using NativeType = VkVideoEncodeH265DpbSlotInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265DpbSlotInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265DpbSlotInfoEXT( + int8_t slotIndex_ = {}, const StdVideoEncodeH265ReferenceInfo * pStdReferenceInfo_ = {} ) VULKAN_HPP_NOEXCEPT + : slotIndex( slotIndex_ ) + , pStdReferenceInfo( pStdReferenceInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoEncodeH265DpbSlotInfoEXT( VideoEncodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265DpbSlotInfoEXT( VkVideoEncodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265DpbSlotInfoEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH265DpbSlotInfoEXT & + operator=( VideoEncodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265DpbSlotInfoEXT & operator=( VkVideoEncodeH265DpbSlotInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265DpbSlotInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265DpbSlotInfoEXT & setSlotIndex( int8_t slotIndex_ ) VULKAN_HPP_NOEXCEPT + { + slotIndex = slotIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265DpbSlotInfoEXT & + setPStdReferenceInfo( const StdVideoEncodeH265ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT + { + pStdReferenceInfo = pStdReferenceInfo_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH265DpbSlotInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH265DpbSlotInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, slotIndex, pStdReferenceInfo ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265DpbSlotInfoEXT const & ) const = default; +# else + bool operator==( VideoEncodeH265DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( slotIndex == rhs.slotIndex ) && + ( pStdReferenceInfo == rhs.pStdReferenceInfo ); +# endif + } + + bool operator!=( VideoEncodeH265DpbSlotInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH265DpbSlotInfoEXT; + const void * pNext = {}; + int8_t slotIndex = {}; + const StdVideoEncodeH265ReferenceInfo * pStdReferenceInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT ) == + sizeof( VkVideoEncodeH265DpbSlotInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH265DpbSlotInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH265DpbSlotInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH265EmitPictureParametersEXT + { + using NativeType = VkVideoEncodeH265EmitPictureParametersEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoEncodeH265EmitPictureParametersEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeH265EmitPictureParametersEXT( uint8_t vpsId_ = {}, + uint8_t spsId_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 emitVpsEnable_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 emitSpsEnable_ = {}, + uint32_t ppsIdEntryCount_ = {}, + const uint8_t * ppsIdEntries_ = {} ) VULKAN_HPP_NOEXCEPT + : vpsId( vpsId_ ) + , spsId( spsId_ ) + , emitVpsEnable( emitVpsEnable_ ) + , emitSpsEnable( emitSpsEnable_ ) + , ppsIdEntryCount( ppsIdEntryCount_ ) + , ppsIdEntries( ppsIdEntries_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoEncodeH265EmitPictureParametersEXT( VideoEncodeH265EmitPictureParametersEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265EmitPictureParametersEXT( VkVideoEncodeH265EmitPictureParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265EmitPictureParametersEXT( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265EmitPictureParametersEXT( + uint8_t vpsId_, + uint8_t spsId_, + VULKAN_HPP_NAMESPACE::Bool32 emitVpsEnable_, + VULKAN_HPP_NAMESPACE::Bool32 emitSpsEnable_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & psIdEntries_ ) + : vpsId( vpsId_ ) + , spsId( spsId_ ) + , emitVpsEnable( emitVpsEnable_ ) + , emitSpsEnable( emitSpsEnable_ ) + , ppsIdEntryCount( static_cast( psIdEntries_.size() ) ) + , ppsIdEntries( psIdEntries_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH265EmitPictureParametersEXT & + operator=( VideoEncodeH265EmitPictureParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265EmitPictureParametersEXT & + operator=( VkVideoEncodeH265EmitPictureParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265EmitPictureParametersEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265EmitPictureParametersEXT & setVpsId( uint8_t vpsId_ ) VULKAN_HPP_NOEXCEPT + { + vpsId = vpsId_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265EmitPictureParametersEXT & setSpsId( uint8_t spsId_ ) VULKAN_HPP_NOEXCEPT + { + spsId = spsId_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265EmitPictureParametersEXT & + setEmitVpsEnable( VULKAN_HPP_NAMESPACE::Bool32 emitVpsEnable_ ) VULKAN_HPP_NOEXCEPT + { + emitVpsEnable = emitVpsEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265EmitPictureParametersEXT & + setEmitSpsEnable( VULKAN_HPP_NAMESPACE::Bool32 emitSpsEnable_ ) VULKAN_HPP_NOEXCEPT + { + emitSpsEnable = emitSpsEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265EmitPictureParametersEXT & + setPpsIdEntryCount( uint32_t ppsIdEntryCount_ ) VULKAN_HPP_NOEXCEPT + { + ppsIdEntryCount = ppsIdEntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265EmitPictureParametersEXT & + setPpsIdEntries( const uint8_t * ppsIdEntries_ ) VULKAN_HPP_NOEXCEPT + { + ppsIdEntries = ppsIdEntries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265EmitPictureParametersEXT & setPsIdEntries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & psIdEntries_ ) VULKAN_HPP_NOEXCEPT + { + ppsIdEntryCount = static_cast( psIdEntries_.size() ); + ppsIdEntries = psIdEntries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH265EmitPictureParametersEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH265EmitPictureParametersEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vpsId, spsId, emitVpsEnable, emitSpsEnable, ppsIdEntryCount, ppsIdEntries ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265EmitPictureParametersEXT const & ) const = default; +# else + bool operator==( VideoEncodeH265EmitPictureParametersEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vpsId == rhs.vpsId ) && ( spsId == rhs.spsId ) && + ( emitVpsEnable == rhs.emitVpsEnable ) && ( emitSpsEnable == rhs.emitSpsEnable ) && + ( ppsIdEntryCount == rhs.ppsIdEntryCount ) && ( ppsIdEntries == rhs.ppsIdEntries ); +# endif + } + + bool operator!=( VideoEncodeH265EmitPictureParametersEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH265EmitPictureParametersEXT; + const void * pNext = {}; + uint8_t vpsId = {}; + uint8_t spsId = {}; + VULKAN_HPP_NAMESPACE::Bool32 emitVpsEnable = {}; + VULKAN_HPP_NAMESPACE::Bool32 emitSpsEnable = {}; + uint32_t ppsIdEntryCount = {}; + const uint8_t * ppsIdEntries = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersEXT ) == + sizeof( VkVideoEncodeH265EmitPictureParametersEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH265EmitPictureParametersEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH265EmitPictureParametersEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH265FrameSizeEXT + { + using NativeType = VkVideoEncodeH265FrameSizeEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265FrameSizeEXT( uint32_t frameISize_ = {}, + uint32_t framePSize_ = {}, + uint32_t frameBSize_ = {} ) VULKAN_HPP_NOEXCEPT + : frameISize( frameISize_ ) + , framePSize( framePSize_ ) + , frameBSize( frameBSize_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoEncodeH265FrameSizeEXT( VideoEncodeH265FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265FrameSizeEXT( VkVideoEncodeH265FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265FrameSizeEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH265FrameSizeEXT & operator=( VideoEncodeH265FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265FrameSizeEXT & operator=( VkVideoEncodeH265FrameSizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeEXT & setFrameISize( uint32_t frameISize_ ) VULKAN_HPP_NOEXCEPT + { + frameISize = frameISize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeEXT & setFramePSize( uint32_t framePSize_ ) VULKAN_HPP_NOEXCEPT + { + framePSize = framePSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeEXT & setFrameBSize( uint32_t frameBSize_ ) VULKAN_HPP_NOEXCEPT + { + frameBSize = frameBSize_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH265FrameSizeEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH265FrameSizeEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( frameISize, framePSize, frameBSize ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265FrameSizeEXT const & ) const = default; +# else + bool operator==( VideoEncodeH265FrameSizeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( frameISize == rhs.frameISize ) && ( framePSize == rhs.framePSize ) && ( frameBSize == rhs.frameBSize ); +# endif + } + + bool operator!=( VideoEncodeH265FrameSizeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + uint32_t frameISize = {}; + uint32_t framePSize = {}; + uint32_t frameBSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT ) == + sizeof( VkVideoEncodeH265FrameSizeEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH265FrameSizeEXT is not nothrow_move_constructible!" ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH265ReferenceListsEXT + { + using NativeType = VkVideoEncodeH265ReferenceListsEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265ReferenceListsEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265ReferenceListsEXT( + uint8_t referenceList0EntryCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT * pReferenceList0Entries_ = {}, + uint8_t referenceList1EntryCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT * pReferenceList1Entries_ = {}, + const StdVideoEncodeH265ReferenceModifications * pReferenceModifications_ = {} ) VULKAN_HPP_NOEXCEPT + : referenceList0EntryCount( referenceList0EntryCount_ ) + , pReferenceList0Entries( pReferenceList0Entries_ ) + , referenceList1EntryCount( referenceList1EntryCount_ ) + , pReferenceList1Entries( pReferenceList1Entries_ ) + , pReferenceModifications( pReferenceModifications_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoEncodeH265ReferenceListsEXT( VideoEncodeH265ReferenceListsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265ReferenceListsEXT( VkVideoEncodeH265ReferenceListsEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265ReferenceListsEXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265ReferenceListsEXT( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + referenceList0Entries_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + referenceList1Entries_ = {}, + const StdVideoEncodeH265ReferenceModifications * pReferenceModifications_ = {} ) + : referenceList0EntryCount( static_cast( referenceList0Entries_.size() ) ) + , pReferenceList0Entries( referenceList0Entries_.data() ) + , referenceList1EntryCount( static_cast( referenceList1Entries_.size() ) ) + , pReferenceList1Entries( referenceList1Entries_.data() ) + , pReferenceModifications( pReferenceModifications_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH265ReferenceListsEXT & + operator=( VideoEncodeH265ReferenceListsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265ReferenceListsEXT & operator=( VkVideoEncodeH265ReferenceListsEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ReferenceListsEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ReferenceListsEXT & + setReferenceList0EntryCount( uint8_t referenceList0EntryCount_ ) VULKAN_HPP_NOEXCEPT + { + referenceList0EntryCount = referenceList0EntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ReferenceListsEXT & setPReferenceList0Entries( + const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT * pReferenceList0Entries_ ) VULKAN_HPP_NOEXCEPT + { + pReferenceList0Entries = pReferenceList0Entries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265ReferenceListsEXT & setReferenceList0Entries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + referenceList0Entries_ ) VULKAN_HPP_NOEXCEPT + { + referenceList0EntryCount = static_cast( referenceList0Entries_.size() ); + pReferenceList0Entries = referenceList0Entries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ReferenceListsEXT & + setReferenceList1EntryCount( uint8_t referenceList1EntryCount_ ) VULKAN_HPP_NOEXCEPT + { + referenceList1EntryCount = referenceList1EntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ReferenceListsEXT & setPReferenceList1Entries( + const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT * pReferenceList1Entries_ ) VULKAN_HPP_NOEXCEPT + { + pReferenceList1Entries = pReferenceList1Entries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265ReferenceListsEXT & setReferenceList1Entries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + referenceList1Entries_ ) VULKAN_HPP_NOEXCEPT + { + referenceList1EntryCount = static_cast( referenceList1Entries_.size() ); + pReferenceList1Entries = referenceList1Entries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ReferenceListsEXT & setPReferenceModifications( + const StdVideoEncodeH265ReferenceModifications * pReferenceModifications_ ) VULKAN_HPP_NOEXCEPT + { + pReferenceModifications = pReferenceModifications_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH265ReferenceListsEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH265ReferenceListsEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + referenceList0EntryCount, + pReferenceList0Entries, + referenceList1EntryCount, + pReferenceList1Entries, + pReferenceModifications ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265ReferenceListsEXT const & ) const = default; +# else + bool operator==( VideoEncodeH265ReferenceListsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( referenceList0EntryCount == rhs.referenceList0EntryCount ) && + ( pReferenceList0Entries == rhs.pReferenceList0Entries ) && + ( referenceList1EntryCount == rhs.referenceList1EntryCount ) && + ( pReferenceList1Entries == rhs.pReferenceList1Entries ) && + ( pReferenceModifications == rhs.pReferenceModifications ); +# endif + } + + bool operator!=( VideoEncodeH265ReferenceListsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH265ReferenceListsEXT; + const void * pNext = {}; + uint8_t referenceList0EntryCount = {}; + const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT * pReferenceList0Entries = {}; + uint8_t referenceList1EntryCount = {}; + const VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT * pReferenceList1Entries = {}; + const StdVideoEncodeH265ReferenceModifications * pReferenceModifications = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT ) == + sizeof( VkVideoEncodeH265ReferenceListsEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH265ReferenceListsEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH265ReferenceListsEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH265NaluSliceEXT + { + using NativeType = VkVideoEncodeH265NaluSliceEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265NaluSliceEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265NaluSliceEXT( + uint32_t ctbCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * pReferenceFinalLists_ = {}, + const StdVideoEncodeH265SliceHeader * pSliceHeaderStd_ = {} ) VULKAN_HPP_NOEXCEPT + : ctbCount( ctbCount_ ) + , pReferenceFinalLists( pReferenceFinalLists_ ) + , pSliceHeaderStd( pSliceHeaderStd_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoEncodeH265NaluSliceEXT( VideoEncodeH265NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265NaluSliceEXT( VkVideoEncodeH265NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265NaluSliceEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH265NaluSliceEXT & operator=( VideoEncodeH265NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265NaluSliceEXT & operator=( VkVideoEncodeH265NaluSliceEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceEXT & setCtbCount( uint32_t ctbCount_ ) VULKAN_HPP_NOEXCEPT + { + ctbCount = ctbCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceEXT & setPReferenceFinalLists( + const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * pReferenceFinalLists_ ) VULKAN_HPP_NOEXCEPT + { + pReferenceFinalLists = pReferenceFinalLists_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceEXT & + setPSliceHeaderStd( const StdVideoEncodeH265SliceHeader * pSliceHeaderStd_ ) VULKAN_HPP_NOEXCEPT + { + pSliceHeaderStd = pSliceHeaderStd_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH265NaluSliceEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH265NaluSliceEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, ctbCount, pReferenceFinalLists, pSliceHeaderStd ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265NaluSliceEXT const & ) const = default; +# else + bool operator==( VideoEncodeH265NaluSliceEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ctbCount == rhs.ctbCount ) && + ( pReferenceFinalLists == rhs.pReferenceFinalLists ) && ( pSliceHeaderStd == rhs.pSliceHeaderStd ); +# endif + } + + bool operator!=( VideoEncodeH265NaluSliceEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH265NaluSliceEXT; + const void * pNext = {}; + uint32_t ctbCount = {}; + const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * pReferenceFinalLists = {}; + const StdVideoEncodeH265SliceHeader * pSliceHeaderStd = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT ) == + sizeof( VkVideoEncodeH265NaluSliceEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH265NaluSliceEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH265NaluSliceEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH265ProfileEXT + { + using NativeType = VkVideoEncodeH265ProfileEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265ProfileEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265ProfileEXT( StdVideoH265ProfileIdc stdProfileIdc_ = {} ) VULKAN_HPP_NOEXCEPT + : stdProfileIdc( stdProfileIdc_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoEncodeH265ProfileEXT( VideoEncodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265ProfileEXT( VkVideoEncodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265ProfileEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH265ProfileEXT & operator=( VideoEncodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265ProfileEXT & operator=( VkVideoEncodeH265ProfileEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ProfileEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ProfileEXT & + setStdProfileIdc( StdVideoH265ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT + { + stdProfileIdc = stdProfileIdc_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH265ProfileEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH265ProfileEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stdProfileIdc ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoEncodeH265ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( VideoEncodeH265ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ) == 0 ); + } + + bool operator!=( VideoEncodeH265ProfileEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH265ProfileEXT; + const void * pNext = {}; + StdVideoH265ProfileIdc stdProfileIdc = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileEXT ) == + sizeof( VkVideoEncodeH265ProfileEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265ProfileEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH265ProfileEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH265QpEXT + { + using NativeType = VkVideoEncodeH265QpEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeH265QpEXT( int32_t qpI_ = {}, int32_t qpP_ = {}, int32_t qpB_ = {} ) VULKAN_HPP_NOEXCEPT + : qpI( qpI_ ) + , qpP( qpP_ ) + , qpB( qpB_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoEncodeH265QpEXT( VideoEncodeH265QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265QpEXT( VkVideoEncodeH265QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265QpEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH265QpEXT & operator=( VideoEncodeH265QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265QpEXT & operator=( VkVideoEncodeH265QpEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpEXT & setQpI( int32_t qpI_ ) VULKAN_HPP_NOEXCEPT + { + qpI = qpI_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpEXT & setQpP( int32_t qpP_ ) VULKAN_HPP_NOEXCEPT + { + qpP = qpP_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpEXT & setQpB( int32_t qpB_ ) VULKAN_HPP_NOEXCEPT + { + qpB = qpB_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH265QpEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH265QpEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( qpI, qpP, qpB ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265QpEXT const & ) const = default; +# else + bool operator==( VideoEncodeH265QpEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( qpI == rhs.qpI ) && ( qpP == rhs.qpP ) && ( qpB == rhs.qpB ); +# endif + } + + bool operator!=( VideoEncodeH265QpEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + int32_t qpI = {}; + int32_t qpP = {}; + int32_t qpB = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT ) == sizeof( VkVideoEncodeH265QpEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265QpEXT is not nothrow_move_constructible!" ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH265RateControlInfoEXT + { + using NativeType = VkVideoEncodeH265RateControlInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoEncodeH265RateControlInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlInfoEXT( + uint32_t gopFrameCount_ = {}, + uint32_t idrPeriod_ = {}, + uint32_t consecutiveBFrameCount_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlStructureFlagBitsEXT rateControlStructure_ = + VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlStructureFlagBitsEXT::eUnknown, + uint8_t subLayerCount_ = {} ) VULKAN_HPP_NOEXCEPT + : gopFrameCount( gopFrameCount_ ) + , idrPeriod( idrPeriod_ ) + , consecutiveBFrameCount( consecutiveBFrameCount_ ) + , rateControlStructure( rateControlStructure_ ) + , subLayerCount( subLayerCount_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoEncodeH265RateControlInfoEXT( VideoEncodeH265RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265RateControlInfoEXT( VkVideoEncodeH265RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265RateControlInfoEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH265RateControlInfoEXT & + operator=( VideoEncodeH265RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265RateControlInfoEXT & operator=( VkVideoEncodeH265RateControlInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoEXT & + setGopFrameCount( uint32_t gopFrameCount_ ) VULKAN_HPP_NOEXCEPT + { + gopFrameCount = gopFrameCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoEXT & setIdrPeriod( uint32_t idrPeriod_ ) VULKAN_HPP_NOEXCEPT + { + idrPeriod = idrPeriod_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoEXT & + setConsecutiveBFrameCount( uint32_t consecutiveBFrameCount_ ) VULKAN_HPP_NOEXCEPT + { + consecutiveBFrameCount = consecutiveBFrameCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoEXT & setRateControlStructure( + VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlStructureFlagBitsEXT rateControlStructure_ ) VULKAN_HPP_NOEXCEPT + { + rateControlStructure = rateControlStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoEXT & + setSubLayerCount( uint8_t subLayerCount_ ) VULKAN_HPP_NOEXCEPT + { + subLayerCount = subLayerCount_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH265RateControlInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH265RateControlInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, gopFrameCount, idrPeriod, consecutiveBFrameCount, rateControlStructure, subLayerCount ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265RateControlInfoEXT const & ) const = default; +# else + bool operator==( VideoEncodeH265RateControlInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( gopFrameCount == rhs.gopFrameCount ) && + ( idrPeriod == rhs.idrPeriod ) && ( consecutiveBFrameCount == rhs.consecutiveBFrameCount ) && + ( rateControlStructure == rhs.rateControlStructure ) && ( subLayerCount == rhs.subLayerCount ); +# endif + } + + bool operator!=( VideoEncodeH265RateControlInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH265RateControlInfoEXT; + const void * pNext = {}; + uint32_t gopFrameCount = {}; + uint32_t idrPeriod = {}; + uint32_t consecutiveBFrameCount = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlStructureFlagBitsEXT rateControlStructure = + VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlStructureFlagBitsEXT::eUnknown; + uint8_t subLayerCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT ) == + sizeof( VkVideoEncodeH265RateControlInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH265RateControlInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH265RateControlInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH265RateControlLayerInfoEXT + { + using NativeType = VkVideoEncodeH265RateControlLayerInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoEncodeH265RateControlLayerInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlLayerInfoEXT( + uint8_t temporalId_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 useInitialRcQp_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT initialRcQp_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 useMinQp_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT minQp_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 useMaxQp_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT maxQp_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 useMaxFrameSize_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT maxFrameSize_ = {} ) VULKAN_HPP_NOEXCEPT + : temporalId( temporalId_ ) + , useInitialRcQp( useInitialRcQp_ ) + , initialRcQp( initialRcQp_ ) + , useMinQp( useMinQp_ ) + , minQp( minQp_ ) + , useMaxQp( useMaxQp_ ) + , maxQp( maxQp_ ) + , useMaxFrameSize( useMaxFrameSize_ ) + , maxFrameSize( maxFrameSize_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlLayerInfoEXT( VideoEncodeH265RateControlLayerInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265RateControlLayerInfoEXT( VkVideoEncodeH265RateControlLayerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265RateControlLayerInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH265RateControlLayerInfoEXT & + operator=( VideoEncodeH265RateControlLayerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265RateControlLayerInfoEXT & + operator=( VkVideoEncodeH265RateControlLayerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT & + setTemporalId( uint8_t temporalId_ ) VULKAN_HPP_NOEXCEPT + { + temporalId = temporalId_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT & + setUseInitialRcQp( VULKAN_HPP_NAMESPACE::Bool32 useInitialRcQp_ ) VULKAN_HPP_NOEXCEPT + { + useInitialRcQp = useInitialRcQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT & + setInitialRcQp( VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT const & initialRcQp_ ) VULKAN_HPP_NOEXCEPT + { + initialRcQp = initialRcQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT & + setUseMinQp( VULKAN_HPP_NAMESPACE::Bool32 useMinQp_ ) VULKAN_HPP_NOEXCEPT + { + useMinQp = useMinQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT & + setMinQp( VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT const & minQp_ ) VULKAN_HPP_NOEXCEPT + { + minQp = minQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT & + setUseMaxQp( VULKAN_HPP_NAMESPACE::Bool32 useMaxQp_ ) VULKAN_HPP_NOEXCEPT + { + useMaxQp = useMaxQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT & + setMaxQp( VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT const & maxQp_ ) VULKAN_HPP_NOEXCEPT + { + maxQp = maxQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT & + setUseMaxFrameSize( VULKAN_HPP_NAMESPACE::Bool32 useMaxFrameSize_ ) VULKAN_HPP_NOEXCEPT + { + useMaxFrameSize = useMaxFrameSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoEXT & + setMaxFrameSize( VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT const & maxFrameSize_ ) VULKAN_HPP_NOEXCEPT + { + maxFrameSize = maxFrameSize_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH265RateControlLayerInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH265RateControlLayerInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + temporalId, + useInitialRcQp, + initialRcQp, + useMinQp, + minQp, + useMaxQp, + maxQp, + useMaxFrameSize, + maxFrameSize ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265RateControlLayerInfoEXT const & ) const = default; +# else + bool operator==( VideoEncodeH265RateControlLayerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( temporalId == rhs.temporalId ) && + ( useInitialRcQp == rhs.useInitialRcQp ) && ( initialRcQp == rhs.initialRcQp ) && + ( useMinQp == rhs.useMinQp ) && ( minQp == rhs.minQp ) && ( useMaxQp == rhs.useMaxQp ) && + ( maxQp == rhs.maxQp ) && ( useMaxFrameSize == rhs.useMaxFrameSize ) && + ( maxFrameSize == rhs.maxFrameSize ); +# endif + } + + bool operator!=( VideoEncodeH265RateControlLayerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH265RateControlLayerInfoEXT; + const void * pNext = {}; + uint8_t temporalId = {}; + VULKAN_HPP_NAMESPACE::Bool32 useInitialRcQp = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT initialRcQp = {}; + VULKAN_HPP_NAMESPACE::Bool32 useMinQp = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT minQp = {}; + VULKAN_HPP_NAMESPACE::Bool32 useMaxQp = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT maxQp = {}; + VULKAN_HPP_NAMESPACE::Bool32 useMaxFrameSize = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT maxFrameSize = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT ) == + sizeof( VkVideoEncodeH265RateControlLayerInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH265RateControlLayerInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH265RateControlLayerInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH265SessionCreateInfoEXT + { + using NativeType = VkVideoEncodeH265SessionCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoEncodeH265SessionCreateInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoEXT( + VULKAN_HPP_NAMESPACE::VideoEncodeH265CreateFlagsEXT flags_ = {}, + const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , pStdExtensionVersion( pStdExtensionVersion_ ) + {} + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoEXT( VideoEncodeH265SessionCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265SessionCreateInfoEXT( VkVideoEncodeH265SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265SessionCreateInfoEXT( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH265SessionCreateInfoEXT & + operator=( VideoEncodeH265SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265SessionCreateInfoEXT & + operator=( VkVideoEncodeH265SessionCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH265CreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoEXT & setPStdExtensionVersion( + const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion_ ) VULKAN_HPP_NOEXCEPT + { + pStdExtensionVersion = pStdExtensionVersion_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH265SessionCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH265SessionCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pStdExtensionVersion ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265SessionCreateInfoEXT const & ) const = default; +# else + bool operator==( VideoEncodeH265SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( pStdExtensionVersion == rhs.pStdExtensionVersion ); +# endif + } + + bool operator!=( VideoEncodeH265SessionCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH265SessionCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeH265CreateFlagsEXT flags = {}; + const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdExtensionVersion = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoEXT ) == + sizeof( VkVideoEncodeH265SessionCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH265SessionCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH265SessionCreateInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH265SessionParametersAddInfoEXT + { + using NativeType = VkVideoEncodeH265SessionParametersAddInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoEncodeH265SessionParametersAddInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersAddInfoEXT( + uint32_t vpsStdCount_ = {}, + const StdVideoH265VideoParameterSet * pVpsStd_ = {}, + uint32_t spsStdCount_ = {}, + const StdVideoH265SequenceParameterSet * pSpsStd_ = {}, + uint32_t ppsStdCount_ = {}, + const StdVideoH265PictureParameterSet * pPpsStd_ = {} ) VULKAN_HPP_NOEXCEPT + : vpsStdCount( vpsStdCount_ ) + , pVpsStd( pVpsStd_ ) + , spsStdCount( spsStdCount_ ) + , pSpsStd( pSpsStd_ ) + , ppsStdCount( ppsStdCount_ ) + , pPpsStd( pPpsStd_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersAddInfoEXT( + VideoEncodeH265SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265SessionParametersAddInfoEXT( VkVideoEncodeH265SessionParametersAddInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : VideoEncodeH265SessionParametersAddInfoEXT( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265SessionParametersAddInfoEXT( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & vpsStd_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & spsStd_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & ppsStd_ = {} ) + : vpsStdCount( static_cast( vpsStd_.size() ) ) + , pVpsStd( vpsStd_.data() ) + , spsStdCount( static_cast( spsStd_.size() ) ) + , pSpsStd( spsStd_.data() ) + , ppsStdCount( static_cast( ppsStd_.size() ) ) + , pPpsStd( ppsStd_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH265SessionParametersAddInfoEXT & + operator=( VideoEncodeH265SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265SessionParametersAddInfoEXT & + operator=( VkVideoEncodeH265SessionParametersAddInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoEXT & + setVpsStdCount( uint32_t vpsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + vpsStdCount = vpsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoEXT & + setPVpsStd( const StdVideoH265VideoParameterSet * pVpsStd_ ) VULKAN_HPP_NOEXCEPT + { + pVpsStd = pVpsStd_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265SessionParametersAddInfoEXT & + setVpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & vpsStd_ ) + VULKAN_HPP_NOEXCEPT + { + vpsStdCount = static_cast( vpsStd_.size() ); + pVpsStd = vpsStd_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoEXT & + setSpsStdCount( uint32_t spsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + spsStdCount = spsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoEXT & + setPSpsStd( const StdVideoH265SequenceParameterSet * pSpsStd_ ) VULKAN_HPP_NOEXCEPT + { + pSpsStd = pSpsStd_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265SessionParametersAddInfoEXT & + setSpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & spsStd_ ) + VULKAN_HPP_NOEXCEPT + { + spsStdCount = static_cast( spsStd_.size() ); + pSpsStd = spsStd_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoEXT & + setPpsStdCount( uint32_t ppsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + ppsStdCount = ppsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoEXT & + setPPpsStd( const StdVideoH265PictureParameterSet * pPpsStd_ ) VULKAN_HPP_NOEXCEPT + { + pPpsStd = pPpsStd_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265SessionParametersAddInfoEXT & + setPpsStd( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & ppsStd_ ) + VULKAN_HPP_NOEXCEPT + { + ppsStdCount = static_cast( ppsStd_.size() ); + pPpsStd = ppsStd_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH265SessionParametersAddInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH265SessionParametersAddInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vpsStdCount, pVpsStd, spsStdCount, pSpsStd, ppsStdCount, pPpsStd ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265SessionParametersAddInfoEXT const & ) const = default; +# else + bool operator==( VideoEncodeH265SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vpsStdCount == rhs.vpsStdCount ) && + ( pVpsStd == rhs.pVpsStd ) && ( spsStdCount == rhs.spsStdCount ) && ( pSpsStd == rhs.pSpsStd ) && + ( ppsStdCount == rhs.ppsStdCount ) && ( pPpsStd == rhs.pPpsStd ); +# endif + } + + bool operator!=( VideoEncodeH265SessionParametersAddInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH265SessionParametersAddInfoEXT; + const void * pNext = {}; + uint32_t vpsStdCount = {}; + const StdVideoH265VideoParameterSet * pVpsStd = {}; + uint32_t spsStdCount = {}; + const StdVideoH265SequenceParameterSet * pSpsStd = {}; + uint32_t ppsStdCount = {}; + const StdVideoH265PictureParameterSet * pPpsStd = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT ) == + sizeof( VkVideoEncodeH265SessionParametersAddInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH265SessionParametersAddInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH265SessionParametersAddInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH265SessionParametersCreateInfoEXT + { + using NativeType = VkVideoEncodeH265SessionParametersCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoEncodeH265SessionParametersCreateInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersCreateInfoEXT( + uint32_t maxVpsStdCount_ = {}, + uint32_t maxSpsStdCount_ = {}, + uint32_t maxPpsStdCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT * pParametersAddInfo_ = {} ) + VULKAN_HPP_NOEXCEPT + : maxVpsStdCount( maxVpsStdCount_ ) + , maxSpsStdCount( maxSpsStdCount_ ) + , maxPpsStdCount( maxPpsStdCount_ ) + , pParametersAddInfo( pParametersAddInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersCreateInfoEXT( + VideoEncodeH265SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265SessionParametersCreateInfoEXT( VkVideoEncodeH265SessionParametersCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT + : VideoEncodeH265SessionParametersCreateInfoEXT( + *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH265SessionParametersCreateInfoEXT & + operator=( VideoEncodeH265SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265SessionParametersCreateInfoEXT & + operator=( VkVideoEncodeH265SessionParametersCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoEXT & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoEXT & + setMaxVpsStdCount( uint32_t maxVpsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + maxVpsStdCount = maxVpsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoEXT & + setMaxSpsStdCount( uint32_t maxSpsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + maxSpsStdCount = maxSpsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoEXT & + setMaxPpsStdCount( uint32_t maxPpsStdCount_ ) VULKAN_HPP_NOEXCEPT + { + maxPpsStdCount = maxPpsStdCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoEXT & setPParametersAddInfo( + const VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT + { + pParametersAddInfo = pParametersAddInfo_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH265SessionParametersCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH265SessionParametersCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxVpsStdCount, maxSpsStdCount, maxPpsStdCount, pParametersAddInfo ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265SessionParametersCreateInfoEXT const & ) const = default; +# else + bool operator==( VideoEncodeH265SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxVpsStdCount == rhs.maxVpsStdCount ) && + ( maxSpsStdCount == rhs.maxSpsStdCount ) && ( maxPpsStdCount == rhs.maxPpsStdCount ) && + ( pParametersAddInfo == rhs.pParametersAddInfo ); +# endif + } + + bool operator!=( VideoEncodeH265SessionParametersCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH265SessionParametersCreateInfoEXT; + const void * pNext = {}; + uint32_t maxVpsStdCount = {}; + uint32_t maxSpsStdCount = {}; + uint32_t maxPpsStdCount = {}; + const VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT * pParametersAddInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT ) == + sizeof( VkVideoEncodeH265SessionParametersCreateInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH265SessionParametersCreateInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH265SessionParametersCreateInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeH265VclFrameInfoEXT + { + using NativeType = VkVideoEncodeH265VclFrameInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265VclFrameInfoEXT; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265VclFrameInfoEXT( + const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * pReferenceFinalLists_ = {}, + uint32_t naluSliceEntryCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT * pNaluSliceEntries_ = {}, + const StdVideoEncodeH265PictureInfo * pCurrentPictureInfo_ = {} ) VULKAN_HPP_NOEXCEPT + : pReferenceFinalLists( pReferenceFinalLists_ ) + , naluSliceEntryCount( naluSliceEntryCount_ ) + , pNaluSliceEntries( pNaluSliceEntries_ ) + , pCurrentPictureInfo( pCurrentPictureInfo_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoEncodeH265VclFrameInfoEXT( VideoEncodeH265VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265VclFrameInfoEXT( VkVideoEncodeH265VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265VclFrameInfoEXT( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265VclFrameInfoEXT( + const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * pReferenceFinalLists_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + naluSliceEntries_, + const StdVideoEncodeH265PictureInfo * pCurrentPictureInfo_ = {} ) + : pReferenceFinalLists( pReferenceFinalLists_ ) + , naluSliceEntryCount( static_cast( naluSliceEntries_.size() ) ) + , pNaluSliceEntries( naluSliceEntries_.data() ) + , pCurrentPictureInfo( pCurrentPictureInfo_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeH265VclFrameInfoEXT & + operator=( VideoEncodeH265VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265VclFrameInfoEXT & operator=( VkVideoEncodeH265VclFrameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265VclFrameInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265VclFrameInfoEXT & setPReferenceFinalLists( + const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * pReferenceFinalLists_ ) VULKAN_HPP_NOEXCEPT + { + pReferenceFinalLists = pReferenceFinalLists_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265VclFrameInfoEXT & + setNaluSliceEntryCount( uint32_t naluSliceEntryCount_ ) VULKAN_HPP_NOEXCEPT + { + naluSliceEntryCount = naluSliceEntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265VclFrameInfoEXT & setPNaluSliceEntries( + const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT * pNaluSliceEntries_ ) VULKAN_HPP_NOEXCEPT + { + pNaluSliceEntries = pNaluSliceEntries_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265VclFrameInfoEXT & setNaluSliceEntries( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + naluSliceEntries_ ) VULKAN_HPP_NOEXCEPT + { + naluSliceEntryCount = static_cast( naluSliceEntries_.size() ); + pNaluSliceEntries = naluSliceEntries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265VclFrameInfoEXT & + setPCurrentPictureInfo( const StdVideoEncodeH265PictureInfo * pCurrentPictureInfo_ ) VULKAN_HPP_NOEXCEPT + { + pCurrentPictureInfo = pCurrentPictureInfo_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeH265VclFrameInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeH265VclFrameInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, pReferenceFinalLists, naluSliceEntryCount, pNaluSliceEntries, pCurrentPictureInfo ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265VclFrameInfoEXT const & ) const = default; +# else + bool operator==( VideoEncodeH265VclFrameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pReferenceFinalLists == rhs.pReferenceFinalLists ) && + ( naluSliceEntryCount == rhs.naluSliceEntryCount ) && ( pNaluSliceEntries == rhs.pNaluSliceEntries ) && + ( pCurrentPictureInfo == rhs.pCurrentPictureInfo ); +# endif + } + + bool operator!=( VideoEncodeH265VclFrameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeH265VclFrameInfoEXT; + const void * pNext = {}; + const VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsEXT * pReferenceFinalLists = {}; + uint32_t naluSliceEntryCount = {}; + const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceEXT * pNaluSliceEntries = {}; + const StdVideoEncodeH265PictureInfo * pCurrentPictureInfo = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT ) == + sizeof( VkVideoEncodeH265VclFrameInfoEXT ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeH265VclFrameInfoEXT is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeH265VclFrameInfoEXT; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeInfoKHR + { + using NativeType = VkVideoEncodeInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeInfoKHR( VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR flags_ = {}, + uint32_t qualityLevel_ = {}, + VULKAN_HPP_NAMESPACE::Extent2D codedExtent_ = {}, + VULKAN_HPP_NAMESPACE::Buffer dstBitstreamBuffer_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize dstBitstreamBufferOffset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize dstBitstreamBufferMaxRange_ = {}, + VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR srcPictureResource_ = {}, + const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot_ = {}, + uint32_t referenceSlotCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots_ = {}, + uint32_t precedingExternallyEncodedBytes_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , qualityLevel( qualityLevel_ ) + , codedExtent( codedExtent_ ) + , dstBitstreamBuffer( dstBitstreamBuffer_ ) + , dstBitstreamBufferOffset( dstBitstreamBufferOffset_ ) + , dstBitstreamBufferMaxRange( dstBitstreamBufferMaxRange_ ) + , srcPictureResource( srcPictureResource_ ) + , pSetupReferenceSlot( pSetupReferenceSlot_ ) + , referenceSlotCount( referenceSlotCount_ ) + , pReferenceSlots( pReferenceSlots_ ) + , precedingExternallyEncodedBytes( precedingExternallyEncodedBytes_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoEncodeInfoKHR( VideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeInfoKHR( VkVideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeInfoKHR( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeInfoKHR( + VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR flags_, + uint32_t qualityLevel_, + VULKAN_HPP_NAMESPACE::Extent2D codedExtent_, + VULKAN_HPP_NAMESPACE::Buffer dstBitstreamBuffer_, + VULKAN_HPP_NAMESPACE::DeviceSize dstBitstreamBufferOffset_, + VULKAN_HPP_NAMESPACE::DeviceSize dstBitstreamBufferMaxRange_, + VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR srcPictureResource_, + const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + referenceSlots_, + uint32_t precedingExternallyEncodedBytes_ = {} ) + : flags( flags_ ) + , qualityLevel( qualityLevel_ ) + , codedExtent( codedExtent_ ) + , dstBitstreamBuffer( dstBitstreamBuffer_ ) + , dstBitstreamBufferOffset( dstBitstreamBufferOffset_ ) + , dstBitstreamBufferMaxRange( dstBitstreamBufferMaxRange_ ) + , srcPictureResource( srcPictureResource_ ) + , pSetupReferenceSlot( pSetupReferenceSlot_ ) + , referenceSlotCount( static_cast( referenceSlots_.size() ) ) + , pReferenceSlots( referenceSlots_.data() ) + , precedingExternallyEncodedBytes( precedingExternallyEncodedBytes_ ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeInfoKHR & operator=( VideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeInfoKHR & operator=( VkVideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setQualityLevel( uint32_t qualityLevel_ ) VULKAN_HPP_NOEXCEPT + { + qualityLevel = qualityLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & + setCodedExtent( VULKAN_HPP_NAMESPACE::Extent2D const & codedExtent_ ) VULKAN_HPP_NOEXCEPT + { + codedExtent = codedExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & + setDstBitstreamBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBitstreamBuffer_ ) VULKAN_HPP_NOEXCEPT + { + dstBitstreamBuffer = dstBitstreamBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & + setDstBitstreamBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstBitstreamBufferOffset_ ) VULKAN_HPP_NOEXCEPT + { + dstBitstreamBufferOffset = dstBitstreamBufferOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & + setDstBitstreamBufferMaxRange( VULKAN_HPP_NAMESPACE::DeviceSize dstBitstreamBufferMaxRange_ ) VULKAN_HPP_NOEXCEPT + { + dstBitstreamBufferMaxRange = dstBitstreamBufferMaxRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setSrcPictureResource( + VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR const & srcPictureResource_ ) VULKAN_HPP_NOEXCEPT + { + srcPictureResource = srcPictureResource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setPSetupReferenceSlot( + const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot_ ) VULKAN_HPP_NOEXCEPT + { + pSetupReferenceSlot = pSetupReferenceSlot_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & + setReferenceSlotCount( uint32_t referenceSlotCount_ ) VULKAN_HPP_NOEXCEPT + { + referenceSlotCount = referenceSlotCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & + setPReferenceSlots( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots_ ) VULKAN_HPP_NOEXCEPT + { + pReferenceSlots = pReferenceSlots_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeInfoKHR & setReferenceSlots( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + referenceSlots_ ) VULKAN_HPP_NOEXCEPT + { + referenceSlotCount = static_cast( referenceSlots_.size() ); + pReferenceSlots = referenceSlots_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & + setPrecedingExternallyEncodedBytes( uint32_t precedingExternallyEncodedBytes_ ) VULKAN_HPP_NOEXCEPT + { + precedingExternallyEncodedBytes = precedingExternallyEncodedBytes_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + qualityLevel, + codedExtent, + dstBitstreamBuffer, + dstBitstreamBufferOffset, + dstBitstreamBufferMaxRange, + srcPictureResource, + pSetupReferenceSlot, + referenceSlotCount, + pReferenceSlots, + precedingExternallyEncodedBytes ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeInfoKHR const & ) const = default; +# else + bool operator==( VideoEncodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( qualityLevel == rhs.qualityLevel ) && ( codedExtent == rhs.codedExtent ) && + ( dstBitstreamBuffer == rhs.dstBitstreamBuffer ) && + ( dstBitstreamBufferOffset == rhs.dstBitstreamBufferOffset ) && + ( dstBitstreamBufferMaxRange == rhs.dstBitstreamBufferMaxRange ) && + ( srcPictureResource == rhs.srcPictureResource ) && ( pSetupReferenceSlot == rhs.pSetupReferenceSlot ) && + ( referenceSlotCount == rhs.referenceSlotCount ) && ( pReferenceSlots == rhs.pReferenceSlots ) && + ( precedingExternallyEncodedBytes == rhs.precedingExternallyEncodedBytes ); +# endif + } + + bool operator!=( VideoEncodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR flags = {}; + uint32_t qualityLevel = {}; + VULKAN_HPP_NAMESPACE::Extent2D codedExtent = {}; + VULKAN_HPP_NAMESPACE::Buffer dstBitstreamBuffer = {}; + VULKAN_HPP_NAMESPACE::DeviceSize dstBitstreamBufferOffset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize dstBitstreamBufferMaxRange = {}; + VULKAN_HPP_NAMESPACE::VideoPictureResourceKHR srcPictureResource = {}; + const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pSetupReferenceSlot = {}; + uint32_t referenceSlotCount = {}; + const VULKAN_HPP_NAMESPACE::VideoReferenceSlotKHR * pReferenceSlots = {}; + uint32_t precedingExternallyEncodedBytes = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR ) == sizeof( VkVideoEncodeInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeInfoKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeRateControlLayerInfoKHR + { + using NativeType = VkVideoEncodeRateControlLayerInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoEncodeRateControlLayerInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeRateControlLayerInfoKHR( uint32_t averageBitrate_ = {}, + uint32_t maxBitrate_ = {}, + uint32_t frameRateNumerator_ = {}, + uint32_t frameRateDenominator_ = {}, + uint32_t virtualBufferSizeInMs_ = {}, + uint32_t initialVirtualBufferSizeInMs_ = {} ) VULKAN_HPP_NOEXCEPT + : averageBitrate( averageBitrate_ ) + , maxBitrate( maxBitrate_ ) + , frameRateNumerator( frameRateNumerator_ ) + , frameRateDenominator( frameRateDenominator_ ) + , virtualBufferSizeInMs( virtualBufferSizeInMs_ ) + , initialVirtualBufferSizeInMs( initialVirtualBufferSizeInMs_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoEncodeRateControlLayerInfoKHR( VideoEncodeRateControlLayerInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeRateControlLayerInfoKHR( VkVideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeRateControlLayerInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeRateControlLayerInfoKHR & + operator=( VideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeRateControlLayerInfoKHR & + operator=( VkVideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & + setAverageBitrate( uint32_t averageBitrate_ ) VULKAN_HPP_NOEXCEPT + { + averageBitrate = averageBitrate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & + setMaxBitrate( uint32_t maxBitrate_ ) VULKAN_HPP_NOEXCEPT + { + maxBitrate = maxBitrate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & + setFrameRateNumerator( uint32_t frameRateNumerator_ ) VULKAN_HPP_NOEXCEPT + { + frameRateNumerator = frameRateNumerator_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & + setFrameRateDenominator( uint32_t frameRateDenominator_ ) VULKAN_HPP_NOEXCEPT + { + frameRateDenominator = frameRateDenominator_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & + setVirtualBufferSizeInMs( uint32_t virtualBufferSizeInMs_ ) VULKAN_HPP_NOEXCEPT + { + virtualBufferSizeInMs = virtualBufferSizeInMs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & + setInitialVirtualBufferSizeInMs( uint32_t initialVirtualBufferSizeInMs_ ) VULKAN_HPP_NOEXCEPT + { + initialVirtualBufferSizeInMs = initialVirtualBufferSizeInMs_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeRateControlLayerInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeRateControlLayerInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + averageBitrate, + maxBitrate, + frameRateNumerator, + frameRateDenominator, + virtualBufferSizeInMs, + initialVirtualBufferSizeInMs ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeRateControlLayerInfoKHR const & ) const = default; +# else + bool operator==( VideoEncodeRateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( averageBitrate == rhs.averageBitrate ) && + ( maxBitrate == rhs.maxBitrate ) && ( frameRateNumerator == rhs.frameRateNumerator ) && + ( frameRateDenominator == rhs.frameRateDenominator ) && + ( virtualBufferSizeInMs == rhs.virtualBufferSizeInMs ) && + ( initialVirtualBufferSizeInMs == rhs.initialVirtualBufferSizeInMs ); +# endif + } + + bool operator!=( VideoEncodeRateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeRateControlLayerInfoKHR; + const void * pNext = {}; + uint32_t averageBitrate = {}; + uint32_t maxBitrate = {}; + uint32_t frameRateNumerator = {}; + uint32_t frameRateDenominator = {}; + uint32_t virtualBufferSizeInMs = {}; + uint32_t initialVirtualBufferSizeInMs = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR ) == + sizeof( VkVideoEncodeRateControlLayerInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeRateControlLayerInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeRateControlLayerInfoKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEncodeRateControlInfoKHR + { + using NativeType = VkVideoEncodeRateControlInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeRateControlInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeRateControlInfoKHR( + VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR flags_ = {}, + VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR rateControlMode_ = + VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR::eNone, + uint8_t layerCount_ = {}, + const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR * pLayerConfigs_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , rateControlMode( rateControlMode_ ) + , layerCount( layerCount_ ) + , pLayerConfigs( pLayerConfigs_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoEncodeRateControlInfoKHR( VideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeRateControlInfoKHR( VkVideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeRateControlInfoKHR( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeRateControlInfoKHR( + VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR flags_, + VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR rateControlMode_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR> const & layerConfigs_ ) + : flags( flags_ ) + , rateControlMode( rateControlMode_ ) + , layerCount( static_cast( layerConfigs_.size() ) ) + , pLayerConfigs( layerConfigs_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEncodeRateControlInfoKHR & + operator=( VideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeRateControlInfoKHR & operator=( VkVideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setRateControlMode( + VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR rateControlMode_ ) VULKAN_HPP_NOEXCEPT + { + rateControlMode = rateControlMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setLayerCount( uint8_t layerCount_ ) VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setPLayerConfigs( + const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR * pLayerConfigs_ ) VULKAN_HPP_NOEXCEPT + { + pLayerConfigs = pLayerConfigs_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeRateControlInfoKHR & setLayerConfigs( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries< + const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR> const & layerConfigs_ ) VULKAN_HPP_NOEXCEPT + { + layerCount = static_cast( layerConfigs_.size() ); + pLayerConfigs = layerConfigs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEncodeRateControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEncodeRateControlInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, rateControlMode, layerCount, pLayerConfigs ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeRateControlInfoKHR const & ) const = default; +# else + bool operator==( VideoEncodeRateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( rateControlMode == rhs.rateControlMode ) && ( layerCount == rhs.layerCount ) && + ( pLayerConfigs == rhs.pLayerConfigs ); +# endif + } + + bool operator!=( VideoEncodeRateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEncodeRateControlInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR flags = {}; + VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR rateControlMode = + VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR::eNone; + uint8_t layerCount = {}; + const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR * pLayerConfigs = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR ) == + sizeof( VkVideoEncodeRateControlInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoEncodeRateControlInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEncodeRateControlInfoKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoEndCodingInfoKHR + { + using NativeType = VkVideoEndCodingInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEndCodingInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEndCodingInfoKHR( VULKAN_HPP_NAMESPACE::VideoEndCodingFlagsKHR flags_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoEndCodingInfoKHR( VideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEndCodingInfoKHR( VkVideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEndCodingInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoEndCodingInfoKHR & operator=( VideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEndCodingInfoKHR & operator=( VkVideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEndCodingInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEndCodingInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::VideoEndCodingFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoEndCodingInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoEndCodingInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEndCodingInfoKHR const & ) const = default; +# else + bool operator==( VideoEndCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( VideoEndCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoEndCodingInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoEndCodingFlagsKHR flags = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR ) == sizeof( VkVideoEndCodingInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEndCodingInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoEndCodingInfoKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoFormatPropertiesKHR + { + using NativeType = VkVideoFormatPropertiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoFormatPropertiesKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoFormatPropertiesKHR( + VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined ) VULKAN_HPP_NOEXCEPT + : format( format_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoFormatPropertiesKHR( VideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoFormatPropertiesKHR( VkVideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoFormatPropertiesKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoFormatPropertiesKHR & operator=( VideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoFormatPropertiesKHR & operator=( VkVideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + explicit operator VkVideoFormatPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoFormatPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, format ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoFormatPropertiesKHR const & ) const = default; +# else + bool operator==( VideoFormatPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ); +# endif + } + + bool operator!=( VideoFormatPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoFormatPropertiesKHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR ) == + sizeof( VkVideoFormatPropertiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoFormatPropertiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoFormatPropertiesKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoGetMemoryPropertiesKHR + { + using NativeType = VkVideoGetMemoryPropertiesKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoGetMemoryPropertiesKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoGetMemoryPropertiesKHR( + uint32_t memoryBindIndex_ = {}, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements_ = {} ) VULKAN_HPP_NOEXCEPT + : memoryBindIndex( memoryBindIndex_ ) + , pMemoryRequirements( pMemoryRequirements_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoGetMemoryPropertiesKHR( VideoGetMemoryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoGetMemoryPropertiesKHR( VkVideoGetMemoryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoGetMemoryPropertiesKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoGetMemoryPropertiesKHR & operator=( VideoGetMemoryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoGetMemoryPropertiesKHR & operator=( VkVideoGetMemoryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoGetMemoryPropertiesKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoGetMemoryPropertiesKHR & + setMemoryBindIndex( uint32_t memoryBindIndex_ ) VULKAN_HPP_NOEXCEPT + { + memoryBindIndex = memoryBindIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoGetMemoryPropertiesKHR & + setPMemoryRequirements( VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements_ ) VULKAN_HPP_NOEXCEPT + { + pMemoryRequirements = pMemoryRequirements_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoGetMemoryPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoGetMemoryPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryBindIndex, pMemoryRequirements ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoGetMemoryPropertiesKHR const & ) const = default; +# else + bool operator==( VideoGetMemoryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryBindIndex == rhs.memoryBindIndex ) && + ( pMemoryRequirements == rhs.pMemoryRequirements ); +# endif + } + + bool operator!=( VideoGetMemoryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoGetMemoryPropertiesKHR; + const void * pNext = {}; + uint32_t memoryBindIndex = {}; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR ) == + sizeof( VkVideoGetMemoryPropertiesKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoGetMemoryPropertiesKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoGetMemoryPropertiesKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoQueueFamilyProperties2KHR + { + using NativeType = VkVideoQueueFamilyProperties2KHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoQueueFamilyProperties2KHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoQueueFamilyProperties2KHR( + VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagsKHR videoCodecOperations_ = {} ) VULKAN_HPP_NOEXCEPT + : videoCodecOperations( videoCodecOperations_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoQueueFamilyProperties2KHR( VideoQueueFamilyProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoQueueFamilyProperties2KHR( VkVideoQueueFamilyProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoQueueFamilyProperties2KHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoQueueFamilyProperties2KHR & + operator=( VideoQueueFamilyProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoQueueFamilyProperties2KHR & operator=( VkVideoQueueFamilyProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoQueueFamilyProperties2KHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoQueueFamilyProperties2KHR & setVideoCodecOperations( + VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagsKHR videoCodecOperations_ ) VULKAN_HPP_NOEXCEPT + { + videoCodecOperations = videoCodecOperations_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoQueueFamilyProperties2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoQueueFamilyProperties2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, videoCodecOperations ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoQueueFamilyProperties2KHR const & ) const = default; +# else + bool operator==( VideoQueueFamilyProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoCodecOperations == rhs.videoCodecOperations ); +# endif + } + + bool operator!=( VideoQueueFamilyProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoQueueFamilyProperties2KHR; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagsKHR videoCodecOperations = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoQueueFamilyProperties2KHR ) == + sizeof( VkVideoQueueFamilyProperties2KHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoQueueFamilyProperties2KHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoQueueFamilyProperties2KHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoSessionCreateInfoKHR + { + using NativeType = VkVideoSessionCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoSessionCreateInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoSessionCreateInfoKHR( + uint32_t queueFamilyIndex_ = {}, + VULKAN_HPP_NAMESPACE::VideoSessionCreateFlagsKHR flags_ = {}, + const VULKAN_HPP_NAMESPACE::VideoProfileKHR * pVideoProfile_ = {}, + VULKAN_HPP_NAMESPACE::Format pictureFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + VULKAN_HPP_NAMESPACE::Extent2D maxCodedExtent_ = {}, + VULKAN_HPP_NAMESPACE::Format referencePicturesFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, + uint32_t maxReferencePicturesSlotsCount_ = {}, + uint32_t maxReferencePicturesActiveCount_ = {} ) VULKAN_HPP_NOEXCEPT + : queueFamilyIndex( queueFamilyIndex_ ) + , flags( flags_ ) + , pVideoProfile( pVideoProfile_ ) + , pictureFormat( pictureFormat_ ) + , maxCodedExtent( maxCodedExtent_ ) + , referencePicturesFormat( referencePicturesFormat_ ) + , maxReferencePicturesSlotsCount( maxReferencePicturesSlotsCount_ ) + , maxReferencePicturesActiveCount( maxReferencePicturesActiveCount_ ) + {} + + VULKAN_HPP_CONSTEXPR + VideoSessionCreateInfoKHR( VideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoSessionCreateInfoKHR( VkVideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoSessionCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoSessionCreateInfoKHR & operator=( VideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoSessionCreateInfoKHR & operator=( VkVideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & + setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::VideoSessionCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & + setPVideoProfile( const VULKAN_HPP_NAMESPACE::VideoProfileKHR * pVideoProfile_ ) VULKAN_HPP_NOEXCEPT + { + pVideoProfile = pVideoProfile_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & + setPictureFormat( VULKAN_HPP_NAMESPACE::Format pictureFormat_ ) VULKAN_HPP_NOEXCEPT + { + pictureFormat = pictureFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & + setMaxCodedExtent( VULKAN_HPP_NAMESPACE::Extent2D const & maxCodedExtent_ ) VULKAN_HPP_NOEXCEPT + { + maxCodedExtent = maxCodedExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & + setReferencePicturesFormat( VULKAN_HPP_NAMESPACE::Format referencePicturesFormat_ ) VULKAN_HPP_NOEXCEPT + { + referencePicturesFormat = referencePicturesFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & + setMaxReferencePicturesSlotsCount( uint32_t maxReferencePicturesSlotsCount_ ) VULKAN_HPP_NOEXCEPT + { + maxReferencePicturesSlotsCount = maxReferencePicturesSlotsCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & + setMaxReferencePicturesActiveCount( uint32_t maxReferencePicturesActiveCount_ ) VULKAN_HPP_NOEXCEPT + { + maxReferencePicturesActiveCount = maxReferencePicturesActiveCount_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoSessionCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoSessionCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + queueFamilyIndex, + flags, + pVideoProfile, + pictureFormat, + maxCodedExtent, + referencePicturesFormat, + maxReferencePicturesSlotsCount, + maxReferencePicturesActiveCount ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoSessionCreateInfoKHR const & ) const = default; +# else + bool operator==( VideoSessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueFamilyIndex == rhs.queueFamilyIndex ) && + ( flags == rhs.flags ) && ( pVideoProfile == rhs.pVideoProfile ) && + ( pictureFormat == rhs.pictureFormat ) && ( maxCodedExtent == rhs.maxCodedExtent ) && + ( referencePicturesFormat == rhs.referencePicturesFormat ) && + ( maxReferencePicturesSlotsCount == rhs.maxReferencePicturesSlotsCount ) && + ( maxReferencePicturesActiveCount == rhs.maxReferencePicturesActiveCount ); +# endif + } + + bool operator!=( VideoSessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoSessionCreateInfoKHR; + const void * pNext = {}; + uint32_t queueFamilyIndex = {}; + VULKAN_HPP_NAMESPACE::VideoSessionCreateFlagsKHR flags = {}; + const VULKAN_HPP_NAMESPACE::VideoProfileKHR * pVideoProfile = {}; + VULKAN_HPP_NAMESPACE::Format pictureFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined; + VULKAN_HPP_NAMESPACE::Extent2D maxCodedExtent = {}; + VULKAN_HPP_NAMESPACE::Format referencePicturesFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined; + uint32_t maxReferencePicturesSlotsCount = {}; + uint32_t maxReferencePicturesActiveCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR ) == + sizeof( VkVideoSessionCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoSessionCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoSessionCreateInfoKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoSessionParametersCreateInfoKHR + { + using NativeType = VkVideoSessionParametersCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoSessionParametersCreateInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoSessionParametersCreateInfoKHR( + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParametersTemplate_ = {}, + VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession_ = {} ) VULKAN_HPP_NOEXCEPT + : videoSessionParametersTemplate( videoSessionParametersTemplate_ ) + , videoSession( videoSession_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoSessionParametersCreateInfoKHR( VideoSessionParametersCreateInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + VideoSessionParametersCreateInfoKHR( VkVideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoSessionParametersCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoSessionParametersCreateInfoKHR & + operator=( VideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoSessionParametersCreateInfoKHR & + operator=( VkVideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR & setVideoSessionParametersTemplate( + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParametersTemplate_ ) VULKAN_HPP_NOEXCEPT + { + videoSessionParametersTemplate = videoSessionParametersTemplate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR & + setVideoSession( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession_ ) VULKAN_HPP_NOEXCEPT + { + videoSession = videoSession_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoSessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoSessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, videoSessionParametersTemplate, videoSession ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoSessionParametersCreateInfoKHR const & ) const = default; +# else + bool operator==( VideoSessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( videoSessionParametersTemplate == rhs.videoSessionParametersTemplate ) && + ( videoSession == rhs.videoSession ); +# endif + } + + bool operator!=( VideoSessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoSessionParametersCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParametersTemplate = {}; + VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR ) == + sizeof( VkVideoSessionParametersCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoSessionParametersCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoSessionParametersCreateInfoKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct VideoSessionParametersUpdateInfoKHR + { + using NativeType = VkVideoSessionParametersUpdateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eVideoSessionParametersUpdateInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoSessionParametersUpdateInfoKHR( uint32_t updateSequenceCount_ = {} ) VULKAN_HPP_NOEXCEPT + : updateSequenceCount( updateSequenceCount_ ) + {} + + VULKAN_HPP_CONSTEXPR VideoSessionParametersUpdateInfoKHR( VideoSessionParametersUpdateInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + VideoSessionParametersUpdateInfoKHR( VkVideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoSessionParametersUpdateInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + VideoSessionParametersUpdateInfoKHR & + operator=( VideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoSessionParametersUpdateInfoKHR & + operator=( VkVideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersUpdateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersUpdateInfoKHR & + setUpdateSequenceCount( uint32_t updateSequenceCount_ ) VULKAN_HPP_NOEXCEPT + { + updateSequenceCount = updateSequenceCount_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkVideoSessionParametersUpdateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkVideoSessionParametersUpdateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, updateSequenceCount ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoSessionParametersUpdateInfoKHR const & ) const = default; +# else + bool operator==( VideoSessionParametersUpdateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( updateSequenceCount == rhs.updateSequenceCount ); +# endif + } + + bool operator!=( VideoSessionParametersUpdateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVideoSessionParametersUpdateInfoKHR; + const void * pNext = {}; + uint32_t updateSequenceCount = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR ) == + sizeof( VkVideoSessionParametersUpdateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "VideoSessionParametersUpdateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = VideoSessionParametersUpdateInfoKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + struct WaylandSurfaceCreateInfoKHR + { + using NativeType = VkWaylandSurfaceCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWaylandSurfaceCreateInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR WaylandSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags_ = {}, + struct wl_display * display_ = {}, + struct wl_surface * surface_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , display( display_ ) + , surface( surface_ ) + {} + + VULKAN_HPP_CONSTEXPR + WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : WaylandSurfaceCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + WaylandSurfaceCreateInfoKHR & operator=( WaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WaylandSurfaceCreateInfoKHR & operator=( VkWaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setDisplay( struct wl_display * display_ ) VULKAN_HPP_NOEXCEPT + { + display = display_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setSurface( struct wl_surface * surface_ ) VULKAN_HPP_NOEXCEPT + { + surface = surface_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkWaylandSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkWaylandSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, display, surface ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WaylandSurfaceCreateInfoKHR const & ) const = default; +# else + bool operator==( WaylandSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( display == rhs.display ) && + ( surface == rhs.surface ); +# endif + } + + bool operator!=( WaylandSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWaylandSurfaceCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags = {}; + struct wl_display * display = {}; + struct wl_surface * surface = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR ) == + sizeof( VkWaylandSurfaceCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "WaylandSurfaceCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = WaylandSurfaceCreateInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct Win32KeyedMutexAcquireReleaseInfoKHR + { + using NativeType = VkWin32KeyedMutexAcquireReleaseInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + Win32KeyedMutexAcquireReleaseInfoKHR( uint32_t acquireCount_ = {}, + const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_ = {}, + const uint64_t * pAcquireKeys_ = {}, + const uint32_t * pAcquireTimeouts_ = {}, + uint32_t releaseCount_ = {}, + const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_ = {}, + const uint64_t * pReleaseKeys_ = {} ) VULKAN_HPP_NOEXCEPT + : acquireCount( acquireCount_ ) + , pAcquireSyncs( pAcquireSyncs_ ) + , pAcquireKeys( pAcquireKeys_ ) + , pAcquireTimeouts( pAcquireTimeouts_ ) + , releaseCount( releaseCount_ ) + , pReleaseSyncs( pReleaseSyncs_ ) + , pReleaseKeys( pReleaseKeys_ ) + {} + + VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoKHR( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : Win32KeyedMutexAcquireReleaseInfoKHR( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoKHR( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireSyncs_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireKeys_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireTimeouts_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + releaseSyncs_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & releaseKeys_ = {} ) + : acquireCount( static_cast( acquireSyncs_.size() ) ) + , pAcquireSyncs( acquireSyncs_.data() ) + , pAcquireKeys( acquireKeys_.data() ) + , pAcquireTimeouts( acquireTimeouts_.data() ) + , releaseCount( static_cast( releaseSyncs_.size() ) ) + , pReleaseSyncs( releaseSyncs_.data() ) + , pReleaseKeys( releaseKeys_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireKeys_.size() ); + VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireTimeouts_.size() ); + VULKAN_HPP_ASSERT( acquireKeys_.size() == acquireTimeouts_.size() ); +# else + if ( acquireSyncs_.size() != acquireKeys_.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: acquireSyncs_.size() != acquireKeys_.size()" ); + } + if ( acquireSyncs_.size() != acquireTimeouts_.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: acquireSyncs_.size() != acquireTimeouts_.size()" ); + } + if ( acquireKeys_.size() != acquireTimeouts_.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: acquireKeys_.size() != acquireTimeouts_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( releaseSyncs_.size() == releaseKeys_.size() ); +# else + if ( releaseSyncs_.size() != releaseKeys_.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: releaseSyncs_.size() != releaseKeys_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + Win32KeyedMutexAcquireReleaseInfoKHR & + operator=( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Win32KeyedMutexAcquireReleaseInfoKHR & + operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & + setAcquireCount( uint32_t acquireCount_ ) VULKAN_HPP_NOEXCEPT + { + acquireCount = acquireCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & + setPAcquireSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_ ) VULKAN_HPP_NOEXCEPT + { + pAcquireSyncs = pAcquireSyncs_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireSyncs( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireSyncs_ ) + VULKAN_HPP_NOEXCEPT + { + acquireCount = static_cast( acquireSyncs_.size() ); + pAcquireSyncs = acquireSyncs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & + setPAcquireKeys( const uint64_t * pAcquireKeys_ ) VULKAN_HPP_NOEXCEPT + { + pAcquireKeys = pAcquireKeys_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireKeys( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireKeys_ ) VULKAN_HPP_NOEXCEPT + { + acquireCount = static_cast( acquireKeys_.size() ); + pAcquireKeys = acquireKeys_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & + setPAcquireTimeouts( const uint32_t * pAcquireTimeouts_ ) VULKAN_HPP_NOEXCEPT + { + pAcquireTimeouts = pAcquireTimeouts_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireTimeouts( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireTimeouts_ ) VULKAN_HPP_NOEXCEPT + { + acquireCount = static_cast( acquireTimeouts_.size() ); + pAcquireTimeouts = acquireTimeouts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & + setReleaseCount( uint32_t releaseCount_ ) VULKAN_HPP_NOEXCEPT + { + releaseCount = releaseCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & + setPReleaseSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_ ) VULKAN_HPP_NOEXCEPT + { + pReleaseSyncs = pReleaseSyncs_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoKHR & setReleaseSyncs( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & releaseSyncs_ ) + VULKAN_HPP_NOEXCEPT + { + releaseCount = static_cast( releaseSyncs_.size() ); + pReleaseSyncs = releaseSyncs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & + setPReleaseKeys( const uint64_t * pReleaseKeys_ ) VULKAN_HPP_NOEXCEPT + { + pReleaseKeys = pReleaseKeys_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoKHR & setReleaseKeys( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & releaseKeys_ ) VULKAN_HPP_NOEXCEPT + { + releaseCount = static_cast( releaseKeys_.size() ); + pReleaseKeys = releaseKeys_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkWin32KeyedMutexAcquireReleaseInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkWin32KeyedMutexAcquireReleaseInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + acquireCount, + pAcquireSyncs, + pAcquireKeys, + pAcquireTimeouts, + releaseCount, + pReleaseSyncs, + pReleaseKeys ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Win32KeyedMutexAcquireReleaseInfoKHR const & ) const = default; +# else + bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( acquireCount == rhs.acquireCount ) && + ( pAcquireSyncs == rhs.pAcquireSyncs ) && ( pAcquireKeys == rhs.pAcquireKeys ) && + ( pAcquireTimeouts == rhs.pAcquireTimeouts ) && ( releaseCount == rhs.releaseCount ) && + ( pReleaseSyncs == rhs.pReleaseSyncs ) && ( pReleaseKeys == rhs.pReleaseKeys ); +# endif + } + + bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR; + const void * pNext = {}; + uint32_t acquireCount = {}; + const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs = {}; + const uint64_t * pAcquireKeys = {}; + const uint32_t * pAcquireTimeouts = {}; + uint32_t releaseCount = {}; + const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs = {}; + const uint64_t * pReleaseKeys = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR ) == + sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "Win32KeyedMutexAcquireReleaseInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = Win32KeyedMutexAcquireReleaseInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct Win32KeyedMutexAcquireReleaseInfoNV + { + using NativeType = VkWin32KeyedMutexAcquireReleaseInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eWin32KeyedMutexAcquireReleaseInfoNV; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + Win32KeyedMutexAcquireReleaseInfoNV( uint32_t acquireCount_ = {}, + const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_ = {}, + const uint64_t * pAcquireKeys_ = {}, + const uint32_t * pAcquireTimeoutMilliseconds_ = {}, + uint32_t releaseCount_ = {}, + const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_ = {}, + const uint64_t * pReleaseKeys_ = {} ) VULKAN_HPP_NOEXCEPT + : acquireCount( acquireCount_ ) + , pAcquireSyncs( pAcquireSyncs_ ) + , pAcquireKeys( pAcquireKeys_ ) + , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ ) + , releaseCount( releaseCount_ ) + , pReleaseSyncs( pReleaseSyncs_ ) + , pReleaseKeys( pReleaseKeys_ ) + {} + + VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoNV( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : Win32KeyedMutexAcquireReleaseInfoNV( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoNV( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireSyncs_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireKeys_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireTimeoutMilliseconds_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + releaseSyncs_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & releaseKeys_ = {} ) + : acquireCount( static_cast( acquireSyncs_.size() ) ) + , pAcquireSyncs( acquireSyncs_.data() ) + , pAcquireKeys( acquireKeys_.data() ) + , pAcquireTimeoutMilliseconds( acquireTimeoutMilliseconds_.data() ) + , releaseCount( static_cast( releaseSyncs_.size() ) ) + , pReleaseSyncs( releaseSyncs_.data() ) + , pReleaseKeys( releaseKeys_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireKeys_.size() ); + VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireTimeoutMilliseconds_.size() ); + VULKAN_HPP_ASSERT( acquireKeys_.size() == acquireTimeoutMilliseconds_.size() ); +# else + if ( acquireSyncs_.size() != acquireKeys_.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: acquireSyncs_.size() != acquireKeys_.size()" ); + } + if ( acquireSyncs_.size() != acquireTimeoutMilliseconds_.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: acquireSyncs_.size() != acquireTimeoutMilliseconds_.size()" ); + } + if ( acquireKeys_.size() != acquireTimeoutMilliseconds_.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: acquireKeys_.size() != acquireTimeoutMilliseconds_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( releaseSyncs_.size() == releaseKeys_.size() ); +# else + if ( releaseSyncs_.size() != releaseKeys_.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: releaseSyncs_.size() != releaseKeys_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + Win32KeyedMutexAcquireReleaseInfoNV & + operator=( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Win32KeyedMutexAcquireReleaseInfoNV & + operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & + setAcquireCount( uint32_t acquireCount_ ) VULKAN_HPP_NOEXCEPT + { + acquireCount = acquireCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & + setPAcquireSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_ ) VULKAN_HPP_NOEXCEPT + { + pAcquireSyncs = pAcquireSyncs_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoNV & setAcquireSyncs( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireSyncs_ ) + VULKAN_HPP_NOEXCEPT + { + acquireCount = static_cast( acquireSyncs_.size() ); + pAcquireSyncs = acquireSyncs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & + setPAcquireKeys( const uint64_t * pAcquireKeys_ ) VULKAN_HPP_NOEXCEPT + { + pAcquireKeys = pAcquireKeys_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoNV & setAcquireKeys( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireKeys_ ) VULKAN_HPP_NOEXCEPT + { + acquireCount = static_cast( acquireKeys_.size() ); + pAcquireKeys = acquireKeys_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & + setPAcquireTimeoutMilliseconds( const uint32_t * pAcquireTimeoutMilliseconds_ ) VULKAN_HPP_NOEXCEPT + { + pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoNV & setAcquireTimeoutMilliseconds( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireTimeoutMilliseconds_ ) + VULKAN_HPP_NOEXCEPT + { + acquireCount = static_cast( acquireTimeoutMilliseconds_.size() ); + pAcquireTimeoutMilliseconds = acquireTimeoutMilliseconds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & + setReleaseCount( uint32_t releaseCount_ ) VULKAN_HPP_NOEXCEPT + { + releaseCount = releaseCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & + setPReleaseSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_ ) VULKAN_HPP_NOEXCEPT + { + pReleaseSyncs = pReleaseSyncs_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoNV & setReleaseSyncs( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & releaseSyncs_ ) + VULKAN_HPP_NOEXCEPT + { + releaseCount = static_cast( releaseSyncs_.size() ); + pReleaseSyncs = releaseSyncs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & + setPReleaseKeys( const uint64_t * pReleaseKeys_ ) VULKAN_HPP_NOEXCEPT + { + pReleaseKeys = pReleaseKeys_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoNV & setReleaseKeys( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & releaseKeys_ ) VULKAN_HPP_NOEXCEPT + { + releaseCount = static_cast( releaseKeys_.size() ); + pReleaseKeys = releaseKeys_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkWin32KeyedMutexAcquireReleaseInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkWin32KeyedMutexAcquireReleaseInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + acquireCount, + pAcquireSyncs, + pAcquireKeys, + pAcquireTimeoutMilliseconds, + releaseCount, + pReleaseSyncs, + pReleaseKeys ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Win32KeyedMutexAcquireReleaseInfoNV const & ) const = default; +# else + bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( acquireCount == rhs.acquireCount ) && + ( pAcquireSyncs == rhs.pAcquireSyncs ) && ( pAcquireKeys == rhs.pAcquireKeys ) && + ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds ) && + ( releaseCount == rhs.releaseCount ) && ( pReleaseSyncs == rhs.pReleaseSyncs ) && + ( pReleaseKeys == rhs.pReleaseKeys ); +# endif + } + + bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV; + const void * pNext = {}; + uint32_t acquireCount = {}; + const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs = {}; + const uint64_t * pAcquireKeys = {}; + const uint32_t * pAcquireTimeoutMilliseconds = {}; + uint32_t releaseCount = {}; + const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs = {}; + const uint64_t * pReleaseKeys = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV ) == + sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "Win32KeyedMutexAcquireReleaseInfoNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = Win32KeyedMutexAcquireReleaseInfoNV; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + struct Win32SurfaceCreateInfoKHR + { + using NativeType = VkWin32SurfaceCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWin32SurfaceCreateInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR Win32SurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags_ = {}, + HINSTANCE hinstance_ = {}, + HWND hwnd_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , hinstance( hinstance_ ) + , hwnd( hwnd_ ) + {} + + VULKAN_HPP_CONSTEXPR + Win32SurfaceCreateInfoKHR( Win32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : Win32SurfaceCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + Win32SurfaceCreateInfoKHR & operator=( Win32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Win32SurfaceCreateInfoKHR & operator=( VkWin32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setHinstance( HINSTANCE hinstance_ ) VULKAN_HPP_NOEXCEPT + { + hinstance = hinstance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setHwnd( HWND hwnd_ ) VULKAN_HPP_NOEXCEPT + { + hwnd = hwnd_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkWin32SurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkWin32SurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, hinstance, hwnd ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Win32SurfaceCreateInfoKHR const & ) const = default; +# else + bool operator==( Win32SurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( hinstance == rhs.hinstance ) && ( hwnd == rhs.hwnd ); +# endif + } + + bool operator!=( Win32SurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWin32SurfaceCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags = {}; + HINSTANCE hinstance = {}; + HWND hwnd = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR ) == + sizeof( VkWin32SurfaceCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Win32SurfaceCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = Win32SurfaceCreateInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + struct WriteDescriptorSet + { + using NativeType = VkWriteDescriptorSet; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteDescriptorSet; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR WriteDescriptorSet( + VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ = {}, + uint32_t dstBinding_ = {}, + uint32_t dstArrayElement_ = {}, + uint32_t descriptorCount_ = {}, + VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler, + const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pImageInfo_ = {}, + const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * pBufferInfo_ = {}, + const VULKAN_HPP_NAMESPACE::BufferView * pTexelBufferView_ = {} ) VULKAN_HPP_NOEXCEPT + : dstSet( dstSet_ ) + , dstBinding( dstBinding_ ) + , dstArrayElement( dstArrayElement_ ) + , descriptorCount( descriptorCount_ ) + , descriptorType( descriptorType_ ) + , pImageInfo( pImageInfo_ ) + , pBufferInfo( pBufferInfo_ ) + , pTexelBufferView( pTexelBufferView_ ) + {} + + VULKAN_HPP_CONSTEXPR WriteDescriptorSet( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteDescriptorSet( VkWriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT + : WriteDescriptorSet( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSet( + VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_, + uint32_t dstBinding_, + uint32_t dstArrayElement_, + VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & imageInfo_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + bufferInfo_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + texelBufferView_ = {} ) + : dstSet( dstSet_ ) + , dstBinding( dstBinding_ ) + , dstArrayElement( dstArrayElement_ ) + , descriptorCount( static_cast( !imageInfo_.empty() ? imageInfo_.size() + : !bufferInfo_.empty() ? bufferInfo_.size() + : texelBufferView_.size() ) ) + , descriptorType( descriptorType_ ) + , pImageInfo( imageInfo_.data() ) + , pBufferInfo( bufferInfo_.data() ) + , pTexelBufferView( texelBufferView_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() ) <= 1 ); +# else + if ( 1 < ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() ) ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::WriteDescriptorSet::WriteDescriptorSet: 1 < ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + WriteDescriptorSet & operator=( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteDescriptorSet & operator=( VkWriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & + setDstSet( VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ ) VULKAN_HPP_NOEXCEPT + { + dstSet = dstSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT + { + dstBinding = dstBinding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT + { + dstArrayElement = dstArrayElement_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT + { + descriptorCount = descriptorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & + setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT + { + descriptorType = descriptorType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & + setPImageInfo( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pImageInfo_ ) VULKAN_HPP_NOEXCEPT + { + pImageInfo = pImageInfo_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSet & setImageInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + imageInfo_ ) VULKAN_HPP_NOEXCEPT + { + descriptorCount = static_cast( imageInfo_.size() ); + pImageInfo = imageInfo_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & + setPBufferInfo( const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * pBufferInfo_ ) VULKAN_HPP_NOEXCEPT + { + pBufferInfo = pBufferInfo_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSet & setBufferInfo( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + bufferInfo_ ) VULKAN_HPP_NOEXCEPT + { + descriptorCount = static_cast( bufferInfo_.size() ); + pBufferInfo = bufferInfo_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & + setPTexelBufferView( const VULKAN_HPP_NAMESPACE::BufferView * pTexelBufferView_ ) VULKAN_HPP_NOEXCEPT + { + pTexelBufferView = pTexelBufferView_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSet & setTexelBufferView( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & texelBufferView_ ) + VULKAN_HPP_NOEXCEPT + { + descriptorCount = static_cast( texelBufferView_.size() ); + pTexelBufferView = texelBufferView_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkWriteDescriptorSet const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkWriteDescriptorSet &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + dstSet, + dstBinding, + dstArrayElement, + descriptorCount, + descriptorType, + pImageInfo, + pBufferInfo, + pTexelBufferView ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WriteDescriptorSet const & ) const = default; +#else + bool operator==( WriteDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dstSet == rhs.dstSet ) && + ( dstBinding == rhs.dstBinding ) && ( dstArrayElement == rhs.dstArrayElement ) && + ( descriptorCount == rhs.descriptorCount ) && ( descriptorType == rhs.descriptorType ) && + ( pImageInfo == rhs.pImageInfo ) && ( pBufferInfo == rhs.pBufferInfo ) && + ( pTexelBufferView == rhs.pTexelBufferView ); +# endif + } + + bool operator!=( WriteDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSet; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DescriptorSet dstSet = {}; + uint32_t dstBinding = {}; + uint32_t dstArrayElement = {}; + uint32_t descriptorCount = {}; + VULKAN_HPP_NAMESPACE::DescriptorType descriptorType = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler; + const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pImageInfo = {}; + const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * pBufferInfo = {}; + const VULKAN_HPP_NAMESPACE::BufferView * pTexelBufferView = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "WriteDescriptorSet is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = WriteDescriptorSet; + }; + + struct WriteDescriptorSetAccelerationStructureKHR + { + using NativeType = VkWriteDescriptorSetAccelerationStructureKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eWriteDescriptorSetAccelerationStructureKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureKHR( + uint32_t accelerationStructureCount_ = {}, + const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures_ = {} ) VULKAN_HPP_NOEXCEPT + : accelerationStructureCount( accelerationStructureCount_ ) + , pAccelerationStructures( pAccelerationStructures_ ) + {} + + VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureKHR( + WriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteDescriptorSetAccelerationStructureKHR( VkWriteDescriptorSetAccelerationStructureKHR const & rhs ) + VULKAN_HPP_NOEXCEPT + : WriteDescriptorSetAccelerationStructureKHR( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSetAccelerationStructureKHR( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + accelerationStructures_ ) + : accelerationStructureCount( static_cast( accelerationStructures_.size() ) ) + , pAccelerationStructures( accelerationStructures_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + WriteDescriptorSetAccelerationStructureKHR & + operator=( WriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteDescriptorSetAccelerationStructureKHR & + operator=( VkWriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR & + setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructureCount = accelerationStructureCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR & setPAccelerationStructures( + const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures_ ) VULKAN_HPP_NOEXCEPT + { + pAccelerationStructures = pAccelerationStructures_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSetAccelerationStructureKHR & setAccelerationStructures( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + accelerationStructures_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructureCount = static_cast( accelerationStructures_.size() ); + pAccelerationStructures = accelerationStructures_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkWriteDescriptorSetAccelerationStructureKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkWriteDescriptorSetAccelerationStructureKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, accelerationStructureCount, pAccelerationStructures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WriteDescriptorSetAccelerationStructureKHR const & ) const = default; +#else + bool operator==( WriteDescriptorSetAccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( accelerationStructureCount == rhs.accelerationStructureCount ) && + ( pAccelerationStructures == rhs.pAccelerationStructures ); +# endif + } + + bool operator!=( WriteDescriptorSetAccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSetAccelerationStructureKHR; + const void * pNext = {}; + uint32_t accelerationStructureCount = {}; + const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR ) == + sizeof( VkWriteDescriptorSetAccelerationStructureKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "WriteDescriptorSetAccelerationStructureKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = WriteDescriptorSetAccelerationStructureKHR; + }; + + struct WriteDescriptorSetAccelerationStructureNV + { + using NativeType = VkWriteDescriptorSetAccelerationStructureNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eWriteDescriptorSetAccelerationStructureNV; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureNV( + uint32_t accelerationStructureCount_ = {}, + const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructures_ = {} ) VULKAN_HPP_NOEXCEPT + : accelerationStructureCount( accelerationStructureCount_ ) + , pAccelerationStructures( pAccelerationStructures_ ) + {} + + VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureNV( + WriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteDescriptorSetAccelerationStructureNV( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : WriteDescriptorSetAccelerationStructureNV( + *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSetAccelerationStructureNV( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + accelerationStructures_ ) + : accelerationStructureCount( static_cast( accelerationStructures_.size() ) ) + , pAccelerationStructures( accelerationStructures_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + WriteDescriptorSetAccelerationStructureNV & + operator=( WriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteDescriptorSetAccelerationStructureNV & + operator=( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV & + setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV & + setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructureCount = accelerationStructureCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV & setPAccelerationStructures( + const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructures_ ) VULKAN_HPP_NOEXCEPT + { + pAccelerationStructures = pAccelerationStructures_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSetAccelerationStructureNV & setAccelerationStructures( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & + accelerationStructures_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructureCount = static_cast( accelerationStructures_.size() ); + pAccelerationStructures = accelerationStructures_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkWriteDescriptorSetAccelerationStructureNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkWriteDescriptorSetAccelerationStructureNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, accelerationStructureCount, pAccelerationStructures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WriteDescriptorSetAccelerationStructureNV const & ) const = default; +#else + bool operator==( WriteDescriptorSetAccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( accelerationStructureCount == rhs.accelerationStructureCount ) && + ( pAccelerationStructures == rhs.pAccelerationStructures ); +# endif + } + + bool operator!=( WriteDescriptorSetAccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSetAccelerationStructureNV; + const void * pNext = {}; + uint32_t accelerationStructureCount = {}; + const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructures = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV ) == + sizeof( VkWriteDescriptorSetAccelerationStructureNV ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "WriteDescriptorSetAccelerationStructureNV is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = WriteDescriptorSetAccelerationStructureNV; + }; + + struct WriteDescriptorSetInlineUniformBlock + { + using NativeType = VkWriteDescriptorSetInlineUniformBlock; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = + StructureType::eWriteDescriptorSetInlineUniformBlock; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR WriteDescriptorSetInlineUniformBlock( uint32_t dataSize_ = {}, + const void * pData_ = {} ) VULKAN_HPP_NOEXCEPT + : dataSize( dataSize_ ) + , pData( pData_ ) + {} + + VULKAN_HPP_CONSTEXPR WriteDescriptorSetInlineUniformBlock( WriteDescriptorSetInlineUniformBlock const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + WriteDescriptorSetInlineUniformBlock( VkWriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT + : WriteDescriptorSetInlineUniformBlock( *reinterpret_cast( &rhs ) ) + {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + WriteDescriptorSetInlineUniformBlock( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & data_ ) + : dataSize( static_cast( data_.size() * sizeof( T ) ) ), pData( data_.data() ) + {} +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + WriteDescriptorSetInlineUniformBlock & + operator=( WriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteDescriptorSetInlineUniformBlock & + operator=( VkWriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock & setDataSize( uint32_t dataSize_ ) VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + WriteDescriptorSetInlineUniformBlock & + setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & data_ ) VULKAN_HPP_NOEXCEPT + { + dataSize = static_cast( data_.size() * sizeof( T ) ); + pData = data_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkWriteDescriptorSetInlineUniformBlock const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkWriteDescriptorSetInlineUniformBlock &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std:: + tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dataSize, pData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WriteDescriptorSetInlineUniformBlock const & ) const = default; +#else + bool operator==( WriteDescriptorSetInlineUniformBlock const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData ); +# endif + } + + bool operator!=( WriteDescriptorSetInlineUniformBlock const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSetInlineUniformBlock; + const void * pNext = {}; + uint32_t dataSize = {}; + const void * pData = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock ) == + sizeof( VkWriteDescriptorSetInlineUniformBlock ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( + std::is_nothrow_move_constructible::value, + "WriteDescriptorSetInlineUniformBlock is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = WriteDescriptorSetInlineUniformBlock; + }; + using WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock; + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + struct XcbSurfaceCreateInfoKHR + { + using NativeType = VkXcbSurfaceCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eXcbSurfaceCreateInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR XcbSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags_ = {}, + xcb_connection_t * connection_ = {}, + xcb_window_t window_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , connection( connection_ ) + , window( window_ ) + {} + + VULKAN_HPP_CONSTEXPR XcbSurfaceCreateInfoKHR( XcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : XcbSurfaceCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + XcbSurfaceCreateInfoKHR & operator=( XcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + XcbSurfaceCreateInfoKHR & operator=( VkXcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & + setConnection( xcb_connection_t * connection_ ) VULKAN_HPP_NOEXCEPT + { + connection = connection_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setWindow( xcb_window_t window_ ) VULKAN_HPP_NOEXCEPT + { + window = window_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkXcbSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkXcbSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, connection, window ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( XcbSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = connection <=> rhs.connection; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &window, &rhs.window, sizeof( xcb_window_t ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( XcbSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( connection == rhs.connection ) && ( memcmp( &window, &rhs.window, sizeof( xcb_window_t ) ) == 0 ); + } + + bool operator!=( XcbSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eXcbSurfaceCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags = {}; + xcb_connection_t * connection = {}; + xcb_window_t window = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR ) == + sizeof( VkXcbSurfaceCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "XcbSurfaceCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = XcbSurfaceCreateInfoKHR; + }; +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + struct XlibSurfaceCreateInfoKHR + { + using NativeType = VkXlibSurfaceCreateInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eXlibSurfaceCreateInfoKHR; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR XlibSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags_ = {}, + Display * dpy_ = {}, + Window window_ = {} ) VULKAN_HPP_NOEXCEPT + : flags( flags_ ) + , dpy( dpy_ ) + , window( window_ ) + {} + + VULKAN_HPP_CONSTEXPR XlibSurfaceCreateInfoKHR( XlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : XlibSurfaceCreateInfoKHR( *reinterpret_cast( &rhs ) ) + {} +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + XlibSurfaceCreateInfoKHR & operator=( XlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + XlibSurfaceCreateInfoKHR & operator=( VkXlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & + setFlags( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setDpy( Display * dpy_ ) VULKAN_HPP_NOEXCEPT + { + dpy = dpy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setWindow( Window window_ ) VULKAN_HPP_NOEXCEPT + { + window = window_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + explicit operator VkXlibSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + explicit operator VkXlibSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if !defined( __GNUC__ ) || ( 70500 < GCC_VERSION ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, dpy, window ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( XlibSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = dpy <=> rhs.dpy; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &window, &rhs.window, sizeof( Window ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( XlibSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dpy == rhs.dpy ) && + ( memcmp( &window, &rhs.window, sizeof( Window ) ) == 0 ); + } + + bool operator!=( XlibSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eXlibSurfaceCreateInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags = {}; + Display * dpy = {}; + Window window = {}; + }; + VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR ) == + sizeof( VkXlibSurfaceCreateInfoKHR ), + "struct and wrapper have different size!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); + VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "XlibSurfaceCreateInfoKHR is not nothrow_move_constructible!" ); + + template <> + struct CppType + { + using Type = XlibSurfaceCreateInfoKHR; + }; +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +} // namespace VULKAN_HPP_NAMESPACE +#endif diff --git a/Externals/Vulkan/Include/vulkan/vulkan_vi.h b/Externals/Vulkan/Include/vulkan/vulkan_vi.h index 6fb66f9dd284..0355e7a162ca 100644 --- a/Externals/Vulkan/Include/vulkan/vulkan_vi.h +++ b/Externals/Vulkan/Include/vulkan/vulkan_vi.h @@ -2,19 +2,9 @@ #define VULKAN_VI_H_ 1 /* -** Copyright (c) 2015-2019 The Khronos Group Inc. +** Copyright 2015-2022 The Khronos Group Inc. ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. +** SPDX-License-Identifier: Apache-2.0 */ /* diff --git a/Externals/Vulkan/Include/vulkan/vulkan_wayland.h b/Externals/Vulkan/Include/vulkan/vulkan_wayland.h index 599d05b24a53..9afd0b76d5f1 100644 --- a/Externals/Vulkan/Include/vulkan/vulkan_wayland.h +++ b/Externals/Vulkan/Include/vulkan/vulkan_wayland.h @@ -2,19 +2,9 @@ #define VULKAN_WAYLAND_H_ 1 /* -** Copyright (c) 2015-2019 The Khronos Group Inc. +** Copyright 2015-2022 The Khronos Group Inc. ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. +** SPDX-License-Identifier: Apache-2.0 */ /* diff --git a/Externals/Vulkan/Include/vulkan/vulkan_win32.h b/Externals/Vulkan/Include/vulkan/vulkan_win32.h index 20a1dc0e5883..affe0c02aefb 100644 --- a/Externals/Vulkan/Include/vulkan/vulkan_win32.h +++ b/Externals/Vulkan/Include/vulkan/vulkan_win32.h @@ -2,19 +2,9 @@ #define VULKAN_WIN32_H_ 1 /* -** Copyright (c) 2015-2019 The Khronos Group Inc. +** Copyright 2015-2022 The Khronos Group Inc. ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -272,9 +262,6 @@ typedef enum VkFullScreenExclusiveEXT { VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1, VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2, VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3, - VK_FULL_SCREEN_EXCLUSIVE_BEGIN_RANGE_EXT = VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT, - VK_FULL_SCREEN_EXCLUSIVE_END_RANGE_EXT = VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT, - VK_FULL_SCREEN_EXCLUSIVE_RANGE_SIZE_EXT = (VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT - VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT + 1), VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 0x7FFFFFFF } VkFullScreenExclusiveEXT; typedef struct VkSurfaceFullScreenExclusiveInfoEXT { diff --git a/Externals/Vulkan/Include/vulkan/vulkan_xcb.h b/Externals/Vulkan/Include/vulkan/vulkan_xcb.h index 4cc0bc0cec5b..68e61b88f0dc 100644 --- a/Externals/Vulkan/Include/vulkan/vulkan_xcb.h +++ b/Externals/Vulkan/Include/vulkan/vulkan_xcb.h @@ -2,19 +2,9 @@ #define VULKAN_XCB_H_ 1 /* -** Copyright (c) 2015-2019 The Khronos Group Inc. +** Copyright 2015-2022 The Khronos Group Inc. ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. +** SPDX-License-Identifier: Apache-2.0 */ /* diff --git a/Externals/Vulkan/Include/vulkan/vulkan_xlib.h b/Externals/Vulkan/Include/vulkan/vulkan_xlib.h index ee2b48accb0a..ea5360ab647b 100644 --- a/Externals/Vulkan/Include/vulkan/vulkan_xlib.h +++ b/Externals/Vulkan/Include/vulkan/vulkan_xlib.h @@ -2,19 +2,9 @@ #define VULKAN_XLIB_H_ 1 /* -** Copyright (c) 2015-2019 The Khronos Group Inc. +** Copyright 2015-2022 The Khronos Group Inc. ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. +** SPDX-License-Identifier: Apache-2.0 */ /* diff --git a/Externals/Vulkan/Include/vulkan/vulkan_xlib_xrandr.h b/Externals/Vulkan/Include/vulkan/vulkan_xlib_xrandr.h index 08c4fd729cd2..8fc35cfc56e4 100644 --- a/Externals/Vulkan/Include/vulkan/vulkan_xlib_xrandr.h +++ b/Externals/Vulkan/Include/vulkan/vulkan_xlib_xrandr.h @@ -2,19 +2,9 @@ #define VULKAN_XLIB_XRANDR_H_ 1 /* -** Copyright (c) 2015-2019 The Khronos Group Inc. +** Copyright 2015-2022 The Khronos Group Inc. ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. +** SPDX-License-Identifier: Apache-2.0 */ /* diff --git a/Externals/bzip2/bzip2.vcxproj b/Externals/bzip2/bzip2.vcxproj index cd3c043b2d41..4b9ab54472e7 100644 --- a/Externals/bzip2/bzip2.vcxproj +++ b/Externals/bzip2/bzip2.vcxproj @@ -1,5 +1,5 @@ - + diff --git a/Externals/bzip2/bzip2.vcxproj.filters b/Externals/bzip2/bzip2.vcxproj.filters index b41040f0928a..5521367b944e 100644 --- a/Externals/bzip2/bzip2.vcxproj.filters +++ b/Externals/bzip2/bzip2.vcxproj.filters @@ -1,5 +1,5 @@ - + diff --git a/Externals/cpp-optparse/cpp-optparse.vcxproj b/Externals/cpp-optparse/cpp-optparse.vcxproj index 7c7d89099a2e..93196962de80 100644 --- a/Externals/cpp-optparse/cpp-optparse.vcxproj +++ b/Externals/cpp-optparse/cpp-optparse.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/cubeb/msvc/cubeb.vcxproj b/Externals/cubeb/msvc/cubeb.vcxproj index cc2a52cea136..d492b4ac9c50 100644 --- a/Externals/cubeb/msvc/cubeb.vcxproj +++ b/Externals/cubeb/msvc/cubeb.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/cubeb/msvc/cubeb.vcxproj.filters b/Externals/cubeb/msvc/cubeb.vcxproj.filters index a695c1c9ecbc..959f152aaf73 100644 --- a/Externals/cubeb/msvc/cubeb.vcxproj.filters +++ b/Externals/cubeb/msvc/cubeb.vcxproj.filters @@ -1,5 +1,5 @@  - + diff --git a/Externals/curl/curl.vcxproj b/Externals/curl/curl.vcxproj index 9f74333f734f..a9ba10f6c785 100644 --- a/Externals/curl/curl.vcxproj +++ b/Externals/curl/curl.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/discord-rpc/src/discord-rpc.vcxproj b/Externals/discord-rpc/src/discord-rpc.vcxproj index b22a000ef160..a3f1b38e7fe9 100644 --- a/Externals/discord-rpc/src/discord-rpc.vcxproj +++ b/Externals/discord-rpc/src/discord-rpc.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/ed25519/ed25519.vcxproj b/Externals/ed25519/ed25519.vcxproj index 2aa00291d7a4..fa79d4deb9eb 100644 --- a/Externals/ed25519/ed25519.vcxproj +++ b/Externals/ed25519/ed25519.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/ed25519/ed25519.vcxproj.filters b/Externals/ed25519/ed25519.vcxproj.filters index e9a9adaeb9b0..d87c39cc1dcd 100644 --- a/Externals/ed25519/ed25519.vcxproj.filters +++ b/Externals/ed25519/ed25519.vcxproj.filters @@ -1,5 +1,5 @@  - + diff --git a/Externals/enet/enet.vcxproj b/Externals/enet/enet.vcxproj index 75e3b4a7f6db..7506ac0e8926 100644 --- a/Externals/enet/enet.vcxproj +++ b/Externals/enet/enet.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/enet/enet.vcxproj.filters b/Externals/enet/enet.vcxproj.filters index bb53359ac3a7..6a0840d89f66 100644 --- a/Externals/enet/enet.vcxproj.filters +++ b/Externals/enet/enet.vcxproj.filters @@ -1,5 +1,5 @@  - + {a5756b80-36f2-45f6-b1f1-b67082477376} diff --git a/Externals/ffmpeg/include/libavcodec/avcodec.h b/Externals/ffmpeg/include/libavcodec/avcodec.h deleted file mode 100644 index e5e7f4225d44..000000000000 --- a/Externals/ffmpeg/include/libavcodec/avcodec.h +++ /dev/null @@ -1,6241 +0,0 @@ -/* - * copyright (c) 2001 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_AVCODEC_H -#define AVCODEC_AVCODEC_H - -/** - * @file - * @ingroup libavc - * Libavcodec external API header - */ - -#include -#include "libavutil/samplefmt.h" -#include "libavutil/attributes.h" -#include "libavutil/avutil.h" -#include "libavutil/buffer.h" -#include "libavutil/cpu.h" -#include "libavutil/channel_layout.h" -#include "libavutil/dict.h" -#include "libavutil/frame.h" -#include "libavutil/log.h" -#include "libavutil/pixfmt.h" -#include "libavutil/rational.h" - -#include "version.h" - -/** - * @defgroup libavc libavcodec - * Encoding/Decoding Library - * - * @{ - * - * @defgroup lavc_decoding Decoding - * @{ - * @} - * - * @defgroup lavc_encoding Encoding - * @{ - * @} - * - * @defgroup lavc_codec Codecs - * @{ - * @defgroup lavc_codec_native Native Codecs - * @{ - * @} - * @defgroup lavc_codec_wrappers External library wrappers - * @{ - * @} - * @defgroup lavc_codec_hwaccel Hardware Accelerators bridge - * @{ - * @} - * @} - * @defgroup lavc_internal Internal - * @{ - * @} - * @} - */ - -/** - * @ingroup libavc - * @defgroup lavc_encdec send/receive encoding and decoding API overview - * @{ - * - * The avcodec_send_packet()/avcodec_receive_frame()/avcodec_send_frame()/ - * avcodec_receive_packet() functions provide an encode/decode API, which - * decouples input and output. - * - * The API is very similar for encoding/decoding and audio/video, and works as - * follows: - * - Set up and open the AVCodecContext as usual. - * - Send valid input: - * - For decoding, call avcodec_send_packet() to give the decoder raw - * compressed data in an AVPacket. - * - For encoding, call avcodec_send_frame() to give the decoder an AVFrame - * containing uncompressed audio or video. - * In both cases, it is recommended that AVPackets and AVFrames are - * refcounted, or libavcodec might have to copy the input data. (libavformat - * always returns refcounted AVPackets, and av_frame_get_buffer() allocates - * refcounted AVFrames.) - * - Receive output in a loop. Periodically call one of the avcodec_receive_*() - * functions and process their output: - * - For decoding, call avcodec_receive_frame(). On success, it will return - * an AVFrame containing uncompressed audio or video data. - * - For encoding, call avcodec_receive_packet(). On success, it will return - * an AVPacket with a compressed frame. - * Repeat this call until it returns AVERROR(EAGAIN) or an error. The - * AVERROR(EAGAIN) return value means that new input data is required to - * return new output. In this case, continue with sending input. For each - * input frame/packet, the codec will typically return 1 output frame/packet, - * but it can also be 0 or more than 1. - * - * At the beginning of decoding or encoding, the codec might accept multiple - * input frames/packets without returning a frame, until its internal buffers - * are filled. This situation is handled transparently if you follow the steps - * outlined above. - * - * End of stream situations. These require "flushing" (aka draining) the codec, - * as the codec might buffer multiple frames or packets internally for - * performance or out of necessity (consider B-frames). - * This is handled as follows: - * - Instead of valid input, send NULL to the avcodec_send_packet() (decoding) - * or avcodec_send_frame() (encoding) functions. This will enter draining - * mode. - * - Call avcodec_receive_frame() (decoding) or avcodec_receive_packet() - * (encoding) in a loop until AVERROR_EOF is returned. The functions will - * not return AVERROR(EAGAIN), unless you forgot to enter draining mode. - * - Before decoding can be resumed again, the codec has to be reset with - * avcodec_flush_buffers(). - * - * Using the API as outlined above is highly recommended. But it is also - * possible to call functions outside of this rigid schema. For example, you can - * call avcodec_send_packet() repeatedly without calling - * avcodec_receive_frame(). In this case, avcodec_send_packet() will succeed - * until the codec's internal buffer has been filled up (which is typically of - * size 1 per output frame, after initial input), and then reject input with - * AVERROR(EAGAIN). Once it starts rejecting input, you have no choice but to - * read at least some output. - * - * Not all codecs will follow a rigid and predictable dataflow; the only - * guarantee is that an AVERROR(EAGAIN) return value on a send/receive call on - * one end implies that a receive/send call on the other end will succeed. In - * general, no codec will permit unlimited buffering of input or output. - * - * This API replaces the following legacy functions: - * - avcodec_decode_video2() and avcodec_decode_audio4(): - * Use avcodec_send_packet() to feed input to the decoder, then use - * avcodec_receive_frame() to receive decoded frames after each packet. - * Unlike with the old video decoding API, multiple frames might result from - * a packet. For audio, splitting the input packet into frames by partially - * decoding packets becomes transparent to the API user. You never need to - * feed an AVPacket to the API twice. - * Additionally, sending a flush/draining packet is required only once. - * - avcodec_encode_video2()/avcodec_encode_audio2(): - * Use avcodec_send_frame() to feed input to the encoder, then use - * avcodec_receive_packet() to receive encoded packets. - * Providing user-allocated buffers for avcodec_receive_packet() is not - * possible. - * - The new API does not handle subtitles yet. - * - * Mixing new and old function calls on the same AVCodecContext is not allowed, - * and will result in undefined behavior. - * - * Some codecs might require using the new API; using the old API will return - * an error when calling it. - * @} - */ - -/** - * @defgroup lavc_core Core functions/structures. - * @ingroup libavc - * - * Basic definitions, functions for querying libavcodec capabilities, - * allocating core structures, etc. - * @{ - */ - - -/** - * Identify the syntax and semantics of the bitstream. - * The principle is roughly: - * Two decoders with the same ID can decode the same streams. - * Two encoders with the same ID can encode compatible streams. - * There may be slight deviations from the principle due to implementation - * details. - * - * If you add a codec ID to this list, add it so that - * 1. no value of an existing codec ID changes (that would break ABI), - * 2. it is as close as possible to similar codecs - * - * After adding new codec IDs, do not forget to add an entry to the codec - * descriptor list and bump libavcodec minor version. - */ -enum AVCodecID { - AV_CODEC_ID_NONE, - - /* video codecs */ - AV_CODEC_ID_MPEG1VIDEO, - AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding -#if FF_API_XVMC - AV_CODEC_ID_MPEG2VIDEO_XVMC, -#endif /* FF_API_XVMC */ - AV_CODEC_ID_H261, - AV_CODEC_ID_H263, - AV_CODEC_ID_RV10, - AV_CODEC_ID_RV20, - AV_CODEC_ID_MJPEG, - AV_CODEC_ID_MJPEGB, - AV_CODEC_ID_LJPEG, - AV_CODEC_ID_SP5X, - AV_CODEC_ID_JPEGLS, - AV_CODEC_ID_MPEG4, - AV_CODEC_ID_RAWVIDEO, - AV_CODEC_ID_MSMPEG4V1, - AV_CODEC_ID_MSMPEG4V2, - AV_CODEC_ID_MSMPEG4V3, - AV_CODEC_ID_WMV1, - AV_CODEC_ID_WMV2, - AV_CODEC_ID_H263P, - AV_CODEC_ID_H263I, - AV_CODEC_ID_FLV1, - AV_CODEC_ID_SVQ1, - AV_CODEC_ID_SVQ3, - AV_CODEC_ID_DVVIDEO, - AV_CODEC_ID_HUFFYUV, - AV_CODEC_ID_CYUV, - AV_CODEC_ID_H264, - AV_CODEC_ID_INDEO3, - AV_CODEC_ID_VP3, - AV_CODEC_ID_THEORA, - AV_CODEC_ID_ASV1, - AV_CODEC_ID_ASV2, - AV_CODEC_ID_FFV1, - AV_CODEC_ID_4XM, - AV_CODEC_ID_VCR1, - AV_CODEC_ID_CLJR, - AV_CODEC_ID_MDEC, - AV_CODEC_ID_ROQ, - AV_CODEC_ID_INTERPLAY_VIDEO, - AV_CODEC_ID_XAN_WC3, - AV_CODEC_ID_XAN_WC4, - AV_CODEC_ID_RPZA, - AV_CODEC_ID_CINEPAK, - AV_CODEC_ID_WS_VQA, - AV_CODEC_ID_MSRLE, - AV_CODEC_ID_MSVIDEO1, - AV_CODEC_ID_IDCIN, - AV_CODEC_ID_8BPS, - AV_CODEC_ID_SMC, - AV_CODEC_ID_FLIC, - AV_CODEC_ID_TRUEMOTION1, - AV_CODEC_ID_VMDVIDEO, - AV_CODEC_ID_MSZH, - AV_CODEC_ID_ZLIB, - AV_CODEC_ID_QTRLE, - AV_CODEC_ID_TSCC, - AV_CODEC_ID_ULTI, - AV_CODEC_ID_QDRAW, - AV_CODEC_ID_VIXL, - AV_CODEC_ID_QPEG, - AV_CODEC_ID_PNG, - AV_CODEC_ID_PPM, - AV_CODEC_ID_PBM, - AV_CODEC_ID_PGM, - AV_CODEC_ID_PGMYUV, - AV_CODEC_ID_PAM, - AV_CODEC_ID_FFVHUFF, - AV_CODEC_ID_RV30, - AV_CODEC_ID_RV40, - AV_CODEC_ID_VC1, - AV_CODEC_ID_WMV3, - AV_CODEC_ID_LOCO, - AV_CODEC_ID_WNV1, - AV_CODEC_ID_AASC, - AV_CODEC_ID_INDEO2, - AV_CODEC_ID_FRAPS, - AV_CODEC_ID_TRUEMOTION2, - AV_CODEC_ID_BMP, - AV_CODEC_ID_CSCD, - AV_CODEC_ID_MMVIDEO, - AV_CODEC_ID_ZMBV, - AV_CODEC_ID_AVS, - AV_CODEC_ID_SMACKVIDEO, - AV_CODEC_ID_NUV, - AV_CODEC_ID_KMVC, - AV_CODEC_ID_FLASHSV, - AV_CODEC_ID_CAVS, - AV_CODEC_ID_JPEG2000, - AV_CODEC_ID_VMNC, - AV_CODEC_ID_VP5, - AV_CODEC_ID_VP6, - AV_CODEC_ID_VP6F, - AV_CODEC_ID_TARGA, - AV_CODEC_ID_DSICINVIDEO, - AV_CODEC_ID_TIERTEXSEQVIDEO, - AV_CODEC_ID_TIFF, - AV_CODEC_ID_GIF, - AV_CODEC_ID_DXA, - AV_CODEC_ID_DNXHD, - AV_CODEC_ID_THP, - AV_CODEC_ID_SGI, - AV_CODEC_ID_C93, - AV_CODEC_ID_BETHSOFTVID, - AV_CODEC_ID_PTX, - AV_CODEC_ID_TXD, - AV_CODEC_ID_VP6A, - AV_CODEC_ID_AMV, - AV_CODEC_ID_VB, - AV_CODEC_ID_PCX, - AV_CODEC_ID_SUNRAST, - AV_CODEC_ID_INDEO4, - AV_CODEC_ID_INDEO5, - AV_CODEC_ID_MIMIC, - AV_CODEC_ID_RL2, - AV_CODEC_ID_ESCAPE124, - AV_CODEC_ID_DIRAC, - AV_CODEC_ID_BFI, - AV_CODEC_ID_CMV, - AV_CODEC_ID_MOTIONPIXELS, - AV_CODEC_ID_TGV, - AV_CODEC_ID_TGQ, - AV_CODEC_ID_TQI, - AV_CODEC_ID_AURA, - AV_CODEC_ID_AURA2, - AV_CODEC_ID_V210X, - AV_CODEC_ID_TMV, - AV_CODEC_ID_V210, - AV_CODEC_ID_DPX, - AV_CODEC_ID_MAD, - AV_CODEC_ID_FRWU, - AV_CODEC_ID_FLASHSV2, - AV_CODEC_ID_CDGRAPHICS, - AV_CODEC_ID_R210, - AV_CODEC_ID_ANM, - AV_CODEC_ID_BINKVIDEO, - AV_CODEC_ID_IFF_ILBM, -#define AV_CODEC_ID_IFF_BYTERUN1 AV_CODEC_ID_IFF_ILBM - AV_CODEC_ID_KGV1, - AV_CODEC_ID_YOP, - AV_CODEC_ID_VP8, - AV_CODEC_ID_PICTOR, - AV_CODEC_ID_ANSI, - AV_CODEC_ID_A64_MULTI, - AV_CODEC_ID_A64_MULTI5, - AV_CODEC_ID_R10K, - AV_CODEC_ID_MXPEG, - AV_CODEC_ID_LAGARITH, - AV_CODEC_ID_PRORES, - AV_CODEC_ID_JV, - AV_CODEC_ID_DFA, - AV_CODEC_ID_WMV3IMAGE, - AV_CODEC_ID_VC1IMAGE, - AV_CODEC_ID_UTVIDEO, - AV_CODEC_ID_BMV_VIDEO, - AV_CODEC_ID_VBLE, - AV_CODEC_ID_DXTORY, - AV_CODEC_ID_V410, - AV_CODEC_ID_XWD, - AV_CODEC_ID_CDXL, - AV_CODEC_ID_XBM, - AV_CODEC_ID_ZEROCODEC, - AV_CODEC_ID_MSS1, - AV_CODEC_ID_MSA1, - AV_CODEC_ID_TSCC2, - AV_CODEC_ID_MTS2, - AV_CODEC_ID_CLLC, - AV_CODEC_ID_MSS2, - AV_CODEC_ID_VP9, - AV_CODEC_ID_AIC, - AV_CODEC_ID_ESCAPE130, - AV_CODEC_ID_G2M, - AV_CODEC_ID_WEBP, - AV_CODEC_ID_HNM4_VIDEO, - AV_CODEC_ID_HEVC, -#define AV_CODEC_ID_H265 AV_CODEC_ID_HEVC - AV_CODEC_ID_FIC, - AV_CODEC_ID_ALIAS_PIX, - AV_CODEC_ID_BRENDER_PIX, - AV_CODEC_ID_PAF_VIDEO, - AV_CODEC_ID_EXR, - AV_CODEC_ID_VP7, - AV_CODEC_ID_SANM, - AV_CODEC_ID_SGIRLE, - AV_CODEC_ID_MVC1, - AV_CODEC_ID_MVC2, - AV_CODEC_ID_HQX, - AV_CODEC_ID_TDSC, - AV_CODEC_ID_HQ_HQA, - AV_CODEC_ID_HAP, - AV_CODEC_ID_DDS, - AV_CODEC_ID_DXV, - AV_CODEC_ID_SCREENPRESSO, - AV_CODEC_ID_RSCC, - - AV_CODEC_ID_Y41P = 0x8000, - AV_CODEC_ID_AVRP, - AV_CODEC_ID_012V, - AV_CODEC_ID_AVUI, - AV_CODEC_ID_AYUV, - AV_CODEC_ID_TARGA_Y216, - AV_CODEC_ID_V308, - AV_CODEC_ID_V408, - AV_CODEC_ID_YUV4, - AV_CODEC_ID_AVRN, - AV_CODEC_ID_CPIA, - AV_CODEC_ID_XFACE, - AV_CODEC_ID_SNOW, - AV_CODEC_ID_SMVJPEG, - AV_CODEC_ID_APNG, - AV_CODEC_ID_DAALA, - AV_CODEC_ID_CFHD, - AV_CODEC_ID_TRUEMOTION2RT, - AV_CODEC_ID_M101, - AV_CODEC_ID_MAGICYUV, - AV_CODEC_ID_SHEERVIDEO, - AV_CODEC_ID_YLC, - - /* various PCM "codecs" */ - AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs - AV_CODEC_ID_PCM_S16LE = 0x10000, - AV_CODEC_ID_PCM_S16BE, - AV_CODEC_ID_PCM_U16LE, - AV_CODEC_ID_PCM_U16BE, - AV_CODEC_ID_PCM_S8, - AV_CODEC_ID_PCM_U8, - AV_CODEC_ID_PCM_MULAW, - AV_CODEC_ID_PCM_ALAW, - AV_CODEC_ID_PCM_S32LE, - AV_CODEC_ID_PCM_S32BE, - AV_CODEC_ID_PCM_U32LE, - AV_CODEC_ID_PCM_U32BE, - AV_CODEC_ID_PCM_S24LE, - AV_CODEC_ID_PCM_S24BE, - AV_CODEC_ID_PCM_U24LE, - AV_CODEC_ID_PCM_U24BE, - AV_CODEC_ID_PCM_S24DAUD, - AV_CODEC_ID_PCM_ZORK, - AV_CODEC_ID_PCM_S16LE_PLANAR, - AV_CODEC_ID_PCM_DVD, - AV_CODEC_ID_PCM_F32BE, - AV_CODEC_ID_PCM_F32LE, - AV_CODEC_ID_PCM_F64BE, - AV_CODEC_ID_PCM_F64LE, - AV_CODEC_ID_PCM_BLURAY, - AV_CODEC_ID_PCM_LXF, - AV_CODEC_ID_S302M, - AV_CODEC_ID_PCM_S8_PLANAR, - AV_CODEC_ID_PCM_S24LE_PLANAR, - AV_CODEC_ID_PCM_S32LE_PLANAR, - AV_CODEC_ID_PCM_S16BE_PLANAR, - - AV_CODEC_ID_PCM_S64LE = 0x10800, - AV_CODEC_ID_PCM_S64BE, - - /* various ADPCM codecs */ - AV_CODEC_ID_ADPCM_IMA_QT = 0x11000, - AV_CODEC_ID_ADPCM_IMA_WAV, - AV_CODEC_ID_ADPCM_IMA_DK3, - AV_CODEC_ID_ADPCM_IMA_DK4, - AV_CODEC_ID_ADPCM_IMA_WS, - AV_CODEC_ID_ADPCM_IMA_SMJPEG, - AV_CODEC_ID_ADPCM_MS, - AV_CODEC_ID_ADPCM_4XM, - AV_CODEC_ID_ADPCM_XA, - AV_CODEC_ID_ADPCM_ADX, - AV_CODEC_ID_ADPCM_EA, - AV_CODEC_ID_ADPCM_G726, - AV_CODEC_ID_ADPCM_CT, - AV_CODEC_ID_ADPCM_SWF, - AV_CODEC_ID_ADPCM_YAMAHA, - AV_CODEC_ID_ADPCM_SBPRO_4, - AV_CODEC_ID_ADPCM_SBPRO_3, - AV_CODEC_ID_ADPCM_SBPRO_2, - AV_CODEC_ID_ADPCM_THP, - AV_CODEC_ID_ADPCM_IMA_AMV, - AV_CODEC_ID_ADPCM_EA_R1, - AV_CODEC_ID_ADPCM_EA_R3, - AV_CODEC_ID_ADPCM_EA_R2, - AV_CODEC_ID_ADPCM_IMA_EA_SEAD, - AV_CODEC_ID_ADPCM_IMA_EA_EACS, - AV_CODEC_ID_ADPCM_EA_XAS, - AV_CODEC_ID_ADPCM_EA_MAXIS_XA, - AV_CODEC_ID_ADPCM_IMA_ISS, - AV_CODEC_ID_ADPCM_G722, - AV_CODEC_ID_ADPCM_IMA_APC, - AV_CODEC_ID_ADPCM_VIMA, -#if FF_API_VIMA_DECODER - AV_CODEC_ID_VIMA = AV_CODEC_ID_ADPCM_VIMA, -#endif - - AV_CODEC_ID_ADPCM_AFC = 0x11800, - AV_CODEC_ID_ADPCM_IMA_OKI, - AV_CODEC_ID_ADPCM_DTK, - AV_CODEC_ID_ADPCM_IMA_RAD, - AV_CODEC_ID_ADPCM_G726LE, - AV_CODEC_ID_ADPCM_THP_LE, - AV_CODEC_ID_ADPCM_PSX, - AV_CODEC_ID_ADPCM_AICA, - AV_CODEC_ID_ADPCM_IMA_DAT4, - AV_CODEC_ID_ADPCM_MTAF, - - /* AMR */ - AV_CODEC_ID_AMR_NB = 0x12000, - AV_CODEC_ID_AMR_WB, - - /* RealAudio codecs*/ - AV_CODEC_ID_RA_144 = 0x13000, - AV_CODEC_ID_RA_288, - - /* various DPCM codecs */ - AV_CODEC_ID_ROQ_DPCM = 0x14000, - AV_CODEC_ID_INTERPLAY_DPCM, - AV_CODEC_ID_XAN_DPCM, - AV_CODEC_ID_SOL_DPCM, - - AV_CODEC_ID_SDX2_DPCM = 0x14800, - - /* audio codecs */ - AV_CODEC_ID_MP2 = 0x15000, - AV_CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3 - AV_CODEC_ID_AAC, - AV_CODEC_ID_AC3, - AV_CODEC_ID_DTS, - AV_CODEC_ID_VORBIS, - AV_CODEC_ID_DVAUDIO, - AV_CODEC_ID_WMAV1, - AV_CODEC_ID_WMAV2, - AV_CODEC_ID_MACE3, - AV_CODEC_ID_MACE6, - AV_CODEC_ID_VMDAUDIO, - AV_CODEC_ID_FLAC, - AV_CODEC_ID_MP3ADU, - AV_CODEC_ID_MP3ON4, - AV_CODEC_ID_SHORTEN, - AV_CODEC_ID_ALAC, - AV_CODEC_ID_WESTWOOD_SND1, - AV_CODEC_ID_GSM, ///< as in Berlin toast format - AV_CODEC_ID_QDM2, - AV_CODEC_ID_COOK, - AV_CODEC_ID_TRUESPEECH, - AV_CODEC_ID_TTA, - AV_CODEC_ID_SMACKAUDIO, - AV_CODEC_ID_QCELP, - AV_CODEC_ID_WAVPACK, - AV_CODEC_ID_DSICINAUDIO, - AV_CODEC_ID_IMC, - AV_CODEC_ID_MUSEPACK7, - AV_CODEC_ID_MLP, - AV_CODEC_ID_GSM_MS, /* as found in WAV */ - AV_CODEC_ID_ATRAC3, -#if FF_API_VOXWARE - AV_CODEC_ID_VOXWARE, -#endif - AV_CODEC_ID_APE, - AV_CODEC_ID_NELLYMOSER, - AV_CODEC_ID_MUSEPACK8, - AV_CODEC_ID_SPEEX, - AV_CODEC_ID_WMAVOICE, - AV_CODEC_ID_WMAPRO, - AV_CODEC_ID_WMALOSSLESS, - AV_CODEC_ID_ATRAC3P, - AV_CODEC_ID_EAC3, - AV_CODEC_ID_SIPR, - AV_CODEC_ID_MP1, - AV_CODEC_ID_TWINVQ, - AV_CODEC_ID_TRUEHD, - AV_CODEC_ID_MP4ALS, - AV_CODEC_ID_ATRAC1, - AV_CODEC_ID_BINKAUDIO_RDFT, - AV_CODEC_ID_BINKAUDIO_DCT, - AV_CODEC_ID_AAC_LATM, - AV_CODEC_ID_QDMC, - AV_CODEC_ID_CELT, - AV_CODEC_ID_G723_1, - AV_CODEC_ID_G729, - AV_CODEC_ID_8SVX_EXP, - AV_CODEC_ID_8SVX_FIB, - AV_CODEC_ID_BMV_AUDIO, - AV_CODEC_ID_RALF, - AV_CODEC_ID_IAC, - AV_CODEC_ID_ILBC, - AV_CODEC_ID_OPUS, - AV_CODEC_ID_COMFORT_NOISE, - AV_CODEC_ID_TAK, - AV_CODEC_ID_METASOUND, - AV_CODEC_ID_PAF_AUDIO, - AV_CODEC_ID_ON2AVC, - AV_CODEC_ID_DSS_SP, - - AV_CODEC_ID_FFWAVESYNTH = 0x15800, - AV_CODEC_ID_SONIC, - AV_CODEC_ID_SONIC_LS, - AV_CODEC_ID_EVRC, - AV_CODEC_ID_SMV, - AV_CODEC_ID_DSD_LSBF, - AV_CODEC_ID_DSD_MSBF, - AV_CODEC_ID_DSD_LSBF_PLANAR, - AV_CODEC_ID_DSD_MSBF_PLANAR, - AV_CODEC_ID_4GV, - AV_CODEC_ID_INTERPLAY_ACM, - AV_CODEC_ID_XMA1, - AV_CODEC_ID_XMA2, - AV_CODEC_ID_DST, - - /* subtitle codecs */ - AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs. - AV_CODEC_ID_DVD_SUBTITLE = 0x17000, - AV_CODEC_ID_DVB_SUBTITLE, - AV_CODEC_ID_TEXT, ///< raw UTF-8 text - AV_CODEC_ID_XSUB, - AV_CODEC_ID_SSA, - AV_CODEC_ID_MOV_TEXT, - AV_CODEC_ID_HDMV_PGS_SUBTITLE, - AV_CODEC_ID_DVB_TELETEXT, - AV_CODEC_ID_SRT, - - AV_CODEC_ID_MICRODVD = 0x17800, - AV_CODEC_ID_EIA_608, - AV_CODEC_ID_JACOSUB, - AV_CODEC_ID_SAMI, - AV_CODEC_ID_REALTEXT, - AV_CODEC_ID_STL, - AV_CODEC_ID_SUBVIEWER1, - AV_CODEC_ID_SUBVIEWER, - AV_CODEC_ID_SUBRIP, - AV_CODEC_ID_WEBVTT, - AV_CODEC_ID_MPL2, - AV_CODEC_ID_VPLAYER, - AV_CODEC_ID_PJS, - AV_CODEC_ID_ASS, - AV_CODEC_ID_HDMV_TEXT_SUBTITLE, - - /* other specific kind of codecs (generally used for attachments) */ - AV_CODEC_ID_FIRST_UNKNOWN = 0x18000, ///< A dummy ID pointing at the start of various fake codecs. - AV_CODEC_ID_TTF = 0x18000, - - AV_CODEC_ID_SCTE_35, ///< Contain timestamp estimated through PCR of program stream. - AV_CODEC_ID_BINTEXT = 0x18800, - AV_CODEC_ID_XBIN, - AV_CODEC_ID_IDF, - AV_CODEC_ID_OTF, - AV_CODEC_ID_SMPTE_KLV, - AV_CODEC_ID_DVD_NAV, - AV_CODEC_ID_TIMED_ID3, - AV_CODEC_ID_BIN_DATA, - - - AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it - - AV_CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS - * stream (only used by libavformat) */ - AV_CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems - * stream (only used by libavformat) */ - AV_CODEC_ID_FFMETADATA = 0x21000, ///< Dummy codec for streams containing only metadata information. - AV_CODEC_ID_WRAPPED_AVFRAME = 0x21001, ///< Passthrough codec, AVFrames wrapped in AVPacket -}; - -/** - * This struct describes the properties of a single codec described by an - * AVCodecID. - * @see avcodec_descriptor_get() - */ -typedef struct AVCodecDescriptor { - enum AVCodecID id; - enum AVMediaType type; - /** - * Name of the codec described by this descriptor. It is non-empty and - * unique for each codec descriptor. It should contain alphanumeric - * characters and '_' only. - */ - const char *name; - /** - * A more descriptive name for this codec. May be NULL. - */ - const char *long_name; - /** - * Codec properties, a combination of AV_CODEC_PROP_* flags. - */ - int props; - /** - * MIME type(s) associated with the codec. - * May be NULL; if not, a NULL-terminated array of MIME types. - * The first item is always non-NULL and is the preferred MIME type. - */ - const char *const *mime_types; - /** - * If non-NULL, an array of profiles recognized for this codec. - * Terminated with FF_PROFILE_UNKNOWN. - */ - const struct AVProfile *profiles; -} AVCodecDescriptor; - -/** - * Codec uses only intra compression. - * Video codecs only. - */ -#define AV_CODEC_PROP_INTRA_ONLY (1 << 0) -/** - * Codec supports lossy compression. Audio and video codecs only. - * @note a codec may support both lossy and lossless - * compression modes - */ -#define AV_CODEC_PROP_LOSSY (1 << 1) -/** - * Codec supports lossless compression. Audio and video codecs only. - */ -#define AV_CODEC_PROP_LOSSLESS (1 << 2) -/** - * Codec supports frame reordering. That is, the coded order (the order in which - * the encoded packets are output by the encoders / stored / input to the - * decoders) may be different from the presentation order of the corresponding - * frames. - * - * For codecs that do not have this property set, PTS and DTS should always be - * equal. - */ -#define AV_CODEC_PROP_REORDER (1 << 3) -/** - * Subtitle codec is bitmap based - * Decoded AVSubtitle data can be read from the AVSubtitleRect->pict field. - */ -#define AV_CODEC_PROP_BITMAP_SUB (1 << 16) -/** - * Subtitle codec is text based. - * Decoded AVSubtitle data can be read from the AVSubtitleRect->ass field. - */ -#define AV_CODEC_PROP_TEXT_SUB (1 << 17) - -/** - * @ingroup lavc_decoding - * Required number of additionally allocated bytes at the end of the input bitstream for decoding. - * This is mainly needed because some optimized bitstream readers read - * 32 or 64 bit at once and could read over the end.
- * Note: If the first 23 bits of the additional bytes are not 0, then damaged - * MPEG bitstreams could cause overread and segfault. - */ -#define AV_INPUT_BUFFER_PADDING_SIZE 32 - -/** - * @ingroup lavc_encoding - * minimum encoding buffer size - * Used to avoid some checks during header writing. - */ -#define AV_INPUT_BUFFER_MIN_SIZE 16384 - -#if FF_API_WITHOUT_PREFIX -/** - * @deprecated use AV_INPUT_BUFFER_PADDING_SIZE instead - */ -#define FF_INPUT_BUFFER_PADDING_SIZE 32 - -/** - * @deprecated use AV_INPUT_BUFFER_MIN_SIZE instead - */ -#define FF_MIN_BUFFER_SIZE 16384 -#endif /* FF_API_WITHOUT_PREFIX */ - -/** - * @ingroup lavc_encoding - * motion estimation type. - * @deprecated use codec private option instead - */ -#if FF_API_MOTION_EST -enum Motion_Est_ID { - ME_ZERO = 1, ///< no search, that is use 0,0 vector whenever one is needed - ME_FULL, - ME_LOG, - ME_PHODS, - ME_EPZS, ///< enhanced predictive zonal search - ME_X1, ///< reserved for experiments - ME_HEX, ///< hexagon based search - ME_UMH, ///< uneven multi-hexagon search - ME_TESA, ///< transformed exhaustive search algorithm - ME_ITER=50, ///< iterative search -}; -#endif - -/** - * @ingroup lavc_decoding - */ -enum AVDiscard{ - /* We leave some space between them for extensions (drop some - * keyframes for intra-only or drop just some bidir frames). */ - AVDISCARD_NONE =-16, ///< discard nothing - AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi - AVDISCARD_NONREF = 8, ///< discard all non reference - AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames - AVDISCARD_NONINTRA= 24, ///< discard all non intra frames - AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes - AVDISCARD_ALL = 48, ///< discard all -}; - -enum AVAudioServiceType { - AV_AUDIO_SERVICE_TYPE_MAIN = 0, - AV_AUDIO_SERVICE_TYPE_EFFECTS = 1, - AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED = 2, - AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED = 3, - AV_AUDIO_SERVICE_TYPE_DIALOGUE = 4, - AV_AUDIO_SERVICE_TYPE_COMMENTARY = 5, - AV_AUDIO_SERVICE_TYPE_EMERGENCY = 6, - AV_AUDIO_SERVICE_TYPE_VOICE_OVER = 7, - AV_AUDIO_SERVICE_TYPE_KARAOKE = 8, - AV_AUDIO_SERVICE_TYPE_NB , ///< Not part of ABI -}; - -/** - * @ingroup lavc_encoding - */ -typedef struct RcOverride{ - int start_frame; - int end_frame; - int qscale; // If this is 0 then quality_factor will be used instead. - float quality_factor; -} RcOverride; - -#if FF_API_MAX_BFRAMES -/** - * @deprecated there is no libavcodec-wide limit on the number of B-frames - */ -#define FF_MAX_B_FRAMES 16 -#endif - -/* encoding support - These flags can be passed in AVCodecContext.flags before initialization. - Note: Not everything is supported yet. -*/ - -/** - * Allow decoders to produce frames with data planes that are not aligned - * to CPU requirements (e.g. due to cropping). - */ -#define AV_CODEC_FLAG_UNALIGNED (1 << 0) -/** - * Use fixed qscale. - */ -#define AV_CODEC_FLAG_QSCALE (1 << 1) -/** - * 4 MV per MB allowed / advanced prediction for H.263. - */ -#define AV_CODEC_FLAG_4MV (1 << 2) -/** - * Output even those frames that might be corrupted. - */ -#define AV_CODEC_FLAG_OUTPUT_CORRUPT (1 << 3) -/** - * Use qpel MC. - */ -#define AV_CODEC_FLAG_QPEL (1 << 4) -/** - * Use internal 2pass ratecontrol in first pass mode. - */ -#define AV_CODEC_FLAG_PASS1 (1 << 9) -/** - * Use internal 2pass ratecontrol in second pass mode. - */ -#define AV_CODEC_FLAG_PASS2 (1 << 10) -/** - * loop filter. - */ -#define AV_CODEC_FLAG_LOOP_FILTER (1 << 11) -/** - * Only decode/encode grayscale. - */ -#define AV_CODEC_FLAG_GRAY (1 << 13) -/** - * error[?] variables will be set during encoding. - */ -#define AV_CODEC_FLAG_PSNR (1 << 15) -/** - * Input bitstream might be truncated at a random location - * instead of only at frame boundaries. - */ -#define AV_CODEC_FLAG_TRUNCATED (1 << 16) -/** - * Use interlaced DCT. - */ -#define AV_CODEC_FLAG_INTERLACED_DCT (1 << 18) -/** - * Force low delay. - */ -#define AV_CODEC_FLAG_LOW_DELAY (1 << 19) -/** - * Place global headers in extradata instead of every keyframe. - */ -#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22) -/** - * Use only bitexact stuff (except (I)DCT). - */ -#define AV_CODEC_FLAG_BITEXACT (1 << 23) -/* Fx : Flag for H.263+ extra options */ -/** - * H.263 advanced intra coding / MPEG-4 AC prediction - */ -#define AV_CODEC_FLAG_AC_PRED (1 << 24) -/** - * interlaced motion estimation - */ -#define AV_CODEC_FLAG_INTERLACED_ME (1 << 29) -#define AV_CODEC_FLAG_CLOSED_GOP (1U << 31) - -/** - * Allow non spec compliant speedup tricks. - */ -#define AV_CODEC_FLAG2_FAST (1 << 0) -/** - * Skip bitstream encoding. - */ -#define AV_CODEC_FLAG2_NO_OUTPUT (1 << 2) -/** - * Place global headers at every keyframe instead of in extradata. - */ -#define AV_CODEC_FLAG2_LOCAL_HEADER (1 << 3) - -/** - * timecode is in drop frame format. DEPRECATED!!!! - */ -#define AV_CODEC_FLAG2_DROP_FRAME_TIMECODE (1 << 13) - -/** - * Input bitstream might be truncated at a packet boundaries - * instead of only at frame boundaries. - */ -#define AV_CODEC_FLAG2_CHUNKS (1 << 15) -/** - * Discard cropping information from SPS. - */ -#define AV_CODEC_FLAG2_IGNORE_CROP (1 << 16) - -/** - * Show all frames before the first keyframe - */ -#define AV_CODEC_FLAG2_SHOW_ALL (1 << 22) -/** - * Export motion vectors through frame side data - */ -#define AV_CODEC_FLAG2_EXPORT_MVS (1 << 28) -/** - * Do not skip samples and export skip information as frame side data - */ -#define AV_CODEC_FLAG2_SKIP_MANUAL (1 << 29) -/** - * Do not reset ASS ReadOrder field on flush (subtitles decoding) - */ -#define AV_CODEC_FLAG2_RO_FLUSH_NOOP (1 << 30) - -/* Unsupported options : - * Syntax Arithmetic coding (SAC) - * Reference Picture Selection - * Independent Segment Decoding */ -/* /Fx */ -/* codec capabilities */ - -/** - * Decoder can use draw_horiz_band callback. - */ -#define AV_CODEC_CAP_DRAW_HORIZ_BAND (1 << 0) -/** - * Codec uses get_buffer() for allocating buffers and supports custom allocators. - * If not set, it might not use get_buffer() at all or use operations that - * assume the buffer was allocated by avcodec_default_get_buffer. - */ -#define AV_CODEC_CAP_DR1 (1 << 1) -#define AV_CODEC_CAP_TRUNCATED (1 << 3) -/** - * Encoder or decoder requires flushing with NULL input at the end in order to - * give the complete and correct output. - * - * NOTE: If this flag is not set, the codec is guaranteed to never be fed with - * with NULL data. The user can still send NULL data to the public encode - * or decode function, but libavcodec will not pass it along to the codec - * unless this flag is set. - * - * Decoders: - * The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL, - * avpkt->size=0 at the end to get the delayed data until the decoder no longer - * returns frames. - * - * Encoders: - * The encoder needs to be fed with NULL data at the end of encoding until the - * encoder no longer returns data. - * - * NOTE: For encoders implementing the AVCodec.encode2() function, setting this - * flag also means that the encoder must set the pts and duration for - * each output packet. If this flag is not set, the pts and duration will - * be determined by libavcodec from the input frame. - */ -#define AV_CODEC_CAP_DELAY (1 << 5) -/** - * Codec can be fed a final frame with a smaller size. - * This can be used to prevent truncation of the last audio samples. - */ -#define AV_CODEC_CAP_SMALL_LAST_FRAME (1 << 6) - -#if FF_API_CAP_VDPAU -/** - * Codec can export data for HW decoding (VDPAU). - */ -#define AV_CODEC_CAP_HWACCEL_VDPAU (1 << 7) -#endif - -/** - * Codec can output multiple frames per AVPacket - * Normally demuxers return one frame at a time, demuxers which do not do - * are connected to a parser to split what they return into proper frames. - * This flag is reserved to the very rare category of codecs which have a - * bitstream that cannot be split into frames without timeconsuming - * operations like full decoding. Demuxers carrying such bitstreams thus - * may return multiple frames in a packet. This has many disadvantages like - * prohibiting stream copy in many cases thus it should only be considered - * as a last resort. - */ -#define AV_CODEC_CAP_SUBFRAMES (1 << 8) -/** - * Codec is experimental and is thus avoided in favor of non experimental - * encoders - */ -#define AV_CODEC_CAP_EXPERIMENTAL (1 << 9) -/** - * Codec should fill in channel configuration and samplerate instead of container - */ -#define AV_CODEC_CAP_CHANNEL_CONF (1 << 10) -/** - * Codec supports frame-level multithreading. - */ -#define AV_CODEC_CAP_FRAME_THREADS (1 << 12) -/** - * Codec supports slice-based (or partition-based) multithreading. - */ -#define AV_CODEC_CAP_SLICE_THREADS (1 << 13) -/** - * Codec supports changed parameters at any point. - */ -#define AV_CODEC_CAP_PARAM_CHANGE (1 << 14) -/** - * Codec supports avctx->thread_count == 0 (auto). - */ -#define AV_CODEC_CAP_AUTO_THREADS (1 << 15) -/** - * Audio encoder supports receiving a different number of samples in each call. - */ -#define AV_CODEC_CAP_VARIABLE_FRAME_SIZE (1 << 16) -/** - * Decoder is not a preferred choice for probing. - * This indicates that the decoder is not a good choice for probing. - * It could for example be an expensive to spin up hardware decoder, - * or it could simply not provide a lot of useful information about - * the stream. - * A decoder marked with this flag should only be used as last resort - * choice for probing. - */ -#define AV_CODEC_CAP_AVOID_PROBING (1 << 17) -/** - * Codec is intra only. - */ -#define AV_CODEC_CAP_INTRA_ONLY 0x40000000 -/** - * Codec is lossless. - */ -#define AV_CODEC_CAP_LOSSLESS 0x80000000 - - -#if FF_API_WITHOUT_PREFIX -/** - * Allow decoders to produce frames with data planes that are not aligned - * to CPU requirements (e.g. due to cropping). - */ -#define CODEC_FLAG_UNALIGNED AV_CODEC_FLAG_UNALIGNED -#define CODEC_FLAG_QSCALE AV_CODEC_FLAG_QSCALE -#define CODEC_FLAG_4MV AV_CODEC_FLAG_4MV -#define CODEC_FLAG_OUTPUT_CORRUPT AV_CODEC_FLAG_OUTPUT_CORRUPT -#define CODEC_FLAG_QPEL AV_CODEC_FLAG_QPEL -#if FF_API_GMC -/** - * @deprecated use the "gmc" private option of the libxvid encoder - */ -#define CODEC_FLAG_GMC 0x0020 ///< Use GMC. -#endif -#if FF_API_MV0 -/** - * @deprecated use the flag "mv0" in the "mpv_flags" private option of the - * mpegvideo encoders - */ -#define CODEC_FLAG_MV0 0x0040 -#endif -#if FF_API_INPUT_PRESERVED -/** - * @deprecated passing reference-counted frames to the encoders replaces this - * flag - */ -#define CODEC_FLAG_INPUT_PRESERVED 0x0100 -#endif -#define CODEC_FLAG_PASS1 AV_CODEC_FLAG_PASS1 -#define CODEC_FLAG_PASS2 AV_CODEC_FLAG_PASS2 -#define CODEC_FLAG_GRAY AV_CODEC_FLAG_GRAY -#if FF_API_EMU_EDGE -/** - * @deprecated edges are not used/required anymore. I.e. this flag is now always - * set. - */ -#define CODEC_FLAG_EMU_EDGE 0x4000 -#endif -#define CODEC_FLAG_PSNR AV_CODEC_FLAG_PSNR -#define CODEC_FLAG_TRUNCATED AV_CODEC_FLAG_TRUNCATED - -#if FF_API_NORMALIZE_AQP -/** - * @deprecated use the flag "naq" in the "mpv_flags" private option of the - * mpegvideo encoders - */ -#define CODEC_FLAG_NORMALIZE_AQP 0x00020000 -#endif -#define CODEC_FLAG_INTERLACED_DCT AV_CODEC_FLAG_INTERLACED_DCT -#define CODEC_FLAG_LOW_DELAY AV_CODEC_FLAG_LOW_DELAY -#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER -#define CODEC_FLAG_BITEXACT AV_CODEC_FLAG_BITEXACT -#define CODEC_FLAG_AC_PRED AV_CODEC_FLAG_AC_PRED -#define CODEC_FLAG_LOOP_FILTER AV_CODEC_FLAG_LOOP_FILTER -#define CODEC_FLAG_INTERLACED_ME AV_CODEC_FLAG_INTERLACED_ME -#define CODEC_FLAG_CLOSED_GOP AV_CODEC_FLAG_CLOSED_GOP -#define CODEC_FLAG2_FAST AV_CODEC_FLAG2_FAST -#define CODEC_FLAG2_NO_OUTPUT AV_CODEC_FLAG2_NO_OUTPUT -#define CODEC_FLAG2_LOCAL_HEADER AV_CODEC_FLAG2_LOCAL_HEADER -#define CODEC_FLAG2_DROP_FRAME_TIMECODE AV_CODEC_FLAG2_DROP_FRAME_TIMECODE -#define CODEC_FLAG2_IGNORE_CROP AV_CODEC_FLAG2_IGNORE_CROP - -#define CODEC_FLAG2_CHUNKS AV_CODEC_FLAG2_CHUNKS -#define CODEC_FLAG2_SHOW_ALL AV_CODEC_FLAG2_SHOW_ALL -#define CODEC_FLAG2_EXPORT_MVS AV_CODEC_FLAG2_EXPORT_MVS -#define CODEC_FLAG2_SKIP_MANUAL AV_CODEC_FLAG2_SKIP_MANUAL - -/* Unsupported options : - * Syntax Arithmetic coding (SAC) - * Reference Picture Selection - * Independent Segment Decoding */ -/* /Fx */ -/* codec capabilities */ - -#define CODEC_CAP_DRAW_HORIZ_BAND AV_CODEC_CAP_DRAW_HORIZ_BAND ///< Decoder can use draw_horiz_band callback. -/** - * Codec uses get_buffer() for allocating buffers and supports custom allocators. - * If not set, it might not use get_buffer() at all or use operations that - * assume the buffer was allocated by avcodec_default_get_buffer. - */ -#define CODEC_CAP_DR1 AV_CODEC_CAP_DR1 -#define CODEC_CAP_TRUNCATED AV_CODEC_CAP_TRUNCATED -#if FF_API_XVMC -/* Codec can export data for HW decoding. This flag indicates that - * the codec would call get_format() with list that might contain HW accelerated - * pixel formats (XvMC, VDPAU, VAAPI, etc). The application can pick any of them - * including raw image format. - * The application can use the passed context to determine bitstream version, - * chroma format, resolution etc. - */ -#define CODEC_CAP_HWACCEL 0x0010 -#endif /* FF_API_XVMC */ -/** - * Encoder or decoder requires flushing with NULL input at the end in order to - * give the complete and correct output. - * - * NOTE: If this flag is not set, the codec is guaranteed to never be fed with - * with NULL data. The user can still send NULL data to the public encode - * or decode function, but libavcodec will not pass it along to the codec - * unless this flag is set. - * - * Decoders: - * The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL, - * avpkt->size=0 at the end to get the delayed data until the decoder no longer - * returns frames. - * - * Encoders: - * The encoder needs to be fed with NULL data at the end of encoding until the - * encoder no longer returns data. - * - * NOTE: For encoders implementing the AVCodec.encode2() function, setting this - * flag also means that the encoder must set the pts and duration for - * each output packet. If this flag is not set, the pts and duration will - * be determined by libavcodec from the input frame. - */ -#define CODEC_CAP_DELAY AV_CODEC_CAP_DELAY -/** - * Codec can be fed a final frame with a smaller size. - * This can be used to prevent truncation of the last audio samples. - */ -#define CODEC_CAP_SMALL_LAST_FRAME AV_CODEC_CAP_SMALL_LAST_FRAME -#if FF_API_CAP_VDPAU -/** - * Codec can export data for HW decoding (VDPAU). - */ -#define CODEC_CAP_HWACCEL_VDPAU AV_CODEC_CAP_HWACCEL_VDPAU -#endif -/** - * Codec can output multiple frames per AVPacket - * Normally demuxers return one frame at a time, demuxers which do not do - * are connected to a parser to split what they return into proper frames. - * This flag is reserved to the very rare category of codecs which have a - * bitstream that cannot be split into frames without timeconsuming - * operations like full decoding. Demuxers carrying such bitstreams thus - * may return multiple frames in a packet. This has many disadvantages like - * prohibiting stream copy in many cases thus it should only be considered - * as a last resort. - */ -#define CODEC_CAP_SUBFRAMES AV_CODEC_CAP_SUBFRAMES -/** - * Codec is experimental and is thus avoided in favor of non experimental - * encoders - */ -#define CODEC_CAP_EXPERIMENTAL AV_CODEC_CAP_EXPERIMENTAL -/** - * Codec should fill in channel configuration and samplerate instead of container - */ -#define CODEC_CAP_CHANNEL_CONF AV_CODEC_CAP_CHANNEL_CONF -#if FF_API_NEG_LINESIZES -/** - * @deprecated no codecs use this capability - */ -#define CODEC_CAP_NEG_LINESIZES 0x0800 -#endif -/** - * Codec supports frame-level multithreading. - */ -#define CODEC_CAP_FRAME_THREADS AV_CODEC_CAP_FRAME_THREADS -/** - * Codec supports slice-based (or partition-based) multithreading. - */ -#define CODEC_CAP_SLICE_THREADS AV_CODEC_CAP_SLICE_THREADS -/** - * Codec supports changed parameters at any point. - */ -#define CODEC_CAP_PARAM_CHANGE AV_CODEC_CAP_PARAM_CHANGE -/** - * Codec supports avctx->thread_count == 0 (auto). - */ -#define CODEC_CAP_AUTO_THREADS AV_CODEC_CAP_AUTO_THREADS -/** - * Audio encoder supports receiving a different number of samples in each call. - */ -#define CODEC_CAP_VARIABLE_FRAME_SIZE AV_CODEC_CAP_VARIABLE_FRAME_SIZE -/** - * Codec is intra only. - */ -#define CODEC_CAP_INTRA_ONLY AV_CODEC_CAP_INTRA_ONLY -/** - * Codec is lossless. - */ -#define CODEC_CAP_LOSSLESS AV_CODEC_CAP_LOSSLESS - -/** - * HWAccel is experimental and is thus avoided in favor of non experimental - * codecs - */ -#define HWACCEL_CODEC_CAP_EXPERIMENTAL 0x0200 -#endif /* FF_API_WITHOUT_PREFIX */ - -#if FF_API_MB_TYPE -//The following defines may change, don't expect compatibility if you use them. -#define MB_TYPE_INTRA4x4 0x0001 -#define MB_TYPE_INTRA16x16 0x0002 //FIXME H.264-specific -#define MB_TYPE_INTRA_PCM 0x0004 //FIXME H.264-specific -#define MB_TYPE_16x16 0x0008 -#define MB_TYPE_16x8 0x0010 -#define MB_TYPE_8x16 0x0020 -#define MB_TYPE_8x8 0x0040 -#define MB_TYPE_INTERLACED 0x0080 -#define MB_TYPE_DIRECT2 0x0100 //FIXME -#define MB_TYPE_ACPRED 0x0200 -#define MB_TYPE_GMC 0x0400 -#define MB_TYPE_SKIP 0x0800 -#define MB_TYPE_P0L0 0x1000 -#define MB_TYPE_P1L0 0x2000 -#define MB_TYPE_P0L1 0x4000 -#define MB_TYPE_P1L1 0x8000 -#define MB_TYPE_L0 (MB_TYPE_P0L0 | MB_TYPE_P1L0) -#define MB_TYPE_L1 (MB_TYPE_P0L1 | MB_TYPE_P1L1) -#define MB_TYPE_L0L1 (MB_TYPE_L0 | MB_TYPE_L1) -#define MB_TYPE_QUANT 0x00010000 -#define MB_TYPE_CBP 0x00020000 -// Note bits 24-31 are reserved for codec specific use (H.264 ref0, MPEG-1 0mv, ...) -#endif - -/** - * Pan Scan area. - * This specifies the area which should be displayed. - * Note there may be multiple such areas for one frame. - */ -typedef struct AVPanScan{ - /** - * id - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int id; - - /** - * width and height in 1/16 pel - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int width; - int height; - - /** - * position of the top left corner in 1/16 pel for up to 3 fields/frames - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int16_t position[3][2]; -}AVPanScan; - -/** - * This structure describes the bitrate properties of an encoded bitstream. It - * roughly corresponds to a subset the VBV parameters for MPEG-2 or HRD - * parameters for H.264/HEVC. - */ -typedef struct AVCPBProperties { - /** - * Maximum bitrate of the stream, in bits per second. - * Zero if unknown or unspecified. - */ - int max_bitrate; - /** - * Minimum bitrate of the stream, in bits per second. - * Zero if unknown or unspecified. - */ - int min_bitrate; - /** - * Average bitrate of the stream, in bits per second. - * Zero if unknown or unspecified. - */ - int avg_bitrate; - - /** - * The size of the buffer to which the ratecontrol is applied, in bits. - * Zero if unknown or unspecified. - */ - int buffer_size; - - /** - * The delay between the time the packet this structure is associated with - * is received and the time when it should be decoded, in periods of a 27MHz - * clock. - * - * UINT64_MAX when unknown or unspecified. - */ - uint64_t vbv_delay; -} AVCPBProperties; - -#if FF_API_QSCALE_TYPE -#define FF_QSCALE_TYPE_MPEG1 0 -#define FF_QSCALE_TYPE_MPEG2 1 -#define FF_QSCALE_TYPE_H264 2 -#define FF_QSCALE_TYPE_VP56 3 -#endif - -/** - * The decoder will keep a reference to the frame and may reuse it later. - */ -#define AV_GET_BUFFER_FLAG_REF (1 << 0) - -/** - * @defgroup lavc_packet AVPacket - * - * Types and functions for working with AVPacket. - * @{ - */ -enum AVPacketSideDataType { - AV_PKT_DATA_PALETTE, - - /** - * The AV_PKT_DATA_NEW_EXTRADATA is used to notify the codec or the format - * that the extradata buffer was changed and the receiving side should - * act upon it appropriately. The new extradata is embedded in the side - * data buffer and should be immediately used for processing the current - * frame or packet. - */ - AV_PKT_DATA_NEW_EXTRADATA, - - /** - * An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows: - * @code - * u32le param_flags - * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT) - * s32le channel_count - * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT) - * u64le channel_layout - * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE) - * s32le sample_rate - * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS) - * s32le width - * s32le height - * @endcode - */ - AV_PKT_DATA_PARAM_CHANGE, - - /** - * An AV_PKT_DATA_H263_MB_INFO side data packet contains a number of - * structures with info about macroblocks relevant to splitting the - * packet into smaller packets on macroblock edges (e.g. as for RFC 2190). - * That is, it does not necessarily contain info about all macroblocks, - * as long as the distance between macroblocks in the info is smaller - * than the target payload size. - * Each MB info structure is 12 bytes, and is laid out as follows: - * @code - * u32le bit offset from the start of the packet - * u8 current quantizer at the start of the macroblock - * u8 GOB number - * u16le macroblock address within the GOB - * u8 horizontal MV predictor - * u8 vertical MV predictor - * u8 horizontal MV predictor for block number 3 - * u8 vertical MV predictor for block number 3 - * @endcode - */ - AV_PKT_DATA_H263_MB_INFO, - - /** - * This side data should be associated with an audio stream and contains - * ReplayGain information in form of the AVReplayGain struct. - */ - AV_PKT_DATA_REPLAYGAIN, - - /** - * This side data contains a 3x3 transformation matrix describing an affine - * transformation that needs to be applied to the decoded video frames for - * correct presentation. - * - * See libavutil/display.h for a detailed description of the data. - */ - AV_PKT_DATA_DISPLAYMATRIX, - - /** - * This side data should be associated with a video stream and contains - * Stereoscopic 3D information in form of the AVStereo3D struct. - */ - AV_PKT_DATA_STEREO3D, - - /** - * This side data should be associated with an audio stream and corresponds - * to enum AVAudioServiceType. - */ - AV_PKT_DATA_AUDIO_SERVICE_TYPE, - - /** - * This side data contains quality related information from the encoder. - * @code - * u32le quality factor of the compressed frame. Allowed range is between 1 (good) and FF_LAMBDA_MAX (bad). - * u8 picture type - * u8 error count - * u16 reserved - * u64le[error count] sum of squared differences between encoder in and output - * @endcode - */ - AV_PKT_DATA_QUALITY_STATS, - - /** - * This side data contains an integer value representing the stream index - * of a "fallback" track. A fallback track indicates an alternate - * track to use when the current track can not be decoded for some reason. - * e.g. no decoder available for codec. - */ - AV_PKT_DATA_FALLBACK_TRACK, - - /** - * This side data corresponds to the AVCPBProperties struct. - */ - AV_PKT_DATA_CPB_PROPERTIES, - - /** - * Recommmends skipping the specified number of samples - * @code - * u32le number of samples to skip from start of this packet - * u32le number of samples to skip from end of this packet - * u8 reason for start skip - * u8 reason for end skip (0=padding silence, 1=convergence) - * @endcode - */ - AV_PKT_DATA_SKIP_SAMPLES=70, - - /** - * An AV_PKT_DATA_JP_DUALMONO side data packet indicates that - * the packet may contain "dual mono" audio specific to Japanese DTV - * and if it is true, recommends only the selected channel to be used. - * @code - * u8 selected channels (0=mail/left, 1=sub/right, 2=both) - * @endcode - */ - AV_PKT_DATA_JP_DUALMONO, - - /** - * A list of zero terminated key/value strings. There is no end marker for - * the list, so it is required to rely on the side data size to stop. - */ - AV_PKT_DATA_STRINGS_METADATA, - - /** - * Subtitle event position - * @code - * u32le x1 - * u32le y1 - * u32le x2 - * u32le y2 - * @endcode - */ - AV_PKT_DATA_SUBTITLE_POSITION, - - /** - * Data found in BlockAdditional element of matroska container. There is - * no end marker for the data, so it is required to rely on the side data - * size to recognize the end. 8 byte id (as found in BlockAddId) followed - * by data. - */ - AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, - - /** - * The optional first identifier line of a WebVTT cue. - */ - AV_PKT_DATA_WEBVTT_IDENTIFIER, - - /** - * The optional settings (rendering instructions) that immediately - * follow the timestamp specifier of a WebVTT cue. - */ - AV_PKT_DATA_WEBVTT_SETTINGS, - - /** - * A list of zero terminated key/value strings. There is no end marker for - * the list, so it is required to rely on the side data size to stop. This - * side data includes updated metadata which appeared in the stream. - */ - AV_PKT_DATA_METADATA_UPDATE, - - /** - * MPEGTS stream ID, this is required to pass the stream ID - * information from the demuxer to the corresponding muxer. - */ - AV_PKT_DATA_MPEGTS_STREAM_ID, - - /** - * Mastering display metadata (based on SMPTE-2086:2014). This metadata - * should be associated with a video stream and containts data in the form - * of the AVMasteringDisplayMetadata struct. - */ - AV_PKT_DATA_MASTERING_DISPLAY_METADATA -}; - -#define AV_PKT_DATA_QUALITY_FACTOR AV_PKT_DATA_QUALITY_STATS //DEPRECATED - -typedef struct AVPacketSideData { - uint8_t *data; - int size; - enum AVPacketSideDataType type; -} AVPacketSideData; - -/** - * This structure stores compressed data. It is typically exported by demuxers - * and then passed as input to decoders, or received as output from encoders and - * then passed to muxers. - * - * For video, it should typically contain one compressed frame. For audio it may - * contain several compressed frames. Encoders are allowed to output empty - * packets, with no compressed data, containing only side data - * (e.g. to update some stream parameters at the end of encoding). - * - * AVPacket is one of the few structs in FFmpeg, whose size is a part of public - * ABI. Thus it may be allocated on stack and no new fields can be added to it - * without libavcodec and libavformat major bump. - * - * The semantics of data ownership depends on the buf field. - * If it is set, the packet data is dynamically allocated and is - * valid indefinitely until a call to av_packet_unref() reduces the - * reference count to 0. - * - * If the buf field is not set av_packet_ref() would make a copy instead - * of increasing the reference count. - * - * The side data is always allocated with av_malloc(), copied by - * av_packet_ref() and freed by av_packet_unref(). - * - * @see av_packet_ref - * @see av_packet_unref - */ -typedef struct AVPacket { - /** - * A reference to the reference-counted buffer where the packet data is - * stored. - * May be NULL, then the packet data is not reference-counted. - */ - AVBufferRef *buf; - /** - * Presentation timestamp in AVStream->time_base units; the time at which - * the decompressed packet will be presented to the user. - * Can be AV_NOPTS_VALUE if it is not stored in the file. - * pts MUST be larger or equal to dts as presentation cannot happen before - * decompression, unless one wants to view hex dumps. Some formats misuse - * the terms dts and pts/cts to mean something different. Such timestamps - * must be converted to true pts/dts before they are stored in AVPacket. - */ - int64_t pts; - /** - * Decompression timestamp in AVStream->time_base units; the time at which - * the packet is decompressed. - * Can be AV_NOPTS_VALUE if it is not stored in the file. - */ - int64_t dts; - uint8_t *data; - int size; - int stream_index; - /** - * A combination of AV_PKT_FLAG values - */ - int flags; - /** - * Additional packet data that can be provided by the container. - * Packet can contain several types of side information. - */ - AVPacketSideData *side_data; - int side_data_elems; - - /** - * Duration of this packet in AVStream->time_base units, 0 if unknown. - * Equals next_pts - this_pts in presentation order. - */ - int64_t duration; - - int64_t pos; ///< byte position in stream, -1 if unknown - -#if FF_API_CONVERGENCE_DURATION - /** - * @deprecated Same as the duration field, but as int64_t. This was required - * for Matroska subtitles, whose duration values could overflow when the - * duration field was still an int. - */ - attribute_deprecated - int64_t convergence_duration; -#endif -} AVPacket; -#define AV_PKT_FLAG_KEY 0x0001 ///< The packet contains a keyframe -#define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted -/** - * Flag is used to discard packets which are required to maintain valid - * decoder state but are not required for output and should be dropped - * after decoding. - **/ -#define AV_PKT_FLAG_DISCARD 0x0004 - -enum AVSideDataParamChangeFlags { - AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT = 0x0001, - AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT = 0x0002, - AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE = 0x0004, - AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS = 0x0008, -}; -/** - * @} - */ - -struct AVCodecInternal; - -enum AVFieldOrder { - AV_FIELD_UNKNOWN, - AV_FIELD_PROGRESSIVE, - AV_FIELD_TT, //< Top coded_first, top displayed first - AV_FIELD_BB, //< Bottom coded first, bottom displayed first - AV_FIELD_TB, //< Top coded first, bottom displayed first - AV_FIELD_BT, //< Bottom coded first, top displayed first -}; - -/** - * main external API structure. - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * Please use AVOptions (av_opt* / av_set/get*()) to access these fields from user - * applications. - * The name string for AVOptions options matches the associated command line - * parameter name and can be found in libavcodec/options_table.h - * The AVOption/command line parameter names differ in some cases from the C - * structure field names for historic reasons or brevity. - * sizeof(AVCodecContext) must not be used outside libav*. - */ -typedef struct AVCodecContext { - /** - * information on struct for av_log - * - set by avcodec_alloc_context3 - */ - const AVClass *av_class; - int log_level_offset; - - enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */ - const struct AVCodec *codec; -#if FF_API_CODEC_NAME - /** - * @deprecated this field is not used for anything in libavcodec - */ - attribute_deprecated - char codec_name[32]; -#endif - enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */ - - /** - * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). - * This is used to work around some encoder bugs. - * A demuxer should set this to what is stored in the field used to identify the codec. - * If there are multiple such fields in a container then the demuxer should choose the one - * which maximizes the information about the used codec. - * If the codec tag field in a container is larger than 32 bits then the demuxer should - * remap the longer ID to 32 bits with a table or other structure. Alternatively a new - * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated - * first. - * - encoding: Set by user, if not then the default based on codec_id will be used. - * - decoding: Set by user, will be converted to uppercase by libavcodec during init. - */ - unsigned int codec_tag; - -#if FF_API_STREAM_CODEC_TAG - /** - * @deprecated this field is unused - */ - attribute_deprecated - unsigned int stream_codec_tag; -#endif - - void *priv_data; - - /** - * Private context used for internal data. - * - * Unlike priv_data, this is not codec-specific. It is used in general - * libavcodec functions. - */ - struct AVCodecInternal *internal; - - /** - * Private data of the user, can be used to carry app specific stuff. - * - encoding: Set by user. - * - decoding: Set by user. - */ - void *opaque; - - /** - * the average bitrate - * - encoding: Set by user; unused for constant quantizer encoding. - * - decoding: Set by user, may be overwritten by libavcodec - * if this info is available in the stream - */ - int64_t bit_rate; - - /** - * number of bits the bitstream is allowed to diverge from the reference. - * the reference can be CBR (for CBR pass1) or VBR (for pass2) - * - encoding: Set by user; unused for constant quantizer encoding. - * - decoding: unused - */ - int bit_rate_tolerance; - - /** - * Global quality for codecs which cannot change it per frame. - * This should be proportional to MPEG-1/2/4 qscale. - * - encoding: Set by user. - * - decoding: unused - */ - int global_quality; - - /** - * - encoding: Set by user. - * - decoding: unused - */ - int compression_level; -#define FF_COMPRESSION_DEFAULT -1 - - /** - * AV_CODEC_FLAG_*. - * - encoding: Set by user. - * - decoding: Set by user. - */ - int flags; - - /** - * AV_CODEC_FLAG2_* - * - encoding: Set by user. - * - decoding: Set by user. - */ - int flags2; - - /** - * some codecs need / can use extradata like Huffman tables. - * MJPEG: Huffman tables - * rv10: additional flags - * MPEG-4: global headers (they can be in the bitstream or here) - * The allocated memory should be AV_INPUT_BUFFER_PADDING_SIZE bytes larger - * than extradata_size to avoid problems if it is read with the bitstream reader. - * The bytewise contents of extradata must not depend on the architecture or CPU endianness. - * - encoding: Set/allocated/freed by libavcodec. - * - decoding: Set/allocated/freed by user. - */ - uint8_t *extradata; - int extradata_size; - - /** - * This is the fundamental unit of time (in seconds) in terms - * of which frame timestamps are represented. For fixed-fps content, - * timebase should be 1/framerate and timestamp increments should be - * identically 1. - * This often, but not always is the inverse of the frame rate or field rate - * for video. 1/time_base is not the average frame rate if the frame rate is not - * constant. - * - * Like containers, elementary streams also can store timestamps, 1/time_base - * is the unit in which these timestamps are specified. - * As example of such codec time base see ISO/IEC 14496-2:2001(E) - * vop_time_increment_resolution and fixed_vop_rate - * (fixed_vop_rate == 0 implies that it is different from the framerate) - * - * - encoding: MUST be set by user. - * - decoding: the use of this field for decoding is deprecated. - * Use framerate instead. - */ - AVRational time_base; - - /** - * For some codecs, the time base is closer to the field rate than the frame rate. - * Most notably, H.264 and MPEG-2 specify time_base as half of frame duration - * if no telecine is used ... - * - * Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2. - */ - int ticks_per_frame; - - /** - * Codec delay. - * - * Encoding: Number of frames delay there will be from the encoder input to - * the decoder output. (we assume the decoder matches the spec) - * Decoding: Number of frames delay in addition to what a standard decoder - * as specified in the spec would produce. - * - * Video: - * Number of frames the decoded output will be delayed relative to the - * encoded input. - * - * Audio: - * For encoding, this field is unused (see initial_padding). - * - * For decoding, this is the number of samples the decoder needs to - * output before the decoder's output is valid. When seeking, you should - * start decoding this many samples prior to your desired seek point. - * - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - int delay; - - - /* video only */ - /** - * picture width / height. - * - * @note Those fields may not match the values of the last - * AVFrame output by avcodec_decode_video2 due frame - * reordering. - * - * - encoding: MUST be set by user. - * - decoding: May be set by the user before opening the decoder if known e.g. - * from the container. Some decoders will require the dimensions - * to be set by the caller. During decoding, the decoder may - * overwrite those values as required while parsing the data. - */ - int width, height; - - /** - * Bitstream width / height, may be different from width/height e.g. when - * the decoded frame is cropped before being output or lowres is enabled. - * - * @note Those field may not match the value of the last - * AVFrame output by avcodec_receive_frame() due frame - * reordering. - * - * - encoding: unused - * - decoding: May be set by the user before opening the decoder if known - * e.g. from the container. During decoding, the decoder may - * overwrite those values as required while parsing the data. - */ - int coded_width, coded_height; - -#if FF_API_ASPECT_EXTENDED -#define FF_ASPECT_EXTENDED 15 -#endif - - /** - * the number of pictures in a group of pictures, or 0 for intra_only - * - encoding: Set by user. - * - decoding: unused - */ - int gop_size; - - /** - * Pixel format, see AV_PIX_FMT_xxx. - * May be set by the demuxer if known from headers. - * May be overridden by the decoder if it knows better. - * - * @note This field may not match the value of the last - * AVFrame output by avcodec_receive_frame() due frame - * reordering. - * - * - encoding: Set by user. - * - decoding: Set by user if known, overridden by libavcodec while - * parsing the data. - */ - enum AVPixelFormat pix_fmt; - -#if FF_API_MOTION_EST - /** - * This option does nothing - * @deprecated use codec private options instead - */ - attribute_deprecated int me_method; -#endif - - /** - * If non NULL, 'draw_horiz_band' is called by the libavcodec - * decoder to draw a horizontal band. It improves cache usage. Not - * all codecs can do that. You must check the codec capabilities - * beforehand. - * When multithreading is used, it may be called from multiple threads - * at the same time; threads might draw different parts of the same AVFrame, - * or multiple AVFrames, and there is no guarantee that slices will be drawn - * in order. - * The function is also used by hardware acceleration APIs. - * It is called at least once during frame decoding to pass - * the data needed for hardware render. - * In that mode instead of pixel data, AVFrame points to - * a structure specific to the acceleration API. The application - * reads the structure and can change some fields to indicate progress - * or mark state. - * - encoding: unused - * - decoding: Set by user. - * @param height the height of the slice - * @param y the y position of the slice - * @param type 1->top field, 2->bottom field, 3->frame - * @param offset offset into the AVFrame.data from which the slice should be read - */ - void (*draw_horiz_band)(struct AVCodecContext *s, - const AVFrame *src, int offset[AV_NUM_DATA_POINTERS], - int y, int type, int height); - - /** - * callback to negotiate the pixelFormat - * @param fmt is the list of formats which are supported by the codec, - * it is terminated by -1 as 0 is a valid format, the formats are ordered by quality. - * The first is always the native one. - * @note The callback may be called again immediately if initialization for - * the selected (hardware-accelerated) pixel format failed. - * @warning Behavior is undefined if the callback returns a value not - * in the fmt list of formats. - * @return the chosen format - * - encoding: unused - * - decoding: Set by user, if not set the native format will be chosen. - */ - enum AVPixelFormat (*get_format)(struct AVCodecContext *s, const enum AVPixelFormat * fmt); - - /** - * maximum number of B-frames between non-B-frames - * Note: The output will be delayed by max_b_frames+1 relative to the input. - * - encoding: Set by user. - * - decoding: unused - */ - int max_b_frames; - - /** - * qscale factor between IP and B-frames - * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset). - * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). - * - encoding: Set by user. - * - decoding: unused - */ - float b_quant_factor; - -#if FF_API_RC_STRATEGY - /** @deprecated use codec private option instead */ - attribute_deprecated int rc_strategy; -#define FF_RC_STRATEGY_XVID 1 -#endif - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int b_frame_strategy; -#endif - - /** - * qscale offset between IP and B-frames - * - encoding: Set by user. - * - decoding: unused - */ - float b_quant_offset; - - /** - * Size of the frame reordering buffer in the decoder. - * For MPEG-2 it is 1 IPB or 0 low delay IP. - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - int has_b_frames; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int mpeg_quant; -#endif - - /** - * qscale factor between P- and I-frames - * If > 0 then the last P-frame quantizer will be used (q = lastp_q * factor + offset). - * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). - * - encoding: Set by user. - * - decoding: unused - */ - float i_quant_factor; - - /** - * qscale offset between P and I-frames - * - encoding: Set by user. - * - decoding: unused - */ - float i_quant_offset; - - /** - * luminance masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float lumi_masking; - - /** - * temporary complexity masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float temporal_cplx_masking; - - /** - * spatial complexity masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float spatial_cplx_masking; - - /** - * p block masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float p_masking; - - /** - * darkness masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float dark_masking; - - /** - * slice count - * - encoding: Set by libavcodec. - * - decoding: Set by user (or 0). - */ - int slice_count; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int prediction_method; -#define FF_PRED_LEFT 0 -#define FF_PRED_PLANE 1 -#define FF_PRED_MEDIAN 2 -#endif - - /** - * slice offsets in the frame in bytes - * - encoding: Set/allocated by libavcodec. - * - decoding: Set/allocated by user (or NULL). - */ - int *slice_offset; - - /** - * sample aspect ratio (0 if unknown) - * That is the width of a pixel divided by the height of the pixel. - * Numerator and denominator must be relatively prime and smaller than 256 for some video standards. - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - AVRational sample_aspect_ratio; - - /** - * motion estimation comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int me_cmp; - /** - * subpixel motion estimation comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int me_sub_cmp; - /** - * macroblock comparison function (not supported yet) - * - encoding: Set by user. - * - decoding: unused - */ - int mb_cmp; - /** - * interlaced DCT comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int ildct_cmp; -#define FF_CMP_SAD 0 -#define FF_CMP_SSE 1 -#define FF_CMP_SATD 2 -#define FF_CMP_DCT 3 -#define FF_CMP_PSNR 4 -#define FF_CMP_BIT 5 -#define FF_CMP_RD 6 -#define FF_CMP_ZERO 7 -#define FF_CMP_VSAD 8 -#define FF_CMP_VSSE 9 -#define FF_CMP_NSSE 10 -#define FF_CMP_W53 11 -#define FF_CMP_W97 12 -#define FF_CMP_DCTMAX 13 -#define FF_CMP_DCT264 14 -#define FF_CMP_MEDIAN_SAD 15 -#define FF_CMP_CHROMA 256 - - /** - * ME diamond size & shape - * - encoding: Set by user. - * - decoding: unused - */ - int dia_size; - - /** - * amount of previous MV predictors (2a+1 x 2a+1 square) - * - encoding: Set by user. - * - decoding: unused - */ - int last_predictor_count; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int pre_me; -#endif - - /** - * motion estimation prepass comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int me_pre_cmp; - - /** - * ME prepass diamond size & shape - * - encoding: Set by user. - * - decoding: unused - */ - int pre_dia_size; - - /** - * subpel ME quality - * - encoding: Set by user. - * - decoding: unused - */ - int me_subpel_quality; - -#if FF_API_AFD - /** - * DTG active format information (additional aspect ratio - * information only used in DVB MPEG-2 transport streams) - * 0 if not set. - * - * - encoding: unused - * - decoding: Set by decoder. - * @deprecated Deprecated in favor of AVSideData - */ - attribute_deprecated int dtg_active_format; -#define FF_DTG_AFD_SAME 8 -#define FF_DTG_AFD_4_3 9 -#define FF_DTG_AFD_16_9 10 -#define FF_DTG_AFD_14_9 11 -#define FF_DTG_AFD_4_3_SP_14_9 13 -#define FF_DTG_AFD_16_9_SP_14_9 14 -#define FF_DTG_AFD_SP_4_3 15 -#endif /* FF_API_AFD */ - - /** - * maximum motion estimation search range in subpel units - * If 0 then no limit. - * - * - encoding: Set by user. - * - decoding: unused - */ - int me_range; - -#if FF_API_QUANT_BIAS - /** - * @deprecated use encoder private option instead - */ - attribute_deprecated int intra_quant_bias; -#define FF_DEFAULT_QUANT_BIAS 999999 - - /** - * @deprecated use encoder private option instead - */ - attribute_deprecated int inter_quant_bias; -#endif - - /** - * slice flags - * - encoding: unused - * - decoding: Set by user. - */ - int slice_flags; -#define SLICE_FLAG_CODED_ORDER 0x0001 ///< draw_horiz_band() is called in coded order instead of display -#define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG-2 field pics) -#define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1) - -#if FF_API_XVMC - /** - * XVideo Motion Acceleration - * - encoding: forbidden - * - decoding: set by decoder - * @deprecated XvMC doesn't need it anymore. - */ - attribute_deprecated int xvmc_acceleration; -#endif /* FF_API_XVMC */ - - /** - * macroblock decision mode - * - encoding: Set by user. - * - decoding: unused - */ - int mb_decision; -#define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp -#define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits -#define FF_MB_DECISION_RD 2 ///< rate distortion - - /** - * custom intra quantization matrix - * - encoding: Set by user, can be NULL. - * - decoding: Set by libavcodec. - */ - uint16_t *intra_matrix; - - /** - * custom inter quantization matrix - * - encoding: Set by user, can be NULL. - * - decoding: Set by libavcodec. - */ - uint16_t *inter_matrix; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int scenechange_threshold; - - /** @deprecated use encoder private options instead */ - attribute_deprecated - int noise_reduction; -#endif - -#if FF_API_MPV_OPT - /** - * @deprecated this field is unused - */ - attribute_deprecated - int me_threshold; - - /** - * @deprecated this field is unused - */ - attribute_deprecated - int mb_threshold; -#endif - - /** - * precision of the intra DC coefficient - 8 - * - encoding: Set by user. - * - decoding: Set by libavcodec - */ - int intra_dc_precision; - - /** - * Number of macroblock rows at the top which are skipped. - * - encoding: unused - * - decoding: Set by user. - */ - int skip_top; - - /** - * Number of macroblock rows at the bottom which are skipped. - * - encoding: unused - * - decoding: Set by user. - */ - int skip_bottom; - -#if FF_API_MPV_OPT - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - float border_masking; -#endif - - /** - * minimum MB Lagrange multiplier - * - encoding: Set by user. - * - decoding: unused - */ - int mb_lmin; - - /** - * maximum MB Lagrange multiplier - * - encoding: Set by user. - * - decoding: unused - */ - int mb_lmax; - -#if FF_API_PRIVATE_OPT - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - int me_penalty_compensation; -#endif - - /** - * - encoding: Set by user. - * - decoding: unused - */ - int bidir_refine; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int brd_scale; -#endif - - /** - * minimum GOP size - * - encoding: Set by user. - * - decoding: unused - */ - int keyint_min; - - /** - * number of reference frames - * - encoding: Set by user. - * - decoding: Set by lavc. - */ - int refs; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int chromaoffset; -#endif - -#if FF_API_UNUSED_MEMBERS - /** - * Multiplied by qscale for each frame and added to scene_change_score. - * - encoding: Set by user. - * - decoding: unused - */ - attribute_deprecated int scenechange_factor; -#endif - - /** - * Note: Value depends upon the compare function used for fullpel ME. - * - encoding: Set by user. - * - decoding: unused - */ - int mv0_threshold; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int b_sensitivity; -#endif - - /** - * Chromaticity coordinates of the source primaries. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorPrimaries color_primaries; - - /** - * Color Transfer Characteristic. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorTransferCharacteristic color_trc; - - /** - * YUV colorspace type. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorSpace colorspace; - - /** - * MPEG vs JPEG YUV range. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorRange color_range; - - /** - * This defines the location of chroma samples. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVChromaLocation chroma_sample_location; - - /** - * Number of slices. - * Indicates number of picture subdivisions. Used for parallelized - * decoding. - * - encoding: Set by user - * - decoding: unused - */ - int slices; - - /** Field order - * - encoding: set by libavcodec - * - decoding: Set by user. - */ - enum AVFieldOrder field_order; - - /* audio only */ - int sample_rate; ///< samples per second - int channels; ///< number of audio channels - - /** - * audio sample format - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - enum AVSampleFormat sample_fmt; ///< sample format - - /* The following data should not be initialized. */ - /** - * Number of samples per channel in an audio frame. - * - * - encoding: set by libavcodec in avcodec_open2(). Each submitted frame - * except the last must contain exactly frame_size samples per channel. - * May be 0 when the codec has AV_CODEC_CAP_VARIABLE_FRAME_SIZE set, then the - * frame size is not restricted. - * - decoding: may be set by some decoders to indicate constant frame size - */ - int frame_size; - - /** - * Frame counter, set by libavcodec. - * - * - decoding: total number of frames returned from the decoder so far. - * - encoding: total number of frames passed to the encoder so far. - * - * @note the counter is not incremented if encoding/decoding resulted in - * an error. - */ - int frame_number; - - /** - * number of bytes per packet if constant and known or 0 - * Used by some WAV based audio codecs. - */ - int block_align; - - /** - * Audio cutoff bandwidth (0 means "automatic") - * - encoding: Set by user. - * - decoding: unused - */ - int cutoff; - - /** - * Audio channel layout. - * - encoding: set by user. - * - decoding: set by user, may be overwritten by libavcodec. - */ - uint64_t channel_layout; - - /** - * Request decoder to use this channel layout if it can (0 for default) - * - encoding: unused - * - decoding: Set by user. - */ - uint64_t request_channel_layout; - - /** - * Type of service that the audio stream conveys. - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - enum AVAudioServiceType audio_service_type; - - /** - * desired sample format - * - encoding: Not used. - * - decoding: Set by user. - * Decoder will decode to this format if it can. - */ - enum AVSampleFormat request_sample_fmt; - - /** - * This callback is called at the beginning of each frame to get data - * buffer(s) for it. There may be one contiguous buffer for all the data or - * there may be a buffer per each data plane or anything in between. What - * this means is, you may set however many entries in buf[] you feel necessary. - * Each buffer must be reference-counted using the AVBuffer API (see description - * of buf[] below). - * - * The following fields will be set in the frame before this callback is - * called: - * - format - * - width, height (video only) - * - sample_rate, channel_layout, nb_samples (audio only) - * Their values may differ from the corresponding values in - * AVCodecContext. This callback must use the frame values, not the codec - * context values, to calculate the required buffer size. - * - * This callback must fill the following fields in the frame: - * - data[] - * - linesize[] - * - extended_data: - * * if the data is planar audio with more than 8 channels, then this - * callback must allocate and fill extended_data to contain all pointers - * to all data planes. data[] must hold as many pointers as it can. - * extended_data must be allocated with av_malloc() and will be freed in - * av_frame_unref(). - * * otherwise extended_data must point to data - * - buf[] must contain one or more pointers to AVBufferRef structures. Each of - * the frame's data and extended_data pointers must be contained in these. That - * is, one AVBufferRef for each allocated chunk of memory, not necessarily one - * AVBufferRef per data[] entry. See: av_buffer_create(), av_buffer_alloc(), - * and av_buffer_ref(). - * - extended_buf and nb_extended_buf must be allocated with av_malloc() by - * this callback and filled with the extra buffers if there are more - * buffers than buf[] can hold. extended_buf will be freed in - * av_frame_unref(). - * - * If AV_CODEC_CAP_DR1 is not set then get_buffer2() must call - * avcodec_default_get_buffer2() instead of providing buffers allocated by - * some other means. - * - * Each data plane must be aligned to the maximum required by the target - * CPU. - * - * @see avcodec_default_get_buffer2() - * - * Video: - * - * If AV_GET_BUFFER_FLAG_REF is set in flags then the frame may be reused - * (read and/or written to if it is writable) later by libavcodec. - * - * avcodec_align_dimensions2() should be used to find the required width and - * height, as they normally need to be rounded up to the next multiple of 16. - * - * Some decoders do not support linesizes changing between frames. - * - * If frame multithreading is used and thread_safe_callbacks is set, - * this callback may be called from a different thread, but not from more - * than one at once. Does not need to be reentrant. - * - * @see avcodec_align_dimensions2() - * - * Audio: - * - * Decoders request a buffer of a particular size by setting - * AVFrame.nb_samples prior to calling get_buffer2(). The decoder may, - * however, utilize only part of the buffer by setting AVFrame.nb_samples - * to a smaller value in the output frame. - * - * As a convenience, av_samples_get_buffer_size() and - * av_samples_fill_arrays() in libavutil may be used by custom get_buffer2() - * functions to find the required data size and to fill data pointers and - * linesize. In AVFrame.linesize, only linesize[0] may be set for audio - * since all planes must be the same size. - * - * @see av_samples_get_buffer_size(), av_samples_fill_arrays() - * - * - encoding: unused - * - decoding: Set by libavcodec, user can override. - */ - int (*get_buffer2)(struct AVCodecContext *s, AVFrame *frame, int flags); - - /** - * If non-zero, the decoded audio and video frames returned from - * avcodec_decode_video2() and avcodec_decode_audio4() are reference-counted - * and are valid indefinitely. The caller must free them with - * av_frame_unref() when they are not needed anymore. - * Otherwise, the decoded frames must not be freed by the caller and are - * only valid until the next decode call. - * - * This is always automatically enabled if avcodec_receive_frame() is used. - * - * - encoding: unused - * - decoding: set by the caller before avcodec_open2(). - */ - int refcounted_frames; - - /* - encoding parameters */ - float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0) - float qblur; ///< amount of qscale smoothing over time (0.0-1.0) - - /** - * minimum quantizer - * - encoding: Set by user. - * - decoding: unused - */ - int qmin; - - /** - * maximum quantizer - * - encoding: Set by user. - * - decoding: unused - */ - int qmax; - - /** - * maximum quantizer difference between frames - * - encoding: Set by user. - * - decoding: unused - */ - int max_qdiff; - -#if FF_API_MPV_OPT - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - float rc_qsquish; - - attribute_deprecated - float rc_qmod_amp; - attribute_deprecated - int rc_qmod_freq; -#endif - - /** - * decoder bitstream buffer size - * - encoding: Set by user. - * - decoding: unused - */ - int rc_buffer_size; - - /** - * ratecontrol override, see RcOverride - * - encoding: Allocated/set/freed by user. - * - decoding: unused - */ - int rc_override_count; - RcOverride *rc_override; - -#if FF_API_MPV_OPT - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - const char *rc_eq; -#endif - - /** - * maximum bitrate - * - encoding: Set by user. - * - decoding: Set by user, may be overwritten by libavcodec. - */ - int64_t rc_max_rate; - - /** - * minimum bitrate - * - encoding: Set by user. - * - decoding: unused - */ - int64_t rc_min_rate; - -#if FF_API_MPV_OPT - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - float rc_buffer_aggressivity; - - attribute_deprecated - float rc_initial_cplx; -#endif - - /** - * Ratecontrol attempt to use, at maximum, of what can be used without an underflow. - * - encoding: Set by user. - * - decoding: unused. - */ - float rc_max_available_vbv_use; - - /** - * Ratecontrol attempt to use, at least, times the amount needed to prevent a vbv overflow. - * - encoding: Set by user. - * - decoding: unused. - */ - float rc_min_vbv_overflow_use; - - /** - * Number of bits which should be loaded into the rc buffer before decoding starts. - * - encoding: Set by user. - * - decoding: unused - */ - int rc_initial_buffer_occupancy; - -#if FF_API_CODER_TYPE -#define FF_CODER_TYPE_VLC 0 -#define FF_CODER_TYPE_AC 1 -#define FF_CODER_TYPE_RAW 2 -#define FF_CODER_TYPE_RLE 3 -#if FF_API_UNUSED_MEMBERS -#define FF_CODER_TYPE_DEFLATE 4 -#endif /* FF_API_UNUSED_MEMBERS */ - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - int coder_type; -#endif /* FF_API_CODER_TYPE */ - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int context_model; -#endif - -#if FF_API_MPV_OPT - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - int lmin; - - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - int lmax; -#endif - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int frame_skip_threshold; - - /** @deprecated use encoder private options instead */ - attribute_deprecated - int frame_skip_factor; - - /** @deprecated use encoder private options instead */ - attribute_deprecated - int frame_skip_exp; - - /** @deprecated use encoder private options instead */ - attribute_deprecated - int frame_skip_cmp; -#endif /* FF_API_PRIVATE_OPT */ - - /** - * trellis RD quantization - * - encoding: Set by user. - * - decoding: unused - */ - int trellis; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int min_prediction_order; - - /** @deprecated use encoder private options instead */ - attribute_deprecated - int max_prediction_order; - - /** @deprecated use encoder private options instead */ - attribute_deprecated - int64_t timecode_frame_start; -#endif - -#if FF_API_RTP_CALLBACK - /** - * @deprecated unused - */ - /* The RTP callback: This function is called */ - /* every time the encoder has a packet to send. */ - /* It depends on the encoder if the data starts */ - /* with a Start Code (it should). H.263 does. */ - /* mb_nb contains the number of macroblocks */ - /* encoded in the RTP payload. */ - attribute_deprecated - void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb); -#endif - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int rtp_payload_size; /* The size of the RTP payload: the coder will */ - /* do its best to deliver a chunk with size */ - /* below rtp_payload_size, the chunk will start */ - /* with a start code on some codecs like H.263. */ - /* This doesn't take account of any particular */ - /* headers inside the transmitted RTP payload. */ -#endif - -#if FF_API_STAT_BITS - /* statistics, used for 2-pass encoding */ - attribute_deprecated - int mv_bits; - attribute_deprecated - int header_bits; - attribute_deprecated - int i_tex_bits; - attribute_deprecated - int p_tex_bits; - attribute_deprecated - int i_count; - attribute_deprecated - int p_count; - attribute_deprecated - int skip_count; - attribute_deprecated - int misc_bits; - - /** @deprecated this field is unused */ - attribute_deprecated - int frame_bits; -#endif - - /** - * pass1 encoding statistics output buffer - * - encoding: Set by libavcodec. - * - decoding: unused - */ - char *stats_out; - - /** - * pass2 encoding statistics input buffer - * Concatenated stuff from stats_out of pass1 should be placed here. - * - encoding: Allocated/set/freed by user. - * - decoding: unused - */ - char *stats_in; - - /** - * Work around bugs in encoders which sometimes cannot be detected automatically. - * - encoding: Set by user - * - decoding: Set by user - */ - int workaround_bugs; -#define FF_BUG_AUTODETECT 1 ///< autodetection -#if FF_API_OLD_MSMPEG4 -#define FF_BUG_OLD_MSMPEG4 2 -#endif -#define FF_BUG_XVID_ILACE 4 -#define FF_BUG_UMP4 8 -#define FF_BUG_NO_PADDING 16 -#define FF_BUG_AMV 32 -#if FF_API_AC_VLC -#define FF_BUG_AC_VLC 0 ///< Will be removed, libavcodec can now handle these non-compliant files by default. -#endif -#define FF_BUG_QPEL_CHROMA 64 -#define FF_BUG_STD_QPEL 128 -#define FF_BUG_QPEL_CHROMA2 256 -#define FF_BUG_DIRECT_BLOCKSIZE 512 -#define FF_BUG_EDGE 1024 -#define FF_BUG_HPEL_CHROMA 2048 -#define FF_BUG_DC_CLIP 4096 -#define FF_BUG_MS 8192 ///< Work around various bugs in Microsoft's broken decoders. -#define FF_BUG_TRUNCATED 16384 -#define FF_BUG_IEDGE 32768 - - /** - * strictly follow the standard (MPEG-4, ...). - * - encoding: Set by user. - * - decoding: Set by user. - * Setting this to STRICT or higher means the encoder and decoder will - * generally do stupid things, whereas setting it to unofficial or lower - * will mean the encoder might produce output that is not supported by all - * spec-compliant decoders. Decoders don't differentiate between normal, - * unofficial and experimental (that is, they always try to decode things - * when they can) unless they are explicitly asked to behave stupidly - * (=strictly conform to the specs) - */ - int strict_std_compliance; -#define FF_COMPLIANCE_VERY_STRICT 2 ///< Strictly conform to an older more strict version of the spec or reference software. -#define FF_COMPLIANCE_STRICT 1 ///< Strictly conform to all the things in the spec no matter what consequences. -#define FF_COMPLIANCE_NORMAL 0 -#define FF_COMPLIANCE_UNOFFICIAL -1 ///< Allow unofficial extensions -#define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things. - - /** - * error concealment flags - * - encoding: unused - * - decoding: Set by user. - */ - int error_concealment; -#define FF_EC_GUESS_MVS 1 -#define FF_EC_DEBLOCK 2 -#define FF_EC_FAVOR_INTER 256 - - /** - * debug - * - encoding: Set by user. - * - decoding: Set by user. - */ - int debug; -#define FF_DEBUG_PICT_INFO 1 -#define FF_DEBUG_RC 2 -#define FF_DEBUG_BITSTREAM 4 -#define FF_DEBUG_MB_TYPE 8 -#define FF_DEBUG_QP 16 -#if FF_API_DEBUG_MV -/** - * @deprecated this option does nothing - */ -#define FF_DEBUG_MV 32 -#endif -#define FF_DEBUG_DCT_COEFF 0x00000040 -#define FF_DEBUG_SKIP 0x00000080 -#define FF_DEBUG_STARTCODE 0x00000100 -#if FF_API_UNUSED_MEMBERS -#define FF_DEBUG_PTS 0x00000200 -#endif /* FF_API_UNUSED_MEMBERS */ -#define FF_DEBUG_ER 0x00000400 -#define FF_DEBUG_MMCO 0x00000800 -#define FF_DEBUG_BUGS 0x00001000 -#if FF_API_DEBUG_MV -#define FF_DEBUG_VIS_QP 0x00002000 ///< only access through AVOptions from outside libavcodec -#define FF_DEBUG_VIS_MB_TYPE 0x00004000 ///< only access through AVOptions from outside libavcodec -#endif -#define FF_DEBUG_BUFFERS 0x00008000 -#define FF_DEBUG_THREADS 0x00010000 -#define FF_DEBUG_GREEN_MD 0x00800000 -#define FF_DEBUG_NOMC 0x01000000 - -#if FF_API_DEBUG_MV - /** - * debug - * Code outside libavcodec should access this field using AVOptions - * - encoding: Set by user. - * - decoding: Set by user. - */ - int debug_mv; -#define FF_DEBUG_VIS_MV_P_FOR 0x00000001 // visualize forward predicted MVs of P-frames -#define FF_DEBUG_VIS_MV_B_FOR 0x00000002 // visualize forward predicted MVs of B-frames -#define FF_DEBUG_VIS_MV_B_BACK 0x00000004 // visualize backward predicted MVs of B-frames -#endif - - /** - * Error recognition; may misdetect some more or less valid parts as errors. - * - encoding: unused - * - decoding: Set by user. - */ - int err_recognition; - -/** - * Verify checksums embedded in the bitstream (could be of either encoded or - * decoded data, depending on the codec) and print an error message on mismatch. - * If AV_EF_EXPLODE is also set, a mismatching checksum will result in the - * decoder returning an error. - */ -#define AV_EF_CRCCHECK (1<<0) -#define AV_EF_BITSTREAM (1<<1) ///< detect bitstream specification deviations -#define AV_EF_BUFFER (1<<2) ///< detect improper bitstream length -#define AV_EF_EXPLODE (1<<3) ///< abort decoding on minor error detection - -#define AV_EF_IGNORE_ERR (1<<15) ///< ignore errors and continue -#define AV_EF_CAREFUL (1<<16) ///< consider things that violate the spec, are fast to calculate and have not been seen in the wild as errors -#define AV_EF_COMPLIANT (1<<17) ///< consider all spec non compliances as errors -#define AV_EF_AGGRESSIVE (1<<18) ///< consider things that a sane encoder should not do as an error - - - /** - * opaque 64-bit number (generally a PTS) that will be reordered and - * output in AVFrame.reordered_opaque - * - encoding: unused - * - decoding: Set by user. - */ - int64_t reordered_opaque; - - /** - * Hardware accelerator in use - * - encoding: unused. - * - decoding: Set by libavcodec - */ - struct AVHWAccel *hwaccel; - - /** - * Hardware accelerator context. - * For some hardware accelerators, a global context needs to be - * provided by the user. In that case, this holds display-dependent - * data FFmpeg cannot instantiate itself. Please refer to the - * FFmpeg HW accelerator documentation to know how to fill this - * is. e.g. for VA API, this is a struct vaapi_context. - * - encoding: unused - * - decoding: Set by user - */ - void *hwaccel_context; - - /** - * error - * - encoding: Set by libavcodec if flags & AV_CODEC_FLAG_PSNR. - * - decoding: unused - */ - uint64_t error[AV_NUM_DATA_POINTERS]; - - /** - * DCT algorithm, see FF_DCT_* below - * - encoding: Set by user. - * - decoding: unused - */ - int dct_algo; -#define FF_DCT_AUTO 0 -#define FF_DCT_FASTINT 1 -#define FF_DCT_INT 2 -#define FF_DCT_MMX 3 -#define FF_DCT_ALTIVEC 5 -#define FF_DCT_FAAN 6 - - /** - * IDCT algorithm, see FF_IDCT_* below. - * - encoding: Set by user. - * - decoding: Set by user. - */ - int idct_algo; -#define FF_IDCT_AUTO 0 -#define FF_IDCT_INT 1 -#define FF_IDCT_SIMPLE 2 -#define FF_IDCT_SIMPLEMMX 3 -#define FF_IDCT_ARM 7 -#define FF_IDCT_ALTIVEC 8 -#if FF_API_ARCH_SH4 -#define FF_IDCT_SH4 9 -#endif -#define FF_IDCT_SIMPLEARM 10 -#if FF_API_UNUSED_MEMBERS -#define FF_IDCT_IPP 13 -#endif /* FF_API_UNUSED_MEMBERS */ -#define FF_IDCT_XVID 14 -#if FF_API_IDCT_XVIDMMX -#define FF_IDCT_XVIDMMX 14 -#endif /* FF_API_IDCT_XVIDMMX */ -#define FF_IDCT_SIMPLEARMV5TE 16 -#define FF_IDCT_SIMPLEARMV6 17 -#if FF_API_ARCH_SPARC -#define FF_IDCT_SIMPLEVIS 18 -#endif -#define FF_IDCT_FAAN 20 -#define FF_IDCT_SIMPLENEON 22 -#if FF_API_ARCH_ALPHA -#define FF_IDCT_SIMPLEALPHA 23 -#endif -#define FF_IDCT_SIMPLEAUTO 128 - - /** - * bits per sample/pixel from the demuxer (needed for huffyuv). - * - encoding: Set by libavcodec. - * - decoding: Set by user. - */ - int bits_per_coded_sample; - - /** - * Bits per sample/pixel of internal libavcodec pixel/sample format. - * - encoding: set by user. - * - decoding: set by libavcodec. - */ - int bits_per_raw_sample; - -#if FF_API_LOWRES - /** - * low resolution decoding, 1-> 1/2 size, 2->1/4 size - * - encoding: unused - * - decoding: Set by user. - * Code outside libavcodec should access this field using: - * av_codec_{get,set}_lowres(avctx) - */ - int lowres; -#endif - -#if FF_API_CODED_FRAME - /** - * the picture in the bitstream - * - encoding: Set by libavcodec. - * - decoding: unused - * - * @deprecated use the quality factor packet side data instead - */ - attribute_deprecated AVFrame *coded_frame; -#endif - - /** - * thread count - * is used to decide how many independent tasks should be passed to execute() - * - encoding: Set by user. - * - decoding: Set by user. - */ - int thread_count; - - /** - * Which multithreading methods to use. - * Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread, - * so clients which cannot provide future frames should not use it. - * - * - encoding: Set by user, otherwise the default is used. - * - decoding: Set by user, otherwise the default is used. - */ - int thread_type; -#define FF_THREAD_FRAME 1 ///< Decode more than one frame at once -#define FF_THREAD_SLICE 2 ///< Decode more than one part of a single frame at once - - /** - * Which multithreading methods are in use by the codec. - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - int active_thread_type; - - /** - * Set by the client if its custom get_buffer() callback can be called - * synchronously from another thread, which allows faster multithreaded decoding. - * draw_horiz_band() will be called from other threads regardless of this setting. - * Ignored if the default get_buffer() is used. - * - encoding: Set by user. - * - decoding: Set by user. - */ - int thread_safe_callbacks; - - /** - * The codec may call this to execute several independent things. - * It will return only after finishing all tasks. - * The user may replace this with some multithreaded implementation, - * the default implementation will execute the parts serially. - * @param count the number of things to execute - * - encoding: Set by libavcodec, user can override. - * - decoding: Set by libavcodec, user can override. - */ - int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size); - - /** - * The codec may call this to execute several independent things. - * It will return only after finishing all tasks. - * The user may replace this with some multithreaded implementation, - * the default implementation will execute the parts serially. - * Also see avcodec_thread_init and e.g. the --enable-pthread configure option. - * @param c context passed also to func - * @param count the number of things to execute - * @param arg2 argument passed unchanged to func - * @param ret return values of executed functions, must have space for "count" values. May be NULL. - * @param func function that will be called count times, with jobnr from 0 to count-1. - * threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no - * two instances of func executing at the same time will have the same threadnr. - * @return always 0 currently, but code should handle a future improvement where when any call to func - * returns < 0 no further calls to func may be done and < 0 is returned. - * - encoding: Set by libavcodec, user can override. - * - decoding: Set by libavcodec, user can override. - */ - int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count); - - /** - * noise vs. sse weight for the nsse comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int nsse_weight; - - /** - * profile - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int profile; -#define FF_PROFILE_UNKNOWN -99 -#define FF_PROFILE_RESERVED -100 - -#define FF_PROFILE_AAC_MAIN 0 -#define FF_PROFILE_AAC_LOW 1 -#define FF_PROFILE_AAC_SSR 2 -#define FF_PROFILE_AAC_LTP 3 -#define FF_PROFILE_AAC_HE 4 -#define FF_PROFILE_AAC_HE_V2 28 -#define FF_PROFILE_AAC_LD 22 -#define FF_PROFILE_AAC_ELD 38 -#define FF_PROFILE_MPEG2_AAC_LOW 128 -#define FF_PROFILE_MPEG2_AAC_HE 131 - -#define FF_PROFILE_DNXHD 0 -#define FF_PROFILE_DNXHR_LB 1 -#define FF_PROFILE_DNXHR_SQ 2 -#define FF_PROFILE_DNXHR_HQ 3 -#define FF_PROFILE_DNXHR_HQX 4 -#define FF_PROFILE_DNXHR_444 5 - -#define FF_PROFILE_DTS 20 -#define FF_PROFILE_DTS_ES 30 -#define FF_PROFILE_DTS_96_24 40 -#define FF_PROFILE_DTS_HD_HRA 50 -#define FF_PROFILE_DTS_HD_MA 60 -#define FF_PROFILE_DTS_EXPRESS 70 - -#define FF_PROFILE_MPEG2_422 0 -#define FF_PROFILE_MPEG2_HIGH 1 -#define FF_PROFILE_MPEG2_SS 2 -#define FF_PROFILE_MPEG2_SNR_SCALABLE 3 -#define FF_PROFILE_MPEG2_MAIN 4 -#define FF_PROFILE_MPEG2_SIMPLE 5 - -#define FF_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag -#define FF_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag - -#define FF_PROFILE_H264_BASELINE 66 -#define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED) -#define FF_PROFILE_H264_MAIN 77 -#define FF_PROFILE_H264_EXTENDED 88 -#define FF_PROFILE_H264_HIGH 100 -#define FF_PROFILE_H264_HIGH_10 110 -#define FF_PROFILE_H264_HIGH_10_INTRA (110|FF_PROFILE_H264_INTRA) -#define FF_PROFILE_H264_MULTIVIEW_HIGH 118 -#define FF_PROFILE_H264_HIGH_422 122 -#define FF_PROFILE_H264_HIGH_422_INTRA (122|FF_PROFILE_H264_INTRA) -#define FF_PROFILE_H264_STEREO_HIGH 128 -#define FF_PROFILE_H264_HIGH_444 144 -#define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244 -#define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA) -#define FF_PROFILE_H264_CAVLC_444 44 - -#define FF_PROFILE_VC1_SIMPLE 0 -#define FF_PROFILE_VC1_MAIN 1 -#define FF_PROFILE_VC1_COMPLEX 2 -#define FF_PROFILE_VC1_ADVANCED 3 - -#define FF_PROFILE_MPEG4_SIMPLE 0 -#define FF_PROFILE_MPEG4_SIMPLE_SCALABLE 1 -#define FF_PROFILE_MPEG4_CORE 2 -#define FF_PROFILE_MPEG4_MAIN 3 -#define FF_PROFILE_MPEG4_N_BIT 4 -#define FF_PROFILE_MPEG4_SCALABLE_TEXTURE 5 -#define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6 -#define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7 -#define FF_PROFILE_MPEG4_HYBRID 8 -#define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME 9 -#define FF_PROFILE_MPEG4_CORE_SCALABLE 10 -#define FF_PROFILE_MPEG4_ADVANCED_CODING 11 -#define FF_PROFILE_MPEG4_ADVANCED_CORE 12 -#define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13 -#define FF_PROFILE_MPEG4_SIMPLE_STUDIO 14 -#define FF_PROFILE_MPEG4_ADVANCED_SIMPLE 15 - -#define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0 1 -#define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1 2 -#define FF_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION 32768 -#define FF_PROFILE_JPEG2000_DCINEMA_2K 3 -#define FF_PROFILE_JPEG2000_DCINEMA_4K 4 - -#define FF_PROFILE_VP9_0 0 -#define FF_PROFILE_VP9_1 1 -#define FF_PROFILE_VP9_2 2 -#define FF_PROFILE_VP9_3 3 - -#define FF_PROFILE_HEVC_MAIN 1 -#define FF_PROFILE_HEVC_MAIN_10 2 -#define FF_PROFILE_HEVC_MAIN_STILL_PICTURE 3 -#define FF_PROFILE_HEVC_REXT 4 - - /** - * level - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int level; -#define FF_LEVEL_UNKNOWN -99 - - /** - * Skip loop filtering for selected frames. - * - encoding: unused - * - decoding: Set by user. - */ - enum AVDiscard skip_loop_filter; - - /** - * Skip IDCT/dequantization for selected frames. - * - encoding: unused - * - decoding: Set by user. - */ - enum AVDiscard skip_idct; - - /** - * Skip decoding for selected frames. - * - encoding: unused - * - decoding: Set by user. - */ - enum AVDiscard skip_frame; - - /** - * Header containing style information for text subtitles. - * For SUBTITLE_ASS subtitle type, it should contain the whole ASS - * [Script Info] and [V4+ Styles] section, plus the [Events] line and - * the Format line following. It shouldn't include any Dialogue line. - * - encoding: Set/allocated/freed by user (before avcodec_open2()) - * - decoding: Set/allocated/freed by libavcodec (by avcodec_open2()) - */ - uint8_t *subtitle_header; - int subtitle_header_size; - -#if FF_API_ERROR_RATE - /** - * @deprecated use the 'error_rate' private AVOption of the mpegvideo - * encoders - */ - attribute_deprecated - int error_rate; -#endif - -#if FF_API_VBV_DELAY - /** - * VBV delay coded in the last frame (in periods of a 27 MHz clock). - * Used for compliant TS muxing. - * - encoding: Set by libavcodec. - * - decoding: unused. - * @deprecated this value is now exported as a part of - * AV_PKT_DATA_CPB_PROPERTIES packet side data - */ - attribute_deprecated - uint64_t vbv_delay; -#endif - -#if FF_API_SIDEDATA_ONLY_PKT - /** - * Encoding only and set by default. Allow encoders to output packets - * that do not contain any encoded data, only side data. - * - * Some encoders need to output such packets, e.g. to update some stream - * parameters at the end of encoding. - * - * @deprecated this field disables the default behaviour and - * it is kept only for compatibility. - */ - attribute_deprecated - int side_data_only_packets; -#endif - - /** - * Audio only. The number of "priming" samples (padding) inserted by the - * encoder at the beginning of the audio. I.e. this number of leading - * decoded samples must be discarded by the caller to get the original audio - * without leading padding. - * - * - decoding: unused - * - encoding: Set by libavcodec. The timestamps on the output packets are - * adjusted by the encoder so that they always refer to the - * first sample of the data actually contained in the packet, - * including any added padding. E.g. if the timebase is - * 1/samplerate and the timestamp of the first input sample is - * 0, the timestamp of the first output packet will be - * -initial_padding. - */ - int initial_padding; - - /** - * - decoding: For codecs that store a framerate value in the compressed - * bitstream, the decoder may export it here. { 0, 1} when - * unknown. - * - encoding: May be used to signal the framerate of CFR content to an - * encoder. - */ - AVRational framerate; - - /** - * Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx. - * - encoding: unused. - * - decoding: Set by libavcodec before calling get_format() - */ - enum AVPixelFormat sw_pix_fmt; - - /** - * Timebase in which pkt_dts/pts and AVPacket.dts/pts are. - * Code outside libavcodec should access this field using: - * av_codec_{get,set}_pkt_timebase(avctx) - * - encoding unused. - * - decoding set by user. - */ - AVRational pkt_timebase; - - /** - * AVCodecDescriptor - * Code outside libavcodec should access this field using: - * av_codec_{get,set}_codec_descriptor(avctx) - * - encoding: unused. - * - decoding: set by libavcodec. - */ - const AVCodecDescriptor *codec_descriptor; - -#if !FF_API_LOWRES - /** - * low resolution decoding, 1-> 1/2 size, 2->1/4 size - * - encoding: unused - * - decoding: Set by user. - * Code outside libavcodec should access this field using: - * av_codec_{get,set}_lowres(avctx) - */ - int lowres; -#endif - - /** - * Current statistics for PTS correction. - * - decoding: maintained and used by libavcodec, not intended to be used by user apps - * - encoding: unused - */ - int64_t pts_correction_num_faulty_pts; /// Number of incorrect PTS values so far - int64_t pts_correction_num_faulty_dts; /// Number of incorrect DTS values so far - int64_t pts_correction_last_pts; /// PTS of the last frame - int64_t pts_correction_last_dts; /// DTS of the last frame - - /** - * Character encoding of the input subtitles file. - * - decoding: set by user - * - encoding: unused - */ - char *sub_charenc; - - /** - * Subtitles character encoding mode. Formats or codecs might be adjusting - * this setting (if they are doing the conversion themselves for instance). - * - decoding: set by libavcodec - * - encoding: unused - */ - int sub_charenc_mode; -#define FF_SUB_CHARENC_MODE_DO_NOTHING -1 ///< do nothing (demuxer outputs a stream supposed to be already in UTF-8, or the codec is bitmap for instance) -#define FF_SUB_CHARENC_MODE_AUTOMATIC 0 ///< libavcodec will select the mode itself -#define FF_SUB_CHARENC_MODE_PRE_DECODER 1 ///< the AVPacket data needs to be recoded to UTF-8 before being fed to the decoder, requires iconv - - /** - * Skip processing alpha if supported by codec. - * Note that if the format uses pre-multiplied alpha (common with VP6, - * and recommended due to better video quality/compression) - * the image will look as if alpha-blended onto a black background. - * However for formats that do not use pre-multiplied alpha - * there might be serious artefacts (though e.g. libswscale currently - * assumes pre-multiplied alpha anyway). - * Code outside libavcodec should access this field using AVOptions - * - * - decoding: set by user - * - encoding: unused - */ - int skip_alpha; - - /** - * Number of samples to skip after a discontinuity - * - decoding: unused - * - encoding: set by libavcodec - */ - int seek_preroll; - -#if !FF_API_DEBUG_MV - /** - * debug motion vectors - * Code outside libavcodec should access this field using AVOptions - * - encoding: Set by user. - * - decoding: Set by user. - */ - int debug_mv; -#define FF_DEBUG_VIS_MV_P_FOR 0x00000001 //visualize forward predicted MVs of P frames -#define FF_DEBUG_VIS_MV_B_FOR 0x00000002 //visualize forward predicted MVs of B frames -#define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames -#endif - - /** - * custom intra quantization matrix - * Code outside libavcodec should access this field using av_codec_g/set_chroma_intra_matrix() - * - encoding: Set by user, can be NULL. - * - decoding: unused. - */ - uint16_t *chroma_intra_matrix; - - /** - * dump format separator. - * can be ", " or "\n " or anything else - * Code outside libavcodec should access this field using AVOptions - * (NO direct access). - * - encoding: Set by user. - * - decoding: Set by user. - */ - uint8_t *dump_separator; - - /** - * ',' separated list of allowed decoders. - * If NULL then all are allowed - * - encoding: unused - * - decoding: set by user through AVOPtions (NO direct access) - */ - char *codec_whitelist; - - /* - * Properties of the stream that gets decoded - * To be accessed through av_codec_get_properties() (NO direct access) - * - encoding: unused - * - decoding: set by libavcodec - */ - unsigned properties; -#define FF_CODEC_PROPERTY_LOSSLESS 0x00000001 -#define FF_CODEC_PROPERTY_CLOSED_CAPTIONS 0x00000002 - - /** - * Additional data associated with the entire coded stream. - * - * - decoding: unused - * - encoding: may be set by libavcodec after avcodec_open2(). - */ - AVPacketSideData *coded_side_data; - int nb_coded_side_data; - - /** - * A reference to the AVHWFramesContext describing the input (for encoding) - * or output (decoding) frames. The reference is set by the caller and - * afterwards owned (and freed) by libavcodec. - * - * - decoding: This field should be set by the caller from the get_format() - * callback. The previous reference (if any) will always be - * unreffed by libavcodec before the get_format() call. - * - * If the default get_buffer2() is used with a hwaccel pixel - * format, then this AVHWFramesContext will be used for - * allocating the frame buffers. - * - * - encoding: For hardware encoders configured to use a hwaccel pixel - * format, this field should be set by the caller to a reference - * to the AVHWFramesContext describing input frames. - * AVHWFramesContext.format must be equal to - * AVCodecContext.pix_fmt. - * - * This field should be set before avcodec_open2() is called. - */ - AVBufferRef *hw_frames_ctx; - - /** - * Control the form of AVSubtitle.rects[N]->ass - * - decoding: set by user - * - encoding: unused - */ - int sub_text_format; -#define FF_SUB_TEXT_FMT_ASS 0 -#if FF_API_ASS_TIMING -#define FF_SUB_TEXT_FMT_ASS_WITH_TIMINGS 1 -#endif - - /** - * Audio only. The amount of padding (in samples) appended by the encoder to - * the end of the audio. I.e. this number of decoded samples must be - * discarded by the caller from the end of the stream to get the original - * audio without any trailing padding. - * - * - decoding: unused - * - encoding: unused - */ - int trailing_padding; - -} AVCodecContext; - -AVRational av_codec_get_pkt_timebase (const AVCodecContext *avctx); -void av_codec_set_pkt_timebase (AVCodecContext *avctx, AVRational val); - -const AVCodecDescriptor *av_codec_get_codec_descriptor(const AVCodecContext *avctx); -void av_codec_set_codec_descriptor(AVCodecContext *avctx, const AVCodecDescriptor *desc); - -unsigned av_codec_get_codec_properties(const AVCodecContext *avctx); - -int av_codec_get_lowres(const AVCodecContext *avctx); -void av_codec_set_lowres(AVCodecContext *avctx, int val); - -int av_codec_get_seek_preroll(const AVCodecContext *avctx); -void av_codec_set_seek_preroll(AVCodecContext *avctx, int val); - -uint16_t *av_codec_get_chroma_intra_matrix(const AVCodecContext *avctx); -void av_codec_set_chroma_intra_matrix(AVCodecContext *avctx, uint16_t *val); - -/** - * AVProfile. - */ -typedef struct AVProfile { - int profile; - const char *name; ///< short name for the profile -} AVProfile; - -typedef struct AVCodecDefault AVCodecDefault; - -struct AVSubtitle; - -/** - * AVCodec. - */ -typedef struct AVCodec { - /** - * Name of the codec implementation. - * The name is globally unique among encoders and among decoders (but an - * encoder and a decoder can share the same name). - * This is the primary way to find a codec from the user perspective. - */ - const char *name; - /** - * Descriptive name for the codec, meant to be more human readable than name. - * You should use the NULL_IF_CONFIG_SMALL() macro to define it. - */ - const char *long_name; - enum AVMediaType type; - enum AVCodecID id; - /** - * Codec capabilities. - * see AV_CODEC_CAP_* - */ - int capabilities; - const AVRational *supported_framerates; ///< array of supported framerates, or NULL if any, array is terminated by {0,0} - const enum AVPixelFormat *pix_fmts; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1 - const int *supported_samplerates; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0 - const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1 - const uint64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0 - uint8_t max_lowres; ///< maximum value for lowres supported by the decoder, no direct access, use av_codec_get_max_lowres() - const AVClass *priv_class; ///< AVClass for the private context - const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN} - - /***************************************************************** - * No fields below this line are part of the public API. They - * may not be used outside of libavcodec and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - int priv_data_size; - struct AVCodec *next; - /** - * @name Frame-level threading support functions - * @{ - */ - /** - * If defined, called on thread contexts when they are created. - * If the codec allocates writable tables in init(), re-allocate them here. - * priv_data will be set to a copy of the original. - */ - int (*init_thread_copy)(AVCodecContext *); - /** - * Copy necessary context variables from a previous thread context to the current one. - * If not defined, the next thread will start automatically; otherwise, the codec - * must call ff_thread_finish_setup(). - * - * dst and src will (rarely) point to the same context, in which case memcpy should be skipped. - */ - int (*update_thread_context)(AVCodecContext *dst, const AVCodecContext *src); - /** @} */ - - /** - * Private codec-specific defaults. - */ - const AVCodecDefault *defaults; - - /** - * Initialize codec static data, called from avcodec_register(). - */ - void (*init_static_data)(struct AVCodec *codec); - - int (*init)(AVCodecContext *); - int (*encode_sub)(AVCodecContext *, uint8_t *buf, int buf_size, - const struct AVSubtitle *sub); - /** - * Encode data to an AVPacket. - * - * @param avctx codec context - * @param avpkt output AVPacket (may contain a user-provided buffer) - * @param[in] frame AVFrame containing the raw data to be encoded - * @param[out] got_packet_ptr encoder sets to 0 or 1 to indicate that a - * non-empty packet was returned in avpkt. - * @return 0 on success, negative error code on failure - */ - int (*encode2)(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, - int *got_packet_ptr); - int (*decode)(AVCodecContext *, void *outdata, int *outdata_size, AVPacket *avpkt); - int (*close)(AVCodecContext *); - /** - * Decode/encode API with decoupled packet/frame dataflow. The API is the - * same as the avcodec_ prefixed APIs (avcodec_send_frame() etc.), except - * that: - * - never called if the codec is closed or the wrong type, - * - AVPacket parameter change side data is applied right before calling - * AVCodec->send_packet, - * - if AV_CODEC_CAP_DELAY is not set, drain packets or frames are never sent, - * - only one drain packet is ever passed down (until the next flush()), - * - a drain AVPacket is always NULL (no need to check for avpkt->size). - */ - int (*send_frame)(AVCodecContext *avctx, const AVFrame *frame); - int (*send_packet)(AVCodecContext *avctx, const AVPacket *avpkt); - int (*receive_frame)(AVCodecContext *avctx, AVFrame *frame); - int (*receive_packet)(AVCodecContext *avctx, AVPacket *avpkt); - /** - * Flush buffers. - * Will be called when seeking - */ - void (*flush)(AVCodecContext *); - /** - * Internal codec capabilities. - * See FF_CODEC_CAP_* in internal.h - */ - int caps_internal; -} AVCodec; - -int av_codec_get_max_lowres(const AVCodec *codec); - -struct MpegEncContext; - -/** - * @defgroup lavc_hwaccel AVHWAccel - * @{ - */ -typedef struct AVHWAccel { - /** - * Name of the hardware accelerated codec. - * The name is globally unique among encoders and among decoders (but an - * encoder and a decoder can share the same name). - */ - const char *name; - - /** - * Type of codec implemented by the hardware accelerator. - * - * See AVMEDIA_TYPE_xxx - */ - enum AVMediaType type; - - /** - * Codec implemented by the hardware accelerator. - * - * See AV_CODEC_ID_xxx - */ - enum AVCodecID id; - - /** - * Supported pixel format. - * - * Only hardware accelerated formats are supported here. - */ - enum AVPixelFormat pix_fmt; - - /** - * Hardware accelerated codec capabilities. - * see HWACCEL_CODEC_CAP_* - */ - int capabilities; - - /***************************************************************** - * No fields below this line are part of the public API. They - * may not be used outside of libavcodec and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - struct AVHWAccel *next; - - /** - * Allocate a custom buffer - */ - int (*alloc_frame)(AVCodecContext *avctx, AVFrame *frame); - - /** - * Called at the beginning of each frame or field picture. - * - * Meaningful frame information (codec specific) is guaranteed to - * be parsed at this point. This function is mandatory. - * - * Note that buf can be NULL along with buf_size set to 0. - * Otherwise, this means the whole frame is available at this point. - * - * @param avctx the codec context - * @param buf the frame data buffer base - * @param buf_size the size of the frame in bytes - * @return zero if successful, a negative value otherwise - */ - int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); - - /** - * Callback for each slice. - * - * Meaningful slice information (codec specific) is guaranteed to - * be parsed at this point. This function is mandatory. - * The only exception is XvMC, that works on MB level. - * - * @param avctx the codec context - * @param buf the slice data buffer base - * @param buf_size the size of the slice in bytes - * @return zero if successful, a negative value otherwise - */ - int (*decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); - - /** - * Called at the end of each frame or field picture. - * - * The whole picture is parsed at this point and can now be sent - * to the hardware accelerator. This function is mandatory. - * - * @param avctx the codec context - * @return zero if successful, a negative value otherwise - */ - int (*end_frame)(AVCodecContext *avctx); - - /** - * Size of per-frame hardware accelerator private data. - * - * Private data is allocated with av_mallocz() before - * AVCodecContext.get_buffer() and deallocated after - * AVCodecContext.release_buffer(). - */ - int frame_priv_data_size; - - /** - * Called for every Macroblock in a slice. - * - * XvMC uses it to replace the ff_mpv_decode_mb(). - * Instead of decoding to raw picture, MB parameters are - * stored in an array provided by the video driver. - * - * @param s the mpeg context - */ - void (*decode_mb)(struct MpegEncContext *s); - - /** - * Initialize the hwaccel private data. - * - * This will be called from ff_get_format(), after hwaccel and - * hwaccel_context are set and the hwaccel private data in AVCodecInternal - * is allocated. - */ - int (*init)(AVCodecContext *avctx); - - /** - * Uninitialize the hwaccel private data. - * - * This will be called from get_format() or avcodec_close(), after hwaccel - * and hwaccel_context are already uninitialized. - */ - int (*uninit)(AVCodecContext *avctx); - - /** - * Size of the private data to allocate in - * AVCodecInternal.hwaccel_priv_data. - */ - int priv_data_size; -} AVHWAccel; - -/** - * Hardware acceleration should be used for decoding even if the codec level - * used is unknown or higher than the maximum supported level reported by the - * hardware driver. - * - * It's generally a good idea to pass this flag unless you have a specific - * reason not to, as hardware tends to under-report supported levels. - */ -#define AV_HWACCEL_FLAG_IGNORE_LEVEL (1 << 0) - -/** - * Hardware acceleration can output YUV pixel formats with a different chroma - * sampling than 4:2:0 and/or other than 8 bits per component. - */ -#define AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH (1 << 1) - -/** - * @} - */ - -#if FF_API_AVPICTURE -/** - * @defgroup lavc_picture AVPicture - * - * Functions for working with AVPicture - * @{ - */ - -/** - * Picture data structure. - * - * Up to four components can be stored into it, the last component is - * alpha. - * @deprecated use AVFrame or imgutils functions instead - */ -typedef struct AVPicture { - attribute_deprecated - uint8_t *data[AV_NUM_DATA_POINTERS]; ///< pointers to the image data planes - attribute_deprecated - int linesize[AV_NUM_DATA_POINTERS]; ///< number of bytes per line -} AVPicture; - -/** - * @} - */ -#endif - -enum AVSubtitleType { - SUBTITLE_NONE, - - SUBTITLE_BITMAP, ///< A bitmap, pict will be set - - /** - * Plain text, the text field must be set by the decoder and is - * authoritative. ass and pict fields may contain approximations. - */ - SUBTITLE_TEXT, - - /** - * Formatted text, the ass field must be set by the decoder and is - * authoritative. pict and text fields may contain approximations. - */ - SUBTITLE_ASS, -}; - -#define AV_SUBTITLE_FLAG_FORCED 0x00000001 - -typedef struct AVSubtitleRect { - int x; ///< top left corner of pict, undefined when pict is not set - int y; ///< top left corner of pict, undefined when pict is not set - int w; ///< width of pict, undefined when pict is not set - int h; ///< height of pict, undefined when pict is not set - int nb_colors; ///< number of colors in pict, undefined when pict is not set - -#if FF_API_AVPICTURE - /** - * @deprecated unused - */ - attribute_deprecated - AVPicture pict; -#endif - /** - * data+linesize for the bitmap of this subtitle. - * Can be set for text/ass as well once they are rendered. - */ - uint8_t *data[4]; - int linesize[4]; - - enum AVSubtitleType type; - - char *text; ///< 0 terminated plain UTF-8 text - - /** - * 0 terminated ASS/SSA compatible event line. - * The presentation of this is unaffected by the other values in this - * struct. - */ - char *ass; - - int flags; -} AVSubtitleRect; - -typedef struct AVSubtitle { - uint16_t format; /* 0 = graphics */ - uint32_t start_display_time; /* relative to packet pts, in ms */ - uint32_t end_display_time; /* relative to packet pts, in ms */ - unsigned num_rects; - AVSubtitleRect **rects; - int64_t pts; ///< Same as packet pts, in AV_TIME_BASE -} AVSubtitle; - -/** - * This struct describes the properties of an encoded stream. - * - * sizeof(AVCodecParameters) is not a part of the public ABI, this struct must - * be allocated with avcodec_parameters_alloc() and freed with - * avcodec_parameters_free(). - */ -typedef struct AVCodecParameters { - /** - * General type of the encoded data. - */ - enum AVMediaType codec_type; - /** - * Specific type of the encoded data (the codec used). - */ - enum AVCodecID codec_id; - /** - * Additional information about the codec (corresponds to the AVI FOURCC). - */ - uint32_t codec_tag; - - /** - * Extra binary data needed for initializing the decoder, codec-dependent. - * - * Must be allocated with av_malloc() and will be freed by - * avcodec_parameters_free(). The allocated size of extradata must be at - * least extradata_size + AV_INPUT_BUFFER_PADDING_SIZE, with the padding - * bytes zeroed. - */ - uint8_t *extradata; - /** - * Size of the extradata content in bytes. - */ - int extradata_size; - - /** - * - video: the pixel format, the value corresponds to enum AVPixelFormat. - * - audio: the sample format, the value corresponds to enum AVSampleFormat. - */ - int format; - - /** - * The average bitrate of the encoded data (in bits per second). - */ - int64_t bit_rate; - - /** - * The number of bits per sample in the codedwords. - * - * This is basically the bitrate per sample. It is mandatory for a bunch of - * formats to actually decode them. It's the number of bits for one sample in - * the actual coded bitstream. - * - * This could be for example 4 for ADPCM - * For PCM formats this matches bits_per_raw_sample - * Can be 0 - */ - int bits_per_coded_sample; - - /** - * This is the number of valid bits in each output sample. If the - * sample format has more bits, the least significant bits are additional - * padding bits, which are always 0. Use right shifts to reduce the sample - * to its actual size. For example, audio formats with 24 bit samples will - * have bits_per_raw_sample set to 24, and format set to AV_SAMPLE_FMT_S32. - * To get the original sample use "(int32_t)sample >> 8"." - * - * For ADPCM this might be 12 or 16 or similar - * Can be 0 - */ - int bits_per_raw_sample; - - /** - * Codec-specific bitstream restrictions that the stream conforms to. - */ - int profile; - int level; - - /** - * Video only. The dimensions of the video frame in pixels. - */ - int width; - int height; - - /** - * Video only. The aspect ratio (width / height) which a single pixel - * should have when displayed. - * - * When the aspect ratio is unknown / undefined, the numerator should be - * set to 0 (the denominator may have any value). - */ - AVRational sample_aspect_ratio; - - /** - * Video only. The order of the fields in interlaced video. - */ - enum AVFieldOrder field_order; - - /** - * Video only. Additional colorspace characteristics. - */ - enum AVColorRange color_range; - enum AVColorPrimaries color_primaries; - enum AVColorTransferCharacteristic color_trc; - enum AVColorSpace color_space; - enum AVChromaLocation chroma_location; - - /** - * Video only. Number of delayed frames. - */ - int video_delay; - - /** - * Audio only. The channel layout bitmask. May be 0 if the channel layout is - * unknown or unspecified, otherwise the number of bits set must be equal to - * the channels field. - */ - uint64_t channel_layout; - /** - * Audio only. The number of audio channels. - */ - int channels; - /** - * Audio only. The number of audio samples per second. - */ - int sample_rate; - /** - * Audio only. The number of bytes per coded audio frame, required by some - * formats. - * - * Corresponds to nBlockAlign in WAVEFORMATEX. - */ - int block_align; - /** - * Audio only. Audio frame size, if known. Required by some formats to be static. - */ - int frame_size; - - /** - * Audio only. The amount of padding (in samples) inserted by the encoder at - * the beginning of the audio. I.e. this number of leading decoded samples - * must be discarded by the caller to get the original audio without leading - * padding. - */ - int initial_padding; - /** - * Audio only. The amount of padding (in samples) appended by the encoder to - * the end of the audio. I.e. this number of decoded samples must be - * discarded by the caller from the end of the stream to get the original - * audio without any trailing padding. - */ - int trailing_padding; - /** - * Audio only. Number of samples to skip after a discontinuity. - */ - int seek_preroll; -} AVCodecParameters; - -/** - * If c is NULL, returns the first registered codec, - * if c is non-NULL, returns the next registered codec after c, - * or NULL if c is the last one. - */ -AVCodec *av_codec_next(const AVCodec *c); - -/** - * Return the LIBAVCODEC_VERSION_INT constant. - */ -unsigned avcodec_version(void); - -/** - * Return the libavcodec build-time configuration. - */ -const char *avcodec_configuration(void); - -/** - * Return the libavcodec license. - */ -const char *avcodec_license(void); - -/** - * Register the codec codec and initialize libavcodec. - * - * @warning either this function or avcodec_register_all() must be called - * before any other libavcodec functions. - * - * @see avcodec_register_all() - */ -void avcodec_register(AVCodec *codec); - -/** - * Register all the codecs, parsers and bitstream filters which were enabled at - * configuration time. If you do not call this function you can select exactly - * which formats you want to support, by using the individual registration - * functions. - * - * @see avcodec_register - * @see av_register_codec_parser - * @see av_register_bitstream_filter - */ -void avcodec_register_all(void); - -/** - * Allocate an AVCodecContext and set its fields to default values. The - * resulting struct should be freed with avcodec_free_context(). - * - * @param codec if non-NULL, allocate private data and initialize defaults - * for the given codec. It is illegal to then call avcodec_open2() - * with a different codec. - * If NULL, then the codec-specific defaults won't be initialized, - * which may result in suboptimal default settings (this is - * important mainly for encoders, e.g. libx264). - * - * @return An AVCodecContext filled with default values or NULL on failure. - */ -AVCodecContext *avcodec_alloc_context3(const AVCodec *codec); - -/** - * Free the codec context and everything associated with it and write NULL to - * the provided pointer. - */ -void avcodec_free_context(AVCodecContext **avctx); - -#if FF_API_GET_CONTEXT_DEFAULTS -/** - * @deprecated This function should not be used, as closing and opening a codec - * context multiple time is not supported. A new codec context should be - * allocated for each new use. - */ -int avcodec_get_context_defaults3(AVCodecContext *s, const AVCodec *codec); -#endif - -/** - * Get the AVClass for AVCodecContext. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *avcodec_get_class(void); - -#if FF_API_COPY_CONTEXT -/** - * Get the AVClass for AVFrame. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *avcodec_get_frame_class(void); - -/** - * Get the AVClass for AVSubtitleRect. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *avcodec_get_subtitle_rect_class(void); - -/** - * Copy the settings of the source AVCodecContext into the destination - * AVCodecContext. The resulting destination codec context will be - * unopened, i.e. you are required to call avcodec_open2() before you - * can use this AVCodecContext to decode/encode video/audio data. - * - * @param dest target codec context, should be initialized with - * avcodec_alloc_context3(NULL), but otherwise uninitialized - * @param src source codec context - * @return AVERROR() on error (e.g. memory allocation error), 0 on success - * - * @deprecated The semantics of this function are ill-defined and it should not - * be used. If you need to transfer the stream parameters from one codec context - * to another, use an intermediate AVCodecParameters instance and the - * avcodec_parameters_from_context() / avcodec_parameters_to_context() - * functions. - */ -attribute_deprecated -int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src); -#endif - -/** - * Allocate a new AVCodecParameters and set its fields to default values - * (unknown/invalid/0). The returned struct must be freed with - * avcodec_parameters_free(). - */ -AVCodecParameters *avcodec_parameters_alloc(void); - -/** - * Free an AVCodecParameters instance and everything associated with it and - * write NULL to the supplied pointer. - */ -void avcodec_parameters_free(AVCodecParameters **par); - -/** - * Copy the contents of src to dst. Any allocated fields in dst are freed and - * replaced with newly allocated duplicates of the corresponding fields in src. - * - * @return >= 0 on success, a negative AVERROR code on failure. - */ -int avcodec_parameters_copy(AVCodecParameters *dst, const AVCodecParameters *src); - -/** - * Fill the parameters struct based on the values from the supplied codec - * context. Any allocated fields in par are freed and replaced with duplicates - * of the corresponding fields in codec. - * - * @return >= 0 on success, a negative AVERROR code on failure - */ -int avcodec_parameters_from_context(AVCodecParameters *par, - const AVCodecContext *codec); - -/** - * Fill the codec context based on the values from the supplied codec - * parameters. Any allocated fields in codec that have a corresponding field in - * par are freed and replaced with duplicates of the corresponding field in par. - * Fields in codec that do not have a counterpart in par are not touched. - * - * @return >= 0 on success, a negative AVERROR code on failure. - */ -int avcodec_parameters_to_context(AVCodecContext *codec, - const AVCodecParameters *par); - -/** - * Initialize the AVCodecContext to use the given AVCodec. Prior to using this - * function the context has to be allocated with avcodec_alloc_context3(). - * - * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(), - * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for - * retrieving a codec. - * - * @warning This function is not thread safe! - * - * @note Always call this function before using decoding routines (such as - * @ref avcodec_receive_frame()). - * - * @code - * avcodec_register_all(); - * av_dict_set(&opts, "b", "2.5M", 0); - * codec = avcodec_find_decoder(AV_CODEC_ID_H264); - * if (!codec) - * exit(1); - * - * context = avcodec_alloc_context3(codec); - * - * if (avcodec_open2(context, codec, opts) < 0) - * exit(1); - * @endcode - * - * @param avctx The context to initialize. - * @param codec The codec to open this context for. If a non-NULL codec has been - * previously passed to avcodec_alloc_context3() or - * for this context, then this parameter MUST be either NULL or - * equal to the previously passed codec. - * @param options A dictionary filled with AVCodecContext and codec-private options. - * On return this object will be filled with options that were not found. - * - * @return zero on success, a negative value on error - * @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(), - * av_dict_set(), av_opt_find(). - */ -int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options); - -/** - * Close a given AVCodecContext and free all the data associated with it - * (but not the AVCodecContext itself). - * - * Calling this function on an AVCodecContext that hasn't been opened will free - * the codec-specific data allocated in avcodec_alloc_context3() with a non-NULL - * codec. Subsequent calls will do nothing. - * - * @note Do not use this function. Use avcodec_free_context() to destroy a - * codec context (either open or closed). Opening and closing a codec context - * multiple times is not supported anymore -- use multiple codec contexts - * instead. - */ -int avcodec_close(AVCodecContext *avctx); - -/** - * Free all allocated data in the given subtitle struct. - * - * @param sub AVSubtitle to free. - */ -void avsubtitle_free(AVSubtitle *sub); - -/** - * @} - */ - -/** - * @addtogroup lavc_packet - * @{ - */ - -/** - * Allocate an AVPacket and set its fields to default values. The resulting - * struct must be freed using av_packet_free(). - * - * @return An AVPacket filled with default values or NULL on failure. - * - * @note this only allocates the AVPacket itself, not the data buffers. Those - * must be allocated through other means such as av_new_packet. - * - * @see av_new_packet - */ -AVPacket *av_packet_alloc(void); - -/** - * Create a new packet that references the same data as src. - * - * This is a shortcut for av_packet_alloc()+av_packet_ref(). - * - * @return newly created AVPacket on success, NULL on error. - * - * @see av_packet_alloc - * @see av_packet_ref - */ -AVPacket *av_packet_clone(AVPacket *src); - -/** - * Free the packet, if the packet is reference counted, it will be - * unreferenced first. - * - * @param packet packet to be freed. The pointer will be set to NULL. - * @note passing NULL is a no-op. - */ -void av_packet_free(AVPacket **pkt); - -/** - * Initialize optional fields of a packet with default values. - * - * Note, this does not touch the data and size members, which have to be - * initialized separately. - * - * @param pkt packet - */ -void av_init_packet(AVPacket *pkt); - -/** - * Allocate the payload of a packet and initialize its fields with - * default values. - * - * @param pkt packet - * @param size wanted payload size - * @return 0 if OK, AVERROR_xxx otherwise - */ -int av_new_packet(AVPacket *pkt, int size); - -/** - * Reduce packet size, correctly zeroing padding - * - * @param pkt packet - * @param size new size - */ -void av_shrink_packet(AVPacket *pkt, int size); - -/** - * Increase packet size, correctly zeroing padding - * - * @param pkt packet - * @param grow_by number of bytes by which to increase the size of the packet - */ -int av_grow_packet(AVPacket *pkt, int grow_by); - -/** - * Initialize a reference-counted packet from av_malloc()ed data. - * - * @param pkt packet to be initialized. This function will set the data, size, - * buf and destruct fields, all others are left untouched. - * @param data Data allocated by av_malloc() to be used as packet data. If this - * function returns successfully, the data is owned by the underlying AVBuffer. - * The caller may not access the data through other means. - * @param size size of data in bytes, without the padding. I.e. the full buffer - * size is assumed to be size + AV_INPUT_BUFFER_PADDING_SIZE. - * - * @return 0 on success, a negative AVERROR on error - */ -int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size); - -#if FF_API_AVPACKET_OLD_API -/** - * @warning This is a hack - the packet memory allocation stuff is broken. The - * packet is allocated if it was not really allocated. - * - * @deprecated Use av_packet_ref - */ -attribute_deprecated -int av_dup_packet(AVPacket *pkt); -/** - * Copy packet, including contents - * - * @return 0 on success, negative AVERROR on fail - */ -int av_copy_packet(AVPacket *dst, const AVPacket *src); - -/** - * Copy packet side data - * - * @return 0 on success, negative AVERROR on fail - */ -int av_copy_packet_side_data(AVPacket *dst, const AVPacket *src); - -/** - * Free a packet. - * - * @deprecated Use av_packet_unref - * - * @param pkt packet to free - */ -attribute_deprecated -void av_free_packet(AVPacket *pkt); -#endif -/** - * Allocate new information of a packet. - * - * @param pkt packet - * @param type side information type - * @param size side information size - * @return pointer to fresh allocated data or NULL otherwise - */ -uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, - int size); - -/** - * Wrap an existing array as a packet side data. - * - * @param pkt packet - * @param type side information type - * @param data the side data array. It must be allocated with the av_malloc() - * family of functions. The ownership of the data is transferred to - * pkt. - * @param size side information size - * @return a non-negative number on success, a negative AVERROR code on - * failure. On failure, the packet is unchanged and the data remains - * owned by the caller. - */ -int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type, - uint8_t *data, size_t size); - -/** - * Shrink the already allocated side data buffer - * - * @param pkt packet - * @param type side information type - * @param size new side information size - * @return 0 on success, < 0 on failure - */ -int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type, - int size); - -/** - * Get side information from packet. - * - * @param pkt packet - * @param type desired side information type - * @param size pointer for side information size to store (optional) - * @return pointer to data if present or NULL otherwise - */ -uint8_t* av_packet_get_side_data(AVPacket *pkt, enum AVPacketSideDataType type, - int *size); - -int av_packet_merge_side_data(AVPacket *pkt); - -int av_packet_split_side_data(AVPacket *pkt); - -const char *av_packet_side_data_name(enum AVPacketSideDataType type); - -/** - * Pack a dictionary for use in side_data. - * - * @param dict The dictionary to pack. - * @param size pointer to store the size of the returned data - * @return pointer to data if successful, NULL otherwise - */ -uint8_t *av_packet_pack_dictionary(AVDictionary *dict, int *size); -/** - * Unpack a dictionary from side_data. - * - * @param data data from side_data - * @param size size of the data - * @param dict the metadata storage dictionary - * @return 0 on success, < 0 on failure - */ -int av_packet_unpack_dictionary(const uint8_t *data, int size, AVDictionary **dict); - - -/** - * Convenience function to free all the side data stored. - * All the other fields stay untouched. - * - * @param pkt packet - */ -void av_packet_free_side_data(AVPacket *pkt); - -/** - * Setup a new reference to the data described by a given packet - * - * If src is reference-counted, setup dst as a new reference to the - * buffer in src. Otherwise allocate a new buffer in dst and copy the - * data from src into it. - * - * All the other fields are copied from src. - * - * @see av_packet_unref - * - * @param dst Destination packet - * @param src Source packet - * - * @return 0 on success, a negative AVERROR on error. - */ -int av_packet_ref(AVPacket *dst, const AVPacket *src); - -/** - * Wipe the packet. - * - * Unreference the buffer referenced by the packet and reset the - * remaining packet fields to their default values. - * - * @param pkt The packet to be unreferenced. - */ -void av_packet_unref(AVPacket *pkt); - -/** - * Move every field in src to dst and reset src. - * - * @see av_packet_unref - * - * @param src Source packet, will be reset - * @param dst Destination packet - */ -void av_packet_move_ref(AVPacket *dst, AVPacket *src); - -/** - * Copy only "properties" fields from src to dst. - * - * Properties for the purpose of this function are all the fields - * beside those related to the packet data (buf, data, size) - * - * @param dst Destination packet - * @param src Source packet - * - * @return 0 on success AVERROR on failure. - */ -int av_packet_copy_props(AVPacket *dst, const AVPacket *src); - -/** - * Convert valid timing fields (timestamps / durations) in a packet from one - * timebase to another. Timestamps with unknown values (AV_NOPTS_VALUE) will be - * ignored. - * - * @param pkt packet on which the conversion will be performed - * @param tb_src source timebase, in which the timing fields in pkt are - * expressed - * @param tb_dst destination timebase, to which the timing fields will be - * converted - */ -void av_packet_rescale_ts(AVPacket *pkt, AVRational tb_src, AVRational tb_dst); - -/** - * @} - */ - -/** - * @addtogroup lavc_decoding - * @{ - */ - -/** - * Find a registered decoder with a matching codec ID. - * - * @param id AVCodecID of the requested decoder - * @return A decoder if one was found, NULL otherwise. - */ -AVCodec *avcodec_find_decoder(enum AVCodecID id); - -/** - * Find a registered decoder with the specified name. - * - * @param name name of the requested decoder - * @return A decoder if one was found, NULL otherwise. - */ -AVCodec *avcodec_find_decoder_by_name(const char *name); - -/** - * The default callback for AVCodecContext.get_buffer2(). It is made public so - * it can be called by custom get_buffer2() implementations for decoders without - * AV_CODEC_CAP_DR1 set. - */ -int avcodec_default_get_buffer2(AVCodecContext *s, AVFrame *frame, int flags); - -#if FF_API_EMU_EDGE -/** - * Return the amount of padding in pixels which the get_buffer callback must - * provide around the edge of the image for codecs which do not have the - * CODEC_FLAG_EMU_EDGE flag. - * - * @return Required padding in pixels. - * - * @deprecated CODEC_FLAG_EMU_EDGE is deprecated, so this function is no longer - * needed - */ -attribute_deprecated -unsigned avcodec_get_edge_width(void); -#endif - -/** - * Modify width and height values so that they will result in a memory - * buffer that is acceptable for the codec if you do not use any horizontal - * padding. - * - * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened. - */ -void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height); - -/** - * Modify width and height values so that they will result in a memory - * buffer that is acceptable for the codec if you also ensure that all - * line sizes are a multiple of the respective linesize_align[i]. - * - * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened. - */ -void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, - int linesize_align[AV_NUM_DATA_POINTERS]); - -/** - * Converts AVChromaLocation to swscale x/y chroma position. - * - * The positions represent the chroma (0,0) position in a coordinates system - * with luma (0,0) representing the origin and luma(1,1) representing 256,256 - * - * @param xpos horizontal chroma sample position - * @param ypos vertical chroma sample position - */ -int avcodec_enum_to_chroma_pos(int *xpos, int *ypos, enum AVChromaLocation pos); - -/** - * Converts swscale x/y chroma position to AVChromaLocation. - * - * The positions represent the chroma (0,0) position in a coordinates system - * with luma (0,0) representing the origin and luma(1,1) representing 256,256 - * - * @param xpos horizontal chroma sample position - * @param ypos vertical chroma sample position - */ -enum AVChromaLocation avcodec_chroma_pos_to_enum(int xpos, int ypos); - -/** - * Decode the audio frame of size avpkt->size from avpkt->data into frame. - * - * Some decoders may support multiple frames in a single AVPacket. Such - * decoders would then just decode the first frame and the return value would be - * less than the packet size. In this case, avcodec_decode_audio4 has to be - * called again with an AVPacket containing the remaining data in order to - * decode the second frame, etc... Even if no frames are returned, the packet - * needs to be fed to the decoder with remaining data until it is completely - * consumed or an error occurs. - * - * Some decoders (those marked with AV_CODEC_CAP_DELAY) have a delay between input - * and output. This means that for some packets they will not immediately - * produce decoded output and need to be flushed at the end of decoding to get - * all the decoded data. Flushing is done by calling this function with packets - * with avpkt->data set to NULL and avpkt->size set to 0 until it stops - * returning samples. It is safe to flush even those decoders that are not - * marked with AV_CODEC_CAP_DELAY, then no samples will be returned. - * - * @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE - * larger than the actual read bytes because some optimized bitstream - * readers read 32 or 64 bits at once and could read over the end. - * - * @note The AVCodecContext MUST have been opened with @ref avcodec_open2() - * before packets may be fed to the decoder. - * - * @param avctx the codec context - * @param[out] frame The AVFrame in which to store decoded audio samples. - * The decoder will allocate a buffer for the decoded frame by - * calling the AVCodecContext.get_buffer2() callback. - * When AVCodecContext.refcounted_frames is set to 1, the frame is - * reference counted and the returned reference belongs to the - * caller. The caller must release the frame using av_frame_unref() - * when the frame is no longer needed. The caller may safely write - * to the frame if av_frame_is_writable() returns 1. - * When AVCodecContext.refcounted_frames is set to 0, the returned - * reference belongs to the decoder and is valid only until the - * next call to this function or until closing or flushing the - * decoder. The caller may not write to it. - * @param[out] got_frame_ptr Zero if no frame could be decoded, otherwise it is - * non-zero. Note that this field being set to zero - * does not mean that an error has occurred. For - * decoders with AV_CODEC_CAP_DELAY set, no given decode - * call is guaranteed to produce a frame. - * @param[in] avpkt The input AVPacket containing the input buffer. - * At least avpkt->data and avpkt->size should be set. Some - * decoders might also require additional fields to be set. - * @return A negative error code is returned if an error occurred during - * decoding, otherwise the number of bytes consumed from the input - * AVPacket is returned. - * -* @deprecated Use avcodec_send_packet() and avcodec_receive_frame(). - */ -attribute_deprecated -int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame, - int *got_frame_ptr, const AVPacket *avpkt); - -/** - * Decode the video frame of size avpkt->size from avpkt->data into picture. - * Some decoders may support multiple frames in a single AVPacket, such - * decoders would then just decode the first frame. - * - * @warning The input buffer must be AV_INPUT_BUFFER_PADDING_SIZE larger than - * the actual read bytes because some optimized bitstream readers read 32 or 64 - * bits at once and could read over the end. - * - * @warning The end of the input buffer buf should be set to 0 to ensure that - * no overreading happens for damaged MPEG streams. - * - * @note Codecs which have the AV_CODEC_CAP_DELAY capability set have a delay - * between input and output, these need to be fed with avpkt->data=NULL, - * avpkt->size=0 at the end to return the remaining frames. - * - * @note The AVCodecContext MUST have been opened with @ref avcodec_open2() - * before packets may be fed to the decoder. - * - * @param avctx the codec context - * @param[out] picture The AVFrame in which the decoded video frame will be stored. - * Use av_frame_alloc() to get an AVFrame. The codec will - * allocate memory for the actual bitmap by calling the - * AVCodecContext.get_buffer2() callback. - * When AVCodecContext.refcounted_frames is set to 1, the frame is - * reference counted and the returned reference belongs to the - * caller. The caller must release the frame using av_frame_unref() - * when the frame is no longer needed. The caller may safely write - * to the frame if av_frame_is_writable() returns 1. - * When AVCodecContext.refcounted_frames is set to 0, the returned - * reference belongs to the decoder and is valid only until the - * next call to this function or until closing or flushing the - * decoder. The caller may not write to it. - * - * @param[in] avpkt The input AVPacket containing the input buffer. - * You can create such packet with av_init_packet() and by then setting - * data and size, some decoders might in addition need other fields like - * flags&AV_PKT_FLAG_KEY. All decoders are designed to use the least - * fields possible. - * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero. - * @return On error a negative value is returned, otherwise the number of bytes - * used or zero if no frame could be decompressed. - * - * @deprecated Use avcodec_send_packet() and avcodec_receive_frame(). - */ -attribute_deprecated -int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, - int *got_picture_ptr, - const AVPacket *avpkt); - -/** - * Decode a subtitle message. - * Return a negative value on error, otherwise return the number of bytes used. - * If no subtitle could be decompressed, got_sub_ptr is zero. - * Otherwise, the subtitle is stored in *sub. - * Note that AV_CODEC_CAP_DR1 is not available for subtitle codecs. This is for - * simplicity, because the performance difference is expect to be negligible - * and reusing a get_buffer written for video codecs would probably perform badly - * due to a potentially very different allocation pattern. - * - * Some decoders (those marked with CODEC_CAP_DELAY) have a delay between input - * and output. This means that for some packets they will not immediately - * produce decoded output and need to be flushed at the end of decoding to get - * all the decoded data. Flushing is done by calling this function with packets - * with avpkt->data set to NULL and avpkt->size set to 0 until it stops - * returning subtitles. It is safe to flush even those decoders that are not - * marked with CODEC_CAP_DELAY, then no subtitles will be returned. - * - * @note The AVCodecContext MUST have been opened with @ref avcodec_open2() - * before packets may be fed to the decoder. - * - * @param avctx the codec context - * @param[out] sub The Preallocated AVSubtitle in which the decoded subtitle will be stored, - * must be freed with avsubtitle_free if *got_sub_ptr is set. - * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero. - * @param[in] avpkt The input AVPacket containing the input buffer. - */ -int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, - int *got_sub_ptr, - AVPacket *avpkt); - -/** - * Supply raw packet data as input to a decoder. - * - * Internally, this call will copy relevant AVCodecContext fields, which can - * influence decoding per-packet, and apply them when the packet is actually - * decoded. (For example AVCodecContext.skip_frame, which might direct the - * decoder to drop the frame contained by the packet sent with this function.) - * - * @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE - * larger than the actual read bytes because some optimized bitstream - * readers read 32 or 64 bits at once and could read over the end. - * - * @warning Do not mix this API with the legacy API (like avcodec_decode_video2()) - * on the same AVCodecContext. It will return unexpected results now - * or in future libavcodec versions. - * - * @note The AVCodecContext MUST have been opened with @ref avcodec_open2() - * before packets may be fed to the decoder. - * - * @param avctx codec context - * @param[in] avpkt The input AVPacket. Usually, this will be a single video - * frame, or several complete audio frames. - * Ownership of the packet remains with the caller, and the - * decoder will not write to the packet. The decoder may create - * a reference to the packet data (or copy it if the packet is - * not reference-counted). - * Unlike with older APIs, the packet is always fully consumed, - * and if it contains multiple frames (e.g. some audio codecs), - * will require you to call avcodec_receive_frame() multiple - * times afterwards before you can send a new packet. - * It can be NULL (or an AVPacket with data set to NULL and - * size set to 0); in this case, it is considered a flush - * packet, which signals the end of the stream. Sending the - * first flush packet will return success. Subsequent ones are - * unnecessary and will return AVERROR_EOF. If the decoder - * still has frames buffered, it will return them after sending - * a flush packet. - * - * @return 0 on success, otherwise negative error code: - * AVERROR(EAGAIN): input is not accepted right now - the packet must be - * resent after trying to read output - * AVERROR_EOF: the decoder has been flushed, and no new packets can - * be sent to it (also returned if more than 1 flush - * packet is sent) - * AVERROR(EINVAL): codec not opened, it is an encoder, or requires flush - * AVERROR(ENOMEM): failed to add packet to internal queue, or similar - * other errors: legitimate decoding errors - */ -int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt); - -/** - * Return decoded output data from a decoder. - * - * @param avctx codec context - * @param frame This will be set to a reference-counted video or audio - * frame (depending on the decoder type) allocated by the - * decoder. Note that the function will always call - * av_frame_unref(frame) before doing anything else. - * - * @return - * 0: success, a frame was returned - * AVERROR(EAGAIN): output is not available right now - user must try - * to send new input - * AVERROR_EOF: the decoder has been fully flushed, and there will be - * no more output frames - * AVERROR(EINVAL): codec not opened, or it is an encoder - * other negative values: legitimate decoding errors - */ -int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame); - -/** - * Supply a raw video or audio frame to the encoder. Use avcodec_receive_packet() - * to retrieve buffered output packets. - * - * @param avctx codec context - * @param[in] frame AVFrame containing the raw audio or video frame to be encoded. - * Ownership of the frame remains with the caller, and the - * encoder will not write to the frame. The encoder may create - * a reference to the frame data (or copy it if the frame is - * not reference-counted). - * It can be NULL, in which case it is considered a flush - * packet. This signals the end of the stream. If the encoder - * still has packets buffered, it will return them after this - * call. Once flushing mode has been entered, additional flush - * packets are ignored, and sending frames will return - * AVERROR_EOF. - * - * For audio: - * If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame - * can have any number of samples. - * If it is not set, frame->nb_samples must be equal to - * avctx->frame_size for all frames except the last. - * The final frame may be smaller than avctx->frame_size. - * @return 0 on success, otherwise negative error code: - * AVERROR(EAGAIN): input is not accepted right now - the frame must be - * resent after trying to read output packets - * AVERROR_EOF: the encoder has been flushed, and no new frames can - * be sent to it - * AVERROR(EINVAL): codec not opened, refcounted_frames not set, it is a - * decoder, or requires flush - * AVERROR(ENOMEM): failed to add packet to internal queue, or similar - * other errors: legitimate decoding errors - */ -int avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame); - -/** - * Read encoded data from the encoder. - * - * @param avctx codec context - * @param avpkt This will be set to a reference-counted packet allocated by the - * encoder. Note that the function will always call - * av_frame_unref(frame) before doing anything else. - * @return 0 on success, otherwise negative error code: - * AVERROR(EAGAIN): output is not available right now - user must try - * to send input - * AVERROR_EOF: the encoder has been fully flushed, and there will be - * no more output packets - * AVERROR(EINVAL): codec not opened, or it is an encoder - * other errors: legitimate decoding errors - */ -int avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt); - - -/** - * @defgroup lavc_parsing Frame parsing - * @{ - */ - -enum AVPictureStructure { - AV_PICTURE_STRUCTURE_UNKNOWN, //< unknown - AV_PICTURE_STRUCTURE_TOP_FIELD, //< coded as top field - AV_PICTURE_STRUCTURE_BOTTOM_FIELD, //< coded as bottom field - AV_PICTURE_STRUCTURE_FRAME, //< coded as frame -}; - -typedef struct AVCodecParserContext { - void *priv_data; - struct AVCodecParser *parser; - int64_t frame_offset; /* offset of the current frame */ - int64_t cur_offset; /* current offset - (incremented by each av_parser_parse()) */ - int64_t next_frame_offset; /* offset of the next frame */ - /* video info */ - int pict_type; /* XXX: Put it back in AVCodecContext. */ - /** - * This field is used for proper frame duration computation in lavf. - * It signals, how much longer the frame duration of the current frame - * is compared to normal frame duration. - * - * frame_duration = (1 + repeat_pict) * time_base - * - * It is used by codecs like H.264 to display telecined material. - */ - int repeat_pict; /* XXX: Put it back in AVCodecContext. */ - int64_t pts; /* pts of the current frame */ - int64_t dts; /* dts of the current frame */ - - /* private data */ - int64_t last_pts; - int64_t last_dts; - int fetch_timestamp; - -#define AV_PARSER_PTS_NB 4 - int cur_frame_start_index; - int64_t cur_frame_offset[AV_PARSER_PTS_NB]; - int64_t cur_frame_pts[AV_PARSER_PTS_NB]; - int64_t cur_frame_dts[AV_PARSER_PTS_NB]; - - int flags; -#define PARSER_FLAG_COMPLETE_FRAMES 0x0001 -#define PARSER_FLAG_ONCE 0x0002 -/// Set if the parser has a valid file offset -#define PARSER_FLAG_FETCHED_OFFSET 0x0004 -#define PARSER_FLAG_USE_CODEC_TS 0x1000 - - int64_t offset; ///< byte offset from starting packet start - int64_t cur_frame_end[AV_PARSER_PTS_NB]; - - /** - * Set by parser to 1 for key frames and 0 for non-key frames. - * It is initialized to -1, so if the parser doesn't set this flag, - * old-style fallback using AV_PICTURE_TYPE_I picture type as key frames - * will be used. - */ - int key_frame; - -#if FF_API_CONVERGENCE_DURATION - /** - * @deprecated unused - */ - attribute_deprecated - int64_t convergence_duration; -#endif - - // Timestamp generation support: - /** - * Synchronization point for start of timestamp generation. - * - * Set to >0 for sync point, 0 for no sync point and <0 for undefined - * (default). - * - * For example, this corresponds to presence of H.264 buffering period - * SEI message. - */ - int dts_sync_point; - - /** - * Offset of the current timestamp against last timestamp sync point in - * units of AVCodecContext.time_base. - * - * Set to INT_MIN when dts_sync_point unused. Otherwise, it must - * contain a valid timestamp offset. - * - * Note that the timestamp of sync point has usually a nonzero - * dts_ref_dts_delta, which refers to the previous sync point. Offset of - * the next frame after timestamp sync point will be usually 1. - * - * For example, this corresponds to H.264 cpb_removal_delay. - */ - int dts_ref_dts_delta; - - /** - * Presentation delay of current frame in units of AVCodecContext.time_base. - * - * Set to INT_MIN when dts_sync_point unused. Otherwise, it must - * contain valid non-negative timestamp delta (presentation time of a frame - * must not lie in the past). - * - * This delay represents the difference between decoding and presentation - * time of the frame. - * - * For example, this corresponds to H.264 dpb_output_delay. - */ - int pts_dts_delta; - - /** - * Position of the packet in file. - * - * Analogous to cur_frame_pts/dts - */ - int64_t cur_frame_pos[AV_PARSER_PTS_NB]; - - /** - * Byte position of currently parsed frame in stream. - */ - int64_t pos; - - /** - * Previous frame byte position. - */ - int64_t last_pos; - - /** - * Duration of the current frame. - * For audio, this is in units of 1 / AVCodecContext.sample_rate. - * For all other types, this is in units of AVCodecContext.time_base. - */ - int duration; - - enum AVFieldOrder field_order; - - /** - * Indicate whether a picture is coded as a frame, top field or bottom field. - * - * For example, H.264 field_pic_flag equal to 0 corresponds to - * AV_PICTURE_STRUCTURE_FRAME. An H.264 picture with field_pic_flag - * equal to 1 and bottom_field_flag equal to 0 corresponds to - * AV_PICTURE_STRUCTURE_TOP_FIELD. - */ - enum AVPictureStructure picture_structure; - - /** - * Picture number incremented in presentation or output order. - * This field may be reinitialized at the first picture of a new sequence. - * - * For example, this corresponds to H.264 PicOrderCnt. - */ - int output_picture_number; - - /** - * Dimensions of the decoded video intended for presentation. - */ - int width; - int height; - - /** - * Dimensions of the coded video. - */ - int coded_width; - int coded_height; - - /** - * The format of the coded data, corresponds to enum AVPixelFormat for video - * and for enum AVSampleFormat for audio. - * - * Note that a decoder can have considerable freedom in how exactly it - * decodes the data, so the format reported here might be different from the - * one returned by a decoder. - */ - int format; -} AVCodecParserContext; - -typedef struct AVCodecParser { - int codec_ids[5]; /* several codec IDs are permitted */ - int priv_data_size; - int (*parser_init)(AVCodecParserContext *s); - /* This callback never returns an error, a negative value means that - * the frame start was in a previous packet. */ - int (*parser_parse)(AVCodecParserContext *s, - AVCodecContext *avctx, - const uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size); - void (*parser_close)(AVCodecParserContext *s); - int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size); - struct AVCodecParser *next; -} AVCodecParser; - -AVCodecParser *av_parser_next(const AVCodecParser *c); - -void av_register_codec_parser(AVCodecParser *parser); -AVCodecParserContext *av_parser_init(int codec_id); - -/** - * Parse a packet. - * - * @param s parser context. - * @param avctx codec context. - * @param poutbuf set to pointer to parsed buffer or NULL if not yet finished. - * @param poutbuf_size set to size of parsed buffer or zero if not yet finished. - * @param buf input buffer. - * @param buf_size buffer size in bytes without the padding. I.e. the full buffer - size is assumed to be buf_size + AV_INPUT_BUFFER_PADDING_SIZE. - To signal EOF, this should be 0 (so that the last frame - can be output). - * @param pts input presentation timestamp. - * @param dts input decoding timestamp. - * @param pos input byte position in stream. - * @return the number of bytes of the input bitstream used. - * - * Example: - * @code - * while(in_len){ - * len = av_parser_parse2(myparser, AVCodecContext, &data, &size, - * in_data, in_len, - * pts, dts, pos); - * in_data += len; - * in_len -= len; - * - * if(size) - * decode_frame(data, size); - * } - * @endcode - */ -int av_parser_parse2(AVCodecParserContext *s, - AVCodecContext *avctx, - uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, - int64_t pts, int64_t dts, - int64_t pos); - -/** - * @return 0 if the output buffer is a subset of the input, 1 if it is allocated and must be freed - * @deprecated use AVBitStreamFilter - */ -int av_parser_change(AVCodecParserContext *s, - AVCodecContext *avctx, - uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, int keyframe); -void av_parser_close(AVCodecParserContext *s); - -/** - * @} - * @} - */ - -/** - * @addtogroup lavc_encoding - * @{ - */ - -/** - * Find a registered encoder with a matching codec ID. - * - * @param id AVCodecID of the requested encoder - * @return An encoder if one was found, NULL otherwise. - */ -AVCodec *avcodec_find_encoder(enum AVCodecID id); - -/** - * Find a registered encoder with the specified name. - * - * @param name name of the requested encoder - * @return An encoder if one was found, NULL otherwise. - */ -AVCodec *avcodec_find_encoder_by_name(const char *name); - -/** - * Encode a frame of audio. - * - * Takes input samples from frame and writes the next output packet, if - * available, to avpkt. The output packet does not necessarily contain data for - * the most recent frame, as encoders can delay, split, and combine input frames - * internally as needed. - * - * @param avctx codec context - * @param avpkt output AVPacket. - * The user can supply an output buffer by setting - * avpkt->data and avpkt->size prior to calling the - * function, but if the size of the user-provided data is not - * large enough, encoding will fail. If avpkt->data and - * avpkt->size are set, avpkt->destruct must also be set. All - * other AVPacket fields will be reset by the encoder using - * av_init_packet(). If avpkt->data is NULL, the encoder will - * allocate it. The encoder will set avpkt->size to the size - * of the output packet. - * - * If this function fails or produces no output, avpkt will be - * freed using av_packet_unref(). - * @param[in] frame AVFrame containing the raw audio data to be encoded. - * May be NULL when flushing an encoder that has the - * AV_CODEC_CAP_DELAY capability set. - * If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame - * can have any number of samples. - * If it is not set, frame->nb_samples must be equal to - * avctx->frame_size for all frames except the last. - * The final frame may be smaller than avctx->frame_size. - * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the - * output packet is non-empty, and to 0 if it is - * empty. If the function returns an error, the - * packet can be assumed to be invalid, and the - * value of got_packet_ptr is undefined and should - * not be used. - * @return 0 on success, negative error code on failure - * - * @deprecated use avcodec_send_frame()/avcodec_receive_packet() instead - */ -attribute_deprecated -int avcodec_encode_audio2(AVCodecContext *avctx, AVPacket *avpkt, - const AVFrame *frame, int *got_packet_ptr); - -/** - * Encode a frame of video. - * - * Takes input raw video data from frame and writes the next output packet, if - * available, to avpkt. The output packet does not necessarily contain data for - * the most recent frame, as encoders can delay and reorder input frames - * internally as needed. - * - * @param avctx codec context - * @param avpkt output AVPacket. - * The user can supply an output buffer by setting - * avpkt->data and avpkt->size prior to calling the - * function, but if the size of the user-provided data is not - * large enough, encoding will fail. All other AVPacket fields - * will be reset by the encoder using av_init_packet(). If - * avpkt->data is NULL, the encoder will allocate it. - * The encoder will set avpkt->size to the size of the - * output packet. The returned data (if any) belongs to the - * caller, he is responsible for freeing it. - * - * If this function fails or produces no output, avpkt will be - * freed using av_packet_unref(). - * @param[in] frame AVFrame containing the raw video data to be encoded. - * May be NULL when flushing an encoder that has the - * AV_CODEC_CAP_DELAY capability set. - * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the - * output packet is non-empty, and to 0 if it is - * empty. If the function returns an error, the - * packet can be assumed to be invalid, and the - * value of got_packet_ptr is undefined and should - * not be used. - * @return 0 on success, negative error code on failure - * - * @deprecated use avcodec_send_frame()/avcodec_receive_packet() instead - */ -attribute_deprecated -int avcodec_encode_video2(AVCodecContext *avctx, AVPacket *avpkt, - const AVFrame *frame, int *got_packet_ptr); - -int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, - const AVSubtitle *sub); - - -/** - * @} - */ - -#if FF_API_AVCODEC_RESAMPLE -/** - * @defgroup lavc_resample Audio resampling - * @ingroup libavc - * @deprecated use libswresample instead - * - * @{ - */ -struct ReSampleContext; -struct AVResampleContext; - -typedef struct ReSampleContext ReSampleContext; - -/** - * Initialize audio resampling context. - * - * @param output_channels number of output channels - * @param input_channels number of input channels - * @param output_rate output sample rate - * @param input_rate input sample rate - * @param sample_fmt_out requested output sample format - * @param sample_fmt_in input sample format - * @param filter_length length of each FIR filter in the filterbank relative to the cutoff frequency - * @param log2_phase_count log2 of the number of entries in the polyphase filterbank - * @param linear if 1 then the used FIR filter will be linearly interpolated - between the 2 closest, if 0 the closest will be used - * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate - * @return allocated ReSampleContext, NULL if error occurred - */ -attribute_deprecated -ReSampleContext *av_audio_resample_init(int output_channels, int input_channels, - int output_rate, int input_rate, - enum AVSampleFormat sample_fmt_out, - enum AVSampleFormat sample_fmt_in, - int filter_length, int log2_phase_count, - int linear, double cutoff); - -attribute_deprecated -int audio_resample(ReSampleContext *s, short *output, short *input, int nb_samples); - -/** - * Free resample context. - * - * @param s a non-NULL pointer to a resample context previously - * created with av_audio_resample_init() - */ -attribute_deprecated -void audio_resample_close(ReSampleContext *s); - - -/** - * Initialize an audio resampler. - * Note, if either rate is not an integer then simply scale both rates up so they are. - * @param filter_length length of each FIR filter in the filterbank relative to the cutoff freq - * @param log2_phase_count log2 of the number of entries in the polyphase filterbank - * @param linear If 1 then the used FIR filter will be linearly interpolated - between the 2 closest, if 0 the closest will be used - * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate - */ -attribute_deprecated -struct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter_length, int log2_phase_count, int linear, double cutoff); - -/** - * Resample an array of samples using a previously configured context. - * @param src an array of unconsumed samples - * @param consumed the number of samples of src which have been consumed are returned here - * @param src_size the number of unconsumed samples available - * @param dst_size the amount of space in samples available in dst - * @param update_ctx If this is 0 then the context will not be modified, that way several channels can be resampled with the same context. - * @return the number of samples written in dst or -1 if an error occurred - */ -attribute_deprecated -int av_resample(struct AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx); - - -/** - * Compensate samplerate/timestamp drift. The compensation is done by changing - * the resampler parameters, so no audible clicks or similar distortions occur - * @param compensation_distance distance in output samples over which the compensation should be performed - * @param sample_delta number of output samples which should be output less - * - * example: av_resample_compensate(c, 10, 500) - * here instead of 510 samples only 500 samples would be output - * - * note, due to rounding the actual compensation might be slightly different, - * especially if the compensation_distance is large and the in_rate used during init is small - */ -attribute_deprecated -void av_resample_compensate(struct AVResampleContext *c, int sample_delta, int compensation_distance); -attribute_deprecated -void av_resample_close(struct AVResampleContext *c); - -/** - * @} - */ -#endif - -#if FF_API_AVPICTURE -/** - * @addtogroup lavc_picture - * @{ - */ - -/** - * @deprecated unused - */ -attribute_deprecated -int avpicture_alloc(AVPicture *picture, enum AVPixelFormat pix_fmt, int width, int height); - -/** - * @deprecated unused - */ -attribute_deprecated -void avpicture_free(AVPicture *picture); - -/** - * @deprecated use av_image_fill_arrays() instead. - */ -attribute_deprecated -int avpicture_fill(AVPicture *picture, const uint8_t *ptr, - enum AVPixelFormat pix_fmt, int width, int height); - -/** - * @deprecated use av_image_copy_to_buffer() instead. - */ -attribute_deprecated -int avpicture_layout(const AVPicture *src, enum AVPixelFormat pix_fmt, - int width, int height, - unsigned char *dest, int dest_size); - -/** - * @deprecated use av_image_get_buffer_size() instead. - */ -attribute_deprecated -int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height); - -/** - * @deprecated av_image_copy() instead. - */ -attribute_deprecated -void av_picture_copy(AVPicture *dst, const AVPicture *src, - enum AVPixelFormat pix_fmt, int width, int height); - -/** - * @deprecated unused - */ -attribute_deprecated -int av_picture_crop(AVPicture *dst, const AVPicture *src, - enum AVPixelFormat pix_fmt, int top_band, int left_band); - -/** - * @deprecated unused - */ -attribute_deprecated -int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, enum AVPixelFormat pix_fmt, - int padtop, int padbottom, int padleft, int padright, int *color); - -/** - * @} - */ -#endif - -/** - * @defgroup lavc_misc Utility functions - * @ingroup libavc - * - * Miscellaneous utility functions related to both encoding and decoding - * (or neither). - * @{ - */ - -/** - * @defgroup lavc_misc_pixfmt Pixel formats - * - * Functions for working with pixel formats. - * @{ - */ - -/** - * Utility function to access log2_chroma_w log2_chroma_h from - * the pixel format AVPixFmtDescriptor. - * - * This function asserts that pix_fmt is valid. See av_pix_fmt_get_chroma_sub_sample - * for one that returns a failure code and continues in case of invalid - * pix_fmts. - * - * @param[in] pix_fmt the pixel format - * @param[out] h_shift store log2_chroma_w - * @param[out] v_shift store log2_chroma_h - * - * @see av_pix_fmt_get_chroma_sub_sample - */ - -void avcodec_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift); - -/** - * Return a value representing the fourCC code associated to the - * pixel format pix_fmt, or 0 if no associated fourCC code can be - * found. - */ -unsigned int avcodec_pix_fmt_to_codec_tag(enum AVPixelFormat pix_fmt); - -/** - * @deprecated see av_get_pix_fmt_loss() - */ -int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, - int has_alpha); - -/** - * Find the best pixel format to convert to given a certain source pixel - * format. When converting from one pixel format to another, information loss - * may occur. For example, when converting from RGB24 to GRAY, the color - * information will be lost. Similarly, other losses occur when converting from - * some formats to other formats. avcodec_find_best_pix_fmt_of_2() searches which of - * the given pixel formats should be used to suffer the least amount of loss. - * The pixel formats from which it chooses one, are determined by the - * pix_fmt_list parameter. - * - * - * @param[in] pix_fmt_list AV_PIX_FMT_NONE terminated array of pixel formats to choose from - * @param[in] src_pix_fmt source pixel format - * @param[in] has_alpha Whether the source pixel format alpha channel is used. - * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur. - * @return The best pixel format to convert to or -1 if none was found. - */ -enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *pix_fmt_list, - enum AVPixelFormat src_pix_fmt, - int has_alpha, int *loss_ptr); - -/** - * @deprecated see av_find_best_pix_fmt_of_2() - */ -enum AVPixelFormat avcodec_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, - enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr); - -attribute_deprecated -enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, - enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr); - -enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat * fmt); - -/** - * @} - */ - -#if FF_API_SET_DIMENSIONS -/** - * @deprecated this function is not supposed to be used from outside of lavc - */ -attribute_deprecated -void avcodec_set_dimensions(AVCodecContext *s, int width, int height); -#endif - -/** - * Put a string representing the codec tag codec_tag in buf. - * - * @param buf buffer to place codec tag in - * @param buf_size size in bytes of buf - * @param codec_tag codec tag to assign - * @return the length of the string that would have been generated if - * enough space had been available, excluding the trailing null - */ -size_t av_get_codec_tag_string(char *buf, size_t buf_size, unsigned int codec_tag); - -void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode); - -/** - * Return a name for the specified profile, if available. - * - * @param codec the codec that is searched for the given profile - * @param profile the profile value for which a name is requested - * @return A name for the profile if found, NULL otherwise. - */ -const char *av_get_profile_name(const AVCodec *codec, int profile); - -/** - * Return a name for the specified profile, if available. - * - * @param codec_id the ID of the codec to which the requested profile belongs - * @param profile the profile value for which a name is requested - * @return A name for the profile if found, NULL otherwise. - * - * @note unlike av_get_profile_name(), which searches a list of profiles - * supported by a specific decoder or encoder implementation, this - * function searches the list of profiles from the AVCodecDescriptor - */ -const char *avcodec_profile_name(enum AVCodecID codec_id, int profile); - -int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size); -int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count); -//FIXME func typedef - -/** - * Fill AVFrame audio data and linesize pointers. - * - * The buffer buf must be a preallocated buffer with a size big enough - * to contain the specified samples amount. The filled AVFrame data - * pointers will point to this buffer. - * - * AVFrame extended_data channel pointers are allocated if necessary for - * planar audio. - * - * @param frame the AVFrame - * frame->nb_samples must be set prior to calling the - * function. This function fills in frame->data, - * frame->extended_data, frame->linesize[0]. - * @param nb_channels channel count - * @param sample_fmt sample format - * @param buf buffer to use for frame data - * @param buf_size size of buffer - * @param align plane size sample alignment (0 = default) - * @return >=0 on success, negative error code on failure - * @todo return the size in bytes required to store the samples in - * case of success, at the next libavutil bump - */ -int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, - enum AVSampleFormat sample_fmt, const uint8_t *buf, - int buf_size, int align); - -/** - * Reset the internal decoder state / flush internal buffers. Should be called - * e.g. when seeking or when switching to a different stream. - * - * @note when refcounted frames are not used (i.e. avctx->refcounted_frames is 0), - * this invalidates the frames previously returned from the decoder. When - * refcounted frames are used, the decoder just releases any references it might - * keep internally, but the caller's reference remains valid. - */ -void avcodec_flush_buffers(AVCodecContext *avctx); - -/** - * Return codec bits per sample. - * - * @param[in] codec_id the codec - * @return Number of bits per sample or zero if unknown for the given codec. - */ -int av_get_bits_per_sample(enum AVCodecID codec_id); - -/** - * Return the PCM codec associated with a sample format. - * @param be endianness, 0 for little, 1 for big, - * -1 (or anything else) for native - * @return AV_CODEC_ID_PCM_* or AV_CODEC_ID_NONE - */ -enum AVCodecID av_get_pcm_codec(enum AVSampleFormat fmt, int be); - -/** - * Return codec bits per sample. - * Only return non-zero if the bits per sample is exactly correct, not an - * approximation. - * - * @param[in] codec_id the codec - * @return Number of bits per sample or zero if unknown for the given codec. - */ -int av_get_exact_bits_per_sample(enum AVCodecID codec_id); - -/** - * Return audio frame duration. - * - * @param avctx codec context - * @param frame_bytes size of the frame, or 0 if unknown - * @return frame duration, in samples, if known. 0 if not able to - * determine. - */ -int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes); - -/** - * This function is the same as av_get_audio_frame_duration(), except it works - * with AVCodecParameters instead of an AVCodecContext. - */ -int av_get_audio_frame_duration2(AVCodecParameters *par, int frame_bytes); - -#if FF_API_OLD_BSF -typedef struct AVBitStreamFilterContext { - void *priv_data; - struct AVBitStreamFilter *filter; - AVCodecParserContext *parser; - struct AVBitStreamFilterContext *next; - /** - * Internal default arguments, used if NULL is passed to av_bitstream_filter_filter(). - * Not for access by library users. - */ - char *args; -} AVBitStreamFilterContext; -#endif - -typedef struct AVBSFInternal AVBSFInternal; - -/** - * The bitstream filter state. - * - * This struct must be allocated with av_bsf_alloc() and freed with - * av_bsf_free(). - * - * The fields in the struct will only be changed (by the caller or by the - * filter) as described in their documentation, and are to be considered - * immutable otherwise. - */ -typedef struct AVBSFContext { - /** - * A class for logging and AVOptions - */ - const AVClass *av_class; - - /** - * The bitstream filter this context is an instance of. - */ - const struct AVBitStreamFilter *filter; - - /** - * Opaque libavcodec internal data. Must not be touched by the caller in any - * way. - */ - AVBSFInternal *internal; - - /** - * Opaque filter-specific private data. If filter->priv_class is non-NULL, - * this is an AVOptions-enabled struct. - */ - void *priv_data; - - /** - * Parameters of the input stream. Set by the caller before av_bsf_init(). - */ - AVCodecParameters *par_in; - - /** - * Parameters of the output stream. Set by the filter in av_bsf_init(). - */ - AVCodecParameters *par_out; - - /** - * The timebase used for the timestamps of the input packets. Set by the - * caller before av_bsf_init(). - */ - AVRational time_base_in; - - /** - * The timebase used for the timestamps of the output packets. Set by the - * filter in av_bsf_init(). - */ - AVRational time_base_out; -} AVBSFContext; - -typedef struct AVBitStreamFilter { - const char *name; - - /** - * A list of codec ids supported by the filter, terminated by - * AV_CODEC_ID_NONE. - * May be NULL, in that case the bitstream filter works with any codec id. - */ - const enum AVCodecID *codec_ids; - - /** - * A class for the private data, used to declare bitstream filter private - * AVOptions. This field is NULL for bitstream filters that do not declare - * any options. - * - * If this field is non-NULL, the first member of the filter private data - * must be a pointer to AVClass, which will be set by libavcodec generic - * code to this class. - */ - const AVClass *priv_class; - - /***************************************************************** - * No fields below this line are part of the public API. They - * may not be used outside of libavcodec and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - - int priv_data_size; - int (*init)(AVBSFContext *ctx); - int (*filter)(AVBSFContext *ctx, AVPacket *pkt); - void (*close)(AVBSFContext *ctx); -} AVBitStreamFilter; - -#if FF_API_OLD_BSF -/** - * Register a bitstream filter. - * - * The filter will be accessible to the application code through - * av_bitstream_filter_next() or can be directly initialized with - * av_bitstream_filter_init(). - * - * @see avcodec_register_all() - */ -attribute_deprecated -void av_register_bitstream_filter(AVBitStreamFilter *bsf); - -/** - * Create and initialize a bitstream filter context given a bitstream - * filter name. - * - * The returned context must be freed with av_bitstream_filter_close(). - * - * @param name the name of the bitstream filter - * @return a bitstream filter context if a matching filter was found - * and successfully initialized, NULL otherwise - */ -attribute_deprecated -AVBitStreamFilterContext *av_bitstream_filter_init(const char *name); - -/** - * Filter bitstream. - * - * This function filters the buffer buf with size buf_size, and places the - * filtered buffer in the buffer pointed to by poutbuf. - * - * The output buffer must be freed by the caller. - * - * @param bsfc bitstream filter context created by av_bitstream_filter_init() - * @param avctx AVCodecContext accessed by the filter, may be NULL. - * If specified, this must point to the encoder context of the - * output stream the packet is sent to. - * @param args arguments which specify the filter configuration, may be NULL - * @param poutbuf pointer which is updated to point to the filtered buffer - * @param poutbuf_size pointer which is updated to the filtered buffer size in bytes - * @param buf buffer containing the data to filter - * @param buf_size size in bytes of buf - * @param keyframe set to non-zero if the buffer to filter corresponds to a key-frame packet data - * @return >= 0 in case of success, or a negative error code in case of failure - * - * If the return value is positive, an output buffer is allocated and - * is available in *poutbuf, and is distinct from the input buffer. - * - * If the return value is 0, the output buffer is not allocated and - * should be considered identical to the input buffer, or in case - * *poutbuf was set it points to the input buffer (not necessarily to - * its starting address). A special case is if *poutbuf was set to NULL and - * *poutbuf_size was set to 0, which indicates the packet should be dropped. - */ -attribute_deprecated -int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc, - AVCodecContext *avctx, const char *args, - uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, int keyframe); - -/** - * Release bitstream filter context. - * - * @param bsf the bitstream filter context created with - * av_bitstream_filter_init(), can be NULL - */ -attribute_deprecated -void av_bitstream_filter_close(AVBitStreamFilterContext *bsf); - -/** - * If f is NULL, return the first registered bitstream filter, - * if f is non-NULL, return the next registered bitstream filter - * after f, or NULL if f is the last one. - * - * This function can be used to iterate over all registered bitstream - * filters. - */ -attribute_deprecated -AVBitStreamFilter *av_bitstream_filter_next(const AVBitStreamFilter *f); -#endif - -/** - * @return a bitstream filter with the specified name or NULL if no such - * bitstream filter exists. - */ -const AVBitStreamFilter *av_bsf_get_by_name(const char *name); - -/** - * Iterate over all registered bitstream filters. - * - * @param opaque a pointer where libavcodec will store the iteration state. Must - * point to NULL to start the iteration. - * - * @return the next registered bitstream filter or NULL when the iteration is - * finished - */ -const AVBitStreamFilter *av_bsf_next(void **opaque); - -/** - * Allocate a context for a given bitstream filter. The caller must fill in the - * context parameters as described in the documentation and then call - * av_bsf_init() before sending any data to the filter. - * - * @param filter the filter for which to allocate an instance. - * @param ctx a pointer into which the pointer to the newly-allocated context - * will be written. It must be freed with av_bsf_free() after the - * filtering is done. - * - * @return 0 on success, a negative AVERROR code on failure - */ -int av_bsf_alloc(const AVBitStreamFilter *filter, AVBSFContext **ctx); - -/** - * Prepare the filter for use, after all the parameters and options have been - * set. - */ -int av_bsf_init(AVBSFContext *ctx); - -/** - * Submit a packet for filtering. - * - * After sending each packet, the filter must be completely drained by calling - * av_bsf_receive_packet() repeatedly until it returns AVERROR(EAGAIN) or - * AVERROR_EOF. - * - * @param pkt the packet to filter. pkt must contain some payload (i.e data or - * side data must be present in pkt). The bitstream filter will take ownership of - * the packet and reset the contents of pkt. pkt is not touched if an error occurs. - * This parameter may be NULL, which signals the end of the stream (i.e. no more - * packets will be sent). That will cause the filter to output any packets it - * may have buffered internally. - * - * @return 0 on success, a negative AVERROR on error. - */ -int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt); - -/** - * Retrieve a filtered packet. - * - * @param[out] pkt this struct will be filled with the contents of the filtered - * packet. It is owned by the caller and must be freed using - * av_packet_unref() when it is no longer needed. - * This parameter should be "clean" (i.e. freshly allocated - * with av_packet_alloc() or unreffed with av_packet_unref()) - * when this function is called. If this function returns - * successfully, the contents of pkt will be completely - * overwritten by the returned data. On failure, pkt is not - * touched. - * - * @return 0 on success. AVERROR(EAGAIN) if more packets need to be sent to the - * filter (using av_bsf_send_packet()) to get more output. AVERROR_EOF if there - * will be no further output from the filter. Another negative AVERROR value if - * an error occurs. - * - * @note one input packet may result in several output packets, so after sending - * a packet with av_bsf_send_packet(), this function needs to be called - * repeatedly until it stops returning 0. It is also possible for a filter to - * output fewer packets than were sent to it, so this function may return - * AVERROR(EAGAIN) immediately after a successful av_bsf_send_packet() call. - */ -int av_bsf_receive_packet(AVBSFContext *ctx, AVPacket *pkt); - -/** - * Free a bitstream filter context and everything associated with it; write NULL - * into the supplied pointer. - */ -void av_bsf_free(AVBSFContext **ctx); - -/** - * Get the AVClass for AVBSFContext. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *av_bsf_get_class(void); - -/** - * Structure for chain/list of bitstream filters. - * Empty list can be allocated by av_bsf_list_alloc(). - */ -typedef struct AVBSFList AVBSFList; - -/** - * Allocate empty list of bitstream filters. - * The list must be later freed by av_bsf_list_free() - * or finalized by av_bsf_list_finalize(). - * - * @return Pointer to @ref AVBSFList on success, NULL in case of failure - */ -AVBSFList *av_bsf_list_alloc(void); - -/** - * Free list of bitstream filters. - * - * @param lst Pointer to pointer returned by av_bsf_list_alloc() - */ -void av_bsf_list_free(AVBSFList **lst); - -/** - * Append bitstream filter to the list of bitstream filters. - * - * @param lst List to append to - * @param bsf Filter context to be appended - * - * @return >=0 on success, negative AVERROR in case of failure - */ -int av_bsf_list_append(AVBSFList *lst, AVBSFContext *bsf); - -/** - * Construct new bitstream filter context given it's name and options - * and append it to the list of bitstream filters. - * - * @param lst List to append to - * @param bsf_name Name of the bitstream filter - * @param options Options for the bitstream filter, can be set to NULL - * - * @return >=0 on success, negative AVERROR in case of failure - */ -int av_bsf_list_append2(AVBSFList *lst, const char * bsf_name, AVDictionary **options); -/** - * Finalize list of bitstream filters. - * - * This function will transform @ref AVBSFList to single @ref AVBSFContext, - * so the whole chain of bitstream filters can be treated as single filter - * freshly allocated by av_bsf_alloc(). - * If the call is successful, @ref AVBSFList structure is freed and lst - * will be set to NULL. In case of failure, caller is responsible for - * freeing the structure by av_bsf_list_free() - * - * @param lst Filter list structure to be transformed - * @param[out] bsf Pointer to be set to newly created @ref AVBSFContext structure - * representing the chain of bitstream filters - * - * @return >=0 on success, negative AVERROR in case of failure - */ -int av_bsf_list_finalize(AVBSFList **lst, AVBSFContext **bsf); - -/** - * Parse string describing list of bitstream filters and create single - * @ref AVBSFContext describing the whole chain of bitstream filters. - * Resulting @ref AVBSFContext can be treated as any other @ref AVBSFContext freshly - * allocated by av_bsf_alloc(). - * - * @param str String describing chain of bitstream filters in format - * `bsf1[=opt1=val1:opt2=val2][,bsf2]` - * @param[out] bsf Pointer to be set to newly created @ref AVBSFContext structure - * representing the chain of bitstream filters - * - * @return >=0 on success, negative AVERROR in case of failure - */ -int av_bsf_list_parse_str(const char *str, AVBSFContext **bsf); - -/** - * Get null/pass-through bitstream filter. - * - * @param[out] bsf Pointer to be set to new instance of pass-through bitstream filter - * - * @return - */ -int av_bsf_get_null_filter(AVBSFContext **bsf); - -/* memory */ - -/** - * Same behaviour av_fast_malloc but the buffer has additional - * AV_INPUT_BUFFER_PADDING_SIZE at the end which will always be 0. - * - * In addition the whole buffer will initially and after resizes - * be 0-initialized so that no uninitialized data will ever appear. - */ -void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size); - -/** - * Same behaviour av_fast_padded_malloc except that buffer will always - * be 0-initialized after call. - */ -void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size); - -/** - * Encode extradata length to a buffer. Used by xiph codecs. - * - * @param s buffer to write to; must be at least (v/255+1) bytes long - * @param v size of extradata in bytes - * @return number of bytes written to the buffer. - */ -unsigned int av_xiphlacing(unsigned char *s, unsigned int v); - -#if FF_API_MISSING_SAMPLE -/** - * Log a generic warning message about a missing feature. This function is - * intended to be used internally by FFmpeg (libavcodec, libavformat, etc.) - * only, and would normally not be used by applications. - * @param[in] avc a pointer to an arbitrary struct of which the first field is - * a pointer to an AVClass struct - * @param[in] feature string containing the name of the missing feature - * @param[in] want_sample indicates if samples are wanted which exhibit this feature. - * If want_sample is non-zero, additional verbiage will be added to the log - * message which tells the user how to report samples to the development - * mailing list. - * @deprecated Use avpriv_report_missing_feature() instead. - */ -attribute_deprecated -void av_log_missing_feature(void *avc, const char *feature, int want_sample); - -/** - * Log a generic warning message asking for a sample. This function is - * intended to be used internally by FFmpeg (libavcodec, libavformat, etc.) - * only, and would normally not be used by applications. - * @param[in] avc a pointer to an arbitrary struct of which the first field is - * a pointer to an AVClass struct - * @param[in] msg string containing an optional message, or NULL if no message - * @deprecated Use avpriv_request_sample() instead. - */ -attribute_deprecated -void av_log_ask_for_sample(void *avc, const char *msg, ...) av_printf_format(2, 3); -#endif /* FF_API_MISSING_SAMPLE */ - -/** - * Register the hardware accelerator hwaccel. - */ -void av_register_hwaccel(AVHWAccel *hwaccel); - -/** - * If hwaccel is NULL, returns the first registered hardware accelerator, - * if hwaccel is non-NULL, returns the next registered hardware accelerator - * after hwaccel, or NULL if hwaccel is the last one. - */ -AVHWAccel *av_hwaccel_next(const AVHWAccel *hwaccel); - - -/** - * Lock operation used by lockmgr - */ -enum AVLockOp { - AV_LOCK_CREATE, ///< Create a mutex - AV_LOCK_OBTAIN, ///< Lock the mutex - AV_LOCK_RELEASE, ///< Unlock the mutex - AV_LOCK_DESTROY, ///< Free mutex resources -}; - -/** - * Register a user provided lock manager supporting the operations - * specified by AVLockOp. The "mutex" argument to the function points - * to a (void *) where the lockmgr should store/get a pointer to a user - * allocated mutex. It is NULL upon AV_LOCK_CREATE and equal to the - * value left by the last call for all other ops. If the lock manager is - * unable to perform the op then it should leave the mutex in the same - * state as when it was called and return a non-zero value. However, - * when called with AV_LOCK_DESTROY the mutex will always be assumed to - * have been successfully destroyed. If av_lockmgr_register succeeds - * it will return a non-negative value, if it fails it will return a - * negative value and destroy all mutex and unregister all callbacks. - * av_lockmgr_register is not thread-safe, it must be called from a - * single thread before any calls which make use of locking are used. - * - * @param cb User defined callback. av_lockmgr_register invokes calls - * to this callback and the previously registered callback. - * The callback will be used to create more than one mutex - * each of which must be backed by its own underlying locking - * mechanism (i.e. do not use a single static object to - * implement your lock manager). If cb is set to NULL the - * lockmgr will be unregistered. - */ -int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op)); - -/** - * Get the type of the given codec. - */ -enum AVMediaType avcodec_get_type(enum AVCodecID codec_id); - -/** - * Get the name of a codec. - * @return a static string identifying the codec; never NULL - */ -const char *avcodec_get_name(enum AVCodecID id); - -/** - * @return a positive value if s is open (i.e. avcodec_open2() was called on it - * with no corresponding avcodec_close()), 0 otherwise. - */ -int avcodec_is_open(AVCodecContext *s); - -/** - * @return a non-zero number if codec is an encoder, zero otherwise - */ -int av_codec_is_encoder(const AVCodec *codec); - -/** - * @return a non-zero number if codec is a decoder, zero otherwise - */ -int av_codec_is_decoder(const AVCodec *codec); - -/** - * @return descriptor for given codec ID or NULL if no descriptor exists. - */ -const AVCodecDescriptor *avcodec_descriptor_get(enum AVCodecID id); - -/** - * Iterate over all codec descriptors known to libavcodec. - * - * @param prev previous descriptor. NULL to get the first descriptor. - * - * @return next descriptor or NULL after the last descriptor - */ -const AVCodecDescriptor *avcodec_descriptor_next(const AVCodecDescriptor *prev); - -/** - * @return codec descriptor with the given name or NULL if no such descriptor - * exists. - */ -const AVCodecDescriptor *avcodec_descriptor_get_by_name(const char *name); - -/** - * Allocate a CPB properties structure and initialize its fields to default - * values. - * - * @param size if non-NULL, the size of the allocated struct will be written - * here. This is useful for embedding it in side data. - * - * @return the newly allocated struct or NULL on failure - */ -AVCPBProperties *av_cpb_properties_alloc(size_t *size); - -/** - * @} - */ - -#endif /* AVCODEC_AVCODEC_H */ diff --git a/Externals/ffmpeg/include/libavcodec/avdct.h b/Externals/ffmpeg/include/libavcodec/avdct.h deleted file mode 100644 index 272422e44c91..000000000000 --- a/Externals/ffmpeg/include/libavcodec/avdct.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_AVDCT_H -#define AVCODEC_AVDCT_H - -#include "libavutil/opt.h" - -/** - * AVDCT context. - * @note function pointers can be NULL if the specific features have been - * disabled at build time. - */ -typedef struct AVDCT { - const AVClass *av_class; - - void (*idct)(int16_t *block /* align 16 */); - - /** - * IDCT input permutation. - * Several optimized IDCTs need a permutated input (relative to the - * normal order of the reference IDCT). - * This permutation must be performed before the idct_put/add. - * Note, normally this can be merged with the zigzag/alternate scan
- * An example to avoid confusion: - * - (->decode coeffs -> zigzag reorder -> dequant -> reference IDCT -> ...) - * - (x -> reference DCT -> reference IDCT -> x) - * - (x -> reference DCT -> simple_mmx_perm = idct_permutation - * -> simple_idct_mmx -> x) - * - (-> decode coeffs -> zigzag reorder -> simple_mmx_perm -> dequant - * -> simple_idct_mmx -> ...) - */ - uint8_t idct_permutation[64]; - - void (*fdct)(int16_t *block /* align 16 */); - - - /** - * DCT algorithm. - * must use AVOptions to set this field. - */ - int dct_algo; - - /** - * IDCT algorithm. - * must use AVOptions to set this field. - */ - int idct_algo; - - void (*get_pixels)(int16_t *block /* align 16 */, - const uint8_t *pixels /* align 8 */, - ptrdiff_t line_size); - - int bits_per_sample; -} AVDCT; - -/** - * Allocates a AVDCT context. - * This needs to be initialized with avcodec_dct_init() after optionally - * configuring it with AVOptions. - * - * To free it use av_free() - */ -AVDCT *avcodec_dct_alloc(void); -int avcodec_dct_init(AVDCT *); - -const AVClass *avcodec_dct_get_class(void); - -#endif /* AVCODEC_AVDCT_H */ diff --git a/Externals/ffmpeg/include/libavcodec/avfft.h b/Externals/ffmpeg/include/libavcodec/avfft.h deleted file mode 100644 index 0c0f9b8d8dae..000000000000 --- a/Externals/ffmpeg/include/libavcodec/avfft.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_AVFFT_H -#define AVCODEC_AVFFT_H - -/** - * @file - * @ingroup lavc_fft - * FFT functions - */ - -/** - * @defgroup lavc_fft FFT functions - * @ingroup lavc_misc - * - * @{ - */ - -typedef float FFTSample; - -typedef struct FFTComplex { - FFTSample re, im; -} FFTComplex; - -typedef struct FFTContext FFTContext; - -/** - * Set up a complex FFT. - * @param nbits log2 of the length of the input array - * @param inverse if 0 perform the forward transform, if 1 perform the inverse - */ -FFTContext *av_fft_init(int nbits, int inverse); - -/** - * Do the permutation needed BEFORE calling ff_fft_calc(). - */ -void av_fft_permute(FFTContext *s, FFTComplex *z); - -/** - * Do a complex FFT with the parameters defined in av_fft_init(). The - * input data must be permuted before. No 1.0/sqrt(n) normalization is done. - */ -void av_fft_calc(FFTContext *s, FFTComplex *z); - -void av_fft_end(FFTContext *s); - -FFTContext *av_mdct_init(int nbits, int inverse, double scale); -void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); -void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input); -void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); -void av_mdct_end(FFTContext *s); - -/* Real Discrete Fourier Transform */ - -enum RDFTransformType { - DFT_R2C, - IDFT_C2R, - IDFT_R2C, - DFT_C2R, -}; - -typedef struct RDFTContext RDFTContext; - -/** - * Set up a real FFT. - * @param nbits log2 of the length of the input array - * @param trans the type of transform - */ -RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans); -void av_rdft_calc(RDFTContext *s, FFTSample *data); -void av_rdft_end(RDFTContext *s); - -/* Discrete Cosine Transform */ - -typedef struct DCTContext DCTContext; - -enum DCTTransformType { - DCT_II = 0, - DCT_III, - DCT_I, - DST_I, -}; - -/** - * Set up DCT. - * - * @param nbits size of the input array: - * (1 << nbits) for DCT-II, DCT-III and DST-I - * (1 << nbits) + 1 for DCT-I - * @param type the type of transform - * - * @note the first element of the input of DST-I is ignored - */ -DCTContext *av_dct_init(int nbits, enum DCTTransformType type); -void av_dct_calc(DCTContext *s, FFTSample *data); -void av_dct_end (DCTContext *s); - -/** - * @} - */ - -#endif /* AVCODEC_AVFFT_H */ diff --git a/Externals/ffmpeg/include/libavcodec/d3d11va.h b/Externals/ffmpeg/include/libavcodec/d3d11va.h deleted file mode 100644 index 6816b6c1e684..000000000000 --- a/Externals/ffmpeg/include/libavcodec/d3d11va.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Direct3D11 HW acceleration - * - * copyright (c) 2009 Laurent Aimar - * copyright (c) 2015 Steve Lhomme - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_D3D11VA_H -#define AVCODEC_D3D11VA_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_d3d11va - * Public libavcodec D3D11VA header. - */ - -#if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0602 -#undef _WIN32_WINNT -#define _WIN32_WINNT 0x0602 -#endif - -#include -#include - -/** - * @defgroup lavc_codec_hwaccel_d3d11va Direct3D11 - * @ingroup lavc_codec_hwaccel - * - * @{ - */ - -#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for Direct3D11 and old UVD/UVD+ ATI video cards -#define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for Direct3D11 and old Intel GPUs with ClearVideo interface - -/** - * This structure is used to provides the necessary configurations and data - * to the Direct3D11 FFmpeg HWAccel implementation. - * - * The application must make it available as AVCodecContext.hwaccel_context. - * - * Use av_d3d11va_alloc_context() exclusively to allocate an AVD3D11VAContext. - */ -typedef struct AVD3D11VAContext { - /** - * D3D11 decoder object - */ - ID3D11VideoDecoder *decoder; - - /** - * D3D11 VideoContext - */ - ID3D11VideoContext *video_context; - - /** - * D3D11 configuration used to create the decoder - */ - D3D11_VIDEO_DECODER_CONFIG *cfg; - - /** - * The number of surface in the surface array - */ - unsigned surface_count; - - /** - * The array of Direct3D surfaces used to create the decoder - */ - ID3D11VideoDecoderOutputView **surface; - - /** - * A bit field configuring the workarounds needed for using the decoder - */ - uint64_t workaround; - - /** - * Private to the FFmpeg AVHWAccel implementation - */ - unsigned report_id; - - /** - * Mutex to access video_context - */ - HANDLE context_mutex; -} AVD3D11VAContext; - -/** - * Allocate an AVD3D11VAContext. - * - * @return Newly-allocated AVD3D11VAContext or NULL on failure. - */ -AVD3D11VAContext *av_d3d11va_alloc_context(void); - -/** - * @} - */ - -#endif /* AVCODEC_D3D11VA_H */ diff --git a/Externals/ffmpeg/include/libavcodec/dirac.h b/Externals/ffmpeg/include/libavcodec/dirac.h deleted file mode 100644 index e6d9d346d9cc..000000000000 --- a/Externals/ffmpeg/include/libavcodec/dirac.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (C) 2007 Marco Gerards - * Copyright (C) 2009 David Conrad - * Copyright (C) 2011 Jordi Ortiz - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_DIRAC_H -#define AVCODEC_DIRAC_H - -/** - * @file - * Interface to Dirac Decoder/Encoder - * @author Marco Gerards - * @author David Conrad - * @author Jordi Ortiz - */ - -#include "avcodec.h" - -/** - * The spec limits the number of wavelet decompositions to 4 for both - * level 1 (VC-2) and 128 (long-gop default). - * 5 decompositions is the maximum before >16-bit buffers are needed. - * Schroedinger allows this for DD 9,7 and 13,7 wavelets only, limiting - * the others to 4 decompositions (or 3 for the fidelity filter). - * - * We use this instead of MAX_DECOMPOSITIONS to save some memory. - */ -#define MAX_DWT_LEVELS 5 - -/** - * Parse code values: - * - * Dirac Specification -> - * 9.6.1 Table 9.1 - * - * VC-2 Specification -> - * 10.4.1 Table 10.1 - */ - -enum DiracParseCodes { - DIRAC_PCODE_SEQ_HEADER = 0x00, - DIRAC_PCODE_END_SEQ = 0x10, - DIRAC_PCODE_AUX = 0x20, - DIRAC_PCODE_PAD = 0x30, - DIRAC_PCODE_PICTURE_CODED = 0x08, - DIRAC_PCODE_PICTURE_RAW = 0x48, - DIRAC_PCODE_PICTURE_LOW_DEL = 0xC8, - DIRAC_PCODE_PICTURE_HQ = 0xE8, - DIRAC_PCODE_INTER_NOREF_CO1 = 0x0A, - DIRAC_PCODE_INTER_NOREF_CO2 = 0x09, - DIRAC_PCODE_INTER_REF_CO1 = 0x0D, - DIRAC_PCODE_INTER_REF_CO2 = 0x0E, - DIRAC_PCODE_INTRA_REF_CO = 0x0C, - DIRAC_PCODE_INTRA_REF_RAW = 0x4C, - DIRAC_PCODE_INTRA_REF_PICT = 0xCC, - DIRAC_PCODE_MAGIC = 0x42424344, -}; - -typedef struct DiracVersionInfo { - int major; - int minor; -} DiracVersionInfo; - -typedef struct AVDiracSeqHeader { - unsigned width; - unsigned height; - uint8_t chroma_format; ///< 0: 444 1: 422 2: 420 - - uint8_t interlaced; - uint8_t top_field_first; - - uint8_t frame_rate_index; ///< index into dirac_frame_rate[] - uint8_t aspect_ratio_index; ///< index into dirac_aspect_ratio[] - - uint16_t clean_width; - uint16_t clean_height; - uint16_t clean_left_offset; - uint16_t clean_right_offset; - - uint8_t pixel_range_index; ///< index into dirac_pixel_range_presets[] - uint8_t color_spec_index; ///< index into dirac_color_spec_presets[] - - int profile; - int level; - - AVRational framerate; - AVRational sample_aspect_ratio; - - enum AVPixelFormat pix_fmt; - enum AVColorRange color_range; - enum AVColorPrimaries color_primaries; - enum AVColorTransferCharacteristic color_trc; - enum AVColorSpace colorspace; - - DiracVersionInfo version; - int bit_depth; -} AVDiracSeqHeader; - -/** - * Parse a Dirac sequence header. - * - * @param dsh this function will allocate and fill an AVDiracSeqHeader struct - * and write it into this pointer. The caller must free it with - * av_free(). - * @param buf the data buffer - * @param buf_size the size of the data buffer in bytes - * @param log_ctx if non-NULL, this function will log errors here - * @return 0 on success, a negative AVERROR code on failure - */ -int av_dirac_parse_sequence_header(AVDiracSeqHeader **dsh, - const uint8_t *buf, size_t buf_size, - void *log_ctx); - -#endif /* AVCODEC_DIRAC_H */ diff --git a/Externals/ffmpeg/include/libavcodec/dv_profile.h b/Externals/ffmpeg/include/libavcodec/dv_profile.h deleted file mode 100644 index 9380a66f0705..000000000000 --- a/Externals/ffmpeg/include/libavcodec/dv_profile.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_DV_PROFILE_H -#define AVCODEC_DV_PROFILE_H - -#include - -#include "libavutil/pixfmt.h" -#include "libavutil/rational.h" -#include "avcodec.h" - -/* minimum number of bytes to read from a DV stream in order to - * determine the profile */ -#define DV_PROFILE_BYTES (6 * 80) /* 6 DIF blocks */ - - -/* - * AVDVProfile is used to express the differences between various - * DV flavors. For now it's primarily used for differentiating - * 525/60 and 625/50, but the plans are to use it for various - * DV specs as well (e.g. SMPTE314M vs. IEC 61834). - */ -typedef struct AVDVProfile { - int dsf; /* value of the dsf in the DV header */ - int video_stype; /* stype for VAUX source pack */ - int frame_size; /* total size of one frame in bytes */ - int difseg_size; /* number of DIF segments per DIF channel */ - int n_difchan; /* number of DIF channels per frame */ - AVRational time_base; /* 1/framerate */ - int ltc_divisor; /* FPS from the LTS standpoint */ - int height; /* picture height in pixels */ - int width; /* picture width in pixels */ - AVRational sar[2]; /* sample aspect ratios for 4:3 and 16:9 */ - enum AVPixelFormat pix_fmt; /* picture pixel format */ - int bpm; /* blocks per macroblock */ - const uint8_t *block_sizes; /* AC block sizes, in bits */ - int audio_stride; /* size of audio_shuffle table */ - int audio_min_samples[3]; /* min amount of audio samples */ - /* for 48kHz, 44.1kHz and 32kHz */ - int audio_samples_dist[5]; /* how many samples are supposed to be */ - /* in each frame in a 5 frames window */ - const uint8_t (*audio_shuffle)[9]; /* PCM shuffling table */ -} AVDVProfile; - -/** - * Get a DV profile for the provided compressed frame. - * - * @param sys the profile used for the previous frame, may be NULL - * @param frame the compressed data buffer - * @param buf_size size of the buffer in bytes - * @return the DV profile for the supplied data or NULL on failure - */ -const AVDVProfile *av_dv_frame_profile(const AVDVProfile *sys, - const uint8_t *frame, unsigned buf_size); - -/** - * Get a DV profile for the provided stream parameters. - */ -const AVDVProfile *av_dv_codec_profile(int width, int height, enum AVPixelFormat pix_fmt); - -/** - * Get a DV profile for the provided stream parameters. - * The frame rate is used as a best-effort parameter. - */ -const AVDVProfile *av_dv_codec_profile2(int width, int height, enum AVPixelFormat pix_fmt, AVRational frame_rate); - -#endif /* AVCODEC_DV_PROFILE_H */ diff --git a/Externals/ffmpeg/include/libavcodec/dxva2.h b/Externals/ffmpeg/include/libavcodec/dxva2.h deleted file mode 100644 index 22c93992f222..000000000000 --- a/Externals/ffmpeg/include/libavcodec/dxva2.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * DXVA2 HW acceleration - * - * copyright (c) 2009 Laurent Aimar - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_DXVA2_H -#define AVCODEC_DXVA2_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_dxva2 - * Public libavcodec DXVA2 header. - */ - -#if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0602 -#undef _WIN32_WINNT -#define _WIN32_WINNT 0x0602 -#endif - -#include -#include -#include - -/** - * @defgroup lavc_codec_hwaccel_dxva2 DXVA2 - * @ingroup lavc_codec_hwaccel - * - * @{ - */ - -#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards -#define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for DXVA2 and old Intel GPUs with ClearVideo interface - -/** - * This structure is used to provides the necessary configurations and data - * to the DXVA2 FFmpeg HWAccel implementation. - * - * The application must make it available as AVCodecContext.hwaccel_context. - */ -struct dxva_context { - /** - * DXVA2 decoder object - */ - IDirectXVideoDecoder *decoder; - - /** - * DXVA2 configuration used to create the decoder - */ - const DXVA2_ConfigPictureDecode *cfg; - - /** - * The number of surface in the surface array - */ - unsigned surface_count; - - /** - * The array of Direct3D surfaces used to create the decoder - */ - LPDIRECT3DSURFACE9 *surface; - - /** - * A bit field configuring the workarounds needed for using the decoder - */ - uint64_t workaround; - - /** - * Private to the FFmpeg AVHWAccel implementation - */ - unsigned report_id; -}; - -/** - * @} - */ - -#endif /* AVCODEC_DXVA2_H */ diff --git a/Externals/ffmpeg/include/libavcodec/jni.h b/Externals/ffmpeg/include/libavcodec/jni.h deleted file mode 100644 index dd99e9261132..000000000000 --- a/Externals/ffmpeg/include/libavcodec/jni.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * JNI public API functions - * - * Copyright (c) 2015-2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_JNI_H -#define AVCODEC_JNI_H - -/* - * Manually set a Java virtual machine which will be used to retrieve the JNI - * environment. Once a Java VM is set it cannot be changed afterwards, meaning - * you can call multiple times av_jni_set_java_vm with the same Java VM pointer - * however it will error out if you try to set a different Java VM. - * - * @param vm Java virtual machine - * @param log_ctx context used for logging, can be NULL - * @return 0 on success, < 0 otherwise - */ -int av_jni_set_java_vm(void *vm, void *log_ctx); - -/* - * Get the Java virtual machine which has been set with av_jni_set_java_vm. - * - * @param vm Java virtual machine - * @return a pointer to the Java virtual machine - */ -void *av_jni_get_java_vm(void *log_ctx); - -#endif /* AVCODEC_JNI_H */ diff --git a/Externals/ffmpeg/include/libavcodec/mediacodec.h b/Externals/ffmpeg/include/libavcodec/mediacodec.h deleted file mode 100644 index 5606d24a1ee6..000000000000 --- a/Externals/ffmpeg/include/libavcodec/mediacodec.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Android MediaCodec public API - * - * Copyright (c) 2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_MEDIACODEC_H -#define AVCODEC_MEDIACODEC_H - -#include "libavcodec/avcodec.h" - -/** - * This structure holds a reference to a android/view/Surface object that will - * be used as output by the decoder. - * - */ -typedef struct AVMediaCodecContext { - - /** - * android/view/Surface object reference. - */ - void *surface; - -} AVMediaCodecContext; - -/** - * Allocate and initialize a MediaCodec context. - * - * When decoding with MediaCodec is finished, the caller must free the - * MediaCodec context with av_mediacodec_default_free. - * - * @return a pointer to a newly allocated AVMediaCodecContext on success, NULL otherwise - */ -AVMediaCodecContext *av_mediacodec_alloc_context(void); - -/** - * Convenience function that sets up the MediaCodec context. - * - * @param avctx codec context - * @param ctx MediaCodec context to initialize - * @param surface reference to an android/view/Surface - * @return 0 on success, < 0 otherwise - */ -int av_mediacodec_default_init(AVCodecContext *avctx, AVMediaCodecContext *ctx, void *surface); - -/** - * This function must be called to free the MediaCodec context initialized with - * av_mediacodec_default_init(). - * - * @param avctx codec context - */ -void av_mediacodec_default_free(AVCodecContext *avctx); - -/** - * Opaque structure representing a MediaCodec buffer to render. - */ -typedef struct MediaCodecBuffer AVMediaCodecBuffer; - -/** - * Release a MediaCodec buffer and render it to the surface that is associated - * with the decoder. This function should only be called once on a given - * buffer, once released the underlying buffer returns to the codec, thus - * subsequent calls to this function will have no effect. - * - * @param buffer the buffer to render - * @param render 1 to release and render the buffer to the surface or 0 to - * discard the buffer - * @return 0 on success, < 0 otherwise - */ -int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render); - -#endif /* AVCODEC_MEDIACODEC_H */ diff --git a/Externals/ffmpeg/include/libavcodec/qsv.h b/Externals/ffmpeg/include/libavcodec/qsv.h deleted file mode 100644 index b77158ec2629..000000000000 --- a/Externals/ffmpeg/include/libavcodec/qsv.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Intel MediaSDK QSV public API - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_QSV_H -#define AVCODEC_QSV_H - -#include - -#include "libavutil/buffer.h" - -/** - * This struct is used for communicating QSV parameters between libavcodec and - * the caller. It is managed by the caller and must be assigned to - * AVCodecContext.hwaccel_context. - * - decoding: hwaccel_context must be set on return from the get_format() - * callback - * - encoding: hwaccel_context must be set before avcodec_open2() - */ -typedef struct AVQSVContext { - /** - * If non-NULL, the session to use for encoding or decoding. - * Otherwise, libavcodec will try to create an internal session. - */ - mfxSession session; - - /** - * The IO pattern to use. - */ - int iopattern; - - /** - * Extra buffers to pass to encoder or decoder initialization. - */ - mfxExtBuffer **ext_buffers; - int nb_ext_buffers; - - /** - * Encoding only. If this field is set to non-zero by the caller, libavcodec - * will create an mfxExtOpaqueSurfaceAlloc extended buffer and pass it to - * the encoder initialization. This only makes sense if iopattern is also - * set to MFX_IOPATTERN_IN_OPAQUE_MEMORY. - * - * The number of allocated opaque surfaces will be the sum of the number - * required by the encoder and the user-provided value nb_opaque_surfaces. - * The array of the opaque surfaces will be exported to the caller through - * the opaque_surfaces field. - */ - int opaque_alloc; - - /** - * Encoding only, and only if opaque_alloc is set to non-zero. Before - * calling avcodec_open2(), the caller should set this field to the number - * of extra opaque surfaces to allocate beyond what is required by the - * encoder. - * - * On return from avcodec_open2(), this field will be set by libavcodec to - * the total number of allocated opaque surfaces. - */ - int nb_opaque_surfaces; - - /** - * Encoding only, and only if opaque_alloc is set to non-zero. On return - * from avcodec_open2(), this field will be used by libavcodec to export the - * array of the allocated opaque surfaces to the caller, so they can be - * passed to other parts of the pipeline. - * - * The buffer reference exported here is owned and managed by libavcodec, - * the callers should make their own reference with av_buffer_ref() and free - * it with av_buffer_unref() when it is no longer needed. - * - * The buffer data is an nb_opaque_surfaces-sized array of mfxFrameSurface1. - */ - AVBufferRef *opaque_surfaces; - - /** - * Encoding only, and only if opaque_alloc is set to non-zero. On return - * from avcodec_open2(), this field will be set to the surface type used in - * the opaque allocation request. - */ - int opaque_alloc_type; -} AVQSVContext; - -/** - * Allocate a new context. - * - * It must be freed by the caller with av_free(). - */ -AVQSVContext *av_qsv_alloc_context(void); - -#endif /* AVCODEC_QSV_H */ diff --git a/Externals/ffmpeg/include/libavcodec/vaapi.h b/Externals/ffmpeg/include/libavcodec/vaapi.h deleted file mode 100644 index 7a29f6f88115..000000000000 --- a/Externals/ffmpeg/include/libavcodec/vaapi.h +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Video Acceleration API (shared data between FFmpeg and the video player) - * HW decode acceleration for MPEG-2, MPEG-4, H.264 and VC-1 - * - * Copyright (C) 2008-2009 Splitted-Desktop Systems - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VAAPI_H -#define AVCODEC_VAAPI_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_vaapi - * Public libavcodec VA API header. - */ - -#include -#include "libavutil/attributes.h" -#include "version.h" - -/** - * @defgroup lavc_codec_hwaccel_vaapi VA API Decoding - * @ingroup lavc_codec_hwaccel - * @{ - */ - -/** - * This structure is used to share data between the FFmpeg library and - * the client video application. - * This shall be zero-allocated and available as - * AVCodecContext.hwaccel_context. All user members can be set once - * during initialization or through each AVCodecContext.get_buffer() - * function call. In any case, they must be valid prior to calling - * decoding functions. - */ -struct vaapi_context { - /** - * Window system dependent data - * - * - encoding: unused - * - decoding: Set by user - */ - void *display; - - /** - * Configuration ID - * - * - encoding: unused - * - decoding: Set by user - */ - uint32_t config_id; - - /** - * Context ID (video decode pipeline) - * - * - encoding: unused - * - decoding: Set by user - */ - uint32_t context_id; - -#if FF_API_VAAPI_CONTEXT - /** - * VAPictureParameterBuffer ID - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - uint32_t pic_param_buf_id; - - /** - * VAIQMatrixBuffer ID - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - uint32_t iq_matrix_buf_id; - - /** - * VABitPlaneBuffer ID (for VC-1 decoding) - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - uint32_t bitplane_buf_id; - - /** - * Slice parameter/data buffer IDs - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - uint32_t *slice_buf_ids; - - /** - * Number of effective slice buffer IDs to send to the HW - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - unsigned int n_slice_buf_ids; - - /** - * Size of pre-allocated slice_buf_ids - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - unsigned int slice_buf_ids_alloc; - - /** - * Pointer to VASliceParameterBuffers - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - void *slice_params; - - /** - * Size of a VASliceParameterBuffer element - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - unsigned int slice_param_size; - - /** - * Size of pre-allocated slice_params - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - unsigned int slice_params_alloc; - - /** - * Number of slices currently filled in - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - unsigned int slice_count; - - /** - * Pointer to slice data buffer base - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - const uint8_t *slice_data; - - /** - * Current size of slice data - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - uint32_t slice_data_size; -#endif -}; - -/* @} */ - -#endif /* AVCODEC_VAAPI_H */ diff --git a/Externals/ffmpeg/include/libavcodec/vda.h b/Externals/ffmpeg/include/libavcodec/vda.h deleted file mode 100644 index bde14e31d7df..000000000000 --- a/Externals/ffmpeg/include/libavcodec/vda.h +++ /dev/null @@ -1,230 +0,0 @@ -/* - * VDA HW acceleration - * - * copyright (c) 2011 Sebastien Zwickert - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VDA_H -#define AVCODEC_VDA_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_vda - * Public libavcodec VDA header. - */ - -#include "libavcodec/avcodec.h" - -#include - -// emmintrin.h is unable to compile with -std=c99 -Werror=missing-prototypes -// http://openradar.appspot.com/8026390 -#undef __GNUC_STDC_INLINE__ - -#define Picture QuickdrawPicture -#include -#undef Picture - -#include "libavcodec/version.h" - -// extra flags not defined in VDADecoder.h -enum { - kVDADecodeInfo_Asynchronous = 1UL << 0, - kVDADecodeInfo_FrameDropped = 1UL << 1 -}; - -/** - * @defgroup lavc_codec_hwaccel_vda VDA - * @ingroup lavc_codec_hwaccel - * - * @{ - */ - -/** - * This structure is used to provide the necessary configurations and data - * to the VDA FFmpeg HWAccel implementation. - * - * The application must make it available as AVCodecContext.hwaccel_context. - */ -struct vda_context { - /** - * VDA decoder object. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - VDADecoder decoder; - - /** - * The Core Video pixel buffer that contains the current image data. - * - * encoding: unused - * decoding: Set by libavcodec. Unset by user. - */ - CVPixelBufferRef cv_buffer; - - /** - * Use the hardware decoder in synchronous mode. - * - * encoding: unused - * decoding: Set by user. - */ - int use_sync_decoding; - - /** - * The frame width. - * - * - encoding: unused - * - decoding: Set/Unset by user. - */ - int width; - - /** - * The frame height. - * - * - encoding: unused - * - decoding: Set/Unset by user. - */ - int height; - - /** - * The frame format. - * - * - encoding: unused - * - decoding: Set/Unset by user. - */ - int format; - - /** - * The pixel format for output image buffers. - * - * - encoding: unused - * - decoding: Set/Unset by user. - */ - OSType cv_pix_fmt_type; - - /** - * unused - */ - uint8_t *priv_bitstream; - - /** - * unused - */ - int priv_bitstream_size; - - /** - * unused - */ - int priv_allocated_size; - - /** - * Use av_buffer to manage buffer. - * When the flag is set, the CVPixelBuffers returned by the decoder will - * be released automatically, so you have to retain them if necessary. - * Not setting this flag may cause memory leak. - * - * encoding: unused - * decoding: Set by user. - */ - int use_ref_buffer; -}; - -/** Create the video decoder. */ -int ff_vda_create_decoder(struct vda_context *vda_ctx, - uint8_t *extradata, - int extradata_size); - -/** Destroy the video decoder. */ -int ff_vda_destroy_decoder(struct vda_context *vda_ctx); - -/** - * This struct holds all the information that needs to be passed - * between the caller and libavcodec for initializing VDA decoding. - * Its size is not a part of the public ABI, it must be allocated with - * av_vda_alloc_context() and freed with av_free(). - */ -typedef struct AVVDAContext { - /** - * VDA decoder object. Created and freed by the caller. - */ - VDADecoder decoder; - - /** - * The output callback that must be passed to VDADecoderCreate. - * Set by av_vda_alloc_context(). - */ - VDADecoderOutputCallback output_callback; - - /** - * CVPixelBuffer Format Type that VDA will use for decoded frames; set by - * the caller. - */ - OSType cv_pix_fmt_type; -} AVVDAContext; - -/** - * Allocate and initialize a VDA context. - * - * This function should be called from the get_format() callback when the caller - * selects the AV_PIX_FMT_VDA format. The caller must then create the decoder - * object (using the output callback provided by libavcodec) that will be used - * for VDA-accelerated decoding. - * - * When decoding with VDA is finished, the caller must destroy the decoder - * object and free the VDA context using av_free(). - * - * @return the newly allocated context or NULL on failure - */ -AVVDAContext *av_vda_alloc_context(void); - -/** - * This is a convenience function that creates and sets up the VDA context using - * an internal implementation. - * - * @param avctx the corresponding codec context - * - * @return >= 0 on success, a negative AVERROR code on failure - */ -int av_vda_default_init(AVCodecContext *avctx); - -/** - * This is a convenience function that creates and sets up the VDA context using - * an internal implementation. - * - * @param avctx the corresponding codec context - * @param vdactx the VDA context to use - * - * @return >= 0 on success, a negative AVERROR code on failure - */ -int av_vda_default_init2(AVCodecContext *avctx, AVVDAContext *vdactx); - -/** - * This function must be called to free the VDA context initialized with - * av_vda_default_init(). - * - * @param avctx the corresponding codec context - */ -void av_vda_default_free(AVCodecContext *avctx); - -/** - * @} - */ - -#endif /* AVCODEC_VDA_H */ diff --git a/Externals/ffmpeg/include/libavcodec/vdpau.h b/Externals/ffmpeg/include/libavcodec/vdpau.h deleted file mode 100644 index e85e4d9e9a26..000000000000 --- a/Externals/ffmpeg/include/libavcodec/vdpau.h +++ /dev/null @@ -1,253 +0,0 @@ -/* - * The Video Decode and Presentation API for UNIX (VDPAU) is used for - * hardware-accelerated decoding of MPEG-1/2, H.264 and VC-1. - * - * Copyright (C) 2008 NVIDIA - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VDPAU_H -#define AVCODEC_VDPAU_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_vdpau - * Public libavcodec VDPAU header. - */ - - -/** - * @defgroup lavc_codec_hwaccel_vdpau VDPAU Decoder and Renderer - * @ingroup lavc_codec_hwaccel - * - * VDPAU hardware acceleration has two modules - * - VDPAU decoding - * - VDPAU presentation - * - * The VDPAU decoding module parses all headers using FFmpeg - * parsing mechanisms and uses VDPAU for the actual decoding. - * - * As per the current implementation, the actual decoding - * and rendering (API calls) are done as part of the VDPAU - * presentation (vo_vdpau.c) module. - * - * @{ - */ - -#include -#include -#include "libavutil/avconfig.h" -#include "libavutil/attributes.h" - -#include "avcodec.h" -#include "version.h" - -#if FF_API_BUFS_VDPAU -union AVVDPAUPictureInfo { - VdpPictureInfoH264 h264; - VdpPictureInfoMPEG1Or2 mpeg; - VdpPictureInfoVC1 vc1; - VdpPictureInfoMPEG4Part2 mpeg4; -}; -#endif - -struct AVCodecContext; -struct AVFrame; - -typedef int (*AVVDPAU_Render2)(struct AVCodecContext *, struct AVFrame *, - const VdpPictureInfo *, uint32_t, - const VdpBitstreamBuffer *); - -/** - * This structure is used to share data between the libavcodec library and - * the client video application. - * The user shall allocate the structure via the av_alloc_vdpau_hwaccel - * function and make it available as - * AVCodecContext.hwaccel_context. Members can be set by the user once - * during initialization or through each AVCodecContext.get_buffer() - * function call. In any case, they must be valid prior to calling - * decoding functions. - * - * The size of this structure is not a part of the public ABI and must not - * be used outside of libavcodec. Use av_vdpau_alloc_context() to allocate an - * AVVDPAUContext. - */ -typedef struct AVVDPAUContext { - /** - * VDPAU decoder handle - * - * Set by user. - */ - VdpDecoder decoder; - - /** - * VDPAU decoder render callback - * - * Set by the user. - */ - VdpDecoderRender *render; - -#if FF_API_BUFS_VDPAU - /** - * VDPAU picture information - * - * Set by libavcodec. - */ - attribute_deprecated - union AVVDPAUPictureInfo info; - - /** - * Allocated size of the bitstream_buffers table. - * - * Set by libavcodec. - */ - attribute_deprecated - int bitstream_buffers_allocated; - - /** - * Useful bitstream buffers in the bitstream buffers table. - * - * Set by libavcodec. - */ - attribute_deprecated - int bitstream_buffers_used; - - /** - * Table of bitstream buffers. - * The user is responsible for freeing this buffer using av_freep(). - * - * Set by libavcodec. - */ - attribute_deprecated - VdpBitstreamBuffer *bitstream_buffers; -#endif - AVVDPAU_Render2 render2; -} AVVDPAUContext; - -/** - * @brief allocation function for AVVDPAUContext - * - * Allows extending the struct without breaking API/ABI - */ -AVVDPAUContext *av_alloc_vdpaucontext(void); - -AVVDPAU_Render2 av_vdpau_hwaccel_get_render2(const AVVDPAUContext *); -void av_vdpau_hwaccel_set_render2(AVVDPAUContext *, AVVDPAU_Render2); - -/** - * Associate a VDPAU device with a codec context for hardware acceleration. - * This function is meant to be called from the get_format() codec callback, - * or earlier. It can also be called after avcodec_flush_buffers() to change - * the underlying VDPAU device mid-stream (e.g. to recover from non-transparent - * display preemption). - * - * @note get_format() must return AV_PIX_FMT_VDPAU if this function completes - * successfully. - * - * @param avctx decoding context whose get_format() callback is invoked - * @param device VDPAU device handle to use for hardware acceleration - * @param get_proc_address VDPAU device driver - * @param flags zero of more OR'd AV_HWACCEL_FLAG_* flags - * - * @return 0 on success, an AVERROR code on failure. - */ -int av_vdpau_bind_context(AVCodecContext *avctx, VdpDevice device, - VdpGetProcAddress *get_proc_address, unsigned flags); - -/** - * Gets the parameters to create an adequate VDPAU video surface for the codec - * context using VDPAU hardware decoding acceleration. - * - * @note Behavior is undefined if the context was not successfully bound to a - * VDPAU device using av_vdpau_bind_context(). - * - * @param avctx the codec context being used for decoding the stream - * @param type storage space for the VDPAU video surface chroma type - * (or NULL to ignore) - * @param width storage space for the VDPAU video surface pixel width - * (or NULL to ignore) - * @param height storage space for the VDPAU video surface pixel height - * (or NULL to ignore) - * - * @return 0 on success, a negative AVERROR code on failure. - */ -int av_vdpau_get_surface_parameters(AVCodecContext *avctx, VdpChromaType *type, - uint32_t *width, uint32_t *height); - -/** - * Allocate an AVVDPAUContext. - * - * @return Newly-allocated AVVDPAUContext or NULL on failure. - */ -AVVDPAUContext *av_vdpau_alloc_context(void); - -#if FF_API_VDPAU_PROFILE -/** - * Get a decoder profile that should be used for initializing a VDPAU decoder. - * Should be called from the AVCodecContext.get_format() callback. - * - * @deprecated Use av_vdpau_bind_context() instead. - * - * @param avctx the codec context being used for decoding the stream - * @param profile a pointer into which the result will be written on success. - * The contents of profile are undefined if this function returns - * an error. - * - * @return 0 on success (non-negative), a negative AVERROR on failure. - */ -attribute_deprecated -int av_vdpau_get_profile(AVCodecContext *avctx, VdpDecoderProfile *profile); -#endif - -#if FF_API_CAP_VDPAU -/** @brief The videoSurface is used for rendering. */ -#define FF_VDPAU_STATE_USED_FOR_RENDER 1 - -/** - * @brief The videoSurface is needed for reference/prediction. - * The codec manipulates this. - */ -#define FF_VDPAU_STATE_USED_FOR_REFERENCE 2 - -/** - * @brief This structure is used as a callback between the FFmpeg - * decoder (vd_) and presentation (vo_) module. - * This is used for defining a video frame containing surface, - * picture parameter, bitstream information etc which are passed - * between the FFmpeg decoder and its clients. - */ -struct vdpau_render_state { - VdpVideoSurface surface; ///< Used as rendered surface, never changed. - - int state; ///< Holds FF_VDPAU_STATE_* values. - - /** picture parameter information for all supported codecs */ - union AVVDPAUPictureInfo info; - - /** Describe size/location of the compressed video data. - Set to 0 when freeing bitstream_buffers. */ - int bitstream_buffers_allocated; - int bitstream_buffers_used; - /** The user is responsible for freeing this buffer using av_freep(). */ - VdpBitstreamBuffer *bitstream_buffers; -}; -#endif - -/* @}*/ - -#endif /* AVCODEC_VDPAU_H */ diff --git a/Externals/ffmpeg/include/libavcodec/version.h b/Externals/ffmpeg/include/libavcodec/version.h deleted file mode 100644 index ec8837a4e73e..000000000000 --- a/Externals/ffmpeg/include/libavcodec/version.h +++ /dev/null @@ -1,230 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VERSION_H -#define AVCODEC_VERSION_H - -/** - * @file - * @ingroup libavc - * Libavcodec version macros. - */ - -#include "libavutil/version.h" - -#define LIBAVCODEC_VERSION_MAJOR 57 -#define LIBAVCODEC_VERSION_MINOR 64 -#define LIBAVCODEC_VERSION_MICRO 101 - -#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ - LIBAVCODEC_VERSION_MINOR, \ - LIBAVCODEC_VERSION_MICRO) -#define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \ - LIBAVCODEC_VERSION_MINOR, \ - LIBAVCODEC_VERSION_MICRO) -#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT - -#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION) - -/** - * FF_API_* defines may be placed below to indicate public API that will be - * dropped at a future version bump. The defines themselves are not part of - * the public API and may change, break or disappear at any time. - * - * @note, when bumping the major version it is recommended to manually - * disable each FF_API_* in its own commit instead of disabling them all - * at once through the bump. This improves the git bisect-ability of the change. - */ - -#ifndef FF_API_VIMA_DECODER -#define FF_API_VIMA_DECODER (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_AUDIO_CONVERT -#define FF_API_AUDIO_CONVERT (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_AVCODEC_RESAMPLE -#define FF_API_AVCODEC_RESAMPLE FF_API_AUDIO_CONVERT -#endif -#ifndef FF_API_GETCHROMA -#define FF_API_GETCHROMA (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_MISSING_SAMPLE -#define FF_API_MISSING_SAMPLE (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_LOWRES -#define FF_API_LOWRES (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_CAP_VDPAU -#define FF_API_CAP_VDPAU (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_BUFS_VDPAU -#define FF_API_BUFS_VDPAU (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_VOXWARE -#define FF_API_VOXWARE (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_SET_DIMENSIONS -#define FF_API_SET_DIMENSIONS (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_DEBUG_MV -#define FF_API_DEBUG_MV (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_AC_VLC -#define FF_API_AC_VLC (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_OLD_MSMPEG4 -#define FF_API_OLD_MSMPEG4 (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_ASPECT_EXTENDED -#define FF_API_ASPECT_EXTENDED (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_ARCH_ALPHA -#define FF_API_ARCH_ALPHA (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_XVMC -#define FF_API_XVMC (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_ERROR_RATE -#define FF_API_ERROR_RATE (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_QSCALE_TYPE -#define FF_API_QSCALE_TYPE (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_MB_TYPE -#define FF_API_MB_TYPE (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_MAX_BFRAMES -#define FF_API_MAX_BFRAMES (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_NEG_LINESIZES -#define FF_API_NEG_LINESIZES (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_EMU_EDGE -#define FF_API_EMU_EDGE (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_ARCH_SH4 -#define FF_API_ARCH_SH4 (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_ARCH_SPARC -#define FF_API_ARCH_SPARC (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_UNUSED_MEMBERS -#define FF_API_UNUSED_MEMBERS (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_IDCT_XVIDMMX -#define FF_API_IDCT_XVIDMMX (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_INPUT_PRESERVED -#define FF_API_INPUT_PRESERVED (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_NORMALIZE_AQP -#define FF_API_NORMALIZE_AQP (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_GMC -#define FF_API_GMC (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_MV0 -#define FF_API_MV0 (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_CODEC_NAME -#define FF_API_CODEC_NAME (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_AFD -#define FF_API_AFD (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_VISMV -/* XXX: don't forget to drop the -vismv documentation */ -#define FF_API_VISMV (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_AUDIOENC_DELAY -#define FF_API_AUDIOENC_DELAY (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_VAAPI_CONTEXT -#define FF_API_VAAPI_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_AVCTX_TIMEBASE -#define FF_API_AVCTX_TIMEBASE (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_MPV_OPT -#define FF_API_MPV_OPT (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_STREAM_CODEC_TAG -#define FF_API_STREAM_CODEC_TAG (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_QUANT_BIAS -#define FF_API_QUANT_BIAS (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_RC_STRATEGY -#define FF_API_RC_STRATEGY (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_CODED_FRAME -#define FF_API_CODED_FRAME (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_MOTION_EST -#define FF_API_MOTION_EST (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_WITHOUT_PREFIX -#define FF_API_WITHOUT_PREFIX (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_SIDEDATA_ONLY_PKT -#define FF_API_SIDEDATA_ONLY_PKT (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_VDPAU_PROFILE -#define FF_API_VDPAU_PROFILE (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_CONVERGENCE_DURATION -#define FF_API_CONVERGENCE_DURATION (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_AVPICTURE -#define FF_API_AVPICTURE (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_AVPACKET_OLD_API -#define FF_API_AVPACKET_OLD_API (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_RTP_CALLBACK -#define FF_API_RTP_CALLBACK (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_VBV_DELAY -#define FF_API_VBV_DELAY (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_CODER_TYPE -#define FF_API_CODER_TYPE (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_STAT_BITS -#define FF_API_STAT_BITS (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_PRIVATE_OPT -#define FF_API_PRIVATE_OPT (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_ASS_TIMING -#define FF_API_ASS_TIMING (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_OLD_BSF -#define FF_API_OLD_BSF (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_COPY_CONTEXT -#define FF_API_COPY_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_GET_CONTEXT_DEFAULTS -#define FF_API_GET_CONTEXT_DEFAULTS (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_NVENC_OLD_NAME -#define FF_API_NVENC_OLD_NAME (LIBAVCODEC_VERSION_MAJOR < 59) -#endif - -#endif /* AVCODEC_VERSION_H */ diff --git a/Externals/ffmpeg/include/libavcodec/videotoolbox.h b/Externals/ffmpeg/include/libavcodec/videotoolbox.h deleted file mode 100644 index a48638e2b224..000000000000 --- a/Externals/ffmpeg/include/libavcodec/videotoolbox.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Videotoolbox hardware acceleration - * - * copyright (c) 2012 Sebastien Zwickert - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VIDEOTOOLBOX_H -#define AVCODEC_VIDEOTOOLBOX_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_videotoolbox - * Public libavcodec Videotoolbox header. - */ - -#include - -#define Picture QuickdrawPicture -#include -#undef Picture - -#include "libavcodec/avcodec.h" - -/** - * This struct holds all the information that needs to be passed - * between the caller and libavcodec for initializing Videotoolbox decoding. - * Its size is not a part of the public ABI, it must be allocated with - * av_videotoolbox_alloc_context() and freed with av_free(). - */ -typedef struct AVVideotoolboxContext { - /** - * Videotoolbox decompression session object. - * Created and freed the caller. - */ - VTDecompressionSessionRef session; - - /** - * The output callback that must be passed to the session. - * Set by av_videottoolbox_default_init() - */ - VTDecompressionOutputCallback output_callback; - - /** - * CVPixelBuffer Format Type that Videotoolbox will use for decoded frames. - * set by the caller. - */ - OSType cv_pix_fmt_type; - - /** - * CoreMedia Format Description that Videotoolbox will use to create the decompression session. - * Set by the caller. - */ - CMVideoFormatDescriptionRef cm_fmt_desc; - - /** - * CoreMedia codec type that Videotoolbox will use to create the decompression session. - * Set by the caller. - */ - int cm_codec_type; -} AVVideotoolboxContext; - -/** - * Allocate and initialize a Videotoolbox context. - * - * This function should be called from the get_format() callback when the caller - * selects the AV_PIX_FMT_VIDETOOLBOX format. The caller must then create - * the decoder object (using the output callback provided by libavcodec) that - * will be used for Videotoolbox-accelerated decoding. - * - * When decoding with Videotoolbox is finished, the caller must destroy the decoder - * object and free the Videotoolbox context using av_free(). - * - * @return the newly allocated context or NULL on failure - */ -AVVideotoolboxContext *av_videotoolbox_alloc_context(void); - -/** - * This is a convenience function that creates and sets up the Videotoolbox context using - * an internal implementation. - * - * @param avctx the corresponding codec context - * - * @return >= 0 on success, a negative AVERROR code on failure - */ -int av_videotoolbox_default_init(AVCodecContext *avctx); - -/** - * This is a convenience function that creates and sets up the Videotoolbox context using - * an internal implementation. - * - * @param avctx the corresponding codec context - * @param vtctx the Videotoolbox context to use - * - * @return >= 0 on success, a negative AVERROR code on failure - */ -int av_videotoolbox_default_init2(AVCodecContext *avctx, AVVideotoolboxContext *vtctx); - -/** - * This function must be called to free the Videotoolbox context initialized with - * av_videotoolbox_default_init(). - * - * @param avctx the corresponding codec context - */ -void av_videotoolbox_default_free(AVCodecContext *avctx); - -/** - * @} - */ - -#endif /* AVCODEC_VIDEOTOOLBOX_H */ diff --git a/Externals/ffmpeg/include/libavcodec/vorbis_parser.h b/Externals/ffmpeg/include/libavcodec/vorbis_parser.h deleted file mode 100644 index 92050277ed19..000000000000 --- a/Externals/ffmpeg/include/libavcodec/vorbis_parser.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * A public API for Vorbis parsing - * - * Determines the duration for each packet. - */ - -#ifndef AVCODEC_VORBIS_PARSER_H -#define AVCODEC_VORBIS_PARSER_H - -#include - -typedef struct AVVorbisParseContext AVVorbisParseContext; - -/** - * Allocate and initialize the Vorbis parser using headers in the extradata. - * - * @param avctx codec context - * @param s Vorbis parser context - */ -AVVorbisParseContext *av_vorbis_parse_init(const uint8_t *extradata, - int extradata_size); - -/** - * Free the parser and everything associated with it. - */ -void av_vorbis_parse_free(AVVorbisParseContext **s); - -#define VORBIS_FLAG_HEADER 0x00000001 -#define VORBIS_FLAG_COMMENT 0x00000002 -#define VORBIS_FLAG_SETUP 0x00000004 - -/** - * Get the duration for a Vorbis packet. - * - * If @p flags is @c NULL, - * special frames are considered invalid. - * - * @param s Vorbis parser context - * @param buf buffer containing a Vorbis frame - * @param buf_size size of the buffer - * @param flags flags for special frames - */ -int av_vorbis_parse_frame_flags(AVVorbisParseContext *s, const uint8_t *buf, - int buf_size, int *flags); - -/** - * Get the duration for a Vorbis packet. - * - * @param s Vorbis parser context - * @param buf buffer containing a Vorbis frame - * @param buf_size size of the buffer - */ -int av_vorbis_parse_frame(AVVorbisParseContext *s, const uint8_t *buf, - int buf_size); - -void av_vorbis_parse_reset(AVVorbisParseContext *s); - -#endif /* AVCODEC_VORBIS_PARSER_H */ diff --git a/Externals/ffmpeg/include/libavcodec/xvmc.h b/Externals/ffmpeg/include/libavcodec/xvmc.h deleted file mode 100644 index 465ee78d6e55..000000000000 --- a/Externals/ffmpeg/include/libavcodec/xvmc.h +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright (C) 2003 Ivan Kalvachev - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_XVMC_H -#define AVCODEC_XVMC_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_xvmc - * Public libavcodec XvMC header. - */ - -#include - -#include "libavutil/attributes.h" -#include "version.h" -#include "avcodec.h" - -/** - * @defgroup lavc_codec_hwaccel_xvmc XvMC - * @ingroup lavc_codec_hwaccel - * - * @{ - */ - -#define AV_XVMC_ID 0x1DC711C0 /**< special value to ensure that regular pixel routines haven't corrupted the struct - the number is 1337 speak for the letters IDCT MCo (motion compensation) */ - -struct attribute_deprecated xvmc_pix_fmt { - /** The field contains the special constant value AV_XVMC_ID. - It is used as a test that the application correctly uses the API, - and that there is no corruption caused by pixel routines. - - application - set during initialization - - libavcodec - unchanged - */ - int xvmc_id; - - /** Pointer to the block array allocated by XvMCCreateBlocks(). - The array has to be freed by XvMCDestroyBlocks(). - Each group of 64 values represents one data block of differential - pixel information (in MoCo mode) or coefficients for IDCT. - - application - set the pointer during initialization - - libavcodec - fills coefficients/pixel data into the array - */ - short* data_blocks; - - /** Pointer to the macroblock description array allocated by - XvMCCreateMacroBlocks() and freed by XvMCDestroyMacroBlocks(). - - application - set the pointer during initialization - - libavcodec - fills description data into the array - */ - XvMCMacroBlock* mv_blocks; - - /** Number of macroblock descriptions that can be stored in the mv_blocks - array. - - application - set during initialization - - libavcodec - unchanged - */ - int allocated_mv_blocks; - - /** Number of blocks that can be stored at once in the data_blocks array. - - application - set during initialization - - libavcodec - unchanged - */ - int allocated_data_blocks; - - /** Indicate that the hardware would interpret data_blocks as IDCT - coefficients and perform IDCT on them. - - application - set during initialization - - libavcodec - unchanged - */ - int idct; - - /** In MoCo mode it indicates that intra macroblocks are assumed to be in - unsigned format; same as the XVMC_INTRA_UNSIGNED flag. - - application - set during initialization - - libavcodec - unchanged - */ - int unsigned_intra; - - /** Pointer to the surface allocated by XvMCCreateSurface(). - It has to be freed by XvMCDestroySurface() on application exit. - It identifies the frame and its state on the video hardware. - - application - set during initialization - - libavcodec - unchanged - */ - XvMCSurface* p_surface; - -/** Set by the decoder before calling ff_draw_horiz_band(), - needed by the XvMCRenderSurface function. */ -//@{ - /** Pointer to the surface used as past reference - - application - unchanged - - libavcodec - set - */ - XvMCSurface* p_past_surface; - - /** Pointer to the surface used as future reference - - application - unchanged - - libavcodec - set - */ - XvMCSurface* p_future_surface; - - /** top/bottom field or frame - - application - unchanged - - libavcodec - set - */ - unsigned int picture_structure; - - /** XVMC_SECOND_FIELD - 1st or 2nd field in the sequence - - application - unchanged - - libavcodec - set - */ - unsigned int flags; -//}@ - - /** Number of macroblock descriptions in the mv_blocks array - that have already been passed to the hardware. - - application - zeroes it on get_buffer(). - A successful ff_draw_horiz_band() may increment it - with filled_mb_block_num or zero both. - - libavcodec - unchanged - */ - int start_mv_blocks_num; - - /** Number of new macroblock descriptions in the mv_blocks array (after - start_mv_blocks_num) that are filled by libavcodec and have to be - passed to the hardware. - - application - zeroes it on get_buffer() or after successful - ff_draw_horiz_band(). - - libavcodec - increment with one of each stored MB - */ - int filled_mv_blocks_num; - - /** Number of the next free data block; one data block consists of - 64 short values in the data_blocks array. - All blocks before this one have already been claimed by placing their - position into the corresponding block description structure field, - that are part of the mv_blocks array. - - application - zeroes it on get_buffer(). - A successful ff_draw_horiz_band() may zero it together - with start_mb_blocks_num. - - libavcodec - each decoded macroblock increases it by the number - of coded blocks it contains. - */ - int next_free_data_block_num; -}; - -/** - * @} - */ - -#endif /* AVCODEC_XVMC_H */ diff --git a/Externals/ffmpeg/include/libavformat/avformat.h b/Externals/ffmpeg/include/libavformat/avformat.h deleted file mode 100644 index c81a916d3098..000000000000 --- a/Externals/ffmpeg/include/libavformat/avformat.h +++ /dev/null @@ -1,2978 +0,0 @@ -/* - * copyright (c) 2001 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVFORMAT_AVFORMAT_H -#define AVFORMAT_AVFORMAT_H - -/** - * @file - * @ingroup libavf - * Main libavformat public API header - */ - -/** - * @defgroup libavf libavformat - * I/O and Muxing/Demuxing Library - * - * Libavformat (lavf) is a library for dealing with various media container - * formats. Its main two purposes are demuxing - i.e. splitting a media file - * into component streams, and the reverse process of muxing - writing supplied - * data in a specified container format. It also has an @ref lavf_io - * "I/O module" which supports a number of protocols for accessing the data (e.g. - * file, tcp, http and others). Before using lavf, you need to call - * av_register_all() to register all compiled muxers, demuxers and protocols. - * Unless you are absolutely sure you won't use libavformat's network - * capabilities, you should also call avformat_network_init(). - * - * A supported input format is described by an AVInputFormat struct, conversely - * an output format is described by AVOutputFormat. You can iterate over all - * registered input/output formats using the av_iformat_next() / - * av_oformat_next() functions. The protocols layer is not part of the public - * API, so you can only get the names of supported protocols with the - * avio_enum_protocols() function. - * - * Main lavf structure used for both muxing and demuxing is AVFormatContext, - * which exports all information about the file being read or written. As with - * most Libavformat structures, its size is not part of public ABI, so it cannot be - * allocated on stack or directly with av_malloc(). To create an - * AVFormatContext, use avformat_alloc_context() (some functions, like - * avformat_open_input() might do that for you). - * - * Most importantly an AVFormatContext contains: - * @li the @ref AVFormatContext.iformat "input" or @ref AVFormatContext.oformat - * "output" format. It is either autodetected or set by user for input; - * always set by user for output. - * @li an @ref AVFormatContext.streams "array" of AVStreams, which describe all - * elementary streams stored in the file. AVStreams are typically referred to - * using their index in this array. - * @li an @ref AVFormatContext.pb "I/O context". It is either opened by lavf or - * set by user for input, always set by user for output (unless you are dealing - * with an AVFMT_NOFILE format). - * - * @section lavf_options Passing options to (de)muxers - * It is possible to configure lavf muxers and demuxers using the @ref avoptions - * mechanism. Generic (format-independent) libavformat options are provided by - * AVFormatContext, they can be examined from a user program by calling - * av_opt_next() / av_opt_find() on an allocated AVFormatContext (or its AVClass - * from avformat_get_class()). Private (format-specific) options are provided by - * AVFormatContext.priv_data if and only if AVInputFormat.priv_class / - * AVOutputFormat.priv_class of the corresponding format struct is non-NULL. - * Further options may be provided by the @ref AVFormatContext.pb "I/O context", - * if its AVClass is non-NULL, and the protocols layer. See the discussion on - * nesting in @ref avoptions documentation to learn how to access those. - * - * @section urls - * URL strings in libavformat are made of a scheme/protocol, a ':', and a - * scheme specific string. URLs without a scheme and ':' used for local files - * are supported but deprecated. "file:" should be used for local files. - * - * It is important that the scheme string is not taken from untrusted - * sources without checks. - * - * Note that some schemes/protocols are quite powerful, allowing access to - * both local and remote files, parts of them, concatenations of them, local - * audio and video devices and so on. - * - * @{ - * - * @defgroup lavf_decoding Demuxing - * @{ - * Demuxers read a media file and split it into chunks of data (@em packets). A - * @ref AVPacket "packet" contains one or more encoded frames which belongs to a - * single elementary stream. In the lavf API this process is represented by the - * avformat_open_input() function for opening a file, av_read_frame() for - * reading a single packet and finally avformat_close_input(), which does the - * cleanup. - * - * @section lavf_decoding_open Opening a media file - * The minimum information required to open a file is its URL, which - * is passed to avformat_open_input(), as in the following code: - * @code - * const char *url = "file:in.mp3"; - * AVFormatContext *s = NULL; - * int ret = avformat_open_input(&s, url, NULL, NULL); - * if (ret < 0) - * abort(); - * @endcode - * The above code attempts to allocate an AVFormatContext, open the - * specified file (autodetecting the format) and read the header, exporting the - * information stored there into s. Some formats do not have a header or do not - * store enough information there, so it is recommended that you call the - * avformat_find_stream_info() function which tries to read and decode a few - * frames to find missing information. - * - * In some cases you might want to preallocate an AVFormatContext yourself with - * avformat_alloc_context() and do some tweaking on it before passing it to - * avformat_open_input(). One such case is when you want to use custom functions - * for reading input data instead of lavf internal I/O layer. - * To do that, create your own AVIOContext with avio_alloc_context(), passing - * your reading callbacks to it. Then set the @em pb field of your - * AVFormatContext to newly created AVIOContext. - * - * Since the format of the opened file is in general not known until after - * avformat_open_input() has returned, it is not possible to set demuxer private - * options on a preallocated context. Instead, the options should be passed to - * avformat_open_input() wrapped in an AVDictionary: - * @code - * AVDictionary *options = NULL; - * av_dict_set(&options, "video_size", "640x480", 0); - * av_dict_set(&options, "pixel_format", "rgb24", 0); - * - * if (avformat_open_input(&s, url, NULL, &options) < 0) - * abort(); - * av_dict_free(&options); - * @endcode - * This code passes the private options 'video_size' and 'pixel_format' to the - * demuxer. They would be necessary for e.g. the rawvideo demuxer, since it - * cannot know how to interpret raw video data otherwise. If the format turns - * out to be something different than raw video, those options will not be - * recognized by the demuxer and therefore will not be applied. Such unrecognized - * options are then returned in the options dictionary (recognized options are - * consumed). The calling program can handle such unrecognized options as it - * wishes, e.g. - * @code - * AVDictionaryEntry *e; - * if (e = av_dict_get(options, "", NULL, AV_DICT_IGNORE_SUFFIX)) { - * fprintf(stderr, "Option %s not recognized by the demuxer.\n", e->key); - * abort(); - * } - * @endcode - * - * After you have finished reading the file, you must close it with - * avformat_close_input(). It will free everything associated with the file. - * - * @section lavf_decoding_read Reading from an opened file - * Reading data from an opened AVFormatContext is done by repeatedly calling - * av_read_frame() on it. Each call, if successful, will return an AVPacket - * containing encoded data for one AVStream, identified by - * AVPacket.stream_index. This packet may be passed straight into the libavcodec - * decoding functions avcodec_send_packet() or avcodec_decode_subtitle2() if the - * caller wishes to decode the data. - * - * AVPacket.pts, AVPacket.dts and AVPacket.duration timing information will be - * set if known. They may also be unset (i.e. AV_NOPTS_VALUE for - * pts/dts, 0 for duration) if the stream does not provide them. The timing - * information will be in AVStream.time_base units, i.e. it has to be - * multiplied by the timebase to convert them to seconds. - * - * If AVPacket.buf is set on the returned packet, then the packet is - * allocated dynamically and the user may keep it indefinitely. - * Otherwise, if AVPacket.buf is NULL, the packet data is backed by a - * static storage somewhere inside the demuxer and the packet is only valid - * until the next av_read_frame() call or closing the file. If the caller - * requires a longer lifetime, av_dup_packet() will make an av_malloc()ed copy - * of it. - * In both cases, the packet must be freed with av_packet_unref() when it is no - * longer needed. - * - * @section lavf_decoding_seek Seeking - * @} - * - * @defgroup lavf_encoding Muxing - * @{ - * Muxers take encoded data in the form of @ref AVPacket "AVPackets" and write - * it into files or other output bytestreams in the specified container format. - * - * The main API functions for muxing are avformat_write_header() for writing the - * file header, av_write_frame() / av_interleaved_write_frame() for writing the - * packets and av_write_trailer() for finalizing the file. - * - * At the beginning of the muxing process, the caller must first call - * avformat_alloc_context() to create a muxing context. The caller then sets up - * the muxer by filling the various fields in this context: - * - * - The @ref AVFormatContext.oformat "oformat" field must be set to select the - * muxer that will be used. - * - Unless the format is of the AVFMT_NOFILE type, the @ref AVFormatContext.pb - * "pb" field must be set to an opened IO context, either returned from - * avio_open2() or a custom one. - * - Unless the format is of the AVFMT_NOSTREAMS type, at least one stream must - * be created with the avformat_new_stream() function. The caller should fill - * the @ref AVStream.codecpar "stream codec parameters" information, such as the - * codec @ref AVCodecParameters.codec_type "type", @ref AVCodecParameters.codec_id - * "id" and other parameters (e.g. width / height, the pixel or sample format, - * etc.) as known. The @ref AVStream.time_base "stream timebase" should - * be set to the timebase that the caller desires to use for this stream (note - * that the timebase actually used by the muxer can be different, as will be - * described later). - * - It is advised to manually initialize only the relevant fields in - * AVCodecParameters, rather than using @ref avcodec_parameters_copy() during - * remuxing: there is no guarantee that the codec context values remain valid - * for both input and output format contexts. - * - The caller may fill in additional information, such as @ref - * AVFormatContext.metadata "global" or @ref AVStream.metadata "per-stream" - * metadata, @ref AVFormatContext.chapters "chapters", @ref - * AVFormatContext.programs "programs", etc. as described in the - * AVFormatContext documentation. Whether such information will actually be - * stored in the output depends on what the container format and the muxer - * support. - * - * When the muxing context is fully set up, the caller must call - * avformat_write_header() to initialize the muxer internals and write the file - * header. Whether anything actually is written to the IO context at this step - * depends on the muxer, but this function must always be called. Any muxer - * private options must be passed in the options parameter to this function. - * - * The data is then sent to the muxer by repeatedly calling av_write_frame() or - * av_interleaved_write_frame() (consult those functions' documentation for - * discussion on the difference between them; only one of them may be used with - * a single muxing context, they should not be mixed). Do note that the timing - * information on the packets sent to the muxer must be in the corresponding - * AVStream's timebase. That timebase is set by the muxer (in the - * avformat_write_header() step) and may be different from the timebase - * requested by the caller. - * - * Once all the data has been written, the caller must call av_write_trailer() - * to flush any buffered packets and finalize the output file, then close the IO - * context (if any) and finally free the muxing context with - * avformat_free_context(). - * @} - * - * @defgroup lavf_io I/O Read/Write - * @{ - * @section lavf_io_dirlist Directory listing - * The directory listing API makes it possible to list files on remote servers. - * - * Some of possible use cases: - * - an "open file" dialog to choose files from a remote location, - * - a recursive media finder providing a player with an ability to play all - * files from a given directory. - * - * @subsection lavf_io_dirlist_open Opening a directory - * At first, a directory needs to be opened by calling avio_open_dir() - * supplied with a URL and, optionally, ::AVDictionary containing - * protocol-specific parameters. The function returns zero or positive - * integer and allocates AVIODirContext on success. - * - * @code - * AVIODirContext *ctx = NULL; - * if (avio_open_dir(&ctx, "smb://example.com/some_dir", NULL) < 0) { - * fprintf(stderr, "Cannot open directory.\n"); - * abort(); - * } - * @endcode - * - * This code tries to open a sample directory using smb protocol without - * any additional parameters. - * - * @subsection lavf_io_dirlist_read Reading entries - * Each directory's entry (i.e. file, another directory, anything else - * within ::AVIODirEntryType) is represented by AVIODirEntry. - * Reading consecutive entries from an opened AVIODirContext is done by - * repeatedly calling avio_read_dir() on it. Each call returns zero or - * positive integer if successful. Reading can be stopped right after the - * NULL entry has been read -- it means there are no entries left to be - * read. The following code reads all entries from a directory associated - * with ctx and prints their names to standard output. - * @code - * AVIODirEntry *entry = NULL; - * for (;;) { - * if (avio_read_dir(ctx, &entry) < 0) { - * fprintf(stderr, "Cannot list directory.\n"); - * abort(); - * } - * if (!entry) - * break; - * printf("%s\n", entry->name); - * avio_free_directory_entry(&entry); - * } - * @endcode - * @} - * - * @defgroup lavf_codec Demuxers - * @{ - * @defgroup lavf_codec_native Native Demuxers - * @{ - * @} - * @defgroup lavf_codec_wrappers External library wrappers - * @{ - * @} - * @} - * @defgroup lavf_protos I/O Protocols - * @{ - * @} - * @defgroup lavf_internal Internal - * @{ - * @} - * @} - */ - -#include -#include /* FILE */ -#include "libavcodec/avcodec.h" -#include "libavutil/dict.h" -#include "libavutil/log.h" - -#include "avio.h" -#include "libavformat/version.h" - -struct AVFormatContext; - -struct AVDeviceInfoList; -struct AVDeviceCapabilitiesQuery; - -/** - * @defgroup metadata_api Public Metadata API - * @{ - * @ingroup libavf - * The metadata API allows libavformat to export metadata tags to a client - * application when demuxing. Conversely it allows a client application to - * set metadata when muxing. - * - * Metadata is exported or set as pairs of key/value strings in the 'metadata' - * fields of the AVFormatContext, AVStream, AVChapter and AVProgram structs - * using the @ref lavu_dict "AVDictionary" API. Like all strings in FFmpeg, - * metadata is assumed to be UTF-8 encoded Unicode. Note that metadata - * exported by demuxers isn't checked to be valid UTF-8 in most cases. - * - * Important concepts to keep in mind: - * - Keys are unique; there can never be 2 tags with the same key. This is - * also meant semantically, i.e., a demuxer should not knowingly produce - * several keys that are literally different but semantically identical. - * E.g., key=Author5, key=Author6. In this example, all authors must be - * placed in the same tag. - * - Metadata is flat, not hierarchical; there are no subtags. If you - * want to store, e.g., the email address of the child of producer Alice - * and actor Bob, that could have key=alice_and_bobs_childs_email_address. - * - Several modifiers can be applied to the tag name. This is done by - * appending a dash character ('-') and the modifier name in the order - * they appear in the list below -- e.g. foo-eng-sort, not foo-sort-eng. - * - language -- a tag whose value is localized for a particular language - * is appended with the ISO 639-2/B 3-letter language code. - * For example: Author-ger=Michael, Author-eng=Mike - * The original/default language is in the unqualified "Author" tag. - * A demuxer should set a default if it sets any translated tag. - * - sorting -- a modified version of a tag that should be used for - * sorting will have '-sort' appended. E.g. artist="The Beatles", - * artist-sort="Beatles, The". - * - Some protocols and demuxers support metadata updates. After a successful - * call to av_read_packet(), AVFormatContext.event_flags or AVStream.event_flags - * will be updated to indicate if metadata changed. In order to detect metadata - * changes on a stream, you need to loop through all streams in the AVFormatContext - * and check their individual event_flags. - * - * - Demuxers attempt to export metadata in a generic format, however tags - * with no generic equivalents are left as they are stored in the container. - * Follows a list of generic tag names: - * - @verbatim - album -- name of the set this work belongs to - album_artist -- main creator of the set/album, if different from artist. - e.g. "Various Artists" for compilation albums. - artist -- main creator of the work - comment -- any additional description of the file. - composer -- who composed the work, if different from artist. - copyright -- name of copyright holder. - creation_time-- date when the file was created, preferably in ISO 8601. - date -- date when the work was created, preferably in ISO 8601. - disc -- number of a subset, e.g. disc in a multi-disc collection. - encoder -- name/settings of the software/hardware that produced the file. - encoded_by -- person/group who created the file. - filename -- original name of the file. - genre -- . - language -- main language in which the work is performed, preferably - in ISO 639-2 format. Multiple languages can be specified by - separating them with commas. - performer -- artist who performed the work, if different from artist. - E.g for "Also sprach Zarathustra", artist would be "Richard - Strauss" and performer "London Philharmonic Orchestra". - publisher -- name of the label/publisher. - service_name -- name of the service in broadcasting (channel name). - service_provider -- name of the service provider in broadcasting. - title -- name of the work. - track -- number of this work in the set, can be in form current/total. - variant_bitrate -- the total bitrate of the bitrate variant that the current stream is part of - @endverbatim - * - * Look in the examples section for an application example how to use the Metadata API. - * - * @} - */ - -/* packet functions */ - - -/** - * Allocate and read the payload of a packet and initialize its - * fields with default values. - * - * @param s associated IO context - * @param pkt packet - * @param size desired payload size - * @return >0 (read size) if OK, AVERROR_xxx otherwise - */ -int av_get_packet(AVIOContext *s, AVPacket *pkt, int size); - - -/** - * Read data and append it to the current content of the AVPacket. - * If pkt->size is 0 this is identical to av_get_packet. - * Note that this uses av_grow_packet and thus involves a realloc - * which is inefficient. Thus this function should only be used - * when there is no reasonable way to know (an upper bound of) - * the final size. - * - * @param s associated IO context - * @param pkt packet - * @param size amount of data to read - * @return >0 (read size) if OK, AVERROR_xxx otherwise, previous data - * will not be lost even if an error occurs. - */ -int av_append_packet(AVIOContext *s, AVPacket *pkt, int size); - -#if FF_API_LAVF_FRAC -/*************************************************/ -/* fractional numbers for exact pts handling */ - -/** - * The exact value of the fractional number is: 'val + num / den'. - * num is assumed to be 0 <= num < den. - */ -typedef struct AVFrac { - int64_t val, num, den; -} AVFrac; -#endif - -/*************************************************/ -/* input/output formats */ - -struct AVCodecTag; - -/** - * This structure contains the data a format has to probe a file. - */ -typedef struct AVProbeData { - const char *filename; - unsigned char *buf; /**< Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero. */ - int buf_size; /**< Size of buf except extra allocated bytes */ - const char *mime_type; /**< mime_type, when known. */ -} AVProbeData; - -#define AVPROBE_SCORE_RETRY (AVPROBE_SCORE_MAX/4) -#define AVPROBE_SCORE_STREAM_RETRY (AVPROBE_SCORE_MAX/4-1) - -#define AVPROBE_SCORE_EXTENSION 50 ///< score for file extension -#define AVPROBE_SCORE_MIME 75 ///< score for file mime type -#define AVPROBE_SCORE_MAX 100 ///< maximum score - -#define AVPROBE_PADDING_SIZE 32 ///< extra allocated bytes at the end of the probe buffer - -/// Demuxer will use avio_open, no opened file should be provided by the caller. -#define AVFMT_NOFILE 0x0001 -#define AVFMT_NEEDNUMBER 0x0002 /**< Needs '%d' in filename. */ -#define AVFMT_SHOW_IDS 0x0008 /**< Show format stream IDs numbers. */ -#if FF_API_LAVF_FMT_RAWPICTURE -#define AVFMT_RAWPICTURE 0x0020 /**< Format wants AVPicture structure for - raw picture data. @deprecated Not used anymore */ -#endif -#define AVFMT_GLOBALHEADER 0x0040 /**< Format wants global header. */ -#define AVFMT_NOTIMESTAMPS 0x0080 /**< Format does not need / have any timestamps. */ -#define AVFMT_GENERIC_INDEX 0x0100 /**< Use generic index building code. */ -#define AVFMT_TS_DISCONT 0x0200 /**< Format allows timestamp discontinuities. Note, muxers always require valid (monotone) timestamps */ -#define AVFMT_VARIABLE_FPS 0x0400 /**< Format allows variable fps. */ -#define AVFMT_NODIMENSIONS 0x0800 /**< Format does not need width/height */ -#define AVFMT_NOSTREAMS 0x1000 /**< Format does not require any streams */ -#define AVFMT_NOBINSEARCH 0x2000 /**< Format does not allow to fall back on binary search via read_timestamp */ -#define AVFMT_NOGENSEARCH 0x4000 /**< Format does not allow to fall back on generic search */ -#define AVFMT_NO_BYTE_SEEK 0x8000 /**< Format does not allow seeking by bytes */ -#define AVFMT_ALLOW_FLUSH 0x10000 /**< Format allows flushing. If not set, the muxer will not receive a NULL packet in the write_packet function. */ -#define AVFMT_TS_NONSTRICT 0x20000 /**< Format does not require strictly - increasing timestamps, but they must - still be monotonic */ -#define AVFMT_TS_NEGATIVE 0x40000 /**< Format allows muxing negative - timestamps. If not set the timestamp - will be shifted in av_write_frame and - av_interleaved_write_frame so they - start from 0. - The user or muxer can override this through - AVFormatContext.avoid_negative_ts - */ - -#define AVFMT_SEEK_TO_PTS 0x4000000 /**< Seeking is based on PTS */ - -/** - * @addtogroup lavf_encoding - * @{ - */ -typedef struct AVOutputFormat { - const char *name; - /** - * Descriptive name for the format, meant to be more human-readable - * than name. You should use the NULL_IF_CONFIG_SMALL() macro - * to define it. - */ - const char *long_name; - const char *mime_type; - const char *extensions; /**< comma-separated filename extensions */ - /* output support */ - enum AVCodecID audio_codec; /**< default audio codec */ - enum AVCodecID video_codec; /**< default video codec */ - enum AVCodecID subtitle_codec; /**< default subtitle codec */ - /** - * can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, - * AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS, - * AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH, - * AVFMT_TS_NONSTRICT, AVFMT_TS_NEGATIVE - */ - int flags; - - /** - * List of supported codec_id-codec_tag pairs, ordered by "better - * choice first". The arrays are all terminated by AV_CODEC_ID_NONE. - */ - const struct AVCodecTag * const *codec_tag; - - - const AVClass *priv_class; ///< AVClass for the private context - - /***************************************************************** - * No fields below this line are part of the public API. They - * may not be used outside of libavformat and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - struct AVOutputFormat *next; - /** - * size of private data so that it can be allocated in the wrapper - */ - int priv_data_size; - - int (*write_header)(struct AVFormatContext *); - /** - * Write a packet. If AVFMT_ALLOW_FLUSH is set in flags, - * pkt can be NULL in order to flush data buffered in the muxer. - * When flushing, return 0 if there still is more data to flush, - * or 1 if everything was flushed and there is no more buffered - * data. - */ - int (*write_packet)(struct AVFormatContext *, AVPacket *pkt); - int (*write_trailer)(struct AVFormatContext *); - /** - * Currently only used to set pixel format if not YUV420P. - */ - int (*interleave_packet)(struct AVFormatContext *, AVPacket *out, - AVPacket *in, int flush); - /** - * Test if the given codec can be stored in this container. - * - * @return 1 if the codec is supported, 0 if it is not. - * A negative number if unknown. - * MKTAG('A', 'P', 'I', 'C') if the codec is only supported as AV_DISPOSITION_ATTACHED_PIC - */ - int (*query_codec)(enum AVCodecID id, int std_compliance); - - void (*get_output_timestamp)(struct AVFormatContext *s, int stream, - int64_t *dts, int64_t *wall); - /** - * Allows sending messages from application to device. - */ - int (*control_message)(struct AVFormatContext *s, int type, - void *data, size_t data_size); - - /** - * Write an uncoded AVFrame. - * - * See av_write_uncoded_frame() for details. - * - * The library will free *frame afterwards, but the muxer can prevent it - * by setting the pointer to NULL. - */ - int (*write_uncoded_frame)(struct AVFormatContext *, int stream_index, - AVFrame **frame, unsigned flags); - /** - * Returns device list with it properties. - * @see avdevice_list_devices() for more details. - */ - int (*get_device_list)(struct AVFormatContext *s, struct AVDeviceInfoList *device_list); - /** - * Initialize device capabilities submodule. - * @see avdevice_capabilities_create() for more details. - */ - int (*create_device_capabilities)(struct AVFormatContext *s, struct AVDeviceCapabilitiesQuery *caps); - /** - * Free device capabilities submodule. - * @see avdevice_capabilities_free() for more details. - */ - int (*free_device_capabilities)(struct AVFormatContext *s, struct AVDeviceCapabilitiesQuery *caps); - enum AVCodecID data_codec; /**< default data codec */ - /** - * Initialize format. May allocate data here, and set any AVFormatContext or - * AVStream parameters that need to be set before packets are sent. - * This method must not write output. - * - * Return 0 if streams were fully configured, 1 if not, negative AVERROR on failure - * - * Any allocations made here must be freed in deinit(). - */ - int (*init)(struct AVFormatContext *); - /** - * Deinitialize format. If present, this is called whenever the muxer is being - * destroyed, regardless of whether or not the header has been written. - * - * If a trailer is being written, this is called after write_trailer(). - * - * This is called if init() fails as well. - */ - void (*deinit)(struct AVFormatContext *); - /** - * Set up any necessary bitstream filtering and extract any extra data needed - * for the global header. - * Return 0 if more packets from this stream must be checked; 1 if not. - */ - int (*check_bitstream)(struct AVFormatContext *, const AVPacket *pkt); -} AVOutputFormat; -/** - * @} - */ - -/** - * @addtogroup lavf_decoding - * @{ - */ -typedef struct AVInputFormat { - /** - * A comma separated list of short names for the format. New names - * may be appended with a minor bump. - */ - const char *name; - - /** - * Descriptive name for the format, meant to be more human-readable - * than name. You should use the NULL_IF_CONFIG_SMALL() macro - * to define it. - */ - const char *long_name; - - /** - * Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS, - * AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH, - * AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS. - */ - int flags; - - /** - * If extensions are defined, then no probe is done. You should - * usually not use extension format guessing because it is not - * reliable enough - */ - const char *extensions; - - const struct AVCodecTag * const *codec_tag; - - const AVClass *priv_class; ///< AVClass for the private context - - /** - * Comma-separated list of mime types. - * It is used check for matching mime types while probing. - * @see av_probe_input_format2 - */ - const char *mime_type; - - /***************************************************************** - * No fields below this line are part of the public API. They - * may not be used outside of libavformat and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - struct AVInputFormat *next; - - /** - * Raw demuxers store their codec ID here. - */ - int raw_codec_id; - - /** - * Size of private data so that it can be allocated in the wrapper. - */ - int priv_data_size; - - /** - * Tell if a given file has a chance of being parsed as this format. - * The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes - * big so you do not have to check for that unless you need more. - */ - int (*read_probe)(AVProbeData *); - - /** - * Read the format header and initialize the AVFormatContext - * structure. Return 0 if OK. 'avformat_new_stream' should be - * called to create new streams. - */ - int (*read_header)(struct AVFormatContext *); - - /** - * Read one packet and put it in 'pkt'. pts and flags are also - * set. 'avformat_new_stream' can be called only if the flag - * AVFMTCTX_NOHEADER is used and only in the calling thread (not in a - * background thread). - * @return 0 on success, < 0 on error. - * When returning an error, pkt must not have been allocated - * or must be freed before returning - */ - int (*read_packet)(struct AVFormatContext *, AVPacket *pkt); - - /** - * Close the stream. The AVFormatContext and AVStreams are not - * freed by this function - */ - int (*read_close)(struct AVFormatContext *); - - /** - * Seek to a given timestamp relative to the frames in - * stream component stream_index. - * @param stream_index Must not be -1. - * @param flags Selects which direction should be preferred if no exact - * match is available. - * @return >= 0 on success (but not necessarily the new offset) - */ - int (*read_seek)(struct AVFormatContext *, - int stream_index, int64_t timestamp, int flags); - - /** - * Get the next timestamp in stream[stream_index].time_base units. - * @return the timestamp or AV_NOPTS_VALUE if an error occurred - */ - int64_t (*read_timestamp)(struct AVFormatContext *s, int stream_index, - int64_t *pos, int64_t pos_limit); - - /** - * Start/resume playing - only meaningful if using a network-based format - * (RTSP). - */ - int (*read_play)(struct AVFormatContext *); - - /** - * Pause playing - only meaningful if using a network-based format - * (RTSP). - */ - int (*read_pause)(struct AVFormatContext *); - - /** - * Seek to timestamp ts. - * Seeking will be done so that the point from which all active streams - * can be presented successfully will be closest to ts and within min/max_ts. - * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. - */ - int (*read_seek2)(struct AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags); - - /** - * Returns device list with it properties. - * @see avdevice_list_devices() for more details. - */ - int (*get_device_list)(struct AVFormatContext *s, struct AVDeviceInfoList *device_list); - - /** - * Initialize device capabilities submodule. - * @see avdevice_capabilities_create() for more details. - */ - int (*create_device_capabilities)(struct AVFormatContext *s, struct AVDeviceCapabilitiesQuery *caps); - - /** - * Free device capabilities submodule. - * @see avdevice_capabilities_free() for more details. - */ - int (*free_device_capabilities)(struct AVFormatContext *s, struct AVDeviceCapabilitiesQuery *caps); -} AVInputFormat; -/** - * @} - */ - -enum AVStreamParseType { - AVSTREAM_PARSE_NONE, - AVSTREAM_PARSE_FULL, /**< full parsing and repack */ - AVSTREAM_PARSE_HEADERS, /**< Only parse headers, do not repack. */ - AVSTREAM_PARSE_TIMESTAMPS, /**< full parsing and interpolation of timestamps for frames not starting on a packet boundary */ - AVSTREAM_PARSE_FULL_ONCE, /**< full parsing and repack of the first frame only, only implemented for H.264 currently */ - AVSTREAM_PARSE_FULL_RAW=MKTAG(0,'R','A','W'), /**< full parsing and repack with timestamp and position generation by parser for raw - this assumes that each packet in the file contains no demuxer level headers and - just codec level data, otherwise position generation would fail */ -}; - -typedef struct AVIndexEntry { - int64_t pos; - int64_t timestamp; /**< - * Timestamp in AVStream.time_base units, preferably the time from which on correctly decoded frames are available - * when seeking to this entry. That means preferable PTS on keyframe based formats. - * But demuxers can choose to store a different timestamp, if it is more convenient for the implementation or nothing better - * is known - */ -#define AVINDEX_KEYFRAME 0x0001 -#define AVINDEX_DISCARD_FRAME 0x0002 /** - * Flag is used to indicate which frame should be discarded after decoding. - */ - int flags:2; - int size:30; //Yeah, trying to keep the size of this small to reduce memory requirements (it is 24 vs. 32 bytes due to possible 8-byte alignment). - int min_distance; /**< Minimum distance between this and the previous keyframe, used to avoid unneeded searching. */ -} AVIndexEntry; - -#define AV_DISPOSITION_DEFAULT 0x0001 -#define AV_DISPOSITION_DUB 0x0002 -#define AV_DISPOSITION_ORIGINAL 0x0004 -#define AV_DISPOSITION_COMMENT 0x0008 -#define AV_DISPOSITION_LYRICS 0x0010 -#define AV_DISPOSITION_KARAOKE 0x0020 - -/** - * Track should be used during playback by default. - * Useful for subtitle track that should be displayed - * even when user did not explicitly ask for subtitles. - */ -#define AV_DISPOSITION_FORCED 0x0040 -#define AV_DISPOSITION_HEARING_IMPAIRED 0x0080 /**< stream for hearing impaired audiences */ -#define AV_DISPOSITION_VISUAL_IMPAIRED 0x0100 /**< stream for visual impaired audiences */ -#define AV_DISPOSITION_CLEAN_EFFECTS 0x0200 /**< stream without voice */ -/** - * The stream is stored in the file as an attached picture/"cover art" (e.g. - * APIC frame in ID3v2). The first (usually only) packet associated with it - * will be returned among the first few packets read from the file unless - * seeking takes place. It can also be accessed at any time in - * AVStream.attached_pic. - */ -#define AV_DISPOSITION_ATTACHED_PIC 0x0400 -/** - * The stream is sparse, and contains thumbnail images, often corresponding - * to chapter markers. Only ever used with AV_DISPOSITION_ATTACHED_PIC. - */ -#define AV_DISPOSITION_TIMED_THUMBNAILS 0x0800 - -typedef struct AVStreamInternal AVStreamInternal; - -/** - * To specify text track kind (different from subtitles default). - */ -#define AV_DISPOSITION_CAPTIONS 0x10000 -#define AV_DISPOSITION_DESCRIPTIONS 0x20000 -#define AV_DISPOSITION_METADATA 0x40000 - -/** - * Options for behavior on timestamp wrap detection. - */ -#define AV_PTS_WRAP_IGNORE 0 ///< ignore the wrap -#define AV_PTS_WRAP_ADD_OFFSET 1 ///< add the format specific offset on wrap detection -#define AV_PTS_WRAP_SUB_OFFSET -1 ///< subtract the format specific offset on wrap detection - -/** - * Stream structure. - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * sizeof(AVStream) must not be used outside libav*. - */ -typedef struct AVStream { - int index; /**< stream index in AVFormatContext */ - /** - * Format-specific stream ID. - * decoding: set by libavformat - * encoding: set by the user, replaced by libavformat if left unset - */ - int id; -#if FF_API_LAVF_AVCTX - /** - * @deprecated use the codecpar struct instead - */ - attribute_deprecated - AVCodecContext *codec; -#endif - void *priv_data; - -#if FF_API_LAVF_FRAC - /** - * @deprecated this field is unused - */ - attribute_deprecated - struct AVFrac pts; -#endif - - /** - * This is the fundamental unit of time (in seconds) in terms - * of which frame timestamps are represented. - * - * decoding: set by libavformat - * encoding: May be set by the caller before avformat_write_header() to - * provide a hint to the muxer about the desired timebase. In - * avformat_write_header(), the muxer will overwrite this field - * with the timebase that will actually be used for the timestamps - * written into the file (which may or may not be related to the - * user-provided one, depending on the format). - */ - AVRational time_base; - - /** - * Decoding: pts of the first frame of the stream in presentation order, in stream time base. - * Only set this if you are absolutely 100% sure that the value you set - * it to really is the pts of the first frame. - * This may be undefined (AV_NOPTS_VALUE). - * @note The ASF header does NOT contain a correct start_time the ASF - * demuxer must NOT set this. - */ - int64_t start_time; - - /** - * Decoding: duration of the stream, in stream time base. - * If a source file does not specify a duration, but does specify - * a bitrate, this value will be estimated from bitrate and file size. - */ - int64_t duration; - - int64_t nb_frames; ///< number of frames in this stream if known or 0 - - int disposition; /**< AV_DISPOSITION_* bit field */ - - enum AVDiscard discard; ///< Selects which packets can be discarded at will and do not need to be demuxed. - - /** - * sample aspect ratio (0 if unknown) - * - encoding: Set by user. - * - decoding: Set by libavformat. - */ - AVRational sample_aspect_ratio; - - AVDictionary *metadata; - - /** - * Average framerate - * - * - demuxing: May be set by libavformat when creating the stream or in - * avformat_find_stream_info(). - * - muxing: May be set by the caller before avformat_write_header(). - */ - AVRational avg_frame_rate; - - /** - * For streams with AV_DISPOSITION_ATTACHED_PIC disposition, this packet - * will contain the attached picture. - * - * decoding: set by libavformat, must not be modified by the caller. - * encoding: unused - */ - AVPacket attached_pic; - - /** - * An array of side data that applies to the whole stream (i.e. the - * container does not allow it to change between packets). - * - * There may be no overlap between the side data in this array and side data - * in the packets. I.e. a given side data is either exported by the muxer - * (demuxing) / set by the caller (muxing) in this array, then it never - * appears in the packets, or the side data is exported / sent through - * the packets (always in the first packet where the value becomes known or - * changes), then it does not appear in this array. - * - * - demuxing: Set by libavformat when the stream is created. - * - muxing: May be set by the caller before avformat_write_header(). - * - * Freed by libavformat in avformat_free_context(). - * - * @see av_format_inject_global_side_data() - */ - AVPacketSideData *side_data; - /** - * The number of elements in the AVStream.side_data array. - */ - int nb_side_data; - - /** - * Flags for the user to detect events happening on the stream. Flags must - * be cleared by the user once the event has been handled. - * A combination of AVSTREAM_EVENT_FLAG_*. - */ - int event_flags; -#define AVSTREAM_EVENT_FLAG_METADATA_UPDATED 0x0001 ///< The call resulted in updated metadata. - - /***************************************************************** - * All fields below this line are not part of the public API. They - * may not be used outside of libavformat and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - - /** - * Stream information used internally by av_find_stream_info() - */ -#define MAX_STD_TIMEBASES (30*12+30+3+6) - struct { - int64_t last_dts; - int64_t duration_gcd; - int duration_count; - int64_t rfps_duration_sum; - double (*duration_error)[2][MAX_STD_TIMEBASES]; - int64_t codec_info_duration; - int64_t codec_info_duration_fields; - - /** - * 0 -> decoder has not been searched for yet. - * >0 -> decoder found - * <0 -> decoder with codec_id == -found_decoder has not been found - */ - int found_decoder; - - int64_t last_duration; - - /** - * Those are used for average framerate estimation. - */ - int64_t fps_first_dts; - int fps_first_dts_idx; - int64_t fps_last_dts; - int fps_last_dts_idx; - - } *info; - - int pts_wrap_bits; /**< number of bits in pts (used for wrapping control) */ - - // Timestamp generation support: - /** - * Timestamp corresponding to the last dts sync point. - * - * Initialized when AVCodecParserContext.dts_sync_point >= 0 and - * a DTS is received from the underlying container. Otherwise set to - * AV_NOPTS_VALUE by default. - */ - int64_t first_dts; - int64_t cur_dts; - int64_t last_IP_pts; - int last_IP_duration; - - /** - * Number of packets to buffer for codec probing - */ - int probe_packets; - - /** - * Number of frames that have been demuxed during av_find_stream_info() - */ - int codec_info_nb_frames; - - /* av_read_frame() support */ - enum AVStreamParseType need_parsing; - struct AVCodecParserContext *parser; - - /** - * last packet in packet_buffer for this stream when muxing. - */ - struct AVPacketList *last_in_packet_buffer; - AVProbeData probe_data; -#define MAX_REORDER_DELAY 16 - int64_t pts_buffer[MAX_REORDER_DELAY+1]; - - AVIndexEntry *index_entries; /**< Only used if the format does not - support seeking natively. */ - int nb_index_entries; - unsigned int index_entries_allocated_size; - - /** - * Real base framerate of the stream. - * This is the lowest framerate with which all timestamps can be - * represented accurately (it is the least common multiple of all - * framerates in the stream). Note, this value is just a guess! - * For example, if the time base is 1/90000 and all frames have either - * approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1. - * - * Code outside avformat should access this field using: - * av_stream_get/set_r_frame_rate(stream) - */ - AVRational r_frame_rate; - - /** - * Stream Identifier - * This is the MPEG-TS stream identifier +1 - * 0 means unknown - */ - int stream_identifier; - - int64_t interleaver_chunk_size; - int64_t interleaver_chunk_duration; - - /** - * stream probing state - * -1 -> probing finished - * 0 -> no probing requested - * rest -> perform probing with request_probe being the minimum score to accept. - * NOT PART OF PUBLIC API - */ - int request_probe; - /** - * Indicates that everything up to the next keyframe - * should be discarded. - */ - int skip_to_keyframe; - - /** - * Number of samples to skip at the start of the frame decoded from the next packet. - */ - int skip_samples; - - /** - * If not 0, the number of samples that should be skipped from the start of - * the stream (the samples are removed from packets with pts==0, which also - * assumes negative timestamps do not happen). - * Intended for use with formats such as mp3 with ad-hoc gapless audio - * support. - */ - int64_t start_skip_samples; - - /** - * If not 0, the first audio sample that should be discarded from the stream. - * This is broken by design (needs global sample count), but can't be - * avoided for broken by design formats such as mp3 with ad-hoc gapless - * audio support. - */ - int64_t first_discard_sample; - - /** - * The sample after last sample that is intended to be discarded after - * first_discard_sample. Works on frame boundaries only. Used to prevent - * early EOF if the gapless info is broken (considered concatenated mp3s). - */ - int64_t last_discard_sample; - - /** - * Number of internally decoded frames, used internally in libavformat, do not access - * its lifetime differs from info which is why it is not in that structure. - */ - int nb_decoded_frames; - - /** - * Timestamp offset added to timestamps before muxing - * NOT PART OF PUBLIC API - */ - int64_t mux_ts_offset; - - /** - * Internal data to check for wrapping of the time stamp - */ - int64_t pts_wrap_reference; - - /** - * Options for behavior, when a wrap is detected. - * - * Defined by AV_PTS_WRAP_ values. - * - * If correction is enabled, there are two possibilities: - * If the first time stamp is near the wrap point, the wrap offset - * will be subtracted, which will create negative time stamps. - * Otherwise the offset will be added. - */ - int pts_wrap_behavior; - - /** - * Internal data to prevent doing update_initial_durations() twice - */ - int update_initial_durations_done; - - /** - * Internal data to generate dts from pts - */ - int64_t pts_reorder_error[MAX_REORDER_DELAY+1]; - uint8_t pts_reorder_error_count[MAX_REORDER_DELAY+1]; - - /** - * Internal data to analyze DTS and detect faulty mpeg streams - */ - int64_t last_dts_for_order_check; - uint8_t dts_ordered; - uint8_t dts_misordered; - - /** - * Internal data to inject global side data - */ - int inject_global_side_data; - - /** - * String containing paris of key and values describing recommended encoder configuration. - * Paris are separated by ','. - * Keys are separated from values by '='. - */ - char *recommended_encoder_configuration; - - /** - * display aspect ratio (0 if unknown) - * - encoding: unused - * - decoding: Set by libavformat to calculate sample_aspect_ratio internally - */ - AVRational display_aspect_ratio; - - struct FFFrac *priv_pts; - - /** - * An opaque field for libavformat internal usage. - * Must not be accessed in any way by callers. - */ - AVStreamInternal *internal; - - /* - * Codec parameters associated with this stream. Allocated and freed by - * libavformat in avformat_new_stream() and avformat_free_context() - * respectively. - * - * - demuxing: filled by libavformat on stream creation or in - * avformat_find_stream_info() - * - muxing: filled by the caller before avformat_write_header() - */ - AVCodecParameters *codecpar; -} AVStream; - -AVRational av_stream_get_r_frame_rate(const AVStream *s); -void av_stream_set_r_frame_rate(AVStream *s, AVRational r); -struct AVCodecParserContext *av_stream_get_parser(const AVStream *s); -char* av_stream_get_recommended_encoder_configuration(const AVStream *s); -void av_stream_set_recommended_encoder_configuration(AVStream *s, char *configuration); - -/** - * Returns the pts of the last muxed packet + its duration - * - * the retuned value is undefined when used with a demuxer. - */ -int64_t av_stream_get_end_pts(const AVStream *st); - -#define AV_PROGRAM_RUNNING 1 - -/** - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * sizeof(AVProgram) must not be used outside libav*. - */ -typedef struct AVProgram { - int id; - int flags; - enum AVDiscard discard; ///< selects which program to discard and which to feed to the caller - unsigned int *stream_index; - unsigned int nb_stream_indexes; - AVDictionary *metadata; - - int program_num; - int pmt_pid; - int pcr_pid; - - /***************************************************************** - * All fields below this line are not part of the public API. They - * may not be used outside of libavformat and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - int64_t start_time; - int64_t end_time; - - int64_t pts_wrap_reference; ///< reference dts for wrap detection - int pts_wrap_behavior; ///< behavior on wrap detection -} AVProgram; - -#define AVFMTCTX_NOHEADER 0x0001 /**< signal that no header is present - (streams are added dynamically) */ - -typedef struct AVChapter { - int id; ///< unique ID to identify the chapter - AVRational time_base; ///< time base in which the start/end timestamps are specified - int64_t start, end; ///< chapter start/end time in time_base units - AVDictionary *metadata; -} AVChapter; - - -/** - * Callback used by devices to communicate with application. - */ -typedef int (*av_format_control_message)(struct AVFormatContext *s, int type, - void *data, size_t data_size); - -typedef int (*AVOpenCallback)(struct AVFormatContext *s, AVIOContext **pb, const char *url, int flags, - const AVIOInterruptCB *int_cb, AVDictionary **options); - -/** - * The duration of a video can be estimated through various ways, and this enum can be used - * to know how the duration was estimated. - */ -enum AVDurationEstimationMethod { - AVFMT_DURATION_FROM_PTS, ///< Duration accurately estimated from PTSes - AVFMT_DURATION_FROM_STREAM, ///< Duration estimated from a stream with a known duration - AVFMT_DURATION_FROM_BITRATE ///< Duration estimated from bitrate (less accurate) -}; - -typedef struct AVFormatInternal AVFormatInternal; - -/** - * Format I/O context. - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * sizeof(AVFormatContext) must not be used outside libav*, use - * avformat_alloc_context() to create an AVFormatContext. - * - * Fields can be accessed through AVOptions (av_opt*), - * the name string used matches the associated command line parameter name and - * can be found in libavformat/options_table.h. - * The AVOption/command line parameter names differ in some cases from the C - * structure field names for historic reasons or brevity. - */ -typedef struct AVFormatContext { - /** - * A class for logging and @ref avoptions. Set by avformat_alloc_context(). - * Exports (de)muxer private options if they exist. - */ - const AVClass *av_class; - - /** - * The input container format. - * - * Demuxing only, set by avformat_open_input(). - */ - struct AVInputFormat *iformat; - - /** - * The output container format. - * - * Muxing only, must be set by the caller before avformat_write_header(). - */ - struct AVOutputFormat *oformat; - - /** - * Format private data. This is an AVOptions-enabled struct - * if and only if iformat/oformat.priv_class is not NULL. - * - * - muxing: set by avformat_write_header() - * - demuxing: set by avformat_open_input() - */ - void *priv_data; - - /** - * I/O context. - * - * - demuxing: either set by the user before avformat_open_input() (then - * the user must close it manually) or set by avformat_open_input(). - * - muxing: set by the user before avformat_write_header(). The caller must - * take care of closing / freeing the IO context. - * - * Do NOT set this field if AVFMT_NOFILE flag is set in - * iformat/oformat.flags. In such a case, the (de)muxer will handle - * I/O in some other way and this field will be NULL. - */ - AVIOContext *pb; - - /* stream info */ - /** - * Flags signalling stream properties. A combination of AVFMTCTX_*. - * Set by libavformat. - */ - int ctx_flags; - - /** - * Number of elements in AVFormatContext.streams. - * - * Set by avformat_new_stream(), must not be modified by any other code. - */ - unsigned int nb_streams; - /** - * A list of all streams in the file. New streams are created with - * avformat_new_stream(). - * - * - demuxing: streams are created by libavformat in avformat_open_input(). - * If AVFMTCTX_NOHEADER is set in ctx_flags, then new streams may also - * appear in av_read_frame(). - * - muxing: streams are created by the user before avformat_write_header(). - * - * Freed by libavformat in avformat_free_context(). - */ - AVStream **streams; - - /** - * input or output filename - * - * - demuxing: set by avformat_open_input() - * - muxing: may be set by the caller before avformat_write_header() - */ - char filename[1024]; - - /** - * Position of the first frame of the component, in - * AV_TIME_BASE fractional seconds. NEVER set this value directly: - * It is deduced from the AVStream values. - * - * Demuxing only, set by libavformat. - */ - int64_t start_time; - - /** - * Duration of the stream, in AV_TIME_BASE fractional - * seconds. Only set this value if you know none of the individual stream - * durations and also do not set any of them. This is deduced from the - * AVStream values if not set. - * - * Demuxing only, set by libavformat. - */ - int64_t duration; - - /** - * Total stream bitrate in bit/s, 0 if not - * available. Never set it directly if the file_size and the - * duration are known as FFmpeg can compute it automatically. - */ - int64_t bit_rate; - - unsigned int packet_size; - int max_delay; - - /** - * Flags modifying the (de)muxer behaviour. A combination of AVFMT_FLAG_*. - * Set by the user before avformat_open_input() / avformat_write_header(). - */ - int flags; -#define AVFMT_FLAG_GENPTS 0x0001 ///< Generate missing pts even if it requires parsing future frames. -#define AVFMT_FLAG_IGNIDX 0x0002 ///< Ignore index. -#define AVFMT_FLAG_NONBLOCK 0x0004 ///< Do not block when reading packets from input. -#define AVFMT_FLAG_IGNDTS 0x0008 ///< Ignore DTS on frames that contain both DTS & PTS -#define AVFMT_FLAG_NOFILLIN 0x0010 ///< Do not infer any values from other values, just return what is stored in the container -#define AVFMT_FLAG_NOPARSE 0x0020 ///< Do not use AVParsers, you also must set AVFMT_FLAG_NOFILLIN as the fillin code works on frames and no parsing -> no frames. Also seeking to frames can not work if parsing to find frame boundaries has been disabled -#define AVFMT_FLAG_NOBUFFER 0x0040 ///< Do not buffer frames when possible -#define AVFMT_FLAG_CUSTOM_IO 0x0080 ///< The caller has supplied a custom AVIOContext, don't avio_close() it. -#define AVFMT_FLAG_DISCARD_CORRUPT 0x0100 ///< Discard frames marked corrupted -#define AVFMT_FLAG_FLUSH_PACKETS 0x0200 ///< Flush the AVIOContext every packet. -/** - * When muxing, try to avoid writing any random/volatile data to the output. - * This includes any random IDs, real-time timestamps/dates, muxer version, etc. - * - * This flag is mainly intended for testing. - */ -#define AVFMT_FLAG_BITEXACT 0x0400 -#define AVFMT_FLAG_MP4A_LATM 0x8000 ///< Enable RTP MP4A-LATM payload -#define AVFMT_FLAG_SORT_DTS 0x10000 ///< try to interleave outputted packets by dts (using this flag can slow demuxing down) -#define AVFMT_FLAG_PRIV_OPT 0x20000 ///< Enable use of private options by delaying codec open (this could be made default once all code is converted) -#define AVFMT_FLAG_KEEP_SIDE_DATA 0x40000 ///< Don't merge side data but keep it separate. -#define AVFMT_FLAG_FAST_SEEK 0x80000 ///< Enable fast, but inaccurate seeks for some formats -#define AVFMT_FLAG_SHORTEST 0x100000 ///< Stop muxing when the shortest stream stops. -#define AVFMT_FLAG_AUTO_BSF 0x200000 ///< Wait for packet data before writing a header, and add bitstream filters as requested by the muxer - - /** - * Maximum size of the data read from input for determining - * the input container format. - * Demuxing only, set by the caller before avformat_open_input(). - */ - int64_t probesize; - - /** - * Maximum duration (in AV_TIME_BASE units) of the data read - * from input in avformat_find_stream_info(). - * Demuxing only, set by the caller before avformat_find_stream_info(). - * Can be set to 0 to let avformat choose using a heuristic. - */ - int64_t max_analyze_duration; - - const uint8_t *key; - int keylen; - - unsigned int nb_programs; - AVProgram **programs; - - /** - * Forced video codec_id. - * Demuxing: Set by user. - */ - enum AVCodecID video_codec_id; - - /** - * Forced audio codec_id. - * Demuxing: Set by user. - */ - enum AVCodecID audio_codec_id; - - /** - * Forced subtitle codec_id. - * Demuxing: Set by user. - */ - enum AVCodecID subtitle_codec_id; - - /** - * Maximum amount of memory in bytes to use for the index of each stream. - * If the index exceeds this size, entries will be discarded as - * needed to maintain a smaller size. This can lead to slower or less - * accurate seeking (depends on demuxer). - * Demuxers for which a full in-memory index is mandatory will ignore - * this. - * - muxing: unused - * - demuxing: set by user - */ - unsigned int max_index_size; - - /** - * Maximum amount of memory in bytes to use for buffering frames - * obtained from realtime capture devices. - */ - unsigned int max_picture_buffer; - - /** - * Number of chapters in AVChapter array. - * When muxing, chapters are normally written in the file header, - * so nb_chapters should normally be initialized before write_header - * is called. Some muxers (e.g. mov and mkv) can also write chapters - * in the trailer. To write chapters in the trailer, nb_chapters - * must be zero when write_header is called and non-zero when - * write_trailer is called. - * - muxing: set by user - * - demuxing: set by libavformat - */ - unsigned int nb_chapters; - AVChapter **chapters; - - /** - * Metadata that applies to the whole file. - * - * - demuxing: set by libavformat in avformat_open_input() - * - muxing: may be set by the caller before avformat_write_header() - * - * Freed by libavformat in avformat_free_context(). - */ - AVDictionary *metadata; - - /** - * Start time of the stream in real world time, in microseconds - * since the Unix epoch (00:00 1st January 1970). That is, pts=0 in the - * stream was captured at this real world time. - * - muxing: Set by the caller before avformat_write_header(). If set to - * either 0 or AV_NOPTS_VALUE, then the current wall-time will - * be used. - * - demuxing: Set by libavformat. AV_NOPTS_VALUE if unknown. Note that - * the value may become known after some number of frames - * have been received. - */ - int64_t start_time_realtime; - - /** - * The number of frames used for determining the framerate in - * avformat_find_stream_info(). - * Demuxing only, set by the caller before avformat_find_stream_info(). - */ - int fps_probe_size; - - /** - * Error recognition; higher values will detect more errors but may - * misdetect some more or less valid parts as errors. - * Demuxing only, set by the caller before avformat_open_input(). - */ - int error_recognition; - - /** - * Custom interrupt callbacks for the I/O layer. - * - * demuxing: set by the user before avformat_open_input(). - * muxing: set by the user before avformat_write_header() - * (mainly useful for AVFMT_NOFILE formats). The callback - * should also be passed to avio_open2() if it's used to - * open the file. - */ - AVIOInterruptCB interrupt_callback; - - /** - * Flags to enable debugging. - */ - int debug; -#define FF_FDEBUG_TS 0x0001 - - /** - * Maximum buffering duration for interleaving. - * - * To ensure all the streams are interleaved correctly, - * av_interleaved_write_frame() will wait until it has at least one packet - * for each stream before actually writing any packets to the output file. - * When some streams are "sparse" (i.e. there are large gaps between - * successive packets), this can result in excessive buffering. - * - * This field specifies the maximum difference between the timestamps of the - * first and the last packet in the muxing queue, above which libavformat - * will output a packet regardless of whether it has queued a packet for all - * the streams. - * - * Muxing only, set by the caller before avformat_write_header(). - */ - int64_t max_interleave_delta; - - /** - * Allow non-standard and experimental extension - * @see AVCodecContext.strict_std_compliance - */ - int strict_std_compliance; - - /** - * Flags for the user to detect events happening on the file. Flags must - * be cleared by the user once the event has been handled. - * A combination of AVFMT_EVENT_FLAG_*. - */ - int event_flags; -#define AVFMT_EVENT_FLAG_METADATA_UPDATED 0x0001 ///< The call resulted in updated metadata. - - /** - * Maximum number of packets to read while waiting for the first timestamp. - * Decoding only. - */ - int max_ts_probe; - - /** - * Avoid negative timestamps during muxing. - * Any value of the AVFMT_AVOID_NEG_TS_* constants. - * Note, this only works when using av_interleaved_write_frame. (interleave_packet_per_dts is in use) - * - muxing: Set by user - * - demuxing: unused - */ - int avoid_negative_ts; -#define AVFMT_AVOID_NEG_TS_AUTO -1 ///< Enabled when required by target format -#define AVFMT_AVOID_NEG_TS_MAKE_NON_NEGATIVE 1 ///< Shift timestamps so they are non negative -#define AVFMT_AVOID_NEG_TS_MAKE_ZERO 2 ///< Shift timestamps so that they start at 0 - - /** - * Transport stream id. - * This will be moved into demuxer private options. Thus no API/ABI compatibility - */ - int ts_id; - - /** - * Audio preload in microseconds. - * Note, not all formats support this and unpredictable things may happen if it is used when not supported. - * - encoding: Set by user via AVOptions (NO direct access) - * - decoding: unused - */ - int audio_preload; - - /** - * Max chunk time in microseconds. - * Note, not all formats support this and unpredictable things may happen if it is used when not supported. - * - encoding: Set by user via AVOptions (NO direct access) - * - decoding: unused - */ - int max_chunk_duration; - - /** - * Max chunk size in bytes - * Note, not all formats support this and unpredictable things may happen if it is used when not supported. - * - encoding: Set by user via AVOptions (NO direct access) - * - decoding: unused - */ - int max_chunk_size; - - /** - * forces the use of wallclock timestamps as pts/dts of packets - * This has undefined results in the presence of B frames. - * - encoding: unused - * - decoding: Set by user via AVOptions (NO direct access) - */ - int use_wallclock_as_timestamps; - - /** - * avio flags, used to force AVIO_FLAG_DIRECT. - * - encoding: unused - * - decoding: Set by user via AVOptions (NO direct access) - */ - int avio_flags; - - /** - * The duration field can be estimated through various ways, and this field can be used - * to know how the duration was estimated. - * - encoding: unused - * - decoding: Read by user via AVOptions (NO direct access) - */ - enum AVDurationEstimationMethod duration_estimation_method; - - /** - * Skip initial bytes when opening stream - * - encoding: unused - * - decoding: Set by user via AVOptions (NO direct access) - */ - int64_t skip_initial_bytes; - - /** - * Correct single timestamp overflows - * - encoding: unused - * - decoding: Set by user via AVOptions (NO direct access) - */ - unsigned int correct_ts_overflow; - - /** - * Force seeking to any (also non key) frames. - * - encoding: unused - * - decoding: Set by user via AVOptions (NO direct access) - */ - int seek2any; - - /** - * Flush the I/O context after each packet. - * - encoding: Set by user via AVOptions (NO direct access) - * - decoding: unused - */ - int flush_packets; - - /** - * format probing score. - * The maximal score is AVPROBE_SCORE_MAX, its set when the demuxer probes - * the format. - * - encoding: unused - * - decoding: set by avformat, read by user via av_format_get_probe_score() (NO direct access) - */ - int probe_score; - - /** - * number of bytes to read maximally to identify format. - * - encoding: unused - * - decoding: set by user through AVOPtions (NO direct access) - */ - int format_probesize; - - /** - * ',' separated list of allowed decoders. - * If NULL then all are allowed - * - encoding: unused - * - decoding: set by user through AVOptions (NO direct access) - */ - char *codec_whitelist; - - /** - * ',' separated list of allowed demuxers. - * If NULL then all are allowed - * - encoding: unused - * - decoding: set by user through AVOptions (NO direct access) - */ - char *format_whitelist; - - /** - * An opaque field for libavformat internal usage. - * Must not be accessed in any way by callers. - */ - AVFormatInternal *internal; - - /** - * IO repositioned flag. - * This is set by avformat when the underlaying IO context read pointer - * is repositioned, for example when doing byte based seeking. - * Demuxers can use the flag to detect such changes. - */ - int io_repositioned; - - /** - * Forced video codec. - * This allows forcing a specific decoder, even when there are multiple with - * the same codec_id. - * Demuxing: Set by user via av_format_set_video_codec (NO direct access). - */ - AVCodec *video_codec; - - /** - * Forced audio codec. - * This allows forcing a specific decoder, even when there are multiple with - * the same codec_id. - * Demuxing: Set by user via av_format_set_audio_codec (NO direct access). - */ - AVCodec *audio_codec; - - /** - * Forced subtitle codec. - * This allows forcing a specific decoder, even when there are multiple with - * the same codec_id. - * Demuxing: Set by user via av_format_set_subtitle_codec (NO direct access). - */ - AVCodec *subtitle_codec; - - /** - * Forced data codec. - * This allows forcing a specific decoder, even when there are multiple with - * the same codec_id. - * Demuxing: Set by user via av_format_set_data_codec (NO direct access). - */ - AVCodec *data_codec; - - /** - * Number of bytes to be written as padding in a metadata header. - * Demuxing: Unused. - * Muxing: Set by user via av_format_set_metadata_header_padding. - */ - int metadata_header_padding; - - /** - * User data. - * This is a place for some private data of the user. - */ - void *opaque; - - /** - * Callback used by devices to communicate with application. - */ - av_format_control_message control_message_cb; - - /** - * Output timestamp offset, in microseconds. - * Muxing: set by user via AVOptions (NO direct access) - */ - int64_t output_ts_offset; - - /** - * dump format separator. - * can be ", " or "\n " or anything else - * Code outside libavformat should access this field using AVOptions - * (NO direct access). - * - muxing: Set by user. - * - demuxing: Set by user. - */ - uint8_t *dump_separator; - - /** - * Forced Data codec_id. - * Demuxing: Set by user. - */ - enum AVCodecID data_codec_id; - -#if FF_API_OLD_OPEN_CALLBACKS - /** - * Called to open further IO contexts when needed for demuxing. - * - * This can be set by the user application to perform security checks on - * the URLs before opening them. - * The function should behave like avio_open2(), AVFormatContext is provided - * as contextual information and to reach AVFormatContext.opaque. - * - * If NULL then some simple checks are used together with avio_open2(). - * - * Must not be accessed directly from outside avformat. - * @See av_format_set_open_cb() - * - * Demuxing: Set by user. - * - * @deprecated Use io_open and io_close. - */ - attribute_deprecated - int (*open_cb)(struct AVFormatContext *s, AVIOContext **p, const char *url, int flags, const AVIOInterruptCB *int_cb, AVDictionary **options); -#endif - - /** - * ',' separated list of allowed protocols. - * - encoding: unused - * - decoding: set by user through AVOptions (NO direct access) - */ - char *protocol_whitelist; - - /* - * A callback for opening new IO streams. - * - * Whenever a muxer or a demuxer needs to open an IO stream (typically from - * avformat_open_input() for demuxers, but for certain formats can happen at - * other times as well), it will call this callback to obtain an IO context. - * - * @param s the format context - * @param pb on success, the newly opened IO context should be returned here - * @param url the url to open - * @param flags a combination of AVIO_FLAG_* - * @param options a dictionary of additional options, with the same - * semantics as in avio_open2() - * @return 0 on success, a negative AVERROR code on failure - * - * @note Certain muxers and demuxers do nesting, i.e. they open one or more - * additional internal format contexts. Thus the AVFormatContext pointer - * passed to this callback may be different from the one facing the caller. - * It will, however, have the same 'opaque' field. - */ - int (*io_open)(struct AVFormatContext *s, AVIOContext **pb, const char *url, - int flags, AVDictionary **options); - - /** - * A callback for closing the streams opened with AVFormatContext.io_open(). - */ - void (*io_close)(struct AVFormatContext *s, AVIOContext *pb); - - /** - * ',' separated list of disallowed protocols. - * - encoding: unused - * - decoding: set by user through AVOptions (NO direct access) - */ - char *protocol_blacklist; - - /** - * The maximum number of streams. - * - encoding: unused - * - decoding: set by user through AVOptions (NO direct access) - */ - int max_streams; -} AVFormatContext; - -int av_format_get_probe_score(const AVFormatContext *s); -AVCodec * av_format_get_video_codec(const AVFormatContext *s); -void av_format_set_video_codec(AVFormatContext *s, AVCodec *c); -AVCodec * av_format_get_audio_codec(const AVFormatContext *s); -void av_format_set_audio_codec(AVFormatContext *s, AVCodec *c); -AVCodec * av_format_get_subtitle_codec(const AVFormatContext *s); -void av_format_set_subtitle_codec(AVFormatContext *s, AVCodec *c); -AVCodec * av_format_get_data_codec(const AVFormatContext *s); -void av_format_set_data_codec(AVFormatContext *s, AVCodec *c); -int av_format_get_metadata_header_padding(const AVFormatContext *s); -void av_format_set_metadata_header_padding(AVFormatContext *s, int c); -void * av_format_get_opaque(const AVFormatContext *s); -void av_format_set_opaque(AVFormatContext *s, void *opaque); -av_format_control_message av_format_get_control_message_cb(const AVFormatContext *s); -void av_format_set_control_message_cb(AVFormatContext *s, av_format_control_message callback); -#if FF_API_OLD_OPEN_CALLBACKS -attribute_deprecated AVOpenCallback av_format_get_open_cb(const AVFormatContext *s); -attribute_deprecated void av_format_set_open_cb(AVFormatContext *s, AVOpenCallback callback); -#endif - -/** - * This function will cause global side data to be injected in the next packet - * of each stream as well as after any subsequent seek. - */ -void av_format_inject_global_side_data(AVFormatContext *s); - -/** - * Returns the method used to set ctx->duration. - * - * @return AVFMT_DURATION_FROM_PTS, AVFMT_DURATION_FROM_STREAM, or AVFMT_DURATION_FROM_BITRATE. - */ -enum AVDurationEstimationMethod av_fmt_ctx_get_duration_estimation_method(const AVFormatContext* ctx); - -typedef struct AVPacketList { - AVPacket pkt; - struct AVPacketList *next; -} AVPacketList; - - -/** - * @defgroup lavf_core Core functions - * @ingroup libavf - * - * Functions for querying libavformat capabilities, allocating core structures, - * etc. - * @{ - */ - -/** - * Return the LIBAVFORMAT_VERSION_INT constant. - */ -unsigned avformat_version(void); - -/** - * Return the libavformat build-time configuration. - */ -const char *avformat_configuration(void); - -/** - * Return the libavformat license. - */ -const char *avformat_license(void); - -/** - * Initialize libavformat and register all the muxers, demuxers and - * protocols. If you do not call this function, then you can select - * exactly which formats you want to support. - * - * @see av_register_input_format() - * @see av_register_output_format() - */ -void av_register_all(void); - -void av_register_input_format(AVInputFormat *format); -void av_register_output_format(AVOutputFormat *format); - -/** - * Do global initialization of network components. This is optional, - * but recommended, since it avoids the overhead of implicitly - * doing the setup for each session. - * - * Calling this function will become mandatory if using network - * protocols at some major version bump. - */ -int avformat_network_init(void); - -/** - * Undo the initialization done by avformat_network_init. - */ -int avformat_network_deinit(void); - -/** - * If f is NULL, returns the first registered input format, - * if f is non-NULL, returns the next registered input format after f - * or NULL if f is the last one. - */ -AVInputFormat *av_iformat_next(const AVInputFormat *f); - -/** - * If f is NULL, returns the first registered output format, - * if f is non-NULL, returns the next registered output format after f - * or NULL if f is the last one. - */ -AVOutputFormat *av_oformat_next(const AVOutputFormat *f); - -/** - * Allocate an AVFormatContext. - * avformat_free_context() can be used to free the context and everything - * allocated by the framework within it. - */ -AVFormatContext *avformat_alloc_context(void); - -/** - * Free an AVFormatContext and all its streams. - * @param s context to free - */ -void avformat_free_context(AVFormatContext *s); - -/** - * Get the AVClass for AVFormatContext. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *avformat_get_class(void); - -/** - * Add a new stream to a media file. - * - * When demuxing, it is called by the demuxer in read_header(). If the - * flag AVFMTCTX_NOHEADER is set in s.ctx_flags, then it may also - * be called in read_packet(). - * - * When muxing, should be called by the user before avformat_write_header(). - * - * User is required to call avcodec_close() and avformat_free_context() to - * clean up the allocation by avformat_new_stream(). - * - * @param s media file handle - * @param c If non-NULL, the AVCodecContext corresponding to the new stream - * will be initialized to use this codec. This is needed for e.g. codec-specific - * defaults to be set, so codec should be provided if it is known. - * - * @return newly created stream or NULL on error. - */ -AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c); - -/** - * Allocate new information from stream. - * - * @param stream stream - * @param type desired side information type - * @param size side information size - * @return pointer to fresh allocated data or NULL otherwise - */ -uint8_t *av_stream_new_side_data(AVStream *stream, - enum AVPacketSideDataType type, int size); -/** - * Get side information from stream. - * - * @param stream stream - * @param type desired side information type - * @param size pointer for side information size to store (optional) - * @return pointer to data if present or NULL otherwise - */ -#if FF_API_NOCONST_GET_SIDE_DATA -uint8_t *av_stream_get_side_data(AVStream *stream, - enum AVPacketSideDataType type, int *size); -#else -uint8_t *av_stream_get_side_data(const AVStream *stream, - enum AVPacketSideDataType type, int *size); -#endif - -AVProgram *av_new_program(AVFormatContext *s, int id); - -/** - * @} - */ - - -/** - * Allocate an AVFormatContext for an output format. - * avformat_free_context() can be used to free the context and - * everything allocated by the framework within it. - * - * @param *ctx is set to the created format context, or to NULL in - * case of failure - * @param oformat format to use for allocating the context, if NULL - * format_name and filename are used instead - * @param format_name the name of output format to use for allocating the - * context, if NULL filename is used instead - * @param filename the name of the filename to use for allocating the - * context, may be NULL - * @return >= 0 in case of success, a negative AVERROR code in case of - * failure - */ -int avformat_alloc_output_context2(AVFormatContext **ctx, AVOutputFormat *oformat, - const char *format_name, const char *filename); - -/** - * @addtogroup lavf_decoding - * @{ - */ - -/** - * Find AVInputFormat based on the short name of the input format. - */ -AVInputFormat *av_find_input_format(const char *short_name); - -/** - * Guess the file format. - * - * @param pd data to be probed - * @param is_opened Whether the file is already opened; determines whether - * demuxers with or without AVFMT_NOFILE are probed. - */ -AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened); - -/** - * Guess the file format. - * - * @param pd data to be probed - * @param is_opened Whether the file is already opened; determines whether - * demuxers with or without AVFMT_NOFILE are probed. - * @param score_max A probe score larger that this is required to accept a - * detection, the variable is set to the actual detection - * score afterwards. - * If the score is <= AVPROBE_SCORE_MAX / 4 it is recommended - * to retry with a larger probe buffer. - */ -AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max); - -/** - * Guess the file format. - * - * @param is_opened Whether the file is already opened; determines whether - * demuxers with or without AVFMT_NOFILE are probed. - * @param score_ret The score of the best detection. - */ -AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened, int *score_ret); - -/** - * Probe a bytestream to determine the input format. Each time a probe returns - * with a score that is too low, the probe buffer size is increased and another - * attempt is made. When the maximum probe size is reached, the input format - * with the highest score is returned. - * - * @param pb the bytestream to probe - * @param fmt the input format is put here - * @param url the url of the stream - * @param logctx the log context - * @param offset the offset within the bytestream to probe from - * @param max_probe_size the maximum probe buffer size (zero for default) - * @return the score in case of success, a negative value corresponding to an - * the maximal score is AVPROBE_SCORE_MAX - * AVERROR code otherwise - */ -int av_probe_input_buffer2(AVIOContext *pb, AVInputFormat **fmt, - const char *url, void *logctx, - unsigned int offset, unsigned int max_probe_size); - -/** - * Like av_probe_input_buffer2() but returns 0 on success - */ -int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt, - const char *url, void *logctx, - unsigned int offset, unsigned int max_probe_size); - -/** - * Open an input stream and read the header. The codecs are not opened. - * The stream must be closed with avformat_close_input(). - * - * @param ps Pointer to user-supplied AVFormatContext (allocated by avformat_alloc_context). - * May be a pointer to NULL, in which case an AVFormatContext is allocated by this - * function and written into ps. - * Note that a user-supplied AVFormatContext will be freed on failure. - * @param url URL of the stream to open. - * @param fmt If non-NULL, this parameter forces a specific input format. - * Otherwise the format is autodetected. - * @param options A dictionary filled with AVFormatContext and demuxer-private options. - * On return this parameter will be destroyed and replaced with a dict containing - * options that were not found. May be NULL. - * - * @return 0 on success, a negative AVERROR on failure. - * - * @note If you want to use custom IO, preallocate the format context and set its pb field. - */ -int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options); - -attribute_deprecated -int av_demuxer_open(AVFormatContext *ic); - -/** - * Read packets of a media file to get stream information. This - * is useful for file formats with no headers such as MPEG. This - * function also computes the real framerate in case of MPEG-2 repeat - * frame mode. - * The logical file position is not changed by this function; - * examined packets may be buffered for later processing. - * - * @param ic media file handle - * @param options If non-NULL, an ic.nb_streams long array of pointers to - * dictionaries, where i-th member contains options for - * codec corresponding to i-th stream. - * On return each dictionary will be filled with options that were not found. - * @return >=0 if OK, AVERROR_xxx on error - * - * @note this function isn't guaranteed to open all the codecs, so - * options being non-empty at return is a perfectly normal behavior. - * - * @todo Let the user decide somehow what information is needed so that - * we do not waste time getting stuff the user does not need. - */ -int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options); - -/** - * Find the programs which belong to a given stream. - * - * @param ic media file handle - * @param last the last found program, the search will start after this - * program, or from the beginning if it is NULL - * @param s stream index - * @return the next program which belongs to s, NULL if no program is found or - * the last program is not among the programs of ic. - */ -AVProgram *av_find_program_from_stream(AVFormatContext *ic, AVProgram *last, int s); - -void av_program_add_stream_index(AVFormatContext *ac, int progid, unsigned int idx); - -/** - * Find the "best" stream in the file. - * The best stream is determined according to various heuristics as the most - * likely to be what the user expects. - * If the decoder parameter is non-NULL, av_find_best_stream will find the - * default decoder for the stream's codec; streams for which no decoder can - * be found are ignored. - * - * @param ic media file handle - * @param type stream type: video, audio, subtitles, etc. - * @param wanted_stream_nb user-requested stream number, - * or -1 for automatic selection - * @param related_stream try to find a stream related (eg. in the same - * program) to this one, or -1 if none - * @param decoder_ret if non-NULL, returns the decoder for the - * selected stream - * @param flags flags; none are currently defined - * @return the non-negative stream number in case of success, - * AVERROR_STREAM_NOT_FOUND if no stream with the requested type - * could be found, - * AVERROR_DECODER_NOT_FOUND if streams were found but no decoder - * @note If av_find_best_stream returns successfully and decoder_ret is not - * NULL, then *decoder_ret is guaranteed to be set to a valid AVCodec. - */ -int av_find_best_stream(AVFormatContext *ic, - enum AVMediaType type, - int wanted_stream_nb, - int related_stream, - AVCodec **decoder_ret, - int flags); - -/** - * Return the next frame of a stream. - * This function returns what is stored in the file, and does not validate - * that what is there are valid frames for the decoder. It will split what is - * stored in the file into frames and return one for each call. It will not - * omit invalid data between valid frames so as to give the decoder the maximum - * information possible for decoding. - * - * If pkt->buf is NULL, then the packet is valid until the next - * av_read_frame() or until avformat_close_input(). Otherwise the packet - * is valid indefinitely. In both cases the packet must be freed with - * av_packet_unref when it is no longer needed. For video, the packet contains - * exactly one frame. For audio, it contains an integer number of frames if each - * frame has a known fixed size (e.g. PCM or ADPCM data). If the audio frames - * have a variable size (e.g. MPEG audio), then it contains one frame. - * - * pkt->pts, pkt->dts and pkt->duration are always set to correct - * values in AVStream.time_base units (and guessed if the format cannot - * provide them). pkt->pts can be AV_NOPTS_VALUE if the video format - * has B-frames, so it is better to rely on pkt->dts if you do not - * decompress the payload. - * - * @return 0 if OK, < 0 on error or end of file - */ -int av_read_frame(AVFormatContext *s, AVPacket *pkt); - -/** - * Seek to the keyframe at timestamp. - * 'timestamp' in 'stream_index'. - * - * @param s media file handle - * @param stream_index If stream_index is (-1), a default - * stream is selected, and timestamp is automatically converted - * from AV_TIME_BASE units to the stream specific time_base. - * @param timestamp Timestamp in AVStream.time_base units - * or, if no stream is specified, in AV_TIME_BASE units. - * @param flags flags which select direction and seeking mode - * @return >= 0 on success - */ -int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, - int flags); - -/** - * Seek to timestamp ts. - * Seeking will be done so that the point from which all active streams - * can be presented successfully will be closest to ts and within min/max_ts. - * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. - * - * If flags contain AVSEEK_FLAG_BYTE, then all timestamps are in bytes and - * are the file position (this may not be supported by all demuxers). - * If flags contain AVSEEK_FLAG_FRAME, then all timestamps are in frames - * in the stream with stream_index (this may not be supported by all demuxers). - * Otherwise all timestamps are in units of the stream selected by stream_index - * or if stream_index is -1, in AV_TIME_BASE units. - * If flags contain AVSEEK_FLAG_ANY, then non-keyframes are treated as - * keyframes (this may not be supported by all demuxers). - * If flags contain AVSEEK_FLAG_BACKWARD, it is ignored. - * - * @param s media file handle - * @param stream_index index of the stream which is used as time base reference - * @param min_ts smallest acceptable timestamp - * @param ts target timestamp - * @param max_ts largest acceptable timestamp - * @param flags flags - * @return >=0 on success, error code otherwise - * - * @note This is part of the new seek API which is still under construction. - * Thus do not use this yet. It may change at any time, do not expect - * ABI compatibility yet! - */ -int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags); - -/** - * Discard all internally buffered data. This can be useful when dealing with - * discontinuities in the byte stream. Generally works only with formats that - * can resync. This includes headerless formats like MPEG-TS/TS but should also - * work with NUT, Ogg and in a limited way AVI for example. - * - * The set of streams, the detected duration, stream parameters and codecs do - * not change when calling this function. If you want a complete reset, it's - * better to open a new AVFormatContext. - * - * This does not flush the AVIOContext (s->pb). If necessary, call - * avio_flush(s->pb) before calling this function. - * - * @param s media file handle - * @return >=0 on success, error code otherwise - */ -int avformat_flush(AVFormatContext *s); - -/** - * Start playing a network-based stream (e.g. RTSP stream) at the - * current position. - */ -int av_read_play(AVFormatContext *s); - -/** - * Pause a network-based stream (e.g. RTSP stream). - * - * Use av_read_play() to resume it. - */ -int av_read_pause(AVFormatContext *s); - -/** - * Close an opened input AVFormatContext. Free it and all its contents - * and set *s to NULL. - */ -void avformat_close_input(AVFormatContext **s); -/** - * @} - */ - -#define AVSEEK_FLAG_BACKWARD 1 ///< seek backward -#define AVSEEK_FLAG_BYTE 2 ///< seeking based on position in bytes -#define AVSEEK_FLAG_ANY 4 ///< seek to any frame, even non-keyframes -#define AVSEEK_FLAG_FRAME 8 ///< seeking based on frame number - -/** - * @addtogroup lavf_encoding - * @{ - */ - -#define AVSTREAM_INIT_IN_WRITE_HEADER 0 ///< stream parameters initialized in avformat_write_header -#define AVSTREAM_INIT_IN_INIT_OUTPUT 1 ///< stream parameters initialized in avformat_init_output - -/** - * Allocate the stream private data and write the stream header to - * an output media file. - * - * @param s Media file handle, must be allocated with avformat_alloc_context(). - * Its oformat field must be set to the desired output format; - * Its pb field must be set to an already opened AVIOContext. - * @param options An AVDictionary filled with AVFormatContext and muxer-private options. - * On return this parameter will be destroyed and replaced with a dict containing - * options that were not found. May be NULL. - * - * @return AVSTREAM_INIT_IN_WRITE_HEADER on success if the codec had not already been fully initialized in avformat_init, - * AVSTREAM_INIT_IN_INIT_OUTPUT on success if the codec had already been fully initialized in avformat_init, - * negative AVERROR on failure. - * - * @see av_opt_find, av_dict_set, avio_open, av_oformat_next, avformat_init_output. - */ -av_warn_unused_result -int avformat_write_header(AVFormatContext *s, AVDictionary **options); - -/** - * Allocate the stream private data and initialize the codec, but do not write the header. - * May optionally be used before avformat_write_header to initialize stream parameters - * before actually writing the header. - * If using this function, do not pass the same options to avformat_write_header. - * - * @param s Media file handle, must be allocated with avformat_alloc_context(). - * Its oformat field must be set to the desired output format; - * Its pb field must be set to an already opened AVIOContext. - * @param options An AVDictionary filled with AVFormatContext and muxer-private options. - * On return this parameter will be destroyed and replaced with a dict containing - * options that were not found. May be NULL. - * - * @return AVSTREAM_INIT_IN_WRITE_HEADER on success if the codec requires avformat_write_header to fully initialize, - * AVSTREAM_INIT_IN_INIT_OUTPUT on success if the codec has been fully initialized, - * negative AVERROR on failure. - * - * @see av_opt_find, av_dict_set, avio_open, av_oformat_next, avformat_write_header. - */ -av_warn_unused_result -int avformat_init_output(AVFormatContext *s, AVDictionary **options); - -/** - * Write a packet to an output media file. - * - * This function passes the packet directly to the muxer, without any buffering - * or reordering. The caller is responsible for correctly interleaving the - * packets if the format requires it. Callers that want libavformat to handle - * the interleaving should call av_interleaved_write_frame() instead of this - * function. - * - * @param s media file handle - * @param pkt The packet containing the data to be written. Note that unlike - * av_interleaved_write_frame(), this function does not take - * ownership of the packet passed to it (though some muxers may make - * an internal reference to the input packet). - *
- * This parameter can be NULL (at any time, not just at the end), in - * order to immediately flush data buffered within the muxer, for - * muxers that buffer up data internally before writing it to the - * output. - *
- * Packet's @ref AVPacket.stream_index "stream_index" field must be - * set to the index of the corresponding stream in @ref - * AVFormatContext.streams "s->streams". - *
- * The timestamps (@ref AVPacket.pts "pts", @ref AVPacket.dts "dts") - * must be set to correct values in the stream's timebase (unless the - * output format is flagged with the AVFMT_NOTIMESTAMPS flag, then - * they can be set to AV_NOPTS_VALUE). - * The dts for subsequent packets passed to this function must be strictly - * increasing when compared in their respective timebases (unless the - * output format is flagged with the AVFMT_TS_NONSTRICT, then they - * merely have to be nondecreasing). @ref AVPacket.duration - * "duration") should also be set if known. - * @return < 0 on error, = 0 if OK, 1 if flushed and there is no more data to flush - * - * @see av_interleaved_write_frame() - */ -int av_write_frame(AVFormatContext *s, AVPacket *pkt); - -/** - * Write a packet to an output media file ensuring correct interleaving. - * - * This function will buffer the packets internally as needed to make sure the - * packets in the output file are properly interleaved in the order of - * increasing dts. Callers doing their own interleaving should call - * av_write_frame() instead of this function. - * - * Using this function instead of av_write_frame() can give muxers advance - * knowledge of future packets, improving e.g. the behaviour of the mp4 - * muxer for VFR content in fragmenting mode. - * - * @param s media file handle - * @param pkt The packet containing the data to be written. - *
- * If the packet is reference-counted, this function will take - * ownership of this reference and unreference it later when it sees - * fit. - * The caller must not access the data through this reference after - * this function returns. If the packet is not reference-counted, - * libavformat will make a copy. - *
- * This parameter can be NULL (at any time, not just at the end), to - * flush the interleaving queues. - *
- * Packet's @ref AVPacket.stream_index "stream_index" field must be - * set to the index of the corresponding stream in @ref - * AVFormatContext.streams "s->streams". - *
- * The timestamps (@ref AVPacket.pts "pts", @ref AVPacket.dts "dts") - * must be set to correct values in the stream's timebase (unless the - * output format is flagged with the AVFMT_NOTIMESTAMPS flag, then - * they can be set to AV_NOPTS_VALUE). - * The dts for subsequent packets in one stream must be strictly - * increasing (unless the output format is flagged with the - * AVFMT_TS_NONSTRICT, then they merely have to be nondecreasing). - * @ref AVPacket.duration "duration") should also be set if known. - * - * @return 0 on success, a negative AVERROR on error. Libavformat will always - * take care of freeing the packet, even if this function fails. - * - * @see av_write_frame(), AVFormatContext.max_interleave_delta - */ -int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt); - -/** - * Write an uncoded frame to an output media file. - * - * The frame must be correctly interleaved according to the container - * specification; if not, then av_interleaved_write_frame() must be used. - * - * See av_interleaved_write_frame() for details. - */ -int av_write_uncoded_frame(AVFormatContext *s, int stream_index, - AVFrame *frame); - -/** - * Write an uncoded frame to an output media file. - * - * If the muxer supports it, this function makes it possible to write an AVFrame - * structure directly, without encoding it into a packet. - * It is mostly useful for devices and similar special muxers that use raw - * video or PCM data and will not serialize it into a byte stream. - * - * To test whether it is possible to use it with a given muxer and stream, - * use av_write_uncoded_frame_query(). - * - * The caller gives up ownership of the frame and must not access it - * afterwards. - * - * @return >=0 for success, a negative code on error - */ -int av_interleaved_write_uncoded_frame(AVFormatContext *s, int stream_index, - AVFrame *frame); - -/** - * Test whether a muxer supports uncoded frame. - * - * @return >=0 if an uncoded frame can be written to that muxer and stream, - * <0 if not - */ -int av_write_uncoded_frame_query(AVFormatContext *s, int stream_index); - -/** - * Write the stream trailer to an output media file and free the - * file private data. - * - * May only be called after a successful call to avformat_write_header. - * - * @param s media file handle - * @return 0 if OK, AVERROR_xxx on error - */ -int av_write_trailer(AVFormatContext *s); - -/** - * Return the output format in the list of registered output formats - * which best matches the provided parameters, or return NULL if - * there is no match. - * - * @param short_name if non-NULL checks if short_name matches with the - * names of the registered formats - * @param filename if non-NULL checks if filename terminates with the - * extensions of the registered formats - * @param mime_type if non-NULL checks if mime_type matches with the - * MIME type of the registered formats - */ -AVOutputFormat *av_guess_format(const char *short_name, - const char *filename, - const char *mime_type); - -/** - * Guess the codec ID based upon muxer and filename. - */ -enum AVCodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name, - const char *filename, const char *mime_type, - enum AVMediaType type); - -/** - * Get timing information for the data currently output. - * The exact meaning of "currently output" depends on the format. - * It is mostly relevant for devices that have an internal buffer and/or - * work in real time. - * @param s media file handle - * @param stream stream in the media file - * @param[out] dts DTS of the last packet output for the stream, in stream - * time_base units - * @param[out] wall absolute time when that packet whas output, - * in microsecond - * @return 0 if OK, AVERROR(ENOSYS) if the format does not support it - * Note: some formats or devices may not allow to measure dts and wall - * atomically. - */ -int av_get_output_timestamp(struct AVFormatContext *s, int stream, - int64_t *dts, int64_t *wall); - - -/** - * @} - */ - - -/** - * @defgroup lavf_misc Utility functions - * @ingroup libavf - * @{ - * - * Miscellaneous utility functions related to both muxing and demuxing - * (or neither). - */ - -/** - * Send a nice hexadecimal dump of a buffer to the specified file stream. - * - * @param f The file stream pointer where the dump should be sent to. - * @param buf buffer - * @param size buffer size - * - * @see av_hex_dump_log, av_pkt_dump2, av_pkt_dump_log2 - */ -void av_hex_dump(FILE *f, const uint8_t *buf, int size); - -/** - * Send a nice hexadecimal dump of a buffer to the log. - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message, lower values signifying - * higher importance. - * @param buf buffer - * @param size buffer size - * - * @see av_hex_dump, av_pkt_dump2, av_pkt_dump_log2 - */ -void av_hex_dump_log(void *avcl, int level, const uint8_t *buf, int size); - -/** - * Send a nice dump of a packet to the specified file stream. - * - * @param f The file stream pointer where the dump should be sent to. - * @param pkt packet to dump - * @param dump_payload True if the payload must be displayed, too. - * @param st AVStream that the packet belongs to - */ -void av_pkt_dump2(FILE *f, const AVPacket *pkt, int dump_payload, const AVStream *st); - - -/** - * Send a nice dump of a packet to the log. - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message, lower values signifying - * higher importance. - * @param pkt packet to dump - * @param dump_payload True if the payload must be displayed, too. - * @param st AVStream that the packet belongs to - */ -void av_pkt_dump_log2(void *avcl, int level, const AVPacket *pkt, int dump_payload, - const AVStream *st); - -/** - * Get the AVCodecID for the given codec tag tag. - * If no codec id is found returns AV_CODEC_ID_NONE. - * - * @param tags list of supported codec_id-codec_tag pairs, as stored - * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag - * @param tag codec tag to match to a codec ID - */ -enum AVCodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned int tag); - -/** - * Get the codec tag for the given codec id id. - * If no codec tag is found returns 0. - * - * @param tags list of supported codec_id-codec_tag pairs, as stored - * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag - * @param id codec ID to match to a codec tag - */ -unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum AVCodecID id); - -/** - * Get the codec tag for the given codec id. - * - * @param tags list of supported codec_id - codec_tag pairs, as stored - * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag - * @param id codec id that should be searched for in the list - * @param tag A pointer to the found tag - * @return 0 if id was not found in tags, > 0 if it was found - */ -int av_codec_get_tag2(const struct AVCodecTag * const *tags, enum AVCodecID id, - unsigned int *tag); - -int av_find_default_stream_index(AVFormatContext *s); - -/** - * Get the index for a specific timestamp. - * - * @param st stream that the timestamp belongs to - * @param timestamp timestamp to retrieve the index for - * @param flags if AVSEEK_FLAG_BACKWARD then the returned index will correspond - * to the timestamp which is <= the requested one, if backward - * is 0, then it will be >= - * if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise - * @return < 0 if no such timestamp could be found - */ -int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags); - -/** - * Add an index entry into a sorted list. Update the entry if the list - * already contains it. - * - * @param timestamp timestamp in the time base of the given stream - */ -int av_add_index_entry(AVStream *st, int64_t pos, int64_t timestamp, - int size, int distance, int flags); - - -/** - * Split a URL string into components. - * - * The pointers to buffers for storing individual components may be null, - * in order to ignore that component. Buffers for components not found are - * set to empty strings. If the port is not found, it is set to a negative - * value. - * - * @param proto the buffer for the protocol - * @param proto_size the size of the proto buffer - * @param authorization the buffer for the authorization - * @param authorization_size the size of the authorization buffer - * @param hostname the buffer for the host name - * @param hostname_size the size of the hostname buffer - * @param port_ptr a pointer to store the port number in - * @param path the buffer for the path - * @param path_size the size of the path buffer - * @param url the URL to split - */ -void av_url_split(char *proto, int proto_size, - char *authorization, int authorization_size, - char *hostname, int hostname_size, - int *port_ptr, - char *path, int path_size, - const char *url); - - -/** - * Print detailed information about the input or output format, such as - * duration, bitrate, streams, container, programs, metadata, side data, - * codec and time base. - * - * @param ic the context to analyze - * @param index index of the stream to dump information about - * @param url the URL to print, such as source or destination file - * @param is_output Select whether the specified context is an input(0) or output(1) - */ -void av_dump_format(AVFormatContext *ic, - int index, - const char *url, - int is_output); - - -#define AV_FRAME_FILENAME_FLAGS_MULTIPLE 1 ///< Allow multiple %d - -/** - * Return in 'buf' the path with '%d' replaced by a number. - * - * Also handles the '%0nd' format where 'n' is the total number - * of digits and '%%'. - * - * @param buf destination buffer - * @param buf_size destination buffer size - * @param path numbered sequence string - * @param number frame number - * @param flags AV_FRAME_FILENAME_FLAGS_* - * @return 0 if OK, -1 on format error - */ -int av_get_frame_filename2(char *buf, int buf_size, - const char *path, int number, int flags); - -int av_get_frame_filename(char *buf, int buf_size, - const char *path, int number); - -/** - * Check whether filename actually is a numbered sequence generator. - * - * @param filename possible numbered sequence string - * @return 1 if a valid numbered sequence string, 0 otherwise - */ -int av_filename_number_test(const char *filename); - -/** - * Generate an SDP for an RTP session. - * - * Note, this overwrites the id values of AVStreams in the muxer contexts - * for getting unique dynamic payload types. - * - * @param ac array of AVFormatContexts describing the RTP streams. If the - * array is composed by only one context, such context can contain - * multiple AVStreams (one AVStream per RTP stream). Otherwise, - * all the contexts in the array (an AVCodecContext per RTP stream) - * must contain only one AVStream. - * @param n_files number of AVCodecContexts contained in ac - * @param buf buffer where the SDP will be stored (must be allocated by - * the caller) - * @param size the size of the buffer - * @return 0 if OK, AVERROR_xxx on error - */ -int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size); - -/** - * Return a positive value if the given filename has one of the given - * extensions, 0 otherwise. - * - * @param filename file name to check against the given extensions - * @param extensions a comma-separated list of filename extensions - */ -int av_match_ext(const char *filename, const char *extensions); - -/** - * Test if the given container can store a codec. - * - * @param ofmt container to check for compatibility - * @param codec_id codec to potentially store in container - * @param std_compliance standards compliance level, one of FF_COMPLIANCE_* - * - * @return 1 if codec with ID codec_id can be stored in ofmt, 0 if it cannot. - * A negative number if this information is not available. - */ -int avformat_query_codec(const AVOutputFormat *ofmt, enum AVCodecID codec_id, - int std_compliance); - -/** - * @defgroup riff_fourcc RIFF FourCCs - * @{ - * Get the tables mapping RIFF FourCCs to libavcodec AVCodecIDs. The tables are - * meant to be passed to av_codec_get_id()/av_codec_get_tag() as in the - * following code: - * @code - * uint32_t tag = MKTAG('H', '2', '6', '4'); - * const struct AVCodecTag *table[] = { avformat_get_riff_video_tags(), 0 }; - * enum AVCodecID id = av_codec_get_id(table, tag); - * @endcode - */ -/** - * @return the table mapping RIFF FourCCs for video to libavcodec AVCodecID. - */ -const struct AVCodecTag *avformat_get_riff_video_tags(void); -/** - * @return the table mapping RIFF FourCCs for audio to AVCodecID. - */ -const struct AVCodecTag *avformat_get_riff_audio_tags(void); -/** - * @return the table mapping MOV FourCCs for video to libavcodec AVCodecID. - */ -const struct AVCodecTag *avformat_get_mov_video_tags(void); -/** - * @return the table mapping MOV FourCCs for audio to AVCodecID. - */ -const struct AVCodecTag *avformat_get_mov_audio_tags(void); - -/** - * @} - */ - -/** - * Guess the sample aspect ratio of a frame, based on both the stream and the - * frame aspect ratio. - * - * Since the frame aspect ratio is set by the codec but the stream aspect ratio - * is set by the demuxer, these two may not be equal. This function tries to - * return the value that you should use if you would like to display the frame. - * - * Basic logic is to use the stream aspect ratio if it is set to something sane - * otherwise use the frame aspect ratio. This way a container setting, which is - * usually easy to modify can override the coded value in the frames. - * - * @param format the format context which the stream is part of - * @param stream the stream which the frame is part of - * @param frame the frame with the aspect ratio to be determined - * @return the guessed (valid) sample_aspect_ratio, 0/1 if no idea - */ -AVRational av_guess_sample_aspect_ratio(AVFormatContext *format, AVStream *stream, AVFrame *frame); - -/** - * Guess the frame rate, based on both the container and codec information. - * - * @param ctx the format context which the stream is part of - * @param stream the stream which the frame is part of - * @param frame the frame for which the frame rate should be determined, may be NULL - * @return the guessed (valid) frame rate, 0/1 if no idea - */ -AVRational av_guess_frame_rate(AVFormatContext *ctx, AVStream *stream, AVFrame *frame); - -/** - * Check if the stream st contained in s is matched by the stream specifier - * spec. - * - * See the "stream specifiers" chapter in the documentation for the syntax - * of spec. - * - * @return >0 if st is matched by spec; - * 0 if st is not matched by spec; - * AVERROR code if spec is invalid - * - * @note A stream specifier can match several streams in the format. - */ -int avformat_match_stream_specifier(AVFormatContext *s, AVStream *st, - const char *spec); - -int avformat_queue_attached_pictures(AVFormatContext *s); - -/** - * Apply a list of bitstream filters to a packet. - * - * @param codec AVCodecContext, usually from an AVStream - * @param pkt the packet to apply filters to. If, on success, the returned - * packet has size == 0 and side_data_elems == 0, it indicates that - * the packet should be dropped - * @param bsfc a NULL-terminated list of filters to apply - * @return >=0 on success; - * AVERROR code on failure - */ -#if FF_API_OLD_BSF -attribute_deprecated -int av_apply_bitstream_filters(AVCodecContext *codec, AVPacket *pkt, - AVBitStreamFilterContext *bsfc); -#endif - -enum AVTimebaseSource { - AVFMT_TBCF_AUTO = -1, - AVFMT_TBCF_DECODER, - AVFMT_TBCF_DEMUXER, -#if FF_API_R_FRAME_RATE - AVFMT_TBCF_R_FRAMERATE, -#endif -}; - -/** - * Transfer internal timing information from one stream to another. - * - * This function is useful when doing stream copy. - * - * @param ofmt target output format for ost - * @param ost output stream which needs timings copy and adjustments - * @param ist reference input stream to copy timings from - * @param copy_tb define from where the stream codec timebase needs to be imported - */ -int avformat_transfer_internal_stream_timing_info(const AVOutputFormat *ofmt, - AVStream *ost, const AVStream *ist, - enum AVTimebaseSource copy_tb); - -/** - * Get the internal codec timebase from a stream. - * - * @param st input stream to extract the timebase from - */ -AVRational av_stream_get_codec_timebase(const AVStream *st); - -/** - * @} - */ - -#endif /* AVFORMAT_AVFORMAT_H */ diff --git a/Externals/ffmpeg/include/libavformat/avio.h b/Externals/ffmpeg/include/libavformat/avio.h deleted file mode 100644 index b1ce1d1c72ec..000000000000 --- a/Externals/ffmpeg/include/libavformat/avio.h +++ /dev/null @@ -1,801 +0,0 @@ -/* - * copyright (c) 2001 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ -#ifndef AVFORMAT_AVIO_H -#define AVFORMAT_AVIO_H - -/** - * @file - * @ingroup lavf_io - * Buffered I/O operations - */ - -#include - -#include "libavutil/common.h" -#include "libavutil/dict.h" -#include "libavutil/log.h" - -#include "libavformat/version.h" - -#define AVIO_SEEKABLE_NORMAL 0x0001 /**< Seeking works like for a local file */ - -/** - * Callback for checking whether to abort blocking functions. - * AVERROR_EXIT is returned in this case by the interrupted - * function. During blocking operations, callback is called with - * opaque as parameter. If the callback returns 1, the - * blocking operation will be aborted. - * - * No members can be added to this struct without a major bump, if - * new elements have been added after this struct in AVFormatContext - * or AVIOContext. - */ -typedef struct AVIOInterruptCB { - int (*callback)(void*); - void *opaque; -} AVIOInterruptCB; - -/** - * Directory entry types. - */ -enum AVIODirEntryType { - AVIO_ENTRY_UNKNOWN, - AVIO_ENTRY_BLOCK_DEVICE, - AVIO_ENTRY_CHARACTER_DEVICE, - AVIO_ENTRY_DIRECTORY, - AVIO_ENTRY_NAMED_PIPE, - AVIO_ENTRY_SYMBOLIC_LINK, - AVIO_ENTRY_SOCKET, - AVIO_ENTRY_FILE, - AVIO_ENTRY_SERVER, - AVIO_ENTRY_SHARE, - AVIO_ENTRY_WORKGROUP, -}; - -/** - * Describes single entry of the directory. - * - * Only name and type fields are guaranteed be set. - * Rest of fields are protocol or/and platform dependent and might be unknown. - */ -typedef struct AVIODirEntry { - char *name; /**< Filename */ - int type; /**< Type of the entry */ - int utf8; /**< Set to 1 when name is encoded with UTF-8, 0 otherwise. - Name can be encoded with UTF-8 even though 0 is set. */ - int64_t size; /**< File size in bytes, -1 if unknown. */ - int64_t modification_timestamp; /**< Time of last modification in microseconds since unix - epoch, -1 if unknown. */ - int64_t access_timestamp; /**< Time of last access in microseconds since unix epoch, - -1 if unknown. */ - int64_t status_change_timestamp; /**< Time of last status change in microseconds since unix - epoch, -1 if unknown. */ - int64_t user_id; /**< User ID of owner, -1 if unknown. */ - int64_t group_id; /**< Group ID of owner, -1 if unknown. */ - int64_t filemode; /**< Unix file mode, -1 if unknown. */ -} AVIODirEntry; - -typedef struct AVIODirContext { - struct URLContext *url_context; -} AVIODirContext; - -/** - * Different data types that can be returned via the AVIO - * write_data_type callback. - */ -enum AVIODataMarkerType { - /** - * Header data; this needs to be present for the stream to be decodeable. - */ - AVIO_DATA_MARKER_HEADER, - /** - * A point in the output bytestream where a decoder can start decoding - * (i.e. a keyframe). A demuxer/decoder given the data flagged with - * AVIO_DATA_MARKER_HEADER, followed by any AVIO_DATA_MARKER_SYNC_POINT, - * should give decodeable results. - */ - AVIO_DATA_MARKER_SYNC_POINT, - /** - * A point in the output bytestream where a demuxer can start parsing - * (for non self synchronizing bytestream formats). That is, any - * non-keyframe packet start point. - */ - AVIO_DATA_MARKER_BOUNDARY_POINT, - /** - * This is any, unlabelled data. It can either be a muxer not marking - * any positions at all, it can be an actual boundary/sync point - * that the muxer chooses not to mark, or a later part of a packet/fragment - * that is cut into multiple write callbacks due to limited IO buffer size. - */ - AVIO_DATA_MARKER_UNKNOWN, - /** - * Trailer data, which doesn't contain actual content, but only for - * finalizing the output file. - */ - AVIO_DATA_MARKER_TRAILER -}; - -/** - * Bytestream IO Context. - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * sizeof(AVIOContext) must not be used outside libav*. - * - * @note None of the function pointers in AVIOContext should be called - * directly, they should only be set by the client application - * when implementing custom I/O. Normally these are set to the - * function pointers specified in avio_alloc_context() - */ -typedef struct AVIOContext { - /** - * A class for private options. - * - * If this AVIOContext is created by avio_open2(), av_class is set and - * passes the options down to protocols. - * - * If this AVIOContext is manually allocated, then av_class may be set by - * the caller. - * - * warning -- this field can be NULL, be sure to not pass this AVIOContext - * to any av_opt_* functions in that case. - */ - const AVClass *av_class; - - /* - * The following shows the relationship between buffer, buf_ptr, buf_end, buf_size, - * and pos, when reading and when writing (since AVIOContext is used for both): - * - ********************************************************************************** - * READING - ********************************************************************************** - * - * | buffer_size | - * |---------------------------------------| - * | | - * - * buffer buf_ptr buf_end - * +---------------+-----------------------+ - * |/ / / / / / / /|/ / / / / / /| | - * read buffer: |/ / consumed / | to be read /| | - * |/ / / / / / / /|/ / / / / / /| | - * +---------------+-----------------------+ - * - * pos - * +-------------------------------------------+-----------------+ - * input file: | | | - * +-------------------------------------------+-----------------+ - * - * - ********************************************************************************** - * WRITING - ********************************************************************************** - * - * | buffer_size | - * |-------------------------------| - * | | - * - * buffer buf_ptr buf_end - * +-------------------+-----------+ - * |/ / / / / / / / / /| | - * write buffer: | / to be flushed / | | - * |/ / / / / / / / / /| | - * +-------------------+-----------+ - * - * pos - * +--------------------------+-----------------------------------+ - * output file: | | | - * +--------------------------+-----------------------------------+ - * - */ - unsigned char *buffer; /**< Start of the buffer. */ - int buffer_size; /**< Maximum buffer size */ - unsigned char *buf_ptr; /**< Current position in the buffer */ - unsigned char *buf_end; /**< End of the data, may be less than - buffer+buffer_size if the read function returned - less data than requested, e.g. for streams where - no more data has been received yet. */ - void *opaque; /**< A private pointer, passed to the read/write/seek/... - functions. */ - int (*read_packet)(void *opaque, uint8_t *buf, int buf_size); - int (*write_packet)(void *opaque, uint8_t *buf, int buf_size); - int64_t (*seek)(void *opaque, int64_t offset, int whence); - int64_t pos; /**< position in the file of the current buffer */ - int must_flush; /**< true if the next seek should flush */ - int eof_reached; /**< true if eof reached */ - int write_flag; /**< true if open for writing */ - int max_packet_size; - unsigned long checksum; - unsigned char *checksum_ptr; - unsigned long (*update_checksum)(unsigned long checksum, const uint8_t *buf, unsigned int size); - int error; /**< contains the error code or 0 if no error happened */ - /** - * Pause or resume playback for network streaming protocols - e.g. MMS. - */ - int (*read_pause)(void *opaque, int pause); - /** - * Seek to a given timestamp in stream with the specified stream_index. - * Needed for some network streaming protocols which don't support seeking - * to byte position. - */ - int64_t (*read_seek)(void *opaque, int stream_index, - int64_t timestamp, int flags); - /** - * A combination of AVIO_SEEKABLE_ flags or 0 when the stream is not seekable. - */ - int seekable; - - /** - * max filesize, used to limit allocations - * This field is internal to libavformat and access from outside is not allowed. - */ - int64_t maxsize; - - /** - * avio_read and avio_write should if possible be satisfied directly - * instead of going through a buffer, and avio_seek will always - * call the underlying seek function directly. - */ - int direct; - - /** - * Bytes read statistic - * This field is internal to libavformat and access from outside is not allowed. - */ - int64_t bytes_read; - - /** - * seek statistic - * This field is internal to libavformat and access from outside is not allowed. - */ - int seek_count; - - /** - * writeout statistic - * This field is internal to libavformat and access from outside is not allowed. - */ - int writeout_count; - - /** - * Original buffer size - * used internally after probing and ensure seekback to reset the buffer size - * This field is internal to libavformat and access from outside is not allowed. - */ - int orig_buffer_size; - - /** - * Threshold to favor readahead over seek. - * This is current internal only, do not use from outside. - */ - int short_seek_threshold; - - /** - * ',' separated list of allowed protocols. - */ - const char *protocol_whitelist; - - /** - * ',' separated list of disallowed protocols. - */ - const char *protocol_blacklist; - - /** - * A callback that is used instead of write_packet. - */ - int (*write_data_type)(void *opaque, uint8_t *buf, int buf_size, - enum AVIODataMarkerType type, int64_t time); - /** - * If set, don't call write_data_type separately for AVIO_DATA_MARKER_BOUNDARY_POINT, - * but ignore them and treat them as AVIO_DATA_MARKER_UNKNOWN (to avoid needlessly - * small chunks of data returned from the callback). - */ - int ignore_boundary_point; - - /** - * Internal, not meant to be used from outside of AVIOContext. - */ - enum AVIODataMarkerType current_type; - int64_t last_time; -} AVIOContext; - -/** - * Return the name of the protocol that will handle the passed URL. - * - * NULL is returned if no protocol could be found for the given URL. - * - * @return Name of the protocol or NULL. - */ -const char *avio_find_protocol_name(const char *url); - -/** - * Return AVIO_FLAG_* access flags corresponding to the access permissions - * of the resource in url, or a negative value corresponding to an - * AVERROR code in case of failure. The returned access flags are - * masked by the value in flags. - * - * @note This function is intrinsically unsafe, in the sense that the - * checked resource may change its existence or permission status from - * one call to another. Thus you should not trust the returned value, - * unless you are sure that no other processes are accessing the - * checked resource. - */ -int avio_check(const char *url, int flags); - -/** - * Move or rename a resource. - * - * @note url_src and url_dst should share the same protocol and authority. - * - * @param url_src url to resource to be moved - * @param url_dst new url to resource if the operation succeeded - * @return >=0 on success or negative on error. - */ -int avpriv_io_move(const char *url_src, const char *url_dst); - -/** - * Delete a resource. - * - * @param url resource to be deleted. - * @return >=0 on success or negative on error. - */ -int avpriv_io_delete(const char *url); - -/** - * Open directory for reading. - * - * @param s directory read context. Pointer to a NULL pointer must be passed. - * @param url directory to be listed. - * @param options A dictionary filled with protocol-private options. On return - * this parameter will be destroyed and replaced with a dictionary - * containing options that were not found. May be NULL. - * @return >=0 on success or negative on error. - */ -int avio_open_dir(AVIODirContext **s, const char *url, AVDictionary **options); - -/** - * Get next directory entry. - * - * Returned entry must be freed with avio_free_directory_entry(). In particular - * it may outlive AVIODirContext. - * - * @param s directory read context. - * @param[out] next next entry or NULL when no more entries. - * @return >=0 on success or negative on error. End of list is not considered an - * error. - */ -int avio_read_dir(AVIODirContext *s, AVIODirEntry **next); - -/** - * Close directory. - * - * @note Entries created using avio_read_dir() are not deleted and must be - * freeded with avio_free_directory_entry(). - * - * @param s directory read context. - * @return >=0 on success or negative on error. - */ -int avio_close_dir(AVIODirContext **s); - -/** - * Free entry allocated by avio_read_dir(). - * - * @param entry entry to be freed. - */ -void avio_free_directory_entry(AVIODirEntry **entry); - -/** - * Allocate and initialize an AVIOContext for buffered I/O. It must be later - * freed with av_free(). - * - * @param buffer Memory block for input/output operations via AVIOContext. - * The buffer must be allocated with av_malloc() and friends. - * It may be freed and replaced with a new buffer by libavformat. - * AVIOContext.buffer holds the buffer currently in use, - * which must be later freed with av_free(). - * @param buffer_size The buffer size is very important for performance. - * For protocols with fixed blocksize it should be set to this blocksize. - * For others a typical size is a cache page, e.g. 4kb. - * @param write_flag Set to 1 if the buffer should be writable, 0 otherwise. - * @param opaque An opaque pointer to user-specific data. - * @param read_packet A function for refilling the buffer, may be NULL. - * @param write_packet A function for writing the buffer contents, may be NULL. - * The function may not change the input buffers content. - * @param seek A function for seeking to specified byte position, may be NULL. - * - * @return Allocated AVIOContext or NULL on failure. - */ -AVIOContext *avio_alloc_context( - unsigned char *buffer, - int buffer_size, - int write_flag, - void *opaque, - int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), - int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), - int64_t (*seek)(void *opaque, int64_t offset, int whence)); - -void avio_w8(AVIOContext *s, int b); -void avio_write(AVIOContext *s, const unsigned char *buf, int size); -void avio_wl64(AVIOContext *s, uint64_t val); -void avio_wb64(AVIOContext *s, uint64_t val); -void avio_wl32(AVIOContext *s, unsigned int val); -void avio_wb32(AVIOContext *s, unsigned int val); -void avio_wl24(AVIOContext *s, unsigned int val); -void avio_wb24(AVIOContext *s, unsigned int val); -void avio_wl16(AVIOContext *s, unsigned int val); -void avio_wb16(AVIOContext *s, unsigned int val); - -/** - * Write a NULL-terminated string. - * @return number of bytes written. - */ -int avio_put_str(AVIOContext *s, const char *str); - -/** - * Convert an UTF-8 string to UTF-16LE and write it. - * @param s the AVIOContext - * @param str NULL-terminated UTF-8 string - * - * @return number of bytes written. - */ -int avio_put_str16le(AVIOContext *s, const char *str); - -/** - * Convert an UTF-8 string to UTF-16BE and write it. - * @param s the AVIOContext - * @param str NULL-terminated UTF-8 string - * - * @return number of bytes written. - */ -int avio_put_str16be(AVIOContext *s, const char *str); - -/** - * Mark the written bytestream as a specific type. - * - * Zero-length ranges are omitted from the output. - * - * @param time the stream time the current bytestream pos corresponds to - * (in AV_TIME_BASE units), or AV_NOPTS_VALUE if unknown or not - * applicable - * @param type the kind of data written starting at the current pos - */ -void avio_write_marker(AVIOContext *s, int64_t time, enum AVIODataMarkerType type); - -/** - * ORing this as the "whence" parameter to a seek function causes it to - * return the filesize without seeking anywhere. Supporting this is optional. - * If it is not supported then the seek function will return <0. - */ -#define AVSEEK_SIZE 0x10000 - -/** - * Passing this flag as the "whence" parameter to a seek function causes it to - * seek by any means (like reopening and linear reading) or other normally unreasonable - * means that can be extremely slow. - * This may be ignored by the seek code. - */ -#define AVSEEK_FORCE 0x20000 - -/** - * fseek() equivalent for AVIOContext. - * @return new position or AVERROR. - */ -int64_t avio_seek(AVIOContext *s, int64_t offset, int whence); - -/** - * Skip given number of bytes forward - * @return new position or AVERROR. - */ -int64_t avio_skip(AVIOContext *s, int64_t offset); - -/** - * ftell() equivalent for AVIOContext. - * @return position or AVERROR. - */ -static av_always_inline int64_t avio_tell(AVIOContext *s) -{ - return avio_seek(s, 0, SEEK_CUR); -} - -/** - * Get the filesize. - * @return filesize or AVERROR - */ -int64_t avio_size(AVIOContext *s); - -/** - * feof() equivalent for AVIOContext. - * @return non zero if and only if end of file - */ -int avio_feof(AVIOContext *s); -#if FF_API_URL_FEOF -/** - * @deprecated use avio_feof() - */ -attribute_deprecated -int url_feof(AVIOContext *s); -#endif - -/** @warning Writes up to 4 KiB per call */ -int avio_printf(AVIOContext *s, const char *fmt, ...) av_printf_format(2, 3); - -/** - * Force flushing of buffered data. - * - * For write streams, force the buffered data to be immediately written to the output, - * without to wait to fill the internal buffer. - * - * For read streams, discard all currently buffered data, and advance the - * reported file position to that of the underlying stream. This does not - * read new data, and does not perform any seeks. - */ -void avio_flush(AVIOContext *s); - -/** - * Read size bytes from AVIOContext into buf. - * @return number of bytes read or AVERROR - */ -int avio_read(AVIOContext *s, unsigned char *buf, int size); - -/** - * @name Functions for reading from AVIOContext - * @{ - * - * @note return 0 if EOF, so you cannot use it if EOF handling is - * necessary - */ -int avio_r8 (AVIOContext *s); -unsigned int avio_rl16(AVIOContext *s); -unsigned int avio_rl24(AVIOContext *s); -unsigned int avio_rl32(AVIOContext *s); -uint64_t avio_rl64(AVIOContext *s); -unsigned int avio_rb16(AVIOContext *s); -unsigned int avio_rb24(AVIOContext *s); -unsigned int avio_rb32(AVIOContext *s); -uint64_t avio_rb64(AVIOContext *s); -/** - * @} - */ - -/** - * Read a string from pb into buf. The reading will terminate when either - * a NULL character was encountered, maxlen bytes have been read, or nothing - * more can be read from pb. The result is guaranteed to be NULL-terminated, it - * will be truncated if buf is too small. - * Note that the string is not interpreted or validated in any way, it - * might get truncated in the middle of a sequence for multi-byte encodings. - * - * @return number of bytes read (is always <= maxlen). - * If reading ends on EOF or error, the return value will be one more than - * bytes actually read. - */ -int avio_get_str(AVIOContext *pb, int maxlen, char *buf, int buflen); - -/** - * Read a UTF-16 string from pb and convert it to UTF-8. - * The reading will terminate when either a null or invalid character was - * encountered or maxlen bytes have been read. - * @return number of bytes read (is always <= maxlen) - */ -int avio_get_str16le(AVIOContext *pb, int maxlen, char *buf, int buflen); -int avio_get_str16be(AVIOContext *pb, int maxlen, char *buf, int buflen); - - -/** - * @name URL open modes - * The flags argument to avio_open must be one of the following - * constants, optionally ORed with other flags. - * @{ - */ -#define AVIO_FLAG_READ 1 /**< read-only */ -#define AVIO_FLAG_WRITE 2 /**< write-only */ -#define AVIO_FLAG_READ_WRITE (AVIO_FLAG_READ|AVIO_FLAG_WRITE) /**< read-write pseudo flag */ -/** - * @} - */ - -/** - * Use non-blocking mode. - * If this flag is set, operations on the context will return - * AVERROR(EAGAIN) if they can not be performed immediately. - * If this flag is not set, operations on the context will never return - * AVERROR(EAGAIN). - * Note that this flag does not affect the opening/connecting of the - * context. Connecting a protocol will always block if necessary (e.g. on - * network protocols) but never hang (e.g. on busy devices). - * Warning: non-blocking protocols is work-in-progress; this flag may be - * silently ignored. - */ -#define AVIO_FLAG_NONBLOCK 8 - -/** - * Use direct mode. - * avio_read and avio_write should if possible be satisfied directly - * instead of going through a buffer, and avio_seek will always - * call the underlying seek function directly. - */ -#define AVIO_FLAG_DIRECT 0x8000 - -/** - * Create and initialize a AVIOContext for accessing the - * resource indicated by url. - * @note When the resource indicated by url has been opened in - * read+write mode, the AVIOContext can be used only for writing. - * - * @param s Used to return the pointer to the created AVIOContext. - * In case of failure the pointed to value is set to NULL. - * @param url resource to access - * @param flags flags which control how the resource indicated by url - * is to be opened - * @return >= 0 in case of success, a negative value corresponding to an - * AVERROR code in case of failure - */ -int avio_open(AVIOContext **s, const char *url, int flags); - -/** - * Create and initialize a AVIOContext for accessing the - * resource indicated by url. - * @note When the resource indicated by url has been opened in - * read+write mode, the AVIOContext can be used only for writing. - * - * @param s Used to return the pointer to the created AVIOContext. - * In case of failure the pointed to value is set to NULL. - * @param url resource to access - * @param flags flags which control how the resource indicated by url - * is to be opened - * @param int_cb an interrupt callback to be used at the protocols level - * @param options A dictionary filled with protocol-private options. On return - * this parameter will be destroyed and replaced with a dict containing options - * that were not found. May be NULL. - * @return >= 0 in case of success, a negative value corresponding to an - * AVERROR code in case of failure - */ -int avio_open2(AVIOContext **s, const char *url, int flags, - const AVIOInterruptCB *int_cb, AVDictionary **options); - -/** - * Close the resource accessed by the AVIOContext s and free it. - * This function can only be used if s was opened by avio_open(). - * - * The internal buffer is automatically flushed before closing the - * resource. - * - * @return 0 on success, an AVERROR < 0 on error. - * @see avio_closep - */ -int avio_close(AVIOContext *s); - -/** - * Close the resource accessed by the AVIOContext *s, free it - * and set the pointer pointing to it to NULL. - * This function can only be used if s was opened by avio_open(). - * - * The internal buffer is automatically flushed before closing the - * resource. - * - * @return 0 on success, an AVERROR < 0 on error. - * @see avio_close - */ -int avio_closep(AVIOContext **s); - - -/** - * Open a write only memory stream. - * - * @param s new IO context - * @return zero if no error. - */ -int avio_open_dyn_buf(AVIOContext **s); - -/** - * Return the written size and a pointer to the buffer. The buffer - * must be freed with av_free(). - * Padding of AV_INPUT_BUFFER_PADDING_SIZE is added to the buffer. - * - * @param s IO context - * @param pbuffer pointer to a byte buffer - * @return the length of the byte buffer - */ -int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer); - -/** - * Iterate through names of available protocols. - * - * @param opaque A private pointer representing current protocol. - * It must be a pointer to NULL on first iteration and will - * be updated by successive calls to avio_enum_protocols. - * @param output If set to 1, iterate over output protocols, - * otherwise over input protocols. - * - * @return A static string containing the name of current protocol or NULL - */ -const char *avio_enum_protocols(void **opaque, int output); - -/** - * Pause and resume playing - only meaningful if using a network streaming - * protocol (e.g. MMS). - * - * @param h IO context from which to call the read_pause function pointer - * @param pause 1 for pause, 0 for resume - */ -int avio_pause(AVIOContext *h, int pause); - -/** - * Seek to a given timestamp relative to some component stream. - * Only meaningful if using a network streaming protocol (e.g. MMS.). - * - * @param h IO context from which to call the seek function pointers - * @param stream_index The stream index that the timestamp is relative to. - * If stream_index is (-1) the timestamp should be in AV_TIME_BASE - * units from the beginning of the presentation. - * If a stream_index >= 0 is used and the protocol does not support - * seeking based on component streams, the call will fail. - * @param timestamp timestamp in AVStream.time_base units - * or if there is no stream specified then in AV_TIME_BASE units. - * @param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE - * and AVSEEK_FLAG_ANY. The protocol may silently ignore - * AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will - * fail if used and not supported. - * @return >= 0 on success - * @see AVInputFormat::read_seek - */ -int64_t avio_seek_time(AVIOContext *h, int stream_index, - int64_t timestamp, int flags); - -/* Avoid a warning. The header can not be included because it breaks c++. */ -struct AVBPrint; - -/** - * Read contents of h into print buffer, up to max_size bytes, or up to EOF. - * - * @return 0 for success (max_size bytes read or EOF reached), negative error - * code otherwise - */ -int avio_read_to_bprint(AVIOContext *h, struct AVBPrint *pb, size_t max_size); - -/** - * Accept and allocate a client context on a server context. - * @param s the server context - * @param c the client context, must be unallocated - * @return >= 0 on success or a negative value corresponding - * to an AVERROR on failure - */ -int avio_accept(AVIOContext *s, AVIOContext **c); - -/** - * Perform one step of the protocol handshake to accept a new client. - * This function must be called on a client returned by avio_accept() before - * using it as a read/write context. - * It is separate from avio_accept() because it may block. - * A step of the handshake is defined by places where the application may - * decide to change the proceedings. - * For example, on a protocol with a request header and a reply header, each - * one can constitute a step because the application may use the parameters - * from the request to change parameters in the reply; or each individual - * chunk of the request can constitute a step. - * If the handshake is already finished, avio_handshake() does nothing and - * returns 0 immediately. - * - * @param c the client context to perform the handshake on - * @return 0 on a complete and successful handshake - * > 0 if the handshake progressed, but is not complete - * < 0 for an AVERROR code - */ -int avio_handshake(AVIOContext *c); -#endif /* AVFORMAT_AVIO_H */ diff --git a/Externals/ffmpeg/include/libavformat/version.h b/Externals/ffmpeg/include/libavformat/version.h deleted file mode 100644 index ad25596d9c61..000000000000 --- a/Externals/ffmpeg/include/libavformat/version.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Version macros. - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVFORMAT_VERSION_H -#define AVFORMAT_VERSION_H - -/** - * @file - * @ingroup libavf - * Libavformat version macros - */ - -#include "libavutil/version.h" - -// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium) -// Also please add any ticket numbers that you believe might be affected here -#define LIBAVFORMAT_VERSION_MAJOR 57 -#define LIBAVFORMAT_VERSION_MINOR 56 -#define LIBAVFORMAT_VERSION_MICRO 101 - -#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ - LIBAVFORMAT_VERSION_MINOR, \ - LIBAVFORMAT_VERSION_MICRO) -#define LIBAVFORMAT_VERSION AV_VERSION(LIBAVFORMAT_VERSION_MAJOR, \ - LIBAVFORMAT_VERSION_MINOR, \ - LIBAVFORMAT_VERSION_MICRO) -#define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT - -#define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION) - -/** - * FF_API_* defines may be placed below to indicate public API that will be - * dropped at a future version bump. The defines themselves are not part of - * the public API and may change, break or disappear at any time. - * - * @note, when bumping the major version it is recommended to manually - * disable each FF_API_* in its own commit instead of disabling them all - * at once through the bump. This improves the git bisect-ability of the change. - * - */ -#ifndef FF_API_LAVF_BITEXACT -#define FF_API_LAVF_BITEXACT (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_LAVF_FRAC -#define FF_API_LAVF_FRAC (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_LAVF_CODEC_TB -#define FF_API_LAVF_CODEC_TB (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_URL_FEOF -#define FF_API_URL_FEOF (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_LAVF_FMT_RAWPICTURE -#define FF_API_LAVF_FMT_RAWPICTURE (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_COMPUTE_PKT_FIELDS2 -#define FF_API_COMPUTE_PKT_FIELDS2 (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_OLD_OPEN_CALLBACKS -#define FF_API_OLD_OPEN_CALLBACKS (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_LAVF_AVCTX -#define FF_API_LAVF_AVCTX (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_NOCONST_GET_SIDE_DATA -#define FF_API_NOCONST_GET_SIDE_DATA (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_HTTP_USER_AGENT -#define FF_API_HTTP_USER_AGENT (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif - -#ifndef FF_API_R_FRAME_RATE -#define FF_API_R_FRAME_RATE 1 -#endif -#endif /* AVFORMAT_VERSION_H */ diff --git a/Externals/ffmpeg/include/libavutil/adler32.h b/Externals/ffmpeg/include/libavutil/adler32.h deleted file mode 100644 index a1f035b7340f..000000000000 --- a/Externals/ffmpeg/include/libavutil/adler32.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * copyright (c) 2006 Mans Rullgard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_adler32 - * Public header for Adler-32 hash function implementation. - */ - -#ifndef AVUTIL_ADLER32_H -#define AVUTIL_ADLER32_H - -#include -#include "attributes.h" - -/** - * @defgroup lavu_adler32 Adler-32 - * @ingroup lavu_hash - * Adler-32 hash function implementation. - * - * @{ - */ - -/** - * Calculate the Adler32 checksum of a buffer. - * - * Passing the return value to a subsequent av_adler32_update() call - * allows the checksum of multiple buffers to be calculated as though - * they were concatenated. - * - * @param adler initial checksum value - * @param buf pointer to input buffer - * @param len size of input buffer - * @return updated checksum - */ -unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf, - unsigned int len) av_pure; - -/** - * @} - */ - -#endif /* AVUTIL_ADLER32_H */ diff --git a/Externals/ffmpeg/include/libavutil/aes.h b/Externals/ffmpeg/include/libavutil/aes.h deleted file mode 100644 index 09efbda10739..000000000000 --- a/Externals/ffmpeg/include/libavutil/aes.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * copyright (c) 2007 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_AES_H -#define AVUTIL_AES_H - -#include - -#include "attributes.h" -#include "version.h" - -/** - * @defgroup lavu_aes AES - * @ingroup lavu_crypto - * @{ - */ - -extern const int av_aes_size; - -struct AVAES; - -/** - * Allocate an AVAES context. - */ -struct AVAES *av_aes_alloc(void); - -/** - * Initialize an AVAES context. - * @param key_bits 128, 192 or 256 - * @param decrypt 0 for encryption, 1 for decryption - */ -int av_aes_init(struct AVAES *a, const uint8_t *key, int key_bits, int decrypt); - -/** - * Encrypt or decrypt a buffer using a previously initialized context. - * @param count number of 16 byte blocks - * @param dst destination array, can be equal to src - * @param src source array, can be equal to dst - * @param iv initialization vector for CBC mode, if NULL then ECB will be used - * @param decrypt 0 for encryption, 1 for decryption - */ -void av_aes_crypt(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); - -/** - * @} - */ - -#endif /* AVUTIL_AES_H */ diff --git a/Externals/ffmpeg/include/libavutil/aes_ctr.h b/Externals/ffmpeg/include/libavutil/aes_ctr.h deleted file mode 100644 index f596fa6a46ba..000000000000 --- a/Externals/ffmpeg/include/libavutil/aes_ctr.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * AES-CTR cipher - * Copyright (c) 2015 Eran Kornblau - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_AES_CTR_H -#define AVUTIL_AES_CTR_H - -#include - -#include "attributes.h" -#include "version.h" - -#define AES_CTR_KEY_SIZE (16) -#define AES_CTR_IV_SIZE (8) - -struct AVAESCTR; - -/** - * Allocate an AVAESCTR context. - */ -struct AVAESCTR *av_aes_ctr_alloc(void); - -/** - * Initialize an AVAESCTR context. - * @param key encryption key, must have a length of AES_CTR_KEY_SIZE - */ -int av_aes_ctr_init(struct AVAESCTR *a, const uint8_t *key); - -/** - * Release an AVAESCTR context. - */ -void av_aes_ctr_free(struct AVAESCTR *a); - -/** - * Process a buffer using a previously initialized context. - * @param dst destination array, can be equal to src - * @param src source array, can be equal to dst - * @param size the size of src and dst - */ -void av_aes_ctr_crypt(struct AVAESCTR *a, uint8_t *dst, const uint8_t *src, int size); - -/** - * Get the current iv - */ -const uint8_t* av_aes_ctr_get_iv(struct AVAESCTR *a); - -/** - * Generate a random iv - */ -void av_aes_ctr_set_random_iv(struct AVAESCTR *a); - -/** - * Forcefully change the iv - */ -void av_aes_ctr_set_iv(struct AVAESCTR *a, const uint8_t* iv); - -/** - * Increment the top 64 bit of the iv (performed after each frame) - */ -void av_aes_ctr_increment_iv(struct AVAESCTR *a); - -/** - * @} - */ - -#endif /* AVUTIL_AES_CTR_H */ diff --git a/Externals/ffmpeg/include/libavutil/attributes.h b/Externals/ffmpeg/include/libavutil/attributes.h deleted file mode 100644 index 5c6b9deecb7b..000000000000 --- a/Externals/ffmpeg/include/libavutil/attributes.h +++ /dev/null @@ -1,168 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Macro definitions for various function/variable attributes - */ - -#ifndef AVUTIL_ATTRIBUTES_H -#define AVUTIL_ATTRIBUTES_H - -#ifdef __GNUC__ -# define AV_GCC_VERSION_AT_LEAST(x,y) (__GNUC__ > (x) || __GNUC__ == (x) && __GNUC_MINOR__ >= (y)) -# define AV_GCC_VERSION_AT_MOST(x,y) (__GNUC__ < (x) || __GNUC__ == (x) && __GNUC_MINOR__ <= (y)) -#else -# define AV_GCC_VERSION_AT_LEAST(x,y) 0 -# define AV_GCC_VERSION_AT_MOST(x,y) 0 -#endif - -#ifndef av_always_inline -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_always_inline __attribute__((always_inline)) inline -#elif defined(_MSC_VER) -# define av_always_inline __forceinline -#else -# define av_always_inline inline -#endif -#endif - -#ifndef av_extern_inline -#if defined(__ICL) && __ICL >= 1210 || defined(__GNUC_STDC_INLINE__) -# define av_extern_inline extern inline -#else -# define av_extern_inline inline -#endif -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,4) -# define av_warn_unused_result __attribute__((warn_unused_result)) -#else -# define av_warn_unused_result -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_noinline __attribute__((noinline)) -#elif defined(_MSC_VER) -# define av_noinline __declspec(noinline) -#else -# define av_noinline -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_pure __attribute__((pure)) -#else -# define av_pure -#endif - -#if AV_GCC_VERSION_AT_LEAST(2,6) -# define av_const __attribute__((const)) -#else -# define av_const -#endif - -#if AV_GCC_VERSION_AT_LEAST(4,3) -# define av_cold __attribute__((cold)) -#else -# define av_cold -#endif - -#if AV_GCC_VERSION_AT_LEAST(4,1) && !defined(__llvm__) -# define av_flatten __attribute__((flatten)) -#else -# define av_flatten -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define attribute_deprecated __attribute__((deprecated)) -#elif defined(_MSC_VER) -# define attribute_deprecated __declspec(deprecated) -#else -# define attribute_deprecated -#endif - -/** - * Disable warnings about deprecated features - * This is useful for sections of code kept for backward compatibility and - * scheduled for removal. - */ -#ifndef AV_NOWARN_DEPRECATED -#if AV_GCC_VERSION_AT_LEAST(4,6) -# define AV_NOWARN_DEPRECATED(code) \ - _Pragma("GCC diagnostic push") \ - _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \ - code \ - _Pragma("GCC diagnostic pop") -#elif defined(_MSC_VER) -# define AV_NOWARN_DEPRECATED(code) \ - __pragma(warning(push)) \ - __pragma(warning(disable : 4996)) \ - code; \ - __pragma(warning(pop)) -#else -# define AV_NOWARN_DEPRECATED(code) code -#endif -#endif - - -#if defined(__GNUC__) -# define av_unused __attribute__((unused)) -#else -# define av_unused -#endif - -/** - * Mark a variable as used and prevent the compiler from optimizing it - * away. This is useful for variables accessed only from inline - * assembler without the compiler being aware. - */ -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_used __attribute__((used)) -#else -# define av_used -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,3) -# define av_alias __attribute__((may_alias)) -#else -# define av_alias -#endif - -#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(__clang__) -# define av_uninit(x) x=x -#else -# define av_uninit(x) x -#endif - -#ifdef __GNUC__ -# define av_builtin_constant_p __builtin_constant_p -# define av_printf_format(fmtpos, attrpos) __attribute__((__format__(__printf__, fmtpos, attrpos))) -#else -# define av_builtin_constant_p(x) 0 -# define av_printf_format(fmtpos, attrpos) -#endif - -#if AV_GCC_VERSION_AT_LEAST(2,5) -# define av_noreturn __attribute__((noreturn)) -#else -# define av_noreturn -#endif - -#endif /* AVUTIL_ATTRIBUTES_H */ diff --git a/Externals/ffmpeg/include/libavutil/audio_fifo.h b/Externals/ffmpeg/include/libavutil/audio_fifo.h deleted file mode 100644 index d8a9194a8d30..000000000000 --- a/Externals/ffmpeg/include/libavutil/audio_fifo.h +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Audio FIFO - * Copyright (c) 2012 Justin Ruggles - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Audio FIFO Buffer - */ - -#ifndef AVUTIL_AUDIO_FIFO_H -#define AVUTIL_AUDIO_FIFO_H - -#include "avutil.h" -#include "fifo.h" -#include "samplefmt.h" - -/** - * @addtogroup lavu_audio - * @{ - * - * @defgroup lavu_audiofifo Audio FIFO Buffer - * @{ - */ - -/** - * Context for an Audio FIFO Buffer. - * - * - Operates at the sample level rather than the byte level. - * - Supports multiple channels with either planar or packed sample format. - * - Automatic reallocation when writing to a full buffer. - */ -typedef struct AVAudioFifo AVAudioFifo; - -/** - * Free an AVAudioFifo. - * - * @param af AVAudioFifo to free - */ -void av_audio_fifo_free(AVAudioFifo *af); - -/** - * Allocate an AVAudioFifo. - * - * @param sample_fmt sample format - * @param channels number of channels - * @param nb_samples initial allocation size, in samples - * @return newly allocated AVAudioFifo, or NULL on error - */ -AVAudioFifo *av_audio_fifo_alloc(enum AVSampleFormat sample_fmt, int channels, - int nb_samples); - -/** - * Reallocate an AVAudioFifo. - * - * @param af AVAudioFifo to reallocate - * @param nb_samples new allocation size, in samples - * @return 0 if OK, or negative AVERROR code on failure - */ -av_warn_unused_result -int av_audio_fifo_realloc(AVAudioFifo *af, int nb_samples); - -/** - * Write data to an AVAudioFifo. - * - * The AVAudioFifo will be reallocated automatically if the available space - * is less than nb_samples. - * - * @see enum AVSampleFormat - * The documentation for AVSampleFormat describes the data layout. - * - * @param af AVAudioFifo to write to - * @param data audio data plane pointers - * @param nb_samples number of samples to write - * @return number of samples actually written, or negative AVERROR - * code on failure. If successful, the number of samples - * actually written will always be nb_samples. - */ -int av_audio_fifo_write(AVAudioFifo *af, void **data, int nb_samples); - -/** - * Peek data from an AVAudioFifo. - * - * @see enum AVSampleFormat - * The documentation for AVSampleFormat describes the data layout. - * - * @param af AVAudioFifo to read from - * @param data audio data plane pointers - * @param nb_samples number of samples to peek - * @return number of samples actually peek, or negative AVERROR code - * on failure. The number of samples actually peek will not - * be greater than nb_samples, and will only be less than - * nb_samples if av_audio_fifo_size is less than nb_samples. - */ -int av_audio_fifo_peek(AVAudioFifo *af, void **data, int nb_samples); - -/** - * Peek data from an AVAudioFifo. - * - * @see enum AVSampleFormat - * The documentation for AVSampleFormat describes the data layout. - * - * @param af AVAudioFifo to read from - * @param data audio data plane pointers - * @param nb_samples number of samples to peek - * @param offset offset from current read position - * @return number of samples actually peek, or negative AVERROR code - * on failure. The number of samples actually peek will not - * be greater than nb_samples, and will only be less than - * nb_samples if av_audio_fifo_size is less than nb_samples. - */ -int av_audio_fifo_peek_at(AVAudioFifo *af, void **data, int nb_samples, int offset); - -/** - * Read data from an AVAudioFifo. - * - * @see enum AVSampleFormat - * The documentation for AVSampleFormat describes the data layout. - * - * @param af AVAudioFifo to read from - * @param data audio data plane pointers - * @param nb_samples number of samples to read - * @return number of samples actually read, or negative AVERROR code - * on failure. The number of samples actually read will not - * be greater than nb_samples, and will only be less than - * nb_samples if av_audio_fifo_size is less than nb_samples. - */ -int av_audio_fifo_read(AVAudioFifo *af, void **data, int nb_samples); - -/** - * Drain data from an AVAudioFifo. - * - * Removes the data without reading it. - * - * @param af AVAudioFifo to drain - * @param nb_samples number of samples to drain - * @return 0 if OK, or negative AVERROR code on failure - */ -int av_audio_fifo_drain(AVAudioFifo *af, int nb_samples); - -/** - * Reset the AVAudioFifo buffer. - * - * This empties all data in the buffer. - * - * @param af AVAudioFifo to reset - */ -void av_audio_fifo_reset(AVAudioFifo *af); - -/** - * Get the current number of samples in the AVAudioFifo available for reading. - * - * @param af the AVAudioFifo to query - * @return number of samples available for reading - */ -int av_audio_fifo_size(AVAudioFifo *af); - -/** - * Get the current number of samples in the AVAudioFifo available for writing. - * - * @param af the AVAudioFifo to query - * @return number of samples available for writing - */ -int av_audio_fifo_space(AVAudioFifo *af); - -/** - * @} - * @} - */ - -#endif /* AVUTIL_AUDIO_FIFO_H */ diff --git a/Externals/ffmpeg/include/libavutil/avassert.h b/Externals/ffmpeg/include/libavutil/avassert.h deleted file mode 100644 index 46f3fea58025..000000000000 --- a/Externals/ffmpeg/include/libavutil/avassert.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * copyright (c) 2010 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * simple assert() macros that are a bit more flexible than ISO C assert(). - * @author Michael Niedermayer - */ - -#ifndef AVUTIL_AVASSERT_H -#define AVUTIL_AVASSERT_H - -#include -#include "avutil.h" -#include "log.h" - -/** - * assert() equivalent, that is always enabled. - */ -#define av_assert0(cond) do { \ - if (!(cond)) { \ - av_log(NULL, AV_LOG_PANIC, "Assertion %s failed at %s:%d\n", \ - AV_STRINGIFY(cond), __FILE__, __LINE__); \ - abort(); \ - } \ -} while (0) - - -/** - * assert() equivalent, that does not lie in speed critical code. - * These asserts() thus can be enabled without fearing speed loss. - */ -#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0 -#define av_assert1(cond) av_assert0(cond) -#else -#define av_assert1(cond) ((void)0) -#endif - - -/** - * assert() equivalent, that does lie in speed critical code. - */ -#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1 -#define av_assert2(cond) av_assert0(cond) -#define av_assert2_fpu() av_assert0_fpu() -#else -#define av_assert2(cond) ((void)0) -#define av_assert2_fpu() ((void)0) -#endif - -/** - * Assert that floating point opperations can be executed. - * - * This will av_assert0() that the cpu is not in MMX state on X86 - */ -void av_assert0_fpu(void); - -#endif /* AVUTIL_AVASSERT_H */ diff --git a/Externals/ffmpeg/include/libavutil/avconfig.h b/Externals/ffmpeg/include/libavutil/avconfig.h deleted file mode 100644 index f10aa6186b4f..000000000000 --- a/Externals/ffmpeg/include/libavutil/avconfig.h +++ /dev/null @@ -1,6 +0,0 @@ -/* Generated by ffconf */ -#ifndef AVUTIL_AVCONFIG_H -#define AVUTIL_AVCONFIG_H -#define AV_HAVE_BIGENDIAN 0 -#define AV_HAVE_FAST_UNALIGNED 1 -#endif /* AVUTIL_AVCONFIG_H */ diff --git a/Externals/ffmpeg/include/libavutil/avstring.h b/Externals/ffmpeg/include/libavutil/avstring.h deleted file mode 100644 index dd2876990f26..000000000000 --- a/Externals/ffmpeg/include/libavutil/avstring.h +++ /dev/null @@ -1,402 +0,0 @@ -/* - * Copyright (c) 2007 Mans Rullgard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_AVSTRING_H -#define AVUTIL_AVSTRING_H - -#include -#include -#include "attributes.h" - -/** - * @addtogroup lavu_string - * @{ - */ - -/** - * Return non-zero if pfx is a prefix of str. If it is, *ptr is set to - * the address of the first character in str after the prefix. - * - * @param str input string - * @param pfx prefix to test - * @param ptr updated if the prefix is matched inside str - * @return non-zero if the prefix matches, zero otherwise - */ -int av_strstart(const char *str, const char *pfx, const char **ptr); - -/** - * Return non-zero if pfx is a prefix of str independent of case. If - * it is, *ptr is set to the address of the first character in str - * after the prefix. - * - * @param str input string - * @param pfx prefix to test - * @param ptr updated if the prefix is matched inside str - * @return non-zero if the prefix matches, zero otherwise - */ -int av_stristart(const char *str, const char *pfx, const char **ptr); - -/** - * Locate the first case-independent occurrence in the string haystack - * of the string needle. A zero-length string needle is considered to - * match at the start of haystack. - * - * This function is a case-insensitive version of the standard strstr(). - * - * @param haystack string to search in - * @param needle string to search for - * @return pointer to the located match within haystack - * or a null pointer if no match - */ -char *av_stristr(const char *haystack, const char *needle); - -/** - * Locate the first occurrence of the string needle in the string haystack - * where not more than hay_length characters are searched. A zero-length - * string needle is considered to match at the start of haystack. - * - * This function is a length-limited version of the standard strstr(). - * - * @param haystack string to search in - * @param needle string to search for - * @param hay_length length of string to search in - * @return pointer to the located match within haystack - * or a null pointer if no match - */ -char *av_strnstr(const char *haystack, const char *needle, size_t hay_length); - -/** - * Copy the string src to dst, but no more than size - 1 bytes, and - * null-terminate dst. - * - * This function is the same as BSD strlcpy(). - * - * @param dst destination buffer - * @param src source string - * @param size size of destination buffer - * @return the length of src - * - * @warning since the return value is the length of src, src absolutely - * _must_ be a properly 0-terminated string, otherwise this will read beyond - * the end of the buffer and possibly crash. - */ -size_t av_strlcpy(char *dst, const char *src, size_t size); - -/** - * Append the string src to the string dst, but to a total length of - * no more than size - 1 bytes, and null-terminate dst. - * - * This function is similar to BSD strlcat(), but differs when - * size <= strlen(dst). - * - * @param dst destination buffer - * @param src source string - * @param size size of destination buffer - * @return the total length of src and dst - * - * @warning since the return value use the length of src and dst, these - * absolutely _must_ be a properly 0-terminated strings, otherwise this - * will read beyond the end of the buffer and possibly crash. - */ -size_t av_strlcat(char *dst, const char *src, size_t size); - -/** - * Append output to a string, according to a format. Never write out of - * the destination buffer, and always put a terminating 0 within - * the buffer. - * @param dst destination buffer (string to which the output is - * appended) - * @param size total size of the destination buffer - * @param fmt printf-compatible format string, specifying how the - * following parameters are used - * @return the length of the string that would have been generated - * if enough space had been available - */ -size_t av_strlcatf(char *dst, size_t size, const char *fmt, ...) av_printf_format(3, 4); - -/** - * Get the count of continuous non zero chars starting from the beginning. - * - * @param len maximum number of characters to check in the string, that - * is the maximum value which is returned by the function - */ -static inline size_t av_strnlen(const char *s, size_t len) -{ - size_t i; - for (i = 0; i < len && s[i]; i++) - ; - return i; -} - -/** - * Print arguments following specified format into a large enough auto - * allocated buffer. It is similar to GNU asprintf(). - * @param fmt printf-compatible format string, specifying how the - * following parameters are used. - * @return the allocated string - * @note You have to free the string yourself with av_free(). - */ -char *av_asprintf(const char *fmt, ...) av_printf_format(1, 2); - -/** - * Convert a number to an av_malloced string. - */ -char *av_d2str(double d); - -/** - * Unescape the given string until a non escaped terminating char, - * and return the token corresponding to the unescaped string. - * - * The normal \ and ' escaping is supported. Leading and trailing - * whitespaces are removed, unless they are escaped with '\' or are - * enclosed between ''. - * - * @param buf the buffer to parse, buf will be updated to point to the - * terminating char - * @param term a 0-terminated list of terminating chars - * @return the malloced unescaped string, which must be av_freed by - * the user, NULL in case of allocation failure - */ -char *av_get_token(const char **buf, const char *term); - -/** - * Split the string into several tokens which can be accessed by - * successive calls to av_strtok(). - * - * A token is defined as a sequence of characters not belonging to the - * set specified in delim. - * - * On the first call to av_strtok(), s should point to the string to - * parse, and the value of saveptr is ignored. In subsequent calls, s - * should be NULL, and saveptr should be unchanged since the previous - * call. - * - * This function is similar to strtok_r() defined in POSIX.1. - * - * @param s the string to parse, may be NULL - * @param delim 0-terminated list of token delimiters, must be non-NULL - * @param saveptr user-provided pointer which points to stored - * information necessary for av_strtok() to continue scanning the same - * string. saveptr is updated to point to the next character after the - * first delimiter found, or to NULL if the string was terminated - * @return the found token, or NULL when no token is found - */ -char *av_strtok(char *s, const char *delim, char **saveptr); - -/** - * Locale-independent conversion of ASCII isdigit. - */ -static inline av_const int av_isdigit(int c) -{ - return c >= '0' && c <= '9'; -} - -/** - * Locale-independent conversion of ASCII isgraph. - */ -static inline av_const int av_isgraph(int c) -{ - return c > 32 && c < 127; -} - -/** - * Locale-independent conversion of ASCII isspace. - */ -static inline av_const int av_isspace(int c) -{ - return c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || - c == '\v'; -} - -/** - * Locale-independent conversion of ASCII characters to uppercase. - */ -static inline av_const int av_toupper(int c) -{ - if (c >= 'a' && c <= 'z') - c ^= 0x20; - return c; -} - -/** - * Locale-independent conversion of ASCII characters to lowercase. - */ -static inline av_const int av_tolower(int c) -{ - if (c >= 'A' && c <= 'Z') - c ^= 0x20; - return c; -} - -/** - * Locale-independent conversion of ASCII isxdigit. - */ -static inline av_const int av_isxdigit(int c) -{ - c = av_tolower(c); - return av_isdigit(c) || (c >= 'a' && c <= 'f'); -} - -/** - * Locale-independent case-insensitive compare. - * @note This means only ASCII-range characters are case-insensitive - */ -int av_strcasecmp(const char *a, const char *b); - -/** - * Locale-independent case-insensitive compare. - * @note This means only ASCII-range characters are case-insensitive - */ -int av_strncasecmp(const char *a, const char *b, size_t n); - - -/** - * Thread safe basename. - * @param path the path, on DOS both \ and / are considered separators. - * @return pointer to the basename substring. - */ -const char *av_basename(const char *path); - -/** - * Thread safe dirname. - * @param path the path, on DOS both \ and / are considered separators. - * @return the path with the separator replaced by the string terminator or ".". - * @note the function may change the input string. - */ -const char *av_dirname(char *path); - -/** - * Match instances of a name in a comma-separated list of names. - * List entries are checked from the start to the end of the names list, - * the first match ends further processing. If an entry prefixed with '-' - * matches, then 0 is returned. The "ALL" list entry is considered to - * match all names. - * - * @param name Name to look for. - * @param names List of names. - * @return 1 on match, 0 otherwise. - */ -int av_match_name(const char *name, const char *names); - -/** - * Append path component to the existing path. - * Path separator '/' is placed between when needed. - * Resulting string have to be freed with av_free(). - * @param path base path - * @param component component to be appended - * @return new path or NULL on error. - */ -char *av_append_path_component(const char *path, const char *component); - -enum AVEscapeMode { - AV_ESCAPE_MODE_AUTO, ///< Use auto-selected escaping mode. - AV_ESCAPE_MODE_BACKSLASH, ///< Use backslash escaping. - AV_ESCAPE_MODE_QUOTE, ///< Use single-quote escaping. -}; - -/** - * Consider spaces special and escape them even in the middle of the - * string. - * - * This is equivalent to adding the whitespace characters to the special - * characters lists, except it is guaranteed to use the exact same list - * of whitespace characters as the rest of libavutil. - */ -#define AV_ESCAPE_FLAG_WHITESPACE (1 << 0) - -/** - * Escape only specified special characters. - * Without this flag, escape also any characters that may be considered - * special by av_get_token(), such as the single quote. - */ -#define AV_ESCAPE_FLAG_STRICT (1 << 1) - -/** - * Escape string in src, and put the escaped string in an allocated - * string in *dst, which must be freed with av_free(). - * - * @param dst pointer where an allocated string is put - * @param src string to escape, must be non-NULL - * @param special_chars string containing the special characters which - * need to be escaped, can be NULL - * @param mode escape mode to employ, see AV_ESCAPE_MODE_* macros. - * Any unknown value for mode will be considered equivalent to - * AV_ESCAPE_MODE_BACKSLASH, but this behaviour can change without - * notice. - * @param flags flags which control how to escape, see AV_ESCAPE_FLAG_ macros - * @return the length of the allocated string, or a negative error code in case of error - * @see av_bprint_escape() - */ -av_warn_unused_result -int av_escape(char **dst, const char *src, const char *special_chars, - enum AVEscapeMode mode, int flags); - -#define AV_UTF8_FLAG_ACCEPT_INVALID_BIG_CODES 1 ///< accept codepoints over 0x10FFFF -#define AV_UTF8_FLAG_ACCEPT_NON_CHARACTERS 2 ///< accept non-characters - 0xFFFE and 0xFFFF -#define AV_UTF8_FLAG_ACCEPT_SURROGATES 4 ///< accept UTF-16 surrogates codes -#define AV_UTF8_FLAG_EXCLUDE_XML_INVALID_CONTROL_CODES 8 ///< exclude control codes not accepted by XML - -#define AV_UTF8_FLAG_ACCEPT_ALL \ - AV_UTF8_FLAG_ACCEPT_INVALID_BIG_CODES|AV_UTF8_FLAG_ACCEPT_NON_CHARACTERS|AV_UTF8_FLAG_ACCEPT_SURROGATES - -/** - * Read and decode a single UTF-8 code point (character) from the - * buffer in *buf, and update *buf to point to the next byte to - * decode. - * - * In case of an invalid byte sequence, the pointer will be updated to - * the next byte after the invalid sequence and the function will - * return an error code. - * - * Depending on the specified flags, the function will also fail in - * case the decoded code point does not belong to a valid range. - * - * @note For speed-relevant code a carefully implemented use of - * GET_UTF8() may be preferred. - * - * @param codep pointer used to return the parsed code in case of success. - * The value in *codep is set even in case the range check fails. - * @param bufp pointer to the address the first byte of the sequence - * to decode, updated by the function to point to the - * byte next after the decoded sequence - * @param buf_end pointer to the end of the buffer, points to the next - * byte past the last in the buffer. This is used to - * avoid buffer overreads (in case of an unfinished - * UTF-8 sequence towards the end of the buffer). - * @param flags a collection of AV_UTF8_FLAG_* flags - * @return >= 0 in case a sequence was successfully read, a negative - * value in case of invalid sequence - */ -av_warn_unused_result -int av_utf8_decode(int32_t *codep, const uint8_t **bufp, const uint8_t *buf_end, - unsigned int flags); - -/** - * Check if a name is in a list. - * @returns 0 if not found, or the 1 based index where it has been found in the - * list. - */ -int av_match_list(const char *name, const char *list, char separator); - -/** - * @} - */ - -#endif /* AVUTIL_AVSTRING_H */ diff --git a/Externals/ffmpeg/include/libavutil/avutil.h b/Externals/ffmpeg/include/libavutil/avutil.h deleted file mode 100644 index 29dd830bf5e9..000000000000 --- a/Externals/ffmpeg/include/libavutil/avutil.h +++ /dev/null @@ -1,345 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_AVUTIL_H -#define AVUTIL_AVUTIL_H - -/** - * @file - * @ingroup lavu - * Convenience header that includes @ref lavu "libavutil"'s core. - */ - -/** - * @mainpage - * - * @section ffmpeg_intro Introduction - * - * This document describes the usage of the different libraries - * provided by FFmpeg. - * - * @li @ref libavc "libavcodec" encoding/decoding library - * @li @ref lavfi "libavfilter" graph-based frame editing library - * @li @ref libavf "libavformat" I/O and muxing/demuxing library - * @li @ref lavd "libavdevice" special devices muxing/demuxing library - * @li @ref lavu "libavutil" common utility library - * @li @ref lswr "libswresample" audio resampling, format conversion and mixing - * @li @ref lpp "libpostproc" post processing library - * @li @ref libsws "libswscale" color conversion and scaling library - * - * @section ffmpeg_versioning Versioning and compatibility - * - * Each of the FFmpeg libraries contains a version.h header, which defines a - * major, minor and micro version number with the - * LIBRARYNAME_VERSION_{MAJOR,MINOR,MICRO} macros. The major version - * number is incremented with backward incompatible changes - e.g. removing - * parts of the public API, reordering public struct members, etc. The minor - * version number is incremented for backward compatible API changes or major - * new features - e.g. adding a new public function or a new decoder. The micro - * version number is incremented for smaller changes that a calling program - * might still want to check for - e.g. changing behavior in a previously - * unspecified situation. - * - * FFmpeg guarantees backward API and ABI compatibility for each library as long - * as its major version number is unchanged. This means that no public symbols - * will be removed or renamed. Types and names of the public struct members and - * values of public macros and enums will remain the same (unless they were - * explicitly declared as not part of the public API). Documented behavior will - * not change. - * - * In other words, any correct program that works with a given FFmpeg snapshot - * should work just as well without any changes with any later snapshot with the - * same major versions. This applies to both rebuilding the program against new - * FFmpeg versions or to replacing the dynamic FFmpeg libraries that a program - * links against. - * - * However, new public symbols may be added and new members may be appended to - * public structs whose size is not part of public ABI (most public structs in - * FFmpeg). New macros and enum values may be added. Behavior in undocumented - * situations may change slightly (and be documented). All those are accompanied - * by an entry in doc/APIchanges and incrementing either the minor or micro - * version number. - */ - -/** - * @defgroup lavu libavutil - * Common code shared across all FFmpeg libraries. - * - * @note - * libavutil is designed to be modular. In most cases, in order to use the - * functions provided by one component of libavutil you must explicitly include - * the specific header containing that feature. If you are only using - * media-related components, you could simply include libavutil/avutil.h, which - * brings in most of the "core" components. - * - * @{ - * - * @defgroup lavu_crypto Crypto and Hashing - * - * @{ - * @} - * - * @defgroup lavu_math Mathematics - * @{ - * - * @} - * - * @defgroup lavu_string String Manipulation - * - * @{ - * - * @} - * - * @defgroup lavu_mem Memory Management - * - * @{ - * - * @} - * - * @defgroup lavu_data Data Structures - * @{ - * - * @} - * - * @defgroup lavu_audio Audio related - * - * @{ - * - * @} - * - * @defgroup lavu_error Error Codes - * - * @{ - * - * @} - * - * @defgroup lavu_log Logging Facility - * - * @{ - * - * @} - * - * @defgroup lavu_misc Other - * - * @{ - * - * @defgroup preproc_misc Preprocessor String Macros - * - * @{ - * - * @} - * - * @defgroup version_utils Library Version Macros - * - * @{ - * - * @} - */ - - -/** - * @addtogroup lavu_ver - * @{ - */ - -/** - * Return the LIBAVUTIL_VERSION_INT constant. - */ -unsigned avutil_version(void); - -/** - * Return an informative version string. This usually is the actual release - * version number or a git commit description. This string has no fixed format - * and can change any time. It should never be parsed by code. - */ -const char *av_version_info(void); - -/** - * Return the libavutil build-time configuration. - */ -const char *avutil_configuration(void); - -/** - * Return the libavutil license. - */ -const char *avutil_license(void); - -/** - * @} - */ - -/** - * @addtogroup lavu_media Media Type - * @brief Media Type - */ - -enum AVMediaType { - AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA - AVMEDIA_TYPE_VIDEO, - AVMEDIA_TYPE_AUDIO, - AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous - AVMEDIA_TYPE_SUBTITLE, - AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse - AVMEDIA_TYPE_NB -}; - -/** - * Return a string describing the media_type enum, NULL if media_type - * is unknown. - */ -const char *av_get_media_type_string(enum AVMediaType media_type); - -/** - * @defgroup lavu_const Constants - * @{ - * - * @defgroup lavu_enc Encoding specific - * - * @note those definition should move to avcodec - * @{ - */ - -#define FF_LAMBDA_SHIFT 7 -#define FF_LAMBDA_SCALE (1< - -/** - * @defgroup lavu_base64 Base64 - * @ingroup lavu_crypto - * @{ - */ - -/** - * Decode a base64-encoded string. - * - * @param out buffer for decoded data - * @param in null-terminated input string - * @param out_size size in bytes of the out buffer, must be at - * least 3/4 of the length of in, that is AV_BASE64_DECODE_SIZE(strlen(in)) - * @return number of bytes written, or a negative value in case of - * invalid input - */ -int av_base64_decode(uint8_t *out, const char *in, int out_size); - -/** - * Calculate the output size in bytes needed to decode a base64 string - * with length x to a data buffer. - */ -#define AV_BASE64_DECODE_SIZE(x) ((x) * 3LL / 4) - -/** - * Encode data to base64 and null-terminate. - * - * @param out buffer for encoded data - * @param out_size size in bytes of the out buffer (including the - * null terminator), must be at least AV_BASE64_SIZE(in_size) - * @param in input buffer containing the data to encode - * @param in_size size in bytes of the in buffer - * @return out or NULL in case of error - */ -char *av_base64_encode(char *out, int out_size, const uint8_t *in, int in_size); - -/** - * Calculate the output size needed to base64-encode x bytes to a - * null-terminated string. - */ -#define AV_BASE64_SIZE(x) (((x)+2) / 3 * 4 + 1) - - /** - * @} - */ - -#endif /* AVUTIL_BASE64_H */ diff --git a/Externals/ffmpeg/include/libavutil/blowfish.h b/Externals/ffmpeg/include/libavutil/blowfish.h deleted file mode 100644 index 9e289a40dabe..000000000000 --- a/Externals/ffmpeg/include/libavutil/blowfish.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Blowfish algorithm - * Copyright (c) 2012 Samuel Pitoiset - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_BLOWFISH_H -#define AVUTIL_BLOWFISH_H - -#include - -/** - * @defgroup lavu_blowfish Blowfish - * @ingroup lavu_crypto - * @{ - */ - -#define AV_BF_ROUNDS 16 - -typedef struct AVBlowfish { - uint32_t p[AV_BF_ROUNDS + 2]; - uint32_t s[4][256]; -} AVBlowfish; - -/** - * Allocate an AVBlowfish context. - */ -AVBlowfish *av_blowfish_alloc(void); - -/** - * Initialize an AVBlowfish context. - * - * @param ctx an AVBlowfish context - * @param key a key - * @param key_len length of the key - */ -void av_blowfish_init(struct AVBlowfish *ctx, const uint8_t *key, int key_len); - -/** - * Encrypt or decrypt a buffer using a previously initialized context. - * - * @param ctx an AVBlowfish context - * @param xl left four bytes halves of input to be encrypted - * @param xr right four bytes halves of input to be encrypted - * @param decrypt 0 for encryption, 1 for decryption - */ -void av_blowfish_crypt_ecb(struct AVBlowfish *ctx, uint32_t *xl, uint32_t *xr, - int decrypt); - -/** - * Encrypt or decrypt a buffer using a previously initialized context. - * - * @param ctx an AVBlowfish context - * @param dst destination array, can be equal to src - * @param src source array, can be equal to dst - * @param count number of 8 byte blocks - * @param iv initialization vector for CBC mode, if NULL ECB will be used - * @param decrypt 0 for encryption, 1 for decryption - */ -void av_blowfish_crypt(struct AVBlowfish *ctx, uint8_t *dst, const uint8_t *src, - int count, uint8_t *iv, int decrypt); - -/** - * @} - */ - -#endif /* AVUTIL_BLOWFISH_H */ diff --git a/Externals/ffmpeg/include/libavutil/bprint.h b/Externals/ffmpeg/include/libavutil/bprint.h deleted file mode 100644 index c09b1ac1e1aa..000000000000 --- a/Externals/ffmpeg/include/libavutil/bprint.h +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright (c) 2012 Nicolas George - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_BPRINT_H -#define AVUTIL_BPRINT_H - -#include - -#include "attributes.h" -#include "avstring.h" - -/** - * Define a structure with extra padding to a fixed size - * This helps ensuring binary compatibility with future versions. - */ - -#define FF_PAD_STRUCTURE(name, size, ...) \ -struct ff_pad_helper_##name { __VA_ARGS__ }; \ -typedef struct name { \ - __VA_ARGS__ \ - char reserved_padding[size - sizeof(struct ff_pad_helper_##name)]; \ -} name; - -/** - * Buffer to print data progressively - * - * The string buffer grows as necessary and is always 0-terminated. - * The content of the string is never accessed, and thus is - * encoding-agnostic and can even hold binary data. - * - * Small buffers are kept in the structure itself, and thus require no - * memory allocation at all (unless the contents of the buffer is needed - * after the structure goes out of scope). This is almost as lightweight as - * declaring a local "char buf[512]". - * - * The length of the string can go beyond the allocated size: the buffer is - * then truncated, but the functions still keep account of the actual total - * length. - * - * In other words, buf->len can be greater than buf->size and records the - * total length of what would have been to the buffer if there had been - * enough memory. - * - * Append operations do not need to be tested for failure: if a memory - * allocation fails, data stop being appended to the buffer, but the length - * is still updated. This situation can be tested with - * av_bprint_is_complete(). - * - * The size_max field determines several possible behaviours: - * - * size_max = -1 (= UINT_MAX) or any large value will let the buffer be - * reallocated as necessary, with an amortized linear cost. - * - * size_max = 0 prevents writing anything to the buffer: only the total - * length is computed. The write operations can then possibly be repeated in - * a buffer with exactly the necessary size - * (using size_init = size_max = len + 1). - * - * size_max = 1 is automatically replaced by the exact size available in the - * structure itself, thus ensuring no dynamic memory allocation. The - * internal buffer is large enough to hold a reasonable paragraph of text, - * such as the current paragraph. - */ - -FF_PAD_STRUCTURE(AVBPrint, 1024, - char *str; /**< string so far */ - unsigned len; /**< length so far */ - unsigned size; /**< allocated memory */ - unsigned size_max; /**< maximum allocated memory */ - char reserved_internal_buffer[1]; -) - -/** - * Convenience macros for special values for av_bprint_init() size_max - * parameter. - */ -#define AV_BPRINT_SIZE_UNLIMITED ((unsigned)-1) -#define AV_BPRINT_SIZE_AUTOMATIC 1 -#define AV_BPRINT_SIZE_COUNT_ONLY 0 - -/** - * Init a print buffer. - * - * @param buf buffer to init - * @param size_init initial size (including the final 0) - * @param size_max maximum size; - * 0 means do not write anything, just count the length; - * 1 is replaced by the maximum value for automatic storage; - * any large value means that the internal buffer will be - * reallocated as needed up to that limit; -1 is converted to - * UINT_MAX, the largest limit possible. - * Check also AV_BPRINT_SIZE_* macros. - */ -void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max); - -/** - * Init a print buffer using a pre-existing buffer. - * - * The buffer will not be reallocated. - * - * @param buf buffer structure to init - * @param buffer byte buffer to use for the string data - * @param size size of buffer - */ -void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size); - -/** - * Append a formatted string to a print buffer. - */ -void av_bprintf(AVBPrint *buf, const char *fmt, ...) av_printf_format(2, 3); - -/** - * Append a formatted string to a print buffer. - */ -void av_vbprintf(AVBPrint *buf, const char *fmt, va_list vl_arg); - -/** - * Append char c n times to a print buffer. - */ -void av_bprint_chars(AVBPrint *buf, char c, unsigned n); - -/** - * Append data to a print buffer. - * - * param buf bprint buffer to use - * param data pointer to data - * param size size of data - */ -void av_bprint_append_data(AVBPrint *buf, const char *data, unsigned size); - -struct tm; -/** - * Append a formatted date and time to a print buffer. - * - * param buf bprint buffer to use - * param fmt date and time format string, see strftime() - * param tm broken-down time structure to translate - * - * @note due to poor design of the standard strftime function, it may - * produce poor results if the format string expands to a very long text and - * the bprint buffer is near the limit stated by the size_max option. - */ -void av_bprint_strftime(AVBPrint *buf, const char *fmt, const struct tm *tm); - -/** - * Allocate bytes in the buffer for external use. - * - * @param[in] buf buffer structure - * @param[in] size required size - * @param[out] mem pointer to the memory area - * @param[out] actual_size size of the memory area after allocation; - * can be larger or smaller than size - */ -void av_bprint_get_buffer(AVBPrint *buf, unsigned size, - unsigned char **mem, unsigned *actual_size); - -/** - * Reset the string to "" but keep internal allocated data. - */ -void av_bprint_clear(AVBPrint *buf); - -/** - * Test if the print buffer is complete (not truncated). - * - * It may have been truncated due to a memory allocation failure - * or the size_max limit (compare size and size_max if necessary). - */ -static inline int av_bprint_is_complete(const AVBPrint *buf) -{ - return buf->len < buf->size; -} - -/** - * Finalize a print buffer. - * - * The print buffer can no longer be used afterwards, - * but the len and size fields are still valid. - * - * @arg[out] ret_str if not NULL, used to return a permanent copy of the - * buffer contents, or NULL if memory allocation fails; - * if NULL, the buffer is discarded and freed - * @return 0 for success or error code (probably AVERROR(ENOMEM)) - */ -int av_bprint_finalize(AVBPrint *buf, char **ret_str); - -/** - * Escape the content in src and append it to dstbuf. - * - * @param dstbuf already inited destination bprint buffer - * @param src string containing the text to escape - * @param special_chars string containing the special characters which - * need to be escaped, can be NULL - * @param mode escape mode to employ, see AV_ESCAPE_MODE_* macros. - * Any unknown value for mode will be considered equivalent to - * AV_ESCAPE_MODE_BACKSLASH, but this behaviour can change without - * notice. - * @param flags flags which control how to escape, see AV_ESCAPE_FLAG_* macros - */ -void av_bprint_escape(AVBPrint *dstbuf, const char *src, const char *special_chars, - enum AVEscapeMode mode, int flags); - -#endif /* AVUTIL_BPRINT_H */ diff --git a/Externals/ffmpeg/include/libavutil/bswap.h b/Externals/ffmpeg/include/libavutil/bswap.h deleted file mode 100644 index 91cb79538dc2..000000000000 --- a/Externals/ffmpeg/include/libavutil/bswap.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * byte swapping routines - */ - -#ifndef AVUTIL_BSWAP_H -#define AVUTIL_BSWAP_H - -#include -#include "libavutil/avconfig.h" -#include "attributes.h" - -#ifdef HAVE_AV_CONFIG_H - -#include "config.h" - -#if ARCH_AARCH64 -# include "aarch64/bswap.h" -#elif ARCH_ARM -# include "arm/bswap.h" -#elif ARCH_AVR32 -# include "avr32/bswap.h" -#elif ARCH_SH4 -# include "sh4/bswap.h" -#elif ARCH_X86 -# include "x86/bswap.h" -#endif - -#endif /* HAVE_AV_CONFIG_H */ - -#define AV_BSWAP16C(x) (((x) << 8 & 0xff00) | ((x) >> 8 & 0x00ff)) -#define AV_BSWAP32C(x) (AV_BSWAP16C(x) << 16 | AV_BSWAP16C((x) >> 16)) -#define AV_BSWAP64C(x) (AV_BSWAP32C(x) << 32 | AV_BSWAP32C((x) >> 32)) - -#define AV_BSWAPC(s, x) AV_BSWAP##s##C(x) - -#ifndef av_bswap16 -static av_always_inline av_const uint16_t av_bswap16(uint16_t x) -{ - x= (x>>8) | (x<<8); - return x; -} -#endif - -#ifndef av_bswap32 -static av_always_inline av_const uint32_t av_bswap32(uint32_t x) -{ - return AV_BSWAP32C(x); -} -#endif - -#ifndef av_bswap64 -static inline uint64_t av_const av_bswap64(uint64_t x) -{ - return (uint64_t)av_bswap32(x) << 32 | av_bswap32(x >> 32); -} -#endif - -// be2ne ... big-endian to native-endian -// le2ne ... little-endian to native-endian - -#if AV_HAVE_BIGENDIAN -#define av_be2ne16(x) (x) -#define av_be2ne32(x) (x) -#define av_be2ne64(x) (x) -#define av_le2ne16(x) av_bswap16(x) -#define av_le2ne32(x) av_bswap32(x) -#define av_le2ne64(x) av_bswap64(x) -#define AV_BE2NEC(s, x) (x) -#define AV_LE2NEC(s, x) AV_BSWAPC(s, x) -#else -#define av_be2ne16(x) av_bswap16(x) -#define av_be2ne32(x) av_bswap32(x) -#define av_be2ne64(x) av_bswap64(x) -#define av_le2ne16(x) (x) -#define av_le2ne32(x) (x) -#define av_le2ne64(x) (x) -#define AV_BE2NEC(s, x) AV_BSWAPC(s, x) -#define AV_LE2NEC(s, x) (x) -#endif - -#define AV_BE2NE16C(x) AV_BE2NEC(16, x) -#define AV_BE2NE32C(x) AV_BE2NEC(32, x) -#define AV_BE2NE64C(x) AV_BE2NEC(64, x) -#define AV_LE2NE16C(x) AV_LE2NEC(16, x) -#define AV_LE2NE32C(x) AV_LE2NEC(32, x) -#define AV_LE2NE64C(x) AV_LE2NEC(64, x) - -#endif /* AVUTIL_BSWAP_H */ diff --git a/Externals/ffmpeg/include/libavutil/buffer.h b/Externals/ffmpeg/include/libavutil/buffer.h deleted file mode 100644 index 0c0ce12cf2fa..000000000000 --- a/Externals/ffmpeg/include/libavutil/buffer.h +++ /dev/null @@ -1,290 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_buffer - * refcounted data buffer API - */ - -#ifndef AVUTIL_BUFFER_H -#define AVUTIL_BUFFER_H - -#include - -/** - * @defgroup lavu_buffer AVBuffer - * @ingroup lavu_data - * - * @{ - * AVBuffer is an API for reference-counted data buffers. - * - * There are two core objects in this API -- AVBuffer and AVBufferRef. AVBuffer - * represents the data buffer itself; it is opaque and not meant to be accessed - * by the caller directly, but only through AVBufferRef. However, the caller may - * e.g. compare two AVBuffer pointers to check whether two different references - * are describing the same data buffer. AVBufferRef represents a single - * reference to an AVBuffer and it is the object that may be manipulated by the - * caller directly. - * - * There are two functions provided for creating a new AVBuffer with a single - * reference -- av_buffer_alloc() to just allocate a new buffer, and - * av_buffer_create() to wrap an existing array in an AVBuffer. From an existing - * reference, additional references may be created with av_buffer_ref(). - * Use av_buffer_unref() to free a reference (this will automatically free the - * data once all the references are freed). - * - * The convention throughout this API and the rest of FFmpeg is such that the - * buffer is considered writable if there exists only one reference to it (and - * it has not been marked as read-only). The av_buffer_is_writable() function is - * provided to check whether this is true and av_buffer_make_writable() will - * automatically create a new writable buffer when necessary. - * Of course nothing prevents the calling code from violating this convention, - * however that is safe only when all the existing references are under its - * control. - * - * @note Referencing and unreferencing the buffers is thread-safe and thus - * may be done from multiple threads simultaneously without any need for - * additional locking. - * - * @note Two different references to the same buffer can point to different - * parts of the buffer (i.e. their AVBufferRef.data will not be equal). - */ - -/** - * A reference counted buffer type. It is opaque and is meant to be used through - * references (AVBufferRef). - */ -typedef struct AVBuffer AVBuffer; - -/** - * A reference to a data buffer. - * - * The size of this struct is not a part of the public ABI and it is not meant - * to be allocated directly. - */ -typedef struct AVBufferRef { - AVBuffer *buffer; - - /** - * The data buffer. It is considered writable if and only if - * this is the only reference to the buffer, in which case - * av_buffer_is_writable() returns 1. - */ - uint8_t *data; - /** - * Size of data in bytes. - */ - int size; -} AVBufferRef; - -/** - * Allocate an AVBuffer of the given size using av_malloc(). - * - * @return an AVBufferRef of given size or NULL when out of memory - */ -AVBufferRef *av_buffer_alloc(int size); - -/** - * Same as av_buffer_alloc(), except the returned buffer will be initialized - * to zero. - */ -AVBufferRef *av_buffer_allocz(int size); - -/** - * Always treat the buffer as read-only, even when it has only one - * reference. - */ -#define AV_BUFFER_FLAG_READONLY (1 << 0) - -/** - * Create an AVBuffer from an existing array. - * - * If this function is successful, data is owned by the AVBuffer. The caller may - * only access data through the returned AVBufferRef and references derived from - * it. - * If this function fails, data is left untouched. - * @param data data array - * @param size size of data in bytes - * @param free a callback for freeing this buffer's data - * @param opaque parameter to be got for processing or passed to free - * @param flags a combination of AV_BUFFER_FLAG_* - * - * @return an AVBufferRef referring to data on success, NULL on failure. - */ -AVBufferRef *av_buffer_create(uint8_t *data, int size, - void (*free)(void *opaque, uint8_t *data), - void *opaque, int flags); - -/** - * Default free callback, which calls av_free() on the buffer data. - * This function is meant to be passed to av_buffer_create(), not called - * directly. - */ -void av_buffer_default_free(void *opaque, uint8_t *data); - -/** - * Create a new reference to an AVBuffer. - * - * @return a new AVBufferRef referring to the same AVBuffer as buf or NULL on - * failure. - */ -AVBufferRef *av_buffer_ref(AVBufferRef *buf); - -/** - * Free a given reference and automatically free the buffer if there are no more - * references to it. - * - * @param buf the reference to be freed. The pointer is set to NULL on return. - */ -void av_buffer_unref(AVBufferRef **buf); - -/** - * @return 1 if the caller may write to the data referred to by buf (which is - * true if and only if buf is the only reference to the underlying AVBuffer). - * Return 0 otherwise. - * A positive answer is valid until av_buffer_ref() is called on buf. - */ -int av_buffer_is_writable(const AVBufferRef *buf); - -/** - * @return the opaque parameter set by av_buffer_create. - */ -void *av_buffer_get_opaque(const AVBufferRef *buf); - -int av_buffer_get_ref_count(const AVBufferRef *buf); - -/** - * Create a writable reference from a given buffer reference, avoiding data copy - * if possible. - * - * @param buf buffer reference to make writable. On success, buf is either left - * untouched, or it is unreferenced and a new writable AVBufferRef is - * written in its place. On failure, buf is left untouched. - * @return 0 on success, a negative AVERROR on failure. - */ -int av_buffer_make_writable(AVBufferRef **buf); - -/** - * Reallocate a given buffer. - * - * @param buf a buffer reference to reallocate. On success, buf will be - * unreferenced and a new reference with the required size will be - * written in its place. On failure buf will be left untouched. *buf - * may be NULL, then a new buffer is allocated. - * @param size required new buffer size. - * @return 0 on success, a negative AVERROR on failure. - * - * @note the buffer is actually reallocated with av_realloc() only if it was - * initially allocated through av_buffer_realloc(NULL) and there is only one - * reference to it (i.e. the one passed to this function). In all other cases - * a new buffer is allocated and the data is copied. - */ -int av_buffer_realloc(AVBufferRef **buf, int size); - -/** - * @} - */ - -/** - * @defgroup lavu_bufferpool AVBufferPool - * @ingroup lavu_data - * - * @{ - * AVBufferPool is an API for a lock-free thread-safe pool of AVBuffers. - * - * Frequently allocating and freeing large buffers may be slow. AVBufferPool is - * meant to solve this in cases when the caller needs a set of buffers of the - * same size (the most obvious use case being buffers for raw video or audio - * frames). - * - * At the beginning, the user must call av_buffer_pool_init() to create the - * buffer pool. Then whenever a buffer is needed, call av_buffer_pool_get() to - * get a reference to a new buffer, similar to av_buffer_alloc(). This new - * reference works in all aspects the same way as the one created by - * av_buffer_alloc(). However, when the last reference to this buffer is - * unreferenced, it is returned to the pool instead of being freed and will be - * reused for subsequent av_buffer_pool_get() calls. - * - * When the caller is done with the pool and no longer needs to allocate any new - * buffers, av_buffer_pool_uninit() must be called to mark the pool as freeable. - * Once all the buffers are released, it will automatically be freed. - * - * Allocating and releasing buffers with this API is thread-safe as long as - * either the default alloc callback is used, or the user-supplied one is - * thread-safe. - */ - -/** - * The buffer pool. This structure is opaque and not meant to be accessed - * directly. It is allocated with av_buffer_pool_init() and freed with - * av_buffer_pool_uninit(). - */ -typedef struct AVBufferPool AVBufferPool; - -/** - * Allocate and initialize a buffer pool. - * - * @param size size of each buffer in this pool - * @param alloc a function that will be used to allocate new buffers when the - * pool is empty. May be NULL, then the default allocator will be used - * (av_buffer_alloc()). - * @return newly created buffer pool on success, NULL on error. - */ -AVBufferPool *av_buffer_pool_init(int size, AVBufferRef* (*alloc)(int size)); - -/** - * Allocate and initialize a buffer pool with a more complex allocator. - * - * @param size size of each buffer in this pool - * @param opaque arbitrary user data used by the allocator - * @param alloc a function that will be used to allocate new buffers when the - * pool is empty. - * @param pool_free a function that will be called immediately before the pool - * is freed. I.e. after av_buffer_pool_can_uninit() is called - * by the pool and all the frames are returned to the pool and - * freed. It is intended to uninitialize the user opaque data. - * @return newly created buffer pool on success, NULL on error. - */ -AVBufferPool *av_buffer_pool_init2(int size, void *opaque, - AVBufferRef* (*alloc)(void *opaque, int size), - void (*pool_free)(void *opaque)); - -/** - * Mark the pool as being available for freeing. It will actually be freed only - * once all the allocated buffers associated with the pool are released. Thus it - * is safe to call this function while some of the allocated buffers are still - * in use. - * - * @param pool pointer to the pool to be freed. It will be set to NULL. - */ -void av_buffer_pool_uninit(AVBufferPool **pool); - -/** - * Allocate a new AVBuffer, reusing an old buffer from the pool when available. - * This function may be called simultaneously from multiple threads. - * - * @return a reference to the new buffer on success, NULL on error. - */ -AVBufferRef *av_buffer_pool_get(AVBufferPool *pool); - -/** - * @} - */ - -#endif /* AVUTIL_BUFFER_H */ diff --git a/Externals/ffmpeg/include/libavutil/camellia.h b/Externals/ffmpeg/include/libavutil/camellia.h deleted file mode 100644 index e674c9b9a478..000000000000 --- a/Externals/ffmpeg/include/libavutil/camellia.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * An implementation of the CAMELLIA algorithm as mentioned in RFC3713 - * Copyright (c) 2014 Supraja Meedinti - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_CAMELLIA_H -#define AVUTIL_CAMELLIA_H - -#include - - -/** - * @file - * @brief Public header for libavutil CAMELLIA algorithm - * @defgroup lavu_camellia CAMELLIA - * @ingroup lavu_crypto - * @{ - */ - -extern const int av_camellia_size; - -struct AVCAMELLIA; - -/** - * Allocate an AVCAMELLIA context - * To free the struct: av_free(ptr) - */ -struct AVCAMELLIA *av_camellia_alloc(void); - -/** - * Initialize an AVCAMELLIA context. - * - * @param ctx an AVCAMELLIA context - * @param key a key of 16, 24, 32 bytes used for encryption/decryption - * @param key_bits number of keybits: possible are 128, 192, 256 - */ -int av_camellia_init(struct AVCAMELLIA *ctx, const uint8_t *key, int key_bits); - -/** - * Encrypt or decrypt a buffer using a previously initialized context - * - * @param ctx an AVCAMELLIA context - * @param dst destination array, can be equal to src - * @param src source array, can be equal to dst - * @param count number of 16 byte blocks - * @paran iv initialization vector for CBC mode, NULL for ECB mode - * @param decrypt 0 for encryption, 1 for decryption - */ -void av_camellia_crypt(struct AVCAMELLIA *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t* iv, int decrypt); - -/** - * @} - */ -#endif /* AVUTIL_CAMELLIA_H */ diff --git a/Externals/ffmpeg/include/libavutil/cast5.h b/Externals/ffmpeg/include/libavutil/cast5.h deleted file mode 100644 index ad5b347e685e..000000000000 --- a/Externals/ffmpeg/include/libavutil/cast5.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * An implementation of the CAST128 algorithm as mentioned in RFC2144 - * Copyright (c) 2014 Supraja Meedinti - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_CAST5_H -#define AVUTIL_CAST5_H - -#include - - -/** - * @file - * @brief Public header for libavutil CAST5 algorithm - * @defgroup lavu_cast5 CAST5 - * @ingroup lavu_crypto - * @{ - */ - -extern const int av_cast5_size; - -struct AVCAST5; - -/** - * Allocate an AVCAST5 context - * To free the struct: av_free(ptr) - */ -struct AVCAST5 *av_cast5_alloc(void); -/** - * Initialize an AVCAST5 context. - * - * @param ctx an AVCAST5 context - * @param key a key of 5,6,...16 bytes used for encryption/decryption - * @param key_bits number of keybits: possible are 40,48,...,128 - * @return 0 on success, less than 0 on failure - */ -int av_cast5_init(struct AVCAST5 *ctx, const uint8_t *key, int key_bits); - -/** - * Encrypt or decrypt a buffer using a previously initialized context, ECB mode only - * - * @param ctx an AVCAST5 context - * @param dst destination array, can be equal to src - * @param src source array, can be equal to dst - * @param count number of 8 byte blocks - * @param decrypt 0 for encryption, 1 for decryption - */ -void av_cast5_crypt(struct AVCAST5 *ctx, uint8_t *dst, const uint8_t *src, int count, int decrypt); - -/** - * Encrypt or decrypt a buffer using a previously initialized context - * - * @param ctx an AVCAST5 context - * @param dst destination array, can be equal to src - * @param src source array, can be equal to dst - * @param count number of 8 byte blocks - * @param iv initialization vector for CBC mode, NULL for ECB mode - * @param decrypt 0 for encryption, 1 for decryption - */ -void av_cast5_crypt2(struct AVCAST5 *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); -/** - * @} - */ -#endif /* AVUTIL_CAST5_H */ diff --git a/Externals/ffmpeg/include/libavutil/channel_layout.h b/Externals/ffmpeg/include/libavutil/channel_layout.h deleted file mode 100644 index ec7effead1d2..000000000000 --- a/Externals/ffmpeg/include/libavutil/channel_layout.h +++ /dev/null @@ -1,223 +0,0 @@ -/* - * Copyright (c) 2006 Michael Niedermayer - * Copyright (c) 2008 Peter Ross - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_CHANNEL_LAYOUT_H -#define AVUTIL_CHANNEL_LAYOUT_H - -#include - -/** - * @file - * audio channel layout utility functions - */ - -/** - * @addtogroup lavu_audio - * @{ - */ - -/** - * @defgroup channel_masks Audio channel masks - * - * A channel layout is a 64-bits integer with a bit set for every channel. - * The number of bits set must be equal to the number of channels. - * The value 0 means that the channel layout is not known. - * @note this data structure is not powerful enough to handle channels - * combinations that have the same channel multiple times, such as - * dual-mono. - * - * @{ - */ -#define AV_CH_FRONT_LEFT 0x00000001 -#define AV_CH_FRONT_RIGHT 0x00000002 -#define AV_CH_FRONT_CENTER 0x00000004 -#define AV_CH_LOW_FREQUENCY 0x00000008 -#define AV_CH_BACK_LEFT 0x00000010 -#define AV_CH_BACK_RIGHT 0x00000020 -#define AV_CH_FRONT_LEFT_OF_CENTER 0x00000040 -#define AV_CH_FRONT_RIGHT_OF_CENTER 0x00000080 -#define AV_CH_BACK_CENTER 0x00000100 -#define AV_CH_SIDE_LEFT 0x00000200 -#define AV_CH_SIDE_RIGHT 0x00000400 -#define AV_CH_TOP_CENTER 0x00000800 -#define AV_CH_TOP_FRONT_LEFT 0x00001000 -#define AV_CH_TOP_FRONT_CENTER 0x00002000 -#define AV_CH_TOP_FRONT_RIGHT 0x00004000 -#define AV_CH_TOP_BACK_LEFT 0x00008000 -#define AV_CH_TOP_BACK_CENTER 0x00010000 -#define AV_CH_TOP_BACK_RIGHT 0x00020000 -#define AV_CH_STEREO_LEFT 0x20000000 ///< Stereo downmix. -#define AV_CH_STEREO_RIGHT 0x40000000 ///< See AV_CH_STEREO_LEFT. -#define AV_CH_WIDE_LEFT 0x0000000080000000ULL -#define AV_CH_WIDE_RIGHT 0x0000000100000000ULL -#define AV_CH_SURROUND_DIRECT_LEFT 0x0000000200000000ULL -#define AV_CH_SURROUND_DIRECT_RIGHT 0x0000000400000000ULL -#define AV_CH_LOW_FREQUENCY_2 0x0000000800000000ULL - -/** Channel mask value used for AVCodecContext.request_channel_layout - to indicate that the user requests the channel order of the decoder output - to be the native codec channel order. */ -#define AV_CH_LAYOUT_NATIVE 0x8000000000000000ULL - -/** - * @} - * @defgroup channel_mask_c Audio channel layouts - * @{ - * */ -#define AV_CH_LAYOUT_MONO (AV_CH_FRONT_CENTER) -#define AV_CH_LAYOUT_STEREO (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT) -#define AV_CH_LAYOUT_2POINT1 (AV_CH_LAYOUT_STEREO|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_2_1 (AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_SURROUND (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER) -#define AV_CH_LAYOUT_3POINT1 (AV_CH_LAYOUT_SURROUND|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_4POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_4POINT1 (AV_CH_LAYOUT_4POINT0|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_2_2 (AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) -#define AV_CH_LAYOUT_QUAD (AV_CH_LAYOUT_STEREO|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_5POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) -#define AV_CH_LAYOUT_5POINT1 (AV_CH_LAYOUT_5POINT0|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_5POINT0_BACK (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_5POINT1_BACK (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_6POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_6POINT0_FRONT (AV_CH_LAYOUT_2_2|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_HEXAGONAL (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_6POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_6POINT1_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_6POINT1_FRONT (AV_CH_LAYOUT_6POINT0_FRONT|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_7POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_7POINT0_FRONT (AV_CH_LAYOUT_5POINT0|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_7POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_7POINT1_WIDE (AV_CH_LAYOUT_5POINT1|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_7POINT1_WIDE_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_OCTAGONAL (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_CENTER|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_HEXADECAGONAL (AV_CH_LAYOUT_OCTAGONAL|AV_CH_WIDE_LEFT|AV_CH_WIDE_RIGHT|AV_CH_TOP_BACK_LEFT|AV_CH_TOP_BACK_RIGHT|AV_CH_TOP_BACK_CENTER|AV_CH_TOP_FRONT_CENTER|AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT) -#define AV_CH_LAYOUT_STEREO_DOWNMIX (AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT) - -enum AVMatrixEncoding { - AV_MATRIX_ENCODING_NONE, - AV_MATRIX_ENCODING_DOLBY, - AV_MATRIX_ENCODING_DPLII, - AV_MATRIX_ENCODING_DPLIIX, - AV_MATRIX_ENCODING_DPLIIZ, - AV_MATRIX_ENCODING_DOLBYEX, - AV_MATRIX_ENCODING_DOLBYHEADPHONE, - AV_MATRIX_ENCODING_NB -}; - -/** - * Return a channel layout id that matches name, or 0 if no match is found. - * - * name can be one or several of the following notations, - * separated by '+' or '|': - * - the name of an usual channel layout (mono, stereo, 4.0, quad, 5.0, - * 5.0(side), 5.1, 5.1(side), 7.1, 7.1(wide), downmix); - * - the name of a single channel (FL, FR, FC, LFE, BL, BR, FLC, FRC, BC, - * SL, SR, TC, TFL, TFC, TFR, TBL, TBC, TBR, DL, DR); - * - a number of channels, in decimal, optionally followed by 'c', yielding - * the default channel layout for that number of channels (@see - * av_get_default_channel_layout); - * - a channel layout mask, in hexadecimal starting with "0x" (see the - * AV_CH_* macros). - * - * @warning Starting from the next major bump the trailing character - * 'c' to specify a number of channels will be required, while a - * channel layout mask could also be specified as a decimal number - * (if and only if not followed by "c"). - * - * Example: "stereo+FC" = "2c+FC" = "2c+1c" = "0x7" - */ -uint64_t av_get_channel_layout(const char *name); - -/** - * Return a description of a channel layout. - * If nb_channels is <= 0, it is guessed from the channel_layout. - * - * @param buf put here the string containing the channel layout - * @param buf_size size in bytes of the buffer - */ -void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, uint64_t channel_layout); - -struct AVBPrint; -/** - * Append a description of a channel layout to a bprint buffer. - */ -void av_bprint_channel_layout(struct AVBPrint *bp, int nb_channels, uint64_t channel_layout); - -/** - * Return the number of channels in the channel layout. - */ -int av_get_channel_layout_nb_channels(uint64_t channel_layout); - -/** - * Return default channel layout for a given number of channels. - */ -int64_t av_get_default_channel_layout(int nb_channels); - -/** - * Get the index of a channel in channel_layout. - * - * @param channel a channel layout describing exactly one channel which must be - * present in channel_layout. - * - * @return index of channel in channel_layout on success, a negative AVERROR - * on error. - */ -int av_get_channel_layout_channel_index(uint64_t channel_layout, - uint64_t channel); - -/** - * Get the channel with the given index in channel_layout. - */ -uint64_t av_channel_layout_extract_channel(uint64_t channel_layout, int index); - -/** - * Get the name of a given channel. - * - * @return channel name on success, NULL on error. - */ -const char *av_get_channel_name(uint64_t channel); - -/** - * Get the description of a given channel. - * - * @param channel a channel layout with a single channel - * @return channel description on success, NULL on error - */ -const char *av_get_channel_description(uint64_t channel); - -/** - * Get the value and name of a standard channel layout. - * - * @param[in] index index in an internal list, starting at 0 - * @param[out] layout channel layout mask - * @param[out] name name of the layout - * @return 0 if the layout exists, - * <0 if index is beyond the limits - */ -int av_get_standard_channel_layout(unsigned index, uint64_t *layout, - const char **name); - -/** - * @} - * @} - */ - -#endif /* AVUTIL_CHANNEL_LAYOUT_H */ diff --git a/Externals/ffmpeg/include/libavutil/common.h b/Externals/ffmpeg/include/libavutil/common.h deleted file mode 100644 index 8142b31fdbb2..000000000000 --- a/Externals/ffmpeg/include/libavutil/common.h +++ /dev/null @@ -1,530 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * common internal and external API header - */ - -#ifndef AVUTIL_COMMON_H -#define AVUTIL_COMMON_H - -#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS) && !defined(UINT64_C) -#error missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "attributes.h" -#include "macros.h" -#include "version.h" -#include "libavutil/avconfig.h" - -#if AV_HAVE_BIGENDIAN -# define AV_NE(be, le) (be) -#else -# define AV_NE(be, le) (le) -#endif - -//rounded division & shift -#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b)) -/* assume b>0 */ -#define ROUNDED_DIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b)) -/* Fast a/(1<=0 and b>=0 */ -#define AV_CEIL_RSHIFT(a,b) (!av_builtin_constant_p(b) ? -((-(a)) >> (b)) \ - : ((a) + (1<<(b)) - 1) >> (b)) -/* Backwards compat. */ -#define FF_CEIL_RSHIFT AV_CEIL_RSHIFT - -#define FFUDIV(a,b) (((a)>0 ?(a):(a)-(b)+1) / (b)) -#define FFUMOD(a,b) ((a)-(b)*FFUDIV(a,b)) - -/** - * Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they - * are not representable as absolute values of their type. This is the same - * as with *abs() - * @see FFNABS() - */ -#define FFABS(a) ((a) >= 0 ? (a) : (-(a))) -#define FFSIGN(a) ((a) > 0 ? 1 : -1) - -/** - * Negative Absolute value. - * this works for all integers of all types. - * As with many macros, this evaluates its argument twice, it thus must not have - * a sideeffect, that is FFNABS(x++) has undefined behavior. - */ -#define FFNABS(a) ((a) <= 0 ? (a) : (-(a))) - -/** - * Comparator. - * For two numerical expressions x and y, gives 1 if x > y, -1 if x < y, and 0 - * if x == y. This is useful for instance in a qsort comparator callback. - * Furthermore, compilers are able to optimize this to branchless code, and - * there is no risk of overflow with signed types. - * As with many macros, this evaluates its argument multiple times, it thus - * must not have a side-effect. - */ -#define FFDIFFSIGN(x,y) (((x)>(y)) - ((x)<(y))) - -#define FFMAX(a,b) ((a) > (b) ? (a) : (b)) -#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c) -#define FFMIN(a,b) ((a) > (b) ? (b) : (a)) -#define FFMIN3(a,b,c) FFMIN(FFMIN(a,b),c) - -#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0) -#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0])) - -/* misc math functions */ - -#ifdef HAVE_AV_CONFIG_H -# include "config.h" -# include "intmath.h" -#endif - -/* Pull in unguarded fallback defines at the end of this file. */ -#include "common.h" - -#ifndef av_log2 -av_const int av_log2(unsigned v); -#endif - -#ifndef av_log2_16bit -av_const int av_log2_16bit(unsigned v); -#endif - -/** - * Clip a signed integer value into the amin-amax range. - * @param a value to clip - * @param amin minimum value of the clip range - * @param amax maximum value of the clip range - * @return clipped value - */ -static av_always_inline av_const int av_clip_c(int a, int amin, int amax) -{ -#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 - if (amin > amax) abort(); -#endif - if (a < amin) return amin; - else if (a > amax) return amax; - else return a; -} - -/** - * Clip a signed 64bit integer value into the amin-amax range. - * @param a value to clip - * @param amin minimum value of the clip range - * @param amax maximum value of the clip range - * @return clipped value - */ -static av_always_inline av_const int64_t av_clip64_c(int64_t a, int64_t amin, int64_t amax) -{ -#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 - if (amin > amax) abort(); -#endif - if (a < amin) return amin; - else if (a > amax) return amax; - else return a; -} - -/** - * Clip a signed integer value into the 0-255 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const uint8_t av_clip_uint8_c(int a) -{ - if (a&(~0xFF)) return (-a)>>31; - else return a; -} - -/** - * Clip a signed integer value into the -128,127 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const int8_t av_clip_int8_c(int a) -{ - if ((a+0x80U) & ~0xFF) return (a>>31) ^ 0x7F; - else return a; -} - -/** - * Clip a signed integer value into the 0-65535 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const uint16_t av_clip_uint16_c(int a) -{ - if (a&(~0xFFFF)) return (-a)>>31; - else return a; -} - -/** - * Clip a signed integer value into the -32768,32767 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const int16_t av_clip_int16_c(int a) -{ - if ((a+0x8000U) & ~0xFFFF) return (a>>31) ^ 0x7FFF; - else return a; -} - -/** - * Clip a signed 64-bit integer value into the -2147483648,2147483647 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const int32_t av_clipl_int32_c(int64_t a) -{ - if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (int32_t)((a>>63) ^ 0x7FFFFFFF); - else return (int32_t)a; -} - -/** - * Clip a signed integer into the -(2^p),(2^p-1) range. - * @param a value to clip - * @param p bit position to clip at - * @return clipped value - */ -static av_always_inline av_const int av_clip_intp2_c(int a, int p) -{ - if (((unsigned)a + (1 << p)) & ~((2 << p) - 1)) - return (a >> 31) ^ ((1 << p) - 1); - else - return a; -} - -/** - * Clip a signed integer to an unsigned power of two range. - * @param a value to clip - * @param p bit position to clip at - * @return clipped value - */ -static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p) -{ - if (a & ~((1<> 31 & ((1<= 2 - if (amin > amax) abort(); -#endif - if (a < amin) return amin; - else if (a > amax) return amax; - else return a; -} - -/** - * Clip a double value into the amin-amax range. - * @param a value to clip - * @param amin minimum value of the clip range - * @param amax maximum value of the clip range - * @return clipped value - */ -static av_always_inline av_const double av_clipd_c(double a, double amin, double amax) -{ -#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 - if (amin > amax) abort(); -#endif - if (a < amin) return amin; - else if (a > amax) return amax; - else return a; -} - -/** Compute ceil(log2(x)). - * @param x value used to compute ceil(log2(x)) - * @return computed ceiling of log2(x) - */ -static av_always_inline av_const int av_ceil_log2_c(int x) -{ - return av_log2((x - 1) << 1); -} - -/** - * Count number of bits set to one in x - * @param x value to count bits of - * @return the number of bits set to one in x - */ -static av_always_inline av_const int av_popcount_c(uint32_t x) -{ - x -= (x >> 1) & 0x55555555; - x = (x & 0x33333333) + ((x >> 2) & 0x33333333); - x = (x + (x >> 4)) & 0x0F0F0F0F; - x += x >> 8; - return (x + (x >> 16)) & 0x3F; -} - -/** - * Count number of bits set to one in x - * @param x value to count bits of - * @return the number of bits set to one in x - */ -static av_always_inline av_const int av_popcount64_c(uint64_t x) -{ - return av_popcount((uint32_t)x) + av_popcount((uint32_t)(x >> 32)); -} - -static av_always_inline av_const int av_parity_c(uint32_t v) -{ - return av_popcount(v) & 1; -} - -#define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24)) -#define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((unsigned)(a) << 24)) - -/** - * Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form. - * - * @param val Output value, must be an lvalue of type uint32_t. - * @param GET_BYTE Expression reading one byte from the input. - * Evaluated up to 7 times (4 for the currently - * assigned Unicode range). With a memory buffer - * input, this could be *ptr++. - * @param ERROR Expression to be evaluated on invalid input, - * typically a goto statement. - * - * @warning ERROR should not contain a loop control statement which - * could interact with the internal while loop, and should force an - * exit from the macro code (e.g. through a goto or a return) in order - * to prevent undefined results. - */ -#define GET_UTF8(val, GET_BYTE, ERROR)\ - val= (GET_BYTE);\ - {\ - uint32_t top = (val & 128) >> 1;\ - if ((val & 0xc0) == 0x80 || val >= 0xFE)\ - ERROR\ - while (val & top) {\ - int tmp= (GET_BYTE) - 128;\ - if(tmp>>6)\ - ERROR\ - val= (val<<6) + tmp;\ - top <<= 5;\ - }\ - val &= (top << 1) - 1;\ - } - -/** - * Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form. - * - * @param val Output value, must be an lvalue of type uint32_t. - * @param GET_16BIT Expression returning two bytes of UTF-16 data converted - * to native byte order. Evaluated one or two times. - * @param ERROR Expression to be evaluated on invalid input, - * typically a goto statement. - */ -#define GET_UTF16(val, GET_16BIT, ERROR)\ - val = GET_16BIT;\ - {\ - unsigned int hi = val - 0xD800;\ - if (hi < 0x800) {\ - val = GET_16BIT - 0xDC00;\ - if (val > 0x3FFU || hi > 0x3FFU)\ - ERROR\ - val += (hi<<10) + 0x10000;\ - }\ - }\ - -/** - * @def PUT_UTF8(val, tmp, PUT_BYTE) - * Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long). - * @param val is an input-only argument and should be of type uint32_t. It holds - * a UCS-4 encoded Unicode character that is to be converted to UTF-8. If - * val is given as a function it is executed only once. - * @param tmp is a temporary variable and should be of type uint8_t. It - * represents an intermediate value during conversion that is to be - * output by PUT_BYTE. - * @param PUT_BYTE writes the converted UTF-8 bytes to any proper destination. - * It could be a function or a statement, and uses tmp as the input byte. - * For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be - * executed up to 4 times for values in the valid UTF-8 range and up to - * 7 times in the general case, depending on the length of the converted - * Unicode character. - */ -#define PUT_UTF8(val, tmp, PUT_BYTE)\ - {\ - int bytes, shift;\ - uint32_t in = val;\ - if (in < 0x80) {\ - tmp = in;\ - PUT_BYTE\ - } else {\ - bytes = (av_log2(in) + 4) / 5;\ - shift = (bytes - 1) * 6;\ - tmp = (256 - (256 >> bytes)) | (in >> shift);\ - PUT_BYTE\ - while (shift >= 6) {\ - shift -= 6;\ - tmp = 0x80 | ((in >> shift) & 0x3f);\ - PUT_BYTE\ - }\ - }\ - } - -/** - * @def PUT_UTF16(val, tmp, PUT_16BIT) - * Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes). - * @param val is an input-only argument and should be of type uint32_t. It holds - * a UCS-4 encoded Unicode character that is to be converted to UTF-16. If - * val is given as a function it is executed only once. - * @param tmp is a temporary variable and should be of type uint16_t. It - * represents an intermediate value during conversion that is to be - * output by PUT_16BIT. - * @param PUT_16BIT writes the converted UTF-16 data to any proper destination - * in desired endianness. It could be a function or a statement, and uses tmp - * as the input byte. For example, PUT_BYTE could be "*output++ = tmp;" - * PUT_BYTE will be executed 1 or 2 times depending on input character. - */ -#define PUT_UTF16(val, tmp, PUT_16BIT)\ - {\ - uint32_t in = val;\ - if (in < 0x10000) {\ - tmp = in;\ - PUT_16BIT\ - } else {\ - tmp = 0xD800 | ((in - 0x10000) >> 10);\ - PUT_16BIT\ - tmp = 0xDC00 | ((in - 0x10000) & 0x3FF);\ - PUT_16BIT\ - }\ - }\ - - - -#include "mem.h" - -#ifdef HAVE_AV_CONFIG_H -# include "internal.h" -#endif /* HAVE_AV_CONFIG_H */ - -#endif /* AVUTIL_COMMON_H */ - -/* - * The following definitions are outside the multiple inclusion guard - * to ensure they are immediately available in intmath.h. - */ - -#ifndef av_ceil_log2 -# define av_ceil_log2 av_ceil_log2_c -#endif -#ifndef av_clip -# define av_clip av_clip_c -#endif -#ifndef av_clip64 -# define av_clip64 av_clip64_c -#endif -#ifndef av_clip_uint8 -# define av_clip_uint8 av_clip_uint8_c -#endif -#ifndef av_clip_int8 -# define av_clip_int8 av_clip_int8_c -#endif -#ifndef av_clip_uint16 -# define av_clip_uint16 av_clip_uint16_c -#endif -#ifndef av_clip_int16 -# define av_clip_int16 av_clip_int16_c -#endif -#ifndef av_clipl_int32 -# define av_clipl_int32 av_clipl_int32_c -#endif -#ifndef av_clip_intp2 -# define av_clip_intp2 av_clip_intp2_c -#endif -#ifndef av_clip_uintp2 -# define av_clip_uintp2 av_clip_uintp2_c -#endif -#ifndef av_mod_uintp2 -# define av_mod_uintp2 av_mod_uintp2_c -#endif -#ifndef av_sat_add32 -# define av_sat_add32 av_sat_add32_c -#endif -#ifndef av_sat_dadd32 -# define av_sat_dadd32 av_sat_dadd32_c -#endif -#ifndef av_clipf -# define av_clipf av_clipf_c -#endif -#ifndef av_clipd -# define av_clipd av_clipd_c -#endif -#ifndef av_popcount -# define av_popcount av_popcount_c -#endif -#ifndef av_popcount64 -# define av_popcount64 av_popcount64_c -#endif -#ifndef av_parity -# define av_parity av_parity_c -#endif diff --git a/Externals/ffmpeg/include/libavutil/cpu.h b/Externals/ffmpeg/include/libavutil/cpu.h deleted file mode 100644 index 4bff16714a38..000000000000 --- a/Externals/ffmpeg/include/libavutil/cpu.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (c) 2000, 2001, 2002 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_CPU_H -#define AVUTIL_CPU_H - -#include "attributes.h" - -#define AV_CPU_FLAG_FORCE 0x80000000 /* force usage of selected flags (OR) */ - - /* lower 16 bits - CPU features */ -#define AV_CPU_FLAG_MMX 0x0001 ///< standard MMX -#define AV_CPU_FLAG_MMXEXT 0x0002 ///< SSE integer functions or AMD MMX ext -#define AV_CPU_FLAG_MMX2 0x0002 ///< SSE integer functions or AMD MMX ext -#define AV_CPU_FLAG_3DNOW 0x0004 ///< AMD 3DNOW -#define AV_CPU_FLAG_SSE 0x0008 ///< SSE functions -#define AV_CPU_FLAG_SSE2 0x0010 ///< PIV SSE2 functions -#define AV_CPU_FLAG_SSE2SLOW 0x40000000 ///< SSE2 supported, but usually not faster - ///< than regular MMX/SSE (e.g. Core1) -#define AV_CPU_FLAG_3DNOWEXT 0x0020 ///< AMD 3DNowExt -#define AV_CPU_FLAG_SSE3 0x0040 ///< Prescott SSE3 functions -#define AV_CPU_FLAG_SSE3SLOW 0x20000000 ///< SSE3 supported, but usually not faster - ///< than regular MMX/SSE (e.g. Core1) -#define AV_CPU_FLAG_SSSE3 0x0080 ///< Conroe SSSE3 functions -#define AV_CPU_FLAG_ATOM 0x10000000 ///< Atom processor, some SSSE3 instructions are slower -#define AV_CPU_FLAG_SSE4 0x0100 ///< Penryn SSE4.1 functions -#define AV_CPU_FLAG_SSE42 0x0200 ///< Nehalem SSE4.2 functions -#define AV_CPU_FLAG_AESNI 0x80000 ///< Advanced Encryption Standard functions -#define AV_CPU_FLAG_AVX 0x4000 ///< AVX functions: requires OS support even if YMM registers aren't used -#define AV_CPU_FLAG_AVXSLOW 0x8000000 ///< AVX supported, but slow when using YMM registers (e.g. Bulldozer) -#define AV_CPU_FLAG_XOP 0x0400 ///< Bulldozer XOP functions -#define AV_CPU_FLAG_FMA4 0x0800 ///< Bulldozer FMA4 functions -#define AV_CPU_FLAG_CMOV 0x1000 ///< supports cmov instruction -#define AV_CPU_FLAG_AVX2 0x8000 ///< AVX2 functions: requires OS support even if YMM registers aren't used -#define AV_CPU_FLAG_FMA3 0x10000 ///< Haswell FMA3 functions -#define AV_CPU_FLAG_BMI1 0x20000 ///< Bit Manipulation Instruction Set 1 -#define AV_CPU_FLAG_BMI2 0x40000 ///< Bit Manipulation Instruction Set 2 - -#define AV_CPU_FLAG_ALTIVEC 0x0001 ///< standard -#define AV_CPU_FLAG_VSX 0x0002 ///< ISA 2.06 -#define AV_CPU_FLAG_POWER8 0x0004 ///< ISA 2.07 - -#define AV_CPU_FLAG_ARMV5TE (1 << 0) -#define AV_CPU_FLAG_ARMV6 (1 << 1) -#define AV_CPU_FLAG_ARMV6T2 (1 << 2) -#define AV_CPU_FLAG_VFP (1 << 3) -#define AV_CPU_FLAG_VFPV3 (1 << 4) -#define AV_CPU_FLAG_NEON (1 << 5) -#define AV_CPU_FLAG_ARMV8 (1 << 6) -#define AV_CPU_FLAG_VFP_VM (1 << 7) ///< VFPv2 vector mode, deprecated in ARMv7-A and unavailable in various CPUs implementations -#define AV_CPU_FLAG_SETEND (1 <<16) - -/** - * Return the flags which specify extensions supported by the CPU. - * The returned value is affected by av_force_cpu_flags() if that was used - * before. So av_get_cpu_flags() can easily be used in an application to - * detect the enabled cpu flags. - */ -int av_get_cpu_flags(void); - -/** - * Disables cpu detection and forces the specified flags. - * -1 is a special case that disables forcing of specific flags. - */ -void av_force_cpu_flags(int flags); - -/** - * Set a mask on flags returned by av_get_cpu_flags(). - * This function is mainly useful for testing. - * Please use av_force_cpu_flags() and av_get_cpu_flags() instead which are more flexible - * - * @warning this function is not thread safe. - */ -attribute_deprecated void av_set_cpu_flags_mask(int mask); - -/** - * Parse CPU flags from a string. - * - * The returned flags contain the specified flags as well as related unspecified flags. - * - * This function exists only for compatibility with libav. - * Please use av_parse_cpu_caps() when possible. - * @return a combination of AV_CPU_* flags, negative on error. - */ -attribute_deprecated -int av_parse_cpu_flags(const char *s); - -/** - * Parse CPU caps from a string and update the given AV_CPU_* flags based on that. - * - * @return negative on error. - */ -int av_parse_cpu_caps(unsigned *flags, const char *s); - -/** - * @return the number of logical CPU cores present. - */ -int av_cpu_count(void); - -#endif /* AVUTIL_CPU_H */ diff --git a/Externals/ffmpeg/include/libavutil/crc.h b/Externals/ffmpeg/include/libavutil/crc.h deleted file mode 100644 index 2a1b0d762450..000000000000 --- a/Externals/ffmpeg/include/libavutil/crc.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_crc32 - * Public header for CRC hash function implementation. - */ - -#ifndef AVUTIL_CRC_H -#define AVUTIL_CRC_H - -#include -#include -#include "attributes.h" -#include "version.h" - -/** - * @defgroup lavu_crc32 CRC - * @ingroup lavu_hash - * CRC (Cyclic Redundancy Check) hash function implementation. - * - * This module supports numerous CRC polynomials, in addition to the most - * widely used CRC-32-IEEE. See @ref AVCRCId for a list of available - * polynomials. - * - * @{ - */ - -typedef uint32_t AVCRC; - -typedef enum { - AV_CRC_8_ATM, - AV_CRC_16_ANSI, - AV_CRC_16_CCITT, - AV_CRC_32_IEEE, - AV_CRC_32_IEEE_LE, /*< reversed bitorder version of AV_CRC_32_IEEE */ - AV_CRC_16_ANSI_LE, /*< reversed bitorder version of AV_CRC_16_ANSI */ -#if FF_API_CRC_BIG_TABLE - AV_CRC_24_IEEE = 12, -#else - AV_CRC_24_IEEE, -#endif /* FF_API_CRC_BIG_TABLE */ - AV_CRC_MAX, /*< Not part of public API! Do not use outside libavutil. */ -}AVCRCId; - -/** - * Initialize a CRC table. - * @param ctx must be an array of size sizeof(AVCRC)*257 or sizeof(AVCRC)*1024 - * @param le If 1, the lowest bit represents the coefficient for the highest - * exponent of the corresponding polynomial (both for poly and - * actual CRC). - * If 0, you must swap the CRC parameter and the result of av_crc - * if you need the standard representation (can be simplified in - * most cases to e.g. bswap16): - * av_bswap32(crc << (32-bits)) - * @param bits number of bits for the CRC - * @param poly generator polynomial without the x**bits coefficient, in the - * representation as specified by le - * @param ctx_size size of ctx in bytes - * @return <0 on failure - */ -int av_crc_init(AVCRC *ctx, int le, int bits, uint32_t poly, int ctx_size); - -/** - * Get an initialized standard CRC table. - * @param crc_id ID of a standard CRC - * @return a pointer to the CRC table or NULL on failure - */ -const AVCRC *av_crc_get_table(AVCRCId crc_id); - -/** - * Calculate the CRC of a block. - * @param crc CRC of previous blocks if any or initial value for CRC - * @return CRC updated with the data from the given block - * - * @see av_crc_init() "le" parameter - */ -uint32_t av_crc(const AVCRC *ctx, uint32_t crc, - const uint8_t *buffer, size_t length) av_pure; - -/** - * @} - */ - -#endif /* AVUTIL_CRC_H */ diff --git a/Externals/ffmpeg/include/libavutil/des.h b/Externals/ffmpeg/include/libavutil/des.h deleted file mode 100644 index 4cf11f5bca47..000000000000 --- a/Externals/ffmpeg/include/libavutil/des.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * DES encryption/decryption - * Copyright (c) 2007 Reimar Doeffinger - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_DES_H -#define AVUTIL_DES_H - -#include - -/** - * @defgroup lavu_des DES - * @ingroup lavu_crypto - * @{ - */ - -typedef struct AVDES { - uint64_t round_keys[3][16]; - int triple_des; -} AVDES; - -/** - * Allocate an AVDES context. - */ -AVDES *av_des_alloc(void); - -/** - * @brief Initializes an AVDES context. - * - * @param key_bits must be 64 or 192 - * @param decrypt 0 for encryption/CBC-MAC, 1 for decryption - * @return zero on success, negative value otherwise - */ -int av_des_init(struct AVDES *d, const uint8_t *key, int key_bits, int decrypt); - -/** - * @brief Encrypts / decrypts using the DES algorithm. - * - * @param count number of 8 byte blocks - * @param dst destination array, can be equal to src, must be 8-byte aligned - * @param src source array, can be equal to dst, must be 8-byte aligned, may be NULL - * @param iv initialization vector for CBC mode, if NULL then ECB will be used, - * must be 8-byte aligned - * @param decrypt 0 for encryption, 1 for decryption - */ -void av_des_crypt(struct AVDES *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); - -/** - * @brief Calculates CBC-MAC using the DES algorithm. - * - * @param count number of 8 byte blocks - * @param dst destination array, can be equal to src, must be 8-byte aligned - * @param src source array, can be equal to dst, must be 8-byte aligned, may be NULL - */ -void av_des_mac(struct AVDES *d, uint8_t *dst, const uint8_t *src, int count); - -/** - * @} - */ - -#endif /* AVUTIL_DES_H */ diff --git a/Externals/ffmpeg/include/libavutil/dict.h b/Externals/ffmpeg/include/libavutil/dict.h deleted file mode 100644 index 118f1f00ed20..000000000000 --- a/Externals/ffmpeg/include/libavutil/dict.h +++ /dev/null @@ -1,200 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Public dictionary API. - * @deprecated - * AVDictionary is provided for compatibility with libav. It is both in - * implementation as well as API inefficient. It does not scale and is - * extremely slow with large dictionaries. - * It is recommended that new code uses our tree container from tree.c/h - * where applicable, which uses AVL trees to achieve O(log n) performance. - */ - -#ifndef AVUTIL_DICT_H -#define AVUTIL_DICT_H - -#include - -#include "version.h" - -/** - * @addtogroup lavu_dict AVDictionary - * @ingroup lavu_data - * - * @brief Simple key:value store - * - * @{ - * Dictionaries are used for storing key:value pairs. To create - * an AVDictionary, simply pass an address of a NULL pointer to - * av_dict_set(). NULL can be used as an empty dictionary wherever - * a pointer to an AVDictionary is required. - * Use av_dict_get() to retrieve an entry or iterate over all - * entries and finally av_dict_free() to free the dictionary - * and all its contents. - * - @code - AVDictionary *d = NULL; // "create" an empty dictionary - AVDictionaryEntry *t = NULL; - - av_dict_set(&d, "foo", "bar", 0); // add an entry - - char *k = av_strdup("key"); // if your strings are already allocated, - char *v = av_strdup("value"); // you can avoid copying them like this - av_dict_set(&d, k, v, AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL); - - while (t = av_dict_get(d, "", t, AV_DICT_IGNORE_SUFFIX)) { - <....> // iterate over all entries in d - } - av_dict_free(&d); - @endcode - */ - -#define AV_DICT_MATCH_CASE 1 /**< Only get an entry with exact-case key match. Only relevant in av_dict_get(). */ -#define AV_DICT_IGNORE_SUFFIX 2 /**< Return first entry in a dictionary whose first part corresponds to the search key, - ignoring the suffix of the found key string. Only relevant in av_dict_get(). */ -#define AV_DICT_DONT_STRDUP_KEY 4 /**< Take ownership of a key that's been - allocated with av_malloc() or another memory allocation function. */ -#define AV_DICT_DONT_STRDUP_VAL 8 /**< Take ownership of a value that's been - allocated with av_malloc() or another memory allocation function. */ -#define AV_DICT_DONT_OVERWRITE 16 ///< Don't overwrite existing entries. -#define AV_DICT_APPEND 32 /**< If the entry already exists, append to it. Note that no - delimiter is added, the strings are simply concatenated. */ -#define AV_DICT_MULTIKEY 64 /**< Allow to store several equal keys in the dictionary */ - -typedef struct AVDictionaryEntry { - char *key; - char *value; -} AVDictionaryEntry; - -typedef struct AVDictionary AVDictionary; - -/** - * Get a dictionary entry with matching key. - * - * The returned entry key or value must not be changed, or it will - * cause undefined behavior. - * - * To iterate through all the dictionary entries, you can set the matching key - * to the null string "" and set the AV_DICT_IGNORE_SUFFIX flag. - * - * @param prev Set to the previous matching element to find the next. - * If set to NULL the first matching element is returned. - * @param key matching key - * @param flags a collection of AV_DICT_* flags controlling how the entry is retrieved - * @return found entry or NULL in case no matching entry was found in the dictionary - */ -AVDictionaryEntry *av_dict_get(const AVDictionary *m, const char *key, - const AVDictionaryEntry *prev, int flags); - -/** - * Get number of entries in dictionary. - * - * @param m dictionary - * @return number of entries in dictionary - */ -int av_dict_count(const AVDictionary *m); - -/** - * Set the given entry in *pm, overwriting an existing entry. - * - * Note: If AV_DICT_DONT_STRDUP_KEY or AV_DICT_DONT_STRDUP_VAL is set, - * these arguments will be freed on error. - * - * Warning: Adding a new entry to a dictionary invalidates all existing entries - * previously returned with av_dict_get. - * - * @param pm pointer to a pointer to a dictionary struct. If *pm is NULL - * a dictionary struct is allocated and put in *pm. - * @param key entry key to add to *pm (will either be av_strduped or added as a new key depending on flags) - * @param value entry value to add to *pm (will be av_strduped or added as a new key depending on flags). - * Passing a NULL value will cause an existing entry to be deleted. - * @return >= 0 on success otherwise an error code <0 - */ -int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags); - -/** - * Convenience wrapper for av_dict_set that converts the value to a string - * and stores it. - * - * Note: If AV_DICT_DONT_STRDUP_KEY is set, key will be freed on error. - */ -int av_dict_set_int(AVDictionary **pm, const char *key, int64_t value, int flags); - -/** - * Parse the key/value pairs list and add the parsed entries to a dictionary. - * - * In case of failure, all the successfully set entries are stored in - * *pm. You may need to manually free the created dictionary. - * - * @param key_val_sep a 0-terminated list of characters used to separate - * key from value - * @param pairs_sep a 0-terminated list of characters used to separate - * two pairs from each other - * @param flags flags to use when adding to dictionary. - * AV_DICT_DONT_STRDUP_KEY and AV_DICT_DONT_STRDUP_VAL - * are ignored since the key/value tokens will always - * be duplicated. - * @return 0 on success, negative AVERROR code on failure - */ -int av_dict_parse_string(AVDictionary **pm, const char *str, - const char *key_val_sep, const char *pairs_sep, - int flags); - -/** - * Copy entries from one AVDictionary struct into another. - * @param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL, - * this function will allocate a struct for you and put it in *dst - * @param src pointer to source AVDictionary struct - * @param flags flags to use when setting entries in *dst - * @note metadata is read using the AV_DICT_IGNORE_SUFFIX flag - * @return 0 on success, negative AVERROR code on failure. If dst was allocated - * by this function, callers should free the associated memory. - */ -int av_dict_copy(AVDictionary **dst, const AVDictionary *src, int flags); - -/** - * Free all the memory allocated for an AVDictionary struct - * and all keys and values. - */ -void av_dict_free(AVDictionary **m); - -/** - * Get dictionary entries as a string. - * - * Create a string containing dictionary's entries. - * Such string may be passed back to av_dict_parse_string(). - * @note String is escaped with backslashes ('\'). - * - * @param[in] m dictionary - * @param[out] buffer Pointer to buffer that will be allocated with string containg entries. - * Buffer must be freed by the caller when is no longer needed. - * @param[in] key_val_sep character used to separate key from value - * @param[in] pairs_sep character used to separate two pairs from each other - * @return >= 0 on success, negative on error - * @warning Separators cannot be neither '\\' nor '\0'. They also cannot be the same. - */ -int av_dict_get_string(const AVDictionary *m, char **buffer, - const char key_val_sep, const char pairs_sep); - -/** - * @} - */ - -#endif /* AVUTIL_DICT_H */ diff --git a/Externals/ffmpeg/include/libavutil/display.h b/Externals/ffmpeg/include/libavutil/display.h deleted file mode 100644 index 39c15ee6b83d..000000000000 --- a/Externals/ffmpeg/include/libavutil/display.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2014 Vittorio Giovara - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_DISPLAY_H -#define AVUTIL_DISPLAY_H - -#include -#include "common.h" - -/** - * The display transformation matrix specifies an affine transformation that - * should be applied to video frames for correct presentation. It is compatible - * with the matrices stored in the ISO/IEC 14496-12 container format. - * - * The data is a 3x3 matrix represented as a 9-element array: - * - * | a b u | - * (a, b, u, c, d, v, x, y, w) -> | c d v | - * | x y w | - * - * All numbers are stored in native endianness, as 16.16 fixed-point values, - * except for u, v and w, which are stored as 2.30 fixed-point values. - * - * The transformation maps a point (p, q) in the source (pre-transformation) - * frame to the point (p', q') in the destination (post-transformation) frame as - * follows: - * | a b u | - * (p, q, 1) . | c d v | = z * (p', q', 1) - * | x y w | - * - * The transformation can also be more explicitly written in components as - * follows: - * p' = (a * p + c * q + x) / z; - * q' = (b * p + d * q + y) / z; - * z = u * p + v * q + w - */ - -/** - * Extract the rotation component of the transformation matrix. - * - * @param matrix the transformation matrix - * @return the angle (in degrees) by which the transformation rotates the frame - * counterclockwise. The angle will be in range [-180.0, 180.0], - * or NaN if the matrix is singular. - * - * @note floating point numbers are inherently inexact, so callers are - * recommended to round the return value to nearest integer before use. - */ -double av_display_rotation_get(const int32_t matrix[9]); - -/** - * Initialize a transformation matrix describing a pure counterclockwise - * rotation by the specified angle (in degrees). - * - * @param matrix an allocated transformation matrix (will be fully overwritten - * by this function) - * @param angle rotation angle in degrees. - */ -void av_display_rotation_set(int32_t matrix[9], double angle); - -/** - * Flip the input matrix horizontally and/or vertically. - * - * @param matrix an allocated transformation matrix - * @param hflip whether the matrix should be flipped horizontally - * @param vflip whether the matrix should be flipped vertically - */ -void av_display_matrix_flip(int32_t matrix[9], int hflip, int vflip); - -#endif /* AVUTIL_DISPLAY_H */ diff --git a/Externals/ffmpeg/include/libavutil/downmix_info.h b/Externals/ffmpeg/include/libavutil/downmix_info.h deleted file mode 100644 index 221cf5bf9baf..000000000000 --- a/Externals/ffmpeg/include/libavutil/downmix_info.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2014 Tim Walker - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_DOWNMIX_INFO_H -#define AVUTIL_DOWNMIX_INFO_H - -#include "frame.h" - -/** - * @file - * audio downmix medatata - */ - -/** - * @addtogroup lavu_audio - * @{ - */ - -/** - * @defgroup downmix_info Audio downmix metadata - * @{ - */ - -/** - * Possible downmix types. - */ -enum AVDownmixType { - AV_DOWNMIX_TYPE_UNKNOWN, /**< Not indicated. */ - AV_DOWNMIX_TYPE_LORO, /**< Lo/Ro 2-channel downmix (Stereo). */ - AV_DOWNMIX_TYPE_LTRT, /**< Lt/Rt 2-channel downmix, Dolby Surround compatible. */ - AV_DOWNMIX_TYPE_DPLII, /**< Lt/Rt 2-channel downmix, Dolby Pro Logic II compatible. */ - AV_DOWNMIX_TYPE_NB /**< Number of downmix types. Not part of ABI. */ -}; - -/** - * This structure describes optional metadata relevant to a downmix procedure. - * - * All fields are set by the decoder to the value indicated in the audio - * bitstream (if present), or to a "sane" default otherwise. - */ -typedef struct AVDownmixInfo { - /** - * Type of downmix preferred by the mastering engineer. - */ - enum AVDownmixType preferred_downmix_type; - - /** - * Absolute scale factor representing the nominal level of the center - * channel during a regular downmix. - */ - double center_mix_level; - - /** - * Absolute scale factor representing the nominal level of the center - * channel during an Lt/Rt compatible downmix. - */ - double center_mix_level_ltrt; - - /** - * Absolute scale factor representing the nominal level of the surround - * channels during a regular downmix. - */ - double surround_mix_level; - - /** - * Absolute scale factor representing the nominal level of the surround - * channels during an Lt/Rt compatible downmix. - */ - double surround_mix_level_ltrt; - - /** - * Absolute scale factor representing the level at which the LFE data is - * mixed into L/R channels during downmixing. - */ - double lfe_mix_level; -} AVDownmixInfo; - -/** - * Get a frame's AV_FRAME_DATA_DOWNMIX_INFO side data for editing. - * - * If the side data is absent, it is created and added to the frame. - * - * @param frame the frame for which the side data is to be obtained or created - * - * @return the AVDownmixInfo structure to be edited by the caller, or NULL if - * the structure cannot be allocated. - */ -AVDownmixInfo *av_downmix_info_update_side_data(AVFrame *frame); - -/** - * @} - */ - -/** - * @} - */ - -#endif /* AVUTIL_DOWNMIX_INFO_H */ diff --git a/Externals/ffmpeg/include/libavutil/error.h b/Externals/ffmpeg/include/libavutil/error.h deleted file mode 100644 index 71df4da353b9..000000000000 --- a/Externals/ffmpeg/include/libavutil/error.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * error code definitions - */ - -#ifndef AVUTIL_ERROR_H -#define AVUTIL_ERROR_H - -#include -#include - -/** - * @addtogroup lavu_error - * - * @{ - */ - - -/* error handling */ -#if EDOM > 0 -#define AVERROR(e) (-(e)) ///< Returns a negative error code from a POSIX error code, to return from library functions. -#define AVUNERROR(e) (-(e)) ///< Returns a POSIX error code from a library function error return value. -#else -/* Some platforms have E* and errno already negated. */ -#define AVERROR(e) (e) -#define AVUNERROR(e) (e) -#endif - -#define FFERRTAG(a, b, c, d) (-(int)MKTAG(a, b, c, d)) - -#define AVERROR_BSF_NOT_FOUND FFERRTAG(0xF8,'B','S','F') ///< Bitstream filter not found -#define AVERROR_BUG FFERRTAG( 'B','U','G','!') ///< Internal bug, also see AVERROR_BUG2 -#define AVERROR_BUFFER_TOO_SMALL FFERRTAG( 'B','U','F','S') ///< Buffer too small -#define AVERROR_DECODER_NOT_FOUND FFERRTAG(0xF8,'D','E','C') ///< Decoder not found -#define AVERROR_DEMUXER_NOT_FOUND FFERRTAG(0xF8,'D','E','M') ///< Demuxer not found -#define AVERROR_ENCODER_NOT_FOUND FFERRTAG(0xF8,'E','N','C') ///< Encoder not found -#define AVERROR_EOF FFERRTAG( 'E','O','F',' ') ///< End of file -#define AVERROR_EXIT FFERRTAG( 'E','X','I','T') ///< Immediate exit was requested; the called function should not be restarted -#define AVERROR_EXTERNAL FFERRTAG( 'E','X','T',' ') ///< Generic error in an external library -#define AVERROR_FILTER_NOT_FOUND FFERRTAG(0xF8,'F','I','L') ///< Filter not found -#define AVERROR_INVALIDDATA FFERRTAG( 'I','N','D','A') ///< Invalid data found when processing input -#define AVERROR_MUXER_NOT_FOUND FFERRTAG(0xF8,'M','U','X') ///< Muxer not found -#define AVERROR_OPTION_NOT_FOUND FFERRTAG(0xF8,'O','P','T') ///< Option not found -#define AVERROR_PATCHWELCOME FFERRTAG( 'P','A','W','E') ///< Not yet implemented in FFmpeg, patches welcome -#define AVERROR_PROTOCOL_NOT_FOUND FFERRTAG(0xF8,'P','R','O') ///< Protocol not found - -#define AVERROR_STREAM_NOT_FOUND FFERRTAG(0xF8,'S','T','R') ///< Stream not found -/** - * This is semantically identical to AVERROR_BUG - * it has been introduced in Libav after our AVERROR_BUG and with a modified value. - */ -#define AVERROR_BUG2 FFERRTAG( 'B','U','G',' ') -#define AVERROR_UNKNOWN FFERRTAG( 'U','N','K','N') ///< Unknown error, typically from an external library -#define AVERROR_EXPERIMENTAL (-0x2bb2afa8) ///< Requested feature is flagged experimental. Set strict_std_compliance if you really want to use it. -#define AVERROR_INPUT_CHANGED (-0x636e6701) ///< Input changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_OUTPUT_CHANGED) -#define AVERROR_OUTPUT_CHANGED (-0x636e6702) ///< Output changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_INPUT_CHANGED) -/* HTTP & RTSP errors */ -#define AVERROR_HTTP_BAD_REQUEST FFERRTAG(0xF8,'4','0','0') -#define AVERROR_HTTP_UNAUTHORIZED FFERRTAG(0xF8,'4','0','1') -#define AVERROR_HTTP_FORBIDDEN FFERRTAG(0xF8,'4','0','3') -#define AVERROR_HTTP_NOT_FOUND FFERRTAG(0xF8,'4','0','4') -#define AVERROR_HTTP_OTHER_4XX FFERRTAG(0xF8,'4','X','X') -#define AVERROR_HTTP_SERVER_ERROR FFERRTAG(0xF8,'5','X','X') - -#define AV_ERROR_MAX_STRING_SIZE 64 - -/** - * Put a description of the AVERROR code errnum in errbuf. - * In case of failure the global variable errno is set to indicate the - * error. Even in case of failure av_strerror() will print a generic - * error message indicating the errnum provided to errbuf. - * - * @param errnum error code to describe - * @param errbuf buffer to which description is written - * @param errbuf_size the size in bytes of errbuf - * @return 0 on success, a negative value if a description for errnum - * cannot be found - */ -int av_strerror(int errnum, char *errbuf, size_t errbuf_size); - -/** - * Fill the provided buffer with a string containing an error string - * corresponding to the AVERROR code errnum. - * - * @param errbuf a buffer - * @param errbuf_size size in bytes of errbuf - * @param errnum error code to describe - * @return the buffer in input, filled with the error description - * @see av_strerror() - */ -static inline char *av_make_error_string(char *errbuf, size_t errbuf_size, int errnum) -{ - av_strerror(errnum, errbuf, errbuf_size); - return errbuf; -} - -/** - * Convenience macro, the return value should be used only directly in - * function arguments but never stand-alone. - */ -#define av_err2str(errnum) \ - av_make_error_string((char[AV_ERROR_MAX_STRING_SIZE]){0}, AV_ERROR_MAX_STRING_SIZE, errnum) - -/** - * @} - */ - -#endif /* AVUTIL_ERROR_H */ diff --git a/Externals/ffmpeg/include/libavutil/eval.h b/Externals/ffmpeg/include/libavutil/eval.h deleted file mode 100644 index dacd22b96e66..000000000000 --- a/Externals/ffmpeg/include/libavutil/eval.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) 2002 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * simple arithmetic expression evaluator - */ - -#ifndef AVUTIL_EVAL_H -#define AVUTIL_EVAL_H - -#include "avutil.h" - -typedef struct AVExpr AVExpr; - -/** - * Parse and evaluate an expression. - * Note, this is significantly slower than av_expr_eval(). - * - * @param res a pointer to a double where is put the result value of - * the expression, or NAN in case of error - * @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)" - * @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0} - * @param const_values a zero terminated array of values for the identifiers from const_names - * @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers - * @param funcs1 NULL terminated array of function pointers for functions which take 1 argument - * @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers - * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments - * @param opaque a pointer which will be passed to all functions from funcs1 and funcs2 - * @param log_ctx parent logging context - * @return >= 0 in case of success, a negative value corresponding to an - * AVERROR code otherwise - */ -int av_expr_parse_and_eval(double *res, const char *s, - const char * const *const_names, const double *const_values, - const char * const *func1_names, double (* const *funcs1)(void *, double), - const char * const *func2_names, double (* const *funcs2)(void *, double, double), - void *opaque, int log_offset, void *log_ctx); - -/** - * Parse an expression. - * - * @param expr a pointer where is put an AVExpr containing the parsed - * value in case of successful parsing, or NULL otherwise. - * The pointed to AVExpr must be freed with av_expr_free() by the user - * when it is not needed anymore. - * @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)" - * @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0} - * @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers - * @param funcs1 NULL terminated array of function pointers for functions which take 1 argument - * @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers - * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments - * @param log_ctx parent logging context - * @return >= 0 in case of success, a negative value corresponding to an - * AVERROR code otherwise - */ -int av_expr_parse(AVExpr **expr, const char *s, - const char * const *const_names, - const char * const *func1_names, double (* const *funcs1)(void *, double), - const char * const *func2_names, double (* const *funcs2)(void *, double, double), - int log_offset, void *log_ctx); - -/** - * Evaluate a previously parsed expression. - * - * @param const_values a zero terminated array of values for the identifiers from av_expr_parse() const_names - * @param opaque a pointer which will be passed to all functions from funcs1 and funcs2 - * @return the value of the expression - */ -double av_expr_eval(AVExpr *e, const double *const_values, void *opaque); - -/** - * Free a parsed expression previously created with av_expr_parse(). - */ -void av_expr_free(AVExpr *e); - -/** - * Parse the string in numstr and return its value as a double. If - * the string is empty, contains only whitespaces, or does not contain - * an initial substring that has the expected syntax for a - * floating-point number, no conversion is performed. In this case, - * returns a value of zero and the value returned in tail is the value - * of numstr. - * - * @param numstr a string representing a number, may contain one of - * the International System number postfixes, for example 'K', 'M', - * 'G'. If 'i' is appended after the postfix, powers of 2 are used - * instead of powers of 10. The 'B' postfix multiplies the value by - * 8, and can be appended after another postfix or used alone. This - * allows using for example 'KB', 'MiB', 'G' and 'B' as postfix. - * @param tail if non-NULL puts here the pointer to the char next - * after the last parsed character - */ -double av_strtod(const char *numstr, char **tail); - -#endif /* AVUTIL_EVAL_H */ diff --git a/Externals/ffmpeg/include/libavutil/ffversion.h b/Externals/ffmpeg/include/libavutil/ffversion.h deleted file mode 100644 index 50d62f9375b0..000000000000 --- a/Externals/ffmpeg/include/libavutil/ffversion.h +++ /dev/null @@ -1,5 +0,0 @@ -/* Automatically generated by version.sh, do not manually edit! */ -#ifndef AVUTIL_FFVERSION_H -#define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "3.2.4" -#endif /* AVUTIL_FFVERSION_H */ diff --git a/Externals/ffmpeg/include/libavutil/fifo.h b/Externals/ffmpeg/include/libavutil/fifo.h deleted file mode 100644 index dc7bc6f0dd79..000000000000 --- a/Externals/ffmpeg/include/libavutil/fifo.h +++ /dev/null @@ -1,179 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * a very simple circular buffer FIFO implementation - */ - -#ifndef AVUTIL_FIFO_H -#define AVUTIL_FIFO_H - -#include -#include "avutil.h" -#include "attributes.h" - -typedef struct AVFifoBuffer { - uint8_t *buffer; - uint8_t *rptr, *wptr, *end; - uint32_t rndx, wndx; -} AVFifoBuffer; - -/** - * Initialize an AVFifoBuffer. - * @param size of FIFO - * @return AVFifoBuffer or NULL in case of memory allocation failure - */ -AVFifoBuffer *av_fifo_alloc(unsigned int size); - -/** - * Initialize an AVFifoBuffer. - * @param nmemb number of elements - * @param size size of the single element - * @return AVFifoBuffer or NULL in case of memory allocation failure - */ -AVFifoBuffer *av_fifo_alloc_array(size_t nmemb, size_t size); - -/** - * Free an AVFifoBuffer. - * @param f AVFifoBuffer to free - */ -void av_fifo_free(AVFifoBuffer *f); - -/** - * Free an AVFifoBuffer and reset pointer to NULL. - * @param f AVFifoBuffer to free - */ -void av_fifo_freep(AVFifoBuffer **f); - -/** - * Reset the AVFifoBuffer to the state right after av_fifo_alloc, in particular it is emptied. - * @param f AVFifoBuffer to reset - */ -void av_fifo_reset(AVFifoBuffer *f); - -/** - * Return the amount of data in bytes in the AVFifoBuffer, that is the - * amount of data you can read from it. - * @param f AVFifoBuffer to read from - * @return size - */ -int av_fifo_size(const AVFifoBuffer *f); - -/** - * Return the amount of space in bytes in the AVFifoBuffer, that is the - * amount of data you can write into it. - * @param f AVFifoBuffer to write into - * @return size - */ -int av_fifo_space(const AVFifoBuffer *f); - -/** - * Feed data at specific position from an AVFifoBuffer to a user-supplied callback. - * Similar as av_fifo_gereric_read but without discarding data. - * @param f AVFifoBuffer to read from - * @param offset offset from current read position - * @param buf_size number of bytes to read - * @param func generic read function - * @param dest data destination - */ -int av_fifo_generic_peek_at(AVFifoBuffer *f, void *dest, int offset, int buf_size, void (*func)(void*, void*, int)); - -/** - * Feed data from an AVFifoBuffer to a user-supplied callback. - * Similar as av_fifo_gereric_read but without discarding data. - * @param f AVFifoBuffer to read from - * @param buf_size number of bytes to read - * @param func generic read function - * @param dest data destination - */ -int av_fifo_generic_peek(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int)); - -/** - * Feed data from an AVFifoBuffer to a user-supplied callback. - * @param f AVFifoBuffer to read from - * @param buf_size number of bytes to read - * @param func generic read function - * @param dest data destination - */ -int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int)); - -/** - * Feed data from a user-supplied callback to an AVFifoBuffer. - * @param f AVFifoBuffer to write to - * @param src data source; non-const since it may be used as a - * modifiable context by the function defined in func - * @param size number of bytes to write - * @param func generic write function; the first parameter is src, - * the second is dest_buf, the third is dest_buf_size. - * func must return the number of bytes written to dest_buf, or <= 0 to - * indicate no more data available to write. - * If func is NULL, src is interpreted as a simple byte array for source data. - * @return the number of bytes written to the FIFO - */ -int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int)); - -/** - * Resize an AVFifoBuffer. - * In case of reallocation failure, the old FIFO is kept unchanged. - * - * @param f AVFifoBuffer to resize - * @param size new AVFifoBuffer size in bytes - * @return <0 for failure, >=0 otherwise - */ -int av_fifo_realloc2(AVFifoBuffer *f, unsigned int size); - -/** - * Enlarge an AVFifoBuffer. - * In case of reallocation failure, the old FIFO is kept unchanged. - * The new fifo size may be larger than the requested size. - * - * @param f AVFifoBuffer to resize - * @param additional_space the amount of space in bytes to allocate in addition to av_fifo_size() - * @return <0 for failure, >=0 otherwise - */ -int av_fifo_grow(AVFifoBuffer *f, unsigned int additional_space); - -/** - * Read and discard the specified amount of data from an AVFifoBuffer. - * @param f AVFifoBuffer to read from - * @param size amount of data to read in bytes - */ -void av_fifo_drain(AVFifoBuffer *f, int size); - -/** - * Return a pointer to the data stored in a FIFO buffer at a certain offset. - * The FIFO buffer is not modified. - * - * @param f AVFifoBuffer to peek at, f must be non-NULL - * @param offs an offset in bytes, its absolute value must be less - * than the used buffer size or the returned pointer will - * point outside to the buffer data. - * The used buffer size can be checked with av_fifo_size(). - */ -static inline uint8_t *av_fifo_peek2(const AVFifoBuffer *f, int offs) -{ - uint8_t *ptr = f->rptr + offs; - if (ptr >= f->end) - ptr = f->buffer + (ptr - f->end); - else if (ptr < f->buffer) - ptr = f->end - (f->buffer - ptr); - return ptr; -} - -#endif /* AVUTIL_FIFO_H */ diff --git a/Externals/ffmpeg/include/libavutil/file.h b/Externals/ffmpeg/include/libavutil/file.h deleted file mode 100644 index 8666c7b1d5ee..000000000000 --- a/Externals/ffmpeg/include/libavutil/file.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_FILE_H -#define AVUTIL_FILE_H - -#include - -#include "avutil.h" - -/** - * @file - * Misc file utilities. - */ - -/** - * Read the file with name filename, and put its content in a newly - * allocated buffer or map it with mmap() when available. - * In case of success set *bufptr to the read or mmapped buffer, and - * *size to the size in bytes of the buffer in *bufptr. - * The returned buffer must be released with av_file_unmap(). - * - * @param log_offset loglevel offset used for logging - * @param log_ctx context used for logging - * @return a non negative number in case of success, a negative value - * corresponding to an AVERROR error code in case of failure - */ -av_warn_unused_result -int av_file_map(const char *filename, uint8_t **bufptr, size_t *size, - int log_offset, void *log_ctx); - -/** - * Unmap or free the buffer bufptr created by av_file_map(). - * - * @param size size in bytes of bufptr, must be the same as returned - * by av_file_map() - */ -void av_file_unmap(uint8_t *bufptr, size_t size); - -/** - * Wrapper to work around the lack of mkstemp() on mingw. - * Also, tries to create file in /tmp first, if possible. - * *prefix can be a character constant; *filename will be allocated internally. - * @return file descriptor of opened file (or negative value corresponding to an - * AVERROR code on error) - * and opened file name in **filename. - * @note On very old libcs it is necessary to set a secure umask before - * calling this, av_tempfile() can't call umask itself as it is used in - * libraries and could interfere with the calling application. - * @deprecated as fd numbers cannot be passed saftely between libs on some platforms - */ -int av_tempfile(const char *prefix, char **filename, int log_offset, void *log_ctx); - -#endif /* AVUTIL_FILE_H */ diff --git a/Externals/ffmpeg/include/libavutil/frame.h b/Externals/ffmpeg/include/libavutil/frame.h deleted file mode 100644 index 8e51361e293c..000000000000 --- a/Externals/ffmpeg/include/libavutil/frame.h +++ /dev/null @@ -1,755 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_frame - * reference-counted frame API - */ - -#ifndef AVUTIL_FRAME_H -#define AVUTIL_FRAME_H - -#include - -#include "avutil.h" -#include "buffer.h" -#include "dict.h" -#include "rational.h" -#include "samplefmt.h" -#include "pixfmt.h" -#include "version.h" - - -/** - * @defgroup lavu_frame AVFrame - * @ingroup lavu_data - * - * @{ - * AVFrame is an abstraction for reference-counted raw multimedia data. - */ - -enum AVFrameSideDataType { - /** - * The data is the AVPanScan struct defined in libavcodec. - */ - AV_FRAME_DATA_PANSCAN, - /** - * ATSC A53 Part 4 Closed Captions. - * A53 CC bitstream is stored as uint8_t in AVFrameSideData.data. - * The number of bytes of CC data is AVFrameSideData.size. - */ - AV_FRAME_DATA_A53_CC, - /** - * Stereoscopic 3d metadata. - * The data is the AVStereo3D struct defined in libavutil/stereo3d.h. - */ - AV_FRAME_DATA_STEREO3D, - /** - * The data is the AVMatrixEncoding enum defined in libavutil/channel_layout.h. - */ - AV_FRAME_DATA_MATRIXENCODING, - /** - * Metadata relevant to a downmix procedure. - * The data is the AVDownmixInfo struct defined in libavutil/downmix_info.h. - */ - AV_FRAME_DATA_DOWNMIX_INFO, - /** - * ReplayGain information in the form of the AVReplayGain struct. - */ - AV_FRAME_DATA_REPLAYGAIN, - /** - * This side data contains a 3x3 transformation matrix describing an affine - * transformation that needs to be applied to the frame for correct - * presentation. - * - * See libavutil/display.h for a detailed description of the data. - */ - AV_FRAME_DATA_DISPLAYMATRIX, - /** - * Active Format Description data consisting of a single byte as specified - * in ETSI TS 101 154 using AVActiveFormatDescription enum. - */ - AV_FRAME_DATA_AFD, - /** - * Motion vectors exported by some codecs (on demand through the export_mvs - * flag set in the libavcodec AVCodecContext flags2 option). - * The data is the AVMotionVector struct defined in - * libavutil/motion_vector.h. - */ - AV_FRAME_DATA_MOTION_VECTORS, - /** - * Recommmends skipping the specified number of samples. This is exported - * only if the "skip_manual" AVOption is set in libavcodec. - * This has the same format as AV_PKT_DATA_SKIP_SAMPLES. - * @code - * u32le number of samples to skip from start of this packet - * u32le number of samples to skip from end of this packet - * u8 reason for start skip - * u8 reason for end skip (0=padding silence, 1=convergence) - * @endcode - */ - AV_FRAME_DATA_SKIP_SAMPLES, - /** - * This side data must be associated with an audio frame and corresponds to - * enum AVAudioServiceType defined in avcodec.h. - */ - AV_FRAME_DATA_AUDIO_SERVICE_TYPE, - /** - * Mastering display metadata associated with a video frame. The payload is - * an AVMasteringDisplayMetadata type and contains information about the - * mastering display color volume. - */ - AV_FRAME_DATA_MASTERING_DISPLAY_METADATA, - /** - * The GOP timecode in 25 bit timecode format. Data format is 64-bit integer. - * This is set on the first frame of a GOP that has a temporal reference of 0. - */ - AV_FRAME_DATA_GOP_TIMECODE -}; - -enum AVActiveFormatDescription { - AV_AFD_SAME = 8, - AV_AFD_4_3 = 9, - AV_AFD_16_9 = 10, - AV_AFD_14_9 = 11, - AV_AFD_4_3_SP_14_9 = 13, - AV_AFD_16_9_SP_14_9 = 14, - AV_AFD_SP_4_3 = 15, -}; - - -/** - * Structure to hold side data for an AVFrame. - * - * sizeof(AVFrameSideData) is not a part of the public ABI, so new fields may be added - * to the end with a minor bump. - */ -typedef struct AVFrameSideData { - enum AVFrameSideDataType type; - uint8_t *data; - int size; - AVDictionary *metadata; - AVBufferRef *buf; -} AVFrameSideData; - -/** - * This structure describes decoded (raw) audio or video data. - * - * AVFrame must be allocated using av_frame_alloc(). Note that this only - * allocates the AVFrame itself, the buffers for the data must be managed - * through other means (see below). - * AVFrame must be freed with av_frame_free(). - * - * AVFrame is typically allocated once and then reused multiple times to hold - * different data (e.g. a single AVFrame to hold frames received from a - * decoder). In such a case, av_frame_unref() will free any references held by - * the frame and reset it to its original clean state before it - * is reused again. - * - * The data described by an AVFrame is usually reference counted through the - * AVBuffer API. The underlying buffer references are stored in AVFrame.buf / - * AVFrame.extended_buf. An AVFrame is considered to be reference counted if at - * least one reference is set, i.e. if AVFrame.buf[0] != NULL. In such a case, - * every single data plane must be contained in one of the buffers in - * AVFrame.buf or AVFrame.extended_buf. - * There may be a single buffer for all the data, or one separate buffer for - * each plane, or anything in between. - * - * sizeof(AVFrame) is not a part of the public ABI, so new fields may be added - * to the end with a minor bump. - * Similarly fields that are marked as to be only accessed by - * av_opt_ptr() can be reordered. This allows 2 forks to add fields - * without breaking compatibility with each other. - * - * Fields can be accessed through AVOptions, the name string used, matches the - * C structure field name for fields accessible through AVOptions. The AVClass - * for AVFrame can be obtained from avcodec_get_frame_class() - */ -typedef struct AVFrame { -#define AV_NUM_DATA_POINTERS 8 - /** - * pointer to the picture/channel planes. - * This might be different from the first allocated byte - * - * Some decoders access areas outside 0,0 - width,height, please - * see avcodec_align_dimensions2(). Some filters and swscale can read - * up to 16 bytes beyond the planes, if these filters are to be used, - * then 16 extra bytes must be allocated. - * - * NOTE: Except for hwaccel formats, pointers not needed by the format - * MUST be set to NULL. - */ - uint8_t *data[AV_NUM_DATA_POINTERS]; - - /** - * For video, size in bytes of each picture line. - * For audio, size in bytes of each plane. - * - * For audio, only linesize[0] may be set. For planar audio, each channel - * plane must be the same size. - * - * For video the linesizes should be multiples of the CPUs alignment - * preference, this is 16 or 32 for modern desktop CPUs. - * Some code requires such alignment other code can be slower without - * correct alignment, for yet other it makes no difference. - * - * @note The linesize may be larger than the size of usable data -- there - * may be extra padding present for performance reasons. - */ - int linesize[AV_NUM_DATA_POINTERS]; - - /** - * pointers to the data planes/channels. - * - * For video, this should simply point to data[]. - * - * For planar audio, each channel has a separate data pointer, and - * linesize[0] contains the size of each channel buffer. - * For packed audio, there is just one data pointer, and linesize[0] - * contains the total size of the buffer for all channels. - * - * Note: Both data and extended_data should always be set in a valid frame, - * but for planar audio with more channels that can fit in data, - * extended_data must be used in order to access all channels. - */ - uint8_t **extended_data; - - /** - * width and height of the video frame - */ - int width, height; - - /** - * number of audio samples (per channel) described by this frame - */ - int nb_samples; - - /** - * format of the frame, -1 if unknown or unset - * Values correspond to enum AVPixelFormat for video frames, - * enum AVSampleFormat for audio) - */ - int format; - - /** - * 1 -> keyframe, 0-> not - */ - int key_frame; - - /** - * Picture type of the frame. - */ - enum AVPictureType pict_type; - - /** - * Sample aspect ratio for the video frame, 0/1 if unknown/unspecified. - */ - AVRational sample_aspect_ratio; - - /** - * Presentation timestamp in time_base units (time when frame should be shown to user). - */ - int64_t pts; - -#if FF_API_PKT_PTS - /** - * PTS copied from the AVPacket that was decoded to produce this frame. - * @deprecated use the pts field instead - */ - attribute_deprecated - int64_t pkt_pts; -#endif - - /** - * DTS copied from the AVPacket that triggered returning this frame. (if frame threading isn't used) - * This is also the Presentation time of this AVFrame calculated from - * only AVPacket.dts values without pts values. - */ - int64_t pkt_dts; - - /** - * picture number in bitstream order - */ - int coded_picture_number; - /** - * picture number in display order - */ - int display_picture_number; - - /** - * quality (between 1 (good) and FF_LAMBDA_MAX (bad)) - */ - int quality; - - /** - * for some private data of the user - */ - void *opaque; - -#if FF_API_ERROR_FRAME - /** - * @deprecated unused - */ - attribute_deprecated - uint64_t error[AV_NUM_DATA_POINTERS]; -#endif - - /** - * When decoding, this signals how much the picture must be delayed. - * extra_delay = repeat_pict / (2*fps) - */ - int repeat_pict; - - /** - * The content of the picture is interlaced. - */ - int interlaced_frame; - - /** - * If the content is interlaced, is top field displayed first. - */ - int top_field_first; - - /** - * Tell user application that palette has changed from previous frame. - */ - int palette_has_changed; - - /** - * reordered opaque 64 bits (generally an integer or a double precision float - * PTS but can be anything). - * The user sets AVCodecContext.reordered_opaque to represent the input at - * that time, - * the decoder reorders values as needed and sets AVFrame.reordered_opaque - * to exactly one of the values provided by the user through AVCodecContext.reordered_opaque - * @deprecated in favor of pkt_pts - */ - int64_t reordered_opaque; - - /** - * Sample rate of the audio data. - */ - int sample_rate; - - /** - * Channel layout of the audio data. - */ - uint64_t channel_layout; - - /** - * AVBuffer references backing the data for this frame. If all elements of - * this array are NULL, then this frame is not reference counted. This array - * must be filled contiguously -- if buf[i] is non-NULL then buf[j] must - * also be non-NULL for all j < i. - * - * There may be at most one AVBuffer per data plane, so for video this array - * always contains all the references. For planar audio with more than - * AV_NUM_DATA_POINTERS channels, there may be more buffers than can fit in - * this array. Then the extra AVBufferRef pointers are stored in the - * extended_buf array. - */ - AVBufferRef *buf[AV_NUM_DATA_POINTERS]; - - /** - * For planar audio which requires more than AV_NUM_DATA_POINTERS - * AVBufferRef pointers, this array will hold all the references which - * cannot fit into AVFrame.buf. - * - * Note that this is different from AVFrame.extended_data, which always - * contains all the pointers. This array only contains the extra pointers, - * which cannot fit into AVFrame.buf. - * - * This array is always allocated using av_malloc() by whoever constructs - * the frame. It is freed in av_frame_unref(). - */ - AVBufferRef **extended_buf; - /** - * Number of elements in extended_buf. - */ - int nb_extended_buf; - - AVFrameSideData **side_data; - int nb_side_data; - -/** - * @defgroup lavu_frame_flags AV_FRAME_FLAGS - * @ingroup lavu_frame - * Flags describing additional frame properties. - * - * @{ - */ - -/** - * The frame data may be corrupted, e.g. due to decoding errors. - */ -#define AV_FRAME_FLAG_CORRUPT (1 << 0) -/** - * A flag to mark the frames which need to be decoded, but shouldn't be output. - */ -#define AV_FRAME_FLAG_DISCARD (1 << 2) -/** - * @} - */ - - /** - * Frame flags, a combination of @ref lavu_frame_flags - */ - int flags; - - /** - * MPEG vs JPEG YUV range. - * It must be accessed using av_frame_get_color_range() and - * av_frame_set_color_range(). - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorRange color_range; - - enum AVColorPrimaries color_primaries; - - enum AVColorTransferCharacteristic color_trc; - - /** - * YUV colorspace type. - * It must be accessed using av_frame_get_colorspace() and - * av_frame_set_colorspace(). - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorSpace colorspace; - - enum AVChromaLocation chroma_location; - - /** - * frame timestamp estimated using various heuristics, in stream time base - * Code outside libavutil should access this field using: - * av_frame_get_best_effort_timestamp(frame) - * - encoding: unused - * - decoding: set by libavcodec, read by user. - */ - int64_t best_effort_timestamp; - - /** - * reordered pos from the last AVPacket that has been input into the decoder - * Code outside libavutil should access this field using: - * av_frame_get_pkt_pos(frame) - * - encoding: unused - * - decoding: Read by user. - */ - int64_t pkt_pos; - - /** - * duration of the corresponding packet, expressed in - * AVStream->time_base units, 0 if unknown. - * Code outside libavutil should access this field using: - * av_frame_get_pkt_duration(frame) - * - encoding: unused - * - decoding: Read by user. - */ - int64_t pkt_duration; - - /** - * metadata. - * Code outside libavutil should access this field using: - * av_frame_get_metadata(frame) - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - AVDictionary *metadata; - - /** - * decode error flags of the frame, set to a combination of - * FF_DECODE_ERROR_xxx flags if the decoder produced a frame, but there - * were errors during the decoding. - * Code outside libavutil should access this field using: - * av_frame_get_decode_error_flags(frame) - * - encoding: unused - * - decoding: set by libavcodec, read by user. - */ - int decode_error_flags; -#define FF_DECODE_ERROR_INVALID_BITSTREAM 1 -#define FF_DECODE_ERROR_MISSING_REFERENCE 2 - - /** - * number of audio channels, only used for audio. - * Code outside libavutil should access this field using: - * av_frame_get_channels(frame) - * - encoding: unused - * - decoding: Read by user. - */ - int channels; - - /** - * size of the corresponding packet containing the compressed - * frame. It must be accessed using av_frame_get_pkt_size() and - * av_frame_set_pkt_size(). - * It is set to a negative value if unknown. - * - encoding: unused - * - decoding: set by libavcodec, read by user. - */ - int pkt_size; - -#if FF_API_FRAME_QP - /** - * QP table - * Not to be accessed directly from outside libavutil - */ - attribute_deprecated - int8_t *qscale_table; - /** - * QP store stride - * Not to be accessed directly from outside libavutil - */ - attribute_deprecated - int qstride; - - attribute_deprecated - int qscale_type; - - /** - * Not to be accessed directly from outside libavutil - */ - AVBufferRef *qp_table_buf; -#endif - /** - * For hwaccel-format frames, this should be a reference to the - * AVHWFramesContext describing the frame. - */ - AVBufferRef *hw_frames_ctx; -} AVFrame; - -/** - * Accessors for some AVFrame fields. - * The position of these field in the structure is not part of the ABI, - * they should not be accessed directly outside libavutil. - */ -int64_t av_frame_get_best_effort_timestamp(const AVFrame *frame); -void av_frame_set_best_effort_timestamp(AVFrame *frame, int64_t val); -int64_t av_frame_get_pkt_duration (const AVFrame *frame); -void av_frame_set_pkt_duration (AVFrame *frame, int64_t val); -int64_t av_frame_get_pkt_pos (const AVFrame *frame); -void av_frame_set_pkt_pos (AVFrame *frame, int64_t val); -int64_t av_frame_get_channel_layout (const AVFrame *frame); -void av_frame_set_channel_layout (AVFrame *frame, int64_t val); -int av_frame_get_channels (const AVFrame *frame); -void av_frame_set_channels (AVFrame *frame, int val); -int av_frame_get_sample_rate (const AVFrame *frame); -void av_frame_set_sample_rate (AVFrame *frame, int val); -AVDictionary *av_frame_get_metadata (const AVFrame *frame); -void av_frame_set_metadata (AVFrame *frame, AVDictionary *val); -int av_frame_get_decode_error_flags (const AVFrame *frame); -void av_frame_set_decode_error_flags (AVFrame *frame, int val); -int av_frame_get_pkt_size(const AVFrame *frame); -void av_frame_set_pkt_size(AVFrame *frame, int val); -AVDictionary **avpriv_frame_get_metadatap(AVFrame *frame); -#if FF_API_FRAME_QP -int8_t *av_frame_get_qp_table(AVFrame *f, int *stride, int *type); -int av_frame_set_qp_table(AVFrame *f, AVBufferRef *buf, int stride, int type); -#endif -enum AVColorSpace av_frame_get_colorspace(const AVFrame *frame); -void av_frame_set_colorspace(AVFrame *frame, enum AVColorSpace val); -enum AVColorRange av_frame_get_color_range(const AVFrame *frame); -void av_frame_set_color_range(AVFrame *frame, enum AVColorRange val); - -/** - * Get the name of a colorspace. - * @return a static string identifying the colorspace; can be NULL. - */ -const char *av_get_colorspace_name(enum AVColorSpace val); - -/** - * Allocate an AVFrame and set its fields to default values. The resulting - * struct must be freed using av_frame_free(). - * - * @return An AVFrame filled with default values or NULL on failure. - * - * @note this only allocates the AVFrame itself, not the data buffers. Those - * must be allocated through other means, e.g. with av_frame_get_buffer() or - * manually. - */ -AVFrame *av_frame_alloc(void); - -/** - * Free the frame and any dynamically allocated objects in it, - * e.g. extended_data. If the frame is reference counted, it will be - * unreferenced first. - * - * @param frame frame to be freed. The pointer will be set to NULL. - */ -void av_frame_free(AVFrame **frame); - -/** - * Set up a new reference to the data described by the source frame. - * - * Copy frame properties from src to dst and create a new reference for each - * AVBufferRef from src. - * - * If src is not reference counted, new buffers are allocated and the data is - * copied. - * - * @warning: dst MUST have been either unreferenced with av_frame_unref(dst), - * or newly allocated with av_frame_alloc() before calling this - * function, or undefined behavior will occur. - * - * @return 0 on success, a negative AVERROR on error - */ -int av_frame_ref(AVFrame *dst, const AVFrame *src); - -/** - * Create a new frame that references the same data as src. - * - * This is a shortcut for av_frame_alloc()+av_frame_ref(). - * - * @return newly created AVFrame on success, NULL on error. - */ -AVFrame *av_frame_clone(const AVFrame *src); - -/** - * Unreference all the buffers referenced by frame and reset the frame fields. - */ -void av_frame_unref(AVFrame *frame); - -/** - * Move everything contained in src to dst and reset src. - * - * @warning: dst is not unreferenced, but directly overwritten without reading - * or deallocating its contents. Call av_frame_unref(dst) manually - * before calling this function to ensure that no memory is leaked. - */ -void av_frame_move_ref(AVFrame *dst, AVFrame *src); - -/** - * Allocate new buffer(s) for audio or video data. - * - * The following fields must be set on frame before calling this function: - * - format (pixel format for video, sample format for audio) - * - width and height for video - * - nb_samples and channel_layout for audio - * - * This function will fill AVFrame.data and AVFrame.buf arrays and, if - * necessary, allocate and fill AVFrame.extended_data and AVFrame.extended_buf. - * For planar formats, one buffer will be allocated for each plane. - * - * @warning: if frame already has been allocated, calling this function will - * leak memory. In addition, undefined behavior can occur in certain - * cases. - * - * @param frame frame in which to store the new buffers. - * @param align required buffer size alignment - * - * @return 0 on success, a negative AVERROR on error. - */ -int av_frame_get_buffer(AVFrame *frame, int align); - -/** - * Check if the frame data is writable. - * - * @return A positive value if the frame data is writable (which is true if and - * only if each of the underlying buffers has only one reference, namely the one - * stored in this frame). Return 0 otherwise. - * - * If 1 is returned the answer is valid until av_buffer_ref() is called on any - * of the underlying AVBufferRefs (e.g. through av_frame_ref() or directly). - * - * @see av_frame_make_writable(), av_buffer_is_writable() - */ -int av_frame_is_writable(AVFrame *frame); - -/** - * Ensure that the frame data is writable, avoiding data copy if possible. - * - * Do nothing if the frame is writable, allocate new buffers and copy the data - * if it is not. - * - * @return 0 on success, a negative AVERROR on error. - * - * @see av_frame_is_writable(), av_buffer_is_writable(), - * av_buffer_make_writable() - */ -int av_frame_make_writable(AVFrame *frame); - -/** - * Copy the frame data from src to dst. - * - * This function does not allocate anything, dst must be already initialized and - * allocated with the same parameters as src. - * - * This function only copies the frame data (i.e. the contents of the data / - * extended data arrays), not any other properties. - * - * @return >= 0 on success, a negative AVERROR on error. - */ -int av_frame_copy(AVFrame *dst, const AVFrame *src); - -/** - * Copy only "metadata" fields from src to dst. - * - * Metadata for the purpose of this function are those fields that do not affect - * the data layout in the buffers. E.g. pts, sample rate (for audio) or sample - * aspect ratio (for video), but not width/height or channel layout. - * Side data is also copied. - */ -int av_frame_copy_props(AVFrame *dst, const AVFrame *src); - -/** - * Get the buffer reference a given data plane is stored in. - * - * @param plane index of the data plane of interest in frame->extended_data. - * - * @return the buffer reference that contains the plane or NULL if the input - * frame is not valid. - */ -AVBufferRef *av_frame_get_plane_buffer(AVFrame *frame, int plane); - -/** - * Add a new side data to a frame. - * - * @param frame a frame to which the side data should be added - * @param type type of the added side data - * @param size size of the side data - * - * @return newly added side data on success, NULL on error - */ -AVFrameSideData *av_frame_new_side_data(AVFrame *frame, - enum AVFrameSideDataType type, - int size); - -/** - * @return a pointer to the side data of a given type on success, NULL if there - * is no side data with such type in this frame. - */ -AVFrameSideData *av_frame_get_side_data(const AVFrame *frame, - enum AVFrameSideDataType type); - -/** - * If side data of the supplied type exists in the frame, free it and remove it - * from the frame. - */ -void av_frame_remove_side_data(AVFrame *frame, enum AVFrameSideDataType type); - -/** - * @return a string identifying the side data type - */ -const char *av_frame_side_data_name(enum AVFrameSideDataType type); - -/** - * @} - */ - -#endif /* AVUTIL_FRAME_H */ diff --git a/Externals/ffmpeg/include/libavutil/hash.h b/Externals/ffmpeg/include/libavutil/hash.h deleted file mode 100644 index a20b8934f196..000000000000 --- a/Externals/ffmpeg/include/libavutil/hash.h +++ /dev/null @@ -1,263 +0,0 @@ -/* - * Copyright (C) 2013 Reimar Döffinger - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_hash_generic - * Generic hashing API - */ - -#ifndef AVUTIL_HASH_H -#define AVUTIL_HASH_H - -#include - -/** - * @defgroup lavu_hash Hash Functions - * @ingroup lavu_crypto - * Hash functions useful in multimedia. - * - * Hash functions are widely used in multimedia, from error checking and - * concealment to internal regression testing. libavutil has efficient - * implementations of a variety of hash functions that may be useful for - * FFmpeg and other multimedia applications. - * - * @{ - * - * @defgroup lavu_hash_generic Generic Hashing API - * An abstraction layer for all hash functions supported by libavutil. - * - * If your application needs to support a wide range of different hash - * functions, then the Generic Hashing API is for you. It provides a generic, - * reusable API for @ref lavu_hash "all hash functions" implemented in libavutil. - * If you just need to use one particular hash function, use the @ref lavu_hash - * "individual hash" directly. - * - * @section Sample Code - * - * A basic template for using the Generic Hashing API follows: - * - * @code - * struct AVHashContext *ctx = NULL; - * const char *hash_name = NULL; - * uint8_t *output_buf = NULL; - * - * // Select from a string returned by av_hash_names() - * hash_name = ...; - * - * // Allocate a hash context - * ret = av_hash_alloc(&ctx, hash_name); - * if (ret < 0) - * return ret; - * - * // Initialize the hash context - * av_hash_init(ctx); - * - * // Update the hash context with data - * while (data_left) { - * av_hash_update(ctx, data, size); - * } - * - * // Now we have no more data, so it is time to finalize the hash and get the - * // output. But we need to first allocate an output buffer. Note that you can - * // use any memory allocation function, including malloc(), not just - * // av_malloc(). - * output_buf = av_malloc(av_hash_get_size(ctx)); - * if (!output_buf) - * return AVERROR(ENOMEM); - * - * // Finalize the hash context. - * // You can use any of the av_hash_final*() functions provided, for other - * // output formats. If you do so, be sure to adjust the memory allocation - * // above. See the function documentation below for the exact amount of extra - * // memory needed. - * av_hash_final(ctx, output_buffer); - * - * // Free the context - * av_hash_freep(&ctx); - * @endcode - * - * @section Hash Function-Specific Information - * If the CRC32 hash is selected, the #AV_CRC_32_IEEE polynomial will be - * used. - * - * If the Murmur3 hash is selected, the default seed will be used. See @ref - * lavu_murmur3_seedinfo "Murmur3" for more information. - * - * @{ - */ - -/** - * @example ffhash.c - * This example is a simple command line application that takes one or more - * arguments. It demonstrates a typical use of the hashing API with allocation, - * initialization, updating, and finalizing. - */ - -struct AVHashContext; - -/** - * Allocate a hash context for the algorithm specified by name. - * - * @return >= 0 for success, a negative error code for failure - * - * @note The context is not initialized after a call to this function; you must - * call av_hash_init() to do so. - */ -int av_hash_alloc(struct AVHashContext **ctx, const char *name); - -/** - * Get the names of available hash algorithms. - * - * This function can be used to enumerate the algorithms. - * - * @param[in] i Index of the hash algorithm, starting from 0 - * @return Pointer to a static string or `NULL` if `i` is out of range - */ -const char *av_hash_names(int i); - -/** - * Get the name of the algorithm corresponding to the given hash context. - */ -const char *av_hash_get_name(const struct AVHashContext *ctx); - -/** - * Maximum value that av_hash_get_size() will currently return. - * - * You can use this if you absolutely want or need to use static allocation for - * the output buffer and are fine with not supporting hashes newly added to - * libavutil without recompilation. - * - * @warning - * Adding new hashes with larger sizes, and increasing the macro while doing - * so, will not be considered an ABI change. To prevent your code from - * overflowing a buffer, either dynamically allocate the output buffer with - * av_hash_get_size(), or limit your use of the Hashing API to hashes that are - * already in FFmpeg during the time of compilation. - */ -#define AV_HASH_MAX_SIZE 64 - -/** - * Get the size of the resulting hash value in bytes. - * - * The maximum value this function will currently return is available as macro - * #AV_HASH_MAX_SIZE. - * - * @param[in] ctx Hash context - * @return Size of the hash value in bytes - */ -int av_hash_get_size(const struct AVHashContext *ctx); - -/** - * Initialize or reset a hash context. - * - * @param[in,out] ctx Hash context - */ -void av_hash_init(struct AVHashContext *ctx); - -/** - * Update a hash context with additional data. - * - * @param[in,out] ctx Hash context - * @param[in] src Data to be added to the hash context - * @param[in] len Size of the additional data - */ -void av_hash_update(struct AVHashContext *ctx, const uint8_t *src, int len); - -/** - * Finalize a hash context and compute the actual hash value. - * - * The minimum size of `dst` buffer is given by av_hash_get_size() or - * #AV_HASH_MAX_SIZE. The use of the latter macro is discouraged. - * - * It is not safe to update or finalize a hash context again, if it has already - * been finalized. - * - * @param[in,out] ctx Hash context - * @param[out] dst Where the final hash value will be stored - * - * @see av_hash_final_bin() provides an alternative API - */ -void av_hash_final(struct AVHashContext *ctx, uint8_t *dst); - -/** - * Finalize a hash context and store the actual hash value in a buffer. - * - * It is not safe to update or finalize a hash context again, if it has already - * been finalized. - * - * If `size` is smaller than the hash size (given by av_hash_get_size()), the - * hash is truncated; if size is larger, the buffer is padded with 0. - * - * @param[in,out] ctx Hash context - * @param[out] dst Where the final hash value will be stored - * @param[in] size Number of bytes to write to `dst` - */ -void av_hash_final_bin(struct AVHashContext *ctx, uint8_t *dst, int size); - -/** - * Finalize a hash context and store the hexadecimal representation of the - * actual hash value as a string. - * - * It is not safe to update or finalize a hash context again, if it has already - * been finalized. - * - * The string is always 0-terminated. - * - * If `size` is smaller than `2 * hash_size + 1`, where `hash_size` is the - * value returned by av_hash_get_size(), the string will be truncated. - * - * @param[in,out] ctx Hash context - * @param[out] dst Where the string will be stored - * @param[in] size Maximum number of bytes to write to `dst` - */ -void av_hash_final_hex(struct AVHashContext *ctx, uint8_t *dst, int size); - -/** - * Finalize a hash context and store the Base64 representation of the - * actual hash value as a string. - * - * It is not safe to update or finalize a hash context again, if it has already - * been finalized. - * - * The string is always 0-terminated. - * - * If `size` is smaller than AV_BASE64_SIZE(hash_size), where `hash_size` is - * the value returned by av_hash_get_size(), the string will be truncated. - * - * @param[in,out] ctx Hash context - * @param[out] dst Where the final hash value will be stored - * @param[in] size Maximum number of bytes to write to `dst` - */ -void av_hash_final_b64(struct AVHashContext *ctx, uint8_t *dst, int size); - -/** - * Free hash context and set hash context pointer to `NULL`. - * - * @param[in,out] ctx Pointer to hash context - */ -void av_hash_freep(struct AVHashContext **ctx); - -/** - * @} - * @} - */ - -#endif /* AVUTIL_HASH_H */ diff --git a/Externals/ffmpeg/include/libavutil/hmac.h b/Externals/ffmpeg/include/libavutil/hmac.h deleted file mode 100644 index 576a0a4fb962..000000000000 --- a/Externals/ffmpeg/include/libavutil/hmac.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (C) 2012 Martin Storsjo - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_HMAC_H -#define AVUTIL_HMAC_H - -#include - -#include "version.h" -/** - * @defgroup lavu_hmac HMAC - * @ingroup lavu_crypto - * @{ - */ - -enum AVHMACType { - AV_HMAC_MD5, - AV_HMAC_SHA1, - AV_HMAC_SHA224, - AV_HMAC_SHA256, - AV_HMAC_SHA384 = 12, - AV_HMAC_SHA512, -}; - -typedef struct AVHMAC AVHMAC; - -/** - * Allocate an AVHMAC context. - * @param type The hash function used for the HMAC. - */ -AVHMAC *av_hmac_alloc(enum AVHMACType type); - -/** - * Free an AVHMAC context. - * @param ctx The context to free, may be NULL - */ -void av_hmac_free(AVHMAC *ctx); - -/** - * Initialize an AVHMAC context with an authentication key. - * @param ctx The HMAC context - * @param key The authentication key - * @param keylen The length of the key, in bytes - */ -void av_hmac_init(AVHMAC *ctx, const uint8_t *key, unsigned int keylen); - -/** - * Hash data with the HMAC. - * @param ctx The HMAC context - * @param data The data to hash - * @param len The length of the data, in bytes - */ -void av_hmac_update(AVHMAC *ctx, const uint8_t *data, unsigned int len); - -/** - * Finish hashing and output the HMAC digest. - * @param ctx The HMAC context - * @param out The output buffer to write the digest into - * @param outlen The length of the out buffer, in bytes - * @return The number of bytes written to out, or a negative error code. - */ -int av_hmac_final(AVHMAC *ctx, uint8_t *out, unsigned int outlen); - -/** - * Hash an array of data with a key. - * @param ctx The HMAC context - * @param data The data to hash - * @param len The length of the data, in bytes - * @param key The authentication key - * @param keylen The length of the key, in bytes - * @param out The output buffer to write the digest into - * @param outlen The length of the out buffer, in bytes - * @return The number of bytes written to out, or a negative error code. - */ -int av_hmac_calc(AVHMAC *ctx, const uint8_t *data, unsigned int len, - const uint8_t *key, unsigned int keylen, - uint8_t *out, unsigned int outlen); - -/** - * @} - */ - -#endif /* AVUTIL_HMAC_H */ diff --git a/Externals/ffmpeg/include/libavutil/hwcontext.h b/Externals/ffmpeg/include/libavutil/hwcontext.h deleted file mode 100644 index 5e2af092a410..000000000000 --- a/Externals/ffmpeg/include/libavutil/hwcontext.h +++ /dev/null @@ -1,429 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_HWCONTEXT_H -#define AVUTIL_HWCONTEXT_H - -#include "buffer.h" -#include "frame.h" -#include "log.h" -#include "pixfmt.h" - -enum AVHWDeviceType { - AV_HWDEVICE_TYPE_VDPAU, - AV_HWDEVICE_TYPE_CUDA, - AV_HWDEVICE_TYPE_VAAPI, - AV_HWDEVICE_TYPE_DXVA2, - AV_HWDEVICE_TYPE_QSV, -}; - -typedef struct AVHWDeviceInternal AVHWDeviceInternal; - -/** - * This struct aggregates all the (hardware/vendor-specific) "high-level" state, - * i.e. state that is not tied to a concrete processing configuration. - * E.g., in an API that supports hardware-accelerated encoding and decoding, - * this struct will (if possible) wrap the state that is common to both encoding - * and decoding and from which specific instances of encoders or decoders can be - * derived. - * - * This struct is reference-counted with the AVBuffer mechanism. The - * av_hwdevice_ctx_alloc() constructor yields a reference, whose data field - * points to the actual AVHWDeviceContext. Further objects derived from - * AVHWDeviceContext (such as AVHWFramesContext, describing a frame pool with - * specific properties) will hold an internal reference to it. After all the - * references are released, the AVHWDeviceContext itself will be freed, - * optionally invoking a user-specified callback for uninitializing the hardware - * state. - */ -typedef struct AVHWDeviceContext { - /** - * A class for logging. Set by av_hwdevice_ctx_alloc(). - */ - const AVClass *av_class; - - /** - * Private data used internally by libavutil. Must not be accessed in any - * way by the caller. - */ - AVHWDeviceInternal *internal; - - /** - * This field identifies the underlying API used for hardware access. - * - * This field is set when this struct is allocated and never changed - * afterwards. - */ - enum AVHWDeviceType type; - - /** - * The format-specific data, allocated and freed by libavutil along with - * this context. - * - * Should be cast by the user to the format-specific context defined in the - * corresponding header (hwcontext_*.h) and filled as described in the - * documentation before calling av_hwdevice_ctx_init(). - * - * After calling av_hwdevice_ctx_init() this struct should not be modified - * by the caller. - */ - void *hwctx; - - /** - * This field may be set by the caller before calling av_hwdevice_ctx_init(). - * - * If non-NULL, this callback will be called when the last reference to - * this context is unreferenced, immediately before it is freed. - * - * @note when other objects (e.g an AVHWFramesContext) are derived from this - * struct, this callback will be invoked after all such child objects - * are fully uninitialized and their respective destructors invoked. - */ - void (*free)(struct AVHWDeviceContext *ctx); - - /** - * Arbitrary user data, to be used e.g. by the free() callback. - */ - void *user_opaque; -} AVHWDeviceContext; - -typedef struct AVHWFramesInternal AVHWFramesInternal; - -/** - * This struct describes a set or pool of "hardware" frames (i.e. those with - * data not located in normal system memory). All the frames in the pool are - * assumed to be allocated in the same way and interchangeable. - * - * This struct is reference-counted with the AVBuffer mechanism and tied to a - * given AVHWDeviceContext instance. The av_hwframe_ctx_alloc() constructor - * yields a reference, whose data field points to the actual AVHWFramesContext - * struct. - */ -typedef struct AVHWFramesContext { - /** - * A class for logging. - */ - const AVClass *av_class; - - /** - * Private data used internally by libavutil. Must not be accessed in any - * way by the caller. - */ - AVHWFramesInternal *internal; - - /** - * A reference to the parent AVHWDeviceContext. This reference is owned and - * managed by the enclosing AVHWFramesContext, but the caller may derive - * additional references from it. - */ - AVBufferRef *device_ref; - - /** - * The parent AVHWDeviceContext. This is simply a pointer to - * device_ref->data provided for convenience. - * - * Set by libavutil in av_hwframe_ctx_init(). - */ - AVHWDeviceContext *device_ctx; - - /** - * The format-specific data, allocated and freed automatically along with - * this context. - * - * Should be cast by the user to the format-specific context defined in the - * corresponding header (hwframe_*.h) and filled as described in the - * documentation before calling av_hwframe_ctx_init(). - * - * After any frames using this context are created, the contents of this - * struct should not be modified by the caller. - */ - void *hwctx; - - /** - * This field may be set by the caller before calling av_hwframe_ctx_init(). - * - * If non-NULL, this callback will be called when the last reference to - * this context is unreferenced, immediately before it is freed. - */ - void (*free)(struct AVHWFramesContext *ctx); - - /** - * Arbitrary user data, to be used e.g. by the free() callback. - */ - void *user_opaque; - - /** - * A pool from which the frames are allocated by av_hwframe_get_buffer(). - * This field may be set by the caller before calling av_hwframe_ctx_init(). - * The buffers returned by calling av_buffer_pool_get() on this pool must - * have the properties described in the documentation in the corresponding hw - * type's header (hwcontext_*.h). The pool will be freed strictly before - * this struct's free() callback is invoked. - * - * This field may be NULL, then libavutil will attempt to allocate a pool - * internally. Note that certain device types enforce pools allocated at - * fixed size (frame count), which cannot be extended dynamically. In such a - * case, initial_pool_size must be set appropriately. - */ - AVBufferPool *pool; - - /** - * Initial size of the frame pool. If a device type does not support - * dynamically resizing the pool, then this is also the maximum pool size. - * - * May be set by the caller before calling av_hwframe_ctx_init(). Must be - * set if pool is NULL and the device type does not support dynamic pools. - */ - int initial_pool_size; - - /** - * The pixel format identifying the underlying HW surface type. - * - * Must be a hwaccel format, i.e. the corresponding descriptor must have the - * AV_PIX_FMT_FLAG_HWACCEL flag set. - * - * Must be set by the user before calling av_hwframe_ctx_init(). - */ - enum AVPixelFormat format; - - /** - * The pixel format identifying the actual data layout of the hardware - * frames. - * - * Must be set by the caller before calling av_hwframe_ctx_init(). - * - * @note when the underlying API does not provide the exact data layout, but - * only the colorspace/bit depth, this field should be set to the fully - * planar version of that format (e.g. for 8-bit 420 YUV it should be - * AV_PIX_FMT_YUV420P, not AV_PIX_FMT_NV12 or anything else). - */ - enum AVPixelFormat sw_format; - - /** - * The allocated dimensions of the frames in this pool. - * - * Must be set by the user before calling av_hwframe_ctx_init(). - */ - int width, height; -} AVHWFramesContext; - -/** - * Allocate an AVHWDeviceContext for a given pixel format. - * - * @param format a hwaccel pixel format (AV_PIX_FMT_FLAG_HWACCEL must be set - * on the corresponding format descriptor) - * @return a reference to the newly created AVHWDeviceContext on success or NULL - * on failure. - */ -AVBufferRef *av_hwdevice_ctx_alloc(enum AVHWDeviceType type); - -/** - * Finalize the device context before use. This function must be called after - * the context is filled with all the required information and before it is - * used in any way. - * - * @param ref a reference to the AVHWDeviceContext - * @return 0 on success, a negative AVERROR code on failure - */ -int av_hwdevice_ctx_init(AVBufferRef *ref); - -/** - * Open a device of the specified type and create an AVHWDeviceContext for it. - * - * This is a convenience function intended to cover the simple cases. Callers - * who need to fine-tune device creation/management should open the device - * manually and then wrap it in an AVHWDeviceContext using - * av_hwdevice_ctx_alloc()/av_hwdevice_ctx_init(). - * - * The returned context is already initialized and ready for use, the caller - * should not call av_hwdevice_ctx_init() on it. The user_opaque/free fields of - * the created AVHWDeviceContext are set by this function and should not be - * touched by the caller. - * - * @param device_ctx On success, a reference to the newly-created device context - * will be written here. The reference is owned by the caller - * and must be released with av_buffer_unref() when no longer - * needed. On failure, NULL will be written to this pointer. - * @param type The type of the device to create. - * @param device A type-specific string identifying the device to open. - * @param opts A dictionary of additional (type-specific) options to use in - * opening the device. The dictionary remains owned by the caller. - * @param flags currently unused - * - * @return 0 on success, a negative AVERROR code on failure. - */ -int av_hwdevice_ctx_create(AVBufferRef **device_ctx, enum AVHWDeviceType type, - const char *device, AVDictionary *opts, int flags); - -/** - * Allocate an AVHWFramesContext tied to a given device context. - * - * @param device_ctx a reference to a AVHWDeviceContext. This function will make - * a new reference for internal use, the one passed to the - * function remains owned by the caller. - * @return a reference to the newly created AVHWFramesContext on success or NULL - * on failure. - */ -AVBufferRef *av_hwframe_ctx_alloc(AVBufferRef *device_ctx); - -/** - * Finalize the context before use. This function must be called after the - * context is filled with all the required information and before it is attached - * to any frames. - * - * @param ref a reference to the AVHWFramesContext - * @return 0 on success, a negative AVERROR code on failure - */ -int av_hwframe_ctx_init(AVBufferRef *ref); - -/** - * Allocate a new frame attached to the given AVHWFramesContext. - * - * @param hwframe_ctx a reference to an AVHWFramesContext - * @param frame an empty (freshly allocated or unreffed) frame to be filled with - * newly allocated buffers. - * @param flags currently unused, should be set to zero - * @return 0 on success, a negative AVERROR code on failure - */ -int av_hwframe_get_buffer(AVBufferRef *hwframe_ctx, AVFrame *frame, int flags); - -/** - * Copy data to or from a hw surface. At least one of dst/src must have an - * AVHWFramesContext attached. - * - * If src has an AVHWFramesContext attached, then the format of dst (if set) - * must use one of the formats returned by av_hwframe_transfer_get_formats(src, - * AV_HWFRAME_TRANSFER_DIRECTION_FROM). - * If dst has an AVHWFramesContext attached, then the format of src must use one - * of the formats returned by av_hwframe_transfer_get_formats(dst, - * AV_HWFRAME_TRANSFER_DIRECTION_TO) - * - * dst may be "clean" (i.e. with data/buf pointers unset), in which case the - * data buffers will be allocated by this function using av_frame_get_buffer(). - * If dst->format is set, then this format will be used, otherwise (when - * dst->format is AV_PIX_FMT_NONE) the first acceptable format will be chosen. - * - * @param dst the destination frame. dst is not touched on failure. - * @param src the source frame. - * @param flags currently unused, should be set to zero - * @return 0 on success, a negative AVERROR error code on failure. - */ -int av_hwframe_transfer_data(AVFrame *dst, const AVFrame *src, int flags); - -enum AVHWFrameTransferDirection { - /** - * Transfer the data from the queried hw frame. - */ - AV_HWFRAME_TRANSFER_DIRECTION_FROM, - - /** - * Transfer the data to the queried hw frame. - */ - AV_HWFRAME_TRANSFER_DIRECTION_TO, -}; - -/** - * Get a list of possible source or target formats usable in - * av_hwframe_transfer_data(). - * - * @param hwframe_ctx the frame context to obtain the information for - * @param dir the direction of the transfer - * @param formats the pointer to the output format list will be written here. - * The list is terminated with AV_PIX_FMT_NONE and must be freed - * by the caller when no longer needed using av_free(). - * If this function returns successfully, the format list will - * have at least one item (not counting the terminator). - * On failure, the contents of this pointer are unspecified. - * @param flags currently unused, should be set to zero - * @return 0 on success, a negative AVERROR code on failure. - */ -int av_hwframe_transfer_get_formats(AVBufferRef *hwframe_ctx, - enum AVHWFrameTransferDirection dir, - enum AVPixelFormat **formats, int flags); - - -/** - * This struct describes the constraints on hardware frames attached to - * a given device with a hardware-specific configuration. This is returned - * by av_hwdevice_get_hwframe_constraints() and must be freed by - * av_hwframe_constraints_free() after use. - */ -typedef struct AVHWFramesConstraints { - /** - * A list of possible values for format in the hw_frames_ctx, - * terminated by AV_PIX_FMT_NONE. This member will always be filled. - */ - enum AVPixelFormat *valid_hw_formats; - - /** - * A list of possible values for sw_format in the hw_frames_ctx, - * terminated by AV_PIX_FMT_NONE. Can be NULL if this information is - * not known. - */ - enum AVPixelFormat *valid_sw_formats; - - /** - * The minimum size of frames in this hw_frames_ctx. - * (Zero if not known.) - */ - int min_width; - int min_height; - - /** - * The maximum size of frames in this hw_frames_ctx. - * (INT_MAX if not known / no limit.) - */ - int max_width; - int max_height; -} AVHWFramesConstraints; - -/** - * Allocate a HW-specific configuration structure for a given HW device. - * After use, the user must free all members as required by the specific - * hardware structure being used, then free the structure itself with - * av_free(). - * - * @param device_ctx a reference to the associated AVHWDeviceContext. - * @return The newly created HW-specific configuration structure on - * success or NULL on failure. - */ -void *av_hwdevice_hwconfig_alloc(AVBufferRef *device_ctx); - -/** - * Get the constraints on HW frames given a device and the HW-specific - * configuration to be used with that device. If no HW-specific - * configuration is provided, returns the maximum possible capabilities - * of the device. - * - * @param device_ctx a reference to the associated AVHWDeviceContext. - * @param hwconfig a filled HW-specific configuration structure, or NULL - * to return the maximum possible capabilities of the device. - * @return AVHWFramesConstraints structure describing the constraints - * on the device, or NULL if not available. - */ -AVHWFramesConstraints *av_hwdevice_get_hwframe_constraints(AVBufferRef *ref, - const void *hwconfig); - -/** - * Free an AVHWFrameConstraints structure. - * - * @param constraints The (filled or unfilled) AVHWFrameConstraints structure. - */ -void av_hwframe_constraints_free(AVHWFramesConstraints **constraints); - -#endif /* AVUTIL_HWCONTEXT_H */ diff --git a/Externals/ffmpeg/include/libavutil/hwcontext_cuda.h b/Externals/ffmpeg/include/libavutil/hwcontext_cuda.h deleted file mode 100644 index 23a77cee7342..000000000000 --- a/Externals/ffmpeg/include/libavutil/hwcontext_cuda.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#ifndef AVUTIL_HWCONTEXT_CUDA_H -#define AVUTIL_HWCONTEXT_CUDA_H - -#include - -#include "pixfmt.h" - -/** - * @file - * An API-specific header for AV_HWDEVICE_TYPE_CUDA. - * - * This API supports dynamic frame pools. AVHWFramesContext.pool must return - * AVBufferRefs whose data pointer is a CUdeviceptr. - */ - -/** - * This struct is allocated as AVHWDeviceContext.hwctx - */ -typedef struct AVCUDADeviceContext { - CUcontext cuda_ctx; -} AVCUDADeviceContext; - -/** - * AVHWFramesContext.hwctx is currently not used - */ - -#endif /* AVUTIL_HWCONTEXT_CUDA_H */ diff --git a/Externals/ffmpeg/include/libavutil/hwcontext_dxva2.h b/Externals/ffmpeg/include/libavutil/hwcontext_dxva2.h deleted file mode 100644 index 6c36cb4b6b43..000000000000 --- a/Externals/ffmpeg/include/libavutil/hwcontext_dxva2.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#ifndef AVUTIL_HWCONTEXT_DXVA2_H -#define AVUTIL_HWCONTEXT_DXVA2_H - -/** - * @file - * An API-specific header for AV_HWDEVICE_TYPE_DXVA2. - * - * Only fixed-size pools are supported. - * - * For user-allocated pools, AVHWFramesContext.pool must return AVBufferRefs - * with the data pointer set to a pointer to IDirect3DSurface9. - */ - -#include -#include - -/** - * This struct is allocated as AVHWDeviceContext.hwctx - */ -typedef struct AVDXVA2DeviceContext { - IDirect3DDeviceManager9 *devmgr; -} AVDXVA2DeviceContext; - -/** - * This struct is allocated as AVHWFramesContext.hwctx - */ -typedef struct AVDXVA2FramesContext { - /** - * The surface type (e.g. DXVA2_VideoProcessorRenderTarget or - * DXVA2_VideoDecoderRenderTarget). Must be set by the caller. - */ - DWORD surface_type; - - /** - * The surface pool. When an external pool is not provided by the caller, - * this will be managed (allocated and filled on init, freed on uninit) by - * libavutil. - */ - IDirect3DSurface9 **surfaces; - int nb_surfaces; - - /** - * Certain drivers require the decoder to be destroyed before the surfaces. - * To allow internally managed pools to work properly in such cases, this - * field is provided. - * - * If it is non-NULL, libavutil will call IDirectXVideoDecoder_Release() on - * it just before the internal surface pool is freed. - */ - IDirectXVideoDecoder *decoder_to_release; -} AVDXVA2FramesContext; - -#endif /* AVUTIL_HWCONTEXT_DXVA2_H */ diff --git a/Externals/ffmpeg/include/libavutil/hwcontext_qsv.h b/Externals/ffmpeg/include/libavutil/hwcontext_qsv.h deleted file mode 100644 index b98d611cfc40..000000000000 --- a/Externals/ffmpeg/include/libavutil/hwcontext_qsv.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_HWCONTEXT_QSV_H -#define AVUTIL_HWCONTEXT_QSV_H - -#include - -/** - * @file - * An API-specific header for AV_HWDEVICE_TYPE_QSV. - * - * This API does not support dynamic frame pools. AVHWFramesContext.pool must - * contain AVBufferRefs whose data pointer points to an mfxFrameSurface1 struct. - */ - -/** - * This struct is allocated as AVHWDeviceContext.hwctx - */ -typedef struct AVQSVDeviceContext { - mfxSession session; -} AVQSVDeviceContext; - -/** - * This struct is allocated as AVHWFramesContext.hwctx - */ -typedef struct AVQSVFramesContext { - mfxFrameSurface1 *surfaces; - int nb_surfaces; - - /** - * A combination of MFX_MEMTYPE_* describing the frame pool. - */ - int frame_type; -} AVQSVFramesContext; - -#endif /* AVUTIL_HWCONTEXT_QSV_H */ - diff --git a/Externals/ffmpeg/include/libavutil/hwcontext_vaapi.h b/Externals/ffmpeg/include/libavutil/hwcontext_vaapi.h deleted file mode 100644 index 7fd1a36e8fbd..000000000000 --- a/Externals/ffmpeg/include/libavutil/hwcontext_vaapi.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_HWCONTEXT_VAAPI_H -#define AVUTIL_HWCONTEXT_VAAPI_H - -#include - -/** - * @file - * API-specific header for AV_HWDEVICE_TYPE_VAAPI. - * - * Dynamic frame pools are supported, but note that any pool used as a render - * target is required to be of fixed size in order to be be usable as an - * argument to vaCreateContext(). - * - * For user-allocated pools, AVHWFramesContext.pool must return AVBufferRefs - * with the data pointer set to a VASurfaceID. - */ - -/** - * VAAPI connection details. - * - * Allocated as AVHWDeviceContext.hwctx - */ -typedef struct AVVAAPIDeviceContext { - /** - * The VADisplay handle, to be filled by the user. - */ - VADisplay display; -} AVVAAPIDeviceContext; - -/** - * VAAPI-specific data associated with a frame pool. - * - * Allocated as AVHWFramesContext.hwctx. - */ -typedef struct AVVAAPIFramesContext { - /** - * Set by the user to apply surface attributes to all surfaces in - * the frame pool. If null, default settings are used. - */ - VASurfaceAttrib *attributes; - int nb_attributes; - /** - * The surfaces IDs of all surfaces in the pool after creation. - * Only valid if AVHWFramesContext.initial_pool_size was positive. - * These are intended to be used as the render_targets arguments to - * vaCreateContext(). - */ - VASurfaceID *surface_ids; - int nb_surfaces; -} AVVAAPIFramesContext; - -/** - * VAAPI hardware pipeline configuration details. - * - * Allocated with av_hwdevice_hwconfig_alloc(). - */ -typedef struct AVVAAPIHWConfig { - /** - * ID of a VAAPI pipeline configuration. - */ - VAConfigID config_id; -} AVVAAPIHWConfig; - -#endif /* AVUTIL_HWCONTEXT_VAAPI_H */ diff --git a/Externals/ffmpeg/include/libavutil/hwcontext_vdpau.h b/Externals/ffmpeg/include/libavutil/hwcontext_vdpau.h deleted file mode 100644 index 1b7ea1e443bd..000000000000 --- a/Externals/ffmpeg/include/libavutil/hwcontext_vdpau.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_HWCONTEXT_VDPAU_H -#define AVUTIL_HWCONTEXT_VDPAU_H - -#include - -/** - * @file - * An API-specific header for AV_HWDEVICE_TYPE_VDPAU. - * - * This API supports dynamic frame pools. AVHWFramesContext.pool must return - * AVBufferRefs whose data pointer is a VdpVideoSurface. - */ - -/** - * This struct is allocated as AVHWDeviceContext.hwctx - */ -typedef struct AVVDPAUDeviceContext { - VdpDevice device; - VdpGetProcAddress *get_proc_address; -} AVVDPAUDeviceContext; - -/** - * AVHWFramesContext.hwctx is currently not used - */ - -#endif /* AVUTIL_HWCONTEXT_VDPAU_H */ diff --git a/Externals/ffmpeg/include/libavutil/imgutils.h b/Externals/ffmpeg/include/libavutil/imgutils.h deleted file mode 100644 index 19f34deced4d..000000000000 --- a/Externals/ffmpeg/include/libavutil/imgutils.h +++ /dev/null @@ -1,227 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_IMGUTILS_H -#define AVUTIL_IMGUTILS_H - -/** - * @file - * misc image utilities - * - * @addtogroup lavu_picture - * @{ - */ - -#include "avutil.h" -#include "pixdesc.h" -#include "rational.h" - -/** - * Compute the max pixel step for each plane of an image with a - * format described by pixdesc. - * - * The pixel step is the distance in bytes between the first byte of - * the group of bytes which describe a pixel component and the first - * byte of the successive group in the same plane for the same - * component. - * - * @param max_pixsteps an array which is filled with the max pixel step - * for each plane. Since a plane may contain different pixel - * components, the computed max_pixsteps[plane] is relative to the - * component in the plane with the max pixel step. - * @param max_pixstep_comps an array which is filled with the component - * for each plane which has the max pixel step. May be NULL. - */ -void av_image_fill_max_pixsteps(int max_pixsteps[4], int max_pixstep_comps[4], - const AVPixFmtDescriptor *pixdesc); - -/** - * Compute the size of an image line with format pix_fmt and width - * width for the plane plane. - * - * @return the computed size in bytes - */ -int av_image_get_linesize(enum AVPixelFormat pix_fmt, int width, int plane); - -/** - * Fill plane linesizes for an image with pixel format pix_fmt and - * width width. - * - * @param linesizes array to be filled with the linesize for each plane - * @return >= 0 in case of success, a negative error code otherwise - */ -int av_image_fill_linesizes(int linesizes[4], enum AVPixelFormat pix_fmt, int width); - -/** - * Fill plane data pointers for an image with pixel format pix_fmt and - * height height. - * - * @param data pointers array to be filled with the pointer for each image plane - * @param ptr the pointer to a buffer which will contain the image - * @param linesizes the array containing the linesize for each - * plane, should be filled by av_image_fill_linesizes() - * @return the size in bytes required for the image buffer, a negative - * error code in case of failure - */ -int av_image_fill_pointers(uint8_t *data[4], enum AVPixelFormat pix_fmt, int height, - uint8_t *ptr, const int linesizes[4]); - -/** - * Allocate an image with size w and h and pixel format pix_fmt, and - * fill pointers and linesizes accordingly. - * The allocated image buffer has to be freed by using - * av_freep(&pointers[0]). - * - * @param align the value to use for buffer size alignment - * @return the size in bytes required for the image buffer, a negative - * error code in case of failure - */ -int av_image_alloc(uint8_t *pointers[4], int linesizes[4], - int w, int h, enum AVPixelFormat pix_fmt, int align); - -/** - * Copy image plane from src to dst. - * That is, copy "height" number of lines of "bytewidth" bytes each. - * The first byte of each successive line is separated by *_linesize - * bytes. - * - * bytewidth must be contained by both absolute values of dst_linesize - * and src_linesize, otherwise the function behavior is undefined. - * - * @param dst_linesize linesize for the image plane in dst - * @param src_linesize linesize for the image plane in src - */ -void av_image_copy_plane(uint8_t *dst, int dst_linesize, - const uint8_t *src, int src_linesize, - int bytewidth, int height); - -/** - * Copy image in src_data to dst_data. - * - * @param dst_linesizes linesizes for the image in dst_data - * @param src_linesizes linesizes for the image in src_data - */ -void av_image_copy(uint8_t *dst_data[4], int dst_linesizes[4], - const uint8_t *src_data[4], const int src_linesizes[4], - enum AVPixelFormat pix_fmt, int width, int height); - -/** - * Setup the data pointers and linesizes based on the specified image - * parameters and the provided array. - * - * The fields of the given image are filled in by using the src - * address which points to the image data buffer. Depending on the - * specified pixel format, one or multiple image data pointers and - * line sizes will be set. If a planar format is specified, several - * pointers will be set pointing to the different picture planes and - * the line sizes of the different planes will be stored in the - * lines_sizes array. Call with src == NULL to get the required - * size for the src buffer. - * - * To allocate the buffer and fill in the dst_data and dst_linesize in - * one call, use av_image_alloc(). - * - * @param dst_data data pointers to be filled in - * @param dst_linesizes linesizes for the image in dst_data to be filled in - * @param src buffer which will contain or contains the actual image data, can be NULL - * @param pix_fmt the pixel format of the image - * @param width the width of the image in pixels - * @param height the height of the image in pixels - * @param align the value used in src for linesize alignment - * @return the size in bytes required for src, a negative error code - * in case of failure - */ -int av_image_fill_arrays(uint8_t *dst_data[4], int dst_linesize[4], - const uint8_t *src, - enum AVPixelFormat pix_fmt, int width, int height, int align); - -/** - * Return the size in bytes of the amount of data required to store an - * image with the given parameters. - * - * @param[in] align the assumed linesize alignment - */ -int av_image_get_buffer_size(enum AVPixelFormat pix_fmt, int width, int height, int align); - -/** - * Copy image data from an image into a buffer. - * - * av_image_get_buffer_size() can be used to compute the required size - * for the buffer to fill. - * - * @param dst a buffer into which picture data will be copied - * @param dst_size the size in bytes of dst - * @param src_data pointers containing the source image data - * @param src_linesizes linesizes for the image in src_data - * @param pix_fmt the pixel format of the source image - * @param width the width of the source image in pixels - * @param height the height of the source image in pixels - * @param align the assumed linesize alignment for dst - * @return the number of bytes written to dst, or a negative value - * (error code) on error - */ -int av_image_copy_to_buffer(uint8_t *dst, int dst_size, - const uint8_t * const src_data[4], const int src_linesize[4], - enum AVPixelFormat pix_fmt, int width, int height, int align); - -/** - * Check if the given dimension of an image is valid, meaning that all - * bytes of the image can be addressed with a signed int. - * - * @param w the width of the picture - * @param h the height of the picture - * @param log_offset the offset to sum to the log level for logging with log_ctx - * @param log_ctx the parent logging context, it may be NULL - * @return >= 0 if valid, a negative error code otherwise - */ -int av_image_check_size(unsigned int w, unsigned int h, int log_offset, void *log_ctx); - -/** - * Check if the given dimension of an image is valid, meaning that all - * bytes of the image can be addressed with a signed int. - * - * @param w the width of the picture - * @param h the height of the picture - * @param max_pixels the maximum number of pixels the user wants to accept - * @param pix_fmt the pixel format, can be AV_PIX_FMT_NONE if unknown. - * @param log_offset the offset to sum to the log level for logging with log_ctx - * @param log_ctx the parent logging context, it may be NULL - * @return >= 0 if valid, a negative error code otherwise - */ -int av_image_check_size2(unsigned int w, unsigned int h, int64_t max_pixels, enum AVPixelFormat pix_fmt, int log_offset, void *log_ctx); - -/** - * Check if the given sample aspect ratio of an image is valid. - * - * It is considered invalid if the denominator is 0 or if applying the ratio - * to the image size would make the smaller dimension less than 1. If the - * sar numerator is 0, it is considered unknown and will return as valid. - * - * @param w width of the image - * @param h height of the image - * @param sar sample aspect ratio of the image - * @return 0 if valid, a negative AVERROR code otherwise - */ -int av_image_check_sar(unsigned int w, unsigned int h, AVRational sar); - -/** - * @} - */ - - -#endif /* AVUTIL_IMGUTILS_H */ diff --git a/Externals/ffmpeg/include/libavutil/intfloat.h b/Externals/ffmpeg/include/libavutil/intfloat.h deleted file mode 100644 index fe3d7ec4a5b6..000000000000 --- a/Externals/ffmpeg/include/libavutil/intfloat.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2011 Mans Rullgard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_INTFLOAT_H -#define AVUTIL_INTFLOAT_H - -#include -#include "attributes.h" - -union av_intfloat32 { - uint32_t i; - float f; -}; - -union av_intfloat64 { - uint64_t i; - double f; -}; - -/** - * Reinterpret a 32-bit integer as a float. - */ -static av_always_inline float av_int2float(uint32_t i) -{ - union av_intfloat32 v; - v.i = i; - return v.f; -} - -/** - * Reinterpret a float as a 32-bit integer. - */ -static av_always_inline uint32_t av_float2int(float f) -{ - union av_intfloat32 v; - v.f = f; - return v.i; -} - -/** - * Reinterpret a 64-bit integer as a double. - */ -static av_always_inline double av_int2double(uint64_t i) -{ - union av_intfloat64 v; - v.i = i; - return v.f; -} - -/** - * Reinterpret a double as a 64-bit integer. - */ -static av_always_inline uint64_t av_double2int(double f) -{ - union av_intfloat64 v; - v.f = f; - return v.i; -} - -#endif /* AVUTIL_INTFLOAT_H */ diff --git a/Externals/ffmpeg/include/libavutil/intreadwrite.h b/Externals/ffmpeg/include/libavutil/intreadwrite.h deleted file mode 100644 index 51fbe30a23ab..000000000000 --- a/Externals/ffmpeg/include/libavutil/intreadwrite.h +++ /dev/null @@ -1,629 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_INTREADWRITE_H -#define AVUTIL_INTREADWRITE_H - -#include -#include "libavutil/avconfig.h" -#include "attributes.h" -#include "bswap.h" - -typedef union { - uint64_t u64; - uint32_t u32[2]; - uint16_t u16[4]; - uint8_t u8 [8]; - double f64; - float f32[2]; -} av_alias av_alias64; - -typedef union { - uint32_t u32; - uint16_t u16[2]; - uint8_t u8 [4]; - float f32; -} av_alias av_alias32; - -typedef union { - uint16_t u16; - uint8_t u8 [2]; -} av_alias av_alias16; - -/* - * Arch-specific headers can provide any combination of - * AV_[RW][BLN](16|24|32|48|64) and AV_(COPY|SWAP|ZERO)(64|128) macros. - * Preprocessor symbols must be defined, even if these are implemented - * as inline functions. - * - * R/W means read/write, B/L/N means big/little/native endianness. - * The following macros require aligned access, compared to their - * unaligned variants: AV_(COPY|SWAP|ZERO)(64|128), AV_[RW]N[8-64]A. - * Incorrect usage may range from abysmal performance to crash - * depending on the platform. - * - * The unaligned variants are AV_[RW][BLN][8-64] and AV_COPY*U. - */ - -#ifdef HAVE_AV_CONFIG_H - -#include "config.h" - -#if ARCH_ARM -# include "arm/intreadwrite.h" -#elif ARCH_AVR32 -# include "avr32/intreadwrite.h" -#elif ARCH_MIPS -# include "mips/intreadwrite.h" -#elif ARCH_PPC -# include "ppc/intreadwrite.h" -#elif ARCH_TOMI -# include "tomi/intreadwrite.h" -#elif ARCH_X86 -# include "x86/intreadwrite.h" -#endif - -#endif /* HAVE_AV_CONFIG_H */ - -/* - * Map AV_RNXX <-> AV_R[BL]XX for all variants provided by per-arch headers. - */ - -#if AV_HAVE_BIGENDIAN - -# if defined(AV_RN16) && !defined(AV_RB16) -# define AV_RB16(p) AV_RN16(p) -# elif !defined(AV_RN16) && defined(AV_RB16) -# define AV_RN16(p) AV_RB16(p) -# endif - -# if defined(AV_WN16) && !defined(AV_WB16) -# define AV_WB16(p, v) AV_WN16(p, v) -# elif !defined(AV_WN16) && defined(AV_WB16) -# define AV_WN16(p, v) AV_WB16(p, v) -# endif - -# if defined(AV_RN24) && !defined(AV_RB24) -# define AV_RB24(p) AV_RN24(p) -# elif !defined(AV_RN24) && defined(AV_RB24) -# define AV_RN24(p) AV_RB24(p) -# endif - -# if defined(AV_WN24) && !defined(AV_WB24) -# define AV_WB24(p, v) AV_WN24(p, v) -# elif !defined(AV_WN24) && defined(AV_WB24) -# define AV_WN24(p, v) AV_WB24(p, v) -# endif - -# if defined(AV_RN32) && !defined(AV_RB32) -# define AV_RB32(p) AV_RN32(p) -# elif !defined(AV_RN32) && defined(AV_RB32) -# define AV_RN32(p) AV_RB32(p) -# endif - -# if defined(AV_WN32) && !defined(AV_WB32) -# define AV_WB32(p, v) AV_WN32(p, v) -# elif !defined(AV_WN32) && defined(AV_WB32) -# define AV_WN32(p, v) AV_WB32(p, v) -# endif - -# if defined(AV_RN48) && !defined(AV_RB48) -# define AV_RB48(p) AV_RN48(p) -# elif !defined(AV_RN48) && defined(AV_RB48) -# define AV_RN48(p) AV_RB48(p) -# endif - -# if defined(AV_WN48) && !defined(AV_WB48) -# define AV_WB48(p, v) AV_WN48(p, v) -# elif !defined(AV_WN48) && defined(AV_WB48) -# define AV_WN48(p, v) AV_WB48(p, v) -# endif - -# if defined(AV_RN64) && !defined(AV_RB64) -# define AV_RB64(p) AV_RN64(p) -# elif !defined(AV_RN64) && defined(AV_RB64) -# define AV_RN64(p) AV_RB64(p) -# endif - -# if defined(AV_WN64) && !defined(AV_WB64) -# define AV_WB64(p, v) AV_WN64(p, v) -# elif !defined(AV_WN64) && defined(AV_WB64) -# define AV_WN64(p, v) AV_WB64(p, v) -# endif - -#else /* AV_HAVE_BIGENDIAN */ - -# if defined(AV_RN16) && !defined(AV_RL16) -# define AV_RL16(p) AV_RN16(p) -# elif !defined(AV_RN16) && defined(AV_RL16) -# define AV_RN16(p) AV_RL16(p) -# endif - -# if defined(AV_WN16) && !defined(AV_WL16) -# define AV_WL16(p, v) AV_WN16(p, v) -# elif !defined(AV_WN16) && defined(AV_WL16) -# define AV_WN16(p, v) AV_WL16(p, v) -# endif - -# if defined(AV_RN24) && !defined(AV_RL24) -# define AV_RL24(p) AV_RN24(p) -# elif !defined(AV_RN24) && defined(AV_RL24) -# define AV_RN24(p) AV_RL24(p) -# endif - -# if defined(AV_WN24) && !defined(AV_WL24) -# define AV_WL24(p, v) AV_WN24(p, v) -# elif !defined(AV_WN24) && defined(AV_WL24) -# define AV_WN24(p, v) AV_WL24(p, v) -# endif - -# if defined(AV_RN32) && !defined(AV_RL32) -# define AV_RL32(p) AV_RN32(p) -# elif !defined(AV_RN32) && defined(AV_RL32) -# define AV_RN32(p) AV_RL32(p) -# endif - -# if defined(AV_WN32) && !defined(AV_WL32) -# define AV_WL32(p, v) AV_WN32(p, v) -# elif !defined(AV_WN32) && defined(AV_WL32) -# define AV_WN32(p, v) AV_WL32(p, v) -# endif - -# if defined(AV_RN48) && !defined(AV_RL48) -# define AV_RL48(p) AV_RN48(p) -# elif !defined(AV_RN48) && defined(AV_RL48) -# define AV_RN48(p) AV_RL48(p) -# endif - -# if defined(AV_WN48) && !defined(AV_WL48) -# define AV_WL48(p, v) AV_WN48(p, v) -# elif !defined(AV_WN48) && defined(AV_WL48) -# define AV_WN48(p, v) AV_WL48(p, v) -# endif - -# if defined(AV_RN64) && !defined(AV_RL64) -# define AV_RL64(p) AV_RN64(p) -# elif !defined(AV_RN64) && defined(AV_RL64) -# define AV_RN64(p) AV_RL64(p) -# endif - -# if defined(AV_WN64) && !defined(AV_WL64) -# define AV_WL64(p, v) AV_WN64(p, v) -# elif !defined(AV_WN64) && defined(AV_WL64) -# define AV_WN64(p, v) AV_WL64(p, v) -# endif - -#endif /* !AV_HAVE_BIGENDIAN */ - -/* - * Define AV_[RW]N helper macros to simplify definitions not provided - * by per-arch headers. - */ - -#if defined(__GNUC__) && !defined(__TI_COMPILER_VERSION__) - -union unaligned_64 { uint64_t l; } __attribute__((packed)) av_alias; -union unaligned_32 { uint32_t l; } __attribute__((packed)) av_alias; -union unaligned_16 { uint16_t l; } __attribute__((packed)) av_alias; - -# define AV_RN(s, p) (((const union unaligned_##s *) (p))->l) -# define AV_WN(s, p, v) ((((union unaligned_##s *) (p))->l) = (v)) - -#elif defined(__DECC) - -# define AV_RN(s, p) (*((const __unaligned uint##s##_t*)(p))) -# define AV_WN(s, p, v) (*((__unaligned uint##s##_t*)(p)) = (v)) - -#elif AV_HAVE_FAST_UNALIGNED - -# define AV_RN(s, p) (((const av_alias##s*)(p))->u##s) -# define AV_WN(s, p, v) (((av_alias##s*)(p))->u##s = (v)) - -#else - -#ifndef AV_RB16 -# define AV_RB16(x) \ - ((((const uint8_t*)(x))[0] << 8) | \ - ((const uint8_t*)(x))[1]) -#endif -#ifndef AV_WB16 -# define AV_WB16(p, darg) do { \ - unsigned d = (darg); \ - ((uint8_t*)(p))[1] = (d); \ - ((uint8_t*)(p))[0] = (d)>>8; \ - } while(0) -#endif - -#ifndef AV_RL16 -# define AV_RL16(x) \ - ((((const uint8_t*)(x))[1] << 8) | \ - ((const uint8_t*)(x))[0]) -#endif -#ifndef AV_WL16 -# define AV_WL16(p, darg) do { \ - unsigned d = (darg); \ - ((uint8_t*)(p))[0] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - } while(0) -#endif - -#ifndef AV_RB32 -# define AV_RB32(x) \ - (((uint32_t)((const uint8_t*)(x))[0] << 24) | \ - (((const uint8_t*)(x))[1] << 16) | \ - (((const uint8_t*)(x))[2] << 8) | \ - ((const uint8_t*)(x))[3]) -#endif -#ifndef AV_WB32 -# define AV_WB32(p, darg) do { \ - unsigned d = (darg); \ - ((uint8_t*)(p))[3] = (d); \ - ((uint8_t*)(p))[2] = (d)>>8; \ - ((uint8_t*)(p))[1] = (d)>>16; \ - ((uint8_t*)(p))[0] = (d)>>24; \ - } while(0) -#endif - -#ifndef AV_RL32 -# define AV_RL32(x) \ - (((uint32_t)((const uint8_t*)(x))[3] << 24) | \ - (((const uint8_t*)(x))[2] << 16) | \ - (((const uint8_t*)(x))[1] << 8) | \ - ((const uint8_t*)(x))[0]) -#endif -#ifndef AV_WL32 -# define AV_WL32(p, darg) do { \ - unsigned d = (darg); \ - ((uint8_t*)(p))[0] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - ((uint8_t*)(p))[2] = (d)>>16; \ - ((uint8_t*)(p))[3] = (d)>>24; \ - } while(0) -#endif - -#ifndef AV_RB64 -# define AV_RB64(x) \ - (((uint64_t)((const uint8_t*)(x))[0] << 56) | \ - ((uint64_t)((const uint8_t*)(x))[1] << 48) | \ - ((uint64_t)((const uint8_t*)(x))[2] << 40) | \ - ((uint64_t)((const uint8_t*)(x))[3] << 32) | \ - ((uint64_t)((const uint8_t*)(x))[4] << 24) | \ - ((uint64_t)((const uint8_t*)(x))[5] << 16) | \ - ((uint64_t)((const uint8_t*)(x))[6] << 8) | \ - (uint64_t)((const uint8_t*)(x))[7]) -#endif -#ifndef AV_WB64 -# define AV_WB64(p, darg) do { \ - uint64_t d = (darg); \ - ((uint8_t*)(p))[7] = (d); \ - ((uint8_t*)(p))[6] = (d)>>8; \ - ((uint8_t*)(p))[5] = (d)>>16; \ - ((uint8_t*)(p))[4] = (d)>>24; \ - ((uint8_t*)(p))[3] = (d)>>32; \ - ((uint8_t*)(p))[2] = (d)>>40; \ - ((uint8_t*)(p))[1] = (d)>>48; \ - ((uint8_t*)(p))[0] = (d)>>56; \ - } while(0) -#endif - -#ifndef AV_RL64 -# define AV_RL64(x) \ - (((uint64_t)((const uint8_t*)(x))[7] << 56) | \ - ((uint64_t)((const uint8_t*)(x))[6] << 48) | \ - ((uint64_t)((const uint8_t*)(x))[5] << 40) | \ - ((uint64_t)((const uint8_t*)(x))[4] << 32) | \ - ((uint64_t)((const uint8_t*)(x))[3] << 24) | \ - ((uint64_t)((const uint8_t*)(x))[2] << 16) | \ - ((uint64_t)((const uint8_t*)(x))[1] << 8) | \ - (uint64_t)((const uint8_t*)(x))[0]) -#endif -#ifndef AV_WL64 -# define AV_WL64(p, darg) do { \ - uint64_t d = (darg); \ - ((uint8_t*)(p))[0] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - ((uint8_t*)(p))[2] = (d)>>16; \ - ((uint8_t*)(p))[3] = (d)>>24; \ - ((uint8_t*)(p))[4] = (d)>>32; \ - ((uint8_t*)(p))[5] = (d)>>40; \ - ((uint8_t*)(p))[6] = (d)>>48; \ - ((uint8_t*)(p))[7] = (d)>>56; \ - } while(0) -#endif - -#if AV_HAVE_BIGENDIAN -# define AV_RN(s, p) AV_RB##s(p) -# define AV_WN(s, p, v) AV_WB##s(p, v) -#else -# define AV_RN(s, p) AV_RL##s(p) -# define AV_WN(s, p, v) AV_WL##s(p, v) -#endif - -#endif /* HAVE_FAST_UNALIGNED */ - -#ifndef AV_RN16 -# define AV_RN16(p) AV_RN(16, p) -#endif - -#ifndef AV_RN32 -# define AV_RN32(p) AV_RN(32, p) -#endif - -#ifndef AV_RN64 -# define AV_RN64(p) AV_RN(64, p) -#endif - -#ifndef AV_WN16 -# define AV_WN16(p, v) AV_WN(16, p, v) -#endif - -#ifndef AV_WN32 -# define AV_WN32(p, v) AV_WN(32, p, v) -#endif - -#ifndef AV_WN64 -# define AV_WN64(p, v) AV_WN(64, p, v) -#endif - -#if AV_HAVE_BIGENDIAN -# define AV_RB(s, p) AV_RN##s(p) -# define AV_WB(s, p, v) AV_WN##s(p, v) -# define AV_RL(s, p) av_bswap##s(AV_RN##s(p)) -# define AV_WL(s, p, v) AV_WN##s(p, av_bswap##s(v)) -#else -# define AV_RB(s, p) av_bswap##s(AV_RN##s(p)) -# define AV_WB(s, p, v) AV_WN##s(p, av_bswap##s(v)) -# define AV_RL(s, p) AV_RN##s(p) -# define AV_WL(s, p, v) AV_WN##s(p, v) -#endif - -#define AV_RB8(x) (((const uint8_t*)(x))[0]) -#define AV_WB8(p, d) do { ((uint8_t*)(p))[0] = (d); } while(0) - -#define AV_RL8(x) AV_RB8(x) -#define AV_WL8(p, d) AV_WB8(p, d) - -#ifndef AV_RB16 -# define AV_RB16(p) AV_RB(16, p) -#endif -#ifndef AV_WB16 -# define AV_WB16(p, v) AV_WB(16, p, v) -#endif - -#ifndef AV_RL16 -# define AV_RL16(p) AV_RL(16, p) -#endif -#ifndef AV_WL16 -# define AV_WL16(p, v) AV_WL(16, p, v) -#endif - -#ifndef AV_RB32 -# define AV_RB32(p) AV_RB(32, p) -#endif -#ifndef AV_WB32 -# define AV_WB32(p, v) AV_WB(32, p, v) -#endif - -#ifndef AV_RL32 -# define AV_RL32(p) AV_RL(32, p) -#endif -#ifndef AV_WL32 -# define AV_WL32(p, v) AV_WL(32, p, v) -#endif - -#ifndef AV_RB64 -# define AV_RB64(p) AV_RB(64, p) -#endif -#ifndef AV_WB64 -# define AV_WB64(p, v) AV_WB(64, p, v) -#endif - -#ifndef AV_RL64 -# define AV_RL64(p) AV_RL(64, p) -#endif -#ifndef AV_WL64 -# define AV_WL64(p, v) AV_WL(64, p, v) -#endif - -#ifndef AV_RB24 -# define AV_RB24(x) \ - ((((const uint8_t*)(x))[0] << 16) | \ - (((const uint8_t*)(x))[1] << 8) | \ - ((const uint8_t*)(x))[2]) -#endif -#ifndef AV_WB24 -# define AV_WB24(p, d) do { \ - ((uint8_t*)(p))[2] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - ((uint8_t*)(p))[0] = (d)>>16; \ - } while(0) -#endif - -#ifndef AV_RL24 -# define AV_RL24(x) \ - ((((const uint8_t*)(x))[2] << 16) | \ - (((const uint8_t*)(x))[1] << 8) | \ - ((const uint8_t*)(x))[0]) -#endif -#ifndef AV_WL24 -# define AV_WL24(p, d) do { \ - ((uint8_t*)(p))[0] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - ((uint8_t*)(p))[2] = (d)>>16; \ - } while(0) -#endif - -#ifndef AV_RB48 -# define AV_RB48(x) \ - (((uint64_t)((const uint8_t*)(x))[0] << 40) | \ - ((uint64_t)((const uint8_t*)(x))[1] << 32) | \ - ((uint64_t)((const uint8_t*)(x))[2] << 24) | \ - ((uint64_t)((const uint8_t*)(x))[3] << 16) | \ - ((uint64_t)((const uint8_t*)(x))[4] << 8) | \ - (uint64_t)((const uint8_t*)(x))[5]) -#endif -#ifndef AV_WB48 -# define AV_WB48(p, darg) do { \ - uint64_t d = (darg); \ - ((uint8_t*)(p))[5] = (d); \ - ((uint8_t*)(p))[4] = (d)>>8; \ - ((uint8_t*)(p))[3] = (d)>>16; \ - ((uint8_t*)(p))[2] = (d)>>24; \ - ((uint8_t*)(p))[1] = (d)>>32; \ - ((uint8_t*)(p))[0] = (d)>>40; \ - } while(0) -#endif - -#ifndef AV_RL48 -# define AV_RL48(x) \ - (((uint64_t)((const uint8_t*)(x))[5] << 40) | \ - ((uint64_t)((const uint8_t*)(x))[4] << 32) | \ - ((uint64_t)((const uint8_t*)(x))[3] << 24) | \ - ((uint64_t)((const uint8_t*)(x))[2] << 16) | \ - ((uint64_t)((const uint8_t*)(x))[1] << 8) | \ - (uint64_t)((const uint8_t*)(x))[0]) -#endif -#ifndef AV_WL48 -# define AV_WL48(p, darg) do { \ - uint64_t d = (darg); \ - ((uint8_t*)(p))[0] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - ((uint8_t*)(p))[2] = (d)>>16; \ - ((uint8_t*)(p))[3] = (d)>>24; \ - ((uint8_t*)(p))[4] = (d)>>32; \ - ((uint8_t*)(p))[5] = (d)>>40; \ - } while(0) -#endif - -/* - * The AV_[RW]NA macros access naturally aligned data - * in a type-safe way. - */ - -#define AV_RNA(s, p) (((const av_alias##s*)(p))->u##s) -#define AV_WNA(s, p, v) (((av_alias##s*)(p))->u##s = (v)) - -#ifndef AV_RN16A -# define AV_RN16A(p) AV_RNA(16, p) -#endif - -#ifndef AV_RN32A -# define AV_RN32A(p) AV_RNA(32, p) -#endif - -#ifndef AV_RN64A -# define AV_RN64A(p) AV_RNA(64, p) -#endif - -#ifndef AV_WN16A -# define AV_WN16A(p, v) AV_WNA(16, p, v) -#endif - -#ifndef AV_WN32A -# define AV_WN32A(p, v) AV_WNA(32, p, v) -#endif - -#ifndef AV_WN64A -# define AV_WN64A(p, v) AV_WNA(64, p, v) -#endif - -/* - * The AV_COPYxxU macros are suitable for copying data to/from unaligned - * memory locations. - */ - -#define AV_COPYU(n, d, s) AV_WN##n(d, AV_RN##n(s)); - -#ifndef AV_COPY16U -# define AV_COPY16U(d, s) AV_COPYU(16, d, s) -#endif - -#ifndef AV_COPY32U -# define AV_COPY32U(d, s) AV_COPYU(32, d, s) -#endif - -#ifndef AV_COPY64U -# define AV_COPY64U(d, s) AV_COPYU(64, d, s) -#endif - -#ifndef AV_COPY128U -# define AV_COPY128U(d, s) \ - do { \ - AV_COPY64U(d, s); \ - AV_COPY64U((char *)(d) + 8, (const char *)(s) + 8); \ - } while(0) -#endif - -/* Parameters for AV_COPY*, AV_SWAP*, AV_ZERO* must be - * naturally aligned. They may be implemented using MMX, - * so emms_c() must be called before using any float code - * afterwards. - */ - -#define AV_COPY(n, d, s) \ - (((av_alias##n*)(d))->u##n = ((const av_alias##n*)(s))->u##n) - -#ifndef AV_COPY16 -# define AV_COPY16(d, s) AV_COPY(16, d, s) -#endif - -#ifndef AV_COPY32 -# define AV_COPY32(d, s) AV_COPY(32, d, s) -#endif - -#ifndef AV_COPY64 -# define AV_COPY64(d, s) AV_COPY(64, d, s) -#endif - -#ifndef AV_COPY128 -# define AV_COPY128(d, s) \ - do { \ - AV_COPY64(d, s); \ - AV_COPY64((char*)(d)+8, (char*)(s)+8); \ - } while(0) -#endif - -#define AV_SWAP(n, a, b) FFSWAP(av_alias##n, *(av_alias##n*)(a), *(av_alias##n*)(b)) - -#ifndef AV_SWAP64 -# define AV_SWAP64(a, b) AV_SWAP(64, a, b) -#endif - -#define AV_ZERO(n, d) (((av_alias##n*)(d))->u##n = 0) - -#ifndef AV_ZERO16 -# define AV_ZERO16(d) AV_ZERO(16, d) -#endif - -#ifndef AV_ZERO32 -# define AV_ZERO32(d) AV_ZERO(32, d) -#endif - -#ifndef AV_ZERO64 -# define AV_ZERO64(d) AV_ZERO(64, d) -#endif - -#ifndef AV_ZERO128 -# define AV_ZERO128(d) \ - do { \ - AV_ZERO64(d); \ - AV_ZERO64((char*)(d)+8); \ - } while(0) -#endif - -#endif /* AVUTIL_INTREADWRITE_H */ diff --git a/Externals/ffmpeg/include/libavutil/lfg.h b/Externals/ffmpeg/include/libavutil/lfg.h deleted file mode 100644 index ec90562cf24d..000000000000 --- a/Externals/ffmpeg/include/libavutil/lfg.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Lagged Fibonacci PRNG - * Copyright (c) 2008 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_LFG_H -#define AVUTIL_LFG_H - -typedef struct AVLFG { - unsigned int state[64]; - int index; -} AVLFG; - -void av_lfg_init(AVLFG *c, unsigned int seed); - -/** - * Get the next random unsigned 32-bit number using an ALFG. - * - * Please also consider a simple LCG like state= state*1664525+1013904223, - * it may be good enough and faster for your specific use case. - */ -static inline unsigned int av_lfg_get(AVLFG *c){ - c->state[c->index & 63] = c->state[(c->index-24) & 63] + c->state[(c->index-55) & 63]; - return c->state[c->index++ & 63]; -} - -/** - * Get the next random unsigned 32-bit number using a MLFG. - * - * Please also consider av_lfg_get() above, it is faster. - */ -static inline unsigned int av_mlfg_get(AVLFG *c){ - unsigned int a= c->state[(c->index-55) & 63]; - unsigned int b= c->state[(c->index-24) & 63]; - return c->state[c->index++ & 63] = 2*a*b+a+b; -} - -/** - * Get the next two numbers generated by a Box-Muller Gaussian - * generator using the random numbers issued by lfg. - * - * @param out array where the two generated numbers are placed - */ -void av_bmg_get(AVLFG *lfg, double out[2]); - -#endif /* AVUTIL_LFG_H */ diff --git a/Externals/ffmpeg/include/libavutil/log.h b/Externals/ffmpeg/include/libavutil/log.h deleted file mode 100644 index f0a57385dfe3..000000000000 --- a/Externals/ffmpeg/include/libavutil/log.h +++ /dev/null @@ -1,376 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_LOG_H -#define AVUTIL_LOG_H - -#include -#include "avutil.h" -#include "attributes.h" -#include "version.h" - -typedef enum { - AV_CLASS_CATEGORY_NA = 0, - AV_CLASS_CATEGORY_INPUT, - AV_CLASS_CATEGORY_OUTPUT, - AV_CLASS_CATEGORY_MUXER, - AV_CLASS_CATEGORY_DEMUXER, - AV_CLASS_CATEGORY_ENCODER, - AV_CLASS_CATEGORY_DECODER, - AV_CLASS_CATEGORY_FILTER, - AV_CLASS_CATEGORY_BITSTREAM_FILTER, - AV_CLASS_CATEGORY_SWSCALER, - AV_CLASS_CATEGORY_SWRESAMPLER, - AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT = 40, - AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT, - AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT, - AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT, - AV_CLASS_CATEGORY_DEVICE_OUTPUT, - AV_CLASS_CATEGORY_DEVICE_INPUT, - AV_CLASS_CATEGORY_NB ///< not part of ABI/API -}AVClassCategory; - -#define AV_IS_INPUT_DEVICE(category) \ - (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_INPUT)) - -#define AV_IS_OUTPUT_DEVICE(category) \ - (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_OUTPUT)) - -struct AVOptionRanges; - -/** - * Describe the class of an AVClass context structure. That is an - * arbitrary struct of which the first field is a pointer to an - * AVClass struct (e.g. AVCodecContext, AVFormatContext etc.). - */ -typedef struct AVClass { - /** - * The name of the class; usually it is the same name as the - * context structure type to which the AVClass is associated. - */ - const char* class_name; - - /** - * A pointer to a function which returns the name of a context - * instance ctx associated with the class. - */ - const char* (*item_name)(void* ctx); - - /** - * a pointer to the first option specified in the class if any or NULL - * - * @see av_set_default_options() - */ - const struct AVOption *option; - - /** - * LIBAVUTIL_VERSION with which this structure was created. - * This is used to allow fields to be added without requiring major - * version bumps everywhere. - */ - - int version; - - /** - * Offset in the structure where log_level_offset is stored. - * 0 means there is no such variable - */ - int log_level_offset_offset; - - /** - * Offset in the structure where a pointer to the parent context for - * logging is stored. For example a decoder could pass its AVCodecContext - * to eval as such a parent context, which an av_log() implementation - * could then leverage to display the parent context. - * The offset can be NULL. - */ - int parent_log_context_offset; - - /** - * Return next AVOptions-enabled child or NULL - */ - void* (*child_next)(void *obj, void *prev); - - /** - * Return an AVClass corresponding to the next potential - * AVOptions-enabled child. - * - * The difference between child_next and this is that - * child_next iterates over _already existing_ objects, while - * child_class_next iterates over _all possible_ children. - */ - const struct AVClass* (*child_class_next)(const struct AVClass *prev); - - /** - * Category used for visualization (like color) - * This is only set if the category is equal for all objects using this class. - * available since version (51 << 16 | 56 << 8 | 100) - */ - AVClassCategory category; - - /** - * Callback to return the category. - * available since version (51 << 16 | 59 << 8 | 100) - */ - AVClassCategory (*get_category)(void* ctx); - - /** - * Callback to return the supported/allowed ranges. - * available since version (52.12) - */ - int (*query_ranges)(struct AVOptionRanges **, void *obj, const char *key, int flags); -} AVClass; - -/** - * @addtogroup lavu_log - * - * @{ - * - * @defgroup lavu_log_constants Logging Constants - * - * @{ - */ - -/** - * Print no output. - */ -#define AV_LOG_QUIET -8 - -/** - * Something went really wrong and we will crash now. - */ -#define AV_LOG_PANIC 0 - -/** - * Something went wrong and recovery is not possible. - * For example, no header was found for a format which depends - * on headers or an illegal combination of parameters is used. - */ -#define AV_LOG_FATAL 8 - -/** - * Something went wrong and cannot losslessly be recovered. - * However, not all future data is affected. - */ -#define AV_LOG_ERROR 16 - -/** - * Something somehow does not look correct. This may or may not - * lead to problems. An example would be the use of '-vstrict -2'. - */ -#define AV_LOG_WARNING 24 - -/** - * Standard information. - */ -#define AV_LOG_INFO 32 - -/** - * Detailed information. - */ -#define AV_LOG_VERBOSE 40 - -/** - * Stuff which is only useful for libav* developers. - */ -#define AV_LOG_DEBUG 48 - -/** - * Extremely verbose debugging, useful for libav* development. - */ -#define AV_LOG_TRACE 56 - -#define AV_LOG_MAX_OFFSET (AV_LOG_TRACE - AV_LOG_QUIET) - -/** - * @} - */ - -/** - * Sets additional colors for extended debugging sessions. - * @code - av_log(ctx, AV_LOG_DEBUG|AV_LOG_C(134), "Message in purple\n"); - @endcode - * Requires 256color terminal support. Uses outside debugging is not - * recommended. - */ -#define AV_LOG_C(x) ((x) << 8) - -/** - * Send the specified message to the log if the level is less than or equal - * to the current av_log_level. By default, all logging messages are sent to - * stderr. This behavior can be altered by setting a different logging callback - * function. - * @see av_log_set_callback - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct or NULL if general log. - * @param level The importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant". - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - */ -void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4); - - -/** - * Send the specified message to the log if the level is less than or equal - * to the current av_log_level. By default, all logging messages are sent to - * stderr. This behavior can be altered by setting a different logging callback - * function. - * @see av_log_set_callback - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant". - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - * @param vl The arguments referenced by the format string. - */ -void av_vlog(void *avcl, int level, const char *fmt, va_list vl); - -/** - * Get the current log level - * - * @see lavu_log_constants - * - * @return Current log level - */ -int av_log_get_level(void); - -/** - * Set the log level - * - * @see lavu_log_constants - * - * @param level Logging level - */ -void av_log_set_level(int level); - -/** - * Set the logging callback - * - * @note The callback must be thread safe, even if the application does not use - * threads itself as some codecs are multithreaded. - * - * @see av_log_default_callback - * - * @param callback A logging function with a compatible signature. - */ -void av_log_set_callback(void (*callback)(void*, int, const char*, va_list)); - -/** - * Default logging callback - * - * It prints the message to stderr, optionally colorizing it. - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant". - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - * @param vl The arguments referenced by the format string. - */ -void av_log_default_callback(void *avcl, int level, const char *fmt, - va_list vl); - -/** - * Return the context name - * - * @param ctx The AVClass context - * - * @return The AVClass class_name - */ -const char* av_default_item_name(void* ctx); -AVClassCategory av_default_get_category(void *ptr); - -/** - * Format a line of log the same way as the default callback. - * @param line buffer to receive the formatted line - * @param line_size size of the buffer - * @param print_prefix used to store whether the prefix must be printed; - * must point to a persistent integer initially set to 1 - */ -void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl, - char *line, int line_size, int *print_prefix); - -/** - * Format a line of log the same way as the default callback. - * @param line buffer to receive the formatted line; - * may be NULL if line_size is 0 - * @param line_size size of the buffer; at most line_size-1 characters will - * be written to the buffer, plus one null terminator - * @param print_prefix used to store whether the prefix must be printed; - * must point to a persistent integer initially set to 1 - * @return Returns a negative value if an error occurred, otherwise returns - * the number of characters that would have been written for a - * sufficiently large buffer, not including the terminating null - * character. If the return value is not less than line_size, it means - * that the log message was truncated to fit the buffer. - */ -int av_log_format_line2(void *ptr, int level, const char *fmt, va_list vl, - char *line, int line_size, int *print_prefix); - -#if FF_API_DLOG -/** - * av_dlog macros - * @deprecated unused - * Useful to print debug messages that shouldn't get compiled in normally. - */ - -#ifdef DEBUG -# define av_dlog(pctx, ...) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__) -#else -# define av_dlog(pctx, ...) do { if (0) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__); } while (0) -#endif -#endif /* FF_API_DLOG */ - -/** - * Skip repeated messages, this requires the user app to use av_log() instead of - * (f)printf as the 2 would otherwise interfere and lead to - * "Last message repeated x times" messages below (f)printf messages with some - * bad luck. - * Also to receive the last, "last repeated" line if any, the user app must - * call av_log(NULL, AV_LOG_QUIET, "%s", ""); at the end - */ -#define AV_LOG_SKIP_REPEATED 1 - -/** - * Include the log severity in messages originating from codecs. - * - * Results in messages such as: - * [rawvideo @ 0xDEADBEEF] [error] encode did not produce valid pts - */ -#define AV_LOG_PRINT_LEVEL 2 - -void av_log_set_flags(int arg); -int av_log_get_flags(void); - -/** - * @} - */ - -#endif /* AVUTIL_LOG_H */ diff --git a/Externals/ffmpeg/include/libavutil/macros.h b/Externals/ffmpeg/include/libavutil/macros.h deleted file mode 100644 index 2007ee561987..000000000000 --- a/Externals/ffmpeg/include/libavutil/macros.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu - * Utility Preprocessor macros - */ - -#ifndef AVUTIL_MACROS_H -#define AVUTIL_MACROS_H - -/** - * @addtogroup preproc_misc Preprocessor String Macros - * - * String manipulation macros - * - * @{ - */ - -#define AV_STRINGIFY(s) AV_TOSTRING(s) -#define AV_TOSTRING(s) #s - -#define AV_GLUE(a, b) a ## b -#define AV_JOIN(a, b) AV_GLUE(a, b) - -/** - * @} - */ - -#define AV_PRAGMA(s) _Pragma(#s) - -#define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1)) - -#endif /* AVUTIL_MACROS_H */ diff --git a/Externals/ffmpeg/include/libavutil/mastering_display_metadata.h b/Externals/ffmpeg/include/libavutil/mastering_display_metadata.h deleted file mode 100644 index 936533fec403..000000000000 --- a/Externals/ffmpeg/include/libavutil/mastering_display_metadata.h +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Copyright (c) 2016 Neil Birkbeck - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_MASTERING_DISPLAY_METADATA_H -#define AVUTIL_MASTERING_DISPLAY_METADATA_H - -#include "frame.h" -#include "rational.h" - - -/** - * Mastering display metadata capable of representing the color volume of - * the display used to master the content (SMPTE 2086:2014). - * - * To be used as payload of a AVFrameSideData or AVPacketSideData with the - * appropriate type. - * - * @note The struct should be allocated with av_mastering_display_metadata_alloc() - * and its size is not a part of the public ABI. - */ -typedef struct AVMasteringDisplayMetadata { - /** - * CIE 1931 xy chromaticity coords of color primaries (r, g, b order). - */ - AVRational display_primaries[3][2]; - - /** - * CIE 1931 xy chromaticity coords of white point. - */ - AVRational white_point[2]; - - /** - * Min luminance of mastering display (cd/m^2). - */ - AVRational min_luminance; - - /** - * Max luminance of mastering display (cd/m^2). - */ - AVRational max_luminance; - - /** - * Flag indicating whether the display primaries (and white point) are set. - */ - int has_primaries; - - /** - * Flag indicating whether the luminance (min_ and max_) have been set. - */ - int has_luminance; - -} AVMasteringDisplayMetadata; - -/** - * Allocate an AVMasteringDisplayMetadata structure and set its fields to - * default values. The resulting struct can be freed using av_freep(). - * - * @return An AVMasteringDisplayMetadata filled with default values or NULL - * on failure. - */ -AVMasteringDisplayMetadata *av_mastering_display_metadata_alloc(void); - -/** - * Allocate a complete AVMasteringDisplayMetadata and add it to the frame. - * - * @param frame The frame which side data is added to. - * - * @return The AVMasteringDisplayMetadata structure to be filled by caller. - */ -AVMasteringDisplayMetadata *av_mastering_display_metadata_create_side_data(AVFrame *frame); - -#endif /* AVUTIL_MASTERING_DISPLAY_METADATA_H */ diff --git a/Externals/ffmpeg/include/libavutil/mathematics.h b/Externals/ffmpeg/include/libavutil/mathematics.h deleted file mode 100644 index 54901800ba6a..000000000000 --- a/Externals/ffmpeg/include/libavutil/mathematics.h +++ /dev/null @@ -1,242 +0,0 @@ -/* - * copyright (c) 2005-2012 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @addtogroup lavu_math - * Mathematical utilities for working with timestamp and time base. - */ - -#ifndef AVUTIL_MATHEMATICS_H -#define AVUTIL_MATHEMATICS_H - -#include -#include -#include "attributes.h" -#include "rational.h" -#include "intfloat.h" - -#ifndef M_E -#define M_E 2.7182818284590452354 /* e */ -#endif -#ifndef M_LN2 -#define M_LN2 0.69314718055994530942 /* log_e 2 */ -#endif -#ifndef M_LN10 -#define M_LN10 2.30258509299404568402 /* log_e 10 */ -#endif -#ifndef M_LOG2_10 -#define M_LOG2_10 3.32192809488736234787 /* log_2 10 */ -#endif -#ifndef M_PHI -#define M_PHI 1.61803398874989484820 /* phi / golden ratio */ -#endif -#ifndef M_PI -#define M_PI 3.14159265358979323846 /* pi */ -#endif -#ifndef M_PI_2 -#define M_PI_2 1.57079632679489661923 /* pi/2 */ -#endif -#ifndef M_SQRT1_2 -#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ -#endif -#ifndef M_SQRT2 -#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ -#endif -#ifndef NAN -#define NAN av_int2float(0x7fc00000) -#endif -#ifndef INFINITY -#define INFINITY av_int2float(0x7f800000) -#endif - -/** - * @addtogroup lavu_math - * - * @{ - */ - -/** - * Rounding methods. - */ -enum AVRounding { - AV_ROUND_ZERO = 0, ///< Round toward zero. - AV_ROUND_INF = 1, ///< Round away from zero. - AV_ROUND_DOWN = 2, ///< Round toward -infinity. - AV_ROUND_UP = 3, ///< Round toward +infinity. - AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zero. - /** - * Flag telling rescaling functions to pass `INT64_MIN`/`MAX` through - * unchanged, avoiding special cases for #AV_NOPTS_VALUE. - * - * Unlike other values of the enumeration AVRounding, this value is a - * bitmask that must be used in conjunction with another value of the - * enumeration through a bitwise OR, in order to set behavior for normal - * cases. - * - * @code{.c} - * av_rescale_rnd(3, 1, 2, AV_ROUND_UP | AV_ROUND_PASS_MINMAX); - * // Rescaling 3: - * // Calculating 3 * 1 / 2 - * // 3 / 2 is rounded up to 2 - * // => 2 - * - * av_rescale_rnd(AV_NOPTS_VALUE, 1, 2, AV_ROUND_UP | AV_ROUND_PASS_MINMAX); - * // Rescaling AV_NOPTS_VALUE: - * // AV_NOPTS_VALUE == INT64_MIN - * // AV_NOPTS_VALUE is passed through - * // => AV_NOPTS_VALUE - * @endcode - */ - AV_ROUND_PASS_MINMAX = 8192, -}; - -/** - * Compute the greatest common divisor of two integer operands. - * - * @param a,b Operands - * @return GCD of a and b up to sign; if a >= 0 and b >= 0, return value is >= 0; - * if a == 0 and b == 0, returns 0. - */ -int64_t av_const av_gcd(int64_t a, int64_t b); - -/** - * Rescale a 64-bit integer with rounding to nearest. - * - * The operation is mathematically equivalent to `a * b / c`, but writing that - * directly can overflow. - * - * This function is equivalent to av_rescale_rnd() with #AV_ROUND_NEAR_INF. - * - * @see av_rescale_rnd(), av_rescale_q(), av_rescale_q_rnd() - */ -int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const; - -/** - * Rescale a 64-bit integer with specified rounding. - * - * The operation is mathematically equivalent to `a * b / c`, but writing that - * directly can overflow, and does not support different rounding methods. - * - * @see av_rescale(), av_rescale_q(), av_rescale_q_rnd() - */ -int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding rnd) av_const; - -/** - * Rescale a 64-bit integer by 2 rational numbers. - * - * The operation is mathematically equivalent to `a * bq / cq`. - * - * This function is equivalent to av_rescale_q_rnd() with #AV_ROUND_NEAR_INF. - * - * @see av_rescale(), av_rescale_rnd(), av_rescale_q_rnd() - */ -int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; - -/** - * Rescale a 64-bit integer by 2 rational numbers with specified rounding. - * - * The operation is mathematically equivalent to `a * bq / cq`. - * - * @see av_rescale(), av_rescale_rnd(), av_rescale_q() - */ -int64_t av_rescale_q_rnd(int64_t a, AVRational bq, AVRational cq, - enum AVRounding rnd) av_const; - -/** - * Compare two timestamps each in its own time base. - * - * @return One of the following values: - * - -1 if `ts_a` is before `ts_b` - * - 1 if `ts_a` is after `ts_b` - * - 0 if they represent the same position - * - * @warning - * The result of the function is undefined if one of the timestamps is outside - * the `int64_t` range when represented in the other's timebase. - */ -int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b); - -/** - * Compare the remainders of two integer operands divided by a common divisor. - * - * In other words, compare the least significant `log2(mod)` bits of integers - * `a` and `b`. - * - * @code{.c} - * av_compare_mod(0x11, 0x02, 0x10) < 0 // since 0x11 % 0x10 (0x1) < 0x02 % 0x10 (0x2) - * av_compare_mod(0x11, 0x02, 0x20) > 0 // since 0x11 % 0x20 (0x11) > 0x02 % 0x20 (0x02) - * @endcode - * - * @param a,b Operands - * @param mod Divisor; must be a power of 2 - * @return - * - a negative value if `a % mod < b % mod` - * - a positive value if `a % mod > b % mod` - * - zero if `a % mod == b % mod` - */ -int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod); - -/** - * Rescale a timestamp while preserving known durations. - * - * This function is designed to be called per audio packet to scale the input - * timestamp to a different time base. Compared to a simple av_rescale_q() - * call, this function is robust against possible inconsistent frame durations. - * - * The `last` parameter is a state variable that must be preserved for all - * subsequent calls for the same stream. For the first call, `*last` should be - * initialized to #AV_NOPTS_VALUE. - * - * @param[in] in_tb Input time base - * @param[in] in_ts Input timestamp - * @param[in] fs_tb Duration time base; typically this is finer-grained - * (greater) than `in_tb` and `out_tb` - * @param[in] duration Duration till the next call to this function (i.e. - * duration of the current packet/frame) - * @param[in,out] last Pointer to a timestamp expressed in terms of - * `fs_tb`, acting as a state variable - * @param[in] out_tb Output timebase - * @return Timestamp expressed in terms of `out_tb` - * - * @note In the context of this function, "duration" is in term of samples, not - * seconds. - */ -int64_t av_rescale_delta(AVRational in_tb, int64_t in_ts, AVRational fs_tb, int duration, int64_t *last, AVRational out_tb); - -/** - * Add a value to a timestamp. - * - * This function guarantees that when the same value is repeatly added that - * no accumulation of rounding errors occurs. - * - * @param[in] ts Input timestamp - * @param[in] ts_tb Input timestamp time base - * @param[in] inc Value to be added - * @param[in] inc_tb Time base of `inc` - */ -int64_t av_add_stable(AVRational ts_tb, int64_t ts, AVRational inc_tb, int64_t inc); - - -/** - * @} - */ - -#endif /* AVUTIL_MATHEMATICS_H */ diff --git a/Externals/ffmpeg/include/libavutil/md5.h b/Externals/ffmpeg/include/libavutil/md5.h deleted file mode 100644 index 9571c1fa4672..000000000000 --- a/Externals/ffmpeg/include/libavutil/md5.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_md5 - * Public header for MD5 hash function implementation. - */ - -#ifndef AVUTIL_MD5_H -#define AVUTIL_MD5_H - -#include - -#include "attributes.h" -#include "version.h" - -/** - * @defgroup lavu_md5 MD5 - * @ingroup lavu_hash - * MD5 hash function implementation. - * - * @{ - */ - -extern const int av_md5_size; - -struct AVMD5; - -/** - * Allocate an AVMD5 context. - */ -struct AVMD5 *av_md5_alloc(void); - -/** - * Initialize MD5 hashing. - * - * @param ctx pointer to the function context (of size av_md5_size) - */ -void av_md5_init(struct AVMD5 *ctx); - -/** - * Update hash value. - * - * @param ctx hash function context - * @param src input data to update hash with - * @param len input data length - */ -void av_md5_update(struct AVMD5 *ctx, const uint8_t *src, int len); - -/** - * Finish hashing and output digest value. - * - * @param ctx hash function context - * @param dst buffer where output digest value is stored - */ -void av_md5_final(struct AVMD5 *ctx, uint8_t *dst); - -/** - * Hash an array of data. - * - * @param dst The output buffer to write the digest into - * @param src The data to hash - * @param len The length of the data, in bytes - */ -void av_md5_sum(uint8_t *dst, const uint8_t *src, const int len); - -/** - * @} - */ - -#endif /* AVUTIL_MD5_H */ diff --git a/Externals/ffmpeg/include/libavutil/mem.h b/Externals/ffmpeg/include/libavutil/mem.h deleted file mode 100644 index f9d888478819..000000000000 --- a/Externals/ffmpeg/include/libavutil/mem.h +++ /dev/null @@ -1,696 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_mem - * Memory handling functions - */ - -#ifndef AVUTIL_MEM_H -#define AVUTIL_MEM_H - -#include -#include - -#include "attributes.h" -#include "error.h" -#include "avutil.h" - -/** - * @addtogroup lavu_mem - * Utilities for manipulating memory. - * - * FFmpeg has several applications of memory that are not required of a typical - * program. For example, the computing-heavy components like video decoding and - * encoding can be sped up significantly through the use of aligned memory. - * - * However, for each of FFmpeg's applications of memory, there might not be a - * recognized or standardized API for that specific use. Memory alignment, for - * instance, varies wildly depending on operating systems, architectures, and - * compilers. Hence, this component of @ref libavutil is created to make - * dealing with memory consistently possible on all platforms. - * - * @{ - * - * @defgroup lavu_mem_macros Alignment Macros - * Helper macros for declaring aligned variables. - * @{ - */ - -/** - * @def DECLARE_ALIGNED(n,t,v) - * Declare a variable that is aligned in memory. - * - * @code{.c} - * DECLARE_ALIGNED(16, uint16_t, aligned_int) = 42; - * DECLARE_ALIGNED(32, uint8_t, aligned_array)[128]; - * - * // The default-alignment equivalent would be - * uint16_t aligned_int = 42; - * uint8_t aligned_array[128]; - * @endcode - * - * @param n Minimum alignment in bytes - * @param t Type of the variable (or array element) - * @param v Name of the variable - */ - -/** - * @def DECLARE_ASM_CONST(n,t,v) - * Declare a static constant aligned variable appropriate for use in inline - * assembly code. - * - * @code{.c} - * DECLARE_ASM_CONST(16, uint64_t, pw_08) = UINT64_C(0x0008000800080008); - * @endcode - * - * @param n Minimum alignment in bytes - * @param t Type of the variable (or array element) - * @param v Name of the variable - */ - -#if defined(__INTEL_COMPILER) && __INTEL_COMPILER < 1110 || defined(__SUNPRO_C) - #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v - #define DECLARE_ASM_CONST(n,t,v) const t __attribute__ ((aligned (n))) v -#elif defined(__TI_COMPILER_VERSION__) - #define DECLARE_ALIGNED(n,t,v) \ - AV_PRAGMA(DATA_ALIGN(v,n)) \ - t __attribute__((aligned(n))) v - #define DECLARE_ASM_CONST(n,t,v) \ - AV_PRAGMA(DATA_ALIGN(v,n)) \ - static const t __attribute__((aligned(n))) v -#elif defined(__GNUC__) - #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v - #define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (n))) v -#elif defined(_MSC_VER) - #define DECLARE_ALIGNED(n,t,v) __declspec(align(n)) t v - #define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t v -#else - #define DECLARE_ALIGNED(n,t,v) t v - #define DECLARE_ASM_CONST(n,t,v) static const t v -#endif - -/** - * @} - */ - -/** - * @defgroup lavu_mem_attrs Function Attributes - * Function attributes applicable to memory handling functions. - * - * These function attributes can help compilers emit more useful warnings, or - * generate better code. - * @{ - */ - -/** - * @def av_malloc_attrib - * Function attribute denoting a malloc-like function. - * - * @see Function attribute `malloc` in GCC's documentation - */ - -#if AV_GCC_VERSION_AT_LEAST(3,1) - #define av_malloc_attrib __attribute__((__malloc__)) -#else - #define av_malloc_attrib -#endif - -/** - * @def av_alloc_size(...) - * Function attribute used on a function that allocates memory, whose size is - * given by the specified parameter(s). - * - * @code{.c} - * void *av_malloc(size_t size) av_alloc_size(1); - * void *av_calloc(size_t nmemb, size_t size) av_alloc_size(1, 2); - * @endcode - * - * @param ... One or two parameter indexes, separated by a comma - * - * @see Function attribute `alloc_size` in GCC's documentation - */ - -#if AV_GCC_VERSION_AT_LEAST(4,3) - #define av_alloc_size(...) __attribute__((alloc_size(__VA_ARGS__))) -#else - #define av_alloc_size(...) -#endif - -/** - * @} - */ - -/** - * @defgroup lavu_mem_funcs Heap Management - * Functions responsible for allocating, freeing, and copying memory. - * - * All memory allocation functions have a built-in upper limit of `INT_MAX` - * bytes. This may be changed with av_max_alloc(), although exercise extreme - * caution when doing so. - * - * @{ - */ - -/** - * Allocate a memory block with alignment suitable for all memory accesses - * (including vectors if available on the CPU). - * - * @param size Size in bytes for the memory block to be allocated - * @return Pointer to the allocated block, or `NULL` if the block cannot - * be allocated - * @see av_mallocz() - */ -void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1); - -/** - * Allocate a memory block with alignment suitable for all memory accesses - * (including vectors if available on the CPU) and zero all the bytes of the - * block. - * - * @param size Size in bytes for the memory block to be allocated - * @return Pointer to the allocated block, or `NULL` if it cannot be allocated - * @see av_malloc() - */ -void *av_mallocz(size_t size) av_malloc_attrib av_alloc_size(1); - -/** - * Allocate a memory block for an array with av_malloc(). - * - * The allocated memory will have size `size * nmemb` bytes. - * - * @param nmemb Number of element - * @param size Size of a single element - * @return Pointer to the allocated block, or `NULL` if the block cannot - * be allocated - * @see av_malloc() - */ -av_alloc_size(1, 2) static inline void *av_malloc_array(size_t nmemb, size_t size) -{ - if (!size || nmemb >= INT_MAX / size) - return NULL; - return av_malloc(nmemb * size); -} - -/** - * Allocate a memory block for an array with av_mallocz(). - * - * The allocated memory will have size `size * nmemb` bytes. - * - * @param nmemb Number of elements - * @param size Size of the single element - * @return Pointer to the allocated block, or `NULL` if the block cannot - * be allocated - * - * @see av_mallocz() - * @see av_malloc_array() - */ -av_alloc_size(1, 2) static inline void *av_mallocz_array(size_t nmemb, size_t size) -{ - if (!size || nmemb >= INT_MAX / size) - return NULL; - return av_mallocz(nmemb * size); -} - -/** - * Non-inlined equivalent of av_mallocz_array(). - * - * Created for symmetry with the calloc() C function. - */ -void *av_calloc(size_t nmemb, size_t size) av_malloc_attrib; - -/** - * Allocate, reallocate, or free a block of memory. - * - * If `ptr` is `NULL` and `size` > 0, allocate a new block. If `size` is - * zero, free the memory block pointed to by `ptr`. Otherwise, expand or - * shrink that block of memory according to `size`. - * - * @param ptr Pointer to a memory block already allocated with - * av_realloc() or `NULL` - * @param size Size in bytes of the memory block to be allocated or - * reallocated - * - * @return Pointer to a newly-reallocated block or `NULL` if the block - * cannot be reallocated or the function is used to free the memory block - * - * @warning Unlike av_malloc(), the returned pointer is not guaranteed to be - * correctly aligned. - * @see av_fast_realloc() - * @see av_reallocp() - */ -void *av_realloc(void *ptr, size_t size) av_alloc_size(2); - -/** - * Allocate, reallocate, or free a block of memory through a pointer to a - * pointer. - * - * If `*ptr` is `NULL` and `size` > 0, allocate a new block. If `size` is - * zero, free the memory block pointed to by `*ptr`. Otherwise, expand or - * shrink that block of memory according to `size`. - * - * @param[in,out] ptr Pointer to a pointer to a memory block already allocated - * with av_realloc(), or a pointer to `NULL`. The pointer - * is updated on success, or freed on failure. - * @param[in] size Size in bytes for the memory block to be allocated or - * reallocated - * - * @return Zero on success, an AVERROR error code on failure - * - * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be - * correctly aligned. - */ -av_warn_unused_result -int av_reallocp(void *ptr, size_t size); - -/** - * Allocate, reallocate, or free a block of memory. - * - * This function does the same thing as av_realloc(), except: - * - It takes two size arguments and allocates `nelem * elsize` bytes, - * after checking the result of the multiplication for integer overflow. - * - It frees the input block in case of failure, thus avoiding the memory - * leak with the classic - * @code{.c} - * buf = realloc(buf); - * if (!buf) - * return -1; - * @endcode - * pattern. - */ -void *av_realloc_f(void *ptr, size_t nelem, size_t elsize); - -/** - * Allocate, reallocate, or free an array. - * - * If `ptr` is `NULL` and `nmemb` > 0, allocate a new block. If - * `nmemb` is zero, free the memory block pointed to by `ptr`. - * - * @param ptr Pointer to a memory block already allocated with - * av_realloc() or `NULL` - * @param nmemb Number of elements in the array - * @param size Size of the single element of the array - * - * @return Pointer to a newly-reallocated block or NULL if the block - * cannot be reallocated or the function is used to free the memory block - * - * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be - * correctly aligned. - * @see av_reallocp_array() - */ -av_alloc_size(2, 3) void *av_realloc_array(void *ptr, size_t nmemb, size_t size); - -/** - * Allocate, reallocate, or free an array through a pointer to a pointer. - * - * If `*ptr` is `NULL` and `nmemb` > 0, allocate a new block. If `nmemb` is - * zero, free the memory block pointed to by `*ptr`. - * - * @param[in,out] ptr Pointer to a pointer to a memory block already - * allocated with av_realloc(), or a pointer to `NULL`. - * The pointer is updated on success, or freed on failure. - * @param[in] nmemb Number of elements - * @param[in] size Size of the single element - * - * @return Zero on success, an AVERROR error code on failure - * - * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be - * correctly aligned. - */ -av_alloc_size(2, 3) int av_reallocp_array(void *ptr, size_t nmemb, size_t size); - -/** - * Reallocate the given buffer if it is not large enough, otherwise do nothing. - * - * If the given buffer is `NULL`, then a new uninitialized buffer is allocated. - * - * If the given buffer is not large enough, and reallocation fails, `NULL` is - * returned and `*size` is set to 0, but the original buffer is not changed or - * freed. - * - * A typical use pattern follows: - * - * @code{.c} - * uint8_t *buf = ...; - * uint8_t *new_buf = av_fast_realloc(buf, ¤t_size, size_needed); - * if (!new_buf) { - * // Allocation failed; clean up original buffer - * av_freep(&buf); - * return AVERROR(ENOMEM); - * } - * @endcode - * - * @param[in,out] ptr Already allocated buffer, or `NULL` - * @param[in,out] size Pointer to current size of buffer `ptr`. `*size` is - * changed to `min_size` in case of success or 0 in - * case of failure - * @param[in] min_size New size of buffer `ptr` - * @return `ptr` if the buffer is large enough, a pointer to newly reallocated - * buffer if the buffer was not large enough, or `NULL` in case of - * error - * @see av_realloc() - * @see av_fast_malloc() - */ -void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size); - -/** - * Allocate a buffer, reusing the given one if large enough. - * - * Contrary to av_fast_realloc(), the current buffer contents might not be - * preserved and on error the old buffer is freed, thus no special handling to - * avoid memleaks is necessary. - * - * `*ptr` is allowed to be `NULL`, in which case allocation always happens if - * `size_needed` is greater than 0. - * - * @code{.c} - * uint8_t *buf = ...; - * av_fast_malloc(&buf, ¤t_size, size_needed); - * if (!buf) { - * // Allocation failed; buf already freed - * return AVERROR(ENOMEM); - * } - * @endcode - * - * @param[in,out] ptr Pointer to pointer to an already allocated buffer. - * `*ptr` will be overwritten with pointer to new - * buffer on success or `NULL` on failure - * @param[in,out] size Pointer to current size of buffer `*ptr`. `*size` is - * changed to `min_size` in case of success or 0 in - * case of failure - * @param[in] min_size New size of buffer `*ptr` - * @see av_realloc() - * @see av_fast_mallocz() - */ -void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size); - -/** - * Allocate and clear a buffer, reusing the given one if large enough. - * - * Like av_fast_malloc(), but all newly allocated space is initially cleared. - * Reused buffer is not cleared. - * - * `*ptr` is allowed to be `NULL`, in which case allocation always happens if - * `size_needed` is greater than 0. - * - * @param[in,out] ptr Pointer to pointer to an already allocated buffer. - * `*ptr` will be overwritten with pointer to new - * buffer on success or `NULL` on failure - * @param[in,out] size Pointer to current size of buffer `*ptr`. `*size` is - * changed to `min_size` in case of success or 0 in - * case of failure - * @param[in] min_size New size of buffer `*ptr` - * @see av_fast_malloc() - */ -void av_fast_mallocz(void *ptr, unsigned int *size, size_t min_size); - -/** - * Free a memory block which has been allocated with a function of av_malloc() - * or av_realloc() family. - * - * @param ptr Pointer to the memory block which should be freed. - * - * @note `ptr = NULL` is explicitly allowed. - * @note It is recommended that you use av_freep() instead, to prevent leaving - * behind dangling pointers. - * @see av_freep() - */ -void av_free(void *ptr); - -/** - * Free a memory block which has been allocated with a function of av_malloc() - * or av_realloc() family, and set the pointer pointing to it to `NULL`. - * - * @code{.c} - * uint8_t *buf = av_malloc(16); - * av_free(buf); - * // buf now contains a dangling pointer to freed memory, and accidental - * // dereference of buf will result in a use-after-free, which may be a - * // security risk. - * - * uint8_t *buf = av_malloc(16); - * av_freep(&buf); - * // buf is now NULL, and accidental dereference will only result in a - * // NULL-pointer dereference. - * @endcode - * - * @param ptr Pointer to the pointer to the memory block which should be freed - * @note `*ptr = NULL` is safe and leads to no action. - * @see av_free() - */ -void av_freep(void *ptr); - -/** - * Duplicate a string. - * - * @param s String to be duplicated - * @return Pointer to a newly-allocated string containing a - * copy of `s` or `NULL` if the string cannot be allocated - * @see av_strndup() - */ -char *av_strdup(const char *s) av_malloc_attrib; - -/** - * Duplicate a substring of a string. - * - * @param s String to be duplicated - * @param len Maximum length of the resulting string (not counting the - * terminating byte) - * @return Pointer to a newly-allocated string containing a - * substring of `s` or `NULL` if the string cannot be allocated - */ -char *av_strndup(const char *s, size_t len) av_malloc_attrib; - -/** - * Duplicate a buffer with av_malloc(). - * - * @param p Buffer to be duplicated - * @param size Size in bytes of the buffer copied - * @return Pointer to a newly allocated buffer containing a - * copy of `p` or `NULL` if the buffer cannot be allocated - */ -void *av_memdup(const void *p, size_t size); - -/** - * Overlapping memcpy() implementation. - * - * @param dst Destination buffer - * @param back Number of bytes back to start copying (i.e. the initial size of - * the overlapping window); must be > 0 - * @param cnt Number of bytes to copy; must be >= 0 - * - * @note `cnt > back` is valid, this will copy the bytes we just copied, - * thus creating a repeating pattern with a period length of `back`. - */ -void av_memcpy_backptr(uint8_t *dst, int back, int cnt); - -/** - * @} - */ - -/** - * @defgroup lavu_mem_dynarray Dynamic Array - * - * Utilities to make an array grow when needed. - * - * Sometimes, the programmer would want to have an array that can grow when - * needed. The libavutil dynamic array utilities fill that need. - * - * libavutil supports two systems of appending elements onto a dynamically - * allocated array, the first one storing the pointer to the value in the - * array, and the second storing the value directly. In both systems, the - * caller is responsible for maintaining a variable containing the length of - * the array, as well as freeing of the array after use. - * - * The first system stores pointers to values in a block of dynamically - * allocated memory. Since only pointers are stored, the function does not need - * to know the size of the type. Both av_dynarray_add() and - * av_dynarray_add_nofree() implement this system. - * - * @code - * type **array = NULL; //< an array of pointers to values - * int nb = 0; //< a variable to keep track of the length of the array - * - * type to_be_added = ...; - * type to_be_added2 = ...; - * - * av_dynarray_add(&array, &nb, &to_be_added); - * if (nb == 0) - * return AVERROR(ENOMEM); - * - * av_dynarray_add(&array, &nb, &to_be_added2); - * if (nb == 0) - * return AVERROR(ENOMEM); - * - * // Now: - * // nb == 2 - * // &to_be_added == array[0] - * // &to_be_added2 == array[1] - * - * av_freep(&array); - * @endcode - * - * The second system stores the value directly in a block of memory. As a - * result, the function has to know the size of the type. av_dynarray2_add() - * implements this mechanism. - * - * @code - * type *array = NULL; //< an array of values - * int nb = 0; //< a variable to keep track of the length of the array - * - * type to_be_added = ...; - * type to_be_added2 = ...; - * - * type *addr = av_dynarray2_add((void **)&array, &nb, sizeof(*array), NULL); - * if (!addr) - * return AVERROR(ENOMEM); - * memcpy(addr, &to_be_added, sizeof(to_be_added)); - * - * // Shortcut of the above. - * type *addr = av_dynarray2_add((void **)&array, &nb, sizeof(*array), - * (const void *)&to_be_added2); - * if (!addr) - * return AVERROR(ENOMEM); - * - * // Now: - * // nb == 2 - * // to_be_added == array[0] - * // to_be_added2 == array[1] - * - * av_freep(&array); - * @endcode - * - * @{ - */ - -/** - * Add the pointer to an element to a dynamic array. - * - * The array to grow is supposed to be an array of pointers to - * structures, and the element to add must be a pointer to an already - * allocated structure. - * - * The array is reallocated when its size reaches powers of 2. - * Therefore, the amortized cost of adding an element is constant. - * - * In case of success, the pointer to the array is updated in order to - * point to the new grown array, and the number pointed to by `nb_ptr` - * is incremented. - * In case of failure, the array is freed, `*tab_ptr` is set to `NULL` and - * `*nb_ptr` is set to 0. - * - * @param[in,out] tab_ptr Pointer to the array to grow - * @param[in,out] nb_ptr Pointer to the number of elements in the array - * @param[in] elem Element to add - * @see av_dynarray_add_nofree(), av_dynarray2_add() - */ -void av_dynarray_add(void *tab_ptr, int *nb_ptr, void *elem); - -/** - * Add an element to a dynamic array. - * - * Function has the same functionality as av_dynarray_add(), - * but it doesn't free memory on fails. It returns error code - * instead and leave current buffer untouched. - * - * @return >=0 on success, negative otherwise - * @see av_dynarray_add(), av_dynarray2_add() - */ -av_warn_unused_result -int av_dynarray_add_nofree(void *tab_ptr, int *nb_ptr, void *elem); - -/** - * Add an element of size `elem_size` to a dynamic array. - * - * The array is reallocated when its number of elements reaches powers of 2. - * Therefore, the amortized cost of adding an element is constant. - * - * In case of success, the pointer to the array is updated in order to - * point to the new grown array, and the number pointed to by `nb_ptr` - * is incremented. - * In case of failure, the array is freed, `*tab_ptr` is set to `NULL` and - * `*nb_ptr` is set to 0. - * - * @param[in,out] tab_ptr Pointer to the array to grow - * @param[in,out] nb_ptr Pointer to the number of elements in the array - * @param[in] elem_size Size in bytes of an element in the array - * @param[in] elem_data Pointer to the data of the element to add. If - * `NULL`, the space of the newly added element is - * allocated but left uninitialized. - * - * @return Pointer to the data of the element to copy in the newly allocated - * space - * @see av_dynarray_add(), av_dynarray_add_nofree() - */ -void *av_dynarray2_add(void **tab_ptr, int *nb_ptr, size_t elem_size, - const uint8_t *elem_data); - -/** - * @} - */ - -/** - * @defgroup lavu_mem_misc Miscellaneous Functions - * - * Other functions related to memory allocation. - * - * @{ - */ - -/** - * Multiply two `size_t` values checking for overflow. - * - * @param[in] a,b Operands of multiplication - * @param[out] r Pointer to the result of the operation - * @return 0 on success, AVERROR(EINVAL) on overflow - */ -static inline int av_size_mult(size_t a, size_t b, size_t *r) -{ - size_t t = a * b; - /* Hack inspired from glibc: don't try the division if nelem and elsize - * are both less than sqrt(SIZE_MAX). */ - if ((a | b) >= ((size_t)1 << (sizeof(size_t) * 4)) && a && t / a != b) - return AVERROR(EINVAL); - *r = t; - return 0; -} - -/** - * Set the maximum size that may be allocated in one block. - * - * The value specified with this function is effective for all libavutil's @ref - * lavu_mem_funcs "heap management functions." - * - * By default, the max value is defined as `INT_MAX`. - * - * @param max Value to be set as the new maximum size - * - * @warning Exercise extreme caution when using this function. Don't touch - * this if you do not understand the full consequence of doing so. - */ -void av_max_alloc(size_t max); - -/** - * @} - * @} - */ - -#endif /* AVUTIL_MEM_H */ diff --git a/Externals/ffmpeg/include/libavutil/motion_vector.h b/Externals/ffmpeg/include/libavutil/motion_vector.h deleted file mode 100644 index ec295563889a..000000000000 --- a/Externals/ffmpeg/include/libavutil/motion_vector.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_MOTION_VECTOR_H -#define AVUTIL_MOTION_VECTOR_H - -#include - -typedef struct AVMotionVector { - /** - * Where the current macroblock comes from; negative value when it comes - * from the past, positive value when it comes from the future. - * XXX: set exact relative ref frame reference instead of a +/- 1 "direction". - */ - int32_t source; - /** - * Width and height of the block. - */ - uint8_t w, h; - /** - * Absolute source position. Can be outside the frame area. - */ - int16_t src_x, src_y; - /** - * Absolute destination position. Can be outside the frame area. - */ - int16_t dst_x, dst_y; - /** - * Extra flag information. - * Currently unused. - */ - uint64_t flags; - /** - * Motion vector - * src_x = dst_x + motion_x / motion_scale - * src_y = dst_y + motion_y / motion_scale - */ - int32_t motion_x, motion_y; - uint16_t motion_scale; -} AVMotionVector; - -#endif /* AVUTIL_MOTION_VECTOR_H */ diff --git a/Externals/ffmpeg/include/libavutil/murmur3.h b/Externals/ffmpeg/include/libavutil/murmur3.h deleted file mode 100644 index 6a1694c08df2..000000000000 --- a/Externals/ffmpeg/include/libavutil/murmur3.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (C) 2013 Reimar Döffinger - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_murmur3 - * Public header for MurmurHash3 hash function implementation. - */ - -#ifndef AVUTIL_MURMUR3_H -#define AVUTIL_MURMUR3_H - -#include - -/** - * @defgroup lavu_murmur3 Murmur3 - * @ingroup lavu_hash - * MurmurHash3 hash function implementation. - * - * MurmurHash3 is a non-cryptographic hash function, of which three - * incompatible versions were created by its inventor Austin Appleby: - * - * - 32-bit output - * - 128-bit output for 32-bit platforms - * - 128-bit output for 64-bit platforms - * - * FFmpeg only implements the last variant: 128-bit output designed for 64-bit - * platforms. Even though the hash function was designed for 64-bit platforms, - * the function in reality works on 32-bit systems too, only with reduced - * performance. - * - * @anchor lavu_murmur3_seedinfo - * By design, MurmurHash3 requires a seed to operate. In response to this, - * libavutil provides two functions for hash initiation, one that requires a - * seed (av_murmur3_init_seeded()) and one that uses a fixed arbitrary integer - * as the seed, and therefore does not (av_murmur3_init()). - * - * To make hashes comparable, you should provide the same seed for all calls to - * this hash function -- if you are supplying one yourself, that is. - * - * @{ - */ - -/** - * Allocate an AVMurMur3 hash context. - * - * @return Uninitialized hash context or `NULL` in case of error - */ -struct AVMurMur3 *av_murmur3_alloc(void); - -/** - * Initialize or reinitialize an AVMurMur3 hash context with a seed. - * - * @param[out] c Hash context - * @param[in] seed Random seed - * - * @see av_murmur3_init() - * @see @ref lavu_murmur3_seedinfo "Detailed description" on a discussion of - * seeds for MurmurHash3. - */ -void av_murmur3_init_seeded(struct AVMurMur3 *c, uint64_t seed); - -/** - * Initialize or reinitialize an AVMurMur3 hash context. - * - * Equivalent to av_murmur3_init_seeded() with a built-in seed. - * - * @param[out] c Hash context - * - * @see av_murmur3_init_seeded() - * @see @ref lavu_murmur3_seedinfo "Detailed description" on a discussion of - * seeds for MurmurHash3. - */ -void av_murmur3_init(struct AVMurMur3 *c); - -/** - * Update hash context with new data. - * - * @param[out] c Hash context - * @param[in] src Input data to update hash with - * @param[in] len Number of bytes to read from `src` - */ -void av_murmur3_update(struct AVMurMur3 *c, const uint8_t *src, int len); - -/** - * Finish hashing and output digest value. - * - * @param[in,out] c Hash context - * @param[out] dst Buffer where output digest value is stored - */ -void av_murmur3_final(struct AVMurMur3 *c, uint8_t dst[16]); - -/** - * @} - */ - -#endif /* AVUTIL_MURMUR3_H */ diff --git a/Externals/ffmpeg/include/libavutil/opt.h b/Externals/ffmpeg/include/libavutil/opt.h deleted file mode 100644 index 9430b989e92b..000000000000 --- a/Externals/ffmpeg/include/libavutil/opt.h +++ /dev/null @@ -1,865 +0,0 @@ -/* - * AVOptions - * copyright (c) 2005 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_OPT_H -#define AVUTIL_OPT_H - -/** - * @file - * AVOptions - */ - -#include "rational.h" -#include "avutil.h" -#include "dict.h" -#include "log.h" -#include "pixfmt.h" -#include "samplefmt.h" -#include "version.h" - -/** - * @defgroup avoptions AVOptions - * @ingroup lavu_data - * @{ - * AVOptions provide a generic system to declare options on arbitrary structs - * ("objects"). An option can have a help text, a type and a range of possible - * values. Options may then be enumerated, read and written to. - * - * @section avoptions_implement Implementing AVOptions - * This section describes how to add AVOptions capabilities to a struct. - * - * All AVOptions-related information is stored in an AVClass. Therefore - * the first member of the struct should be a pointer to an AVClass describing it. - * The option field of the AVClass must be set to a NULL-terminated static array - * of AVOptions. Each AVOption must have a non-empty name, a type, a default - * value and for number-type AVOptions also a range of allowed values. It must - * also declare an offset in bytes from the start of the struct, where the field - * associated with this AVOption is located. Other fields in the AVOption struct - * should also be set when applicable, but are not required. - * - * The following example illustrates an AVOptions-enabled struct: - * @code - * typedef struct test_struct { - * const AVClass *class; - * int int_opt; - * char *str_opt; - * uint8_t *bin_opt; - * int bin_len; - * } test_struct; - * - * static const AVOption test_options[] = { - * { "test_int", "This is a test option of int type.", offsetof(test_struct, int_opt), - * AV_OPT_TYPE_INT, { .i64 = -1 }, INT_MIN, INT_MAX }, - * { "test_str", "This is a test option of string type.", offsetof(test_struct, str_opt), - * AV_OPT_TYPE_STRING }, - * { "test_bin", "This is a test option of binary type.", offsetof(test_struct, bin_opt), - * AV_OPT_TYPE_BINARY }, - * { NULL }, - * }; - * - * static const AVClass test_class = { - * .class_name = "test class", - * .item_name = av_default_item_name, - * .option = test_options, - * .version = LIBAVUTIL_VERSION_INT, - * }; - * @endcode - * - * Next, when allocating your struct, you must ensure that the AVClass pointer - * is set to the correct value. Then, av_opt_set_defaults() can be called to - * initialize defaults. After that the struct is ready to be used with the - * AVOptions API. - * - * When cleaning up, you may use the av_opt_free() function to automatically - * free all the allocated string and binary options. - * - * Continuing with the above example: - * - * @code - * test_struct *alloc_test_struct(void) - * { - * test_struct *ret = av_mallocz(sizeof(*ret)); - * ret->class = &test_class; - * av_opt_set_defaults(ret); - * return ret; - * } - * void free_test_struct(test_struct **foo) - * { - * av_opt_free(*foo); - * av_freep(foo); - * } - * @endcode - * - * @subsection avoptions_implement_nesting Nesting - * It may happen that an AVOptions-enabled struct contains another - * AVOptions-enabled struct as a member (e.g. AVCodecContext in - * libavcodec exports generic options, while its priv_data field exports - * codec-specific options). In such a case, it is possible to set up the - * parent struct to export a child's options. To do that, simply - * implement AVClass.child_next() and AVClass.child_class_next() in the - * parent struct's AVClass. - * Assuming that the test_struct from above now also contains a - * child_struct field: - * - * @code - * typedef struct child_struct { - * AVClass *class; - * int flags_opt; - * } child_struct; - * static const AVOption child_opts[] = { - * { "test_flags", "This is a test option of flags type.", - * offsetof(child_struct, flags_opt), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT_MIN, INT_MAX }, - * { NULL }, - * }; - * static const AVClass child_class = { - * .class_name = "child class", - * .item_name = av_default_item_name, - * .option = child_opts, - * .version = LIBAVUTIL_VERSION_INT, - * }; - * - * void *child_next(void *obj, void *prev) - * { - * test_struct *t = obj; - * if (!prev && t->child_struct) - * return t->child_struct; - * return NULL - * } - * const AVClass child_class_next(const AVClass *prev) - * { - * return prev ? NULL : &child_class; - * } - * @endcode - * Putting child_next() and child_class_next() as defined above into - * test_class will now make child_struct's options accessible through - * test_struct (again, proper setup as described above needs to be done on - * child_struct right after it is created). - * - * From the above example it might not be clear why both child_next() - * and child_class_next() are needed. The distinction is that child_next() - * iterates over actually existing objects, while child_class_next() - * iterates over all possible child classes. E.g. if an AVCodecContext - * was initialized to use a codec which has private options, then its - * child_next() will return AVCodecContext.priv_data and finish - * iterating. OTOH child_class_next() on AVCodecContext.av_class will - * iterate over all available codecs with private options. - * - * @subsection avoptions_implement_named_constants Named constants - * It is possible to create named constants for options. Simply set the unit - * field of the option the constants should apply to a string and - * create the constants themselves as options of type AV_OPT_TYPE_CONST - * with their unit field set to the same string. - * Their default_val field should contain the value of the named - * constant. - * For example, to add some named constants for the test_flags option - * above, put the following into the child_opts array: - * @code - * { "test_flags", "This is a test option of flags type.", - * offsetof(child_struct, flags_opt), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT_MIN, INT_MAX, "test_unit" }, - * { "flag1", "This is a flag with value 16", 0, AV_OPT_TYPE_CONST, { .i64 = 16 }, 0, 0, "test_unit" }, - * @endcode - * - * @section avoptions_use Using AVOptions - * This section deals with accessing options in an AVOptions-enabled struct. - * Such structs in FFmpeg are e.g. AVCodecContext in libavcodec or - * AVFormatContext in libavformat. - * - * @subsection avoptions_use_examine Examining AVOptions - * The basic functions for examining options are av_opt_next(), which iterates - * over all options defined for one object, and av_opt_find(), which searches - * for an option with the given name. - * - * The situation is more complicated with nesting. An AVOptions-enabled struct - * may have AVOptions-enabled children. Passing the AV_OPT_SEARCH_CHILDREN flag - * to av_opt_find() will make the function search children recursively. - * - * For enumerating there are basically two cases. The first is when you want to - * get all options that may potentially exist on the struct and its children - * (e.g. when constructing documentation). In that case you should call - * av_opt_child_class_next() recursively on the parent struct's AVClass. The - * second case is when you have an already initialized struct with all its - * children and you want to get all options that can be actually written or read - * from it. In that case you should call av_opt_child_next() recursively (and - * av_opt_next() on each result). - * - * @subsection avoptions_use_get_set Reading and writing AVOptions - * When setting options, you often have a string read directly from the - * user. In such a case, simply passing it to av_opt_set() is enough. For - * non-string type options, av_opt_set() will parse the string according to the - * option type. - * - * Similarly av_opt_get() will read any option type and convert it to a string - * which will be returned. Do not forget that the string is allocated, so you - * have to free it with av_free(). - * - * In some cases it may be more convenient to put all options into an - * AVDictionary and call av_opt_set_dict() on it. A specific case of this - * are the format/codec open functions in lavf/lavc which take a dictionary - * filled with option as a parameter. This makes it possible to set some options - * that cannot be set otherwise, since e.g. the input file format is not known - * before the file is actually opened. - */ - -enum AVOptionType{ - AV_OPT_TYPE_FLAGS, - AV_OPT_TYPE_INT, - AV_OPT_TYPE_INT64, - AV_OPT_TYPE_DOUBLE, - AV_OPT_TYPE_FLOAT, - AV_OPT_TYPE_STRING, - AV_OPT_TYPE_RATIONAL, - AV_OPT_TYPE_BINARY, ///< offset must point to a pointer immediately followed by an int for the length - AV_OPT_TYPE_DICT, - AV_OPT_TYPE_CONST = 128, - AV_OPT_TYPE_IMAGE_SIZE = MKBETAG('S','I','Z','E'), ///< offset must point to two consecutive integers - AV_OPT_TYPE_PIXEL_FMT = MKBETAG('P','F','M','T'), - AV_OPT_TYPE_SAMPLE_FMT = MKBETAG('S','F','M','T'), - AV_OPT_TYPE_VIDEO_RATE = MKBETAG('V','R','A','T'), ///< offset must point to AVRational - AV_OPT_TYPE_DURATION = MKBETAG('D','U','R',' '), - AV_OPT_TYPE_COLOR = MKBETAG('C','O','L','R'), - AV_OPT_TYPE_CHANNEL_LAYOUT = MKBETAG('C','H','L','A'), - AV_OPT_TYPE_BOOL = MKBETAG('B','O','O','L'), -}; - -/** - * AVOption - */ -typedef struct AVOption { - const char *name; - - /** - * short English help text - * @todo What about other languages? - */ - const char *help; - - /** - * The offset relative to the context structure where the option - * value is stored. It should be 0 for named constants. - */ - int offset; - enum AVOptionType type; - - /** - * the default value for scalar options - */ - union { - int64_t i64; - double dbl; - const char *str; - /* TODO those are unused now */ - AVRational q; - } default_val; - double min; ///< minimum valid value for the option - double max; ///< maximum valid value for the option - - int flags; -#define AV_OPT_FLAG_ENCODING_PARAM 1 ///< a generic parameter which can be set by the user for muxing or encoding -#define AV_OPT_FLAG_DECODING_PARAM 2 ///< a generic parameter which can be set by the user for demuxing or decoding -#if FF_API_OPT_TYPE_METADATA -#define AV_OPT_FLAG_METADATA 4 ///< some data extracted or inserted into the file like title, comment, ... -#endif -#define AV_OPT_FLAG_AUDIO_PARAM 8 -#define AV_OPT_FLAG_VIDEO_PARAM 16 -#define AV_OPT_FLAG_SUBTITLE_PARAM 32 -/** - * The option is intended for exporting values to the caller. - */ -#define AV_OPT_FLAG_EXPORT 64 -/** - * The option may not be set through the AVOptions API, only read. - * This flag only makes sense when AV_OPT_FLAG_EXPORT is also set. - */ -#define AV_OPT_FLAG_READONLY 128 -#define AV_OPT_FLAG_FILTERING_PARAM (1<<16) ///< a generic parameter which can be set by the user for filtering -//FIXME think about enc-audio, ... style flags - - /** - * The logical unit to which the option belongs. Non-constant - * options and corresponding named constants share the same - * unit. May be NULL. - */ - const char *unit; -} AVOption; - -/** - * A single allowed range of values, or a single allowed value. - */ -typedef struct AVOptionRange { - const char *str; - /** - * Value range. - * For string ranges this represents the min/max length. - * For dimensions this represents the min/max pixel count or width/height in multi-component case. - */ - double value_min, value_max; - /** - * Value's component range. - * For string this represents the unicode range for chars, 0-127 limits to ASCII. - */ - double component_min, component_max; - /** - * Range flag. - * If set to 1 the struct encodes a range, if set to 0 a single value. - */ - int is_range; -} AVOptionRange; - -/** - * List of AVOptionRange structs. - */ -typedef struct AVOptionRanges { - /** - * Array of option ranges. - * - * Most of option types use just one component. - * Following describes multi-component option types: - * - * AV_OPT_TYPE_IMAGE_SIZE: - * component index 0: range of pixel count (width * height). - * component index 1: range of width. - * component index 2: range of height. - * - * @note To obtain multi-component version of this structure, user must - * provide AV_OPT_MULTI_COMPONENT_RANGE to av_opt_query_ranges or - * av_opt_query_ranges_default function. - * - * Multi-component range can be read as in following example: - * - * @code - * int range_index, component_index; - * AVOptionRanges *ranges; - * AVOptionRange *range[3]; //may require more than 3 in the future. - * av_opt_query_ranges(&ranges, obj, key, AV_OPT_MULTI_COMPONENT_RANGE); - * for (range_index = 0; range_index < ranges->nb_ranges; range_index++) { - * for (component_index = 0; component_index < ranges->nb_components; component_index++) - * range[component_index] = ranges->range[ranges->nb_ranges * component_index + range_index]; - * //do something with range here. - * } - * av_opt_freep_ranges(&ranges); - * @endcode - */ - AVOptionRange **range; - /** - * Number of ranges per component. - */ - int nb_ranges; - /** - * Number of componentes. - */ - int nb_components; -} AVOptionRanges; - -/** - * Show the obj options. - * - * @param req_flags requested flags for the options to show. Show only the - * options for which it is opt->flags & req_flags. - * @param rej_flags rejected flags for the options to show. Show only the - * options for which it is !(opt->flags & req_flags). - * @param av_log_obj log context to use for showing the options - */ -int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags); - -/** - * Set the values of all AVOption fields to their default values. - * - * @param s an AVOption-enabled struct (its first member must be a pointer to AVClass) - */ -void av_opt_set_defaults(void *s); - -/** - * Set the values of all AVOption fields to their default values. Only these - * AVOption fields for which (opt->flags & mask) == flags will have their - * default applied to s. - * - * @param s an AVOption-enabled struct (its first member must be a pointer to AVClass) - * @param mask combination of AV_OPT_FLAG_* - * @param flags combination of AV_OPT_FLAG_* - */ -void av_opt_set_defaults2(void *s, int mask, int flags); - -/** - * Parse the key/value pairs list in opts. For each key/value pair - * found, stores the value in the field in ctx that is named like the - * key. ctx must be an AVClass context, storing is done using - * AVOptions. - * - * @param opts options string to parse, may be NULL - * @param key_val_sep a 0-terminated list of characters used to - * separate key from value - * @param pairs_sep a 0-terminated list of characters used to separate - * two pairs from each other - * @return the number of successfully set key/value pairs, or a negative - * value corresponding to an AVERROR code in case of error: - * AVERROR(EINVAL) if opts cannot be parsed, - * the error code issued by av_opt_set() if a key/value pair - * cannot be set - */ -int av_set_options_string(void *ctx, const char *opts, - const char *key_val_sep, const char *pairs_sep); - -/** - * Parse the key-value pairs list in opts. For each key=value pair found, - * set the value of the corresponding option in ctx. - * - * @param ctx the AVClass object to set options on - * @param opts the options string, key-value pairs separated by a - * delimiter - * @param shorthand a NULL-terminated array of options names for shorthand - * notation: if the first field in opts has no key part, - * the key is taken from the first element of shorthand; - * then again for the second, etc., until either opts is - * finished, shorthand is finished or a named option is - * found; after that, all options must be named - * @param key_val_sep a 0-terminated list of characters used to separate - * key from value, for example '=' - * @param pairs_sep a 0-terminated list of characters used to separate - * two pairs from each other, for example ':' or ',' - * @return the number of successfully set key=value pairs, or a negative - * value corresponding to an AVERROR code in case of error: - * AVERROR(EINVAL) if opts cannot be parsed, - * the error code issued by av_set_string3() if a key/value pair - * cannot be set - * - * Options names must use only the following characters: a-z A-Z 0-9 - . / _ - * Separators must use characters distinct from option names and from each - * other. - */ -int av_opt_set_from_string(void *ctx, const char *opts, - const char *const *shorthand, - const char *key_val_sep, const char *pairs_sep); -/** - * Free all allocated objects in obj. - */ -void av_opt_free(void *obj); - -/** - * Check whether a particular flag is set in a flags field. - * - * @param field_name the name of the flag field option - * @param flag_name the name of the flag to check - * @return non-zero if the flag is set, zero if the flag isn't set, - * isn't of the right type, or the flags field doesn't exist. - */ -int av_opt_flag_is_set(void *obj, const char *field_name, const char *flag_name); - -/** - * Set all the options from a given dictionary on an object. - * - * @param obj a struct whose first element is a pointer to AVClass - * @param options options to process. This dictionary will be freed and replaced - * by a new one containing all options not found in obj. - * Of course this new dictionary needs to be freed by caller - * with av_dict_free(). - * - * @return 0 on success, a negative AVERROR if some option was found in obj, - * but could not be set. - * - * @see av_dict_copy() - */ -int av_opt_set_dict(void *obj, struct AVDictionary **options); - - -/** - * Set all the options from a given dictionary on an object. - * - * @param obj a struct whose first element is a pointer to AVClass - * @param options options to process. This dictionary will be freed and replaced - * by a new one containing all options not found in obj. - * Of course this new dictionary needs to be freed by caller - * with av_dict_free(). - * @param search_flags A combination of AV_OPT_SEARCH_*. - * - * @return 0 on success, a negative AVERROR if some option was found in obj, - * but could not be set. - * - * @see av_dict_copy() - */ -int av_opt_set_dict2(void *obj, struct AVDictionary **options, int search_flags); - -/** - * Extract a key-value pair from the beginning of a string. - * - * @param ropts pointer to the options string, will be updated to - * point to the rest of the string (one of the pairs_sep - * or the final NUL) - * @param key_val_sep a 0-terminated list of characters used to separate - * key from value, for example '=' - * @param pairs_sep a 0-terminated list of characters used to separate - * two pairs from each other, for example ':' or ',' - * @param flags flags; see the AV_OPT_FLAG_* values below - * @param rkey parsed key; must be freed using av_free() - * @param rval parsed value; must be freed using av_free() - * - * @return >=0 for success, or a negative value corresponding to an - * AVERROR code in case of error; in particular: - * AVERROR(EINVAL) if no key is present - * - */ -int av_opt_get_key_value(const char **ropts, - const char *key_val_sep, const char *pairs_sep, - unsigned flags, - char **rkey, char **rval); - -enum { - - /** - * Accept to parse a value without a key; the key will then be returned - * as NULL. - */ - AV_OPT_FLAG_IMPLICIT_KEY = 1, -}; - -/** - * @defgroup opt_eval_funcs Evaluating option strings - * @{ - * This group of functions can be used to evaluate option strings - * and get numbers out of them. They do the same thing as av_opt_set(), - * except the result is written into the caller-supplied pointer. - * - * @param obj a struct whose first element is a pointer to AVClass. - * @param o an option for which the string is to be evaluated. - * @param val string to be evaluated. - * @param *_out value of the string will be written here. - * - * @return 0 on success, a negative number on failure. - */ -int av_opt_eval_flags (void *obj, const AVOption *o, const char *val, int *flags_out); -int av_opt_eval_int (void *obj, const AVOption *o, const char *val, int *int_out); -int av_opt_eval_int64 (void *obj, const AVOption *o, const char *val, int64_t *int64_out); -int av_opt_eval_float (void *obj, const AVOption *o, const char *val, float *float_out); -int av_opt_eval_double(void *obj, const AVOption *o, const char *val, double *double_out); -int av_opt_eval_q (void *obj, const AVOption *o, const char *val, AVRational *q_out); -/** - * @} - */ - -#define AV_OPT_SEARCH_CHILDREN (1 << 0) /**< Search in possible children of the - given object first. */ -/** - * The obj passed to av_opt_find() is fake -- only a double pointer to AVClass - * instead of a required pointer to a struct containing AVClass. This is - * useful for searching for options without needing to allocate the corresponding - * object. - */ -#define AV_OPT_SEARCH_FAKE_OBJ (1 << 1) - -/** - * In av_opt_get, return NULL if the option has a pointer type and is set to NULL, - * rather than returning an empty string. - */ -#define AV_OPT_ALLOW_NULL (1 << 2) - -/** - * Allows av_opt_query_ranges and av_opt_query_ranges_default to return more than - * one component for certain option types. - * @see AVOptionRanges for details. - */ -#define AV_OPT_MULTI_COMPONENT_RANGE (1 << 12) - -/** - * Look for an option in an object. Consider only options which - * have all the specified flags set. - * - * @param[in] obj A pointer to a struct whose first element is a - * pointer to an AVClass. - * Alternatively a double pointer to an AVClass, if - * AV_OPT_SEARCH_FAKE_OBJ search flag is set. - * @param[in] name The name of the option to look for. - * @param[in] unit When searching for named constants, name of the unit - * it belongs to. - * @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG). - * @param search_flags A combination of AV_OPT_SEARCH_*. - * - * @return A pointer to the option found, or NULL if no option - * was found. - * - * @note Options found with AV_OPT_SEARCH_CHILDREN flag may not be settable - * directly with av_opt_set(). Use special calls which take an options - * AVDictionary (e.g. avformat_open_input()) to set options found with this - * flag. - */ -const AVOption *av_opt_find(void *obj, const char *name, const char *unit, - int opt_flags, int search_flags); - -/** - * Look for an option in an object. Consider only options which - * have all the specified flags set. - * - * @param[in] obj A pointer to a struct whose first element is a - * pointer to an AVClass. - * Alternatively a double pointer to an AVClass, if - * AV_OPT_SEARCH_FAKE_OBJ search flag is set. - * @param[in] name The name of the option to look for. - * @param[in] unit When searching for named constants, name of the unit - * it belongs to. - * @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG). - * @param search_flags A combination of AV_OPT_SEARCH_*. - * @param[out] target_obj if non-NULL, an object to which the option belongs will be - * written here. It may be different from obj if AV_OPT_SEARCH_CHILDREN is present - * in search_flags. This parameter is ignored if search_flags contain - * AV_OPT_SEARCH_FAKE_OBJ. - * - * @return A pointer to the option found, or NULL if no option - * was found. - */ -const AVOption *av_opt_find2(void *obj, const char *name, const char *unit, - int opt_flags, int search_flags, void **target_obj); - -/** - * Iterate over all AVOptions belonging to obj. - * - * @param obj an AVOptions-enabled struct or a double pointer to an - * AVClass describing it. - * @param prev result of the previous call to av_opt_next() on this object - * or NULL - * @return next AVOption or NULL - */ -const AVOption *av_opt_next(const void *obj, const AVOption *prev); - -/** - * Iterate over AVOptions-enabled children of obj. - * - * @param prev result of a previous call to this function or NULL - * @return next AVOptions-enabled child or NULL - */ -void *av_opt_child_next(void *obj, void *prev); - -/** - * Iterate over potential AVOptions-enabled children of parent. - * - * @param prev result of a previous call to this function or NULL - * @return AVClass corresponding to next potential child or NULL - */ -const AVClass *av_opt_child_class_next(const AVClass *parent, const AVClass *prev); - -/** - * @defgroup opt_set_funcs Option setting functions - * @{ - * Those functions set the field of obj with the given name to value. - * - * @param[in] obj A struct whose first element is a pointer to an AVClass. - * @param[in] name the name of the field to set - * @param[in] val The value to set. In case of av_opt_set() if the field is not - * of a string type, then the given string is parsed. - * SI postfixes and some named scalars are supported. - * If the field is of a numeric type, it has to be a numeric or named - * scalar. Behavior with more than one scalar and +- infix operators - * is undefined. - * If the field is of a flags type, it has to be a sequence of numeric - * scalars or named flags separated by '+' or '-'. Prefixing a flag - * with '+' causes it to be set without affecting the other flags; - * similarly, '-' unsets a flag. - * @param search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN - * is passed here, then the option may be set on a child of obj. - * - * @return 0 if the value has been set, or an AVERROR code in case of - * error: - * AVERROR_OPTION_NOT_FOUND if no matching option exists - * AVERROR(ERANGE) if the value is out of range - * AVERROR(EINVAL) if the value is not valid - */ -int av_opt_set (void *obj, const char *name, const char *val, int search_flags); -int av_opt_set_int (void *obj, const char *name, int64_t val, int search_flags); -int av_opt_set_double (void *obj, const char *name, double val, int search_flags); -int av_opt_set_q (void *obj, const char *name, AVRational val, int search_flags); -int av_opt_set_bin (void *obj, const char *name, const uint8_t *val, int size, int search_flags); -int av_opt_set_image_size(void *obj, const char *name, int w, int h, int search_flags); -int av_opt_set_pixel_fmt (void *obj, const char *name, enum AVPixelFormat fmt, int search_flags); -int av_opt_set_sample_fmt(void *obj, const char *name, enum AVSampleFormat fmt, int search_flags); -int av_opt_set_video_rate(void *obj, const char *name, AVRational val, int search_flags); -int av_opt_set_channel_layout(void *obj, const char *name, int64_t ch_layout, int search_flags); -/** - * @note Any old dictionary present is discarded and replaced with a copy of the new one. The - * caller still owns val is and responsible for freeing it. - */ -int av_opt_set_dict_val(void *obj, const char *name, const AVDictionary *val, int search_flags); - -/** - * Set a binary option to an integer list. - * - * @param obj AVClass object to set options on - * @param name name of the binary option - * @param val pointer to an integer list (must have the correct type with - * regard to the contents of the list) - * @param term list terminator (usually 0 or -1) - * @param flags search flags - */ -#define av_opt_set_int_list(obj, name, val, term, flags) \ - (av_int_list_length(val, term) > INT_MAX / sizeof(*(val)) ? \ - AVERROR(EINVAL) : \ - av_opt_set_bin(obj, name, (const uint8_t *)(val), \ - av_int_list_length(val, term) * sizeof(*(val)), flags)) - -/** - * @} - */ - -/** - * @defgroup opt_get_funcs Option getting functions - * @{ - * Those functions get a value of the option with the given name from an object. - * - * @param[in] obj a struct whose first element is a pointer to an AVClass. - * @param[in] name name of the option to get. - * @param[in] search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN - * is passed here, then the option may be found in a child of obj. - * @param[out] out_val value of the option will be written here - * @return >=0 on success, a negative error code otherwise - */ -/** - * @note the returned string will be av_malloc()ed and must be av_free()ed by the caller - * - * @note if AV_OPT_ALLOW_NULL is set in search_flags in av_opt_get, and the option has - * AV_OPT_TYPE_STRING or AV_OPT_TYPE_BINARY and is set to NULL, *out_val will be set - * to NULL instead of an allocated empty string. - */ -int av_opt_get (void *obj, const char *name, int search_flags, uint8_t **out_val); -int av_opt_get_int (void *obj, const char *name, int search_flags, int64_t *out_val); -int av_opt_get_double (void *obj, const char *name, int search_flags, double *out_val); -int av_opt_get_q (void *obj, const char *name, int search_flags, AVRational *out_val); -int av_opt_get_image_size(void *obj, const char *name, int search_flags, int *w_out, int *h_out); -int av_opt_get_pixel_fmt (void *obj, const char *name, int search_flags, enum AVPixelFormat *out_fmt); -int av_opt_get_sample_fmt(void *obj, const char *name, int search_flags, enum AVSampleFormat *out_fmt); -int av_opt_get_video_rate(void *obj, const char *name, int search_flags, AVRational *out_val); -int av_opt_get_channel_layout(void *obj, const char *name, int search_flags, int64_t *ch_layout); -/** - * @param[out] out_val The returned dictionary is a copy of the actual value and must - * be freed with av_dict_free() by the caller - */ -int av_opt_get_dict_val(void *obj, const char *name, int search_flags, AVDictionary **out_val); -/** - * @} - */ -/** - * Gets a pointer to the requested field in a struct. - * This function allows accessing a struct even when its fields are moved or - * renamed since the application making the access has been compiled, - * - * @returns a pointer to the field, it can be cast to the correct type and read - * or written to. - */ -void *av_opt_ptr(const AVClass *avclass, void *obj, const char *name); - -/** - * Free an AVOptionRanges struct and set it to NULL. - */ -void av_opt_freep_ranges(AVOptionRanges **ranges); - -/** - * Get a list of allowed ranges for the given option. - * - * The returned list may depend on other fields in obj like for example profile. - * - * @param flags is a bitmask of flags, undefined flags should not be set and should be ignored - * AV_OPT_SEARCH_FAKE_OBJ indicates that the obj is a double pointer to a AVClass instead of a full instance - * AV_OPT_MULTI_COMPONENT_RANGE indicates that function may return more than one component, @see AVOptionRanges - * - * The result must be freed with av_opt_freep_ranges. - * - * @return number of compontents returned on success, a negative errro code otherwise - */ -int av_opt_query_ranges(AVOptionRanges **, void *obj, const char *key, int flags); - -/** - * Copy options from src object into dest object. - * - * Options that require memory allocation (e.g. string or binary) are malloc'ed in dest object. - * Original memory allocated for such options is freed unless both src and dest options points to the same memory. - * - * @param dest Object to copy from - * @param src Object to copy into - * @return 0 on success, negative on error - */ -int av_opt_copy(void *dest, const void *src); - -/** - * Get a default list of allowed ranges for the given option. - * - * This list is constructed without using the AVClass.query_ranges() callback - * and can be used as fallback from within the callback. - * - * @param flags is a bitmask of flags, undefined flags should not be set and should be ignored - * AV_OPT_SEARCH_FAKE_OBJ indicates that the obj is a double pointer to a AVClass instead of a full instance - * AV_OPT_MULTI_COMPONENT_RANGE indicates that function may return more than one component, @see AVOptionRanges - * - * The result must be freed with av_opt_free_ranges. - * - * @return number of compontents returned on success, a negative errro code otherwise - */ -int av_opt_query_ranges_default(AVOptionRanges **, void *obj, const char *key, int flags); - -/** - * Check if given option is set to its default value. - * - * Options o must belong to the obj. This function must not be called to check child's options state. - * @see av_opt_is_set_to_default_by_name(). - * - * @param obj AVClass object to check option on - * @param o option to be checked - * @return >0 when option is set to its default, - * 0 when option is not set its default, - * <0 on error - */ -int av_opt_is_set_to_default(void *obj, const AVOption *o); - -/** - * Check if given option is set to its default value. - * - * @param obj AVClass object to check option on - * @param name option name - * @param search_flags combination of AV_OPT_SEARCH_* - * @return >0 when option is set to its default, - * 0 when option is not set its default, - * <0 on error - */ -int av_opt_is_set_to_default_by_name(void *obj, const char *name, int search_flags); - - -#define AV_OPT_SERIALIZE_SKIP_DEFAULTS 0x00000001 ///< Serialize options that are not set to default values only. -#define AV_OPT_SERIALIZE_OPT_FLAGS_EXACT 0x00000002 ///< Serialize options that exactly match opt_flags only. - -/** - * Serialize object's options. - * - * Create a string containing object's serialized options. - * Such string may be passed back to av_opt_set_from_string() in order to restore option values. - * A key/value or pairs separator occurring in the serialized value or - * name string are escaped through the av_escape() function. - * - * @param[in] obj AVClass object to serialize - * @param[in] opt_flags serialize options with all the specified flags set (AV_OPT_FLAG) - * @param[in] flags combination of AV_OPT_SERIALIZE_* flags - * @param[out] buffer Pointer to buffer that will be allocated with string containg serialized options. - * Buffer must be freed by the caller when is no longer needed. - * @param[in] key_val_sep character used to separate key from value - * @param[in] pairs_sep character used to separate two pairs from each other - * @return >= 0 on success, negative on error - * @warning Separators cannot be neither '\\' nor '\0'. They also cannot be the same. - */ -int av_opt_serialize(void *obj, int opt_flags, int flags, char **buffer, - const char key_val_sep, const char pairs_sep); -/** - * @} - */ - -#endif /* AVUTIL_OPT_H */ diff --git a/Externals/ffmpeg/include/libavutil/parseutils.h b/Externals/ffmpeg/include/libavutil/parseutils.h deleted file mode 100644 index e66d24b76e55..000000000000 --- a/Externals/ffmpeg/include/libavutil/parseutils.h +++ /dev/null @@ -1,193 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_PARSEUTILS_H -#define AVUTIL_PARSEUTILS_H - -#include - -#include "rational.h" - -/** - * @file - * misc parsing utilities - */ - -/** - * Parse str and store the parsed ratio in q. - * - * Note that a ratio with infinite (1/0) or negative value is - * considered valid, so you should check on the returned value if you - * want to exclude those values. - * - * The undefined value can be expressed using the "0:0" string. - * - * @param[in,out] q pointer to the AVRational which will contain the ratio - * @param[in] str the string to parse: it has to be a string in the format - * num:den, a float number or an expression - * @param[in] max the maximum allowed numerator and denominator - * @param[in] log_offset log level offset which is applied to the log - * level of log_ctx - * @param[in] log_ctx parent logging context - * @return >= 0 on success, a negative error code otherwise - */ -int av_parse_ratio(AVRational *q, const char *str, int max, - int log_offset, void *log_ctx); - -#define av_parse_ratio_quiet(rate, str, max) \ - av_parse_ratio(rate, str, max, AV_LOG_MAX_OFFSET, NULL) - -/** - * Parse str and put in width_ptr and height_ptr the detected values. - * - * @param[in,out] width_ptr pointer to the variable which will contain the detected - * width value - * @param[in,out] height_ptr pointer to the variable which will contain the detected - * height value - * @param[in] str the string to parse: it has to be a string in the format - * width x height or a valid video size abbreviation. - * @return >= 0 on success, a negative error code otherwise - */ -int av_parse_video_size(int *width_ptr, int *height_ptr, const char *str); - -/** - * Parse str and store the detected values in *rate. - * - * @param[in,out] rate pointer to the AVRational which will contain the detected - * frame rate - * @param[in] str the string to parse: it has to be a string in the format - * rate_num / rate_den, a float number or a valid video rate abbreviation - * @return >= 0 on success, a negative error code otherwise - */ -int av_parse_video_rate(AVRational *rate, const char *str); - -/** - * Put the RGBA values that correspond to color_string in rgba_color. - * - * @param color_string a string specifying a color. It can be the name of - * a color (case insensitive match) or a [0x|#]RRGGBB[AA] sequence, - * possibly followed by "@" and a string representing the alpha - * component. - * The alpha component may be a string composed by "0x" followed by an - * hexadecimal number or a decimal number between 0.0 and 1.0, which - * represents the opacity value (0x00/0.0 means completely transparent, - * 0xff/1.0 completely opaque). - * If the alpha component is not specified then 0xff is assumed. - * The string "random" will result in a random color. - * @param slen length of the initial part of color_string containing the - * color. It can be set to -1 if color_string is a null terminated string - * containing nothing else than the color. - * @return >= 0 in case of success, a negative value in case of - * failure (for example if color_string cannot be parsed). - */ -int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen, - void *log_ctx); - -/** - * Get the name of a color from the internal table of hard-coded named - * colors. - * - * This function is meant to enumerate the color names recognized by - * av_parse_color(). - * - * @param color_idx index of the requested color, starting from 0 - * @param rgbp if not NULL, will point to a 3-elements array with the color value in RGB - * @return the color name string or NULL if color_idx is not in the array - */ -const char *av_get_known_color_name(int color_idx, const uint8_t **rgb); - -/** - * Parse timestr and return in *time a corresponding number of - * microseconds. - * - * @param timeval puts here the number of microseconds corresponding - * to the string in timestr. If the string represents a duration, it - * is the number of microseconds contained in the time interval. If - * the string is a date, is the number of microseconds since 1st of - * January, 1970 up to the time of the parsed date. If timestr cannot - * be successfully parsed, set *time to INT64_MIN. - - * @param timestr a string representing a date or a duration. - * - If a date the syntax is: - * @code - * [{YYYY-MM-DD|YYYYMMDD}[T|t| ]]{{HH:MM:SS[.m...]]]}|{HHMMSS[.m...]]]}}[Z] - * now - * @endcode - * If the value is "now" it takes the current time. - * Time is local time unless Z is appended, in which case it is - * interpreted as UTC. - * If the year-month-day part is not specified it takes the current - * year-month-day. - * - If a duration the syntax is: - * @code - * [-][HH:]MM:SS[.m...] - * [-]S+[.m...] - * @endcode - * @param duration flag which tells how to interpret timestr, if not - * zero timestr is interpreted as a duration, otherwise as a date - * @return >= 0 in case of success, a negative value corresponding to an - * AVERROR code otherwise - */ -int av_parse_time(int64_t *timeval, const char *timestr, int duration); - -/** - * Attempt to find a specific tag in a URL. - * - * syntax: '?tag1=val1&tag2=val2...'. Little URL decoding is done. - * Return 1 if found. - */ -int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info); - -/** - * Simplified version of strptime - * - * Parse the input string p according to the format string fmt and - * store its results in the structure dt. - * This implementation supports only a subset of the formats supported - * by the standard strptime(). - * - * The supported input field descriptors are listed below. - * - %H: the hour as a decimal number, using a 24-hour clock, in the - * range '00' through '23' - * - %J: hours as a decimal number, in the range '0' through INT_MAX - * - %M: the minute as a decimal number, using a 24-hour clock, in the - * range '00' through '59' - * - %S: the second as a decimal number, using a 24-hour clock, in the - * range '00' through '59' - * - %Y: the year as a decimal number, using the Gregorian calendar - * - %m: the month as a decimal number, in the range '1' through '12' - * - %d: the day of the month as a decimal number, in the range '1' - * through '31' - * - %T: alias for '%H:%M:%S' - * - %%: a literal '%' - * - * @return a pointer to the first character not processed in this function - * call. In case the input string contains more characters than - * required by the format string the return value points right after - * the last consumed input character. In case the whole input string - * is consumed the return value points to the null byte at the end of - * the string. On failure NULL is returned. - */ -char *av_small_strptime(const char *p, const char *fmt, struct tm *dt); - -/** - * Convert the decomposed UTC time in tm to a time_t value. - */ -time_t av_timegm(struct tm *tm); - -#endif /* AVUTIL_PARSEUTILS_H */ diff --git a/Externals/ffmpeg/include/libavutil/pixdesc.h b/Externals/ffmpeg/include/libavutil/pixdesc.h deleted file mode 100644 index a8ad588913cf..000000000000 --- a/Externals/ffmpeg/include/libavutil/pixdesc.h +++ /dev/null @@ -1,394 +0,0 @@ -/* - * pixel format descriptor - * Copyright (c) 2009 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_PIXDESC_H -#define AVUTIL_PIXDESC_H - -#include - -#include "attributes.h" -#include "pixfmt.h" -#include "version.h" - -typedef struct AVComponentDescriptor { - /** - * Which of the 4 planes contains the component. - */ - int plane; - - /** - * Number of elements between 2 horizontally consecutive pixels. - * Elements are bits for bitstream formats, bytes otherwise. - */ - int step; - - /** - * Number of elements before the component of the first pixel. - * Elements are bits for bitstream formats, bytes otherwise. - */ - int offset; - - /** - * Number of least significant bits that must be shifted away - * to get the value. - */ - int shift; - - /** - * Number of bits in the component. - */ - int depth; - -#if FF_API_PLUS1_MINUS1 - /** deprecated, use step instead */ - attribute_deprecated int step_minus1; - - /** deprecated, use depth instead */ - attribute_deprecated int depth_minus1; - - /** deprecated, use offset instead */ - attribute_deprecated int offset_plus1; -#endif -} AVComponentDescriptor; - -/** - * Descriptor that unambiguously describes how the bits of a pixel are - * stored in the up to 4 data planes of an image. It also stores the - * subsampling factors and number of components. - * - * @note This is separate of the colorspace (RGB, YCbCr, YPbPr, JPEG-style YUV - * and all the YUV variants) AVPixFmtDescriptor just stores how values - * are stored not what these values represent. - */ -typedef struct AVPixFmtDescriptor { - const char *name; - uint8_t nb_components; ///< The number of components each pixel has, (1-4) - - /** - * Amount to shift the luma width right to find the chroma width. - * For YV12 this is 1 for example. - * chroma_width = AV_CEIL_RSHIFT(luma_width, log2_chroma_w) - * The note above is needed to ensure rounding up. - * This value only refers to the chroma components. - */ - uint8_t log2_chroma_w; - - /** - * Amount to shift the luma height right to find the chroma height. - * For YV12 this is 1 for example. - * chroma_height= AV_CEIL_RSHIFT(luma_height, log2_chroma_h) - * The note above is needed to ensure rounding up. - * This value only refers to the chroma components. - */ - uint8_t log2_chroma_h; - - /** - * Combination of AV_PIX_FMT_FLAG_... flags. - */ - uint64_t flags; - - /** - * Parameters that describe how pixels are packed. - * If the format has 1 or 2 components, then luma is 0. - * If the format has 3 or 4 components: - * if the RGB flag is set then 0 is red, 1 is green and 2 is blue; - * otherwise 0 is luma, 1 is chroma-U and 2 is chroma-V. - * - * If present, the Alpha channel is always the last component. - */ - AVComponentDescriptor comp[4]; - - /** - * Alternative comma-separated names. - */ - const char *alias; -} AVPixFmtDescriptor; - -/** - * Pixel format is big-endian. - */ -#define AV_PIX_FMT_FLAG_BE (1 << 0) -/** - * Pixel format has a palette in data[1], values are indexes in this palette. - */ -#define AV_PIX_FMT_FLAG_PAL (1 << 1) -/** - * All values of a component are bit-wise packed end to end. - */ -#define AV_PIX_FMT_FLAG_BITSTREAM (1 << 2) -/** - * Pixel format is an HW accelerated format. - */ -#define AV_PIX_FMT_FLAG_HWACCEL (1 << 3) -/** - * At least one pixel component is not in the first data plane. - */ -#define AV_PIX_FMT_FLAG_PLANAR (1 << 4) -/** - * The pixel format contains RGB-like data (as opposed to YUV/grayscale). - */ -#define AV_PIX_FMT_FLAG_RGB (1 << 5) - -/** - * The pixel format is "pseudo-paletted". This means that it contains a - * fixed palette in the 2nd plane but the palette is fixed/constant for each - * PIX_FMT. This allows interpreting the data as if it was PAL8, which can - * in some cases be simpler. Or the data can be interpreted purely based on - * the pixel format without using the palette. - * An example of a pseudo-paletted format is AV_PIX_FMT_GRAY8 - */ -#define AV_PIX_FMT_FLAG_PSEUDOPAL (1 << 6) - -/** - * The pixel format has an alpha channel. This is set on all formats that - * support alpha in some way. The exception is AV_PIX_FMT_PAL8, which can - * carry alpha as part of the palette. Details are explained in the - * AVPixelFormat enum, and are also encoded in the corresponding - * AVPixFmtDescriptor. - * - * The alpha is always straight, never pre-multiplied. - * - * If a codec or a filter does not support alpha, it should set all alpha to - * opaque, or use the equivalent pixel formats without alpha component, e.g. - * AV_PIX_FMT_RGB0 (or AV_PIX_FMT_RGB24 etc.) instead of AV_PIX_FMT_RGBA. - */ -#define AV_PIX_FMT_FLAG_ALPHA (1 << 7) - -/** - * Return the number of bits per pixel used by the pixel format - * described by pixdesc. Note that this is not the same as the number - * of bits per sample. - * - * The returned number of bits refers to the number of bits actually - * used for storing the pixel information, that is padding bits are - * not counted. - */ -int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc); - -/** - * Return the number of bits per pixel for the pixel format - * described by pixdesc, including any padding or unused bits. - */ -int av_get_padded_bits_per_pixel(const AVPixFmtDescriptor *pixdesc); - -/** - * @return a pixel format descriptor for provided pixel format or NULL if - * this pixel format is unknown. - */ -const AVPixFmtDescriptor *av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt); - -/** - * Iterate over all pixel format descriptors known to libavutil. - * - * @param prev previous descriptor. NULL to get the first descriptor. - * - * @return next descriptor or NULL after the last descriptor - */ -const AVPixFmtDescriptor *av_pix_fmt_desc_next(const AVPixFmtDescriptor *prev); - -/** - * @return an AVPixelFormat id described by desc, or AV_PIX_FMT_NONE if desc - * is not a valid pointer to a pixel format descriptor. - */ -enum AVPixelFormat av_pix_fmt_desc_get_id(const AVPixFmtDescriptor *desc); - -/** - * Utility function to access log2_chroma_w log2_chroma_h from - * the pixel format AVPixFmtDescriptor. - * - * See av_get_chroma_sub_sample() for a function that asserts a - * valid pixel format instead of returning an error code. - * Its recommended that you use avcodec_get_chroma_sub_sample unless - * you do check the return code! - * - * @param[in] pix_fmt the pixel format - * @param[out] h_shift store log2_chroma_w (horizontal/width shift) - * @param[out] v_shift store log2_chroma_h (vertical/height shift) - * - * @return 0 on success, AVERROR(ENOSYS) on invalid or unknown pixel format - */ -int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, - int *h_shift, int *v_shift); - -/** - * @return number of planes in pix_fmt, a negative AVERROR if pix_fmt is not a - * valid pixel format. - */ -int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt); - -/** - * @return the name for provided color range or NULL if unknown. - */ -const char *av_color_range_name(enum AVColorRange range); - -/** - * @return the name for provided color primaries or NULL if unknown. - */ -const char *av_color_primaries_name(enum AVColorPrimaries primaries); - -/** - * @return the name for provided color transfer or NULL if unknown. - */ -const char *av_color_transfer_name(enum AVColorTransferCharacteristic transfer); - -/** - * @return the name for provided color space or NULL if unknown. - */ -const char *av_color_space_name(enum AVColorSpace space); - -/** - * @return the name for provided chroma location or NULL if unknown. - */ -const char *av_chroma_location_name(enum AVChromaLocation location); - -/** - * Return the pixel format corresponding to name. - * - * If there is no pixel format with name name, then looks for a - * pixel format with the name corresponding to the native endian - * format of name. - * For example in a little-endian system, first looks for "gray16", - * then for "gray16le". - * - * Finally if no pixel format has been found, returns AV_PIX_FMT_NONE. - */ -enum AVPixelFormat av_get_pix_fmt(const char *name); - -/** - * Return the short name for a pixel format, NULL in case pix_fmt is - * unknown. - * - * @see av_get_pix_fmt(), av_get_pix_fmt_string() - */ -const char *av_get_pix_fmt_name(enum AVPixelFormat pix_fmt); - -/** - * Print in buf the string corresponding to the pixel format with - * number pix_fmt, or a header if pix_fmt is negative. - * - * @param buf the buffer where to write the string - * @param buf_size the size of buf - * @param pix_fmt the number of the pixel format to print the - * corresponding info string, or a negative value to print the - * corresponding header. - */ -char *av_get_pix_fmt_string(char *buf, int buf_size, - enum AVPixelFormat pix_fmt); - -/** - * Read a line from an image, and write the values of the - * pixel format component c to dst. - * - * @param data the array containing the pointers to the planes of the image - * @param linesize the array containing the linesizes of the image - * @param desc the pixel format descriptor for the image - * @param x the horizontal coordinate of the first pixel to read - * @param y the vertical coordinate of the first pixel to read - * @param w the width of the line to read, that is the number of - * values to write to dst - * @param read_pal_component if not zero and the format is a paletted - * format writes the values corresponding to the palette - * component c in data[1] to dst, rather than the palette indexes in - * data[0]. The behavior is undefined if the format is not paletted. - */ -void av_read_image_line(uint16_t *dst, const uint8_t *data[4], - const int linesize[4], const AVPixFmtDescriptor *desc, - int x, int y, int c, int w, int read_pal_component); - -/** - * Write the values from src to the pixel format component c of an - * image line. - * - * @param src array containing the values to write - * @param data the array containing the pointers to the planes of the - * image to write into. It is supposed to be zeroed. - * @param linesize the array containing the linesizes of the image - * @param desc the pixel format descriptor for the image - * @param x the horizontal coordinate of the first pixel to write - * @param y the vertical coordinate of the first pixel to write - * @param w the width of the line to write, that is the number of - * values to write to the image line - */ -void av_write_image_line(const uint16_t *src, uint8_t *data[4], - const int linesize[4], const AVPixFmtDescriptor *desc, - int x, int y, int c, int w); - -/** - * Utility function to swap the endianness of a pixel format. - * - * @param[in] pix_fmt the pixel format - * - * @return pixel format with swapped endianness if it exists, - * otherwise AV_PIX_FMT_NONE - */ -enum AVPixelFormat av_pix_fmt_swap_endianness(enum AVPixelFormat pix_fmt); - -#define FF_LOSS_RESOLUTION 0x0001 /**< loss due to resolution change */ -#define FF_LOSS_DEPTH 0x0002 /**< loss due to color depth change */ -#define FF_LOSS_COLORSPACE 0x0004 /**< loss due to color space conversion */ -#define FF_LOSS_ALPHA 0x0008 /**< loss of alpha bits */ -#define FF_LOSS_COLORQUANT 0x0010 /**< loss due to color quantization */ -#define FF_LOSS_CHROMA 0x0020 /**< loss of chroma (e.g. RGB to gray conversion) */ - -/** - * Compute what kind of losses will occur when converting from one specific - * pixel format to another. - * When converting from one pixel format to another, information loss may occur. - * For example, when converting from RGB24 to GRAY, the color information will - * be lost. Similarly, other losses occur when converting from some formats to - * other formats. These losses can involve loss of chroma, but also loss of - * resolution, loss of color depth, loss due to the color space conversion, loss - * of the alpha bits or loss due to color quantization. - * av_get_fix_fmt_loss() informs you about the various types of losses - * which will occur when converting from one pixel format to another. - * - * @param[in] dst_pix_fmt destination pixel format - * @param[in] src_pix_fmt source pixel format - * @param[in] has_alpha Whether the source pixel format alpha channel is used. - * @return Combination of flags informing you what kind of losses will occur - * (maximum loss for an invalid dst_pix_fmt). - */ -int av_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, - enum AVPixelFormat src_pix_fmt, - int has_alpha); - -/** - * Compute what kind of losses will occur when converting from one specific - * pixel format to another. - * When converting from one pixel format to another, information loss may occur. - * For example, when converting from RGB24 to GRAY, the color information will - * be lost. Similarly, other losses occur when converting from some formats to - * other formats. These losses can involve loss of chroma, but also loss of - * resolution, loss of color depth, loss due to the color space conversion, loss - * of the alpha bits or loss due to color quantization. - * av_get_fix_fmt_loss() informs you about the various types of losses - * which will occur when converting from one pixel format to another. - * - * @param[in] dst_pix_fmt destination pixel format - * @param[in] src_pix_fmt source pixel format - * @param[in] has_alpha Whether the source pixel format alpha channel is used. - * @return Combination of flags informing you what kind of losses will occur - * (maximum loss for an invalid dst_pix_fmt). - */ -enum AVPixelFormat av_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, - enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr); - -#endif /* AVUTIL_PIXDESC_H */ diff --git a/Externals/ffmpeg/include/libavutil/pixelutils.h b/Externals/ffmpeg/include/libavutil/pixelutils.h deleted file mode 100644 index a8dbc157e105..000000000000 --- a/Externals/ffmpeg/include/libavutil/pixelutils.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_PIXELUTILS_H -#define AVUTIL_PIXELUTILS_H - -#include -#include -#include "common.h" - -/** - * Sum of abs(src1[x] - src2[x]) - */ -typedef int (*av_pixelutils_sad_fn)(const uint8_t *src1, ptrdiff_t stride1, - const uint8_t *src2, ptrdiff_t stride2); - -/** - * Get a potentially optimized pointer to a Sum-of-absolute-differences - * function (see the av_pixelutils_sad_fn prototype). - * - * @param w_bits 1< - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_PIXFMT_H -#define AVUTIL_PIXFMT_H - -/** - * @file - * pixel format definitions - */ - -#include "libavutil/avconfig.h" -#include "version.h" - -#define AVPALETTE_SIZE 1024 -#define AVPALETTE_COUNT 256 - -/** - * Pixel format. - * - * @note - * AV_PIX_FMT_RGB32 is handled in an endian-specific manner. An RGBA - * color is put together as: - * (A << 24) | (R << 16) | (G << 8) | B - * This is stored as BGRA on little-endian CPU architectures and ARGB on - * big-endian CPUs. - * - * @par - * When the pixel format is palettized RGB32 (AV_PIX_FMT_PAL8), the palettized - * image data is stored in AVFrame.data[0]. The palette is transported in - * AVFrame.data[1], is 1024 bytes long (256 4-byte entries) and is - * formatted the same as in AV_PIX_FMT_RGB32 described above (i.e., it is - * also endian-specific). Note also that the individual RGB32 palette - * components stored in AVFrame.data[1] should be in the range 0..255. - * This is important as many custom PAL8 video codecs that were designed - * to run on the IBM VGA graphics adapter use 6-bit palette components. - * - * @par - * For all the 8 bits per pixel formats, an RGB32 palette is in data[1] like - * for pal8. This palette is filled in automatically by the function - * allocating the picture. - */ -enum AVPixelFormat { - AV_PIX_FMT_NONE = -1, - AV_PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) - AV_PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr - AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB... - AV_PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR... - AV_PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) - AV_PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) - AV_PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) - AV_PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) - AV_PIX_FMT_GRAY8, ///< Y , 8bpp - AV_PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb - AV_PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb - AV_PIX_FMT_PAL8, ///< 8 bits with AV_PIX_FMT_RGB32 palette - AV_PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting color_range - AV_PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting color_range - AV_PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting color_range -#if FF_API_XVMC - AV_PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing - AV_PIX_FMT_XVMC_MPEG2_IDCT, - AV_PIX_FMT_XVMC = AV_PIX_FMT_XVMC_MPEG2_IDCT, -#endif /* FF_API_XVMC */ - AV_PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 - AV_PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 - AV_PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) - AV_PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - AV_PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) - AV_PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb) - AV_PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - AV_PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb) - AV_PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) - AV_PIX_FMT_NV21, ///< as above, but U and V bytes are swapped - - AV_PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB... - AV_PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA... - AV_PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR... - AV_PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA... - - AV_PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian - AV_PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian - AV_PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) - AV_PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV440P and setting color_range - AV_PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) -#if FF_API_VDPAU - AV_PIX_FMT_VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers -#endif - AV_PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian - AV_PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian - - AV_PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian - AV_PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian - AV_PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), big-endian , X=unused/undefined - AV_PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), little-endian, X=unused/undefined - - AV_PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian - AV_PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian - AV_PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), big-endian , X=unused/undefined - AV_PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), little-endian, X=unused/undefined - -#if FF_API_VAAPI - /** @name Deprecated pixel formats */ - /**@{*/ - AV_PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers - AV_PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers - AV_PIX_FMT_VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a VASurfaceID - /**@}*/ - AV_PIX_FMT_VAAPI = AV_PIX_FMT_VAAPI_VLD, -#else - /** - * Hardware acceleration through VA-API, data[3] contains a - * VASurfaceID. - */ - AV_PIX_FMT_VAAPI, -#endif - - AV_PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian -#if FF_API_VDPAU - AV_PIX_FMT_VDPAU_MPEG4, ///< MPEG-4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers -#endif - AV_PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer - - AV_PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), little-endian, X=unused/undefined - AV_PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), big-endian, X=unused/undefined - AV_PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), little-endian, X=unused/undefined - AV_PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), big-endian, X=unused/undefined - AV_PIX_FMT_YA8, ///< 8 bits gray, 8 bits alpha - - AV_PIX_FMT_Y400A = AV_PIX_FMT_YA8, ///< alias for AV_PIX_FMT_YA8 - AV_PIX_FMT_GRAY8A= AV_PIX_FMT_YA8, ///< alias for AV_PIX_FMT_YA8 - - AV_PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian - AV_PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian - - /** - * The following 12 formats have the disadvantage of needing 1 format for each bit depth. - * Notice that each 9/10 bits sample is stored in 16 bits with extra padding. - * If you want to support multiple bit depths, then using AV_PIX_FMT_YUV420P16* with the bpp stored separately is better. - */ - AV_PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_VDA_VLD, ///< hardware decoding through VDA - AV_PIX_FMT_GBRP, ///< planar GBR 4:4:4 24bpp - AV_PIX_FMT_GBR24P = AV_PIX_FMT_GBRP, // alias for #AV_PIX_FMT_GBRP - AV_PIX_FMT_GBRP9BE, ///< planar GBR 4:4:4 27bpp, big-endian - AV_PIX_FMT_GBRP9LE, ///< planar GBR 4:4:4 27bpp, little-endian - AV_PIX_FMT_GBRP10BE, ///< planar GBR 4:4:4 30bpp, big-endian - AV_PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little-endian - AV_PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big-endian - AV_PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little-endian - AV_PIX_FMT_YUVA422P, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples) - AV_PIX_FMT_YUVA444P, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples) - AV_PIX_FMT_YUVA420P9BE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), big-endian - AV_PIX_FMT_YUVA420P9LE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), little-endian - AV_PIX_FMT_YUVA422P9BE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), big-endian - AV_PIX_FMT_YUVA422P9LE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), little-endian - AV_PIX_FMT_YUVA444P9BE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), big-endian - AV_PIX_FMT_YUVA444P9LE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), little-endian - AV_PIX_FMT_YUVA420P10BE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian) - AV_PIX_FMT_YUVA420P10LE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian) - AV_PIX_FMT_YUVA422P10BE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA422P10LE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian) - AV_PIX_FMT_YUVA444P10BE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA444P10LE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian) - AV_PIX_FMT_YUVA420P16BE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian) - AV_PIX_FMT_YUVA420P16LE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian) - AV_PIX_FMT_YUVA422P16BE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA422P16LE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian) - AV_PIX_FMT_YUVA444P16BE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA444P16LE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian) - - AV_PIX_FMT_VDPAU, ///< HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface - - AV_PIX_FMT_XYZ12LE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as little-endian, the 4 lower bits are set to 0 - AV_PIX_FMT_XYZ12BE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as big-endian, the 4 lower bits are set to 0 - AV_PIX_FMT_NV16, ///< interleaved chroma YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) - AV_PIX_FMT_NV20LE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_NV20BE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - - AV_PIX_FMT_RGBA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - AV_PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian - AV_PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - AV_PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian - - AV_PIX_FMT_YVYU422, ///< packed YUV 4:2:2, 16bpp, Y0 Cr Y1 Cb - - AV_PIX_FMT_VDA, ///< HW acceleration through VDA, data[3] contains a CVPixelBufferRef - - AV_PIX_FMT_YA16BE, ///< 16 bits gray, 16 bits alpha (big-endian) - AV_PIX_FMT_YA16LE, ///< 16 bits gray, 16 bits alpha (little-endian) - - AV_PIX_FMT_GBRAP, ///< planar GBRA 4:4:4:4 32bpp - AV_PIX_FMT_GBRAP16BE, ///< planar GBRA 4:4:4:4 64bpp, big-endian - AV_PIX_FMT_GBRAP16LE, ///< planar GBRA 4:4:4:4 64bpp, little-endian - /** - * HW acceleration through QSV, data[3] contains a pointer to the - * mfxFrameSurface1 structure. - */ - AV_PIX_FMT_QSV, - /** - * HW acceleration though MMAL, data[3] contains a pointer to the - * MMAL_BUFFER_HEADER_T structure. - */ - AV_PIX_FMT_MMAL, - - AV_PIX_FMT_D3D11VA_VLD, ///< HW decoding through Direct3D11, Picture.data[3] contains a ID3D11VideoDecoderOutputView pointer - - /** - * HW acceleration through CUDA. data[i] contain CUdeviceptr pointers - * exactly as for system memory frames. - */ - AV_PIX_FMT_CUDA, - - AV_PIX_FMT_0RGB=0x123+4,///< packed RGB 8:8:8, 32bpp, XRGBXRGB... X=unused/undefined - AV_PIX_FMT_RGB0, ///< packed RGB 8:8:8, 32bpp, RGBXRGBX... X=unused/undefined - AV_PIX_FMT_0BGR, ///< packed BGR 8:8:8, 32bpp, XBGRXBGR... X=unused/undefined - AV_PIX_FMT_BGR0, ///< packed BGR 8:8:8, 32bpp, BGRXBGRX... X=unused/undefined - - AV_PIX_FMT_YUV420P12BE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P12LE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV420P14BE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P14LE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV422P12BE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P12LE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV422P14BE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P14LE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV444P14BE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P14LE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_GBRP12BE, ///< planar GBR 4:4:4 36bpp, big-endian - AV_PIX_FMT_GBRP12LE, ///< planar GBR 4:4:4 36bpp, little-endian - AV_PIX_FMT_GBRP14BE, ///< planar GBR 4:4:4 42bpp, big-endian - AV_PIX_FMT_GBRP14LE, ///< planar GBR 4:4:4 42bpp, little-endian - AV_PIX_FMT_YUVJ411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV411P and setting color_range - - AV_PIX_FMT_BAYER_BGGR8, ///< bayer, BGBG..(odd line), GRGR..(even line), 8-bit samples */ - AV_PIX_FMT_BAYER_RGGB8, ///< bayer, RGRG..(odd line), GBGB..(even line), 8-bit samples */ - AV_PIX_FMT_BAYER_GBRG8, ///< bayer, GBGB..(odd line), RGRG..(even line), 8-bit samples */ - AV_PIX_FMT_BAYER_GRBG8, ///< bayer, GRGR..(odd line), BGBG..(even line), 8-bit samples */ - AV_PIX_FMT_BAYER_BGGR16LE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, little-endian */ - AV_PIX_FMT_BAYER_BGGR16BE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, big-endian */ - AV_PIX_FMT_BAYER_RGGB16LE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, little-endian */ - AV_PIX_FMT_BAYER_RGGB16BE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, big-endian */ - AV_PIX_FMT_BAYER_GBRG16LE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, little-endian */ - AV_PIX_FMT_BAYER_GBRG16BE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, big-endian */ - AV_PIX_FMT_BAYER_GRBG16LE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, little-endian */ - AV_PIX_FMT_BAYER_GRBG16BE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, big-endian */ -#if !FF_API_XVMC - AV_PIX_FMT_XVMC,///< XVideo Motion Acceleration via common packet passing -#endif /* !FF_API_XVMC */ - AV_PIX_FMT_YUV440P10LE, ///< planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian - AV_PIX_FMT_YUV440P10BE, ///< planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian - AV_PIX_FMT_YUV440P12LE, ///< planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian - AV_PIX_FMT_YUV440P12BE, ///< planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian - AV_PIX_FMT_AYUV64LE, ///< packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), little-endian - AV_PIX_FMT_AYUV64BE, ///< packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), big-endian - - AV_PIX_FMT_VIDEOTOOLBOX, ///< hardware decoding through Videotoolbox - - AV_PIX_FMT_P010LE, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, little-endian - AV_PIX_FMT_P010BE, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, big-endian - - AV_PIX_FMT_GBRAP12BE, ///< planar GBR 4:4:4:4 48bpp, big-endian - AV_PIX_FMT_GBRAP12LE, ///< planar GBR 4:4:4:4 48bpp, little-endian - - AV_PIX_FMT_GBRAP10BE, ///< planar GBR 4:4:4:4 40bpp, big-endian - AV_PIX_FMT_GBRAP10LE, ///< planar GBR 4:4:4:4 40bpp, little-endian - - AV_PIX_FMT_MEDIACODEC, ///< hardware decoding through MediaCodec - - AV_PIX_FMT_NB ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions -}; - -#if AV_HAVE_BIGENDIAN -# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##be -#else -# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##le -#endif - -#define AV_PIX_FMT_RGB32 AV_PIX_FMT_NE(ARGB, BGRA) -#define AV_PIX_FMT_RGB32_1 AV_PIX_FMT_NE(RGBA, ABGR) -#define AV_PIX_FMT_BGR32 AV_PIX_FMT_NE(ABGR, RGBA) -#define AV_PIX_FMT_BGR32_1 AV_PIX_FMT_NE(BGRA, ARGB) -#define AV_PIX_FMT_0RGB32 AV_PIX_FMT_NE(0RGB, BGR0) -#define AV_PIX_FMT_0BGR32 AV_PIX_FMT_NE(0BGR, RGB0) - -#define AV_PIX_FMT_GRAY16 AV_PIX_FMT_NE(GRAY16BE, GRAY16LE) -#define AV_PIX_FMT_YA16 AV_PIX_FMT_NE(YA16BE, YA16LE) -#define AV_PIX_FMT_RGB48 AV_PIX_FMT_NE(RGB48BE, RGB48LE) -#define AV_PIX_FMT_RGB565 AV_PIX_FMT_NE(RGB565BE, RGB565LE) -#define AV_PIX_FMT_RGB555 AV_PIX_FMT_NE(RGB555BE, RGB555LE) -#define AV_PIX_FMT_RGB444 AV_PIX_FMT_NE(RGB444BE, RGB444LE) -#define AV_PIX_FMT_RGBA64 AV_PIX_FMT_NE(RGBA64BE, RGBA64LE) -#define AV_PIX_FMT_BGR48 AV_PIX_FMT_NE(BGR48BE, BGR48LE) -#define AV_PIX_FMT_BGR565 AV_PIX_FMT_NE(BGR565BE, BGR565LE) -#define AV_PIX_FMT_BGR555 AV_PIX_FMT_NE(BGR555BE, BGR555LE) -#define AV_PIX_FMT_BGR444 AV_PIX_FMT_NE(BGR444BE, BGR444LE) -#define AV_PIX_FMT_BGRA64 AV_PIX_FMT_NE(BGRA64BE, BGRA64LE) - -#define AV_PIX_FMT_YUV420P9 AV_PIX_FMT_NE(YUV420P9BE , YUV420P9LE) -#define AV_PIX_FMT_YUV422P9 AV_PIX_FMT_NE(YUV422P9BE , YUV422P9LE) -#define AV_PIX_FMT_YUV444P9 AV_PIX_FMT_NE(YUV444P9BE , YUV444P9LE) -#define AV_PIX_FMT_YUV420P10 AV_PIX_FMT_NE(YUV420P10BE, YUV420P10LE) -#define AV_PIX_FMT_YUV422P10 AV_PIX_FMT_NE(YUV422P10BE, YUV422P10LE) -#define AV_PIX_FMT_YUV440P10 AV_PIX_FMT_NE(YUV440P10BE, YUV440P10LE) -#define AV_PIX_FMT_YUV444P10 AV_PIX_FMT_NE(YUV444P10BE, YUV444P10LE) -#define AV_PIX_FMT_YUV420P12 AV_PIX_FMT_NE(YUV420P12BE, YUV420P12LE) -#define AV_PIX_FMT_YUV422P12 AV_PIX_FMT_NE(YUV422P12BE, YUV422P12LE) -#define AV_PIX_FMT_YUV440P12 AV_PIX_FMT_NE(YUV440P12BE, YUV440P12LE) -#define AV_PIX_FMT_YUV444P12 AV_PIX_FMT_NE(YUV444P12BE, YUV444P12LE) -#define AV_PIX_FMT_YUV420P14 AV_PIX_FMT_NE(YUV420P14BE, YUV420P14LE) -#define AV_PIX_FMT_YUV422P14 AV_PIX_FMT_NE(YUV422P14BE, YUV422P14LE) -#define AV_PIX_FMT_YUV444P14 AV_PIX_FMT_NE(YUV444P14BE, YUV444P14LE) -#define AV_PIX_FMT_YUV420P16 AV_PIX_FMT_NE(YUV420P16BE, YUV420P16LE) -#define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE) -#define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE) - -#define AV_PIX_FMT_GBRP9 AV_PIX_FMT_NE(GBRP9BE , GBRP9LE) -#define AV_PIX_FMT_GBRP10 AV_PIX_FMT_NE(GBRP10BE, GBRP10LE) -#define AV_PIX_FMT_GBRP12 AV_PIX_FMT_NE(GBRP12BE, GBRP12LE) -#define AV_PIX_FMT_GBRP14 AV_PIX_FMT_NE(GBRP14BE, GBRP14LE) -#define AV_PIX_FMT_GBRP16 AV_PIX_FMT_NE(GBRP16BE, GBRP16LE) -#define AV_PIX_FMT_GBRAP10 AV_PIX_FMT_NE(GBRAP10BE, GBRAP10LE) -#define AV_PIX_FMT_GBRAP12 AV_PIX_FMT_NE(GBRAP12BE, GBRAP12LE) -#define AV_PIX_FMT_GBRAP16 AV_PIX_FMT_NE(GBRAP16BE, GBRAP16LE) - -#define AV_PIX_FMT_BAYER_BGGR16 AV_PIX_FMT_NE(BAYER_BGGR16BE, BAYER_BGGR16LE) -#define AV_PIX_FMT_BAYER_RGGB16 AV_PIX_FMT_NE(BAYER_RGGB16BE, BAYER_RGGB16LE) -#define AV_PIX_FMT_BAYER_GBRG16 AV_PIX_FMT_NE(BAYER_GBRG16BE, BAYER_GBRG16LE) -#define AV_PIX_FMT_BAYER_GRBG16 AV_PIX_FMT_NE(BAYER_GRBG16BE, BAYER_GRBG16LE) - - -#define AV_PIX_FMT_YUVA420P9 AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE) -#define AV_PIX_FMT_YUVA422P9 AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE) -#define AV_PIX_FMT_YUVA444P9 AV_PIX_FMT_NE(YUVA444P9BE , YUVA444P9LE) -#define AV_PIX_FMT_YUVA420P10 AV_PIX_FMT_NE(YUVA420P10BE, YUVA420P10LE) -#define AV_PIX_FMT_YUVA422P10 AV_PIX_FMT_NE(YUVA422P10BE, YUVA422P10LE) -#define AV_PIX_FMT_YUVA444P10 AV_PIX_FMT_NE(YUVA444P10BE, YUVA444P10LE) -#define AV_PIX_FMT_YUVA420P16 AV_PIX_FMT_NE(YUVA420P16BE, YUVA420P16LE) -#define AV_PIX_FMT_YUVA422P16 AV_PIX_FMT_NE(YUVA422P16BE, YUVA422P16LE) -#define AV_PIX_FMT_YUVA444P16 AV_PIX_FMT_NE(YUVA444P16BE, YUVA444P16LE) - -#define AV_PIX_FMT_XYZ12 AV_PIX_FMT_NE(XYZ12BE, XYZ12LE) -#define AV_PIX_FMT_NV20 AV_PIX_FMT_NE(NV20BE, NV20LE) -#define AV_PIX_FMT_AYUV64 AV_PIX_FMT_NE(AYUV64BE, AYUV64LE) -#define AV_PIX_FMT_P010 AV_PIX_FMT_NE(P010BE, P010LE) - -/** - * Chromaticity coordinates of the source primaries. - */ -enum AVColorPrimaries { - AVCOL_PRI_RESERVED0 = 0, - AVCOL_PRI_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B - AVCOL_PRI_UNSPECIFIED = 2, - AVCOL_PRI_RESERVED = 3, - AVCOL_PRI_BT470M = 4, ///< also FCC Title 47 Code of Federal Regulations 73.682 (a)(20) - - AVCOL_PRI_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM - AVCOL_PRI_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC - AVCOL_PRI_SMPTE240M = 7, ///< functionally identical to above - AVCOL_PRI_FILM = 8, ///< colour filters using Illuminant C - AVCOL_PRI_BT2020 = 9, ///< ITU-R BT2020 - AVCOL_PRI_SMPTEST428_1 = 10, ///< SMPTE ST 428-1 (CIE 1931 XYZ) - AVCOL_PRI_SMPTE431 = 11, ///< SMPTE ST 431-2 (2011) - AVCOL_PRI_SMPTE432 = 12, ///< SMPTE ST 432-1 D65 (2010) - AVCOL_PRI_NB ///< Not part of ABI -}; - -/** - * Color Transfer Characteristic. - */ -enum AVColorTransferCharacteristic { - AVCOL_TRC_RESERVED0 = 0, - AVCOL_TRC_BT709 = 1, ///< also ITU-R BT1361 - AVCOL_TRC_UNSPECIFIED = 2, - AVCOL_TRC_RESERVED = 3, - AVCOL_TRC_GAMMA22 = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM - AVCOL_TRC_GAMMA28 = 5, ///< also ITU-R BT470BG - AVCOL_TRC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC - AVCOL_TRC_SMPTE240M = 7, - AVCOL_TRC_LINEAR = 8, ///< "Linear transfer characteristics" - AVCOL_TRC_LOG = 9, ///< "Logarithmic transfer characteristic (100:1 range)" - AVCOL_TRC_LOG_SQRT = 10, ///< "Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range)" - AVCOL_TRC_IEC61966_2_4 = 11, ///< IEC 61966-2-4 - AVCOL_TRC_BT1361_ECG = 12, ///< ITU-R BT1361 Extended Colour Gamut - AVCOL_TRC_IEC61966_2_1 = 13, ///< IEC 61966-2-1 (sRGB or sYCC) - AVCOL_TRC_BT2020_10 = 14, ///< ITU-R BT2020 for 10-bit system - AVCOL_TRC_BT2020_12 = 15, ///< ITU-R BT2020 for 12-bit system - AVCOL_TRC_SMPTEST2084 = 16, ///< SMPTE ST 2084 for 10-, 12-, 14- and 16-bit systems - AVCOL_TRC_SMPTEST428_1 = 17, ///< SMPTE ST 428-1 - AVCOL_TRC_ARIB_STD_B67 = 18, ///< ARIB STD-B67, known as "Hybrid log-gamma" - AVCOL_TRC_NB ///< Not part of ABI -}; - -/** - * YUV colorspace type. - */ -enum AVColorSpace { - AVCOL_SPC_RGB = 0, ///< order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB) - AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B - AVCOL_SPC_UNSPECIFIED = 2, - AVCOL_SPC_RESERVED = 3, - AVCOL_SPC_FCC = 4, ///< FCC Title 47 Code of Federal Regulations 73.682 (a)(20) - AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 - AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC - AVCOL_SPC_SMPTE240M = 7, ///< functionally identical to above - AVCOL_SPC_YCOCG = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16 - AVCOL_SPC_BT2020_NCL = 9, ///< ITU-R BT2020 non-constant luminance system - AVCOL_SPC_BT2020_CL = 10, ///< ITU-R BT2020 constant luminance system - AVCOL_SPC_SMPTE2085 = 11, ///< SMPTE 2085, Y'D'zD'x - AVCOL_SPC_NB ///< Not part of ABI -}; -#define AVCOL_SPC_YCGCO AVCOL_SPC_YCOCG - - -/** - * MPEG vs JPEG YUV range. - */ -enum AVColorRange { - AVCOL_RANGE_UNSPECIFIED = 0, - AVCOL_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges - AVCOL_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges - AVCOL_RANGE_NB ///< Not part of ABI -}; - -/** - * Location of chroma samples. - * - * Illustration showing the location of the first (top left) chroma sample of the - * image, the left shows only luma, the right - * shows the location of the chroma sample, the 2 could be imagined to overlay - * each other but are drawn separately due to limitations of ASCII - * - * 1st 2nd 1st 2nd horizontal luma sample positions - * v v v v - * ______ ______ - *1st luma line > |X X ... |3 4 X ... X are luma samples, - * | |1 2 1-6 are possible chroma positions - *2nd luma line > |X X ... |5 6 X ... 0 is undefined/unknown position - */ -enum AVChromaLocation { - AVCHROMA_LOC_UNSPECIFIED = 0, - AVCHROMA_LOC_LEFT = 1, ///< MPEG-2/4 4:2:0, H.264 default for 4:2:0 - AVCHROMA_LOC_CENTER = 2, ///< MPEG-1 4:2:0, JPEG 4:2:0, H.263 4:2:0 - AVCHROMA_LOC_TOPLEFT = 3, ///< ITU-R 601, SMPTE 274M 296M S314M(DV 4:1:1), mpeg2 4:2:2 - AVCHROMA_LOC_TOP = 4, - AVCHROMA_LOC_BOTTOMLEFT = 5, - AVCHROMA_LOC_BOTTOM = 6, - AVCHROMA_LOC_NB ///< Not part of ABI -}; - -#endif /* AVUTIL_PIXFMT_H */ diff --git a/Externals/ffmpeg/include/libavutil/random_seed.h b/Externals/ffmpeg/include/libavutil/random_seed.h deleted file mode 100644 index 0462a048e048..000000000000 --- a/Externals/ffmpeg/include/libavutil/random_seed.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2009 Baptiste Coudurier - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_RANDOM_SEED_H -#define AVUTIL_RANDOM_SEED_H - -#include -/** - * @addtogroup lavu_crypto - * @{ - */ - -/** - * Get a seed to use in conjunction with random functions. - * This function tries to provide a good seed at a best effort bases. - * Its possible to call this function multiple times if more bits are needed. - * It can be quite slow, which is why it should only be used as seed for a faster - * PRNG. The quality of the seed depends on the platform. - */ -uint32_t av_get_random_seed(void); - -/** - * @} - */ - -#endif /* AVUTIL_RANDOM_SEED_H */ diff --git a/Externals/ffmpeg/include/libavutil/rational.h b/Externals/ffmpeg/include/libavutil/rational.h deleted file mode 100644 index 5c6b67b4e9f8..000000000000 --- a/Externals/ffmpeg/include/libavutil/rational.h +++ /dev/null @@ -1,214 +0,0 @@ -/* - * rational numbers - * Copyright (c) 2003 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_math_rational - * Utilties for rational number calculation. - * @author Michael Niedermayer - */ - -#ifndef AVUTIL_RATIONAL_H -#define AVUTIL_RATIONAL_H - -#include -#include -#include "attributes.h" - -/** - * @defgroup lavu_math_rational AVRational - * @ingroup lavu_math - * Rational number calculation. - * - * While rational numbers can be expressed as floating-point numbers, the - * conversion process is a lossy one, so are floating-point operations. On the - * other hand, the nature of FFmpeg demands highly accurate calculation of - * timestamps. This set of rational number utilities serves as a generic - * interface for manipulating rational numbers as pairs of numerators and - * denominators. - * - * Many of the functions that operate on AVRational's have the suffix `_q`, in - * reference to the mathematical symbol "ℚ" (Q) which denotes the set of all - * rational numbers. - * - * @{ - */ - -/** - * Rational number (pair of numerator and denominator). - */ -typedef struct AVRational{ - int num; ///< Numerator - int den; ///< Denominator -} AVRational; - -/** - * Create an AVRational. - * - * Useful for compilers that do not support compound literals. - * - * @note The return value is not reduced. - * @see av_reduce() - */ -static inline AVRational av_make_q(int num, int den) -{ - AVRational r = { num, den }; - return r; -} - -/** - * Compare two rationals. - * - * @param a First rational - * @param b Second rational - * - * @return One of the following values: - * - 0 if `a == b` - * - 1 if `a > b` - * - -1 if `a < b` - * - `INT_MIN` if one of the values is of the form `0 / 0` - */ -static inline int av_cmp_q(AVRational a, AVRational b){ - const int64_t tmp= a.num * (int64_t)b.den - b.num * (int64_t)a.den; - - if(tmp) return (int)((tmp ^ a.den ^ b.den)>>63)|1; - else if(b.den && a.den) return 0; - else if(a.num && b.num) return (a.num>>31) - (b.num>>31); - else return INT_MIN; -} - -/** - * Convert an AVRational to a `double`. - * @param a AVRational to convert - * @return `a` in floating-point form - * @see av_d2q() - */ -static inline double av_q2d(AVRational a){ - return a.num / (double) a.den; -} - -/** - * Reduce a fraction. - * - * This is useful for framerate calculations. - * - * @param[out] dst_num Destination numerator - * @param[out] dst_den Destination denominator - * @param[in] num Source numerator - * @param[in] den Source denominator - * @param[in] max Maximum allowed values for `dst_num` & `dst_den` - * @return 1 if the operation is exact, 0 otherwise - */ -int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max); - -/** - * Multiply two rationals. - * @param b First rational - * @param c Second rational - * @return b*c - */ -AVRational av_mul_q(AVRational b, AVRational c) av_const; - -/** - * Divide one rational by another. - * @param b First rational - * @param c Second rational - * @return b/c - */ -AVRational av_div_q(AVRational b, AVRational c) av_const; - -/** - * Add two rationals. - * @param b First rational - * @param c Second rational - * @return b+c - */ -AVRational av_add_q(AVRational b, AVRational c) av_const; - -/** - * Subtract one rational from another. - * @param b First rational - * @param c Second rational - * @return b-c - */ -AVRational av_sub_q(AVRational b, AVRational c) av_const; - -/** - * Invert a rational. - * @param q value - * @return 1 / q - */ -static av_always_inline AVRational av_inv_q(AVRational q) -{ - AVRational r = { q.den, q.num }; - return r; -} - -/** - * Convert a double precision floating point number to a rational. - * - * In case of infinity, the returned value is expressed as `{1, 0}` or - * `{-1, 0}` depending on the sign. - * - * @param d `double` to convert - * @param max Maximum allowed numerator and denominator - * @return `d` in AVRational form - * @see av_q2d() - */ -AVRational av_d2q(double d, int max) av_const; - -/** - * Find which of the two rationals is closer to another rational. - * - * @param q Rational to be compared against - * @param q1,q2 Rationals to be tested - * @return One of the following values: - * - 1 if `q1` is nearer to `q` than `q2` - * - -1 if `q2` is nearer to `q` than `q1` - * - 0 if they have the same distance - */ -int av_nearer_q(AVRational q, AVRational q1, AVRational q2); - -/** - * Find the value in a list of rationals nearest a given reference rational. - * - * @param q Reference rational - * @param q_list Array of rationals terminated by `{0, 0}` - * @return Index of the nearest value found in the array - */ -int av_find_nearest_q_idx(AVRational q, const AVRational* q_list); - -/** - * Convert an AVRational to a IEEE 32-bit `float` expressed in fixed-point - * format. - * - * @param q Rational to be converted - * @return Equivalent floating-point value, expressed as an unsigned 32-bit - * integer. - * @note The returned value is platform-indepedant. - */ -uint32_t av_q2intfloat(AVRational q); - -/** - * @} - */ - -#endif /* AVUTIL_RATIONAL_H */ diff --git a/Externals/ffmpeg/include/libavutil/rc4.h b/Externals/ffmpeg/include/libavutil/rc4.h deleted file mode 100644 index 029cd2ad58b9..000000000000 --- a/Externals/ffmpeg/include/libavutil/rc4.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * RC4 encryption/decryption/pseudo-random number generator - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_RC4_H -#define AVUTIL_RC4_H - -#include - -/** - * @defgroup lavu_rc4 RC4 - * @ingroup lavu_crypto - * @{ - */ - -typedef struct AVRC4 { - uint8_t state[256]; - int x, y; -} AVRC4; - -/** - * Allocate an AVRC4 context. - */ -AVRC4 *av_rc4_alloc(void); - -/** - * @brief Initializes an AVRC4 context. - * - * @param key_bits must be a multiple of 8 - * @param decrypt 0 for encryption, 1 for decryption, currently has no effect - * @return zero on success, negative value otherwise - */ -int av_rc4_init(struct AVRC4 *d, const uint8_t *key, int key_bits, int decrypt); - -/** - * @brief Encrypts / decrypts using the RC4 algorithm. - * - * @param count number of bytes - * @param dst destination array, can be equal to src - * @param src source array, can be equal to dst, may be NULL - * @param iv not (yet) used for RC4, should be NULL - * @param decrypt 0 for encryption, 1 for decryption, not (yet) used - */ -void av_rc4_crypt(struct AVRC4 *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); - -/** - * @} - */ - -#endif /* AVUTIL_RC4_H */ diff --git a/Externals/ffmpeg/include/libavutil/replaygain.h b/Externals/ffmpeg/include/libavutil/replaygain.h deleted file mode 100644 index b49bf1a3d968..000000000000 --- a/Externals/ffmpeg/include/libavutil/replaygain.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_REPLAYGAIN_H -#define AVUTIL_REPLAYGAIN_H - -#include - -/** - * ReplayGain information (see - * http://wiki.hydrogenaudio.org/index.php?title=ReplayGain_1.0_specification). - * The size of this struct is a part of the public ABI. - */ -typedef struct AVReplayGain { - /** - * Track replay gain in microbels (divide by 100000 to get the value in dB). - * Should be set to INT32_MIN when unknown. - */ - int32_t track_gain; - /** - * Peak track amplitude, with 100000 representing full scale (but values - * may overflow). 0 when unknown. - */ - uint32_t track_peak; - /** - * Same as track_gain, but for the whole album. - */ - int32_t album_gain; - /** - * Same as track_peak, but for the whole album, - */ - uint32_t album_peak; -} AVReplayGain; - -#endif /* AVUTIL_REPLAYGAIN_H */ diff --git a/Externals/ffmpeg/include/libavutil/ripemd.h b/Externals/ffmpeg/include/libavutil/ripemd.h deleted file mode 100644 index 6d6bb3208f1f..000000000000 --- a/Externals/ffmpeg/include/libavutil/ripemd.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2007 Michael Niedermayer - * Copyright (C) 2013 James Almer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_ripemd - * Public header for RIPEMD hash function implementation. - */ - -#ifndef AVUTIL_RIPEMD_H -#define AVUTIL_RIPEMD_H - -#include - -#include "attributes.h" -#include "version.h" - -/** - * @defgroup lavu_ripemd RIPEMD - * @ingroup lavu_hash - * RIPEMD hash function implementation. - * - * @{ - */ - -extern const int av_ripemd_size; - -struct AVRIPEMD; - -/** - * Allocate an AVRIPEMD context. - */ -struct AVRIPEMD *av_ripemd_alloc(void); - -/** - * Initialize RIPEMD hashing. - * - * @param context pointer to the function context (of size av_ripemd_size) - * @param bits number of bits in digest (128, 160, 256 or 320 bits) - * @return zero if initialization succeeded, -1 otherwise - */ -int av_ripemd_init(struct AVRIPEMD* context, int bits); - -/** - * Update hash value. - * - * @param context hash function context - * @param data input data to update hash with - * @param len input data length - */ -void av_ripemd_update(struct AVRIPEMD* context, const uint8_t* data, unsigned int len); - -/** - * Finish hashing and output digest value. - * - * @param context hash function context - * @param digest buffer where output digest value is stored - */ -void av_ripemd_final(struct AVRIPEMD* context, uint8_t *digest); - -/** - * @} - */ - -#endif /* AVUTIL_RIPEMD_H */ diff --git a/Externals/ffmpeg/include/libavutil/samplefmt.h b/Externals/ffmpeg/include/libavutil/samplefmt.h deleted file mode 100644 index 8cd43ae8568a..000000000000 --- a/Externals/ffmpeg/include/libavutil/samplefmt.h +++ /dev/null @@ -1,272 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_SAMPLEFMT_H -#define AVUTIL_SAMPLEFMT_H - -#include - -#include "avutil.h" -#include "attributes.h" - -/** - * @addtogroup lavu_audio - * @{ - * - * @defgroup lavu_sampfmts Audio sample formats - * - * Audio sample format enumeration and related convenience functions. - * @{ - */ - -/** - * Audio sample formats - * - * - The data described by the sample format is always in native-endian order. - * Sample values can be expressed by native C types, hence the lack of a signed - * 24-bit sample format even though it is a common raw audio data format. - * - * - The floating-point formats are based on full volume being in the range - * [-1.0, 1.0]. Any values outside this range are beyond full volume level. - * - * - The data layout as used in av_samples_fill_arrays() and elsewhere in FFmpeg - * (such as AVFrame in libavcodec) is as follows: - * - * @par - * For planar sample formats, each audio channel is in a separate data plane, - * and linesize is the buffer size, in bytes, for a single plane. All data - * planes must be the same size. For packed sample formats, only the first data - * plane is used, and samples for each channel are interleaved. In this case, - * linesize is the buffer size, in bytes, for the 1 plane. - * - */ -enum AVSampleFormat { - AV_SAMPLE_FMT_NONE = -1, - AV_SAMPLE_FMT_U8, ///< unsigned 8 bits - AV_SAMPLE_FMT_S16, ///< signed 16 bits - AV_SAMPLE_FMT_S32, ///< signed 32 bits - AV_SAMPLE_FMT_FLT, ///< float - AV_SAMPLE_FMT_DBL, ///< double - - AV_SAMPLE_FMT_U8P, ///< unsigned 8 bits, planar - AV_SAMPLE_FMT_S16P, ///< signed 16 bits, planar - AV_SAMPLE_FMT_S32P, ///< signed 32 bits, planar - AV_SAMPLE_FMT_FLTP, ///< float, planar - AV_SAMPLE_FMT_DBLP, ///< double, planar - AV_SAMPLE_FMT_S64, ///< signed 64 bits - AV_SAMPLE_FMT_S64P, ///< signed 64 bits, planar - - AV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically -}; - -/** - * Return the name of sample_fmt, or NULL if sample_fmt is not - * recognized. - */ -const char *av_get_sample_fmt_name(enum AVSampleFormat sample_fmt); - -/** - * Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE - * on error. - */ -enum AVSampleFormat av_get_sample_fmt(const char *name); - -/** - * Return the planar<->packed alternative form of the given sample format, or - * AV_SAMPLE_FMT_NONE on error. If the passed sample_fmt is already in the - * requested planar/packed format, the format returned is the same as the - * input. - */ -enum AVSampleFormat av_get_alt_sample_fmt(enum AVSampleFormat sample_fmt, int planar); - -/** - * Get the packed alternative form of the given sample format. - * - * If the passed sample_fmt is already in packed format, the format returned is - * the same as the input. - * - * @return the packed alternative form of the given sample format or - AV_SAMPLE_FMT_NONE on error. - */ -enum AVSampleFormat av_get_packed_sample_fmt(enum AVSampleFormat sample_fmt); - -/** - * Get the planar alternative form of the given sample format. - * - * If the passed sample_fmt is already in planar format, the format returned is - * the same as the input. - * - * @return the planar alternative form of the given sample format or - AV_SAMPLE_FMT_NONE on error. - */ -enum AVSampleFormat av_get_planar_sample_fmt(enum AVSampleFormat sample_fmt); - -/** - * Generate a string corresponding to the sample format with - * sample_fmt, or a header if sample_fmt is negative. - * - * @param buf the buffer where to write the string - * @param buf_size the size of buf - * @param sample_fmt the number of the sample format to print the - * corresponding info string, or a negative value to print the - * corresponding header. - * @return the pointer to the filled buffer or NULL if sample_fmt is - * unknown or in case of other errors - */ -char *av_get_sample_fmt_string(char *buf, int buf_size, enum AVSampleFormat sample_fmt); - -/** - * Return number of bytes per sample. - * - * @param sample_fmt the sample format - * @return number of bytes per sample or zero if unknown for the given - * sample format - */ -int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt); - -/** - * Check if the sample format is planar. - * - * @param sample_fmt the sample format to inspect - * @return 1 if the sample format is planar, 0 if it is interleaved - */ -int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt); - -/** - * Get the required buffer size for the given audio parameters. - * - * @param[out] linesize calculated linesize, may be NULL - * @param nb_channels the number of channels - * @param nb_samples the number of samples in a single channel - * @param sample_fmt the sample format - * @param align buffer size alignment (0 = default, 1 = no alignment) - * @return required buffer size, or negative error code on failure - */ -int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples, - enum AVSampleFormat sample_fmt, int align); - -/** - * @} - * - * @defgroup lavu_sampmanip Samples manipulation - * - * Functions that manipulate audio samples - * @{ - */ - -/** - * Fill plane data pointers and linesize for samples with sample - * format sample_fmt. - * - * The audio_data array is filled with the pointers to the samples data planes: - * for planar, set the start point of each channel's data within the buffer, - * for packed, set the start point of the entire buffer only. - * - * The value pointed to by linesize is set to the aligned size of each - * channel's data buffer for planar layout, or to the aligned size of the - * buffer for all channels for packed layout. - * - * The buffer in buf must be big enough to contain all the samples - * (use av_samples_get_buffer_size() to compute its minimum size), - * otherwise the audio_data pointers will point to invalid data. - * - * @see enum AVSampleFormat - * The documentation for AVSampleFormat describes the data layout. - * - * @param[out] audio_data array to be filled with the pointer for each channel - * @param[out] linesize calculated linesize, may be NULL - * @param buf the pointer to a buffer containing the samples - * @param nb_channels the number of channels - * @param nb_samples the number of samples in a single channel - * @param sample_fmt the sample format - * @param align buffer size alignment (0 = default, 1 = no alignment) - * @return >=0 on success or a negative error code on failure - * @todo return minimum size in bytes required for the buffer in case - * of success at the next bump - */ -int av_samples_fill_arrays(uint8_t **audio_data, int *linesize, - const uint8_t *buf, - int nb_channels, int nb_samples, - enum AVSampleFormat sample_fmt, int align); - -/** - * Allocate a samples buffer for nb_samples samples, and fill data pointers and - * linesize accordingly. - * The allocated samples buffer can be freed by using av_freep(&audio_data[0]) - * Allocated data will be initialized to silence. - * - * @see enum AVSampleFormat - * The documentation for AVSampleFormat describes the data layout. - * - * @param[out] audio_data array to be filled with the pointer for each channel - * @param[out] linesize aligned size for audio buffer(s), may be NULL - * @param nb_channels number of audio channels - * @param nb_samples number of samples per channel - * @param align buffer size alignment (0 = default, 1 = no alignment) - * @return >=0 on success or a negative error code on failure - * @todo return the size of the allocated buffer in case of success at the next bump - * @see av_samples_fill_arrays() - * @see av_samples_alloc_array_and_samples() - */ -int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels, - int nb_samples, enum AVSampleFormat sample_fmt, int align); - -/** - * Allocate a data pointers array, samples buffer for nb_samples - * samples, and fill data pointers and linesize accordingly. - * - * This is the same as av_samples_alloc(), but also allocates the data - * pointers array. - * - * @see av_samples_alloc() - */ -int av_samples_alloc_array_and_samples(uint8_t ***audio_data, int *linesize, int nb_channels, - int nb_samples, enum AVSampleFormat sample_fmt, int align); - -/** - * Copy samples from src to dst. - * - * @param dst destination array of pointers to data planes - * @param src source array of pointers to data planes - * @param dst_offset offset in samples at which the data will be written to dst - * @param src_offset offset in samples at which the data will be read from src - * @param nb_samples number of samples to be copied - * @param nb_channels number of audio channels - * @param sample_fmt audio sample format - */ -int av_samples_copy(uint8_t **dst, uint8_t * const *src, int dst_offset, - int src_offset, int nb_samples, int nb_channels, - enum AVSampleFormat sample_fmt); - -/** - * Fill an audio buffer with silence. - * - * @param audio_data array of pointers to data planes - * @param offset offset in samples at which to start filling - * @param nb_samples number of samples to fill - * @param nb_channels number of audio channels - * @param sample_fmt audio sample format - */ -int av_samples_set_silence(uint8_t **audio_data, int offset, int nb_samples, - int nb_channels, enum AVSampleFormat sample_fmt); - -/** - * @} - * @} - */ -#endif /* AVUTIL_SAMPLEFMT_H */ diff --git a/Externals/ffmpeg/include/libavutil/sha.h b/Externals/ffmpeg/include/libavutil/sha.h deleted file mode 100644 index c7558a89646b..000000000000 --- a/Externals/ffmpeg/include/libavutil/sha.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (C) 2007 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_sha - * Public header for SHA-1 & SHA-256 hash function implementations. - */ - -#ifndef AVUTIL_SHA_H -#define AVUTIL_SHA_H - -#include - -#include "attributes.h" -#include "version.h" - -/** - * @defgroup lavu_sha SHA - * @ingroup lavu_hash - * SHA-1 and SHA-256 (Secure Hash Algorithm) hash function implementations. - * - * This module supports the following SHA hash functions: - * - * - SHA-1: 160 bits - * - SHA-224: 224 bits, as a variant of SHA-2 - * - SHA-256: 256 bits, as a variant of SHA-2 - * - * @see For SHA-384, SHA-512, and variants thereof, see @ref lavu_sha512. - * - * @{ - */ - -extern const int av_sha_size; - -struct AVSHA; - -/** - * Allocate an AVSHA context. - */ -struct AVSHA *av_sha_alloc(void); - -/** - * Initialize SHA-1 or SHA-2 hashing. - * - * @param context pointer to the function context (of size av_sha_size) - * @param bits number of bits in digest (SHA-1 - 160 bits, SHA-2 224 or 256 bits) - * @return zero if initialization succeeded, -1 otherwise - */ -int av_sha_init(struct AVSHA* context, int bits); - -/** - * Update hash value. - * - * @param context hash function context - * @param data input data to update hash with - * @param len input data length - */ -void av_sha_update(struct AVSHA* context, const uint8_t* data, unsigned int len); - -/** - * Finish hashing and output digest value. - * - * @param context hash function context - * @param digest buffer where output digest value is stored - */ -void av_sha_final(struct AVSHA* context, uint8_t *digest); - -/** - * @} - */ - -#endif /* AVUTIL_SHA_H */ diff --git a/Externals/ffmpeg/include/libavutil/sha512.h b/Externals/ffmpeg/include/libavutil/sha512.h deleted file mode 100644 index 5bac184cf3e6..000000000000 --- a/Externals/ffmpeg/include/libavutil/sha512.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (C) 2007 Michael Niedermayer - * Copyright (C) 2013 James Almer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_sha512 - * Public header for SHA-512 implementation. - */ - -#ifndef AVUTIL_SHA512_H -#define AVUTIL_SHA512_H - -#include - -#include "attributes.h" -#include "version.h" - -/** - * @defgroup lavu_sha512 SHA-512 - * @ingroup lavu_hash - * SHA-512 (Secure Hash Algorithm) hash function implementations. - * - * This module supports the following SHA-2 hash functions: - * - * - SHA-512/224: 224 bits - * - SHA-512/256: 256 bits - * - SHA-384: 384 bits - * - SHA-512: 512 bits - * - * @see For SHA-1, SHA-256, and variants thereof, see @ref lavu_sha. - * - * @{ - */ - -extern const int av_sha512_size; - -struct AVSHA512; - -/** - * Allocate an AVSHA512 context. - */ -struct AVSHA512 *av_sha512_alloc(void); - -/** - * Initialize SHA-2 512 hashing. - * - * @param context pointer to the function context (of size av_sha512_size) - * @param bits number of bits in digest (224, 256, 384 or 512 bits) - * @return zero if initialization succeeded, -1 otherwise - */ -int av_sha512_init(struct AVSHA512* context, int bits); - -/** - * Update hash value. - * - * @param context hash function context - * @param data input data to update hash with - * @param len input data length - */ -void av_sha512_update(struct AVSHA512* context, const uint8_t* data, unsigned int len); - -/** - * Finish hashing and output digest value. - * - * @param context hash function context - * @param digest buffer where output digest value is stored - */ -void av_sha512_final(struct AVSHA512* context, uint8_t *digest); - -/** - * @} - */ - -#endif /* AVUTIL_SHA512_H */ diff --git a/Externals/ffmpeg/include/libavutil/stereo3d.h b/Externals/ffmpeg/include/libavutil/stereo3d.h deleted file mode 100644 index 19c541643eac..000000000000 --- a/Externals/ffmpeg/include/libavutil/stereo3d.h +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright (c) 2013 Vittorio Giovara - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_STEREO3D_H -#define AVUTIL_STEREO3D_H - -#include - -#include "frame.h" - -/** - * List of possible 3D Types - */ -enum AVStereo3DType { - /** - * Video is not stereoscopic (and metadata has to be there). - */ - AV_STEREO3D_2D, - - /** - * Views are next to each other. - * - * LLLLRRRR - * LLLLRRRR - * LLLLRRRR - * ... - */ - AV_STEREO3D_SIDEBYSIDE, - - /** - * Views are on top of each other. - * - * LLLLLLLL - * LLLLLLLL - * RRRRRRRR - * RRRRRRRR - */ - AV_STEREO3D_TOPBOTTOM, - - /** - * Views are alternated temporally. - * - * frame0 frame1 frame2 ... - * LLLLLLLL RRRRRRRR LLLLLLLL - * LLLLLLLL RRRRRRRR LLLLLLLL - * LLLLLLLL RRRRRRRR LLLLLLLL - * ... ... ... - */ - AV_STEREO3D_FRAMESEQUENCE, - - /** - * Views are packed in a checkerboard-like structure per pixel. - * - * LRLRLRLR - * RLRLRLRL - * LRLRLRLR - * ... - */ - AV_STEREO3D_CHECKERBOARD, - - /** - * Views are next to each other, but when upscaling - * apply a checkerboard pattern. - * - * LLLLRRRR L L L L R R R R - * LLLLRRRR => L L L L R R R R - * LLLLRRRR L L L L R R R R - * LLLLRRRR L L L L R R R R - */ - AV_STEREO3D_SIDEBYSIDE_QUINCUNX, - - /** - * Views are packed per line, as if interlaced. - * - * LLLLLLLL - * RRRRRRRR - * LLLLLLLL - * ... - */ - AV_STEREO3D_LINES, - - /** - * Views are packed per column. - * - * LRLRLRLR - * LRLRLRLR - * LRLRLRLR - * ... - */ - AV_STEREO3D_COLUMNS, -}; - - -/** - * Inverted views, Right/Bottom represents the left view. - */ -#define AV_STEREO3D_FLAG_INVERT (1 << 0) - -/** - * Stereo 3D type: this structure describes how two videos are packed - * within a single video surface, with additional information as needed. - * - * @note The struct must be allocated with av_stereo3d_alloc() and - * its size is not a part of the public ABI. - */ -typedef struct AVStereo3D { - /** - * How views are packed within the video. - */ - enum AVStereo3DType type; - - /** - * Additional information about the frame packing. - */ - int flags; -} AVStereo3D; - -/** - * Allocate an AVStereo3D structure and set its fields to default values. - * The resulting struct can be freed using av_freep(). - * - * @return An AVStereo3D filled with default values or NULL on failure. - */ -AVStereo3D *av_stereo3d_alloc(void); - -/** - * Allocate a complete AVFrameSideData and add it to the frame. - * - * @param frame The frame which side data is added to. - * - * @return The AVStereo3D structure to be filled by caller. - */ -AVStereo3D *av_stereo3d_create_side_data(AVFrame *frame); - -/** - * Provide a human-readable name of a given stereo3d type. - * - * @param type The input stereo3d type value. - * - * @return The name of the stereo3d value, or "unknown". - */ -const char *av_stereo3d_type_name(unsigned int type); - -/** - * Get the AVStereo3DType form a human-readable name. - * - * @param type The input string. - * - * @return The AVStereo3DType value, or -1 if not found. - */ -int av_stereo3d_from_name(const char *name); - -#endif /* AVUTIL_STEREO3D_H */ diff --git a/Externals/ffmpeg/include/libavutil/tea.h b/Externals/ffmpeg/include/libavutil/tea.h deleted file mode 100644 index dd929bdafdc4..000000000000 --- a/Externals/ffmpeg/include/libavutil/tea.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * A 32-bit implementation of the TEA algorithm - * Copyright (c) 2015 Vesselin Bontchev - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_TEA_H -#define AVUTIL_TEA_H - -#include - -/** - * @file - * @brief Public header for libavutil TEA algorithm - * @defgroup lavu_tea TEA - * @ingroup lavu_crypto - * @{ - */ - -extern const int av_tea_size; - -struct AVTEA; - -/** - * Allocate an AVTEA context - * To free the struct: av_free(ptr) - */ -struct AVTEA *av_tea_alloc(void); - -/** - * Initialize an AVTEA context. - * - * @param ctx an AVTEA context - * @param key a key of 16 bytes used for encryption/decryption - * @param rounds the number of rounds in TEA (64 is the "standard") - */ -void av_tea_init(struct AVTEA *ctx, const uint8_t key[16], int rounds); - -/** - * Encrypt or decrypt a buffer using a previously initialized context. - * - * @param ctx an AVTEA context - * @param dst destination array, can be equal to src - * @param src source array, can be equal to dst - * @param count number of 8 byte blocks - * @param iv initialization vector for CBC mode, if NULL then ECB will be used - * @param decrypt 0 for encryption, 1 for decryption - */ -void av_tea_crypt(struct AVTEA *ctx, uint8_t *dst, const uint8_t *src, - int count, uint8_t *iv, int decrypt); - -/** - * @} - */ - -#endif /* AVUTIL_TEA_H */ diff --git a/Externals/ffmpeg/include/libavutil/threadmessage.h b/Externals/ffmpeg/include/libavutil/threadmessage.h deleted file mode 100644 index 8480a0a3dbd3..000000000000 --- a/Externals/ffmpeg/include/libavutil/threadmessage.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with FFmpeg; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_THREADMESSAGE_H -#define AVUTIL_THREADMESSAGE_H - -typedef struct AVThreadMessageQueue AVThreadMessageQueue; - -typedef enum AVThreadMessageFlags { - - /** - * Perform non-blocking operation. - * If this flag is set, send and recv operations are non-blocking and - * return AVERROR(EAGAIN) immediately if they can not proceed. - */ - AV_THREAD_MESSAGE_NONBLOCK = 1, - -} AVThreadMessageFlags; - -/** - * Allocate a new message queue. - * - * @param mq pointer to the message queue - * @param nelem maximum number of elements in the queue - * @param elsize size of each element in the queue - * @return >=0 for success; <0 for error, in particular AVERROR(ENOSYS) if - * lavu was built without thread support - */ -int av_thread_message_queue_alloc(AVThreadMessageQueue **mq, - unsigned nelem, - unsigned elsize); - -/** - * Free a message queue. - * - * The message queue must no longer be in use by another thread. - */ -void av_thread_message_queue_free(AVThreadMessageQueue **mq); - -/** - * Send a message on the queue. - */ -int av_thread_message_queue_send(AVThreadMessageQueue *mq, - void *msg, - unsigned flags); - -/** - * Receive a message from the queue. - */ -int av_thread_message_queue_recv(AVThreadMessageQueue *mq, - void *msg, - unsigned flags); - -/** - * Set the sending error code. - * - * If the error code is set to non-zero, av_thread_message_queue_send() will - * return it immediately. Conventional values, such as AVERROR_EOF or - * AVERROR(EAGAIN), can be used to cause the sending thread to stop or - * suspend its operation. - */ -void av_thread_message_queue_set_err_send(AVThreadMessageQueue *mq, - int err); - -/** - * Set the receiving error code. - * - * If the error code is set to non-zero, av_thread_message_queue_recv() will - * return it immediately when there are no longer available messages. - * Conventional values, such as AVERROR_EOF or AVERROR(EAGAIN), can be used - * to cause the receiving thread to stop or suspend its operation. - */ -void av_thread_message_queue_set_err_recv(AVThreadMessageQueue *mq, - int err); - -/** - * Set the optional free message callback function which will be called if an - * operation is removing messages from the queue. - */ -void av_thread_message_queue_set_free_func(AVThreadMessageQueue *mq, - void (*free_func)(void *msg)); - -/** - * Flush the message queue - * - * This function is mostly equivalent to reading and free-ing every message - * except that it will be done in a single operation (no lock/unlock between - * reads). - */ -void av_thread_message_flush(AVThreadMessageQueue *mq); - -#endif /* AVUTIL_THREADMESSAGE_H */ diff --git a/Externals/ffmpeg/include/libavutil/time.h b/Externals/ffmpeg/include/libavutil/time.h deleted file mode 100644 index dc169b064a0d..000000000000 --- a/Externals/ffmpeg/include/libavutil/time.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2000-2003 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_TIME_H -#define AVUTIL_TIME_H - -#include - -/** - * Get the current time in microseconds. - */ -int64_t av_gettime(void); - -/** - * Get the current time in microseconds since some unspecified starting point. - * On platforms that support it, the time comes from a monotonic clock - * This property makes this time source ideal for measuring relative time. - * The returned values may not be monotonic on platforms where a monotonic - * clock is not available. - */ -int64_t av_gettime_relative(void); - -/** - * Indicates with a boolean result if the av_gettime_relative() time source - * is monotonic. - */ -int av_gettime_relative_is_monotonic(void); - -/** - * Sleep for a period of time. Although the duration is expressed in - * microseconds, the actual delay may be rounded to the precision of the - * system timer. - * - * @param usec Number of microseconds to sleep. - * @return zero on success or (negative) error code. - */ -int av_usleep(unsigned usec); - -#endif /* AVUTIL_TIME_H */ diff --git a/Externals/ffmpeg/include/libavutil/timecode.h b/Externals/ffmpeg/include/libavutil/timecode.h deleted file mode 100644 index 56e3975fd89d..000000000000 --- a/Externals/ffmpeg/include/libavutil/timecode.h +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 2006 Smartjog S.A.S, Baptiste Coudurier - * Copyright (c) 2011-2012 Smartjog S.A.S, Clément Bœsch - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Timecode helpers header - */ - -#ifndef AVUTIL_TIMECODE_H -#define AVUTIL_TIMECODE_H - -#include -#include "rational.h" - -#define AV_TIMECODE_STR_SIZE 16 - -enum AVTimecodeFlag { - AV_TIMECODE_FLAG_DROPFRAME = 1<<0, ///< timecode is drop frame - AV_TIMECODE_FLAG_24HOURSMAX = 1<<1, ///< timecode wraps after 24 hours - AV_TIMECODE_FLAG_ALLOWNEGATIVE = 1<<2, ///< negative time values are allowed -}; - -typedef struct { - int start; ///< timecode frame start (first base frame number) - uint32_t flags; ///< flags such as drop frame, +24 hours support, ... - AVRational rate; ///< frame rate in rational form - unsigned fps; ///< frame per second; must be consistent with the rate field -} AVTimecode; - -/** - * Adjust frame number for NTSC drop frame time code. - * - * @param framenum frame number to adjust - * @param fps frame per second, 30 or 60 - * @return adjusted frame number - * @warning adjustment is only valid in NTSC 29.97 and 59.94 - */ -int av_timecode_adjust_ntsc_framenum2(int framenum, int fps); - -/** - * Convert frame number to SMPTE 12M binary representation. - * - * @param tc timecode data correctly initialized - * @param framenum frame number - * @return the SMPTE binary representation - * - * @note Frame number adjustment is automatically done in case of drop timecode, - * you do NOT have to call av_timecode_adjust_ntsc_framenum2(). - * @note The frame number is relative to tc->start. - * @note Color frame (CF), binary group flags (BGF) and biphase mark polarity - * correction (PC) bits are set to zero. - */ -uint32_t av_timecode_get_smpte_from_framenum(const AVTimecode *tc, int framenum); - -/** - * Load timecode string in buf. - * - * @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long - * @param tc timecode data correctly initialized - * @param framenum frame number - * @return the buf parameter - * - * @note Timecode representation can be a negative timecode and have more than - * 24 hours, but will only be honored if the flags are correctly set. - * @note The frame number is relative to tc->start. - */ -char *av_timecode_make_string(const AVTimecode *tc, char *buf, int framenum); - -/** - * Get the timecode string from the SMPTE timecode format. - * - * @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long - * @param tcsmpte the 32-bit SMPTE timecode - * @param prevent_df prevent the use of a drop flag when it is known the DF bit - * is arbitrary - * @return the buf parameter - */ -char *av_timecode_make_smpte_tc_string(char *buf, uint32_t tcsmpte, int prevent_df); - -/** - * Get the timecode string from the 25-bit timecode format (MPEG GOP format). - * - * @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long - * @param tc25bit the 25-bits timecode - * @return the buf parameter - */ -char *av_timecode_make_mpeg_tc_string(char *buf, uint32_t tc25bit); - -/** - * Init a timecode struct with the passed parameters. - * - * @param log_ctx a pointer to an arbitrary struct of which the first field - * is a pointer to an AVClass struct (used for av_log) - * @param tc pointer to an allocated AVTimecode - * @param rate frame rate in rational form - * @param flags miscellaneous flags such as drop frame, +24 hours, ... - * (see AVTimecodeFlag) - * @param frame_start the first frame number - * @return 0 on success, AVERROR otherwise - */ -int av_timecode_init(AVTimecode *tc, AVRational rate, int flags, int frame_start, void *log_ctx); - -/** - * Parse timecode representation (hh:mm:ss[:;.]ff). - * - * @param log_ctx a pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct (used for av_log). - * @param tc pointer to an allocated AVTimecode - * @param rate frame rate in rational form - * @param str timecode string which will determine the frame start - * @return 0 on success, AVERROR otherwise - */ -int av_timecode_init_from_string(AVTimecode *tc, AVRational rate, const char *str, void *log_ctx); - -/** - * Check if the timecode feature is available for the given frame rate - * - * @return 0 if supported, <0 otherwise - */ -int av_timecode_check_frame_rate(AVRational rate); - -#endif /* AVUTIL_TIMECODE_H */ diff --git a/Externals/ffmpeg/include/libavutil/timestamp.h b/Externals/ffmpeg/include/libavutil/timestamp.h deleted file mode 100644 index e082f01b40b3..000000000000 --- a/Externals/ffmpeg/include/libavutil/timestamp.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * timestamp utils, mostly useful for debugging/logging purposes - */ - -#ifndef AVUTIL_TIMESTAMP_H -#define AVUTIL_TIMESTAMP_H - -#include "common.h" - -#if defined(__cplusplus) && !defined(__STDC_FORMAT_MACROS) && !defined(PRId64) -#error missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS -#endif - -#define AV_TS_MAX_STRING_SIZE 32 - -/** - * Fill the provided buffer with a string containing a timestamp - * representation. - * - * @param buf a buffer with size in bytes of at least AV_TS_MAX_STRING_SIZE - * @param ts the timestamp to represent - * @return the buffer in input - */ -static inline char *av_ts_make_string(char *buf, int64_t ts) -{ - if (ts == AV_NOPTS_VALUE) snprintf(buf, AV_TS_MAX_STRING_SIZE, "NOPTS"); - else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%" PRId64, ts); - return buf; -} - -/** - * Convenience macro, the return value should be used only directly in - * function arguments but never stand-alone. - */ -#define av_ts2str(ts) av_ts_make_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts) - -/** - * Fill the provided buffer with a string containing a timestamp time - * representation. - * - * @param buf a buffer with size in bytes of at least AV_TS_MAX_STRING_SIZE - * @param ts the timestamp to represent - * @param tb the timebase of the timestamp - * @return the buffer in input - */ -static inline char *av_ts_make_time_string(char *buf, int64_t ts, AVRational *tb) -{ - if (ts == AV_NOPTS_VALUE) snprintf(buf, AV_TS_MAX_STRING_SIZE, "NOPTS"); - else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%.6g", av_q2d(*tb) * ts); - return buf; -} - -/** - * Convenience macro, the return value should be used only directly in - * function arguments but never stand-alone. - */ -#define av_ts2timestr(ts, tb) av_ts_make_time_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts, tb) - -#endif /* AVUTIL_TIMESTAMP_H */ diff --git a/Externals/ffmpeg/include/libavutil/tree.h b/Externals/ffmpeg/include/libavutil/tree.h deleted file mode 100644 index d5e0aebfbdb7..000000000000 --- a/Externals/ffmpeg/include/libavutil/tree.h +++ /dev/null @@ -1,138 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * A tree container. - * @author Michael Niedermayer - */ - -#ifndef AVUTIL_TREE_H -#define AVUTIL_TREE_H - -#include "attributes.h" -#include "version.h" - -/** - * @addtogroup lavu_tree AVTree - * @ingroup lavu_data - * - * Low-complexity tree container - * - * Insertion, removal, finding equal, largest which is smaller than and - * smallest which is larger than, all have O(log n) worst-case complexity. - * @{ - */ - - -struct AVTreeNode; -extern const int av_tree_node_size; - -/** - * Allocate an AVTreeNode. - */ -struct AVTreeNode *av_tree_node_alloc(void); - -/** - * Find an element. - * @param root a pointer to the root node of the tree - * @param next If next is not NULL, then next[0] will contain the previous - * element and next[1] the next element. If either does not exist, - * then the corresponding entry in next is unchanged. - * @param cmp compare function used to compare elements in the tree, - * API identical to that of Standard C's qsort - * It is guaranteed that the first and only the first argument to cmp() - * will be the key parameter to av_tree_find(), thus it could if the - * user wants, be a different type (like an opaque context). - * @return An element with cmp(key, elem) == 0 or NULL if no such element - * exists in the tree. - */ -void *av_tree_find(const struct AVTreeNode *root, void *key, - int (*cmp)(const void *key, const void *b), void *next[2]); - -/** - * Insert or remove an element. - * - * If *next is NULL, then the supplied element will be removed if it exists. - * If *next is non-NULL, then the supplied element will be inserted, unless - * it already exists in the tree. - * - * @param rootp A pointer to a pointer to the root node of the tree; note that - * the root node can change during insertions, this is required - * to keep the tree balanced. - * @param key pointer to the element key to insert in the tree - * @param next Used to allocate and free AVTreeNodes. For insertion the user - * must set it to an allocated and zeroed object of at least - * av_tree_node_size bytes size. av_tree_insert() will set it to - * NULL if it has been consumed. - * For deleting elements *next is set to NULL by the user and - * av_tree_insert() will set it to the AVTreeNode which was - * used for the removed element. - * This allows the use of flat arrays, which have - * lower overhead compared to many malloced elements. - * You might want to define a function like: - * @code - * void *tree_insert(struct AVTreeNode **rootp, void *key, - * int (*cmp)(void *key, const void *b), - * AVTreeNode **next) - * { - * if (!*next) - * *next = av_mallocz(av_tree_node_size); - * return av_tree_insert(rootp, key, cmp, next); - * } - * void *tree_remove(struct AVTreeNode **rootp, void *key, - * int (*cmp)(void *key, const void *b, AVTreeNode **next)) - * { - * av_freep(next); - * return av_tree_insert(rootp, key, cmp, next); - * } - * @endcode - * @param cmp compare function used to compare elements in the tree, API identical - * to that of Standard C's qsort - * @return If no insertion happened, the found element; if an insertion or - * removal happened, then either key or NULL will be returned. - * Which one it is depends on the tree state and the implementation. You - * should make no assumptions that it's one or the other in the code. - */ -void *av_tree_insert(struct AVTreeNode **rootp, void *key, - int (*cmp)(const void *key, const void *b), - struct AVTreeNode **next); - -void av_tree_destroy(struct AVTreeNode *t); - -/** - * Apply enu(opaque, &elem) to all the elements in the tree in a given range. - * - * @param cmp a comparison function that returns < 0 for an element below the - * range, > 0 for an element above the range and == 0 for an - * element inside the range - * - * @note The cmp function should use the same ordering used to construct the - * tree. - */ -void av_tree_enumerate(struct AVTreeNode *t, void *opaque, - int (*cmp)(void *opaque, void *elem), - int (*enu)(void *opaque, void *elem)); - -/** - * @} - */ - -#endif /* AVUTIL_TREE_H */ diff --git a/Externals/ffmpeg/include/libavutil/twofish.h b/Externals/ffmpeg/include/libavutil/twofish.h deleted file mode 100644 index 813cfecdf8b8..000000000000 --- a/Externals/ffmpeg/include/libavutil/twofish.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * An implementation of the TwoFish algorithm - * Copyright (c) 2015 Supraja Meedinti - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_TWOFISH_H -#define AVUTIL_TWOFISH_H - -#include - - -/** - * @file - * @brief Public header for libavutil TWOFISH algorithm - * @defgroup lavu_twofish TWOFISH - * @ingroup lavu_crypto - * @{ - */ - -extern const int av_twofish_size; - -struct AVTWOFISH; - -/** - * Allocate an AVTWOFISH context - * To free the struct: av_free(ptr) - */ -struct AVTWOFISH *av_twofish_alloc(void); - -/** - * Initialize an AVTWOFISH context. - * - * @param ctx an AVTWOFISH context - * @param key a key of size ranging from 1 to 32 bytes used for encryption/decryption - * @param key_bits number of keybits: 128, 192, 256 If less than the required, padded with zeroes to nearest valid value; return value is 0 if key_bits is 128/192/256, -1 if less than 0, 1 otherwise - */ -int av_twofish_init(struct AVTWOFISH *ctx, const uint8_t *key, int key_bits); - -/** - * Encrypt or decrypt a buffer using a previously initialized context - * - * @param ctx an AVTWOFISH context - * @param dst destination array, can be equal to src - * @param src source array, can be equal to dst - * @param count number of 16 byte blocks - * @paran iv initialization vector for CBC mode, NULL for ECB mode - * @param decrypt 0 for encryption, 1 for decryption - */ -void av_twofish_crypt(struct AVTWOFISH *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t* iv, int decrypt); - -/** - * @} - */ -#endif /* AVUTIL_TWOFISH_H */ diff --git a/Externals/ffmpeg/include/libavutil/version.h b/Externals/ffmpeg/include/libavutil/version.h deleted file mode 100644 index c57ac7fab30c..000000000000 --- a/Externals/ffmpeg/include/libavutil/version.h +++ /dev/null @@ -1,145 +0,0 @@ -/* - * copyright (c) 2003 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu - * Libavutil version macros - */ - -#ifndef AVUTIL_VERSION_H -#define AVUTIL_VERSION_H - -#include "macros.h" - -/** - * @addtogroup version_utils - * - * Useful to check and match library version in order to maintain - * backward compatibility. - * - * The FFmpeg libraries follow a versioning sheme very similar to - * Semantic Versioning (http://semver.org/) - * The difference is that the component called PATCH is called MICRO in FFmpeg - * and its value is reset to 100 instead of 0 to keep it above or equal to 100. - * Also we do not increase MICRO for every bugfix or change in git master. - * - * Prior to FFmpeg 3.2 point releases did not change any lib version number to - * avoid aliassing different git master checkouts. - * Starting with FFmpeg 3.2, the released library versions will occupy - * a separate MAJOR.MINOR that is not used on the master development branch. - * That is if we branch a release of master 55.10.123 we will bump to 55.11.100 - * for the release and master will continue at 55.12.100 after it. Each new - * point release will then bump the MICRO improving the usefulness of the lib - * versions. - * - * @{ - */ - -#define AV_VERSION_INT(a, b, c) ((a)<<16 | (b)<<8 | (c)) -#define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c -#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) - -/** - * Extract version components from the full ::AV_VERSION_INT int as returned - * by functions like ::avformat_version() and ::avcodec_version() - */ -#define AV_VERSION_MAJOR(a) ((a) >> 16) -#define AV_VERSION_MINOR(a) (((a) & 0x00FF00) >> 8) -#define AV_VERSION_MICRO(a) ((a) & 0xFF) - -/** - * @} - */ - -/** - * @defgroup lavu_ver Version and Build diagnostics - * - * Macros and function useful to check at compiletime and at runtime - * which version of libavutil is in use. - * - * @{ - */ - -#define LIBAVUTIL_VERSION_MAJOR 55 -#define LIBAVUTIL_VERSION_MINOR 34 -#define LIBAVUTIL_VERSION_MICRO 101 - -#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ - LIBAVUTIL_VERSION_MINOR, \ - LIBAVUTIL_VERSION_MICRO) -#define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \ - LIBAVUTIL_VERSION_MINOR, \ - LIBAVUTIL_VERSION_MICRO) -#define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT - -#define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION) - -/** - * @defgroup lavu_depr_guards Deprecation Guards - * FF_API_* defines may be placed below to indicate public API that will be - * dropped at a future version bump. The defines themselves are not part of - * the public API and may change, break or disappear at any time. - * - * @note, when bumping the major version it is recommended to manually - * disable each FF_API_* in its own commit instead of disabling them all - * at once through the bump. This improves the git bisect-ability of the change. - * - * @{ - */ - -#ifndef FF_API_VDPAU -#define FF_API_VDPAU (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_XVMC -#define FF_API_XVMC (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_OPT_TYPE_METADATA -#define FF_API_OPT_TYPE_METADATA (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_DLOG -#define FF_API_DLOG (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_VAAPI -#define FF_API_VAAPI (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_FRAME_QP -#define FF_API_FRAME_QP (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_PLUS1_MINUS1 -#define FF_API_PLUS1_MINUS1 (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_ERROR_FRAME -#define FF_API_ERROR_FRAME (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_CRC_BIG_TABLE -#define FF_API_CRC_BIG_TABLE (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_PKT_PTS -#define FF_API_PKT_PTS (LIBAVUTIL_VERSION_MAJOR < 56) -#endif - - -/** - * @} - * @} - */ - -#endif /* AVUTIL_VERSION_H */ diff --git a/Externals/ffmpeg/include/libavutil/xtea.h b/Externals/ffmpeg/include/libavutil/xtea.h deleted file mode 100644 index 735427c109a1..000000000000 --- a/Externals/ffmpeg/include/libavutil/xtea.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * A 32-bit implementation of the XTEA algorithm - * Copyright (c) 2012 Samuel Pitoiset - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_XTEA_H -#define AVUTIL_XTEA_H - -#include - -/** - * @file - * @brief Public header for libavutil XTEA algorithm - * @defgroup lavu_xtea XTEA - * @ingroup lavu_crypto - * @{ - */ - -typedef struct AVXTEA { - uint32_t key[16]; -} AVXTEA; - -/** - * Allocate an AVXTEA context. - */ -AVXTEA *av_xtea_alloc(void); - -/** - * Initialize an AVXTEA context. - * - * @param ctx an AVXTEA context - * @param key a key of 16 bytes used for encryption/decryption, - * interpreted as big endian 32 bit numbers - */ -void av_xtea_init(struct AVXTEA *ctx, const uint8_t key[16]); - -/** - * Initialize an AVXTEA context. - * - * @param ctx an AVXTEA context - * @param key a key of 16 bytes used for encryption/decryption, - * interpreted as little endian 32 bit numbers - */ -void av_xtea_le_init(struct AVXTEA *ctx, const uint8_t key[16]); - -/** - * Encrypt or decrypt a buffer using a previously initialized context, - * in big endian format. - * - * @param ctx an AVXTEA context - * @param dst destination array, can be equal to src - * @param src source array, can be equal to dst - * @param count number of 8 byte blocks - * @param iv initialization vector for CBC mode, if NULL then ECB will be used - * @param decrypt 0 for encryption, 1 for decryption - */ -void av_xtea_crypt(struct AVXTEA *ctx, uint8_t *dst, const uint8_t *src, - int count, uint8_t *iv, int decrypt); - -/** - * Encrypt or decrypt a buffer using a previously initialized context, - * in little endian format. - * - * @param ctx an AVXTEA context - * @param dst destination array, can be equal to src - * @param src source array, can be equal to dst - * @param count number of 8 byte blocks - * @param iv initialization vector for CBC mode, if NULL then ECB will be used - * @param decrypt 0 for encryption, 1 for decryption - */ -void av_xtea_le_crypt(struct AVXTEA *ctx, uint8_t *dst, const uint8_t *src, - int count, uint8_t *iv, int decrypt); - -/** - * @} - */ - -#endif /* AVUTIL_XTEA_H */ diff --git a/Externals/ffmpeg/include/libswresample/swresample.h b/Externals/ffmpeg/include/libswresample/swresample.h deleted file mode 100644 index a8db5c2490b6..000000000000 --- a/Externals/ffmpeg/include/libswresample/swresample.h +++ /dev/null @@ -1,583 +0,0 @@ -/* - * Copyright (C) 2011-2013 Michael Niedermayer (michaelni@gmx.at) - * - * This file is part of libswresample - * - * libswresample is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * libswresample is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with libswresample; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef SWRESAMPLE_SWRESAMPLE_H -#define SWRESAMPLE_SWRESAMPLE_H - -/** - * @file - * @ingroup lswr - * libswresample public header - */ - -/** - * @defgroup lswr libswresample - * @{ - * - * Audio resampling, sample format conversion and mixing library. - * - * Interaction with lswr is done through SwrContext, which is - * allocated with swr_alloc() or swr_alloc_set_opts(). It is opaque, so all parameters - * must be set with the @ref avoptions API. - * - * The first thing you will need to do in order to use lswr is to allocate - * SwrContext. This can be done with swr_alloc() or swr_alloc_set_opts(). If you - * are using the former, you must set options through the @ref avoptions API. - * The latter function provides the same feature, but it allows you to set some - * common options in the same statement. - * - * For example the following code will setup conversion from planar float sample - * format to interleaved signed 16-bit integer, downsampling from 48kHz to - * 44.1kHz and downmixing from 5.1 channels to stereo (using the default mixing - * matrix). This is using the swr_alloc() function. - * @code - * SwrContext *swr = swr_alloc(); - * av_opt_set_channel_layout(swr, "in_channel_layout", AV_CH_LAYOUT_5POINT1, 0); - * av_opt_set_channel_layout(swr, "out_channel_layout", AV_CH_LAYOUT_STEREO, 0); - * av_opt_set_int(swr, "in_sample_rate", 48000, 0); - * av_opt_set_int(swr, "out_sample_rate", 44100, 0); - * av_opt_set_sample_fmt(swr, "in_sample_fmt", AV_SAMPLE_FMT_FLTP, 0); - * av_opt_set_sample_fmt(swr, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0); - * @endcode - * - * The same job can be done using swr_alloc_set_opts() as well: - * @code - * SwrContext *swr = swr_alloc_set_opts(NULL, // we're allocating a new context - * AV_CH_LAYOUT_STEREO, // out_ch_layout - * AV_SAMPLE_FMT_S16, // out_sample_fmt - * 44100, // out_sample_rate - * AV_CH_LAYOUT_5POINT1, // in_ch_layout - * AV_SAMPLE_FMT_FLTP, // in_sample_fmt - * 48000, // in_sample_rate - * 0, // log_offset - * NULL); // log_ctx - * @endcode - * - * Once all values have been set, it must be initialized with swr_init(). If - * you need to change the conversion parameters, you can change the parameters - * using @ref AVOptions, as described above in the first example; or by using - * swr_alloc_set_opts(), but with the first argument the allocated context. - * You must then call swr_init() again. - * - * The conversion itself is done by repeatedly calling swr_convert(). - * Note that the samples may get buffered in swr if you provide insufficient - * output space or if sample rate conversion is done, which requires "future" - * samples. Samples that do not require future input can be retrieved at any - * time by using swr_convert() (in_count can be set to 0). - * At the end of conversion the resampling buffer can be flushed by calling - * swr_convert() with NULL in and 0 in_count. - * - * The samples used in the conversion process can be managed with the libavutil - * @ref lavu_sampmanip "samples manipulation" API, including av_samples_alloc() - * function used in the following example. - * - * The delay between input and output, can at any time be found by using - * swr_get_delay(). - * - * The following code demonstrates the conversion loop assuming the parameters - * from above and caller-defined functions get_input() and handle_output(): - * @code - * uint8_t **input; - * int in_samples; - * - * while (get_input(&input, &in_samples)) { - * uint8_t *output; - * int out_samples = av_rescale_rnd(swr_get_delay(swr, 48000) + - * in_samples, 44100, 48000, AV_ROUND_UP); - * av_samples_alloc(&output, NULL, 2, out_samples, - * AV_SAMPLE_FMT_S16, 0); - * out_samples = swr_convert(swr, &output, out_samples, - * input, in_samples); - * handle_output(output, out_samples); - * av_freep(&output); - * } - * @endcode - * - * When the conversion is finished, the conversion - * context and everything associated with it must be freed with swr_free(). - * A swr_close() function is also available, but it exists mainly for - * compatibility with libavresample, and is not required to be called. - * - * There will be no memory leak if the data is not completely flushed before - * swr_free(). - */ - -#include -#include "libavutil/channel_layout.h" -#include "libavutil/frame.h" -#include "libavutil/samplefmt.h" - -#include "libswresample/version.h" - -#if LIBSWRESAMPLE_VERSION_MAJOR < 1 -#define SWR_CH_MAX 32 ///< Maximum number of channels -#endif - -/** - * @name Option constants - * These constants are used for the @ref avoptions interface for lswr. - * @{ - * - */ - -#define SWR_FLAG_RESAMPLE 1 ///< Force resampling even if equal sample rate -//TODO use int resample ? -//long term TODO can we enable this dynamically? - -/** Dithering algorithms */ -enum SwrDitherType { - SWR_DITHER_NONE = 0, - SWR_DITHER_RECTANGULAR, - SWR_DITHER_TRIANGULAR, - SWR_DITHER_TRIANGULAR_HIGHPASS, - - SWR_DITHER_NS = 64, ///< not part of API/ABI - SWR_DITHER_NS_LIPSHITZ, - SWR_DITHER_NS_F_WEIGHTED, - SWR_DITHER_NS_MODIFIED_E_WEIGHTED, - SWR_DITHER_NS_IMPROVED_E_WEIGHTED, - SWR_DITHER_NS_SHIBATA, - SWR_DITHER_NS_LOW_SHIBATA, - SWR_DITHER_NS_HIGH_SHIBATA, - SWR_DITHER_NB, ///< not part of API/ABI -}; - -/** Resampling Engines */ -enum SwrEngine { - SWR_ENGINE_SWR, /**< SW Resampler */ - SWR_ENGINE_SOXR, /**< SoX Resampler */ - SWR_ENGINE_NB, ///< not part of API/ABI -}; - -/** Resampling Filter Types */ -enum SwrFilterType { - SWR_FILTER_TYPE_CUBIC, /**< Cubic */ - SWR_FILTER_TYPE_BLACKMAN_NUTTALL, /**< Blackman Nuttall windowed sinc */ - SWR_FILTER_TYPE_KAISER, /**< Kaiser windowed sinc */ -}; - -/** - * @} - */ - -/** - * The libswresample context. Unlike libavcodec and libavformat, this structure - * is opaque. This means that if you would like to set options, you must use - * the @ref avoptions API and cannot directly set values to members of the - * structure. - */ -typedef struct SwrContext SwrContext; - -/** - * Get the AVClass for SwrContext. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - * @return the AVClass of SwrContext - */ -const AVClass *swr_get_class(void); - -/** - * @name SwrContext constructor functions - * @{ - */ - -/** - * Allocate SwrContext. - * - * If you use this function you will need to set the parameters (manually or - * with swr_alloc_set_opts()) before calling swr_init(). - * - * @see swr_alloc_set_opts(), swr_init(), swr_free() - * @return NULL on error, allocated context otherwise - */ -struct SwrContext *swr_alloc(void); - -/** - * Initialize context after user parameters have been set. - * @note The context must be configured using the AVOption API. - * - * @see av_opt_set_int() - * @see av_opt_set_dict() - * - * @param[in,out] s Swr context to initialize - * @return AVERROR error code in case of failure. - */ -int swr_init(struct SwrContext *s); - -/** - * Check whether an swr context has been initialized or not. - * - * @param[in] s Swr context to check - * @see swr_init() - * @return positive if it has been initialized, 0 if not initialized - */ -int swr_is_initialized(struct SwrContext *s); - -/** - * Allocate SwrContext if needed and set/reset common parameters. - * - * This function does not require s to be allocated with swr_alloc(). On the - * other hand, swr_alloc() can use swr_alloc_set_opts() to set the parameters - * on the allocated context. - * - * @param s existing Swr context if available, or NULL if not - * @param out_ch_layout output channel layout (AV_CH_LAYOUT_*) - * @param out_sample_fmt output sample format (AV_SAMPLE_FMT_*). - * @param out_sample_rate output sample rate (frequency in Hz) - * @param in_ch_layout input channel layout (AV_CH_LAYOUT_*) - * @param in_sample_fmt input sample format (AV_SAMPLE_FMT_*). - * @param in_sample_rate input sample rate (frequency in Hz) - * @param log_offset logging level offset - * @param log_ctx parent logging context, can be NULL - * - * @see swr_init(), swr_free() - * @return NULL on error, allocated context otherwise - */ -struct SwrContext *swr_alloc_set_opts(struct SwrContext *s, - int64_t out_ch_layout, enum AVSampleFormat out_sample_fmt, int out_sample_rate, - int64_t in_ch_layout, enum AVSampleFormat in_sample_fmt, int in_sample_rate, - int log_offset, void *log_ctx); - -/** - * @} - * - * @name SwrContext destructor functions - * @{ - */ - -/** - * Free the given SwrContext and set the pointer to NULL. - * - * @param[in] s a pointer to a pointer to Swr context - */ -void swr_free(struct SwrContext **s); - -/** - * Closes the context so that swr_is_initialized() returns 0. - * - * The context can be brought back to life by running swr_init(), - * swr_init() can also be used without swr_close(). - * This function is mainly provided for simplifying the usecase - * where one tries to support libavresample and libswresample. - * - * @param[in,out] s Swr context to be closed - */ -void swr_close(struct SwrContext *s); - -/** - * @} - * - * @name Core conversion functions - * @{ - */ - -/** Convert audio. - * - * in and in_count can be set to 0 to flush the last few samples out at the - * end. - * - * If more input is provided than output space, then the input will be buffered. - * You can avoid this buffering by using swr_get_out_samples() to retrieve an - * upper bound on the required number of output samples for the given number of - * input samples. Conversion will run directly without copying whenever possible. - * - * @param s allocated Swr context, with parameters set - * @param out output buffers, only the first one need be set in case of packed audio - * @param out_count amount of space available for output in samples per channel - * @param in input buffers, only the first one need to be set in case of packed audio - * @param in_count number of input samples available in one channel - * - * @return number of samples output per channel, negative value on error - */ -int swr_convert(struct SwrContext *s, uint8_t **out, int out_count, - const uint8_t **in , int in_count); - -/** - * Convert the next timestamp from input to output - * timestamps are in 1/(in_sample_rate * out_sample_rate) units. - * - * @note There are 2 slightly differently behaving modes. - * @li When automatic timestamp compensation is not used, (min_compensation >= FLT_MAX) - * in this case timestamps will be passed through with delays compensated - * @li When automatic timestamp compensation is used, (min_compensation < FLT_MAX) - * in this case the output timestamps will match output sample numbers. - * See ffmpeg-resampler(1) for the two modes of compensation. - * - * @param s[in] initialized Swr context - * @param pts[in] timestamp for the next input sample, INT64_MIN if unknown - * @see swr_set_compensation(), swr_drop_output(), and swr_inject_silence() are - * function used internally for timestamp compensation. - * @return the output timestamp for the next output sample - */ -int64_t swr_next_pts(struct SwrContext *s, int64_t pts); - -/** - * @} - * - * @name Low-level option setting functions - * These functons provide a means to set low-level options that is not possible - * with the AVOption API. - * @{ - */ - -/** - * Activate resampling compensation ("soft" compensation). This function is - * internally called when needed in swr_next_pts(). - * - * @param[in,out] s allocated Swr context. If it is not initialized, - * or SWR_FLAG_RESAMPLE is not set, swr_init() is - * called with the flag set. - * @param[in] sample_delta delta in PTS per sample - * @param[in] compensation_distance number of samples to compensate for - * @return >= 0 on success, AVERROR error codes if: - * @li @c s is NULL, - * @li @c compensation_distance is less than 0, - * @li @c compensation_distance is 0 but sample_delta is not, - * @li compensation unsupported by resampler, or - * @li swr_init() fails when called. - */ -int swr_set_compensation(struct SwrContext *s, int sample_delta, int compensation_distance); - -/** - * Set a customized input channel mapping. - * - * @param[in,out] s allocated Swr context, not yet initialized - * @param[in] channel_map customized input channel mapping (array of channel - * indexes, -1 for a muted channel) - * @return >= 0 on success, or AVERROR error code in case of failure. - */ -int swr_set_channel_mapping(struct SwrContext *s, const int *channel_map); - -/** - * Generate a channel mixing matrix. - * - * This function is the one used internally by libswresample for building the - * default mixing matrix. It is made public just as a utility function for - * building custom matrices. - * - * @param in_layout input channel layout - * @param out_layout output channel layout - * @param center_mix_level mix level for the center channel - * @param surround_mix_level mix level for the surround channel(s) - * @param lfe_mix_level mix level for the low-frequency effects channel - * @param rematrix_maxval if 1.0, coefficients will be normalized to prevent - * overflow. if INT_MAX, coefficients will not be - * normalized. - * @param[out] matrix mixing coefficients; matrix[i + stride * o] is - * the weight of input channel i in output channel o. - * @param stride distance between adjacent input channels in the - * matrix array - * @param matrix_encoding matrixed stereo downmix mode (e.g. dplii) - * @param log_ctx parent logging context, can be NULL - * @return 0 on success, negative AVERROR code on failure - */ -int swr_build_matrix(uint64_t in_layout, uint64_t out_layout, - double center_mix_level, double surround_mix_level, - double lfe_mix_level, double rematrix_maxval, - double rematrix_volume, double *matrix, - int stride, enum AVMatrixEncoding matrix_encoding, - void *log_ctx); - -/** - * Set a customized remix matrix. - * - * @param s allocated Swr context, not yet initialized - * @param matrix remix coefficients; matrix[i + stride * o] is - * the weight of input channel i in output channel o - * @param stride offset between lines of the matrix - * @return >= 0 on success, or AVERROR error code in case of failure. - */ -int swr_set_matrix(struct SwrContext *s, const double *matrix, int stride); - -/** - * @} - * - * @name Sample handling functions - * @{ - */ - -/** - * Drops the specified number of output samples. - * - * This function, along with swr_inject_silence(), is called by swr_next_pts() - * if needed for "hard" compensation. - * - * @param s allocated Swr context - * @param count number of samples to be dropped - * - * @return >= 0 on success, or a negative AVERROR code on failure - */ -int swr_drop_output(struct SwrContext *s, int count); - -/** - * Injects the specified number of silence samples. - * - * This function, along with swr_drop_output(), is called by swr_next_pts() - * if needed for "hard" compensation. - * - * @param s allocated Swr context - * @param count number of samples to be dropped - * - * @return >= 0 on success, or a negative AVERROR code on failure - */ -int swr_inject_silence(struct SwrContext *s, int count); - -/** - * Gets the delay the next input sample will experience relative to the next output sample. - * - * Swresample can buffer data if more input has been provided than available - * output space, also converting between sample rates needs a delay. - * This function returns the sum of all such delays. - * The exact delay is not necessarily an integer value in either input or - * output sample rate. Especially when downsampling by a large value, the - * output sample rate may be a poor choice to represent the delay, similarly - * for upsampling and the input sample rate. - * - * @param s swr context - * @param base timebase in which the returned delay will be: - * @li if it's set to 1 the returned delay is in seconds - * @li if it's set to 1000 the returned delay is in milliseconds - * @li if it's set to the input sample rate then the returned - * delay is in input samples - * @li if it's set to the output sample rate then the returned - * delay is in output samples - * @li if it's the least common multiple of in_sample_rate and - * out_sample_rate then an exact rounding-free delay will be - * returned - * @returns the delay in 1 / @c base units. - */ -int64_t swr_get_delay(struct SwrContext *s, int64_t base); - -/** - * Find an upper bound on the number of samples that the next swr_convert - * call will output, if called with in_samples of input samples. This - * depends on the internal state, and anything changing the internal state - * (like further swr_convert() calls) will may change the number of samples - * swr_get_out_samples() returns for the same number of input samples. - * - * @param in_samples number of input samples. - * @note any call to swr_inject_silence(), swr_convert(), swr_next_pts() - * or swr_set_compensation() invalidates this limit - * @note it is recommended to pass the correct available buffer size - * to all functions like swr_convert() even if swr_get_out_samples() - * indicates that less would be used. - * @returns an upper bound on the number of samples that the next swr_convert - * will output or a negative value to indicate an error - */ -int swr_get_out_samples(struct SwrContext *s, int in_samples); - -/** - * @} - * - * @name Configuration accessors - * @{ - */ - -/** - * Return the @ref LIBSWRESAMPLE_VERSION_INT constant. - * - * This is useful to check if the build-time libswresample has the same version - * as the run-time one. - * - * @returns the unsigned int-typed version - */ -unsigned swresample_version(void); - -/** - * Return the swr build-time configuration. - * - * @returns the build-time @c ./configure flags - */ -const char *swresample_configuration(void); - -/** - * Return the swr license. - * - * @returns the license of libswresample, determined at build-time - */ -const char *swresample_license(void); - -/** - * @} - * - * @name AVFrame based API - * @{ - */ - -/** - * Convert the samples in the input AVFrame and write them to the output AVFrame. - * - * Input and output AVFrames must have channel_layout, sample_rate and format set. - * - * If the output AVFrame does not have the data pointers allocated the nb_samples - * field will be set using av_frame_get_buffer() - * is called to allocate the frame. - * - * The output AVFrame can be NULL or have fewer allocated samples than required. - * In this case, any remaining samples not written to the output will be added - * to an internal FIFO buffer, to be returned at the next call to this function - * or to swr_convert(). - * - * If converting sample rate, there may be data remaining in the internal - * resampling delay buffer. swr_get_delay() tells the number of - * remaining samples. To get this data as output, call this function or - * swr_convert() with NULL input. - * - * If the SwrContext configuration does not match the output and - * input AVFrame settings the conversion does not take place and depending on - * which AVFrame is not matching AVERROR_OUTPUT_CHANGED, AVERROR_INPUT_CHANGED - * or the result of a bitwise-OR of them is returned. - * - * @see swr_delay() - * @see swr_convert() - * @see swr_get_delay() - * - * @param swr audio resample context - * @param output output AVFrame - * @param input input AVFrame - * @return 0 on success, AVERROR on failure or nonmatching - * configuration. - */ -int swr_convert_frame(SwrContext *swr, - AVFrame *output, const AVFrame *input); - -/** - * Configure or reconfigure the SwrContext using the information - * provided by the AVFrames. - * - * The original resampling context is reset even on failure. - * The function calls swr_close() internally if the context is open. - * - * @see swr_close(); - * - * @param swr audio resample context - * @param output output AVFrame - * @param input input AVFrame - * @return 0 on success, AVERROR on failure. - */ -int swr_config_frame(SwrContext *swr, const AVFrame *out, const AVFrame *in); - -/** - * @} - * @} - */ - -#endif /* SWRESAMPLE_SWRESAMPLE_H */ diff --git a/Externals/ffmpeg/include/libswresample/version.h b/Externals/ffmpeg/include/libswresample/version.h deleted file mode 100644 index 685154982c52..000000000000 --- a/Externals/ffmpeg/include/libswresample/version.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Version macros. - * - * This file is part of libswresample - * - * libswresample is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * libswresample is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with libswresample; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef SWRESAMPLE_VERSION_H -#define SWRESAMPLE_VERSION_H - -/** - * @file - * Libswresample version macros - */ - -#include "libavutil/avutil.h" - -#define LIBSWRESAMPLE_VERSION_MAJOR 2 -#define LIBSWRESAMPLE_VERSION_MINOR 3 -#define LIBSWRESAMPLE_VERSION_MICRO 100 - -#define LIBSWRESAMPLE_VERSION_INT AV_VERSION_INT(LIBSWRESAMPLE_VERSION_MAJOR, \ - LIBSWRESAMPLE_VERSION_MINOR, \ - LIBSWRESAMPLE_VERSION_MICRO) -#define LIBSWRESAMPLE_VERSION AV_VERSION(LIBSWRESAMPLE_VERSION_MAJOR, \ - LIBSWRESAMPLE_VERSION_MINOR, \ - LIBSWRESAMPLE_VERSION_MICRO) -#define LIBSWRESAMPLE_BUILD LIBSWRESAMPLE_VERSION_INT - -#define LIBSWRESAMPLE_IDENT "SwR" AV_STRINGIFY(LIBSWRESAMPLE_VERSION) - -#endif /* SWRESAMPLE_VERSION_H */ diff --git a/Externals/ffmpeg/include/libswscale/swscale.h b/Externals/ffmpeg/include/libswscale/swscale.h deleted file mode 100644 index 7713f51ec662..000000000000 --- a/Externals/ffmpeg/include/libswscale/swscale.h +++ /dev/null @@ -1,336 +0,0 @@ -/* - * Copyright (C) 2001-2011 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef SWSCALE_SWSCALE_H -#define SWSCALE_SWSCALE_H - -/** - * @file - * @ingroup libsws - * external API header - */ - -#include - -#include "libavutil/avutil.h" -#include "libavutil/log.h" -#include "libavutil/pixfmt.h" -#include "version.h" - -/** - * @defgroup libsws libswscale - * Color conversion and scaling library. - * - * @{ - * - * Return the LIBSWSCALE_VERSION_INT constant. - */ -unsigned swscale_version(void); - -/** - * Return the libswscale build-time configuration. - */ -const char *swscale_configuration(void); - -/** - * Return the libswscale license. - */ -const char *swscale_license(void); - -/* values for the flags, the stuff on the command line is different */ -#define SWS_FAST_BILINEAR 1 -#define SWS_BILINEAR 2 -#define SWS_BICUBIC 4 -#define SWS_X 8 -#define SWS_POINT 0x10 -#define SWS_AREA 0x20 -#define SWS_BICUBLIN 0x40 -#define SWS_GAUSS 0x80 -#define SWS_SINC 0x100 -#define SWS_LANCZOS 0x200 -#define SWS_SPLINE 0x400 - -#define SWS_SRC_V_CHR_DROP_MASK 0x30000 -#define SWS_SRC_V_CHR_DROP_SHIFT 16 - -#define SWS_PARAM_DEFAULT 123456 - -#define SWS_PRINT_INFO 0x1000 - -//the following 3 flags are not completely implemented -//internal chrominance subsampling info -#define SWS_FULL_CHR_H_INT 0x2000 -//input subsampling info -#define SWS_FULL_CHR_H_INP 0x4000 -#define SWS_DIRECT_BGR 0x8000 -#define SWS_ACCURATE_RND 0x40000 -#define SWS_BITEXACT 0x80000 -#define SWS_ERROR_DIFFUSION 0x800000 - -#define SWS_MAX_REDUCE_CUTOFF 0.002 - -#define SWS_CS_ITU709 1 -#define SWS_CS_FCC 4 -#define SWS_CS_ITU601 5 -#define SWS_CS_ITU624 5 -#define SWS_CS_SMPTE170M 5 -#define SWS_CS_SMPTE240M 7 -#define SWS_CS_DEFAULT 5 -#define SWS_CS_BT2020 9 - -/** - * Return a pointer to yuv<->rgb coefficients for the given colorspace - * suitable for sws_setColorspaceDetails(). - * - * @param colorspace One of the SWS_CS_* macros. If invalid, - * SWS_CS_DEFAULT is used. - */ -const int *sws_getCoefficients(int colorspace); - -// when used for filters they must have an odd number of elements -// coeffs cannot be shared between vectors -typedef struct SwsVector { - double *coeff; ///< pointer to the list of coefficients - int length; ///< number of coefficients in the vector -} SwsVector; - -// vectors can be shared -typedef struct SwsFilter { - SwsVector *lumH; - SwsVector *lumV; - SwsVector *chrH; - SwsVector *chrV; -} SwsFilter; - -struct SwsContext; - -/** - * Return a positive value if pix_fmt is a supported input format, 0 - * otherwise. - */ -int sws_isSupportedInput(enum AVPixelFormat pix_fmt); - -/** - * Return a positive value if pix_fmt is a supported output format, 0 - * otherwise. - */ -int sws_isSupportedOutput(enum AVPixelFormat pix_fmt); - -/** - * @param[in] pix_fmt the pixel format - * @return a positive value if an endianness conversion for pix_fmt is - * supported, 0 otherwise. - */ -int sws_isSupportedEndiannessConversion(enum AVPixelFormat pix_fmt); - -/** - * Allocate an empty SwsContext. This must be filled and passed to - * sws_init_context(). For filling see AVOptions, options.c and - * sws_setColorspaceDetails(). - */ -struct SwsContext *sws_alloc_context(void); - -/** - * Initialize the swscaler context sws_context. - * - * @return zero or positive value on success, a negative value on - * error - */ -av_warn_unused_result -int sws_init_context(struct SwsContext *sws_context, SwsFilter *srcFilter, SwsFilter *dstFilter); - -/** - * Free the swscaler context swsContext. - * If swsContext is NULL, then does nothing. - */ -void sws_freeContext(struct SwsContext *swsContext); - -/** - * Allocate and return an SwsContext. You need it to perform - * scaling/conversion operations using sws_scale(). - * - * @param srcW the width of the source image - * @param srcH the height of the source image - * @param srcFormat the source image format - * @param dstW the width of the destination image - * @param dstH the height of the destination image - * @param dstFormat the destination image format - * @param flags specify which algorithm and options to use for rescaling - * @param param extra parameters to tune the used scaler - * For SWS_BICUBIC param[0] and [1] tune the shape of the basis - * function, param[0] tunes f(1) and param[1] f´(1) - * For SWS_GAUSS param[0] tunes the exponent and thus cutoff - * frequency - * For SWS_LANCZOS param[0] tunes the width of the window function - * @return a pointer to an allocated context, or NULL in case of error - * @note this function is to be removed after a saner alternative is - * written - */ -struct SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat, - int dstW, int dstH, enum AVPixelFormat dstFormat, - int flags, SwsFilter *srcFilter, - SwsFilter *dstFilter, const double *param); - -/** - * Scale the image slice in srcSlice and put the resulting scaled - * slice in the image in dst. A slice is a sequence of consecutive - * rows in an image. - * - * Slices have to be provided in sequential order, either in - * top-bottom or bottom-top order. If slices are provided in - * non-sequential order the behavior of the function is undefined. - * - * @param c the scaling context previously created with - * sws_getContext() - * @param srcSlice the array containing the pointers to the planes of - * the source slice - * @param srcStride the array containing the strides for each plane of - * the source image - * @param srcSliceY the position in the source image of the slice to - * process, that is the number (counted starting from - * zero) in the image of the first row of the slice - * @param srcSliceH the height of the source slice, that is the number - * of rows in the slice - * @param dst the array containing the pointers to the planes of - * the destination image - * @param dstStride the array containing the strides for each plane of - * the destination image - * @return the height of the output slice - */ -int sws_scale(struct SwsContext *c, const uint8_t *const srcSlice[], - const int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *const dst[], const int dstStride[]); - -/** - * @param dstRange flag indicating the while-black range of the output (1=jpeg / 0=mpeg) - * @param srcRange flag indicating the while-black range of the input (1=jpeg / 0=mpeg) - * @param table the yuv2rgb coefficients describing the output yuv space, normally ff_yuv2rgb_coeffs[x] - * @param inv_table the yuv2rgb coefficients describing the input yuv space, normally ff_yuv2rgb_coeffs[x] - * @param brightness 16.16 fixed point brightness correction - * @param contrast 16.16 fixed point contrast correction - * @param saturation 16.16 fixed point saturation correction - * @return -1 if not supported - */ -int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4], - int srcRange, const int table[4], int dstRange, - int brightness, int contrast, int saturation); - -/** - * @return -1 if not supported - */ -int sws_getColorspaceDetails(struct SwsContext *c, int **inv_table, - int *srcRange, int **table, int *dstRange, - int *brightness, int *contrast, int *saturation); - -/** - * Allocate and return an uninitialized vector with length coefficients. - */ -SwsVector *sws_allocVec(int length); - -/** - * Return a normalized Gaussian curve used to filter stuff - * quality = 3 is high quality, lower is lower quality. - */ -SwsVector *sws_getGaussianVec(double variance, double quality); - -/** - * Scale all the coefficients of a by the scalar value. - */ -void sws_scaleVec(SwsVector *a, double scalar); - -/** - * Scale all the coefficients of a so that their sum equals height. - */ -void sws_normalizeVec(SwsVector *a, double height); - -#if FF_API_SWS_VECTOR -attribute_deprecated SwsVector *sws_getConstVec(double c, int length); -attribute_deprecated SwsVector *sws_getIdentityVec(void); -attribute_deprecated void sws_convVec(SwsVector *a, SwsVector *b); -attribute_deprecated void sws_addVec(SwsVector *a, SwsVector *b); -attribute_deprecated void sws_subVec(SwsVector *a, SwsVector *b); -attribute_deprecated void sws_shiftVec(SwsVector *a, int shift); -attribute_deprecated SwsVector *sws_cloneVec(SwsVector *a); -attribute_deprecated void sws_printVec2(SwsVector *a, AVClass *log_ctx, int log_level); -#endif - -void sws_freeVec(SwsVector *a); - -SwsFilter *sws_getDefaultFilter(float lumaGBlur, float chromaGBlur, - float lumaSharpen, float chromaSharpen, - float chromaHShift, float chromaVShift, - int verbose); -void sws_freeFilter(SwsFilter *filter); - -/** - * Check if context can be reused, otherwise reallocate a new one. - * - * If context is NULL, just calls sws_getContext() to get a new - * context. Otherwise, checks if the parameters are the ones already - * saved in context. If that is the case, returns the current - * context. Otherwise, frees context and gets a new context with - * the new parameters. - * - * Be warned that srcFilter and dstFilter are not checked, they - * are assumed to remain the same. - */ -struct SwsContext *sws_getCachedContext(struct SwsContext *context, - int srcW, int srcH, enum AVPixelFormat srcFormat, - int dstW, int dstH, enum AVPixelFormat dstFormat, - int flags, SwsFilter *srcFilter, - SwsFilter *dstFilter, const double *param); - -/** - * Convert an 8-bit paletted frame into a frame with a color depth of 32 bits. - * - * The output frame will have the same packed format as the palette. - * - * @param src source frame buffer - * @param dst destination frame buffer - * @param num_pixels number of pixels to convert - * @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src - */ -void sws_convertPalette8ToPacked32(const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette); - -/** - * Convert an 8-bit paletted frame into a frame with a color depth of 24 bits. - * - * With the palette format "ABCD", the destination frame ends up with the format "ABC". - * - * @param src source frame buffer - * @param dst destination frame buffer - * @param num_pixels number of pixels to convert - * @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src - */ -void sws_convertPalette8ToPacked24(const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette); - -/** - * Get the AVClass for swsContext. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *sws_get_class(void); - -/** - * @} - */ - -#endif /* SWSCALE_SWSCALE_H */ diff --git a/Externals/ffmpeg/include/libswscale/version.h b/Externals/ffmpeg/include/libswscale/version.h deleted file mode 100644 index ee536723cb57..000000000000 --- a/Externals/ffmpeg/include/libswscale/version.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef SWSCALE_VERSION_H -#define SWSCALE_VERSION_H - -/** - * @file - * swscale version macros - */ - -#include "libavutil/version.h" - -#define LIBSWSCALE_VERSION_MAJOR 4 -#define LIBSWSCALE_VERSION_MINOR 2 -#define LIBSWSCALE_VERSION_MICRO 100 - -#define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \ - LIBSWSCALE_VERSION_MINOR, \ - LIBSWSCALE_VERSION_MICRO) -#define LIBSWSCALE_VERSION AV_VERSION(LIBSWSCALE_VERSION_MAJOR, \ - LIBSWSCALE_VERSION_MINOR, \ - LIBSWSCALE_VERSION_MICRO) -#define LIBSWSCALE_BUILD LIBSWSCALE_VERSION_INT - -#define LIBSWSCALE_IDENT "SwS" AV_STRINGIFY(LIBSWSCALE_VERSION) - -/** - * FF_API_* defines may be placed below to indicate public API that will be - * dropped at a future version bump. The defines themselves are not part of - * the public API and may change, break or disappear at any time. - */ - -#ifndef FF_API_SWS_VECTOR -#define FF_API_SWS_VECTOR (LIBSWSCALE_VERSION_MAJOR < 6) -#endif - -#endif /* SWSCALE_VERSION_H */ diff --git a/Externals/ffmpeg/lib/avcodec.lib b/Externals/ffmpeg/lib/avcodec.lib deleted file mode 100644 index 457ad8659c05..000000000000 Binary files a/Externals/ffmpeg/lib/avcodec.lib and /dev/null differ diff --git a/Externals/ffmpeg/lib/avformat.lib b/Externals/ffmpeg/lib/avformat.lib deleted file mode 100644 index e7bb411c58dd..000000000000 Binary files a/Externals/ffmpeg/lib/avformat.lib and /dev/null differ diff --git a/Externals/ffmpeg/lib/avutil.lib b/Externals/ffmpeg/lib/avutil.lib deleted file mode 100644 index 9105669fc7af..000000000000 Binary files a/Externals/ffmpeg/lib/avutil.lib and /dev/null differ diff --git a/Externals/ffmpeg/lib/swresample.lib b/Externals/ffmpeg/lib/swresample.lib deleted file mode 100644 index 7b3b7e872057..000000000000 Binary files a/Externals/ffmpeg/lib/swresample.lib and /dev/null differ diff --git a/Externals/ffmpeg/lib/swscale.lib b/Externals/ffmpeg/lib/swscale.lib deleted file mode 100644 index d25126fff82d..000000000000 Binary files a/Externals/ffmpeg/lib/swscale.lib and /dev/null differ diff --git a/Externals/fmt/fmt.vcxproj b/Externals/fmt/fmt.vcxproj new file mode 100644 index 000000000000..d1d089e3caf6 --- /dev/null +++ b/Externals/fmt/fmt.vcxproj @@ -0,0 +1,40 @@ + + + + + + {4BC5A148-0AB3-440F-A980-A29B4B999190} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Externals/glslang/.appveyor.yml b/Externals/glslang/.appveyor.yml index 07e269bedff3..bf8c57260350 100644 --- a/Externals/glslang/.appveyor.yml +++ b/Externals/glslang/.appveyor.yml @@ -4,7 +4,7 @@ # build version format version: "{build}" -os: Visual Studio 2013 +os: Visual Studio 2015 platform: - x64 @@ -17,6 +17,20 @@ branches: only: - master +# changes to these files don't need to trigger testing +skip_commits: + files: + - README.md + - README-spirv-remap.txt + - LICENSE.txt + - CODE_OF_CONDUCT.md + - BUILD.* + - WORKSPACE + - kokoro/* + - make-revision + - Android.mk + - _config.yml + # Travis advances the master-tot tag to current top of the tree after # each push into the master branch, because it relies on that tag to # upload build artifacts to the master-tot release. This will cause @@ -31,8 +45,9 @@ matrix: # scripts that run after cloning repository install: - - git clone https://github.com/google/googletest.git External/googletest - C:/Python27/python.exe update_glslang_sources.py + - set PATH=C:\ninja;C:\Python36;%PATH% + - git clone https://github.com/google/googletest.git External/googletest build: parallel: true # enable MSBuild parallel builds @@ -40,7 +55,7 @@ build: build_script: - mkdir build && cd build - - cmake .. -DCMAKE_INSTALL_PREFIX=install + - cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=install .. - cmake --build . --config %CONFIGURATION% --target install test_script: @@ -60,10 +75,13 @@ after_test: # Zip all glslang artifacts for uploading and deploying - 7z a glslang-master-windows-"%PLATFORM%"-"%CONFIGURATION%".zip bin\glslangValidator.exe + bin\spirv-remap.exe include\glslang\* - include\SPIRV\* + lib\GenericCodeGen%SUFFIX%.lib lib\glslang%SUFFIX%.lib + lib\glslang-default-resource-limits%SUFFIX%.lib lib\HLSL%SUFFIX%.lib + lib\MachineIndependent%SUFFIX%.lib lib\OGLCompiler%SUFFIX%.lib lib\OSDependent%SUFFIX%.lib lib\SPIRV%SUFFIX%.lib @@ -87,4 +105,4 @@ deploy: force_update: true on: branch: master - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 diff --git a/Externals/glslang/.clang-format b/Externals/glslang/.clang-format index daf87985eb71..8c73a52feef3 100644 --- a/Externals/glslang/.clang-format +++ b/Externals/glslang/.clang-format @@ -1,7 +1,8 @@ Language: Cpp IndentWidth: 4 +PointerAlignment: Left BreakBeforeBraces: Custom -BraceWrapping: { AfterFunction: true, AfterControlStatement: true } +BraceWrapping: { AfterFunction: true, AfterControlStatement: false } IndentCaseLabels: false ReflowComments: false ColumnLimit: 120 diff --git a/Externals/glslang/.gitattributes b/Externals/glslang/.gitattributes index cade39089b2c..2929e835895a 100644 --- a/Externals/glslang/.gitattributes +++ b/Externals/glslang/.gitattributes @@ -8,10 +8,10 @@ *.txt text # source code can be native and normalized, but simpler if lf everywhere; will try that way -*.h text eof=lf -*.c text eof=lf -*.cpp text eof=lf -*.y text eof=lf -*.out text eof=lf -*.conf text eof=lf -*.err text eof=lf +*.h text eol=lf +*.c text eol=lf +*.cpp text eol=lf +*.y text eol=lf +*.out text eol=lf +*.conf text eol=lf +*.err text eol=lf diff --git a/Externals/glslang/.gitignore b/Externals/glslang/.gitignore index a1fe3944b12b..ab25cec2deed 100644 --- a/Externals/glslang/.gitignore +++ b/Externals/glslang/.gitignore @@ -2,9 +2,19 @@ *.a *.so *.exe +.vscode/ tags TAGS +bazel-* build/ Test/localResults/ External/googletest External/spirv-tools +out/ + +# GN generated files +.cipd/ +*.gclient_entries +third_party/ +buildtools/ +tools/ diff --git a/Externals/glslang/.travis.yml b/Externals/glslang/.travis.yml index 4fe4b5e5ba95..cb0392efea4b 100644 --- a/Externals/glslang/.travis.yml +++ b/Externals/glslang/.travis.yml @@ -48,25 +48,41 @@ install: - if [[ "$TRAVIS_OS_NAME" == "linux" && "$CC" == "clang" ]]; then export CC=clang-3.6 CXX=clang++-3.6; fi - # Download Android NDK and Android CMake toolchain file. + # Download a recent Android NDK and use its android.toolchain.cmake file. - if [[ "$BUILD_NDK" == "ON" ]]; then - git clone --depth=1 https://github.com/urho3d/android-ndk.git $HOME/android-ndk; export ANDROID_NDK=$HOME/android-ndk; - git clone --depth=1 https://github.com/taka-no-me/android-cmake.git $HOME/android-cmake; - export TOOLCHAIN_PATH=$HOME/android-cmake/android.toolchain.cmake; + git init $ANDROID_NDK; + pushd $ANDROID_NDK; + git remote add dneto0 https://github.com/dneto0/android-ndk.git; + git fetch --depth=1 dneto0 r17b-strip; + git checkout FETCH_HEAD; + popd; + export TOOLCHAIN_PATH=$ANDROID_NDK/build/cmake/android.toolchain.cmake; fi before_script: - - git clone --depth=1 https://github.com/google/googletest.git External/googletest + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + - mkdir -p External/googletest + - cd External/googletest + - git init + - git remote add origin https://github.com/google/googletest.git + - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + - git reset --hard FETCH_HEAD + - cd ../.. + # get spirv-tools and spirv-headers - ./update_glslang_sources.py script: - mkdir build && cd build # For Android, do release building using NDK without testing. + # Use android-14, the oldest native API level supporeted by NDK r17b. + # We can use newer API levels if we want. # For Linux and macOS, do debug/release building with testing. - if [[ "$BUILD_NDK" == "ON" ]]; then cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_PATH} - -DANDROID_NATIVE_API_LEVEL=android-12 + -DANDROID_NATIVE_API_LEVEL=android-14 -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI="armeabi-v7a with NEON" -DBUILD_TESTING=OFF ..; @@ -93,9 +109,11 @@ after_success: zip ${TARBALL} bin/glslangValidator include/glslang/* - include/SPIRV/* + lib/libGenericCodeGen${SUFFIX}.a lib/libglslang${SUFFIX}.a + lib/libglslang-default-resource-limits${SUFFIX}.a lib/libHLSL${SUFFIX}.a + lib/libMachineIndependent${SUFFIX}.a lib/libOGLCompiler${SUFFIX}.a lib/libOSDependent${SUFFIX}.a lib/libSPIRV${SUFFIX}.a diff --git a/Externals/glslang/CMakeLists.txt b/Externals/glslang/CMakeLists.txt index 7a4ab7cba016..e6d171d8d8a8 100644 --- a/Externals/glslang/CMakeLists.txt +++ b/Externals/glslang/CMakeLists.txt @@ -1,6 +1,13 @@ set(SRCS glslang/GenericCodeGen/CodeGen.cpp glslang/GenericCodeGen/Link.cpp + #glslang/HLSL/hlslAttributes.cpp + #glslang/HLSL/hlslGrammar.cpp + #glslang/HLSL/hlslOpMap.cpp + #glslang/HLSL/hlslParseables.cpp + #glslang/HLSL/hlslParseHelper.cpp + #glslang/HLSL/hlslScanContext.cpp + #glslang/HLSL/hlslTokenStream.cpp glslang/MachineIndependent/attribute.cpp glslang/MachineIndependent/Constant.cpp glslang/MachineIndependent/glslang_tab.cpp @@ -26,6 +33,7 @@ set(SRCS glslang/MachineIndependent/RemoveTree.cpp glslang/MachineIndependent/Scan.cpp glslang/MachineIndependent/ShaderLang.cpp + glslang/MachineIndependent/SpirvIntrinsics.cpp glslang/MachineIndependent/SymbolTable.cpp glslang/MachineIndependent/Versions.cpp OGLCompilersDLL/InitializeDll.cpp @@ -37,6 +45,7 @@ set(SRCS SPIRV/SpvBuilder.cpp SPIRV/SpvPostProcess.cpp SPIRV/SPVRemapper.cpp + SPIRV/SpvTools.cpp StandAlone/ResourceLimits.cpp ) diff --git a/Externals/glslang/CMakeLists.txt.dist b/Externals/glslang/CMakeLists.txt.dist index d6fc8d42aa5a..c318eef9aa6e 100644 --- a/Externals/glslang/CMakeLists.txt.dist +++ b/Externals/glslang/CMakeLists.txt.dist @@ -1,9 +1,48 @@ +# Copyright (C) 2020 The Khronos Group Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of The Khronos Group Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + # increase to 3.1 once all major distributions # include a version of CMake >= 3.1 cmake_minimum_required(VERSION 2.8.12) if (POLICY CMP0048) cmake_policy(SET CMP0048 NEW) endif() +if(POLICY CMP0054) + cmake_policy(SET CMP0054 NEW) +endif() + +project(glslang LANGUAGES CXX) + set_property(GLOBAL PROPERTY USE_FOLDERS ON) # Enable compile commands database @@ -24,6 +63,14 @@ if(BUILD_SHARED_LIBS) set(LIB_TYPE SHARED) endif() +if ("${CMAKE_BUILD_TYPE}" STREQUAL "") + # This logic inside SPIRV-Tools, which can upset build target dependencies + # if changed after targets are already defined. To prevent these issues, + # ensure CMAKE_BUILD_TYPE is assigned early and at the glslang root scope. + message(STATUS "No build type selected, default to Debug") + set(CMAKE_BUILD_TYPE "Debug") +endif() + option(SKIP_GLSLANG_INSTALL "Skip installation" ${SKIP_GLSLANG_INSTALL}) if(NOT ${SKIP_GLSLANG_INSTALL}) set(ENABLE_GLSLANG_INSTALL ON) @@ -32,13 +79,32 @@ option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" ON) option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" ON) -option(ENABLE_GLSLANG_WEB "Reduces glslang to minimum needed for web use" OFF) -option(ENABLE_GLSLANG_WEB_DEVEL "For ENABLE_GLSLANG_WEB builds, enables compilation error messages" OFF) -option(ENABLE_EMSCRIPTEN_SINGLE_FILE "If using Emscripten, enables SINGLE_FILE build" OFF) -option(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE "If using Emscripten, builds to run on Node instead of Web" OFF) - -CMAKE_DEPENDENT_OPTION(ENABLE_HLSL "Enables HLSL input support" ON "NOT ENABLE_GLSLANG_WEB" OFF) - +option(ENABLE_GLSLANG_JS + "If using Emscripten, build glslang.js. Otherwise, builds a sample executable for binary-size testing." OFF) +CMAKE_DEPENDENT_OPTION(ENABLE_GLSLANG_WEBMIN + "Reduces glslang to minimum needed for web use" + OFF "ENABLE_GLSLANG_JS" + OFF) +CMAKE_DEPENDENT_OPTION(ENABLE_GLSLANG_WEBMIN_DEVEL + "For ENABLE_GLSLANG_WEBMIN builds, enables compilation error messages" + OFF "ENABLE_GLSLANG_WEBMIN" + OFF) +CMAKE_DEPENDENT_OPTION(ENABLE_EMSCRIPTEN_SINGLE_FILE + "If using Emscripten, enables SINGLE_FILE build" + OFF "ENABLE_GLSLANG_JS AND EMSCRIPTEN" + OFF) +CMAKE_DEPENDENT_OPTION(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE + "If using Emscripten, builds to run on Node instead of Web" + OFF "ENABLE_GLSLANG_JS AND EMSCRIPTEN" + OFF) + +CMAKE_DEPENDENT_OPTION(ENABLE_HLSL + "Enables HLSL input support" + ON "NOT ENABLE_GLSLANG_WEBMIN" + OFF) + +option(ENABLE_RTTI "Enables RTTI" OFF) +option(ENABLE_EXCEPTIONS "Enables Exceptions" OFF) option(ENABLE_OPT "Enables spirv-opt capability if present" ON) option(ENABLE_PCH "Enables Precompiled header" ON) option(ENABLE_CTEST "Enables testing" ON) @@ -55,20 +121,6 @@ if(USE_CCACHE) endif(CCACHE_FOUND) endif() -# Precompiled header macro. Parameters are source file list and filename for pch cpp file. -macro(glslang_pch SRCS PCHCPP) - if(MSVC AND CMAKE_GENERATOR MATCHES "^Visual Studio" AND ENABLE_PCH) - set(PCH_NAME "$(IntDir)\\pch.pch") - # make source files use/depend on PCH_NAME - set_source_files_properties(${${SRCS}} PROPERTIES COMPILE_FLAGS "/Yupch.h /FIpch.h /Fp${PCH_NAME} /Zm300" OBJECT_DEPENDS "${PCH_NAME}") - # make PCHCPP file compile and generate PCH_NAME - set_source_files_properties(${PCHCPP} PROPERTIES COMPILE_FLAGS "/Ycpch.h /Fp${PCH_NAME} /Zm300" OBJECT_OUTPUTS "${PCH_NAME}") - list(APPEND ${SRCS} "${PCHCPP}") - endif() -endmacro(glslang_pch) - -project(glslang) - if(ENABLE_CTEST) include(CTest) endif() @@ -77,16 +129,17 @@ if(ENABLE_HLSL) add_definitions(-DENABLE_HLSL) endif(ENABLE_HLSL) -if(ENABLE_GLSLANG_WEB) +if(ENABLE_GLSLANG_WEBMIN) add_definitions(-DGLSLANG_WEB) - if(ENABLE_GLSLANG_WEB_DEVEL) + if(ENABLE_GLSLANG_WEBMIN_DEVEL) add_definitions(-DGLSLANG_WEB_DEVEL) - endif(ENABLE_GLSLANG_WEB_DEVEL) -endif(ENABLE_GLSLANG_WEB) + endif(ENABLE_GLSLANG_WEBMIN_DEVEL) +endif(ENABLE_GLSLANG_WEBMIN) if(WIN32) set(CMAKE_DEBUG_POSTFIX "d") - if(MSVC) + option(OVERRIDE_MSVCCRT "Overrides runtime of MSVC " ON) + if(MSVC AND OVERRIDE_MSVCCRT) include(ChooseMSVCCRT.cmake) endif(MSVC) add_definitions(-DGLSLANG_OSINCLUDE_WIN32) @@ -100,45 +153,73 @@ if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable -fno-exceptions) add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over. - add_compile_options(-fno-rtti) -elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") + if(NOT ENABLE_RTTI) + add_compile_options(-fno-rtti) + endif() + if(NOT ENABLE_EXCEPTIONS) + add_compile_options(-fno-exceptions) + endif() + if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0.0") + add_compile_options(-Werror=deprecated-copy) + endif() + + if(NOT CMAKE_VERSION VERSION_LESS "3.13") + # Error if there's symbols that are not found at link time. + # add_link_options() was added in CMake 3.13 - if using an earlier + # version don't set this - it should be caught by presubmits anyway. + add_link_options("-Wl,--no-undefined") + endif() +elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) add_compile_options(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs -Wunused-parameter -Wunused-value -Wunused-variable) add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over. - add_compile_options(-fno-rtti) -elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "MSVC") - add_compile_options(/GR-) # Disable RTTI -endif() - -if(EMSCRIPTEN) - add_compile_options(-Os -fno-exceptions) - add_compile_options("SHELL: -s WASM=1") - add_compile_options("SHELL: -s WASM_OBJECT_FILES=0") - add_link_options(-Os) - add_link_options("SHELL: -s FILESYSTEM=0") - add_link_options("SHELL: --llvm-lto 1") - add_link_options("SHELL: --closure 1") - add_link_options("SHELL: -s ALLOW_MEMORY_GROWTH=1") - - if(ENABLE_EMSCRIPTEN_SINGLE_FILE) - add_link_options("SHELL: -s SINGLE_FILE=1") - endif(ENABLE_EMSCRIPTEN_SINGLE_FILE) -else() - if(ENABLE_GLSLANG_WEB) - if(MSVC) - add_compile_options(/Os /GR-) + if(NOT ENABLE_RTTI) + add_compile_options(-fno-rtti) + endif() + if(NOT ENABLE_EXCEPTIONS) + add_compile_options(-fno-exceptions) + endif() + + if(NOT CMAKE_VERSION VERSION_LESS "3.13") + # Error if there's symbols that are not found at link time. + # add_link_options() was added in CMake 3.13 - if using an earlier + # version don't set this - it should be caught by presubmits anyway. + add_link_options("-Wl,-undefined,error") + endif() +elseif(MSVC) + if(NOT ENABLE_RTTI) + string(FIND "${CMAKE_CXX_FLAGS}" "/GR" MSVC_HAS_GR) + if(MSVC_HAS_GR) + string(REGEX REPLACE "/GR" "/GR-" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") else() - add_compile_options(-Os -fno-exceptions) - add_link_options(-Os) + add_compile_options(/GR-) # Disable RTTI + endif() + endif() + if(ENABLE_EXCEPTIONS) + add_compile_options(/EHsc) # Enable Exceptions + else() + string(REGEX REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") # Try to remove default /EHsc cxx_flag + add_compile_options(/D_HAS_EXCEPTIONS=0) + endif() +endif() + +if(ENABLE_GLSLANG_JS) + if(MSVC) + add_compile_options(/Os /GR-) + else() + add_compile_options(-Os -fno-rtti -fno-exceptions) + if(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) + add_compile_options(-Wno-unused-parameter) + add_compile_options(-Wno-unused-variable -Wno-unused-const-variable) endif() - endif(ENABLE_GLSLANG_WEB) -endif(EMSCRIPTEN) + endif() +endif(ENABLE_GLSLANG_JS) # Request C++11 if(${CMAKE_VERSION} VERSION_LESS 3.1) # CMake versions before 3.1 do not understand CMAKE_CXX_STANDARD # remove this block once CMake >=3.1 has fixated in the ecosystem - add_compile_options(-std=c++11) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") else() set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -154,13 +235,76 @@ function(glslang_set_link_args TARGET) endif() endfunction(glslang_set_link_args) -# CMake needs to find the right version of python, right from the beginning, -# otherwise, it will find the wrong version and fail later +if(NOT COMMAND find_host_package) + macro(find_host_package) + find_package(${ARGN}) + endmacro() +endif() + +# Root directory for build-time generated include files +set(GLSLANG_GENERATED_INCLUDEDIR "${CMAKE_BINARY_DIR}/include") + +################################################################################ +# Build version information generation +################################################################################ +include(parse_version.cmake) +set(GLSLANG_CHANGES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CHANGES.md") +set(GLSLANG_BUILD_INFO_H_TMPL "${CMAKE_CURRENT_SOURCE_DIR}/build_info.h.tmpl") +set(GLSLANG_BUILD_INFO_H "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/build_info.h") + +parse_version(${GLSLANG_CHANGES_FILE} GLSLANG) + +function(configurate_version) + set(major ${GLSLANG_VERSION_MAJOR}) + set(minor ${GLSLANG_VERSION_MINOR}) + set(patch ${GLSLANG_VERSION_PATCH}) + set(flavor ${GLSLANG_VERSION_FLAVOR}) + configure_file(${GLSLANG_BUILD_INFO_H_TMPL} ${GLSLANG_BUILD_INFO_H} @ONLY) +endfunction() + +configurate_version() + +# glslang_add_build_info_dependency() adds the glslang-build-info dependency and +# generated include directories to target. +function(glslang_add_build_info_dependency target) + target_include_directories(${target} PUBLIC $) +endfunction() + +# glslang_only_export_explicit_symbols() makes the symbol visibility hidden by +# default for when building shared libraries, and sets the +# GLSLANG_IS_SHARED_LIBRARY define, and GLSLANG_EXPORTING to 1 when specifically +# building . +function(glslang_only_export_explicit_symbols target) + if(BUILD_SHARED_LIBS) + target_compile_definitions(${target} PUBLIC "GLSLANG_IS_SHARED_LIBRARY=1") + if(WIN32) + target_compile_definitions(${target} PRIVATE "GLSLANG_EXPORTING=1") + else() + target_compile_options(${target} PRIVATE "-fvisibility=hidden") + endif() + endif() +endfunction() + +# glslang_pch() adds precompiled header rules to for the pre-compiled +# header file . As target_precompile_headers() was added in CMake 3.16, +# this is a no-op if called on earlier versions of CMake. +if(NOT CMAKE_VERSION VERSION_LESS "3.16" AND ENABLE_PCH) + function(glslang_pch target pch) + target_precompile_headers(${target} PRIVATE ${pch}) + endfunction() +else() + function(glslang_pch target pch) + endfunction() + if(ENABLE_PCH) + message("Your CMake version is ${CMAKE_VERSION}. Update to at least 3.16 to enable precompiled headers to speed up incremental builds") + endif() +endif() + if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External) - find_package(PythonInterp 3 REQUIRED) + find_host_package(PythonInterp 3 REQUIRED) - # We depend on these for later projects, so they should come first. - add_subdirectory(External) + # We depend on these for later projects, so they should come first. + add_subdirectory(External) endif() if(NOT TARGET SPIRV-Tools-opt) @@ -190,7 +334,7 @@ if(ENABLE_CTEST) add_subdirectory(gtests) endif() -if(BUILD_TESTING) +if(ENABLE_CTEST AND BUILD_TESTING) # glslang-testsuite runs a bash script on Windows. # Make sure to use '-o igncr' flag to ignore carriage returns (\r). set(IGNORE_CR_FLAG "") @@ -211,4 +355,4 @@ if(BUILD_TESTING) add_test(NAME glslang-testsuite COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} ${REMAP_PATH} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/) -endif(BUILD_TESTING) +endif() diff --git a/Externals/glslang/ChooseMSVCCRT.cmake b/Externals/glslang/ChooseMSVCCRT.cmake index 209788174ff9..b1561263c7e1 100644 --- a/Externals/glslang/ChooseMSVCCRT.cmake +++ b/Externals/glslang/ChooseMSVCCRT.cmake @@ -1,3 +1,36 @@ +# Copyright (C) 2020 The Khronos Group Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of The Khronos Group Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + # The macro choose_msvc_crt() takes a list of possible # C runtimes to choose from, in the form of compiler flags, # to present to the user. (MTd for /MTd, etc) diff --git a/Externals/glslang/External/CMakeLists.txt b/Externals/glslang/External/CMakeLists.txt index 6ff4f47acdbb..cbabd2e3b4ac 100644 --- a/Externals/glslang/External/CMakeLists.txt +++ b/Externals/glslang/External/CMakeLists.txt @@ -1,3 +1,36 @@ +# Copyright (C) 2020 The Khronos Group Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of The Khronos Group Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + # Suppress all warnings from external projects. set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS -w) diff --git a/Externals/glslang/LICENSE.txt b/Externals/glslang/LICENSE.txt index a10c0944f88e..054e68a4614e 100644 --- a/Externals/glslang/LICENSE.txt +++ b/Externals/glslang/LICENSE.txt @@ -1,6 +1,6 @@ Here, glslang proper means core GLSL parsing, HLSL parsing, and SPIR-V code -generation. Glslang proper requires use of two licenses, one that covers -non-preprocessing and an additional one that covers preprocessing. +generation. Glslang proper requires use of a number of licenses, one that covers +preprocessing and others that covers non-preprocessing. Bison was removed long ago. You can build glslang from the source grammar, using tools of your choice, without using bison or any bison files. @@ -23,6 +23,10 @@ Other parts, outside of glslang proper, include: The core of glslang-proper, minus the preprocessor is licenced as follows: +-------------------------------------------------------------------------------- +3-Clause BSD License +-------------------------------------------------------------------------------- + // // Copyright (C) 2015-2018 Google, Inc. // Copyright (C) @@ -59,9 +63,887 @@ The core of glslang-proper, minus the preprocessor is licenced as follows: // POSSIBILITY OF SUCH DAMAGE. // + +-------------------------------------------------------------------------------- +2-Clause BSD License +-------------------------------------------------------------------------------- + +Copyright 2020 The Khronos Group Inc + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +-------------------------------------------------------------------------------- +The MIT License +-------------------------------------------------------------------------------- + +Copyright 2020 The Khronos Group Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 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 Software. + +THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +-------------------------------------------------------------------------------- +APACHE LICENSE, VERSION 2.0 +-------------------------------------------------------------------------------- + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + -------------------------------------------------------------------------------- +GPL 3 with special bison exception +-------------------------------------------------------------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. -The preprocessor has the core license stated above, plus an additional licence: + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + +Bison Exception + +As a special exception, you may create a larger work that contains part or all +of the Bison parser skeleton and distribute that work under terms of your +choice, so long as that work isn't itself a parser generator using the skeleton +or a modified version thereof as a parser skeleton. Alternatively, if you +modify or redistribute the parser skeleton itself, you may (at your option) +remove this special exception, which will cause the skeleton and the resulting +Bison output files to be licensed under the GNU General Public License without +this special exception. + +This special exception was added by the Free Software Foundation in version +2.2 of Bison. + + END OF TERMS AND CONDITIONS + +-------------------------------------------------------------------------------- +================================================================================ +-------------------------------------------------------------------------------- + +The preprocessor has the core licenses stated above, plus additional licences: /****************************************************************************\ Copyright (c) 2002, NVIDIA Corporation. @@ -106,3 +988,29 @@ NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \****************************************************************************/ + +/* +** Copyright (c) 2014-2016 The Khronos Group Inc. +** +** 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. +** +** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS +** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND +** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +** +** 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. +*/ diff --git a/Externals/glslang/OGLCompilersDLL/CMakeLists.txt b/Externals/glslang/OGLCompilersDLL/CMakeLists.txt index e0096743b308..0b007d45c6dc 100644 --- a/Externals/glslang/OGLCompilersDLL/CMakeLists.txt +++ b/Externals/glslang/OGLCompilersDLL/CMakeLists.txt @@ -1,3 +1,36 @@ +# Copyright (C) 2020 The Khronos Group Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of The Khronos Group Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + set(SOURCES InitializeDll.cpp InitializeDll.h) add_library(OGLCompiler STATIC ${SOURCES}) diff --git a/Externals/glslang/README.md b/Externals/glslang/README.md index 67801e47909a..48118b2943d4 100644 --- a/Externals/glslang/README.md +++ b/Externals/glslang/README.md @@ -1,44 +1,77 @@ -Also see the Khronos landing page for glslang as a reference front end: +# News -https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/ +1. Visual Studio 2013 is no longer supported + + [As scheduled](https://github.com/KhronosGroup/glslang/blob/9eef54b2513ca6b40b47b07d24f453848b65c0df/README.md#planned-deprecationsremovals), +Microsoft Visual Studio 2013 is no longer officially supported. \ + Please upgrade to at least Visual Studio 2015. + +2. The versioning scheme is being improved, and you might notice some differences. This is currently WIP, but will be coming soon. See, for example, PR #2277. -The above page includes where to get binaries, and is kept up to date -regarding the feature level of glslang. +3. If you get a new **compilation error due to a missing header**, it might be caused by this planned removal: -glslang -======= +**SPIRV Folder, 1-May, 2020.** Glslang, when installed through CMake, +will install a `SPIRV` folder into `${CMAKE_INSTALL_INCLUDEDIR}`. +This `SPIRV` folder is being moved to `glslang/SPIRV`. +During the transition the `SPIRV` folder will be installed into both locations. +The old install of `SPIRV/` will be removed as a CMake install target no sooner than May 1, 2020. +See issue #1964. -[![Build Status](https://travis-ci.org/KhronosGroup/glslang.svg?branch=master)](https://travis-ci.org/KhronosGroup/glslang) -[![Build status](https://ci.appveyor.com/api/projects/status/q6fi9cb0qnhkla68/branch/master?svg=true)](https://ci.appveyor.com/project/Khronoswebmaster/glslang/branch/master) +If people are only using this location to get spirv.hpp, I recommend they get that from [SPIRV-Headers](https://github.com/KhronosGroup/SPIRV-Headers) instead. -An OpenGL and OpenGL ES shader front end and validator. +[![appveyor status](https://ci.appveyor.com/api/projects/status/q6fi9cb0qnhkla68/branch/master?svg=true)](https://ci.appveyor.com/project/Khronoswebmaster/glslang/branch/master) +![Continuous Deployment](https://github.com/KhronosGroup/glslang/actions/workflows/continuous_deployment.yml/badge.svg) + +# Glslang Components and Status There are several components: -1. A GLSL/ESSL front-end for reference validation and translation of GLSL/ESSL into an AST. +### Reference Validator and GLSL/ESSL -> AST Front End + +An OpenGL GLSL and OpenGL|ES GLSL (ESSL) front-end for reference validation and translation of GLSL/ESSL into an internal abstract syntax tree (AST). + +**Status**: Virtually complete, with results carrying similar weight as the specifications. + +### HLSL -> AST Front End + +An HLSL front-end for translation of an approximation of HLSL to glslang's AST form. + +**Status**: Partially complete. Semantics are not reference quality and input is not validated. +This is in contrast to the [DXC project](https://github.com/Microsoft/DirectXShaderCompiler), which receives a much larger investment and attempts to have definitive/reference-level semantics. + +See [issue 362](https://github.com/KhronosGroup/glslang/issues/362) and [issue 701](https://github.com/KhronosGroup/glslang/issues/701) for current status. + +### AST -> SPIR-V Back End + +Translates glslang's AST to the Khronos-specified SPIR-V intermediate language. -2. An HLSL front-end for translation of a broad generic HLL into the AST. See [issue 362](https://github.com/KhronosGroup/glslang/issues/362) and [issue 701](https://github.com/KhronosGroup/glslang/issues/701) for current status. +**Status**: Virtually complete. -3. A SPIR-V back end for translating the AST to SPIR-V. +### Reflector -4. A standalone wrapper, `glslangValidator`, that can be used as a command-line tool for the above. +An API for getting reflection information from the AST, reflection types/variables/etc. from the HLL source (not the SPIR-V). -How to add a feature protected by a version/extension/stage/profile: See the -comment in `glslang/MachineIndependent/Versions.cpp`. +**Status**: There is a large amount of functionality present, but no specification/goal to measure completeness against. It is accurate for the input HLL and AST, but only approximate for what would later be emitted for SPIR-V. + +### Standalone Wrapper + +`glslangValidator` is command-line tool for accessing the functionality above. + +Status: Complete. Tasks waiting to be done are documented as GitHub issues. -Deprecations ------------- +## Other References + +Also see the Khronos landing page for glslang as a reference front end: + +https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/ + +The above page, while not kept up to date, includes additional information regarding glslang as a reference validator. -1. GLSLang, when installed through CMake, will install a `SPIRV` folder into -`${CMAKE_INSTALL_INCLUDEDIR}`. This `SPIRV` folder is being moved to -`glslang/SPIRV`. During the transition the `SPIRV` folder will be installed into -both locations. The old install of `SPIRV/` will be removed as a CMake install -target no sooner then May 1, 2020. See issue #1964. +# How to Use Glslang -Execution of Standalone Wrapper -------------------------------- +## Execution of Standalone Wrapper To use the standalone binary form, execute `glslangValidator`, and it will print a usage statement. Basic operation is to give it a file containing a shader, @@ -52,11 +85,18 @@ The applied stage-specific rules are based on the file extension: * `.frag` for a fragment shader * `.comp` for a compute shader -There is also a non-shader extension +For ray tracing pipeline shaders: +* `.rgen` for a ray generation shader +* `.rint` for a ray intersection shader +* `.rahit` for a ray any-hit shader +* `.rchit` for a ray closest-hit shader +* `.rmiss` for a ray miss shader +* `.rcall` for a callable shader + +There is also a non-shader extension: * `.conf` for a configuration file of limits, see usage statement for example -Building --------- +## Building (CMake) Instead of building manually, you can also download the binaries for your platform directly from the [master-tot release][master-tot-release] on GitHub. @@ -67,7 +107,7 @@ branch. ### Dependencies * A C++11 compiler. - (For MSVS: 2015 is recommended, 2013 is fully supported/tested, and 2010 support is attempted, but not tested.) + (For MSVS: use 2015 or later.) * [CMake][cmake]: for generating compilation targets. * make: _Linux_, ninja is an alternative, if configured. * [Python 3.x][python]: for executing SPIRV-Tools scripts. (Optional if not using SPIRV-Tools and the 'External' subdirectory does not exist.) @@ -79,7 +119,7 @@ branch. The following steps assume a Bash shell. On Windows, that could be the Git Bash shell or some other shell of your choosing. -#### 1) Check-Out this project +#### 1) Check-Out this project ```bash cd @@ -93,12 +133,12 @@ cd git clone https://github.com/google/googletest.git External/googletest ``` -If you want to use googletest with Visual Studio 2013, you also need to check out an older version: +TEMPORARY NOTICE: additionally perform the following to avoid a current +breakage in googletest: ```bash -# to use googletest with Visual Studio 2013 cd External/googletest -git checkout 440527a61e1c91188195f7de212c63c77e8f0a45 +git checkout 0c400f67fcf305869c5fb113dd296eca266c9725 cd ../.. ``` @@ -127,6 +167,14 @@ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" $SOURCE # "Release" (for CMAKE_BUILD_TYPE) could also be "Debug" or "RelWithDebInfo" ``` +For building on Android: +```bash +cmake $SOURCE_DIR -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DANDROID_ABI=arm64-v8a -DCMAKE_BUILD_TYPE=Release -DANDROID_STL=c++_static -DANDROID_PLATFORM=android-24 -DCMAKE_SYSTEM_NAME=Android -DANDROID_TOOLCHAIN=clang -DANDROID_ARM_MODE=arm -DCMAKE_MAKE_PROGRAM=$ANDROID_NDK_ROOT/prebuilt/linux-x86_64/bin/make -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_ROOT/build/cmake/android.toolchain.cmake +# If on Windows will be -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK_ROOT%\prebuilt\windows-x86_64\bin\make.exe +# -G is needed for building on Windows +# -DANDROID_ABI can also be armeabi-v7a for 32 bit +``` + For building on Windows: ```bash @@ -153,6 +201,36 @@ cmake --build . --config Release --target install If using MSVC, after running CMake to configure, use the Configuration Manager to check the `INSTALL` project. +### Building (GN) + +glslang can also be built with the [GN build system](https://gn.googlesource.com/gn/). + +#### 1) Install `depot_tools` + +Download [depot_tools.zip](https://storage.googleapis.com/chrome-infra/depot_tools.zip), +extract to a directory, and add this directory to your `PATH`. + +#### 2) Synchronize dependencies and generate build files + +This only needs to be done once after updating `glslang`. + +With the current directory set to your `glslang` checkout, type: + +```bash +./update_glslang_sources.py +gclient sync --gclientfile=standalone.gclient +gn gen out/Default +``` + +#### 3) Build + +With the current directory set to your `glslang` checkout, type: + +```bash +cd out/Default +ninja +``` + ### If you need to change the GLSL grammar The grammar in `glslang/MachineIndependent/glslang.y` has to be recompiled with @@ -176,31 +254,45 @@ With no arguments it builds the full grammar, and with a "web" argument, the web grammar subset (see more about the web subset in the next section). ### Building to WASM for the Web and Node +### Building a standalone JS/WASM library for the Web and Node Use the steps in [Build Steps](#build-steps), with the following notes/exceptions: -* For building the web subset of core glslang: - + execute `updateGrammar web` from the glslang subdirectory - (or if using your own scripts, `m4` needs a `-DGLSLANG_WEB` argument) - + set `-DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF` - + turn on `-DENABLE_GLSLANG_WEB=ON` - + optionally, for GLSL compilation error messages, turn on `-DENABLE_GLSLANG_WEB_DEVEL=ON` * `emsdk` needs to be present in your executable search path, *PATH* for - Bash-like enivironments - + [Instructions located - here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install) + Bash-like environments: + + [Instructions located here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install) * Wrap cmake call: `emcmake cmake` +* Set `-DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF`. +* Set `-DENABLE_HLSL=OFF` if HLSL is not needed. +* For a standalone JS/WASM library, turn on `-DENABLE_GLSLANG_JS=ON`. +* For building a minimum-size web subset of core glslang: + + turn on `-DENABLE_GLSLANG_WEBMIN=ON` (disables HLSL) + + execute `updateGrammar web` from the glslang subdirectory + (or if using your own scripts, `m4` needs a `-DGLSLANG_WEB` argument) + + optionally, for GLSL compilation error messages, turn on + `-DENABLE_GLSLANG_WEBMIN_DEVEL=ON` * To get a fully minimized build, make sure to use `brotli` to compress the .js and .wasm files Example: ```sh -emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_WEB=ON \ +emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON \ -DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF .. ``` -Testing -------- +## Building glslang - Using vcpkg + +You can download and install glslang using the [vcpkg](https://github.com/Microsoft/vcpkg) dependency manager: + + git clone https://github.com/Microsoft/vcpkg.git + cd vcpkg + ./bootstrap-vcpkg.sh + ./vcpkg integrate install + ./vcpkg install glslang + +The glslang port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. + +## Testing Right now, there are two test harnesses existing in glslang: one is [Google Test](gtests/), one is the [`runtests` script](Test/runtests). The former @@ -272,8 +364,7 @@ You can add your own private list of tests, not tracked publicly, by using `localtestlist` to list non-tracked tests. This is automatically read by `runtests` and included in the `diff` and `bump` process. -Programmatic Interfaces ------------------------ +## Programmatic Interfaces Another piece of software can programmatically translate shaders to an AST using one of two different interfaces: @@ -309,7 +400,7 @@ class TProgram Reflection queries ``` -For just validating (not generating code), subsitute these calls: +For just validating (not generating code), substitute these calls: ```cxx setEnvInput(EShSourceHlsl or EShSourceGlsl, stage, EShClientNone, 0); @@ -327,7 +418,7 @@ This interface is in roughly the first 2/3 of `ShaderLang.h`, and referred to as the `Sh*()` interface, as all the entry points start `Sh`. The `Sh*()` interface takes a "compiler" call-back object, which it calls after -building call back that is passed the AST and can then execute a backend on it. +building call back that is passed the AST and can then execute a back end on it. The following is a simplified resulting run-time call stack: @@ -338,8 +429,7 @@ ShCompile(shader, compiler) -> compiler(AST) -> In practice, `ShCompile()` takes shader strings, default version, and warning/error and other options for controlling compilation. -Basic Internal Operation ------------------------- +## Basic Internal Operation * Initial lexical analysis is done by the preprocessor in `MachineIndependent/Preprocessor`, and then refined by a GLSL scanner @@ -354,7 +444,7 @@ Basic Internal Operation * The intermediate representation is very high-level, and represented as an in-memory tree. This serves to lose no information from the original program, and to have efficient transfer of the result from - parsing to the back-end. In the AST, constants are propogated and + parsing to the back-end. In the AST, constants are propagated and folded, and a very small amount of dead code is eliminated. To aid linking and reflection, the last top-level branch in the AST @@ -386,6 +476,8 @@ Basic Internal Operation - the object does not come from the pool, and you have to do normal C++ memory management of what you `new` +* Features can be protected by version/extension/stage/profile: + See the comment in `glslang/MachineIndependent/Versions.cpp`. [cmake]: https://cmake.org/ [python]: https://www.python.org/ diff --git a/Externals/glslang/SPIRV/CInterface/spirv_c_interface.cpp b/Externals/glslang/SPIRV/CInterface/spirv_c_interface.cpp new file mode 100644 index 000000000000..a0790f48f14b --- /dev/null +++ b/Externals/glslang/SPIRV/CInterface/spirv_c_interface.cpp @@ -0,0 +1,110 @@ +/** + This code is based on the glslang_c_interface implementation by Viktor Latypov +**/ + +/** +BSD 2-Clause License + +Copyright (c) 2019, Viktor Latypov +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +**/ + +#include "glslang/Include/glslang_c_interface.h" + +#include "SPIRV/GlslangToSpv.h" +#include "SPIRV/Logger.h" +#include "SPIRV/SpvTools.h" + +typedef struct glslang_program_s { + glslang::TProgram* program; + std::vector spirv; + std::string loggerMessages; +} glslang_program_t; + +static EShLanguage c_shader_stage(glslang_stage_t stage) +{ + switch (stage) { + case GLSLANG_STAGE_VERTEX: + return EShLangVertex; + case GLSLANG_STAGE_TESSCONTROL: + return EShLangTessControl; + case GLSLANG_STAGE_TESSEVALUATION: + return EShLangTessEvaluation; + case GLSLANG_STAGE_GEOMETRY: + return EShLangGeometry; + case GLSLANG_STAGE_FRAGMENT: + return EShLangFragment; + case GLSLANG_STAGE_COMPUTE: + return EShLangCompute; + case GLSLANG_STAGE_RAYGEN_NV: + return EShLangRayGen; + case GLSLANG_STAGE_INTERSECT_NV: + return EShLangIntersect; + case GLSLANG_STAGE_ANYHIT_NV: + return EShLangAnyHit; + case GLSLANG_STAGE_CLOSESTHIT_NV: + return EShLangClosestHit; + case GLSLANG_STAGE_MISS_NV: + return EShLangMiss; + case GLSLANG_STAGE_CALLABLE_NV: + return EShLangCallable; + case GLSLANG_STAGE_TASK_NV: + return EShLangTaskNV; + case GLSLANG_STAGE_MESH_NV: + return EShLangMeshNV; + default: + break; + } + return EShLangCount; +} + +GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage) +{ + spv::SpvBuildLogger logger; + glslang::SpvOptions spvOptions; + spvOptions.validate = true; + + const glslang::TIntermediate* intermediate = program->program->getIntermediate(c_shader_stage(stage)); + + glslang::GlslangToSpv(*intermediate, program->spirv, &logger, &spvOptions); + + program->loggerMessages = logger.getAllMessages(); +} + +GLSLANG_EXPORT size_t glslang_program_SPIRV_get_size(glslang_program_t* program) { return program->spirv.size(); } + +GLSLANG_EXPORT void glslang_program_SPIRV_get(glslang_program_t* program, unsigned int* out) +{ + memcpy(out, program->spirv.data(), program->spirv.size() * sizeof(unsigned int)); +} + +GLSLANG_EXPORT unsigned int* glslang_program_SPIRV_get_ptr(glslang_program_t* program) +{ + return program->spirv.data(); +} + +GLSLANG_EXPORT const char* glslang_program_SPIRV_get_messages(glslang_program_t* program) +{ + return program->loggerMessages.empty() ? nullptr : program->loggerMessages.c_str(); +} diff --git a/Externals/glslang/SPIRV/CMakeLists.txt b/Externals/glslang/SPIRV/CMakeLists.txt index 439b9918a48c..775466e06c8e 100644 --- a/Externals/glslang/SPIRV/CMakeLists.txt +++ b/Externals/glslang/SPIRV/CMakeLists.txt @@ -1,3 +1,36 @@ +# Copyright (C) 2020 The Khronos Group Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of The Khronos Group Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + set(SOURCES GlslangToSpv.cpp InReadableOrder.cpp @@ -6,7 +39,8 @@ set(SOURCES SpvPostProcess.cpp doc.cpp SpvTools.cpp - disassemble.cpp) + disassemble.cpp + CInterface/spirv_c_interface.cpp) set(SPVREMAP_SOURCES SPVRemapper.cpp @@ -27,7 +61,8 @@ set(HEADERS SpvTools.h disassemble.h GLSL.ext.AMD.h - GLSL.ext.NV.h) + GLSL.ext.NV.h + NonSemanticDebugPrintf.h) set(SPVREMAP_HEADERS SPVRemapper.h @@ -37,8 +72,10 @@ add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS}) set_property(TARGET SPIRV PROPERTY FOLDER glslang) set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(SPIRV PUBLIC - $ - $) + $ + $) + +glslang_add_build_info_dependency(SPIRV) if (ENABLE_SPVREMAPPER) add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS}) @@ -58,25 +95,26 @@ if(ENABLE_OPT) PRIVATE ${spirv-tools_SOURCE_DIR}/include PRIVATE ${spirv-tools_SOURCE_DIR}/source ) - target_link_libraries(SPIRV glslang SPIRV-Tools-opt) + target_link_libraries(SPIRV PRIVATE MachineIndependent SPIRV-Tools-opt) target_include_directories(SPIRV PUBLIC - $ - $) + $ + $) else() - target_link_libraries(SPIRV glslang) -endif(ENABLE_OPT) + target_link_libraries(SPIRV PRIVATE MachineIndependent) +endif() if(WIN32) source_group("Source" FILES ${SOURCES} ${HEADERS}) source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS}) -endif(WIN32) +endif() if(ENABLE_GLSLANG_INSTALL) if(BUILD_SHARED_LIBS) if (ENABLE_SPVREMAPPER) install(TARGETS SPVRemapper EXPORT SPVRemapperTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() install(TARGETS SPIRV EXPORT SPIRVTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} @@ -97,6 +135,5 @@ if(ENABLE_GLSLANG_INSTALL) install(EXPORT SPIRVTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) - install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/) install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/) -endif(ENABLE_GLSLANG_INSTALL) +endif() diff --git a/Externals/glslang/SPIRV/GLSL.ext.EXT.h b/Externals/glslang/SPIRV/GLSL.ext.EXT.h index 40164b6187f9..f48f1304d653 100644 --- a/Externals/glslang/SPIRV/GLSL.ext.EXT.h +++ b/Externals/glslang/SPIRV/GLSL.ext.EXT.h @@ -35,5 +35,9 @@ static const char* const E_SPV_EXT_shader_viewport_index_layer = "SPV_EXT_shade static const char* const E_SPV_EXT_fragment_fully_covered = "SPV_EXT_fragment_fully_covered"; static const char* const E_SPV_EXT_fragment_invocation_density = "SPV_EXT_fragment_invocation_density"; static const char* const E_SPV_EXT_demote_to_helper_invocation = "SPV_EXT_demote_to_helper_invocation"; +static const char* const E_SPV_EXT_shader_atomic_float_add = "SPV_EXT_shader_atomic_float_add"; +static const char* const E_SPV_EXT_shader_atomic_float16_add = "SPV_EXT_shader_atomic_float16_add"; +static const char* const E_SPV_EXT_shader_atomic_float_min_max = "SPV_EXT_shader_atomic_float_min_max"; +static const char* const E_SPV_EXT_shader_image_int64 = "SPV_EXT_shader_image_int64"; #endif // #ifndef GLSLextEXT_H diff --git a/Externals/glslang/SPIRV/GLSL.ext.KHR.h b/Externals/glslang/SPIRV/GLSL.ext.KHR.h index e58e836a8d89..5eb3e9448257 100644 --- a/Externals/glslang/SPIRV/GLSL.ext.KHR.h +++ b/Externals/glslang/SPIRV/GLSL.ext.KHR.h @@ -1,5 +1,6 @@ /* -** Copyright (c) 2014-2016 The Khronos Group Inc. +** Copyright (c) 2014-2020 The Khronos Group Inc. +** Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. ** ** Permission is hereby granted, free of charge, to any person obtaining a copy ** of this software and/or associated documentation files (the "Materials"), @@ -44,5 +45,12 @@ static const char* const E_SPV_EXT_physical_storage_buffer = "SPV_EXT_physi static const char* const E_SPV_KHR_physical_storage_buffer = "SPV_KHR_physical_storage_buffer"; static const char* const E_SPV_EXT_fragment_shader_interlock = "SPV_EXT_fragment_shader_interlock"; static const char* const E_SPV_KHR_shader_clock = "SPV_KHR_shader_clock"; +static const char* const E_SPV_KHR_non_semantic_info = "SPV_KHR_non_semantic_info"; +static const char* const E_SPV_KHR_ray_tracing = "SPV_KHR_ray_tracing"; +static const char* const E_SPV_KHR_ray_query = "SPV_KHR_ray_query"; +static const char* const E_SPV_KHR_fragment_shading_rate = "SPV_KHR_fragment_shading_rate"; +static const char* const E_SPV_KHR_terminate_invocation = "SPV_KHR_terminate_invocation"; +static const char* const E_SPV_KHR_workgroup_memory_explicit_layout = "SPV_KHR_workgroup_memory_explicit_layout"; +static const char* const E_SPV_KHR_subgroup_uniform_control_flow = "SPV_KHR_subgroup_uniform_control_flow"; #endif // #ifndef GLSLextKHR_H diff --git a/Externals/glslang/SPIRV/GLSL.ext.NV.h b/Externals/glslang/SPIRV/GLSL.ext.NV.h index 50146da10439..93c98bf62695 100644 --- a/Externals/glslang/SPIRV/GLSL.ext.NV.h +++ b/Externals/glslang/SPIRV/GLSL.ext.NV.h @@ -69,6 +69,9 @@ const char* const E_SPV_NV_mesh_shader = "SPV_NV_mesh_shader"; //SPV_NV_raytracing const char* const E_SPV_NV_ray_tracing = "SPV_NV_ray_tracing"; +//SPV_NV_ray_tracing_motion_blur +const char* const E_SPV_NV_ray_tracing_motion_blur = "SPV_NV_ray_tracing_motion_blur"; + //SPV_NV_shading_rate const char* const E_SPV_NV_shading_rate = "SPV_NV_shading_rate"; diff --git a/Externals/glslang/SPIRV/GlslangToSpv.cpp b/Externals/glslang/SPIRV/GlslangToSpv.cpp index 0c8a87e3ce24..6cdf2346ab13 100644 --- a/Externals/glslang/SPIRV/GlslangToSpv.cpp +++ b/Externals/glslang/SPIRV/GlslangToSpv.cpp @@ -1,7 +1,8 @@ // // Copyright (C) 2014-2016 LunarG, Inc. -// Copyright (C) 2015-2018 Google, Inc. +// Copyright (C) 2015-2020 Google, Inc. // Copyright (C) 2017 ARM Limited. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -48,13 +49,16 @@ namespace spv { #include "GLSL.ext.EXT.h" #include "GLSL.ext.AMD.h" #include "GLSL.ext.NV.h" + #include "NonSemanticDebugPrintf.h" } // Glslang includes #include "../glslang/MachineIndependent/localintermediate.h" #include "../glslang/MachineIndependent/SymbolTable.h" #include "../glslang/Include/Common.h" -#include "../glslang/Include/revision.h" + +// Build-time generated includes +#include "glslang/build_info.h" #include #include @@ -145,6 +149,7 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { spv::Decoration TranslateInterpolationDecoration(const glslang::TQualifier& qualifier); spv::Decoration TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier); spv::Decoration TranslateNonUniformDecoration(const glslang::TQualifier& qualifier); + spv::Decoration TranslateNonUniformDecoration(const spv::Builder::AccessChain::CoherentFlags& coherentFlags); spv::Builder::AccessChain::CoherentFlags TranslateCoherent(const glslang::TType& type); spv::MemoryAccessMask TranslateMemoryAccess(const spv::Builder::AccessChain::CoherentFlags &coherentFlags); spv::ImageOperandsMask TranslateImageOperands(const spv::Builder::AccessChain::CoherentFlags &coherentFlags); @@ -155,6 +160,7 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { spv::SelectionControlMask TranslateSwitchControl(const glslang::TIntermSwitch&) const; spv::LoopControlMask TranslateLoopControl(const glslang::TIntermLoop&, std::vector& operands) const; spv::StorageClass TranslateStorageClass(const glslang::TType&); + void TranslateLiterals(const glslang::TVector&, std::vector&) const; void addIndirectionIndexCapabilities(const glslang::TType& baseType, const glslang::TType& indexType); spv::Id createSpvVariable(const glslang::TIntermSymbol*, spv::Id forcedType); spv::Id getSampledType(const glslang::TSampler&); @@ -173,6 +179,7 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { spv::Id accessChainLoad(const glslang::TType& type); void accessChainStore(const glslang::TType& type, spv::Id rvalue); void multiTypeStore(const glslang::TType&, spv::Id rValue); + spv::Id convertLoadedBoolInUniformToUint(const glslang::TType& type, spv::Id nominalTypeId, spv::Id loadedId); glslang::TLayoutPacking getExplicitLayout(const glslang::TType& type) const; int getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking, glslang::TLayoutMatrix); int getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking, glslang::TLayoutMatrix); @@ -185,9 +192,11 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { bool originalParam(glslang::TStorageQualifier, const glslang::TType&, bool implicitThisParam); void makeFunctions(const glslang::TIntermSequence&); void makeGlobalInitializers(const glslang::TIntermSequence&); + void collectRayTracingLinkerObjects(); void visitFunctions(const glslang::TIntermSequence&); void handleFunctionEntry(const glslang::TIntermAggregate* node); - void translateArguments(const glslang::TIntermAggregate& node, std::vector& arguments, spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags); + void translateArguments(const glslang::TIntermAggregate& node, std::vector& arguments, + spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags); void translateArguments(glslang::TIntermUnary& node, std::vector& arguments); spv::Id createImageTextureFunctionCall(glslang::TIntermOperator* node); spv::Id handleUserFunctionCall(const glslang::TIntermAggregate*); @@ -196,28 +205,36 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { glslang::TBasicType typeProxy, bool reduceComparison = true); spv::Id createBinaryMatrixOperation(spv::Op, OpDecorations&, spv::Id typeId, spv::Id left, spv::Id right); spv::Id createUnaryOperation(glslang::TOperator op, OpDecorations&, spv::Id typeId, spv::Id operand, - glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags); + glslang::TBasicType typeProxy, + const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags); spv::Id createUnaryMatrixOperation(spv::Op op, OpDecorations&, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy); spv::Id createConversion(glslang::TOperator op, OpDecorations&, spv::Id destTypeId, spv::Id operand, glslang::TBasicType typeProxy); spv::Id createIntWidthConversion(glslang::TOperator op, spv::Id operand, int vectorSize); spv::Id makeSmearedConstant(spv::Id constant, int vectorSize); - spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags); - spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); - spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::GroupOperation groupOperation, spv::Id typeId, std::vector& operands); - spv::Id createSubgroupOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); - spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); + spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, + std::vector& operands, glslang::TBasicType typeProxy, + const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags); + spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, + glslang::TBasicType typeProxy); + spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::GroupOperation groupOperation, + spv::Id typeId, std::vector& operands); + spv::Id createSubgroupOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, + glslang::TBasicType typeProxy); + spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, + std::vector& operands, glslang::TBasicType typeProxy); spv::Id createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId); spv::Id getSymbolId(const glslang::TIntermSymbol* node); void addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier & qualifier); spv::Id createSpvConstant(const glslang::TIntermTyped&); - spv::Id createSpvConstantFromConstUnionArray(const glslang::TType& type, const glslang::TConstUnionArray&, int& nextConst, bool specConstant); + spv::Id createSpvConstantFromConstUnionArray(const glslang::TType& type, const glslang::TConstUnionArray&, + int& nextConst, bool specConstant); bool isTrivialLeaf(const glslang::TIntermTyped* node); bool isTrivial(const glslang::TIntermTyped* node); spv::Id createShortCircuit(glslang::TOperator, glslang::TIntermTyped& left, glslang::TIntermTyped& right); spv::Id getExtBuiltins(const char* name); - std::pair getForcedType(spv::BuiltIn, const glslang::TType&); + std::pair getForcedType(glslang::TBuiltInVariable builtIn, const glslang::TType&); spv::Id translateForcedType(spv::Id object); spv::Id createCompositeConstruct(spv::Id typeId, std::vector constituents); @@ -233,21 +250,24 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { spv::Builder builder; bool inEntryPoint; bool entryPointTerminated; - bool linkageOnly; // true when visiting the set of objects in the AST present only for establishing interface, whether or not they were statically used + bool linkageOnly; // true when visiting the set of objects in the AST present only for + // establishing interface, whether or not they were statically used std::set iOSet; // all input/output variables from either static use or declaration of interface const glslang::TIntermediate* glslangIntermediate; bool nanMinMaxClamp; // true if use NMin/NMax/NClamp instead of FMin/FMax/FClamp spv::Id stdBuiltins; - std::unordered_map extBuiltinMap; + spv::Id nonSemanticDebugPrintf; + std::unordered_map extBuiltinMap; - std::unordered_map symbolValues; - std::unordered_set rValueParameters; // set of formal function parameters passed as rValues, rather than a pointer + std::unordered_map symbolValues; + std::unordered_set rValueParameters; // set of formal function parameters passed as rValues, + // rather than a pointer std::unordered_map functionMap; std::unordered_map structMap[glslang::ElpCount][glslang::ElmCount]; // for mapping glslang block indices to spv indices (e.g., due to hidden members): - std::unordered_map> memberRemapper; + std::unordered_map> memberRemapper; // for mapping glslang symbol struct to symbol Id - std::unordered_map glslangTypeToIdMap; + std::unordered_map glslangTypeToIdMap; std::stack breakForLoop; // false means break for switch std::unordered_map counterOriginator; // Map pointee types for EbtReference to their forward pointers @@ -256,6 +276,9 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { // requiring local translation to and from SPIR-V type on every access. // Maps AST-required-type-id> std::unordered_map forceType; + + // Used later for generating OpTraceKHR/OpExecuteCallableKHR + std::unordered_map locationToSymbol[2]; }; // @@ -267,6 +290,8 @@ spv::SourceLanguage TranslateSourceLanguage(glslang::EShSource source, EProfile { #ifdef GLSLANG_WEB return spv::SourceLanguageESSL; +#elif defined(GLSLANG_ANGLE) + return spv::SourceLanguageGLSL; #endif switch (source) { @@ -299,12 +324,12 @@ spv::ExecutionModel TranslateExecutionModel(EShLanguage stage) case EShLangTessControl: return spv::ExecutionModelTessellationControl; case EShLangTessEvaluation: return spv::ExecutionModelTessellationEvaluation; case EShLangGeometry: return spv::ExecutionModelGeometry; - case EShLangRayGenNV: return spv::ExecutionModelRayGenerationNV; - case EShLangIntersectNV: return spv::ExecutionModelIntersectionNV; - case EShLangAnyHitNV: return spv::ExecutionModelAnyHitNV; - case EShLangClosestHitNV: return spv::ExecutionModelClosestHitNV; - case EShLangMissNV: return spv::ExecutionModelMissNV; - case EShLangCallableNV: return spv::ExecutionModelCallableNV; + case EShLangRayGen: return spv::ExecutionModelRayGenerationKHR; + case EShLangIntersect: return spv::ExecutionModelIntersectionKHR; + case EShLangAnyHit: return spv::ExecutionModelAnyHitKHR; + case EShLangClosestHit: return spv::ExecutionModelClosestHitKHR; + case EShLangMiss: return spv::ExecutionModelMissKHR; + case EShLangCallable: return spv::ExecutionModelCallableKHR; case EShLangTaskNV: return spv::ExecutionModelTaskNV; case EShLangMeshNV: return spv::ExecutionModelMeshNV; #endif @@ -357,12 +382,13 @@ spv::Decoration TranslateBlockDecoration(const glslang::TType& type, bool useSto case glslang::EvqBuffer: return useStorageBuffer ? spv::DecorationBlock : spv::DecorationBufferBlock; case glslang::EvqVaryingIn: return spv::DecorationBlock; case glslang::EvqVaryingOut: return spv::DecorationBlock; + case glslang::EvqShared: return spv::DecorationBlock; #ifndef GLSLANG_WEB - case glslang::EvqPayloadNV: return spv::DecorationBlock; - case glslang::EvqPayloadInNV: return spv::DecorationBlock; - case glslang::EvqHitAttrNV: return spv::DecorationBlock; - case glslang::EvqCallableDataNV: return spv::DecorationBlock; - case glslang::EvqCallableDataInNV: return spv::DecorationBlock; + case glslang::EvqPayload: return spv::DecorationBlock; + case glslang::EvqPayloadIn: return spv::DecorationBlock; + case glslang::EvqHitAttr: return spv::DecorationBlock; + case glslang::EvqCallableData: return spv::DecorationBlock; + case glslang::EvqCallableDataIn: return spv::DecorationBlock; #endif default: assert(0); @@ -374,7 +400,8 @@ spv::Decoration TranslateBlockDecoration(const glslang::TType& type, bool useSto } // Translate glslang type to SPIR-V memory decorations. -void TranslateMemoryDecoration(const glslang::TQualifier& qualifier, std::vector& memory, bool useVulkanMemoryModel) +void TranslateMemoryDecoration(const glslang::TQualifier& qualifier, std::vector& memory, + bool useVulkanMemoryModel) { if (!useVulkanMemoryModel) { if (qualifier.isCoherent()) @@ -412,6 +439,7 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T break; case glslang::EbtBlock: switch (type.getQualifier().storage) { + case glslang::EvqShared: case glslang::EvqUniform: case glslang::EvqBuffer: switch (type.getQualifier().layoutPacking) { @@ -433,11 +461,11 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T } return spv::DecorationMax; #ifndef GLSLANG_WEB - case glslang::EvqPayloadNV: - case glslang::EvqPayloadInNV: - case glslang::EvqHitAttrNV: - case glslang::EvqCallableDataNV: - case glslang::EvqCallableDataInNV: + case glslang::EvqPayload: + case glslang::EvqPayloadIn: + case glslang::EvqHitAttr: + case glslang::EvqCallableData: + case glslang::EvqCallableDataIn: return spv::DecorationMax; #endif default: @@ -520,6 +548,20 @@ spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration(const glsl return spv::DecorationMax; } +// If lvalue flags contains nonUniform, return SPIR-V NonUniform decoration. +spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration( + const spv::Builder::AccessChain::CoherentFlags& coherentFlags) +{ +#ifndef GLSLANG_WEB + if (coherentFlags.isNonUniform()) { + builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); + builder.addCapability(spv::CapabilityShaderNonUniformEXT); + return spv::DecorationNonUniformEXT; + } else +#endif + return spv::DecorationMax; +} + spv::MemoryAccessMask TGlslangToSpvTraverser::TranslateMemoryAccess( const spv::Builder::AccessChain::CoherentFlags &coherentFlags) { @@ -529,15 +571,11 @@ spv::MemoryAccessMask TGlslangToSpvTraverser::TranslateMemoryAccess( if (!glslangIntermediate->usingVulkanMemoryModel() || coherentFlags.isImage) return mask; - if (coherentFlags.volatil || - coherentFlags.coherent || - coherentFlags.devicecoherent || - coherentFlags.queuefamilycoherent || - coherentFlags.workgroupcoherent || - coherentFlags.subgroupcoherent) { + if (coherentFlags.isVolatile() || coherentFlags.anyCoherent()) { mask = mask | spv::MemoryAccessMakePointerAvailableKHRMask | spv::MemoryAccessMakePointerVisibleKHRMask; } + if (coherentFlags.nonprivate) { mask = mask | spv::MemoryAccessNonPrivatePointerKHRMask; } @@ -562,11 +600,7 @@ spv::ImageOperandsMask TGlslangToSpvTraverser::TranslateImageOperands( return mask; if (coherentFlags.volatil || - coherentFlags.coherent || - coherentFlags.devicecoherent || - coherentFlags.queuefamilycoherent || - coherentFlags.workgroupcoherent || - coherentFlags.subgroupcoherent) { + coherentFlags.anyCoherent()) { mask = mask | spv::ImageOperandsMakeTexelAvailableKHRMask | spv::ImageOperandsMakeTexelVisibleKHRMask; } @@ -595,17 +629,15 @@ spv::Builder::AccessChain::CoherentFlags TGlslangToSpvTraverser::TranslateCohere flags.workgroupcoherent = type.getQualifier().workgroupcoherent || type.getQualifier().storage == glslang::EvqShared; flags.subgroupcoherent = type.getQualifier().subgroupcoherent; + flags.shadercallcoherent = type.getQualifier().shadercallcoherent; flags.volatil = type.getQualifier().volatil; // *coherent variables are implicitly nonprivate in GLSL flags.nonprivate = type.getQualifier().nonprivate || - flags.subgroupcoherent || - flags.workgroupcoherent || - flags.queuefamilycoherent || - flags.devicecoherent || - flags.coherent || + flags.anyCoherent() || flags.volatil; flags.isImage = type.getBasicType() == glslang::EbtSampler; #endif + flags.nonUniform = type.getQualifier().nonUniform; return flags; } @@ -626,6 +658,8 @@ spv::Scope TGlslangToSpvTraverser::TranslateMemoryScope( scope = spv::ScopeWorkgroup; } else if (coherentFlags.subgroupcoherent) { scope = spv::ScopeSubgroup; + } else if (coherentFlags.shadercallcoherent) { + scope = spv::ScopeShaderCallKHR; } if (glslangIntermediate->usingVulkanMemoryModel() && scope == spv::ScopeDevice) { builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR); @@ -640,7 +674,8 @@ spv::Scope TGlslangToSpvTraverser::TranslateMemoryScope( // is generated only when using the variable in an executable instruction, but not when // just declaring a struct member variable with it. This is true for PointSize, // ClipDistance, and CullDistance. -spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltInVariable builtIn, bool memberDeclaration) +spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltInVariable builtIn, + bool memberDeclaration) { switch (builtIn) { case glslang::EbvPointSize: @@ -698,13 +733,20 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInCullDistance; case glslang::EbvViewportIndex: - builder.addCapability(spv::CapabilityMultiViewport); + if (glslangIntermediate->getStage() == EShLangGeometry || + glslangIntermediate->getStage() == EShLangFragment) { + builder.addCapability(spv::CapabilityMultiViewport); + } if (glslangIntermediate->getStage() == EShLangVertex || glslangIntermediate->getStage() == EShLangTessControl || glslangIntermediate->getStage() == EShLangTessEvaluation) { - builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5); - builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); + if (builder.getSpvVersion() < spv::Spv_1_5) { + builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5); + builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); + } + else + builder.addCapability(spv::CapabilityShaderViewportIndex); } return spv::BuiltInViewportIndex; @@ -723,13 +765,19 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI if (glslangIntermediate->getStage() == EShLangMeshNV) { return spv::BuiltInLayer; } - builder.addCapability(spv::CapabilityGeometry); + if (glslangIntermediate->getStage() == EShLangGeometry || + glslangIntermediate->getStage() == EShLangFragment) { + builder.addCapability(spv::CapabilityGeometry); + } if (glslangIntermediate->getStage() == EShLangVertex || glslangIntermediate->getStage() == EShLangTessControl || glslangIntermediate->getStage() == EShLangTessEvaluation) { - builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5); - builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); + if (builder.getSpvVersion() < spv::Spv_1_5) { + builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5); + builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); + } else + builder.addCapability(spv::CapabilityShaderLayer); } return spv::BuiltInLayer; @@ -758,6 +806,16 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI builder.addCapability(spv::CapabilityStencilExportEXT); return spv::BuiltInFragStencilRefEXT; + case glslang::EbvShadingRateKHR: + builder.addExtension(spv::E_SPV_KHR_fragment_shading_rate); + builder.addCapability(spv::CapabilityFragmentShadingRateKHR); + return spv::BuiltInShadingRateKHR; + + case glslang::EbvPrimitiveShadingRateKHR: + builder.addExtension(spv::E_SPV_KHR_fragment_shading_rate); + builder.addCapability(spv::CapabilityFragmentShadingRateKHR); + return spv::BuiltInPrimitiveShadingRateKHR; + case glslang::EbvInvocationId: return spv::BuiltInInvocationId; case glslang::EbvTessLevelInner: return spv::BuiltInTessLevelInner; case glslang::EbvTessLevelOuter: return spv::BuiltInTessLevelOuter; @@ -933,34 +991,52 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInInvocationsPerPixelNV; // ray tracing - case glslang::EbvLaunchIdNV: - return spv::BuiltInLaunchIdNV; - case glslang::EbvLaunchSizeNV: - return spv::BuiltInLaunchSizeNV; - case glslang::EbvWorldRayOriginNV: - return spv::BuiltInWorldRayOriginNV; - case glslang::EbvWorldRayDirectionNV: - return spv::BuiltInWorldRayDirectionNV; - case glslang::EbvObjectRayOriginNV: - return spv::BuiltInObjectRayOriginNV; - case glslang::EbvObjectRayDirectionNV: - return spv::BuiltInObjectRayDirectionNV; - case glslang::EbvRayTminNV: - return spv::BuiltInRayTminNV; - case glslang::EbvRayTmaxNV: - return spv::BuiltInRayTmaxNV; - case glslang::EbvInstanceCustomIndexNV: - return spv::BuiltInInstanceCustomIndexNV; - case glslang::EbvHitTNV: - return spv::BuiltInHitTNV; - case glslang::EbvHitKindNV: - return spv::BuiltInHitKindNV; - case glslang::EbvObjectToWorldNV: - return spv::BuiltInObjectToWorldNV; - case glslang::EbvWorldToObjectNV: - return spv::BuiltInWorldToObjectNV; - case glslang::EbvIncomingRayFlagsNV: - return spv::BuiltInIncomingRayFlagsNV; + case glslang::EbvLaunchId: + return spv::BuiltInLaunchIdKHR; + case glslang::EbvLaunchSize: + return spv::BuiltInLaunchSizeKHR; + case glslang::EbvWorldRayOrigin: + return spv::BuiltInWorldRayOriginKHR; + case glslang::EbvWorldRayDirection: + return spv::BuiltInWorldRayDirectionKHR; + case glslang::EbvObjectRayOrigin: + return spv::BuiltInObjectRayOriginKHR; + case glslang::EbvObjectRayDirection: + return spv::BuiltInObjectRayDirectionKHR; + case glslang::EbvRayTmin: + return spv::BuiltInRayTminKHR; + case glslang::EbvRayTmax: + return spv::BuiltInRayTmaxKHR; + case glslang::EbvInstanceCustomIndex: + return spv::BuiltInInstanceCustomIndexKHR; + case glslang::EbvHitT: + { + // this is a GLSL alias of RayTmax + // in SPV_NV_ray_tracing it has a dedicated builtin + // but in SPV_KHR_ray_tracing it gets mapped to RayTmax + auto& extensions = glslangIntermediate->getRequestedExtensions(); + if (extensions.find("GL_NV_ray_tracing") != extensions.end()) { + return spv::BuiltInHitTNV; + } else { + return spv::BuiltInRayTmaxKHR; + } + } + case glslang::EbvHitKind: + return spv::BuiltInHitKindKHR; + case glslang::EbvObjectToWorld: + case glslang::EbvObjectToWorld3x4: + return spv::BuiltInObjectToWorldKHR; + case glslang::EbvWorldToObject: + case glslang::EbvWorldToObject3x4: + return spv::BuiltInWorldToObjectKHR; + case glslang::EbvIncomingRayFlags: + return spv::BuiltInIncomingRayFlagsKHR; + case glslang::EbvGeometryIndex: + return spv::BuiltInRayGeometryIndexKHR; + case glslang::EbvCurrentRayTimeNV: + builder.addExtension(spv::E_SPV_NV_ray_tracing_motion_blur); + builder.addCapability(spv::CapabilityRayTracingMotionBlurNV); + return spv::BuiltInCurrentRayTimeNV; // barycentrics case glslang::EbvBaryCoordNV: @@ -1056,6 +1132,10 @@ spv::ImageFormat TGlslangToSpvTraverser::TranslateImageFormat(const glslang::TTy builder.addCapability(spv::CapabilityStorageImageExtendedFormats); break; + case glslang::ElfR64ui: + case glslang::ElfR64i: + builder.addExtension(spv::E_SPV_EXT_shader_image_int64); + builder.addCapability(spv::CapabilityInt64ImageEXT); default: break; } @@ -1102,11 +1182,14 @@ spv::ImageFormat TGlslangToSpvTraverser::TranslateImageFormat(const glslang::TTy case glslang::ElfRg8ui: return spv::ImageFormatRg8ui; case glslang::ElfR16ui: return spv::ImageFormatR16ui; case glslang::ElfR8ui: return spv::ImageFormatR8ui; + case glslang::ElfR64ui: return spv::ImageFormatR64ui; + case glslang::ElfR64i: return spv::ImageFormatR64i; default: return spv::ImageFormatMax; } } -spv::SelectionControlMask TGlslangToSpvTraverser::TranslateSelectionControl(const glslang::TIntermSelection& selectionNode) const +spv::SelectionControlMask TGlslangToSpvTraverser::TranslateSelectionControl( + const glslang::TIntermSelection& selectionNode) const { if (selectionNode.getFlatten()) return spv::SelectionControlFlattenMask; @@ -1115,7 +1198,8 @@ spv::SelectionControlMask TGlslangToSpvTraverser::TranslateSelectionControl(cons return spv::SelectionControlMaskNone; } -spv::SelectionControlMask TGlslangToSpvTraverser::TranslateSwitchControl(const glslang::TIntermSwitch& switchNode) const +spv::SelectionControlMask TGlslangToSpvTraverser::TranslateSwitchControl(const glslang::TIntermSwitch& switchNode) + const { if (switchNode.getFlatten()) return spv::SelectionControlFlattenMask; @@ -1169,6 +1253,14 @@ spv::LoopControlMask TGlslangToSpvTraverser::TranslateLoopControl(const glslang: // Translate glslang type to SPIR-V storage class. spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::TType& type) { + if (type.getBasicType() == glslang::EbtRayQuery) + return spv::StorageClassPrivate; +#ifndef GLSLANG_WEB + if (type.getQualifier().isSpirvByReference()) { + if (type.getQualifier().isParamInput() || type.getQualifier().isParamOutput()) + return spv::StorageClassFunction; + } +#endif if (type.getQualifier().isPipeInput()) return spv::StorageClassInput; if (type.getQualifier().isPipeOutput()) @@ -1183,8 +1275,8 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T } if (type.getQualifier().isUniformOrBuffer() && - type.getQualifier().isShaderRecordNV()) { - return spv::StorageClassShaderRecordBufferNV; + type.getQualifier().isShaderRecord()) { + return spv::StorageClassShaderRecordBufferKHR; } if (glslangIntermediate->usingStorageBuffer() && type.getQualifier().storage == glslang::EvqBuffer) { @@ -1200,17 +1292,24 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T return spv::StorageClassUniformConstant; } + if (type.getQualifier().storage == glslang::EvqShared && type.getBasicType() == glslang::EbtBlock) { + builder.addExtension(spv::E_SPV_KHR_workgroup_memory_explicit_layout); + builder.addCapability(spv::CapabilityWorkgroupMemoryExplicitLayoutKHR); + return spv::StorageClassWorkgroup; + } + switch (type.getQualifier().storage) { case glslang::EvqGlobal: return spv::StorageClassPrivate; case glslang::EvqConstReadOnly: return spv::StorageClassFunction; case glslang::EvqTemporary: return spv::StorageClassFunction; case glslang::EvqShared: return spv::StorageClassWorkgroup; #ifndef GLSLANG_WEB - case glslang::EvqPayloadNV: return spv::StorageClassRayPayloadNV; - case glslang::EvqPayloadInNV: return spv::StorageClassIncomingRayPayloadNV; - case glslang::EvqHitAttrNV: return spv::StorageClassHitAttributeNV; - case glslang::EvqCallableDataNV: return spv::StorageClassCallableDataNV; - case glslang::EvqCallableDataInNV: return spv::StorageClassIncomingCallableDataNV; + case glslang::EvqPayload: return spv::StorageClassRayPayloadKHR; + case glslang::EvqPayloadIn: return spv::StorageClassIncomingRayPayloadKHR; + case glslang::EvqHitAttr: return spv::StorageClassHitAttributeKHR; + case glslang::EvqCallableData: return spv::StorageClassCallableDataKHR; + case glslang::EvqCallableDataIn: return spv::StorageClassIncomingCallableDataKHR; + case glslang::EvqSpirvStorageClass: return static_cast(type.getQualifier().spirvStorageClass); #endif default: assert(0); @@ -1220,6 +1319,52 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T return spv::StorageClassFunction; } +// Translate glslang constants to SPIR-V literals +void TGlslangToSpvTraverser::TranslateLiterals(const glslang::TVector& constants, + std::vector& literals) const +{ + for (auto constant : constants) { + if (constant->getBasicType() == glslang::EbtFloat) { + float floatValue = static_cast(constant->getConstArray()[0].getDConst()); + unsigned literal = *reinterpret_cast(&floatValue); + literals.push_back(literal); + } else if (constant->getBasicType() == glslang::EbtInt) { + unsigned literal = constant->getConstArray()[0].getIConst(); + literals.push_back(literal); + } else if (constant->getBasicType() == glslang::EbtUint) { + unsigned literal = constant->getConstArray()[0].getUConst(); + literals.push_back(literal); + } else if (constant->getBasicType() == glslang::EbtBool) { + unsigned literal = constant->getConstArray()[0].getBConst(); + literals.push_back(literal); + } else if (constant->getBasicType() == glslang::EbtString) { + auto str = constant->getConstArray()[0].getSConst()->c_str(); + unsigned literal = 0; + char* literalPtr = reinterpret_cast(&literal); + unsigned charCount = 0; + char ch = 0; + do { + ch = *(str++); + *(literalPtr++) = ch; + ++charCount; + if (charCount == 4) { + literals.push_back(literal); + literalPtr = reinterpret_cast(&literal); + charCount = 0; + } + } while (ch != 0); + + // Partial literal is padded with 0 + if (charCount > 0) { + for (; charCount < 4; ++charCount) + *(literalPtr++) = 0; + literals.push_back(literal); + } + } else + assert(0); // Unexpected type + } +} + // Add capabilities pertaining to how an array is indexed. void TGlslangToSpvTraverser::addIndirectionIndexCapabilities(const glslang::TType& baseType, const glslang::TType& indexType) @@ -1270,14 +1415,15 @@ bool IsDescriptorResource(const glslang::TType& type) // uniform and buffer blocks are included, unless it is a push_constant if (type.getBasicType() == glslang::EbtBlock) return type.getQualifier().isUniformOrBuffer() && - ! type.getQualifier().isShaderRecordNV() && + ! type.getQualifier().isShaderRecord() && ! type.getQualifier().isPushConstant(); // non block... // basically samplerXXX/subpass/sampler/texture are all included // if they are the global-scope-class, not the function parameter // (or local, if they ever exist) class. - if (type.getBasicType() == glslang::EbtSampler) + if (type.getBasicType() == glslang::EbtSampler || + type.getBasicType() == glslang::EbtAccStruct) return type.getQualifier().isUniformOrBuffer(); // None of the above. @@ -1320,6 +1466,8 @@ void InheritQualifiers(glslang::TQualifier& child, const glslang::TQualifier& pa child.workgroupcoherent = true; if (parent.subgroupcoherent) child.subgroupcoherent = true; + if (parent.shadercallcoherent) + child.shadercallcoherent = true; if (parent.nonprivate) child.nonprivate = true; if (parent.volatil) @@ -1331,6 +1479,8 @@ void InheritQualifiers(glslang::TQualifier& child, const glslang::TQualifier& pa if (parent.writeonly) child.writeonly = true; #endif + if (parent.nonUniform) + child.nonUniform = true; } bool HasNonLayoutQualifiers(const glslang::TType& type, const glslang::TQualifier& qualifier) @@ -1350,16 +1500,18 @@ bool HasNonLayoutQualifiers(const glslang::TType& type, const glslang::TQualifie // Implement the TGlslangToSpvTraverser class. // -TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const glslang::TIntermediate* glslangIntermediate, - spv::SpvBuildLogger* buildLogger, glslang::SpvOptions& options) - : TIntermTraverser(true, false, true), - options(options), - shaderEntry(nullptr), currentFunction(nullptr), - sequenceDepth(0), logger(buildLogger), - builder(spvVersion, (glslang::GetKhronosToolId() << 16) | glslang::GetSpirvGeneratorVersion(), logger), - inEntryPoint(false), entryPointTerminated(false), linkageOnly(false), - glslangIntermediate(glslangIntermediate), - nanMinMaxClamp(glslangIntermediate->getNanMinMaxClamp()) +TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, + const glslang::TIntermediate* glslangIntermediate, + spv::SpvBuildLogger* buildLogger, glslang::SpvOptions& options) : + TIntermTraverser(true, false, true), + options(options), + shaderEntry(nullptr), currentFunction(nullptr), + sequenceDepth(0), logger(buildLogger), + builder(spvVersion, (glslang::GetKhronosToolId() << 16) | glslang::GetSpirvGeneratorVersion(), logger), + inEntryPoint(false), entryPointTerminated(false), linkageOnly(false), + glslangIntermediate(glslangIntermediate), + nanMinMaxClamp(glslangIntermediate->getNanMinMaxClamp()), + nonSemanticDebugPrintf(0) { spv::ExecutionModel executionModel = TranslateExecutionModel(glslangIntermediate->getStage()); @@ -1400,9 +1552,9 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl if (glslangIntermediate->usingPhysicalStorageBuffer()) { addressingModel = spv::AddressingModelPhysicalStorageBuffer64EXT; - builder.addIncorporatedExtension(spv::E_SPV_EXT_physical_storage_buffer, spv::Spv_1_5); + builder.addIncorporatedExtension(spv::E_SPV_KHR_physical_storage_buffer, spv::Spv_1_5); builder.addCapability(spv::CapabilityPhysicalStorageBufferAddressesEXT); - }; + } if (glslangIntermediate->usingVulkanMemoryModel()) { memoryModel = spv::MemoryModelVulkanKHR; builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); @@ -1429,6 +1581,17 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl builder.addExecutionMode(shaderEntry, spv::ExecutionModeXfb); } + if (glslangIntermediate->getLayoutPrimitiveCulling()) { + builder.addCapability(spv::CapabilityRayTraversalPrimitiveCullingKHR); + } + +#ifndef GLSLANG_WEB + if (glslangIntermediate->getSubgroupUniformControlFlow()) { + builder.addExtension(spv::E_SPV_KHR_subgroup_uniform_control_flow); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeSubgroupUniformControlFlowKHR); + } +#endif + unsigned int mode; switch (glslangIntermediate->getStage()) { case EShLangVertex: @@ -1454,14 +1617,16 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl builder.addExtension(spv::E_SPV_KHR_post_depth_coverage); } - if (glslangIntermediate->getDepth() != glslang::EldUnchanged && glslangIntermediate->isDepthReplacing()) + if (glslangIntermediate->isDepthReplacing()) builder.addExecutionMode(shaderEntry, spv::ExecutionModeDepthReplacing); #ifndef GLSLANG_WEB + switch(glslangIntermediate->getDepth()) { - case glslang::EldGreater: mode = spv::ExecutionModeDepthGreater; break; - case glslang::EldLess: mode = spv::ExecutionModeDepthLess; break; - default: mode = spv::ExecutionModeMax; break; + case glslang::EldGreater: mode = spv::ExecutionModeDepthGreater; break; + case glslang::EldLess: mode = spv::ExecutionModeDepthLess; break; + case glslang::EldUnchanged: mode = spv::ExecutionModeDepthUnchanged; break; + default: mode = spv::ExecutionModeMax; break; } if (mode != spv::ExecutionModeMax) builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); @@ -1495,13 +1660,26 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl builder.addExtension(spv::E_SPV_EXT_fragment_shader_interlock); } #endif - break; + break; case EShLangCompute: builder.addCapability(spv::CapabilityShader); - builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), - glslangIntermediate->getLocalSize(1), - glslangIntermediate->getLocalSize(2)); + if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { + std::vector dimConstId; + for (int dim = 0; dim < 3; ++dim) { + bool specConst = (glslangIntermediate->getLocalSizeSpecId(dim) != glslang::TQualifier::layoutNotSet); + dimConstId.push_back(builder.makeUintConstant(glslangIntermediate->getLocalSize(dim), specConst)); + if (specConst) { + builder.addDecoration(dimConstId.back(), spv::DecorationSpecId, + glslangIntermediate->getLocalSizeSpecId(dim)); + } + } + builder.addExecutionModeId(shaderEntry, spv::ExecutionModeLocalSizeId, dimConstId); + } else { + builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), + glslangIntermediate->getLocalSize(1), + glslangIntermediate->getLocalSize(2)); + } if (glslangIntermediate->getLayoutDerivativeModeNone() == glslang::LayoutDerivativeGroupQuads) { builder.addCapability(spv::CapabilityComputeDerivativeGroupQuadsNV); builder.addExecutionMode(shaderEntry, spv::ExecutionModeDerivativeGroupQuadsNV); @@ -1520,7 +1698,8 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl glslang::TLayoutGeometry primitive; if (glslangIntermediate->getStage() == EShLangTessControl) { - builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices()); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, + glslangIntermediate->getVertices()); primitive = glslangIntermediate->getOutputPrimitive(); } else { primitive = glslangIntermediate->getInputPrimitive(); @@ -1582,25 +1761,49 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices()); break; - case EShLangRayGenNV: - case EShLangIntersectNV: - case EShLangAnyHitNV: - case EShLangClosestHitNV: - case EShLangMissNV: - case EShLangCallableNV: - builder.addCapability(spv::CapabilityRayTracingNV); - builder.addExtension("SPV_NV_ray_tracing"); + case EShLangRayGen: + case EShLangIntersect: + case EShLangAnyHit: + case EShLangClosestHit: + case EShLangMiss: + case EShLangCallable: + { + auto& extensions = glslangIntermediate->getRequestedExtensions(); + if (extensions.find("GL_NV_ray_tracing") == extensions.end()) { + builder.addCapability(spv::CapabilityRayTracingKHR); + builder.addExtension("SPV_KHR_ray_tracing"); + } + else { + builder.addCapability(spv::CapabilityRayTracingNV); + builder.addExtension("SPV_NV_ray_tracing"); + } break; + } case EShLangTaskNV: case EShLangMeshNV: builder.addCapability(spv::CapabilityMeshShadingNV); builder.addExtension(spv::E_SPV_NV_mesh_shader); - builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), - glslangIntermediate->getLocalSize(1), - glslangIntermediate->getLocalSize(2)); + if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { + std::vector dimConstId; + for (int dim = 0; dim < 3; ++dim) { + bool specConst = (glslangIntermediate->getLocalSizeSpecId(dim) != glslang::TQualifier::layoutNotSet); + dimConstId.push_back(builder.makeUintConstant(glslangIntermediate->getLocalSize(dim), specConst)); + if (specConst) { + builder.addDecoration(dimConstId.back(), spv::DecorationSpecId, + glslangIntermediate->getLocalSizeSpecId(dim)); + } + } + builder.addExecutionModeId(shaderEntry, spv::ExecutionModeLocalSizeId, dimConstId); + } else { + builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), + glslangIntermediate->getLocalSize(1), + glslangIntermediate->getLocalSize(2)); + } if (glslangIntermediate->getStage() == EShLangMeshNV) { - builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices()); - builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputPrimitivesNV, glslangIntermediate->getPrimitives()); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, + glslangIntermediate->getVertices()); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputPrimitivesNV, + glslangIntermediate->getPrimitives()); switch (glslangIntermediate->getOutputPrimitive()) { case glslang::ElgPoints: mode = spv::ExecutionModeOutputPoints; break; @@ -1617,6 +1820,53 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl default: break; } + +#ifndef GLSLANG_WEB + // + // Add SPIR-V requirements (GL_EXT_spirv_intrinsics) + // + if (glslangIntermediate->hasSpirvRequirement()) { + const glslang::TSpirvRequirement& spirvRequirement = glslangIntermediate->getSpirvRequirement(); + + // Add SPIR-V extension requirement + for (auto& extension : spirvRequirement.extensions) + builder.addExtension(extension.c_str()); + + // Add SPIR-V capability requirement + for (auto capability : spirvRequirement.capabilities) + builder.addCapability(static_cast(capability)); + } + + // + // Add SPIR-V execution mode qualifiers (GL_EXT_spirv_intrinsics) + // + if (glslangIntermediate->hasSpirvExecutionMode()) { + const glslang::TSpirvExecutionMode spirvExecutionMode = glslangIntermediate->getSpirvExecutionMode(); + + // Add spirv_execution_mode + for (auto& mode : spirvExecutionMode.modes) { + if (!mode.second.empty()) { + std::vector literals; + TranslateLiterals(mode.second, literals); + builder.addExecutionMode(shaderEntry, static_cast(mode.first), literals); + } else + builder.addExecutionMode(shaderEntry, static_cast(mode.first)); + } + + // Add spirv_execution_mode_id + for (auto& modeId : spirvExecutionMode.modeIds) { + std::vector operandIds; + assert(!modeId.second.empty()); + for (auto extraOperand : modeId.second) { + if (extraOperand->getType().getQualifier().isSpecConstant()) + operandIds.push_back(getSymbolId(extraOperand->getAsSymbolNode())); + else + operandIds.push_back(createSpvConstant(*extraOperand)); + } + builder.addExecutionModeId(shaderEntry, static_cast(modeId.first), operandIds); + } + } +#endif } // Finish creating SPV, after the traversal is complete. @@ -1669,25 +1919,35 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol) if (symbol->getType().getQualifier().isSpecConstant()) spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); +#ifdef ENABLE_HLSL + // Skip symbol handling if it is string-typed + if (symbol->getBasicType() == glslang::EbtString) + return; +#endif + // getSymbolId() will set up all the IO decorations on the first call. // Formal function parameters were mapped during makeFunctions(). spv::Id id = getSymbolId(symbol); if (builder.isPointer(id)) { - // Include all "static use" and "linkage only" interface variables on the OpEntryPoint instruction - // Consider adding to the OpEntryPoint interface list. - // Only looking at structures if they have at least one member. - if (!symbol->getType().isStruct() || symbol->getType().getStruct()->size() > 0) { - spv::StorageClass sc = builder.getStorageClass(id); - // Before SPIR-V 1.4, we only want to include Input and Output. - // Starting with SPIR-V 1.4, we want all globals. - if ((glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4 && sc != spv::StorageClassFunction) || - (sc == spv::StorageClassInput || sc == spv::StorageClassOutput)) { - iOSet.insert(id); + if (!symbol->getType().getQualifier().isParamInput() && + !symbol->getType().getQualifier().isParamOutput()) { + // Include all "static use" and "linkage only" interface variables on the OpEntryPoint instruction + // Consider adding to the OpEntryPoint interface list. + // Only looking at structures if they have at least one member. + if (!symbol->getType().isStruct() || symbol->getType().getStruct()->size() > 0) { + spv::StorageClass sc = builder.getStorageClass(id); + // Before SPIR-V 1.4, we only want to include Input and Output. + // Starting with SPIR-V 1.4, we want all globals. + if ((glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4 && builder.isGlobalStorage(id)) || + (sc == spv::StorageClassInput || sc == spv::StorageClassOutput)) { + iOSet.insert(id); + } } } - // If the SPIR-V type is required to be different than the AST type, + // If the SPIR-V type is required to be different than the AST type + // (for ex SubgroupMasks or 3x4 ObjectToWorld/WorldToObject matrices), // translate now from the SPIR-V type to the AST type, for the consuming // operation. // Note this turns it from an l-value to an r-value. @@ -1807,9 +2067,11 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T spv::Id leftRValue = accessChainLoad(node->getLeft()->getType()); // do the operation + spv::Builder::AccessChain::CoherentFlags coherentFlags = TranslateCoherent(node->getLeft()->getType()); + coherentFlags |= TranslateCoherent(node->getRight()->getType()); OpDecorations decorations = { TranslatePrecisionDecoration(node->getOperationPrecision()), TranslateNoContractionDecoration(node->getType().getQualifier()), - TranslateNonUniformDecoration(node->getType().getQualifier()) }; + TranslateNonUniformDecoration(coherentFlags) }; rValue = createBinaryOperation(node->getOp(), decorations, convertGlslangToSpvType(node->getType()), leftRValue, rValue, node->getType().getBasicType()); @@ -1840,14 +2102,18 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T if (! node->getLeft()->getType().isArray() && node->getLeft()->getType().isVector() && node->getOp() == glslang::EOpIndexDirect) { + // Swizzle is uniform so propagate uniform into access chain + spv::Builder::AccessChain::CoherentFlags coherentFlags = TranslateCoherent(node->getLeft()->getType()); + coherentFlags.nonUniform = 0; // This is essentially a hard-coded vector swizzle of size 1, // so short circuit the access-chain stuff with a swizzle. std::vector swizzle; swizzle.push_back(glslangIndex); int dummySize; builder.accessChainPushSwizzle(swizzle, convertGlslangToSpvType(node->getLeft()->getType()), - TranslateCoherent(node->getLeft()->getType()), - glslangIntermediate->getBaseAlignmentScalar(node->getLeft()->getType(), dummySize)); + coherentFlags, + glslangIntermediate->getBaseAlignmentScalar( + node->getLeft()->getType(), dummySize)); } else { // Load through a block reference is performed with a dot operator that @@ -1868,7 +2134,7 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T { // This may be, e.g., an anonymous block-member selection, which generally need // index remapping due to hidden members in anonymous blocks. - int glslangId = glslangTypeToIdMap[node->getLeft()->getType().getStruct()]; + long long glslangId = glslangTypeToIdMap[node->getLeft()->getType().getStruct()]; if (memberRemapper.find(glslangId) != memberRemapper.end()) { std::vector& remapper = memberRemapper[glslangId]; assert(remapper.size() > 0); @@ -1876,8 +2142,15 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T } } + // Struct reference propagates uniform lvalue + spv::Builder::AccessChain::CoherentFlags coherentFlags = + TranslateCoherent(node->getLeft()->getType()); + coherentFlags.nonUniform = 0; + // normal case for indexing array or structure or block - builder.accessChainPush(builder.makeIntConstant(spvIndex), TranslateCoherent(node->getLeft()->getType()), node->getLeft()->getType().getBufferReferenceAlignment()); + builder.accessChainPush(builder.makeIntConstant(spvIndex), + coherentFlags, + node->getLeft()->getType().getBufferReferenceAlignment()); // Add capabilities here for accessing PointSize and clip/cull distance. // We have deferred generation of associated capabilities until now. @@ -1910,13 +2183,20 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T // restore the saved access chain builder.setAccessChain(partial); + // Only if index is nonUniform should we propagate nonUniform into access chain + spv::Builder::AccessChain::CoherentFlags index_flags = TranslateCoherent(node->getRight()->getType()); + spv::Builder::AccessChain::CoherentFlags coherent_flags = TranslateCoherent(node->getLeft()->getType()); + coherent_flags.nonUniform = index_flags.nonUniform; + if (! node->getLeft()->getType().isArray() && node->getLeft()->getType().isVector()) { int dummySize; - builder.accessChainPushComponent(index, convertGlslangToSpvType(node->getLeft()->getType()), - TranslateCoherent(node->getLeft()->getType()), - glslangIntermediate->getBaseAlignmentScalar(node->getLeft()->getType(), dummySize)); + builder.accessChainPushComponent( + index, convertGlslangToSpvType(node->getLeft()->getType()), coherent_flags, + glslangIntermediate->getBaseAlignmentScalar(node->getLeft()->getType(), + dummySize)); } else - builder.accessChainPush(index, TranslateCoherent(node->getLeft()->getType()), node->getLeft()->getType().getBufferReferenceAlignment()); + builder.accessChainPush(index, coherent_flags, + node->getLeft()->getType().getBufferReferenceAlignment()); } return false; case glslang::EOpVectorSwizzle: @@ -1927,7 +2207,8 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T int dummySize; builder.accessChainPushSwizzle(swizzle, convertGlslangToSpvType(node->getLeft()->getType()), TranslateCoherent(node->getLeft()->getType()), - glslangIntermediate->getBaseAlignmentScalar(node->getLeft()->getType(), dummySize)); + glslangIntermediate->getBaseAlignmentScalar(node->getLeft()->getType(), + dummySize)); } return false; case glslang::EOpMatrixSwizzle: @@ -1943,7 +2224,8 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T if (isTrivial(node->getRight()->getAsTyped())) break; // handle below as a normal binary operation // otherwise, we need to do dynamic short circuiting on the right operand - spv::Id result = createShortCircuit(node->getOp(), *node->getLeft()->getAsTyped(), *node->getRight()->getAsTyped()); + spv::Id result = createShortCircuit(node->getOp(), *node->getLeft()->getAsTyped(), + *node->getRight()->getAsTyped()); builder.clearAccessChain(); builder.setAccessChainRValue(result); } @@ -1982,24 +2264,77 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T } } +spv::Id TGlslangToSpvTraverser::convertLoadedBoolInUniformToUint(const glslang::TType& type, + spv::Id nominalTypeId, + spv::Id loadedId) +{ + if (builder.isScalarType(nominalTypeId)) { + // Conversion for bool + spv::Id boolType = builder.makeBoolType(); + if (nominalTypeId != boolType) + return builder.createBinOp(spv::OpINotEqual, boolType, loadedId, builder.makeUintConstant(0)); + } else if (builder.isVectorType(nominalTypeId)) { + // Conversion for bvec + int vecSize = builder.getNumTypeComponents(nominalTypeId); + spv::Id bvecType = builder.makeVectorType(builder.makeBoolType(), vecSize); + if (nominalTypeId != bvecType) + loadedId = builder.createBinOp(spv::OpINotEqual, bvecType, loadedId, + makeSmearedConstant(builder.makeUintConstant(0), vecSize)); + } else if (builder.isArrayType(nominalTypeId)) { + // Conversion for bool array + spv::Id boolArrayTypeId = convertGlslangToSpvType(type); + if (nominalTypeId != boolArrayTypeId) + { + // Use OpCopyLogical from SPIR-V 1.4 if available. + if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4) + return builder.createUnaryOp(spv::OpCopyLogical, boolArrayTypeId, loadedId); + + glslang::TType glslangElementType(type, 0); + spv::Id elementNominalTypeId = builder.getContainedTypeId(nominalTypeId); + std::vector constituents; + for (int index = 0; index < type.getOuterArraySize(); ++index) { + // get the element + spv::Id elementValue = builder.createCompositeExtract(loadedId, elementNominalTypeId, index); + + // recursively convert it + spv::Id elementConvertedValue = convertLoadedBoolInUniformToUint(glslangElementType, elementNominalTypeId, elementValue); + constituents.push_back(elementConvertedValue); + } + return builder.createCompositeConstruct(boolArrayTypeId, constituents); + } + } + + return loadedId; +} + // Figure out what, if any, type changes are needed when accessing a specific built-in. // Returns . // Also see comment for 'forceType', regarding tracking SPIR-V-required types. -std::pair TGlslangToSpvTraverser::getForcedType(spv::BuiltIn builtIn, +std::pair TGlslangToSpvTraverser::getForcedType(glslang::TBuiltInVariable glslangBuiltIn, const glslang::TType& glslangType) { - switch(builtIn) + switch(glslangBuiltIn) { - case spv::BuiltInSubgroupEqMask: - case spv::BuiltInSubgroupGeMask: - case spv::BuiltInSubgroupGtMask: - case spv::BuiltInSubgroupLeMask: - case spv::BuiltInSubgroupLtMask: { + case glslang::EbvSubGroupEqMask: + case glslang::EbvSubGroupGeMask: + case glslang::EbvSubGroupGtMask: + case glslang::EbvSubGroupLeMask: + case glslang::EbvSubGroupLtMask: { // these require changing a 64-bit scaler -> a vector of 32-bit components if (glslangType.isVector()) break; - std::pair ret(builder.makeVectorType(builder.makeUintType(32), 4), - builder.makeUintType(64)); + spv::Id ivec4_type = builder.makeVectorType(builder.makeUintType(32), 4); + spv::Id uint64_type = builder.makeUintType(64); + std::pair ret(ivec4_type, uint64_type); + return ret; + } + // There are no SPIR-V builtins defined for these and map onto original non-transposed + // builtins. During visitBinary we insert a transpose + case glslang::EbvWorldToObject3x4: + case glslang::EbvObjectToWorld3x4: { + spv::Id mat43 = builder.makeMatrixType(builder.makeFloatType(32), 4, 3); + spv::Id mat34 = builder.makeMatrixType(builder.makeFloatType(32), 3, 4); + std::pair ret(mat43, mat34); return ret; } default: @@ -2029,7 +2364,7 @@ spv::Id TGlslangToSpvTraverser::translateForcedType(spv::Id object) // handle 32-bit v.xy* -> 64-bit builder.clearAccessChain(); builder.setAccessChainLValue(object); - object = builder.accessChainLoad(spv::NoPrecision, spv::DecorationMax, objectTypeId); + object = builder.accessChainLoad(spv::NoPrecision, spv::DecorationMax, spv::DecorationMax, objectTypeId); std::vector components; components.push_back(builder.createCompositeExtract(object, builder.getContainedTypeId(objectTypeId), 0)); components.push_back(builder.createCompositeExtract(object, builder.getContainedTypeId(objectTypeId), 1)); @@ -2040,7 +2375,15 @@ spv::Id TGlslangToSpvTraverser::translateForcedType(spv::Id object) } else { logger->missingFunctionality("forcing 32-bit vector type to non 64-bit scalar"); } - } else { + } else if (builder.isMatrixType(objectTypeId)) { + // There are no SPIR-V builtins defined for 3x4 variants of ObjectToWorld/WorldToObject + // and we insert a transpose after loading the original non-transposed builtins + builder.clearAccessChain(); + builder.setAccessChainLValue(object); + object = builder.accessChainLoad(spv::NoPrecision, spv::DecorationMax, spv::DecorationMax, objectTypeId); + return builder.createUnaryOp(spv::OpTranspose, desiredTypeId, object); + + } else { logger->missingFunctionality("forcing non 32-bit vector type"); } @@ -2091,7 +2434,8 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI } else { glslang::TIntermTyped* block = node->getOperand()->getAsBinaryNode()->getLeft(); block->traverse(this); - unsigned int member = node->getOperand()->getAsBinaryNode()->getRight()->getAsConstantUnion()->getConstArray()[0].getUConst(); + unsigned int member = node->getOperand()->getAsBinaryNode()->getRight()->getAsConstantUnion() + ->getConstArray()[0].getUConst(); length = builder.createArrayLength(builder.accessChainGetLValue(), member); } @@ -2117,7 +2461,8 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI // Does it need a swizzle inversion? If so, evaluation is inverted; // operate first on the swizzle base, then apply the swizzle. spv::Id invertedType = spv::NoType; - auto resultType = [&invertedType, &node, this](){ return invertedType != spv::NoType ? invertedType : convertGlslangToSpvType(node->getType()); }; + auto resultType = [&invertedType, &node, this](){ return invertedType != spv::NoType ? + invertedType : convertGlslangToSpvType(node->getType()); }; if (node->getOp() == glslang::EOpInterpolateAtCentroid) invertedType = getInvertedSwizzleType(*node->getOperand()); @@ -2138,10 +2483,23 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI if (node->getOp() == glslang::EOpAtomicCounterIncrement || node->getOp() == glslang::EOpAtomicCounterDecrement || node->getOp() == glslang::EOpAtomicCounter || - node->getOp() == glslang::EOpInterpolateAtCentroid) { + (node->getOp() == glslang::EOpInterpolateAtCentroid && + glslangIntermediate->getSource() != glslang::EShSourceHlsl) || + node->getOp() == glslang::EOpRayQueryProceed || + node->getOp() == glslang::EOpRayQueryGetRayTMin || + node->getOp() == glslang::EOpRayQueryGetRayFlags || + node->getOp() == glslang::EOpRayQueryGetWorldRayOrigin || + node->getOp() == glslang::EOpRayQueryGetWorldRayDirection || + node->getOp() == glslang::EOpRayQueryGetIntersectionCandidateAABBOpaque || + node->getOp() == glslang::EOpRayQueryTerminate || + node->getOp() == glslang::EOpRayQueryConfirmIntersection || + (node->getOp() == glslang::EOpSpirvInst && operandNode->getAsTyped()->getQualifier().isSpirvByReference())) { operand = builder.accessChainGetLValue(); // Special case l-value operands lvalueCoherentFlags = builder.getAccessChain().coherentFlags; lvalueCoherentFlags |= TranslateCoherent(operandNode->getAsTyped()->getType()); + } else if (operandNode->getAsTyped()->getQualifier().isSpirvLiteral()) { + // Will be translated to a literal value, make a placeholder here + operand = spv::NoResult; } else #endif { @@ -2154,11 +2512,45 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI // it could be a conversion if (! result) - result = createConversion(node->getOp(), decorations, resultType(), operand, node->getOperand()->getBasicType()); + result = createConversion(node->getOp(), decorations, resultType(), operand, + node->getOperand()->getBasicType()); // if not, then possibly an operation if (! result) - result = createUnaryOperation(node->getOp(), decorations, resultType(), operand, node->getOperand()->getBasicType(), lvalueCoherentFlags); + result = createUnaryOperation(node->getOp(), decorations, resultType(), operand, + node->getOperand()->getBasicType(), lvalueCoherentFlags); + +#ifndef GLSLANG_WEB + // it could be attached to a SPIR-V intruction + if (!result) { + if (node->getOp() == glslang::EOpSpirvInst) { + const auto& spirvInst = node->getSpirvInstruction(); + if (spirvInst.set == "") { + spv::IdImmediate idImmOp = {true, operand}; + if (operandNode->getAsTyped()->getQualifier().isSpirvLiteral()) { + // Translate the constant to a literal value + std::vector literals; + glslang::TVector constants; + constants.push_back(operandNode->getAsConstantUnion()); + TranslateLiterals(constants, literals); + idImmOp = {false, literals[0]}; + } + + if (node->getBasicType() == glslang::EbtVoid) + builder.createNoResultOp(static_cast(spirvInst.id), {idImmOp}); + else + result = builder.createOp(static_cast(spirvInst.id), resultType(), {idImmOp}); + } else { + result = builder.createBuiltinCall( + resultType(), spirvInst.set == "GLSL.std.450" ? stdBuiltins : getExtBuiltins(spirvInst.set.c_str()), + spirvInst.id, {operand}); + } + + if (node->getBasicType() == glslang::EbtVoid) + return false; // done with this node + } + } +#endif if (result) { if (invertedType) { @@ -2211,7 +2603,8 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI // The result of operation is always stored, but conditionally the // consumed result. The consumed result is always an r-value. - builder.accessChainStore(result); + builder.accessChainStore(result, + TranslateNonUniformDecoration(builder.getAccessChain().coherentFlags)); builder.clearAccessChain(); if (node->getOp() == glslang::EOpPreIncrement || node->getOp() == glslang::EOpPreDecrement) @@ -2229,6 +2622,12 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI case glslang::EOpEndStreamPrimitive: builder.createNoResultOp(spv::OpEndStreamPrimitive, operand); return false; + case glslang::EOpRayQueryTerminate: + builder.createNoResultOp(spv::OpRayQueryTerminateKHR, operand); + return false; + case glslang::EOpRayQueryConfirmIntersection: + builder.createNoResultOp(spv::OpRayQueryConfirmIntersectionKHR, operand); + return false; #endif default: @@ -2251,7 +2650,8 @@ spv::Id TGlslangToSpvTraverser::createCompositeConstruct(spv::Id resultTypeId, s std::vector rTypeConstituents; int numrTypeConstituents = builder.getNumTypeConstituents(rType); for (int i = 0; i < numrTypeConstituents; ++i) { - rTypeConstituents.push_back(builder.createCompositeExtract(constituent, builder.getContainedTypeId(rType, i), i)); + rTypeConstituents.push_back(builder.createCompositeExtract(constituent, + builder.getContainedTypeId(rType, i), i)); } constituents[c] = createCompositeConstruct(lType, rTypeConstituents); } else { @@ -2277,8 +2677,14 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); spv::Id result = spv::NoResult; - spv::Id invertedType = spv::NoType; // to use to override the natural type of the node - auto resultType = [&invertedType, &node, this](){ return invertedType != spv::NoType ? invertedType : convertGlslangToSpvType(node->getType()); }; + spv::Id invertedType = spv::NoType; // to use to override the natural type of the node + std::vector complexLvalues; // for holding swizzling l-values too complex for + // SPIR-V, for an out parameter + std::vector temporaryLvalues; // temporaries to pass, as proxies for complexLValues + + auto resultType = [&invertedType, &node, this](){ return invertedType != spv::NoType ? + invertedType : + convertGlslangToSpvType(node->getType()); }; // try texturing result = createImageTextureFunctionCall(node); @@ -2327,6 +2733,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt // anything else gets there, so visit out of order, doing them all now. makeGlobalInitializers(node->getAsAggregate()->getSequence()); + //Pre process linker objects for ray tracing stages + if (glslangIntermediate->isRayTracingStage()) + collectRayTracingLinkerObjects(); + // Initializers are done, don't want to visit again, but functions and link objects need to be processed, // so do them manually. visitFunctions(node->getAsAggregate()->getSequence()); @@ -2382,7 +2792,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt builder.setLine(node->getLoc().line, node->getLoc().getFilename()); if (node->isUserDefined()) result = handleUserFunctionCall(node); - // assert(result); // this can happen for bad shaders because the call graph completeness checking is not yet done if (result) { builder.clearAccessChain(); builder.setAccessChainRValue(result); @@ -2518,6 +2927,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt else constructed = builder.createConstructor(precision, arguments, resultType()); + if (node->getType().getQualifier().isNonUniform()) { + builder.addDecoration(constructed, spv::DecorationNonUniformEXT); + } + builder.clearAccessChain(); builder.setAccessChainRValue(constructed); @@ -2590,6 +3003,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt break; case glslang::EOpAtomicAdd: + case glslang::EOpAtomicSubtract: case glslang::EOpAtomicMin: case glslang::EOpAtomicMax: case glslang::EOpAtomicAnd: @@ -2636,10 +3050,43 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpIgnoreIntersectionNV: case glslang::EOpTerminateRayNV: case glslang::EOpTraceNV: + case glslang::EOpTraceRayMotionNV: + case glslang::EOpTraceKHR: case glslang::EOpExecuteCallableNV: + case glslang::EOpExecuteCallableKHR: case glslang::EOpWritePackedPrimitiveIndices4x8NV: noReturnValue = true; break; + case glslang::EOpRayQueryInitialize: + case glslang::EOpRayQueryTerminate: + case glslang::EOpRayQueryGenerateIntersection: + case glslang::EOpRayQueryConfirmIntersection: + builder.addExtension("SPV_KHR_ray_query"); + builder.addCapability(spv::CapabilityRayQueryKHR); + noReturnValue = true; + break; + case glslang::EOpRayQueryProceed: + case glslang::EOpRayQueryGetIntersectionType: + case glslang::EOpRayQueryGetRayTMin: + case glslang::EOpRayQueryGetRayFlags: + case glslang::EOpRayQueryGetIntersectionT: + case glslang::EOpRayQueryGetIntersectionInstanceCustomIndex: + case glslang::EOpRayQueryGetIntersectionInstanceId: + case glslang::EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset: + case glslang::EOpRayQueryGetIntersectionGeometryIndex: + case glslang::EOpRayQueryGetIntersectionPrimitiveIndex: + case glslang::EOpRayQueryGetIntersectionBarycentrics: + case glslang::EOpRayQueryGetIntersectionFrontFace: + case glslang::EOpRayQueryGetIntersectionCandidateAABBOpaque: + case glslang::EOpRayQueryGetIntersectionObjectRayDirection: + case glslang::EOpRayQueryGetIntersectionObjectRayOrigin: + case glslang::EOpRayQueryGetWorldRayDirection: + case glslang::EOpRayQueryGetWorldRayOrigin: + case glslang::EOpRayQueryGetIntersectionObjectToWorld: + case glslang::EOpRayQueryGetIntersectionWorldToObject: + builder.addExtension("SPV_KHR_ray_query"); + builder.addCapability(spv::CapabilityRayQueryKHR); + break; case glslang::EOpCooperativeMatrixLoad: case glslang::EOpCooperativeMatrixStore: noReturnValue = true; @@ -2651,6 +3098,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt break; #endif + case glslang::EOpDebugPrintf: + noReturnValue = true; + break; + default: break; } @@ -2702,7 +3153,30 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt lvalue = true; break; + case glslang::EOpRayQueryInitialize: + case glslang::EOpRayQueryTerminate: + case glslang::EOpRayQueryConfirmIntersection: + case glslang::EOpRayQueryProceed: + case glslang::EOpRayQueryGenerateIntersection: + case glslang::EOpRayQueryGetIntersectionType: + case glslang::EOpRayQueryGetIntersectionT: + case glslang::EOpRayQueryGetIntersectionInstanceCustomIndex: + case glslang::EOpRayQueryGetIntersectionInstanceId: + case glslang::EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset: + case glslang::EOpRayQueryGetIntersectionGeometryIndex: + case glslang::EOpRayQueryGetIntersectionPrimitiveIndex: + case glslang::EOpRayQueryGetIntersectionBarycentrics: + case glslang::EOpRayQueryGetIntersectionFrontFace: + case glslang::EOpRayQueryGetIntersectionObjectRayDirection: + case glslang::EOpRayQueryGetIntersectionObjectRayOrigin: + case glslang::EOpRayQueryGetIntersectionObjectToWorld: + case glslang::EOpRayQueryGetIntersectionWorldToObject: + if (arg == 0) + lvalue = true; + break; + case glslang::EOpAtomicAdd: + case glslang::EOpAtomicSubtract: case glslang::EOpAtomicMin: case glslang::EOpAtomicMax: case glslang::EOpAtomicAnd: @@ -2723,13 +3197,24 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpInterpolateAtOffset: case glslang::EOpInterpolateAtVertex: if (arg == 0) { - lvalue = true; + // If GLSL, use the address of the interpolant argument. + // If HLSL, use an internal version of OpInterolates that takes + // the rvalue of the interpolant. A fixup pass in spirv-opt + // legalization will remove the OpLoad and convert to an lvalue. + // Had to do this because legalization will only propagate a + // builtin into an rvalue. + lvalue = glslangIntermediate->getSource() != glslang::EShSourceHlsl; // Does it need a swizzle inversion? If so, evaluation is inverted; // operate first on the swizzle base, then apply the swizzle. + // That is, we transform + // + // interpolate(v.zy) -> interpolate(v).zy + // if (glslangOperands[0]->getAsOperator() && glslangOperands[0]->getAsOperator()->getOp() == glslang::EOpVectorSwizzle) - invertedType = convertGlslangToSpvType(glslangOperands[0]->getAsBinaryNode()->getLeft()->getType()); + invertedType = convertGlslangToSpvType( + glslangOperands[0]->getAsBinaryNode()->getLeft()->getType()); } break; case glslang::EOpAtomicLoad: @@ -2764,6 +3249,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt if (arg == 1) lvalue = true; break; + case glslang::EOpSpirvInst: + if (glslangOperands[arg]->getAsTyped()->getQualifier().isSpirvByReference()) + lvalue = true; + break; #endif default: break; @@ -2789,8 +3278,9 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt builder.setAccessChain(save); // Point to the first element of the array. - builder.accessChainPush(elementId, TranslateCoherent(glslangOperands[arg]->getAsTyped()->getType()), - glslangOperands[arg]->getAsTyped()->getType().getBufferReferenceAlignment()); + builder.accessChainPush(elementId, + TranslateCoherent(glslangOperands[arg]->getAsTyped()->getType()), + glslangOperands[arg]->getAsTyped()->getType().getBufferReferenceAlignment()); spv::Builder::AccessChain::CoherentFlags coherentFlags = builder.getAccessChain().coherentFlags; unsigned int alignment = builder.getAccessChain().alignment; @@ -2800,7 +3290,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt memoryAccess &= ~spv::MemoryAccessMakePointerAvailableKHRMask; if (node->getOp() == glslang::EOpCooperativeMatrixStore) memoryAccess &= ~spv::MemoryAccessMakePointerVisibleKHRMask; - if (builder.getStorageClass(builder.getAccessChain().base) == spv::StorageClassPhysicalStorageBufferEXT) { + if (builder.getStorageClass(builder.getAccessChain().base) == + spv::StorageClassPhysicalStorageBufferEXT) { memoryAccess = (spv::MemoryAccessMask)(memoryAccess | spv::MemoryAccessAlignedMask); } @@ -2810,8 +3301,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt memoryAccessOperands.push_back(spv::IdImmediate(false, alignment)); } - if (memoryAccess & (spv::MemoryAccessMakePointerAvailableKHRMask | spv::MemoryAccessMakePointerVisibleKHRMask)) { - memoryAccessOperands.push_back(spv::IdImmediate(true, builder.makeUintConstant(TranslateMemoryScope(coherentFlags)))); + if (memoryAccess & + (spv::MemoryAccessMakePointerAvailableKHRMask | spv::MemoryAccessMakePointerVisibleKHRMask)) { + memoryAccessOperands.push_back(spv::IdImmediate(true, + builder.makeUintConstant(TranslateMemoryScope(coherentFlags)))); } } else if (arg == 2) { continue; @@ -2819,13 +3312,62 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt } #endif + // for l-values, pass the address, for r-values, pass the value if (lvalue) { - operands.push_back(builder.accessChainGetLValue()); + if (invertedType == spv::NoType && !builder.isSpvLvalue()) { + // SPIR-V cannot represent an l-value containing a swizzle that doesn't + // reduce to a simple access chain. So, we need a temporary vector to + // receive the result, and must later swizzle that into the original + // l-value. + complexLvalues.push_back(builder.getAccessChain()); + temporaryLvalues.push_back(builder.createVariable( + spv::NoPrecision, spv::StorageClassFunction, + builder.accessChainGetInferredType(), "swizzleTemp")); + operands.push_back(temporaryLvalues.back()); + } else { + operands.push_back(builder.accessChainGetLValue()); + } lvalueCoherentFlags = builder.getAccessChain().coherentFlags; lvalueCoherentFlags |= TranslateCoherent(glslangOperands[arg]->getAsTyped()->getType()); } else { builder.setLine(node->getLoc().line, node->getLoc().getFilename()); - operands.push_back(accessChainLoad(glslangOperands[arg]->getAsTyped()->getType())); + glslang::TOperator glslangOp = node->getOp(); + if (arg == 1 && + (glslangOp == glslang::EOpRayQueryGetIntersectionType || + glslangOp == glslang::EOpRayQueryGetIntersectionT || + glslangOp == glslang::EOpRayQueryGetIntersectionInstanceCustomIndex || + glslangOp == glslang::EOpRayQueryGetIntersectionInstanceId || + glslangOp == glslang::EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset || + glslangOp == glslang::EOpRayQueryGetIntersectionGeometryIndex || + glslangOp == glslang::EOpRayQueryGetIntersectionPrimitiveIndex || + glslangOp == glslang::EOpRayQueryGetIntersectionBarycentrics || + glslangOp == glslang::EOpRayQueryGetIntersectionFrontFace || + glslangOp == glslang::EOpRayQueryGetIntersectionObjectRayDirection || + glslangOp == glslang::EOpRayQueryGetIntersectionObjectRayOrigin || + glslangOp == glslang::EOpRayQueryGetIntersectionObjectToWorld || + glslangOp == glslang::EOpRayQueryGetIntersectionWorldToObject + )) { + bool cond = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getBConst(); + operands.push_back(builder.makeIntConstant(cond ? 1 : 0)); + } else if ((arg == 10 && glslangOp == glslang::EOpTraceKHR) || + (arg == 11 && glslangOp == glslang::EOpTraceRayMotionNV) || + (arg == 1 && glslangOp == glslang::EOpExecuteCallableKHR)) { + const int opdNum = glslangOp == glslang::EOpTraceKHR ? 10 : (glslangOp == glslang::EOpTraceRayMotionNV ? 11 : 1); + const int set = glslangOp == glslang::EOpExecuteCallableKHR ? 1 : 0; + + const int location = glslangOperands[opdNum]->getAsConstantUnion()->getConstArray()[0].getUConst(); + auto itNode = locationToSymbol[set].find(location); + visitSymbol(itNode->second); + spv::Id symId = getSymbolId(itNode->second); + operands.push_back(symId); +#ifndef GLSLANG_WEB + } else if (glslangOperands[arg]->getAsTyped()->getQualifier().isSpirvLiteral()) { + // Will be translated to a literal value, make a placeholder here + operands.push_back(spv::NoResult); +#endif + } else { + operands.push_back(accessChainLoad(glslangOperands[arg]->getAsTyped()->getType())); + } } } @@ -2861,7 +3403,44 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt #endif if (atomic) { // Handle all atomics - result = createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(), lvalueCoherentFlags); + glslang::TBasicType typeProxy = (node->getOp() == glslang::EOpAtomicStore) + ? node->getSequence()[0]->getAsTyped()->getBasicType() : node->getBasicType(); + result = createAtomicOperation(node->getOp(), precision, resultType(), operands, typeProxy, + lvalueCoherentFlags); +#ifndef GLSLANG_WEB + } else if (node->getOp() == glslang::EOpSpirvInst) { + const auto& spirvInst = node->getSpirvInstruction(); + if (spirvInst.set == "") { + std::vector idImmOps; + for (unsigned int i = 0; i < glslangOperands.size(); ++i) { + if (glslangOperands[i]->getAsTyped()->getQualifier().isSpirvLiteral()) { + // Translate the constant to a literal value + std::vector literals; + glslang::TVector constants; + constants.push_back(glslangOperands[i]->getAsConstantUnion()); + TranslateLiterals(constants, literals); + idImmOps.push_back({false, literals[0]}); + } else + idImmOps.push_back({true, operands[i]}); + } + + if (node->getBasicType() == glslang::EbtVoid) + builder.createNoResultOp(static_cast(spirvInst.id), idImmOps); + else + result = builder.createOp(static_cast(spirvInst.id), resultType(), idImmOps); + } else { + result = builder.createBuiltinCall( + resultType(), spirvInst.set == "GLSL.std.450" ? stdBuiltins : getExtBuiltins(spirvInst.set.c_str()), + spirvInst.id, operands); + } + noReturnValue = node->getBasicType() == glslang::EbtVoid; +#endif + } else if (node->getOp() == glslang::EOpDebugPrintf) { + if (!nonSemanticDebugPrintf) { + nonSemanticDebugPrintf = builder.import("NonSemantic.DebugPrintf"); + } + result = builder.createBuiltinCall(builder.makeVoidType(), nonSemanticDebugPrintf, spv::NonSemanticDebugPrintfDebugPrintf, operands); + builder.addExtension(spv::E_SPV_KHR_non_semantic_info); } else { // Pass through to generic operations. switch (glslangOperands.size()) { @@ -2883,8 +3462,15 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt result = createMiscOperation(node->getOp(), precision, resultType(), operands, node->getBasicType()); break; } - if (invertedType) + + if (invertedType != spv::NoResult) result = createInvertedSwizzle(precision, *glslangOperands[0]->getAsBinaryNode(), result); + + for (unsigned int i = 0; i < temporaryLvalues.size(); ++i) { + builder.setAccessChain(complexLvalues[i]); + builder.accessChainStore(builder.createLoad(temporaryLvalues[i], spv::NoPrecision), + TranslateNonUniformDecoration(complexLvalues[i].coherentFlags)); + } } if (noReturnValue) @@ -3000,7 +3586,8 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang } else { // We need control flow to select the result. // TODO: Once SPIR-V OpSelect allows arbitrary types, eliminate this path. - result = builder.createVariable(spv::StorageClassFunction, convertGlslangToSpvType(node->getType())); + result = builder.createVariable(TranslatePrecisionDecoration(node->getType()), + spv::StorageClassFunction, convertGlslangToSpvType(node->getType())); // Selection control: const spv::SelectionControlMask control = TranslateSelectionControl(*node); @@ -3025,8 +3612,10 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang // Execute the one side needed, as per the condition const auto executeOneSide = [&]() { // Always emit control flow. - if (node->getBasicType() != glslang::EbtVoid) - result = builder.createVariable(spv::StorageClassFunction, convertGlslangToSpvType(node->getType())); + if (node->getBasicType() != glslang::EbtVoid) { + result = builder.createVariable(TranslatePrecisionDecoration(node->getType()), spv::StorageClassFunction, + convertGlslangToSpvType(node->getType())); + } // Selection control: const spv::SelectionControlMask control = TranslateSelectionControl(*node); @@ -3091,7 +3680,8 @@ bool TGlslangToSpvTraverser::visitSwitch(glslang::TVisit /* visit */, glslang::T defaultSegment = (int)codeSegments.size(); else if (child->getAsBranchNode() && child->getAsBranchNode()->getFlowOp() == glslang::EOpCase) { valueIndexToSegment[caseValues.size()] = (int)codeSegments.size(); - caseValues.push_back(child->getAsBranchNode()->getExpression()->getAsConstantUnion()->getConstArray()[0].getIConst()); + caseValues.push_back(child->getAsBranchNode()->getExpression()->getAsConstantUnion() + ->getConstArray()[0].getIConst()); } else codeSegments.push_back(child); } @@ -3104,7 +3694,8 @@ bool TGlslangToSpvTraverser::visitSwitch(glslang::TVisit /* visit */, glslang::T // make the switch statement std::vector segmentBlocks; // returned, as the blocks allocated in the call - builder.makeSwitch(selector, control, (int)codeSegments.size(), caseValues, valueIndexToSegment, defaultSegment, segmentBlocks); + builder.makeSwitch(selector, control, (int)codeSegments.size(), caseValues, valueIndexToSegment, defaultSegment, + segmentBlocks); // emit all the code in the segments breakForLoop.push(false); @@ -3124,6 +3715,11 @@ bool TGlslangToSpvTraverser::visitSwitch(glslang::TVisit /* visit */, glslang::T void TGlslangToSpvTraverser::visitConstantUnion(glslang::TIntermConstantUnion* node) { +#ifndef GLSLANG_WEB + if (node->getQualifier().isSpirvLiteral()) + return; // Translated to a literal value, skip further processing +#endif + int nextConst = 0; spv::Id constant = createSpvConstantFromConstUnionArray(node->getType(), node->getConstArray(), nextConst, false); @@ -3209,7 +3805,20 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T switch (node->getFlowOp()) { case glslang::EOpKill: - builder.makeDiscard(); + if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { + if (glslangIntermediate->getSource() == glslang::EShSourceHlsl) { + builder.addCapability(spv::CapabilityDemoteToHelperInvocation); + builder.createNoResultOp(spv::OpDemoteToHelperInvocationEXT); + } else { + builder.makeStatementTerminator(spv::OpTerminateInvocation, "post-terminate-invocation"); + } + } else { + builder.makeStatementTerminator(spv::OpKill, "post-discard"); + } + break; + case glslang::EOpTerminateInvocation: + builder.addExtension(spv::E_SPV_KHR_terminate_invocation); + builder.makeStatementTerminator(spv::OpTerminateInvocation, "post-terminate-invocation"); break; case glslang::EOpBreak: if (breakForLoop.top()) @@ -3221,15 +3830,17 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T builder.createLoopContinue(); break; case glslang::EOpReturn: - if (node->getExpression()) { + if (node->getExpression() != nullptr) { const glslang::TType& glslangReturnType = node->getExpression()->getType(); spv::Id returnId = accessChainLoad(glslangReturnType); - if (builder.getTypeId(returnId) != currentFunction->getReturnType()) { + if (builder.getTypeId(returnId) != currentFunction->getReturnType() || + TranslatePrecisionDecoration(glslangReturnType) != currentFunction->getReturnPrecision()) { builder.clearAccessChain(); - spv::Id copyId = builder.createVariable(spv::StorageClassFunction, currentFunction->getReturnType()); + spv::Id copyId = builder.createVariable(currentFunction->getReturnPrecision(), + spv::StorageClassFunction, currentFunction->getReturnType()); builder.setAccessChainLValue(copyId); multiTypeStore(glslangReturnType, returnId); - returnId = builder.createLoad(copyId); + returnId = builder.createLoad(copyId, currentFunction->getReturnPrecision()); } builder.makeReturn(false, returnId); } else @@ -3244,6 +3855,12 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T builder.addExtension(spv::E_SPV_EXT_demote_to_helper_invocation); builder.addCapability(spv::CapabilityDemoteToHelperInvocationEXT); break; + case glslang::EOpTerminateRayKHR: + builder.makeStatementTerminator(spv::OpTerminateRayKHR, "post-terminateRayKHR"); + break; + case glslang::EOpIgnoreIntersectionKHR: + builder.makeStatementTerminator(spv::OpIgnoreIntersectionKHR, "post-ignoreIntersectionKHR"); + break; #endif default: @@ -3298,6 +3915,11 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* break; #endif default: + if (storageClass == spv::StorageClassWorkgroup && + node->getType().getBasicType() == glslang::EbtBlock) { + builder.addCapability(spv::CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR); + break; + } if (node->getType().contains16BitFloat()) builder.addCapability(spv::CapabilityFloat16); if (node->getType().contains16BitInt()) @@ -3316,6 +3938,9 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* } else if (storageClass == spv::StorageClassStorageBuffer) { builder.addIncorporatedExtension(spv::E_SPV_KHR_8bit_storage, spv::Spv_1_5); builder.addCapability(spv::CapabilityStorageBuffer8BitAccess); + } else if (storageClass == spv::StorageClassWorkgroup && + node->getType().getBasicType() == glslang::EbtBlock) { + builder.addCapability(spv::CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR); } else { builder.addCapability(spv::CapabilityInt8); } @@ -3325,7 +3950,19 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* if (glslang::IsAnonymous(name)) name = ""; - return builder.createVariable(storageClass, spvType, name); + spv::Id initializer = spv::NoResult; + + if (node->getType().getQualifier().storage == glslang::EvqUniform && !node->getConstArray().empty()) { + int nextConst = 0; + initializer = createSpvConstantFromConstUnionArray(node->getType(), + node->getConstArray(), + nextConst, + false /* specConst */); + } else if (node->getType().getQualifier().isNullInit()) { + initializer = builder.makeNullConstant(spvType); + } + + return builder.createVariable(spv::NoPrecision, storageClass, spvType, name, initializer); } // Return type Id of the sampled type. @@ -3340,6 +3977,14 @@ spv::Id TGlslangToSpvTraverser::getSampledType(const glslang::TSampler& sampler) builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float_fetch); builder.addCapability(spv::CapabilityFloat16ImageAMD); return builder.makeFloatType(16); + case glslang::EbtInt64: + builder.addExtension(spv::E_SPV_EXT_shader_image_int64); + builder.addCapability(spv::CapabilityInt64ImageEXT); + return builder.makeIntType(64); + case glslang::EbtUint64: + builder.addExtension(spv::E_SPV_EXT_shader_image_int64); + builder.addCapability(spv::CapabilityInt64ImageEXT); + return builder.makeUintType(64); #endif default: assert(0); @@ -3361,7 +4006,8 @@ spv::Id TGlslangToSpvTraverser::getInvertedSwizzleType(const glslang::TIntermTyp // When inverting a swizzle with a parent op, this function // will apply the swizzle operation to a completed parent operation. -spv::Id TGlslangToSpvTraverser::createInvertedSwizzle(spv::Decoration precision, const glslang::TIntermTyped& node, spv::Id parentResult) +spv::Id TGlslangToSpvTraverser::createInvertedSwizzle(spv::Decoration precision, const glslang::TIntermTyped& node, + spv::Id parentResult) { std::vector swizzle; convertSwizzle(*node.getAsBinaryNode()->getRight()->getAsAggregate(), swizzle); @@ -3444,8 +4090,37 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty builder.addCapability(spv::CapabilityAtomicStorage); spvType = builder.makeUintType(32); break; - case glslang::EbtAccStructNV: - spvType = builder.makeAccelerationStructureNVType(); + case glslang::EbtAccStruct: + switch (glslangIntermediate->getStage()) { + case EShLangRayGen: + case EShLangIntersect: + case EShLangAnyHit: + case EShLangClosestHit: + case EShLangMiss: + case EShLangCallable: + // these all should have the RayTracingNV/KHR capability already + break; + default: + { + auto& extensions = glslangIntermediate->getRequestedExtensions(); + if (extensions.find("GL_EXT_ray_query") != extensions.end()) { + builder.addExtension(spv::E_SPV_KHR_ray_query); + builder.addCapability(spv::CapabilityRayQueryKHR); + } + } + break; + } + spvType = builder.makeAccelerationStructureType(); + break; + case glslang::EbtRayQuery: + { + auto& extensions = glslangIntermediate->getRequestedExtensions(); + if (extensions.find("GL_EXT_ray_query") != extensions.end()) { + builder.addExtension(spv::E_SPV_KHR_ray_query); + builder.addCapability(spv::CapabilityRayQueryKHR); + } + spvType = builder.makeRayQueryType(); + } break; case glslang::EbtReference: { @@ -3501,6 +4176,67 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty spvType = convertGlslangStructToSpvType(type, glslangMembers, explicitLayout, qualifier); } break; + case glslang::EbtString: + // no type used for OpString + return 0; +#ifndef GLSLANG_WEB + case glslang::EbtSpirvType: { + // GL_EXT_spirv_intrinsics + const auto& spirvType = type.getSpirvType(); + const auto& spirvInst = spirvType.spirvInst; + + std::vector operands; + for (const auto& typeParam : spirvType.typeParams) { + // Constant expression + if (typeParam.constant->isLiteral()) { + if (typeParam.constant->getBasicType() == glslang::EbtFloat) { + float floatValue = static_cast(typeParam.constant->getConstArray()[0].getDConst()); + unsigned literal = *reinterpret_cast(&floatValue); + operands.push_back({false, literal}); + } else if (typeParam.constant->getBasicType() == glslang::EbtInt) { + unsigned literal = typeParam.constant->getConstArray()[0].getIConst(); + operands.push_back({false, literal}); + } else if (typeParam.constant->getBasicType() == glslang::EbtUint) { + unsigned literal = typeParam.constant->getConstArray()[0].getUConst(); + operands.push_back({false, literal}); + } else if (typeParam.constant->getBasicType() == glslang::EbtBool) { + unsigned literal = typeParam.constant->getConstArray()[0].getBConst(); + operands.push_back({false, literal}); + } else if (typeParam.constant->getBasicType() == glslang::EbtString) { + auto str = typeParam.constant->getConstArray()[0].getSConst()->c_str(); + unsigned literal = 0; + char* literalPtr = reinterpret_cast(&literal); + unsigned charCount = 0; + char ch = 0; + do { + ch = *(str++); + *(literalPtr++) = ch; + ++charCount; + if (charCount == 4) { + operands.push_back({false, literal}); + literalPtr = reinterpret_cast(&literal); + charCount = 0; + } + } while (ch != 0); + + // Partial literal is padded with 0 + if (charCount > 0) { + for (; charCount < 4; ++charCount) + *(literalPtr++) = 0; + operands.push_back({false, literal}); + } + } else + assert(0); // Unexpected type + } else + operands.push_back({true, createSpvConstant(*typeParam.constant)}); + } + + assert(spirvInst.set == ""); // Currently, couldn't be extended instructions. + spvType = builder.makeGenericType(static_cast(spirvInst.id), operands); + + break; + } +#endif default: assert(0); break; @@ -3626,7 +4362,8 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy { // Create a vector of struct types for SPIR-V to consume std::vector spvMembers; - int memberDelta = 0; // how much the member's index changes from glslang to SPIR-V, normally 0, except sometimes for blocks + int memberDelta = 0; // how much the member's index changes from glslang to SPIR-V, normally 0, + // except sometimes for blocks std::vector > deferredForwardPointers; for (int i = 0; i < (int)glslangMembers->size(); i++) { glslang::TType& glslangMember = *(*glslangMembers)[i].type; @@ -3662,10 +4399,12 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy deferredForwardPointers.push_back(std::make_pair(&glslangMember, memberQualifier)); } spvMembers.push_back( - convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier, lastBufferBlockMember, true)); + convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier, lastBufferBlockMember, + true)); } else { spvMembers.push_back( - convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier, lastBufferBlockMember, false)); + convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier, lastBufferBlockMember, + false)); } } } @@ -3694,7 +4433,8 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, { // Name and decorate the non-hidden members int offset = -1; - int locationOffset = 0; // for use within the members of this struct + bool memberLocationInvalid = type.isArrayOfArrays() || + (type.isArray() && (type.getQualifier().isArrayedIo(glslangIntermediate->getStage()) == false)); for (int i = 0; i < (int)glslangMembers->size(); i++) { glslang::TType& glslangMember = *(*glslangMembers)[i].type; int member = i; @@ -3747,13 +4487,9 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, // just track whether a member needs to be decorated. // Ignore member locations if the container is an array, as that's // ill-specified and decisions have been made to not allow this. - if (! type.isArray() && memberQualifier.hasLocation()) + if (!memberLocationInvalid && memberQualifier.hasLocation()) builder.addMemberDecoration(spvType, member, spv::DecorationLocation, memberQualifier.layoutLocation); - if (qualifier.hasLocation()) // track for upcoming inheritance - locationOffset += glslangIntermediate->computeTypeLocationSize( - glslangMember, glslangIntermediate->getStage()); - // component, XFB, others if (glslangMember.getQualifier().hasComponent()) builder.addMemberDecoration(spvType, member, spv::DecorationComponent, @@ -3809,6 +4545,38 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, builder.addCapability(spv::CapabilityGeometryShaderPassthroughNV); builder.addExtension(spv::E_SPV_NV_geometry_shader_passthrough); } + + // + // Add SPIR-V decorations for members (GL_EXT_spirv_intrinsics) + // + if (glslangMember.getQualifier().hasSprivDecorate()) { + const glslang::TSpirvDecorate& spirvDecorate = glslangMember.getQualifier().getSpirvDecorate(); + + // Add spirv_decorate + for (auto& decorate : spirvDecorate.decorates) { + if (!decorate.second.empty()) { + std::vector literals; + TranslateLiterals(decorate.second, literals); + builder.addMemberDecoration(spvType, member, static_cast(decorate.first), literals); + } + else + builder.addMemberDecoration(spvType, member, static_cast(decorate.first)); + } + + // spirv_decorate_id not applied to members + assert(spirvDecorate.decorateIds.empty()); + + // Add spirv_decorate_string + for (auto& decorateString : spirvDecorate.decorateStrings) { + std::vector strings; + assert(!decorateString.second.empty()); + for (auto extraOperand : decorateString.second) { + const char* string = extraOperand->getConstArray()[0].getSConst()->c_str(); + strings.push_back(string); + } + builder.addDecoration(spvType, static_cast(decorateString.first), strings); + } + } #endif } @@ -3827,6 +4595,8 @@ spv::Id TGlslangToSpvTraverser::makeArraySizeId(const glslang::TArraySizes& arra glslang::TIntermTyped* specNode = arraySizes.getDimNode(dim); if (specNode != nullptr) { builder.clearAccessChain(); + SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder); + spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); specNode->traverse(this); return accessChainLoad(specNode->getAsTyped()->getType()); } @@ -3853,26 +4623,16 @@ spv::Id TGlslangToSpvTraverser::accessChainLoad(const glslang::TType& type) alignment |= type.getBufferReferenceAlignment(); spv::Id loadedId = builder.accessChainLoad(TranslatePrecisionDecoration(type), - TranslateNonUniformDecoration(type.getQualifier()), - nominalTypeId, - spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) & ~spv::MemoryAccessMakePointerAvailableKHRMask), - TranslateMemoryScope(coherentFlags), - alignment); + TranslateNonUniformDecoration(builder.getAccessChain().coherentFlags), + TranslateNonUniformDecoration(type.getQualifier()), + nominalTypeId, + spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) & ~spv::MemoryAccessMakePointerAvailableKHRMask), + TranslateMemoryScope(coherentFlags), + alignment); // Need to convert to abstract types when necessary if (type.getBasicType() == glslang::EbtBool) { - if (builder.isScalarType(nominalTypeId)) { - // Conversion for bool - spv::Id boolType = builder.makeBoolType(); - if (nominalTypeId != boolType) - loadedId = builder.createBinOp(spv::OpINotEqual, boolType, loadedId, builder.makeUintConstant(0)); - } else if (builder.isVectorType(nominalTypeId)) { - // Conversion for bvec - int vecSize = builder.getNumTypeComponents(nominalTypeId); - spv::Id bvecType = builder.makeVectorType(builder.makeBoolType(), vecSize); - if (nominalTypeId != bvecType) - loadedId = builder.createBinOp(spv::OpINotEqual, bvecType, loadedId, makeSmearedConstant(builder.makeUintConstant(0), vecSize)); - } + loadedId = convertLoadedBoolInUniformToUint(type, nominalTypeId, loadedId); } return loadedId; @@ -3919,8 +4679,9 @@ void TGlslangToSpvTraverser::accessChainStore(const glslang::TType& type, spv::I unsigned int alignment = builder.getAccessChain().alignment; alignment |= type.getBufferReferenceAlignment(); - builder.accessChainStore(rvalue, - spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) & ~spv::MemoryAccessMakePointerVisibleKHRMask), + builder.accessChainStore(rvalue, TranslateNonUniformDecoration(builder.getAccessChain().coherentFlags), + spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) & + ~spv::MemoryAccessMakePointerVisibleKHRMask), TranslateMemoryScope(coherentFlags), alignment); } @@ -3981,7 +4742,8 @@ void TGlslangToSpvTraverser::multiTypeStore(const glslang::TType& type, spv::Id // set up the target storage builder.clearAccessChain(); builder.setAccessChainLValue(lValue); - builder.accessChainPush(builder.makeIntConstant(index), TranslateCoherent(type), type.getBufferReferenceAlignment()); + builder.accessChainPush(builder.makeIntConstant(index), TranslateCoherent(type), + type.getBufferReferenceAlignment()); // store the member multiTypeStore(glslangElementType, elementRValue); @@ -4001,7 +4763,8 @@ void TGlslangToSpvTraverser::multiTypeStore(const glslang::TType& type, spv::Id // set up the target storage builder.clearAccessChain(); builder.setAccessChainLValue(lValue); - builder.accessChainPush(builder.makeIntConstant(m), TranslateCoherent(type), type.getBufferReferenceAlignment()); + builder.accessChainPush(builder.makeIntConstant(m), TranslateCoherent(type), + type.getBufferReferenceAlignment()); // store the member multiTypeStore(glslangMemberType, memberRValue); @@ -4021,6 +4784,7 @@ glslang::TLayoutPacking TGlslangToSpvTraverser::getExplicitLayout(const glslang: // has to be a uniform or buffer block or task in/out blocks if (type.getQualifier().storage != glslang::EvqUniform && type.getQualifier().storage != glslang::EvqBuffer && + type.getQualifier().storage != glslang::EvqShared && !type.getQualifier().isTaskMemory()) return glslang::ElpNone; @@ -4036,18 +4800,21 @@ glslang::TLayoutPacking TGlslangToSpvTraverser::getExplicitLayout(const glslang: } // Given an array type, returns the integer stride required for that array -int TGlslangToSpvTraverser::getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout) +int TGlslangToSpvTraverser::getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking explicitLayout, + glslang::TLayoutMatrix matrixLayout) { int size; int stride; - glslangIntermediate->getMemberAlignment(arrayType, size, stride, explicitLayout, matrixLayout == glslang::ElmRowMajor); + glslangIntermediate->getMemberAlignment(arrayType, size, stride, explicitLayout, + matrixLayout == glslang::ElmRowMajor); return stride; } // Given a matrix type, or array (of array) of matrixes type, returns the integer stride required for that matrix // when used as a member of an interface block -int TGlslangToSpvTraverser::getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout) +int TGlslangToSpvTraverser::getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking explicitLayout, + glslang::TLayoutMatrix matrixLayout) { glslang::TType elementType; elementType.shallowCopy(matrixType); @@ -4055,7 +4822,8 @@ int TGlslangToSpvTraverser::getMatrixStride(const glslang::TType& matrixType, gl int size; int stride; - glslangIntermediate->getMemberAlignment(elementType, size, stride, explicitLayout, matrixLayout == glslang::ElmRowMajor); + glslangIntermediate->getMemberAlignment(elementType, size, stride, explicitLayout, + matrixLayout == glslang::ElmRowMajor); return stride; } @@ -4066,8 +4834,8 @@ int TGlslangToSpvTraverser::getMatrixStride(const glslang::TType& matrixType, gl // 'currentOffset' should be passed in already initialized, ready to modify, and reflecting // the migration of data from nextOffset -> currentOffset. It should be -1 on the first call. // -1 means a non-forced member offset (no decoration needed). -void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset, - glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout) +void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, + int& currentOffset, int& nextOffset, glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout) { // this will get a positive value when deemed necessary nextOffset = -1; @@ -4097,7 +4865,8 @@ void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType int memberSize; int dummyStride; - int memberAlignment = glslangIntermediate->getMemberAlignment(memberType, memberSize, dummyStride, explicitLayout, matrixLayout == glslang::ElmRowMajor); + int memberAlignment = glslangIntermediate->getMemberAlignment(memberType, memberSize, dummyStride, explicitLayout, + matrixLayout == glslang::ElmRowMajor); // Adjust alignment for HLSL rules // TODO: make this consistent in early phases of code: @@ -4116,7 +4885,8 @@ void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType glslang::RoundToPow2(currentOffset, memberAlignment); // Bump up to vec4 if there is a bad straddle - if (explicitLayout != glslang::ElpScalar && glslangIntermediate->improperStraddle(memberType, memberSize, currentOffset)) + if (explicitLayout != glslang::ElpScalar && glslangIntermediate->improperStraddle(memberType, memberSize, + currentOffset)) glslang::RoundToPow2(currentOffset, 16); nextOffset = currentOffset + memberSize; @@ -4169,8 +4939,10 @@ bool TGlslangToSpvTraverser::writableParam(glslang::TStorageQualifier qualifier) assert(qualifier == glslang::EvqIn || qualifier == glslang::EvqOut || qualifier == glslang::EvqInOut || + qualifier == glslang::EvqUniform || qualifier == glslang::EvqConstReadOnly); - return qualifier != glslang::EvqConstReadOnly; + return qualifier != glslang::EvqConstReadOnly && + qualifier != glslang::EvqUniform; } // Is parameter pass-by-original? @@ -4182,13 +4954,17 @@ bool TGlslangToSpvTraverser::originalParam(glslang::TStorageQualifier qualifier, if (glslangIntermediate->getSource() == glslang::EShSourceHlsl) return paramType.getBasicType() == glslang::EbtBlock; return paramType.containsOpaque() || // sampler, etc. +#ifndef GLSLANG_WEB + paramType.getQualifier().isSpirvByReference() || // spirv_by_reference +#endif (paramType.getBasicType() == glslang::EbtBlock && qualifier == glslang::EvqBuffer); // SSBO } // Make all the functions, skeletally, without actually visiting their bodies. void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslFunctions) { - const auto getParamDecorations = [&](std::vector& decorations, const glslang::TType& type, bool useVulkanMemoryModel) { + const auto getParamDecorations = [&](std::vector& decorations, const glslang::TType& type, + bool useVulkanMemoryModel) { spv::Decoration paramPrecision = TranslatePrecisionDecoration(type); if (paramPrecision != spv::NoPrecision) decorations.push_back(paramPrecision); @@ -4286,7 +5062,8 @@ void TGlslangToSpvTraverser::makeGlobalInitializers(const glslang::TIntermSequen builder.setBuildPoint(shaderEntry->getLastBlock()); for (int i = 0; i < (int)initializers.size(); ++i) { glslang::TIntermAggregate* initializer = initializers[i]->getAsAggregate(); - if (initializer && initializer->getOp() != glslang::EOpFunction && initializer->getOp() != glslang::EOpLinkerObjects) { + if (initializer && initializer->getOp() != glslang::EOpFunction && initializer->getOp() != + glslang::EOpLinkerObjects) { // We're on a top-level node that's not a function. Treat as an initializer, whose // code goes into the beginning of the entry point. @@ -4294,7 +5071,39 @@ void TGlslangToSpvTraverser::makeGlobalInitializers(const glslang::TIntermSequen } } } +// Walk over all linker objects to create a map for payload and callable data linker objects +// and their location to be used during codegen for OpTraceKHR and OpExecuteCallableKHR +// This is done here since it is possible that these linker objects are not be referenced in the AST +void TGlslangToSpvTraverser::collectRayTracingLinkerObjects() +{ + glslang::TIntermAggregate* linkerObjects = glslangIntermediate->findLinkerObjects(); + for (auto& objSeq : linkerObjects->getSequence()) { + auto objNode = objSeq->getAsSymbolNode(); + if (objNode != nullptr) { + if (objNode->getQualifier().hasLocation()) { + unsigned int location = objNode->getQualifier().layoutLocation; + auto st = objNode->getQualifier().storage; + int set; + switch (st) + { + case glslang::EvqPayload: + case glslang::EvqPayloadIn: + set = 0; + break; + case glslang::EvqCallableData: + case glslang::EvqCallableDataIn: + set = 1; + break; + default: + set = -1; + } + if (set != -1) + locationToSymbol[set].insert(std::make_pair(location, objNode)); + } + } + } +} // Process all the functions, while skipping initializers. void TGlslangToSpvTraverser::visitFunctions(const glslang::TIntermSequence& glslFunctions) { @@ -4314,7 +5123,8 @@ void TGlslangToSpvTraverser::handleFunctionEntry(const glslang::TIntermAggregate builder.setBuildPoint(functionBlock); } -void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& node, std::vector& arguments, spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags) +void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& node, std::vector& arguments, + spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags) { const glslang::TIntermSequence& glslangArguments = node.getSequence(); @@ -4327,7 +5137,8 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& sampler = glslangArguments[0]->getAsTyped()->getType().getSampler(); cubeCompare = sampler.dim == glslang::EsdCube && sampler.arrayed && sampler.shadow; #ifndef GLSLANG_WEB - f16ShadowCompare = sampler.shadow && glslangArguments[1]->getAsTyped()->getType().getBasicType() == glslang::EbtFloat16; + f16ShadowCompare = sampler.shadow && + glslangArguments[1]->getAsTyped()->getType().getBasicType() == glslang::EbtFloat16; #endif } @@ -4436,8 +5247,10 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& } if (lvalue) { - arguments.push_back(builder.accessChainGetLValue()); + spv::Id lvalue_id = builder.accessChainGetLValue(); + arguments.push_back(lvalue_id); lvalueCoherentFlags = builder.getAccessChain().coherentFlags; + builder.addDecoration(lvalue_id, TranslateNonUniformDecoration(lvalueCoherentFlags)); lvalueCoherentFlags |= TranslateCoherent(glslangArguments[i]->getAsTyped()->getType()); } else #endif @@ -4490,7 +5303,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO translateArguments(*node->getAsAggregate(), arguments, lvalueCoherentFlags); else translateArguments(*node->getAsUnaryNode(), arguments); - spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision()); + spv::Decoration precision = TranslatePrecisionDecoration(node->getType()); spv::Builder::TextureParameters params = { }; params.sampler = arguments[0]; @@ -4500,12 +5313,15 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO const bool isUnsignedResult = node->getType().getBasicType() == glslang::EbtUint; + if (builder.isSampledImage(params.sampler) && + ((cracked.query && node->getOp() != glslang::EOpTextureQueryLod) || cracked.fragMask || cracked.fetch)) { + params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler); + if (imageType.getQualifier().isNonUniform()) { + builder.addDecoration(params.sampler, spv::DecorationNonUniformEXT); + } + } // Check for queries if (cracked.query) { - // OpImageQueryLod works on a sampled image, for other queries the image has to be extracted first - if (node->getOp() != glslang::EOpTextureQueryLod && builder.isSampledImage(params.sampler)) - params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler); - switch (node->getOp()) { case glslang::EOpImageQuerySize: case glslang::EOpTextureQuerySize: @@ -4534,7 +5350,10 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO int components = node->getType().getVectorSize(); - if (node->getOp() == glslang::EOpTextureFetch) { + if (node->getOp() == glslang::EOpImageLoad || + node->getOp() == glslang::EOpImageLoadLod || + node->getOp() == glslang::EOpTextureFetch || + node->getOp() == glslang::EOpTextureFetchOffset) { // These must produce 4 components, per SPIR-V spec. We'll add a conversion constructor if needed. // This will only happen through the HLSL path for operator[], so we do not have to handle e.g. // the EOpTexture/Proj/Lod/etc family. It would be harmless to do so, but would need more logic @@ -4703,7 +5522,8 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO operands.push_back(imageOperand); } if (mask & spv::ImageOperandsMakeTexelVisibleKHRMask) { - spv::IdImmediate imageOperand = { true, builder.makeUintConstant(TranslateMemoryScope(TranslateCoherent(imageType))) }; + spv::IdImmediate imageOperand = { true, builder.makeUintConstant(TranslateMemoryScope( + TranslateCoherent(imageType))) }; operands.push_back(imageOperand); } @@ -4731,18 +5551,22 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO // imageAtomicStore has a void return type so base the pointer type on // the type of the value operand. if (node->getOp() == glslang::EOpImageAtomicStore) { - resultTypeId = builder.makePointer(spv::StorageClassImage, builder.getTypeId(operands[2].word)); + resultTypeId = builder.makePointer(spv::StorageClassImage, builder.getTypeId(*opIt)); } else { resultTypeId = builder.makePointer(spv::StorageClassImage, resultType()); } spv::Id pointer = builder.createOp(spv::OpImageTexelPointer, resultTypeId, operands); + if (imageType.getQualifier().nonUniform) { + builder.addDecoration(pointer, spv::DecorationNonUniformEXT); + } std::vector operands; operands.push_back(pointer); for (; opIt != arguments.end(); ++opIt) operands.push_back(*opIt); - return createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(), lvalueCoherentFlags); + return createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(), + lvalueCoherentFlags); } } @@ -4754,10 +5578,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO auto opIt = arguments.begin(); std::vector operands; - // Extract the image if necessary - if (builder.isSampledImage(params.sampler)) - params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler); - operands.push_back(params.sampler); ++opIt; @@ -4767,7 +5587,8 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO std::vector comps; comps.push_back(zero); comps.push_back(zero); - operands.push_back(builder.makeCompositeConstant(builder.makeVectorType(builder.makeIntType(32), 2), comps)); + operands.push_back(builder.makeCompositeConstant( + builder.makeVectorType(builder.makeIntType(32), 2), comps)); } for (; opIt != arguments.end(); ++opIt) @@ -4817,13 +5638,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO bias = true; } - // See if the sampler param should really be just the SPV image part - if (cracked.fetch) { - // a fetch needs to have the image extracted first - if (builder.isSampledImage(params.sampler)) - params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler); - } - #ifndef GLSLANG_WEB if (cracked.gather) { const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions(); @@ -4856,7 +5670,8 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO else dRefComp = builder.getNumComponents(params.coords) - 1; indexes.push_back(dRefComp); - params.Dref = builder.createCompositeExtract(params.coords, builder.getScalarTypeId(builder.getTypeId(params.coords)), indexes); + params.Dref = builder.createCompositeExtract(params.coords, + builder.getScalarTypeId(builder.getTypeId(params.coords)), indexes); } // lod @@ -4981,7 +5796,8 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO flags.clear(); builder.accessChainPush(builder.makeIntConstant(i), flags, 0); - builder.accessChainStore(builder.createCompositeExtract(res, builder.getContainedTypeId(resType, i+1), i+1)); + builder.accessChainStore(builder.createCompositeExtract(res, builder.getContainedTypeId(resType, i+1), + i+1), TranslateNonUniformDecoration(imageType.getQualifier())); } return builder.createCompositeExtract(res, resultType(), 0); } @@ -5004,10 +5820,9 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO // copy the projective coordinate if we have to if (projTargetComp != projSourceComp) { spv::Id projComp = builder.createCompositeExtract(params.coords, - builder.getScalarTypeId(builder.getTypeId(params.coords)), - projSourceComp); + builder.getScalarTypeId(builder.getTypeId(params.coords)), projSourceComp); params.coords = builder.createCompositeInsert(projComp, params.coords, - builder.getTypeId(params.coords), projTargetComp); + builder.getTypeId(params.coords), projTargetComp); } } @@ -5087,7 +5902,8 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg ++lValueCount; } else if (writableParam(qualifiers[a])) { // need space to hold the copy - arg = builder.createVariable(spv::StorageClassFunction, builder.getContainedTypeId(function->getParamType(a)), "param"); + arg = builder.createVariable(function->getParamPrecision(a), spv::StorageClassFunction, + builder.getContainedTypeId(function->getParamType(a)), "param"); if (qualifiers[a] == glslang::EvqIn || qualifiers[a] == glslang::EvqInOut) { // need to copy the input into output space builder.setAccessChain(lValues[lValueCount]); @@ -5099,12 +5915,14 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg ++lValueCount; } else { // process r-value, which involves a copy for a type mismatch - if (function->getParamType(a) != convertGlslangToSpvType(*argTypes[a])) { - spv::Id argCopy = builder.createVariable(spv::StorageClassFunction, function->getParamType(a), "arg"); + if (function->getParamType(a) != builder.getTypeId(rValues[rValueCount]) || + TranslatePrecisionDecoration(*argTypes[a]) != function->getParamPrecision(a)) + { + spv::Id argCopy = builder.createVariable(function->getParamPrecision(a), spv::StorageClassFunction, function->getParamType(a), "arg"); builder.clearAccessChain(); builder.setAccessChainLValue(argCopy); multiTypeStore(*argTypes[a], rValues[rValueCount]); - arg = builder.createLoad(argCopy); + arg = builder.createLoad(argCopy, function->getParamPrecision(a)); } else arg = rValues[rValueCount]; ++rValueCount; @@ -5115,6 +5933,7 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg // 3. Make the call. spv::Id result = builder.createFunctionCall(function, spvArgs); builder.setPrecision(result, TranslatePrecisionDecoration(node->getType())); + builder.addDecoration(result, TranslateNonUniformDecoration(node->getType().getQualifier())); // 4. Copy back out an "out" arguments. lValueCount = 0; @@ -5123,7 +5942,8 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg ++lValueCount; else if (writableParam(qualifiers[a])) { if (qualifiers[a] == glslang::EvqOut || qualifiers[a] == glslang::EvqInOut) { - spv::Id copy = builder.createLoad(spvArgs[a]); + spv::Id copy = builder.createLoad(spvArgs[a], spv::NoPrecision); + builder.addDecoration(copy, TranslateNonUniformDecoration(argTypes[a]->getQualifier())); builder.setAccessChain(lValues[lValueCount]); multiTypeStore(*argTypes[a], copy); } @@ -5368,7 +6188,7 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, OpD case glslang::EOpNotEqual: case glslang::EOpVectorNotEqual: if (isFloat) - binOp = spv::OpFOrdNotEqual; + binOp = spv::OpFUnordNotEqual; else if (isBool) binOp = spv::OpLogicalNotEqual; else @@ -5502,7 +6322,7 @@ spv::Id TGlslangToSpvTraverser::createBinaryMatrixOperation(spv::Op op, OpDecora } spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDecorations& decorations, spv::Id typeId, - spv::Id operand, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags) + spv::Id operand, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags) { spv::Op unaryOp = spv::OpNop; int extBuiltins = -1; @@ -5763,6 +6583,24 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe case glslang::EOpFwidthCoarse: unaryOp = spv::OpFwidthCoarse; break; + case glslang::EOpRayQueryProceed: + unaryOp = spv::OpRayQueryProceedKHR; + break; + case glslang::EOpRayQueryGetRayTMin: + unaryOp = spv::OpRayQueryGetRayTMinKHR; + break; + case glslang::EOpRayQueryGetRayFlags: + unaryOp = spv::OpRayQueryGetRayFlagsKHR; + break; + case glslang::EOpRayQueryGetWorldRayOrigin: + unaryOp = spv::OpRayQueryGetWorldRayOriginKHR; + break; + case glslang::EOpRayQueryGetWorldRayDirection: + unaryOp = spv::OpRayQueryGetWorldRayDirectionKHR; + break; + case glslang::EOpRayQueryGetIntersectionCandidateAABBOpaque: + unaryOp = spv::OpRayQueryGetIntersectionCandidateAABBOpaqueKHR; + break; case glslang::EOpInterpolateAtCentroid: if (typeProxy == glslang::EbtFloat16) builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float); @@ -5893,6 +6731,11 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe case glslang::EOpConstructReference: unaryOp = spv::OpBitcast; break; + + case glslang::EOpConvUint64ToAccStruct: + case glslang::EOpConvUvec2ToAccStruct: + unaryOp = spv::OpConvertUToAccelerationStructureKHR; + break; #endif case glslang::EOpCopyObject: @@ -6048,7 +6891,7 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora case glslang::EOpConvFloatToBool: zero = builder.makeFloatConstant(0.0F); zero = makeSmearedConstant(zero, vectorSize); - return builder.createBinOp(spv::OpFOrdNotEqual, destType, operand, zero); + return builder.createBinOp(spv::OpFUnordNotEqual, destType, operand, zero); case glslang::EOpConvBoolToFloat: convOp = spv::OpSelect; zero = builder.makeFloatConstant(0.0F); @@ -6197,11 +7040,11 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora case glslang::EOpConvDoubleToBool: zero = builder.makeDoubleConstant(0.0); zero = makeSmearedConstant(zero, vectorSize); - return builder.createBinOp(spv::OpFOrdNotEqual, destType, operand, zero); + return builder.createBinOp(spv::OpFUnordNotEqual, destType, operand, zero); case glslang::EOpConvFloat16ToBool: zero = builder.makeFloat16Constant(0.0F); zero = makeSmearedConstant(zero, vectorSize); - return builder.createBinOp(spv::OpFOrdNotEqual, destType, operand, zero); + return builder.createBinOp(spv::OpFUnordNotEqual, destType, operand, zero); case glslang::EOpConvBoolToDouble: convOp = spv::OpSelect; zero = builder.makeDoubleConstant(0.0); @@ -6355,9 +7198,6 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora break; case glslang::EOpConvPtrToUvec2: case glslang::EOpConvUvec2ToPtr: - if (builder.isVector(operand)) - builder.promoteIncorporatedExtension(spv::E_SPV_EXT_physical_storage_buffer, - spv::E_SPV_KHR_physical_storage_buffer, spv::Spv_1_5); convOp = spv::OpBitcast; break; #endif @@ -6395,7 +7235,9 @@ spv::Id TGlslangToSpvTraverser::makeSmearedConstant(spv::Id constant, int vector } // For glslang ops that map to SPV atomic opCodes -spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv::Decoration /*precision*/, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags) +spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv::Decoration /*precision*/, + spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy, + const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags) { spv::Op opCode = spv::OpNop; @@ -6404,19 +7246,58 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv case glslang::EOpImageAtomicAdd: case glslang::EOpAtomicCounterAdd: opCode = spv::OpAtomicIAdd; + if (typeProxy == glslang::EbtFloat16 || typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble) { + opCode = spv::OpAtomicFAddEXT; + builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_add); + if (typeProxy == glslang::EbtFloat16) { + builder.addExtension(spv::E_SPV_EXT_shader_atomic_float16_add); + builder.addCapability(spv::CapabilityAtomicFloat16AddEXT); + } else if (typeProxy == glslang::EbtFloat) { + builder.addCapability(spv::CapabilityAtomicFloat32AddEXT); + } else { + builder.addCapability(spv::CapabilityAtomicFloat64AddEXT); + } + } break; + case glslang::EOpAtomicSubtract: case glslang::EOpAtomicCounterSubtract: opCode = spv::OpAtomicISub; break; case glslang::EOpAtomicMin: case glslang::EOpImageAtomicMin: case glslang::EOpAtomicCounterMin: - opCode = (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) ? spv::OpAtomicUMin : spv::OpAtomicSMin; + if (typeProxy == glslang::EbtFloat16 || typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble) { + opCode = spv::OpAtomicFMinEXT; + builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_min_max); + if (typeProxy == glslang::EbtFloat16) + builder.addCapability(spv::CapabilityAtomicFloat16MinMaxEXT); + else if (typeProxy == glslang::EbtFloat) + builder.addCapability(spv::CapabilityAtomicFloat32MinMaxEXT); + else + builder.addCapability(spv::CapabilityAtomicFloat64MinMaxEXT); + } else if (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) { + opCode = spv::OpAtomicUMin; + } else { + opCode = spv::OpAtomicSMin; + } break; case glslang::EOpAtomicMax: case glslang::EOpImageAtomicMax: case glslang::EOpAtomicCounterMax: - opCode = (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) ? spv::OpAtomicUMax : spv::OpAtomicSMax; + if (typeProxy == glslang::EbtFloat16 || typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble) { + opCode = spv::OpAtomicFMaxEXT; + builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_min_max); + if (typeProxy == glslang::EbtFloat16) + builder.addCapability(spv::CapabilityAtomicFloat16MinMaxEXT); + else if (typeProxy == glslang::EbtFloat) + builder.addCapability(spv::CapabilityAtomicFloat32MinMaxEXT); + else + builder.addCapability(spv::CapabilityAtomicFloat64MinMaxEXT); + } else if (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) { + opCode = spv::OpAtomicUMax; + } else { + opCode = spv::OpAtomicSMax; + } break; case glslang::EOpAtomicAnd: case glslang::EOpImageAtomicAnd: @@ -6481,7 +7362,8 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv scopeId = builder.makeUintConstant(spv::ScopeDevice); } // semantics default to relaxed - spv::Id semanticsId = builder.makeUintConstant(lvalueCoherentFlags.isVolatile() && glslangIntermediate->usingVulkanMemoryModel() ? + spv::Id semanticsId = builder.makeUintConstant(lvalueCoherentFlags.isVolatile() && + glslangIntermediate->usingVulkanMemoryModel() ? spv::MemorySemanticsVolatileMask : spv::MemorySemanticsMaskNone); spv::Id semanticsId2 = semanticsId; @@ -6494,20 +7376,24 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv valueId = operands[2]; if (operands.size() > 3) { scopeId = operands[3]; - semanticsId = builder.makeUintConstant(builder.getConstantScalar(operands[4]) | builder.getConstantScalar(operands[5])); - semanticsId2 = builder.makeUintConstant(builder.getConstantScalar(operands[6]) | builder.getConstantScalar(operands[7])); + semanticsId = builder.makeUintConstant( + builder.getConstantScalar(operands[4]) | builder.getConstantScalar(operands[5])); + semanticsId2 = builder.makeUintConstant( + builder.getConstantScalar(operands[6]) | builder.getConstantScalar(operands[7])); } } else if (opCode == spv::OpAtomicLoad) { if (operands.size() > 1) { scopeId = operands[1]; - semanticsId = builder.makeUintConstant(builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3])); + semanticsId = builder.makeUintConstant( + builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3])); } } else { // atomic store or RMW valueId = operands[1]; if (operands.size() > 2) { scopeId = operands[2]; - semanticsId = builder.makeUintConstant(builder.getConstantScalar(operands[3]) | builder.getConstantScalar(operands[4])); + semanticsId = builder.makeUintConstant + (builder.getConstantScalar(operands[3]) | builder.getConstantScalar(operands[4])); } } @@ -6520,6 +7406,10 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); } + if (builder.getConstantScalar(scopeId) == spv::ScopeQueueFamily) { + builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); + } + if (glslangIntermediate->usingVulkanMemoryModel() && builder.getConstantScalar(scopeId) == spv::ScopeDevice) { builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR); } @@ -6552,7 +7442,8 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv } // Create group invocation operations. -spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) +spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId, + std::vector& operands, glslang::TBasicType typeProxy) { bool isUnsigned = isTypeUnsignedInt(typeProxy); bool isFloat = isTypeFloat(typeProxy); @@ -6641,6 +7532,8 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op break; case glslang::EOpReadFirstInvocation: opCode = spv::OpSubgroupFirstInvocationKHR; + if (builder.isVectorType(typeId)) + return CreateInvocationsVectorOperation(opCode, groupOperation, typeId, operands); break; case glslang::EOpBallot: { @@ -6765,9 +7658,11 @@ spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv assert(op == spv::OpGroupFMin || op == spv::OpGroupUMin || op == spv::OpGroupSMin || op == spv::OpGroupFMax || op == spv::OpGroupUMax || op == spv::OpGroupSMax || op == spv::OpGroupFAdd || op == spv::OpGroupIAdd || op == spv::OpGroupBroadcast || - op == spv::OpSubgroupReadInvocationKHR || - op == spv::OpGroupFMinNonUniformAMD || op == spv::OpGroupUMinNonUniformAMD || op == spv::OpGroupSMinNonUniformAMD || - op == spv::OpGroupFMaxNonUniformAMD || op == spv::OpGroupUMaxNonUniformAMD || op == spv::OpGroupSMaxNonUniformAMD || + op == spv::OpSubgroupReadInvocationKHR || op == spv::OpSubgroupFirstInvocationKHR || + op == spv::OpGroupFMinNonUniformAMD || op == spv::OpGroupUMinNonUniformAMD || + op == spv::OpGroupSMinNonUniformAMD || + op == spv::OpGroupFMaxNonUniformAMD || op == spv::OpGroupUMaxNonUniformAMD || + op == spv::OpGroupSMaxNonUniformAMD || op == spv::OpGroupFAddNonUniformAMD || op == spv::OpGroupIAddNonUniformAMD); // Handle group invocation operations scalar by scalar. @@ -6792,6 +7687,8 @@ spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv spvGroupOperands.push_back(scalar); spv::IdImmediate operand = { true, operands[1] }; spvGroupOperands.push_back(operand); + } else if (op == spv::OpSubgroupFirstInvocationKHR) { + spvGroupOperands.push_back(scalar); } else if (op == spv::OpGroupBroadcast) { spv::IdImmediate scope = { true, builder.makeUintConstant(spv::ScopeSubgroup) }; spvGroupOperands.push_back(scope); @@ -7156,7 +8053,8 @@ spv::Id TGlslangToSpvTraverser::createSubgroupOperation(glslang::TOperator op, s return builder.createOp(opCode, typeId, spvGroupOperands); } -spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) +spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision, + spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) { bool isUnsigned = isTypeUnsignedInt(typeProxy); bool isFloat = isTypeFloat(typeProxy); @@ -7258,14 +8156,16 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: unsigned int executionScope = builder.getConstantScalar(operands[0]); unsigned int memoryScope = builder.getConstantScalar(operands[1]); unsigned int semantics = builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3]); - builder.createControlBarrier((spv::Scope)executionScope, (spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics); + builder.createControlBarrier((spv::Scope)executionScope, (spv::Scope)memoryScope, + (spv::MemorySemanticsMask)semantics); if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask | spv::MemorySemanticsMakeVisibleKHRMask | spv::MemorySemanticsOutputMemoryKHRMask | spv::MemorySemanticsVolatileMask)) { builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); } - if (glslangIntermediate->usingVulkanMemoryModel() && (executionScope == spv::ScopeDevice || memoryScope == spv::ScopeDevice)) { + if (glslangIntermediate->usingVulkanMemoryModel() && (executionScope == spv::ScopeDevice || + memoryScope == spv::ScopeDevice)) { builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR); } return 0; @@ -7348,7 +8248,8 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: if (builder.getNumComponents(operands[0]) == 1) frexpIntType = builder.makeIntegerType(width, true); else - frexpIntType = builder.makeVectorType(builder.makeIntegerType(width, true), builder.getNumComponents(operands[0])); + frexpIntType = builder.makeVectorType(builder.makeIntegerType(width, true), + builder.getNumComponents(operands[0])); typeId = builder.makeStructResultType(typeId0, frexpIntType); consumedOperands = 1; } @@ -7451,24 +8352,116 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: libCall = spv::InterpolateAtVertexAMD; break; - case glslang::EOpReportIntersectionNV: - { + case glslang::EOpReportIntersection: typeId = builder.makeBoolType(); - opCode = spv::OpReportIntersectionNV; - } - break; + opCode = spv::OpReportIntersectionKHR; + break; case glslang::EOpTraceNV: - { builder.createNoResultOp(spv::OpTraceNV, operands); return 0; - } - break; + case glslang::EOpTraceRayMotionNV: + builder.addExtension(spv::E_SPV_NV_ray_tracing_motion_blur); + builder.addCapability(spv::CapabilityRayTracingMotionBlurNV); + builder.createNoResultOp(spv::OpTraceRayMotionNV, operands); + return 0; + case glslang::EOpTraceKHR: + builder.createNoResultOp(spv::OpTraceRayKHR, operands); + return 0; case glslang::EOpExecuteCallableNV: - { builder.createNoResultOp(spv::OpExecuteCallableNV, operands); return 0; - } - break; + case glslang::EOpExecuteCallableKHR: + builder.createNoResultOp(spv::OpExecuteCallableKHR, operands); + return 0; + + case glslang::EOpRayQueryInitialize: + builder.createNoResultOp(spv::OpRayQueryInitializeKHR, operands); + return 0; + case glslang::EOpRayQueryTerminate: + builder.createNoResultOp(spv::OpRayQueryTerminateKHR, operands); + return 0; + case glslang::EOpRayQueryGenerateIntersection: + builder.createNoResultOp(spv::OpRayQueryGenerateIntersectionKHR, operands); + return 0; + case glslang::EOpRayQueryConfirmIntersection: + builder.createNoResultOp(spv::OpRayQueryConfirmIntersectionKHR, operands); + return 0; + case glslang::EOpRayQueryProceed: + typeId = builder.makeBoolType(); + opCode = spv::OpRayQueryProceedKHR; + break; + case glslang::EOpRayQueryGetIntersectionType: + typeId = builder.makeUintType(32); + opCode = spv::OpRayQueryGetIntersectionTypeKHR; + break; + case glslang::EOpRayQueryGetRayTMin: + typeId = builder.makeFloatType(32); + opCode = spv::OpRayQueryGetRayTMinKHR; + break; + case glslang::EOpRayQueryGetRayFlags: + typeId = builder.makeIntType(32); + opCode = spv::OpRayQueryGetRayFlagsKHR; + break; + case glslang::EOpRayQueryGetIntersectionT: + typeId = builder.makeFloatType(32); + opCode = spv::OpRayQueryGetIntersectionTKHR; + break; + case glslang::EOpRayQueryGetIntersectionInstanceCustomIndex: + typeId = builder.makeIntType(32); + opCode = spv::OpRayQueryGetIntersectionInstanceCustomIndexKHR; + break; + case glslang::EOpRayQueryGetIntersectionInstanceId: + typeId = builder.makeIntType(32); + opCode = spv::OpRayQueryGetIntersectionInstanceIdKHR; + break; + case glslang::EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset: + typeId = builder.makeUintType(32); + opCode = spv::OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR; + break; + case glslang::EOpRayQueryGetIntersectionGeometryIndex: + typeId = builder.makeIntType(32); + opCode = spv::OpRayQueryGetIntersectionGeometryIndexKHR; + break; + case glslang::EOpRayQueryGetIntersectionPrimitiveIndex: + typeId = builder.makeIntType(32); + opCode = spv::OpRayQueryGetIntersectionPrimitiveIndexKHR; + break; + case glslang::EOpRayQueryGetIntersectionBarycentrics: + typeId = builder.makeVectorType(builder.makeFloatType(32), 2); + opCode = spv::OpRayQueryGetIntersectionBarycentricsKHR; + break; + case glslang::EOpRayQueryGetIntersectionFrontFace: + typeId = builder.makeBoolType(); + opCode = spv::OpRayQueryGetIntersectionFrontFaceKHR; + break; + case glslang::EOpRayQueryGetIntersectionCandidateAABBOpaque: + typeId = builder.makeBoolType(); + opCode = spv::OpRayQueryGetIntersectionCandidateAABBOpaqueKHR; + break; + case glslang::EOpRayQueryGetIntersectionObjectRayDirection: + typeId = builder.makeVectorType(builder.makeFloatType(32), 3); + opCode = spv::OpRayQueryGetIntersectionObjectRayDirectionKHR; + break; + case glslang::EOpRayQueryGetIntersectionObjectRayOrigin: + typeId = builder.makeVectorType(builder.makeFloatType(32), 3); + opCode = spv::OpRayQueryGetIntersectionObjectRayOriginKHR; + break; + case glslang::EOpRayQueryGetWorldRayDirection: + typeId = builder.makeVectorType(builder.makeFloatType(32), 3); + opCode = spv::OpRayQueryGetWorldRayDirectionKHR; + break; + case glslang::EOpRayQueryGetWorldRayOrigin: + typeId = builder.makeVectorType(builder.makeFloatType(32), 3); + opCode = spv::OpRayQueryGetWorldRayOriginKHR; + break; + case glslang::EOpRayQueryGetIntersectionObjectToWorld: + typeId = builder.makeMatrixType(builder.makeFloatType(32), 4, 3); + opCode = spv::OpRayQueryGetIntersectionObjectToWorldKHR; + break; + case glslang::EOpRayQueryGetIntersectionWorldToObject: + typeId = builder.makeMatrixType(builder.makeFloatType(32), 4, 3); + opCode = spv::OpRayQueryGetIntersectionWorldToObjectKHR; + break; case glslang::EOpWritePackedPrimitiveIndices4x8NV: builder.createNoResultOp(spv::OpWritePackedPrimitiveIndices4x8NV, operands); return 0; @@ -7558,7 +8551,8 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId) { // GLSL memory barriers use queuefamily scope in new model, device scope in old model - spv::Scope memoryBarrierScope = glslangIntermediate->usingVulkanMemoryModel() ? spv::ScopeQueueFamilyKHR : spv::ScopeDevice; + spv::Scope memoryBarrierScope = glslangIntermediate->usingVulkanMemoryModel() ? + spv::ScopeQueueFamilyKHR : spv::ScopeDevice; switch (op) { case glslang::EOpBarrier: @@ -7670,7 +8664,18 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: case glslang::EOpTerminateRayNV: builder.createNoResultOp(spv::OpTerminateRayNV); return 0; - + case glslang::EOpRayQueryInitialize: + builder.createNoResultOp(spv::OpRayQueryInitializeKHR); + return 0; + case glslang::EOpRayQueryTerminate: + builder.createNoResultOp(spv::OpRayQueryTerminateKHR); + return 0; + case glslang::EOpRayQueryGenerateIntersection: + builder.createNoResultOp(spv::OpRayQueryGenerateIntersectionKHR); + return 0; + case glslang::EOpRayQueryConfirmIntersection: + builder.createNoResultOp(spv::OpRayQueryConfirmIntersectionKHR); + return 0; case glslang::EOpBeginInvocationInterlock: builder.createNoResultOp(spv::OpBeginInvocationInterlockEXT); return 0; @@ -7722,7 +8727,7 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol // it was not found, create it spv::BuiltIn builtIn = TranslateBuiltInDecoration(symbol->getQualifier().builtIn, false); - auto forcedType = getForcedType(builtIn, symbol->getType()); + auto forcedType = getForcedType(symbol->getQualifier().builtIn, symbol->getType()); id = createSpvVariable(symbol, forcedType.first); symbolValues[symbol->getId()] = id; if (forcedType.second != spv::NoType) @@ -7746,8 +8751,18 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol builder.addDecoration(id, spv::DecorationOffset, symbol->getQualifier().layoutOffset); } - if (symbol->getQualifier().hasLocation()) - builder.addDecoration(id, spv::DecorationLocation, symbol->getQualifier().layoutLocation); + if (symbol->getQualifier().hasLocation()) { + if (!(glslangIntermediate->isRayTracingStage() && glslangIntermediate->IsRequestedExtension(glslang::E_GL_EXT_ray_tracing) + && (builder.getStorageClass(id) == spv::StorageClassRayPayloadKHR || + builder.getStorageClass(id) == spv::StorageClassIncomingRayPayloadKHR || + builder.getStorageClass(id) == spv::StorageClassCallableDataKHR || + builder.getStorageClass(id) == spv::StorageClassIncomingCallableDataKHR))) { + // Location values are used to link TraceRayKHR and ExecuteCallableKHR to corresponding variables + // but are not valid in SPIRV since they are supported only for Input/Output Storage classes. + builder.addDecoration(id, spv::DecorationLocation, symbol->getQualifier().layoutLocation); + } + } + builder.addDecoration(id, TranslateInvariantDecoration(symbol->getType().getQualifier())); if (symbol->getQualifier().hasStream() && glslangIntermediate->isMultiStream()) { builder.addCapability(spv::CapabilityGeometryStreams); @@ -7781,20 +8796,28 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol // add built-in variable decoration if (builtIn != spv::BuiltInMax) { - builder.addDecoration(id, spv::DecorationBuiltIn, (int)builtIn); + // WorkgroupSize deprecated in spirv1.6 + if (glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_6 || + builtIn != spv::BuiltInWorkgroupSize) + builder.addDecoration(id, spv::DecorationBuiltIn, (int)builtIn); + } + + // Add volatile decoration to HelperInvocation for spirv1.6 and beyond + if (builtIn == spv::BuiltInHelperInvocation && + glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { + builder.addDecoration(id, spv::DecorationVolatile); } #ifndef GLSLANG_WEB - if (symbol->getType().isImage()) { + // Subgroup builtins which have input storage class are volatile for ray tracing stages. + if (symbol->getType().isImage() || symbol->getQualifier().isPipeInput()) { std::vector memory; - TranslateMemoryDecoration(symbol->getType().getQualifier(), memory, glslangIntermediate->usingVulkanMemoryModel()); + TranslateMemoryDecoration(symbol->getType().getQualifier(), memory, + glslangIntermediate->usingVulkanMemoryModel()); for (unsigned int i = 0; i < memory.size(); ++i) builder.addDecoration(id, memory[i]); } - // nonuniform - builder.addDecoration(id, TranslateNonUniformDecoration(symbol->getType().getQualifier())); - if (builtIn == spv::BuiltInSampleMask) { spv::Decoration decoration; // GL_NV_sample_mask_override_coverage extension @@ -7841,7 +8864,50 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol } if (symbol->isReference()) { - builder.addDecoration(id, symbol->getType().getQualifier().restrict ? spv::DecorationRestrictPointerEXT : spv::DecorationAliasedPointerEXT); + builder.addDecoration(id, symbol->getType().getQualifier().restrict ? + spv::DecorationRestrictPointerEXT : spv::DecorationAliasedPointerEXT); + } + + // + // Add SPIR-V decorations for structure (GL_EXT_spirv_intrinsics) + // + if (symbol->getType().getQualifier().hasSprivDecorate()) { + const glslang::TSpirvDecorate& spirvDecorate = symbol->getType().getQualifier().getSpirvDecorate(); + + // Add spirv_decorate + for (auto& decorate : spirvDecorate.decorates) { + if (!decorate.second.empty()) { + std::vector literals; + TranslateLiterals(decorate.second, literals); + builder.addDecoration(id, static_cast(decorate.first), literals); + } + else + builder.addDecoration(id, static_cast(decorate.first)); + } + + // Add spirv_decorate_id + for (auto& decorateId : spirvDecorate.decorateIds) { + std::vector operandIds; + assert(!decorateId.second.empty()); + for (auto extraOperand : decorateId.second) { + if (extraOperand->getQualifier().isSpecConstant()) + operandIds.push_back(getSymbolId(extraOperand->getAsSymbolNode())); + else + operandIds.push_back(createSpvConstant(*extraOperand)); + } + builder.addDecorationId(id, static_cast(decorateId.first), operandIds); + } + + // Add spirv_decorate_string + for (auto& decorateString : spirvDecorate.decorateStrings) { + std::vector strings; + assert(!decorateString.second.empty()); + for (auto extraOperand : decorateString.second) { + const char* string = extraOperand->getConstArray()[0].getSConst()->c_str(); + strings.push_back(string); + } + builder.addDecoration(id, static_cast(decorateString.first), strings); + } } #endif @@ -7903,12 +8969,25 @@ spv::Id TGlslangToSpvTraverser::createSpvConstant(const glslang::TIntermTyped& n // hand off to the non-spec-constant path assert(node.getAsConstantUnion() != nullptr || node.getAsSymbolNode() != nullptr); int nextConst = 0; - return createSpvConstantFromConstUnionArray(node.getType(), node.getAsConstantUnion() ? node.getAsConstantUnion()->getConstArray() : node.getAsSymbolNode()->getConstArray(), - nextConst, false); + return createSpvConstantFromConstUnionArray(node.getType(), node.getAsConstantUnion() ? + node.getAsConstantUnion()->getConstArray() : node.getAsSymbolNode()->getConstArray(), + nextConst, false); } // We now know we have a specialization constant to build + // Extra capabilities may be needed. + if (node.getType().contains8BitInt()) + builder.addCapability(spv::CapabilityInt8); + if (node.getType().contains16BitFloat()) + builder.addCapability(spv::CapabilityFloat16); + if (node.getType().contains16BitInt()) + builder.addCapability(spv::CapabilityInt16); + if (node.getType().contains64BitInt()) + builder.addCapability(spv::CapabilityInt64); + if (node.getType().containsDouble()) + builder.addCapability(spv::CapabilityFloat64); + // gl_WorkGroupSize is a special case until the front-end handles hierarchical specialization constants, // even then, it's specialization ids are handled by special case syntax in GLSL: layout(local_size_x = ... if (node.getType().getQualifier().builtIn == glslang::EbvWorkGroupSize) { @@ -7957,7 +9036,8 @@ spv::Id TGlslangToSpvTraverser::createSpvConstant(const glslang::TIntermTyped& n // If there are not enough elements present in 'consts', 0 will be substituted; // an empty 'consts' can be used to create a fully zeroed SPIR-V constant. // -spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glslang::TType& glslangType, const glslang::TConstUnionArray& consts, int& nextConst, bool specConstant) +spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glslang::TType& glslangType, + const glslang::TConstUnionArray& consts, int& nextConst, bool specConstant) { // vector of constants for SPIR-V std::vector spvConsts; @@ -7998,15 +9078,19 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla break; #ifndef GLSLANG_WEB case glslang::EbtInt8: + builder.addCapability(spv::CapabilityInt8); spvConsts.push_back(builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const())); break; case glslang::EbtUint8: + builder.addCapability(spv::CapabilityInt8); spvConsts.push_back(builder.makeUint8Constant(zero ? 0 : consts[nextConst].getU8Const())); break; case glslang::EbtInt16: + builder.addCapability(spv::CapabilityInt16); spvConsts.push_back(builder.makeInt16Constant(zero ? 0 : consts[nextConst].getI16Const())); break; case glslang::EbtUint16: + builder.addCapability(spv::CapabilityInt16); spvConsts.push_back(builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const())); break; case glslang::EbtInt64: @@ -8019,6 +9103,7 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla spvConsts.push_back(builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst())); break; case glslang::EbtFloat16: + builder.addCapability(spv::CapabilityFloat16); spvConsts.push_back(builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst())); break; #endif @@ -8047,15 +9132,19 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla break; #ifndef GLSLANG_WEB case glslang::EbtInt8: + builder.addCapability(spv::CapabilityInt8); scalar = builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const(), specConstant); break; case glslang::EbtUint8: + builder.addCapability(spv::CapabilityInt8); scalar = builder.makeUint8Constant(zero ? 0 : consts[nextConst].getU8Const(), specConstant); break; case glslang::EbtInt16: + builder.addCapability(spv::CapabilityInt16); scalar = builder.makeInt16Constant(zero ? 0 : consts[nextConst].getI16Const(), specConstant); break; case glslang::EbtUint16: + builder.addCapability(spv::CapabilityInt16); scalar = builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const(), specConstant); break; case glslang::EbtInt64: @@ -8068,6 +9157,7 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla scalar = builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst(), specConstant); break; case glslang::EbtFloat16: + builder.addCapability(spv::CapabilityFloat16); scalar = builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); break; case glslang::EbtReference: @@ -8075,6 +9165,9 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla scalar = builder.createUnaryOp(spv::OpBitcast, typeId, scalar); break; #endif + case glslang::EbtString: + scalar = builder.getStringId(consts[nextConst].getSConst()->c_str()); + break; default: assert(0); break; @@ -8175,7 +9268,8 @@ bool TGlslangToSpvTraverser::isTrivial(const glslang::TIntermTyped* node) // Emit short-circuiting code, where 'right' is never evaluated unless // the left side is true (for &&) or false (for ||). -spv::Id TGlslangToSpvTraverser::createShortCircuit(glslang::TOperator op, glslang::TIntermTyped& left, glslang::TIntermTyped& right) +spv::Id TGlslangToSpvTraverser::createShortCircuit(glslang::TOperator op, glslang::TIntermTyped& left, + glslang::TIntermTyped& right) { spv::Id boolTypeId = builder.makeBoolType(); @@ -8259,7 +9353,9 @@ int GetSpirvGeneratorVersion() // return 6; // revert version 5 change, which makes a different (new) kind of incorrect code, // versions 4 and 6 each generate OpArrayLength as it has long been done // return 7; // GLSL volatile keyword maps to both SPIR-V decorations Volatile and Coherent - return 8; // switch to new dead block eliminator; use OpUnreachable + // return 8; // switch to new dead block eliminator; use OpUnreachable + // return 9; // don't include opaque function parameters in OpEntryPoint global's operand list + return 10; // Generate OpFUnordNotEqual for != comparisons } // Write SPIR-V out to a binary file @@ -8279,14 +9375,15 @@ void OutputSpvBin(const std::vector& spirv, const char* baseName) // Write SPIR-V out to a text file with 32-bit hexadecimal words void OutputSpvHex(const std::vector& spirv, const char* baseName, const char* varName) { -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) std::ofstream out; out.open(baseName, std::ios::binary | std::ios::out); if (out.fail()) printf("ERROR: Failed to open file: %s\n", baseName); - out << "\t// " << - GetSpirvGeneratorVersion() << "." << GLSLANG_MINOR_VERSION << "." << GLSLANG_PATCH_LEVEL << - std::endl; + out << "\t// " << + GetSpirvGeneratorVersion() << + GLSLANG_VERSION_MAJOR << "." << GLSLANG_VERSION_MINOR << "." << GLSLANG_VERSION_PATCH << + GLSLANG_VERSION_FLAVOR << std::endl; if (varName != nullptr) { out << "\t #pragma once" << std::endl; out << "const uint32_t " << varName << "[] = {" << std::endl; @@ -8305,6 +9402,7 @@ void OutputSpvHex(const std::vector& spirv, const char* baseName, } if (varName != nullptr) { out << "};"; + out << std::endl; } out.close(); #endif @@ -8342,10 +9440,14 @@ void GlslangToSpv(const TIntermediate& intermediate, std::vector& // If from HLSL, run spirv-opt to "legalize" the SPIR-V for Vulkan // eg. forward and remove memory writes of opaque types. bool prelegalization = intermediate.getSource() == EShSourceHlsl; - if ((intermediate.getSource() == EShSourceHlsl || options->optimizeSize) && !options->disableOptimizer) { - SpirvToolsLegalize(intermediate, spirv, logger, options); + if ((prelegalization || options->optimizeSize) && !options->disableOptimizer) { + SpirvToolsTransform(intermediate, spirv, logger, options); prelegalization = false; } + else if (options->stripDebugInfo) { + // Strip debug info even if optimization is disabled. + SpirvToolsStripDebugInfo(intermediate, spirv, logger); + } if (options->validate) SpirvToolsValidate(intermediate, spirv, logger, prelegalization); diff --git a/Externals/glslang/SPIRV/Logger.cpp b/Externals/glslang/SPIRV/Logger.cpp index 7ea0c6342b78..cdc8469c4471 100644 --- a/Externals/glslang/SPIRV/Logger.cpp +++ b/Externals/glslang/SPIRV/Logger.cpp @@ -69,4 +69,4 @@ std::string SpvBuildLogger::getAllMessages() const { } // end spv namespace -#endif \ No newline at end of file +#endif diff --git a/Externals/glslang/SPIRV/NonSemanticDebugPrintf.h b/Externals/glslang/SPIRV/NonSemanticDebugPrintf.h new file mode 100644 index 000000000000..83796d75e56a --- /dev/null +++ b/Externals/glslang/SPIRV/NonSemanticDebugPrintf.h @@ -0,0 +1,50 @@ +// Copyright (c) 2020 The Khronos Group Inc. +// +// 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. +// +// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS +// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS +// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT +// https://www.khronos.org/registry/ +// +// 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. +// + +#ifndef SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_ +#define SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + NonSemanticDebugPrintfRevision = 1, + NonSemanticDebugPrintfRevision_BitWidthPadding = 0x7fffffff +}; + +enum NonSemanticDebugPrintfInstructions { + NonSemanticDebugPrintfDebugPrintf = 1, + NonSemanticDebugPrintfInstructionsMax = 0x7fffffff +}; + + +#ifdef __cplusplus +} +#endif + +#endif // SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_ diff --git a/Externals/glslang/SPIRV/SPVRemapper.cpp b/Externals/glslang/SPIRV/SPVRemapper.cpp index fd0bb8950c6e..fdfbeb90cd05 100644 --- a/Externals/glslang/SPIRV/SPVRemapper.cpp +++ b/Externals/glslang/SPIRV/SPVRemapper.cpp @@ -297,15 +297,21 @@ namespace spv { std::string spirvbin_t::literalString(unsigned word) const { std::string literal; + const spirword_t * pos = spv.data() + word; literal.reserve(16); - const char* bytes = reinterpret_cast(spv.data() + word); - - while (bytes && *bytes) - literal += *bytes++; - - return literal; + do { + spirword_t word = *pos; + for (int i = 0; i < 4; i++) { + char c = word & 0xff; + if (c == '\0') + return literal; + literal += c; + word >>= 8; + } + pos++; + } while (true); } void spirvbin_t::applyMap() @@ -544,6 +550,9 @@ namespace spv { // Extended instructions: currently, assume everything is an ID. // TODO: add whatever data we need for exceptions to that if (opCode == spv::OpExtInst) { + + idFn(asId(word)); // Instruction set is an ID that also needs to be mapped + word += 2; // instruction set, and instruction from set numOperands -= 2; @@ -625,6 +634,9 @@ namespace spv { break; } + case spv::OperandVariableLiteralStrings: + return nextInst; + // Execution mode might have extra literal operands. Skip them. case spv::OperandExecutionMode: return nextInst; @@ -827,7 +839,15 @@ namespace spv { [&](spv::Id& id) { if (thisOpCode != spv::OpNop) { ++idCounter; - const std::uint32_t hashval = opCounter[thisOpCode] * thisOpCode * 50047 + idCounter + fnId * 117; + const std::uint32_t hashval = + // Explicitly cast operands to unsigned int to avoid integer + // promotion to signed int followed by integer overflow, + // which would result in undefined behavior. + static_cast(opCounter[thisOpCode]) + * thisOpCode + * 50047 + + idCounter + + static_cast(fnId) * 117; if (isOldIdUnmapped(id)) localId(id, nextUnusedId(hashval % softTypeIdLimit + firstMappedID)); diff --git a/Externals/glslang/SPIRV/SpvBuilder.cpp b/Externals/glslang/SPIRV/SpvBuilder.cpp index bd208952e026..36a3f09744ad 100644 --- a/Externals/glslang/SPIRV/SpvBuilder.cpp +++ b/Externals/glslang/SPIRV/SpvBuilder.cpp @@ -1,6 +1,7 @@ // // Copyright (C) 2014-2015 LunarG, Inc. // Copyright (C) 2015-2018 Google, Inc. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -426,6 +427,37 @@ Id Builder::makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols) return type->getResultId(); } +Id Builder::makeGenericType(spv::Op opcode, std::vector& operands) +{ + // try to find it + Instruction* type; + for (int t = 0; t < (int)groupedTypes[opcode].size(); ++t) { + type = groupedTypes[opcode][t]; + if (static_cast(type->getNumOperands()) != operands.size()) + continue; // Number mismatch, find next + + bool match = true; + for (int op = 0; match && op < (int)operands.size(); ++op) { + match = (operands[op].isId ? type->getIdOperand(op) : type->getImmediateOperand(op)) == operands[op].word; + } + if (match) + return type->getResultId(); + } + + // not found, make it + type = new Instruction(getUniqueId(), NoType, opcode); + for (size_t op = 0; op < operands.size(); ++op) { + if (operands[op].isId) + type->addIdOperand(operands[op].word); + else + type->addImmediateOperand(operands[op].word); + } + groupedTypes[opcode].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + + return type->getResultId(); +} // TODO: performance: track arrays per stride // If a stride is supplied (non-zero) make an array. @@ -496,7 +528,8 @@ Id Builder::makeFunctionType(Id returnType, const std::vector& paramTypes) return type->getResultId(); } -Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format) +Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, bool ms, unsigned sampled, + ImageFormat format) { assert(sampled == 1 || sampled == 2); @@ -601,16 +634,31 @@ Id Builder::makeSampledImageType(Id imageType) } #ifndef GLSLANG_WEB -Id Builder::makeAccelerationStructureNVType() +Id Builder::makeAccelerationStructureType() { Instruction *type; - if (groupedTypes[OpTypeAccelerationStructureNV].size() == 0) { - type = new Instruction(getUniqueId(), NoType, OpTypeAccelerationStructureNV); - groupedTypes[OpTypeAccelerationStructureNV].push_back(type); + if (groupedTypes[OpTypeAccelerationStructureKHR].size() == 0) { + type = new Instruction(getUniqueId(), NoType, OpTypeAccelerationStructureKHR); + groupedTypes[OpTypeAccelerationStructureKHR].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); } else { - type = groupedTypes[OpTypeAccelerationStructureNV].back(); + type = groupedTypes[OpTypeAccelerationStructureKHR].back(); + } + + return type->getResultId(); +} + +Id Builder::makeRayQueryType() +{ + Instruction *type; + if (groupedTypes[OpTypeRayQueryKHR].size() == 0) { + type = new Instruction(getUniqueId(), NoType, OpTypeRayQueryKHR); + groupedTypes[OpTypeRayQueryKHR].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + } else { + type = groupedTypes[OpTypeRayQueryKHR].back(); } return type->getResultId(); @@ -726,6 +774,26 @@ Id Builder::getContainedTypeId(Id typeId, int member) const } } +// Figure out the final resulting type of the access chain. +Id Builder::getResultingAccessChainType() const +{ + assert(accessChain.base != NoResult); + Id typeId = getTypeId(accessChain.base); + + assert(isPointerType(typeId)); + typeId = getContainedTypeId(typeId); + + for (int i = 0; i < (int)accessChain.indexChain.size(); ++i) { + if (isStructType(typeId)) { + assert(isConstantScalar(accessChain.indexChain[i])); + typeId = getContainedTypeId(typeId, getConstantScalar(accessChain.indexChain[i])); + } else + typeId = getContainedTypeId(typeId, accessChain.indexChain[i]); + } + + return typeId; +} + // Return the immediately contained type of a given composite type. Id Builder::getContainedTypeId(Id typeId) const { @@ -852,6 +920,30 @@ bool Builder::isSpecConstantOpCode(Op opcode) const } } +Id Builder::makeNullConstant(Id typeId) +{ + Instruction* constant; + + // See if we already made it. + Id existing = NoResult; + for (int i = 0; i < (int)nullConstants.size(); ++i) { + constant = nullConstants[i]; + if (constant->getTypeId() == typeId) + existing = constant->getResultId(); + } + + if (existing != NoResult) + return existing; + + // Make it + Instruction* c = new Instruction(getUniqueId(), typeId, OpConstantNull); + constantsTypesGlobals.push_back(std::unique_ptr(c)); + nullConstants.push_back(c); + module.mapInstruction(c); + + return c->getResultId(); +} + Id Builder::makeBoolConstant(bool b, bool specConstant) { Id typeId = makeBoolType(); @@ -1166,6 +1258,28 @@ void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, int val executionModes.push_back(std::unique_ptr(instr)); } +void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, const std::vector& literals) +{ + Instruction* instr = new Instruction(OpExecutionMode); + instr->addIdOperand(entryPoint->getId()); + instr->addImmediateOperand(mode); + for (auto literal : literals) + instr->addImmediateOperand(literal); + + executionModes.push_back(std::unique_ptr(instr)); +} + +void Builder::addExecutionModeId(Function* entryPoint, ExecutionMode mode, const std::vector& operandIds) +{ + Instruction* instr = new Instruction(OpExecutionModeId); + instr->addIdOperand(entryPoint->getId()); + instr->addImmediateOperand(mode); + for (auto operandId : operandIds) + instr->addIdOperand(operandId); + + executionModes.push_back(std::unique_ptr(instr)); +} + void Builder::addName(Id id, const char* string) { Instruction* name = new Instruction(OpName); @@ -1204,7 +1318,7 @@ void Builder::addDecoration(Id id, Decoration decoration, const char* s) if (decoration == spv::DecorationMax) return; - Instruction* dec = new Instruction(OpDecorateStringGOOGLE); + Instruction* dec = new Instruction(OpDecorateString); dec->addIdOperand(id); dec->addImmediateOperand(decoration); dec->addStringOperand(s); @@ -1212,6 +1326,34 @@ void Builder::addDecoration(Id id, Decoration decoration, const char* s) decorations.push_back(std::unique_ptr(dec)); } +void Builder::addDecoration(Id id, Decoration decoration, const std::vector& literals) +{ + if (decoration == spv::DecorationMax) + return; + + Instruction* dec = new Instruction(OpDecorate); + dec->addIdOperand(id); + dec->addImmediateOperand(decoration); + for (auto literal : literals) + dec->addImmediateOperand(literal); + + decorations.push_back(std::unique_ptr(dec)); +} + +void Builder::addDecoration(Id id, Decoration decoration, const std::vector& strings) +{ + if (decoration == spv::DecorationMax) + return; + + Instruction* dec = new Instruction(OpDecorateString); + dec->addIdOperand(id); + dec->addImmediateOperand(decoration); + for (auto string : strings) + dec->addStringOperand(string); + + decorations.push_back(std::unique_ptr(dec)); +} + void Builder::addDecorationId(Id id, Decoration decoration, Id idDecoration) { if (decoration == spv::DecorationMax) @@ -1225,6 +1367,21 @@ void Builder::addDecorationId(Id id, Decoration decoration, Id idDecoration) decorations.push_back(std::unique_ptr(dec)); } +void Builder::addDecorationId(Id id, Decoration decoration, const std::vector& operandIds) +{ + if(decoration == spv::DecorationMax) + return; + + Instruction* dec = new Instruction(OpDecorateId); + dec->addIdOperand(id); + dec->addImmediateOperand(decoration); + + for (auto operandId : operandIds) + dec->addIdOperand(operandId); + + decorations.push_back(std::unique_ptr(dec)); +} + void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, int num) { if (decoration == spv::DecorationMax) @@ -1254,6 +1411,36 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat decorations.push_back(std::unique_ptr(dec)); } +void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, const std::vector& literals) +{ + if (decoration == spv::DecorationMax) + return; + + Instruction* dec = new Instruction(OpMemberDecorate); + dec->addIdOperand(id); + dec->addImmediateOperand(member); + dec->addImmediateOperand(decoration); + for (auto literal : literals) + dec->addImmediateOperand(literal); + + decorations.push_back(std::unique_ptr(dec)); +} + +void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, const std::vector& strings) +{ + if (decoration == spv::DecorationMax) + return; + + Instruction* dec = new Instruction(OpMemberDecorateString); + dec->addIdOperand(id); + dec->addImmediateOperand(member); + dec->addImmediateOperand(decoration); + for (auto string : strings) + dec->addStringOperand(string); + + decorations.push_back(std::unique_ptr(dec)); +} + // Comments in header Function* Builder::makeEntryPoint(const char* entryPoint) { @@ -1270,7 +1457,8 @@ Function* Builder::makeEntryPoint(const char* entryPoint) // Comments in header Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name, - const std::vector& paramTypes, const std::vector>& decorations, Block **entry) + const std::vector& paramTypes, + const std::vector>& decorations, Block **entry) { // Make the function and initial instructions in it Id typeId = makeFunctionType(returnType, paramTypes); @@ -1279,9 +1467,12 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const // Set up the precisions setPrecision(function->getId(), precision); + function->setReturnPrecision(precision); for (unsigned p = 0; p < (unsigned)decorations.size(); ++p) { - for (int d = 0; d < (int)decorations[p].size(); ++d) + for (int d = 0; d < (int)decorations[p].size(); ++d) { addDecoration(firstParamId + p, decorations[p][d]); + function->addParamPrecision(p, decorations[p][d]); + } } // CFG @@ -1331,14 +1522,14 @@ void Builder::leaveFunction() } // Comments in header -void Builder::makeDiscard() +void Builder::makeStatementTerminator(spv::Op opcode, const char *name) { - buildPoint->addInstruction(std::unique_ptr(new Instruction(OpKill))); - createAndSetNoPredecessorBlock("post-discard"); + buildPoint->addInstruction(std::unique_ptr(new Instruction(opcode))); + createAndSetNoPredecessorBlock(name); } // Comments in header -Id Builder::createVariable(StorageClass storageClass, Id type, const char* name, Id initializer) +Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name, Id initializer) { Id pointerType = makePointer(storageClass, type); Instruction* inst = new Instruction(getUniqueId(), pointerType, OpVariable); @@ -1360,6 +1551,7 @@ Id Builder::createVariable(StorageClass storageClass, Id type, const char* name, if (name) addName(inst->getResultId(), name); + setPrecision(inst->getResultId(), precision); return inst->getResultId(); } @@ -1373,7 +1565,8 @@ Id Builder::createUndefined(Id type) } // av/vis/nonprivate are unnecessary and illegal for some storage classes. -spv::MemoryAccessMask Builder::sanitizeMemoryAccessForStorageClass(spv::MemoryAccessMask memoryAccess, StorageClass sc) const +spv::MemoryAccessMask Builder::sanitizeMemoryAccessForStorageClass(spv::MemoryAccessMask memoryAccess, StorageClass sc) + const { switch (sc) { case spv::StorageClassUniform: @@ -1392,7 +1585,8 @@ spv::MemoryAccessMask Builder::sanitizeMemoryAccessForStorageClass(spv::MemoryAc } // Comments in header -void Builder::createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment) +void Builder::createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAccess, spv::Scope scope, + unsigned int alignment) { Instruction* store = new Instruction(OpStore); store->addIdOperand(lValue); @@ -1414,7 +1608,8 @@ void Builder::createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAcce } // Comments in header -Id Builder::createLoad(Id lValue, spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment) +Id Builder::createLoad(Id lValue, spv::Decoration precision, spv::MemoryAccessMask memoryAccess, + spv::Scope scope, unsigned int alignment) { Instruction* load = new Instruction(getUniqueId(), getDerefTypeId(lValue), OpLoad); load->addIdOperand(lValue); @@ -1432,6 +1627,7 @@ Id Builder::createLoad(Id lValue, spv::MemoryAccessMask memoryAccess, spv::Scope } buildPoint->addInstruction(std::unique_ptr(load)); + setPrecision(load->getResultId(), precision); return load->getResultId(); } @@ -1440,16 +1636,7 @@ Id Builder::createLoad(Id lValue, spv::MemoryAccessMask memoryAccess, spv::Scope Id Builder::createAccessChain(StorageClass storageClass, Id base, const std::vector& offsets) { // Figure out the final resulting type. - spv::Id typeId = getTypeId(base); - assert(isPointerType(typeId) && offsets.size() > 0); - typeId = getContainedTypeId(typeId); - for (int i = 0; i < (int)offsets.size(); ++i) { - if (isStructType(typeId)) { - assert(isConstantScalar(offsets[i])); - typeId = getContainedTypeId(typeId, getConstantScalar(offsets[i])); - } else - typeId = getContainedTypeId(typeId, offsets[i]); - } + Id typeId = getResultingAccessChainType(); typeId = makePointer(storageClass, typeId); // Make the instruction @@ -1495,7 +1682,8 @@ Id Builder::createCompositeExtract(Id composite, Id typeId, unsigned index) // Generate code for spec constants if in spec constant operation // generation mode. if (generatingOpCodeForSpecConst) { - return createSpecConstantOp(OpCompositeExtract, typeId, std::vector(1, composite), std::vector(1, index)); + return createSpecConstantOp(OpCompositeExtract, typeId, std::vector(1, composite), + std::vector(1, index)); } Instruction* extract = new Instruction(getUniqueId(), typeId, OpCompositeExtract); extract->addIdOperand(composite); @@ -1697,7 +1885,8 @@ Id Builder::createOp(Op opCode, Id typeId, const std::vector& opera return op->getResultId(); } -Id Builder::createSpecConstantOp(Op opCode, Id typeId, const std::vector& operands, const std::vector& literals) +Id Builder::createSpecConstantOp(Op opCode, Id typeId, const std::vector& operands, + const std::vector& literals) { Instruction* op = new Instruction(getUniqueId(), typeId, OpSpecConstantOp); op->addImmediateOperand((unsigned) opCode); @@ -2144,7 +2333,7 @@ Id Builder::createCompositeCompare(Decoration precision, Id value1, Id value2, b Op op; switch (getMostBasicTypeClass(valueType)) { case OpTypeFloat: - op = equal ? OpFOrdEqual : OpFOrdNotEqual; + op = equal ? OpFOrdEqual : OpFUnordNotEqual; break; case OpTypeInt: default: @@ -2187,7 +2376,8 @@ Id Builder::createCompositeCompare(Decoration precision, Id value1, Id value2, b if (constituent == 0) resultId = subResultId; else - resultId = setPrecision(createBinOp(equal ? OpLogicalAnd : OpLogicalOr, boolType, resultId, subResultId), precision); + resultId = setPrecision(createBinOp(equal ? OpLogicalAnd : OpLogicalOr, boolType, resultId, subResultId), + precision); } return resultId; @@ -2196,7 +2386,8 @@ Id Builder::createCompositeCompare(Decoration precision, Id value1, Id value2, b // OpCompositeConstruct Id Builder::createCompositeConstruct(Id typeId, const std::vector& constituents) { - assert(isAggregateType(typeId) || (getNumTypeConstituents(typeId) > 1 && getNumTypeConstituents(typeId) == (int)constituents.size())); + assert(isAggregateType(typeId) || (getNumTypeConstituents(typeId) > 1 && + getNumTypeConstituents(typeId) == (int)constituents.size())); if (generatingOpCodeForSpecConst) { // Sometime, even in spec-constant-op mode, the constant composite to be @@ -2394,7 +2585,7 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector& int row = 0; int col = 0; - for (int arg = 0; arg < (int)sources.size(); ++arg) { + for (int arg = 0; arg < (int)sources.size() && col < numCols; ++arg) { Id argComp = sources[arg]; for (int comp = 0; comp < getNumComponents(sources[arg]); ++comp) { if (getNumComponents(sources[arg]) > 1) { @@ -2406,6 +2597,10 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector& row = 0; col++; } + if (col == numCols) { + // If more components are provided than fit the matrix, discard the rest. + break; + } } } } @@ -2609,7 +2804,8 @@ void Builder::clearAccessChain() } // Comments in header -void Builder::accessChainPushSwizzle(std::vector& swizzle, Id preSwizzleBaseType, AccessChain::CoherentFlags coherentFlags, unsigned int alignment) +void Builder::accessChainPushSwizzle(std::vector& swizzle, Id preSwizzleBaseType, + AccessChain::CoherentFlags coherentFlags, unsigned int alignment) { accessChain.coherentFlags |= coherentFlags; accessChain.alignment |= alignment; @@ -2635,35 +2831,70 @@ void Builder::accessChainPushSwizzle(std::vector& swizzle, Id preSwizz } // Comments in header -void Builder::accessChainStore(Id rvalue, spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment) +void Builder::accessChainStore(Id rvalue, Decoration nonUniform, spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment) { assert(accessChain.isRValue == false); transferAccessChainSwizzle(true); - Id base = collapseAccessChain(); - Id source = rvalue; - // dynamic component should be gone - assert(accessChain.component == NoResult); + // If a swizzle exists and is not full and is not dynamic, then the swizzle will be broken into individual stores. + if (accessChain.swizzle.size() > 0 && + getNumTypeComponents(getResultingAccessChainType()) != (int)accessChain.swizzle.size() && + accessChain.component == NoResult) { + for (unsigned int i = 0; i < accessChain.swizzle.size(); ++i) { + accessChain.indexChain.push_back(makeUintConstant(accessChain.swizzle[i])); + accessChain.instr = NoResult; - // If swizzle still exists, it is out-of-order or not full, we must load the target vector, - // extract and insert elements to perform writeMask and/or swizzle. - if (accessChain.swizzle.size() > 0) { - Id tempBaseId = createLoad(base); - source = createLvalueSwizzle(getTypeId(tempBaseId), tempBaseId, source, accessChain.swizzle); - } + Id base = collapseAccessChain(); + addDecoration(base, nonUniform); + + accessChain.indexChain.pop_back(); + accessChain.instr = NoResult; + + // dynamic component should be gone + assert(accessChain.component == NoResult); - // take LSB of alignment - alignment = alignment & ~(alignment & (alignment-1)); - if (getStorageClass(base) == StorageClassPhysicalStorageBufferEXT) { - memoryAccess = (spv::MemoryAccessMask)(memoryAccess | spv::MemoryAccessAlignedMask); + Id source = createCompositeExtract(rvalue, getContainedTypeId(getTypeId(rvalue)), i); + + // take LSB of alignment + alignment = alignment & ~(alignment & (alignment-1)); + if (getStorageClass(base) == StorageClassPhysicalStorageBufferEXT) { + memoryAccess = (spv::MemoryAccessMask)(memoryAccess | spv::MemoryAccessAlignedMask); + } + + createStore(source, base, memoryAccess, scope, alignment); + } } + else { + Id base = collapseAccessChain(); + addDecoration(base, nonUniform); + + Id source = rvalue; + + // dynamic component should be gone + assert(accessChain.component == NoResult); + + // If swizzle still exists, it may be out-of-order, we must load the target vector, + // extract and insert elements to perform writeMask and/or swizzle. + if (accessChain.swizzle.size() > 0) { + Id tempBaseId = createLoad(base, spv::NoPrecision); + source = createLvalueSwizzle(getTypeId(tempBaseId), tempBaseId, source, accessChain.swizzle); + } - createStore(source, base, memoryAccess, scope, alignment); + // take LSB of alignment + alignment = alignment & ~(alignment & (alignment-1)); + if (getStorageClass(base) == StorageClassPhysicalStorageBufferEXT) { + memoryAccess = (spv::MemoryAccessMask)(memoryAccess | spv::MemoryAccessAlignedMask); + } + + createStore(source, base, memoryAccess, scope, alignment); + } } // Comments in header -Id Builder::accessChainLoad(Decoration precision, Decoration nonUniform, Id resultType, spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment) +Id Builder::accessChainLoad(Decoration precision, Decoration l_nonUniform, + Decoration r_nonUniform, Id resultType, spv::MemoryAccessMask memoryAccess, + spv::Scope scope, unsigned int alignment) { Id id; @@ -2687,17 +2918,19 @@ Id Builder::accessChainLoad(Decoration precision, Decoration nonUniform, Id resu if (constant) { id = createCompositeExtract(accessChain.base, swizzleBase, indexes); + setPrecision(id, precision); } else { Id lValue = NoResult; - if (spvVersion >= Spv_1_4) { + if (spvVersion >= Spv_1_4 && isValidInitializer(accessChain.base)) { // make a new function variable for this r-value, using an initializer, // and mark it as NonWritable so that downstream it can be detected as a lookup // table - lValue = createVariable(StorageClassFunction, getTypeId(accessChain.base), "indexable", - accessChain.base); + lValue = createVariable(NoPrecision, StorageClassFunction, getTypeId(accessChain.base), + "indexable", accessChain.base); addDecoration(lValue, DecorationNonWritable); } else { - lValue = createVariable(StorageClassFunction, getTypeId(accessChain.base), "indexable"); + lValue = createVariable(NoPrecision, StorageClassFunction, getTypeId(accessChain.base), + "indexable"); // store into it createStore(accessChain.base, lValue); } @@ -2706,9 +2939,8 @@ Id Builder::accessChainLoad(Decoration precision, Decoration nonUniform, Id resu accessChain.isRValue = false; // load through the access chain - id = createLoad(collapseAccessChain()); + id = createLoad(collapseAccessChain(), precision); } - setPrecision(id, precision); } else id = accessChain.base; // no precision, it was set when this was defined } else { @@ -2721,9 +2953,14 @@ Id Builder::accessChainLoad(Decoration precision, Decoration nonUniform, Id resu } // load through the access chain - id = createLoad(collapseAccessChain(), memoryAccess, scope, alignment); - setPrecision(id, precision); - addDecoration(id, nonUniform); + id = collapseAccessChain(); + // Apply nonuniform both to the access chain and the loaded value. + // Buffer accesses need the access chain decorated, and this is where + // loaded image types get decorated. TODO: This should maybe move to + // createImageTextureFunctionCall. + addDecoration(id, l_nonUniform); + id = createLoad(id, precision, memoryAccess, scope, alignment); + addDecoration(id, r_nonUniform); } // Done, unless there are swizzles to do @@ -2744,7 +2981,7 @@ Id Builder::accessChainLoad(Decoration precision, Decoration nonUniform, Id resu if (accessChain.component != NoResult) id = setPrecision(createVectorExtractDynamic(id, resultType, accessChain.component), precision); - addDecoration(id, nonUniform); + addDecoration(id, r_nonUniform); return id; } @@ -3075,7 +3312,8 @@ void Builder::dumpSourceInstructions(std::vector& out) const dumpSourceInstructions(iItr->first, *iItr->second, out); } -void Builder::dumpInstructions(std::vector& out, const std::vector >& instructions) const +void Builder::dumpInstructions(std::vector& out, + const std::vector >& instructions) const { for (int i = 0; i < (int)instructions.size(); ++i) { instructions[i]->dump(out); diff --git a/Externals/glslang/SPIRV/SpvBuilder.h b/Externals/glslang/SPIRV/SpvBuilder.h index 31fee975fcc4..c72d9b287ec9 100644 --- a/Externals/glslang/SPIRV/SpvBuilder.h +++ b/Externals/glslang/SPIRV/SpvBuilder.h @@ -1,7 +1,8 @@ // // Copyright (C) 2014-2015 LunarG, Inc. -// Copyright (C) 2015-2018 Google, Inc. +// Copyright (C) 2015-2020 Google, Inc. // Copyright (C) 2017 ARM Limited. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -94,6 +95,7 @@ class Builder { const char* file_c_str = str.c_str(); fileString->addStringOperand(file_c_str); strings.push_back(std::unique_ptr(fileString)); + module.mapInstruction(fileString); stringIds[file_c_str] = strId; return strId; } @@ -179,9 +181,12 @@ class Builder { Id makeSamplerType(); Id makeSampledImageType(Id imageType); Id makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols); + Id makeGenericType(spv::Op opcode, std::vector& operands); // accelerationStructureNV type - Id makeAccelerationStructureNVType(); + Id makeAccelerationStructureType(); + // rayQueryEXT type + Id makeRayQueryType(); // For querying about types. Id getTypeId(Id resultId) const { return module.getTypeId(resultId); } @@ -196,7 +201,9 @@ class Builder { Id getContainedTypeId(Id typeId) const; Id getContainedTypeId(Id typeId, int) const; StorageClass getTypeStorageClass(Id typeId) const { return module.getStorageClass(typeId); } - ImageFormat getImageTypeFormat(Id typeId) const { return (ImageFormat)module.getInstruction(typeId)->getImmediateOperand(6); } + ImageFormat getImageTypeFormat(Id typeId) const + { return (ImageFormat)module.getInstruction(typeId)->getImmediateOperand(6); } + Id getResultingAccessChainType() const; bool isPointer(Id resultId) const { return isPointerType(getTypeId(resultId)); } bool isScalar(Id resultId) const { return isScalarType(getTypeId(resultId)); } @@ -206,12 +213,17 @@ class Builder { bool isAggregate(Id resultId) const { return isAggregateType(getTypeId(resultId)); } bool isSampledImage(Id resultId) const { return isSampledImageType(getTypeId(resultId)); } - bool isBoolType(Id typeId) { return groupedTypes[OpTypeBool].size() > 0 && typeId == groupedTypes[OpTypeBool].back()->getResultId(); } - bool isIntType(Id typeId) const { return getTypeClass(typeId) == OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) != 0; } - bool isUintType(Id typeId) const { return getTypeClass(typeId) == OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) == 0; } + bool isBoolType(Id typeId) + { return groupedTypes[OpTypeBool].size() > 0 && typeId == groupedTypes[OpTypeBool].back()->getResultId(); } + bool isIntType(Id typeId) const + { return getTypeClass(typeId) == OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) != 0; } + bool isUintType(Id typeId) const + { return getTypeClass(typeId) == OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) == 0; } bool isFloatType(Id typeId) const { return getTypeClass(typeId) == OpTypeFloat; } bool isPointerType(Id typeId) const { return getTypeClass(typeId) == OpTypePointer; } - bool isScalarType(Id typeId) const { return getTypeClass(typeId) == OpTypeFloat || getTypeClass(typeId) == OpTypeInt || getTypeClass(typeId) == OpTypeBool; } + bool isScalarType(Id typeId) const + { return getTypeClass(typeId) == OpTypeFloat || getTypeClass(typeId) == OpTypeInt || + getTypeClass(typeId) == OpTypeBool; } bool isVectorType(Id typeId) const { return getTypeClass(typeId) == OpTypeVector; } bool isMatrixType(Id typeId) const { return getTypeClass(typeId) == OpTypeMatrix; } bool isStructType(Id typeId) const { return getTypeClass(typeId) == OpTypeStruct; } @@ -221,7 +233,8 @@ class Builder { #else bool isCooperativeMatrixType(Id typeId)const { return getTypeClass(typeId) == OpTypeCooperativeMatrixNV; } #endif - bool isAggregateType(Id typeId) const { return isArrayType(typeId) || isStructType(typeId) || isCooperativeMatrixType(typeId); } + bool isAggregateType(Id typeId) const + { return isArrayType(typeId) || isStructType(typeId) || isCooperativeMatrixType(typeId); } bool isImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeImage; } bool isSamplerType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampler; } bool isSampledImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampledImage; } @@ -233,9 +246,17 @@ class Builder { bool isConstant(Id resultId) const { return isConstantOpCode(getOpCode(resultId)); } bool isConstantScalar(Id resultId) const { return getOpCode(resultId) == OpConstant; } bool isSpecConstant(Id resultId) const { return isSpecConstantOpCode(getOpCode(resultId)); } - unsigned int getConstantScalar(Id resultId) const { return module.getInstruction(resultId)->getImmediateOperand(0); } + unsigned int getConstantScalar(Id resultId) const + { return module.getInstruction(resultId)->getImmediateOperand(0); } StorageClass getStorageClass(Id resultId) const { return getTypeStorageClass(getTypeId(resultId)); } + bool isVariableOpCode(Op opcode) const { return opcode == OpVariable; } + bool isVariable(Id resultId) const { return isVariableOpCode(getOpCode(resultId)); } + bool isGlobalStorage(Id resultId) const { return getStorageClass(resultId) != StorageClassFunction; } + bool isGlobalVariable(Id resultId) const { return isVariable(resultId) && isGlobalStorage(resultId); } + // See if a resultId is valid for use as an initializer. + bool isValidInitializer(Id resultId) const { return isConstant(resultId) || isGlobalVariable(resultId); } + int getScalarTypeWidth(Id typeId) const { Id scalarTypeId = getScalarTypeId(typeId); @@ -274,15 +295,24 @@ class Builder { } // For making new constants (will return old constant if the requested one was already made). + Id makeNullConstant(Id typeId); Id makeBoolConstant(bool b, bool specConstant = false); - Id makeInt8Constant(int i, bool specConstant = false) { return makeIntConstant(makeIntType(8), (unsigned)i, specConstant); } - Id makeUint8Constant(unsigned u, bool specConstant = false) { return makeIntConstant(makeUintType(8), u, specConstant); } - Id makeInt16Constant(int i, bool specConstant = false) { return makeIntConstant(makeIntType(16), (unsigned)i, specConstant); } - Id makeUint16Constant(unsigned u, bool specConstant = false) { return makeIntConstant(makeUintType(16), u, specConstant); } - Id makeIntConstant(int i, bool specConstant = false) { return makeIntConstant(makeIntType(32), (unsigned)i, specConstant); } - Id makeUintConstant(unsigned u, bool specConstant = false) { return makeIntConstant(makeUintType(32), u, specConstant); } - Id makeInt64Constant(long long i, bool specConstant = false) { return makeInt64Constant(makeIntType(64), (unsigned long long)i, specConstant); } - Id makeUint64Constant(unsigned long long u, bool specConstant = false) { return makeInt64Constant(makeUintType(64), u, specConstant); } + Id makeInt8Constant(int i, bool specConstant = false) + { return makeIntConstant(makeIntType(8), (unsigned)i, specConstant); } + Id makeUint8Constant(unsigned u, bool specConstant = false) + { return makeIntConstant(makeUintType(8), u, specConstant); } + Id makeInt16Constant(int i, bool specConstant = false) + { return makeIntConstant(makeIntType(16), (unsigned)i, specConstant); } + Id makeUint16Constant(unsigned u, bool specConstant = false) + { return makeIntConstant(makeUintType(16), u, specConstant); } + Id makeIntConstant(int i, bool specConstant = false) + { return makeIntConstant(makeIntType(32), (unsigned)i, specConstant); } + Id makeUintConstant(unsigned u, bool specConstant = false) + { return makeIntConstant(makeUintType(32), u, specConstant); } + Id makeInt64Constant(long long i, bool specConstant = false) + { return makeInt64Constant(makeIntType(64), (unsigned long long)i, specConstant); } + Id makeUint64Constant(unsigned long long u, bool specConstant = false) + { return makeInt64Constant(makeUintType(64), u, specConstant); } Id makeFloatConstant(float f, bool specConstant = false); Id makeDoubleConstant(double d, bool specConstant = false); Id makeFloat16Constant(float f16, bool specConstant = false); @@ -294,13 +324,20 @@ class Builder { // Methods for adding information outside the CFG. Instruction* addEntryPoint(ExecutionModel, Function*, const char* name); void addExecutionMode(Function*, ExecutionMode mode, int value1 = -1, int value2 = -1, int value3 = -1); + void addExecutionMode(Function*, ExecutionMode mode, const std::vector& literals); + void addExecutionModeId(Function*, ExecutionMode mode, const std::vector& operandIds); void addName(Id, const char* name); void addMemberName(Id, int member, const char* name); void addDecoration(Id, Decoration, int num = -1); void addDecoration(Id, Decoration, const char*); + void addDecoration(Id, Decoration, const std::vector& literals); + void addDecoration(Id, Decoration, const std::vector& strings); void addDecorationId(Id id, Decoration, Id idDecoration); + void addDecorationId(Id id, Decoration, const std::vector& operandIds); void addMemberDecoration(Id, unsigned int member, Decoration, int num = -1); void addMemberDecoration(Id, unsigned int member, Decoration, const char*); + void addMemberDecoration(Id, unsigned int member, Decoration, const std::vector& literals); + void addMemberDecoration(Id, unsigned int member, Decoration, const std::vector& strings); // At the end of what block do the next create*() instructions go? void setBuildPoint(Block* bp) { buildPoint = bp; } @@ -313,8 +350,8 @@ class Builder { // Make a shader-style function, and create its entry block if entry is non-zero. // Return the function, pass back the entry. // The returned pointer is only valid for the lifetime of this builder. - Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name, const std::vector& paramTypes, - const std::vector>& precisions, Block **entry = 0); + Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name, + const std::vector& paramTypes, const std::vector>& precisions, Block **entry = 0); // Create a return. An 'implicit' return is one not appearing in the source // code. In the case of an implicit return, no post-return block is inserted. @@ -323,20 +360,25 @@ class Builder { // Generate all the code needed to finish up a function. void leaveFunction(); - // Create a discard. - void makeDiscard(); + // Create block terminator instruction for certain statements like + // discard, terminate-invocation, terminateRayEXT, or ignoreIntersectionEXT + void makeStatementTerminator(spv::Op opcode, const char *name); // Create a global or function local or IO variable. - Id createVariable(StorageClass, Id type, const char* name = 0, Id initializer = NoResult); + Id createVariable(Decoration precision, StorageClass, Id type, const char* name = nullptr, + Id initializer = NoResult); // Create an intermediate with an undefined value. Id createUndefined(Id type); // Store into an Id and return the l-value - void createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0); + void createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, + spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0); // Load from an Id and return it - Id createLoad(Id lValue, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0); + Id createLoad(Id lValue, spv::Decoration precision, + spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, + spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0); // Create an OpAccessChain instruction Id createAccessChain(StorageClass, Id base, const std::vector& offsets); @@ -495,7 +537,7 @@ class Builder { // recursion stack can hold the memory for it. // void makeSwitch(Id condition, unsigned int control, int numSegments, const std::vector& caseValues, - const std::vector& valueToSegment, int defaultSegment, std::vector& segmentBB); // return argument + const std::vector& valueToSegment, int defaultSegment, std::vector& segmentBB); // Add a branch to the innermost switch's merge block. void addSwitchBreak(); @@ -512,7 +554,7 @@ class Builder { Block &head, &body, &merge, &continue_target; private: LoopBlocks(); - LoopBlocks& operator=(const LoopBlocks&); + LoopBlocks& operator=(const LoopBlocks&) = delete; }; // Start a new loop and prepare the builder to generate code for it. Until @@ -569,10 +611,13 @@ class Builder { std::vector indexChain; Id instr; // cache the instruction that generates this access chain std::vector swizzle; // each std::vector element selects the next GLSL component number - Id component; // a dynamic component index, can coexist with a swizzle, done after the swizzle, NoResult if not present - Id preSwizzleBaseType; // dereferenced type, before swizzle or component is applied; NoType unless a swizzle or component is present + Id component; // a dynamic component index, can coexist with a swizzle, + // done after the swizzle, NoResult if not present + Id preSwizzleBaseType; // dereferenced type, before swizzle or component is applied; + // NoType unless a swizzle or component is present bool isRValue; // true if 'base' is an r-value, otherwise, base is an l-value - unsigned int alignment; // bitwise OR of alignment values passed in. Accumulates worst alignment. Only tracks base and (optional) component selection alignment. + unsigned int alignment; // bitwise OR of alignment values passed in. Accumulates worst alignment. + // Only tracks base and (optional) component selection alignment. // Accumulate whether anything in the chain of structures has coherent decorations. struct CoherentFlags { @@ -583,15 +628,22 @@ class Builder { CoherentFlags operator |=(const CoherentFlags &other) { return *this; } #else bool isVolatile() const { return volatil; } + bool isNonUniform() const { return nonUniform; } + bool anyCoherent() const { + return coherent || devicecoherent || queuefamilycoherent || workgroupcoherent || + subgroupcoherent || shadercallcoherent; + } unsigned coherent : 1; unsigned devicecoherent : 1; unsigned queuefamilycoherent : 1; unsigned workgroupcoherent : 1; unsigned subgroupcoherent : 1; + unsigned shadercallcoherent : 1; unsigned nonprivate : 1; unsigned volatil : 1; unsigned isImage : 1; + unsigned nonUniform : 1; void clear() { coherent = 0; @@ -599,9 +651,11 @@ class Builder { queuefamilycoherent = 0; workgroupcoherent = 0; subgroupcoherent = 0; + shadercallcoherent = 0; nonprivate = 0; volatil = 0; isImage = 0; + nonUniform = 0; } CoherentFlags operator |=(const CoherentFlags &other) { @@ -610,9 +664,11 @@ class Builder { queuefamilycoherent |= other.queuefamilycoherent; workgroupcoherent |= other.workgroupcoherent; subgroupcoherent |= other.subgroupcoherent; + shadercallcoherent |= other.shadercallcoherent; nonprivate |= other.nonprivate; volatil |= other.volatil; isImage |= other.isImage; + nonUniform |= other.nonUniform; return *this; } #endif @@ -655,11 +711,13 @@ class Builder { } // push new swizzle onto the end of any existing swizzle, merging into a single swizzle - void accessChainPushSwizzle(std::vector& swizzle, Id preSwizzleBaseType, AccessChain::CoherentFlags coherentFlags, unsigned int alignment); + void accessChainPushSwizzle(std::vector& swizzle, Id preSwizzleBaseType, + AccessChain::CoherentFlags coherentFlags, unsigned int alignment); // push a dynamic component selection onto the access chain, only applicable with a // non-trivial swizzle or no swizzle - void accessChainPushComponent(Id component, Id preSwizzleBaseType, AccessChain::CoherentFlags coherentFlags, unsigned int alignment) + void accessChainPushComponent(Id component, Id preSwizzleBaseType, AccessChain::CoherentFlags coherentFlags, + unsigned int alignment) { if (accessChain.swizzle.size() != 1) { accessChain.component = component; @@ -671,10 +729,19 @@ class Builder { } // use accessChain and swizzle to store value - void accessChainStore(Id rvalue, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0); + void accessChainStore(Id rvalue, Decoration nonUniform, + spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, + spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0); // use accessChain and swizzle to load an r-value - Id accessChainLoad(Decoration precision, Decoration nonUniform, Id ResultType, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0); + Id accessChainLoad(Decoration precision, Decoration l_nonUniform, Decoration r_nonUniform, Id ResultType, + spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax, + unsigned int alignment = 0); + + // Return whether or not the access chain can be represented in SPIR-V + // as an l-value. + // E.g., a[3].yx cannot be, while a[3].y and a[3].y[x] can be. + bool isSpvLvalue() const { return accessChain.swizzle.size() <= 1; } // get the direct pointer for an l-value Id accessChainGetLValue(); @@ -703,7 +770,8 @@ class Builder { void createBranch(Block* block); void createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock); - void createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control, const std::vector& operands); + void createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control, + const std::vector& operands); // Sets to generate opcode for specialization constants. void setToSpecConstCodeGenMode() { generatingOpCodeForSpecConst = true; } @@ -729,7 +797,8 @@ class Builder { void dumpSourceInstructions(const spv::Id fileId, const std::string& text, std::vector&) const; void dumpInstructions(std::vector&, const std::vector >&) const; void dumpModuleProcesses(std::vector&) const; - spv::MemoryAccessMask sanitizeMemoryAccessForStorageClass(spv::MemoryAccessMask memoryAccess, StorageClass sc) const; + spv::MemoryAccessMask sanitizeMemoryAccessForStorageClass(spv::MemoryAccessMask memoryAccess, StorageClass sc) + const; unsigned int spvVersion; // the version of SPIR-V to emit in the header SourceLanguage source; @@ -764,10 +833,16 @@ class Builder { std::vector > externals; std::vector > functions; - // not output, internally used for quick & dirty canonical (unique) creation - std::unordered_map> groupedConstants; // map type opcodes to constant inst. - std::unordered_map> groupedStructConstants; // map struct-id to constant instructions - std::unordered_map> groupedTypes; // map type opcodes to type instructions + // not output, internally used for quick & dirty canonical (unique) creation + + // map type opcodes to constant inst. + std::unordered_map> groupedConstants; + // map struct-id to constant instructions + std::unordered_map> groupedStructConstants; + // map type opcodes to type instructions + std::unordered_map> groupedTypes; + // list of OpConstantNull instructions + std::vector nullConstants; // stack of switches std::stack switchMerges; diff --git a/Externals/glslang/SPIRV/SpvPostProcess.cpp b/Externals/glslang/SPIRV/SpvPostProcess.cpp index d40174d17211..dd6dabce0da1 100644 --- a/Externals/glslang/SPIRV/SpvPostProcess.cpp +++ b/Externals/glslang/SPIRV/SpvPostProcess.cpp @@ -44,10 +44,8 @@ #include #include "SpvBuilder.h" - #include "spirv.hpp" -#include "GlslangToSpv.h" -#include "SpvBuilder.h" + namespace spv { #include "GLSL.std.450.h" #include "GLSL.ext.KHR.h" @@ -113,8 +111,6 @@ void Builder::postProcessType(const Instruction& inst, Id typeId) } } break; - case OpAccessChain: - case OpPtrAccessChain: case OpCopyObject: break; case OpFConvert: @@ -161,26 +157,43 @@ void Builder::postProcessType(const Instruction& inst, Id typeId) switch (inst.getImmediateOperand(1)) { case GLSLstd450Frexp: case GLSLstd450FrexpStruct: - if (getSpvVersion() < glslang::EShTargetSpv_1_3 && containsType(typeId, OpTypeInt, 16)) + if (getSpvVersion() < spv::Spv_1_3 && containsType(typeId, OpTypeInt, 16)) addExtension(spv::E_SPV_AMD_gpu_shader_int16); break; case GLSLstd450InterpolateAtCentroid: case GLSLstd450InterpolateAtSample: case GLSLstd450InterpolateAtOffset: - if (getSpvVersion() < glslang::EShTargetSpv_1_3 && containsType(typeId, OpTypeFloat, 16)) + if (getSpvVersion() < spv::Spv_1_3 && containsType(typeId, OpTypeFloat, 16)) addExtension(spv::E_SPV_AMD_gpu_shader_half_float); break; default: break; } break; + case OpAccessChain: + case OpPtrAccessChain: + if (isPointerType(typeId)) + break; + if (basicTypeOp == OpTypeInt) { + if (width == 16) + addCapability(CapabilityInt16); + else if (width == 8) + addCapability(CapabilityInt8); + } default: - if (basicTypeOp == OpTypeFloat && width == 16) - addCapability(CapabilityFloat16); - if (basicTypeOp == OpTypeInt && width == 16) - addCapability(CapabilityInt16); - if (basicTypeOp == OpTypeInt && width == 8) - addCapability(CapabilityInt8); + if (basicTypeOp == OpTypeInt) { + if (width == 16) + addCapability(CapabilityInt16); + else if (width == 8) + addCapability(CapabilityInt8); + else if (width == 64) + addCapability(CapabilityInt64); + } else if (basicTypeOp == OpTypeFloat) { + if (width == 16) + addCapability(CapabilityFloat16); + else if (width == 64) + addCapability(CapabilityFloat64); + } break; } } @@ -436,6 +449,38 @@ void Builder::postProcessFeatures() { } } } + + // If any Vulkan memory model-specific functionality is used, update the + // OpMemoryModel to match. + if (capabilities.find(spv::CapabilityVulkanMemoryModelKHR) != capabilities.end()) { + memoryModel = spv::MemoryModelVulkanKHR; + addIncorporatedExtension(spv::E_SPV_KHR_vulkan_memory_model, spv::Spv_1_5); + } + + // Add Aliased decoration if there's more than one Workgroup Block variable. + if (capabilities.find(spv::CapabilityWorkgroupMemoryExplicitLayoutKHR) != capabilities.end()) { + assert(entryPoints.size() == 1); + auto &ep = entryPoints[0]; + + std::vector workgroup_variables; + for (int i = 0; i < (int)ep->getNumOperands(); i++) { + if (!ep->isIdOperand(i)) + continue; + + const Id id = ep->getIdOperand(i); + const Instruction *instr = module.getInstruction(id); + if (instr->getOpCode() != spv::OpVariable) + continue; + + if (instr->getImmediateOperand(0) == spv::StorageClassWorkgroup) + workgroup_variables.push_back(id); + } + + if (workgroup_variables.size() > 1) { + for (size_t i = 0; i < workgroup_variables.size(); i++) + addDecoration(workgroup_variables[i], spv::DecorationAliased); + } + } } #endif diff --git a/Externals/glslang/SPIRV/SpvTools.cpp b/Externals/glslang/SPIRV/SpvTools.cpp index 97bd4e74272f..8cc17cca934b 100644 --- a/Externals/glslang/SPIRV/SpvTools.cpp +++ b/Externals/glslang/SPIRV/SpvTools.cpp @@ -1,6 +1,6 @@ // // Copyright (C) 2014-2016 LunarG, Inc. -// Copyright (C) 2018 Google, Inc. +// Copyright (C) 2018-2020 Google, Inc. // // All rights reserved. // @@ -44,7 +44,6 @@ #include "SpvTools.h" #include "spirv-tools/optimizer.hpp" -#include "spirv-tools/libspirv.h" namespace glslang { @@ -69,6 +68,8 @@ spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLog } case glslang::EShTargetVulkan_1_2: return spv_target_env::SPV_ENV_VULKAN_1_2; + case glslang::EShTargetVulkan_1_3: + return spv_target_env::SPV_ENV_VULKAN_1_3; default: break; } @@ -80,12 +81,52 @@ spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLog return spv_target_env::SPV_ENV_UNIVERSAL_1_0; } +// Callback passed to spvtools::Optimizer::SetMessageConsumer +void OptimizerMesssageConsumer(spv_message_level_t level, const char *source, + const spv_position_t &position, const char *message) +{ + auto &out = std::cerr; + switch (level) + { + case SPV_MSG_FATAL: + case SPV_MSG_INTERNAL_ERROR: + case SPV_MSG_ERROR: + out << "error: "; + break; + case SPV_MSG_WARNING: + out << "warning: "; + break; + case SPV_MSG_INFO: + case SPV_MSG_DEBUG: + out << "info: "; + break; + default: + break; + } + if (source) + { + out << source << ":"; + } + out << position.line << ":" << position.column << ":" << position.index << ":"; + if (message) + { + out << " " << message; + } + out << std::endl; +} -// Use the SPIRV-Tools disassembler to print SPIR-V. +// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv) +{ + SpirvToolsDisassemble(out, spirv, spv_target_env::SPV_ENV_UNIVERSAL_1_3); +} + +// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. +void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, + spv_target_env requested_context) { // disassemble - spv_context context = spvContextCreate(SPV_ENV_UNIVERSAL_1_3); + spv_context context = spvContextCreate(requested_context); spv_text text; spv_diagnostic diagnostic = nullptr; spvBinaryToText(context, spirv.data(), spirv.size(), @@ -114,6 +155,8 @@ void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector< spv_validator_options options = spvValidatorOptionsCreate(); spvValidatorOptionsSetRelaxBlockLayout(options, intermediate.usingHlslOffsets()); spvValidatorOptionsSetBeforeHlslLegalization(options, prelegalization); + spvValidatorOptionsSetScalarBlockLayout(options, intermediate.usingScalarBlockLayout()); + spvValidatorOptionsSetWorkgroupScalarBlockLayout(options, intermediate.usingScalarBlockLayout()); spvValidateWithOptions(context, options, &binary, &diagnostic); // report @@ -128,52 +171,21 @@ void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector< spvContextDestroy(context); } -// Apply the SPIRV-Tools optimizer to generated SPIR-V, for the purpose of -// legalizing HLSL SPIR-V. -void SpirvToolsLegalize(const glslang::TIntermediate&, std::vector& spirv, - spv::SpvBuildLogger*, const SpvOptions* options) +// Apply the SPIRV-Tools optimizer to generated SPIR-V. HLSL SPIR-V is legalized in the process. +void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector& spirv, + spv::SpvBuildLogger* logger, const SpvOptions* options) { - spv_target_env target_env = SPV_ENV_UNIVERSAL_1_2; + spv_target_env target_env = MapToSpirvToolsEnv(intermediate.getSpv(), logger); spvtools::Optimizer optimizer(target_env); - optimizer.SetMessageConsumer( - [](spv_message_level_t level, const char *source, const spv_position_t &position, const char *message) { - auto &out = std::cerr; - switch (level) - { - case SPV_MSG_FATAL: - case SPV_MSG_INTERNAL_ERROR: - case SPV_MSG_ERROR: - out << "error: "; - break; - case SPV_MSG_WARNING: - out << "warning: "; - break; - case SPV_MSG_INFO: - case SPV_MSG_DEBUG: - out << "info: "; - break; - default: - break; - } - if (source) - { - out << source << ":"; - } - out << position.line << ":" << position.column << ":" << position.index << ":"; - if (message) - { - out << " " << message; - } - out << std::endl; - }); + optimizer.SetMessageConsumer(OptimizerMesssageConsumer); // If debug (specifically source line info) is being generated, propagate // line information into all SPIR-V instructions. This avoids loss of // information when instructions are deleted or moved. Later, remove // redundant information to minimize final SPRIR-V size. - if (options->generateDebugInfo) { - optimizer.RegisterPass(spvtools::CreatePropagateLineInfoPass()); + if (options->stripDebugInfo) { + optimizer.RegisterPass(spvtools::CreateStripDebugInfoPass()); } optimizer.RegisterPass(spvtools::CreateWrapOpKillPass()); optimizer.RegisterPass(spvtools::CreateDeadBranchElimPass()); @@ -197,17 +209,36 @@ void SpirvToolsLegalize(const glslang::TIntermediate&, std::vector optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); optimizer.RegisterPass(spvtools::CreateVectorDCEPass()); optimizer.RegisterPass(spvtools::CreateDeadInsertElimPass()); + optimizer.RegisterPass(spvtools::CreateInterpolateFixupPass()); if (options->optimizeSize) { optimizer.RegisterPass(spvtools::CreateRedundancyEliminationPass()); + optimizer.RegisterPass(spvtools::CreateEliminateDeadInputComponentsPass()); } optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); optimizer.RegisterPass(spvtools::CreateCFGCleanupPass()); - if (options->generateDebugInfo) { - optimizer.RegisterPass(spvtools::CreateRedundantLineInfoElimPass()); - } spvtools::OptimizerOptions spvOptOptions; - spvOptOptions.set_run_validator(false); // The validator may run as a seperate step later on + optimizer.SetTargetEnv(MapToSpirvToolsEnv(intermediate.getSpv(), logger)); + spvOptOptions.set_run_validator(false); // The validator may run as a separate step later on + optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); +} + +// Apply the SPIRV-Tools optimizer to strip debug info from SPIR-V. This is implicitly done by +// SpirvToolsTransform if spvOptions->stripDebugInfo is set, but can be called separately if +// optimization is disabled. +void SpirvToolsStripDebugInfo(const glslang::TIntermediate& intermediate, + std::vector& spirv, spv::SpvBuildLogger* logger) +{ + spv_target_env target_env = MapToSpirvToolsEnv(intermediate.getSpv(), logger); + + spvtools::Optimizer optimizer(target_env); + optimizer.SetMessageConsumer(OptimizerMesssageConsumer); + + optimizer.RegisterPass(spvtools::CreateStripDebugInfoPass()); + + spvtools::OptimizerOptions spvOptOptions; + optimizer.SetTargetEnv(MapToSpirvToolsEnv(intermediate.getSpv(), logger)); + spvOptOptions.set_run_validator(false); // The validator may run as a separate step later on optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); } diff --git a/Externals/glslang/SPIRV/SpvTools.h b/Externals/glslang/SPIRV/SpvTools.h index 59c914da0b73..3fb3cbacd32d 100644 --- a/Externals/glslang/SPIRV/SpvTools.h +++ b/Externals/glslang/SPIRV/SpvTools.h @@ -41,9 +41,10 @@ #ifndef GLSLANG_SPV_TOOLS_H #define GLSLANG_SPV_TOOLS_H -#ifdef ENABLE_OPT +#if ENABLE_OPT #include #include +#include "spirv-tools/libspirv.h" #endif #include "glslang/MachineIndependent/localintermediate.h" @@ -52,28 +53,38 @@ namespace glslang { struct SpvOptions { - SpvOptions() : generateDebugInfo(false), disableOptimizer(true), + SpvOptions() : generateDebugInfo(false), stripDebugInfo(false), disableOptimizer(true), optimizeSize(false), disassemble(false), validate(false) { } bool generateDebugInfo; + bool stripDebugInfo; bool disableOptimizer; bool optimizeSize; bool disassemble; bool validate; }; -#ifdef ENABLE_OPT +#if ENABLE_OPT -// Use the SPIRV-Tools disassembler to print SPIR-V. +// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv); +// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. +void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, + spv_target_env requested_context); + // Apply the SPIRV-Tools validator to generated SPIR-V. void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger*, bool prelegalization); -// Apply the SPIRV-Tools optimizer to generated SPIR-V, for the purpose of -// legalizing HLSL SPIR-V. -void SpirvToolsLegalize(const glslang::TIntermediate& intermediate, std::vector& spirv, - spv::SpvBuildLogger*, const SpvOptions*); +// Apply the SPIRV-Tools optimizer to generated SPIR-V. HLSL SPIR-V is legalized in the process. +void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector& spirv, + spv::SpvBuildLogger*, const SpvOptions*); + +// Apply the SPIRV-Tools optimizer to strip debug info from SPIR-V. This is implicitly done by +// SpirvToolsTransform if spvOptions->stripDebugInfo is set, but can be called separately if +// optimization is disabled. +void SpirvToolsStripDebugInfo(const glslang::TIntermediate& intermediate, + std::vector& spirv, spv::SpvBuildLogger*); #endif diff --git a/Externals/glslang/SPIRV/disassemble.cpp b/Externals/glslang/SPIRV/disassemble.cpp index 930e79949363..74dd605409f9 100644 --- a/Externals/glslang/SPIRV/disassemble.cpp +++ b/Externals/glslang/SPIRV/disassemble.cpp @@ -43,10 +43,10 @@ #include #include #include +#include #include "disassemble.h" #include "doc.h" -#include "SpvTools.h" namespace spv { extern "C" { @@ -75,6 +75,7 @@ enum ExtInstSet { GLSLextAMDInst, GLSLextNVInst, OpenCLExtInst, + NonSemanticDebugPrintfExtInst, }; // Container class for a single instance of a SPIR-V stream, with methods for disassembly. @@ -100,6 +101,7 @@ class SpirvStream { void outputMask(OperandClass operandClass, unsigned mask); void disassembleImmediates(int numOperands); void disassembleIds(int numOperands); + std::pair decodeString(); int disassembleString(); void disassembleInstruction(Id resultId, Id typeId, Op opCode, int numOperands); @@ -290,31 +292,44 @@ void SpirvStream::disassembleIds(int numOperands) } } -// return the number of operands consumed by the string -int SpirvStream::disassembleString() +// decode string from words at current position (non-consuming) +std::pair SpirvStream::decodeString() { - int startWord = word; - - out << " \""; - - const char* wordString; + std::string res; + int wordPos = word; + char c; bool done = false; + do { - unsigned int content = stream[word]; - wordString = (const char*)&content; + unsigned int content = stream[wordPos]; for (int charCount = 0; charCount < 4; ++charCount) { - if (*wordString == 0) { + c = content & 0xff; + content >>= 8; + if (c == '\0') { done = true; break; } - out << *(wordString++); + res += c; } - ++word; - } while (! done); + ++wordPos; + } while(! done); + + return std::make_pair(wordPos - word, res); +} +// return the number of operands consumed by the string +int SpirvStream::disassembleString() +{ + out << " \""; + + std::pair decoderes = decodeString(); + + out << decoderes.second; out << "\""; - return word - startWord; + word += decoderes.first; + + return decoderes.first; } void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, int numOperands) @@ -331,7 +346,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, nextNestedControl = 0; } } else if (opCode == OpExtInstImport) { - idDescriptor[resultId] = (const char*)(&stream[word]); + idDescriptor[resultId] = decodeString().second; } else { if (resultId != 0 && idDescriptor[resultId].size() == 0) { @@ -428,7 +443,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, --numOperands; // Get names for printing "(XXX)" for readability, *after* this id if (opCode == OpName) - idDescriptor[stream[word - 1]] = (const char*)(&stream[word]); + idDescriptor[stream[word - 1]] = decodeString().second; break; case OperandVariableIds: disassembleIds(numOperands); @@ -480,8 +495,12 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, if (opCode == OpExtInst) { ExtInstSet extInstSet = GLSL450Inst; const char* name = idDescriptor[stream[word - 2]].c_str(); - if (0 == memcmp("OpenCL", name, 6)) { + if (strcmp("OpenCL.std", name) == 0) { extInstSet = OpenCLExtInst; + } else if (strcmp("OpenCL.DebugInfo.100", name) == 0) { + extInstSet = OpenCLExtInst; + } else if (strcmp("NonSemantic.DebugPrintf", name) == 0) { + extInstSet = NonSemanticDebugPrintfExtInst; } else if (strcmp(spv::E_SPV_AMD_shader_ballot, name) == 0 || strcmp(spv::E_SPV_AMD_shader_trinary_minmax, name) == 0 || strcmp(spv::E_SPV_AMD_shader_explicit_vertex_parameter, name) == 0 || @@ -505,6 +524,8 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, } else if (extInstSet == GLSLextNVInst) { out << "(" << GLSLextNVGetDebugNames(name, entrypoint) << ")"; + } else if (extInstSet == NonSemanticDebugPrintfExtInst) { + out << "(DebugPrintf)"; } } break; @@ -512,6 +533,10 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, case OperandLiteralString: numOperands -= disassembleString(); break; + case OperandVariableLiteralStrings: + while (numOperands > 0) + numOperands -= disassembleString(); + return; case OperandMemoryAccess: outputMask(OperandMemoryAccess, stream[word++]); --numOperands; diff --git a/Externals/glslang/SPIRV/doc.cpp b/Externals/glslang/SPIRV/doc.cpp index bee5c79729de..9a569e0d7f53 100644 --- a/Externals/glslang/SPIRV/doc.cpp +++ b/Externals/glslang/SPIRV/doc.cpp @@ -1,5 +1,6 @@ // // Copyright (C) 2014-2015 LunarG, Inc. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -99,12 +100,12 @@ const char* ExecutionModelString(int model) default: return "Bad"; - case ExecutionModelRayGenerationNV: return "RayGenerationNV"; - case ExecutionModelIntersectionNV: return "IntersectionNV"; - case ExecutionModelAnyHitNV: return "AnyHitNV"; - case ExecutionModelClosestHitNV: return "ClosestHitNV"; - case ExecutionModelMissNV: return "MissNV"; - case ExecutionModelCallableNV: return "CallableNV"; + case ExecutionModelRayGenerationKHR: return "RayGenerationKHR"; + case ExecutionModelIntersectionKHR: return "IntersectionKHR"; + case ExecutionModelAnyHitKHR: return "AnyHitKHR"; + case ExecutionModelClosestHitKHR: return "ClosestHitKHR"; + case ExecutionModelMissKHR: return "MissKHR"; + case ExecutionModelCallableKHR: return "CallableKHR"; } } @@ -133,7 +134,7 @@ const char* MemoryString(int mem) } } -const int ExecutionModeCeiling = 33; +const int ExecutionModeCeiling = 40; const char* ExecutionModeString(int mode) { @@ -172,7 +173,22 @@ const char* ExecutionModeString(int mode) case 31: return "ContractionOff"; case 32: return "Bad"; - case 4446: return "PostDepthCoverage"; + case ExecutionModeInitializer: return "Initializer"; + case ExecutionModeFinalizer: return "Finalizer"; + case ExecutionModeSubgroupSize: return "SubgroupSize"; + case ExecutionModeSubgroupsPerWorkgroup: return "SubgroupsPerWorkgroup"; + case ExecutionModeSubgroupsPerWorkgroupId: return "SubgroupsPerWorkgroupId"; + case ExecutionModeLocalSizeId: return "LocalSizeId"; + case ExecutionModeLocalSizeHintId: return "LocalSizeHintId"; + + case ExecutionModePostDepthCoverage: return "PostDepthCoverage"; + case ExecutionModeDenormPreserve: return "DenormPreserve"; + case ExecutionModeDenormFlushToZero: return "DenormFlushToZero"; + case ExecutionModeSignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve"; + case ExecutionModeRoundingModeRTE: return "RoundingModeRTE"; + case ExecutionModeRoundingModeRTZ: return "RoundingModeRTZ"; + case ExecutionModeStencilRefReplacingEXT: return "StencilRefReplacingEXT"; + case ExecutionModeSubgroupUniformControlFlowKHR: return "SubgroupUniformControlFlow"; case ExecutionModeOutputLinesNV: return "OutputLinesNV"; case ExecutionModeOutputPrimitivesNV: return "OutputPrimitivesNV"; @@ -187,6 +203,11 @@ const char* ExecutionModeString(int mode) case ExecutionModeShadingRateInterlockOrderedEXT: return "ShadingRateInterlockOrderedEXT"; case ExecutionModeShadingRateInterlockUnorderedEXT: return "ShadingRateInterlockUnorderedEXT"; + case ExecutionModeMaxWorkgroupSizeINTEL: return "MaxWorkgroupSizeINTEL"; + case ExecutionModeMaxWorkDimINTEL: return "MaxWorkDimINTEL"; + case ExecutionModeNoGlobalOffsetINTEL: return "NoGlobalOffsetINTEL"; + case ExecutionModeNumSIMDWorkitemsINTEL: return "NumSIMDWorkitemsINTEL"; + case ExecutionModeCeiling: default: return "Bad"; } @@ -209,12 +230,12 @@ const char* StorageClassString(int StorageClass) case 11: return "Image"; case 12: return "StorageBuffer"; - case StorageClassRayPayloadNV: return "RayPayloadNV"; - case StorageClassHitAttributeNV: return "HitAttributeNV"; - case StorageClassIncomingRayPayloadNV: return "IncomingRayPayloadNV"; - case StorageClassShaderRecordBufferNV: return "ShaderRecordBufferNV"; - case StorageClassCallableDataNV: return "CallableDataNV"; - case StorageClassIncomingCallableDataNV: return "IncomingCallableDataNV"; + case StorageClassRayPayloadKHR: return "RayPayloadKHR"; + case StorageClassHitAttributeKHR: return "HitAttributeKHR"; + case StorageClassIncomingRayPayloadKHR: return "IncomingRayPayloadKHR"; + case StorageClassShaderRecordBufferKHR: return "ShaderRecordBufferKHR"; + case StorageClassCallableDataKHR: return "CallableDataKHR"; + case StorageClassIncomingCallableDataKHR: return "IncomingCallableDataKHR"; case StorageClassPhysicalStorageBufferEXT: return "PhysicalStorageBufferEXT"; @@ -352,6 +373,8 @@ const char* BuiltInString(int builtIn) case 4424: return "BaseVertex"; case 4425: return "BaseInstance"; case 4426: return "DrawIndex"; + case 4432: return "PrimitiveShadingRateKHR"; + case 4444: return "ShadingRateKHR"; case 5014: return "FragStencilRefEXT"; case 4992: return "BaryCoordNoPerspAMD"; @@ -361,32 +384,33 @@ const char* BuiltInString(int builtIn) case 4996: return "BaryCoordSmoothCentroidAMD"; case 4997: return "BaryCoordSmoothSampleAMD"; case 4998: return "BaryCoordPullModelAMD"; - case BuiltInLaunchIdNV: return "LaunchIdNV"; - case BuiltInLaunchSizeNV: return "LaunchSizeNV"; - case BuiltInWorldRayOriginNV: return "WorldRayOriginNV"; - case BuiltInWorldRayDirectionNV: return "WorldRayDirectionNV"; - case BuiltInObjectRayOriginNV: return "ObjectRayOriginNV"; - case BuiltInObjectRayDirectionNV: return "ObjectRayDirectionNV"; - case BuiltInRayTminNV: return "RayTminNV"; - case BuiltInRayTmaxNV: return "RayTmaxNV"; - case BuiltInInstanceCustomIndexNV: return "InstanceCustomIndexNV"; - case BuiltInObjectToWorldNV: return "ObjectToWorldNV"; - case BuiltInWorldToObjectNV: return "WorldToObjectNV"; - case BuiltInHitTNV: return "HitTNV"; - case BuiltInHitKindNV: return "HitKindNV"; - case BuiltInIncomingRayFlagsNV: return "IncomingRayFlagsNV"; - case BuiltInViewportMaskNV: return "ViewportMaskNV"; - case BuiltInSecondaryPositionNV: return "SecondaryPositionNV"; - case BuiltInSecondaryViewportMaskNV: return "SecondaryViewportMaskNV"; - case BuiltInPositionPerViewNV: return "PositionPerViewNV"; - case BuiltInViewportMaskPerViewNV: return "ViewportMaskPerViewNV"; + case BuiltInLaunchIdKHR: return "LaunchIdKHR"; + case BuiltInLaunchSizeKHR: return "LaunchSizeKHR"; + case BuiltInWorldRayOriginKHR: return "WorldRayOriginKHR"; + case BuiltInWorldRayDirectionKHR: return "WorldRayDirectionKHR"; + case BuiltInObjectRayOriginKHR: return "ObjectRayOriginKHR"; + case BuiltInObjectRayDirectionKHR: return "ObjectRayDirectionKHR"; + case BuiltInRayTminKHR: return "RayTminKHR"; + case BuiltInRayTmaxKHR: return "RayTmaxKHR"; + case BuiltInInstanceCustomIndexKHR: return "InstanceCustomIndexKHR"; + case BuiltInRayGeometryIndexKHR: return "RayGeometryIndexKHR"; + case BuiltInObjectToWorldKHR: return "ObjectToWorldKHR"; + case BuiltInWorldToObjectKHR: return "WorldToObjectKHR"; + case BuiltInHitTNV: return "HitTNV"; + case BuiltInHitKindKHR: return "HitKindKHR"; + case BuiltInIncomingRayFlagsKHR: return "IncomingRayFlagsKHR"; + case BuiltInViewportMaskNV: return "ViewportMaskNV"; + case BuiltInSecondaryPositionNV: return "SecondaryPositionNV"; + case BuiltInSecondaryViewportMaskNV: return "SecondaryViewportMaskNV"; + case BuiltInPositionPerViewNV: return "PositionPerViewNV"; + case BuiltInViewportMaskPerViewNV: return "ViewportMaskPerViewNV"; // case BuiltInFragmentSizeNV: return "FragmentSizeNV"; // superseded by BuiltInFragSizeEXT // case BuiltInInvocationsPerPixelNV: return "InvocationsPerPixelNV"; // superseded by BuiltInFragInvocationCountEXT - case BuiltInBaryCoordNV: return "BaryCoordNV"; - case BuiltInBaryCoordNoPerspNV: return "BaryCoordNoPerspNV"; + case BuiltInBaryCoordNV: return "BaryCoordNV"; + case BuiltInBaryCoordNoPerspNV: return "BaryCoordNoPerspNV"; - case BuiltInFragSizeEXT: return "FragSizeEXT"; - case BuiltInFragInvocationCountEXT: return "FragInvocationCountEXT"; + case BuiltInFragSizeEXT: return "FragSizeEXT"; + case BuiltInFragInvocationCountEXT: return "FragInvocationCountEXT"; case 5264: return "FullyCoveredEXT"; @@ -402,6 +426,7 @@ const char* BuiltInString(int builtIn) case BuiltInSMCountNV: return "SMCountNV"; case BuiltInWarpIDNV: return "WarpIDNV"; case BuiltInSMIDNV: return "SMIDNV"; + case BuiltInCurrentRayTimeNV: return "CurrentRayTimeNV"; default: return "Bad"; } @@ -500,6 +525,8 @@ const char* ImageFormatString(int format) case 37: return "Rg8ui"; case 38: return "R16ui"; case 39: return "R8ui"; + case 40: return "R64ui"; + case 41: return "R64i"; default: return "Bad"; @@ -873,6 +900,12 @@ const char* CapabilityString(int info) case CapabilityDeviceGroup: return "DeviceGroup"; case CapabilityMultiView: return "MultiView"; + case CapabilityDenormPreserve: return "DenormPreserve"; + case CapabilityDenormFlushToZero: return "DenormFlushToZero"; + case CapabilitySignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve"; + case CapabilityRoundingModeRTE: return "RoundingModeRTE"; + case CapabilityRoundingModeRTZ: return "RoundingModeRTZ"; + case CapabilityStencilExportEXT: return "StencilExportEXT"; case CapabilityFloat16ImageAMD: return "Float16ImageAMD"; @@ -890,6 +923,11 @@ const char* CapabilityString(int info) case CapabilityPerViewAttributesNV: return "PerViewAttributesNV"; case CapabilityGroupNonUniformPartitionedNV: return "GroupNonUniformPartitionedNV"; case CapabilityRayTracingNV: return "RayTracingNV"; + case CapabilityRayTracingMotionBlurNV: return "RayTracingMotionBlurNV"; + case CapabilityRayTracingKHR: return "RayTracingKHR"; + case CapabilityRayQueryKHR: return "RayQueryKHR"; + case CapabilityRayTracingProvisionalKHR: return "RayTracingProvisionalKHR"; + case CapabilityRayTraversalPrimitiveCullingKHR: return "RayTraversalPrimitiveCullingKHR"; case CapabilityComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV"; case CapabilityComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV"; case CapabilityFragmentBarycentricNV: return "FragmentBarycentricNV"; @@ -928,11 +966,25 @@ const char* CapabilityString(int info) case CapabilityFragmentShaderPixelInterlockEXT: return "CapabilityFragmentShaderPixelInterlockEXT"; case CapabilityFragmentShaderShadingRateInterlockEXT: return "CapabilityFragmentShaderShadingRateInterlockEXT"; + case CapabilityFragmentShadingRateKHR: return "FragmentShadingRateKHR"; + case CapabilityDemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT"; case CapabilityShaderClockKHR: return "ShaderClockKHR"; + case CapabilityInt64ImageEXT: return "Int64ImageEXT"; case CapabilityIntegerFunctions2INTEL: return "CapabilityIntegerFunctions2INTEL"; + case CapabilityAtomicFloat16AddEXT: return "AtomicFloat16AddEXT"; + case CapabilityAtomicFloat32AddEXT: return "AtomicFloat32AddEXT"; + case CapabilityAtomicFloat64AddEXT: return "AtomicFloat64AddEXT"; + case CapabilityAtomicFloat16MinMaxEXT: return "AtomicFloat16MinMaxEXT"; + case CapabilityAtomicFloat32MinMaxEXT: return "AtomicFloat32MinMaxEXT"; + case CapabilityAtomicFloat64MinMaxEXT: return "AtomicFloat64MinMaxEXT"; + + case CapabilityWorkgroupMemoryExplicitLayoutKHR: return "CapabilityWorkgroupMemoryExplicitLayoutKHR"; + case CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR: return "CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR"; + case CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR: return "CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR"; + default: return "Bad"; } } @@ -1264,6 +1316,7 @@ const char* OpcodeString(int op) case 320: return "OpImageSparseRead"; case OpModuleProcessed: return "OpModuleProcessed"; + case OpExecutionModeId: return "OpExecutionModeId"; case OpDecorateId: return "OpDecorateId"; case 333: return "OpGroupNonUniformElect"; @@ -1301,6 +1354,8 @@ const char* OpcodeString(int op) case 365: return "OpGroupNonUniformQuadBroadcast"; case 366: return "OpGroupNonUniformQuadSwap"; + case OpTerminateInvocation: return "OpTerminateInvocation"; + case 4421: return "OpSubgroupBallotKHR"; case 4422: return "OpSubgroupFirstInvocationKHR"; case 4428: return "OpSubgroupAllKHR"; @@ -1308,6 +1363,10 @@ const char* OpcodeString(int op) case 4430: return "OpSubgroupAllEqualKHR"; case 4432: return "OpSubgroupReadInvocationKHR"; + case OpAtomicFAddEXT: return "OpAtomicFAddEXT"; + case OpAtomicFMinEXT: return "OpAtomicFMinEXT"; + case OpAtomicFMaxEXT: return "OpAtomicFMaxEXT"; + case 5000: return "OpGroupIAddNonUniformAMD"; case 5001: return "OpGroupFAddNonUniformAMD"; case 5002: return "OpGroupFMinNonUniformAMD"; @@ -1325,16 +1384,48 @@ const char* OpcodeString(int op) case OpDecorateStringGOOGLE: return "OpDecorateStringGOOGLE"; case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE"; + case OpReportIntersectionKHR: return "OpReportIntersectionKHR"; + case OpIgnoreIntersectionNV: return "OpIgnoreIntersectionNV"; + case OpIgnoreIntersectionKHR: return "OpIgnoreIntersectionKHR"; + case OpTerminateRayNV: return "OpTerminateRayNV"; + case OpTerminateRayKHR: return "OpTerminateRayKHR"; + case OpTraceNV: return "OpTraceNV"; + case OpTraceRayMotionNV: return "OpTraceRayMotionNV"; + case OpTraceRayKHR: return "OpTraceRayKHR"; + case OpTypeAccelerationStructureKHR: return "OpTypeAccelerationStructureKHR"; + case OpExecuteCallableNV: return "OpExecuteCallableNV"; + case OpExecuteCallableKHR: return "OpExecuteCallableKHR"; + case OpConvertUToAccelerationStructureKHR: return "OpConvertUToAccelerationStructureKHR"; + case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV"; - case OpReportIntersectionNV: return "OpReportIntersectionNV"; - case OpIgnoreIntersectionNV: return "OpIgnoreIntersectionNV"; - case OpTerminateRayNV: return "OpTerminateRayNV"; - case OpTraceNV: return "OpTraceNV"; - case OpTypeAccelerationStructureNV: return "OpTypeAccelerationStructureNV"; - case OpExecuteCallableNV: return "OpExecuteCallableNV"; case OpImageSampleFootprintNV: return "OpImageSampleFootprintNV"; case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV"; + case OpTypeRayQueryKHR: return "OpTypeRayQueryKHR"; + case OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR"; + case OpRayQueryTerminateKHR: return "OpRayQueryTerminateKHR"; + case OpRayQueryGenerateIntersectionKHR: return "OpRayQueryGenerateIntersectionKHR"; + case OpRayQueryConfirmIntersectionKHR: return "OpRayQueryConfirmIntersectionKHR"; + case OpRayQueryProceedKHR: return "OpRayQueryProceedKHR"; + case OpRayQueryGetIntersectionTypeKHR: return "OpRayQueryGetIntersectionTypeKHR"; + case OpRayQueryGetRayTMinKHR: return "OpRayQueryGetRayTMinKHR"; + case OpRayQueryGetRayFlagsKHR: return "OpRayQueryGetRayFlagsKHR"; + case OpRayQueryGetIntersectionTKHR: return "OpRayQueryGetIntersectionTKHR"; + case OpRayQueryGetIntersectionInstanceCustomIndexKHR: return "OpRayQueryGetIntersectionInstanceCustomIndexKHR"; + case OpRayQueryGetIntersectionInstanceIdKHR: return "OpRayQueryGetIntersectionInstanceIdKHR"; + case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: return "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR"; + case OpRayQueryGetIntersectionGeometryIndexKHR: return "OpRayQueryGetIntersectionGeometryIndexKHR"; + case OpRayQueryGetIntersectionPrimitiveIndexKHR: return "OpRayQueryGetIntersectionPrimitiveIndexKHR"; + case OpRayQueryGetIntersectionBarycentricsKHR: return "OpRayQueryGetIntersectionBarycentricsKHR"; + case OpRayQueryGetIntersectionFrontFaceKHR: return "OpRayQueryGetIntersectionFrontFaceKHR"; + case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: return "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR"; + case OpRayQueryGetIntersectionObjectRayDirectionKHR: return "OpRayQueryGetIntersectionObjectRayDirectionKHR"; + case OpRayQueryGetIntersectionObjectRayOriginKHR: return "OpRayQueryGetIntersectionObjectRayOriginKHR"; + case OpRayQueryGetWorldRayDirectionKHR: return "OpRayQueryGetWorldRayDirectionKHR"; + case OpRayQueryGetWorldRayOriginKHR: return "OpRayQueryGetWorldRayOriginKHR"; + case OpRayQueryGetIntersectionObjectToWorldKHR: return "OpRayQueryGetIntersectionObjectToWorldKHR"; + case OpRayQueryGetIntersectionWorldToObjectKHR: return "OpRayQueryGetIntersectionWorldToObjectKHR"; + case OpTypeCooperativeMatrixNV: return "OpTypeCooperativeMatrixNV"; case OpCooperativeMatrixLoadNV: return "OpCooperativeMatrixLoadNV"; case OpCooperativeMatrixStoreNV: return "OpCooperativeMatrixStoreNV"; @@ -1388,6 +1479,7 @@ void Parameterize() InstructionDesc[OpMemoryModel].setResultAndType(false, false); InstructionDesc[OpEntryPoint].setResultAndType(false, false); InstructionDesc[OpExecutionMode].setResultAndType(false, false); + InstructionDesc[OpExecutionModeId].setResultAndType(false, false); InstructionDesc[OpTypeVoid].setResultAndType(true, false); InstructionDesc[OpTypeBool].setResultAndType(true, false); InstructionDesc[OpTypeInt].setResultAndType(true, false); @@ -1441,6 +1533,7 @@ void Parameterize() InstructionDesc[OpBranchConditional].setResultAndType(false, false); InstructionDesc[OpSwitch].setResultAndType(false, false); InstructionDesc[OpKill].setResultAndType(false, false); + InstructionDesc[OpTerminateInvocation].setResultAndType(false, false); InstructionDesc[OpReturn].setResultAndType(false, false); InstructionDesc[OpReturnValue].setResultAndType(false, false); InstructionDesc[OpUnreachable].setResultAndType(false, false); @@ -1574,6 +1667,10 @@ void Parameterize() InstructionDesc[OpExecutionMode].operands.push(OperandExecutionMode, "'Mode'"); InstructionDesc[OpExecutionMode].operands.push(OperandOptionalLiteral, "See <>"); + InstructionDesc[OpExecutionModeId].operands.push(OperandId, "'Entry Point'"); + InstructionDesc[OpExecutionModeId].operands.push(OperandExecutionMode, "'Mode'"); + InstructionDesc[OpExecutionModeId].operands.push(OperandVariableIds, "See <>"); + InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Width'"); InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Signedness'"); @@ -1667,7 +1764,7 @@ void Parameterize() InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandId, "'Target'"); InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandDecoration, ""); - InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandLiteralString, "'Literal String'"); + InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'"); InstructionDesc[OpMemberDecorate].operands.push(OperandId, "'Structure Type'"); InstructionDesc[OpMemberDecorate].operands.push(OperandLiteralNumber, "'Member'"); @@ -1677,7 +1774,7 @@ void Parameterize() InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandId, "'Structure Type'"); InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandLiteralNumber, "'Member'"); InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandDecoration, ""); - InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandLiteralString, "'Literal String'"); + InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'"); InstructionDesc[OpGroupDecorate].operands.push(OperandId, "'Decoration Group'"); InstructionDesc[OpGroupDecorate].operands.push(OperandVariableIds, "'Targets'"); @@ -2230,6 +2327,11 @@ void Parameterize() InstructionDesc[OpAtomicIAdd].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicFAddEXT].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicFAddEXT].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicFAddEXT].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicFAddEXT].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Pointer'"); InstructionDesc[OpAtomicISub].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpAtomicISub].operands.push(OperandMemorySemantics, "'Semantics'"); @@ -2255,6 +2357,16 @@ void Parameterize() InstructionDesc[OpAtomicSMax].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicFMinEXT].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicFMinEXT].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Value'"); + + InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Pointer'"); InstructionDesc[OpAtomicAnd].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpAtomicAnd].operands.push(OperandMemorySemantics, "'Semantics'"); @@ -2633,7 +2745,7 @@ void Parameterize() InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandLiteralNumber, "'Direction'"); + InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "'Direction'"); InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'"); @@ -2694,9 +2806,9 @@ void Parameterize() InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X"); - InstructionDesc[OpTypeAccelerationStructureNV].setResultAndType(true, false); + InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false); - InstructionDesc[OpTraceNV].operands.push(OperandId, "'NV Acceleration Structure'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'Acceleration Structure'"); InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Flags'"); InstructionDesc[OpTraceNV].operands.push(OperandId, "'Cull Mask'"); InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Offset'"); @@ -2709,17 +2821,149 @@ void Parameterize() InstructionDesc[OpTraceNV].operands.push(OperandId, "'Payload'"); InstructionDesc[OpTraceNV].setResultAndType(false, false); - InstructionDesc[OpReportIntersectionNV].operands.push(OperandId, "'Hit Parameter'"); - InstructionDesc[OpReportIntersectionNV].operands.push(OperandId, "'Hit Kind'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Flags'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Cull Mask'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Miss Index'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Origin'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Direction'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Time'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpTraceRayMotionNV].setResultAndType(false, false); + + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Flags'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Cull Mask'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Miss Index'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Origin'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Direction'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpTraceRayKHR].setResultAndType(false, false); + + InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Parameter'"); + InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Kind'"); InstructionDesc[OpIgnoreIntersectionNV].setResultAndType(false, false); + InstructionDesc[OpIgnoreIntersectionKHR].setResultAndType(false, false); + InstructionDesc[OpTerminateRayNV].setResultAndType(false, false); + + InstructionDesc[OpTerminateRayKHR].setResultAndType(false, false); InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "SBT Record Index"); InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "CallableData ID"); InstructionDesc[OpExecuteCallableNV].setResultAndType(false, false); + InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "SBT Record Index"); + InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "CallableData"); + InstructionDesc[OpExecuteCallableKHR].setResultAndType(false, false); + + InstructionDesc[OpConvertUToAccelerationStructureKHR].operands.push(OperandId, "Value"); + InstructionDesc[OpConvertUToAccelerationStructureKHR].setResultAndType(true, true); + + // Ray Query + InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false); + InstructionDesc[OpTypeRayQueryKHR].setResultAndType(true, false); + + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'AccelerationS'"); + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayFlags'"); + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'CullMask'"); + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Tmin'"); + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Tmax'"); + InstructionDesc[OpRayQueryInitializeKHR].setResultAndType(false, false); + + InstructionDesc[OpRayQueryTerminateKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryTerminateKHR].setResultAndType(false, false); + + InstructionDesc[OpRayQueryGenerateIntersectionKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGenerateIntersectionKHR].operands.push(OperandId, "'THit'"); + InstructionDesc[OpRayQueryGenerateIntersectionKHR].setResultAndType(false, false); + + InstructionDesc[OpRayQueryConfirmIntersectionKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryConfirmIntersectionKHR].setResultAndType(false, false); + + InstructionDesc[OpRayQueryProceedKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryProceedKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionTypeKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionTypeKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionTypeKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetRayTMinKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetRayTMinKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetRayFlagsKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetRayFlagsKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionTKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionTKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionTKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionCandidateAABBOpaqueKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionCandidateAABBOpaqueKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetWorldRayDirectionKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetWorldRayDirectionKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetWorldRayOriginKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetWorldRayOriginKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].setResultAndType(true, true); + InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coordinate'"); InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Granularity'"); diff --git a/Externals/glslang/SPIRV/doc.h b/Externals/glslang/SPIRV/doc.h index 293256a2c68c..2a0b28c6b3ac 100644 --- a/Externals/glslang/SPIRV/doc.h +++ b/Externals/glslang/SPIRV/doc.h @@ -125,6 +125,7 @@ enum OperandClass { OperandVariableLiteralId, OperandLiteralNumber, OperandLiteralString, + OperandVariableLiteralStrings, OperandSource, OperandExecutionModel, OperandAddressing, diff --git a/Externals/glslang/SPIRV/hex_float.h b/Externals/glslang/SPIRV/hex_float.h index 905b21a45ade..8be8e9f7e366 100644 --- a/Externals/glslang/SPIRV/hex_float.h +++ b/Externals/glslang/SPIRV/hex_float.h @@ -784,8 +784,8 @@ inline std::istream& ParseNormalFloat(std::istream& is, bool negate_value, if (val.isInfinity()) { // Fail the parse. Emulate standard behaviour by setting the value to // the closest normal value, and set the fail bit on the stream. - value.set_value((value.isNegative() | negate_value) ? T::lowest() - : T::max()); + value.set_value((value.isNegative() || negate_value) ? T::lowest() + : T::max()); is.setstate(std::ios_base::failbit); } return is; diff --git a/Externals/glslang/SPIRV/spirv.hpp b/Externals/glslang/SPIRV/spirv.hpp index 1e96f7b4a964..a8642006a2bb 100644 --- a/Externals/glslang/SPIRV/spirv.hpp +++ b/Externals/glslang/SPIRV/spirv.hpp @@ -1,1981 +1,2509 @@ -// Copyright (c) 2014-2019 The Khronos Group Inc. -// -// 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. -// -// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS -// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND -// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ -// -// 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 automatically generated by the same tool that creates -// the Binary Section of the SPIR-V specification. - -// Enumeration tokens for SPIR-V, in various styles: -// C, C++, C++11, JSON, Lua, Python, C#, D -// -// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL -// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL -// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL -// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL -// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL'] -// - C# will use enum classes in the Specification class located in the "Spv" namespace, -// e.g.: Spv.Specification.SourceLanguage.GLSL -// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL -// -// Some tokens act like mask values, which can be OR'd together, -// while others are mutually exclusive. The mask-like ones have -// "Mask" in their name, and a parallel enum that has the shift -// amount (1 << x) for each corresponding enumerant. - -#ifndef spirv_HPP -#define spirv_HPP - -namespace spv { - -typedef unsigned int Id; - -#define SPV_VERSION 0x10400 -#define SPV_REVISION 1 - -static const unsigned int MagicNumber = 0x07230203; -static const unsigned int Version = 0x00010400; -static const unsigned int Revision = 1; -static const unsigned int OpCodeMask = 0xffff; -static const unsigned int WordCountShift = 16; - -enum SourceLanguage { - SourceLanguageUnknown = 0, - SourceLanguageESSL = 1, - SourceLanguageGLSL = 2, - SourceLanguageOpenCL_C = 3, - SourceLanguageOpenCL_CPP = 4, - SourceLanguageHLSL = 5, - SourceLanguageMax = 0x7fffffff, -}; - -enum ExecutionModel { - ExecutionModelVertex = 0, - ExecutionModelTessellationControl = 1, - ExecutionModelTessellationEvaluation = 2, - ExecutionModelGeometry = 3, - ExecutionModelFragment = 4, - ExecutionModelGLCompute = 5, - ExecutionModelKernel = 6, - ExecutionModelTaskNV = 5267, - ExecutionModelMeshNV = 5268, - ExecutionModelRayGenerationNV = 5313, - ExecutionModelIntersectionNV = 5314, - ExecutionModelAnyHitNV = 5315, - ExecutionModelClosestHitNV = 5316, - ExecutionModelMissNV = 5317, - ExecutionModelCallableNV = 5318, - ExecutionModelMax = 0x7fffffff, -}; - -enum AddressingModel { - AddressingModelLogical = 0, - AddressingModelPhysical32 = 1, - AddressingModelPhysical64 = 2, - AddressingModelPhysicalStorageBuffer64 = 5348, - AddressingModelPhysicalStorageBuffer64EXT = 5348, - AddressingModelMax = 0x7fffffff, -}; - -enum MemoryModel { - MemoryModelSimple = 0, - MemoryModelGLSL450 = 1, - MemoryModelOpenCL = 2, - MemoryModelVulkan = 3, - MemoryModelVulkanKHR = 3, - MemoryModelMax = 0x7fffffff, -}; - -enum ExecutionMode { - ExecutionModeInvocations = 0, - ExecutionModeSpacingEqual = 1, - ExecutionModeSpacingFractionalEven = 2, - ExecutionModeSpacingFractionalOdd = 3, - ExecutionModeVertexOrderCw = 4, - ExecutionModeVertexOrderCcw = 5, - ExecutionModePixelCenterInteger = 6, - ExecutionModeOriginUpperLeft = 7, - ExecutionModeOriginLowerLeft = 8, - ExecutionModeEarlyFragmentTests = 9, - ExecutionModePointMode = 10, - ExecutionModeXfb = 11, - ExecutionModeDepthReplacing = 12, - ExecutionModeDepthGreater = 14, - ExecutionModeDepthLess = 15, - ExecutionModeDepthUnchanged = 16, - ExecutionModeLocalSize = 17, - ExecutionModeLocalSizeHint = 18, - ExecutionModeInputPoints = 19, - ExecutionModeInputLines = 20, - ExecutionModeInputLinesAdjacency = 21, - ExecutionModeTriangles = 22, - ExecutionModeInputTrianglesAdjacency = 23, - ExecutionModeQuads = 24, - ExecutionModeIsolines = 25, - ExecutionModeOutputVertices = 26, - ExecutionModeOutputPoints = 27, - ExecutionModeOutputLineStrip = 28, - ExecutionModeOutputTriangleStrip = 29, - ExecutionModeVecTypeHint = 30, - ExecutionModeContractionOff = 31, - ExecutionModeInitializer = 33, - ExecutionModeFinalizer = 34, - ExecutionModeSubgroupSize = 35, - ExecutionModeSubgroupsPerWorkgroup = 36, - ExecutionModeSubgroupsPerWorkgroupId = 37, - ExecutionModeLocalSizeId = 38, - ExecutionModeLocalSizeHintId = 39, - ExecutionModePostDepthCoverage = 4446, - ExecutionModeDenormPreserve = 4459, - ExecutionModeDenormFlushToZero = 4460, - ExecutionModeSignedZeroInfNanPreserve = 4461, - ExecutionModeRoundingModeRTE = 4462, - ExecutionModeRoundingModeRTZ = 4463, - ExecutionModeStencilRefReplacingEXT = 5027, - ExecutionModeOutputLinesNV = 5269, - ExecutionModeOutputPrimitivesNV = 5270, - ExecutionModeDerivativeGroupQuadsNV = 5289, - ExecutionModeDerivativeGroupLinearNV = 5290, - ExecutionModeOutputTrianglesNV = 5298, - ExecutionModePixelInterlockOrderedEXT = 5366, - ExecutionModePixelInterlockUnorderedEXT = 5367, - ExecutionModeSampleInterlockOrderedEXT = 5368, - ExecutionModeSampleInterlockUnorderedEXT = 5369, - ExecutionModeShadingRateInterlockOrderedEXT = 5370, - ExecutionModeShadingRateInterlockUnorderedEXT = 5371, - ExecutionModeMax = 0x7fffffff, -}; - -enum StorageClass { - StorageClassUniformConstant = 0, - StorageClassInput = 1, - StorageClassUniform = 2, - StorageClassOutput = 3, - StorageClassWorkgroup = 4, - StorageClassCrossWorkgroup = 5, - StorageClassPrivate = 6, - StorageClassFunction = 7, - StorageClassGeneric = 8, - StorageClassPushConstant = 9, - StorageClassAtomicCounter = 10, - StorageClassImage = 11, - StorageClassStorageBuffer = 12, - StorageClassCallableDataNV = 5328, - StorageClassIncomingCallableDataNV = 5329, - StorageClassRayPayloadNV = 5338, - StorageClassHitAttributeNV = 5339, - StorageClassIncomingRayPayloadNV = 5342, - StorageClassShaderRecordBufferNV = 5343, - StorageClassPhysicalStorageBuffer = 5349, - StorageClassPhysicalStorageBufferEXT = 5349, - StorageClassMax = 0x7fffffff, -}; - -enum Dim { - Dim1D = 0, - Dim2D = 1, - Dim3D = 2, - DimCube = 3, - DimRect = 4, - DimBuffer = 5, - DimSubpassData = 6, - DimMax = 0x7fffffff, -}; - -enum SamplerAddressingMode { - SamplerAddressingModeNone = 0, - SamplerAddressingModeClampToEdge = 1, - SamplerAddressingModeClamp = 2, - SamplerAddressingModeRepeat = 3, - SamplerAddressingModeRepeatMirrored = 4, - SamplerAddressingModeMax = 0x7fffffff, -}; - -enum SamplerFilterMode { - SamplerFilterModeNearest = 0, - SamplerFilterModeLinear = 1, - SamplerFilterModeMax = 0x7fffffff, -}; - -enum ImageFormat { - ImageFormatUnknown = 0, - ImageFormatRgba32f = 1, - ImageFormatRgba16f = 2, - ImageFormatR32f = 3, - ImageFormatRgba8 = 4, - ImageFormatRgba8Snorm = 5, - ImageFormatRg32f = 6, - ImageFormatRg16f = 7, - ImageFormatR11fG11fB10f = 8, - ImageFormatR16f = 9, - ImageFormatRgba16 = 10, - ImageFormatRgb10A2 = 11, - ImageFormatRg16 = 12, - ImageFormatRg8 = 13, - ImageFormatR16 = 14, - ImageFormatR8 = 15, - ImageFormatRgba16Snorm = 16, - ImageFormatRg16Snorm = 17, - ImageFormatRg8Snorm = 18, - ImageFormatR16Snorm = 19, - ImageFormatR8Snorm = 20, - ImageFormatRgba32i = 21, - ImageFormatRgba16i = 22, - ImageFormatRgba8i = 23, - ImageFormatR32i = 24, - ImageFormatRg32i = 25, - ImageFormatRg16i = 26, - ImageFormatRg8i = 27, - ImageFormatR16i = 28, - ImageFormatR8i = 29, - ImageFormatRgba32ui = 30, - ImageFormatRgba16ui = 31, - ImageFormatRgba8ui = 32, - ImageFormatR32ui = 33, - ImageFormatRgb10a2ui = 34, - ImageFormatRg32ui = 35, - ImageFormatRg16ui = 36, - ImageFormatRg8ui = 37, - ImageFormatR16ui = 38, - ImageFormatR8ui = 39, - ImageFormatMax = 0x7fffffff, -}; - -enum ImageChannelOrder { - ImageChannelOrderR = 0, - ImageChannelOrderA = 1, - ImageChannelOrderRG = 2, - ImageChannelOrderRA = 3, - ImageChannelOrderRGB = 4, - ImageChannelOrderRGBA = 5, - ImageChannelOrderBGRA = 6, - ImageChannelOrderARGB = 7, - ImageChannelOrderIntensity = 8, - ImageChannelOrderLuminance = 9, - ImageChannelOrderRx = 10, - ImageChannelOrderRGx = 11, - ImageChannelOrderRGBx = 12, - ImageChannelOrderDepth = 13, - ImageChannelOrderDepthStencil = 14, - ImageChannelOrdersRGB = 15, - ImageChannelOrdersRGBx = 16, - ImageChannelOrdersRGBA = 17, - ImageChannelOrdersBGRA = 18, - ImageChannelOrderABGR = 19, - ImageChannelOrderMax = 0x7fffffff, -}; - -enum ImageChannelDataType { - ImageChannelDataTypeSnormInt8 = 0, - ImageChannelDataTypeSnormInt16 = 1, - ImageChannelDataTypeUnormInt8 = 2, - ImageChannelDataTypeUnormInt16 = 3, - ImageChannelDataTypeUnormShort565 = 4, - ImageChannelDataTypeUnormShort555 = 5, - ImageChannelDataTypeUnormInt101010 = 6, - ImageChannelDataTypeSignedInt8 = 7, - ImageChannelDataTypeSignedInt16 = 8, - ImageChannelDataTypeSignedInt32 = 9, - ImageChannelDataTypeUnsignedInt8 = 10, - ImageChannelDataTypeUnsignedInt16 = 11, - ImageChannelDataTypeUnsignedInt32 = 12, - ImageChannelDataTypeHalfFloat = 13, - ImageChannelDataTypeFloat = 14, - ImageChannelDataTypeUnormInt24 = 15, - ImageChannelDataTypeUnormInt101010_2 = 16, - ImageChannelDataTypeMax = 0x7fffffff, -}; - -enum ImageOperandsShift { - ImageOperandsBiasShift = 0, - ImageOperandsLodShift = 1, - ImageOperandsGradShift = 2, - ImageOperandsConstOffsetShift = 3, - ImageOperandsOffsetShift = 4, - ImageOperandsConstOffsetsShift = 5, - ImageOperandsSampleShift = 6, - ImageOperandsMinLodShift = 7, - ImageOperandsMakeTexelAvailableShift = 8, - ImageOperandsMakeTexelAvailableKHRShift = 8, - ImageOperandsMakeTexelVisibleShift = 9, - ImageOperandsMakeTexelVisibleKHRShift = 9, - ImageOperandsNonPrivateTexelShift = 10, - ImageOperandsNonPrivateTexelKHRShift = 10, - ImageOperandsVolatileTexelShift = 11, - ImageOperandsVolatileTexelKHRShift = 11, - ImageOperandsSignExtendShift = 12, - ImageOperandsZeroExtendShift = 13, - ImageOperandsMax = 0x7fffffff, -}; - -enum ImageOperandsMask { - ImageOperandsMaskNone = 0, - ImageOperandsBiasMask = 0x00000001, - ImageOperandsLodMask = 0x00000002, - ImageOperandsGradMask = 0x00000004, - ImageOperandsConstOffsetMask = 0x00000008, - ImageOperandsOffsetMask = 0x00000010, - ImageOperandsConstOffsetsMask = 0x00000020, - ImageOperandsSampleMask = 0x00000040, - ImageOperandsMinLodMask = 0x00000080, - ImageOperandsMakeTexelAvailableMask = 0x00000100, - ImageOperandsMakeTexelAvailableKHRMask = 0x00000100, - ImageOperandsMakeTexelVisibleMask = 0x00000200, - ImageOperandsMakeTexelVisibleKHRMask = 0x00000200, - ImageOperandsNonPrivateTexelMask = 0x00000400, - ImageOperandsNonPrivateTexelKHRMask = 0x00000400, - ImageOperandsVolatileTexelMask = 0x00000800, - ImageOperandsVolatileTexelKHRMask = 0x00000800, - ImageOperandsSignExtendMask = 0x00001000, - ImageOperandsZeroExtendMask = 0x00002000, -}; - -enum FPFastMathModeShift { - FPFastMathModeNotNaNShift = 0, - FPFastMathModeNotInfShift = 1, - FPFastMathModeNSZShift = 2, - FPFastMathModeAllowRecipShift = 3, - FPFastMathModeFastShift = 4, - FPFastMathModeMax = 0x7fffffff, -}; - -enum FPFastMathModeMask { - FPFastMathModeMaskNone = 0, - FPFastMathModeNotNaNMask = 0x00000001, - FPFastMathModeNotInfMask = 0x00000002, - FPFastMathModeNSZMask = 0x00000004, - FPFastMathModeAllowRecipMask = 0x00000008, - FPFastMathModeFastMask = 0x00000010, -}; - -enum FPRoundingMode { - FPRoundingModeRTE = 0, - FPRoundingModeRTZ = 1, - FPRoundingModeRTP = 2, - FPRoundingModeRTN = 3, - FPRoundingModeMax = 0x7fffffff, -}; - -enum LinkageType { - LinkageTypeExport = 0, - LinkageTypeImport = 1, - LinkageTypeMax = 0x7fffffff, -}; - -enum AccessQualifier { - AccessQualifierReadOnly = 0, - AccessQualifierWriteOnly = 1, - AccessQualifierReadWrite = 2, - AccessQualifierMax = 0x7fffffff, -}; - -enum FunctionParameterAttribute { - FunctionParameterAttributeZext = 0, - FunctionParameterAttributeSext = 1, - FunctionParameterAttributeByVal = 2, - FunctionParameterAttributeSret = 3, - FunctionParameterAttributeNoAlias = 4, - FunctionParameterAttributeNoCapture = 5, - FunctionParameterAttributeNoWrite = 6, - FunctionParameterAttributeNoReadWrite = 7, - FunctionParameterAttributeMax = 0x7fffffff, -}; - -enum Decoration { - DecorationRelaxedPrecision = 0, - DecorationSpecId = 1, - DecorationBlock = 2, - DecorationBufferBlock = 3, - DecorationRowMajor = 4, - DecorationColMajor = 5, - DecorationArrayStride = 6, - DecorationMatrixStride = 7, - DecorationGLSLShared = 8, - DecorationGLSLPacked = 9, - DecorationCPacked = 10, - DecorationBuiltIn = 11, - DecorationNoPerspective = 13, - DecorationFlat = 14, - DecorationPatch = 15, - DecorationCentroid = 16, - DecorationSample = 17, - DecorationInvariant = 18, - DecorationRestrict = 19, - DecorationAliased = 20, - DecorationVolatile = 21, - DecorationConstant = 22, - DecorationCoherent = 23, - DecorationNonWritable = 24, - DecorationNonReadable = 25, - DecorationUniform = 26, - DecorationUniformId = 27, - DecorationSaturatedConversion = 28, - DecorationStream = 29, - DecorationLocation = 30, - DecorationComponent = 31, - DecorationIndex = 32, - DecorationBinding = 33, - DecorationDescriptorSet = 34, - DecorationOffset = 35, - DecorationXfbBuffer = 36, - DecorationXfbStride = 37, - DecorationFuncParamAttr = 38, - DecorationFPRoundingMode = 39, - DecorationFPFastMathMode = 40, - DecorationLinkageAttributes = 41, - DecorationNoContraction = 42, - DecorationInputAttachmentIndex = 43, - DecorationAlignment = 44, - DecorationMaxByteOffset = 45, - DecorationAlignmentId = 46, - DecorationMaxByteOffsetId = 47, - DecorationNoSignedWrap = 4469, - DecorationNoUnsignedWrap = 4470, - DecorationExplicitInterpAMD = 4999, - DecorationOverrideCoverageNV = 5248, - DecorationPassthroughNV = 5250, - DecorationViewportRelativeNV = 5252, - DecorationSecondaryViewportRelativeNV = 5256, - DecorationPerPrimitiveNV = 5271, - DecorationPerViewNV = 5272, - DecorationPerTaskNV = 5273, - DecorationPerVertexNV = 5285, - DecorationNonUniform = 5300, - DecorationNonUniformEXT = 5300, - DecorationRestrictPointer = 5355, - DecorationRestrictPointerEXT = 5355, - DecorationAliasedPointer = 5356, - DecorationAliasedPointerEXT = 5356, - DecorationCounterBuffer = 5634, - DecorationHlslCounterBufferGOOGLE = 5634, - DecorationHlslSemanticGOOGLE = 5635, - DecorationUserSemantic = 5635, - DecorationUserTypeGOOGLE = 5636, - DecorationMax = 0x7fffffff, -}; - -enum BuiltIn { - BuiltInPosition = 0, - BuiltInPointSize = 1, - BuiltInClipDistance = 3, - BuiltInCullDistance = 4, - BuiltInVertexId = 5, - BuiltInInstanceId = 6, - BuiltInPrimitiveId = 7, - BuiltInInvocationId = 8, - BuiltInLayer = 9, - BuiltInViewportIndex = 10, - BuiltInTessLevelOuter = 11, - BuiltInTessLevelInner = 12, - BuiltInTessCoord = 13, - BuiltInPatchVertices = 14, - BuiltInFragCoord = 15, - BuiltInPointCoord = 16, - BuiltInFrontFacing = 17, - BuiltInSampleId = 18, - BuiltInSamplePosition = 19, - BuiltInSampleMask = 20, - BuiltInFragDepth = 22, - BuiltInHelperInvocation = 23, - BuiltInNumWorkgroups = 24, - BuiltInWorkgroupSize = 25, - BuiltInWorkgroupId = 26, - BuiltInLocalInvocationId = 27, - BuiltInGlobalInvocationId = 28, - BuiltInLocalInvocationIndex = 29, - BuiltInWorkDim = 30, - BuiltInGlobalSize = 31, - BuiltInEnqueuedWorkgroupSize = 32, - BuiltInGlobalOffset = 33, - BuiltInGlobalLinearId = 34, - BuiltInSubgroupSize = 36, - BuiltInSubgroupMaxSize = 37, - BuiltInNumSubgroups = 38, - BuiltInNumEnqueuedSubgroups = 39, - BuiltInSubgroupId = 40, - BuiltInSubgroupLocalInvocationId = 41, - BuiltInVertexIndex = 42, - BuiltInInstanceIndex = 43, - BuiltInSubgroupEqMask = 4416, - BuiltInSubgroupEqMaskKHR = 4416, - BuiltInSubgroupGeMask = 4417, - BuiltInSubgroupGeMaskKHR = 4417, - BuiltInSubgroupGtMask = 4418, - BuiltInSubgroupGtMaskKHR = 4418, - BuiltInSubgroupLeMask = 4419, - BuiltInSubgroupLeMaskKHR = 4419, - BuiltInSubgroupLtMask = 4420, - BuiltInSubgroupLtMaskKHR = 4420, - BuiltInBaseVertex = 4424, - BuiltInBaseInstance = 4425, - BuiltInDrawIndex = 4426, - BuiltInDeviceIndex = 4438, - BuiltInViewIndex = 4440, - BuiltInBaryCoordNoPerspAMD = 4992, - BuiltInBaryCoordNoPerspCentroidAMD = 4993, - BuiltInBaryCoordNoPerspSampleAMD = 4994, - BuiltInBaryCoordSmoothAMD = 4995, - BuiltInBaryCoordSmoothCentroidAMD = 4996, - BuiltInBaryCoordSmoothSampleAMD = 4997, - BuiltInBaryCoordPullModelAMD = 4998, - BuiltInFragStencilRefEXT = 5014, - BuiltInViewportMaskNV = 5253, - BuiltInSecondaryPositionNV = 5257, - BuiltInSecondaryViewportMaskNV = 5258, - BuiltInPositionPerViewNV = 5261, - BuiltInViewportMaskPerViewNV = 5262, - BuiltInFullyCoveredEXT = 5264, - BuiltInTaskCountNV = 5274, - BuiltInPrimitiveCountNV = 5275, - BuiltInPrimitiveIndicesNV = 5276, - BuiltInClipDistancePerViewNV = 5277, - BuiltInCullDistancePerViewNV = 5278, - BuiltInLayerPerViewNV = 5279, - BuiltInMeshViewCountNV = 5280, - BuiltInMeshViewIndicesNV = 5281, - BuiltInBaryCoordNV = 5286, - BuiltInBaryCoordNoPerspNV = 5287, - BuiltInFragSizeEXT = 5292, - BuiltInFragmentSizeNV = 5292, - BuiltInFragInvocationCountEXT = 5293, - BuiltInInvocationsPerPixelNV = 5293, - BuiltInLaunchIdNV = 5319, - BuiltInLaunchSizeNV = 5320, - BuiltInWorldRayOriginNV = 5321, - BuiltInWorldRayDirectionNV = 5322, - BuiltInObjectRayOriginNV = 5323, - BuiltInObjectRayDirectionNV = 5324, - BuiltInRayTminNV = 5325, - BuiltInRayTmaxNV = 5326, - BuiltInInstanceCustomIndexNV = 5327, - BuiltInObjectToWorldNV = 5330, - BuiltInWorldToObjectNV = 5331, - BuiltInHitTNV = 5332, - BuiltInHitKindNV = 5333, - BuiltInIncomingRayFlagsNV = 5351, - BuiltInWarpsPerSMNV = 5374, - BuiltInSMCountNV = 5375, - BuiltInWarpIDNV = 5376, - BuiltInSMIDNV = 5377, - BuiltInMax = 0x7fffffff, -}; - -enum SelectionControlShift { - SelectionControlFlattenShift = 0, - SelectionControlDontFlattenShift = 1, - SelectionControlMax = 0x7fffffff, -}; - -enum SelectionControlMask { - SelectionControlMaskNone = 0, - SelectionControlFlattenMask = 0x00000001, - SelectionControlDontFlattenMask = 0x00000002, -}; - -enum LoopControlShift { - LoopControlUnrollShift = 0, - LoopControlDontUnrollShift = 1, - LoopControlDependencyInfiniteShift = 2, - LoopControlDependencyLengthShift = 3, - LoopControlMinIterationsShift = 4, - LoopControlMaxIterationsShift = 5, - LoopControlIterationMultipleShift = 6, - LoopControlPeelCountShift = 7, - LoopControlPartialCountShift = 8, - LoopControlMax = 0x7fffffff, -}; - -enum LoopControlMask { - LoopControlMaskNone = 0, - LoopControlUnrollMask = 0x00000001, - LoopControlDontUnrollMask = 0x00000002, - LoopControlDependencyInfiniteMask = 0x00000004, - LoopControlDependencyLengthMask = 0x00000008, - LoopControlMinIterationsMask = 0x00000010, - LoopControlMaxIterationsMask = 0x00000020, - LoopControlIterationMultipleMask = 0x00000040, - LoopControlPeelCountMask = 0x00000080, - LoopControlPartialCountMask = 0x00000100, -}; - -enum FunctionControlShift { - FunctionControlInlineShift = 0, - FunctionControlDontInlineShift = 1, - FunctionControlPureShift = 2, - FunctionControlConstShift = 3, - FunctionControlMax = 0x7fffffff, -}; - -enum FunctionControlMask { - FunctionControlMaskNone = 0, - FunctionControlInlineMask = 0x00000001, - FunctionControlDontInlineMask = 0x00000002, - FunctionControlPureMask = 0x00000004, - FunctionControlConstMask = 0x00000008, -}; - -enum MemorySemanticsShift { - MemorySemanticsAcquireShift = 1, - MemorySemanticsReleaseShift = 2, - MemorySemanticsAcquireReleaseShift = 3, - MemorySemanticsSequentiallyConsistentShift = 4, - MemorySemanticsUniformMemoryShift = 6, - MemorySemanticsSubgroupMemoryShift = 7, - MemorySemanticsWorkgroupMemoryShift = 8, - MemorySemanticsCrossWorkgroupMemoryShift = 9, - MemorySemanticsAtomicCounterMemoryShift = 10, - MemorySemanticsImageMemoryShift = 11, - MemorySemanticsOutputMemoryShift = 12, - MemorySemanticsOutputMemoryKHRShift = 12, - MemorySemanticsMakeAvailableShift = 13, - MemorySemanticsMakeAvailableKHRShift = 13, - MemorySemanticsMakeVisibleShift = 14, - MemorySemanticsMakeVisibleKHRShift = 14, - MemorySemanticsVolatileShift = 15, - MemorySemanticsMax = 0x7fffffff, -}; - -enum MemorySemanticsMask { - MemorySemanticsMaskNone = 0, - MemorySemanticsAcquireMask = 0x00000002, - MemorySemanticsReleaseMask = 0x00000004, - MemorySemanticsAcquireReleaseMask = 0x00000008, - MemorySemanticsSequentiallyConsistentMask = 0x00000010, - MemorySemanticsUniformMemoryMask = 0x00000040, - MemorySemanticsSubgroupMemoryMask = 0x00000080, - MemorySemanticsWorkgroupMemoryMask = 0x00000100, - MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200, - MemorySemanticsAtomicCounterMemoryMask = 0x00000400, - MemorySemanticsImageMemoryMask = 0x00000800, - MemorySemanticsOutputMemoryMask = 0x00001000, - MemorySemanticsOutputMemoryKHRMask = 0x00001000, - MemorySemanticsMakeAvailableMask = 0x00002000, - MemorySemanticsMakeAvailableKHRMask = 0x00002000, - MemorySemanticsMakeVisibleMask = 0x00004000, - MemorySemanticsMakeVisibleKHRMask = 0x00004000, - MemorySemanticsVolatileMask = 0x00008000, -}; - -enum MemoryAccessShift { - MemoryAccessVolatileShift = 0, - MemoryAccessAlignedShift = 1, - MemoryAccessNontemporalShift = 2, - MemoryAccessMakePointerAvailableShift = 3, - MemoryAccessMakePointerAvailableKHRShift = 3, - MemoryAccessMakePointerVisibleShift = 4, - MemoryAccessMakePointerVisibleKHRShift = 4, - MemoryAccessNonPrivatePointerShift = 5, - MemoryAccessNonPrivatePointerKHRShift = 5, - MemoryAccessMax = 0x7fffffff, -}; - -enum MemoryAccessMask { - MemoryAccessMaskNone = 0, - MemoryAccessVolatileMask = 0x00000001, - MemoryAccessAlignedMask = 0x00000002, - MemoryAccessNontemporalMask = 0x00000004, - MemoryAccessMakePointerAvailableMask = 0x00000008, - MemoryAccessMakePointerAvailableKHRMask = 0x00000008, - MemoryAccessMakePointerVisibleMask = 0x00000010, - MemoryAccessMakePointerVisibleKHRMask = 0x00000010, - MemoryAccessNonPrivatePointerMask = 0x00000020, - MemoryAccessNonPrivatePointerKHRMask = 0x00000020, -}; - -enum Scope { - ScopeCrossDevice = 0, - ScopeDevice = 1, - ScopeWorkgroup = 2, - ScopeSubgroup = 3, - ScopeInvocation = 4, - ScopeQueueFamily = 5, - ScopeQueueFamilyKHR = 5, - ScopeMax = 0x7fffffff, -}; - -enum GroupOperation { - GroupOperationReduce = 0, - GroupOperationInclusiveScan = 1, - GroupOperationExclusiveScan = 2, - GroupOperationClusteredReduce = 3, - GroupOperationPartitionedReduceNV = 6, - GroupOperationPartitionedInclusiveScanNV = 7, - GroupOperationPartitionedExclusiveScanNV = 8, - GroupOperationMax = 0x7fffffff, -}; - -enum KernelEnqueueFlags { - KernelEnqueueFlagsNoWait = 0, - KernelEnqueueFlagsWaitKernel = 1, - KernelEnqueueFlagsWaitWorkGroup = 2, - KernelEnqueueFlagsMax = 0x7fffffff, -}; - -enum KernelProfilingInfoShift { - KernelProfilingInfoCmdExecTimeShift = 0, - KernelProfilingInfoMax = 0x7fffffff, -}; - -enum KernelProfilingInfoMask { - KernelProfilingInfoMaskNone = 0, - KernelProfilingInfoCmdExecTimeMask = 0x00000001, -}; - -enum Capability { - CapabilityMatrix = 0, - CapabilityShader = 1, - CapabilityGeometry = 2, - CapabilityTessellation = 3, - CapabilityAddresses = 4, - CapabilityLinkage = 5, - CapabilityKernel = 6, - CapabilityVector16 = 7, - CapabilityFloat16Buffer = 8, - CapabilityFloat16 = 9, - CapabilityFloat64 = 10, - CapabilityInt64 = 11, - CapabilityInt64Atomics = 12, - CapabilityImageBasic = 13, - CapabilityImageReadWrite = 14, - CapabilityImageMipmap = 15, - CapabilityPipes = 17, - CapabilityGroups = 18, - CapabilityDeviceEnqueue = 19, - CapabilityLiteralSampler = 20, - CapabilityAtomicStorage = 21, - CapabilityInt16 = 22, - CapabilityTessellationPointSize = 23, - CapabilityGeometryPointSize = 24, - CapabilityImageGatherExtended = 25, - CapabilityStorageImageMultisample = 27, - CapabilityUniformBufferArrayDynamicIndexing = 28, - CapabilitySampledImageArrayDynamicIndexing = 29, - CapabilityStorageBufferArrayDynamicIndexing = 30, - CapabilityStorageImageArrayDynamicIndexing = 31, - CapabilityClipDistance = 32, - CapabilityCullDistance = 33, - CapabilityImageCubeArray = 34, - CapabilitySampleRateShading = 35, - CapabilityImageRect = 36, - CapabilitySampledRect = 37, - CapabilityGenericPointer = 38, - CapabilityInt8 = 39, - CapabilityInputAttachment = 40, - CapabilitySparseResidency = 41, - CapabilityMinLod = 42, - CapabilitySampled1D = 43, - CapabilityImage1D = 44, - CapabilitySampledCubeArray = 45, - CapabilitySampledBuffer = 46, - CapabilityImageBuffer = 47, - CapabilityImageMSArray = 48, - CapabilityStorageImageExtendedFormats = 49, - CapabilityImageQuery = 50, - CapabilityDerivativeControl = 51, - CapabilityInterpolationFunction = 52, - CapabilityTransformFeedback = 53, - CapabilityGeometryStreams = 54, - CapabilityStorageImageReadWithoutFormat = 55, - CapabilityStorageImageWriteWithoutFormat = 56, - CapabilityMultiViewport = 57, - CapabilitySubgroupDispatch = 58, - CapabilityNamedBarrier = 59, - CapabilityPipeStorage = 60, - CapabilityGroupNonUniform = 61, - CapabilityGroupNonUniformVote = 62, - CapabilityGroupNonUniformArithmetic = 63, - CapabilityGroupNonUniformBallot = 64, - CapabilityGroupNonUniformShuffle = 65, - CapabilityGroupNonUniformShuffleRelative = 66, - CapabilityGroupNonUniformClustered = 67, - CapabilityGroupNonUniformQuad = 68, - CapabilityShaderLayer = 69, - CapabilityShaderViewportIndex = 70, - CapabilitySubgroupBallotKHR = 4423, - CapabilityDrawParameters = 4427, - CapabilitySubgroupVoteKHR = 4431, - CapabilityStorageBuffer16BitAccess = 4433, - CapabilityStorageUniformBufferBlock16 = 4433, - CapabilityStorageUniform16 = 4434, - CapabilityUniformAndStorageBuffer16BitAccess = 4434, - CapabilityStoragePushConstant16 = 4435, - CapabilityStorageInputOutput16 = 4436, - CapabilityDeviceGroup = 4437, - CapabilityMultiView = 4439, - CapabilityVariablePointersStorageBuffer = 4441, - CapabilityVariablePointers = 4442, - CapabilityAtomicStorageOps = 4445, - CapabilitySampleMaskPostDepthCoverage = 4447, - CapabilityStorageBuffer8BitAccess = 4448, - CapabilityUniformAndStorageBuffer8BitAccess = 4449, - CapabilityStoragePushConstant8 = 4450, - CapabilityDenormPreserve = 4464, - CapabilityDenormFlushToZero = 4465, - CapabilitySignedZeroInfNanPreserve = 4466, - CapabilityRoundingModeRTE = 4467, - CapabilityRoundingModeRTZ = 4468, - CapabilityFloat16ImageAMD = 5008, - CapabilityImageGatherBiasLodAMD = 5009, - CapabilityFragmentMaskAMD = 5010, - CapabilityStencilExportEXT = 5013, - CapabilityImageReadWriteLodAMD = 5015, - CapabilityShaderClockKHR = 5055, - CapabilitySampleMaskOverrideCoverageNV = 5249, - CapabilityGeometryShaderPassthroughNV = 5251, - CapabilityShaderViewportIndexLayerEXT = 5254, - CapabilityShaderViewportIndexLayerNV = 5254, - CapabilityShaderViewportMaskNV = 5255, - CapabilityShaderStereoViewNV = 5259, - CapabilityPerViewAttributesNV = 5260, - CapabilityFragmentFullyCoveredEXT = 5265, - CapabilityMeshShadingNV = 5266, - CapabilityImageFootprintNV = 5282, - CapabilityFragmentBarycentricNV = 5284, - CapabilityComputeDerivativeGroupQuadsNV = 5288, - CapabilityFragmentDensityEXT = 5291, - CapabilityShadingRateNV = 5291, - CapabilityGroupNonUniformPartitionedNV = 5297, - CapabilityShaderNonUniform = 5301, - CapabilityShaderNonUniformEXT = 5301, - CapabilityRuntimeDescriptorArray = 5302, - CapabilityRuntimeDescriptorArrayEXT = 5302, - CapabilityInputAttachmentArrayDynamicIndexing = 5303, - CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303, - CapabilityUniformTexelBufferArrayDynamicIndexing = 5304, - CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304, - CapabilityStorageTexelBufferArrayDynamicIndexing = 5305, - CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305, - CapabilityUniformBufferArrayNonUniformIndexing = 5306, - CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306, - CapabilitySampledImageArrayNonUniformIndexing = 5307, - CapabilitySampledImageArrayNonUniformIndexingEXT = 5307, - CapabilityStorageBufferArrayNonUniformIndexing = 5308, - CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308, - CapabilityStorageImageArrayNonUniformIndexing = 5309, - CapabilityStorageImageArrayNonUniformIndexingEXT = 5309, - CapabilityInputAttachmentArrayNonUniformIndexing = 5310, - CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310, - CapabilityUniformTexelBufferArrayNonUniformIndexing = 5311, - CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311, - CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312, - CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312, - CapabilityRayTracingNV = 5340, - CapabilityVulkanMemoryModel = 5345, - CapabilityVulkanMemoryModelKHR = 5345, - CapabilityVulkanMemoryModelDeviceScope = 5346, - CapabilityVulkanMemoryModelDeviceScopeKHR = 5346, - CapabilityPhysicalStorageBufferAddresses = 5347, - CapabilityPhysicalStorageBufferAddressesEXT = 5347, - CapabilityComputeDerivativeGroupLinearNV = 5350, - CapabilityCooperativeMatrixNV = 5357, - CapabilityFragmentShaderSampleInterlockEXT = 5363, - CapabilityFragmentShaderShadingRateInterlockEXT = 5372, - CapabilityShaderSMBuiltinsNV = 5373, - CapabilityFragmentShaderPixelInterlockEXT = 5378, - CapabilityDemoteToHelperInvocationEXT = 5379, - CapabilitySubgroupShuffleINTEL = 5568, - CapabilitySubgroupBufferBlockIOINTEL = 5569, - CapabilitySubgroupImageBlockIOINTEL = 5570, - CapabilitySubgroupImageMediaBlockIOINTEL = 5579, - CapabilityIntegerFunctions2INTEL = 5584, - CapabilitySubgroupAvcMotionEstimationINTEL = 5696, - CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697, - CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698, - CapabilityMax = 0x7fffffff, -}; - -enum Op { - OpNop = 0, - OpUndef = 1, - OpSourceContinued = 2, - OpSource = 3, - OpSourceExtension = 4, - OpName = 5, - OpMemberName = 6, - OpString = 7, - OpLine = 8, - OpExtension = 10, - OpExtInstImport = 11, - OpExtInst = 12, - OpMemoryModel = 14, - OpEntryPoint = 15, - OpExecutionMode = 16, - OpCapability = 17, - OpTypeVoid = 19, - OpTypeBool = 20, - OpTypeInt = 21, - OpTypeFloat = 22, - OpTypeVector = 23, - OpTypeMatrix = 24, - OpTypeImage = 25, - OpTypeSampler = 26, - OpTypeSampledImage = 27, - OpTypeArray = 28, - OpTypeRuntimeArray = 29, - OpTypeStruct = 30, - OpTypeOpaque = 31, - OpTypePointer = 32, - OpTypeFunction = 33, - OpTypeEvent = 34, - OpTypeDeviceEvent = 35, - OpTypeReserveId = 36, - OpTypeQueue = 37, - OpTypePipe = 38, - OpTypeForwardPointer = 39, - OpConstantTrue = 41, - OpConstantFalse = 42, - OpConstant = 43, - OpConstantComposite = 44, - OpConstantSampler = 45, - OpConstantNull = 46, - OpSpecConstantTrue = 48, - OpSpecConstantFalse = 49, - OpSpecConstant = 50, - OpSpecConstantComposite = 51, - OpSpecConstantOp = 52, - OpFunction = 54, - OpFunctionParameter = 55, - OpFunctionEnd = 56, - OpFunctionCall = 57, - OpVariable = 59, - OpImageTexelPointer = 60, - OpLoad = 61, - OpStore = 62, - OpCopyMemory = 63, - OpCopyMemorySized = 64, - OpAccessChain = 65, - OpInBoundsAccessChain = 66, - OpPtrAccessChain = 67, - OpArrayLength = 68, - OpGenericPtrMemSemantics = 69, - OpInBoundsPtrAccessChain = 70, - OpDecorate = 71, - OpMemberDecorate = 72, - OpDecorationGroup = 73, - OpGroupDecorate = 74, - OpGroupMemberDecorate = 75, - OpVectorExtractDynamic = 77, - OpVectorInsertDynamic = 78, - OpVectorShuffle = 79, - OpCompositeConstruct = 80, - OpCompositeExtract = 81, - OpCompositeInsert = 82, - OpCopyObject = 83, - OpTranspose = 84, - OpSampledImage = 86, - OpImageSampleImplicitLod = 87, - OpImageSampleExplicitLod = 88, - OpImageSampleDrefImplicitLod = 89, - OpImageSampleDrefExplicitLod = 90, - OpImageSampleProjImplicitLod = 91, - OpImageSampleProjExplicitLod = 92, - OpImageSampleProjDrefImplicitLod = 93, - OpImageSampleProjDrefExplicitLod = 94, - OpImageFetch = 95, - OpImageGather = 96, - OpImageDrefGather = 97, - OpImageRead = 98, - OpImageWrite = 99, - OpImage = 100, - OpImageQueryFormat = 101, - OpImageQueryOrder = 102, - OpImageQuerySizeLod = 103, - OpImageQuerySize = 104, - OpImageQueryLod = 105, - OpImageQueryLevels = 106, - OpImageQuerySamples = 107, - OpConvertFToU = 109, - OpConvertFToS = 110, - OpConvertSToF = 111, - OpConvertUToF = 112, - OpUConvert = 113, - OpSConvert = 114, - OpFConvert = 115, - OpQuantizeToF16 = 116, - OpConvertPtrToU = 117, - OpSatConvertSToU = 118, - OpSatConvertUToS = 119, - OpConvertUToPtr = 120, - OpPtrCastToGeneric = 121, - OpGenericCastToPtr = 122, - OpGenericCastToPtrExplicit = 123, - OpBitcast = 124, - OpSNegate = 126, - OpFNegate = 127, - OpIAdd = 128, - OpFAdd = 129, - OpISub = 130, - OpFSub = 131, - OpIMul = 132, - OpFMul = 133, - OpUDiv = 134, - OpSDiv = 135, - OpFDiv = 136, - OpUMod = 137, - OpSRem = 138, - OpSMod = 139, - OpFRem = 140, - OpFMod = 141, - OpVectorTimesScalar = 142, - OpMatrixTimesScalar = 143, - OpVectorTimesMatrix = 144, - OpMatrixTimesVector = 145, - OpMatrixTimesMatrix = 146, - OpOuterProduct = 147, - OpDot = 148, - OpIAddCarry = 149, - OpISubBorrow = 150, - OpUMulExtended = 151, - OpSMulExtended = 152, - OpAny = 154, - OpAll = 155, - OpIsNan = 156, - OpIsInf = 157, - OpIsFinite = 158, - OpIsNormal = 159, - OpSignBitSet = 160, - OpLessOrGreater = 161, - OpOrdered = 162, - OpUnordered = 163, - OpLogicalEqual = 164, - OpLogicalNotEqual = 165, - OpLogicalOr = 166, - OpLogicalAnd = 167, - OpLogicalNot = 168, - OpSelect = 169, - OpIEqual = 170, - OpINotEqual = 171, - OpUGreaterThan = 172, - OpSGreaterThan = 173, - OpUGreaterThanEqual = 174, - OpSGreaterThanEqual = 175, - OpULessThan = 176, - OpSLessThan = 177, - OpULessThanEqual = 178, - OpSLessThanEqual = 179, - OpFOrdEqual = 180, - OpFUnordEqual = 181, - OpFOrdNotEqual = 182, - OpFUnordNotEqual = 183, - OpFOrdLessThan = 184, - OpFUnordLessThan = 185, - OpFOrdGreaterThan = 186, - OpFUnordGreaterThan = 187, - OpFOrdLessThanEqual = 188, - OpFUnordLessThanEqual = 189, - OpFOrdGreaterThanEqual = 190, - OpFUnordGreaterThanEqual = 191, - OpShiftRightLogical = 194, - OpShiftRightArithmetic = 195, - OpShiftLeftLogical = 196, - OpBitwiseOr = 197, - OpBitwiseXor = 198, - OpBitwiseAnd = 199, - OpNot = 200, - OpBitFieldInsert = 201, - OpBitFieldSExtract = 202, - OpBitFieldUExtract = 203, - OpBitReverse = 204, - OpBitCount = 205, - OpDPdx = 207, - OpDPdy = 208, - OpFwidth = 209, - OpDPdxFine = 210, - OpDPdyFine = 211, - OpFwidthFine = 212, - OpDPdxCoarse = 213, - OpDPdyCoarse = 214, - OpFwidthCoarse = 215, - OpEmitVertex = 218, - OpEndPrimitive = 219, - OpEmitStreamVertex = 220, - OpEndStreamPrimitive = 221, - OpControlBarrier = 224, - OpMemoryBarrier = 225, - OpAtomicLoad = 227, - OpAtomicStore = 228, - OpAtomicExchange = 229, - OpAtomicCompareExchange = 230, - OpAtomicCompareExchangeWeak = 231, - OpAtomicIIncrement = 232, - OpAtomicIDecrement = 233, - OpAtomicIAdd = 234, - OpAtomicISub = 235, - OpAtomicSMin = 236, - OpAtomicUMin = 237, - OpAtomicSMax = 238, - OpAtomicUMax = 239, - OpAtomicAnd = 240, - OpAtomicOr = 241, - OpAtomicXor = 242, - OpPhi = 245, - OpLoopMerge = 246, - OpSelectionMerge = 247, - OpLabel = 248, - OpBranch = 249, - OpBranchConditional = 250, - OpSwitch = 251, - OpKill = 252, - OpReturn = 253, - OpReturnValue = 254, - OpUnreachable = 255, - OpLifetimeStart = 256, - OpLifetimeStop = 257, - OpGroupAsyncCopy = 259, - OpGroupWaitEvents = 260, - OpGroupAll = 261, - OpGroupAny = 262, - OpGroupBroadcast = 263, - OpGroupIAdd = 264, - OpGroupFAdd = 265, - OpGroupFMin = 266, - OpGroupUMin = 267, - OpGroupSMin = 268, - OpGroupFMax = 269, - OpGroupUMax = 270, - OpGroupSMax = 271, - OpReadPipe = 274, - OpWritePipe = 275, - OpReservedReadPipe = 276, - OpReservedWritePipe = 277, - OpReserveReadPipePackets = 278, - OpReserveWritePipePackets = 279, - OpCommitReadPipe = 280, - OpCommitWritePipe = 281, - OpIsValidReserveId = 282, - OpGetNumPipePackets = 283, - OpGetMaxPipePackets = 284, - OpGroupReserveReadPipePackets = 285, - OpGroupReserveWritePipePackets = 286, - OpGroupCommitReadPipe = 287, - OpGroupCommitWritePipe = 288, - OpEnqueueMarker = 291, - OpEnqueueKernel = 292, - OpGetKernelNDrangeSubGroupCount = 293, - OpGetKernelNDrangeMaxSubGroupSize = 294, - OpGetKernelWorkGroupSize = 295, - OpGetKernelPreferredWorkGroupSizeMultiple = 296, - OpRetainEvent = 297, - OpReleaseEvent = 298, - OpCreateUserEvent = 299, - OpIsValidEvent = 300, - OpSetUserEventStatus = 301, - OpCaptureEventProfilingInfo = 302, - OpGetDefaultQueue = 303, - OpBuildNDRange = 304, - OpImageSparseSampleImplicitLod = 305, - OpImageSparseSampleExplicitLod = 306, - OpImageSparseSampleDrefImplicitLod = 307, - OpImageSparseSampleDrefExplicitLod = 308, - OpImageSparseSampleProjImplicitLod = 309, - OpImageSparseSampleProjExplicitLod = 310, - OpImageSparseSampleProjDrefImplicitLod = 311, - OpImageSparseSampleProjDrefExplicitLod = 312, - OpImageSparseFetch = 313, - OpImageSparseGather = 314, - OpImageSparseDrefGather = 315, - OpImageSparseTexelsResident = 316, - OpNoLine = 317, - OpAtomicFlagTestAndSet = 318, - OpAtomicFlagClear = 319, - OpImageSparseRead = 320, - OpSizeOf = 321, - OpTypePipeStorage = 322, - OpConstantPipeStorage = 323, - OpCreatePipeFromPipeStorage = 324, - OpGetKernelLocalSizeForSubgroupCount = 325, - OpGetKernelMaxNumSubgroups = 326, - OpTypeNamedBarrier = 327, - OpNamedBarrierInitialize = 328, - OpMemoryNamedBarrier = 329, - OpModuleProcessed = 330, - OpExecutionModeId = 331, - OpDecorateId = 332, - OpGroupNonUniformElect = 333, - OpGroupNonUniformAll = 334, - OpGroupNonUniformAny = 335, - OpGroupNonUniformAllEqual = 336, - OpGroupNonUniformBroadcast = 337, - OpGroupNonUniformBroadcastFirst = 338, - OpGroupNonUniformBallot = 339, - OpGroupNonUniformInverseBallot = 340, - OpGroupNonUniformBallotBitExtract = 341, - OpGroupNonUniformBallotBitCount = 342, - OpGroupNonUniformBallotFindLSB = 343, - OpGroupNonUniformBallotFindMSB = 344, - OpGroupNonUniformShuffle = 345, - OpGroupNonUniformShuffleXor = 346, - OpGroupNonUniformShuffleUp = 347, - OpGroupNonUniformShuffleDown = 348, - OpGroupNonUniformIAdd = 349, - OpGroupNonUniformFAdd = 350, - OpGroupNonUniformIMul = 351, - OpGroupNonUniformFMul = 352, - OpGroupNonUniformSMin = 353, - OpGroupNonUniformUMin = 354, - OpGroupNonUniformFMin = 355, - OpGroupNonUniformSMax = 356, - OpGroupNonUniformUMax = 357, - OpGroupNonUniformFMax = 358, - OpGroupNonUniformBitwiseAnd = 359, - OpGroupNonUniformBitwiseOr = 360, - OpGroupNonUniformBitwiseXor = 361, - OpGroupNonUniformLogicalAnd = 362, - OpGroupNonUniformLogicalOr = 363, - OpGroupNonUniformLogicalXor = 364, - OpGroupNonUniformQuadBroadcast = 365, - OpGroupNonUniformQuadSwap = 366, - OpCopyLogical = 400, - OpPtrEqual = 401, - OpPtrNotEqual = 402, - OpPtrDiff = 403, - OpSubgroupBallotKHR = 4421, - OpSubgroupFirstInvocationKHR = 4422, - OpSubgroupAllKHR = 4428, - OpSubgroupAnyKHR = 4429, - OpSubgroupAllEqualKHR = 4430, - OpSubgroupReadInvocationKHR = 4432, - OpGroupIAddNonUniformAMD = 5000, - OpGroupFAddNonUniformAMD = 5001, - OpGroupFMinNonUniformAMD = 5002, - OpGroupUMinNonUniformAMD = 5003, - OpGroupSMinNonUniformAMD = 5004, - OpGroupFMaxNonUniformAMD = 5005, - OpGroupUMaxNonUniformAMD = 5006, - OpGroupSMaxNonUniformAMD = 5007, - OpFragmentMaskFetchAMD = 5011, - OpFragmentFetchAMD = 5012, - OpReadClockKHR = 5056, - OpImageSampleFootprintNV = 5283, - OpGroupNonUniformPartitionNV = 5296, - OpWritePackedPrimitiveIndices4x8NV = 5299, - OpReportIntersectionNV = 5334, - OpIgnoreIntersectionNV = 5335, - OpTerminateRayNV = 5336, - OpTraceNV = 5337, - OpTypeAccelerationStructureNV = 5341, - OpExecuteCallableNV = 5344, - OpTypeCooperativeMatrixNV = 5358, - OpCooperativeMatrixLoadNV = 5359, - OpCooperativeMatrixStoreNV = 5360, - OpCooperativeMatrixMulAddNV = 5361, - OpCooperativeMatrixLengthNV = 5362, - OpBeginInvocationInterlockEXT = 5364, - OpEndInvocationInterlockEXT = 5365, - OpDemoteToHelperInvocationEXT = 5380, - OpIsHelperInvocationEXT = 5381, - OpSubgroupShuffleINTEL = 5571, - OpSubgroupShuffleDownINTEL = 5572, - OpSubgroupShuffleUpINTEL = 5573, - OpSubgroupShuffleXorINTEL = 5574, - OpSubgroupBlockReadINTEL = 5575, - OpSubgroupBlockWriteINTEL = 5576, - OpSubgroupImageBlockReadINTEL = 5577, - OpSubgroupImageBlockWriteINTEL = 5578, - OpSubgroupImageMediaBlockReadINTEL = 5580, - OpSubgroupImageMediaBlockWriteINTEL = 5581, - OpUCountLeadingZerosINTEL = 5585, - OpUCountTrailingZerosINTEL = 5586, - OpAbsISubINTEL = 5587, - OpAbsUSubINTEL = 5588, - OpIAddSatINTEL = 5589, - OpUAddSatINTEL = 5590, - OpIAverageINTEL = 5591, - OpUAverageINTEL = 5592, - OpIAverageRoundedINTEL = 5593, - OpUAverageRoundedINTEL = 5594, - OpISubSatINTEL = 5595, - OpUSubSatINTEL = 5596, - OpIMul32x16INTEL = 5597, - OpUMul32x16INTEL = 5598, - OpDecorateString = 5632, - OpDecorateStringGOOGLE = 5632, - OpMemberDecorateString = 5633, - OpMemberDecorateStringGOOGLE = 5633, - OpVmeImageINTEL = 5699, - OpTypeVmeImageINTEL = 5700, - OpTypeAvcImePayloadINTEL = 5701, - OpTypeAvcRefPayloadINTEL = 5702, - OpTypeAvcSicPayloadINTEL = 5703, - OpTypeAvcMcePayloadINTEL = 5704, - OpTypeAvcMceResultINTEL = 5705, - OpTypeAvcImeResultINTEL = 5706, - OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707, - OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708, - OpTypeAvcImeSingleReferenceStreaminINTEL = 5709, - OpTypeAvcImeDualReferenceStreaminINTEL = 5710, - OpTypeAvcRefResultINTEL = 5711, - OpTypeAvcSicResultINTEL = 5712, - OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713, - OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714, - OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715, - OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716, - OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717, - OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718, - OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719, - OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720, - OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721, - OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722, - OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723, - OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724, - OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725, - OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726, - OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727, - OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728, - OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729, - OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730, - OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731, - OpSubgroupAvcMceConvertToImePayloadINTEL = 5732, - OpSubgroupAvcMceConvertToImeResultINTEL = 5733, - OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734, - OpSubgroupAvcMceConvertToRefResultINTEL = 5735, - OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736, - OpSubgroupAvcMceConvertToSicResultINTEL = 5737, - OpSubgroupAvcMceGetMotionVectorsINTEL = 5738, - OpSubgroupAvcMceGetInterDistortionsINTEL = 5739, - OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740, - OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741, - OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742, - OpSubgroupAvcMceGetInterDirectionsINTEL = 5743, - OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744, - OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745, - OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746, - OpSubgroupAvcImeInitializeINTEL = 5747, - OpSubgroupAvcImeSetSingleReferenceINTEL = 5748, - OpSubgroupAvcImeSetDualReferenceINTEL = 5749, - OpSubgroupAvcImeRefWindowSizeINTEL = 5750, - OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751, - OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752, - OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753, - OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754, - OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755, - OpSubgroupAvcImeSetWeightedSadINTEL = 5756, - OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757, - OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758, - OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759, - OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760, - OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761, - OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762, - OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763, - OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764, - OpSubgroupAvcImeConvertToMceResultINTEL = 5765, - OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766, - OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767, - OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768, - OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769, - OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770, - OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771, - OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772, - OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773, - OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774, - OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775, - OpSubgroupAvcImeGetBorderReachedINTEL = 5776, - OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777, - OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778, - OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779, - OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780, - OpSubgroupAvcFmeInitializeINTEL = 5781, - OpSubgroupAvcBmeInitializeINTEL = 5782, - OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783, - OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784, - OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785, - OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786, - OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787, - OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788, - OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789, - OpSubgroupAvcRefConvertToMceResultINTEL = 5790, - OpSubgroupAvcSicInitializeINTEL = 5791, - OpSubgroupAvcSicConfigureSkcINTEL = 5792, - OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793, - OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794, - OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795, - OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796, - OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797, - OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798, - OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799, - OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800, - OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801, - OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802, - OpSubgroupAvcSicEvaluateIpeINTEL = 5803, - OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804, - OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805, - OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806, - OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807, - OpSubgroupAvcSicConvertToMceResultINTEL = 5808, - OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809, - OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810, - OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811, - OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812, - OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813, - OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814, - OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815, - OpSubgroupAvcSicGetInterRawSadsINTEL = 5816, - OpMax = 0x7fffffff, -}; - -#ifdef SPV_ENABLE_UTILITY_CODE -inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { - *hasResult = *hasResultType = false; - switch (opcode) { - default: /* unknown opcode */ break; - case OpNop: *hasResult = false; *hasResultType = false; break; - case OpUndef: *hasResult = true; *hasResultType = true; break; - case OpSourceContinued: *hasResult = false; *hasResultType = false; break; - case OpSource: *hasResult = false; *hasResultType = false; break; - case OpSourceExtension: *hasResult = false; *hasResultType = false; break; - case OpName: *hasResult = false; *hasResultType = false; break; - case OpMemberName: *hasResult = false; *hasResultType = false; break; - case OpString: *hasResult = true; *hasResultType = false; break; - case OpLine: *hasResult = false; *hasResultType = false; break; - case OpExtension: *hasResult = false; *hasResultType = false; break; - case OpExtInstImport: *hasResult = true; *hasResultType = false; break; - case OpExtInst: *hasResult = true; *hasResultType = true; break; - case OpMemoryModel: *hasResult = false; *hasResultType = false; break; - case OpEntryPoint: *hasResult = false; *hasResultType = false; break; - case OpExecutionMode: *hasResult = false; *hasResultType = false; break; - case OpCapability: *hasResult = false; *hasResultType = false; break; - case OpTypeVoid: *hasResult = true; *hasResultType = false; break; - case OpTypeBool: *hasResult = true; *hasResultType = false; break; - case OpTypeInt: *hasResult = true; *hasResultType = false; break; - case OpTypeFloat: *hasResult = true; *hasResultType = false; break; - case OpTypeVector: *hasResult = true; *hasResultType = false; break; - case OpTypeMatrix: *hasResult = true; *hasResultType = false; break; - case OpTypeImage: *hasResult = true; *hasResultType = false; break; - case OpTypeSampler: *hasResult = true; *hasResultType = false; break; - case OpTypeSampledImage: *hasResult = true; *hasResultType = false; break; - case OpTypeArray: *hasResult = true; *hasResultType = false; break; - case OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break; - case OpTypeStruct: *hasResult = true; *hasResultType = false; break; - case OpTypeOpaque: *hasResult = true; *hasResultType = false; break; - case OpTypePointer: *hasResult = true; *hasResultType = false; break; - case OpTypeFunction: *hasResult = true; *hasResultType = false; break; - case OpTypeEvent: *hasResult = true; *hasResultType = false; break; - case OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break; - case OpTypeReserveId: *hasResult = true; *hasResultType = false; break; - case OpTypeQueue: *hasResult = true; *hasResultType = false; break; - case OpTypePipe: *hasResult = true; *hasResultType = false; break; - case OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break; - case OpConstantTrue: *hasResult = true; *hasResultType = true; break; - case OpConstantFalse: *hasResult = true; *hasResultType = true; break; - case OpConstant: *hasResult = true; *hasResultType = true; break; - case OpConstantComposite: *hasResult = true; *hasResultType = true; break; - case OpConstantSampler: *hasResult = true; *hasResultType = true; break; - case OpConstantNull: *hasResult = true; *hasResultType = true; break; - case OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break; - case OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break; - case OpSpecConstant: *hasResult = true; *hasResultType = true; break; - case OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break; - case OpSpecConstantOp: *hasResult = true; *hasResultType = true; break; - case OpFunction: *hasResult = true; *hasResultType = true; break; - case OpFunctionParameter: *hasResult = true; *hasResultType = true; break; - case OpFunctionEnd: *hasResult = false; *hasResultType = false; break; - case OpFunctionCall: *hasResult = true; *hasResultType = true; break; - case OpVariable: *hasResult = true; *hasResultType = true; break; - case OpImageTexelPointer: *hasResult = true; *hasResultType = true; break; - case OpLoad: *hasResult = true; *hasResultType = true; break; - case OpStore: *hasResult = false; *hasResultType = false; break; - case OpCopyMemory: *hasResult = false; *hasResultType = false; break; - case OpCopyMemorySized: *hasResult = false; *hasResultType = false; break; - case OpAccessChain: *hasResult = true; *hasResultType = true; break; - case OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break; - case OpPtrAccessChain: *hasResult = true; *hasResultType = true; break; - case OpArrayLength: *hasResult = true; *hasResultType = true; break; - case OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break; - case OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break; - case OpDecorate: *hasResult = false; *hasResultType = false; break; - case OpMemberDecorate: *hasResult = false; *hasResultType = false; break; - case OpDecorationGroup: *hasResult = true; *hasResultType = false; break; - case OpGroupDecorate: *hasResult = false; *hasResultType = false; break; - case OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break; - case OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break; - case OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break; - case OpVectorShuffle: *hasResult = true; *hasResultType = true; break; - case OpCompositeConstruct: *hasResult = true; *hasResultType = true; break; - case OpCompositeExtract: *hasResult = true; *hasResultType = true; break; - case OpCompositeInsert: *hasResult = true; *hasResultType = true; break; - case OpCopyObject: *hasResult = true; *hasResultType = true; break; - case OpTranspose: *hasResult = true; *hasResultType = true; break; - case OpSampledImage: *hasResult = true; *hasResultType = true; break; - case OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageFetch: *hasResult = true; *hasResultType = true; break; - case OpImageGather: *hasResult = true; *hasResultType = true; break; - case OpImageDrefGather: *hasResult = true; *hasResultType = true; break; - case OpImageRead: *hasResult = true; *hasResultType = true; break; - case OpImageWrite: *hasResult = false; *hasResultType = false; break; - case OpImage: *hasResult = true; *hasResultType = true; break; - case OpImageQueryFormat: *hasResult = true; *hasResultType = true; break; - case OpImageQueryOrder: *hasResult = true; *hasResultType = true; break; - case OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break; - case OpImageQuerySize: *hasResult = true; *hasResultType = true; break; - case OpImageQueryLod: *hasResult = true; *hasResultType = true; break; - case OpImageQueryLevels: *hasResult = true; *hasResultType = true; break; - case OpImageQuerySamples: *hasResult = true; *hasResultType = true; break; - case OpConvertFToU: *hasResult = true; *hasResultType = true; break; - case OpConvertFToS: *hasResult = true; *hasResultType = true; break; - case OpConvertSToF: *hasResult = true; *hasResultType = true; break; - case OpConvertUToF: *hasResult = true; *hasResultType = true; break; - case OpUConvert: *hasResult = true; *hasResultType = true; break; - case OpSConvert: *hasResult = true; *hasResultType = true; break; - case OpFConvert: *hasResult = true; *hasResultType = true; break; - case OpQuantizeToF16: *hasResult = true; *hasResultType = true; break; - case OpConvertPtrToU: *hasResult = true; *hasResultType = true; break; - case OpSatConvertSToU: *hasResult = true; *hasResultType = true; break; - case OpSatConvertUToS: *hasResult = true; *hasResultType = true; break; - case OpConvertUToPtr: *hasResult = true; *hasResultType = true; break; - case OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break; - case OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break; - case OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break; - case OpBitcast: *hasResult = true; *hasResultType = true; break; - case OpSNegate: *hasResult = true; *hasResultType = true; break; - case OpFNegate: *hasResult = true; *hasResultType = true; break; - case OpIAdd: *hasResult = true; *hasResultType = true; break; - case OpFAdd: *hasResult = true; *hasResultType = true; break; - case OpISub: *hasResult = true; *hasResultType = true; break; - case OpFSub: *hasResult = true; *hasResultType = true; break; - case OpIMul: *hasResult = true; *hasResultType = true; break; - case OpFMul: *hasResult = true; *hasResultType = true; break; - case OpUDiv: *hasResult = true; *hasResultType = true; break; - case OpSDiv: *hasResult = true; *hasResultType = true; break; - case OpFDiv: *hasResult = true; *hasResultType = true; break; - case OpUMod: *hasResult = true; *hasResultType = true; break; - case OpSRem: *hasResult = true; *hasResultType = true; break; - case OpSMod: *hasResult = true; *hasResultType = true; break; - case OpFRem: *hasResult = true; *hasResultType = true; break; - case OpFMod: *hasResult = true; *hasResultType = true; break; - case OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break; - case OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break; - case OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break; - case OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break; - case OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break; - case OpOuterProduct: *hasResult = true; *hasResultType = true; break; - case OpDot: *hasResult = true; *hasResultType = true; break; - case OpIAddCarry: *hasResult = true; *hasResultType = true; break; - case OpISubBorrow: *hasResult = true; *hasResultType = true; break; - case OpUMulExtended: *hasResult = true; *hasResultType = true; break; - case OpSMulExtended: *hasResult = true; *hasResultType = true; break; - case OpAny: *hasResult = true; *hasResultType = true; break; - case OpAll: *hasResult = true; *hasResultType = true; break; - case OpIsNan: *hasResult = true; *hasResultType = true; break; - case OpIsInf: *hasResult = true; *hasResultType = true; break; - case OpIsFinite: *hasResult = true; *hasResultType = true; break; - case OpIsNormal: *hasResult = true; *hasResultType = true; break; - case OpSignBitSet: *hasResult = true; *hasResultType = true; break; - case OpLessOrGreater: *hasResult = true; *hasResultType = true; break; - case OpOrdered: *hasResult = true; *hasResultType = true; break; - case OpUnordered: *hasResult = true; *hasResultType = true; break; - case OpLogicalEqual: *hasResult = true; *hasResultType = true; break; - case OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break; - case OpLogicalOr: *hasResult = true; *hasResultType = true; break; - case OpLogicalAnd: *hasResult = true; *hasResultType = true; break; - case OpLogicalNot: *hasResult = true; *hasResultType = true; break; - case OpSelect: *hasResult = true; *hasResultType = true; break; - case OpIEqual: *hasResult = true; *hasResultType = true; break; - case OpINotEqual: *hasResult = true; *hasResultType = true; break; - case OpUGreaterThan: *hasResult = true; *hasResultType = true; break; - case OpSGreaterThan: *hasResult = true; *hasResultType = true; break; - case OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break; - case OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break; - case OpULessThan: *hasResult = true; *hasResultType = true; break; - case OpSLessThan: *hasResult = true; *hasResultType = true; break; - case OpULessThanEqual: *hasResult = true; *hasResultType = true; break; - case OpSLessThanEqual: *hasResult = true; *hasResultType = true; break; - case OpFOrdEqual: *hasResult = true; *hasResultType = true; break; - case OpFUnordEqual: *hasResult = true; *hasResultType = true; break; - case OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break; - case OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break; - case OpFOrdLessThan: *hasResult = true; *hasResultType = true; break; - case OpFUnordLessThan: *hasResult = true; *hasResultType = true; break; - case OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break; - case OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break; - case OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break; - case OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break; - case OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break; - case OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break; - case OpShiftRightLogical: *hasResult = true; *hasResultType = true; break; - case OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break; - case OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break; - case OpBitwiseOr: *hasResult = true; *hasResultType = true; break; - case OpBitwiseXor: *hasResult = true; *hasResultType = true; break; - case OpBitwiseAnd: *hasResult = true; *hasResultType = true; break; - case OpNot: *hasResult = true; *hasResultType = true; break; - case OpBitFieldInsert: *hasResult = true; *hasResultType = true; break; - case OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break; - case OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break; - case OpBitReverse: *hasResult = true; *hasResultType = true; break; - case OpBitCount: *hasResult = true; *hasResultType = true; break; - case OpDPdx: *hasResult = true; *hasResultType = true; break; - case OpDPdy: *hasResult = true; *hasResultType = true; break; - case OpFwidth: *hasResult = true; *hasResultType = true; break; - case OpDPdxFine: *hasResult = true; *hasResultType = true; break; - case OpDPdyFine: *hasResult = true; *hasResultType = true; break; - case OpFwidthFine: *hasResult = true; *hasResultType = true; break; - case OpDPdxCoarse: *hasResult = true; *hasResultType = true; break; - case OpDPdyCoarse: *hasResult = true; *hasResultType = true; break; - case OpFwidthCoarse: *hasResult = true; *hasResultType = true; break; - case OpEmitVertex: *hasResult = false; *hasResultType = false; break; - case OpEndPrimitive: *hasResult = false; *hasResultType = false; break; - case OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break; - case OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break; - case OpControlBarrier: *hasResult = false; *hasResultType = false; break; - case OpMemoryBarrier: *hasResult = false; *hasResultType = false; break; - case OpAtomicLoad: *hasResult = true; *hasResultType = true; break; - case OpAtomicStore: *hasResult = false; *hasResultType = false; break; - case OpAtomicExchange: *hasResult = true; *hasResultType = true; break; - case OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break; - case OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break; - case OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break; - case OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break; - case OpAtomicIAdd: *hasResult = true; *hasResultType = true; break; - case OpAtomicISub: *hasResult = true; *hasResultType = true; break; - case OpAtomicSMin: *hasResult = true; *hasResultType = true; break; - case OpAtomicUMin: *hasResult = true; *hasResultType = true; break; - case OpAtomicSMax: *hasResult = true; *hasResultType = true; break; - case OpAtomicUMax: *hasResult = true; *hasResultType = true; break; - case OpAtomicAnd: *hasResult = true; *hasResultType = true; break; - case OpAtomicOr: *hasResult = true; *hasResultType = true; break; - case OpAtomicXor: *hasResult = true; *hasResultType = true; break; - case OpPhi: *hasResult = true; *hasResultType = true; break; - case OpLoopMerge: *hasResult = false; *hasResultType = false; break; - case OpSelectionMerge: *hasResult = false; *hasResultType = false; break; - case OpLabel: *hasResult = true; *hasResultType = false; break; - case OpBranch: *hasResult = false; *hasResultType = false; break; - case OpBranchConditional: *hasResult = false; *hasResultType = false; break; - case OpSwitch: *hasResult = false; *hasResultType = false; break; - case OpKill: *hasResult = false; *hasResultType = false; break; - case OpReturn: *hasResult = false; *hasResultType = false; break; - case OpReturnValue: *hasResult = false; *hasResultType = false; break; - case OpUnreachable: *hasResult = false; *hasResultType = false; break; - case OpLifetimeStart: *hasResult = false; *hasResultType = false; break; - case OpLifetimeStop: *hasResult = false; *hasResultType = false; break; - case OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break; - case OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break; - case OpGroupAll: *hasResult = true; *hasResultType = true; break; - case OpGroupAny: *hasResult = true; *hasResultType = true; break; - case OpGroupBroadcast: *hasResult = true; *hasResultType = true; break; - case OpGroupIAdd: *hasResult = true; *hasResultType = true; break; - case OpGroupFAdd: *hasResult = true; *hasResultType = true; break; - case OpGroupFMin: *hasResult = true; *hasResultType = true; break; - case OpGroupUMin: *hasResult = true; *hasResultType = true; break; - case OpGroupSMin: *hasResult = true; *hasResultType = true; break; - case OpGroupFMax: *hasResult = true; *hasResultType = true; break; - case OpGroupUMax: *hasResult = true; *hasResultType = true; break; - case OpGroupSMax: *hasResult = true; *hasResultType = true; break; - case OpReadPipe: *hasResult = true; *hasResultType = true; break; - case OpWritePipe: *hasResult = true; *hasResultType = true; break; - case OpReservedReadPipe: *hasResult = true; *hasResultType = true; break; - case OpReservedWritePipe: *hasResult = true; *hasResultType = true; break; - case OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break; - case OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break; - case OpCommitReadPipe: *hasResult = false; *hasResultType = false; break; - case OpCommitWritePipe: *hasResult = false; *hasResultType = false; break; - case OpIsValidReserveId: *hasResult = true; *hasResultType = true; break; - case OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break; - case OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break; - case OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break; - case OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break; - case OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break; - case OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break; - case OpEnqueueMarker: *hasResult = true; *hasResultType = true; break; - case OpEnqueueKernel: *hasResult = true; *hasResultType = true; break; - case OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break; - case OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break; - case OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break; - case OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break; - case OpRetainEvent: *hasResult = false; *hasResultType = false; break; - case OpReleaseEvent: *hasResult = false; *hasResultType = false; break; - case OpCreateUserEvent: *hasResult = true; *hasResultType = true; break; - case OpIsValidEvent: *hasResult = true; *hasResultType = true; break; - case OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break; - case OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break; - case OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break; - case OpBuildNDRange: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseFetch: *hasResult = true; *hasResultType = true; break; - case OpImageSparseGather: *hasResult = true; *hasResultType = true; break; - case OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break; - case OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break; - case OpNoLine: *hasResult = false; *hasResultType = false; break; - case OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break; - case OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break; - case OpImageSparseRead: *hasResult = true; *hasResultType = true; break; - case OpSizeOf: *hasResult = true; *hasResultType = true; break; - case OpTypePipeStorage: *hasResult = true; *hasResultType = false; break; - case OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break; - case OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break; - case OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break; - case OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break; - case OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break; - case OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break; - case OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break; - case OpModuleProcessed: *hasResult = false; *hasResultType = false; break; - case OpExecutionModeId: *hasResult = false; *hasResultType = false; break; - case OpDecorateId: *hasResult = false; *hasResultType = false; break; - case OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break; - case OpCopyLogical: *hasResult = true; *hasResultType = true; break; - case OpPtrEqual: *hasResult = true; *hasResultType = true; break; - case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; - case OpPtrDiff: *hasResult = true; *hasResultType = true; break; - case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break; - case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; - case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break; - case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break; - case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break; - case OpReadClockKHR: *hasResult = true; *hasResultType = true; break; - case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break; - case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break; - case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break; - case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break; - case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break; - case OpTraceNV: *hasResult = false; *hasResultType = false; break; - case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break; - case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break; - case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break; - case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break; - case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break; - case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break; - case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break; - case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; - case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; - case OpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break; - case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break; - case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; - case OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; - case OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; - case OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break; - case OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break; - case OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break; - case OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break; - case OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break; - case OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break; - case OpIAverageINTEL: *hasResult = true; *hasResultType = true; break; - case OpUAverageINTEL: *hasResult = true; *hasResultType = true; break; - case OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break; - case OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break; - case OpISubSatINTEL: *hasResult = true; *hasResultType = true; break; - case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break; - case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break; - case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break; - case OpDecorateString: *hasResult = false; *hasResultType = false; break; - case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break; - case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break; - case OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break; - case OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break; - } -} -#endif /* SPV_ENABLE_UTILITY_CODE */ - -// Overload operator| for mask bit combining - -inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); } -inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); } -inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); } -inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); } -inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); } -inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); } -inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } -inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } - -} // end namespace spv - -#endif // #ifndef spirv_HPP - +// Copyright (c) 2014-2020 The Khronos Group Inc. +// +// 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. +// +// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS +// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND +// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +// +// 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 automatically generated by the same tool that creates +// the Binary Section of the SPIR-V specification. + +// Enumeration tokens for SPIR-V, in various styles: +// C, C++, C++11, JSON, Lua, Python, C#, D +// +// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL +// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL +// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL +// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL +// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL'] +// - C# will use enum classes in the Specification class located in the "Spv" namespace, +// e.g.: Spv.Specification.SourceLanguage.GLSL +// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL +// +// Some tokens act like mask values, which can be OR'd together, +// while others are mutually exclusive. The mask-like ones have +// "Mask" in their name, and a parallel enum that has the shift +// amount (1 << x) for each corresponding enumerant. + +#ifndef spirv_HPP +#define spirv_HPP + +namespace spv { + +typedef unsigned int Id; + +#define SPV_VERSION 0x10600 +#define SPV_REVISION 1 + +static const unsigned int MagicNumber = 0x07230203; +static const unsigned int Version = 0x00010600; +static const unsigned int Revision = 1; +static const unsigned int OpCodeMask = 0xffff; +static const unsigned int WordCountShift = 16; + +enum SourceLanguage { + SourceLanguageUnknown = 0, + SourceLanguageESSL = 1, + SourceLanguageGLSL = 2, + SourceLanguageOpenCL_C = 3, + SourceLanguageOpenCL_CPP = 4, + SourceLanguageHLSL = 5, + SourceLanguageCPP_for_OpenCL = 6, + SourceLanguageMax = 0x7fffffff, +}; + +enum ExecutionModel { + ExecutionModelVertex = 0, + ExecutionModelTessellationControl = 1, + ExecutionModelTessellationEvaluation = 2, + ExecutionModelGeometry = 3, + ExecutionModelFragment = 4, + ExecutionModelGLCompute = 5, + ExecutionModelKernel = 6, + ExecutionModelTaskNV = 5267, + ExecutionModelMeshNV = 5268, + ExecutionModelRayGenerationKHR = 5313, + ExecutionModelRayGenerationNV = 5313, + ExecutionModelIntersectionKHR = 5314, + ExecutionModelIntersectionNV = 5314, + ExecutionModelAnyHitKHR = 5315, + ExecutionModelAnyHitNV = 5315, + ExecutionModelClosestHitKHR = 5316, + ExecutionModelClosestHitNV = 5316, + ExecutionModelMissKHR = 5317, + ExecutionModelMissNV = 5317, + ExecutionModelCallableKHR = 5318, + ExecutionModelCallableNV = 5318, + ExecutionModelMax = 0x7fffffff, +}; + +enum AddressingModel { + AddressingModelLogical = 0, + AddressingModelPhysical32 = 1, + AddressingModelPhysical64 = 2, + AddressingModelPhysicalStorageBuffer64 = 5348, + AddressingModelPhysicalStorageBuffer64EXT = 5348, + AddressingModelMax = 0x7fffffff, +}; + +enum MemoryModel { + MemoryModelSimple = 0, + MemoryModelGLSL450 = 1, + MemoryModelOpenCL = 2, + MemoryModelVulkan = 3, + MemoryModelVulkanKHR = 3, + MemoryModelMax = 0x7fffffff, +}; + +enum ExecutionMode { + ExecutionModeInvocations = 0, + ExecutionModeSpacingEqual = 1, + ExecutionModeSpacingFractionalEven = 2, + ExecutionModeSpacingFractionalOdd = 3, + ExecutionModeVertexOrderCw = 4, + ExecutionModeVertexOrderCcw = 5, + ExecutionModePixelCenterInteger = 6, + ExecutionModeOriginUpperLeft = 7, + ExecutionModeOriginLowerLeft = 8, + ExecutionModeEarlyFragmentTests = 9, + ExecutionModePointMode = 10, + ExecutionModeXfb = 11, + ExecutionModeDepthReplacing = 12, + ExecutionModeDepthGreater = 14, + ExecutionModeDepthLess = 15, + ExecutionModeDepthUnchanged = 16, + ExecutionModeLocalSize = 17, + ExecutionModeLocalSizeHint = 18, + ExecutionModeInputPoints = 19, + ExecutionModeInputLines = 20, + ExecutionModeInputLinesAdjacency = 21, + ExecutionModeTriangles = 22, + ExecutionModeInputTrianglesAdjacency = 23, + ExecutionModeQuads = 24, + ExecutionModeIsolines = 25, + ExecutionModeOutputVertices = 26, + ExecutionModeOutputPoints = 27, + ExecutionModeOutputLineStrip = 28, + ExecutionModeOutputTriangleStrip = 29, + ExecutionModeVecTypeHint = 30, + ExecutionModeContractionOff = 31, + ExecutionModeInitializer = 33, + ExecutionModeFinalizer = 34, + ExecutionModeSubgroupSize = 35, + ExecutionModeSubgroupsPerWorkgroup = 36, + ExecutionModeSubgroupsPerWorkgroupId = 37, + ExecutionModeLocalSizeId = 38, + ExecutionModeLocalSizeHintId = 39, + ExecutionModeSubgroupUniformControlFlowKHR = 4421, + ExecutionModePostDepthCoverage = 4446, + ExecutionModeDenormPreserve = 4459, + ExecutionModeDenormFlushToZero = 4460, + ExecutionModeSignedZeroInfNanPreserve = 4461, + ExecutionModeRoundingModeRTE = 4462, + ExecutionModeRoundingModeRTZ = 4463, + ExecutionModeStencilRefReplacingEXT = 5027, + ExecutionModeOutputLinesNV = 5269, + ExecutionModeOutputPrimitivesNV = 5270, + ExecutionModeDerivativeGroupQuadsNV = 5289, + ExecutionModeDerivativeGroupLinearNV = 5290, + ExecutionModeOutputTrianglesNV = 5298, + ExecutionModePixelInterlockOrderedEXT = 5366, + ExecutionModePixelInterlockUnorderedEXT = 5367, + ExecutionModeSampleInterlockOrderedEXT = 5368, + ExecutionModeSampleInterlockUnorderedEXT = 5369, + ExecutionModeShadingRateInterlockOrderedEXT = 5370, + ExecutionModeShadingRateInterlockUnorderedEXT = 5371, + ExecutionModeSharedLocalMemorySizeINTEL = 5618, + ExecutionModeRoundingModeRTPINTEL = 5620, + ExecutionModeRoundingModeRTNINTEL = 5621, + ExecutionModeFloatingPointModeALTINTEL = 5622, + ExecutionModeFloatingPointModeIEEEINTEL = 5623, + ExecutionModeMaxWorkgroupSizeINTEL = 5893, + ExecutionModeMaxWorkDimINTEL = 5894, + ExecutionModeNoGlobalOffsetINTEL = 5895, + ExecutionModeNumSIMDWorkitemsINTEL = 5896, + ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903, + ExecutionModeMax = 0x7fffffff, +}; + +enum StorageClass { + StorageClassUniformConstant = 0, + StorageClassInput = 1, + StorageClassUniform = 2, + StorageClassOutput = 3, + StorageClassWorkgroup = 4, + StorageClassCrossWorkgroup = 5, + StorageClassPrivate = 6, + StorageClassFunction = 7, + StorageClassGeneric = 8, + StorageClassPushConstant = 9, + StorageClassAtomicCounter = 10, + StorageClassImage = 11, + StorageClassStorageBuffer = 12, + StorageClassCallableDataKHR = 5328, + StorageClassCallableDataNV = 5328, + StorageClassIncomingCallableDataKHR = 5329, + StorageClassIncomingCallableDataNV = 5329, + StorageClassRayPayloadKHR = 5338, + StorageClassRayPayloadNV = 5338, + StorageClassHitAttributeKHR = 5339, + StorageClassHitAttributeNV = 5339, + StorageClassIncomingRayPayloadKHR = 5342, + StorageClassIncomingRayPayloadNV = 5342, + StorageClassShaderRecordBufferKHR = 5343, + StorageClassShaderRecordBufferNV = 5343, + StorageClassPhysicalStorageBuffer = 5349, + StorageClassPhysicalStorageBufferEXT = 5349, + StorageClassCodeSectionINTEL = 5605, + StorageClassDeviceOnlyINTEL = 5936, + StorageClassHostOnlyINTEL = 5937, + StorageClassMax = 0x7fffffff, +}; + +enum Dim { + Dim1D = 0, + Dim2D = 1, + Dim3D = 2, + DimCube = 3, + DimRect = 4, + DimBuffer = 5, + DimSubpassData = 6, + DimMax = 0x7fffffff, +}; + +enum SamplerAddressingMode { + SamplerAddressingModeNone = 0, + SamplerAddressingModeClampToEdge = 1, + SamplerAddressingModeClamp = 2, + SamplerAddressingModeRepeat = 3, + SamplerAddressingModeRepeatMirrored = 4, + SamplerAddressingModeMax = 0x7fffffff, +}; + +enum SamplerFilterMode { + SamplerFilterModeNearest = 0, + SamplerFilterModeLinear = 1, + SamplerFilterModeMax = 0x7fffffff, +}; + +enum ImageFormat { + ImageFormatUnknown = 0, + ImageFormatRgba32f = 1, + ImageFormatRgba16f = 2, + ImageFormatR32f = 3, + ImageFormatRgba8 = 4, + ImageFormatRgba8Snorm = 5, + ImageFormatRg32f = 6, + ImageFormatRg16f = 7, + ImageFormatR11fG11fB10f = 8, + ImageFormatR16f = 9, + ImageFormatRgba16 = 10, + ImageFormatRgb10A2 = 11, + ImageFormatRg16 = 12, + ImageFormatRg8 = 13, + ImageFormatR16 = 14, + ImageFormatR8 = 15, + ImageFormatRgba16Snorm = 16, + ImageFormatRg16Snorm = 17, + ImageFormatRg8Snorm = 18, + ImageFormatR16Snorm = 19, + ImageFormatR8Snorm = 20, + ImageFormatRgba32i = 21, + ImageFormatRgba16i = 22, + ImageFormatRgba8i = 23, + ImageFormatR32i = 24, + ImageFormatRg32i = 25, + ImageFormatRg16i = 26, + ImageFormatRg8i = 27, + ImageFormatR16i = 28, + ImageFormatR8i = 29, + ImageFormatRgba32ui = 30, + ImageFormatRgba16ui = 31, + ImageFormatRgba8ui = 32, + ImageFormatR32ui = 33, + ImageFormatRgb10a2ui = 34, + ImageFormatRg32ui = 35, + ImageFormatRg16ui = 36, + ImageFormatRg8ui = 37, + ImageFormatR16ui = 38, + ImageFormatR8ui = 39, + ImageFormatR64ui = 40, + ImageFormatR64i = 41, + ImageFormatMax = 0x7fffffff, +}; + +enum ImageChannelOrder { + ImageChannelOrderR = 0, + ImageChannelOrderA = 1, + ImageChannelOrderRG = 2, + ImageChannelOrderRA = 3, + ImageChannelOrderRGB = 4, + ImageChannelOrderRGBA = 5, + ImageChannelOrderBGRA = 6, + ImageChannelOrderARGB = 7, + ImageChannelOrderIntensity = 8, + ImageChannelOrderLuminance = 9, + ImageChannelOrderRx = 10, + ImageChannelOrderRGx = 11, + ImageChannelOrderRGBx = 12, + ImageChannelOrderDepth = 13, + ImageChannelOrderDepthStencil = 14, + ImageChannelOrdersRGB = 15, + ImageChannelOrdersRGBx = 16, + ImageChannelOrdersRGBA = 17, + ImageChannelOrdersBGRA = 18, + ImageChannelOrderABGR = 19, + ImageChannelOrderMax = 0x7fffffff, +}; + +enum ImageChannelDataType { + ImageChannelDataTypeSnormInt8 = 0, + ImageChannelDataTypeSnormInt16 = 1, + ImageChannelDataTypeUnormInt8 = 2, + ImageChannelDataTypeUnormInt16 = 3, + ImageChannelDataTypeUnormShort565 = 4, + ImageChannelDataTypeUnormShort555 = 5, + ImageChannelDataTypeUnormInt101010 = 6, + ImageChannelDataTypeSignedInt8 = 7, + ImageChannelDataTypeSignedInt16 = 8, + ImageChannelDataTypeSignedInt32 = 9, + ImageChannelDataTypeUnsignedInt8 = 10, + ImageChannelDataTypeUnsignedInt16 = 11, + ImageChannelDataTypeUnsignedInt32 = 12, + ImageChannelDataTypeHalfFloat = 13, + ImageChannelDataTypeFloat = 14, + ImageChannelDataTypeUnormInt24 = 15, + ImageChannelDataTypeUnormInt101010_2 = 16, + ImageChannelDataTypeMax = 0x7fffffff, +}; + +enum ImageOperandsShift { + ImageOperandsBiasShift = 0, + ImageOperandsLodShift = 1, + ImageOperandsGradShift = 2, + ImageOperandsConstOffsetShift = 3, + ImageOperandsOffsetShift = 4, + ImageOperandsConstOffsetsShift = 5, + ImageOperandsSampleShift = 6, + ImageOperandsMinLodShift = 7, + ImageOperandsMakeTexelAvailableShift = 8, + ImageOperandsMakeTexelAvailableKHRShift = 8, + ImageOperandsMakeTexelVisibleShift = 9, + ImageOperandsMakeTexelVisibleKHRShift = 9, + ImageOperandsNonPrivateTexelShift = 10, + ImageOperandsNonPrivateTexelKHRShift = 10, + ImageOperandsVolatileTexelShift = 11, + ImageOperandsVolatileTexelKHRShift = 11, + ImageOperandsSignExtendShift = 12, + ImageOperandsZeroExtendShift = 13, + ImageOperandsNontemporalShift = 14, + ImageOperandsOffsetsShift = 16, + ImageOperandsMax = 0x7fffffff, +}; + +enum ImageOperandsMask { + ImageOperandsMaskNone = 0, + ImageOperandsBiasMask = 0x00000001, + ImageOperandsLodMask = 0x00000002, + ImageOperandsGradMask = 0x00000004, + ImageOperandsConstOffsetMask = 0x00000008, + ImageOperandsOffsetMask = 0x00000010, + ImageOperandsConstOffsetsMask = 0x00000020, + ImageOperandsSampleMask = 0x00000040, + ImageOperandsMinLodMask = 0x00000080, + ImageOperandsMakeTexelAvailableMask = 0x00000100, + ImageOperandsMakeTexelAvailableKHRMask = 0x00000100, + ImageOperandsMakeTexelVisibleMask = 0x00000200, + ImageOperandsMakeTexelVisibleKHRMask = 0x00000200, + ImageOperandsNonPrivateTexelMask = 0x00000400, + ImageOperandsNonPrivateTexelKHRMask = 0x00000400, + ImageOperandsVolatileTexelMask = 0x00000800, + ImageOperandsVolatileTexelKHRMask = 0x00000800, + ImageOperandsSignExtendMask = 0x00001000, + ImageOperandsZeroExtendMask = 0x00002000, + ImageOperandsNontemporalMask = 0x00004000, + ImageOperandsOffsetsMask = 0x00010000, +}; + +enum FPFastMathModeShift { + FPFastMathModeNotNaNShift = 0, + FPFastMathModeNotInfShift = 1, + FPFastMathModeNSZShift = 2, + FPFastMathModeAllowRecipShift = 3, + FPFastMathModeFastShift = 4, + FPFastMathModeAllowContractFastINTELShift = 16, + FPFastMathModeAllowReassocINTELShift = 17, + FPFastMathModeMax = 0x7fffffff, +}; + +enum FPFastMathModeMask { + FPFastMathModeMaskNone = 0, + FPFastMathModeNotNaNMask = 0x00000001, + FPFastMathModeNotInfMask = 0x00000002, + FPFastMathModeNSZMask = 0x00000004, + FPFastMathModeAllowRecipMask = 0x00000008, + FPFastMathModeFastMask = 0x00000010, + FPFastMathModeAllowContractFastINTELMask = 0x00010000, + FPFastMathModeAllowReassocINTELMask = 0x00020000, +}; + +enum FPRoundingMode { + FPRoundingModeRTE = 0, + FPRoundingModeRTZ = 1, + FPRoundingModeRTP = 2, + FPRoundingModeRTN = 3, + FPRoundingModeMax = 0x7fffffff, +}; + +enum LinkageType { + LinkageTypeExport = 0, + LinkageTypeImport = 1, + LinkageTypeLinkOnceODR = 2, + LinkageTypeMax = 0x7fffffff, +}; + +enum AccessQualifier { + AccessQualifierReadOnly = 0, + AccessQualifierWriteOnly = 1, + AccessQualifierReadWrite = 2, + AccessQualifierMax = 0x7fffffff, +}; + +enum FunctionParameterAttribute { + FunctionParameterAttributeZext = 0, + FunctionParameterAttributeSext = 1, + FunctionParameterAttributeByVal = 2, + FunctionParameterAttributeSret = 3, + FunctionParameterAttributeNoAlias = 4, + FunctionParameterAttributeNoCapture = 5, + FunctionParameterAttributeNoWrite = 6, + FunctionParameterAttributeNoReadWrite = 7, + FunctionParameterAttributeMax = 0x7fffffff, +}; + +enum Decoration { + DecorationRelaxedPrecision = 0, + DecorationSpecId = 1, + DecorationBlock = 2, + DecorationBufferBlock = 3, + DecorationRowMajor = 4, + DecorationColMajor = 5, + DecorationArrayStride = 6, + DecorationMatrixStride = 7, + DecorationGLSLShared = 8, + DecorationGLSLPacked = 9, + DecorationCPacked = 10, + DecorationBuiltIn = 11, + DecorationNoPerspective = 13, + DecorationFlat = 14, + DecorationPatch = 15, + DecorationCentroid = 16, + DecorationSample = 17, + DecorationInvariant = 18, + DecorationRestrict = 19, + DecorationAliased = 20, + DecorationVolatile = 21, + DecorationConstant = 22, + DecorationCoherent = 23, + DecorationNonWritable = 24, + DecorationNonReadable = 25, + DecorationUniform = 26, + DecorationUniformId = 27, + DecorationSaturatedConversion = 28, + DecorationStream = 29, + DecorationLocation = 30, + DecorationComponent = 31, + DecorationIndex = 32, + DecorationBinding = 33, + DecorationDescriptorSet = 34, + DecorationOffset = 35, + DecorationXfbBuffer = 36, + DecorationXfbStride = 37, + DecorationFuncParamAttr = 38, + DecorationFPRoundingMode = 39, + DecorationFPFastMathMode = 40, + DecorationLinkageAttributes = 41, + DecorationNoContraction = 42, + DecorationInputAttachmentIndex = 43, + DecorationAlignment = 44, + DecorationMaxByteOffset = 45, + DecorationAlignmentId = 46, + DecorationMaxByteOffsetId = 47, + DecorationNoSignedWrap = 4469, + DecorationNoUnsignedWrap = 4470, + DecorationExplicitInterpAMD = 4999, + DecorationOverrideCoverageNV = 5248, + DecorationPassthroughNV = 5250, + DecorationViewportRelativeNV = 5252, + DecorationSecondaryViewportRelativeNV = 5256, + DecorationPerPrimitiveNV = 5271, + DecorationPerViewNV = 5272, + DecorationPerTaskNV = 5273, + DecorationPerVertexKHR = 5285, + DecorationPerVertexNV = 5285, + DecorationNonUniform = 5300, + DecorationNonUniformEXT = 5300, + DecorationRestrictPointer = 5355, + DecorationRestrictPointerEXT = 5355, + DecorationAliasedPointer = 5356, + DecorationAliasedPointerEXT = 5356, + DecorationBindlessSamplerNV = 5398, + DecorationBindlessImageNV = 5399, + DecorationBoundSamplerNV = 5400, + DecorationBoundImageNV = 5401, + DecorationSIMTCallINTEL = 5599, + DecorationReferencedIndirectlyINTEL = 5602, + DecorationClobberINTEL = 5607, + DecorationSideEffectsINTEL = 5608, + DecorationVectorComputeVariableINTEL = 5624, + DecorationFuncParamIOKindINTEL = 5625, + DecorationVectorComputeFunctionINTEL = 5626, + DecorationStackCallINTEL = 5627, + DecorationGlobalVariableOffsetINTEL = 5628, + DecorationCounterBuffer = 5634, + DecorationHlslCounterBufferGOOGLE = 5634, + DecorationHlslSemanticGOOGLE = 5635, + DecorationUserSemantic = 5635, + DecorationUserTypeGOOGLE = 5636, + DecorationFunctionRoundingModeINTEL = 5822, + DecorationFunctionDenormModeINTEL = 5823, + DecorationRegisterINTEL = 5825, + DecorationMemoryINTEL = 5826, + DecorationNumbanksINTEL = 5827, + DecorationBankwidthINTEL = 5828, + DecorationMaxPrivateCopiesINTEL = 5829, + DecorationSinglepumpINTEL = 5830, + DecorationDoublepumpINTEL = 5831, + DecorationMaxReplicatesINTEL = 5832, + DecorationSimpleDualPortINTEL = 5833, + DecorationMergeINTEL = 5834, + DecorationBankBitsINTEL = 5835, + DecorationForcePow2DepthINTEL = 5836, + DecorationBurstCoalesceINTEL = 5899, + DecorationCacheSizeINTEL = 5900, + DecorationDontStaticallyCoalesceINTEL = 5901, + DecorationPrefetchINTEL = 5902, + DecorationStallEnableINTEL = 5905, + DecorationFuseLoopsInFunctionINTEL = 5907, + DecorationBufferLocationINTEL = 5921, + DecorationIOPipeStorageINTEL = 5944, + DecorationFunctionFloatingPointModeINTEL = 6080, + DecorationSingleElementVectorINTEL = 6085, + DecorationVectorComputeCallableFunctionINTEL = 6087, + DecorationMediaBlockIOINTEL = 6140, + DecorationMax = 0x7fffffff, +}; + +enum BuiltIn { + BuiltInPosition = 0, + BuiltInPointSize = 1, + BuiltInClipDistance = 3, + BuiltInCullDistance = 4, + BuiltInVertexId = 5, + BuiltInInstanceId = 6, + BuiltInPrimitiveId = 7, + BuiltInInvocationId = 8, + BuiltInLayer = 9, + BuiltInViewportIndex = 10, + BuiltInTessLevelOuter = 11, + BuiltInTessLevelInner = 12, + BuiltInTessCoord = 13, + BuiltInPatchVertices = 14, + BuiltInFragCoord = 15, + BuiltInPointCoord = 16, + BuiltInFrontFacing = 17, + BuiltInSampleId = 18, + BuiltInSamplePosition = 19, + BuiltInSampleMask = 20, + BuiltInFragDepth = 22, + BuiltInHelperInvocation = 23, + BuiltInNumWorkgroups = 24, + BuiltInWorkgroupSize = 25, + BuiltInWorkgroupId = 26, + BuiltInLocalInvocationId = 27, + BuiltInGlobalInvocationId = 28, + BuiltInLocalInvocationIndex = 29, + BuiltInWorkDim = 30, + BuiltInGlobalSize = 31, + BuiltInEnqueuedWorkgroupSize = 32, + BuiltInGlobalOffset = 33, + BuiltInGlobalLinearId = 34, + BuiltInSubgroupSize = 36, + BuiltInSubgroupMaxSize = 37, + BuiltInNumSubgroups = 38, + BuiltInNumEnqueuedSubgroups = 39, + BuiltInSubgroupId = 40, + BuiltInSubgroupLocalInvocationId = 41, + BuiltInVertexIndex = 42, + BuiltInInstanceIndex = 43, + BuiltInSubgroupEqMask = 4416, + BuiltInSubgroupEqMaskKHR = 4416, + BuiltInSubgroupGeMask = 4417, + BuiltInSubgroupGeMaskKHR = 4417, + BuiltInSubgroupGtMask = 4418, + BuiltInSubgroupGtMaskKHR = 4418, + BuiltInSubgroupLeMask = 4419, + BuiltInSubgroupLeMaskKHR = 4419, + BuiltInSubgroupLtMask = 4420, + BuiltInSubgroupLtMaskKHR = 4420, + BuiltInBaseVertex = 4424, + BuiltInBaseInstance = 4425, + BuiltInDrawIndex = 4426, + BuiltInPrimitiveShadingRateKHR = 4432, + BuiltInDeviceIndex = 4438, + BuiltInViewIndex = 4440, + BuiltInShadingRateKHR = 4444, + BuiltInBaryCoordNoPerspAMD = 4992, + BuiltInBaryCoordNoPerspCentroidAMD = 4993, + BuiltInBaryCoordNoPerspSampleAMD = 4994, + BuiltInBaryCoordSmoothAMD = 4995, + BuiltInBaryCoordSmoothCentroidAMD = 4996, + BuiltInBaryCoordSmoothSampleAMD = 4997, + BuiltInBaryCoordPullModelAMD = 4998, + BuiltInFragStencilRefEXT = 5014, + BuiltInViewportMaskNV = 5253, + BuiltInSecondaryPositionNV = 5257, + BuiltInSecondaryViewportMaskNV = 5258, + BuiltInPositionPerViewNV = 5261, + BuiltInViewportMaskPerViewNV = 5262, + BuiltInFullyCoveredEXT = 5264, + BuiltInTaskCountNV = 5274, + BuiltInPrimitiveCountNV = 5275, + BuiltInPrimitiveIndicesNV = 5276, + BuiltInClipDistancePerViewNV = 5277, + BuiltInCullDistancePerViewNV = 5278, + BuiltInLayerPerViewNV = 5279, + BuiltInMeshViewCountNV = 5280, + BuiltInMeshViewIndicesNV = 5281, + BuiltInBaryCoordKHR = 5286, + BuiltInBaryCoordNV = 5286, + BuiltInBaryCoordNoPerspKHR = 5287, + BuiltInBaryCoordNoPerspNV = 5287, + BuiltInFragSizeEXT = 5292, + BuiltInFragmentSizeNV = 5292, + BuiltInFragInvocationCountEXT = 5293, + BuiltInInvocationsPerPixelNV = 5293, + BuiltInLaunchIdKHR = 5319, + BuiltInLaunchIdNV = 5319, + BuiltInLaunchSizeKHR = 5320, + BuiltInLaunchSizeNV = 5320, + BuiltInWorldRayOriginKHR = 5321, + BuiltInWorldRayOriginNV = 5321, + BuiltInWorldRayDirectionKHR = 5322, + BuiltInWorldRayDirectionNV = 5322, + BuiltInObjectRayOriginKHR = 5323, + BuiltInObjectRayOriginNV = 5323, + BuiltInObjectRayDirectionKHR = 5324, + BuiltInObjectRayDirectionNV = 5324, + BuiltInRayTminKHR = 5325, + BuiltInRayTminNV = 5325, + BuiltInRayTmaxKHR = 5326, + BuiltInRayTmaxNV = 5326, + BuiltInInstanceCustomIndexKHR = 5327, + BuiltInInstanceCustomIndexNV = 5327, + BuiltInObjectToWorldKHR = 5330, + BuiltInObjectToWorldNV = 5330, + BuiltInWorldToObjectKHR = 5331, + BuiltInWorldToObjectNV = 5331, + BuiltInHitTNV = 5332, + BuiltInHitKindKHR = 5333, + BuiltInHitKindNV = 5333, + BuiltInCurrentRayTimeNV = 5334, + BuiltInIncomingRayFlagsKHR = 5351, + BuiltInIncomingRayFlagsNV = 5351, + BuiltInRayGeometryIndexKHR = 5352, + BuiltInWarpsPerSMNV = 5374, + BuiltInSMCountNV = 5375, + BuiltInWarpIDNV = 5376, + BuiltInSMIDNV = 5377, + BuiltInMax = 0x7fffffff, +}; + +enum SelectionControlShift { + SelectionControlFlattenShift = 0, + SelectionControlDontFlattenShift = 1, + SelectionControlMax = 0x7fffffff, +}; + +enum SelectionControlMask { + SelectionControlMaskNone = 0, + SelectionControlFlattenMask = 0x00000001, + SelectionControlDontFlattenMask = 0x00000002, +}; + +enum LoopControlShift { + LoopControlUnrollShift = 0, + LoopControlDontUnrollShift = 1, + LoopControlDependencyInfiniteShift = 2, + LoopControlDependencyLengthShift = 3, + LoopControlMinIterationsShift = 4, + LoopControlMaxIterationsShift = 5, + LoopControlIterationMultipleShift = 6, + LoopControlPeelCountShift = 7, + LoopControlPartialCountShift = 8, + LoopControlInitiationIntervalINTELShift = 16, + LoopControlMaxConcurrencyINTELShift = 17, + LoopControlDependencyArrayINTELShift = 18, + LoopControlPipelineEnableINTELShift = 19, + LoopControlLoopCoalesceINTELShift = 20, + LoopControlMaxInterleavingINTELShift = 21, + LoopControlSpeculatedIterationsINTELShift = 22, + LoopControlNoFusionINTELShift = 23, + LoopControlMax = 0x7fffffff, +}; + +enum LoopControlMask { + LoopControlMaskNone = 0, + LoopControlUnrollMask = 0x00000001, + LoopControlDontUnrollMask = 0x00000002, + LoopControlDependencyInfiniteMask = 0x00000004, + LoopControlDependencyLengthMask = 0x00000008, + LoopControlMinIterationsMask = 0x00000010, + LoopControlMaxIterationsMask = 0x00000020, + LoopControlIterationMultipleMask = 0x00000040, + LoopControlPeelCountMask = 0x00000080, + LoopControlPartialCountMask = 0x00000100, + LoopControlInitiationIntervalINTELMask = 0x00010000, + LoopControlMaxConcurrencyINTELMask = 0x00020000, + LoopControlDependencyArrayINTELMask = 0x00040000, + LoopControlPipelineEnableINTELMask = 0x00080000, + LoopControlLoopCoalesceINTELMask = 0x00100000, + LoopControlMaxInterleavingINTELMask = 0x00200000, + LoopControlSpeculatedIterationsINTELMask = 0x00400000, + LoopControlNoFusionINTELMask = 0x00800000, +}; + +enum FunctionControlShift { + FunctionControlInlineShift = 0, + FunctionControlDontInlineShift = 1, + FunctionControlPureShift = 2, + FunctionControlConstShift = 3, + FunctionControlOptNoneINTELShift = 16, + FunctionControlMax = 0x7fffffff, +}; + +enum FunctionControlMask { + FunctionControlMaskNone = 0, + FunctionControlInlineMask = 0x00000001, + FunctionControlDontInlineMask = 0x00000002, + FunctionControlPureMask = 0x00000004, + FunctionControlConstMask = 0x00000008, + FunctionControlOptNoneINTELMask = 0x00010000, +}; + +enum MemorySemanticsShift { + MemorySemanticsAcquireShift = 1, + MemorySemanticsReleaseShift = 2, + MemorySemanticsAcquireReleaseShift = 3, + MemorySemanticsSequentiallyConsistentShift = 4, + MemorySemanticsUniformMemoryShift = 6, + MemorySemanticsSubgroupMemoryShift = 7, + MemorySemanticsWorkgroupMemoryShift = 8, + MemorySemanticsCrossWorkgroupMemoryShift = 9, + MemorySemanticsAtomicCounterMemoryShift = 10, + MemorySemanticsImageMemoryShift = 11, + MemorySemanticsOutputMemoryShift = 12, + MemorySemanticsOutputMemoryKHRShift = 12, + MemorySemanticsMakeAvailableShift = 13, + MemorySemanticsMakeAvailableKHRShift = 13, + MemorySemanticsMakeVisibleShift = 14, + MemorySemanticsMakeVisibleKHRShift = 14, + MemorySemanticsVolatileShift = 15, + MemorySemanticsMax = 0x7fffffff, +}; + +enum MemorySemanticsMask { + MemorySemanticsMaskNone = 0, + MemorySemanticsAcquireMask = 0x00000002, + MemorySemanticsReleaseMask = 0x00000004, + MemorySemanticsAcquireReleaseMask = 0x00000008, + MemorySemanticsSequentiallyConsistentMask = 0x00000010, + MemorySemanticsUniformMemoryMask = 0x00000040, + MemorySemanticsSubgroupMemoryMask = 0x00000080, + MemorySemanticsWorkgroupMemoryMask = 0x00000100, + MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200, + MemorySemanticsAtomicCounterMemoryMask = 0x00000400, + MemorySemanticsImageMemoryMask = 0x00000800, + MemorySemanticsOutputMemoryMask = 0x00001000, + MemorySemanticsOutputMemoryKHRMask = 0x00001000, + MemorySemanticsMakeAvailableMask = 0x00002000, + MemorySemanticsMakeAvailableKHRMask = 0x00002000, + MemorySemanticsMakeVisibleMask = 0x00004000, + MemorySemanticsMakeVisibleKHRMask = 0x00004000, + MemorySemanticsVolatileMask = 0x00008000, +}; + +enum MemoryAccessShift { + MemoryAccessVolatileShift = 0, + MemoryAccessAlignedShift = 1, + MemoryAccessNontemporalShift = 2, + MemoryAccessMakePointerAvailableShift = 3, + MemoryAccessMakePointerAvailableKHRShift = 3, + MemoryAccessMakePointerVisibleShift = 4, + MemoryAccessMakePointerVisibleKHRShift = 4, + MemoryAccessNonPrivatePointerShift = 5, + MemoryAccessNonPrivatePointerKHRShift = 5, + MemoryAccessMax = 0x7fffffff, +}; + +enum MemoryAccessMask { + MemoryAccessMaskNone = 0, + MemoryAccessVolatileMask = 0x00000001, + MemoryAccessAlignedMask = 0x00000002, + MemoryAccessNontemporalMask = 0x00000004, + MemoryAccessMakePointerAvailableMask = 0x00000008, + MemoryAccessMakePointerAvailableKHRMask = 0x00000008, + MemoryAccessMakePointerVisibleMask = 0x00000010, + MemoryAccessMakePointerVisibleKHRMask = 0x00000010, + MemoryAccessNonPrivatePointerMask = 0x00000020, + MemoryAccessNonPrivatePointerKHRMask = 0x00000020, +}; + +enum Scope { + ScopeCrossDevice = 0, + ScopeDevice = 1, + ScopeWorkgroup = 2, + ScopeSubgroup = 3, + ScopeInvocation = 4, + ScopeQueueFamily = 5, + ScopeQueueFamilyKHR = 5, + ScopeShaderCallKHR = 6, + ScopeMax = 0x7fffffff, +}; + +enum GroupOperation { + GroupOperationReduce = 0, + GroupOperationInclusiveScan = 1, + GroupOperationExclusiveScan = 2, + GroupOperationClusteredReduce = 3, + GroupOperationPartitionedReduceNV = 6, + GroupOperationPartitionedInclusiveScanNV = 7, + GroupOperationPartitionedExclusiveScanNV = 8, + GroupOperationMax = 0x7fffffff, +}; + +enum KernelEnqueueFlags { + KernelEnqueueFlagsNoWait = 0, + KernelEnqueueFlagsWaitKernel = 1, + KernelEnqueueFlagsWaitWorkGroup = 2, + KernelEnqueueFlagsMax = 0x7fffffff, +}; + +enum KernelProfilingInfoShift { + KernelProfilingInfoCmdExecTimeShift = 0, + KernelProfilingInfoMax = 0x7fffffff, +}; + +enum KernelProfilingInfoMask { + KernelProfilingInfoMaskNone = 0, + KernelProfilingInfoCmdExecTimeMask = 0x00000001, +}; + +enum Capability { + CapabilityMatrix = 0, + CapabilityShader = 1, + CapabilityGeometry = 2, + CapabilityTessellation = 3, + CapabilityAddresses = 4, + CapabilityLinkage = 5, + CapabilityKernel = 6, + CapabilityVector16 = 7, + CapabilityFloat16Buffer = 8, + CapabilityFloat16 = 9, + CapabilityFloat64 = 10, + CapabilityInt64 = 11, + CapabilityInt64Atomics = 12, + CapabilityImageBasic = 13, + CapabilityImageReadWrite = 14, + CapabilityImageMipmap = 15, + CapabilityPipes = 17, + CapabilityGroups = 18, + CapabilityDeviceEnqueue = 19, + CapabilityLiteralSampler = 20, + CapabilityAtomicStorage = 21, + CapabilityInt16 = 22, + CapabilityTessellationPointSize = 23, + CapabilityGeometryPointSize = 24, + CapabilityImageGatherExtended = 25, + CapabilityStorageImageMultisample = 27, + CapabilityUniformBufferArrayDynamicIndexing = 28, + CapabilitySampledImageArrayDynamicIndexing = 29, + CapabilityStorageBufferArrayDynamicIndexing = 30, + CapabilityStorageImageArrayDynamicIndexing = 31, + CapabilityClipDistance = 32, + CapabilityCullDistance = 33, + CapabilityImageCubeArray = 34, + CapabilitySampleRateShading = 35, + CapabilityImageRect = 36, + CapabilitySampledRect = 37, + CapabilityGenericPointer = 38, + CapabilityInt8 = 39, + CapabilityInputAttachment = 40, + CapabilitySparseResidency = 41, + CapabilityMinLod = 42, + CapabilitySampled1D = 43, + CapabilityImage1D = 44, + CapabilitySampledCubeArray = 45, + CapabilitySampledBuffer = 46, + CapabilityImageBuffer = 47, + CapabilityImageMSArray = 48, + CapabilityStorageImageExtendedFormats = 49, + CapabilityImageQuery = 50, + CapabilityDerivativeControl = 51, + CapabilityInterpolationFunction = 52, + CapabilityTransformFeedback = 53, + CapabilityGeometryStreams = 54, + CapabilityStorageImageReadWithoutFormat = 55, + CapabilityStorageImageWriteWithoutFormat = 56, + CapabilityMultiViewport = 57, + CapabilitySubgroupDispatch = 58, + CapabilityNamedBarrier = 59, + CapabilityPipeStorage = 60, + CapabilityGroupNonUniform = 61, + CapabilityGroupNonUniformVote = 62, + CapabilityGroupNonUniformArithmetic = 63, + CapabilityGroupNonUniformBallot = 64, + CapabilityGroupNonUniformShuffle = 65, + CapabilityGroupNonUniformShuffleRelative = 66, + CapabilityGroupNonUniformClustered = 67, + CapabilityGroupNonUniformQuad = 68, + CapabilityShaderLayer = 69, + CapabilityShaderViewportIndex = 70, + CapabilityUniformDecoration = 71, + CapabilityFragmentShadingRateKHR = 4422, + CapabilitySubgroupBallotKHR = 4423, + CapabilityDrawParameters = 4427, + CapabilityWorkgroupMemoryExplicitLayoutKHR = 4428, + CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR = 4429, + CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR = 4430, + CapabilitySubgroupVoteKHR = 4431, + CapabilityStorageBuffer16BitAccess = 4433, + CapabilityStorageUniformBufferBlock16 = 4433, + CapabilityStorageUniform16 = 4434, + CapabilityUniformAndStorageBuffer16BitAccess = 4434, + CapabilityStoragePushConstant16 = 4435, + CapabilityStorageInputOutput16 = 4436, + CapabilityDeviceGroup = 4437, + CapabilityMultiView = 4439, + CapabilityVariablePointersStorageBuffer = 4441, + CapabilityVariablePointers = 4442, + CapabilityAtomicStorageOps = 4445, + CapabilitySampleMaskPostDepthCoverage = 4447, + CapabilityStorageBuffer8BitAccess = 4448, + CapabilityUniformAndStorageBuffer8BitAccess = 4449, + CapabilityStoragePushConstant8 = 4450, + CapabilityDenormPreserve = 4464, + CapabilityDenormFlushToZero = 4465, + CapabilitySignedZeroInfNanPreserve = 4466, + CapabilityRoundingModeRTE = 4467, + CapabilityRoundingModeRTZ = 4468, + CapabilityRayQueryProvisionalKHR = 4471, + CapabilityRayQueryKHR = 4472, + CapabilityRayTraversalPrimitiveCullingKHR = 4478, + CapabilityRayTracingKHR = 4479, + CapabilityFloat16ImageAMD = 5008, + CapabilityImageGatherBiasLodAMD = 5009, + CapabilityFragmentMaskAMD = 5010, + CapabilityStencilExportEXT = 5013, + CapabilityImageReadWriteLodAMD = 5015, + CapabilityInt64ImageEXT = 5016, + CapabilityShaderClockKHR = 5055, + CapabilitySampleMaskOverrideCoverageNV = 5249, + CapabilityGeometryShaderPassthroughNV = 5251, + CapabilityShaderViewportIndexLayerEXT = 5254, + CapabilityShaderViewportIndexLayerNV = 5254, + CapabilityShaderViewportMaskNV = 5255, + CapabilityShaderStereoViewNV = 5259, + CapabilityPerViewAttributesNV = 5260, + CapabilityFragmentFullyCoveredEXT = 5265, + CapabilityMeshShadingNV = 5266, + CapabilityImageFootprintNV = 5282, + CapabilityFragmentBarycentricKHR = 5284, + CapabilityFragmentBarycentricNV = 5284, + CapabilityComputeDerivativeGroupQuadsNV = 5288, + CapabilityFragmentDensityEXT = 5291, + CapabilityShadingRateNV = 5291, + CapabilityGroupNonUniformPartitionedNV = 5297, + CapabilityShaderNonUniform = 5301, + CapabilityShaderNonUniformEXT = 5301, + CapabilityRuntimeDescriptorArray = 5302, + CapabilityRuntimeDescriptorArrayEXT = 5302, + CapabilityInputAttachmentArrayDynamicIndexing = 5303, + CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303, + CapabilityUniformTexelBufferArrayDynamicIndexing = 5304, + CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304, + CapabilityStorageTexelBufferArrayDynamicIndexing = 5305, + CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305, + CapabilityUniformBufferArrayNonUniformIndexing = 5306, + CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306, + CapabilitySampledImageArrayNonUniformIndexing = 5307, + CapabilitySampledImageArrayNonUniformIndexingEXT = 5307, + CapabilityStorageBufferArrayNonUniformIndexing = 5308, + CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308, + CapabilityStorageImageArrayNonUniformIndexing = 5309, + CapabilityStorageImageArrayNonUniformIndexingEXT = 5309, + CapabilityInputAttachmentArrayNonUniformIndexing = 5310, + CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310, + CapabilityUniformTexelBufferArrayNonUniformIndexing = 5311, + CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311, + CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312, + CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312, + CapabilityRayTracingNV = 5340, + CapabilityRayTracingMotionBlurNV = 5341, + CapabilityVulkanMemoryModel = 5345, + CapabilityVulkanMemoryModelKHR = 5345, + CapabilityVulkanMemoryModelDeviceScope = 5346, + CapabilityVulkanMemoryModelDeviceScopeKHR = 5346, + CapabilityPhysicalStorageBufferAddresses = 5347, + CapabilityPhysicalStorageBufferAddressesEXT = 5347, + CapabilityComputeDerivativeGroupLinearNV = 5350, + CapabilityRayTracingProvisionalKHR = 5353, + CapabilityCooperativeMatrixNV = 5357, + CapabilityFragmentShaderSampleInterlockEXT = 5363, + CapabilityFragmentShaderShadingRateInterlockEXT = 5372, + CapabilityShaderSMBuiltinsNV = 5373, + CapabilityFragmentShaderPixelInterlockEXT = 5378, + CapabilityDemoteToHelperInvocation = 5379, + CapabilityDemoteToHelperInvocationEXT = 5379, + CapabilityBindlessTextureNV = 5390, + CapabilitySubgroupShuffleINTEL = 5568, + CapabilitySubgroupBufferBlockIOINTEL = 5569, + CapabilitySubgroupImageBlockIOINTEL = 5570, + CapabilitySubgroupImageMediaBlockIOINTEL = 5579, + CapabilityRoundToInfinityINTEL = 5582, + CapabilityFloatingPointModeINTEL = 5583, + CapabilityIntegerFunctions2INTEL = 5584, + CapabilityFunctionPointersINTEL = 5603, + CapabilityIndirectReferencesINTEL = 5604, + CapabilityAsmINTEL = 5606, + CapabilityAtomicFloat32MinMaxEXT = 5612, + CapabilityAtomicFloat64MinMaxEXT = 5613, + CapabilityAtomicFloat16MinMaxEXT = 5616, + CapabilityVectorComputeINTEL = 5617, + CapabilityVectorAnyINTEL = 5619, + CapabilityExpectAssumeKHR = 5629, + CapabilitySubgroupAvcMotionEstimationINTEL = 5696, + CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697, + CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698, + CapabilityVariableLengthArrayINTEL = 5817, + CapabilityFunctionFloatControlINTEL = 5821, + CapabilityFPGAMemoryAttributesINTEL = 5824, + CapabilityFPFastMathModeINTEL = 5837, + CapabilityArbitraryPrecisionIntegersINTEL = 5844, + CapabilityArbitraryPrecisionFloatingPointINTEL = 5845, + CapabilityUnstructuredLoopControlsINTEL = 5886, + CapabilityFPGALoopControlsINTEL = 5888, + CapabilityKernelAttributesINTEL = 5892, + CapabilityFPGAKernelAttributesINTEL = 5897, + CapabilityFPGAMemoryAccessesINTEL = 5898, + CapabilityFPGAClusterAttributesINTEL = 5904, + CapabilityLoopFuseINTEL = 5906, + CapabilityFPGABufferLocationINTEL = 5920, + CapabilityArbitraryPrecisionFixedPointINTEL = 5922, + CapabilityUSMStorageClassesINTEL = 5935, + CapabilityIOPipesINTEL = 5943, + CapabilityBlockingPipesINTEL = 5945, + CapabilityFPGARegINTEL = 5948, + CapabilityDotProductInputAll = 6016, + CapabilityDotProductInputAllKHR = 6016, + CapabilityDotProductInput4x8Bit = 6017, + CapabilityDotProductInput4x8BitKHR = 6017, + CapabilityDotProductInput4x8BitPacked = 6018, + CapabilityDotProductInput4x8BitPackedKHR = 6018, + CapabilityDotProduct = 6019, + CapabilityDotProductKHR = 6019, + CapabilityBitInstructions = 6025, + CapabilityAtomicFloat32AddEXT = 6033, + CapabilityAtomicFloat64AddEXT = 6034, + CapabilityLongConstantCompositeINTEL = 6089, + CapabilityOptNoneINTEL = 6094, + CapabilityAtomicFloat16AddEXT = 6095, + CapabilityDebugInfoModuleINTEL = 6114, + CapabilityMax = 0x7fffffff, +}; + +enum RayFlagsShift { + RayFlagsOpaqueKHRShift = 0, + RayFlagsNoOpaqueKHRShift = 1, + RayFlagsTerminateOnFirstHitKHRShift = 2, + RayFlagsSkipClosestHitShaderKHRShift = 3, + RayFlagsCullBackFacingTrianglesKHRShift = 4, + RayFlagsCullFrontFacingTrianglesKHRShift = 5, + RayFlagsCullOpaqueKHRShift = 6, + RayFlagsCullNoOpaqueKHRShift = 7, + RayFlagsSkipTrianglesKHRShift = 8, + RayFlagsSkipAABBsKHRShift = 9, + RayFlagsMax = 0x7fffffff, +}; + +enum RayFlagsMask { + RayFlagsMaskNone = 0, + RayFlagsOpaqueKHRMask = 0x00000001, + RayFlagsNoOpaqueKHRMask = 0x00000002, + RayFlagsTerminateOnFirstHitKHRMask = 0x00000004, + RayFlagsSkipClosestHitShaderKHRMask = 0x00000008, + RayFlagsCullBackFacingTrianglesKHRMask = 0x00000010, + RayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020, + RayFlagsCullOpaqueKHRMask = 0x00000040, + RayFlagsCullNoOpaqueKHRMask = 0x00000080, + RayFlagsSkipTrianglesKHRMask = 0x00000100, + RayFlagsSkipAABBsKHRMask = 0x00000200, +}; + +enum RayQueryIntersection { + RayQueryIntersectionRayQueryCandidateIntersectionKHR = 0, + RayQueryIntersectionRayQueryCommittedIntersectionKHR = 1, + RayQueryIntersectionMax = 0x7fffffff, +}; + +enum RayQueryCommittedIntersectionType { + RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0, + RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1, + RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2, + RayQueryCommittedIntersectionTypeMax = 0x7fffffff, +}; + +enum RayQueryCandidateIntersectionType { + RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0, + RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1, + RayQueryCandidateIntersectionTypeMax = 0x7fffffff, +}; + +enum FragmentShadingRateShift { + FragmentShadingRateVertical2PixelsShift = 0, + FragmentShadingRateVertical4PixelsShift = 1, + FragmentShadingRateHorizontal2PixelsShift = 2, + FragmentShadingRateHorizontal4PixelsShift = 3, + FragmentShadingRateMax = 0x7fffffff, +}; + +enum FragmentShadingRateMask { + FragmentShadingRateMaskNone = 0, + FragmentShadingRateVertical2PixelsMask = 0x00000001, + FragmentShadingRateVertical4PixelsMask = 0x00000002, + FragmentShadingRateHorizontal2PixelsMask = 0x00000004, + FragmentShadingRateHorizontal4PixelsMask = 0x00000008, +}; + +enum FPDenormMode { + FPDenormModePreserve = 0, + FPDenormModeFlushToZero = 1, + FPDenormModeMax = 0x7fffffff, +}; + +enum FPOperationMode { + FPOperationModeIEEE = 0, + FPOperationModeALT = 1, + FPOperationModeMax = 0x7fffffff, +}; + +enum QuantizationModes { + QuantizationModesTRN = 0, + QuantizationModesTRN_ZERO = 1, + QuantizationModesRND = 2, + QuantizationModesRND_ZERO = 3, + QuantizationModesRND_INF = 4, + QuantizationModesRND_MIN_INF = 5, + QuantizationModesRND_CONV = 6, + QuantizationModesRND_CONV_ODD = 7, + QuantizationModesMax = 0x7fffffff, +}; + +enum OverflowModes { + OverflowModesWRAP = 0, + OverflowModesSAT = 1, + OverflowModesSAT_ZERO = 2, + OverflowModesSAT_SYM = 3, + OverflowModesMax = 0x7fffffff, +}; + +enum PackedVectorFormat { + PackedVectorFormatPackedVectorFormat4x8Bit = 0, + PackedVectorFormatPackedVectorFormat4x8BitKHR = 0, + PackedVectorFormatMax = 0x7fffffff, +}; + +enum Op { + OpNop = 0, + OpUndef = 1, + OpSourceContinued = 2, + OpSource = 3, + OpSourceExtension = 4, + OpName = 5, + OpMemberName = 6, + OpString = 7, + OpLine = 8, + OpExtension = 10, + OpExtInstImport = 11, + OpExtInst = 12, + OpMemoryModel = 14, + OpEntryPoint = 15, + OpExecutionMode = 16, + OpCapability = 17, + OpTypeVoid = 19, + OpTypeBool = 20, + OpTypeInt = 21, + OpTypeFloat = 22, + OpTypeVector = 23, + OpTypeMatrix = 24, + OpTypeImage = 25, + OpTypeSampler = 26, + OpTypeSampledImage = 27, + OpTypeArray = 28, + OpTypeRuntimeArray = 29, + OpTypeStruct = 30, + OpTypeOpaque = 31, + OpTypePointer = 32, + OpTypeFunction = 33, + OpTypeEvent = 34, + OpTypeDeviceEvent = 35, + OpTypeReserveId = 36, + OpTypeQueue = 37, + OpTypePipe = 38, + OpTypeForwardPointer = 39, + OpConstantTrue = 41, + OpConstantFalse = 42, + OpConstant = 43, + OpConstantComposite = 44, + OpConstantSampler = 45, + OpConstantNull = 46, + OpSpecConstantTrue = 48, + OpSpecConstantFalse = 49, + OpSpecConstant = 50, + OpSpecConstantComposite = 51, + OpSpecConstantOp = 52, + OpFunction = 54, + OpFunctionParameter = 55, + OpFunctionEnd = 56, + OpFunctionCall = 57, + OpVariable = 59, + OpImageTexelPointer = 60, + OpLoad = 61, + OpStore = 62, + OpCopyMemory = 63, + OpCopyMemorySized = 64, + OpAccessChain = 65, + OpInBoundsAccessChain = 66, + OpPtrAccessChain = 67, + OpArrayLength = 68, + OpGenericPtrMemSemantics = 69, + OpInBoundsPtrAccessChain = 70, + OpDecorate = 71, + OpMemberDecorate = 72, + OpDecorationGroup = 73, + OpGroupDecorate = 74, + OpGroupMemberDecorate = 75, + OpVectorExtractDynamic = 77, + OpVectorInsertDynamic = 78, + OpVectorShuffle = 79, + OpCompositeConstruct = 80, + OpCompositeExtract = 81, + OpCompositeInsert = 82, + OpCopyObject = 83, + OpTranspose = 84, + OpSampledImage = 86, + OpImageSampleImplicitLod = 87, + OpImageSampleExplicitLod = 88, + OpImageSampleDrefImplicitLod = 89, + OpImageSampleDrefExplicitLod = 90, + OpImageSampleProjImplicitLod = 91, + OpImageSampleProjExplicitLod = 92, + OpImageSampleProjDrefImplicitLod = 93, + OpImageSampleProjDrefExplicitLod = 94, + OpImageFetch = 95, + OpImageGather = 96, + OpImageDrefGather = 97, + OpImageRead = 98, + OpImageWrite = 99, + OpImage = 100, + OpImageQueryFormat = 101, + OpImageQueryOrder = 102, + OpImageQuerySizeLod = 103, + OpImageQuerySize = 104, + OpImageQueryLod = 105, + OpImageQueryLevels = 106, + OpImageQuerySamples = 107, + OpConvertFToU = 109, + OpConvertFToS = 110, + OpConvertSToF = 111, + OpConvertUToF = 112, + OpUConvert = 113, + OpSConvert = 114, + OpFConvert = 115, + OpQuantizeToF16 = 116, + OpConvertPtrToU = 117, + OpSatConvertSToU = 118, + OpSatConvertUToS = 119, + OpConvertUToPtr = 120, + OpPtrCastToGeneric = 121, + OpGenericCastToPtr = 122, + OpGenericCastToPtrExplicit = 123, + OpBitcast = 124, + OpSNegate = 126, + OpFNegate = 127, + OpIAdd = 128, + OpFAdd = 129, + OpISub = 130, + OpFSub = 131, + OpIMul = 132, + OpFMul = 133, + OpUDiv = 134, + OpSDiv = 135, + OpFDiv = 136, + OpUMod = 137, + OpSRem = 138, + OpSMod = 139, + OpFRem = 140, + OpFMod = 141, + OpVectorTimesScalar = 142, + OpMatrixTimesScalar = 143, + OpVectorTimesMatrix = 144, + OpMatrixTimesVector = 145, + OpMatrixTimesMatrix = 146, + OpOuterProduct = 147, + OpDot = 148, + OpIAddCarry = 149, + OpISubBorrow = 150, + OpUMulExtended = 151, + OpSMulExtended = 152, + OpAny = 154, + OpAll = 155, + OpIsNan = 156, + OpIsInf = 157, + OpIsFinite = 158, + OpIsNormal = 159, + OpSignBitSet = 160, + OpLessOrGreater = 161, + OpOrdered = 162, + OpUnordered = 163, + OpLogicalEqual = 164, + OpLogicalNotEqual = 165, + OpLogicalOr = 166, + OpLogicalAnd = 167, + OpLogicalNot = 168, + OpSelect = 169, + OpIEqual = 170, + OpINotEqual = 171, + OpUGreaterThan = 172, + OpSGreaterThan = 173, + OpUGreaterThanEqual = 174, + OpSGreaterThanEqual = 175, + OpULessThan = 176, + OpSLessThan = 177, + OpULessThanEqual = 178, + OpSLessThanEqual = 179, + OpFOrdEqual = 180, + OpFUnordEqual = 181, + OpFOrdNotEqual = 182, + OpFUnordNotEqual = 183, + OpFOrdLessThan = 184, + OpFUnordLessThan = 185, + OpFOrdGreaterThan = 186, + OpFUnordGreaterThan = 187, + OpFOrdLessThanEqual = 188, + OpFUnordLessThanEqual = 189, + OpFOrdGreaterThanEqual = 190, + OpFUnordGreaterThanEqual = 191, + OpShiftRightLogical = 194, + OpShiftRightArithmetic = 195, + OpShiftLeftLogical = 196, + OpBitwiseOr = 197, + OpBitwiseXor = 198, + OpBitwiseAnd = 199, + OpNot = 200, + OpBitFieldInsert = 201, + OpBitFieldSExtract = 202, + OpBitFieldUExtract = 203, + OpBitReverse = 204, + OpBitCount = 205, + OpDPdx = 207, + OpDPdy = 208, + OpFwidth = 209, + OpDPdxFine = 210, + OpDPdyFine = 211, + OpFwidthFine = 212, + OpDPdxCoarse = 213, + OpDPdyCoarse = 214, + OpFwidthCoarse = 215, + OpEmitVertex = 218, + OpEndPrimitive = 219, + OpEmitStreamVertex = 220, + OpEndStreamPrimitive = 221, + OpControlBarrier = 224, + OpMemoryBarrier = 225, + OpAtomicLoad = 227, + OpAtomicStore = 228, + OpAtomicExchange = 229, + OpAtomicCompareExchange = 230, + OpAtomicCompareExchangeWeak = 231, + OpAtomicIIncrement = 232, + OpAtomicIDecrement = 233, + OpAtomicIAdd = 234, + OpAtomicISub = 235, + OpAtomicSMin = 236, + OpAtomicUMin = 237, + OpAtomicSMax = 238, + OpAtomicUMax = 239, + OpAtomicAnd = 240, + OpAtomicOr = 241, + OpAtomicXor = 242, + OpPhi = 245, + OpLoopMerge = 246, + OpSelectionMerge = 247, + OpLabel = 248, + OpBranch = 249, + OpBranchConditional = 250, + OpSwitch = 251, + OpKill = 252, + OpReturn = 253, + OpReturnValue = 254, + OpUnreachable = 255, + OpLifetimeStart = 256, + OpLifetimeStop = 257, + OpGroupAsyncCopy = 259, + OpGroupWaitEvents = 260, + OpGroupAll = 261, + OpGroupAny = 262, + OpGroupBroadcast = 263, + OpGroupIAdd = 264, + OpGroupFAdd = 265, + OpGroupFMin = 266, + OpGroupUMin = 267, + OpGroupSMin = 268, + OpGroupFMax = 269, + OpGroupUMax = 270, + OpGroupSMax = 271, + OpReadPipe = 274, + OpWritePipe = 275, + OpReservedReadPipe = 276, + OpReservedWritePipe = 277, + OpReserveReadPipePackets = 278, + OpReserveWritePipePackets = 279, + OpCommitReadPipe = 280, + OpCommitWritePipe = 281, + OpIsValidReserveId = 282, + OpGetNumPipePackets = 283, + OpGetMaxPipePackets = 284, + OpGroupReserveReadPipePackets = 285, + OpGroupReserveWritePipePackets = 286, + OpGroupCommitReadPipe = 287, + OpGroupCommitWritePipe = 288, + OpEnqueueMarker = 291, + OpEnqueueKernel = 292, + OpGetKernelNDrangeSubGroupCount = 293, + OpGetKernelNDrangeMaxSubGroupSize = 294, + OpGetKernelWorkGroupSize = 295, + OpGetKernelPreferredWorkGroupSizeMultiple = 296, + OpRetainEvent = 297, + OpReleaseEvent = 298, + OpCreateUserEvent = 299, + OpIsValidEvent = 300, + OpSetUserEventStatus = 301, + OpCaptureEventProfilingInfo = 302, + OpGetDefaultQueue = 303, + OpBuildNDRange = 304, + OpImageSparseSampleImplicitLod = 305, + OpImageSparseSampleExplicitLod = 306, + OpImageSparseSampleDrefImplicitLod = 307, + OpImageSparseSampleDrefExplicitLod = 308, + OpImageSparseSampleProjImplicitLod = 309, + OpImageSparseSampleProjExplicitLod = 310, + OpImageSparseSampleProjDrefImplicitLod = 311, + OpImageSparseSampleProjDrefExplicitLod = 312, + OpImageSparseFetch = 313, + OpImageSparseGather = 314, + OpImageSparseDrefGather = 315, + OpImageSparseTexelsResident = 316, + OpNoLine = 317, + OpAtomicFlagTestAndSet = 318, + OpAtomicFlagClear = 319, + OpImageSparseRead = 320, + OpSizeOf = 321, + OpTypePipeStorage = 322, + OpConstantPipeStorage = 323, + OpCreatePipeFromPipeStorage = 324, + OpGetKernelLocalSizeForSubgroupCount = 325, + OpGetKernelMaxNumSubgroups = 326, + OpTypeNamedBarrier = 327, + OpNamedBarrierInitialize = 328, + OpMemoryNamedBarrier = 329, + OpModuleProcessed = 330, + OpExecutionModeId = 331, + OpDecorateId = 332, + OpGroupNonUniformElect = 333, + OpGroupNonUniformAll = 334, + OpGroupNonUniformAny = 335, + OpGroupNonUniformAllEqual = 336, + OpGroupNonUniformBroadcast = 337, + OpGroupNonUniformBroadcastFirst = 338, + OpGroupNonUniformBallot = 339, + OpGroupNonUniformInverseBallot = 340, + OpGroupNonUniformBallotBitExtract = 341, + OpGroupNonUniformBallotBitCount = 342, + OpGroupNonUniformBallotFindLSB = 343, + OpGroupNonUniformBallotFindMSB = 344, + OpGroupNonUniformShuffle = 345, + OpGroupNonUniformShuffleXor = 346, + OpGroupNonUniformShuffleUp = 347, + OpGroupNonUniformShuffleDown = 348, + OpGroupNonUniformIAdd = 349, + OpGroupNonUniformFAdd = 350, + OpGroupNonUniformIMul = 351, + OpGroupNonUniformFMul = 352, + OpGroupNonUniformSMin = 353, + OpGroupNonUniformUMin = 354, + OpGroupNonUniformFMin = 355, + OpGroupNonUniformSMax = 356, + OpGroupNonUniformUMax = 357, + OpGroupNonUniformFMax = 358, + OpGroupNonUniformBitwiseAnd = 359, + OpGroupNonUniformBitwiseOr = 360, + OpGroupNonUniformBitwiseXor = 361, + OpGroupNonUniformLogicalAnd = 362, + OpGroupNonUniformLogicalOr = 363, + OpGroupNonUniformLogicalXor = 364, + OpGroupNonUniformQuadBroadcast = 365, + OpGroupNonUniformQuadSwap = 366, + OpCopyLogical = 400, + OpPtrEqual = 401, + OpPtrNotEqual = 402, + OpPtrDiff = 403, + OpTerminateInvocation = 4416, + OpSubgroupBallotKHR = 4421, + OpSubgroupFirstInvocationKHR = 4422, + OpSubgroupAllKHR = 4428, + OpSubgroupAnyKHR = 4429, + OpSubgroupAllEqualKHR = 4430, + OpSubgroupReadInvocationKHR = 4432, + OpTraceRayKHR = 4445, + OpExecuteCallableKHR = 4446, + OpConvertUToAccelerationStructureKHR = 4447, + OpIgnoreIntersectionKHR = 4448, + OpTerminateRayKHR = 4449, + OpSDot = 4450, + OpSDotKHR = 4450, + OpUDot = 4451, + OpUDotKHR = 4451, + OpSUDot = 4452, + OpSUDotKHR = 4452, + OpSDotAccSat = 4453, + OpSDotAccSatKHR = 4453, + OpUDotAccSat = 4454, + OpUDotAccSatKHR = 4454, + OpSUDotAccSat = 4455, + OpSUDotAccSatKHR = 4455, + OpTypeRayQueryKHR = 4472, + OpRayQueryInitializeKHR = 4473, + OpRayQueryTerminateKHR = 4474, + OpRayQueryGenerateIntersectionKHR = 4475, + OpRayQueryConfirmIntersectionKHR = 4476, + OpRayQueryProceedKHR = 4477, + OpRayQueryGetIntersectionTypeKHR = 4479, + OpGroupIAddNonUniformAMD = 5000, + OpGroupFAddNonUniformAMD = 5001, + OpGroupFMinNonUniformAMD = 5002, + OpGroupUMinNonUniformAMD = 5003, + OpGroupSMinNonUniformAMD = 5004, + OpGroupFMaxNonUniformAMD = 5005, + OpGroupUMaxNonUniformAMD = 5006, + OpGroupSMaxNonUniformAMD = 5007, + OpFragmentMaskFetchAMD = 5011, + OpFragmentFetchAMD = 5012, + OpReadClockKHR = 5056, + OpImageSampleFootprintNV = 5283, + OpGroupNonUniformPartitionNV = 5296, + OpWritePackedPrimitiveIndices4x8NV = 5299, + OpReportIntersectionKHR = 5334, + OpReportIntersectionNV = 5334, + OpIgnoreIntersectionNV = 5335, + OpTerminateRayNV = 5336, + OpTraceNV = 5337, + OpTraceMotionNV = 5338, + OpTraceRayMotionNV = 5339, + OpTypeAccelerationStructureKHR = 5341, + OpTypeAccelerationStructureNV = 5341, + OpExecuteCallableNV = 5344, + OpTypeCooperativeMatrixNV = 5358, + OpCooperativeMatrixLoadNV = 5359, + OpCooperativeMatrixStoreNV = 5360, + OpCooperativeMatrixMulAddNV = 5361, + OpCooperativeMatrixLengthNV = 5362, + OpBeginInvocationInterlockEXT = 5364, + OpEndInvocationInterlockEXT = 5365, + OpDemoteToHelperInvocation = 5380, + OpDemoteToHelperInvocationEXT = 5380, + OpIsHelperInvocationEXT = 5381, + OpConvertUToImageNV = 5391, + OpConvertUToSamplerNV = 5392, + OpConvertImageToUNV = 5393, + OpConvertSamplerToUNV = 5394, + OpConvertUToSampledImageNV = 5395, + OpConvertSampledImageToUNV = 5396, + OpSamplerImageAddressingModeNV = 5397, + OpSubgroupShuffleINTEL = 5571, + OpSubgroupShuffleDownINTEL = 5572, + OpSubgroupShuffleUpINTEL = 5573, + OpSubgroupShuffleXorINTEL = 5574, + OpSubgroupBlockReadINTEL = 5575, + OpSubgroupBlockWriteINTEL = 5576, + OpSubgroupImageBlockReadINTEL = 5577, + OpSubgroupImageBlockWriteINTEL = 5578, + OpSubgroupImageMediaBlockReadINTEL = 5580, + OpSubgroupImageMediaBlockWriteINTEL = 5581, + OpUCountLeadingZerosINTEL = 5585, + OpUCountTrailingZerosINTEL = 5586, + OpAbsISubINTEL = 5587, + OpAbsUSubINTEL = 5588, + OpIAddSatINTEL = 5589, + OpUAddSatINTEL = 5590, + OpIAverageINTEL = 5591, + OpUAverageINTEL = 5592, + OpIAverageRoundedINTEL = 5593, + OpUAverageRoundedINTEL = 5594, + OpISubSatINTEL = 5595, + OpUSubSatINTEL = 5596, + OpIMul32x16INTEL = 5597, + OpUMul32x16INTEL = 5598, + OpConstantFunctionPointerINTEL = 5600, + OpFunctionPointerCallINTEL = 5601, + OpAsmTargetINTEL = 5609, + OpAsmINTEL = 5610, + OpAsmCallINTEL = 5611, + OpAtomicFMinEXT = 5614, + OpAtomicFMaxEXT = 5615, + OpAssumeTrueKHR = 5630, + OpExpectKHR = 5631, + OpDecorateString = 5632, + OpDecorateStringGOOGLE = 5632, + OpMemberDecorateString = 5633, + OpMemberDecorateStringGOOGLE = 5633, + OpVmeImageINTEL = 5699, + OpTypeVmeImageINTEL = 5700, + OpTypeAvcImePayloadINTEL = 5701, + OpTypeAvcRefPayloadINTEL = 5702, + OpTypeAvcSicPayloadINTEL = 5703, + OpTypeAvcMcePayloadINTEL = 5704, + OpTypeAvcMceResultINTEL = 5705, + OpTypeAvcImeResultINTEL = 5706, + OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707, + OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708, + OpTypeAvcImeSingleReferenceStreaminINTEL = 5709, + OpTypeAvcImeDualReferenceStreaminINTEL = 5710, + OpTypeAvcRefResultINTEL = 5711, + OpTypeAvcSicResultINTEL = 5712, + OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713, + OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714, + OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715, + OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716, + OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717, + OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718, + OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719, + OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720, + OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721, + OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722, + OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723, + OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724, + OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725, + OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726, + OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727, + OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728, + OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729, + OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730, + OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731, + OpSubgroupAvcMceConvertToImePayloadINTEL = 5732, + OpSubgroupAvcMceConvertToImeResultINTEL = 5733, + OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734, + OpSubgroupAvcMceConvertToRefResultINTEL = 5735, + OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736, + OpSubgroupAvcMceConvertToSicResultINTEL = 5737, + OpSubgroupAvcMceGetMotionVectorsINTEL = 5738, + OpSubgroupAvcMceGetInterDistortionsINTEL = 5739, + OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740, + OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741, + OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742, + OpSubgroupAvcMceGetInterDirectionsINTEL = 5743, + OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744, + OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745, + OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746, + OpSubgroupAvcImeInitializeINTEL = 5747, + OpSubgroupAvcImeSetSingleReferenceINTEL = 5748, + OpSubgroupAvcImeSetDualReferenceINTEL = 5749, + OpSubgroupAvcImeRefWindowSizeINTEL = 5750, + OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751, + OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752, + OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753, + OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754, + OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755, + OpSubgroupAvcImeSetWeightedSadINTEL = 5756, + OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757, + OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758, + OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759, + OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760, + OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761, + OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762, + OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763, + OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764, + OpSubgroupAvcImeConvertToMceResultINTEL = 5765, + OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766, + OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767, + OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768, + OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769, + OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770, + OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771, + OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772, + OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773, + OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774, + OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775, + OpSubgroupAvcImeGetBorderReachedINTEL = 5776, + OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777, + OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778, + OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779, + OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780, + OpSubgroupAvcFmeInitializeINTEL = 5781, + OpSubgroupAvcBmeInitializeINTEL = 5782, + OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783, + OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784, + OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785, + OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786, + OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787, + OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788, + OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789, + OpSubgroupAvcRefConvertToMceResultINTEL = 5790, + OpSubgroupAvcSicInitializeINTEL = 5791, + OpSubgroupAvcSicConfigureSkcINTEL = 5792, + OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793, + OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794, + OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795, + OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796, + OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797, + OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798, + OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799, + OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800, + OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801, + OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802, + OpSubgroupAvcSicEvaluateIpeINTEL = 5803, + OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804, + OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805, + OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806, + OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807, + OpSubgroupAvcSicConvertToMceResultINTEL = 5808, + OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809, + OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810, + OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811, + OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812, + OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813, + OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814, + OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815, + OpSubgroupAvcSicGetInterRawSadsINTEL = 5816, + OpVariableLengthArrayINTEL = 5818, + OpSaveMemoryINTEL = 5819, + OpRestoreMemoryINTEL = 5820, + OpArbitraryFloatSinCosPiINTEL = 5840, + OpArbitraryFloatCastINTEL = 5841, + OpArbitraryFloatCastFromIntINTEL = 5842, + OpArbitraryFloatCastToIntINTEL = 5843, + OpArbitraryFloatAddINTEL = 5846, + OpArbitraryFloatSubINTEL = 5847, + OpArbitraryFloatMulINTEL = 5848, + OpArbitraryFloatDivINTEL = 5849, + OpArbitraryFloatGTINTEL = 5850, + OpArbitraryFloatGEINTEL = 5851, + OpArbitraryFloatLTINTEL = 5852, + OpArbitraryFloatLEINTEL = 5853, + OpArbitraryFloatEQINTEL = 5854, + OpArbitraryFloatRecipINTEL = 5855, + OpArbitraryFloatRSqrtINTEL = 5856, + OpArbitraryFloatCbrtINTEL = 5857, + OpArbitraryFloatHypotINTEL = 5858, + OpArbitraryFloatSqrtINTEL = 5859, + OpArbitraryFloatLogINTEL = 5860, + OpArbitraryFloatLog2INTEL = 5861, + OpArbitraryFloatLog10INTEL = 5862, + OpArbitraryFloatLog1pINTEL = 5863, + OpArbitraryFloatExpINTEL = 5864, + OpArbitraryFloatExp2INTEL = 5865, + OpArbitraryFloatExp10INTEL = 5866, + OpArbitraryFloatExpm1INTEL = 5867, + OpArbitraryFloatSinINTEL = 5868, + OpArbitraryFloatCosINTEL = 5869, + OpArbitraryFloatSinCosINTEL = 5870, + OpArbitraryFloatSinPiINTEL = 5871, + OpArbitraryFloatCosPiINTEL = 5872, + OpArbitraryFloatASinINTEL = 5873, + OpArbitraryFloatASinPiINTEL = 5874, + OpArbitraryFloatACosINTEL = 5875, + OpArbitraryFloatACosPiINTEL = 5876, + OpArbitraryFloatATanINTEL = 5877, + OpArbitraryFloatATanPiINTEL = 5878, + OpArbitraryFloatATan2INTEL = 5879, + OpArbitraryFloatPowINTEL = 5880, + OpArbitraryFloatPowRINTEL = 5881, + OpArbitraryFloatPowNINTEL = 5882, + OpLoopControlINTEL = 5887, + OpFixedSqrtINTEL = 5923, + OpFixedRecipINTEL = 5924, + OpFixedRsqrtINTEL = 5925, + OpFixedSinINTEL = 5926, + OpFixedCosINTEL = 5927, + OpFixedSinCosINTEL = 5928, + OpFixedSinPiINTEL = 5929, + OpFixedCosPiINTEL = 5930, + OpFixedSinCosPiINTEL = 5931, + OpFixedLogINTEL = 5932, + OpFixedExpINTEL = 5933, + OpPtrCastToCrossWorkgroupINTEL = 5934, + OpCrossWorkgroupCastToPtrINTEL = 5938, + OpReadPipeBlockingINTEL = 5946, + OpWritePipeBlockingINTEL = 5947, + OpFPGARegINTEL = 5949, + OpRayQueryGetRayTMinKHR = 6016, + OpRayQueryGetRayFlagsKHR = 6017, + OpRayQueryGetIntersectionTKHR = 6018, + OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019, + OpRayQueryGetIntersectionInstanceIdKHR = 6020, + OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021, + OpRayQueryGetIntersectionGeometryIndexKHR = 6022, + OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023, + OpRayQueryGetIntersectionBarycentricsKHR = 6024, + OpRayQueryGetIntersectionFrontFaceKHR = 6025, + OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026, + OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027, + OpRayQueryGetIntersectionObjectRayOriginKHR = 6028, + OpRayQueryGetWorldRayDirectionKHR = 6029, + OpRayQueryGetWorldRayOriginKHR = 6030, + OpRayQueryGetIntersectionObjectToWorldKHR = 6031, + OpRayQueryGetIntersectionWorldToObjectKHR = 6032, + OpAtomicFAddEXT = 6035, + OpTypeBufferSurfaceINTEL = 6086, + OpTypeStructContinuedINTEL = 6090, + OpConstantCompositeContinuedINTEL = 6091, + OpSpecConstantCompositeContinuedINTEL = 6092, + OpMax = 0x7fffffff, +}; + +#ifdef SPV_ENABLE_UTILITY_CODE +inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { + *hasResult = *hasResultType = false; + switch (opcode) { + default: /* unknown opcode */ break; + case OpNop: *hasResult = false; *hasResultType = false; break; + case OpUndef: *hasResult = true; *hasResultType = true; break; + case OpSourceContinued: *hasResult = false; *hasResultType = false; break; + case OpSource: *hasResult = false; *hasResultType = false; break; + case OpSourceExtension: *hasResult = false; *hasResultType = false; break; + case OpName: *hasResult = false; *hasResultType = false; break; + case OpMemberName: *hasResult = false; *hasResultType = false; break; + case OpString: *hasResult = true; *hasResultType = false; break; + case OpLine: *hasResult = false; *hasResultType = false; break; + case OpExtension: *hasResult = false; *hasResultType = false; break; + case OpExtInstImport: *hasResult = true; *hasResultType = false; break; + case OpExtInst: *hasResult = true; *hasResultType = true; break; + case OpMemoryModel: *hasResult = false; *hasResultType = false; break; + case OpEntryPoint: *hasResult = false; *hasResultType = false; break; + case OpExecutionMode: *hasResult = false; *hasResultType = false; break; + case OpCapability: *hasResult = false; *hasResultType = false; break; + case OpTypeVoid: *hasResult = true; *hasResultType = false; break; + case OpTypeBool: *hasResult = true; *hasResultType = false; break; + case OpTypeInt: *hasResult = true; *hasResultType = false; break; + case OpTypeFloat: *hasResult = true; *hasResultType = false; break; + case OpTypeVector: *hasResult = true; *hasResultType = false; break; + case OpTypeMatrix: *hasResult = true; *hasResultType = false; break; + case OpTypeImage: *hasResult = true; *hasResultType = false; break; + case OpTypeSampler: *hasResult = true; *hasResultType = false; break; + case OpTypeSampledImage: *hasResult = true; *hasResultType = false; break; + case OpTypeArray: *hasResult = true; *hasResultType = false; break; + case OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break; + case OpTypeStruct: *hasResult = true; *hasResultType = false; break; + case OpTypeOpaque: *hasResult = true; *hasResultType = false; break; + case OpTypePointer: *hasResult = true; *hasResultType = false; break; + case OpTypeFunction: *hasResult = true; *hasResultType = false; break; + case OpTypeEvent: *hasResult = true; *hasResultType = false; break; + case OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break; + case OpTypeReserveId: *hasResult = true; *hasResultType = false; break; + case OpTypeQueue: *hasResult = true; *hasResultType = false; break; + case OpTypePipe: *hasResult = true; *hasResultType = false; break; + case OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break; + case OpConstantTrue: *hasResult = true; *hasResultType = true; break; + case OpConstantFalse: *hasResult = true; *hasResultType = true; break; + case OpConstant: *hasResult = true; *hasResultType = true; break; + case OpConstantComposite: *hasResult = true; *hasResultType = true; break; + case OpConstantSampler: *hasResult = true; *hasResultType = true; break; + case OpConstantNull: *hasResult = true; *hasResultType = true; break; + case OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break; + case OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break; + case OpSpecConstant: *hasResult = true; *hasResultType = true; break; + case OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break; + case OpSpecConstantOp: *hasResult = true; *hasResultType = true; break; + case OpFunction: *hasResult = true; *hasResultType = true; break; + case OpFunctionParameter: *hasResult = true; *hasResultType = true; break; + case OpFunctionEnd: *hasResult = false; *hasResultType = false; break; + case OpFunctionCall: *hasResult = true; *hasResultType = true; break; + case OpVariable: *hasResult = true; *hasResultType = true; break; + case OpImageTexelPointer: *hasResult = true; *hasResultType = true; break; + case OpLoad: *hasResult = true; *hasResultType = true; break; + case OpStore: *hasResult = false; *hasResultType = false; break; + case OpCopyMemory: *hasResult = false; *hasResultType = false; break; + case OpCopyMemorySized: *hasResult = false; *hasResultType = false; break; + case OpAccessChain: *hasResult = true; *hasResultType = true; break; + case OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break; + case OpPtrAccessChain: *hasResult = true; *hasResultType = true; break; + case OpArrayLength: *hasResult = true; *hasResultType = true; break; + case OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break; + case OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break; + case OpDecorate: *hasResult = false; *hasResultType = false; break; + case OpMemberDecorate: *hasResult = false; *hasResultType = false; break; + case OpDecorationGroup: *hasResult = true; *hasResultType = false; break; + case OpGroupDecorate: *hasResult = false; *hasResultType = false; break; + case OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break; + case OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break; + case OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break; + case OpVectorShuffle: *hasResult = true; *hasResultType = true; break; + case OpCompositeConstruct: *hasResult = true; *hasResultType = true; break; + case OpCompositeExtract: *hasResult = true; *hasResultType = true; break; + case OpCompositeInsert: *hasResult = true; *hasResultType = true; break; + case OpCopyObject: *hasResult = true; *hasResultType = true; break; + case OpTranspose: *hasResult = true; *hasResultType = true; break; + case OpSampledImage: *hasResult = true; *hasResultType = true; break; + case OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageFetch: *hasResult = true; *hasResultType = true; break; + case OpImageGather: *hasResult = true; *hasResultType = true; break; + case OpImageDrefGather: *hasResult = true; *hasResultType = true; break; + case OpImageRead: *hasResult = true; *hasResultType = true; break; + case OpImageWrite: *hasResult = false; *hasResultType = false; break; + case OpImage: *hasResult = true; *hasResultType = true; break; + case OpImageQueryFormat: *hasResult = true; *hasResultType = true; break; + case OpImageQueryOrder: *hasResult = true; *hasResultType = true; break; + case OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break; + case OpImageQuerySize: *hasResult = true; *hasResultType = true; break; + case OpImageQueryLod: *hasResult = true; *hasResultType = true; break; + case OpImageQueryLevels: *hasResult = true; *hasResultType = true; break; + case OpImageQuerySamples: *hasResult = true; *hasResultType = true; break; + case OpConvertFToU: *hasResult = true; *hasResultType = true; break; + case OpConvertFToS: *hasResult = true; *hasResultType = true; break; + case OpConvertSToF: *hasResult = true; *hasResultType = true; break; + case OpConvertUToF: *hasResult = true; *hasResultType = true; break; + case OpUConvert: *hasResult = true; *hasResultType = true; break; + case OpSConvert: *hasResult = true; *hasResultType = true; break; + case OpFConvert: *hasResult = true; *hasResultType = true; break; + case OpQuantizeToF16: *hasResult = true; *hasResultType = true; break; + case OpConvertPtrToU: *hasResult = true; *hasResultType = true; break; + case OpSatConvertSToU: *hasResult = true; *hasResultType = true; break; + case OpSatConvertUToS: *hasResult = true; *hasResultType = true; break; + case OpConvertUToPtr: *hasResult = true; *hasResultType = true; break; + case OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break; + case OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break; + case OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break; + case OpBitcast: *hasResult = true; *hasResultType = true; break; + case OpSNegate: *hasResult = true; *hasResultType = true; break; + case OpFNegate: *hasResult = true; *hasResultType = true; break; + case OpIAdd: *hasResult = true; *hasResultType = true; break; + case OpFAdd: *hasResult = true; *hasResultType = true; break; + case OpISub: *hasResult = true; *hasResultType = true; break; + case OpFSub: *hasResult = true; *hasResultType = true; break; + case OpIMul: *hasResult = true; *hasResultType = true; break; + case OpFMul: *hasResult = true; *hasResultType = true; break; + case OpUDiv: *hasResult = true; *hasResultType = true; break; + case OpSDiv: *hasResult = true; *hasResultType = true; break; + case OpFDiv: *hasResult = true; *hasResultType = true; break; + case OpUMod: *hasResult = true; *hasResultType = true; break; + case OpSRem: *hasResult = true; *hasResultType = true; break; + case OpSMod: *hasResult = true; *hasResultType = true; break; + case OpFRem: *hasResult = true; *hasResultType = true; break; + case OpFMod: *hasResult = true; *hasResultType = true; break; + case OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break; + case OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break; + case OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break; + case OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break; + case OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break; + case OpOuterProduct: *hasResult = true; *hasResultType = true; break; + case OpDot: *hasResult = true; *hasResultType = true; break; + case OpIAddCarry: *hasResult = true; *hasResultType = true; break; + case OpISubBorrow: *hasResult = true; *hasResultType = true; break; + case OpUMulExtended: *hasResult = true; *hasResultType = true; break; + case OpSMulExtended: *hasResult = true; *hasResultType = true; break; + case OpAny: *hasResult = true; *hasResultType = true; break; + case OpAll: *hasResult = true; *hasResultType = true; break; + case OpIsNan: *hasResult = true; *hasResultType = true; break; + case OpIsInf: *hasResult = true; *hasResultType = true; break; + case OpIsFinite: *hasResult = true; *hasResultType = true; break; + case OpIsNormal: *hasResult = true; *hasResultType = true; break; + case OpSignBitSet: *hasResult = true; *hasResultType = true; break; + case OpLessOrGreater: *hasResult = true; *hasResultType = true; break; + case OpOrdered: *hasResult = true; *hasResultType = true; break; + case OpUnordered: *hasResult = true; *hasResultType = true; break; + case OpLogicalEqual: *hasResult = true; *hasResultType = true; break; + case OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break; + case OpLogicalOr: *hasResult = true; *hasResultType = true; break; + case OpLogicalAnd: *hasResult = true; *hasResultType = true; break; + case OpLogicalNot: *hasResult = true; *hasResultType = true; break; + case OpSelect: *hasResult = true; *hasResultType = true; break; + case OpIEqual: *hasResult = true; *hasResultType = true; break; + case OpINotEqual: *hasResult = true; *hasResultType = true; break; + case OpUGreaterThan: *hasResult = true; *hasResultType = true; break; + case OpSGreaterThan: *hasResult = true; *hasResultType = true; break; + case OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break; + case OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break; + case OpULessThan: *hasResult = true; *hasResultType = true; break; + case OpSLessThan: *hasResult = true; *hasResultType = true; break; + case OpULessThanEqual: *hasResult = true; *hasResultType = true; break; + case OpSLessThanEqual: *hasResult = true; *hasResultType = true; break; + case OpFOrdEqual: *hasResult = true; *hasResultType = true; break; + case OpFUnordEqual: *hasResult = true; *hasResultType = true; break; + case OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break; + case OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break; + case OpFOrdLessThan: *hasResult = true; *hasResultType = true; break; + case OpFUnordLessThan: *hasResult = true; *hasResultType = true; break; + case OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break; + case OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break; + case OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break; + case OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break; + case OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break; + case OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break; + case OpShiftRightLogical: *hasResult = true; *hasResultType = true; break; + case OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break; + case OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break; + case OpBitwiseOr: *hasResult = true; *hasResultType = true; break; + case OpBitwiseXor: *hasResult = true; *hasResultType = true; break; + case OpBitwiseAnd: *hasResult = true; *hasResultType = true; break; + case OpNot: *hasResult = true; *hasResultType = true; break; + case OpBitFieldInsert: *hasResult = true; *hasResultType = true; break; + case OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break; + case OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break; + case OpBitReverse: *hasResult = true; *hasResultType = true; break; + case OpBitCount: *hasResult = true; *hasResultType = true; break; + case OpDPdx: *hasResult = true; *hasResultType = true; break; + case OpDPdy: *hasResult = true; *hasResultType = true; break; + case OpFwidth: *hasResult = true; *hasResultType = true; break; + case OpDPdxFine: *hasResult = true; *hasResultType = true; break; + case OpDPdyFine: *hasResult = true; *hasResultType = true; break; + case OpFwidthFine: *hasResult = true; *hasResultType = true; break; + case OpDPdxCoarse: *hasResult = true; *hasResultType = true; break; + case OpDPdyCoarse: *hasResult = true; *hasResultType = true; break; + case OpFwidthCoarse: *hasResult = true; *hasResultType = true; break; + case OpEmitVertex: *hasResult = false; *hasResultType = false; break; + case OpEndPrimitive: *hasResult = false; *hasResultType = false; break; + case OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break; + case OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break; + case OpControlBarrier: *hasResult = false; *hasResultType = false; break; + case OpMemoryBarrier: *hasResult = false; *hasResultType = false; break; + case OpAtomicLoad: *hasResult = true; *hasResultType = true; break; + case OpAtomicStore: *hasResult = false; *hasResultType = false; break; + case OpAtomicExchange: *hasResult = true; *hasResultType = true; break; + case OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break; + case OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break; + case OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break; + case OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break; + case OpAtomicIAdd: *hasResult = true; *hasResultType = true; break; + case OpAtomicISub: *hasResult = true; *hasResultType = true; break; + case OpAtomicSMin: *hasResult = true; *hasResultType = true; break; + case OpAtomicUMin: *hasResult = true; *hasResultType = true; break; + case OpAtomicSMax: *hasResult = true; *hasResultType = true; break; + case OpAtomicUMax: *hasResult = true; *hasResultType = true; break; + case OpAtomicAnd: *hasResult = true; *hasResultType = true; break; + case OpAtomicOr: *hasResult = true; *hasResultType = true; break; + case OpAtomicXor: *hasResult = true; *hasResultType = true; break; + case OpPhi: *hasResult = true; *hasResultType = true; break; + case OpLoopMerge: *hasResult = false; *hasResultType = false; break; + case OpSelectionMerge: *hasResult = false; *hasResultType = false; break; + case OpLabel: *hasResult = true; *hasResultType = false; break; + case OpBranch: *hasResult = false; *hasResultType = false; break; + case OpBranchConditional: *hasResult = false; *hasResultType = false; break; + case OpSwitch: *hasResult = false; *hasResultType = false; break; + case OpKill: *hasResult = false; *hasResultType = false; break; + case OpReturn: *hasResult = false; *hasResultType = false; break; + case OpReturnValue: *hasResult = false; *hasResultType = false; break; + case OpUnreachable: *hasResult = false; *hasResultType = false; break; + case OpLifetimeStart: *hasResult = false; *hasResultType = false; break; + case OpLifetimeStop: *hasResult = false; *hasResultType = false; break; + case OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break; + case OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break; + case OpGroupAll: *hasResult = true; *hasResultType = true; break; + case OpGroupAny: *hasResult = true; *hasResultType = true; break; + case OpGroupBroadcast: *hasResult = true; *hasResultType = true; break; + case OpGroupIAdd: *hasResult = true; *hasResultType = true; break; + case OpGroupFAdd: *hasResult = true; *hasResultType = true; break; + case OpGroupFMin: *hasResult = true; *hasResultType = true; break; + case OpGroupUMin: *hasResult = true; *hasResultType = true; break; + case OpGroupSMin: *hasResult = true; *hasResultType = true; break; + case OpGroupFMax: *hasResult = true; *hasResultType = true; break; + case OpGroupUMax: *hasResult = true; *hasResultType = true; break; + case OpGroupSMax: *hasResult = true; *hasResultType = true; break; + case OpReadPipe: *hasResult = true; *hasResultType = true; break; + case OpWritePipe: *hasResult = true; *hasResultType = true; break; + case OpReservedReadPipe: *hasResult = true; *hasResultType = true; break; + case OpReservedWritePipe: *hasResult = true; *hasResultType = true; break; + case OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break; + case OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break; + case OpCommitReadPipe: *hasResult = false; *hasResultType = false; break; + case OpCommitWritePipe: *hasResult = false; *hasResultType = false; break; + case OpIsValidReserveId: *hasResult = true; *hasResultType = true; break; + case OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break; + case OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break; + case OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break; + case OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break; + case OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break; + case OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break; + case OpEnqueueMarker: *hasResult = true; *hasResultType = true; break; + case OpEnqueueKernel: *hasResult = true; *hasResultType = true; break; + case OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break; + case OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break; + case OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break; + case OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break; + case OpRetainEvent: *hasResult = false; *hasResultType = false; break; + case OpReleaseEvent: *hasResult = false; *hasResultType = false; break; + case OpCreateUserEvent: *hasResult = true; *hasResultType = true; break; + case OpIsValidEvent: *hasResult = true; *hasResultType = true; break; + case OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break; + case OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break; + case OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break; + case OpBuildNDRange: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseFetch: *hasResult = true; *hasResultType = true; break; + case OpImageSparseGather: *hasResult = true; *hasResultType = true; break; + case OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break; + case OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break; + case OpNoLine: *hasResult = false; *hasResultType = false; break; + case OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break; + case OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break; + case OpImageSparseRead: *hasResult = true; *hasResultType = true; break; + case OpSizeOf: *hasResult = true; *hasResultType = true; break; + case OpTypePipeStorage: *hasResult = true; *hasResultType = false; break; + case OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break; + case OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break; + case OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break; + case OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break; + case OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break; + case OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break; + case OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break; + case OpModuleProcessed: *hasResult = false; *hasResultType = false; break; + case OpExecutionModeId: *hasResult = false; *hasResultType = false; break; + case OpDecorateId: *hasResult = false; *hasResultType = false; break; + case OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break; + case OpCopyLogical: *hasResult = true; *hasResultType = true; break; + case OpPtrEqual: *hasResult = true; *hasResultType = true; break; + case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; + case OpPtrDiff: *hasResult = true; *hasResultType = true; break; + case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break; + case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break; + case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; + case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break; + case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break; + case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break; + case OpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break; + case OpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break; + case OpTerminateRayKHR: *hasResult = false; *hasResultType = false; break; + case OpSDot: *hasResult = true; *hasResultType = true; break; + case OpUDot: *hasResult = true; *hasResultType = true; break; + case OpSUDot: *hasResult = true; *hasResultType = true; break; + case OpSDotAccSat: *hasResult = true; *hasResultType = true; break; + case OpUDotAccSat: *hasResult = true; *hasResultType = true; break; + case OpSUDotAccSat: *hasResult = true; *hasResultType = true; break; + case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break; + case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break; + case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break; + case OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break; + case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break; + case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break; + case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break; + case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break; + case OpReadClockKHR: *hasResult = true; *hasResultType = true; break; + case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break; + case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break; + case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break; + case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break; + case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break; + case OpTraceNV: *hasResult = false; *hasResultType = false; break; + case OpTraceMotionNV: *hasResult = false; *hasResultType = false; break; + case OpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break; + case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break; + case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break; + case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break; + case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break; + case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break; + case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break; + case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break; + case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; + case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; + case OpDemoteToHelperInvocation: *hasResult = false; *hasResultType = false; break; + case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break; + case OpConvertUToImageNV: *hasResult = true; *hasResultType = true; break; + case OpConvertUToSamplerNV: *hasResult = true; *hasResultType = true; break; + case OpConvertImageToUNV: *hasResult = true; *hasResultType = true; break; + case OpConvertSamplerToUNV: *hasResult = true; *hasResultType = true; break; + case OpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break; + case OpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break; + case OpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break; + case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; + case OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; + case OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; + case OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break; + case OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break; + case OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break; + case OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break; + case OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break; + case OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break; + case OpIAverageINTEL: *hasResult = true; *hasResultType = true; break; + case OpUAverageINTEL: *hasResult = true; *hasResultType = true; break; + case OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break; + case OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break; + case OpISubSatINTEL: *hasResult = true; *hasResultType = true; break; + case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break; + case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break; + case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break; + case OpConstantFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break; + case OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break; + case OpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break; + case OpAsmINTEL: *hasResult = true; *hasResultType = true; break; + case OpAsmCallINTEL: *hasResult = true; *hasResultType = true; break; + case OpAtomicFMinEXT: *hasResult = true; *hasResultType = true; break; + case OpAtomicFMaxEXT: *hasResult = true; *hasResultType = true; break; + case OpAssumeTrueKHR: *hasResult = false; *hasResultType = false; break; + case OpExpectKHR: *hasResult = true; *hasResultType = true; break; + case OpDecorateString: *hasResult = false; *hasResultType = false; break; + case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break; + case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break; + case OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break; + case OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break; + case OpVariableLengthArrayINTEL: *hasResult = true; *hasResultType = true; break; + case OpSaveMemoryINTEL: *hasResult = true; *hasResultType = true; break; + case OpRestoreMemoryINTEL: *hasResult = false; *hasResultType = false; break; + case OpArbitraryFloatSinCosPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCastINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCastFromIntINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCastToIntINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatAddINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatSubINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatMulINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatDivINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatGTINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatGEINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLTINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLEINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatEQINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatRecipINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatRSqrtINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCbrtINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatHypotINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatSqrtINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLogINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLog2INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLog10INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLog1pINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatExpINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatExp2INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatExp10INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatExpm1INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatSinINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCosINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatSinCosINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatSinPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCosPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatASinINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatASinPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatACosINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatACosPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatATanINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatATanPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatATan2INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatPowINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatPowRINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatPowNINTEL: *hasResult = true; *hasResultType = true; break; + case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break; + case OpFixedSqrtINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedRecipINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedRsqrtINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedSinINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedCosINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedSinCosINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedSinPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedCosPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedSinCosPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedLogINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedExpINTEL: *hasResult = true; *hasResultType = true; break; + case OpPtrCastToCrossWorkgroupINTEL: *hasResult = true; *hasResultType = true; break; + case OpCrossWorkgroupCastToPtrINTEL: *hasResult = true; *hasResultType = true; break; + case OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break; + case OpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break; + case OpFPGARegINTEL: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break; + case OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break; + case OpTypeBufferSurfaceINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break; + case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break; + case OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break; + } +} +#endif /* SPV_ENABLE_UTILITY_CODE */ + +// Overload operator| for mask bit combining + +inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); } +inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); } +inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); } +inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); } +inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); } +inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); } +inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } +inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } +inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); } +inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); } + +} // end namespace spv + +#endif // #ifndef spirv_HPP + diff --git a/Externals/glslang/SPIRV/spvIR.h b/Externals/glslang/SPIRV/spvIR.h index cf6a71159af8..5249a5ba7351 100644 --- a/Externals/glslang/SPIRV/spvIR.h +++ b/Externals/glslang/SPIRV/spvIR.h @@ -55,6 +55,7 @@ #include #include #include +#include namespace spv { @@ -110,27 +111,23 @@ class Instruction { void addStringOperand(const char* str) { - unsigned int word; - char* wordString = (char*)&word; - char* wordPtr = wordString; - int charCount = 0; + unsigned int word = 0; + unsigned int shiftAmount = 0; char c; + do { c = *(str++); - *(wordPtr++) = c; - ++charCount; - if (charCount == 4) { + word |= ((unsigned int)c) << shiftAmount; + shiftAmount += 8; + if (shiftAmount == 32) { addImmediateOperand(word); - wordPtr = wordString; - charCount = 0; + word = 0; + shiftAmount = 0; } } while (c != 0); // deal with partial last word - if (charCount > 0) { - // pad with 0s - for (; charCount < 4; ++charCount) - *(wordPtr++) = 0; + if (shiftAmount > 0) { addImmediateOperand(word); } } @@ -235,8 +232,7 @@ class Block { assert(instructions.size() > 0); instructions.resize(1); successors.clear(); - Instruction* unreachable = new Instruction(OpUnreachable); - addInstruction(std::unique_ptr(unreachable)); + addInstruction(std::unique_ptr(new Instruction(OpUnreachable))); } // Change this block into a canonical dead continue target branching to the // given header ID. Delete instructions as necessary. A canonical dead continue @@ -263,6 +259,7 @@ class Block { case OpBranchConditional: case OpSwitch: case OpKill: + case OpTerminateInvocation: case OpReturn: case OpReturnValue: case OpUnreachable: @@ -352,10 +349,28 @@ class Function { const std::vector& getBlocks() const { return blocks; } void addLocalVariable(std::unique_ptr inst); Id getReturnType() const { return functionInstruction.getTypeId(); } + void setReturnPrecision(Decoration precision) + { + if (precision == DecorationRelaxedPrecision) + reducedPrecisionReturn = true; + } + Decoration getReturnPrecision() const + { return reducedPrecisionReturn ? DecorationRelaxedPrecision : NoPrecision; } void setImplicitThis() { implicitThis = true; } bool hasImplicitThis() const { return implicitThis; } + void addParamPrecision(unsigned param, Decoration precision) + { + if (precision == DecorationRelaxedPrecision) + reducedPrecisionParams.insert(param); + } + Decoration getParamPrecision(unsigned param) const + { + return reducedPrecisionParams.find(param) != reducedPrecisionParams.end() ? + DecorationRelaxedPrecision : NoPrecision; + } + void dump(std::vector& out) const { // OpFunction @@ -380,6 +395,8 @@ class Function { std::vector parameterInstructions; std::vector blocks; bool implicitThis; // true if this is a member function expecting to be passed a 'this' as the first argument + bool reducedPrecisionReturn; + std::set reducedPrecisionParams; // list of parameter indexes that need a relaxed precision arg }; // @@ -440,7 +457,8 @@ class Module { // - the OpFunction instruction // - all the OpFunctionParameter instructions __inline Function::Function(Id id, Id resultType, Id functionType, Id firstParamId, Module& parent) - : parent(parent), functionInstruction(id, resultType, OpFunction), implicitThis(false) + : parent(parent), functionInstruction(id, resultType, OpFunction), implicitThis(false), + reducedPrecisionReturn(false) { // OpFunction functionInstruction.addImmediateOperand(FunctionControlMaskNone); diff --git a/Externals/glslang/StandAlone/CMakeLists.txt b/Externals/glslang/StandAlone/CMakeLists.txt index 2cf2899c41c5..2b163e7f55c2 100644 --- a/Externals/glslang/StandAlone/CMakeLists.txt +++ b/Externals/glslang/StandAlone/CMakeLists.txt @@ -1,5 +1,55 @@ +# Copyright (C) 2020 The Khronos Group Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of The Khronos Group Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +find_host_package(PythonInterp 3 REQUIRED) + +set(GLSLANG_INTRINSIC_H "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/glsl_intrinsic_header.h") +set(GLSLANG_INTRINSIC_PY "${CMAKE_CURRENT_SOURCE_DIR}/../gen_extension_headers.py") +set(GLSLANG_INTRINSIC_HEADER_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../glslang/ExtensionHeaders") + +add_custom_command( + OUTPUT ${GLSLANG_INTRINSIC_H} + COMMAND ${PYTHON_EXECUTABLE} "${GLSLANG_INTRINSIC_PY}" + "-i" ${GLSLANG_INTRINSIC_HEADER_DIR} + "-o" ${GLSLANG_INTRINSIC_H} + DEPENDS ${GLSLANG_INTRINSIC_PY} + COMMENT "Generating ${GLSLANG_INTRINSIC_H}") + +#add_custom_target(glslangValidator DEPENDS ${GLSLANG_INTRINSIC_H}) + add_library(glslang-default-resource-limits - ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp) + ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/resource_limits_c.cpp) set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang) set_property(TARGET glslang-default-resource-limits PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -7,8 +57,7 @@ target_include_directories(glslang-default-resource-limits PUBLIC $ PUBLIC $) - -set(SOURCES StandAlone.cpp DirStackFileIncluder.h) +set(SOURCES StandAlone.cpp DirStackFileIncluder.h ${GLSLANG_INTRINSIC_H}) add_executable(glslangValidator ${SOURCES}) set_property(TARGET glslangValidator PROPERTY FOLDER tools) @@ -29,13 +78,19 @@ elseif(UNIX) if(NOT ANDROID) set(LIBRARIES ${LIBRARIES} pthread) endif() -endif(WIN32) +endif() target_link_libraries(glslangValidator ${LIBRARIES}) target_include_directories(glslangValidator PUBLIC $ $) +if(ENABLE_OPT) + target_include_directories(glslangValidator + PRIVATE ${spirv-tools_SOURCE_DIR}/include + ) +endif() + if(ENABLE_SPVREMAPPER) set(REMAPPER_SOURCES spirv-remap.cpp) add_executable(spirv-remap ${REMAPPER_SOURCES}) @@ -46,7 +101,7 @@ endif() if(WIN32) source_group("Source" FILES ${SOURCES}) -endif(WIN32) +endif() if(ENABLE_GLSLANG_INSTALL) install(TARGETS glslangValidator EXPORT glslangValidatorTargets @@ -61,7 +116,12 @@ if(ENABLE_GLSLANG_INSTALL) if(BUILD_SHARED_LIBS) install(TARGETS glslang-default-resource-limits EXPORT glslang-default-resource-limitsTargets - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) - install(EXPORT glslang-default-resource-limitsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + else() + install(TARGETS glslang-default-resource-limits EXPORT glslang-default-resource-limitsTargets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() -endif(ENABLE_GLSLANG_INSTALL) + install(EXPORT glslang-default-resource-limitsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) +endif() diff --git a/Externals/glslang/StandAlone/DirStackFileIncluder.h b/Externals/glslang/StandAlone/DirStackFileIncluder.h index 18734130e71d..5a33c78fa208 100644 --- a/Externals/glslang/StandAlone/DirStackFileIncluder.h +++ b/Externals/glslang/StandAlone/DirStackFileIncluder.h @@ -40,6 +40,7 @@ #include #include #include +#include #include "./../glslang/Public/ShaderLang.h" @@ -84,12 +85,18 @@ class DirStackFileIncluder : public glslang::TShader::Includer { } } + virtual std::set getIncludedFiles() + { + return includedFiles; + } + virtual ~DirStackFileIncluder() override { } protected: typedef char tUserDataElement; std::vector directoryStack; int externalLocalDirectoryCount; + std::set includedFiles; // Search for a valid "local" path based on combining the stack of include // directories and the nominal name of the header. @@ -108,6 +115,7 @@ class DirStackFileIncluder : public glslang::TShader::Includer { std::ifstream file(path, std::ios_base::binary | std::ios_base::ate); if (file) { directoryStack.push_back(getDirectory(path)); + includedFiles.insert(path); return newIncludeResult(path, file, (int)file.tellg()); } } diff --git a/Externals/glslang/StandAlone/ResourceLimits.cpp b/Externals/glslang/StandAlone/ResourceLimits.cpp index 028caa66d192..7c7f4c4e49be 100644 --- a/Externals/glslang/StandAlone/ResourceLimits.cpp +++ b/Externals/glslang/StandAlone/ResourceLimits.cpp @@ -134,6 +134,7 @@ const TBuiltInResource DefaultTBuiltInResource = { /* .maxTaskWorkGroupSizeY_NV = */ 1, /* .maxTaskWorkGroupSizeZ_NV = */ 1, /* .maxMeshViewCountNV = */ 4, + /* .maxDualSourceDrawBuffersEXT = */ 1, /* .limits = */ { /* .nonInductiveForLoops = */ 1, @@ -243,6 +244,7 @@ std::string GetDefaultTBuiltInResourceString() << "MaxTaskWorkGroupSizeY_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_NV << "\n" << "MaxTaskWorkGroupSizeZ_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_NV << "\n" << "MaxMeshViewCountNV " << DefaultTBuiltInResource.maxMeshViewCountNV << "\n" + << "MaxDualSourceDrawBuffersEXT " << DefaultTBuiltInResource.maxDualSourceDrawBuffersEXT << "\n" << "nonInductiveForLoops " << DefaultTBuiltInResource.limits.nonInductiveForLoops << "\n" << "whileLoops " << DefaultTBuiltInResource.limits.whileLoops << "\n" << "doWhileLoops " << DefaultTBuiltInResource.limits.doWhileLoops << "\n" diff --git a/Externals/glslang/StandAlone/StandAlone.cpp b/Externals/glslang/StandAlone/StandAlone.cpp index 6e4c8d30d75a..37282f2d01fc 100644 --- a/Externals/glslang/StandAlone/StandAlone.cpp +++ b/Externals/glslang/StandAlone/StandAlone.cpp @@ -1,6 +1,8 @@ // // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013-2016 LunarG, Inc. +// Copyright (C) 2016-2020 Google, Inc. +// Modifications Copyright(C) 2021 Advanced Micro Devices, Inc.All rights reserved. // // All rights reserved. // @@ -43,7 +45,6 @@ #include "Worklist.h" #include "DirStackFileIncluder.h" #include "./../glslang/Include/ShHandle.h" -#include "./../glslang/Include/revision.h" #include "./../glslang/Public/ShaderLang.h" #include "../SPIRV/GlslangToSpv.h" #include "../SPIRV/GLSL.std.450.h" @@ -58,11 +59,17 @@ #include #include #include +#include #include "../glslang/OSDependent/osinclude.h" +// Build-time generated includes +#include "glslang/build_info.h" + +#include "glslang/glsl_intrinsic_header.h" + extern "C" { - SH_IMPORT_EXPORT void ShOutputHtml(); + GLSLANG_EXPORT void ShOutputHtml(); } // Command-line options @@ -105,6 +112,10 @@ bool targetHlslFunctionality1 = false; bool SpvToolsDisassembler = false; bool SpvToolsValidate = false; bool NaNClamp = false; +bool stripDebugInfo = false; +bool beQuiet = false; +bool VulkanRulesRelaxed = false; +bool autoSampledTextures = false; // // Return codes from main/exit(). @@ -159,12 +170,15 @@ int ReflectOptions = EShReflectionDefault; int Options = 0; const char* ExecutableName = nullptr; const char* binaryFileName = nullptr; +const char* depencyFileName = nullptr; const char* entryPointName = nullptr; const char* sourceEntryPointName = nullptr; const char* shaderStageName = nullptr; const char* variableName = nullptr; bool HlslEnable16BitTypes = false; bool HlslDX9compatible = false; +bool HlslDxPositionW = false; +bool EnhancedMsgs = false; bool DumpBuiltinSymbols = false; std::vector IncludeDirectoryList; @@ -178,6 +192,9 @@ glslang::EShTargetClientVersion ClientVersion; // not valid until Client i glslang::EShTargetLanguage TargetLanguage = glslang::EShTargetNone; glslang::EShTargetLanguageVersion TargetVersion; // not valid until TargetLanguage is set +// GLSL version +int GlslVersion = 0; // GLSL version specified on CLI, overrides #version in shader source + std::vector Processes; // what should be recorded by OpModuleProcessed, or equivalent // Per descriptor-set binding base data @@ -190,6 +207,17 @@ std::array, glslang::EResCount> baseBindi std::array, glslang::EResCount> baseBindingForSet; std::array, EShLangCount> baseResourceSetBinding; +std::vector> blockStorageOverrides; + +bool setGlobalUniformBlock = false; +std::string globalUniformName; +unsigned int globalUniformBinding; +unsigned int globalUniformSet; + +bool setGlobalBufferBlock = false; +std::string atomicCounterBlockName; +unsigned int atomicCounterBlockSet; + // Add things like "#define ..." to a preamble to use in the beginning of the shader. class TPreamble { public: @@ -241,7 +269,9 @@ class TPreamble { std::string text; // contents of preamble }; +// Track the user's #define and #undef from the command line. TPreamble UserPreamble; +std::string PreambleString; // // Create the default name for saving a binary if -o is not provided. @@ -257,12 +287,12 @@ const char* GetBinaryName(EShLanguage stage) case EShLangGeometry: name = "geom.spv"; break; case EShLangFragment: name = "frag.spv"; break; case EShLangCompute: name = "comp.spv"; break; - case EShLangRayGenNV: name = "rgen.spv"; break; - case EShLangIntersectNV: name = "rint.spv"; break; - case EShLangAnyHitNV: name = "rahit.spv"; break; - case EShLangClosestHitNV: name = "rchit.spv"; break; - case EShLangMissNV: name = "rmiss.spv"; break; - case EShLangCallableNV: name = "rcall.spv"; break; + case EShLangRayGen: name = "rgen.spv"; break; + case EShLangIntersect: name = "rint.spv"; break; + case EShLangAnyHit: name = "rahit.spv"; break; + case EShLangClosestHit: name = "rchit.spv"; break; + case EShLangMiss: name = "rmiss.spv"; break; + case EShLangCallable: name = "rcall.spv"; break; case EShLangMeshNV: name = "mesh.spv"; break; case EShLangTaskNV: name = "task.spv"; break; default: name = "unknown"; break; @@ -326,13 +356,13 @@ void ProcessBindingBase(int& argc, char**& argv, glslang::TResourceType res) lang = FindLanguage(argv[arg++], false); } - if ((argc - arg) > 2 && isdigit(argv[arg+0][0]) && isdigit(argv[arg+1][0])) { + if ((argc - arg) >= 2 && isdigit(argv[arg+0][0]) && isdigit(argv[arg+1][0])) { // Parse a per-set binding base - while ((argc - arg) > 2 && isdigit(argv[arg+0][0]) && isdigit(argv[arg+1][0])) { + do { const int baseNum = atoi(argv[arg++]); const int setNum = atoi(argv[arg++]); perSetBase[setNum] = baseNum; - } + } while ((argc - arg) >= 2 && isdigit(argv[arg + 0][0]) && isdigit(argv[arg + 1][0])); } else { // Parse single binding base singleBase = atoi(argv[arg++]); @@ -390,6 +420,115 @@ void ProcessResourceSetBindingBase(int& argc, char**& argv, std::array>& storage) +{ + if (argc < 3) + usage(); + + glslang::TBlockStorageClass blockStorage = glslang::EbsNone; + + std::string strBacking(argv[2]); + if (strBacking == "uniform") + blockStorage = glslang::EbsUniform; + else if (strBacking == "buffer") + blockStorage = glslang::EbsStorageBuffer; + else if (strBacking == "push_constant") + blockStorage = glslang::EbsPushConstant; + else { + printf("%s: invalid block storage\n", strBacking.c_str()); + usage(); + } + + storage.push_back(std::make_pair(std::string(argv[1]), blockStorage)); + + argc -= 2; + argv += 2; +} + +inline bool isNonDigit(char c) { + // a non-digit character valid in a glsl identifier + return (c == '_') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); +} + +// whether string isa valid identifier to be used in glsl +bool isValidIdentifier(const char* str) { + std::string idn(str); + + if (idn.length() == 0) { + return false; + } + + if (idn.length() >= 3 && idn.substr(0, 3) == "gl_") { + // identifiers startin with "gl_" are reserved + return false; + } + + if (!isNonDigit(idn[0])) { + return false; + } + + for (unsigned int i = 1; i < idn.length(); ++i) { + if (!(isdigit(idn[i]) || isNonDigit(idn[i]))) { + return false; + } + } + + return true; +} + +// Process settings for either the global buffer block or global unfirom block +// of the form: +// --argname name set binding +void ProcessGlobalBlockSettings(int& argc, char**& argv, std::string* name, unsigned int* set, unsigned int* binding) +{ + if (argc < 4) + usage(); + + unsigned int curArg = 1; + + assert(name || set || binding); + + if (name) { + if (!isValidIdentifier(argv[curArg])) { + printf("%s: invalid identifier\n", argv[curArg]); + usage(); + } + *name = argv[curArg]; + + curArg++; + } + + if (set) { + errno = 0; + int setVal = ::strtol(argv[curArg], NULL, 10); + if (errno || setVal < 0) { + printf("%s: invalid set\n", argv[curArg]); + usage(); + } + *set = setVal; + + curArg++; + } + + if (binding) { + errno = 0; + int bindingVal = ::strtol(argv[curArg], NULL, 10); + if (errno || bindingVal < 0) { + printf("%s: invalid binding\n", argv[curArg]); + usage(); + } + *binding = bindingVal; + + curArg++; + } + + argc -= (curArg - 1); + argv += (curArg - 1); +} + // // Do all command-line argument parsing. This includes building up the work-items // to be processed later, and saving all the command-line options. @@ -518,6 +657,48 @@ void ProcessArguments(std::vector>& workItem lowerword == "flatten-uniform-array" || lowerword == "fua") { Options |= EOptionFlattenUniformArrays; + } else if (lowerword == "glsl-version") { + if (argc > 1) { + if (strcmp(argv[1], "100") == 0) { + GlslVersion = 100; + } else if (strcmp(argv[1], "110") == 0) { + GlslVersion = 110; + } else if (strcmp(argv[1], "120") == 0) { + GlslVersion = 120; + } else if (strcmp(argv[1], "130") == 0) { + GlslVersion = 130; + } else if (strcmp(argv[1], "140") == 0) { + GlslVersion = 140; + } else if (strcmp(argv[1], "150") == 0) { + GlslVersion = 150; + } else if (strcmp(argv[1], "300es") == 0) { + GlslVersion = 300; + } else if (strcmp(argv[1], "310es") == 0) { + GlslVersion = 310; + } else if (strcmp(argv[1], "320es") == 0) { + GlslVersion = 320; + } else if (strcmp(argv[1], "330") == 0) { + GlslVersion = 330; + } else if (strcmp(argv[1], "400") == 0) { + GlslVersion = 400; + } else if (strcmp(argv[1], "410") == 0) { + GlslVersion = 410; + } else if (strcmp(argv[1], "420") == 0) { + GlslVersion = 420; + } else if (strcmp(argv[1], "430") == 0) { + GlslVersion = 430; + } else if (strcmp(argv[1], "440") == 0) { + GlslVersion = 440; + } else if (strcmp(argv[1], "450") == 0) { + GlslVersion = 450; + } else if (strcmp(argv[1], "460") == 0) { + GlslVersion = 460; + } else + Error("--glsl-version expected one of: 100, 110, 120, 130, 140, 150,\n" + "300es, 310es, 320es, 330\n" + "400, 410, 420, 430, 440, 450, 460"); + } + bumpArg(); } else if (lowerword == "hlsl-offsets") { Options |= EOptionHlslOffsets; } else if (lowerword == "hlsl-iomap" || @@ -528,6 +709,12 @@ void ProcessArguments(std::vector>& workItem HlslEnable16BitTypes = true; } else if (lowerword == "hlsl-dx9-compatible") { HlslDX9compatible = true; + } else if (lowerword == "hlsl-dx-position-w") { + HlslDxPositionW = true; + } else if (lowerword == "enhanced-msgs") { + EnhancedMsgs = true; + } else if (lowerword == "auto-sampled-textures") { + autoSampledTextures = true; } else if (lowerword == "invert-y" || // synonyms lowerword == "iy") { Options |= EOptionInvertY; @@ -553,10 +740,27 @@ void ProcessArguments(std::vector>& workItem ReflectOptions |= EShReflectionAllBlockVariables; } else if (lowerword == "reflect-unwrap-io-blocks") { ReflectOptions |= EShReflectionUnwrapIOBlocks; + } else if (lowerword == "reflect-all-io-variables") { + ReflectOptions |= EShReflectionAllIOVariables; + } else if (lowerword == "reflect-shared-std140-ubo") { + ReflectOptions |= EShReflectionSharedStd140UBO; + } else if (lowerword == "reflect-shared-std140-ssbo") { + ReflectOptions |= EShReflectionSharedStd140SSBO; } else if (lowerword == "resource-set-bindings" || // synonyms lowerword == "resource-set-binding" || lowerword == "rsb") { ProcessResourceSetBindingBase(argc, argv, baseResourceSetBinding); + } else if (lowerword == "set-block-storage" || + lowerword == "sbs") { + ProcessBlockStorage(argc, argv, blockStorageOverrides); + } else if (lowerword == "set-atomic-counter-block" || + lowerword == "sacb") { + ProcessGlobalBlockSettings(argc, argv, &atomicCounterBlockName, &atomicCounterBlockSet, nullptr); + setGlobalBufferBlock = true; + } else if (lowerword == "set-default-uniform-block" || + lowerword == "sdub") { + ProcessGlobalBlockSettings(argc, argv, &globalUniformName, &globalUniformSet, &globalUniformBinding); + setGlobalUniformBlock = true; } else if (lowerword == "shift-image-bindings" || // synonyms lowerword == "shift-image-binding" || lowerword == "sib") { @@ -611,6 +815,9 @@ void ProcessArguments(std::vector>& workItem } else if (strcmp(argv[1], "vulkan1.2") == 0) { setVulkanSpv(); ClientVersion = glslang::EShTargetVulkan_1_2; + } else if (strcmp(argv[1], "vulkan1.3") == 0) { + setVulkanSpv(); + ClientVersion = glslang::EShTargetVulkan_1_3; } else if (strcmp(argv[1], "opengl") == 0) { setOpenGlSpv(); ClientVersion = glslang::EShTargetOpenGL_450; @@ -632,9 +839,13 @@ void ProcessArguments(std::vector>& workItem } else if (strcmp(argv[1], "spirv1.5") == 0) { TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_5; + } else if (strcmp(argv[1], "spirv1.6") == 0) { + TargetLanguage = glslang::EShTargetSpv; + TargetVersion = glslang::EShTargetSpv_1_6; } else - Error("--target-env expected one of: vulkan1.0, vulkan1.1, vulkan1.2, opengl,\n" - "spirv1.0, spirv1.1, spirv1.2, spirv1.3, spirv1.4, or spirv1.5"); + Error("--target-env expected one of: vulkan1.0, vulkan1.1, vulkan1.2,\n" + "vulkan1.3, opengl, spirv1.0, spirv1.1, spirv1.2, spirv1.3,\n" + "spirv1.4, spirv1.5 or spirv1.6"); } bumpArg(); } else if (lowerword == "undef-macro" || @@ -652,8 +863,18 @@ void ProcessArguments(std::vector>& workItem variableName = argv[1]; bumpArg(); break; + } else if (lowerword == "quiet") { + beQuiet = true; + } else if (lowerword == "depfile") { + if (argc <= 1) + Error("no provided", lowerword.c_str()); + depencyFileName = argv[1]; + bumpArg(); } else if (lowerword == "version") { Options |= EOptionDumpVersions; + } else if (lowerword == "help") { + usage(); + break; } else { Error("unrecognized command-line option", argv[0]); } @@ -679,6 +900,8 @@ void ProcessArguments(std::vector>& workItem setOpenGlSpv(); if (argv[0][2] != 0) ClientInputSemanticsVersion = getAttachedNumber("-G client input semantics"); + if (ClientInputSemanticsVersion != 100) + Error("unknown client version for -G, should be 100"); break; case 'H': Options |= EOptionHumanReadableSpv; @@ -702,6 +925,9 @@ void ProcessArguments(std::vector>& workItem else Error("unknown -O option"); break; + case 'R': + VulkanRulesRelaxed = true; + break; case 'S': if (argc <= 1) Error("no specified for -S"); @@ -715,6 +941,8 @@ void ProcessArguments(std::vector>& workItem setVulkanSpv(); if (argv[0][2] != 0) ClientInputSemanticsVersion = getAttachedNumber("-V client input semantics"); + if (ClientInputSemanticsVersion != 100) + Error("unknown client version for -V, should be 100"); break; case 'c': Options |= EOptionDumpConfig; @@ -739,7 +967,13 @@ void ProcessArguments(std::vector>& workItem Error("-f: expected hlsl_functionality1"); break; case 'g': - Options |= EOptionDebug; + // Override previous -g or -g0 argument + stripDebugInfo = false; + Options &= ~EOptionDebug; + if (argv[0][2] == '0') + stripDebugInfo = true; + else + Options |= EOptionDebug; break; case 'h': usage(); @@ -817,6 +1051,10 @@ void ProcessArguments(std::vector>& workItem (Options & EOptionReadHlsl) == 0) Error("uniform array flattening only valid when compiling HLSL source."); + if ((Options & EOptionReadHlsl) && (Client == glslang::EShClientOpenGL)) { + Error("Using HLSL input under OpenGL semantics is not currently supported."); + } + // rationalize client and target language if (TargetLanguage == glslang::EShTargetNone) { switch (ClientVersion) { @@ -832,6 +1070,10 @@ void ProcessArguments(std::vector>& workItem TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_5; break; + case glslang::EShTargetVulkan_1_3: + TargetLanguage = glslang::EShTargetSpv; + TargetVersion = glslang::EShTargetSpv_1_6; + break; case glslang::EShTargetOpenGL_450: TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_0; @@ -879,6 +1121,8 @@ void SetMessageOptions(EShMessages& messages) messages = (EShMessages)(messages | EShMsgHlslDX9Compatible); if (DumpBuiltinSymbols) messages = (EShMessages)(messages | EShMsgBuiltinSymbolTable); + if (EnhancedMsgs) + messages = (EShMessages)(messages | EShMsgEnhanced); } // @@ -969,6 +1213,46 @@ struct ShaderCompUnit { } }; +// Writes a string into a depfile, escaping some special characters following the Makefile rules. +static void writeEscapedDepString(std::ofstream& file, const std::string& str) +{ + for (char c : str) { + switch (c) { + case ' ': + case ':': + case '#': + case '[': + case ']': + case '\\': + file << '\\'; + break; + case '$': + file << '$'; + break; + } + file << c; + } +} + +// Writes a depfile similar to gcc -MMD foo.c +bool writeDepFile(std::string depfile, std::vector& binaryFiles, const std::vector& sources) +{ + std::ofstream file(depfile); + if (file.fail()) + return false; + + for (auto binaryFile = binaryFiles.begin(); binaryFile != binaryFiles.end(); binaryFile++) { + writeEscapedDepString(file, *binaryFile); + file << ":"; + for (auto sourceFile = sources.begin(); sourceFile != sources.end(); sourceFile++) { + file << " "; + writeEscapedDepString(file, *sourceFile); + } + file << std::endl; + } + return true; +} + // // For linking mode: Will independently parse each compilation unit, but then put them // in the same program and link them together, making at most one linked module per @@ -985,6 +1269,12 @@ void CompileAndLinkShaderUnits(std::vector compUnits) EShMessages messages = EShMsgDefault; SetMessageOptions(messages); + DirStackFileIncluder includer; + std::for_each(IncludeDirectoryList.rbegin(), IncludeDirectoryList.rend(), [&includer](const std::string& dir) { + includer.pushExternalLocalDirectory(dir); }); + + std::vector sources; + // // Per-shader processing... // @@ -992,6 +1282,9 @@ void CompileAndLinkShaderUnits(std::vector compUnits) glslang::TProgram& program = *new glslang::TProgram; for (auto it = compUnits.cbegin(); it != compUnits.cend(); ++it) { const auto &compUnit = *it; + for (int i = 0; i < compUnit.count; i++) { + sources.push_back(compUnit.fileNameList[i]); + } glslang::TShader* shader = new glslang::TShader(compUnit.stage); shader->setStringsWithLengthsAndNames(compUnit.text, NULL, compUnit.fileNameList, compUnit.count); if (entryPointName) @@ -1002,8 +1295,19 @@ void CompileAndLinkShaderUnits(std::vector compUnits) "Use '-e '.\n"); shader->setSourceEntryPoint(sourceEntryPointName); } + + shader->setOverrideVersion(GlslVersion); + + std::string intrinsicString = getIntrinsic(compUnit.text, compUnit.count); + + PreambleString = ""; if (UserPreamble.isSet()) - shader->setPreamble(UserPreamble.get()); + PreambleString.append(UserPreamble.get()); + + if (!intrinsicString.empty()) + PreambleString.append(intrinsicString); + + shader->setPreamble(PreambleString.c_str()); shader->addProcesses(Processes); #ifndef GLSLANG_WEB @@ -1023,6 +1327,9 @@ void CompileAndLinkShaderUnits(std::vector compUnits) shader->setNoStorageFormat((Options & EOptionNoStorageFormat) != 0); shader->setResourceSetBinding(baseResourceSetBinding[compUnit.stage]); + if (autoSampledTextures) + shader->setTextureSamplerTransformMode(EShTexSampTransUpgradeTextureRemoveSampler); + if (Options & EOptionAutoMapBindings) shader->setAutoMapBindings(true); @@ -1037,6 +1344,24 @@ void CompileAndLinkShaderUnits(std::vector compUnits) shader->setUniformLocationBase(uniformBase); #endif + if (VulkanRulesRelaxed) { + for (auto& storageOverride : blockStorageOverrides) { + shader->addBlockStorageOverride(storageOverride.first.c_str(), + storageOverride.second); + } + + if (setGlobalBufferBlock) { + shader->setAtomicCounterBlockName(atomicCounterBlockName.c_str()); + shader->setAtomicCounterBlockSet(atomicCounterBlockSet); + } + + if (setGlobalUniformBlock) { + shader->setGlobalUniformBlockName(globalUniformName.c_str()); + shader->setGlobalUniformSet(globalUniformSet); + shader->setGlobalUniformBinding(globalUniformBinding); + } + } + shader->setNanMinMaxClamp(NaNClamp); #ifdef ENABLE_HLSL @@ -1048,6 +1373,12 @@ void CompileAndLinkShaderUnits(std::vector compUnits) if (Options & EOptionInvertY) shader->setInvertY(true); + if (HlslDxPositionW) + shader->setDxPositionW(true); + + if (EnhancedMsgs) + shader->setEnhancedMsgs(); + // Set up the environment, some subsettings take precedence over earlier // ways of setting things. if (Options & EOptionSpv) { @@ -1060,15 +1391,14 @@ void CompileAndLinkShaderUnits(std::vector compUnits) if (targetHlslFunctionality1) shader->setEnvTargetHlslFunctionality1(); #endif + if (VulkanRulesRelaxed) + shader->setEnvInputVulkanRulesRelaxed(); } shaders.push_back(shader); const int defaultVersion = Options & EOptionDefaultDesktop ? 110 : 100; - DirStackFileIncluder includer; - std::for_each(IncludeDirectoryList.rbegin(), IncludeDirectoryList.rend(), [&includer](const std::string& dir) { - includer.pushExternalLocalDirectory(dir); }); #ifndef GLSLANG_WEB if (Options & EOptionOutputPreprocessed) { std::string str; @@ -1090,7 +1420,8 @@ void CompileAndLinkShaderUnits(std::vector compUnits) if (! (Options & EOptionSuppressInfolog) && ! (Options & EOptionMemoryLeakMode)) { - PutsIfNonEmpty(compUnit.fileName[0].c_str()); + if (!beQuiet) + PutsIfNonEmpty(compUnit.fileName[0].c_str()); PutsIfNonEmpty(shader->getInfoLog()); PutsIfNonEmpty(shader->getInfoDebugLog()); } @@ -1127,6 +1458,8 @@ void CompileAndLinkShaderUnits(std::vector compUnits) } #endif + std::vector outputFiles; + // Dump SPIR-V if (Options & EOptionSpv) { if (CompileFailed || LinkFailed) @@ -1135,11 +1468,12 @@ void CompileAndLinkShaderUnits(std::vector compUnits) for (int stage = 0; stage < EShLangCount; ++stage) { if (program.getIntermediate((EShLanguage)stage)) { std::vector spirv; - std::string warningsErrors; spv::SpvBuildLogger logger; glslang::SpvOptions spvOptions; if (Options & EOptionDebug) spvOptions.generateDebugInfo = true; + else if (stripDebugInfo) + spvOptions.stripDebugInfo = true; spvOptions.disableOptimizer = (Options & EOptionOptimizeDisable) != 0; spvOptions.optimizeSize = (Options & EOptionOptimizeSize) != 0; spvOptions.disassemble = SpvToolsDisassembler; @@ -1155,6 +1489,8 @@ void CompileAndLinkShaderUnits(std::vector compUnits) } else { glslang::OutputSpvBin(spirv, GetBinaryName((EShLanguage)stage)); } + + outputFiles.push_back(GetBinaryName((EShLanguage)stage)); #ifndef GLSLANG_WEB if (!SpvToolsDisassembler && (Options & EOptionHumanReadableSpv)) spv::Disassemble(std::cout, spirv); @@ -1165,6 +1501,13 @@ void CompileAndLinkShaderUnits(std::vector compUnits) } } + if (depencyFileName && !(CompileFailed || LinkFailed)) { + std::set includedFiles = includer.getIncludedFiles(); + sources.insert(sources.end(), includedFiles.begin(), includedFiles.end()); + + writeDepFile(depencyFileName, outputFiles, sources); + } + // Free everything up, program has to go before the shaders // because it might have merged stuff from the shaders, and // the stuff from the shaders has to have its destructors called @@ -1255,13 +1598,13 @@ int singleMain() #endif if (Options & EOptionDumpBareVersion) { - printf("%d.%d.%d\n", - glslang::GetSpirvGeneratorVersion(), GLSLANG_MINOR_VERSION, GLSLANG_PATCH_LEVEL); + printf("%d:%d.%d.%d%s\n", glslang::GetSpirvGeneratorVersion(), GLSLANG_VERSION_MAJOR, GLSLANG_VERSION_MINOR, + GLSLANG_VERSION_PATCH, GLSLANG_VERSION_FLAVOR); if (workList.empty()) return ESuccess; } else if (Options & EOptionDumpVersions) { - printf("Glslang Version: %d.%d.%d\n", - glslang::GetSpirvGeneratorVersion(), GLSLANG_MINOR_VERSION, GLSLANG_PATCH_LEVEL); + printf("Glslang Version: %d:%d.%d.%d%s\n", glslang::GetSpirvGeneratorVersion(), GLSLANG_VERSION_MAJOR, + GLSLANG_VERSION_MINOR, GLSLANG_VERSION_PATCH, GLSLANG_VERSION_FLAVOR); printf("ESSL Version: %s\n", glslang::GetEsslVersionString()); printf("GLSL Version: %s\n", glslang::GetGlslVersionString()); std::string spirvVersion; @@ -1425,17 +1768,17 @@ EShLanguage FindLanguage(const std::string& name, bool parseStageName) else if (stageName == "comp") return EShLangCompute; else if (stageName == "rgen") - return EShLangRayGenNV; + return EShLangRayGen; else if (stageName == "rint") - return EShLangIntersectNV; + return EShLangIntersect; else if (stageName == "rahit") - return EShLangAnyHitNV; + return EShLangAnyHit; else if (stageName == "rchit") - return EShLangClosestHitNV; + return EShLangClosestHit; else if (stageName == "rmiss") - return EShLangMissNV; + return EShLangMiss; else if (stageName == "rcall") - return EShLangCallableNV; + return EShLangCallable; else if (stageName == "mesh") return EShLangMeshNV; else if (stageName == "task") @@ -1532,12 +1875,16 @@ void usage() " 'ver', when present, is the version of the input semantics,\n" " which will appear in #define GL_SPIRV ver;\n" " '--client opengl100' is the same as -G100;\n" - " a '--target-env' for OpenGL will also imply '-G'\n" + " a '--target-env' for OpenGL will also imply '-G';\n" + " currently only supports GLSL\n" " -H print human readable form of SPIR-V; turns on -V\n" " -I add dir to the include search path; includer's directory\n" " is searched first, followed by left-to-right order of -I\n" " -Od disables optimization; may cause illegal SPIR-V for HLSL\n" " -Os optimizes SPIR-V to minimize size\n" + " -R use relaxed verification rules for generating Vulkan SPIR-V,\n" + " allowing the use of default uniforms, atomic_uints, and\n" + " gl_VertexID and gl_InstanceID keywords.\n" " -S uses specified stage rather than parsing the file extension\n" " choices for are vert, tesc, tese, geom, frag, or comp\n" " -U | --undef-macro | --U \n" @@ -1558,6 +1905,7 @@ void usage() " 'hlsl_functionality1' enables use of the\n" " SPV_GOOGLE_hlsl_functionality1 extension\n" " -g generate debug information\n" + " -g0 strip debug information\n" " -h print this usage message\n" " -i intermediate tree (glslang AST) is printed out\n" " -l link all input files together to form a single module\n" @@ -1579,21 +1927,35 @@ void usage() " without explicit bindings\n" " --auto-map-locations | --aml automatically locate input/output lacking\n" " 'location' (fragile, not cross stage)\n" + " --auto-sampled-textures Removes sampler variables and converts\n" + " existing textures to sampled textures\n" " --client {vulkan|opengl} see -V and -G\n" + " --depfile writes depfile for build systems\n" " --dump-builtin-symbols prints builtin symbol table prior each compile\n" " -dumpfullversion | -dumpversion print bare major.minor.patchlevel\n" " --flatten-uniform-arrays | --fua flatten uniform texture/sampler arrays to\n" " scalars\n" + " --glsl-version {100 | 110 | 120 | 130 | 140 | 150 |\n" + " 300es | 310es | 320es | 330\n" + " 400 | 410 | 420 | 430 | 440 | 450 | 460}\n" + " set GLSL version, overrides #version\n" + " in shader sourcen\n" " --hlsl-offsets allow block offsets to follow HLSL rules\n" " works independently of source language\n" " --hlsl-iomap perform IO mapping in HLSL register space\n" " --hlsl-enable-16bit-types allow 16-bit types in SPIR-V for HLSL\n" " --hlsl-dx9-compatible interprets sampler declarations as a\n" - " texture/sampler combo like DirectX9 would.\n" + " texture/sampler combo like DirectX9 would,\n" + " and recognizes DirectX9-specific semantics\n" + " --hlsl-dx-position-w W component of SV_Position in HLSL fragment\n" + " shaders compatible with DirectX\n" " --invert-y | --iy invert position.Y output in vertex shader\n" + " --enhanced-msgs print more readable error messages (GLSL only)\n" " --keep-uncalled | --ku don't eliminate uncalled functions\n" " --nan-clamp favor non-NaN operand in min, max, and clamp\n" " --no-storage-format | --nsf use Unknown image format\n" + " --quiet do not print anything to stdout, unless\n" + " requested by another option\n" " --reflect-strict-array-suffix use strict array suffix rules when\n" " reflecting\n" " --reflect-basic-array-suffix arrays of basic types will have trailing [0]\n" @@ -1611,6 +1973,22 @@ void usage() " --resource-set-binding [stage] set\n" " set descriptor set for all resources\n" " --rsb synonym for --resource-set-binding\n" + " --set-block-backing name {uniform|buffer|push_constant}\n" + " changes the backing type of a uniform, buffer,\n" + " or push_constant block declared in\n" + " in the program, when using -R option.\n" + " This can be used to change the backing\n" + " for existing blocks as well as implicit ones\n" + " such as 'gl_DefaultUniformBlock'.\n" + " --sbs synonym for set-block-storage\n" + " --set-atomic-counter-block name set\n" + " set name, and descriptor set for\n" + " atomic counter blocks, with -R opt\n" + " --sacb synonym for set-atomic-counter-block\n" + " --set-default-uniform-block name set binding\n" + " set name, descriptor set, and binding for\n" + " global default-uniform-block, with -R opt\n" + " --sdub synonym for set-default-uniform-block\n" " --shift-image-binding [stage] num\n" " base binding number for images (uav)\n" " --shift-image-binding [stage] [num set]...\n" @@ -1647,8 +2025,9 @@ void usage() " --sep synonym for --source-entrypoint\n" " --stdin read from stdin instead of from a file;\n" " requires providing the shader stage using -S\n" - " --target-env {vulkan1.0 | vulkan1.1 | vulkan1.2 | opengl | \n" - " spirv1.0 | spirv1.1 | spirv1.2 | spirv1.3 | spirv1.4 | spirv1.5}\n" + " --target-env {vulkan1.0 | vulkan1.1 | vulkan1.2 | vulkan1.3 | opengl |\n" + " spirv1.0 | spirv1.1 | spirv1.2 | spirv1.3 | spirv1.4 |\n" + " spirv1.5 | spirv1.6}\n" " Set the execution environment that the\n" " generated code will be executed in.\n" " Defaults to:\n" @@ -1657,6 +2036,7 @@ void usage() " * spirv1.0 under --target-env vulkan1.0\n" " * spirv1.3 under --target-env vulkan1.1\n" " * spirv1.5 under --target-env vulkan1.2\n" + " * spirv1.6 under --target-env vulkan1.3\n" " Multiple --target-env can be specified.\n" " --variable-name \n" " --vn creates a C header file that contains a\n" diff --git a/Externals/glslang/StandAlone/resource_limits_c.cpp b/Externals/glslang/StandAlone/resource_limits_c.cpp new file mode 100644 index 000000000000..a1f681c7b8fb --- /dev/null +++ b/Externals/glslang/StandAlone/resource_limits_c.cpp @@ -0,0 +1,65 @@ +/** +BSD 2-Clause License + +Copyright (c) 2020, Travis Fort +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +**/ + +#include "resource_limits_c.h" +#include "ResourceLimits.h" +#include +#include +#include + +const glslang_resource_t* glslang_default_resource(void) +{ + return reinterpret_cast(&glslang::DefaultTBuiltInResource); +} + +#if defined(__clang__) || defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#elif defined(_MSC_VER) +#pragma warning(push) +#pragma warning(disable : 4996) +#endif + +const char* glslang_default_resource_string() +{ + std::string cpp_str = glslang::GetDefaultTBuiltInResourceString(); + char* c_str = (char*)malloc(cpp_str.length() + 1); + strcpy(c_str, cpp_str.c_str()); + return c_str; +} + +#if defined(__clang__) || defined(__GNUC__) +#pragma GCC diagnostic pop +#elif defined(_MSC_VER) +#pragma warning(pop) +#endif + +void glslang_decode_resource_limits(glslang_resource_t* resources, char* config) +{ + glslang::DecodeResourceLimits(reinterpret_cast(resources), config); +} diff --git a/Externals/glslang/StandAlone/resource_limits_c.h b/Externals/glslang/StandAlone/resource_limits_c.h new file mode 100644 index 000000000000..108fd5e21ed9 --- /dev/null +++ b/Externals/glslang/StandAlone/resource_limits_c.h @@ -0,0 +1,54 @@ +/** +BSD 2-Clause License + +Copyright (c) 2020, Travis Fort +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +**/ + +#ifndef _STAND_ALONE_RESOURCE_LIMITS_C_INCLUDED_ +#define _STAND_ALONE_RESOURCE_LIMITS_C_INCLUDED_ + +#include "../glslang/Include/glslang_c_interface.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// These are the default resources for TBuiltInResources, used for both +// - parsing this string for the case where the user didn't supply one, +// - dumping out a template for user construction of a config file. +const glslang_resource_t* glslang_default_resource(void); + +// Returns the DefaultTBuiltInResource as a human-readable string. +// NOTE: User is responsible for freeing this string. +const char* glslang_default_resource_string(); + +// Decodes the resource limits from |config| to |resources|. +void glslang_decode_resource_limits(glslang_resource_t* resources, char* config); + +#ifdef __cplusplus +} +#endif + +#endif // _STAND_ALONE_RESOURCE_LIMITS_C_INCLUDED_ diff --git a/Externals/glslang/StandAlone/spirv-remap.cpp b/Externals/glslang/StandAlone/spirv-remap.cpp index 5e2ed0aeafcb..48878c3af084 100644 --- a/Externals/glslang/StandAlone/spirv-remap.cpp +++ b/Externals/glslang/StandAlone/spirv-remap.cpp @@ -334,8 +334,6 @@ int main(int argc, char** argv) if (outputDir.empty()) usage(argv[0], "Output directory required"); - std::string errmsg; - // Main operations: read, remap, and write. execute(inputFile, outputDir, opts, verbosity); diff --git a/Externals/glslang/build_overrides/build.gni b/Externals/glslang/build_overrides/build.gni new file mode 100644 index 000000000000..3101a86ce86b --- /dev/null +++ b/Externals/glslang/build_overrides/build.gni @@ -0,0 +1,39 @@ +# Copyright (C) 2020 The Khronos Group Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of The Khronos Group Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +declare_args() { + build_with_chromium = false + linux_use_bundled_binutils_override = true + ignore_elf32_limitations = true + use_system_xcode = true +} diff --git a/Externals/glslang/build_overrides/glslang.gni b/Externals/glslang/build_overrides/glslang.gni index 500578ccd7c4..003c78f04453 100644 --- a/Externals/glslang/build_overrides/glslang.gni +++ b/Externals/glslang/build_overrides/glslang.gni @@ -34,4 +34,4 @@ # These are variables that are overridable by projects that include glslang. # The path to glslang dependencies. -glslang_spirv_tools_dir = "//Externals/spirv-tools" +glslang_spirv_tools_dir = "//External/spirv-tools" diff --git a/Externals/glslang/build_overrides/spirv_tools.gni b/Externals/glslang/build_overrides/spirv_tools.gni new file mode 100644 index 000000000000..7cf7005d06cd --- /dev/null +++ b/Externals/glslang/build_overrides/spirv_tools.gni @@ -0,0 +1,38 @@ +# Copyright (C) 2020 The Khronos Group Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of The Khronos Group Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# We are building inside glslang +spirv_tools_standalone = false + +# Paths to SPIRV-Tools dependencies +spirv_tools_spirv_headers_dir = "//External/spirv-tools/external/spirv-headers" diff --git a/Externals/glslang/glslang.vcxproj b/Externals/glslang/glslang.vcxproj index 16c3f5a5757c..e7a8f430af43 100644 --- a/Externals/glslang/glslang.vcxproj +++ b/Externals/glslang/glslang.vcxproj @@ -1,5 +1,5 @@  - + @@ -18,6 +18,13 @@ + @@ -43,6 +50,7 @@ + @@ -58,6 +66,15 @@ + @@ -68,6 +85,7 @@ + @@ -95,6 +113,7 @@ + diff --git a/Externals/glslang/glslang.vcxproj.filters b/Externals/glslang/glslang.vcxproj.filters index c92a56ed2574..621de9acdc58 100644 --- a/Externals/glslang/glslang.vcxproj.filters +++ b/Externals/glslang/glslang.vcxproj.filters @@ -1,5 +1,5 @@  - + glslang\GenericCodeGen @@ -7,6 +7,27 @@ glslang\GenericCodeGen + glslang\MachineIndependant\preprocessor @@ -52,6 +73,9 @@ glslang\MachineIndependant + + glslang\MachineIndependant + glslang\MachineIndependant @@ -126,9 +150,6 @@ StandAlone - - glslang\Include - glslang\Include @@ -228,6 +249,9 @@ SPIRV + + SPIRV + SPIRV diff --git a/Externals/glslang/glslang/CInterface/glslang_c_interface.cpp b/Externals/glslang/glslang/CInterface/glslang_c_interface.cpp new file mode 100644 index 000000000000..53892bc5d2e8 --- /dev/null +++ b/Externals/glslang/glslang/CInterface/glslang_c_interface.cpp @@ -0,0 +1,471 @@ +/** + This code is based on the glslang_c_interface implementation by Viktor Latypov +**/ + +/** +BSD 2-Clause License + +Copyright (c) 2019, Viktor Latypov +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +**/ + +#include "glslang/Include/glslang_c_interface.h" + +#include "StandAlone/DirStackFileIncluder.h" +#include "StandAlone/ResourceLimits.h" +#include "glslang/Include/ShHandle.h" + +#include "glslang/Include/ResourceLimits.h" +#include "glslang/MachineIndependent/Versions.h" + +static_assert(int(GLSLANG_STAGE_COUNT) == EShLangCount, ""); +static_assert(int(GLSLANG_STAGE_MASK_COUNT) == EShLanguageMaskCount, ""); +static_assert(int(GLSLANG_SOURCE_COUNT) == glslang::EShSourceCount, ""); +static_assert(int(GLSLANG_CLIENT_COUNT) == glslang::EShClientCount, ""); +static_assert(int(GLSLANG_TARGET_COUNT) == glslang::EShTargetCount, ""); +static_assert(int(GLSLANG_TARGET_CLIENT_VERSION_COUNT) == glslang::EShTargetClientVersionCount, ""); +static_assert(int(GLSLANG_TARGET_LANGUAGE_VERSION_COUNT) == glslang::EShTargetLanguageVersionCount, ""); +static_assert(int(GLSLANG_OPT_LEVEL_COUNT) == EshOptLevelCount, ""); +static_assert(int(GLSLANG_TEX_SAMP_TRANS_COUNT) == EShTexSampTransCount, ""); +static_assert(int(GLSLANG_MSG_COUNT) == EShMsgCount, ""); +static_assert(int(GLSLANG_REFLECTION_COUNT) == EShReflectionCount, ""); +static_assert(int(GLSLANG_PROFILE_COUNT) == EProfileCount, ""); +static_assert(sizeof(glslang_limits_t) == sizeof(TLimits), ""); +static_assert(sizeof(glslang_resource_t) == sizeof(TBuiltInResource), ""); + +typedef struct glslang_shader_s { + glslang::TShader* shader; + std::string preprocessedGLSL; +} glslang_shader_t; + +typedef struct glslang_program_s { + glslang::TProgram* program; + std::vector spirv; + std::string loggerMessages; +} glslang_program_t; + +/* Wrapper/Adapter for C glsl_include_callbacks_t functions + + This class contains a 'glsl_include_callbacks_t' structure + with C include_local/include_system callback pointers. + + This class implement TShader::Includer interface + by redirecting C++ virtual methods to C callbacks. + + The 'IncludeResult' instances produced by this Includer + contain a reference to glsl_include_result_t C structure + to allow its lifetime management by another C callback + (CallbackIncluder::callbacks::free_include_result) +*/ +class CallbackIncluder : public glslang::TShader::Includer { +public: + /* Wrapper of IncludeResult which stores a glsl_include_result object internally */ + class CallbackIncludeResult : public glslang::TShader::Includer::IncludeResult { + public: + CallbackIncludeResult(const std::string& headerName, const char* const headerData, const size_t headerLength, + void* userData, glsl_include_result_t* includeResult) + : glslang::TShader::Includer::IncludeResult(headerName, headerData, headerLength, userData), + includeResult(includeResult) + { + } + + virtual ~CallbackIncludeResult() {} + + protected: + friend class CallbackIncluder; + + glsl_include_result_t* includeResult; + }; + +public: + CallbackIncluder(glsl_include_callbacks_t _callbacks, void* _context) : callbacks(_callbacks), context(_context) {} + + virtual ~CallbackIncluder() {} + + virtual IncludeResult* includeSystem(const char* headerName, const char* includerName, + size_t inclusionDepth) override + { + if (this->callbacks.include_system) { + glsl_include_result_t* result = + this->callbacks.include_system(this->context, headerName, includerName, inclusionDepth); + + return new CallbackIncludeResult(std::string(headerName), result->header_data, result->header_length, + nullptr, result); + } + + return glslang::TShader::Includer::includeSystem(headerName, includerName, inclusionDepth); + } + + virtual IncludeResult* includeLocal(const char* headerName, const char* includerName, + size_t inclusionDepth) override + { + if (this->callbacks.include_local) { + glsl_include_result_t* result = + this->callbacks.include_local(this->context, headerName, includerName, inclusionDepth); + + return new CallbackIncludeResult(std::string(headerName), result->header_data, result->header_length, + nullptr, result); + } + + return glslang::TShader::Includer::includeLocal(headerName, includerName, inclusionDepth); + } + + /* This function only calls free_include_result callback + when the IncludeResult instance is allocated by a C function */ + virtual void releaseInclude(IncludeResult* result) override + { + if (result == nullptr) + return; + + if (this->callbacks.free_include_result && (result->userData == nullptr)) { + CallbackIncludeResult* innerResult = static_cast(result); + /* use internal free() function */ + this->callbacks.free_include_result(this->context, innerResult->includeResult); + /* ignore internal fields of TShader::Includer::IncludeResult */ + delete result; + return; + } + + delete[] static_cast(result->userData); + delete result; + } + +private: + CallbackIncluder() {} + + /* C callback pointers */ + glsl_include_callbacks_t callbacks; + /* User-defined context */ + void* context; +}; + +GLSLANG_EXPORT int glslang_initialize_process() { return static_cast(glslang::InitializeProcess()); } + +GLSLANG_EXPORT void glslang_finalize_process() { glslang::FinalizeProcess(); } + +static EShLanguage c_shader_stage(glslang_stage_t stage) +{ + switch (stage) { + case GLSLANG_STAGE_VERTEX: + return EShLangVertex; + case GLSLANG_STAGE_TESSCONTROL: + return EShLangTessControl; + case GLSLANG_STAGE_TESSEVALUATION: + return EShLangTessEvaluation; + case GLSLANG_STAGE_GEOMETRY: + return EShLangGeometry; + case GLSLANG_STAGE_FRAGMENT: + return EShLangFragment; + case GLSLANG_STAGE_COMPUTE: + return EShLangCompute; + case GLSLANG_STAGE_RAYGEN_NV: + return EShLangRayGen; + case GLSLANG_STAGE_INTERSECT_NV: + return EShLangIntersect; + case GLSLANG_STAGE_ANYHIT_NV: + return EShLangAnyHit; + case GLSLANG_STAGE_CLOSESTHIT_NV: + return EShLangClosestHit; + case GLSLANG_STAGE_MISS_NV: + return EShLangMiss; + case GLSLANG_STAGE_CALLABLE_NV: + return EShLangCallable; + case GLSLANG_STAGE_TASK_NV: + return EShLangTaskNV; + case GLSLANG_STAGE_MESH_NV: + return EShLangMeshNV; + default: + break; + } + return EShLangCount; +} + +static int c_shader_messages(glslang_messages_t messages) +{ +#define CONVERT_MSG(in, out) \ + if ((messages & in) == in) \ + res |= out; + + int res = 0; + + CONVERT_MSG(GLSLANG_MSG_RELAXED_ERRORS_BIT, EShMsgRelaxedErrors); + CONVERT_MSG(GLSLANG_MSG_SUPPRESS_WARNINGS_BIT, EShMsgSuppressWarnings); + CONVERT_MSG(GLSLANG_MSG_AST_BIT, EShMsgAST); + CONVERT_MSG(GLSLANG_MSG_SPV_RULES_BIT, EShMsgSpvRules); + CONVERT_MSG(GLSLANG_MSG_VULKAN_RULES_BIT, EShMsgVulkanRules); + CONVERT_MSG(GLSLANG_MSG_ONLY_PREPROCESSOR_BIT, EShMsgOnlyPreprocessor); + CONVERT_MSG(GLSLANG_MSG_READ_HLSL_BIT, EShMsgReadHlsl); + CONVERT_MSG(GLSLANG_MSG_CASCADING_ERRORS_BIT, EShMsgCascadingErrors); + CONVERT_MSG(GLSLANG_MSG_KEEP_UNCALLED_BIT, EShMsgKeepUncalled); + CONVERT_MSG(GLSLANG_MSG_HLSL_OFFSETS_BIT, EShMsgHlslOffsets); + CONVERT_MSG(GLSLANG_MSG_DEBUG_INFO_BIT, EShMsgDebugInfo); + CONVERT_MSG(GLSLANG_MSG_HLSL_ENABLE_16BIT_TYPES_BIT, EShMsgHlslEnable16BitTypes); + CONVERT_MSG(GLSLANG_MSG_HLSL_LEGALIZATION_BIT, EShMsgHlslLegalization); + CONVERT_MSG(GLSLANG_MSG_HLSL_DX9_COMPATIBLE_BIT, EShMsgHlslDX9Compatible); + CONVERT_MSG(GLSLANG_MSG_BUILTIN_SYMBOL_TABLE_BIT, EShMsgBuiltinSymbolTable); + return res; +#undef CONVERT_MSG +} + +static glslang::EShTargetLanguageVersion +c_shader_target_language_version(glslang_target_language_version_t target_language_version) +{ + switch (target_language_version) { + case GLSLANG_TARGET_SPV_1_0: + return glslang::EShTargetSpv_1_0; + case GLSLANG_TARGET_SPV_1_1: + return glslang::EShTargetSpv_1_1; + case GLSLANG_TARGET_SPV_1_2: + return glslang::EShTargetSpv_1_2; + case GLSLANG_TARGET_SPV_1_3: + return glslang::EShTargetSpv_1_3; + case GLSLANG_TARGET_SPV_1_4: + return glslang::EShTargetSpv_1_4; + case GLSLANG_TARGET_SPV_1_5: + return glslang::EShTargetSpv_1_5; + case GLSLANG_TARGET_SPV_1_6: + return glslang::EShTargetSpv_1_6; + default: + break; + } + return glslang::EShTargetSpv_1_0; +} + +static glslang::EShClient c_shader_client(glslang_client_t client) +{ + switch (client) { + case GLSLANG_CLIENT_VULKAN: + return glslang::EShClientVulkan; + case GLSLANG_CLIENT_OPENGL: + return glslang::EShClientOpenGL; + default: + break; + } + + return glslang::EShClientNone; +} + +static glslang::EShTargetClientVersion c_shader_client_version(glslang_target_client_version_t client_version) +{ + switch (client_version) { + case GLSLANG_TARGET_VULKAN_1_1: + return glslang::EShTargetVulkan_1_1; + case GLSLANG_TARGET_VULKAN_1_2: + return glslang::EShTargetVulkan_1_2; + case GLSLANG_TARGET_VULKAN_1_3: + return glslang::EShTargetVulkan_1_3; + case GLSLANG_TARGET_OPENGL_450: + return glslang::EShTargetOpenGL_450; + default: + break; + } + + return glslang::EShTargetVulkan_1_0; +} + +static glslang::EShTargetLanguage c_shader_target_language(glslang_target_language_t target_language) +{ + if (target_language == GLSLANG_TARGET_NONE) + return glslang::EShTargetNone; + + return glslang::EShTargetSpv; +} + +static glslang::EShSource c_shader_source(glslang_source_t source) +{ + switch (source) { + case GLSLANG_SOURCE_GLSL: + return glslang::EShSourceGlsl; + case GLSLANG_SOURCE_HLSL: + return glslang::EShSourceHlsl; + default: + break; + } + + return glslang::EShSourceNone; +} + +static EProfile c_shader_profile(glslang_profile_t profile) +{ + switch (profile) { + case GLSLANG_BAD_PROFILE: + return EBadProfile; + case GLSLANG_NO_PROFILE: + return ENoProfile; + case GLSLANG_CORE_PROFILE: + return ECoreProfile; + case GLSLANG_COMPATIBILITY_PROFILE: + return ECompatibilityProfile; + case GLSLANG_ES_PROFILE: + return EEsProfile; + case GLSLANG_PROFILE_COUNT: // Should not use this + break; + } + + return EProfile(); +} + +GLSLANG_EXPORT glslang_shader_t* glslang_shader_create(const glslang_input_t* input) +{ + if (!input || !input->code) { + printf("Error creating shader: null input(%p)/input->code\n", input); + + if (input) + printf("input->code = %p\n", input->code); + + return nullptr; + } + + glslang_shader_t* shader = new glslang_shader_t(); + + shader->shader = new glslang::TShader(c_shader_stage(input->stage)); + shader->shader->setStrings(&input->code, 1); + shader->shader->setEnvInput(c_shader_source(input->language), c_shader_stage(input->stage), + c_shader_client(input->client), input->default_version); + shader->shader->setEnvClient(c_shader_client(input->client), c_shader_client_version(input->client_version)); + shader->shader->setEnvTarget(c_shader_target_language(input->target_language), + c_shader_target_language_version(input->target_language_version)); + + return shader; +} + +GLSLANG_EXPORT void glslang_shader_shift_binding(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base) +{ + const glslang::TResourceType res_type = glslang::TResourceType(res); + shader->shader->setShiftBinding(res_type, base); +} + +GLSLANG_EXPORT void glslang_shader_shift_binding_for_set(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base, unsigned int set) +{ + const glslang::TResourceType res_type = glslang::TResourceType(res); + shader->shader->setShiftBindingForSet(res_type, base, set); +} + +GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int options) +{ + if (options & GLSLANG_SHADER_AUTO_MAP_BINDINGS) { + shader->shader->setAutoMapBindings(true); + } + + if (options & GLSLANG_SHADER_AUTO_MAP_LOCATIONS) { + shader->shader->setAutoMapLocations(true); + } + + if (options & GLSLANG_SHADER_VULKAN_RULES_RELAXED) { + shader->shader->setEnvInputVulkanRulesRelaxed(); + } +} + +GLSLANG_EXPORT void glslang_shader_set_glsl_version(glslang_shader_t* shader, int version) +{ + shader->shader->setOverrideVersion(version); +} + +GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader) +{ + return shader->preprocessedGLSL.c_str(); +} + +GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input) +{ + DirStackFileIncluder Includer; + /* TODO: use custom callbacks if they are available in 'i->callbacks' */ + return shader->shader->preprocess( + reinterpret_cast(input->resource), + input->default_version, + c_shader_profile(input->default_profile), + input->force_default_version_and_profile != 0, + input->forward_compatible != 0, + (EShMessages)c_shader_messages(input->messages), + &shader->preprocessedGLSL, + Includer + ); +} + +GLSLANG_EXPORT int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input) +{ + const char* preprocessedCStr = shader->preprocessedGLSL.c_str(); + shader->shader->setStrings(&preprocessedCStr, 1); + + return shader->shader->parse( + reinterpret_cast(input->resource), + input->default_version, + input->forward_compatible != 0, + (EShMessages)c_shader_messages(input->messages) + ); +} + +GLSLANG_EXPORT const char* glslang_shader_get_info_log(glslang_shader_t* shader) { return shader->shader->getInfoLog(); } + +GLSLANG_EXPORT const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader) { return shader->shader->getInfoDebugLog(); } + +GLSLANG_EXPORT void glslang_shader_delete(glslang_shader_t* shader) +{ + if (!shader) + return; + + delete (shader->shader); + delete (shader); +} + +GLSLANG_EXPORT glslang_program_t* glslang_program_create() +{ + glslang_program_t* p = new glslang_program_t(); + p->program = new glslang::TProgram(); + return p; +} + +GLSLANG_EXPORT void glslang_program_delete(glslang_program_t* program) +{ + if (!program) + return; + + delete (program->program); + delete (program); +} + +GLSLANG_EXPORT void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader) +{ + program->program->addShader(shader->shader); +} + +GLSLANG_EXPORT int glslang_program_link(glslang_program_t* program, int messages) +{ + return (int)program->program->link((EShMessages)messages); +} + +GLSLANG_EXPORT int glslang_program_map_io(glslang_program_t* program) +{ + return (int)program->program->mapIO(); +} + +GLSLANG_EXPORT const char* glslang_program_get_info_log(glslang_program_t* program) +{ + return program->program->getInfoLog(); +} + +GLSLANG_EXPORT const char* glslang_program_get_info_debug_log(glslang_program_t* program) +{ + return program->program->getInfoDebugLog(); +} diff --git a/Externals/glslang/glslang/CMakeLists.txt b/Externals/glslang/glslang/CMakeLists.txt index 446cabb91c7d..d0394c865ee4 100644 --- a/Externals/glslang/glslang/CMakeLists.txt +++ b/Externals/glslang/glslang/CMakeLists.txt @@ -1,16 +1,62 @@ +# Copyright (C) 2020 The Khronos Group Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of The Khronos Group Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + if(WIN32) add_subdirectory(OSDependent/Windows) -elseif(UNIX) +elseif(UNIX OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia") add_subdirectory(OSDependent/Unix) -else(WIN32) +else() message("unknown platform") -endif(WIN32) +endif() -if(EMSCRIPTEN OR ENABLE_GLSLANG_WEB) +if(EMSCRIPTEN OR ENABLE_GLSLANG_JS) + # May be enabled on non-Emscripten builds for binary-size testing. add_subdirectory(OSDependent/Web) -endif(EMSCRIPTEN OR ENABLE_GLSLANG_WEB) +endif() -set(SOURCES +################################################################################ +# GenericCodeGen +################################################################################ +add_library(GenericCodeGen STATIC + GenericCodeGen/CodeGen.cpp + GenericCodeGen/Link.cpp) +set_property(TARGET GenericCodeGen PROPERTY POSITION_INDEPENDENT_CODE ON) +set_property(TARGET GenericCodeGen PROPERTY FOLDER glslang) + +################################################################################ +# MachineIndependent +################################################################################ +set(MACHINEINDEPENDENT_SOURCES MachineIndependent/glslang.m4 MachineIndependent/glslang.y MachineIndependent/glslang_tab.cpp @@ -27,6 +73,7 @@ set(SOURCES MachineIndependent/RemoveTree.cpp MachineIndependent/Scan.cpp MachineIndependent/ShaderLang.cpp + MachineIndependent/SpirvIntrinsics.cpp MachineIndependent/SymbolTable.cpp MachineIndependent/Versions.cpp MachineIndependent/intermOut.cpp @@ -40,23 +87,9 @@ set(SOURCES MachineIndependent/preprocessor/PpScanner.cpp MachineIndependent/preprocessor/PpTokens.cpp MachineIndependent/propagateNoContraction.cpp - GenericCodeGen/CodeGen.cpp - GenericCodeGen/Link.cpp) +) -set(HEADERS - Public/ShaderLang.h - Include/arrays.h - Include/BaseTypes.h - Include/Common.h - Include/ConstantUnion.h - Include/InfoSink.h - Include/InitializeGlobals.h - Include/intermediate.h - Include/PoolAlloc.h - Include/ResourceLimits.h - Include/revision.h - Include/ShHandle.h - Include/Types.h +set(MACHINEINDEPENDENT_HEADERS MachineIndependent/attribute.h MachineIndependent/glslang_tab.cpp.h MachineIndependent/gl_types.h @@ -74,50 +107,122 @@ set(HEADERS MachineIndependent/parseVersions.h MachineIndependent/propagateNoContraction.h MachineIndependent/preprocessor/PpContext.h - MachineIndependent/preprocessor/PpTokens.h) + MachineIndependent/preprocessor/PpTokens.h +) + +if(ENABLE_HLSL) + list(APPEND MACHINEINDEPENDENT_SOURCES + HLSL/hlslAttributes.cpp + HLSL/hlslParseHelper.cpp + HLSL/hlslScanContext.cpp + HLSL/hlslOpMap.cpp + HLSL/hlslTokenStream.cpp + HLSL/hlslGrammar.cpp + HLSL/hlslParseables.cpp) + + list(APPEND MACHINEINDEPENDENT_HEADERS + HLSL/hlslAttributes.h + HLSL/hlslParseHelper.h + HLSL/hlslTokens.h + HLSL/hlslScanContext.h + HLSL/hlslOpMap.h + HLSL/hlslTokenStream.h + HLSL/hlslGrammar.h + HLSL/hlslParseables.h) +endif() + +add_library(MachineIndependent STATIC ${MACHINEINDEPENDENT_SOURCES} ${MACHINEINDEPENDENT_HEADERS}) +set_property(TARGET MachineIndependent PROPERTY POSITION_INDEPENDENT_CODE ON) +set_property(TARGET MachineIndependent PROPERTY FOLDER glslang) + +glslang_add_build_info_dependency(MachineIndependent) + +glslang_pch(MachineIndependent MachineIndependent/pch.h) -glslang_pch(SOURCES MachineIndependent/pch.cpp) +target_link_libraries(MachineIndependent PRIVATE OGLCompiler OSDependent GenericCodeGen) -add_library(glslang ${LIB_TYPE} ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS}) -set_property(TARGET glslang PROPERTY FOLDER glslang) -set_property(TARGET glslang PROPERTY POSITION_INDEPENDENT_CODE ON) -target_link_libraries(glslang OGLCompiler OSDependent) -target_include_directories(glslang PUBLIC - $ - $) +################################################################################ +# glslang +################################################################################ +set(GLSLANG_SOURCES + CInterface/glslang_c_interface.cpp) + +set(GLSLANG_HEADERS + Public/ShaderLang.h + Include/arrays.h + Include/BaseTypes.h + Include/Common.h + Include/ConstantUnion.h + Include/glslang_c_interface.h + Include/glslang_c_shader_types.h + Include/InfoSink.h + Include/InitializeGlobals.h + Include/intermediate.h + Include/PoolAlloc.h + Include/ResourceLimits.h + Include/ShHandle.h + Include/SpirvIntrinsics.h + Include/Types.h) + +add_library(glslang ${LIB_TYPE} ${BISON_GLSLParser_OUTPUT_SOURCE} ${GLSLANG_SOURCES} ${GLSLANG_HEADERS}) +set_target_properties(glslang PROPERTIES + FOLDER glslang + POSITION_INDEPENDENT_CODE ON + VERSION "${GLSLANG_VERSION}" + SOVERSION "${GLSLANG_VERSION_MAJOR}") +target_link_libraries(glslang PRIVATE OGLCompiler OSDependent MachineIndependent) +target_include_directories(glslang PUBLIC + $ + $) + +glslang_add_build_info_dependency(glslang) + +glslang_only_export_explicit_symbols(glslang) if(WIN32 AND BUILD_SHARED_LIBS) set_target_properties(glslang PROPERTIES PREFIX "") endif() -if(ENABLE_HLSL) - target_link_libraries(glslang HLSL) -endif() - +################################################################################ +# source_groups +################################################################################ if(WIN32) source_group("Public" REGULAR_EXPRESSION "Public/*") source_group("MachineIndependent" REGULAR_EXPRESSION "MachineIndependent/[^/]*") source_group("Include" REGULAR_EXPRESSION "Include/[^/]*") source_group("GenericCodeGen" REGULAR_EXPRESSION "GenericCodeGen/*") source_group("MachineIndependent\\Preprocessor" REGULAR_EXPRESSION "MachineIndependent/preprocessor/*") -endif(WIN32) + source_group("HLSL" REGULAR_EXPRESSION "HLSL/*") + source_group("CInterface" REGULAR_EXPRESSION "CInterface/*") +endif() +################################################################################ +# install +################################################################################ if(ENABLE_GLSLANG_INSTALL) if(BUILD_SHARED_LIBS) - install(TARGETS glslang EXPORT glslangTargets + install(TARGETS glslang + EXPORT glslangTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) else() - install(TARGETS glslang EXPORT glslangTargets + install(TARGETS glslang MachineIndependent GenericCodeGen + EXPORT glslangTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - install(EXPORT glslangTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) -endif(ENABLE_GLSLANG_INSTALL) -if(ENABLE_GLSLANG_INSTALL) - foreach(file ${HEADERS}) + install(EXPORT glslangTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + + set(ALL_HEADERS + ${GLSLANG_HEADERS} + ${MACHINEINDEPENDENT_HEADERS}) + + foreach(file ${ALL_HEADERS}) get_filename_component(dir ${file} DIRECTORY) install(FILES ${file} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/${dir}) endforeach() -endif(ENABLE_GLSLANG_INSTALL) + + install(FILES ${GLSLANG_BUILD_INFO_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang) + +endif() diff --git a/Externals/glslang/hlsl/pch.cpp b/Externals/glslang/glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl similarity index 88% rename from Externals/glslang/hlsl/pch.cpp rename to Externals/glslang/glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl index b7a08654a54a..7cf545d94df1 100644 --- a/Externals/glslang/hlsl/pch.cpp +++ b/Externals/glslang/glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl @@ -1,5 +1,9 @@ // -// Copyright (C) 2018 The Khronos Group Inc. +// Copyright (C) 2002-2005 3Dlabs Inc. Ltd. +// Copyright (C) 2013-2016 LunarG, Inc. +// Copyright (C) 2016-2020 Google, Inc. +// Modifications Copyright(C) 2021 Advanced Micro Devices, Inc.All rights reserved. +// // All rights reserved. // // Redistribution and use in source and binary forms, with or without @@ -32,4 +36,3 @@ // POSSIBILITY OF SUCH DAMAGE. // -#include "pch.h" diff --git a/Externals/glslang/hlsl/hlslAttributes.cpp b/Externals/glslang/glslang/HLSL/hlslAttributes.cpp similarity index 100% rename from Externals/glslang/hlsl/hlslAttributes.cpp rename to Externals/glslang/glslang/HLSL/hlslAttributes.cpp diff --git a/Externals/glslang/hlsl/hlslAttributes.h b/Externals/glslang/glslang/HLSL/hlslAttributes.h similarity index 94% rename from Externals/glslang/hlsl/hlslAttributes.h rename to Externals/glslang/glslang/HLSL/hlslAttributes.h index b1cc0372e5e9..62faa5b8894b 100644 --- a/Externals/glslang/hlsl/hlslAttributes.h +++ b/Externals/glslang/glslang/HLSL/hlslAttributes.h @@ -39,8 +39,8 @@ #include #include -#include "../glslang/MachineIndependent/attribute.h" -#include "../glslang/MachineIndependent/SymbolTable.h" +#include "../MachineIndependent/attribute.h" +#include "../MachineIndependent/SymbolTable.h" #include "hlslScanContext.h" namespace glslang { diff --git a/Externals/glslang/hlsl/hlslGrammar.cpp b/Externals/glslang/glslang/HLSL/hlslGrammar.cpp similarity index 99% rename from Externals/glslang/hlsl/hlslGrammar.cpp rename to Externals/glslang/glslang/HLSL/hlslGrammar.cpp index 8ab1a900bebe..bd4af922a021 100644 --- a/Externals/glslang/hlsl/hlslGrammar.cpp +++ b/Externals/glslang/glslang/HLSL/hlslGrammar.cpp @@ -161,8 +161,10 @@ bool HlslGrammar::acceptDeclarationList(TIntermNode*& nodeList) return true; // declaration - if (! acceptDeclaration(nodeList)) + if (! acceptDeclaration(nodeList)) { + expected("declaration"); return false; + } } while (true); return true; @@ -382,6 +384,16 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList) if (forbidDeclarators) return true; + // Check if there are invalid in/out qualifiers + switch (declaredType.getQualifier().storage) { + case EvqIn: + case EvqOut: + case EvqInOut: + parseContext.error(token.loc, "in/out qualifiers are only valid on parameters", token.string->c_str(), ""); + default: + break; + } + // declarator_list // : declarator // : identifier @@ -470,8 +482,9 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList) } // TODO: things scoped within an annotation need their own name space; - // TODO: strings are not yet handled. - if (variableType.getBasicType() != EbtString && parseContext.getAnnotationNestingLevel() == 0) { + // TODO: non-constant strings are not yet handled. + if (!(variableType.getBasicType() == EbtString && !variableType.getQualifier().isConstant()) && + parseContext.getAnnotationNestingLevel() == 0) { if (typedefDecl) parseContext.declareTypedef(idToken.loc, *fullName, variableType); else if (variableType.getBasicType() == EbtBlock) { @@ -697,7 +710,9 @@ bool HlslGrammar::acceptQualifier(TQualifier& qualifier) qualifier.noContraction = true; break; case EHTokIn: - qualifier.storage = (qualifier.storage == EvqOut) ? EvqInOut : EvqIn; + if (qualifier.storage != EvqUniform) { + qualifier.storage = (qualifier.storage == EvqOut) ? EvqInOut : EvqIn; + } break; case EHTokOut: qualifier.storage = (qualifier.storage == EvqIn) ? EvqInOut : EvqOut; @@ -2516,6 +2531,8 @@ bool HlslGrammar::acceptMemberFunctionDefinition(TIntermNode*& nodeList, const T // bool HlslGrammar::acceptFunctionParameters(TFunction& function) { + parseContext.beginParameterParsing(function); + // LEFT_PAREN if (! acceptTokenClass(EHTokLeftParen)) return false; @@ -3227,7 +3244,7 @@ bool HlslGrammar::acceptConstructor(TIntermTyped*& node) } // hook it up - node = parseContext.handleFunctionCall(arguments->getLoc(), constructorFunction, arguments); + node = parseContext.handleFunctionCall(token.loc, constructorFunction, arguments); return node != nullptr; } diff --git a/Externals/glslang/hlsl/hlslGrammar.h b/Externals/glslang/glslang/HLSL/hlslGrammar.h similarity index 100% rename from Externals/glslang/hlsl/hlslGrammar.h rename to Externals/glslang/glslang/HLSL/hlslGrammar.h diff --git a/Externals/glslang/hlsl/hlslOpMap.cpp b/Externals/glslang/glslang/HLSL/hlslOpMap.cpp similarity index 100% rename from Externals/glslang/hlsl/hlslOpMap.cpp rename to Externals/glslang/glslang/HLSL/hlslOpMap.cpp diff --git a/Externals/glslang/hlsl/hlslOpMap.h b/Externals/glslang/glslang/HLSL/hlslOpMap.h similarity index 100% rename from Externals/glslang/hlsl/hlslOpMap.h rename to Externals/glslang/glslang/HLSL/hlslOpMap.h diff --git a/Externals/glslang/hlsl/hlslParseHelper.cpp b/Externals/glslang/glslang/HLSL/hlslParseHelper.cpp old mode 100755 new mode 100644 similarity index 96% rename from Externals/glslang/hlsl/hlslParseHelper.cpp rename to Externals/glslang/glslang/HLSL/hlslParseHelper.cpp index be665ac00d15..2d0a8e926d72 --- a/Externals/glslang/hlsl/hlslParseHelper.cpp +++ b/Externals/glslang/glslang/HLSL/hlslParseHelper.cpp @@ -39,11 +39,11 @@ #include "hlslGrammar.h" #include "hlslAttributes.h" -#include "../glslang/Include/Common.h" -#include "../glslang/MachineIndependent/Scan.h" -#include "../glslang/MachineIndependent/preprocessor/PpContext.h" +#include "../Include/Common.h" +#include "../MachineIndependent/Scan.h" +#include "../MachineIndependent/preprocessor/PpContext.h" -#include "../glslang/OSDependent/osinclude.h" +#include "../OSDependent/osinclude.h" #include #include @@ -69,7 +69,8 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int clipDistanceOutput(nullptr), cullDistanceOutput(nullptr), clipDistanceInput(nullptr), - cullDistanceInput(nullptr) + cullDistanceInput(nullptr), + parsingEntrypointParameters(false) { globalUniformDefaults.clear(); globalUniformDefaults.layoutMatrix = ElmRowMajor; @@ -756,9 +757,6 @@ TIntermTyped* HlslParseContext::handleBracketOperator(const TSourceLoc& loc, TIn // indexStructBufferContent returns nullptr if it isn't a structuredbuffer (SSBO). TIntermTyped* sbArray = indexStructBufferContent(loc, base); if (sbArray != nullptr) { - if (sbArray == nullptr) - return nullptr; - // Now we'll apply the [] index to that array const TOperator idxOp = (index->getQualifier().storage == EvqConst) ? EOpIndexDirect : EOpIndexIndirect; @@ -816,7 +814,7 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, base->getAsSymbolNode()->getName().c_str(), ""); else error(loc, " left of '[' is not of type array, matrix, or vector ", "expression", ""); - } else if (base->getType().getQualifier().isFrontEndConstant() && + } else if (base->getType().getQualifier().isFrontEndConstant() && index->getQualifier().isFrontEndConstant()) { // both base and index are front-end constants checkIndex(loc, base->getType(), indexValue); @@ -1171,7 +1169,7 @@ bool HlslParseContext::shouldFlatten(const TType& type, TStorageQualifier qualif } // Top level variable flattening: construct data -void HlslParseContext::flatten(const TVariable& variable, bool linkage) +void HlslParseContext::flatten(const TVariable& variable, bool linkage, bool arrayed) { const TType& type = variable.getType(); @@ -1183,8 +1181,15 @@ void HlslParseContext::flatten(const TVariable& variable, bool linkage) TFlattenData(type.getQualifier().layoutBinding, type.getQualifier().layoutLocation))); - // the item is a map pair, so first->second is the TFlattenData itself. - flatten(variable, type, entry.first->second, variable.getName(), linkage, type.getQualifier(), nullptr); + // if flattening arrayed io struct, array each member of dereferenced type + if (arrayed) { + const TType dereferencedType(type, 0); + flatten(variable, dereferencedType, entry.first->second, variable.getName(), linkage, + type.getQualifier(), type.getArraySizes()); + } else { + flatten(variable, type, entry.first->second, variable.getName(), linkage, + type.getQualifier(), nullptr); + } } // Recursively flatten the given variable at the provided type, building the flattenData as we go. @@ -1258,6 +1263,10 @@ int HlslParseContext::addFlattenedMember(const TVariable& variable, const TType& } } + // Only propagate arraysizes here for arrayed io + if (variable.getType().getQualifier().isArrayedIo(language) && builtInArraySizes != nullptr) + memberVariable->getWritableType().copyArraySizes(*builtInArraySizes); + flattenData.offsets.push_back(static_cast(flattenData.members.size())); flattenData.members.push_back(memberVariable); @@ -1367,7 +1376,7 @@ TIntermTyped* HlslParseContext::flattenAccess(TIntermTyped* base, int member) return flattened ? flattened : base; } -TIntermTyped* HlslParseContext::flattenAccess(int uniqueId, int member, TStorageQualifier outerStorage, +TIntermTyped* HlslParseContext::flattenAccess(long long uniqueId, int member, TStorageQualifier outerStorage, const TType& dereferencedType, int subset) { const auto flattenData = flattenMap.find(uniqueId); @@ -1435,7 +1444,7 @@ int HlslParseContext::findSubtreeOffset(const TType& type, int subset, const TVe }; // Find and return the split IO TVariable for id, or nullptr if none. -TVariable* HlslParseContext::getSplitNonIoVar(int id) const +TVariable* HlslParseContext::getSplitNonIoVar(long long id) const { const auto splitNonIoVar = splitNonIoVars.find(id); if (splitNonIoVar == splitNonIoVars.end()) @@ -1839,7 +1848,7 @@ void HlslParseContext::handleEntryPointAttributes(const TSourceLoc& loc, const T error(loc, "invalid partitioning", "", ""); } else { TVertexSpacing partitioning = EvsNone; - + if (partitionStr == "integer") { partitioning = EvsEqual; } else if (partitionStr == "fractional_even") { @@ -1944,6 +1953,10 @@ void HlslParseContext::transferTypeAttributes(const TSourceLoc& loc, const TAttr break; case EatConstantId: // specialization constant + if (type.getQualifier().storage != EvqConst) { + error(loc, "needs a const type", "constant_id", ""); + break; + } if (it->getInt(value)) { TSourceLoc loc; loc.init(); @@ -2049,7 +2062,7 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct }; // if we aren't in the entry point, fix the IO as such and exit - if (userFunction.getName().compare(intermediate.getEntryPointName().c_str()) != 0) { + if (! isEntrypointName(userFunction.getName())) { remapNonEntryPointIO(userFunction); return nullptr; } @@ -2070,11 +2083,8 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct // Further this return/in/out transform by flattening, splitting, and assigning locations const auto makeVariableInOut = [&](TVariable& variable) { if (variable.getType().isStruct()) { - if (variable.getType().getQualifier().isArrayedIo(language)) { - if (variable.getType().containsBuiltIn()) - split(variable); - } else if (shouldFlatten(variable.getType(), EvqVaryingIn /* not assigned yet, but close enough */, true)) - flatten(variable, false /* don't track linkage here, it will be tracked in assignToInterface() */); + bool arrayed = variable.getType().getQualifier().isArrayedIo(language); + flatten(variable, false /* don't track linkage here, it will be tracked in assignToInterface() */, arrayed); } // TODO: flatten arrays too // TODO: flatten everything in I/O @@ -2105,6 +2115,23 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct makeVariableInOut(*(*it)); } + // Add uniform parameters to the $Global uniform block. + TVector opaque_uniforms; + for (int i = 0; i < userFunction.getParamCount(); i++) { + TType& paramType = *userFunction[i].type; + TString& paramName = *userFunction[i].name; + if (paramType.getQualifier().storage == EvqUniform) { + if (!paramType.containsOpaque()) { + // Add it to the global uniform block. + growGlobalUniformBlock(loc, paramType, paramName); + } else { + // Declare it as a separate variable. + TVariable *var = makeInternalVariable(paramName.c_str(), paramType); + opaque_uniforms.push_back(var); + } + } + } + // Synthesize the call pushScope(); // matches the one in handleFunctionBody() @@ -2125,6 +2152,7 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct TVector argVars; TIntermAggregate* synthBody = new TIntermAggregate(); auto inputIt = inputs.begin(); + auto opaqueUniformIt = opaque_uniforms.begin(); TIntermTyped* callingArgs = nullptr; for (int i = 0; i < userFunction.getParamCount(); i++) { @@ -2139,10 +2167,34 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct TIntermSymbol* arg = intermediate.addSymbol(*argVars.back()); handleFunctionArgument(&callee, callingArgs, arg); if (param.type->getQualifier().isParamInput()) { - intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign, arg, - intermediate.addSymbol(**inputIt))); + TIntermTyped* input = intermediate.addSymbol(**inputIt); + if (input->getType().getQualifier().builtIn == EbvFragCoord && intermediate.getDxPositionW()) { + // Replace FragCoord W with reciprocal + auto pos_xyz = handleDotDereference(loc, input, "xyz"); + auto pos_w = handleDotDereference(loc, input, "w"); + auto one = intermediate.addConstantUnion(1.0, EbtFloat, loc); + auto recip_w = intermediate.addBinaryMath(EOpDiv, one, pos_w, loc); + TIntermAggregate* dst = new TIntermAggregate(EOpConstructVec4); + dst->getSequence().push_back(pos_xyz); + dst->getSequence().push_back(recip_w); + dst->setType(TType(EbtFloat, EvqTemporary, 4)); + dst->setLoc(loc); + input = dst; + } + intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign, arg, input)); inputIt++; } + if (param.type->getQualifier().storage == EvqUniform) { + if (!param.type->containsOpaque()) { + // Look it up in the $Global uniform block. + intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign, arg, + handleVariable(loc, param.name))); + } else { + intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign, arg, + intermediate.addSymbol(**opaqueUniformIt))); + ++opaqueUniformIt; + } + } } // Call @@ -2413,6 +2465,62 @@ void HlslParseContext::handleFunctionArgument(TFunction* function, arguments = newArg; } +// FragCoord may require special loading: we can optionally reciprocate W. +TIntermTyped* HlslParseContext::assignFromFragCoord(const TSourceLoc& loc, TOperator op, + TIntermTyped* left, TIntermTyped* right) +{ + // If we are not asked for reciprocal W, use a plain old assign. + if (!intermediate.getDxPositionW()) + return intermediate.addAssign(op, left, right, loc); + + // If we get here, we should reciprocate W. + TIntermAggregate* assignList = nullptr; + + // If this is a complex rvalue, we don't want to dereference it many times. Create a temporary. + TVariable* rhsTempVar = nullptr; + rhsTempVar = makeInternalVariable("@fragcoord", right->getType()); + rhsTempVar->getWritableType().getQualifier().makeTemporary(); + + { + TIntermTyped* rhsTempSym = intermediate.addSymbol(*rhsTempVar, loc); + assignList = intermediate.growAggregate(assignList, + intermediate.addAssign(EOpAssign, rhsTempSym, right, loc), loc); + } + + // tmp.w = 1.0 / tmp.w + { + const int W = 3; + + TIntermTyped* tempSymL = intermediate.addSymbol(*rhsTempVar, loc); + TIntermTyped* tempSymR = intermediate.addSymbol(*rhsTempVar, loc); + TIntermTyped* index = intermediate.addConstantUnion(W, loc); + + TIntermTyped* lhsElement = intermediate.addIndex(EOpIndexDirect, tempSymL, index, loc); + TIntermTyped* rhsElement = intermediate.addIndex(EOpIndexDirect, tempSymR, index, loc); + + const TType derefType(right->getType(), 0); + + lhsElement->setType(derefType); + rhsElement->setType(derefType); + + auto one = intermediate.addConstantUnion(1.0, EbtFloat, loc); + auto recip_w = intermediate.addBinaryMath(EOpDiv, one, rhsElement, loc); + + assignList = intermediate.growAggregate(assignList, intermediate.addAssign(EOpAssign, lhsElement, recip_w, loc)); + } + + // Assign the rhs temp (now with W reciprocal) to the final output + { + TIntermTyped* rhsTempSym = intermediate.addSymbol(*rhsTempVar, loc); + assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, left, rhsTempSym, loc)); + } + + assert(assignList != nullptr); + assignList->setOperator(EOpSequence); + + return assignList; +} + // Position may require special handling: we can optionally invert Y. // See: https://github.com/KhronosGroup/glslang/issues/1173 // https://github.com/KhronosGroup/glslang/issues/494 @@ -2449,7 +2557,7 @@ TIntermTyped* HlslParseContext::assignPosition(const TSourceLoc& loc, TOperator TIntermTyped* rhsElement = intermediate.addIndex(EOpIndexDirect, tempSymR, index, loc); const TType derefType(right->getType(), 0); - + lhsElement->setType(derefType); rhsElement->setType(derefType); @@ -2469,7 +2577,7 @@ TIntermTyped* HlslParseContext::assignPosition(const TSourceLoc& loc, TOperator return assignList; } - + // Clip and cull distance require special handling due to a semantic mismatch. In HLSL, // these can be float scalar, float vector, or arrays of float scalar or float vector. // In SPIR-V, they are arrays of scalar floats in all cases. We must copy individual components @@ -2538,7 +2646,7 @@ TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc vecItems += (*semanticNSize)[x]; arrayLoc += (*semanticNSize)[x]; } - + // It can have up to 2 array dimensions (in the case of geometry shader inputs) const TArraySizes* const internalArraySizes = internalNode->getType().getArraySizes(); @@ -2559,7 +2667,7 @@ TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc // into a float array, or vice versa. Here, we make the array the right size and type, // which depends on the incoming data, which has several potential dimensions: // * Semantic ID - // * vector size + // * vector size // * array size // Of those, semantic ID and array size cannot appear simultaneously. // @@ -2620,7 +2728,7 @@ TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc // Holds individual component assignments as we make them. TIntermTyped* clipCullAssign = nullptr; - // If the types are homomorphic, use a simple assign. No need to mess about with + // If the types are homomorphic, use a simple assign. No need to mess about with // individual components. if (clipCullSym->getType().isArray() == internalNode->getType().isArray() && clipCullInnerArraySize == internalInnerArraySize && @@ -2731,23 +2839,39 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op if (binaryNode == nullptr) return false; - return (binaryNode->getOp() == EOpIndexDirect || binaryNode->getOp() == EOpIndexIndirect) && + return (binaryNode->getOp() == EOpIndexDirect || binaryNode->getOp() == EOpIndexIndirect) && wasSplit(binaryNode->getLeft()); }; + // Return symbol if node is symbol or index ref + const auto getSymbol = [](const TIntermTyped* node) -> const TIntermSymbol* { + const TIntermSymbol* symbolNode = node->getAsSymbolNode(); + if (symbolNode != nullptr) + return symbolNode; + + const TIntermBinary* binaryNode = node->getAsBinaryNode(); + if (binaryNode != nullptr && (binaryNode->getOp() == EOpIndexDirect || binaryNode->getOp() == EOpIndexIndirect)) + return binaryNode->getLeft()->getAsSymbolNode(); + + return nullptr; + }; + // Return true if this stage assigns clip position with potentially inverted Y const auto assignsClipPos = [this](const TIntermTyped* node) -> bool { return node->getType().getQualifier().builtIn == EbvPosition && (language == EShLangVertex || language == EShLangGeometry || language == EShLangTessEvaluation); }; + const TIntermSymbol* leftSymbol = getSymbol(left); + const TIntermSymbol* rightSymbol = getSymbol(right); + const bool isSplitLeft = wasSplit(left) || indexesSplit(left); const bool isSplitRight = wasSplit(right) || indexesSplit(right); - const bool isFlattenLeft = wasFlattened(left); - const bool isFlattenRight = wasFlattened(right); + const bool isFlattenLeft = wasFlattened(leftSymbol); + const bool isFlattenRight = wasFlattened(rightSymbol); - // OK to do a single assign if neither side is split or flattened. Otherwise, + // OK to do a single assign if neither side is split or flattened. Otherwise, // fall through to a member-wise copy. if (!isFlattenLeft && !isFlattenRight && !isSplitLeft && !isSplitRight) { // Clip and cull distance requires more processing. See comment above assignClipCullDistance. @@ -2793,10 +2917,10 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op memberCount = left->getType().getCumulativeArraySize(); if (isFlattenLeft) - leftVariables = &flattenMap.find(left->getAsSymbolNode()->getId())->second.members; + leftVariables = &flattenMap.find(leftSymbol->getId())->second.members; if (isFlattenRight) { - rightVariables = &flattenMap.find(right->getAsSymbolNode()->getId())->second.members; + rightVariables = &flattenMap.find(rightSymbol->getId())->second.members; } else { // The RHS is not flattened. There are several cases: // 1. 1 item to copy: Use the RHS directly. @@ -2830,8 +2954,10 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op TStorageQualifier leftStorage = left->getType().getQualifier().storage; TStorageQualifier rightStorage = right->getType().getQualifier().storage; - int leftOffset = findSubtreeOffset(*left); - int rightOffset = findSubtreeOffset(*right); + int leftOffsetStart = findSubtreeOffset(*left); + int rightOffsetStart = findSubtreeOffset(*right); + int leftOffset = leftOffsetStart; + int rightOffset = rightOffsetStart; const auto getMember = [&](bool isLeft, const TType& type, int member, TIntermTyped* splitNode, int splitMember, bool flattened) @@ -2871,10 +2997,35 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op } } } else if (flattened && !shouldFlatten(derefType, isLeft ? leftStorage : rightStorage, false)) { - if (isLeft) + if (isLeft) { + // offset will cycle through variables for arrayed io + if (leftOffset >= static_cast(leftVariables->size())) + leftOffset = leftOffsetStart; subTree = intermediate.addSymbol(*(*leftVariables)[leftOffset++]); - else + } else { + // offset will cycle through variables for arrayed io + if (rightOffset >= static_cast(rightVariables->size())) + rightOffset = rightOffsetStart; subTree = intermediate.addSymbol(*(*rightVariables)[rightOffset++]); + } + + // arrayed io + if (subTree->getType().isArray()) { + if (!arrayElement.empty()) { + const TType derefType(subTree->getType(), arrayElement.front()); + subTree = intermediate.addIndex(EOpIndexDirect, subTree, + intermediate.addConstantUnion(arrayElement.front(), loc), loc); + subTree->setType(derefType); + } else { + // There's an index operation we should transfer to the output builtin. + assert(splitNode->getAsOperator() != nullptr && + splitNode->getAsOperator()->getOp() == EOpIndexIndirect); + const TType splitDerefType(subTree->getType(), 0); + subTree = intermediate.addIndex(splitNode->getAsOperator()->getOp(), subTree, + splitNode->getAsBinaryNode()->getRight(), loc); + subTree->setType(splitDerefType); + } + } } else { // Index operator if it's an aggregate, else EOpNull const TOperator accessOp = type.isArray() ? EOpIndexDirect @@ -2989,6 +3140,10 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op subSplitLeft, subSplitRight); assignList = intermediate.growAggregate(assignList, clipCullAssign, loc); + } else if (subSplitRight->getType().getQualifier().builtIn == EbvFragCoord) { + // FragCoord can require special handling: see comment above assignFromFragCoord + TIntermTyped* fragCoordAssign = assignFromFragCoord(loc, op, subSplitLeft, subSplitRight); + assignList = intermediate.growAggregate(assignList, fragCoordAssign, loc); } else if (assignsClipPos(subSplitLeft)) { // Position can require special handling: see comment above assignPosition TIntermTyped* positionAssign = assignPosition(loc, op, subSplitLeft, subSplitRight); @@ -3174,7 +3329,7 @@ TIntermAggregate* HlslParseContext::handleSamplerTextureCombine(const TSourceLoc // shadow state. This depends on downstream optimization to // DCE one variant in [shadow, nonshadow] if both are present, // or the SPIR-V module would be invalid. - int newId = texSymbol->getId(); + long long newId = texSymbol->getId(); // Check to see if this texture has been given a shadow mode already. // If so, look up the one we already have. @@ -3352,9 +3507,9 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte // Byte address buffers index in bytes (only multiples of 4 permitted... not so much a byte address // buffer then, but that's what it calls itself. - const bool isByteAddressBuffer = (builtInType == EbvByteAddressBuffer || + const bool isByteAddressBuffer = (builtInType == EbvByteAddressBuffer || builtInType == EbvRWByteAddressBuffer); - + if (isByteAddressBuffer) argIndex = intermediate.addBinaryNode(EOpRightShift, argIndex, @@ -3369,7 +3524,7 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte const TType derefType(argArray->getType(), 0); node->setType(derefType); } - + break; case EOpMethodLoad2: @@ -3495,8 +3650,8 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte const TType indexType(argValue->getType(), 0); rValue->setType(indexType); } - - TIntermTyped* assign = intermediate.addAssign(EOpAssign, lValue, rValue, loc); + + TIntermTyped* assign = intermediate.addAssign(EOpAssign, lValue, rValue, loc); body = intermediate.growAggregate(body, assign); } @@ -3673,7 +3828,7 @@ TIntermConstantUnion* HlslParseContext::getSamplePosArray(int count) } TConstUnionArray* values = new TConstUnionArray(numSamples*2); - + for (int pos=0; possetType(TType(node->getType().getBasicType(), EvqTemporary, node->getVectorSize())); TIntermTyped* convertedResult = nullptr; - + TType retType; getTextureReturnType(sampler, retType); @@ -3733,7 +3888,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType for (unsigned m = 0; m < unsigned(retType.getStruct()->size()); ++m) { const TType memberType(retType, m); // dereferenced type of the member we're about to assign. - + // Check for bad struct members. This should have been caught upstream. Complain, because // wwe don't know what to do with it. This algorithm could be generalized to handle // other things, e.g, sub-structures, but HLSL doesn't allow them. @@ -3741,7 +3896,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType error(loc, "expected: scalar or vector type in texture structure", "", ""); return nullptr; } - + // Index into the struct variable to find the member to assign. TIntermTyped* structMember = intermediate.addIndex(EOpIndexDirectStruct, intermediate.addSymbol(*structVar, loc), @@ -3763,14 +3918,14 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType TIntermTyped* structVecComponent = intermediate.addIndex(EOpIndexDirect, structMember, intermediate.addConstantUnion(component, loc), loc); - + memberAssign = intermediate.addAssign(EOpAssign, structVecComponent, vec4Member, loc); } else { // Scalar member: we can assign to it directly. memberAssign = intermediate.addAssign(EOpAssign, structMember, vec4Member, loc); } - + conversionAggregate->getSequence().push_back(memberAssign); } } @@ -3809,7 +3964,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType if (arguments->getAsTyped()->getBasicType() != EbtSampler) return; } else { - if (argAggregate->getSequence().size() == 0 || + if (argAggregate->getSequence().size() == 0 || argAggregate->getSequence()[0] == nullptr || argAggregate->getSequence()[0]->getAsTyped()->getBasicType() != EbtSampler) return; @@ -3846,6 +4001,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType case Esd3D: constructOp = EOpConstructVec3; coordSize = 3; break; // 3D case EsdCube: constructOp = EOpConstructVec3; coordSize = 3; break; // also 3D default: + error(loc, "unhandled DX9 texture LoD dimension", "", ""); break; } @@ -3882,7 +4038,9 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType case Esd2D: constructOp = EOpConstructVec2; break; // 2D case Esd3D: constructOp = EOpConstructVec3; break; // 3D case EsdCube: constructOp = EOpConstructVec3; break; // also 3D - default: break; + default: + error(loc, "unhandled DX9 texture bias dimension", "", ""); + break; } TIntermAggregate* constructCoord = new TIntermAggregate(constructOp); @@ -3932,12 +4090,12 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType txsample->getSequence().push_back(txcombine); txsample->getSequence().push_back(argCoord); - if (argBias != nullptr) - txsample->getSequence().push_back(argBias); - if (argOffset != nullptr) txsample->getSequence().push_back(argOffset); + if (argBias != nullptr) + txsample->getSequence().push_back(argBias); + node = convertReturn(txsample, sampler); break; @@ -4006,7 +4164,8 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType case EsdBuffer: numDims = 1; break; // W (buffers) case EsdRect: numDims = 2; break; // W, H (rect) default: - assert(0 && "unhandled texture dimension"); + error(loc, "unhandled DX10 MethodGet dimension", "", ""); + break; } // Arrayed adds another dimension for the number of array elements @@ -4142,7 +4301,9 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType case 3: constructOp = EOpConstructVec3; break; case 4: constructOp = EOpConstructVec4; break; case 5: constructOp = EOpConstructVec4; break; // cubeArrayShadow, cmp value is separate arg. - default: assert(0); break; + default: + error(loc, "unhandled DX10 MethodSample dimension", "", ""); + break; } TIntermAggregate* coordWithCmp = new TIntermAggregate(constructOp); @@ -4506,13 +4667,13 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType int count = 0; for (int val = 2; val <= 16; val *= 2) idxtest[count++] = - intermediate.addBinaryNode(EOpEqual, + intermediate.addBinaryNode(EOpEqual, intermediate.addSymbol(*outSampleCount, loc), intermediate.addConstantUnion(val, loc), loc, TType(EbtBool)); const TOperator idxOp = (argSampIdx->getQualifier().storage == EvqConst) ? EOpIndexDirect : EOpIndexIndirect; - + // Create index ops into position arrays given sample index. // TODO: should it be clamped? TIntermTyped* index[4]; @@ -4527,13 +4688,13 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType // (sampleCount == 4) ? pos4[idx] : // (sampleCount == 8) ? pos8[idx] : // (sampleCount == 16) ? pos16[idx] : float2(0,0); - TIntermTyped* test = - intermediate.addSelection(idxtest[0], index[0], - intermediate.addSelection(idxtest[1], index[1], + TIntermTyped* test = + intermediate.addSelection(idxtest[0], index[0], + intermediate.addSelection(idxtest[1], index[1], intermediate.addSelection(idxtest[2], index[2], - intermediate.addSelection(idxtest[3], index[3], + intermediate.addSelection(idxtest[3], index[3], getSamplePosArray(1), loc), loc), loc), loc); - + compoundStatement = intermediate.growAggregate(compoundStatement, test); compoundStatement->setOperator(EOpSequence); compoundStatement->setLoc(loc); @@ -4546,7 +4707,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType case EOpSubpassLoad: { - const TIntermTyped* argSubpass = + const TIntermTyped* argSubpass = argAggregate ? argAggregate->getSequence()[0]->getAsTyped() : arguments->getAsTyped(); @@ -4561,7 +4722,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType break; } - + default: break; // most pass through unchanged @@ -5081,7 +5242,7 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& for (int idx = 0; idx < vecSize; ++idx) { TIntermTyped* idxConst = intermediate.addConstantUnion(idx, loc, true); - TIntermTyped* component = argValue->getType().isVector() ? + TIntermTyped* component = argValue->getType().isVector() ? intermediate.addIndex(EOpIndexDirect, argValue, idxConst, loc) : argValue; if (component != argValue) @@ -5093,7 +5254,7 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& unpackOp->setLoc(loc); TIntermTyped* lowOrder = intermediate.addIndex(EOpIndexDirect, unpackOp, zero, loc); - + if (result != nullptr) { result->getSequence().push_back(lowOrder); node = result; @@ -5101,7 +5262,7 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& node = lowOrder; } } - + break; } @@ -5132,7 +5293,7 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& for (int idx = 0; idx < vecSize; ++idx) { TIntermTyped* idxConst = intermediate.addConstantUnion(idx, loc, true); - TIntermTyped* component = argValue->getType().isVector() ? + TIntermTyped* component = argValue->getType().isVector() ? intermediate.addIndex(EOpIndexDirect, argValue, idxConst, loc) : argValue; if (component != argValue) @@ -5143,7 +5304,7 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& vec2ComponentAndZero->getSequence().push_back(zero); vec2ComponentAndZero->setType(TType(EbtFloat, EvqTemporary, 2)); vec2ComponentAndZero->setLoc(loc); - + TIntermTyped* packOp = new TIntermUnary(EOpPackHalf2x16); packOp->getAsUnaryNode()->setOperand(vec2ComponentAndZero); packOp->setLoc(loc); @@ -5216,7 +5377,7 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& TIntermTyped* notinf = handleUnaryMath(loc, "!", EOpLogicalNot, isinf); notinf->setType(boolType); - + TIntermTyped* andNode = handleBinaryMath(loc, "and", EOpLogicalAnd, notnan, notinf); andNode->setType(boolType); @@ -5404,6 +5565,10 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct op = fnCandidate->getBuiltInOp(); if (builtIn && op != EOpNull) { + // SM 4.0 and above guarantees roundEven semantics for round() + if (!hlslDX9Compatible() && op == EOpRound) + op = EOpRoundEven; + // A function call mapped to a built-in operation. result = intermediate.addBuiltInFunctionCall(loc, op, fnCandidate->getParamCount() == 1, arguments, fnCandidate->getType()); @@ -5600,7 +5765,7 @@ void HlslParseContext::addInputArgumentConversions(const TFunction& function, TI // means take 'arguments' itself as the one argument. TIntermTyped* arg = function.getParamCount() == 1 ? arguments->getAsTyped() - : (aggregate ? + : (aggregate ? aggregate->getSequence()[param]->getAsTyped() : arguments->getAsTyped()); if (*function[param].type != arg->getType()) { @@ -5671,7 +5836,7 @@ void HlslParseContext::expandArguments(const TSourceLoc& loc, const TFunction& f else if (args.size() > 1) { if (function.getParamCount() + functionParamNumberOffset == 1) { arguments = intermediate.makeAggregate(args.front()); - std::for_each(args.begin() + 1, args.end(), + std::for_each(args.begin() + 1, args.end(), [&](TIntermTyped* arg) { arguments = intermediate.growAggregate(arguments, arg); }); @@ -5690,7 +5855,7 @@ void HlslParseContext::expandArguments(const TSourceLoc& loc, const TFunction& f // means take 'arguments' itself as the one argument. TIntermTyped* arg = function.getParamCount() == 1 ? arguments->getAsTyped() - : (aggregate ? + : (aggregate ? aggregate->getSequence()[param + functionParamNumberOffset]->getAsTyped() : arguments->getAsTyped()); @@ -5983,8 +6148,12 @@ void HlslParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fn case EOpInterpolateAtCentroid: case EOpInterpolateAtSample: case EOpInterpolateAtOffset: + // TODO(greg-lunarg): Re-enable this check. It currently gives false errors for builtins + // defined and passed as members of a struct. In this case the storage class is showing to be + // Function. See glslang #2584 + // Make sure the first argument is an interpolant, or an array element of an interpolant - if (arg0->getType().getQualifier().storage != EvqVaryingIn) { + // if (arg0->getType().getQualifier().storage != EvqVaryingIn) { // It might still be an array element. // // We could check more, but the semantics of the first argument are already met; the @@ -5992,11 +6161,11 @@ void HlslParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fn // // ES and desktop 4.3 and earlier: swizzles may not be used // desktop 4.4 and later: swizzles may be used - const TIntermTyped* base = TIntermediate::findLValueBase(arg0, true); - if (base == nullptr || base->getType().getQualifier().storage != EvqVaryingIn) - error(loc, "first argument must be an interpolant, or interpolant-array element", - fnCandidate.getName().c_str(), ""); - } + // const TIntermTyped* base = TIntermediate::findLValueBase(arg0, true); + // if (base == nullptr || base->getType().getQualifier().storage != EvqVaryingIn) + // error(loc, "first argument must be an interpolant, or interpolant-array element", + // fnCandidate.getName().c_str(), ""); + // } break; default: @@ -6051,6 +6220,32 @@ void HlslParseContext::handleSemantic(TSourceLoc loc, TQualifier& qualifier, TBu return semanticNum; }; + if (builtIn == EbvNone && hlslDX9Compatible()) { + if (language == EShLangVertex) { + if (qualifier.isParamOutput()) { + if (upperCase == "POSITION") { + builtIn = EbvPosition; + } + if (upperCase == "PSIZE") { + builtIn = EbvPointSize; + } + } + } else if (language == EShLangFragment) { + if (qualifier.isParamInput() && upperCase == "VPOS") { + builtIn = EbvFragCoord; + } + if (qualifier.isParamOutput()) { + if (upperCase.compare(0, 5, "COLOR") == 0) { + qualifier.layoutLocation = getSemanticNumber(upperCase, 0, nullptr); + nextOutLocation = std::max(nextOutLocation, qualifier.layoutLocation + 1u); + } + if (upperCase == "DEPTH") { + builtIn = EbvFragDepth; + } + } + } + } + switch(builtIn) { case EbvNone: // Get location numbers from fragment outputs, instead of @@ -6567,12 +6762,6 @@ void HlslParseContext::globalQualifierFix(const TSourceLoc&, TQualifier& qualifi // // Merge characteristics of the 'src' qualifier into the 'dst'. -// If there is duplication, issue error messages, unless 'force' -// is specified, which means to just override default settings. -// -// Also, when force is false, it will be assumed that 'src' follows -// 'dst', for the purpose of error checking order for versions -// that require specific orderings of qualifiers. // void HlslParseContext::mergeQualifiers(TQualifier& dst, const TQualifier& src) { @@ -6590,8 +6779,7 @@ void HlslParseContext::mergeQualifiers(TQualifier& dst, const TQualifier& src) mergeObjectLayoutQualifiers(dst, src, false); // individual qualifiers - bool repeated = false; -#define MERGE_SINGLETON(field) repeated |= dst.field && src.field; dst.field |= src.field; +#define MERGE_SINGLETON(field) dst.field |= src.field; MERGE_SINGLETON(invariant); MERGE_SINGLETON(noContraction); MERGE_SINGLETON(centroid); @@ -6820,6 +7008,9 @@ void HlslParseContext::shareStructBufferType(TType& type) if (lhs.isStruct() != rhs.isStruct()) return false; + if (lhs.getQualifier().builtIn != rhs.getQualifier().builtIn) + return false; + if (lhs.isStruct() && rhs.isStruct()) { if (lhs.getStruct()->size() != rhs.getStruct()->size()) return false; @@ -6865,7 +7056,6 @@ void HlslParseContext::paramFix(TType& type) type.getQualifier().storage = EvqConstReadOnly; break; case EvqGlobal: - case EvqUniform: case EvqTemporary: type.getQualifier().storage = EvqIn; break; @@ -7515,7 +7705,17 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, TFunction bool tie = false; // send to the generic selector - const TFunction* bestMatch = selectFunction(candidateList, call, convertible, better, tie); + const TFunction* bestMatch = nullptr; + + // printf has var args and is in the symbol table as "printf()", + // mangled to "printf(" + if (call.getName() == "printf") { + TSymbol* symbol = symbolTable.find("printf(", &builtIn); + if (symbol) + return symbol->getAsFunction(); + } + + bestMatch = selectFunction(candidateList, call, convertible, better, tie); if (bestMatch == nullptr) { // If there is nothing selected by allowing only up-conversions (to a larger linearize() value), @@ -7571,7 +7771,7 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, TFunction if (args->getAsAggregate()) { // Handle aggregates: put all args into the new function call - for (int arg=0; arggetAsAggregate()->getSequence().size()); ++arg) { + for (int arg = 0; arg < int(args->getAsAggregate()->getSequence().size()); ++arg) { // TODO: But for constness, we could avoid the new & shallowCopy, and use the pointer directly. TParameter param = { 0, new TType, nullptr }; param.type->shallowCopy(args->getAsAggregate()->getSequence()[arg]->getAsTyped()->getType()); @@ -8465,7 +8665,7 @@ TIntermTyped* HlslParseContext::convertArray(TIntermTyped* node, const TType& ty // bump up to the next component to consume const auto getNextComponent = [&]() { TIntermTyped* component; - component = handleBracketDereference(node->getLoc(), constructee, + component = handleBracketDereference(node->getLoc(), constructee, intermediate.addConstantUnion(constructeeElement, node->getLoc())); if (component->isVector()) component = handleBracketDereference(node->getLoc(), component, @@ -8884,6 +9084,10 @@ void HlslParseContext::addQualifierToExisting(const TSourceLoc& loc, TQualifier // bool HlslParseContext::handleInputGeometry(const TSourceLoc& loc, const TLayoutGeometry& geometry) { + // these can be declared on non-entry-points, in which case they lose their meaning + if (! parsingEntrypointParameters) + return true; + switch (geometry) { case ElgPoints: // fall through case ElgLines: // ... @@ -8914,6 +9118,10 @@ bool HlslParseContext::handleOutputGeometry(const TSourceLoc& loc, const TLayout if (language != EShLangGeometry) return true; + // these can be declared on non-entry-points, in which case they lose their meaning + if (! parsingEntrypointParameters) + return true; + switch (geometry) { case ElgPoints: case ElgLineStrip: @@ -9529,7 +9737,7 @@ bool HlslParseContext::setTextureReturnType(TSampler& sampler, const TType& retT // Insert it in the vector that tracks struct return types. sampler.structReturnIndex = unsigned(textureReturnStruct.size()); textureReturnStruct.push_back(members); - + // Success! return true; } @@ -9577,7 +9785,7 @@ const TFunction* HlslParseContext::findPatchConstantFunction(const TSourceLoc& l TVector candidateList; bool builtIn; symbolTable.findFunctionNameList(mangledName, candidateList, builtIn); - + // We have to have one and only one, or we don't know which to pick: the patchconstantfunc does not // allow any disambiguation of overloads. if (candidateList.empty()) { @@ -9648,26 +9856,26 @@ void HlslParseContext::addPatchConstantInvocation() return type.isSizedArray() && biType == EbvOutputPatch; }; - + // We will perform these steps. Each is in a scoped block for separation: they could // become separate functions to make addPatchConstantInvocation shorter. - // + // // 1. Union the interfaces, and create built-ins for anything present in the PCF and // declared as a built-in variable that isn't present in the entry point's signature. // // 2. Synthesizes a call to the patchconstfunction using built-in variables from either main, // or the ones we created. Matching is based on built-in type. We may use synthesized // variables from (1) above. - // + // // 2B: Synthesize per control point invocations of wrapped entry point if the PCF requires them. // // 3. Create a return sequence: copy the return value (if any) from the PCF to a // (non-sanitized) output variable. In case this may involve multiple copies, such as for // an arrayed variable, a temporary copy of the PCF output is created to avoid multiple // indirections into a complex R-value coming from the call to the PCF. - // + // // 4. Create a barrier. - // + // // 5/5B. Call the PCF inside an if test for (invocation id == 0). TFunction* patchConstantFunctionPtr = const_cast(findPatchConstantFunction(loc)); @@ -9734,6 +9942,8 @@ void HlslParseContext::addPatchConstantInvocation() } else { // Use the original declaration type for the linkage paramType->getQualifier().builtIn = biType; + if (biType == EbvTessLevelInner || biType == EbvTessLevelOuter) + paramType->getQualifier().patch = true; if (notInEntryPoint.count(tInterstageIoData(biType, storage)) == 1) addToLinkage(*paramType, patchConstantFunction[p].name, nullptr); @@ -9772,7 +9982,7 @@ void HlslParseContext::addPatchConstantInvocation() } else { // find which built-in it is const TBuiltInVariable biType = patchConstantFunction[p].getDeclaredBuiltIn(); - + if (biType == EbvInputPatch && inputPatch == nullptr) { error(loc, "unimplemented: PCF input patch without entry point input patch parameter", "", ""); return; @@ -9879,7 +10089,7 @@ void HlslParseContext::addPatchConstantInvocation() element->setType(derefType); element->setLoc(loc); - pcfCallSequence = intermediate.growAggregate(pcfCallSequence, + pcfCallSequence = intermediate.growAggregate(pcfCallSequence, handleAssign(loc, EOpAssign, element, callReturn)); } } @@ -9905,8 +10115,8 @@ void HlslParseContext::addPatchConstantInvocation() TVariable* pcfOutput = makeInternalVariable("@patchConstantOutput", outType); pcfOutput->getWritableType().getQualifier().storage = EvqVaryingOut; - if (pcfOutput->getType().containsBuiltIn()) - split(*pcfOutput); + if (pcfOutput->getType().isStruct()) + flatten(*pcfOutput, false); assignToInterface(*pcfOutput); @@ -9928,7 +10138,7 @@ void HlslParseContext::addPatchConstantInvocation() pcfCallSequence = intermediate.growAggregate(pcfCallSequence, pcfCall); } - // ================ Step 4: Barrier ================ + // ================ Step 4: Barrier ================ TIntermTyped* barrier = new TIntermAggregate(EOpBarrier); barrier->setLoc(loc); barrier->setType(TType(EbtVoid)); @@ -10000,7 +10210,7 @@ void HlslParseContext::finalizeAppendMethods() // Patch append sequences, now that we know the stream output symbol. for (auto append = gsAppends.begin(); append != gsAppends.end(); ++append) { - append->node->getSequence()[0] = + append->node->getSequence()[0] = handleAssign(append->loc, EOpAssign, intermediate.addSymbol(*gsStreamOutput, append->loc), append->node->getSequence()[0]->getAsTyped()); diff --git a/Externals/glslang/hlsl/hlslParseHelper.h b/Externals/glslang/glslang/HLSL/hlslParseHelper.h similarity index 94% rename from Externals/glslang/hlsl/hlslParseHelper.h rename to Externals/glslang/glslang/HLSL/hlslParseHelper.h index 822de896f060..8bebb0e2b24d 100644 --- a/Externals/glslang/hlsl/hlslParseHelper.h +++ b/Externals/glslang/glslang/HLSL/hlslParseHelper.h @@ -36,9 +36,9 @@ #ifndef HLSL_PARSE_INCLUDED_ #define HLSL_PARSE_INCLUDED_ -#include "../glslang/MachineIndependent/parseVersions.h" -#include "../glslang/MachineIndependent/ParseHelper.h" -#include "../glslang/MachineIndependent/attribute.h" +#include "../MachineIndependent/parseVersions.h" +#include "../MachineIndependent/ParseHelper.h" +#include "../MachineIndependent/attribute.h" #include @@ -60,8 +60,8 @@ class HlslParseContext : public TParseContextBase { virtual const char* getGlobalUniformBlockName() const override { return "$Global"; } virtual void setUniformBlockDefaults(TType& block) const override { - block.getQualifier().layoutPacking = ElpStd140; - block.getQualifier().layoutMatrix = ElmRowMajor; + block.getQualifier().layoutPacking = globalUniformDefaults.layoutPacking; + block.getQualifier().layoutMatrix = globalUniformDefaults.layoutMatrix; } void reservedPpErrorCheck(const TSourceLoc&, const char* /*name*/, const char* /*op*/) override { } @@ -94,6 +94,7 @@ class HlslParseContext : public TParseContextBase { TIntermTyped* handleFunctionCall(const TSourceLoc&, TFunction*, TIntermTyped*); TIntermAggregate* assignClipCullDistance(const TSourceLoc&, TOperator, int semanticId, TIntermTyped* left, TIntermTyped* right); TIntermTyped* assignPosition(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right); + TIntermTyped* assignFromFragCoord(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right); void decomposeIntrinsic(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); void decomposeSampleMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); void decomposeStructBufferMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); @@ -183,6 +184,11 @@ class HlslParseContext : public TParseContextBase { void getFullNamespaceName(TString*&) const; void addScopeMangler(TString&); + void beginParameterParsing(TFunction& function) + { + parsingEntrypointParameters = isEntrypointName(function.getName()); + } + void pushSwitchSequence(TIntermSequence* sequence) { switchSequenceStack.push_back(sequence); } void popSwitchSequence() { switchSequenceStack.pop_back(); } @@ -241,18 +247,19 @@ class HlslParseContext : public TParseContextBase { TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer, TIntermTyped* scalarInit); bool isScalarConstructor(const TIntermNode*); TOperator mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage); + bool isEntrypointName(const TString& name) { return name.compare(intermediate.getEntryPointName().c_str()) == 0; } // Return true if this node requires L-value conversion (e.g, to an imageStore). bool shouldConvertLValue(const TIntermNode*) const; // Array and struct flattening TIntermTyped* flattenAccess(TIntermTyped* base, int member); - TIntermTyped* flattenAccess(int uniqueId, int member, TStorageQualifier outerStorage, const TType&, int subset = -1); + TIntermTyped* flattenAccess(long long uniqueId, int member, TStorageQualifier outerStorage, const TType&, int subset = -1); int findSubtreeOffset(const TIntermNode&) const; int findSubtreeOffset(const TType&, int subset, const TVector& offsets) const; bool shouldFlatten(const TType&, TStorageQualifier, bool topLevel) const; bool wasFlattened(const TIntermTyped* node) const; - bool wasFlattened(int id) const { return flattenMap.find(id) != flattenMap.end(); } + bool wasFlattened(long long id) const { return flattenMap.find(id) != flattenMap.end(); } int addFlattenedMember(const TVariable&, const TType&, TFlattenData&, const TString& name, bool linkage, const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes); @@ -261,8 +268,8 @@ class HlslParseContext : public TParseContextBase { void splitBuiltIn(const TString& baseName, const TType& memberType, const TArraySizes*, const TQualifier&); const TType& split(const TType& type, const TString& name, const TQualifier&); bool wasSplit(const TIntermTyped* node) const; - bool wasSplit(int id) const { return splitNonIoVars.find(id) != splitNonIoVars.end(); } - TVariable* getSplitNonIoVar(int id) const; + bool wasSplit(long long id) const { return splitNonIoVars.find(id) != splitNonIoVars.end(); } + TVariable* getSplitNonIoVar(long long id) const; void addPatchConstantInvocation(); void fixTextureShadowModes(); void finalizeAppendMethods(); @@ -270,7 +277,7 @@ class HlslParseContext : public TParseContextBase { void fixBuiltInIoType(TType&); - void flatten(const TVariable& variable, bool linkage); + void flatten(const TVariable& variable, bool linkage, bool arrayed = false); int flatten(const TVariable& variable, const TType&, TFlattenData&, TString name, bool linkage, const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes); int flattenStruct(const TVariable& variable, const TType&, TFlattenData&, TString name, bool linkage, @@ -314,7 +321,7 @@ class HlslParseContext : public TParseContextBase { // Finalization step: remove unused buffer blocks from linkage (we don't know until the // shader is entirely compiled) void removeUnusedStructBufferCounters(); - + static bool isClipOrCullDistance(TBuiltInVariable); static bool isClipOrCullDistance(const TQualifier& qual) { return isClipOrCullDistance(qual.builtIn); } static bool isClipOrCullDistance(const TType& type) { return isClipOrCullDistance(type.getQualifier()); } @@ -380,7 +387,7 @@ class HlslParseContext : public TParseContextBase { // TVector ioArraySymbolResizeList; - TMap flattenMap; + TMap flattenMap; // IO-type map. Maps a pure symbol-table form of a structure-member list into // each of the (up to) three kinds of IO, as each as different allowed decorations, @@ -393,7 +400,7 @@ class HlslParseContext : public TParseContextBase { TMap ioTypeMap; // Structure splitting data: - TMap splitNonIoVars; // variables with the built-in interstage IO removed, indexed by unique ID. + TMap splitNonIoVars; // variables with the built-in interstage IO removed, indexed by unique ID. // Structuredbuffer shared types. Typically there are only a few. TVector structBufferTypes; @@ -401,7 +408,7 @@ class HlslParseContext : public TParseContextBase { // This tracks texture sample user structure return types. Only a limited number are supported, as // may fit in TSampler::structReturnIndex. TVector textureReturnStruct; - + TMap structBufferCounter; // true if counter buffer is in use // The built-in interstage IO map considers e.g, EvqPosition on input and output separately, so that we @@ -450,7 +457,7 @@ class HlslParseContext : public TParseContextBase { std::array cullSemanticNSizeOut; // vector, indexed by cull semantic ID // This tracks the first (mip level) argument to the .mips[][] operator. Since this can be nested as - // in tx.mips[tx.mips[0][1].x][2], we need a stack. We also track the TSourceLoc for error reporting + // in tx.mips[tx.mips[0][1].x][2], we need a stack. We also track the TSourceLoc for error reporting // purposes. struct tMipsOperatorData { tMipsOperatorData(TSourceLoc l, TIntermTyped* m) : loc(l), mipLevel(m) { } @@ -482,18 +489,19 @@ class HlslParseContext : public TParseContextBase { struct tShadowTextureSymbols { tShadowTextureSymbols() { symId.fill(-1); } - void set(bool shadow, int id) { symId[int(shadow)] = id; } - int get(bool shadow) const { return symId[int(shadow)]; } + void set(bool shadow, long long id) { symId[int(shadow)] = id; } + long long get(bool shadow) const { return symId[int(shadow)]; } // True if this texture has been seen with both shadow and non-shadow modes bool overloaded() const { return symId[0] != -1 && symId[1] != -1; } - bool isShadowId(int id) const { return symId[1] == id; } + bool isShadowId(long long id) const { return symId[1] == id; } private: - std::array symId; + std::array symId; }; - TMap textureShadowVariant; + TMap textureShadowVariant; + bool parsingEntrypointParameters; }; // This is the prefix we use for built-in methods to avoid namespace collisions with diff --git a/Externals/glslang/hlsl/hlslParseables.cpp b/Externals/glslang/glslang/HLSL/hlslParseables.cpp similarity index 94% rename from Externals/glslang/hlsl/hlslParseables.cpp rename to Externals/glslang/glslang/HLSL/hlslParseables.cpp index a63ecb605260..15918dc37692 100644 --- a/Externals/glslang/hlsl/hlslParseables.cpp +++ b/Externals/glslang/glslang/HLSL/hlslParseables.cpp @@ -56,18 +56,6 @@ namespace { // anonymous namespace functions -const bool UseHlslTypes = true; - -const char* BaseTypeName(const char argOrder, const char* scalarName, const char* vecName, const char* matName) -{ - switch (argOrder) { - case 'S': return scalarName; - case 'V': return vecName; - case 'M': return matName; - default: return "UNKNOWN_TYPE"; - } -} - // arg order queries bool IsSamplerType(const char argType) { return argType == 'S' || argType == 's'; } bool IsArrayed(const char argOrder) { return argOrder == '@' || argOrder == '&' || argOrder == '#'; } @@ -216,8 +204,7 @@ int FixedVecSize(const char* arg) return 0; // none found. } -// Create and return a type name. This is done in GLSL, not HLSL conventions, until such -// time as builtins are parsed using the HLSL parser. +// Create and return a type name, using HLSL type conventions. // // order: S = scalar, V = vector, M = matrix // argType: F = float, D = double, I = int, U = uint, B = bool, S = sampler @@ -252,63 +239,35 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons char order = *argOrder; - if (UseHlslTypes) { - switch (type) { - case '-': s += "void"; break; - case 'F': s += "float"; break; - case 'D': s += "double"; break; - case 'I': s += "int"; break; - case 'U': s += "uint"; break; - case 'L': s += "int64_t"; break; - case 'M': s += "uint64_t"; break; - case 'B': s += "bool"; break; - case 'S': s += "sampler"; break; - case 's': s += "SamplerComparisonState"; break; - case 'T': s += ((isBuffer && isImage) ? "RWBuffer" : - isSubpass ? "SubpassInput" : - isBuffer ? "Buffer" : - isImage ? "RWTexture" : "Texture"); break; - case 'i': s += ((isBuffer && isImage) ? "RWBuffer" : - isSubpass ? "SubpassInput" : - isBuffer ? "Buffer" : - isImage ? "RWTexture" : "Texture"); break; - case 'u': s += ((isBuffer && isImage) ? "RWBuffer" : - isSubpass ? "SubpassInput" : - isBuffer ? "Buffer" : - isImage ? "RWTexture" : "Texture"); break; - default: s += "UNKNOWN_TYPE"; break; - } - - if (isSubpass && isMS) - s += "MS"; - - } else { - switch (type) { - case '-': s += "void"; break; - case 'F': s += BaseTypeName(order, "float", "vec", "mat"); break; - case 'D': s += BaseTypeName(order, "double", "dvec", "dmat"); break; - case 'I': s += BaseTypeName(order, "int", "ivec", "imat"); break; - case 'U': s += BaseTypeName(order, "uint", "uvec", "umat"); break; - case 'B': s += BaseTypeName(order, "bool", "bvec", "bmat"); break; - case 'S': s += "sampler"; break; - case 's': s += "samplerShadow"; break; - case 'T': // fall through - case 'i': // ... - case 'u': // ... - if (type != 'T') // create itexture, utexture, etc - s += type; - - s += ((isImage && isBuffer) ? "imageBuffer" : - isSubpass ? "subpassInput" : - isImage ? "image" : - isBuffer ? "samplerBuffer" : - "texture"); - break; - - default: s += "UNKNOWN_TYPE"; break; - } + switch (type) { + case '-': s += "void"; break; + case 'F': s += "float"; break; + case 'D': s += "double"; break; + case 'I': s += "int"; break; + case 'U': s += "uint"; break; + case 'L': s += "int64_t"; break; + case 'M': s += "uint64_t"; break; + case 'B': s += "bool"; break; + case 'S': s += "sampler"; break; + case 's': s += "SamplerComparisonState"; break; + case 'T': s += ((isBuffer && isImage) ? "RWBuffer" : + isSubpass ? "SubpassInput" : + isBuffer ? "Buffer" : + isImage ? "RWTexture" : "Texture"); break; + case 'i': s += ((isBuffer && isImage) ? "RWBuffer" : + isSubpass ? "SubpassInput" : + isBuffer ? "Buffer" : + isImage ? "RWTexture" : "Texture"); break; + case 'u': s += ((isBuffer && isImage) ? "RWBuffer" : + isSubpass ? "SubpassInput" : + isBuffer ? "Buffer" : + isImage ? "RWTexture" : "Texture"); break; + default: s += "UNKNOWN_TYPE"; break; } + if (isSubpass && isMS) + s += "MS"; + // handle fixed vector sizes, such as float3, and only ever 3. const int fixedVecSize = FixedVecSize(argOrder); if (fixedVecSize != 0) @@ -324,7 +283,7 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons case 1: s += "1D"; break; case 2: s += (isMS ? "2DMS" : "2D"); break; case 3: s += "3D"; break; - case 4: s += "Cube"; break; + case 4: s += (type == 'S'? "CUBE" : "Cube"); break; default: s += "UNKNOWN_SAMPLER"; break; } } @@ -357,26 +316,24 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons if (isArrayed) s += "Array"; - // For HLSL, append return type for texture types - if (UseHlslTypes) { - switch (type) { - case 'i': s += "V4,>V2,", "F,,,,", EShLangHS, false }, { "Process2DQuadTessFactorsMax", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangHS, false }, { "Process2DQuadTessFactorsMin", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangHS, false }, @@ -730,8 +665,8 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { "Sample", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangPS, true }, { "Sample", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangPS, true }, - { "SampleBias", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,S,F,", EShLangPS, true }, - { "SampleBias", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,S,F,,I", EShLangPS, true }, + { "SampleBias", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,S,F,F", EShLangPS, true }, + { "SampleBias", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,S,F,F,I", EShLangPS, true }, // TODO: FXC accepts int/uint samplers here. unclear what that means. { "SampleCmp", /*!O*/ "S", "F", "%@,S,V,S", "FIU,s,F,", EShLangPS, true }, @@ -917,7 +852,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { "WaveActiveAllEqual", "S", "B", "SV", "DFUI", EShLangPSCS, false}, { "WaveActiveAllEqualBool", "S", "B", "S", "B", EShLangPSCS, false}, { "WaveActiveCountBits", "S", "U", "S", "B", EShLangPSCS, false}, - + { "WaveActiveSum", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, { "WaveActiveProduct", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, { "WaveActiveBitAnd", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false}, @@ -1172,7 +1107,7 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profil // symbolTable.relateToOperator("noise", EOpNoise); // TODO: check return type symbolTable.relateToOperator("normalize", EOpNormalize); symbolTable.relateToOperator("pow", EOpPow); - // symbolTable.relateToOperator("printf", EOpPrintf); + symbolTable.relateToOperator("printf", EOpDebugPrintf); // symbolTable.relateToOperator("Process2DQuadTessFactorsAvg"); // symbolTable.relateToOperator("Process2DQuadTessFactorsMax"); // symbolTable.relateToOperator("Process2DQuadTessFactorsMin"); @@ -1188,7 +1123,7 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profil symbolTable.relateToOperator("reflect", EOpReflect); symbolTable.relateToOperator("refract", EOpRefract); symbolTable.relateToOperator("reversebits", EOpBitFieldReverse); - symbolTable.relateToOperator("round", EOpRoundEven); + symbolTable.relateToOperator("round", EOpRound); symbolTable.relateToOperator("rsqrt", EOpInverseSqrt); symbolTable.relateToOperator("saturate", EOpSaturate); symbolTable.relateToOperator("sign", EOpSign); diff --git a/Externals/glslang/hlsl/hlslParseables.h b/Externals/glslang/glslang/HLSL/hlslParseables.h similarity index 97% rename from Externals/glslang/hlsl/hlslParseables.h rename to Externals/glslang/glslang/HLSL/hlslParseables.h index 28f424b31728..a4aef6c3e61f 100644 --- a/Externals/glslang/hlsl/hlslParseables.h +++ b/Externals/glslang/glslang/HLSL/hlslParseables.h @@ -36,7 +36,7 @@ #ifndef _HLSLPARSEABLES_INCLUDED_ #define _HLSLPARSEABLES_INCLUDED_ -#include "../glslang/MachineIndependent/Initialize.h" +#include "../MachineIndependent/Initialize.h" namespace glslang { diff --git a/Externals/glslang/hlsl/hlslScanContext.cpp b/Externals/glslang/glslang/HLSL/hlslScanContext.cpp similarity index 99% rename from Externals/glslang/hlsl/hlslScanContext.cpp rename to Externals/glslang/glslang/HLSL/hlslScanContext.cpp index 28a66bb47d2a..fc62672f4efc 100644 --- a/Externals/glslang/hlsl/hlslScanContext.cpp +++ b/Externals/glslang/glslang/HLSL/hlslScanContext.cpp @@ -42,15 +42,15 @@ #include #include -#include "../glslang/Include/Types.h" -#include "../glslang/MachineIndependent/SymbolTable.h" -#include "../glslang/MachineIndependent/ParseHelper.h" +#include "../Include/Types.h" +#include "../MachineIndependent/SymbolTable.h" +#include "../MachineIndependent/ParseHelper.h" #include "hlslScanContext.h" #include "hlslTokens.h" // preprocessor includes -#include "../glslang/MachineIndependent/preprocessor/PpContext.h" -#include "../glslang/MachineIndependent/preprocessor/PpTokens.h" +#include "../MachineIndependent/preprocessor/PpContext.h" +#include "../MachineIndependent/preprocessor/PpTokens.h" namespace { @@ -317,7 +317,7 @@ void HlslScanContext::fillInKeywordMap() (*KeywordMap)["sampler1D"] = EHTokSampler1d; (*KeywordMap)["sampler2D"] = EHTokSampler2d; (*KeywordMap)["sampler3D"] = EHTokSampler3d; - (*KeywordMap)["samplerCube"] = EHTokSamplerCube; + (*KeywordMap)["samplerCUBE"] = EHTokSamplerCube; (*KeywordMap)["sampler_state"] = EHTokSamplerState; (*KeywordMap)["SamplerState"] = EHTokSamplerState; (*KeywordMap)["SamplerComparisonState"] = EHTokSamplerComparisonState; diff --git a/Externals/glslang/hlsl/hlslScanContext.h b/Externals/glslang/glslang/HLSL/hlslScanContext.h similarity index 98% rename from Externals/glslang/hlsl/hlslScanContext.h rename to Externals/glslang/glslang/HLSL/hlslScanContext.h index 9d30a12e1e53..3b191e489f58 100644 --- a/Externals/glslang/hlsl/hlslScanContext.h +++ b/Externals/glslang/glslang/HLSL/hlslScanContext.h @@ -41,7 +41,7 @@ #ifndef HLSLSCANCONTEXT_H_ #define HLSLSCANCONTEXT_H_ -#include "../glslang/MachineIndependent/ParseHelper.h" +#include "../MachineIndependent/ParseHelper.h" #include "hlslTokens.h" namespace glslang { diff --git a/Externals/glslang/hlsl/hlslTokenStream.cpp b/Externals/glslang/glslang/HLSL/hlslTokenStream.cpp similarity index 100% rename from Externals/glslang/hlsl/hlslTokenStream.cpp rename to Externals/glslang/glslang/HLSL/hlslTokenStream.cpp diff --git a/Externals/glslang/hlsl/hlslTokenStream.h b/Externals/glslang/glslang/HLSL/hlslTokenStream.h similarity index 100% rename from Externals/glslang/hlsl/hlslTokenStream.h rename to Externals/glslang/glslang/HLSL/hlslTokenStream.h diff --git a/Externals/glslang/hlsl/hlslTokens.h b/Externals/glslang/glslang/HLSL/hlslTokens.h similarity index 100% rename from Externals/glslang/hlsl/hlslTokens.h rename to Externals/glslang/glslang/HLSL/hlslTokens.h diff --git a/Externals/glslang/hlsl/pch.h b/Externals/glslang/glslang/HLSL/pch.h similarity index 92% rename from Externals/glslang/hlsl/pch.h rename to Externals/glslang/glslang/HLSL/pch.h index e0bc4917812d..465e7c14f82b 100644 --- a/Externals/glslang/hlsl/pch.h +++ b/Externals/glslang/glslang/HLSL/pch.h @@ -34,21 +34,20 @@ // POSSIBILITY OF SUCH DAMAGE. // +#include "hlslAttributes.h" +#include "hlslGrammar.h" #include "hlslParseHelper.h" #include "hlslScanContext.h" -#include "hlslGrammar.h" -#include "hlslAttributes.h" -#include "../glslang/MachineIndependent/Scan.h" -#include "../glslang/MachineIndependent/preprocessor/PpContext.h" +#include "../MachineIndependent/Scan.h" +#include "../MachineIndependent/preprocessor/PpContext.h" -#include "../glslang/OSDependent/osinclude.h" +#include "../OSDependent/osinclude.h" #include -#include -#include #include +#include +#include #include - #endif /* _PCH_H */ diff --git a/Externals/glslang/glslang/Include/BaseTypes.h b/Externals/glslang/glslang/Include/BaseTypes.h index 6d4b4ff8e37d..c8203c22329e 100644 --- a/Externals/glslang/glslang/Include/BaseTypes.h +++ b/Externals/glslang/glslang/Include/BaseTypes.h @@ -2,6 +2,7 @@ // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -61,8 +62,13 @@ enum TBasicType { EbtSampler, EbtStruct, EbtBlock, - EbtAccStructNV, + EbtAccStruct, EbtReference, + EbtRayQuery, +#ifndef GLSLANG_WEB + // SPIR-V type defined by spirv_type + EbtSpirvType, +#endif // HLSL types that live only temporarily. EbtString, @@ -89,12 +95,15 @@ enum TStorageQualifier { EvqUniform, // read only, shared with app EvqBuffer, // read/write, shared with app EvqShared, // compute shader's read/write 'shared' qualifier +#ifndef GLSLANG_WEB + EvqSpirvStorageClass, // spirv_storage_class +#endif - EvqPayloadNV, - EvqPayloadInNV, - EvqHitAttrNV, - EvqCallableDataNV, - EvqCallableDataInNV, + EvqPayload, + EvqPayloadIn, + EvqHitAttr, + EvqCallableData, + EvqCallableDataIn, // parameters EvqIn, // also, for 'in' in the grammar before we know if it's a pipeline input or an 'in' parameter @@ -226,9 +235,15 @@ enum TBuiltInVariable { EbvViewIndex, EbvDeviceIndex, + EbvShadingRateKHR, + EbvPrimitiveShadingRateKHR, + EbvFragSizeEXT, EbvFragInvocationCountEXT, + EbvSecondaryFragDataEXT, + EbvSecondaryFragColorEXT, + EbvViewportMaskNV, EbvSecondaryPositionNV, EbvSecondaryViewportMaskNV, @@ -238,20 +253,24 @@ enum TBuiltInVariable { EbvFragmentSizeNV, EbvInvocationsPerPixelNV, // ray tracing - EbvLaunchIdNV, - EbvLaunchSizeNV, - EbvInstanceCustomIndexNV, - EbvWorldRayOriginNV, - EbvWorldRayDirectionNV, - EbvObjectRayOriginNV, - EbvObjectRayDirectionNV, - EbvRayTminNV, - EbvRayTmaxNV, - EbvHitTNV, - EbvHitKindNV, - EbvObjectToWorldNV, - EbvWorldToObjectNV, - EbvIncomingRayFlagsNV, + EbvLaunchId, + EbvLaunchSize, + EbvInstanceCustomIndex, + EbvGeometryIndex, + EbvWorldRayOrigin, + EbvWorldRayDirection, + EbvObjectRayOrigin, + EbvObjectRayDirection, + EbvRayTmin, + EbvRayTmax, + EbvHitT, + EbvHitKind, + EbvObjectToWorld, + EbvObjectToWorld3x4, + EbvWorldToObject, + EbvWorldToObject3x4, + EbvIncomingRayFlags, + EbvCurrentRayTimeNV, // barycentrics EbvBaryCoordNV, EbvBaryCoordNoPerspNV, @@ -310,6 +329,9 @@ __inline const char* GetStorageQualifierString(TStorageQualifier q) case EvqGlobal: return "global"; break; case EvqConst: return "const"; break; case EvqConstReadOnly: return "const (read only)"; break; +#ifndef GLSLANG_WEB + case EvqSpirvStorageClass: return "spirv_storage_class"; break; +#endif case EvqVaryingIn: return "in"; break; case EvqVaryingOut: return "out"; break; case EvqUniform: return "uniform"; break; @@ -328,11 +350,11 @@ __inline const char* GetStorageQualifierString(TStorageQualifier q) case EvqPointCoord: return "gl_PointCoord"; break; case EvqFragColor: return "fragColor"; break; case EvqFragDepth: return "gl_FragDepth"; break; - case EvqPayloadNV: return "rayPayloadNV"; break; - case EvqPayloadInNV: return "rayPayloadInNV"; break; - case EvqHitAttrNV: return "hitAttributeNV"; break; - case EvqCallableDataNV: return "callableDataNV"; break; - case EvqCallableDataInNV: return "callableDataInNV"; break; + case EvqPayload: return "rayPayloadNV"; break; + case EvqPayloadIn: return "rayPayloadInNV"; break; + case EvqHitAttr: return "hitAttributeNV"; break; + case EvqCallableData: return "callableDataNV"; break; + case EvqCallableDataIn: return "callableDataInNV"; break; default: return "unknown qualifier"; } } @@ -428,6 +450,9 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v) case EbvFragSizeEXT: return "FragSizeEXT"; case EbvFragInvocationCountEXT: return "FragInvocationCountEXT"; + case EbvSecondaryFragDataEXT: return "SecondaryFragDataEXT"; + case EbvSecondaryFragColorEXT: return "SecondaryFragColorEXT"; + case EbvViewportMaskNV: return "ViewportMaskNV"; case EbvSecondaryPositionNV: return "SecondaryPositionNV"; case EbvSecondaryViewportMaskNV: return "SecondaryViewportMaskNV"; @@ -436,20 +461,22 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v) case EbvFragFullyCoveredNV: return "FragFullyCoveredNV"; case EbvFragmentSizeNV: return "FragmentSizeNV"; case EbvInvocationsPerPixelNV: return "InvocationsPerPixelNV"; - case EbvLaunchIdNV: return "LaunchIdNV"; - case EbvLaunchSizeNV: return "LaunchSizeNV"; - case EbvInstanceCustomIndexNV: return "InstanceCustomIndexNV"; - case EbvWorldRayOriginNV: return "WorldRayOriginNV"; - case EbvWorldRayDirectionNV: return "WorldRayDirectionNV"; - case EbvObjectRayOriginNV: return "ObjectRayOriginNV"; - case EbvObjectRayDirectionNV: return "ObjectRayDirectionNV"; - case EbvRayTminNV: return "ObjectRayTminNV"; - case EbvRayTmaxNV: return "ObjectRayTmaxNV"; - case EbvHitTNV: return "HitTNV"; - case EbvHitKindNV: return "HitKindNV"; - case EbvIncomingRayFlagsNV: return "IncomingRayFlagsNV"; - case EbvObjectToWorldNV: return "ObjectToWorldNV"; - case EbvWorldToObjectNV: return "WorldToObjectNV"; + case EbvLaunchId: return "LaunchIdNV"; + case EbvLaunchSize: return "LaunchSizeNV"; + case EbvInstanceCustomIndex: return "InstanceCustomIndexNV"; + case EbvGeometryIndex: return "GeometryIndexEXT"; + case EbvWorldRayOrigin: return "WorldRayOriginNV"; + case EbvWorldRayDirection: return "WorldRayDirectionNV"; + case EbvObjectRayOrigin: return "ObjectRayOriginNV"; + case EbvObjectRayDirection: return "ObjectRayDirectionNV"; + case EbvRayTmin: return "ObjectRayTminNV"; + case EbvRayTmax: return "ObjectRayTmaxNV"; + case EbvHitT: return "HitTNV"; + case EbvHitKind: return "HitKindNV"; + case EbvIncomingRayFlags: return "IncomingRayFlagsNV"; + case EbvObjectToWorld: return "ObjectToWorldNV"; + case EbvWorldToObject: return "WorldToObjectNV"; + case EbvCurrentRayTimeNV: return "CurrentRayTimeNV"; case EbvBaryCoordNV: return "BaryCoordNV"; case EbvBaryCoordNoPerspNV: return "BaryCoordNoPerspNV"; @@ -468,6 +495,9 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v) case EbvWarpID: return "WarpIDNV"; case EbvSMID: return "SMIDNV"; + case EbvShadingRateKHR: return "ShadingRateKHR"; + case EbvPrimitiveShadingRateKHR: return "PrimitiveShadingRateKHR"; + default: return "unknown built-in variable"; } } diff --git a/Externals/glslang/glslang/Include/Common.h b/Externals/glslang/glslang/Include/Common.h index 733a790cfde2..9042a1aa27ac 100644 --- a/Externals/glslang/glslang/Include/Common.h +++ b/Externals/glslang/glslang/Include/Common.h @@ -37,6 +37,22 @@ #ifndef _COMMON_INCLUDED_ #define _COMMON_INCLUDED_ +#include +#include +#ifdef _MSC_VER +#include +#else +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include #if defined(__ANDROID__) || (defined(_MSC_VER) && _MSC_VER < 1700) #include @@ -50,7 +66,7 @@ std::string to_string(const T& val) { } #endif -#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) || defined MINGW_HAS_SECURE_API +#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) || MINGW_HAS_SECURE_API #include #ifndef snprintf #define snprintf sprintf_s @@ -93,18 +109,6 @@ std::string to_string(const T& val) { #pragma warning(disable : 4201) // nameless union #endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - #include "PoolAlloc.h" // @@ -195,6 +199,10 @@ template , class PRED = std::equal_t class TUnorderedMap : public std::unordered_map > > { }; +template > +class TSet : public std::set > { +}; + // // Persistent string memory. Should only be used for strings that survive // across compiles/links. @@ -210,7 +218,7 @@ template T Max(const T a, const T b) { return a > b ? a : b; } // // Create a TString object from an integer. // -#if defined _MSC_VER || defined MINGW_HAS_SECURE_API +#if defined _MSC_VER || MINGW_HAS_SECURE_API inline const TString String(const int i, const int base = 10) { char text[16]; // 32 bit ints are at most 10 digits in base 10 @@ -287,6 +295,46 @@ template bool IsMultipleOfPow2(T number, int powerOf2) return ! (number & (powerOf2 - 1)); } +// Returns log2 of an integer power of 2. +// T should be integral. +template int IntLog2(T n) +{ + assert(IsPow2(n)); + int result = 0; + while ((T(1) << result) != n) { + result++; + } + return result; +} + +inline bool IsInfinity(double x) { +#ifdef _MSC_VER + switch (_fpclass(x)) { + case _FPCLASS_NINF: + case _FPCLASS_PINF: + return true; + default: + return false; + } +#else + return std::isinf(x); +#endif +} + +inline bool IsNan(double x) { +#ifdef _MSC_VER + switch (_fpclass(x)) { + case _FPCLASS_SNAN: + case _FPCLASS_QNAN: + return true; + default: + return false; + } +#else + return std::isnan(x); +#endif +} + } // end namespace glslang #endif // _COMMON_INCLUDED_ diff --git a/Externals/glslang/glslang/Include/ConstantUnion.h b/Externals/glslang/glslang/Include/ConstantUnion.h index 76b2d9c08b7f..c4ffb85771b3 100644 --- a/Externals/glslang/glslang/Include/ConstantUnion.h +++ b/Externals/glslang/glslang/Include/ConstantUnion.h @@ -921,7 +921,7 @@ class TConstUnionArray { else unionArray = new TConstUnionVector(size); } - TConstUnionArray(const TConstUnionArray& a) : unionArray(a.unionArray) { } + TConstUnionArray(const TConstUnionArray& a) = default; TConstUnionArray(const TConstUnionArray& a, int start, int size) { unionArray = new TConstUnionVector(size); diff --git a/Externals/glslang/glslang/Include/PoolAlloc.h b/Externals/glslang/glslang/Include/PoolAlloc.h index b8eccb883204..1f5cac76de2a 100644 --- a/Externals/glslang/glslang/Include/PoolAlloc.h +++ b/Externals/glslang/glslang/Include/PoolAlloc.h @@ -306,6 +306,8 @@ class pool_allocator { TPoolAllocator& getAllocator() const { return allocator; } + pool_allocator select_on_container_copy_construction() const { return pool_allocator{}; } + protected: pool_allocator& operator=(const pool_allocator&) { return *this; } TPoolAllocator& allocator; diff --git a/Externals/glslang/glslang/Include/ResourceLimits.h b/Externals/glslang/glslang/Include/ResourceLimits.h index 106b21d9ca82..b670cf163f28 100644 --- a/Externals/glslang/glslang/Include/ResourceLimits.h +++ b/Externals/glslang/glslang/Include/ResourceLimits.h @@ -142,6 +142,7 @@ struct TBuiltInResource { int maxTaskWorkGroupSizeY_NV; int maxTaskWorkGroupSizeZ_NV; int maxMeshViewCountNV; + int maxDualSourceDrawBuffersEXT; TLimits limits; }; diff --git a/Externals/glslang/glslang/Include/SpirvIntrinsics.h b/Externals/glslang/glslang/Include/SpirvIntrinsics.h new file mode 100644 index 000000000000..3c7d72ce97fd --- /dev/null +++ b/Externals/glslang/glslang/Include/SpirvIntrinsics.h @@ -0,0 +1,128 @@ +// +// Copyright(C) 2021 Advanced Micro Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// +// Neither the name of 3Dlabs Inc. Ltd. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// + +#pragma once + +#ifndef GLSLANG_WEB + +// +// GL_EXT_spirv_intrinsics +// +#include "Common.h" + +namespace glslang { + +class TIntermTyped; +class TIntermConstantUnion; +class TType; + +// SPIR-V requirements +struct TSpirvRequirement { + POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) + + // capability = [..] + TSet extensions; + // extension = [..] + TSet capabilities; +}; + +// SPIR-V execution modes +struct TSpirvExecutionMode { + POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) + + // spirv_execution_mode + TMap> modes; + // spirv_execution_mode_id + TMap > modeIds; +}; + +// SPIR-V decorations +struct TSpirvDecorate { + POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) + + // spirv_decorate + TMap > decorates; + // spirv_decorate_id + TMap> decorateIds; + // spirv_decorate_string + TMap > decorateStrings; +}; + +// SPIR-V instruction +struct TSpirvInstruction { + POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) + + TSpirvInstruction() { set = ""; id = -1; } + + bool operator==(const TSpirvInstruction& rhs) const { return set == rhs.set && id == rhs.id; } + bool operator!=(const TSpirvInstruction& rhs) const { return !operator==(rhs); } + + // spirv_instruction + TString set; + int id; +}; + +// SPIR-V type parameter +struct TSpirvTypeParameter { + POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) + + TSpirvTypeParameter(const TIntermConstantUnion* arg) { constant = arg; } + + bool operator==(const TSpirvTypeParameter& rhs) const { return constant == rhs.constant; } + bool operator!=(const TSpirvTypeParameter& rhs) const { return !operator==(rhs); } + + const TIntermConstantUnion* constant; +}; + +typedef TVector TSpirvTypeParameters; + +// SPIR-V type +struct TSpirvType { + POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) + + bool operator==(const TSpirvType& rhs) const + { + return spirvInst == rhs.spirvInst && typeParams == rhs.typeParams; + } + bool operator!=(const TSpirvType& rhs) const { return !operator==(rhs); } + + // spirv_type + TSpirvInstruction spirvInst; + TSpirvTypeParameters typeParams; +}; + +} // end namespace glslang + +#endif // GLSLANG_WEB diff --git a/Externals/glslang/glslang/Include/Types.h b/Externals/glslang/glslang/Include/Types.h index 3572099e3d95..91fcd4eb287a 100644 --- a/Externals/glslang/glslang/Include/Types.h +++ b/Externals/glslang/glslang/Include/Types.h @@ -3,6 +3,7 @@ // Copyright (C) 2012-2016 LunarG, Inc. // Copyright (C) 2015-2016 Google, Inc. // Copyright (C) 2017 ARM Limited. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -43,11 +44,14 @@ #include "../Include/BaseTypes.h" #include "../Public/ShaderLang.h" #include "arrays.h" +#include "SpirvIntrinsics.h" #include namespace glslang { +class TIntermAggregate; + const int GlslangMaxTypeLength = 200; // TODO: need to print block/struct one member per line, so this can stay bounded const char* const AnonymousPrefix = "anon@"; // for something like a block whose members can be directly accessed @@ -114,6 +118,7 @@ struct TSampler { // misnomer now; includes images, textures without sampler, #endif bool is1D() const { return dim == Esd1D; } + bool is2D() const { return dim == Esd2D; } bool isBuffer() const { return dim == EsdBuffer; } bool isRect() const { return dim == EsdRect; } bool isSubpass() const { return dim == EsdSubpass; } @@ -405,6 +410,7 @@ enum TLayoutFormat { ElfRg8i, ElfR16i, ElfR8i, + ElfR64i, ElfIntGuard, // to help with comparisons @@ -422,6 +428,7 @@ enum TLayoutFormat { ElfRg8ui, ElfR16ui, ElfR8ui, + ElfR64ui, ElfCount }; @@ -472,6 +479,17 @@ enum TInterlockOrdering { EioCount, }; +enum TShaderInterface +{ + // Includes both uniform blocks and buffer blocks + EsiUniform = 0, + EsiInput, + EsiOutput, + EsiNone, + + EsiCount +}; + class TQualifier { public: static const int layoutNotSet = -1; @@ -484,7 +502,11 @@ class TQualifier { declaredBuiltIn = EbvNone; #ifndef GLSLANG_WEB noContraction = false; + nullInit = false; + spirvByReference = false; + spirvLiteral = false; #endif + defaultBlock = false; } // drop qualifiers that don't belong in a temporary variable @@ -497,7 +519,15 @@ class TQualifier { clearMemory(); specConstant = false; nonUniform = false; + nullInit = false; + defaultBlock = false; clearLayout(); +#ifndef GLSLANG_WEB + spirvStorageClass = -1; + spirvDecorate = nullptr; + spirvByReference = false; + spirvLiteral = false; +#endif } void clearInterstage() @@ -532,6 +562,7 @@ class TQualifier { queuefamilycoherent = false; workgroupcoherent = false; subgroupcoherent = false; + shadercallcoherent = false; nonprivate = false; volatil = false; restrict = false; @@ -553,6 +584,8 @@ class TQualifier { // having a constant_id is not sufficient: expressions have no id, but are still specConstant bool specConstant : 1; bool nonUniform : 1; + bool explicitOffset : 1; + bool defaultBlock : 1; // default blocks with matching names have structures merged when linking #ifdef GLSLANG_WEB bool isWriteOnly() const { return false; } @@ -571,6 +604,12 @@ class TQualifier { bool isNoContraction() const { return false; } void setNoContraction() { } bool isPervertexNV() const { return false; } + void setNullInit() { } + bool isNullInit() const { return false; } + void setSpirvByReference() { } + bool isSpirvByReference() { return false; } + void setSpirvLiteral() { } + bool isSpirvLiteral() { return false; } #else bool noContraction: 1; // prevent contraction and reassociation, e.g., for 'precise' keyword, and expressions it affects bool nopersp : 1; @@ -590,7 +629,11 @@ class TQualifier { bool queuefamilycoherent : 1; bool workgroupcoherent : 1; bool subgroupcoherent : 1; + bool shadercallcoherent : 1; bool nonprivate : 1; + bool nullInit : 1; + bool spirvByReference : 1; + bool spirvLiteral : 1; bool isWriteOnly() const { return writeonly; } bool isReadOnly() const { return readonly; } bool isRestrict() const { return restrict; } @@ -599,11 +642,11 @@ class TQualifier { bool isSample() const { return sample; } bool isMemory() const { - return subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || restrict || readonly || writeonly || nonprivate; + return shadercallcoherent || subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || restrict || readonly || writeonly || nonprivate; } bool isMemoryQualifierImageAndSSBOOnly() const { - return subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || restrict || readonly || writeonly; + return shadercallcoherent || subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || restrict || readonly || writeonly; } bool bufferReferenceNeedsVulkanMemoryModel() const { @@ -626,6 +669,12 @@ class TQualifier { bool isNoContraction() const { return noContraction; } void setNoContraction() { noContraction = true; } bool isPervertexNV() const { return pervertexNV; } + void setNullInit() { nullInit = true; } + bool isNullInit() const { return nullInit; } + void setSpirvByReference() { spirvByReference = true; } + bool isSpirvByReference() const { return spirvByReference; } + void setSpirvLiteral() { spirvLiteral = true; } + bool isSpirvLiteral() const { return spirvLiteral; } #endif bool isPipeInput() const @@ -692,6 +741,16 @@ class TQualifier { } } + bool isUniform() const + { + switch (storage) { + case EvqUniform: + return true; + default: + return false; + } + } + bool isIo() const { switch (storage) { @@ -731,6 +790,46 @@ class TQualifier { } } + TBlockStorageClass getBlockStorage() const { + if (storage == EvqUniform && !isPushConstant()) { + return EbsUniform; + } + else if (storage == EvqUniform) { + return EbsPushConstant; + } + else if (storage == EvqBuffer) { + return EbsStorageBuffer; + } + return EbsNone; + } + + void setBlockStorage(TBlockStorageClass newBacking) { +#ifndef GLSLANG_WEB + layoutPushConstant = (newBacking == EbsPushConstant); +#endif + switch (newBacking) { + case EbsUniform : + if (layoutPacking == ElpStd430) { + // std430 would not be valid + layoutPacking = ElpStd140; + } + storage = EvqUniform; + break; + case EbsStorageBuffer : + storage = EvqBuffer; + break; +#ifndef GLSLANG_WEB + case EbsPushConstant : + storage = EvqUniform; + layoutSet = TQualifier::layoutSetEnd; + layoutBinding = TQualifier::layoutBindingEnd; + break; +#endif + default: + break; + } + } + #ifdef GLSLANG_WEB bool isPerView() const { return false; } bool isTaskMemory() const { return false; } @@ -739,6 +838,12 @@ class TQualifier { bool isPerPrimitive() const { return perPrimitiveNV; } bool isPerView() const { return perViewNV; } bool isTaskMemory() const { return perTaskNV; } + bool isAnyPayload() const { + return storage == EvqPayload || storage == EvqPayloadIn; + } + bool isAnyCallable() const { + return storage == EvqCallableData || storage == EvqCallableDataIn; + } // True if this type of IO is supposed to be arrayed with extra level for per-vertex data bool isArrayedIo(EShLanguage language) const @@ -773,7 +878,7 @@ class TQualifier { layoutViewportRelative = false; // -2048 as the default value indicating layoutSecondaryViewportRelative is not set layoutSecondaryViewportRelativeOffset = -2048; - layoutShaderRecordNV = false; + layoutShaderRecord = false; layoutBufferReferenceAlign = layoutBufferReferenceAlignEnd; layoutFormat = ElfNone; #endif @@ -812,7 +917,7 @@ class TQualifier { hasAnyLocation() || hasStream() || hasFormat() || - isShaderRecordNV() || + isShaderRecord() || isPushConstant() || hasBufferReference(); } @@ -821,6 +926,7 @@ class TQualifier { return hasNonXfbLayout() || hasXfb(); } + TLayoutMatrix layoutMatrix : 3; TLayoutPacking layoutPacking : 4; int layoutOffset; @@ -871,7 +977,11 @@ class TQualifier { bool layoutPassthrough; bool layoutViewportRelative; int layoutSecondaryViewportRelativeOffset; - bool layoutShaderRecordNV; + bool layoutShaderRecord; + + // GL_EXT_spirv_intrinsics + int spirvStorageClass; + TSpirvDecorate* spirvDecorate; #endif bool hasUniformLayout() const @@ -942,7 +1052,7 @@ class TQualifier { bool hasAttachment() const { return false; } TLayoutFormat getFormat() const { return ElfNone; } bool isPushConstant() const { return false; } - bool isShaderRecordNV() const { return false; } + bool isShaderRecord() const { return false; } bool hasBufferReference() const { return false; } bool hasBufferReferenceAlign() const { return false; } bool isNonUniform() const { return false; } @@ -993,7 +1103,7 @@ class TQualifier { } TLayoutFormat getFormat() const { return layoutFormat; } bool isPushConstant() const { return layoutPushConstant; } - bool isShaderRecordNV() const { return layoutShaderRecordNV; } + bool isShaderRecord() const { return layoutShaderRecord; } bool hasBufferReference() const { return layoutBufferReference; } bool hasBufferReferenceAlign() const { @@ -1003,6 +1113,15 @@ class TQualifier { { return nonUniform; } + + // GL_EXT_spirv_intrinsics + bool hasSprivDecorate() const { return spirvDecorate != nullptr; } + void setSpirvDecorate(int decoration, const TIntermAggregate* args = nullptr); + void setSpirvDecorateId(int decoration, const TIntermAggregate* args); + void setSpirvDecorateString(int decoration, const TIntermAggregate* args); + const TSpirvDecorate& getSpirvDecorate() const { assert(spirvDecorate); return *spirvDecorate; } + TSpirvDecorate& getSpirvDecorate() { assert(spirvDecorate); return *spirvDecorate; } + TString getSpirvDecorateQualifierString() const; #endif bool hasSpecConstantId() const { @@ -1101,6 +1220,8 @@ class TQualifier { case ElfR32ui: return "r32ui"; case ElfR16ui: return "r16ui"; case ElfR8ui: return "r8ui"; + case ElfR64ui: return "r64ui"; + case ElfR64i: return "r64i"; default: return "none"; } } @@ -1219,6 +1340,7 @@ struct TShaderQualifiers { bool layoutDerivativeGroupQuads; // true if layout derivative_group_quadsNV set bool layoutDerivativeGroupLinear; // true if layout derivative_group_linearNV set int primitives; // mesh shader "max_primitives"DerivativeGroupLinear; // true if layout derivative_group_linearNV set + bool layoutPrimitiveCulling; // true if layout primitive_culling set TLayoutDepth getDepth() const { return layoutDepth; } #else TLayoutDepth getDepth() const { return EldNone; } @@ -1252,6 +1374,7 @@ struct TShaderQualifiers { layoutOverrideCoverage = false; layoutDerivativeGroupQuads = false; layoutDerivativeGroupLinear = false; + layoutPrimitiveCulling = false; primitives = TQualifier::layoutNotSet; interlockOrdering = EioNone; #endif @@ -1315,6 +1438,8 @@ struct TShaderQualifiers { primitives = src.primitives; if (src.interlockOrdering != EioNone) interlockOrdering = src.interlockOrdering; + if (src.layoutPrimitiveCulling) + layoutPrimitiveCulling = src.layoutPrimitiveCulling; #endif } }; @@ -1341,6 +1466,10 @@ class TPublicType { const TType* userDef; TSourceLoc loc; TArraySizes* typeParameters; +#ifndef GLSLANG_WEB + // SPIR-V type defined by spirv_type directive + TSpirvType* spirvType; +#endif #ifdef GLSLANG_WEB bool isCoopmat() const { return false; } @@ -1359,6 +1488,9 @@ class TPublicType { loc = l; typeParameters = nullptr; coopmat = false; +#ifndef GLSLANG_WEB + spirvType = nullptr; +#endif } void initQualifiers(bool global = false) @@ -1395,6 +1527,11 @@ class TPublicType { return matrixCols == 0 && vectorSize == 1 && arraySizes == nullptr && userDef == nullptr; } +#ifndef GLSLANG_WEB + // GL_EXT_spirv_intrinsics + void setSpirvType(const TSpirvInstruction& spirvInst, const TSpirvTypeParameters* typeParams = nullptr); +#endif + // "Image" is a superset of "Subpass" bool isImage() const { return basicType == EbtSampler && sampler.isImage(); } bool isSubpass() const { return basicType == EbtSampler && sampler.isSubpass(); } @@ -1412,6 +1549,9 @@ class TType { bool isVector = false) : basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmat(false), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr) +#ifndef GLSLANG_WEB + , spirvType(nullptr) +#endif { sampler.clear(); qualifier.clear(); @@ -1423,6 +1563,9 @@ class TType { bool isVector = false) : basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmat(false), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr) +#ifndef GLSLANG_WEB + , spirvType(nullptr) +#endif { sampler.clear(); qualifier.clear(); @@ -1436,6 +1579,9 @@ class TType { basicType(p.basicType), vectorSize(p.vectorSize), matrixCols(p.matrixCols), matrixRows(p.matrixRows), vector1(false), coopmat(p.coopmat), arraySizes(p.arraySizes), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(p.typeParameters) +#ifndef GLSLANG_WEB + , spirvType(p.spirvType) +#endif { if (basicType == EbtSampler) sampler = p.sampler; @@ -1470,6 +1616,9 @@ class TType { basicType(EbtSampler), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmat(false), arraySizes(as), structure(nullptr), fieldName(nullptr), typeName(nullptr), sampler(sampler), typeParameters(nullptr) +#ifndef GLSLANG_WEB + , spirvType(nullptr) +#endif { qualifier.clear(); qualifier.storage = q; @@ -1520,6 +1669,9 @@ class TType { TType(TTypeList* userDef, const TString& n) : basicType(EbtStruct), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmat(false), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr) +#ifndef GLSLANG_WEB + , spirvType(nullptr) +#endif { sampler.clear(); qualifier.clear(); @@ -1529,6 +1681,9 @@ class TType { TType(TTypeList* userDef, const TString& n, const TQualifier& q) : basicType(EbtBlock), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmat(false), qualifier(q), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr) +#ifndef GLSLANG_WEB + , spirvType(nullptr) +#endif { sampler.clear(); typeName = NewPoolTString(n.c_str()); @@ -1537,6 +1692,9 @@ class TType { explicit TType(TBasicType t, const TType &p, const TString& n) : basicType(t), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr) +#ifndef GLSLANG_WEB + , spirvType(nullptr) +#endif { assert(t == EbtReference); typeName = NewPoolTString(n.c_str()); @@ -1567,6 +1725,9 @@ class TType { referentType = copyOf.referentType; } typeParameters = copyOf.typeParameters; +#ifndef GLSLANG_WEB + spirvType = copyOf.spirvType; +#endif coopmat = copyOf.isCoopMat(); } @@ -1612,6 +1773,23 @@ class TType { assert(fieldName); return *fieldName; } + TShaderInterface getShaderInterface() const + { + if (basicType != EbtBlock) + return EsiNone; + + switch (qualifier.storage) { + default: + return EsiNone; + case EvqVaryingIn: + return EsiInput; + case EvqVaryingOut: + return EsiOutput; + case EvqUniform: + case EvqBuffer: + return EsiUniform; + } + } virtual TBasicType getBasicType() const { return basicType; } virtual const TSampler& getSampler() const { return sampler; } @@ -1640,6 +1818,7 @@ class TType { virtual bool isScalar() const { return ! isVector() && ! isMatrix() && ! isStruct() && ! isArray(); } virtual bool isScalarOrVec1() const { return isScalar() || vector1; } + virtual bool isScalarOrVector() const { return !isMatrix() && !isStruct() && !isArray(); } virtual bool isVector() const { return vectorSize > 1 || vector1; } virtual bool isMatrix() const { return matrixCols ? true : false; } virtual bool isArray() const { return arraySizes != nullptr; } @@ -1670,7 +1849,7 @@ class TType { } virtual bool isOpaque() const { return basicType == EbtSampler #ifndef GLSLANG_WEB - || basicType == EbtAtomicUint || basicType == EbtAccStructNV + || basicType == EbtAtomicUint || basicType == EbtAccStruct || basicType == EbtRayQuery #endif ; } virtual bool isBuiltIn() const { return getQualifier().builtIn != EbvNone; } @@ -1686,10 +1865,12 @@ class TType { bool isAtomic() const { return false; } bool isCoopMat() const { return false; } bool isReference() const { return false; } + bool isSpirvType() const { return false; } #else bool isAtomic() const { return basicType == EbtAtomicUint; } bool isCoopMat() const { return coopmat; } bool isReference() const { return getBasicType() == EbtReference; } + bool isSpirvType() const { return getBasicType() == EbtSpirvType; } #endif // return true if this type contains any subtype which satisfies the given predicate. @@ -1918,8 +2099,6 @@ class TType { } } - - const char* getBasicString() const { return TType::getBasicString(basicType); @@ -1946,8 +2125,11 @@ class TType { case EbtAtomicUint: return "atomic_uint"; case EbtStruct: return "structure"; case EbtBlock: return "block"; - case EbtAccStructNV: return "accelerationStructureNV"; + case EbtAccStruct: return "accelerationStructureNV"; + case EbtRayQuery: return "rayQueryEXT"; case EbtReference: return "reference"; + case EbtString: return "string"; + case EbtSpirvType: return "spirv_type"; #endif default: return "unknown type"; } @@ -1960,7 +2142,8 @@ class TType { const char* getPrecisionQualifierString() const { return ""; } TString getBasicTypeString() const { return ""; } #else - TString getCompleteString() const + TString getCompleteString(bool syntactic = false, bool getQualifiers = true, bool getPrecision = true, + bool getType = true, TString name = "", TString structName = "") const { TString typeString; @@ -1968,221 +2151,335 @@ class TType { const auto appendUint = [&](unsigned int u) { typeString.append(std::to_string(u).c_str()); }; const auto appendInt = [&](int i) { typeString.append(std::to_string(i).c_str()); }; - if (qualifier.hasLayout()) { + if (getQualifiers) { + if (qualifier.hasSprivDecorate()) + appendStr(qualifier.getSpirvDecorateQualifierString().c_str()); + + if (qualifier.hasLayout()) { // To reduce noise, skip this if the only layout is an xfb_buffer // with no triggering xfb_offset. TQualifier noXfbBuffer = qualifier; noXfbBuffer.layoutXfbBuffer = TQualifier::layoutXfbBufferEnd; if (noXfbBuffer.hasLayout()) { - appendStr("layout("); - if (qualifier.hasAnyLocation()) { - appendStr(" location="); - appendUint(qualifier.layoutLocation); - if (qualifier.hasComponent()) { - appendStr(" component="); - appendUint(qualifier.layoutComponent); - } - if (qualifier.hasIndex()) { - appendStr(" index="); - appendUint(qualifier.layoutIndex); - } - } - if (qualifier.hasSet()) { - appendStr(" set="); - appendUint(qualifier.layoutSet); - } - if (qualifier.hasBinding()) { - appendStr(" binding="); - appendUint(qualifier.layoutBinding); - } - if (qualifier.hasStream()) { - appendStr(" stream="); - appendUint(qualifier.layoutStream); - } - if (qualifier.hasMatrix()) { - appendStr(" "); - appendStr(TQualifier::getLayoutMatrixString(qualifier.layoutMatrix)); - } - if (qualifier.hasPacking()) { - appendStr(" "); - appendStr(TQualifier::getLayoutPackingString(qualifier.layoutPacking)); - } - if (qualifier.hasOffset()) { - appendStr(" offset="); - appendInt(qualifier.layoutOffset); - } - if (qualifier.hasAlign()) { - appendStr(" align="); - appendInt(qualifier.layoutAlign); - } - if (qualifier.hasFormat()) { - appendStr(" "); - appendStr(TQualifier::getLayoutFormatString(qualifier.layoutFormat)); - } - if (qualifier.hasXfbBuffer() && qualifier.hasXfbOffset()) { - appendStr(" xfb_buffer="); - appendUint(qualifier.layoutXfbBuffer); - } - if (qualifier.hasXfbOffset()) { - appendStr(" xfb_offset="); - appendUint(qualifier.layoutXfbOffset); + appendStr("layout("); + if (qualifier.hasAnyLocation()) { + appendStr(" location="); + appendUint(qualifier.layoutLocation); + if (qualifier.hasComponent()) { + appendStr(" component="); + appendUint(qualifier.layoutComponent); } - if (qualifier.hasXfbStride()) { - appendStr(" xfb_stride="); - appendUint(qualifier.layoutXfbStride); + if (qualifier.hasIndex()) { + appendStr(" index="); + appendUint(qualifier.layoutIndex); } - if (qualifier.hasAttachment()) { - appendStr(" input_attachment_index="); - appendUint(qualifier.layoutAttachment); - } - if (qualifier.hasSpecConstantId()) { - appendStr(" constant_id="); - appendUint(qualifier.layoutSpecConstantId); - } - if (qualifier.layoutPushConstant) - appendStr(" push_constant"); - if (qualifier.layoutBufferReference) - appendStr(" buffer_reference"); - if (qualifier.hasBufferReferenceAlign()) { - appendStr(" buffer_reference_align="); - appendUint(1u << qualifier.layoutBufferReferenceAlign); - } - - if (qualifier.layoutPassthrough) - appendStr(" passthrough"); - if (qualifier.layoutViewportRelative) - appendStr(" layoutViewportRelative"); - if (qualifier.layoutSecondaryViewportRelativeOffset != -2048) { - appendStr(" layoutSecondaryViewportRelativeOffset="); - appendInt(qualifier.layoutSecondaryViewportRelativeOffset); - } - if (qualifier.layoutShaderRecordNV) - appendStr(" shaderRecordNV"); - - appendStr(")"); + } + if (qualifier.hasSet()) { + appendStr(" set="); + appendUint(qualifier.layoutSet); + } + if (qualifier.hasBinding()) { + appendStr(" binding="); + appendUint(qualifier.layoutBinding); + } + if (qualifier.hasStream()) { + appendStr(" stream="); + appendUint(qualifier.layoutStream); + } + if (qualifier.hasMatrix()) { + appendStr(" "); + appendStr(TQualifier::getLayoutMatrixString(qualifier.layoutMatrix)); + } + if (qualifier.hasPacking()) { + appendStr(" "); + appendStr(TQualifier::getLayoutPackingString(qualifier.layoutPacking)); + } + if (qualifier.hasOffset()) { + appendStr(" offset="); + appendInt(qualifier.layoutOffset); + } + if (qualifier.hasAlign()) { + appendStr(" align="); + appendInt(qualifier.layoutAlign); + } + if (qualifier.hasFormat()) { + appendStr(" "); + appendStr(TQualifier::getLayoutFormatString(qualifier.layoutFormat)); + } + if (qualifier.hasXfbBuffer() && qualifier.hasXfbOffset()) { + appendStr(" xfb_buffer="); + appendUint(qualifier.layoutXfbBuffer); + } + if (qualifier.hasXfbOffset()) { + appendStr(" xfb_offset="); + appendUint(qualifier.layoutXfbOffset); + } + if (qualifier.hasXfbStride()) { + appendStr(" xfb_stride="); + appendUint(qualifier.layoutXfbStride); + } + if (qualifier.hasAttachment()) { + appendStr(" input_attachment_index="); + appendUint(qualifier.layoutAttachment); + } + if (qualifier.hasSpecConstantId()) { + appendStr(" constant_id="); + appendUint(qualifier.layoutSpecConstantId); + } + if (qualifier.layoutPushConstant) + appendStr(" push_constant"); + if (qualifier.layoutBufferReference) + appendStr(" buffer_reference"); + if (qualifier.hasBufferReferenceAlign()) { + appendStr(" buffer_reference_align="); + appendUint(1u << qualifier.layoutBufferReferenceAlign); + } + + if (qualifier.layoutPassthrough) + appendStr(" passthrough"); + if (qualifier.layoutViewportRelative) + appendStr(" layoutViewportRelative"); + if (qualifier.layoutSecondaryViewportRelativeOffset != -2048) { + appendStr(" layoutSecondaryViewportRelativeOffset="); + appendInt(qualifier.layoutSecondaryViewportRelativeOffset); + } + if (qualifier.layoutShaderRecord) + appendStr(" shaderRecordNV"); + + appendStr(")"); } - } + } - if (qualifier.invariant) + if (qualifier.invariant) appendStr(" invariant"); - if (qualifier.noContraction) + if (qualifier.noContraction) appendStr(" noContraction"); - if (qualifier.centroid) + if (qualifier.centroid) appendStr(" centroid"); - if (qualifier.smooth) + if (qualifier.smooth) appendStr(" smooth"); - if (qualifier.flat) + if (qualifier.flat) appendStr(" flat"); - if (qualifier.nopersp) + if (qualifier.nopersp) appendStr(" noperspective"); - if (qualifier.explicitInterp) + if (qualifier.explicitInterp) appendStr(" __explicitInterpAMD"); - if (qualifier.pervertexNV) + if (qualifier.pervertexNV) appendStr(" pervertexNV"); - if (qualifier.perPrimitiveNV) + if (qualifier.perPrimitiveNV) appendStr(" perprimitiveNV"); - if (qualifier.perViewNV) + if (qualifier.perViewNV) appendStr(" perviewNV"); - if (qualifier.perTaskNV) + if (qualifier.perTaskNV) appendStr(" taskNV"); - if (qualifier.patch) + if (qualifier.patch) appendStr(" patch"); - if (qualifier.sample) + if (qualifier.sample) appendStr(" sample"); - if (qualifier.coherent) + if (qualifier.coherent) appendStr(" coherent"); - if (qualifier.devicecoherent) + if (qualifier.devicecoherent) appendStr(" devicecoherent"); - if (qualifier.queuefamilycoherent) + if (qualifier.queuefamilycoherent) appendStr(" queuefamilycoherent"); - if (qualifier.workgroupcoherent) + if (qualifier.workgroupcoherent) appendStr(" workgroupcoherent"); - if (qualifier.subgroupcoherent) + if (qualifier.subgroupcoherent) appendStr(" subgroupcoherent"); - if (qualifier.nonprivate) + if (qualifier.shadercallcoherent) + appendStr(" shadercallcoherent"); + if (qualifier.nonprivate) appendStr(" nonprivate"); - if (qualifier.volatil) + if (qualifier.volatil) appendStr(" volatile"); - if (qualifier.restrict) + if (qualifier.restrict) appendStr(" restrict"); - if (qualifier.readonly) + if (qualifier.readonly) appendStr(" readonly"); - if (qualifier.writeonly) + if (qualifier.writeonly) appendStr(" writeonly"); - if (qualifier.specConstant) + if (qualifier.specConstant) appendStr(" specialization-constant"); - if (qualifier.nonUniform) + if (qualifier.nonUniform) appendStr(" nonuniform"); - appendStr(" "); - appendStr(getStorageQualifierString()); - if (isArray()) { - for(int i = 0; i < (int)arraySizes->getNumDims(); ++i) { + if (qualifier.isNullInit()) + appendStr(" null-init"); + if (qualifier.isSpirvByReference()) + appendStr(" spirv_by_reference"); + if (qualifier.isSpirvLiteral()) + appendStr(" spirv_literal"); + appendStr(" "); + appendStr(getStorageQualifierString()); + } + if (getType) { + if (syntactic) { + if (getPrecision && qualifier.precision != EpqNone) { + appendStr(" "); + appendStr(getPrecisionQualifierString()); + } + if (isVector() || isMatrix()) { + appendStr(" "); + switch (basicType) { + case EbtDouble: + appendStr("d"); + break; + case EbtInt: + appendStr("i"); + break; + case EbtUint: + appendStr("u"); + break; + case EbtBool: + appendStr("b"); + break; + case EbtFloat: + default: + break; + } + if (isVector()) { + appendStr("vec"); + appendInt(vectorSize); + } else { + appendStr("mat"); + appendInt(matrixCols); + appendStr("x"); + appendInt(matrixRows); + } + } else if (isStruct() && structure) { + appendStr(" "); + appendStr(structName.c_str()); + appendStr("{"); + bool hasHiddenMember = true; + for (size_t i = 0; i < structure->size(); ++i) { + if (!(*structure)[i].type->hiddenMember()) { + if (!hasHiddenMember) + appendStr(", "); + typeString.append((*structure)[i].type->getCompleteString(syntactic, getQualifiers, getPrecision, getType, (*structure)[i].type->getFieldName())); + hasHiddenMember = false; + } + } + appendStr("}"); + } else { + appendStr(" "); + switch (basicType) { + case EbtDouble: + appendStr("double"); + break; + case EbtInt: + appendStr("int"); + break; + case EbtUint: + appendStr("uint"); + break; + case EbtBool: + appendStr("bool"); + break; + case EbtFloat: + appendStr("float"); + break; + default: + appendStr("unexpected"); + break; + } + } + if (name.length() > 0) { + appendStr(" "); + appendStr(name.c_str()); + } + if (isArray()) { + for (int i = 0; i < (int)arraySizes->getNumDims(); ++i) { int size = arraySizes->getDimSize(i); if (size == UnsizedArraySize && i == 0 && arraySizes->isVariablyIndexed()) - appendStr(" runtime-sized array of"); + appendStr("[]"); else { - if (size == UnsizedArraySize) { - appendStr(" unsized"); - if (i == 0) { - appendStr(" "); - appendInt(arraySizes->getImplicitSize()); - } - } else { - appendStr(" "); - appendInt(arraySizes->getDimSize(i)); + if (size == UnsizedArraySize) { + appendStr("["); + if (i == 0) + appendInt(arraySizes->getImplicitSize()); + appendStr("]"); + } + else { + appendStr("["); + appendInt(arraySizes->getDimSize(i)); + appendStr("]"); + } + } + } + } + } + else { + if (isArray()) { + for (int i = 0; i < (int)arraySizes->getNumDims(); ++i) { + int size = arraySizes->getDimSize(i); + if (size == UnsizedArraySize && i == 0 && arraySizes->isVariablyIndexed()) + appendStr(" runtime-sized array of"); + else { + if (size == UnsizedArraySize) { + appendStr(" unsized"); + if (i == 0) { + appendStr(" "); + appendInt(arraySizes->getImplicitSize()); } - appendStr("-element array of"); + } + else { + appendStr(" "); + appendInt(arraySizes->getDimSize(i)); + } + appendStr("-element array of"); } + } } - } - if (isParameterized()) { - appendStr("<"); - for(int i = 0; i < (int)typeParameters->getNumDims(); ++i) { + if (isParameterized()) { + appendStr("<"); + for (int i = 0; i < (int)typeParameters->getNumDims(); ++i) { appendInt(typeParameters->getDimSize(i)); if (i != (int)typeParameters->getNumDims() - 1) - appendStr(", "); + appendStr(", "); + } + appendStr(">"); + } + if (getPrecision && qualifier.precision != EpqNone) { + appendStr(" "); + appendStr(getPrecisionQualifierString()); + } + if (isMatrix()) { + appendStr(" "); + appendInt(matrixCols); + appendStr("X"); + appendInt(matrixRows); + appendStr(" matrix of"); + } + else if (isVector()) { + appendStr(" "); + appendInt(vectorSize); + appendStr("-component vector of"); } - appendStr(">"); - } - if (qualifier.precision != EpqNone) { - appendStr(" "); - appendStr(getPrecisionQualifierString()); - } - if (isMatrix()) { - appendStr(" "); - appendInt(matrixCols); - appendStr("X"); - appendInt(matrixRows); - appendStr(" matrix of"); - } else if (isVector()) { - appendStr(" "); - appendInt(vectorSize); - appendStr("-component vector of"); - } - - appendStr(" "); - typeString.append(getBasicTypeString()); - if (qualifier.builtIn != EbvNone) { appendStr(" "); - appendStr(getBuiltInVariableString()); - } + typeString.append(getBasicTypeString()); - // Add struct/block members - if (isStruct() && structure) { - appendStr("{"); - bool hasHiddenMember = true; - for (size_t i = 0; i < structure->size(); ++i) { - if (! (*structure)[i].type->hiddenMember()) { - if (!hasHiddenMember) - appendStr(", "); - typeString.append((*structure)[i].type->getCompleteString()); - typeString.append(" "); - typeString.append((*structure)[i].type->getFieldName()); - hasHiddenMember = false; + if (qualifier.builtIn != EbvNone) { + appendStr(" "); + appendStr(getBuiltInVariableString()); + } + + // Add struct/block members + if (isStruct() && structure) { + appendStr("{"); + bool hasHiddenMember = true; + for (size_t i = 0; i < structure->size(); ++i) { + if (!(*structure)[i].type->hiddenMember()) { + if (!hasHiddenMember) + appendStr(", "); + typeString.append((*structure)[i].type->getCompleteString()); + typeString.append(" "); + typeString.append((*structure)[i].type->getFieldName()); + hasHiddenMember = false; } + } + appendStr("}"); } - appendStr("}"); + } } return typeString; @@ -2232,6 +2529,17 @@ class TType { name += ';' ; } + // These variables are inconsistently declared inside and outside of gl_PerVertex in glslang right now. + // They are declared inside of 'in gl_PerVertex', but sitting as standalone when they are 'out'puts. + bool isInconsistentGLPerVertexMember(const TString& name) const + { + if (name == "gl_SecondaryPositionNV" || + name == "gl_PositionPerViewNV") + return true; + return false; + } + + // Do two structure types match? They could be declared independently, // in different places, but still might satisfy the definition of matching. // From the spec: @@ -2240,29 +2548,90 @@ class TType { // type definitions, and member names to be considered the same type. // This rule applies recursively for nested or embedded types." // - bool sameStructType(const TType& right) const + // If type mismatch in structure, return member indices through lpidx and rpidx. + // If matching members for either block are exhausted, return -1 for exhausted + // block and the index of the unmatched member. Otherwise return {-1,-1}. + // + bool sameStructType(const TType& right, int* lpidx = nullptr, int* rpidx = nullptr) const { + // Initialize error to general type mismatch. + if (lpidx != nullptr) { + *lpidx = -1; + *rpidx = -1; + } + // Most commonly, they are both nullptr, or the same pointer to the same actual structure + // TODO: Why return true when neither types are structures? if ((!isStruct() && !right.isStruct()) || (isStruct() && right.isStruct() && structure == right.structure)) return true; - // Both being nullptr was caught above, now they both have to be structures of the same number of elements - if (!isStruct() || !right.isStruct() || - structure->size() != right.structure->size()) + if (!isStruct() || !right.isStruct()) return false; // Structure names have to match if (*typeName != *right.typeName) return false; - // Compare the names and types of all the members, which have to match - for (unsigned int i = 0; i < structure->size(); ++i) { - if ((*structure)[i].type->getFieldName() != (*right.structure)[i].type->getFieldName()) - return false; + // There are inconsistencies with how gl_PerVertex is setup. For now ignore those as errors if they + // are known inconsistencies. + bool isGLPerVertex = *typeName == "gl_PerVertex"; - if (*(*structure)[i].type != *(*right.structure)[i].type) - return false; + // Both being nullptr was caught above, now they both have to be structures of the same number of elements + if (lpidx == nullptr && + (structure->size() != right.structure->size() && !isGLPerVertex)) { + return false; + } + + // Compare the names and types of all the members, which have to match + for (size_t li = 0, ri = 0; li < structure->size() || ri < right.structure->size(); ++li, ++ri) { + if (lpidx != nullptr) { + *lpidx = static_cast(li); + *rpidx = static_cast(ri); + } + if (li < structure->size() && ri < right.structure->size()) { + if ((*structure)[li].type->getFieldName() == (*right.structure)[ri].type->getFieldName()) { + if (*(*structure)[li].type != *(*right.structure)[ri].type) + return false; + } else { + // Skip hidden members + if ((*structure)[li].type->hiddenMember()) { + ri--; + continue; + } else if ((*right.structure)[ri].type->hiddenMember()) { + li--; + continue; + } + // If one of the members is something that's inconsistently declared, skip over it + // for now. + if (isGLPerVertex) { + if (isInconsistentGLPerVertexMember((*structure)[li].type->getFieldName())) { + ri--; + continue; + } else if (isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName())) { + li--; + continue; + } + } else { + return false; + } + } + // If we get here, then there should only be inconsistently declared members left + } else if (li < structure->size()) { + if (!(*structure)[li].type->hiddenMember() && !isInconsistentGLPerVertexMember((*structure)[li].type->getFieldName())) { + if (lpidx != nullptr) { + *rpidx = -1; + } + return false; + } + } else { + if (!(*right.structure)[ri].type->hiddenMember() && !isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName())) { + if (lpidx != nullptr) { + *lpidx = -1; + } + return false; + } + } } return true; @@ -2285,10 +2654,15 @@ class TType { return *referentType == *right.referentType; } - // See if two types match, in all aspects except arrayness - bool sameElementType(const TType& right) const + // See if two types match, in all aspects except arrayness + // If mismatch in structure members, return member indices in lpidx and rpidx. + bool sameElementType(const TType& right, int* lpidx = nullptr, int* rpidx = nullptr) const { - return basicType == right.basicType && sameElementShape(right); + if (lpidx != nullptr) { + *lpidx = -1; + *rpidx = -1; + } + return basicType == right.basicType && sameElementShape(right, lpidx, rpidx); } // See if two type's arrayness match @@ -2312,16 +2686,30 @@ class TType { (typeParameters != nullptr && right.typeParameters != nullptr && *typeParameters == *right.typeParameters)); } +#ifndef GLSLANG_WEB + // See if two type's SPIR-V type contents match + bool sameSpirvType(const TType& right) const + { + return ((spirvType == nullptr && right.spirvType == nullptr) || + (spirvType != nullptr && right.spirvType != nullptr && *spirvType == *right.spirvType)); + } +#endif + // See if two type's elements match in all ways except basic type - bool sameElementShape(const TType& right) const + // If mismatch in structure members, return member indices in lpidx and rpidx. + bool sameElementShape(const TType& right, int* lpidx = nullptr, int* rpidx = nullptr) const { - return sampler == right.sampler && + if (lpidx != nullptr) { + *lpidx = -1; + *rpidx = -1; + } + return ((basicType != EbtSampler && right.basicType != EbtSampler) || sampler == right.sampler) && vectorSize == right.vectorSize && matrixCols == right.matrixCols && matrixRows == right.matrixRows && vector1 == right.vector1 && isCoopMat() == right.isCoopMat() && - sameStructType(right) && + sameStructType(right, lpidx, rpidx) && sameReferenceType(right); } @@ -2350,7 +2738,11 @@ class TType { // See if two types match in all ways (just the actual type, not qualification) bool operator==(const TType& right) const { +#ifndef GLSLANG_WEB + return sameElementType(right) && sameArrayness(right) && sameTypeParameters(right) && sameSpirvType(right); +#else return sameElementType(right) && sameArrayness(right) && sameTypeParameters(right); +#endif } bool operator!=(const TType& right) const @@ -2369,6 +2761,10 @@ class TType { return 0; } +#ifndef GLSLANG_WEB + const TSpirvType& getSpirvType() const { assert(spirvType); return *spirvType; } +#endif + protected: // Require consumer to pick between deep copy and shallow copy. TType(const TType& type); @@ -2381,6 +2777,19 @@ class TType { { shallowCopy(copyOf); +#ifndef GLSLANG_WEB + // GL_EXT_spirv_intrinsics + if (copyOf.qualifier.spirvDecorate) { + qualifier.spirvDecorate = new TSpirvDecorate; + *qualifier.spirvDecorate = *copyOf.qualifier.spirvDecorate; + } + + if (copyOf.spirvType) { + spirvType = new TSpirvType; + *spirvType = *copyOf.spirvType; + } +#endif + if (copyOf.arraySizes) { arraySizes = new TArraySizes; *arraySizes = *copyOf.arraySizes; @@ -2440,6 +2849,9 @@ class TType { TString *typeName; // for structure type name TSampler sampler; TArraySizes* typeParameters;// nullptr unless a parameterized type; can be shared across types +#ifndef GLSLANG_WEB + TSpirvType* spirvType; // SPIR-V type defined by spirv_type directive +#endif }; } // end namespace glslang diff --git a/Externals/glslang/glslang/Include/glslang_c_interface.h b/Externals/glslang/glslang/Include/glslang_c_interface.h new file mode 100644 index 000000000000..a98a7e176d3f --- /dev/null +++ b/Externals/glslang/glslang/Include/glslang_c_interface.h @@ -0,0 +1,254 @@ +/** + This code is based on the glslang_c_interface implementation by Viktor Latypov +**/ + +/** +BSD 2-Clause License + +Copyright (c) 2019, Viktor Latypov +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +**/ + +#ifndef GLSLANG_C_IFACE_H_INCLUDED +#define GLSLANG_C_IFACE_H_INCLUDED + +#include +#include + +#include "glslang_c_shader_types.h" + +typedef struct glslang_shader_s glslang_shader_t; +typedef struct glslang_program_s glslang_program_t; + +/* TLimits counterpart */ +typedef struct glslang_limits_s { + bool non_inductive_for_loops; + bool while_loops; + bool do_while_loops; + bool general_uniform_indexing; + bool general_attribute_matrix_vector_indexing; + bool general_varying_indexing; + bool general_sampler_indexing; + bool general_variable_indexing; + bool general_constant_matrix_vector_indexing; +} glslang_limits_t; + +/* TBuiltInResource counterpart */ +typedef struct glslang_resource_s { + int max_lights; + int max_clip_planes; + int max_texture_units; + int max_texture_coords; + int max_vertex_attribs; + int max_vertex_uniform_components; + int max_varying_floats; + int max_vertex_texture_image_units; + int max_combined_texture_image_units; + int max_texture_image_units; + int max_fragment_uniform_components; + int max_draw_buffers; + int max_vertex_uniform_vectors; + int max_varying_vectors; + int max_fragment_uniform_vectors; + int max_vertex_output_vectors; + int max_fragment_input_vectors; + int min_program_texel_offset; + int max_program_texel_offset; + int max_clip_distances; + int max_compute_work_group_count_x; + int max_compute_work_group_count_y; + int max_compute_work_group_count_z; + int max_compute_work_group_size_x; + int max_compute_work_group_size_y; + int max_compute_work_group_size_z; + int max_compute_uniform_components; + int max_compute_texture_image_units; + int max_compute_image_uniforms; + int max_compute_atomic_counters; + int max_compute_atomic_counter_buffers; + int max_varying_components; + int max_vertex_output_components; + int max_geometry_input_components; + int max_geometry_output_components; + int max_fragment_input_components; + int max_image_units; + int max_combined_image_units_and_fragment_outputs; + int max_combined_shader_output_resources; + int max_image_samples; + int max_vertex_image_uniforms; + int max_tess_control_image_uniforms; + int max_tess_evaluation_image_uniforms; + int max_geometry_image_uniforms; + int max_fragment_image_uniforms; + int max_combined_image_uniforms; + int max_geometry_texture_image_units; + int max_geometry_output_vertices; + int max_geometry_total_output_components; + int max_geometry_uniform_components; + int max_geometry_varying_components; + int max_tess_control_input_components; + int max_tess_control_output_components; + int max_tess_control_texture_image_units; + int max_tess_control_uniform_components; + int max_tess_control_total_output_components; + int max_tess_evaluation_input_components; + int max_tess_evaluation_output_components; + int max_tess_evaluation_texture_image_units; + int max_tess_evaluation_uniform_components; + int max_tess_patch_components; + int max_patch_vertices; + int max_tess_gen_level; + int max_viewports; + int max_vertex_atomic_counters; + int max_tess_control_atomic_counters; + int max_tess_evaluation_atomic_counters; + int max_geometry_atomic_counters; + int max_fragment_atomic_counters; + int max_combined_atomic_counters; + int max_atomic_counter_bindings; + int max_vertex_atomic_counter_buffers; + int max_tess_control_atomic_counter_buffers; + int max_tess_evaluation_atomic_counter_buffers; + int max_geometry_atomic_counter_buffers; + int max_fragment_atomic_counter_buffers; + int max_combined_atomic_counter_buffers; + int max_atomic_counter_buffer_size; + int max_transform_feedback_buffers; + int max_transform_feedback_interleaved_components; + int max_cull_distances; + int max_combined_clip_and_cull_distances; + int max_samples; + int max_mesh_output_vertices_nv; + int max_mesh_output_primitives_nv; + int max_mesh_work_group_size_x_nv; + int max_mesh_work_group_size_y_nv; + int max_mesh_work_group_size_z_nv; + int max_task_work_group_size_x_nv; + int max_task_work_group_size_y_nv; + int max_task_work_group_size_z_nv; + int max_mesh_view_count_nv; + int maxDualSourceDrawBuffersEXT; + + glslang_limits_t limits; +} glslang_resource_t; + +typedef struct glslang_input_s { + glslang_source_t language; + glslang_stage_t stage; + glslang_client_t client; + glslang_target_client_version_t client_version; + glslang_target_language_t target_language; + glslang_target_language_version_t target_language_version; + /** Shader source code */ + const char* code; + int default_version; + glslang_profile_t default_profile; + int force_default_version_and_profile; + int forward_compatible; + glslang_messages_t messages; + const glslang_resource_t* resource; +} glslang_input_t; + +/* Inclusion result structure allocated by C include_local/include_system callbacks */ +typedef struct glsl_include_result_s { + /* Header file name or NULL if inclusion failed */ + const char* header_name; + + /* Header contents or NULL */ + const char* header_data; + size_t header_length; + +} glsl_include_result_t; + +/* Callback for local file inclusion */ +typedef glsl_include_result_t* (*glsl_include_local_func)(void* ctx, const char* header_name, const char* includer_name, + size_t include_depth); + +/* Callback for system file inclusion */ +typedef glsl_include_result_t* (*glsl_include_system_func)(void* ctx, const char* header_name, + const char* includer_name, size_t include_depth); + +/* Callback for include result destruction */ +typedef int (*glsl_free_include_result_func)(void* ctx, glsl_include_result_t* result); + +/* Collection of callbacks for GLSL preprocessor */ +typedef struct glsl_include_callbacks_s { + glsl_include_system_func include_system; + glsl_include_local_func include_local; + glsl_free_include_result_func free_include_result; +} glsl_include_callbacks_t; + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef GLSLANG_IS_SHARED_LIBRARY + #ifdef _WIN32 + #ifdef GLSLANG_EXPORTING + #define GLSLANG_EXPORT __declspec(dllexport) + #else + #define GLSLANG_EXPORT __declspec(dllimport) + #endif + #elif __GNUC__ >= 4 + #define GLSLANG_EXPORT __attribute__((visibility("default"))) + #endif +#endif // GLSLANG_IS_SHARED_LIBRARY + +#ifndef GLSLANG_EXPORT +#define GLSLANG_EXPORT +#endif + +GLSLANG_EXPORT int glslang_initialize_process(); +GLSLANG_EXPORT void glslang_finalize_process(); + +GLSLANG_EXPORT glslang_shader_t* glslang_shader_create(const glslang_input_t* input); +GLSLANG_EXPORT void glslang_shader_delete(glslang_shader_t* shader); +GLSLANG_EXPORT void glslang_shader_shift_binding(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base); +GLSLANG_EXPORT void glslang_shader_shift_binding_for_set(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base, unsigned int set); +GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int options); // glslang_shader_options_t +GLSLANG_EXPORT void glslang_shader_set_glsl_version(glslang_shader_t* shader, int version); +GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input); +GLSLANG_EXPORT int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input); +GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader); +GLSLANG_EXPORT const char* glslang_shader_get_info_log(glslang_shader_t* shader); +GLSLANG_EXPORT const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader); + +GLSLANG_EXPORT glslang_program_t* glslang_program_create(); +GLSLANG_EXPORT void glslang_program_delete(glslang_program_t* program); +GLSLANG_EXPORT void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader); +GLSLANG_EXPORT int glslang_program_link(glslang_program_t* program, int messages); // glslang_messages_t +GLSLANG_EXPORT int glslang_program_map_io(glslang_program_t* program); +GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage); +GLSLANG_EXPORT size_t glslang_program_SPIRV_get_size(glslang_program_t* program); +GLSLANG_EXPORT void glslang_program_SPIRV_get(glslang_program_t* program, unsigned int*); +GLSLANG_EXPORT unsigned int* glslang_program_SPIRV_get_ptr(glslang_program_t* program); +GLSLANG_EXPORT const char* glslang_program_SPIRV_get_messages(glslang_program_t* program); +GLSLANG_EXPORT const char* glslang_program_get_info_log(glslang_program_t* program); +GLSLANG_EXPORT const char* glslang_program_get_info_debug_log(glslang_program_t* program); + +#ifdef __cplusplus +} +#endif + +#endif /* #ifdef GLSLANG_C_IFACE_INCLUDED */ diff --git a/Externals/glslang/glslang/Include/glslang_c_shader_types.h b/Externals/glslang/glslang/Include/glslang_c_shader_types.h new file mode 100644 index 000000000000..dc9009f302b1 --- /dev/null +++ b/Externals/glslang/glslang/Include/glslang_c_shader_types.h @@ -0,0 +1,211 @@ +/** + This code is based on the glslang_c_interface implementation by Viktor Latypov +**/ + +/** +BSD 2-Clause License + +Copyright (c) 2019, Viktor Latypov +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +**/ + +#ifndef C_SHADER_TYPES_H_INCLUDED +#define C_SHADER_TYPES_H_INCLUDED + +#define LAST_ELEMENT_MARKER(x) x + +/* EShLanguage counterpart */ +typedef enum { + GLSLANG_STAGE_VERTEX, + GLSLANG_STAGE_TESSCONTROL, + GLSLANG_STAGE_TESSEVALUATION, + GLSLANG_STAGE_GEOMETRY, + GLSLANG_STAGE_FRAGMENT, + GLSLANG_STAGE_COMPUTE, + GLSLANG_STAGE_RAYGEN_NV, + GLSLANG_STAGE_INTERSECT_NV, + GLSLANG_STAGE_ANYHIT_NV, + GLSLANG_STAGE_CLOSESTHIT_NV, + GLSLANG_STAGE_MISS_NV, + GLSLANG_STAGE_CALLABLE_NV, + GLSLANG_STAGE_TASK_NV, + GLSLANG_STAGE_MESH_NV, + LAST_ELEMENT_MARKER(GLSLANG_STAGE_COUNT), +} glslang_stage_t; // would be better as stage, but this is ancient now + +/* EShLanguageMask counterpart */ +typedef enum { + GLSLANG_STAGE_VERTEX_MASK = (1 << GLSLANG_STAGE_VERTEX), + GLSLANG_STAGE_TESSCONTROL_MASK = (1 << GLSLANG_STAGE_TESSCONTROL), + GLSLANG_STAGE_TESSEVALUATION_MASK = (1 << GLSLANG_STAGE_TESSEVALUATION), + GLSLANG_STAGE_GEOMETRY_MASK = (1 << GLSLANG_STAGE_GEOMETRY), + GLSLANG_STAGE_FRAGMENT_MASK = (1 << GLSLANG_STAGE_FRAGMENT), + GLSLANG_STAGE_COMPUTE_MASK = (1 << GLSLANG_STAGE_COMPUTE), + GLSLANG_STAGE_RAYGEN_NV_MASK = (1 << GLSLANG_STAGE_RAYGEN_NV), + GLSLANG_STAGE_INTERSECT_NV_MASK = (1 << GLSLANG_STAGE_INTERSECT_NV), + GLSLANG_STAGE_ANYHIT_NV_MASK = (1 << GLSLANG_STAGE_ANYHIT_NV), + GLSLANG_STAGE_CLOSESTHIT_NV_MASK = (1 << GLSLANG_STAGE_CLOSESTHIT_NV), + GLSLANG_STAGE_MISS_NV_MASK = (1 << GLSLANG_STAGE_MISS_NV), + GLSLANG_STAGE_CALLABLE_NV_MASK = (1 << GLSLANG_STAGE_CALLABLE_NV), + GLSLANG_STAGE_TASK_NV_MASK = (1 << GLSLANG_STAGE_TASK_NV), + GLSLANG_STAGE_MESH_NV_MASK = (1 << GLSLANG_STAGE_MESH_NV), + LAST_ELEMENT_MARKER(GLSLANG_STAGE_MASK_COUNT), +} glslang_stage_mask_t; + +/* EShSource counterpart */ +typedef enum { + GLSLANG_SOURCE_NONE, + GLSLANG_SOURCE_GLSL, + GLSLANG_SOURCE_HLSL, + LAST_ELEMENT_MARKER(GLSLANG_SOURCE_COUNT), +} glslang_source_t; + +/* EShClient counterpart */ +typedef enum { + GLSLANG_CLIENT_NONE, + GLSLANG_CLIENT_VULKAN, + GLSLANG_CLIENT_OPENGL, + LAST_ELEMENT_MARKER(GLSLANG_CLIENT_COUNT), +} glslang_client_t; + +/* EShTargetLanguage counterpart */ +typedef enum { + GLSLANG_TARGET_NONE, + GLSLANG_TARGET_SPV, + LAST_ELEMENT_MARKER(GLSLANG_TARGET_COUNT), +} glslang_target_language_t; + +/* SH_TARGET_ClientVersion counterpart */ +typedef enum { + GLSLANG_TARGET_VULKAN_1_0 = (1 << 22), + GLSLANG_TARGET_VULKAN_1_1 = (1 << 22) | (1 << 12), + GLSLANG_TARGET_VULKAN_1_2 = (1 << 22) | (2 << 12), + GLSLANG_TARGET_VULKAN_1_3 = (1 << 22) | (3 << 12), + GLSLANG_TARGET_OPENGL_450 = 450, + LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT = 5), +} glslang_target_client_version_t; + +/* SH_TARGET_LanguageVersion counterpart */ +typedef enum { + GLSLANG_TARGET_SPV_1_0 = (1 << 16), + GLSLANG_TARGET_SPV_1_1 = (1 << 16) | (1 << 8), + GLSLANG_TARGET_SPV_1_2 = (1 << 16) | (2 << 8), + GLSLANG_TARGET_SPV_1_3 = (1 << 16) | (3 << 8), + GLSLANG_TARGET_SPV_1_4 = (1 << 16) | (4 << 8), + GLSLANG_TARGET_SPV_1_5 = (1 << 16) | (5 << 8), + GLSLANG_TARGET_SPV_1_6 = (1 << 16) | (6 << 8), + LAST_ELEMENT_MARKER(GLSLANG_TARGET_LANGUAGE_VERSION_COUNT = 7), +} glslang_target_language_version_t; + +/* EShExecutable counterpart */ +typedef enum { GLSLANG_EX_VERTEX_FRAGMENT, GLSLANG_EX_FRAGMENT } glslang_executable_t; + +// EShOptimizationLevel counterpart +// This enum is not used in the current C interface, but could be added at a later date. +// GLSLANG_OPT_NONE is the current default. +typedef enum { + GLSLANG_OPT_NO_GENERATION, + GLSLANG_OPT_NONE, + GLSLANG_OPT_SIMPLE, + GLSLANG_OPT_FULL, + LAST_ELEMENT_MARKER(GLSLANG_OPT_LEVEL_COUNT), +} glslang_optimization_level_t; + +/* EShTextureSamplerTransformMode counterpart */ +typedef enum { + GLSLANG_TEX_SAMP_TRANS_KEEP, + GLSLANG_TEX_SAMP_TRANS_UPGRADE_TEXTURE_REMOVE_SAMPLER, + LAST_ELEMENT_MARKER(GLSLANG_TEX_SAMP_TRANS_COUNT), +} glslang_texture_sampler_transform_mode_t; + +/* EShMessages counterpart */ +typedef enum { + GLSLANG_MSG_DEFAULT_BIT = 0, + GLSLANG_MSG_RELAXED_ERRORS_BIT = (1 << 0), + GLSLANG_MSG_SUPPRESS_WARNINGS_BIT = (1 << 1), + GLSLANG_MSG_AST_BIT = (1 << 2), + GLSLANG_MSG_SPV_RULES_BIT = (1 << 3), + GLSLANG_MSG_VULKAN_RULES_BIT = (1 << 4), + GLSLANG_MSG_ONLY_PREPROCESSOR_BIT = (1 << 5), + GLSLANG_MSG_READ_HLSL_BIT = (1 << 6), + GLSLANG_MSG_CASCADING_ERRORS_BIT = (1 << 7), + GLSLANG_MSG_KEEP_UNCALLED_BIT = (1 << 8), + GLSLANG_MSG_HLSL_OFFSETS_BIT = (1 << 9), + GLSLANG_MSG_DEBUG_INFO_BIT = (1 << 10), + GLSLANG_MSG_HLSL_ENABLE_16BIT_TYPES_BIT = (1 << 11), + GLSLANG_MSG_HLSL_LEGALIZATION_BIT = (1 << 12), + GLSLANG_MSG_HLSL_DX9_COMPATIBLE_BIT = (1 << 13), + GLSLANG_MSG_BUILTIN_SYMBOL_TABLE_BIT = (1 << 14), + GLSLANG_MSG_ENHANCED = (1 << 15), + LAST_ELEMENT_MARKER(GLSLANG_MSG_COUNT), +} glslang_messages_t; + +/* EShReflectionOptions counterpart */ +typedef enum { + GLSLANG_REFLECTION_DEFAULT_BIT = 0, + GLSLANG_REFLECTION_STRICT_ARRAY_SUFFIX_BIT = (1 << 0), + GLSLANG_REFLECTION_BASIC_ARRAY_SUFFIX_BIT = (1 << 1), + GLSLANG_REFLECTION_INTERMEDIATE_IOO_BIT = (1 << 2), + GLSLANG_REFLECTION_SEPARATE_BUFFERS_BIT = (1 << 3), + GLSLANG_REFLECTION_ALL_BLOCK_VARIABLES_BIT = (1 << 4), + GLSLANG_REFLECTION_UNWRAP_IO_BLOCKS_BIT = (1 << 5), + GLSLANG_REFLECTION_ALL_IO_VARIABLES_BIT = (1 << 6), + GLSLANG_REFLECTION_SHARED_STD140_SSBO_BIT = (1 << 7), + GLSLANG_REFLECTION_SHARED_STD140_UBO_BIT = (1 << 8), + LAST_ELEMENT_MARKER(GLSLANG_REFLECTION_COUNT), +} glslang_reflection_options_t; + +/* EProfile counterpart (from Versions.h) */ +typedef enum { + GLSLANG_BAD_PROFILE = 0, + GLSLANG_NO_PROFILE = (1 << 0), + GLSLANG_CORE_PROFILE = (1 << 1), + GLSLANG_COMPATIBILITY_PROFILE = (1 << 2), + GLSLANG_ES_PROFILE = (1 << 3), + LAST_ELEMENT_MARKER(GLSLANG_PROFILE_COUNT), +} glslang_profile_t; + +/* Shader options */ +typedef enum { + GLSLANG_SHADER_DEFAULT_BIT = 0, + GLSLANG_SHADER_AUTO_MAP_BINDINGS = (1 << 0), + GLSLANG_SHADER_AUTO_MAP_LOCATIONS = (1 << 1), + GLSLANG_SHADER_VULKAN_RULES_RELAXED = (1 << 2), + LAST_ELEMENT_MARKER(GLSLANG_SHADER_COUNT), +} glslang_shader_options_t; + +/* TResourceType counterpart */ +typedef enum { + GLSLANG_RESOURCE_TYPE_SAMPLER, + GLSLANG_RESOURCE_TYPE_TEXTURE, + GLSLANG_RESOURCE_TYPE_IMAGE, + GLSLANG_RESOURCE_TYPE_UBO, + GLSLANG_RESOURCE_TYPE_SSBO, + GLSLANG_RESOURCE_TYPE_UAV, + LAST_ELEMENT_MARKER(GLSLANG_RESOURCE_TYPE_COUNT), +} glslang_resource_type_t; + +#undef LAST_ELEMENT_MARKER + +#endif diff --git a/Externals/glslang/glslang/Include/intermediate.h b/Externals/glslang/glslang/Include/intermediate.h index 29d58ca635ee..a64ed683787a 100644 --- a/Externals/glslang/glslang/Include/intermediate.h +++ b/Externals/glslang/glslang/Include/intermediate.h @@ -2,6 +2,7 @@ // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2016 LunarG, Inc. // Copyright (C) 2017 ARM Limited. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -70,6 +71,9 @@ enum TOperator { EOpFunctionCall, EOpFunction, // For function definition EOpParameters, // an aggregate listing the parameters to a function +#ifndef GLSLANG_WEB + EOpSpirvInst, +#endif // // Unary operators @@ -279,6 +283,12 @@ enum TOperator { EOpConvUvec2ToPtr, EOpConvPtrToUvec2, + // uint64_t -> accelerationStructureEXT + EOpConvUint64ToAccStruct, + + // uvec2 -> accelerationStructureEXT + EOpConvUvec2ToAccStruct, + // // binary operations // @@ -586,6 +596,7 @@ enum TOperator { EOpTime, EOpAtomicAdd, + EOpAtomicSubtract, EOpAtomicMin, EOpAtomicMax, EOpAtomicAnd, @@ -621,17 +632,22 @@ enum TOperator { EOpIsHelperInvocation, + EOpDebugPrintf, + // // Branch // - EOpKill, // Fragment only + EOpKill, // Fragment only + EOpTerminateInvocation, // Fragment only + EOpDemote, // Fragment only + EOpTerminateRayKHR, // Any-hit only + EOpIgnoreIntersectionKHR, // Any-hit only EOpReturn, EOpBreak, EOpContinue, EOpCase, EOpDefault, - EOpDemote, // Fragment only // // Constructors @@ -748,6 +764,7 @@ enum TOperator { EOpConstructNonuniform, // expected to be transformed away, not present in final AST EOpConstructReference, EOpConstructCooperativeMatrix, + EOpConstructAccStruct, EOpConstructGuardEnd, // @@ -909,11 +926,43 @@ enum TOperator { EOpMul32x16, EOpTraceNV, - EOpReportIntersectionNV, + EOpTraceRayMotionNV, + EOpTraceKHR, + EOpReportIntersection, EOpIgnoreIntersectionNV, EOpTerminateRayNV, EOpExecuteCallableNV, + EOpExecuteCallableKHR, EOpWritePackedPrimitiveIndices4x8NV, + + // + // GL_EXT_ray_query operations + // + + EOpRayQueryInitialize, + EOpRayQueryTerminate, + EOpRayQueryGenerateIntersection, + EOpRayQueryConfirmIntersection, + EOpRayQueryProceed, + EOpRayQueryGetIntersectionType, + EOpRayQueryGetRayTMin, + EOpRayQueryGetRayFlags, + EOpRayQueryGetIntersectionT, + EOpRayQueryGetIntersectionInstanceCustomIndex, + EOpRayQueryGetIntersectionInstanceId, + EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset, + EOpRayQueryGetIntersectionGeometryIndex, + EOpRayQueryGetIntersectionPrimitiveIndex, + EOpRayQueryGetIntersectionBarycentrics, + EOpRayQueryGetIntersectionFrontFace, + EOpRayQueryGetIntersectionCandidateAABBOpaque, + EOpRayQueryGetIntersectionObjectRayDirection, + EOpRayQueryGetIntersectionObjectRayOrigin, + EOpRayQueryGetWorldRayDirection, + EOpRayQueryGetWorldRayOrigin, + EOpRayQueryGetIntersectionObjectToWorld, + EOpRayQueryGetIntersectionWorldToObject, + // // HLSL operations // @@ -1091,6 +1140,8 @@ class TIntermTyped : public TIntermNode { virtual TBasicType getBasicType() const { return type.getBasicType(); } virtual TQualifier& getQualifier() { return type.getQualifier(); } virtual const TQualifier& getQualifier() const { return type.getQualifier(); } + virtual TArraySizes* getArraySizes() { return type.getArraySizes(); } + virtual const TArraySizes* getArraySizes() const { return type.getArraySizes(); } virtual void propagatePrecision(TPrecisionQualifier); virtual int getVectorSize() const { return type.getVectorSize(); } virtual int getMatrixCols() const { return type.getMatrixCols(); } @@ -1104,7 +1155,7 @@ class TIntermTyped : public TIntermNode { virtual bool isIntegerDomain() const { return type.isIntegerDomain(); } bool isAtomic() const { return type.isAtomic(); } bool isReference() const { return type.isReference(); } - TString getCompleteString() const { return type.getCompleteString(); } + TString getCompleteString(bool enhanced = false) const { return type.getCompleteString(enhanced); } protected: TIntermTyped& operator=(const TIntermTyped&); @@ -1199,6 +1250,7 @@ class TIntermBranch : public TIntermNode { TOperator getFlowOp() const { return flowOp; } TIntermTyped* getExpression() const { return expression; } void setExpression(TIntermTyped* pExpression) { expression = pExpression; } + void updatePrecision(TPrecisionQualifier parentPrecision); protected: TOperator flowOp; TIntermTyped* expression; @@ -1230,15 +1282,15 @@ class TIntermSymbol : public TIntermTyped { // if symbol is initialized as symbol(sym), the memory comes from the pool allocator of sym. If sym comes from // per process threadPoolAllocator, then it causes increased memory usage per compile // it is essential to use "symbol = sym" to assign to symbol - TIntermSymbol(int i, const TString& n, const TType& t) + TIntermSymbol(long long i, const TString& n, const TType& t) : TIntermTyped(t), id(i), #ifndef GLSLANG_WEB flattenSubset(-1), #endif constSubtree(nullptr) { name = n; } - virtual int getId() const { return id; } - virtual void changeId(int i) { id = i; } + virtual long long getId() const { return id; } + virtual void changeId(long long i) { id = i; } virtual const TString& getName() const { return name; } virtual void traverse(TIntermTraverser*); virtual TIntermSymbol* getAsSymbolNode() { return this; } @@ -1249,15 +1301,17 @@ class TIntermSymbol : public TIntermTyped { TIntermTyped* getConstSubtree() const { return constSubtree; } #ifndef GLSLANG_WEB void setFlattenSubset(int subset) { flattenSubset = subset; } + virtual const TString& getAccessName() const; + int getFlattenSubset() const { return flattenSubset; } // -1 means full object #endif // This is meant for cases where a node has already been constructed, and // later on, it becomes necessary to switch to a different symbol. - virtual void switchId(int newId) { id = newId; } + virtual void switchId(long long newId) { id = newId; } protected: - int id; // the unique id of the symbol this node represents + long long id; // the unique id of the symbol this node represents #ifndef GLSLANG_WEB int flattenSubset; // how deeply the flattened object rooted at id has been dereferenced #endif @@ -1566,8 +1620,15 @@ class TIntermUnary : public TIntermOperator { virtual TIntermUnary* getAsUnaryNode() { return this; } virtual const TIntermUnary* getAsUnaryNode() const { return this; } virtual void updatePrecision(); +#ifndef GLSLANG_WEB + void setSpirvInstruction(const TSpirvInstruction& inst) { spirvInst = inst; } + const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; } +#endif protected: TIntermTyped* operand; +#ifndef GLSLANG_WEB + TSpirvInstruction spirvInst; +#endif }; typedef TVector TIntermSequence; @@ -1582,6 +1643,7 @@ class TIntermAggregate : public TIntermOperator { ~TIntermAggregate() { delete pragmaTable; } virtual TIntermAggregate* getAsAggregate() { return this; } virtual const TIntermAggregate* getAsAggregate() const { return this; } + virtual void updatePrecision(); virtual void setOperator(TOperator o) { op = o; } virtual TIntermSequence& getSequence() { return sequence; } virtual const TIntermSequence& getSequence() const { return sequence; } @@ -1598,6 +1660,10 @@ class TIntermAggregate : public TIntermOperator { bool getDebug() const { return debug; } void setPragmaTable(const TPragmaTable& pTable); const TPragmaTable& getPragmaTable() const { return *pragmaTable; } +#ifndef GLSLANG_WEB + void setSpirvInstruction(const TSpirvInstruction& inst) { spirvInst = inst; } + const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; } +#endif protected: TIntermAggregate(const TIntermAggregate&); // disallow copy constructor TIntermAggregate& operator=(const TIntermAggregate&); // disallow assignment operator @@ -1608,6 +1674,9 @@ class TIntermAggregate : public TIntermOperator { bool optimize; bool debug; TPragmaTable* pragmaTable; +#ifndef GLSLANG_WEB + TSpirvInstruction spirvInst; +#endif }; // @@ -1625,8 +1694,11 @@ class TIntermSelection : public TIntermTyped { flatten(false), dontFlatten(false) {} virtual void traverse(TIntermTraverser*); virtual TIntermTyped* getCondition() const { return condition; } + virtual void setCondition(TIntermTyped* c) { condition = c; } virtual TIntermNode* getTrueBlock() const { return trueBlock; } + virtual void setTrueBlock(TIntermTyped* tb) { trueBlock = tb; } virtual TIntermNode* getFalseBlock() const { return falseBlock; } + virtual void setFalseBlock(TIntermTyped* fb) { falseBlock = fb; } virtual TIntermSelection* getAsSelectionNode() { return this; } virtual const TIntermSelection* getAsSelectionNode() const { return this; } diff --git a/Externals/glslang/glslang/Include/revision.h b/Externals/glslang/glslang/Include/revision.h deleted file mode 100644 index a0e4b2066cb5..000000000000 --- a/Externals/glslang/glslang/Include/revision.h +++ /dev/null @@ -1,3 +0,0 @@ -// This header is generated by the make-revision script. - -#define GLSLANG_PATCH_LEVEL 3559 diff --git a/Externals/glslang/glslang/Include/revision.template b/Externals/glslang/glslang/Include/revision.template deleted file mode 100644 index 6c13630b27e6..000000000000 --- a/Externals/glslang/glslang/Include/revision.template +++ /dev/null @@ -1,13 +0,0 @@ -// The file revision.h should be updated to the latest version, somehow, on -// check-in, if glslang has changed. -// -// revision.template is the source for revision.h when using SubWCRev as the -// method of updating revision.h. You don't have to do it this way, the -// requirement is only that revision.h gets updated. -// -// revision.h is under source control so that not all consumers of glslang -// source have to figure out how to create revision.h just to get a build -// going. However, if it is not updated, it can be a version behind. - -#define GLSLANG_REVISION "$WCREV$" -#define GLSLANG_DATE "$WCDATE$" diff --git a/Externals/glslang/glslang/MachineIndependent/Constant.cpp b/Externals/glslang/glslang/MachineIndependent/Constant.cpp index 98c2666fbb77..5fc61dbb791d 100644 --- a/Externals/glslang/glslang/MachineIndependent/Constant.cpp +++ b/Externals/glslang/glslang/MachineIndependent/Constant.cpp @@ -2,7 +2,7 @@ // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. -// Copyright (C) 2018 Google, Inc. +// Copyright (C) 2018-2020 Google, Inc. // // All rights reserved. // @@ -46,35 +46,6 @@ namespace { using namespace glslang; -typedef union { - double d; - int i[2]; -} DoubleIntUnion; - -// Some helper functions - -bool isNan(double x) -{ - DoubleIntUnion u; - // tough to find a platform independent library function, do it directly - u.d = x; - int bitPatternL = u.i[0]; - int bitPatternH = u.i[1]; - return (bitPatternH & 0x7ff80000) == 0x7ff80000 && - ((bitPatternH & 0xFFFFF) != 0 || bitPatternL != 0); -} - -bool isInf(double x) -{ - DoubleIntUnion u; - // tough to find a platform independent library function, do it directly - u.d = x; - int bitPatternL = u.i[0]; - int bitPatternH = u.i[1]; - return (bitPatternH & 0x7ff00000) == 0x7ff00000 && - (bitPatternH & 0xFFFFF) == 0 && bitPatternL == 0; -} - const double pi = 3.1415926535897932384626433832795; } // end anonymous namespace @@ -529,7 +500,12 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EbtDouble: case EbtFloat16: case EbtFloat: newConstArray[i].setDConst(-unionArray[i].getDConst()); break; - case EbtInt: newConstArray[i].setIConst(-unionArray[i].getIConst()); break; + // Note: avoid UBSAN error regarding negating 0x80000000 + case EbtInt: newConstArray[i].setIConst( + static_cast(unionArray[i].getIConst()) == 0x80000000 + ? -0x7FFFFFFF - 1 + : -unionArray[i].getIConst()); + break; case EbtUint: newConstArray[i].setUConst(static_cast(-static_cast(unionArray[i].getUConst()))); break; #ifndef GLSLANG_WEB case EbtInt8: newConstArray[i].setI8Const(-unionArray[i].getI8Const()); break; @@ -599,17 +575,11 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) newConstArray[i].setDConst(log(unionArray[i].getDConst())); break; case EOpExp2: - { - const double inv_log2_e = 0.69314718055994530941723212145818; - newConstArray[i].setDConst(exp(unionArray[i].getDConst() * inv_log2_e)); - break; - } + newConstArray[i].setDConst(exp2(unionArray[i].getDConst())); + break; case EOpLog2: - { - const double log2_e = 1.4426950408889634073599246810019; - newConstArray[i].setDConst(log2_e * log(unionArray[i].getDConst())); - break; - } + newConstArray[i].setDConst(log2(unionArray[i].getDConst())); + break; case EOpSqrt: newConstArray[i].setDConst(sqrt(unionArray[i].getDConst())); break; @@ -664,12 +634,12 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EOpIsNan: { - newConstArray[i].setBConst(isNan(unionArray[i].getDConst())); + newConstArray[i].setBConst(IsNan(unionArray[i].getDConst())); break; } case EOpIsInf: { - newConstArray[i].setBConst(isInf(unionArray[i].getDConst())); + newConstArray[i].setBConst(IsInfinity(unionArray[i].getDConst())); break; } @@ -1012,6 +982,7 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) case EOpMin: case EOpMax: case EOpMix: + case EOpMod: case EOpClamp: case EOpLessThan: case EOpGreaterThan: @@ -1074,6 +1045,14 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) case EOpPow: newConstArray[comp].setDConst(pow(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst())); break; + case EOpMod: + { + double arg0 = childConstUnions[0][arg0comp].getDConst(); + double arg1 = childConstUnions[1][arg1comp].getDConst(); + double result = arg0 - arg1 * floor(arg0 / arg1); + newConstArray[comp].setDConst(result); + break; + } case EOpMin: switch(children[0]->getAsTyped()->getBasicType()) { case EbtFloat16: diff --git a/Externals/glslang/glslang/MachineIndependent/Initialize.cpp b/Externals/glslang/glslang/MachineIndependent/Initialize.cpp index de55742649ab..03fdce9f6bc9 100644 --- a/Externals/glslang/glslang/MachineIndependent/Initialize.cpp +++ b/Externals/glslang/glslang/MachineIndependent/Initialize.cpp @@ -1,8 +1,9 @@ // // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2016 LunarG, Inc. -// Copyright (C) 2015-2018 Google, Inc. +// Copyright (C) 2015-2020 Google, Inc. // Copyright (C) 2017 ARM Limited. +// Modifications Copyright (C) 2020-2021 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -125,8 +126,6 @@ enum ArgClass { }; // Mixtures of the above, to help the function tables const ArgClass ClassV1FIOCV = (ArgClass)(ClassV1 | ClassFIO | ClassCV); -const ArgClass ClassV1FOCV = (ArgClass)(ClassV1 | ClassFO | ClassCV); -const ArgClass ClassV1CV = (ArgClass)(ClassV1 | ClassCV); const ArgClass ClassBNS = (ArgClass)(ClassB | ClassNS); const ArgClass ClassRSNS = (ArgClass)(ClassRS | ClassNS); @@ -147,17 +146,21 @@ EProfile EDesktopProfile = static_cast(ENoProfile | ECoreProfile | ECo // Declare pointers to put into the table for versioning. #ifdef GLSLANG_WEB const Versioning* Es300Desktop130 = nullptr; - const Versioning* Es310Desktop430 = nullptr; + const Versioning* Es310Desktop420 = nullptr; +#elif defined(GLSLANG_ANGLE) + const Versioning* Es300Desktop130 = nullptr; + const Versioning* Es310Desktop420 = nullptr; + const Versioning* Es310Desktop450 = nullptr; #else const Versioning Es300Desktop130Version[] = { { EEsProfile, 0, 300, 0, nullptr }, { EDesktopProfile, 0, 130, 0, nullptr }, { EBadProfile } }; const Versioning* Es300Desktop130 = &Es300Desktop130Version[0]; - const Versioning Es310Desktop430Version[] = { { EEsProfile, 0, 310, 0, nullptr }, - { EDesktopProfile, 0, 430, 0, nullptr }, + const Versioning Es310Desktop420Version[] = { { EEsProfile, 0, 310, 0, nullptr }, + { EDesktopProfile, 0, 420, 0, nullptr }, { EBadProfile } }; - const Versioning* Es310Desktop430 = &Es310Desktop430Version[0]; + const Versioning* Es310Desktop420 = &Es310Desktop420Version[0]; const Versioning Es310Desktop450Version[] = { { EEsProfile, 0, 310, 0, nullptr }, { EDesktopProfile, 0, 450, 0, nullptr }, @@ -257,14 +260,14 @@ const BuiltInFunction BaseFunctions[] = { { EOpGreaterThanEqual, "greaterThanEqual", 2, TypeU, ClassBNS, Es300Desktop130 }, { EOpVectorEqual, "equal", 2, TypeU, ClassBNS, Es300Desktop130 }, { EOpVectorNotEqual, "notEqual", 2, TypeU, ClassBNS, Es300Desktop130 }, - { EOpAtomicAdd, "atomicAdd", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, - { EOpAtomicMin, "atomicMin", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, - { EOpAtomicMax, "atomicMax", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, - { EOpAtomicAnd, "atomicAnd", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, - { EOpAtomicOr, "atomicOr", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, - { EOpAtomicXor, "atomicXor", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, - { EOpAtomicExchange, "atomicExchange", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, - { EOpAtomicCompSwap, "atomicCompSwap", 3, TypeIU, ClassV1FIOCV, Es310Desktop430 }, + { EOpAtomicAdd, "atomicAdd", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, + { EOpAtomicMin, "atomicMin", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, + { EOpAtomicMax, "atomicMax", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, + { EOpAtomicAnd, "atomicAnd", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, + { EOpAtomicOr, "atomicOr", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, + { EOpAtomicXor, "atomicXor", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, + { EOpAtomicExchange, "atomicExchange", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, + { EOpAtomicCompSwap, "atomicCompSwap", 3, TypeIU, ClassV1FIOCV, Es310Desktop420 }, #ifndef GLSLANG_WEB { EOpMix, "mix", 3, TypeB, ClassRegular, Es310Desktop450 }, { EOpMix, "mix", 3, TypeIU, ClassLB, Es310Desktop450 }, @@ -313,6 +316,7 @@ const CustomFunction CustomFunctions[] = { { EOpTextureQuerySize, "textureSize", nullptr }, { EOpTextureQueryLod, "textureQueryLod", nullptr }, + { EOpTextureQueryLod, "textureQueryLOD", nullptr }, // extension GL_ARB_texture_query_lod { EOpTextureQueryLevels, "textureQueryLevels", nullptr }, { EOpTextureQuerySamples, "textureSamples", nullptr }, { EOpTexture, "texture", nullptr }, @@ -416,7 +420,7 @@ void AddTabledBuiltin(TString& decls, const BuiltInFunction& function) // See if the tabled versioning information allows the current version. bool ValidVersion(const BuiltInFunction& function, int version, EProfile profile, const SpvVersion& /* spVersion */) { -#ifdef GLSLANG_WEB +#if defined(GLSLANG_WEB) || defined(GLSLANG_ANGLE) // all entries in table are valid return true; #endif @@ -480,7 +484,8 @@ void TBuiltIns::relateTabledBuiltins(int /* version */, EProfile /* profile */, inline bool IncludeLegacy(int version, EProfile profile, const SpvVersion& spvVersion) { - return profile != EEsProfile && (version <= 130 || (spvVersion.spv == 0 && ARBCompatibility) || profile == ECompatibilityProfile); + return profile != EEsProfile && (version <= 130 || (spvVersion.spv == 0 && version == 140 && ARBCompatibility) || + profile == ECompatibilityProfile); } // Construct TBuiltInParseables base class. This can be used for language-common constructs. @@ -500,12 +505,14 @@ TBuiltIns::TBuiltIns() prefixes[EbtFloat] = ""; prefixes[EbtInt] = "i"; prefixes[EbtUint] = "u"; -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) prefixes[EbtFloat16] = "f16"; prefixes[EbtInt8] = "i8"; prefixes[EbtUint8] = "u8"; prefixes[EbtInt16] = "i16"; prefixes[EbtUint16] = "u16"; + prefixes[EbtInt64] = "i64"; + prefixes[EbtUint64] = "u64"; #endif postfixes[2] = "2"; @@ -517,7 +524,9 @@ TBuiltIns::TBuiltIns() dimMap[Esd3D] = 3; dimMap[EsdCube] = 3; #ifndef GLSLANG_WEB +#ifndef GLSLANG_ANGLE dimMap[Esd1D] = 1; +#endif dimMap[EsdRect] = 2; dimMap[EsdBuffer] = 1; dimMap[EsdSubpass] = 2; // potentially unused for now @@ -542,6 +551,9 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV #ifdef GLSLANG_WEB version = 310; profile = EEsProfile; +#elif defined(GLSLANG_ANGLE) + version = 450; + profile = ECoreProfile; #endif addTabledBuiltins(version, profile, spvVersion); @@ -587,6 +599,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "vec4 fwidthCoarse(vec4 p);" ); +#ifndef GLSLANG_ANGLE TString derivativesAndControl16bits ( "float16_t dFdx(float16_t);" "f16vec2 dFdx(f16vec2);" @@ -920,7 +933,203 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } - if (profile != EEsProfile && version >= 450) { + if (profile == EEsProfile && version >= 310) { // Explicit Types + commonBuiltins.append( + + "float64_t sqrt(float64_t);" + "f64vec2 sqrt(f64vec2);" + "f64vec3 sqrt(f64vec3);" + "f64vec4 sqrt(f64vec4);" + + "float64_t inversesqrt(float64_t);" + "f64vec2 inversesqrt(f64vec2);" + "f64vec3 inversesqrt(f64vec3);" + "f64vec4 inversesqrt(f64vec4);" + + "float64_t abs(float64_t);" + "f64vec2 abs(f64vec2);" + "f64vec3 abs(f64vec3);" + "f64vec4 abs(f64vec4);" + + "float64_t sign(float64_t);" + "f64vec2 sign(f64vec2);" + "f64vec3 sign(f64vec3);" + "f64vec4 sign(f64vec4);" + + "float64_t floor(float64_t);" + "f64vec2 floor(f64vec2);" + "f64vec3 floor(f64vec3);" + "f64vec4 floor(f64vec4);" + + "float64_t trunc(float64_t);" + "f64vec2 trunc(f64vec2);" + "f64vec3 trunc(f64vec3);" + "f64vec4 trunc(f64vec4);" + + "float64_t round(float64_t);" + "f64vec2 round(f64vec2);" + "f64vec3 round(f64vec3);" + "f64vec4 round(f64vec4);" + + "float64_t roundEven(float64_t);" + "f64vec2 roundEven(f64vec2);" + "f64vec3 roundEven(f64vec3);" + "f64vec4 roundEven(f64vec4);" + + "float64_t ceil(float64_t);" + "f64vec2 ceil(f64vec2);" + "f64vec3 ceil(f64vec3);" + "f64vec4 ceil(f64vec4);" + + "float64_t fract(float64_t);" + "f64vec2 fract(f64vec2);" + "f64vec3 fract(f64vec3);" + "f64vec4 fract(f64vec4);" + + "float64_t mod(float64_t, float64_t);" + "f64vec2 mod(f64vec2 , float64_t);" + "f64vec3 mod(f64vec3 , float64_t);" + "f64vec4 mod(f64vec4 , float64_t);" + "f64vec2 mod(f64vec2 , f64vec2);" + "f64vec3 mod(f64vec3 , f64vec3);" + "f64vec4 mod(f64vec4 , f64vec4);" + + "float64_t modf(float64_t, out float64_t);" + "f64vec2 modf(f64vec2, out f64vec2);" + "f64vec3 modf(f64vec3, out f64vec3);" + "f64vec4 modf(f64vec4, out f64vec4);" + + "float64_t min(float64_t, float64_t);" + "f64vec2 min(f64vec2, float64_t);" + "f64vec3 min(f64vec3, float64_t);" + "f64vec4 min(f64vec4, float64_t);" + "f64vec2 min(f64vec2, f64vec2);" + "f64vec3 min(f64vec3, f64vec3);" + "f64vec4 min(f64vec4, f64vec4);" + + "float64_t max(float64_t, float64_t);" + "f64vec2 max(f64vec2 , float64_t);" + "f64vec3 max(f64vec3 , float64_t);" + "f64vec4 max(f64vec4 , float64_t);" + "f64vec2 max(f64vec2 , f64vec2);" + "f64vec3 max(f64vec3 , f64vec3);" + "f64vec4 max(f64vec4 , f64vec4);" + + "float64_t clamp(float64_t, float64_t, float64_t);" + "f64vec2 clamp(f64vec2 , float64_t, float64_t);" + "f64vec3 clamp(f64vec3 , float64_t, float64_t);" + "f64vec4 clamp(f64vec4 , float64_t, float64_t);" + "f64vec2 clamp(f64vec2 , f64vec2 , f64vec2);" + "f64vec3 clamp(f64vec3 , f64vec3 , f64vec3);" + "f64vec4 clamp(f64vec4 , f64vec4 , f64vec4);" + + "float64_t mix(float64_t, float64_t, float64_t);" + "f64vec2 mix(f64vec2, f64vec2, float64_t);" + "f64vec3 mix(f64vec3, f64vec3, float64_t);" + "f64vec4 mix(f64vec4, f64vec4, float64_t);" + "f64vec2 mix(f64vec2, f64vec2, f64vec2);" + "f64vec3 mix(f64vec3, f64vec3, f64vec3);" + "f64vec4 mix(f64vec4, f64vec4, f64vec4);" + "float64_t mix(float64_t, float64_t, bool);" + "f64vec2 mix(f64vec2, f64vec2, bvec2);" + "f64vec3 mix(f64vec3, f64vec3, bvec3);" + "f64vec4 mix(f64vec4, f64vec4, bvec4);" + + "float64_t step(float64_t, float64_t);" + "f64vec2 step(f64vec2 , f64vec2);" + "f64vec3 step(f64vec3 , f64vec3);" + "f64vec4 step(f64vec4 , f64vec4);" + "f64vec2 step(float64_t, f64vec2);" + "f64vec3 step(float64_t, f64vec3);" + "f64vec4 step(float64_t, f64vec4);" + + "float64_t smoothstep(float64_t, float64_t, float64_t);" + "f64vec2 smoothstep(f64vec2 , f64vec2 , f64vec2);" + "f64vec3 smoothstep(f64vec3 , f64vec3 , f64vec3);" + "f64vec4 smoothstep(f64vec4 , f64vec4 , f64vec4);" + "f64vec2 smoothstep(float64_t, float64_t, f64vec2);" + "f64vec3 smoothstep(float64_t, float64_t, f64vec3);" + "f64vec4 smoothstep(float64_t, float64_t, f64vec4);" + + "float64_t length(float64_t);" + "float64_t length(f64vec2);" + "float64_t length(f64vec3);" + "float64_t length(f64vec4);" + + "float64_t distance(float64_t, float64_t);" + "float64_t distance(f64vec2 , f64vec2);" + "float64_t distance(f64vec3 , f64vec3);" + "float64_t distance(f64vec4 , f64vec4);" + + "float64_t dot(float64_t, float64_t);" + "float64_t dot(f64vec2 , f64vec2);" + "float64_t dot(f64vec3 , f64vec3);" + "float64_t dot(f64vec4 , f64vec4);" + + "f64vec3 cross(f64vec3, f64vec3);" + + "float64_t normalize(float64_t);" + "f64vec2 normalize(f64vec2);" + "f64vec3 normalize(f64vec3);" + "f64vec4 normalize(f64vec4);" + + "float64_t faceforward(float64_t, float64_t, float64_t);" + "f64vec2 faceforward(f64vec2, f64vec2, f64vec2);" + "f64vec3 faceforward(f64vec3, f64vec3, f64vec3);" + "f64vec4 faceforward(f64vec4, f64vec4, f64vec4);" + + "float64_t reflect(float64_t, float64_t);" + "f64vec2 reflect(f64vec2 , f64vec2 );" + "f64vec3 reflect(f64vec3 , f64vec3 );" + "f64vec4 reflect(f64vec4 , f64vec4 );" + + "float64_t refract(float64_t, float64_t, float64_t);" + "f64vec2 refract(f64vec2 , f64vec2 , float64_t);" + "f64vec3 refract(f64vec3 , f64vec3 , float64_t);" + "f64vec4 refract(f64vec4 , f64vec4 , float64_t);" + + "f64mat2 matrixCompMult(f64mat2, f64mat2);" + "f64mat3 matrixCompMult(f64mat3, f64mat3);" + "f64mat4 matrixCompMult(f64mat4, f64mat4);" + "f64mat2x3 matrixCompMult(f64mat2x3, f64mat2x3);" + "f64mat2x4 matrixCompMult(f64mat2x4, f64mat2x4);" + "f64mat3x2 matrixCompMult(f64mat3x2, f64mat3x2);" + "f64mat3x4 matrixCompMult(f64mat3x4, f64mat3x4);" + "f64mat4x2 matrixCompMult(f64mat4x2, f64mat4x2);" + "f64mat4x3 matrixCompMult(f64mat4x3, f64mat4x3);" + + "f64mat2 outerProduct(f64vec2, f64vec2);" + "f64mat3 outerProduct(f64vec3, f64vec3);" + "f64mat4 outerProduct(f64vec4, f64vec4);" + "f64mat2x3 outerProduct(f64vec3, f64vec2);" + "f64mat3x2 outerProduct(f64vec2, f64vec3);" + "f64mat2x4 outerProduct(f64vec4, f64vec2);" + "f64mat4x2 outerProduct(f64vec2, f64vec4);" + "f64mat3x4 outerProduct(f64vec4, f64vec3);" + "f64mat4x3 outerProduct(f64vec3, f64vec4);" + + "f64mat2 transpose(f64mat2);" + "f64mat3 transpose(f64mat3);" + "f64mat4 transpose(f64mat4);" + "f64mat2x3 transpose(f64mat3x2);" + "f64mat3x2 transpose(f64mat2x3);" + "f64mat2x4 transpose(f64mat4x2);" + "f64mat4x2 transpose(f64mat2x4);" + "f64mat3x4 transpose(f64mat4x3);" + "f64mat4x3 transpose(f64mat3x4);" + + "float64_t determinant(f64mat2);" + "float64_t determinant(f64mat3);" + "float64_t determinant(f64mat4);" + + "f64mat2 inverse(f64mat2);" + "f64mat3 inverse(f64mat3);" + "f64mat4 inverse(f64mat4);" + + "\n"); + } + + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { commonBuiltins.append( "int64_t abs(int64_t);" @@ -987,25 +1196,25 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "u64vec3 mix(u64vec3, u64vec3, bvec3);" "u64vec4 mix(u64vec4, u64vec4, bvec4);" - "int64_t doubleBitsToInt64(double);" - "i64vec2 doubleBitsToInt64(dvec2);" - "i64vec3 doubleBitsToInt64(dvec3);" - "i64vec4 doubleBitsToInt64(dvec4);" + "int64_t doubleBitsToInt64(float64_t);" + "i64vec2 doubleBitsToInt64(f64vec2);" + "i64vec3 doubleBitsToInt64(f64vec3);" + "i64vec4 doubleBitsToInt64(f64vec4);" - "uint64_t doubleBitsToUint64(double);" - "u64vec2 doubleBitsToUint64(dvec2);" - "u64vec3 doubleBitsToUint64(dvec3);" - "u64vec4 doubleBitsToUint64(dvec4);" + "uint64_t doubleBitsToUint64(float64_t);" + "u64vec2 doubleBitsToUint64(f64vec2);" + "u64vec3 doubleBitsToUint64(f64vec3);" + "u64vec4 doubleBitsToUint64(f64vec4);" - "double int64BitsToDouble(int64_t);" - "dvec2 int64BitsToDouble(i64vec2);" - "dvec3 int64BitsToDouble(i64vec3);" - "dvec4 int64BitsToDouble(i64vec4);" + "float64_t int64BitsToDouble(int64_t);" + "f64vec2 int64BitsToDouble(i64vec2);" + "f64vec3 int64BitsToDouble(i64vec3);" + "f64vec4 int64BitsToDouble(i64vec4);" - "double uint64BitsToDouble(uint64_t);" - "dvec2 uint64BitsToDouble(u64vec2);" - "dvec3 uint64BitsToDouble(u64vec3);" - "dvec4 uint64BitsToDouble(u64vec4);" + "float64_t uint64BitsToDouble(uint64_t);" + "f64vec2 uint64BitsToDouble(u64vec2);" + "f64vec3 uint64BitsToDouble(u64vec3);" + "f64vec4 uint64BitsToDouble(u64vec4);" "int64_t packInt2x32(ivec2);" "uint64_t packUint2x32(uvec2);" @@ -1054,6 +1263,16 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "bvec3 notEqual(u64vec3, u64vec3);" "bvec4 notEqual(u64vec4, u64vec4);" + "int64_t bitCount(int64_t);" + "i64vec2 bitCount(i64vec2);" + "i64vec3 bitCount(i64vec3);" + "i64vec4 bitCount(i64vec4);" + + "int64_t bitCount(uint64_t);" + "i64vec2 bitCount(u64vec2);" + "i64vec3 bitCount(u64vec3);" + "i64vec4 bitCount(u64vec4);" + "int64_t findLSB(int64_t);" "i64vec2 findLSB(i64vec2);" "i64vec3 findLSB(i64vec3);" @@ -1174,6 +1393,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n" ); } +#endif // !GLSLANG_ANGLE if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 430)) { @@ -1211,17 +1431,30 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } +#ifndef GLSLANG_ANGLE if (profile != EEsProfile && version >= 440) { commonBuiltins.append( "uint64_t atomicMin(coherent volatile inout uint64_t, uint64_t);" " int64_t atomicMin(coherent volatile inout int64_t, int64_t);" "uint64_t atomicMin(coherent volatile inout uint64_t, uint64_t, int, int, int);" " int64_t atomicMin(coherent volatile inout int64_t, int64_t, int, int, int);" + "float16_t atomicMin(coherent volatile inout float16_t, float16_t);" + "float16_t atomicMin(coherent volatile inout float16_t, float16_t, int, int, int);" + " float atomicMin(coherent volatile inout float, float);" + " float atomicMin(coherent volatile inout float, float, int, int, int);" + " double atomicMin(coherent volatile inout double, double);" + " double atomicMin(coherent volatile inout double, double, int, int, int);" "uint64_t atomicMax(coherent volatile inout uint64_t, uint64_t);" " int64_t atomicMax(coherent volatile inout int64_t, int64_t);" "uint64_t atomicMax(coherent volatile inout uint64_t, uint64_t, int, int, int);" " int64_t atomicMax(coherent volatile inout int64_t, int64_t, int, int, int);" + "float16_t atomicMax(coherent volatile inout float16_t, float16_t);" + "float16_t atomicMax(coherent volatile inout float16_t, float16_t, int, int, int);" + " float atomicMax(coherent volatile inout float, float);" + " float atomicMax(coherent volatile inout float, float, int, int, int);" + " double atomicMax(coherent volatile inout double, double);" + " double atomicMax(coherent volatile inout double, double, int, int, int);" "uint64_t atomicAnd(coherent volatile inout uint64_t, uint64_t);" " int64_t atomicAnd(coherent volatile inout int64_t, int64_t);" @@ -1242,11 +1475,23 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV " int64_t atomicAdd(coherent volatile inout int64_t, int64_t);" "uint64_t atomicAdd(coherent volatile inout uint64_t, uint64_t, int, int, int);" " int64_t atomicAdd(coherent volatile inout int64_t, int64_t, int, int, int);" + "float16_t atomicAdd(coherent volatile inout float16_t, float16_t);" + "float16_t atomicAdd(coherent volatile inout float16_t, float16_t, int, int, int);" + " float atomicAdd(coherent volatile inout float, float);" + " float atomicAdd(coherent volatile inout float, float, int, int, int);" + " double atomicAdd(coherent volatile inout double, double);" + " double atomicAdd(coherent volatile inout double, double, int, int, int);" "uint64_t atomicExchange(coherent volatile inout uint64_t, uint64_t);" " int64_t atomicExchange(coherent volatile inout int64_t, int64_t);" "uint64_t atomicExchange(coherent volatile inout uint64_t, uint64_t, int, int, int);" " int64_t atomicExchange(coherent volatile inout int64_t, int64_t, int, int, int);" + "float16_t atomicExchange(coherent volatile inout float16_t, float16_t);" + "float16_t atomicExchange(coherent volatile inout float16_t, float16_t, int, int, int);" + " float atomicExchange(coherent volatile inout float, float);" + " float atomicExchange(coherent volatile inout float, float, int, int, int);" + " double atomicExchange(coherent volatile inout double, double);" + " double atomicExchange(coherent volatile inout double, double, int, int, int);" "uint64_t atomicCompSwap(coherent volatile inout uint64_t, uint64_t, uint64_t);" " int64_t atomicCompSwap(coherent volatile inout int64_t, int64_t, int64_t);" @@ -1255,15 +1500,22 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "uint64_t atomicLoad(coherent volatile in uint64_t, int, int, int);" " int64_t atomicLoad(coherent volatile in int64_t, int, int, int);" + "float16_t atomicLoad(coherent volatile in float16_t, int, int, int);" + " float atomicLoad(coherent volatile in float, int, int, int);" + " double atomicLoad(coherent volatile in double, int, int, int);" "void atomicStore(coherent volatile out uint64_t, uint64_t, int, int, int);" "void atomicStore(coherent volatile out int64_t, int64_t, int, int, int);" + "void atomicStore(coherent volatile out float16_t, float16_t, int, int, int);" + "void atomicStore(coherent volatile out float, float, int, int, int);" + "void atomicStore(coherent volatile out double, double, int, int, int);" "\n"); } -#endif +#endif // !GLSLANG_ANGLE +#endif // !GLSLANG_WEB if ((profile == EEsProfile && version >= 300) || - (profile != EEsProfile && version >= 330)) { + (profile != EEsProfile && version >= 150)) { // GL_ARB_shader_bit_encoding commonBuiltins.append( "int floatBitsToInt(highp float value);" "ivec2 floatBitsToInt(highp vec2 value);" @@ -1300,6 +1552,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } +#ifndef GLSLANG_ANGLE if (profile != EEsProfile && version >= 150) { // ARB_gpu_shader_fp64 commonBuiltins.append( "double fma(double, double, double);" @@ -1309,6 +1562,16 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + if (profile == EEsProfile && version >= 310) { // ARB_gpu_shader_fp64 + commonBuiltins.append( + "float64_t fma(float64_t, float64_t, float64_t);" + "f64vec2 fma(f64vec2, f64vec2, f64vec2 );" + "f64vec3 fma(f64vec3, f64vec3, f64vec3 );" + "f64vec4 fma(f64vec4, f64vec4, f64vec4 );" + "\n"); + } +#endif + if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 400)) { commonBuiltins.append( @@ -1325,6 +1588,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } +#ifndef GLSLANG_ANGLE if (profile != EEsProfile && version >= 150) { // ARB_gpu_shader_fp64 commonBuiltins.append( "double frexp(double, out int);" @@ -1342,10 +1606,26 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + + if (profile == EEsProfile && version >= 310) { // ARB_gpu_shader_fp64 + commonBuiltins.append( + "float64_t frexp(float64_t, out int);" + "f64vec2 frexp( f64vec2, out ivec2);" + "f64vec3 frexp( f64vec3, out ivec3);" + "f64vec4 frexp( f64vec4, out ivec4);" + + "float64_t ldexp(float64_t, int);" + "f64vec2 ldexp( f64vec2, ivec2);" + "f64vec3 ldexp( f64vec3, ivec3);" + "f64vec4 ldexp( f64vec4, ivec4);" + + "\n"); + } +#endif #endif if ((profile == EEsProfile && version >= 300) || - (profile != EEsProfile && version >= 400)) { + (profile != EEsProfile && version >= 150)) { commonBuiltins.append( "highp uint packUnorm2x16(vec2);" "vec2 unpackUnorm2x16(highp uint);" @@ -1353,7 +1633,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } if ((profile == EEsProfile && version >= 300) || - (profile != EEsProfile && version >= 420)) { + (profile != EEsProfile && version >= 150)) { commonBuiltins.append( "highp uint packSnorm2x16(vec2);" " vec2 unpackSnorm2x16(highp uint);" @@ -1365,7 +1645,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV commonBuiltins.append( "mediump vec2 unpackHalf2x16(highp uint);" "\n"); - } else if (profile != EEsProfile && version >= 420) { + } else if (profile != EEsProfile && version >= 150) { commonBuiltins.append( " vec2 unpackHalf2x16(highp uint);" "\n"); @@ -1373,7 +1653,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV #ifndef GLSLANG_WEB if ((profile == EEsProfile && version >= 310) || - (profile != EEsProfile && version >= 400)) { + (profile != EEsProfile && version >= 150)) { commonBuiltins.append( "highp uint packSnorm4x8(vec4);" "highp uint packUnorm4x8(vec4);" @@ -1385,7 +1665,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "mediump vec4 unpackSnorm4x8(highp uint);" "mediump vec4 unpackUnorm4x8(highp uint);" "\n"); - } else if (profile != EEsProfile && version >= 400) { + } else if (profile != EEsProfile && version >= 150) { commonBuiltins.append( "vec4 unpackSnorm4x8(highp uint);" "vec4 unpackUnorm4x8(highp uint);" @@ -1451,6 +1731,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } #ifndef GLSLANG_WEB +#ifndef GLSLANG_ANGLE // // Original-style texture functions existing in all stages. // (Per-stage functions below.) @@ -1584,6 +1865,22 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + if (profile != EEsProfile && version == 450) { + commonBuiltins.append( + "uint atomicCounterAddARB(atomic_uint, uint);" + "uint atomicCounterSubtractARB(atomic_uint, uint);" + "uint atomicCounterMinARB(atomic_uint, uint);" + "uint atomicCounterMaxARB(atomic_uint, uint);" + "uint atomicCounterAndARB(atomic_uint, uint);" + "uint atomicCounterOrARB(atomic_uint, uint);" + "uint atomicCounterXorARB(atomic_uint, uint);" + "uint atomicCounterExchangeARB(atomic_uint, uint);" + "uint atomicCounterCompSwapARB(atomic_uint, uint, uint);" + + "\n"); + } + + if (profile != EEsProfile && version >= 460) { commonBuiltins.append( "uint atomicCounterAdd(atomic_uint, uint);" @@ -1599,6 +1896,37 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } } + else if (spvVersion.vulkanRelaxed) { + // + // Atomic counter functions act as aliases to normal atomic functions. + // replace definitions to take 'volatile coherent uint' instead of 'atomic_uint' + // and map to equivalent non-counter atomic op + // + if ((profile != EEsProfile && version >= 300) || + (profile == EEsProfile && version >= 310)) { + commonBuiltins.append( + "uint atomicCounterIncrement(volatile coherent uint);" + "uint atomicCounterDecrement(volatile coherent uint);" + "uint atomicCounter(volatile coherent uint);" + + "\n"); + } + if (profile != EEsProfile && version >= 460) { + commonBuiltins.append( + "uint atomicCounterAdd(volatile coherent uint, uint);" + "uint atomicCounterSubtract(volatile coherent uint, uint);" + "uint atomicCounterMin(volatile coherent uint, uint);" + "uint atomicCounterMax(volatile coherent uint, uint);" + "uint atomicCounterAnd(volatile coherent uint, uint);" + "uint atomicCounterOr(volatile coherent uint, uint);" + "uint atomicCounterXor(volatile coherent uint, uint);" + "uint atomicCounterExchange(volatile coherent uint, uint);" + "uint atomicCounterCompSwap(volatile coherent uint, uint, uint);" + + "\n"); + } + } +#endif // !GLSLANG_ANGLE // Bitfield if ((profile == EEsProfile && version >= 310) || @@ -1741,6 +2069,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } +#ifndef GLSLANG_ANGLE // GL_ARB_shader_ballot if (profile != EEsProfile && version >= 450) { commonBuiltins.append( @@ -3061,9 +3390,29 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "bool textureFootprintGradClampNV(sampler2D, vec2, vec2, vec2, float, int, bool, out gl_TextureFootprint2DNV);" "\n"); } +#endif // !GLSLANG_ANGLE + + if ((profile == EEsProfile && version >= 300 && version < 310) || + (profile != EEsProfile && version >= 150 && version < 450)) { // GL_EXT_shader_integer_mix + commonBuiltins.append("int mix(int, int, bool);" + "ivec2 mix(ivec2, ivec2, bvec2);" + "ivec3 mix(ivec3, ivec3, bvec3);" + "ivec4 mix(ivec4, ivec4, bvec4);" + "uint mix(uint, uint, bool );" + "uvec2 mix(uvec2, uvec2, bvec2);" + "uvec3 mix(uvec3, uvec3, bvec3);" + "uvec4 mix(uvec4, uvec4, bvec4);" + "bool mix(bool, bool, bool );" + "bvec2 mix(bvec2, bvec2, bvec2);" + "bvec3 mix(bvec3, bvec3, bvec3);" + "bvec4 mix(bvec4, bvec4, bvec4);" + + "\n"); + } +#ifndef GLSLANG_ANGLE // GL_AMD_gpu_shader_half_float/Explicit types - if (profile != EEsProfile && version >= 450) { + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { commonBuiltins.append( "float16_t radians(float16_t);" "f16vec2 radians(f16vec2);" @@ -3411,7 +3760,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } // Explicit types - if (profile != EEsProfile && version >= 450) { + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { commonBuiltins.append( "int8_t abs(int8_t);" "i8vec2 abs(i8vec2);" @@ -3811,129 +4160,31 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "u16vec4 unpack16(uint64_t);" "i32vec2 unpack32(int64_t);" "u32vec2 unpack32(uint64_t);" - - "float64_t radians(float64_t);" - "f64vec2 radians(f64vec2);" - "f64vec3 radians(f64vec3);" - "f64vec4 radians(f64vec4);" - - "float64_t degrees(float64_t);" - "f64vec2 degrees(f64vec2);" - "f64vec3 degrees(f64vec3);" - "f64vec4 degrees(f64vec4);" - - "float64_t sin(float64_t);" - "f64vec2 sin(f64vec2);" - "f64vec3 sin(f64vec3);" - "f64vec4 sin(f64vec4);" - - "float64_t cos(float64_t);" - "f64vec2 cos(f64vec2);" - "f64vec3 cos(f64vec3);" - "f64vec4 cos(f64vec4);" - - "float64_t tan(float64_t);" - "f64vec2 tan(f64vec2);" - "f64vec3 tan(f64vec3);" - "f64vec4 tan(f64vec4);" - - "float64_t asin(float64_t);" - "f64vec2 asin(f64vec2);" - "f64vec3 asin(f64vec3);" - "f64vec4 asin(f64vec4);" - - "float64_t acos(float64_t);" - "f64vec2 acos(f64vec2);" - "f64vec3 acos(f64vec3);" - "f64vec4 acos(f64vec4);" - - "float64_t atan(float64_t, float64_t);" - "f64vec2 atan(f64vec2, f64vec2);" - "f64vec3 atan(f64vec3, f64vec3);" - "f64vec4 atan(f64vec4, f64vec4);" - - "float64_t atan(float64_t);" - "f64vec2 atan(f64vec2);" - "f64vec3 atan(f64vec3);" - "f64vec4 atan(f64vec4);" - - "float64_t sinh(float64_t);" - "f64vec2 sinh(f64vec2);" - "f64vec3 sinh(f64vec3);" - "f64vec4 sinh(f64vec4);" - - "float64_t cosh(float64_t);" - "f64vec2 cosh(f64vec2);" - "f64vec3 cosh(f64vec3);" - "f64vec4 cosh(f64vec4);" - - "float64_t tanh(float64_t);" - "f64vec2 tanh(f64vec2);" - "f64vec3 tanh(f64vec3);" - "f64vec4 tanh(f64vec4);" - - "float64_t asinh(float64_t);" - "f64vec2 asinh(f64vec2);" - "f64vec3 asinh(f64vec3);" - "f64vec4 asinh(f64vec4);" - - "float64_t acosh(float64_t);" - "f64vec2 acosh(f64vec2);" - "f64vec3 acosh(f64vec3);" - "f64vec4 acosh(f64vec4);" - - "float64_t atanh(float64_t);" - "f64vec2 atanh(f64vec2);" - "f64vec3 atanh(f64vec3);" - "f64vec4 atanh(f64vec4);" - - "float64_t pow(float64_t, float64_t);" - "f64vec2 pow(f64vec2, f64vec2);" - "f64vec3 pow(f64vec3, f64vec3);" - "f64vec4 pow(f64vec4, f64vec4);" - - "float64_t exp(float64_t);" - "f64vec2 exp(f64vec2);" - "f64vec3 exp(f64vec3);" - "f64vec4 exp(f64vec4);" - - "float64_t log(float64_t);" - "f64vec2 log(f64vec2);" - "f64vec3 log(f64vec3);" - "f64vec4 log(f64vec4);" - - "float64_t exp2(float64_t);" - "f64vec2 exp2(f64vec2);" - "f64vec3 exp2(f64vec3);" - "f64vec4 exp2(f64vec4);" - - "float64_t log2(float64_t);" - "f64vec2 log2(f64vec2);" - "f64vec3 log2(f64vec3);" - "f64vec4 log2(f64vec4);" "\n"); - } - if (profile != EEsProfile && version >= 450) { - stageBuiltins[EShLangFragment].append(derivativesAndControl64bits); - stageBuiltins[EShLangFragment].append( - "float64_t interpolateAtCentroid(float64_t);" - "f64vec2 interpolateAtCentroid(f64vec2);" - "f64vec3 interpolateAtCentroid(f64vec3);" - "f64vec4 interpolateAtCentroid(f64vec4);" + } - "float64_t interpolateAtSample(float64_t, int);" - "f64vec2 interpolateAtSample(f64vec2, int);" - "f64vec3 interpolateAtSample(f64vec3, int);" - "f64vec4 interpolateAtSample(f64vec4, int);" + if (profile != EEsProfile && version >= 450) { + stageBuiltins[EShLangFragment].append(derivativesAndControl64bits); + stageBuiltins[EShLangFragment].append( + "float64_t interpolateAtCentroid(float64_t);" + "f64vec2 interpolateAtCentroid(f64vec2);" + "f64vec3 interpolateAtCentroid(f64vec3);" + "f64vec4 interpolateAtCentroid(f64vec4);" - "float64_t interpolateAtOffset(float64_t, f64vec2);" - "f64vec2 interpolateAtOffset(f64vec2, f64vec2);" - "f64vec3 interpolateAtOffset(f64vec3, f64vec2);" - "f64vec4 interpolateAtOffset(f64vec4, f64vec2);" + "float64_t interpolateAtSample(float64_t, int);" + "f64vec2 interpolateAtSample(f64vec2, int);" + "f64vec3 interpolateAtSample(f64vec3, int);" + "f64vec4 interpolateAtSample(f64vec4, int);" - "\n"); + "float64_t interpolateAtOffset(float64_t, f64vec2);" + "f64vec2 interpolateAtOffset(f64vec2, f64vec2);" + "f64vec3 interpolateAtOffset(f64vec3, f64vec2);" + "f64vec4 interpolateAtOffset(f64vec4, f64vec2);" + + "\n"); } +#endif // !GLSLANG_ANGLE //============================================================================ // @@ -3949,6 +4200,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV if (spvVersion.vulkan == 0 && IncludeLegacy(version, profile, spvVersion)) stageBuiltins[EShLangVertex].append("vec4 ftransform();"); +#ifndef GLSLANG_ANGLE // // Original-style texture Functions with lod. // @@ -4008,6 +4260,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } } +#endif // !GLSLANG_ANGLE if ((profile != EEsProfile && version >= 150) || (profile == EEsProfile && version >= 310)) { @@ -4017,7 +4270,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV // //============================================================================ - if (profile != EEsProfile && version >= 400) { + if (profile != EEsProfile && (version >= 400 || version == 150)) { stageBuiltins[EShLangGeometry].append( "void EmitStreamVertex(int);" "void EndStreamPrimitive(int);" @@ -4028,7 +4281,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void EndPrimitive();" "\n"); } -#endif +#endif // !GLSLANG_WEB //============================================================================ // @@ -4067,10 +4320,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } #ifndef GLSLANG_WEB if ((profile != EEsProfile && version >= 420) || esBarrier) { - commonBuiltins.append( - "void memoryBarrierAtomicCounter();" - "void memoryBarrierImage();" - ); + if (spvVersion.vulkan == 0 || spvVersion.vulkanRelaxed) { + commonBuiltins.append("void memoryBarrierAtomicCounter();"); + } + commonBuiltins.append("void memoryBarrierImage();"); } if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { stageBuiltins[EShLangMeshNV].append( @@ -4086,6 +4339,9 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV commonBuiltins.append("void controlBarrier(int, int, int, int);\n" "void memoryBarrier(int, int, int);\n"); + commonBuiltins.append("void debugPrintfEXT();\n"); + +#ifndef GLSLANG_ANGLE if (profile != EEsProfile && version >= 450) { // coopMatStoreNV perhaps ought to have "out" on the buf parameter, but // adding it introduces undesirable tempArgs on the stack. What we want @@ -4209,6 +4465,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } +#endif // !GLSLANG_ANGLE // GL_ARB_derivative_control if (profile != EEsProfile && version >= 400) { @@ -4246,6 +4503,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "bool helperInvocationEXT();" "\n"); +#ifndef GLSLANG_ANGLE // GL_AMD_shader_explicit_vertex_parameter if (profile != EEsProfile && version >= 450) { stageBuiltins[EShLangFragment].append( @@ -4296,7 +4554,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } - // GL_ARB_shader_clock & GL_EXT_shader_realtime_clock + // GL_ARB_shader_clock& GL_EXT_shader_realtime_clock if (profile != EEsProfile && version >= 450) { commonBuiltins.append( "uvec2 clock2x32ARB();" @@ -4320,37 +4578,75 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } - // Builtins for GL_NV_ray_tracing + // Builtins for GL_NV_ray_tracing/GL_NV_ray_tracing_motion_blur/GL_EXT_ray_tracing/GL_EXT_ray_query if (profile != EEsProfile && version >= 460) { - stageBuiltins[EShLangRayGenNV].append( + commonBuiltins.append("void rayQueryInitializeEXT(rayQueryEXT, accelerationStructureEXT, uint, uint, vec3, float, vec3, float);" + "void rayQueryTerminateEXT(rayQueryEXT);" + "void rayQueryGenerateIntersectionEXT(rayQueryEXT, float);" + "void rayQueryConfirmIntersectionEXT(rayQueryEXT);" + "bool rayQueryProceedEXT(rayQueryEXT);" + "uint rayQueryGetIntersectionTypeEXT(rayQueryEXT, bool);" + "float rayQueryGetRayTMinEXT(rayQueryEXT);" + "uint rayQueryGetRayFlagsEXT(rayQueryEXT);" + "vec3 rayQueryGetWorldRayOriginEXT(rayQueryEXT);" + "vec3 rayQueryGetWorldRayDirectionEXT(rayQueryEXT);" + "float rayQueryGetIntersectionTEXT(rayQueryEXT, bool);" + "int rayQueryGetIntersectionInstanceCustomIndexEXT(rayQueryEXT, bool);" + "int rayQueryGetIntersectionInstanceIdEXT(rayQueryEXT, bool);" + "uint rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQueryEXT, bool);" + "int rayQueryGetIntersectionGeometryIndexEXT(rayQueryEXT, bool);" + "int rayQueryGetIntersectionPrimitiveIndexEXT(rayQueryEXT, bool);" + "vec2 rayQueryGetIntersectionBarycentricsEXT(rayQueryEXT, bool);" + "bool rayQueryGetIntersectionFrontFaceEXT(rayQueryEXT, bool);" + "bool rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQueryEXT);" + "vec3 rayQueryGetIntersectionObjectRayDirectionEXT(rayQueryEXT, bool);" + "vec3 rayQueryGetIntersectionObjectRayOriginEXT(rayQueryEXT, bool);" + "mat4x3 rayQueryGetIntersectionObjectToWorldEXT(rayQueryEXT, bool);" + "mat4x3 rayQueryGetIntersectionWorldToObjectEXT(rayQueryEXT, bool);" + "\n"); + + stageBuiltins[EShLangRayGen].append( "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" + "void traceRayMotionNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" + "void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" "void executeCallableNV(uint, int);" + "void executeCallableEXT(uint, int);" "\n"); - stageBuiltins[EShLangIntersectNV].append( + stageBuiltins[EShLangIntersect].append( "bool reportIntersectionNV(float, uint);" + "bool reportIntersectionEXT(float, uint);" "\n"); - stageBuiltins[EShLangAnyHitNV].append( + stageBuiltins[EShLangAnyHit].append( "void ignoreIntersectionNV();" "void terminateRayNV();" "\n"); - stageBuiltins[EShLangClosestHitNV].append( + stageBuiltins[EShLangClosestHit].append( "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" + "void traceRayMotionNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" + "void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" "void executeCallableNV(uint, int);" + "void executeCallableEXT(uint, int);" "\n"); - stageBuiltins[EShLangMissNV].append( + stageBuiltins[EShLangMiss].append( "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" + "void traceRayMotionNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" + "void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" "void executeCallableNV(uint, int);" + "void executeCallableEXT(uint, int);" "\n"); - stageBuiltins[EShLangCallableNV].append( + stageBuiltins[EShLangCallable].append( "void executeCallableNV(uint, int);" + "void executeCallableEXT(uint, int);" "\n"); } +#endif // !GLSLANG_ANGLE //E_SPV_NV_compute_shader_derivatives if ((profile == EEsProfile && version >= 320) || (profile != EEsProfile && version >= 450)) { stageBuiltins[EShLangCompute].append(derivativeControls); stageBuiltins[EShLangCompute].append("\n"); } +#ifndef GLSLANG_ANGLE if (profile != EEsProfile && version >= 450) { stageBuiltins[EShLangCompute].append(derivativesAndControl16bits); stageBuiltins[EShLangCompute].append(derivativesAndControl64bits); @@ -4363,7 +4659,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void writePackedPrimitiveIndices4x8NV(uint, uint);" "\n"); } -#endif +#endif // !GLSLANG_ANGLE +#endif // !GLSLANG_WEB //============================================================================ // @@ -4400,7 +4697,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) if (spvVersion.spv == 0 && IncludeLegacy(version, profile, spvVersion)) { // // Matrix state. p. 31, 32, 37, 39, 40. @@ -4518,7 +4815,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#endif +#endif // !GLSLANG_WEB && !GLSLANG_ANGLE //============================================================================ // @@ -4549,6 +4846,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } #ifndef GLSLANG_WEB +#ifndef GLSLANG_ANGLE //============================================================================ // // Define the interface to the mesh/task shader. @@ -4636,6 +4934,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } } +#endif // !GLSLANG_ANGLE //============================================================================ // @@ -4748,6 +5047,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in int gl_VertexIndex;" "in int gl_InstanceIndex;" ); + + if (spvVersion.vulkan > 0 && version >= 140 && spvVersion.vulkanRelaxed) + stageBuiltins[EShLangVertex].append( + "in int gl_VertexID;" // declare with 'in' qualifier + "in int gl_InstanceID;" + ); + if (version >= 440) { stageBuiltins[EShLangVertex].append( "in int gl_BaseVertexARB;" @@ -4769,9 +5075,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV ); } - if (version >= 450) + if (version >= 430) stageBuiltins[EShLangVertex].append( "out int gl_ViewportMask[];" // GL_NV_viewport_array2 + ); + + if (version >= 450) + stageBuiltins[EShLangVertex].append( "out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering "out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes @@ -4785,7 +5095,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "mediump float gl_PointSize;" // needs qualifier fixed later ); } else { - if (spvVersion.vulkan == 0) + if (spvVersion.vulkan == 0 || spvVersion.vulkanRelaxed) stageBuiltins[EShLangVertex].append( "in highp int gl_VertexID;" // needs qualifier fixed later "in highp int gl_InstanceID;" // needs qualifier fixed later @@ -4828,6 +5138,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { + stageBuiltins[EShLangVertex].append( + "out highp int gl_PrimitiveShadingRateEXT;" // GL_EXT_fragment_shading_rate + "\n"); + } //============================================================================ // @@ -4902,9 +5217,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in int gl_InvocationID;" ); - if (version >= 450) + if (version >= 430) stageBuiltins[EShLangGeometry].append( "out int gl_ViewportMask[];" // GL_NV_viewport_array2 + ); + + if (version >= 450) + stageBuiltins[EShLangGeometry].append( "out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering "out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes @@ -4941,6 +5260,12 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { + stageBuiltins[EShLangGeometry].append( + "out highp int gl_PrimitiveShadingRateEXT;" // GL_EXT_fragment_shading_rate + "\n"); + } + //============================================================================ // // Define the interface to the tessellation control shader. @@ -4974,7 +5299,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV if (version >= 450) stageBuiltins[EShLangTessControl].append( "float gl_CullDistance[];" + ); + if (version >= 430) + stageBuiltins[EShLangTessControl].append( "int gl_ViewportMask[];" // GL_NV_viewport_array2 + ); + if (version >= 450) + stageBuiltins[EShLangTessControl].append( "vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering "vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes @@ -5077,9 +5408,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "out int gl_Layer;" "\n"); - if (version >= 450) + if (version >= 430) stageBuiltins[EShLangTessEvaluation].append( "out int gl_ViewportMask[];" // GL_NV_viewport_array2 + ); + + if (version >= 450) + stageBuiltins[EShLangTessEvaluation].append( "out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering "out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes @@ -5238,6 +5573,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in vec3 gl_BaryCoordNoPerspNV;" ); + if (version >= 450) + stageBuiltins[EShLangFragment].append( + "flat in int gl_ShadingRateEXT;" // GL_EXT_fragment_shading_rate + ); + } else { // ES profile @@ -5296,6 +5636,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in vec3 gl_BaryCoordNV;" "in vec3 gl_BaryCoordNoPerspNV;" ); + if (version >= 310) + stageBuiltins[EShLangFragment].append( + "flat in highp int gl_ShadingRateEXT;" // GL_EXT_fragment_shading_rate + ); } #endif @@ -5306,6 +5650,21 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV #ifndef GLSLANG_WEB + if ((profile != EEsProfile && version >= 140) || + (profile == EEsProfile && version >= 310)) { + stageBuiltins[EShLangFragment].append( + "flat in highp int gl_DeviceIndex;" // GL_EXT_device_group + "flat in highp int gl_ViewIndex;" // GL_EXT_multiview + "\n"); + } + + if (version >= 300 /* both ES and non-ES */) { + stageBuiltins[EShLangFragment].append( + "flat in highp uint gl_ViewID_OVR;" // GL_OVR_multiview, GL_OVR_multiview2 + "\n"); + } + +#ifndef GLSLANG_ANGLE // GL_ARB_shader_ballot if (profile != EEsProfile && version >= 450) { const char* ballotDecls = @@ -5317,6 +5676,15 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in uint64_t gl_SubGroupLeMaskARB;" "in uint64_t gl_SubGroupLtMaskARB;" "\n"; + const char* rtBallotDecls = + "uniform volatile uint gl_SubGroupSizeARB;" + "in volatile uint gl_SubGroupInvocationARB;" + "in volatile uint64_t gl_SubGroupEqMaskARB;" + "in volatile uint64_t gl_SubGroupGeMaskARB;" + "in volatile uint64_t gl_SubGroupGtMaskARB;" + "in volatile uint64_t gl_SubGroupLeMaskARB;" + "in volatile uint64_t gl_SubGroupLtMaskARB;" + "\n"; const char* fragmentBallotDecls = "uniform uint gl_SubGroupSizeARB;" "flat in uint gl_SubGroupInvocationARB;" @@ -5334,14 +5702,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangFragment] .append(fragmentBallotDecls); stageBuiltins[EShLangMeshNV] .append(ballotDecls); stageBuiltins[EShLangTaskNV] .append(ballotDecls); - } - - if ((profile != EEsProfile && version >= 140) || - (profile == EEsProfile && version >= 310)) { - stageBuiltins[EShLangFragment].append( - "flat in highp int gl_DeviceIndex;" // GL_EXT_device_group - "flat in highp int gl_ViewIndex;" // GL_EXT_multiview - "\n"); + stageBuiltins[EShLangRayGen] .append(rtBallotDecls); + stageBuiltins[EShLangIntersect] .append(rtBallotDecls); + // No volatile qualifier on these builtins in any-hit + stageBuiltins[EShLangAnyHit] .append(ballotDecls); + stageBuiltins[EShLangClosestHit] .append(rtBallotDecls); + stageBuiltins[EShLangMiss] .append(rtBallotDecls); + stageBuiltins[EShLangCallable] .append(rtBallotDecls); } // GL_KHR_shader_subgroup @@ -5379,6 +5746,21 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in highp uint gl_NumSubgroups;" "in highp uint gl_SubgroupID;" "\n"; + // These builtins are volatile for RT stages + const char* rtSubgroupDecls = + "in mediump volatile uint gl_SubgroupSize;" + "in mediump volatile uint gl_SubgroupInvocationID;" + "in highp volatile uvec4 gl_SubgroupEqMask;" + "in highp volatile uvec4 gl_SubgroupGeMask;" + "in highp volatile uvec4 gl_SubgroupGtMask;" + "in highp volatile uvec4 gl_SubgroupLeMask;" + "in highp volatile uvec4 gl_SubgroupLtMask;" + // GL_NV_shader_sm_builtins + "in highp uint gl_WarpsPerSMNV;" + "in highp uint gl_SMCountNV;" + "in highp volatile uint gl_WarpIDNV;" + "in highp volatile uint gl_SMIDNV;" + "\n"; stageBuiltins[EShLangVertex] .append(subgroupDecls); stageBuiltins[EShLangTessControl] .append(subgroupDecls); @@ -5391,118 +5773,177 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangMeshNV] .append(computeSubgroupDecls); stageBuiltins[EShLangTaskNV] .append(subgroupDecls); stageBuiltins[EShLangTaskNV] .append(computeSubgroupDecls); - stageBuiltins[EShLangRayGenNV] .append(subgroupDecls); - stageBuiltins[EShLangIntersectNV] .append(subgroupDecls); - stageBuiltins[EShLangAnyHitNV] .append(subgroupDecls); - stageBuiltins[EShLangClosestHitNV] .append(subgroupDecls); - stageBuiltins[EShLangMissNV] .append(subgroupDecls); - stageBuiltins[EShLangCallableNV] .append(subgroupDecls); + stageBuiltins[EShLangRayGen] .append(rtSubgroupDecls); + stageBuiltins[EShLangIntersect] .append(rtSubgroupDecls); + // No volatile qualifier on these builtins in any-hit + stageBuiltins[EShLangAnyHit] .append(subgroupDecls); + stageBuiltins[EShLangClosestHit] .append(rtSubgroupDecls); + stageBuiltins[EShLangMiss] .append(rtSubgroupDecls); + stageBuiltins[EShLangCallable] .append(rtSubgroupDecls); } - // GL_NV_ray_tracing + // GL_NV_ray_tracing/GL_EXT_ray_tracing if (profile != EEsProfile && version >= 460) { const char *constRayFlags = "const uint gl_RayFlagsNoneNV = 0U;" + "const uint gl_RayFlagsNoneEXT = 0U;" "const uint gl_RayFlagsOpaqueNV = 1U;" + "const uint gl_RayFlagsOpaqueEXT = 1U;" "const uint gl_RayFlagsNoOpaqueNV = 2U;" + "const uint gl_RayFlagsNoOpaqueEXT = 2U;" "const uint gl_RayFlagsTerminateOnFirstHitNV = 4U;" + "const uint gl_RayFlagsTerminateOnFirstHitEXT = 4U;" "const uint gl_RayFlagsSkipClosestHitShaderNV = 8U;" + "const uint gl_RayFlagsSkipClosestHitShaderEXT = 8U;" "const uint gl_RayFlagsCullBackFacingTrianglesNV = 16U;" + "const uint gl_RayFlagsCullBackFacingTrianglesEXT = 16U;" "const uint gl_RayFlagsCullFrontFacingTrianglesNV = 32U;" + "const uint gl_RayFlagsCullFrontFacingTrianglesEXT = 32U;" "const uint gl_RayFlagsCullOpaqueNV = 64U;" + "const uint gl_RayFlagsCullOpaqueEXT = 64U;" "const uint gl_RayFlagsCullNoOpaqueNV = 128U;" + "const uint gl_RayFlagsCullNoOpaqueEXT = 128U;" + "const uint gl_RayFlagsSkipTrianglesEXT = 256U;" + "const uint gl_RayFlagsSkipAABBEXT = 512U;" + "const uint gl_HitKindFrontFacingTriangleEXT = 254U;" + "const uint gl_HitKindBackFacingTriangleEXT = 255U;" "\n"; + + const char *constRayQueryIntersection = + "const uint gl_RayQueryCandidateIntersectionEXT = 0U;" + "const uint gl_RayQueryCommittedIntersectionEXT = 1U;" + "const uint gl_RayQueryCommittedIntersectionNoneEXT = 0U;" + "const uint gl_RayQueryCommittedIntersectionTriangleEXT = 1U;" + "const uint gl_RayQueryCommittedIntersectionGeneratedEXT = 2U;" + "const uint gl_RayQueryCandidateIntersectionTriangleEXT = 0U;" + "const uint gl_RayQueryCandidateIntersectionAABBEXT = 1U;" + "\n"; + const char *rayGenDecls = "in uvec3 gl_LaunchIDNV;" + "in uvec3 gl_LaunchIDEXT;" "in uvec3 gl_LaunchSizeNV;" + "in uvec3 gl_LaunchSizeEXT;" "\n"; const char *intersectDecls = "in uvec3 gl_LaunchIDNV;" + "in uvec3 gl_LaunchIDEXT;" "in uvec3 gl_LaunchSizeNV;" + "in uvec3 gl_LaunchSizeEXT;" "in int gl_PrimitiveID;" "in int gl_InstanceID;" "in int gl_InstanceCustomIndexNV;" + "in int gl_InstanceCustomIndexEXT;" + "in int gl_GeometryIndexEXT;" "in vec3 gl_WorldRayOriginNV;" + "in vec3 gl_WorldRayOriginEXT;" "in vec3 gl_WorldRayDirectionNV;" + "in vec3 gl_WorldRayDirectionEXT;" "in vec3 gl_ObjectRayOriginNV;" + "in vec3 gl_ObjectRayOriginEXT;" "in vec3 gl_ObjectRayDirectionNV;" + "in vec3 gl_ObjectRayDirectionEXT;" "in float gl_RayTminNV;" + "in float gl_RayTminEXT;" "in float gl_RayTmaxNV;" + "in volatile float gl_RayTmaxEXT;" "in mat4x3 gl_ObjectToWorldNV;" + "in mat4x3 gl_ObjectToWorldEXT;" + "in mat3x4 gl_ObjectToWorld3x4EXT;" "in mat4x3 gl_WorldToObjectNV;" + "in mat4x3 gl_WorldToObjectEXT;" + "in mat3x4 gl_WorldToObject3x4EXT;" "in uint gl_IncomingRayFlagsNV;" + "in uint gl_IncomingRayFlagsEXT;" + "in float gl_CurrentRayTimeNV;" "\n"; const char *hitDecls = "in uvec3 gl_LaunchIDNV;" + "in uvec3 gl_LaunchIDEXT;" "in uvec3 gl_LaunchSizeNV;" + "in uvec3 gl_LaunchSizeEXT;" "in int gl_PrimitiveID;" "in int gl_InstanceID;" "in int gl_InstanceCustomIndexNV;" + "in int gl_InstanceCustomIndexEXT;" + "in int gl_GeometryIndexEXT;" "in vec3 gl_WorldRayOriginNV;" + "in vec3 gl_WorldRayOriginEXT;" "in vec3 gl_WorldRayDirectionNV;" + "in vec3 gl_WorldRayDirectionEXT;" "in vec3 gl_ObjectRayOriginNV;" + "in vec3 gl_ObjectRayOriginEXT;" "in vec3 gl_ObjectRayDirectionNV;" + "in vec3 gl_ObjectRayDirectionEXT;" "in float gl_RayTminNV;" + "in float gl_RayTminEXT;" "in float gl_RayTmaxNV;" + "in float gl_RayTmaxEXT;" "in float gl_HitTNV;" + "in float gl_HitTEXT;" "in uint gl_HitKindNV;" + "in uint gl_HitKindEXT;" "in mat4x3 gl_ObjectToWorldNV;" + "in mat4x3 gl_ObjectToWorldEXT;" + "in mat3x4 gl_ObjectToWorld3x4EXT;" "in mat4x3 gl_WorldToObjectNV;" + "in mat4x3 gl_WorldToObjectEXT;" + "in mat3x4 gl_WorldToObject3x4EXT;" "in uint gl_IncomingRayFlagsNV;" + "in uint gl_IncomingRayFlagsEXT;" + "in float gl_CurrentRayTimeNV;" "\n"; const char *missDecls = "in uvec3 gl_LaunchIDNV;" + "in uvec3 gl_LaunchIDEXT;" "in uvec3 gl_LaunchSizeNV;" + "in uvec3 gl_LaunchSizeEXT;" "in vec3 gl_WorldRayOriginNV;" + "in vec3 gl_WorldRayOriginEXT;" "in vec3 gl_WorldRayDirectionNV;" + "in vec3 gl_WorldRayDirectionEXT;" "in vec3 gl_ObjectRayOriginNV;" "in vec3 gl_ObjectRayDirectionNV;" "in float gl_RayTminNV;" + "in float gl_RayTminEXT;" "in float gl_RayTmaxNV;" + "in float gl_RayTmaxEXT;" "in uint gl_IncomingRayFlagsNV;" + "in uint gl_IncomingRayFlagsEXT;" + "in float gl_CurrentRayTimeNV;" "\n"; const char *callableDecls = "in uvec3 gl_LaunchIDNV;" + "in uvec3 gl_LaunchIDEXT;" "in uvec3 gl_LaunchSizeNV;" + "in uvec3 gl_LaunchSizeEXT;" "\n"; - stageBuiltins[EShLangRayGenNV].append(rayGenDecls); - stageBuiltins[EShLangRayGenNV].append(constRayFlags); - stageBuiltins[EShLangIntersectNV].append(intersectDecls); - stageBuiltins[EShLangIntersectNV].append(constRayFlags); + commonBuiltins.append(constRayQueryIntersection); + commonBuiltins.append(constRayFlags); - stageBuiltins[EShLangAnyHitNV].append(hitDecls); - stageBuiltins[EShLangAnyHitNV].append(constRayFlags); - - stageBuiltins[EShLangClosestHitNV].append(hitDecls); - stageBuiltins[EShLangClosestHitNV].append(constRayFlags); - - stageBuiltins[EShLangMissNV].append(missDecls); - stageBuiltins[EShLangMissNV].append(constRayFlags); - - stageBuiltins[EShLangCallableNV].append(callableDecls); - stageBuiltins[EShLangCallableNV].append(constRayFlags); + stageBuiltins[EShLangRayGen].append(rayGenDecls); + stageBuiltins[EShLangIntersect].append(intersectDecls); + stageBuiltins[EShLangAnyHit].append(hitDecls); + stageBuiltins[EShLangClosestHit].append(hitDecls); + stageBuiltins[EShLangMiss].append(missDecls); + stageBuiltins[EShLangCallable].append(callableDecls); } + if ((profile != EEsProfile && version >= 140)) { const char *deviceIndex = "in highp int gl_DeviceIndex;" // GL_EXT_device_group "\n"; - stageBuiltins[EShLangRayGenNV].append(deviceIndex); - stageBuiltins[EShLangIntersectNV].append(deviceIndex); - stageBuiltins[EShLangAnyHitNV].append(deviceIndex); - stageBuiltins[EShLangClosestHitNV].append(deviceIndex); - stageBuiltins[EShLangMissNV].append(deviceIndex); - } - - if (version >= 300 /* both ES and non-ES */) { - stageBuiltins[EShLangFragment].append( - "flat in highp uint gl_ViewID_OVR;" // GL_OVR_multiview, GL_OVR_multiview2 - "\n"); + stageBuiltins[EShLangRayGen].append(deviceIndex); + stageBuiltins[EShLangIntersect].append(deviceIndex); + stageBuiltins[EShLangAnyHit].append(deviceIndex); + stageBuiltins[EShLangClosestHit].append(deviceIndex); + stageBuiltins[EShLangMiss].append(deviceIndex); } if ((profile != EEsProfile && version >= 420) || @@ -5512,6 +5953,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV commonBuiltins.append("const int gl_ScopeSubgroup = 3;\n"); commonBuiltins.append("const int gl_ScopeInvocation = 4;\n"); commonBuiltins.append("const int gl_ScopeQueueFamily = 5;\n"); + commonBuiltins.append("const int gl_ScopeShaderCallEXT = 6;\n"); commonBuiltins.append("const int gl_SemanticsRelaxed = 0x0;\n"); commonBuiltins.append("const int gl_SemanticsAcquire = 0x2;\n"); @@ -5527,7 +5969,59 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV commonBuiltins.append("const int gl_StorageSemanticsImage = 0x800;\n"); commonBuiltins.append("const int gl_StorageSemanticsOutput = 0x1000;\n"); } -#endif + + // Adding these to common built-ins triggers an assert due to a memory corruption in related code when testing + // So instead add to each stage individually, avoiding the GLSLang bug + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { + for (int stage=EShLangVertex; stage(stage)].append("const highp int gl_ShadingRateFlag2VerticalPixelsEXT = 1;\n"); + stageBuiltins[static_cast(stage)].append("const highp int gl_ShadingRateFlag4VerticalPixelsEXT = 2;\n"); + stageBuiltins[static_cast(stage)].append("const highp int gl_ShadingRateFlag2HorizontalPixelsEXT = 4;\n"); + stageBuiltins[static_cast(stage)].append("const highp int gl_ShadingRateFlag4HorizontalPixelsEXT = 8;\n"); + } + } + + // GL_EXT_shader_image_int64 + if ((profile != EEsProfile && version >= 420) || + (profile == EEsProfile && version >= 310)) { + + const TBasicType bTypes[] = { EbtInt64, EbtUint64 }; + for (int ms = 0; ms <= 1; ++ms) { // loop over "bool" multisample or not + for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not + for (int dim = Esd1D; dim < EsdSubpass; ++dim) { // 1D, ..., buffer + if ((dim == Esd1D || dim == EsdRect) && profile == EEsProfile) + continue; + + if ((dim == Esd3D || dim == EsdRect || dim == EsdBuffer) && arrayed) + continue; + + if (dim != Esd2D && ms) + continue; + + // Loop over the bTypes + for (size_t bType = 0; bType < sizeof(bTypes)/sizeof(TBasicType); ++bType) { + // + // Now, make all the function prototypes for the type we just built... + // + TSampler sampler; + + sampler.setImage(bTypes[bType], (TSamplerDim)dim, arrayed ? true : false, + false, + ms ? true : false); + + TString typeName = sampler.getString(); + + addQueryFunctions(sampler, typeName, version, profile); + addImageFunctions(sampler, typeName, version, profile); + } + } + } + } + } +#endif // !GLSLANG_ANGLE + +#endif // !GLSLANG_WEB // printf("%s\n", commonBuiltins.c_str()); // printf("%s\n", stageBuiltins[EShLangFragment].c_str()); @@ -5545,13 +6039,16 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c // // enumerate all the types + const TBasicType bTypes[] = { EbtFloat, EbtInt, EbtUint, +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) + EbtFloat16 +#endif + }; #ifdef GLSLANG_WEB - const TBasicType bTypes[] = { EbtFloat, EbtInt, EbtUint }; bool skipBuffer = true; bool skipCubeArrayed = true; const int image = 0; #else - const TBasicType bTypes[] = { EbtFloat, EbtInt, EbtUint, EbtFloat16 }; bool skipBuffer = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 140); bool skipCubeArrayed = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 130); for (int image = 0; image <= 1; ++image) // loop over "bool" image vs sampler @@ -5576,8 +6073,12 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not #ifdef GLSLANG_WEB for (int dim = Esd2D; dim <= EsdCube; ++dim) { // 2D, 3D, and Cube +#else +#if defined(GLSLANG_ANGLE) + for (int dim = Esd2D; dim < EsdNumDims; ++dim) { // 2D, ..., buffer, subpass #else for (int dim = Esd1D; dim < EsdNumDims; ++dim) { // 1D, ..., buffer, subpass +#endif if (dim == EsdSubpass && spvVersion.vulkan == 0) continue; if (dim == EsdSubpass && (image || shadow || arrayed)) @@ -5616,7 +6117,6 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c #endif if (shadow && (bTypes[bType] == EbtInt || bTypes[bType] == EbtUint)) continue; - // // Now, make all the function prototypes for the type we just built... // @@ -5708,7 +6208,7 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, const TString& typeName, int return; #endif - if (sampler.isImage() && ((profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 430))) + if (sampler.isImage() && ((profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 420))) return; if (profile == EEsProfile) @@ -5747,39 +6247,45 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, const TString& typeName, int // // textureQueryLod(), fragment stage only - // + // Also enabled with extension GL_ARB_texture_query_lod + // Extension GL_ARB_texture_query_lod says that textureQueryLOD() also exist at extension. - if (profile != EEsProfile && version >= 400 && sampler.isCombined() && sampler.dim != EsdRect && + if (profile != EEsProfile && version >= 150 && sampler.isCombined() && sampler.dim != EsdRect && ! sampler.isMultiSample() && ! sampler.isBuffer()) { - for (int f16TexAddr = 0; f16TexAddr < 2; ++f16TexAddr) { - if (f16TexAddr && sampler.type != EbtFloat16) - continue; - stageBuiltins[EShLangFragment].append("vec2 textureQueryLod("); - stageBuiltins[EShLangFragment].append(typeName); + + const TString funcName[2] = {"vec2 textureQueryLod(", "vec2 textureQueryLOD("}; + + for (int i = 0; i < 2; ++i){ + for (int f16TexAddr = 0; f16TexAddr < 2; ++f16TexAddr) { + if (f16TexAddr && sampler.type != EbtFloat16) + continue; + stageBuiltins[EShLangFragment].append(funcName[i]); + stageBuiltins[EShLangFragment].append(typeName); + if (dimMap[sampler.dim] == 1) + if (f16TexAddr) + stageBuiltins[EShLangFragment].append(", float16_t"); + else + stageBuiltins[EShLangFragment].append(", float"); + else { + if (f16TexAddr) + stageBuiltins[EShLangFragment].append(", f16vec"); + else + stageBuiltins[EShLangFragment].append(", vec"); + stageBuiltins[EShLangFragment].append(postfixes[dimMap[sampler.dim]]); + } + stageBuiltins[EShLangFragment].append(");\n"); + } + + stageBuiltins[EShLangCompute].append(funcName[i]); + stageBuiltins[EShLangCompute].append(typeName); if (dimMap[sampler.dim] == 1) - if (f16TexAddr) - stageBuiltins[EShLangFragment].append(", float16_t"); - else - stageBuiltins[EShLangFragment].append(", float"); + stageBuiltins[EShLangCompute].append(", float"); else { - if (f16TexAddr) - stageBuiltins[EShLangFragment].append(", f16vec"); - else - stageBuiltins[EShLangFragment].append(", vec"); - stageBuiltins[EShLangFragment].append(postfixes[dimMap[sampler.dim]]); + stageBuiltins[EShLangCompute].append(", vec"); + stageBuiltins[EShLangCompute].append(postfixes[dimMap[sampler.dim]]); } - stageBuiltins[EShLangFragment].append(");\n"); + stageBuiltins[EShLangCompute].append(");\n"); } - - stageBuiltins[EShLangCompute].append("vec2 textureQueryLod("); - stageBuiltins[EShLangCompute].append(typeName); - if (dimMap[sampler.dim] == 1) - stageBuiltins[EShLangCompute].append(", float"); - else { - stageBuiltins[EShLangCompute].append(", vec"); - stageBuiltins[EShLangCompute].append(postfixes[dimMap[sampler.dim]]); - } - stageBuiltins[EShLangCompute].append(");\n"); } // @@ -5841,8 +6347,16 @@ void TBuiltIns::addImageFunctions(TSampler sampler, const TString& typeName, int if ( profile != EEsProfile || (profile == EEsProfile && version >= 310)) { - if (sampler.type == EbtInt || sampler.type == EbtUint) { - const char* dataType = sampler.type == EbtInt ? "highp int" : "highp uint"; + if (sampler.type == EbtInt || sampler.type == EbtUint || sampler.type == EbtInt64 || sampler.type == EbtUint64 ) { + + const char* dataType; + switch (sampler.type) { + case(EbtInt): dataType = "highp int"; break; + case(EbtUint): dataType = "highp uint"; break; + case(EbtInt64): dataType = "highp int64_t"; break; + case(EbtUint64): dataType = "highp uint64_t"; break; + default: dataType = ""; + } const int numBuiltins = 7; @@ -5898,12 +6412,57 @@ void TBuiltIns::addImageFunctions(TSampler sampler, const TString& typeName, int // not int or uint // GL_ARB_ES3_1_compatibility // TODO: spec issue: are there restrictions on the kind of layout() that can be used? what about dropping memory qualifiers? - if ((profile != EEsProfile && version >= 450) || - (profile == EEsProfile && version >= 310)) { + if (profile == EEsProfile && version >= 310) { commonBuiltins.append("float imageAtomicExchange(volatile coherent "); commonBuiltins.append(imageParams); commonBuiltins.append(", float);\n"); } + if (profile != EEsProfile && version >= 450) { + commonBuiltins.append("float imageAtomicAdd(volatile coherent "); + commonBuiltins.append(imageParams); + commonBuiltins.append(", float);\n"); + + commonBuiltins.append("float imageAtomicAdd(volatile coherent "); + commonBuiltins.append(imageParams); + commonBuiltins.append(", float"); + commonBuiltins.append(", int, int, int);\n"); + + commonBuiltins.append("float imageAtomicExchange(volatile coherent "); + commonBuiltins.append(imageParams); + commonBuiltins.append(", float);\n"); + + commonBuiltins.append("float imageAtomicExchange(volatile coherent "); + commonBuiltins.append(imageParams); + commonBuiltins.append(", float"); + commonBuiltins.append(", int, int, int);\n"); + + commonBuiltins.append("float imageAtomicLoad(readonly volatile coherent "); + commonBuiltins.append(imageParams); + commonBuiltins.append(", int, int, int);\n"); + + commonBuiltins.append("void imageAtomicStore(writeonly volatile coherent "); + commonBuiltins.append(imageParams); + commonBuiltins.append(", float"); + commonBuiltins.append(", int, int, int);\n"); + + commonBuiltins.append("float imageAtomicMin(volatile coherent "); + commonBuiltins.append(imageParams); + commonBuiltins.append(", float);\n"); + + commonBuiltins.append("float imageAtomicMin(volatile coherent "); + commonBuiltins.append(imageParams); + commonBuiltins.append(", float"); + commonBuiltins.append(", int, int, int);\n"); + + commonBuiltins.append("float imageAtomicMax(volatile coherent "); + commonBuiltins.append(imageParams); + commonBuiltins.append(", float);\n"); + + commonBuiltins.append("float imageAtomicMax(volatile coherent "); + commonBuiltins.append(imageParams); + commonBuiltins.append(", float"); + commonBuiltins.append(", int, int, int);\n"); + } } } @@ -5971,6 +6530,9 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, #ifdef GLSLANG_WEB profile = EEsProfile; version = 310; +#elif defined(GLSLANG_ANGLE) + profile = ECoreProfile; + version = 450; #endif // @@ -6047,7 +6609,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, continue; // loop over 16-bit floating-point texel addressing -#ifdef GLSLANG_WEB +#if defined(GLSLANG_WEB) || defined(GLSLANG_ANGLE) const int f16TexAddr = 0; #else for (int f16TexAddr = 0; f16TexAddr <= 1; ++f16TexAddr) @@ -6060,7 +6622,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, totalDims--; } // loop over "bool" lod clamp -#ifdef GLSLANG_WEB +#if defined(GLSLANG_WEB) || defined(GLSLANG_ANGLE) const int lodClamp = 0; #else for (int lodClamp = 0; lodClamp <= 1 ;++lodClamp) @@ -6072,7 +6634,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, continue; // loop over "bool" sparse or not -#ifdef GLSLANG_WEB +#if defined(GLSLANG_WEB) || defined(GLSLANG_ANGLE) const int sparse = 0; #else for (int sparse = 0; sparse <= 1; ++sparse) @@ -6127,7 +6689,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, s.append("Offset"); if (lodClamp) s.append("Clamp"); - if (lodClamp || sparse) + if (lodClamp != 0 || sparse) s.append("ARB"); s.append("("); @@ -6227,7 +6789,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, s.append(");\n"); // Add to the per-language set of built-ins - if (bias || lodClamp) { + if (!grad && (bias || lodClamp != 0)) { stageBuiltins[EShLangFragment].append(s); stageBuiltins[EShLangCompute].append(s); } else @@ -6256,6 +6818,9 @@ void TBuiltIns::addGatherFunctions(TSampler sampler, const TString& typeName, in #ifdef GLSLANG_WEB profile = EEsProfile; version = 310; +#elif defined(GLSLANG_ANGLE) + profile = ECoreProfile; + version = 450; #endif switch (sampler.dim) { @@ -6499,6 +7064,9 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf #ifdef GLSLANG_WEB version = 310; profile = EEsProfile; +#elif defined(GLSLANG_ANGLE) + version = 450; + profile = ECoreProfile; #endif // @@ -6624,6 +7192,35 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf } } + if (version >= 320) { + // tessellation + + snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlImageUniforms = %d;", resources.maxTessControlImageUniforms); + s.append(builtInConstant); + snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationImageUniforms = %d;", resources.maxTessEvaluationImageUniforms); + s.append(builtInConstant); + snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlAtomicCounters = %d;", resources.maxTessControlAtomicCounters); + s.append(builtInConstant); + snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationAtomicCounters = %d;", resources.maxTessEvaluationAtomicCounters); + s.append(builtInConstant); + snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlAtomicCounterBuffers = %d;", resources.maxTessControlAtomicCounterBuffers); + s.append(builtInConstant); + snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationAtomicCounterBuffers = %d;", resources.maxTessEvaluationAtomicCounterBuffers); + s.append(builtInConstant); + } + + if (version >= 100) { + // GL_EXT_blend_func_extended + snprintf(builtInConstant, maxSize, "const mediump int gl_MaxDualSourceDrawBuffersEXT = %d;", resources.maxDualSourceDrawBuffersEXT); + s.append(builtInConstant); + // this is here instead of with the others in initialize(version, profile) due to the dependence on gl_MaxDualSourceDrawBuffersEXT + if (language == EShLangFragment) { + s.append( + "mediump vec4 gl_SecondaryFragColorEXT;" + "mediump vec4 gl_SecondaryFragDataEXT[gl_MaxDualSourceDrawBuffersEXT];" + "\n"); + } + } } else { // non-ES profile @@ -6633,6 +7230,9 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf snprintf(builtInConstant, maxSize, "const int gl_MaxFragmentUniformVectors = %d;", resources.maxFragmentUniformVectors); s.append(builtInConstant); + + snprintf(builtInConstant, maxSize, "const int gl_MaxVaryingVectors = %d;", resources.maxVaryingVectors); + s.append(builtInConstant); } snprintf(builtInConstant, maxSize, "const int gl_MaxVertexAttribs = %d;", resources.maxVertexAttribs); @@ -6665,7 +7265,8 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf snprintf(builtInConstant, maxSize, "const int gl_MaxVertexUniformComponents = %d;", resources.maxVertexUniformComponents); s.append(builtInConstant); - if (version < 150 || ARBCompatibility) { + // Moved from just being deprecated into compatibility profile only as of 4.20 + if (version < 420 || profile == ECompatibilityProfile) { snprintf(builtInConstant, maxSize, "const int gl_MaxVaryingFloats = %d;", resources.maxVaryingFloats); s.append(builtInConstant); } @@ -6898,6 +7499,7 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append("\n"); } +#ifndef GLSLANG_ANGLE // atomic counters (some in compute below) if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) { @@ -6934,6 +7536,7 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append("\n"); } +#endif // !GLSLANG_ANGLE // GL_ARB_cull_distance if (profile != EEsProfile && version >= 450) { @@ -6950,6 +7553,7 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append(builtInConstant); } +#ifndef GLSLANG_ANGLE // SPV_NV_mesh_shader if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { snprintf(builtInConstant, maxSize, "const int gl_MaxMeshOutputVerticesNV = %d;", resources.maxMeshOutputVerticesNV); @@ -6972,6 +7576,7 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append("\n"); } +#endif #endif s.append("\n"); @@ -7021,6 +7626,11 @@ static void BuiltInVariable(const char* name, TBuiltInVariable builtIn, TSymbolT symQualifier.builtIn = builtIn; } +static void RetargetVariable(const char* from, const char* to, TSymbolTable& symbolTable) +{ + symbolTable.retargetSymbol(from, to); +} + // // For built-in variables inside a named block. // SpecialQualifier() won't ever go inside a block; their member's qualifier come @@ -7056,6 +7666,9 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion #ifdef GLSLANG_WEB version = 310; profile = EEsProfile; +#elif defined(GLSLANG_ANGLE) + version = 450; + profile = ECoreProfile; #endif // @@ -7083,6 +7696,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion SpecialQualifier("gl_InstanceID", EvqInstanceId, EbvInstanceId, symbolTable); } + if (spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) { + // treat these built-ins as aliases of VertexIndex and InstanceIndex + RetargetVariable("gl_InstanceID", "gl_InstanceIndex", symbolTable); + RetargetVariable("gl_VertexID", "gl_VertexIndex", symbolTable); + } + if (profile != EEsProfile) { if (version >= 440) { symbolTable.setVariableExtensions("gl_BaseVertexARB", 1, &E_GL_ARB_shader_draw_parameters); @@ -7245,7 +7864,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion case EShLangTessEvaluation: case EShLangGeometry: -#endif +#endif // !GLSLANG_WEB SpecialQualifier("gl_Position", EvqPosition, EbvPosition, symbolTable); SpecialQualifier("gl_PointSize", EvqPointSize, EbvPointSize, symbolTable); @@ -7406,7 +8025,21 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } -#endif + + if (language == EShLangGeometry || language == EShLangVertex) { + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 450)) { + symbolTable.setVariableExtensions("gl_PrimitiveShadingRateEXT", 1, &E_GL_EXT_fragment_shading_rate); + BuiltInVariable("gl_PrimitiveShadingRateEXT", EbvPrimitiveShadingRateKHR, symbolTable); + + symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + } + } + +#endif // !GLSLANG_WEB break; case EShLangFragment: @@ -7436,6 +8069,38 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_FragStencilRefARB", EbvFragStencilRef, symbolTable); } + if (profile != EEsProfile && version < 400) { + symbolTable.setFunctionExtensions("textureQueryLOD", 1, &E_GL_ARB_texture_query_lod); + } + + if (profile != EEsProfile && version >= 460) { + symbolTable.setFunctionExtensions("rayQueryInitializeEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryTerminateEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGenerateIntersectionEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryConfirmIntersectionEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryProceedEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetIntersectionTypeEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetIntersectionTEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetRayFlagsEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetRayTMinEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetIntersectionInstanceCustomIndexEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetIntersectionInstanceIdEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetIntersectionGeometryIndexEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetIntersectionPrimitiveIndexEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetIntersectionBarycentricsEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetIntersectionFrontFaceEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetIntersectionCandidateAABBOpaqueEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetIntersectionObjectRayDirectionEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetIntersectionObjectRayOriginEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetIntersectionObjectToWorldEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetIntersectionWorldToObjectEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetWorldRayOriginEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetWorldRayDirectionEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setVariableExtensions("gl_RayFlagsSkipAABBEXT", 1, &E_GL_EXT_ray_flags_primitive_culling); + symbolTable.setVariableExtensions("gl_RayFlagsSkipTrianglesEXT", 1, &E_GL_EXT_ray_flags_primitive_culling); + } + if ((profile != EEsProfile && version >= 130) || (profile == EEsProfile && version >= 310)) { BuiltInVariable("gl_SampleID", EbvSampleId, symbolTable); @@ -7548,6 +8213,19 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("atomicCounter" , 1, &E_GL_ARB_shader_atomic_counters); } + // E_GL_ARB_shader_atomic_counter_ops + if (profile != EEsProfile && version == 450) { + symbolTable.setFunctionExtensions("atomicCounterAddARB" , 1, &E_GL_ARB_shader_atomic_counter_ops); + symbolTable.setFunctionExtensions("atomicCounterSubtractARB", 1, &E_GL_ARB_shader_atomic_counter_ops); + symbolTable.setFunctionExtensions("atomicCounterMinARB" , 1, &E_GL_ARB_shader_atomic_counter_ops); + symbolTable.setFunctionExtensions("atomicCounterMaxARB" , 1, &E_GL_ARB_shader_atomic_counter_ops); + symbolTable.setFunctionExtensions("atomicCounterAndARB" , 1, &E_GL_ARB_shader_atomic_counter_ops); + symbolTable.setFunctionExtensions("atomicCounterOrARB" , 1, &E_GL_ARB_shader_atomic_counter_ops); + symbolTable.setFunctionExtensions("atomicCounterXorARB" , 1, &E_GL_ARB_shader_atomic_counter_ops); + symbolTable.setFunctionExtensions("atomicCounterExchangeARB", 1, &E_GL_ARB_shader_atomic_counter_ops); + symbolTable.setFunctionExtensions("atomicCounterCompSwapARB", 1, &E_GL_ARB_shader_atomic_counter_ops); + } + // E_GL_ARB_derivative_control if (profile != EEsProfile && version < 450) { symbolTable.setFunctionExtensions("dFdxFine", 1, &E_GL_ARB_derivative_control); @@ -7655,7 +8333,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("clockARB", 1, &E_GL_ARB_shader_clock); symbolTable.setFunctionExtensions("clock2x32ARB", 1, &E_GL_ARB_shader_clock); - symbolTable.setFunctionExtensions("clockRealtimeEXT", 1, &E_GL_EXT_shader_realtime_clock); + symbolTable.setFunctionExtensions("clockRealtimeEXT", 1, &E_GL_EXT_shader_realtime_clock); symbolTable.setFunctionExtensions("clockRealtime2x32EXT", 1, &E_GL_EXT_shader_realtime_clock); if (profile == EEsProfile && version < 320) { @@ -7674,6 +8352,46 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("imageAtomicCompSwap", 1, &E_GL_OES_shader_image_atomic); } + if (profile != EEsProfile && version < 330 ) { + const char* bitsConvertExt[2] = {E_GL_ARB_shader_bit_encoding, E_GL_ARB_gpu_shader5}; + symbolTable.setFunctionExtensions("floatBitsToInt", 2, bitsConvertExt); + symbolTable.setFunctionExtensions("floatBitsToUint", 2, bitsConvertExt); + symbolTable.setFunctionExtensions("intBitsToFloat", 2, bitsConvertExt); + symbolTable.setFunctionExtensions("uintBitsToFloat", 2, bitsConvertExt); + } + + if (profile != EEsProfile && version < 430 ) { + symbolTable.setFunctionExtensions("imageSize", 1, &E_GL_ARB_shader_image_size); + } + + // GL_ARB_shader_storage_buffer_object + if (profile != EEsProfile && version < 430 ) { + symbolTable.setFunctionExtensions("atomicAdd", 1, &E_GL_ARB_shader_storage_buffer_object); + symbolTable.setFunctionExtensions("atomicMin", 1, &E_GL_ARB_shader_storage_buffer_object); + symbolTable.setFunctionExtensions("atomicMax", 1, &E_GL_ARB_shader_storage_buffer_object); + symbolTable.setFunctionExtensions("atomicAnd", 1, &E_GL_ARB_shader_storage_buffer_object); + symbolTable.setFunctionExtensions("atomicOr", 1, &E_GL_ARB_shader_storage_buffer_object); + symbolTable.setFunctionExtensions("atomicXor", 1, &E_GL_ARB_shader_storage_buffer_object); + symbolTable.setFunctionExtensions("atomicExchange", 1, &E_GL_ARB_shader_storage_buffer_object); + symbolTable.setFunctionExtensions("atomicCompSwap", 1, &E_GL_ARB_shader_storage_buffer_object); + } + + // GL_ARB_shading_language_packing + if (profile != EEsProfile && version < 400 ) { + symbolTable.setFunctionExtensions("packUnorm2x16", 1, &E_GL_ARB_shading_language_packing); + symbolTable.setFunctionExtensions("unpackUnorm2x16", 1, &E_GL_ARB_shading_language_packing); + symbolTable.setFunctionExtensions("packSnorm4x8", 1, &E_GL_ARB_shading_language_packing); + symbolTable.setFunctionExtensions("packUnorm4x8", 1, &E_GL_ARB_shading_language_packing); + symbolTable.setFunctionExtensions("unpackSnorm4x8", 1, &E_GL_ARB_shading_language_packing); + symbolTable.setFunctionExtensions("unpackUnorm4x8", 1, &E_GL_ARB_shading_language_packing); + } + if (profile != EEsProfile && version < 420 ) { + symbolTable.setFunctionExtensions("packSnorm2x16", 1, &E_GL_ARB_shading_language_packing); + symbolTable.setFunctionExtensions("unpackSnorm2x16", 1, &E_GL_ARB_shading_language_packing); + symbolTable.setFunctionExtensions("unpackHalf2x16", 1, &E_GL_ARB_shading_language_packing); + symbolTable.setFunctionExtensions("packHalf2x16", 1, &E_GL_ARB_shading_language_packing); + } + symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); symbolTable.setVariableExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview); @@ -7841,7 +8559,18 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion } symbolTable.setFunctionExtensions("helperInvocationEXT", 1, &E_GL_EXT_demote_to_helper_invocation); -#endif + + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 450)) { + symbolTable.setVariableExtensions("gl_ShadingRateEXT", 1, &E_GL_EXT_fragment_shading_rate); + BuiltInVariable("gl_ShadingRateEXT", EbvShadingRateKHR, symbolTable); + + symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + } +#endif // !GLSLANG_WEB break; case EShLangCompute: @@ -7885,7 +8614,9 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_ARB_compute_shader); } + symbolTable.setFunctionExtensions("controlBarrier", 1, &E_GL_KHR_memory_scope_semantics); + symbolTable.setFunctionExtensions("debugPrintfEXT", 1, &E_GL_EXT_debug_printf); // GL_ARB_shader_ballot if (profile != EEsProfile) { @@ -7971,53 +8702,110 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("dFdyCoarse", 1, &E_GL_NV_compute_shader_derivatives); symbolTable.setFunctionExtensions("fwidthCoarse", 1, &E_GL_NV_compute_shader_derivatives); } -#endif + + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 450)) { + symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + } +#endif // !GLSLANG_WEB break; -#ifndef GLSLANG_WEB - case EShLangRayGenNV: - case EShLangIntersectNV: - case EShLangAnyHitNV: - case EShLangClosestHitNV: - case EShLangMissNV: - case EShLangCallableNV: +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) + case EShLangRayGen: + case EShLangIntersect: + case EShLangAnyHit: + case EShLangClosestHit: + case EShLangMiss: + case EShLangCallable: if (profile != EEsProfile && version >= 460) { + const char *rtexts[] = { E_GL_NV_ray_tracing, E_GL_EXT_ray_tracing }; symbolTable.setVariableExtensions("gl_LaunchIDNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setVariableExtensions("gl_LaunchIDEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_LaunchSizeNV", 1, &E_GL_NV_ray_tracing); - symbolTable.setVariableExtensions("gl_PrimitiveID", 1, &E_GL_NV_ray_tracing); - symbolTable.setVariableExtensions("gl_InstanceID", 1, &E_GL_NV_ray_tracing); + symbolTable.setVariableExtensions("gl_LaunchSizeEXT", 1, &E_GL_EXT_ray_tracing); + symbolTable.setVariableExtensions("gl_PrimitiveID", 2, rtexts); + symbolTable.setVariableExtensions("gl_InstanceID", 2, rtexts); symbolTable.setVariableExtensions("gl_InstanceCustomIndexNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setVariableExtensions("gl_InstanceCustomIndexEXT", 1, &E_GL_EXT_ray_tracing); + symbolTable.setVariableExtensions("gl_GeometryIndexEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_WorldRayOriginNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setVariableExtensions("gl_WorldRayOriginEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_WorldRayDirectionNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setVariableExtensions("gl_WorldRayDirectionEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_ObjectRayOriginNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setVariableExtensions("gl_ObjectRayOriginEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_ObjectRayDirectionNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setVariableExtensions("gl_ObjectRayDirectionEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_RayTminNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setVariableExtensions("gl_RayTminEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_RayTmaxNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setVariableExtensions("gl_RayTmaxEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_HitTNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setVariableExtensions("gl_HitTEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_HitKindNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setVariableExtensions("gl_HitKindEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_ObjectToWorldNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setVariableExtensions("gl_ObjectToWorldEXT", 1, &E_GL_EXT_ray_tracing); + symbolTable.setVariableExtensions("gl_ObjectToWorld3x4EXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_WorldToObjectNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setVariableExtensions("gl_WorldToObjectEXT", 1, &E_GL_EXT_ray_tracing); + symbolTable.setVariableExtensions("gl_WorldToObject3x4EXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_IncomingRayFlagsNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setVariableExtensions("gl_IncomingRayFlagsEXT", 1, &E_GL_EXT_ray_tracing); + symbolTable.setVariableExtensions("gl_CurrentRayTimeNV", 1, &E_GL_NV_ray_tracing_motion_blur); symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); - BuiltInVariable("gl_LaunchIDNV", EbvLaunchIdNV, symbolTable); - BuiltInVariable("gl_LaunchSizeNV", EbvLaunchSizeNV, symbolTable); - BuiltInVariable("gl_PrimitiveID", EbvPrimitiveId, symbolTable); - BuiltInVariable("gl_InstanceID", EbvInstanceId, symbolTable); - BuiltInVariable("gl_InstanceCustomIndexNV", EbvInstanceCustomIndexNV,symbolTable); - BuiltInVariable("gl_WorldRayOriginNV", EbvWorldRayOriginNV, symbolTable); - BuiltInVariable("gl_WorldRayDirectionNV", EbvWorldRayDirectionNV, symbolTable); - BuiltInVariable("gl_ObjectRayOriginNV", EbvObjectRayOriginNV, symbolTable); - BuiltInVariable("gl_ObjectRayDirectionNV", EbvObjectRayDirectionNV, symbolTable); - BuiltInVariable("gl_RayTminNV", EbvRayTminNV, symbolTable); - BuiltInVariable("gl_RayTmaxNV", EbvRayTmaxNV, symbolTable); - BuiltInVariable("gl_HitTNV", EbvHitTNV, symbolTable); - BuiltInVariable("gl_HitKindNV", EbvHitKindNV, symbolTable); - BuiltInVariable("gl_ObjectToWorldNV", EbvObjectToWorldNV, symbolTable); - BuiltInVariable("gl_WorldToObjectNV", EbvWorldToObjectNV, symbolTable); - BuiltInVariable("gl_IncomingRayFlagsNV", EbvIncomingRayFlagsNV, symbolTable); - BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); + + symbolTable.setFunctionExtensions("traceNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setFunctionExtensions("traceRayMotionNV", 1, &E_GL_NV_ray_tracing_motion_blur); + symbolTable.setFunctionExtensions("traceRayEXT", 1, &E_GL_EXT_ray_tracing); + symbolTable.setFunctionExtensions("reportIntersectionNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setFunctionExtensions("reportIntersectionEXT", 1, &E_GL_EXT_ray_tracing); + symbolTable.setFunctionExtensions("ignoreIntersectionNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setFunctionExtensions("terminateRayNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setFunctionExtensions("executeCallableNV", 1, &E_GL_NV_ray_tracing); + symbolTable.setFunctionExtensions("executeCallableEXT", 1, &E_GL_EXT_ray_tracing); + + + BuiltInVariable("gl_LaunchIDNV", EbvLaunchId, symbolTable); + BuiltInVariable("gl_LaunchIDEXT", EbvLaunchId, symbolTable); + BuiltInVariable("gl_LaunchSizeNV", EbvLaunchSize, symbolTable); + BuiltInVariable("gl_LaunchSizeEXT", EbvLaunchSize, symbolTable); + BuiltInVariable("gl_PrimitiveID", EbvPrimitiveId, symbolTable); + BuiltInVariable("gl_InstanceID", EbvInstanceId, symbolTable); + BuiltInVariable("gl_InstanceCustomIndexNV", EbvInstanceCustomIndex,symbolTable); + BuiltInVariable("gl_InstanceCustomIndexEXT", EbvInstanceCustomIndex,symbolTable); + BuiltInVariable("gl_GeometryIndexEXT", EbvGeometryIndex, symbolTable); + BuiltInVariable("gl_WorldRayOriginNV", EbvWorldRayOrigin, symbolTable); + BuiltInVariable("gl_WorldRayOriginEXT", EbvWorldRayOrigin, symbolTable); + BuiltInVariable("gl_WorldRayDirectionNV", EbvWorldRayDirection, symbolTable); + BuiltInVariable("gl_WorldRayDirectionEXT", EbvWorldRayDirection, symbolTable); + BuiltInVariable("gl_ObjectRayOriginNV", EbvObjectRayOrigin, symbolTable); + BuiltInVariable("gl_ObjectRayOriginEXT", EbvObjectRayOrigin, symbolTable); + BuiltInVariable("gl_ObjectRayDirectionNV", EbvObjectRayDirection, symbolTable); + BuiltInVariable("gl_ObjectRayDirectionEXT", EbvObjectRayDirection, symbolTable); + BuiltInVariable("gl_RayTminNV", EbvRayTmin, symbolTable); + BuiltInVariable("gl_RayTminEXT", EbvRayTmin, symbolTable); + BuiltInVariable("gl_RayTmaxNV", EbvRayTmax, symbolTable); + BuiltInVariable("gl_RayTmaxEXT", EbvRayTmax, symbolTable); + BuiltInVariable("gl_HitTNV", EbvHitT, symbolTable); + BuiltInVariable("gl_HitTEXT", EbvHitT, symbolTable); + BuiltInVariable("gl_HitKindNV", EbvHitKind, symbolTable); + BuiltInVariable("gl_HitKindEXT", EbvHitKind, symbolTable); + BuiltInVariable("gl_ObjectToWorldNV", EbvObjectToWorld, symbolTable); + BuiltInVariable("gl_ObjectToWorldEXT", EbvObjectToWorld, symbolTable); + BuiltInVariable("gl_ObjectToWorld3x4EXT", EbvObjectToWorld3x4, symbolTable); + BuiltInVariable("gl_WorldToObjectNV", EbvWorldToObject, symbolTable); + BuiltInVariable("gl_WorldToObjectEXT", EbvWorldToObject, symbolTable); + BuiltInVariable("gl_WorldToObject3x4EXT", EbvWorldToObject3x4, symbolTable); + BuiltInVariable("gl_IncomingRayFlagsNV", EbvIncomingRayFlags, symbolTable); + BuiltInVariable("gl_IncomingRayFlagsEXT", EbvIncomingRayFlags, symbolTable); + BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); + BuiltInVariable("gl_CurrentRayTimeNV", EbvCurrentRayTimeNV, symbolTable); // GL_ARB_shader_ballot symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot); @@ -8072,6 +8860,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 450)) { + symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + } break; case EShLangMeshNV: @@ -8216,6 +9011,14 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } + + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 450)) { + symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + } break; case EShLangTaskNV: @@ -8316,6 +9119,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 450)) { + symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + } break; #endif @@ -8385,6 +9195,14 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("memoryBarrierAtomicCounter", EOpMemoryBarrierAtomicCounter); symbolTable.relateToOperator("memoryBarrierImage", EOpMemoryBarrierImage); + if (spvVersion.vulkanRelaxed) { + // + // functions signature have been replaced to take uint operations on buffer variables + // remap atomic counter functions to atomic operations + // + symbolTable.relateToOperator("memoryBarrierAtomicCounter", EOpMemoryBarrierBuffer); + } + symbolTable.relateToOperator("atomicLoad", EOpAtomicLoad); symbolTable.relateToOperator("atomicStore", EOpAtomicStore); @@ -8392,12 +9210,38 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("atomicCounterDecrement", EOpAtomicCounterDecrement); symbolTable.relateToOperator("atomicCounter", EOpAtomicCounter); + if (spvVersion.vulkanRelaxed) { + // + // functions signature have been replaced to take uint operations + // remap atomic counter functions to atomic operations + // + // these atomic counter functions do not match signatures of glsl + // atomic functions, so they will be remapped to semantically + // equivalent functions in the parser + // + symbolTable.relateToOperator("atomicCounterIncrement", EOpNull); + symbolTable.relateToOperator("atomicCounterDecrement", EOpNull); + symbolTable.relateToOperator("atomicCounter", EOpNull); + } + symbolTable.relateToOperator("clockARB", EOpReadClockSubgroupKHR); symbolTable.relateToOperator("clock2x32ARB", EOpReadClockSubgroupKHR); symbolTable.relateToOperator("clockRealtimeEXT", EOpReadClockDeviceKHR); symbolTable.relateToOperator("clockRealtime2x32EXT", EOpReadClockDeviceKHR); + if (profile != EEsProfile && version == 450) { + symbolTable.relateToOperator("atomicCounterAddARB", EOpAtomicCounterAdd); + symbolTable.relateToOperator("atomicCounterSubtractARB", EOpAtomicCounterSubtract); + symbolTable.relateToOperator("atomicCounterMinARB", EOpAtomicCounterMin); + symbolTable.relateToOperator("atomicCounterMaxARB", EOpAtomicCounterMax); + symbolTable.relateToOperator("atomicCounterAndARB", EOpAtomicCounterAnd); + symbolTable.relateToOperator("atomicCounterOrARB", EOpAtomicCounterOr); + symbolTable.relateToOperator("atomicCounterXorARB", EOpAtomicCounterXor); + symbolTable.relateToOperator("atomicCounterExchangeARB", EOpAtomicCounterExchange); + symbolTable.relateToOperator("atomicCounterCompSwapARB", EOpAtomicCounterCompSwap); + } + if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("atomicCounterAdd", EOpAtomicCounterAdd); symbolTable.relateToOperator("atomicCounterSubtract", EOpAtomicCounterSubtract); @@ -8410,6 +9254,23 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("atomicCounterCompSwap", EOpAtomicCounterCompSwap); } + if (spvVersion.vulkanRelaxed) { + // + // functions signature have been replaced to take 'uint' instead of 'atomic_uint' + // remap atomic counter functions to non-counter atomic ops so + // functions act as aliases to non-counter atomic ops + // + symbolTable.relateToOperator("atomicCounterAdd", EOpAtomicAdd); + symbolTable.relateToOperator("atomicCounterSubtract", EOpAtomicSubtract); + symbolTable.relateToOperator("atomicCounterMin", EOpAtomicMin); + symbolTable.relateToOperator("atomicCounterMax", EOpAtomicMax); + symbolTable.relateToOperator("atomicCounterAnd", EOpAtomicAnd); + symbolTable.relateToOperator("atomicCounterOr", EOpAtomicOr); + symbolTable.relateToOperator("atomicCounterXor", EOpAtomicXor); + symbolTable.relateToOperator("atomicCounterExchange", EOpAtomicExchange); + symbolTable.relateToOperator("atomicCounterCompSwap", EOpAtomicCompSwap); + } + symbolTable.relateToOperator("fma", EOpFma); symbolTable.relateToOperator("frexp", EOpFrexp); symbolTable.relateToOperator("ldexp", EOpLdexp); @@ -8434,6 +9295,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("average", EOpAverage); symbolTable.relateToOperator("averageRounded", EOpAverageRounded); symbolTable.relateToOperator("multiply32x16", EOpMul32x16); + symbolTable.relateToOperator("debugPrintfEXT", EOpDebugPrintf); + if (PureOperatorBuiltins) { symbolTable.relateToOperator("imageSize", EOpImageQuerySize); @@ -8723,6 +9586,33 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("dFdyCoarse", EOpDPdyCoarse); symbolTable.relateToOperator("fwidthCoarse", EOpFwidthCoarse); } + + if (profile != EEsProfile && version >= 460) { + symbolTable.relateToOperator("rayQueryInitializeEXT", EOpRayQueryInitialize); + symbolTable.relateToOperator("rayQueryTerminateEXT", EOpRayQueryTerminate); + symbolTable.relateToOperator("rayQueryGenerateIntersectionEXT", EOpRayQueryGenerateIntersection); + symbolTable.relateToOperator("rayQueryConfirmIntersectionEXT", EOpRayQueryConfirmIntersection); + symbolTable.relateToOperator("rayQueryProceedEXT", EOpRayQueryProceed); + symbolTable.relateToOperator("rayQueryGetIntersectionTypeEXT", EOpRayQueryGetIntersectionType); + symbolTable.relateToOperator("rayQueryGetRayTMinEXT", EOpRayQueryGetRayTMin); + symbolTable.relateToOperator("rayQueryGetRayFlagsEXT", EOpRayQueryGetRayFlags); + symbolTable.relateToOperator("rayQueryGetIntersectionTEXT", EOpRayQueryGetIntersectionT); + symbolTable.relateToOperator("rayQueryGetIntersectionInstanceCustomIndexEXT", EOpRayQueryGetIntersectionInstanceCustomIndex); + symbolTable.relateToOperator("rayQueryGetIntersectionInstanceIdEXT", EOpRayQueryGetIntersectionInstanceId); + symbolTable.relateToOperator("rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT", EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset); + symbolTable.relateToOperator("rayQueryGetIntersectionGeometryIndexEXT", EOpRayQueryGetIntersectionGeometryIndex); + symbolTable.relateToOperator("rayQueryGetIntersectionPrimitiveIndexEXT", EOpRayQueryGetIntersectionPrimitiveIndex); + symbolTable.relateToOperator("rayQueryGetIntersectionBarycentricsEXT", EOpRayQueryGetIntersectionBarycentrics); + symbolTable.relateToOperator("rayQueryGetIntersectionFrontFaceEXT", EOpRayQueryGetIntersectionFrontFace); + symbolTable.relateToOperator("rayQueryGetIntersectionCandidateAABBOpaqueEXT", EOpRayQueryGetIntersectionCandidateAABBOpaque); + symbolTable.relateToOperator("rayQueryGetIntersectionObjectRayDirectionEXT", EOpRayQueryGetIntersectionObjectRayDirection); + symbolTable.relateToOperator("rayQueryGetIntersectionObjectRayOriginEXT", EOpRayQueryGetIntersectionObjectRayOrigin); + symbolTable.relateToOperator("rayQueryGetWorldRayDirectionEXT", EOpRayQueryGetWorldRayDirection); + symbolTable.relateToOperator("rayQueryGetWorldRayOriginEXT", EOpRayQueryGetWorldRayOrigin); + symbolTable.relateToOperator("rayQueryGetIntersectionObjectToWorldEXT", EOpRayQueryGetIntersectionObjectToWorld); + symbolTable.relateToOperator("rayQueryGetIntersectionWorldToObjectEXT", EOpRayQueryGetIntersectionWorldToObject); + } + symbolTable.relateToOperator("interpolateAtCentroid", EOpInterpolateAtCentroid); symbolTable.relateToOperator("interpolateAtSample", EOpInterpolateAtSample); symbolTable.relateToOperator("interpolateAtOffset", EOpInterpolateAtOffset); @@ -8754,27 +9644,33 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("coopMatMulAddNV", EOpCooperativeMatrixMulAdd); break; - case EShLangRayGenNV: - case EShLangClosestHitNV: - case EShLangMissNV: + case EShLangRayGen: + case EShLangClosestHit: + case EShLangMiss: if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("traceNV", EOpTraceNV); + symbolTable.relateToOperator("traceRayMotionNV", EOpTraceRayMotionNV); + symbolTable.relateToOperator("traceRayEXT", EOpTraceKHR); symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV); + symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallableKHR); } break; - case EShLangIntersectNV: - if (profile != EEsProfile && version >= 460) - symbolTable.relateToOperator("reportIntersectionNV", EOpReportIntersectionNV); + case EShLangIntersect: + if (profile != EEsProfile && version >= 460) { + symbolTable.relateToOperator("reportIntersectionNV", EOpReportIntersection); + symbolTable.relateToOperator("reportIntersectionEXT", EOpReportIntersection); + } break; - case EShLangAnyHitNV: + case EShLangAnyHit: if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("ignoreIntersectionNV", EOpIgnoreIntersectionNV); symbolTable.relateToOperator("terminateRayNV", EOpTerminateRayNV); } break; - case EShLangCallableNV: + case EShLangCallable: if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV); + symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallableKHR); } break; case EShLangMeshNV: @@ -8793,7 +9689,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion default: assert(false && "Language not supported"); } -#endif +#endif // !GLSLANG_WEB } // @@ -8808,6 +9704,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources) { #ifndef GLSLANG_WEB +#if defined(GLSLANG_ANGLE) + profile = ECoreProfile; + version = 450; +#endif if (profile != EEsProfile && version >= 430 && version < 440) { symbolTable.setVariableExtensions("gl_MaxTransformFeedbackBuffers", 1, &E_GL_ARB_enhanced_layouts); symbolTable.setVariableExtensions("gl_MaxTransformFeedbackInterleavedComponents", 1, &E_GL_ARB_enhanced_layouts); @@ -8831,6 +9731,16 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.insert(*new TVariable(NewPoolTString("gl_FragData"), fragData)); SpecialQualifier("gl_FragData", EvqFragColor, EbvFragData, symbolTable); } + + // GL_EXT_blend_func_extended + if (profile == EEsProfile && version >= 100) { + symbolTable.setVariableExtensions("gl_MaxDualSourceDrawBuffersEXT", 1, &E_GL_EXT_blend_func_extended); + symbolTable.setVariableExtensions("gl_SecondaryFragColorEXT", 1, &E_GL_EXT_blend_func_extended); + symbolTable.setVariableExtensions("gl_SecondaryFragDataEXT", 1, &E_GL_EXT_blend_func_extended); + SpecialQualifier("gl_SecondaryFragColorEXT", EvqVaryingOut, EbvSecondaryFragColorEXT, symbolTable); + SpecialQualifier("gl_SecondaryFragDataEXT", EvqVaryingOut, EbvSecondaryFragDataEXT, symbolTable); + } + break; case EShLangTessControl: diff --git a/Externals/glslang/glslang/MachineIndependent/IntermTraverse.cpp b/Externals/glslang/glslang/MachineIndependent/IntermTraverse.cpp index f46010b71217..553b1b5ff837 100644 --- a/Externals/glslang/glslang/MachineIndependent/IntermTraverse.cpp +++ b/Externals/glslang/glslang/MachineIndependent/IntermTraverse.cpp @@ -71,6 +71,13 @@ void TIntermConstantUnion::traverse(TIntermTraverser *it) it->visitConstantUnion(this); } +const TString& TIntermSymbol::getAccessName() const { + if (getBasicType() == EbtBlock) + return getType().getTypeName(); + else + return getName(); +} + // // Traverse a binary node. // diff --git a/Externals/glslang/glslang/MachineIndependent/Intermediate.cpp b/Externals/glslang/glslang/MachineIndependent/Intermediate.cpp old mode 100755 new mode 100644 index d0f86e638948..14fd053a7974 --- a/Externals/glslang/glslang/MachineIndependent/Intermediate.cpp +++ b/Externals/glslang/glslang/MachineIndependent/Intermediate.cpp @@ -1,7 +1,7 @@ // // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2015 LunarG, Inc. -// Copyright (C) 2015-2018 Google, Inc. +// Copyright (C) 2015-2020 Google, Inc. // Copyright (C) 2017 ARM Limited. // // All rights reserved. @@ -65,7 +65,7 @@ namespace glslang { // Returns the added node. // -TIntermSymbol* TIntermediate::addSymbol(int id, const TString& name, const TType& type, const TConstUnionArray& constArray, +TIntermSymbol* TIntermediate::addSymbol(long long id, const TString& name, const TType& type, const TConstUnionArray& constArray, TIntermTyped* constSubtree, const TSourceLoc& loc) { TIntermSymbol* node = new TIntermSymbol(id, name, type); @@ -113,14 +113,14 @@ TIntermSymbol* TIntermediate::addSymbol(const TType& type, const TSourceLoc& loc // // Returns nullptr if the working conversions and promotions could not be found. // -TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc) +TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc& loc) { // No operations work on blocks if (left->getType().getBasicType() == EbtBlock || right->getType().getBasicType() == EbtBlock) return nullptr; // Convert "reference +/- int" and "reference - reference" to integer math - if ((op == EOpAdd || op == EOpSub) && extensionRequested(E_GL_EXT_buffer_reference2)) { + if (op == EOpAdd || op == EOpSub) { // No addressing math on struct with unsized array. if ((left->isReference() && left->getType().getReferentType()->containsUnsizedArray()) || @@ -140,43 +140,44 @@ TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIn node = addBuiltInFunctionCall(loc, EOpConvUint64ToPtr, true, node, referenceType); return node; } + } - if (op == EOpAdd && right->isReference() && isTypeInt(left->getBasicType())) { - const TType& referenceType = right->getType(); - TIntermConstantUnion* size = addConstantUnion((unsigned long long)computeBufferReferenceTypeSize(right->getType()), loc, true); - right = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, right, TType(EbtUint64)); - - left = createConversion(EbtInt64, left); - left = addBinaryMath(EOpMul, left, size, loc); + if (op == EOpAdd && right->isReference() && isTypeInt(left->getBasicType())) { + const TType& referenceType = right->getType(); + TIntermConstantUnion* size = + addConstantUnion((unsigned long long)computeBufferReferenceTypeSize(right->getType()), loc, true); + right = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, right, TType(EbtUint64)); - TIntermTyped *node = addBinaryMath(op, left, right, loc); - node = addBuiltInFunctionCall(loc, EOpConvUint64ToPtr, true, node, referenceType); - return node; - } + left = createConversion(EbtInt64, left); + left = addBinaryMath(EOpMul, left, size, loc); - if (op == EOpSub && left->isReference() && right->isReference()) { - TIntermConstantUnion* size = addConstantUnion((long long)computeBufferReferenceTypeSize(left->getType()), loc, true); + TIntermTyped *node = addBinaryMath(op, left, right, loc); + node = addBuiltInFunctionCall(loc, EOpConvUint64ToPtr, true, node, referenceType); + return node; + } - left = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, left, TType(EbtUint64)); - right = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, right, TType(EbtUint64)); + if (op == EOpSub && left->isReference() && right->isReference()) { + TIntermConstantUnion* size = + addConstantUnion((long long)computeBufferReferenceTypeSize(left->getType()), loc, true); - left = addBuiltInFunctionCall(loc, EOpConvUint64ToInt64, true, left, TType(EbtInt64)); - right = addBuiltInFunctionCall(loc, EOpConvUint64ToInt64, true, right, TType(EbtInt64)); + left = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, left, TType(EbtUint64)); + right = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, right, TType(EbtUint64)); - left = addBinaryMath(EOpSub, left, right, loc); + left = addBuiltInFunctionCall(loc, EOpConvUint64ToInt64, true, left, TType(EbtInt64)); + right = addBuiltInFunctionCall(loc, EOpConvUint64ToInt64, true, right, TType(EbtInt64)); - TIntermTyped *node = addBinaryMath(EOpDiv, left, size, loc); - return node; - } + left = addBinaryMath(EOpSub, left, right, loc); - // No other math operators supported on references - if (left->isReference() || right->isReference()) { - return nullptr; - } + TIntermTyped *node = addBinaryMath(EOpDiv, left, size, loc); + return node; } + // No other math operators supported on references + if (left->isReference() || right->isReference()) + return nullptr; + // Try converting the children's base types to compatible types. - auto children = addConversion(op, left, right); + auto children = addPairConversion(op, left, right); left = std::get<0>(children); right = std::get<1>(children); @@ -226,13 +227,12 @@ TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIn // // Low level: add binary node (no promotions or other argument modifications) // -TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc) const +TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, + const TSourceLoc& loc) const { // build the node TIntermBinary* node = new TIntermBinary(op); - if (loc.line == 0) - loc = left->getLoc(); - node->setLoc(loc); + node->setLoc(loc.line != 0 ? loc : left->getLoc()); node->setLeft(left); node->setRight(right); @@ -242,7 +242,8 @@ TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TI // // like non-type form, but sets node's type. // -TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc, const TType& type) const +TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, + const TSourceLoc& loc, const TType& type) const { TIntermBinary* node = addBinaryNode(op, left, right, loc); node->setType(type); @@ -252,12 +253,10 @@ TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TI // // Low level: add unary node (no promotions or other argument modifications) // -TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc loc) const +TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, const TSourceLoc& loc) const { TIntermUnary* node = new TIntermUnary(op); - if (loc.line == 0) - loc = child->getLoc(); - node->setLoc(loc); + node->setLoc(loc.line != 0 ? loc : child->getLoc()); node->setOperand(child); return node; @@ -266,7 +265,8 @@ TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, TSo // // like non-type form, but sets node's type. // -TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc loc, const TType& type) const +TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, const TSourceLoc& loc, const TType& type) + const { TIntermUnary* node = addUnaryNode(op, child, loc); node->setType(type); @@ -281,7 +281,8 @@ TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, TSo // Returns nullptr if the 'right' type could not be converted to match the 'left' type, // or the resulting operation cannot be properly promoted. // -TIntermTyped* TIntermediate::addAssign(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc) +TIntermTyped* TIntermediate::addAssign(TOperator op, TIntermTyped* left, TIntermTyped* right, + const TSourceLoc& loc) { // No block assignment if (left->getType().getBasicType() == EbtBlock || right->getType().getBasicType() == EbtBlock) @@ -290,9 +291,7 @@ TIntermTyped* TIntermediate::addAssign(TOperator op, TIntermTyped* left, TInterm // Convert "reference += int" to "reference = reference + int". We need this because the // "reference + int" calculation involves a cast back to the original type, which makes it // not an lvalue. - if ((op == EOpAddAssign || op == EOpSubAssign) && left->isReference() && - extensionRequested(E_GL_EXT_buffer_reference2)) { - + if ((op == EOpAddAssign || op == EOpSubAssign) && left->isReference()) { if (!(right->getType().isScalar() && right->getType().isIntegerDomain())) return nullptr; @@ -338,7 +337,8 @@ TIntermTyped* TIntermediate::addAssign(TOperator op, TIntermTyped* left, TInterm // Returns the added node. // The caller should set the type of the returned node. // -TIntermTyped* TIntermediate::addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, TSourceLoc loc) +TIntermTyped* TIntermediate::addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, + const TSourceLoc& loc) { // caller should set the type return addBinaryNode(op, base, index, loc); @@ -349,7 +349,8 @@ TIntermTyped* TIntermediate::addIndex(TOperator op, TIntermTyped* base, TIntermT // // Returns the added node. // -TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSourceLoc loc) +TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, + const TSourceLoc& loc) { if (child == 0) return nullptr; @@ -415,20 +416,24 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo // TODO: but, did this bypass constant folding? // switch (op) { - case EOpConstructInt8: - case EOpConstructUint8: - case EOpConstructInt16: - case EOpConstructUint16: - case EOpConstructInt: - case EOpConstructUint: - case EOpConstructInt64: - case EOpConstructUint64: - case EOpConstructBool: - case EOpConstructFloat: - case EOpConstructDouble: - case EOpConstructFloat16: - return child; - default: break; // some compilers want this + case EOpConstructInt8: + case EOpConstructUint8: + case EOpConstructInt16: + case EOpConstructUint16: + case EOpConstructInt: + case EOpConstructUint: + case EOpConstructInt64: + case EOpConstructUint64: + case EOpConstructBool: + case EOpConstructFloat: + case EOpConstructDouble: + case EOpConstructFloat16: { + TIntermUnary* unary_node = child->getAsUnaryNode(); + if (unary_node != nullptr) + unary_node->updatePrecision(); + return child; + } + default: break; // some compilers want this } // @@ -495,7 +500,8 @@ TIntermTyped* TIntermediate::addBuiltInFunctionCall(const TSourceLoc& loc, TOper // Returns an aggregate node, which could be the one passed in if // it was already an aggregate. // -TIntermTyped* TIntermediate::setAggregateOperator(TIntermNode* node, TOperator op, const TType& type, TSourceLoc loc) +TIntermTyped* TIntermediate::setAggregateOperator(TIntermNode* node, TOperator op, const TType& type, + const TSourceLoc& loc) { TIntermAggregate* aggNode; @@ -510,8 +516,6 @@ TIntermTyped* TIntermediate::setAggregateOperator(TIntermNode* node, TOperator o // aggNode = new TIntermAggregate(); aggNode->getSequence().push_back(node); - if (loc.line == 0) - loc = node->getLoc(); } } else aggNode = new TIntermAggregate(); @@ -520,8 +524,8 @@ TIntermTyped* TIntermediate::setAggregateOperator(TIntermNode* node, TOperator o // Set the operator. // aggNode->setOperator(op); - if (loc.line != 0) - aggNode->setLoc(loc); + if (loc.line != 0 || node != nullptr) + aggNode->setLoc(loc.line != 0 ? loc : node->getLoc()); aggNode->setType(type); @@ -538,7 +542,7 @@ bool TIntermediate::isConversionAllowed(TOperator op, TIntermTyped* node) const return false; case EbtAtomicUint: case EbtSampler: - case EbtAccStructNV: + case EbtAccStruct: // opaque types can be passed to functions if (op == EOpFunction) break; @@ -819,22 +823,25 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped node->getBasicType() == EbtFloat || node->getBasicType() == EbtDouble); - if (! getArithemeticInt8Enabled()) { - if (((convertTo == EbtInt8 || convertTo == EbtUint8) && ! convertFromIntTypes) || - ((node->getBasicType() == EbtInt8 || node->getBasicType() == EbtUint8) && ! convertToIntTypes)) + if (((convertTo == EbtInt8 || convertTo == EbtUint8) && ! convertFromIntTypes) || + ((node->getBasicType() == EbtInt8 || node->getBasicType() == EbtUint8) && ! convertToIntTypes)) { + if (! getArithemeticInt8Enabled()) { return nullptr; + } } - if (! getArithemeticInt16Enabled()) { - if (((convertTo == EbtInt16 || convertTo == EbtUint16) && ! convertFromIntTypes) || - ((node->getBasicType() == EbtInt16 || node->getBasicType() == EbtUint16) && ! convertToIntTypes)) + if (((convertTo == EbtInt16 || convertTo == EbtUint16) && ! convertFromIntTypes) || + ((node->getBasicType() == EbtInt16 || node->getBasicType() == EbtUint16) && ! convertToIntTypes)) { + if (! getArithemeticInt16Enabled()) { return nullptr; + } } - if (! getArithemeticFloat16Enabled()) { - if ((convertTo == EbtFloat16 && ! convertFromFloatTypes) || - (node->getBasicType() == EbtFloat16 && ! convertToFloatTypes)) + if ((convertTo == EbtFloat16 && ! convertFromFloatTypes) || + (node->getBasicType() == EbtFloat16 && ! convertToFloatTypes)) { + if (! getArithemeticFloat16Enabled()) { return nullptr; + } } #endif @@ -887,7 +894,7 @@ TIntermTyped* TIntermediate::addConversion(TBasicType convertTo, TIntermTyped* n // Returns the converted pair of nodes. // Returns when there is no conversion. std::tuple -TIntermediate::addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* node1) +TIntermediate::addPairConversion(TOperator op, TIntermTyped* node0, TIntermTyped* node1) { if (!isConversionAllowed(op, node0) || !isConversionAllowed(op, node1)) return std::make_tuple(nullptr, nullptr); @@ -940,7 +947,7 @@ TIntermediate::addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* no if (node0->getBasicType() == node1->getBasicType()) return std::make_tuple(node0, node1); - promoteTo = getConversionDestinatonType(node0->getBasicType(), node1->getBasicType(), op); + promoteTo = getConversionDestinationType(node0->getBasicType(), node1->getBasicType(), op); if (std::get<0>(promoteTo) == EbtNumTypes || std::get<1>(promoteTo) == EbtNumTypes) return std::make_tuple(nullptr, nullptr); @@ -1040,64 +1047,30 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt // Note: callers are responsible for other aspects of shape, // like vector and matrix sizes. - TBasicType promoteTo; - // GL_EXT_shader_16bit_storage can't do OpConstantComposite with - // 16-bit types, so disable promotion for those types. - bool canPromoteConstant = true; - switch (op) { // // Explicit conversions (unary operations) // case EOpConstructBool: - promoteTo = EbtBool; - break; case EOpConstructFloat: - promoteTo = EbtFloat; - break; case EOpConstructInt: - promoteTo = EbtInt; - break; case EOpConstructUint: - promoteTo = EbtUint; - break; #ifndef GLSLANG_WEB case EOpConstructDouble: - promoteTo = EbtDouble; - break; case EOpConstructFloat16: - promoteTo = EbtFloat16; - canPromoteConstant = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float16); - break; case EOpConstructInt8: - promoteTo = EbtInt8; - canPromoteConstant = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int8); - break; case EOpConstructUint8: - promoteTo = EbtUint8; - canPromoteConstant = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int8); - break; case EOpConstructInt16: - promoteTo = EbtInt16; - canPromoteConstant = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int16); - break; case EOpConstructUint16: - promoteTo = EbtUint16; - canPromoteConstant = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int16); - break; case EOpConstructInt64: - promoteTo = EbtInt64; - break; case EOpConstructUint64: - promoteTo = EbtUint64; break; + #endif + // + // Implicit conversions + // case EOpLogicalNot: case EOpFunctionCall: @@ -1152,9 +1125,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt if (type.getBasicType() == node->getType().getBasicType()) return node; - if (canImplicitlyPromote(node->getBasicType(), type.getBasicType(), op)) - promoteTo = type.getBasicType(); - else + if (! canImplicitlyPromote(node->getBasicType(), type.getBasicType(), op)) return nullptr; break; @@ -1164,9 +1135,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EOpLeftShiftAssign: case EOpRightShiftAssign: { - if (getSource() == EShSourceHlsl && node->getType().getBasicType() == EbtBool) - promoteTo = type.getBasicType(); - else { + if (!(getSource() == EShSourceHlsl && node->getType().getBasicType() == EbtBool)) { if (isTypeInt(type.getBasicType()) && isTypeInt(node->getBasicType())) return node; else @@ -1184,13 +1153,44 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt return nullptr; } + bool canPromoteConstant = true; +#ifndef GLSLANG_WEB + // GL_EXT_shader_16bit_storage can't do OpConstantComposite with + // 16-bit types, so disable promotion for those types. + // Many issues with this, from JohnK: + // - this isn't really right to discuss SPIR-V here + // - this could easily be entirely about scalars, so is overstepping + // - we should be looking at what the shader asked for, and saying whether or + // not it can be done, in the parser, by calling requireExtensions(), not + // changing language sementics on the fly by asking what extensions are in use + // - at the time of this writing (14-Aug-2020), no test results are changed by this. + switch (op) { + case EOpConstructFloat16: + canPromoteConstant = numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) || + numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float16); + break; + case EOpConstructInt8: + case EOpConstructUint8: + canPromoteConstant = numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) || + numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int8); + break; + case EOpConstructInt16: + case EOpConstructUint16: + canPromoteConstant = numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) || + numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int16); + break; + default: + break; + } +#endif + if (canPromoteConstant && node->getAsConstantUnion()) - return promoteConstantUnion(promoteTo, node->getAsConstantUnion()); + return promoteConstantUnion(type.getBasicType(), node->getAsConstantUnion()); // // Add a new newNode for the conversion. // - TIntermTyped* newNode = createConversion(promoteTo, node); + TIntermTyped* newNode = createConversion(type.getBasicType(), node); return newNode; } @@ -1620,7 +1620,7 @@ bool TIntermediate::isFPIntegralConversion(TBasicType from, TBasicType to) const // bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperator op) const { - if (isEsProfile() || version == 110) + if ((isEsProfile() && version < 310 ) || version == 110) return false; if (from == to) @@ -1659,46 +1659,51 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat } } - bool explicitTypesEnabled = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int8) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int16) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int32) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int64) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float16) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float32) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float64); - - if (explicitTypesEnabled) { - // integral promotions - if (isIntegralPromotion(from, to)) { - return true; - } - - // floating-point promotions - if (isFPPromotion(from, to)) { - return true; - } - - // integral conversions - if (isIntegralConversion(from, to)) { + if (getSource() == EShSourceHlsl) { + // HLSL + if (from == EbtBool && (to == EbtInt || to == EbtUint || to == EbtFloat)) return true; - } - - // floating-point conversions - if (isFPConversion(from, to)) { - return true; - } - - // floating-integral conversions - if (isFPIntegralConversion(from, to)) { - return true; - } - - // hlsl supported conversions - if (getSource() == EShSourceHlsl) { - if (from == EbtBool && (to == EbtInt || to == EbtUint || to == EbtFloat)) + } else { + // GLSL + if (isIntegralPromotion(from, to) || + isFPPromotion(from, to) || + isIntegralConversion(from, to) || + isFPConversion(from, to) || + isFPIntegralConversion(from, to)) { + + if (numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) || + numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int8) || + numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int16) || + numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int32) || + numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int64) || + numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float16) || + numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float32) || + numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float64)) { return true; + } } + } + + if (isEsProfile()) { + switch (to) { + case EbtFloat: + switch (from) { + case EbtInt: + case EbtUint: + return numericFeatures.contains(TNumericFeatures::shader_implicit_conversions); + default: + return false; + } + case EbtUint: + switch (from) { + case EbtInt: + return numericFeatures.contains(TNumericFeatures::shader_implicit_conversions); + default: + return false; + } + default: + return false; + } } else { switch (to) { case EbtDouble: @@ -1708,13 +1713,14 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat case EbtInt64: case EbtUint64: case EbtFloat: - case EbtDouble: - return true; + return version >= 400 || numericFeatures.contains(TNumericFeatures::gpu_shader_fp64); case EbtInt16: case EbtUint16: - return extensionRequested(E_GL_AMD_gpu_shader_int16); + return (version >= 400 || numericFeatures.contains(TNumericFeatures::gpu_shader_fp64)) && + numericFeatures.contains(TNumericFeatures::gpu_shader_int16); case EbtFloat16: - return extensionRequested(E_GL_AMD_gpu_shader_half_float); + return (version >= 400 || numericFeatures.contains(TNumericFeatures::gpu_shader_fp64)) && + numericFeatures.contains(TNumericFeatures::gpu_shader_half_float); default: return false; } @@ -1722,16 +1728,14 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat switch (from) { case EbtInt: case EbtUint: - case EbtFloat: return true; case EbtBool: return getSource() == EShSourceHlsl; case EbtInt16: case EbtUint16: - return extensionRequested(E_GL_AMD_gpu_shader_int16); + return numericFeatures.contains(TNumericFeatures::gpu_shader_int16); case EbtFloat16: - return - extensionRequested(E_GL_AMD_gpu_shader_half_float) || + return numericFeatures.contains(TNumericFeatures::gpu_shader_half_float) || getSource() == EShSourceHlsl; default: return false; @@ -1739,25 +1743,21 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat case EbtUint: switch (from) { case EbtInt: - return version >= 400 || getSource() == EShSourceHlsl; - case EbtUint: - return true; + return version >= 400 || getSource() == EShSourceHlsl || IsRequestedExtension(E_GL_ARB_gpu_shader5); case EbtBool: return getSource() == EShSourceHlsl; case EbtInt16: case EbtUint16: - return extensionRequested(E_GL_AMD_gpu_shader_int16); + return numericFeatures.contains(TNumericFeatures::gpu_shader_int16); default: return false; } case EbtInt: switch (from) { - case EbtInt: - return true; case EbtBool: return getSource() == EShSourceHlsl; case EbtInt16: - return extensionRequested(E_GL_AMD_gpu_shader_int16); + return numericFeatures.contains(TNumericFeatures::gpu_shader_int16); default: return false; } @@ -1766,21 +1766,19 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat case EbtInt: case EbtUint: case EbtInt64: - case EbtUint64: return true; case EbtInt16: case EbtUint16: - return extensionRequested(E_GL_AMD_gpu_shader_int16); + return numericFeatures.contains(TNumericFeatures::gpu_shader_int16); default: return false; } case EbtInt64: switch (from) { case EbtInt: - case EbtInt64: return true; case EbtInt16: - return extensionRequested(E_GL_AMD_gpu_shader_int16); + return numericFeatures.contains(TNumericFeatures::gpu_shader_int16); default: return false; } @@ -1788,9 +1786,7 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat switch (from) { case EbtInt16: case EbtUint16: - return extensionRequested(E_GL_AMD_gpu_shader_int16); - case EbtFloat16: - return extensionRequested(E_GL_AMD_gpu_shader_half_float); + return numericFeatures.contains(TNumericFeatures::gpu_shader_int16); default: break; } @@ -1798,8 +1794,7 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat case EbtUint16: switch (from) { case EbtInt16: - case EbtUint16: - return extensionRequested(E_GL_AMD_gpu_shader_int16); + return numericFeatures.contains(TNumericFeatures::gpu_shader_int16); default: break; } @@ -1926,12 +1921,14 @@ static TBasicType getCorrespondingUnsignedType(TBasicType type) // integer type corresponding to the type of the operand with signed // integer type. -std::tuple TIntermediate::getConversionDestinatonType(TBasicType type0, TBasicType type1, TOperator op) const +std::tuple TIntermediate::getConversionDestinationType(TBasicType type0, TBasicType type1, TOperator op) const { TBasicType res0 = EbtNumTypes; TBasicType res1 = EbtNumTypes; - if (isEsProfile() || version == 110) + if ((isEsProfile() && + (version < 310 || !numericFeatures.contains(TNumericFeatures::shader_implicit_conversions))) || + version == 110) return std::make_tuple(res0, res1); if (getSource() == EShSourceHlsl) { @@ -2305,6 +2302,10 @@ TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const case EbtReference: op = EOpConstructReference; break; + + case EbtAccStruct: + op = EOpConstructAccStruct; + break; #endif default: break; @@ -2463,7 +2464,7 @@ TIntermTyped* TIntermediate::addSelection(TIntermTyped* cond, TIntermTyped* true // // Get compatible types. // - auto children = addConversion(EOpSequence, trueBlock, falseBlock); + auto children = addPairConversion(EOpSequence, trueBlock, falseBlock); trueBlock = std::get<0>(children); falseBlock = std::get<1>(children); @@ -2679,7 +2680,11 @@ TIntermTyped* TIntermediate::addSwizzle(TSwizzleSelectors& selecto // 'swizzleOkay' says whether or not it is okay to consider a swizzle // a valid part of the dereference chain. // -const TIntermTyped* TIntermediate::findLValueBase(const TIntermTyped* node, bool swizzleOkay) +// 'BufferReferenceOk' says if type is buffer_reference, the routine stop to find the most left node. +// +// + +const TIntermTyped* TIntermediate::findLValueBase(const TIntermTyped* node, bool swizzleOkay , bool bufferReferenceOk) { do { const TIntermBinary* binary = node->getAsBinaryNode(); @@ -2697,6 +2702,8 @@ const TIntermTyped* TIntermediate::findLValueBase(const TIntermTyped* node, bool return nullptr; } node = node->getAsBinaryNode()->getLeft(); + if (bufferReferenceOk && node->isReference()) + return node; } while (true); } @@ -2750,6 +2757,22 @@ TIntermBranch* TIntermediate::addBranch(TOperator branchOp, TIntermTyped* expres return node; } +// Propagate precision from formal function return type to actual return type, +// and on to its subtree. +void TIntermBranch::updatePrecision(TPrecisionQualifier parentPrecision) +{ + TIntermTyped* exp = getExpression(); + if (exp == nullptr) + return; + + if (exp->getBasicType() == EbtInt || exp->getBasicType() == EbtUint || + exp->getBasicType() == EbtFloat) { + if (parentPrecision != EpqNone && exp->getQualifier().precision == EpqNone) { + exp->propagatePrecision(parentPrecision); + } + } +} + // // This is to be executed after the final root is put on top by the parsing // process. @@ -2774,6 +2797,9 @@ bool TIntermediate::postProcess(TIntermNode* root, EShLanguage /*language*/) case EShTexSampTransUpgradeTextureRemoveSampler: performTextureUpgradeAndSamplerRemovalTransformation(root); break; + case EShTexSampTransCount: + assert(0); + break; } #endif @@ -2854,7 +2880,7 @@ void TIntermediate::addToCallGraph(TInfoSink& /*infoSink*/, const TString& calle return; } - callGraph.push_front(TCall(caller, callee)); + callGraph.emplace_front(caller, callee); } // @@ -3234,10 +3260,17 @@ bool TIntermediate::promoteUnary(TIntermUnary& node) return false; break; - default: - if (operand->getBasicType() != EbtFloat) + // HLSL uses this path for initial function signature finding for built-ins + // taking a single argument, which generally don't participate in + // operator-based type promotion (type conversion will occur later). + // For now, scalar argument cases are relying on the setType() call below. + if (getSource() == EShSourceHlsl) + break; + // GLSL only allows integer arguments for the cases identified above in the + // case statements. + if (operand->getBasicType() != EbtFloat) return false; } @@ -3247,9 +3280,11 @@ bool TIntermediate::promoteUnary(TIntermUnary& node) return true; } +// Propagate precision qualifiers *up* from children to parent. void TIntermUnary::updatePrecision() { - if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat || getBasicType() == EbtFloat16) { + if (getBasicType() == EbtInt || getBasicType() == EbtUint || + getBasicType() == EbtFloat) { if (operand->getQualifier().precision > getQualifier().precision) getQualifier().precision = operand->getQualifier().precision; } @@ -3745,20 +3780,55 @@ bool TIntermediate::promoteAggregate(TIntermAggregate& node) return false; } -void TIntermBinary::updatePrecision() +// Propagate precision qualifiers *up* from children to parent, and then +// back *down* again to the children's subtrees. +void TIntermAggregate::updatePrecision() { - if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat || getBasicType() == EbtFloat16) { - getQualifier().precision = std::max(right->getQualifier().precision, left->getQualifier().precision); - if (getQualifier().precision != EpqNone) { - left->propagatePrecision(getQualifier().precision); - right->propagatePrecision(getQualifier().precision); + if (getBasicType() == EbtInt || getBasicType() == EbtUint || + getBasicType() == EbtFloat) { + TPrecisionQualifier maxPrecision = EpqNone; + TIntermSequence operands = getSequence(); + for (unsigned int i = 0; i < operands.size(); ++i) { + TIntermTyped* typedNode = operands[i]->getAsTyped(); + assert(typedNode); + maxPrecision = std::max(maxPrecision, typedNode->getQualifier().precision); } + getQualifier().precision = maxPrecision; + for (unsigned int i = 0; i < operands.size(); ++i) { + TIntermTyped* typedNode = operands[i]->getAsTyped(); + assert(typedNode); + typedNode->propagatePrecision(maxPrecision); + } + } +} + +// Propagate precision qualifiers *up* from children to parent, and then +// back *down* again to the children's subtrees. +void TIntermBinary::updatePrecision() +{ + if (getBasicType() == EbtInt || getBasicType() == EbtUint || + getBasicType() == EbtFloat) { + if (op == EOpRightShift || op == EOpLeftShift) { + // For shifts get precision from left side only and thus no need to propagate + getQualifier().precision = left->getQualifier().precision; + } else { + getQualifier().precision = std::max(right->getQualifier().precision, left->getQualifier().precision); + if (getQualifier().precision != EpqNone) { + left->propagatePrecision(getQualifier().precision); + right->propagatePrecision(getQualifier().precision); + } + } } } +// Recursively propagate precision qualifiers *down* the subtree of the current node, +// until reaching a node that already has a precision qualifier or otherwise does +// not participate in precision propagation. void TIntermTyped::propagatePrecision(TPrecisionQualifier newPrecision) { - if (getQualifier().precision != EpqNone || (getBasicType() != EbtInt && getBasicType() != EbtUint && getBasicType() != EbtFloat && getBasicType() != EbtFloat16)) + if (getQualifier().precision != EpqNone || + (getBasicType() != EbtInt && getBasicType() != EbtUint && + getBasicType() != EbtFloat && getBasicType() != EbtFloat16)) return; getQualifier().precision = newPrecision; @@ -3832,7 +3902,7 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC case EbtFloat16: PROMOTE(setDConst, double, Get); break; \ case EbtFloat: PROMOTE(setDConst, double, Get); break; \ case EbtDouble: PROMOTE(setDConst, double, Get); break; \ - case EbtInt8: PROMOTE(setI8Const, char, Get); break; \ + case EbtInt8: PROMOTE(setI8Const, signed char, Get); break; \ case EbtInt16: PROMOTE(setI16Const, short, Get); break; \ case EbtInt: PROMOTE(setIConst, int, Get); break; \ case EbtInt64: PROMOTE(setI64Const, long long, Get); break; \ diff --git a/Externals/glslang/glslang/MachineIndependent/LiveTraverser.h b/Externals/glslang/glslang/MachineIndependent/LiveTraverser.h index 7333bc964e4e..9b39b5983f56 100644 --- a/Externals/glslang/glslang/MachineIndependent/LiveTraverser.h +++ b/Externals/glslang/glslang/MachineIndependent/LiveTraverser.h @@ -74,14 +74,33 @@ class TLiveTraverser : public TIntermTraverser { for (unsigned int f = 0; f < globals.size(); ++f) { TIntermAggregate* candidate = globals[f]->getAsAggregate(); if (candidate && candidate->getOp() == EOpFunction && candidate->getName() == name) { - functions.push_back(candidate); + destinations.push_back(candidate); break; } } } - typedef std::list TFunctionStack; - TFunctionStack functions; + void pushGlobalReference(const TString& name) + { + TIntermSequence& globals = intermediate.getTreeRoot()->getAsAggregate()->getSequence(); + for (unsigned int f = 0; f < globals.size(); ++f) { + TIntermAggregate* candidate = globals[f]->getAsAggregate(); + if (candidate && candidate->getOp() == EOpSequence && + candidate->getSequence().size() == 1 && + candidate->getSequence()[0]->getAsBinaryNode()) { + TIntermBinary* binary = candidate->getSequence()[0]->getAsBinaryNode(); + TIntermSymbol* symbol = binary->getLeft()->getAsSymbolNode(); + if (symbol && symbol->getQualifier().storage == EvqGlobal && + symbol->getName() == name) { + destinations.push_back(candidate); + break; + } + } + } + } + + typedef std::list TDestinationStack; + TDestinationStack destinations; protected: // To catch which function calls are not dead, and hence which functions must be visited. @@ -117,16 +136,27 @@ class TLiveTraverser : public TIntermTraverser { // and only visit each function once. void addFunctionCall(TIntermAggregate* call) { - // // just use the map to ensure we process each function at most once + // just use the map to ensure we process each function at most once if (liveFunctions.find(call->getName()) == liveFunctions.end()) { liveFunctions.insert(call->getName()); pushFunction(call->getName()); } } + void addGlobalReference(const TString& name) + { + // just use the map to ensure we process each global at most once + if (liveGlobals.find(name) == liveGlobals.end()) { + liveGlobals.insert(name); + pushGlobalReference(name); + } + } + const TIntermediate& intermediate; typedef std::unordered_set TLiveFunctions; TLiveFunctions liveFunctions; + typedef std::unordered_set TLiveGlobals; + TLiveGlobals liveGlobals; bool traverseAll; private: diff --git a/Externals/glslang/glslang/MachineIndependent/ParseContextBase.cpp b/Externals/glslang/glslang/MachineIndependent/ParseContextBase.cpp index 282ecca0e07c..616580f993e2 100644 --- a/Externals/glslang/glslang/MachineIndependent/ParseContextBase.cpp +++ b/Externals/glslang/glslang/MachineIndependent/ParseContextBase.cpp @@ -74,6 +74,9 @@ void C_DECL TParseContextBase::error(const TSourceLoc& loc, const char* szReason { if (messages & EShMsgOnlyPreprocessor) return; + // If enhanced msg readability, only print one error + if (messages & EShMsgEnhanced && numErrors > 0) + return; va_list args; va_start(args, szExtraInfoFormat); outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); @@ -127,22 +130,6 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, { TIntermBinary* binaryNode = node->getAsBinaryNode(); - if (binaryNode) { - switch(binaryNode->getOp()) { - case EOpIndexDirect: - case EOpIndexIndirect: // fall through - case EOpIndexDirectStruct: // fall through - case EOpVectorSwizzle: - case EOpMatrixSwizzle: - return lValueErrorCheck(loc, op, binaryNode->getLeft()); - default: - break; - } - error(loc, " l-value required", op, "", ""); - - return true; - } - const char* symbol = nullptr; TIntermSymbol* symNode = node->getAsSymbolNode(); if (symNode != nullptr) @@ -157,11 +144,11 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, case EvqBuffer: if (node->getQualifier().isReadOnly()) message = "can't modify a readonly buffer"; - if (node->getQualifier().isShaderRecordNV()) + if (node->getQualifier().isShaderRecord()) message = "can't modify a shaderrecordnv qualified buffer"; break; - case EvqHitAttrNV: - if (language != EShLangIntersectNV) + case EvqHitAttr: + if (language != EShLangIntersect) message = "cannot modify hitAttributeNV in this stage"; break; #endif @@ -181,9 +168,12 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, case EbtAtomicUint: message = "can't modify an atomic_uint"; break; - case EbtAccStructNV: + case EbtAccStruct: message = "can't modify accelerationStructureNV"; break; + case EbtRayQuery: + message = "can't modify rayQueryEXT"; + break; #endif default: break; @@ -200,15 +190,40 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, // Everything else is okay, no error. // if (message == nullptr) + { + if (binaryNode) { + switch (binaryNode->getOp()) { + case EOpIndexDirect: + case EOpIndexIndirect: // fall through + case EOpIndexDirectStruct: // fall through + case EOpVectorSwizzle: + case EOpMatrixSwizzle: + return lValueErrorCheck(loc, op, binaryNode->getLeft()); + default: + break; + } + error(loc, " l-value required", op, "", ""); + + return true; + } return false; + } // // If we get here, we have an error and a message. // + const TIntermTyped* leftMostTypeNode = TIntermediate::findLValueBase(node, true); + if (symNode) error(loc, " l-value required", op, "\"%s\" (%s)", symbol, message); else - error(loc, " l-value required", op, "(%s)", message); + if (binaryNode && binaryNode->getAsOperator()->getOp() == EOpIndexDirectStruct) + if(IsAnonymous(leftMostTypeNode->getAsSymbolNode()->getName())) + error(loc, " l-value required", op, "\"%s\" (%s)", leftMostTypeNode->getAsSymbolNode()->getAccessName().c_str(), message); + else + error(loc, " l-value required", op, "\"%s\" (%s)", leftMostTypeNode->getAsSymbolNode()->getName().c_str(), message); + else + error(loc, " l-value required", op, "(%s)", message); return true; } @@ -216,28 +231,41 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, // Test for and give an error if the node can't be read from. void TParseContextBase::rValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) { + TIntermBinary* binaryNode = node->getAsBinaryNode(); + const TIntermSymbol* symNode = node->getAsSymbolNode(); + if (! node) return; - TIntermBinary* binaryNode = node->getAsBinaryNode(); - if (binaryNode) { - switch(binaryNode->getOp()) { - case EOpIndexDirect: - case EOpIndexIndirect: - case EOpIndexDirectStruct: - case EOpVectorSwizzle: - case EOpMatrixSwizzle: - rValueErrorCheck(loc, op, binaryNode->getLeft()); - default: - break; - } + if (node->getQualifier().isWriteOnly()) { + const TIntermTyped* leftMostTypeNode = TIntermediate::findLValueBase(node, true); + + if (symNode != nullptr) + error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str()); + else if (binaryNode && + (binaryNode->getAsOperator()->getOp() == EOpIndexDirectStruct || + binaryNode->getAsOperator()->getOp() == EOpIndexDirect)) + if(IsAnonymous(leftMostTypeNode->getAsSymbolNode()->getName())) + error(loc, "can't read from writeonly object: ", op, leftMostTypeNode->getAsSymbolNode()->getAccessName().c_str()); + else + error(loc, "can't read from writeonly object: ", op, leftMostTypeNode->getAsSymbolNode()->getName().c_str()); + else + error(loc, "can't read from writeonly object: ", op, ""); - return; + } else { + if (binaryNode) { + switch (binaryNode->getOp()) { + case EOpIndexDirect: + case EOpIndexIndirect: + case EOpIndexDirectStruct: + case EOpVectorSwizzle: + case EOpMatrixSwizzle: + rValueErrorCheck(loc, op, binaryNode->getLeft()); + default: + break; + } + } } - - TIntermSymbol* symNode = node->getAsSymbolNode(); - if (symNode && symNode->getQualifier().isWriteOnly()) - error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str()); } // Add 'symbol' to the list of deferred linkage symbols, which @@ -576,7 +604,6 @@ void TParseContextBase::parseSwizzleSelector(const TSourceLoc& loc, const TStrin selector.push_back(0); } -#ifdef ENABLE_HLSL // // Make the passed-in variable information become a member of the // global uniform block. If this doesn't exist yet, make it. @@ -598,6 +625,19 @@ void TParseContextBase::growGlobalUniformBlock(const TSourceLoc& loc, TType& mem globalUniformBlock->getWritableType().getQualifier().layoutBinding = globalUniformBinding; globalUniformBlock->getWritableType().getQualifier().layoutSet = globalUniformSet; + // Check for declarations of this default uniform that already exist due to other compilation units. + TSymbol* symbol = symbolTable.find(memberName); + if (symbol) { + if (memberType != symbol->getType()) { + TString err; + err += "\"" + memberType.getCompleteString() + "\""; + err += " versus "; + err += "\"" + symbol->getType().getCompleteString() + "\""; + error(loc, "Types must match:", memberType.getFieldName().c_str(), err.c_str()); + } + return; + } + // Add the requested member as a member to the global block. TType* type = new TType; type->shallowCopy(memberType); @@ -621,7 +661,67 @@ void TParseContextBase::growGlobalUniformBlock(const TSourceLoc& loc, TType& mem ++firstNewMember; } -#endif + +void TParseContextBase::growAtomicCounterBlock(int binding, const TSourceLoc& loc, TType& memberType, const TString& memberName, TTypeList* typeList) { + // Make the atomic counter block, if not yet made. + const auto &at = atomicCounterBuffers.find(binding); + if (at == atomicCounterBuffers.end()) { + atomicCounterBuffers.insert({binding, (TVariable*)nullptr }); + atomicCounterBlockFirstNewMember.insert({binding, 0}); + } + + TVariable*& atomicCounterBuffer = atomicCounterBuffers[binding]; + int& bufferNewMember = atomicCounterBlockFirstNewMember[binding]; + + if (atomicCounterBuffer == nullptr) { + TQualifier blockQualifier; + blockQualifier.clear(); + blockQualifier.storage = EvqBuffer; + + char charBuffer[512]; + if (binding != TQualifier::layoutBindingEnd) { + snprintf(charBuffer, 512, "%s_%d", getAtomicCounterBlockName(), binding); + } else { + snprintf(charBuffer, 512, "%s_0", getAtomicCounterBlockName()); + } + + TType blockType(new TTypeList, *NewPoolTString(charBuffer), blockQualifier); + setUniformBlockDefaults(blockType); + blockType.getQualifier().layoutPacking = ElpStd430; + atomicCounterBuffer = new TVariable(NewPoolTString(""), blockType, true); + // If we arn't auto mapping bindings then set the block to use the same + // binding as what the atomic was set to use + if (!intermediate.getAutoMapBindings()) { + atomicCounterBuffer->getWritableType().getQualifier().layoutBinding = binding; + } + bufferNewMember = 0; + + atomicCounterBuffer->getWritableType().getQualifier().layoutSet = atomicCounterBlockSet; + } + + // Add the requested member as a member to the global block. + TType* type = new TType; + type->shallowCopy(memberType); + type->setFieldName(memberName); + if (typeList) + type->setStruct(typeList); + TTypeLoc typeLoc = {type, loc}; + atomicCounterBuffer->getType().getWritableStruct()->push_back(typeLoc); + + // Insert into the symbol table. + if (bufferNewMember == 0) { + // This is the first request; we need a normal symbol table insert + if (symbolTable.insert(*atomicCounterBuffer)) + trackLinkage(*atomicCounterBuffer); + else + error(loc, "failed to insert the global constant buffer", "buffer", ""); + } else { + // This is a follow-on request; we need to amend the first insert + symbolTable.amend(*atomicCounterBuffer, bufferNewMember); + } + + ++bufferNewMember; +} void TParseContextBase::finish() { diff --git a/Externals/glslang/glslang/MachineIndependent/ParseHelper.cpp b/Externals/glslang/glslang/MachineIndependent/ParseHelper.cpp index a2224e1609c2..496a9a134b8a 100644 --- a/Externals/glslang/glslang/MachineIndependent/ParseHelper.cpp +++ b/Externals/glslang/glslang/MachineIndependent/ParseHelper.cpp @@ -3,6 +3,7 @@ // Copyright (C) 2012-2015 LunarG, Inc. // Copyright (C) 2015-2018 Google, Inc. // Copyright (C) 2017, 2019 ARM Limited. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -86,6 +87,10 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b globalInputDefaults.clear(); globalOutputDefaults.clear(); + globalSharedDefaults.clear(); + globalSharedDefaults.layoutMatrix = ElmColumnMajor; + globalSharedDefaults.layoutPacking = ElpStd430; + #ifndef GLSLANG_WEB // "Shaders in the transform // feedback capturing mode have an initial global default of @@ -220,6 +225,118 @@ void TParseContext::parserError(const char* s) error(getCurrentLoc(), "compilation terminated", "", ""); } +void TParseContext::growGlobalUniformBlock(const TSourceLoc& loc, TType& memberType, const TString& memberName, TTypeList* typeList) +{ + bool createBlock = globalUniformBlock == nullptr; + + if (createBlock) { + globalUniformBinding = intermediate.getGlobalUniformBinding(); + globalUniformSet = intermediate.getGlobalUniformSet(); + } + + // use base class function to create/expand block + TParseContextBase::growGlobalUniformBlock(loc, memberType, memberName, typeList); + + if (spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) { + // check for a block storage override + TBlockStorageClass storageOverride = intermediate.getBlockStorageOverride(getGlobalUniformBlockName()); + TQualifier& qualifier = globalUniformBlock->getWritableType().getQualifier(); + qualifier.defaultBlock = true; + + if (storageOverride != EbsNone) { + if (createBlock) { + // Remap block storage + qualifier.setBlockStorage(storageOverride); + + // check that the change didn't create errors + blockQualifierCheck(loc, qualifier, false); + } + + // remap meber storage as well + memberType.getQualifier().setBlockStorage(storageOverride); + } + } +} + +void TParseContext::growAtomicCounterBlock(int binding, const TSourceLoc& loc, TType& memberType, const TString& memberName, TTypeList* typeList) +{ + bool createBlock = atomicCounterBuffers.find(binding) == atomicCounterBuffers.end(); + + if (createBlock) { + atomicCounterBlockSet = intermediate.getAtomicCounterBlockSet(); + } + + // use base class function to create/expand block + TParseContextBase::growAtomicCounterBlock(binding, loc, memberType, memberName, typeList); + TQualifier& qualifier = atomicCounterBuffers[binding]->getWritableType().getQualifier(); + qualifier.defaultBlock = true; + + if (spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) { + // check for a Block storage override + TBlockStorageClass storageOverride = intermediate.getBlockStorageOverride(getAtomicCounterBlockName()); + + if (storageOverride != EbsNone) { + if (createBlock) { + // Remap block storage + + qualifier.setBlockStorage(storageOverride); + + // check that the change didn't create errors + blockQualifierCheck(loc, qualifier, false); + } + + // remap meber storage as well + memberType.getQualifier().setBlockStorage(storageOverride); + } + } +} + +const char* TParseContext::getGlobalUniformBlockName() const +{ + const char* name = intermediate.getGlobalUniformBlockName(); + if (std::string(name) == "") + return "gl_DefaultUniformBlock"; + else + return name; +} +void TParseContext::finalizeGlobalUniformBlockLayout(TVariable&) +{ +} +void TParseContext::setUniformBlockDefaults(TType& block) const +{ + block.getQualifier().layoutPacking = ElpStd140; + block.getQualifier().layoutMatrix = ElmColumnMajor; +} + + +const char* TParseContext::getAtomicCounterBlockName() const +{ + const char* name = intermediate.getAtomicCounterBlockName(); + if (std::string(name) == "") + return "gl_AtomicCounterBlock"; + else + return name; +} +void TParseContext::finalizeAtomicCounterBlockLayout(TVariable&) +{ +} + +void TParseContext::setAtomicCounterBlockDefaults(TType& block) const +{ + block.getQualifier().layoutPacking = ElpStd430; + block.getQualifier().layoutMatrix = ElmRowMajor; +} + +void TParseContext::setInvariant(const TSourceLoc& loc, const char* builtin) { + TSymbol* symbol = symbolTable.find(builtin); + if (symbol && symbol->getType().getQualifier().isPipeOutput()) { + if (intermediate.inIoAccessed(builtin)) + warn(loc, "changing qualification after use", "invariant", builtin); + TSymbol* csymbol = symbolTable.copyUp(symbol); + csymbol->getWritableType().getQualifier().invariant = true; + } +} + void TParseContext::handlePragma(const TSourceLoc& loc, const TVector& tokens) { #ifndef GLSLANG_WEB @@ -245,7 +362,9 @@ void TParseContext::handlePragma(const TSourceLoc& loc, const TVector& else if (tokens[2].compare("off") == 0) contextPragma.optimize = false; else { - error(loc, "\"on\" or \"off\" expected after '(' for 'optimize' pragma", "#pragma", ""); + if(relaxedErrors()) + // If an implementation does not recognize the tokens following #pragma, then it will ignore that pragma. + warn(loc, "\"on\" or \"off\" expected after '(' for 'optimize' pragma", "#pragma", ""); return; } @@ -269,7 +388,9 @@ void TParseContext::handlePragma(const TSourceLoc& loc, const TVector& else if (tokens[2].compare("off") == 0) contextPragma.debug = false; else { - error(loc, "\"on\" or \"off\" expected after '(' for 'debug' pragma", "#pragma", ""); + if(relaxedErrors()) + // If an implementation does not recognize the tokens following #pragma, then it will ignore that pragma. + warn(loc, "\"on\" or \"off\" expected after '(' for 'debug' pragma", "#pragma", ""); return; } @@ -293,8 +414,33 @@ void TParseContext::handlePragma(const TSourceLoc& loc, const TVector& intermediate.setUseVariablePointers(); } else if (tokens[0].compare("once") == 0) { warn(loc, "not implemented", "#pragma once", ""); - } else if (tokens[0].compare("glslang_binary_double_output") == 0) + } else if (tokens[0].compare("glslang_binary_double_output") == 0) { intermediate.setBinaryDoubleOutput(); + } else if (spvVersion.spv > 0 && tokens[0].compare("STDGL") == 0 && + tokens[1].compare("invariant") == 0 && tokens[3].compare("all") == 0) { + intermediate.setInvariantAll(); + // Set all builtin out variables invariant if declared + setInvariant(loc, "gl_Position"); + setInvariant(loc, "gl_PointSize"); + setInvariant(loc, "gl_ClipDistance"); + setInvariant(loc, "gl_CullDistance"); + setInvariant(loc, "gl_TessLevelOuter"); + setInvariant(loc, "gl_TessLevelInner"); + setInvariant(loc, "gl_PrimitiveID"); + setInvariant(loc, "gl_Layer"); + setInvariant(loc, "gl_ViewportIndex"); + setInvariant(loc, "gl_FragDepth"); + setInvariant(loc, "gl_SampleMask"); + setInvariant(loc, "gl_ClipVertex"); + setInvariant(loc, "gl_FrontColor"); + setInvariant(loc, "gl_BackColor"); + setInvariant(loc, "gl_FrontSecondaryColor"); + setInvariant(loc, "gl_BackSecondaryColor"); + setInvariant(loc, "gl_TexCoord"); + setInvariant(loc, "gl_FogFragCoord"); + setInvariant(loc, "gl_FragColor"); + setInvariant(loc, "gl_FragData"); + } #endif } @@ -427,8 +573,18 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn #ifndef GLSLANG_WEB if (base->isReference() && ! base->isArray()) { requireExtensions(loc, 1, &E_GL_EXT_buffer_reference2, "buffer reference indexing"); - result = intermediate.addBinaryMath(EOpAdd, base, index, loc); - result->setType(base->getType()); + if (base->getType().getReferentType()->containsUnsizedArray()) { + error(loc, "cannot index reference to buffer containing an unsized array", "", ""); + result = nullptr; + } else { + result = intermediate.addBinaryMath(EOpAdd, base, index, loc); + if (result != nullptr) + result->setType(base->getType()); + } + if (result == nullptr) { + error(loc, "cannot index buffer reference", "", ""); + result = intermediate.addConstantUnion(0.0, EbtFloat, loc); + } return result; } if (base->getAsSymbolNode() && isIoResizeArray(base->getType())) @@ -740,11 +896,16 @@ TIntermTyped* TParseContext::handleBinaryMath(const TSourceLoc& loc, const char* } TIntermTyped* result = nullptr; - if (allowed) + if (allowed) { + if ((left->isReference() || right->isReference())) + requireExtensions(loc, 1, &E_GL_EXT_buffer_reference2, "buffer reference math"); result = intermediate.addBinaryMath(op, left, right, loc); + } - if (result == nullptr) - binaryOpError(loc, str, left->getCompleteString(), right->getCompleteString()); + if (result == nullptr) { + bool enhanced = intermediate.getEnhancedMsgs(); + binaryOpError(loc, str, left->getCompleteString(enhanced), right->getCompleteString(enhanced)); + } return result; } @@ -767,8 +928,10 @@ TIntermTyped* TParseContext::handleUnaryMath(const TSourceLoc& loc, const char* if (result) return result; - else - unaryOpError(loc, str, childNode->getCompleteString()); + else { + bool enhanced = intermediate.getEnhancedMsgs(); + unaryOpError(loc, str, childNode->getCompleteString(enhanced)); + } return childNode; } @@ -794,8 +957,8 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm requireProfile(loc, ~EEsProfile, feature); profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, feature); } else if (!base->getType().isCoopMat()) { - error(loc, "does not operate on this type:", field.c_str(), base->getType().getCompleteString().c_str()); - + bool enhanced = intermediate.getEnhancedMsgs(); + error(loc, "does not operate on this type:", field.c_str(), base->getType().getCompleteString(enhanced).c_str()); return base; } @@ -821,50 +984,7 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm TIntermTyped* result = base; if ((base->isVector() || base->isScalar()) && (base->isFloatingDomain() || base->isIntegerDomain() || base->getBasicType() == EbtBool)) { - if (base->isScalar()) { - const char* dotFeature = "scalar swizzle"; - requireProfile(loc, ~EEsProfile, dotFeature); - profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, dotFeature); - } - - TSwizzleSelectors selectors; - parseSwizzleSelector(loc, field, base->getVectorSize(), selectors); - - if (base->isVector() && selectors.size() != 1 && base->getType().contains16BitFloat()) - requireFloat16Arithmetic(loc, ".", "can't swizzle types containing float16"); - if (base->isVector() && selectors.size() != 1 && base->getType().contains16BitInt()) - requireInt16Arithmetic(loc, ".", "can't swizzle types containing (u)int16"); - if (base->isVector() && selectors.size() != 1 && base->getType().contains8BitInt()) - requireInt8Arithmetic(loc, ".", "can't swizzle types containing (u)int8"); - - if (base->isScalar()) { - if (selectors.size() == 1) - return result; - else { - TType type(base->getBasicType(), EvqTemporary, selectors.size()); - // Swizzle operations propagate specialization-constantness - if (base->getQualifier().isSpecConstant()) - type.getQualifier().makeSpecConstant(); - return addConstructor(loc, base, type); - } - } - - if (base->getType().getQualifier().isFrontEndConstant()) - result = intermediate.foldSwizzle(base, selectors, loc); - else { - if (selectors.size() == 1) { - TIntermTyped* index = intermediate.addConstantUnion(selectors[0], loc); - result = intermediate.addIndex(EOpIndexDirect, base, index, loc); - result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision)); - } else { - TIntermTyped* index = intermediate.addSwizzle(selectors, loc); - result = intermediate.addIndex(EOpVectorSwizzle, base, index, loc); - result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision, selectors.size())); - } - // Swizzle operations propagate specialization-constantness - if (base->getType().getQualifier().isSpecConstant()) - result->getWritableType().getQualifier().makeSpecConstant(); - } + result = handleDotSwizzle(loc, base, field); } else if (base->isStruct() || base->isReference()) { const TTypeList* fields = base->isReference() ? base->getType().getReferentType()->getStruct() : @@ -889,10 +1009,16 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm intermediate.addIoAccessed(field); } inheritMemoryQualifiers(base->getQualifier(), result->getWritableType().getQualifier()); - } else - error(loc, "no such field in structure", field.c_str(), ""); + } else { + auto baseSymbol = base; + while (baseSymbol->getAsSymbolNode() == nullptr) + baseSymbol = baseSymbol->getAsBinaryNode()->getLeft(); + TString structName; + structName.append("\'").append(baseSymbol->getAsSymbolNode()->getName().c_str()).append( "\'"); + error(loc, "no such field in structure", field.c_str(), structName.c_str()); + } } else - error(loc, "does not apply to this type:", field.c_str(), base->getType().getCompleteString().c_str()); + error(loc, "does not apply to this type:", field.c_str(), base->getType().getCompleteString(intermediate.getEnhancedMsgs()).c_str()); // Propagate noContraction up the dereference chain if (base->getQualifier().isNoContraction()) @@ -905,6 +1031,60 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm return result; } +// +// Handle seeing a base.swizzle, a subset of base.identifier in the grammar. +// +TIntermTyped* TParseContext::handleDotSwizzle(const TSourceLoc& loc, TIntermTyped* base, const TString& field) +{ + TIntermTyped* result = base; + if (base->isScalar()) { + const char* dotFeature = "scalar swizzle"; + requireProfile(loc, ~EEsProfile, dotFeature); + profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, dotFeature); + } + + TSwizzleSelectors selectors; + parseSwizzleSelector(loc, field, base->getVectorSize(), selectors); + + if (base->isVector() && selectors.size() != 1 && base->getType().contains16BitFloat()) + requireFloat16Arithmetic(loc, ".", "can't swizzle types containing float16"); + if (base->isVector() && selectors.size() != 1 && base->getType().contains16BitInt()) + requireInt16Arithmetic(loc, ".", "can't swizzle types containing (u)int16"); + if (base->isVector() && selectors.size() != 1 && base->getType().contains8BitInt()) + requireInt8Arithmetic(loc, ".", "can't swizzle types containing (u)int8"); + + if (base->isScalar()) { + if (selectors.size() == 1) + return result; + else { + TType type(base->getBasicType(), EvqTemporary, selectors.size()); + // Swizzle operations propagate specialization-constantness + if (base->getQualifier().isSpecConstant()) + type.getQualifier().makeSpecConstant(); + return addConstructor(loc, base, type); + } + } + + if (base->getType().getQualifier().isFrontEndConstant()) + result = intermediate.foldSwizzle(base, selectors, loc); + else { + if (selectors.size() == 1) { + TIntermTyped* index = intermediate.addConstantUnion(selectors[0], loc); + result = intermediate.addIndex(EOpIndexDirect, base, index, loc); + result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision)); + } else { + TIntermTyped* index = intermediate.addSwizzle(selectors, loc); + result = intermediate.addIndex(EOpVectorSwizzle, base, index, loc); + result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision, selectors.size())); + } + // Swizzle operations propagate specialization-constantness + if (base->getType().getQualifier().isSpecConstant()) + result->getWritableType().getQualifier().makeSpecConstant(); + } + + return result; +} + void TParseContext::blockMemberExtensionCheck(const TSourceLoc& loc, const TIntermTyped* base, int member, const TString& memberName) { // a block that needs extension checking is either 'base', or if arrayed, @@ -957,12 +1137,31 @@ TFunction* TParseContext::handleFunctionDeclarator(const TSourceLoc& loc, TFunct TSymbol* symbol = symbolTable.find(function.getMangledName(), &builtIn); if (symbol && symbol->getAsFunction() && builtIn) requireProfile(loc, ~EEsProfile, "redefinition of built-in function"); +#ifndef GLSLANG_WEB + // Check the validity of using spirv_literal qualifier + for (int i = 0; i < function.getParamCount(); ++i) { + if (function[i].type->getQualifier().isSpirvLiteral() && function.getBuiltInOp() != EOpSpirvInst) + error(loc, "'spirv_literal' can only be used on functions defined with 'spirv_instruction' for argument", + function.getName().c_str(), "%d", i + 1); + } + + // For function declaration with SPIR-V instruction qualifier, always ignore the built-in function and + // respect this redeclared one. + if (symbol && builtIn && function.getBuiltInOp() == EOpSpirvInst) + symbol = nullptr; +#endif const TFunction* prevDec = symbol ? symbol->getAsFunction() : 0; if (prevDec) { if (prevDec->isPrototyped() && prototype) profileRequires(loc, EEsProfile, 300, nullptr, "multiple prototypes for same function"); if (prevDec->getType() != function.getType()) error(loc, "overloaded functions must have the same return type", function.getName().c_str(), ""); +#ifndef GLSLANG_WEB + if (prevDec->getSpirvInstruction() != function.getSpirvInstruction()) { + error(loc, "overloaded functions must have the same qualifiers", function.getName().c_str(), + "spirv_instruction"); + } +#endif for (int i = 0; i < prevDec->getParamCount(); ++i) { if ((*prevDec)[i].type->getQualifier().storage != function[i].type->getQualifier().storage) error(loc, "overloaded functions must have the same parameter storage qualifiers for argument", function[i].type->getStorageQualifierString(), "%d", i+1); @@ -1102,6 +1301,14 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction { TIntermTyped* result = nullptr; + if (spvVersion.vulkan != 0 && spvVersion.vulkanRelaxed) { + // allow calls that are invalid in Vulkan Semantics to be invisibily + // remapped to equivalent valid functions + result = vkRelaxedRemapFunctionCall(loc, function, arguments); + if (result) + return result; + } + if (function->getBuiltInOp() == EOpArrayLength) result = handleLengthMethod(loc, function, arguments); else if (function->getBuiltInOp() != EOpNull) { @@ -1117,14 +1324,14 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction // result = addConstructor(loc, arguments, type); if (result == nullptr) - error(loc, "cannot construct with these arguments", type.getCompleteString().c_str(), ""); + error(loc, "cannot construct with these arguments", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str(), ""); } } else { // // Find it in the symbol table. // const TFunction* fnCandidate; - bool builtIn; + bool builtIn {false}; fnCandidate = findFunction(loc, *function, builtIn); if (fnCandidate) { // This is a declared function that might map to @@ -1156,6 +1363,15 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction if (lValueErrorCheck(arguments->getLoc(), "assign", arg->getAsTyped())) error(arguments->getLoc(), "Non-L-value cannot be passed for 'out' or 'inout' parameters.", "out", ""); } +#ifndef GLSLANG_WEB + if (formalQualifier.isSpirvLiteral()) { + if (!arg->getAsTyped()->getQualifier().isFrontEndConstant()) { + error(arguments->getLoc(), + "Non front-end constant expressions cannot be passed for 'spirv_literal' parameters.", + "spirv_literal", ""); + } + } +#endif const TType& argType = arg->getAsTyped()->getType(); const TQualifier& argQualifier = argType.getQualifier(); if (argQualifier.isMemory() && (argType.containsOpaque() || argType.isReference())) { @@ -1210,6 +1426,11 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction if (builtIn && fnCandidate->getBuiltInOp() != EOpNull) { // A function call mapped to a built-in operation. result = handleBuiltInFunctionCall(loc, arguments, *fnCandidate); +#ifndef GLSLANG_WEB + } else if (fnCandidate->getBuiltInOp() == EOpSpirvInst) { + // When SPIR-V instruction qualifier is specified, the function call is still mapped to a built-in operation. + result = handleBuiltInFunctionCall(loc, arguments, *fnCandidate); +#endif } else { // This is a function call not mapped to built-in operator. // It could still be a built-in function, but only if PureOperatorBuiltins == false. @@ -1273,7 +1494,7 @@ TIntermTyped* TParseContext::handleBuiltInFunctionCall(TSourceLoc loc, TIntermNo TIntermTyped *result = intermediate.addBuiltInFunctionCall(loc, function.getBuiltInOp(), function.getParamCount() == 1, arguments, function.getType()); - if (obeyPrecisionQualifiers()) + if (result != nullptr && obeyPrecisionQualifiers()) computeBuiltinPrecisions(*result, function); if (result == nullptr) { @@ -1283,10 +1504,39 @@ TIntermTyped* TParseContext::handleBuiltInFunctionCall(TSourceLoc loc, TIntermNo else error(arguments->getLoc(), " wrong operand type", "Internal Error", "built in unary operator function. Type: %s", - static_cast(arguments)->getCompleteString().c_str()); + static_cast(arguments)->getCompleteString(intermediate.getEnhancedMsgs()).c_str()); } else if (result->getAsOperator()) builtInOpCheck(loc, function, *result->getAsOperator()); +#ifndef GLSLANG_WEB + // Special handling for function call with SPIR-V instruction qualifier specified + if (function.getBuiltInOp() == EOpSpirvInst) { + if (auto agg = result->getAsAggregate()) { + // Propogate spirv_by_reference/spirv_literal from parameters to arguments + auto& sequence = agg->getSequence(); + for (unsigned i = 0; i < sequence.size(); ++i) { + if (function[i].type->getQualifier().isSpirvByReference()) + sequence[i]->getAsTyped()->getQualifier().setSpirvByReference(); + if (function[i].type->getQualifier().isSpirvLiteral()) + sequence[i]->getAsTyped()->getQualifier().setSpirvLiteral(); + } + + // Attach the function call to SPIR-V intruction + agg->setSpirvInstruction(function.getSpirvInstruction()); + } else if (auto unaryNode = result->getAsUnaryNode()) { + // Propogate spirv_by_reference/spirv_literal from parameters to arguments + if (function[0].type->getQualifier().isSpirvByReference()) + unaryNode->getOperand()->getQualifier().setSpirvByReference(); + if (function[0].type->getQualifier().isSpirvLiteral()) + unaryNode->getOperand()->getQualifier().setSpirvLiteral(); + + // Attach the function call to SPIR-V intruction + unaryNode->setSpirvInstruction(function.getSpirvInstruction()); + } else + assert(0); + } +#endif + return result; } @@ -1353,6 +1603,9 @@ void TParseContext::computeBuiltinPrecisions(TIntermTyped& node, const TFunction case EOpInterpolateAtSample: numArgs = 1; break; + case EOpDebugPrintf: + numArgs = 0; + break; default: break; } @@ -1390,23 +1643,28 @@ TIntermNode* TParseContext::handleReturnValue(const TSourceLoc& loc, TIntermType #endif functionReturnsValue = true; + TIntermBranch* branch = nullptr; if (currentFunctionType->getBasicType() == EbtVoid) { error(loc, "void function cannot return a value", "return", ""); - return intermediate.addBranch(EOpReturn, loc); + branch = intermediate.addBranch(EOpReturn, loc); } else if (*currentFunctionType != value->getType()) { TIntermTyped* converted = intermediate.addConversion(EOpReturn, *currentFunctionType, value); if (converted) { if (*currentFunctionType != converted->getType()) error(loc, "cannot convert return value to function return type", "return", ""); if (version < 420) - warn(loc, "type conversion on return values was not explicitly allowed until version 420", "return", ""); - return intermediate.addBranch(EOpReturn, converted, loc); + warn(loc, "type conversion on return values was not explicitly allowed until version 420", + "return", ""); + branch = intermediate.addBranch(EOpReturn, converted, loc); } else { error(loc, "type does not match, or is not convertible to, the function's return type", "return", ""); - return intermediate.addBranch(EOpReturn, value, loc); + branch = intermediate.addBranch(EOpReturn, value, loc); } } else - return intermediate.addBranch(EOpReturn, value, loc); + branch = intermediate.addBranch(EOpReturn, value, loc); + + branch->updatePrecision(currentFunctionType->getQualifier().precision); + return branch; } // See if the operation is being done in an illegal location. @@ -1650,6 +1908,14 @@ TIntermTyped* TParseContext::addOutputArgumentConversions(const TFunction& funct #endif } +TIntermTyped* TParseContext::addAssign(const TSourceLoc& loc, TOperator op, TIntermTyped* left, TIntermTyped* right) +{ + if ((op == EOpAddAssign || op == EOpSubAssign) && left->isReference()) + requireExtensions(loc, 1, &E_GL_EXT_buffer_reference2, "+= and -= on a buffer reference"); + + return intermediate.addAssign(op, left, right, loc); +} + void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& fnCandidate, const TIntermOperator& callNode) { const TIntermSequence* argp = &callNode.getAsAggregate()->getSequence(); @@ -1672,9 +1938,13 @@ void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& unsigned int semantics = 0, storageClassSemantics = 0; unsigned int semantics2 = 0, storageClassSemantics2 = 0; + const TIntermTyped* arg0 = (*argp)[0]->getAsTyped(); + const bool isMS = arg0->getBasicType() == EbtSampler && arg0->getType().getSampler().isMultiSample(); + // Grab the semantics and storage class semantics from the operands, based on opcode switch (callNode.getOp()) { case EOpAtomicAdd: + case EOpAtomicSubtract: case EOpAtomicMin: case EOpAtomicMax: case EOpAtomicAnd: @@ -1704,18 +1974,18 @@ void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& case EOpImageAtomicXor: case EOpImageAtomicExchange: case EOpImageAtomicStore: - storageClassSemantics = (*argp)[4]->getAsConstantUnion()->getConstArray()[0].getIConst(); - semantics = (*argp)[5]->getAsConstantUnion()->getConstArray()[0].getIConst(); + storageClassSemantics = (*argp)[isMS ? 5 : 4]->getAsConstantUnion()->getConstArray()[0].getIConst(); + semantics = (*argp)[isMS ? 6 : 5]->getAsConstantUnion()->getConstArray()[0].getIConst(); break; case EOpImageAtomicLoad: - storageClassSemantics = (*argp)[3]->getAsConstantUnion()->getConstArray()[0].getIConst(); - semantics = (*argp)[4]->getAsConstantUnion()->getConstArray()[0].getIConst(); + storageClassSemantics = (*argp)[isMS ? 4 : 3]->getAsConstantUnion()->getConstArray()[0].getIConst(); + semantics = (*argp)[isMS ? 5 : 4]->getAsConstantUnion()->getConstArray()[0].getIConst(); break; case EOpImageAtomicCompSwap: - storageClassSemantics = (*argp)[5]->getAsConstantUnion()->getConstArray()[0].getIConst(); - semantics = (*argp)[6]->getAsConstantUnion()->getConstArray()[0].getIConst(); - storageClassSemantics2 = (*argp)[7]->getAsConstantUnion()->getConstArray()[0].getIConst(); - semantics2 = (*argp)[8]->getAsConstantUnion()->getConstArray()[0].getIConst(); + storageClassSemantics = (*argp)[isMS ? 6 : 5]->getAsConstantUnion()->getConstArray()[0].getIConst(); + semantics = (*argp)[isMS ? 7 : 6]->getAsConstantUnion()->getConstArray()[0].getIConst(); + storageClassSemantics2 = (*argp)[isMS ? 8 : 7]->getAsConstantUnion()->getConstArray()[0].getIConst(); + semantics2 = (*argp)[isMS ? 9 : 8]->getAsConstantUnion()->getConstArray()[0].getIConst(); break; case EOpBarrier: @@ -1933,7 +2203,13 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan profileRequires(loc, ~EEsProfile, 450, nullptr, feature); requireExtensions(loc, 1, &E_GL_AMD_texture_gather_bias_lod, feature); } - + // As per GL_ARB_sparse_texture2 extension "Offsets" parameter must be constant integral expression + // for sparseTextureGatherOffsetsARB just as textureGatherOffsets + if (callNode.getOp() == EOpSparseTextureGatherOffsets) { + int offsetsArg = arg0->getType().getSampler().shadow ? 3 : 2; + if (!(*argp)[offsetsArg]->getAsConstantUnion()) + error(loc, "argument must be compile-time constant", "offsets", ""); + } break; } @@ -2006,18 +2282,30 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan if (arg > 0) { #ifndef GLSLANG_WEB - bool f16ShadowCompare = (*argp)[1]->getAsTyped()->getBasicType() == EbtFloat16 && arg0->getType().getSampler().shadow; + bool f16ShadowCompare = (*argp)[1]->getAsTyped()->getBasicType() == EbtFloat16 && + arg0->getType().getSampler().shadow; if (f16ShadowCompare) ++arg; #endif - if (! (*argp)[arg]->getAsConstantUnion()) + if (! (*argp)[arg]->getAsTyped()->getQualifier().isConstant()) error(loc, "argument must be compile-time constant", "texel offset", ""); - else { + else if ((*argp)[arg]->getAsConstantUnion()) { const TType& type = (*argp)[arg]->getAsTyped()->getType(); for (int c = 0; c < type.getVectorSize(); ++c) { int offset = (*argp)[arg]->getAsConstantUnion()->getConstArray()[c].getIConst(); if (offset > resources.maxProgramTexelOffset || offset < resources.minProgramTexelOffset) - error(loc, "value is out of range:", "texel offset", "[gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]"); + error(loc, "value is out of range:", "texel offset", + "[gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]"); + } + } + + if (callNode.getOp() == EOpTextureOffset) { + TSampler s = arg0->getType().getSampler(); + if (s.is2D() && s.isArrayed() && s.isShadow()) { + if (isEsProfile()) + error(loc, "TextureOffset does not support sampler2DArrayShadow : ", "sampler", "ES Profile"); + else if (version <= 420) + error(loc, "TextureOffset does not support sampler2DArrayShadow : ", "sampler", "version <= 420"); } } } @@ -2028,12 +2316,51 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan #ifndef GLSLANG_WEB case EOpTraceNV: if (!(*argp)[10]->getAsConstantUnion()) - error(loc, "argument must be compile-time constant", "payload number", ""); + error(loc, "argument must be compile-time constant", "payload number", "a"); + break; + case EOpTraceRayMotionNV: + if (!(*argp)[11]->getAsConstantUnion()) + error(loc, "argument must be compile-time constant", "payload number", "a"); + break; + case EOpTraceKHR: + if (!(*argp)[10]->getAsConstantUnion()) + error(loc, "argument must be compile-time constant", "payload number", "a"); + else { + unsigned int location = (*argp)[10]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); + if (intermediate.checkLocationRT(0, location) < 0) + error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location); + } break; case EOpExecuteCallableNV: if (!(*argp)[1]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "callable data number", ""); break; + case EOpExecuteCallableKHR: + if (!(*argp)[1]->getAsConstantUnion()) + error(loc, "argument must be compile-time constant", "callable data number", ""); + else { + unsigned int location = (*argp)[1]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); + if (intermediate.checkLocationRT(1, location) < 0) + error(loc, "with layout(location =", "no callableDataEXT/callableDataInEXT declared", "%d)", location); + } + break; + + case EOpRayQueryGetIntersectionType: + case EOpRayQueryGetIntersectionT: + case EOpRayQueryGetIntersectionInstanceCustomIndex: + case EOpRayQueryGetIntersectionInstanceId: + case EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset: + case EOpRayQueryGetIntersectionGeometryIndex: + case EOpRayQueryGetIntersectionPrimitiveIndex: + case EOpRayQueryGetIntersectionBarycentrics: + case EOpRayQueryGetIntersectionFrontFace: + case EOpRayQueryGetIntersectionObjectRayDirection: + case EOpRayQueryGetIntersectionObjectRayOrigin: + case EOpRayQueryGetIntersectionObjectToWorld: + case EOpRayQueryGetIntersectionWorldToObject: + if (!(*argp)[1]->getAsConstantUnion()) + error(loc, "argument must be compile-time constant", "committed", ""); + break; case EOpTextureQuerySamples: case EOpImageQuerySamples: @@ -2054,14 +2381,32 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan { // Make sure the image types have the correct layout() format and correct argument types const TType& imageType = arg0->getType(); - if (imageType.getSampler().type == EbtInt || imageType.getSampler().type == EbtUint) { - if (imageType.getQualifier().getFormat() != ElfR32i && imageType.getQualifier().getFormat() != ElfR32ui) + if (imageType.getSampler().type == EbtInt || imageType.getSampler().type == EbtUint || + imageType.getSampler().type == EbtInt64 || imageType.getSampler().type == EbtUint64) { + if (imageType.getQualifier().getFormat() != ElfR32i && imageType.getQualifier().getFormat() != ElfR32ui && + imageType.getQualifier().getFormat() != ElfR64i && imageType.getQualifier().getFormat() != ElfR64ui) error(loc, "only supported on image with format r32i or r32ui", fnCandidate.getName().c_str(), ""); - } else { - if (fnCandidate.getName().compare(0, 19, "imageAtomicExchange") != 0) + if (callNode.getType().getBasicType() == EbtInt64 && imageType.getQualifier().getFormat() != ElfR64i) + error(loc, "only supported on image with format r64i", fnCandidate.getName().c_str(), ""); + else if (callNode.getType().getBasicType() == EbtUint64 && imageType.getQualifier().getFormat() != ElfR64ui) + error(loc, "only supported on image with format r64ui", fnCandidate.getName().c_str(), ""); + } else if (imageType.getSampler().type == EbtFloat) { + if (fnCandidate.getName().compare(0, 19, "imageAtomicExchange") == 0) { + // imageAtomicExchange doesn't require an extension + } else if ((fnCandidate.getName().compare(0, 14, "imageAtomicAdd") == 0) || + (fnCandidate.getName().compare(0, 15, "imageAtomicLoad") == 0) || + (fnCandidate.getName().compare(0, 16, "imageAtomicStore") == 0)) { + requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float, fnCandidate.getName().c_str()); + } else if ((fnCandidate.getName().compare(0, 14, "imageAtomicMin") == 0) || + (fnCandidate.getName().compare(0, 14, "imageAtomicMax") == 0)) { + requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float2, fnCandidate.getName().c_str()); + } else { error(loc, "only supported on integer images", fnCandidate.getName().c_str(), ""); - else if (imageType.getQualifier().getFormat() != ElfR32f && isEsProfile()) + } + if (imageType.getQualifier().getFormat() != ElfR32f && isEsProfile()) error(loc, "only supported on image with format r32f", fnCandidate.getName().c_str(), ""); + } else { + error(loc, "not supported on this image type", fnCandidate.getName().c_str(), ""); } const size_t maxArgs = imageType.getSampler().isMultiSample() ? 5 : 4; @@ -2074,6 +2419,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan } case EOpAtomicAdd: + case EOpAtomicSubtract: case EOpAtomicMin: case EOpAtomicMax: case EOpAtomicAnd: @@ -2087,11 +2433,39 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan if (argp->size() > 3) { requireExtensions(loc, 1, &E_GL_KHR_memory_scope_semantics, fnCandidate.getName().c_str()); memorySemanticsCheck(loc, fnCandidate, callNode); + if ((callNode.getOp() == EOpAtomicAdd || callNode.getOp() == EOpAtomicExchange || + callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpAtomicStore) && + (arg0->getType().getBasicType() == EbtFloat || + arg0->getType().getBasicType() == EbtDouble)) { + requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float, fnCandidate.getName().c_str()); + } else if ((callNode.getOp() == EOpAtomicAdd || callNode.getOp() == EOpAtomicExchange || + callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpAtomicStore || + callNode.getOp() == EOpAtomicMin || callNode.getOp() == EOpAtomicMax) && + arg0->getType().isFloatingDomain()) { + requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float2, fnCandidate.getName().c_str()); + } } else if (arg0->getType().getBasicType() == EbtInt64 || arg0->getType().getBasicType() == EbtUint64) { const char* const extensions[2] = { E_GL_NV_shader_atomic_int64, E_GL_EXT_shader_atomic_int64 }; requireExtensions(loc, 2, extensions, fnCandidate.getName().c_str()); - } + } else if ((callNode.getOp() == EOpAtomicAdd || callNode.getOp() == EOpAtomicExchange) && + (arg0->getType().getBasicType() == EbtFloat || + arg0->getType().getBasicType() == EbtDouble)) { + requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float, fnCandidate.getName().c_str()); + } else if ((callNode.getOp() == EOpAtomicAdd || callNode.getOp() == EOpAtomicExchange || + callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpAtomicStore || + callNode.getOp() == EOpAtomicMin || callNode.getOp() == EOpAtomicMax) && + arg0->getType().isFloatingDomain()) { + requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float2, fnCandidate.getName().c_str()); + } + + const TIntermTyped* base = TIntermediate::findLValueBase(arg0, true , true); + const TType* refType = (base->getType().isReference()) ? base->getType().getReferentType() : nullptr; + const TQualifier& qualifier = (refType != nullptr) ? refType->getQualifier() : base->getType().getQualifier(); + if (qualifier.storage != EvqShared && qualifier.storage != EvqBuffer) + error(loc,"Atomic memory function can only be used for shader storage block member or shared variable.", + fnCandidate.getName().c_str(), ""); + break; } @@ -2131,6 +2505,8 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan case EOpEmitStreamVertex: case EOpEndStreamPrimitive: + if (version == 150) + requireExtensions(loc, 1, &E_GL_ARB_gpu_shader5, "if the verison is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5"); intermediate.setMultiStream(); break; @@ -2172,6 +2548,28 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan memorySemanticsCheck(loc, fnCandidate, callNode); } break; + + case EOpMix: + if (profile == EEsProfile && version < 310) { + // Look for specific signatures + if ((*argp)[0]->getAsTyped()->getBasicType() != EbtFloat && + (*argp)[1]->getAsTyped()->getBasicType() != EbtFloat && + (*argp)[2]->getAsTyped()->getBasicType() == EbtBool) { + requireExtensions(loc, 1, &E_GL_EXT_shader_integer_mix, "specific signature of builtin mix"); + } + } + + if (profile != EEsProfile && version < 450) { + if ((*argp)[0]->getAsTyped()->getBasicType() != EbtFloat && + (*argp)[0]->getAsTyped()->getBasicType() != EbtDouble && + (*argp)[1]->getAsTyped()->getBasicType() != EbtFloat && + (*argp)[1]->getAsTyped()->getBasicType() != EbtDouble && + (*argp)[2]->getAsTyped()->getBasicType() == EbtBool) { + requireExtensions(loc, 1, &E_GL_EXT_shader_integer_mix, fnCandidate.getName().c_str()); + } + } + + break; #endif default: @@ -2211,23 +2609,24 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan // Check that if extended types are being used that the correct extensions are enabled. if (arg0 != nullptr) { const TType& type = arg0->getType(); + bool enhanced = intermediate.getEnhancedMsgs(); switch (type.getBasicType()) { default: break; case EbtInt8: case EbtUint8: - requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int8, type.getCompleteString().c_str()); + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int8, type.getCompleteString(enhanced).c_str()); break; case EbtInt16: case EbtUint16: - requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int16, type.getCompleteString().c_str()); + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int16, type.getCompleteString(enhanced).c_str()); break; case EbtInt64: case EbtUint64: - requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int64, type.getCompleteString().c_str()); + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int64, type.getCompleteString(enhanced).c_str()); break; case EbtFloat16: - requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_float16, type.getCompleteString().c_str()); + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_float16, type.getCompleteString(enhanced).c_str()); break; } } @@ -2400,7 +2799,10 @@ TFunction* TParseContext::handleConstructorCall(const TSourceLoc& loc, const TPu TOperator op = intermediate.mapTypeToConstructorOp(type); if (op == EOpNull) { - error(loc, "cannot construct this type", type.getBasicString(), ""); + if (intermediate.getEnhancedMsgs() && type.getBasicType() == EbtSampler) + error(loc, "function not supported in this version; use texture() instead", "texture*D*", ""); + else + error(loc, "cannot construct this type", type.getBasicString(), ""); op = EOpConstructFloat; TType errorType(EbtFloat); type.shallowCopy(errorType); @@ -2624,6 +3026,11 @@ void TParseContext::rValueErrorCheck(const TSourceLoc& loc, const char* op, TInt if (!(symNode && symNode->getQualifier().isWriteOnly())) // base class checks if (symNode && symNode->getQualifier().isExplicitInterpolation()) error(loc, "can't read from explicitly-interpolated object: ", op, symNode->getName().c_str()); + + // local_size_{xyz} must be assigned or specialized before gl_WorkGroupSize can be assigned. + if(node->getQualifier().builtIn == EbvWorkGroupSize && + !(intermediate.isLocalSizeSet() || intermediate.isLocalSizeSpecialized())) + error(loc, "can't read from gl_WorkGroupSize before a fixed workgroup size has been declared", op, ""); } // @@ -2638,11 +3045,14 @@ void TParseContext::constantValueCheck(TIntermTyped* node, const char* token) // // Both test, and if necessary spit out an error, to see if the node is really -// an integer. +// a 32-bit integer or can implicitly convert to one. // void TParseContext::integerCheck(const TIntermTyped* node, const char* token) { - if ((node->getBasicType() == EbtInt || node->getBasicType() == EbtUint) && node->isScalar()) + auto from_type = node->getBasicType(); + if ((from_type == EbtInt || from_type == EbtUint || + intermediate.canImplicitlyPromote(from_type, EbtInt, EOpNull) || + intermediate.canImplicitlyPromote(from_type, EbtUint, EOpNull)) && node->isScalar()) return; error(node->getLoc(), "scalar integer expression required", token, ""); @@ -2666,7 +3076,8 @@ void TParseContext::reservedErrorCheck(const TSourceLoc& loc, const TString& ide // "Identifiers starting with "gl_" are reserved for use by OpenGL, and may not be // declared in a shader; this results in a compile-time error." if (! symbolTable.atBuiltInLevel()) { - if (builtInName(identifier)) + if (builtInName(identifier) && !extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) + // The extension GL_EXT_spirv_intrinsics allows us to declare identifiers starting with "gl_". error(loc, "identifiers starting with \"gl_\" are reserved", identifier.c_str(), ""); // "__" are not supposed to be an error. ES 300 (and desktop) added the clarification: @@ -2674,7 +3085,8 @@ void TParseContext::reservedErrorCheck(const TSourceLoc& loc, const TString& ide // reserved; using such a name does not itself result in an error, but may result // in undefined behavior." // however, before that, ES tests required an error. - if (identifier.find("__") != TString::npos) { + if (identifier.find("__") != TString::npos && !extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) { + // The extension GL_EXT_spirv_intrinsics allows us to declare identifiers starting with "__". if (isEsProfile() && version < 300) error(loc, "identifiers containing consecutive underscores (\"__\") are reserved, and an error if version < 300", identifier.c_str(), ""); else @@ -2695,18 +3107,23 @@ void TParseContext::reservedPpErrorCheck(const TSourceLoc& loc, const char* iden // single underscore) are also reserved, and defining such a name results in a // compile-time error." // however, before that, ES tests required an error. - if (strncmp(identifier, "GL_", 3) == 0) + if (strncmp(identifier, "GL_", 3) == 0 && !extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) + // The extension GL_EXT_spirv_intrinsics allows us to declare macros prefixed with "GL_". ppError(loc, "names beginning with \"GL_\" can't be (un)defined:", op, identifier); else if (strncmp(identifier, "defined", 8) == 0) - ppError(loc, "\"defined\" can't be (un)defined:", op, identifier); - else if (strstr(identifier, "__") != 0) { + if (relaxedErrors()) + ppWarn(loc, "\"defined\" is (un)defined:", op, identifier); + else + ppError(loc, "\"defined\" can't be (un)defined:", op, identifier); + else if (strstr(identifier, "__") != 0 && !extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) { + // The extension GL_EXT_spirv_intrinsics allows us to declare macros prefixed with "__". if (isEsProfile() && version >= 300 && (strcmp(identifier, "__LINE__") == 0 || strcmp(identifier, "__FILE__") == 0 || strcmp(identifier, "__VERSION__") == 0)) ppError(loc, "predefined names can't be (un)defined:", op, identifier); else { - if (isEsProfile() && version < 300) + if (isEsProfile() && version < 300 && !relaxedErrors()) ppError(loc, "names containing consecutive underscores are reserved, and an error if version < 300:", op, identifier); else ppWarn(loc, "names containing consecutive underscores are reserved:", op, identifier); @@ -2795,6 +3212,12 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T break; } + TString constructorString; + if (intermediate.getEnhancedMsgs()) + constructorString.append(type.getCompleteString(true, false, false, true)).append(" constructor"); + else + constructorString.append("constructor"); + // See if it's a matrix bool constructingMatrix = false; switch (op) { @@ -2847,11 +3270,12 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T bool matrixInMatrix = false; bool arrayArg = false; bool floatArgument = false; + bool intArgument = false; for (int arg = 0; arg < function.getParamCount(); ++arg) { if (function[arg].type->isArray()) { if (function[arg].type->isUnsizedArray()) { // Can't construct from an unsized array. - error(loc, "array argument must be sized", "constructor", ""); + error(loc, "array argument must be sized", constructorString.c_str(), ""); return true; } arrayArg = true; @@ -2877,15 +3301,17 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T specConstType = true; if (function[arg].type->isFloatingDomain()) floatArgument = true; + if (function[arg].type->isIntegerDomain()) + intArgument = true; if (type.isStruct()) { if (function[arg].type->contains16BitFloat()) { - requireFloat16Arithmetic(loc, "constructor", "can't construct structure containing 16-bit type"); + requireFloat16Arithmetic(loc, constructorString.c_str(), "can't construct structure containing 16-bit type"); } if (function[arg].type->contains16BitInt()) { - requireInt16Arithmetic(loc, "constructor", "can't construct structure containing 16-bit type"); + requireInt16Arithmetic(loc, constructorString.c_str(), "can't construct structure containing 16-bit type"); } if (function[arg].type->contains8BitInt()) { - requireInt8Arithmetic(loc, "constructor", "can't construct structure containing 8-bit type"); + requireInt8Arithmetic(loc, constructorString.c_str(), "can't construct structure containing 8-bit type"); } } } @@ -2899,9 +3325,9 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T case EOpConstructF16Vec3: case EOpConstructF16Vec4: if (type.isArray()) - requireFloat16Arithmetic(loc, "constructor", "16-bit arrays not supported"); + requireFloat16Arithmetic(loc, constructorString.c_str(), "16-bit arrays not supported"); if (type.isVector() && function.getParamCount() != 1) - requireFloat16Arithmetic(loc, "constructor", "16-bit vectors only take vector types"); + requireFloat16Arithmetic(loc, constructorString.c_str(), "16-bit vectors only take vector types"); break; case EOpConstructUint16: case EOpConstructU16Vec2: @@ -2912,9 +3338,9 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T case EOpConstructI16Vec3: case EOpConstructI16Vec4: if (type.isArray()) - requireInt16Arithmetic(loc, "constructor", "16-bit arrays not supported"); + requireInt16Arithmetic(loc, constructorString.c_str(), "16-bit arrays not supported"); if (type.isVector() && function.getParamCount() != 1) - requireInt16Arithmetic(loc, "constructor", "16-bit vectors only take vector types"); + requireInt16Arithmetic(loc, constructorString.c_str(), "16-bit vectors only take vector types"); break; case EOpConstructUint8: case EOpConstructU8Vec2: @@ -2925,9 +3351,9 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T case EOpConstructI8Vec3: case EOpConstructI8Vec4: if (type.isArray()) - requireInt8Arithmetic(loc, "constructor", "8-bit arrays not supported"); + requireInt8Arithmetic(loc, constructorString.c_str(), "8-bit arrays not supported"); if (type.isVector() && function.getParamCount() != 1) - requireInt8Arithmetic(loc, "constructor", "8-bit vectors only take vector types"); + requireInt8Arithmetic(loc, constructorString.c_str(), "8-bit vectors only take vector types"); break; default: break; @@ -2982,6 +3408,15 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T // and aren't making an array. makeSpecConst = ! floatArgument && ! type.isArray(); break; + + case EOpConstructVec2: + case EOpConstructVec3: + case EOpConstructVec4: + // This was the list of valid ones, if they aren't converting from int + // and aren't making an array. + makeSpecConst = ! intArgument && !type.isArray(); + break; + default: // anything else wasn't white-listed in the spec as a conversion makeSpecConst = false; @@ -3000,7 +3435,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T if (type.isArray()) { if (function.getParamCount() == 0) { - error(loc, "array constructor must have at least one argument", "constructor", ""); + error(loc, "array constructor must have at least one argument", constructorString.c_str(), ""); return true; } @@ -3008,7 +3443,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T // auto adapt the constructor type to the number of arguments type.changeOuterArraySize(function.getParamCount()); } else if (type.getOuterArraySize() != function.getParamCount()) { - error(loc, "array constructor needs one argument per array element", "constructor", ""); + error(loc, "array constructor needs one argument per array element", constructorString.c_str(), ""); return true; } @@ -3021,7 +3456,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T // At least the dimensionalities have to match. if (! function[0].type->isArray() || arraySizes.getNumDims() != function[0].type->getArraySizes()->getNumDims() + 1) { - error(loc, "array constructor argument not correct type to construct array element", "constructor", ""); + error(loc, "array constructor argument not correct type to construct array element", constructorString.c_str(), ""); return true; } @@ -3038,7 +3473,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T } if (arrayArg && op != EOpConstructStruct && ! type.isArrayOfArrays()) { - error(loc, "constructing non-array constituent from array argument", "constructor", ""); + error(loc, "constructing non-array constituent from array argument", constructorString.c_str(), ""); return true; } @@ -3048,51 +3483,51 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T // "If a matrix argument is given to a matrix constructor, // it is a compile-time error to have any other arguments." if (function.getParamCount() != 1) - error(loc, "matrix constructed from matrix can only have one argument", "constructor", ""); + error(loc, "matrix constructed from matrix can only have one argument", constructorString.c_str(), ""); return false; } if (overFull) { - error(loc, "too many arguments", "constructor", ""); + error(loc, "too many arguments", constructorString.c_str(), ""); return true; } if (op == EOpConstructStruct && ! type.isArray() && (int)type.getStruct()->size() != function.getParamCount()) { - error(loc, "Number of constructor parameters does not match the number of structure fields", "constructor", ""); + error(loc, "Number of constructor parameters does not match the number of structure fields", constructorString.c_str(), ""); return true; } if ((op != EOpConstructStruct && size != 1 && size < type.computeNumComponents()) || (op == EOpConstructStruct && size < type.computeNumComponents())) { - error(loc, "not enough data provided for construction", "constructor", ""); + error(loc, "not enough data provided for construction", constructorString.c_str(), ""); return true; } if (type.isCoopMat() && function.getParamCount() != 1) { - error(loc, "wrong number of arguments", "constructor", ""); + error(loc, "wrong number of arguments", constructorString.c_str(), ""); return true; } if (type.isCoopMat() && !(function[0].type->isScalar() || function[0].type->isCoopMat())) { - error(loc, "Cooperative matrix constructor argument must be scalar or cooperative matrix", "constructor", ""); + error(loc, "Cooperative matrix constructor argument must be scalar or cooperative matrix", constructorString.c_str(), ""); return true; } TIntermTyped* typed = node->getAsTyped(); if (typed == nullptr) { - error(loc, "constructor argument does not have a type", "constructor", ""); + error(loc, "constructor argument does not have a type", constructorString.c_str(), ""); return true; } - if (op != EOpConstructStruct && typed->getBasicType() == EbtSampler) { - error(loc, "cannot convert a sampler", "constructor", ""); + if (op != EOpConstructStruct && op != EOpConstructNonuniform && typed->getBasicType() == EbtSampler) { + error(loc, "cannot convert a sampler", constructorString.c_str(), ""); return true; } if (op != EOpConstructStruct && typed->isAtomic()) { - error(loc, "cannot convert an atomic_uint", "constructor", ""); + error(loc, "cannot convert an atomic_uint", constructorString.c_str(), ""); return true; } if (typed->getBasicType() == EbtVoid) { - error(loc, "cannot convert a void", "constructor", ""); + error(loc, "cannot convert a void", constructorString.c_str(), ""); return true; } @@ -3128,7 +3563,7 @@ bool TParseContext::constructorTextureSamplerError(const TSourceLoc& loc, const if (function[0].type->getBasicType() != EbtSampler || ! function[0].type->getSampler().isTexture() || function[0].type->isArray()) { - error(loc, "sampler-constructor first argument must be a scalar textureXXX type", token, ""); + error(loc, "sampler-constructor first argument must be a scalar *texture* type", token, ""); return true; } // simulate the first argument's impact on the result type, so it can be compared with the encapsulated operator!=() @@ -3136,7 +3571,8 @@ bool TParseContext::constructorTextureSamplerError(const TSourceLoc& loc, const texture.setCombined(false); texture.shadow = false; if (texture != function[0].type->getSampler()) { - error(loc, "sampler-constructor first argument must match type and dimensionality of constructor type", token, ""); + error(loc, "sampler-constructor first argument must be a *texture* type" + " matching the dimensionality and sampled type of the constructor", token, ""); return true; } @@ -3146,7 +3582,7 @@ bool TParseContext::constructorTextureSamplerError(const TSourceLoc& loc, const if ( function[1].type->getBasicType() != EbtSampler || ! function[1].type->getSampler().isPureSampler() || function[1].type->isArray()) { - error(loc, "sampler-constructor second argument must be a scalar type 'sampler'", token, ""); + error(loc, "sampler-constructor second argument must be a scalar sampler or samplerShadow", token, ""); return true; } @@ -3222,14 +3658,14 @@ void TParseContext::atomicUintCheck(const TSourceLoc& loc, const TType& type, co error(loc, "atomic_uints can only be used in uniform variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str()); } -void TParseContext::accStructNVCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) +void TParseContext::accStructCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) { if (type.getQualifier().storage == EvqUniform) return; - if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtAccStructNV)) + if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtAccStruct)) error(loc, "non-uniform struct contains an accelerationStructureNV:", type.getBasicTypeString().c_str(), identifier.c_str()); - else if (type.getBasicType() == EbtAccStructNV && type.getQualifier().storage != EvqUniform) + else if (type.getBasicType() == EbtAccStruct && type.getQualifier().storage != EvqUniform) error(loc, "accelerationStructureNV can only be used in uniform variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str()); @@ -3247,7 +3683,7 @@ void TParseContext::transparentOpaqueCheck(const TSourceLoc& loc, const TType& t if (type.containsNonOpaque()) { // Vulkan doesn't allow transparent uniforms outside of blocks - if (spvVersion.vulkan > 0) + if (spvVersion.vulkan > 0 && !spvVersion.vulkanRelaxed) vulkanRemoved(loc, "non-opaque uniforms outside a block"); // OpenGL wants locations on these (unless they are getting automapped) if (spvVersion.openGl > 0 && !type.getQualifier().hasLocation() && !intermediate.getAutoMapLocations()) @@ -3260,7 +3696,7 @@ void TParseContext::transparentOpaqueCheck(const TSourceLoc& loc, const TType& t // void TParseContext::memberQualifierCheck(glslang::TPublicType& publicType) { - globalQualifierFixCheck(publicType.loc, publicType.qualifier); + globalQualifierFixCheck(publicType.loc, publicType.qualifier, true); checkNoShaderLayouts(publicType.loc, publicType.shaderQualifiers); if (publicType.qualifier.isNonUniform()) { error(publicType.loc, "not allowed on block or structure members", "nonuniformEXT", ""); @@ -3271,7 +3707,7 @@ void TParseContext::memberQualifierCheck(glslang::TPublicType& publicType) // // Check/fix just a full qualifier (no variables or types yet, but qualifier is complete) at global level. // -void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& qualifier) +void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& qualifier, bool isMemberCheck) { bool nonuniformOkay = false; @@ -3287,6 +3723,8 @@ void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& q profileRequires(loc, ENoProfile, 130, nullptr, "out for stage outputs"); profileRequires(loc, EEsProfile, 300, nullptr, "out for stage outputs"); qualifier.storage = EvqVaryingOut; + if (intermediate.isInvariantAll()) + qualifier.invariant = true; break; case EvqInOut: qualifier.storage = EvqVaryingIn; @@ -3296,6 +3734,16 @@ void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& q case EvqTemporary: nonuniformOkay = true; break; + case EvqUniform: + // According to GLSL spec: The std430 qualifier is supported only for shader storage blocks; a shader using + // the std430 qualifier on a uniform block will fail to compile. + // Only check the global declaration: layout(std430) uniform; + if (blockName == nullptr && + qualifier.layoutPacking == ElpStd430) + { + requireExtensions(loc, 1, &E_GL_EXT_scalar_block_layout, "default std430 layout for uniform"); + } + break; default: break; } @@ -3303,7 +3751,17 @@ void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& q if (!nonuniformOkay && qualifier.isNonUniform()) error(loc, "for non-parameter, can only apply to 'in' or no storage qualifier", "nonuniformEXT", ""); - invariantCheck(loc, qualifier); +#ifndef GLSLANG_WEB + if (qualifier.isSpirvByReference()) + error(loc, "can only apply to parameter", "spirv_by_reference", ""); + + if (qualifier.isSpirvLiteral()) + error(loc, "can only apply to parameter", "spirv_literal", ""); +#endif + + // Storage qualifier isn't ready for memberQualifierCheck, we should skip invariantCheck for it. + if (!isMemberCheck || structNestingLevel > 0) + invariantCheck(loc, qualifier); } // @@ -3314,7 +3772,7 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali if (! symbolTable.atGlobalLevel()) return; - if (!(publicType.userDef && publicType.userDef->isReference())) { + if (!(publicType.userDef && publicType.userDef->isReference()) && !parsingBuiltins) { if (qualifier.isMemoryQualifierImageAndSSBOOnly() && ! publicType.isImage() && publicType.qualifier.storage != EvqBuffer) { error(loc, "memory qualifiers cannot be used on this type", "", ""); } else if (qualifier.isMemory() && (publicType.basicType != EbtSampler) && !publicType.qualifier.isUniformOrBuffer()) { @@ -3327,6 +3785,11 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali !qualifier.hasBufferReference()) error(loc, "buffers can be declared only as blocks", "buffer", ""); + if (qualifier.storage != EvqVaryingIn && publicType.basicType == EbtDouble && + extensionTurnedOn(E_GL_ARB_vertex_attrib_64bit) && language == EShLangVertex && + version < 400) { + profileRequires(loc, ECoreProfile | ECompatibilityProfile, 410, E_GL_ARB_gpu_shader_fp64, "vertex-shader `double` type"); + } if (qualifier.storage != EvqVaryingIn && qualifier.storage != EvqVaryingOut) return; @@ -3377,7 +3840,7 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali profileRequires(loc, ENoProfile, 150, nullptr, "vertex input arrays"); } if (publicType.basicType == EbtDouble) - profileRequires(loc, ~EEsProfile, 410, nullptr, "vertex-shader `double` type input"); + profileRequires(loc, ~EEsProfile, 410, E_GL_ARB_vertex_attrib_64bit, "vertex-shader `double` type input"); if (qualifier.isAuxiliary() || qualifier.isInterpolation() || qualifier.isMemory() || qualifier.invariant) error(loc, "vertex input cannot be further qualified", "", ""); break; @@ -3513,12 +3976,14 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons dst.precision = src.precision; #ifndef GLSLANG_WEB - if (!force && ((src.coherent && (dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent)) || - (src.devicecoherent && (dst.coherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent)) || - (src.queuefamilycoherent && (dst.coherent || dst.devicecoherent || dst.workgroupcoherent || dst.subgroupcoherent)) || - (src.workgroupcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.subgroupcoherent)) || - (src.subgroupcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent)))) { - error(loc, "only one coherent/devicecoherent/queuefamilycoherent/workgroupcoherent/subgroupcoherent qualifier allowed", GetPrecisionQualifierString(src.precision), ""); + if (!force && ((src.coherent && (dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent || dst.shadercallcoherent)) || + (src.devicecoherent && (dst.coherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent || dst.shadercallcoherent)) || + (src.queuefamilycoherent && (dst.coherent || dst.devicecoherent || dst.workgroupcoherent || dst.subgroupcoherent || dst.shadercallcoherent)) || + (src.workgroupcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.subgroupcoherent || dst.shadercallcoherent)) || + (src.subgroupcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.shadercallcoherent)) || + (src.shadercallcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent)))) { + error(loc, "only one coherent/devicecoherent/queuefamilycoherent/workgroupcoherent/subgroupcoherent/shadercallcoherent qualifier allowed", + GetPrecisionQualifierString(src.precision), ""); } #endif // Layout qualifiers @@ -3546,6 +4011,7 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons MERGE_SINGLETON(queuefamilycoherent); MERGE_SINGLETON(workgroupcoherent); MERGE_SINGLETON(subgroupcoherent); + MERGE_SINGLETON(shadercallcoherent); MERGE_SINGLETON(nonprivate); MERGE_SINGLETON(volatil); MERGE_SINGLETON(restrict); @@ -3554,6 +4020,41 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons MERGE_SINGLETON(nonUniform); #endif +#ifndef GLSLANG_WEB + // SPIR-V storage class qualifier (GL_EXT_spirv_intrinsics) + dst.spirvStorageClass = src.spirvStorageClass; + + // SPIR-V decorate qualifiers (GL_EXT_spirv_intrinsics) + if (src.hasSprivDecorate()) { + if (dst.hasSprivDecorate()) { + const TSpirvDecorate& srcSpirvDecorate = src.getSpirvDecorate(); + TSpirvDecorate& dstSpirvDecorate = dst.getSpirvDecorate(); + for (auto& decorate : srcSpirvDecorate.decorates) { + if (dstSpirvDecorate.decorates.find(decorate.first) != dstSpirvDecorate.decorates.end()) + error(loc, "too many SPIR-V decorate qualifiers", "spirv_decorate", "(decoration=%u)", decorate.first); + else + dstSpirvDecorate.decorates.insert(decorate); + } + + for (auto& decorateId : srcSpirvDecorate.decorateIds) { + if (dstSpirvDecorate.decorateIds.find(decorateId.first) != dstSpirvDecorate.decorateIds.end()) + error(loc, "too many SPIR-V decorate qualifiers", "spirv_decorate_id", "(decoration=%u)", decorateId.first); + else + dstSpirvDecorate.decorateIds.insert(decorateId); + } + + for (auto& decorateString : srcSpirvDecorate.decorateStrings) { + if (dstSpirvDecorate.decorates.find(decorateString.first) != dstSpirvDecorate.decorates.end()) + error(loc, "too many SPIR-V decorate qualifiers", "spirv_decorate_string", "(decoration=%u)", decorateString.first); + else + dstSpirvDecorate.decorates.insert(decorateString); + } + } else { + dst.spirvDecorate = src.spirvDecorate; + } + } +#endif + if (repeated) error(loc, "replicated qualifiers", "", ""); } @@ -3967,6 +4468,9 @@ void TParseContext::checkRuntimeSizable(const TSourceLoc& loc, const TIntermType if (isRuntimeLength(base)) return; + if (base.getType().getQualifier().builtIn == EbvSampleMask) + return; + // Check for last member of a bufferreference type, which is runtime sizeable // but doesn't support runtime length if (base.getType().getQualifier().storage == EvqBuffer) { @@ -3983,7 +4487,7 @@ void TParseContext::checkRuntimeSizable(const TSourceLoc& loc, const TIntermType } // check for additional things allowed by GL_EXT_nonuniform_qualifier - if (base.getBasicType() == EbtSampler || base.getBasicType() == EbtAccStructNV || + if (base.getBasicType() == EbtSampler || base.getBasicType() == EbtAccStruct || base.getBasicType() == EbtRayQuery || (base.getBasicType() == EbtBlock && base.getType().getQualifier().isUniformOrBuffer())) requireExtensions(loc, 1, &E_GL_EXT_nonuniform_qualifier, "variable index"); else @@ -4107,9 +4611,11 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS if (ssoPre150 || (identifier == "gl_FragDepth" && ((nonEsRedecls && version >= 420) || esRedecls)) || - (identifier == "gl_FragCoord" && ((nonEsRedecls && version >= 150) || esRedecls)) || + (identifier == "gl_FragCoord" && ((nonEsRedecls && version >= 140) || esRedecls)) || identifier == "gl_ClipDistance" || identifier == "gl_CullDistance" || + identifier == "gl_ShadingRateEXT" || + identifier == "gl_PrimitiveShadingRateEXT" || identifier == "gl_FrontColor" || identifier == "gl_BackColor" || identifier == "gl_FrontSecondaryColor" || @@ -4135,8 +4641,10 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS // If it wasn't at a built-in level, then it's already been redeclared; // that is, this is a redeclaration of a redeclaration; reuse that initial // redeclaration. Otherwise, make the new one. - if (builtIn) + if (builtIn) { makeEditable(symbol); + symbolTable.amendSymbolIdLevel(*symbol); + } // Now, modify the type of the copy, as per the type of the current redeclaration. @@ -4172,7 +4680,7 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS symbolQualifier.storage != qualifier.storage) error(loc, "cannot change qualification of", "redeclaration", symbol->getName().c_str()); } else if (identifier == "gl_FragCoord") { - if (intermediate.inIoAccessed("gl_FragCoord")) + if (!intermediate.getTexCoordRedeclared() && intermediate.inIoAccessed("gl_FragCoord")) error(loc, "cannot redeclare after use", "gl_FragCoord", ""); if (qualifier.nopersp != symbolQualifier.nopersp || qualifier.flat != symbolQualifier.flat || qualifier.isMemory() || qualifier.isAuxiliary()) @@ -4182,6 +4690,9 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS if (! builtIn && (publicType.pixelCenterInteger != intermediate.getPixelCenterInteger() || publicType.originUpperLeft != intermediate.getOriginUpperLeft())) error(loc, "cannot redeclare with different qualification:", "redeclaration", symbol->getName().c_str()); + + + intermediate.setTexCoordRedeclared(); if (publicType.pixelCenterInteger) intermediate.setPixelCenterInteger(); if (publicType.originUpperLeft) @@ -4487,6 +4998,7 @@ void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& quali type.getQualifier().queuefamilycoherent = qualifier.queuefamilycoherent; type.getQualifier().workgroupcoherent = qualifier.workgroupcoherent; type.getQualifier().subgroupcoherent = qualifier.subgroupcoherent; + type.getQualifier().shadercallcoherent = qualifier.shadercallcoherent; type.getQualifier().nonprivate = qualifier.nonprivate; type.getQualifier().readonly = qualifier.readonly; type.getQualifier().writeonly = qualifier.writeonly; @@ -4509,20 +5021,31 @@ void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& quali } if (qualifier.isNonUniform()) type.getQualifier().nonUniform = qualifier.nonUniform; +#ifndef GLSLANG_WEB + if (qualifier.isSpirvByReference()) + type.getQualifier().setSpirvByReference(); + if (qualifier.isSpirvLiteral()) { + if (type.getBasicType() == EbtFloat || type.getBasicType() == EbtInt || type.getBasicType() == EbtUint || + type.getBasicType() == EbtBool) + type.getQualifier().setSpirvLiteral(); + else + error(loc, "cannot use spirv_literal qualifier", type.getBasicTypeString().c_str(), ""); +#endif + } paramCheckFixStorage(loc, qualifier.storage, type); } void TParseContext::nestedBlockCheck(const TSourceLoc& loc) { - if (structNestingLevel > 0) + if (structNestingLevel > 0 || blockNestingLevel > 0) error(loc, "cannot nest a block definition inside a structure or block", "", ""); - ++structNestingLevel; + ++blockNestingLevel; } void TParseContext::nestedStructCheck(const TSourceLoc& loc) { - if (structNestingLevel > 0) + if (structNestingLevel > 0 || blockNestingLevel > 0) error(loc, "cannot nest a structure definition inside a structure or block", "", ""); ++structNestingLevel; } @@ -4664,7 +5187,7 @@ void TParseContext::inductiveLoopCheck(const TSourceLoc& loc, TIntermNode* init, } // get the unique id of the loop index - int loopIndex = binaryInit->getLeft()->getAsSymbolNode()->getId(); + long long loopIndex = binaryInit->getLeft()->getAsSymbolNode()->getId(); inductiveLoopIds.insert(loopIndex); // condition's form must be "loop-index relational-operator constant-expression" @@ -4850,14 +5373,22 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi return; } if (id == TQualifier::getLayoutPackingString(ElpPacked)) { - if (spvVersion.spv != 0) - spvRemoved(loc, "packed"); + if (spvVersion.spv != 0) { + if (spvVersion.vulkanRelaxed) + return; // silently ignore qualifier + else + spvRemoved(loc, "packed"); + } publicType.qualifier.layoutPacking = ElpPacked; return; } if (id == TQualifier::getLayoutPackingString(ElpShared)) { - if (spvVersion.spv != 0) - spvRemoved(loc, "shared"); + if (spvVersion.spv != 0) { + if (spvVersion.vulkanRelaxed) + return; // silently ignore qualifier + else + spvRemoved(loc, "shared"); + } publicType.qualifier.layoutPacking = ElpShared; return; } @@ -4868,7 +5399,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi #ifndef GLSLANG_WEB if (id == TQualifier::getLayoutPackingString(ElpStd430)) { requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, "std430"); - profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, nullptr, "std430"); + profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_shader_storage_buffer_object, "std430"); profileRequires(loc, EEsProfile, 310, nullptr, "std430"); publicType.qualifier.layoutPacking = ElpStd430; return; @@ -4993,12 +5524,19 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } if (language == EShLangFragment) { if (id == "origin_upper_left") { - requireProfile(loc, ECoreProfile | ECompatibilityProfile, "origin_upper_left"); + requireProfile(loc, ECoreProfile | ECompatibilityProfile | ENoProfile, "origin_upper_left"); + if (profile == ENoProfile) { + profileRequires(loc,ECoreProfile | ECompatibilityProfile, 140, E_GL_ARB_fragment_coord_conventions, "origin_upper_left"); + } + publicType.shaderQualifiers.originUpperLeft = true; return; } if (id == "pixel_center_integer") { - requireProfile(loc, ECoreProfile | ECompatibilityProfile, "pixel_center_integer"); + requireProfile(loc, ECoreProfile | ECompatibilityProfile | ENoProfile, "pixel_center_integer"); + if (profile == ENoProfile) { + profileRequires(loc,ECoreProfile | ECompatibilityProfile, 140, E_GL_ARB_fragment_coord_conventions, "pixel_center_integer"); + } publicType.shaderQualifiers.pixelCenterInteger = true; return; } @@ -5067,13 +5605,19 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi return; } } else { - if (language == EShLangRayGenNV || language == EShLangIntersectNV || - language == EShLangAnyHitNV || language == EShLangClosestHitNV || - language == EShLangMissNV || language == EShLangCallableNV) { - if (id == "shaderrecordnv") { - publicType.qualifier.layoutShaderRecordNV = true; + if (language == EShLangRayGen || language == EShLangIntersect || + language == EShLangAnyHit || language == EShLangClosestHit || + language == EShLangMiss || language == EShLangCallable) { + if (id == "shaderrecordnv" || id == "shaderrecordext") { + if (id == "shaderrecordnv") { + requireExtensions(loc, 1, &E_GL_NV_ray_tracing, "shader record NV"); + } else { + requireExtensions(loc, 1, &E_GL_EXT_ray_tracing, "shader record EXT"); + } + publicType.qualifier.layoutShaderRecord = true; return; } + } } if (language == EShLangCompute) { @@ -5088,6 +5632,12 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } } } + + if (id == "primitive_culling") { + requireExtensions(loc, 1, &E_GL_EXT_ray_flags_primitive_culling, "primitive culling"); + publicType.shaderQualifiers.layoutPrimitiveCulling = true; + return; + } #endif error(loc, "unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)", id.c_str(), ""); @@ -5135,6 +5685,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi profileRequires(loc, EEsProfile, 310, nullptr, feature); } publicType.qualifier.layoutOffset = value; + publicType.qualifier.explicitOffset = true; if (nonLiteral) error(loc, "needs a literal integer", "offset", ""); return; @@ -5294,7 +5845,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi if (! IsPow2(value)) error(loc, "must be a power of 2", "buffer_reference_align", ""); else - publicType.qualifier.layoutBufferReferenceAlign = (unsigned int)std::log2(value); + publicType.qualifier.layoutBufferReferenceAlign = IntLog2(value); if (nonLiteral) error(loc, "needs a literal integer", "buffer_reference_align", ""); return; @@ -5347,10 +5898,10 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi case EShLangFragment: if (id == "index") { - requireProfile(loc, ECompatibilityProfile | ECoreProfile, "index layout qualifier on fragment output"); + requireProfile(loc, ECompatibilityProfile | ECoreProfile | EEsProfile, "index layout qualifier on fragment output"); const char* exts[2] = { E_GL_ARB_separate_shader_objects, E_GL_ARB_explicit_attrib_location }; profileRequires(loc, ECompatibilityProfile | ECoreProfile, 330, 2, exts, "index layout qualifier on fragment output"); - + profileRequires(loc, EEsProfile ,310, E_GL_EXT_blend_func_extended, "index layout qualifier on fragment output"); // "It is also a compile-time error if a fragment shader sets a layout index to less than 0 or greater than 1." if (value < 0 || value > 1) { value = 0; @@ -5514,8 +6065,8 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie dst.layoutViewportRelative = true; if (src.layoutSecondaryViewportRelativeOffset != -2048) dst.layoutSecondaryViewportRelativeOffset = src.layoutSecondaryViewportRelativeOffset; - if (src.layoutShaderRecordNV) - dst.layoutShaderRecordNV = true; + if (src.layoutShaderRecord) + dst.layoutShaderRecord = true; if (src.pervertexNV) dst.pervertexNV = true; #endif @@ -5555,6 +6106,9 @@ void TParseContext::layoutObjectCheck(const TSourceLoc& loc, const TSymbol& symb case EvqVaryingIn: case EvqVaryingOut: if (!type.getQualifier().isTaskMemory() && +#ifndef GLSLANG_WEB + !type.getQualifier().hasSprivDecorate() && +#endif (type.getBasicType() != EbtBlock || (!(*type.getStruct())[0].type->getQualifier().hasLocation() && (*type.getStruct())[0].type->getQualifier().builtIn == EbvNone))) @@ -5583,8 +6137,10 @@ void TParseContext::layoutObjectCheck(const TSourceLoc& loc, const TSymbol& symb error(loc, "cannot specify on a variable declaration", "align", ""); if (qualifier.isPushConstant()) error(loc, "can only specify on a uniform block", "push_constant", ""); - if (qualifier.isShaderRecordNV()) + if (qualifier.isShaderRecord()) error(loc, "can only specify on a buffer block", "shaderRecordNV", ""); + if (qualifier.hasLocation() && type.isAtomic()) + error(loc, "cannot specify on atomic counter", "location", ""); } break; default: @@ -5614,6 +6170,11 @@ void TParseContext::layoutMemberLocationArrayCheck(const TSourceLoc& loc, bool m // Do layout error checking with respect to a type. void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) { +#ifndef GLSLANG_WEB + if (extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) + return; // Skip any check if GL_EXT_spirv_intrinsics is turned on +#endif + const TQualifier& qualifier = type.getQualifier(); // first, intra-layout qualifier-only error checking @@ -5657,11 +6218,11 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) error(loc, "cannot apply to uniform or buffer block", "location", ""); break; #ifndef GLSLANG_WEB - case EvqPayloadNV: - case EvqPayloadInNV: - case EvqHitAttrNV: - case EvqCallableDataNV: - case EvqCallableDataInNV: + case EvqPayload: + case EvqPayloadIn: + case EvqHitAttr: + case EvqCallableData: + case EvqCallableDataIn: break; #endif default: @@ -5681,9 +6242,13 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) #ifndef GLSLANG_WEB if (qualifier.hasXfbOffset() && qualifier.hasXfbBuffer()) { - int repeated = intermediate.addXfbBufferOffset(type); - if (repeated >= 0) - error(loc, "overlapping offsets at", "xfb_offset", "offset %d in buffer %d", repeated, qualifier.layoutXfbBuffer); + if (type.isUnsizedArray()) { + error(loc, "unsized array", "xfb_offset", "in buffer %d", qualifier.layoutXfbBuffer); + } else { + int repeated = intermediate.addXfbBufferOffset(type); + if (repeated >= 0) + error(loc, "overlapping offsets at", "xfb_offset", "offset %d in buffer %d", repeated, qualifier.layoutXfbBuffer); + } // "The offset must be a multiple of the size of the first component of the first // qualified variable or block member, or a compile-time error results. Further, if applied to an aggregate @@ -5720,16 +6285,12 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) if (type.getBasicType() == EbtSampler) { int lastBinding = qualifier.layoutBinding; if (type.isArray()) { - if (spvVersion.vulkan > 0) - lastBinding += 1; - else { + if (spvVersion.vulkan == 0) { if (type.isSizedArray()) - lastBinding += type.getCumulativeArraySize(); + lastBinding += (type.getCumulativeArraySize() - 1); else { - lastBinding += 1; #ifndef GLSLANG_WEB - if (spvVersion.vulkan == 0) - warn(loc, "assuming binding count of one for compile-time checking of binding numbers for unsized array", "[]", ""); + warn(loc, "assuming binding count of one for compile-time checking of binding numbers for unsized array", "[]", ""); #endif } } @@ -5739,7 +6300,7 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) error(loc, "sampler binding not less than gl_MaxCombinedTextureImageUnits", "binding", type.isArray() ? "(using array)" : ""); #endif } - if (type.isAtomic()) { + if (type.isAtomic() && !spvVersion.vulkanRelaxed) { if (qualifier.layoutBinding >= (unsigned int)resources.maxAtomicCounterBindings) { error(loc, "atomic_uint binding is too large; see gl_MaxAtomicCounterBindings", "binding", ""); return; @@ -5756,7 +6317,7 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) if (spvVersion.spv > 0) { if (qualifier.isUniformOrBuffer()) { if (type.getBasicType() == EbtBlock && !qualifier.isPushConstant() && - !qualifier.isShaderRecordNV() && + !qualifier.isShaderRecord() && !qualifier.hasAttachment() && !qualifier.hasBufferReference()) error(loc, "uniform/buffer blocks require layout(binding=X)", "binding", ""); @@ -5807,13 +6368,17 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) profileRequires(loc, ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shader_image_load_formatted, explanation); } - if (qualifier.isPushConstant() && type.getBasicType() != EbtBlock) - error(loc, "can only be used with a block", "push_constant", ""); + if (qualifier.isPushConstant()) { + if (type.getBasicType() != EbtBlock) + error(loc, "can only be used with a block", "push_constant", ""); + if (type.isArray()) + error(loc, "Push constants blocks can't be an array", "push_constant", ""); + } if (qualifier.hasBufferReference() && type.getBasicType() != EbtBlock) error(loc, "can only be used with a block", "buffer_reference", ""); - if (qualifier.isShaderRecordNV() && type.getBasicType() != EbtBlock) + if (qualifier.isShaderRecord() && type.getBasicType() != EbtBlock) error(loc, "can only be used with a block", "shaderRecordNV", ""); // input attachment @@ -5853,12 +6418,28 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) } } +static bool storageCanHaveLayoutInBlock(const enum TStorageQualifier storage) +{ + switch (storage) { + case EvqUniform: + case EvqBuffer: + case EvqShared: + return true; + default: + return false; + } +} + // Do layout error checking that can be done within a layout qualifier proper, not needing to know // if there are blocks, atomic counters, variables, etc. void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier& qualifier) { - if (qualifier.storage == EvqShared && qualifier.hasLayout()) - error(loc, "cannot apply layout qualifiers to a shared variable", "shared", ""); + if (qualifier.storage == EvqShared && qualifier.hasLayout()) { + if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_4) { + error(loc, "shared block requires at least SPIR-V 1.4", "shared block", ""); + } + profileRequires(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shared_memory_block, "shared block"); + } // "It is a compile-time error to use *component* without also specifying the location qualifier (order does not matter)." if (qualifier.hasComponent() && ! qualifier.hasLocation()) @@ -5941,7 +6522,7 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier error(loc, "can only be used on an output", "xfb layout qualifier", ""); } if (qualifier.hasUniformLayout()) { - if (! qualifier.isUniformOrBuffer() && !qualifier.isTaskMemory()) { + if (!storageCanHaveLayoutInBlock(qualifier.storage) && !qualifier.isTaskMemory()) { if (qualifier.hasMatrix() || qualifier.hasPacking()) error(loc, "matrix or packing qualifiers can only be used on a uniform or buffer", "layout", ""); if (qualifier.hasOffset() || qualifier.hasAlign()) @@ -5953,12 +6534,14 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier error(loc, "can only be used with a uniform", "push_constant", ""); if (qualifier.hasSet()) error(loc, "cannot be used with push_constant", "set", ""); + if (qualifier.hasBinding()) + error(loc, "cannot be used with push_constant", "binding", ""); } if (qualifier.hasBufferReference()) { if (qualifier.storage != EvqBuffer) error(loc, "can only be used with buffer", "buffer_reference", ""); } - if (qualifier.isShaderRecordNV()) { + if (qualifier.isShaderRecord()) { if (qualifier.storage != EvqBuffer) error(loc, "can only be used with a buffer", "shaderRecordNV", ""); if (qualifier.hasBinding()) @@ -5967,7 +6550,7 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier error(loc, "cannot be used with shaderRecordNV", "set", ""); } - if (qualifier.storage == EvqHitAttrNV && qualifier.hasLayout()) { + if (qualifier.storage == EvqHitAttr && qualifier.hasLayout()) { error(loc, "cannot apply layout qualifiers to hitAttributeNV variable", "hitAttributeNV", ""); } } @@ -6018,6 +6601,8 @@ void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQua error(loc, message, "num_views", ""); if (shaderQualifiers.interlockOrdering != EioNone) error(loc, message, TQualifier::getInterlockOrderingString(shaderQualifiers.interlockOrdering), ""); + if (shaderQualifiers.layoutPrimitiveCulling) + error(loc, "can only be applied as standalone", "primitive_culling", ""); #endif } @@ -6079,6 +6664,15 @@ const TFunction* TParseContext::findFunction(const TSourceLoc& loc, const TFunct #endif const TFunction* function = nullptr; + + // debugPrintfEXT has var args and is in the symbol table as "debugPrintfEXT()", + // mangled to "debugPrintfEXT(" + if (call.getName() == "debugPrintfEXT") { + TSymbol* symbol = symbolTable.find("debugPrintfEXT(", &builtIn); + if (symbol) + return symbol->getAsFunction(); + } + bool explicitTypesEnabled = extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int8) || extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int16) || @@ -6088,10 +6682,18 @@ const TFunction* TParseContext::findFunction(const TSourceLoc& loc, const TFunct extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float32) || extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float64); - if (isEsProfile() || version < 120) + if (isEsProfile()) + function = (explicitTypesEnabled && version >= 310) + ? findFunctionExplicitTypes(loc, call, builtIn) + : ((extensionTurnedOn(E_GL_EXT_shader_implicit_conversions) && version >= 310) + ? findFunction120(loc, call, builtIn) + : findFunctionExact(loc, call, builtIn)); + else if (version < 120) function = findFunctionExact(loc, call, builtIn); - else if (version < 400) - function = extensionTurnedOn(E_GL_ARB_gpu_shader_fp64) ? findFunction400(loc, call, builtIn) : findFunction120(loc, call, builtIn); + else if (version < 400) { + bool needfindFunction400 = extensionTurnedOn(E_GL_ARB_gpu_shader_fp64) || extensionTurnedOn(E_GL_ARB_gpu_shader5); + function = needfindFunction400 ? findFunction400(loc, call, builtIn) : findFunction120(loc, call, builtIn); + } else if (explicitTypesEnabled) function = findFunctionExplicitTypes(loc, call, builtIn); else @@ -6379,6 +6981,68 @@ const TFunction* TParseContext::findFunctionExplicitTypes(const TSourceLoc& loc, return bestMatch; } +// +// Adjust function calls that aren't declared in Vulkan to a +// calls with equivalent effects +// +TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, TFunction* function, TIntermNode* arguments) +{ + TIntermTyped* result = nullptr; + +#ifndef GLSLANG_WEB + if (function->getBuiltInOp() != EOpNull) { + return nullptr; + } + + if (function->getName() == "atomicCounterIncrement") { + // change atomicCounterIncrement into an atomicAdd of 1 + TString name("atomicAdd"); + TType uintType(EbtUint); + + TFunction realFunc(&name, function->getType()); + + for (int i = 0; i < function->getParamCount(); ++i) { + realFunc.addParameter((*function)[i]); + } + + TParameter tmpP = { 0, &uintType }; + realFunc.addParameter(tmpP); + arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(1, loc, true)); + + result = handleFunctionCall(loc, &realFunc, arguments); + } else if (function->getName() == "atomicCounterDecrement") { + // change atomicCounterDecrement into an atomicAdd with -1 + // and subtract 1 from result, to return post-decrement value + TString name("atomicAdd"); + TType uintType(EbtUint); + + TFunction realFunc(&name, function->getType()); + + for (int i = 0; i < function->getParamCount(); ++i) { + realFunc.addParameter((*function)[i]); + } + + TParameter tmpP = { 0, &uintType }; + realFunc.addParameter(tmpP); + arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(-1, loc, true)); + + result = handleFunctionCall(loc, &realFunc, arguments); + + // post decrement, so that it matches AtomicCounterDecrement semantics + if (result) { + result = handleBinaryMath(loc, "-", EOpSub, result, intermediate.addConstantUnion(1, loc, true)); + } + } else if (function->getName() == "atomicCounter") { + // change atomicCounter into a direct read of the variable + if (arguments->getAsTyped()) { + result = arguments->getAsTyped(); + } + } +#endif + + return result; +} + // When a declaration includes a type, but not a variable name, it can be used // to establish defaults. void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType& publicType) @@ -6389,18 +7053,105 @@ void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType error(loc, "atomic_uint binding is too large", "binding", ""); return; } - - if(publicType.qualifier.hasOffset()) { + if (publicType.qualifier.hasOffset()) atomicUintOffsets[publicType.qualifier.layoutBinding] = publicType.qualifier.layoutOffset; - } return; } + if (publicType.arraySizes) { + error(loc, "expect an array name", "", ""); + } + if (publicType.qualifier.hasLayout() && !publicType.qualifier.hasBufferReference()) warn(loc, "useless application of layout qualifier", "layout", ""); #endif } +bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString& identifier, const TPublicType&, + TArraySizes*, TIntermTyped* initializer, TType& type) +{ + if (parsingBuiltins || symbolTable.atBuiltInLevel() || !symbolTable.atGlobalLevel() || + type.getQualifier().storage != EvqUniform || + !(type.containsNonOpaque() +#ifndef GLSLANG_WEB + || type.getBasicType() == EbtAtomicUint +#endif + )) { + return false; + } + + if (type.getQualifier().hasLocation()) { + warn(loc, "ignoring layout qualifier for uniform", identifier.c_str(), "location"); + type.getQualifier().layoutLocation = TQualifier::layoutLocationEnd; + } + + if (initializer) { + warn(loc, "Ignoring initializer for uniform", identifier.c_str(), ""); + initializer = nullptr; + } + + if (type.isArray()) { + // do array size checks here + arraySizesCheck(loc, type.getQualifier(), type.getArraySizes(), initializer, false); + + if (arrayQualifierError(loc, type.getQualifier()) || arrayError(loc, type)) { + error(loc, "array param error", identifier.c_str(), ""); + } + } + + // do some checking on the type as it was declared + layoutTypeCheck(loc, type); + + int bufferBinding = TQualifier::layoutBindingEnd; + TVariable* updatedBlock = nullptr; + +#ifndef GLSLANG_WEB + // Convert atomic_uint into members of a buffer block + if (type.isAtomic()) { + type.setBasicType(EbtUint); + type.getQualifier().storage = EvqBuffer; + + type.getQualifier().volatil = true; + type.getQualifier().coherent = true; + + // xxTODO: use logic from fixOffset() to apply explicit member offset + bufferBinding = type.getQualifier().layoutBinding; + type.getQualifier().layoutBinding = TQualifier::layoutBindingEnd; + type.getQualifier().explicitOffset = false; + growAtomicCounterBlock(bufferBinding, loc, type, identifier, nullptr); + updatedBlock = atomicCounterBuffers[bufferBinding]; + } +#endif + + if (!updatedBlock) { + growGlobalUniformBlock(loc, type, identifier, nullptr); + updatedBlock = globalUniformBlock; + } + + // + // don't assign explicit member offsets here + // if any are assigned, need to be updated here and in the merge/link step + // fixBlockUniformOffsets(updatedBlock->getWritableType().getQualifier(), *updatedBlock->getWritableType().getWritableStruct()); + + // checks on update buffer object + layoutObjectCheck(loc, *updatedBlock); + + TSymbol* symbol = symbolTable.find(identifier); + + if (!symbol) { + if (updatedBlock == globalUniformBlock) + error(loc, "error adding uniform to default uniform block", identifier.c_str(), ""); + else + error(loc, "error adding atomic counter to atomic counter block", identifier.c_str(), ""); + return false; + } + + // merge qualifiers + mergeObjectLayoutQualifiers(updatedBlock->getWritableType().getQualifier(), type.getQualifier(), true); + + return true; +} + // // Do everything necessary to handle a variable (non-block) declaration. // Either redeclaring a variable, or making a new one, updating the symbol @@ -6422,6 +7173,12 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden type.copyArrayInnerSizes(publicType.arraySizes); arrayOfArrayVersionCheck(loc, type.getArraySizes()); + if (initializer) { + if (type.getBasicType() == EbtRayQuery) { + error(loc, "ray queries can only be initialized by using the rayQueryInitializeEXT intrinsic:", "=", identifier.c_str()); + } + } + if (type.isCoopMat()) { intermediate.setUseVulkanMemoryModel(); intermediate.setUseStorageBuffer(); @@ -6461,7 +7218,7 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden transparentOpaqueCheck(loc, type, identifier); #ifndef GLSLANG_WEB atomicUintCheck(loc, type, identifier); - accStructNVCheck(loc, type, identifier); + accStructCheck(loc, type, identifier); checkAndResizeMeshViewDim(loc, type, /*isBlockMember*/ false); #endif if (type.getQualifier().storage == EvqConst && type.containsReference()) { @@ -6480,6 +7237,22 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden if (type.getQualifier().storage == EvqShared && type.containsCoopMat()) error(loc, "qualifier", "Cooperative matrix types must not be used in shared memory", ""); + if (profile == EEsProfile) { + if (type.getQualifier().isPipeInput() && type.getBasicType() == EbtStruct) { + if (type.getQualifier().isArrayedIo(language)) { + TType perVertexType(type, 0); + if (perVertexType.containsArray() && perVertexType.containsBuiltIn() == false) { + error(loc, "A per vertex structure containing an array is not allowed as input in ES", type.getTypeName().c_str(), ""); + } + } + else if (type.containsArray() && type.containsBuiltIn() == false) { + error(loc, "A structure containing an array is not allowed as input in ES", type.getTypeName().c_str(), ""); + } + if (type.containsStructure()) + error(loc, "A structure containing an struct is not allowed as input in ES", type.getTypeName().c_str(), ""); + } + } + if (identifier != "gl_FragCoord" && (publicType.shaderQualifiers.originUpperLeft || publicType.shaderQualifiers.pixelCenterInteger)) error(loc, "can only apply origin_upper_left and pixel_center_origin to gl_FragCoord", "layout qualifier", ""); if (identifier != "gl_FragDepth" && publicType.shaderQualifiers.getDepth() != EldNone) @@ -6490,6 +7263,14 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden if (symbol == nullptr) reservedErrorCheck(loc, identifier); + if (symbol == nullptr && spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) { + bool remapped = vkRelaxedRemapUniformVariable(loc, identifier, publicType, arraySizes, initializer, type); + + if (remapped) { + return nullptr; + } + } + inheritGlobalDefaults(type.getQualifier()); // Declare the variable @@ -6597,6 +7378,11 @@ TVariable* TParseContext::declareNonArray(const TSourceLoc& loc, const TString& // TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyped* initializer, TVariable* variable) { + // A null initializer is an aggregate that hasn't had an op assigned yet + // (still EOpNull, no relation to nullInit), and has no children. + bool nullInit = initializer->getAsAggregate() && initializer->getAsAggregate()->getOp() == EOpNull && + initializer->getAsAggregate()->getSequence().size() == 0; + // // Identifier must be of type constant, a global, or a temporary, and // starting at version 120, desktop allows uniforms to have initializers. @@ -6604,9 +7390,36 @@ TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyp TStorageQualifier qualifier = variable->getType().getQualifier().storage; if (! (qualifier == EvqTemporary || qualifier == EvqGlobal || qualifier == EvqConst || (qualifier == EvqUniform && !isEsProfile() && version >= 120))) { - error(loc, " cannot initialize this type of qualifier ", variable->getType().getStorageQualifierString(), ""); + if (qualifier == EvqShared) { + // GL_EXT_null_initializer allows this for shared, if it's a null initializer + if (nullInit) { + const char* feature = "initialization with shared qualifier"; + profileRequires(loc, EEsProfile, 0, E_GL_EXT_null_initializer, feature); + profileRequires(loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, feature); + } else { + error(loc, "initializer can only be a null initializer ('{}')", "shared", ""); + } + } else { + error(loc, " cannot initialize this type of qualifier ", + variable->getType().getStorageQualifierString(), ""); + return nullptr; + } + } + + if (nullInit) { + // only some types can be null initialized + if (variable->getType().containsUnsizedArray()) { + error(loc, "null initializers can't size unsized arrays", "{}", ""); + return nullptr; + } + if (variable->getType().containsOpaque()) { + error(loc, "null initializers can't be used on opaque values", "{}", ""); + return nullptr; + } + variable->getWritableType().getQualifier().setNullInit(); return nullptr; } + arrayObjectCheck(loc, variable->getType(), "array initializer"); // @@ -6650,13 +7463,15 @@ TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyp // Uniforms require a compile-time constant initializer if (qualifier == EvqUniform && ! initializer->getType().getQualifier().isFrontEndConstant()) { - error(loc, "uniform initializers must be constant", "=", "'%s'", variable->getType().getCompleteString().c_str()); + error(loc, "uniform initializers must be constant", "=", "'%s'", + variable->getType().getCompleteString(intermediate.getEnhancedMsgs()).c_str()); variable->getWritableType().getQualifier().makeTemporary(); return nullptr; } // Global consts require a constant initializer (specialization constant is okay) if (qualifier == EvqConst && symbolTable.atGlobalLevel() && ! initializer->getType().getQualifier().isConstant()) { - error(loc, "global const initializers must be constant", "=", "'%s'", variable->getType().getCompleteString().c_str()); + error(loc, "global const initializers must be constant", "=", "'%s'", + variable->getType().getCompleteString(intermediate.getEnhancedMsgs()).c_str()); variable->getWritableType().getQualifier().makeTemporary(); return nullptr; } @@ -6676,7 +7491,8 @@ TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyp // "In declarations of global variables with no storage qualifier or with a const // qualifier any initializer must be a constant expression." if (symbolTable.atGlobalLevel() && ! initializer->getType().getQualifier().isConstant()) { - const char* initFeature = "non-constant global initializer (needs GL_EXT_shader_non_constant_global_initializers)"; + const char* initFeature = + "non-constant global initializer (needs GL_EXT_shader_non_constant_global_initializers)"; if (isEsProfile()) { if (relaxedErrors() && ! extensionTurnedOn(E_GL_EXT_shader_non_constant_global_initializers)) warn(loc, "not allowed in this version", initFeature, ""); @@ -6690,7 +7506,8 @@ TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyp // Compile-time tagging of the variable with its constant value... initializer = intermediate.addConversion(EOpAssign, variable->getType(), initializer); - if (! initializer || ! initializer->getType().getQualifier().isConstant() || variable->getType() != initializer->getType()) { + if (! initializer || ! initializer->getType().getQualifier().isConstant() || + variable->getType() != initializer->getType()) { error(loc, "non-matching or non-convertible constant type for const initializer", variable->getType().getStorageQualifierString(), ""); variable->getWritableType().getQualifier().makeTemporary(); @@ -6717,7 +7534,7 @@ TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyp TIntermSymbol* intermSymbol = intermediate.addSymbol(*variable, loc); TIntermTyped* initNode = intermediate.addAssign(EOpAssign, intermSymbol, initializer, loc); if (! initNode) - assignError(loc, "=", intermSymbol->getCompleteString(), initializer->getCompleteString()); + assignError(loc, "=", intermSymbol->getCompleteString(intermediate.getEnhancedMsgs()), initializer->getCompleteString(intermediate.getEnhancedMsgs())); return initNode; } @@ -6788,7 +7605,7 @@ TIntermTyped* TParseContext::convertInitializerList(const TSourceLoc& loc, const } } else if (type.isMatrix()) { if (type.getMatrixCols() != (int)initList->getSequence().size()) { - error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString().c_str()); + error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str()); return nullptr; } TType vectorType(type, 0); // dereferenced type @@ -6799,11 +7616,20 @@ TIntermTyped* TParseContext::convertInitializerList(const TSourceLoc& loc, const } } else if (type.isVector()) { if (type.getVectorSize() != (int)initList->getSequence().size()) { - error(loc, "wrong vector size (or rows in a matrix column):", "initializer list", type.getCompleteString().c_str()); + error(loc, "wrong vector size (or rows in a matrix column):", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str()); return nullptr; } + TBasicType destType = type.getBasicType(); + for (int i = 0; i < type.getVectorSize(); ++i) { + TBasicType initType = initList->getSequence()[i]->getAsTyped()->getBasicType(); + if (destType != initType && !intermediate.canImplicitlyPromote(initType, destType)) { + error(loc, "type mismatch in initializer list", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str()); + return nullptr; + } + + } } else { - error(loc, "unexpected initializer-list type:", "initializer list", type.getCompleteString().c_str()); + error(loc, "unexpected initializer-list type:", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str()); return nullptr; } @@ -6910,7 +7736,13 @@ TIntermTyped* TParseContext::addConstructor(const TSourceLoc& loc, TIntermNode* return nullptr; } - return intermediate.setAggregateOperator(aggrNode, op, type, loc); + TIntermTyped *ret_node = intermediate.setAggregateOperator(aggrNode, op, type, loc); + + TIntermAggregate *agg_node = ret_node->getAsAggregate(); + if (agg_node && (agg_node->isVector() || agg_node->isArray() || agg_node->isMatrix())) + agg_node->updatePrecision(); + + return ret_node; } // Function for constructor implementation. Calls addUnaryMath with appropriate EOp value @@ -7177,6 +8009,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T if (!node->getType().isCoopMat()) { if (type.getBasicType() != node->getType().getBasicType()) { node = intermediate.addConversion(type.getBasicType(), node); + if (node == nullptr) + return nullptr; } node = intermediate.setAggregateOperator(node, EOpConstructCooperativeMatrix, type, node->getLoc()); } else { @@ -7256,6 +8090,19 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T return node; + case EOpConstructAccStruct: + if ((node->getType().isScalar() && node->getType().getBasicType() == EbtUint64)) { + // construct acceleration structure from uint64 + requireExtensions(loc, 1, &E_GL_EXT_ray_tracing, "uint64_t conversion to acclerationStructureEXT"); + return intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUint64ToAccStruct, true, node, + type); + } else if (node->getType().isVector() && node->getType().getBasicType() == EbtUint && node->getVectorSize() == 2) { + // construct acceleration structure from uint64 + requireExtensions(loc, 1, &E_GL_EXT_ray_tracing, "uvec2 conversion to accelerationStructureEXT"); + return intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUvec2ToAccStruct, true, node, + type); + } else + return nullptr; #endif // GLSLANG_WEB default: @@ -7290,8 +8137,9 @@ TIntermTyped* TParseContext::constructAggregate(TIntermNode* node, const TType& { TIntermTyped* converted = intermediate.addConversion(EOpConstructStruct, type, node->getAsTyped()); if (! converted || converted->getType() != type) { + bool enhanced = intermediate.getEnhancedMsgs(); error(loc, "", "constructor", "cannot convert parameter %d from '%s' to '%s'", paramCount, - node->getAsTyped()->getType().getCompleteString().c_str(), type.getCompleteString().c_str()); + node->getAsTyped()->getType().getCompleteString(enhanced).c_str(), type.getCompleteString(enhanced).c_str()); return nullptr; } @@ -7322,6 +8170,8 @@ void TParseContext::inheritMemoryQualifiers(const TQualifier& from, TQualifier& void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, const TString* instanceName, TArraySizes* arraySizes) { + if (spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) + blockStorageRemap(loc, blockName, currentBlockQualifier); blockStageIoCheck(loc, currentBlockQualifier); blockQualifierCheck(loc, currentBlockQualifier, instanceName != nullptr); if (arraySizes != nullptr) { @@ -7336,10 +8186,10 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con TType& memberType = *typeList[member].type; TQualifier& memberQualifier = memberType.getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; - globalQualifierFixCheck(memberLoc, memberQualifier); if (memberQualifier.storage != EvqTemporary && memberQualifier.storage != EvqGlobal && memberQualifier.storage != currentBlockQualifier.storage) error(memberLoc, "member storage qualifier cannot contradict block storage qualifier", memberType.getFieldName().c_str(), ""); memberQualifier.storage = currentBlockQualifier.storage; + globalQualifierFixCheck(memberLoc, memberQualifier); #ifndef GLSLANG_WEB inheritMemoryQualifiers(currentBlockQualifier, memberQualifier); if (currentBlockQualifier.perPrimitiveNV) @@ -7348,6 +8198,10 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con memberQualifier.perViewNV = currentBlockQualifier.perViewNV; if (currentBlockQualifier.perTaskNV) memberQualifier.perTaskNV = currentBlockQualifier.perTaskNV; + if (memberQualifier.storage == EvqSpirvStorageClass) + error(memberLoc, "member cannot have a spirv_storage_class qualifier", memberType.getFieldName().c_str(), ""); + if (memberQualifier.hasSprivDecorate() && !memberQualifier.getSpirvDecorate().decorateIds.empty()) + error(memberLoc, "member cannot have a spirv_decorate_id qualifier", memberType.getFieldName().c_str(), ""); #endif if ((currentBlockQualifier.storage == EvqUniform || currentBlockQualifier.storage == EvqBuffer) && (memberQualifier.isInterpolation() || memberQualifier.isAuxiliary())) error(memberLoc, "member of uniform or buffer block cannot have an auxiliary or interpolation qualifier", memberType.getFieldName().c_str(), ""); @@ -7355,8 +8209,8 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con arraySizesCheck(memberLoc, currentBlockQualifier, memberType.getArraySizes(), nullptr, member == typeList.size() - 1); if (memberQualifier.hasOffset()) { if (spvVersion.spv == 0) { - requireProfile(memberLoc, ~EEsProfile, "offset on block member"); - profileRequires(memberLoc, ~EEsProfile, 440, E_GL_ARB_enhanced_layouts, "offset on block member"); + profileRequires(memberLoc, ~EEsProfile, 440, E_GL_ARB_enhanced_layouts, "\"offset\" on block member"); + profileRequires(memberLoc, EEsProfile, 300, E_GL_ARB_enhanced_layouts, "\"offset\" on block member"); } } @@ -7389,13 +8243,14 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con case EvqBuffer: defaultQualification = globalBufferDefaults; break; case EvqVaryingIn: defaultQualification = globalInputDefaults; break; case EvqVaryingOut: defaultQualification = globalOutputDefaults; break; + case EvqShared: defaultQualification = globalSharedDefaults; break; default: defaultQualification.clear(); break; } // Special case for "push_constant uniform", which has a default of std430, // contrary to normal uniform defaults, and can't have a default tracked for it. if ((currentBlockQualifier.isPushConstant() && !currentBlockQualifier.hasPacking()) || - (currentBlockQualifier.isShaderRecordNV() && !currentBlockQualifier.hasPacking())) + (currentBlockQualifier.isShaderRecord() && !currentBlockQualifier.hasPacking())) currentBlockQualifier.layoutPacking = ElpStd430; // Special case for "taskNV in/out", which has a default of std430, @@ -7495,6 +8350,8 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con fixBlockLocations(loc, currentBlockQualifier, typeList, memberWithLocation, memberWithoutLocation); fixXfbOffsets(currentBlockQualifier, typeList); fixBlockUniformOffsets(currentBlockQualifier, typeList); + fixBlockUniformLayoutMatrix(currentBlockQualifier, &typeList, nullptr); + fixBlockUniformLayoutPacking(currentBlockQualifier, &typeList, nullptr); for (unsigned int member = 0; member < typeList.size(); ++member) layoutTypeCheck(typeList[member].loc, *typeList[member].type); @@ -7608,10 +8465,22 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con trackLinkage(variable); } +// +// allow storage type of block to be remapped at compile time +// +void TParseContext::blockStorageRemap(const TSourceLoc&, const TString* instanceName, TQualifier& qualifier) +{ + TBlockStorageClass type = intermediate.getBlockStorageOverride(instanceName->c_str()); + if (type != EbsNone) { + qualifier.setBlockStorage(type); + } +} + // Do all block-declaration checking regarding the combination of in/out/uniform/buffer // with a particular stage. void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& qualifier) { + const char *extsrt[2] = { E_GL_NV_ray_tracing, E_GL_EXT_ray_tracing }; switch (qualifier.storage) { case EvqUniform: profileRequires(loc, EEsProfile, 300, nullptr, "uniform block"); @@ -7621,7 +8490,7 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q break; case EvqBuffer: requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, "buffer block"); - profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, nullptr, "buffer block"); + profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_shader_storage_buffer_object, "buffer block"); profileRequires(loc, EEsProfile, 310, nullptr, "buffer block"); break; case EvqVaryingIn: @@ -7649,29 +8518,35 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q error(loc, "output blocks cannot be used in a task shader", "out", ""); } break; + case EvqShared: + if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_4) { + error(loc, "shared block requires at least SPIR-V 1.4", "shared block", ""); + } + profileRequires(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shared_memory_block, "shared block"); + break; #ifndef GLSLANG_WEB - case EvqPayloadNV: - profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV block"); - requireStage(loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangAnyHitNVMask | EShLangClosestHitNVMask | EShLangMissNVMask), + case EvqPayload: + profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "rayPayloadNV block"); + requireStage(loc, (EShLanguageMask)(EShLangRayGenMask | EShLangAnyHitMask | EShLangClosestHitMask | EShLangMissMask), "rayPayloadNV block"); break; - case EvqPayloadInNV: - profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV block"); - requireStage(loc, (EShLanguageMask)(EShLangAnyHitNVMask | EShLangClosestHitNVMask | EShLangMissNVMask), + case EvqPayloadIn: + profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "rayPayloadInNV block"); + requireStage(loc, (EShLanguageMask)(EShLangAnyHitMask | EShLangClosestHitMask | EShLangMissMask), "rayPayloadInNV block"); break; - case EvqHitAttrNV: - profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV block"); - requireStage(loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangAnyHitNVMask | EShLangClosestHitNVMask), "hitAttributeNV block"); + case EvqHitAttr: + profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "hitAttributeNV block"); + requireStage(loc, (EShLanguageMask)(EShLangIntersectMask | EShLangAnyHitMask | EShLangClosestHitMask), "hitAttributeNV block"); break; - case EvqCallableDataNV: - profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "callableDataNV block"); - requireStage(loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask | EShLangMissNVMask | EShLangCallableNVMask), + case EvqCallableData: + profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "callableDataNV block"); + requireStage(loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataNV block"); break; - case EvqCallableDataInNV: - profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV block"); - requireStage(loc, (EShLanguageMask)(EShLangCallableNVMask), "callableDataInNV block"); + case EvqCallableDataIn: + profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "callableDataInNV block"); + requireStage(loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV block"); break; #endif default: @@ -7710,8 +8585,8 @@ void TParseContext::blockQualifierCheck(const TSourceLoc& loc, const TQualifier& error(loc, "cannot use invariant qualifier on an interface block", "invariant", ""); if (qualifier.isPushConstant()) intermediate.addPushConstantCount(); - if (qualifier.isShaderRecordNV()) - intermediate.addShaderRecordNVCount(); + if (qualifier.isShaderRecord()) + intermediate.addShaderRecordCount(); if (qualifier.isTaskMemory()) intermediate.addTaskNVCount(); } @@ -7807,7 +8682,7 @@ void TParseContext::fixXfbOffsets(TQualifier& qualifier, TTypeList& typeList) // void TParseContext::fixBlockUniformOffsets(TQualifier& qualifier, TTypeList& typeList) { - if (!qualifier.isUniformOrBuffer() && !qualifier.isTaskMemory()) + if (!storageCanHaveLayoutInBlock(qualifier.storage) && !qualifier.isTaskMemory()) return; if (qualifier.layoutPacking != ElpStd140 && qualifier.layoutPacking != ElpStd430 && qualifier.layoutPacking != ElpScalar) return; @@ -7864,6 +8739,103 @@ void TParseContext::fixBlockUniformOffsets(TQualifier& qualifier, TTypeList& typ } } +// +// Spread LayoutMatrix to uniform block member, if a uniform block member is a struct, +// we need spread LayoutMatrix to this struct member too. and keep this rule for recursive. +// +void TParseContext::fixBlockUniformLayoutMatrix(TQualifier& qualifier, TTypeList* originTypeList, + TTypeList* tmpTypeList) +{ + assert(tmpTypeList == nullptr || originTypeList->size() == tmpTypeList->size()); + for (unsigned int member = 0; member < originTypeList->size(); ++member) { + if (qualifier.layoutPacking != ElpNone) { + if (tmpTypeList == nullptr) { + if (((*originTypeList)[member].type->isMatrix() || + (*originTypeList)[member].type->getBasicType() == EbtStruct) && + (*originTypeList)[member].type->getQualifier().layoutMatrix == ElmNone) { + (*originTypeList)[member].type->getQualifier().layoutMatrix = qualifier.layoutMatrix; + } + } else { + if (((*tmpTypeList)[member].type->isMatrix() || + (*tmpTypeList)[member].type->getBasicType() == EbtStruct) && + (*tmpTypeList)[member].type->getQualifier().layoutMatrix == ElmNone) { + (*tmpTypeList)[member].type->getQualifier().layoutMatrix = qualifier.layoutMatrix; + } + } + } + + if ((*originTypeList)[member].type->getBasicType() == EbtStruct) { + TQualifier* memberQualifier = nullptr; + // block member can be declare a matrix style, so it should be update to the member's style + if ((*originTypeList)[member].type->getQualifier().layoutMatrix == ElmNone) { + memberQualifier = &qualifier; + } else { + memberQualifier = &((*originTypeList)[member].type->getQualifier()); + } + + const TType* tmpType = tmpTypeList == nullptr ? + (*originTypeList)[member].type->clone() : (*tmpTypeList)[member].type; + + fixBlockUniformLayoutMatrix(*memberQualifier, (*originTypeList)[member].type->getWritableStruct(), + tmpType->getWritableStruct()); + + const TTypeList* structure = recordStructCopy(matrixFixRecord, (*originTypeList)[member].type, tmpType); + + if (tmpTypeList == nullptr) { + (*originTypeList)[member].type->setStruct(const_cast(structure)); + } + if (tmpTypeList != nullptr) { + (*tmpTypeList)[member].type->setStruct(const_cast(structure)); + } + } + } +} + +// +// Spread LayoutPacking to matrix or aggregate block members. If a block member is a struct or +// array of struct, spread LayoutPacking recursively to its matrix or aggregate members. +// +void TParseContext::fixBlockUniformLayoutPacking(TQualifier& qualifier, TTypeList* originTypeList, + TTypeList* tmpTypeList) +{ + assert(tmpTypeList == nullptr || originTypeList->size() == tmpTypeList->size()); + for (unsigned int member = 0; member < originTypeList->size(); ++member) { + if (qualifier.layoutPacking != ElpNone) { + if (tmpTypeList == nullptr) { + if ((*originTypeList)[member].type->getQualifier().layoutPacking == ElpNone && + !(*originTypeList)[member].type->isScalarOrVector()) { + (*originTypeList)[member].type->getQualifier().layoutPacking = qualifier.layoutPacking; + } + } else { + if ((*tmpTypeList)[member].type->getQualifier().layoutPacking == ElpNone && + !(*tmpTypeList)[member].type->isScalarOrVector()) { + (*tmpTypeList)[member].type->getQualifier().layoutPacking = qualifier.layoutPacking; + } + } + } + + if ((*originTypeList)[member].type->getBasicType() == EbtStruct) { + // Deep copy the type in pool. + // Because, struct use in different block may have different layout qualifier. + // We have to new a object to distinguish between them. + const TType* tmpType = tmpTypeList == nullptr ? + (*originTypeList)[member].type->clone() : (*tmpTypeList)[member].type; + + fixBlockUniformLayoutPacking(qualifier, (*originTypeList)[member].type->getWritableStruct(), + tmpType->getWritableStruct()); + + const TTypeList* structure = recordStructCopy(packingFixRecord, (*originTypeList)[member].type, tmpType); + + if (tmpTypeList == nullptr) { + (*originTypeList)[member].type->setStruct(const_cast(structure)); + } + if (tmpTypeList != nullptr) { + (*tmpTypeList)[member].type->setStruct(const_cast(structure)); + } + } + } +} + // For an identifier that is already declared, add more qualification to it. void TParseContext::addQualifierToExisting(const TSourceLoc& loc, TQualifier qualifier, const TString& identifier) { @@ -7939,7 +8911,7 @@ void TParseContext::invariantCheck(const TSourceLoc& loc, const TQualifier& qual bool pipeOut = qualifier.isPipeOutput(); bool pipeIn = qualifier.isPipeInput(); - if (version >= 300 || (!isEsProfile() && version >= 420)) { + if ((version >= 300 && isEsProfile()) || (!isEsProfile() && version >= 420)) { if (! pipeOut) error(loc, "can only apply to an output", "invariant", ""); } else { @@ -8172,6 +9144,16 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con { checkIoArraysConsistency(loc); } + + if (publicType.shaderQualifiers.layoutPrimitiveCulling) { + if (publicType.qualifier.storage != EvqTemporary) + error(loc, "layout qualifier can not have storage qualifiers", "primitive_culling","", ""); + else { + intermediate.setLayoutPrimitiveCulling(); + } + // Exit early as further checks are not valid + return; + } #endif const TQualifier& qualifier = publicType.qualifier; @@ -8216,8 +9198,14 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con } #endif break; + case EvqShared: + if (qualifier.hasMatrix()) + globalSharedDefaults.layoutMatrix = qualifier.layoutMatrix; + if (qualifier.hasPacking()) + globalSharedDefaults.layoutPacking = qualifier.layoutPacking; + break; default: - error(loc, "default qualifier requires 'uniform', 'buffer', 'in', or 'out' storage qualification", "", ""); + error(loc, "default qualifier requires 'uniform', 'buffer', 'in', 'out' or 'shared' storage qualification", "", ""); return; } @@ -8233,7 +9221,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con error(loc, "cannot declare a default, can only be used on a block", "buffer_reference", ""); if (qualifier.hasSpecConstantId()) error(loc, "cannot declare a default, can only be used on a scalar", "constant_id", ""); - if (qualifier.isShaderRecordNV()) + if (qualifier.isShaderRecord()) error(loc, "cannot declare a default, can only be used on a block", "shaderRecordNV", ""); } @@ -8301,11 +9289,14 @@ TIntermNode* TParseContext::addSwitch(const TSourceLoc& loc, TIntermTyped* expre // "it is an error to have no statement between a label and the end of the switch statement." // The specifications were updated to remove this (being ill-defined what a "statement" was), // so, this became a warning. However, 3.0 tests still check for the error. - if (isEsProfile() && version <= 300 && ! relaxedErrors()) + if (isEsProfile() && (version <= 300 || version >= 320) && ! relaxedErrors()) + error(loc, "last case/default label not followed by statements", "switch", ""); + else if (!isEsProfile() && (version <= 430 || version >= 460)) error(loc, "last case/default label not followed by statements", "switch", ""); else warn(loc, "last case/default label not followed by statements", "switch", ""); + // emulate a break for error recovery lastStatements = intermediate.makeAggregate(intermediate.addBranch(EOpBreak, loc)); lastStatements->setOperator(EOpSequence); @@ -8322,5 +9313,43 @@ TIntermNode* TParseContext::addSwitch(const TSourceLoc& loc, TIntermTyped* expre return switchNode; } +// +// When a struct used in block, and has it's own layout packing, layout matrix, +// record the origin structure of a struct to map, and Record the structure copy to the copy table, +// +const TTypeList* TParseContext::recordStructCopy(TStructRecord& record, const TType* originType, const TType* tmpType) +{ + size_t memberCount = tmpType->getStruct()->size(); + size_t originHash = 0, tmpHash = 0; + std::hash hasher; + for (size_t i = 0; i < memberCount; i++) { + size_t originMemberHash = hasher(originType->getStruct()->at(i).type->getQualifier().layoutPacking + + originType->getStruct()->at(i).type->getQualifier().layoutMatrix); + size_t tmpMemberHash = hasher(tmpType->getStruct()->at(i).type->getQualifier().layoutPacking + + tmpType->getStruct()->at(i).type->getQualifier().layoutMatrix); + originHash = hasher((originHash ^ originMemberHash) << 1); + tmpHash = hasher((tmpHash ^ tmpMemberHash) << 1); + } + const TTypeList* originStruct = originType->getStruct(); + const TTypeList* tmpStruct = tmpType->getStruct(); + if (originHash != tmpHash) { + auto fixRecords = record.find(originStruct); + if (fixRecords != record.end()) { + auto fixRecord = fixRecords->second.find(tmpHash); + if (fixRecord != fixRecords->second.end()) { + return fixRecord->second; + } else { + record[originStruct][tmpHash] = tmpStruct; + return tmpStruct; + } + } else { + record[originStruct] = std::map(); + record[originStruct][tmpHash] = tmpStruct; + return tmpStruct; + } + } + return originStruct; +} + } // end namespace glslang diff --git a/Externals/glslang/glslang/MachineIndependent/ParseHelper.h b/Externals/glslang/glslang/MachineIndependent/ParseHelper.h index 39363f1a2a7e..885fd90810f3 100644 --- a/Externals/glslang/glslang/MachineIndependent/ParseHelper.h +++ b/Externals/glslang/glslang/MachineIndependent/ParseHelper.h @@ -67,7 +67,8 @@ struct TPragma { class TScanContext; class TPpContext; -typedef std::set TIdSetType; +typedef std::set TIdSetType; +typedef std::map> TStructRecord; // // Sharable code (as well as what's in TParseVersions) across @@ -82,7 +83,8 @@ class TParseContextBase : public TParseVersions { : TParseVersions(interm, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), scopeMangler("::"), symbolTable(symbolTable), - statementNestingLevel(0), loopNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0), + statementNestingLevel(0), loopNestingLevel(0), structNestingLevel(0), blockNestingLevel(0), controlFlowNestingLevel(0), + currentFunctionType(nullptr), postEntryPointReturn(false), contextPragma(true, false), beginInvocationInterlockCount(0), endInvocationInterlockCount(0), @@ -90,7 +92,8 @@ class TParseContextBase : public TParseVersions { limits(resources.limits), globalUniformBlock(nullptr), globalUniformBinding(TQualifier::layoutBindingEnd), - globalUniformSet(TQualifier::layoutSetEnd) + globalUniformSet(TQualifier::layoutSetEnd), + atomicCounterBlockSet(TQualifier::layoutSetEnd) { if (entryPoint != nullptr) sourceEntryPointName = *entryPoint; @@ -152,10 +155,11 @@ class TParseContextBase : public TParseVersions { extensionCallback(line, extension, behavior); } -#ifdef ENABLE_HLSL // Manage the global uniform block (default uniforms in GLSL, $Global in HLSL) virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr); -#endif + + // Manage global buffer (used for backing atomic counters in GLSL when using relaxed Vulkan semantics) + virtual void growAtomicCounterBlock(int binding, const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr); // Potentially rename shader entry point function void renameShaderFunction(TString*& name) const @@ -176,7 +180,8 @@ class TParseContextBase : public TParseVersions { TSymbolTable& symbolTable; // symbol table that goes with the current language, version, and profile int statementNestingLevel; // 0 if outside all flow control or compound statements int loopNestingLevel; // 0 if outside all loops - int structNestingLevel; // 0 if outside blocks and structures + int structNestingLevel; // 0 if outside structures + int blockNestingLevel; // 0 if outside blocks int controlFlowNestingLevel; // 0 if outside all flow control const TType* currentFunctionType; // the return type of the function that's currently being parsed bool functionReturnsValue; // true if a non-void function has a return @@ -227,7 +232,25 @@ class TParseContextBase : public TParseVersions { // override this to set the language-specific name virtual const char* getGlobalUniformBlockName() const { return ""; } virtual void setUniformBlockDefaults(TType&) const { } - virtual void finalizeGlobalUniformBlockLayout(TVariable&) { } + virtual void finalizeGlobalUniformBlockLayout(TVariable&) {} + + // Manage the atomic counter block (used for atomic_uints with Vulkan-Relaxed) + TMap atomicCounterBuffers; + unsigned int atomicCounterBlockSet; + TMap atomicCounterBlockFirstNewMember; + // override this to set the language-specific name + virtual const char* getAtomicCounterBlockName() const { return ""; } + virtual void setAtomicCounterBlockDefaults(TType&) const {} + virtual void setInvariant(const TSourceLoc&, const char*) {} + virtual void finalizeAtomicCounterBlockLayout(TVariable&) {} + bool isAtomicCounterBlock(const TSymbol& symbol) { + const TVariable* var = symbol.getAsVariable(); + if (!var) + return false; + const auto& at = atomicCounterBuffers.find(var->getType().getQualifier().layoutBinding); + return (at != atomicCounterBuffers.end() && (*at).second->getType() == var->getType()); + } + virtual void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, TPrefixType prefix, va_list args); @@ -290,6 +313,9 @@ class TParseContext : public TParseContextBase { bool parseShaderStrings(TPpContext&, TInputScanner& input, bool versionWillBeError = false) override; void parserError(const char* s); // for bison's yyerror + virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr) override; + virtual void growAtomicCounterBlock(int binding, const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr) override; + void reservedErrorCheck(const TSourceLoc&, const TString&); void reservedPpErrorCheck(const TSourceLoc&, const char* name, const char* op) override; bool lineContinuationCheck(const TSourceLoc&, bool endOfComment) override; @@ -315,6 +341,7 @@ class TParseContext : public TParseContextBase { TIntermTyped* handleBinaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right); TIntermTyped* handleUnaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* childNode); TIntermTyped* handleDotDereference(const TSourceLoc&, TIntermTyped* base, const TString& field); + TIntermTyped* handleDotSwizzle(const TSourceLoc&, TIntermTyped* base, const TString& field); void blockMemberExtensionCheck(const TSourceLoc&, const TIntermTyped* base, int member, const TString& memberName); TFunction* handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype); TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&); @@ -326,6 +353,7 @@ class TParseContext : public TParseContextBase { TIntermTyped* handleLengthMethod(const TSourceLoc&, TFunction*, TIntermNode*); void addInputArgumentConversions(const TFunction&, TIntermNode*&) const; TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermAggregate&) const; + TIntermTyped* addAssign(const TSourceLoc&, TOperator op, TIntermTyped* left, TIntermTyped* right); void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&); void nonOpBuiltInCheck(const TSourceLoc&, const TFunction&, TIntermAggregate&); void userFunctionCallCheck(const TSourceLoc&, TIntermAggregate&); @@ -335,6 +363,10 @@ class TParseContext : public TParseContextBase { void checkPrecisionQualifier(const TSourceLoc&, TPrecisionQualifier); void memorySemanticsCheck(const TSourceLoc&, const TFunction&, const TIntermOperator& callNode); + TIntermTyped* vkRelaxedRemapFunctionCall(const TSourceLoc&, TFunction*, TIntermNode*); + // returns true if the variable was remapped to something else + bool vkRelaxedRemapUniformVariable(const TSourceLoc&, TString&, const TPublicType&, TArraySizes*, TIntermTyped*, TType&); + void assignError(const TSourceLoc&, const char* op, TString left, TString right); void unaryOpError(const TSourceLoc&, const char* op, TString operand); void binaryOpError(const TSourceLoc&, const char* op, TString left, TString right); @@ -358,10 +390,10 @@ class TParseContext : public TParseContextBase { void boolCheck(const TSourceLoc&, const TPublicType&); void samplerCheck(const TSourceLoc&, const TType&, const TString& identifier, TIntermTyped* initializer); void atomicUintCheck(const TSourceLoc&, const TType&, const TString& identifier); - void accStructNVCheck(const TSourceLoc & loc, const TType & type, const TString & identifier); + void accStructCheck(const TSourceLoc & loc, const TType & type, const TString & identifier); void transparentOpaqueCheck(const TSourceLoc&, const TType&, const TString& identifier); void memberQualifierCheck(glslang::TPublicType&); - void globalQualifierFixCheck(const TSourceLoc&, TQualifier&); + void globalQualifierFixCheck(const TSourceLoc&, TQualifier&, bool isMemberCheck = false); void globalQualifierTypeCheck(const TSourceLoc&, const TQualifier&, const TPublicType&); bool structQualifierErrorCheck(const TSourceLoc&, const TPublicType& pType); void mergeQualifiers(const TSourceLoc&, TQualifier& dst, const TQualifier& src, bool force); @@ -387,7 +419,7 @@ class TParseContext : public TParseContextBase { void arrayLimitCheck(const TSourceLoc&, const TString&, int size); void limitCheck(const TSourceLoc&, int value, const char* limit, const char* feature); - void inductiveLoopBodyCheck(TIntermNode*, int loopIndexId, TSymbolTable&); + void inductiveLoopBodyCheck(TIntermNode*, long long loopIndexId, TSymbolTable&); void constantIndexExpressionCheck(TIntermNode*); void setLayoutQualifier(const TSourceLoc&, TPublicType&, TString&); @@ -412,17 +444,21 @@ class TParseContext : public TParseContextBase { TIntermTyped* constructBuiltIn(const TType&, TOperator, TIntermTyped*, const TSourceLoc&, bool subset); void inheritMemoryQualifiers(const TQualifier& from, TQualifier& to); void declareBlock(const TSourceLoc&, TTypeList& typeList, const TString* instanceName = 0, TArraySizes* arraySizes = 0); + void blockStorageRemap(const TSourceLoc&, const TString*, TQualifier&); void blockStageIoCheck(const TSourceLoc&, const TQualifier&); void blockQualifierCheck(const TSourceLoc&, const TQualifier&, bool instanceName); void fixBlockLocations(const TSourceLoc&, TQualifier&, TTypeList&, bool memberWithLocation, bool memberWithoutLocation); void fixXfbOffsets(TQualifier&, TTypeList&); void fixBlockUniformOffsets(TQualifier&, TTypeList&); + void fixBlockUniformLayoutMatrix(TQualifier&, TTypeList*, TTypeList*); + void fixBlockUniformLayoutPacking(TQualifier&, TTypeList*, TTypeList*); void addQualifierToExisting(const TSourceLoc&, TQualifier, const TString& identifier); void addQualifierToExisting(const TSourceLoc&, TQualifier, TIdentifierList&); void invariantCheck(const TSourceLoc&, const TQualifier&); void updateStandaloneQualifierDefaults(const TSourceLoc&, const TPublicType&); void wrapupSwitchSubsequence(TIntermAggregate* statements, TIntermNode* branchNode); TIntermNode* addSwitch(const TSourceLoc&, TIntermTyped* expression, TIntermAggregate* body); + const TTypeList* recordStructCopy(TStructRecord&, const TType*, const TType*); #ifndef GLSLANG_WEB TAttributeType attributeFromName(const TString& name) const; @@ -435,6 +471,21 @@ class TParseContext : public TParseContextBase { void handleSwitchAttributes(const TAttributes& attributes, TIntermNode*); // Determine loop control from attributes void handleLoopAttributes(const TAttributes& attributes, TIntermNode*); + // Function attributes + void handleFunctionAttributes(const TSourceLoc&, const TAttributes&); + + // GL_EXT_spirv_intrinsics + TSpirvRequirement* makeSpirvRequirement(const TSourceLoc& loc, const TString& name, + const TIntermAggregate* extensions, const TIntermAggregate* capabilities); + TSpirvRequirement* mergeSpirvRequirements(const TSourceLoc& loc, TSpirvRequirement* spirvReq1, + TSpirvRequirement* spirvReq2); + TSpirvTypeParameters* makeSpirvTypeParameters(const TSourceLoc& loc, const TIntermConstantUnion* constant); + TSpirvTypeParameters* mergeSpirvTypeParameters(TSpirvTypeParameters* spirvTypeParams1, + TSpirvTypeParameters* spirvTypeParams2); + TSpirvInstruction* makeSpirvInstruction(const TSourceLoc& loc, const TString& name, const TString& value); + TSpirvInstruction* makeSpirvInstruction(const TSourceLoc& loc, const TString& name, int value); + TSpirvInstruction* mergeSpirvInstruction(const TSourceLoc& loc, TSpirvInstruction* spirvInst1, + TSpirvInstruction* spirvInst2); #endif void checkAndResizeMeshViewDim(const TSourceLoc&, TType&, bool isBlockMember); @@ -453,6 +504,15 @@ class TParseContext : public TParseContextBase { void finish() override; #endif + virtual const char* getGlobalUniformBlockName() const override; + virtual void finalizeGlobalUniformBlockLayout(TVariable&) override; + virtual void setUniformBlockDefaults(TType& block) const override; + + virtual const char* getAtomicCounterBlockName() const override; + virtual void finalizeAtomicCounterBlockLayout(TVariable&) override; + virtual void setAtomicCounterBlockDefaults(TType& block) const override; + virtual void setInvariant(const TSourceLoc& loc, const char* builtin) override; + public: // // Generally, bison productions, the scanner, and the PP need read/write access to these; just give them direct access @@ -477,12 +537,15 @@ class TParseContext : public TParseContextBase { TQualifier globalUniformDefaults; TQualifier globalInputDefaults; TQualifier globalOutputDefaults; + TQualifier globalSharedDefaults; TString currentCaller; // name of last function body entered (not valid when at global scope) #ifndef GLSLANG_WEB int* atomicUintOffsets; // to become an array of the right size to hold an offset per binding point bool anyIndexLimits; TIdSetType inductiveLoopIds; TVector needsIndexLimitationChecking; + TStructRecord matrixFixRecord; + TStructRecord packingFixRecord; // // Geometry shader input arrays: diff --git a/Externals/glslang/glslang/MachineIndependent/Scan.cpp b/Externals/glslang/glslang/MachineIndependent/Scan.cpp index fd18fd4d7d91..c387aede0e6b 100644 --- a/Externals/glslang/glslang/MachineIndependent/Scan.cpp +++ b/Externals/glslang/glslang/MachineIndependent/Scan.cpp @@ -2,6 +2,8 @@ // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. +// Copyright (C) 2020 Google, Inc. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -187,17 +189,15 @@ bool TInputScanner::scanVersion(int& version, EProfile& profile, bool& notFirstT if (lookingInMiddle) { notFirstToken = true; // make forward progress by finishing off the current line plus extra new lines - if (peek() == '\n' || peek() == '\r') { - while (peek() == '\n' || peek() == '\r') - get(); - } else + if (peek() != '\n' && peek() != '\r') { do { c = get(); } while (c != EndOfInput && c != '\n' && c != '\r'); - while (peek() == '\n' || peek() == '\r') - get(); - if (peek() == EndOfInput) - return true; + } + while (peek() == '\n' || peek() == '\r') + get(); + if (peek() == EndOfInput) + return true; } lookingInMiddle = true; @@ -365,6 +365,9 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["if"] = IF; (*KeywordMap)["else"] = ELSE; (*KeywordMap)["discard"] = DISCARD; + (*KeywordMap)["terminateInvocation"] = TERMINATE_INVOCATION; + (*KeywordMap)["terminateRayEXT"] = TERMINATE_RAY; + (*KeywordMap)["ignoreIntersectionEXT"] = IGNORE_INTERSECTION; (*KeywordMap)["return"] = RETURN; (*KeywordMap)["void"] = VOID; (*KeywordMap)["bool"] = BOOL; @@ -416,6 +419,7 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["queuefamilycoherent"] = QUEUEFAMILYCOHERENT; (*KeywordMap)["workgroupcoherent"] = WORKGROUPCOHERENT; (*KeywordMap)["subgroupcoherent"] = SUBGROUPCOHERENT; + (*KeywordMap)["shadercallcoherent"] = SHADERCALLCOHERENT; (*KeywordMap)["nonprivate"] = NONPRIVATE; (*KeywordMap)["restrict"] = RESTRICT; (*KeywordMap)["readonly"] = READONLY; @@ -470,6 +474,28 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["image2DMSArray"] = IMAGE2DMSARRAY; (*KeywordMap)["iimage2DMSArray"] = IIMAGE2DMSARRAY; (*KeywordMap)["uimage2DMSArray"] = UIMAGE2DMSARRAY; + (*KeywordMap)["i64image1D"] = I64IMAGE1D; + (*KeywordMap)["u64image1D"] = U64IMAGE1D; + (*KeywordMap)["i64image2D"] = I64IMAGE2D; + (*KeywordMap)["u64image2D"] = U64IMAGE2D; + (*KeywordMap)["i64image3D"] = I64IMAGE3D; + (*KeywordMap)["u64image3D"] = U64IMAGE3D; + (*KeywordMap)["i64image2DRect"] = I64IMAGE2DRECT; + (*KeywordMap)["u64image2DRect"] = U64IMAGE2DRECT; + (*KeywordMap)["i64imageCube"] = I64IMAGECUBE; + (*KeywordMap)["u64imageCube"] = U64IMAGECUBE; + (*KeywordMap)["i64imageBuffer"] = I64IMAGEBUFFER; + (*KeywordMap)["u64imageBuffer"] = U64IMAGEBUFFER; + (*KeywordMap)["i64image1DArray"] = I64IMAGE1DARRAY; + (*KeywordMap)["u64image1DArray"] = U64IMAGE1DARRAY; + (*KeywordMap)["i64image2DArray"] = I64IMAGE2DARRAY; + (*KeywordMap)["u64image2DArray"] = U64IMAGE2DARRAY; + (*KeywordMap)["i64imageCubeArray"] = I64IMAGECUBEARRAY; + (*KeywordMap)["u64imageCubeArray"] = U64IMAGECUBEARRAY; + (*KeywordMap)["i64image2DMS"] = I64IMAGE2DMS; + (*KeywordMap)["u64image2DMS"] = U64IMAGE2DMS; + (*KeywordMap)["i64image2DMSArray"] = I64IMAGE2DMSARRAY; + (*KeywordMap)["u64image2DMSArray"] = U64IMAGE2DMSARRAY; (*KeywordMap)["double"] = DOUBLE; (*KeywordMap)["dvec2"] = DVEC2; (*KeywordMap)["dvec3"] = DVEC3; @@ -560,6 +586,18 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["f64mat4x2"] = F64MAT4X2; (*KeywordMap)["f64mat4x3"] = F64MAT4X3; (*KeywordMap)["f64mat4x4"] = F64MAT4X4; + + // GL_EXT_spirv_intrinsics + (*KeywordMap)["spirv_instruction"] = SPIRV_INSTRUCTION; + (*KeywordMap)["spirv_execution_mode"] = SPIRV_EXECUTION_MODE; + (*KeywordMap)["spirv_execution_mode_id"] = SPIRV_EXECUTION_MODE_ID; + (*KeywordMap)["spirv_decorate"] = SPIRV_DECORATE; + (*KeywordMap)["spirv_decorate_id"] = SPIRV_DECORATE_ID; + (*KeywordMap)["spirv_decorate_string"] = SPIRV_DECORATE_STRING; + (*KeywordMap)["spirv_type"] = SPIRV_TYPE; + (*KeywordMap)["spirv_storage_class"] = SPIRV_STORAGE_CLASS; + (*KeywordMap)["spirv_by_reference"] = SPIRV_BY_REFERENCE; + (*KeywordMap)["spirv_literal"] = SPIRV_LITERAL; #endif (*KeywordMap)["sampler2D"] = SAMPLER2D; @@ -704,11 +742,18 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["precise"] = PRECISE; (*KeywordMap)["rayPayloadNV"] = PAYLOADNV; + (*KeywordMap)["rayPayloadEXT"] = PAYLOADEXT; (*KeywordMap)["rayPayloadInNV"] = PAYLOADINNV; + (*KeywordMap)["rayPayloadInEXT"] = PAYLOADINEXT; (*KeywordMap)["hitAttributeNV"] = HITATTRNV; + (*KeywordMap)["hitAttributeEXT"] = HITATTREXT; (*KeywordMap)["callableDataNV"] = CALLDATANV; + (*KeywordMap)["callableDataEXT"] = CALLDATAEXT; (*KeywordMap)["callableDataInNV"] = CALLDATAINNV; + (*KeywordMap)["callableDataInEXT"] = CALLDATAINEXT; (*KeywordMap)["accelerationStructureNV"] = ACCSTRUCTNV; + (*KeywordMap)["accelerationStructureEXT"] = ACCSTRUCTEXT; + (*KeywordMap)["rayQueryEXT"] = RAYQUERYEXT; (*KeywordMap)["perprimitiveNV"] = PERPRIMITIVENV; (*KeywordMap)["perviewNV"] = PERVIEWNV; (*KeywordMap)["taskNV"] = PERTASKNV; @@ -843,6 +888,7 @@ int TScanContext::tokenize(TPpContext* pp, TParserToken& token) parseContext.error(loc, "not supported", "::", ""); break; + case PpAtomConstString: parserToken->sType.lex.string = NewPoolTString(tokenText); return STRING_LITERAL; case PpAtomConstInt: parserToken->sType.lex.i = ppToken.ival; return INTCONSTANT; case PpAtomConstUint: parserToken->sType.lex.i = ppToken.ival; return UINTCONSTANT; case PpAtomConstFloat: parserToken->sType.lex.d = ppToken.dval; return FLOATCONSTANT; @@ -905,10 +951,22 @@ int TScanContext::tokenizeIdentifier() case CASE: return keyword; + case TERMINATE_INVOCATION: + if (!parseContext.extensionTurnedOn(E_GL_EXT_terminate_invocation)) + return identifierOrType(); + return keyword; + + case TERMINATE_RAY: + case IGNORE_INTERSECTION: + if (!parseContext.extensionTurnedOn(E_GL_EXT_ray_tracing)) + return identifierOrType(); + return keyword; + case BUFFER: afterBuffer = true; if ((parseContext.isEsProfile() && parseContext.version < 310) || - (!parseContext.isEsProfile() && parseContext.version < 430)) + (!parseContext.isEsProfile() && (parseContext.version < 430 && + !parseContext.extensionTurnedOn(E_GL_ARB_shader_storage_buffer_object)))) return identifierOrType(); return keyword; @@ -972,7 +1030,7 @@ int TScanContext::tokenizeIdentifier() return keyword; case PACKED: if ((parseContext.isEsProfile() && parseContext.version < 300) || - (!parseContext.isEsProfile() && parseContext.version < 330)) + (!parseContext.isEsProfile() && parseContext.version < 140)) return reservedWord(); return identifierOrType(); @@ -1014,6 +1072,23 @@ int TScanContext::tokenizeIdentifier() parseContext.extensionTurnedOn(E_GL_NV_ray_tracing)) return keyword; return identifierOrType(); + case PAYLOADEXT: + case PAYLOADINEXT: + case HITATTREXT: + case CALLDATAEXT: + case CALLDATAINEXT: + case ACCSTRUCTEXT: + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_ray_tracing) || + parseContext.extensionTurnedOn(E_GL_EXT_ray_query)) + return keyword; + return identifierOrType(); + case RAYQUERYEXT: + if (parseContext.symbolTable.atBuiltInLevel() || + (!parseContext.isEsProfile() && parseContext.version >= 460 + && parseContext.extensionTurnedOn(E_GL_EXT_ray_query))) + return keyword; + return identifierOrType(); case ATOMIC_UINT: if ((parseContext.isEsProfile() && parseContext.version >= 310) || parseContext.extensionTurnedOn(E_GL_ARB_shader_atomic_counters)) @@ -1025,6 +1100,7 @@ int TScanContext::tokenizeIdentifier() case QUEUEFAMILYCOHERENT: case WORKGROUPCOHERENT: case SUBGROUPCOHERENT: + case SHADERCALLCOHERENT: case NONPRIVATE: case RESTRICT: case READONLY: @@ -1119,6 +1195,19 @@ int TScanContext::tokenizeIdentifier() afterType = true; return firstGenerationImage(false); + case I64IMAGE1D: + case U64IMAGE1D: + case I64IMAGE1DARRAY: + case U64IMAGE1DARRAY: + case I64IMAGE2DRECT: + case U64IMAGE2DRECT: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) { + return firstGenerationImage(false); + } + return identifierOrType(); + case IMAGEBUFFER: case IIMAGEBUFFER: case UIMAGEBUFFER: @@ -1127,6 +1216,18 @@ int TScanContext::tokenizeIdentifier() parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) return keyword; return firstGenerationImage(false); + + case I64IMAGEBUFFER: + case U64IMAGEBUFFER: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) { + if ((parseContext.isEsProfile() && parseContext.version >= 320) || + parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) + return keyword; + return firstGenerationImage(false); + } + return identifierOrType(); case IMAGE2D: case IIMAGE2D: @@ -1143,6 +1244,20 @@ int TScanContext::tokenizeIdentifier() afterType = true; return firstGenerationImage(true); + case I64IMAGE2D: + case U64IMAGE2D: + case I64IMAGE3D: + case U64IMAGE3D: + case I64IMAGECUBE: + case U64IMAGECUBE: + case I64IMAGE2DARRAY: + case U64IMAGE2DARRAY: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) + return firstGenerationImage(true); + return identifierOrType(); + case IMAGECUBEARRAY: case IIMAGECUBEARRAY: case UIMAGECUBEARRAY: @@ -1151,6 +1266,18 @@ int TScanContext::tokenizeIdentifier() parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array)) return keyword; return secondGenerationImage(); + + case I64IMAGECUBEARRAY: + case U64IMAGECUBEARRAY: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) { + if ((parseContext.isEsProfile() && parseContext.version >= 320) || + parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array)) + return keyword; + return secondGenerationImage(); + } + return identifierOrType(); case IMAGE2DMS: case IIMAGE2DMS: @@ -1160,6 +1287,17 @@ int TScanContext::tokenizeIdentifier() case UIMAGE2DMSARRAY: afterType = true; return secondGenerationImage(); + + case I64IMAGE2DMS: + case U64IMAGE2DMS: + case I64IMAGE2DMSARRAY: + case U64IMAGE2DMSARRAY: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) { + return secondGenerationImage(); + } + return identifierOrType(); case DOUBLE: case DVEC2: @@ -1168,8 +1306,8 @@ int TScanContext::tokenizeIdentifier() afterType = true; if (parseContext.isEsProfile() || parseContext.version < 150 || (!parseContext.symbolTable.atBuiltInLevel() && - parseContext.version < 400 && - !parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_fp64))) + (parseContext.version < 400 && !parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_fp64) && + (parseContext.version < 410 && !parseContext.extensionTurnedOn(E_GL_ARB_vertex_attrib_64bit))))) reservedWord(); return keyword; @@ -1621,6 +1759,21 @@ int TScanContext::tokenizeIdentifier() return keyword; else return identifierOrType(); + + case SPIRV_INSTRUCTION: + case SPIRV_EXECUTION_MODE: + case SPIRV_EXECUTION_MODE_ID: + case SPIRV_DECORATE: + case SPIRV_DECORATE_ID: + case SPIRV_DECORATE_STRING: + case SPIRV_TYPE: + case SPIRV_STORAGE_CLASS: + case SPIRV_BY_REFERENCE: + case SPIRV_LITERAL: + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) + return keyword; + return identifierOrType(); #endif default: @@ -1746,7 +1899,9 @@ int TScanContext::dMat() if (!parseContext.isEsProfile() && (parseContext.version >= 400 || parseContext.symbolTable.atBuiltInLevel() || - (parseContext.version >= 150 && parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_fp64)))) + (parseContext.version >= 150 && parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_fp64)) || + (parseContext.version >= 150 && parseContext.extensionTurnedOn(E_GL_ARB_vertex_attrib_64bit) + && parseContext.language == EShLangVertex))) return keyword; if (parseContext.isForwardCompatible()) diff --git a/Externals/glslang/glslang/MachineIndependent/ShaderLang.cpp b/Externals/glslang/glslang/MachineIndependent/ShaderLang.cpp index 44ce1c19d1a8..a5ba40e6d946 100644 --- a/Externals/glslang/glslang/MachineIndependent/ShaderLang.cpp +++ b/Externals/glslang/glslang/MachineIndependent/ShaderLang.cpp @@ -1,7 +1,7 @@ // // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013-2016 LunarG, Inc. -// Copyright (C) 2015-2018 Google, Inc. +// Copyright (C) 2015-2020 Google, Inc. // // All rights reserved. // @@ -51,9 +51,9 @@ #include "ScanContext.h" #ifdef ENABLE_HLSL -#include "../../hlsl/hlslParseHelper.h" -#include "../../hlsl/hlslParseables.h" -#include "../../hlsl/hlslScanContext.h" +#include "../HLSL/hlslParseHelper.h" +#include "../HLSL/hlslParseables.h" +#include "../HLSL/hlslScanContext.h" #endif #include "../Include/ShHandle.h" @@ -72,6 +72,9 @@ // token to print ", but none of that seems appropriate for this file. #include "preprocessor/PpTokens.h" +// Build-time generated includes +#include "glslang/build_info.h" + namespace { // anonymous namespace for file-local functions and symbols // Total number of successful initializers of glslang: a refcount @@ -156,7 +159,7 @@ int MapVersionToIndex(int version) return index; } -const int SpvVersionCount = 3; // index range in MapSpvVersionToIndex +const int SpvVersionCount = 4; // index range in MapSpvVersionToIndex int MapSpvVersionToIndex(const SpvVersion& spvVersion) { @@ -164,8 +167,12 @@ int MapSpvVersionToIndex(const SpvVersion& spvVersion) if (spvVersion.openGl > 0) index = 1; - else if (spvVersion.vulkan > 0) - index = 2; + else if (spvVersion.vulkan > 0) { + if (!spvVersion.vulkanRelaxed) + index = 2; + else + index = 3; + } assert(index < SpvVersionCount); @@ -291,6 +298,9 @@ void InitializeStageSymbolTable(TBuiltInParseables& builtInParseables, int versi #ifdef GLSLANG_WEB profile = EEsProfile; version = 310; +#elif defined(GLSLANG_ANGLE) + profile = ECoreProfile; + version = 450; #endif (*symbolTables[language]).adoptLevels(*commonTable[CommonIndex(profile, language)]); @@ -312,6 +322,9 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS #ifdef GLSLANG_WEB profile = EEsProfile; version = 310; +#elif defined(GLSLANG_ANGLE) + profile = ECoreProfile; + version = 450; #endif std::unique_ptr builtInParseables(CreateBuiltInParseables(infoSink, source)); @@ -351,7 +364,6 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS (profile == EEsProfile && version >= 310)) InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangGeometry, source, infoSink, commonTable, symbolTables); -#endif // check for compute if ((profile != EEsProfile && version >= 420) || @@ -359,19 +371,20 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCompute, source, infoSink, commonTable, symbolTables); +#ifndef GLSLANG_ANGLE // check for ray tracing stages if (profile != EEsProfile && version >= 450) { - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangRayGenNV, source, + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangRayGen, source, infoSink, commonTable, symbolTables); - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangIntersectNV, source, + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangIntersect, source, infoSink, commonTable, symbolTables); - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangAnyHitNV, source, + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangAnyHit, source, infoSink, commonTable, symbolTables); - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangClosestHitNV, source, + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangClosestHit, source, infoSink, commonTable, symbolTables); - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangMissNV, source, + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangMiss, source, infoSink, commonTable, symbolTables); - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCallableNV, source, + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCallable, source, infoSink, commonTable, symbolTables); } @@ -386,6 +399,8 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS (profile == EEsProfile && version >= 320)) InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTaskNV, source, infoSink, commonTable, symbolTables); +#endif // !GLSLANG_ANGLE +#endif // !GLSLANG_WEB return true; } @@ -487,7 +502,7 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp // Function to Print all builtins void DumpBuiltinSymbolTable(TInfoSink& infoSink, const TSymbolTable& symbolTable) { -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) infoSink.debug << "BuiltinSymbolTable {\n"; symbolTable.dump(infoSink, true); @@ -591,7 +606,7 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo break; } -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) // Correct for stage type... switch (stage) { case EShLangGeometry: @@ -623,12 +638,12 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo version = profile == EEsProfile ? 310 : 420; } break; - case EShLangRayGenNV: - case EShLangIntersectNV: - case EShLangAnyHitNV: - case EShLangClosestHitNV: - case EShLangMissNV: - case EShLangCallableNV: + case EShLangRayGen: + case EShLangIntersect: + case EShLangAnyHit: + case EShLangClosestHit: + case EShLangMiss: + case EShLangCallable: if (profile == EEsProfile || version < 460) { correct = false; infoSink.info.message(EPrefixError, "#version: ray tracing shaders require non-es profile with version 460 or above"); @@ -712,10 +727,14 @@ void TranslateEnvironment(const TEnvironment* environment, EShMessages& messages break; case EShClientVulkan: spvVersion.vulkanGlsl = environment->input.dialectVersion; + spvVersion.vulkanRelaxed = environment->input.vulkanRulesRelaxed; break; case EShClientOpenGL: spvVersion.openGl = environment->input.dialectVersion; break; + case EShClientCount: + assert(0); + break; } switch (environment->input.languageFamily) { case EShSourceNone: @@ -728,6 +747,9 @@ void TranslateEnvironment(const TEnvironment* environment, EShMessages& messages source = EShSourceHlsl; messages = static_cast(messages | EShMsgReadHlsl); break; + case EShSourceCount: + assert(0); + break; } } @@ -791,6 +813,7 @@ bool ProcessDeferred( // set version/profile to defaultVersion/defaultProfile regardless of the #version // directive in the source code bool forceDefaultVersionAndProfile, + int overrideVersion, // overrides version specified by #verison or default version bool forwardCompatible, // give errors for use of deprecated features EShMessages messages, // warnings/errors/AST; things to print out TIntermediate& intermediate, // returned tree, etc. @@ -861,7 +884,7 @@ bool ProcessDeferred( : userInput.scanVersion(version, profile, versionNotFirstToken); bool versionNotFound = version == 0; if (forceDefaultVersionAndProfile && source == EShSourceGlsl) { -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) if (! (messages & EShMsgSuppressWarnings) && ! versionNotFound && (version != defaultVersion || profile != defaultProfile)) { compiler->infoSink.info << "Warning, (version, profile) forced to be (" @@ -878,16 +901,22 @@ bool ProcessDeferred( version = defaultVersion; profile = defaultProfile; } + if (source == EShSourceGlsl && overrideVersion != 0) { + version = overrideVersion; + } bool goodVersion = DeduceVersionProfile(compiler->infoSink, stage, versionNotFirst, defaultVersion, source, version, profile, spvVersion); #ifdef GLSLANG_WEB profile = EEsProfile; version = 310; +#elif defined(GLSLANG_ANGLE) + profile = ECoreProfile; + version = 450; #endif bool versionWillBeError = (versionNotFound || (profile == EEsProfile && version >= 300 && versionNotFirst)); -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) bool warnVersionNotFirst = false; if (! versionWillBeError && versionNotFirstToken) { if (messages & EShMsgRelaxedErrors) @@ -929,6 +958,9 @@ bool ProcessDeferred( if (cachedTable) symbolTable->adoptLevels(*cachedTable); + if (intermediate.getUniqueId() != 0) + symbolTable->overwriteUniqueId(intermediate.getUniqueId()); + // Add built-in symbols that are potentially context dependent; // they get popped again further down. if (! AddContextSpecificSymbols(resources, compiler->infoSink, *symbolTable, version, profile, spvVersion, @@ -957,7 +989,7 @@ bool ProcessDeferred( parseContext->setLimits(*resources); if (! goodVersion) parseContext->addError(); -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) if (warnVersionNotFirst) { TSourceLoc loc; loc.init(); @@ -991,10 +1023,11 @@ bool ProcessDeferred( bool success = processingContext(*parseContext, ppContext, fullInput, versionWillBeError, *symbolTable, intermediate, optLevel, messages); + intermediate.setUniqueId(symbolTable->getMaxSymbolId()); return success; } -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) // Responsible for keeping track of the most recent source string and line in // the preprocessor and outputting newlines appropriately if the source string @@ -1217,14 +1250,16 @@ struct DoFullParse{ parseContext.infoSink.info << parseContext.getNumErrors() << " compilation errors. No code generated.\n\n"; } +#ifndef GLSLANG_ANGLE if (messages & EShMsgAST) intermediate.output(parseContext.infoSink, true); +#endif return success; } }; -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) // Take a single compilation unit, and run the preprocessor on it. // Return: True if there were no issues found in preprocessing, // False if during preprocessing any unknown version, pragmas or @@ -1244,18 +1279,20 @@ bool PreprocessDeferred( int defaultVersion, // use 100 for ES environment, 110 for desktop EProfile defaultProfile, bool forceDefaultVersionAndProfile, + int overrideVersion, // use 0 if not overriding GLSL version bool forwardCompatible, // give errors for use of deprecated features EShMessages messages, // warnings/errors/AST; things to print out TShader::Includer& includer, TIntermediate& intermediate, // returned tree, etc. - std::string* outputString) + std::string* outputString, + TEnvironment* environment = nullptr) { DoPreprocessing parser(outputString); return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames, preamble, optLevel, resources, defaultVersion, - defaultProfile, forceDefaultVersionAndProfile, + defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, intermediate, parser, - false, includer); + false, includer, "", environment); } #endif @@ -1282,6 +1319,7 @@ bool CompileDeferred( int defaultVersion, // use 100 for ES environment, 110 for desktop EProfile defaultProfile, bool forceDefaultVersionAndProfile, + int overrideVersion, // use 0 if not overriding GLSL version bool forwardCompatible, // give errors for use of deprecated features EShMessages messages, // warnings/errors/AST; things to print out TIntermediate& intermediate,// returned tree, etc. @@ -1292,7 +1330,7 @@ bool CompileDeferred( DoFullParse parser; return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames, preamble, optLevel, resources, defaultVersion, - defaultProfile, forceDefaultVersionAndProfile, + defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, intermediate, parser, true, includer, sourceEntryPointName, environment); } @@ -1311,7 +1349,6 @@ int ShInitialize() glslang::GetGlobalLock(); ++NumberOfClients; - glslang::ReleaseGlobalLock(); if (PerProcessGPA == nullptr) PerProcessGPA = new TPoolAllocator(); @@ -1321,6 +1358,7 @@ int ShInitialize() glslang::HlslScanContext::fillInKeywordMap(); #endif + glslang::ReleaseGlobalLock(); return 1; } @@ -1383,9 +1421,10 @@ int ShFinalize() --NumberOfClients; assert(NumberOfClients >= 0); bool finalize = NumberOfClients == 0; - glslang::ReleaseGlobalLock(); - if (! finalize) + if (! finalize) { + glslang::ReleaseGlobalLock(); return 1; + } for (int version = 0; version < VersionCount; ++version) { for (int spvVersion = 0; spvVersion < SpvVersionCount; ++spvVersion) { @@ -1423,6 +1462,7 @@ int ShFinalize() glslang::HlslScanContext::deleteKeywordMap(); #endif + glslang::ReleaseGlobalLock(); return 1; } @@ -1464,7 +1504,7 @@ int ShCompile( TIntermediate intermediate(compiler->getLanguage()); TShader::ForbidIncluder includer; bool success = CompileDeferred(compiler, shaderStrings, numStrings, inputLengths, nullptr, - "", optLevel, resources, defaultVersion, ENoProfile, false, + "", optLevel, resources, defaultVersion, ENoProfile, false, 0, forwardCompatible, messages, intermediate, includer); // @@ -1678,19 +1718,29 @@ int ShGetUniformLocation(const ShHandle handle, const char* name) namespace glslang { -#include "../Include/revision.h" +Version GetVersion() +{ + Version version; + version.major = GLSLANG_VERSION_MAJOR; + version.minor = GLSLANG_VERSION_MINOR; + version.patch = GLSLANG_VERSION_PATCH; + version.flavor = GLSLANG_VERSION_FLAVOR; + return version; +} #define QUOTE(s) #s #define STR(n) QUOTE(n) const char* GetEsslVersionString() { - return "OpenGL ES GLSL 3.20 glslang Khronos. " STR(GLSLANG_MINOR_VERSION) "." STR(GLSLANG_PATCH_LEVEL); + return "OpenGL ES GLSL 3.20 glslang Khronos. " STR(GLSLANG_VERSION_MAJOR) "." STR(GLSLANG_VERSION_MINOR) "." STR( + GLSLANG_VERSION_PATCH) GLSLANG_VERSION_FLAVOR; } const char* GetGlslVersionString() { - return "4.60 glslang Khronos. " STR(GLSLANG_MINOR_VERSION) "." STR(GLSLANG_PATCH_LEVEL); + return "4.60 glslang Khronos. " STR(GLSLANG_VERSION_MAJOR) "." STR(GLSLANG_VERSION_MINOR) "." STR( + GLSLANG_VERSION_PATCH) GLSLANG_VERSION_FLAVOR; } int GetKhronosToolId() @@ -1715,7 +1765,7 @@ class TDeferredCompiler : public TCompiler { }; TShader::TShader(EShLanguage s) - : stage(s), lengths(nullptr), stringNames(nullptr), preamble("") + : stage(s), lengths(nullptr), stringNames(nullptr), preamble(""), overrideVersion(0) { pool = new TPoolAllocator; infoSink = new TInfoSink; @@ -1725,6 +1775,7 @@ TShader::TShader(EShLanguage s) // clear environment (avoid constructors in them for use in a C interface) environment.input.languageFamily = EShSourceNone; environment.input.dialect = EShClientNone; + environment.input.vulkanRulesRelaxed = false; environment.client.client = EShClientNone; environment.target.language = EShTargetNone; environment.target.hlslFunctionality1 = false; @@ -1771,12 +1822,26 @@ void TShader::setSourceEntryPoint(const char* name) sourceEntryPointName = name; } +// Log initial settings and transforms. +// See comment for class TProcesses. void TShader::addProcesses(const std::vector& p) { intermediate->addProcesses(p); } +void TShader::setUniqueId(unsigned long long id) +{ + intermediate->setUniqueId(id); +} + +void TShader::setOverrideVersion(int version) +{ + overrideVersion = version; +} + void TShader::setInvertY(bool invert) { intermediate->setInvertY(invert); } +void TShader::setDxPositionW(bool invert) { intermediate->setDxPositionW(invert); } +void TShader::setEnhancedMsgs() { intermediate->setEnhancedMsgs(); } void TShader::setNanMinMaxClamp(bool useNonNan) { intermediate->setNanMinMaxClamp(useNonNan); } #ifndef GLSLANG_WEB @@ -1824,6 +1889,15 @@ void TShader::setResourceSetBinding(const std::vector& base) { in void TShader::setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode) { intermediate->setTextureSamplerTransformMode(mode); } #endif +void TShader::addBlockStorageOverride(const char* nameStr, TBlockStorageClass backing) { intermediate->addBlockStorageOverride(nameStr, backing); } + +void TShader::setGlobalUniformBlockName(const char* name) { intermediate->setGlobalUniformBlockName(name); } +void TShader::setGlobalUniformSet(unsigned int set) { intermediate->setGlobalUniformSet(set); } +void TShader::setGlobalUniformBinding(unsigned int binding) { intermediate->setGlobalUniformBinding(binding); } + +void TShader::setAtomicCounterBlockName(const char* name) { intermediate->setAtomicCounterBlockName(name); } +void TShader::setAtomicCounterBlockSet(unsigned int set) { intermediate->setAtomicCounterBlockSet(set); } + #ifdef ENABLE_HLSL // See comment above TDefaultHlslIoMapper in iomapper.cpp: void TShader::setHlslIoMapping(bool hlslIoMap) { intermediate->setHlslIoMapping(hlslIoMap); } @@ -1847,12 +1921,12 @@ bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion return CompileDeferred(compiler, strings, numStrings, lengths, stringNames, preamble, EShOptNone, builtInResources, defaultVersion, - defaultProfile, forceDefaultVersionAndProfile, + defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, *intermediate, includer, sourceEntryPointName, &environment); } -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) // Fill in a string with the result of preprocessing ShaderStrings // Returns true if all extensions, pragmas and version strings were valid. // @@ -1874,8 +1948,9 @@ bool TShader::preprocess(const TBuiltInResource* builtInResources, return PreprocessDeferred(compiler, strings, numStrings, lengths, stringNames, preamble, EShOptNone, builtInResources, defaultVersion, - defaultProfile, forceDefaultVersionAndProfile, - forwardCompatible, message, includer, *intermediate, output_string); + defaultProfile, forceDefaultVersionAndProfile, overrideVersion, + forwardCompatible, message, includer, *intermediate, output_string, + &environment); } #endif @@ -1890,7 +1965,7 @@ const char* TShader::getInfoDebugLog() } TProgram::TProgram() : -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) reflection(0), #endif linked(false) @@ -1906,7 +1981,7 @@ TProgram::TProgram() : TProgram::~TProgram() { delete infoSink; -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) delete reflection; #endif @@ -1938,7 +2013,10 @@ bool TProgram::link(EShMessages messages) error = true; } - // TODO: Link: cross-stage error checking + if (!error) { + if (! crossStageCheck(messages)) + error = true; + } return ! error; } @@ -1953,7 +2031,7 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages) if (stages[stage].size() == 0) return true; -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) int numEsShaders = 0, numNonEsShaders = 0; for (auto it = stages[stage].begin(); it != stages[stage].end(); ++it) { if ((*it)->intermediate->getProfile() == EEsProfile) { @@ -1982,7 +2060,9 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages) intermediate[stage] = new TIntermediate(stage, firstIntermediate->getVersion(), firstIntermediate->getProfile()); - + intermediate[stage]->setLimits(firstIntermediate->getLimits()); + if (firstIntermediate->getEnhancedMsgs()) + intermediate[stage]->setEnhancedMsgs(); // The new TIntermediate must use the same origin as the original TIntermediates. // Otherwise linking will fail due to different coordinate systems. @@ -2007,12 +2087,77 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages) #endif intermediate[stage]->finalCheck(*infoSink, (messages & EShMsgKeepUncalled) != 0); +#ifndef GLSLANG_ANGLE if (messages & EShMsgAST) intermediate[stage]->output(*infoSink, true); +#endif return intermediate[stage]->getNumErrors() == 0; } +// +// Check that there are no errors in linker objects accross stages +// +// Return true if no errors. +// +bool TProgram::crossStageCheck(EShMessages) { + + // make temporary intermediates to hold the linkage symbols for each linking interface + // while we do the checks + // Independent interfaces are: + // all uniform variables and blocks + // all buffer blocks + // all in/out on a stage boundary + + TVector activeStages; + for (int s = 0; s < EShLangCount; ++s) { + if (intermediate[s]) + activeStages.push_back(intermediate[s]); + } + + // no extra linking if there is only one stage + if (! (activeStages.size() > 1)) + return true; + + // setup temporary tree to hold unfirom objects from different stages + TIntermediate* firstIntermediate = activeStages.front(); + TIntermediate uniforms(EShLangCount, + firstIntermediate->getVersion(), + firstIntermediate->getProfile()); + uniforms.setSpv(firstIntermediate->getSpv()); + + TIntermAggregate uniformObjects(EOpLinkerObjects); + TIntermAggregate root(EOpSequence); + root.getSequence().push_back(&uniformObjects); + uniforms.setTreeRoot(&root); + + bool error = false; + + // merge uniforms from all stages into a single intermediate + for (unsigned int i = 0; i < activeStages.size(); ++i) { + uniforms.mergeUniformObjects(*infoSink, *activeStages[i]); + } + error |= uniforms.getNumErrors() != 0; + + // copy final definition of global block back into each stage + for (unsigned int i = 0; i < activeStages.size(); ++i) { + // We only want to merge into already existing global uniform blocks. + // A stage that doesn't already know about the global doesn't care about it's content. + // Otherwise we end up pointing to the same object between different stages + // and that will break binding/set remappings + bool mergeExistingOnly = true; + activeStages[i]->mergeGlobalUniformBlocks(*infoSink, uniforms, mergeExistingOnly); + } + + // compare cross stage symbols for each stage boundary + for (unsigned int i = 1; i < activeStages.size(); ++i) { + activeStages[i - 1]->checkStageIO(*infoSink, *activeStages[i]); + error |= (activeStages[i - 1]->getNumErrors() != 0); + } + + return !error; +} + const char* TProgram::getInfoLog() { return infoSink->info.c_str(); @@ -2023,7 +2168,7 @@ const char* TProgram::getInfoDebugLog() return infoSink->debug.c_str(); } -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) // // Reflection implementation. @@ -2105,6 +2250,6 @@ bool TProgram::mapIO(TIoMapResolver* pResolver, TIoMapper* pIoMapper) return ioMapper->doMap(pResolver, *infoSink); } -#endif // GLSLANG_WEB +#endif // !GLSLANG_WEB && !GLSLANG_ANGLE } // end namespace glslang diff --git a/Externals/glslang/glslang/MachineIndependent/SpirvIntrinsics.cpp b/Externals/glslang/glslang/MachineIndependent/SpirvIntrinsics.cpp new file mode 100644 index 000000000000..6650f7d9eed3 --- /dev/null +++ b/Externals/glslang/glslang/MachineIndependent/SpirvIntrinsics.cpp @@ -0,0 +1,350 @@ +// +// Copyright(C) 2021 Advanced Micro Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// +// Neither the name of 3Dlabs Inc. Ltd. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// + +#ifndef GLSLANG_WEB + +// +// GL_EXT_spirv_intrinsics +// +#include "../Include/intermediate.h" +#include "../Include/SpirvIntrinsics.h" +#include "../Include/Types.h" +#include "ParseHelper.h" + +namespace glslang { + +// +// Handle SPIR-V requirements +// +TSpirvRequirement* TParseContext::makeSpirvRequirement(const TSourceLoc& loc, const TString& name, + const TIntermAggregate* extensions, + const TIntermAggregate* capabilities) +{ + TSpirvRequirement* spirvReq = new TSpirvRequirement; + + if (name == "extensions") { + assert(extensions); + for (auto extension : extensions->getSequence()) { + assert(extension->getAsConstantUnion()); + spirvReq->extensions.insert(*extension->getAsConstantUnion()->getConstArray()[0].getSConst()); + } + } else if (name == "capabilities") { + assert(capabilities); + for (auto capability : capabilities->getSequence()) { + assert(capability->getAsConstantUnion()); + spirvReq->capabilities.insert(capability->getAsConstantUnion()->getConstArray()[0].getIConst()); + } + } else + error(loc, "unknow SPIR-V requirement", name.c_str(), ""); + + return spirvReq; +} + +TSpirvRequirement* TParseContext::mergeSpirvRequirements(const TSourceLoc& loc, TSpirvRequirement* spirvReq1, + TSpirvRequirement* spirvReq2) +{ + // Merge the second SPIR-V requirement to the first one + if (!spirvReq2->extensions.empty()) { + if (spirvReq1->extensions.empty()) + spirvReq1->extensions = spirvReq2->extensions; + else + error(loc, "too many SPIR-V requirements", "extensions", ""); + } + + if (!spirvReq2->capabilities.empty()) { + if (spirvReq1->capabilities.empty()) + spirvReq1->capabilities = spirvReq2->capabilities; + else + error(loc, "too many SPIR-V requirements", "capabilities", ""); + } + + return spirvReq1; +} + +void TIntermediate::insertSpirvRequirement(const TSpirvRequirement* spirvReq) +{ + if (!spirvRequirement) + spirvRequirement = new TSpirvRequirement; + + for (auto extension : spirvReq->extensions) + spirvRequirement->extensions.insert(extension); + + for (auto capability : spirvReq->capabilities) + spirvRequirement->capabilities.insert(capability); +} + +// +// Handle SPIR-V execution modes +// +void TIntermediate::insertSpirvExecutionMode(int executionMode, const TIntermAggregate* args) +{ + if (!spirvExecutionMode) + spirvExecutionMode = new TSpirvExecutionMode; + + TVector extraOperands; + if (args) { + for (auto arg : args->getSequence()) { + auto extraOperand = arg->getAsConstantUnion(); + assert(extraOperand != nullptr); + extraOperands.push_back(extraOperand); + } + } + spirvExecutionMode->modes[executionMode] = extraOperands; +} + +void TIntermediate::insertSpirvExecutionModeId(int executionMode, const TIntermAggregate* args) +{ + if (!spirvExecutionMode) + spirvExecutionMode = new TSpirvExecutionMode; + + assert(args); + TVector extraOperands; + + for (auto arg : args->getSequence()) { + auto extraOperand = arg->getAsTyped(); + assert(extraOperand != nullptr && extraOperand->getQualifier().isConstant()); + extraOperands.push_back(extraOperand); + } + spirvExecutionMode->modeIds[executionMode] = extraOperands; +} + +// +// Handle SPIR-V decorate qualifiers +// +void TQualifier::setSpirvDecorate(int decoration, const TIntermAggregate* args) +{ + if (!spirvDecorate) + spirvDecorate = new TSpirvDecorate; + + TVector extraOperands; + if (args) { + for (auto arg : args->getSequence()) { + auto extraOperand = arg->getAsConstantUnion(); + assert(extraOperand != nullptr); + extraOperands.push_back(extraOperand); + } + } + spirvDecorate->decorates[decoration] = extraOperands; +} + +void TQualifier::setSpirvDecorateId(int decoration, const TIntermAggregate* args) +{ + if (!spirvDecorate) + spirvDecorate = new TSpirvDecorate; + + assert(args); + TVector extraOperands; + for (auto arg : args->getSequence()) { + auto extraOperand = arg->getAsTyped(); + assert(extraOperand != nullptr && extraOperand->getQualifier().isConstant()); + extraOperands.push_back(extraOperand); + } + spirvDecorate->decorateIds[decoration] = extraOperands; +} + +void TQualifier::setSpirvDecorateString(int decoration, const TIntermAggregate* args) +{ + if (!spirvDecorate) + spirvDecorate = new TSpirvDecorate; + + assert(args); + TVector extraOperands; + for (auto arg : args->getSequence()) { + auto extraOperand = arg->getAsConstantUnion(); + assert(extraOperand != nullptr); + extraOperands.push_back(extraOperand); + } + spirvDecorate->decorateStrings[decoration] = extraOperands; +} + +TString TQualifier::getSpirvDecorateQualifierString() const +{ + assert(spirvDecorate); + + TString qualifierString; + + const auto appendFloat = [&](float f) { qualifierString.append(std::to_string(f).c_str()); }; + const auto appendInt = [&](int i) { qualifierString.append(std::to_string(i).c_str()); }; + const auto appendUint = [&](unsigned int u) { qualifierString.append(std::to_string(u).c_str()); }; + const auto appendBool = [&](bool b) { qualifierString.append(std::to_string(b).c_str()); }; + const auto appendStr = [&](const char* s) { qualifierString.append(s); }; + + const auto appendDecorate = [&](const TIntermTyped* constant) { + auto& constArray = constant->getAsConstantUnion() != nullptr ? constant->getAsConstantUnion()->getConstArray() + : constant->getAsSymbolNode()->getConstArray(); + if (constant->getBasicType() == EbtFloat) { + float value = static_cast(constArray[0].getDConst()); + appendFloat(value); + } + else if (constant->getBasicType() == EbtInt) { + int value = constArray[0].getIConst(); + appendInt(value); + } + else if (constant->getBasicType() == EbtUint) { + unsigned value = constArray[0].getUConst(); + appendUint(value); + } + else if (constant->getBasicType() == EbtBool) { + bool value = constArray[0].getBConst(); + appendBool(value); + } + else if (constant->getBasicType() == EbtString) { + const TString* value = constArray[0].getSConst(); + appendStr(value->c_str()); + } + else + assert(0); + }; + + for (auto& decorate : spirvDecorate->decorates) { + appendStr("spirv_decorate("); + appendInt(decorate.first); + for (auto extraOperand : decorate.second) { + appendStr(", "); + appendDecorate(extraOperand); + } + appendStr(") "); + } + + for (auto& decorateId : spirvDecorate->decorateIds) { + appendStr("spirv_decorate_id("); + appendInt(decorateId.first); + for (auto extraOperand : decorateId.second) { + appendStr(", "); + appendDecorate(extraOperand); + } + appendStr(") "); + } + + for (auto& decorateString : spirvDecorate->decorateStrings) { + appendStr("spirv_decorate_string("); + appendInt(decorateString.first); + for (auto extraOperand : decorateString.second) { + appendStr(", "); + appendDecorate(extraOperand); + } + appendStr(") "); + } + + return qualifierString; +} + +// +// Handle SPIR-V type specifiers +// +void TPublicType::setSpirvType(const TSpirvInstruction& spirvInst, const TSpirvTypeParameters* typeParams) +{ + if (!spirvType) + spirvType = new TSpirvType; + + basicType = EbtSpirvType; + spirvType->spirvInst = spirvInst; + if (typeParams) + spirvType->typeParams = *typeParams; +} + +TSpirvTypeParameters* TParseContext::makeSpirvTypeParameters(const TSourceLoc& loc, const TIntermConstantUnion* constant) +{ + TSpirvTypeParameters* spirvTypeParams = new TSpirvTypeParameters; + if (constant->getBasicType() != EbtFloat && + constant->getBasicType() != EbtInt && + constant->getBasicType() != EbtUint && + constant->getBasicType() != EbtBool && + constant->getBasicType() != EbtString) + error(loc, "this type not allowed", constant->getType().getBasicString(), ""); + else { + assert(constant); + spirvTypeParams->push_back(TSpirvTypeParameter(constant)); + } + + return spirvTypeParams; +} + +TSpirvTypeParameters* TParseContext::mergeSpirvTypeParameters(TSpirvTypeParameters* spirvTypeParams1, TSpirvTypeParameters* spirvTypeParams2) +{ + // Merge SPIR-V type parameters of the second one to the first one + for (const auto& spirvTypeParam : *spirvTypeParams2) + spirvTypeParams1->push_back(spirvTypeParam); + return spirvTypeParams1; +} + +// +// Handle SPIR-V instruction qualifiers +// +TSpirvInstruction* TParseContext::makeSpirvInstruction(const TSourceLoc& loc, const TString& name, const TString& value) +{ + TSpirvInstruction* spirvInst = new TSpirvInstruction; + if (name == "set") + spirvInst->set = value; + else + error(loc, "unknown SPIR-V instruction qualifier", name.c_str(), ""); + + return spirvInst; +} + +TSpirvInstruction* TParseContext::makeSpirvInstruction(const TSourceLoc& loc, const TString& name, int value) +{ + TSpirvInstruction* spirvInstuction = new TSpirvInstruction; + if (name == "id") + spirvInstuction->id = value; + else + error(loc, "unknown SPIR-V instruction qualifier", name.c_str(), ""); + + return spirvInstuction; +} + +TSpirvInstruction* TParseContext::mergeSpirvInstruction(const TSourceLoc& loc, TSpirvInstruction* spirvInst1, TSpirvInstruction* spirvInst2) +{ + // Merge qualifiers of the second SPIR-V instruction to those of the first one + if (!spirvInst2->set.empty()) { + if (spirvInst1->set.empty()) + spirvInst1->set = spirvInst2->set; + else + error(loc, "too many SPIR-V instruction qualifiers", "spirv_instruction", "(set)"); + } + + if (spirvInst2->id != -1) { + if (spirvInst1->id == -1) + spirvInst1->id = spirvInst2->id; + else + error(loc, "too many SPIR-V instruction qualifiers", "spirv_instruction", "(id)"); + } + + return spirvInst1; +} + +} // end namespace glslang + +#endif // GLSLANG_WEB diff --git a/Externals/glslang/glslang/MachineIndependent/SymbolTable.cpp b/Externals/glslang/glslang/MachineIndependent/SymbolTable.cpp index 44682379f720..a3ffa0c467e3 100644 --- a/Externals/glslang/glslang/MachineIndependent/SymbolTable.cpp +++ b/Externals/glslang/glslang/MachineIndependent/SymbolTable.cpp @@ -3,6 +3,7 @@ // Copyright (C) 2012-2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. // Copyright (C) 2015-2018 Google, Inc. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -74,7 +75,9 @@ void TType::buildMangledName(TString& mangledName) const case EbtInt64: mangledName += "i64"; break; case EbtUint64: mangledName += "u64"; break; case EbtAtomicUint: mangledName += "au"; break; - case EbtAccStructNV: mangledName += "asnv"; break; + case EbtAccStruct: mangledName += "as"; break; + case EbtRayQuery: mangledName += "rq"; break; + case EbtSpirvType: mangledName += "spv-t"; break; #endif case EbtSampler: switch (sampler.type) { @@ -83,6 +86,8 @@ void TType::buildMangledName(TString& mangledName) const #endif case EbtInt: mangledName += "i"; break; case EbtUint: mangledName += "u"; break; + case EbtInt64: mangledName += "i64"; break; + case EbtUint64: mangledName += "u64"; break; default: break; // some compilers want this } if (sampler.isImageClass()) @@ -120,7 +125,7 @@ void TType::buildMangledName(TString& mangledName) const mangledName += "-tx-struct"; char text[16]; // plenty enough space for the small integers. - snprintf(text, sizeof(text), "%d-", sampler.getStructReturnIndex()); + snprintf(text, sizeof(text), "%u-", sampler.getStructReturnIndex()); mangledName += text; } else { switch (sampler.getVectorSize()) { @@ -144,6 +149,8 @@ void TType::buildMangledName(TString& mangledName) const if (typeName) mangledName += *typeName; for (unsigned int i = 0; i < structure->size(); ++i) { + if ((*structure)[i].type->getBasicType() == EbtVoid) + continue; mangledName += '-'; (*structure)[i].type->buildMangledName(mangledName); } @@ -164,7 +171,7 @@ void TType::buildMangledName(TString& mangledName) const for (int i = 0; i < arraySizes->getNumDims(); ++i) { if (arraySizes->getDimNode(i)) { if (arraySizes->getDimNode(i)->getAsSymbolNode()) - snprintf(buf, maxSize, "s%d", arraySizes->getDimNode(i)->getAsSymbolNode()->getId()); + snprintf(buf, maxSize, "s%lld", arraySizes->getDimNode(i)->getAsSymbolNode()->getId()); else snprintf(buf, maxSize, "s%p", arraySizes->getDimNode(i)); } else @@ -176,7 +183,7 @@ void TType::buildMangledName(TString& mangledName) const } } -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) // // Dump functions. @@ -272,8 +279,14 @@ TFunction::~TFunction() // TSymbolTableLevel::~TSymbolTableLevel() { - for (tLevel::iterator it = level.begin(); it != level.end(); ++it) - delete (*it).second; + for (tLevel::iterator it = level.begin(); it != level.end(); ++it) { + const TString& name = it->first; + auto retargetIter = std::find_if(retargetedSymbols.begin(), retargetedSymbols.end(), + [&name](const std::pair& i) { return i.first == name; }); + if (retargetIter == retargetedSymbols.end()) + delete (*it).second; + } + delete [] defaultPrecision; } @@ -384,6 +397,9 @@ TFunction::TFunction(const TFunction& copyOf) : TSymbol(copyOf) implicitThis = copyOf.implicitThis; illegalImplicitThis = copyOf.illegalImplicitThis; defaultParamCount = copyOf.defaultParamCount; +#ifndef GLSLANG_WEB + spirvInst = copyOf.spirvInst; +#endif } TFunction* TFunction::clone() const @@ -408,6 +424,10 @@ TSymbolTableLevel* TSymbolTableLevel::clone() const TSymbolTableLevel *symTableLevel = new TSymbolTableLevel(); symTableLevel->anonId = anonId; symTableLevel->thisLevel = thisLevel; + symTableLevel->retargetedSymbols.clear(); + for (auto &s : retargetedSymbols) { + symTableLevel->retargetedSymbols.push_back({s.first, s.second}); + } std::vector containerCopied(anonId, false); tLevel::const_iterator iter; for (iter = level.begin(); iter != level.end(); ++iter) { @@ -423,8 +443,21 @@ TSymbolTableLevel* TSymbolTableLevel::clone() const symTableLevel->insert(*container, false); containerCopied[anon->getAnonId()] = true; } - } else + } else { + const TString& name = iter->first; + auto retargetIter = std::find_if(retargetedSymbols.begin(), retargetedSymbols.end(), + [&name](const std::pair& i) { return i.first == name; }); + if (retargetIter != retargetedSymbols.end()) + continue; symTableLevel->insert(*iter->second->clone(), false); + } + } + // Now point retargeted symbols to the newly created versions of them + for (auto &s : retargetedSymbols) { + TSymbol* sym = symTableLevel->find(s.second); + if (!sym) + continue; + symTableLevel->insert(s.first, sym); } return symTableLevel; diff --git a/Externals/glslang/glslang/MachineIndependent/SymbolTable.h b/Externals/glslang/glslang/MachineIndependent/SymbolTable.h index 40ca3da532c0..31312ecbaa3b 100644 --- a/Externals/glslang/glslang/MachineIndependent/SymbolTable.h +++ b/Externals/glslang/glslang/MachineIndependent/SymbolTable.h @@ -84,7 +84,7 @@ typedef TVector TExtensionList; class TSymbol { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) - explicit TSymbol(const TString *n) : name(n), extensions(0), writable(true) { } + explicit TSymbol(const TString *n) : name(n), uniqueId(0), extensions(0), writable(true) { } virtual TSymbol* clone() const = 0; virtual ~TSymbol() { } // rely on all symbol owned memory coming from the pool @@ -104,8 +104,8 @@ class TSymbol { virtual const TAnonMember* getAsAnonMember() const { return 0; } virtual const TType& getType() const = 0; virtual TType& getWritableType() = 0; - virtual void setUniqueId(int id) { uniqueId = id; } - virtual int getUniqueId() const { return uniqueId; } + virtual void setUniqueId(long long id) { uniqueId = id; } + virtual long long getUniqueId() const { return uniqueId; } virtual void setExtensions(int numExts, const char* const exts[]) { assert(extensions == 0); @@ -117,7 +117,7 @@ class TSymbol { virtual int getNumExtensions() const { return extensions == nullptr ? 0 : (int)extensions->size(); } virtual const char** getExtensions() const { return extensions->data(); } -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) virtual void dump(TInfoSink& infoSink, bool complete = false) const = 0; void dumpExtensions(TInfoSink& infoSink) const; #endif @@ -130,7 +130,7 @@ class TSymbol { TSymbol& operator=(const TSymbol&); const TString *name; - unsigned int uniqueId; // For cross-scope comparing during code generation + unsigned long long uniqueId; // For cross-scope comparing during code generation // For tracking what extensions must be present // (don't use if correct version/profile is present). @@ -196,7 +196,7 @@ class TVariable : public TSymbol { } virtual const char** getMemberExtensions(int member) const { return (*memberExtensions)[member].data(); } -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) virtual void dump(TInfoSink& infoSink, bool complete = false) const; #endif @@ -320,6 +320,15 @@ class TFunction : public TSymbol { virtual const TParameter& operator[](int i) const { return parameters[i]; } #ifndef GLSLANG_WEB + virtual void setSpirvInstruction(const TSpirvInstruction& inst) + { + relateToOperator(EOpSpirvInst); + spirvInst = inst; + } + virtual const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; } +#endif + +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) virtual void dump(TInfoSink& infoSink, bool complete = false) const override; #endif @@ -342,6 +351,10 @@ class TFunction : public TSymbol { // This is important for a static member function that has member variables in scope, // but is not allowed to use them, or see hidden symbols instead. int defaultParamCount; + +#ifndef GLSLANG_WEB + TSpirvInstruction spirvInst; // SPIR-V instruction qualifiers +#endif }; // @@ -381,7 +394,7 @@ class TAnonMember : public TSymbol { virtual const char** getExtensions() const override { return anonContainer.getMemberExtensions(memberNumber); } virtual int getAnonId() const { return anonId; } -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) virtual void dump(TInfoSink& infoSink, bool complete = false) const override; #endif @@ -400,13 +413,20 @@ class TSymbolTableLevel { TSymbolTableLevel() : defaultPrecision(0), anonId(0), thisLevel(false) { } ~TSymbolTableLevel(); - bool insert(TSymbol& symbol, bool separateNameSpaces) + bool insert(const TString& name, TSymbol* symbol) { + return level.insert(tLevelPair(name, symbol)).second; + } + + bool insert(TSymbol& symbol, bool separateNameSpaces, const TString& forcedKeyName = TString()) { // // returning true means symbol was added to the table with no semantic errors // const TString& name = symbol.getName(); - if (name == "") { + if (forcedKeyName.length()) { + return level.insert(tLevelPair(forcedKeyName, &symbol)).second; + } + else if (name == "") { symbol.getAsVariable()->setAnonId(anonId++); // An empty name means an anonymous container, exposing its members to the external scope. // Give it a name and insert its members in the symbol table, pointing to the container. @@ -458,6 +478,16 @@ class TSymbolTableLevel { return true; } + void retargetSymbol(const TString& from, const TString& to) { + tLevel::const_iterator fromIt = level.find(from); + tLevel::const_iterator toIt = level.find(to); + if (fromIt == level.end() || toIt == level.end()) + return; + delete fromIt->second; + level[from] = toIt->second; + retargetedSymbols.push_back({from, to}); + } + TSymbol* find(const TString& name) const { tLevel::const_iterator it = level.find(name); @@ -551,7 +581,7 @@ class TSymbolTableLevel { void relateToOperator(const char* name, TOperator op); void setFunctionExtensions(const char* name, int num, const char* const extensions[]); -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) void dump(TInfoSink& infoSink, bool complete = false) const; #endif TSymbolTableLevel* clone() const; @@ -570,6 +600,8 @@ class TSymbolTableLevel { tLevel level; // named mappings TPrecisionQualifier *defaultPrecision; + // pair + TVector> retargetedSymbols; int anonId; bool thisLevel; // True if this level of the symbol table is a structure scope containing member function // that are supposed to see anonymous access to member variables. @@ -612,21 +644,28 @@ class TSymbolTable { // 3: user-shader globals // protected: + static const uint32_t LevelFlagBitOffset = 56; static const int globalLevel = 3; - bool isSharedLevel(int level) { return level <= 1; } // exclude all per-compile levels - bool isBuiltInLevel(int level) { return level <= 2; } // exclude user globals - bool isGlobalLevel(int level) { return level <= globalLevel; } // include user globals + static bool isSharedLevel(int level) { return level <= 1; } // exclude all per-compile levels + static bool isBuiltInLevel(int level) { return level <= 2; } // exclude user globals + static bool isGlobalLevel(int level) { return level <= globalLevel; } // include user globals public: bool isEmpty() { return table.size() == 0; } bool atBuiltInLevel() { return isBuiltInLevel(currentLevel()); } bool atGlobalLevel() { return isGlobalLevel(currentLevel()); } - + static bool isBuiltInSymbol(long long uniqueId) { + int level = static_cast(uniqueId >> LevelFlagBitOffset); + return isBuiltInLevel(level); + } + static constexpr uint64_t uniqueIdMask = (1LL << LevelFlagBitOffset) - 1; + static const uint32_t MaxLevelInUniqueID = 127; void setNoBuiltInRedeclarations() { noBuiltInRedeclarations = true; } void setSeparateNameSpaces() { separateNameSpaces = true; } void push() { table.push_back(new TSymbolTableLevel); + updateUniqueIdLevelFlag(); } // Make a new symbol-table level to represent the scope introduced by a structure @@ -639,6 +678,7 @@ class TSymbolTable { { assert(thisSymbol.getName().size() == 0); table.push_back(new TSymbolTableLevel); + updateUniqueIdLevelFlag(); table.back()->setThisLevel(); insert(thisSymbol); } @@ -648,6 +688,7 @@ class TSymbolTable { table[currentLevel()]->getPreviousDefaultPrecisions(p); delete table.back(); table.pop_back(); + updateUniqueIdLevelFlag(); } // @@ -685,6 +726,16 @@ class TSymbolTable { return table[currentLevel()]->amend(symbol, firstNewMember); } + // Update the level info in symbol's unique ID to current level + void amendSymbolIdLevel(TSymbol& symbol) + { + // clamp level to avoid overflow + uint64_t level = (uint32_t)currentLevel() > MaxLevelInUniqueID ? MaxLevelInUniqueID : currentLevel(); + uint64_t symbolId = symbol.getUniqueId(); + symbolId &= uniqueIdMask; + symbolId |= (level << LevelFlagBitOffset); + symbol.setUniqueId(symbolId); + } // // To allocate an internal temporary, which will need to be uniquely // identified by the consumer of the AST, but never need to @@ -756,6 +807,12 @@ class TSymbolTable { return symbol; } + void retargetSymbol(const TString& from, const TString& to) { + int level = currentLevel(); + table[level]->retargetSymbol(from, to); + } + + // Find of a symbol that returns how many layers deep of nested // structures-with-member-functions ('this' scopes) deep the symbol was // found in. @@ -853,8 +910,8 @@ class TSymbolTable { } } - int getMaxSymbolId() { return uniqueId; } -#ifndef GLSLANG_WEB + long long getMaxSymbolId() { return uniqueId; } +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) void dump(TInfoSink& infoSink, bool complete = false) const; #endif void copyTable(const TSymbolTable& copyOf); @@ -867,14 +924,27 @@ class TSymbolTable { table[level]->readOnly(); } + // Add current level in the high-bits of unique id + void updateUniqueIdLevelFlag() { + // clamp level to avoid overflow + uint64_t level = (uint32_t)currentLevel() > MaxLevelInUniqueID ? MaxLevelInUniqueID : currentLevel(); + uniqueId &= uniqueIdMask; + uniqueId |= (level << LevelFlagBitOffset); + } + + void overwriteUniqueId(long long id) + { + uniqueId = id; + updateUniqueIdLevelFlag(); + } + protected: TSymbolTable(TSymbolTable&); TSymbolTable& operator=(TSymbolTableLevel&); int currentLevel() const { return static_cast(table.size()) - 1; } - std::vector table; - int uniqueId; // for unique identification in code generation + long long uniqueId; // for unique identification in code generation bool noBuiltInRedeclarations; bool separateNameSpaces; unsigned int adoptedLevels; diff --git a/Externals/glslang/glslang/MachineIndependent/Versions.cpp b/Externals/glslang/glslang/MachineIndependent/Versions.cpp index e549074df8ab..8d96e0e10453 100644 --- a/Externals/glslang/glslang/MachineIndependent/Versions.cpp +++ b/Externals/glslang/glslang/MachineIndependent/Versions.cpp @@ -2,7 +2,8 @@ // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. -// Copyright (C) 2015-2018 Google, Inc. +// Copyright (C) 2015-2020 Google, Inc. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -63,6 +64,7 @@ // checkDeprecated() // requireNotRemoved() // requireExtensions() +// extensionRequires() // // Typically, only the first two calls are needed. They go into a code path that // implements Feature F, and will log the proper error/warning messages. Parsing @@ -77,9 +79,11 @@ // const char* const XXX_extension_X = "XXX_extension_X"; // // 2) Add extension initialization to TParseVersions::initializeExtensionBehavior(), -// the first function below: +// the first function below and optionally a entry to extensionData for additional +// error checks: // // extensionBehavior[XXX_extension_X] = EBhDisable; +// (Optional) exts[] = {XXX_extension_X, EShTargetSpv_1_4} // // 3) Add any preprocessor directives etc. in the next function, TParseVersions::getPreamble(): // @@ -139,6 +143,8 @@ // set of extensions that both enable them and are necessary, given the version of the symbol // table. (There is a different symbol table for each version.) // +// 7) If the extension has additional requirements like minimum SPIR-V version required, add them +// to extensionRequires() #include "parseVersions.h" #include "localintermediate.h" @@ -154,6 +160,22 @@ namespace glslang { // void TParseVersions::initializeExtensionBehavior() { + typedef struct { + const char *const extensionName; + EShTargetLanguageVersion minSpvVersion; + } extensionData; + + const extensionData exts[] = { {E_GL_EXT_ray_tracing, EShTargetSpv_1_4}, + {E_GL_NV_ray_tracing_motion_blur, EShTargetSpv_1_4} + }; + + for (size_t ii = 0; ii < sizeof(exts) / sizeof(exts[0]); ii++) { + // Add only extensions which require > spv1.0 to save space in map + if (exts[ii].minSpvVersion > EShTargetSpv_1_0) { + extensionMinSpv[exts[ii].extensionName] = exts[ii].minSpvVersion; + } + } + extensionBehavior[E_GL_OES_texture_3D] = EBhDisable; extensionBehavior[E_GL_OES_standard_derivatives] = EBhDisable; extensionBehavior[E_GL_EXT_frag_depth] = EBhDisable; @@ -178,6 +200,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_ARB_explicit_uniform_location] = EBhDisable; extensionBehavior[E_GL_ARB_shader_image_load_store] = EBhDisable; extensionBehavior[E_GL_ARB_shader_atomic_counters] = EBhDisable; + extensionBehavior[E_GL_ARB_shader_atomic_counter_ops] = EBhDisable; extensionBehavior[E_GL_ARB_shader_draw_parameters] = EBhDisable; extensionBehavior[E_GL_ARB_shader_group_vote] = EBhDisable; extensionBehavior[E_GL_ARB_derivative_control] = EBhDisable; @@ -196,6 +219,15 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_ARB_shader_clock] = EBhDisable; extensionBehavior[E_GL_ARB_uniform_buffer_object] = EBhDisable; extensionBehavior[E_GL_ARB_sample_shading] = EBhDisable; + extensionBehavior[E_GL_ARB_shader_bit_encoding] = EBhDisable; + extensionBehavior[E_GL_ARB_shader_image_size] = EBhDisable; + extensionBehavior[E_GL_ARB_shader_storage_buffer_object] = EBhDisable; + extensionBehavior[E_GL_ARB_shading_language_packing] = EBhDisable; + extensionBehavior[E_GL_ARB_texture_query_lod] = EBhDisable; + extensionBehavior[E_GL_ARB_vertex_attrib_64bit] = EBhDisable; + extensionBehavior[E_GL_ARB_draw_instanced] = EBhDisable; + extensionBehavior[E_GL_ARB_fragment_coord_conventions] = EBhDisable; + extensionBehavior[E_GL_KHR_shader_subgroup_basic] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_vote] = EBhDisable; @@ -221,9 +253,11 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_buffer_reference2] = EBhDisable; extensionBehavior[E_GL_EXT_buffer_reference_uvec2] = EBhDisable; extensionBehavior[E_GL_EXT_demote_to_helper_invocation] = EBhDisable; + extensionBehavior[E_GL_EXT_debug_printf] = EBhDisable; extensionBehavior[E_GL_EXT_shader_16bit_storage] = EBhDisable; extensionBehavior[E_GL_EXT_shader_8bit_storage] = EBhDisable; + extensionBehavior[E_GL_EXT_subgroup_uniform_control_flow] = EBhDisable; // #line and #include extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhDisable; @@ -253,6 +287,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_NV_shader_subgroup_partitioned] = EBhDisable; extensionBehavior[E_GL_NV_shading_rate_image] = EBhDisable; extensionBehavior[E_GL_NV_ray_tracing] = EBhDisable; + extensionBehavior[E_GL_NV_ray_tracing_motion_blur] = EBhDisable; extensionBehavior[E_GL_NV_fragment_shader_barycentric] = EBhDisable; extensionBehavior[E_GL_NV_compute_shader_derivatives] = EBhDisable; extensionBehavior[E_GL_NV_shader_texture_footprint] = EBhDisable; @@ -278,6 +313,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_tessellation_point_size] = EBhDisable; extensionBehavior[E_GL_EXT_texture_buffer] = EBhDisable; extensionBehavior[E_GL_EXT_texture_cube_map_array] = EBhDisable; + extensionBehavior[E_GL_EXT_null_initializer] = EBhDisable; // OES matching AEP extensionBehavior[E_GL_OES_geometry_shader] = EBhDisable; @@ -289,11 +325,22 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_OES_tessellation_point_size] = EBhDisable; extensionBehavior[E_GL_OES_texture_buffer] = EBhDisable; extensionBehavior[E_GL_OES_texture_cube_map_array] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_integer_mix] = EBhDisable; // EXT extensions - extensionBehavior[E_GL_EXT_device_group] = EBhDisable; - extensionBehavior[E_GL_EXT_multiview] = EBhDisable; - extensionBehavior[E_GL_EXT_shader_realtime_clock] = EBhDisable; + extensionBehavior[E_GL_EXT_device_group] = EBhDisable; + extensionBehavior[E_GL_EXT_multiview] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_realtime_clock] = EBhDisable; + extensionBehavior[E_GL_EXT_ray_tracing] = EBhDisable; + extensionBehavior[E_GL_EXT_ray_query] = EBhDisable; + extensionBehavior[E_GL_EXT_ray_flags_primitive_culling] = EBhDisable; + extensionBehavior[E_GL_EXT_blend_func_extended] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_implicit_conversions] = EBhDisable; + extensionBehavior[E_GL_EXT_fragment_shading_rate] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_image_int64] = EBhDisable; + extensionBehavior[E_GL_EXT_terminate_invocation] = EBhDisable; + extensionBehavior[E_GL_EXT_shared_memory_block] = EBhDisable; + extensionBehavior[E_GL_EXT_spirv_intrinsics] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; @@ -314,7 +361,10 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_int16] = EBhDisable; extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_int64] = EBhDisable; extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_float16] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_atomic_float] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_atomic_float2] = EBhDisable; } + #endif // GLSLANG_WEB // Get code that is not part of a shared symbol table, is specific to this shader, @@ -336,6 +386,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_YUV_target 1\n" "#define GL_EXT_shader_texture_lod 1\n" "#define GL_EXT_shadow_samplers 1\n" + "#define GL_EXT_fragment_shading_rate 1\n" // AEP "#define GL_ANDROID_extension_pack_es31a 1\n" @@ -352,6 +403,9 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_tessellation_point_size 1\n" "#define GL_EXT_texture_buffer 1\n" "#define GL_EXT_texture_cube_map_array 1\n" + "#define GL_EXT_shader_implicit_conversions 1\n" + "#define GL_EXT_shader_integer_mix 1\n" + "#define GL_EXT_blend_func_extended 1\n" // OES matching AEP "#define GL_OES_geometry_shader 1\n" @@ -366,11 +420,15 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_shader_non_constant_global_initializers 1\n" ; - if (isEsProfile() && version >= 300) { + if (version >= 300) { preamble += "#define GL_NV_shader_noperspective_interpolation 1\n"; } + if (version >= 310) { + preamble += "#define GL_EXT_null_initializer 1\n"; + preamble += "#define GL_EXT_subgroup_uniform_control_flow 1\n"; + } - } else { + } else { // !isEsProfile() preamble = "#define GL_FRAGMENT_PRECISION_HIGH 1\n" "#define GL_ARB_texture_rectangle 1\n" @@ -400,10 +458,18 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_ARB_sparse_texture_clamp 1\n" "#define GL_ARB_shader_stencil_export 1\n" "#define GL_ARB_sample_shading 1\n" + "#define GL_ARB_shader_image_size 1\n" + "#define GL_ARB_shading_language_packing 1\n" // "#define GL_ARB_cull_distance 1\n" // present for 4.5, but need extension control over block members "#define GL_ARB_post_depth_coverage 1\n" "#define GL_ARB_fragment_shader_interlock 1\n" "#define GL_ARB_uniform_buffer_object 1\n" + "#define GL_ARB_shader_bit_encoding 1\n" + "#define GL_ARB_shader_storage_buffer_object 1\n" + "#define GL_ARB_texture_query_lod 1\n" + "#define GL_ARB_vertex_attrib_64bit 1\n" + "#define GL_ARB_draw_instanced 1\n" + "#define GL_ARB_fragment_coord_conventions 1\n" "#define GL_EXT_shader_non_constant_global_initializers 1\n" "#define GL_EXT_shader_image_load_formatted 1\n" "#define GL_EXT_post_depth_coverage 1\n" @@ -418,6 +484,10 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_buffer_reference2 1\n" "#define GL_EXT_buffer_reference_uvec2 1\n" "#define GL_EXT_demote_to_helper_invocation 1\n" + "#define GL_EXT_debug_printf 1\n" + "#define GL_EXT_fragment_shading_rate 1\n" + "#define GL_EXT_shared_memory_block 1\n" + "#define GL_EXT_shader_integer_mix 1\n" // GL_KHR_shader_subgroup "#define GL_KHR_shader_subgroup_basic 1\n" @@ -429,8 +499,13 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_KHR_shader_subgroup_clustered 1\n" "#define GL_KHR_shader_subgroup_quad 1\n" - "#define E_GL_EXT_shader_atomic_int64 1\n" - "#define E_GL_EXT_shader_realtime_clock 1\n" + "#define GL_EXT_shader_image_int64 1\n" + "#define GL_EXT_shader_atomic_int64 1\n" + "#define GL_EXT_shader_realtime_clock 1\n" + "#define GL_EXT_ray_tracing 1\n" + "#define GL_EXT_ray_query 1\n" + "#define GL_EXT_ray_flags_primitive_culling 1\n" + "#define GL_EXT_spirv_intrinsics 1\n" "#define GL_AMD_shader_ballot 1\n" "#define GL_AMD_shader_trinary_minmax 1\n" @@ -453,6 +528,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_NV_shader_subgroup_partitioned 1\n" "#define GL_NV_shading_rate_image 1\n" "#define GL_NV_ray_tracing 1\n" + "#define GL_NV_ray_tracing_motion_blur 1\n" "#define GL_NV_fragment_shader_barycentric 1\n" "#define GL_NV_compute_shader_derivatives 1\n" "#define GL_NV_shader_texture_footprint 1\n" @@ -473,6 +549,9 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_shader_subgroup_extended_types_int16 1\n" "#define GL_EXT_shader_subgroup_extended_types_int64 1\n" "#define GL_EXT_shader_subgroup_extended_types_float16 1\n" + + "#define GL_EXT_shader_atomic_float 1\n" + "#define GL_EXT_shader_atomic_float2 1\n" ; if (version >= 150) { @@ -482,6 +561,10 @@ void TParseVersions::getPreamble(std::string& preamble) if (profile == ECompatibilityProfile) preamble += "#define GL_compatibility_profile 1\n"; } + if (version >= 140) { + preamble += "#define GL_EXT_null_initializer 1\n"; + preamble += "#define GL_EXT_subgroup_uniform_control_flow 1\n"; + } #endif // GLSLANG_WEB } @@ -508,6 +591,11 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_GOOGLE_include_directive 1\n" "#define GL_KHR_blend_equation_advanced 1\n" ; + + // other general extensions + preamble += + "#define GL_EXT_terminate_invocation 1\n" + ; #endif // #define VULKAN XXXX @@ -529,6 +617,29 @@ void TParseVersions::getPreamble(std::string& preamble) preamble += "\n"; } #endif + +#ifndef GLSLANG_WEB + // GL_EXT_spirv_intrinsics + if (!isEsProfile()) { + switch (language) { + case EShLangVertex: preamble += "#define GL_VERTEX_SHADER 1 \n"; break; + case EShLangTessControl: preamble += "#define GL_TESSELLATION_CONTROL_SHADER 1 \n"; break; + case EShLangTessEvaluation: preamble += "#define GL_TESSELLATION_EVALUATION_SHADER 1 \n"; break; + case EShLangGeometry: preamble += "#define GL_GEOMETRY_SHADER 1 \n"; break; + case EShLangFragment: preamble += "#define GL_FRAGMENT_SHADER 1 \n"; break; + case EShLangCompute: preamble += "#define GL_COMPUTE_SHADER 1 \n"; break; + case EShLangRayGen: preamble += "#define GL_RAY_GENERATION_SHADER_EXT 1 \n"; break; + case EShLangIntersect: preamble += "#define GL_INTERSECTION_SHADER_EXT 1 \n"; break; + case EShLangAnyHit: preamble += "#define GL_ANY_HIT_SHADER_EXT 1 \n"; break; + case EShLangClosestHit: preamble += "#define GL_CLOSEST_HIT_SHADER_EXT 1 \n"; break; + case EShLangMiss: preamble += "#define GL_MISS_SHADER_EXT 1 \n"; break; + case EShLangCallable: preamble += "#define GL_CALLABLE_SHADER_EXT 1 \n"; break; + case EShLangTaskNV: preamble += "#define GL_TASK_SHADER_NV 1 \n"; break; + case EShLangMeshNV: preamble += "#define GL_MESH_SHADER_NV 1 \n"; break; + default: break; + } + } +#endif } // @@ -544,12 +655,12 @@ const char* StageName(EShLanguage stage) case EShLangTessControl: return "tessellation control"; case EShLangTessEvaluation: return "tessellation evaluation"; case EShLangGeometry: return "geometry"; - case EShLangRayGenNV: return "ray-generation"; - case EShLangIntersectNV: return "intersection"; - case EShLangAnyHitNV: return "any-hit"; - case EShLangClosestHitNV: return "closest-hit"; - case EShLangMissNV: return "miss"; - case EShLangCallableNV: return "callable"; + case EShLangRayGen: return "ray-generation"; + case EShLangIntersect: return "intersection"; + case EShLangAnyHit: return "any-hit"; + case EShLangClosestHit: return "closest-hit"; + case EShLangMiss: return "miss"; + case EShLangCallable: return "callable"; case EShLangMeshNV: return "mesh"; case EShLangTaskNV: return "task"; #endif @@ -712,7 +823,8 @@ bool TParseVersions::checkExtensionsRequested(const TSourceLoc& loc, int numExte // Use when there are no profile/version to check, it's just an error if one of the // extensions is not present. // -void TParseVersions::requireExtensions(const TSourceLoc& loc, int numExtensions, const char* const extensions[], const char* featureDesc) +void TParseVersions::requireExtensions(const TSourceLoc& loc, int numExtensions, const char* const extensions[], + const char* featureDesc) { if (checkExtensionsRequested(loc, numExtensions, extensions, featureDesc)) return; @@ -731,7 +843,8 @@ void TParseVersions::requireExtensions(const TSourceLoc& loc, int numExtensions, // Use by preprocessor when there are no profile/version to check, it's just an error if one of the // extensions is not present. // -void TParseVersions::ppRequireExtensions(const TSourceLoc& loc, int numExtensions, const char* const extensions[], const char* featureDesc) +void TParseVersions::ppRequireExtensions(const TSourceLoc& loc, int numExtensions, const char* const extensions[], + const char* featureDesc) { if (checkExtensionsRequested(loc, numExtensions, extensions, featureDesc)) return; @@ -797,10 +910,14 @@ void TParseVersions::updateExtensionBehavior(int line, const char* extension, co error(getCurrentLoc(), "behavior not supported:", "#extension", behaviorString); return; } + bool on = behavior != EBhDisable; // check if extension is used with correct shader stage checkExtensionStage(getCurrentLoc(), extension); + // check if extension has additional requirements + extensionRequires(getCurrentLoc(), extension, behaviorString); + // update the requested extension updateExtensionBehavior(extension, behavior); @@ -863,6 +980,32 @@ void TParseVersions::updateExtensionBehavior(int line, const char* extension, co updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_int64", behaviorString); else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_float16") == 0) updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_float16", behaviorString); + + // see if we need to update the numeric features + else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types") == 0) + intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types, on); + else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_int8") == 0) + intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_int8, on); + else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_int16") == 0) + intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_int16, on); + else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_int32") == 0) + intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_int32, on); + else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_int64") == 0) + intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_int64, on); + else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_float16") == 0) + intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_float16, on); + else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_float32") == 0) + intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_float32, on); + else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_float64") == 0) + intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_float64, on); + else if (strcmp(extension, "GL_EXT_shader_implicit_conversions") == 0) + intermediate.updateNumericFeature(TNumericFeatures::shader_implicit_conversions, on); + else if (strcmp(extension, "GL_ARB_gpu_shader_fp64") == 0) + intermediate.updateNumericFeature(TNumericFeatures::gpu_shader_fp64, on); + else if (strcmp(extension, "GL_AMD_gpu_shader_int16") == 0) + intermediate.updateNumericFeature(TNumericFeatures::gpu_shader_int16, on); + else if (strcmp(extension, "GL_AMD_gpu_shader_half_float") == 0) + intermediate.updateNumericFeature(TNumericFeatures::gpu_shader_half_float, on); } void TParseVersions::updateExtensionBehavior(const char* extension, TExtensionBehavior behavior) @@ -898,7 +1041,7 @@ void TParseVersions::updateExtensionBehavior(const char* extension, TExtensionBe } else { if (iter->second == EBhDisablePartial) warn(getCurrentLoc(), "extension is only partially supported:", "#extension", extension); - if (behavior == EBhEnable || behavior == EBhRequire) + if (behavior != EBhDisable) intermediate.addRequestedExtension(extension); iter->second = behavior; } @@ -917,6 +1060,24 @@ void TParseVersions::checkExtensionStage(const TSourceLoc& loc, const char * con } } +// Check if extension has additional requirements +void TParseVersions::extensionRequires(const TSourceLoc &loc, const char * const extension, const char *behaviorString) +{ + bool isEnabled = false; + if (!strcmp("require", behaviorString)) + isEnabled = true; + else if (!strcmp("enable", behaviorString)) + isEnabled = true; + + if (isEnabled) { + unsigned int minSpvVersion = 0; + auto iter = extensionMinSpv.find(TString(extension)); + if (iter != extensionMinSpv.end()) + minSpvVersion = iter->second; + requireSpv(loc, extension, minSpvVersion); + } +} + // Call for any operation needing full GLSL integer data-type support. void TParseVersions::fullIntegerCheck(const TSourceLoc& loc, const char* op) { @@ -927,8 +1088,13 @@ void TParseVersions::fullIntegerCheck(const TSourceLoc& loc, const char* op) // Call for any operation needing GLSL double data-type support. void TParseVersions::doubleCheck(const TSourceLoc& loc, const char* op) { + //requireProfile(loc, ECoreProfile | ECompatibilityProfile, op); - profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader_fp64, op); + if (language == EShLangVertex) { + const char* const f64_Extensions[] = {E_GL_ARB_gpu_shader_fp64, E_GL_ARB_vertex_attrib_64bit}; + profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, 2, f64_Extensions, op); + } else + profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader_fp64, op); } // Call for any operation needing GLSL float16 data-type support. @@ -1148,7 +1314,7 @@ void TParseVersions::spvRemoved(const TSourceLoc& loc, const char* op) // Call for any operation removed because Vulkan SPIR-V is being generated. void TParseVersions::vulkanRemoved(const TSourceLoc& loc, const char* op) { - if (spvVersion.vulkan > 0) + if (spvVersion.vulkan > 0 && !spvVersion.vulkanRelaxed) error(loc, "not allowed when using GLSL for Vulkan", op, ""); } @@ -1169,5 +1335,12 @@ void TParseVersions::requireSpv(const TSourceLoc& loc, const char* op) error(loc, "only allowed when generating SPIR-V", op, ""); #endif } +void TParseVersions::requireSpv(const TSourceLoc& loc, const char *op, unsigned int version) +{ +#ifndef GLSLANG_WEB + if (spvVersion.spv < version) + error(loc, "not supported for current targeted SPIR-V version", op, ""); +#endif +} } // end namespace glslang diff --git a/Externals/glslang/glslang/MachineIndependent/Versions.h b/Externals/glslang/glslang/MachineIndependent/Versions.h index 58558e595a1e..96a6e1fc5201 100644 --- a/Externals/glslang/glslang/MachineIndependent/Versions.h +++ b/Externals/glslang/glslang/MachineIndependent/Versions.h @@ -3,6 +3,7 @@ // Copyright (C) 2012-2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. // Copyright (C) 2015-2018 Google, Inc. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -35,9 +36,12 @@ // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // + #ifndef _VERSIONS_INCLUDED_ #define _VERSIONS_INCLUDED_ +#define LAST_ELEMENT_MARKER(x) x + // // Help manage multiple profiles, versions, extensions etc. // @@ -49,12 +53,13 @@ // Don't maintain an ordinal set of enums (0,1,2,3...) to avoid all possible // defects from mixing the two different forms. // -typedef enum { +typedef enum : unsigned { EBadProfile = 0, ENoProfile = (1 << 0), // only for desktop, before profiles showed up ECoreProfile = (1 << 1), ECompatibilityProfile = (1 << 2), - EEsProfile = (1 << 3) + EEsProfile = (1 << 3), + LAST_ELEMENT_MARKER(EProfileCount), } EProfile; namespace glslang { @@ -82,11 +87,12 @@ inline const char* ProfileName(EProfile profile) // The union of all requested rule sets will be applied. // struct SpvVersion { - SpvVersion() : spv(0), vulkanGlsl(0), vulkan(0), openGl(0) {} + SpvVersion() : spv(0), vulkanGlsl(0), vulkan(0), openGl(0), vulkanRelaxed(false) {} unsigned int spv; // the version of SPIR-V to target, as defined by "word 1" of the SPIR-V binary header int vulkanGlsl; // the version of GLSL semantics for Vulkan, from GL_KHR_vulkan_glsl, for "#define VULKAN XXX" int vulkan; // the version of Vulkan, for which SPIR-V execution environment rules to use int openGl; // the version of GLSL semantics for OpenGL, from GL_ARB_gl_spirv, for "#define GL_SPIRV XXX" + bool vulkanRelaxed; // relax changes to GLSL for Vulkan, allowing some GL-specific to be compiled to Vulkan SPIR-V target }; // @@ -130,6 +136,7 @@ const char* const E_GL_ARB_explicit_attrib_location = "GL_ARB_explicit_attri const char* const E_GL_ARB_explicit_uniform_location = "GL_ARB_explicit_uniform_location"; const char* const E_GL_ARB_shader_image_load_store = "GL_ARB_shader_image_load_store"; const char* const E_GL_ARB_shader_atomic_counters = "GL_ARB_shader_atomic_counters"; +const char* const E_GL_ARB_shader_atomic_counter_ops = "GL_ARB_shader_atomic_counter_ops"; const char* const E_GL_ARB_shader_draw_parameters = "GL_ARB_shader_draw_parameters"; const char* const E_GL_ARB_shader_group_vote = "GL_ARB_shader_group_vote"; const char* const E_GL_ARB_derivative_control = "GL_ARB_derivative_control"; @@ -148,6 +155,14 @@ const char* const E_GL_ARB_fragment_shader_interlock = "GL_ARB_fragment_shade const char* const E_GL_ARB_shader_clock = "GL_ARB_shader_clock"; const char* const E_GL_ARB_uniform_buffer_object = "GL_ARB_uniform_buffer_object"; const char* const E_GL_ARB_sample_shading = "GL_ARB_sample_shading"; +const char* const E_GL_ARB_shader_bit_encoding = "GL_ARB_shader_bit_encoding"; +const char* const E_GL_ARB_shader_image_size = "GL_ARB_shader_image_size"; +const char* const E_GL_ARB_shader_storage_buffer_object = "GL_ARB_shader_storage_buffer_object"; +const char* const E_GL_ARB_shading_language_packing = "GL_ARB_shading_language_packing"; +const char* const E_GL_ARB_texture_query_lod = "GL_ARB_texture_query_lod"; +const char* const E_GL_ARB_vertex_attrib_64bit = "GL_ARB_vertex_attrib_64bit"; +const char* const E_GL_ARB_draw_instanced = "GL_ARB_draw_instanced"; +const char* const E_GL_ARB_fragment_coord_conventions = "GL_ARB_fragment_coord_conventions"; const char* const E_GL_KHR_shader_subgroup_basic = "GL_KHR_shader_subgroup_basic"; const char* const E_GL_KHR_shader_subgroup_vote = "GL_KHR_shader_subgroup_vote"; @@ -182,6 +197,18 @@ const char* const E_GL_EXT_buffer_reference2 = "GL_EXT_buffer_ref const char* const E_GL_EXT_buffer_reference_uvec2 = "GL_EXT_buffer_reference_uvec2"; const char* const E_GL_EXT_demote_to_helper_invocation = "GL_EXT_demote_to_helper_invocation"; const char* const E_GL_EXT_shader_realtime_clock = "GL_EXT_shader_realtime_clock"; +const char* const E_GL_EXT_debug_printf = "GL_EXT_debug_printf"; +const char* const E_GL_EXT_ray_tracing = "GL_EXT_ray_tracing"; +const char* const E_GL_EXT_ray_query = "GL_EXT_ray_query"; +const char* const E_GL_EXT_ray_flags_primitive_culling = "GL_EXT_ray_flags_primitive_culling"; +const char* const E_GL_EXT_blend_func_extended = "GL_EXT_blend_func_extended"; +const char* const E_GL_EXT_shader_implicit_conversions = "GL_EXT_shader_implicit_conversions"; +const char* const E_GL_EXT_fragment_shading_rate = "GL_EXT_fragment_shading_rate"; +const char* const E_GL_EXT_shader_image_int64 = "GL_EXT_shader_image_int64"; +const char* const E_GL_EXT_null_initializer = "GL_EXT_null_initializer"; +const char* const E_GL_EXT_shared_memory_block = "GL_EXT_shared_memory_block"; +const char* const E_GL_EXT_subgroup_uniform_control_flow = "GL_EXT_subgroup_uniform_control_flow"; +const char* const E_GL_EXT_spirv_intrinsics = "GL_EXT_spirv_intrinsics"; // Arrays of extensions for the above viewportEXTs duplications @@ -223,6 +250,7 @@ const char* const E_GL_NV_shader_noperspective_interpolation = "GL_NV_shader_ const char* const E_GL_NV_shader_subgroup_partitioned = "GL_NV_shader_subgroup_partitioned"; const char* const E_GL_NV_shading_rate_image = "GL_NV_shading_rate_image"; const char* const E_GL_NV_ray_tracing = "GL_NV_ray_tracing"; +const char* const E_GL_NV_ray_tracing_motion_blur = "GL_NV_ray_tracing_motion_blur"; const char* const E_GL_NV_fragment_shader_barycentric = "GL_NV_fragment_shader_barycentric"; const char* const E_GL_NV_compute_shader_derivatives = "GL_NV_compute_shader_derivatives"; const char* const E_GL_NV_shader_texture_footprint = "GL_NV_shader_texture_footprint"; @@ -253,6 +281,7 @@ const char* const E_GL_EXT_tessellation_shader = "GL_EXT_tessel const char* const E_GL_EXT_tessellation_point_size = "GL_EXT_tessellation_point_size"; const char* const E_GL_EXT_texture_buffer = "GL_EXT_texture_buffer"; const char* const E_GL_EXT_texture_cube_map_array = "GL_EXT_texture_cube_map_array"; +const char* const E_GL_EXT_shader_integer_mix = "GL_EXT_shader_integer_mix"; // OES matching AEP const char* const E_GL_OES_geometry_shader = "GL_OES_geometry_shader"; @@ -279,6 +308,10 @@ const char* const E_GL_EXT_shader_subgroup_extended_types_int8 = "GL_EXT_shad const char* const E_GL_EXT_shader_subgroup_extended_types_int16 = "GL_EXT_shader_subgroup_extended_types_int16"; const char* const E_GL_EXT_shader_subgroup_extended_types_int64 = "GL_EXT_shader_subgroup_extended_types_int64"; const char* const E_GL_EXT_shader_subgroup_extended_types_float16 = "GL_EXT_shader_subgroup_extended_types_float16"; +const char* const E_GL_EXT_terminate_invocation = "GL_EXT_terminate_invocation"; + +const char* const E_GL_EXT_shader_atomic_float = "GL_EXT_shader_atomic_float"; +const char* const E_GL_EXT_shader_atomic_float2 = "GL_EXT_shader_atomic_float2"; // Arrays of extensions for the above AEP duplications diff --git a/Externals/glslang/glslang/MachineIndependent/attribute.cpp b/Externals/glslang/glslang/MachineIndependent/attribute.cpp index 958551834930..df7fdc2a60fc 100644 --- a/Externals/glslang/glslang/MachineIndependent/attribute.cpp +++ b/Externals/glslang/glslang/MachineIndependent/attribute.cpp @@ -123,6 +123,8 @@ TAttributeType TParseContext::attributeFromName(const TString& name) const return EatPeelCount; else if (name == "partial_count") return EatPartialCount; + else if (name == "subgroup_uniform_control_flow") + return EatSubgroupUniformControlFlow; else return EatNone; } @@ -341,6 +343,29 @@ void TParseContext::handleLoopAttributes(const TAttributes& attributes, TIntermN } } + +// +// Function attributes +// +void TParseContext::handleFunctionAttributes(const TSourceLoc& loc, const TAttributes& attributes) +{ + for (auto it = attributes.begin(); it != attributes.end(); ++it) { + if (it->size() > 0) { + warn(loc, "attribute with arguments not recognized, skipping", "", ""); + continue; + } + + switch (it->name) { + case EatSubgroupUniformControlFlow: + intermediate.setSubgroupUniformControlFlow(); + break; + default: + warn(loc, "attribute does not apply to a function", "", ""); + break; + } + } +} + } // end namespace glslang #endif // GLSLANG_WEB diff --git a/Externals/glslang/glslang/MachineIndependent/attribute.h b/Externals/glslang/glslang/MachineIndependent/attribute.h index 38a943d28335..c5b29176c49a 100644 --- a/Externals/glslang/glslang/MachineIndependent/attribute.h +++ b/Externals/glslang/glslang/MachineIndependent/attribute.h @@ -118,7 +118,8 @@ namespace glslang { EatFormatR8ui, EatFormatUnknown, EatNonWritable, - EatNonReadable + EatNonReadable, + EatSubgroupUniformControlFlow, }; class TIntermAggregate; diff --git a/Externals/glslang/glslang/MachineIndependent/gl_types.h b/Externals/glslang/glslang/MachineIndependent/gl_types.h index b6f613bcedcb..d6c939374a84 100644 --- a/Externals/glslang/glslang/MachineIndependent/gl_types.h +++ b/Externals/glslang/glslang/MachineIndependent/gl_types.h @@ -49,9 +49,17 @@ #define GL_INT64_VEC4_ARB 0x8FEB #define GL_UNSIGNED_INT64_ARB 0x140F -#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FE5 -#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FE6 -#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FE7 +#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7 +#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 +#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 +#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 + +#define GL_INT16_NV 0x8FE4 +#define GL_INT16_VEC2_NV 0x8FE5 +#define GL_INT16_VEC3_NV 0x8FE6 +#define GL_INT16_VEC4_NV 0x8FE7 #define GL_BOOL 0x8B56 #define GL_BOOL_VEC2 0x8B57 diff --git a/Externals/glslang/glslang/MachineIndependent/glslang.m4 b/Externals/glslang/glslang/MachineIndependent/glslang.m4 index cd949c2d30c1..624add5a2508 100644 --- a/Externals/glslang/glslang/MachineIndependent/glslang.m4 +++ b/Externals/glslang/glslang/MachineIndependent/glslang.m4 @@ -2,7 +2,8 @@ // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. -// Copyright (C) 2015-2018 Google, Inc. +// Copyright (C) 2015-2019 Google, Inc. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -115,6 +116,9 @@ using namespace glslang; glslang::TIntermNodePair nodePair; glslang::TIntermTyped* intermTypedNode; glslang::TAttributes* attributes; + glslang::TSpirvRequirement* spirvReq; + glslang::TSpirvInstruction* spirvInst; + glslang::TSpirvTypeParameters* spirvTypeParams; }; union { glslang::TPublicType type; @@ -204,6 +208,8 @@ GLSLANG_WEB_EXCLUDE_ON %token F64MAT4X2 F64MAT4X3 F64MAT4X4 %token ATOMIC_UINT %token ACCSTRUCTNV +%token ACCSTRUCTEXT +%token RAYQUERYEXT %token FCOOPMATNV ICOOPMATNV UCOOPMATNV // combined image/sampler @@ -239,6 +245,18 @@ GLSLANG_WEB_EXCLUDE_ON %token F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY %token F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY +%token I64IMAGE1D U64IMAGE1D +%token I64IMAGE2D U64IMAGE2D +%token I64IMAGE3D U64IMAGE3D +%token I64IMAGE2DRECT U64IMAGE2DRECT +%token I64IMAGECUBE U64IMAGECUBE +%token I64IMAGEBUFFER U64IMAGEBUFFER +%token I64IMAGE1DARRAY U64IMAGE1DARRAY +%token I64IMAGE2DARRAY U64IMAGE2DARRAY +%token I64IMAGECUBEARRAY U64IMAGECUBEARRAY +%token I64IMAGE2DMS U64IMAGE2DMS +%token I64IMAGE2DMSARRAY U64IMAGE2DMSARRAY + // texture without sampler %token TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY %token TEXTURE1D ITEXTURE1D UTEXTURE1D @@ -256,6 +274,11 @@ GLSLANG_WEB_EXCLUDE_ON %token SUBPASSINPUT SUBPASSINPUTMS ISUBPASSINPUT ISUBPASSINPUTMS USUBPASSINPUT USUBPASSINPUTMS %token F16SUBPASSINPUT F16SUBPASSINPUTMS +// spirv intrinsics +%token SPIRV_INSTRUCTION SPIRV_EXECUTION_MODE SPIRV_EXECUTION_MODE_ID +%token SPIRV_DECORATE SPIRV_DECORATE_ID SPIRV_DECORATE_STRING +%token SPIRV_TYPE SPIRV_STORAGE_CLASS SPIRV_BY_REFERENCE SPIRV_LITERAL + GLSLANG_WEB_EXCLUDE_OFF %token LEFT_OP RIGHT_OP @@ -263,6 +286,7 @@ GLSLANG_WEB_EXCLUDE_OFF %token AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN %token MOD_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN XOR_ASSIGN OR_ASSIGN %token SUB_ASSIGN +%token STRING_LITERAL %token LEFT_PAREN RIGHT_PAREN LEFT_BRACKET RIGHT_BRACKET LEFT_BRACE RIGHT_BRACE DOT %token COMMA COLON EQUAL SEMICOLON BANG DASH TILDE PLUS STAR SLASH PERCENT @@ -277,6 +301,8 @@ GLSLANG_WEB_EXCLUDE_OFF %token CENTROID IN OUT INOUT %token STRUCT VOID WHILE %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT +%token TERMINATE_INVOCATION +%token TERMINATE_RAY IGNORE_INTERSECTION %token UNIFORM SHARED BUFFER %token FLAT SMOOTH LAYOUT @@ -285,9 +311,10 @@ GLSLANG_WEB_EXCLUDE_ON %token INT64CONSTANT UINT64CONSTANT %token SUBROUTINE DEMOTE %token PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV +%token PAYLOADEXT PAYLOADINEXT HITATTREXT CALLDATAEXT CALLDATAINEXT %token PATCH SAMPLE NONUNIFORM %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT -%token SUBGROUPCOHERENT NONPRIVATE +%token SUBGROUPCOHERENT NONPRIVATE SHADERCALLCOHERENT %token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV %token PRECISE GLSLANG_WEB_EXCLUDE_OFF @@ -343,6 +370,19 @@ GLSLANG_WEB_EXCLUDE_ON %type attribute attribute_list single_attribute %type demote_statement %type initializer_list +%type spirv_requirements_list spirv_requirements_parameter +%type spirv_extension_list spirv_capability_list +%type spirv_execution_mode_qualifier +%type spirv_execution_mode_parameter_list spirv_execution_mode_parameter spirv_execution_mode_id_parameter_list +%type spirv_storage_class_qualifier +%type spirv_decorate_qualifier +%type spirv_decorate_parameter_list spirv_decorate_parameter +%type spirv_decorate_id_parameter_list +%type spirv_decorate_string_parameter_list +%type spirv_type_specifier +%type spirv_type_parameter_list spirv_type_parameter +%type spirv_instruction_qualifier +%type spirv_instruction_qualifier_list spirv_instruction_qualifier_id GLSLANG_WEB_EXCLUDE_OFF %start translation_unit @@ -377,6 +417,9 @@ primary_expression $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); } GLSLANG_WEB_EXCLUDE_ON + | STRING_LITERAL { + $$ = parseContext.intermediate.addConstantUnion($1.string, $1.loc, true); + } | INT32CONSTANT { parseContext.explicitInt32Check($1.loc, "32-bit signed literal"); $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); @@ -755,7 +798,7 @@ conditional_expression parseContext.rValueErrorCheck($5.loc, ":", $6); $$ = parseContext.intermediate.addSelection($1, $4, $6, $2.loc); if ($$ == 0) { - parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(), $6->getCompleteString()); + parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $6->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $6; } } @@ -770,9 +813,9 @@ assignment_expression parseContext.specializationCheck($2.loc, $1->getType(), "="); parseContext.lValueErrorCheck($2.loc, "assign", $1); parseContext.rValueErrorCheck($2.loc, "assign", $3); - $$ = parseContext.intermediate.addAssign($2.op, $1, $3, $2.loc); + $$ = parseContext.addAssign($2.loc, $2.op, $1, $3); if ($$ == 0) { - parseContext.assignError($2.loc, "assign", $1->getCompleteString(), $3->getCompleteString()); + parseContext.assignError($2.loc, "assign", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $1; } } @@ -834,7 +877,7 @@ expression parseContext.samplerConstructorLocationCheck($2.loc, ",", $3); $$ = parseContext.intermediate.addComma($1, $3, $2.loc); if ($$ == 0) { - parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(), $3->getCompleteString()); + parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $3; } } @@ -853,6 +896,20 @@ declaration $$ = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } +GLSLANG_WEB_EXCLUDE_ON + | spirv_instruction_qualifier function_prototype SEMICOLON { + parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); + $2.function->setSpirvInstruction(*$1); // Attach SPIR-V intruction qualifier + parseContext.handleFunctionDeclarator($2.loc, *$2.function, true /* prototype */); + $$ = 0; + // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature + } + | spirv_execution_mode_qualifier SEMICOLON { + parseContext.globalCheck($2.loc, "SPIR-V execution mode qualifier"); + parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); + $$ = 0; + } +GLSLANG_WEB_EXCLUDE_OFF | init_declarator_list SEMICOLON { if ($1.intermNode && $1.intermNode->getAsAggregate()) $1.intermNode->getAsAggregate()->setOperator(EOpSequence); @@ -897,7 +954,7 @@ declaration block_structure : type_qualifier IDENTIFIER LEFT_BRACE { parseContext.nestedBlockCheck($1.loc); } struct_declaration_list RIGHT_BRACE { - --parseContext.structNestingLevel; + --parseContext.blockNestingLevel; parseContext.blockName = $2.string; parseContext.globalQualifierFixCheck($1.loc, $1.qualifier); parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); @@ -922,6 +979,25 @@ function_prototype $$.function = $1; $$.loc = $2.loc; } + | function_declarator RIGHT_PAREN attribute { + $$.function = $1; + $$.loc = $2.loc; + parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); + parseContext.handleFunctionAttributes($2.loc, *$3); + } + | attribute function_declarator RIGHT_PAREN { + $$.function = $2; + $$.loc = $3.loc; + parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); + parseContext.handleFunctionAttributes($3.loc, *$1); + } + | attribute function_declarator RIGHT_PAREN attribute { + $$.function = $2; + $$.loc = $3.loc; + parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); + parseContext.handleFunctionAttributes($3.loc, *$1); + parseContext.handleFunctionAttributes($3.loc, *$4); + } ; function_declarator @@ -1325,6 +1401,25 @@ GLSLANG_WEB_EXCLUDE_ON | non_uniform_qualifier { $$ = $1; } + | spirv_storage_class_qualifier { + parseContext.globalCheck($1.loc, "spirv_storage_class"); + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); + $$ = $1; + } + | spirv_decorate_qualifier { + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); + $$ = $1; + } + | SPIRV_BY_REFERENCE { + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); + $$.init($1.loc); + $$.qualifier.setSpirvByReference(); + } + | SPIRV_LITERAL { + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); + $$.init($1.loc); + $$.qualifier.setSpirvLiteral(); + } GLSLANG_WEB_EXCLUDE_OFF ; @@ -1415,42 +1510,81 @@ GLSLANG_WEB_EXCLUDE_ON } | HITATTRNV { parseContext.globalCheck($1.loc, "hitAttributeNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangClosestHitNVMask - | EShLangAnyHitNVMask), "hitAttributeNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask + | EShLangAnyHitMask), "hitAttributeNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV"); $$.init($1.loc); - $$.qualifier.storage = EvqHitAttrNV; + $$.qualifier.storage = EvqHitAttr; + } + | HITATTREXT { + parseContext.globalCheck($1.loc, "hitAttributeEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask + | EShLangAnyHitMask), "hitAttributeEXT"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "hitAttributeNV"); + $$.init($1.loc); + $$.qualifier.storage = EvqHitAttr; } | PAYLOADNV { parseContext.globalCheck($1.loc, "rayPayloadNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask | - EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | + EShLangAnyHitMask | EShLangMissMask), "rayPayloadNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV"); $$.init($1.loc); - $$.qualifier.storage = EvqPayloadNV; + $$.qualifier.storage = EvqPayload; + } + | PAYLOADEXT { + parseContext.globalCheck($1.loc, "rayPayloadEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | + EShLangAnyHitMask | EShLangMissMask), "rayPayloadEXT"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadEXT"); + $$.init($1.loc); + $$.qualifier.storage = EvqPayload; } | PAYLOADINNV { parseContext.globalCheck($1.loc, "rayPayloadInNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitNVMask | - EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitMask | + EShLangAnyHitMask | EShLangMissMask), "rayPayloadInNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV"); $$.init($1.loc); - $$.qualifier.storage = EvqPayloadInNV; + $$.qualifier.storage = EvqPayloadIn; + } + | PAYLOADINEXT { + parseContext.globalCheck($1.loc, "rayPayloadInEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitMask | + EShLangAnyHitMask | EShLangMissMask), "rayPayloadInEXT"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadInEXT"); + $$.init($1.loc); + $$.qualifier.storage = EvqPayloadIn; } | CALLDATANV { parseContext.globalCheck($1.loc, "callableDataNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenNVMask | - EShLangClosestHitNVMask | EShLangMissNVMask | EShLangCallableNVMask), "callableDataNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | + EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV"); $$.init($1.loc); - $$.qualifier.storage = EvqCallableDataNV; + $$.qualifier.storage = EvqCallableData; + } + | CALLDATAEXT { + parseContext.globalCheck($1.loc, "callableDataEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | + EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataEXT"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataEXT"); + $$.init($1.loc); + $$.qualifier.storage = EvqCallableData; } | CALLDATAINNV { parseContext.globalCheck($1.loc, "callableDataInNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableNVMask), "callableDataInNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV"); $$.init($1.loc); - $$.qualifier.storage = EvqCallableDataInNV; + $$.qualifier.storage = EvqCallableDataIn; + } + | CALLDATAINEXT { + parseContext.globalCheck($1.loc, "callableDataInEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataInEXT"); + $$.init($1.loc); + $$.qualifier.storage = EvqCallableDataIn; } | COHERENT { $$.init($1.loc); @@ -1481,6 +1615,11 @@ GLSLANG_WEB_EXCLUDE_ON parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); $$.qualifier.nonprivate = true; } + | SHADERCALLCOHERENT { + $$.init($1.loc); + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); + $$.qualifier.shadercallcoherent = true; + } | VOLATILE { $$.init($1.loc); $$.qualifier.volatil = true; @@ -2350,7 +2489,15 @@ GLSLANG_WEB_EXCLUDE_ON } | ACCSTRUCTNV { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtAccStructNV; + $$.basicType = EbtAccStruct; + } + | ACCSTRUCTEXT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtAccStruct; + } + | RAYQUERYEXT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtRayQuery; } | ATOMIC_UINT { parseContext.vulkanRemoved($1.loc, "atomic counter types"); @@ -3143,6 +3290,116 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint, Esd2D, true, false, true); } + | I64IMAGE1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd1D); + } + | U64IMAGE1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd1D); + } + | I64IMAGE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D); + } + | U64IMAGE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D); + } + | I64IMAGE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd3D); + } + | U64IMAGE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd3D); + } + | I64IMAGE2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdRect); + } + | U64IMAGE2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdRect); + } + | I64IMAGECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdCube); + } + | U64IMAGECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdCube); + } + | I64IMAGEBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdBuffer); + } + | U64IMAGEBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdBuffer); + } + | I64IMAGE1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd1D, true); + } + | U64IMAGE1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd1D, true); + } + | I64IMAGE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D, true); + } + | U64IMAGE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D, true); + } + | I64IMAGECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdCube, true); + } + | U64IMAGECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdCube, true); + } + | I64IMAGE2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D, false, false, true); + } + | U64IMAGE2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D, false, false, true); + } + | I64IMAGE2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D, true, false, true); + } + | U64IMAGE2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D, true, false, true); + } | SAMPLEREXTERNALOES { // GL_OES_EGL_image_external $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -3223,6 +3480,10 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtUint; $$.coopmat = true; } + | spirv_type_specifier { + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); + $$ = $1; + } GLSLANG_WEB_EXCLUDE_OFF | struct_specifier { $$ = $1; @@ -3391,6 +3652,12 @@ GLSLANG_WEB_EXCLUDE_ON parseContext.profileRequires($1.loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); $$ = $2; } + | LEFT_BRACE RIGHT_BRACE { + const char* initFeature = "empty { } initializer"; + parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); + parseContext.profileRequires($1.loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); + $$ = parseContext.intermediate.makeAggregate($1.loc); + } GLSLANG_WEB_EXCLUDE_OFF ; @@ -3523,6 +3790,7 @@ selection_statement } GLSLANG_WEB_EXCLUDE_ON | attribute selection_statement_nonattributed { + parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*$1, $2); $$ = $2; } @@ -3570,6 +3838,7 @@ switch_statement } GLSLANG_WEB_EXCLUDE_ON | attribute switch_statement_nonattributed { + parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*$1, $2); $$ = $2; } @@ -3634,6 +3903,7 @@ iteration_statement } GLSLANG_WEB_EXCLUDE_ON | attribute iteration_statement_nonattributed { + parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleLoopAttributes(*$1, $2); $$ = $2; } @@ -3656,6 +3926,7 @@ iteration_statement_nonattributed --parseContext.controlFlowNestingLevel; } | DO { + parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; @@ -3667,6 +3938,7 @@ iteration_statement_nonattributed parseContext.boolCheck($8.loc, $6); $$ = parseContext.intermediate.addLoop($3, $6, 0, false, $4.loc); + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; @@ -3745,6 +4017,20 @@ jump_statement parseContext.requireStage($1.loc, EShLangFragment, "discard"); $$ = parseContext.intermediate.addBranch(EOpKill, $1.loc); } + | TERMINATE_INVOCATION SEMICOLON { + parseContext.requireStage($1.loc, EShLangFragment, "terminateInvocation"); + $$ = parseContext.intermediate.addBranch(EOpTerminateInvocation, $1.loc); + } +GLSLANG_WEB_EXCLUDE_ON + | TERMINATE_RAY SEMICOLON { + parseContext.requireStage($1.loc, EShLangAnyHit, "terminateRayEXT"); + $$ = parseContext.intermediate.addBranch(EOpTerminateRayKHR, $1.loc); + } + | IGNORE_INTERSECTION SEMICOLON { + parseContext.requireStage($1.loc, EShLangAnyHit, "ignoreIntersectionEXT"); + $$ = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, $1.loc); + } +GLSLANG_WEB_EXCLUDE_OFF ; // Grammar Note: No 'goto'. Gotos are not supported. @@ -3782,6 +4068,14 @@ function_definition : function_prototype { $1.function = parseContext.handleFunctionDeclarator($1.loc, *$1.function, false /* not prototype */); $1.intermNode = parseContext.handleFunctionDefinition($1.loc, *$1.function); + + // For ES 100 only, according to ES shading language 100 spec: A function + // body has a scope nested inside the function's definition. + if (parseContext.profile == EEsProfile && parseContext.version == 100) + { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + } } compound_statement_no_new_scope { // May be best done as post process phase on intermediate code @@ -3797,6 +4091,17 @@ function_definition $$->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize); $$->getAsAggregate()->setDebug(parseContext.contextPragma.debug); $$->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); + + // Set currentFunctionType to empty pointer when goes outside of the function + parseContext.currentFunctionType = nullptr; + + // For ES 100 only, according to ES shading language 100 spec: A function + // body has a scope nested inside the function's definition. + if (parseContext.profile == EEsProfile && parseContext.version == 100) + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + } } ; @@ -3804,7 +4109,6 @@ GLSLANG_WEB_EXCLUDE_ON attribute : LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET { $$ = $3; - parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_control_flow_attributes, "attribute"); } attribute_list @@ -3824,4 +4128,270 @@ single_attribute } GLSLANG_WEB_EXCLUDE_OFF +GLSLANG_WEB_EXCLUDE_ON +spirv_requirements_list + : spirv_requirements_parameter { + $$ = $1; + } + | spirv_requirements_list COMMA spirv_requirements_parameter { + $$ = parseContext.mergeSpirvRequirements($2.loc, $1, $3); + } + +spirv_requirements_parameter + : IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET { + $$ = parseContext.makeSpirvRequirement($2.loc, *$1.string, $4->getAsAggregate(), nullptr); + } + | IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET { + $$ = parseContext.makeSpirvRequirement($2.loc, *$1.string, nullptr, $4->getAsAggregate()); + } + +spirv_extension_list + : STRING_LITERAL { + $$ = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion($1.string, $1.loc, true)); + } + | spirv_extension_list COMMA STRING_LITERAL { + $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.string, $3.loc, true)); + } + +spirv_capability_list + : INTCONSTANT { + $$ = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion($1.i, $1.loc, true)); + } + | spirv_capability_list COMMA INTCONSTANT { + $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.i, $3.loc, true)); + } + +spirv_execution_mode_qualifier + : SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN { + parseContext.intermediate.insertSpirvExecutionMode($3.i); + $$ = 0; + } + | SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN { + parseContext.intermediate.insertSpirvRequirement($3); + parseContext.intermediate.insertSpirvExecutionMode($5.i); + $$ = 0; + } + | SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN { + parseContext.intermediate.insertSpirvExecutionMode($3.i, $5->getAsAggregate()); + $$ = 0; + } + | SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN { + parseContext.intermediate.insertSpirvRequirement($3); + parseContext.intermediate.insertSpirvExecutionMode($5.i, $7->getAsAggregate()); + $$ = 0; + } + | SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN { + parseContext.intermediate.insertSpirvExecutionModeId($3.i, $5->getAsAggregate()); + $$ = 0; + } + | SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN { + parseContext.intermediate.insertSpirvRequirement($3); + parseContext.intermediate.insertSpirvExecutionModeId($5.i, $7->getAsAggregate()); + $$ = 0; + } + +spirv_execution_mode_parameter_list + : spirv_execution_mode_parameter { + $$ = parseContext.intermediate.makeAggregate($1); + } + | spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter { + $$ = parseContext.intermediate.growAggregate($1, $3); + } + +spirv_execution_mode_parameter + : FLOATCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); + } + | INTCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); + } + | UINTCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); + } + | BOOLCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); + } + | STRING_LITERAL { + $$ = parseContext.intermediate.addConstantUnion($1.string, $1.loc, true); + } + +spirv_execution_mode_id_parameter_list + : constant_expression { + if ($1->getBasicType() != EbtFloat && + $1->getBasicType() != EbtInt && + $1->getBasicType() != EbtUint && + $1->getBasicType() != EbtBool && + $1->getBasicType() != EbtString) + parseContext.error($1->getLoc(), "this type not allowed", $1->getType().getBasicString(), ""); + $$ = parseContext.intermediate.makeAggregate($1); + } + | spirv_execution_mode_id_parameter_list COMMA constant_expression { + if ($3->getBasicType() != EbtFloat && + $3->getBasicType() != EbtInt && + $3->getBasicType() != EbtUint && + $3->getBasicType() != EbtBool && + $3->getBasicType() != EbtString) + parseContext.error($3->getLoc(), "this type not allowed", $3->getType().getBasicString(), ""); + $$ = parseContext.intermediate.growAggregate($1, $3); + } + +spirv_storage_class_qualifier + : SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN { + $$.init($1.loc); + $$.qualifier.storage = EvqSpirvStorageClass; + $$.qualifier.spirvStorageClass = $3.i; + } + | SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN { + $$.init($1.loc); + parseContext.intermediate.insertSpirvRequirement($3); + $$.qualifier.storage = EvqSpirvStorageClass; + $$.qualifier.spirvStorageClass = $5.i; + } + +spirv_decorate_qualifier + : SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN{ + $$.init($1.loc); + $$.qualifier.setSpirvDecorate($3.i); + } + | SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN{ + $$.init($1.loc); + parseContext.intermediate.insertSpirvRequirement($3); + $$.qualifier.setSpirvDecorate($5.i); + } + | SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN { + $$.init($1.loc); + $$.qualifier.setSpirvDecorate($3.i, $5->getAsAggregate()); + } + | SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN { + $$.init($1.loc); + parseContext.intermediate.insertSpirvRequirement($3); + $$.qualifier.setSpirvDecorate($5.i, $7->getAsAggregate()); + } + | SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN { + $$.init($1.loc); + $$.qualifier.setSpirvDecorateId($3.i, $5->getAsAggregate()); + } + | SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN { + $$.init($1.loc); + parseContext.intermediate.insertSpirvRequirement($3); + $$.qualifier.setSpirvDecorateId($5.i, $7->getAsAggregate()); + } + | SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN { + $$.init($1.loc); + $$.qualifier.setSpirvDecorateString($3.i, $5->getAsAggregate()); + } + | SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN { + $$.init($1.loc); + parseContext.intermediate.insertSpirvRequirement($3); + $$.qualifier.setSpirvDecorateString($5.i, $7->getAsAggregate()); + } + +spirv_decorate_parameter_list + : spirv_decorate_parameter { + $$ = parseContext.intermediate.makeAggregate($1); + } + | spirv_decorate_parameter_list COMMA spirv_decorate_parameter { + $$ = parseContext.intermediate.growAggregate($1, $3); + } + +spirv_decorate_parameter + : FLOATCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); + } + | INTCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); + } + | UINTCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); + } + | BOOLCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); + } + +spirv_decorate_id_parameter_list + : constant_expression { + if ($1->getBasicType() != EbtFloat && + $1->getBasicType() != EbtInt && + $1->getBasicType() != EbtUint && + $1->getBasicType() != EbtBool) + parseContext.error($1->getLoc(), "this type not allowed", $1->getType().getBasicString(), ""); + $$ = parseContext.intermediate.makeAggregate($1); + } + | spirv_decorate_id_parameter_list COMMA constant_expression { + if ($3->getBasicType() != EbtFloat && + $3->getBasicType() != EbtInt && + $3->getBasicType() != EbtUint && + $3->getBasicType() != EbtBool) + parseContext.error($3->getLoc(), "this type not allowed", $3->getType().getBasicString(), ""); + $$ = parseContext.intermediate.growAggregate($1, $3); + } + +spirv_decorate_string_parameter_list + : STRING_LITERAL { + $$ = parseContext.intermediate.makeAggregate( + parseContext.intermediate.addConstantUnion($1.string, $1.loc, true)); + } + | spirv_decorate_string_parameter_list COMMA STRING_LITERAL { + $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.string, $3.loc, true)); + } + +spirv_type_specifier + : SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.setSpirvType(*$3, $5); + } + | SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.intermediate.insertSpirvRequirement($3); + $$.setSpirvType(*$5, $7); + } + | SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.setSpirvType(*$3); + } + | SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.intermediate.insertSpirvRequirement($3); + $$.setSpirvType(*$5); + } + +spirv_type_parameter_list + : spirv_type_parameter { + $$ = $1; + } + | spirv_type_parameter_list COMMA spirv_type_parameter { + $$ = parseContext.mergeSpirvTypeParameters($1, $3); + } + +spirv_type_parameter + : constant_expression { + $$ = parseContext.makeSpirvTypeParameters($1->getLoc(), $1->getAsConstantUnion()); + } + +spirv_instruction_qualifier + : SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN { + $$ = $3; + } + | SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN { + parseContext.intermediate.insertSpirvRequirement($3); + $$ = $5; + } + +spirv_instruction_qualifier_list + : spirv_instruction_qualifier_id { + $$ = $1; + } + | spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id { + $$ = parseContext.mergeSpirvInstruction($2.loc, $1, $3); + } + +spirv_instruction_qualifier_id + : IDENTIFIER EQUAL STRING_LITERAL { + $$ = parseContext.makeSpirvInstruction($2.loc, *$1.string, *$3.string); + } + | IDENTIFIER EQUAL INTCONSTANT { + $$ = parseContext.makeSpirvInstruction($2.loc, *$1.string, $3.i); + } +GLSLANG_WEB_EXCLUDE_OFF + %% diff --git a/Externals/glslang/glslang/MachineIndependent/glslang.y b/Externals/glslang/glslang/MachineIndependent/glslang.y index 9f30fdb2ab41..93c989953ea1 100644 --- a/Externals/glslang/glslang/MachineIndependent/glslang.y +++ b/Externals/glslang/glslang/MachineIndependent/glslang.y @@ -2,7 +2,8 @@ // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. -// Copyright (C) 2015-2018 Google, Inc. +// Copyright (C) 2015-2019 Google, Inc. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -115,6 +116,9 @@ using namespace glslang; glslang::TIntermNodePair nodePair; glslang::TIntermTyped* intermTypedNode; glslang::TAttributes* attributes; + glslang::TSpirvRequirement* spirvReq; + glslang::TSpirvInstruction* spirvInst; + glslang::TSpirvTypeParameters* spirvTypeParams; }; union { glslang::TPublicType type; @@ -204,6 +208,8 @@ extern int yylex(YYSTYPE*, TParseContext&); %token F64MAT4X2 F64MAT4X3 F64MAT4X4 %token ATOMIC_UINT %token ACCSTRUCTNV +%token ACCSTRUCTEXT +%token RAYQUERYEXT %token FCOOPMATNV ICOOPMATNV UCOOPMATNV // combined image/sampler @@ -239,6 +245,18 @@ extern int yylex(YYSTYPE*, TParseContext&); %token F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY %token F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY +%token I64IMAGE1D U64IMAGE1D +%token I64IMAGE2D U64IMAGE2D +%token I64IMAGE3D U64IMAGE3D +%token I64IMAGE2DRECT U64IMAGE2DRECT +%token I64IMAGECUBE U64IMAGECUBE +%token I64IMAGEBUFFER U64IMAGEBUFFER +%token I64IMAGE1DARRAY U64IMAGE1DARRAY +%token I64IMAGE2DARRAY U64IMAGE2DARRAY +%token I64IMAGECUBEARRAY U64IMAGECUBEARRAY +%token I64IMAGE2DMS U64IMAGE2DMS +%token I64IMAGE2DMSARRAY U64IMAGE2DMSARRAY + // texture without sampler %token TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY %token TEXTURE1D ITEXTURE1D UTEXTURE1D @@ -256,6 +274,11 @@ extern int yylex(YYSTYPE*, TParseContext&); %token SUBPASSINPUT SUBPASSINPUTMS ISUBPASSINPUT ISUBPASSINPUTMS USUBPASSINPUT USUBPASSINPUTMS %token F16SUBPASSINPUT F16SUBPASSINPUTMS +// spirv intrinsics +%token SPIRV_INSTRUCTION SPIRV_EXECUTION_MODE SPIRV_EXECUTION_MODE_ID +%token SPIRV_DECORATE SPIRV_DECORATE_ID SPIRV_DECORATE_STRING +%token SPIRV_TYPE SPIRV_STORAGE_CLASS SPIRV_BY_REFERENCE SPIRV_LITERAL + %token LEFT_OP RIGHT_OP @@ -263,6 +286,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN %token MOD_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN XOR_ASSIGN OR_ASSIGN %token SUB_ASSIGN +%token STRING_LITERAL %token LEFT_PAREN RIGHT_PAREN LEFT_BRACKET RIGHT_BRACKET LEFT_BRACE RIGHT_BRACE DOT %token COMMA COLON EQUAL SEMICOLON BANG DASH TILDE PLUS STAR SLASH PERCENT @@ -277,6 +301,8 @@ extern int yylex(YYSTYPE*, TParseContext&); %token CENTROID IN OUT INOUT %token STRUCT VOID WHILE %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT +%token TERMINATE_INVOCATION +%token TERMINATE_RAY IGNORE_INTERSECTION %token UNIFORM SHARED BUFFER %token FLAT SMOOTH LAYOUT @@ -285,9 +311,10 @@ extern int yylex(YYSTYPE*, TParseContext&); %token INT64CONSTANT UINT64CONSTANT %token SUBROUTINE DEMOTE %token PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV +%token PAYLOADEXT PAYLOADINEXT HITATTREXT CALLDATAEXT CALLDATAINEXT %token PATCH SAMPLE NONUNIFORM %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT -%token SUBGROUPCOHERENT NONPRIVATE +%token SUBGROUPCOHERENT NONPRIVATE SHADERCALLCOHERENT %token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV %token PRECISE @@ -343,6 +370,19 @@ extern int yylex(YYSTYPE*, TParseContext&); %type attribute attribute_list single_attribute %type demote_statement %type initializer_list +%type spirv_requirements_list spirv_requirements_parameter +%type spirv_extension_list spirv_capability_list +%type spirv_execution_mode_qualifier +%type spirv_execution_mode_parameter_list spirv_execution_mode_parameter spirv_execution_mode_id_parameter_list +%type spirv_storage_class_qualifier +%type spirv_decorate_qualifier +%type spirv_decorate_parameter_list spirv_decorate_parameter +%type spirv_decorate_id_parameter_list +%type spirv_decorate_string_parameter_list +%type spirv_type_specifier +%type spirv_type_parameter_list spirv_type_parameter +%type spirv_instruction_qualifier +%type spirv_instruction_qualifier_list spirv_instruction_qualifier_id %start translation_unit @@ -377,6 +417,9 @@ primary_expression $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); } + | STRING_LITERAL { + $$ = parseContext.intermediate.addConstantUnion($1.string, $1.loc, true); + } | INT32CONSTANT { parseContext.explicitInt32Check($1.loc, "32-bit signed literal"); $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); @@ -755,7 +798,7 @@ conditional_expression parseContext.rValueErrorCheck($5.loc, ":", $6); $$ = parseContext.intermediate.addSelection($1, $4, $6, $2.loc); if ($$ == 0) { - parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(), $6->getCompleteString()); + parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $6->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $6; } } @@ -770,9 +813,9 @@ assignment_expression parseContext.specializationCheck($2.loc, $1->getType(), "="); parseContext.lValueErrorCheck($2.loc, "assign", $1); parseContext.rValueErrorCheck($2.loc, "assign", $3); - $$ = parseContext.intermediate.addAssign($2.op, $1, $3, $2.loc); + $$ = parseContext.addAssign($2.loc, $2.op, $1, $3); if ($$ == 0) { - parseContext.assignError($2.loc, "assign", $1->getCompleteString(), $3->getCompleteString()); + parseContext.assignError($2.loc, "assign", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $1; } } @@ -834,7 +877,7 @@ expression parseContext.samplerConstructorLocationCheck($2.loc, ",", $3); $$ = parseContext.intermediate.addComma($1, $3, $2.loc); if ($$ == 0) { - parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(), $3->getCompleteString()); + parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $3; } } @@ -853,6 +896,20 @@ declaration $$ = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } + + | spirv_instruction_qualifier function_prototype SEMICOLON { + parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); + $2.function->setSpirvInstruction(*$1); // Attach SPIR-V intruction qualifier + parseContext.handleFunctionDeclarator($2.loc, *$2.function, true /* prototype */); + $$ = 0; + // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature + } + | spirv_execution_mode_qualifier SEMICOLON { + parseContext.globalCheck($2.loc, "SPIR-V execution mode qualifier"); + parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); + $$ = 0; + } + | init_declarator_list SEMICOLON { if ($1.intermNode && $1.intermNode->getAsAggregate()) $1.intermNode->getAsAggregate()->setOperator(EOpSequence); @@ -897,7 +954,7 @@ declaration block_structure : type_qualifier IDENTIFIER LEFT_BRACE { parseContext.nestedBlockCheck($1.loc); } struct_declaration_list RIGHT_BRACE { - --parseContext.structNestingLevel; + --parseContext.blockNestingLevel; parseContext.blockName = $2.string; parseContext.globalQualifierFixCheck($1.loc, $1.qualifier); parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); @@ -922,6 +979,25 @@ function_prototype $$.function = $1; $$.loc = $2.loc; } + | function_declarator RIGHT_PAREN attribute { + $$.function = $1; + $$.loc = $2.loc; + parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); + parseContext.handleFunctionAttributes($2.loc, *$3); + } + | attribute function_declarator RIGHT_PAREN { + $$.function = $2; + $$.loc = $3.loc; + parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); + parseContext.handleFunctionAttributes($3.loc, *$1); + } + | attribute function_declarator RIGHT_PAREN attribute { + $$.function = $2; + $$.loc = $3.loc; + parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); + parseContext.handleFunctionAttributes($3.loc, *$1); + parseContext.handleFunctionAttributes($3.loc, *$4); + } ; function_declarator @@ -1325,6 +1401,25 @@ single_type_qualifier | non_uniform_qualifier { $$ = $1; } + | spirv_storage_class_qualifier { + parseContext.globalCheck($1.loc, "spirv_storage_class"); + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); + $$ = $1; + } + | spirv_decorate_qualifier { + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); + $$ = $1; + } + | SPIRV_BY_REFERENCE { + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); + $$.init($1.loc); + $$.qualifier.setSpirvByReference(); + } + | SPIRV_LITERAL { + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); + $$.init($1.loc); + $$.qualifier.setSpirvLiteral(); + } ; @@ -1415,42 +1510,81 @@ storage_qualifier } | HITATTRNV { parseContext.globalCheck($1.loc, "hitAttributeNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangClosestHitNVMask - | EShLangAnyHitNVMask), "hitAttributeNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask + | EShLangAnyHitMask), "hitAttributeNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV"); $$.init($1.loc); - $$.qualifier.storage = EvqHitAttrNV; + $$.qualifier.storage = EvqHitAttr; + } + | HITATTREXT { + parseContext.globalCheck($1.loc, "hitAttributeEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask + | EShLangAnyHitMask), "hitAttributeEXT"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "hitAttributeNV"); + $$.init($1.loc); + $$.qualifier.storage = EvqHitAttr; } | PAYLOADNV { parseContext.globalCheck($1.loc, "rayPayloadNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask | - EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | + EShLangAnyHitMask | EShLangMissMask), "rayPayloadNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV"); $$.init($1.loc); - $$.qualifier.storage = EvqPayloadNV; + $$.qualifier.storage = EvqPayload; + } + | PAYLOADEXT { + parseContext.globalCheck($1.loc, "rayPayloadEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | + EShLangAnyHitMask | EShLangMissMask), "rayPayloadEXT"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadEXT"); + $$.init($1.loc); + $$.qualifier.storage = EvqPayload; } | PAYLOADINNV { parseContext.globalCheck($1.loc, "rayPayloadInNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitNVMask | - EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitMask | + EShLangAnyHitMask | EShLangMissMask), "rayPayloadInNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV"); $$.init($1.loc); - $$.qualifier.storage = EvqPayloadInNV; + $$.qualifier.storage = EvqPayloadIn; + } + | PAYLOADINEXT { + parseContext.globalCheck($1.loc, "rayPayloadInEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitMask | + EShLangAnyHitMask | EShLangMissMask), "rayPayloadInEXT"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadInEXT"); + $$.init($1.loc); + $$.qualifier.storage = EvqPayloadIn; } | CALLDATANV { parseContext.globalCheck($1.loc, "callableDataNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenNVMask | - EShLangClosestHitNVMask | EShLangMissNVMask | EShLangCallableNVMask), "callableDataNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | + EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV"); $$.init($1.loc); - $$.qualifier.storage = EvqCallableDataNV; + $$.qualifier.storage = EvqCallableData; + } + | CALLDATAEXT { + parseContext.globalCheck($1.loc, "callableDataEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | + EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataEXT"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataEXT"); + $$.init($1.loc); + $$.qualifier.storage = EvqCallableData; } | CALLDATAINNV { parseContext.globalCheck($1.loc, "callableDataInNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableNVMask), "callableDataInNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV"); $$.init($1.loc); - $$.qualifier.storage = EvqCallableDataInNV; + $$.qualifier.storage = EvqCallableDataIn; + } + | CALLDATAINEXT { + parseContext.globalCheck($1.loc, "callableDataInEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataInEXT"); + $$.init($1.loc); + $$.qualifier.storage = EvqCallableDataIn; } | COHERENT { $$.init($1.loc); @@ -1481,6 +1615,11 @@ storage_qualifier parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); $$.qualifier.nonprivate = true; } + | SHADERCALLCOHERENT { + $$.init($1.loc); + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); + $$.qualifier.shadercallcoherent = true; + } | VOLATILE { $$.init($1.loc); $$.qualifier.volatil = true; @@ -2350,7 +2489,15 @@ type_specifier_nonarray } | ACCSTRUCTNV { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtAccStructNV; + $$.basicType = EbtAccStruct; + } + | ACCSTRUCTEXT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtAccStruct; + } + | RAYQUERYEXT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtRayQuery; } | ATOMIC_UINT { parseContext.vulkanRemoved($1.loc, "atomic counter types"); @@ -3143,6 +3290,116 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint, Esd2D, true, false, true); } + | I64IMAGE1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd1D); + } + | U64IMAGE1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd1D); + } + | I64IMAGE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D); + } + | U64IMAGE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D); + } + | I64IMAGE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd3D); + } + | U64IMAGE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd3D); + } + | I64IMAGE2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdRect); + } + | U64IMAGE2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdRect); + } + | I64IMAGECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdCube); + } + | U64IMAGECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdCube); + } + | I64IMAGEBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdBuffer); + } + | U64IMAGEBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdBuffer); + } + | I64IMAGE1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd1D, true); + } + | U64IMAGE1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd1D, true); + } + | I64IMAGE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D, true); + } + | U64IMAGE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D, true); + } + | I64IMAGECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdCube, true); + } + | U64IMAGECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdCube, true); + } + | I64IMAGE2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D, false, false, true); + } + | U64IMAGE2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D, false, false, true); + } + | I64IMAGE2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D, true, false, true); + } + | U64IMAGE2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D, true, false, true); + } | SAMPLEREXTERNALOES { // GL_OES_EGL_image_external $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -3223,6 +3480,10 @@ type_specifier_nonarray $$.basicType = EbtUint; $$.coopmat = true; } + | spirv_type_specifier { + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); + $$ = $1; + } | struct_specifier { $$ = $1; @@ -3391,6 +3652,12 @@ initializer parseContext.profileRequires($1.loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); $$ = $2; } + | LEFT_BRACE RIGHT_BRACE { + const char* initFeature = "empty { } initializer"; + parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); + parseContext.profileRequires($1.loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); + $$ = parseContext.intermediate.makeAggregate($1.loc); + } ; @@ -3523,6 +3790,7 @@ selection_statement } | attribute selection_statement_nonattributed { + parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*$1, $2); $$ = $2; } @@ -3570,6 +3838,7 @@ switch_statement } | attribute switch_statement_nonattributed { + parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*$1, $2); $$ = $2; } @@ -3634,6 +3903,7 @@ iteration_statement } | attribute iteration_statement_nonattributed { + parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleLoopAttributes(*$1, $2); $$ = $2; } @@ -3656,6 +3926,7 @@ iteration_statement_nonattributed --parseContext.controlFlowNestingLevel; } | DO { + parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; @@ -3667,6 +3938,7 @@ iteration_statement_nonattributed parseContext.boolCheck($8.loc, $6); $$ = parseContext.intermediate.addLoop($3, $6, 0, false, $4.loc); + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; @@ -3745,6 +4017,20 @@ jump_statement parseContext.requireStage($1.loc, EShLangFragment, "discard"); $$ = parseContext.intermediate.addBranch(EOpKill, $1.loc); } + | TERMINATE_INVOCATION SEMICOLON { + parseContext.requireStage($1.loc, EShLangFragment, "terminateInvocation"); + $$ = parseContext.intermediate.addBranch(EOpTerminateInvocation, $1.loc); + } + + | TERMINATE_RAY SEMICOLON { + parseContext.requireStage($1.loc, EShLangAnyHit, "terminateRayEXT"); + $$ = parseContext.intermediate.addBranch(EOpTerminateRayKHR, $1.loc); + } + | IGNORE_INTERSECTION SEMICOLON { + parseContext.requireStage($1.loc, EShLangAnyHit, "ignoreIntersectionEXT"); + $$ = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, $1.loc); + } + ; // Grammar Note: No 'goto'. Gotos are not supported. @@ -3782,6 +4068,14 @@ function_definition : function_prototype { $1.function = parseContext.handleFunctionDeclarator($1.loc, *$1.function, false /* not prototype */); $1.intermNode = parseContext.handleFunctionDefinition($1.loc, *$1.function); + + // For ES 100 only, according to ES shading language 100 spec: A function + // body has a scope nested inside the function's definition. + if (parseContext.profile == EEsProfile && parseContext.version == 100) + { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + } } compound_statement_no_new_scope { // May be best done as post process phase on intermediate code @@ -3797,6 +4091,17 @@ function_definition $$->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize); $$->getAsAggregate()->setDebug(parseContext.contextPragma.debug); $$->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); + + // Set currentFunctionType to empty pointer when goes outside of the function + parseContext.currentFunctionType = nullptr; + + // For ES 100 only, according to ES shading language 100 spec: A function + // body has a scope nested inside the function's definition. + if (parseContext.profile == EEsProfile && parseContext.version == 100) + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + } } ; @@ -3804,7 +4109,6 @@ function_definition attribute : LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET { $$ = $3; - parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_control_flow_attributes, "attribute"); } attribute_list @@ -3824,4 +4128,270 @@ single_attribute } + +spirv_requirements_list + : spirv_requirements_parameter { + $$ = $1; + } + | spirv_requirements_list COMMA spirv_requirements_parameter { + $$ = parseContext.mergeSpirvRequirements($2.loc, $1, $3); + } + +spirv_requirements_parameter + : IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET { + $$ = parseContext.makeSpirvRequirement($2.loc, *$1.string, $4->getAsAggregate(), nullptr); + } + | IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET { + $$ = parseContext.makeSpirvRequirement($2.loc, *$1.string, nullptr, $4->getAsAggregate()); + } + +spirv_extension_list + : STRING_LITERAL { + $$ = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion($1.string, $1.loc, true)); + } + | spirv_extension_list COMMA STRING_LITERAL { + $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.string, $3.loc, true)); + } + +spirv_capability_list + : INTCONSTANT { + $$ = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion($1.i, $1.loc, true)); + } + | spirv_capability_list COMMA INTCONSTANT { + $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.i, $3.loc, true)); + } + +spirv_execution_mode_qualifier + : SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN { + parseContext.intermediate.insertSpirvExecutionMode($3.i); + $$ = 0; + } + | SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN { + parseContext.intermediate.insertSpirvRequirement($3); + parseContext.intermediate.insertSpirvExecutionMode($5.i); + $$ = 0; + } + | SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN { + parseContext.intermediate.insertSpirvExecutionMode($3.i, $5->getAsAggregate()); + $$ = 0; + } + | SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN { + parseContext.intermediate.insertSpirvRequirement($3); + parseContext.intermediate.insertSpirvExecutionMode($5.i, $7->getAsAggregate()); + $$ = 0; + } + | SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN { + parseContext.intermediate.insertSpirvExecutionModeId($3.i, $5->getAsAggregate()); + $$ = 0; + } + | SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN { + parseContext.intermediate.insertSpirvRequirement($3); + parseContext.intermediate.insertSpirvExecutionModeId($5.i, $7->getAsAggregate()); + $$ = 0; + } + +spirv_execution_mode_parameter_list + : spirv_execution_mode_parameter { + $$ = parseContext.intermediate.makeAggregate($1); + } + | spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter { + $$ = parseContext.intermediate.growAggregate($1, $3); + } + +spirv_execution_mode_parameter + : FLOATCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); + } + | INTCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); + } + | UINTCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); + } + | BOOLCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); + } + | STRING_LITERAL { + $$ = parseContext.intermediate.addConstantUnion($1.string, $1.loc, true); + } + +spirv_execution_mode_id_parameter_list + : constant_expression { + if ($1->getBasicType() != EbtFloat && + $1->getBasicType() != EbtInt && + $1->getBasicType() != EbtUint && + $1->getBasicType() != EbtBool && + $1->getBasicType() != EbtString) + parseContext.error($1->getLoc(), "this type not allowed", $1->getType().getBasicString(), ""); + $$ = parseContext.intermediate.makeAggregate($1); + } + | spirv_execution_mode_id_parameter_list COMMA constant_expression { + if ($3->getBasicType() != EbtFloat && + $3->getBasicType() != EbtInt && + $3->getBasicType() != EbtUint && + $3->getBasicType() != EbtBool && + $3->getBasicType() != EbtString) + parseContext.error($3->getLoc(), "this type not allowed", $3->getType().getBasicString(), ""); + $$ = parseContext.intermediate.growAggregate($1, $3); + } + +spirv_storage_class_qualifier + : SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN { + $$.init($1.loc); + $$.qualifier.storage = EvqSpirvStorageClass; + $$.qualifier.spirvStorageClass = $3.i; + } + | SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN { + $$.init($1.loc); + parseContext.intermediate.insertSpirvRequirement($3); + $$.qualifier.storage = EvqSpirvStorageClass; + $$.qualifier.spirvStorageClass = $5.i; + } + +spirv_decorate_qualifier + : SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN{ + $$.init($1.loc); + $$.qualifier.setSpirvDecorate($3.i); + } + | SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN{ + $$.init($1.loc); + parseContext.intermediate.insertSpirvRequirement($3); + $$.qualifier.setSpirvDecorate($5.i); + } + | SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN { + $$.init($1.loc); + $$.qualifier.setSpirvDecorate($3.i, $5->getAsAggregate()); + } + | SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN { + $$.init($1.loc); + parseContext.intermediate.insertSpirvRequirement($3); + $$.qualifier.setSpirvDecorate($5.i, $7->getAsAggregate()); + } + | SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN { + $$.init($1.loc); + $$.qualifier.setSpirvDecorateId($3.i, $5->getAsAggregate()); + } + | SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN { + $$.init($1.loc); + parseContext.intermediate.insertSpirvRequirement($3); + $$.qualifier.setSpirvDecorateId($5.i, $7->getAsAggregate()); + } + | SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN { + $$.init($1.loc); + $$.qualifier.setSpirvDecorateString($3.i, $5->getAsAggregate()); + } + | SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN { + $$.init($1.loc); + parseContext.intermediate.insertSpirvRequirement($3); + $$.qualifier.setSpirvDecorateString($5.i, $7->getAsAggregate()); + } + +spirv_decorate_parameter_list + : spirv_decorate_parameter { + $$ = parseContext.intermediate.makeAggregate($1); + } + | spirv_decorate_parameter_list COMMA spirv_decorate_parameter { + $$ = parseContext.intermediate.growAggregate($1, $3); + } + +spirv_decorate_parameter + : FLOATCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); + } + | INTCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); + } + | UINTCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); + } + | BOOLCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); + } + +spirv_decorate_id_parameter_list + : constant_expression { + if ($1->getBasicType() != EbtFloat && + $1->getBasicType() != EbtInt && + $1->getBasicType() != EbtUint && + $1->getBasicType() != EbtBool) + parseContext.error($1->getLoc(), "this type not allowed", $1->getType().getBasicString(), ""); + $$ = parseContext.intermediate.makeAggregate($1); + } + | spirv_decorate_id_parameter_list COMMA constant_expression { + if ($3->getBasicType() != EbtFloat && + $3->getBasicType() != EbtInt && + $3->getBasicType() != EbtUint && + $3->getBasicType() != EbtBool) + parseContext.error($3->getLoc(), "this type not allowed", $3->getType().getBasicString(), ""); + $$ = parseContext.intermediate.growAggregate($1, $3); + } + +spirv_decorate_string_parameter_list + : STRING_LITERAL { + $$ = parseContext.intermediate.makeAggregate( + parseContext.intermediate.addConstantUnion($1.string, $1.loc, true)); + } + | spirv_decorate_string_parameter_list COMMA STRING_LITERAL { + $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.string, $3.loc, true)); + } + +spirv_type_specifier + : SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.setSpirvType(*$3, $5); + } + | SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.intermediate.insertSpirvRequirement($3); + $$.setSpirvType(*$5, $7); + } + | SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.setSpirvType(*$3); + } + | SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.intermediate.insertSpirvRequirement($3); + $$.setSpirvType(*$5); + } + +spirv_type_parameter_list + : spirv_type_parameter { + $$ = $1; + } + | spirv_type_parameter_list COMMA spirv_type_parameter { + $$ = parseContext.mergeSpirvTypeParameters($1, $3); + } + +spirv_type_parameter + : constant_expression { + $$ = parseContext.makeSpirvTypeParameters($1->getLoc(), $1->getAsConstantUnion()); + } + +spirv_instruction_qualifier + : SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN { + $$ = $3; + } + | SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN { + parseContext.intermediate.insertSpirvRequirement($3); + $$ = $5; + } + +spirv_instruction_qualifier_list + : spirv_instruction_qualifier_id { + $$ = $1; + } + | spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id { + $$ = parseContext.mergeSpirvInstruction($2.loc, $1, $3); + } + +spirv_instruction_qualifier_id + : IDENTIFIER EQUAL STRING_LITERAL { + $$ = parseContext.makeSpirvInstruction($2.loc, *$1.string, *$3.string); + } + | IDENTIFIER EQUAL INTCONSTANT { + $$ = parseContext.makeSpirvInstruction($2.loc, *$1.string, $3.i); + } + + %% diff --git a/Externals/glslang/glslang/MachineIndependent/glslang_tab.cpp b/Externals/glslang/glslang/MachineIndependent/glslang_tab.cpp index 2a47faada463..0b216b622f19 100644 --- a/Externals/glslang/glslang/MachineIndependent/glslang_tab.cpp +++ b/Externals/glslang/glslang/MachineIndependent/glslang_tab.cpp @@ -1,8 +1,9 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.7.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,6 +34,10 @@ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. @@ -40,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30704 -/* Bison version. */ -#define YYBISON_VERSION "3.0.4" +/* Bison version string. */ +#define YYBISON_VERSION "3.7.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -61,8 +66,8 @@ -/* Copy the first part of user declarations. */ -#line 68 "MachineIndependent/glslang.y" /* yacc.c:339 */ +/* First part of user prologue. */ +#line 69 "MachineIndependent/glslang.y" /* Based on: @@ -88,509 +93,626 @@ Jutta Degener, 1995 using namespace glslang; -#line 92 "MachineIndependent/glslang_tab.cpp" /* yacc.c:339 */ +#line 97 "MachineIndependent/glslang_tab.cpp" +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif # ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif # else -# define YY_NULLPTR 0 +# define YY_NULLPTR ((void*)0) # endif # endif -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 1 -#endif - -/* In a future release of Bison, this section will be replaced - by #include "glslang_tab.cpp.h". */ -#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED -# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 1 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - CONST = 258, - BOOL = 259, - INT = 260, - UINT = 261, - FLOAT = 262, - BVEC2 = 263, - BVEC3 = 264, - BVEC4 = 265, - IVEC2 = 266, - IVEC3 = 267, - IVEC4 = 268, - UVEC2 = 269, - UVEC3 = 270, - UVEC4 = 271, - VEC2 = 272, - VEC3 = 273, - VEC4 = 274, - MAT2 = 275, - MAT3 = 276, - MAT4 = 277, - MAT2X2 = 278, - MAT2X3 = 279, - MAT2X4 = 280, - MAT3X2 = 281, - MAT3X3 = 282, - MAT3X4 = 283, - MAT4X2 = 284, - MAT4X3 = 285, - MAT4X4 = 286, - SAMPLER2D = 287, - SAMPLER3D = 288, - SAMPLERCUBE = 289, - SAMPLER2DSHADOW = 290, - SAMPLERCUBESHADOW = 291, - SAMPLER2DARRAY = 292, - SAMPLER2DARRAYSHADOW = 293, - ISAMPLER2D = 294, - ISAMPLER3D = 295, - ISAMPLERCUBE = 296, - ISAMPLER2DARRAY = 297, - USAMPLER2D = 298, - USAMPLER3D = 299, - USAMPLERCUBE = 300, - USAMPLER2DARRAY = 301, - SAMPLER = 302, - SAMPLERSHADOW = 303, - TEXTURE2D = 304, - TEXTURE3D = 305, - TEXTURECUBE = 306, - TEXTURE2DARRAY = 307, - ITEXTURE2D = 308, - ITEXTURE3D = 309, - ITEXTURECUBE = 310, - ITEXTURE2DARRAY = 311, - UTEXTURE2D = 312, - UTEXTURE3D = 313, - UTEXTURECUBE = 314, - UTEXTURE2DARRAY = 315, - ATTRIBUTE = 316, - VARYING = 317, - FLOAT16_T = 318, - FLOAT32_T = 319, - DOUBLE = 320, - FLOAT64_T = 321, - INT64_T = 322, - UINT64_T = 323, - INT32_T = 324, - UINT32_T = 325, - INT16_T = 326, - UINT16_T = 327, - INT8_T = 328, - UINT8_T = 329, - I64VEC2 = 330, - I64VEC3 = 331, - I64VEC4 = 332, - U64VEC2 = 333, - U64VEC3 = 334, - U64VEC4 = 335, - I32VEC2 = 336, - I32VEC3 = 337, - I32VEC4 = 338, - U32VEC2 = 339, - U32VEC3 = 340, - U32VEC4 = 341, - I16VEC2 = 342, - I16VEC3 = 343, - I16VEC4 = 344, - U16VEC2 = 345, - U16VEC3 = 346, - U16VEC4 = 347, - I8VEC2 = 348, - I8VEC3 = 349, - I8VEC4 = 350, - U8VEC2 = 351, - U8VEC3 = 352, - U8VEC4 = 353, - DVEC2 = 354, - DVEC3 = 355, - DVEC4 = 356, - DMAT2 = 357, - DMAT3 = 358, - DMAT4 = 359, - F16VEC2 = 360, - F16VEC3 = 361, - F16VEC4 = 362, - F16MAT2 = 363, - F16MAT3 = 364, - F16MAT4 = 365, - F32VEC2 = 366, - F32VEC3 = 367, - F32VEC4 = 368, - F32MAT2 = 369, - F32MAT3 = 370, - F32MAT4 = 371, - F64VEC2 = 372, - F64VEC3 = 373, - F64VEC4 = 374, - F64MAT2 = 375, - F64MAT3 = 376, - F64MAT4 = 377, - DMAT2X2 = 378, - DMAT2X3 = 379, - DMAT2X4 = 380, - DMAT3X2 = 381, - DMAT3X3 = 382, - DMAT3X4 = 383, - DMAT4X2 = 384, - DMAT4X3 = 385, - DMAT4X4 = 386, - F16MAT2X2 = 387, - F16MAT2X3 = 388, - F16MAT2X4 = 389, - F16MAT3X2 = 390, - F16MAT3X3 = 391, - F16MAT3X4 = 392, - F16MAT4X2 = 393, - F16MAT4X3 = 394, - F16MAT4X4 = 395, - F32MAT2X2 = 396, - F32MAT2X3 = 397, - F32MAT2X4 = 398, - F32MAT3X2 = 399, - F32MAT3X3 = 400, - F32MAT3X4 = 401, - F32MAT4X2 = 402, - F32MAT4X3 = 403, - F32MAT4X4 = 404, - F64MAT2X2 = 405, - F64MAT2X3 = 406, - F64MAT2X4 = 407, - F64MAT3X2 = 408, - F64MAT3X3 = 409, - F64MAT3X4 = 410, - F64MAT4X2 = 411, - F64MAT4X3 = 412, - F64MAT4X4 = 413, - ATOMIC_UINT = 414, - ACCSTRUCTNV = 415, - FCOOPMATNV = 416, - ICOOPMATNV = 417, - UCOOPMATNV = 418, - SAMPLERCUBEARRAY = 419, - SAMPLERCUBEARRAYSHADOW = 420, - ISAMPLERCUBEARRAY = 421, - USAMPLERCUBEARRAY = 422, - SAMPLER1D = 423, - SAMPLER1DARRAY = 424, - SAMPLER1DARRAYSHADOW = 425, - ISAMPLER1D = 426, - SAMPLER1DSHADOW = 427, - SAMPLER2DRECT = 428, - SAMPLER2DRECTSHADOW = 429, - ISAMPLER2DRECT = 430, - USAMPLER2DRECT = 431, - SAMPLERBUFFER = 432, - ISAMPLERBUFFER = 433, - USAMPLERBUFFER = 434, - SAMPLER2DMS = 435, - ISAMPLER2DMS = 436, - USAMPLER2DMS = 437, - SAMPLER2DMSARRAY = 438, - ISAMPLER2DMSARRAY = 439, - USAMPLER2DMSARRAY = 440, - SAMPLEREXTERNALOES = 441, - SAMPLEREXTERNAL2DY2YEXT = 442, - ISAMPLER1DARRAY = 443, - USAMPLER1D = 444, - USAMPLER1DARRAY = 445, - F16SAMPLER1D = 446, - F16SAMPLER2D = 447, - F16SAMPLER3D = 448, - F16SAMPLER2DRECT = 449, - F16SAMPLERCUBE = 450, - F16SAMPLER1DARRAY = 451, - F16SAMPLER2DARRAY = 452, - F16SAMPLERCUBEARRAY = 453, - F16SAMPLERBUFFER = 454, - F16SAMPLER2DMS = 455, - F16SAMPLER2DMSARRAY = 456, - F16SAMPLER1DSHADOW = 457, - F16SAMPLER2DSHADOW = 458, - F16SAMPLER1DARRAYSHADOW = 459, - F16SAMPLER2DARRAYSHADOW = 460, - F16SAMPLER2DRECTSHADOW = 461, - F16SAMPLERCUBESHADOW = 462, - F16SAMPLERCUBEARRAYSHADOW = 463, - IMAGE1D = 464, - IIMAGE1D = 465, - UIMAGE1D = 466, - IMAGE2D = 467, - IIMAGE2D = 468, - UIMAGE2D = 469, - IMAGE3D = 470, - IIMAGE3D = 471, - UIMAGE3D = 472, - IMAGE2DRECT = 473, - IIMAGE2DRECT = 474, - UIMAGE2DRECT = 475, - IMAGECUBE = 476, - IIMAGECUBE = 477, - UIMAGECUBE = 478, - IMAGEBUFFER = 479, - IIMAGEBUFFER = 480, - UIMAGEBUFFER = 481, - IMAGE1DARRAY = 482, - IIMAGE1DARRAY = 483, - UIMAGE1DARRAY = 484, - IMAGE2DARRAY = 485, - IIMAGE2DARRAY = 486, - UIMAGE2DARRAY = 487, - IMAGECUBEARRAY = 488, - IIMAGECUBEARRAY = 489, - UIMAGECUBEARRAY = 490, - IMAGE2DMS = 491, - IIMAGE2DMS = 492, - UIMAGE2DMS = 493, - IMAGE2DMSARRAY = 494, - IIMAGE2DMSARRAY = 495, - UIMAGE2DMSARRAY = 496, - F16IMAGE1D = 497, - F16IMAGE2D = 498, - F16IMAGE3D = 499, - F16IMAGE2DRECT = 500, - F16IMAGECUBE = 501, - F16IMAGE1DARRAY = 502, - F16IMAGE2DARRAY = 503, - F16IMAGECUBEARRAY = 504, - F16IMAGEBUFFER = 505, - F16IMAGE2DMS = 506, - F16IMAGE2DMSARRAY = 507, - TEXTURECUBEARRAY = 508, - ITEXTURECUBEARRAY = 509, - UTEXTURECUBEARRAY = 510, - TEXTURE1D = 511, - ITEXTURE1D = 512, - UTEXTURE1D = 513, - TEXTURE1DARRAY = 514, - ITEXTURE1DARRAY = 515, - UTEXTURE1DARRAY = 516, - TEXTURE2DRECT = 517, - ITEXTURE2DRECT = 518, - UTEXTURE2DRECT = 519, - TEXTUREBUFFER = 520, - ITEXTUREBUFFER = 521, - UTEXTUREBUFFER = 522, - TEXTURE2DMS = 523, - ITEXTURE2DMS = 524, - UTEXTURE2DMS = 525, - TEXTURE2DMSARRAY = 526, - ITEXTURE2DMSARRAY = 527, - UTEXTURE2DMSARRAY = 528, - F16TEXTURE1D = 529, - F16TEXTURE2D = 530, - F16TEXTURE3D = 531, - F16TEXTURE2DRECT = 532, - F16TEXTURECUBE = 533, - F16TEXTURE1DARRAY = 534, - F16TEXTURE2DARRAY = 535, - F16TEXTURECUBEARRAY = 536, - F16TEXTUREBUFFER = 537, - F16TEXTURE2DMS = 538, - F16TEXTURE2DMSARRAY = 539, - SUBPASSINPUT = 540, - SUBPASSINPUTMS = 541, - ISUBPASSINPUT = 542, - ISUBPASSINPUTMS = 543, - USUBPASSINPUT = 544, - USUBPASSINPUTMS = 545, - F16SUBPASSINPUT = 546, - F16SUBPASSINPUTMS = 547, - LEFT_OP = 548, - RIGHT_OP = 549, - INC_OP = 550, - DEC_OP = 551, - LE_OP = 552, - GE_OP = 553, - EQ_OP = 554, - NE_OP = 555, - AND_OP = 556, - OR_OP = 557, - XOR_OP = 558, - MUL_ASSIGN = 559, - DIV_ASSIGN = 560, - ADD_ASSIGN = 561, - MOD_ASSIGN = 562, - LEFT_ASSIGN = 563, - RIGHT_ASSIGN = 564, - AND_ASSIGN = 565, - XOR_ASSIGN = 566, - OR_ASSIGN = 567, - SUB_ASSIGN = 568, - LEFT_PAREN = 569, - RIGHT_PAREN = 570, - LEFT_BRACKET = 571, - RIGHT_BRACKET = 572, - LEFT_BRACE = 573, - RIGHT_BRACE = 574, - DOT = 575, - COMMA = 576, - COLON = 577, - EQUAL = 578, - SEMICOLON = 579, - BANG = 580, - DASH = 581, - TILDE = 582, - PLUS = 583, - STAR = 584, - SLASH = 585, - PERCENT = 586, - LEFT_ANGLE = 587, - RIGHT_ANGLE = 588, - VERTICAL_BAR = 589, - CARET = 590, - AMPERSAND = 591, - QUESTION = 592, - INVARIANT = 593, - HIGH_PRECISION = 594, - MEDIUM_PRECISION = 595, - LOW_PRECISION = 596, - PRECISION = 597, - PACKED = 598, - RESOURCE = 599, - SUPERP = 600, - FLOATCONSTANT = 601, - INTCONSTANT = 602, - UINTCONSTANT = 603, - BOOLCONSTANT = 604, - IDENTIFIER = 605, - TYPE_NAME = 606, - CENTROID = 607, - IN = 608, - OUT = 609, - INOUT = 610, - STRUCT = 611, - VOID = 612, - WHILE = 613, - BREAK = 614, - CONTINUE = 615, - DO = 616, - ELSE = 617, - FOR = 618, - IF = 619, - DISCARD = 620, - RETURN = 621, - SWITCH = 622, - CASE = 623, - DEFAULT = 624, - UNIFORM = 625, - SHARED = 626, - BUFFER = 627, - FLAT = 628, - SMOOTH = 629, - LAYOUT = 630, - DOUBLECONSTANT = 631, - INT16CONSTANT = 632, - UINT16CONSTANT = 633, - FLOAT16CONSTANT = 634, - INT32CONSTANT = 635, - UINT32CONSTANT = 636, - INT64CONSTANT = 637, - UINT64CONSTANT = 638, - SUBROUTINE = 639, - DEMOTE = 640, - PAYLOADNV = 641, - PAYLOADINNV = 642, - HITATTRNV = 643, - CALLDATANV = 644, - CALLDATAINNV = 645, - PATCH = 646, - SAMPLE = 647, - NONUNIFORM = 648, - COHERENT = 649, - VOLATILE = 650, - RESTRICT = 651, - READONLY = 652, - WRITEONLY = 653, - DEVICECOHERENT = 654, - QUEUEFAMILYCOHERENT = 655, - WORKGROUPCOHERENT = 656, - SUBGROUPCOHERENT = 657, - NONPRIVATE = 658, - NOPERSPECTIVE = 659, - EXPLICITINTERPAMD = 660, - PERVERTEXNV = 661, - PERPRIMITIVENV = 662, - PERVIEWNV = 663, - PERTASKNV = 664, - PRECISE = 665 - }; -#endif - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - -union YYSTYPE +#include "glslang_tab.cpp.h" +/* Symbol kind. */ +enum yysymbol_kind_t { -#line 96 "MachineIndependent/glslang.y" /* yacc.c:355 */ - - struct { - glslang::TSourceLoc loc; - union { - glslang::TString *string; - int i; - unsigned int u; - long long i64; - unsigned long long u64; - bool b; - double d; - }; - glslang::TSymbol* symbol; - } lex; - struct { - glslang::TSourceLoc loc; - glslang::TOperator op; - union { - TIntermNode* intermNode; - glslang::TIntermNodePair nodePair; - glslang::TIntermTyped* intermTypedNode; - glslang::TAttributes* attributes; - }; - union { - glslang::TPublicType type; - glslang::TFunction* function; - glslang::TParameter param; - glslang::TTypeLoc typeLine; - glslang::TTypeList* typeList; - glslang::TArraySizes* arraySizes; - glslang::TIdentifierList* identifierList; - }; - glslang::TArraySizes* typeParameters; - } interm; - -#line 579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_CONST = 3, /* CONST */ + YYSYMBOL_BOOL = 4, /* BOOL */ + YYSYMBOL_INT = 5, /* INT */ + YYSYMBOL_UINT = 6, /* UINT */ + YYSYMBOL_FLOAT = 7, /* FLOAT */ + YYSYMBOL_BVEC2 = 8, /* BVEC2 */ + YYSYMBOL_BVEC3 = 9, /* BVEC3 */ + YYSYMBOL_BVEC4 = 10, /* BVEC4 */ + YYSYMBOL_IVEC2 = 11, /* IVEC2 */ + YYSYMBOL_IVEC3 = 12, /* IVEC3 */ + YYSYMBOL_IVEC4 = 13, /* IVEC4 */ + YYSYMBOL_UVEC2 = 14, /* UVEC2 */ + YYSYMBOL_UVEC3 = 15, /* UVEC3 */ + YYSYMBOL_UVEC4 = 16, /* UVEC4 */ + YYSYMBOL_VEC2 = 17, /* VEC2 */ + YYSYMBOL_VEC3 = 18, /* VEC3 */ + YYSYMBOL_VEC4 = 19, /* VEC4 */ + YYSYMBOL_MAT2 = 20, /* MAT2 */ + YYSYMBOL_MAT3 = 21, /* MAT3 */ + YYSYMBOL_MAT4 = 22, /* MAT4 */ + YYSYMBOL_MAT2X2 = 23, /* MAT2X2 */ + YYSYMBOL_MAT2X3 = 24, /* MAT2X3 */ + YYSYMBOL_MAT2X4 = 25, /* MAT2X4 */ + YYSYMBOL_MAT3X2 = 26, /* MAT3X2 */ + YYSYMBOL_MAT3X3 = 27, /* MAT3X3 */ + YYSYMBOL_MAT3X4 = 28, /* MAT3X4 */ + YYSYMBOL_MAT4X2 = 29, /* MAT4X2 */ + YYSYMBOL_MAT4X3 = 30, /* MAT4X3 */ + YYSYMBOL_MAT4X4 = 31, /* MAT4X4 */ + YYSYMBOL_SAMPLER2D = 32, /* SAMPLER2D */ + YYSYMBOL_SAMPLER3D = 33, /* SAMPLER3D */ + YYSYMBOL_SAMPLERCUBE = 34, /* SAMPLERCUBE */ + YYSYMBOL_SAMPLER2DSHADOW = 35, /* SAMPLER2DSHADOW */ + YYSYMBOL_SAMPLERCUBESHADOW = 36, /* SAMPLERCUBESHADOW */ + YYSYMBOL_SAMPLER2DARRAY = 37, /* SAMPLER2DARRAY */ + YYSYMBOL_SAMPLER2DARRAYSHADOW = 38, /* SAMPLER2DARRAYSHADOW */ + YYSYMBOL_ISAMPLER2D = 39, /* ISAMPLER2D */ + YYSYMBOL_ISAMPLER3D = 40, /* ISAMPLER3D */ + YYSYMBOL_ISAMPLERCUBE = 41, /* ISAMPLERCUBE */ + YYSYMBOL_ISAMPLER2DARRAY = 42, /* ISAMPLER2DARRAY */ + YYSYMBOL_USAMPLER2D = 43, /* USAMPLER2D */ + YYSYMBOL_USAMPLER3D = 44, /* USAMPLER3D */ + YYSYMBOL_USAMPLERCUBE = 45, /* USAMPLERCUBE */ + YYSYMBOL_USAMPLER2DARRAY = 46, /* USAMPLER2DARRAY */ + YYSYMBOL_SAMPLER = 47, /* SAMPLER */ + YYSYMBOL_SAMPLERSHADOW = 48, /* SAMPLERSHADOW */ + YYSYMBOL_TEXTURE2D = 49, /* TEXTURE2D */ + YYSYMBOL_TEXTURE3D = 50, /* TEXTURE3D */ + YYSYMBOL_TEXTURECUBE = 51, /* TEXTURECUBE */ + YYSYMBOL_TEXTURE2DARRAY = 52, /* TEXTURE2DARRAY */ + YYSYMBOL_ITEXTURE2D = 53, /* ITEXTURE2D */ + YYSYMBOL_ITEXTURE3D = 54, /* ITEXTURE3D */ + YYSYMBOL_ITEXTURECUBE = 55, /* ITEXTURECUBE */ + YYSYMBOL_ITEXTURE2DARRAY = 56, /* ITEXTURE2DARRAY */ + YYSYMBOL_UTEXTURE2D = 57, /* UTEXTURE2D */ + YYSYMBOL_UTEXTURE3D = 58, /* UTEXTURE3D */ + YYSYMBOL_UTEXTURECUBE = 59, /* UTEXTURECUBE */ + YYSYMBOL_UTEXTURE2DARRAY = 60, /* UTEXTURE2DARRAY */ + YYSYMBOL_ATTRIBUTE = 61, /* ATTRIBUTE */ + YYSYMBOL_VARYING = 62, /* VARYING */ + YYSYMBOL_FLOAT16_T = 63, /* FLOAT16_T */ + YYSYMBOL_FLOAT32_T = 64, /* FLOAT32_T */ + YYSYMBOL_DOUBLE = 65, /* DOUBLE */ + YYSYMBOL_FLOAT64_T = 66, /* FLOAT64_T */ + YYSYMBOL_INT64_T = 67, /* INT64_T */ + YYSYMBOL_UINT64_T = 68, /* UINT64_T */ + YYSYMBOL_INT32_T = 69, /* INT32_T */ + YYSYMBOL_UINT32_T = 70, /* UINT32_T */ + YYSYMBOL_INT16_T = 71, /* INT16_T */ + YYSYMBOL_UINT16_T = 72, /* UINT16_T */ + YYSYMBOL_INT8_T = 73, /* INT8_T */ + YYSYMBOL_UINT8_T = 74, /* UINT8_T */ + YYSYMBOL_I64VEC2 = 75, /* I64VEC2 */ + YYSYMBOL_I64VEC3 = 76, /* I64VEC3 */ + YYSYMBOL_I64VEC4 = 77, /* I64VEC4 */ + YYSYMBOL_U64VEC2 = 78, /* U64VEC2 */ + YYSYMBOL_U64VEC3 = 79, /* U64VEC3 */ + YYSYMBOL_U64VEC4 = 80, /* U64VEC4 */ + YYSYMBOL_I32VEC2 = 81, /* I32VEC2 */ + YYSYMBOL_I32VEC3 = 82, /* I32VEC3 */ + YYSYMBOL_I32VEC4 = 83, /* I32VEC4 */ + YYSYMBOL_U32VEC2 = 84, /* U32VEC2 */ + YYSYMBOL_U32VEC3 = 85, /* U32VEC3 */ + YYSYMBOL_U32VEC4 = 86, /* U32VEC4 */ + YYSYMBOL_I16VEC2 = 87, /* I16VEC2 */ + YYSYMBOL_I16VEC3 = 88, /* I16VEC3 */ + YYSYMBOL_I16VEC4 = 89, /* I16VEC4 */ + YYSYMBOL_U16VEC2 = 90, /* U16VEC2 */ + YYSYMBOL_U16VEC3 = 91, /* U16VEC3 */ + YYSYMBOL_U16VEC4 = 92, /* U16VEC4 */ + YYSYMBOL_I8VEC2 = 93, /* I8VEC2 */ + YYSYMBOL_I8VEC3 = 94, /* I8VEC3 */ + YYSYMBOL_I8VEC4 = 95, /* I8VEC4 */ + YYSYMBOL_U8VEC2 = 96, /* U8VEC2 */ + YYSYMBOL_U8VEC3 = 97, /* U8VEC3 */ + YYSYMBOL_U8VEC4 = 98, /* U8VEC4 */ + YYSYMBOL_DVEC2 = 99, /* DVEC2 */ + YYSYMBOL_DVEC3 = 100, /* DVEC3 */ + YYSYMBOL_DVEC4 = 101, /* DVEC4 */ + YYSYMBOL_DMAT2 = 102, /* DMAT2 */ + YYSYMBOL_DMAT3 = 103, /* DMAT3 */ + YYSYMBOL_DMAT4 = 104, /* DMAT4 */ + YYSYMBOL_F16VEC2 = 105, /* F16VEC2 */ + YYSYMBOL_F16VEC3 = 106, /* F16VEC3 */ + YYSYMBOL_F16VEC4 = 107, /* F16VEC4 */ + YYSYMBOL_F16MAT2 = 108, /* F16MAT2 */ + YYSYMBOL_F16MAT3 = 109, /* F16MAT3 */ + YYSYMBOL_F16MAT4 = 110, /* F16MAT4 */ + YYSYMBOL_F32VEC2 = 111, /* F32VEC2 */ + YYSYMBOL_F32VEC3 = 112, /* F32VEC3 */ + YYSYMBOL_F32VEC4 = 113, /* F32VEC4 */ + YYSYMBOL_F32MAT2 = 114, /* F32MAT2 */ + YYSYMBOL_F32MAT3 = 115, /* F32MAT3 */ + YYSYMBOL_F32MAT4 = 116, /* F32MAT4 */ + YYSYMBOL_F64VEC2 = 117, /* F64VEC2 */ + YYSYMBOL_F64VEC3 = 118, /* F64VEC3 */ + YYSYMBOL_F64VEC4 = 119, /* F64VEC4 */ + YYSYMBOL_F64MAT2 = 120, /* F64MAT2 */ + YYSYMBOL_F64MAT3 = 121, /* F64MAT3 */ + YYSYMBOL_F64MAT4 = 122, /* F64MAT4 */ + YYSYMBOL_DMAT2X2 = 123, /* DMAT2X2 */ + YYSYMBOL_DMAT2X3 = 124, /* DMAT2X3 */ + YYSYMBOL_DMAT2X4 = 125, /* DMAT2X4 */ + YYSYMBOL_DMAT3X2 = 126, /* DMAT3X2 */ + YYSYMBOL_DMAT3X3 = 127, /* DMAT3X3 */ + YYSYMBOL_DMAT3X4 = 128, /* DMAT3X4 */ + YYSYMBOL_DMAT4X2 = 129, /* DMAT4X2 */ + YYSYMBOL_DMAT4X3 = 130, /* DMAT4X3 */ + YYSYMBOL_DMAT4X4 = 131, /* DMAT4X4 */ + YYSYMBOL_F16MAT2X2 = 132, /* F16MAT2X2 */ + YYSYMBOL_F16MAT2X3 = 133, /* F16MAT2X3 */ + YYSYMBOL_F16MAT2X4 = 134, /* F16MAT2X4 */ + YYSYMBOL_F16MAT3X2 = 135, /* F16MAT3X2 */ + YYSYMBOL_F16MAT3X3 = 136, /* F16MAT3X3 */ + YYSYMBOL_F16MAT3X4 = 137, /* F16MAT3X4 */ + YYSYMBOL_F16MAT4X2 = 138, /* F16MAT4X2 */ + YYSYMBOL_F16MAT4X3 = 139, /* F16MAT4X3 */ + YYSYMBOL_F16MAT4X4 = 140, /* F16MAT4X4 */ + YYSYMBOL_F32MAT2X2 = 141, /* F32MAT2X2 */ + YYSYMBOL_F32MAT2X3 = 142, /* F32MAT2X3 */ + YYSYMBOL_F32MAT2X4 = 143, /* F32MAT2X4 */ + YYSYMBOL_F32MAT3X2 = 144, /* F32MAT3X2 */ + YYSYMBOL_F32MAT3X3 = 145, /* F32MAT3X3 */ + YYSYMBOL_F32MAT3X4 = 146, /* F32MAT3X4 */ + YYSYMBOL_F32MAT4X2 = 147, /* F32MAT4X2 */ + YYSYMBOL_F32MAT4X3 = 148, /* F32MAT4X3 */ + YYSYMBOL_F32MAT4X4 = 149, /* F32MAT4X4 */ + YYSYMBOL_F64MAT2X2 = 150, /* F64MAT2X2 */ + YYSYMBOL_F64MAT2X3 = 151, /* F64MAT2X3 */ + YYSYMBOL_F64MAT2X4 = 152, /* F64MAT2X4 */ + YYSYMBOL_F64MAT3X2 = 153, /* F64MAT3X2 */ + YYSYMBOL_F64MAT3X3 = 154, /* F64MAT3X3 */ + YYSYMBOL_F64MAT3X4 = 155, /* F64MAT3X4 */ + YYSYMBOL_F64MAT4X2 = 156, /* F64MAT4X2 */ + YYSYMBOL_F64MAT4X3 = 157, /* F64MAT4X3 */ + YYSYMBOL_F64MAT4X4 = 158, /* F64MAT4X4 */ + YYSYMBOL_ATOMIC_UINT = 159, /* ATOMIC_UINT */ + YYSYMBOL_ACCSTRUCTNV = 160, /* ACCSTRUCTNV */ + YYSYMBOL_ACCSTRUCTEXT = 161, /* ACCSTRUCTEXT */ + YYSYMBOL_RAYQUERYEXT = 162, /* RAYQUERYEXT */ + YYSYMBOL_FCOOPMATNV = 163, /* FCOOPMATNV */ + YYSYMBOL_ICOOPMATNV = 164, /* ICOOPMATNV */ + YYSYMBOL_UCOOPMATNV = 165, /* UCOOPMATNV */ + YYSYMBOL_SAMPLERCUBEARRAY = 166, /* SAMPLERCUBEARRAY */ + YYSYMBOL_SAMPLERCUBEARRAYSHADOW = 167, /* SAMPLERCUBEARRAYSHADOW */ + YYSYMBOL_ISAMPLERCUBEARRAY = 168, /* ISAMPLERCUBEARRAY */ + YYSYMBOL_USAMPLERCUBEARRAY = 169, /* USAMPLERCUBEARRAY */ + YYSYMBOL_SAMPLER1D = 170, /* SAMPLER1D */ + YYSYMBOL_SAMPLER1DARRAY = 171, /* SAMPLER1DARRAY */ + YYSYMBOL_SAMPLER1DARRAYSHADOW = 172, /* SAMPLER1DARRAYSHADOW */ + YYSYMBOL_ISAMPLER1D = 173, /* ISAMPLER1D */ + YYSYMBOL_SAMPLER1DSHADOW = 174, /* SAMPLER1DSHADOW */ + YYSYMBOL_SAMPLER2DRECT = 175, /* SAMPLER2DRECT */ + YYSYMBOL_SAMPLER2DRECTSHADOW = 176, /* SAMPLER2DRECTSHADOW */ + YYSYMBOL_ISAMPLER2DRECT = 177, /* ISAMPLER2DRECT */ + YYSYMBOL_USAMPLER2DRECT = 178, /* USAMPLER2DRECT */ + YYSYMBOL_SAMPLERBUFFER = 179, /* SAMPLERBUFFER */ + YYSYMBOL_ISAMPLERBUFFER = 180, /* ISAMPLERBUFFER */ + YYSYMBOL_USAMPLERBUFFER = 181, /* USAMPLERBUFFER */ + YYSYMBOL_SAMPLER2DMS = 182, /* SAMPLER2DMS */ + YYSYMBOL_ISAMPLER2DMS = 183, /* ISAMPLER2DMS */ + YYSYMBOL_USAMPLER2DMS = 184, /* USAMPLER2DMS */ + YYSYMBOL_SAMPLER2DMSARRAY = 185, /* SAMPLER2DMSARRAY */ + YYSYMBOL_ISAMPLER2DMSARRAY = 186, /* ISAMPLER2DMSARRAY */ + YYSYMBOL_USAMPLER2DMSARRAY = 187, /* USAMPLER2DMSARRAY */ + YYSYMBOL_SAMPLEREXTERNALOES = 188, /* SAMPLEREXTERNALOES */ + YYSYMBOL_SAMPLEREXTERNAL2DY2YEXT = 189, /* SAMPLEREXTERNAL2DY2YEXT */ + YYSYMBOL_ISAMPLER1DARRAY = 190, /* ISAMPLER1DARRAY */ + YYSYMBOL_USAMPLER1D = 191, /* USAMPLER1D */ + YYSYMBOL_USAMPLER1DARRAY = 192, /* USAMPLER1DARRAY */ + YYSYMBOL_F16SAMPLER1D = 193, /* F16SAMPLER1D */ + YYSYMBOL_F16SAMPLER2D = 194, /* F16SAMPLER2D */ + YYSYMBOL_F16SAMPLER3D = 195, /* F16SAMPLER3D */ + YYSYMBOL_F16SAMPLER2DRECT = 196, /* F16SAMPLER2DRECT */ + YYSYMBOL_F16SAMPLERCUBE = 197, /* F16SAMPLERCUBE */ + YYSYMBOL_F16SAMPLER1DARRAY = 198, /* F16SAMPLER1DARRAY */ + YYSYMBOL_F16SAMPLER2DARRAY = 199, /* F16SAMPLER2DARRAY */ + YYSYMBOL_F16SAMPLERCUBEARRAY = 200, /* F16SAMPLERCUBEARRAY */ + YYSYMBOL_F16SAMPLERBUFFER = 201, /* F16SAMPLERBUFFER */ + YYSYMBOL_F16SAMPLER2DMS = 202, /* F16SAMPLER2DMS */ + YYSYMBOL_F16SAMPLER2DMSARRAY = 203, /* F16SAMPLER2DMSARRAY */ + YYSYMBOL_F16SAMPLER1DSHADOW = 204, /* F16SAMPLER1DSHADOW */ + YYSYMBOL_F16SAMPLER2DSHADOW = 205, /* F16SAMPLER2DSHADOW */ + YYSYMBOL_F16SAMPLER1DARRAYSHADOW = 206, /* F16SAMPLER1DARRAYSHADOW */ + YYSYMBOL_F16SAMPLER2DARRAYSHADOW = 207, /* F16SAMPLER2DARRAYSHADOW */ + YYSYMBOL_F16SAMPLER2DRECTSHADOW = 208, /* F16SAMPLER2DRECTSHADOW */ + YYSYMBOL_F16SAMPLERCUBESHADOW = 209, /* F16SAMPLERCUBESHADOW */ + YYSYMBOL_F16SAMPLERCUBEARRAYSHADOW = 210, /* F16SAMPLERCUBEARRAYSHADOW */ + YYSYMBOL_IMAGE1D = 211, /* IMAGE1D */ + YYSYMBOL_IIMAGE1D = 212, /* IIMAGE1D */ + YYSYMBOL_UIMAGE1D = 213, /* UIMAGE1D */ + YYSYMBOL_IMAGE2D = 214, /* IMAGE2D */ + YYSYMBOL_IIMAGE2D = 215, /* IIMAGE2D */ + YYSYMBOL_UIMAGE2D = 216, /* UIMAGE2D */ + YYSYMBOL_IMAGE3D = 217, /* IMAGE3D */ + YYSYMBOL_IIMAGE3D = 218, /* IIMAGE3D */ + YYSYMBOL_UIMAGE3D = 219, /* UIMAGE3D */ + YYSYMBOL_IMAGE2DRECT = 220, /* IMAGE2DRECT */ + YYSYMBOL_IIMAGE2DRECT = 221, /* IIMAGE2DRECT */ + YYSYMBOL_UIMAGE2DRECT = 222, /* UIMAGE2DRECT */ + YYSYMBOL_IMAGECUBE = 223, /* IMAGECUBE */ + YYSYMBOL_IIMAGECUBE = 224, /* IIMAGECUBE */ + YYSYMBOL_UIMAGECUBE = 225, /* UIMAGECUBE */ + YYSYMBOL_IMAGEBUFFER = 226, /* IMAGEBUFFER */ + YYSYMBOL_IIMAGEBUFFER = 227, /* IIMAGEBUFFER */ + YYSYMBOL_UIMAGEBUFFER = 228, /* UIMAGEBUFFER */ + YYSYMBOL_IMAGE1DARRAY = 229, /* IMAGE1DARRAY */ + YYSYMBOL_IIMAGE1DARRAY = 230, /* IIMAGE1DARRAY */ + YYSYMBOL_UIMAGE1DARRAY = 231, /* UIMAGE1DARRAY */ + YYSYMBOL_IMAGE2DARRAY = 232, /* IMAGE2DARRAY */ + YYSYMBOL_IIMAGE2DARRAY = 233, /* IIMAGE2DARRAY */ + YYSYMBOL_UIMAGE2DARRAY = 234, /* UIMAGE2DARRAY */ + YYSYMBOL_IMAGECUBEARRAY = 235, /* IMAGECUBEARRAY */ + YYSYMBOL_IIMAGECUBEARRAY = 236, /* IIMAGECUBEARRAY */ + YYSYMBOL_UIMAGECUBEARRAY = 237, /* UIMAGECUBEARRAY */ + YYSYMBOL_IMAGE2DMS = 238, /* IMAGE2DMS */ + YYSYMBOL_IIMAGE2DMS = 239, /* IIMAGE2DMS */ + YYSYMBOL_UIMAGE2DMS = 240, /* UIMAGE2DMS */ + YYSYMBOL_IMAGE2DMSARRAY = 241, /* IMAGE2DMSARRAY */ + YYSYMBOL_IIMAGE2DMSARRAY = 242, /* IIMAGE2DMSARRAY */ + YYSYMBOL_UIMAGE2DMSARRAY = 243, /* UIMAGE2DMSARRAY */ + YYSYMBOL_F16IMAGE1D = 244, /* F16IMAGE1D */ + YYSYMBOL_F16IMAGE2D = 245, /* F16IMAGE2D */ + YYSYMBOL_F16IMAGE3D = 246, /* F16IMAGE3D */ + YYSYMBOL_F16IMAGE2DRECT = 247, /* F16IMAGE2DRECT */ + YYSYMBOL_F16IMAGECUBE = 248, /* F16IMAGECUBE */ + YYSYMBOL_F16IMAGE1DARRAY = 249, /* F16IMAGE1DARRAY */ + YYSYMBOL_F16IMAGE2DARRAY = 250, /* F16IMAGE2DARRAY */ + YYSYMBOL_F16IMAGECUBEARRAY = 251, /* F16IMAGECUBEARRAY */ + YYSYMBOL_F16IMAGEBUFFER = 252, /* F16IMAGEBUFFER */ + YYSYMBOL_F16IMAGE2DMS = 253, /* F16IMAGE2DMS */ + YYSYMBOL_F16IMAGE2DMSARRAY = 254, /* F16IMAGE2DMSARRAY */ + YYSYMBOL_I64IMAGE1D = 255, /* I64IMAGE1D */ + YYSYMBOL_U64IMAGE1D = 256, /* U64IMAGE1D */ + YYSYMBOL_I64IMAGE2D = 257, /* I64IMAGE2D */ + YYSYMBOL_U64IMAGE2D = 258, /* U64IMAGE2D */ + YYSYMBOL_I64IMAGE3D = 259, /* I64IMAGE3D */ + YYSYMBOL_U64IMAGE3D = 260, /* U64IMAGE3D */ + YYSYMBOL_I64IMAGE2DRECT = 261, /* I64IMAGE2DRECT */ + YYSYMBOL_U64IMAGE2DRECT = 262, /* U64IMAGE2DRECT */ + YYSYMBOL_I64IMAGECUBE = 263, /* I64IMAGECUBE */ + YYSYMBOL_U64IMAGECUBE = 264, /* U64IMAGECUBE */ + YYSYMBOL_I64IMAGEBUFFER = 265, /* I64IMAGEBUFFER */ + YYSYMBOL_U64IMAGEBUFFER = 266, /* U64IMAGEBUFFER */ + YYSYMBOL_I64IMAGE1DARRAY = 267, /* I64IMAGE1DARRAY */ + YYSYMBOL_U64IMAGE1DARRAY = 268, /* U64IMAGE1DARRAY */ + YYSYMBOL_I64IMAGE2DARRAY = 269, /* I64IMAGE2DARRAY */ + YYSYMBOL_U64IMAGE2DARRAY = 270, /* U64IMAGE2DARRAY */ + YYSYMBOL_I64IMAGECUBEARRAY = 271, /* I64IMAGECUBEARRAY */ + YYSYMBOL_U64IMAGECUBEARRAY = 272, /* U64IMAGECUBEARRAY */ + YYSYMBOL_I64IMAGE2DMS = 273, /* I64IMAGE2DMS */ + YYSYMBOL_U64IMAGE2DMS = 274, /* U64IMAGE2DMS */ + YYSYMBOL_I64IMAGE2DMSARRAY = 275, /* I64IMAGE2DMSARRAY */ + YYSYMBOL_U64IMAGE2DMSARRAY = 276, /* U64IMAGE2DMSARRAY */ + YYSYMBOL_TEXTURECUBEARRAY = 277, /* TEXTURECUBEARRAY */ + YYSYMBOL_ITEXTURECUBEARRAY = 278, /* ITEXTURECUBEARRAY */ + YYSYMBOL_UTEXTURECUBEARRAY = 279, /* UTEXTURECUBEARRAY */ + YYSYMBOL_TEXTURE1D = 280, /* TEXTURE1D */ + YYSYMBOL_ITEXTURE1D = 281, /* ITEXTURE1D */ + YYSYMBOL_UTEXTURE1D = 282, /* UTEXTURE1D */ + YYSYMBOL_TEXTURE1DARRAY = 283, /* TEXTURE1DARRAY */ + YYSYMBOL_ITEXTURE1DARRAY = 284, /* ITEXTURE1DARRAY */ + YYSYMBOL_UTEXTURE1DARRAY = 285, /* UTEXTURE1DARRAY */ + YYSYMBOL_TEXTURE2DRECT = 286, /* TEXTURE2DRECT */ + YYSYMBOL_ITEXTURE2DRECT = 287, /* ITEXTURE2DRECT */ + YYSYMBOL_UTEXTURE2DRECT = 288, /* UTEXTURE2DRECT */ + YYSYMBOL_TEXTUREBUFFER = 289, /* TEXTUREBUFFER */ + YYSYMBOL_ITEXTUREBUFFER = 290, /* ITEXTUREBUFFER */ + YYSYMBOL_UTEXTUREBUFFER = 291, /* UTEXTUREBUFFER */ + YYSYMBOL_TEXTURE2DMS = 292, /* TEXTURE2DMS */ + YYSYMBOL_ITEXTURE2DMS = 293, /* ITEXTURE2DMS */ + YYSYMBOL_UTEXTURE2DMS = 294, /* UTEXTURE2DMS */ + YYSYMBOL_TEXTURE2DMSARRAY = 295, /* TEXTURE2DMSARRAY */ + YYSYMBOL_ITEXTURE2DMSARRAY = 296, /* ITEXTURE2DMSARRAY */ + YYSYMBOL_UTEXTURE2DMSARRAY = 297, /* UTEXTURE2DMSARRAY */ + YYSYMBOL_F16TEXTURE1D = 298, /* F16TEXTURE1D */ + YYSYMBOL_F16TEXTURE2D = 299, /* F16TEXTURE2D */ + YYSYMBOL_F16TEXTURE3D = 300, /* F16TEXTURE3D */ + YYSYMBOL_F16TEXTURE2DRECT = 301, /* F16TEXTURE2DRECT */ + YYSYMBOL_F16TEXTURECUBE = 302, /* F16TEXTURECUBE */ + YYSYMBOL_F16TEXTURE1DARRAY = 303, /* F16TEXTURE1DARRAY */ + YYSYMBOL_F16TEXTURE2DARRAY = 304, /* F16TEXTURE2DARRAY */ + YYSYMBOL_F16TEXTURECUBEARRAY = 305, /* F16TEXTURECUBEARRAY */ + YYSYMBOL_F16TEXTUREBUFFER = 306, /* F16TEXTUREBUFFER */ + YYSYMBOL_F16TEXTURE2DMS = 307, /* F16TEXTURE2DMS */ + YYSYMBOL_F16TEXTURE2DMSARRAY = 308, /* F16TEXTURE2DMSARRAY */ + YYSYMBOL_SUBPASSINPUT = 309, /* SUBPASSINPUT */ + YYSYMBOL_SUBPASSINPUTMS = 310, /* SUBPASSINPUTMS */ + YYSYMBOL_ISUBPASSINPUT = 311, /* ISUBPASSINPUT */ + YYSYMBOL_ISUBPASSINPUTMS = 312, /* ISUBPASSINPUTMS */ + YYSYMBOL_USUBPASSINPUT = 313, /* USUBPASSINPUT */ + YYSYMBOL_USUBPASSINPUTMS = 314, /* USUBPASSINPUTMS */ + YYSYMBOL_F16SUBPASSINPUT = 315, /* F16SUBPASSINPUT */ + YYSYMBOL_F16SUBPASSINPUTMS = 316, /* F16SUBPASSINPUTMS */ + YYSYMBOL_SPIRV_INSTRUCTION = 317, /* SPIRV_INSTRUCTION */ + YYSYMBOL_SPIRV_EXECUTION_MODE = 318, /* SPIRV_EXECUTION_MODE */ + YYSYMBOL_SPIRV_EXECUTION_MODE_ID = 319, /* SPIRV_EXECUTION_MODE_ID */ + YYSYMBOL_SPIRV_DECORATE = 320, /* SPIRV_DECORATE */ + YYSYMBOL_SPIRV_DECORATE_ID = 321, /* SPIRV_DECORATE_ID */ + YYSYMBOL_SPIRV_DECORATE_STRING = 322, /* SPIRV_DECORATE_STRING */ + YYSYMBOL_SPIRV_TYPE = 323, /* SPIRV_TYPE */ + YYSYMBOL_SPIRV_STORAGE_CLASS = 324, /* SPIRV_STORAGE_CLASS */ + YYSYMBOL_SPIRV_BY_REFERENCE = 325, /* SPIRV_BY_REFERENCE */ + YYSYMBOL_SPIRV_LITERAL = 326, /* SPIRV_LITERAL */ + YYSYMBOL_LEFT_OP = 327, /* LEFT_OP */ + YYSYMBOL_RIGHT_OP = 328, /* RIGHT_OP */ + YYSYMBOL_INC_OP = 329, /* INC_OP */ + YYSYMBOL_DEC_OP = 330, /* DEC_OP */ + YYSYMBOL_LE_OP = 331, /* LE_OP */ + YYSYMBOL_GE_OP = 332, /* GE_OP */ + YYSYMBOL_EQ_OP = 333, /* EQ_OP */ + YYSYMBOL_NE_OP = 334, /* NE_OP */ + YYSYMBOL_AND_OP = 335, /* AND_OP */ + YYSYMBOL_OR_OP = 336, /* OR_OP */ + YYSYMBOL_XOR_OP = 337, /* XOR_OP */ + YYSYMBOL_MUL_ASSIGN = 338, /* MUL_ASSIGN */ + YYSYMBOL_DIV_ASSIGN = 339, /* DIV_ASSIGN */ + YYSYMBOL_ADD_ASSIGN = 340, /* ADD_ASSIGN */ + YYSYMBOL_MOD_ASSIGN = 341, /* MOD_ASSIGN */ + YYSYMBOL_LEFT_ASSIGN = 342, /* LEFT_ASSIGN */ + YYSYMBOL_RIGHT_ASSIGN = 343, /* RIGHT_ASSIGN */ + YYSYMBOL_AND_ASSIGN = 344, /* AND_ASSIGN */ + YYSYMBOL_XOR_ASSIGN = 345, /* XOR_ASSIGN */ + YYSYMBOL_OR_ASSIGN = 346, /* OR_ASSIGN */ + YYSYMBOL_SUB_ASSIGN = 347, /* SUB_ASSIGN */ + YYSYMBOL_STRING_LITERAL = 348, /* STRING_LITERAL */ + YYSYMBOL_LEFT_PAREN = 349, /* LEFT_PAREN */ + YYSYMBOL_RIGHT_PAREN = 350, /* RIGHT_PAREN */ + YYSYMBOL_LEFT_BRACKET = 351, /* LEFT_BRACKET */ + YYSYMBOL_RIGHT_BRACKET = 352, /* RIGHT_BRACKET */ + YYSYMBOL_LEFT_BRACE = 353, /* LEFT_BRACE */ + YYSYMBOL_RIGHT_BRACE = 354, /* RIGHT_BRACE */ + YYSYMBOL_DOT = 355, /* DOT */ + YYSYMBOL_COMMA = 356, /* COMMA */ + YYSYMBOL_COLON = 357, /* COLON */ + YYSYMBOL_EQUAL = 358, /* EQUAL */ + YYSYMBOL_SEMICOLON = 359, /* SEMICOLON */ + YYSYMBOL_BANG = 360, /* BANG */ + YYSYMBOL_DASH = 361, /* DASH */ + YYSYMBOL_TILDE = 362, /* TILDE */ + YYSYMBOL_PLUS = 363, /* PLUS */ + YYSYMBOL_STAR = 364, /* STAR */ + YYSYMBOL_SLASH = 365, /* SLASH */ + YYSYMBOL_PERCENT = 366, /* PERCENT */ + YYSYMBOL_LEFT_ANGLE = 367, /* LEFT_ANGLE */ + YYSYMBOL_RIGHT_ANGLE = 368, /* RIGHT_ANGLE */ + YYSYMBOL_VERTICAL_BAR = 369, /* VERTICAL_BAR */ + YYSYMBOL_CARET = 370, /* CARET */ + YYSYMBOL_AMPERSAND = 371, /* AMPERSAND */ + YYSYMBOL_QUESTION = 372, /* QUESTION */ + YYSYMBOL_INVARIANT = 373, /* INVARIANT */ + YYSYMBOL_HIGH_PRECISION = 374, /* HIGH_PRECISION */ + YYSYMBOL_MEDIUM_PRECISION = 375, /* MEDIUM_PRECISION */ + YYSYMBOL_LOW_PRECISION = 376, /* LOW_PRECISION */ + YYSYMBOL_PRECISION = 377, /* PRECISION */ + YYSYMBOL_PACKED = 378, /* PACKED */ + YYSYMBOL_RESOURCE = 379, /* RESOURCE */ + YYSYMBOL_SUPERP = 380, /* SUPERP */ + YYSYMBOL_FLOATCONSTANT = 381, /* FLOATCONSTANT */ + YYSYMBOL_INTCONSTANT = 382, /* INTCONSTANT */ + YYSYMBOL_UINTCONSTANT = 383, /* UINTCONSTANT */ + YYSYMBOL_BOOLCONSTANT = 384, /* BOOLCONSTANT */ + YYSYMBOL_IDENTIFIER = 385, /* IDENTIFIER */ + YYSYMBOL_TYPE_NAME = 386, /* TYPE_NAME */ + YYSYMBOL_CENTROID = 387, /* CENTROID */ + YYSYMBOL_IN = 388, /* IN */ + YYSYMBOL_OUT = 389, /* OUT */ + YYSYMBOL_INOUT = 390, /* INOUT */ + YYSYMBOL_STRUCT = 391, /* STRUCT */ + YYSYMBOL_VOID = 392, /* VOID */ + YYSYMBOL_WHILE = 393, /* WHILE */ + YYSYMBOL_BREAK = 394, /* BREAK */ + YYSYMBOL_CONTINUE = 395, /* CONTINUE */ + YYSYMBOL_DO = 396, /* DO */ + YYSYMBOL_ELSE = 397, /* ELSE */ + YYSYMBOL_FOR = 398, /* FOR */ + YYSYMBOL_IF = 399, /* IF */ + YYSYMBOL_DISCARD = 400, /* DISCARD */ + YYSYMBOL_RETURN = 401, /* RETURN */ + YYSYMBOL_SWITCH = 402, /* SWITCH */ + YYSYMBOL_CASE = 403, /* CASE */ + YYSYMBOL_DEFAULT = 404, /* DEFAULT */ + YYSYMBOL_TERMINATE_INVOCATION = 405, /* TERMINATE_INVOCATION */ + YYSYMBOL_TERMINATE_RAY = 406, /* TERMINATE_RAY */ + YYSYMBOL_IGNORE_INTERSECTION = 407, /* IGNORE_INTERSECTION */ + YYSYMBOL_UNIFORM = 408, /* UNIFORM */ + YYSYMBOL_SHARED = 409, /* SHARED */ + YYSYMBOL_BUFFER = 410, /* BUFFER */ + YYSYMBOL_FLAT = 411, /* FLAT */ + YYSYMBOL_SMOOTH = 412, /* SMOOTH */ + YYSYMBOL_LAYOUT = 413, /* LAYOUT */ + YYSYMBOL_DOUBLECONSTANT = 414, /* DOUBLECONSTANT */ + YYSYMBOL_INT16CONSTANT = 415, /* INT16CONSTANT */ + YYSYMBOL_UINT16CONSTANT = 416, /* UINT16CONSTANT */ + YYSYMBOL_FLOAT16CONSTANT = 417, /* FLOAT16CONSTANT */ + YYSYMBOL_INT32CONSTANT = 418, /* INT32CONSTANT */ + YYSYMBOL_UINT32CONSTANT = 419, /* UINT32CONSTANT */ + YYSYMBOL_INT64CONSTANT = 420, /* INT64CONSTANT */ + YYSYMBOL_UINT64CONSTANT = 421, /* UINT64CONSTANT */ + YYSYMBOL_SUBROUTINE = 422, /* SUBROUTINE */ + YYSYMBOL_DEMOTE = 423, /* DEMOTE */ + YYSYMBOL_PAYLOADNV = 424, /* PAYLOADNV */ + YYSYMBOL_PAYLOADINNV = 425, /* PAYLOADINNV */ + YYSYMBOL_HITATTRNV = 426, /* HITATTRNV */ + YYSYMBOL_CALLDATANV = 427, /* CALLDATANV */ + YYSYMBOL_CALLDATAINNV = 428, /* CALLDATAINNV */ + YYSYMBOL_PAYLOADEXT = 429, /* PAYLOADEXT */ + YYSYMBOL_PAYLOADINEXT = 430, /* PAYLOADINEXT */ + YYSYMBOL_HITATTREXT = 431, /* HITATTREXT */ + YYSYMBOL_CALLDATAEXT = 432, /* CALLDATAEXT */ + YYSYMBOL_CALLDATAINEXT = 433, /* CALLDATAINEXT */ + YYSYMBOL_PATCH = 434, /* PATCH */ + YYSYMBOL_SAMPLE = 435, /* SAMPLE */ + YYSYMBOL_NONUNIFORM = 436, /* NONUNIFORM */ + YYSYMBOL_COHERENT = 437, /* COHERENT */ + YYSYMBOL_VOLATILE = 438, /* VOLATILE */ + YYSYMBOL_RESTRICT = 439, /* RESTRICT */ + YYSYMBOL_READONLY = 440, /* READONLY */ + YYSYMBOL_WRITEONLY = 441, /* WRITEONLY */ + YYSYMBOL_DEVICECOHERENT = 442, /* DEVICECOHERENT */ + YYSYMBOL_QUEUEFAMILYCOHERENT = 443, /* QUEUEFAMILYCOHERENT */ + YYSYMBOL_WORKGROUPCOHERENT = 444, /* WORKGROUPCOHERENT */ + YYSYMBOL_SUBGROUPCOHERENT = 445, /* SUBGROUPCOHERENT */ + YYSYMBOL_NONPRIVATE = 446, /* NONPRIVATE */ + YYSYMBOL_SHADERCALLCOHERENT = 447, /* SHADERCALLCOHERENT */ + YYSYMBOL_NOPERSPECTIVE = 448, /* NOPERSPECTIVE */ + YYSYMBOL_EXPLICITINTERPAMD = 449, /* EXPLICITINTERPAMD */ + YYSYMBOL_PERVERTEXNV = 450, /* PERVERTEXNV */ + YYSYMBOL_PERPRIMITIVENV = 451, /* PERPRIMITIVENV */ + YYSYMBOL_PERVIEWNV = 452, /* PERVIEWNV */ + YYSYMBOL_PERTASKNV = 453, /* PERTASKNV */ + YYSYMBOL_PRECISE = 454, /* PRECISE */ + YYSYMBOL_YYACCEPT = 455, /* $accept */ + YYSYMBOL_variable_identifier = 456, /* variable_identifier */ + YYSYMBOL_primary_expression = 457, /* primary_expression */ + YYSYMBOL_postfix_expression = 458, /* postfix_expression */ + YYSYMBOL_integer_expression = 459, /* integer_expression */ + YYSYMBOL_function_call = 460, /* function_call */ + YYSYMBOL_function_call_or_method = 461, /* function_call_or_method */ + YYSYMBOL_function_call_generic = 462, /* function_call_generic */ + YYSYMBOL_function_call_header_no_parameters = 463, /* function_call_header_no_parameters */ + YYSYMBOL_function_call_header_with_parameters = 464, /* function_call_header_with_parameters */ + YYSYMBOL_function_call_header = 465, /* function_call_header */ + YYSYMBOL_function_identifier = 466, /* function_identifier */ + YYSYMBOL_unary_expression = 467, /* unary_expression */ + YYSYMBOL_unary_operator = 468, /* unary_operator */ + YYSYMBOL_multiplicative_expression = 469, /* multiplicative_expression */ + YYSYMBOL_additive_expression = 470, /* additive_expression */ + YYSYMBOL_shift_expression = 471, /* shift_expression */ + YYSYMBOL_relational_expression = 472, /* relational_expression */ + YYSYMBOL_equality_expression = 473, /* equality_expression */ + YYSYMBOL_and_expression = 474, /* and_expression */ + YYSYMBOL_exclusive_or_expression = 475, /* exclusive_or_expression */ + YYSYMBOL_inclusive_or_expression = 476, /* inclusive_or_expression */ + YYSYMBOL_logical_and_expression = 477, /* logical_and_expression */ + YYSYMBOL_logical_xor_expression = 478, /* logical_xor_expression */ + YYSYMBOL_logical_or_expression = 479, /* logical_or_expression */ + YYSYMBOL_conditional_expression = 480, /* conditional_expression */ + YYSYMBOL_481_1 = 481, /* $@1 */ + YYSYMBOL_assignment_expression = 482, /* assignment_expression */ + YYSYMBOL_assignment_operator = 483, /* assignment_operator */ + YYSYMBOL_expression = 484, /* expression */ + YYSYMBOL_constant_expression = 485, /* constant_expression */ + YYSYMBOL_declaration = 486, /* declaration */ + YYSYMBOL_block_structure = 487, /* block_structure */ + YYSYMBOL_488_2 = 488, /* $@2 */ + YYSYMBOL_identifier_list = 489, /* identifier_list */ + YYSYMBOL_function_prototype = 490, /* function_prototype */ + YYSYMBOL_function_declarator = 491, /* function_declarator */ + YYSYMBOL_function_header_with_parameters = 492, /* function_header_with_parameters */ + YYSYMBOL_function_header = 493, /* function_header */ + YYSYMBOL_parameter_declarator = 494, /* parameter_declarator */ + YYSYMBOL_parameter_declaration = 495, /* parameter_declaration */ + YYSYMBOL_parameter_type_specifier = 496, /* parameter_type_specifier */ + YYSYMBOL_init_declarator_list = 497, /* init_declarator_list */ + YYSYMBOL_single_declaration = 498, /* single_declaration */ + YYSYMBOL_fully_specified_type = 499, /* fully_specified_type */ + YYSYMBOL_invariant_qualifier = 500, /* invariant_qualifier */ + YYSYMBOL_interpolation_qualifier = 501, /* interpolation_qualifier */ + YYSYMBOL_layout_qualifier = 502, /* layout_qualifier */ + YYSYMBOL_layout_qualifier_id_list = 503, /* layout_qualifier_id_list */ + YYSYMBOL_layout_qualifier_id = 504, /* layout_qualifier_id */ + YYSYMBOL_precise_qualifier = 505, /* precise_qualifier */ + YYSYMBOL_type_qualifier = 506, /* type_qualifier */ + YYSYMBOL_single_type_qualifier = 507, /* single_type_qualifier */ + YYSYMBOL_storage_qualifier = 508, /* storage_qualifier */ + YYSYMBOL_non_uniform_qualifier = 509, /* non_uniform_qualifier */ + YYSYMBOL_type_name_list = 510, /* type_name_list */ + YYSYMBOL_type_specifier = 511, /* type_specifier */ + YYSYMBOL_array_specifier = 512, /* array_specifier */ + YYSYMBOL_type_parameter_specifier_opt = 513, /* type_parameter_specifier_opt */ + YYSYMBOL_type_parameter_specifier = 514, /* type_parameter_specifier */ + YYSYMBOL_type_parameter_specifier_list = 515, /* type_parameter_specifier_list */ + YYSYMBOL_type_specifier_nonarray = 516, /* type_specifier_nonarray */ + YYSYMBOL_precision_qualifier = 517, /* precision_qualifier */ + YYSYMBOL_struct_specifier = 518, /* struct_specifier */ + YYSYMBOL_519_3 = 519, /* $@3 */ + YYSYMBOL_520_4 = 520, /* $@4 */ + YYSYMBOL_struct_declaration_list = 521, /* struct_declaration_list */ + YYSYMBOL_struct_declaration = 522, /* struct_declaration */ + YYSYMBOL_struct_declarator_list = 523, /* struct_declarator_list */ + YYSYMBOL_struct_declarator = 524, /* struct_declarator */ + YYSYMBOL_initializer = 525, /* initializer */ + YYSYMBOL_initializer_list = 526, /* initializer_list */ + YYSYMBOL_declaration_statement = 527, /* declaration_statement */ + YYSYMBOL_statement = 528, /* statement */ + YYSYMBOL_simple_statement = 529, /* simple_statement */ + YYSYMBOL_demote_statement = 530, /* demote_statement */ + YYSYMBOL_compound_statement = 531, /* compound_statement */ + YYSYMBOL_532_5 = 532, /* $@5 */ + YYSYMBOL_533_6 = 533, /* $@6 */ + YYSYMBOL_statement_no_new_scope = 534, /* statement_no_new_scope */ + YYSYMBOL_statement_scoped = 535, /* statement_scoped */ + YYSYMBOL_536_7 = 536, /* $@7 */ + YYSYMBOL_537_8 = 537, /* $@8 */ + YYSYMBOL_compound_statement_no_new_scope = 538, /* compound_statement_no_new_scope */ + YYSYMBOL_statement_list = 539, /* statement_list */ + YYSYMBOL_expression_statement = 540, /* expression_statement */ + YYSYMBOL_selection_statement = 541, /* selection_statement */ + YYSYMBOL_selection_statement_nonattributed = 542, /* selection_statement_nonattributed */ + YYSYMBOL_selection_rest_statement = 543, /* selection_rest_statement */ + YYSYMBOL_condition = 544, /* condition */ + YYSYMBOL_switch_statement = 545, /* switch_statement */ + YYSYMBOL_switch_statement_nonattributed = 546, /* switch_statement_nonattributed */ + YYSYMBOL_547_9 = 547, /* $@9 */ + YYSYMBOL_switch_statement_list = 548, /* switch_statement_list */ + YYSYMBOL_case_label = 549, /* case_label */ + YYSYMBOL_iteration_statement = 550, /* iteration_statement */ + YYSYMBOL_iteration_statement_nonattributed = 551, /* iteration_statement_nonattributed */ + YYSYMBOL_552_10 = 552, /* $@10 */ + YYSYMBOL_553_11 = 553, /* $@11 */ + YYSYMBOL_554_12 = 554, /* $@12 */ + YYSYMBOL_for_init_statement = 555, /* for_init_statement */ + YYSYMBOL_conditionopt = 556, /* conditionopt */ + YYSYMBOL_for_rest_statement = 557, /* for_rest_statement */ + YYSYMBOL_jump_statement = 558, /* jump_statement */ + YYSYMBOL_translation_unit = 559, /* translation_unit */ + YYSYMBOL_external_declaration = 560, /* external_declaration */ + YYSYMBOL_function_definition = 561, /* function_definition */ + YYSYMBOL_562_13 = 562, /* $@13 */ + YYSYMBOL_attribute = 563, /* attribute */ + YYSYMBOL_attribute_list = 564, /* attribute_list */ + YYSYMBOL_single_attribute = 565, /* single_attribute */ + YYSYMBOL_spirv_requirements_list = 566, /* spirv_requirements_list */ + YYSYMBOL_spirv_requirements_parameter = 567, /* spirv_requirements_parameter */ + YYSYMBOL_spirv_extension_list = 568, /* spirv_extension_list */ + YYSYMBOL_spirv_capability_list = 569, /* spirv_capability_list */ + YYSYMBOL_spirv_execution_mode_qualifier = 570, /* spirv_execution_mode_qualifier */ + YYSYMBOL_spirv_execution_mode_parameter_list = 571, /* spirv_execution_mode_parameter_list */ + YYSYMBOL_spirv_execution_mode_parameter = 572, /* spirv_execution_mode_parameter */ + YYSYMBOL_spirv_execution_mode_id_parameter_list = 573, /* spirv_execution_mode_id_parameter_list */ + YYSYMBOL_spirv_storage_class_qualifier = 574, /* spirv_storage_class_qualifier */ + YYSYMBOL_spirv_decorate_qualifier = 575, /* spirv_decorate_qualifier */ + YYSYMBOL_spirv_decorate_parameter_list = 576, /* spirv_decorate_parameter_list */ + YYSYMBOL_spirv_decorate_parameter = 577, /* spirv_decorate_parameter */ + YYSYMBOL_spirv_decorate_id_parameter_list = 578, /* spirv_decorate_id_parameter_list */ + YYSYMBOL_spirv_decorate_string_parameter_list = 579, /* spirv_decorate_string_parameter_list */ + YYSYMBOL_spirv_type_specifier = 580, /* spirv_type_specifier */ + YYSYMBOL_spirv_type_parameter_list = 581, /* spirv_type_parameter_list */ + YYSYMBOL_spirv_type_parameter = 582, /* spirv_type_parameter */ + YYSYMBOL_spirv_instruction_qualifier = 583, /* spirv_instruction_qualifier */ + YYSYMBOL_spirv_instruction_qualifier_list = 584, /* spirv_instruction_qualifier_list */ + YYSYMBOL_spirv_instruction_qualifier_id = 585 /* spirv_instruction_qualifier_id */ }; - -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - +typedef enum yysymbol_kind_t yysymbol_kind_t; -int yyparse (glslang::TParseContext* pParseContext); - -#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ - -/* Copy the second part of user declarations. */ -#line 132 "MachineIndependent/glslang.y" /* yacc.c:358 */ +/* Second part of user prologue. */ +#line 136 "MachineIndependent/glslang.y" /* windows only pragma */ @@ -606,34 +728,82 @@ int yyparse (glslang::TParseContext* pParseContext); extern int yylex(YYSTYPE*, TParseContext&); -#line 610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ +#line 732 "MachineIndependent/glslang_tab.cpp" + #ifdef short # undef short #endif -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; +#else +typedef short yytype_int16; +#endif + +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; #else -typedef unsigned short int yytype_uint16; +typedef short yytype_uint8; #endif -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; #else -typedef short int yytype_int16; +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif #endif #ifndef YYSIZE_T @@ -641,15 +811,28 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned int +# define YYSIZE_T unsigned # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + + +/* Stored state numbers (used for stacks). */ +typedef yytype_int16 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -663,30 +846,20 @@ typedef short int yytype_int16; # endif #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif #ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define YY_ATTRIBUTE_PURE +# endif #endif #ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) # else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) +# define YY_ATTRIBUTE_UNUSED # endif #endif @@ -697,13 +870,13 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -716,8 +889,22 @@ typedef short int yytype_int16; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + -#if ! defined yyoverflow || YYERROR_VERBOSE +#define YY_ASSERT(E) ((void) (0 && (E))) + +#if 1 /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -782,8 +969,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - +#endif /* 1 */ #if (! defined yyoverflow \ && (! defined __cplusplus \ @@ -792,17 +978,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss_alloc; + yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -815,11 +1001,11 @@ union yyalloc # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYSIZE_T yynewbytes; \ + YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) @@ -831,12 +1017,12 @@ union yyalloc # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYSIZE_T yyi; \ + YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -846,30 +1032,33 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 386 +#define YYFINAL 442 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 9369 +#define YYLAST 12452 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 411 +#define YYNTOKENS 455 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 111 +#define YYNNTS 131 /* YYNRULES -- Number of rules. */ -#define YYNRULES 582 +#define YYNRULES 683 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 727 +#define YYNSTATES 929 -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 665 +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 709 -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ -static const yytype_uint16 yytranslate[] = + as returned by yylex. */ +static const yytype_int16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -937,109 +1126,131 @@ static const yytype_uint16 yytranslate[] = 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410 + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = +static const yytype_int16 yyrline[] = { - 0, 352, 352, 358, 361, 366, 369, 372, 376, 380, - 384, 388, 392, 396, 400, 404, 408, 416, 419, 422, - 425, 428, 433, 441, 448, 455, 461, 465, 472, 475, - 481, 488, 498, 506, 511, 539, 548, 554, 558, 562, - 582, 583, 584, 585, 591, 592, 597, 602, 611, 612, - 617, 625, 626, 632, 641, 642, 647, 652, 657, 665, - 666, 675, 687, 688, 697, 698, 707, 708, 717, 718, - 726, 727, 735, 736, 744, 745, 745, 763, 764, 780, - 784, 788, 792, 797, 801, 805, 809, 813, 817, 821, - 828, 831, 842, 849, 854, 859, 866, 870, 874, 878, - 883, 888, 897, 897, 908, 912, 919, 926, 929, 936, - 944, 964, 987, 1002, 1027, 1038, 1048, 1058, 1068, 1077, - 1080, 1084, 1088, 1093, 1101, 1108, 1113, 1118, 1123, 1132, - 1142, 1169, 1178, 1185, 1193, 1200, 1207, 1215, 1225, 1232, - 1243, 1249, 1252, 1259, 1263, 1267, 1276, 1286, 1289, 1300, - 1303, 1306, 1310, 1314, 1319, 1323, 1330, 1334, 1339, 1345, - 1351, 1358, 1363, 1371, 1377, 1389, 1403, 1409, 1414, 1422, - 1430, 1438, 1446, 1453, 1457, 1462, 1467, 1472, 1477, 1482, - 1486, 1490, 1494, 1498, 1504, 1515, 1522, 1525, 1534, 1539, - 1549, 1554, 1562, 1566, 1576, 1579, 1585, 1591, 1598, 1608, - 1612, 1616, 1620, 1625, 1629, 1634, 1639, 1644, 1649, 1654, - 1659, 1664, 1669, 1674, 1680, 1686, 1692, 1697, 1702, 1707, - 1712, 1717, 1722, 1727, 1732, 1737, 1742, 1747, 1753, 1758, - 1763, 1768, 1773, 1778, 1783, 1788, 1793, 1798, 1803, 1808, - 1813, 1819, 1825, 1831, 1837, 1843, 1849, 1855, 1861, 1867, - 1873, 1879, 1885, 1891, 1897, 1903, 1909, 1915, 1921, 1927, - 1933, 1939, 1945, 1951, 1957, 1963, 1969, 1975, 1981, 1987, - 1993, 1999, 2005, 2011, 2017, 2023, 2029, 2035, 2041, 2047, - 2053, 2059, 2065, 2071, 2077, 2083, 2089, 2095, 2101, 2107, - 2113, 2119, 2125, 2131, 2137, 2143, 2149, 2155, 2161, 2167, - 2173, 2179, 2185, 2191, 2197, 2203, 2209, 2215, 2221, 2227, - 2233, 2239, 2245, 2251, 2257, 2263, 2269, 2275, 2281, 2287, - 2293, 2299, 2305, 2311, 2317, 2321, 2326, 2332, 2337, 2342, - 2347, 2352, 2357, 2362, 2368, 2373, 2378, 2383, 2388, 2393, - 2399, 2405, 2411, 2417, 2423, 2429, 2435, 2441, 2447, 2453, - 2459, 2465, 2471, 2477, 2482, 2487, 2492, 2497, 2502, 2507, - 2513, 2518, 2523, 2528, 2533, 2538, 2543, 2548, 2554, 2559, - 2564, 2569, 2574, 2579, 2584, 2589, 2594, 2599, 2604, 2609, - 2614, 2619, 2624, 2630, 2635, 2640, 2646, 2652, 2657, 2662, - 2667, 2673, 2678, 2683, 2688, 2694, 2699, 2704, 2709, 2715, - 2720, 2725, 2730, 2736, 2742, 2748, 2754, 2759, 2765, 2771, - 2777, 2782, 2787, 2792, 2797, 2802, 2808, 2813, 2818, 2823, - 2829, 2834, 2839, 2844, 2850, 2855, 2860, 2865, 2871, 2876, - 2881, 2886, 2892, 2897, 2902, 2907, 2913, 2918, 2923, 2928, - 2934, 2939, 2944, 2949, 2955, 2960, 2965, 2970, 2976, 2981, - 2986, 2991, 2997, 3002, 3007, 3012, 3018, 3023, 3028, 3033, - 3039, 3044, 3049, 3054, 3060, 3065, 3070, 3075, 3081, 3086, - 3091, 3096, 3102, 3107, 3112, 3118, 3124, 3130, 3136, 3143, - 3150, 3156, 3162, 3168, 3174, 3180, 3186, 3193, 3198, 3214, - 3219, 3224, 3232, 3232, 3243, 3243, 3253, 3256, 3269, 3291, - 3318, 3322, 3328, 3333, 3344, 3348, 3354, 3365, 3368, 3375, - 3379, 3380, 3386, 3387, 3388, 3389, 3390, 3391, 3392, 3394, - 3400, 3409, 3410, 3414, 3410, 3426, 3427, 3431, 3431, 3438, - 3438, 3452, 3455, 3463, 3471, 3482, 3483, 3487, 3491, 3498, - 3505, 3509, 3517, 3521, 3534, 3538, 3545, 3545, 3565, 3568, - 3574, 3586, 3598, 3602, 3609, 3609, 3624, 3624, 3640, 3640, - 3661, 3664, 3670, 3673, 3679, 3683, 3690, 3695, 3700, 3707, - 3710, 3719, 3723, 3732, 3735, 3739, 3748, 3748, 3771, 3777, - 3780, 3785, 3788 + 0, 392, 392, 398, 401, 406, 409, 412, 416, 420, + 423, 427, 431, 435, 439, 443, 447, 453, 461, 464, + 467, 470, 473, 478, 486, 493, 500, 506, 510, 517, + 520, 526, 533, 543, 551, 556, 584, 593, 599, 603, + 607, 627, 628, 629, 630, 636, 637, 642, 647, 656, + 657, 662, 670, 671, 677, 686, 687, 692, 697, 702, + 710, 711, 720, 732, 733, 742, 743, 752, 753, 762, + 763, 771, 772, 780, 781, 789, 790, 790, 808, 809, + 825, 829, 833, 837, 842, 846, 850, 854, 858, 862, + 866, 873, 876, 887, 894, 900, 907, 913, 918, 925, + 929, 933, 937, 942, 947, 956, 956, 967, 971, 978, + 982, 988, 994, 1004, 1007, 1014, 1022, 1042, 1065, 1080, + 1105, 1116, 1126, 1136, 1146, 1155, 1158, 1162, 1166, 1171, + 1179, 1186, 1191, 1196, 1201, 1210, 1220, 1247, 1256, 1263, + 1271, 1278, 1285, 1293, 1303, 1310, 1321, 1327, 1330, 1337, + 1341, 1345, 1354, 1364, 1367, 1378, 1381, 1384, 1388, 1392, + 1397, 1401, 1404, 1409, 1413, 1418, 1427, 1431, 1436, 1442, + 1448, 1455, 1460, 1468, 1474, 1486, 1500, 1506, 1511, 1519, + 1527, 1535, 1543, 1551, 1559, 1567, 1575, 1582, 1589, 1593, + 1598, 1603, 1608, 1613, 1618, 1623, 1627, 1631, 1635, 1639, + 1645, 1656, 1663, 1666, 1675, 1680, 1690, 1695, 1703, 1707, + 1717, 1720, 1726, 1732, 1739, 1749, 1753, 1757, 1761, 1766, + 1770, 1775, 1780, 1785, 1790, 1795, 1800, 1805, 1810, 1815, + 1821, 1827, 1833, 1838, 1843, 1848, 1853, 1858, 1863, 1868, + 1873, 1878, 1883, 1888, 1894, 1901, 1906, 1911, 1916, 1921, + 1926, 1931, 1936, 1941, 1946, 1951, 1956, 1964, 1972, 1980, + 1986, 1992, 1998, 2004, 2010, 2016, 2022, 2028, 2034, 2040, + 2046, 2052, 2058, 2064, 2070, 2076, 2082, 2088, 2094, 2100, + 2106, 2112, 2118, 2124, 2130, 2136, 2142, 2148, 2154, 2160, + 2166, 2172, 2178, 2186, 2194, 2202, 2210, 2218, 2226, 2234, + 2242, 2250, 2258, 2266, 2274, 2280, 2286, 2292, 2298, 2304, + 2310, 2316, 2322, 2328, 2334, 2340, 2346, 2352, 2358, 2364, + 2370, 2376, 2382, 2388, 2394, 2400, 2406, 2412, 2418, 2424, + 2430, 2436, 2442, 2448, 2454, 2460, 2466, 2472, 2478, 2484, + 2490, 2494, 2498, 2502, 2507, 2513, 2518, 2523, 2528, 2533, + 2538, 2543, 2549, 2554, 2559, 2564, 2569, 2574, 2580, 2586, + 2592, 2598, 2604, 2610, 2616, 2622, 2628, 2634, 2640, 2646, + 2652, 2658, 2663, 2668, 2673, 2678, 2683, 2688, 2694, 2699, + 2704, 2709, 2714, 2719, 2724, 2729, 2735, 2740, 2745, 2750, + 2755, 2760, 2765, 2770, 2775, 2780, 2785, 2790, 2795, 2800, + 2805, 2811, 2816, 2821, 2827, 2833, 2838, 2843, 2848, 2854, + 2859, 2864, 2869, 2875, 2880, 2885, 2890, 2896, 2901, 2906, + 2911, 2917, 2923, 2929, 2935, 2940, 2946, 2952, 2958, 2963, + 2968, 2973, 2978, 2983, 2989, 2994, 2999, 3004, 3010, 3015, + 3020, 3025, 3031, 3036, 3041, 3046, 3052, 3057, 3062, 3067, + 3073, 3078, 3083, 3088, 3094, 3099, 3104, 3109, 3115, 3120, + 3125, 3130, 3136, 3141, 3146, 3151, 3157, 3162, 3167, 3172, + 3178, 3183, 3188, 3193, 3199, 3204, 3209, 3214, 3220, 3225, + 3230, 3235, 3241, 3246, 3251, 3256, 3262, 3267, 3272, 3277, + 3283, 3288, 3293, 3298, 3303, 3308, 3313, 3318, 3323, 3328, + 3333, 3338, 3343, 3348, 3353, 3358, 3363, 3368, 3373, 3378, + 3383, 3388, 3393, 3398, 3403, 3409, 3415, 3421, 3427, 3434, + 3441, 3447, 3453, 3459, 3465, 3471, 3477, 3483, 3488, 3493, + 3509, 3514, 3519, 3527, 3527, 3538, 3538, 3548, 3551, 3564, + 3586, 3613, 3617, 3623, 3628, 3639, 3643, 3649, 3655, 3666, + 3669, 3676, 3680, 3681, 3687, 3688, 3689, 3690, 3691, 3692, + 3693, 3695, 3701, 3710, 3711, 3715, 3711, 3727, 3728, 3732, + 3732, 3739, 3739, 3753, 3756, 3764, 3772, 3783, 3784, 3788, + 3792, 3800, 3807, 3811, 3819, 3823, 3836, 3840, 3848, 3848, + 3868, 3871, 3877, 3889, 3901, 3905, 3913, 3913, 3928, 3928, + 3946, 3946, 3967, 3970, 3976, 3979, 3985, 3989, 3996, 4001, + 4006, 4013, 4016, 4020, 4025, 4029, 4039, 4043, 4052, 4055, + 4059, 4068, 4068, 4110, 4115, 4118, 4123, 4126, 4133, 4136, + 4141, 4144, 4149, 4152, 4157, 4160, 4165, 4169, 4174, 4178, + 4183, 4187, 4194, 4197, 4202, 4205, 4208, 4211, 4214, 4219, + 4228, 4239, 4244, 4252, 4256, 4261, 4265, 4270, 4274, 4279, + 4283, 4290, 4293, 4298, 4301, 4304, 4307, 4312, 4320, 4330, + 4334, 4339, 4343, 4348, 4352, 4359, 4362, 4367, 4372, 4375, + 4381, 4384, 4389, 4392 }; #endif -#if YYDEBUG || YYERROR_VERBOSE || 1 +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if 1 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "CONST", "BOOL", "INT", "UINT", "FLOAT", - "BVEC2", "BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4", "UVEC2", "UVEC3", - "UVEC4", "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", "MAT4", "MAT2X2", - "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", - "MAT4X4", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER2DSHADOW", - "SAMPLERCUBESHADOW", "SAMPLER2DARRAY", "SAMPLER2DARRAYSHADOW", - "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", "ISAMPLER2DARRAY", - "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER2DARRAY", "SAMPLER", - "SAMPLERSHADOW", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", - "TEXTURE2DARRAY", "ITEXTURE2D", "ITEXTURE3D", "ITEXTURECUBE", - "ITEXTURE2DARRAY", "UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE", - "UTEXTURE2DARRAY", "ATTRIBUTE", "VARYING", "FLOAT16_T", "FLOAT32_T", - "DOUBLE", "FLOAT64_T", "INT64_T", "UINT64_T", "INT32_T", "UINT32_T", - "INT16_T", "UINT16_T", "INT8_T", "UINT8_T", "I64VEC2", "I64VEC3", - "I64VEC4", "U64VEC2", "U64VEC3", "U64VEC4", "I32VEC2", "I32VEC3", - "I32VEC4", "U32VEC2", "U32VEC3", "U32VEC4", "I16VEC2", "I16VEC3", - "I16VEC4", "U16VEC2", "U16VEC3", "U16VEC4", "I8VEC2", "I8VEC3", "I8VEC4", - "U8VEC2", "U8VEC3", "U8VEC4", "DVEC2", "DVEC3", "DVEC4", "DMAT2", - "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", "F16MAT2", "F16MAT3", - "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4", "F32MAT2", "F32MAT3", - "F32MAT4", "F64VEC2", "F64VEC3", "F64VEC4", "F64MAT2", "F64MAT3", - "F64MAT4", "DMAT2X2", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3", - "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4", "F16MAT2X2", "F16MAT2X3", - "F16MAT2X4", "F16MAT3X2", "F16MAT3X3", "F16MAT3X4", "F16MAT4X2", - "F16MAT4X3", "F16MAT4X4", "F32MAT2X2", "F32MAT2X3", "F32MAT2X4", - "F32MAT3X2", "F32MAT3X3", "F32MAT3X4", "F32MAT4X2", "F32MAT4X3", - "F32MAT4X4", "F64MAT2X2", "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", - "F64MAT3X3", "F64MAT3X4", "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", - "ATOMIC_UINT", "ACCSTRUCTNV", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", + "\"end of file\"", "error", "\"invalid token\"", "CONST", "BOOL", "INT", + "UINT", "FLOAT", "BVEC2", "BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4", + "UVEC2", "UVEC3", "UVEC4", "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", + "MAT4", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", + "MAT4X2", "MAT4X3", "MAT4X4", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", + "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", "SAMPLER2DARRAY", + "SAMPLER2DARRAYSHADOW", "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", + "ISAMPLER2DARRAY", "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", + "USAMPLER2DARRAY", "SAMPLER", "SAMPLERSHADOW", "TEXTURE2D", "TEXTURE3D", + "TEXTURECUBE", "TEXTURE2DARRAY", "ITEXTURE2D", "ITEXTURE3D", + "ITEXTURECUBE", "ITEXTURE2DARRAY", "UTEXTURE2D", "UTEXTURE3D", + "UTEXTURECUBE", "UTEXTURE2DARRAY", "ATTRIBUTE", "VARYING", "FLOAT16_T", + "FLOAT32_T", "DOUBLE", "FLOAT64_T", "INT64_T", "UINT64_T", "INT32_T", + "UINT32_T", "INT16_T", "UINT16_T", "INT8_T", "UINT8_T", "I64VEC2", + "I64VEC3", "I64VEC4", "U64VEC2", "U64VEC3", "U64VEC4", "I32VEC2", + "I32VEC3", "I32VEC4", "U32VEC2", "U32VEC3", "U32VEC4", "I16VEC2", + "I16VEC3", "I16VEC4", "U16VEC2", "U16VEC3", "U16VEC4", "I8VEC2", + "I8VEC3", "I8VEC4", "U8VEC2", "U8VEC3", "U8VEC4", "DVEC2", "DVEC3", + "DVEC4", "DMAT2", "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", + "F16MAT2", "F16MAT3", "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4", + "F32MAT2", "F32MAT3", "F32MAT4", "F64VEC2", "F64VEC3", "F64VEC4", + "F64MAT2", "F64MAT3", "F64MAT4", "DMAT2X2", "DMAT2X3", "DMAT2X4", + "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4", + "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2", "F16MAT3X3", + "F16MAT3X4", "F16MAT4X2", "F16MAT4X3", "F16MAT4X4", "F32MAT2X2", + "F32MAT2X3", "F32MAT2X4", "F32MAT3X2", "F32MAT3X3", "F32MAT3X4", + "F32MAT4X2", "F32MAT4X3", "F32MAT4X4", "F64MAT2X2", "F64MAT2X3", + "F64MAT2X4", "F64MAT3X2", "F64MAT3X3", "F64MAT3X4", "F64MAT4X2", + "F64MAT4X3", "F64MAT4X4", "ATOMIC_UINT", "ACCSTRUCTNV", "ACCSTRUCTEXT", + "RAYQUERYEXT", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", "SAMPLER1D", "SAMPLER1DARRAY", "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", "SAMPLER1DSHADOW", "SAMPLER2DRECT", @@ -1064,7 +1275,13 @@ static const char *const yytname[] = "F16IMAGE1D", "F16IMAGE2D", "F16IMAGE3D", "F16IMAGE2DRECT", "F16IMAGECUBE", "F16IMAGE1DARRAY", "F16IMAGE2DARRAY", "F16IMAGECUBEARRAY", "F16IMAGEBUFFER", "F16IMAGE2DMS", - "F16IMAGE2DMSARRAY", "TEXTURECUBEARRAY", "ITEXTURECUBEARRAY", + "F16IMAGE2DMSARRAY", "I64IMAGE1D", "U64IMAGE1D", "I64IMAGE2D", + "U64IMAGE2D", "I64IMAGE3D", "U64IMAGE3D", "I64IMAGE2DRECT", + "U64IMAGE2DRECT", "I64IMAGECUBE", "U64IMAGECUBE", "I64IMAGEBUFFER", + "U64IMAGEBUFFER", "I64IMAGE1DARRAY", "U64IMAGE1DARRAY", + "I64IMAGE2DARRAY", "U64IMAGE2DARRAY", "I64IMAGECUBEARRAY", + "U64IMAGECUBEARRAY", "I64IMAGE2DMS", "U64IMAGE2DMS", "I64IMAGE2DMSARRAY", + "U64IMAGE2DMSARRAY", "TEXTURECUBEARRAY", "ITEXTURECUBEARRAY", "UTEXTURECUBEARRAY", "TEXTURE1D", "ITEXTURE1D", "UTEXTURE1D", "TEXTURE1DARRAY", "ITEXTURE1DARRAY", "UTEXTURE1DARRAY", "TEXTURE2DRECT", "ITEXTURE2DRECT", "UTEXTURE2DRECT", "TEXTUREBUFFER", "ITEXTUREBUFFER", @@ -1075,31 +1292,37 @@ static const char *const yytname[] = "F16TEXTURECUBEARRAY", "F16TEXTUREBUFFER", "F16TEXTURE2DMS", "F16TEXTURE2DMSARRAY", "SUBPASSINPUT", "SUBPASSINPUTMS", "ISUBPASSINPUT", "ISUBPASSINPUTMS", "USUBPASSINPUT", "USUBPASSINPUTMS", "F16SUBPASSINPUT", - "F16SUBPASSINPUTMS", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", - "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", - "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", - "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", - "RIGHT_PAREN", "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", - "RIGHT_BRACE", "DOT", "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG", - "DASH", "TILDE", "PLUS", "STAR", "SLASH", "PERCENT", "LEFT_ANGLE", - "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", "AMPERSAND", "QUESTION", - "INVARIANT", "HIGH_PRECISION", "MEDIUM_PRECISION", "LOW_PRECISION", - "PRECISION", "PACKED", "RESOURCE", "SUPERP", "FLOATCONSTANT", - "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", "IDENTIFIER", "TYPE_NAME", - "CENTROID", "IN", "OUT", "INOUT", "STRUCT", "VOID", "WHILE", "BREAK", - "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", "SWITCH", - "CASE", "DEFAULT", "UNIFORM", "SHARED", "BUFFER", "FLAT", "SMOOTH", - "LAYOUT", "DOUBLECONSTANT", "INT16CONSTANT", "UINT16CONSTANT", - "FLOAT16CONSTANT", "INT32CONSTANT", "UINT32CONSTANT", "INT64CONSTANT", - "UINT64CONSTANT", "SUBROUTINE", "DEMOTE", "PAYLOADNV", "PAYLOADINNV", - "HITATTRNV", "CALLDATANV", "CALLDATAINNV", "PATCH", "SAMPLE", - "NONUNIFORM", "COHERENT", "VOLATILE", "RESTRICT", "READONLY", + "F16SUBPASSINPUTMS", "SPIRV_INSTRUCTION", "SPIRV_EXECUTION_MODE", + "SPIRV_EXECUTION_MODE_ID", "SPIRV_DECORATE", "SPIRV_DECORATE_ID", + "SPIRV_DECORATE_STRING", "SPIRV_TYPE", "SPIRV_STORAGE_CLASS", + "SPIRV_BY_REFERENCE", "SPIRV_LITERAL", "LEFT_OP", "RIGHT_OP", "INC_OP", + "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", + "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", + "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", + "SUB_ASSIGN", "STRING_LITERAL", "LEFT_PAREN", "RIGHT_PAREN", + "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", + "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", + "STAR", "SLASH", "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", + "CARET", "AMPERSAND", "QUESTION", "INVARIANT", "HIGH_PRECISION", + "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", + "SUPERP", "FLOATCONSTANT", "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", + "IDENTIFIER", "TYPE_NAME", "CENTROID", "IN", "OUT", "INOUT", "STRUCT", + "VOID", "WHILE", "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF", + "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "TERMINATE_INVOCATION", + "TERMINATE_RAY", "IGNORE_INTERSECTION", "UNIFORM", "SHARED", "BUFFER", + "FLAT", "SMOOTH", "LAYOUT", "DOUBLECONSTANT", "INT16CONSTANT", + "UINT16CONSTANT", "FLOAT16CONSTANT", "INT32CONSTANT", "UINT32CONSTANT", + "INT64CONSTANT", "UINT64CONSTANT", "SUBROUTINE", "DEMOTE", "PAYLOADNV", + "PAYLOADINNV", "HITATTRNV", "CALLDATANV", "CALLDATAINNV", "PAYLOADEXT", + "PAYLOADINEXT", "HITATTREXT", "CALLDATAEXT", "CALLDATAINEXT", "PATCH", + "SAMPLE", "NONUNIFORM", "COHERENT", "VOLATILE", "RESTRICT", "READONLY", "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", - "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", "NOPERSPECTIVE", - "EXPLICITINTERPAMD", "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", - "PERTASKNV", "PRECISE", "$accept", "variable_identifier", - "primary_expression", "postfix_expression", "integer_expression", - "function_call", "function_call_or_method", "function_call_generic", + "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", + "SHADERCALLCOHERENT", "NOPERSPECTIVE", "EXPLICITINTERPAMD", + "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", "PERTASKNV", "PRECISE", + "$accept", "variable_identifier", "primary_expression", + "postfix_expression", "integer_expression", "function_call", + "function_call_or_method", "function_call_generic", "function_call_header_no_parameters", "function_call_header_with_parameters", "function_call_header", "function_identifier", "unary_expression", "unary_operator", @@ -1135,14 +1358,31 @@ static const char *const yytname[] = "for_init_statement", "conditionopt", "for_rest_statement", "jump_statement", "translation_unit", "external_declaration", "function_definition", "$@13", "attribute", "attribute_list", - "single_attribute", YY_NULLPTR + "single_attribute", "spirv_requirements_list", + "spirv_requirements_parameter", "spirv_extension_list", + "spirv_capability_list", "spirv_execution_mode_qualifier", + "spirv_execution_mode_parameter_list", "spirv_execution_mode_parameter", + "spirv_execution_mode_id_parameter_list", + "spirv_storage_class_qualifier", "spirv_decorate_qualifier", + "spirv_decorate_parameter_list", "spirv_decorate_parameter", + "spirv_decorate_id_parameter_list", + "spirv_decorate_string_parameter_list", "spirv_type_specifier", + "spirv_type_parameter_list", "spirv_type_parameter", + "spirv_instruction_qualifier", "spirv_instruction_qualifier_list", + "spirv_instruction_qualifier_id", YY_NULLPTR }; + +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) +{ + return yytname[yysymbol]; +} #endif -# ifdef YYPRINT +#ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = +static const yytype_int16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -1185,211 +1425,259 @@ static const yytype_uint16 yytoknum[] = 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, - 665 + 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, + 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, + 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, + 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, + 705, 706, 707, 708, 709 }; -# endif +#endif -#define YYPACT_NINF -453 +#define YYPACT_NINF (-859) -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-453))) +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF -528 +#define YYTABLE_NINF (-570) -#define yytable_value_is_error(Yytable_value) \ +#define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 3994, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, 97, -453, -453, -453, - -453, -453, 6, -453, -453, -453, -453, -453, -453, -307, - -241, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -3, 95, 36, - 125, 6034, 82, -453, -22, -453, -453, -453, -453, 4402, - -453, -453, -453, -453, 131, -453, -453, 730, -453, -453, - 11, -453, 153, -28, 127, -453, 7, -453, 157, -453, - 6034, -453, -453, -453, 6034, 129, 134, -453, 13, -453, - 73, -453, -453, 8391, 162, -453, -453, -453, 161, 6034, - -453, 163, -453, -309, -453, -453, 27, 6831, -453, 16, - 1138, -453, -453, -453, -453, 162, 23, -453, 7221, 49, - -453, 138, -453, 87, 8391, 8391, 8391, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, -453, 68, -453, -453, -453, - 174, 60, 8781, 176, -453, 8391, -453, -453, -320, 175, - -453, 6034, 142, 4810, -453, 6034, 8391, -453, -28, -453, - 143, -453, -453, 119, 128, 32, 21, 38, 158, 160, - 165, 195, 194, 18, 183, 7611, -453, 185, 184, -453, - -453, 188, 180, 181, -453, 196, 197, 190, 8001, 198, - 8391, 187, 193, 122, -453, -453, 91, -453, 95, 204, - 205, -453, -453, -453, -453, -453, 1546, -453, -453, -453, - -453, -453, -453, -453, -453, -453, -353, 175, 7221, 69, - 7221, -453, -453, 7221, 6034, -453, 170, -453, -453, -453, - 78, -453, -453, 8391, 171, -453, -453, 8391, 207, -453, - -453, -453, 8391, -453, 142, 162, 93, -453, -453, -453, - 5218, -453, -453, -453, -453, 8391, 8391, 8391, 8391, 8391, - 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, - 8391, 8391, 8391, 8391, -453, -453, -453, 206, 177, -453, - 1954, -453, -453, -453, 1954, -453, 8391, -453, -453, 100, - 8391, 144, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, -453, -453, -453, 8391, 8391, -453, -453, -453, - -453, -453, -453, -453, 7221, -453, 140, -453, 5626, -453, - -453, 209, 208, -453, -453, -453, 123, 175, 142, -453, - -453, -453, -453, -453, 119, 119, 128, 128, 32, 32, - 32, 32, 21, 21, 38, 158, 160, 165, 195, 194, - 8391, -453, 214, 56, -453, 1954, 3586, 172, 3178, 80, - -453, 81, -453, -453, -453, -453, -453, 6441, -453, -453, - -453, -453, 146, 8391, 215, 177, 212, 208, 186, 6034, - 219, 221, -453, -453, 3586, 220, -453, -453, -453, 8391, - 222, -453, -453, -453, 216, 2362, 8391, -453, 217, 227, - 182, 225, 2770, -453, 229, -453, -453, 7221, -453, -453, - -453, 89, 8391, 2362, 220, -453, -453, 1954, -453, 224, - 208, -453, -453, 1954, 226, -453, -453 + 4548, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -312, -274, -244, -212, -208, + -201, -181, -169, -859, -859, -194, -859, -859, -859, -859, + -859, -285, -859, -859, -859, -859, -859, -317, -859, -859, + -859, -859, -859, -859, -132, -73, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -329, -70, + -158, -145, 7712, -221, -859, -164, -859, -859, -859, -859, + 5452, -859, -859, -859, -859, -68, -859, -859, 932, -859, + -859, 7712, -55, -859, -859, -859, 5904, -80, -154, -150, + -142, -135, -130, -80, -129, -79, 12060, -859, -45, -354, + -76, -859, -308, -859, -43, -40, 7712, -859, -859, -859, + 7712, -72, -71, -859, -265, -859, -257, -859, -859, 10761, + -39, -859, -859, -859, -35, -69, 7712, -859, -42, -38, + -37, -859, -302, -859, -235, -32, -33, -28, -27, -217, + -26, -23, -22, -21, -20, -16, -216, -29, -15, -31, + -303, -859, -13, 7712, -859, -14, -859, -214, -859, -859, + -205, 9029, -859, -279, 1384, -859, -859, -859, -859, -859, + -39, -299, -859, 9462, -275, -859, -34, -859, -137, 10761, + 10761, -859, 10761, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -248, -859, -859, -859, -3, -203, 11194, -1, + -859, 10761, -859, -859, -310, 3, -40, 1, -859, -309, + -80, -859, -30, -859, -319, 5, -128, 10761, -124, -859, + -157, -122, 10761, -120, 10, -118, -80, -859, 11627, -859, + -116, 10761, 7, -79, -859, 7712, -25, 6356, -859, 7712, + 10761, -859, -354, -859, -19, -859, -859, -78, -263, -94, + -298, -52, -18, -8, -12, 29, 28, -301, 15, 9895, + -859, 16, -859, -859, 19, 12, 17, -859, 20, 23, + 18, 10328, 24, 10761, 21, 22, 25, 27, 30, -215, + -859, -859, -117, -859, -70, 26, 34, -859, -859, -859, + -859, -859, 1836, -859, -859, -859, -859, -859, -859, -859, + -859, -859, 5000, 3, 9462, -264, 8163, -859, -859, 9462, + 7712, -859, -11, -859, -859, -859, -195, -859, -859, 10761, + -6, -859, -859, 10761, 37, -859, -859, -859, 10761, -859, + -859, -859, -322, -859, -859, -192, 35, -859, -859, -859, + -859, -859, -859, -179, -859, -178, -859, -859, -177, 32, + -859, -859, -859, -859, -175, -859, -174, -859, -167, 36, + -859, -166, 38, -165, 35, -859, -163, -859, 45, 46, + -859, -859, -25, -39, -115, -859, -859, -859, 6808, -859, + -859, -859, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, + 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, + 10761, -859, -859, -859, 51, -859, 2288, -859, -859, -859, + 2288, -859, 10761, -859, -859, -88, 10761, -63, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, 10761, 10761, -859, -859, -859, -859, + -859, -859, -859, 9462, -859, -859, -108, -859, 7260, -859, + -859, 52, 53, -859, -859, -859, -859, -859, -138, -136, + -859, -304, -859, -319, -859, -319, -859, 10761, 10761, -859, + -157, -859, -157, -859, 10761, 10761, -859, 65, 10, -859, + 11627, -859, 10761, -859, -859, -86, 3, -25, -859, -859, + -859, -859, -859, -78, -78, -263, -263, -94, -94, -94, + -94, -298, -298, -52, -18, -8, -12, 29, 28, 10761, + -859, 2288, 4096, 31, 3644, -156, -859, -155, -859, -859, + -859, -859, -859, 8596, -859, -859, -859, 66, -859, 39, + -859, -153, -859, -151, -859, -148, -859, -146, -859, -144, + -143, -859, -859, -859, -61, 64, 53, 40, 72, 74, + -859, -859, 4096, 75, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, 10761, -859, 71, 2740, 10761, + -859, 73, 81, 41, 80, 3192, -859, 83, -859, 9462, + -859, -859, -859, -141, 10761, 2740, 75, -859, -859, 2288, + -859, 78, 53, -859, -859, 2288, 86, -859, -859 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_uint16 yydefact[] = +static const yytype_int16 yydefact[] = { - 0, 156, 203, 201, 202, 200, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 204, 205, 206, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 327, 328, 329, 330, 331, 332, 333, 353, 354, 355, - 356, 357, 358, 359, 368, 381, 382, 369, 370, 372, - 371, 373, 374, 375, 376, 377, 378, 379, 380, 164, - 165, 229, 230, 228, 231, 238, 239, 236, 237, 234, - 235, 232, 233, 261, 262, 263, 273, 274, 275, 258, - 259, 260, 270, 271, 272, 255, 256, 257, 267, 268, - 269, 252, 253, 254, 264, 265, 266, 240, 241, 242, - 276, 277, 278, 243, 244, 245, 288, 289, 290, 246, - 247, 248, 300, 301, 302, 249, 250, 251, 312, 313, - 314, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 325, 324, 484, - 485, 486, 337, 338, 361, 364, 326, 335, 336, 352, - 334, 383, 384, 387, 388, 389, 391, 392, 393, 395, - 396, 397, 399, 400, 474, 475, 360, 362, 363, 339, - 340, 341, 385, 342, 346, 347, 350, 390, 394, 398, - 343, 344, 348, 349, 386, 345, 351, 430, 432, 433, - 434, 436, 437, 438, 440, 441, 442, 444, 445, 446, - 448, 449, 450, 452, 453, 454, 456, 457, 458, 460, - 461, 462, 464, 465, 466, 468, 469, 470, 472, 473, - 431, 435, 439, 443, 447, 455, 459, 463, 451, 467, - 471, 365, 366, 367, 401, 410, 412, 406, 411, 413, - 414, 416, 417, 418, 420, 421, 422, 424, 425, 426, - 428, 429, 402, 403, 404, 415, 405, 407, 408, 409, - 419, 423, 427, 476, 477, 480, 481, 482, 483, 478, - 479, 575, 131, 489, 490, 491, 0, 488, 160, 158, - 159, 157, 0, 199, 161, 162, 163, 133, 132, 0, - 183, 169, 170, 168, 171, 172, 166, 167, 185, 173, - 179, 180, 181, 182, 174, 175, 176, 177, 178, 134, - 135, 136, 137, 138, 139, 146, 574, 0, 576, 0, - 108, 107, 0, 119, 124, 153, 152, 150, 154, 0, - 147, 149, 155, 129, 195, 151, 487, 0, 571, 573, - 0, 494, 0, 0, 0, 96, 0, 93, 0, 106, - 0, 115, 109, 117, 0, 118, 0, 94, 125, 99, - 0, 148, 130, 0, 188, 194, 1, 572, 0, 0, - 492, 143, 145, 0, 141, 186, 0, 0, 97, 0, - 0, 577, 110, 114, 116, 112, 120, 111, 0, 126, - 102, 0, 100, 0, 0, 0, 0, 42, 41, 43, - 40, 5, 6, 7, 8, 2, 15, 13, 14, 16, - 9, 10, 11, 12, 3, 17, 36, 19, 24, 25, - 0, 0, 29, 0, 197, 0, 35, 33, 0, 189, - 95, 0, 0, 0, 496, 0, 0, 140, 0, 184, - 0, 190, 44, 48, 51, 54, 59, 62, 64, 66, - 68, 70, 72, 74, 0, 0, 98, 0, 522, 531, - 535, 0, 0, 0, 556, 0, 0, 0, 0, 0, - 0, 0, 0, 44, 77, 90, 0, 509, 0, 155, - 129, 512, 533, 511, 519, 510, 0, 513, 514, 537, - 515, 544, 516, 517, 552, 518, 0, 113, 0, 121, - 0, 504, 128, 0, 0, 104, 0, 101, 37, 38, - 0, 21, 22, 0, 0, 27, 26, 0, 199, 30, - 32, 39, 0, 196, 0, 502, 0, 500, 495, 497, - 0, 92, 144, 142, 187, 0, 0, 0, 0, 0, + 0, 166, 219, 217, 218, 216, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 220, 221, 222, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 345, 346, 347, 348, 349, 350, 351, 371, 372, 373, + 374, 375, 376, 377, 386, 399, 400, 387, 388, 390, + 389, 391, 392, 393, 394, 395, 396, 397, 398, 174, + 175, 245, 246, 244, 247, 254, 255, 252, 253, 250, + 251, 248, 249, 277, 278, 279, 289, 290, 291, 274, + 275, 276, 286, 287, 288, 271, 272, 273, 283, 284, + 285, 268, 269, 270, 280, 281, 282, 256, 257, 258, + 292, 293, 294, 259, 260, 261, 304, 305, 306, 262, + 263, 264, 316, 317, 318, 265, 266, 267, 328, 329, + 330, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 343, 340, 341, + 342, 524, 525, 526, 355, 356, 379, 382, 344, 353, + 354, 370, 352, 401, 402, 405, 406, 407, 409, 410, + 411, 413, 414, 415, 417, 418, 514, 515, 378, 380, + 381, 357, 358, 359, 403, 360, 364, 365, 368, 408, + 412, 416, 361, 362, 366, 367, 404, 363, 369, 448, + 450, 451, 452, 454, 455, 456, 458, 459, 460, 462, + 463, 464, 466, 467, 468, 470, 471, 472, 474, 475, + 476, 478, 479, 480, 482, 483, 484, 486, 487, 488, + 490, 491, 449, 453, 457, 461, 465, 473, 477, 481, + 469, 485, 489, 492, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, + 509, 510, 511, 512, 513, 383, 384, 385, 419, 428, + 430, 424, 429, 431, 432, 434, 435, 436, 438, 439, + 440, 442, 443, 444, 446, 447, 420, 421, 422, 433, + 423, 425, 426, 427, 437, 441, 445, 516, 517, 520, + 521, 522, 523, 518, 519, 0, 0, 0, 0, 0, + 0, 0, 0, 164, 165, 0, 620, 137, 530, 531, + 532, 0, 529, 170, 168, 169, 167, 0, 215, 171, + 172, 173, 139, 138, 0, 199, 180, 182, 178, 184, + 186, 181, 183, 179, 185, 187, 176, 177, 201, 188, + 195, 196, 197, 198, 189, 190, 191, 192, 193, 194, + 140, 141, 142, 143, 144, 145, 152, 619, 0, 621, + 0, 114, 113, 0, 125, 130, 159, 158, 156, 160, + 0, 153, 155, 161, 135, 211, 157, 528, 0, 616, + 618, 0, 0, 162, 163, 527, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 535, 0, 0, + 0, 99, 0, 94, 0, 109, 0, 121, 115, 123, + 0, 124, 0, 97, 131, 102, 0, 154, 136, 0, + 204, 210, 1, 617, 0, 0, 0, 96, 0, 0, + 0, 628, 0, 680, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 626, + 0, 624, 0, 0, 533, 149, 151, 0, 147, 202, + 0, 0, 100, 0, 0, 622, 110, 116, 120, 122, + 118, 126, 117, 0, 132, 105, 0, 103, 0, 0, + 0, 9, 0, 43, 42, 44, 41, 5, 6, 7, + 8, 2, 16, 14, 15, 17, 10, 11, 12, 13, + 3, 18, 37, 20, 25, 26, 0, 0, 30, 0, + 213, 0, 36, 34, 0, 205, 111, 0, 95, 0, + 0, 678, 0, 636, 0, 0, 0, 0, 0, 653, + 0, 0, 0, 0, 0, 0, 0, 673, 0, 651, + 0, 0, 0, 0, 98, 0, 0, 0, 537, 0, + 0, 146, 0, 200, 0, 206, 45, 49, 52, 55, + 60, 63, 65, 67, 69, 71, 73, 75, 0, 0, + 101, 564, 573, 577, 0, 0, 0, 598, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, + 78, 91, 0, 551, 0, 161, 135, 554, 575, 553, + 561, 552, 0, 555, 556, 579, 557, 586, 558, 559, + 594, 560, 0, 119, 0, 127, 0, 545, 134, 0, + 0, 107, 0, 104, 38, 39, 0, 22, 23, 0, + 0, 28, 27, 0, 215, 31, 33, 40, 0, 212, + 112, 682, 0, 683, 629, 0, 0, 681, 648, 644, + 645, 646, 647, 0, 642, 0, 93, 649, 0, 0, + 663, 664, 665, 666, 0, 661, 0, 667, 0, 0, + 669, 0, 0, 0, 2, 677, 0, 675, 0, 0, + 623, 625, 0, 543, 0, 541, 536, 538, 0, 150, + 148, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 75, 191, 192, 0, 0, 521, - 0, 554, 567, 566, 0, 558, 0, 570, 568, 0, - 0, 0, 551, 520, 80, 81, 83, 82, 85, 86, - 87, 88, 89, 84, 79, 0, 0, 536, 532, 534, - 538, 545, 553, 123, 0, 507, 0, 127, 0, 105, - 4, 0, 23, 20, 31, 198, 0, 503, 0, 498, - 493, 45, 46, 47, 50, 49, 52, 53, 57, 58, - 55, 56, 60, 61, 63, 65, 67, 69, 71, 73, - 0, 193, 581, 0, 579, 523, 0, 0, 0, 0, - 569, 0, 550, 78, 91, 122, 505, 0, 103, 18, - 499, 501, 0, 0, 0, 0, 0, 542, 0, 0, - 0, 0, 561, 560, 563, 529, 546, 506, 508, 0, - 0, 578, 580, 524, 0, 0, 0, 562, 0, 0, - 541, 0, 0, 539, 0, 76, 582, 0, 526, 555, - 525, 0, 564, 0, 529, 528, 530, 548, 543, 0, - 565, 559, 540, 549, 0, 557, 547 + 0, 76, 207, 208, 0, 563, 0, 596, 609, 608, + 0, 600, 0, 612, 610, 0, 0, 0, 593, 613, + 614, 615, 562, 81, 82, 84, 83, 86, 87, 88, + 89, 90, 85, 80, 0, 0, 578, 574, 576, 580, + 587, 595, 129, 0, 548, 549, 0, 133, 0, 108, + 4, 0, 24, 21, 32, 214, 632, 634, 0, 0, + 679, 0, 638, 0, 637, 0, 640, 0, 0, 655, + 0, 654, 0, 657, 0, 0, 659, 0, 0, 674, + 0, 671, 0, 652, 627, 0, 544, 0, 539, 534, + 46, 47, 48, 51, 50, 53, 54, 58, 59, 56, + 57, 61, 62, 64, 66, 68, 70, 72, 74, 0, + 209, 565, 0, 0, 0, 0, 611, 0, 592, 79, + 92, 128, 546, 0, 106, 19, 630, 0, 631, 0, + 643, 0, 650, 0, 662, 0, 668, 0, 670, 0, + 0, 676, 540, 542, 0, 0, 584, 0, 0, 0, + 603, 602, 605, 571, 588, 547, 550, 633, 635, 639, + 641, 656, 658, 660, 672, 0, 566, 0, 0, 0, + 604, 0, 0, 583, 0, 0, 581, 0, 77, 0, + 568, 597, 567, 0, 606, 0, 571, 570, 572, 590, + 585, 0, 607, 601, 582, 591, 0, 599, 589 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, - -453, -453, 8696, -453, -89, -88, -122, -84, -19, -18, - -17, -16, -20, -15, -453, -85, -453, -98, -453, -110, - -119, 2, -453, -453, -453, 4, -453, -453, -453, 189, - 191, 192, -453, -453, -339, -453, -453, -453, -453, 98, - -453, -37, -44, -453, 9, -453, 0, -71, -453, -453, - -453, -453, 261, -453, -453, -453, -452, -137, 20, -68, - -209, -453, -96, -198, -326, -453, -136, -453, -453, -146, - -144, -453, -453, 200, -265, -87, -453, 57, -453, -112, - -453, 59, -453, -453, -453, -453, 61, -453, -453, -453, - -453, -453, -453, -453, -453, 228, -453, -453, -453, -453, - -99 + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -209, -859, -418, -417, -602, -421, -291, -284, + -286, -283, -281, -287, -859, -473, -859, -490, -859, -497, + -520, 13, -859, -859, -859, 14, -394, -859, -859, 33, + 42, 44, -859, -859, -395, -859, -859, -859, -859, -121, + -859, -381, -369, -859, 9, -859, 0, -424, -859, -859, + -859, -859, 113, -859, -859, -859, -545, -549, -252, -365, + -617, -859, -391, -618, -858, -859, -450, -859, -859, -459, + -458, -859, -859, 43, -721, -387, -859, -173, -859, -422, + -859, -170, -859, -859, -859, -859, -168, -859, -859, -859, + -859, -859, -859, -859, -859, 67, -859, -859, 2, -859, + -97, -300, -386, -859, -859, -859, -326, -323, -327, -859, + -859, -330, -325, -328, -332, -859, -331, -334, -859, -390, + -530 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 434, 435, 436, 621, 437, 438, 439, 440, 441, - 442, 443, 493, 445, 463, 464, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 494, 650, 495, 605, 496, - 552, 497, 337, 524, 413, 498, 339, 340, 341, 371, - 372, 373, 342, 343, 344, 345, 346, 347, 393, 394, - 348, 349, 350, 351, 446, 396, 447, 399, 384, 385, - 448, 354, 355, 356, 455, 389, 453, 454, 546, 547, - 522, 616, 501, 502, 503, 504, 505, 580, 676, 709, - 700, 701, 702, 710, 506, 507, 508, 509, 703, 680, - 510, 511, 704, 724, 512, 513, 514, 656, 584, 658, - 684, 698, 699, 515, 357, 358, 359, 368, 516, 653, - 654 + -1, 520, 521, 522, 781, 523, 524, 525, 526, 527, + 528, 529, 609, 531, 577, 578, 579, 580, 581, 582, + 583, 584, 585, 586, 587, 610, 839, 611, 764, 612, + 695, 613, 378, 640, 498, 614, 380, 381, 382, 427, + 428, 429, 383, 384, 385, 386, 387, 388, 477, 478, + 389, 390, 391, 392, 532, 480, 533, 483, 440, 441, + 534, 395, 396, 397, 569, 473, 567, 568, 704, 705, + 638, 776, 617, 618, 619, 620, 621, 736, 875, 911, + 903, 904, 905, 912, 622, 623, 624, 625, 906, 878, + 626, 627, 907, 926, 628, 629, 630, 842, 740, 844, + 882, 901, 902, 631, 398, 399, 400, 424, 632, 470, + 471, 450, 451, 788, 789, 402, 673, 674, 678, 403, + 404, 684, 685, 688, 691, 405, 696, 697, 406, 452, + 453 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1397,243 +1685,100 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 353, 542, 336, 550, 338, 481, 457, 363, 484, 352, - 485, 486, 458, 543, 489, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 618, 364, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 374, 381, 530, 409, 609, 613, - 521, 615, 474, 449, 617, 655, 549, 678, 562, 563, - 573, 365, 391, 397, 361, 560, 561, 407, 378, 397, - 381, 398, 475, 374, 517, 519, 408, 566, 567, 397, - 476, 375, 459, 392, 539, 678, 518, 366, 460, 382, - 352, 369, 451, 564, 565, 574, 362, 353, 352, 336, - 388, 338, 297, 531, 532, 475, 352, 302, 303, 708, - 375, 551, 523, 674, 375, 536, 716, 675, 589, 352, - 591, 537, -34, 352, 533, 475, 657, 708, 534, 452, - 577, 410, 614, 620, 411, 685, 686, 412, 352, 606, - 500, 606, 606, 376, 719, 665, 377, 381, 526, 499, - 606, 527, 606, 549, 628, 607, 451, 629, 451, 367, - 521, 606, 521, 622, 660, 521, 594, 595, 596, 597, - 598, 599, 600, 601, 602, 603, 293, 294, 295, 624, - 638, 639, 640, 641, 628, 604, 370, 670, 555, 556, - 557, 544, 723, 452, 558, 452, 559, 609, 688, 666, - 352, 667, 352, 383, 352, 606, 662, 606, 689, 634, - 635, 390, 636, 637, 627, 400, 659, 395, 397, 405, - 661, 549, 642, 643, 406, 450, 456, 451, 525, 535, - 540, 475, 545, 554, 568, 569, 571, 572, 718, 570, - 575, 578, 581, 579, 582, 583, 500, 663, 664, 592, - 585, 586, 590, 451, 587, 499, 521, 593, -35, -33, - 619, 623, -28, 651, 452, 609, 669, 652, 673, 606, - 681, 693, 691, 352, 695, 696, 694, 706, -527, 707, - 672, 712, 713, 478, 714, 726, 677, 717, 725, 644, - 452, 645, 648, 646, 690, 647, 553, 360, 649, 352, - 671, 402, 682, 403, 626, 715, 404, 721, 401, 521, - 722, 683, 697, 610, 677, 611, 692, 612, 0, 0, - 500, 451, 0, 0, 500, 387, 711, 0, 551, 499, - 0, 705, 0, 499, 0, 0, 0, 0, 0, 0, - 0, 0, 720, 0, 0, 0, 0, 0, 0, 521, - 0, 0, 0, 0, 0, 0, 0, 0, 452, 679, - 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, - 0, 0, 0, 0, 0, 381, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 679, 0, 0, - 0, 0, 0, 0, 0, 500, 500, 0, 500, 0, - 0, 0, 0, 0, 499, 499, 0, 499, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 0, 0, 0, 0, 500, 0, 0, 0, 352, 0, - 0, 0, 0, 499, 0, 500, 0, 0, 0, 0, - 0, 0, 500, 0, 499, 0, 0, 0, 0, 0, - 0, 499, 0, 500, 0, 0, 0, 500, 0, 0, - 0, 0, 499, 500, 0, 0, 499, 0, 0, 0, - 386, 0, 499, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 0, 0, 0, 0, 0, 0, 0, + 394, 430, 401, 637, 768, 646, 445, 444, 588, 393, + 494, 445, 667, 377, 379, 841, 535, 772, 707, 775, + 446, 437, 777, 466, 708, 446, 786, 677, 667, 668, + 421, 475, 687, 719, 720, 730, 417, 407, 655, 661, + 910, 699, 662, 481, 661, 430, 658, 918, 541, 562, + 709, 482, 481, 563, 542, 476, 422, 910, 659, 634, + 787, 437, 669, 670, 671, 672, 633, 635, 418, 721, + 722, 731, 589, 663, 676, 408, 589, 437, 663, 676, + 590, 647, 648, 639, 492, 676, 481, 589, 676, 328, + 329, 330, 565, 493, 773, 778, 495, 676, 715, 496, + 716, -35, 497, 649, 745, 409, 747, 650, 456, 458, + 460, 462, 464, 465, 468, 543, 734, 827, 828, 829, + 830, 544, 843, 753, 754, 755, 756, 757, 758, 759, + 760, 761, 762, 549, 557, 432, 571, 410, 433, 550, + 558, 411, 572, 763, 637, 573, 637, 652, 412, 637, + 665, 574, 782, 653, 664, 780, 851, 415, 790, 707, + 664, 765, 664, 784, 542, 664, 693, 664, 413, 664, + 664, 792, 794, 796, 664, 799, 801, 793, 795, 797, + 414, 800, 802, 803, 806, 809, 565, 811, 565, 804, + 807, 810, 425, 812, 883, 884, 437, 889, 925, 890, + 765, 765, 891, 793, 892, 797, 893, 894, 800, 921, + 804, 426, 807, 812, 856, 765, 858, 419, 857, 642, + 859, 434, 643, 768, 680, 681, 682, 683, 454, 707, + 530, 455, 457, 717, 718, 455, 886, 445, 444, 765, + 459, 817, 766, 455, 818, 845, 852, 461, 853, 847, + 455, 446, 463, 467, 675, 455, 455, 455, 679, 565, + 686, 455, 689, 455, 692, 455, 698, 455, 765, 455, + 817, 846, 576, 872, 849, 850, 420, 862, 677, 816, + 667, 723, 724, 637, 866, 687, 712, 713, 714, 423, + 644, 645, 920, 765, 848, 765, 895, 823, 824, 439, + 825, 826, 831, 832, 447, 449, 469, 768, 474, 479, + 484, 325, 481, 490, 491, 536, 537, 538, 561, 540, + 539, 559, 657, 546, 676, 676, 545, 565, 547, 548, + 551, 676, 676, 552, 553, 554, 555, 676, 576, 676, + 556, 560, 874, 576, 570, 876, 564, 651, 656, 576, + 492, 641, 576, 725, 589, 666, 662, 727, 690, 700, + 703, 576, 726, 637, 728, 729, 711, 732, 737, 741, + 735, 738, 742, 746, 779, -36, 739, 743, 748, 783, + 576, 749, 431, -34, 750, 876, 751, -29, 798, 752, + 438, 393, 805, 791, 808, 813, 814, 565, 394, 393, + 401, 394, 913, 840, 855, 908, 394, 393, 401, 765, + 393, 377, 379, 868, 887, 393, 472, 922, 896, 637, + 448, 888, 898, 899, 879, 897, 431, 486, -569, 909, + 431, 915, 914, 591, 833, 393, 919, 927, 916, 393, + 928, 835, 834, 838, 416, 836, 438, 877, 837, 785, + 815, 710, 873, 880, 917, 393, 923, 881, 924, 769, + 900, 446, 770, 488, 771, 443, 701, 485, 487, 861, + 860, 863, 865, 566, 489, 864, 869, 867, 871, 870, + 0, 0, 393, 0, 616, 0, 0, 877, 0, 0, + 0, 0, 0, 615, 0, 0, 0, 0, 0, 0, + 0, 446, 0, 820, 821, 822, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 291, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 292, 293, - 294, 295, 296, 0, 0, 0, 0, 0, 0, 0, - 0, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 0, 0, 0, 702, 0, 566, 0, 566, + 0, 0, 0, 0, 393, 0, 393, 0, 393, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 576, 576, + 0, 0, 0, 0, 0, 576, 576, 0, 0, 0, + 0, 576, 0, 576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 0, 0, 0, 310, 0, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 0, 0, 414, 415, 0, 0, 0, 0, 0, + 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, + 0, 615, 394, 0, 0, 0, 0, 0, 0, 0, + 566, 393, 0, 0, 0, 0, 0, 0, 0, 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 416, 0, 477, 0, 478, 479, 0, 0, - 0, 0, 480, 417, 418, 419, 420, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 292, 293, 294, 295, - 296, 0, 0, 0, 421, 422, 423, 424, 425, 297, - 298, 299, 300, 301, 302, 303, 481, 482, 483, 484, - 0, 485, 486, 487, 488, 489, 490, 491, 304, 305, - 306, 307, 308, 309, 426, 427, 428, 429, 430, 431, - 432, 433, 310, 492, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 0, - 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 416, 0, 477, 0, 478, 608, 0, 0, 0, 0, - 480, 417, 418, 419, 420, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 292, 293, 294, 295, 296, 0, - 0, 0, 421, 422, 423, 424, 425, 297, 298, 299, - 300, 301, 302, 303, 481, 482, 483, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 304, 305, 306, 307, - 308, 309, 426, 427, 428, 429, 430, 431, 432, 433, - 310, 492, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 0, 0, 414, - 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 416, 0, - 477, 0, 478, 0, 0, 0, 0, 0, 480, 417, - 418, 419, 420, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 292, 293, 294, 295, 296, 0, 0, 0, - 421, 422, 423, 424, 425, 297, 298, 299, 300, 301, - 302, 303, 481, 482, 483, 484, 0, 485, 486, 487, - 488, 489, 490, 491, 304, 305, 306, 307, 308, 309, - 426, 427, 428, 429, 430, 431, 432, 433, 310, 492, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 1, 2, 3, 4, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 566, 0, + 0, 0, 0, 0, 0, 0, 0, 393, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 616, 0, 0, 0, + 616, 0, 0, 0, 0, 615, 0, 0, 0, 615, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 566, 0, + 0, 0, 0, 0, 0, 0, 0, 393, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 616, 616, 0, 616, 0, 401, 0, 0, 0, + 615, 615, 0, 615, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, + 0, 615, 0, 0, 0, 0, 0, 0, 616, 0, + 0, 0, 0, 0, 0, 616, 0, 615, 0, 0, + 0, 0, 0, 0, 615, 616, 0, 0, 0, 616, + 0, 0, 0, 0, 615, 616, 0, 0, 615, 0, + 0, 0, 442, 0, 615, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, @@ -1662,141 +1807,23 @@ static const yytype_int16 yytable[] = 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 0, 0, 414, 415, 0, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 416, 0, 477, 0, - 400, 0, 0, 0, 0, 0, 480, 417, 418, 419, - 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 292, 293, 294, 295, 296, 0, 0, 0, 421, 422, - 423, 424, 425, 297, 298, 299, 300, 301, 302, 303, - 481, 482, 483, 484, 0, 485, 486, 487, 488, 489, - 490, 491, 304, 305, 306, 307, 308, 309, 426, 427, - 428, 429, 430, 431, 432, 433, 310, 492, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 0, 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 416, 0, 477, 0, 0, 0, - 0, 0, 0, 0, 480, 417, 418, 419, 420, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 292, 293, - 294, 295, 296, 0, 0, 0, 421, 422, 423, 424, - 425, 297, 298, 299, 300, 301, 302, 303, 481, 482, - 483, 484, 0, 485, 486, 487, 488, 489, 490, 491, - 304, 305, 306, 307, 308, 309, 426, 427, 428, 429, - 430, 431, 432, 433, 310, 492, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 0, 0, 414, 415, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 416, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 480, 417, 418, 419, 420, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 292, 293, 294, 295, - 296, 0, 0, 0, 421, 422, 423, 424, 425, 297, - 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 304, 305, - 306, 307, 308, 309, 426, 427, 428, 429, 430, 431, - 432, 433, 310, 0, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 0, - 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, + 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 327, 328, 329, 330, 331, + 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, + 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 416, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 417, 418, 419, 420, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 292, 293, 294, 295, 0, 0, - 0, 0, 421, 422, 423, 424, 425, 297, 298, 299, - 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 304, 305, 306, 307, - 308, 309, 426, 427, 428, 429, 430, 431, 432, 433, - 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, + 339, 340, 341, 342, 343, 344, 0, 0, 0, 0, + 0, 0, 0, 0, 345, 0, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, @@ -1825,19 +1852,159 @@ static const yytype_int16 yytable[] = 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 0, 0, 0, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 501, 502, 0, 325, 0, 591, 592, 0, + 0, 0, 0, 593, 503, 504, 505, 506, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, + 330, 331, 0, 0, 0, 507, 508, 509, 510, 511, + 332, 333, 334, 335, 336, 337, 338, 594, 595, 596, + 597, 0, 598, 599, 600, 601, 602, 603, 604, 605, + 606, 607, 339, 340, 341, 342, 343, 344, 512, 513, + 514, 515, 516, 517, 518, 519, 345, 608, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 291, 0, + 0, 0, 0, 0, 501, 502, 0, 325, 0, 591, + 767, 0, 0, 0, 0, 593, 503, 504, 505, 506, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, + 328, 329, 330, 331, 0, 0, 0, 507, 508, 509, + 510, 511, 332, 333, 334, 335, 336, 337, 338, 594, + 595, 596, 597, 0, 598, 599, 600, 601, 602, 603, + 604, 605, 606, 607, 339, 340, 341, 342, 343, 344, + 512, 513, 514, 515, 516, 517, 518, 519, 345, 608, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 292, 293, 294, 295, 296, 0, 0, 0, - 0, 0, 0, 0, 0, 297, 298, 299, 300, 301, - 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 304, 305, 306, 307, 308, 309, - 0, 0, 0, 0, 0, 0, 0, 0, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 1, 2, 3, 4, 5, + 0, 0, 0, 0, 0, 0, 501, 502, 0, 325, + 0, 591, 0, 0, 0, 0, 0, 593, 503, 504, + 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 327, 328, 329, 330, 331, 0, 0, 0, 507, + 508, 509, 510, 511, 332, 333, 334, 335, 336, 337, + 338, 594, 595, 596, 597, 0, 598, 599, 600, 601, + 602, 603, 604, 605, 606, 607, 339, 340, 341, 342, + 343, 344, 512, 513, 514, 515, 516, 517, 518, 519, + 345, 608, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 499, + 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 501, 502, + 0, 325, 0, 484, 0, 0, 0, 0, 0, 593, + 503, 504, 505, 506, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 331, 0, 0, + 0, 507, 508, 509, 510, 511, 332, 333, 334, 335, + 336, 337, 338, 594, 595, 596, 597, 0, 598, 599, + 600, 601, 602, 603, 604, 605, 606, 607, 339, 340, + 341, 342, 343, 344, 512, 513, 514, 515, 516, 517, + 518, 519, 345, 608, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, @@ -1866,60 +2033,114 @@ static const yytype_int16 yytable[] = 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, + 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 379, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 0, 0, 0, 0, - 0, 0, 380, 297, 298, 299, 300, 301, 302, 303, + 501, 502, 0, 325, 0, 0, 0, 0, 0, 0, + 0, 593, 503, 504, 505, 506, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 327, 328, 329, 330, 331, + 0, 0, 0, 507, 508, 509, 510, 511, 332, 333, + 334, 335, 336, 337, 338, 594, 595, 596, 597, 0, + 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, + 339, 340, 341, 342, 343, 344, 512, 513, 514, 515, + 516, 517, 518, 519, 345, 608, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 0, 0, 0, 310, 0, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 501, 502, 0, 325, 0, 0, 0, 0, + 0, 0, 0, 593, 503, 504, 505, 506, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, + 330, 331, 0, 0, 0, 507, 508, 509, 510, 511, + 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 548, + 0, 0, 339, 340, 341, 342, 343, 344, 512, 513, + 514, 515, 516, 517, 518, 519, 345, 0, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 0, 0, 0, 318, 319, 320, 321, + 322, 323, 324, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 292, 293, - 294, 295, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 0, 0, 501, 502, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 503, 504, 505, 506, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, + 328, 329, 330, 0, 0, 0, 0, 507, 508, 509, + 510, 511, 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 0, 0, 0, 310, 0, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 0, 0, 0, 0, 339, 340, 341, 342, 343, 344, + 512, 513, 514, 515, 516, 517, 518, 519, 345, 0, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -1948,59 +2169,113 @@ static const yytype_int16 yytable[] = 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 630, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 325, + 0, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 292, 293, 294, 295, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 297, - 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 304, 305, - 306, 307, 308, 309, 0, 0, 0, 0, 0, 0, - 0, 0, 310, 0, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 0, + 0, 327, 328, 329, 330, 331, 0, 0, 0, 0, + 0, 0, 0, 0, 332, 333, 334, 335, 336, 337, + 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 339, 340, 341, 342, + 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, + 345, 0, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, + 336, 337, 338, 594, 0, 0, 597, 0, 598, 599, + 0, 0, 602, 0, 0, 0, 0, 0, 339, 340, + 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, + 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, + 0, 0, 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 292, 293, 294, 295, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 297, 298, 299, - 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 0, 0, 0, - 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, + 0, 435, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 327, 328, 329, 330, 0, + 0, 0, 0, 0, 0, 0, 0, 436, 332, 333, + 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 339, 340, 341, 342, 343, 344, 0, 0, 0, 0, + 0, 0, 0, 0, 345, 0, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, @@ -2029,323 +2304,297 @@ static const yytype_int16 yytable[] = 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 0, 0, 0, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 0, 0, 0, 318, 319, 320, 321, 322, 323, + 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, + 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 339, 340, 341, 342, 343, 344, 0, 0, + 0, 0, 0, 0, 0, 0, 345, 0, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 0, 0, 0, 318, 319, 320, 321, + 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 292, 293, 294, 295, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 297, 298, 299, 300, 301, - 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 304, 305, 306, 307, 308, 309, - 0, 0, 0, 0, 0, 0, 0, 0, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 0, 0, 414, 415, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 416, 0, 0, 0, 520, - 687, 0, 0, 0, 0, 0, 417, 418, 419, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, - 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, + 706, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, + 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, - 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 318, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 0, 0, 414, 415, 0, 0, + 0, 0, 0, 0, 339, 340, 341, 342, 343, 344, + 0, 0, 0, 0, 0, 0, 0, 0, 345, 0, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 0, 0, 0, 318, 319, + 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 416, 0, 0, 461, 0, - 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, - 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, + 0, 0, 819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, - 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 318, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 0, 0, 414, 415, 0, 0, + 0, 327, 328, 329, 330, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 332, 333, 334, 335, 336, 337, + 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 339, 340, 341, 342, + 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, + 345, 0, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 416, 0, 0, 0, 520, - 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, - 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, - 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 318, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 0, 0, 414, 415, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 416, 0, 0, 576, 0, - 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, - 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, - 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 318, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 0, 0, 414, 415, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 416, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 588, 417, 418, 419, 420, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, - 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, - 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 318, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 0, 0, 414, 415, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 416, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, - 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, - 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 318, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 0, 0, 414, 415, 0, 444, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 462, 0, 416, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, - 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, - 424, 425, 297, 0, 0, 0, 0, 302, 538, 0, - 0, 541, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 462, 0, 0, 0, 0, 426, 427, 428, - 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, - 0, 462, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, + 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 339, 340, + 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, + 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, + 0, 0, 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 631, 632, 633, 462, 462, 462, 462, 462, 462, - 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 0, 0, 0, 0, 0, 327, 328, 329, 330, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, + 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 339, 340, 341, 342, 343, 344, 0, 0, 0, 0, + 0, 0, 0, 0, 345, 0, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, + 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 501, 502, 0, 0, 0, 636, 774, 0, 0, + 0, 0, 0, 503, 504, 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 507, 508, 509, 510, 511, 332, + 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 512, 513, 514, + 515, 516, 517, 518, 519, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, + 0, 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 501, 502, 0, 0, 0, 636, + 885, 0, 0, 0, 0, 0, 503, 504, 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 507, 508, 509, + 510, 511, 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 512, 513, 514, 515, 516, 517, 518, 519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 462 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 321, 0, 455, 0, 358, 315, 314, 361, 0, - 363, 364, 321, 333, 367, 4, 5, 6, 7, 8, + 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 524, 314, 63, 64, 65, 66, 67, 68, + 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, @@ -2368,56 +2617,114 @@ static const yytype_int16 yycheck[] = 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 341, 349, 416, 378, 506, 518, - 408, 520, 397, 384, 523, 580, 453, 656, 297, 298, - 302, 324, 350, 316, 318, 293, 294, 314, 350, 316, - 374, 324, 316, 370, 405, 406, 323, 299, 300, 316, - 324, 341, 315, 371, 442, 684, 323, 350, 321, 349, - 341, 315, 389, 332, 333, 337, 350, 357, 349, 357, - 360, 357, 351, 295, 296, 316, 357, 356, 357, 695, - 370, 456, 323, 317, 374, 315, 702, 321, 488, 370, - 490, 321, 314, 374, 316, 316, 584, 713, 320, 389, - 475, 318, 323, 315, 321, 315, 315, 324, 389, 321, - 400, 321, 321, 321, 315, 614, 324, 451, 321, 400, - 321, 324, 321, 550, 321, 324, 453, 324, 455, 324, - 518, 321, 520, 533, 324, 523, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 339, 340, 341, 537, - 562, 563, 564, 565, 321, 323, 321, 324, 329, 330, - 331, 451, 717, 453, 326, 455, 328, 655, 667, 319, - 451, 321, 453, 332, 455, 321, 322, 321, 322, 558, - 559, 318, 560, 561, 545, 318, 586, 350, 316, 350, - 590, 618, 566, 567, 350, 324, 323, 524, 350, 315, - 314, 316, 350, 350, 336, 335, 301, 303, 707, 334, - 317, 316, 314, 319, 324, 324, 506, 605, 606, 322, - 314, 314, 314, 550, 324, 506, 614, 324, 314, 314, - 350, 350, 315, 317, 524, 723, 317, 350, 314, 321, - 358, 319, 317, 524, 315, 314, 350, 315, 318, 323, - 650, 324, 315, 318, 362, 319, 656, 318, 324, 568, - 550, 569, 572, 570, 673, 571, 458, 296, 573, 550, - 628, 370, 658, 374, 544, 701, 374, 713, 368, 667, - 714, 658, 684, 516, 684, 516, 675, 516, -1, -1, - 580, 618, -1, -1, 584, 357, 696, -1, 673, 580, - -1, 689, -1, 584, -1, -1, -1, -1, -1, -1, - -1, -1, 712, -1, -1, -1, -1, -1, -1, 707, - -1, -1, -1, -1, -1, -1, -1, -1, 618, 656, - -1, -1, -1, -1, -1, -1, -1, 618, -1, -1, - -1, -1, -1, -1, -1, 679, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 684, -1, -1, - -1, -1, -1, -1, -1, 655, 656, -1, 658, -1, - -1, -1, -1, -1, 655, 656, -1, 658, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 679, - -1, -1, -1, -1, 684, -1, -1, -1, 679, -1, - -1, -1, -1, 684, -1, 695, -1, -1, -1, -1, - -1, -1, 702, -1, 695, -1, -1, -1, -1, -1, - -1, 702, -1, 713, -1, -1, -1, 717, -1, -1, - -1, -1, 713, 723, -1, -1, 717, -1, -1, -1, - 0, -1, 723, 3, 4, 5, 6, 7, 8, 9, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, + 0, 0, 321, 0, 0, 0, 0, 0, 499, 500, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 501, 502, 0, + 0, 575, 0, 0, 0, 0, 0, 0, 0, 503, + 504, 505, 506, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 507, 508, 509, 510, 511, 332, 0, 0, 0, 0, + 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 512, 513, 514, 515, 516, 517, 518, + 519, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, + 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, + 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 501, 502, 0, 0, 0, 636, 0, 0, 0, 0, + 0, 0, 503, 504, 505, 506, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 507, 508, 509, 510, 511, 332, 0, + 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, + 516, 517, 518, 519, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 0, 0, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, + 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 501, 502, 0, 0, 733, 0, 0, + 0, 0, 0, 0, 0, 503, 504, 505, 506, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 507, 508, 509, 510, + 511, 332, 0, 0, 0, 0, 337, 338, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, + 513, 514, 515, 516, 517, 518, 519, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, + 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, @@ -2440,65 +2747,70 @@ static const yytype_int16 yycheck[] = 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 324, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 338, 339, - 340, 341, 342, -1, -1, -1, -1, -1, -1, -1, - -1, 351, 352, 353, 354, 355, 356, 357, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 370, 371, 372, 373, 374, 375, -1, -1, -1, -1, - -1, -1, -1, -1, 384, -1, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, -1, -1, 295, 296, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 314, -1, 316, -1, 318, 319, -1, -1, - -1, -1, 324, 325, 326, 327, 328, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 338, 339, 340, 341, - 342, -1, -1, -1, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, + 0, 321, 0, 0, 0, 0, 0, 499, 500, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 501, 502, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 744, 503, 504, + 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, + 508, 509, 510, 511, 332, 0, 0, 0, 0, 337, + 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 512, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, + 0, 0, 0, 0, 321, 0, 0, 0, 0, 0, + 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 501, + 502, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 503, 504, 505, 506, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 507, 508, 509, 510, 511, 332, 0, 0, + 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 512, 513, 514, 515, 516, + 517, 518, 519, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, @@ -2521,66 +2833,71 @@ static const yytype_int16 yycheck[] = 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, - -1, 295, 296, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 314, -1, 316, -1, 318, 319, -1, -1, -1, -1, - 324, 325, 326, 327, 328, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 338, 339, 340, 341, 342, -1, - -1, -1, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, -1, -1, 295, - 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, - 316, -1, 318, -1, -1, -1, -1, -1, 324, 325, - 326, 327, 328, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 338, 339, 340, 341, 342, -1, -1, -1, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 3, 4, 5, 6, 7, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 0, 0, 0, 0, 0, 0, 321, 0, 0, + 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 501, 502, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 503, 504, 505, 506, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 507, 508, 509, 510, 511, + 332, 0, 0, 0, 0, 337, 654, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, + 321, 0, 0, 0, 0, 0, 499, 500, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 501, 502, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 503, 504, 505, + 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 507, 508, + 509, 510, 694, 332, 0, 0, 0, 0, 337, 338, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 512, 513, 514, 515, 516, 517, 518, 519, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, @@ -2603,182 +2920,115 @@ static const yytype_int16 yycheck[] = 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, -1, -1, 295, 296, -1, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, + 0, 0, 0, 321, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 0, 0, 0, + 0, 337, 338 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 382, 0, 493, 622, 502, 401, 401, 481, 0, + 434, 406, 542, 0, 0, 736, 440, 634, 567, 636, + 401, 390, 639, 413, 569, 406, 348, 547, 558, 348, + 359, 385, 552, 331, 332, 336, 353, 349, 528, 348, + 898, 561, 351, 351, 348, 426, 356, 905, 350, 352, + 570, 359, 351, 356, 356, 409, 385, 915, 368, 358, + 382, 430, 381, 382, 383, 384, 490, 491, 385, 367, + 368, 372, 351, 382, 547, 349, 351, 446, 382, 552, + 359, 329, 330, 358, 349, 558, 351, 351, 561, 374, + 375, 376, 473, 358, 358, 640, 353, 570, 361, 356, + 363, 349, 359, 351, 601, 349, 603, 355, 408, 409, + 410, 411, 412, 413, 414, 350, 589, 719, 720, 721, + 722, 356, 740, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 350, 350, 356, 350, 349, 359, 356, + 356, 349, 356, 358, 634, 350, 636, 350, 349, 639, + 540, 356, 649, 356, 540, 350, 773, 351, 350, 708, + 546, 356, 548, 653, 356, 551, 556, 553, 349, 555, + 556, 350, 350, 350, 560, 350, 350, 356, 356, 356, + 349, 356, 356, 350, 350, 350, 567, 350, 569, 356, + 356, 356, 350, 356, 350, 350, 565, 350, 919, 350, + 356, 356, 350, 356, 350, 356, 350, 350, 356, 350, + 356, 356, 356, 356, 352, 356, 352, 349, 356, 356, + 356, 385, 359, 841, 381, 382, 383, 384, 382, 778, + 439, 385, 382, 327, 328, 385, 853, 632, 632, 356, + 382, 356, 359, 385, 359, 742, 354, 382, 356, 746, + 385, 632, 382, 382, 382, 385, 385, 385, 382, 640, + 382, 385, 382, 385, 382, 385, 382, 385, 356, 385, + 356, 359, 481, 359, 764, 765, 349, 797, 798, 703, + 810, 333, 334, 773, 804, 805, 364, 365, 366, 359, + 499, 500, 909, 356, 357, 356, 357, 715, 716, 367, + 717, 718, 723, 724, 359, 385, 385, 925, 353, 385, + 353, 351, 351, 385, 385, 350, 385, 359, 349, 356, + 358, 350, 531, 356, 797, 798, 358, 708, 356, 356, + 356, 804, 805, 356, 356, 356, 356, 810, 547, 812, + 356, 356, 839, 552, 358, 842, 359, 350, 349, 558, + 349, 385, 561, 371, 351, 385, 351, 369, 348, 352, + 385, 570, 370, 853, 335, 337, 385, 352, 349, 349, + 354, 359, 349, 349, 385, 349, 359, 359, 357, 385, + 589, 359, 382, 349, 359, 882, 359, 350, 356, 359, + 390, 382, 356, 358, 356, 350, 350, 778, 398, 390, + 398, 401, 899, 352, 352, 895, 406, 398, 406, 356, + 401, 398, 398, 348, 348, 406, 416, 914, 354, 909, + 406, 382, 350, 349, 393, 385, 426, 425, 353, 358, + 430, 350, 359, 353, 725, 426, 353, 359, 397, 430, + 354, 727, 726, 730, 331, 728, 446, 842, 729, 658, + 702, 572, 817, 844, 904, 446, 915, 844, 916, 632, + 882, 842, 632, 430, 632, 398, 563, 424, 426, 795, + 793, 798, 802, 473, 430, 800, 808, 805, 812, 810, + -1, -1, 473, -1, 484, -1, -1, 882, -1, -1, + -1, -1, -1, 484, -1, -1, -1, -1, -1, -1, + -1, 882, -1, 712, 713, 714, 715, 716, 717, 718, + 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, + 729, 730, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 536, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 314, -1, 316, -1, - 318, -1, -1, -1, -1, -1, 324, 325, 326, 327, - 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 338, 339, 340, 341, 342, -1, -1, -1, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, -1, -1, 295, 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 314, -1, 316, -1, -1, -1, - -1, -1, -1, -1, 324, 325, 326, 327, 328, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 338, 339, - 340, 341, 342, -1, -1, -1, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, -1, -1, 295, 296, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 565, -1, 567, -1, 569, + -1, -1, -1, -1, 565, -1, 567, -1, 569, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 797, 798, + -1, -1, -1, -1, -1, 804, 805, -1, -1, -1, + -1, 810, -1, 812, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 314, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 324, 325, 326, 327, 328, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 338, 339, 340, 341, - 342, -1, -1, -1, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, - -1, 295, 296, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 622, -1, -1, -1, -1, -1, -1, -1, + -1, 622, 632, -1, -1, -1, -1, -1, -1, -1, + 640, 632, -1, -1, -1, -1, -1, -1, -1, 640, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 325, 326, 327, 328, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 338, 339, 340, 341, -1, -1, - -1, -1, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 324, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 338, 339, 340, 341, 342, -1, -1, -1, - -1, -1, -1, -1, -1, 351, 352, 353, 354, 355, - 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 370, 371, 372, 373, 374, 375, - -1, -1, -1, -1, -1, -1, -1, -1, 384, -1, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 3, 4, 5, 6, 7, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 708, -1, + -1, -1, -1, -1, -1, -1, -1, 708, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 736, -1, -1, -1, + 740, -1, -1, -1, -1, 736, -1, -1, -1, 740, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 778, -1, + -1, -1, -1, -1, -1, -1, -1, 778, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 841, 842, -1, 844, -1, 844, -1, -1, -1, + 841, 842, -1, 844, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 882, -1, -1, -1, -1, -1, -1, -1, + -1, 882, -1, -1, -1, -1, -1, -1, 898, -1, + -1, -1, -1, -1, -1, 905, -1, 898, -1, -1, + -1, -1, -1, -1, 905, 915, -1, -1, -1, 919, + -1, -1, -1, -1, 915, 925, -1, -1, 919, -1, + -1, -1, 0, -1, 925, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, @@ -2807,60 +3057,114 @@ static const yytype_int16 yycheck[] = 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, -1, -1, -1, -1, -1, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 324, -1, -1, -1, + -1, -1, -1, 351, -1, -1, -1, -1, -1, -1, + -1, 359, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 373, 374, 375, 376, 377, + -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, + 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 338, 339, 340, 341, -1, -1, -1, -1, -1, -1, - -1, -1, 350, 351, 352, 353, 354, 355, 356, 357, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 370, 371, 372, 373, 374, 375, -1, -1, - -1, -1, -1, -1, -1, -1, 384, -1, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 319, + 408, 409, 410, 411, 412, 413, -1, -1, -1, -1, + -1, -1, -1, -1, 422, -1, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 338, 339, - 340, 341, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 351, 352, 353, 354, 355, 356, 357, -1, -1, + -1, -1, 348, 349, -1, 351, -1, 353, 354, -1, + -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, + 376, 377, -1, -1, -1, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, -1, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 370, 371, 372, 373, 374, 375, -1, -1, -1, -1, - -1, -1, -1, -1, 384, -1, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 3, 4, 5, 6, 7, 8, 9, 10, 11, + -1, -1, -1, -1, 348, 349, -1, 351, -1, 353, + 354, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, + 374, 375, 376, 377, -1, -1, -1, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, -1, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, @@ -2889,18 +3193,158 @@ static const yytype_int16 yycheck[] = 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, -1, 329, 330, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 348, 349, -1, 351, + -1, 353, -1, -1, -1, -1, -1, 359, 360, 361, + 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 373, 374, 375, 376, 377, -1, -1, -1, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, -1, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, -1, -1, 329, + 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, + -1, 351, -1, 353, -1, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 373, 374, 375, 376, 377, -1, -1, + -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, -1, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, + -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 348, 349, -1, 351, -1, -1, -1, -1, -1, -1, + -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 373, 374, 375, 376, 377, + -1, -1, -1, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, -1, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 319, -1, -1, + -1, -1, 348, 349, -1, 351, -1, -1, -1, -1, + -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, + 376, 377, -1, -1, -1, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 338, 339, 340, 341, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 351, - 352, 353, 354, 355, 356, 357, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, - 372, 373, 374, 375, -1, -1, -1, -1, -1, -1, - -1, -1, 384, -1, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, + -1, -1, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, -1, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, @@ -2929,365 +3373,608 @@ static const yytype_int16 yycheck[] = 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, -1, 320, 321, 322, 323, + 324, 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 348, 349, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, + 374, 375, 376, -1, -1, -1, -1, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 319, -1, -1, -1, -1, + -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, -1, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 338, 339, 340, 341, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 351, 352, 353, - 354, 355, 356, 357, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 370, 371, 372, 373, - 374, 375, -1, -1, -1, -1, -1, -1, -1, -1, - 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 351, + -1, -1, -1, -1, -1, -1, -1, 359, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 373, 374, 375, 376, 377, -1, -1, -1, -1, + -1, -1, -1, -1, 386, 387, 388, 389, 390, 391, + 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, + 412, 413, -1, -1, -1, -1, -1, -1, -1, -1, + 422, -1, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, + 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 338, 339, 340, 341, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 351, 352, 353, 354, 355, - 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 370, 371, 372, 373, 374, 375, - -1, -1, -1, -1, -1, -1, -1, -1, 384, -1, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, -1, -1, 295, 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 314, -1, -1, -1, 318, - 319, -1, -1, -1, -1, -1, 325, 326, 327, 328, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, - 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, + -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, + 390, 391, 392, 393, -1, -1, 396, -1, 398, 399, + -1, -1, 402, -1, -1, -1, -1, -1, 408, 409, + 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, + -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, + -1, -1, 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, - 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, -1, -1, 295, 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 314, -1, -1, 317, -1, - -1, -1, -1, -1, -1, -1, 325, 326, 327, 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, - 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, + -1, 359, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 373, 374, 375, 376, -1, + -1, -1, -1, -1, -1, -1, -1, 385, 386, 387, + 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, - 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, -1, -1, 295, 296, -1, -1, + 408, 409, 410, 411, 412, 413, -1, -1, -1, -1, + -1, -1, -1, -1, 422, -1, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, -1, -1, -1, 320, 321, 322, 323, 324, 325, + 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 314, -1, -1, -1, 318, - -1, -1, -1, -1, -1, -1, 325, 326, 327, 328, + -1, -1, -1, -1, -1, 351, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, - 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, + -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, + 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, - 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, -1, -1, 295, 296, -1, -1, + -1, -1, 408, 409, 410, 411, 412, 413, -1, -1, + -1, -1, -1, -1, -1, -1, 422, -1, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, -1, 320, 321, 322, 323, + 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 314, -1, -1, 317, -1, - -1, -1, -1, -1, -1, -1, 325, 326, 327, 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, - 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, + 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, + 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, - 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, -1, -1, 295, 296, -1, -1, + -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, + -1, -1, -1, -1, -1, -1, -1, -1, 422, -1, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, -1, -1, -1, 320, 321, + 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 314, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 324, 325, 326, 327, 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, - 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, + -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, - 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, -1, -1, 295, 296, -1, -1, + -1, 373, 374, 375, 376, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 386, 387, 388, 389, 390, 391, + 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, + 412, 413, -1, -1, -1, -1, -1, -1, -1, -1, + 422, -1, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, + 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 314, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 325, 326, 327, 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, - 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, + -1, -1, -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, - 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, -1, -1, 295, 296, -1, 383, + -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, + 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, + 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, + -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, + -1, -1, 320, 321, 322, 323, 324, 325, 326, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 373, 374, 375, 376, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, + 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 408, 409, 410, 411, 412, 413, -1, -1, -1, -1, + -1, -1, -1, -1, 422, -1, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, + -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 348, 349, -1, -1, -1, 353, 354, -1, -1, + -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 397, -1, 314, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 325, 326, 327, 328, - 414, 415, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, - 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, - -1, 445, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 456, -1, -1, -1, -1, 376, 377, 378, - 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, - -1, 475, -1, -1, 393, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, + -1, -1, -1, -1, 391, 392, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 414, 415, 416, + 417, 418, 419, 420, 421, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 436, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, -1, -1, -1, -1, 323, + -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 348, 349, -1, -1, -1, 353, + 354, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, + 384, 385, 386, -1, -1, -1, -1, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 542, -1, + -1, -1, 436, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, + -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 555, 556, 557, 558, 559, 560, 561, 562, 563, - 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, + -1, -1, -1, -1, -1, -1, -1, 348, 349, -1, + -1, 352, -1, -1, -1, -1, -1, -1, -1, 360, + 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 381, 382, 383, 384, 385, 386, -1, -1, -1, -1, + 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 414, 415, 416, 417, 418, 419, 420, + 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 436, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, + -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, + -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 348, 349, -1, -1, -1, 353, -1, -1, -1, -1, + -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, + -1, -1, -1, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 436, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, -1, -1, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, -1, -1, -1, -1, -1, -1, 323, -1, + -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 348, 349, -1, -1, 352, -1, -1, + -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, + 385, 386, -1, -1, -1, -1, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 414, + 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 673 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = -{ - 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, + -1, 436, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, + -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, @@ -3310,6904 +3997,8216 @@ static const yytype_uint16 yystos[] = 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 324, 338, 339, 340, 341, 342, 351, 352, 353, - 354, 355, 356, 357, 370, 371, 372, 373, 374, 375, - 384, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 442, 443, 446, 447, - 448, 449, 453, 454, 455, 456, 457, 458, 461, 462, - 463, 464, 465, 467, 472, 473, 474, 515, 516, 517, - 473, 318, 350, 314, 314, 324, 350, 324, 518, 315, - 321, 450, 451, 452, 462, 467, 321, 324, 350, 324, - 350, 463, 467, 332, 469, 470, 0, 516, 467, 476, - 318, 350, 371, 459, 460, 350, 466, 316, 324, 468, - 318, 494, 451, 450, 452, 350, 350, 314, 323, 468, - 318, 321, 324, 445, 295, 296, 314, 325, 326, 327, - 328, 346, 347, 348, 349, 350, 376, 377, 378, 379, - 380, 381, 382, 383, 412, 413, 414, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 465, 467, 471, 468, - 324, 462, 467, 477, 478, 475, 323, 315, 321, 315, - 321, 317, 423, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 316, 324, 316, 318, 319, - 324, 358, 359, 360, 361, 363, 364, 365, 366, 367, - 368, 369, 385, 423, 436, 438, 440, 442, 446, 465, - 467, 483, 484, 485, 486, 487, 495, 496, 497, 498, - 501, 502, 505, 506, 507, 514, 519, 468, 323, 468, - 318, 438, 481, 323, 444, 350, 321, 324, 423, 423, - 440, 295, 296, 316, 320, 315, 315, 321, 357, 438, - 314, 423, 321, 333, 467, 350, 479, 480, 319, 478, - 477, 436, 441, 460, 350, 329, 330, 331, 326, 328, - 293, 294, 297, 298, 332, 333, 299, 300, 336, 335, - 334, 301, 303, 302, 337, 317, 317, 436, 316, 319, - 488, 314, 324, 324, 509, 314, 314, 324, 324, 440, - 314, 440, 322, 324, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 323, 439, 321, 324, 319, 484, - 498, 502, 507, 481, 323, 481, 482, 481, 477, 350, - 315, 415, 440, 350, 438, 423, 479, 468, 321, 324, - 319, 423, 423, 423, 425, 425, 426, 426, 427, 427, - 427, 427, 428, 428, 429, 430, 431, 432, 433, 434, - 437, 317, 350, 520, 521, 495, 508, 484, 510, 440, - 324, 440, 322, 438, 438, 481, 319, 321, 319, 317, - 324, 480, 440, 314, 317, 321, 489, 440, 455, 462, - 500, 358, 483, 496, 511, 315, 315, 319, 481, 322, - 441, 317, 521, 319, 350, 315, 314, 500, 512, 513, - 491, 492, 493, 499, 503, 438, 315, 323, 485, 490, - 494, 440, 324, 315, 362, 487, 485, 318, 481, 315, - 440, 490, 491, 495, 504, 324, 319 -}; + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, + -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 348, 349, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, + 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, + 382, 383, 384, 385, 386, -1, -1, -1, -1, 391, + 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 436, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, + -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, + 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, + 349, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, + -1, -1, 391, 392, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 414, 415, 416, 417, 418, + 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 436, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, -1, -1, -1, -1, -1, -1, 323, -1, -1, + -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 348, 349, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, + 386, -1, -1, -1, -1, 391, 392, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 436, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, + 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 348, 349, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 360, 361, 362, + 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, + 383, 384, 385, 386, -1, -1, -1, -1, 391, 392, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 436, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, + -1, -1, -1, 323, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, -1, -1, -1, + -1, 391, 392 +}; + + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_int16 yystos[] = +{ + 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 351, 359, 373, 374, 375, + 376, 377, 386, 387, 388, 389, 390, 391, 392, 408, + 409, 410, 411, 412, 413, 422, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 486, 487, 490, + 491, 492, 493, 497, 498, 499, 500, 501, 502, 505, + 506, 507, 508, 509, 511, 516, 517, 518, 559, 560, + 561, 563, 570, 574, 575, 580, 583, 349, 349, 349, + 349, 349, 349, 349, 349, 351, 517, 353, 385, 349, + 349, 359, 385, 359, 562, 350, 356, 494, 495, 496, + 506, 511, 356, 359, 385, 359, 385, 507, 511, 367, + 513, 514, 0, 560, 491, 499, 506, 359, 490, 385, + 566, 567, 584, 585, 382, 385, 566, 382, 566, 382, + 566, 382, 566, 382, 566, 566, 584, 382, 566, 385, + 564, 565, 511, 520, 353, 385, 409, 503, 504, 385, + 510, 351, 359, 512, 353, 538, 563, 495, 494, 496, + 385, 385, 349, 358, 512, 353, 356, 359, 489, 329, + 330, 348, 349, 360, 361, 362, 363, 381, 382, 383, + 384, 385, 414, 415, 416, 417, 418, 419, 420, 421, + 456, 457, 458, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 509, 511, 515, 512, 350, 385, 359, 358, + 356, 350, 356, 350, 356, 358, 356, 356, 356, 350, + 356, 356, 356, 356, 356, 356, 356, 350, 356, 350, + 356, 349, 352, 356, 359, 506, 511, 521, 522, 519, + 358, 350, 356, 350, 356, 352, 467, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 351, + 359, 353, 354, 359, 393, 394, 395, 396, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 423, 467, + 480, 482, 484, 486, 490, 509, 511, 527, 528, 529, + 530, 531, 539, 540, 541, 542, 545, 546, 549, 550, + 551, 558, 563, 512, 358, 512, 353, 482, 525, 358, + 488, 385, 356, 359, 467, 467, 484, 329, 330, 351, + 355, 350, 350, 356, 392, 482, 349, 467, 356, 368, + 563, 348, 351, 382, 567, 584, 385, 585, 348, 381, + 382, 383, 384, 571, 572, 382, 480, 485, 573, 382, + 381, 382, 383, 384, 576, 577, 382, 485, 578, 382, + 348, 579, 382, 584, 385, 485, 581, 582, 382, 485, + 352, 565, 511, 385, 523, 524, 354, 522, 521, 485, + 504, 385, 364, 365, 366, 361, 363, 327, 328, 331, + 332, 367, 368, 333, 334, 371, 370, 369, 335, 337, + 336, 372, 352, 352, 480, 354, 532, 349, 359, 359, + 553, 349, 349, 359, 359, 484, 349, 484, 357, 359, + 359, 359, 359, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 358, 483, 356, 359, 354, 528, 542, + 546, 551, 525, 358, 354, 525, 526, 525, 521, 385, + 350, 459, 484, 385, 482, 467, 348, 382, 568, 569, + 350, 358, 350, 356, 350, 356, 350, 356, 356, 350, + 356, 350, 356, 350, 356, 356, 350, 356, 356, 350, + 356, 350, 356, 350, 350, 523, 512, 356, 359, 354, + 467, 467, 467, 469, 469, 470, 470, 471, 471, 471, + 471, 472, 472, 473, 474, 475, 476, 477, 478, 481, + 352, 539, 552, 528, 554, 484, 359, 484, 357, 482, + 482, 525, 354, 356, 354, 352, 352, 356, 352, 356, + 572, 571, 485, 573, 577, 576, 485, 578, 348, 579, + 581, 582, 359, 524, 484, 533, 484, 499, 544, 393, + 527, 540, 555, 350, 350, 354, 525, 348, 382, 350, + 350, 350, 350, 350, 350, 357, 354, 385, 350, 349, + 544, 556, 557, 535, 536, 537, 543, 547, 482, 358, + 529, 534, 538, 484, 359, 350, 397, 531, 529, 353, + 525, 350, 484, 534, 535, 539, 548, 359, 354 +}; + + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_int16 yyr1[] = +{ + 0, 455, 456, 457, 457, 457, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 457, 458, 458, + 458, 458, 458, 458, 459, 460, 461, 462, 462, 463, + 463, 464, 464, 465, 466, 466, 466, 467, 467, 467, + 467, 468, 468, 468, 468, 469, 469, 469, 469, 470, + 470, 470, 471, 471, 471, 472, 472, 472, 472, 472, + 473, 473, 473, 474, 474, 475, 475, 476, 476, 477, + 477, 478, 478, 479, 479, 480, 481, 480, 482, 482, + 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, + 483, 484, 484, 485, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 488, 487, 489, 489, 490, + 490, 490, 490, 491, 491, 492, 492, 493, 494, 494, + 495, 495, 495, 495, 496, 497, 497, 497, 497, 497, + 498, 498, 498, 498, 498, 499, 499, 500, 501, 501, + 501, 501, 501, 501, 501, 501, 502, 503, 503, 504, + 504, 504, 505, 506, 506, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 508, 508, 508, 508, + 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, + 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, + 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, + 508, 509, 510, 510, 511, 511, 512, 512, 512, 512, + 513, 513, 514, 515, 515, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 517, 517, 517, 519, 518, 520, 518, 521, 521, 522, + 522, 523, 523, 524, 524, 525, 525, 525, 525, 526, + 526, 527, 528, 528, 529, 529, 529, 529, 529, 529, + 529, 529, 530, 531, 532, 533, 531, 534, 534, 536, + 535, 537, 535, 538, 538, 539, 539, 540, 540, 541, + 541, 542, 543, 543, 544, 544, 545, 545, 547, 546, + 548, 548, 549, 549, 550, 550, 552, 551, 553, 551, + 554, 551, 555, 555, 556, 556, 557, 557, 558, 558, + 558, 558, 558, 558, 558, 558, 559, 559, 560, 560, + 560, 562, 561, 563, 564, 564, 565, 565, 566, 566, + 567, 567, 568, 568, 569, 569, 570, 570, 570, 570, + 570, 570, 571, 571, 572, 572, 572, 572, 572, 573, + 573, 574, 574, 575, 575, 575, 575, 575, 575, 575, + 575, 576, 576, 577, 577, 577, 577, 578, 578, 579, + 579, 580, 580, 580, 580, 581, 581, 582, 583, 583, + 584, 584, 585, 585 +}; + + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +static const yytype_int8 yyr2[] = +{ + 0, 2, 1, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, + 1, 3, 2, 2, 1, 1, 1, 2, 2, 2, + 1, 2, 3, 2, 1, 1, 1, 1, 2, 2, + 2, 1, 1, 1, 1, 1, 3, 3, 3, 1, + 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, + 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, + 3, 1, 3, 1, 3, 1, 0, 6, 1, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 1, 2, 3, 2, 2, 4, 2, + 3, 4, 2, 3, 4, 0, 6, 2, 3, 2, + 3, 3, 4, 1, 1, 2, 3, 3, 2, 3, + 2, 1, 2, 1, 1, 1, 3, 4, 6, 5, + 1, 2, 3, 5, 4, 1, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 4, 1, 3, 1, + 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 4, 1, 1, 3, 2, 3, 2, 3, 3, 4, + 1, 0, 3, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 6, 0, 5, 1, 2, 3, + 4, 1, 3, 1, 2, 1, 3, 4, 2, 1, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 0, 0, 5, 1, 1, 0, + 2, 0, 2, 2, 3, 1, 2, 1, 2, 1, + 2, 5, 3, 1, 1, 4, 1, 2, 0, 8, + 0, 1, 3, 2, 1, 2, 0, 6, 0, 8, + 0, 7, 1, 1, 1, 0, 2, 3, 2, 2, + 2, 3, 2, 2, 2, 2, 1, 2, 1, 1, + 1, 0, 3, 5, 1, 3, 1, 4, 1, 3, + 5, 5, 1, 3, 1, 3, 4, 6, 6, 8, + 6, 8, 1, 3, 1, 1, 1, 1, 1, 1, + 3, 4, 6, 4, 6, 6, 8, 6, 8, 6, + 8, 1, 3, 1, 1, 1, 1, 1, 3, 1, + 3, 6, 8, 4, 6, 1, 3, 1, 4, 6, + 1, 3, 3, 3 +}; + + +enum { YYENOMEM = -2 }; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ + do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (pParseContext, YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ + while (0) + +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + +/* This macro is provided for backward compatibility. */ +# ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif + + +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Kind, Value, pParseContext); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) +{ + FILE *yyoutput = yyo; + YYUSE (yyoutput); + YYUSE (pParseContext); + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yykind < YYNTOKENS) + YYPRINT (yyo, yytoknum[yykind], *yyvaluep); +# endif + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ + +static void +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) +{ + YYFPRINTF (yyo, "%s %s (", + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); + + yy_symbol_value_print (yyo, yykind, yyvaluep, pParseContext); + YYFPRINTF (yyo, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule, glslang::TParseContext* pParseContext) +{ + int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)], pParseContext); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule, pParseContext); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + +/* Context of a parse error. */ +typedef struct +{ + yy_state_t *yyssp; + yysymbol_kind_t yytoken; +} yypcontext_t; + +/* Put in YYARG at most YYARGN of the expected tokens given the + current YYCTX, and return the number of tokens stored in YYARG. If + YYARG is null, return the number of expected tokens (guaranteed to + be less than YYNTOKENS). Return YYENOMEM on memory exhaustion. + Return 0 if there are more than YYARGN expected tokens, yet fill + YYARG up to YYARGN. */ +static int +yypcontext_expected_tokens (const yypcontext_t *yyctx, + yysymbol_kind_t yyarg[], int yyargn) +{ + /* Actual size of YYARG. */ + int yycount = 0; + int yyn = yypact[+*yyctx->yyssp]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (!yyarg) + ++yycount; + else if (yycount == yyargn) + return 0; + else + yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx); + } + } + if (yyarg && yycount == 0 && 0 < yyargn) + yyarg[0] = YYSYMBOL_YYEMPTY; + return yycount; +} + + + + +#ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) +# else +/* Return the length of YYSTR. */ +static YYPTRDIFF_T +yystrlen (const char *yystr) +{ + YYPTRDIFF_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +#endif + +#ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +#endif + +#ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYPTRDIFF_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYPTRDIFF_T yyn = 0; + char const *yyp = yystr; + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + else + goto append; + + append: + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (yyres) + return yystpcpy (yyres, yystr) - yyres; + else + return yystrlen (yystr); +} +#endif + + +static int +yy_syntax_error_arguments (const yypcontext_t *yyctx, + yysymbol_kind_t yyarg[], int yyargn) +{ + /* Actual size of YYARG. */ + int yycount = 0; + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yyctx->yytoken != YYSYMBOL_YYEMPTY) + { + int yyn; + if (yyarg) + yyarg[yycount] = yyctx->yytoken; + ++yycount; + yyn = yypcontext_expected_tokens (yyctx, + yyarg ? yyarg + 1 : yyarg, yyargn - 1); + if (yyn == YYENOMEM) + return YYENOMEM; + else + yycount += yyn; + } + return yycount; +} + +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return -1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return YYENOMEM if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, + const yypcontext_t *yyctx) +{ + enum { YYARGS_MAX = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULLPTR; + /* Arguments of yyformat: reported tokens (one for the "unexpected", + one per "expected"). */ + yysymbol_kind_t yyarg[YYARGS_MAX]; + /* Cumulated lengths of YYARG. */ + YYPTRDIFF_T yysize = 0; + + /* Actual size of YYARG. */ + int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX); + if (yycount == YYENOMEM) + return YYENOMEM; + + switch (yycount) + { +#define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + default: /* Avoid compiler warnings. */ + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +#undef YYCASE_ + } + + /* Compute error message size. Don't count the "%s"s, but reserve + room for the terminator. */ + yysize = yystrlen (yyformat) - 2 * yycount + 1; + { + int yyi; + for (yyi = 0; yyi < yycount; ++yyi) + { + YYPTRDIFF_T yysize1 + = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]); + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else + return YYENOMEM; + } + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return -1; + } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]); + yyformat += 2; + } + else + { + ++yyp; + ++yyformat; + } + } + return 0; +} + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep, glslang::TParseContext* pParseContext) +{ + YYUSE (yyvaluep); + YYUSE (pParseContext); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + + + + - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = -{ - 0, 411, 412, 413, 413, 413, 413, 413, 413, 413, - 413, 413, 413, 413, 413, 413, 413, 414, 414, 414, - 414, 414, 414, 415, 416, 417, 418, 418, 419, 419, - 420, 420, 421, 422, 422, 422, 423, 423, 423, 423, - 424, 424, 424, 424, 425, 425, 425, 425, 426, 426, - 426, 427, 427, 427, 428, 428, 428, 428, 428, 429, - 429, 429, 430, 430, 431, 431, 432, 432, 433, 433, - 434, 434, 435, 435, 436, 437, 436, 438, 438, 439, - 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, - 440, 440, 441, 442, 442, 442, 442, 442, 442, 442, - 442, 442, 444, 443, 445, 445, 446, 447, 447, 448, - 448, 449, 450, 450, 451, 451, 451, 451, 452, 453, - 453, 453, 453, 453, 454, 454, 454, 454, 454, 455, - 455, 456, 457, 457, 457, 457, 457, 457, 457, 457, - 458, 459, 459, 460, 460, 460, 461, 462, 462, 463, - 463, 463, 463, 463, 463, 463, 464, 464, 464, 464, - 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, - 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, - 464, 464, 464, 464, 464, 465, 466, 466, 467, 467, - 468, 468, 468, 468, 469, 469, 470, 471, 471, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 473, - 473, 473, 475, 474, 476, 474, 477, 477, 478, 478, - 479, 479, 480, 480, 481, 481, 481, 482, 482, 483, - 484, 484, 485, 485, 485, 485, 485, 485, 485, 485, - 486, 487, 488, 489, 487, 490, 490, 492, 491, 493, - 491, 494, 494, 495, 495, 496, 496, 497, 497, 498, - 499, 499, 500, 500, 501, 501, 503, 502, 504, 504, - 505, 505, 506, 506, 508, 507, 509, 507, 510, 507, - 511, 511, 512, 512, 513, 513, 514, 514, 514, 514, - 514, 515, 515, 516, 516, 516, 518, 517, 519, 520, - 520, 521, 521 -}; +/*----------. +| yyparse. | +`----------*/ - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +int +yyparse (glslang::TParseContext* pParseContext) { - 0, 2, 1, 1, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, - 3, 2, 2, 1, 1, 1, 2, 2, 2, 1, - 2, 3, 2, 1, 1, 1, 1, 2, 2, 2, - 1, 1, 1, 1, 1, 3, 3, 3, 1, 3, - 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, - 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 3, 1, 3, 1, 0, 6, 1, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 2, 2, 4, 2, 3, 4, 2, - 3, 4, 0, 6, 2, 3, 2, 1, 1, 2, - 3, 3, 2, 3, 2, 1, 2, 1, 1, 1, - 3, 4, 6, 5, 1, 2, 3, 5, 4, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 4, 1, 3, 1, 3, 1, 1, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 4, 1, 1, 3, 2, 3, - 2, 3, 3, 4, 1, 0, 3, 1, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 6, 0, 5, 1, 2, 3, 4, - 1, 3, 1, 2, 1, 3, 4, 1, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 0, 0, 5, 1, 1, 0, 2, 0, - 2, 2, 3, 1, 2, 1, 2, 1, 2, 5, - 3, 1, 1, 4, 1, 2, 0, 8, 0, 1, - 3, 2, 1, 2, 0, 6, 0, 8, 0, 7, - 1, 1, 1, 0, 2, 3, 2, 2, 2, 3, - 2, 1, 2, 1, 1, 1, 0, 3, 5, 1, - 3, 1, 4 -}; +/* Lookahead token kind. */ +int yychar; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 +/* The semantic value of the lookahead symbol. */ +/* Default value used for initialization, for pacifying older GCCs + or non-GCC compilers. */ +YY_INITIAL_VALUE (static YYSTYPE yyval_default;) +YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab + /* Number of syntax errors so far. */ + int yynerrs = 0; + yy_state_fast_t yystate = 0; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus = 0; -#define YYRECOVERING() (!!yyerrstatus) + /* Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (pParseContext, YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) - -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 + /* Their size. */ + YYPTRDIFF_T yystacksize = YYINITDEPTH; + /* The state stack: array, bottom, top. */ + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; + /* The semantic value stack: array, bottom, top. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; -/* Enable debugging if requested. */ -#if YYDEBUG + int yyn; + /* The return value of yyparse. */ + int yyresult; + /* Lookahead symbol kind. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + YYDPRINTF ((stderr, "Starting parse\n")); -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value, pParseContext); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) + yychar = YYEMPTY; /* Cause a token to be read. */ + goto yysetstate; -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ +/*------------------------------------------------------------. +| yynewstate -- push a new state, which is found in yystate. | +`------------------------------------------------------------*/ +yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; -static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) -{ - FILE *yyo = yyoutput; - YYUSE (yyo); - YYUSE (pParseContext); - if (!yyvaluep) - return; -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); + +/*--------------------------------------------------------------------. +| yysetstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); + + if (yyss + yystacksize - 1 <= yyssp) +#if !defined yyoverflow && !defined YYSTACK_RELOCATE + goto yyexhaustedlab; +#else + { + /* Get the current used size of the three stacks, in elements. */ + YYPTRDIFF_T yysize = yyssp - yyss + 1; + +# if defined yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + yy_state_t *yyss1 = yyss; + YYSTYPE *yyvs1 = yyvs; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yystacksize); + yyss = yyss1; + yyvs = yyvs1; + } +# else /* defined YYSTACK_RELOCATE */ + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yy_state_t *yyss1 = yyss; + union yyalloc *yyptr = + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } # endif - YYUSE (yytype); -} + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END -static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) -{ - YYFPRINTF (yyoutput, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } +#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext); - YYFPRINTF (yyoutput, ")"); -} + if (yystate == YYFINAL) + YYACCEPT; -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ + goto yybackup; -static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -{ - YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ + if (yychar == YYEMPTY) { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); + YYDPRINTF ((stderr, "Reading a token\n")); + yychar = yylex (&yylval, parseContext); } - YYFPRINTF (stderr, "\n"); -} -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) + if (yychar <= YYEOF) + { + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + /* Discard the shifted token. */ + yychar = YYEMPTY; + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + '$$ = $1'. + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ -static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, glslang::TParseContext* pParseContext) -{ - unsigned long int yylno = yyrline[yyrule]; - int yynrhs = yyr2[yyrule]; - int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) + YY_REDUCE_PRINT (yyn); + switch (yyn) { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) - , pParseContext); - YYFPRINTF (stderr, "\n"); + case 2: /* variable_identifier: IDENTIFIER */ +#line 392 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -} +#line 5181 "MachineIndependent/glslang_tab.cpp" + break; -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule, pParseContext); \ -} while (0) + case 3: /* primary_expression: variable_identifier */ +#line 398 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + } +#line 5189 "MachineIndependent/glslang_tab.cpp" + break; -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ + case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ +#line 401 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); + if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) + (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); + } +#line 5199 "MachineIndependent/glslang_tab.cpp" + break; + case 5: /* primary_expression: FLOATCONSTANT */ +#line 406 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); + } +#line 5207 "MachineIndependent/glslang_tab.cpp" + break; -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif + case 6: /* primary_expression: INTCONSTANT */ +#line 409 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); + } +#line 5215 "MachineIndependent/glslang_tab.cpp" + break; -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). + case 7: /* primary_expression: UINTCONSTANT */ +#line 412 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); + } +#line 5224 "MachineIndependent/glslang_tab.cpp" + break; - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ + case 8: /* primary_expression: BOOLCONSTANT */ +#line 416 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); + } +#line 5232 "MachineIndependent/glslang_tab.cpp" + break; -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif + case 9: /* primary_expression: STRING_LITERAL */ +#line 420 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); + } +#line 5240 "MachineIndependent/glslang_tab.cpp" + break; + case 10: /* primary_expression: INT32CONSTANT */ +#line 423 "MachineIndependent/glslang.y" + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); + } +#line 5249 "MachineIndependent/glslang_tab.cpp" + break; -#if YYERROR_VERBOSE + case 11: /* primary_expression: UINT32CONSTANT */ +#line 427 "MachineIndependent/glslang.y" + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); + } +#line 5258 "MachineIndependent/glslang_tab.cpp" + break; -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -yystrlen (const char *yystr) -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif + case 12: /* primary_expression: INT64CONSTANT */ +#line 431 "MachineIndependent/glslang.y" + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); + } +#line 5267 "MachineIndependent/glslang_tab.cpp" + break; -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; + case 13: /* primary_expression: UINT64CONSTANT */ +#line 435 "MachineIndependent/glslang.y" + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); + } +#line 5276 "MachineIndependent/glslang_tab.cpp" + break; - while ((*yyd++ = *yys++) != '\0') - continue; + case 14: /* primary_expression: INT16CONSTANT */ +#line 439 "MachineIndependent/glslang.y" + { + parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); + } +#line 5285 "MachineIndependent/glslang_tab.cpp" + break; - return yyd - 1; -} -# endif -# endif + case 15: /* primary_expression: UINT16CONSTANT */ +#line 443 "MachineIndependent/glslang.y" + { + parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); + } +#line 5294 "MachineIndependent/glslang_tab.cpp" + break; -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; + case 16: /* primary_expression: DOUBLECONSTANT */ +#line 447 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); + } +#line 5305 "MachineIndependent/glslang_tab.cpp" + break; - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; + case 17: /* primary_expression: FLOAT16CONSTANT */ +#line 453 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); + } +#line 5314 "MachineIndependent/glslang_tab.cpp" + break; - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; + case 18: /* postfix_expression: primary_expression */ +#line 461 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + } +#line 5322 "MachineIndependent/glslang_tab.cpp" + break; - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; + case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ +#line 464 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } +#line 5330 "MachineIndependent/glslang_tab.cpp" + break; - if (! yyres) - return yystrlen (yystr); + case 20: /* postfix_expression: function_call */ +#line 467 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + } +#line 5338 "MachineIndependent/glslang_tab.cpp" + break; - return yystpcpy (yyres, yystr) - yyres; -} -# endif + case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ +#line 470 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); + } +#line 5346 "MachineIndependent/glslang_tab.cpp" + break; -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. + case 22: /* postfix_expression: postfix_expression INC_OP */ +#line 473 "MachineIndependent/glslang.y" + { + parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); + parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); + } +#line 5356 "MachineIndependent/glslang_tab.cpp" + break; - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) -{ - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; + case 23: /* postfix_expression: postfix_expression DEC_OP */ +#line 478 "MachineIndependent/glslang.y" + { + parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); + parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); + } +#line 5366 "MachineIndependent/glslang_tab.cpp" + break; - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - } - } + case 24: /* integer_expression: expression */ +#line 486 "MachineIndependent/glslang.y" + { + parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5375 "MachineIndependent/glslang_tab.cpp" + break; - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ + case 25: /* function_call: function_call_or_method */ +#line 493 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); + delete (yyvsp[0].interm).function; } +#line 5384 "MachineIndependent/glslang_tab.cpp" + break; - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } + case 26: /* function_call_or_method: function_call_generic */ +#line 500 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[0].interm); + } +#line 5392 "MachineIndependent/glslang_tab.cpp" + break; - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; + case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ +#line 506 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[-1].interm); + (yyval.interm).loc = (yyvsp[0].lex).loc; } +#line 5401 "MachineIndependent/glslang_tab.cpp" + break; - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ + case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ +#line 510 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[-1].interm); + (yyval.interm).loc = (yyvsp[0].lex).loc; + } +#line 5410 "MachineIndependent/glslang_tab.cpp" + break; -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ + case 29: /* function_call_header_no_parameters: function_call_header VOID */ +#line 517 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[-1].interm); + } +#line 5418 "MachineIndependent/glslang_tab.cpp" + break; -static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, glslang::TParseContext* pParseContext) -{ - YYUSE (yyvaluep); - YYUSE (pParseContext); - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + case 30: /* function_call_header_no_parameters: function_call_header */ +#line 520 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[0].interm); + } +#line 5426 "MachineIndependent/glslang_tab.cpp" + break; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END -} + case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ +#line 526 "MachineIndependent/glslang.y" + { + TParameter param = { 0, new TType }; + param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); + (yyvsp[-1].interm).function->addParameter(param); + (yyval.interm).function = (yyvsp[-1].interm).function; + (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); + } +#line 5438 "MachineIndependent/glslang_tab.cpp" + break; + case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ +#line 533 "MachineIndependent/glslang.y" + { + TParameter param = { 0, new TType }; + param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); + (yyvsp[-2].interm).function->addParameter(param); + (yyval.interm).function = (yyvsp[-2].interm).function; + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); + } +#line 5450 "MachineIndependent/glslang_tab.cpp" + break; + case 33: /* function_call_header: function_identifier LEFT_PAREN */ +#line 543 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[-1].interm); + } +#line 5458 "MachineIndependent/glslang_tab.cpp" + break; + case 34: /* function_identifier: type_specifier */ +#line 551 "MachineIndependent/glslang.y" + { + // Constructor + (yyval.interm).intermNode = 0; + (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); + } +#line 5468 "MachineIndependent/glslang_tab.cpp" + break; -/*----------. -| yyparse. | -`----------*/ + case 35: /* function_identifier: postfix_expression */ +#line 556 "MachineIndependent/glslang.y" + { + // + // Should be a method or subroutine call, but we haven't recognized the arguments yet. + // + (yyval.interm).function = 0; + (yyval.interm).intermNode = 0; -int -yyparse (glslang::TParseContext* pParseContext) -{ -/* The lookahead symbol. */ -int yychar; + TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode(); + if (method) { + (yyval.interm).function = new TFunction(&method->getMethodName(), TType(EbtInt), EOpArrayLength); + (yyval.interm).intermNode = method->getObject(); + } else { + TIntermSymbol* symbol = (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode(); + if (symbol) { + parseContext.reservedErrorCheck(symbol->getLoc(), symbol->getName()); + TFunction *function = new TFunction(&symbol->getName(), TType(EbtVoid)); + (yyval.interm).function = function; + } else + parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "function call, method, or subroutine call expected", "", ""); + } + if ((yyval.interm).function == 0) { + // error recover + TString* empty = NewPoolTString(""); + (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); + } + } +#line 5500 "MachineIndependent/glslang_tab.cpp" + break; -/* The semantic value of the lookahead symbol. */ -/* Default value used for initialization, for pacifying older GCCs - or non-GCC compilers. */ -YY_INITIAL_VALUE (static YYSTYPE yyval_default;) -YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); + case 36: /* function_identifier: non_uniform_qualifier */ +#line 584 "MachineIndependent/glslang.y" + { + // Constructor + (yyval.interm).intermNode = 0; + (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); + } +#line 5510 "MachineIndependent/glslang_tab.cpp" + break; - /* Number of syntax errors so far. */ - int yynerrs; + case 37: /* unary_expression: postfix_expression */ +#line 593 "MachineIndependent/glslang.y" + { + parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) + parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); + } +#line 5521 "MachineIndependent/glslang_tab.cpp" + break; - int yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + case 38: /* unary_expression: INC_OP unary_expression */ +#line 599 "MachineIndependent/glslang.y" + { + parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); + } +#line 5530 "MachineIndependent/glslang_tab.cpp" + break; - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. + case 39: /* unary_expression: DEC_OP unary_expression */ +#line 603 "MachineIndependent/glslang.y" + { + parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); + } +#line 5539 "MachineIndependent/glslang_tab.cpp" + break; - Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ + case 40: /* unary_expression: unary_operator unary_expression */ +#line 607 "MachineIndependent/glslang.y" + { + if ((yyvsp[-1].interm).op != EOpNull) { + char errorOp[2] = {0, 0}; + switch((yyvsp[-1].interm).op) { + case EOpNegative: errorOp[0] = '-'; break; + case EOpLogicalNot: errorOp[0] = '!'; break; + case EOpBitwiseNot: errorOp[0] = '~'; break; + default: break; // some compilers want this + } + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].interm).loc, errorOp, (yyvsp[-1].interm).op, (yyvsp[0].interm.intermTypedNode)); + } else { + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) + (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); + } + } +#line 5560 "MachineIndependent/glslang_tab.cpp" + break; - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; + case 41: /* unary_operator: PLUS */ +#line 627 "MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } +#line 5566 "MachineIndependent/glslang_tab.cpp" + break; - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; + case 42: /* unary_operator: DASH */ +#line 628 "MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } +#line 5572 "MachineIndependent/glslang_tab.cpp" + break; - YYSIZE_T yystacksize; + case 43: /* unary_operator: BANG */ +#line 629 "MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } +#line 5578 "MachineIndependent/glslang_tab.cpp" + break; - int yyn; - int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; + case 44: /* unary_operator: TILDE */ +#line 630 "MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } +#line 5585 "MachineIndependent/glslang_tab.cpp" + break; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif + case 45: /* multiplicative_expression: unary_expression */ +#line 636 "MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5591 "MachineIndependent/glslang_tab.cpp" + break; -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ +#line 637 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + } +#line 5601 "MachineIndependent/glslang_tab.cpp" + break; - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0; + case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ +#line 642 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + } +#line 5611 "MachineIndependent/glslang_tab.cpp" + break; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; + case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ +#line 647 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + } +#line 5622 "MachineIndependent/glslang_tab.cpp" + break; - YYDPRINTF ((stderr, "Starting parse\n")); + case 49: /* additive_expression: multiplicative_expression */ +#line 656 "MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5628 "MachineIndependent/glslang_tab.cpp" + break; - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - goto yysetstate; + case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ +#line 657 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + } +#line 5638 "MachineIndependent/glslang_tab.cpp" + break; -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; + case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ +#line 662 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + } +#line 5648 "MachineIndependent/glslang_tab.cpp" + break; - yysetstate: - *yyssp = yystate; + case 52: /* shift_expression: additive_expression */ +#line 670 "MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5654 "MachineIndependent/glslang_tab.cpp" + break; - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; + case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ +#line 671 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + } +#line 5665 "MachineIndependent/glslang_tab.cpp" + break; -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; + case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ +#line 677 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + } +#line 5676 "MachineIndependent/glslang_tab.cpp" + break; - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); + case 55: /* relational_expression: shift_expression */ +#line 686 "MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5682 "MachineIndependent/glslang_tab.cpp" + break; - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ +#line 687 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + } +#line 5692 "MachineIndependent/glslang_tab.cpp" + break; - { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ + case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ +#line 692 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + } +#line 5702 "MachineIndependent/glslang_tab.cpp" + break; + + case 58: /* relational_expression: relational_expression LE_OP shift_expression */ +#line 697 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + } +#line 5712 "MachineIndependent/glslang_tab.cpp" + break; - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; + case 59: /* relational_expression: relational_expression GE_OP shift_expression */ +#line 702 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + } +#line 5722 "MachineIndependent/glslang_tab.cpp" + break; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + case 60: /* equality_expression: relational_expression */ +#line 710 "MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5728 "MachineIndependent/glslang_tab.cpp" + break; - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ +#line 711 "MachineIndependent/glslang.y" + { + parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); + parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); + parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); + parseContext.referenceCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "==", EOpEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } +#line 5742 "MachineIndependent/glslang_tab.cpp" + break; - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - if (yystate == YYFINAL) - YYACCEPT; + case 62: /* equality_expression: equality_expression NE_OP relational_expression */ +#line 720 "MachineIndependent/glslang.y" + { + parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); + parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); + parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); + parseContext.referenceCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "!=", EOpNotEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + } +#line 5756 "MachineIndependent/glslang_tab.cpp" + break; - goto yybackup; + case 63: /* and_expression: equality_expression */ +#line 732 "MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5762 "MachineIndependent/glslang_tab.cpp" + break; -/*-----------. -| yybackup. | -`-----------*/ -yybackup: + case 64: /* and_expression: and_expression AMPERSAND equality_expression */ +#line 733 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + } +#line 5773 "MachineIndependent/glslang_tab.cpp" + break; - /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ + case 65: /* exclusive_or_expression: and_expression */ +#line 742 "MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5779 "MachineIndependent/glslang_tab.cpp" + break; - /* First try to decide what to do without reference to lookahead token. */ - yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) - goto yydefault; + case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ +#line 743 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + } +#line 5790 "MachineIndependent/glslang_tab.cpp" + break; - /* Not known => get a lookahead token if don't already have one. */ + case 67: /* inclusive_or_expression: exclusive_or_expression */ +#line 752 "MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5796 "MachineIndependent/glslang_tab.cpp" + break; - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (&yylval, parseContext); + case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ +#line 753 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } +#line 5807 "MachineIndependent/glslang_tab.cpp" + break; - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } + case 69: /* logical_and_expression: inclusive_or_expression */ +#line 762 "MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5813 "MachineIndependent/glslang_tab.cpp" + break; - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yytable_value_is_error (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; + case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ +#line 763 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } +#line 5823 "MachineIndependent/glslang_tab.cpp" + break; - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; + case 71: /* logical_xor_expression: logical_and_expression */ +#line 771 "MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5829 "MachineIndependent/glslang_tab.cpp" + break; - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ +#line 772 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + } +#line 5839 "MachineIndependent/glslang_tab.cpp" + break; - /* Discard the shifted token. */ - yychar = YYEMPTY; + case 73: /* logical_or_expression: logical_xor_expression */ +#line 780 "MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5845 "MachineIndependent/glslang_tab.cpp" + break; - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END + case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ +#line 781 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + } +#line 5855 "MachineIndependent/glslang_tab.cpp" + break; - goto yynewstate; + case 75: /* conditional_expression: logical_or_expression */ +#line 789 "MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5861 "MachineIndependent/glslang_tab.cpp" + break; + case 76: /* $@1: %empty */ +#line 790 "MachineIndependent/glslang.y" + { + ++parseContext.controlFlowNestingLevel; + } +#line 5869 "MachineIndependent/glslang_tab.cpp" + break; -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; + case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ +#line 793 "MachineIndependent/glslang.y" + { + --parseContext.controlFlowNestingLevel; + parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[-4].lex).loc, "?", (yyvsp[-5].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[-5].interm.intermTypedNode), (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-4].lex).loc); + if ((yyval.interm.intermTypedNode) == 0) { + parseContext.binaryOpError((yyvsp[-4].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + } + } +#line 5886 "MachineIndependent/glslang_tab.cpp" + break; + case 78: /* assignment_expression: conditional_expression */ +#line 808 "MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5892 "MachineIndependent/glslang_tab.cpp" + break; -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; + case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ +#line 809 "MachineIndependent/glslang.y" + { + parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); + parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); + parseContext.storage16BitAssignmentCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); + parseContext.specializationCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); + parseContext.lValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.addAssign((yyvsp[-1].interm).loc, (yyvsp[-1].interm).op, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) { + parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); + (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + } + } +#line 5910 "MachineIndependent/glslang_tab.cpp" + break; - /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. + case 80: /* assignment_operator: EQUAL */ +#line 825 "MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[0].lex).loc; + (yyval.interm).op = EOpAssign; + } +#line 5919 "MachineIndependent/glslang_tab.cpp" + break; - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; + case 81: /* assignment_operator: MUL_ASSIGN */ +#line 829 "MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[0].lex).loc; + (yyval.interm).op = EOpMulAssign; + } +#line 5928 "MachineIndependent/glslang_tab.cpp" + break; + case 82: /* assignment_operator: DIV_ASSIGN */ +#line 833 "MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[0].lex).loc; + (yyval.interm).op = EOpDivAssign; + } +#line 5937 "MachineIndependent/glslang_tab.cpp" + break; - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 2: -#line 352 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); + case 83: /* assignment_operator: MOD_ASSIGN */ +#line 837 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); + (yyval.interm).loc = (yyvsp[0].lex).loc; + (yyval.interm).op = EOpModAssign; } -#line 4172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5947 "MachineIndependent/glslang_tab.cpp" break; - case 3: -#line 358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + case 84: /* assignment_operator: ADD_ASSIGN */ +#line 842 "MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[0].lex).loc; + (yyval.interm).op = EOpAddAssign; } -#line 4180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5956 "MachineIndependent/glslang_tab.cpp" break; - case 4: -#line 361 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); - if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) - (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); + case 85: /* assignment_operator: SUB_ASSIGN */ +#line 846 "MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[0].lex).loc; + (yyval.interm).op = EOpSubAssign; } -#line 4190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5965 "MachineIndependent/glslang_tab.cpp" break; - case 5: -#line 366 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); + case 86: /* assignment_operator: LEFT_ASSIGN */ +#line 850 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); + (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 4198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5974 "MachineIndependent/glslang_tab.cpp" break; - case 6: -#line 369 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); + case 87: /* assignment_operator: RIGHT_ASSIGN */ +#line 854 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); + (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 4206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5983 "MachineIndependent/glslang_tab.cpp" break; - case 7: -#line 372 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); + case 88: /* assignment_operator: AND_ASSIGN */ +#line 858 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); + (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 4215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5992 "MachineIndependent/glslang_tab.cpp" break; - case 8: -#line 376 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); + case 89: /* assignment_operator: XOR_ASSIGN */ +#line 862 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); + (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 4223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6001 "MachineIndependent/glslang_tab.cpp" break; - case 9: -#line 380 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); + case 90: /* assignment_operator: OR_ASSIGN */ +#line 866 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); + (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 4232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6010 "MachineIndependent/glslang_tab.cpp" break; - case 10: -#line 384 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); + case 91: /* expression: assignment_expression */ +#line 873 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6018 "MachineIndependent/glslang_tab.cpp" break; - case 11: -#line 388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); + case 92: /* expression: expression COMMA assignment_expression */ +#line 876 "MachineIndependent/glslang.y" + { + parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); + if ((yyval.interm.intermTypedNode) == 0) { + parseContext.binaryOpError((yyvsp[-1].lex).loc, ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + } } -#line 4250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6031 "MachineIndependent/glslang_tab.cpp" break; - case 12: -#line 392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); + case 93: /* constant_expression: conditional_expression */ +#line 887 "MachineIndependent/glslang.y" + { + parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6040 "MachineIndependent/glslang_tab.cpp" break; - case 13: -#line 396 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); + case 94: /* declaration: function_prototype SEMICOLON */ +#line 894 "MachineIndependent/glslang.y" + { + parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); + (yyval.interm.intermNode) = 0; + // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 4268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6050 "MachineIndependent/glslang_tab.cpp" break; - case 14: -#line 400 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); + case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ +#line 900 "MachineIndependent/glslang.y" + { + parseContext.requireExtensions((yyvsp[-1].interm).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); + (yyvsp[-1].interm).function->setSpirvInstruction(*(yyvsp[-2].interm.spirvInst)); // Attach SPIR-V intruction qualifier + parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); + (yyval.interm.intermNode) = 0; + // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 4277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6062 "MachineIndependent/glslang_tab.cpp" break; - case 15: -#line 404 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); + case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ +#line 907 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "SPIR-V execution mode qualifier"); + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); + (yyval.interm.intermNode) = 0; } -#line 4286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6072 "MachineIndependent/glslang_tab.cpp" break; - case 16: -#line 408 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); + case 97: /* declaration: init_declarator_list SEMICOLON */ +#line 913 "MachineIndependent/glslang.y" + { + if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) + (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 4295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6082 "MachineIndependent/glslang_tab.cpp" break; - case 17: -#line 416 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ +#line 918 "MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); + // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope + parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]); + parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); + (yyval.interm.intermNode) = 0; } -#line 4303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6094 "MachineIndependent/glslang_tab.cpp" break; - case 18: -#line 419 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); + case 99: /* declaration: block_structure SEMICOLON */ +#line 925 "MachineIndependent/glslang.y" + { + parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); + (yyval.interm.intermNode) = 0; } -#line 4311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6103 "MachineIndependent/glslang_tab.cpp" break; - case 19: -#line 422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ +#line 929 "MachineIndependent/glslang.y" + { + parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); + (yyval.interm.intermNode) = 0; } -#line 4319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6112 "MachineIndependent/glslang_tab.cpp" break; - case 20: -#line 425 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); + case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ +#line 933 "MachineIndependent/glslang.y" + { + parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); + (yyval.interm.intermNode) = 0; } -#line 4327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6121 "MachineIndependent/glslang_tab.cpp" break; - case 21: -#line 428 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); - parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); + case 102: /* declaration: type_qualifier SEMICOLON */ +#line 937 "MachineIndependent/glslang.y" + { + parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); + parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); + (yyval.interm.intermNode) = 0; } -#line 4337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6131 "MachineIndependent/glslang_tab.cpp" break; - case 22: -#line 433 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); - parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); + case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ +#line 942 "MachineIndependent/glslang.y" + { + parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); + parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); + (yyval.interm.intermNode) = 0; } -#line 4347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6141 "MachineIndependent/glslang_tab.cpp" break; - case 23: -#line 441 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ +#line 947 "MachineIndependent/glslang.y" + { + parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); + (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); + parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); + (yyval.interm.intermNode) = 0; } -#line 4356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6152 "MachineIndependent/glslang_tab.cpp" break; - case 24: -#line 448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); - delete (yyvsp[0].interm).function; + case 105: /* $@2: %empty */ +#line 956 "MachineIndependent/glslang.y" + { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } +#line 6158 "MachineIndependent/glslang_tab.cpp" + break; + + case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ +#line 956 "MachineIndependent/glslang.y" + { + --parseContext.blockNestingLevel; + parseContext.blockName = (yyvsp[-4].lex).string; + parseContext.globalQualifierFixCheck((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).qualifier); + parseContext.checkNoShaderLayouts((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).shaderQualifiers); + parseContext.currentBlockQualifier = (yyvsp[-5].interm.type).qualifier; + (yyval.interm).loc = (yyvsp[-5].interm.type).loc; + (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 4365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6172 "MachineIndependent/glslang_tab.cpp" break; - case 25: -#line 455 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[0].interm); + case 107: /* identifier_list: COMMA IDENTIFIER */ +#line 967 "MachineIndependent/glslang.y" + { + (yyval.interm.identifierList) = new TIdentifierList; + (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 4373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6181 "MachineIndependent/glslang_tab.cpp" break; - case 26: -#line 461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[-1].interm); - (yyval.interm).loc = (yyvsp[0].lex).loc; + case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */ +#line 971 "MachineIndependent/glslang.y" + { + (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); + (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 4382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6190 "MachineIndependent/glslang_tab.cpp" break; - case 27: -#line 465 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[-1].interm); + case 109: /* function_prototype: function_declarator RIGHT_PAREN */ +#line 978 "MachineIndependent/glslang.y" + { + (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6199 "MachineIndependent/glslang_tab.cpp" break; - case 28: -#line 472 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[-1].interm); + case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */ +#line 982 "MachineIndependent/glslang.y" + { + (yyval.interm).function = (yyvsp[-2].interm.function); + (yyval.interm).loc = (yyvsp[-1].lex).loc; + parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); + parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 4399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6210 "MachineIndependent/glslang_tab.cpp" break; - case 29: -#line 475 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[0].interm); + case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */ +#line 988 "MachineIndependent/glslang.y" + { + (yyval.interm).function = (yyvsp[-1].interm.function); + (yyval.interm).loc = (yyvsp[0].lex).loc; + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); + parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 4407 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6221 "MachineIndependent/glslang_tab.cpp" break; - case 30: -#line 481 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - TParameter param = { 0, new TType }; - param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); - (yyvsp[-1].interm).function->addParameter(param); - (yyval.interm).function = (yyvsp[-1].interm).function; - (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); + case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ +#line 994 "MachineIndependent/glslang.y" + { + (yyval.interm).function = (yyvsp[-2].interm.function); + (yyval.interm).loc = (yyvsp[-1].lex).loc; + parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); + parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); + parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 4419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6233 "MachineIndependent/glslang_tab.cpp" break; - case 31: -#line 488 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - TParameter param = { 0, new TType }; - param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); - (yyvsp[-2].interm).function->addParameter(param); - (yyval.interm).function = (yyvsp[-2].interm).function; - (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); + case 113: /* function_declarator: function_header */ +#line 1004 "MachineIndependent/glslang.y" + { + (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 4431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6241 "MachineIndependent/glslang_tab.cpp" break; - case 32: -#line 498 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[-1].interm); + case 114: /* function_declarator: function_header_with_parameters */ +#line 1007 "MachineIndependent/glslang.y" + { + (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 4439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6249 "MachineIndependent/glslang_tab.cpp" break; - case 33: -#line 506 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // Constructor - (yyval.interm).intermNode = 0; - (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); + case 115: /* function_header_with_parameters: function_header parameter_declaration */ +#line 1014 "MachineIndependent/glslang.y" + { + // Add the parameter + (yyval.interm.function) = (yyvsp[-1].interm.function); + if ((yyvsp[0].interm).param.type->getBasicType() != EbtVoid) + (yyvsp[-1].interm.function)->addParameter((yyvsp[0].interm).param); + else + delete (yyvsp[0].interm).param.type; } -#line 4449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6262 "MachineIndependent/glslang_tab.cpp" break; - case 34: -#line 511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ +#line 1022 "MachineIndependent/glslang.y" + { // - // Should be a method or subroutine call, but we haven't recognized the arguments yet. + // Only first parameter of one-parameter functions can be void + // The check for named parameters not being void is done in parameter_declarator // - (yyval.interm).function = 0; - (yyval.interm).intermNode = 0; - - TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode(); - if (method) { - (yyval.interm).function = new TFunction(&method->getMethodName(), TType(EbtInt), EOpArrayLength); - (yyval.interm).intermNode = method->getObject(); + if ((yyvsp[0].interm).param.type->getBasicType() == EbtVoid) { + // + // This parameter > first is void + // + parseContext.error((yyvsp[-1].lex).loc, "cannot be an argument type except for '(void)'", "void", ""); + delete (yyvsp[0].interm).param.type; } else { - TIntermSymbol* symbol = (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode(); - if (symbol) { - parseContext.reservedErrorCheck(symbol->getLoc(), symbol->getName()); - TFunction *function = new TFunction(&symbol->getName(), TType(EbtVoid)); - (yyval.interm).function = function; - } else - parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "function call, method, or subroutine call expected", "", ""); - } - - if ((yyval.interm).function == 0) { - // error recover - TString* empty = NewPoolTString(""); - (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); + // Add the parameter + (yyval.interm.function) = (yyvsp[-2].interm.function); + (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 4481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6284 "MachineIndependent/glslang_tab.cpp" break; - case 35: -#line 539 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // Constructor - (yyval.interm).intermNode = 0; - (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); - } -#line 4491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; + case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ +#line 1042 "MachineIndependent/glslang.y" + { + if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { + parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", + GetStorageQualifierString((yyvsp[-2].interm.type).qualifier.storage), ""); + } + if ((yyvsp[-2].interm.type).arraySizes) + parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); - case 36: -#line 548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) - parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); - } -#line 4502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; + // Add the function as a prototype after parsing it (we do not support recursion) + TFunction *function; + TType type((yyvsp[-2].interm.type)); - case 37: -#line 554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); - } -#line 4511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; + // Potentially rename shader entry point function. No-op most of the time. + parseContext.renameShaderFunction((yyvsp[-1].lex).string); - case 38: -#line 558 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); + // Make the function + function = new TFunction((yyvsp[-1].lex).string, type); + (yyval.interm.function) = function; } -#line 4520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6308 "MachineIndependent/glslang_tab.cpp" break; - case 39: -#line 562 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if ((yyvsp[-1].interm).op != EOpNull) { - char errorOp[2] = {0, 0}; - switch((yyvsp[-1].interm).op) { - case EOpNegative: errorOp[0] = '-'; break; - case EOpLogicalNot: errorOp[0] = '!'; break; - case EOpBitwiseNot: errorOp[0] = '~'; break; - default: break; // some compilers want this - } - (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].interm).loc, errorOp, (yyvsp[-1].interm).op, (yyvsp[0].interm.intermTypedNode)); - } else { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) - (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); + case 118: /* parameter_declarator: type_specifier IDENTIFIER */ +#line 1065 "MachineIndependent/glslang.y" + { + if ((yyvsp[-1].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[-1].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.arraySizeRequiredCheck((yyvsp[-1].interm.type).loc, *(yyvsp[-1].interm.type).arraySizes); + } + if ((yyvsp[-1].interm.type).basicType == EbtVoid) { + parseContext.error((yyvsp[0].lex).loc, "illegal use of type 'void'", (yyvsp[0].lex).string->c_str(), ""); } + parseContext.reservedErrorCheck((yyvsp[0].lex).loc, *(yyvsp[0].lex).string); + + TParameter param = {(yyvsp[0].lex).string, new TType((yyvsp[-1].interm.type))}; + (yyval.interm).loc = (yyvsp[0].lex).loc; + (yyval.interm).param = param; } -#line 4541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6328 "MachineIndependent/glslang_tab.cpp" break; - case 40: -#line 582 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 4547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; + case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ +#line 1080 "MachineIndependent/glslang.y" + { + if ((yyvsp[-2].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); + } + TType* type = new TType((yyvsp[-2].interm.type)); + type->transferArraySizes((yyvsp[0].interm).arraySizes); + type->copyArrayInnerSizes((yyvsp[-2].interm.type).arraySizes); - case 41: -#line 583 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 4553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; + parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, type->getArraySizes()); + parseContext.arraySizeRequiredCheck((yyvsp[0].interm).loc, *(yyvsp[0].interm).arraySizes); + parseContext.reservedErrorCheck((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string); - case 42: -#line 584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 4559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; + TParameter param = { (yyvsp[-1].lex).string, type }; - case 43: -#line 585 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 4566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + (yyval.interm).loc = (yyvsp[-1].lex).loc; + (yyval.interm).param = param; + } +#line 6352 "MachineIndependent/glslang_tab.cpp" break; - case 44: -#line 591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 120: /* parameter_declaration: type_qualifier parameter_declarator */ +#line 1105 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[0].interm); + if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) + (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision; + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + + parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); + parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); + parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); + + } +#line 6368 "MachineIndependent/glslang_tab.cpp" break; - case 45: -#line 592 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + case 121: /* parameter_declaration: parameter_declarator */ +#line 1116 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[0].interm); + + parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); + parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 4582 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6380 "MachineIndependent/glslang_tab.cpp" break; - case 46: -#line 597 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */ +#line 1126 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[0].interm); + if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) + (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision; + parseContext.precisionQualifierCheck((yyvsp[-1].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + + parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); + parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); + parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 4592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6395 "MachineIndependent/glslang_tab.cpp" break; - case 47: -#line 602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + case 123: /* parameter_declaration: parameter_type_specifier */ +#line 1136 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[0].interm); + + parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); + parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 4603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6407 "MachineIndependent/glslang_tab.cpp" break; - case 48: -#line 611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 124: /* parameter_type_specifier: type_specifier */ +#line 1146 "MachineIndependent/glslang.y" + { + TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; + (yyval.interm).param = param; + if ((yyvsp[0].interm.type).arraySizes) + parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); + } +#line 6418 "MachineIndependent/glslang_tab.cpp" break; - case 49: -#line 612 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + case 125: /* init_declarator_list: single_declaration */ +#line 1155 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[0].interm); } -#line 4619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6426 "MachineIndependent/glslang_tab.cpp" break; - case 50: -#line 617 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ +#line 1158 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[-2].interm); + parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 4629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6435 "MachineIndependent/glslang_tab.cpp" break; - case 51: -#line 625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4635 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ +#line 1162 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[-3].interm); + parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); + } +#line 6444 "MachineIndependent/glslang_tab.cpp" break; - case 52: -#line 626 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ +#line 1166 "MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[-5].interm).type; + TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 4646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6454 "MachineIndependent/glslang_tab.cpp" break; - case 53: -#line 632 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ +#line 1171 "MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[-4].interm).type; + TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 4657 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6464 "MachineIndependent/glslang_tab.cpp" break; - case 54: -#line 641 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; + case 130: /* single_declaration: fully_specified_type */ +#line 1179 "MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[0].interm.type); + (yyval.interm).intermNode = 0; + + parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); - case 55: -#line 642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4673 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6476 "MachineIndependent/glslang_tab.cpp" break; - case 56: -#line 647 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + case 131: /* single_declaration: fully_specified_type IDENTIFIER */ +#line 1186 "MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[-1].interm.type); + (yyval.interm).intermNode = 0; + parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 4683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6486 "MachineIndependent/glslang_tab.cpp" break; - case 57: -#line 652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ +#line 1191 "MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[-2].interm.type); + (yyval.interm).intermNode = 0; + parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 4693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6496 "MachineIndependent/glslang_tab.cpp" break; - case 58: -#line 657 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ +#line 1196 "MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[-4].interm.type); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 4703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6506 "MachineIndependent/glslang_tab.cpp" break; - case 59: -#line 665 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ +#line 1201 "MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[-3].interm.type); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); + } +#line 6516 "MachineIndependent/glslang_tab.cpp" break; - case 60: -#line 666 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); - parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); - parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); - parseContext.referenceCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "==", EOpEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + case 135: /* fully_specified_type: type_specifier */ +#line 1210 "MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[0].interm.type); + + parseContext.globalQualifierTypeCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyval.interm.type)); + if ((yyvsp[0].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + } + parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 4723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6531 "MachineIndependent/glslang_tab.cpp" break; - case 61: -#line 675 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); - parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); - parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); - parseContext.referenceCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "!=", EOpNotEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + case 136: /* fully_specified_type: type_qualifier type_specifier */ +#line 1220 "MachineIndependent/glslang.y" + { + parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); + parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); + + if ((yyvsp[0].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + } + + if ((yyvsp[0].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).qualifier)) + (yyvsp[0].interm.type).arraySizes = nullptr; + + parseContext.checkNoShaderLayouts((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); + (yyvsp[0].interm.type).shaderQualifiers.merge((yyvsp[-1].interm.type).shaderQualifiers); + parseContext.mergeQualifiers((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyvsp[-1].interm.type).qualifier, true); + parseContext.precisionQualifierCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).basicType, (yyvsp[0].interm.type).qualifier); + + (yyval.interm.type) = (yyvsp[0].interm.type); + + if (! (yyval.interm.type).qualifier.isInterpolation() && + ((parseContext.language == EShLangVertex && (yyval.interm.type).qualifier.storage == EvqVaryingOut) || + (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) + (yyval.interm.type).qualifier.smooth = true; } -#line 4737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6560 "MachineIndependent/glslang_tab.cpp" break; - case 62: -#line 687 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 137: /* invariant_qualifier: INVARIANT */ +#line 1247 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); + parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.invariant = true; + } +#line 6571 "MachineIndependent/glslang_tab.cpp" break; - case 63: -#line 688 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + case 138: /* interpolation_qualifier: SMOOTH */ +#line 1256 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "smooth"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.smooth = true; } -#line 4754 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6583 "MachineIndependent/glslang_tab.cpp" break; - case 64: -#line 697 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 139: /* interpolation_qualifier: FLAT */ +#line 1263 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "flat"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.flat = true; + } +#line 6595 "MachineIndependent/glslang_tab.cpp" break; - case 65: -#line 698 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + case 140: /* interpolation_qualifier: NOPERSPECTIVE */ +#line 1271 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "noperspective"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.nopersp = true; } -#line 4771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6607 "MachineIndependent/glslang_tab.cpp" break; - case 66: -#line 707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */ +#line 1278 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.explicitInterp = true; + } +#line 6619 "MachineIndependent/glslang_tab.cpp" break; - case 67: -#line 708 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + case 142: /* interpolation_qualifier: PERVERTEXNV */ +#line 1285 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.pervertexNV = true; } -#line 4788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6632 "MachineIndependent/glslang_tab.cpp" break; - case 68: -#line 717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 143: /* interpolation_qualifier: PERPRIMITIVENV */ +#line 1293 "MachineIndependent/glslang.y" + { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV"); + // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. + if (parseContext.language == EShLangFragment) + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.perPrimitiveNV = true; + } +#line 6647 "MachineIndependent/glslang_tab.cpp" break; - case 69: -#line 718 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + case 144: /* interpolation_qualifier: PERVIEWNV */ +#line 1303 "MachineIndependent/glslang.y" + { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); + parseContext.requireStage((yyvsp[0].lex).loc, EShLangMeshNV, "perviewNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.perViewNV = true; } -#line 4804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6659 "MachineIndependent/glslang_tab.cpp" break; - case 70: -#line 726 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 145: /* interpolation_qualifier: PERTASKNV */ +#line 1310 "MachineIndependent/glslang.y" + { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.perTaskNV = true; + } +#line 6671 "MachineIndependent/glslang_tab.cpp" break; - case 71: -#line 727 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + case 146: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ +#line 1321 "MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 4820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6679 "MachineIndependent/glslang_tab.cpp" break; - case 72: -#line 735 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 147: /* layout_qualifier_id_list: layout_qualifier_id */ +#line 1327 "MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 6687 "MachineIndependent/glslang_tab.cpp" break; - case 73: -#line 736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + case 148: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ +#line 1330 "MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[-2].interm.type); + (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); + parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 4836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6697 "MachineIndependent/glslang_tab.cpp" break; - case 74: -#line 744 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 149: /* layout_qualifier_id: IDENTIFIER */ +#line 1337 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); + } +#line 6706 "MachineIndependent/glslang_tab.cpp" break; - case 75: -#line 745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - ++parseContext.controlFlowNestingLevel; + case 150: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ +#line 1341 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[-2].lex).loc); + parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 4850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6715 "MachineIndependent/glslang_tab.cpp" break; - case 76: -#line 748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - --parseContext.controlFlowNestingLevel; - parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); - parseContext.rValueErrorCheck((yyvsp[-4].lex).loc, "?", (yyvsp[-5].interm.intermTypedNode)); - parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)); - parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[0].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[-5].interm.intermTypedNode), (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-4].lex).loc); - if ((yyval.interm.intermTypedNode) == 0) { - parseContext.binaryOpError((yyvsp[-4].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - } + case 151: /* layout_qualifier_id: SHARED */ +#line 1345 "MachineIndependent/glslang.y" + { // because "shared" is both an identifier and a keyword + (yyval.interm.type).init((yyvsp[0].lex).loc); + TString strShared("shared"); + parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 4867 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6725 "MachineIndependent/glslang_tab.cpp" break; - case 77: -#line 763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4873 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 152: /* precise_qualifier: PRECISE */ +#line 1354 "MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.noContraction = true; + } +#line 6736 "MachineIndependent/glslang_tab.cpp" break; - case 78: -#line 764 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); - parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); - parseContext.storage16BitAssignmentCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); - parseContext.specializationCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); - parseContext.lValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)); - parseContext.rValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[0].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addAssign((yyvsp[-1].interm).op, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].interm).loc); - if ((yyval.interm.intermTypedNode) == 0) { - parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); - } + case 153: /* type_qualifier: single_type_qualifier */ +#line 1364 "MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6744 "MachineIndependent/glslang_tab.cpp" break; - case 79: -#line 780 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpAssign; + case 154: /* type_qualifier: type_qualifier single_type_qualifier */ +#line 1367 "MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[-1].interm.type); + if ((yyval.interm.type).basicType == EbtVoid) + (yyval.interm.type).basicType = (yyvsp[0].interm.type).basicType; + + (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); + parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 4900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6757 "MachineIndependent/glslang_tab.cpp" break; - case 80: -#line 784 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpMulAssign; + case 155: /* single_type_qualifier: storage_qualifier */ +#line 1378 "MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4909 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6765 "MachineIndependent/glslang_tab.cpp" break; - case 81: -#line 788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpDivAssign; + case 156: /* single_type_qualifier: layout_qualifier */ +#line 1381 "MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6773 "MachineIndependent/glslang_tab.cpp" break; - case 82: -#line 792 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpModAssign; + case 157: /* single_type_qualifier: precision_qualifier */ +#line 1384 "MachineIndependent/glslang.y" + { + parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); + (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6782 "MachineIndependent/glslang_tab.cpp" break; - case 83: -#line 797 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpAddAssign; + case 158: /* single_type_qualifier: interpolation_qualifier */ +#line 1388 "MachineIndependent/glslang.y" + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6791 "MachineIndependent/glslang_tab.cpp" break; - case 84: -#line 801 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpSubAssign; + case 159: /* single_type_qualifier: invariant_qualifier */ +#line 1392 "MachineIndependent/glslang.y" + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6800 "MachineIndependent/glslang_tab.cpp" break; - case 85: -#line 805 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); - (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; + case 160: /* single_type_qualifier: precise_qualifier */ +#line 1397 "MachineIndependent/glslang.y" + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6809 "MachineIndependent/glslang_tab.cpp" break; - case 86: -#line 809 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); - (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; + case 161: /* single_type_qualifier: non_uniform_qualifier */ +#line 1401 "MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6817 "MachineIndependent/glslang_tab.cpp" break; - case 87: -#line 813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); - (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; + case 162: /* single_type_qualifier: spirv_storage_class_qualifier */ +#line 1404 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class"); + parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); + (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6827 "MachineIndependent/glslang_tab.cpp" break; - case 88: -#line 817 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); - (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; + case 163: /* single_type_qualifier: spirv_decorate_qualifier */ +#line 1409 "MachineIndependent/glslang.y" + { + parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); + (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6836 "MachineIndependent/glslang_tab.cpp" break; - case 89: -#line 821 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); - (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; + case 164: /* single_type_qualifier: SPIRV_BY_REFERENCE */ +#line 1413 "MachineIndependent/glslang.y" + { + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.setSpirvByReference(); } -#line 4991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6846 "MachineIndependent/glslang_tab.cpp" break; - case 90: -#line 828 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + case 165: /* single_type_qualifier: SPIRV_LITERAL */ +#line 1418 "MachineIndependent/glslang.y" + { + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.setSpirvLiteral(); } -#line 4999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6856 "MachineIndependent/glslang_tab.cpp" break; - case 91: -#line 831 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); - if ((yyval.interm.intermTypedNode) == 0) { - parseContext.binaryOpError((yyvsp[-1].lex).loc, ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - } + case 166: /* storage_qualifier: CONST */ +#line 1427 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 5012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6865 "MachineIndependent/glslang_tab.cpp" break; - case 92: -#line 842 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + case 167: /* storage_qualifier: INOUT */ +#line 1431 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 5021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6875 "MachineIndependent/glslang_tab.cpp" break; - case 93: -#line 849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); - (yyval.interm.intermNode) = 0; - // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature + case 168: /* storage_qualifier: IN */ +#line 1436 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "in"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later + (yyval.interm.type).qualifier.storage = EvqIn; } -#line 5031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6886 "MachineIndependent/glslang_tab.cpp" break; - case 94: -#line 854 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) - (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); - (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; + case 169: /* storage_qualifier: OUT */ +#line 1442 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "out"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later + (yyval.interm.type).qualifier.storage = EvqOut; } -#line 5041 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6897 "MachineIndependent/glslang_tab.cpp" break; - case 95: -#line 859 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); - // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope - parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]); - parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); - (yyval.interm.intermNode) = 0; + case 170: /* storage_qualifier: CENTROID */ +#line 1448 "MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); + parseContext.globalCheck((yyvsp[0].lex).loc, "centroid"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.centroid = true; } -#line 5053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6909 "MachineIndependent/glslang_tab.cpp" break; - case 96: -#line 866 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); - (yyval.interm.intermNode) = 0; + case 171: /* storage_qualifier: UNIFORM */ +#line 1455 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 5062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6919 "MachineIndependent/glslang_tab.cpp" break; - case 97: -#line 870 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); - (yyval.interm.intermNode) = 0; + case 172: /* storage_qualifier: SHARED */ +#line 1460 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqShared; } -#line 5071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6932 "MachineIndependent/glslang_tab.cpp" break; - case 98: -#line 874 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); - (yyval.interm.intermNode) = 0; + case 173: /* storage_qualifier: BUFFER */ +#line 1468 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 5080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6942 "MachineIndependent/glslang_tab.cpp" break; - case 99: -#line 878 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); - parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); - (yyval.interm.intermNode) = 0; + case 174: /* storage_qualifier: ATTRIBUTE */ +#line 1474 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); + parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); + parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "attribute"); + parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "attribute"); + parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "attribute"); + + parseContext.globalCheck((yyvsp[0].lex).loc, "attribute"); + + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 5090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6959 "MachineIndependent/glslang_tab.cpp" break; - case 100: -#line 883 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); - parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); - (yyval.interm.intermNode) = 0; + case 175: /* storage_qualifier: VARYING */ +#line 1486 "MachineIndependent/glslang.y" + { + parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); + parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); + parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "varying"); + parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "varying"); + + parseContext.globalCheck((yyvsp[0].lex).loc, "varying"); + + (yyval.interm.type).init((yyvsp[0].lex).loc); + if (parseContext.language == EShLangVertex) + (yyval.interm.type).qualifier.storage = EvqVaryingOut; + else + (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 5100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6978 "MachineIndependent/glslang_tab.cpp" break; - case 101: -#line 888 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); - (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); - parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); - (yyval.interm.intermNode) = 0; + case 176: /* storage_qualifier: PATCH */ +#line 1500 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.patch = true; } -#line 5111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6989 "MachineIndependent/glslang_tab.cpp" break; - case 102: -#line 897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 177: /* storage_qualifier: SAMPLE */ +#line 1506 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.sample = true; + } +#line 6999 "MachineIndependent/glslang_tab.cpp" break; - case 103: -#line 897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - --parseContext.structNestingLevel; - parseContext.blockName = (yyvsp[-4].lex).string; - parseContext.globalQualifierFixCheck((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).qualifier); - parseContext.checkNoShaderLayouts((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).shaderQualifiers); - parseContext.currentBlockQualifier = (yyvsp[-5].interm.type).qualifier; - (yyval.interm).loc = (yyvsp[-5].interm.type).loc; - (yyval.interm).typeList = (yyvsp[-1].interm.typeList); + case 178: /* storage_qualifier: HITATTRNV */ +#line 1511 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask + | EShLangAnyHitMask), "hitAttributeNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 5131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7012 "MachineIndependent/glslang_tab.cpp" break; - case 104: -#line 908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.identifierList) = new TIdentifierList; - (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); + case 179: /* storage_qualifier: HITATTREXT */ +#line 1519 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask + | EShLangAnyHitMask), "hitAttributeEXT"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "hitAttributeNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 5140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7025 "MachineIndependent/glslang_tab.cpp" break; - case 105: -#line 912 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); - (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); + case 180: /* storage_qualifier: PAYLOADNV */ +#line 1527 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | + EShLangAnyHitMask | EShLangMissMask), "rayPayloadNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 5149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7038 "MachineIndependent/glslang_tab.cpp" break; - case 106: -#line 919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).function = (yyvsp[-1].interm.function); - (yyval.interm).loc = (yyvsp[0].lex).loc; + case 181: /* storage_qualifier: PAYLOADEXT */ +#line 1535 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | + EShLangAnyHitMask | EShLangMissMask), "rayPayloadEXT"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadEXT"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 5158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7051 "MachineIndependent/glslang_tab.cpp" break; - case 107: -#line 926 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.function) = (yyvsp[0].interm.function); + case 182: /* storage_qualifier: PAYLOADINNV */ +#line 1543 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | + EShLangAnyHitMask | EShLangMissMask), "rayPayloadInNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 5166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7064 "MachineIndependent/glslang_tab.cpp" break; - case 108: -#line 929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.function) = (yyvsp[0].interm.function); + case 183: /* storage_qualifier: PAYLOADINEXT */ +#line 1551 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | + EShLangAnyHitMask | EShLangMissMask), "rayPayloadInEXT"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadInEXT"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 5174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7077 "MachineIndependent/glslang_tab.cpp" break; - case 109: -#line 936 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // Add the parameter - (yyval.interm.function) = (yyvsp[-1].interm.function); - if ((yyvsp[0].interm).param.type->getBasicType() != EbtVoid) - (yyvsp[-1].interm.function)->addParameter((yyvsp[0].interm).param); - else - delete (yyvsp[0].interm).param.type; + case 184: /* storage_qualifier: CALLDATANV */ +#line 1559 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | + EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 5187 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7090 "MachineIndependent/glslang_tab.cpp" break; - case 110: -#line 944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // - // Only first parameter of one-parameter functions can be void - // The check for named parameters not being void is done in parameter_declarator - // - if ((yyvsp[0].interm).param.type->getBasicType() == EbtVoid) { - // - // This parameter > first is void - // - parseContext.error((yyvsp[-1].lex).loc, "cannot be an argument type except for '(void)'", "void", ""); - delete (yyvsp[0].interm).param.type; - } else { - // Add the parameter - (yyval.interm.function) = (yyvsp[-2].interm.function); - (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); - } + case 185: /* storage_qualifier: CALLDATAEXT */ +#line 1567 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | + EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataEXT"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataEXT"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 5209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7103 "MachineIndependent/glslang_tab.cpp" break; - case 111: -#line 964 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { - parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", - GetStorageQualifierString((yyvsp[-2].interm.type).qualifier.storage), ""); - } - if ((yyvsp[-2].interm.type).arraySizes) - parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); - - // Add the function as a prototype after parsing it (we do not support recursion) - TFunction *function; - TType type((yyvsp[-2].interm.type)); - - // Potentially rename shader entry point function. No-op most of the time. - parseContext.renameShaderFunction((yyvsp[-1].lex).string); - - // Make the function - function = new TFunction((yyvsp[-1].lex).string, type); - (yyval.interm.function) = function; + case 186: /* storage_qualifier: CALLDATAINNV */ +#line 1575 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 5233 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7115 "MachineIndependent/glslang_tab.cpp" break; - - case 112: -#line 987 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if ((yyvsp[-1].interm.type).arraySizes) { - parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[-1].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); - parseContext.arraySizeRequiredCheck((yyvsp[-1].interm.type).loc, *(yyvsp[-1].interm.type).arraySizes); - } - if ((yyvsp[-1].interm.type).basicType == EbtVoid) { - parseContext.error((yyvsp[0].lex).loc, "illegal use of type 'void'", (yyvsp[0].lex).string->c_str(), ""); - } - parseContext.reservedErrorCheck((yyvsp[0].lex).loc, *(yyvsp[0].lex).string); - - TParameter param = {(yyvsp[0].lex).string, new TType((yyvsp[-1].interm.type))}; - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).param = param; + + case 187: /* storage_qualifier: CALLDATAINEXT */ +#line 1582 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataInEXT"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 5253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7127 "MachineIndependent/glslang_tab.cpp" break; - case 113: -#line 1002 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if ((yyvsp[-2].interm.type).arraySizes) { - parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); - parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); - } - TType* type = new TType((yyvsp[-2].interm.type)); - type->transferArraySizes((yyvsp[0].interm).arraySizes); - type->copyArrayInnerSizes((yyvsp[-2].interm.type).arraySizes); + case 188: /* storage_qualifier: COHERENT */ +#line 1589 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.coherent = true; + } +#line 7136 "MachineIndependent/glslang_tab.cpp" + break; - parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, type->getArraySizes()); - parseContext.arraySizeRequiredCheck((yyvsp[0].interm).loc, *(yyvsp[0].interm).arraySizes); - parseContext.reservedErrorCheck((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string); + case 189: /* storage_qualifier: DEVICECOHERENT */ +#line 1593 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); + (yyval.interm.type).qualifier.devicecoherent = true; + } +#line 7146 "MachineIndependent/glslang_tab.cpp" + break; - TParameter param = { (yyvsp[-1].lex).string, type }; + case 190: /* storage_qualifier: QUEUEFAMILYCOHERENT */ +#line 1598 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); + (yyval.interm.type).qualifier.queuefamilycoherent = true; + } +#line 7156 "MachineIndependent/glslang_tab.cpp" + break; - (yyval.interm).loc = (yyvsp[-1].lex).loc; - (yyval.interm).param = param; + case 191: /* storage_qualifier: WORKGROUPCOHERENT */ +#line 1603 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); + (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 5277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7166 "MachineIndependent/glslang_tab.cpp" break; - case 114: -#line 1027 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[0].interm); - if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) - (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision; - parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + case 192: /* storage_qualifier: SUBGROUPCOHERENT */ +#line 1608 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); + (yyval.interm.type).qualifier.subgroupcoherent = true; + } +#line 7176 "MachineIndependent/glslang_tab.cpp" + break; - parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); - parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); - parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); + case 193: /* storage_qualifier: NONPRIVATE */ +#line 1613 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); + (yyval.interm.type).qualifier.nonprivate = true; + } +#line 7186 "MachineIndependent/glslang_tab.cpp" + break; + case 194: /* storage_qualifier: SHADERCALLCOHERENT */ +#line 1618 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); + (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 5293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7196 "MachineIndependent/glslang_tab.cpp" break; - case 115: -#line 1038 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[0].interm); + case 195: /* storage_qualifier: VOLATILE */ +#line 1623 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.volatil = true; + } +#line 7205 "MachineIndependent/glslang_tab.cpp" + break; - parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); - parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); - parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + case 196: /* storage_qualifier: RESTRICT */ +#line 1627 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.restrict = true; } -#line 5305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7214 "MachineIndependent/glslang_tab.cpp" break; - case 116: -#line 1048 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[0].interm); - if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) - (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision; - parseContext.precisionQualifierCheck((yyvsp[-1].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + case 197: /* storage_qualifier: READONLY */ +#line 1631 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.readonly = true; + } +#line 7223 "MachineIndependent/glslang_tab.cpp" + break; - parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); - parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); - parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); + case 198: /* storage_qualifier: WRITEONLY */ +#line 1635 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.writeonly = true; } -#line 5320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7232 "MachineIndependent/glslang_tab.cpp" break; - case 117: -#line 1058 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[0].interm); + case 199: /* storage_qualifier: SUBROUTINE */ +#line 1639 "MachineIndependent/glslang.y" + { + parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); + parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); + parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + } +#line 7243 "MachineIndependent/glslang_tab.cpp" + break; - parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); - parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); - parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + case 200: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ +#line 1645 "MachineIndependent/glslang.y" + { + parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); + parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); + parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); + (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 5332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7254 "MachineIndependent/glslang_tab.cpp" break; - case 118: -#line 1068 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; - (yyval.interm).param = param; - if ((yyvsp[0].interm.type).arraySizes) - parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); + case 201: /* non_uniform_qualifier: NONUNIFORM */ +#line 1656 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.nonUniform = true; } -#line 5343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7263 "MachineIndependent/glslang_tab.cpp" break; - case 119: -#line 1077 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[0].interm); + case 202: /* type_name_list: IDENTIFIER */ +#line 1663 "MachineIndependent/glslang.y" + { + // TODO } -#line 5351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7271 "MachineIndependent/glslang_tab.cpp" break; - case 120: -#line 1080 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[-2].interm); - parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); + case 203: /* type_name_list: type_name_list COMMA IDENTIFIER */ +#line 1666 "MachineIndependent/glslang.y" + { + // TODO: 4.0 semantics: subroutines + // 1) make sure each identifier is a type declared earlier with SUBROUTINE + // 2) save all of the identifiers for future comparison with the declared function } -#line 5360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7281 "MachineIndependent/glslang_tab.cpp" break; - case 121: -#line 1084 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[-3].interm); - parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); + case 204: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ +#line 1675 "MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[-1].interm.type); + (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); + (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 5369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7291 "MachineIndependent/glslang_tab.cpp" break; - case 122: -#line 1088 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).type = (yyvsp[-5].interm).type; - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); + case 205: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ +#line 1680 "MachineIndependent/glslang.y" + { + parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); + (yyval.interm.type) = (yyvsp[-2].interm.type); + (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); + (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); + (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 5379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7303 "MachineIndependent/glslang_tab.cpp" break; - case 123: -#line 1093 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).type = (yyvsp[-4].interm).type; - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); + case 206: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ +#line 1690 "MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[-1].lex).loc; + (yyval.interm).arraySizes = new TArraySizes; + (yyval.interm).arraySizes->addInnerSize(); } -#line 5389 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7313 "MachineIndependent/glslang_tab.cpp" break; - case 124: -#line 1101 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).type = (yyvsp[0].interm.type); - (yyval.interm).intermNode = 0; + case 207: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1695 "MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[-2].lex).loc; + (yyval.interm).arraySizes = new TArraySizes; - parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); + TArraySize size; + parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); + (yyval.interm).arraySizes->addInnerSize(size); + } +#line 7326 "MachineIndependent/glslang_tab.cpp" + break; + case 208: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ +#line 1703 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[-2].interm); + (yyval.interm).arraySizes->addInnerSize(); } -#line 5401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7335 "MachineIndependent/glslang_tab.cpp" break; - case 125: -#line 1108 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).type = (yyvsp[-1].interm.type); - (yyval.interm).intermNode = 0; - parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); + case 209: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1707 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[-3].interm); + + TArraySize size; + parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); + (yyval.interm).arraySizes->addInnerSize(size); } -#line 5411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7347 "MachineIndependent/glslang_tab.cpp" break; - case 126: -#line 1113 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).type = (yyvsp[-2].interm.type); - (yyval.interm).intermNode = 0; - parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); + case 210: /* type_parameter_specifier_opt: type_parameter_specifier */ +#line 1717 "MachineIndependent/glslang.y" + { + (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 5421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7355 "MachineIndependent/glslang_tab.cpp" break; - case 127: -#line 1118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).type = (yyvsp[-4].interm.type); - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); + case 211: /* type_parameter_specifier_opt: %empty */ +#line 1720 "MachineIndependent/glslang.y" + { + (yyval.interm.typeParameters) = 0; } -#line 5431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7363 "MachineIndependent/glslang_tab.cpp" break; - case 128: -#line 1123 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).type = (yyvsp[-3].interm.type); - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); + case 212: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ +#line 1726 "MachineIndependent/glslang.y" + { + (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 5441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7371 "MachineIndependent/glslang_tab.cpp" break; - case 129: -#line 1132 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[0].interm.type); + case 213: /* type_parameter_specifier_list: unary_expression */ +#line 1732 "MachineIndependent/glslang.y" + { + (yyval.interm.typeParameters) = new TArraySizes; - parseContext.globalQualifierTypeCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyval.interm.type)); - if ((yyvsp[0].interm.type).arraySizes) { - parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); - } - parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); + TArraySize size; + parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); + (yyval.interm.typeParameters)->addInnerSize(size); } -#line 5456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7383 "MachineIndependent/glslang_tab.cpp" break; - case 130: -#line 1142 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); - parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); + case 214: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ +#line 1739 "MachineIndependent/glslang.y" + { + (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); - if ((yyvsp[0].interm.type).arraySizes) { - parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); - } + TArraySize size; + parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); + (yyval.interm.typeParameters)->addInnerSize(size); + } +#line 7395 "MachineIndependent/glslang_tab.cpp" + break; - if ((yyvsp[0].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).qualifier)) - (yyvsp[0].interm.type).arraySizes = nullptr; + case 215: /* type_specifier_nonarray: VOID */ +#line 1749 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtVoid; + } +#line 7404 "MachineIndependent/glslang_tab.cpp" + break; - parseContext.checkNoShaderLayouts((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); - (yyvsp[0].interm.type).shaderQualifiers.merge((yyvsp[-1].interm.type).shaderQualifiers); - parseContext.mergeQualifiers((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyvsp[-1].interm.type).qualifier, true); - parseContext.precisionQualifierCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).basicType, (yyvsp[0].interm.type).qualifier); + case 216: /* type_specifier_nonarray: FLOAT */ +#line 1753 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + } +#line 7413 "MachineIndependent/glslang_tab.cpp" + break; - (yyval.interm.type) = (yyvsp[0].interm.type); + case 217: /* type_specifier_nonarray: INT */ +#line 1757 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + } +#line 7422 "MachineIndependent/glslang_tab.cpp" + break; - if (! (yyval.interm.type).qualifier.isInterpolation() && - ((parseContext.language == EShLangVertex && (yyval.interm.type).qualifier.storage == EvqVaryingOut) || - (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) - (yyval.interm.type).qualifier.smooth = true; + case 218: /* type_specifier_nonarray: UINT */ +#line 1761 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; } -#line 5485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7432 "MachineIndependent/glslang_tab.cpp" break; - case 131: -#line 1169 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); - parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.invariant = true; + case 219: /* type_specifier_nonarray: BOOL */ +#line 1766 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; } -#line 5496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7441 "MachineIndependent/glslang_tab.cpp" break; - case 132: -#line 1178 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "smooth"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.smooth = true; + case 220: /* type_specifier_nonarray: VEC2 */ +#line 1770 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(2); } -#line 5508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7451 "MachineIndependent/glslang_tab.cpp" break; - case 133: -#line 1185 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "flat"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.flat = true; + case 221: /* type_specifier_nonarray: VEC3 */ +#line 1775 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(3); } -#line 5520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7461 "MachineIndependent/glslang_tab.cpp" break; - case 134: -#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "noperspective"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.nopersp = true; + case 222: /* type_specifier_nonarray: VEC4 */ +#line 1780 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(4); } -#line 5532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7471 "MachineIndependent/glslang_tab.cpp" break; - case 135: -#line 1200 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.explicitInterp = true; + case 223: /* type_specifier_nonarray: BVEC2 */ +#line 1785 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(2); } -#line 5544 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7481 "MachineIndependent/glslang_tab.cpp" break; - case 136: -#line 1207 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.pervertexNV = true; + case 224: /* type_specifier_nonarray: BVEC3 */ +#line 1790 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(3); } -#line 5557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7491 "MachineIndependent/glslang_tab.cpp" break; - case 137: -#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // No need for profile version or extension check. Shader stage already checks both. - parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV"); - // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. - if (parseContext.language == EShLangFragment) - parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.perPrimitiveNV = true; + case 225: /* type_specifier_nonarray: BVEC4 */ +#line 1795 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(4); } -#line 5572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7501 "MachineIndependent/glslang_tab.cpp" break; - case 138: -#line 1225 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // No need for profile version or extension check. Shader stage already checks both. - parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); - parseContext.requireStage((yyvsp[0].lex).loc, EShLangMeshNV, "perviewNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.perViewNV = true; + case 226: /* type_specifier_nonarray: IVEC2 */ +#line 1800 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(2); } -#line 5584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7511 "MachineIndependent/glslang_tab.cpp" break; - case 139: -#line 1232 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // No need for profile version or extension check. Shader stage already checks both. - parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.perTaskNV = true; + case 227: /* type_specifier_nonarray: IVEC3 */ +#line 1805 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(3); } -#line 5596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7521 "MachineIndependent/glslang_tab.cpp" break; - case 140: -#line 1243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[-1].interm.type); + case 228: /* type_specifier_nonarray: IVEC4 */ +#line 1810 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(4); } -#line 5604 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7531 "MachineIndependent/glslang_tab.cpp" break; - case 141: -#line 1249 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[0].interm.type); + case 229: /* type_specifier_nonarray: UVEC2 */ +#line 1815 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(2); } -#line 5612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7542 "MachineIndependent/glslang_tab.cpp" break; - case 142: -#line 1252 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[-2].interm.type); - (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); - parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); + case 230: /* type_specifier_nonarray: UVEC3 */ +#line 1821 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(3); } -#line 5622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7553 "MachineIndependent/glslang_tab.cpp" break; - case 143: -#line 1259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); + case 231: /* type_specifier_nonarray: UVEC4 */ +#line 1827 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(4); } -#line 5631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7564 "MachineIndependent/glslang_tab.cpp" break; - case 144: -#line 1263 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[-2].lex).loc); - parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); + case 232: /* type_specifier_nonarray: MAT2 */ +#line 1833 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); } -#line 5640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7574 "MachineIndependent/glslang_tab.cpp" break; - case 145: -#line 1267 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { // because "shared" is both an identifier and a keyword - (yyval.interm.type).init((yyvsp[0].lex).loc); - TString strShared("shared"); - parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); + case 233: /* type_specifier_nonarray: MAT3 */ +#line 1838 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); } -#line 5650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7584 "MachineIndependent/glslang_tab.cpp" break; - case 146: -#line 1276 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.noContraction = true; + case 234: /* type_specifier_nonarray: MAT4 */ +#line 1843 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); } -#line 5661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7594 "MachineIndependent/glslang_tab.cpp" break; - case 147: -#line 1286 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[0].interm.type); + case 235: /* type_specifier_nonarray: MAT2X2 */ +#line 1848 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); } -#line 5669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7604 "MachineIndependent/glslang_tab.cpp" break; - case 148: -#line 1289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[-1].interm.type); - if ((yyval.interm.type).basicType == EbtVoid) - (yyval.interm.type).basicType = (yyvsp[0].interm.type).basicType; - - (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); - parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); + case 236: /* type_specifier_nonarray: MAT2X3 */ +#line 1853 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 3); } -#line 5682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7614 "MachineIndependent/glslang_tab.cpp" break; - case 149: -#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[0].interm.type); + case 237: /* type_specifier_nonarray: MAT2X4 */ +#line 1858 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 4); } -#line 5690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7624 "MachineIndependent/glslang_tab.cpp" break; - case 150: -#line 1303 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[0].interm.type); + case 238: /* type_specifier_nonarray: MAT3X2 */ +#line 1863 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 2); } -#line 5698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7634 "MachineIndependent/glslang_tab.cpp" break; - case 151: -#line 1306 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); - (yyval.interm.type) = (yyvsp[0].interm.type); + case 239: /* type_specifier_nonarray: MAT3X3 */ +#line 1868 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); } -#line 5707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7644 "MachineIndependent/glslang_tab.cpp" break; - case 152: -#line 1310 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); + case 240: /* type_specifier_nonarray: MAT3X4 */ +#line 1873 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 4); } -#line 5716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7654 "MachineIndependent/glslang_tab.cpp" break; - case 153: -#line 1314 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); + case 241: /* type_specifier_nonarray: MAT4X2 */ +#line 1878 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 2); } -#line 5725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7664 "MachineIndependent/glslang_tab.cpp" break; - case 154: -#line 1319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); + case 242: /* type_specifier_nonarray: MAT4X3 */ +#line 1883 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 3); } -#line 5734 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7674 "MachineIndependent/glslang_tab.cpp" break; - case 155: -#line 1323 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[0].interm.type); + case 243: /* type_specifier_nonarray: MAT4X4 */ +#line 1888 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); } -#line 5742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7684 "MachineIndependent/glslang_tab.cpp" break; - case 156: -#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant + case 244: /* type_specifier_nonarray: DOUBLE */ +#line 1894 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; } -#line 5751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7696 "MachineIndependent/glslang_tab.cpp" break; - case 157: -#line 1334 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqInOut; + case 245: /* type_specifier_nonarray: FLOAT16_T */ +#line 1901 "MachineIndependent/glslang.y" + { + parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; } -#line 5761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7706 "MachineIndependent/glslang_tab.cpp" break; - case 158: -#line 1339 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "in"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later - (yyval.interm.type).qualifier.storage = EvqIn; + case 246: /* type_specifier_nonarray: FLOAT32_T */ +#line 1906 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; } -#line 5772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7716 "MachineIndependent/glslang_tab.cpp" break; - case 159: -#line 1345 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "out"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later - (yyval.interm.type).qualifier.storage = EvqOut; + case 247: /* type_specifier_nonarray: FLOAT64_T */ +#line 1911 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; } -#line 5783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7726 "MachineIndependent/glslang_tab.cpp" break; - case 160: -#line 1351 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); - parseContext.globalCheck((yyvsp[0].lex).loc, "centroid"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.centroid = true; + case 248: /* type_specifier_nonarray: INT8_T */ +#line 1916 "MachineIndependent/glslang.y" + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt8; } -#line 5795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7736 "MachineIndependent/glslang_tab.cpp" break; - case 161: -#line 1358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqUniform; + case 249: /* type_specifier_nonarray: UINT8_T */ +#line 1921 "MachineIndependent/glslang.y" + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint8; } -#line 5805 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7746 "MachineIndependent/glslang_tab.cpp" break; - case 162: -#line 1363 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqShared; + case 250: /* type_specifier_nonarray: INT16_T */ +#line 1926 "MachineIndependent/glslang.y" + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt16; } -#line 5818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7756 "MachineIndependent/glslang_tab.cpp" break; - case 163: -#line 1371 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqBuffer; + case 251: /* type_specifier_nonarray: UINT16_T */ +#line 1931 "MachineIndependent/glslang.y" + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint16; } -#line 5828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7766 "MachineIndependent/glslang_tab.cpp" break; - case 164: -#line 1377 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); - parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); - parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "attribute"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "attribute"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "attribute"); - - parseContext.globalCheck((yyvsp[0].lex).loc, "attribute"); - - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqVaryingIn; + case 252: /* type_specifier_nonarray: INT32_T */ +#line 1936 "MachineIndependent/glslang.y" + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; } -#line 5845 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7776 "MachineIndependent/glslang_tab.cpp" break; - case 165: -#line 1389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); - parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "varying"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "varying"); - - parseContext.globalCheck((yyvsp[0].lex).loc, "varying"); - - (yyval.interm.type).init((yyvsp[0].lex).loc); - if (parseContext.language == EShLangVertex) - (yyval.interm.type).qualifier.storage = EvqVaryingOut; - else - (yyval.interm.type).qualifier.storage = EvqVaryingIn; + case 253: /* type_specifier_nonarray: UINT32_T */ +#line 1941 "MachineIndependent/glslang.y" + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; } -#line 5864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7786 "MachineIndependent/glslang_tab.cpp" break; - case 166: -#line 1403 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.patch = true; + case 254: /* type_specifier_nonarray: INT64_T */ +#line 1946 "MachineIndependent/glslang.y" + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; } -#line 5875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7796 "MachineIndependent/glslang_tab.cpp" break; - case 167: -#line 1409 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.sample = true; + case 255: /* type_specifier_nonarray: UINT64_T */ +#line 1951 "MachineIndependent/glslang.y" + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; } -#line 5885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7806 "MachineIndependent/glslang_tab.cpp" break; - case 168: -#line 1414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangClosestHitNVMask - | EShLangAnyHitNVMask), "hitAttributeNV"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqHitAttrNV; + case 256: /* type_specifier_nonarray: DVEC2 */ +#line 1956 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(2); } -#line 5898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7819 "MachineIndependent/glslang_tab.cpp" break; - case 169: -#line 1422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask | - EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNV"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqPayloadNV; + case 257: /* type_specifier_nonarray: DVEC3 */ +#line 1964 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(3); } -#line 5911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7832 "MachineIndependent/glslang_tab.cpp" break; - case 170: -#line 1430 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitNVMask | - EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNV"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqPayloadInNV; + case 258: /* type_specifier_nonarray: DVEC4 */ +#line 1972 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(4); } -#line 5924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7845 "MachineIndependent/glslang_tab.cpp" break; - case 171: -#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenNVMask | - EShLangClosestHitNVMask | EShLangMissNVMask | EShLangCallableNVMask), "callableDataNV"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqCallableDataNV; + case 259: /* type_specifier_nonarray: F16VEC2 */ +#line 1980 "MachineIndependent/glslang.y" + { + parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setVector(2); } -#line 5937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7856 "MachineIndependent/glslang_tab.cpp" break; - case 172: -#line 1446 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableNVMask), "callableDataInNV"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqCallableDataInNV; + case 260: /* type_specifier_nonarray: F16VEC3 */ +#line 1986 "MachineIndependent/glslang.y" + { + parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setVector(3); } -#line 5949 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7867 "MachineIndependent/glslang_tab.cpp" break; - case 173: -#line 1453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.coherent = true; + case 261: /* type_specifier_nonarray: F16VEC4 */ +#line 1992 "MachineIndependent/glslang.y" + { + parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setVector(4); } -#line 5958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7878 "MachineIndependent/glslang_tab.cpp" break; - case 174: -#line 1457 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); - (yyval.interm.type).qualifier.devicecoherent = true; + case 262: /* type_specifier_nonarray: F32VEC2 */ +#line 1998 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(2); } -#line 5968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7889 "MachineIndependent/glslang_tab.cpp" break; - case 175: -#line 1462 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); - (yyval.interm.type).qualifier.queuefamilycoherent = true; + case 263: /* type_specifier_nonarray: F32VEC3 */ +#line 2004 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(3); } -#line 5978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7900 "MachineIndependent/glslang_tab.cpp" break; - case 176: -#line 1467 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); - (yyval.interm.type).qualifier.workgroupcoherent = true; + case 264: /* type_specifier_nonarray: F32VEC4 */ +#line 2010 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(4); } -#line 5988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7911 "MachineIndependent/glslang_tab.cpp" break; - case 177: -#line 1472 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); - (yyval.interm.type).qualifier.subgroupcoherent = true; + case 265: /* type_specifier_nonarray: F64VEC2 */ +#line 2016 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(2); } -#line 5998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7922 "MachineIndependent/glslang_tab.cpp" break; - case 178: -#line 1477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); - (yyval.interm.type).qualifier.nonprivate = true; + case 266: /* type_specifier_nonarray: F64VEC3 */ +#line 2022 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(3); } -#line 6008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7933 "MachineIndependent/glslang_tab.cpp" break; - case 179: -#line 1482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.volatil = true; + case 267: /* type_specifier_nonarray: F64VEC4 */ +#line 2028 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(4); } -#line 6017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7944 "MachineIndependent/glslang_tab.cpp" break; - case 180: -#line 1486 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.restrict = true; + case 268: /* type_specifier_nonarray: I8VEC2 */ +#line 2034 "MachineIndependent/glslang.y" + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt8; + (yyval.interm.type).setVector(2); } -#line 6026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7955 "MachineIndependent/glslang_tab.cpp" break; - case 181: -#line 1490 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.readonly = true; + case 269: /* type_specifier_nonarray: I8VEC3 */ +#line 2040 "MachineIndependent/glslang.y" + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt8; + (yyval.interm.type).setVector(3); } -#line 6035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7966 "MachineIndependent/glslang_tab.cpp" break; - case 182: -#line 1494 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.writeonly = true; + case 270: /* type_specifier_nonarray: I8VEC4 */ +#line 2046 "MachineIndependent/glslang.y" + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt8; + (yyval.interm.type).setVector(4); } -#line 6044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7977 "MachineIndependent/glslang_tab.cpp" break; - case 183: -#line 1498 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); - parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); - parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); - (yyval.interm.type).init((yyvsp[0].lex).loc); + case 271: /* type_specifier_nonarray: I16VEC2 */ +#line 2052 "MachineIndependent/glslang.y" + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt16; + (yyval.interm.type).setVector(2); } -#line 6055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7988 "MachineIndependent/glslang_tab.cpp" break; - case 184: -#line 1504 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); - parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); - parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); - (yyval.interm.type).init((yyvsp[-3].lex).loc); + case 272: /* type_specifier_nonarray: I16VEC3 */ +#line 2058 "MachineIndependent/glslang.y" + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt16; + (yyval.interm.type).setVector(3); } -#line 6066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7999 "MachineIndependent/glslang_tab.cpp" break; - case 185: -#line 1515 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.nonUniform = true; + case 273: /* type_specifier_nonarray: I16VEC4 */ +#line 2064 "MachineIndependent/glslang.y" + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt16; + (yyval.interm.type).setVector(4); } -#line 6075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8010 "MachineIndependent/glslang_tab.cpp" break; - case 186: -#line 1522 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // TODO + case 274: /* type_specifier_nonarray: I32VEC2 */ +#line 2070 "MachineIndependent/glslang.y" + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(2); } -#line 6083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8021 "MachineIndependent/glslang_tab.cpp" break; - case 187: -#line 1525 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // TODO: 4.0 semantics: subroutines - // 1) make sure each identifier is a type declared earlier with SUBROUTINE - // 2) save all of the identifiers for future comparison with the declared function + case 275: /* type_specifier_nonarray: I32VEC3 */ +#line 2076 "MachineIndependent/glslang.y" + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(3); } -#line 6093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8032 "MachineIndependent/glslang_tab.cpp" break; - case 188: -#line 1534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[-1].interm.type); - (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); - (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); + case 276: /* type_specifier_nonarray: I32VEC4 */ +#line 2082 "MachineIndependent/glslang.y" + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(4); } -#line 6103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8043 "MachineIndependent/glslang_tab.cpp" break; - case 189: -#line 1539 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); - (yyval.interm.type) = (yyvsp[-2].interm.type); - (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); - (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); - (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; + case 277: /* type_specifier_nonarray: I64VEC2 */ +#line 2088 "MachineIndependent/glslang.y" + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(2); } -#line 6115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8054 "MachineIndependent/glslang_tab.cpp" break; - case 190: -#line 1549 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).loc = (yyvsp[-1].lex).loc; - (yyval.interm).arraySizes = new TArraySizes; - (yyval.interm).arraySizes->addInnerSize(); + case 278: /* type_specifier_nonarray: I64VEC3 */ +#line 2094 "MachineIndependent/glslang.y" + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(3); } -#line 6125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8065 "MachineIndependent/glslang_tab.cpp" break; - case 191: -#line 1554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).loc = (yyvsp[-2].lex).loc; - (yyval.interm).arraySizes = new TArraySizes; - - TArraySize size; - parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); - (yyval.interm).arraySizes->addInnerSize(size); + case 279: /* type_specifier_nonarray: I64VEC4 */ +#line 2100 "MachineIndependent/glslang.y" + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(4); } -#line 6138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8076 "MachineIndependent/glslang_tab.cpp" break; - case 192: -#line 1562 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[-2].interm); - (yyval.interm).arraySizes->addInnerSize(); + case 280: /* type_specifier_nonarray: U8VEC2 */ +#line 2106 "MachineIndependent/glslang.y" + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(2); } -#line 6147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8087 "MachineIndependent/glslang_tab.cpp" break; - case 193: -#line 1566 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[-3].interm); - - TArraySize size; - parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); - (yyval.interm).arraySizes->addInnerSize(size); + case 281: /* type_specifier_nonarray: U8VEC3 */ +#line 2112 "MachineIndependent/glslang.y" + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(3); } -#line 6159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8098 "MachineIndependent/glslang_tab.cpp" break; - case 194: -#line 1576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); + case 282: /* type_specifier_nonarray: U8VEC4 */ +#line 2118 "MachineIndependent/glslang.y" + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(4); } -#line 6167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8109 "MachineIndependent/glslang_tab.cpp" break; - case 195: -#line 1579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeParameters) = 0; + case 283: /* type_specifier_nonarray: U16VEC2 */ +#line 2124 "MachineIndependent/glslang.y" + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(2); } -#line 6175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8120 "MachineIndependent/glslang_tab.cpp" break; - case 196: -#line 1585 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); + case 284: /* type_specifier_nonarray: U16VEC3 */ +#line 2130 "MachineIndependent/glslang.y" + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(3); } -#line 6183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8131 "MachineIndependent/glslang_tab.cpp" break; - case 197: -#line 1591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeParameters) = new TArraySizes; - - TArraySize size; - parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); - (yyval.interm.typeParameters)->addInnerSize(size); + case 285: /* type_specifier_nonarray: U16VEC4 */ +#line 2136 "MachineIndependent/glslang.y" + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(4); } -#line 6195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8142 "MachineIndependent/glslang_tab.cpp" break; - case 198: -#line 1598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); - - TArraySize size; - parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); - (yyval.interm.typeParameters)->addInnerSize(size); + case 286: /* type_specifier_nonarray: U32VEC2 */ +#line 2142 "MachineIndependent/glslang.y" + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(2); } -#line 6207 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8153 "MachineIndependent/glslang_tab.cpp" break; - case 199: -#line 1608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 287: /* type_specifier_nonarray: U32VEC3 */ +#line 2148 "MachineIndependent/glslang.y" + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtVoid; + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(3); } -#line 6216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8164 "MachineIndependent/glslang_tab.cpp" break; - case 200: -#line 1612 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 288: /* type_specifier_nonarray: U32VEC4 */ +#line 2154 "MachineIndependent/glslang.y" + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(4); } -#line 6225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8175 "MachineIndependent/glslang_tab.cpp" break; - case 201: -#line 1616 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 289: /* type_specifier_nonarray: U64VEC2 */ +#line 2160 "MachineIndependent/glslang.y" + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(2); } -#line 6234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8186 "MachineIndependent/glslang_tab.cpp" break; - case 202: -#line 1620 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); + case 290: /* type_specifier_nonarray: U64VEC3 */ +#line 2166 "MachineIndependent/glslang.y" + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(3); } -#line 6244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8197 "MachineIndependent/glslang_tab.cpp" break; - case 203: -#line 1625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 291: /* type_specifier_nonarray: U64VEC4 */ +#line 2172 "MachineIndependent/glslang.y" + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(4); } -#line 6253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8208 "MachineIndependent/glslang_tab.cpp" break; - case 204: -#line 1629 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 292: /* type_specifier_nonarray: DMAT2 */ +#line 2178 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 2); } -#line 6263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8221 "MachineIndependent/glslang_tab.cpp" break; - case 205: -#line 1634 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 293: /* type_specifier_nonarray: DMAT3 */ +#line 2186 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); } -#line 6273 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8234 "MachineIndependent/glslang_tab.cpp" break; - case 206: -#line 1639 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 294: /* type_specifier_nonarray: DMAT4 */ +#line 2194 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 4); } -#line 6283 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8247 "MachineIndependent/glslang_tab.cpp" break; - case 207: -#line 1644 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 295: /* type_specifier_nonarray: DMAT2X2 */ +#line 2202 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 2); } -#line 6293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8260 "MachineIndependent/glslang_tab.cpp" break; - case 208: -#line 1649 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 296: /* type_specifier_nonarray: DMAT2X3 */ +#line 2210 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 3); } -#line 6303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8273 "MachineIndependent/glslang_tab.cpp" break; - case 209: -#line 1654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 297: /* type_specifier_nonarray: DMAT2X4 */ +#line 2218 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 4); } -#line 6313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8286 "MachineIndependent/glslang_tab.cpp" break; - case 210: -#line 1659 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 298: /* type_specifier_nonarray: DMAT3X2 */ +#line 2226 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 2); } -#line 6323 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8299 "MachineIndependent/glslang_tab.cpp" break; - case 211: -#line 1664 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 299: /* type_specifier_nonarray: DMAT3X3 */ +#line 2234 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); } -#line 6333 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8312 "MachineIndependent/glslang_tab.cpp" break; - case 212: -#line 1669 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 300: /* type_specifier_nonarray: DMAT3X4 */ +#line 2242 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 4); } -#line 6343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8325 "MachineIndependent/glslang_tab.cpp" break; - case 213: -#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); + case 301: /* type_specifier_nonarray: DMAT4X2 */ +#line 2250 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 2); } -#line 6354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8338 "MachineIndependent/glslang_tab.cpp" break; - case 214: -#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); + case 302: /* type_specifier_nonarray: DMAT4X3 */ +#line 2258 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 3); } -#line 6365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8351 "MachineIndependent/glslang_tab.cpp" break; - case 215: -#line 1686 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); + case 303: /* type_specifier_nonarray: DMAT4X4 */ +#line 2266 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 4); } -#line 6376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8364 "MachineIndependent/glslang_tab.cpp" break; - case 216: -#line 1692 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 304: /* type_specifier_nonarray: F16MAT2 */ +#line 2274 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 6386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8375 "MachineIndependent/glslang_tab.cpp" break; - case 217: -#line 1697 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 305: /* type_specifier_nonarray: F16MAT3 */ +#line 2280 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 6396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8386 "MachineIndependent/glslang_tab.cpp" break; - case 218: -#line 1702 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 306: /* type_specifier_nonarray: F16MAT4 */ +#line 2286 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 6406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8397 "MachineIndependent/glslang_tab.cpp" break; - case 219: -#line 1707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 307: /* type_specifier_nonarray: F16MAT2X2 */ +#line 2292 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 6416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8408 "MachineIndependent/glslang_tab.cpp" break; - case 220: -#line 1712 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 308: /* type_specifier_nonarray: F16MAT2X3 */ +#line 2298 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 6426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8419 "MachineIndependent/glslang_tab.cpp" break; - case 221: -#line 1717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 309: /* type_specifier_nonarray: F16MAT2X4 */ +#line 2304 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 6436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8430 "MachineIndependent/glslang_tab.cpp" break; - case 222: -#line 1722 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 310: /* type_specifier_nonarray: F16MAT3X2 */ +#line 2310 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 6446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8441 "MachineIndependent/glslang_tab.cpp" break; - case 223: -#line 1727 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 311: /* type_specifier_nonarray: F16MAT3X3 */ +#line 2316 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 6456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8452 "MachineIndependent/glslang_tab.cpp" break; - case 224: -#line 1732 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 312: /* type_specifier_nonarray: F16MAT3X4 */ +#line 2322 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 6466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8463 "MachineIndependent/glslang_tab.cpp" break; - case 225: -#line 1737 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 313: /* type_specifier_nonarray: F16MAT4X2 */ +#line 2328 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 6476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8474 "MachineIndependent/glslang_tab.cpp" break; - case 226: -#line 1742 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 314: /* type_specifier_nonarray: F16MAT4X3 */ +#line 2334 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 6486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8485 "MachineIndependent/glslang_tab.cpp" break; - case 227: -#line 1747 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 315: /* type_specifier_nonarray: F16MAT4X4 */ +#line 2340 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 6496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8496 "MachineIndependent/glslang_tab.cpp" break; - case 228: -#line 1753 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double"); + case 316: /* type_specifier_nonarray: F32MAT2 */ +#line 2346 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); + } +#line 8507 "MachineIndependent/glslang_tab.cpp" + break; + + case 317: /* type_specifier_nonarray: F32MAT3 */ +#line 2352 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); } -#line 6506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8518 "MachineIndependent/glslang_tab.cpp" break; - case 229: -#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); + case 318: /* type_specifier_nonarray: F32MAT4 */ +#line 2358 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); } -#line 6516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8529 "MachineIndependent/glslang_tab.cpp" break; - case 230: -#line 1763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); + case 319: /* type_specifier_nonarray: F32MAT2X2 */ +#line 2364 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); } -#line 6526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8540 "MachineIndependent/glslang_tab.cpp" break; - case 231: -#line 1768 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); + case 320: /* type_specifier_nonarray: F32MAT2X3 */ +#line 2370 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 3); } -#line 6536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8551 "MachineIndependent/glslang_tab.cpp" break; - case 232: -#line 1773 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); + case 321: /* type_specifier_nonarray: F32MAT2X4 */ +#line 2376 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt8; + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 4); } -#line 6546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8562 "MachineIndependent/glslang_tab.cpp" break; - case 233: -#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + case 322: /* type_specifier_nonarray: F32MAT3X2 */ +#line 2382 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 2); } -#line 6556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8573 "MachineIndependent/glslang_tab.cpp" break; - case 234: -#line 1783 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); + case 323: /* type_specifier_nonarray: F32MAT3X3 */ +#line 2388 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt16; + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); } -#line 6566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8584 "MachineIndependent/glslang_tab.cpp" break; - case 235: -#line 1788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + case 324: /* type_specifier_nonarray: F32MAT3X4 */ +#line 2394 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 4); } -#line 6576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8595 "MachineIndependent/glslang_tab.cpp" break; - case 236: -#line 1793 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); + case 325: /* type_specifier_nonarray: F32MAT4X2 */ +#line 2400 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 2); } -#line 6586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8606 "MachineIndependent/glslang_tab.cpp" break; - case 237: -#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + case 326: /* type_specifier_nonarray: F32MAT4X3 */ +#line 2406 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 3); } -#line 6596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8617 "MachineIndependent/glslang_tab.cpp" break; - case 238: -#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); + case 327: /* type_specifier_nonarray: F32MAT4X4 */ +#line 2412 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); } -#line 6606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8628 "MachineIndependent/glslang_tab.cpp" break; - case 239: -#line 1808 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + case 328: /* type_specifier_nonarray: F64MAT2 */ +#line 2418 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 2); } -#line 6616 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8639 "MachineIndependent/glslang_tab.cpp" break; - case 240: -#line 1813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); + case 329: /* type_specifier_nonarray: F64MAT3 */ +#line 2424 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(2); + (yyval.interm.type).setMatrix(3, 3); } -#line 6627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8650 "MachineIndependent/glslang_tab.cpp" break; - case 241: -#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); + case 330: /* type_specifier_nonarray: F64MAT4 */ +#line 2430 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(3); + (yyval.interm.type).setMatrix(4, 4); } -#line 6638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8661 "MachineIndependent/glslang_tab.cpp" break; - case 242: -#line 1825 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); + case 331: /* type_specifier_nonarray: F64MAT2X2 */ +#line 2436 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(4); + (yyval.interm.type).setMatrix(2, 2); } -#line 6649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8672 "MachineIndependent/glslang_tab.cpp" break; - case 243: -#line 1831 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + case 332: /* type_specifier_nonarray: F64MAT2X3 */ +#line 2442 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 3); } -#line 6660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8683 "MachineIndependent/glslang_tab.cpp" break; - case 244: -#line 1837 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + case 333: /* type_specifier_nonarray: F64MAT2X4 */ +#line 2448 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 4); } -#line 6671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8694 "MachineIndependent/glslang_tab.cpp" break; - case 245: -#line 1843 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + case 334: /* type_specifier_nonarray: F64MAT3X2 */ +#line 2454 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 2); } -#line 6682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8705 "MachineIndependent/glslang_tab.cpp" break; - case 246: -#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + case 335: /* type_specifier_nonarray: F64MAT3X3 */ +#line 2460 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); } -#line 6693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8716 "MachineIndependent/glslang_tab.cpp" break; - case 247: -#line 1855 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + case 336: /* type_specifier_nonarray: F64MAT3X4 */ +#line 2466 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 4); } -#line 6704 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8727 "MachineIndependent/glslang_tab.cpp" break; - case 248: -#line 1861 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + case 337: /* type_specifier_nonarray: F64MAT4X2 */ +#line 2472 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 2); } -#line 6715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8738 "MachineIndependent/glslang_tab.cpp" break; - case 249: -#line 1867 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + case 338: /* type_specifier_nonarray: F64MAT4X3 */ +#line 2478 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(2); + (yyval.interm.type).setMatrix(4, 3); } -#line 6726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8749 "MachineIndependent/glslang_tab.cpp" break; - case 250: -#line 1873 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + case 339: /* type_specifier_nonarray: F64MAT4X4 */ +#line 2484 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(3); + (yyval.interm.type).setMatrix(4, 4); } -#line 6737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8760 "MachineIndependent/glslang_tab.cpp" break; - case 251: -#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(4); + case 340: /* type_specifier_nonarray: ACCSTRUCTNV */ +#line 2490 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtAccStruct; } -#line 6748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8769 "MachineIndependent/glslang_tab.cpp" break; - case 252: -#line 1885 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt8; - (yyval.interm.type).setVector(2); + case 341: /* type_specifier_nonarray: ACCSTRUCTEXT */ +#line 2494 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtAccStruct; } -#line 6759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8778 "MachineIndependent/glslang_tab.cpp" break; - case 253: -#line 1891 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 342: /* type_specifier_nonarray: RAYQUERYEXT */ +#line 2498 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtRayQuery; + } +#line 8787 "MachineIndependent/glslang_tab.cpp" + break; + + case 343: /* type_specifier_nonarray: ATOMIC_UINT */ +#line 2502 "MachineIndependent/glslang.y" + { + parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt8; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtAtomicUint; } -#line 6770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8797 "MachineIndependent/glslang_tab.cpp" break; - case 254: -#line 1897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 344: /* type_specifier_nonarray: SAMPLER1D */ +#line 2507 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt8; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 6781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8807 "MachineIndependent/glslang_tab.cpp" break; - case 255: -#line 1903 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 345: /* type_specifier_nonarray: SAMPLER2D */ +#line 2513 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt16; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 6792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8817 "MachineIndependent/glslang_tab.cpp" break; - case 256: -#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 346: /* type_specifier_nonarray: SAMPLER3D */ +#line 2518 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt16; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 6803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8827 "MachineIndependent/glslang_tab.cpp" break; - case 257: -#line 1915 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 347: /* type_specifier_nonarray: SAMPLERCUBE */ +#line 2523 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt16; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 6814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8837 "MachineIndependent/glslang_tab.cpp" break; - case 258: -#line 1921 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 348: /* type_specifier_nonarray: SAMPLER2DSHADOW */ +#line 2528 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 6825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8847 "MachineIndependent/glslang_tab.cpp" break; - case 259: -#line 1927 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 349: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ +#line 2533 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 6836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8857 "MachineIndependent/glslang_tab.cpp" break; - case 260: -#line 1933 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 350: /* type_specifier_nonarray: SAMPLER2DARRAY */ +#line 2538 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 6847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8867 "MachineIndependent/glslang_tab.cpp" break; - case 261: -#line 1939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 351: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ +#line 2543 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 6858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8877 "MachineIndependent/glslang_tab.cpp" break; - case 262: -#line 1945 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 352: /* type_specifier_nonarray: SAMPLER1DSHADOW */ +#line 2549 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 6869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8887 "MachineIndependent/glslang_tab.cpp" break; - case 263: -#line 1951 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 353: /* type_specifier_nonarray: SAMPLER1DARRAY */ +#line 2554 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 6880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8897 "MachineIndependent/glslang_tab.cpp" break; - case 264: -#line 1957 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 354: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ +#line 2559 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint8; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 6891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8907 "MachineIndependent/glslang_tab.cpp" break; - case 265: -#line 1963 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 355: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ +#line 2564 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint8; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 6902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8917 "MachineIndependent/glslang_tab.cpp" break; - case 266: -#line 1969 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 356: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ +#line 2569 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint8; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 6913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8927 "MachineIndependent/glslang_tab.cpp" break; - case 267: -#line 1975 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 357: /* type_specifier_nonarray: F16SAMPLER1D */ +#line 2574 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint16; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 6924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8938 "MachineIndependent/glslang_tab.cpp" break; - case 268: -#line 1981 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 358: /* type_specifier_nonarray: F16SAMPLER2D */ +#line 2580 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint16; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 6935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8949 "MachineIndependent/glslang_tab.cpp" break; - case 269: -#line 1987 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 359: /* type_specifier_nonarray: F16SAMPLER3D */ +#line 2586 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint16; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 6946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8960 "MachineIndependent/glslang_tab.cpp" break; - case 270: -#line 1993 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 360: /* type_specifier_nonarray: F16SAMPLERCUBE */ +#line 2592 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 6957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8971 "MachineIndependent/glslang_tab.cpp" break; - case 271: -#line 1999 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 361: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ +#line 2598 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 6968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8982 "MachineIndependent/glslang_tab.cpp" break; - case 272: -#line 2005 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 362: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ +#line 2604 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 6979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8993 "MachineIndependent/glslang_tab.cpp" break; - case 273: -#line 2011 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 363: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ +#line 2610 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint64; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 6990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9004 "MachineIndependent/glslang_tab.cpp" break; - case 274: -#line 2017 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 364: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ +#line 2616 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint64; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 7001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9015 "MachineIndependent/glslang_tab.cpp" break; - case 275: -#line 2023 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + case 365: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ +#line 2622 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint64; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 7012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9026 "MachineIndependent/glslang_tab.cpp" break; - case 276: -#line 2029 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + case 366: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ +#line 2628 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 7023 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9037 "MachineIndependent/glslang_tab.cpp" break; - case 277: -#line 2035 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + case 367: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ +#line 2634 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 7034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9048 "MachineIndependent/glslang_tab.cpp" break; - case 278: -#line 2041 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + case 368: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ +#line 2640 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 7045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9059 "MachineIndependent/glslang_tab.cpp" break; - case 279: -#line 2047 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + case 369: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ +#line 2646 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 7056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9070 "MachineIndependent/glslang_tab.cpp" break; - case 280: -#line 2053 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + case 370: /* type_specifier_nonarray: ISAMPLER1D */ +#line 2652 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 7067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9080 "MachineIndependent/glslang_tab.cpp" break; - case 281: -#line 2059 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + case 371: /* type_specifier_nonarray: ISAMPLER2D */ +#line 2658 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 7078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9090 "MachineIndependent/glslang_tab.cpp" break; - case 282: -#line 2065 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + case 372: /* type_specifier_nonarray: ISAMPLER3D */ +#line 2663 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 7089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9100 "MachineIndependent/glslang_tab.cpp" break; - case 283: -#line 2071 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + case 373: /* type_specifier_nonarray: ISAMPLERCUBE */ +#line 2668 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 7100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9110 "MachineIndependent/glslang_tab.cpp" break; - case 284: -#line 2077 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + case 374: /* type_specifier_nonarray: ISAMPLER2DARRAY */ +#line 2673 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 7111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9120 "MachineIndependent/glslang_tab.cpp" break; - case 285: -#line 2083 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + case 375: /* type_specifier_nonarray: USAMPLER2D */ +#line 2678 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 7122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9130 "MachineIndependent/glslang_tab.cpp" break; - case 286: -#line 2089 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + case 376: /* type_specifier_nonarray: USAMPLER3D */ +#line 2683 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 7133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9140 "MachineIndependent/glslang_tab.cpp" break; - case 287: -#line 2095 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + case 377: /* type_specifier_nonarray: USAMPLERCUBE */ +#line 2688 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 7144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9150 "MachineIndependent/glslang_tab.cpp" break; - case 288: -#line 2101 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + case 378: /* type_specifier_nonarray: ISAMPLER1DARRAY */ +#line 2694 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 7155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9160 "MachineIndependent/glslang_tab.cpp" break; - case 289: -#line 2107 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + case 379: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ +#line 2699 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 7166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9170 "MachineIndependent/glslang_tab.cpp" break; - case 290: -#line 2113 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + case 380: /* type_specifier_nonarray: USAMPLER1D */ +#line 2704 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 7177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9180 "MachineIndependent/glslang_tab.cpp" break; - case 291: -#line 2119 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + case 381: /* type_specifier_nonarray: USAMPLER1DARRAY */ +#line 2709 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 7188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9190 "MachineIndependent/glslang_tab.cpp" break; - case 292: -#line 2125 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + case 382: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ +#line 2714 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 7199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9200 "MachineIndependent/glslang_tab.cpp" break; - case 293: -#line 2131 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + case 383: /* type_specifier_nonarray: TEXTURECUBEARRAY */ +#line 2719 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 7210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9210 "MachineIndependent/glslang_tab.cpp" break; - case 294: -#line 2137 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + case 384: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ +#line 2724 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 7221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9220 "MachineIndependent/glslang_tab.cpp" break; - case 295: -#line 2143 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + case 385: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ +#line 2729 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 7232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9230 "MachineIndependent/glslang_tab.cpp" break; - case 296: -#line 2149 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + case 386: /* type_specifier_nonarray: USAMPLER2DARRAY */ +#line 2735 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 7243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9240 "MachineIndependent/glslang_tab.cpp" break; - case 297: -#line 2155 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + case 387: /* type_specifier_nonarray: TEXTURE2D */ +#line 2740 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 7254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9250 "MachineIndependent/glslang_tab.cpp" break; - case 298: -#line 2161 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + case 388: /* type_specifier_nonarray: TEXTURE3D */ +#line 2745 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 7265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9260 "MachineIndependent/glslang_tab.cpp" break; - case 299: -#line 2167 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + case 389: /* type_specifier_nonarray: TEXTURE2DARRAY */ +#line 2750 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 7276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9270 "MachineIndependent/glslang_tab.cpp" break; - case 300: -#line 2173 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 390: /* type_specifier_nonarray: TEXTURECUBE */ +#line 2755 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 7287 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9280 "MachineIndependent/glslang_tab.cpp" break; - case 301: -#line 2179 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 391: /* type_specifier_nonarray: ITEXTURE2D */ +#line 2760 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 7298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9290 "MachineIndependent/glslang_tab.cpp" break; - case 302: -#line 2185 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 392: /* type_specifier_nonarray: ITEXTURE3D */ +#line 2765 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 7309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9300 "MachineIndependent/glslang_tab.cpp" break; - case 303: -#line 2191 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 393: /* type_specifier_nonarray: ITEXTURECUBE */ +#line 2770 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 7320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9310 "MachineIndependent/glslang_tab.cpp" break; - case 304: -#line 2197 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 394: /* type_specifier_nonarray: ITEXTURE2DARRAY */ +#line 2775 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 7331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9320 "MachineIndependent/glslang_tab.cpp" break; - case 305: -#line 2203 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 395: /* type_specifier_nonarray: UTEXTURE2D */ +#line 2780 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 7342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9330 "MachineIndependent/glslang_tab.cpp" break; - case 306: -#line 2209 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 396: /* type_specifier_nonarray: UTEXTURE3D */ +#line 2785 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 7353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9340 "MachineIndependent/glslang_tab.cpp" break; - case 307: -#line 2215 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 397: /* type_specifier_nonarray: UTEXTURECUBE */ +#line 2790 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 7364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9350 "MachineIndependent/glslang_tab.cpp" break; - case 308: -#line 2221 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 398: /* type_specifier_nonarray: UTEXTURE2DARRAY */ +#line 2795 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 7375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9360 "MachineIndependent/glslang_tab.cpp" break; - case 309: -#line 2227 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 399: /* type_specifier_nonarray: SAMPLER */ +#line 2800 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setPureSampler(false); } -#line 7386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9370 "MachineIndependent/glslang_tab.cpp" break; - case 310: -#line 2233 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 400: /* type_specifier_nonarray: SAMPLERSHADOW */ +#line 2805 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setPureSampler(true); } -#line 7397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9380 "MachineIndependent/glslang_tab.cpp" break; - case 311: -#line 2239 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 401: /* type_specifier_nonarray: SAMPLER2DRECT */ +#line 2811 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 7408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9390 "MachineIndependent/glslang_tab.cpp" break; - case 312: -#line 2245 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 402: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ +#line 2816 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 7419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9400 "MachineIndependent/glslang_tab.cpp" break; - case 313: -#line 2251 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 403: /* type_specifier_nonarray: F16SAMPLER2DRECT */ +#line 2821 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 7430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9411 "MachineIndependent/glslang_tab.cpp" break; - case 314: -#line 2257 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 404: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ +#line 2827 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 7441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9422 "MachineIndependent/glslang_tab.cpp" break; - case 315: -#line 2263 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 405: /* type_specifier_nonarray: ISAMPLER2DRECT */ +#line 2833 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 7452 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9432 "MachineIndependent/glslang_tab.cpp" break; - case 316: -#line 2269 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 406: /* type_specifier_nonarray: USAMPLER2DRECT */ +#line 2838 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 7463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9442 "MachineIndependent/glslang_tab.cpp" break; - case 317: -#line 2275 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 407: /* type_specifier_nonarray: SAMPLERBUFFER */ +#line 2843 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 7474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9452 "MachineIndependent/glslang_tab.cpp" break; - case 318: -#line 2281 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 408: /* type_specifier_nonarray: F16SAMPLERBUFFER */ +#line 2848 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 7485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9463 "MachineIndependent/glslang_tab.cpp" break; - case 319: -#line 2287 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 409: /* type_specifier_nonarray: ISAMPLERBUFFER */ +#line 2854 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 7496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9473 "MachineIndependent/glslang_tab.cpp" break; - case 320: -#line 2293 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 410: /* type_specifier_nonarray: USAMPLERBUFFER */ +#line 2859 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 7507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9483 "MachineIndependent/glslang_tab.cpp" break; - case 321: -#line 2299 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 411: /* type_specifier_nonarray: SAMPLER2DMS */ +#line 2864 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 2); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 7518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9493 "MachineIndependent/glslang_tab.cpp" break; - case 322: -#line 2305 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 412: /* type_specifier_nonarray: F16SAMPLER2DMS */ +#line 2869 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 3); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 7529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9504 "MachineIndependent/glslang_tab.cpp" break; - case 323: -#line 2311 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + case 413: /* type_specifier_nonarray: ISAMPLER2DMS */ +#line 2875 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 7540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9514 "MachineIndependent/glslang_tab.cpp" break; - case 324: -#line 2317 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtAccStructNV; + case 414: /* type_specifier_nonarray: USAMPLER2DMS */ +#line 2880 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 7549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9524 "MachineIndependent/glslang_tab.cpp" break; - case 325: -#line 2321 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); + case 415: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ +#line 2885 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtAtomicUint; + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 7559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9534 "MachineIndependent/glslang_tab.cpp" break; - case 326: -#line 2326 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 416: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ +#line 2890 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd1D); + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 7569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9545 "MachineIndependent/glslang_tab.cpp" break; - case 327: -#line 2332 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 417: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ +#line 2896 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D); + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 7579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9555 "MachineIndependent/glslang_tab.cpp" break; - case 328: -#line 2337 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 418: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ +#line 2901 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd3D); + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 7589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9565 "MachineIndependent/glslang_tab.cpp" break; - case 329: -#line 2342 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 419: /* type_specifier_nonarray: TEXTURE1D */ +#line 2906 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 7599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9575 "MachineIndependent/glslang_tab.cpp" break; - case 330: -#line 2347 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 420: /* type_specifier_nonarray: F16TEXTURE1D */ +#line 2911 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 7609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9586 "MachineIndependent/glslang_tab.cpp" break; - case 331: -#line 2352 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 421: /* type_specifier_nonarray: F16TEXTURE2D */ +#line 2917 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 7619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9597 "MachineIndependent/glslang_tab.cpp" break; - case 332: -#line 2357 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 422: /* type_specifier_nonarray: F16TEXTURE3D */ +#line 2923 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 7629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9608 "MachineIndependent/glslang_tab.cpp" break; - case 333: -#line 2362 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 423: /* type_specifier_nonarray: F16TEXTURECUBE */ +#line 2929 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); + (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 7639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9619 "MachineIndependent/glslang_tab.cpp" break; - case 334: -#line 2368 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 424: /* type_specifier_nonarray: TEXTURE1DARRAY */ +#line 2935 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 7649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9629 "MachineIndependent/glslang_tab.cpp" break; - case 335: -#line 2373 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 425: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ +#line 2940 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 7659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9640 "MachineIndependent/glslang_tab.cpp" break; - case 336: -#line 2378 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 426: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ +#line 2946 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 7669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9651 "MachineIndependent/glslang_tab.cpp" break; - case 337: -#line 2383 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 427: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ +#line 2952 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); + (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 7679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9662 "MachineIndependent/glslang_tab.cpp" break; - case 338: -#line 2388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 428: /* type_specifier_nonarray: ITEXTURE1D */ +#line 2958 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 7689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9672 "MachineIndependent/glslang_tab.cpp" break; - case 339: -#line 2393 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 429: /* type_specifier_nonarray: ITEXTURE1DARRAY */ +#line 2963 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 7700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9682 "MachineIndependent/glslang_tab.cpp" break; - case 340: -#line 2399 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 430: /* type_specifier_nonarray: UTEXTURE1D */ +#line 2968 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 7711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9692 "MachineIndependent/glslang_tab.cpp" break; - case 341: -#line 2405 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 431: /* type_specifier_nonarray: UTEXTURE1DARRAY */ +#line 2973 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 7722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9702 "MachineIndependent/glslang_tab.cpp" break; - case 342: -#line 2411 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 432: /* type_specifier_nonarray: TEXTURE2DRECT */ +#line 2978 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 7733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9712 "MachineIndependent/glslang_tab.cpp" break; - case 343: -#line 2417 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 433: /* type_specifier_nonarray: F16TEXTURE2DRECT */ +#line 2983 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); + (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 7744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9723 "MachineIndependent/glslang_tab.cpp" break; - case 344: -#line 2423 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 434: /* type_specifier_nonarray: ITEXTURE2DRECT */ +#line 2989 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); + (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 7755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9733 "MachineIndependent/glslang_tab.cpp" break; - case 345: -#line 2429 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 435: /* type_specifier_nonarray: UTEXTURE2DRECT */ +#line 2994 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); + (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 7766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9743 "MachineIndependent/glslang_tab.cpp" break; - case 346: -#line 2435 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 436: /* type_specifier_nonarray: TEXTUREBUFFER */ +#line 2999 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 7777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9753 "MachineIndependent/glslang_tab.cpp" break; - case 347: -#line 2441 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 437: /* type_specifier_nonarray: F16TEXTUREBUFFER */ +#line 3004 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); + (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 7788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9764 "MachineIndependent/glslang_tab.cpp" break; - case 348: -#line 2447 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 438: /* type_specifier_nonarray: ITEXTUREBUFFER */ +#line 3010 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); + (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 7799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9774 "MachineIndependent/glslang_tab.cpp" break; - case 349: -#line 2453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 439: /* type_specifier_nonarray: UTEXTUREBUFFER */ +#line 3015 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); + (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 7810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9784 "MachineIndependent/glslang_tab.cpp" break; - case 350: -#line 2459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 440: /* type_specifier_nonarray: TEXTURE2DMS */ +#line 3020 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 7821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9794 "MachineIndependent/glslang_tab.cpp" break; - case 351: -#line 2465 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 441: /* type_specifier_nonarray: F16TEXTURE2DMS */ +#line 3025 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 7832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9805 "MachineIndependent/glslang_tab.cpp" break; - case 352: -#line 2471 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 442: /* type_specifier_nonarray: ITEXTURE2DMS */ +#line 3031 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd1D); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 7842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9815 "MachineIndependent/glslang_tab.cpp" break; - case 353: -#line 2477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 443: /* type_specifier_nonarray: UTEXTURE2DMS */ +#line 3036 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 7852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9825 "MachineIndependent/glslang_tab.cpp" break; - case 354: -#line 2482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 444: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ +#line 3041 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd3D); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 7862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9835 "MachineIndependent/glslang_tab.cpp" break; - case 355: -#line 2487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 445: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ +#line 3046 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 7872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9846 "MachineIndependent/glslang_tab.cpp" break; - case 356: -#line 2492 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 446: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ +#line 3052 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 7882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9856 "MachineIndependent/glslang_tab.cpp" break; - case 357: -#line 2497 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 447: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ +#line 3057 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 7892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9866 "MachineIndependent/glslang_tab.cpp" break; - case 358: -#line 2502 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 448: /* type_specifier_nonarray: IMAGE1D */ +#line 3062 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd3D); + (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 7902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9876 "MachineIndependent/glslang_tab.cpp" break; - case 359: -#line 2507 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 449: /* type_specifier_nonarray: F16IMAGE1D */ +#line 3067 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdCube); + (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 7912 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9887 "MachineIndependent/glslang_tab.cpp" break; - case 360: -#line 2513 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 450: /* type_specifier_nonarray: IIMAGE1D */ +#line 3073 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); + (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 7922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9897 "MachineIndependent/glslang_tab.cpp" break; - case 361: -#line 2518 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 451: /* type_specifier_nonarray: UIMAGE1D */ +#line 3078 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); + (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 7932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9907 "MachineIndependent/glslang_tab.cpp" break; - case 362: -#line 2523 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 452: /* type_specifier_nonarray: IMAGE2D */ +#line 3083 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd1D); + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 7942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9917 "MachineIndependent/glslang_tab.cpp" break; - case 363: -#line 2528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 453: /* type_specifier_nonarray: F16IMAGE2D */ +#line 3088 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); + (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 7952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9928 "MachineIndependent/glslang_tab.cpp" break; - case 364: -#line 2533 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 454: /* type_specifier_nonarray: IIMAGE2D */ +#line 3094 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 7962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9938 "MachineIndependent/glslang_tab.cpp" break; - case 365: -#line 2538 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 455: /* type_specifier_nonarray: UIMAGE2D */ +#line 3099 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 7972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9948 "MachineIndependent/glslang_tab.cpp" break; - case 366: -#line 2543 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 456: /* type_specifier_nonarray: IMAGE3D */ +#line 3104 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); + (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 7982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9958 "MachineIndependent/glslang_tab.cpp" break; - case 367: -#line 2548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 457: /* type_specifier_nonarray: F16IMAGE3D */ +#line 3109 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); + (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 7992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9969 "MachineIndependent/glslang_tab.cpp" break; - case 368: -#line 2554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 458: /* type_specifier_nonarray: IIMAGE3D */ +#line 3115 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); + (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 8002 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9979 "MachineIndependent/glslang_tab.cpp" break; - case 369: -#line 2559 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 459: /* type_specifier_nonarray: UIMAGE3D */ +#line 3120 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); + (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 8012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9989 "MachineIndependent/glslang_tab.cpp" break; - case 370: -#line 2564 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 460: /* type_specifier_nonarray: IMAGE2DRECT */ +#line 3125 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); + (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 8022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9999 "MachineIndependent/glslang_tab.cpp" break; - case 371: -#line 2569 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 461: /* type_specifier_nonarray: F16IMAGE2DRECT */ +#line 3130 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); + (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 8032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10010 "MachineIndependent/glslang_tab.cpp" break; - case 372: -#line 2574 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 462: /* type_specifier_nonarray: IIMAGE2DRECT */ +#line 3136 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); + (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 8042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10020 "MachineIndependent/glslang_tab.cpp" break; - case 373: -#line 2579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 463: /* type_specifier_nonarray: UIMAGE2DRECT */ +#line 3141 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); + (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 8052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10030 "MachineIndependent/glslang_tab.cpp" break; - case 374: -#line 2584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 464: /* type_specifier_nonarray: IMAGECUBE */ +#line 3146 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); + (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 8062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10040 "MachineIndependent/glslang_tab.cpp" break; - case 375: -#line 2589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 465: /* type_specifier_nonarray: F16IMAGECUBE */ +#line 3151 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); + (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 8072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10051 "MachineIndependent/glslang_tab.cpp" break; - case 376: -#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 466: /* type_specifier_nonarray: IIMAGECUBE */ +#line 3157 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); + (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 8082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10061 "MachineIndependent/glslang_tab.cpp" break; - case 377: -#line 2599 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 467: /* type_specifier_nonarray: UIMAGECUBE */ +#line 3162 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); + (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 8092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10071 "MachineIndependent/glslang_tab.cpp" break; - case 378: -#line 2604 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 468: /* type_specifier_nonarray: IMAGEBUFFER */ +#line 3167 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); + (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 8102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10081 "MachineIndependent/glslang_tab.cpp" break; - case 379: -#line 2609 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 469: /* type_specifier_nonarray: F16IMAGEBUFFER */ +#line 3172 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); + (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 8112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10092 "MachineIndependent/glslang_tab.cpp" break; - case 380: -#line 2614 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 470: /* type_specifier_nonarray: IIMAGEBUFFER */ +#line 3178 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); + (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 8122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10102 "MachineIndependent/glslang_tab.cpp" break; - case 381: -#line 2619 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 471: /* type_specifier_nonarray: UIMAGEBUFFER */ +#line 3183 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setPureSampler(false); + (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 8132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10112 "MachineIndependent/glslang_tab.cpp" break; - case 382: -#line 2624 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 472: /* type_specifier_nonarray: IMAGE1DARRAY */ +#line 3188 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setPureSampler(true); + (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 8142 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10122 "MachineIndependent/glslang_tab.cpp" break; - case 383: -#line 2630 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 473: /* type_specifier_nonarray: F16IMAGE1DARRAY */ +#line 3193 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdRect); + (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 8152 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10133 "MachineIndependent/glslang_tab.cpp" break; - case 384: -#line 2635 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 474: /* type_specifier_nonarray: IIMAGE1DARRAY */ +#line 3199 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); + (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 8162 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10143 "MachineIndependent/glslang_tab.cpp" break; - case 385: -#line 2640 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 475: /* type_specifier_nonarray: UIMAGE1DARRAY */ +#line 3204 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); + (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 8173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10153 "MachineIndependent/glslang_tab.cpp" break; - case 386: -#line 2646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 476: /* type_specifier_nonarray: IMAGE2DARRAY */ +#line 3209 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 8184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10163 "MachineIndependent/glslang_tab.cpp" break; - case 387: -#line 2652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 477: /* type_specifier_nonarray: F16IMAGE2DARRAY */ +#line 3214 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, EsdRect); + (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 8194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10174 "MachineIndependent/glslang_tab.cpp" break; - case 388: -#line 2657 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 478: /* type_specifier_nonarray: IIMAGE2DARRAY */ +#line 3220 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdRect); + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 8204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10184 "MachineIndependent/glslang_tab.cpp" break; - case 389: -#line 2662 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 479: /* type_specifier_nonarray: UIMAGE2DARRAY */ +#line 3225 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 8214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10194 "MachineIndependent/glslang_tab.cpp" break; - case 390: -#line 2667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 480: /* type_specifier_nonarray: IMAGECUBEARRAY */ +#line 3230 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); + (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 8225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10204 "MachineIndependent/glslang_tab.cpp" break; - case 391: -#line 2673 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 481: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ +#line 3235 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); + (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 8235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10215 "MachineIndependent/glslang_tab.cpp" break; - case 392: -#line 2678 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 482: /* type_specifier_nonarray: IIMAGECUBEARRAY */ +#line 3241 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); + (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 8245 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10225 "MachineIndependent/glslang_tab.cpp" break; - case 393: -#line 2683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 483: /* type_specifier_nonarray: UIMAGECUBEARRAY */ +#line 3246 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); + (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 8255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10235 "MachineIndependent/glslang_tab.cpp" break; - case 394: -#line 2688 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 484: /* type_specifier_nonarray: IMAGE2DMS */ +#line 3251 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 8266 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10245 "MachineIndependent/glslang_tab.cpp" break; - case 395: -#line 2694 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 485: /* type_specifier_nonarray: F16IMAGE2DMS */ +#line 3256 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); + (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 8276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10256 "MachineIndependent/glslang_tab.cpp" break; - case 396: -#line 2699 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 486: /* type_specifier_nonarray: IIMAGE2DMS */ +#line 3262 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 8286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10266 "MachineIndependent/glslang_tab.cpp" break; - case 397: -#line 2704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 487: /* type_specifier_nonarray: UIMAGE2DMS */ +#line 3267 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 8296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10276 "MachineIndependent/glslang_tab.cpp" break; - case 398: -#line 2709 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + case 488: /* type_specifier_nonarray: IMAGE2DMSARRAY */ +#line 3272 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 8307 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10286 "MachineIndependent/glslang_tab.cpp" break; - case 399: -#line 2715 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 489: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ +#line 3277 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); + (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 8317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10297 "MachineIndependent/glslang_tab.cpp" break; - case 400: -#line 2720 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 490: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ +#line 3283 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 8327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10307 "MachineIndependent/glslang_tab.cpp" break; - case 401: -#line 2725 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 491: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ +#line 3288 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 8337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10317 "MachineIndependent/glslang_tab.cpp" break; - case 402: -#line 2730 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + case 492: /* type_specifier_nonarray: I64IMAGE1D */ +#line 3293 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); + (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 8348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10327 "MachineIndependent/glslang_tab.cpp" break; - case 403: -#line 2736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + case 493: /* type_specifier_nonarray: U64IMAGE1D */ +#line 3298 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); + (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 8359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10337 "MachineIndependent/glslang_tab.cpp" break; - case 404: -#line 2742 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + case 494: /* type_specifier_nonarray: I64IMAGE2D */ +#line 3303 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); + (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 8370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10347 "MachineIndependent/glslang_tab.cpp" break; - case 405: -#line 2748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + case 495: /* type_specifier_nonarray: U64IMAGE2D */ +#line 3308 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); + (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 8381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10357 "MachineIndependent/glslang_tab.cpp" break; - case 406: -#line 2754 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 496: /* type_specifier_nonarray: I64IMAGE3D */ +#line 3313 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); + (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 8391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10367 "MachineIndependent/glslang_tab.cpp" break; - case 407: -#line 2759 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + case 497: /* type_specifier_nonarray: U64IMAGE3D */ +#line 3318 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); + (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 8402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10377 "MachineIndependent/glslang_tab.cpp" break; - case 408: -#line 2765 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + case 498: /* type_specifier_nonarray: I64IMAGE2DRECT */ +#line 3323 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); + (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 8413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10387 "MachineIndependent/glslang_tab.cpp" break; - case 409: -#line 2771 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + case 499: /* type_specifier_nonarray: U64IMAGE2DRECT */ +#line 3328 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); + (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 8424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10397 "MachineIndependent/glslang_tab.cpp" break; - case 410: -#line 2777 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 500: /* type_specifier_nonarray: I64IMAGECUBE */ +#line 3333 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); + (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 8434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10407 "MachineIndependent/glslang_tab.cpp" break; - case 411: -#line 2782 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 501: /* type_specifier_nonarray: U64IMAGECUBE */ +#line 3338 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); + (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 8444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10417 "MachineIndependent/glslang_tab.cpp" break; - case 412: -#line 2787 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 502: /* type_specifier_nonarray: I64IMAGEBUFFER */ +#line 3343 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); + (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 8454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10427 "MachineIndependent/glslang_tab.cpp" break; - case 413: -#line 2792 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 503: /* type_specifier_nonarray: U64IMAGEBUFFER */ +#line 3348 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); + (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 8464 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10437 "MachineIndependent/glslang_tab.cpp" break; - case 414: -#line 2797 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 504: /* type_specifier_nonarray: I64IMAGE1DARRAY */ +#line 3353 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); + (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 8474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10447 "MachineIndependent/glslang_tab.cpp" break; - case 415: -#line 2802 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + case 505: /* type_specifier_nonarray: U64IMAGE1DARRAY */ +#line 3358 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); + (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 8485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10457 "MachineIndependent/glslang_tab.cpp" break; - case 416: -#line 2808 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 506: /* type_specifier_nonarray: I64IMAGE2DARRAY */ +#line 3363 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); + (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 8495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10467 "MachineIndependent/glslang_tab.cpp" break; - case 417: -#line 2813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 507: /* type_specifier_nonarray: U64IMAGE2DARRAY */ +#line 3368 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); + (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 8505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10477 "MachineIndependent/glslang_tab.cpp" break; - case 418: -#line 2818 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 508: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ +#line 3373 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); + (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 8515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10487 "MachineIndependent/glslang_tab.cpp" break; - case 419: -#line 2823 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + case 509: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ +#line 3378 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); + (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 8526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10497 "MachineIndependent/glslang_tab.cpp" break; - case 420: -#line 2829 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 510: /* type_specifier_nonarray: I64IMAGE2DMS */ +#line 3383 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); + (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 8536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10507 "MachineIndependent/glslang_tab.cpp" break; - case 421: -#line 2834 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 511: /* type_specifier_nonarray: U64IMAGE2DMS */ +#line 3388 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); + (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 8546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10517 "MachineIndependent/glslang_tab.cpp" break; - case 422: -#line 2839 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 512: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ +#line 3393 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); + (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 8556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10527 "MachineIndependent/glslang_tab.cpp" break; - case 423: -#line 2844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + case 513: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ +#line 3398 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); + (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 8567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10537 "MachineIndependent/glslang_tab.cpp" break; - case 424: -#line 2850 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 514: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ +#line 3403 "MachineIndependent/glslang.y" + { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D); + (yyval.interm.type).sampler.external = true; } -#line 8577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10548 "MachineIndependent/glslang_tab.cpp" break; - case 425: -#line 2855 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 515: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ +#line 3409 "MachineIndependent/glslang.y" + { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D); + (yyval.interm.type).sampler.yuv = true; } -#line 8587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10559 "MachineIndependent/glslang_tab.cpp" break; - case 426: -#line 2860 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 516: /* type_specifier_nonarray: SUBPASSINPUT */ +#line 3415 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); + (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 8597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10570 "MachineIndependent/glslang_tab.cpp" break; - case 427: -#line 2865 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + case 517: /* type_specifier_nonarray: SUBPASSINPUTMS */ +#line 3421 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); + (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 8608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10581 "MachineIndependent/glslang_tab.cpp" break; - case 428: -#line 2871 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 518: /* type_specifier_nonarray: F16SUBPASSINPUT */ +#line 3427 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); + (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 8618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10593 "MachineIndependent/glslang_tab.cpp" break; - case 429: -#line 2876 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 519: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ +#line 3434 "MachineIndependent/glslang.y" + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); + (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 8628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10605 "MachineIndependent/glslang_tab.cpp" break; - case 430: -#line 2881 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 520: /* type_specifier_nonarray: ISUBPASSINPUT */ +#line 3441 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); + (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 8638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10616 "MachineIndependent/glslang_tab.cpp" break; - case 431: -#line 2886 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + case 521: /* type_specifier_nonarray: ISUBPASSINPUTMS */ +#line 3447 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); + (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 8649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10627 "MachineIndependent/glslang_tab.cpp" break; - case 432: -#line 2892 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 522: /* type_specifier_nonarray: USUBPASSINPUT */ +#line 3453 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); + (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 8659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10638 "MachineIndependent/glslang_tab.cpp" break; - case 433: -#line 2897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 523: /* type_specifier_nonarray: USUBPASSINPUTMS */ +#line 3459 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); + (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 8669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10649 "MachineIndependent/glslang_tab.cpp" break; - case 434: -#line 2902 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 524: /* type_specifier_nonarray: FCOOPMATNV */ +#line 3465 "MachineIndependent/glslang.y" + { + parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).coopmat = true; } -#line 8679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10660 "MachineIndependent/glslang_tab.cpp" break; - case 435: -#line 2907 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + case 525: /* type_specifier_nonarray: ICOOPMATNV */ +#line 3471 "MachineIndependent/glslang.y" + { + parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).coopmat = true; } -#line 8690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10671 "MachineIndependent/glslang_tab.cpp" break; - case 436: -#line 2913 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 526: /* type_specifier_nonarray: UCOOPMATNV */ +#line 3477 "MachineIndependent/glslang.y" + { + parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).coopmat = true; } -#line 8700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10682 "MachineIndependent/glslang_tab.cpp" break; - case 437: -#line 2918 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); + case 527: /* type_specifier_nonarray: spirv_type_specifier */ +#line 3483 "MachineIndependent/glslang.y" + { + parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); + (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 8710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10691 "MachineIndependent/glslang_tab.cpp" break; - case 438: -#line 2923 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); + case 528: /* type_specifier_nonarray: struct_specifier */ +#line 3488 "MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 8720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10701 "MachineIndependent/glslang_tab.cpp" break; - case 439: -#line 2928 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); + case 529: /* type_specifier_nonarray: TYPE_NAME */ +#line 3493 "MachineIndependent/glslang.y" + { + // + // This is for user defined type names. The lexical phase looked up the + // type. + // + if (const TVariable* variable = ((yyvsp[0].lex).symbol)->getAsVariable()) { + const TType& structure = variable->getType(); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtStruct; + (yyval.interm.type).userDef = &structure; + } else + parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 8731 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10719 "MachineIndependent/glslang_tab.cpp" break; - case 440: -#line 2934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 530: /* precision_qualifier: HIGH_PRECISION */ +#line 3509 "MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); + parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 8741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10729 "MachineIndependent/glslang_tab.cpp" break; - case 441: -#line 2939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 531: /* precision_qualifier: MEDIUM_PRECISION */ +#line 3514 "MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); + parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 8751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10739 "MachineIndependent/glslang_tab.cpp" break; - case 442: -#line 2944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 532: /* precision_qualifier: LOW_PRECISION */ +#line 3519 "MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); + parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 8761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10749 "MachineIndependent/glslang_tab.cpp" break; - case 443: -#line 2949 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); + case 533: /* $@3: %empty */ +#line 3527 "MachineIndependent/glslang.y" + { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } +#line 10755 "MachineIndependent/glslang_tab.cpp" + break; + + case 534: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ +#line 3527 "MachineIndependent/glslang.y" + { + TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); + parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); + TVariable* userTypeDef = new TVariable((yyvsp[-4].lex).string, *structure, true); + if (! parseContext.symbolTable.insert(*userTypeDef)) + parseContext.error((yyvsp[-4].lex).loc, "redefinition", (yyvsp[-4].lex).string->c_str(), "struct"); + (yyval.interm.type).init((yyvsp[-5].lex).loc); + (yyval.interm.type).basicType = EbtStruct; + (yyval.interm.type).userDef = structure; + --parseContext.structNestingLevel; } -#line 8772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10771 "MachineIndependent/glslang_tab.cpp" break; - case 444: -#line 2955 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); + case 535: /* $@4: %empty */ +#line 3538 "MachineIndependent/glslang.y" + { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } +#line 10777 "MachineIndependent/glslang_tab.cpp" + break; + + case 536: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ +#line 3538 "MachineIndependent/glslang.y" + { + TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); + (yyval.interm.type).init((yyvsp[-4].lex).loc); + (yyval.interm.type).basicType = EbtStruct; + (yyval.interm.type).userDef = structure; + --parseContext.structNestingLevel; } -#line 8782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10789 "MachineIndependent/glslang_tab.cpp" break; - case 445: -#line 2960 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); + case 537: /* struct_declaration_list: struct_declaration */ +#line 3548 "MachineIndependent/glslang.y" + { + (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 8792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10797 "MachineIndependent/glslang_tab.cpp" break; - case 446: -#line 2965 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); + case 538: /* struct_declaration_list: struct_declaration_list struct_declaration */ +#line 3551 "MachineIndependent/glslang.y" + { + (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); + for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { + for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) { + if ((*(yyval.interm.typeList))[j].type->getFieldName() == (*(yyvsp[0].interm.typeList))[i].type->getFieldName()) + parseContext.error((*(yyvsp[0].interm.typeList))[i].loc, "duplicate member name:", "", (*(yyvsp[0].interm.typeList))[i].type->getFieldName().c_str()); + } + (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); + } } -#line 8802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10812 "MachineIndependent/glslang_tab.cpp" break; - case 447: -#line 2970 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); + case 539: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ +#line 3564 "MachineIndependent/glslang.y" + { + if ((yyvsp[-2].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + if (parseContext.isEsProfile()) + parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); + } + + (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); + + parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType); + parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier); + + for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { + TType type((yyvsp[-2].interm.type)); + type.setFieldName((*(yyval.interm.typeList))[i].type->getFieldName()); + type.transferArraySizes((*(yyval.interm.typeList))[i].type->getArraySizes()); + type.copyArrayInnerSizes((yyvsp[-2].interm.type).arraySizes); + parseContext.arrayOfArrayVersionCheck((*(yyval.interm.typeList))[i].loc, type.getArraySizes()); + (*(yyval.interm.typeList))[i].type->shallowCopy(type); + } } -#line 8813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10839 "MachineIndependent/glslang_tab.cpp" break; - case 448: -#line 2976 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); + case 540: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ +#line 3586 "MachineIndependent/glslang.y" + { + if ((yyvsp[-2].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + if (parseContext.isEsProfile()) + parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); + } + + (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); + + parseContext.memberQualifierCheck((yyvsp[-3].interm.type)); + parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType); + parseContext.mergeQualifiers((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, (yyvsp[-3].interm.type).qualifier, true); + parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier); + + for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { + TType type((yyvsp[-2].interm.type)); + type.setFieldName((*(yyval.interm.typeList))[i].type->getFieldName()); + type.transferArraySizes((*(yyval.interm.typeList))[i].type->getArraySizes()); + type.copyArrayInnerSizes((yyvsp[-2].interm.type).arraySizes); + parseContext.arrayOfArrayVersionCheck((*(yyval.interm.typeList))[i].loc, type.getArraySizes()); + (*(yyval.interm.typeList))[i].type->shallowCopy(type); + } } -#line 8823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10868 "MachineIndependent/glslang_tab.cpp" break; - case 449: -#line 2981 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); + case 541: /* struct_declarator_list: struct_declarator */ +#line 3613 "MachineIndependent/glslang.y" + { + (yyval.interm.typeList) = new TTypeList; + (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 8833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10877 "MachineIndependent/glslang_tab.cpp" break; - case 450: -#line 2986 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); + case 542: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ +#line 3617 "MachineIndependent/glslang.y" + { + (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 8843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10885 "MachineIndependent/glslang_tab.cpp" break; - case 451: -#line 2991 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); + case 543: /* struct_declarator: IDENTIFIER */ +#line 3623 "MachineIndependent/glslang.y" + { + (yyval.interm.typeLine).type = new TType(EbtVoid); + (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; + (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 8854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10895 "MachineIndependent/glslang_tab.cpp" break; - case 452: -#line 2997 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); + case 544: /* struct_declarator: IDENTIFIER array_specifier */ +#line 3628 "MachineIndependent/glslang.y" + { + parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); + + (yyval.interm.typeLine).type = new TType(EbtVoid); + (yyval.interm.typeLine).loc = (yyvsp[-1].lex).loc; + (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); + (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 8864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10908 "MachineIndependent/glslang_tab.cpp" break; - case 453: -#line 3002 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); + case 545: /* initializer: assignment_expression */ +#line 3639 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 8874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10916 "MachineIndependent/glslang_tab.cpp" break; - case 454: -#line 3007 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); + case 546: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ +#line 3643 "MachineIndependent/glslang.y" + { + const char* initFeature = "{ } style initializers"; + parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); + parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); + (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 8884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10927 "MachineIndependent/glslang_tab.cpp" break; - case 455: -#line 3012 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); + case 547: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ +#line 3649 "MachineIndependent/glslang.y" + { + const char* initFeature = "{ } style initializers"; + parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); + parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); + (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 8895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10938 "MachineIndependent/glslang_tab.cpp" break; - case 456: -#line 3018 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); + case 548: /* initializer: LEFT_BRACE RIGHT_BRACE */ +#line 3655 "MachineIndependent/glslang.y" + { + const char* initFeature = "empty { } initializer"; + parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); + parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); + (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 8905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10949 "MachineIndependent/glslang_tab.cpp" break; - case 457: -#line 3023 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); + case 549: /* initializer_list: initializer */ +#line 3666 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 8915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10957 "MachineIndependent/glslang_tab.cpp" break; - case 458: -#line 3028 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); + case 550: /* initializer_list: initializer_list COMMA initializer */ +#line 3669 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 8925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10965 "MachineIndependent/glslang_tab.cpp" + break; + + case 551: /* declaration_statement: declaration */ +#line 3676 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10971 "MachineIndependent/glslang_tab.cpp" + break; + + case 552: /* statement: compound_statement */ +#line 3680 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10977 "MachineIndependent/glslang_tab.cpp" + break; + + case 553: /* statement: simple_statement */ +#line 3681 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10983 "MachineIndependent/glslang_tab.cpp" + break; + + case 554: /* simple_statement: declaration_statement */ +#line 3687 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10989 "MachineIndependent/glslang_tab.cpp" + break; + + case 555: /* simple_statement: expression_statement */ +#line 3688 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10995 "MachineIndependent/glslang_tab.cpp" + break; + + case 556: /* simple_statement: selection_statement */ +#line 3689 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11001 "MachineIndependent/glslang_tab.cpp" + break; + + case 557: /* simple_statement: switch_statement */ +#line 3690 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11007 "MachineIndependent/glslang_tab.cpp" break; - case 459: -#line 3033 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); - } -#line 8936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 558: /* simple_statement: case_label */ +#line 3691 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11013 "MachineIndependent/glslang_tab.cpp" break; - case 460: -#line 3039 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); - } -#line 8946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 559: /* simple_statement: iteration_statement */ +#line 3692 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11019 "MachineIndependent/glslang_tab.cpp" break; - case 461: -#line 3044 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); - } -#line 8956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 560: /* simple_statement: jump_statement */ +#line 3693 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11025 "MachineIndependent/glslang_tab.cpp" break; - case 462: -#line 3049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); - } -#line 8966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 561: /* simple_statement: demote_statement */ +#line 3695 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11031 "MachineIndependent/glslang_tab.cpp" break; - case 463: -#line 3054 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); + case 562: /* demote_statement: DEMOTE SEMICOLON */ +#line 3701 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); + parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 8977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11041 "MachineIndependent/glslang_tab.cpp" break; - case 464: -#line 3060 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); - } -#line 8987 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 563: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ +#line 3710 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = 0; } +#line 11047 "MachineIndependent/glslang_tab.cpp" break; - case 465: -#line 3065 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); + case 564: /* $@5: %empty */ +#line 3711 "MachineIndependent/glslang.y" + { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; } -#line 8997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11056 "MachineIndependent/glslang_tab.cpp" break; - case 466: -#line 3070 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); + case 565: /* $@6: %empty */ +#line 3715 "MachineIndependent/glslang.y" + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; } -#line 9007 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11065 "MachineIndependent/glslang_tab.cpp" break; - case 467: -#line 3075 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); + case 566: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ +#line 3719 "MachineIndependent/glslang.y" + { + if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) + (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 9018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11075 "MachineIndependent/glslang_tab.cpp" break; - case 468: -#line 3081 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); - } -#line 9028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 567: /* statement_no_new_scope: compound_statement_no_new_scope */ +#line 3727 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11081 "MachineIndependent/glslang_tab.cpp" break; - case 469: -#line 3086 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); - } -#line 9038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 568: /* statement_no_new_scope: simple_statement */ +#line 3728 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11087 "MachineIndependent/glslang_tab.cpp" break; - case 470: -#line 3091 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); + case 569: /* $@7: %empty */ +#line 3732 "MachineIndependent/glslang.y" + { + ++parseContext.controlFlowNestingLevel; } -#line 9048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11095 "MachineIndependent/glslang_tab.cpp" break; - case 471: -#line 3096 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); + case 570: /* statement_scoped: $@7 compound_statement */ +#line 3735 "MachineIndependent/glslang.y" + { + --parseContext.controlFlowNestingLevel; + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11104 "MachineIndependent/glslang_tab.cpp" break; - case 472: -#line 3102 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); + case 571: /* $@8: %empty */ +#line 3739 "MachineIndependent/glslang.y" + { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; } -#line 9069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11114 "MachineIndependent/glslang_tab.cpp" break; - case 473: -#line 3107 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); + case 572: /* statement_scoped: $@8 simple_statement */ +#line 3744 "MachineIndependent/glslang.y" + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11125 "MachineIndependent/glslang_tab.cpp" break; - case 474: -#line 3112 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { // GL_OES_EGL_image_external - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D); - (yyval.interm.type).sampler.external = true; + case 573: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ +#line 3753 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = 0; } -#line 9090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11133 "MachineIndependent/glslang_tab.cpp" break; - case 475: -#line 3118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { // GL_EXT_YUV_target - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D); - (yyval.interm.type).sampler.yuv = true; + case 574: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ +#line 3756 "MachineIndependent/glslang.y" + { + if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) + (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 9101 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11143 "MachineIndependent/glslang_tab.cpp" break; - case 476: -#line 3124 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtFloat); + case 575: /* statement_list: statement */ +#line 3764 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); + if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || + (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { + parseContext.wrapupSwitchSubsequence(0, (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case + } } -#line 9112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11156 "MachineIndependent/glslang_tab.cpp" break; - case 477: -#line 3130 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtFloat, true); + case 576: /* statement_list: statement_list statement */ +#line 3772 "MachineIndependent/glslang.y" + { + if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || + (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { + parseContext.wrapupSwitchSubsequence((yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0, (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case + } else + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 9123 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11169 "MachineIndependent/glslang_tab.cpp" break; - case 478: -#line 3136 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtFloat16); - } -#line 9135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 577: /* expression_statement: SEMICOLON */ +#line 3783 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = 0; } +#line 11175 "MachineIndependent/glslang_tab.cpp" break; - case 479: -#line 3143 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); - } -#line 9147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 578: /* expression_statement: expression SEMICOLON */ +#line 3784 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } +#line 11181 "MachineIndependent/glslang_tab.cpp" break; - case 480: -#line 3150 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtInt); + case 579: /* selection_statement: selection_statement_nonattributed */ +#line 3788 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11189 "MachineIndependent/glslang_tab.cpp" break; - case 481: -#line 3156 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtInt, true); + case 580: /* selection_statement: attribute selection_statement_nonattributed */ +#line 3792 "MachineIndependent/glslang.y" + { + parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); + parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11199 "MachineIndependent/glslang_tab.cpp" break; - case 482: -#line 3162 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtUint); + case 581: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ +#line 3800 "MachineIndependent/glslang.y" + { + parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); + (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 9180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11208 "MachineIndependent/glslang_tab.cpp" break; - case 483: -#line 3168 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtUint, true); + case 582: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ +#line 3807 "MachineIndependent/glslang.y" + { + (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); + (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 9191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11217 "MachineIndependent/glslang_tab.cpp" break; - case 484: -#line 3174 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).coopmat = true; + case 583: /* selection_rest_statement: statement_scoped */ +#line 3811 "MachineIndependent/glslang.y" + { + (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); + (yyval.interm.nodePair).node2 = 0; } -#line 9202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11226 "MachineIndependent/glslang_tab.cpp" break; - case 485: -#line 3180 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).coopmat = true; + case 584: /* condition: expression */ +#line 3819 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 9213 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11235 "MachineIndependent/glslang_tab.cpp" break; - case 486: -#line 3186 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).coopmat = true; + case 585: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ +#line 3823 "MachineIndependent/glslang.y" + { + parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); + + TType type((yyvsp[-3].interm.type)); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); + if (initNode) + (yyval.interm.intermTypedNode) = initNode->getAsTyped(); + else + (yyval.interm.intermTypedNode) = 0; } -#line 9224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11250 "MachineIndependent/glslang_tab.cpp" break; - case 487: -#line 3193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[0].interm.type); - (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; - parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); + case 586: /* switch_statement: switch_statement_nonattributed */ +#line 3836 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11258 "MachineIndependent/glslang_tab.cpp" break; - case 488: -#line 3198 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // - // This is for user defined type names. The lexical phase looked up the - // type. - // - if (const TVariable* variable = ((yyvsp[0].lex).symbol)->getAsVariable()) { - const TType& structure = variable->getType(); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtStruct; - (yyval.interm.type).userDef = &structure; - } else - parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); + case 587: /* switch_statement: attribute switch_statement_nonattributed */ +#line 3840 "MachineIndependent/glslang.y" + { + parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); + parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11268 "MachineIndependent/glslang_tab.cpp" break; - case 489: -#line 3214 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); + case 588: /* $@9: %empty */ +#line 3848 "MachineIndependent/glslang.y" + { + // start new switch sequence on the switch stack + ++parseContext.controlFlowNestingLevel; + ++parseContext.statementNestingLevel; + parseContext.switchSequenceStack.push_back(new TIntermSequence); + parseContext.switchLevel.push_back(parseContext.statementNestingLevel); + parseContext.symbolTable.push(); } -#line 9262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11281 "MachineIndependent/glslang_tab.cpp" break; - case 490: -#line 3219 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); + case 589: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ +#line 3856 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); + delete parseContext.switchSequenceStack.back(); + parseContext.switchSequenceStack.pop_back(); + parseContext.switchLevel.pop_back(); + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; } -#line 9272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11295 "MachineIndependent/glslang_tab.cpp" break; - case 491: -#line 3224 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); + case 590: /* switch_statement_list: %empty */ +#line 3868 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = 0; } -#line 9282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11303 "MachineIndependent/glslang_tab.cpp" break; - case 492: -#line 3232 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 9288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 591: /* switch_statement_list: statement_list */ +#line 3871 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 11311 "MachineIndependent/glslang_tab.cpp" break; - case 493: -#line 3232 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); - parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); - TVariable* userTypeDef = new TVariable((yyvsp[-4].lex).string, *structure, true); - if (! parseContext.symbolTable.insert(*userTypeDef)) - parseContext.error((yyvsp[-4].lex).loc, "redefinition", (yyvsp[-4].lex).string->c_str(), "struct"); - (yyval.interm.type).init((yyvsp[-5].lex).loc); - (yyval.interm.type).basicType = EbtStruct; - (yyval.interm.type).userDef = structure; - --parseContext.structNestingLevel; + case 592: /* case_label: CASE expression COLON */ +#line 3877 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = 0; + if (parseContext.switchLevel.size() == 0) + parseContext.error((yyvsp[-2].lex).loc, "cannot appear outside switch statement", "case", ""); + else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) + parseContext.error((yyvsp[-2].lex).loc, "cannot be nested inside control flow", "case", ""); + else { + parseContext.constantValueCheck((yyvsp[-1].interm.intermTypedNode), "case"); + parseContext.integerCheck((yyvsp[-1].interm.intermTypedNode), "case"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); + } } -#line 9304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11328 "MachineIndependent/glslang_tab.cpp" break; - case 494: -#line 3243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 9310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 593: /* case_label: DEFAULT COLON */ +#line 3889 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = 0; + if (parseContext.switchLevel.size() == 0) + parseContext.error((yyvsp[-1].lex).loc, "cannot appear outside switch statement", "default", ""); + else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) + parseContext.error((yyvsp[-1].lex).loc, "cannot be nested inside control flow", "default", ""); + else + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); + } +#line 11342 "MachineIndependent/glslang_tab.cpp" break; - case 495: -#line 3243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); - (yyval.interm.type).init((yyvsp[-4].lex).loc); - (yyval.interm.type).basicType = EbtStruct; - (yyval.interm.type).userDef = structure; - --parseContext.structNestingLevel; + case 594: /* iteration_statement: iteration_statement_nonattributed */ +#line 3901 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11350 "MachineIndependent/glslang_tab.cpp" break; - case 496: -#line 3253 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeList) = (yyvsp[0].interm.typeList); + case 595: /* iteration_statement: attribute iteration_statement_nonattributed */ +#line 3905 "MachineIndependent/glslang.y" + { + parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); + parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9330 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11360 "MachineIndependent/glslang_tab.cpp" break; - case 497: -#line 3256 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); - for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { - for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) { - if ((*(yyval.interm.typeList))[j].type->getFieldName() == (*(yyvsp[0].interm.typeList))[i].type->getFieldName()) - parseContext.error((*(yyvsp[0].interm.typeList))[i].loc, "duplicate member name:", "", (*(yyvsp[0].interm.typeList))[i].type->getFieldName().c_str()); - } - (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); - } + case 596: /* $@10: %empty */ +#line 3913 "MachineIndependent/glslang.y" + { + if (! parseContext.limits.whileLoops) + parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); + parseContext.symbolTable.push(); + ++parseContext.loopNestingLevel; + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; } -#line 9345 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11373 "MachineIndependent/glslang_tab.cpp" break; - case 498: -#line 3269 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if ((yyvsp[-2].interm.type).arraySizes) { - parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); - if (parseContext.isEsProfile()) - parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); - } - - (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); - - parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType); - parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier); - - for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { - TType type((yyvsp[-2].interm.type)); - type.setFieldName((*(yyval.interm.typeList))[i].type->getFieldName()); - type.transferArraySizes((*(yyval.interm.typeList))[i].type->getArraySizes()); - type.copyArrayInnerSizes((yyvsp[-2].interm.type).arraySizes); - parseContext.arrayOfArrayVersionCheck((*(yyval.interm.typeList))[i].loc, type.getArraySizes()); - (*(yyval.interm.typeList))[i].type->shallowCopy(type); - } + case 597: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ +#line 3921 "MachineIndependent/glslang.y" + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); + --parseContext.loopNestingLevel; + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; } -#line 9372 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11385 "MachineIndependent/glslang_tab.cpp" break; - case 499: -#line 3291 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if ((yyvsp[-2].interm.type).arraySizes) { - parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); - if (parseContext.isEsProfile()) - parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); - } + case 598: /* $@11: %empty */ +#line 3928 "MachineIndependent/glslang.y" + { + parseContext.symbolTable.push(); + ++parseContext.loopNestingLevel; + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; + } +#line 11396 "MachineIndependent/glslang_tab.cpp" + break; - (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); + case 599: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ +#line 3934 "MachineIndependent/glslang.y" + { + if (! parseContext.limits.whileLoops) + parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); - parseContext.memberQualifierCheck((yyvsp[-3].interm.type)); - parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType); - parseContext.mergeQualifiers((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, (yyvsp[-3].interm.type).qualifier, true); - parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier); + parseContext.boolCheck((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode)); - for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { - TType type((yyvsp[-2].interm.type)); - type.setFieldName((*(yyval.interm.typeList))[i].type->getFieldName()); - type.transferArraySizes((*(yyval.interm.typeList))[i].type->getArraySizes()); - type.copyArrayInnerSizes((yyvsp[-2].interm.type).arraySizes); - parseContext.arrayOfArrayVersionCheck((*(yyval.interm.typeList))[i].loc, type.getArraySizes()); - (*(yyval.interm.typeList))[i].type->shallowCopy(type); - } + (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[-5].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, false, (yyvsp[-4].lex).loc); + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.loopNestingLevel; + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; } -#line 9401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11413 "MachineIndependent/glslang_tab.cpp" break; - case 500: -#line 3318 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeList) = new TTypeList; - (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); + case 600: /* $@12: %empty */ +#line 3946 "MachineIndependent/glslang.y" + { + parseContext.symbolTable.push(); + ++parseContext.loopNestingLevel; + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; } -#line 9410 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11424 "MachineIndependent/glslang_tab.cpp" break; - case 501: -#line 3322 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); + case 601: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ +#line 3952 "MachineIndependent/glslang.y" + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); + TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), reinterpret_cast((yyvsp[-2].interm.nodePair).node1), reinterpret_cast((yyvsp[-2].interm.nodePair).node2), true, (yyvsp[-6].lex).loc); + if (! parseContext.limits.nonInductiveForLoops) + parseContext.inductiveLoopCheck((yyvsp[-6].lex).loc, (yyvsp[-3].interm.intermNode), forLoop); + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[-6].lex).loc); + (yyval.interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + --parseContext.loopNestingLevel; + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; } -#line 9418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11441 "MachineIndependent/glslang_tab.cpp" break; - case 502: -#line 3328 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeLine).type = new TType(EbtVoid); - (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; - (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); + case 602: /* for_init_statement: expression_statement */ +#line 3967 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11449 "MachineIndependent/glslang_tab.cpp" break; - case 503: -#line 3333 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); - - (yyval.interm.typeLine).type = new TType(EbtVoid); - (yyval.interm.typeLine).loc = (yyvsp[-1].lex).loc; - (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); - (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); + case 603: /* for_init_statement: declaration_statement */ +#line 3970 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11457 "MachineIndependent/glslang_tab.cpp" break; - case 504: -#line 3344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 604: /* conditionopt: condition */ +#line 3976 "MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 9449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11465 "MachineIndependent/glslang_tab.cpp" break; - case 505: -#line 3348 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - const char* initFeature = "{ } style initializers"; - parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); - parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); - (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); + case 605: /* conditionopt: %empty */ +#line 3979 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = 0; } -#line 9460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11473 "MachineIndependent/glslang_tab.cpp" break; - case 506: -#line 3354 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - const char* initFeature = "{ } style initializers"; - parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); - parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + case 606: /* for_rest_statement: conditionopt SEMICOLON */ +#line 3985 "MachineIndependent/glslang.y" + { + (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); + (yyval.interm.nodePair).node2 = 0; } -#line 9471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11482 "MachineIndependent/glslang_tab.cpp" break; - case 507: -#line 3365 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); + case 607: /* for_rest_statement: conditionopt SEMICOLON expression */ +#line 3989 "MachineIndependent/glslang.y" + { + (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); + (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 9479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11491 "MachineIndependent/glslang_tab.cpp" break; - case 508: -#line 3368 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + case 608: /* jump_statement: CONTINUE SEMICOLON */ +#line 3996 "MachineIndependent/glslang.y" + { + if (parseContext.loopNestingLevel <= 0) + parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 9487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11501 "MachineIndependent/glslang_tab.cpp" break; - case 509: -#line 3375 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 609: /* jump_statement: BREAK SEMICOLON */ +#line 4001 "MachineIndependent/glslang.y" + { + if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) + parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); + } +#line 11511 "MachineIndependent/glslang_tab.cpp" break; - case 510: -#line 3379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9499 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 610: /* jump_statement: RETURN SEMICOLON */ +#line 4006 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); + if (parseContext.currentFunctionType->getBasicType() != EbtVoid) + parseContext.error((yyvsp[-1].lex).loc, "non-void function must return a value", "return", ""); + if (parseContext.inMain) + parseContext.postEntryPointReturn = true; + } +#line 11523 "MachineIndependent/glslang_tab.cpp" break; - case 511: -#line 3380 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 611: /* jump_statement: RETURN expression SEMICOLON */ +#line 4013 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); + } +#line 11531 "MachineIndependent/glslang_tab.cpp" break; - case 512: -#line 3386 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 612: /* jump_statement: DISCARD SEMICOLON */ +#line 4016 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); + } +#line 11540 "MachineIndependent/glslang_tab.cpp" break; - case 513: -#line 3387 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 613: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ +#line 4020 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); + } +#line 11549 "MachineIndependent/glslang_tab.cpp" break; - case 514: -#line 3388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 614: /* jump_statement: TERMINATE_RAY SEMICOLON */ +#line 4025 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); + } +#line 11558 "MachineIndependent/glslang_tab.cpp" break; - case 515: -#line 3389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 615: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ +#line 4029 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); + } +#line 11567 "MachineIndependent/glslang_tab.cpp" break; - case 516: -#line 3390 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 616: /* translation_unit: external_declaration */ +#line 4039 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); + } +#line 11576 "MachineIndependent/glslang_tab.cpp" break; - case 517: -#line 3391 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 617: /* translation_unit: translation_unit external_declaration */ +#line 4043 "MachineIndependent/glslang.y" + { + if ((yyvsp[0].interm.intermNode) != nullptr) { + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); + parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); + } + } +#line 11587 "MachineIndependent/glslang_tab.cpp" break; - case 518: -#line 3392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 618: /* external_declaration: function_definition */ +#line 4052 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 11595 "MachineIndependent/glslang_tab.cpp" break; - case 519: -#line 3394 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 619: /* external_declaration: declaration */ +#line 4055 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 11603 "MachineIndependent/glslang_tab.cpp" break; - case 520: -#line 3400 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); - parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); + case 620: /* external_declaration: SEMICOLON */ +#line 4059 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); + parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); + (yyval.interm.intermNode) = nullptr; } -#line 9563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11613 "MachineIndependent/glslang_tab.cpp" break; - case 521: -#line 3409 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = 0; } -#line 9569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; + case 621: /* $@13: %empty */ +#line 4068 "MachineIndependent/glslang.y" + { + (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); + (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); - case 522: -#line 3410 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.symbolTable.push(); - ++parseContext.statementNestingLevel; + // For ES 100 only, according to ES shading language 100 spec: A function + // body has a scope nested inside the function's definition. + if (parseContext.profile == EEsProfile && parseContext.version == 100) + { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + } } -#line 9578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11630 "MachineIndependent/glslang_tab.cpp" break; - case 523: -#line 3414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 622: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ +#line 4080 "MachineIndependent/glslang.y" + { + // May be best done as post process phase on intermediate code + if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) + parseContext.error((yyvsp[-2].interm).loc, "function does not return a value:", "", (yyvsp[-2].interm).function->getName().c_str()); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - --parseContext.statementNestingLevel; - } -#line 9587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermNode)); + parseContext.intermediate.setAggregateOperator((yyval.interm.intermNode), EOpFunction, (yyvsp[-2].interm).function->getType(), (yyvsp[-2].interm).loc); + (yyval.interm.intermNode)->getAsAggregate()->setName((yyvsp[-2].interm).function->getMangledName().c_str()); - case 524: -#line 3418 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) - (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); - (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); - } -#line 9597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; + // store the pragma information for debug and optimize and other vendor specific + // information. This information can be queried from the parse tree + (yyval.interm.intermNode)->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize); + (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); + (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); - case 525: -#line 3426 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + // Set currentFunctionType to empty pointer when goes outside of the function + parseContext.currentFunctionType = nullptr; + + // For ES 100 only, according to ES shading language 100 spec: A function + // body has a scope nested inside the function's definition. + if (parseContext.profile == EEsProfile && parseContext.version == 100) + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + } + } +#line 11661 "MachineIndependent/glslang_tab.cpp" break; - case 526: -#line 3427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 623: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ +#line 4110 "MachineIndependent/glslang.y" + { + (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); + } +#line 11669 "MachineIndependent/glslang_tab.cpp" break; - case 527: -#line 3431 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - ++parseContext.controlFlowNestingLevel; + case 624: /* attribute_list: single_attribute */ +#line 4115 "MachineIndependent/glslang.y" + { + (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 9617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11677 "MachineIndependent/glslang_tab.cpp" break; - case 528: -#line 3434 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - --parseContext.controlFlowNestingLevel; - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + case 625: /* attribute_list: attribute_list COMMA single_attribute */ +#line 4118 "MachineIndependent/glslang.y" + { + (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 9626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11685 "MachineIndependent/glslang_tab.cpp" break; - case 529: -#line 3438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.symbolTable.push(); - ++parseContext.statementNestingLevel; - ++parseContext.controlFlowNestingLevel; + case 626: /* single_attribute: IDENTIFIER */ +#line 4123 "MachineIndependent/glslang.y" + { + (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 9636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11693 "MachineIndependent/glslang_tab.cpp" break; - case 530: -#line 3443 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - --parseContext.statementNestingLevel; - --parseContext.controlFlowNestingLevel; - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + case 627: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ +#line 4126 "MachineIndependent/glslang.y" + { + (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 9647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11701 "MachineIndependent/glslang_tab.cpp" break; - case 531: -#line 3452 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = 0; + case 628: /* spirv_requirements_list: spirv_requirements_parameter */ +#line 4133 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 9655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11709 "MachineIndependent/glslang_tab.cpp" break; - case 532: -#line 3455 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) - (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); - (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); + case 629: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ +#line 4136 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 9665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11717 "MachineIndependent/glslang_tab.cpp" break; - case 533: -#line 3463 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); - if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || - (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { - parseContext.wrapupSwitchSubsequence(0, (yyvsp[0].interm.intermNode)); - (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case - } + case 630: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ +#line 4141 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 9678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11725 "MachineIndependent/glslang_tab.cpp" break; - case 534: -#line 3471 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || - (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { - parseContext.wrapupSwitchSubsequence((yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0, (yyvsp[0].interm.intermNode)); - (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case - } else - (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); + case 631: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ +#line 4144 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 9691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11733 "MachineIndependent/glslang_tab.cpp" break; - case 535: -#line 3482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = 0; } -#line 9697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 632: /* spirv_extension_list: STRING_LITERAL */ +#line 4149 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); + } +#line 11741 "MachineIndependent/glslang_tab.cpp" break; - case 536: -#line 3483 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 9703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 633: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ +#line 4152 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); + } +#line 11749 "MachineIndependent/glslang_tab.cpp" break; - case 537: -#line 3487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + case 634: /* spirv_capability_list: INTCONSTANT */ +#line 4157 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 9711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11757 "MachineIndependent/glslang_tab.cpp" break; - case 538: -#line 3491 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + case 635: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ +#line 4160 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 9720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11765 "MachineIndependent/glslang_tab.cpp" break; - case 539: -#line 3498 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); - (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); + case 636: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4165 "MachineIndependent/glslang.y" + { + parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); + (yyval.interm.intermNode) = 0; } -#line 9729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11774 "MachineIndependent/glslang_tab.cpp" break; - case 540: -#line 3505 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); - (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); + case 637: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4169 "MachineIndependent/glslang.y" + { + parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); + parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); + (yyval.interm.intermNode) = 0; } -#line 9738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11784 "MachineIndependent/glslang_tab.cpp" break; - case 541: -#line 3509 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); - (yyval.interm.nodePair).node2 = 0; + case 638: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4174 "MachineIndependent/glslang.y" + { + parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); + (yyval.interm.intermNode) = 0; } -#line 9747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11793 "MachineIndependent/glslang_tab.cpp" break; - case 542: -#line 3517 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); + case 639: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4178 "MachineIndependent/glslang.y" + { + parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); + parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); + (yyval.interm.intermNode) = 0; } -#line 9756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11803 "MachineIndependent/glslang_tab.cpp" break; - case 543: -#line 3521 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); + case 640: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4183 "MachineIndependent/glslang.y" + { + parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); + (yyval.interm.intermNode) = 0; + } +#line 11812 "MachineIndependent/glslang_tab.cpp" + break; - TType type((yyvsp[-3].interm.type)); - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); - if (initNode) - (yyval.interm.intermTypedNode) = initNode->getAsTyped(); - else - (yyval.interm.intermTypedNode) = 0; + case 641: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4187 "MachineIndependent/glslang.y" + { + parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); + parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); + (yyval.interm.intermNode) = 0; } -#line 9771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11822 "MachineIndependent/glslang_tab.cpp" break; - case 544: -#line 3534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + case 642: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ +#line 4194 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 9779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11830 "MachineIndependent/glslang_tab.cpp" break; - case 545: -#line 3538 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + case 643: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ +#line 4197 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 9788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11838 "MachineIndependent/glslang_tab.cpp" break; - case 546: -#line 3545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // start new switch sequence on the switch stack - ++parseContext.controlFlowNestingLevel; - ++parseContext.statementNestingLevel; - parseContext.switchSequenceStack.push_back(new TIntermSequence); - parseContext.switchLevel.push_back(parseContext.statementNestingLevel); - parseContext.symbolTable.push(); + case 644: /* spirv_execution_mode_parameter: FLOATCONSTANT */ +#line 4202 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 9801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11846 "MachineIndependent/glslang_tab.cpp" break; - case 547: -#line 3553 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); - delete parseContext.switchSequenceStack.back(); - parseContext.switchSequenceStack.pop_back(); - parseContext.switchLevel.pop_back(); - parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - --parseContext.statementNestingLevel; - --parseContext.controlFlowNestingLevel; + case 645: /* spirv_execution_mode_parameter: INTCONSTANT */ +#line 4205 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 9815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11854 "MachineIndependent/glslang_tab.cpp" break; - case 548: -#line 3565 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = 0; + case 646: /* spirv_execution_mode_parameter: UINTCONSTANT */ +#line 4208 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 9823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11862 "MachineIndependent/glslang_tab.cpp" break; - case 549: -#line 3568 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + case 647: /* spirv_execution_mode_parameter: BOOLCONSTANT */ +#line 4211 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 9831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11870 "MachineIndependent/glslang_tab.cpp" break; - case 550: -#line 3574 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = 0; - if (parseContext.switchLevel.size() == 0) - parseContext.error((yyvsp[-2].lex).loc, "cannot appear outside switch statement", "case", ""); - else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) - parseContext.error((yyvsp[-2].lex).loc, "cannot be nested inside control flow", "case", ""); - else { - parseContext.constantValueCheck((yyvsp[-1].interm.intermTypedNode), "case"); - parseContext.integerCheck((yyvsp[-1].interm.intermTypedNode), "case"); - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); - } + case 648: /* spirv_execution_mode_parameter: STRING_LITERAL */ +#line 4214 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 9848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11878 "MachineIndependent/glslang_tab.cpp" break; - case 551: -#line 3586 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = 0; - if (parseContext.switchLevel.size() == 0) - parseContext.error((yyvsp[-1].lex).loc, "cannot appear outside switch statement", "default", ""); - else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) - parseContext.error((yyvsp[-1].lex).loc, "cannot be nested inside control flow", "default", ""); - else - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); + case 649: /* spirv_execution_mode_id_parameter_list: constant_expression */ +#line 4219 "MachineIndependent/glslang.y" + { + if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && + (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && + (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtUint && + (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtBool && + (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtString) + parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 9862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11892 "MachineIndependent/glslang_tab.cpp" break; - case 552: -#line 3598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + case 650: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ +#line 4228 "MachineIndependent/glslang.y" + { + if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && + (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && + (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtUint && + (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtBool && + (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtString) + parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 9870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11906 "MachineIndependent/glslang_tab.cpp" break; - case 553: -#line 3602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + case 651: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4239 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[-3].lex).loc); + (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; + (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 9879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11916 "MachineIndependent/glslang_tab.cpp" break; - case 554: -#line 3609 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if (! parseContext.limits.whileLoops) - parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); - parseContext.symbolTable.push(); - ++parseContext.loopNestingLevel; - ++parseContext.statementNestingLevel; - ++parseContext.controlFlowNestingLevel; + case 652: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4244 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[-5].lex).loc); + parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); + (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; + (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 9892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11927 "MachineIndependent/glslang_tab.cpp" break; - case 555: -#line 3617 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); - --parseContext.loopNestingLevel; - --parseContext.statementNestingLevel; - --parseContext.controlFlowNestingLevel; + case 653: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4252 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[-3].lex).loc); + (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 9904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11936 "MachineIndependent/glslang_tab.cpp" break; - case 556: -#line 3624 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - ++parseContext.loopNestingLevel; - ++parseContext.statementNestingLevel; - ++parseContext.controlFlowNestingLevel; + case 654: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4256 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[-5].lex).loc); + parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); + (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 9914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11946 "MachineIndependent/glslang_tab.cpp" break; - case 557: -#line 3629 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if (! parseContext.limits.whileLoops) - parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); + case 655: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4261 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[-5].lex).loc); + (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); + } +#line 11955 "MachineIndependent/glslang_tab.cpp" + break; - parseContext.boolCheck((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode)); + case 656: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4265 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[-7].lex).loc); + parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); + (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); + } +#line 11965 "MachineIndependent/glslang_tab.cpp" + break; - (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[-5].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, false, (yyvsp[-4].lex).loc); - --parseContext.loopNestingLevel; - --parseContext.statementNestingLevel; - --parseContext.controlFlowNestingLevel; + case 657: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4270 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[-5].lex).loc); + (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 9930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11974 "MachineIndependent/glslang_tab.cpp" break; - case 558: -#line 3640 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.symbolTable.push(); - ++parseContext.loopNestingLevel; - ++parseContext.statementNestingLevel; - ++parseContext.controlFlowNestingLevel; + case 658: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4274 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[-7].lex).loc); + parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); + (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 9941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11984 "MachineIndependent/glslang_tab.cpp" break; - case 559: -#line 3646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); - TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), reinterpret_cast((yyvsp[-2].interm.nodePair).node1), reinterpret_cast((yyvsp[-2].interm.nodePair).node2), true, (yyvsp[-6].lex).loc); - if (! parseContext.limits.nonInductiveForLoops) - parseContext.inductiveLoopCheck((yyvsp[-6].lex).loc, (yyvsp[-3].interm.intermNode), forLoop); - (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[-6].lex).loc); - (yyval.interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); - --parseContext.loopNestingLevel; - --parseContext.statementNestingLevel; - --parseContext.controlFlowNestingLevel; + case 659: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4279 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[-5].lex).loc); + (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 9958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 11993 "MachineIndependent/glslang_tab.cpp" break; - case 560: -#line 3661 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + case 660: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4283 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[-7].lex).loc); + parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); + (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 9966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12003 "MachineIndependent/glslang_tab.cpp" break; - case 561: -#line 3664 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + case 661: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ +#line 4290 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 9974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12011 "MachineIndependent/glslang_tab.cpp" break; - case 562: -#line 3670 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + case 662: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ +#line 4293 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 9982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12019 "MachineIndependent/glslang_tab.cpp" break; - case 563: -#line 3673 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = 0; + case 663: /* spirv_decorate_parameter: FLOATCONSTANT */ +#line 4298 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 9990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12027 "MachineIndependent/glslang_tab.cpp" break; - case 564: -#line 3679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); - (yyval.interm.nodePair).node2 = 0; + case 664: /* spirv_decorate_parameter: INTCONSTANT */ +#line 4301 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 9999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12035 "MachineIndependent/glslang_tab.cpp" break; - case 565: -#line 3683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); - (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); + case 665: /* spirv_decorate_parameter: UINTCONSTANT */ +#line 4304 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 10008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12043 "MachineIndependent/glslang_tab.cpp" break; - case 566: -#line 3690 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if (parseContext.loopNestingLevel <= 0) - parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); + case 666: /* spirv_decorate_parameter: BOOLCONSTANT */ +#line 4307 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 10018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12051 "MachineIndependent/glslang_tab.cpp" break; - case 567: -#line 3695 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) - parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); + case 667: /* spirv_decorate_id_parameter_list: constant_expression */ +#line 4312 "MachineIndependent/glslang.y" + { + if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && + (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && + (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtUint && + (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtBool) + parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 10028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12064 "MachineIndependent/glslang_tab.cpp" break; - case 568: -#line 3700 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); - if (parseContext.currentFunctionType->getBasicType() != EbtVoid) - parseContext.error((yyvsp[-1].lex).loc, "non-void function must return a value", "return", ""); - if (parseContext.inMain) - parseContext.postEntryPointReturn = true; + case 668: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA constant_expression */ +#line 4320 "MachineIndependent/glslang.y" + { + if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && + (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && + (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtUint && + (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtBool) + parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 10040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12077 "MachineIndependent/glslang_tab.cpp" break; - case 569: -#line 3707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); + case 669: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ +#line 4330 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( + parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 10048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12086 "MachineIndependent/glslang_tab.cpp" break; - case 570: -#line 3710 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); + case 670: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ +#line 4334 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 10057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12094 "MachineIndependent/glslang_tab.cpp" break; - case 571: -#line 3719 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); + case 671: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4339 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 10066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12103 "MachineIndependent/glslang_tab.cpp" break; - case 572: -#line 3723 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if ((yyvsp[0].interm.intermNode) != nullptr) { - (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); - parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); - } + case 672: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4343 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); + (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 10077 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12113 "MachineIndependent/glslang_tab.cpp" break; - case 573: -#line 3732 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + case 673: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4348 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 10085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12122 "MachineIndependent/glslang_tab.cpp" break; - case 574: -#line 3735 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + case 674: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4352 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); + (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 10093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12132 "MachineIndependent/glslang_tab.cpp" break; - case 575: -#line 3739 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); - parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); - (yyval.interm.intermNode) = nullptr; + case 675: /* spirv_type_parameter_list: spirv_type_parameter */ +#line 4359 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 10103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12140 "MachineIndependent/glslang_tab.cpp" break; - case 576: -#line 3748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); - (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); + case 676: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ +#line 4362 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 10112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12148 "MachineIndependent/glslang_tab.cpp" break; - case 577: -#line 3752 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // May be best done as post process phase on intermediate code - if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) - parseContext.error((yyvsp[-2].interm).loc, "function does not return a value:", "", (yyvsp[-2].interm).function->getName().c_str()); - parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermNode)); - parseContext.intermediate.setAggregateOperator((yyval.interm.intermNode), EOpFunction, (yyvsp[-2].interm).function->getType(), (yyvsp[-2].interm).loc); - (yyval.interm.intermNode)->getAsAggregate()->setName((yyvsp[-2].interm).function->getMangledName().c_str()); + case 677: /* spirv_type_parameter: constant_expression */ +#line 4367 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); + } +#line 12156 "MachineIndependent/glslang_tab.cpp" + break; - // store the pragma information for debug and optimize and other vendor specific - // information. This information can be queried from the parse tree - (yyval.interm.intermNode)->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize); - (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); - (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); + case 678: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4372 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 10132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12164 "MachineIndependent/glslang_tab.cpp" break; - case 578: -#line 3771 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); - parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute"); + case 679: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4375 "MachineIndependent/glslang.y" + { + parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); + (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 10141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12173 "MachineIndependent/glslang_tab.cpp" break; - case 579: -#line 3777 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.attributes) = (yyvsp[0].interm.attributes); + case 680: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ +#line 4381 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 10149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12181 "MachineIndependent/glslang_tab.cpp" break; - case 580: -#line 3780 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); + case 681: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ +#line 4384 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 10157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12189 "MachineIndependent/glslang_tab.cpp" break; - case 581: -#line 3785 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); + case 682: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ +#line 4389 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 10165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12197 "MachineIndependent/glslang_tab.cpp" break; - case 582: -#line 3788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); + case 683: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ +#line 4392 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 10173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12205 "MachineIndependent/glslang_tab.cpp" break; -#line 10177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 12209 "MachineIndependent/glslang_tab.cpp" + default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -10221,25 +12220,23 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; - YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; + { + const int yylhs = yyr1[yyn] - YYNTOKENS; + const int yyi = yypgoto[yylhs] + *yyssp; + yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp + ? yytable[yyi] + : yydefgoto[yylhs]); + } goto yynewstate; @@ -10250,50 +12247,44 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (pParseContext, YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) { + yypcontext_t yyctx + = {yyssp, yytoken}; char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; + yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx); if (yysyntax_error_status == 0) yymsgp = yymsg; - else if (yysyntax_error_status == 1) + else if (yysyntax_error_status == -1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) + yymsg = YY_CAST (char *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); + if (yymsg) { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; + yysyntax_error_status + = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx); + yymsgp = yymsg; } else { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = YYENOMEM; } } yyerror (pParseContext, yymsgp); - if (yysyntax_error_status == 2) + if (yysyntax_error_status == YYENOMEM) goto yyexhaustedlab; } -# undef YYSYNTAX_ERROR -#endif } - - if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an @@ -10322,12 +12313,10 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; + /* Pacify compilers when the user code never invokes YYERROR and the + label yyerrorlab therefore never appears in user code. */ + if (0) + YYERROR; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -10344,13 +12333,14 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ + /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) { yyn = yytable[yyn]; if (0 < yyn) @@ -10364,7 +12354,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); yydestruct ("Error: popping", - yystos[yystate], yyvsp, pParseContext); + YY_ACCESSING_SYMBOL (yystate), yyvsp, pParseContext); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -10376,7 +12366,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -10389,6 +12379,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); yyresult = 0; goto yyreturn; + /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -10396,16 +12387,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); yyresult = 1; goto yyreturn; -#if !defined yyoverflow || YYERROR_VERBOSE + +#if 1 /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (pParseContext, YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ + goto yyreturn; #endif + +/*-------------------------------------------------------. +| yyreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -10422,18 +12418,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, pParseContext); + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, pParseContext); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif -#if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); -#endif return yyresult; } -#line 3793 "MachineIndependent/glslang.y" /* yacc.c:1906 */ + +#line 4397 "MachineIndependent/glslang.y" diff --git a/Externals/glslang/glslang/MachineIndependent/glslang_tab.cpp.h b/Externals/glslang/glslang/MachineIndependent/glslang_tab.cpp.h index f4f411473058..596a10e6d981 100644 --- a/Externals/glslang/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/Externals/glslang/glslang/MachineIndependent/glslang_tab.cpp.h @@ -1,8 +1,9 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.7.4. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,6 +31,10 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + #ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED # define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED /* Debug traces. */ @@ -40,428 +45,476 @@ extern int yydebug; #endif -/* Token type. */ +/* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { - CONST = 258, - BOOL = 259, - INT = 260, - UINT = 261, - FLOAT = 262, - BVEC2 = 263, - BVEC3 = 264, - BVEC4 = 265, - IVEC2 = 266, - IVEC3 = 267, - IVEC4 = 268, - UVEC2 = 269, - UVEC3 = 270, - UVEC4 = 271, - VEC2 = 272, - VEC3 = 273, - VEC4 = 274, - MAT2 = 275, - MAT3 = 276, - MAT4 = 277, - MAT2X2 = 278, - MAT2X3 = 279, - MAT2X4 = 280, - MAT3X2 = 281, - MAT3X3 = 282, - MAT3X4 = 283, - MAT4X2 = 284, - MAT4X3 = 285, - MAT4X4 = 286, - SAMPLER2D = 287, - SAMPLER3D = 288, - SAMPLERCUBE = 289, - SAMPLER2DSHADOW = 290, - SAMPLERCUBESHADOW = 291, - SAMPLER2DARRAY = 292, - SAMPLER2DARRAYSHADOW = 293, - ISAMPLER2D = 294, - ISAMPLER3D = 295, - ISAMPLERCUBE = 296, - ISAMPLER2DARRAY = 297, - USAMPLER2D = 298, - USAMPLER3D = 299, - USAMPLERCUBE = 300, - USAMPLER2DARRAY = 301, - SAMPLER = 302, - SAMPLERSHADOW = 303, - TEXTURE2D = 304, - TEXTURE3D = 305, - TEXTURECUBE = 306, - TEXTURE2DARRAY = 307, - ITEXTURE2D = 308, - ITEXTURE3D = 309, - ITEXTURECUBE = 310, - ITEXTURE2DARRAY = 311, - UTEXTURE2D = 312, - UTEXTURE3D = 313, - UTEXTURECUBE = 314, - UTEXTURE2DARRAY = 315, - ATTRIBUTE = 316, - VARYING = 317, - FLOAT16_T = 318, - FLOAT32_T = 319, - DOUBLE = 320, - FLOAT64_T = 321, - INT64_T = 322, - UINT64_T = 323, - INT32_T = 324, - UINT32_T = 325, - INT16_T = 326, - UINT16_T = 327, - INT8_T = 328, - UINT8_T = 329, - I64VEC2 = 330, - I64VEC3 = 331, - I64VEC4 = 332, - U64VEC2 = 333, - U64VEC3 = 334, - U64VEC4 = 335, - I32VEC2 = 336, - I32VEC3 = 337, - I32VEC4 = 338, - U32VEC2 = 339, - U32VEC3 = 340, - U32VEC4 = 341, - I16VEC2 = 342, - I16VEC3 = 343, - I16VEC4 = 344, - U16VEC2 = 345, - U16VEC3 = 346, - U16VEC4 = 347, - I8VEC2 = 348, - I8VEC3 = 349, - I8VEC4 = 350, - U8VEC2 = 351, - U8VEC3 = 352, - U8VEC4 = 353, - DVEC2 = 354, - DVEC3 = 355, - DVEC4 = 356, - DMAT2 = 357, - DMAT3 = 358, - DMAT4 = 359, - F16VEC2 = 360, - F16VEC3 = 361, - F16VEC4 = 362, - F16MAT2 = 363, - F16MAT3 = 364, - F16MAT4 = 365, - F32VEC2 = 366, - F32VEC3 = 367, - F32VEC4 = 368, - F32MAT2 = 369, - F32MAT3 = 370, - F32MAT4 = 371, - F64VEC2 = 372, - F64VEC3 = 373, - F64VEC4 = 374, - F64MAT2 = 375, - F64MAT3 = 376, - F64MAT4 = 377, - DMAT2X2 = 378, - DMAT2X3 = 379, - DMAT2X4 = 380, - DMAT3X2 = 381, - DMAT3X3 = 382, - DMAT3X4 = 383, - DMAT4X2 = 384, - DMAT4X3 = 385, - DMAT4X4 = 386, - F16MAT2X2 = 387, - F16MAT2X3 = 388, - F16MAT2X4 = 389, - F16MAT3X2 = 390, - F16MAT3X3 = 391, - F16MAT3X4 = 392, - F16MAT4X2 = 393, - F16MAT4X3 = 394, - F16MAT4X4 = 395, - F32MAT2X2 = 396, - F32MAT2X3 = 397, - F32MAT2X4 = 398, - F32MAT3X2 = 399, - F32MAT3X3 = 400, - F32MAT3X4 = 401, - F32MAT4X2 = 402, - F32MAT4X3 = 403, - F32MAT4X4 = 404, - F64MAT2X2 = 405, - F64MAT2X3 = 406, - F64MAT2X4 = 407, - F64MAT3X2 = 408, - F64MAT3X3 = 409, - F64MAT3X4 = 410, - F64MAT4X2 = 411, - F64MAT4X3 = 412, - F64MAT4X4 = 413, - ATOMIC_UINT = 414, - ACCSTRUCTNV = 415, - FCOOPMATNV = 416, - ICOOPMATNV = 417, - UCOOPMATNV = 418, - SAMPLERCUBEARRAY = 419, - SAMPLERCUBEARRAYSHADOW = 420, - ISAMPLERCUBEARRAY = 421, - USAMPLERCUBEARRAY = 422, - SAMPLER1D = 423, - SAMPLER1DARRAY = 424, - SAMPLER1DARRAYSHADOW = 425, - ISAMPLER1D = 426, - SAMPLER1DSHADOW = 427, - SAMPLER2DRECT = 428, - SAMPLER2DRECTSHADOW = 429, - ISAMPLER2DRECT = 430, - USAMPLER2DRECT = 431, - SAMPLERBUFFER = 432, - ISAMPLERBUFFER = 433, - USAMPLERBUFFER = 434, - SAMPLER2DMS = 435, - ISAMPLER2DMS = 436, - USAMPLER2DMS = 437, - SAMPLER2DMSARRAY = 438, - ISAMPLER2DMSARRAY = 439, - USAMPLER2DMSARRAY = 440, - SAMPLEREXTERNALOES = 441, - SAMPLEREXTERNAL2DY2YEXT = 442, - ISAMPLER1DARRAY = 443, - USAMPLER1D = 444, - USAMPLER1DARRAY = 445, - F16SAMPLER1D = 446, - F16SAMPLER2D = 447, - F16SAMPLER3D = 448, - F16SAMPLER2DRECT = 449, - F16SAMPLERCUBE = 450, - F16SAMPLER1DARRAY = 451, - F16SAMPLER2DARRAY = 452, - F16SAMPLERCUBEARRAY = 453, - F16SAMPLERBUFFER = 454, - F16SAMPLER2DMS = 455, - F16SAMPLER2DMSARRAY = 456, - F16SAMPLER1DSHADOW = 457, - F16SAMPLER2DSHADOW = 458, - F16SAMPLER1DARRAYSHADOW = 459, - F16SAMPLER2DARRAYSHADOW = 460, - F16SAMPLER2DRECTSHADOW = 461, - F16SAMPLERCUBESHADOW = 462, - F16SAMPLERCUBEARRAYSHADOW = 463, - IMAGE1D = 464, - IIMAGE1D = 465, - UIMAGE1D = 466, - IMAGE2D = 467, - IIMAGE2D = 468, - UIMAGE2D = 469, - IMAGE3D = 470, - IIMAGE3D = 471, - UIMAGE3D = 472, - IMAGE2DRECT = 473, - IIMAGE2DRECT = 474, - UIMAGE2DRECT = 475, - IMAGECUBE = 476, - IIMAGECUBE = 477, - UIMAGECUBE = 478, - IMAGEBUFFER = 479, - IIMAGEBUFFER = 480, - UIMAGEBUFFER = 481, - IMAGE1DARRAY = 482, - IIMAGE1DARRAY = 483, - UIMAGE1DARRAY = 484, - IMAGE2DARRAY = 485, - IIMAGE2DARRAY = 486, - UIMAGE2DARRAY = 487, - IMAGECUBEARRAY = 488, - IIMAGECUBEARRAY = 489, - UIMAGECUBEARRAY = 490, - IMAGE2DMS = 491, - IIMAGE2DMS = 492, - UIMAGE2DMS = 493, - IMAGE2DMSARRAY = 494, - IIMAGE2DMSARRAY = 495, - UIMAGE2DMSARRAY = 496, - F16IMAGE1D = 497, - F16IMAGE2D = 498, - F16IMAGE3D = 499, - F16IMAGE2DRECT = 500, - F16IMAGECUBE = 501, - F16IMAGE1DARRAY = 502, - F16IMAGE2DARRAY = 503, - F16IMAGECUBEARRAY = 504, - F16IMAGEBUFFER = 505, - F16IMAGE2DMS = 506, - F16IMAGE2DMSARRAY = 507, - TEXTURECUBEARRAY = 508, - ITEXTURECUBEARRAY = 509, - UTEXTURECUBEARRAY = 510, - TEXTURE1D = 511, - ITEXTURE1D = 512, - UTEXTURE1D = 513, - TEXTURE1DARRAY = 514, - ITEXTURE1DARRAY = 515, - UTEXTURE1DARRAY = 516, - TEXTURE2DRECT = 517, - ITEXTURE2DRECT = 518, - UTEXTURE2DRECT = 519, - TEXTUREBUFFER = 520, - ITEXTUREBUFFER = 521, - UTEXTUREBUFFER = 522, - TEXTURE2DMS = 523, - ITEXTURE2DMS = 524, - UTEXTURE2DMS = 525, - TEXTURE2DMSARRAY = 526, - ITEXTURE2DMSARRAY = 527, - UTEXTURE2DMSARRAY = 528, - F16TEXTURE1D = 529, - F16TEXTURE2D = 530, - F16TEXTURE3D = 531, - F16TEXTURE2DRECT = 532, - F16TEXTURECUBE = 533, - F16TEXTURE1DARRAY = 534, - F16TEXTURE2DARRAY = 535, - F16TEXTURECUBEARRAY = 536, - F16TEXTUREBUFFER = 537, - F16TEXTURE2DMS = 538, - F16TEXTURE2DMSARRAY = 539, - SUBPASSINPUT = 540, - SUBPASSINPUTMS = 541, - ISUBPASSINPUT = 542, - ISUBPASSINPUTMS = 543, - USUBPASSINPUT = 544, - USUBPASSINPUTMS = 545, - F16SUBPASSINPUT = 546, - F16SUBPASSINPUTMS = 547, - LEFT_OP = 548, - RIGHT_OP = 549, - INC_OP = 550, - DEC_OP = 551, - LE_OP = 552, - GE_OP = 553, - EQ_OP = 554, - NE_OP = 555, - AND_OP = 556, - OR_OP = 557, - XOR_OP = 558, - MUL_ASSIGN = 559, - DIV_ASSIGN = 560, - ADD_ASSIGN = 561, - MOD_ASSIGN = 562, - LEFT_ASSIGN = 563, - RIGHT_ASSIGN = 564, - AND_ASSIGN = 565, - XOR_ASSIGN = 566, - OR_ASSIGN = 567, - SUB_ASSIGN = 568, - LEFT_PAREN = 569, - RIGHT_PAREN = 570, - LEFT_BRACKET = 571, - RIGHT_BRACKET = 572, - LEFT_BRACE = 573, - RIGHT_BRACE = 574, - DOT = 575, - COMMA = 576, - COLON = 577, - EQUAL = 578, - SEMICOLON = 579, - BANG = 580, - DASH = 581, - TILDE = 582, - PLUS = 583, - STAR = 584, - SLASH = 585, - PERCENT = 586, - LEFT_ANGLE = 587, - RIGHT_ANGLE = 588, - VERTICAL_BAR = 589, - CARET = 590, - AMPERSAND = 591, - QUESTION = 592, - INVARIANT = 593, - HIGH_PRECISION = 594, - MEDIUM_PRECISION = 595, - LOW_PRECISION = 596, - PRECISION = 597, - PACKED = 598, - RESOURCE = 599, - SUPERP = 600, - FLOATCONSTANT = 601, - INTCONSTANT = 602, - UINTCONSTANT = 603, - BOOLCONSTANT = 604, - IDENTIFIER = 605, - TYPE_NAME = 606, - CENTROID = 607, - IN = 608, - OUT = 609, - INOUT = 610, - STRUCT = 611, - VOID = 612, - WHILE = 613, - BREAK = 614, - CONTINUE = 615, - DO = 616, - ELSE = 617, - FOR = 618, - IF = 619, - DISCARD = 620, - RETURN = 621, - SWITCH = 622, - CASE = 623, - DEFAULT = 624, - UNIFORM = 625, - SHARED = 626, - BUFFER = 627, - FLAT = 628, - SMOOTH = 629, - LAYOUT = 630, - DOUBLECONSTANT = 631, - INT16CONSTANT = 632, - UINT16CONSTANT = 633, - FLOAT16CONSTANT = 634, - INT32CONSTANT = 635, - UINT32CONSTANT = 636, - INT64CONSTANT = 637, - UINT64CONSTANT = 638, - SUBROUTINE = 639, - DEMOTE = 640, - PAYLOADNV = 641, - PAYLOADINNV = 642, - HITATTRNV = 643, - CALLDATANV = 644, - CALLDATAINNV = 645, - PATCH = 646, - SAMPLE = 647, - NONUNIFORM = 648, - COHERENT = 649, - VOLATILE = 650, - RESTRICT = 651, - READONLY = 652, - WRITEONLY = 653, - DEVICECOHERENT = 654, - QUEUEFAMILYCOHERENT = 655, - WORKGROUPCOHERENT = 656, - SUBGROUPCOHERENT = 657, - NONPRIVATE = 658, - NOPERSPECTIVE = 659, - EXPLICITINTERPAMD = 660, - PERVERTEXNV = 661, - PERPRIMITIVENV = 662, - PERVIEWNV = 663, - PERTASKNV = 664, - PRECISE = 665 + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + CONST = 258, /* CONST */ + BOOL = 259, /* BOOL */ + INT = 260, /* INT */ + UINT = 261, /* UINT */ + FLOAT = 262, /* FLOAT */ + BVEC2 = 263, /* BVEC2 */ + BVEC3 = 264, /* BVEC3 */ + BVEC4 = 265, /* BVEC4 */ + IVEC2 = 266, /* IVEC2 */ + IVEC3 = 267, /* IVEC3 */ + IVEC4 = 268, /* IVEC4 */ + UVEC2 = 269, /* UVEC2 */ + UVEC3 = 270, /* UVEC3 */ + UVEC4 = 271, /* UVEC4 */ + VEC2 = 272, /* VEC2 */ + VEC3 = 273, /* VEC3 */ + VEC4 = 274, /* VEC4 */ + MAT2 = 275, /* MAT2 */ + MAT3 = 276, /* MAT3 */ + MAT4 = 277, /* MAT4 */ + MAT2X2 = 278, /* MAT2X2 */ + MAT2X3 = 279, /* MAT2X3 */ + MAT2X4 = 280, /* MAT2X4 */ + MAT3X2 = 281, /* MAT3X2 */ + MAT3X3 = 282, /* MAT3X3 */ + MAT3X4 = 283, /* MAT3X4 */ + MAT4X2 = 284, /* MAT4X2 */ + MAT4X3 = 285, /* MAT4X3 */ + MAT4X4 = 286, /* MAT4X4 */ + SAMPLER2D = 287, /* SAMPLER2D */ + SAMPLER3D = 288, /* SAMPLER3D */ + SAMPLERCUBE = 289, /* SAMPLERCUBE */ + SAMPLER2DSHADOW = 290, /* SAMPLER2DSHADOW */ + SAMPLERCUBESHADOW = 291, /* SAMPLERCUBESHADOW */ + SAMPLER2DARRAY = 292, /* SAMPLER2DARRAY */ + SAMPLER2DARRAYSHADOW = 293, /* SAMPLER2DARRAYSHADOW */ + ISAMPLER2D = 294, /* ISAMPLER2D */ + ISAMPLER3D = 295, /* ISAMPLER3D */ + ISAMPLERCUBE = 296, /* ISAMPLERCUBE */ + ISAMPLER2DARRAY = 297, /* ISAMPLER2DARRAY */ + USAMPLER2D = 298, /* USAMPLER2D */ + USAMPLER3D = 299, /* USAMPLER3D */ + USAMPLERCUBE = 300, /* USAMPLERCUBE */ + USAMPLER2DARRAY = 301, /* USAMPLER2DARRAY */ + SAMPLER = 302, /* SAMPLER */ + SAMPLERSHADOW = 303, /* SAMPLERSHADOW */ + TEXTURE2D = 304, /* TEXTURE2D */ + TEXTURE3D = 305, /* TEXTURE3D */ + TEXTURECUBE = 306, /* TEXTURECUBE */ + TEXTURE2DARRAY = 307, /* TEXTURE2DARRAY */ + ITEXTURE2D = 308, /* ITEXTURE2D */ + ITEXTURE3D = 309, /* ITEXTURE3D */ + ITEXTURECUBE = 310, /* ITEXTURECUBE */ + ITEXTURE2DARRAY = 311, /* ITEXTURE2DARRAY */ + UTEXTURE2D = 312, /* UTEXTURE2D */ + UTEXTURE3D = 313, /* UTEXTURE3D */ + UTEXTURECUBE = 314, /* UTEXTURECUBE */ + UTEXTURE2DARRAY = 315, /* UTEXTURE2DARRAY */ + ATTRIBUTE = 316, /* ATTRIBUTE */ + VARYING = 317, /* VARYING */ + FLOAT16_T = 318, /* FLOAT16_T */ + FLOAT32_T = 319, /* FLOAT32_T */ + DOUBLE = 320, /* DOUBLE */ + FLOAT64_T = 321, /* FLOAT64_T */ + INT64_T = 322, /* INT64_T */ + UINT64_T = 323, /* UINT64_T */ + INT32_T = 324, /* INT32_T */ + UINT32_T = 325, /* UINT32_T */ + INT16_T = 326, /* INT16_T */ + UINT16_T = 327, /* UINT16_T */ + INT8_T = 328, /* INT8_T */ + UINT8_T = 329, /* UINT8_T */ + I64VEC2 = 330, /* I64VEC2 */ + I64VEC3 = 331, /* I64VEC3 */ + I64VEC4 = 332, /* I64VEC4 */ + U64VEC2 = 333, /* U64VEC2 */ + U64VEC3 = 334, /* U64VEC3 */ + U64VEC4 = 335, /* U64VEC4 */ + I32VEC2 = 336, /* I32VEC2 */ + I32VEC3 = 337, /* I32VEC3 */ + I32VEC4 = 338, /* I32VEC4 */ + U32VEC2 = 339, /* U32VEC2 */ + U32VEC3 = 340, /* U32VEC3 */ + U32VEC4 = 341, /* U32VEC4 */ + I16VEC2 = 342, /* I16VEC2 */ + I16VEC3 = 343, /* I16VEC3 */ + I16VEC4 = 344, /* I16VEC4 */ + U16VEC2 = 345, /* U16VEC2 */ + U16VEC3 = 346, /* U16VEC3 */ + U16VEC4 = 347, /* U16VEC4 */ + I8VEC2 = 348, /* I8VEC2 */ + I8VEC3 = 349, /* I8VEC3 */ + I8VEC4 = 350, /* I8VEC4 */ + U8VEC2 = 351, /* U8VEC2 */ + U8VEC3 = 352, /* U8VEC3 */ + U8VEC4 = 353, /* U8VEC4 */ + DVEC2 = 354, /* DVEC2 */ + DVEC3 = 355, /* DVEC3 */ + DVEC4 = 356, /* DVEC4 */ + DMAT2 = 357, /* DMAT2 */ + DMAT3 = 358, /* DMAT3 */ + DMAT4 = 359, /* DMAT4 */ + F16VEC2 = 360, /* F16VEC2 */ + F16VEC3 = 361, /* F16VEC3 */ + F16VEC4 = 362, /* F16VEC4 */ + F16MAT2 = 363, /* F16MAT2 */ + F16MAT3 = 364, /* F16MAT3 */ + F16MAT4 = 365, /* F16MAT4 */ + F32VEC2 = 366, /* F32VEC2 */ + F32VEC3 = 367, /* F32VEC3 */ + F32VEC4 = 368, /* F32VEC4 */ + F32MAT2 = 369, /* F32MAT2 */ + F32MAT3 = 370, /* F32MAT3 */ + F32MAT4 = 371, /* F32MAT4 */ + F64VEC2 = 372, /* F64VEC2 */ + F64VEC3 = 373, /* F64VEC3 */ + F64VEC4 = 374, /* F64VEC4 */ + F64MAT2 = 375, /* F64MAT2 */ + F64MAT3 = 376, /* F64MAT3 */ + F64MAT4 = 377, /* F64MAT4 */ + DMAT2X2 = 378, /* DMAT2X2 */ + DMAT2X3 = 379, /* DMAT2X3 */ + DMAT2X4 = 380, /* DMAT2X4 */ + DMAT3X2 = 381, /* DMAT3X2 */ + DMAT3X3 = 382, /* DMAT3X3 */ + DMAT3X4 = 383, /* DMAT3X4 */ + DMAT4X2 = 384, /* DMAT4X2 */ + DMAT4X3 = 385, /* DMAT4X3 */ + DMAT4X4 = 386, /* DMAT4X4 */ + F16MAT2X2 = 387, /* F16MAT2X2 */ + F16MAT2X3 = 388, /* F16MAT2X3 */ + F16MAT2X4 = 389, /* F16MAT2X4 */ + F16MAT3X2 = 390, /* F16MAT3X2 */ + F16MAT3X3 = 391, /* F16MAT3X3 */ + F16MAT3X4 = 392, /* F16MAT3X4 */ + F16MAT4X2 = 393, /* F16MAT4X2 */ + F16MAT4X3 = 394, /* F16MAT4X3 */ + F16MAT4X4 = 395, /* F16MAT4X4 */ + F32MAT2X2 = 396, /* F32MAT2X2 */ + F32MAT2X3 = 397, /* F32MAT2X3 */ + F32MAT2X4 = 398, /* F32MAT2X4 */ + F32MAT3X2 = 399, /* F32MAT3X2 */ + F32MAT3X3 = 400, /* F32MAT3X3 */ + F32MAT3X4 = 401, /* F32MAT3X4 */ + F32MAT4X2 = 402, /* F32MAT4X2 */ + F32MAT4X3 = 403, /* F32MAT4X3 */ + F32MAT4X4 = 404, /* F32MAT4X4 */ + F64MAT2X2 = 405, /* F64MAT2X2 */ + F64MAT2X3 = 406, /* F64MAT2X3 */ + F64MAT2X4 = 407, /* F64MAT2X4 */ + F64MAT3X2 = 408, /* F64MAT3X2 */ + F64MAT3X3 = 409, /* F64MAT3X3 */ + F64MAT3X4 = 410, /* F64MAT3X4 */ + F64MAT4X2 = 411, /* F64MAT4X2 */ + F64MAT4X3 = 412, /* F64MAT4X3 */ + F64MAT4X4 = 413, /* F64MAT4X4 */ + ATOMIC_UINT = 414, /* ATOMIC_UINT */ + ACCSTRUCTNV = 415, /* ACCSTRUCTNV */ + ACCSTRUCTEXT = 416, /* ACCSTRUCTEXT */ + RAYQUERYEXT = 417, /* RAYQUERYEXT */ + FCOOPMATNV = 418, /* FCOOPMATNV */ + ICOOPMATNV = 419, /* ICOOPMATNV */ + UCOOPMATNV = 420, /* UCOOPMATNV */ + SAMPLERCUBEARRAY = 421, /* SAMPLERCUBEARRAY */ + SAMPLERCUBEARRAYSHADOW = 422, /* SAMPLERCUBEARRAYSHADOW */ + ISAMPLERCUBEARRAY = 423, /* ISAMPLERCUBEARRAY */ + USAMPLERCUBEARRAY = 424, /* USAMPLERCUBEARRAY */ + SAMPLER1D = 425, /* SAMPLER1D */ + SAMPLER1DARRAY = 426, /* SAMPLER1DARRAY */ + SAMPLER1DARRAYSHADOW = 427, /* SAMPLER1DARRAYSHADOW */ + ISAMPLER1D = 428, /* ISAMPLER1D */ + SAMPLER1DSHADOW = 429, /* SAMPLER1DSHADOW */ + SAMPLER2DRECT = 430, /* SAMPLER2DRECT */ + SAMPLER2DRECTSHADOW = 431, /* SAMPLER2DRECTSHADOW */ + ISAMPLER2DRECT = 432, /* ISAMPLER2DRECT */ + USAMPLER2DRECT = 433, /* USAMPLER2DRECT */ + SAMPLERBUFFER = 434, /* SAMPLERBUFFER */ + ISAMPLERBUFFER = 435, /* ISAMPLERBUFFER */ + USAMPLERBUFFER = 436, /* USAMPLERBUFFER */ + SAMPLER2DMS = 437, /* SAMPLER2DMS */ + ISAMPLER2DMS = 438, /* ISAMPLER2DMS */ + USAMPLER2DMS = 439, /* USAMPLER2DMS */ + SAMPLER2DMSARRAY = 440, /* SAMPLER2DMSARRAY */ + ISAMPLER2DMSARRAY = 441, /* ISAMPLER2DMSARRAY */ + USAMPLER2DMSARRAY = 442, /* USAMPLER2DMSARRAY */ + SAMPLEREXTERNALOES = 443, /* SAMPLEREXTERNALOES */ + SAMPLEREXTERNAL2DY2YEXT = 444, /* SAMPLEREXTERNAL2DY2YEXT */ + ISAMPLER1DARRAY = 445, /* ISAMPLER1DARRAY */ + USAMPLER1D = 446, /* USAMPLER1D */ + USAMPLER1DARRAY = 447, /* USAMPLER1DARRAY */ + F16SAMPLER1D = 448, /* F16SAMPLER1D */ + F16SAMPLER2D = 449, /* F16SAMPLER2D */ + F16SAMPLER3D = 450, /* F16SAMPLER3D */ + F16SAMPLER2DRECT = 451, /* F16SAMPLER2DRECT */ + F16SAMPLERCUBE = 452, /* F16SAMPLERCUBE */ + F16SAMPLER1DARRAY = 453, /* F16SAMPLER1DARRAY */ + F16SAMPLER2DARRAY = 454, /* F16SAMPLER2DARRAY */ + F16SAMPLERCUBEARRAY = 455, /* F16SAMPLERCUBEARRAY */ + F16SAMPLERBUFFER = 456, /* F16SAMPLERBUFFER */ + F16SAMPLER2DMS = 457, /* F16SAMPLER2DMS */ + F16SAMPLER2DMSARRAY = 458, /* F16SAMPLER2DMSARRAY */ + F16SAMPLER1DSHADOW = 459, /* F16SAMPLER1DSHADOW */ + F16SAMPLER2DSHADOW = 460, /* F16SAMPLER2DSHADOW */ + F16SAMPLER1DARRAYSHADOW = 461, /* F16SAMPLER1DARRAYSHADOW */ + F16SAMPLER2DARRAYSHADOW = 462, /* F16SAMPLER2DARRAYSHADOW */ + F16SAMPLER2DRECTSHADOW = 463, /* F16SAMPLER2DRECTSHADOW */ + F16SAMPLERCUBESHADOW = 464, /* F16SAMPLERCUBESHADOW */ + F16SAMPLERCUBEARRAYSHADOW = 465, /* F16SAMPLERCUBEARRAYSHADOW */ + IMAGE1D = 466, /* IMAGE1D */ + IIMAGE1D = 467, /* IIMAGE1D */ + UIMAGE1D = 468, /* UIMAGE1D */ + IMAGE2D = 469, /* IMAGE2D */ + IIMAGE2D = 470, /* IIMAGE2D */ + UIMAGE2D = 471, /* UIMAGE2D */ + IMAGE3D = 472, /* IMAGE3D */ + IIMAGE3D = 473, /* IIMAGE3D */ + UIMAGE3D = 474, /* UIMAGE3D */ + IMAGE2DRECT = 475, /* IMAGE2DRECT */ + IIMAGE2DRECT = 476, /* IIMAGE2DRECT */ + UIMAGE2DRECT = 477, /* UIMAGE2DRECT */ + IMAGECUBE = 478, /* IMAGECUBE */ + IIMAGECUBE = 479, /* IIMAGECUBE */ + UIMAGECUBE = 480, /* UIMAGECUBE */ + IMAGEBUFFER = 481, /* IMAGEBUFFER */ + IIMAGEBUFFER = 482, /* IIMAGEBUFFER */ + UIMAGEBUFFER = 483, /* UIMAGEBUFFER */ + IMAGE1DARRAY = 484, /* IMAGE1DARRAY */ + IIMAGE1DARRAY = 485, /* IIMAGE1DARRAY */ + UIMAGE1DARRAY = 486, /* UIMAGE1DARRAY */ + IMAGE2DARRAY = 487, /* IMAGE2DARRAY */ + IIMAGE2DARRAY = 488, /* IIMAGE2DARRAY */ + UIMAGE2DARRAY = 489, /* UIMAGE2DARRAY */ + IMAGECUBEARRAY = 490, /* IMAGECUBEARRAY */ + IIMAGECUBEARRAY = 491, /* IIMAGECUBEARRAY */ + UIMAGECUBEARRAY = 492, /* UIMAGECUBEARRAY */ + IMAGE2DMS = 493, /* IMAGE2DMS */ + IIMAGE2DMS = 494, /* IIMAGE2DMS */ + UIMAGE2DMS = 495, /* UIMAGE2DMS */ + IMAGE2DMSARRAY = 496, /* IMAGE2DMSARRAY */ + IIMAGE2DMSARRAY = 497, /* IIMAGE2DMSARRAY */ + UIMAGE2DMSARRAY = 498, /* UIMAGE2DMSARRAY */ + F16IMAGE1D = 499, /* F16IMAGE1D */ + F16IMAGE2D = 500, /* F16IMAGE2D */ + F16IMAGE3D = 501, /* F16IMAGE3D */ + F16IMAGE2DRECT = 502, /* F16IMAGE2DRECT */ + F16IMAGECUBE = 503, /* F16IMAGECUBE */ + F16IMAGE1DARRAY = 504, /* F16IMAGE1DARRAY */ + F16IMAGE2DARRAY = 505, /* F16IMAGE2DARRAY */ + F16IMAGECUBEARRAY = 506, /* F16IMAGECUBEARRAY */ + F16IMAGEBUFFER = 507, /* F16IMAGEBUFFER */ + F16IMAGE2DMS = 508, /* F16IMAGE2DMS */ + F16IMAGE2DMSARRAY = 509, /* F16IMAGE2DMSARRAY */ + I64IMAGE1D = 510, /* I64IMAGE1D */ + U64IMAGE1D = 511, /* U64IMAGE1D */ + I64IMAGE2D = 512, /* I64IMAGE2D */ + U64IMAGE2D = 513, /* U64IMAGE2D */ + I64IMAGE3D = 514, /* I64IMAGE3D */ + U64IMAGE3D = 515, /* U64IMAGE3D */ + I64IMAGE2DRECT = 516, /* I64IMAGE2DRECT */ + U64IMAGE2DRECT = 517, /* U64IMAGE2DRECT */ + I64IMAGECUBE = 518, /* I64IMAGECUBE */ + U64IMAGECUBE = 519, /* U64IMAGECUBE */ + I64IMAGEBUFFER = 520, /* I64IMAGEBUFFER */ + U64IMAGEBUFFER = 521, /* U64IMAGEBUFFER */ + I64IMAGE1DARRAY = 522, /* I64IMAGE1DARRAY */ + U64IMAGE1DARRAY = 523, /* U64IMAGE1DARRAY */ + I64IMAGE2DARRAY = 524, /* I64IMAGE2DARRAY */ + U64IMAGE2DARRAY = 525, /* U64IMAGE2DARRAY */ + I64IMAGECUBEARRAY = 526, /* I64IMAGECUBEARRAY */ + U64IMAGECUBEARRAY = 527, /* U64IMAGECUBEARRAY */ + I64IMAGE2DMS = 528, /* I64IMAGE2DMS */ + U64IMAGE2DMS = 529, /* U64IMAGE2DMS */ + I64IMAGE2DMSARRAY = 530, /* I64IMAGE2DMSARRAY */ + U64IMAGE2DMSARRAY = 531, /* U64IMAGE2DMSARRAY */ + TEXTURECUBEARRAY = 532, /* TEXTURECUBEARRAY */ + ITEXTURECUBEARRAY = 533, /* ITEXTURECUBEARRAY */ + UTEXTURECUBEARRAY = 534, /* UTEXTURECUBEARRAY */ + TEXTURE1D = 535, /* TEXTURE1D */ + ITEXTURE1D = 536, /* ITEXTURE1D */ + UTEXTURE1D = 537, /* UTEXTURE1D */ + TEXTURE1DARRAY = 538, /* TEXTURE1DARRAY */ + ITEXTURE1DARRAY = 539, /* ITEXTURE1DARRAY */ + UTEXTURE1DARRAY = 540, /* UTEXTURE1DARRAY */ + TEXTURE2DRECT = 541, /* TEXTURE2DRECT */ + ITEXTURE2DRECT = 542, /* ITEXTURE2DRECT */ + UTEXTURE2DRECT = 543, /* UTEXTURE2DRECT */ + TEXTUREBUFFER = 544, /* TEXTUREBUFFER */ + ITEXTUREBUFFER = 545, /* ITEXTUREBUFFER */ + UTEXTUREBUFFER = 546, /* UTEXTUREBUFFER */ + TEXTURE2DMS = 547, /* TEXTURE2DMS */ + ITEXTURE2DMS = 548, /* ITEXTURE2DMS */ + UTEXTURE2DMS = 549, /* UTEXTURE2DMS */ + TEXTURE2DMSARRAY = 550, /* TEXTURE2DMSARRAY */ + ITEXTURE2DMSARRAY = 551, /* ITEXTURE2DMSARRAY */ + UTEXTURE2DMSARRAY = 552, /* UTEXTURE2DMSARRAY */ + F16TEXTURE1D = 553, /* F16TEXTURE1D */ + F16TEXTURE2D = 554, /* F16TEXTURE2D */ + F16TEXTURE3D = 555, /* F16TEXTURE3D */ + F16TEXTURE2DRECT = 556, /* F16TEXTURE2DRECT */ + F16TEXTURECUBE = 557, /* F16TEXTURECUBE */ + F16TEXTURE1DARRAY = 558, /* F16TEXTURE1DARRAY */ + F16TEXTURE2DARRAY = 559, /* F16TEXTURE2DARRAY */ + F16TEXTURECUBEARRAY = 560, /* F16TEXTURECUBEARRAY */ + F16TEXTUREBUFFER = 561, /* F16TEXTUREBUFFER */ + F16TEXTURE2DMS = 562, /* F16TEXTURE2DMS */ + F16TEXTURE2DMSARRAY = 563, /* F16TEXTURE2DMSARRAY */ + SUBPASSINPUT = 564, /* SUBPASSINPUT */ + SUBPASSINPUTMS = 565, /* SUBPASSINPUTMS */ + ISUBPASSINPUT = 566, /* ISUBPASSINPUT */ + ISUBPASSINPUTMS = 567, /* ISUBPASSINPUTMS */ + USUBPASSINPUT = 568, /* USUBPASSINPUT */ + USUBPASSINPUTMS = 569, /* USUBPASSINPUTMS */ + F16SUBPASSINPUT = 570, /* F16SUBPASSINPUT */ + F16SUBPASSINPUTMS = 571, /* F16SUBPASSINPUTMS */ + SPIRV_INSTRUCTION = 572, /* SPIRV_INSTRUCTION */ + SPIRV_EXECUTION_MODE = 573, /* SPIRV_EXECUTION_MODE */ + SPIRV_EXECUTION_MODE_ID = 574, /* SPIRV_EXECUTION_MODE_ID */ + SPIRV_DECORATE = 575, /* SPIRV_DECORATE */ + SPIRV_DECORATE_ID = 576, /* SPIRV_DECORATE_ID */ + SPIRV_DECORATE_STRING = 577, /* SPIRV_DECORATE_STRING */ + SPIRV_TYPE = 578, /* SPIRV_TYPE */ + SPIRV_STORAGE_CLASS = 579, /* SPIRV_STORAGE_CLASS */ + SPIRV_BY_REFERENCE = 580, /* SPIRV_BY_REFERENCE */ + SPIRV_LITERAL = 581, /* SPIRV_LITERAL */ + LEFT_OP = 582, /* LEFT_OP */ + RIGHT_OP = 583, /* RIGHT_OP */ + INC_OP = 584, /* INC_OP */ + DEC_OP = 585, /* DEC_OP */ + LE_OP = 586, /* LE_OP */ + GE_OP = 587, /* GE_OP */ + EQ_OP = 588, /* EQ_OP */ + NE_OP = 589, /* NE_OP */ + AND_OP = 590, /* AND_OP */ + OR_OP = 591, /* OR_OP */ + XOR_OP = 592, /* XOR_OP */ + MUL_ASSIGN = 593, /* MUL_ASSIGN */ + DIV_ASSIGN = 594, /* DIV_ASSIGN */ + ADD_ASSIGN = 595, /* ADD_ASSIGN */ + MOD_ASSIGN = 596, /* MOD_ASSIGN */ + LEFT_ASSIGN = 597, /* LEFT_ASSIGN */ + RIGHT_ASSIGN = 598, /* RIGHT_ASSIGN */ + AND_ASSIGN = 599, /* AND_ASSIGN */ + XOR_ASSIGN = 600, /* XOR_ASSIGN */ + OR_ASSIGN = 601, /* OR_ASSIGN */ + SUB_ASSIGN = 602, /* SUB_ASSIGN */ + STRING_LITERAL = 603, /* STRING_LITERAL */ + LEFT_PAREN = 604, /* LEFT_PAREN */ + RIGHT_PAREN = 605, /* RIGHT_PAREN */ + LEFT_BRACKET = 606, /* LEFT_BRACKET */ + RIGHT_BRACKET = 607, /* RIGHT_BRACKET */ + LEFT_BRACE = 608, /* LEFT_BRACE */ + RIGHT_BRACE = 609, /* RIGHT_BRACE */ + DOT = 610, /* DOT */ + COMMA = 611, /* COMMA */ + COLON = 612, /* COLON */ + EQUAL = 613, /* EQUAL */ + SEMICOLON = 614, /* SEMICOLON */ + BANG = 615, /* BANG */ + DASH = 616, /* DASH */ + TILDE = 617, /* TILDE */ + PLUS = 618, /* PLUS */ + STAR = 619, /* STAR */ + SLASH = 620, /* SLASH */ + PERCENT = 621, /* PERCENT */ + LEFT_ANGLE = 622, /* LEFT_ANGLE */ + RIGHT_ANGLE = 623, /* RIGHT_ANGLE */ + VERTICAL_BAR = 624, /* VERTICAL_BAR */ + CARET = 625, /* CARET */ + AMPERSAND = 626, /* AMPERSAND */ + QUESTION = 627, /* QUESTION */ + INVARIANT = 628, /* INVARIANT */ + HIGH_PRECISION = 629, /* HIGH_PRECISION */ + MEDIUM_PRECISION = 630, /* MEDIUM_PRECISION */ + LOW_PRECISION = 631, /* LOW_PRECISION */ + PRECISION = 632, /* PRECISION */ + PACKED = 633, /* PACKED */ + RESOURCE = 634, /* RESOURCE */ + SUPERP = 635, /* SUPERP */ + FLOATCONSTANT = 636, /* FLOATCONSTANT */ + INTCONSTANT = 637, /* INTCONSTANT */ + UINTCONSTANT = 638, /* UINTCONSTANT */ + BOOLCONSTANT = 639, /* BOOLCONSTANT */ + IDENTIFIER = 640, /* IDENTIFIER */ + TYPE_NAME = 641, /* TYPE_NAME */ + CENTROID = 642, /* CENTROID */ + IN = 643, /* IN */ + OUT = 644, /* OUT */ + INOUT = 645, /* INOUT */ + STRUCT = 646, /* STRUCT */ + VOID = 647, /* VOID */ + WHILE = 648, /* WHILE */ + BREAK = 649, /* BREAK */ + CONTINUE = 650, /* CONTINUE */ + DO = 651, /* DO */ + ELSE = 652, /* ELSE */ + FOR = 653, /* FOR */ + IF = 654, /* IF */ + DISCARD = 655, /* DISCARD */ + RETURN = 656, /* RETURN */ + SWITCH = 657, /* SWITCH */ + CASE = 658, /* CASE */ + DEFAULT = 659, /* DEFAULT */ + TERMINATE_INVOCATION = 660, /* TERMINATE_INVOCATION */ + TERMINATE_RAY = 661, /* TERMINATE_RAY */ + IGNORE_INTERSECTION = 662, /* IGNORE_INTERSECTION */ + UNIFORM = 663, /* UNIFORM */ + SHARED = 664, /* SHARED */ + BUFFER = 665, /* BUFFER */ + FLAT = 666, /* FLAT */ + SMOOTH = 667, /* SMOOTH */ + LAYOUT = 668, /* LAYOUT */ + DOUBLECONSTANT = 669, /* DOUBLECONSTANT */ + INT16CONSTANT = 670, /* INT16CONSTANT */ + UINT16CONSTANT = 671, /* UINT16CONSTANT */ + FLOAT16CONSTANT = 672, /* FLOAT16CONSTANT */ + INT32CONSTANT = 673, /* INT32CONSTANT */ + UINT32CONSTANT = 674, /* UINT32CONSTANT */ + INT64CONSTANT = 675, /* INT64CONSTANT */ + UINT64CONSTANT = 676, /* UINT64CONSTANT */ + SUBROUTINE = 677, /* SUBROUTINE */ + DEMOTE = 678, /* DEMOTE */ + PAYLOADNV = 679, /* PAYLOADNV */ + PAYLOADINNV = 680, /* PAYLOADINNV */ + HITATTRNV = 681, /* HITATTRNV */ + CALLDATANV = 682, /* CALLDATANV */ + CALLDATAINNV = 683, /* CALLDATAINNV */ + PAYLOADEXT = 684, /* PAYLOADEXT */ + PAYLOADINEXT = 685, /* PAYLOADINEXT */ + HITATTREXT = 686, /* HITATTREXT */ + CALLDATAEXT = 687, /* CALLDATAEXT */ + CALLDATAINEXT = 688, /* CALLDATAINEXT */ + PATCH = 689, /* PATCH */ + SAMPLE = 690, /* SAMPLE */ + NONUNIFORM = 691, /* NONUNIFORM */ + COHERENT = 692, /* COHERENT */ + VOLATILE = 693, /* VOLATILE */ + RESTRICT = 694, /* RESTRICT */ + READONLY = 695, /* READONLY */ + WRITEONLY = 696, /* WRITEONLY */ + DEVICECOHERENT = 697, /* DEVICECOHERENT */ + QUEUEFAMILYCOHERENT = 698, /* QUEUEFAMILYCOHERENT */ + WORKGROUPCOHERENT = 699, /* WORKGROUPCOHERENT */ + SUBGROUPCOHERENT = 700, /* SUBGROUPCOHERENT */ + NONPRIVATE = 701, /* NONPRIVATE */ + SHADERCALLCOHERENT = 702, /* SHADERCALLCOHERENT */ + NOPERSPECTIVE = 703, /* NOPERSPECTIVE */ + EXPLICITINTERPAMD = 704, /* EXPLICITINTERPAMD */ + PERVERTEXNV = 705, /* PERVERTEXNV */ + PERPRIMITIVENV = 706, /* PERPRIMITIVENV */ + PERVIEWNV = 707, /* PERVIEWNV */ + PERTASKNV = 708, /* PERTASKNV */ + PRECISE = 709 /* PRECISE */ }; + typedef enum yytokentype yytoken_kind_t; #endif /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - union YYSTYPE { -#line 96 "MachineIndependent/glslang.y" /* yacc.c:1909 */ +#line 97 "MachineIndependent/glslang.y" struct { glslang::TSourceLoc loc; @@ -484,6 +537,9 @@ union YYSTYPE glslang::TIntermNodePair nodePair; glslang::TIntermTyped* intermTypedNode; glslang::TAttributes* attributes; + glslang::TSpirvRequirement* spirvReq; + glslang::TSpirvInstruction* spirvInst; + glslang::TSpirvTypeParameters* spirvTypeParams; }; union { glslang::TPublicType type; @@ -497,9 +553,9 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 501 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ -}; +#line 557 "MachineIndependent/glslang_tab.cpp.h" +}; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 diff --git a/Externals/glslang/glslang/MachineIndependent/intermOut.cpp b/Externals/glslang/glslang/MachineIndependent/intermOut.cpp index 3a93aedafb6f..d8a3aab5d083 100644 --- a/Externals/glslang/glslang/MachineIndependent/intermOut.cpp +++ b/Externals/glslang/glslang/MachineIndependent/intermOut.cpp @@ -2,6 +2,7 @@ // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2016 LunarG, Inc. // Copyright (C) 2017 ARM Limited. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -35,7 +36,7 @@ // POSSIBILITY OF SUCH DAMAGE. // -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) #include "localintermediate.h" #include "../Include/InfoSink.h" @@ -47,37 +48,6 @@ #endif #include -namespace { - -bool IsInfinity(double x) { -#ifdef _MSC_VER - switch (_fpclass(x)) { - case _FPCLASS_NINF: - case _FPCLASS_PINF: - return true; - default: - return false; - } -#else - return std::isinf(x); -#endif -} - -bool IsNan(double x) { -#ifdef _MSC_VER - switch (_fpclass(x)) { - case _FPCLASS_SNAN: - case _FPCLASS_QNAN: - return true; - default: - return false; - } -#else - return std::isnan(x); -#endif -} - -} namespace glslang { @@ -437,6 +407,9 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpConvUint64ToPtr: out.debug << "Convert uint64_t to pointer"; break; case EOpConvPtrToUint64: out.debug << "Convert pointer to uint64_t"; break; + case EOpConvUint64ToAccStruct: out.debug << "Convert uint64_t to acceleration structure"; break; + case EOpConvUvec2ToAccStruct: out.debug << "Convert uvec2 to acceleration strucuture "; break; + case EOpRadians: out.debug << "radians"; break; case EOpDegrees: out.debug << "degrees"; break; case EOpSin: out.debug << "sine"; break; @@ -692,6 +665,10 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpConstructReference: out.debug << "Construct reference type"; break; +#ifndef GLSLANG_WEB + case EOpSpirvInst: out.debug << "spirv_instruction"; break; +#endif + default: out.debug.message(EPrefixError, "Bad unary op"); } @@ -828,6 +805,7 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpConstructTextureSampler: out.debug << "Construct combined texture-sampler"; break; case EOpConstructReference: out.debug << "Construct reference"; break; case EOpConstructCooperativeMatrix: out.debug << "Construct cooperative matrix"; break; + case EOpConstructAccStruct: out.debug << "Construct acceleration structure"; break; case EOpLessThan: out.debug << "Compare Less Than"; break; case EOpGreaterThan: out.debug << "Compare Greater Than"; break; @@ -881,6 +859,7 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpTime: out.debug << "time"; break; case EOpAtomicAdd: out.debug << "AtomicAdd"; break; + case EOpAtomicSubtract: out.debug << "AtomicSubtract"; break; case EOpAtomicMin: out.debug << "AtomicMin"; break; case EOpAtomicMax: out.debug << "AtomicMax"; break; case EOpAtomicAnd: out.debug << "AtomicAnd"; break; @@ -1079,17 +1058,51 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break; case EOpTraceNV: out.debug << "traceNV"; break; - case EOpReportIntersectionNV: out.debug << "reportIntersectionNV"; break; + case EOpTraceRayMotionNV: out.debug << "traceRayMotionNV"; break; + case EOpTraceKHR: out.debug << "traceRayKHR"; break; + case EOpReportIntersection: out.debug << "reportIntersectionNV"; break; case EOpIgnoreIntersectionNV: out.debug << "ignoreIntersectionNV"; break; + case EOpIgnoreIntersectionKHR: out.debug << "ignoreIntersectionKHR"; break; case EOpTerminateRayNV: out.debug << "terminateRayNV"; break; + case EOpTerminateRayKHR: out.debug << "terminateRayKHR"; break; case EOpExecuteCallableNV: out.debug << "executeCallableNV"; break; + case EOpExecuteCallableKHR: out.debug << "executeCallableKHR"; break; case EOpWritePackedPrimitiveIndices4x8NV: out.debug << "writePackedPrimitiveIndices4x8NV"; break; + case EOpRayQueryInitialize: out.debug << "rayQueryInitializeEXT"; break; + case EOpRayQueryTerminate: out.debug << "rayQueryTerminateEXT"; break; + case EOpRayQueryGenerateIntersection: out.debug << "rayQueryGenerateIntersectionEXT"; break; + case EOpRayQueryConfirmIntersection: out.debug << "rayQueryConfirmIntersectionEXT"; break; + case EOpRayQueryProceed: out.debug << "rayQueryProceedEXT"; break; + case EOpRayQueryGetIntersectionType: out.debug << "rayQueryGetIntersectionTypeEXT"; break; + case EOpRayQueryGetRayTMin: out.debug << "rayQueryGetRayTMinEXT"; break; + case EOpRayQueryGetRayFlags: out.debug << "rayQueryGetRayFlagsEXT"; break; + case EOpRayQueryGetIntersectionT: out.debug << "rayQueryGetIntersectionTEXT"; break; + case EOpRayQueryGetIntersectionInstanceCustomIndex: out.debug << "rayQueryGetIntersectionInstanceCustomIndexEXT"; break; + case EOpRayQueryGetIntersectionInstanceId: out.debug << "rayQueryGetIntersectionInstanceIdEXT"; break; + case EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset: out.debug << "rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT"; break; + case EOpRayQueryGetIntersectionGeometryIndex: out.debug << "rayQueryGetIntersectionGeometryIndexEXT"; break; + case EOpRayQueryGetIntersectionPrimitiveIndex: out.debug << "rayQueryGetIntersectionPrimitiveIndexEXT"; break; + case EOpRayQueryGetIntersectionBarycentrics: out.debug << "rayQueryGetIntersectionBarycentricsEXT"; break; + case EOpRayQueryGetIntersectionFrontFace: out.debug << "rayQueryGetIntersectionFrontFaceEXT"; break; + case EOpRayQueryGetIntersectionCandidateAABBOpaque: out.debug << "rayQueryGetIntersectionCandidateAABBOpaqueEXT"; break; + case EOpRayQueryGetIntersectionObjectRayDirection: out.debug << "rayQueryGetIntersectionObjectRayDirectionEXT"; break; + case EOpRayQueryGetIntersectionObjectRayOrigin: out.debug << "rayQueryGetIntersectionObjectRayOriginEXT"; break; + case EOpRayQueryGetWorldRayDirection: out.debug << "rayQueryGetWorldRayDirectionEXT"; break; + case EOpRayQueryGetWorldRayOrigin: out.debug << "rayQueryGetWorldRayOriginEXT"; break; + case EOpRayQueryGetIntersectionObjectToWorld: out.debug << "rayQueryGetIntersectionObjectToWorldEXT"; break; + case EOpRayQueryGetIntersectionWorldToObject: out.debug << "rayQueryGetIntersectionWorldToObjectEXT"; break; + case EOpCooperativeMatrixLoad: out.debug << "Load cooperative matrix"; break; case EOpCooperativeMatrixStore: out.debug << "Store cooperative matrix"; break; case EOpCooperativeMatrixMulAdd: out.debug << "MulAdd cooperative matrices"; break; case EOpIsHelperInvocation: out.debug << "IsHelperInvocation"; break; + case EOpDebugPrintf: out.debug << "Debug printf"; break; + +#ifndef GLSLANG_WEB + case EOpSpirvInst: out.debug << "spirv_instruction"; break; +#endif default: out.debug.message(EPrefixError, "Bad aggregation op"); } @@ -1295,6 +1308,9 @@ static void OutputConstantUnion(TInfoSink& out, const TIntermTyped* node, const out.debug << buf << "\n"; } break; + case EbtString: + out.debug << "\"" << constUnion[i].getSConst()->c_str() << "\"\n"; + break; default: out.info.message(EPrefixInternalError, "Unknown constant", node->getLoc()); break; @@ -1380,14 +1396,17 @@ bool TOutputTraverser::visitBranch(TVisit /* visit*/, TIntermBranch* node) OutputTreeText(out, node, depth); switch (node->getFlowOp()) { - case EOpKill: out.debug << "Branch: Kill"; break; - case EOpBreak: out.debug << "Branch: Break"; break; - case EOpContinue: out.debug << "Branch: Continue"; break; - case EOpReturn: out.debug << "Branch: Return"; break; - case EOpCase: out.debug << "case: "; break; - case EOpDemote: out.debug << "Demote"; break; - case EOpDefault: out.debug << "default: "; break; - default: out.debug << "Branch: Unknown Branch"; break; + case EOpKill: out.debug << "Branch: Kill"; break; + case EOpTerminateInvocation: out.debug << "Branch: TerminateInvocation"; break; + case EOpIgnoreIntersectionKHR: out.debug << "Branch: IgnoreIntersectionKHR"; break; + case EOpTerminateRayKHR: out.debug << "Branch: TerminateRayKHR"; break; + case EOpBreak: out.debug << "Branch: Break"; break; + case EOpContinue: out.debug << "Branch: Continue"; break; + case EOpReturn: out.debug << "Branch: Return"; break; + case EOpCase: out.debug << "case: "; break; + case EOpDemote: out.debug << "Demote"; break; + case EOpDefault: out.debug << "default: "; break; + default: out.debug << "Branch: Unknown Branch"; break; } if (node->getExpression()) { @@ -1446,6 +1465,9 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree) if (xfbMode) infoSink.debug << "in xfb mode\n"; + if (getSubgroupUniformControlFlow()) + infoSink.debug << "subgroup_uniform_control_flow\n"; + switch (language) { case EShLangVertex: break; @@ -1536,4 +1558,4 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree) } // end namespace glslang -#endif // not GLSLANG_WEB \ No newline at end of file +#endif // !GLSLANG_WEB && !GLSLANG_ANGLE diff --git a/Externals/glslang/glslang/MachineIndependent/iomapper.cpp b/Externals/glslang/glslang/MachineIndependent/iomapper.cpp index 3262c0a20307..4250e92da600 100644 --- a/Externals/glslang/glslang/MachineIndependent/iomapper.cpp +++ b/Externals/glslang/glslang/MachineIndependent/iomapper.cpp @@ -33,13 +33,15 @@ // POSSIBILITY OF SUCH DAMAGE. // -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) #include "../Include/Common.h" #include "../Include/InfoSink.h" +#include "../Include/Types.h" #include "gl_types.h" #include "iomapper.h" +#include "SymbolTable.h" // // Map IO bindings. @@ -77,17 +79,22 @@ class TVarGatherTraverser : public TLiveTraverser { target = &inputList; else if (base->getQualifier().storage == EvqVaryingOut) target = &outputList; - else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().isPushConstant()) + else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().isPushConstant() && !base->getQualifier().isShaderRecord()) target = &uniformList; + // If a global is being visited, then we should also traverse it incase it's evaluation + // ends up visiting inputs we want to tag as live + else if (base->getQualifier().storage == EvqGlobal) + addGlobalReference(base->getAccessName()); + if (target) { TVarEntryInfo ent = {base->getId(), base, ! traverseAll}; ent.stage = intermediate.getStage(); TVarLiveMap::iterator at = target->find( - ent.symbol->getName()); // std::lower_bound(target->begin(), target->end(), ent, TVarEntryInfo::TOrderById()); + ent.symbol->getAccessName()); // std::lower_bound(target->begin(), target->end(), ent, TVarEntryInfo::TOrderById()); if (at != target->end() && at->second.id == ent.id) at->second.live = at->second.live || ! traverseAll; // update live state else - (*target)[ent.symbol->getName()] = ent; + (*target)[ent.symbol->getAccessName()] = ent; } } @@ -120,7 +127,8 @@ class TVarSetTraverser : public TLiveTraverser return; TVarEntryInfo ent = { base->getId() }; - TVarLiveMap::const_iterator at = source->find(base->getName()); + // Fix a defect, when block has no instance name, we need to find its block name + TVarLiveMap::const_iterator at = source->find(base->getAccessName()); if (at == source->end()) return; @@ -161,7 +169,7 @@ struct TNotifyUniformAdaptor } private: - TNotifyUniformAdaptor& operator=(TNotifyUniformAdaptor&); + TNotifyUniformAdaptor& operator=(TNotifyUniformAdaptor&) = delete; }; struct TNotifyInOutAdaptor @@ -176,34 +184,31 @@ struct TNotifyInOutAdaptor inline void operator()(std::pair& entKey) { - resolver.notifyInOut(stage, entKey.second); + resolver.notifyInOut(entKey.second.stage, entKey.second); } private: - TNotifyInOutAdaptor& operator=(TNotifyInOutAdaptor&); + TNotifyInOutAdaptor& operator=(TNotifyInOutAdaptor&) = delete; }; struct TResolverUniformAdaptor { - TResolverUniformAdaptor(EShLanguage s, TIoMapResolver& r, TInfoSink& i, bool& e) + TResolverUniformAdaptor(EShLanguage s, TIoMapResolver& r, TVarLiveMap* uniform[EShLangCount], TInfoSink& i, bool& e) : stage(s) , resolver(r) , infoSink(i) , error(e) { + memcpy(uniformVarMap, uniform, EShLangCount * (sizeof(TVarLiveMap*))); } inline void operator()(std::pair& entKey) { TVarEntryInfo& ent = entKey.second; - ent.newLocation = -1; - ent.newComponent = -1; - ent.newBinding = -1; - ent.newSet = -1; - ent.newIndex = -1; + ent.clearNewAssignments(); const bool isValid = resolver.validateBinding(stage, ent); if (isValid) { - resolver.resolveBinding(stage, ent); - resolver.resolveSet(stage, ent); - resolver.resolveUniformLocation(stage, ent); + resolver.resolveSet(ent.stage, ent); + resolver.resolveBinding(ent.stage, ent); + resolver.resolveUniformLocation(ent.stage, ent); if (ent.newBinding != -1) { if (ent.newBinding >= int(TQualifier::layoutBindingEnd)) { @@ -212,6 +217,17 @@ struct TResolverUniformAdaptor { infoSink.info.message(EPrefixInternalError, err.c_str()); error = true; } + + if (ent.symbol->getQualifier().hasBinding()) { + for (uint32_t idx = EShLangVertex; idx < EShLangCount; ++idx) { + if (idx == ent.stage || uniformVarMap[idx] == nullptr) + continue; + auto entKey2 = uniformVarMap[idx]->find(entKey.first); + if (entKey2 != uniformVarMap[idx]->end()) { + entKey2->second.newBinding = ent.newBinding; + } + } + } } if (ent.newSet != -1) { if (ent.newSet >= int(TQualifier::layoutSetEnd)) { @@ -220,6 +236,16 @@ struct TResolverUniformAdaptor { infoSink.info.message(EPrefixInternalError, err.c_str()); error = true; } + if (ent.symbol->getQualifier().hasSet()) { + for (uint32_t idx = EShLangVertex; idx < EShLangCount; ++idx) { + if ((idx == stage) || (uniformVarMap[idx] == nullptr)) + continue; + auto entKey2 = uniformVarMap[idx]->find(entKey.first); + if (entKey2 != uniformVarMap[idx]->end()) { + entKey2->second.newSet = ent.newSet; + } + } + } } } else { TString errorMsg = "Invalid binding: " + entKey.first; @@ -234,9 +260,9 @@ struct TResolverUniformAdaptor { TIoMapResolver& resolver; TInfoSink& infoSink; bool& error; - + TVarLiveMap* uniformVarMap[EShLangCount]; private: - TResolverUniformAdaptor& operator=(TResolverUniformAdaptor&); + TResolverUniformAdaptor& operator=(TResolverUniformAdaptor&) = delete; }; struct TResolverInOutAdaptor { @@ -251,12 +277,8 @@ struct TResolverInOutAdaptor { inline void operator()(std::pair& entKey) { TVarEntryInfo& ent = entKey.second; - ent.newLocation = -1; - ent.newComponent = -1; - ent.newBinding = -1; - ent.newSet = -1; - ent.newIndex = -1; - const bool isValid = resolver.validateInOut(stage, ent); + ent.clearNewAssignments(); + const bool isValid = resolver.validateInOut(ent.stage, ent); if (isValid) { resolver.resolveInOutLocation(stage, ent); resolver.resolveInOutComponent(stage, ent); @@ -283,25 +305,122 @@ struct TResolverInOutAdaptor { bool& error; private: - TResolverInOutAdaptor& operator=(TResolverInOutAdaptor&); + TResolverInOutAdaptor& operator=(TResolverInOutAdaptor&) = delete; }; // The class is used for reserving explicit uniform locations and ubo/ssbo/opaque bindings +// xxTODO: maybe this logic should be moved into the resolver's "validateInOut" and "validateUniform" struct TSymbolValidater { TSymbolValidater(TIoMapResolver& r, TInfoSink& i, TVarLiveMap* in[EShLangCount], TVarLiveMap* out[EShLangCount], - TVarLiveMap* uniform[EShLangCount], bool& hadError) - : preStage(EShLangCount) - , currentStage(EShLangCount) - , nextStage(EShLangCount) - , resolver(r) + TVarLiveMap* uniform[EShLangCount], bool& hadError, EProfile profile, int version) + : resolver(r) , infoSink(i) , hadError(hadError) + , profile(profile) + , version(version) { memcpy(inVarMaps, in, EShLangCount * (sizeof(TVarLiveMap*))); memcpy(outVarMaps, out, EShLangCount * (sizeof(TVarLiveMap*))); memcpy(uniformVarMap, uniform, EShLangCount * (sizeof(TVarLiveMap*))); + + std::map anonymousMemberMap; + std::vector usedUniformLocation; + std::vector usedUniformName; + usedUniformLocation.clear(); + usedUniformName.clear(); + for (int i = 0; i < EShLangCount; i++) { + if (uniformVarMap[i]) { + for (auto uniformVar : *uniformVarMap[i]) + { + TIntermSymbol* pSymbol = uniformVar.second.symbol; + TQualifier qualifier = uniformVar.second.symbol->getQualifier(); + TString symbolName = pSymbol->getAccessName(); + + // All the uniform needs multi-stage location check (block/default) + int uniformLocation = qualifier.layoutLocation; + + if (uniformLocation != TQualifier::layoutLocationEnd) { + // Total size of current uniform, could be block, struct or other types. + int size = TIntermediate::computeTypeUniformLocationSize(pSymbol->getType()); + + TRange locationRange(uniformLocation, uniformLocation + size - 1); + + // Combine location and component ranges + int overlapLocation = -1; + bool diffLocation = false; + + // Check for collisions, except for vertex inputs on desktop targeting OpenGL + overlapLocation = checkLocationOverlap(locationRange, usedUniformLocation, symbolName, usedUniformName, diffLocation); + + // Overlap locations of uniforms, regardless of components (multi stages) + if (overlapLocation == -1) { + usedUniformLocation.push_back(locationRange); + usedUniformName.push_back(symbolName); + } + else if (overlapLocation >= 0) { + if (diffLocation == true) { + TString err = ("Uniform location should be equal for same uniforms: " +std::to_string(overlapLocation)).c_str(); + infoSink.info.message(EPrefixInternalError, err.c_str()); + hadError = true; + break; + } + else { + TString err = ("Uniform location overlaps across stages: " + std::to_string(overlapLocation)).c_str(); + infoSink.info.message(EPrefixInternalError, err.c_str()); + hadError = true; + break; + } + } + } + + if ((uniformVar.second.symbol->getBasicType() == EbtBlock) && + IsAnonymous(uniformVar.second.symbol->getName())) + { + auto blockType = uniformVar.second.symbol->getType().getStruct(); + for (size_t memberIdx = 0; memberIdx < blockType->size(); ++memberIdx) { + auto memberName = (*blockType)[memberIdx].type->getFieldName(); + if (anonymousMemberMap.find(memberName) != anonymousMemberMap.end()) + { + if (anonymousMemberMap[memberName] != uniformVar.second.symbol->getType().getTypeName()) + { + TString err = "Invalid block member name: " + memberName; + infoSink.info.message(EPrefixInternalError, err.c_str()); + hadError = true; + break; + } + } + else + { + anonymousMemberMap[memberName] = uniformVar.second.symbol->getType().getTypeName(); + } + } + } + if (hadError) + break; + } + } + } + } + + // In case we need to new an intermediate, which costs too much + int checkLocationOverlap(const TRange& locationRange, std::vector& usedUniformLocation, const TString symbolName, std::vector& usedUniformName, bool& diffLocation) + { + for (size_t r = 0; r < usedUniformLocation.size(); ++r) { + if (usedUniformName[r] == symbolName) { + diffLocation = true; + return (usedUniformLocation[r].start == locationRange.start && + usedUniformLocation[r].last == locationRange.last) + ? -2 : std::max(locationRange.start, usedUniformLocation[r].start); + } + if (locationRange.overlap(usedUniformLocation[r])) { + // there is a collision; pick one + return std::max(locationRange.start, usedUniformLocation[r].start); + } + } + + return -1; // no collision } inline void operator()(std::pair& entKey) { @@ -310,43 +429,132 @@ struct TSymbolValidater const TType& type = ent1.symbol->getType(); const TString& name = entKey.first; TString mangleName1, mangleName2; - type.appendMangledName(mangleName1); EShLanguage stage = ent1.stage; - if (currentStage != stage) { - preStage = currentStage; - currentStage = stage; - nextStage = EShLangCount; - for (int i = currentStage + 1; i < EShLangCount; i++) { - if (inVarMaps[i] != nullptr) - nextStage = static_cast(i); + EShLanguage preStage, currentStage, nextStage; + + preStage = EShLangCount; + for (int i = stage - 1; i >= 0; i--) { + if (inVarMaps[i] != nullptr) { + preStage = static_cast(i); + break; + } + } + currentStage = stage; + nextStage = EShLangCount; + for (int i = stage + 1; i < EShLangCount; i++) { + if (inVarMaps[i] != nullptr) { + nextStage = static_cast(i); + break; } } + + if (type.getQualifier().isArrayedIo(stage)) { + TType subType(type, 0); + subType.appendMangledName(mangleName1); + } else { + type.appendMangledName(mangleName1); + } + + + // basic checking that symbols match + // more extensive checking in the link stage if (base->getQualifier().storage == EvqVaryingIn) { // validate stage in; if (preStage == EShLangCount) return; + if (TSymbolTable::isBuiltInSymbol(base->getId())) + return; if (outVarMaps[preStage] != nullptr) { auto ent2 = outVarMaps[preStage]->find(name); + uint32_t location = base->getType().getQualifier().layoutLocation; + if (ent2 == outVarMaps[preStage]->end() && + location != glslang::TQualifier::layoutLocationEnd) { + for (auto var = outVarMaps[preStage]->begin(); var != ent2; var++) { + if (var->second.symbol->getType().getQualifier().layoutLocation == location) { + ent2 = var; + break; + } + } + } if (ent2 != outVarMaps[preStage]->end()) { - ent2->second.symbol->getType().appendMangledName(mangleName2); - if (mangleName1 == mangleName2) + auto& type1 = base->getType(); + auto& type2 = ent2->second.symbol->getType(); + hadError = hadError || typeCheck(&type1, &type2, name.c_str(), false); + if (ent2->second.symbol->getType().getQualifier().isArrayedIo(preStage)) { + TType subType(ent2->second.symbol->getType(), 0); + subType.appendMangledName(mangleName2); + } else { + ent2->second.symbol->getType().appendMangledName(mangleName2); + } + + if (mangleName1 == mangleName2) { + // For ES 3.0 only, other versions have no such restrictions + // According to ES 3.0 spec: The type and presence of the interpolation qualifiers and + // storage qualifiers of variables with the same name declared in all linked shaders must + // match, otherwise the link command will fail. + if (profile == EEsProfile && version == 300) { + // Don't need to check smooth qualifier, as it uses the default interpolation mode + if (ent1.stage == EShLangFragment && type1.isBuiltIn() == false) { + if (type1.getQualifier().flat != type2.getQualifier().flat || + type1.getQualifier().nopersp != type2.getQualifier().nopersp) { + TString err = "Interpolation qualifier mismatch : " + entKey.first; + infoSink.info.message(EPrefixInternalError, err.c_str()); + hadError = true; + } + } + } return; + } else { + // Deal with input/output pairs where one is a block member but the other is loose, + // e.g. with ARB_separate_shader_objects + if (type1.getBasicType() == EbtBlock && + type1.isStruct() && !type2.isStruct()) { + // Iterate through block members tracking layout + glslang::TString name; + type1.getStruct()->begin()->type->appendMangledName(name); + if (name == mangleName2 + && type1.getQualifier().layoutLocation == type2.getQualifier().layoutLocation) return; + } + if (type2.getBasicType() == EbtBlock && + type2.isStruct() && !type1.isStruct()) { + // Iterate through block members tracking layout + glslang::TString name; + type2.getStruct()->begin()->type->appendMangledName(name); + if (name == mangleName1 + && type1.getQualifier().layoutLocation == type2.getQualifier().layoutLocation) return; + } TString err = "Invalid In/Out variable type : " + entKey.first; infoSink.info.message(EPrefixInternalError, err.c_str()); hadError = true; } } + else if (!base->getType().isBuiltIn()) { + // According to spec: A link error is generated if any statically referenced input variable + // or block does not have a matching output + if (profile == EEsProfile && ent1.live) { + hadError = true; + TString errorStr = name + ": not been declare as a output variable in pre shader stage."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + } + } return; } } else if (base->getQualifier().storage == EvqVaryingOut) { // validate stage out; if (nextStage == EShLangCount) return; - if (outVarMaps[nextStage] != nullptr) { + if (TSymbolTable::isBuiltInSymbol(base->getId())) + return; + if (inVarMaps[nextStage] != nullptr) { auto ent2 = inVarMaps[nextStage]->find(name); if (ent2 != inVarMaps[nextStage]->end()) { - ent2->second.symbol->getType().appendMangledName(mangleName2); + if (ent2->second.symbol->getType().getQualifier().isArrayedIo(nextStage)) { + TType subType(ent2->second.symbol->getType(), 0); + subType.appendMangledName(mangleName2); + } else { + ent2->second.symbol->getType().appendMangledName(mangleName2); + } if (mangleName1 == mangleName2) return; else { @@ -357,7 +565,7 @@ struct TSymbolValidater } return; } - } else if (base->getQualifier().isUniformOrBuffer() && ! base->getQualifier().isPushConstant()) { + } else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().isPushConstant()) { // validate uniform type; for (int i = 0; i < EShLangCount; i++) { if (i != currentStage && outVarMaps[i] != nullptr) { @@ -365,26 +573,174 @@ struct TSymbolValidater if (ent2 != uniformVarMap[i]->end()) { ent2->second.symbol->getType().appendMangledName(mangleName2); if (mangleName1 != mangleName2) { + ent2->second.symbol->getType().sameElementType(type); TString err = "Invalid Uniform variable type : " + entKey.first; infoSink.info.message(EPrefixInternalError, err.c_str()); hadError = true; } mangleName2.clear(); + + // validate instance name of blocks + if (hadError == false && + base->getType().getBasicType() == EbtBlock && + IsAnonymous(base->getName()) != IsAnonymous(ent2->second.symbol->getName())) { + TString err = "Matched uniform block names must also either all be lacking " + "an instance name or all having an instance name: " + entKey.first; + infoSink.info.message(EPrefixInternalError, err.c_str()); + hadError = true; + } + + // validate uniform block member qualifier and member names + auto& type1 = base->getType(); + auto& type2 = ent2->second.symbol->getType(); + if (hadError == false && base->getType().getBasicType() == EbtBlock) { + hadError = hadError || typeCheck(&type1, &type2, name.c_str(), true); + } + else { + hadError = hadError || typeCheck(&type1, &type2, name.c_str(), false); + } + } + else if (base->getBasicType() == EbtBlock) + { + if (IsAnonymous(base->getName())) + { + // The name of anonymous block member can't same with default uniform variable. + auto blockType1 = base->getType().getStruct(); + for (size_t memberIdx = 0; memberIdx < blockType1->size(); ++memberIdx) { + auto memberName = (*blockType1)[memberIdx].type->getFieldName(); + if (uniformVarMap[i]->find(memberName) != uniformVarMap[i]->end()) + { + TString err = "Invalid Uniform variable name : " + memberName; + infoSink.info.message(EPrefixInternalError, err.c_str()); + hadError = true; + break; + } + } + } } } } } } + TVarLiveMap *inVarMaps[EShLangCount], *outVarMaps[EShLangCount], *uniformVarMap[EShLangCount]; - // Use for mark pre stage, to get more interface symbol information. - EShLanguage preStage, currentStage, nextStage; + // Use for mark current shader stage for resolver TIoMapResolver& resolver; TInfoSink& infoSink; bool& hadError; + EProfile profile; + int version; private: - TSymbolValidater& operator=(TSymbolValidater&); + TSymbolValidater& operator=(TSymbolValidater&) = delete; + + bool qualifierCheck(const TType* const type1, const TType* const type2, const std::string& name, bool isBlock) + { + bool hasError = false; + const TQualifier& qualifier1 = type1->getQualifier(); + const TQualifier& qualifier2 = type2->getQualifier(); + + if (((isBlock == false) && + (type1->getQualifier().storage == EvqUniform && type2->getQualifier().storage == EvqUniform)) || + (type1->getQualifier().storage == EvqGlobal && type2->getQualifier().storage == EvqGlobal)) { + if (qualifier1.precision != qualifier2.precision) { + hasError = true; + std::string errorStr = name + ": have precision conflict cross stage."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + } + if (qualifier1.hasFormat() && qualifier2.hasFormat()) { + if (qualifier1.layoutFormat != qualifier2.layoutFormat) { + hasError = true; + std::string errorStr = name + ": have layout format conflict cross stage."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + } + + } + } + + if (isBlock == true) { + if (qualifier1.layoutPacking != qualifier2.layoutPacking) { + hasError = true; + std::string errorStr = name + ": have layoutPacking conflict cross stage."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + } + if (qualifier1.layoutMatrix != qualifier2.layoutMatrix) { + hasError = true; + std::string errorStr = name + ": have layoutMatrix conflict cross stage."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + } + if (qualifier1.layoutOffset != qualifier2.layoutOffset) { + hasError = true; + std::string errorStr = name + ": have layoutOffset conflict cross stage."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + } + if (qualifier1.layoutAlign != qualifier2.layoutAlign) { + hasError = true; + std::string errorStr = name + ": have layoutAlign conflict cross stage."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + } + } + + return hasError; + } + + bool typeCheck(const TType* const type1, const TType* const type2, const std::string& name, bool isBlock) + { + bool hasError = false; + if (!(type1->isStruct() && type2->isStruct())) { + hasError = hasError || qualifierCheck(type1, type2, name, isBlock); + } + else { + if (type1->getBasicType() == EbtBlock && type2->getBasicType() == EbtBlock) + isBlock = true; + const TTypeList* typeList1 = type1->getStruct(); + const TTypeList* typeList2 = type2->getStruct(); + + std::string newName = name; + size_t memberCount = typeList1->size(); + size_t index2 = 0; + for (size_t index = 0; index < memberCount; index++, index2++) { + // Skip inactive member + if (typeList1->at(index).type->getBasicType() == EbtVoid) + continue; + while (index2 < typeList2->size() && typeList2->at(index2).type->getBasicType() == EbtVoid) { + ++index2; + } + + // TypeList1 has more members in list + if (index2 == typeList2->size()) { + std::string errorStr = name + ": struct mismatch."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + hasError = true; + break; + } + + if (typeList1->at(index).type->getFieldName() != typeList2->at(index2).type->getFieldName()) { + std::string errorStr = name + ": member name mismatch."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + hasError = true; + } + else { + newName = typeList1->at(index).type->getFieldName().c_str(); + } + hasError = hasError || typeCheck(typeList1->at(index).type, typeList2->at(index2).type, newName, isBlock); + } + + while (index2 < typeList2->size()) + { + // TypeList2 has more members + if (typeList2->at(index2).type->getBasicType() != EbtVoid) { + std::string errorStr = name + ": struct mismatch."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + hasError = true; + break; + } + ++index2; + } + } + return hasError; + } }; struct TSlotCollector { @@ -398,29 +754,33 @@ struct TSlotCollector { TInfoSink& infoSink; private: - TSlotCollector& operator=(TSlotCollector&); + TSlotCollector& operator=(TSlotCollector&) = delete; }; TDefaultIoResolverBase::TDefaultIoResolverBase(const TIntermediate& intermediate) - : intermediate(intermediate) + : referenceIntermediate(intermediate) , nextUniformLocation(intermediate.getUniformLocationBase()) , nextInputLocation(0) , nextOutputLocation(0) { memset(stageMask, false, sizeof(bool) * (EShLangCount + 1)); + memset(stageIntermediates, 0, sizeof(TIntermediate*) * (EShLangCount)); + stageIntermediates[intermediate.getStage()] = &intermediate; } -int TDefaultIoResolverBase::getBaseBinding(TResourceType res, unsigned int set) const { - return selectBaseBinding(intermediate.getShiftBinding(res), intermediate.getShiftBindingForSet(res, set)); +int TDefaultIoResolverBase::getBaseBinding(EShLanguage stage, TResourceType res, unsigned int set) const { + return stageIntermediates[stage] ? selectBaseBinding(stageIntermediates[stage]->getShiftBinding(res), stageIntermediates[stage]->getShiftBindingForSet(res, set)) + : selectBaseBinding(referenceIntermediate.getShiftBinding(res), referenceIntermediate.getShiftBindingForSet(res, set)); } -const std::vector& TDefaultIoResolverBase::getResourceSetBinding() const { - return intermediate.getResourceSetBinding(); +const std::vector& TDefaultIoResolverBase::getResourceSetBinding(EShLanguage stage) const { + return stageIntermediates[stage] ? stageIntermediates[stage]->getResourceSetBinding() + : referenceIntermediate.getResourceSetBinding(); } -bool TDefaultIoResolverBase::doAutoBindingMapping() const { return intermediate.getAutoMapBindings(); } +bool TDefaultIoResolverBase::doAutoBindingMapping() const { return referenceIntermediate.getAutoMapBindings(); } -bool TDefaultIoResolverBase::doAutoLocationMapping() const { return intermediate.getAutoMapLocations(); } +bool TDefaultIoResolverBase::doAutoLocationMapping() const { return referenceIntermediate.getAutoMapLocations(); } TDefaultIoResolverBase::TSlotSet::iterator TDefaultIoResolverBase::findSlot(int set, int slot) { return std::lower_bound(slots[set].begin(), slots[set].end(), slot); @@ -456,28 +816,28 @@ int TDefaultIoResolverBase::getFreeSlot(int set, int base, int size) { return reserveSlot(set, base, size); } -int TDefaultIoResolverBase::resolveSet(EShLanguage /*stage*/, TVarEntryInfo& ent) { +int TDefaultIoResolverBase::resolveSet(EShLanguage stage, TVarEntryInfo& ent) { const TType& type = ent.symbol->getType(); if (type.getQualifier().hasSet()) { return ent.newSet = type.getQualifier().layoutSet; } // If a command line or API option requested a single descriptor set, use that (if not overrided by spaceN) - if (getResourceSetBinding().size() == 1) { - return ent.newSet = atoi(getResourceSetBinding()[0].c_str()); + if (getResourceSetBinding(stage).size() == 1) { + return ent.newSet = atoi(getResourceSetBinding(stage)[0].c_str()); } return ent.newSet = 0; } int TDefaultIoResolverBase::resolveUniformLocation(EShLanguage /*stage*/, TVarEntryInfo& ent) { const TType& type = ent.symbol->getType(); - const char* name = ent.symbol->getName().c_str(); + const char* name = ent.symbol->getAccessName().c_str(); // kick out of not doing this if (! doAutoLocationMapping()) { return ent.newLocation = -1; } // no locations added if already present, a built-in variable, a block, or an opaque if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getBasicType() == EbtBlock || - type.isAtomic() || (type.containsOpaque() && intermediate.getSpv().openGl == 0)) { + type.isAtomic() || type.isSpirvType() || (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) { return ent.newLocation = -1; } // no locations on blocks of built-in variables @@ -489,7 +849,7 @@ int TDefaultIoResolverBase::resolveUniformLocation(EShLanguage /*stage*/, TVarEn return ent.newLocation = -1; } } - int location = intermediate.getUniformLocationOverride(name); + int location = referenceIntermediate.getUniformLocationOverride(name); if (location != -1) { return ent.newLocation = location; } @@ -505,8 +865,8 @@ int TDefaultIoResolverBase::resolveInOutLocation(EShLanguage stage, TVarEntryInf return ent.newLocation = -1; } - // no locations added if already present, or a built-in variable - if (type.getQualifier().hasLocation() || type.isBuiltIn()) { + // no locations added if already present, a built-in variable, or a variable with SPIR-V decorate + if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getQualifier().hasSprivDecorate()) { return ent.newLocation = -1; } @@ -579,12 +939,12 @@ TDefaultGlslIoResolver::TDefaultGlslIoResolver(const TIntermediate& intermediate int TDefaultGlslIoResolver::resolveInOutLocation(EShLanguage stage, TVarEntryInfo& ent) { const TType& type = ent.symbol->getType(); - const TString& name = ent.symbol->getName(); + const TString& name = ent.symbol->getAccessName(); if (currentStage != stage) { preStage = currentStage; currentStage = stage; } - // kick out of not doing this + // kick out if not doing this if (! doAutoLocationMapping()) { return ent.newLocation = -1; } @@ -592,8 +952,8 @@ int TDefaultGlslIoResolver::resolveInOutLocation(EShLanguage stage, TVarEntryInf if (type.getQualifier().hasLocation()) { return ent.newLocation = type.getQualifier().layoutLocation; } - // no locations added if already present, or a built-in variable - if (type.isBuiltIn()) { + // no locations added if already present, a built-in variable, or a variable with SPIR-V decorate + if (type.isBuiltIn() || type.getQualifier().hasSprivDecorate()) { return ent.newLocation = -1; } // no locations on blocks of built-in variables @@ -627,7 +987,7 @@ int TDefaultGlslIoResolver::resolveInOutLocation(EShLanguage stage, TVarEntryInf TVarSlotMap::iterator iter = storageSlotMap[resourceKey].find(name); if (iter != storageSlotMap[resourceKey].end()) { // If interface resource be found, set it has location and this symbol's new location - // equal the symbol's explicit location declarated in pre or next stage. + // equal the symbol's explicit location declaration in pre or next stage. // // vs: out vec4 a; // fs: layout(..., location = 3,...) in vec4 a; @@ -663,7 +1023,7 @@ int TDefaultGlslIoResolver::resolveInOutLocation(EShLanguage stage, TVarEntryInf int TDefaultGlslIoResolver::resolveUniformLocation(EShLanguage /*stage*/, TVarEntryInfo& ent) { const TType& type = ent.symbol->getType(); - const TString& name = ent.symbol->getName(); + const TString& name = ent.symbol->getAccessName(); // kick out of not doing this if (! doAutoLocationMapping()) { return ent.newLocation = -1; @@ -674,7 +1034,8 @@ int TDefaultGlslIoResolver::resolveUniformLocation(EShLanguage /*stage*/, TVarEn } else { // no locations added if already present, a built-in variable, a block, or an opaque if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getBasicType() == EbtBlock || - type.isAtomic() || (type.containsOpaque() && intermediate.getSpv().openGl == 0)) { + type.isAtomic() || type.isSpirvType() || + (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) { return ent.newLocation = -1; } // no locations on blocks of built-in variables @@ -687,7 +1048,7 @@ int TDefaultGlslIoResolver::resolveUniformLocation(EShLanguage /*stage*/, TVarEn } } } - int location = intermediate.getUniformLocationOverride(name.c_str()); + int location = referenceIntermediate.getUniformLocationOverride(name.c_str()); if (location != -1) { return ent.newLocation = location; } @@ -706,7 +1067,7 @@ int TDefaultGlslIoResolver::resolveUniformLocation(EShLanguage /*stage*/, TVarEn TVarSlotMap::iterator iter = slotMap.find(name); if (iter != slotMap.end()) { // If uniform resource be found, set it has location and this symbol's new location - // equal the uniform's explicit location declarated in other stage. + // equal the uniform's explicit location declaration in other stage. // // vs: uniform vec4 a; // fs: layout(..., location = 3,...) uniform vec4 a; @@ -714,7 +1075,7 @@ int TDefaultGlslIoResolver::resolveUniformLocation(EShLanguage /*stage*/, TVarEn location = iter->second; } if (! hasLocation) { - // No explicit location declaraten in other stage. + // No explicit location declaration in other stage. // So we should find a new slot for this uniform. // // vs: uniform vec4 a; @@ -723,7 +1084,7 @@ int TDefaultGlslIoResolver::resolveUniformLocation(EShLanguage /*stage*/, TVarEn storageSlotMap[resourceKey][name] = location; } } else { - // the first uniform declarated in a program. + // the first uniform declaration in a program. TVarSlotMap varSlotMap; location = getFreeSlot(resourceKey, 0, size); varSlotMap[name] = location; @@ -732,11 +1093,11 @@ int TDefaultGlslIoResolver::resolveUniformLocation(EShLanguage /*stage*/, TVarEn return ent.newLocation = location; } -int TDefaultGlslIoResolver::resolveBinding(EShLanguage /*stage*/, TVarEntryInfo& ent) { +int TDefaultGlslIoResolver::resolveBinding(EShLanguage stage, TVarEntryInfo& ent) { const TType& type = ent.symbol->getType(); - const TString& name = ent.symbol->getName(); - // On OpenGL arrays of opaque types take a seperate binding for each element - int numBindings = intermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1; + const TString& name = ent.symbol->getAccessName(); + // On OpenGL arrays of opaque types take a separate binding for each element + int numBindings = referenceIntermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1; TResourceType resource = getResourceType(type); // don't need to handle uniform symbol, it will be handled in resolveUniformLocation if (resource == EResUbo && type.getBasicType() != EbtBlock) { @@ -745,30 +1106,32 @@ int TDefaultGlslIoResolver::resolveBinding(EShLanguage /*stage*/, TVarEntryInfo& // There is no 'set' qualifier in OpenGL shading language, each resource has its own // binding name space, so remap the 'set' to resource type which make each resource // binding is valid from 0 to MAX_XXRESOURCE_BINDINGS - int set = resource; + int set = referenceIntermediate.getSpv().openGl != 0 ? resource : ent.newSet; + int resourceKey = set; if (resource < EResCount) { if (type.getQualifier().hasBinding()) { - ent.newBinding = reserveSlot(set, getBaseBinding(resource, set) + type.getQualifier().layoutBinding, numBindings); - return ent.newBinding; - } else if (ent.live && doAutoBindingMapping()) { + int newBinding = reserveSlot(resourceKey, getBaseBinding(stage, resource, set) + type.getQualifier().layoutBinding, numBindings); + return ent.newBinding = newBinding; + + } else { // The resource in current stage is not declared with binding, but it is possible declared // with explicit binding in other stages, find the resourceSlotMap firstly to check whether // the resource has binding, don't need to allocate if it already has a binding bool hasBinding = false; - if (! resourceSlotMap[resource].empty()) { - TVarSlotMap::iterator iter = resourceSlotMap[resource].find(name); - if (iter != resourceSlotMap[resource].end()) { + ent.newBinding = -1; // leave as -1 if it isn't set below + + if (! resourceSlotMap[resourceKey].empty()) { + TVarSlotMap::iterator iter = resourceSlotMap[resourceKey].find(name); + if (iter != resourceSlotMap[resourceKey].end()) { hasBinding = true; ent.newBinding = iter->second; } } - if (! hasBinding) { - TVarSlotMap varSlotMap; + if (!hasBinding && (ent.live && doAutoBindingMapping())) { // find free slot, the caller did make sure it passes all vars with binding // first and now all are passed that do not have a binding and needs one - int binding = getFreeSlot(resource, getBaseBinding(resource, set), numBindings); - varSlotMap[name] = binding; - resourceSlotMap[resource] = varSlotMap; + int binding = getFreeSlot(resourceKey, getBaseBinding(stage, resource, set), numBindings); + resourceSlotMap[resourceKey][name] = binding; ent.newBinding = binding; } return ent.newBinding; @@ -809,7 +1172,7 @@ void TDefaultGlslIoResolver::endCollect(EShLanguage /*stage*/) { void TDefaultGlslIoResolver::reserverStorageSlot(TVarEntryInfo& ent, TInfoSink& infoSink) { const TType& type = ent.symbol->getType(); - const TString& name = ent.symbol->getName(); + const TString& name = ent.symbol->getAccessName(); TStorageQualifier storage = type.getQualifier().storage; EShLanguage stage(EShLangCount); switch (storage) { @@ -831,6 +1194,7 @@ void TDefaultGlslIoResolver::reserverStorageSlot(TVarEntryInfo& ent, TInfoSink& if (iter->second != location) { TString errorMsg = "Invalid location: " + name; infoSink.info.message(EPrefixInternalError, errorMsg.c_str()); + hasError = true; } } } @@ -856,6 +1220,7 @@ void TDefaultGlslIoResolver::reserverStorageSlot(TVarEntryInfo& ent, TInfoSink& if (iter->second != location) { TString errorMsg = "Invalid location: " + name; infoSink.info.message(EPrefixInternalError, errorMsg.c_str()); + hasError = true; } } } @@ -867,23 +1232,28 @@ void TDefaultGlslIoResolver::reserverStorageSlot(TVarEntryInfo& ent, TInfoSink& void TDefaultGlslIoResolver::reserverResourceSlot(TVarEntryInfo& ent, TInfoSink& infoSink) { const TType& type = ent.symbol->getType(); - const TString& name = ent.symbol->getName(); - int resource = getResourceType(type); + const TString& name = ent.symbol->getAccessName(); + TResourceType resource = getResourceType(type); + int set = referenceIntermediate.getSpv().openGl != 0 ? resource : resolveSet(ent.stage, ent); + int resourceKey = set; + if (type.getQualifier().hasBinding()) { - TVarSlotMap& varSlotMap = resourceSlotMap[resource]; + TVarSlotMap& varSlotMap = resourceSlotMap[resourceKey]; TVarSlotMap::iterator iter = varSlotMap.find(name); - int binding = type.getQualifier().layoutBinding; + int binding = type.getQualifier().layoutBinding + getBaseBinding(ent.stage, resource, set); + if (iter == varSlotMap.end()) { // Reserve the slots for the ubo, ssbo and opaques who has explicit binding - int numBindings = type.isSizedArray() ? type.getCumulativeArraySize() : 1; + int numBindings = referenceIntermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1; varSlotMap[name] = binding; - reserveSlot(resource, binding, numBindings); + reserveSlot(resourceKey, binding, numBindings); } else { // Allocate binding by name for OpenGL driver, so the resource in different // stages should be declared with the same binding if (iter->second != binding) { TString errorMsg = "Invalid binding: " + name; infoSink.info.message(EPrefixInternalError, errorMsg.c_str()); + hasError = true; } } } @@ -925,20 +1295,20 @@ struct TDefaultIoResolver : public TDefaultIoResolverBase { return EResCount; } - int resolveBinding(EShLanguage /*stage*/, TVarEntryInfo& ent) override { + int resolveBinding(EShLanguage stage, TVarEntryInfo& ent) override { const TType& type = ent.symbol->getType(); const int set = getLayoutSet(type); // On OpenGL arrays of opaque types take a seperate binding for each element - int numBindings = intermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1; + int numBindings = referenceIntermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1; TResourceType resource = getResourceType(type); if (resource < EResCount) { if (type.getQualifier().hasBinding()) { return ent.newBinding = reserveSlot( - set, getBaseBinding(resource, set) + type.getQualifier().layoutBinding, numBindings); + set, getBaseBinding(stage, resource, set) + type.getQualifier().layoutBinding, numBindings); } else if (ent.live && doAutoBindingMapping()) { // find free slot, the caller did make sure it passes all vars with binding // first and now all are passed that do not have a binding and needs one - return ent.newBinding = getFreeSlot(set, getBaseBinding(resource, set), numBindings); + return ent.newBinding = getFreeSlot(set, getBaseBinding(stage, resource, set), numBindings); } } return ent.newBinding = -1; @@ -1010,17 +1380,17 @@ struct TDefaultHlslIoResolver : public TDefaultIoResolverBase { return EResCount; } - int resolveBinding(EShLanguage /*stage*/, TVarEntryInfo& ent) override { + int resolveBinding(EShLanguage stage, TVarEntryInfo& ent) override { const TType& type = ent.symbol->getType(); const int set = getLayoutSet(type); TResourceType resource = getResourceType(type); if (resource < EResCount) { if (type.getQualifier().hasBinding()) { - return ent.newBinding = reserveSlot(set, getBaseBinding(resource, set) + type.getQualifier().layoutBinding); + return ent.newBinding = reserveSlot(set, getBaseBinding(stage, resource, set) + type.getQualifier().layoutBinding); } else if (ent.live && doAutoBindingMapping()) { // find free slot, the caller did make sure it passes all vars with binding // first and now all are passed that do not have a binding and needs one - return ent.newBinding = getFreeSlot(set, getBaseBinding(resource, set)); + return ent.newBinding = getFreeSlot(set, getBaseBinding(stage, resource, set)); } } return ent.newBinding = -1; @@ -1059,10 +1429,10 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSi else resolver = &defaultResolver; } - resolver->addStage(stage); #else resolver = &defaultResolver; #endif + resolver->addStage(stage, intermediate); TVarLiveMap inVarMap, outVarMap, uniformVarMap; TVarLiveVector inVector, outVector, uniformVector; @@ -1070,31 +1440,30 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSi TVarGatherTraverser iter_binding_live(intermediate, false, inVarMap, outVarMap, uniformVarMap); root->traverse(&iter_binding_all); iter_binding_live.pushFunction(intermediate.getEntryPointMangledName().c_str()); - while (! iter_binding_live.functions.empty()) { - TIntermNode* function = iter_binding_live.functions.back(); - iter_binding_live.functions.pop_back(); - function->traverse(&iter_binding_live); + while (! iter_binding_live.destinations.empty()) { + TIntermNode* destination = iter_binding_live.destinations.back(); + iter_binding_live.destinations.pop_back(); + destination->traverse(&iter_binding_live); } + // sort entries by priority. see TVarEntryInfo::TOrderByPriority for info. - std::for_each(inVarMap.begin(), inVarMap.end(), - [&inVector](TVarLivePair p) { inVector.push_back(p); }); + for (auto& var : inVarMap) { inVector.push_back(var); } std::sort(inVector.begin(), inVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); - std::for_each(outVarMap.begin(), outVarMap.end(), - [&outVector](TVarLivePair p) { outVector.push_back(p); }); + for (auto& var : outVarMap) { outVector.push_back(var); } std::sort(outVector.begin(), outVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); - std::for_each(uniformVarMap.begin(), uniformVarMap.end(), - [&uniformVector](TVarLivePair p) { uniformVector.push_back(p); }); + for (auto& var : uniformVarMap) { uniformVector.push_back(var); } std::sort(uniformVector.begin(), uniformVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); bool hadError = false; + TVarLiveMap* dummyUniformVarMap[EShLangCount] = {}; TNotifyInOutAdaptor inOutNotify(stage, *resolver); TNotifyUniformAdaptor uniformNotify(stage, *resolver); - TResolverUniformAdaptor uniformResolve(stage, *resolver, infoSink, hadError); + TResolverUniformAdaptor uniformResolve(stage, *resolver, dummyUniformVarMap, infoSink, hadError); TResolverInOutAdaptor inOutResolve(stage, *resolver, infoSink, hadError); resolver->beginNotifications(stage); std::for_each(inVector.begin(), inVector.end(), inOutNotify); @@ -1102,22 +1471,22 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSi std::for_each(uniformVector.begin(), uniformVector.end(), uniformNotify); resolver->endNotifications(stage); resolver->beginResolve(stage); - std::for_each(inVector.begin(), inVector.end(), inOutResolve); + for (auto& var : inVector) { inOutResolve(var); } std::for_each(inVector.begin(), inVector.end(), [&inVarMap](TVarLivePair p) { - auto at = inVarMap.find(p.second.symbol->getName()); - if (at != inVarMap.end()) + auto at = inVarMap.find(p.second.symbol->getAccessName()); + if (at != inVarMap.end() && p.second.id == at->second.id) at->second = p.second; }); - std::for_each(outVector.begin(), outVector.end(), inOutResolve); + for (auto& var : outVector) { inOutResolve(var); } std::for_each(outVector.begin(), outVector.end(), [&outVarMap](TVarLivePair p) { - auto at = outVarMap.find(p.second.symbol->getName()); - if (at != outVarMap.end()) + auto at = outVarMap.find(p.second.symbol->getAccessName()); + if (at != outVarMap.end() && p.second.id == at->second.id) at->second = p.second; }); std::for_each(uniformVector.begin(), uniformVector.end(), uniformResolve); std::for_each(uniformVector.begin(), uniformVector.end(), [&uniformVarMap](TVarLivePair p) { - auto at = uniformVarMap.find(p.second.symbol->getName()); - if (at != uniformVarMap.end()) + auto at = uniformVarMap.find(p.second.symbol->getAccessName()); + if (at != uniformVarMap.end() && p.second.id == at->second.id) at->second = p.second; }); resolver->endResolve(stage); @@ -1133,9 +1502,14 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSi // // Returns false if the input is too malformed to do this. bool TGlslIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSink& infoSink, TIoMapResolver* resolver) { + bool somethingToDo = !intermediate.getResourceSetBinding().empty() || + intermediate.getAutoMapBindings() || + intermediate.getAutoMapLocations(); + + // Profile and version are use for symbol validate. + profile = intermediate.getProfile(); + version = intermediate.getVersion(); - bool somethingToDo = ! intermediate.getResourceSetBinding().empty() || intermediate.getAutoMapBindings() || - intermediate.getAutoMapLocations(); // Restrict the stricter condition to further check 'somethingToDo' only if 'somethingToDo' has not been set, reduce // unnecessary or insignificant for-loop operation after 'somethingToDo' have been true. for (int res = 0; (res < EResCount && !somethingToDo); ++res) { @@ -1154,22 +1528,34 @@ bool TGlslIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TIn } // if no resolver is provided, use the default resolver with the given shifts and auto map settings TDefaultGlslIoResolver defaultResolver(intermediate); +#ifdef ENABLE_HLSL + TDefaultHlslIoResolver defaultHlslResolver(intermediate); + if (resolver == nullptr) { + // TODO: use a passed in IO mapper for this + if (intermediate.usingHlslIoMapping()) + resolver = &defaultHlslResolver; + else + resolver = &defaultResolver; + } +#else if (resolver == nullptr) { resolver = &defaultResolver; } - resolver->addStage(stage); - inVarMaps[stage] = new TVarLiveMap, outVarMaps[stage] = new TVarLiveMap(), uniformVarMap[stage] = new TVarLiveMap(); +#endif + resolver->addStage(stage, intermediate); + inVarMaps[stage] = new TVarLiveMap(); outVarMaps[stage] = new TVarLiveMap(); uniformVarMap[stage] = new TVarLiveMap(); TVarGatherTraverser iter_binding_all(intermediate, true, *inVarMaps[stage], *outVarMaps[stage], *uniformVarMap[stage]); TVarGatherTraverser iter_binding_live(intermediate, false, *inVarMaps[stage], *outVarMaps[stage], *uniformVarMap[stage]); root->traverse(&iter_binding_all); iter_binding_live.pushFunction(intermediate.getEntryPointMangledName().c_str()); - while (! iter_binding_live.functions.empty()) { - TIntermNode* function = iter_binding_live.functions.back(); - iter_binding_live.functions.pop_back(); - function->traverse(&iter_binding_live); + while (! iter_binding_live.destinations.empty()) { + TIntermNode* destination = iter_binding_live.destinations.back(); + iter_binding_live.destinations.pop_back(); + destination->traverse(&iter_binding_live); } + TNotifyInOutAdaptor inOutNotify(stage, *resolver); TNotifyUniformAdaptor uniformNotify(stage, *resolver); // Resolve current stage input symbol location with previous stage output here, @@ -1194,47 +1580,125 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) { resolver->endResolve(EShLangCount); if (!hadError) { //Resolve uniform location, ubo/ssbo/opaque bindings across stages - TResolverUniformAdaptor uniformResolve(EShLangCount, *resolver, infoSink, hadError); + TResolverUniformAdaptor uniformResolve(EShLangCount, *resolver, uniformVarMap, infoSink, hadError); TResolverInOutAdaptor inOutResolve(EShLangCount, *resolver, infoSink, hadError); - TSymbolValidater symbolValidater(*resolver, infoSink, inVarMaps, outVarMaps, uniformVarMap, hadError); + TSymbolValidater symbolValidater(*resolver, infoSink, inVarMaps, + outVarMaps, uniformVarMap, hadError, profile, version); + + TVarLiveVector inVectors[EShLangCount]; + TVarLiveVector outVectors[EShLangCount]; TVarLiveVector uniformVector; + resolver->beginResolve(EShLangCount); for (int stage = EShLangVertex; stage < EShLangCount; stage++) { if (inVarMaps[stage] != nullptr) { inOutResolve.setStage(EShLanguage(stage)); - std::for_each(inVarMaps[stage]->begin(), inVarMaps[stage]->end(), symbolValidater); - std::for_each(inVarMaps[stage]->begin(), inVarMaps[stage]->end(), inOutResolve); - std::for_each(outVarMaps[stage]->begin(), outVarMaps[stage]->end(), symbolValidater); - std::for_each(outVarMaps[stage]->begin(), outVarMaps[stage]->end(), inOutResolve); + + // copy vars into a sorted list + std::for_each(inVarMaps[stage]->begin(), inVarMaps[stage]->end(), + [&inVectors, stage](TVarLivePair p) { inVectors[stage].push_back(p); }); + std::sort(inVectors[stage].begin(), inVectors[stage].end(), + [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { + return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); + }); + + std::for_each(outVarMaps[stage]->begin(), outVarMaps[stage]->end(), + [&outVectors, stage](TVarLivePair p) { outVectors[stage].push_back(p); }); + std::sort(outVectors[stage].begin(), outVectors[stage].end(), + [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { + return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); + }); + + for (auto& var : inVectors[stage]) { symbolValidater(var); } + for (auto& var : inVectors[stage]) { inOutResolve(var); } + for (auto& var : outVectors[stage]) { symbolValidater(var); } + for (auto& var : outVectors[stage]) { inOutResolve(var); } + + // copy results back into maps + std::for_each(inVectors[stage].begin(), inVectors[stage].end(), + [this, stage](TVarLivePair p) { + auto at = inVarMaps[stage]->find(p.first); + if (at != inVarMaps[stage]->end()) + at->second = p.second; + }); + + std::for_each(outVectors[stage].begin(), outVectors[stage].end(), + [this, stage](TVarLivePair p) { + auto at = outVarMaps[stage]->find(p.first); + if (at != outVarMaps[stage]->end()) + at->second = p.second; + }); + } if (uniformVarMap[stage] != nullptr) { uniformResolve.setStage(EShLanguage(stage)); - // sort entries by priority. see TVarEntryInfo::TOrderByPriority for info. - std::for_each(uniformVarMap[stage]->begin(), uniformVarMap[stage]->end(), - [&uniformVector](TVarLivePair p) { uniformVector.push_back(p); }); + for (auto& var : *(uniformVarMap[stage])) { uniformVector.push_back(var); } } } std::sort(uniformVector.begin(), uniformVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { - return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); + return TVarEntryInfo::TOrderByPriorityAndLive()(p1.second, p2.second); }); - std::for_each(uniformVector.begin(), uniformVector.end(), symbolValidater); - std::for_each(uniformVector.begin(), uniformVector.end(), uniformResolve); + for (auto& var : uniformVector) { symbolValidater(var); } + for (auto& var : uniformVector) { uniformResolve(var); } std::sort(uniformVector.begin(), uniformVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); resolver->endResolve(EShLangCount); + if (autoPushConstantBlockName.length()) { + bool upgraded = false; + for (size_t stage = 0; stage < EShLangCount; stage++) { + if (intermediates[stage] != nullptr) { + TVarLiveMap** pUniformVarMap = uniformResolve.uniformVarMap; + auto at = pUniformVarMap[stage]->find(autoPushConstantBlockName); + if (at == pUniformVarMap[stage]->end()) + continue; + TQualifier& qualifier = at->second.symbol->getQualifier(); + if (!qualifier.isUniform()) + continue; + TType& t = at->second.symbol->getWritableType(); + int size, stride; + TIntermediate::getBaseAlignment(t, size, stride, autoPushConstantBlockPacking, + qualifier.layoutMatrix == ElmRowMajor); + if (size <= int(autoPushConstantMaxSize)) { + qualifier.setBlockStorage(EbsPushConstant); + qualifier.layoutPacking = autoPushConstantBlockPacking; + // Push constants don't have set/binding etc. decorations, remove those. + qualifier.layoutSet = TQualifier::layoutSetEnd; + at->second.clearNewAssignments(); + + upgraded = true; + } + } + } + // If it's been upgraded to push_constant, then remove it from the uniformVector + // so it doesn't get a set/binding assigned to it. + if (upgraded) { + while (1) { + auto at = std::find_if(uniformVector.begin(), uniformVector.end(), + [this](const TVarLivePair& p) { return p.first == autoPushConstantBlockName; }); + if (at != uniformVector.end()) + uniformVector.erase(at); + else + break; + } + } + } for (size_t stage = 0; stage < EShLangCount; stage++) { if (intermediates[stage] != nullptr) { // traverse each stage, set new location to each input/output and unifom symbol, set new binding to // ubo, ssbo and opaque symbols - TVarLiveMap** pUniformVarMap = uniformVarMap; + TVarLiveMap** pUniformVarMap = uniformResolve.uniformVarMap; std::for_each(uniformVector.begin(), uniformVector.end(), [pUniformVarMap, stage](TVarLivePair p) { - auto at = pUniformVarMap[stage]->find(p.second.symbol->getName()); - if (at != pUniformVarMap[stage]->end()) + auto at = pUniformVarMap[stage]->find(p.second.symbol->getAccessName()); + if (at != pUniformVarMap[stage]->end() && at->second.id == p.second.id){ + int resolvedBinding = at->second.newBinding; at->second = p.second; + if (resolvedBinding > 0) + at->second.newBinding = resolvedBinding; + } }); TVarSetTraverser iter_iomap(*intermediates[stage], *inVarMaps[stage], *outVarMaps[stage], - *uniformVarMap[stage]); + *uniformResolve.uniformVarMap[stage]); intermediates[stage]->getTreeRoot()->traverse(&iter_iomap); } } @@ -1246,4 +1710,4 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) { } // end namespace glslang -#endif // GLSLANG_WEB +#endif // !GLSLANG_WEB && !GLSLANG_ANGLE diff --git a/Externals/glslang/glslang/MachineIndependent/iomapper.h b/Externals/glslang/glslang/MachineIndependent/iomapper.h index 684e88d57100..ba7bc3bbc7fc 100644 --- a/Externals/glslang/glslang/MachineIndependent/iomapper.h +++ b/Externals/glslang/glslang/MachineIndependent/iomapper.h @@ -33,7 +33,7 @@ // POSSIBILITY OF SUCH DAMAGE. // -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) #ifndef _IOMAPPER_INCLUDED #define _IOMAPPER_INCLUDED @@ -52,7 +52,7 @@ namespace glslang { class TIntermediate; struct TVarEntryInfo { - int id; + long long id; TIntermSymbol* symbol; bool live; int newBinding; @@ -61,6 +61,15 @@ struct TVarEntryInfo { int newComponent; int newIndex; EShLanguage stage; + + void clearNewAssignments() { + newBinding = -1; + newSet = -1; + newLocation = -1; + newComponent = -1; + newIndex = -1; + } + struct TOrderById { inline bool operator()(const TVarEntryInfo& l, const TVarEntryInfo& r) { return l.id < r.id; } }; @@ -87,6 +96,35 @@ struct TVarEntryInfo { return lPoints > rPoints; } }; + + struct TOrderByPriorityAndLive { + // ordering: + // 1) do live variables first + // 2) has both binding and set + // 3) has binding but no set + // 4) has no binding but set + // 5) has no binding and no set + inline bool operator()(const TVarEntryInfo& l, const TVarEntryInfo& r) { + + const TQualifier& lq = l.symbol->getQualifier(); + const TQualifier& rq = r.symbol->getQualifier(); + + // simple rules: + // has binding gives 2 points + // has set gives 1 point + // who has the most points is more important. + int lPoints = (lq.hasBinding() ? 2 : 0) + (lq.hasSet() ? 1 : 0); + int rPoints = (rq.hasBinding() ? 2 : 0) + (rq.hasSet() ? 1 : 0); + + if (l.live != r.live) + return l.live > r.live; + + if (lPoints != rPoints) + return lPoints > rPoints; + + return l.id < r.id; + } + }; }; // Base class for shared TIoMapResolver services, used by several derivations. @@ -107,8 +145,8 @@ struct TDefaultIoResolverBase : public glslang::TIoMapResolver { void endCollect(EShLanguage) override {} void reserverResourceSlot(TVarEntryInfo& /*ent*/, TInfoSink& /*infoSink*/) override {} void reserverStorageSlot(TVarEntryInfo& /*ent*/, TInfoSink& /*infoSink*/) override {} - int getBaseBinding(TResourceType res, unsigned int set) const; - const std::vector& getResourceSetBinding() const; + int getBaseBinding(EShLanguage stage, TResourceType res, unsigned int set) const; + const std::vector& getResourceSetBinding(EShLanguage stage) const; virtual TResourceType getResourceType(const glslang::TType& type) = 0; bool doAutoBindingMapping() const; bool doAutoLocationMapping() const; @@ -122,22 +160,27 @@ struct TDefaultIoResolverBase : public glslang::TIoMapResolver { int resolveInOutLocation(EShLanguage stage, TVarEntryInfo& ent) override; int resolveInOutComponent(EShLanguage /*stage*/, TVarEntryInfo& ent) override; int resolveInOutIndex(EShLanguage /*stage*/, TVarEntryInfo& ent) override; - void addStage(EShLanguage stage) override { - if (stage < EShLangCount) + void addStage(EShLanguage stage, TIntermediate& stageIntermediate) override { + if (stage < EShLangCount) { stageMask[stage] = true; + stageIntermediates[stage] = &stageIntermediate; + } } uint32_t computeTypeLocationSize(const TType& type, EShLanguage stage); TSlotSetMap slots; + bool hasError = false; protected: TDefaultIoResolverBase(TDefaultIoResolverBase&); TDefaultIoResolverBase& operator=(TDefaultIoResolverBase&); - const TIntermediate& intermediate; + const TIntermediate& referenceIntermediate; int nextUniformLocation; int nextInputLocation; int nextOutputLocation; bool stageMask[EShLangCount + 1]; + const TIntermediate* stageIntermediates[EShLangCount]; + // Return descriptor set specific base if there is one, and the generic base otherwise. int selectBaseBinding(int base, int descriptorSetBase) const { return descriptorSetBase != -1 ? descriptorSetBase : base; @@ -185,7 +228,7 @@ struct TDefaultIoResolverBase : public glslang::TIoMapResolver { } }; -// Defaulf I/O resolver for OpenGL +// Default I/O resolver for OpenGL struct TDefaultGlslIoResolver : public TDefaultIoResolverBase { public: typedef std::map TVarSlotMap; // @@ -237,12 +280,13 @@ typedef std::map TVarLiveMap; // In the future, if the vc++ compiler can handle such a situation, // this part of the code will be removed. struct TVarLivePair : std::pair { - TVarLivePair(std::pair& _Right) : pair(_Right.first, _Right.second) {} + TVarLivePair(const std::pair& _Right) : pair(_Right.first, _Right.second) {} TVarLivePair& operator=(const TVarLivePair& _Right) { const_cast(first) = _Right.first; second = _Right.second; return (*this); } + TVarLivePair(const TVarLivePair& src) : pair(src) { } }; typedef std::vector TVarLiveVector; @@ -256,7 +300,7 @@ class TIoMapper { bool virtual doMap(TIoMapResolver*, TInfoSink&) { return true; } }; -// I/O mapper for OpenGL +// I/O mapper for GLSL class TGlslIoMapper : public TIoMapper { public: TGlslIoMapper() { @@ -264,6 +308,10 @@ class TGlslIoMapper : public TIoMapper { memset(outVarMaps, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1)); memset(uniformVarMap, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1)); memset(intermediates, 0, sizeof(TIntermediate*) * (EShLangCount + 1)); + profile = ENoProfile; + version = 0; + autoPushConstantMaxSize = 128; + autoPushConstantBlockPacking = ElpStd430; } virtual ~TGlslIoMapper() { for (size_t stage = 0; stage < EShLangCount; stage++) { @@ -283,6 +331,13 @@ class TGlslIoMapper : public TIoMapper { intermediates[stage] = nullptr; } } + // If set, the uniform block with the given name will be changed to be backed by + // push_constant if it's size is <= maxSize + void setAutoPushConstantBlock(const char* name, unsigned int maxSize, TLayoutPacking packing) { + autoPushConstantBlockName = name; + autoPushConstantMaxSize = maxSize; + autoPushConstantBlockPacking = packing; + } // grow the reflection stage by stage bool addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*) override; bool doMap(TIoMapResolver*, TInfoSink&) override; @@ -290,10 +345,17 @@ class TGlslIoMapper : public TIoMapper { *uniformVarMap[EShLangCount]; TIntermediate* intermediates[EShLangCount]; bool hadError = false; + EProfile profile; + int version; + +private: + TString autoPushConstantBlockName; + unsigned int autoPushConstantMaxSize; + TLayoutPacking autoPushConstantBlockPacking; }; } // end namespace glslang #endif // _IOMAPPER_INCLUDED -#endif // GLSLANG_WEB +#endif // !GLSLANG_WEB && !GLSLANG_ANGLE diff --git a/Externals/glslang/glslang/MachineIndependent/limits.cpp b/Externals/glslang/glslang/MachineIndependent/limits.cpp index 51d9300341b7..391570579da1 100644 --- a/Externals/glslang/glslang/MachineIndependent/limits.cpp +++ b/Externals/glslang/glslang/MachineIndependent/limits.cpp @@ -63,14 +63,14 @@ namespace glslang { class TInductiveTraverser : public TIntermTraverser { public: - TInductiveTraverser(int id, TSymbolTable& st) + TInductiveTraverser(long long id, TSymbolTable& st) : loopId(id), symbolTable(st), bad(false) { } virtual bool visitBinary(TVisit, TIntermBinary* node); virtual bool visitUnary(TVisit, TIntermUnary* node); virtual bool visitAggregate(TVisit, TIntermAggregate* node); - int loopId; // unique ID of the symbol that's the loop inductive variable + long long loopId; // unique ID of the symbol that's the loop inductive variable TSymbolTable& symbolTable; bool bad; TSourceLoc badLoc; @@ -129,7 +129,7 @@ bool TInductiveTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* n // // External function to call for loop check. // -void TParseContext::inductiveLoopBodyCheck(TIntermNode* body, int loopId, TSymbolTable& symbolTable) +void TParseContext::inductiveLoopBodyCheck(TIntermNode* body, long long loopId, TSymbolTable& symbolTable) { TInductiveTraverser it(loopId, symbolTable); diff --git a/Externals/glslang/glslang/MachineIndependent/linkValidate.cpp b/Externals/glslang/glslang/MachineIndependent/linkValidate.cpp index fe51ec93ff15..9b45570e205b 100644 --- a/Externals/glslang/glslang/MachineIndependent/linkValidate.cpp +++ b/Externals/glslang/glslang/MachineIndependent/linkValidate.cpp @@ -48,28 +48,35 @@ #include "localintermediate.h" #include "../Include/InfoSink.h" +#include "SymbolTable.h" namespace glslang { // // Link-time error emitter. // -void TIntermediate::error(TInfoSink& infoSink, const char* message) +void TIntermediate::error(TInfoSink& infoSink, const char* message, EShLanguage unitStage) { #ifndef GLSLANG_WEB infoSink.info.prefix(EPrefixError); - infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; + if (unitStage < EShLangCount) + infoSink.info << "Linking " << StageName(getStage()) << " and " << StageName(unitStage) << " stages: " << message << "\n"; + else + infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; #endif ++numErrors; } // Link-time warning. -void TIntermediate::warn(TInfoSink& infoSink, const char* message) +void TIntermediate::warn(TInfoSink& infoSink, const char* message, EShLanguage unitStage) { #ifndef GLSLANG_WEB infoSink.info.prefix(EPrefixWarning); - infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; + if (unitStage < EShLangCount) + infoSink.info << "Linking " << StageName(language) << " and " << StageName(unitStage) << " stages: " << message << "\n"; + else + infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; #endif } @@ -82,13 +89,63 @@ void TIntermediate::warn(TInfoSink& infoSink, const char* message) // void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit) { -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) mergeCallGraphs(infoSink, unit); mergeModes(infoSink, unit); mergeTrees(infoSink, unit); #endif } +// +// check that link objects between stages +// +void TIntermediate::mergeUniformObjects(TInfoSink& infoSink, TIntermediate& unit) { + if (unit.treeRoot == nullptr || treeRoot == nullptr) + return; + + // Get the linker-object lists + TIntermSequence& linkerObjects = findLinkerObjects()->getSequence(); + TIntermSequence unitLinkerObjects = unit.findLinkerObjects()->getSequence(); + + // filter unitLinkerObjects to only contain uniforms + auto end = std::remove_if(unitLinkerObjects.begin(), unitLinkerObjects.end(), + [](TIntermNode* node) {return node->getAsSymbolNode()->getQualifier().storage != EvqUniform && + node->getAsSymbolNode()->getQualifier().storage != EvqBuffer; }); + unitLinkerObjects.resize(end - unitLinkerObjects.begin()); + + // merge uniforms and do error checking + bool mergeExistingOnly = false; + mergeGlobalUniformBlocks(infoSink, unit, mergeExistingOnly); + mergeLinkerObjects(infoSink, linkerObjects, unitLinkerObjects, unit.getStage()); +} + +// +// do error checking on the shader boundary in / out vars +// +void TIntermediate::checkStageIO(TInfoSink& infoSink, TIntermediate& unit) { + if (unit.treeRoot == nullptr || treeRoot == nullptr) + return; + + // Get copies of the linker-object lists + TIntermSequence linkerObjects = findLinkerObjects()->getSequence(); + TIntermSequence unitLinkerObjects = unit.findLinkerObjects()->getSequence(); + + // filter linkerObjects to only contain out variables + auto end = std::remove_if(linkerObjects.begin(), linkerObjects.end(), + [](TIntermNode* node) {return node->getAsSymbolNode()->getQualifier().storage != EvqVaryingOut; }); + linkerObjects.resize(end - linkerObjects.begin()); + + // filter unitLinkerObjects to only contain in variables + auto unitEnd = std::remove_if(unitLinkerObjects.begin(), unitLinkerObjects.end(), + [](TIntermNode* node) {return node->getAsSymbolNode()->getQualifier().storage != EvqVaryingIn; }); + unitLinkerObjects.resize(unitEnd - unitLinkerObjects.begin()); + + // do matching and error checking + mergeLinkerObjects(infoSink, linkerObjects, unitLinkerObjects, unit.getStage()); + + // TODO: final check; make sure that any statically used `in` have matching `out` written to +} + void TIntermediate::mergeCallGraphs(TInfoSink& infoSink, TIntermediate& unit) { if (unit.getNumEntryPoints() > 0) { @@ -104,7 +161,7 @@ void TIntermediate::mergeCallGraphs(TInfoSink& infoSink, TIntermediate& unit) callGraph.insert(callGraph.end(), unit.callGraph.begin(), unit.callGraph.end()); } -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) #define MERGE_MAX(member) member = std::max(member, unit.member) #define MERGE_TRUE(member) if (unit.member) member = unit.member; @@ -136,9 +193,14 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) MERGE_MAX(spvVersion.vulkanGlsl); MERGE_MAX(spvVersion.vulkan); MERGE_MAX(spvVersion.openGl); + MERGE_TRUE(spvVersion.vulkanRelaxed); numErrors += unit.getNumErrors(); - numPushConstants += unit.numPushConstants; + // Only one push_constant is allowed, mergeLinkerObjects() will ensure the push_constant + // is the same for all units. + if (numPushConstants > 1 || unit.numPushConstants > 1) + error(infoSink, "Only one push_constant block is allowed per stage"); + numPushConstants = std::min(numPushConstants + unit.numPushConstants, 1); if (unit.invocations != TQualifier::layoutNotSet) { if (invocations == TQualifier::layoutNotSet) @@ -149,7 +211,7 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) if (vertices == TQualifier::layoutNotSet) vertices = unit.vertices; - else if (vertices != unit.vertices) { + else if (unit.vertices != TQualifier::layoutNotSet && vertices != unit.vertices) { if (language == EShLangGeometry || language == EShLangMeshNV) error(infoSink, "Contradictory layout max_vertices values"); else if (language == EShLangTessControl) @@ -168,12 +230,12 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) if (inputPrimitive == ElgNone) inputPrimitive = unit.inputPrimitive; - else if (inputPrimitive != unit.inputPrimitive) + else if (unit.inputPrimitive != ElgNone && inputPrimitive != unit.inputPrimitive) error(infoSink, "Contradictory input layout primitives"); if (outputPrimitive == ElgNone) outputPrimitive = unit.outputPrimitive; - else if (outputPrimitive != unit.outputPrimitive) + else if (unit.outputPrimitive != ElgNone && outputPrimitive != unit.outputPrimitive) error(infoSink, "Contradictory output layout primitives"); if (originUpperLeft != unit.originUpperLeft || pixelCenterInteger != unit.pixelCenterInteger) @@ -192,12 +254,14 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) MERGE_TRUE(pointMode); for (int i = 0; i < 3; ++i) { - if (!localSizeNotDefault[i] && unit.localSizeNotDefault[i]) { - localSize[i] = unit.localSize[i]; - localSizeNotDefault[i] = true; + if (unit.localSizeNotDefault[i]) { + if (!localSizeNotDefault[i]) { + localSize[i] = unit.localSize[i]; + localSizeNotDefault[i] = true; + } + else if (localSize[i] != unit.localSize[i]) + error(infoSink, "Contradictory local size"); } - else if (localSize[i] != unit.localSize[i]) - error(infoSink, "Contradictory local size"); if (localSizeSpecId[i] == TQualifier::layoutNotSet) localSizeSpecId[i] = unit.localSizeSpecId[i]; @@ -254,10 +318,12 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) MERGE_TRUE(autoMapBindings); MERGE_TRUE(autoMapLocations); MERGE_TRUE(invertY); + MERGE_TRUE(dxPositionW); MERGE_TRUE(flattenUniformArrays); MERGE_TRUE(useUnknownFormat); MERGE_TRUE(hlslOffsets); MERGE_TRUE(useStorageBuffer); + MERGE_TRUE(invariantAll); MERGE_TRUE(hlslIoMapping); // TODO: sourceFile @@ -286,7 +352,7 @@ void TIntermediate::mergeTrees(TInfoSink& infoSink, TIntermediate& unit) } // Getting this far means we have two existing trees to merge... - numShaderRecordNVBlocks += unit.numShaderRecordNVBlocks; + numShaderRecordBlocks += unit.numShaderRecordBlocks; numTaskNVBlocks += unit.numTaskNVBlocks; // Get the top-level globals of each unit @@ -299,40 +365,57 @@ void TIntermediate::mergeTrees(TInfoSink& infoSink, TIntermediate& unit) // Map by global name to unique ID to rationalize the same object having // differing IDs in different trees. - TMap idMap; - int maxId; - seedIdMap(idMap, maxId); - remapIds(idMap, maxId + 1, unit); + TIdMaps idMaps; + long long idShift; + seedIdMap(idMaps, idShift); + remapIds(idMaps, idShift + 1, unit); mergeBodies(infoSink, globals, unitGlobals); - mergeLinkerObjects(infoSink, linkerObjects, unitLinkerObjects); + bool mergeExistingOnly = false; + mergeGlobalUniformBlocks(infoSink, unit, mergeExistingOnly); + mergeLinkerObjects(infoSink, linkerObjects, unitLinkerObjects, unit.getStage()); ioAccessed.insert(unit.ioAccessed.begin(), unit.ioAccessed.end()); } #endif +static const TString& getNameForIdMap(TIntermSymbol* symbol) +{ + TShaderInterface si = symbol->getType().getShaderInterface(); + if (si == EsiNone) + return symbol->getName(); + else + return symbol->getType().getTypeName(); +} + + + // Traverser that seeds an ID map with all built-ins, and tracks the -// maximum ID used. +// maximum ID used, currently using (maximum ID + 1) as new symbol id shift seed. +// Level id will keep same after shifting. // (It would be nice to put this in a function, but that causes warnings // on having no bodies for the copy-constructor/operator=.) class TBuiltInIdTraverser : public TIntermTraverser { public: - TBuiltInIdTraverser(TMap& idMap) : idMap(idMap), maxId(0) { } + TBuiltInIdTraverser(TIdMaps& idMaps) : idMaps(idMaps), idShift(0) { } // If it's a built in, add it to the map. - // Track the max ID. virtual void visitSymbol(TIntermSymbol* symbol) { const TQualifier& qualifier = symbol->getType().getQualifier(); - if (qualifier.builtIn != EbvNone) - idMap[symbol->getName()] = symbol->getId(); - maxId = std::max(maxId, symbol->getId()); + if (qualifier.builtIn != EbvNone) { + TShaderInterface si = symbol->getType().getShaderInterface(); + idMaps[si][getNameForIdMap(symbol)] = symbol->getId(); + } + idShift = (symbol->getId() & ~TSymbolTable::uniqueIdMask) | + std::max(idShift & TSymbolTable::uniqueIdMask, + symbol->getId() & TSymbolTable::uniqueIdMask); } - int getMaxId() const { return maxId; } + long long getIdShift() const { return idShift; } protected: TBuiltInIdTraverser(TBuiltInIdTraverser&); TBuiltInIdTraverser& operator=(TBuiltInIdTraverser&); - TMap& idMap; - int maxId; + TIdMaps& idMaps; + long long idShift; }; // Traverser that seeds an ID map with non-builtins. @@ -340,31 +423,33 @@ class TBuiltInIdTraverser : public TIntermTraverser { // on having no bodies for the copy-constructor/operator=.) class TUserIdTraverser : public TIntermTraverser { public: - TUserIdTraverser(TMap& idMap) : idMap(idMap) { } + TUserIdTraverser(TIdMaps& idMaps) : idMaps(idMaps) { } // If its a non-built-in global, add it to the map. virtual void visitSymbol(TIntermSymbol* symbol) { const TQualifier& qualifier = symbol->getType().getQualifier(); - if (qualifier.builtIn == EbvNone) - idMap[symbol->getName()] = symbol->getId(); + if (qualifier.builtIn == EbvNone) { + TShaderInterface si = symbol->getType().getShaderInterface(); + idMaps[si][getNameForIdMap(symbol)] = symbol->getId(); + } } protected: TUserIdTraverser(TUserIdTraverser&); TUserIdTraverser& operator=(TUserIdTraverser&); - TMap& idMap; // over biggest id + TIdMaps& idMaps; // over biggest id }; // Initialize the the ID map with what we know of 'this' AST. -void TIntermediate::seedIdMap(TMap& idMap, int& maxId) +void TIntermediate::seedIdMap(TIdMaps& idMaps, long long& idShift) { // all built-ins everywhere need to align on IDs and contribute to the max ID - TBuiltInIdTraverser builtInIdTraverser(idMap); + TBuiltInIdTraverser builtInIdTraverser(idMaps); treeRoot->traverse(&builtInIdTraverser); - maxId = builtInIdTraverser.getMaxId(); + idShift = builtInIdTraverser.getIdShift() & TSymbolTable::uniqueIdMask; // user variables in the linker object list need to align on ids - TUserIdTraverser userIdTraverser(idMap); + TUserIdTraverser userIdTraverser(idMaps); findLinkerObjects()->traverse(&userIdTraverser); } @@ -373,7 +458,7 @@ void TIntermediate::seedIdMap(TMap& idMap, int& maxId) // on having no bodies for the copy-constructor/operator=.) class TRemapIdTraverser : public TIntermTraverser { public: - TRemapIdTraverser(const TMap& idMap, int idShift) : idMap(idMap), idShift(idShift) { } + TRemapIdTraverser(const TIdMaps& idMaps, long long idShift) : idMaps(idMaps), idShift(idShift) { } // Do the mapping: // - if the same symbol, adopt the 'this' ID // - otherwise, ensure a unique ID by shifting to a new space @@ -382,9 +467,12 @@ class TRemapIdTraverser : public TIntermTraverser { const TQualifier& qualifier = symbol->getType().getQualifier(); bool remapped = false; if (qualifier.isLinkable() || qualifier.builtIn != EbvNone) { - auto it = idMap.find(symbol->getName()); - if (it != idMap.end()) { - symbol->changeId(it->second); + TShaderInterface si = symbol->getType().getShaderInterface(); + auto it = idMaps[si].find(getNameForIdMap(symbol)); + if (it != idMaps[si].end()) { + uint64_t id = (symbol->getId() & ~TSymbolTable::uniqueIdMask) | + (it->second & TSymbolTable::uniqueIdMask); + symbol->changeId(id); remapped = true; } } @@ -394,14 +482,14 @@ class TRemapIdTraverser : public TIntermTraverser { protected: TRemapIdTraverser(TRemapIdTraverser&); TRemapIdTraverser& operator=(TRemapIdTraverser&); - const TMap& idMap; - int idShift; + const TIdMaps& idMaps; + long long idShift; }; -void TIntermediate::remapIds(const TMap& idMap, int idShift, TIntermediate& unit) +void TIntermediate::remapIds(const TIdMaps& idMaps, long long idShift, TIntermediate& unit) { // Remap all IDs to either share or be unique, as dictated by the idMap and idShift. - TRemapIdTraverser idTraverser(idMap, idShift); + TRemapIdTraverser idTraverser(idMaps, idShift); unit.getTreeRoot()->traverse(&idTraverser); } @@ -429,11 +517,198 @@ void TIntermediate::mergeBodies(TInfoSink& infoSink, TIntermSequence& globals, c globals.insert(globals.end() - 1, unitGlobals.begin(), unitGlobals.end() - 1); } +static inline bool isSameInterface(TIntermSymbol* symbol, EShLanguage stage, TIntermSymbol* unitSymbol, EShLanguage unitStage) { + return // 1) same stage and same shader interface + (stage == unitStage && symbol->getType().getShaderInterface() == unitSymbol->getType().getShaderInterface()) || + // 2) accross stages and both are uniform or buffer + (symbol->getQualifier().storage == EvqUniform && unitSymbol->getQualifier().storage == EvqUniform) || + (symbol->getQualifier().storage == EvqBuffer && unitSymbol->getQualifier().storage == EvqBuffer) || + // 3) in/out matched across stage boundary + (stage < unitStage && symbol->getQualifier().storage == EvqVaryingOut && unitSymbol->getQualifier().storage == EvqVaryingIn) || + (unitStage < stage && symbol->getQualifier().storage == EvqVaryingIn && unitSymbol->getQualifier().storage == EvqVaryingOut); +} + +// +// Global Unfiform block stores any default uniforms (i.e. uniforms without a block) +// If two linked stages declare the same member, they are meant to be the same uniform +// and need to be in the same block +// merge the members of different stages to allow them to be linked properly +// as a single block +// +void TIntermediate::mergeGlobalUniformBlocks(TInfoSink& infoSink, TIntermediate& unit, bool mergeExistingOnly) +{ + TIntermSequence& linkerObjects = findLinkerObjects()->getSequence(); + TIntermSequence& unitLinkerObjects = unit.findLinkerObjects()->getSequence(); + + // build lists of default blocks from the intermediates + TIntermSequence defaultBlocks; + TIntermSequence unitDefaultBlocks; + + auto filter = [](TIntermSequence& list, TIntermNode* node) { + if (node->getAsSymbolNode()->getQualifier().defaultBlock) { + list.push_back(node); + } + }; + + std::for_each(linkerObjects.begin(), linkerObjects.end(), + [&defaultBlocks, &filter](TIntermNode* node) { + filter(defaultBlocks, node); + }); + std::for_each(unitLinkerObjects.begin(), unitLinkerObjects.end(), + [&unitDefaultBlocks, &filter](TIntermNode* node) { + filter(unitDefaultBlocks, node); + }); + + auto itUnitBlock = unitDefaultBlocks.begin(); + for (; itUnitBlock != unitDefaultBlocks.end(); itUnitBlock++) { + + bool add = !mergeExistingOnly; + auto itBlock = defaultBlocks.begin(); + + for (; itBlock != defaultBlocks.end(); itBlock++) { + TIntermSymbol* block = (*itBlock)->getAsSymbolNode(); + TIntermSymbol* unitBlock = (*itUnitBlock)->getAsSymbolNode(); + + assert(block && unitBlock); + + // if the two default blocks match, then merge their definitions + if (block->getType().getTypeName() == unitBlock->getType().getTypeName() && + block->getQualifier().storage == unitBlock->getQualifier().storage) { + add = false; + mergeBlockDefinitions(infoSink, block, unitBlock, &unit); + } + } + if (add) { + // push back on original list; won't change the size of the list we're iterating over + linkerObjects.push_back(*itUnitBlock); + } + } +} + +void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* block, TIntermSymbol* unitBlock, TIntermediate* unit) { + + if (block->getType().getTypeName() != unitBlock->getType().getTypeName() || + block->getType().getBasicType() != unitBlock->getType().getBasicType() || + block->getQualifier().storage != unitBlock->getQualifier().storage || + block->getQualifier().layoutSet != unitBlock->getQualifier().layoutSet) { + // different block names likely means different blocks + return; + } + + // merge the struct + // order of declarations doesn't matter and they matched based on member name + TTypeList* memberList = block->getType().getWritableStruct(); + TTypeList* unitMemberList = unitBlock->getType().getWritableStruct(); + + // keep track of which members have changed position + // so we don't have to search the array again + std::map memberIndexUpdates; + + size_t memberListStartSize = memberList->size(); + for (unsigned int i = 0; i < unitMemberList->size(); ++i) { + bool merge = true; + for (unsigned int j = 0; j < memberListStartSize; ++j) { + if ((*memberList)[j].type->getFieldName() == (*unitMemberList)[i].type->getFieldName()) { + merge = false; + const TType* memberType = (*memberList)[j].type; + const TType* unitMemberType = (*unitMemberList)[i].type; + + // compare types + // don't need as many checks as when merging symbols, since + // initializers and most qualifiers are stripped when the member is moved into the block + if ((*memberType) != (*unitMemberType)) { + error(infoSink, "Types must match:"); + infoSink.info << " " << memberType->getFieldName() << ": "; + infoSink.info << "\"" << memberType->getCompleteString() << "\" versus "; + infoSink.info << "\"" << unitMemberType->getCompleteString() << "\"\n"; + } + + memberIndexUpdates[i] = j; + } + } + if (merge) { + memberList->push_back((*unitMemberList)[i]); + memberIndexUpdates[i] = (unsigned int)memberList->size() - 1; + } + } + + // update symbol node in unit tree, + // and other nodes that may reference it + class TMergeBlockTraverser : public TIntermTraverser { + public: + TMergeBlockTraverser(const TIntermSymbol* newSym) + : newSymbol(newSym), unitType(nullptr), unit(nullptr), memberIndexUpdates(nullptr) + { + } + TMergeBlockTraverser(const TIntermSymbol* newSym, const glslang::TType* unitType, glslang::TIntermediate* unit, + const std::map* memberIdxUpdates) + : newSymbol(newSym), unitType(unitType), unit(unit), memberIndexUpdates(memberIdxUpdates) + { + } + virtual ~TMergeBlockTraverser() {} + + const TIntermSymbol* newSymbol; + const glslang::TType* unitType; // copy of original type + glslang::TIntermediate* unit; // intermediate that is being updated + const std::map* memberIndexUpdates; + + virtual void visitSymbol(TIntermSymbol* symbol) + { + if (newSymbol->getAccessName() == symbol->getAccessName() && + newSymbol->getQualifier().getBlockStorage() == symbol->getQualifier().getBlockStorage()) { + // Each symbol node may have a local copy of the block structure. + // Update those structures to match the new one post-merge + *(symbol->getWritableType().getWritableStruct()) = *(newSymbol->getType().getStruct()); + } + } + + virtual bool visitBinary(TVisit, glslang::TIntermBinary* node) + { + if (!unit || !unitType || !memberIndexUpdates || memberIndexUpdates->empty()) + return true; + + if (node->getOp() == EOpIndexDirectStruct && node->getLeft()->getType() == *unitType) { + // this is a dereference to a member of the block since the + // member list changed, need to update this to point to the + // right index + assert(node->getRight()->getAsConstantUnion()); + + glslang::TIntermConstantUnion* constNode = node->getRight()->getAsConstantUnion(); + unsigned int memberIdx = constNode->getConstArray()[0].getUConst(); + unsigned int newIdx = memberIndexUpdates->at(memberIdx); + TIntermTyped* newConstNode = unit->addConstantUnion(newIdx, node->getRight()->getLoc()); + + node->setRight(newConstNode); + delete constNode; + + return true; + } + return true; + } + }; + + // 'this' may have symbols that are using the old block structure, so traverse the tree to update those + // in 'visitSymbol' + TMergeBlockTraverser finalLinkTraverser(block); + getTreeRoot()->traverse(&finalLinkTraverser); + + // The 'unit' intermediate needs the block structures update, but also structure entry indices + // may have changed from the old block to the new one that it was merged into, so update those + // in 'visitBinary' + TType unitType; + unitType.shallowCopy(unitBlock->getType()); + TMergeBlockTraverser unitFinalLinkTraverser(block, &unitType, unit, &memberIndexUpdates); + unit->getTreeRoot()->traverse(&unitFinalLinkTraverser); + + // update the member list + (*unitMemberList) = (*memberList); +} + // // Merge the linker objects from unitLinkerObjects into linkerObjects. // Duplication is expected and filtered out, but contradictions are an error. // -void TIntermediate::mergeLinkerObjects(TInfoSink& infoSink, TIntermSequence& linkerObjects, const TIntermSequence& unitLinkerObjects) +void TIntermediate::mergeLinkerObjects(TInfoSink& infoSink, TIntermSequence& linkerObjects, const TIntermSequence& unitLinkerObjects, EShLanguage unitStage) { // Error check and merge the linker objects (duplicates should not be created) std::size_t initialNumLinkerObjects = linkerObjects.size(); @@ -443,7 +718,19 @@ void TIntermediate::mergeLinkerObjects(TInfoSink& infoSink, TIntermSequence& lin TIntermSymbol* symbol = linkerObjects[linkObj]->getAsSymbolNode(); TIntermSymbol* unitSymbol = unitLinkerObjects[unitLinkObj]->getAsSymbolNode(); assert(symbol && unitSymbol); - if (symbol->getName() == unitSymbol->getName()) { + + bool isSameSymbol = false; + // If they are both blocks in the same shader interface, + // match by the block-name, not the identifier name. + if (symbol->getType().getBasicType() == EbtBlock && unitSymbol->getType().getBasicType() == EbtBlock) { + if (isSameInterface(symbol, getStage(), unitSymbol, unitStage)) { + isSameSymbol = symbol->getType().getTypeName() == unitSymbol->getType().getTypeName(); + } + } + else if (symbol->getName() == unitSymbol->getName()) + isSameSymbol = true; + + if (isSameSymbol) { // filter out copy merge = false; @@ -456,15 +743,57 @@ void TIntermediate::mergeLinkerObjects(TInfoSink& infoSink, TIntermSequence& lin if (! symbol->getQualifier().hasBinding() && unitSymbol->getQualifier().hasBinding()) symbol->getQualifier().layoutBinding = unitSymbol->getQualifier().layoutBinding; + // Similarly for location + if (!symbol->getQualifier().hasLocation() && unitSymbol->getQualifier().hasLocation()) { + symbol->getQualifier().layoutLocation = unitSymbol->getQualifier().layoutLocation; + } + // Update implicit array sizes mergeImplicitArraySizes(symbol->getWritableType(), unitSymbol->getType()); // Check for consistent types/qualification/initializers etc. - mergeErrorCheck(infoSink, *symbol, *unitSymbol, false); + mergeErrorCheck(infoSink, *symbol, *unitSymbol, unitStage); } + // If different symbols, verify they arn't push_constant since there can only be one per stage + else if (symbol->getQualifier().isPushConstant() && unitSymbol->getQualifier().isPushConstant() && getStage() == unitStage) + error(infoSink, "Only one push_constant block is allowed per stage"); } - if (merge) + if (merge) { linkerObjects.push_back(unitLinkerObjects[unitLinkObj]); + + // for anonymous blocks, check that their members don't conflict with other names + if (unitLinkerObjects[unitLinkObj]->getAsSymbolNode()->getBasicType() == EbtBlock && + IsAnonymous(unitLinkerObjects[unitLinkObj]->getAsSymbolNode()->getName())) { + for (std::size_t linkObj = 0; linkObj < initialNumLinkerObjects; ++linkObj) { + TIntermSymbol* symbol = linkerObjects[linkObj]->getAsSymbolNode(); + TIntermSymbol* unitSymbol = unitLinkerObjects[unitLinkObj]->getAsSymbolNode(); + assert(symbol && unitSymbol); + + auto checkName = [this, unitSymbol, &infoSink](const TString& name) { + for (unsigned int i = 0; i < unitSymbol->getType().getStruct()->size(); ++i) { + if (name == (*unitSymbol->getType().getStruct())[i].type->getFieldName() + && !((*unitSymbol->getType().getStruct())[i].type->getQualifier().hasLocation() + || unitSymbol->getType().getQualifier().hasLocation()) + ) { + error(infoSink, "Anonymous member name used for global variable or other anonymous member: "); + infoSink.info << (*unitSymbol->getType().getStruct())[i].type->getCompleteString() << "\n"; + } + } + }; + + if (isSameInterface(symbol, getStage(), unitSymbol, unitStage)) { + checkName(symbol->getName()); + + // check members of other anonymous blocks + if (symbol->getBasicType() == EbtBlock && IsAnonymous(symbol->getName())) { + for (unsigned int i = 0; i < symbol->getType().getStruct()->size(); ++i) { + checkName((*symbol->getType().getStruct())[i].type->getFieldName()); + } + } + } + } + } + } } } @@ -496,105 +825,357 @@ void TIntermediate::mergeImplicitArraySizes(TType& type, const TType& unitType) // // This function only does one of intra- or cross-stage matching per call. // -void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& symbol, const TIntermSymbol& unitSymbol, bool crossStage) +void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& symbol, const TIntermSymbol& unitSymbol, EShLanguage unitStage) { -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) + bool crossStage = getStage() != unitStage; bool writeTypeComparison = false; + bool errorReported = false; + bool printQualifiers = false; + bool printPrecision = false; + bool printType = false; // Types have to match - if (symbol.getType() != unitSymbol.getType()) { + { // but, we make an exception if one is an implicit array and the other is sized - if (! (symbol.getType().isArray() && unitSymbol.getType().isArray() && - symbol.getType().sameElementType(unitSymbol.getType()) && - (symbol.getType().isUnsizedArray() || unitSymbol.getType().isUnsizedArray()))) { - error(infoSink, "Types must match:"); + // or if the array sizes differ because of the extra array dimension on some in/out boundaries + bool arraysMatch = false; + if (isIoResizeArray(symbol.getType(), getStage()) || isIoResizeArray(unitSymbol.getType(), unitStage)) { + // if the arrays have an extra dimension because of the stage. + // compare dimensions while ignoring the outer dimension + unsigned int firstDim = isIoResizeArray(symbol.getType(), getStage()) ? 1 : 0; + unsigned int numDim = symbol.getArraySizes() + ? symbol.getArraySizes()->getNumDims() : 0; + unsigned int unitFirstDim = isIoResizeArray(unitSymbol.getType(), unitStage) ? 1 : 0; + unsigned int unitNumDim = unitSymbol.getArraySizes() + ? unitSymbol.getArraySizes()->getNumDims() : 0; + arraysMatch = (numDim - firstDim) == (unitNumDim - unitFirstDim); + // check that array sizes match as well + for (unsigned int i = 0; i < (numDim - firstDim) && arraysMatch; i++) { + if (symbol.getArraySizes()->getDimSize(firstDim + i) != + unitSymbol.getArraySizes()->getDimSize(unitFirstDim + i)) { + arraysMatch = false; + break; + } + } + } + else { + arraysMatch = symbol.getType().sameArrayness(unitSymbol.getType()) || + (symbol.getType().isArray() && unitSymbol.getType().isArray() && + (symbol.getType().isUnsizedArray() || unitSymbol.getType().isUnsizedArray())); + } + + int lpidx = -1; + int rpidx = -1; + if (!symbol.getType().sameElementType(unitSymbol.getType(), &lpidx, &rpidx)) { + if (lpidx >= 0 && rpidx >= 0) { + error(infoSink, "Member names and types must match:", unitStage); + infoSink.info << " Block: " << symbol.getType().getTypeName() << "\n"; + infoSink.info << " " << StageName(getStage()) << " stage: \"" + << (*symbol.getType().getStruct())[lpidx].type->getCompleteString(true, false, false, true, + (*symbol.getType().getStruct())[lpidx].type->getFieldName()) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: \"" + << (*unitSymbol.getType().getStruct())[rpidx].type->getCompleteString(true, false, false, true, + (*unitSymbol.getType().getStruct())[rpidx].type->getFieldName()) << "\"\n"; + errorReported = true; + } else if (lpidx >= 0 && rpidx == -1) { + TString errmsg = StageName(getStage()); + errmsg.append(" block member has no corresponding member in ").append(StageName(unitStage)).append(" block:"); + error(infoSink, errmsg.c_str(), unitStage); + infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << ", Member: " + << (*symbol.getType().getStruct())[lpidx].type->getFieldName() << "\n"; + infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << ", Member: n/a \n"; + errorReported = true; + } else if (lpidx == -1 && rpidx >= 0) { + TString errmsg = StageName(unitStage); + errmsg.append(" block member has no corresponding member in ").append(StageName(getStage())).append(" block:"); + error(infoSink, errmsg.c_str(), unitStage); + infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << ", Member: " + << (*unitSymbol.getType().getStruct())[rpidx].type->getFieldName() << "\n"; + infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << ", Member: n/a \n"; + errorReported = true; + } else { + error(infoSink, "Types must match:", unitStage); + writeTypeComparison = true; + printType = true; + } + } else if (!arraysMatch) { + error(infoSink, "Array sizes must be compatible:", unitStage); + writeTypeComparison = true; + printType = true; + } else if (!symbol.getType().sameTypeParameters(unitSymbol.getType())) { + error(infoSink, "Type parameters must match:", unitStage); writeTypeComparison = true; + printType = true; } } - // Qualifiers have to (almost) match + // Interface block member-wise layout qualifiers have to match + if (symbol.getType().getBasicType() == EbtBlock && unitSymbol.getType().getBasicType() == EbtBlock && + symbol.getType().getStruct() && unitSymbol.getType().getStruct() && + symbol.getType().sameStructType(unitSymbol.getType())) { + unsigned int li = 0; + unsigned int ri = 0; + while (li < symbol.getType().getStruct()->size() && ri < unitSymbol.getType().getStruct()->size()) { + if ((*symbol.getType().getStruct())[li].type->hiddenMember()) { + ++li; + continue; + } + if ((*unitSymbol.getType().getStruct())[ri].type->hiddenMember()) { + ++ri; + continue; + } + const TQualifier& qualifier = (*symbol.getType().getStruct())[li].type->getQualifier(); + const TQualifier & unitQualifier = (*unitSymbol.getType().getStruct())[ri].type->getQualifier(); + bool layoutQualifierError = false; + if (qualifier.layoutMatrix != unitQualifier.layoutMatrix) { + error(infoSink, "Interface block member layout matrix qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (qualifier.layoutOffset != unitQualifier.layoutOffset) { + error(infoSink, "Interface block member layout offset qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (qualifier.layoutAlign != unitQualifier.layoutAlign) { + error(infoSink, "Interface block member layout align qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (qualifier.layoutLocation != unitQualifier.layoutLocation) { + error(infoSink, "Interface block member layout location qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (qualifier.layoutComponent != unitQualifier.layoutComponent) { + error(infoSink, "Interface block member layout component qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (layoutQualifierError) { + infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << ", Member: " + << (*symbol.getType().getStruct())[li].type->getFieldName() << " \"" + << (*symbol.getType().getStruct())[li].type->getCompleteString(true, true, false, false) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << ", Member: " + << (*unitSymbol.getType().getStruct())[ri].type->getFieldName() << " \"" + << (*unitSymbol.getType().getStruct())[ri].type->getCompleteString(true, true, false, false) << "\"\n"; + errorReported = true; + } + ++li; + ++ri; + } + } + bool isInOut = crossStage && + ((symbol.getQualifier().storage == EvqVaryingIn && unitSymbol.getQualifier().storage == EvqVaryingOut) || + (symbol.getQualifier().storage == EvqVaryingOut && unitSymbol.getQualifier().storage == EvqVaryingIn)); + + // Qualifiers have to (almost) match // Storage... - if (symbol.getQualifier().storage != unitSymbol.getQualifier().storage) { - error(infoSink, "Storage qualifiers must match:"); + if (!isInOut && symbol.getQualifier().storage != unitSymbol.getQualifier().storage) { + error(infoSink, "Storage qualifiers must match:", unitStage); + writeTypeComparison = true; + printQualifiers = true; + } + + // Uniform and buffer blocks must either both have an instance name, or + // must both be anonymous. The names don't need to match though. + if (symbol.getQualifier().isUniformOrBuffer() && + (IsAnonymous(symbol.getName()) != IsAnonymous(unitSymbol.getName()))) { + error(infoSink, "Matched Uniform or Storage blocks must all be anonymous," + " or all be named:", unitStage); + writeTypeComparison = true; + } + + if (symbol.getQualifier().storage == unitSymbol.getQualifier().storage && + (IsAnonymous(symbol.getName()) != IsAnonymous(unitSymbol.getName()) || + (!IsAnonymous(symbol.getName()) && symbol.getName() != unitSymbol.getName()))) { + warn(infoSink, "Matched shader interfaces are using different instance names.", unitStage); writeTypeComparison = true; } // Precision... - if (symbol.getQualifier().precision != unitSymbol.getQualifier().precision) { - error(infoSink, "Precision qualifiers must match:"); + if (!isInOut && symbol.getQualifier().precision != unitSymbol.getQualifier().precision) { + error(infoSink, "Precision qualifiers must match:", unitStage); writeTypeComparison = true; + printPrecision = true; } // Invariance... if (! crossStage && symbol.getQualifier().invariant != unitSymbol.getQualifier().invariant) { - error(infoSink, "Presence of invariant qualifier must match:"); + error(infoSink, "Presence of invariant qualifier must match:", unitStage); writeTypeComparison = true; + printQualifiers = true; } // Precise... if (! crossStage && symbol.getQualifier().isNoContraction() != unitSymbol.getQualifier().isNoContraction()) { - error(infoSink, "Presence of precise qualifier must match:"); + error(infoSink, "Presence of precise qualifier must match:", unitStage); writeTypeComparison = true; + printPrecision = true; } // Auxiliary and interpolation... - if (symbol.getQualifier().centroid != unitSymbol.getQualifier().centroid || + // "interpolation qualification (e.g., flat) and auxiliary qualification (e.g. centroid) may differ. + // These mismatches are allowed between any pair of stages ... + // those provided in the fragment shader supersede those provided in previous stages." + if (!crossStage && + (symbol.getQualifier().centroid != unitSymbol.getQualifier().centroid || symbol.getQualifier().smooth != unitSymbol.getQualifier().smooth || symbol.getQualifier().flat != unitSymbol.getQualifier().flat || symbol.getQualifier().isSample()!= unitSymbol.getQualifier().isSample() || symbol.getQualifier().isPatch() != unitSymbol.getQualifier().isPatch() || - symbol.getQualifier().isNonPerspective() != unitSymbol.getQualifier().isNonPerspective()) { - error(infoSink, "Interpolation and auxiliary storage qualifiers must match:"); + symbol.getQualifier().isNonPerspective() != unitSymbol.getQualifier().isNonPerspective())) { + error(infoSink, "Interpolation and auxiliary storage qualifiers must match:", unitStage); writeTypeComparison = true; + printQualifiers = true; } // Memory... - if (symbol.getQualifier().coherent != unitSymbol.getQualifier().coherent || - symbol.getQualifier().devicecoherent != unitSymbol.getQualifier().devicecoherent || - symbol.getQualifier().queuefamilycoherent != unitSymbol.getQualifier().queuefamilycoherent || - symbol.getQualifier().workgroupcoherent != unitSymbol.getQualifier().workgroupcoherent || - symbol.getQualifier().subgroupcoherent != unitSymbol.getQualifier().subgroupcoherent || - symbol.getQualifier().nonprivate != unitSymbol.getQualifier().nonprivate || - symbol.getQualifier().volatil != unitSymbol.getQualifier().volatil || - symbol.getQualifier().restrict != unitSymbol.getQualifier().restrict || - symbol.getQualifier().readonly != unitSymbol.getQualifier().readonly || - symbol.getQualifier().writeonly != unitSymbol.getQualifier().writeonly) { - error(infoSink, "Memory qualifiers must match:"); - writeTypeComparison = true; + bool memoryQualifierError = false; + if (symbol.getQualifier().coherent != unitSymbol.getQualifier().coherent) { + error(infoSink, "Memory coherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().devicecoherent != unitSymbol.getQualifier().devicecoherent) { + error(infoSink, "Memory devicecoherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().queuefamilycoherent != unitSymbol.getQualifier().queuefamilycoherent) { + error(infoSink, "Memory queuefamilycoherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().workgroupcoherent != unitSymbol.getQualifier().workgroupcoherent) { + error(infoSink, "Memory workgroupcoherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().subgroupcoherent != unitSymbol.getQualifier().subgroupcoherent) { + error(infoSink, "Memory subgroupcoherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().shadercallcoherent != unitSymbol.getQualifier().shadercallcoherent) { + error(infoSink, "Memory shadercallcoherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().nonprivate != unitSymbol.getQualifier().nonprivate) { + error(infoSink, "Memory nonprivate qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().volatil != unitSymbol.getQualifier().volatil) { + error(infoSink, "Memory volatil qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().restrict != unitSymbol.getQualifier().restrict) { + error(infoSink, "Memory restrict qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().readonly != unitSymbol.getQualifier().readonly) { + error(infoSink, "Memory readonly qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().writeonly != unitSymbol.getQualifier().writeonly) { + error(infoSink, "Memory writeonly qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (memoryQualifierError) { + writeTypeComparison = true; + printQualifiers = true; } // Layouts... // TODO: 4.4 enhanced layouts: Generalize to include offset/align: current spec // requires separate user-supplied offset from actual computed offset, but // current implementation only has one offset. - if (symbol.getQualifier().layoutMatrix != unitSymbol.getQualifier().layoutMatrix || - symbol.getQualifier().layoutPacking != unitSymbol.getQualifier().layoutPacking || - symbol.getQualifier().layoutLocation != unitSymbol.getQualifier().layoutLocation || - symbol.getQualifier().layoutComponent != unitSymbol.getQualifier().layoutComponent || - symbol.getQualifier().layoutIndex != unitSymbol.getQualifier().layoutIndex || - symbol.getQualifier().layoutBinding != unitSymbol.getQualifier().layoutBinding || - (symbol.getQualifier().hasBinding() && (symbol.getQualifier().layoutOffset != unitSymbol.getQualifier().layoutOffset))) { - error(infoSink, "Layout qualification must match:"); + bool layoutQualifierError = false; + if (symbol.getQualifier().layoutMatrix != unitSymbol.getQualifier().layoutMatrix) { + error(infoSink, "Layout matrix qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().layoutPacking != unitSymbol.getQualifier().layoutPacking) { + error(infoSink, "Layout packing qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().hasLocation() && unitSymbol.getQualifier().hasLocation() && symbol.getQualifier().layoutLocation != unitSymbol.getQualifier().layoutLocation) { + error(infoSink, "Layout location qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().layoutComponent != unitSymbol.getQualifier().layoutComponent) { + error(infoSink, "Layout component qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().layoutIndex != unitSymbol.getQualifier().layoutIndex) { + error(infoSink, "Layout index qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().hasBinding() && unitSymbol.getQualifier().hasBinding() && symbol.getQualifier().layoutBinding != unitSymbol.getQualifier().layoutBinding) { + error(infoSink, "Layout binding qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().hasBinding() && (symbol.getQualifier().layoutOffset != unitSymbol.getQualifier().layoutOffset)) { + error(infoSink, "Layout offset qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (layoutQualifierError) { writeTypeComparison = true; + printQualifiers = true; } // Initializers have to match, if both are present, and if we don't already know the types don't match - if (! writeTypeComparison) { + if (! writeTypeComparison && ! errorReported) { if (! symbol.getConstArray().empty() && ! unitSymbol.getConstArray().empty()) { if (symbol.getConstArray() != unitSymbol.getConstArray()) { - error(infoSink, "Initializers must match:"); + error(infoSink, "Initializers must match:", unitStage); infoSink.info << " " << symbol.getName() << "\n"; } } } - if (writeTypeComparison) - infoSink.info << " " << symbol.getName() << ": \"" << symbol.getType().getCompleteString() << "\" versus \"" << - unitSymbol.getType().getCompleteString() << "\"\n"; + if (writeTypeComparison) { + if (symbol.getType().getBasicType() == EbtBlock && unitSymbol.getType().getBasicType() == EbtBlock && + symbol.getType().getStruct() && unitSymbol.getType().getStruct()) { + if (printType) { + infoSink.info << " " << StageName(getStage()) << " stage: \"" << symbol.getType().getCompleteString(true, printQualifiers, printPrecision, + printType, symbol.getName(), symbol.getType().getTypeName()) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: \"" << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision, + printType, unitSymbol.getName(), unitSymbol.getType().getTypeName()) << "\"\n"; + } else { + infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << " Instance: " << symbol.getName() + << ": \"" << symbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << " Instance: " << unitSymbol.getName() + << ": \"" << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n"; + } + } else { + if (printType) { + infoSink.info << " " << StageName(getStage()) << " stage: \"" + << symbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType, symbol.getName()) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: \"" + << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType, unitSymbol.getName()) << "\"\n"; + } else { + infoSink.info << " " << StageName(getStage()) << " stage: " << symbol.getName() << " \"" + << symbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: " << unitSymbol.getName() << " \"" + << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n"; + } + } + } #endif } +void TIntermediate::sharedBlockCheck(TInfoSink& infoSink) +{ + bool has_shared_block = false; + bool has_shared_non_block = false; + TIntermSequence& linkObjects = findLinkerObjects()->getSequence(); + for (size_t i = 0; i < linkObjects.size(); ++i) { + const TType& type = linkObjects[i]->getAsTyped()->getType(); + const TQualifier& qualifier = type.getQualifier(); + if (qualifier.storage == glslang::EvqShared) { + if (type.getBasicType() == glslang::EbtBlock) + has_shared_block = true; + else + has_shared_non_block = true; + } + } + if (has_shared_block && has_shared_non_block) + error(infoSink, "cannot mix use of shared variables inside and outside blocks"); +} + // // Do final link-time error checking of a complete (merged) intermediate representation. // (Much error checking was done during merging). @@ -680,10 +1261,10 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) // "The resulting stride (implicit or explicit), when divided by 4, must be less than or equal to the // implementation-dependent constant gl_MaxTransformFeedbackInterleavedComponents." - if (xfbBuffers[b].stride > (unsigned int)(4 * resources.maxTransformFeedbackInterleavedComponents)) { + if (xfbBuffers[b].stride > (unsigned int)(4 * resources->maxTransformFeedbackInterleavedComponents)) { error(infoSink, "xfb_stride is too large:"); infoSink.info.prefix(EPrefixError); - infoSink.info << " xfb_buffer " << (unsigned int)b << ", components (1/4 stride) needed are " << xfbBuffers[b].stride/4 << ", gl_MaxTransformFeedbackInterleavedComponents is " << resources.maxTransformFeedbackInterleavedComponents << "\n"; + infoSink.info << " xfb_buffer " << (unsigned int)b << ", components (1/4 stride) needed are " << xfbBuffers[b].stride/4 << ", gl_MaxTransformFeedbackInterleavedComponents is " << resources->maxTransformFeedbackInterleavedComponents << "\n"; } } @@ -720,14 +1301,15 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) error(infoSink, "post_depth_coverage requires early_fragment_tests"); break; case EShLangCompute: + sharedBlockCheck(infoSink); break; - case EShLangRayGenNV: - case EShLangIntersectNV: - case EShLangAnyHitNV: - case EShLangClosestHitNV: - case EShLangMissNV: - case EShLangCallableNV: - if (numShaderRecordNVBlocks > 1) + case EShLangRayGen: + case EShLangIntersect: + case EShLangAnyHit: + case EShLangClosestHit: + case EShLangMiss: + case EShLangCallable: + if (numShaderRecordBlocks > 1) error(infoSink, "Only one shaderRecordNV buffer block is allowed per stage"); break; case EShLangMeshNV: @@ -752,6 +1334,7 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) case EShLangTaskNV: if (numTaskNVBlocks > 1) error(infoSink, "Only one taskNV interface block is allowed per shader"); + sharedBlockCheck(infoSink); break; default: error(infoSink, "Unknown Stage."); @@ -999,8 +1582,8 @@ bool TIntermediate::userOutputUsed() const return found; } -// Accumulate locations used for inputs, outputs, and uniforms, and check for collisions -// as the accumulation is done. +// Accumulate locations used for inputs, outputs, and uniforms, payload and callable data +// and check for collisions as the accumulation is done. // // Returns < 0 if no collision, >= 0 if collision and the value returned is a colliding value. // @@ -1012,6 +1595,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ typeCollision = false; int set; + int setRT; if (qualifier.isPipeInput()) set = 0; else if (qualifier.isPipeOutput()) @@ -1020,11 +1604,17 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ set = 2; else if (qualifier.storage == EvqBuffer) set = 3; + else if (qualifier.isAnyPayload()) + setRT = 0; + else if (qualifier.isAnyCallable()) + setRT = 1; else return -1; int size; - if (qualifier.isUniformOrBuffer() || qualifier.isTaskMemory()) { + if (qualifier.isAnyPayload() || qualifier.isAnyCallable()) { + size = 1; + } else if (qualifier.isUniformOrBuffer() || qualifier.isTaskMemory()) { if (type.isSizedArray()) size = type.getCumulativeArraySize(); else @@ -1052,10 +1642,17 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ // (A vertex shader input will show using only one location, even for a dvec3/4.) // // So, for the case of dvec3, we need two independent ioRanges. - + // + // For raytracing IO (payloads and callabledata) each declaration occupies a single + // slot irrespective of type. int collision = -1; // no collision #ifndef GLSLANG_WEB - if (size == 2 && type.getBasicType() == EbtDouble && type.getVectorSize() == 3 && + if (qualifier.isAnyPayload() || qualifier.isAnyCallable()) { + TRange range(qualifier.layoutLocation, qualifier.layoutLocation); + collision = checkLocationRT(setRT, qualifier.layoutLocation); + if (collision < 0) + usedIoRT[setRT].push_back(range); + } else if (size == 2 && type.getBasicType() == EbtDouble && type.getVectorSize() == 3 && (qualifier.isPipeInput() || qualifier.isPipeOutput())) { // Dealing with dvec3 in/out split across two locations. // Need two io-ranges. @@ -1131,6 +1728,16 @@ int TIntermediate::checkLocationRange(int set, const TIoRange& range, const TTyp return -1; // no collision } +int TIntermediate::checkLocationRT(int set, int location) { + TRange range(location, location); + for (size_t r = 0; r < usedIoRT[set].size(); ++r) { + if (range.overlap(usedIoRT[set][r])) { + return range.start; + } + } + return -1; // no collision +} + // Accumulate bindings and offsets, and check for collisions // as the accumulation is done. // @@ -1306,9 +1913,9 @@ unsigned int TIntermediate::computeTypeXfbSize(const TType& type, bool& contains // that component's size. Aggregate types are flattened down to the component // level to get this sequence of components." - if (type.isArray()) { + if (type.isSizedArray()) { // TODO: perf: this can be flattened by using getCumulativeArraySize(), and a deref that discards all arrayness - assert(type.isSizedArray()); + // Unsized array use to xfb should be a compile error. TType elementType(type, 0); return type.getOuterArraySize() * computeTypeXfbSize(elementType, contains64BitType, contains16BitType, contains16BitType); } @@ -1353,7 +1960,7 @@ unsigned int TIntermediate::computeTypeXfbSize(const TType& type, bool& contains return size; } - int numComponents; + int numComponents {0}; if (type.isScalar()) numComponents = 1; else if (type.isVector()) @@ -1494,12 +2101,14 @@ int TIntermediate::getBaseAlignment(const TType& type, int& size, int& stride, T RoundToPow2(size, alignment); stride = size; // uses full matrix size for stride of an array of matrices (not quite what rule 6/8, but what's expected) // uses the assumption for rule 10 in the comment above - size = stride * type.getOuterArraySize(); + // use one element to represent the last member of SSBO which is unsized array + int arraySize = (type.isUnsizedArray() && (type.getOuterArraySize() == 0)) ? 1 : type.getOuterArraySize(); + size = stride * arraySize; return alignment; } // rule 9 - if (type.getBasicType() == EbtStruct) { + if (type.getBasicType() == EbtStruct || type.getBasicType() == EbtBlock) { const TTypeList& memberList = *type.getStruct(); size = 0; @@ -1720,4 +2329,18 @@ int TIntermediate::computeBufferReferenceTypeSize(const TType& type) return size; } +#ifndef GLSLANG_WEB +bool TIntermediate::isIoResizeArray(const TType& type, EShLanguage language) { + return type.isArray() && + ((language == EShLangGeometry && type.getQualifier().storage == EvqVaryingIn) || + (language == EShLangTessControl && (type.getQualifier().storage == EvqVaryingIn || type.getQualifier().storage == EvqVaryingOut) && + ! type.getQualifier().patch) || + (language == EShLangTessEvaluation && type.getQualifier().storage == EvqVaryingIn) || + (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn && + type.getQualifier().pervertexNV) || + (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut && + !type.getQualifier().perTaskNV)); +} +#endif // not GLSLANG_WEB + } // end namespace glslang diff --git a/Externals/glslang/glslang/MachineIndependent/localintermediate.h b/Externals/glslang/glslang/MachineIndependent/localintermediate.h index 683290af74f1..581e9aa2e4c0 100644 --- a/Externals/glslang/glslang/MachineIndependent/localintermediate.h +++ b/Externals/glslang/glslang/MachineIndependent/localintermediate.h @@ -162,7 +162,10 @@ struct TXfbBuffer { #endif // Track a set of strings describing how the module was processed. -// Using the form: +// This includes command line options, transforms, etc., ideally inclusive enough +// to reproduce the steps used to transform the input source to the output. +// E.g., see SPIR-V OpModuleProcessed. +// Each "process" or "transform" uses is expressed in the form: // process arg0 arg1 arg2 ... // process arg0 arg1 arg2 ... // where everything is textual, and there can be zero or more arguments @@ -222,6 +225,57 @@ enum ComputeDerivativeMode { LayoutDerivativeGroupLinear, // derivative_group_linearNV }; +class TIdMaps { +public: + TMap& operator[](long long i) { return maps[i]; } + const TMap& operator[](long long i) const { return maps[i]; } +private: + TMap maps[EsiCount]; +}; + +class TNumericFeatures { +public: + TNumericFeatures() : features(0) { } + TNumericFeatures(const TNumericFeatures&) = delete; + TNumericFeatures& operator=(const TNumericFeatures&) = delete; + typedef enum : unsigned int { + shader_explicit_arithmetic_types = 1 << 0, + shader_explicit_arithmetic_types_int8 = 1 << 1, + shader_explicit_arithmetic_types_int16 = 1 << 2, + shader_explicit_arithmetic_types_int32 = 1 << 3, + shader_explicit_arithmetic_types_int64 = 1 << 4, + shader_explicit_arithmetic_types_float16 = 1 << 5, + shader_explicit_arithmetic_types_float32 = 1 << 6, + shader_explicit_arithmetic_types_float64 = 1 << 7, + shader_implicit_conversions = 1 << 8, + gpu_shader_fp64 = 1 << 9, + gpu_shader_int16 = 1 << 10, + gpu_shader_half_float = 1 << 11, + } feature; + void insert(feature f) { features |= f; } + void erase(feature f) { features &= ~f; } + bool contains(feature f) const { return (features & f) != 0; } +private: + unsigned int features; +}; + +// MustBeAssigned wraps a T, asserting that it has been assigned with +// operator =() before attempting to read with operator T() or operator ->(). +// Used to catch cases where fields are read before they have been assigned. +template +class MustBeAssigned +{ +public: + MustBeAssigned() = default; + MustBeAssigned(const T& v) : value(v) {} + operator const T&() const { assert(isSet); return value; } + const T* operator ->() const { assert(isSet); return &value; } + MustBeAssigned& operator = (const T& v) { value = v; isSet = true; return *this; } +private: + T value; + bool isSet = false; +}; + // // Set of helper functions to help parse and build the tree. // @@ -229,12 +283,25 @@ class TIntermediate { public: explicit TIntermediate(EShLanguage l, int v = 0, EProfile p = ENoProfile) : language(l), - profile(p), version(v), treeRoot(0), +#ifndef GLSLANG_ANGLE + profile(p), version(v), +#endif + treeRoot(0), + resources(TBuiltInResource{}), numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false), invertY(false), + dxPositionW(false), + enhancedMsgs(false), useStorageBuffer(false), + invariantAll(false), nanMinMaxClamp(false), - depthReplacing(false) + depthReplacing(false), + uniqueId(0), + globalUniformBlockName(""), + atomicCounterBlockName(""), + globalUniformBlockSet(TQualifier::layoutSetEnd), + globalUniformBlockBinding(TQualifier::layoutBindingEnd), + atomicCounterBlockSet(TQualifier::layoutSetEnd) #ifndef GLSLANG_WEB , implicitThisName("@this"), implicitCounterName("@count"), @@ -242,17 +309,18 @@ class TIntermediate { useVulkanMemoryModel(false), invocations(TQualifier::layoutNotSet), vertices(TQualifier::layoutNotSet), inputPrimitive(ElgNone), outputPrimitive(ElgNone), - pixelCenterInteger(false), originUpperLeft(false), + pixelCenterInteger(false), originUpperLeft(false),texCoordBuiltinRedeclared(false), vertexSpacing(EvsNone), vertexOrder(EvoNone), interlockOrdering(EioNone), pointMode(false), earlyFragmentTests(false), - postDepthCoverage(false), depthLayout(EldNone), + postDepthCoverage(false), depthLayout(EldNone), hlslFunctionality1(false), blendEquations(0), xfbMode(false), multiStream(false), layoutOverrideCoverage(false), geoPassthroughEXT(false), - numShaderRecordNVBlocks(0), + numShaderRecordBlocks(0), computeDerivativeMode(LayoutDerivativeNone), primitives(TQualifier::layoutNotSet), numTaskNVBlocks(0), + layoutPrimitiveCulling(false), autoMapBindings(false), autoMapLocations(false), flattenUniformArrays(false), @@ -263,7 +331,10 @@ class TIntermediate { textureSamplerTransformMode(EShTexSampTransKeep), needToLegalize(false), binaryDoubleOutput(false), + subgroupUniformControlFlow(false), usePhysicalStorageBuffer(false), + spirvRequirement(nullptr), + spirvExecutionMode(nullptr), uniformLocationBase(0) #endif { @@ -282,9 +353,20 @@ class TIntermediate { #endif } - void setVersion(int v) { version = v; } + void setVersion(int v) + { +#ifndef GLSLANG_ANGLE + version = v; +#endif + } + void setProfile(EProfile p) + { +#ifndef GLSLANG_ANGLE + profile = p; +#endif + } + int getVersion() const { return version; } - void setProfile(EProfile p) { profile = p; } EProfile getProfile() const { return profile; } void setSpv(const SpvVersion& s) { @@ -317,6 +399,9 @@ class TIntermediate { case EShTargetSpv_1_5: processes.addProcess("target-env spirv1.5"); break; + case EShTargetSpv_1_6: + processes.addProcess("target-env spirv1.6"); + break; default: processes.addProcess("target-env spirvUnknown"); break; @@ -335,6 +420,9 @@ class TIntermediate { case EShTargetVulkan_1_2: processes.addProcess("target-env vulkan1.2"); break; + case EShTargetVulkan_1_3: + processes.addProcess("target-env vulkan1.3"); + break; default: processes.addProcess("target-env vulkanUnknown"); break; @@ -346,6 +434,9 @@ class TIntermediate { EShLanguage getStage() const { return language; } void addRequestedExtension(const char* extension) { requestedExtensions.insert(extension); } const std::set& getRequestedExtensions() const { return requestedExtensions; } + bool isRayTracingStage() const { + return language >= EShLangRayGen && language <= EShLangCallableNV; + } void setTreeRoot(TIntermNode* r) { treeRoot = r; } TIntermNode* getTreeRoot() const { return treeRoot; } @@ -354,6 +445,7 @@ class TIntermediate { int getNumErrors() const { return numErrors; } void addPushConstantCount() { ++numPushConstants; } void setLimits(const TBuiltInResource& r) { resources = r; } + const TBuiltInResource& getLimits() const { return resources; } bool postProcess(TIntermNode*, EShLanguage); void removeTree(); @@ -376,11 +468,25 @@ class TIntermediate { } bool getInvertY() const { return invertY; } + void setDxPositionW(bool dxPosW) + { + dxPositionW = dxPosW; + if (dxPositionW) + processes.addProcess("dx-position-w"); + } + bool getDxPositionW() const { return dxPositionW; } + + void setEnhancedMsgs() + { + enhancedMsgs = true; + } + bool getEnhancedMsgs() const { return enhancedMsgs && source == EShSourceGlsl; } + #ifdef ENABLE_HLSL void setSource(EShSource s) { source = s; } EShSource getSource() const { return source; } #else - void setSource(EShSource s) { assert(s == EShSourceGlsl); } + void setSource(EShSource s) { assert(s == EShSourceGlsl); (void)s; } EShSource getSource() const { return EShSourceGlsl; } #endif @@ -391,15 +497,15 @@ class TIntermediate { TIntermSymbol* addSymbol(const TType&, const TSourceLoc&); TIntermSymbol* addSymbol(const TIntermSymbol&); TIntermTyped* addConversion(TOperator, const TType&, TIntermTyped*); - std::tuple addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* node1); + std::tuple addPairConversion(TOperator op, TIntermTyped* node0, TIntermTyped* node1); TIntermTyped* addUniShapeConversion(TOperator, const TType&, TIntermTyped*); TIntermTyped* addConversion(TBasicType convertTo, TIntermTyped* node) const; void addBiShapeConversion(TOperator, TIntermTyped*& lhsNode, TIntermTyped*& rhsNode); TIntermTyped* addShapeConversion(const TType&, TIntermTyped*); - TIntermTyped* addBinaryMath(TOperator, TIntermTyped* left, TIntermTyped* right, TSourceLoc); - TIntermTyped* addAssign(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc); - TIntermTyped* addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, TSourceLoc); - TIntermTyped* addUnaryMath(TOperator, TIntermTyped* child, TSourceLoc); + TIntermTyped* addBinaryMath(TOperator, TIntermTyped* left, TIntermTyped* right, const TSourceLoc&); + TIntermTyped* addAssign(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc&); + TIntermTyped* addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, const TSourceLoc&); + TIntermTyped* addUnaryMath(TOperator, TIntermTyped* child, const TSourceLoc&); TIntermTyped* addBuiltInFunctionCall(const TSourceLoc& line, TOperator, bool unary, TIntermNode*, const TType& returnType); bool canImplicitlyPromote(TBasicType from, TBasicType to, TOperator op = EOpNull) const; bool isIntegralPromotion(TBasicType from, TBasicType to) const; @@ -413,7 +519,7 @@ class TIntermediate { TIntermAggregate* makeAggregate(TIntermNode* node); TIntermAggregate* makeAggregate(TIntermNode* node, const TSourceLoc&); TIntermAggregate* makeAggregate(const TSourceLoc&); - TIntermTyped* setAggregateOperator(TIntermNode*, TOperator, const TType& type, TSourceLoc); + TIntermTyped* setAggregateOperator(TIntermNode*, TOperator, const TType& type, const TSourceLoc&); bool areAllChildConst(TIntermAggregate* aggrNode); TIntermSelection* addSelection(TIntermTyped* cond, TIntermNodePair code, const TSourceLoc&); TIntermTyped* addSelection(TIntermTyped* cond, TIntermTyped* trueBlock, TIntermTyped* falseBlock, const TSourceLoc&); @@ -442,10 +548,11 @@ class TIntermediate { // Low level functions to add nodes (no conversions or other higher level transformations) // If a type is provided, the node's type will be set to it. - TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc) const; - TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc, const TType&) const; - TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc) const; - TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc, const TType&) const; + TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc&) const; + TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc&, + const TType&) const; + TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, const TSourceLoc&) const; + TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, const TSourceLoc&, const TType&) const; // Constant folding (in Constant.cpp) TIntermTyped* fold(TIntermAggregate* aggrNode); @@ -454,18 +561,30 @@ class TIntermediate { TIntermTyped* foldSwizzle(TIntermTyped* node, TSwizzleSelectors& fields, const TSourceLoc&); // Tree ops - static const TIntermTyped* findLValueBase(const TIntermTyped*, bool swizzleOkay); + static const TIntermTyped* findLValueBase(const TIntermTyped*, bool swizzleOkay , bool BufferReferenceOk = false); // Linkage related void addSymbolLinkageNodes(TIntermAggregate*& linkage, EShLanguage, TSymbolTable&); void addSymbolLinkageNode(TIntermAggregate*& linkage, const TSymbol&); + TIntermAggregate* findLinkerObjects() const; - void setUseStorageBuffer() - { - useStorageBuffer = true; - processes.addProcess("use-storage-buffer"); - } + void setGlobalUniformBlockName(const char* name) { globalUniformBlockName = std::string(name); } + const char* getGlobalUniformBlockName() const { return globalUniformBlockName.c_str(); } + void setGlobalUniformSet(unsigned int set) { globalUniformBlockSet = set; } + unsigned int getGlobalUniformSet() const { return globalUniformBlockSet; } + void setGlobalUniformBinding(unsigned int binding) { globalUniformBlockBinding = binding; } + unsigned int getGlobalUniformBinding() const { return globalUniformBlockBinding; } + + void setAtomicCounterBlockName(const char* name) { atomicCounterBlockName = std::string(name); } + const char* getAtomicCounterBlockName() const { return atomicCounterBlockName.c_str(); } + void setAtomicCounterBlockSet(unsigned int set) { atomicCounterBlockSet = set; } + unsigned int getAtomicCounterBlockSet() const { return atomicCounterBlockSet; } + + + void setUseStorageBuffer() { useStorageBuffer = true; } bool usingStorageBuffer() const { return useStorageBuffer; } + void setInvariantAll() { invariantAll = true; } + bool isInvariantAll() const { return invariantAll; } void setDepthReplacing() { depthReplacing = true; } bool isDepthReplacing() const { return depthReplacing; } bool setLocalSize(int dim, int size) @@ -477,6 +596,11 @@ class TIntermediate { return true; } unsigned int getLocalSize(int dim) const { return localSize[dim]; } + bool isLocalSizeSet() const + { + // Return true if any component has been set (i.e. any component is not default). + return localSizeNotDefault[0] || localSizeNotDefault[1] || localSizeNotDefault[2]; + } bool setLocalSizeSpecId(int dim, int id) { if (localSizeSpecId[dim] != TQualifier::layoutNotSet) @@ -485,6 +609,13 @@ class TIntermediate { return true; } int getLocalSizeSpecId(int dim) const { return localSizeSpecId[dim]; } + bool isLocalSizeSpecialized() const + { + // Return true if any component has been specialized. + return localSizeSpecId[0] != TQualifier::layoutNotSet || + localSizeSpecId[1] != TQualifier::layoutNotSet || + localSizeSpecId[2] != TQualifier::layoutNotSet; + } #ifdef GLSLANG_WEB void output(TInfoSink&, bool tree) { } @@ -503,7 +634,7 @@ class TIntermediate { bool getAutoMapBindings() const { return false; } bool getAutoMapLocations() const { return false; } int getNumPushConstants() const { return 0; } - void addShaderRecordNVCount() { } + void addShaderRecordCount() { } void addTaskNVCount() { } void setUseVulkanMemoryModel() { } bool usingVulkanMemoryModel() const { return false; } @@ -583,7 +714,7 @@ class TIntermediate { processes.addProcess("flatten-uniform-arrays"); } bool getFlattenUniformArrays() const { return flattenUniformArrays; } -#endif +#endif void setNoStorageFormat(bool b) { useUnknownFormat = b; @@ -620,7 +751,7 @@ class TIntermediate { void setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode) { textureSamplerTransformMode = mode; } int getNumPushConstants() const { return numPushConstants; } - void addShaderRecordNVCount() { ++numShaderRecordNVBlocks; } + void addShaderRecordCount() { ++numShaderRecordBlocks; } void addTaskNVCount() { ++numTaskNVBlocks; } bool setInvocations(int i) @@ -703,6 +834,8 @@ class TIntermediate { bool getOriginUpperLeft() const { return originUpperLeft; } void setPixelCenterInteger() { pixelCenterInteger = true; } bool getPixelCenterInteger() const { return pixelCenterInteger; } + void setTexCoordRedeclared() { texCoordBuiltinRedeclared = true; } + bool getTexCoordRedeclared() const { return texCoordBuiltinRedeclared; } void addBlendEquation(TBlendEquationShift b) { blendEquations |= (1 << b); } unsigned int getBlendEquations() const { return blendEquations; } bool setXfbBufferStride(int buffer, unsigned stride) @@ -723,6 +856,8 @@ class TIntermediate { void setLayoutDerivativeMode(ComputeDerivativeMode mode) { computeDerivativeMode = mode; } bool hasLayoutDerivativeModeNone() const { return computeDerivativeMode != LayoutDerivativeNone; } ComputeDerivativeMode getLayoutDerivativeModeNone() const { return computeDerivativeMode; } + void setLayoutPrimitiveCulling() { layoutPrimitiveCulling = true; } + bool getLayoutPrimitiveCulling() const { return layoutPrimitiveCulling; } bool setPrimitives(int m) { if (primitives != TQualifier::layoutNotSet) @@ -759,8 +894,34 @@ class TIntermediate { void setBinaryDoubleOutput() { binaryDoubleOutput = true; } bool getBinaryDoubleOutput() { return binaryDoubleOutput; } + + void setSubgroupUniformControlFlow() { subgroupUniformControlFlow = true; } + bool getSubgroupUniformControlFlow() const { return subgroupUniformControlFlow; } + + // GL_EXT_spirv_intrinsics + void insertSpirvRequirement(const TSpirvRequirement* spirvReq); + bool hasSpirvRequirement() const { return spirvRequirement != nullptr; } + const TSpirvRequirement& getSpirvRequirement() const { return *spirvRequirement; } + void insertSpirvExecutionMode(int executionMode, const TIntermAggregate* args = nullptr); + void insertSpirvExecutionModeId(int executionMode, const TIntermAggregate* args); + bool hasSpirvExecutionMode() const { return spirvExecutionMode != nullptr; } + const TSpirvExecutionMode& getSpirvExecutionMode() const { return *spirvExecutionMode; } #endif // GLSLANG_WEB + void addBlockStorageOverride(const char* nameStr, TBlockStorageClass backing) + { + std::string name(nameStr); + blockBackingOverrides[name] = backing; + } + TBlockStorageClass getBlockStorageOverride(const char* nameStr) const + { + std::string name = nameStr; + auto pos = blockBackingOverrides.find(name); + if (pos == blockBackingOverrides.end()) + return EbsNone; + else + return pos->second; + } #ifdef ENABLE_HLSL void setHlslFunctionality1() { hlslFunctionality1 = true; } bool getHlslFunctionality1() const { return hlslFunctionality1; } @@ -784,10 +945,27 @@ class TIntermediate { bool usingHlslIoMapping() { return false; } #endif + bool usingScalarBlockLayout() const { + for (auto extIt = requestedExtensions.begin(); extIt != requestedExtensions.end(); ++extIt) { + if (*extIt == E_GL_EXT_scalar_block_layout) + return true; + } + return false; + } + + bool IsRequestedExtension(const char* extension) const + { + return (requestedExtensions.find(extension) != requestedExtensions.end()); + } + void addToCallGraph(TInfoSink&, const TString& caller, const TString& callee); void merge(TInfoSink&, TIntermediate&); void finalCheck(TInfoSink&, bool keepUncalled); + void mergeGlobalUniformBlocks(TInfoSink& infoSink, TIntermediate& unit, bool mergeExistingOnly); + void mergeUniformObjects(TInfoSink& infoSink, TIntermediate& unit); + void checkStageIO(TInfoSink&, TIntermediate&); + bool buildConvertOp(TBasicType dst, TBasicType src, TOperator& convertOp) const; TIntermTyped* createConversion(TBasicType convertTo, TIntermTyped* node) const; @@ -796,6 +974,7 @@ class TIntermediate { int addUsedLocation(const TQualifier&, const TType&, bool& typeCollision); int checkLocationRange(int set, const TIoRange& range, const TType&, bool& typeCollision); + int checkLocationRT(int set, int location); int addUsedOffsets(int binding, int offset, int numOffsets); bool addUsedConstantId(int id); static int computeTypeLocationSize(const TType&, EShLanguage); @@ -810,6 +989,8 @@ class TIntermediate { static int getOffset(const TType& type, int index); static int getBlockSize(const TType& blockType); static int computeBufferReferenceTypeSize(const TType&); + static bool isIoResizeArray(const TType& type, EShLanguage language); + bool promote(TIntermOperator*); void setNanMinMaxClamp(bool setting) { nanMinMaxClamp = setting; } bool getNanMinMaxClamp() const { return nanMinMaxClamp; } @@ -828,47 +1009,53 @@ class TIntermediate { void addProcess(const std::string& process) { processes.addProcess(process); } void addProcessArgument(const std::string& arg) { processes.addArgument(arg); } const std::vector& getProcesses() const { return processes.getProcesses(); } + unsigned long long getUniqueId() const { return uniqueId; } + void setUniqueId(unsigned long long id) { uniqueId = id; } // Certain explicit conversions are allowed conditionally #ifdef GLSLANG_WEB bool getArithemeticInt8Enabled() const { return false; } bool getArithemeticInt16Enabled() const { return false; } bool getArithemeticFloat16Enabled() const { return false; } + void updateNumericFeature(TNumericFeatures::feature f, bool on) { } #else bool getArithemeticInt8Enabled() const { - return extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int8); + return numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) || + numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int8); } bool getArithemeticInt16Enabled() const { - return extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || - extensionRequested(E_GL_AMD_gpu_shader_int16) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int16); + return numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) || + numericFeatures.contains(TNumericFeatures::gpu_shader_int16) || + numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int16); } bool getArithemeticFloat16Enabled() const { - return extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || - extensionRequested(E_GL_AMD_gpu_shader_half_float) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float16); + return numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) || + numericFeatures.contains(TNumericFeatures::gpu_shader_half_float) || + numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float16); } + void updateNumericFeature(TNumericFeatures::feature f, bool on) + { on ? numericFeatures.insert(f) : numericFeatures.erase(f); } #endif protected: - TIntermSymbol* addSymbol(int Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&); - void error(TInfoSink& infoSink, const char*); - void warn(TInfoSink& infoSink, const char*); + TIntermSymbol* addSymbol(long long Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&); + void error(TInfoSink& infoSink, const char*, EShLanguage unitStage = EShLangCount); + void warn(TInfoSink& infoSink, const char*, EShLanguage unitStage = EShLangCount); void mergeCallGraphs(TInfoSink&, TIntermediate&); void mergeModes(TInfoSink&, TIntermediate&); void mergeTrees(TInfoSink&, TIntermediate&); - void seedIdMap(TMap& idMap, int& maxId); - void remapIds(const TMap& idMap, int idShift, TIntermediate&); + void seedIdMap(TIdMaps& idMaps, long long& IdShift); + void remapIds(const TIdMaps& idMaps, long long idShift, TIntermediate&); void mergeBodies(TInfoSink&, TIntermSequence& globals, const TIntermSequence& unitGlobals); - void mergeLinkerObjects(TInfoSink&, TIntermSequence& linkerObjects, const TIntermSequence& unitLinkerObjects); + void mergeLinkerObjects(TInfoSink&, TIntermSequence& linkerObjects, const TIntermSequence& unitLinkerObjects, EShLanguage); + void mergeBlockDefinitions(TInfoSink&, TIntermSymbol* block, TIntermSymbol* unitBlock, TIntermediate* unitRoot); void mergeImplicitArraySizes(TType&, const TType&); - void mergeErrorCheck(TInfoSink&, const TIntermSymbol&, const TIntermSymbol&, bool crossStage); + void mergeErrorCheck(TInfoSink&, const TIntermSymbol&, const TIntermSymbol&, EShLanguage); void checkCallGraphCycles(TInfoSink&); void checkCallGraphBodies(TInfoSink&, bool keepUncalled); void inOutLocationCheck(TInfoSink&); - TIntermAggregate* findLinkerObjects() const; + void sharedBlockCheck(TInfoSink&); bool userOutputUsed() const; bool isSpecializationOperation(const TIntermOperator&) const; bool isNonuniformPropagating(TOperator) const; @@ -881,17 +1068,7 @@ class TIntermediate { bool specConstantPropagates(const TIntermTyped&, const TIntermTyped&); void performTextureUpgradeAndSamplerRemovalTransformation(TIntermNode* root); bool isConversionAllowed(TOperator op, TIntermTyped* node) const; - std::tuple getConversionDestinatonType(TBasicType type0, TBasicType type1, TOperator op) const; - - // JohnK: I think this function should go away. - // This data structure is just a log to pass on to back ends. - // Versioning and extensions are handled in Version.cpp, with a rich - // set of functions for querying stages, versions, extension enable/disabled, etc. -#ifdef GLSLANG_WEB - bool extensionRequested(const char *extension) const { return false; } -#else - bool extensionRequested(const char *extension) const {return requestedExtensions.find(extension) != requestedExtensions.end();} -#endif + std::tuple getConversionDestinationType(TBasicType type0, TBasicType type1, TOperator op) const; static const char* getResourceName(TResourceType); @@ -901,23 +1078,39 @@ class TIntermediate { typedef std::list TGraph; TGraph callGraph; +#ifdef GLSLANG_ANGLE + const EProfile profile = ECoreProfile; + const int version = 450; +#else EProfile profile; // source profile int version; // source version +#endif SpvVersion spvVersion; TIntermNode* treeRoot; std::set requestedExtensions; // cumulation of all enabled or required extensions; not connected to what subset of the shader used them - TBuiltInResource resources; + MustBeAssigned resources; int numEntryPoints; int numErrors; int numPushConstants; bool recursive; bool invertY; + bool dxPositionW; + bool enhancedMsgs; bool useStorageBuffer; + bool invariantAll; bool nanMinMaxClamp; // true if desiring min/max/clamp to favor non-NaN over NaN bool depthReplacing; int localSize[3]; bool localSizeNotDefault[3]; int localSizeSpecId[3]; + unsigned long long uniqueId; + + std::string globalUniformBlockName; + std::string atomicCounterBlockName; + unsigned int globalUniformBlockSet; + unsigned int globalUniformBlockBinding; + unsigned int atomicCounterBlockSet; + #ifndef GLSLANG_WEB public: const char* const implicitThisName; @@ -931,6 +1124,7 @@ class TIntermediate { TLayoutGeometry outputPrimitive; bool pixelCenterInteger; bool originUpperLeft; + bool texCoordBuiltinRedeclared; TVertexSpacing vertexSpacing; TVertexOrder vertexOrder; TInterlockOrdering interlockOrdering; @@ -945,10 +1139,11 @@ class TIntermediate { bool multiStream; bool layoutOverrideCoverage; bool geoPassthroughEXT; - int numShaderRecordNVBlocks; + int numShaderRecordBlocks; ComputeDerivativeMode computeDerivativeMode; int primitives; int numTaskNVBlocks; + bool layoutPrimitiveCulling; // Base shift values std::array shiftBinding; @@ -971,17 +1166,26 @@ class TIntermediate { bool needToLegalize; bool binaryDoubleOutput; + bool subgroupUniformControlFlow; bool usePhysicalStorageBuffer; + TSpirvRequirement* spirvRequirement; + TSpirvExecutionMode* spirvExecutionMode; + std::unordered_map uniformLocationOverrides; int uniformLocationBase; + TNumericFeatures numericFeatures; #endif + std::unordered_map blockBackingOverrides; std::unordered_set usedConstantId; // specialization constant ids used std::vector usedAtomics; // sets of bindings used by atomic counters std::vector usedIo[4]; // sets of used locations, one for each of in, out, uniform, and buffers + std::vector usedIoRT[2]; // sets of used location, one for rayPayload/rayPayloadIN and other + // for callableData/callableDataIn // set of names of statically read/written I/O that might need extra checking std::set ioAccessed; + // source code of shader, useful as part of debug information std::string sourceFile; std::string sourceText; diff --git a/Externals/glslang/glslang/MachineIndependent/parseConst.cpp b/Externals/glslang/glslang/MachineIndependent/parseConst.cpp index 1a8e6d9987cd..6c182991f516 100644 --- a/Externals/glslang/glslang/MachineIndependent/parseConst.cpp +++ b/Externals/glslang/glslang/MachineIndependent/parseConst.cpp @@ -165,22 +165,31 @@ void TConstTraverser::visitConstantUnion(TIntermConstantUnion* node) } } } else { - // matrix from vector - int count = 0; - const int startIndex = index; + // matrix from vector or scalar int nodeComps = node->getType().computeNumComponents(); - for (int i = startIndex; i < endIndex; i++) { - if (i >= instanceSize) - return; - if (i == startIndex || (i - startIndex) % (matrixRows + 1) == 0 ) + if (nodeComps == 1) { + for (int c = 0; c < matrixCols; ++c) { + for (int r = 0; r < matrixRows; ++r) { + if (r == c) + leftUnionArray[index] = rightUnionArray[0]; + else + leftUnionArray[index].setDConst(0.0); + index++; + } + } + } else { + int count = 0; + for (int i = index; i < endIndex; i++) { + if (i >= instanceSize) + return; + + // construct the matrix in column-major order, from + // the components provided, in order leftUnionArray[i] = rightUnionArray[count]; - else - leftUnionArray[i].setDConst(0.0); - - index++; - if (nodeComps > 1) + index++; count++; + } } } } diff --git a/Externals/glslang/glslang/MachineIndependent/parseVersions.h b/Externals/glslang/glslang/MachineIndependent/parseVersions.h index aa1964fc2e5e..7248354e4b6d 100644 --- a/Externals/glslang/glslang/MachineIndependent/parseVersions.h +++ b/Externals/glslang/glslang/MachineIndependent/parseVersions.h @@ -58,7 +58,7 @@ class TParseVersions { const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, bool forwardCompatible, EShMessages messages) : -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) forwardCompatible(forwardCompatible), profile(profile), #endif @@ -101,6 +101,7 @@ class TParseVersions { void updateExtensionBehavior(int line, const char* const extension, const char* behavior) { } void updateExtensionBehavior(const char* const extension, TExtensionBehavior) { } void checkExtensionStage(const TSourceLoc&, const char* const extension) { } + void extensionRequires(const TSourceLoc&, const char* const extension, const char* behavior) { } void fullIntegerCheck(const TSourceLoc&, const char* op) { } void doubleCheck(const TSourceLoc&, const char* op) { } bool float16Arithmetic() { return false; } @@ -115,9 +116,14 @@ class TParseVersions { bool relaxedErrors() const { return false; } bool suppressWarnings() const { return true; } bool isForwardCompatible() const { return false; } +#else +#ifdef GLSLANG_ANGLE + const bool forwardCompatible = true; + const EProfile profile = ECoreProfile; #else bool forwardCompatible; // true if errors are to be given for use of deprecated features EProfile profile; // the declared profile in the shader (core by default) +#endif bool isEsProfile() const { return profile == EEsProfile; } void requireProfile(const TSourceLoc& loc, int profileMask, const char* featureDesc); void profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, int numExtensions, @@ -139,6 +145,7 @@ class TParseVersions { virtual bool checkExtensionsRequested(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc); virtual void checkExtensionStage(const TSourceLoc&, const char* const extension); + virtual void extensionRequires(const TSourceLoc&, const char* const extension, const char* behavior); virtual void fullIntegerCheck(const TSourceLoc&, const char* op); virtual void unimplemented(const TSourceLoc&, const char* featureDesc); @@ -170,6 +177,7 @@ class TParseVersions { virtual void vulkanRemoved(const TSourceLoc&, const char* op); virtual void requireVulkan(const TSourceLoc&, const char* op); virtual void requireSpv(const TSourceLoc&, const char* op); + virtual void requireSpv(const TSourceLoc&, const char *op, unsigned int version); #if defined(GLSLANG_WEB) && !defined(GLSLANG_WEB_DEVEL) @@ -221,7 +229,8 @@ class TParseVersions { TIntermediate& intermediate; // helper for making and hooking up pieces of the parse tree protected: - TMap extensionBehavior; // for each extension string, what its current behavior is set to + TMap extensionBehavior; // for each extension string, what its current behavior is + TMap extensionMinSpv; // for each extension string, store minimum spirv required EShMessages messages; // errors/warnings/rule-sets int numErrors; // number of compile-time errors encountered TInputScanner* currentScanner; diff --git a/Externals/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp b/Externals/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp old mode 100755 new mode 100644 index d7ff485c0aa3..aa1e0d745163 --- a/Externals/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/Externals/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -422,10 +422,10 @@ int TPpContext::eval(int token, int precedence, bool shortCircuit, int& res, boo if (! parseContext.isReadingHLSL() && isMacroInput()) { if (parseContext.relaxedErrors()) parseContext.ppWarn(ppToken->loc, "nonportable when expanded from macros for preprocessor expression", - "defined", ""); + "defined", ""); else parseContext.ppError(ppToken->loc, "cannot use in preprocessor expression when expanded from macros", - "defined", ""); + "defined", ""); } bool needclose = 0; token = scanToken(ppToken); @@ -455,6 +455,7 @@ int TPpContext::eval(int token, int precedence, bool shortCircuit, int& res, boo token = scanToken(ppToken); } } else { + token = tokenPaste(token, *ppToken); token = evalToToken(token, shortCircuit, res, err, ppToken); return eval(token, precedence, shortCircuit, res, err, ppToken); } @@ -621,14 +622,25 @@ int TPpContext::CPPinclude(TPpToken* ppToken) { const TSourceLoc directiveLoc = ppToken->loc; bool startWithLocalSearch = true; // to additionally include the extra "" paths - int token = scanToken(ppToken); + int token; - // handle -style #include - if (token == '<') { + // Find the first non-whitespace char after #include + int ch = getChar(); + while (ch == ' ' || ch == '\t') { + ch = getChar(); + } + if (ch == '<') { + // style startWithLocalSearch = false; token = scanHeaderName(ppToken, '>'); + } else if (ch == '"') { + // "header-name" style + token = scanHeaderName(ppToken, '"'); + } else { + // unexpected, get the full token to generate the error + ungetChar(); + token = scanToken(ppToken); } - // otherwise ppToken already has the header name and it was "header-name" style if (token != PpAtomConstString) { parseContext.ppError(directiveLoc, "must be followed by a header name", "#include", ""); @@ -711,7 +723,9 @@ int TPpContext::CPPline(TPpToken* ppToken) const char* sourceName = nullptr; // Optional source file name. bool lineErr = false; bool fileErr = false; + disableEscapeSequences = true; token = eval(token, MIN_PRECEDENCE, false, lineRes, lineErr, ppToken); + disableEscapeSequences = false; if (! lineErr) { lineToken = lineRes; if (token == '\n') @@ -754,7 +768,9 @@ int TPpContext::CPPline(TPpToken* ppToken) // Handle #error int TPpContext::CPPerror(TPpToken* ppToken) { + disableEscapeSequences = true; int token = scanToken(ppToken); + disableEscapeSequences = false; std::string message; TSourceLoc loc = ppToken->loc; @@ -1169,7 +1185,9 @@ MacroExpandResult TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, b int macroAtom = atomStrings.getAtom(ppToken->name); switch (macroAtom) { case PpAtomLineMacro: - ppToken->ival = parseContext.getCurrentLoc().line; + // Arguments which are macro have been replaced in the first stage. + if (ppToken->ival == 0) + ppToken->ival = parseContext.getCurrentLoc().line; snprintf(ppToken->name, sizeof(ppToken->name), "%d", ppToken->ival); UngetToken(PpAtomConstInt, ppToken); return MacroExpandStarted; @@ -1270,6 +1288,11 @@ MacroExpandResult TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, b nestStack.push_back('}'); else if (nestStack.size() > 0 && token == nestStack.back()) nestStack.pop_back(); + + //Macro replacement list is expanded in the last stage. + if (atomStrings.getAtom(ppToken->name) == PpAtomLineMacro) + ppToken->ival = parseContext.getCurrentLoc().line; + in->args[arg]->putToken(token, ppToken); tokenRecorded = true; } diff --git a/Externals/glslang/glslang/MachineIndependent/preprocessor/PpContext.cpp b/Externals/glslang/glslang/MachineIndependent/preprocessor/PpContext.cpp old mode 100755 new mode 100644 index cc003a8d12b1..1363ce2be047 --- a/Externals/glslang/glslang/MachineIndependent/preprocessor/PpContext.cpp +++ b/Externals/glslang/glslang/MachineIndependent/preprocessor/PpContext.cpp @@ -87,7 +87,8 @@ namespace glslang { TPpContext::TPpContext(TParseContextBase& pc, const std::string& rootFileName, TShader::Includer& inclr) : preamble(0), strings(0), previous_token('\n'), parseContext(pc), includer(inclr), inComment(false), rootFileName(rootFileName), - currentSourceFile(rootFileName) + currentSourceFile(rootFileName), + disableEscapeSequences(false) { ifdepth = 0; for (elsetracker = 0; elsetracker < maxIfNesting; elsetracker++) diff --git a/Externals/glslang/glslang/MachineIndependent/preprocessor/PpContext.h b/Externals/glslang/glslang/MachineIndependent/preprocessor/PpContext.h index 8470e172a221..714b5eadba46 100644 --- a/Externals/glslang/glslang/MachineIndependent/preprocessor/PpContext.h +++ b/Externals/glslang/glslang/MachineIndependent/preprocessor/PpContext.h @@ -105,13 +105,13 @@ class TPpToken { } // Used for comparing macro definitions, so checks what is relevant for that. - bool operator==(const TPpToken& right) + bool operator==(const TPpToken& right) const { return space == right.space && ival == right.ival && dval == right.dval && i64val == right.i64val && strncmp(name, right.name, MaxTokenLength) == 0; } - bool operator!=(const TPpToken& right) { return ! operator==(right); } + bool operator!=(const TPpToken& right) const { return ! operator==(right); } TSourceLoc loc; // True if a space (for white space or a removed comment) should also be @@ -695,6 +695,7 @@ class TPpContext { std::string currentSourceFile; std::istringstream strtodStream; + bool disableEscapeSequences; }; } // end namespace glslang diff --git a/Externals/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/Externals/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp old mode 100755 new mode 100644 index c293af3c1ea6..ad11792002cc --- a/Externals/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp +++ b/Externals/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp @@ -1026,12 +1026,80 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) case '\'': return pp->characterLiteral(ppToken); case '"': - // TODO: If this gets enhanced to handle escape sequences, or - // anything that is different than what #include needs, then - // #include needs to use scanHeaderName() for this. + // #include uses scanHeaderName() to ignore these escape sequences. ch = getch(); while (ch != '"' && ch != '\n' && ch != EndOfInput) { if (len < MaxTokenLength) { + if (ch == '\\' && !pp->disableEscapeSequences) { + int nextCh = getch(); + switch (nextCh) { + case '\'': ch = 0x27; break; + case '"': ch = 0x22; break; + case '?': ch = 0x3f; break; + case '\\': ch = 0x5c; break; + case 'a': ch = 0x07; break; + case 'b': ch = 0x08; break; + case 'f': ch = 0x0c; break; + case 'n': ch = 0x0a; break; + case 'r': ch = 0x0d; break; + case 't': ch = 0x09; break; + case 'v': ch = 0x0b; break; + case 'x': + // Hex value, arbitrary number of characters. Terminated by the first + // non-hex digit + { + int numDigits = 0; + ch = 0; + while (true) { + nextCh = getch(); + if (nextCh >= '0' && nextCh <= '9') + nextCh -= '0'; + else if (nextCh >= 'A' && nextCh <= 'F') + nextCh -= 'A' - 10; + else if (nextCh >= 'a' && nextCh <= 'f') + nextCh -= 'a' - 10; + else { + ungetch(); + break; + } + numDigits++; + ch = ch * 0x10 + nextCh; + } + if (numDigits == 0) { + pp->parseContext.ppError(ppToken->loc, "Expected hex value in escape sequence", "string", ""); + } + break; + } + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + // Octal value, up to three octal digits + { + int numDigits = 1; + ch = nextCh - '0'; + while (numDigits < 3) { + nextCh = getch(); + if (nextCh >= '0' && nextCh <= '7') + nextCh -= '0'; + else { + ungetch(); + break; + } + numDigits++; + ch = ch * 8 + nextCh; + } + break; + } + default: + pp->parseContext.ppError(ppToken->loc, "Invalid escape sequence", "string", ""); + break; + } + } ppToken->name[len] = (char)ch; len++; ch = getch(); @@ -1120,10 +1188,14 @@ int TPpContext::tokenize(TPpToken& ppToken) continue; break; case PpAtomConstString: + // HLSL allows string literals. + // GLSL allows string literals with GL_EXT_debug_printf. if (ifdepth == 0 && parseContext.intermediate.getSource() != EShSourceHlsl) { - // HLSL allows string literals. - parseContext.ppError(ppToken.loc, "string literals not supported", "\"\"", ""); - continue; + const char* const string_literal_EXTs[] = { E_GL_EXT_debug_printf, E_GL_EXT_spirv_intrinsics }; + parseContext.requireExtensions(ppToken.loc, 2, string_literal_EXTs, "string literal"); + if (!parseContext.extensionTurnedOn(E_GL_EXT_debug_printf) && + !parseContext.extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) + continue; } break; case '\'': diff --git a/Externals/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/Externals/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp old mode 100755 new mode 100644 diff --git a/Externals/glslang/glslang/MachineIndependent/propagateNoContraction.cpp b/Externals/glslang/glslang/MachineIndependent/propagateNoContraction.cpp index 83a3230f515d..9def592bafac 100644 --- a/Externals/glslang/glslang/MachineIndependent/propagateNoContraction.cpp +++ b/Externals/glslang/glslang/MachineIndependent/propagateNoContraction.cpp @@ -867,4 +867,4 @@ void PropagateNoContraction(const glslang::TIntermediate& intermediate) } }; -#endif // GLSLANG_WEB \ No newline at end of file +#endif // GLSLANG_WEB diff --git a/Externals/glslang/glslang/MachineIndependent/reflection.cpp b/Externals/glslang/glslang/MachineIndependent/reflection.cpp index b09367113cfd..9ea48c452df9 100644 --- a/Externals/glslang/glslang/MachineIndependent/reflection.cpp +++ b/Externals/glslang/glslang/MachineIndependent/reflection.cpp @@ -33,7 +33,7 @@ // POSSIBILITY OF SUCH DAMAGE. // -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) #include "../Include/Common.h" #include "reflection.h" @@ -77,10 +77,10 @@ namespace glslang { // This is in the glslang namespace directly so it can be a friend of TReflection. // -class TReflectionTraverser : public TLiveTraverser { +class TReflectionTraverser : public TIntermTraverser { public: TReflectionTraverser(const TIntermediate& i, TReflection& r) : - TLiveTraverser(i), reflection(r) { } + TIntermTraverser(), intermediate(i), reflection(r), updateStageMasks(true) { } virtual bool visitBinary(TVisit, TIntermBinary* node); virtual void visitSymbol(TIntermSymbol* base); @@ -92,11 +92,28 @@ class TReflectionTraverser : public TLiveTraverser { if (processedDerefs.find(&base) == processedDerefs.end()) { processedDerefs.insert(&base); + int blockIndex = -1; + int offset = -1; + TList derefs; + TString baseName = base.getName(); + + if (base.getType().getBasicType() == EbtBlock) { + offset = 0; + bool anonymous = IsAnonymous(baseName); + const TString& blockName = base.getType().getTypeName(); + + if (!anonymous) + baseName = blockName; + else + baseName = ""; + + blockIndex = addBlockName(blockName, base.getType(), intermediate.getBlockSize(base.getType())); + } + // Use a degenerate (empty) set of dereferences to immediately put as at the end of // the dereference change expected by blowUpActiveAggregate. - TList derefs; - blowUpActiveAggregate(base.getType(), base.getName(), derefs, derefs.end(), -1, -1, 0, 0, - base.getQualifier().storage, true); + blowUpActiveAggregate(base.getType(), baseName, derefs, derefs.end(), offset, blockIndex, 0, -1, 0, + base.getQualifier().storage, updateStageMasks); } } @@ -155,9 +172,9 @@ class TReflectionTraverser : public TLiveTraverser { void getOffsets(const TType& type, TVector& offsets) { const TTypeList& memberList = *type.getStruct(); - int memberSize = 0; int offset = 0; + for (size_t m = 0; m < offsets.size(); ++m) { // if the user supplied an offset, snap to it now if (memberList[m].type->getQualifier().hasOffset()) @@ -233,7 +250,7 @@ class TReflectionTraverser : public TLiveTraverser { // A value of 0 for arraySize will mean to use the full array's size. void blowUpActiveAggregate(const TType& baseType, const TString& baseName, const TList& derefs, TList::const_iterator deref, int offset, int blockIndex, int arraySize, - int topLevelArrayStride, TStorageQualifier baseStorage, bool active) + int topLevelArraySize, int topLevelArrayStride, TStorageQualifier baseStorage, bool active) { // when strictArraySuffix is enabled, we closely follow the rules from ARB_program_interface_query. // Broadly: @@ -262,14 +279,15 @@ class TReflectionTraverser : public TLiveTraverser { // Visit all the indices of this array, and for each one add on the remaining dereferencing for (int i = 0; i < std::max(visitNode->getLeft()->getType().getOuterArraySize(), 1); ++i) { TString newBaseName = name; - if (strictArraySuffix && blockParent) + if (terminalType->getBasicType() == EbtBlock) {} + else if (strictArraySuffix && blockParent) newBaseName.append(TString("[0]")); else if (strictArraySuffix || baseType.getBasicType() != EbtBlock) newBaseName.append(TString("[") + String(i) + "]"); TList::const_iterator nextDeref = deref; ++nextDeref; blowUpActiveAggregate(*terminalType, newBaseName, derefs, nextDeref, offset, blockIndex, arraySize, - topLevelArrayStride, baseStorage, active); + topLevelArraySize, topLevelArrayStride, baseStorage, active); if (offset >= 0) offset += stride; @@ -282,9 +300,10 @@ class TReflectionTraverser : public TLiveTraverser { int stride = getArrayStride(baseType, visitNode->getLeft()->getType()); index = visitNode->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst(); - if (strictArraySuffix && blockParent) { + if (terminalType->getBasicType() == EbtBlock) {} + else if (strictArraySuffix && blockParent) name.append(TString("[0]")); - } else if (strictArraySuffix || baseType.getBasicType() != EbtBlock) { + else if (strictArraySuffix || baseType.getBasicType() != EbtBlock) { name.append(TString("[") + String(index) + "]"); if (offset >= 0) @@ -294,7 +313,10 @@ class TReflectionTraverser : public TLiveTraverser { if (topLevelArrayStride == 0) topLevelArrayStride = stride; - blockParent = false; + // expand top-level arrays in blocks with [0] suffix + if (topLevelArrayStride != 0 && visitNode->getLeft()->getType().isArray()) { + blockParent = false; + } break; } case EOpIndexDirectStruct: @@ -304,6 +326,12 @@ class TReflectionTraverser : public TLiveTraverser { if (name.size() > 0) name.append("."); name.append((*visitNode->getLeft()->getType().getStruct())[index].type->getFieldName()); + + // expand non top-level arrays with [x] suffix + if (visitNode->getLeft()->getType().getBasicType() != EbtBlock && terminalType->isArray()) + { + blockParent = false; + } break; default: break; @@ -323,24 +351,27 @@ class TReflectionTraverser : public TLiveTraverser { if (offset >= 0) stride = getArrayStride(baseType, *terminalType); - if (topLevelArrayStride == 0) - topLevelArrayStride = stride; - int arrayIterateSize = std::max(terminalType->getOuterArraySize(), 1); // for top-level arrays in blocks, only expand [0] to avoid explosion of items - if (strictArraySuffix && blockParent) + if ((strictArraySuffix && blockParent) || + ((topLevelArraySize == arrayIterateSize) && (topLevelArrayStride == 0))) { arrayIterateSize = 1; + } + + if (topLevelArrayStride == 0) + topLevelArrayStride = stride; for (int i = 0; i < arrayIterateSize; ++i) { TString newBaseName = name; - newBaseName.append(TString("[") + String(i) + "]"); + if (terminalType->getBasicType() != EbtBlock) + newBaseName.append(TString("[") + String(i) + "]"); TType derefType(*terminalType, 0); if (offset >= 0) offset = baseOffset + stride * i; blowUpActiveAggregate(derefType, newBaseName, derefs, derefs.end(), offset, blockIndex, 0, - topLevelArrayStride, baseStorage, active); + topLevelArraySize, topLevelArrayStride, baseStorage, active); } } else { // Visit all members of this aggregate, and for each one, @@ -369,8 +400,31 @@ class TReflectionTraverser : public TLiveTraverser { arrayStride = getArrayStride(baseType, derefType); } - blowUpActiveAggregate(derefType, newBaseName, derefs, derefs.end(), offset, blockIndex, 0, - arrayStride, baseStorage, active); + if (topLevelArraySize == -1 && arrayStride == 0 && blockParent) + topLevelArraySize = 1; + + if (strictArraySuffix && blockParent) { + // if this member is an array, store the top-level array stride but start the explosion from + // the inner struct type. + if (derefType.isArray() && derefType.isStruct()) { + newBaseName.append("[0]"); + auto dimSize = derefType.isUnsizedArray() ? 0 : derefType.getArraySizes()->getDimSize(0); + blowUpActiveAggregate(TType(derefType, 0), newBaseName, derefs, derefs.end(), memberOffsets[i], + blockIndex, 0, dimSize, arrayStride, terminalType->getQualifier().storage, false); + } + else if (derefType.isArray()) { + auto dimSize = derefType.isUnsizedArray() ? 0 : derefType.getArraySizes()->getDimSize(0); + blowUpActiveAggregate(derefType, newBaseName, derefs, derefs.end(), memberOffsets[i], blockIndex, + 0, dimSize, 0, terminalType->getQualifier().storage, false); + } + else { + blowUpActiveAggregate(derefType, newBaseName, derefs, derefs.end(), memberOffsets[i], blockIndex, + 0, 1, 0, terminalType->getQualifier().storage, false); + } + } else { + blowUpActiveAggregate(derefType, newBaseName, derefs, derefs.end(), offset, blockIndex, 0, + topLevelArraySize, arrayStride, baseStorage, active); + } } } @@ -406,6 +460,7 @@ class TReflectionTraverser : public TLiveTraverser { if ((reflection.options & EShReflectionSeparateBuffers) && terminalType->isAtomic()) reflection.atomicCounterUniformIndices.push_back(uniformIndex); + variables.back().topLevelArraySize = topLevelArraySize; variables.back().topLevelArrayStride = topLevelArrayStride; if ((reflection.options & EShReflectionAllBlockVariables) && active) { @@ -537,65 +592,17 @@ class TReflectionTraverser : public TLiveTraverser { if (! anonymous) baseName = blockName; - if (base->getType().isArray()) { - TType derefType(base->getType(), 0); - - assert(! anonymous); - for (int e = 0; e < base->getType().getCumulativeArraySize(); ++e) - blockIndex = addBlockName(blockName + "[" + String(e) + "]", derefType, - intermediate.getBlockSize(base->getType())); - baseName.append(TString("[0]")); - } else - blockIndex = addBlockName(blockName, base->getType(), intermediate.getBlockSize(base->getType())); + blockIndex = addBlockName(blockName, base->getType(), intermediate.getBlockSize(base->getType())); if (reflection.options & EShReflectionAllBlockVariables) { // Use a degenerate (empty) set of dereferences to immediately put as at the end of // the dereference change expected by blowUpActiveAggregate. TList derefs; - // because we don't have any derefs, the first thing blowUpActiveAggregate will do is iterate over each - // member in the struct definition. This will lose any information about whether the parent was a buffer - // block. So if we're using strict array rules which don't expand the first child of a buffer block we - // instead iterate over the children here. - const bool strictArraySuffix = (reflection.options & EShReflectionStrictArraySuffix); - bool blockParent = (base->getType().getBasicType() == EbtBlock && base->getQualifier().storage == EvqBuffer); - - if (strictArraySuffix && blockParent) { - TType structDerefType(base->getType(), 0); - - const TType &structType = base->getType().isArray() ? structDerefType : base->getType(); - const TTypeList& typeList = *structType.getStruct(); - - TVector memberOffsets; - - memberOffsets.resize(typeList.size()); - getOffsets(structType, memberOffsets); - - for (int i = 0; i < (int)typeList.size(); ++i) { - TType derefType(structType, i); - TString name = baseName; - if (name.size() > 0) - name.append("."); - name.append(typeList[i].type->getFieldName()); - - // if this member is an array, store the top-level array stride but start the explosion from - // the inner struct type. - if (derefType.isArray() && derefType.isStruct()) { - name.append("[0]"); - blowUpActiveAggregate(TType(derefType, 0), name, derefs, derefs.end(), memberOffsets[i], - blockIndex, 0, getArrayStride(structType, derefType), - base->getQualifier().storage, false); - } else { - blowUpActiveAggregate(derefType, name, derefs, derefs.end(), memberOffsets[i], blockIndex, - 0, 0, base->getQualifier().storage, false); - } - } - } else { - // otherwise - if we're not using strict array suffix rules, or this isn't a block so we are - // expanding root arrays anyway, just start the iteration from the base block type. - blowUpActiveAggregate(base->getType(), baseName, derefs, derefs.end(), 0, blockIndex, 0, 0, + // otherwise - if we're not using strict array suffix rules, or this isn't a block so we are + // expanding root arrays anyway, just start the iteration from the base block type. + blowUpActiveAggregate(base->getType(), baseName, derefs, derefs.end(), 0, blockIndex, 0, -1, 0, base->getQualifier().storage, false); - } } } @@ -626,30 +633,43 @@ class TReflectionTraverser : public TLiveTraverser { else baseName = base->getName(); } - blowUpActiveAggregate(base->getType(), baseName, derefs, derefs.begin(), offset, blockIndex, arraySize, 0, + blowUpActiveAggregate(base->getType(), baseName, derefs, derefs.begin(), offset, blockIndex, arraySize, -1, 0, base->getQualifier().storage, true); } int addBlockName(const TString& name, const TType& type, int size) { - TReflection::TMapIndexToReflection& blocks = reflection.GetBlockMapForStorage(type.getQualifier().storage); + int blockIndex = 0; + if (type.isArray()) { + TType derefType(type, 0); + for (int e = 0; e < type.getOuterArraySize(); ++e) { + int memberBlockIndex = addBlockName(name + "[" + String(e) + "]", derefType, size); + if (e == 0) + blockIndex = memberBlockIndex; + } + } else { + TReflection::TMapIndexToReflection& blocks = reflection.GetBlockMapForStorage(type.getQualifier().storage); - int blockIndex; - TReflection::TNameToIndex::const_iterator it = reflection.nameToIndex.find(name.c_str()); - if (reflection.nameToIndex.find(name.c_str()) == reflection.nameToIndex.end()) { - blockIndex = (int)blocks.size(); - reflection.nameToIndex[name.c_str()] = blockIndex; - blocks.push_back(TObjectReflection(name.c_str(), type, -1, -1, size, -1)); + TReflection::TNameToIndex::const_iterator it = reflection.nameToIndex.find(name.c_str()); + if (reflection.nameToIndex.find(name.c_str()) == reflection.nameToIndex.end()) { + blockIndex = (int)blocks.size(); + reflection.nameToIndex[name.c_str()] = blockIndex; + blocks.push_back(TObjectReflection(name.c_str(), type, -1, -1, size, blockIndex)); - blocks.back().numMembers = countAggregateMembers(type); + blocks.back().numMembers = countAggregateMembers(type); - EShLanguageMask& stages = blocks.back().stages; - stages = static_cast(stages | 1 << intermediate.getStage()); - } else { - blockIndex = it->second; - - EShLanguageMask& stages = blocks[blockIndex].stages; - stages = static_cast(stages | 1 << intermediate.getStage()); + if (updateStageMasks) { + EShLanguageMask& stages = blocks.back().stages; + stages = static_cast(stages | 1 << intermediate.getStage()); + } + } + else { + blockIndex = it->second; + if (updateStageMasks) { + EShLanguageMask& stages = blocks[blockIndex].stages; + stages = static_cast(stages | 1 << intermediate.getStage()); + } + } } return blockIndex; @@ -887,8 +907,8 @@ class TReflectionTraverser : public TLiveTraverser { case EbtFloat16: return GL_FLOAT16_VEC2_NV + offset; case EbtInt: return GL_INT_VEC2 + offset; case EbtUint: return GL_UNSIGNED_INT_VEC2 + offset; - case EbtInt64: return GL_INT64_ARB + offset; - case EbtUint64: return GL_UNSIGNED_INT64_ARB + offset; + case EbtInt64: return GL_INT64_VEC2_ARB + offset; + case EbtUint64: return GL_UNSIGNED_INT64_VEC2_ARB + offset; case EbtBool: return GL_BOOL_VEC2 + offset; case EbtAtomicUint: return GL_UNSIGNED_INT_ATOMIC_COUNTER + offset; default: return 0; @@ -995,8 +1015,10 @@ class TReflectionTraverser : public TLiveTraverser { return type.isArray() ? type.getOuterArraySize() : 1; } + const TIntermediate& intermediate; TReflection& reflection; std::set processedDerefs; + bool updateStageMasks; protected: TReflectionTraverser(TReflectionTraverser&); @@ -1029,7 +1051,21 @@ bool TReflectionTraverser::visitBinary(TVisit /* visit */, TIntermBinary* node) // To reflect non-dereferenced objects. void TReflectionTraverser::visitSymbol(TIntermSymbol* base) { - if (base->getQualifier().storage == EvqUniform) + if (base->getQualifier().storage == EvqUniform) { + if (base->getBasicType() == EbtBlock) { + if (reflection.options & EShReflectionSharedStd140UBO) { + addUniform(*base); + } + } else { + addUniform(*base); + } + } + + // #TODO add std140/layout active rules for ssbo, same with ubo. + // Storage buffer blocks will be collected and expanding in this part. + if((reflection.options & EShReflectionSharedStd140SSBO) && + (base->getQualifier().storage == EvqBuffer && base->getBasicType() == EbtBlock && + (base->getQualifier().layoutPacking == ElpStd140 || base->getQualifier().layoutPacking == ElpShared))) addUniform(*base); if ((intermediate.getStage() == reflection.firstStage && base->getQualifier().isPipeInput()) || @@ -1102,6 +1138,8 @@ void TReflection::buildCounterIndices(const TIntermediate& intermediate) if (index >= 0) indexToUniformBlock[i].counterIndex = index; } +#else + (void)intermediate; #endif } @@ -1135,15 +1173,47 @@ bool TReflection::addStage(EShLanguage stage, const TIntermediate& intermediate) TReflectionTraverser it(intermediate, *this); - // put the entry point on the list of functions to process - it.pushFunction(intermediate.getEntryPointMangledName().c_str()); - - // process all the functions - while (! it.functions.empty()) { - TIntermNode* function = it.functions.back(); - it.functions.pop_back(); - function->traverse(&it); + for (auto& sequnence : intermediate.getTreeRoot()->getAsAggregate()->getSequence()) { + if (sequnence->getAsAggregate() != nullptr) { + if (sequnence->getAsAggregate()->getOp() == glslang::EOpLinkerObjects) { + it.updateStageMasks = false; + TIntermAggregate* linkerObjects = sequnence->getAsAggregate(); + for (auto& sequnence : linkerObjects->getSequence()) { + auto pNode = sequnence->getAsSymbolNode(); + if (pNode != nullptr) { + if ((pNode->getQualifier().storage == EvqUniform && + (options & EShReflectionSharedStd140UBO)) || + (pNode->getQualifier().storage == EvqBuffer && + (options & EShReflectionSharedStd140SSBO))) { + // collect std140 and shared uniform block form AST + if ((pNode->getBasicType() == EbtBlock) && + ((pNode->getQualifier().layoutPacking == ElpStd140) || + (pNode->getQualifier().layoutPacking == ElpShared))) { + pNode->traverse(&it); + } + } + else if ((options & EShReflectionAllIOVariables) && + (pNode->getQualifier().isPipeInput() || pNode->getQualifier().isPipeOutput())) + { + pNode->traverse(&it); + } + } + } + } else { + // This traverser will travers all function in AST. + // If we want reflect uncalled function, we need set linke message EShMsgKeepUncalled. + // When EShMsgKeepUncalled been set to true, all function will be keep in AST, even it is a uncalled function. + // This will keep some uniform variables in reflection, if those uniform variables is used in these uncalled function. + // + // If we just want reflect only live node, we can use a default link message or set EShMsgKeepUncalled false. + // When linke message not been set EShMsgKeepUncalled, linker won't keep uncalled function in AST. + // So, travers all function node can equivalent to travers live function. + it.updateStageMasks = true; + sequnence->getAsAggregate()->traverse(&it); + } + } } + it.updateStageMasks = true; buildCounterIndices(intermediate); buildUniformStageMask(intermediate); @@ -1188,7 +1258,7 @@ void TReflection::dump() for (int dim=0; dim<3; ++dim) if (getLocalSize(dim) > 1) - printf("Local size %s: %d\n", axis[dim], getLocalSize(dim)); + printf("Local size %s: %u\n", axis[dim], getLocalSize(dim)); printf("\n"); } @@ -1201,4 +1271,4 @@ void TReflection::dump() } // end namespace glslang -#endif // GLSLANG_WEB +#endif // !GLSLANG_WEB && !GLSLANG_ANGLE diff --git a/Externals/glslang/glslang/MachineIndependent/reflection.h b/Externals/glslang/glslang/MachineIndependent/reflection.h index efdc8934fbdf..5af4467c1fb2 100644 --- a/Externals/glslang/glslang/MachineIndependent/reflection.h +++ b/Externals/glslang/glslang/MachineIndependent/reflection.h @@ -33,7 +33,7 @@ // POSSIBILITY OF SUCH DAMAGE. // -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) #ifndef _REFLECTION_INCLUDED #define _REFLECTION_INCLUDED @@ -220,4 +220,4 @@ class TReflection { #endif // _REFLECTION_INCLUDED -#endif // GLSLANG_WEB \ No newline at end of file +#endif // !GLSLANG_WEB && !GLSLANG_ANGLE diff --git a/Externals/glslang/glslang/OSDependent/Unix/CMakeLists.txt b/Externals/glslang/glslang/OSDependent/Unix/CMakeLists.txt index 9994314fd5a5..d521da170a8b 100644 --- a/Externals/glslang/glslang/OSDependent/Unix/CMakeLists.txt +++ b/Externals/glslang/glslang/OSDependent/Unix/CMakeLists.txt @@ -1,3 +1,36 @@ +# Copyright (C) 2020 The Khronos Group Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of The Khronos Group Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + add_library(OSDependent STATIC ossource.cpp ../osinclude.h) set_property(TARGET OSDependent PROPERTY FOLDER glslang) set_property(TARGET OSDependent PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -23,4 +56,4 @@ if(ENABLE_GLSLANG_INSTALL) install(TARGETS OSDependent EXPORT OSDependentTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(EXPORT OSDependentTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) -endif(ENABLE_GLSLANG_INSTALL) +endif() diff --git a/Externals/glslang/glslang/OSDependent/Unix/ossource.cpp b/Externals/glslang/glslang/OSDependent/Unix/ossource.cpp index 3f029f0239a7..81da99c2c46d 100644 --- a/Externals/glslang/glslang/OSDependent/Unix/ossource.cpp +++ b/Externals/glslang/glslang/OSDependent/Unix/ossource.cpp @@ -172,7 +172,7 @@ namespace { pthread_mutex_t gMutex; } -void InitGlobalLock() +static void InitMutex(void) { pthread_mutexattr_t mutexattr; pthread_mutexattr_init(&mutexattr); @@ -180,6 +180,12 @@ void InitGlobalLock() pthread_mutex_init(&gMutex, &mutexattr); } +void InitGlobalLock() +{ + static pthread_once_t once = PTHREAD_ONCE_INIT; + pthread_once(&once, InitMutex); +} + void GetGlobalLock() { pthread_mutex_lock(&gMutex); diff --git a/Externals/glslang/glslang/OSDependent/Web/CMakeLists.txt b/Externals/glslang/glslang/OSDependent/Web/CMakeLists.txt index e8238c350493..5bfbed415ccb 100644 --- a/Externals/glslang/glslang/OSDependent/Web/CMakeLists.txt +++ b/Externals/glslang/glslang/OSDependent/Web/CMakeLists.txt @@ -1,24 +1,71 @@ -add_executable(glslang.js "glslang.js.cpp") -glslang_set_link_args(glslang.js) -target_link_libraries(glslang.js glslang SPIRV) -if(EMSCRIPTEN) - set_target_properties(glslang.js PROPERTIES - OUTPUT_NAME "glslang" - SUFFIX ".js") - em_link_pre_js(glslang.js "${CMAKE_CURRENT_SOURCE_DIR}/glslang.pre.js") +# Copyright (C) 2020 The Khronos Group Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of The Khronos Group Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. - target_link_options(glslang.js PRIVATE - "SHELL:--bind -s MODULARIZE=1") - if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) - target_link_options(glslang.js PRIVATE - "SHELL:-s ENVIRONMENT=node -s BINARYEN_ASYNC_COMPILATION=0") - else() - target_link_options(glslang.js PRIVATE - "SHELL:-s ENVIRONMENT=web,worker") - endif() +if(ENABLE_GLSLANG_JS) + add_executable(glslang.js "glslang.js.cpp") + glslang_set_link_args(glslang.js) + target_link_libraries(glslang.js glslang SPIRV) + + # Link library names that start with "-" are treated as link flags. + # "-Os" should be OK in MSVC; don't use /Os because CMake won't + # treat it as a link flag. + target_link_libraries(glslang.js "-Os") + + if(EMSCRIPTEN) + set_target_properties(glslang.js PROPERTIES + OUTPUT_NAME "glslang" + SUFFIX ".js") + em_link_pre_js(glslang.js "${CMAKE_CURRENT_SOURCE_DIR}/glslang.pre.js") + + target_link_libraries(glslang.js "--llvm-lto 1") + target_link_libraries(glslang.js "--closure 1") + target_link_libraries(glslang.js "-s MODULARIZE=1") + target_link_libraries(glslang.js "-s ALLOW_MEMORY_GROWTH=1") + target_link_libraries(glslang.js "-s FILESYSTEM=0") + + if(ENABLE_EMSCRIPTEN_SINGLE_FILE) + target_link_libraries(glslang.js "-s SINGLE_FILE=1") + endif() + + if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) + target_link_libraries(glslang.js "-s ENVIRONMENT=node -s BINARYEN_ASYNC_COMPILATION=0") + else() + target_link_libraries(glslang.js "-s ENVIRONMENT=web,worker") + endif() - if(NOT ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) - add_custom_command(TARGET glslang.js POST_BUILD - COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/glslang.after.js >> ${CMAKE_CURRENT_BINARY_DIR}/glslang.js) + if(NOT ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) + add_custom_command(TARGET glslang.js POST_BUILD + COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/glslang.after.js >> ${CMAKE_CURRENT_BINARY_DIR}/glslang.js) + endif() endif() -endif(EMSCRIPTEN) +endif() diff --git a/Externals/glslang/glslang/OSDependent/Web/glslang.js.cpp b/Externals/glslang/glslang/OSDependent/Web/glslang.js.cpp index 6cb93fe27e6a..f2306a609224 100644 --- a/Externals/glslang/glslang/OSDependent/Web/glslang.js.cpp +++ b/Externals/glslang/glslang/OSDependent/Web/glslang.js.cpp @@ -141,6 +141,7 @@ const TBuiltInResource DefaultTBuiltInResource = { /* .maxTaskWorkGroupSizeY_NV = */ 1, /* .maxTaskWorkGroupSizeZ_NV = */ 1, /* .maxMeshViewCountNV = */ 4, + /* .maxDualSourceDrawBuffersEXT = */ 1, /* .limits = */ { /* .nonInductiveForLoops = */ 1, @@ -176,7 +177,12 @@ extern "C" { * If null, the compilation failed. */ EMSCRIPTEN_KEEPALIVE -void* convert_glsl_to_spirv(const char* glsl, int stage_int, bool gen_debug, uint32_t** spirv, size_t* spirv_len) +void* convert_glsl_to_spirv(const char* glsl, + int stage_int, + bool gen_debug, + glslang::EShTargetLanguageVersion spirv_version, + uint32_t** spirv, + size_t* spirv_len) { if (glsl == nullptr) { fprintf(stderr, "Input pointer null\n"); @@ -194,6 +200,18 @@ void* convert_glsl_to_spirv(const char* glsl, int stage_int, bool gen_debug, uin return nullptr; } EShLanguage stage = static_cast(stage_int); + switch (spirv_version) { + case glslang::EShTargetSpv_1_0: + case glslang::EShTargetSpv_1_1: + case glslang::EShTargetSpv_1_2: + case glslang::EShTargetSpv_1_3: + case glslang::EShTargetSpv_1_4: + case glslang::EShTargetSpv_1_5: + break; + default: + fprintf(stderr, "Invalid SPIR-V version number\n"); + return nullptr; + } if (!initialized) { glslang::InitializeProcess(); @@ -203,8 +221,8 @@ void* convert_glsl_to_spirv(const char* glsl, int stage_int, bool gen_debug, uin glslang::TShader shader(stage); shader.setStrings(&glsl, 1); shader.setEnvInput(glslang::EShSourceGlsl, stage, glslang::EShClientVulkan, 100); - shader.setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_1); - shader.setEnvTarget(glslang::EShTargetSpv, glslang::EShTargetSpv_1_3); + shader.setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_0); + shader.setEnvTarget(glslang::EShTargetSpv, spirv_version); if (!shader.parse(&DefaultTBuiltInResource, 100, true, EShMsgDefault)) { fprintf(stderr, "Parse failed\n"); fprintf(stderr, "%s\n", shader.getInfoLog()); @@ -260,7 +278,7 @@ void main() { })"; uint32_t* output; size_t output_len; - void* id = convert_glsl_to_spirv(input, 4, false, &output, &output_len); + void* id = convert_glsl_to_spirv(input, 4, false, glslang::EShTargetSpv_1_0, &output, &output_len); assert(output != nullptr); assert(output_len != 0); destroy_output_buffer(id); diff --git a/Externals/glslang/glslang/OSDependent/Web/glslang.pre.js b/Externals/glslang/glslang/OSDependent/Web/glslang.pre.js index 7d3fd0234c30..46a569506d7e 100644 --- a/Externals/glslang/glslang/OSDependent/Web/glslang.pre.js +++ b/Externals/glslang/glslang/OSDependent/Web/glslang.pre.js @@ -1,23 +1,34 @@ -Module['compileGLSLZeroCopy'] = function(glsl, shader_stage, gen_debug) { +Module['compileGLSLZeroCopy'] = function(glsl, shader_stage, gen_debug, spirv_version) { gen_debug = !!gen_debug; - var shader_stage_int; - if (shader_stage === 'vertex') { - shader_stage_int = 0; - } else if (shader_stage === 'fragment') { - shader_stage_int = 4; - } else if (shader_stage === 'compute') { - shader_stage_int = 5; - } else { - throw new Error("shader_stage must be 'vertex', 'fragment', or 'compute'"); + var shader_stage_int; // EShLanguage + switch (shader_stage) { + case 'vertex': shader_stage_int = 0; break; + case 'fragment': shader_stage_int = 4; break; + case 'compute': shader_stage_int = 5; break; + default: + throw new Error("shader_stage must be 'vertex', 'fragment', or 'compute'."); + } + + spirv_version = spirv_version || '1.0'; + var spirv_version_int; // EShTargetLanguageVersion + switch (spirv_version) { + case '1.0': spirv_version_int = (1 << 16) | (0 << 8); break; + case '1.1': spirv_version_int = (1 << 16) | (1 << 8); break; + case '1.2': spirv_version_int = (1 << 16) | (2 << 8); break; + case '1.3': spirv_version_int = (1 << 16) | (3 << 8); break; + case '1.4': spirv_version_int = (1 << 16) | (4 << 8); break; + case '1.5': spirv_version_int = (1 << 16) | (5 << 8); break; + default: + throw new Error("spirv_version must be '1.0' ~ '1.5'."); } var p_output = Module['_malloc'](4); var p_output_len = Module['_malloc'](4); var id = ccall('convert_glsl_to_spirv', 'number', - ['string', 'number', 'boolean', 'number', 'number'], - [glsl, shader_stage_int, gen_debug, p_output, p_output_len]); + ['string', 'number', 'boolean', 'number', 'number', 'number'], + [glsl, shader_stage_int, gen_debug, spirv_version_int, p_output, p_output_len]); var output = getValue(p_output, 'i32'); var output_len = getValue(p_output_len, 'i32'); Module['_free'](p_output); @@ -37,8 +48,8 @@ Module['compileGLSLZeroCopy'] = function(glsl, shader_stage, gen_debug) { return ret; }; -Module['compileGLSL'] = function(glsl, shader_stage, gen_debug) { - var compiled = Module['compileGLSLZeroCopy'](glsl, shader_stage, gen_debug); +Module['compileGLSL'] = function(glsl, shader_stage, gen_debug, spirv_version) { + var compiled = Module['compileGLSLZeroCopy'](glsl, shader_stage, gen_debug, spirv_version); var ret = compiled['data'].slice() compiled['free'](); return ret; diff --git a/Externals/glslang/glslang/OSDependent/Windows/CMakeLists.txt b/Externals/glslang/glslang/OSDependent/Windows/CMakeLists.txt index c050ef61de7d..21d603e72cf7 100644 --- a/Externals/glslang/glslang/OSDependent/Windows/CMakeLists.txt +++ b/Externals/glslang/glslang/OSDependent/Windows/CMakeLists.txt @@ -1,3 +1,36 @@ +# Copyright (C) 2020 The Khronos Group Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of The Khronos Group Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + set(SOURCES ossource.cpp ../osinclude.h) add_library(OSDependent STATIC ${SOURCES}) @@ -12,10 +45,10 @@ endif() if(WIN32) source_group("Source" FILES ${SOURCES}) -endif(WIN32) +endif() if(ENABLE_GLSLANG_INSTALL) install(TARGETS OSDependent EXPORT OSDependentTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(EXPORT OSDependentTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) -endif(ENABLE_GLSLANG_INSTALL) +endif() diff --git a/Externals/glslang/glslang/Public/ShaderLang.h b/Externals/glslang/glslang/Public/ShaderLang.h old mode 100755 new mode 100644 index 4fe5c7df192b..e44339db533e --- a/Externals/glslang/glslang/Public/ShaderLang.h +++ b/Externals/glslang/glslang/Public/ShaderLang.h @@ -44,16 +44,25 @@ #include #ifdef _WIN32 -#define C_DECL __cdecl -//#ifdef SH_EXPORTING -// #define SH_IMPORT_EXPORT __declspec(dllexport) -//#else -// #define SH_IMPORT_EXPORT __declspec(dllimport) -//#endif -#define SH_IMPORT_EXPORT + #define C_DECL __cdecl #else -#define SH_IMPORT_EXPORT -#define C_DECL + #define C_DECL +#endif + +#ifdef GLSLANG_IS_SHARED_LIBRARY + #ifdef _WIN32 + #ifdef GLSLANG_EXPORTING + #define GLSLANG_EXPORT __declspec(dllexport) + #else + #define GLSLANG_EXPORT __declspec(dllimport) + #endif + #elif __GNUC__ >= 4 + #define GLSLANG_EXPORT __attribute__((visibility("default"))) + #endif +#endif // GLSLANG_IS_SHARED_LIBRARY + +#ifndef GLSLANG_EXPORT +#define GLSLANG_EXPORT #endif // @@ -65,22 +74,17 @@ extern "C" { #endif -// This should always increase, as some paths to do not consume -// a more major number. -// It should increment by one when new functionality is added. -#define GLSLANG_MINOR_VERSION 13 - // // Call before doing any other compiler/linker operations. // // (Call once per process, not once per thread.) // -SH_IMPORT_EXPORT int ShInitialize(); +GLSLANG_EXPORT int ShInitialize(); // // Call this at process shutdown to clean up memory. // -SH_IMPORT_EXPORT int ShFinalize(); +GLSLANG_EXPORT int ShFinalize(); // // Types of languages the compiler can consume. @@ -92,32 +96,45 @@ typedef enum { EShLangGeometry, EShLangFragment, EShLangCompute, - EShLangRayGenNV, - EShLangIntersectNV, - EShLangAnyHitNV, - EShLangClosestHitNV, - EShLangMissNV, - EShLangCallableNV, + EShLangRayGen, + EShLangRayGenNV = EShLangRayGen, + EShLangIntersect, + EShLangIntersectNV = EShLangIntersect, + EShLangAnyHit, + EShLangAnyHitNV = EShLangAnyHit, + EShLangClosestHit, + EShLangClosestHitNV = EShLangClosestHit, + EShLangMiss, + EShLangMissNV = EShLangMiss, + EShLangCallable, + EShLangCallableNV = EShLangCallable, EShLangTaskNV, EShLangMeshNV, - EShLangCount, + LAST_ELEMENT_MARKER(EShLangCount), } EShLanguage; // would be better as stage, but this is ancient now -typedef enum { +typedef enum : unsigned { EShLangVertexMask = (1 << EShLangVertex), EShLangTessControlMask = (1 << EShLangTessControl), EShLangTessEvaluationMask = (1 << EShLangTessEvaluation), EShLangGeometryMask = (1 << EShLangGeometry), EShLangFragmentMask = (1 << EShLangFragment), EShLangComputeMask = (1 << EShLangCompute), - EShLangRayGenNVMask = (1 << EShLangRayGenNV), - EShLangIntersectNVMask = (1 << EShLangIntersectNV), - EShLangAnyHitNVMask = (1 << EShLangAnyHitNV), - EShLangClosestHitNVMask = (1 << EShLangClosestHitNV), - EShLangMissNVMask = (1 << EShLangMissNV), - EShLangCallableNVMask = (1 << EShLangCallableNV), + EShLangRayGenMask = (1 << EShLangRayGen), + EShLangRayGenNVMask = EShLangRayGenMask, + EShLangIntersectMask = (1 << EShLangIntersect), + EShLangIntersectNVMask = EShLangIntersectMask, + EShLangAnyHitMask = (1 << EShLangAnyHit), + EShLangAnyHitNVMask = EShLangAnyHitMask, + EShLangClosestHitMask = (1 << EShLangClosestHit), + EShLangClosestHitNVMask = EShLangClosestHitMask, + EShLangMissMask = (1 << EShLangMiss), + EShLangMissNVMask = EShLangMissMask, + EShLangCallableMask = (1 << EShLangCallable), + EShLangCallableNVMask = EShLangCallableMask, EShLangTaskNVMask = (1 << EShLangTaskNV), EShLangMeshNVMask = (1 << EShLangMeshNV), + LAST_ELEMENT_MARKER(EShLanguageMaskCount), } EShLanguageMask; namespace glslang { @@ -128,25 +145,30 @@ typedef enum { EShSourceNone, EShSourceGlsl, // GLSL, includes ESSL (OpenGL ES GLSL) EShSourceHlsl, // HLSL + LAST_ELEMENT_MARKER(EShSourceCount), } EShSource; // if EShLanguage were EShStage, this could be EShLanguage instead typedef enum { EShClientNone, // use when there is no client, e.g. for validation - EShClientVulkan, - EShClientOpenGL, + EShClientVulkan, // as GLSL dialect, specifies KHR_vulkan_glsl extension + EShClientOpenGL, // as GLSL dialect, specifies ARB_gl_spirv extension + LAST_ELEMENT_MARKER(EShClientCount), } EShClient; typedef enum { EShTargetNone, EShTargetSpv, // SPIR-V (preferred spelling) EshTargetSpv = EShTargetSpv, // legacy spelling + LAST_ELEMENT_MARKER(EShTargetCount), } EShTargetLanguage; typedef enum { EShTargetVulkan_1_0 = (1 << 22), // Vulkan 1.0 EShTargetVulkan_1_1 = (1 << 22) | (1 << 12), // Vulkan 1.1 EShTargetVulkan_1_2 = (1 << 22) | (2 << 12), // Vulkan 1.2 + EShTargetVulkan_1_3 = (1 << 22) | (3 << 12), // Vulkan 1.3 EShTargetOpenGL_450 = 450, // OpenGL + LAST_ELEMENT_MARKER(EShTargetClientVersionCount = 5), } EShTargetClientVersion; typedef EShTargetClientVersion EshTargetClientVersion; @@ -158,6 +180,8 @@ typedef enum { EShTargetSpv_1_3 = (1 << 16) | (3 << 8), // SPIR-V 1.3 EShTargetSpv_1_4 = (1 << 16) | (4 << 8), // SPIR-V 1.4 EShTargetSpv_1_5 = (1 << 16) | (5 << 8), // SPIR-V 1.5 + EShTargetSpv_1_6 = (1 << 16) | (6 << 8), // SPIR-V 1.6 + LAST_ELEMENT_MARKER(EShTargetLanguageVersionCount = 7), } EShTargetLanguageVersion; struct TInputLanguage { @@ -165,6 +189,7 @@ struct TInputLanguage { EShLanguage stage; // redundant information with other input, this one overrides when not EShSourceNone EShClient dialect; int dialectVersion; // version of client's language definition, not the client (when not EShClientNone) + bool vulkanRulesRelaxed; }; struct TClient { @@ -187,7 +212,7 @@ struct TEnvironment { TTarget target; // what to generate }; -const char* StageName(EShLanguage); +GLSLANG_EXPORT const char* StageName(EShLanguage); } // end namespace glslang @@ -207,6 +232,7 @@ typedef enum { EShOptNone, EShOptSimple, // Optimizations that can be done quickly EShOptFull, // Optimizations that will take more time + LAST_ELEMENT_MARKER(EshOptLevelCount), } EShOptimizationLevel; // @@ -215,12 +241,13 @@ typedef enum { typedef enum { EShTexSampTransKeep, // keep textures and samplers as is (default) EShTexSampTransUpgradeTextureRemoveSampler, // change texture w/o embeded sampler into sampled texture and throw away all samplers + LAST_ELEMENT_MARKER(EShTexSampTransCount), } EShTextureSamplerTransformMode; // // Message choices for what errors and warnings are given. // -enum EShMessages { +enum EShMessages : unsigned { EShMsgDefault = 0, // default is to give all required errors and extra warnings EShMsgRelaxedErrors = (1 << 0), // be liberal in accepting input EShMsgSuppressWarnings = (1 << 1), // suppress all warnings, except those required by the specification @@ -235,21 +262,27 @@ enum EShMessages { EShMsgDebugInfo = (1 << 10), // save debug information EShMsgHlslEnable16BitTypes = (1 << 11), // enable use of 16-bit types in SPIR-V for HLSL EShMsgHlslLegalization = (1 << 12), // enable HLSL Legalization messages - EShMsgHlslDX9Compatible = (1 << 13), // enable HLSL DX9 compatible mode (right now only for samplers) + EShMsgHlslDX9Compatible = (1 << 13), // enable HLSL DX9 compatible mode (for samplers and semantics) EShMsgBuiltinSymbolTable = (1 << 14), // print the builtin symbol table + EShMsgEnhanced = (1 << 15), // enhanced message readability + LAST_ELEMENT_MARKER(EShMsgCount), }; // // Options for building reflection // typedef enum { - EShReflectionDefault = 0, // default is original behaviour before options were added - EShReflectionStrictArraySuffix = (1 << 0), // reflection will follow stricter rules for array-of-structs suffixes - EShReflectionBasicArraySuffix = (1 << 1), // arrays of basic types will be appended with [0] as in GL reflection - EShReflectionIntermediateIO = (1 << 2), // reflect inputs and outputs to program, even with no vertex shader - EShReflectionSeparateBuffers = (1 << 3), // buffer variables and buffer blocks are reflected separately - EShReflectionAllBlockVariables = (1 << 4), // reflect all variables in blocks, even if they are inactive - EShReflectionUnwrapIOBlocks = (1 << 5), // unwrap input/output blocks the same as with uniform blocks + EShReflectionDefault = 0, // default is original behaviour before options were added + EShReflectionStrictArraySuffix = (1 << 0), // reflection will follow stricter rules for array-of-structs suffixes + EShReflectionBasicArraySuffix = (1 << 1), // arrays of basic types will be appended with [0] as in GL reflection + EShReflectionIntermediateIO = (1 << 2), // reflect inputs and outputs to program, even with no vertex shader + EShReflectionSeparateBuffers = (1 << 3), // buffer variables and buffer blocks are reflected separately + EShReflectionAllBlockVariables = (1 << 4), // reflect all variables in blocks, even if they are inactive + EShReflectionUnwrapIOBlocks = (1 << 5), // unwrap input/output blocks the same as with uniform blocks + EShReflectionAllIOVariables = (1 << 6), // reflect all input/output variables, even if they are inactive + EShReflectionSharedStd140SSBO = (1 << 7), // Apply std140/shared rules for ubo to ssbo + EShReflectionSharedStd140UBO = (1 << 8), // Apply std140/shared rules for ubo to ssbo + LAST_ELEMENT_MARKER(EShReflectionCount), } EShReflectionOptions; // @@ -281,10 +314,10 @@ typedef void* ShHandle; // Driver calls these to create and destroy compiler/linker // objects. // -SH_IMPORT_EXPORT ShHandle ShConstructCompiler(const EShLanguage, int debugOptions); // one per shader -SH_IMPORT_EXPORT ShHandle ShConstructLinker(const EShExecutable, int debugOptions); // one per shader pair -SH_IMPORT_EXPORT ShHandle ShConstructUniformMap(); // one per uniform namespace (currently entire program object) -SH_IMPORT_EXPORT void ShDestruct(ShHandle); +GLSLANG_EXPORT ShHandle ShConstructCompiler(const EShLanguage, int debugOptions); // one per shader +GLSLANG_EXPORT ShHandle ShConstructLinker(const EShExecutable, int debugOptions); // one per shader pair +GLSLANG_EXPORT ShHandle ShConstructUniformMap(); // one per uniform namespace (currently entire program object) +GLSLANG_EXPORT void ShDestruct(ShHandle); // // The return value of ShCompile is boolean, non-zero indicating @@ -293,7 +326,7 @@ SH_IMPORT_EXPORT void ShDestruct(ShHandle); // The info-log should be written by ShCompile into // ShHandle, so it can answer future queries. // -SH_IMPORT_EXPORT int ShCompile( +GLSLANG_EXPORT int ShCompile( const ShHandle, const char* const shaderStrings[], const int numStrings, @@ -306,7 +339,7 @@ SH_IMPORT_EXPORT int ShCompile( EShMessages messages = EShMsgDefault // warnings and errors ); -SH_IMPORT_EXPORT int ShLinkExt( +GLSLANG_EXPORT int ShLinkExt( const ShHandle, // linker object const ShHandle h[], // compiler objects to link together const int numHandles); @@ -315,26 +348,26 @@ SH_IMPORT_EXPORT int ShLinkExt( // ShSetEncrpytionMethod is a place-holder for specifying // how source code is encrypted. // -SH_IMPORT_EXPORT void ShSetEncryptionMethod(ShHandle); +GLSLANG_EXPORT void ShSetEncryptionMethod(ShHandle); // // All the following return 0 if the information is not // available in the object passed down, or the object is bad. // -SH_IMPORT_EXPORT const char* ShGetInfoLog(const ShHandle); -SH_IMPORT_EXPORT const void* ShGetExecutable(const ShHandle); -SH_IMPORT_EXPORT int ShSetVirtualAttributeBindings(const ShHandle, const ShBindingTable*); // to detect user aliasing -SH_IMPORT_EXPORT int ShSetFixedAttributeBindings(const ShHandle, const ShBindingTable*); // to force any physical mappings +GLSLANG_EXPORT const char* ShGetInfoLog(const ShHandle); +GLSLANG_EXPORT const void* ShGetExecutable(const ShHandle); +GLSLANG_EXPORT int ShSetVirtualAttributeBindings(const ShHandle, const ShBindingTable*); // to detect user aliasing +GLSLANG_EXPORT int ShSetFixedAttributeBindings(const ShHandle, const ShBindingTable*); // to force any physical mappings // // Tell the linker to never assign a vertex attribute to this list of physical attributes // -SH_IMPORT_EXPORT int ShExcludeAttributes(const ShHandle, int *attributes, int count); +GLSLANG_EXPORT int ShExcludeAttributes(const ShHandle, int *attributes, int count); // // Returns the location ID of the named uniform. // Returns -1 if error. // -SH_IMPORT_EXPORT int ShGetUniformLocation(const ShHandle uniformMap, const char* name); +GLSLANG_EXPORT int ShGetUniformLocation(const ShHandle uniformMap, const char* name); #ifdef __cplusplus } // end extern "C" @@ -365,19 +398,27 @@ class TInfoSink; namespace glslang { -const char* GetEsslVersionString(); -const char* GetGlslVersionString(); -int GetKhronosToolId(); +struct Version { + int major; + int minor; + int patch; + const char* flavor; +}; + +GLSLANG_EXPORT Version GetVersion(); +GLSLANG_EXPORT const char* GetEsslVersionString(); +GLSLANG_EXPORT const char* GetGlslVersionString(); +GLSLANG_EXPORT int GetKhronosToolId(); class TIntermediate; class TProgram; class TPoolAllocator; // Call this exactly once per process before using anything else -bool InitializeProcess(); +GLSLANG_EXPORT bool InitializeProcess(); // Call once per process to tear down everything -void FinalizeProcess(); +GLSLANG_EXPORT void FinalizeProcess(); // Resource type for IO resolver enum TResourceType { @@ -390,11 +431,22 @@ enum TResourceType { EResCount }; +enum TBlockStorageClass +{ + EbsUniform = 0, + EbsStorageBuffer, + EbsPushConstant, + EbsNone, // not a uniform or buffer variable + EbsCount, +}; + // Make one TShader per shader that you will link into a program. Then // - provide the shader through setStrings() or setStringsWithLengths() // - optionally call setEnv*(), see below for more detail // - optionally use setPreamble() to set a special shader string that will be // processed before all others but won't affect the validity of #version +// - optionally call addProcesses() for each setting/transform, +// see comment for class TProcesses // - call parse(): source language and target environment must be selected // either by correct setting of EShMessages sent to parse(), or by // explicitly calling setEnv*() @@ -407,40 +459,53 @@ enum TResourceType { // class TShader { public: - explicit TShader(EShLanguage); - virtual ~TShader(); - void setStrings(const char* const* s, int n); - void setStringsWithLengths(const char* const* s, const int* l, int n); - void setStringsWithLengthsAndNames( + GLSLANG_EXPORT explicit TShader(EShLanguage); + GLSLANG_EXPORT virtual ~TShader(); + GLSLANG_EXPORT void setStrings(const char* const* s, int n); + GLSLANG_EXPORT void setStringsWithLengths( + const char* const* s, const int* l, int n); + GLSLANG_EXPORT void setStringsWithLengthsAndNames( const char* const* s, const int* l, const char* const* names, int n); void setPreamble(const char* s) { preamble = s; } - void setEntryPoint(const char* entryPoint); - void setSourceEntryPoint(const char* sourceEntryPointName); - void addProcesses(const std::vector&); + GLSLANG_EXPORT void setEntryPoint(const char* entryPoint); + GLSLANG_EXPORT void setSourceEntryPoint(const char* sourceEntryPointName); + GLSLANG_EXPORT void addProcesses(const std::vector&); + GLSLANG_EXPORT void setUniqueId(unsigned long long id); + GLSLANG_EXPORT void setOverrideVersion(int version); // IO resolver binding data: see comments in ShaderLang.cpp - void setShiftBinding(TResourceType res, unsigned int base); - void setShiftSamplerBinding(unsigned int base); // DEPRECATED: use setShiftBinding - void setShiftTextureBinding(unsigned int base); // DEPRECATED: use setShiftBinding - void setShiftImageBinding(unsigned int base); // DEPRECATED: use setShiftBinding - void setShiftUboBinding(unsigned int base); // DEPRECATED: use setShiftBinding - void setShiftUavBinding(unsigned int base); // DEPRECATED: use setShiftBinding - void setShiftCbufferBinding(unsigned int base); // synonym for setShiftUboBinding - void setShiftSsboBinding(unsigned int base); // DEPRECATED: use setShiftBinding - void setShiftBindingForSet(TResourceType res, unsigned int base, unsigned int set); - void setResourceSetBinding(const std::vector& base); - void setAutoMapBindings(bool map); - void setAutoMapLocations(bool map); - void addUniformLocationOverride(const char* name, int loc); - void setUniformLocationBase(int base); - void setInvertY(bool invert); + GLSLANG_EXPORT void setShiftBinding(TResourceType res, unsigned int base); + GLSLANG_EXPORT void setShiftSamplerBinding(unsigned int base); // DEPRECATED: use setShiftBinding + GLSLANG_EXPORT void setShiftTextureBinding(unsigned int base); // DEPRECATED: use setShiftBinding + GLSLANG_EXPORT void setShiftImageBinding(unsigned int base); // DEPRECATED: use setShiftBinding + GLSLANG_EXPORT void setShiftUboBinding(unsigned int base); // DEPRECATED: use setShiftBinding + GLSLANG_EXPORT void setShiftUavBinding(unsigned int base); // DEPRECATED: use setShiftBinding + GLSLANG_EXPORT void setShiftCbufferBinding(unsigned int base); // synonym for setShiftUboBinding + GLSLANG_EXPORT void setShiftSsboBinding(unsigned int base); // DEPRECATED: use setShiftBinding + GLSLANG_EXPORT void setShiftBindingForSet(TResourceType res, unsigned int base, unsigned int set); + GLSLANG_EXPORT void setResourceSetBinding(const std::vector& base); + GLSLANG_EXPORT void setAutoMapBindings(bool map); + GLSLANG_EXPORT void setAutoMapLocations(bool map); + GLSLANG_EXPORT void addUniformLocationOverride(const char* name, int loc); + GLSLANG_EXPORT void setUniformLocationBase(int base); + GLSLANG_EXPORT void setInvertY(bool invert); + GLSLANG_EXPORT void setDxPositionW(bool dxPosW); + GLSLANG_EXPORT void setEnhancedMsgs(); #ifdef ENABLE_HLSL - void setHlslIoMapping(bool hlslIoMap); - void setFlattenUniformArrays(bool flatten); + GLSLANG_EXPORT void setHlslIoMapping(bool hlslIoMap); + GLSLANG_EXPORT void setFlattenUniformArrays(bool flatten); #endif - void setNoStorageFormat(bool useUnknownFormat); - void setNanMinMaxClamp(bool nanMinMaxClamp); - void setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode); + GLSLANG_EXPORT void setNoStorageFormat(bool useUnknownFormat); + GLSLANG_EXPORT void setNanMinMaxClamp(bool nanMinMaxClamp); + GLSLANG_EXPORT void setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode); + GLSLANG_EXPORT void addBlockStorageOverride(const char* nameStr, glslang::TBlockStorageClass backing); + + GLSLANG_EXPORT void setGlobalUniformBlockName(const char* name); + GLSLANG_EXPORT void setAtomicCounterBlockName(const char* name); + GLSLANG_EXPORT void setGlobalUniformSet(unsigned int set); + GLSLANG_EXPORT void setGlobalUniformBinding(unsigned int binding); + GLSLANG_EXPORT void setAtomicCounterBlockSet(unsigned int set); + GLSLANG_EXPORT void setAtomicCounterBlockBinding(unsigned int binding); // For setting up the environment (cleared to nothingness in the constructor). // These must be called so that parsing is done for the right source language and @@ -449,10 +514,13 @@ class TShader { // // setEnvInput: The input source language and stage. If generating code for a // specific client, the input client semantics to use and the - // version of the that client's input semantics to use, otherwise + // version of that client's input semantics to use, otherwise // use EShClientNone and version of 0, e.g. for validation mode. // Note 'version' does not describe the target environment, // just the version of the source dialect to compile under. + // For example, to choose the Vulkan dialect of GLSL defined by + // version 100 of the KHR_vulkan_glsl extension: lang = EShSourceGlsl, + // dialect = EShClientVulkan, and version = 100. // // See the definitions of TEnvironment, EShSource, EShLanguage, // and EShClient for choices and more detail. @@ -497,6 +565,9 @@ class TShader { bool getEnvTargetHlslFunctionality1() const { return false; } #endif + void setEnvInputVulkanRulesRelaxed() { environment.input.vulkanRulesRelaxed = true; } + bool getEnvInputVulkanRulesRelaxed() const { return environment.input.vulkanRulesRelaxed; } + // Interface to #include handlers. // // To support #include, a client of Glslang does the following: @@ -580,8 +651,10 @@ class TShader { virtual void releaseInclude(IncludeResult*) override { } }; - bool parse(const TBuiltInResource*, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, - bool forwardCompatible, EShMessages, Includer&); + GLSLANG_EXPORT bool parse( + const TBuiltInResource*, int defaultVersion, EProfile defaultProfile, + bool forceDefaultVersionAndProfile, bool forwardCompatible, + EShMessages, Includer&); bool parse(const TBuiltInResource* res, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, bool forwardCompatible, EShMessages messages) @@ -604,13 +677,14 @@ class TShader { // NOTE: Doing just preprocessing to obtain a correct preprocessed shader string // is not an officially supported or fully working path. - bool preprocess(const TBuiltInResource* builtInResources, - int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, - bool forwardCompatible, EShMessages message, std::string* outputString, - Includer& includer); - - const char* getInfoLog(); - const char* getInfoDebugLog(); + GLSLANG_EXPORT bool preprocess( + const TBuiltInResource* builtInResources, int defaultVersion, + EProfile defaultProfile, bool forceDefaultVersionAndProfile, + bool forwardCompatible, EShMessages message, std::string* outputString, + Includer& includer); + + GLSLANG_EXPORT const char* getInfoLog(); + GLSLANG_EXPORT const char* getInfoDebugLog(); EShLanguage getStage() const { return stage; } TIntermediate* getIntermediate() const { return intermediate; } @@ -629,15 +703,18 @@ class TShader { // stringNames is the optional names for all the strings. If stringNames // is null, then none of the strings has name. If a certain element in // stringNames is null, then the corresponding string does not have name. - const char* const* strings; + const char* const* strings; // explicit code to compile, see previous comment const int* lengths; const char* const* stringNames; - const char* preamble; - int numStrings; + int numStrings; // size of the above arrays + const char* preamble; // string of implicit code to compile before the explicitly provided code // a function in the source string can be renamed FROM this TO the name given in setEntryPoint. std::string sourceEntryPointName; + // overrides #version in shader source or default version if #version isn't present + int overrideVersion; + TEnvironment environment; friend class TProgram; @@ -646,7 +723,7 @@ class TShader { TShader& operator=(TShader&); }; -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) // // A reflection database and its interface, consistent with the OpenGL API reflection queries. @@ -655,11 +732,11 @@ class TShader { // Data needed for just a single object at the granularity exchanged by the reflection API class TObjectReflection { public: - TObjectReflection(const std::string& pName, const TType& pType, int pOffset, int pGLDefineType, int pSize, int pIndex); + GLSLANG_EXPORT TObjectReflection(const std::string& pName, const TType& pType, int pOffset, int pGLDefineType, int pSize, int pIndex); const TType* getType() const { return type; } - int getBinding() const; - void dump() const; + GLSLANG_EXPORT int getBinding() const; + GLSLANG_EXPORT void dump() const; static TObjectReflection badReflection() { return TObjectReflection(); } std::string name; @@ -670,6 +747,7 @@ class TObjectReflection { int counterIndex; int numMembers; int arrayStride; // stride of an array variable + int topLevelArraySize; // size of the top-level variable in a storage buffer member int topLevelArrayStride; // stride of the top-level variable in a storage buffer member EShLanguageMask stages; @@ -760,10 +838,10 @@ class TIoMapResolver // Called by TSlotCollector to resolve resource locations or bindings virtual void reserverResourceSlot(TVarEntryInfo& ent, TInfoSink& infoSink) = 0; // Called by mapIO.addStage to set shader stage mask to mark a stage be added to this pipeline - virtual void addStage(EShLanguage stage) = 0; + virtual void addStage(EShLanguage stage, TIntermediate& stageIntermediate) = 0; }; -#endif // GLSLANG_WEB +#endif // !GLSLANG_WEB && !GLSLANG_ANGLE // Make one TProgram per set of shaders that will get linked together. Add all // the shaders that are to be linked together. After calling shader.parse() @@ -773,40 +851,40 @@ class TIoMapResolver // class TProgram { public: - TProgram(); - virtual ~TProgram(); + GLSLANG_EXPORT TProgram(); + GLSLANG_EXPORT virtual ~TProgram(); void addShader(TShader* shader) { stages[shader->stage].push_back(shader); } std::list& getShaders(EShLanguage stage) { return stages[stage]; } // Link Validation interface - bool link(EShMessages); - const char* getInfoLog(); - const char* getInfoDebugLog(); + GLSLANG_EXPORT bool link(EShMessages); + GLSLANG_EXPORT const char* getInfoLog(); + GLSLANG_EXPORT const char* getInfoDebugLog(); TIntermediate* getIntermediate(EShLanguage stage) const { return intermediate[stage]; } -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) // Reflection Interface // call first, to do liveness analysis, index mapping, etc.; returns false on failure - bool buildReflection(int opts = EShReflectionDefault); - unsigned getLocalSize(int dim) const; // return dim'th local size - int getReflectionIndex(const char *name) const; - int getReflectionPipeIOIndex(const char* name, const bool inOrOut) const; - int getNumUniformVariables() const; - const TObjectReflection& getUniform(int index) const; - int getNumUniformBlocks() const; - const TObjectReflection& getUniformBlock(int index) const; - int getNumPipeInputs() const; - const TObjectReflection& getPipeInput(int index) const; - int getNumPipeOutputs() const; - const TObjectReflection& getPipeOutput(int index) const; - int getNumBufferVariables() const; - const TObjectReflection& getBufferVariable(int index) const; - int getNumBufferBlocks() const; - const TObjectReflection& getBufferBlock(int index) const; - int getNumAtomicCounters() const; - const TObjectReflection& getAtomicCounter(int index) const; + GLSLANG_EXPORT bool buildReflection(int opts = EShReflectionDefault); + GLSLANG_EXPORT unsigned getLocalSize(int dim) const; // return dim'th local size + GLSLANG_EXPORT int getReflectionIndex(const char *name) const; + GLSLANG_EXPORT int getReflectionPipeIOIndex(const char* name, const bool inOrOut) const; + GLSLANG_EXPORT int getNumUniformVariables() const; + GLSLANG_EXPORT const TObjectReflection& getUniform(int index) const; + GLSLANG_EXPORT int getNumUniformBlocks() const; + GLSLANG_EXPORT const TObjectReflection& getUniformBlock(int index) const; + GLSLANG_EXPORT int getNumPipeInputs() const; + GLSLANG_EXPORT const TObjectReflection& getPipeInput(int index) const; + GLSLANG_EXPORT int getNumPipeOutputs() const; + GLSLANG_EXPORT const TObjectReflection& getPipeOutput(int index) const; + GLSLANG_EXPORT int getNumBufferVariables() const; + GLSLANG_EXPORT const TObjectReflection& getBufferVariable(int index) const; + GLSLANG_EXPORT int getNumBufferBlocks() const; + GLSLANG_EXPORT const TObjectReflection& getBufferBlock(int index) const; + GLSLANG_EXPORT int getNumAtomicCounters() const; + GLSLANG_EXPORT const TObjectReflection& getAtomicCounter(int index) const; // Legacy Reflection Interface - expressed in terms of above interface @@ -873,22 +951,23 @@ class TProgram { // returns a TType* const TType *getAttributeTType(int index) const { return getPipeInput(index).getType(); } - void dumpReflection(); + GLSLANG_EXPORT void dumpReflection(); // I/O mapping: apply base offsets and map live unbound variables // If resolver is not provided it uses the previous approach // and respects auto assignment and offsets. - bool mapIO(TIoMapResolver* pResolver = nullptr, TIoMapper* pIoMapper = nullptr); -#endif + GLSLANG_EXPORT bool mapIO(TIoMapResolver* pResolver = nullptr, TIoMapper* pIoMapper = nullptr); +#endif // !GLSLANG_WEB && !GLSLANG_ANGLE protected: - bool linkStage(EShLanguage, EShMessages); + GLSLANG_EXPORT bool linkStage(EShLanguage, EShMessages); + GLSLANG_EXPORT bool crossStageCheck(EShMessages); TPoolAllocator* pool; std::list stages[EShLangCount]; TIntermediate* intermediate[EShLangCount]; bool newedIntermediate[EShLangCount]; // track which intermediate were "new" versus reusing a singleton unit in a stage TInfoSink* infoSink; -#ifndef GLSLANG_WEB +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) TReflection* reflection; #endif bool linked; diff --git a/Externals/glslang/gtests/pch.cpp b/Externals/glslang/glslang/build_info.h similarity index 51% rename from Externals/glslang/gtests/pch.cpp rename to Externals/glslang/glslang/build_info.h index b7a08654a54a..22818b0a59cb 100644 --- a/Externals/glslang/gtests/pch.cpp +++ b/Externals/glslang/glslang/build_info.h @@ -1,5 +1,5 @@ +// Copyright (C) 2020 The Khronos Group Inc. // -// Copyright (C) 2018 The Khronos Group Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without @@ -14,7 +14,7 @@ // disclaimer in the documentation and/or other materials provided // with the distribution. // -// Neither the name of 3Dlabs Inc. Ltd. nor the names of its +// Neither the name of The Khronos Group Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // @@ -30,6 +30,33 @@ // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. -// -#include "pch.h" +#ifndef GLSLANG_BUILD_INFO +#define GLSLANG_BUILD_INFO + +#define GLSLANG_VERSION_MAJOR 11 +#define GLSLANG_VERSION_MINOR 9 +#define GLSLANG_VERSION_PATCH 0 +#define GLSLANG_VERSION_FLAVOR "2022-04-06" + +#define GLSLANG_VERSION_GREATER_THAN(major, minor, patch) \ + (((major) > GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \ + (((minor) > GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \ + ((patch) > GLSLANG_VERSION_PATCH))))) + +#define GLSLANG_VERSION_GREATER_OR_EQUAL_TO(major, minor, patch) \ + (((major) > GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \ + (((minor) > GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \ + ((patch) >= GLSLANG_VERSION_PATCH))))) + +#define GLSLANG_VERSION_LESS_THAN(major, minor, patch) \ + (((major) < GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \ + (((minor) < GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \ + ((patch) < GLSLANG_VERSION_PATCH))))) + +#define GLSLANG_VERSION_LESS_OR_EQUAL_TO(major, minor, patch) \ + (((major) < GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \ + (((minor) < GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \ + ((patch) <= GLSLANG_VERSION_PATCH))))) + +#endif // GLSLANG_BUILD_INFO diff --git a/Externals/glslang/glslang/updateGrammar b/Externals/glslang/glslang/updateGrammar old mode 100755 new mode 100644 index 9384db94886e..9209493f380f --- a/Externals/glslang/glslang/updateGrammar +++ b/Externals/glslang/glslang/updateGrammar @@ -1,5 +1,38 @@ #!/bin/bash +# Copyright (C) 2020 The Khronos Group Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of The Khronos Group Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + if [ "$1" = 'web' ] then m4 -P -DGLSLANG_WEB MachineIndependent/glslang.m4 > MachineIndependent/glslang.y diff --git a/Externals/glslang/gtests/AST.FromFile.cpp b/Externals/glslang/gtests/AST.FromFile.cpp index 50046719b48e..1d975464f1c2 100644 --- a/Externals/glslang/gtests/AST.FromFile.cpp +++ b/Externals/glslang/gtests/AST.FromFile.cpp @@ -59,7 +59,7 @@ TEST_P(CompileToAstTestNV, FromFile) } // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, CompileToAstTest, ::testing::ValuesIn(std::vector({ "sample.frag", @@ -233,7 +233,12 @@ INSTANTIATE_TEST_CASE_P( "precise_struct_block.vert", "maxClipDistances.vert", "findFunction.frag", + "noMatchingFunction.frag", "constantUnaryConversion.comp", + "xfbUnsizedArray.error.vert", + "xfbUnsizedArray.error.tese", + "glsl.140.layoutOffset.error.vert", + "glsl.430.layoutOffset.error.vert", "glsl.450.subgroup.frag", "glsl.450.subgroup.geom", "glsl.450.subgroup.tesc", @@ -258,6 +263,7 @@ INSTANTIATE_TEST_CASE_P( "glsl.460.subgroup.rgen", "glsl.460.subgroup.rint", "glsl.460.subgroup.rmiss", + "glsl.es300.layoutOffset.error.vert", "glsl.es320.subgroup.frag", "glsl.es320.subgroup.geom", "glsl.es320.subgroup.tesc", @@ -274,17 +280,34 @@ INSTANTIATE_TEST_CASE_P( "glsl.es320.subgroupShuffleRelative.comp", "glsl.es320.subgroupQuad.comp", "glsl.es320.subgroupVote.comp", + "terminate.frag", + "terminate.vert", + "negativeWorkGroupSize.comp", + "textureoffset_sampler2darrayshadow.vert", + "atomicAdd.comp", + "GL_ARB_gpu_shader5.u2i.vert", + "textureQueryLOD.frag", + "atomicCounterARBOps.vert", + "GL_EXT_shader_integer_mix.vert", + "GL_ARB_draw_instanced.vert", + "GL_ARB_fragment_coord_conventions.vert", + "BestMatchFunction.vert", + "EndStreamPrimitive.geom", + "floatBitsToInt.vert", + "coord_conventions.frag", + "gl_FragCoord.frag" })), FileNameAsCustomTestSuffix ); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, CompileToAstTestNV, ::testing::ValuesIn(std::vector({ "nvShaderNoperspectiveInterpolation.frag", })), FileNameAsCustomTestSuffix ); + // clang-format on } // anonymous namespace diff --git a/Externals/glslang/gtests/CMakeLists.txt b/Externals/glslang/gtests/CMakeLists.txt index dc53f5c329f6..c8f02828cd50 100644 --- a/Externals/glslang/gtests/CMakeLists.txt +++ b/Externals/glslang/gtests/CMakeLists.txt @@ -1,3 +1,36 @@ +# Copyright (C) 2020 The Khronos Group Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of The Khronos Group Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + if(BUILD_TESTING) if(TARGET gmock) message(STATUS "Google Mock found - building tests") @@ -14,29 +47,32 @@ if(BUILD_TESTING) # Test related source files ${CMAKE_CURRENT_SOURCE_DIR}/AST.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/BuiltInResource.FromFile.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/Common.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Config.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/HexFloat.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Hlsl.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.Vk.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp) + ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/VkRelaxed.FromFile.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/GlslMapIO.FromFile.cpp) if(ENABLE_SPVREMAPPER) set(TEST_SOURCES ${TEST_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/Remap.FromFile.cpp) endif() - glslang_pch(TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/pch.cpp) add_executable(glslangtests ${TEST_SOURCES}) + glslang_pch(glslangtests ${CMAKE_CURRENT_SOURCE_DIR}/pch.h) set_property(TARGET glslangtests PROPERTY FOLDER tests) glslang_set_link_args(glslangtests) if(ENABLE_GLSLANG_INSTALL) install(TARGETS glslangtests EXPORT glslangtestsTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) install(EXPORT glslangtestsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) - endif(ENABLE_GLSLANG_INSTALL) + endif() set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test") # Supply a default test root directory, so that manual testing @@ -50,6 +86,12 @@ if(BUILD_TESTING) ${gmock_SOURCE_DIR}/include ${gtest_SOURCE_DIR}/include) + if(ENABLE_OPT) + target_include_directories(glslangtests + PRIVATE ${spirv-tools_SOURCE_DIR}/include + ) + endif() + set(LIBRARIES glslang OSDependent OGLCompiler glslang SPIRV glslang-default-resource-limits) @@ -60,7 +102,7 @@ if(BUILD_TESTING) if(ENABLE_HLSL) set(LIBRARIES ${LIBRARIES} HLSL) - endif(ENABLE_HLSL) + endif() target_link_libraries(glslangtests PRIVATE ${LIBRARIES} gmock) add_test(NAME glslang-gtests diff --git a/Externals/glslang/gtests/Common.cpp b/Externals/glslang/gtests/Common.cpp new file mode 100644 index 000000000000..0b70a83e2cff --- /dev/null +++ b/Externals/glslang/gtests/Common.cpp @@ -0,0 +1,165 @@ +// Copyright (c) 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include + +#include +#include "glslang/Include/Common.h" + +namespace { + +TEST(IsPow2, Int_Negative) { + EXPECT_EQ(false, glslang::IsPow2(-5)); + EXPECT_EQ(false, glslang::IsPow2(-1)); + EXPECT_EQ(false, glslang::IsPow2(INT_MIN)); + EXPECT_EQ(false, glslang::IsPow2(int64_t(-10))); +} + +TEST(IsPow2, Zero) { + EXPECT_EQ(false, glslang::IsPow2(0)); + EXPECT_EQ(false, glslang::IsPow2(0u)); + EXPECT_EQ(false, glslang::IsPow2(0)); + EXPECT_EQ(false, glslang::IsPow2(uint64_t(0))); + EXPECT_EQ(false, glslang::IsPow2(int64_t(0))); +} + +TEST(IsPow2, Int_Positive_PowersOf2) { + EXPECT_EQ(true, glslang::IsPow2(1)); + EXPECT_EQ(true, glslang::IsPow2(2)); + EXPECT_EQ(true, glslang::IsPow2(4)); + EXPECT_EQ(true, glslang::IsPow2(8)); + EXPECT_EQ(true, glslang::IsPow2(16)); + EXPECT_EQ(true, glslang::IsPow2(32768)); + EXPECT_EQ(true, glslang::IsPow2(65536)); + EXPECT_EQ(true, glslang::IsPow2(2147483648)); +} + +TEST(IsPow2, Int_Positive_NonPowersOf2) { + EXPECT_EQ(false, glslang::IsPow2(3)); + EXPECT_EQ(false, glslang::IsPow2(5)); + EXPECT_EQ(false, glslang::IsPow2(2147483647)); +} + +TEST(IsPow2, Uint_Positive_PowersOf2) { + EXPECT_EQ(true, glslang::IsPow2(1u)); + EXPECT_EQ(true, glslang::IsPow2(2u)); + EXPECT_EQ(true, glslang::IsPow2(4u)); + EXPECT_EQ(true, glslang::IsPow2(8u)); + EXPECT_EQ(true, glslang::IsPow2(16u)); + EXPECT_EQ(true, glslang::IsPow2(32768u)); + EXPECT_EQ(true, glslang::IsPow2(65536u)); + EXPECT_EQ(true, glslang::IsPow2(2147483648u)); +} + +TEST(IsPow2, Uint_Positive_NonPowersOf2) { + EXPECT_EQ(false, glslang::IsPow2(3u)); + EXPECT_EQ(false, glslang::IsPow2(5u)); + EXPECT_EQ(false, glslang::IsPow2(2147483647u)); +} + +TEST(IntLog2, Int) { + EXPECT_EQ(0, glslang::IntLog2(1)); + EXPECT_EQ(1, glslang::IntLog2(2)); + EXPECT_EQ(2, glslang::IntLog2(4)); + EXPECT_EQ(3, glslang::IntLog2(8)); + EXPECT_EQ(4, glslang::IntLog2(16)); + EXPECT_EQ(5, glslang::IntLog2(32)); + EXPECT_EQ(6, glslang::IntLog2(64)); + EXPECT_EQ(7, glslang::IntLog2(128)); + EXPECT_EQ(8, glslang::IntLog2(256)); + EXPECT_EQ(9, glslang::IntLog2(512)); + EXPECT_EQ(10, glslang::IntLog2(1024)); + EXPECT_EQ(11, glslang::IntLog2(2048)); + EXPECT_EQ(12, glslang::IntLog2(0x1000)); + EXPECT_EQ(13, glslang::IntLog2(0x2000)); + EXPECT_EQ(14, glslang::IntLog2(0x4000)); + EXPECT_EQ(15, glslang::IntLog2(0x8000)); + EXPECT_EQ(16, glslang::IntLog2(0x10000)); + EXPECT_EQ(17, glslang::IntLog2(0x20000)); + EXPECT_EQ(18, glslang::IntLog2(0x40000)); + EXPECT_EQ(19, glslang::IntLog2(0x80000)); + EXPECT_EQ(20, glslang::IntLog2(0x100000)); + EXPECT_EQ(21, glslang::IntLog2(0x200000)); + EXPECT_EQ(22, glslang::IntLog2(0x400000)); + EXPECT_EQ(23, glslang::IntLog2(0x800000)); + EXPECT_EQ(24, glslang::IntLog2(0x1000000)); + EXPECT_EQ(25, glslang::IntLog2(0x2000000)); + EXPECT_EQ(26, glslang::IntLog2(0x4000000)); + EXPECT_EQ(27, glslang::IntLog2(0x8000000)); + EXPECT_EQ(28, glslang::IntLog2(0x10000000)); + EXPECT_EQ(29, glslang::IntLog2(0x20000000)); + EXPECT_EQ(30, glslang::IntLog2(0x40000000)); +} + +TEST(IntLog2, Uint) { + EXPECT_EQ(0, glslang::IntLog2(1u)); + EXPECT_EQ(1, glslang::IntLog2(2u)); + EXPECT_EQ(2, glslang::IntLog2(4u)); + EXPECT_EQ(3, glslang::IntLog2(8u)); + EXPECT_EQ(4, glslang::IntLog2(16u)); + EXPECT_EQ(5, glslang::IntLog2(32u)); + EXPECT_EQ(6, glslang::IntLog2(64u)); + EXPECT_EQ(7, glslang::IntLog2(128u)); + EXPECT_EQ(8, glslang::IntLog2(256u)); + EXPECT_EQ(9, glslang::IntLog2(512u)); + EXPECT_EQ(10, glslang::IntLog2(1024u)); + EXPECT_EQ(11, glslang::IntLog2(2048u)); + EXPECT_EQ(12, glslang::IntLog2(0x1000u)); + EXPECT_EQ(13, glslang::IntLog2(0x2000u)); + EXPECT_EQ(14, glslang::IntLog2(0x4000u)); + EXPECT_EQ(15, glslang::IntLog2(0x8000u)); + EXPECT_EQ(16, glslang::IntLog2(0x10000u)); + EXPECT_EQ(17, glslang::IntLog2(0x20000u)); + EXPECT_EQ(18, glslang::IntLog2(0x40000u)); + EXPECT_EQ(19, glslang::IntLog2(0x80000u)); + EXPECT_EQ(20, glslang::IntLog2(0x100000u)); + EXPECT_EQ(21, glslang::IntLog2(0x200000u)); + EXPECT_EQ(22, glslang::IntLog2(0x400000u)); + EXPECT_EQ(23, glslang::IntLog2(0x800000u)); + EXPECT_EQ(24, glslang::IntLog2(0x1000000u)); + EXPECT_EQ(25, glslang::IntLog2(0x2000000u)); + EXPECT_EQ(26, glslang::IntLog2(0x4000000u)); + EXPECT_EQ(27, glslang::IntLog2(0x8000000u)); + EXPECT_EQ(28, glslang::IntLog2(0x10000000u)); + EXPECT_EQ(29, glslang::IntLog2(0x20000000u)); + EXPECT_EQ(30, glslang::IntLog2(0x40000000u)); + EXPECT_EQ(31, glslang::IntLog2(0x80000000u)); +} + +TEST(IntLog2, Int64) { + EXPECT_EQ(0, glslang::IntLog2(int64_t(1))); + EXPECT_EQ(1, glslang::IntLog2(int64_t(2))); + EXPECT_EQ(2, glslang::IntLog2(int64_t(4))); + EXPECT_EQ(3, glslang::IntLog2(int64_t(8))); + EXPECT_EQ(30, glslang::IntLog2(int64_t(0x40000000u))); + EXPECT_EQ(31, glslang::IntLog2(int64_t(0x80000000u))); + EXPECT_EQ(32, glslang::IntLog2(int64_t(0x10000) * int64_t(0x10000))); + EXPECT_EQ(48, glslang::IntLog2(int64_t(0x10000) * int64_t(0x10000) * int64_t(0x10000))); + EXPECT_EQ(62, glslang::IntLog2(int64_t(0x10000) * int64_t(0x10000) * int64_t(0x10000) * int64_t(0x4000))); +} + +TEST(IntLog2, Uint64) { + EXPECT_EQ(0, glslang::IntLog2(uint64_t(1))); + EXPECT_EQ(1, glslang::IntLog2(uint64_t(2))); + EXPECT_EQ(2, glslang::IntLog2(uint64_t(4))); + EXPECT_EQ(3, glslang::IntLog2(uint64_t(8))); + EXPECT_EQ(30, glslang::IntLog2(uint64_t(0x40000000u))); + EXPECT_EQ(31, glslang::IntLog2(uint64_t(0x80000000u))); + EXPECT_EQ(32, glslang::IntLog2(uint64_t(0x10000) * uint64_t(0x10000))); + EXPECT_EQ(48, glslang::IntLog2(uint64_t(0x10000) * uint64_t(0x10000) * uint64_t(0x10000))); + EXPECT_EQ(62, glslang::IntLog2(uint64_t(0x10000) * uint64_t(0x10000) * uint64_t(0x10000) * uint64_t(0x4000))); + EXPECT_EQ(63, glslang::IntLog2(uint64_t(0x10000) * uint64_t(0x10000) * uint64_t(0x10000) * uint64_t(0x8000))); +} + +} // anonymous namespace diff --git a/Externals/glslang/gtests/Config.FromFile.cpp b/Externals/glslang/gtests/Config.FromFile.cpp index d6fbf2056522..dd18c13a93b5 100644 --- a/Externals/glslang/gtests/Config.FromFile.cpp +++ b/Externals/glslang/gtests/Config.FromFile.cpp @@ -95,7 +95,7 @@ TEST_P(ConfigTest, FromFile) } // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, ConfigTest, ::testing::ValuesIn(std::vector({ {"specExamples.vert", "baseResults/test.conf", "specExamplesConf.vert.out", (EShMessages)(EShMsgAST | EShMsgCascadingErrors)}, diff --git a/Externals/glslang/gtests/GlslMapIO.FromFile.cpp b/Externals/glslang/gtests/GlslMapIO.FromFile.cpp new file mode 100644 index 000000000000..aabb4ae203a2 --- /dev/null +++ b/Externals/glslang/gtests/GlslMapIO.FromFile.cpp @@ -0,0 +1,355 @@ +// +// Copyright (C) 2016-2017 Google, Inc. +// Copyright (C) 2020 The Khronos Group Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// +// Neither the name of 3Dlabs Inc. Ltd. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +#include + +#include + +#include "TestFixture.h" + +#include "glslang/MachineIndependent/iomapper.h" +#include "glslang/MachineIndependent/reflection.h" + +#ifndef GLSLANG_WEB +namespace glslangtest { +namespace { + +struct IoMapData { + std::vector fileNames; + Semantics semantics; +}; + +using GlslMapIOTest = GlslangTest <::testing::TestWithParam>; + +template +std::string interfaceName(T symbol) { + return symbol.getType()->getBasicType() == glslang::EbtBlock ? std::string(symbol.getType()->getTypeName().c_str()) : symbol.name; +} + +bool verifyIOMapping(std::string& linkingError, glslang::TProgram& program) { + bool success = true; + + // Verify IO Mapping by generating reflection for each stage individually + // and comparing layout qualifiers on the results + + + int reflectionOptions = EShReflectionDefault; + //reflectionOptions |= EShReflectionStrictArraySuffix; + //reflectionOptions |= EShReflectionBasicArraySuffix; + reflectionOptions |= EShReflectionIntermediateIO; + reflectionOptions |= EShReflectionSeparateBuffers; + reflectionOptions |= EShReflectionAllBlockVariables; + //reflectionOptions |= EShReflectionUnwrapIOBlocks; + + success &= program.buildReflection(reflectionOptions); + + // check that the reflection output from the individual stages all makes sense.. + std::vector stageReflections; + for (int s = 0; s < EShLangCount; ++s) { + if (program.getIntermediate((EShLanguage)s)) { + stageReflections.emplace_back((EShReflectionOptions)reflectionOptions, (EShLanguage)s, (EShLanguage)s); + success &= stageReflections.back().addStage((EShLanguage)s, *program.getIntermediate((EShLanguage)s)); + } + } + + // check that input/output locations match between stages + auto it = stageReflections.begin(); + auto nextIt = it + 1; + for (; nextIt != stageReflections.end(); it++, nextIt++) { + int numOut = it->getNumPipeOutputs(); + std::map pipeOut; + + for (int i = 0; i < numOut; i++) { + const glslang::TObjectReflection& out = it->getPipeOutput(i); + std::string name = interfaceName(out); + pipeOut[name] = &out; + } + + int numIn = nextIt->getNumPipeInputs(); + for (int i = 0; i < numIn; i++) { + auto in = nextIt->getPipeInput(i); + std::string name = interfaceName(in); + auto out = pipeOut.find(name); + + if (out != pipeOut.end()) { + auto inQualifier = in.getType()->getQualifier(); + auto outQualifier = out->second->getType()->getQualifier(); + success &= outQualifier.layoutLocation == inQualifier.layoutLocation; + } + else { + if (!in.getType()->isStruct()) { + bool found = false; + for (auto outIt : pipeOut) { + if (outIt.second->getType()->isStruct()) { + unsigned int baseLoc = outIt.second->getType()->getQualifier().hasLocation() ? + outIt.second->getType()->getQualifier().layoutLocation : + std::numeric_limits::max(); + for (size_t j = 0; j < outIt.second->getType()->getStruct()->size(); j++) { + baseLoc = (*outIt.second->getType()->getStruct())[j].type->getQualifier().hasLocation() ? + (*outIt.second->getType()->getStruct())[j].type->getQualifier().layoutLocation : baseLoc; + if (baseLoc != std::numeric_limits::max()) { + if (baseLoc == in.getType()->getQualifier().layoutLocation) { + found = true; + break; + } + baseLoc += glslang::TIntermediate::computeTypeLocationSize(*(*outIt.second->getType()->getStruct())[j].type, EShLangVertex); + } + } + if (found) { + break; + } + } + } + success &= found; + } + else { + unsigned int baseLoc = in.getType()->getQualifier().hasLocation() ? in.getType()->getQualifier().layoutLocation : -1; + for (size_t j = 0; j < in.getType()->getStruct()->size(); j++) { + baseLoc = (*in.getType()->getStruct())[j].type->getQualifier().hasLocation() ? + (*in.getType()->getStruct())[j].type->getQualifier().layoutLocation : baseLoc; + if (baseLoc != std::numeric_limits::max()) { + bool isMemberFound = false; + for (auto outIt : pipeOut) { + if (baseLoc == outIt.second->getType()->getQualifier().layoutLocation) { + isMemberFound = true; + break; + } + } + if (!isMemberFound) { + success &= false; + break; + } + baseLoc += glslang::TIntermediate::computeTypeLocationSize(*(*in.getType()->getStruct())[j].type, EShLangVertex); + } + } + } + } + } + } + + // compare uniforms in each stage to the program + { + int totalUniforms = program.getNumUniformVariables(); + std::map programUniforms; + for (int i = 0; i < totalUniforms; i++) { + const glslang::TObjectReflection& uniform = program.getUniform(i); + std::string name = interfaceName(uniform); + programUniforms[name] = &uniform; + } + it = stageReflections.begin(); + for (; it != stageReflections.end(); it++) { + int numUniform = it->getNumUniforms(); + std::map uniforms; + + for (int i = 0; i < numUniform; i++) { + glslang::TObjectReflection uniform = it->getUniform(i); + std::string name = interfaceName(uniform); + auto programUniform = programUniforms.find(name); + + if (programUniform != programUniforms.end()) { + auto stageQualifier = uniform.getType()->getQualifier(); + auto programQualifier = programUniform->second->getType()->getQualifier(); + + success &= stageQualifier.layoutLocation == programQualifier.layoutLocation; + success &= stageQualifier.layoutBinding == programQualifier.layoutBinding; + success &= stageQualifier.layoutSet == programQualifier.layoutSet; + } + else { + success &= false; + } + } + } + } + + // compare uniform blocks in each stage to the program table + { + int totalUniforms = program.getNumUniformBlocks(); + std::map programUniforms; + for (int i = 0; i < totalUniforms; i++) { + const glslang::TObjectReflection& uniform = program.getUniformBlock(i); + std::string name = interfaceName(uniform); + programUniforms[name] = &uniform; + } + it = stageReflections.begin(); + for (; it != stageReflections.end(); it++) { + int numUniform = it->getNumUniformBlocks(); + std::map uniforms; + + for (int i = 0; i < numUniform; i++) { + glslang::TObjectReflection uniform = it->getUniformBlock(i); + std::string name = interfaceName(uniform); + auto programUniform = programUniforms.find(name); + + if (programUniform != programUniforms.end()) { + auto stageQualifier = uniform.getType()->getQualifier(); + auto programQualifier = programUniform->second->getType()->getQualifier(); + + success &= stageQualifier.layoutLocation == programQualifier.layoutLocation; + success &= stageQualifier.layoutBinding == programQualifier.layoutBinding; + success &= stageQualifier.layoutSet == programQualifier.layoutSet; + } + else { + success &= false; + } + } + } + } + + if (!success) { + linkingError += "Mismatched cross-stage IO\n"; + } + + return success; +} + +TEST_P(GlslMapIOTest, FromFile) +{ + const auto& fileNames = GetParam().fileNames; + Semantics semantics = GetParam().semantics; + const size_t fileCount = fileNames.size(); + const EShMessages controls = DeriveOptions(Source::GLSL, semantics, Target::BothASTAndSpv); + GlslangResult result; + + // Compile each input shader file. + bool success = true; + std::vector> shaders; + for (size_t i = 0; i < fileCount; ++i) { + std::string contents; + tryLoadFile(GlobalTestSettings.testRoot + "/" + fileNames[i], + "input", &contents); + shaders.emplace_back( + new glslang::TShader(GetShaderStage(GetSuffix(fileNames[i])))); + auto* shader = shaders.back().get(); + + shader->setAutoMapLocations(true); + shader->setAutoMapBindings(true); + + if (controls & EShMsgSpvRules) { + if (controls & EShMsgVulkanRules) { + shader->setEnvInput((controls & EShMsgReadHlsl) ? glslang::EShSourceHlsl + : glslang::EShSourceGlsl, + shader->getStage(), glslang::EShClientVulkan, 100); + shader->setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_1); + shader->setEnvTarget(glslang::EShTargetSpv, glslang::EShTargetSpv_1_0); + } else { + shader->setEnvInput((controls & EShMsgReadHlsl) ? glslang::EShSourceHlsl + : glslang::EShSourceGlsl, + shader->getStage(), glslang::EShClientOpenGL, 100); + shader->setEnvClient(glslang::EShClientOpenGL, glslang::EShTargetOpenGL_450); + shader->setEnvTarget(glslang::EshTargetSpv, glslang::EShTargetSpv_1_0); + } + } + + success &= compile(shader, contents, "", controls); + + result.shaderResults.push_back( + { fileNames[i], shader->getInfoLog(), shader->getInfoDebugLog() }); + } + + // Link all of them. + glslang::TProgram program; + for (const auto& shader : shaders) program.addShader(shader.get()); + success &= program.link(controls); + result.linkingOutput = program.getInfoLog(); + result.linkingError = program.getInfoDebugLog(); + + unsigned int stage = 0; + glslang::TIntermediate* firstIntermediate = nullptr; + while (!program.getIntermediate((EShLanguage)stage) && stage < EShLangCount) { stage++; } + firstIntermediate = program.getIntermediate((EShLanguage)stage); + + glslang::TDefaultGlslIoResolver resolver(*firstIntermediate); + glslang::TGlslIoMapper ioMapper; + + if (success) { + success &= program.mapIO(&resolver, &ioMapper); + result.linkingOutput = program.getInfoLog(); + result.linkingError = program.getInfoDebugLog(); + } + + success &= verifyIOMapping(result.linkingError, program); + result.validationResult = success; + + if (success && (controls & EShMsgSpvRules)) { + for (int stage = 0; stage < EShLangCount; ++stage) { + if (program.getIntermediate((EShLanguage)stage)) { + spv::SpvBuildLogger logger; + std::vector spirv_binary; + options().disableOptimizer = false; + glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage), + spirv_binary, &logger, &options()); + + std::ostringstream disassembly_stream; + spv::Parameterize(); + spv::Disassemble(disassembly_stream, spirv_binary); + result.spirvWarningsErrors += logger.getAllMessages(); + result.spirv += disassembly_stream.str(); + result.validationResult &= !options().validate || logger.getAllMessages().empty(); + } + } + } + + std::ostringstream stream; + outputResultToStream(&stream, result, controls); + + // Check with expected results. + const std::string expectedOutputFname = + GlobalTestSettings.testRoot + "/baseResults/" + fileNames.front() + ".out"; + std::string expectedOutput; + tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); + + checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname, + result.spirvWarningsErrors); +} + +// clang-format off +INSTANTIATE_TEST_SUITE_P( + Glsl, GlslMapIOTest, + ::testing::ValuesIn(std::vector({ + {{"iomap.crossStage.vert", "iomap.crossStage.frag" }, Semantics::OpenGL}, + {{"iomap.crossStage.2.vert", "iomap.crossStage.2.geom", "iomap.crossStage.2.frag" }, Semantics::OpenGL}, + {{"iomap.blockOutVariableIn.vert", "iomap.blockOutVariableIn.frag"}, Semantics::OpenGL}, + {{"iomap.variableOutBlockIn.vert", "iomap.variableOutBlockIn.frag"}, Semantics::OpenGL}, + {{"iomap.blockOutVariableIn.2.vert", "iomap.blockOutVariableIn.geom"}, Semantics::OpenGL}, + {{"iomap.variableOutBlockIn.2.vert", "iomap.variableOutBlockIn.geom"}, Semantics::OpenGL}, + // vulkan semantics + {{"iomap.crossStage.vk.vert", "iomap.crossStage.vk.geom", "iomap.crossStage.vk.frag" }, Semantics::Vulkan}, + })) +); +// clang-format on + +} // anonymous namespace +} // namespace glslangtest +#endif diff --git a/Externals/glslang/gtests/HexFloat.cpp b/Externals/glslang/gtests/HexFloat.cpp index ead4fd39c9dc..0a11d961492e 100644 --- a/Externals/glslang/gtests/HexFloat.cpp +++ b/Externals/glslang/gtests/HexFloat.cpp @@ -77,7 +77,7 @@ TEST_P(HexDoubleTest, DecodeCorrectly) { EXPECT_THAT(Decode(GetParam().second), Eq(GetParam().first)); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Float32Tests, HexFloatTest, ::testing::ValuesIn(std::vector, std::string>>({ {0.f, "0x0p+0"}, @@ -129,7 +129,7 @@ INSTANTIATE_TEST_CASE_P( }))); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Float32NanTests, HexFloatTest, ::testing::ValuesIn(std::vector, std::string>>({ // Various NAN and INF cases @@ -147,7 +147,7 @@ INSTANTIATE_TEST_CASE_P( {uint32_t(0x7FFFFFFF), "0x1.fffffep+128"}, // +nan }))); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Float64Tests, HexDoubleTest, ::testing::ValuesIn( std::vector, std::string>>({ @@ -220,7 +220,7 @@ INSTANTIATE_TEST_CASE_P( }))); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Float64NanTests, HexDoubleTest, ::testing::ValuesIn(std::vector< std::pair, std::string>>({ @@ -262,7 +262,7 @@ TEST_P(DecodeHexDoubleTest, DecodeCorrectly) { EXPECT_THAT(Decode(GetParam().first), Eq(GetParam().second)); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Float32DecodeTests, DecodeHexFloatTest, ::testing::ValuesIn(std::vector>>({ {"0x0p+000", 0.f}, @@ -284,7 +284,7 @@ INSTANTIATE_TEST_CASE_P( {"0x0.4p+0", 0.25f}, }))); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Float32DecodeInfTests, DecodeHexFloatTest, ::testing::ValuesIn(std::vector>>({ // inf cases @@ -294,7 +294,7 @@ INSTANTIATE_TEST_CASE_P( {"-0x32p+127", uint32_t(0xFF800000)}, // -inf }))); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Float64DecodeTests, DecodeHexDoubleTest, ::testing::ValuesIn( std::vector>>({ @@ -317,7 +317,7 @@ INSTANTIATE_TEST_CASE_P( {"0x0.4p+0", 0.25}, }))); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Float64DecodeInfTests, DecodeHexDoubleTest, ::testing::ValuesIn( std::vector>>({ @@ -465,7 +465,7 @@ TEST_P(FloatProxyDoubleTest, EncodeCorrectly) { Eq(GetParam().second)); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Float32Tests, FloatProxyFloatTest, ::testing::ValuesIn(std::vector, std::string>>({ // Zero @@ -497,7 +497,7 @@ INSTANTIATE_TEST_CASE_P( {-std::numeric_limits::infinity(), "-0x1p+128"}, }))); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Float64Tests, FloatProxyDoubleTest, ::testing::ValuesIn( std::vector, std::string>>({ @@ -747,7 +747,7 @@ TEST_P(HexFloatRoundTest, RoundDownToFP16) { } // clang-format off -INSTANTIATE_TEST_CASE_P(F32ToF16, HexFloatRoundTest, +INSTANTIATE_TEST_SUITE_P(F32ToF16, HexFloatRoundTest, ::testing::ValuesIn(std::vector( { {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToZero}, @@ -828,7 +828,7 @@ TEST_P(HexFloatRoundUpSignificandTest, Widening) { } } -INSTANTIATE_TEST_CASE_P(F16toF32, HexFloatRoundUpSignificandTest, +INSTANTIATE_TEST_SUITE_P(F16toF32, HexFloatRoundUpSignificandTest, // 0xFC00 of the source 16-bit hex value cover the sign and the exponent. // They are ignored for this test. ::testing::ValuesIn(std::vector( @@ -879,7 +879,7 @@ TEST_P(HexFloatFP32To16Tests, NarrowingCasts) { const uint16_t positive_infinity = 0x7C00; const uint16_t negative_infinity = 0xFC00; -INSTANTIATE_TEST_CASE_P(F32ToF16, HexFloatFP32To16Tests, +INSTANTIATE_TEST_SUITE_P(F32ToF16, HexFloatFP32To16Tests, ::testing::ValuesIn(std::vector( { // Exactly representable as half. @@ -944,7 +944,7 @@ TEST_P(HexFloatFP16To32Tests, WideningCasts) { } } -INSTANTIATE_TEST_CASE_P(F16ToF32, HexFloatFP16To32Tests, +INSTANTIATE_TEST_SUITE_P(F16ToF32, HexFloatFP16To32Tests, ::testing::ValuesIn(std::vector( { {0x0000, 0.f}, @@ -1039,7 +1039,7 @@ FloatParseCase GoodFloatParseCase(std::string literal, bool negate_value, return FloatParseCase{literal, negate_value, true, proxy_expected_value}; } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( FloatParse, ParseNormalFloatTest, ::testing::ValuesIn(std::vector>{ // Failing cases due to trivially incorrect syntax. @@ -1090,7 +1090,7 @@ TEST_P(ParseNormalFloat16Test, Samples) { } } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Float16Parse, ParseNormalFloat16Test, ::testing::ValuesIn(std::vector>{ // Failing cases due to trivially incorrect syntax. @@ -1137,7 +1137,7 @@ TEST_P(FloatProxyParseOverflowFloatTest, Sample) { } } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( FloatOverflow, FloatProxyParseOverflowFloatTest, ::testing::ValuesIn(std::vector>({ {"0", true, 0.0f}, @@ -1164,7 +1164,7 @@ TEST_P(FloatProxyParseOverflowDoubleTest, Sample) { } } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( DoubleOverflow, FloatProxyParseOverflowDoubleTest, ::testing::ValuesIn(std::vector>({ {"0", true, 0.0}, @@ -1193,7 +1193,7 @@ TEST_P(FloatProxyParseOverflowFloat16Test, Sample) { } } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Float16Overflow, FloatProxyParseOverflowFloat16Test, ::testing::ValuesIn(std::vector>({ {"0", true, uint16_t{0}}, diff --git a/Externals/glslang/gtests/Hlsl.FromFile.cpp b/Externals/glslang/gtests/Hlsl.FromFile.cpp old mode 100755 new mode 100644 index 59c687d8708d..519be2549eca --- a/Externals/glslang/gtests/Hlsl.FromFile.cpp +++ b/Externals/glslang/gtests/Hlsl.FromFile.cpp @@ -59,6 +59,7 @@ std::string FileNameAsCustomTestSuffix( using HlslCompileTest = GlslangTest<::testing::TestWithParam>; using HlslVulkan1_1CompileTest = GlslangTest<::testing::TestWithParam>; +using HlslSpv1_6CompileTest = GlslangTest<::testing::TestWithParam>; using HlslCompileAndFlattenTest = GlslangTest<::testing::TestWithParam>; using HlslLegalizeTest = GlslangTest<::testing::TestWithParam>; using HlslDebugTest = GlslangTest<::testing::TestWithParam>; @@ -81,6 +82,13 @@ TEST_P(HlslVulkan1_1CompileTest, FromFile) Target::BothASTAndSpv, true, GetParam().entryPoint); } +TEST_P(HlslSpv1_6CompileTest, FromFile) +{ + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, + Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_3, glslang::EShTargetSpv_1_6, + Target::BothASTAndSpv, true, GetParam().entryPoint); +} + TEST_P(HlslCompileAndFlattenTest, FromFile) { loadFileCompileFlattenUniformsAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, @@ -129,7 +137,7 @@ TEST_P(HlslLegalDebugTest, FromFile) } // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslCompileTest, ::testing::ValuesIn(std::vector{ {"hlsl.amend.frag", "f1"}, @@ -227,6 +235,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.hull.3.tesc", "main"}, {"hlsl.hull.4.tesc", "main"}, {"hlsl.hull.5.tesc", "main"}, + {"hlsl.hull.6.tesc", "main"}, {"hlsl.hull.void.tesc", "main"}, {"hlsl.hull.ctrlpt-1.tesc", "main"}, {"hlsl.hull.ctrlpt-2.tesc", "main"}, @@ -234,16 +243,17 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.groupid.comp", "main"}, {"hlsl.identifier.sample.frag", "main"}, {"hlsl.if.frag", "PixelShaderFunction"}, + {"hlsl.imageload-subvec4.comp", "main"}, {"hlsl.imagefetch-subvec4.comp", "main"}, {"hlsl.implicitBool.frag", "main"}, {"hlsl.inf.vert", "main"}, {"hlsl.inoutquals.frag", "main"}, + {"hlsl.inoutquals.negative.frag", "main"}, {"hlsl.init.frag", "ShaderFunction"}, {"hlsl.init2.frag", "main"}, {"hlsl.isfinite.frag", "main"}, {"hlsl.intrinsics.barriers.comp", "ComputeShaderFunction"}, {"hlsl.intrinsics.comp", "ComputeShaderFunction"}, - {"hlsl.intrinsics.evalfns.frag", "main"}, {"hlsl.intrinsics.d3dcolortoubyte4.frag", "main"}, {"hlsl.intrinsics.double.frag", "PixelShaderFunction"}, {"hlsl.intrinsics.f1632.frag", "main"}, @@ -277,6 +287,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.logical.unary.frag", "main"}, {"hlsl.loopattr.frag", "main"}, {"hlsl.matpack-pragma.frag", "main"}, + {"hlsl.matpack-pragma-global.frag", "main"}, {"hlsl.mip.operator.frag", "main"}, {"hlsl.mip.negative.frag", "main"}, {"hlsl.mip.negative2.frag", "main"}, @@ -305,10 +316,12 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.pp.vert", "main"}, {"hlsl.pp.line.frag", "main"}, {"hlsl.precise.frag", "main"}, + {"hlsl.printf.comp", "main"}, {"hlsl.promote.atomic.frag", "main"}, {"hlsl.promote.binary.frag", "main"}, {"hlsl.promote.vec1.frag", "main"}, {"hlsl.promotions.frag", "main"}, + {"hlsl.round.dx10.frag", "main"}, {"hlsl.rw.atomics.frag", "main"}, {"hlsl.rw.bracket.frag", "main"}, {"hlsl.rw.register.frag", "main"}, @@ -350,6 +363,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.semicolons.frag", "main"}, {"hlsl.shapeConv.frag", "main"}, {"hlsl.shapeConvRet.frag", "main"}, + {"hlsl.singleArgIntPromo.vert", "main"}, {"hlsl.self_cast.frag", "main"}, {"hlsl.snorm.uav.comp", "main"}, {"hlsl.specConstant.frag", "main"}, @@ -379,6 +393,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.structbuffer.fn2.comp", "main"}, {"hlsl.structbuffer.rw.frag", "main"}, {"hlsl.structbuffer.rwbyte.frag", "main"}, + {"hlsl.structbuffer.rwbyte2.comp", "main"}, {"hlsl.structin.vert", "main"}, {"hlsl.structIoFourWay.frag", "main"}, {"hlsl.structStructName.frag", "main"}, @@ -426,7 +441,7 @@ INSTANTIATE_TEST_CASE_P( // clang-format on // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslVulkan1_1CompileTest, ::testing::ValuesIn(std::vector{ {"hlsl.wavebroadcast.comp", "CSMain"}, @@ -444,7 +459,17 @@ INSTANTIATE_TEST_CASE_P( // clang-format on // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( + ToSpirv, HlslSpv1_6CompileTest, + ::testing::ValuesIn(std::vector{ + {"hlsl.spv.1.6.discard.frag", "PixelShaderFunction"} + }), + FileNameAsCustomTestSuffix +); +// clang-format on + +// clang-format off +INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslCompileAndFlattenTest, ::testing::ValuesIn(std::vector{ {"hlsl.array.flatten.frag", "main"}, @@ -456,7 +481,7 @@ INSTANTIATE_TEST_CASE_P( #if ENABLE_OPT // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslLegalizeTest, ::testing::ValuesIn(std::vector{ {"hlsl.aliasOpaque.frag", "main"}, @@ -465,6 +490,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.flattenOpaqueInitMix.vert", "main"}, {"hlsl.flattenSubset.frag", "main"}, {"hlsl.flattenSubset2.frag", "main"}, + {"hlsl.intrinsics.evalfns.frag", "main"}, {"hlsl.partialFlattenLocal.vert", "main"}, {"hlsl.partialFlattenMixed.vert", "main"} }), @@ -474,7 +500,7 @@ INSTANTIATE_TEST_CASE_P( #endif // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslDebugTest, ::testing::ValuesIn(std::vector{ {"hlsl.pp.line2.frag", "MainPs"} @@ -482,9 +508,10 @@ INSTANTIATE_TEST_CASE_P( FileNameAsCustomTestSuffix ); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslDX9CompatibleTest, ::testing::ValuesIn(std::vector{ + {"hlsl.round.dx9.frag", "main"}, {"hlsl.sample.dx9.frag", "main"}, {"hlsl.sample.dx9.vert", "main"}, }), @@ -492,7 +519,7 @@ INSTANTIATE_TEST_CASE_P( ); // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslLegalDebugTest, ::testing::ValuesIn(std::vector{ {"hlsl.pp.line4.frag", "MainPs"} diff --git a/Externals/glslang/gtests/Link.FromFile.Vk.cpp b/Externals/glslang/gtests/Link.FromFile.Vk.cpp index fe96bd9a8e90..4db71c2c968f 100644 --- a/Externals/glslang/gtests/Link.FromFile.Vk.cpp +++ b/Externals/glslang/gtests/Link.FromFile.Vk.cpp @@ -50,6 +50,7 @@ TEST_P(LinkTestVulkan, FromFile) const size_t fileCount = fileNames.size(); const EShMessages controls = DeriveOptions(Source::GLSL, Semantics::Vulkan, Target::AST); GlslangResult result; + result.validationResult = false; // Compile each input shader file. bool success = true; @@ -74,6 +75,11 @@ TEST_P(LinkTestVulkan, FromFile) result.linkingOutput = program.getInfoLog(); result.linkingError = program.getInfoDebugLog(); +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) + if (success) + program.mapIO(); +#endif + if (success && (controls & EShMsgSpvRules)) { spv::SpvBuildLogger logger; std::vector spirv_binary; @@ -103,11 +109,22 @@ TEST_P(LinkTestVulkan, FromFile) } // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, LinkTestVulkan, ::testing::ValuesIn(std::vector>({ {"link1.vk.frag", "link2.vk.frag"}, {"spv.unit1.frag", "spv.unit2.frag", "spv.unit3.frag"}, + {"link.vk.matchingPC.0.0.frag", "link.vk.matchingPC.0.1.frag", + "link.vk.matchingPC.0.2.frag"}, + {"link.vk.differentPC.0.0.frag", "link.vk.differentPC.0.1.frag", + "link.vk.differentPC.0.2.frag"}, + {"link.vk.differentPC.1.0.frag", "link.vk.differentPC.1.1.frag", + "link.vk.differentPC.1.2.frag"}, + {"link.vk.pcNamingValid.0.0.vert", "link.vk.pcNamingValid.0.1.vert"}, + {"link.vk.pcNamingInvalid.0.0.vert", "link.vk.pcNamingInvalid.0.1.vert"}, + {"link.vk.multiBlocksValid.0.0.vert", "link.vk.multiBlocksValid.0.1.vert"}, + {"link.vk.multiBlocksValid.1.0.geom", "link.vk.multiBlocksValid.1.1.geom"}, + {"link.vk.inconsistentGLPerVertex.0.vert", "link.vk.inconsistentGLPerVertex.0.geom"}, })) ); // clang-format on diff --git a/Externals/glslang/gtests/Link.FromFile.cpp b/Externals/glslang/gtests/Link.FromFile.cpp index abc33a910bac..9e029fc7b23e 100644 --- a/Externals/glslang/gtests/Link.FromFile.cpp +++ b/Externals/glslang/gtests/Link.FromFile.cpp @@ -86,7 +86,7 @@ TEST_P(LinkTest, FromFile) } // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, LinkTest, ::testing::ValuesIn(std::vector>({ {"mains1.frag", "mains2.frag", "noMain1.geom", "noMain2.geom"}, @@ -99,8 +99,16 @@ INSTANTIATE_TEST_CASE_P( {"empty.frag", "empty2.frag", "empty3.frag"}, {"150.tesc", "150.tese", "400.tesc", "400.tese", "410.tesc", "420.tesc", "420.tese"}, {"max_vertices_0.geom"}, + {"contradict_0.geom", "contradict_1.geom"}, {"es-link1.frag", "es-link2.frag"}, - {"missingBodies.vert"} + {"missingBodies.vert"}, + {"link.multiAnonBlocksInvalid.0.0.vert", "link.multiAnonBlocksInvalid.0.1.vert"}, + {"link.multiAnonBlocksValid.0.0.vert", "link.multiAnonBlocksValid.0.1.vert"}, + {"link.multiBlocksInvalid.0.0.vert", "link.multiBlocksInvalid.0.1.vert"}, + {"link.multiBlocksValid.1.0.vert", "link.multiBlocksValid.1.1.vert"}, + {"link.tesselation.vert", "link.tesselation.frag"}, + {"link.tesselation.tese", "link.tesselation.tesc"}, + {"link.redeclareBuiltin.vert", "link.redeclareBuiltin.geom"}, })) ); // clang-format on diff --git a/Externals/glslang/gtests/Pp.FromFile.cpp b/Externals/glslang/gtests/Pp.FromFile.cpp index 1bea8775dcfd..92b4d249220c 100644 --- a/Externals/glslang/gtests/Pp.FromFile.cpp +++ b/Externals/glslang/gtests/Pp.FromFile.cpp @@ -47,7 +47,7 @@ TEST_P(PreprocessingTest, FromFile) } // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, PreprocessingTest, ::testing::ValuesIn(std::vector({ "preprocessor.bad_arg.vert", diff --git a/Externals/glslang/gtests/Remap.FromFile.cpp b/Externals/glslang/gtests/Remap.FromFile.cpp index 50bce8e357c2..f01425362ead 100644 --- a/Externals/glslang/gtests/Remap.FromFile.cpp +++ b/Externals/glslang/gtests/Remap.FromFile.cpp @@ -80,7 +80,7 @@ TEST_P(RemapTest, FromFile) } // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ToSpirv, RemapTest, ::testing::ValuesIn(std::vector{ // GLSL remapper tests diff --git a/Externals/glslang/gtests/Spv.FromFile.cpp b/Externals/glslang/gtests/Spv.FromFile.cpp index 0e46e790f78a..db4ac268306c 100644 --- a/Externals/glslang/gtests/Spv.FromFile.cpp +++ b/Externals/glslang/gtests/Spv.FromFile.cpp @@ -1,6 +1,7 @@ // // Copyright (C) 2016 Google, Inc. // Copyright (C) 2019 ARM Limited. +// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -68,6 +69,7 @@ using CompileVulkanToSpirvDeadCodeElimTest = GlslangTest<::testing::TestWithPara using CompileVulkanToDebugSpirvTest = GlslangTest<::testing::TestWithParam>; using CompileVulkan1_1ToSpirvTest = GlslangTest<::testing::TestWithParam>; using CompileToSpirv14Test = GlslangTest<::testing::TestWithParam>; +using CompileToSpirv16Test = GlslangTest<::testing::TestWithParam>; using CompileOpenGLToSpirvTest = GlslangTest<::testing::TestWithParam>; using VulkanSemantics = GlslangTest<::testing::TestWithParam>; using OpenGLSemantics = GlslangTest<::testing::TestWithParam>; @@ -76,6 +78,7 @@ using HlslIoMap = GlslangTest<::testing::TestWithParam>; using GlslIoMap = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirvTestAMD = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirvTestNV = GlslangTest<::testing::TestWithParam>; +using CompileVulkanToSpirv14TestNV = GlslangTest<::testing::TestWithParam>; using CompileUpgradeTextureToSampledTextureAndDropSamplersTest = GlslangTest<::testing::TestWithParam>; // Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully @@ -105,6 +108,7 @@ TEST_P(CompileVulkanToDebugSpirvTest, FromFile) "/baseResults/", false, true); } + TEST_P(CompileVulkan1_1ToSpirvTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), @@ -119,6 +123,13 @@ TEST_P(CompileToSpirv14Test, FromFile) Target::Spv); } +TEST_P(CompileToSpirv16Test, FromFile) +{ + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), + Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_3, glslang::EShTargetSpv_1_6, + Target::Spv); +} + // Compiling GLSL to SPIR-V under OpenGL semantics. Expected to successfully // generate SPIR-V. TEST_P(CompileOpenGLToSpirvTest, FromFile) @@ -202,6 +213,13 @@ TEST_P(CompileVulkanToSpirvTestNV, FromFile) Target::Spv); } +TEST_P(CompileVulkanToSpirv14TestNV, FromFile) +{ + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), + Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_4, + Target::Spv); +} + TEST_P(CompileUpgradeTextureToSampledTextureAndDropSamplersTest, FromFile) { loadCompileUpgradeTextureToSampledTextureAndDropSamplersAndCheck(GlobalTestSettings.testRoot, @@ -212,7 +230,7 @@ TEST_P(CompileUpgradeTextureToSampledTextureAndDropSamplersTest, FromFile) } // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkanToSpirvTest, ::testing::ValuesIn(std::vector({ // Test looping constructs. @@ -229,6 +247,17 @@ INSTANTIATE_TEST_CASE_P( "spv.while-continue-break.vert", "spv.while-simple.vert", // vulkan-specific tests + "rayQuery.rgen", + "rayQuery-no-cse.rgen", + "rayQuery-initialize.rgen", + "rayQuery-allOps.rgen", + "rayQuery-allOps.Error.rgen", + "rayQuery-committed.Error.rgen", + "rayQuery-allOps.comp", + "rayQuery-allOps.frag", + "rayQuery-initialization.Error.comp", + "rayQuery-global.rgen", + "rayQuery-types.comp", "spv.set.vert", "spv.double.comp", "spv.100ops.frag", @@ -271,6 +300,7 @@ INSTANTIATE_TEST_CASE_P( "spv.always-discard2.frag", "spv.arbPostDepthCoverage.frag", "spv.arbPostDepthCoverage_Error.frag", + "spv.atomicCounter.comp", "spv.bitCast.frag", "spv.bool.vert", "spv.boolInBlock.frag", @@ -309,9 +339,12 @@ INSTANTIATE_TEST_CASE_P( "spv.dataOut.frag", "spv.dataOutIndirect.frag", "spv.dataOutIndirect.vert", + "spv.debugPrintf.frag", + "spv.debugPrintf_Error.frag", "spv.demoteDisabled.frag", "spv.deepRvalue.frag", "spv.depthOut.frag", + "spv.depthUnchanged.frag", "spv.discard-dce.frag", "spv.doWhileLoop.frag", "spv.earlyReturnDiscard.frag", @@ -334,10 +367,22 @@ INSTANTIATE_TEST_CASE_P( "spv.functionSemantics.frag", "spv.functionParameterTypes.frag", "spv.GeometryShaderPassthrough.geom", + "spv.funcall.array.frag", + "spv.load.bool.array.interface.block.frag", "spv.interpOps.frag", "spv.int64.frag", "spv.intcoopmat.comp", "spv.intOps.vert", + "spv.intrinsicsSpirvByReference.vert", + "spv.intrinsicsSpirvDecorate.frag", + "spv.intrinsicsSpirvExecutionMode.frag", + "spv.intrinsicsSpirvInstruction.vert", + "spv.intrinsicsSpirvLiteral.vert", + "spv.intrinsicsSpirvStorageClass.rchit", + "spv.intrinsicsSpirvType.rgen", + "spv.intrinsicsSpirvTypeLocalVar.vert", + "spv.invariantAll.vert", + "spv.layer.tese", "spv.layoutNested.vert", "spv.length.frag", "spv.localAggregates.frag", @@ -355,12 +400,19 @@ INSTANTIATE_TEST_CASE_P( "spv.nonSquare.vert", "spv.nonuniform.frag", "spv.nonuniform2.frag", + "spv.nonuniform3.frag", + "spv.nonuniform4.frag", + "spv.nonuniform5.frag", "spv.noWorkgroup.comp", + "spv.nullInit.comp", "spv.offsets.frag", "spv.Operations.frag", "spv.paramMemory.frag", + "spv.paramMemory.420.frag", "spv.precision.frag", + "spv.precisionArgs.frag", "spv.precisionNonESSamp.frag", + "spv.precisionTexture.frag", "spv.prepost.frag", "spv.privateVariableTypes.frag", "spv.qualifiers.vert", @@ -391,6 +443,7 @@ INSTANTIATE_TEST_CASE_P( "spv.texture.vert", "spv.textureBuffer.vert", "spv.image.frag", + "spv.imageAtomic64.frag", "spv.types.frag", "spv.uint.frag", "spv.uniformArray.frag", @@ -411,9 +464,15 @@ INSTANTIATE_TEST_CASE_P( "spv.specConstant.comp", "spv.specConstantComposite.vert", "spv.specConstantOperations.vert", + "spv.specConstant.float16.comp", + "spv.specConstant.int16.comp", + "spv.specConstant.int8.comp", "spv.storageBuffer.vert", + "spv.terminate.frag", + "spv.subgroupUniformControlFlow.vert", "spv.precise.tese", "spv.precise.tesc", + "spv.viewportindex.tese", "spv.volatileAtomic.comp", "spv.vulkan100.subgroupArithmetic.comp", "spv.vulkan100.subgroupPartitioned.comp", @@ -423,6 +482,9 @@ INSTANTIATE_TEST_CASE_P( "spv.samplerlessTextureFunctions.frag", "spv.smBuiltins.vert", "spv.smBuiltins.frag", + "spv.builtin.PrimitiveShadingRateEXT.vert", + "spv.builtin.ShadingRateEXT.frag", + "spv.atomicAdd.bufferReference.comp" })), FileNameAsCustomTestSuffix ); @@ -430,7 +492,7 @@ INSTANTIATE_TEST_CASE_P( // Cases with deliberately unreachable code. // By default the compiler will aggressively eliminate // unreachable merges and continues. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( GlslWithDeadCode, CompileVulkanToSpirvDeadCodeElimTest, ::testing::ValuesIn(std::vector({ "spv.dead-after-continue.vert", @@ -445,7 +507,7 @@ INSTANTIATE_TEST_CASE_P( ); // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkanToDebugSpirvTest, ::testing::ValuesIn(std::vector({ "spv.pp.line.frag", @@ -454,7 +516,7 @@ INSTANTIATE_TEST_CASE_P( ); // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkan1_1ToSpirvTest, ::testing::ValuesIn(std::vector({ "spv.1.3.8bitstorage-ubo.vert", @@ -466,11 +528,13 @@ INSTANTIATE_TEST_CASE_P( "spv.vulkan110.int16.frag", "spv.int32.frag", "spv.explicittypes.frag", + "spv.float16NoRelaxed.vert", "spv.float32.frag", "spv.float64.frag", "spv.memoryScopeSemantics.comp", "spv.memoryScopeSemantics_Error.comp", "spv.multiView.frag", + "spv.queueFamilyScope.comp", "spv.RayGenShader11.rgen", "spv.subgroup.frag", "spv.subgroup.geom", @@ -510,26 +574,76 @@ INSTANTIATE_TEST_CASE_P( ); // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, CompileToSpirv14Test, ::testing::ValuesIn(std::vector({ "spv.1.4.LoopControl.frag", "spv.1.4.NonWritable.frag", "spv.1.4.OpEntryPoint.frag", + "spv.1.4.OpEntryPoint.opaqueParams.vert", "spv.1.4.OpSelect.frag", "spv.1.4.OpCopyLogical.comp", "spv.1.4.OpCopyLogicalBool.comp", "spv.1.4.OpCopyLogical.funcall.frag", + "spv.1.4.funcall.array.frag", + "spv.1.4.load.bool.array.interface.block.frag", "spv.1.4.image.frag", "spv.1.4.sparseTexture.frag", "spv.1.4.texture.frag", "spv.1.4.constructComposite.comp", + "spv.ext.AnyHitShader.rahit", + "spv.ext.AnyHitShader_Errors.rahit", + "spv.ext.ClosestHitShader.rchit", + "spv.ext.ClosestHitShader_Subgroup.rchit", + "spv.ext.ClosestHitShader_Errors.rchit", + "spv.ext.IntersectShader.rint", + "spv.ext.IntersectShader_Errors.rint", + "spv.ext.MissShader.rmiss", + "spv.ext.MissShader_Errors.rmiss", + "spv.ext.RayPrimCull_Errors.rgen", + "spv.ext.RayCallable.rcall", + "spv.ext.RayCallable_Errors.rcall", + "spv.ext.RayConstants.rgen", + "spv.ext.RayGenShader.rgen", + "spv.ext.RayGenShader_Errors.rgen", + "spv.ext.RayGenShader11.rgen", + "spv.ext.RayGenShaderArray.rgen", + "spv.ext.RayGenSBTlayout.rgen", + "spv.ext.RayGenSBTlayout140.rgen", + "spv.ext.RayGenSBTlayout430.rgen", + "spv.ext.RayGenSBTlayoutscalar.rgen", + "spv.ext.World3x4.rahit", + "spv.ext.AccelDecl.frag", + "spv.ext.RayQueryDecl.frag", + + // SPV_KHR_workgroup_memory_explicit_layout depends on SPIR-V 1.4. + "spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp", + "spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp", + "spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp", + "spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp", + "spv.WorkgroupMemoryExplicitLayout.NonBlock.comp", + "spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp", + "spv.WorkgroupMemoryExplicitLayout.std140.comp", + "spv.WorkgroupMemoryExplicitLayout.std430.comp", + "spv.WorkgroupMemoryExplicitLayout.scalar.comp", })), FileNameAsCustomTestSuffix ); // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( + Glsl, CompileToSpirv16Test, + ::testing::ValuesIn(std::vector({ + "spv.1.6.conditionalDiscard.frag", + "spv.1.6.helperInvocation.frag", + "spv.1.6.specConstant.comp", + })), + FileNameAsCustomTestSuffix +); + + +// clang-format off +INSTANTIATE_TEST_SUITE_P( Hlsl, HlslIoMap, ::testing::ValuesIn(std::vector{ { "spv.register.autoassign.frag", "main_ep", 5, 10, 0, 20, 30, true, false }, @@ -549,7 +663,7 @@ INSTANTIATE_TEST_CASE_P( ); // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Hlsl, GlslIoMap, ::testing::ValuesIn(std::vector{ { "spv.glsl.register.autoassign.frag", "main", 5, 10, 0, 20, 30, true, false }, @@ -559,17 +673,23 @@ INSTANTIATE_TEST_CASE_P( ); // clang-format off -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, CompileOpenGLToSpirvTest, ::testing::ValuesIn(std::vector({ "spv.460.frag", "spv.460.vert", "spv.460.comp", "spv.atomic.comp", + "spv.atomicFloat.comp", + "spv.atomicFloat_Error.comp", "spv.glFragColor.frag", "spv.rankShift.comp", "spv.specConst.vert", + "spv.specTexture.frag", "spv.OVR_multiview.vert", + "spv.uniformInitializer.frag", + "spv.uniformInitializerSpecConstant.frag", + "spv.uniformInitializerStruct.frag", "spv.xfbOffsetOnBlockMembersAssignment.vert", "spv.xfbOffsetOnStructMembersAssignment.vert", "spv.xfbOverlapOffsetCheckWithBlockAndMember.vert", @@ -578,7 +698,7 @@ INSTANTIATE_TEST_CASE_P( FileNameAsCustomTestSuffix ); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, VulkanSemantics, ::testing::ValuesIn(std::vector({ "vulkan.frag", @@ -590,7 +710,7 @@ INSTANTIATE_TEST_CASE_P( FileNameAsCustomTestSuffix ); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, OpenGLSemantics, ::testing::ValuesIn(std::vector({ "glspv.esversion.vert", @@ -602,7 +722,7 @@ INSTANTIATE_TEST_CASE_P( FileNameAsCustomTestSuffix ); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, VulkanAstSemantics, ::testing::ValuesIn(std::vector({ "vulkan.ast.vert", @@ -610,7 +730,7 @@ INSTANTIATE_TEST_CASE_P( FileNameAsCustomTestSuffix ); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkanToSpirvTestAMD, ::testing::ValuesIn(std::vector({ "spv.16bitxfb.vert", @@ -626,7 +746,7 @@ INSTANTIATE_TEST_CASE_P( FileNameAsCustomTestSuffix ); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkanToSpirvTestNV, ::testing::ValuesIn(std::vector({ "spv.sampleMaskOverrideCoverage.frag", @@ -638,6 +758,7 @@ INSTANTIATE_TEST_CASE_P( "spv.multiviewPerViewAttributes.vert", "spv.multiviewPerViewAttributes.tesc", "spv.atomicInt64.comp", + "spv.atomicStoreInt64.comp", "spv.shadingRate.frag", "spv.RayGenShader.rgen", "spv.RayGenShaderArray.rgen", @@ -674,7 +795,18 @@ INSTANTIATE_TEST_CASE_P( FileNameAsCustomTestSuffix ); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( + Glsl, CompileVulkanToSpirv14TestNV, + ::testing::ValuesIn(std::vector({ + "spv.RayGenShaderMotion.rgen", + "spv.IntersectShaderMotion.rint", + "spv.AnyHitShaderMotion.rahit", + "spv.ClosestHitShaderMotion.rchit", + "spv.MissShaderMotion.rmiss", +})), +FileNameAsCustomTestSuffix +); +INSTANTIATE_TEST_SUITE_P( Glsl, CompileUpgradeTextureToSampledTextureAndDropSamplersTest, ::testing::ValuesIn(std::vector({ "spv.texture.sampler.transform.frag", diff --git a/Externals/glslang/gtests/TestFixture.cpp b/Externals/glslang/gtests/TestFixture.cpp index baf4d16dd686..ced6fcce6e4c 100644 --- a/Externals/glslang/gtests/TestFixture.cpp +++ b/Externals/glslang/gtests/TestFixture.cpp @@ -61,17 +61,17 @@ EShLanguage GetShaderStage(const std::string& stage) } else if (stage == "comp") { return EShLangCompute; } else if (stage == "rgen") { - return EShLangRayGenNV; + return EShLangRayGen; } else if (stage == "rint") { - return EShLangIntersectNV; + return EShLangIntersect; } else if (stage == "rahit") { - return EShLangAnyHitNV; + return EShLangAnyHit; } else if (stage == "rchit") { - return EShLangClosestHitNV; + return EShLangClosestHit; } else if (stage == "rmiss") { - return EShLangMissNV; + return EShLangMiss; } else if (stage == "rcall") { - return EShLangCallableNV; + return EShLangCallable; } else if (stage == "task") { return EShLangTaskNV; } else if (stage == "mesh") { diff --git a/Externals/glslang/gtests/TestFixture.h b/Externals/glslang/gtests/TestFixture.h old mode 100755 new mode 100644 index 8d2ebd92575c..2b057dcb0ea4 --- a/Externals/glslang/gtests/TestFixture.h +++ b/Externals/glslang/gtests/TestFixture.h @@ -253,10 +253,13 @@ class GlslangTest : public GT { glslang::TProgram program; program.addShader(&shader); success &= program.link(controls); - - spv::SpvBuildLogger logger; +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) + if (success) + program.mapIO(); +#endif if (success && (controls & EShMsgSpvRules)) { + spv::SpvBuildLogger logger; std::vector spirv_binary; options().disableOptimizer = !enableOptimizer; options().generateDebugInfo = enableDebug; @@ -312,8 +315,9 @@ class GlslangTest : public GT { program.addShader(&shader); success &= program.link(controls); -#ifndef GLSLANG_WEB - success &= program.mapIO(); +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) + if (success) + program.mapIO(); #endif spv::SpvBuildLogger logger; @@ -356,10 +360,13 @@ class GlslangTest : public GT { glslang::TProgram program; program.addShader(&shader); success &= program.link(controls); - - spv::SpvBuildLogger logger; +#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) + if (success) + program.mapIO(); +#endif if (success && (controls & EShMsgSpvRules)) { + spv::SpvBuildLogger logger; std::vector spirv_binary; glslang::GlslangToSpv(*program.getIntermediate(stage), spirv_binary, &logger, &options()); diff --git a/Externals/glslang/gtests/VkRelaxed.FromFile.cpp b/Externals/glslang/gtests/VkRelaxed.FromFile.cpp new file mode 100644 index 000000000000..96cd3cf69a18 --- /dev/null +++ b/Externals/glslang/gtests/VkRelaxed.FromFile.cpp @@ -0,0 +1,306 @@ +// +// Copyright (C) 2016-2017 Google, Inc. +// Copyright (C) 2020 The Khronos Group Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// +// Neither the name of 3Dlabs Inc. Ltd. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +#include + +#include + +#include "TestFixture.h" + +#include "glslang/MachineIndependent/iomapper.h" +#include "glslang/MachineIndependent/reflection.h" + +#ifndef GLSLANG_WEB +namespace glslangtest { +namespace { + +struct vkRelaxedData { + std::vector fileNames; + std::vector> resourceSetBindings; +}; + +using VulkanRelaxedTest = GlslangTest <::testing::TestWithParam>; + +template +std::string interfaceName(T symbol) { + return symbol.getType()->getBasicType() == glslang::EbtBlock ? std::string(symbol.getType()->getTypeName().c_str()) : symbol.name; +} + +bool verifyIOMapping(std::string& linkingError, glslang::TProgram& program) { + bool success = true; + + // Verify IO Mapping by generating reflection for each stage individually + // and comparing layout qualifiers on the results + + + int reflectionOptions = EShReflectionDefault; + //reflectionOptions |= EShReflectionStrictArraySuffix; + //reflectionOptions |= EShReflectionBasicArraySuffix; + reflectionOptions |= EShReflectionIntermediateIO; + reflectionOptions |= EShReflectionSeparateBuffers; + reflectionOptions |= EShReflectionAllBlockVariables; + //reflectionOptions |= EShReflectionUnwrapIOBlocks; + + success &= program.buildReflection(reflectionOptions); + + // check that the reflection output from the individual stages all makes sense.. + std::vector stageReflections; + for (int s = 0; s < EShLangCount; ++s) { + if (program.getIntermediate((EShLanguage)s)) { + stageReflections.emplace_back((EShReflectionOptions)reflectionOptions, (EShLanguage)s, (EShLanguage)s); + success &= stageReflections.back().addStage((EShLanguage)s, *program.getIntermediate((EShLanguage)s)); + } + } + + // check that input/output locations match between stages + auto it = stageReflections.begin(); + auto nextIt = it + 1; + for (; nextIt != stageReflections.end(); it++, nextIt++) { + int numOut = it->getNumPipeOutputs(); + std::map pipeOut; + + for (int i = 0; i < numOut; i++) { + const glslang::TObjectReflection& out = it->getPipeOutput(i); + std::string name = interfaceName(out); + pipeOut[name] = &out; + } + + int numIn = nextIt->getNumPipeInputs(); + for (int i = 0; i < numIn; i++) { + auto in = nextIt->getPipeInput(i); + std::string name = interfaceName(in); + auto out = pipeOut.find(name); + + if (out != pipeOut.end()) { + auto inQualifier = in.getType()->getQualifier(); + auto outQualifier = out->second->getType()->getQualifier(); + success &= outQualifier.layoutLocation == inQualifier.layoutLocation; + // These are not part of a matched interface. Other cases still need to be added. + } else if (name != "gl_FrontFacing" && name != "gl_FragCoord") { + success &= false; + } + } + } + + // compare uniforms in each stage to the program + { + int totalUniforms = program.getNumUniformVariables(); + std::map programUniforms; + for (int i = 0; i < totalUniforms; i++) { + const glslang::TObjectReflection& uniform = program.getUniform(i); + std::string name = interfaceName(uniform); + programUniforms[name] = &uniform; + } + it = stageReflections.begin(); + for (; it != stageReflections.end(); it++) { + int numUniform = it->getNumUniforms(); + std::map uniforms; + + for (int i = 0; i < numUniform; i++) { + glslang::TObjectReflection uniform = it->getUniform(i); + std::string name = interfaceName(uniform); + auto programUniform = programUniforms.find(name); + + if (programUniform != programUniforms.end()) { + auto stageQualifier = uniform.getType()->getQualifier(); + auto programQualifier = programUniform->second->getType()->getQualifier(); + + success &= stageQualifier.layoutLocation == programQualifier.layoutLocation; + success &= stageQualifier.layoutBinding == programQualifier.layoutBinding; + success &= stageQualifier.layoutSet == programQualifier.layoutSet; + } + else { + success &= false; + } + } + } + } + + // compare uniform blocks in each stage to the program table + { + int totalUniforms = program.getNumUniformBlocks(); + std::map programUniforms; + for (int i = 0; i < totalUniforms; i++) { + const glslang::TObjectReflection& uniform = program.getUniformBlock(i); + std::string name = interfaceName(uniform); + programUniforms[name] = &uniform; + } + it = stageReflections.begin(); + for (; it != stageReflections.end(); it++) { + int numUniform = it->getNumUniformBlocks(); + std::map uniforms; + + for (int i = 0; i < numUniform; i++) { + glslang::TObjectReflection uniform = it->getUniformBlock(i); + std::string name = interfaceName(uniform); + auto programUniform = programUniforms.find(name); + + if (programUniform != programUniforms.end()) { + auto stageQualifier = uniform.getType()->getQualifier(); + auto programQualifier = programUniform->second->getType()->getQualifier(); + + success &= stageQualifier.layoutLocation == programQualifier.layoutLocation; + success &= stageQualifier.layoutBinding == programQualifier.layoutBinding; + success &= stageQualifier.layoutSet == programQualifier.layoutSet; + } + else { + success &= false; + } + } + } + } + + if (!success) { + linkingError += "Mismatched cross-stage IO\n"; + } + + return success; +} + +TEST_P(VulkanRelaxedTest, FromFile) +{ + const auto& fileNames = GetParam().fileNames; + const auto& resourceSetBindings = GetParam().resourceSetBindings; + Semantics semantics = Semantics::Vulkan; + const size_t fileCount = fileNames.size(); + const EShMessages controls = DeriveOptions(Source::GLSL, semantics, Target::BothASTAndSpv); + GlslangResult result; + + // Compile each input shader file. + bool success = true; + std::vector> shaders; + for (size_t i = 0; i < fileCount; ++i) { + std::string contents; + tryLoadFile(GlobalTestSettings.testRoot + "/" + fileNames[i], + "input", &contents); + shaders.emplace_back( + new glslang::TShader(GetShaderStage(GetSuffix(fileNames[i])))); + auto* shader = shaders.back().get(); + + shader->setAutoMapLocations(true); + shader->setAutoMapBindings(true); + + shader->setEnvInput(glslang::EShSourceGlsl, shader->getStage(), glslang::EShClientVulkan, 100); + shader->setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_1); + shader->setEnvTarget(glslang::EShTargetSpv, glslang::EShTargetSpv_1_0); + + // Use vulkan relaxed option + shader->setEnvInputVulkanRulesRelaxed(); + + success &= compile(shader, contents, "", controls); + + result.shaderResults.push_back( + { fileNames[i], shader->getInfoLog(), shader->getInfoDebugLog() }); + } + + // Link all of them. + glslang::TProgram program; + for (const auto& shader : shaders) program.addShader(shader.get()); + success &= program.link(controls); + result.linkingOutput = program.getInfoLog(); + result.linkingError = program.getInfoDebugLog(); + + if (!resourceSetBindings.empty()) { + assert(resourceSetBindings.size() == fileNames.size()); + for (size_t i = 0; i < shaders.size(); i++) + shaders[i]->setResourceSetBinding(resourceSetBindings[i]); + } + + unsigned int stage = 0; + glslang::TIntermediate* firstIntermediate = nullptr; + while (!program.getIntermediate((EShLanguage)stage) && stage < EShLangCount) { stage++; } + firstIntermediate = program.getIntermediate((EShLanguage)stage); + + glslang::TDefaultGlslIoResolver resolver(*firstIntermediate); + glslang::TGlslIoMapper ioMapper; + + if (success) { + success &= program.mapIO(&resolver, &ioMapper); + result.linkingOutput = program.getInfoLog(); + result.linkingError = program.getInfoDebugLog(); + } + + success &= verifyIOMapping(result.linkingError, program); + result.validationResult = success; + + if (success && (controls & EShMsgSpvRules)) { + for (int stage = 0; stage < EShLangCount; ++stage) { + if (program.getIntermediate((EShLanguage)stage)) { + spv::SpvBuildLogger logger; + std::vector spirv_binary; + options().disableOptimizer = false; + glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage), + spirv_binary, &logger, &options()); + + std::ostringstream disassembly_stream; + spv::Parameterize(); + spv::Disassemble(disassembly_stream, spirv_binary); + result.spirvWarningsErrors += logger.getAllMessages(); + result.spirv += disassembly_stream.str(); + result.validationResult &= !options().validate || logger.getAllMessages().empty(); + } + } + } + + std::ostringstream stream; + outputResultToStream(&stream, result, controls); + + // Check with expected results. + const std::string expectedOutputFname = + GlobalTestSettings.testRoot + "/baseResults/" + fileNames.front() + ".out"; + std::string expectedOutput; + tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); + + checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname, + result.spirvWarningsErrors); +} + +// clang-format off +INSTANTIATE_TEST_SUITE_P( + Glsl, VulkanRelaxedTest, + ::testing::ValuesIn(std::vector({ + {{"vk.relaxed.frag"}}, + {{"vk.relaxed.link1.frag", "vk.relaxed.link2.frag"}}, + {{"vk.relaxed.stagelink.0.0.vert", "vk.relaxed.stagelink.0.1.vert", "vk.relaxed.stagelink.0.2.vert", "vk.relaxed.stagelink.0.0.frag", "vk.relaxed.stagelink.0.1.frag", "vk.relaxed.stagelink.0.2.frag"}}, + {{"vk.relaxed.stagelink.vert", "vk.relaxed.stagelink.frag"}}, + {{"vk.relaxed.errorcheck.vert", "vk.relaxed.errorcheck.frag"}}, + {{"vk.relaxed.changeSet.vert", "vk.relaxed.changeSet.frag" }, { {"0"}, {"1"} } }, + })) +); +// clang-format on + +} // anonymous namespace +} // namespace glslangtest +#endif diff --git a/Externals/glslang/hlsl/CMakeLists.txt b/Externals/glslang/hlsl/CMakeLists.txt index ae0d4d4eb743..7d5bc152acfd 100644 --- a/Externals/glslang/hlsl/CMakeLists.txt +++ b/Externals/glslang/hlsl/CMakeLists.txt @@ -1,25 +1,43 @@ -set(SOURCES - hlslAttributes.cpp - hlslParseHelper.cpp - hlslScanContext.cpp - hlslOpMap.cpp - hlslTokenStream.cpp - hlslGrammar.cpp - hlslParseables.cpp) +# Copyright (C) 2020 The Khronos Group Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of The Khronos Group Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. -set(HEADERS - hlslAttributes.h - hlslParseHelper.h - hlslTokens.h - hlslScanContext.h - hlslOpMap.h - hlslTokenStream.h - hlslGrammar.h - hlslParseables.h) +# The HLSL source is directly embedded into the glslang target when ENABLE_HLSL +# is set. +# This source now lives at: glslang/HLSL/ +# The HLSL target is now just a stub that exists for backwards compatibility for +# projects that referenced this target. -glslang_pch(SOURCES pch.cpp) - -add_library(HLSL ${LIB_TYPE} ${SOURCES} ${HEADERS}) +add_library(HLSL ${LIB_TYPE} "stub.cpp") set_property(TARGET HLSL PROPERTY FOLDER hlsl) set_property(TARGET HLSL PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -27,10 +45,6 @@ if(WIN32 AND BUILD_SHARED_LIBS) set_target_properties(HLSL PROPERTIES PREFIX "") endif() -if(WIN32) - source_group("Source" FILES ${SOURCES} ${HEADERS}) -endif(WIN32) - if(ENABLE_GLSLANG_INSTALL) if(BUILD_SHARED_LIBS) install(TARGETS HLSL EXPORT HLSLTargets @@ -42,4 +56,4 @@ if(ENABLE_GLSLANG_INSTALL) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() install(EXPORT HLSLTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) -endif(ENABLE_GLSLANG_INSTALL) +endif() diff --git a/Externals/glslang/glslang/MachineIndependent/pch.cpp b/Externals/glslang/hlsl/stub.cpp similarity index 77% rename from Externals/glslang/glslang/MachineIndependent/pch.cpp rename to Externals/glslang/hlsl/stub.cpp index b7a08654a54a..f1d39c1517b4 100644 --- a/Externals/glslang/glslang/MachineIndependent/pch.cpp +++ b/Externals/glslang/hlsl/stub.cpp @@ -1,5 +1,6 @@ // -// Copyright (C) 2018 The Khronos Group Inc. +// Copyright (C) 2020 Google, Inc. +// // All rights reserved. // // Redistribution and use in source and binary forms, with or without @@ -14,7 +15,7 @@ // disclaimer in the documentation and/or other materials provided // with the distribution. // -// Neither the name of 3Dlabs Inc. Ltd. nor the names of its +// Neither the name of Google, Inc., nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // @@ -32,4 +33,9 @@ // POSSIBILITY OF SUCH DAMAGE. // -#include "pch.h" +// The HLSL source is directly embedded into the glslang target when ENABLE_HLSL +// is set. +// This source now lives at: glslang/HLSL/ +// The HLSL target is now just a stub that exists for backwards compatibility +// for projects that referenced this target. As a target requires at least one +// source file to build, this file acts as that stub. diff --git a/Externals/glslang/known_good.json b/Externals/glslang/known_good.json index 60e2c2d20d77..2fcb76885a11 100644 --- a/Externals/glslang/known_good.json +++ b/Externals/glslang/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "323a81fc5e30e43a04e5e22af4cba98ca2a161e6" + "commit" : "eed5c76a57bb965f2e1b56d1dc40b50910b5ec1d" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "204cd131c42b90d129073719f2766293ce35c081" + "commit" : "4995a2f2723c401eb0ea3e10c81298906bf1422b" } ] } diff --git a/Externals/glslang/make-revision b/Externals/glslang/make-revision deleted file mode 100755 index a89ff08772c8..000000000000 --- a/Externals/glslang/make-revision +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -( -echo "// This header is generated by the make-revision script." -echo -echo \#define GLSLANG_PATCH_LEVEL `git log --oneline | wc -l` -) > glslang/Include/revision.h diff --git a/Externals/glslang/update_glslang_sources.py b/Externals/glslang/update_glslang_sources.py old mode 100755 new mode 100644 index 65be2f6a2ce5..20f303ba3b43 --- a/Externals/glslang/update_glslang_sources.py +++ b/Externals/glslang/update_glslang_sources.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright 2017 The Glslang Authors. All rights reserved. # diff --git a/Externals/imgui/CMakeLists.txt b/Externals/imgui/CMakeLists.txt index e3c3c8c99f0b..b3d48432a14c 100644 --- a/Externals/imgui/CMakeLists.txt +++ b/Externals/imgui/CMakeLists.txt @@ -1,3 +1,7 @@ +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + set(SRCS imgui.cpp imgui_draw.cpp @@ -8,3 +12,8 @@ set(SRCS add_library(imgui STATIC ${SRCS}) target_include_directories(imgui PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") +target_link_libraries(imgui +PRIVATE + common + fmt::fmt +) diff --git a/Externals/imgui/README.txt b/Externals/imgui/README.txt new file mode 100644 index 000000000000..0380b1f3b877 --- /dev/null +++ b/Externals/imgui/README.txt @@ -0,0 +1 @@ +When updating, make sure to preserve changes to imconfig.h. Dolphin modifies it to use a custom assertion handler and to tweak settings. diff --git a/Externals/imgui/imconfig.h b/Externals/imgui/imconfig.h index 7082c5507531..5cdc92ecaa23 100644 --- a/Externals/imgui/imconfig.h +++ b/Externals/imgui/imconfig.h @@ -14,10 +14,11 @@ #pragma once +#include "Common/Assert.h" + //---- Define assertion handler. Defaults to calling assert(). // If your macro uses multiple statements, make sure is enclosed in a 'do { .. } while (0)' block so it can be used as a single statement. -//#define IM_ASSERT(_EXPR) MyAssert(_EXPR) -//#define IM_ASSERT(_EXPR) ((void)(_EXPR)) // Disable asserts +#define IM_ASSERT(_EXPR) ASSERT(_EXPR) //---- Define attributes of all API symbols declarations, e.g. for DLL under Windows // Using Dear ImGui via a shared library is not recommended, because of function call overhead and because we don't guarantee backward nor forward ABI compatibility. @@ -27,7 +28,7 @@ //#define IMGUI_API __declspec( dllimport ) //---- Don't define obsolete functions/enums/behaviors. Consider enabling from time to time after updating to avoid using soon-to-be obsolete function/names. -//#define IMGUI_DISABLE_OBSOLETE_FUNCTIONS +#define IMGUI_DISABLE_OBSOLETE_FUNCTIONS //---- Disable all of Dear ImGui or don't implement standard windows. // It is very strongly recommended to NOT disable the demo windows during development. Please read comments in imgui_demo.cpp. diff --git a/Externals/imgui/imgui.vcxproj b/Externals/imgui/imgui.vcxproj index ed5e606fc5fb..8f8e6ee2339d 100644 --- a/Externals/imgui/imgui.vcxproj +++ b/Externals/imgui/imgui.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/liblzma/liblzma.vcxproj b/Externals/liblzma/liblzma.vcxproj index e3a24ce6600d..7839ceb78fbd 100644 --- a/Externals/liblzma/liblzma.vcxproj +++ b/Externals/liblzma/liblzma.vcxproj @@ -1,5 +1,5 @@ - + diff --git a/Externals/liblzma/liblzma.vcxproj.filters b/Externals/liblzma/liblzma.vcxproj.filters index 0182536637ac..b463cf7c7e32 100644 --- a/Externals/liblzma/liblzma.vcxproj.filters +++ b/Externals/liblzma/liblzma.vcxproj.filters @@ -1,5 +1,5 @@ - + api diff --git a/Externals/libpng/png/png.vcxproj b/Externals/libpng/png/png.vcxproj index 5a8b402064e0..90c3557c0eee 100644 --- a/Externals/libpng/png/png.vcxproj +++ b/Externals/libpng/png/png.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/libusb/.travis.yml b/Externals/libusb/.travis.yml deleted file mode 100644 index f5d194ac35bf..000000000000 --- a/Externals/libusb/.travis.yml +++ /dev/null @@ -1,49 +0,0 @@ -language: c - -matrix: - include: - - os: linux - dist: trusty - sudo: required - compiler: gcc - - os: linux - dist: trusty - sudo: required - compiler: clang - - os: osx - osx_image: xcode8 - compiler: gcc - - os: osx - osx_image: xcode8 - compiler: clang - - os: osx - osx_image: xcode7.1 - compiler: gcc - - os: osx - osx_image: xcode7.1 - compiler: clang - - os: osx - osx_image: beta-xcode6.2 - compiler: gcc - - os: osx - osx_image: beta-xcode6.2 - compiler: clang - -addons: - homebrew: - update: true - brewfile: true - apt: - packages: - - autoconf - - automake - - libtool - - m4 - - libudev-dev - sources: - - ubuntu-toolchain-r-test - -script: - - ./autogen.sh && make clean && make - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./travis-autogen.sh --disable-udev && make clean && make ; fi - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cd Xcode && xcodebuild -project libusb.xcodeproj ; fi diff --git a/Externals/libusb/AUTHORS b/Externals/libusb/AUTHORS deleted file mode 100644 index e90ad9bb2ab8..000000000000 --- a/Externals/libusb/AUTHORS +++ /dev/null @@ -1,119 +0,0 @@ -Copyright © 2001 Johannes Erdfelt -Copyright © 2007-2009 Daniel Drake -Copyright © 2010-2012 Peter Stuge -Copyright © 2008-2016 Nathan Hjelm -Copyright © 2009-2013 Pete Batard -Copyright © 2009-2013 Ludovic Rousseau -Copyright © 2010-2012 Michael Plante -Copyright © 2011-2013 Hans de Goede -Copyright © 2012-2013 Martin Pieuchot -Copyright © 2012-2013 Toby Gray -Copyright © 2013-2018 Chris Dickens - -Other contributors: -Adrian Bunk -Akshay Jaggi -Alan Ott -Alan Stern -Alex Vatchenko -Andrew Fernandes -Andy Chunyu -Andy McFadden -Angus Gratton -Anil Nair -Anthony Clay -Antonio Ospite -Artem Egorkine -Aurelien Jarno -Bastien Nocera -Bei Zhang -Benjamin Dobell -Brent Rector -Carl Karsten -Christophe Zeitouny -Colin Walters -Dave Camarillo -David Engraf -David Moore -Davidlohr Bueso -Dmitry Fleytman -Doug Johnston -Evan Hunter -Federico Manzan -Felipe Balbi -Florian Albrechtskirchinger -Francesco Montorsi -Francisco Facioni -Gaurav Gupta -Graeme Gill -Gustavo Zacarias -Hans Ulrich Niedermann -Hector Martin -Hoi-Ho Chan -Ilya Konstantinov -Jakub Klama -James Hanko -Jeffrey Nichols -Johann Richard -John Sheu -Jonathon Jongsma -Joost Muller -Josh Gao -Joshua Blake -Justin Bischoff -KIMURA Masaru -Karsten Koenig -Konrad Rzepecki -Kuangye Guo -Lars Kanis -Lars Wirzenius -Lei Chen -Luca Longinotti -Marcus Meissner -Markus Heidelberg -Martin Ettl -Martin Koegler -Matthew Stapleton -Matthias Bolte -Michel Zou -Mike Frysinger -Mikhail Gusarov -Morgan Leborgne -Moritz Fischer -Ларионов Даниил -Nicholas Corgan -Omri Iluz -Orin Eman -Paul Fertser -Pekka Nikander -Rob Walker -Romain Vimont -Roman Kalashnikov -Sameeh Jubran -Sean McBride -Sebastian Pipping -Sergey Serb -Simon Haggett -Simon Newton -Stefan Agner -Stefan Tauner -Steinar H. Gunderson -Thomas Röfer -Tim Hutt -Tim Roberts -Tobias Klauser -Toby Peterson -Tormod Volden -Trygve Laugstøl -Uri Lublin -Vasily Khoruzhick -Vegard Storheil Eriksen -Venkatesh Shukla -Vianney le Clément de Saint-Marcq -Victor Toso -Vitali Lovich -William Skellenger -Xiaofan Chen -Zoltán Kovács -Роман Донченко -parafin diff --git a/Externals/libusb/Brewfile b/Externals/libusb/Brewfile deleted file mode 100644 index c028148f3cbf..000000000000 --- a/Externals/libusb/Brewfile +++ /dev/null @@ -1,4 +0,0 @@ -brew 'automake' -brew 'libtool' -brew 'autoconf' -brew 'm4' diff --git a/Externals/libusb/CMakeLists.txt b/Externals/libusb/CMakeLists.txt index c20036d80da5..a3c5e73e4f42 100644 --- a/Externals/libusb/CMakeLists.txt +++ b/Externals/libusb/CMakeLists.txt @@ -1,79 +1,74 @@ add_library(usb STATIC EXCLUDE_FROM_ALL - libusb/core.c - libusb/core.c - libusb/descriptor.c - libusb/hotplug.c - libusb/io.c - libusb/strerror.c - libusb/sync.c + libusb/libusb/core.c + libusb/libusb/descriptor.c + libusb/libusb/hotplug.c + libusb/libusb/io.c + libusb/libusb/strerror.c + libusb/libusb/sync.c ) -set_target_properties(usb PROPERTIES VERSION 1.0.19) +set_target_properties(usb PROPERTIES VERSION 1.0.26) if(WIN32) - target_include_directories(usb BEFORE PUBLIC libusb PRIVATE msvc) + target_include_directories(usb BEFORE PUBLIC libusb/libusb PRIVATE libusb/msvc) else() target_include_directories(usb # turns out other projects also have "config.h", so make sure the # LibUSB one comes first BEFORE - PUBLIC libusb + PUBLIC libusb/libusb PRIVATE "${CMAKE_CURRENT_BINARY_DIR}" ) endif() if(WIN32 OR CYGWIN) target_sources(usb PRIVATE - libusb/os/threads_windows.c - libusb/os/windows_winusb.c - libusb/os/windows_usbdk.c - libusb/os/windows_nt_common.c + libusb/libusb/os/threads_windows.c + libusb/libusb/os/windows_common.c + libusb/libusb/os/windows_usbdk.c + libusb/libusb/os/windows_winusb.c ) - set(OS_WINDOWS TRUE) + set(PLATFORM_WINDOWS TRUE) elseif(APPLE) - target_sources(usb PRIVATE libusb/os/darwin_usb.c) + target_sources(usb PRIVATE libusb/libusb/os/darwin_usb.c) find_library(COREFOUNDATION_LIBRARY CoreFoundation) find_library(IOKIT_LIBRARY IOKit) find_library(OBJC_LIBRARY objc) + find_library(SECURITY_LIBRARY Security) target_link_libraries(usb PRIVATE ${COREFOUNDATION_LIBRARY} ${IOKIT_LIBRARY} ${OBJC_LIBRARY} + ${SECURITY_LIBRARY} ) - set(OS_DARWIN TRUE) # # Dolphin on Android doesn't use libusb. #elseif(ANDROID) # target_sources(usb PRIVATE -# libusb/os/linux_usbfs.c -# libusb/os/linux_netlink.c +# libusb/libusb/os/linux_usbfs.c +# libusb/libusb/os/linux_netlink.c # ) # find_library(LOG_LIBRARY log) # target_link_libraries(usb PRIVATE ${LOG_LIBRARY}) -# set(OS_LINUX TRUE) elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") - target_sources(usb PRIVATE libusb/os/linux_usbfs.c) - find_package(Libudev) + target_sources(usb PRIVATE libusb/libusb/os/linux_usbfs.c) + find_package(LIBUDEV) if(LIBUDEV_FOUND) - target_sources(usb PRIVATE libusb/os/linux_udev.c) + target_sources(usb PRIVATE libusb/libusb/os/linux_udev.c) target_link_libraries(usb PRIVATE "${LIBUDEV_LIBRARIES}") target_include_directories(usb PRIVATE "${LIBUDEV_INCLUDE_DIR}") set(HAVE_LIBUDEV TRUE) - set(USE_UDEV TRUE) else() - target_sources(usb PRIVATE libusb/os/linux_netlink.c) + target_sources(usb PRIVATE libusb/libusb/os/linux_netlink.c) endif() - set(OS_LINUX TRUE) elseif(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") - target_sources(usb PRIVATE libusb/os/netbsd_usb.c) - set(OS_NETBSD TRUE) + target_sources(usb PRIVATE libusb/libusb/os/netbsd_usb.c) elseif(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") - target_sources(usb PRIVATE libusb/os/openbsd_usb.c) - set(OS_OPENBSD TRUE) + target_sources(usb PRIVATE libusb/libusb/os/openbsd_usb.c) endif() if(UNIX) target_sources(usb PRIVATE - libusb/os/poll_posix.c - libusb/os/threads_posix.c + libusb/libusb/os/events_posix.c + libusb/libusb/os/threads_posix.c ) find_package(Threads REQUIRED) if(THREADS_HAVE_PTHREAD_ARG) @@ -82,41 +77,48 @@ if(UNIX) if(CMAKE_THREAD_LIBS_INIT) target_link_libraries(usb PRIVATE "${CMAKE_THREAD_LIBS_INIT}") endif() - set(THREADS_POSIX TRUE) -elseif(WIN32) - target_sources(usb PRIVATE - libusb/os/poll_windows.c - libusb/os/threads_windows.c - ) + set(PLATFORM_POSIX TRUE) endif() +# Create config.h + include(CheckFunctionExists) include(CheckIncludeFiles) +#include(CheckLibraryExists) include(CheckTypeSize) +include(CheckSymbolExists) + check_include_files(asm/types.h HAVE_ASM_TYPES_H) -check_function_exists(gettimeofday HAVE_GETTIMEOFDAY) -check_include_files(linux/filter.h HAVE_LINUX_FILTER_H) -check_include_files(linux/netlink.h HAVE_LINUX_NETLINK_H) -check_include_files(poll.h HAVE_POLL_H) -check_include_files(signal.h HAVE_SIGNAL_H) -check_include_files(strings.h HAVE_STRINGS_H) -check_type_size("struct timespec" STRUCT_TIMESPEC) -check_function_exists(syslog HAVE_SYSLOG_FUNC) -check_include_files(syslog.h HAVE_SYSLOG_H) -check_include_files(sys/socket.h HAVE_SYS_SOCKET_H) -check_include_files(sys/time.h HAVE_SYS_TIME_H) -check_include_files(sys/types.h HAVE_SYS_TYPES_H) +check_function_exists(clock_gettime HAVE_CLOCK_GETTIME) +check_symbol_exists(EFD_CLOEXEC "sys/eventfd.h" HAVE_DECL_EFD_CLOEXEC) +check_symbol_exists(EFD_NONBLOCK "sys/eventfd.h" HAVE_DECL_EFD_NONBLOCK) +check_symbol_exists(TFD_CLOEXEC "sys/timerfd.h" HAVE_DECL_TFD_CLOEXEC) +check_symbol_exists(TFD_NONBLOCK "sys/timerfd.h" HAVE_DECL_TFD_NONBLOCK) +check_include_files(dlfcn.h HAVE_DLFCN_H) +check_include_files(sys/eventfd.h HAVE_EVENTFD) +check_include_files(inttypes.h HAVE_INTTYPES_H) +check_include_files(IOKit/usb/IOUSBHostFamilyDefinitions.h HAVE_IOKIT_USB_IOUSBHOSTFAMILYDEFINITIONS_H) +#check_library_exists(udev HAVE_LIBUDEV) +check_include_files(memory.h HAVE_MEMORY_H) set(CMAKE_EXTRA_INCLUDE_FILES poll.h) -check_type_size("nfds_t" nfds_t) +check_type_size("nfds_t" NFDS_T) unset(CMAKE_EXTRA_INCLUDE_FILES) -if(HAVE_NFDS_T) - set(POLL_NFDS_TYPE "nfds_t") -else() - set(POLL_NFDS_TYPE "unsigned int") -endif() - -check_include_files(sys/timerfd.h USBI_TIMERFD_AVAILABLE) +check_function_exists(pipe2 HAVE_PIPE2) +check_function_exists(pthread_condattr_setclock HAVE_PTHREAD_CONDATTR_SETCLOCK) +check_function_exists(pthread_setname_np HAVE_PTHREAD_SETNAME_NP) +check_function_exists(pthread_threadid_np HAVE_PTHREAD_THREADID_NP) +check_include_files(stdint.h HAVE_STDINT_H) +check_include_files(stdlib.h HAVE_STDLIB_H) +check_include_files(strings.h HAVE_STRINGS_H) +check_include_files(string.h HAVE_STRING_H) +check_type_size("struct timespec" STRUCT_TIMESPEC) +check_function_exists(syslog HAVE_SYSLOG) +check_include_files(sys/stat.h HAVE_SYS_STAT_H) +check_include_files(sys/time.h HAVE_SYS_TIME_H) +check_include_files(sys/types.h HAVE_SYS_TYPES_H) +check_include_files(sys/timerfd.h HAVE_TIMERFD) +check_include_files(unistd.h HAVE_UNISTD_H) configure_file(config.h.in config.h) diff --git a/Externals/libusb/COPYING b/Externals/libusb/COPYING deleted file mode 100644 index 5ab7695ab8ca..000000000000 --- a/Externals/libusb/COPYING +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/Externals/libusb/ChangeLog b/Externals/libusb/ChangeLog deleted file mode 100644 index df7b9a67c743..000000000000 --- a/Externals/libusb/ChangeLog +++ /dev/null @@ -1,279 +0,0 @@ -For detailed information about the changes below, please see the git log or -visit: http://log.libusb.info - -2019-04-05: v1.0.23 (in progress) -* Add German translation (#446) -* Add Hungarian translation (#493) -* Android: Improved support for Android -* configure.ac: Fix detection of clock_gettime library (#439) -* Darwin(macOS): Switch from using ResetDevice to USBDeviceReEnumerate (#455) -* Darwin(macOS): Remove code that changed the device class used (#428) -* Darwin(macOS): Reduce hotplug timeout to 1ms (from 5s) -* New API libusb_set_log_cb() to redirect global and per context log - messages to the provided log handling function -* New API libusb_wrap_sys_device to allow the user to specify the - usb device to use. -* Solaris: Break infinite recursion in backend clock_gettime -* Solaris: Enable timerfd on sunos when available -* Windows: Add support for isochronous transfers with WinUSB -* Various other bug fixes and improvements - -2018-03-24: v1.0.22: -* New libusb_set_option() API -* Fix transfer timeout not being cleared upon resubmission -* Report super speed plus devices on modern Linux and macOS -* Darwin: Improve support for macOS Sierra and High Sierra -* Darwin: SDK fixes and improvements -* Linux: Let initialization succeed when no devices are present -* Linux: Mark internal file descriptors with CLOEXEC flag -* Solaris: Add support for attach/detach kernel driver -* Windows: Add dynamic UsbDk backend selection -* Windows: Add isochronous transfer support via libusbK -* Windows: Add Visual Studio 2017 support -* Windows: Fix enumeration problems on Windows 8 and later -* Windows: Major rework of poll() emulation -* Windows: Numerous HID API fixes -* Windows: Support cancelation of individual transfers (Vista and later) -* Various other bug fixes and improvements - -2016-10-01: v1.0.21: -* Core: Refactor code related to transfer flags and timeout handling -* Darwin: Ignore root hub simulation devices -* Darwin: Improved support for OS X El Capitan -* Darwin: Work around devices with buggy endpoint descriptors -* Darwin: Do not use objc_registerThreadWithCollector after its deprecation -* Darwin: Use C11 atomics on 10.12+ as the OS atomics are now deprecated -* Linux: Support preallocating kernel memory for zerocopy USB -* Linux: Deal with receiving POLLERR before all transfers have completed -* Solaris: Add solaris backend -* Windows: Add Visual Studio 2015 support -* Windows: Add usbdk backend -* Prevent attempts to recursively handle events -* Fix race condition in handle_timeout() -* Allow transferred argument to be optional in bulk APIs -* Various other bug fixes and improvements - -2015-09-13: v1.0.20 -* Add Haiku support -* Fix multiple memory and resource leaks (#16, #52, #76, #81) -* Fix possible deadlock when executing transfer callback -* New libusb_free_pollfds() API -* Darwin: Fix devices not being detected on OS X 10.8 (#48) -* Linux: Allow larger isochronous transfer submission (#23) -* Windows: Fix broken builds Cygwin/MinGW builds and compiler warnings -* Windows: Fix broken bus number lookup -* Windows: Improve submission of control requests for composite devices -* Examples: Add two-stage load support to fxload (#12) -* Correctly report cancellations due to timeouts -* Improve efficiency of event handling -* Improve speed of transfer submission in multi-threaded environments -* Various other bug fixes and improvements -The (#xx) numbers are libusb issue numbers, see ie: -https://github.com/libusb/libusb/issues/16 - -2014-05-30: v1.0.19 -* Add support for USB bulk streams on Linux and Mac OS X (#11) -* Windows: Add AMD and Intel USB-3.0 root hub support -* Windows: Fix USB 3.0 speed detection on Windows 8 or later (#10) -* Added Russian translation for libusb_strerror strings -* All: Various small fixes and cleanups - -2014-01-25: v1.0.18 -* Fix multiple memory leaks -* Fix a crash when HID transfers return no data on Windows -* Ensure all pending events are consumed -* Improve Android and ucLinux support -* Multiple Windows improvements (error logging, VS2013, VIA xHCI support) -* Multiple OS X improvements (broken compilation, SIGFPE, 64bit support) - -2013-09-06: v1.0.17 -* Hotplug callbacks now always get passed a libusb_context, even if it is - the default context. Previously NULL would be passed for the default context, - but since the first context created is the default context, and most apps - use only 1 context, this meant that apps explicitly creating a context would - still get passed NULL -* Android: Add .mk files to build with the Android NDK -* Darwin: Add Xcode project -* Darwin: Fix crash on unplug (#121) -* Linux: Fix hang (deadlock) on libusb_exit -* Linux: Fix libusb build failure with --disable-udev (#124) -* Linux: Fix libusb_get_device_list() hang with --disable-udev (#130) -* OpenBSD: Update OpenBSD backend with support for control transfers to - non-ugen(4) devices and make get_configuration() no longer generate I/O. - Note that using this libusb version on OpenBSD requires using - OpenBSD 5.3-current or later. Users of older OpenBSD versions are advised - to stay with the libusb shipped with OpenBSD (mpi) -* Windows: fix libusb_dll_2010.vcxproj link errors (#129) -* Various other bug fixes and improvements - -2013-07-11: v1.0.16 -* Add hotplug support for Darwin and Linux (#9) -* Add superspeed endpoint companion descriptor support (#15) -* Add BOS descriptor support (#15) -* Make descriptor parsing code more robust -* New libusb_get_port_numbers API, this is libusb_get_port_path without - the unnecessary context parameter, libusb_get_port_path is now deprecated -* New libusb_strerror API (#14) -* New libusb_set_auto_detach_kernel_driver API (#17) -* Improve topology API docs (#95) -* Logging now use a single write call per log-message, avoiding log-message - "interlacing" when using multiple threads. -* Android: use Android logging when building on Android (#101) -* Darwin: make libusb_reset reenumerate device on descriptors change (#89) -* Darwin: add support for the LIBUSB_TRANSFER_ADD_ZERO_PACKET flag (#91) -* Darwin: add a device cache (#112, #114) -* Examples: Add sam3u_benchmark isochronous example by Harald Welte (#109) -* Many other bug fixes and improvements -The (#xx) numbers are libusbx issue numbers, see ie: -https://github.com/libusbx/libusbx/issues/9 - -2013-04-15: v1.0.15 -* Improve transfer cancellation and avoid short read failures on broken descriptors -* Filter out 8-bit characters in libusb_get_string_descriptor_ascii() -* Add WinCE support -* Add library stress tests -* Add Cypress FX3 firmware upload support for fxload sample -* Add HID and kernel driver detach support capabilities detection -* Add SuperSpeed detection on OS X -* Fix bInterval value interpretation on OS X -* Fix issues with autoclaim, composite HID devices, interface autoclaim and - early abort in libusb_close() on Windows. Also add VS2012 solution files. -* Improve fd event handling on Linux -* Other bug fixes and improvements - -2012-09-26: v1.0.14 -* Reverts the previous API change with regards to bMaxPower. - If this doesn't matter to you, you are encouraged to keep using v1.0.13, - as it will use the same attribute as v2.0, to be released soon. -* Note that LIBUSB_API_VERSION is *decreased* to 0x010000FF and the previous - guidelines with regards to concurrent use of MaxPower/bMaxPower still apply. - -2012-09-20: v1.0.13 -* [MAJOR] Fix a typo in the API with struct libusb_config_descriptor where - MaxPower was used instead of bMaxPower, as defined in the specs. If your - application was accessing the MaxPower attribute, and you need to maintain - compatibility with libusb or older versions, see APPENDIX A below. -* Fix broken support for the 0.1 -> 1.0 libusb-compat layer -* Fix unwanted cancellation of pending timeouts as well as major timeout related bugs -* Fix handling of HID and composite devices on Windows -* Introduce LIBUSB_API_VERSION macro -* Add Cypress FX/FX2 firmware upload sample, based on fxload from - http://linux-hotplug.sourceforge.net -* Add libusb0 (libusb-win32) and libusbK driver support on Windows. Note that while - the drivers allow it, isochronous transfers are not supported yet in libusb. Also - not supported yet is the use of libusb-win32 filter drivers on composite interfaces -* Add support for the new get_capabilities ioctl on Linux and avoid unnecessary - splitting of bulk transfers -* Improve support for newer Intel and Renesas USB 3.0 controllers on Windows -* Harmonize the device number for root hubs across platforms -* Other bug fixes and improvements - -2012-06-15: v1.0.12 -* Fix a potential major regression with pthread on Linux -* Fix missing thread ID from debug log output on cygwin -* Fix possible crash when using longjmp and MinGW's gcc 4.6 -* Add topology calls: libusb_get_port_number(), libusb_get_parent() & libusb_get_port_path() -* Add toggleable debug, using libusb_set_debug() or the LIBUSB_DEBUG environment variable -* Define log levels in libusb.h and set timestamp origin to first libusb_init() call -* All logging is now sent to to stderr (info was sent to stdout previously) -* Update log messages severity and avoid polluting log output on OS-X -* Add HID driver support on Windows -* Enable interchangeability of MSVC and MinGW DLLs -* Additional bug fixes and improvements - -2012-05-08: v1.0.11 -* Revert removal of critical Windows event handling that was introduced in 1.0.10 -* Fix a possible deadlock in Windows when submitting transfers -* Add timestamped logging -* Add NetBSD support (experimental) and BSD libusb_get_device_speed() data -* Add bootstrap.sh alongside autogen.sh (bootstrap.sh doesn't invoke configure) -* Search for device nodes in /dev for Android support -* Other bug fixes - -2012-04-17: v1.0.10 -* Public release -* Add libusb_get_version -* Add Visual Studio 2010 project files -* Some Windows code cleanup -* Fix xusb sample warnings - -2012-04-02: v1.0.9 -* First libusbx release -* Add libusb_get_device_speed (all, except BSD) and libusb_error_name -* Add Windows support (WinUSB driver only) -* Add OpenBSD support -* Add xusb sample -* Tons of bug fixes - -2010-05-07: v1.0.8 -* Bug fixes - -2010-04-19: v1.0.7 -* Bug fixes and documentation tweaks -* Add more interface class definitions - -2009-11-22: v1.0.6 -* Bug fixes -* Increase libusb_handle_events() timeout to 60s for powersaving - -2009-11-15: v1.0.5 - * Use timerfd when available for timer management - * Small fixes/updates - -2009-11-06: v1.0.4 release - * Bug fixes including transfer locking to fix some potential threading races - * More flexibility with clock types on Linux - * Use new bulk continuation tracking in Linux 2.6.32 for improved handling - of short/failed transfers - -2009-08-27: v1.0.3 release - * Bug fixes - * Add libusb_get_max_iso_packet_size() - -2009-06-13: v1.0.2 release - * Bug fixes - -2009-05-12: v1.0.1 release - * Bug fixes - * Darwin backend - -2008-12-13: v1.0.0 release - * Bug fixes - -2008-11-21: v0.9.4 release - * Bug fixes - * Add libusb_attach_kernel_driver() - -2008-08-23: v0.9.3 release - * Bug fixes - -2008-07-19: v0.9.2 release - * Bug fixes - -2008-06-28: v0.9.1 release - * Bug fixes - * Introduce contexts to the API - * Compatibility with new Linux kernel features - -2008-05-25: v0.9.0 release - * First libusb-1.0 beta release - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -APPENDIX A - How to maintain code compatibility with versions of libusb and -libusb that use MaxPower: - -If you must to maintain compatibility with versions of the library that aren't -using the bMaxPower attribute in struct libusb_config_descriptor, the -recommended way is to use the new LIBUSB_API_VERSION macro with an #ifdef. -For instance, if your code was written as follows: - - if (dev->config[0].MaxPower < 250) - -Then you should modify it to have: - -#if defined(LIBUSB_API_VERSION) && (LIBUSB_API_VERSION >= 0x01000100) - if (dev->config[0].bMaxPower < 250) -#else - if (dev->config[0].MaxPower < 250) -#endif diff --git a/Externals/libusb/INSTALL b/Externals/libusb/INSTALL deleted file mode 100644 index 2099840756e6..000000000000 --- a/Externals/libusb/INSTALL +++ /dev/null @@ -1,370 +0,0 @@ -Installation Instructions -************************* - -Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, -Inc. - - Copying and distribution of this file, with or without modification, -are permitted in any medium without royalty provided the copyright -notice and this notice are preserved. This file is offered as-is, -without warranty of any kind. - -Basic Installation -================== - - Briefly, the shell command `./configure && make && make install' -should configure, build, and install this package. The following -more-detailed instructions are generic; see the `README' file for -instructions specific to this package. Some packages provide this -`INSTALL' file but do not implement all of the features documented -below. The lack of an optional feature in a given package is not -necessarily a bug. More recommendations for GNU packages can be found -in *note Makefile Conventions: (standards)Makefile Conventions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. Caching is -disabled by default to prevent problems with accidental use of stale -cache files. - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You need `configure.ac' if -you want to change it or regenerate `configure' using a newer version -of `autoconf'. - - The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. - - Running `configure' might take a while. While running, it prints - some messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package, generally using the just-built uninstalled binaries. - - 4. Type `make install' to install the programs and any data files and - documentation. When installing into a prefix owned by root, it is - recommended that the package be configured and built as a regular - user, and only the `make install' phase executed with root - privileges. - - 5. Optionally, type `make installcheck' to repeat any self-tests, but - this time using the binaries in their final installed location. - This target does not install anything. Running this target as a - regular user, particularly if the prior `make install' required - root privileges, verifies that the installation completed - correctly. - - 6. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - - 7. Often, you can also type `make uninstall' to remove the installed - files again. In practice, not all packages have tested that - uninstallation works correctly, even though it is required by the - GNU Coding Standards. - - 8. Some packages, particularly those that use Automake, provide `make - distcheck', which can by used by developers to test that all other - targets like `make install' and `make uninstall' work correctly. - This target is generally not run by end users. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' -for details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c99 CFLAGS=-g LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you can use GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. This -is known as a "VPATH" build. - - With a non-GNU `make', it is safer to compile the package for one -architecture at a time in the source code directory. After you have -installed the package for one architecture, use `make distclean' before -reconfiguring for another architecture. - - On MacOS X 10.5 and later systems, you can create libraries and -executables that work on multiple system types--known as "fat" or -"universal" binaries--by specifying multiple `-arch' options to the -compiler but only a single `-arch' option to the preprocessor. Like -this: - - ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ - CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ - CPP="gcc -E" CXXCPP="g++ -E" - - This is not guaranteed to produce working output in all cases, you -may have to build one architecture at a time and combine the results -using the `lipo' tool if you have problems. - -Installation Names -================== - - By default, `make install' installs the package's commands under -`/usr/local/bin', include files under `/usr/local/include', etc. You -can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX', where PREFIX must be an -absolute file name. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses -PREFIX as the prefix for installing programs and libraries. -Documentation and other data files still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. In general, the -default for these options is expressed in terms of `${prefix}', so that -specifying just `--prefix' will affect all of the other directory -specifications that were not explicitly provided. - - The most portable way to affect installation locations is to pass the -correct locations to `configure'; however, many packages provide one or -both of the following shortcuts of passing variable assignments to the -`make install' command line to change installation locations without -having to reconfigure or recompile. - - The first method involves providing an override variable for each -affected directory. For example, `make install -prefix=/alternate/directory' will choose an alternate location for all -directory configuration variables that were expressed in terms of -`${prefix}'. Any directories that were specified during `configure', -but not in terms of `${prefix}', must each be overridden at install -time for the entire installation to be relocated. The approach of -makefile variable overrides for each directory variable is required by -the GNU Coding Standards, and ideally causes no recompilation. -However, some platforms have known limitations with the semantics of -shared libraries that end up requiring recompilation when using this -method, particularly noticeable in packages that use GNU Libtool. - - The second method involves providing the `DESTDIR' variable. For -example, `make install DESTDIR=/alternate/directory' will prepend -`/alternate/directory' before all installation names. The approach of -`DESTDIR' overrides is not required by the GNU Coding Standards, and -does not work on platforms that have drive letters. On the other hand, -it does better at avoiding recompilation issues, and works well even -when some directory options were not specified in terms of `${prefix}' -at `configure' time. - -Optional Features -================= - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - - Some packages offer the ability to configure how verbose the -execution of `make' will be. For these packages, running `./configure ---enable-silent-rules' sets the default to minimal output, which can be -overridden with `make V=1'; while running `./configure ---disable-silent-rules' sets the default to verbose, which can be -overridden with `make V=0'. - -Particular systems -================== - - On HP-UX, the default C compiler is not ANSI C compatible. If GNU -CC is not installed, it is recommended to use the following options in -order to use an ANSI C compiler: - - ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" - -and if that doesn't work, install pre-built binaries of GCC for HP-UX. - - HP-UX `make' updates targets which have the same time stamps as -their prerequisites, which makes it generally unusable when shipped -generated files such as `configure' are involved. Use GNU `make' -instead. - - On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot -parse its `' header file. The option `-nodtk' can be used as -a workaround. If GNU CC is not installed, it is therefore recommended -to try - - ./configure CC="cc" - -and if that doesn't work, try - - ./configure CC="cc -nodtk" - - On Solaris, don't put `/usr/ucb' early in your `PATH'. This -directory contains several dysfunctional programs; working variants of -these programs are available in `/usr/bin'. So, if you need `/usr/ucb' -in your `PATH', put it _after_ `/usr/bin'. - - On Haiku, software installed for all users goes in `/boot/common', -not `/usr/local'. It is recommended to use the following options: - - ./configure --prefix=/boot/common - -Specifying the System Type -========================== - - There may be some features `configure' cannot figure out -automatically, but needs to determine by the type of machine the package -will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints -a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS - KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - - Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -causes the specified `gcc' to be used as the C compiler (unless it is -overridden in the site shell script). - -Unfortunately, this technique does not work for `CONFIG_SHELL' due to -an Autoconf limitation. Until the limitation is lifted, you can use -this workaround: - - CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash - -`configure' Invocation -====================== - - `configure' recognizes the following options to control how it -operates. - -`--help' -`-h' - Print a summary of all of the options to `configure', and exit. - -`--help=short' -`--help=recursive' - Print a summary of the options unique to this package's - `configure', and exit. The `short' variant lists options used - only in the top level, while the `recursive' variant lists options - also present in any nested packages. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--prefix=DIR' - Use DIR as the installation prefix. *note Installation Names:: - for more details, including other options available for fine-tuning - the installation locations. - -`--no-create' -`-n' - Run the configure checks, but stop before creating any output - files. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. diff --git a/Externals/libusb/INSTALL_WIN.txt b/Externals/libusb/INSTALL_WIN.txt deleted file mode 100644 index a37d643a9b2e..000000000000 --- a/Externals/libusb/INSTALL_WIN.txt +++ /dev/null @@ -1,73 +0,0 @@ -Installation Instructions for Windows -************************************* - -If you are compiling for MinGW or cygwin, please refer to the INSTALL file. - -If you are using Microsoft Visual Studio: -- Open the relevant solution file in /msvc: - libusb.dsw for MSVC6, libusb_2005.sln for Visual Studio 2005 or 2008, - libusb_2010.sln for Visual Studio 2010, - libusb_2012.sln for Visual Studio 2012 or later, - libusb_wince.sln for Windows CE support in Visual Studio 2005. -- If you want to debug the library, uncomment the ENABLE_DEBUG_LOGGING define - in msvc\config.h -- Select your configuration and compile the project - -Note that if you are using Visual Studio Express, you may have to install the -Windows SDK to be able to compile the 64 bit version of the library. - -If you are using the freely available Windows DDK/WDK (Driver Development Kit) -- If you want to debug the library, uncomment the ENABLE_DEBUG_LOGGING define - in msvc\config.h -- Open one of the relevant Free Build or Checked Build prompt for your target - platform -- Navigate to the msvc\ directory where the ddk_build.cmd file is located, and - run 'ddk_build' -- To produce a DLL rather than a static library, use: 'ddk_build DLL' -- To produce a static library that uses LIBCMT[d] instead of MSVCRT[d] (/MT[d] - vs /MD[d] in Visual Studio) use: 'ddk_build /MT' - -Note that using the Windows DDK, it is possible to compile both the 32 and 64 -bit versions of the library. - -If you are building for Windows CE then you will need the Windows CE Standard 5.00 SDK. - -Destination directories -*********************** - -The 32 bit binaries compiled either from Visual Studio or the DDK are placed in -a Win32\ directory at the root of the library -The 64 bit binaries are placed in an x64\ directory -Windows CE binaries are placed in one of the following directories, depending -on the target processor: ARMV4I, MIPSII, MIPSII_FP, MIPSIV, MIPSIV_FP, SH4 or x86. - - -Troubleshooting -*************** - -If the compilation process complains about missing libraries, ensure that the -default library paths for your project points to the relevant directories. -If needed, these libraries can be obtained by installing either the latest -Windows SDK or the DDK (Links provided at the end of this file). - -For Windows CE it is necessary to install the CE USB Kernel Wrapper driver for -libusb to function on a device. - -Links -***** - -Additional information related to the Windows backend: - http://windows.libusb.info - -Latest Windows Driver (Development) Kit (WDK): - http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=36a2630f-5d56-43b5-b996-7633f2ec14ff - -Latest Microsoft Windows SDK: - http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505 - -Windows CE Standard 5.00 SDK: - http://www.microsoft.com/en-gb/download/details.aspx?id=17310 - -Windows CE USB Kernel Wrapper Driver: - https://github.com/RealVNC/CEUSBKWrapper - diff --git a/Externals/libusb/Makefile.am b/Externals/libusb/Makefile.am deleted file mode 100644 index 0155625ac1e1..000000000000 --- a/Externals/libusb/Makefile.am +++ /dev/null @@ -1,28 +0,0 @@ -AUTOMAKE_OPTIONS = dist-bzip2 no-dist-gzip -ACLOCAL_AMFLAGS = -I m4 -DISTCLEANFILES = libusb-1.0.pc -EXTRA_DIST = TODO PORTING msvc libusb/libusb-1.0.def libusb/version_nano.h \ - examples/getopt/getopt.c examples/getopt/getopt1.c examples/getopt/getopt.h \ - android Xcode -SUBDIRS = libusb doc - -if BUILD_EXAMPLES -SUBDIRS += examples -endif - -if BUILD_TESTS -SUBDIRS += tests -endif - -pkgconfigdir=$(libdir)/pkgconfig -pkgconfig_DATA=libusb-1.0.pc - -.PHONY: dist-up - -reldir = .release/$(distdir) -dist-up: dist - rm -rf $(reldir) - mkdir -p $(reldir) - cp $(distdir).tar.bz2 $(reldir) - rsync -rv $(reldir) frs.sourceforge.net:/home/frs/project/l/li/libusb/libusb-1.0/ - rm -rf $(reldir) diff --git a/Externals/libusb/NEWS b/Externals/libusb/NEWS deleted file mode 100644 index 07695abc1e7c..000000000000 --- a/Externals/libusb/NEWS +++ /dev/null @@ -1,2 +0,0 @@ -For the latest libusb news, please refer to the ChangeLog file, or visit: -http://libusb.info diff --git a/Externals/libusb/PORTING b/Externals/libusb/PORTING deleted file mode 100644 index fa9ec1e58dc2..000000000000 --- a/Externals/libusb/PORTING +++ /dev/null @@ -1,94 +0,0 @@ -PORTING LIBUSB TO OTHER PLATFORMS - -Introduction -============ - -This document is aimed at developers wishing to port libusb to unsupported -platforms. I believe the libusb API is OS-independent, so by supporting -multiple operating systems we pave the way for cross-platform USB device -drivers. - -Implementation-wise, the basic idea is that you provide an interface to -libusb's internal "backend" API, which performs the appropriate operations on -your target platform. - -In terms of USB I/O, your backend provides functionality to submit -asynchronous transfers (synchronous transfers are implemented in the higher -layers, based on the async interface). Your backend must also provide -functionality to cancel those transfers. - -Your backend must also provide an event handling function to "reap" ongoing -transfers and process their results. - -The backend must also provide standard functions for other USB operations, -e.g. setting configuration, obtaining descriptors, etc. - - -File descriptors for I/O polling -================================ - -For libusb to work, your event handling function obviously needs to be called -at various points in time. Your backend must provide a set of file descriptors -which libusb and its users can pass to poll() or select() to determine when -it is time to call the event handling function. - -On Linux, this is easy: the usbfs kernel interface exposes a file descriptor -which can be passed to poll(). If something similar is not true for your -platform, you can emulate this using an internal library thread to reap I/O as -necessary, and a pipe() with the main library to raise events. The file -descriptor of the pipe can then be provided to libusb as an event source. - - -Interface semantics and documentation -===================================== - -Documentation of the backend interface can be found in libusbi.h inside the -usbi_os_backend structure definition. - -Your implementations of these functions will need to call various internal -libusb functions, prefixed with "usbi_". Documentation for these functions -can be found in the .c files where they are implemented. - -You probably want to skim over *all* the documentation before starting your -implementation. For example, you probably need to allocate and store private -OS-specific data for device handles, but the documentation for the mechanism -for doing so is probably not the first thing you will see. - -The Linux backend acts as a good example - view it as a reference -implementation which you should try to match the behaviour of. - - -Getting started -=============== - -1. Modify configure.ac to detect your platform appropriately (see the OS_LINUX -stuff for an example). - -2. Implement your backend in the libusb/os/ directory, modifying -libusb/os/Makefile.am appropriately. - -3. Add preprocessor logic to the top of libusb/core.c to statically assign the -right usbi_backend for your platform. - -4. Produce and test your implementation. - -5. Send your implementation to libusb-devel mailing list. - - -Implementation difficulties? Questions? -======================================= - -If you encounter difficulties porting libusb to your platform, please raise -these issues on the libusb-devel mailing list. Where possible and sensible, I -am interested in solving problems preventing libusb from operating on other -platforms. - -The libusb-devel mailing list is also a good place to ask questions and -make suggestions about the internal API. Hopefully we can produce some -better documentation based on your questions and other input. - -You are encouraged to get involved in the process; if the library needs -some infrastructure additions/modifications to better support your platform, -you are encouraged to make such changes (in cleanly distinct patch -submissions). Even if you do not make such changes yourself, please do raise -the issues on the mailing list at the very minimum. diff --git a/Externals/libusb/README b/Externals/libusb/README deleted file mode 120000 index 42061c01a1c7..000000000000 --- a/Externals/libusb/README +++ /dev/null @@ -1 +0,0 @@ -README.md \ No newline at end of file diff --git a/Externals/libusb/README.git b/Externals/libusb/README.git deleted file mode 100644 index eab938cb2d92..000000000000 --- a/Externals/libusb/README.git +++ /dev/null @@ -1,41 +0,0 @@ -Notes related to git compilation: --------------------------------- - -If you retrieved the libusb repository from git and are using a gcc based -toolchain, be mindful that you should have the autotools installed (autoconf, -automake) and will need to run either ./autogen.sh or ./bootstrap.sh to produce -the configure file. - -The difference between autogen.sh and bootstrap.sh is that the former invokes -configure with a default set of options, and will therefore generate a Makefile, -whereas the latter does not invoke configure at all. If using autogen.sh, note -that you can also append options, that will be passed as is to configure. - -OS X-specific notes: -------------------- - -Starting with Xcode 4.3, neither Xcode.app nor the Xcode 'command line tools' -includes autotools and so running either autogen.sh or bootstrap.sh will result -in the message: - -libtoolize or glibtoolize was not found! Please install libtool. - -To proceed, you must find and install it from somewhere. - -Alternatively, you can use the Xcode project at Xcode/libusb.xcodeproj. - -Notes related to submitting new developments: --------------------------------------------- - -If you submit a new development to libusb (eg: new backend), that is unlikely -to fit in a couple of small patches, we would kindly suggest that you create a -public account on github, if you don't have one already, and then fork a new -libusb repository under this account from https://github.com/libusb/libusb. - -Then you can create a git branch for your work, that we will be able to better -reference and test. - -We also suggest that, if you are planning to bring in a large development, you -try to involve the libusb community early by letting the mailing list know, as -you may find that other people might be eager to help you out. -See http://mailing-list.libusb.info for details on how to join the mailing list. \ No newline at end of file diff --git a/Externals/libusb/README.md b/Externals/libusb/README.md deleted file mode 100644 index 0e7228a9fedc..000000000000 --- a/Externals/libusb/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# libusb - -[![Build Status](https://travis-ci.org/libusb/libusb.svg?branch=master)](https://travis-ci.org/libusb/libusb) -[![Build status](https://ci.appveyor.com/api/projects/status/xvrfam94jii4a6lw?svg=true)](https://ci.appveyor.com/project/LudovicRousseau/libusb) -[![Coverity Scan Build Status](https://scan.coverity.com/projects/2180/badge.svg)](https://scan.coverity.com/projects/libusb-libusb) - -libusb is a library for USB device access from Linux, macOS, -Windows, OpenBSD/NetBSD and Haiku userspace. -It is written in C (Haiku backend in C++) and licensed under the GNU -Lesser General Public License version 2.1 or, at your option, any later -version (see [COPYING](COPYING)). - -libusb is abstracted internally in such a way that it can hopefully -be ported to other operating systems. Please see the [PORTING](PORTING) -file for more information. - -libusb homepage: -http://libusb.info/ - -Developers will wish to consult the API documentation: -http://api.libusb.info - -Use the mailing list for questions, comments, etc: -http://mailing-list.libusb.info - -- Hans de Goede -- Xiaofan Chen -- Ludovic Rousseau -- Nathan Hjelm -- Chris Dickens - -(Please use the mailing list rather than mailing developers directly) diff --git a/Externals/libusb/TODO b/Externals/libusb/TODO deleted file mode 100644 index 1e13760efe80..000000000000 --- a/Externals/libusb/TODO +++ /dev/null @@ -1,2 +0,0 @@ -Please see the libusb roadmap by visiting: -https://github.com/libusb/libusb/milestones?direction=asc&sort=due_date&state=open diff --git a/Externals/libusb/autogen.sh b/Externals/libusb/autogen.sh deleted file mode 100755 index 24f39ee69527..000000000000 --- a/Externals/libusb/autogen.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -set -e - -./bootstrap.sh -if test -z "$NOCONFIGURE"; then - exec ./configure --enable-examples-build --enable-tests-build "$@" -fi diff --git a/Externals/libusb/bootstrap.sh b/Externals/libusb/bootstrap.sh deleted file mode 100755 index dc5653941186..000000000000 --- a/Externals/libusb/bootstrap.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -if ! test -d m4 ; then - mkdir m4 -fi -autoreconf -ivf || exit 1 diff --git a/Externals/libusb/config.h.in b/Externals/libusb/config.h.in index 830628afaf28..43e603ed25bc 100644 --- a/Externals/libusb/config.h.in +++ b/Externals/libusb/config.h.in @@ -1,47 +1,91 @@ -/* Default visibility */ +/* from libusb v1.0.26 release. modified for cmake for dolphin */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to the attribute for default visibility. */ #define DEFAULT_VISIBILITY __attribute__((visibility("default"))) -/* Start with debug message logging enabled */ +/* Define to 1 to start with debug message logging enabled. */ #undef ENABLE_DEBUG_LOGGING -/* Message logging */ +/* Define to 1 to enable message logging. */ #undef ENABLE_LOGGING /* Define to 1 if you have the header file. */ #cmakedefine HAVE_ASM_TYPES_H 1 -/* Define to 1 if you have the `gettimeofday' function. */ -#cmakedefine HAVE_GETTIMEOFDAY 1 +/* Define to 1 if you have the `clock_gettime' function. */ +#cmakedefine HAVE_CLOCK_GETTIME 1 + +/* Define to 1 if you have the declaration of `EFD_CLOEXEC', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_EFD_CLOEXEC 1 + +/* Define to 1 if you have the declaration of `EFD_NONBLOCK', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_EFD_NONBLOCK 1 + +/* Define to 1 if you have the declaration of `TFD_CLOEXEC', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_TFD_CLOEXEC 1 + +/* Define to 1 if you have the declaration of `TFD_NONBLOCK', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_TFD_NONBLOCK 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_DLFCN_H 1 + +/* Define to 1 if the system has eventfd functionality. */ +#cmakedefine HAVE_EVENTFD 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header + file. */ +#cmakedefine HAVE_IOKIT_USB_IOUSBHOSTFAMILYDEFINITIONS_H 1 /* Define to 1 if you have the `udev' library (-ludev). */ #cmakedefine HAVE_LIBUDEV 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_LINUX_FILTER_H 1 +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MEMORY_H 1 + +/* Define to 1 if the system has the type `nfds_t'. */ +#cmakedefine HAVE_NFDS_T 1 + +/* Define to 1 if you have the `pipe2' function. */ +#cmakedefine HAVE_PIPE2 1 + +/* Define to 1 if you have the `pthread_condattr_setclock' function. */ +#cmakedefine HAVE_PTHREAD_CONDATTR_SETCLOCK 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_LINUX_NETLINK_H 1 +/* Define to 1 if you have the `pthread_setname_np' function. */ +#cmakedefine HAVE_PTHREAD_SETNAME_NP 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_POLL_H 1 +/* Define to 1 if you have the `pthread_threadid_np' function. */ +#cmakedefine HAVE_PTHREAD_THREADID_NP 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SIGNAL_H 1 +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDLIB_H 1 /* Define to 1 if you have the header file. */ #cmakedefine HAVE_STRINGS_H 1 +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRING_H 1 + /* Define to 1 if the system has the type `struct timespec'. */ #cmakedefine HAVE_STRUCT_TIMESPEC 1 -/* syslog() function available */ -#cmakedefine HAVE_SYSLOG_FUNC 1 - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYSLOG_H 1 +/* Define to 1 if you have the `syslog' function. */ +#cmakedefine HAVE_SYSLOG 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_SOCKET_H 1 +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #cmakedefine HAVE_SYS_TIME_H 1 @@ -49,38 +93,66 @@ /* Define to 1 if you have the header file. */ #cmakedefine HAVE_SYS_TYPES_H 1 -/* Darwin backend */ -#cmakedefine OS_DARWIN 1 +/* Define to 1 if the system has timerfd functionality. */ +#cmakedefine HAVE_TIMERFD 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UNISTD_H 1 + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#undef LT_OBJDIR + +/* Name of package */ +#undef PACKAGE -/* Linux backend */ -#cmakedefine OS_LINUX 1 +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT -/* NetBSD backend */ -#cmakedefine OS_NETBSD 1 +/* Define to the full name of this package. */ +#undef PACKAGE_NAME -/* OpenBSD backend */ -#cmakedefine OS_OPENBSD 1 +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING -/* Windows backend */ -#cmakedefine OS_WINDOWS 1 +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME -/* type of second poll() argument */ -#define POLL_NFDS_TYPE @POLL_NFDS_TYPE@ +/* Define to the home page for this package. */ +#undef PACKAGE_URL -/* Use POSIX Threads */ -#cmakedefine THREADS_POSIX +/* Define to the version of this package. */ +#undef PACKAGE_VERSION -/* timerfd headers available */ -#cmakedefine USBI_TIMERFD_AVAILABLE 1 +/* Define to 1 if compiling for a POSIX platform. */ +#cmakedefine PLATFORM_POSIX 1 -/* Enable output to system log */ +/* Define to 1 if compiling for a Windows platform. */ +#cmakedefine PLATFORM_WINDOWS 1 + +/* Define to the attribute for enabling parameter checks on printf-like + functions. */ +#define PRINTF_FORMAT(a, b) __attribute__((format(printf, a, b))) + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* UMockdev hotplug code is not racy */ +#undef UMOCKDEV_HOTPLUG + +/* Define to 1 to output logging messages to the systemwide log. */ #define USE_SYSTEM_LOGGING_FACILITY 1 -/* Use udev for device enumeration/hotplug */ -#cmakedefine USE_UDEV 1 +/* Version number of package */ +#undef VERSION -/* Use GNU extensions */ +/* Enable GNU extensions. */ #define _GNU_SOURCE -/* Oldest Windows version supported */ -#define WINVER 0x0501 +/* Define to the oldest supported Windows version. */ +//#undef _WIN32_WINNT + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif diff --git a/Externals/libusb/configure.ac b/Externals/libusb/configure.ac deleted file mode 100644 index 76f67d9b49db..000000000000 --- a/Externals/libusb/configure.ac +++ /dev/null @@ -1,332 +0,0 @@ -dnl These m4 macros are whitespace sensitive and break if moved around much. -m4_define([LU_VERSION_H], m4_include([libusb/version.h])) -m4_define([LU_DEFINE_VERSION_ATOM], - [m4_define([$1], m4_bregexp(LU_VERSION_H, - [^#define\s*$1\s*\([0-9]*\).*], [\1]))]) -m4_define([LU_DEFINE_VERSION_RC_ATOM], - [m4_define([$1], m4_bregexp(LU_VERSION_H, - [^#define\s*$1\s*"\(-rc[0-9]*\)".*], [\1]))]) -dnl The m4_bregexp() returns (only) the numbers following the #define named -dnl in the first macro parameter. m4_define() then defines the name for use -dnl in AC_INIT. - -LU_DEFINE_VERSION_ATOM([LIBUSB_MAJOR]) -LU_DEFINE_VERSION_ATOM([LIBUSB_MINOR]) -LU_DEFINE_VERSION_ATOM([LIBUSB_MICRO]) -LU_DEFINE_VERSION_RC_ATOM([LIBUSB_RC]) - -AC_INIT([libusb],[LIBUSB_MAJOR[.]LIBUSB_MINOR[.]LIBUSB_MICRO[]LIBUSB_RC],[libusb-devel@lists.sourceforge.net],[libusb],[http://libusb.info]) - -# Library versioning -# These numbers should be tweaked on every release. Read carefully: -# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html -# http://sourceware.org/autobook/autobook/autobook_91.html -lt_current=2 -lt_revision=0 -lt_age=1 -LTLDFLAGS="-version-info ${lt_current}:${lt_revision}:${lt_age}" - -AM_INIT_AUTOMAKE - -AC_CONFIG_SRCDIR([libusb/core.c]) -AC_CONFIG_MACRO_DIR([m4]) -AC_CONFIG_HEADERS([config.h]) -m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) - -AC_PREREQ([2.69]) -AC_PROG_CC -AC_PROG_CXX -LT_INIT -LT_LANG([Windows Resource]) -AC_C_INLINE -AM_PROG_CC_C_O -AC_DEFINE([_GNU_SOURCE], 1, [Use GNU extensions]) - -LTLDFLAGS="${LTLDFLAGS} -no-undefined" - -AC_MSG_CHECKING([operating system]) - -dnl on linux-android platform, some functions are in different places -case $host in -*-linux-android*) - AC_MSG_RESULT([This is a Linux-Android system]) - is_backend_android=yes - ;; -*) - is_backend_android=no -esac - -case $host in -*-linux* | *-uclinux*) - AC_MSG_RESULT([Linux]) - backend=linux - threads=posix - ;; -*-darwin*) - AC_MSG_RESULT([Darwin/Mac OS X]) - backend=darwin - threads=posix - ;; -*-openbsd*) - AC_MSG_RESULT([OpenBSD]) - backend=openbsd - threads=posix - ;; -*-netbsd*) - AC_MSG_RESULT([NetBSD]) - backend=netbsd - threads=posix - ;; -*-mingw* | *msys*) - AC_MSG_RESULT([Windows]) - backend=windows - threads=windows - create_import_lib=yes - AM_CFLAGS="${AM_CFLAGS} -fno-omit-frame-pointer" - ;; -*-cygwin*) - AC_MSG_RESULT([Cygwin (using Windows backend)]) - backend=windows - threads=posix - ;; -*-haiku*) - AC_MSG_RESULT([Haiku]) - backend=haiku - threads=posix - ;; -*-solaris*) - AC_MSG_RESULT([SunOS]) - backend=sunos - threads=posix - ;; -*) - AC_MSG_ERROR([unsupported operating system $host]) -esac - -case $backend in -linux) - AC_DEFINE(OS_LINUX, 1, [Linux backend]) - AC_SUBST(OS_LINUX) - AC_SEARCH_LIBS([clock_gettime], [rt], [], [], [-pthread]) - AC_ARG_ENABLE([udev], - [AC_HELP_STRING([--enable-udev], [use udev for device enumeration and hotplug support (recommended) [default=yes]])], - [], [enable_udev=yes]) - if test "x$enable_udev" = xyes ; then - # system has udev. use it or fail! - AC_CHECK_HEADERS([libudev.h], [], [AC_MSG_ERROR([udev support requested but libudev header not installed])]) - AC_CHECK_LIB([udev], [udev_new], [], [AC_MSG_ERROR([udev support requested but libudev not installed])]) - AC_DEFINE(USE_UDEV, 1, [Use udev for device enumeration/hotplug]) - else - AC_CHECK_HEADERS([asm/types.h], [], []) - AC_CHECK_HEADERS([sys/socket.h linux/netlink.h], [], [AC_MSG_ERROR([Linux netlink headers not found])], [ -#ifdef HAVE_ASM_TYPES_H -#include -#endif -#include -]) - fi - AC_SUBST(USE_UDEV) - - if test "x$is_backend_android" != xyes; then - THREAD_CFLAGS="-pthread" - LIBS="${LIBS} -pthread" - fi - - AC_CHECK_HEADERS([poll.h]) - AC_DEFINE([POLL_NFDS_TYPE],[nfds_t],[type of second poll() argument]) - ;; -darwin) - AC_DEFINE(OS_DARWIN, 1, [Darwin backend]) - AC_SUBST(OS_DARWIN) - LIBS="-lobjc -Wl,-framework,IOKit -Wl,-framework,CoreFoundation" - LTLDFLAGS="${LTLDFLAGS} -Wl,-prebind" - AC_CHECK_HEADERS([poll.h]) - AC_CHECK_TYPE([nfds_t], - [AC_DEFINE([POLL_NFDS_TYPE],[nfds_t],[type of second poll() argument])], - [AC_DEFINE([POLL_NFDS_TYPE],[unsigned int],[type of second poll() argument])], - [#include ]) - ;; -openbsd) - AC_DEFINE(OS_OPENBSD, 1, [OpenBSD backend]) - AC_SUBST(OS_OPENBSD) - THREAD_CFLAGS="-pthread" - LIBS="-pthread" - AC_CHECK_HEADERS([poll.h]) - AC_DEFINE([POLL_NFDS_TYPE],[nfds_t],[type of second poll() argument]) - ;; -sunos) - AC_DEFINE(OS_SUNOS, 1, [SunOS backend]) - AC_SUBST(OS_SUNOS) - THREAD_CFLAGS="-pthread" - LIBS="-pthread -ldevinfo" - AC_CHECK_HEADERS([poll.h]) - AC_DEFINE([POLL_NFDS_TYPE],[nfds_t],[type of second poll() argument]) - ;; -netbsd) - AC_DEFINE(OS_NETBSD, 1, [NetBSD backend]) - AC_SUBST(OS_NETBSD) - THREAD_CFLAGS="-pthread" - LIBS="-pthread" - AC_CHECK_HEADERS([poll.h]) - AC_DEFINE([POLL_NFDS_TYPE],[nfds_t],[type of second poll() argument]) - ;; -windows) - AC_DEFINE(OS_WINDOWS, 1, [Windows backend]) - AC_SUBST(OS_WINDOWS) - LIBS="" - LTLDFLAGS="${LTLDFLAGS} -avoid-version -Wl,--add-stdcall-alias" - AC_DEFINE([POLL_NFDS_TYPE],[unsigned int],[type of second poll() argument]) - AC_DEFINE([WINVER], 0x0501, [Oldest Windows version supported]) - AC_DEFINE([_WIN32_WINNT], 0x0501, [Oldest Windows version supported]) - ;; -haiku) - AC_DEFINE(OS_HAIKU, 1, [Haiku backend]) - AC_SUBST(OS_HAIKU) - LIBS="${LIBS} -lbe" - AC_CHECK_HEADERS([poll.h]) - AC_DEFINE([POLL_NFDS_TYPE],[nfds_t],[type of second poll() argument]) - ;; -esac - -AC_SUBST(LIBS) - -AM_CONDITIONAL(OS_LINUX, test "x$backend" = xlinux) -AM_CONDITIONAL(OS_DARWIN, test "x$backend" = xdarwin) -AM_CONDITIONAL(OS_OPENBSD, test "x$backend" = xopenbsd) -AM_CONDITIONAL(OS_SUNOS, test "x$backend" = xsunos) -AM_CONDITIONAL(OS_NETBSD, test "x$backend" = xnetbsd) -AM_CONDITIONAL(OS_WINDOWS, test "x$backend" = xwindows) -AM_CONDITIONAL(OS_HAIKU, test "x$backend" = xhaiku) -AM_CONDITIONAL(THREADS_POSIX, test "x$threads" = xposix) -AM_CONDITIONAL(CREATE_IMPORT_LIB, test "x$create_import_lib" = xyes) -AM_CONDITIONAL(USE_UDEV, test "x$enable_udev" = xyes) -if test "x$threads" = xposix; then - AC_DEFINE(THREADS_POSIX, 1, [Use POSIX Threads]) -fi - -# timerfd -AC_CHECK_HEADER([sys/timerfd.h], [timerfd_h=1], [timerfd_h=0]) -AC_ARG_ENABLE([timerfd], - [AS_HELP_STRING([--enable-timerfd], - [use timerfd for timing [default=auto]])], - [use_timerfd=$enableval], [use_timerfd=auto]) - -if test "x$use_timerfd" = xyes -a "x$timerfd_h" = x0; then - AC_MSG_ERROR([timerfd header not available; glibc 2.9+ required]) -fi - -AC_CHECK_DECLS([TFD_NONBLOCK, TFD_CLOEXEC], [tfd_hdr_ok=yes], [tfd_hdr_ok=no], [#include ]) -if test "x$use_timerfd" = xyes -a "x$tfd_hdr_ok" = xno; then - AC_MSG_ERROR([timerfd header not usable; glibc 2.9+ required]) -fi - -AC_MSG_CHECKING([whether to use timerfd for timing]) -if test "x$use_timerfd" = xno; then - AC_MSG_RESULT([no (disabled by user)]) -else - if test "x$timerfd_h" = x1 -a "x$tfd_hdr_ok" = xyes; then - AC_MSG_RESULT([yes]) - AC_DEFINE(USBI_TIMERFD_AVAILABLE, 1, [timerfd headers available]) - else - AC_MSG_RESULT([no (header not available)]) - fi -fi - -AC_CHECK_FUNCS([pipe2]) -AC_CHECK_TYPES([struct timespec]) - -# Message logging -AC_ARG_ENABLE([log], [AS_HELP_STRING([--disable-log], [disable all logging])], - [log_enabled=$enableval], - [log_enabled=yes]) -if test "x$log_enabled" != xno; then - AC_DEFINE([ENABLE_LOGGING], 1, [Message logging]) -fi - -AC_ARG_ENABLE([debug-log], [AS_HELP_STRING([--enable-debug-log], - [start with debug message logging enabled [default=no]])], - [debug_log_enabled=$enableval], - [debug_log_enabled=no]) -if test "x$debug_log_enabled" != xno; then - AC_DEFINE([ENABLE_DEBUG_LOGGING], 1, [Start with debug message logging enabled]) -fi - -AC_ARG_ENABLE([system-log], [AS_HELP_STRING([--enable-system-log], - [output logging messages to system wide log, if supported by the OS [default=no]])], - [system_log_enabled=$enableval], - [system_log_enabled=no]) -if test "x$system_log_enabled" != xno; then - AC_DEFINE([USE_SYSTEM_LOGGING_FACILITY], 1, [Enable output to system log]) - - # Check if syslog is available in standard C library - AC_CHECK_HEADERS(syslog.h) - AC_CHECK_FUNC([syslog], [have_syslog=yes], [have_syslog=no]) - if test "x$have_syslog" != xno; then - AC_DEFINE([HAVE_SYSLOG_FUNC], 1, [syslog() function available]) - fi -fi - -# Examples build -AC_ARG_ENABLE([examples-build], [AS_HELP_STRING([--enable-examples-build], - [build example applications [default=no]])], - [build_examples=$enableval], - [build_examples=no]) -AM_CONDITIONAL(BUILD_EXAMPLES, test "x$build_examples" != xno) - -# Tests build -AC_ARG_ENABLE([tests-build], [AS_HELP_STRING([--enable-tests-build], - [build test applications [default=no]])], - [build_tests=$enableval], - [build_tests=no]) -AM_CONDITIONAL(BUILD_TESTS, test "x$build_tests" != xno) - -# headers not available on all platforms but required on others -AC_CHECK_HEADERS([sys/time.h]) - -# sigaction not available on MinGW -AC_CHECK_FUNC([sigaction], [have_sigaction=yes], [have_sigaction=no]) -AM_CONDITIONAL(HAVE_SIGACTION, test "x$have_sigaction" = xyes) - -# check for -fvisibility=hidden compiler support (GCC >= 3.4) -saved_cflags="$CFLAGS" -# -Werror required for cygwin -CFLAGS="$CFLAGS -Werror -fvisibility=hidden" -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], - [VISIBILITY_CFLAGS="-fvisibility=hidden" - AC_DEFINE([DEFAULT_VISIBILITY], [__attribute__((visibility("default")))], [Default visibility])], - [VISIBILITY_CFLAGS="" - AC_DEFINE([DEFAULT_VISIBILITY], [], [Default visibility])], - ]) -CFLAGS="$saved_cflags" - -# check for -Wno-pointer-sign compiler support (GCC >= 4) -saved_cflags="$CFLAGS" -CFLAGS="$CFLAGS -Wno-pointer-sign" -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], - nopointersign_cflags="-Wno-pointer-sign", nopointersign_cflags="") -CFLAGS="$saved_cflags" - -# check for -std=gnu99 compiler support -saved_cflags="$CFLAGS" -CFLAGS="-std=gnu99" -AC_MSG_CHECKING([whether CC supports -std=gnu99]) -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], - [AC_MSG_RESULT([yes])] - [AM_CFLAGS="${AM_CFLAGS} -std=gnu99"], - [AC_MSG_RESULT([no])] -) -CFLAGS="$saved_cflags" - -AM_CFLAGS="${AM_CFLAGS} -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration $nopointersign_cflags -Wshadow ${THREAD_CFLAGS} ${VISIBILITY_CFLAGS}" - -AC_SUBST(AM_CFLAGS) -AC_SUBST(LTLDFLAGS) - -AC_CONFIG_FILES([libusb-1.0.pc]) -AC_CONFIG_FILES([Makefile]) -AC_CONFIG_FILES([libusb/Makefile]) -AC_CONFIG_FILES([examples/Makefile]) -AC_CONFIG_FILES([tests/Makefile]) -AC_CONFIG_FILES([doc/Makefile]) -AC_CONFIG_FILES([doc/doxygen.cfg]) -AC_OUTPUT diff --git a/Externals/libusb/libusb b/Externals/libusb/libusb new file mode 160000 index 000000000000..ba698478afc3 --- /dev/null +++ b/Externals/libusb/libusb @@ -0,0 +1 @@ +Subproject commit ba698478afc3d3a72644eef9fc4cd24ce8383a4c diff --git a/Externals/libusb/libusb-1.0.pc.in b/Externals/libusb/libusb-1.0.pc.in deleted file mode 100644 index 4aba609e6ad2..000000000000 --- a/Externals/libusb/libusb-1.0.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: libusb-1.0 -Description: C API for USB device access from Linux, Mac OS X, Windows, OpenBSD/NetBSD and Solaris userspace -Version: @VERSION@ -Libs: -L${libdir} -lusb-1.0 -Libs.private: @LIBS@ -Cflags: -I${includedir}/libusb-1.0 diff --git a/Externals/libusb/libusb-1.0.vcxproj b/Externals/libusb/libusb-1.0.vcxproj index 82c22ad98fd7..393ebcf9512f 100644 --- a/Externals/libusb/libusb-1.0.vcxproj +++ b/Externals/libusb/libusb-1.0.vcxproj @@ -1,5 +1,5 @@  - + @@ -18,36 +18,35 @@ - .\msvc;%(AdditionalIncludeDirectories) + .\libusb\msvc;%(AdditionalIncludeDirectories) - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/Externals/libusb/libusb/Makefile.am b/Externals/libusb/libusb/Makefile.am deleted file mode 100644 index e4da62eb35e4..000000000000 --- a/Externals/libusb/libusb/Makefile.am +++ /dev/null @@ -1,101 +0,0 @@ -all: libusb-1.0.la libusb-1.0.dll - -AUTOMAKE_OPTIONS = subdir-objects - -lib_LTLIBRARIES = libusb-1.0.la - -POSIX_POLL_SRC = os/poll_posix.h os/poll_posix.c -POSIX_THREADS_SRC = os/threads_posix.h os/threads_posix.c -WINDOWS_POLL_SRC = os/poll_windows.h os/poll_windows.c -WINDOWS_THREADS_SRC = os/threads_windows.h os/threads_windows.c -LINUX_USBFS_SRC = os/linux_usbfs.h os/linux_usbfs.c -DARWIN_USB_SRC = os/darwin_usb.h os/darwin_usb.c -OPENBSD_USB_SRC = os/openbsd_usb.c -NETBSD_USB_SRC = os/netbsd_usb.c -SUNOS_USB_SRC = os/sunos_usb.c os/sunos_usb.h -WINDOWS_USB_SRC = libusb-1.0.def libusb-1.0.rc \ - os/windows_common.h \ - os/windows_nt_common.h os/windows_nt_common.c \ - os/windows_nt_shared_types.h \ - os/windows_usbdk.h os/windows_usbdk.c \ - os/windows_winusb.h os/windows_winusb.c -WINCE_USB_SRC = os/wince_usb.h os/wince_usb.c -HAIKU_USB_SRC = os/haiku_usb.h os/haiku_usb_backend.cpp \ - os/haiku_usb_raw.h os/haiku_usb_raw.cpp os/haiku_pollfs.cpp - -EXTRA_DIST = $(POSIX_POLL_SRC) $(POSIX_THREADS_SRC) \ - $(WINDOWS_POLL_SRC) $(WINDOWS_THREADS_SRC) \ - $(LINUX_USBFS_SRC) $(DARWIN_USB_SRC) \ - $(OPENBSD_USB_SRC) $(NETBSD_USB_SRC) \ - $(WINDOWS_USB_SRC) $(WINCE_USB_SRC) \ - $(HAIKU_USB_SRC) \ - os/linux_udev.c os/linux_netlink.c - -if OS_LINUX - -if USE_UDEV -OS_SRC = $(LINUX_USBFS_SRC) os/linux_udev.c -else -OS_SRC = $(LINUX_USBFS_SRC) os/linux_netlink.c -endif - -endif - -if OS_DARWIN -OS_SRC = $(DARWIN_USB_SRC) -AM_CFLAGS_EXT = -no-cpp-precomp -endif - -if OS_OPENBSD -OS_SRC = $(OPENBSD_USB_SRC) -endif - -if OS_NETBSD -OS_SRC = $(NETBSD_USB_SRC) -endif - -if OS_SUNOS -OS_SRC = $(SUNOS_USB_SRC) -endif - -if OS_HAIKU -noinst_LTLIBRARIES = libusb_haiku.la -libusb_haiku_la_SOURCES = $(HAIKU_USB_SRC) -libusb_1_0_la_LIBADD = libusb_haiku.la -endif - -if OS_WINDOWS -OS_SRC = $(WINDOWS_USB_SRC) - -.rc.lo: - $(AM_V_GEN)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --tag=RC --mode=compile $(RC) $(RCFLAGS) -i $< -o $@ - -libusb-1.0.rc: version.h version_nano.h -endif - -libusb-1.0.dll: libusb-1.0.def libusb-1.0.la -if CREATE_IMPORT_LIB -# Rebuild the import lib from the .def so that MS and MinGW DLLs can be interchanged - $(AM_V_GEN)$(DLLTOOL) $(DLLTOOLFLAGS) --kill-at --input-def $(srcdir)/libusb-1.0.def --dllname $@ --output-lib .libs/$@.a -endif - -if OS_WINDOWS -POLL_SRC = $(WINDOWS_POLL_SRC) -else -POLL_SRC = $(POSIX_POLL_SRC) -endif - -if THREADS_POSIX -THREADS_SRC = $(POSIX_THREADS_SRC) -else -THREADS_SRC = $(WINDOWS_THREADS_SRC) -endif - -libusb_1_0_la_CFLAGS = $(AM_CFLAGS) -libusb_1_0_la_LDFLAGS = $(LTLDFLAGS) -libusb_1_0_la_SOURCES = libusbi.h libusb.h version.h version_nano.h \ - core.c descriptor.c hotplug.h hotplug.c io.c strerror.c sync.c \ - $(POLL_SRC) $(THREADS_SRC) $(OS_SRC) - -hdrdir = $(includedir)/libusb-1.0 -hdr_HEADERS = libusb.h diff --git a/Externals/libusb/libusb/Makefile.in b/Externals/libusb/libusb/Makefile.in deleted file mode 100644 index 4d65495a9533..000000000000 --- a/Externals/libusb/libusb/Makefile.in +++ /dev/null @@ -1,1048 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = libusb -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/depcomp $(hdr_HEADERS) -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/libusb/version.h $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(hdrdir)" -LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) -@OS_HAIKU_TRUE@libusb_1_0_la_DEPENDENCIES = libusb_haiku.la -am__libusb_1_0_la_SOURCES_DIST = libusbi.h libusb.h version.h \ - version_nano.h core.c descriptor.c hotplug.h hotplug.c io.c \ - strerror.c sync.c os/poll_posix.h os/poll_posix.c \ - os/poll_windows.h os/poll_windows.c os/threads_windows.h \ - os/threads_windows.c os/threads_posix.h os/threads_posix.c \ - os/darwin_usb.h os/darwin_usb.c os/linux_usbfs.h \ - os/linux_usbfs.c os/linux_netlink.c os/linux_udev.c \ - os/netbsd_usb.c os/openbsd_usb.c os/sunos_usb.c os/sunos_usb.h \ - os/windows_winusb.h os/windows_winusb.c os/windows_nt_common.h \ - os/windows_nt_common.c os/windows_common.h libusb-1.0.rc \ - libusb-1.0.def os/windows_usbdk.h os/windows_usbdk.c -am__dirstamp = $(am__leading_dot)dirstamp -am__objects_1 = os/libusb_1_0_la-poll_posix.lo -am__objects_2 = os/libusb_1_0_la-poll_windows.lo -@OS_WINDOWS_FALSE@am__objects_3 = $(am__objects_1) -@OS_WINDOWS_TRUE@am__objects_3 = $(am__objects_2) -am__objects_4 = os/libusb_1_0_la-threads_windows.lo -am__objects_5 = os/libusb_1_0_la-threads_posix.lo -@THREADS_POSIX_FALSE@am__objects_6 = $(am__objects_4) -@THREADS_POSIX_TRUE@am__objects_6 = $(am__objects_5) -am__objects_7 = os/libusb_1_0_la-darwin_usb.lo -am__objects_8 = os/libusb_1_0_la-linux_usbfs.lo -am__objects_9 = os/libusb_1_0_la-netbsd_usb.lo -am__objects_10 = os/libusb_1_0_la-openbsd_usb.lo -am__objects_11 = os/libusb_1_0_la-sunos_usb.lo -am__objects_12 = os/libusb_1_0_la-windows_winusb.lo -am__objects_13 = os/libusb_1_0_la-windows_nt_common.lo libusb-1.0.lo -am__objects_14 = os/libusb_1_0_la-windows_usbdk.lo -@OS_DARWIN_FALSE@@OS_LINUX_FALSE@@OS_NETBSD_FALSE@@OS_OPENBSD_FALSE@@OS_SUNOS_FALSE@@OS_WINDOWS_TRUE@@USE_USBDK_FALSE@am__objects_15 = $(am__objects_12) \ -@OS_DARWIN_FALSE@@OS_LINUX_FALSE@@OS_NETBSD_FALSE@@OS_OPENBSD_FALSE@@OS_SUNOS_FALSE@@OS_WINDOWS_TRUE@@USE_USBDK_FALSE@ $(am__objects_13) -@OS_DARWIN_FALSE@@OS_LINUX_FALSE@@OS_NETBSD_FALSE@@OS_OPENBSD_FALSE@@OS_SUNOS_FALSE@@OS_WINDOWS_TRUE@@USE_USBDK_TRUE@am__objects_15 = $(am__objects_14) \ -@OS_DARWIN_FALSE@@OS_LINUX_FALSE@@OS_NETBSD_FALSE@@OS_OPENBSD_FALSE@@OS_SUNOS_FALSE@@OS_WINDOWS_TRUE@@USE_USBDK_TRUE@ $(am__objects_13) -@OS_DARWIN_FALSE@@OS_LINUX_FALSE@@OS_NETBSD_FALSE@@OS_OPENBSD_FALSE@@OS_SUNOS_TRUE@am__objects_15 = $(am__objects_11) -@OS_DARWIN_FALSE@@OS_LINUX_FALSE@@OS_NETBSD_FALSE@@OS_OPENBSD_TRUE@am__objects_15 = $(am__objects_10) -@OS_DARWIN_FALSE@@OS_LINUX_FALSE@@OS_NETBSD_TRUE@am__objects_15 = $(am__objects_9) -@OS_DARWIN_FALSE@@OS_LINUX_TRUE@@USE_UDEV_FALSE@am__objects_15 = $(am__objects_8) \ -@OS_DARWIN_FALSE@@OS_LINUX_TRUE@@USE_UDEV_FALSE@ os/libusb_1_0_la-linux_netlink.lo -@OS_DARWIN_FALSE@@OS_LINUX_TRUE@@USE_UDEV_TRUE@am__objects_15 = $(am__objects_8) \ -@OS_DARWIN_FALSE@@OS_LINUX_TRUE@@USE_UDEV_TRUE@ os/libusb_1_0_la-linux_udev.lo -@OS_DARWIN_TRUE@am__objects_15 = $(am__objects_7) -am_libusb_1_0_la_OBJECTS = libusb_1_0_la-core.lo \ - libusb_1_0_la-descriptor.lo libusb_1_0_la-hotplug.lo \ - libusb_1_0_la-io.lo libusb_1_0_la-strerror.lo \ - libusb_1_0_la-sync.lo $(am__objects_3) $(am__objects_6) \ - $(am__objects_15) -libusb_1_0_la_OBJECTS = $(am_libusb_1_0_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -libusb_1_0_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libusb_1_0_la_CFLAGS) \ - $(CFLAGS) $(libusb_1_0_la_LDFLAGS) $(LDFLAGS) -o $@ -libusb_haiku_la_LIBADD = -am__libusb_haiku_la_SOURCES_DIST = os/haiku_usb.h \ - os/haiku_usb_backend.cpp os/haiku_usb_raw.h \ - os/haiku_usb_raw.cpp os/haiku_pollfs.cpp -am__objects_16 = os/haiku_usb_backend.lo os/haiku_usb_raw.lo \ - os/haiku_pollfs.lo -@OS_HAIKU_TRUE@am_libusb_haiku_la_OBJECTS = $(am__objects_16) -libusb_haiku_la_OBJECTS = $(am_libusb_haiku_la_OBJECTS) -@OS_HAIKU_TRUE@am_libusb_haiku_la_rpath = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(libusb_1_0_la_SOURCES) $(libusb_haiku_la_SOURCES) -DIST_SOURCES = $(am__libusb_1_0_la_SOURCES_DIST) \ - $(am__libusb_haiku_la_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -HEADERS = $(hdr_HEADERS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLDFLAGS = @LTLDFLAGS@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OS_DARWIN = @OS_DARWIN@ -OS_HAIKU = @OS_HAIKU@ -OS_LINUX = @OS_LINUX@ -OS_NETBSD = @OS_NETBSD@ -OS_OPENBSD = @OS_OPENBSD@ -OS_SUNOS = @OS_SUNOS@ -OS_WINDOWS = @OS_WINDOWS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -RC = @RC@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_UDEV = @USE_UDEV@ -USE_USBDK = @USE_USBDK@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = subdir-objects -lib_LTLIBRARIES = libusb-1.0.la -POSIX_POLL_SRC = os/poll_posix.h os/poll_posix.c -POSIX_THREADS_SRC = os/threads_posix.h os/threads_posix.c -WINDOWS_POLL_SRC = os/poll_windows.h os/poll_windows.c -WINDOWS_THREADS_SRC = os/threads_windows.h os/threads_windows.c -LINUX_USBFS_SRC = os/linux_usbfs.h os/linux_usbfs.c -DARWIN_USB_SRC = os/darwin_usb.h os/darwin_usb.c -OPENBSD_USB_SRC = os/openbsd_usb.c -NETBSD_USB_SRC = os/netbsd_usb.c -SUNOS_USB_SRC = os/sunos_usb.c os/sunos_usb.h -WINDOWS_COMMON_SRC = os/windows_nt_common.h os/windows_nt_common.c \ - os/windows_common.h libusb-1.0.rc libusb-1.0.def - -WINDOWS_USB_SRC = os/windows_winusb.h os/windows_winusb.c -WINDOWS_USBDK_SRC = os/windows_usbdk.h os/windows_usbdk.c -WINCE_USB_SRC = os/wince_usb.h os/wince_usb.c -HAIKU_USB_SRC = os/haiku_usb.h os/haiku_usb_backend.cpp \ - os/haiku_usb_raw.h os/haiku_usb_raw.cpp os/haiku_pollfs.cpp - -EXTRA_DIST = $(POSIX_POLL_SRC) $(POSIX_THREADS_SRC) \ - $(WINDOWS_POLL_SRC) $(WINDOWS_THREADS_SRC) \ - $(LINUX_USBFS_SRC) $(DARWIN_USB_SRC) \ - $(OPENBSD_USB_SRC) $(NETBSD_USB_SRC) \ - $(WINDOWS_COMMON_SRC) $(WINDOWS_USB_SRC) $(WINDOWS_USBDK_SRC) \ - $(WINCE_USB_SRC) $(HAIKU_USB_SRC) \ - os/linux_udev.c os/linux_netlink.c - -@OS_DARWIN_TRUE@OS_SRC = $(DARWIN_USB_SRC) -@OS_LINUX_TRUE@@USE_UDEV_FALSE@OS_SRC = $(LINUX_USBFS_SRC) os/linux_netlink.c -@OS_LINUX_TRUE@@USE_UDEV_TRUE@OS_SRC = $(LINUX_USBFS_SRC) os/linux_udev.c -@OS_NETBSD_TRUE@OS_SRC = $(NETBSD_USB_SRC) -@OS_OPENBSD_TRUE@OS_SRC = $(OPENBSD_USB_SRC) -@OS_SUNOS_TRUE@OS_SRC = $(SUNOS_USB_SRC) -@OS_WINDOWS_TRUE@@USE_USBDK_FALSE@OS_SRC = $(WINDOWS_USB_SRC) $(WINDOWS_COMMON_SRC) -@OS_WINDOWS_TRUE@@USE_USBDK_TRUE@OS_SRC = $(WINDOWS_USBDK_SRC) $(WINDOWS_COMMON_SRC) -@OS_DARWIN_TRUE@AM_CFLAGS_EXT = -no-cpp-precomp -@OS_HAIKU_TRUE@noinst_LTLIBRARIES = libusb_haiku.la -@OS_HAIKU_TRUE@libusb_haiku_la_SOURCES = $(HAIKU_USB_SRC) -@OS_HAIKU_TRUE@libusb_1_0_la_LIBADD = libusb_haiku.la -@OS_WINDOWS_FALSE@POLL_SRC = $(POSIX_POLL_SRC) -@OS_WINDOWS_TRUE@POLL_SRC = $(WINDOWS_POLL_SRC) -@THREADS_POSIX_FALSE@THREADS_SRC = $(WINDOWS_THREADS_SRC) -@THREADS_POSIX_TRUE@THREADS_SRC = $(POSIX_THREADS_SRC) -libusb_1_0_la_CFLAGS = $(AM_CFLAGS) -libusb_1_0_la_LDFLAGS = $(LTLDFLAGS) -libusb_1_0_la_SOURCES = libusbi.h libusb.h version.h version_nano.h \ - core.c descriptor.c hotplug.h hotplug.c io.c strerror.c sync.c \ - $(POLL_SRC) $(THREADS_SRC) $(OS_SRC) - -hdrdir = $(includedir)/libusb-1.0 -hdr_HEADERS = libusb.h -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .cpp .lo .o .obj .rc -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libusb/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu libusb/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } -os/$(am__dirstamp): - @$(MKDIR_P) os - @: > os/$(am__dirstamp) -os/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) os/$(DEPDIR) - @: > os/$(DEPDIR)/$(am__dirstamp) -os/libusb_1_0_la-poll_posix.lo: os/$(am__dirstamp) \ - os/$(DEPDIR)/$(am__dirstamp) -os/libusb_1_0_la-poll_windows.lo: os/$(am__dirstamp) \ - os/$(DEPDIR)/$(am__dirstamp) -os/libusb_1_0_la-threads_windows.lo: os/$(am__dirstamp) \ - os/$(DEPDIR)/$(am__dirstamp) -os/libusb_1_0_la-threads_posix.lo: os/$(am__dirstamp) \ - os/$(DEPDIR)/$(am__dirstamp) -os/libusb_1_0_la-darwin_usb.lo: os/$(am__dirstamp) \ - os/$(DEPDIR)/$(am__dirstamp) -os/libusb_1_0_la-linux_usbfs.lo: os/$(am__dirstamp) \ - os/$(DEPDIR)/$(am__dirstamp) -os/libusb_1_0_la-linux_netlink.lo: os/$(am__dirstamp) \ - os/$(DEPDIR)/$(am__dirstamp) -os/libusb_1_0_la-linux_udev.lo: os/$(am__dirstamp) \ - os/$(DEPDIR)/$(am__dirstamp) -os/libusb_1_0_la-netbsd_usb.lo: os/$(am__dirstamp) \ - os/$(DEPDIR)/$(am__dirstamp) -os/libusb_1_0_la-openbsd_usb.lo: os/$(am__dirstamp) \ - os/$(DEPDIR)/$(am__dirstamp) -os/libusb_1_0_la-sunos_usb.lo: os/$(am__dirstamp) \ - os/$(DEPDIR)/$(am__dirstamp) -os/libusb_1_0_la-windows_winusb.lo: os/$(am__dirstamp) \ - os/$(DEPDIR)/$(am__dirstamp) -os/libusb_1_0_la-windows_nt_common.lo: os/$(am__dirstamp) \ - os/$(DEPDIR)/$(am__dirstamp) -os/libusb_1_0_la-windows_usbdk.lo: os/$(am__dirstamp) \ - os/$(DEPDIR)/$(am__dirstamp) - -libusb-1.0.la: $(libusb_1_0_la_OBJECTS) $(libusb_1_0_la_DEPENDENCIES) $(EXTRA_libusb_1_0_la_DEPENDENCIES) - $(AM_V_CCLD)$(libusb_1_0_la_LINK) -rpath $(libdir) $(libusb_1_0_la_OBJECTS) $(libusb_1_0_la_LIBADD) $(LIBS) -os/haiku_usb_backend.lo: os/$(am__dirstamp) \ - os/$(DEPDIR)/$(am__dirstamp) -os/haiku_usb_raw.lo: os/$(am__dirstamp) os/$(DEPDIR)/$(am__dirstamp) -os/haiku_pollfs.lo: os/$(am__dirstamp) os/$(DEPDIR)/$(am__dirstamp) - -libusb_haiku.la: $(libusb_haiku_la_OBJECTS) $(libusb_haiku_la_DEPENDENCIES) $(EXTRA_libusb_haiku_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(am_libusb_haiku_la_rpath) $(libusb_haiku_la_OBJECTS) $(libusb_haiku_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -rm -f os/*.$(OBJEXT) - -rm -f os/*.lo - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-core.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-descriptor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-hotplug.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-io.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-strerror.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb_1_0_la-sync.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/haiku_pollfs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/haiku_usb_backend.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/haiku_usb_raw.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/libusb_1_0_la-darwin_usb.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/libusb_1_0_la-linux_netlink.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/libusb_1_0_la-linux_udev.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/libusb_1_0_la-linux_usbfs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/libusb_1_0_la-netbsd_usb.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/libusb_1_0_la-openbsd_usb.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/libusb_1_0_la-poll_posix.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/libusb_1_0_la-poll_windows.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/libusb_1_0_la-sunos_usb.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/libusb_1_0_la-threads_posix.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/libusb_1_0_la-threads_windows.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/libusb_1_0_la-windows_nt_common.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/libusb_1_0_la-windows_usbdk.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/libusb_1_0_la-windows_winusb.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -libusb_1_0_la-core.lo: core.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-core.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-core.Tpo -c -o libusb_1_0_la-core.lo `test -f 'core.c' || echo '$(srcdir)/'`core.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-core.Tpo $(DEPDIR)/libusb_1_0_la-core.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='core.c' object='libusb_1_0_la-core.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-core.lo `test -f 'core.c' || echo '$(srcdir)/'`core.c - -libusb_1_0_la-descriptor.lo: descriptor.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-descriptor.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-descriptor.Tpo -c -o libusb_1_0_la-descriptor.lo `test -f 'descriptor.c' || echo '$(srcdir)/'`descriptor.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-descriptor.Tpo $(DEPDIR)/libusb_1_0_la-descriptor.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='descriptor.c' object='libusb_1_0_la-descriptor.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-descriptor.lo `test -f 'descriptor.c' || echo '$(srcdir)/'`descriptor.c - -libusb_1_0_la-hotplug.lo: hotplug.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-hotplug.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-hotplug.Tpo -c -o libusb_1_0_la-hotplug.lo `test -f 'hotplug.c' || echo '$(srcdir)/'`hotplug.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-hotplug.Tpo $(DEPDIR)/libusb_1_0_la-hotplug.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hotplug.c' object='libusb_1_0_la-hotplug.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-hotplug.lo `test -f 'hotplug.c' || echo '$(srcdir)/'`hotplug.c - -libusb_1_0_la-io.lo: io.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-io.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-io.Tpo -c -o libusb_1_0_la-io.lo `test -f 'io.c' || echo '$(srcdir)/'`io.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-io.Tpo $(DEPDIR)/libusb_1_0_la-io.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='io.c' object='libusb_1_0_la-io.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-io.lo `test -f 'io.c' || echo '$(srcdir)/'`io.c - -libusb_1_0_la-strerror.lo: strerror.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-strerror.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-strerror.Tpo -c -o libusb_1_0_la-strerror.lo `test -f 'strerror.c' || echo '$(srcdir)/'`strerror.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-strerror.Tpo $(DEPDIR)/libusb_1_0_la-strerror.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='strerror.c' object='libusb_1_0_la-strerror.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-strerror.lo `test -f 'strerror.c' || echo '$(srcdir)/'`strerror.c - -libusb_1_0_la-sync.lo: sync.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT libusb_1_0_la-sync.lo -MD -MP -MF $(DEPDIR)/libusb_1_0_la-sync.Tpo -c -o libusb_1_0_la-sync.lo `test -f 'sync.c' || echo '$(srcdir)/'`sync.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libusb_1_0_la-sync.Tpo $(DEPDIR)/libusb_1_0_la-sync.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sync.c' object='libusb_1_0_la-sync.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o libusb_1_0_la-sync.lo `test -f 'sync.c' || echo '$(srcdir)/'`sync.c - -os/libusb_1_0_la-poll_posix.lo: os/poll_posix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT os/libusb_1_0_la-poll_posix.lo -MD -MP -MF os/$(DEPDIR)/libusb_1_0_la-poll_posix.Tpo -c -o os/libusb_1_0_la-poll_posix.lo `test -f 'os/poll_posix.c' || echo '$(srcdir)/'`os/poll_posix.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) os/$(DEPDIR)/libusb_1_0_la-poll_posix.Tpo os/$(DEPDIR)/libusb_1_0_la-poll_posix.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='os/poll_posix.c' object='os/libusb_1_0_la-poll_posix.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o os/libusb_1_0_la-poll_posix.lo `test -f 'os/poll_posix.c' || echo '$(srcdir)/'`os/poll_posix.c - -os/libusb_1_0_la-poll_windows.lo: os/poll_windows.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT os/libusb_1_0_la-poll_windows.lo -MD -MP -MF os/$(DEPDIR)/libusb_1_0_la-poll_windows.Tpo -c -o os/libusb_1_0_la-poll_windows.lo `test -f 'os/poll_windows.c' || echo '$(srcdir)/'`os/poll_windows.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) os/$(DEPDIR)/libusb_1_0_la-poll_windows.Tpo os/$(DEPDIR)/libusb_1_0_la-poll_windows.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='os/poll_windows.c' object='os/libusb_1_0_la-poll_windows.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o os/libusb_1_0_la-poll_windows.lo `test -f 'os/poll_windows.c' || echo '$(srcdir)/'`os/poll_windows.c - -os/libusb_1_0_la-threads_windows.lo: os/threads_windows.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT os/libusb_1_0_la-threads_windows.lo -MD -MP -MF os/$(DEPDIR)/libusb_1_0_la-threads_windows.Tpo -c -o os/libusb_1_0_la-threads_windows.lo `test -f 'os/threads_windows.c' || echo '$(srcdir)/'`os/threads_windows.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) os/$(DEPDIR)/libusb_1_0_la-threads_windows.Tpo os/$(DEPDIR)/libusb_1_0_la-threads_windows.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='os/threads_windows.c' object='os/libusb_1_0_la-threads_windows.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o os/libusb_1_0_la-threads_windows.lo `test -f 'os/threads_windows.c' || echo '$(srcdir)/'`os/threads_windows.c - -os/libusb_1_0_la-threads_posix.lo: os/threads_posix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT os/libusb_1_0_la-threads_posix.lo -MD -MP -MF os/$(DEPDIR)/libusb_1_0_la-threads_posix.Tpo -c -o os/libusb_1_0_la-threads_posix.lo `test -f 'os/threads_posix.c' || echo '$(srcdir)/'`os/threads_posix.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) os/$(DEPDIR)/libusb_1_0_la-threads_posix.Tpo os/$(DEPDIR)/libusb_1_0_la-threads_posix.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='os/threads_posix.c' object='os/libusb_1_0_la-threads_posix.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o os/libusb_1_0_la-threads_posix.lo `test -f 'os/threads_posix.c' || echo '$(srcdir)/'`os/threads_posix.c - -os/libusb_1_0_la-darwin_usb.lo: os/darwin_usb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT os/libusb_1_0_la-darwin_usb.lo -MD -MP -MF os/$(DEPDIR)/libusb_1_0_la-darwin_usb.Tpo -c -o os/libusb_1_0_la-darwin_usb.lo `test -f 'os/darwin_usb.c' || echo '$(srcdir)/'`os/darwin_usb.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) os/$(DEPDIR)/libusb_1_0_la-darwin_usb.Tpo os/$(DEPDIR)/libusb_1_0_la-darwin_usb.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='os/darwin_usb.c' object='os/libusb_1_0_la-darwin_usb.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o os/libusb_1_0_la-darwin_usb.lo `test -f 'os/darwin_usb.c' || echo '$(srcdir)/'`os/darwin_usb.c - -os/libusb_1_0_la-linux_usbfs.lo: os/linux_usbfs.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT os/libusb_1_0_la-linux_usbfs.lo -MD -MP -MF os/$(DEPDIR)/libusb_1_0_la-linux_usbfs.Tpo -c -o os/libusb_1_0_la-linux_usbfs.lo `test -f 'os/linux_usbfs.c' || echo '$(srcdir)/'`os/linux_usbfs.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) os/$(DEPDIR)/libusb_1_0_la-linux_usbfs.Tpo os/$(DEPDIR)/libusb_1_0_la-linux_usbfs.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='os/linux_usbfs.c' object='os/libusb_1_0_la-linux_usbfs.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o os/libusb_1_0_la-linux_usbfs.lo `test -f 'os/linux_usbfs.c' || echo '$(srcdir)/'`os/linux_usbfs.c - -os/libusb_1_0_la-linux_netlink.lo: os/linux_netlink.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT os/libusb_1_0_la-linux_netlink.lo -MD -MP -MF os/$(DEPDIR)/libusb_1_0_la-linux_netlink.Tpo -c -o os/libusb_1_0_la-linux_netlink.lo `test -f 'os/linux_netlink.c' || echo '$(srcdir)/'`os/linux_netlink.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) os/$(DEPDIR)/libusb_1_0_la-linux_netlink.Tpo os/$(DEPDIR)/libusb_1_0_la-linux_netlink.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='os/linux_netlink.c' object='os/libusb_1_0_la-linux_netlink.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o os/libusb_1_0_la-linux_netlink.lo `test -f 'os/linux_netlink.c' || echo '$(srcdir)/'`os/linux_netlink.c - -os/libusb_1_0_la-linux_udev.lo: os/linux_udev.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT os/libusb_1_0_la-linux_udev.lo -MD -MP -MF os/$(DEPDIR)/libusb_1_0_la-linux_udev.Tpo -c -o os/libusb_1_0_la-linux_udev.lo `test -f 'os/linux_udev.c' || echo '$(srcdir)/'`os/linux_udev.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) os/$(DEPDIR)/libusb_1_0_la-linux_udev.Tpo os/$(DEPDIR)/libusb_1_0_la-linux_udev.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='os/linux_udev.c' object='os/libusb_1_0_la-linux_udev.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o os/libusb_1_0_la-linux_udev.lo `test -f 'os/linux_udev.c' || echo '$(srcdir)/'`os/linux_udev.c - -os/libusb_1_0_la-netbsd_usb.lo: os/netbsd_usb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT os/libusb_1_0_la-netbsd_usb.lo -MD -MP -MF os/$(DEPDIR)/libusb_1_0_la-netbsd_usb.Tpo -c -o os/libusb_1_0_la-netbsd_usb.lo `test -f 'os/netbsd_usb.c' || echo '$(srcdir)/'`os/netbsd_usb.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) os/$(DEPDIR)/libusb_1_0_la-netbsd_usb.Tpo os/$(DEPDIR)/libusb_1_0_la-netbsd_usb.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='os/netbsd_usb.c' object='os/libusb_1_0_la-netbsd_usb.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o os/libusb_1_0_la-netbsd_usb.lo `test -f 'os/netbsd_usb.c' || echo '$(srcdir)/'`os/netbsd_usb.c - -os/libusb_1_0_la-openbsd_usb.lo: os/openbsd_usb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT os/libusb_1_0_la-openbsd_usb.lo -MD -MP -MF os/$(DEPDIR)/libusb_1_0_la-openbsd_usb.Tpo -c -o os/libusb_1_0_la-openbsd_usb.lo `test -f 'os/openbsd_usb.c' || echo '$(srcdir)/'`os/openbsd_usb.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) os/$(DEPDIR)/libusb_1_0_la-openbsd_usb.Tpo os/$(DEPDIR)/libusb_1_0_la-openbsd_usb.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='os/openbsd_usb.c' object='os/libusb_1_0_la-openbsd_usb.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o os/libusb_1_0_la-openbsd_usb.lo `test -f 'os/openbsd_usb.c' || echo '$(srcdir)/'`os/openbsd_usb.c - -os/libusb_1_0_la-sunos_usb.lo: os/sunos_usb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT os/libusb_1_0_la-sunos_usb.lo -MD -MP -MF os/$(DEPDIR)/libusb_1_0_la-sunos_usb.Tpo -c -o os/libusb_1_0_la-sunos_usb.lo `test -f 'os/sunos_usb.c' || echo '$(srcdir)/'`os/sunos_usb.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) os/$(DEPDIR)/libusb_1_0_la-sunos_usb.Tpo os/$(DEPDIR)/libusb_1_0_la-sunos_usb.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='os/sunos_usb.c' object='os/libusb_1_0_la-sunos_usb.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o os/libusb_1_0_la-sunos_usb.lo `test -f 'os/sunos_usb.c' || echo '$(srcdir)/'`os/sunos_usb.c - -os/libusb_1_0_la-windows_winusb.lo: os/windows_winusb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT os/libusb_1_0_la-windows_winusb.lo -MD -MP -MF os/$(DEPDIR)/libusb_1_0_la-windows_winusb.Tpo -c -o os/libusb_1_0_la-windows_winusb.lo `test -f 'os/windows_winusb.c' || echo '$(srcdir)/'`os/windows_winusb.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) os/$(DEPDIR)/libusb_1_0_la-windows_winusb.Tpo os/$(DEPDIR)/libusb_1_0_la-windows_winusb.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='os/windows_winusb.c' object='os/libusb_1_0_la-windows_winusb.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o os/libusb_1_0_la-windows_winusb.lo `test -f 'os/windows_winusb.c' || echo '$(srcdir)/'`os/windows_winusb.c - -os/libusb_1_0_la-windows_nt_common.lo: os/windows_nt_common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT os/libusb_1_0_la-windows_nt_common.lo -MD -MP -MF os/$(DEPDIR)/libusb_1_0_la-windows_nt_common.Tpo -c -o os/libusb_1_0_la-windows_nt_common.lo `test -f 'os/windows_nt_common.c' || echo '$(srcdir)/'`os/windows_nt_common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) os/$(DEPDIR)/libusb_1_0_la-windows_nt_common.Tpo os/$(DEPDIR)/libusb_1_0_la-windows_nt_common.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='os/windows_nt_common.c' object='os/libusb_1_0_la-windows_nt_common.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o os/libusb_1_0_la-windows_nt_common.lo `test -f 'os/windows_nt_common.c' || echo '$(srcdir)/'`os/windows_nt_common.c - -os/libusb_1_0_la-windows_usbdk.lo: os/windows_usbdk.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -MT os/libusb_1_0_la-windows_usbdk.lo -MD -MP -MF os/$(DEPDIR)/libusb_1_0_la-windows_usbdk.Tpo -c -o os/libusb_1_0_la-windows_usbdk.lo `test -f 'os/windows_usbdk.c' || echo '$(srcdir)/'`os/windows_usbdk.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) os/$(DEPDIR)/libusb_1_0_la-windows_usbdk.Tpo os/$(DEPDIR)/libusb_1_0_la-windows_usbdk.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='os/windows_usbdk.c' object='os/libusb_1_0_la-windows_usbdk.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libusb_1_0_la_CFLAGS) $(CFLAGS) -c -o os/libusb_1_0_la-windows_usbdk.lo `test -f 'os/windows_usbdk.c' || echo '$(srcdir)/'`os/windows_usbdk.c - -.cpp.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -rm -rf os/.libs os/_libs -install-hdrHEADERS: $(hdr_HEADERS) - @$(NORMAL_INSTALL) - @list='$(hdr_HEADERS)'; test -n "$(hdrdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(hdrdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(hdrdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(hdrdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(hdrdir)" || exit $$?; \ - done - -uninstall-hdrHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(hdr_HEADERS)'; test -n "$(hdrdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(hdrdir)'; $(am__uninstall_files_from_dir) - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(hdrdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -rm -f os/$(DEPDIR)/$(am__dirstamp) - -rm -f os/$(am__dirstamp) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ - clean-noinstLTLIBRARIES mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) os/$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-hdrHEADERS - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) os/$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-hdrHEADERS uninstall-libLTLIBRARIES - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-hdrHEADERS install-html \ - install-html-am install-info install-info-am \ - install-libLTLIBRARIES install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am uninstall-hdrHEADERS \ - uninstall-libLTLIBRARIES - -all: libusb-1.0.la libusb-1.0.dll - -@OS_WINDOWS_TRUE@.rc.lo: -@OS_WINDOWS_TRUE@ $(AM_V_GEN)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --tag=RC --mode=compile $(RC) $(RCFLAGS) -i $< -o $@ - -@OS_WINDOWS_TRUE@libusb-1.0.rc: version.h version_nano.h - -libusb-1.0.dll: libusb-1.0.def libusb-1.0.la -# Rebuild the import lib from the .def so that MS and MinGW DLLs can be interchanged -@CREATE_IMPORT_LIB_TRUE@ $(AM_V_GEN)$(DLLTOOL) $(DLLTOOLFLAGS) --kill-at --input-def $(srcdir)/libusb-1.0.def --dllname $@ --output-lib .libs/$@.a - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/Externals/libusb/libusb/core.c b/Externals/libusb/libusb/core.c deleted file mode 100644 index 741bf99a5fd9..000000000000 --- a/Externals/libusb/libusb/core.c +++ /dev/null @@ -1,2740 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode:t ; c-basic-offset:8 -*- */ -/* - * Core functions for libusb - * Copyright © 2012-2013 Nathan Hjelm - * Copyright © 2007-2008 Daniel Drake - * Copyright © 2001 Johannes Erdfelt - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" - -#include -#include -#include -#include -#include -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYSLOG_H -#include -#endif - -#ifdef __ANDROID__ -#include -#endif - -#include "libusbi.h" -#include "hotplug.h" - -struct libusb_context *usbi_default_context = NULL; -static const struct libusb_version libusb_version_internal = - { LIBUSB_MAJOR, LIBUSB_MINOR, LIBUSB_MICRO, LIBUSB_NANO, - LIBUSB_RC, "http://libusb.info" }; -static int default_context_refcnt = 0; -static usbi_mutex_static_t default_context_lock = USBI_MUTEX_INITIALIZER; -static struct timespec timestamp_origin = { 0, 0 }; -#ifndef USE_SYSTEM_LOGGING_FACILITY -static libusb_log_cb log_handler = NULL; -#endif - -usbi_mutex_static_t active_contexts_lock = USBI_MUTEX_INITIALIZER; -struct list_head active_contexts_list; - -/** - * \mainpage libusb-1.0 API Reference - * - * \section intro Introduction - * - * libusb is an open source library that allows you to communicate with USB - * devices from userspace. For more info, see the - * libusb homepage. - * - * This documentation is aimed at application developers wishing to - * communicate with USB peripherals from their own software. After reviewing - * this documentation, feedback and questions can be sent to the - * libusb-devel mailing list. - * - * This documentation assumes knowledge of how to operate USB devices from - * a software standpoint (descriptors, configurations, interfaces, endpoints, - * control/bulk/interrupt/isochronous transfers, etc). Full information - * can be found in the USB 3.0 - * Specification which is available for free download. You can probably - * find less verbose introductions by searching the web. - * - * \section API Application Programming Interface (API) - * - * See the \ref libusb_api page for a complete list of the libusb functions. - * - * \section features Library features - * - * - All transfer types supported (control/bulk/interrupt/isochronous) - * - 2 transfer interfaces: - * -# Synchronous (simple) - * -# Asynchronous (more complicated, but more powerful) - * - Thread safe (although the asynchronous interface means that you - * usually won't need to thread) - * - Lightweight with lean API - * - Compatible with libusb-0.1 through the libusb-compat-0.1 translation layer - * - Hotplug support (on some platforms). See \ref libusb_hotplug. - * - * \section gettingstarted Getting Started - * - * To begin reading the API documentation, start with the Modules page which - * links to the different categories of libusb's functionality. - * - * One decision you will have to make is whether to use the synchronous - * or the asynchronous data transfer interface. The \ref libusb_io documentation - * provides some insight into this topic. - * - * Some example programs can be found in the libusb source distribution under - * the "examples" subdirectory. The libusb homepage includes a list of - * real-life project examples which use libusb. - * - * \section errorhandling Error handling - * - * libusb functions typically return 0 on success or a negative error code - * on failure. These negative error codes relate to LIBUSB_ERROR constants - * which are listed on the \ref libusb_misc "miscellaneous" documentation page. - * - * \section msglog Debug message logging - * - * libusb uses stderr for all logging. By default, logging is set to NONE, - * which means that no output will be produced. However, unless the library - * has been compiled with logging disabled, then any application calls to - * libusb_set_option(ctx, LIBUSB_OPTION_LOG_LEVEL, level), or the setting of the - * environmental variable LIBUSB_DEBUG outside of the application, can result - * in logging being produced. Your application should therefore not close - * stderr, but instead direct it to the null device if its output is - * undesirable. - * - * The libusb_set_option(ctx, LIBUSB_OPTION_LOG_LEVEL, level) function can be - * used to enable logging of certain messages. Under standard configuration, - * libusb doesn't really log much so you are advised to use this function - * to enable all error/warning/ informational messages. It will help debug - * problems with your software. - * - * The logged messages are unstructured. There is no one-to-one correspondence - * between messages being logged and success or failure return codes from - * libusb functions. There is no format to the messages, so you should not - * try to capture or parse them. They are not and will not be localized. - * These messages are not intended to being passed to your application user; - * instead, you should interpret the error codes returned from libusb functions - * and provide appropriate notification to the user. The messages are simply - * there to aid you as a programmer, and if you're confused because you're - * getting a strange error code from a libusb function, enabling message - * logging may give you a suitable explanation. - * - * The LIBUSB_DEBUG environment variable can be used to enable message logging - * at run-time. This environment variable should be set to a log level number, - * which is interpreted the same as the - * libusb_set_option(ctx, LIBUSB_OPTION_LOG_LEVEL, level) parameter. When this - * environment variable is set, the message logging verbosity level is fixed - * and libusb_set_option(ctx, LIBUSB_OPTION_LOG_LEVEL, level) effectively does - * nothing. - * - * libusb can be compiled without any logging functions, useful for embedded - * systems. In this case, libusb_set_option(ctx, LIBUSB_OPTION_LOG_LEVEL, level) - * and the LIBUSB_DEBUG environment variable have no effects. - * - * libusb can also be compiled with verbose debugging messages always. When - * the library is compiled in this way, all messages of all verbosities are - * always logged. libusb_set_option(ctx, LIBUSB_OPTION_LOG_LEVEL, level) and - * the LIBUSB_DEBUG environment variable have no effects. - * - * \section remarks Other remarks - * - * libusb does have imperfections. The \ref libusb_caveats "caveats" page attempts - * to document these. - */ - -/** - * \page libusb_caveats Caveats - * - * \section fork Fork considerations - * - * libusb is not designed to work across fork() calls. Depending on - * the platform, there may be resources in the parent process that are not - * available to the child (e.g. the hotplug monitor thread on Linux). In - * addition, since the parent and child will share libusb's internal file - * descriptors, using libusb in any way from the child could cause the parent - * process's \ref libusb_context to get into an inconsistent state. - * - * On Linux, libusb's file descriptors will be marked as CLOEXEC, which means - * that it is safe to fork() and exec() without worrying about the child - * process needing to clean up state or having access to these file descriptors. - * Other platforms may not be so forgiving, so consider yourself warned! - * - * \section devresets Device resets - * - * The libusb_reset_device() function allows you to reset a device. If your - * program has to call such a function, it should obviously be aware that - * the reset will cause device state to change (e.g. register values may be - * reset). - * - * The problem is that any other program could reset the device your program - * is working with, at any time. libusb does not offer a mechanism to inform - * you when this has happened, so if someone else resets your device it will - * not be clear to your own program why the device state has changed. - * - * Ultimately, this is a limitation of writing drivers in userspace. - * Separation from the USB stack in the underlying kernel makes it difficult - * for the operating system to deliver such notifications to your program. - * The Linux kernel USB stack allows such reset notifications to be delivered - * to in-kernel USB drivers, but it is not clear how such notifications could - * be delivered to second-class drivers that live in userspace. - * - * \section blockonly Blocking-only functionality - * - * The functionality listed below is only available through synchronous, - * blocking functions. There are no asynchronous/non-blocking alternatives, - * and no clear ways of implementing these. - * - * - Configuration activation (libusb_set_configuration()) - * - Interface/alternate setting activation (libusb_set_interface_alt_setting()) - * - Releasing of interfaces (libusb_release_interface()) - * - Clearing of halt/stall condition (libusb_clear_halt()) - * - Device resets (libusb_reset_device()) - * - * \section configsel Configuration selection and handling - * - * When libusb presents a device handle to an application, there is a chance - * that the corresponding device may be in unconfigured state. For devices - * with multiple configurations, there is also a chance that the configuration - * currently selected is not the one that the application wants to use. - * - * The obvious solution is to add a call to libusb_set_configuration() early - * on during your device initialization routines, but there are caveats to - * be aware of: - * -# If the device is already in the desired configuration, calling - * libusb_set_configuration() using the same configuration value will cause - * a lightweight device reset. This may not be desirable behaviour. - * -# In the case where the desired configuration is already active, libusb - * may not even be able to perform a lightweight device reset. For example, - * take my USB keyboard with fingerprint reader: I'm interested in driving - * the fingerprint reader interface through libusb, but the kernel's - * USB-HID driver will almost always have claimed the keyboard interface. - * Because the kernel has claimed an interface, it is not even possible to - * perform the lightweight device reset, so libusb_set_configuration() will - * fail. (Luckily the device in question only has a single configuration.) - * -# libusb will be unable to set a configuration if other programs or - * drivers have claimed interfaces. In particular, this means that kernel - * drivers must be detached from all the interfaces before - * libusb_set_configuration() may succeed. - * - * One solution to some of the above problems is to consider the currently - * active configuration. If the configuration we want is already active, then - * we don't have to select any configuration: -\code -cfg = -1; -libusb_get_configuration(dev, &cfg); -if (cfg != desired) - libusb_set_configuration(dev, desired); -\endcode - * - * This is probably suitable for most scenarios, but is inherently racy: - * another application or driver may change the selected configuration - * after the libusb_get_configuration() call. - * - * Even in cases where libusb_set_configuration() succeeds, consider that other - * applications or drivers may change configuration after your application - * calls libusb_set_configuration(). - * - * One possible way to lock your device into a specific configuration is as - * follows: - * -# Set the desired configuration (or use the logic above to realise that - * it is already in the desired configuration) - * -# Claim the interface that you wish to use - * -# Check that the currently active configuration is the one that you want - * to use. - * - * The above method works because once an interface is claimed, no application - * or driver is able to select another configuration. - * - * \section earlycomp Early transfer completion - * - * NOTE: This section is currently Linux-centric. I am not sure if any of these - * considerations apply to Darwin or other platforms. - * - * When a transfer completes early (i.e. when less data is received/sent in - * any one packet than the transfer buffer allows for) then libusb is designed - * to terminate the transfer immediately, not transferring or receiving any - * more data unless other transfers have been queued by the user. - * - * On legacy platforms, libusb is unable to do this in all situations. After - * the incomplete packet occurs, "surplus" data may be transferred. For recent - * versions of libusb, this information is kept (the data length of the - * transfer is updated) and, for device-to-host transfers, any surplus data was - * added to the buffer. Still, this is not a nice solution because it loses the - * information about the end of the short packet, and the user probably wanted - * that surplus data to arrive in the next logical transfer. - * - * \section zlp Zero length packets - * - * - libusb is able to send a packet of zero length to an endpoint simply by - * submitting a transfer of zero length. - * - The \ref libusb_transfer_flags::LIBUSB_TRANSFER_ADD_ZERO_PACKET - * "LIBUSB_TRANSFER_ADD_ZERO_PACKET" flag is currently only supported on Linux. - */ - -/** - * \page libusb_contexts Contexts - * - * It is possible that libusb may be used simultaneously from two independent - * libraries linked into the same executable. For example, if your application - * has a plugin-like system which allows the user to dynamically load a range - * of modules into your program, it is feasible that two independently - * developed modules may both use libusb. - * - * libusb is written to allow for these multiple user scenarios. The two - * "instances" of libusb will not interfere: libusb_set_option() calls - * from one user will not affect the same settings for other users, other - * users can continue using libusb after one of them calls libusb_exit(), etc. - * - * This is made possible through libusb's context concept. When you - * call libusb_init(), you are (optionally) given a context. You can then pass - * this context pointer back into future libusb functions. - * - * In order to keep things simple for more simplistic applications, it is - * legal to pass NULL to all functions requiring a context pointer (as long as - * you're sure no other code will attempt to use libusb from the same process). - * When you pass NULL, the default context will be used. The default context - * is created the first time a process calls libusb_init() when no other - * context is alive. Contexts are destroyed during libusb_exit(). - * - * The default context is reference-counted and can be shared. That means that - * if libusb_init(NULL) is called twice within the same process, the two - * users end up sharing the same context. The deinitialization and freeing of - * the default context will only happen when the last user calls libusb_exit(). - * In other words, the default context is created and initialized when its - * reference count goes from 0 to 1, and is deinitialized and destroyed when - * its reference count goes from 1 to 0. - * - * You may be wondering why only a subset of libusb functions require a - * context pointer in their function definition. Internally, libusb stores - * context pointers in other objects (e.g. libusb_device instances) and hence - * can infer the context from those objects. - */ - - /** - * \page libusb_api Application Programming Interface - * - * This is the complete list of libusb functions, structures and - * enumerations in alphabetical order. - * - * \section Functions - * - libusb_alloc_streams() - * - libusb_alloc_transfer() - * - libusb_attach_kernel_driver() - * - libusb_bulk_transfer() - * - libusb_cancel_transfer() - * - libusb_claim_interface() - * - libusb_clear_halt() - * - libusb_close() - * - libusb_control_transfer() - * - libusb_control_transfer_get_data() - * - libusb_control_transfer_get_setup() - * - libusb_cpu_to_le16() - * - libusb_detach_kernel_driver() - * - libusb_dev_mem_alloc() - * - libusb_dev_mem_free() - * - libusb_error_name() - * - libusb_event_handler_active() - * - libusb_event_handling_ok() - * - libusb_exit() - * - libusb_fill_bulk_stream_transfer() - * - libusb_fill_bulk_transfer() - * - libusb_fill_control_setup() - * - libusb_fill_control_transfer() - * - libusb_fill_interrupt_transfer() - * - libusb_fill_iso_transfer() - * - libusb_free_bos_descriptor() - * - libusb_free_config_descriptor() - * - libusb_free_container_id_descriptor() - * - libusb_free_device_list() - * - libusb_free_pollfds() - * - libusb_free_ss_endpoint_companion_descriptor() - * - libusb_free_ss_usb_device_capability_descriptor() - * - libusb_free_streams() - * - libusb_free_transfer() - * - libusb_free_usb_2_0_extension_descriptor() - * - libusb_get_active_config_descriptor() - * - libusb_get_bos_descriptor() - * - libusb_get_bus_number() - * - libusb_get_config_descriptor() - * - libusb_get_config_descriptor_by_value() - * - libusb_get_configuration() - * - libusb_get_container_id_descriptor() - * - libusb_get_descriptor() - * - libusb_get_device() - * - libusb_get_device_address() - * - libusb_get_device_descriptor() - * - libusb_get_device_list() - * - libusb_get_device_speed() - * - libusb_get_iso_packet_buffer() - * - libusb_get_iso_packet_buffer_simple() - * - libusb_get_max_iso_packet_size() - * - libusb_get_max_packet_size() - * - libusb_get_next_timeout() - * - libusb_get_parent() - * - libusb_get_pollfds() - * - libusb_get_port_number() - * - libusb_get_port_numbers() - * - libusb_get_port_path() - * - libusb_get_ss_endpoint_companion_descriptor() - * - libusb_get_ss_usb_device_capability_descriptor() - * - libusb_get_string_descriptor() - * - libusb_get_string_descriptor_ascii() - * - libusb_get_usb_2_0_extension_descriptor() - * - libusb_get_version() - * - libusb_handle_events() - * - libusb_handle_events_completed() - * - libusb_handle_events_locked() - * - libusb_handle_events_timeout() - * - libusb_handle_events_timeout_completed() - * - libusb_has_capability() - * - libusb_hotplug_deregister_callback() - * - libusb_hotplug_register_callback() - * - libusb_init() - * - libusb_interrupt_event_handler() - * - libusb_interrupt_transfer() - * - libusb_kernel_driver_active() - * - libusb_lock_events() - * - libusb_lock_event_waiters() - * - libusb_open() - * - libusb_open_device_with_vid_pid() - * - libusb_pollfds_handle_timeouts() - * - libusb_ref_device() - * - libusb_release_interface() - * - libusb_reset_device() - * - libusb_set_auto_detach_kernel_driver() - * - libusb_set_configuration() - * - libusb_set_debug() - * - libusb_set_log_cb() - * - libusb_set_interface_alt_setting() - * - libusb_set_iso_packet_lengths() - * - libusb_set_option() - * - libusb_setlocale() - * - libusb_set_pollfd_notifiers() - * - libusb_strerror() - * - libusb_submit_transfer() - * - libusb_transfer_get_stream_id() - * - libusb_transfer_set_stream_id() - * - libusb_try_lock_events() - * - libusb_unlock_events() - * - libusb_unlock_event_waiters() - * - libusb_unref_device() - * - libusb_wait_for_event() - * - * \section Structures - * - libusb_bos_descriptor - * - libusb_bos_dev_capability_descriptor - * - libusb_config_descriptor - * - libusb_container_id_descriptor - * - \ref libusb_context - * - libusb_control_setup - * - \ref libusb_device - * - libusb_device_descriptor - * - \ref libusb_device_handle - * - libusb_endpoint_descriptor - * - libusb_interface - * - libusb_interface_descriptor - * - libusb_iso_packet_descriptor - * - libusb_pollfd - * - libusb_ss_endpoint_companion_descriptor - * - libusb_ss_usb_device_capability_descriptor - * - libusb_transfer - * - libusb_usb_2_0_extension_descriptor - * - libusb_version - * - * \section Enums - * - \ref libusb_bos_type - * - \ref libusb_capability - * - \ref libusb_class_code - * - \ref libusb_descriptor_type - * - \ref libusb_endpoint_direction - * - \ref libusb_error - * - \ref libusb_iso_sync_type - * - \ref libusb_iso_usage_type - * - \ref libusb_log_level - * - \ref libusb_option - * - \ref libusb_request_recipient - * - \ref libusb_request_type - * - \ref libusb_speed - * - \ref libusb_ss_usb_device_capability_attributes - * - \ref libusb_standard_request - * - \ref libusb_supported_speed - * - \ref libusb_transfer_flags - * - \ref libusb_transfer_status - * - \ref libusb_transfer_type - * - \ref libusb_usb_2_0_extension_attributes - */ - -/** - * @defgroup libusb_lib Library initialization/deinitialization - * This page details how to initialize and deinitialize libusb. Initialization - * must be performed before using any libusb functionality, and similarly you - * must not call any libusb functions after deinitialization. - */ - -/** - * @defgroup libusb_dev Device handling and enumeration - * The functionality documented below is designed to help with the following - * operations: - * - Enumerating the USB devices currently attached to the system - * - Choosing a device to operate from your software - * - Opening and closing the chosen device - * - * \section nutshell In a nutshell... - * - * The description below really makes things sound more complicated than they - * actually are. The following sequence of function calls will be suitable - * for almost all scenarios and does not require you to have such a deep - * understanding of the resource management issues: - * \code -// discover devices -libusb_device **list; -libusb_device *found = NULL; -ssize_t cnt = libusb_get_device_list(NULL, &list); -ssize_t i = 0; -int err = 0; -if (cnt < 0) - error(); - -for (i = 0; i < cnt; i++) { - libusb_device *device = list[i]; - if (is_interesting(device)) { - found = device; - break; - } -} - -if (found) { - libusb_device_handle *handle; - - err = libusb_open(found, &handle); - if (err) - error(); - // etc -} - -libusb_free_device_list(list, 1); -\endcode - * - * The two important points: - * - You asked libusb_free_device_list() to unreference the devices (2nd - * parameter) - * - You opened the device before freeing the list and unreferencing the - * devices - * - * If you ended up with a handle, you can now proceed to perform I/O on the - * device. - * - * \section devshandles Devices and device handles - * libusb has a concept of a USB device, represented by the - * \ref libusb_device opaque type. A device represents a USB device that - * is currently or was previously connected to the system. Using a reference - * to a device, you can determine certain information about the device (e.g. - * you can read the descriptor data). - * - * The libusb_get_device_list() function can be used to obtain a list of - * devices currently connected to the system. This is known as device - * discovery. - * - * Just because you have a reference to a device does not mean it is - * necessarily usable. The device may have been unplugged, you may not have - * permission to operate such device, or another program or driver may be - * using the device. - * - * When you've found a device that you'd like to operate, you must ask - * libusb to open the device using the libusb_open() function. Assuming - * success, libusb then returns you a device handle - * (a \ref libusb_device_handle pointer). All "real" I/O operations then - * operate on the handle rather than the original device pointer. - * - * \section devref Device discovery and reference counting - * - * Device discovery (i.e. calling libusb_get_device_list()) returns a - * freshly-allocated list of devices. The list itself must be freed when - * you are done with it. libusb also needs to know when it is OK to free - * the contents of the list - the devices themselves. - * - * To handle these issues, libusb provides you with two separate items: - * - A function to free the list itself - * - A reference counting system for the devices inside - * - * New devices presented by the libusb_get_device_list() function all have a - * reference count of 1. You can increase and decrease reference count using - * libusb_ref_device() and libusb_unref_device(). A device is destroyed when - * its reference count reaches 0. - * - * With the above information in mind, the process of opening a device can - * be viewed as follows: - * -# Discover devices using libusb_get_device_list(). - * -# Choose the device that you want to operate, and call libusb_open(). - * -# Unref all devices in the discovered device list. - * -# Free the discovered device list. - * - * The order is important - you must not unreference the device before - * attempting to open it, because unreferencing it may destroy the device. - * - * For convenience, the libusb_free_device_list() function includes a - * parameter to optionally unreference all the devices in the list before - * freeing the list itself. This combines steps 3 and 4 above. - * - * As an implementation detail, libusb_open() actually adds a reference to - * the device in question. This is because the device remains available - * through the handle via libusb_get_device(). The reference is deleted during - * libusb_close(). - */ - -/** @defgroup libusb_misc Miscellaneous */ - -/* we traverse usbfs without knowing how many devices we are going to find. - * so we create this discovered_devs model which is similar to a linked-list - * which grows when required. it can be freed once discovery has completed, - * eliminating the need for a list node in the libusb_device structure - * itself. */ -#define DISCOVERED_DEVICES_SIZE_STEP 8 - -static struct discovered_devs *discovered_devs_alloc(void) -{ - struct discovered_devs *ret = - malloc(sizeof(*ret) + (sizeof(void *) * DISCOVERED_DEVICES_SIZE_STEP)); - - if (ret) { - ret->len = 0; - ret->capacity = DISCOVERED_DEVICES_SIZE_STEP; - } - return ret; -} - -static void discovered_devs_free(struct discovered_devs *discdevs) -{ - size_t i; - - for (i = 0; i < discdevs->len; i++) - libusb_unref_device(discdevs->devices[i]); - - free(discdevs); -} - -/* append a device to the discovered devices collection. may realloc itself, - * returning new discdevs. returns NULL on realloc failure. */ -struct discovered_devs *discovered_devs_append( - struct discovered_devs *discdevs, struct libusb_device *dev) -{ - size_t len = discdevs->len; - size_t capacity; - struct discovered_devs *new_discdevs; - - /* if there is space, just append the device */ - if (len < discdevs->capacity) { - discdevs->devices[len] = libusb_ref_device(dev); - discdevs->len++; - return discdevs; - } - - /* exceeded capacity, need to grow */ - usbi_dbg("need to increase capacity"); - capacity = discdevs->capacity + DISCOVERED_DEVICES_SIZE_STEP; - /* can't use usbi_reallocf here because in failure cases it would - * free the existing discdevs without unreferencing its devices. */ - new_discdevs = realloc(discdevs, - sizeof(*discdevs) + (sizeof(void *) * capacity)); - if (!new_discdevs) { - discovered_devs_free(discdevs); - return NULL; - } - - discdevs = new_discdevs; - discdevs->capacity = capacity; - discdevs->devices[len] = libusb_ref_device(dev); - discdevs->len++; - - return discdevs; -} - -/* Allocate a new device with a specific session ID. The returned device has - * a reference count of 1. */ -struct libusb_device *usbi_alloc_device(struct libusb_context *ctx, - unsigned long session_id) -{ - size_t priv_size = usbi_backend.device_priv_size; - struct libusb_device *dev = calloc(1, sizeof(*dev) + priv_size); - int r; - - if (!dev) - return NULL; - - r = usbi_mutex_init(&dev->lock); - if (r) { - free(dev); - return NULL; - } - - dev->ctx = ctx; - dev->refcnt = 1; - dev->session_data = session_id; - dev->speed = LIBUSB_SPEED_UNKNOWN; - - if (!libusb_has_capability(LIBUSB_CAP_HAS_HOTPLUG)) { - usbi_connect_device (dev); - } - - return dev; -} - -void usbi_connect_device(struct libusb_device *dev) -{ - struct libusb_context *ctx = DEVICE_CTX(dev); - - dev->attached = 1; - - usbi_mutex_lock(&dev->ctx->usb_devs_lock); - list_add(&dev->list, &dev->ctx->usb_devs); - usbi_mutex_unlock(&dev->ctx->usb_devs_lock); - - /* Signal that an event has occurred for this device if we support hotplug AND - * the hotplug message list is ready. This prevents an event from getting raised - * during initial enumeration. */ - if (libusb_has_capability(LIBUSB_CAP_HAS_HOTPLUG) && dev->ctx->hotplug_msgs.next) { - usbi_hotplug_notification(ctx, dev, LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED); - } -} - -void usbi_disconnect_device(struct libusb_device *dev) -{ - struct libusb_context *ctx = DEVICE_CTX(dev); - - usbi_mutex_lock(&dev->lock); - dev->attached = 0; - usbi_mutex_unlock(&dev->lock); - - usbi_mutex_lock(&ctx->usb_devs_lock); - list_del(&dev->list); - usbi_mutex_unlock(&ctx->usb_devs_lock); - - /* Signal that an event has occurred for this device if we support hotplug AND - * the hotplug message list is ready. This prevents an event from getting raised - * during initial enumeration. libusb_handle_events will take care of dereferencing - * the device. */ - if (libusb_has_capability(LIBUSB_CAP_HAS_HOTPLUG) && dev->ctx->hotplug_msgs.next) { - usbi_hotplug_notification(ctx, dev, LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT); - } -} - -/* Perform some final sanity checks on a newly discovered device. If this - * function fails (negative return code), the device should not be added - * to the discovered device list. */ -int usbi_sanitize_device(struct libusb_device *dev) -{ - int r; - uint8_t num_configurations; - - r = usbi_device_cache_descriptor(dev); - if (r < 0) - return r; - - num_configurations = dev->device_descriptor.bNumConfigurations; - if (num_configurations > USB_MAXCONFIG) { - usbi_err(DEVICE_CTX(dev), "too many configurations"); - return LIBUSB_ERROR_IO; - } else if (0 == num_configurations) - usbi_dbg("zero configurations, maybe an unauthorized device"); - - dev->num_configurations = num_configurations; - return 0; -} - -/* Examine libusb's internal list of known devices, looking for one with - * a specific session ID. Returns the matching device if it was found, and - * NULL otherwise. */ -struct libusb_device *usbi_get_device_by_session_id(struct libusb_context *ctx, - unsigned long session_id) -{ - struct libusb_device *dev; - struct libusb_device *ret = NULL; - - usbi_mutex_lock(&ctx->usb_devs_lock); - list_for_each_entry(dev, &ctx->usb_devs, list, struct libusb_device) - if (dev->session_data == session_id) { - ret = libusb_ref_device(dev); - break; - } - usbi_mutex_unlock(&ctx->usb_devs_lock); - - return ret; -} - -/** @ingroup libusb_dev - * Returns a list of USB devices currently attached to the system. This is - * your entry point into finding a USB device to operate. - * - * You are expected to unreference all the devices when you are done with - * them, and then free the list with libusb_free_device_list(). Note that - * libusb_free_device_list() can unref all the devices for you. Be careful - * not to unreference a device you are about to open until after you have - * opened it. - * - * This return value of this function indicates the number of devices in - * the resultant list. The list is actually one element larger, as it is - * NULL-terminated. - * - * \param ctx the context to operate on, or NULL for the default context - * \param list output location for a list of devices. Must be later freed with - * libusb_free_device_list(). - * \returns the number of devices in the outputted list, or any - * \ref libusb_error according to errors encountered by the backend. - */ -ssize_t API_EXPORTED libusb_get_device_list(libusb_context *ctx, - libusb_device ***list) -{ - struct discovered_devs *discdevs = discovered_devs_alloc(); - struct libusb_device **ret; - int r = 0; - ssize_t i, len; - USBI_GET_CONTEXT(ctx); - usbi_dbg(""); - - if (!discdevs) - return LIBUSB_ERROR_NO_MEM; - - if (libusb_has_capability(LIBUSB_CAP_HAS_HOTPLUG)) { - /* backend provides hotplug support */ - struct libusb_device *dev; - - if (usbi_backend.hotplug_poll) - usbi_backend.hotplug_poll(); - - usbi_mutex_lock(&ctx->usb_devs_lock); - list_for_each_entry(dev, &ctx->usb_devs, list, struct libusb_device) { - discdevs = discovered_devs_append(discdevs, dev); - - if (!discdevs) { - r = LIBUSB_ERROR_NO_MEM; - break; - } - } - usbi_mutex_unlock(&ctx->usb_devs_lock); - } else { - /* backend does not provide hotplug support */ - r = usbi_backend.get_device_list(ctx, &discdevs); - } - - if (r < 0) { - len = r; - goto out; - } - - /* convert discovered_devs into a list */ - len = (ssize_t)discdevs->len; - ret = calloc((size_t)len + 1, sizeof(struct libusb_device *)); - if (!ret) { - len = LIBUSB_ERROR_NO_MEM; - goto out; - } - - ret[len] = NULL; - for (i = 0; i < len; i++) { - struct libusb_device *dev = discdevs->devices[i]; - ret[i] = libusb_ref_device(dev); - } - *list = ret; - -out: - if (discdevs) - discovered_devs_free(discdevs); - return len; -} - -/** \ingroup libusb_dev - * Frees a list of devices previously discovered using - * libusb_get_device_list(). If the unref_devices parameter is set, the - * reference count of each device in the list is decremented by 1. - * \param list the list to free - * \param unref_devices whether to unref the devices in the list - */ -void API_EXPORTED libusb_free_device_list(libusb_device **list, - int unref_devices) -{ - if (!list) - return; - - if (unref_devices) { - int i = 0; - struct libusb_device *dev; - - while ((dev = list[i++]) != NULL) - libusb_unref_device(dev); - } - free(list); -} - -/** \ingroup libusb_dev - * Get the number of the bus that a device is connected to. - * \param dev a device - * \returns the bus number - */ -uint8_t API_EXPORTED libusb_get_bus_number(libusb_device *dev) -{ - return dev->bus_number; -} - -/** \ingroup libusb_dev - * Get the number of the port that a device is connected to. - * Unless the OS does something funky, or you are hot-plugging USB extension cards, - * the port number returned by this call is usually guaranteed to be uniquely tied - * to a physical port, meaning that different devices plugged on the same physical - * port should return the same port number. - * - * But outside of this, there is no guarantee that the port number returned by this - * call will remain the same, or even match the order in which ports have been - * numbered by the HUB/HCD manufacturer. - * - * \param dev a device - * \returns the port number (0 if not available) - */ -uint8_t API_EXPORTED libusb_get_port_number(libusb_device *dev) -{ - return dev->port_number; -} - -/** \ingroup libusb_dev - * Get the list of all port numbers from root for the specified device - * - * Since version 1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102 - * \param dev a device - * \param port_numbers the array that should contain the port numbers - * \param port_numbers_len the maximum length of the array. As per the USB 3.0 - * specs, the current maximum limit for the depth is 7. - * \returns the number of elements filled - * \returns LIBUSB_ERROR_OVERFLOW if the array is too small - */ -int API_EXPORTED libusb_get_port_numbers(libusb_device *dev, - uint8_t* port_numbers, int port_numbers_len) -{ - int i = port_numbers_len; - struct libusb_context *ctx = DEVICE_CTX(dev); - - if (port_numbers_len <= 0) - return LIBUSB_ERROR_INVALID_PARAM; - - // HCDs can be listed as devices with port #0 - while((dev) && (dev->port_number != 0)) { - if (--i < 0) { - usbi_warn(ctx, "port numbers array is too small"); - return LIBUSB_ERROR_OVERFLOW; - } - port_numbers[i] = dev->port_number; - dev = dev->parent_dev; - } - if (i < port_numbers_len) - memmove(port_numbers, &port_numbers[i], port_numbers_len - i); - return port_numbers_len - i; -} - -/** \ingroup libusb_dev - * Deprecated please use libusb_get_port_numbers instead. - */ -int API_EXPORTED libusb_get_port_path(libusb_context *ctx, libusb_device *dev, - uint8_t* port_numbers, uint8_t port_numbers_len) -{ - UNUSED(ctx); - - return libusb_get_port_numbers(dev, port_numbers, port_numbers_len); -} - -/** \ingroup libusb_dev - * Get the the parent from the specified device. - * \param dev a device - * \returns the device parent or NULL if not available - * You should issue a \ref libusb_get_device_list() before calling this - * function and make sure that you only access the parent before issuing - * \ref libusb_free_device_list(). The reason is that libusb currently does - * not maintain a permanent list of device instances, and therefore can - * only guarantee that parents are fully instantiated within a - * libusb_get_device_list() - libusb_free_device_list() block. - */ -DEFAULT_VISIBILITY -libusb_device * LIBUSB_CALL libusb_get_parent(libusb_device *dev) -{ - return dev->parent_dev; -} - -/** \ingroup libusb_dev - * Get the address of the device on the bus it is connected to. - * \param dev a device - * \returns the device address - */ -uint8_t API_EXPORTED libusb_get_device_address(libusb_device *dev) -{ - return dev->device_address; -} - -/** \ingroup libusb_dev - * Get the negotiated connection speed for a device. - * \param dev a device - * \returns a \ref libusb_speed code, where LIBUSB_SPEED_UNKNOWN means that - * the OS doesn't know or doesn't support returning the negotiated speed. - */ -int API_EXPORTED libusb_get_device_speed(libusb_device *dev) -{ - return dev->speed; -} - -static const struct libusb_endpoint_descriptor *find_endpoint( - struct libusb_config_descriptor *config, unsigned char endpoint) -{ - int iface_idx; - for (iface_idx = 0; iface_idx < config->bNumInterfaces; iface_idx++) { - const struct libusb_interface *iface = &config->interface[iface_idx]; - int altsetting_idx; - - for (altsetting_idx = 0; altsetting_idx < iface->num_altsetting; - altsetting_idx++) { - const struct libusb_interface_descriptor *altsetting - = &iface->altsetting[altsetting_idx]; - int ep_idx; - - for (ep_idx = 0; ep_idx < altsetting->bNumEndpoints; ep_idx++) { - const struct libusb_endpoint_descriptor *ep = - &altsetting->endpoint[ep_idx]; - if (ep->bEndpointAddress == endpoint) - return ep; - } - } - } - return NULL; -} - -/** \ingroup libusb_dev - * Convenience function to retrieve the wMaxPacketSize value for a particular - * endpoint in the active device configuration. - * - * This function was originally intended to be of assistance when setting up - * isochronous transfers, but a design mistake resulted in this function - * instead. It simply returns the wMaxPacketSize value without considering - * its contents. If you're dealing with isochronous transfers, you probably - * want libusb_get_max_iso_packet_size() instead. - * - * \param dev a device - * \param endpoint address of the endpoint in question - * \returns the wMaxPacketSize value - * \returns LIBUSB_ERROR_NOT_FOUND if the endpoint does not exist - * \returns LIBUSB_ERROR_OTHER on other failure - */ -int API_EXPORTED libusb_get_max_packet_size(libusb_device *dev, - unsigned char endpoint) -{ - struct libusb_config_descriptor *config; - const struct libusb_endpoint_descriptor *ep; - int r; - - r = libusb_get_active_config_descriptor(dev, &config); - if (r < 0) { - usbi_err(DEVICE_CTX(dev), - "could not retrieve active config descriptor"); - return LIBUSB_ERROR_OTHER; - } - - ep = find_endpoint(config, endpoint); - if (!ep) { - r = LIBUSB_ERROR_NOT_FOUND; - goto out; - } - - r = ep->wMaxPacketSize; - -out: - libusb_free_config_descriptor(config); - return r; -} - -/** \ingroup libusb_dev - * Calculate the maximum packet size which a specific endpoint is capable is - * sending or receiving in the duration of 1 microframe - * - * Only the active configuration is examined. The calculation is based on the - * wMaxPacketSize field in the endpoint descriptor as described in section - * 9.6.6 in the USB 2.0 specifications. - * - * If acting on an isochronous or interrupt endpoint, this function will - * multiply the value found in bits 0:10 by the number of transactions per - * microframe (determined by bits 11:12). Otherwise, this function just - * returns the numeric value found in bits 0:10. For USB 3.0 device, it - * will attempts to retrieve the Endpoint Companion Descriptor to return - * wBytesPerInterval. - * - * This function is useful for setting up isochronous transfers, for example - * you might pass the return value from this function to - * libusb_set_iso_packet_lengths() in order to set the length field of every - * isochronous packet in a transfer. - * - * Since v1.0.3. - * - * \param dev a device - * \param endpoint address of the endpoint in question - * \returns the maximum packet size which can be sent/received on this endpoint - * \returns LIBUSB_ERROR_NOT_FOUND if the endpoint does not exist - * \returns LIBUSB_ERROR_OTHER on other failure - */ -int API_EXPORTED libusb_get_max_iso_packet_size(libusb_device *dev, - unsigned char endpoint) -{ - struct libusb_config_descriptor *config; - const struct libusb_endpoint_descriptor *ep; - struct libusb_ss_endpoint_companion_descriptor *ss_ep_cmp; - enum libusb_transfer_type ep_type; - uint16_t val; - int r; - int speed; - - r = libusb_get_active_config_descriptor(dev, &config); - if (r < 0) { - usbi_err(DEVICE_CTX(dev), - "could not retrieve active config descriptor"); - return LIBUSB_ERROR_OTHER; - } - - ep = find_endpoint(config, endpoint); - if (!ep) { - r = LIBUSB_ERROR_NOT_FOUND; - goto out; - } - - speed = libusb_get_device_speed( dev ); - if (speed == LIBUSB_SPEED_SUPER) { - r = libusb_get_ss_endpoint_companion_descriptor(dev->ctx, ep, &ss_ep_cmp); - if (r == LIBUSB_SUCCESS) { - r = ss_ep_cmp->wBytesPerInterval; - libusb_free_ss_endpoint_companion_descriptor(ss_ep_cmp); - } - } - - /* If the device isn't a SuperSpeed device or retrieving the SS endpoint didn't worked. */ - if (speed != LIBUSB_SPEED_SUPER || r < 0) { - val = ep->wMaxPacketSize; - ep_type = (enum libusb_transfer_type) (ep->bmAttributes & 0x3); - - r = val & 0x07ff; - if (ep_type == LIBUSB_TRANSFER_TYPE_ISOCHRONOUS - || ep_type == LIBUSB_TRANSFER_TYPE_INTERRUPT) - r *= (1 + ((val >> 11) & 3)); - } - -out: - libusb_free_config_descriptor(config); - return r; -} - -/** \ingroup libusb_dev - * Increment the reference count of a device. - * \param dev the device to reference - * \returns the same device - */ -DEFAULT_VISIBILITY -libusb_device * LIBUSB_CALL libusb_ref_device(libusb_device *dev) -{ - usbi_mutex_lock(&dev->lock); - dev->refcnt++; - usbi_mutex_unlock(&dev->lock); - return dev; -} - -/** \ingroup libusb_dev - * Decrement the reference count of a device. If the decrement operation - * causes the reference count to reach zero, the device shall be destroyed. - * \param dev the device to unreference - */ -void API_EXPORTED libusb_unref_device(libusb_device *dev) -{ - int refcnt; - - if (!dev) - return; - - usbi_mutex_lock(&dev->lock); - refcnt = --dev->refcnt; - usbi_mutex_unlock(&dev->lock); - - if (refcnt == 0) { - usbi_dbg("destroy device %d.%d", dev->bus_number, dev->device_address); - - libusb_unref_device(dev->parent_dev); - - if (usbi_backend.destroy_device) - usbi_backend.destroy_device(dev); - - if (!libusb_has_capability(LIBUSB_CAP_HAS_HOTPLUG)) { - /* backend does not support hotplug */ - usbi_disconnect_device(dev); - } - - usbi_mutex_destroy(&dev->lock); - free(dev); - } -} - -/* - * Signal the event pipe so that the event handling thread will be - * interrupted to process an internal event. - */ -int usbi_signal_event(struct libusb_context *ctx) -{ - unsigned char dummy = 1; - ssize_t r; - - /* write some data on event pipe to interrupt event handlers */ - r = usbi_write(ctx->event_pipe[1], &dummy, sizeof(dummy)); - if (r != sizeof(dummy)) { - usbi_warn(ctx, "internal signalling write failed"); - return LIBUSB_ERROR_IO; - } - - return 0; -} - -/* - * Clear the event pipe so that the event handling will no longer be - * interrupted. - */ -int usbi_clear_event(struct libusb_context *ctx) -{ - unsigned char dummy; - ssize_t r; - - /* read some data on event pipe to clear it */ - r = usbi_read(ctx->event_pipe[0], &dummy, sizeof(dummy)); - if (r != sizeof(dummy)) { - usbi_warn(ctx, "internal signalling read failed"); - return LIBUSB_ERROR_IO; - } - - return 0; -} - -/** \ingroup libusb_dev - * Wrap a platform-specific system device handle and obtain a libusb device - * handle for the underlying device. The handle allows you to use libusb to - * perform I/O on the device in question. - * - * On Linux, the system device handle must be a valid file descriptor opened - * on the device node. - * - * The system device handle must remain open until libusb_close() is called. - * The system device handle will not be closed by libusb_close(). - * - * Internally, this function creates a temporary device and makes it - * available to you through libusb_get_device(). This device is destroyed - * during libusb_close(). The device shall not be opened through libusb_open(). - * - * This is a non-blocking function; no requests are sent over the bus. - * - * \param ctx the context to operate on, or NULL for the default context - * \param sys_dev the platform-specific system device handle - * \param dev_handle output location for the returned device handle pointer. Only - * populated when the return code is 0. - * \returns 0 on success - * \returns LIBUSB_ERROR_NO_MEM on memory allocation failure - * \returns LIBUSB_ERROR_ACCESS if the user has insufficient permissions - * \returns LIBUSB_ERROR_NOT_SUPPORTED if the operation is not supported on this - * platform - * \returns another LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_wrap_sys_device(libusb_context *ctx, intptr_t sys_dev, - libusb_device_handle **dev_handle) -{ - struct libusb_device_handle *_dev_handle; - size_t priv_size = usbi_backend.device_handle_priv_size; - int r; - usbi_dbg("wrap_sys_device %p", (void *)sys_dev); - - USBI_GET_CONTEXT(ctx); - - if (!usbi_backend.wrap_sys_device) - return LIBUSB_ERROR_NOT_SUPPORTED; - - _dev_handle = malloc(sizeof(*_dev_handle) + priv_size); - if (!_dev_handle) - return LIBUSB_ERROR_NO_MEM; - - r = usbi_mutex_init(&_dev_handle->lock); - if (r) { - free(_dev_handle); - return LIBUSB_ERROR_OTHER; - } - - _dev_handle->dev = NULL; - _dev_handle->auto_detach_kernel_driver = 0; - _dev_handle->claimed_interfaces = 0; - memset(&_dev_handle->os_priv, 0, priv_size); - - r = usbi_backend.wrap_sys_device(ctx, _dev_handle, sys_dev); - if (r < 0) { - usbi_dbg("wrap_sys_device %p returns %d", (void *)sys_dev, r); - usbi_mutex_destroy(&_dev_handle->lock); - free(_dev_handle); - return r; - } - - usbi_mutex_lock(&ctx->open_devs_lock); - list_add(&_dev_handle->list, &ctx->open_devs); - usbi_mutex_unlock(&ctx->open_devs_lock); - *dev_handle = _dev_handle; - - return 0; -} - -/** \ingroup libusb_dev - * Open a device and obtain a device handle. A handle allows you to perform - * I/O on the device in question. - * - * Internally, this function adds a reference to the device and makes it - * available to you through libusb_get_device(). This reference is removed - * during libusb_close(). - * - * This is a non-blocking function; no requests are sent over the bus. - * - * \param dev the device to open - * \param dev_handle output location for the returned device handle pointer. Only - * populated when the return code is 0. - * \returns 0 on success - * \returns LIBUSB_ERROR_NO_MEM on memory allocation failure - * \returns LIBUSB_ERROR_ACCESS if the user has insufficient permissions - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns another LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_open(libusb_device *dev, - libusb_device_handle **dev_handle) -{ - struct libusb_context *ctx = DEVICE_CTX(dev); - struct libusb_device_handle *_dev_handle; - size_t priv_size = usbi_backend.device_handle_priv_size; - int r; - usbi_dbg("open %d.%d", dev->bus_number, dev->device_address); - - if (!dev->attached) { - return LIBUSB_ERROR_NO_DEVICE; - } - - _dev_handle = malloc(sizeof(*_dev_handle) + priv_size); - if (!_dev_handle) - return LIBUSB_ERROR_NO_MEM; - - r = usbi_mutex_init(&_dev_handle->lock); - if (r) { - free(_dev_handle); - return LIBUSB_ERROR_OTHER; - } - - _dev_handle->dev = libusb_ref_device(dev); - _dev_handle->auto_detach_kernel_driver = 0; - _dev_handle->claimed_interfaces = 0; - memset(&_dev_handle->os_priv, 0, priv_size); - - r = usbi_backend.open(_dev_handle); - if (r < 0) { - usbi_dbg("open %d.%d returns %d", dev->bus_number, dev->device_address, r); - libusb_unref_device(dev); - usbi_mutex_destroy(&_dev_handle->lock); - free(_dev_handle); - return r; - } - - usbi_mutex_lock(&ctx->open_devs_lock); - list_add(&_dev_handle->list, &ctx->open_devs); - usbi_mutex_unlock(&ctx->open_devs_lock); - *dev_handle = _dev_handle; - - return 0; -} - -/** \ingroup libusb_dev - * Convenience function for finding a device with a particular - * idVendor/idProduct combination. This function is intended - * for those scenarios where you are using libusb to knock up a quick test - * application - it allows you to avoid calling libusb_get_device_list() and - * worrying about traversing/freeing the list. - * - * This function has limitations and is hence not intended for use in real - * applications: if multiple devices have the same IDs it will only - * give you the first one, etc. - * - * \param ctx the context to operate on, or NULL for the default context - * \param vendor_id the idVendor value to search for - * \param product_id the idProduct value to search for - * \returns a device handle for the first found device, or NULL on error - * or if the device could not be found. */ -DEFAULT_VISIBILITY -libusb_device_handle * LIBUSB_CALL libusb_open_device_with_vid_pid( - libusb_context *ctx, uint16_t vendor_id, uint16_t product_id) -{ - struct libusb_device **devs; - struct libusb_device *found = NULL; - struct libusb_device *dev; - struct libusb_device_handle *dev_handle = NULL; - size_t i = 0; - int r; - - if (libusb_get_device_list(ctx, &devs) < 0) - return NULL; - - while ((dev = devs[i++]) != NULL) { - struct libusb_device_descriptor desc; - r = libusb_get_device_descriptor(dev, &desc); - if (r < 0) - goto out; - if (desc.idVendor == vendor_id && desc.idProduct == product_id) { - found = dev; - break; - } - } - - if (found) { - r = libusb_open(found, &dev_handle); - if (r < 0) - dev_handle = NULL; - } - -out: - libusb_free_device_list(devs, 1); - return dev_handle; -} - -static void do_close(struct libusb_context *ctx, - struct libusb_device_handle *dev_handle) -{ - struct usbi_transfer *itransfer; - struct usbi_transfer *tmp; - - /* remove any transfers in flight that are for this device */ - usbi_mutex_lock(&ctx->flying_transfers_lock); - - /* safe iteration because transfers may be being deleted */ - list_for_each_entry_safe(itransfer, tmp, &ctx->flying_transfers, list, struct usbi_transfer) { - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - if (transfer->dev_handle != dev_handle) - continue; - - usbi_mutex_lock(&itransfer->lock); - if (!(itransfer->state_flags & USBI_TRANSFER_DEVICE_DISAPPEARED)) { - usbi_err(ctx, "Device handle closed while transfer was still being processed, but the device is still connected as far as we know"); - - if (itransfer->state_flags & USBI_TRANSFER_CANCELLING) - usbi_warn(ctx, "A cancellation for an in-flight transfer hasn't completed but closing the device handle"); - else - usbi_err(ctx, "A cancellation hasn't even been scheduled on the transfer for which the device is closing"); - } - usbi_mutex_unlock(&itransfer->lock); - - /* remove from the list of in-flight transfers and make sure - * we don't accidentally use the device handle in the future - * (or that such accesses will be easily caught and identified as a crash) - */ - list_del(&itransfer->list); - transfer->dev_handle = NULL; - - /* it is up to the user to free up the actual transfer struct. this is - * just making sure that we don't attempt to process the transfer after - * the device handle is invalid - */ - usbi_dbg("Removed transfer %p from the in-flight list because device handle %p closed", - transfer, dev_handle); - } - usbi_mutex_unlock(&ctx->flying_transfers_lock); - - usbi_mutex_lock(&ctx->open_devs_lock); - list_del(&dev_handle->list); - usbi_mutex_unlock(&ctx->open_devs_lock); - - usbi_backend.close(dev_handle); - libusb_unref_device(dev_handle->dev); - usbi_mutex_destroy(&dev_handle->lock); - free(dev_handle); -} - -/** \ingroup libusb_dev - * Close a device handle. Should be called on all open handles before your - * application exits. - * - * Internally, this function destroys the reference that was added by - * libusb_open() on the given device. - * - * This is a non-blocking function; no requests are sent over the bus. - * - * \param dev_handle the device handle to close - */ -void API_EXPORTED libusb_close(libusb_device_handle *dev_handle) -{ - struct libusb_context *ctx; - int handling_events; - int pending_events; - - if (!dev_handle) - return; - usbi_dbg(""); - - ctx = HANDLE_CTX(dev_handle); - handling_events = usbi_handling_events(ctx); - - /* Similarly to libusb_open(), we want to interrupt all event handlers - * at this point. More importantly, we want to perform the actual close of - * the device while holding the event handling lock (preventing any other - * thread from doing event handling) because we will be removing a file - * descriptor from the polling loop. If this is being called by the current - * event handler, we can bypass the interruption code because we already - * hold the event handling lock. */ - - if (!handling_events) { - /* Record that we are closing a device. - * Only signal an event if there are no prior pending events. */ - usbi_mutex_lock(&ctx->event_data_lock); - pending_events = usbi_pending_events(ctx); - ctx->device_close++; - if (!pending_events) - usbi_signal_event(ctx); - usbi_mutex_unlock(&ctx->event_data_lock); - - /* take event handling lock */ - libusb_lock_events(ctx); - } - - /* Close the device */ - do_close(ctx, dev_handle); - - if (!handling_events) { - /* We're done with closing this device. - * Clear the event pipe if there are no further pending events. */ - usbi_mutex_lock(&ctx->event_data_lock); - ctx->device_close--; - pending_events = usbi_pending_events(ctx); - if (!pending_events) - usbi_clear_event(ctx); - usbi_mutex_unlock(&ctx->event_data_lock); - - /* Release event handling lock and wake up event waiters */ - libusb_unlock_events(ctx); - } -} - -/** \ingroup libusb_dev - * Get the underlying device for a device handle. This function does not modify - * the reference count of the returned device, so do not feel compelled to - * unreference it when you are done. - * \param dev_handle a device handle - * \returns the underlying device - */ -DEFAULT_VISIBILITY -libusb_device * LIBUSB_CALL libusb_get_device(libusb_device_handle *dev_handle) -{ - return dev_handle->dev; -} - -/** \ingroup libusb_dev - * Determine the bConfigurationValue of the currently active configuration. - * - * You could formulate your own control request to obtain this information, - * but this function has the advantage that it may be able to retrieve the - * information from operating system caches (no I/O involved). - * - * If the OS does not cache this information, then this function will block - * while a control transfer is submitted to retrieve the information. - * - * This function will return a value of 0 in the config output - * parameter if the device is in unconfigured state. - * - * \param dev_handle a device handle - * \param config output location for the bConfigurationValue of the active - * configuration (only valid for return code 0) - * \returns 0 on success - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns another LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_get_configuration(libusb_device_handle *dev_handle, - int *config) -{ - int r = LIBUSB_ERROR_NOT_SUPPORTED; - - usbi_dbg(""); - if (usbi_backend.get_configuration) - r = usbi_backend.get_configuration(dev_handle, config); - - if (r == LIBUSB_ERROR_NOT_SUPPORTED) { - uint8_t tmp = 0; - usbi_dbg("falling back to control message"); - r = libusb_control_transfer(dev_handle, LIBUSB_ENDPOINT_IN, - LIBUSB_REQUEST_GET_CONFIGURATION, 0, 0, &tmp, 1, 1000); - if (r == 0) { - usbi_err(HANDLE_CTX(dev_handle), "zero bytes returned in ctrl transfer?"); - r = LIBUSB_ERROR_IO; - } else if (r == 1) { - r = 0; - *config = tmp; - } else { - usbi_dbg("control failed, error %d", r); - } - } - - if (r == 0) - usbi_dbg("active config %d", *config); - - return r; -} - -/** \ingroup libusb_dev - * Set the active configuration for a device. - * - * The operating system may or may not have already set an active - * configuration on the device. It is up to your application to ensure the - * correct configuration is selected before you attempt to claim interfaces - * and perform other operations. - * - * If you call this function on a device already configured with the selected - * configuration, then this function will act as a lightweight device reset: - * it will issue a SET_CONFIGURATION request using the current configuration, - * causing most USB-related device state to be reset (altsetting reset to zero, - * endpoint halts cleared, toggles reset). - * - * You cannot change/reset configuration if your application has claimed - * interfaces. It is advised to set the desired configuration before claiming - * interfaces. - * - * Alternatively you can call libusb_release_interface() first. Note if you - * do things this way you must ensure that auto_detach_kernel_driver for - * dev is 0, otherwise the kernel driver will be re-attached when you - * release the interface(s). - * - * You cannot change/reset configuration if other applications or drivers have - * claimed interfaces. - * - * A configuration value of -1 will put the device in unconfigured state. - * The USB specifications state that a configuration value of 0 does this, - * however buggy devices exist which actually have a configuration 0. - * - * You should always use this function rather than formulating your own - * SET_CONFIGURATION control request. This is because the underlying operating - * system needs to know when such changes happen. - * - * This is a blocking function. - * - * \param dev_handle a device handle - * \param configuration the bConfigurationValue of the configuration you - * wish to activate, or -1 if you wish to put the device in an unconfigured - * state - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the requested configuration does not exist - * \returns LIBUSB_ERROR_BUSY if interfaces are currently claimed - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns another LIBUSB_ERROR code on other failure - * \see libusb_set_auto_detach_kernel_driver() - */ -int API_EXPORTED libusb_set_configuration(libusb_device_handle *dev_handle, - int configuration) -{ - usbi_dbg("configuration %d", configuration); - return usbi_backend.set_configuration(dev_handle, configuration); -} - -/** \ingroup libusb_dev - * Claim an interface on a given device handle. You must claim the interface - * you wish to use before you can perform I/O on any of its endpoints. - * - * It is legal to attempt to claim an already-claimed interface, in which - * case libusb just returns 0 without doing anything. - * - * If auto_detach_kernel_driver is set to 1 for dev, the kernel driver - * will be detached if necessary, on failure the detach error is returned. - * - * Claiming of interfaces is a purely logical operation; it does not cause - * any requests to be sent over the bus. Interface claiming is used to - * instruct the underlying operating system that your application wishes - * to take ownership of the interface. - * - * This is a non-blocking function. - * - * \param dev_handle a device handle - * \param interface_number the bInterfaceNumber of the interface you - * wish to claim - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the requested interface does not exist - * \returns LIBUSB_ERROR_BUSY if another program or driver has claimed the - * interface - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns a LIBUSB_ERROR code on other failure - * \see libusb_set_auto_detach_kernel_driver() - */ -int API_EXPORTED libusb_claim_interface(libusb_device_handle *dev_handle, - int interface_number) -{ - int r = 0; - - usbi_dbg("interface %d", interface_number); - if (interface_number >= USB_MAXINTERFACES) - return LIBUSB_ERROR_INVALID_PARAM; - - if (!dev_handle->dev->attached) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_mutex_lock(&dev_handle->lock); - if (dev_handle->claimed_interfaces & (1U << interface_number)) - goto out; - - r = usbi_backend.claim_interface(dev_handle, interface_number); - if (r == 0) - dev_handle->claimed_interfaces |= 1U << interface_number; - -out: - usbi_mutex_unlock(&dev_handle->lock); - return r; -} - -/** \ingroup libusb_dev - * Release an interface previously claimed with libusb_claim_interface(). You - * should release all claimed interfaces before closing a device handle. - * - * This is a blocking function. A SET_INTERFACE control request will be sent - * to the device, resetting interface state to the first alternate setting. - * - * If auto_detach_kernel_driver is set to 1 for dev, the kernel - * driver will be re-attached after releasing the interface. - * - * \param dev_handle a device handle - * \param interface_number the bInterfaceNumber of the - * previously-claimed interface - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the interface was not claimed - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns another LIBUSB_ERROR code on other failure - * \see libusb_set_auto_detach_kernel_driver() - */ -int API_EXPORTED libusb_release_interface(libusb_device_handle *dev_handle, - int interface_number) -{ - int r; - - usbi_dbg("interface %d", interface_number); - if (interface_number >= USB_MAXINTERFACES) - return LIBUSB_ERROR_INVALID_PARAM; - - usbi_mutex_lock(&dev_handle->lock); - if (!(dev_handle->claimed_interfaces & (1U << interface_number))) { - r = LIBUSB_ERROR_NOT_FOUND; - goto out; - } - - r = usbi_backend.release_interface(dev_handle, interface_number); - if (r == 0) - dev_handle->claimed_interfaces &= ~(1U << interface_number); - -out: - usbi_mutex_unlock(&dev_handle->lock); - return r; -} - -/** \ingroup libusb_dev - * Activate an alternate setting for an interface. The interface must have - * been previously claimed with libusb_claim_interface(). - * - * You should always use this function rather than formulating your own - * SET_INTERFACE control request. This is because the underlying operating - * system needs to know when such changes happen. - * - * This is a blocking function. - * - * \param dev_handle a device handle - * \param interface_number the bInterfaceNumber of the - * previously-claimed interface - * \param alternate_setting the bAlternateSetting of the alternate - * setting to activate - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the interface was not claimed, or the - * requested alternate setting does not exist - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns another LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_set_interface_alt_setting(libusb_device_handle *dev_handle, - int interface_number, int alternate_setting) -{ - usbi_dbg("interface %d altsetting %d", - interface_number, alternate_setting); - if (interface_number >= USB_MAXINTERFACES) - return LIBUSB_ERROR_INVALID_PARAM; - - usbi_mutex_lock(&dev_handle->lock); - if (!dev_handle->dev->attached) { - usbi_mutex_unlock(&dev_handle->lock); - return LIBUSB_ERROR_NO_DEVICE; - } - - if (!(dev_handle->claimed_interfaces & (1U << interface_number))) { - usbi_mutex_unlock(&dev_handle->lock); - return LIBUSB_ERROR_NOT_FOUND; - } - usbi_mutex_unlock(&dev_handle->lock); - - return usbi_backend.set_interface_altsetting(dev_handle, interface_number, - alternate_setting); -} - -/** \ingroup libusb_dev - * Clear the halt/stall condition for an endpoint. Endpoints with halt status - * are unable to receive or transmit data until the halt condition is stalled. - * - * You should cancel all pending transfers before attempting to clear the halt - * condition. - * - * This is a blocking function. - * - * \param dev_handle a device handle - * \param endpoint the endpoint to clear halt status - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the endpoint does not exist - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns another LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_clear_halt(libusb_device_handle *dev_handle, - unsigned char endpoint) -{ - usbi_dbg("endpoint %x", endpoint); - if (!dev_handle->dev->attached) - return LIBUSB_ERROR_NO_DEVICE; - - return usbi_backend.clear_halt(dev_handle, endpoint); -} - -/** \ingroup libusb_dev - * Perform a USB port reset to reinitialize a device. The system will attempt - * to restore the previous configuration and alternate settings after the - * reset has completed. - * - * If the reset fails, the descriptors change, or the previous state cannot be - * restored, the device will appear to be disconnected and reconnected. This - * means that the device handle is no longer valid (you should close it) and - * rediscover the device. A return code of LIBUSB_ERROR_NOT_FOUND indicates - * when this is the case. - * - * This is a blocking function which usually incurs a noticeable delay. - * - * \param dev_handle a handle of the device to reset - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if re-enumeration is required, or if the - * device has been disconnected - * \returns another LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_reset_device(libusb_device_handle *dev_handle) -{ - usbi_dbg(""); - if (!dev_handle->dev->attached) - return LIBUSB_ERROR_NO_DEVICE; - - return usbi_backend.reset_device(dev_handle); -} - -/** \ingroup libusb_asyncio - * Allocate up to num_streams usb bulk streams on the specified endpoints. This - * function takes an array of endpoints rather then a single endpoint because - * some protocols require that endpoints are setup with similar stream ids. - * All endpoints passed in must belong to the same interface. - * - * Note this function may return less streams then requested. Also note that the - * same number of streams are allocated for each endpoint in the endpoint array. - * - * Stream id 0 is reserved, and should not be used to communicate with devices. - * If libusb_alloc_streams() returns with a value of N, you may use stream ids - * 1 to N. - * - * Since version 1.0.19, \ref LIBUSB_API_VERSION >= 0x01000103 - * - * \param dev_handle a device handle - * \param num_streams number of streams to try to allocate - * \param endpoints array of endpoints to allocate streams on - * \param num_endpoints length of the endpoints array - * \returns number of streams allocated, or a LIBUSB_ERROR code on failure - */ -int API_EXPORTED libusb_alloc_streams(libusb_device_handle *dev_handle, - uint32_t num_streams, unsigned char *endpoints, int num_endpoints) -{ - usbi_dbg("streams %u eps %d", (unsigned) num_streams, num_endpoints); - - if (!dev_handle->dev->attached) - return LIBUSB_ERROR_NO_DEVICE; - - if (usbi_backend.alloc_streams) - return usbi_backend.alloc_streams(dev_handle, num_streams, endpoints, - num_endpoints); - else - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -/** \ingroup libusb_asyncio - * Free usb bulk streams allocated with libusb_alloc_streams(). - * - * Note streams are automatically free-ed when releasing an interface. - * - * Since version 1.0.19, \ref LIBUSB_API_VERSION >= 0x01000103 - * - * \param dev_handle a device handle - * \param endpoints array of endpoints to free streams on - * \param num_endpoints length of the endpoints array - * \returns LIBUSB_SUCCESS, or a LIBUSB_ERROR code on failure - */ -int API_EXPORTED libusb_free_streams(libusb_device_handle *dev_handle, - unsigned char *endpoints, int num_endpoints) -{ - usbi_dbg("eps %d", num_endpoints); - - if (!dev_handle->dev->attached) - return LIBUSB_ERROR_NO_DEVICE; - - if (usbi_backend.free_streams) - return usbi_backend.free_streams(dev_handle, endpoints, - num_endpoints); - else - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -/** \ingroup libusb_asyncio - * Attempts to allocate a block of persistent DMA memory suitable for transfers - * against the given device. If successful, will return a block of memory - * that is suitable for use as "buffer" in \ref libusb_transfer against this - * device. Using this memory instead of regular memory means that the host - * controller can use DMA directly into the buffer to increase performance, and - * also that transfers can no longer fail due to kernel memory fragmentation. - * - * Note that this means you should not modify this memory (or even data on - * the same cache lines) when a transfer is in progress, although it is legal - * to have several transfers going on within the same memory block. - * - * Will return NULL on failure. Many systems do not support such zerocopy - * and will always return NULL. Memory allocated with this function must be - * freed with \ref libusb_dev_mem_free. Specifically, this means that the - * flag \ref LIBUSB_TRANSFER_FREE_BUFFER cannot be used to free memory allocated - * with this function. - * - * Since version 1.0.21, \ref LIBUSB_API_VERSION >= 0x01000105 - * - * \param dev_handle a device handle - * \param length size of desired data buffer - * \returns a pointer to the newly allocated memory, or NULL on failure - */ -DEFAULT_VISIBILITY -unsigned char * LIBUSB_CALL libusb_dev_mem_alloc(libusb_device_handle *dev_handle, - size_t length) -{ - if (!dev_handle->dev->attached) - return NULL; - - if (usbi_backend.dev_mem_alloc) - return usbi_backend.dev_mem_alloc(dev_handle, length); - else - return NULL; -} - -/** \ingroup libusb_asyncio - * Free device memory allocated with libusb_dev_mem_alloc(). - * - * \param dev_handle a device handle - * \param buffer pointer to the previously allocated memory - * \param length size of previously allocated memory - * \returns LIBUSB_SUCCESS, or a LIBUSB_ERROR code on failure - */ -int API_EXPORTED libusb_dev_mem_free(libusb_device_handle *dev_handle, - unsigned char *buffer, size_t length) -{ - if (usbi_backend.dev_mem_free) - return usbi_backend.dev_mem_free(dev_handle, buffer, length); - else - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -/** \ingroup libusb_dev - * Determine if a kernel driver is active on an interface. If a kernel driver - * is active, you cannot claim the interface, and libusb will be unable to - * perform I/O. - * - * This functionality is not available on Windows. - * - * \param dev_handle a device handle - * \param interface_number the interface to check - * \returns 0 if no kernel driver is active - * \returns 1 if a kernel driver is active - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns LIBUSB_ERROR_NOT_SUPPORTED on platforms where the functionality - * is not available - * \returns another LIBUSB_ERROR code on other failure - * \see libusb_detach_kernel_driver() - */ -int API_EXPORTED libusb_kernel_driver_active(libusb_device_handle *dev_handle, - int interface_number) -{ - usbi_dbg("interface %d", interface_number); - - if (!dev_handle->dev->attached) - return LIBUSB_ERROR_NO_DEVICE; - - if (usbi_backend.kernel_driver_active) - return usbi_backend.kernel_driver_active(dev_handle, interface_number); - else - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -/** \ingroup libusb_dev - * Detach a kernel driver from an interface. If successful, you will then be - * able to claim the interface and perform I/O. - * - * This functionality is not available on Darwin or Windows. - * - * Note that libusb itself also talks to the device through a special kernel - * driver, if this driver is already attached to the device, this call will - * not detach it and return LIBUSB_ERROR_NOT_FOUND. - * - * \param dev_handle a device handle - * \param interface_number the interface to detach the driver from - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if no kernel driver was active - * \returns LIBUSB_ERROR_INVALID_PARAM if the interface does not exist - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns LIBUSB_ERROR_NOT_SUPPORTED on platforms where the functionality - * is not available - * \returns another LIBUSB_ERROR code on other failure - * \see libusb_kernel_driver_active() - */ -int API_EXPORTED libusb_detach_kernel_driver(libusb_device_handle *dev_handle, - int interface_number) -{ - usbi_dbg("interface %d", interface_number); - - if (!dev_handle->dev->attached) - return LIBUSB_ERROR_NO_DEVICE; - - if (usbi_backend.detach_kernel_driver) - return usbi_backend.detach_kernel_driver(dev_handle, interface_number); - else - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -/** \ingroup libusb_dev - * Re-attach an interface's kernel driver, which was previously detached - * using libusb_detach_kernel_driver(). This call is only effective on - * Linux and returns LIBUSB_ERROR_NOT_SUPPORTED on all other platforms. - * - * This functionality is not available on Darwin or Windows. - * - * \param dev_handle a device handle - * \param interface_number the interface to attach the driver from - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if no kernel driver was active - * \returns LIBUSB_ERROR_INVALID_PARAM if the interface does not exist - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns LIBUSB_ERROR_NOT_SUPPORTED on platforms where the functionality - * is not available - * \returns LIBUSB_ERROR_BUSY if the driver cannot be attached because the - * interface is claimed by a program or driver - * \returns another LIBUSB_ERROR code on other failure - * \see libusb_kernel_driver_active() - */ -int API_EXPORTED libusb_attach_kernel_driver(libusb_device_handle *dev_handle, - int interface_number) -{ - usbi_dbg("interface %d", interface_number); - - if (!dev_handle->dev->attached) - return LIBUSB_ERROR_NO_DEVICE; - - if (usbi_backend.attach_kernel_driver) - return usbi_backend.attach_kernel_driver(dev_handle, interface_number); - else - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -/** \ingroup libusb_dev - * Enable/disable libusb's automatic kernel driver detachment. When this is - * enabled libusb will automatically detach the kernel driver on an interface - * when claiming the interface, and attach it when releasing the interface. - * - * Automatic kernel driver detachment is disabled on newly opened device - * handles by default. - * - * On platforms which do not have LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER - * this function will return LIBUSB_ERROR_NOT_SUPPORTED, and libusb will - * continue as if this function was never called. - * - * \param dev_handle a device handle - * \param enable whether to enable or disable auto kernel driver detachment - * - * \returns LIBUSB_SUCCESS on success - * \returns LIBUSB_ERROR_NOT_SUPPORTED on platforms where the functionality - * is not available - * \see libusb_claim_interface() - * \see libusb_release_interface() - * \see libusb_set_configuration() - */ -int API_EXPORTED libusb_set_auto_detach_kernel_driver( - libusb_device_handle *dev_handle, int enable) -{ - if (!(usbi_backend.caps & USBI_CAP_SUPPORTS_DETACH_KERNEL_DRIVER)) - return LIBUSB_ERROR_NOT_SUPPORTED; - - dev_handle->auto_detach_kernel_driver = enable; - return LIBUSB_SUCCESS; -} - -/** \ingroup libusb_lib - * \deprecated Use libusb_set_option() instead using the - * \ref LIBUSB_OPTION_LOG_LEVEL option. - */ -void API_EXPORTED libusb_set_debug(libusb_context *ctx, int level) -{ -#if defined(ENABLE_LOGGING) && !defined(ENABLE_DEBUG_LOGGING) - USBI_GET_CONTEXT(ctx); - if (!ctx->debug_fixed) { - level = CLAMP(level, LIBUSB_LOG_LEVEL_NONE, LIBUSB_LOG_LEVEL_DEBUG); - ctx->debug = (enum libusb_log_level)level; - } -#else - UNUSED(ctx); - UNUSED(level); -#endif -} - -/** \ingroup libusb_lib - * Set log handler. - * - * libusb will redirect its log messages to the provided callback function. - * libusb supports redirection of per context and global log messages. - * Log messages sent to the context will be sent to the global log handler too. - * - * If libusb is compiled without message logging or USE_SYSTEM_LOGGING_FACILITY - * is defined then global callback function will never be called. - * If ENABLE_DEBUG_LOGGING is defined then per context callback function will - * never be called. - * - * \param ctx context on which to assign log handler, or NULL for the default - * context. Parameter ignored if only LIBUSB_LOG_CB_GLOBAL mode is requested. - * \param cb pointer to the callback function, or NULL to stop log - * messages redirection - * \param mode mode of callback function operation. Several modes can be - * selected for a single callback function, see \ref libusb_log_cb_mode for - * a description. - * \see libusb_log_cb, libusb_log_cb_mode - */ -void API_EXPORTED libusb_set_log_cb(libusb_context *ctx, libusb_log_cb cb, - int mode) -{ -#if !defined(USE_SYSTEM_LOGGING_FACILITY) - if (mode & LIBUSB_LOG_CB_GLOBAL) { - log_handler = cb; - } -#endif -#if defined(ENABLE_LOGGING) && !defined(ENABLE_DEBUG_LOGGING) - if (mode & LIBUSB_LOG_CB_CONTEXT) { - USBI_GET_CONTEXT(ctx); - ctx->log_handler = cb; - } -#else - UNUSED(ctx); -#if defined(USE_SYSTEM_LOGGING_FACILITY) - UNUSED(cb); - UNUSED(mode); -#endif -#endif -} - -/** \ingroup libusb_lib - * Set an option in the library. - * - * Use this function to configure a specific option within the library. - * - * Some options require one or more arguments to be provided. Consult each - * option's documentation for specific requirements. - * - * Since version 1.0.22, \ref LIBUSB_API_VERSION >= 0x01000106 - * - * \param ctx context on which to operate - * \param option which option to set - * \param ... any required arguments for the specified option - * - * \returns LIBUSB_SUCCESS on success - * \returns LIBUSB_ERROR_INVALID_PARAM if the option or arguments are invalid - * \returns LIBUSB_ERROR_NOT_SUPPORTED if the option is valid but not supported - * on this platform - */ -int API_EXPORTED libusb_set_option(libusb_context *ctx, - enum libusb_option option, ...) -{ - int arg, r = LIBUSB_SUCCESS; - va_list ap; - - USBI_GET_CONTEXT(ctx); - - va_start(ap, option); - switch (option) { - case LIBUSB_OPTION_LOG_LEVEL: - arg = va_arg(ap, int); - if (arg < LIBUSB_LOG_LEVEL_NONE || arg > LIBUSB_LOG_LEVEL_DEBUG) { - r = LIBUSB_ERROR_INVALID_PARAM; - break; - } -#if defined(ENABLE_LOGGING) && !defined(ENABLE_DEBUG_LOGGING) - if (!ctx->debug_fixed) - ctx->debug = (enum libusb_log_level)arg; -#endif - break; - - /* Handle all backend-specific options here */ - case LIBUSB_OPTION_USE_USBDK: - if (usbi_backend.set_option) - r = usbi_backend.set_option(ctx, option, ap); - else - r = LIBUSB_ERROR_NOT_SUPPORTED; - break; - - default: - r = LIBUSB_ERROR_INVALID_PARAM; - } - va_end(ap); - - return r; -} - -#if defined(ENABLE_LOGGING) && !defined(ENABLE_DEBUG_LOGGING) -/* returns the log level as defined in the LIBUSB_DEBUG environment variable. - * if LIBUSB_DEBUG is not present or not a number, returns LIBUSB_LOG_LEVEL_NONE. - * value is clamped to ensure it is within the valid range of possibilities. - */ -static enum libusb_log_level get_env_debug_level(void) -{ - const char *dbg = getenv("LIBUSB_DEBUG"); - enum libusb_log_level level; - if (dbg) { - int dbg_level = atoi(dbg); - dbg_level = CLAMP(dbg_level, LIBUSB_LOG_LEVEL_NONE, LIBUSB_LOG_LEVEL_DEBUG); - level = (enum libusb_log_level)dbg_level; - } else { - level = LIBUSB_LOG_LEVEL_NONE; - } - return level; -} -#endif - -/** \ingroup libusb_lib - * Initialize libusb. This function must be called before calling any other - * libusb function. - * - * If you do not provide an output location for a context pointer, a default - * context will be created. If there was already a default context, it will - * be reused (and nothing will be initialized/reinitialized). - * - * \param context Optional output location for context pointer. - * Only valid on return code 0. - * \returns 0 on success, or a LIBUSB_ERROR code on failure - * \see libusb_contexts - */ -int API_EXPORTED libusb_init(libusb_context **context) -{ - struct libusb_device *dev, *next; - size_t priv_size = usbi_backend.context_priv_size; - struct libusb_context *ctx; - static int first_init = 1; - int r = 0; - - usbi_mutex_static_lock(&default_context_lock); - - if (!timestamp_origin.tv_sec) { - usbi_backend.clock_gettime(USBI_CLOCK_REALTIME, ×tamp_origin); - } - - if (!context && usbi_default_context) { - usbi_dbg("reusing default context"); - default_context_refcnt++; - usbi_mutex_static_unlock(&default_context_lock); - return 0; - } - - ctx = calloc(1, sizeof(*ctx) + priv_size); - if (!ctx) { - r = LIBUSB_ERROR_NO_MEM; - goto err_unlock; - } - -#if defined(ENABLE_LOGGING) && !defined(ENABLE_DEBUG_LOGGING) - ctx->debug = get_env_debug_level(); - if (ctx->debug != LIBUSB_LOG_LEVEL_NONE) - ctx->debug_fixed = 1; -#endif - - /* default context should be initialized before calling usbi_dbg */ - if (!usbi_default_context) { - usbi_default_context = ctx; - default_context_refcnt++; - usbi_dbg("created default context"); - } - - usbi_dbg("libusb v%u.%u.%u.%u%s", libusb_version_internal.major, libusb_version_internal.minor, - libusb_version_internal.micro, libusb_version_internal.nano, libusb_version_internal.rc); - - usbi_mutex_init(&ctx->usb_devs_lock); - usbi_mutex_init(&ctx->open_devs_lock); - usbi_mutex_init(&ctx->hotplug_cbs_lock); - list_init(&ctx->usb_devs); - list_init(&ctx->open_devs); - list_init(&ctx->hotplug_cbs); - ctx->next_hotplug_cb_handle = 1; - - usbi_mutex_static_lock(&active_contexts_lock); - if (first_init) { - first_init = 0; - list_init (&active_contexts_list); - } - list_add (&ctx->list, &active_contexts_list); - usbi_mutex_static_unlock(&active_contexts_lock); - - if (usbi_backend.init) { - r = usbi_backend.init(ctx); - if (r) - goto err_free_ctx; - } - - r = usbi_io_init(ctx); - if (r < 0) - goto err_backend_exit; - - usbi_mutex_static_unlock(&default_context_lock); - - if (context) - *context = ctx; - - return 0; - -err_backend_exit: - if (usbi_backend.exit) - usbi_backend.exit(ctx); -err_free_ctx: - if (ctx == usbi_default_context) { - usbi_default_context = NULL; - default_context_refcnt--; - } - - usbi_mutex_static_lock(&active_contexts_lock); - list_del (&ctx->list); - usbi_mutex_static_unlock(&active_contexts_lock); - - usbi_mutex_lock(&ctx->usb_devs_lock); - list_for_each_entry_safe(dev, next, &ctx->usb_devs, list, struct libusb_device) { - list_del(&dev->list); - libusb_unref_device(dev); - } - usbi_mutex_unlock(&ctx->usb_devs_lock); - - usbi_mutex_destroy(&ctx->open_devs_lock); - usbi_mutex_destroy(&ctx->usb_devs_lock); - usbi_mutex_destroy(&ctx->hotplug_cbs_lock); - - free(ctx); -err_unlock: - usbi_mutex_static_unlock(&default_context_lock); - return r; -} - -/** \ingroup libusb_lib - * Deinitialize libusb. Should be called after closing all open devices and - * before your application terminates. - * \param ctx the context to deinitialize, or NULL for the default context - */ -void API_EXPORTED libusb_exit(struct libusb_context *ctx) -{ - struct libusb_device *dev, *next; - struct timeval tv = { 0, 0 }; - int destroying_default_context = 0; - - usbi_dbg(""); - USBI_GET_CONTEXT(ctx); - - /* if working with default context, only actually do the deinitialization - * if we're the last user */ - usbi_mutex_static_lock(&default_context_lock); - if (ctx == usbi_default_context) { - if (--default_context_refcnt > 0) { - usbi_dbg("not destroying default context"); - usbi_mutex_static_unlock(&default_context_lock); - return; - } - usbi_dbg("destroying default context"); - - /* - * Setting this flag without unlocking the default context, as - * we are actually destroying the default context. - * usbi_default_context is not set to NULL yet, as all activities - * would only stop after usbi_backend->exit() returns. - */ - destroying_default_context = 1; - } else { - // Unlock default context, as we're not modifying it. - usbi_mutex_static_unlock(&default_context_lock); - } - - usbi_mutex_static_lock(&active_contexts_lock); - list_del (&ctx->list); - usbi_mutex_static_unlock(&active_contexts_lock); - - if (libusb_has_capability(LIBUSB_CAP_HAS_HOTPLUG)) { - usbi_hotplug_deregister(ctx, 1); - - /* - * Ensure any pending unplug events are read from the hotplug - * pipe. The usb_device-s hold in the events are no longer part - * of usb_devs, but the events still hold a reference! - * - * Note we don't do this if the application has left devices - * open (which implies a buggy app) to avoid packet completion - * handlers running when the app does not expect them to run. - */ - if (list_empty(&ctx->open_devs)) - libusb_handle_events_timeout(ctx, &tv); - - usbi_mutex_lock(&ctx->usb_devs_lock); - list_for_each_entry_safe(dev, next, &ctx->usb_devs, list, struct libusb_device) { - list_del(&dev->list); - libusb_unref_device(dev); - } - usbi_mutex_unlock(&ctx->usb_devs_lock); - } - - /* a few sanity checks. don't bother with locking because unless - * there is an application bug, nobody will be accessing these. */ - if (!list_empty(&ctx->usb_devs)) - usbi_warn(ctx, "some libusb_devices were leaked"); - if (!list_empty(&ctx->open_devs)) - usbi_warn(ctx, "application left some devices open"); - - usbi_io_exit(ctx); - if (usbi_backend.exit) - usbi_backend.exit(ctx); - - usbi_mutex_destroy(&ctx->open_devs_lock); - usbi_mutex_destroy(&ctx->usb_devs_lock); - usbi_mutex_destroy(&ctx->hotplug_cbs_lock); - free(ctx); - - if (destroying_default_context) { - usbi_default_context = NULL; - usbi_mutex_static_unlock(&default_context_lock); - } -} - -/** \ingroup libusb_misc - * Check at runtime if the loaded library has a given capability. - * This call should be performed after \ref libusb_init(), to ensure the - * backend has updated its capability set. - * - * \param capability the \ref libusb_capability to check for - * \returns nonzero if the running library has the capability, 0 otherwise - */ -int API_EXPORTED libusb_has_capability(uint32_t capability) -{ - switch (capability) { - case LIBUSB_CAP_HAS_CAPABILITY: - return 1; - case LIBUSB_CAP_HAS_HOTPLUG: - return !(usbi_backend.get_device_list); - case LIBUSB_CAP_HAS_HID_ACCESS: - return (usbi_backend.caps & USBI_CAP_HAS_HID_ACCESS); - case LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER: - return (usbi_backend.caps & USBI_CAP_SUPPORTS_DETACH_KERNEL_DRIVER); - } - return 0; -} - -#ifdef ENABLE_LOGGING - -/* this is defined in libusbi.h if needed */ -#ifdef LIBUSB_PRINTF_WIN32 -/* - * Prior to VS2015, Microsoft did not provide the snprintf() function and - * provided a vsnprintf() that did not guarantee NULL-terminated output. - * Microsoft did provide a _snprintf() function, but again it did not - * guarantee NULL-terminated output. - * - * The below implementations guarantee NULL-terminated output and are - * C99 compliant. - */ - -int usbi_snprintf(char *str, size_t size, const char *format, ...) -{ - va_list ap; - int ret; - - va_start(ap, format); - ret = usbi_vsnprintf(str, size, format, ap); - va_end(ap); - - return ret; -} - -int usbi_vsnprintf(char *str, size_t size, const char *format, va_list ap) -{ - int ret; - - ret = _vsnprintf(str, size, format, ap); - if (ret < 0 || ret == (int)size) { - /* Output is truncated, ensure buffer is NULL-terminated and - * determine how many characters would have been written. */ - str[size - 1] = '\0'; - if (ret < 0) - ret = _vsnprintf(NULL, 0, format, ap); - } - - return ret; -} -#endif /* LIBUSB_PRINTF_WIN32 */ - -static void usbi_log_str(enum libusb_log_level level, const char *str) -{ -#if defined(USE_SYSTEM_LOGGING_FACILITY) -#if defined(OS_WINDOWS) || defined(OS_WINCE) -#if !defined(UNICODE) - OutputDebugStringA(str); -#else - WCHAR wbuf[USBI_MAX_LOG_LEN]; - if (MultiByteToWideChar(CP_UTF8, 0, str, -1, wbuf, sizeof(wbuf)) != 0) - OutputDebugStringW(wbuf); -#endif -#elif defined(__ANDROID__) - int priority = ANDROID_LOG_UNKNOWN; - switch (level) { - case LIBUSB_LOG_LEVEL_NONE: return; - case LIBUSB_LOG_LEVEL_ERROR: priority = ANDROID_LOG_ERROR; break; - case LIBUSB_LOG_LEVEL_WARNING: priority = ANDROID_LOG_WARN; break; - case LIBUSB_LOG_LEVEL_INFO: priority = ANDROID_LOG_INFO; break; - case LIBUSB_LOG_LEVEL_DEBUG: priority = ANDROID_LOG_DEBUG; break; - } - __android_log_write(priority, "libusb", str); -#elif defined(HAVE_SYSLOG_FUNC) - int syslog_level = LOG_INFO; - switch (level) { - case LIBUSB_LOG_LEVEL_NONE: return; - case LIBUSB_LOG_LEVEL_ERROR: syslog_level = LOG_ERR; break; - case LIBUSB_LOG_LEVEL_WARNING: syslog_level = LOG_WARNING; break; - case LIBUSB_LOG_LEVEL_INFO: syslog_level = LOG_INFO; break; - case LIBUSB_LOG_LEVEL_DEBUG: syslog_level = LOG_DEBUG; break; - } - syslog(syslog_level, "%s", str); -#else /* All of gcc, Clang, Xcode seem to use #warning */ -#warning System logging is not supported on this platform. Logging to stderr will be used instead. - fputs(str, stderr); -#endif -#else - /* Global log handler */ - if (log_handler != NULL) - log_handler(NULL, level, str); - else - fputs(str, stderr); -#endif /* USE_SYSTEM_LOGGING_FACILITY */ - UNUSED(level); -} - -void usbi_log_v(struct libusb_context *ctx, enum libusb_log_level level, - const char *function, const char *format, va_list args) -{ - const char *prefix; - char buf[USBI_MAX_LOG_LEN]; - struct timespec now; - int global_debug, header_len, text_len; - static int has_debug_header_been_displayed = 0; - -#ifdef ENABLE_DEBUG_LOGGING - global_debug = 1; - UNUSED(ctx); -#else - enum libusb_log_level ctx_level = LIBUSB_LOG_LEVEL_NONE; - - USBI_GET_CONTEXT(ctx); - if (ctx) - ctx_level = ctx->debug; - else - ctx_level = get_env_debug_level(); - - if (ctx_level == LIBUSB_LOG_LEVEL_NONE) - return; - if (level == LIBUSB_LOG_LEVEL_WARNING && ctx_level < LIBUSB_LOG_LEVEL_WARNING) - return; - if (level == LIBUSB_LOG_LEVEL_INFO && ctx_level < LIBUSB_LOG_LEVEL_INFO) - return; - if (level == LIBUSB_LOG_LEVEL_DEBUG && ctx_level < LIBUSB_LOG_LEVEL_DEBUG) - return; - - global_debug = (ctx_level == LIBUSB_LOG_LEVEL_DEBUG); -#endif - - usbi_backend.clock_gettime(USBI_CLOCK_REALTIME, &now); - if ((global_debug) && (!has_debug_header_been_displayed)) { - has_debug_header_been_displayed = 1; - usbi_log_str(LIBUSB_LOG_LEVEL_DEBUG, "[timestamp] [threadID] facility level [function call] " USBI_LOG_LINE_END); - usbi_log_str(LIBUSB_LOG_LEVEL_DEBUG, "--------------------------------------------------------------------------------" USBI_LOG_LINE_END); - } - if (now.tv_nsec < timestamp_origin.tv_nsec) { - now.tv_sec--; - now.tv_nsec += 1000000000L; - } - now.tv_sec -= timestamp_origin.tv_sec; - now.tv_nsec -= timestamp_origin.tv_nsec; - - switch (level) { - case LIBUSB_LOG_LEVEL_NONE: - return; - case LIBUSB_LOG_LEVEL_ERROR: - prefix = "error"; - break; - case LIBUSB_LOG_LEVEL_WARNING: - prefix = "warning"; - break; - case LIBUSB_LOG_LEVEL_INFO: - prefix = "info"; - break; - case LIBUSB_LOG_LEVEL_DEBUG: - prefix = "debug"; - break; - default: - prefix = "unknown"; - break; - } - - if (global_debug) { - header_len = snprintf(buf, sizeof(buf), - "[%2ld.%06ld] [%08x] libusb: %s [%s] ", - (long)now.tv_sec, (long)(now.tv_nsec / 1000L), usbi_get_tid(), prefix, function); - } else { - header_len = snprintf(buf, sizeof(buf), - "libusb: %s [%s] ", prefix, function); - } - - if (header_len < 0 || header_len >= (int)sizeof(buf)) { - /* Somehow snprintf failed to write to the buffer, - * remove the header so something useful is output. */ - header_len = 0; - } - /* Make sure buffer is NUL terminated */ - buf[header_len] = '\0'; - text_len = vsnprintf(buf + header_len, sizeof(buf) - (size_t)header_len, - format, args); - if (text_len < 0 || text_len + header_len >= (int)sizeof(buf)) { - /* Truncated log output. On some platforms a -1 return value means - * that the output was truncated. */ - text_len = (int)sizeof(buf) - header_len; - } - if (header_len + text_len + (int)sizeof(USBI_LOG_LINE_END) >= (int)sizeof(buf)) { - /* Need to truncate the text slightly to fit on the terminator. */ - text_len -= (header_len + text_len + (int)sizeof(USBI_LOG_LINE_END)) - (int)sizeof(buf); - } - strcpy(buf + header_len + text_len, USBI_LOG_LINE_END); - - usbi_log_str(level, buf); - - /* Per context log handler */ -#ifndef ENABLE_DEBUG_LOGGING - if (ctx && ctx->log_handler) - ctx->log_handler(ctx, level, buf); -#endif -} - -void usbi_log(struct libusb_context *ctx, enum libusb_log_level level, - const char *function, const char *format, ...) -{ - va_list args; - - va_start (args, format); - usbi_log_v(ctx, level, function, format, args); - va_end (args); -} - -#endif /* ENABLE_LOGGING */ - -/** \ingroup libusb_misc - * Returns a constant NULL-terminated string with the ASCII name of a libusb - * error or transfer status code. The caller must not free() the returned - * string. - * - * \param error_code The \ref libusb_error or libusb_transfer_status code to - * return the name of. - * \returns The error name, or the string **UNKNOWN** if the value of - * error_code is not a known error / status code. - */ -DEFAULT_VISIBILITY const char * LIBUSB_CALL libusb_error_name(int error_code) -{ - switch (error_code) { - case LIBUSB_ERROR_IO: - return "LIBUSB_ERROR_IO"; - case LIBUSB_ERROR_INVALID_PARAM: - return "LIBUSB_ERROR_INVALID_PARAM"; - case LIBUSB_ERROR_ACCESS: - return "LIBUSB_ERROR_ACCESS"; - case LIBUSB_ERROR_NO_DEVICE: - return "LIBUSB_ERROR_NO_DEVICE"; - case LIBUSB_ERROR_NOT_FOUND: - return "LIBUSB_ERROR_NOT_FOUND"; - case LIBUSB_ERROR_BUSY: - return "LIBUSB_ERROR_BUSY"; - case LIBUSB_ERROR_TIMEOUT: - return "LIBUSB_ERROR_TIMEOUT"; - case LIBUSB_ERROR_OVERFLOW: - return "LIBUSB_ERROR_OVERFLOW"; - case LIBUSB_ERROR_PIPE: - return "LIBUSB_ERROR_PIPE"; - case LIBUSB_ERROR_INTERRUPTED: - return "LIBUSB_ERROR_INTERRUPTED"; - case LIBUSB_ERROR_NO_MEM: - return "LIBUSB_ERROR_NO_MEM"; - case LIBUSB_ERROR_NOT_SUPPORTED: - return "LIBUSB_ERROR_NOT_SUPPORTED"; - case LIBUSB_ERROR_OTHER: - return "LIBUSB_ERROR_OTHER"; - - case LIBUSB_TRANSFER_ERROR: - return "LIBUSB_TRANSFER_ERROR"; - case LIBUSB_TRANSFER_TIMED_OUT: - return "LIBUSB_TRANSFER_TIMED_OUT"; - case LIBUSB_TRANSFER_CANCELLED: - return "LIBUSB_TRANSFER_CANCELLED"; - case LIBUSB_TRANSFER_STALL: - return "LIBUSB_TRANSFER_STALL"; - case LIBUSB_TRANSFER_NO_DEVICE: - return "LIBUSB_TRANSFER_NO_DEVICE"; - case LIBUSB_TRANSFER_OVERFLOW: - return "LIBUSB_TRANSFER_OVERFLOW"; - - case 0: - return "LIBUSB_SUCCESS / LIBUSB_TRANSFER_COMPLETED"; - default: - return "**UNKNOWN**"; - } -} - -/** \ingroup libusb_misc - * Returns a pointer to const struct libusb_version with the version - * (major, minor, micro, nano and rc) of the running library. - */ -DEFAULT_VISIBILITY -const struct libusb_version * LIBUSB_CALL libusb_get_version(void) -{ - return &libusb_version_internal; -} diff --git a/Externals/libusb/libusb/descriptor.c b/Externals/libusb/libusb/descriptor.c deleted file mode 100644 index 53905e6eb7c4..000000000000 --- a/Externals/libusb/libusb/descriptor.c +++ /dev/null @@ -1,1193 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode:t ; c-basic-offset:8 -*- */ -/* - * USB descriptor handling functions for libusb - * Copyright © 2007 Daniel Drake - * Copyright © 2001 Johannes Erdfelt - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include -#include -#include - -#include "libusbi.h" - -#define DESC_HEADER_LENGTH 2 -#define DEVICE_DESC_LENGTH 18 -#define CONFIG_DESC_LENGTH 9 -#define INTERFACE_DESC_LENGTH 9 -#define ENDPOINT_DESC_LENGTH 7 -#define ENDPOINT_AUDIO_DESC_LENGTH 9 - -/** @defgroup libusb_desc USB descriptors - * This page details how to examine the various standard USB descriptors - * for detected devices - */ - -/* set host_endian if the w values are already in host endian format, - * as opposed to bus endian. */ -int usbi_parse_descriptor(const unsigned char *source, const char *descriptor, - void *dest, int host_endian) -{ - const unsigned char *sp = source; - unsigned char *dp = dest; - uint16_t w; - const char *cp; - uint32_t d; - - for (cp = descriptor; *cp; cp++) { - switch (*cp) { - case 'b': /* 8-bit byte */ - *dp++ = *sp++; - break; - case 'w': /* 16-bit word, convert from little endian to CPU */ - dp += ((uintptr_t)dp & 1); /* Align to word boundary */ - - if (host_endian) { - memcpy(dp, sp, 2); - } else { - w = (uint16_t)((sp[1] << 8) | sp[0]); - *((uint16_t *)dp) = w; - } - sp += 2; - dp += 2; - break; - case 'd': /* 32-bit word, convert from little endian to CPU */ - dp += ((uintptr_t)dp & 1); /* Align to word boundary */ - - if (host_endian) { - memcpy(dp, sp, 4); - } else { - d = (uint32_t)((sp[3] << 24) | (sp[2] << 16) | - (sp[1] << 8) | sp[0]); - *((uint32_t *)dp) = d; - } - sp += 4; - dp += 4; - break; - case 'u': /* 16 byte UUID */ - memcpy(dp, sp, 16); - sp += 16; - dp += 16; - break; - } - } - - return (int) (sp - source); -} - -static void clear_endpoint(struct libusb_endpoint_descriptor *endpoint) -{ - free((void *) endpoint->extra); -} - -static int parse_endpoint(struct libusb_context *ctx, - struct libusb_endpoint_descriptor *endpoint, unsigned char *buffer, - int size, int host_endian) -{ - struct usb_descriptor_header header; - unsigned char *extra; - unsigned char *begin; - int parsed = 0; - int len; - - if (size < DESC_HEADER_LENGTH) { - usbi_err(ctx, "short endpoint descriptor read %d/%d", - size, DESC_HEADER_LENGTH); - return LIBUSB_ERROR_IO; - } - - usbi_parse_descriptor(buffer, "bb", &header, 0); - if (header.bDescriptorType != LIBUSB_DT_ENDPOINT) { - usbi_err(ctx, "unexpected descriptor %x (expected %x)", - header.bDescriptorType, LIBUSB_DT_ENDPOINT); - return parsed; - } - if (header.bLength > size) { - usbi_warn(ctx, "short endpoint descriptor read %d/%d", - size, header.bLength); - return parsed; - } - if (header.bLength >= ENDPOINT_AUDIO_DESC_LENGTH) - usbi_parse_descriptor(buffer, "bbbbwbbb", endpoint, host_endian); - else if (header.bLength >= ENDPOINT_DESC_LENGTH) - usbi_parse_descriptor(buffer, "bbbbwb", endpoint, host_endian); - else { - usbi_err(ctx, "invalid endpoint bLength (%d)", header.bLength); - return LIBUSB_ERROR_IO; - } - - buffer += header.bLength; - size -= header.bLength; - parsed += header.bLength; - - /* Skip over the rest of the Class Specific or Vendor Specific */ - /* descriptors */ - begin = buffer; - while (size >= DESC_HEADER_LENGTH) { - usbi_parse_descriptor(buffer, "bb", &header, 0); - if (header.bLength < DESC_HEADER_LENGTH) { - usbi_err(ctx, "invalid extra ep desc len (%d)", - header.bLength); - return LIBUSB_ERROR_IO; - } else if (header.bLength > size) { - usbi_warn(ctx, "short extra ep desc read %d/%d", - size, header.bLength); - return parsed; - } - - /* If we find another "proper" descriptor then we're done */ - if ((header.bDescriptorType == LIBUSB_DT_ENDPOINT) || - (header.bDescriptorType == LIBUSB_DT_INTERFACE) || - (header.bDescriptorType == LIBUSB_DT_CONFIG) || - (header.bDescriptorType == LIBUSB_DT_DEVICE)) - break; - - usbi_dbg("skipping descriptor %x", header.bDescriptorType); - buffer += header.bLength; - size -= header.bLength; - parsed += header.bLength; - } - - /* Copy any unknown descriptors into a storage area for drivers */ - /* to later parse */ - len = (int)(buffer - begin); - if (len <= 0) { - endpoint->extra = NULL; - endpoint->extra_length = 0; - return parsed; - } - - extra = malloc((size_t)len); - endpoint->extra = extra; - if (!extra) { - endpoint->extra_length = 0; - return LIBUSB_ERROR_NO_MEM; - } - - memcpy(extra, begin, len); - endpoint->extra_length = len; - - return parsed; -} - -static void clear_interface(struct libusb_interface *usb_interface) -{ - int i; - int j; - - if (usb_interface->altsetting) { - for (i = 0; i < usb_interface->num_altsetting; i++) { - struct libusb_interface_descriptor *ifp = - (struct libusb_interface_descriptor *) - usb_interface->altsetting + i; - free((void *) ifp->extra); - if (ifp->endpoint) { - for (j = 0; j < ifp->bNumEndpoints; j++) - clear_endpoint((struct libusb_endpoint_descriptor *) - ifp->endpoint + j); - } - free((void *) ifp->endpoint); - } - } - free((void *) usb_interface->altsetting); - usb_interface->altsetting = NULL; -} - -static int parse_interface(libusb_context *ctx, - struct libusb_interface *usb_interface, unsigned char *buffer, int size, - int host_endian) -{ - int i; - int len; - int r; - int parsed = 0; - int interface_number = -1; - struct usb_descriptor_header header; - struct libusb_interface_descriptor *ifp; - unsigned char *begin; - - usb_interface->num_altsetting = 0; - - while (size >= INTERFACE_DESC_LENGTH) { - struct libusb_interface_descriptor *altsetting = - (struct libusb_interface_descriptor *) usb_interface->altsetting; - altsetting = usbi_reallocf(altsetting, - sizeof(struct libusb_interface_descriptor) * - ((size_t)usb_interface->num_altsetting + 1)); - if (!altsetting) { - r = LIBUSB_ERROR_NO_MEM; - goto err; - } - usb_interface->altsetting = altsetting; - - ifp = altsetting + usb_interface->num_altsetting; - usbi_parse_descriptor(buffer, "bbbbbbbbb", ifp, 0); - if (ifp->bDescriptorType != LIBUSB_DT_INTERFACE) { - usbi_err(ctx, "unexpected descriptor %x (expected %x)", - ifp->bDescriptorType, LIBUSB_DT_INTERFACE); - return parsed; - } - if (ifp->bLength < INTERFACE_DESC_LENGTH) { - usbi_err(ctx, "invalid interface bLength (%d)", - ifp->bLength); - r = LIBUSB_ERROR_IO; - goto err; - } - if (ifp->bLength > size) { - usbi_warn(ctx, "short intf descriptor read %d/%d", - size, ifp->bLength); - return parsed; - } - if (ifp->bNumEndpoints > USB_MAXENDPOINTS) { - usbi_err(ctx, "too many endpoints (%d)", ifp->bNumEndpoints); - r = LIBUSB_ERROR_IO; - goto err; - } - - usb_interface->num_altsetting++; - ifp->extra = NULL; - ifp->extra_length = 0; - ifp->endpoint = NULL; - - if (interface_number == -1) - interface_number = ifp->bInterfaceNumber; - - /* Skip over the interface */ - buffer += ifp->bLength; - parsed += ifp->bLength; - size -= ifp->bLength; - - begin = buffer; - - /* Skip over any interface, class or vendor descriptors */ - while (size >= DESC_HEADER_LENGTH) { - usbi_parse_descriptor(buffer, "bb", &header, 0); - if (header.bLength < DESC_HEADER_LENGTH) { - usbi_err(ctx, - "invalid extra intf desc len (%d)", - header.bLength); - r = LIBUSB_ERROR_IO; - goto err; - } else if (header.bLength > size) { - usbi_warn(ctx, - "short extra intf desc read %d/%d", - size, header.bLength); - return parsed; - } - - /* If we find another "proper" descriptor then we're done */ - if ((header.bDescriptorType == LIBUSB_DT_INTERFACE) || - (header.bDescriptorType == LIBUSB_DT_ENDPOINT) || - (header.bDescriptorType == LIBUSB_DT_CONFIG) || - (header.bDescriptorType == LIBUSB_DT_DEVICE)) - break; - - buffer += header.bLength; - parsed += header.bLength; - size -= header.bLength; - } - - /* Copy any unknown descriptors into a storage area for */ - /* drivers to later parse */ - len = (int)(buffer - begin); - if (len > 0) { - ifp->extra = malloc((size_t)len); - if (!ifp->extra) { - r = LIBUSB_ERROR_NO_MEM; - goto err; - } - memcpy((unsigned char *) ifp->extra, begin, len); - ifp->extra_length = len; - } - - if (ifp->bNumEndpoints > 0) { - struct libusb_endpoint_descriptor *endpoint; - endpoint = calloc(ifp->bNumEndpoints, sizeof(struct libusb_endpoint_descriptor)); - ifp->endpoint = endpoint; - if (!endpoint) { - r = LIBUSB_ERROR_NO_MEM; - goto err; - } - - for (i = 0; i < ifp->bNumEndpoints; i++) { - r = parse_endpoint(ctx, endpoint + i, buffer, size, - host_endian); - if (r < 0) - goto err; - if (r == 0) { - ifp->bNumEndpoints = (uint8_t)i; - break; - } - - buffer += r; - parsed += r; - size -= r; - } - } - - /* We check to see if it's an alternate to this one */ - ifp = (struct libusb_interface_descriptor *) buffer; - if (size < LIBUSB_DT_INTERFACE_SIZE || - ifp->bDescriptorType != LIBUSB_DT_INTERFACE || - ifp->bInterfaceNumber != interface_number) - return parsed; - } - - return parsed; -err: - clear_interface(usb_interface); - return r; -} - -static void clear_configuration(struct libusb_config_descriptor *config) -{ - int i; - if (config->interface) { - for (i = 0; i < config->bNumInterfaces; i++) - clear_interface((struct libusb_interface *) - config->interface + i); - } - free((void *) config->interface); - free((void *) config->extra); -} - -static int parse_configuration(struct libusb_context *ctx, - struct libusb_config_descriptor *config, unsigned char *buffer, - int size, int host_endian) -{ - int i; - int r; - struct usb_descriptor_header header; - struct libusb_interface *usb_interface; - - if (size < LIBUSB_DT_CONFIG_SIZE) { - usbi_err(ctx, "short config descriptor read %d/%d", - size, LIBUSB_DT_CONFIG_SIZE); - return LIBUSB_ERROR_IO; - } - - usbi_parse_descriptor(buffer, "bbwbbbbb", config, host_endian); - if (config->bDescriptorType != LIBUSB_DT_CONFIG) { - usbi_err(ctx, "unexpected descriptor %x (expected %x)", - config->bDescriptorType, LIBUSB_DT_CONFIG); - return LIBUSB_ERROR_IO; - } - if (config->bLength < LIBUSB_DT_CONFIG_SIZE) { - usbi_err(ctx, "invalid config bLength (%d)", config->bLength); - return LIBUSB_ERROR_IO; - } - if (config->bLength > size) { - usbi_err(ctx, "short config descriptor read %d/%d", - size, config->bLength); - return LIBUSB_ERROR_IO; - } - if (config->bNumInterfaces > USB_MAXINTERFACES) { - usbi_err(ctx, "too many interfaces (%d)", config->bNumInterfaces); - return LIBUSB_ERROR_IO; - } - - usb_interface = calloc(config->bNumInterfaces, sizeof(struct libusb_interface)); - config->interface = usb_interface; - if (!usb_interface) - return LIBUSB_ERROR_NO_MEM; - - buffer += config->bLength; - size -= config->bLength; - - config->extra = NULL; - config->extra_length = 0; - - for (i = 0; i < config->bNumInterfaces; i++) { - int len; - unsigned char *begin; - - /* Skip over the rest of the Class Specific or Vendor */ - /* Specific descriptors */ - begin = buffer; - while (size >= DESC_HEADER_LENGTH) { - usbi_parse_descriptor(buffer, "bb", &header, 0); - - if (header.bLength < DESC_HEADER_LENGTH) { - usbi_err(ctx, - "invalid extra config desc len (%d)", - header.bLength); - r = LIBUSB_ERROR_IO; - goto err; - } else if (header.bLength > size) { - usbi_warn(ctx, - "short extra config desc read %d/%d", - size, header.bLength); - config->bNumInterfaces = (uint8_t)i; - return size; - } - - /* If we find another "proper" descriptor then we're done */ - if ((header.bDescriptorType == LIBUSB_DT_ENDPOINT) || - (header.bDescriptorType == LIBUSB_DT_INTERFACE) || - (header.bDescriptorType == LIBUSB_DT_CONFIG) || - (header.bDescriptorType == LIBUSB_DT_DEVICE)) - break; - - usbi_dbg("skipping descriptor 0x%x", header.bDescriptorType); - buffer += header.bLength; - size -= header.bLength; - } - - /* Copy any unknown descriptors into a storage area for */ - /* drivers to later parse */ - len = (int)(buffer - begin); - if (len > 0) { - /* FIXME: We should realloc and append here */ - if (!config->extra_length) { - config->extra = malloc((size_t)len); - if (!config->extra) { - r = LIBUSB_ERROR_NO_MEM; - goto err; - } - - memcpy((unsigned char *) config->extra, begin, len); - config->extra_length = len; - } - } - - r = parse_interface(ctx, usb_interface + i, buffer, size, host_endian); - if (r < 0) - goto err; - if (r == 0) { - config->bNumInterfaces = (uint8_t)i; - break; - } - - buffer += r; - size -= r; - } - - return size; - -err: - clear_configuration(config); - return r; -} - -static int raw_desc_to_config(struct libusb_context *ctx, - unsigned char *buf, int size, int host_endian, - struct libusb_config_descriptor **config) -{ - struct libusb_config_descriptor *_config = malloc(sizeof(*_config)); - int r; - - if (!_config) - return LIBUSB_ERROR_NO_MEM; - - r = parse_configuration(ctx, _config, buf, size, host_endian); - if (r < 0) { - usbi_err(ctx, "parse_configuration failed with error %d", r); - free(_config); - return r; - } else if (r > 0) { - usbi_warn(ctx, "still %d bytes of descriptor data left", r); - } - - *config = _config; - return LIBUSB_SUCCESS; -} - -int usbi_device_cache_descriptor(libusb_device *dev) -{ - int r, host_endian = 0; - - r = usbi_backend.get_device_descriptor(dev, (unsigned char *) &dev->device_descriptor, - &host_endian); - if (r < 0) - return r; - - if (!host_endian) { - dev->device_descriptor.bcdUSB = libusb_le16_to_cpu(dev->device_descriptor.bcdUSB); - dev->device_descriptor.idVendor = libusb_le16_to_cpu(dev->device_descriptor.idVendor); - dev->device_descriptor.idProduct = libusb_le16_to_cpu(dev->device_descriptor.idProduct); - dev->device_descriptor.bcdDevice = libusb_le16_to_cpu(dev->device_descriptor.bcdDevice); - } - - return LIBUSB_SUCCESS; -} - -/** \ingroup libusb_desc - * Get the USB device descriptor for a given device. - * - * This is a non-blocking function; the device descriptor is cached in memory. - * - * Note since libusb-1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102, this - * function always succeeds. - * - * \param dev the device - * \param desc output location for the descriptor data - * \returns 0 on success or a LIBUSB_ERROR code on failure - */ -int API_EXPORTED libusb_get_device_descriptor(libusb_device *dev, - struct libusb_device_descriptor *desc) -{ - usbi_dbg(""); - memcpy((unsigned char *) desc, (unsigned char *) &dev->device_descriptor, - sizeof (dev->device_descriptor)); - return 0; -} - -/** \ingroup libusb_desc - * Get the USB configuration descriptor for the currently active configuration. - * This is a non-blocking function which does not involve any requests being - * sent to the device. - * - * \param dev a device - * \param config output location for the USB configuration descriptor. Only - * valid if 0 was returned. Must be freed with libusb_free_config_descriptor() - * after use. - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the device is in unconfigured state - * \returns another LIBUSB_ERROR code on error - * \see libusb_get_config_descriptor - */ -int API_EXPORTED libusb_get_active_config_descriptor(libusb_device *dev, - struct libusb_config_descriptor **config) -{ - struct libusb_config_descriptor _config; - unsigned char tmp[LIBUSB_DT_CONFIG_SIZE]; - unsigned char *buf = NULL; - int host_endian = 0; - int r; - - r = usbi_backend.get_active_config_descriptor(dev, tmp, - LIBUSB_DT_CONFIG_SIZE, &host_endian); - if (r < 0) - return r; - if (r < LIBUSB_DT_CONFIG_SIZE) { - usbi_err(dev->ctx, "short config descriptor read %d/%d", - r, LIBUSB_DT_CONFIG_SIZE); - return LIBUSB_ERROR_IO; - } - - usbi_parse_descriptor(tmp, "bbw", &_config, host_endian); - buf = malloc(_config.wTotalLength); - if (!buf) - return LIBUSB_ERROR_NO_MEM; - - r = usbi_backend.get_active_config_descriptor(dev, buf, - _config.wTotalLength, &host_endian); - if (r >= 0) - r = raw_desc_to_config(dev->ctx, buf, r, host_endian, config); - - free(buf); - return r; -} - -/** \ingroup libusb_desc - * Get a USB configuration descriptor based on its index. - * This is a non-blocking function which does not involve any requests being - * sent to the device. - * - * \param dev a device - * \param config_index the index of the configuration you wish to retrieve - * \param config output location for the USB configuration descriptor. Only - * valid if 0 was returned. Must be freed with libusb_free_config_descriptor() - * after use. - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the configuration does not exist - * \returns another LIBUSB_ERROR code on error - * \see libusb_get_active_config_descriptor() - * \see libusb_get_config_descriptor_by_value() - */ -int API_EXPORTED libusb_get_config_descriptor(libusb_device *dev, - uint8_t config_index, struct libusb_config_descriptor **config) -{ - struct libusb_config_descriptor _config; - unsigned char tmp[LIBUSB_DT_CONFIG_SIZE]; - unsigned char *buf = NULL; - int host_endian = 0; - int r; - - usbi_dbg("index %d", config_index); - if (config_index >= dev->num_configurations) - return LIBUSB_ERROR_NOT_FOUND; - - r = usbi_backend.get_config_descriptor(dev, config_index, tmp, - LIBUSB_DT_CONFIG_SIZE, &host_endian); - if (r < 0) - return r; - if (r < LIBUSB_DT_CONFIG_SIZE) { - usbi_err(dev->ctx, "short config descriptor read %d/%d", - r, LIBUSB_DT_CONFIG_SIZE); - return LIBUSB_ERROR_IO; - } - - usbi_parse_descriptor(tmp, "bbw", &_config, host_endian); - buf = malloc(_config.wTotalLength); - if (!buf) - return LIBUSB_ERROR_NO_MEM; - - r = usbi_backend.get_config_descriptor(dev, config_index, buf, - _config.wTotalLength, &host_endian); - if (r >= 0) - r = raw_desc_to_config(dev->ctx, buf, r, host_endian, config); - - free(buf); - return r; -} - -/* iterate through all configurations, returning the index of the configuration - * matching a specific bConfigurationValue in the idx output parameter, or -1 - * if the config was not found. - * returns 0 on success or a LIBUSB_ERROR code - */ -int usbi_get_config_index_by_value(struct libusb_device *dev, - uint8_t bConfigurationValue, int *idx) -{ - uint8_t i; - - usbi_dbg("value %d", bConfigurationValue); - for (i = 0; i < dev->num_configurations; i++) { - unsigned char tmp[6]; - int host_endian; - int r = usbi_backend.get_config_descriptor(dev, i, tmp, sizeof(tmp), - &host_endian); - if (r < 0) { - *idx = -1; - return r; - } - if (tmp[5] == bConfigurationValue) { - *idx = i; - return 0; - } - } - - *idx = -1; - return 0; -} - -/** \ingroup libusb_desc - * Get a USB configuration descriptor with a specific bConfigurationValue. - * This is a non-blocking function which does not involve any requests being - * sent to the device. - * - * \param dev a device - * \param bConfigurationValue the bConfigurationValue of the configuration you - * wish to retrieve - * \param config output location for the USB configuration descriptor. Only - * valid if 0 was returned. Must be freed with libusb_free_config_descriptor() - * after use. - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the configuration does not exist - * \returns another LIBUSB_ERROR code on error - * \see libusb_get_active_config_descriptor() - * \see libusb_get_config_descriptor() - */ -int API_EXPORTED libusb_get_config_descriptor_by_value(libusb_device *dev, - uint8_t bConfigurationValue, struct libusb_config_descriptor **config) -{ - int r, idx, host_endian; - unsigned char *buf = NULL; - - if (usbi_backend.get_config_descriptor_by_value) { - r = usbi_backend.get_config_descriptor_by_value(dev, - bConfigurationValue, &buf, &host_endian); - if (r < 0) - return r; - return raw_desc_to_config(dev->ctx, buf, r, host_endian, config); - } - - r = usbi_get_config_index_by_value(dev, bConfigurationValue, &idx); - if (r < 0) - return r; - else if (idx == -1) - return LIBUSB_ERROR_NOT_FOUND; - else - return libusb_get_config_descriptor(dev, (uint8_t) idx, config); -} - -/** \ingroup libusb_desc - * Free a configuration descriptor obtained from - * libusb_get_active_config_descriptor() or libusb_get_config_descriptor(). - * It is safe to call this function with a NULL config parameter, in which - * case the function simply returns. - * - * \param config the configuration descriptor to free - */ -void API_EXPORTED libusb_free_config_descriptor( - struct libusb_config_descriptor *config) -{ - if (!config) - return; - - clear_configuration(config); - free(config); -} - -/** \ingroup libusb_desc - * Get an endpoints superspeed endpoint companion descriptor (if any) - * - * \param ctx the context to operate on, or NULL for the default context - * \param endpoint endpoint descriptor from which to get the superspeed - * endpoint companion descriptor - * \param ep_comp output location for the superspeed endpoint companion - * descriptor. Only valid if 0 was returned. Must be freed with - * libusb_free_ss_endpoint_companion_descriptor() after use. - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the configuration does not exist - * \returns another LIBUSB_ERROR code on error - */ -int API_EXPORTED libusb_get_ss_endpoint_companion_descriptor( - struct libusb_context *ctx, - const struct libusb_endpoint_descriptor *endpoint, - struct libusb_ss_endpoint_companion_descriptor **ep_comp) -{ - struct usb_descriptor_header header; - int size = endpoint->extra_length; - const unsigned char *buffer = endpoint->extra; - - *ep_comp = NULL; - - while (size >= DESC_HEADER_LENGTH) { - usbi_parse_descriptor(buffer, "bb", &header, 0); - if (header.bLength < 2 || header.bLength > size) { - usbi_err(ctx, "invalid descriptor length %d", - header.bLength); - return LIBUSB_ERROR_IO; - } - if (header.bDescriptorType != LIBUSB_DT_SS_ENDPOINT_COMPANION) { - buffer += header.bLength; - size -= header.bLength; - continue; - } - if (header.bLength < LIBUSB_DT_SS_ENDPOINT_COMPANION_SIZE) { - usbi_err(ctx, "invalid ss-ep-comp-desc length %d", - header.bLength); - return LIBUSB_ERROR_IO; - } - *ep_comp = malloc(sizeof(**ep_comp)); - if (*ep_comp == NULL) - return LIBUSB_ERROR_NO_MEM; - usbi_parse_descriptor(buffer, "bbbbw", *ep_comp, 0); - return LIBUSB_SUCCESS; - } - return LIBUSB_ERROR_NOT_FOUND; -} - -/** \ingroup libusb_desc - * Free a superspeed endpoint companion descriptor obtained from - * libusb_get_ss_endpoint_companion_descriptor(). - * It is safe to call this function with a NULL ep_comp parameter, in which - * case the function simply returns. - * - * \param ep_comp the superspeed endpoint companion descriptor to free - */ -void API_EXPORTED libusb_free_ss_endpoint_companion_descriptor( - struct libusb_ss_endpoint_companion_descriptor *ep_comp) -{ - free(ep_comp); -} - -static int parse_bos(struct libusb_context *ctx, - struct libusb_bos_descriptor **bos, - unsigned char *buffer, int size, int host_endian) -{ - struct libusb_bos_descriptor bos_header, *_bos; - struct libusb_bos_dev_capability_descriptor dev_cap; - int i; - - if (size < LIBUSB_DT_BOS_SIZE) { - usbi_err(ctx, "short bos descriptor read %d/%d", - size, LIBUSB_DT_BOS_SIZE); - return LIBUSB_ERROR_IO; - } - - usbi_parse_descriptor(buffer, "bbwb", &bos_header, host_endian); - if (bos_header.bDescriptorType != LIBUSB_DT_BOS) { - usbi_err(ctx, "unexpected descriptor %x (expected %x)", - bos_header.bDescriptorType, LIBUSB_DT_BOS); - return LIBUSB_ERROR_IO; - } - if (bos_header.bLength < LIBUSB_DT_BOS_SIZE) { - usbi_err(ctx, "invalid bos bLength (%d)", bos_header.bLength); - return LIBUSB_ERROR_IO; - } - if (bos_header.bLength > size) { - usbi_err(ctx, "short bos descriptor read %d/%d", - size, bos_header.bLength); - return LIBUSB_ERROR_IO; - } - - _bos = calloc (1, - sizeof(*_bos) + bos_header.bNumDeviceCaps * sizeof(void *)); - if (!_bos) - return LIBUSB_ERROR_NO_MEM; - - usbi_parse_descriptor(buffer, "bbwb", _bos, host_endian); - buffer += bos_header.bLength; - size -= bos_header.bLength; - - /* Get the device capability descriptors */ - for (i = 0; i < bos_header.bNumDeviceCaps; i++) { - if (size < LIBUSB_DT_DEVICE_CAPABILITY_SIZE) { - usbi_warn(ctx, "short dev-cap descriptor read %d/%d", - size, LIBUSB_DT_DEVICE_CAPABILITY_SIZE); - break; - } - usbi_parse_descriptor(buffer, "bbb", &dev_cap, host_endian); - if (dev_cap.bDescriptorType != LIBUSB_DT_DEVICE_CAPABILITY) { - usbi_warn(ctx, "unexpected descriptor %x (expected %x)", - dev_cap.bDescriptorType, LIBUSB_DT_DEVICE_CAPABILITY); - break; - } - if (dev_cap.bLength < LIBUSB_DT_DEVICE_CAPABILITY_SIZE) { - usbi_err(ctx, "invalid dev-cap bLength (%d)", - dev_cap.bLength); - libusb_free_bos_descriptor(_bos); - return LIBUSB_ERROR_IO; - } - if (dev_cap.bLength > size) { - usbi_warn(ctx, "short dev-cap descriptor read %d/%d", - size, dev_cap.bLength); - break; - } - - _bos->dev_capability[i] = malloc(dev_cap.bLength); - if (!_bos->dev_capability[i]) { - libusb_free_bos_descriptor(_bos); - return LIBUSB_ERROR_NO_MEM; - } - memcpy(_bos->dev_capability[i], buffer, dev_cap.bLength); - buffer += dev_cap.bLength; - size -= dev_cap.bLength; - } - _bos->bNumDeviceCaps = (uint8_t)i; - *bos = _bos; - - return LIBUSB_SUCCESS; -} - -/** \ingroup libusb_desc - * Get a Binary Object Store (BOS) descriptor - * This is a BLOCKING function, which will send requests to the device. - * - * \param dev_handle the handle of an open libusb device - * \param bos output location for the BOS descriptor. Only valid if 0 was returned. - * Must be freed with \ref libusb_free_bos_descriptor() after use. - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the device doesn't have a BOS descriptor - * \returns another LIBUSB_ERROR code on error - */ -int API_EXPORTED libusb_get_bos_descriptor(libusb_device_handle *dev_handle, - struct libusb_bos_descriptor **bos) -{ - struct libusb_bos_descriptor _bos; - uint8_t bos_header[LIBUSB_DT_BOS_SIZE] = {0}; - unsigned char *bos_data = NULL; - const int host_endian = 0; - int r; - - /* Read the BOS. This generates 2 requests on the bus, - * one for the header, and one for the full BOS */ - r = libusb_get_descriptor(dev_handle, LIBUSB_DT_BOS, 0, bos_header, - LIBUSB_DT_BOS_SIZE); - if (r < 0) { - if (r != LIBUSB_ERROR_PIPE) - usbi_err(HANDLE_CTX(dev_handle), "failed to read BOS (%d)", r); - return r; - } - if (r < LIBUSB_DT_BOS_SIZE) { - usbi_err(HANDLE_CTX(dev_handle), "short BOS read %d/%d", - r, LIBUSB_DT_BOS_SIZE); - return LIBUSB_ERROR_IO; - } - - usbi_parse_descriptor(bos_header, "bbwb", &_bos, host_endian); - usbi_dbg("found BOS descriptor: size %d bytes, %d capabilities", - _bos.wTotalLength, _bos.bNumDeviceCaps); - bos_data = calloc(_bos.wTotalLength, 1); - if (bos_data == NULL) - return LIBUSB_ERROR_NO_MEM; - - r = libusb_get_descriptor(dev_handle, LIBUSB_DT_BOS, 0, bos_data, - _bos.wTotalLength); - if (r >= 0) - r = parse_bos(HANDLE_CTX(dev_handle), bos, bos_data, r, host_endian); - else - usbi_err(HANDLE_CTX(dev_handle), "failed to read BOS (%d)", r); - - free(bos_data); - return r; -} - -/** \ingroup libusb_desc - * Free a BOS descriptor obtained from libusb_get_bos_descriptor(). - * It is safe to call this function with a NULL bos parameter, in which - * case the function simply returns. - * - * \param bos the BOS descriptor to free - */ -void API_EXPORTED libusb_free_bos_descriptor(struct libusb_bos_descriptor *bos) -{ - int i; - - if (!bos) - return; - - for (i = 0; i < bos->bNumDeviceCaps; i++) - free(bos->dev_capability[i]); - free(bos); -} - -/** \ingroup libusb_desc - * Get an USB 2.0 Extension descriptor - * - * \param ctx the context to operate on, or NULL for the default context - * \param dev_cap Device Capability descriptor with a bDevCapabilityType of - * \ref libusb_capability_type::LIBUSB_BT_USB_2_0_EXTENSION - * LIBUSB_BT_USB_2_0_EXTENSION - * \param usb_2_0_extension output location for the USB 2.0 Extension - * descriptor. Only valid if 0 was returned. Must be freed with - * libusb_free_usb_2_0_extension_descriptor() after use. - * \returns 0 on success - * \returns a LIBUSB_ERROR code on error - */ -int API_EXPORTED libusb_get_usb_2_0_extension_descriptor( - struct libusb_context *ctx, - struct libusb_bos_dev_capability_descriptor *dev_cap, - struct libusb_usb_2_0_extension_descriptor **usb_2_0_extension) -{ - struct libusb_usb_2_0_extension_descriptor *_usb_2_0_extension; - const int host_endian = 0; - - if (dev_cap->bDevCapabilityType != LIBUSB_BT_USB_2_0_EXTENSION) { - usbi_err(ctx, "unexpected bDevCapabilityType %x (expected %x)", - dev_cap->bDevCapabilityType, - LIBUSB_BT_USB_2_0_EXTENSION); - return LIBUSB_ERROR_INVALID_PARAM; - } - if (dev_cap->bLength < LIBUSB_BT_USB_2_0_EXTENSION_SIZE) { - usbi_err(ctx, "short dev-cap descriptor read %d/%d", - dev_cap->bLength, LIBUSB_BT_USB_2_0_EXTENSION_SIZE); - return LIBUSB_ERROR_IO; - } - - _usb_2_0_extension = malloc(sizeof(*_usb_2_0_extension)); - if (!_usb_2_0_extension) - return LIBUSB_ERROR_NO_MEM; - - usbi_parse_descriptor((unsigned char *)dev_cap, "bbbd", - _usb_2_0_extension, host_endian); - - *usb_2_0_extension = _usb_2_0_extension; - return LIBUSB_SUCCESS; -} - -/** \ingroup libusb_desc - * Free a USB 2.0 Extension descriptor obtained from - * libusb_get_usb_2_0_extension_descriptor(). - * It is safe to call this function with a NULL usb_2_0_extension parameter, - * in which case the function simply returns. - * - * \param usb_2_0_extension the USB 2.0 Extension descriptor to free - */ -void API_EXPORTED libusb_free_usb_2_0_extension_descriptor( - struct libusb_usb_2_0_extension_descriptor *usb_2_0_extension) -{ - free(usb_2_0_extension); -} - -/** \ingroup libusb_desc - * Get a SuperSpeed USB Device Capability descriptor - * - * \param ctx the context to operate on, or NULL for the default context - * \param dev_cap Device Capability descriptor with a bDevCapabilityType of - * \ref libusb_capability_type::LIBUSB_BT_SS_USB_DEVICE_CAPABILITY - * LIBUSB_BT_SS_USB_DEVICE_CAPABILITY - * \param ss_usb_device_cap output location for the SuperSpeed USB Device - * Capability descriptor. Only valid if 0 was returned. Must be freed with - * libusb_free_ss_usb_device_capability_descriptor() after use. - * \returns 0 on success - * \returns a LIBUSB_ERROR code on error - */ -int API_EXPORTED libusb_get_ss_usb_device_capability_descriptor( - struct libusb_context *ctx, - struct libusb_bos_dev_capability_descriptor *dev_cap, - struct libusb_ss_usb_device_capability_descriptor **ss_usb_device_cap) -{ - struct libusb_ss_usb_device_capability_descriptor *_ss_usb_device_cap; - const int host_endian = 0; - - if (dev_cap->bDevCapabilityType != LIBUSB_BT_SS_USB_DEVICE_CAPABILITY) { - usbi_err(ctx, "unexpected bDevCapabilityType %x (expected %x)", - dev_cap->bDevCapabilityType, - LIBUSB_BT_SS_USB_DEVICE_CAPABILITY); - return LIBUSB_ERROR_INVALID_PARAM; - } - if (dev_cap->bLength < LIBUSB_BT_SS_USB_DEVICE_CAPABILITY_SIZE) { - usbi_err(ctx, "short dev-cap descriptor read %d/%d", - dev_cap->bLength, LIBUSB_BT_SS_USB_DEVICE_CAPABILITY_SIZE); - return LIBUSB_ERROR_IO; - } - - _ss_usb_device_cap = malloc(sizeof(*_ss_usb_device_cap)); - if (!_ss_usb_device_cap) - return LIBUSB_ERROR_NO_MEM; - - usbi_parse_descriptor((unsigned char *)dev_cap, "bbbbwbbw", - _ss_usb_device_cap, host_endian); - - *ss_usb_device_cap = _ss_usb_device_cap; - return LIBUSB_SUCCESS; -} - -/** \ingroup libusb_desc - * Free a SuperSpeed USB Device Capability descriptor obtained from - * libusb_get_ss_usb_device_capability_descriptor(). - * It is safe to call this function with a NULL ss_usb_device_cap - * parameter, in which case the function simply returns. - * - * \param ss_usb_device_cap the SuperSpeed USB Device Capability descriptor - * to free - */ -void API_EXPORTED libusb_free_ss_usb_device_capability_descriptor( - struct libusb_ss_usb_device_capability_descriptor *ss_usb_device_cap) -{ - free(ss_usb_device_cap); -} - -/** \ingroup libusb_desc - * Get a Container ID descriptor - * - * \param ctx the context to operate on, or NULL for the default context - * \param dev_cap Device Capability descriptor with a bDevCapabilityType of - * \ref libusb_capability_type::LIBUSB_BT_CONTAINER_ID - * LIBUSB_BT_CONTAINER_ID - * \param container_id output location for the Container ID descriptor. - * Only valid if 0 was returned. Must be freed with - * libusb_free_container_id_descriptor() after use. - * \returns 0 on success - * \returns a LIBUSB_ERROR code on error - */ -int API_EXPORTED libusb_get_container_id_descriptor(struct libusb_context *ctx, - struct libusb_bos_dev_capability_descriptor *dev_cap, - struct libusb_container_id_descriptor **container_id) -{ - struct libusb_container_id_descriptor *_container_id; - const int host_endian = 0; - - if (dev_cap->bDevCapabilityType != LIBUSB_BT_CONTAINER_ID) { - usbi_err(ctx, "unexpected bDevCapabilityType %x (expected %x)", - dev_cap->bDevCapabilityType, - LIBUSB_BT_CONTAINER_ID); - return LIBUSB_ERROR_INVALID_PARAM; - } - if (dev_cap->bLength < LIBUSB_BT_CONTAINER_ID_SIZE) { - usbi_err(ctx, "short dev-cap descriptor read %d/%d", - dev_cap->bLength, LIBUSB_BT_CONTAINER_ID_SIZE); - return LIBUSB_ERROR_IO; - } - - _container_id = malloc(sizeof(*_container_id)); - if (!_container_id) - return LIBUSB_ERROR_NO_MEM; - - usbi_parse_descriptor((unsigned char *)dev_cap, "bbbbu", - _container_id, host_endian); - - *container_id = _container_id; - return LIBUSB_SUCCESS; -} - -/** \ingroup libusb_desc - * Free a Container ID descriptor obtained from - * libusb_get_container_id_descriptor(). - * It is safe to call this function with a NULL container_id parameter, - * in which case the function simply returns. - * - * \param container_id the Container ID descriptor to free - */ -void API_EXPORTED libusb_free_container_id_descriptor( - struct libusb_container_id_descriptor *container_id) -{ - free(container_id); -} - -/** \ingroup libusb_desc - * Retrieve a string descriptor in C style ASCII. - * - * Wrapper around libusb_get_string_descriptor(). Uses the first language - * supported by the device. - * - * \param dev_handle a device handle - * \param desc_index the index of the descriptor to retrieve - * \param data output buffer for ASCII string descriptor - * \param length size of data buffer - * \returns number of bytes returned in data, or LIBUSB_ERROR code on failure - */ -int API_EXPORTED libusb_get_string_descriptor_ascii(libusb_device_handle *dev_handle, - uint8_t desc_index, unsigned char *data, int length) -{ - unsigned char tbuf[255]; /* Some devices choke on size > 255 */ - int r, si, di; - uint16_t langid; - - /* Asking for the zero'th index is special - it returns a string - * descriptor that contains all the language IDs supported by the - * device. Typically there aren't many - often only one. Language - * IDs are 16 bit numbers, and they start at the third byte in the - * descriptor. There's also no point in trying to read descriptor 0 - * with this function. See USB 2.0 specification section 9.6.7 for - * more information. - */ - - if (desc_index == 0) - return LIBUSB_ERROR_INVALID_PARAM; - - r = libusb_get_string_descriptor(dev_handle, 0, 0, tbuf, sizeof(tbuf)); - if (r < 0) - return r; - - if (r < 4) - return LIBUSB_ERROR_IO; - - langid = (uint16_t)(tbuf[2] | (tbuf[3] << 8)); - - r = libusb_get_string_descriptor(dev_handle, desc_index, langid, tbuf, - sizeof(tbuf)); - if (r < 0) - return r; - - if (tbuf[1] != LIBUSB_DT_STRING) - return LIBUSB_ERROR_IO; - - if (tbuf[0] > r) - return LIBUSB_ERROR_IO; - - di = 0; - for (si = 2; si < tbuf[0]; si += 2) { - if (di >= (length - 1)) - break; - - if ((tbuf[si] & 0x80) || (tbuf[si + 1])) /* non-ASCII */ - data[di++] = '?'; - else - data[di++] = tbuf[si]; - } - - data[di] = 0; - return di; -} diff --git a/Externals/libusb/libusb/hotplug.c b/Externals/libusb/libusb/hotplug.c deleted file mode 100644 index a4320bc42e59..000000000000 --- a/Externals/libusb/libusb/hotplug.c +++ /dev/null @@ -1,373 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode:t ; c-basic-offset:8 -*- */ -/* - * Hotplug functions for libusb - * Copyright © 2012-2013 Nathan Hjelm - * Copyright © 2012-2013 Peter Stuge - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include -#include -#include -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#include - -#include "libusbi.h" -#include "hotplug.h" - -/** - * @defgroup libusb_hotplug Device hotplug event notification - * This page details how to use the libusb hotplug interface, where available. - * - * Be mindful that not all platforms currently implement hotplug notification and - * that you should first call on \ref libusb_has_capability() with parameter - * \ref LIBUSB_CAP_HAS_HOTPLUG to confirm that hotplug support is available. - * - * \page libusb_hotplug Device hotplug event notification - * - * \section hotplug_intro Introduction - * - * Version 1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102, has added support - * for hotplug events on some platforms (you should test if your platform - * supports hotplug notification by calling \ref libusb_has_capability() with - * parameter \ref LIBUSB_CAP_HAS_HOTPLUG). - * - * This interface allows you to request notification for the arrival and departure - * of matching USB devices. - * - * To receive hotplug notification you register a callback by calling - * \ref libusb_hotplug_register_callback(). This function will optionally return - * a callback handle that can be passed to \ref libusb_hotplug_deregister_callback(). - * - * A callback function must return an int (0 or 1) indicating whether the callback is - * expecting additional events. Returning 0 will rearm the callback and 1 will cause - * the callback to be deregistered. Note that when callbacks are called from - * libusb_hotplug_register_callback() because of the \ref LIBUSB_HOTPLUG_ENUMERATE - * flag, the callback return value is ignored, iow you cannot cause a callback - * to be deregistered by returning 1 when it is called from - * libusb_hotplug_register_callback(). - * - * Callbacks for a particular context are automatically deregistered by libusb_exit(). - * - * As of 1.0.16 there are two supported hotplug events: - * - LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED: A device has arrived and is ready to use - * - LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT: A device has left and is no longer available - * - * A hotplug event can listen for either or both of these events. - * - * Note: If you receive notification that a device has left and you have any - * a libusb_device_handles for the device it is up to you to call libusb_close() - * on each device handle to free up any remaining resources associated with the device. - * Once a device has left any libusb_device_handle associated with the device - * are invalid and will remain so even if the device comes back. - * - * When handling a LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED event it is considered - * safe to call any libusb function that takes a libusb_device. It also safe to - * open a device and submit asynchronous transfers. However, most other functions - * that take a libusb_device_handle are not safe to call. Examples of such - * functions are any of the \ref libusb_syncio "synchronous API" functions or the blocking - * functions that retrieve various \ref libusb_desc "USB descriptors". These functions must - * be used outside of the context of the hotplug callback. - * - * When handling a LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT event the only safe function - * is libusb_get_device_descriptor(). - * - * The following code provides an example of the usage of the hotplug interface: -\code -#include -#include -#include -#include - -static int count = 0; - -int hotplug_callback(struct libusb_context *ctx, struct libusb_device *dev, - libusb_hotplug_event event, void *user_data) { - static libusb_device_handle *dev_handle = NULL; - struct libusb_device_descriptor desc; - int rc; - - (void)libusb_get_device_descriptor(dev, &desc); - - if (LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED == event) { - rc = libusb_open(dev, &dev_handle); - if (LIBUSB_SUCCESS != rc) { - printf("Could not open USB device\n"); - } - } else if (LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT == event) { - if (dev_handle) { - libusb_close(dev_handle); - dev_handle = NULL; - } - } else { - printf("Unhandled event %d\n", event); - } - count++; - - return 0; -} - -int main (void) { - libusb_hotplug_callback_handle callback_handle; - int rc; - - libusb_init(NULL); - - rc = libusb_hotplug_register_callback(NULL, LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED | - LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT, 0, 0x045a, 0x5005, - LIBUSB_HOTPLUG_MATCH_ANY, hotplug_callback, NULL, - &callback_handle); - if (LIBUSB_SUCCESS != rc) { - printf("Error creating a hotplug callback\n"); - libusb_exit(NULL); - return EXIT_FAILURE; - } - - while (count < 2) { - libusb_handle_events_completed(NULL, NULL); - nanosleep(&(struct timespec){0, 10000000UL}, NULL); - } - - libusb_hotplug_deregister_callback(NULL, callback_handle); - libusb_exit(NULL); - - return 0; -} -\endcode - */ - -static int usbi_hotplug_match_cb(struct libusb_context *ctx, - struct libusb_device *dev, libusb_hotplug_event event, - struct libusb_hotplug_callback *hotplug_cb) -{ - if (!(hotplug_cb->flags & event)) { - return 0; - } - - if ((hotplug_cb->flags & USBI_HOTPLUG_VENDOR_ID_VALID) && - hotplug_cb->vendor_id != dev->device_descriptor.idVendor) { - return 0; - } - - if ((hotplug_cb->flags & USBI_HOTPLUG_PRODUCT_ID_VALID) && - hotplug_cb->product_id != dev->device_descriptor.idProduct) { - return 0; - } - - if ((hotplug_cb->flags & USBI_HOTPLUG_DEV_CLASS_VALID) && - hotplug_cb->dev_class != dev->device_descriptor.bDeviceClass) { - return 0; - } - - return hotplug_cb->cb(ctx, dev, event, hotplug_cb->user_data); -} - -void usbi_hotplug_match(struct libusb_context *ctx, struct libusb_device *dev, - libusb_hotplug_event event) -{ - struct libusb_hotplug_callback *hotplug_cb, *next; - int ret; - - usbi_mutex_lock(&ctx->hotplug_cbs_lock); - - list_for_each_entry_safe(hotplug_cb, next, &ctx->hotplug_cbs, list, struct libusb_hotplug_callback) { - if (hotplug_cb->flags & USBI_HOTPLUG_NEEDS_FREE) { - /* process deregistration in usbi_hotplug_deregister() */ - continue; - } - - usbi_mutex_unlock(&ctx->hotplug_cbs_lock); - ret = usbi_hotplug_match_cb(ctx, dev, event, hotplug_cb); - usbi_mutex_lock(&ctx->hotplug_cbs_lock); - - if (ret) { - list_del(&hotplug_cb->list); - free(hotplug_cb); - } - } - - usbi_mutex_unlock(&ctx->hotplug_cbs_lock); -} - -void usbi_hotplug_notification(struct libusb_context *ctx, struct libusb_device *dev, - libusb_hotplug_event event) -{ - int pending_events; - struct libusb_hotplug_message *message = calloc(1, sizeof(*message)); - - if (!message) { - usbi_err(ctx, "error allocating hotplug message"); - return; - } - - message->event = event; - message->device = dev; - - /* Take the event data lock and add this message to the list. - * Only signal an event if there are no prior pending events. */ - usbi_mutex_lock(&ctx->event_data_lock); - pending_events = usbi_pending_events(ctx); - list_add_tail(&message->list, &ctx->hotplug_msgs); - if (!pending_events) - usbi_signal_event(ctx); - usbi_mutex_unlock(&ctx->event_data_lock); -} - -int API_EXPORTED libusb_hotplug_register_callback(libusb_context *ctx, - libusb_hotplug_event events, libusb_hotplug_flag flags, - int vendor_id, int product_id, int dev_class, - libusb_hotplug_callback_fn cb_fn, void *user_data, - libusb_hotplug_callback_handle *callback_handle) -{ - struct libusb_hotplug_callback *new_callback; - - /* check for sane values */ - if ((!events || (~(LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED | LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT) & events)) || - (flags && (~LIBUSB_HOTPLUG_ENUMERATE & flags)) || - (LIBUSB_HOTPLUG_MATCH_ANY != vendor_id && (~0xffff & vendor_id)) || - (LIBUSB_HOTPLUG_MATCH_ANY != product_id && (~0xffff & product_id)) || - (LIBUSB_HOTPLUG_MATCH_ANY != dev_class && (~0xff & dev_class)) || - !cb_fn) { - return LIBUSB_ERROR_INVALID_PARAM; - } - - /* check for hotplug support */ - if (!libusb_has_capability(LIBUSB_CAP_HAS_HOTPLUG)) { - return LIBUSB_ERROR_NOT_SUPPORTED; - } - - USBI_GET_CONTEXT(ctx); - - new_callback = calloc(1, sizeof(*new_callback)); - if (!new_callback) { - return LIBUSB_ERROR_NO_MEM; - } - - new_callback->flags = (uint8_t)events; - if (LIBUSB_HOTPLUG_MATCH_ANY != vendor_id) { - new_callback->flags |= USBI_HOTPLUG_VENDOR_ID_VALID; - new_callback->vendor_id = (uint16_t)vendor_id; - } - if (LIBUSB_HOTPLUG_MATCH_ANY != product_id) { - new_callback->flags |= USBI_HOTPLUG_PRODUCT_ID_VALID; - new_callback->product_id = (uint16_t)product_id; - } - if (LIBUSB_HOTPLUG_MATCH_ANY != dev_class) { - new_callback->flags |= USBI_HOTPLUG_DEV_CLASS_VALID; - new_callback->dev_class = (uint8_t)dev_class; - } - new_callback->cb = cb_fn; - new_callback->user_data = user_data; - - usbi_mutex_lock(&ctx->hotplug_cbs_lock); - - /* protect the handle by the context hotplug lock */ - new_callback->handle = ctx->next_hotplug_cb_handle++; - - /* handle the unlikely case of overflow */ - if (ctx->next_hotplug_cb_handle < 0) - ctx->next_hotplug_cb_handle = 1; - - list_add(&new_callback->list, &ctx->hotplug_cbs); - - usbi_mutex_unlock(&ctx->hotplug_cbs_lock); - - usbi_dbg("new hotplug cb %p with handle %d", new_callback, new_callback->handle); - - if ((flags & LIBUSB_HOTPLUG_ENUMERATE) && (events & LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED)) { - ssize_t i, len; - struct libusb_device **devs; - - len = libusb_get_device_list(ctx, &devs); - if (len < 0) { - libusb_hotplug_deregister_callback(ctx, - new_callback->handle); - return (int)len; - } - - for (i = 0; i < len; i++) { - usbi_hotplug_match_cb(ctx, devs[i], - LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED, - new_callback); - } - - libusb_free_device_list(devs, 1); - } - - - if (callback_handle) - *callback_handle = new_callback->handle; - - return LIBUSB_SUCCESS; -} - -void API_EXPORTED libusb_hotplug_deregister_callback(struct libusb_context *ctx, - libusb_hotplug_callback_handle callback_handle) -{ - struct libusb_hotplug_callback *hotplug_cb; - int deregistered = 0; - - /* check for hotplug support */ - if (!libusb_has_capability(LIBUSB_CAP_HAS_HOTPLUG)) { - return; - } - - USBI_GET_CONTEXT(ctx); - - usbi_dbg("deregister hotplug cb %d", callback_handle); - - usbi_mutex_lock(&ctx->hotplug_cbs_lock); - list_for_each_entry(hotplug_cb, &ctx->hotplug_cbs, list, struct libusb_hotplug_callback) { - if (callback_handle == hotplug_cb->handle) { - /* Mark this callback for deregistration */ - hotplug_cb->flags |= USBI_HOTPLUG_NEEDS_FREE; - deregistered = 1; - } - } - usbi_mutex_unlock(&ctx->hotplug_cbs_lock); - - if (deregistered) { - int pending_events; - - usbi_mutex_lock(&ctx->event_data_lock); - pending_events = usbi_pending_events(ctx); - ctx->event_flags |= USBI_EVENT_HOTPLUG_CB_DEREGISTERED; - if (!pending_events) - usbi_signal_event(ctx); - usbi_mutex_unlock(&ctx->event_data_lock); - } -} - -void usbi_hotplug_deregister(struct libusb_context *ctx, int forced) -{ - struct libusb_hotplug_callback *hotplug_cb, *next; - - usbi_mutex_lock(&ctx->hotplug_cbs_lock); - list_for_each_entry_safe(hotplug_cb, next, &ctx->hotplug_cbs, list, struct libusb_hotplug_callback) { - if (forced || (hotplug_cb->flags & USBI_HOTPLUG_NEEDS_FREE)) { - usbi_dbg("freeing hotplug cb %p with handle %d", hotplug_cb, - hotplug_cb->handle); - list_del(&hotplug_cb->list); - free(hotplug_cb); - } - } - usbi_mutex_unlock(&ctx->hotplug_cbs_lock); -} diff --git a/Externals/libusb/libusb/hotplug.h b/Externals/libusb/libusb/hotplug.h deleted file mode 100644 index 75b2695f4c50..000000000000 --- a/Externals/libusb/libusb/hotplug.h +++ /dev/null @@ -1,99 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode:t ; c-basic-offset:8 -*- */ -/* - * Hotplug support for libusb - * Copyright © 2012-2013 Nathan Hjelm - * Copyright © 2012-2013 Peter Stuge - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef USBI_HOTPLUG_H -#define USBI_HOTPLUG_H - -#include "libusbi.h" - -enum usbi_hotplug_flags { - /* This callback is interested in device arrivals */ - USBI_HOTPLUG_DEVICE_ARRIVED = LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED, - - /* This callback is interested in device removals */ - USBI_HOTPLUG_DEVICE_LEFT = LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT, - - /* IMPORTANT: The values for the below entries must start *after* - * the highest value of the above entries!!! - */ - - /* The vendor_id field is valid for matching */ - USBI_HOTPLUG_VENDOR_ID_VALID = (1U << 3), - - /* The product_id field is valid for matching */ - USBI_HOTPLUG_PRODUCT_ID_VALID = (1U << 4), - - /* The dev_class field is valid for matching */ - USBI_HOTPLUG_DEV_CLASS_VALID = (1U << 5), - - /* This callback has been unregistered and needs to be freed */ - USBI_HOTPLUG_NEEDS_FREE = (1U << 6), -}; - -/** \ingroup hotplug - * The hotplug callback structure. The user populates this structure with - * libusb_hotplug_prepare_callback() and then calls libusb_hotplug_register_callback() - * to receive notification of hotplug events. - */ -struct libusb_hotplug_callback { - /** Flags that control how this callback behaves */ - uint8_t flags; - - /** Vendor ID to match (if flags says this is valid) */ - uint16_t vendor_id; - - /** Product ID to match (if flags says this is valid) */ - uint16_t product_id; - - /** Device class to match (if flags says this is valid) */ - uint8_t dev_class; - - /** Callback function to invoke for matching event/device */ - libusb_hotplug_callback_fn cb; - - /** Handle for this callback (used to match on deregister) */ - libusb_hotplug_callback_handle handle; - - /** User data that will be passed to the callback function */ - void *user_data; - - /** List this callback is registered in (ctx->hotplug_cbs) */ - struct list_head list; -}; - -struct libusb_hotplug_message { - /** The hotplug event that occurred */ - libusb_hotplug_event event; - - /** The device for which this hotplug event occurred */ - struct libusb_device *device; - - /** List this message is contained in (ctx->hotplug_msgs) */ - struct list_head list; -}; - -void usbi_hotplug_deregister(struct libusb_context *ctx, int forced); -void usbi_hotplug_match(struct libusb_context *ctx, struct libusb_device *dev, - libusb_hotplug_event event); -void usbi_hotplug_notification(struct libusb_context *ctx, struct libusb_device *dev, - libusb_hotplug_event event); - -#endif diff --git a/Externals/libusb/libusb/io.c b/Externals/libusb/libusb/io.c deleted file mode 100644 index ef2b7c496fe8..000000000000 --- a/Externals/libusb/libusb/io.c +++ /dev/null @@ -1,2835 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode:t ; c-basic-offset:8 -*- */ -/* - * I/O functions for libusb - * Copyright © 2007-2009 Daniel Drake - * Copyright © 2001 Johannes Erdfelt - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include -#include -#include -#include -#include -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef USBI_TIMERFD_AVAILABLE -#include -#endif - -#include "libusbi.h" -#include "hotplug.h" - -/** - * \page libusb_io Synchronous and asynchronous device I/O - * - * \section io_intro Introduction - * - * If you're using libusb in your application, you're probably wanting to - * perform I/O with devices - you want to perform USB data transfers. - * - * libusb offers two separate interfaces for device I/O. This page aims to - * introduce the two in order to help you decide which one is more suitable - * for your application. You can also choose to use both interfaces in your - * application by considering each transfer on a case-by-case basis. - * - * Once you have read through the following discussion, you should consult the - * detailed API documentation pages for the details: - * - \ref libusb_syncio - * - \ref libusb_asyncio - * - * \section theory Transfers at a logical level - * - * At a logical level, USB transfers typically happen in two parts. For - * example, when reading data from a endpoint: - * -# A request for data is sent to the device - * -# Some time later, the incoming data is received by the host - * - * or when writing data to an endpoint: - * - * -# The data is sent to the device - * -# Some time later, the host receives acknowledgement from the device that - * the data has been transferred. - * - * There may be an indefinite delay between the two steps. Consider a - * fictional USB input device with a button that the user can press. In order - * to determine when the button is pressed, you would likely submit a request - * to read data on a bulk or interrupt endpoint and wait for data to arrive. - * Data will arrive when the button is pressed by the user, which is - * potentially hours later. - * - * libusb offers both a synchronous and an asynchronous interface to performing - * USB transfers. The main difference is that the synchronous interface - * combines both steps indicated above into a single function call, whereas - * the asynchronous interface separates them. - * - * \section sync The synchronous interface - * - * The synchronous I/O interface allows you to perform a USB transfer with - * a single function call. When the function call returns, the transfer has - * completed and you can parse the results. - * - * If you have used the libusb-0.1 before, this I/O style will seem familar to - * you. libusb-0.1 only offered a synchronous interface. - * - * In our input device example, to read button presses you might write code - * in the following style: -\code -unsigned char data[4]; -int actual_length; -int r = libusb_bulk_transfer(dev_handle, LIBUSB_ENDPOINT_IN, data, sizeof(data), &actual_length, 0); -if (r == 0 && actual_length == sizeof(data)) { - // results of the transaction can now be found in the data buffer - // parse them here and report button press -} else { - error(); -} -\endcode - * - * The main advantage of this model is simplicity: you did everything with - * a single simple function call. - * - * However, this interface has its limitations. Your application will sleep - * inside libusb_bulk_transfer() until the transaction has completed. If it - * takes the user 3 hours to press the button, your application will be - * sleeping for that long. Execution will be tied up inside the library - - * the entire thread will be useless for that duration. - * - * Another issue is that by tieing up the thread with that single transaction - * there is no possibility of performing I/O with multiple endpoints and/or - * multiple devices simultaneously, unless you resort to creating one thread - * per transaction. - * - * Additionally, there is no opportunity to cancel the transfer after the - * request has been submitted. - * - * For details on how to use the synchronous API, see the - * \ref libusb_syncio "synchronous I/O API documentation" pages. - * - * \section async The asynchronous interface - * - * Asynchronous I/O is the most significant new feature in libusb-1.0. - * Although it is a more complex interface, it solves all the issues detailed - * above. - * - * Instead of providing which functions that block until the I/O has complete, - * libusb's asynchronous interface presents non-blocking functions which - * begin a transfer and then return immediately. Your application passes a - * callback function pointer to this non-blocking function, which libusb will - * call with the results of the transaction when it has completed. - * - * Transfers which have been submitted through the non-blocking functions - * can be cancelled with a separate function call. - * - * The non-blocking nature of this interface allows you to be simultaneously - * performing I/O to multiple endpoints on multiple devices, without having - * to use threads. - * - * This added flexibility does come with some complications though: - * - In the interest of being a lightweight library, libusb does not create - * threads and can only operate when your application is calling into it. Your - * application must call into libusb from it's main loop when events are ready - * to be handled, or you must use some other scheme to allow libusb to - * undertake whatever work needs to be done. - * - libusb also needs to be called into at certain fixed points in time in - * order to accurately handle transfer timeouts. - * - Memory handling becomes more complex. You cannot use stack memory unless - * the function with that stack is guaranteed not to return until the transfer - * callback has finished executing. - * - You generally lose some linearity from your code flow because submitting - * the transfer request is done in a separate function from where the transfer - * results are handled. This becomes particularly obvious when you want to - * submit a second transfer based on the results of an earlier transfer. - * - * Internally, libusb's synchronous interface is expressed in terms of function - * calls to the asynchronous interface. - * - * For details on how to use the asynchronous API, see the - * \ref libusb_asyncio "asynchronous I/O API" documentation pages. - */ - - -/** - * \page libusb_packetoverflow Packets and overflows - * - * \section packets Packet abstraction - * - * The USB specifications describe how data is transmitted in packets, with - * constraints on packet size defined by endpoint descriptors. The host must - * not send data payloads larger than the endpoint's maximum packet size. - * - * libusb and the underlying OS abstract out the packet concept, allowing you - * to request transfers of any size. Internally, the request will be divided - * up into correctly-sized packets. You do not have to be concerned with - * packet sizes, but there is one exception when considering overflows. - * - * \section overflow Bulk/interrupt transfer overflows - * - * When requesting data on a bulk endpoint, libusb requires you to supply a - * buffer and the maximum number of bytes of data that libusb can put in that - * buffer. However, the size of the buffer is not communicated to the device - - * the device is just asked to send any amount of data. - * - * There is no problem if the device sends an amount of data that is less than - * or equal to the buffer size. libusb reports this condition to you through - * the \ref libusb_transfer::actual_length "libusb_transfer.actual_length" - * field. - * - * Problems may occur if the device attempts to send more data than can fit in - * the buffer. libusb reports LIBUSB_TRANSFER_OVERFLOW for this condition but - * other behaviour is largely undefined: actual_length may or may not be - * accurate, the chunk of data that can fit in the buffer (before overflow) - * may or may not have been transferred. - * - * Overflows are nasty, but can be avoided. Even though you were told to - * ignore packets above, think about the lower level details: each transfer is - * split into packets (typically small, with a maximum size of 512 bytes). - * Overflows can only happen if the final packet in an incoming data transfer - * is smaller than the actual packet that the device wants to transfer. - * Therefore, you will never see an overflow if your transfer buffer size is a - * multiple of the endpoint's packet size: the final packet will either - * fill up completely or will be only partially filled. - */ - -/** - * @defgroup libusb_asyncio Asynchronous device I/O - * - * This page details libusb's asynchronous (non-blocking) API for USB device - * I/O. This interface is very powerful but is also quite complex - you will - * need to read this page carefully to understand the necessary considerations - * and issues surrounding use of this interface. Simplistic applications - * may wish to consider the \ref libusb_syncio "synchronous I/O API" instead. - * - * The asynchronous interface is built around the idea of separating transfer - * submission and handling of transfer completion (the synchronous model - * combines both of these into one). There may be a long delay between - * submission and completion, however the asynchronous submission function - * is non-blocking so will return control to your application during that - * potentially long delay. - * - * \section asyncabstraction Transfer abstraction - * - * For the asynchronous I/O, libusb implements the concept of a generic - * transfer entity for all types of I/O (control, bulk, interrupt, - * isochronous). The generic transfer object must be treated slightly - * differently depending on which type of I/O you are performing with it. - * - * This is represented by the public libusb_transfer structure type. - * - * \section asynctrf Asynchronous transfers - * - * We can view asynchronous I/O as a 5 step process: - * -# Allocation: allocate a libusb_transfer - * -# Filling: populate the libusb_transfer instance with information - * about the transfer you wish to perform - * -# Submission: ask libusb to submit the transfer - * -# Completion handling: examine transfer results in the - * libusb_transfer structure - * -# Deallocation: clean up resources - * - * - * \subsection asyncalloc Allocation - * - * This step involves allocating memory for a USB transfer. This is the - * generic transfer object mentioned above. At this stage, the transfer - * is "blank" with no details about what type of I/O it will be used for. - * - * Allocation is done with the libusb_alloc_transfer() function. You must use - * this function rather than allocating your own transfers. - * - * \subsection asyncfill Filling - * - * This step is where you take a previously allocated transfer and fill it - * with information to determine the message type and direction, data buffer, - * callback function, etc. - * - * You can either fill the required fields yourself or you can use the - * helper functions: libusb_fill_control_transfer(), libusb_fill_bulk_transfer() - * and libusb_fill_interrupt_transfer(). - * - * \subsection asyncsubmit Submission - * - * When you have allocated a transfer and filled it, you can submit it using - * libusb_submit_transfer(). This function returns immediately but can be - * regarded as firing off the I/O request in the background. - * - * \subsection asynccomplete Completion handling - * - * After a transfer has been submitted, one of four things can happen to it: - * - * - The transfer completes (i.e. some data was transferred) - * - The transfer has a timeout and the timeout expires before all data is - * transferred - * - The transfer fails due to an error - * - The transfer is cancelled - * - * Each of these will cause the user-specified transfer callback function to - * be invoked. It is up to the callback function to determine which of the - * above actually happened and to act accordingly. - * - * The user-specified callback is passed a pointer to the libusb_transfer - * structure which was used to setup and submit the transfer. At completion - * time, libusb has populated this structure with results of the transfer: - * success or failure reason, number of bytes of data transferred, etc. See - * the libusb_transfer structure documentation for more information. - * - * Important Note: The user-specified callback is called from an event - * handling context. It is therefore important that no calls are made into - * libusb that will attempt to perform any event handling. Examples of such - * functions are any listed in the \ref libusb_syncio "synchronous API" and any of - * the blocking functions that retrieve \ref libusb_desc "USB descriptors". - * - * \subsection Deallocation - * - * When a transfer has completed (i.e. the callback function has been invoked), - * you are advised to free the transfer (unless you wish to resubmit it, see - * below). Transfers are deallocated with libusb_free_transfer(). - * - * It is undefined behaviour to free a transfer which has not completed. - * - * \section asyncresubmit Resubmission - * - * You may be wondering why allocation, filling, and submission are all - * separated above where they could reasonably be combined into a single - * operation. - * - * The reason for separation is to allow you to resubmit transfers without - * having to allocate new ones every time. This is especially useful for - * common situations dealing with interrupt endpoints - you allocate one - * transfer, fill and submit it, and when it returns with results you just - * resubmit it for the next interrupt. - * - * \section asynccancel Cancellation - * - * Another advantage of using the asynchronous interface is that you have - * the ability to cancel transfers which have not yet completed. This is - * done by calling the libusb_cancel_transfer() function. - * - * libusb_cancel_transfer() is asynchronous/non-blocking in itself. When the - * cancellation actually completes, the transfer's callback function will - * be invoked, and the callback function should check the transfer status to - * determine that it was cancelled. - * - * Freeing the transfer after it has been cancelled but before cancellation - * has completed will result in undefined behaviour. - * - * When a transfer is cancelled, some of the data may have been transferred. - * libusb will communicate this to you in the transfer callback. Do not assume - * that no data was transferred. - * - * \section bulk_overflows Overflows on device-to-host bulk/interrupt endpoints - * - * If your device does not have predictable transfer sizes (or it misbehaves), - * your application may submit a request for data on an IN endpoint which is - * smaller than the data that the device wishes to send. In some circumstances - * this will cause an overflow, which is a nasty condition to deal with. See - * the \ref libusb_packetoverflow page for discussion. - * - * \section asyncctrl Considerations for control transfers - * - * The libusb_transfer structure is generic and hence does not - * include specific fields for the control-specific setup packet structure. - * - * In order to perform a control transfer, you must place the 8-byte setup - * packet at the start of the data buffer. To simplify this, you could - * cast the buffer pointer to type struct libusb_control_setup, or you can - * use the helper function libusb_fill_control_setup(). - * - * The wLength field placed in the setup packet must be the length you would - * expect to be sent in the setup packet: the length of the payload that - * follows (or the expected maximum number of bytes to receive). However, - * the length field of the libusb_transfer object must be the length of - * the data buffer - i.e. it should be wLength plus the size of - * the setup packet (LIBUSB_CONTROL_SETUP_SIZE). - * - * If you use the helper functions, this is simplified for you: - * -# Allocate a buffer of size LIBUSB_CONTROL_SETUP_SIZE plus the size of the - * data you are sending/requesting. - * -# Call libusb_fill_control_setup() on the data buffer, using the transfer - * request size as the wLength value (i.e. do not include the extra space you - * allocated for the control setup). - * -# If this is a host-to-device transfer, place the data to be transferred - * in the data buffer, starting at offset LIBUSB_CONTROL_SETUP_SIZE. - * -# Call libusb_fill_control_transfer() to associate the data buffer with - * the transfer (and to set the remaining details such as callback and timeout). - * - Note that there is no parameter to set the length field of the transfer. - * The length is automatically inferred from the wLength field of the setup - * packet. - * -# Submit the transfer. - * - * The multi-byte control setup fields (wValue, wIndex and wLength) must - * be given in little-endian byte order (the endianness of the USB bus). - * Endianness conversion is transparently handled by - * libusb_fill_control_setup() which is documented to accept host-endian - * values. - * - * Further considerations are needed when handling transfer completion in - * your callback function: - * - As you might expect, the setup packet will still be sitting at the start - * of the data buffer. - * - If this was a device-to-host transfer, the received data will be sitting - * at offset LIBUSB_CONTROL_SETUP_SIZE into the buffer. - * - The actual_length field of the transfer structure is relative to the - * wLength of the setup packet, rather than the size of the data buffer. So, - * if your wLength was 4, your transfer's length was 12, then you - * should expect an actual_length of 4 to indicate that the data was - * transferred in entirity. - * - * To simplify parsing of setup packets and obtaining the data from the - * correct offset, you may wish to use the libusb_control_transfer_get_data() - * and libusb_control_transfer_get_setup() functions within your transfer - * callback. - * - * Even though control endpoints do not halt, a completed control transfer - * may have a LIBUSB_TRANSFER_STALL status code. This indicates the control - * request was not supported. - * - * \section asyncintr Considerations for interrupt transfers - * - * All interrupt transfers are performed using the polling interval presented - * by the bInterval value of the endpoint descriptor. - * - * \section asynciso Considerations for isochronous transfers - * - * Isochronous transfers are more complicated than transfers to - * non-isochronous endpoints. - * - * To perform I/O to an isochronous endpoint, allocate the transfer by calling - * libusb_alloc_transfer() with an appropriate number of isochronous packets. - * - * During filling, set \ref libusb_transfer::type "type" to - * \ref libusb_transfer_type::LIBUSB_TRANSFER_TYPE_ISOCHRONOUS - * "LIBUSB_TRANSFER_TYPE_ISOCHRONOUS", and set - * \ref libusb_transfer::num_iso_packets "num_iso_packets" to a value less than - * or equal to the number of packets you requested during allocation. - * libusb_alloc_transfer() does not set either of these fields for you, given - * that you might not even use the transfer on an isochronous endpoint. - * - * Next, populate the length field for the first num_iso_packets entries in - * the \ref libusb_transfer::iso_packet_desc "iso_packet_desc" array. Section - * 5.6.3 of the USB2 specifications describe how the maximum isochronous - * packet length is determined by the wMaxPacketSize field in the endpoint - * descriptor. - * Two functions can help you here: - * - * - libusb_get_max_iso_packet_size() is an easy way to determine the max - * packet size for an isochronous endpoint. Note that the maximum packet - * size is actually the maximum number of bytes that can be transmitted in - * a single microframe, therefore this function multiplies the maximum number - * of bytes per transaction by the number of transaction opportunities per - * microframe. - * - libusb_set_iso_packet_lengths() assigns the same length to all packets - * within a transfer, which is usually what you want. - * - * For outgoing transfers, you'll obviously fill the buffer and populate the - * packet descriptors in hope that all the data gets transferred. For incoming - * transfers, you must ensure the buffer has sufficient capacity for - * the situation where all packets transfer the full amount of requested data. - * - * Completion handling requires some extra consideration. The - * \ref libusb_transfer::actual_length "actual_length" field of the transfer - * is meaningless and should not be examined; instead you must refer to the - * \ref libusb_iso_packet_descriptor::actual_length "actual_length" field of - * each individual packet. - * - * The \ref libusb_transfer::status "status" field of the transfer is also a - * little misleading: - * - If the packets were submitted and the isochronous data microframes - * completed normally, status will have value - * \ref libusb_transfer_status::LIBUSB_TRANSFER_COMPLETED - * "LIBUSB_TRANSFER_COMPLETED". Note that bus errors and software-incurred - * delays are not counted as transfer errors; the transfer.status field may - * indicate COMPLETED even if some or all of the packets failed. Refer to - * the \ref libusb_iso_packet_descriptor::status "status" field of each - * individual packet to determine packet failures. - * - The status field will have value - * \ref libusb_transfer_status::LIBUSB_TRANSFER_ERROR - * "LIBUSB_TRANSFER_ERROR" only when serious errors were encountered. - * - Other transfer status codes occur with normal behaviour. - * - * The data for each packet will be found at an offset into the buffer that - * can be calculated as if each prior packet completed in full. The - * libusb_get_iso_packet_buffer() and libusb_get_iso_packet_buffer_simple() - * functions may help you here. - * - * Note: Some operating systems (e.g. Linux) may impose limits on the - * length of individual isochronous packets and/or the total length of the - * isochronous transfer. Such limits can be difficult for libusb to detect, - * so the library will simply try and submit the transfer as set up by you. - * If the transfer fails to submit because it is too large, - * libusb_submit_transfer() will return - * \ref libusb_error::LIBUSB_ERROR_INVALID_PARAM "LIBUSB_ERROR_INVALID_PARAM". - * - * \section asyncmem Memory caveats - * - * In most circumstances, it is not safe to use stack memory for transfer - * buffers. This is because the function that fired off the asynchronous - * transfer may return before libusb has finished using the buffer, and when - * the function returns it's stack gets destroyed. This is true for both - * host-to-device and device-to-host transfers. - * - * The only case in which it is safe to use stack memory is where you can - * guarantee that the function owning the stack space for the buffer does not - * return until after the transfer's callback function has completed. In every - * other case, you need to use heap memory instead. - * - * \section asyncflags Fine control - * - * Through using this asynchronous interface, you may find yourself repeating - * a few simple operations many times. You can apply a bitwise OR of certain - * flags to a transfer to simplify certain things: - * - \ref libusb_transfer_flags::LIBUSB_TRANSFER_SHORT_NOT_OK - * "LIBUSB_TRANSFER_SHORT_NOT_OK" results in transfers which transferred - * less than the requested amount of data being marked with status - * \ref libusb_transfer_status::LIBUSB_TRANSFER_ERROR "LIBUSB_TRANSFER_ERROR" - * (they would normally be regarded as COMPLETED) - * - \ref libusb_transfer_flags::LIBUSB_TRANSFER_FREE_BUFFER - * "LIBUSB_TRANSFER_FREE_BUFFER" allows you to ask libusb to free the transfer - * buffer when freeing the transfer. - * - \ref libusb_transfer_flags::LIBUSB_TRANSFER_FREE_TRANSFER - * "LIBUSB_TRANSFER_FREE_TRANSFER" causes libusb to automatically free the - * transfer after the transfer callback returns. - * - * \section asyncevent Event handling - * - * An asynchronous model requires that libusb perform work at various - * points in time - namely processing the results of previously-submitted - * transfers and invoking the user-supplied callback function. - * - * This gives rise to the libusb_handle_events() function which your - * application must call into when libusb has work do to. This gives libusb - * the opportunity to reap pending transfers, invoke callbacks, etc. - * - * There are 2 different approaches to dealing with libusb_handle_events: - * - * -# Repeatedly call libusb_handle_events() in blocking mode from a dedicated - * thread. - * -# Integrate libusb with your application's main event loop. libusb - * exposes a set of file descriptors which allow you to do this. - * - * The first approach has the big advantage that it will also work on Windows - * were libusb' poll API for select / poll integration is not available. So - * if you want to support Windows and use the async API, you must use this - * approach, see the \ref eventthread "Using an event handling thread" section - * below for details. - * - * If you prefer a single threaded approach with a single central event loop, - * see the \ref libusb_poll "polling and timing" section for how to integrate libusb - * into your application's main event loop. - * - * \section eventthread Using an event handling thread - * - * Lets begin with stating the obvious: If you're going to use a separate - * thread for libusb event handling, your callback functions MUST be - * threadsafe. - * - * Other then that doing event handling from a separate thread, is mostly - * simple. You can use an event thread function as follows: -\code -void *event_thread_func(void *ctx) -{ - while (event_thread_run) - libusb_handle_events(ctx); - - return NULL; -} -\endcode - * - * There is one caveat though, stopping this thread requires setting the - * event_thread_run variable to 0, and after that libusb_handle_events() needs - * to return control to event_thread_func. But unless some event happens, - * libusb_handle_events() will not return. - * - * There are 2 different ways of dealing with this, depending on if your - * application uses libusb' \ref libusb_hotplug "hotplug" support or not. - * - * Applications which do not use hotplug support, should not start the event - * thread until after their first call to libusb_open(), and should stop the - * thread when closing the last open device as follows: -\code -void my_close_handle(libusb_device_handle *dev_handle) -{ - if (open_devs == 1) - event_thread_run = 0; - - libusb_close(dev_handle); // This wakes up libusb_handle_events() - - if (open_devs == 1) - pthread_join(event_thread); - - open_devs--; -} -\endcode - * - * Applications using hotplug support should start the thread at program init, - * after having successfully called libusb_hotplug_register_callback(), and - * should stop the thread at program exit as follows: -\code -void my_libusb_exit(void) -{ - event_thread_run = 0; - libusb_hotplug_deregister_callback(ctx, hotplug_cb_handle); // This wakes up libusb_handle_events() - pthread_join(event_thread); - libusb_exit(ctx); -} -\endcode - */ - -/** - * @defgroup libusb_poll Polling and timing - * - * This page documents libusb's functions for polling events and timing. - * These functions are only necessary for users of the - * \ref libusb_asyncio "asynchronous API". If you are only using the simpler - * \ref libusb_syncio "synchronous API" then you do not need to ever call these - * functions. - * - * The justification for the functionality described here has already been - * discussed in the \ref asyncevent "event handling" section of the - * asynchronous API documentation. In summary, libusb does not create internal - * threads for event processing and hence relies on your application calling - * into libusb at certain points in time so that pending events can be handled. - * - * Your main loop is probably already calling poll() or select() or a - * variant on a set of file descriptors for other event sources (e.g. keyboard - * button presses, mouse movements, network sockets, etc). You then add - * libusb's file descriptors to your poll()/select() calls, and when activity - * is detected on such descriptors you know it is time to call - * libusb_handle_events(). - * - * There is one final event handling complication. libusb supports - * asynchronous transfers which time out after a specified time period. - * - * On some platforms a timerfd is used, so the timeout handling is just another - * fd, on other platforms this requires that libusb is called into at or after - * the timeout to handle it. So, in addition to considering libusb's file - * descriptors in your main event loop, you must also consider that libusb - * sometimes needs to be called into at fixed points in time even when there - * is no file descriptor activity, see \ref polltime details. - * - * In order to know precisely when libusb needs to be called into, libusb - * offers you a set of pollable file descriptors and information about when - * the next timeout expires. - * - * If you are using the asynchronous I/O API, you must take one of the two - * following options, otherwise your I/O will not complete. - * - * \section pollsimple The simple option - * - * If your application revolves solely around libusb and does not need to - * handle other event sources, you can have a program structure as follows: -\code -// initialize libusb -// find and open device -// maybe fire off some initial async I/O - -while (user_has_not_requested_exit) - libusb_handle_events(ctx); - -// clean up and exit -\endcode - * - * With such a simple main loop, you do not have to worry about managing - * sets of file descriptors or handling timeouts. libusb_handle_events() will - * handle those details internally. - * - * \section libusb_pollmain The more advanced option - * - * \note This functionality is currently only available on Unix-like platforms. - * On Windows, libusb_get_pollfds() simply returns NULL. Applications which - * want to support Windows are advised to use an \ref eventthread - * "event handling thread" instead. - * - * In more advanced applications, you will already have a main loop which - * is monitoring other event sources: network sockets, X11 events, mouse - * movements, etc. Through exposing a set of file descriptors, libusb is - * designed to cleanly integrate into such main loops. - * - * In addition to polling file descriptors for the other event sources, you - * take a set of file descriptors from libusb and monitor those too. When you - * detect activity on libusb's file descriptors, you call - * libusb_handle_events_timeout() in non-blocking mode. - * - * What's more, libusb may also need to handle events at specific moments in - * time. No file descriptor activity is generated at these times, so your - * own application needs to be continually aware of when the next one of these - * moments occurs (through calling libusb_get_next_timeout()), and then it - * needs to call libusb_handle_events_timeout() in non-blocking mode when - * these moments occur. This means that you need to adjust your - * poll()/select() timeout accordingly. - * - * libusb provides you with a set of file descriptors to poll and expects you - * to poll all of them, treating them as a single entity. The meaning of each - * file descriptor in the set is an internal implementation detail, - * platform-dependent and may vary from release to release. Don't try and - * interpret the meaning of the file descriptors, just do as libusb indicates, - * polling all of them at once. - * - * In pseudo-code, you want something that looks like: -\code -// initialise libusb - -libusb_get_pollfds(ctx) -while (user has not requested application exit) { - libusb_get_next_timeout(ctx); - poll(on libusb file descriptors plus any other event sources of interest, - using a timeout no larger than the value libusb just suggested) - if (poll() indicated activity on libusb file descriptors) - libusb_handle_events_timeout(ctx, &zero_tv); - if (time has elapsed to or beyond the libusb timeout) - libusb_handle_events_timeout(ctx, &zero_tv); - // handle events from other sources here -} - -// clean up and exit -\endcode - * - * \subsection polltime Notes on time-based events - * - * The above complication with having to track time and call into libusb at - * specific moments is a bit of a headache. For maximum compatibility, you do - * need to write your main loop as above, but you may decide that you can - * restrict the supported platforms of your application and get away with - * a more simplistic scheme. - * - * These time-based event complications are \b not required on the following - * platforms: - * - Darwin - * - Linux, provided that the following version requirements are satisfied: - * - Linux v2.6.27 or newer, compiled with timerfd support - * - glibc v2.9 or newer - * - libusb v1.0.5 or newer - * - * Under these configurations, libusb_get_next_timeout() will \em always return - * 0, so your main loop can be simplified to: -\code -// initialise libusb - -libusb_get_pollfds(ctx) -while (user has not requested application exit) { - poll(on libusb file descriptors plus any other event sources of interest, - using any timeout that you like) - if (poll() indicated activity on libusb file descriptors) - libusb_handle_events_timeout(ctx, &zero_tv); - // handle events from other sources here -} - -// clean up and exit -\endcode - * - * Do remember that if you simplify your main loop to the above, you will - * lose compatibility with some platforms (including legacy Linux platforms, - * and any future platforms supported by libusb which may have time-based - * event requirements). The resultant problems will likely appear as - * strange bugs in your application. - * - * You can use the libusb_pollfds_handle_timeouts() function to do a runtime - * check to see if it is safe to ignore the time-based event complications. - * If your application has taken the shortcut of ignoring libusb's next timeout - * in your main loop, then you are advised to check the return value of - * libusb_pollfds_handle_timeouts() during application startup, and to abort - * if the platform does suffer from these timing complications. - * - * \subsection fdsetchange Changes in the file descriptor set - * - * The set of file descriptors that libusb uses as event sources may change - * during the life of your application. Rather than having to repeatedly - * call libusb_get_pollfds(), you can set up notification functions for when - * the file descriptor set changes using libusb_set_pollfd_notifiers(). - * - * \subsection mtissues Multi-threaded considerations - * - * Unfortunately, the situation is complicated further when multiple threads - * come into play. If two threads are monitoring the same file descriptors, - * the fact that only one thread will be woken up when an event occurs causes - * some headaches. - * - * The events lock, event waiters lock, and libusb_handle_events_locked() - * entities are added to solve these problems. You do not need to be concerned - * with these entities otherwise. - * - * See the extra documentation: \ref libusb_mtasync - */ - -/** \page libusb_mtasync Multi-threaded applications and asynchronous I/O - * - * libusb is a thread-safe library, but extra considerations must be applied - * to applications which interact with libusb from multiple threads. - * - * The underlying issue that must be addressed is that all libusb I/O - * revolves around monitoring file descriptors through the poll()/select() - * system calls. This is directly exposed at the - * \ref libusb_asyncio "asynchronous interface" but it is important to note that the - * \ref libusb_syncio "synchronous interface" is implemented on top of the - * asynchonrous interface, therefore the same considerations apply. - * - * The issue is that if two or more threads are concurrently calling poll() - * or select() on libusb's file descriptors then only one of those threads - * will be woken up when an event arrives. The others will be completely - * oblivious that anything has happened. - * - * Consider the following pseudo-code, which submits an asynchronous transfer - * then waits for its completion. This style is one way you could implement a - * synchronous interface on top of the asynchronous interface (and libusb - * does something similar, albeit more advanced due to the complications - * explained on this page). - * -\code -void cb(struct libusb_transfer *transfer) -{ - int *completed = transfer->user_data; - *completed = 1; -} - -void myfunc() { - struct libusb_transfer *transfer; - unsigned char buffer[LIBUSB_CONTROL_SETUP_SIZE] __attribute__ ((aligned (2))); - int completed = 0; - - transfer = libusb_alloc_transfer(0); - libusb_fill_control_setup(buffer, - LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_OUT, 0x04, 0x01, 0, 0); - libusb_fill_control_transfer(transfer, dev, buffer, cb, &completed, 1000); - libusb_submit_transfer(transfer); - - while (!completed) { - poll(libusb file descriptors, 120*1000); - if (poll indicates activity) - libusb_handle_events_timeout(ctx, &zero_tv); - } - printf("completed!"); - // other code here -} -\endcode - * - * Here we are serializing completion of an asynchronous event - * against a condition - the condition being completion of a specific transfer. - * The poll() loop has a long timeout to minimize CPU usage during situations - * when nothing is happening (it could reasonably be unlimited). - * - * If this is the only thread that is polling libusb's file descriptors, there - * is no problem: there is no danger that another thread will swallow up the - * event that we are interested in. On the other hand, if there is another - * thread polling the same descriptors, there is a chance that it will receive - * the event that we were interested in. In this situation, myfunc() - * will only realise that the transfer has completed on the next iteration of - * the loop, up to 120 seconds later. Clearly a two-minute delay is - * undesirable, and don't even think about using short timeouts to circumvent - * this issue! - * - * The solution here is to ensure that no two threads are ever polling the - * file descriptors at the same time. A naive implementation of this would - * impact the capabilities of the library, so libusb offers the scheme - * documented below to ensure no loss of functionality. - * - * Before we go any further, it is worth mentioning that all libusb-wrapped - * event handling procedures fully adhere to the scheme documented below. - * This includes libusb_handle_events() and its variants, and all the - * synchronous I/O functions - libusb hides this headache from you. - * - * \section Using libusb_handle_events() from multiple threads - * - * Even when only using libusb_handle_events() and synchronous I/O functions, - * you can still have a race condition. You might be tempted to solve the - * above with libusb_handle_events() like so: - * -\code - libusb_submit_transfer(transfer); - - while (!completed) { - libusb_handle_events(ctx); - } - printf("completed!"); -\endcode - * - * This however has a race between the checking of completed and - * libusb_handle_events() acquiring the events lock, so another thread - * could have completed the transfer, resulting in this thread hanging - * until either a timeout or another event occurs. See also commit - * 6696512aade99bb15d6792af90ae329af270eba6 which fixes this in the - * synchronous API implementation of libusb. - * - * Fixing this race requires checking the variable completed only after - * taking the event lock, which defeats the concept of just calling - * libusb_handle_events() without worrying about locking. This is why - * libusb-1.0.9 introduces the new libusb_handle_events_timeout_completed() - * and libusb_handle_events_completed() functions, which handles doing the - * completion check for you after they have acquired the lock: - * -\code - libusb_submit_transfer(transfer); - - while (!completed) { - libusb_handle_events_completed(ctx, &completed); - } - printf("completed!"); -\endcode - * - * This nicely fixes the race in our example. Note that if all you want to - * do is submit a single transfer and wait for its completion, then using - * one of the synchronous I/O functions is much easier. - * - * \section eventlock The events lock - * - * The problem is when we consider the fact that libusb exposes file - * descriptors to allow for you to integrate asynchronous USB I/O into - * existing main loops, effectively allowing you to do some work behind - * libusb's back. If you do take libusb's file descriptors and pass them to - * poll()/select() yourself, you need to be aware of the associated issues. - * - * The first concept to be introduced is the events lock. The events lock - * is used to serialize threads that want to handle events, such that only - * one thread is handling events at any one time. - * - * You must take the events lock before polling libusb file descriptors, - * using libusb_lock_events(). You must release the lock as soon as you have - * aborted your poll()/select() loop, using libusb_unlock_events(). - * - * \section threadwait Letting other threads do the work for you - * - * Although the events lock is a critical part of the solution, it is not - * enough on it's own. You might wonder if the following is sufficient... -\code - libusb_lock_events(ctx); - while (!completed) { - poll(libusb file descriptors, 120*1000); - if (poll indicates activity) - libusb_handle_events_timeout(ctx, &zero_tv); - } - libusb_unlock_events(ctx); -\endcode - * ...and the answer is that it is not. This is because the transfer in the - * code shown above may take a long time (say 30 seconds) to complete, and - * the lock is not released until the transfer is completed. - * - * Another thread with similar code that wants to do event handling may be - * working with a transfer that completes after a few milliseconds. Despite - * having such a quick completion time, the other thread cannot check that - * status of its transfer until the code above has finished (30 seconds later) - * due to contention on the lock. - * - * To solve this, libusb offers you a mechanism to determine when another - * thread is handling events. It also offers a mechanism to block your thread - * until the event handling thread has completed an event (and this mechanism - * does not involve polling of file descriptors). - * - * After determining that another thread is currently handling events, you - * obtain the event waiters lock using libusb_lock_event_waiters(). - * You then re-check that some other thread is still handling events, and if - * so, you call libusb_wait_for_event(). - * - * libusb_wait_for_event() puts your application to sleep until an event - * occurs, or until a thread releases the events lock. When either of these - * things happen, your thread is woken up, and should re-check the condition - * it was waiting on. It should also re-check that another thread is handling - * events, and if not, it should start handling events itself. - * - * This looks like the following, as pseudo-code: -\code -retry: -if (libusb_try_lock_events(ctx) == 0) { - // we obtained the event lock: do our own event handling - while (!completed) { - if (!libusb_event_handling_ok(ctx)) { - libusb_unlock_events(ctx); - goto retry; - } - poll(libusb file descriptors, 120*1000); - if (poll indicates activity) - libusb_handle_events_locked(ctx, 0); - } - libusb_unlock_events(ctx); -} else { - // another thread is doing event handling. wait for it to signal us that - // an event has completed - libusb_lock_event_waiters(ctx); - - while (!completed) { - // now that we have the event waiters lock, double check that another - // thread is still handling events for us. (it may have ceased handling - // events in the time it took us to reach this point) - if (!libusb_event_handler_active(ctx)) { - // whoever was handling events is no longer doing so, try again - libusb_unlock_event_waiters(ctx); - goto retry; - } - - libusb_wait_for_event(ctx, NULL); - } - libusb_unlock_event_waiters(ctx); -} -printf("completed!\n"); -\endcode - * - * A naive look at the above code may suggest that this can only support - * one event waiter (hence a total of 2 competing threads, the other doing - * event handling), because the event waiter seems to have taken the event - * waiters lock while waiting for an event. However, the system does support - * multiple event waiters, because libusb_wait_for_event() actually drops - * the lock while waiting, and reaquires it before continuing. - * - * We have now implemented code which can dynamically handle situations where - * nobody is handling events (so we should do it ourselves), and it can also - * handle situations where another thread is doing event handling (so we can - * piggyback onto them). It is also equipped to handle a combination of - * the two, for example, another thread is doing event handling, but for - * whatever reason it stops doing so before our condition is met, so we take - * over the event handling. - * - * Four functions were introduced in the above pseudo-code. Their importance - * should be apparent from the code shown above. - * -# libusb_try_lock_events() is a non-blocking function which attempts - * to acquire the events lock but returns a failure code if it is contended. - * -# libusb_event_handling_ok() checks that libusb is still happy for your - * thread to be performing event handling. Sometimes, libusb needs to - * interrupt the event handler, and this is how you can check if you have - * been interrupted. If this function returns 0, the correct behaviour is - * for you to give up the event handling lock, and then to repeat the cycle. - * The following libusb_try_lock_events() will fail, so you will become an - * events waiter. For more information on this, read \ref fullstory below. - * -# libusb_handle_events_locked() is a variant of - * libusb_handle_events_timeout() that you can call while holding the - * events lock. libusb_handle_events_timeout() itself implements similar - * logic to the above, so be sure not to call it when you are - * "working behind libusb's back", as is the case here. - * -# libusb_event_handler_active() determines if someone is currently - * holding the events lock - * - * You might be wondering why there is no function to wake up all threads - * blocked on libusb_wait_for_event(). This is because libusb can do this - * internally: it will wake up all such threads when someone calls - * libusb_unlock_events() or when a transfer completes (at the point after its - * callback has returned). - * - * \subsection fullstory The full story - * - * The above explanation should be enough to get you going, but if you're - * really thinking through the issues then you may be left with some more - * questions regarding libusb's internals. If you're curious, read on, and if - * not, skip to the next section to avoid confusing yourself! - * - * The immediate question that may spring to mind is: what if one thread - * modifies the set of file descriptors that need to be polled while another - * thread is doing event handling? - * - * There are 2 situations in which this may happen. - * -# libusb_open() will add another file descriptor to the poll set, - * therefore it is desirable to interrupt the event handler so that it - * restarts, picking up the new descriptor. - * -# libusb_close() will remove a file descriptor from the poll set. There - * are all kinds of race conditions that could arise here, so it is - * important that nobody is doing event handling at this time. - * - * libusb handles these issues internally, so application developers do not - * have to stop their event handlers while opening/closing devices. Here's how - * it works, focusing on the libusb_close() situation first: - * - * -# During initialization, libusb opens an internal pipe, and it adds the read - * end of this pipe to the set of file descriptors to be polled. - * -# During libusb_close(), libusb writes some dummy data on this event pipe. - * This immediately interrupts the event handler. libusb also records - * internally that it is trying to interrupt event handlers for this - * high-priority event. - * -# At this point, some of the functions described above start behaving - * differently: - * - libusb_event_handling_ok() starts returning 1, indicating that it is NOT - * OK for event handling to continue. - * - libusb_try_lock_events() starts returning 1, indicating that another - * thread holds the event handling lock, even if the lock is uncontended. - * - libusb_event_handler_active() starts returning 1, indicating that - * another thread is doing event handling, even if that is not true. - * -# The above changes in behaviour result in the event handler stopping and - * giving up the events lock very quickly, giving the high-priority - * libusb_close() operation a "free ride" to acquire the events lock. All - * threads that are competing to do event handling become event waiters. - * -# With the events lock held inside libusb_close(), libusb can safely remove - * a file descriptor from the poll set, in the safety of knowledge that - * nobody is polling those descriptors or trying to access the poll set. - * -# After obtaining the events lock, the close operation completes very - * quickly (usually a matter of milliseconds) and then immediately releases - * the events lock. - * -# At the same time, the behaviour of libusb_event_handling_ok() and friends - * reverts to the original, documented behaviour. - * -# The release of the events lock causes the threads that are waiting for - * events to be woken up and to start competing to become event handlers - * again. One of them will succeed; it will then re-obtain the list of poll - * descriptors, and USB I/O will then continue as normal. - * - * libusb_open() is similar, and is actually a more simplistic case. Upon a - * call to libusb_open(): - * - * -# The device is opened and a file descriptor is added to the poll set. - * -# libusb sends some dummy data on the event pipe, and records that it - * is trying to modify the poll descriptor set. - * -# The event handler is interrupted, and the same behaviour change as for - * libusb_close() takes effect, causing all event handling threads to become - * event waiters. - * -# The libusb_open() implementation takes its free ride to the events lock. - * -# Happy that it has successfully paused the events handler, libusb_open() - * releases the events lock. - * -# The event waiter threads are all woken up and compete to become event - * handlers again. The one that succeeds will obtain the list of poll - * descriptors again, which will include the addition of the new device. - * - * \subsection concl Closing remarks - * - * The above may seem a little complicated, but hopefully I have made it clear - * why such complications are necessary. Also, do not forget that this only - * applies to applications that take libusb's file descriptors and integrate - * them into their own polling loops. - * - * You may decide that it is OK for your multi-threaded application to ignore - * some of the rules and locks detailed above, because you don't think that - * two threads can ever be polling the descriptors at the same time. If that - * is the case, then that's good news for you because you don't have to worry. - * But be careful here; remember that the synchronous I/O functions do event - * handling internally. If you have one thread doing event handling in a loop - * (without implementing the rules and locking semantics documented above) - * and another trying to send a synchronous USB transfer, you will end up with - * two threads monitoring the same descriptors, and the above-described - * undesirable behaviour occurring. The solution is for your polling thread to - * play by the rules; the synchronous I/O functions do so, and this will result - * in them getting along in perfect harmony. - * - * If you do have a dedicated thread doing event handling, it is perfectly - * legal for it to take the event handling lock for long periods of time. Any - * synchronous I/O functions you call from other threads will transparently - * fall back to the "event waiters" mechanism detailed above. The only - * consideration that your event handling thread must apply is the one related - * to libusb_event_handling_ok(): you must call this before every poll(), and - * give up the events lock if instructed. - */ - -int usbi_io_init(struct libusb_context *ctx) -{ - int r; - - usbi_mutex_init(&ctx->flying_transfers_lock); - usbi_mutex_init(&ctx->events_lock); - usbi_mutex_init(&ctx->event_waiters_lock); - usbi_cond_init(&ctx->event_waiters_cond); - usbi_mutex_init(&ctx->event_data_lock); - usbi_tls_key_create(&ctx->event_handling_key); - list_init(&ctx->flying_transfers); - list_init(&ctx->ipollfds); - list_init(&ctx->hotplug_msgs); - list_init(&ctx->completed_transfers); - - /* FIXME should use an eventfd on kernels that support it */ - r = usbi_pipe(ctx->event_pipe); - if (r < 0) { - r = LIBUSB_ERROR_OTHER; - goto err; - } - - r = usbi_add_pollfd(ctx, ctx->event_pipe[0], POLLIN); - if (r < 0) - goto err_close_pipe; - -#ifdef USBI_TIMERFD_AVAILABLE - ctx->timerfd = timerfd_create(usbi_backend.get_timerfd_clockid(), - TFD_NONBLOCK | TFD_CLOEXEC); - if (ctx->timerfd >= 0) { - usbi_dbg("using timerfd for timeouts"); - r = usbi_add_pollfd(ctx, ctx->timerfd, POLLIN); - if (r < 0) - goto err_close_timerfd; - } else { - usbi_dbg("timerfd not available (code %d error %d)", ctx->timerfd, errno); - ctx->timerfd = -1; - } -#endif - - return 0; - -#ifdef USBI_TIMERFD_AVAILABLE -err_close_timerfd: - close(ctx->timerfd); - usbi_remove_pollfd(ctx, ctx->event_pipe[0]); -#endif -err_close_pipe: - usbi_close(ctx->event_pipe[0]); - usbi_close(ctx->event_pipe[1]); -err: - usbi_mutex_destroy(&ctx->flying_transfers_lock); - usbi_mutex_destroy(&ctx->events_lock); - usbi_mutex_destroy(&ctx->event_waiters_lock); - usbi_cond_destroy(&ctx->event_waiters_cond); - usbi_mutex_destroy(&ctx->event_data_lock); - usbi_tls_key_delete(ctx->event_handling_key); - return r; -} - -void usbi_io_exit(struct libusb_context *ctx) -{ - usbi_remove_pollfd(ctx, ctx->event_pipe[0]); - usbi_close(ctx->event_pipe[0]); - usbi_close(ctx->event_pipe[1]); -#ifdef USBI_TIMERFD_AVAILABLE - if (usbi_using_timerfd(ctx)) { - usbi_remove_pollfd(ctx, ctx->timerfd); - close(ctx->timerfd); - } -#endif - usbi_mutex_destroy(&ctx->flying_transfers_lock); - usbi_mutex_destroy(&ctx->events_lock); - usbi_mutex_destroy(&ctx->event_waiters_lock); - usbi_cond_destroy(&ctx->event_waiters_cond); - usbi_mutex_destroy(&ctx->event_data_lock); - usbi_tls_key_delete(ctx->event_handling_key); - free(ctx->pollfds); -} - -static int calculate_timeout(struct usbi_transfer *transfer) -{ - int r; - struct timespec current_time; - unsigned int timeout = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(transfer)->timeout; - - if (!timeout) { - timerclear(&transfer->timeout); - return 0; - } - - r = usbi_backend.clock_gettime(USBI_CLOCK_MONOTONIC, ¤t_time); - if (r < 0) { - usbi_err(ITRANSFER_CTX(transfer), - "failed to read monotonic clock, errno=%d", errno); - return r; - } - - current_time.tv_sec += timeout / 1000; - current_time.tv_nsec += (timeout % 1000) * 1000000; - - while (current_time.tv_nsec >= 1000000000) { - current_time.tv_nsec -= 1000000000; - current_time.tv_sec++; - } - - TIMESPEC_TO_TIMEVAL(&transfer->timeout, ¤t_time); - return 0; -} - -/** \ingroup libusb_asyncio - * Allocate a libusb transfer with a specified number of isochronous packet - * descriptors. The returned transfer is pre-initialized for you. When the new - * transfer is no longer needed, it should be freed with - * libusb_free_transfer(). - * - * Transfers intended for non-isochronous endpoints (e.g. control, bulk, - * interrupt) should specify an iso_packets count of zero. - * - * For transfers intended for isochronous endpoints, specify an appropriate - * number of packet descriptors to be allocated as part of the transfer. - * The returned transfer is not specially initialized for isochronous I/O; - * you are still required to set the - * \ref libusb_transfer::num_iso_packets "num_iso_packets" and - * \ref libusb_transfer::type "type" fields accordingly. - * - * It is safe to allocate a transfer with some isochronous packets and then - * use it on a non-isochronous endpoint. If you do this, ensure that at time - * of submission, num_iso_packets is 0 and that type is set appropriately. - * - * \param iso_packets number of isochronous packet descriptors to allocate. Must be non-negative. - * \returns a newly allocated transfer, or NULL on error - */ -DEFAULT_VISIBILITY -struct libusb_transfer * LIBUSB_CALL libusb_alloc_transfer( - int iso_packets) -{ - struct libusb_transfer *transfer; - size_t os_alloc_size; - size_t alloc_size; - struct usbi_transfer *itransfer; - - assert(iso_packets >= 0); - - os_alloc_size = usbi_backend.transfer_priv_size; - alloc_size = sizeof(struct usbi_transfer) - + sizeof(struct libusb_transfer) - + (sizeof(struct libusb_iso_packet_descriptor) * (size_t)iso_packets) - + os_alloc_size; - itransfer = calloc(1, alloc_size); - if (!itransfer) - return NULL; - - itransfer->num_iso_packets = iso_packets; - usbi_mutex_init(&itransfer->lock); - transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - usbi_dbg("transfer %p", transfer); - return transfer; -} - -/** \ingroup libusb_asyncio - * Free a transfer structure. This should be called for all transfers - * allocated with libusb_alloc_transfer(). - * - * If the \ref libusb_transfer_flags::LIBUSB_TRANSFER_FREE_BUFFER - * "LIBUSB_TRANSFER_FREE_BUFFER" flag is set and the transfer buffer is - * non-NULL, this function will also free the transfer buffer using the - * standard system memory allocator (e.g. free()). - * - * It is legal to call this function with a NULL transfer. In this case, - * the function will simply return safely. - * - * It is not legal to free an active transfer (one which has been submitted - * and has not yet completed). - * - * \param transfer the transfer to free - */ -void API_EXPORTED libusb_free_transfer(struct libusb_transfer *transfer) -{ - struct usbi_transfer *itransfer; - if (!transfer) - return; - - usbi_dbg("transfer %p", transfer); - if (transfer->flags & LIBUSB_TRANSFER_FREE_BUFFER) - free(transfer->buffer); - - itransfer = LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer); - usbi_mutex_destroy(&itransfer->lock); - free(itransfer); -} - -#ifdef USBI_TIMERFD_AVAILABLE -static int disarm_timerfd(struct libusb_context *ctx) -{ - const struct itimerspec disarm_timer = { { 0, 0 }, { 0, 0 } }; - int r; - - usbi_dbg(""); - r = timerfd_settime(ctx->timerfd, 0, &disarm_timer, NULL); - if (r < 0) - return LIBUSB_ERROR_OTHER; - else - return 0; -} - -/* iterates through the flying transfers, and rearms the timerfd based on the - * next upcoming timeout. - * must be called with flying_list locked. - * returns 0 on success or a LIBUSB_ERROR code on failure. - */ -static int arm_timerfd_for_next_timeout(struct libusb_context *ctx) -{ - struct usbi_transfer *transfer; - - list_for_each_entry(transfer, &ctx->flying_transfers, list, struct usbi_transfer) { - struct timeval *cur_tv = &transfer->timeout; - - /* if we've reached transfers of infinite timeout, then we have no - * arming to do */ - if (!timerisset(cur_tv)) - goto disarm; - - /* act on first transfer that has not already been handled */ - if (!(transfer->timeout_flags & (USBI_TRANSFER_TIMEOUT_HANDLED | USBI_TRANSFER_OS_HANDLES_TIMEOUT))) { - int r; - const struct itimerspec it = { {0, 0}, - { cur_tv->tv_sec, cur_tv->tv_usec * 1000 } }; - usbi_dbg("next timeout originally %dms", USBI_TRANSFER_TO_LIBUSB_TRANSFER(transfer)->timeout); - r = timerfd_settime(ctx->timerfd, TFD_TIMER_ABSTIME, &it, NULL); - if (r < 0) - return LIBUSB_ERROR_OTHER; - return 0; - } - } - -disarm: - return disarm_timerfd(ctx); -} -#else -static int arm_timerfd_for_next_timeout(struct libusb_context *ctx) -{ - UNUSED(ctx); - return 0; -} -#endif - -/* add a transfer to the (timeout-sorted) active transfers list. - * This function will return non 0 if fails to update the timer, - * in which case the transfer is *not* on the flying_transfers list. */ -static int add_to_flying_list(struct usbi_transfer *transfer) -{ - struct usbi_transfer *cur; - struct timeval *timeout = &transfer->timeout; - struct libusb_context *ctx = ITRANSFER_CTX(transfer); - int r; - int first = 1; - - r = calculate_timeout(transfer); - if (r) - return r; - - /* if we have no other flying transfers, start the list with this one */ - if (list_empty(&ctx->flying_transfers)) { - list_add(&transfer->list, &ctx->flying_transfers); - goto out; - } - - /* if we have infinite timeout, append to end of list */ - if (!timerisset(timeout)) { - list_add_tail(&transfer->list, &ctx->flying_transfers); - /* first is irrelevant in this case */ - goto out; - } - - /* otherwise, find appropriate place in list */ - list_for_each_entry(cur, &ctx->flying_transfers, list, struct usbi_transfer) { - /* find first timeout that occurs after the transfer in question */ - struct timeval *cur_tv = &cur->timeout; - - if (!timerisset(cur_tv) || (cur_tv->tv_sec > timeout->tv_sec) || - (cur_tv->tv_sec == timeout->tv_sec && - cur_tv->tv_usec > timeout->tv_usec)) { - list_add_tail(&transfer->list, &cur->list); - goto out; - } - first = 0; - } - /* first is 0 at this stage (list not empty) */ - - /* otherwise we need to be inserted at the end */ - list_add_tail(&transfer->list, &ctx->flying_transfers); -out: -#ifdef USBI_TIMERFD_AVAILABLE - if (first && usbi_using_timerfd(ctx) && timerisset(timeout)) { - /* if this transfer has the lowest timeout of all active transfers, - * rearm the timerfd with this transfer's timeout */ - const struct itimerspec it = { {0, 0}, - { timeout->tv_sec, timeout->tv_usec * 1000 } }; - usbi_dbg("arm timerfd for timeout in %dms (first in line)", - USBI_TRANSFER_TO_LIBUSB_TRANSFER(transfer)->timeout); - r = timerfd_settime(ctx->timerfd, TFD_TIMER_ABSTIME, &it, NULL); - if (r < 0) { - usbi_warn(ctx, "failed to arm first timerfd (errno %d)", errno); - r = LIBUSB_ERROR_OTHER; - } - } -#else - UNUSED(first); -#endif - - if (r) - list_del(&transfer->list); - - return r; -} - -/* remove a transfer from the active transfers list. - * This function will *always* remove the transfer from the - * flying_transfers list. It will return a LIBUSB_ERROR code - * if it fails to update the timer for the next timeout. */ -static int remove_from_flying_list(struct usbi_transfer *transfer) -{ - struct libusb_context *ctx = ITRANSFER_CTX(transfer); - int rearm_timerfd; - int r = 0; - - usbi_mutex_lock(&ctx->flying_transfers_lock); - rearm_timerfd = (timerisset(&transfer->timeout) && - list_first_entry(&ctx->flying_transfers, struct usbi_transfer, list) == transfer); - list_del(&transfer->list); - if (usbi_using_timerfd(ctx) && rearm_timerfd) - r = arm_timerfd_for_next_timeout(ctx); - usbi_mutex_unlock(&ctx->flying_transfers_lock); - - return r; -} - -/** \ingroup libusb_asyncio - * Submit a transfer. This function will fire off the USB transfer and then - * return immediately. - * - * \param transfer the transfer to submit - * \returns 0 on success - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns LIBUSB_ERROR_BUSY if the transfer has already been submitted. - * \returns LIBUSB_ERROR_NOT_SUPPORTED if the transfer flags are not supported - * by the operating system. - * \returns LIBUSB_ERROR_INVALID_PARAM if the transfer size is larger than - * the operating system and/or hardware can support - * \returns another LIBUSB_ERROR code on other failure - */ -int API_EXPORTED libusb_submit_transfer(struct libusb_transfer *transfer) -{ - struct usbi_transfer *itransfer = - LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer); - struct libusb_context *ctx = TRANSFER_CTX(transfer); - int r; - - usbi_dbg("transfer %p", transfer); - - /* - * Important note on locking, this function takes / releases locks - * in the following order: - * take flying_transfers_lock - * take itransfer->lock - * clear transfer - * add to flying_transfers list - * release flying_transfers_lock - * submit transfer - * release itransfer->lock - * if submit failed: - * take flying_transfers_lock - * remove from flying_transfers list - * release flying_transfers_lock - * - * Note that it takes locks in the order a-b and then releases them - * in the same order a-b. This is somewhat unusual but not wrong, - * release order is not important as long as *all* locks are released - * before re-acquiring any locks. - * - * This means that the ordering of first releasing itransfer->lock - * and then re-acquiring the flying_transfers_list on error is - * important and must not be changed! - * - * This is done this way because when we take both locks we must always - * take flying_transfers_lock first to avoid ab-ba style deadlocks with - * the timeout handling and usbi_handle_disconnect paths. - * - * And we cannot release itransfer->lock before the submission is - * complete otherwise timeout handling for transfers with short - * timeouts may run before submission. - */ - usbi_mutex_lock(&ctx->flying_transfers_lock); - usbi_mutex_lock(&itransfer->lock); - if (itransfer->state_flags & USBI_TRANSFER_IN_FLIGHT) { - usbi_mutex_unlock(&ctx->flying_transfers_lock); - usbi_mutex_unlock(&itransfer->lock); - return LIBUSB_ERROR_BUSY; - } - itransfer->transferred = 0; - itransfer->state_flags = 0; - itransfer->timeout_flags = 0; - r = add_to_flying_list(itransfer); - if (r) { - usbi_mutex_unlock(&ctx->flying_transfers_lock); - usbi_mutex_unlock(&itransfer->lock); - return r; - } - /* - * We must release the flying transfers lock here, because with - * some backends the submit_transfer method is synchroneous. - */ - usbi_mutex_unlock(&ctx->flying_transfers_lock); - - r = usbi_backend.submit_transfer(itransfer); - if (r == LIBUSB_SUCCESS) { - itransfer->state_flags |= USBI_TRANSFER_IN_FLIGHT; - /* keep a reference to this device */ - libusb_ref_device(transfer->dev_handle->dev); - } - usbi_mutex_unlock(&itransfer->lock); - - if (r != LIBUSB_SUCCESS) - remove_from_flying_list(itransfer); - - return r; -} - -/** \ingroup libusb_asyncio - * Asynchronously cancel a previously submitted transfer. - * This function returns immediately, but this does not indicate cancellation - * is complete. Your callback function will be invoked at some later time - * with a transfer status of - * \ref libusb_transfer_status::LIBUSB_TRANSFER_CANCELLED - * "LIBUSB_TRANSFER_CANCELLED." - * - * \param transfer the transfer to cancel - * \returns 0 on success - * \returns LIBUSB_ERROR_NOT_FOUND if the transfer is not in progress, - * already complete, or already cancelled. - * \returns a LIBUSB_ERROR code on failure - */ -int API_EXPORTED libusb_cancel_transfer(struct libusb_transfer *transfer) -{ - struct usbi_transfer *itransfer = - LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer); - int r; - - usbi_dbg("transfer %p", transfer ); - usbi_mutex_lock(&itransfer->lock); - if (!(itransfer->state_flags & USBI_TRANSFER_IN_FLIGHT) - || (itransfer->state_flags & USBI_TRANSFER_CANCELLING)) { - r = LIBUSB_ERROR_NOT_FOUND; - goto out; - } - r = usbi_backend.cancel_transfer(itransfer); - if (r < 0) { - if (r != LIBUSB_ERROR_NOT_FOUND && - r != LIBUSB_ERROR_NO_DEVICE) - usbi_err(TRANSFER_CTX(transfer), - "cancel transfer failed error %d", r); - else - usbi_dbg("cancel transfer failed error %d", r); - - if (r == LIBUSB_ERROR_NO_DEVICE) - itransfer->state_flags |= USBI_TRANSFER_DEVICE_DISAPPEARED; - } - - itransfer->state_flags |= USBI_TRANSFER_CANCELLING; - -out: - usbi_mutex_unlock(&itransfer->lock); - return r; -} - -/** \ingroup libusb_asyncio - * Set a transfers bulk stream id. Note users are advised to use - * libusb_fill_bulk_stream_transfer() instead of calling this function - * directly. - * - * Since version 1.0.19, \ref LIBUSB_API_VERSION >= 0x01000103 - * - * \param transfer the transfer to set the stream id for - * \param stream_id the stream id to set - * \see libusb_alloc_streams() - */ -void API_EXPORTED libusb_transfer_set_stream_id( - struct libusb_transfer *transfer, uint32_t stream_id) -{ - struct usbi_transfer *itransfer = - LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer); - - itransfer->stream_id = stream_id; -} - -/** \ingroup libusb_asyncio - * Get a transfers bulk stream id. - * - * Since version 1.0.19, \ref LIBUSB_API_VERSION >= 0x01000103 - * - * \param transfer the transfer to get the stream id for - * \returns the stream id for the transfer - */ -uint32_t API_EXPORTED libusb_transfer_get_stream_id( - struct libusb_transfer *transfer) -{ - struct usbi_transfer *itransfer = - LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer); - - return itransfer->stream_id; -} - -/* Handle completion of a transfer (completion might be an error condition). - * This will invoke the user-supplied callback function, which may end up - * freeing the transfer. Therefore you cannot use the transfer structure - * after calling this function, and you should free all backend-specific - * data before calling it. - * Do not call this function with the usbi_transfer lock held. User-specified - * callback functions may attempt to directly resubmit the transfer, which - * will attempt to take the lock. */ -int usbi_handle_transfer_completion(struct usbi_transfer *itransfer, - enum libusb_transfer_status status) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_device_handle *dev_handle = transfer->dev_handle; - uint8_t flags; - int r; - - r = remove_from_flying_list(itransfer); - if (r < 0) - usbi_err(ITRANSFER_CTX(itransfer), "failed to set timer for next timeout, errno=%d", errno); - - usbi_mutex_lock(&itransfer->lock); - itransfer->state_flags &= ~USBI_TRANSFER_IN_FLIGHT; - usbi_mutex_unlock(&itransfer->lock); - - if (status == LIBUSB_TRANSFER_COMPLETED - && transfer->flags & LIBUSB_TRANSFER_SHORT_NOT_OK) { - int rqlen = transfer->length; - if (transfer->type == LIBUSB_TRANSFER_TYPE_CONTROL) - rqlen -= LIBUSB_CONTROL_SETUP_SIZE; - if (rqlen != itransfer->transferred) { - usbi_dbg("interpreting short transfer as error"); - status = LIBUSB_TRANSFER_ERROR; - } - } - - flags = transfer->flags; - transfer->status = status; - transfer->actual_length = itransfer->transferred; - usbi_dbg("transfer %p has callback %p", transfer, transfer->callback); - if (transfer->callback) - transfer->callback(transfer); - /* transfer might have been freed by the above call, do not use from - * this point. */ - if (flags & LIBUSB_TRANSFER_FREE_TRANSFER) - libusb_free_transfer(transfer); - libusb_unref_device(dev_handle->dev); - return r; -} - -/* Similar to usbi_handle_transfer_completion() but exclusively for transfers - * that were asynchronously cancelled. The same concerns w.r.t. freeing of - * transfers exist here. - * Do not call this function with the usbi_transfer lock held. User-specified - * callback functions may attempt to directly resubmit the transfer, which - * will attempt to take the lock. */ -int usbi_handle_transfer_cancellation(struct usbi_transfer *transfer) -{ - struct libusb_context *ctx = ITRANSFER_CTX(transfer); - uint8_t timed_out; - - usbi_mutex_lock(&ctx->flying_transfers_lock); - timed_out = transfer->timeout_flags & USBI_TRANSFER_TIMED_OUT; - usbi_mutex_unlock(&ctx->flying_transfers_lock); - - /* if the URB was cancelled due to timeout, report timeout to the user */ - if (timed_out) { - usbi_dbg("detected timeout cancellation"); - return usbi_handle_transfer_completion(transfer, LIBUSB_TRANSFER_TIMED_OUT); - } - - /* otherwise its a normal async cancel */ - return usbi_handle_transfer_completion(transfer, LIBUSB_TRANSFER_CANCELLED); -} - -/* Add a completed transfer to the completed_transfers list of the - * context and signal the event. The backend's handle_transfer_completion() - * function will be called the next time an event handler runs. */ -void usbi_signal_transfer_completion(struct usbi_transfer *transfer) -{ - libusb_device_handle *dev_handle = USBI_TRANSFER_TO_LIBUSB_TRANSFER(transfer)->dev_handle; - - if (dev_handle) { - struct libusb_context *ctx = HANDLE_CTX(dev_handle); - int pending_events; - - usbi_mutex_lock(&ctx->event_data_lock); - pending_events = usbi_pending_events(ctx); - list_add_tail(&transfer->completed_list, &ctx->completed_transfers); - if (!pending_events) - usbi_signal_event(ctx); - usbi_mutex_unlock(&ctx->event_data_lock); - } -} - -/** \ingroup libusb_poll - * Attempt to acquire the event handling lock. This lock is used to ensure that - * only one thread is monitoring libusb event sources at any one time. - * - * You only need to use this lock if you are developing an application - * which calls poll() or select() on libusb's file descriptors directly. - * If you stick to libusb's event handling loop functions (e.g. - * libusb_handle_events()) then you do not need to be concerned with this - * locking. - * - * While holding this lock, you are trusted to actually be handling events. - * If you are no longer handling events, you must call libusb_unlock_events() - * as soon as possible. - * - * \param ctx the context to operate on, or NULL for the default context - * \returns 0 if the lock was obtained successfully - * \returns 1 if the lock was not obtained (i.e. another thread holds the lock) - * \ref libusb_mtasync - */ -int API_EXPORTED libusb_try_lock_events(libusb_context *ctx) -{ - int r; - unsigned int ru; - USBI_GET_CONTEXT(ctx); - - /* is someone else waiting to close a device? if so, don't let this thread - * start event handling */ - usbi_mutex_lock(&ctx->event_data_lock); - ru = ctx->device_close; - usbi_mutex_unlock(&ctx->event_data_lock); - if (ru) { - usbi_dbg("someone else is closing a device"); - return 1; - } - - r = usbi_mutex_trylock(&ctx->events_lock); - if (r) - return 1; - - ctx->event_handler_active = 1; - return 0; -} - -/** \ingroup libusb_poll - * Acquire the event handling lock, blocking until successful acquisition if - * it is contended. This lock is used to ensure that only one thread is - * monitoring libusb event sources at any one time. - * - * You only need to use this lock if you are developing an application - * which calls poll() or select() on libusb's file descriptors directly. - * If you stick to libusb's event handling loop functions (e.g. - * libusb_handle_events()) then you do not need to be concerned with this - * locking. - * - * While holding this lock, you are trusted to actually be handling events. - * If you are no longer handling events, you must call libusb_unlock_events() - * as soon as possible. - * - * \param ctx the context to operate on, or NULL for the default context - * \ref libusb_mtasync - */ -void API_EXPORTED libusb_lock_events(libusb_context *ctx) -{ - USBI_GET_CONTEXT(ctx); - usbi_mutex_lock(&ctx->events_lock); - ctx->event_handler_active = 1; -} - -/** \ingroup libusb_poll - * Release the lock previously acquired with libusb_try_lock_events() or - * libusb_lock_events(). Releasing this lock will wake up any threads blocked - * on libusb_wait_for_event(). - * - * \param ctx the context to operate on, or NULL for the default context - * \ref libusb_mtasync - */ -void API_EXPORTED libusb_unlock_events(libusb_context *ctx) -{ - USBI_GET_CONTEXT(ctx); - ctx->event_handler_active = 0; - usbi_mutex_unlock(&ctx->events_lock); - - /* FIXME: perhaps we should be a bit more efficient by not broadcasting - * the availability of the events lock when we are modifying pollfds - * (check ctx->device_close)? */ - usbi_mutex_lock(&ctx->event_waiters_lock); - usbi_cond_broadcast(&ctx->event_waiters_cond); - usbi_mutex_unlock(&ctx->event_waiters_lock); -} - -/** \ingroup libusb_poll - * Determine if it is still OK for this thread to be doing event handling. - * - * Sometimes, libusb needs to temporarily pause all event handlers, and this - * is the function you should use before polling file descriptors to see if - * this is the case. - * - * If this function instructs your thread to give up the events lock, you - * should just continue the usual logic that is documented in \ref libusb_mtasync. - * On the next iteration, your thread will fail to obtain the events lock, - * and will hence become an event waiter. - * - * This function should be called while the events lock is held: you don't - * need to worry about the results of this function if your thread is not - * the current event handler. - * - * \param ctx the context to operate on, or NULL for the default context - * \returns 1 if event handling can start or continue - * \returns 0 if this thread must give up the events lock - * \ref fullstory "Multi-threaded I/O: the full story" - */ -int API_EXPORTED libusb_event_handling_ok(libusb_context *ctx) -{ - unsigned int r; - USBI_GET_CONTEXT(ctx); - - /* is someone else waiting to close a device? if so, don't let this thread - * continue event handling */ - usbi_mutex_lock(&ctx->event_data_lock); - r = ctx->device_close; - usbi_mutex_unlock(&ctx->event_data_lock); - if (r) { - usbi_dbg("someone else is closing a device"); - return 0; - } - - return 1; -} - - -/** \ingroup libusb_poll - * Determine if an active thread is handling events (i.e. if anyone is holding - * the event handling lock). - * - * \param ctx the context to operate on, or NULL for the default context - * \returns 1 if a thread is handling events - * \returns 0 if there are no threads currently handling events - * \ref libusb_mtasync - */ -int API_EXPORTED libusb_event_handler_active(libusb_context *ctx) -{ - unsigned int r; - USBI_GET_CONTEXT(ctx); - - /* is someone else waiting to close a device? if so, don't let this thread - * start event handling -- indicate that event handling is happening */ - usbi_mutex_lock(&ctx->event_data_lock); - r = ctx->device_close; - usbi_mutex_unlock(&ctx->event_data_lock); - if (r) { - usbi_dbg("someone else is closing a device"); - return 1; - } - - return ctx->event_handler_active; -} - -/** \ingroup libusb_poll - * Interrupt any active thread that is handling events. This is mainly useful - * for interrupting a dedicated event handling thread when an application - * wishes to call libusb_exit(). - * - * Since version 1.0.21, \ref LIBUSB_API_VERSION >= 0x01000105 - * - * \param ctx the context to operate on, or NULL for the default context - * \ref libusb_mtasync - */ -void API_EXPORTED libusb_interrupt_event_handler(libusb_context *ctx) -{ - int pending_events; - USBI_GET_CONTEXT(ctx); - - usbi_dbg(""); - usbi_mutex_lock(&ctx->event_data_lock); - - pending_events = usbi_pending_events(ctx); - ctx->event_flags |= USBI_EVENT_USER_INTERRUPT; - if (!pending_events) - usbi_signal_event(ctx); - - usbi_mutex_unlock(&ctx->event_data_lock); -} - -/** \ingroup libusb_poll - * Acquire the event waiters lock. This lock is designed to be obtained under - * the situation where you want to be aware when events are completed, but - * some other thread is event handling so calling libusb_handle_events() is not - * allowed. - * - * You then obtain this lock, re-check that another thread is still handling - * events, then call libusb_wait_for_event(). - * - * You only need to use this lock if you are developing an application - * which calls poll() or select() on libusb's file descriptors directly, - * and may potentially be handling events from 2 threads simultaenously. - * If you stick to libusb's event handling loop functions (e.g. - * libusb_handle_events()) then you do not need to be concerned with this - * locking. - * - * \param ctx the context to operate on, or NULL for the default context - * \ref libusb_mtasync - */ -void API_EXPORTED libusb_lock_event_waiters(libusb_context *ctx) -{ - USBI_GET_CONTEXT(ctx); - usbi_mutex_lock(&ctx->event_waiters_lock); -} - -/** \ingroup libusb_poll - * Release the event waiters lock. - * \param ctx the context to operate on, or NULL for the default context - * \ref libusb_mtasync - */ -void API_EXPORTED libusb_unlock_event_waiters(libusb_context *ctx) -{ - USBI_GET_CONTEXT(ctx); - usbi_mutex_unlock(&ctx->event_waiters_lock); -} - -/** \ingroup libusb_poll - * Wait for another thread to signal completion of an event. Must be called - * with the event waiters lock held, see libusb_lock_event_waiters(). - * - * This function will block until any of the following conditions are met: - * -# The timeout expires - * -# A transfer completes - * -# A thread releases the event handling lock through libusb_unlock_events() - * - * Condition 1 is obvious. Condition 2 unblocks your thread after - * the callback for the transfer has completed. Condition 3 is important - * because it means that the thread that was previously handling events is no - * longer doing so, so if any events are to complete, another thread needs to - * step up and start event handling. - * - * This function releases the event waiters lock before putting your thread - * to sleep, and reacquires the lock as it is being woken up. - * - * \param ctx the context to operate on, or NULL for the default context - * \param tv maximum timeout for this blocking function. A NULL value - * indicates unlimited timeout. - * \returns 0 after a transfer completes or another thread stops event handling - * \returns 1 if the timeout expired - * \ref libusb_mtasync - */ -int API_EXPORTED libusb_wait_for_event(libusb_context *ctx, struct timeval *tv) -{ - int r; - - USBI_GET_CONTEXT(ctx); - if (tv == NULL) { - usbi_cond_wait(&ctx->event_waiters_cond, &ctx->event_waiters_lock); - return 0; - } - - r = usbi_cond_timedwait(&ctx->event_waiters_cond, - &ctx->event_waiters_lock, tv); - - if (r < 0) - return r; - else - return (r == ETIMEDOUT); -} - -static void handle_timeout(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - int r; - - itransfer->timeout_flags |= USBI_TRANSFER_TIMEOUT_HANDLED; - r = libusb_cancel_transfer(transfer); - if (r == LIBUSB_SUCCESS) - itransfer->timeout_flags |= USBI_TRANSFER_TIMED_OUT; - else - usbi_warn(TRANSFER_CTX(transfer), - "async cancel failed %d errno=%d", r, errno); -} - -static int handle_timeouts_locked(struct libusb_context *ctx) -{ - int r; - struct timespec systime_ts; - struct timeval systime; - struct usbi_transfer *transfer; - - if (list_empty(&ctx->flying_transfers)) - return 0; - - /* get current time */ - r = usbi_backend.clock_gettime(USBI_CLOCK_MONOTONIC, &systime_ts); - if (r < 0) - return r; - - TIMESPEC_TO_TIMEVAL(&systime, &systime_ts); - - /* iterate through flying transfers list, finding all transfers that - * have expired timeouts */ - list_for_each_entry(transfer, &ctx->flying_transfers, list, struct usbi_transfer) { - struct timeval *cur_tv = &transfer->timeout; - - /* if we've reached transfers of infinite timeout, we're all done */ - if (!timerisset(cur_tv)) - return 0; - - /* ignore timeouts we've already handled */ - if (transfer->timeout_flags & (USBI_TRANSFER_TIMEOUT_HANDLED | USBI_TRANSFER_OS_HANDLES_TIMEOUT)) - continue; - - /* if transfer has non-expired timeout, nothing more to do */ - if ((cur_tv->tv_sec > systime.tv_sec) || - (cur_tv->tv_sec == systime.tv_sec && - cur_tv->tv_usec > systime.tv_usec)) - return 0; - - /* otherwise, we've got an expired timeout to handle */ - handle_timeout(transfer); - } - return 0; -} - -static int handle_timeouts(struct libusb_context *ctx) -{ - int r; - USBI_GET_CONTEXT(ctx); - usbi_mutex_lock(&ctx->flying_transfers_lock); - r = handle_timeouts_locked(ctx); - usbi_mutex_unlock(&ctx->flying_transfers_lock); - return r; -} - -#ifdef USBI_TIMERFD_AVAILABLE -static int handle_timerfd_trigger(struct libusb_context *ctx) -{ - int r; - - usbi_mutex_lock(&ctx->flying_transfers_lock); - - /* process the timeout that just happened */ - r = handle_timeouts_locked(ctx); - if (r < 0) - goto out; - - /* arm for next timeout*/ - r = arm_timerfd_for_next_timeout(ctx); - -out: - usbi_mutex_unlock(&ctx->flying_transfers_lock); - return r; -} -#endif - -/* do the actual event handling. assumes that no other thread is concurrently - * doing the same thing. */ -static int handle_events(struct libusb_context *ctx, struct timeval *tv) -{ - int r; - struct usbi_pollfd *ipollfd; - POLL_NFDS_TYPE nfds = 0; - POLL_NFDS_TYPE internal_nfds; - struct pollfd *fds = NULL; - int i = -1; - int timeout_ms; - - /* prevent attempts to recursively handle events (e.g. calling into - * libusb_handle_events() from within a hotplug or transfer callback) */ - usbi_mutex_lock(&ctx->event_data_lock); - r = 0; - if (usbi_handling_events(ctx)) - r = LIBUSB_ERROR_BUSY; - else - usbi_start_event_handling(ctx); - usbi_mutex_unlock(&ctx->event_data_lock); - - if (r) - return r; - - /* there are certain fds that libusb uses internally, currently: - * - * 1) event pipe - * 2) timerfd - * - * the backend will never need to attempt to handle events on these fds, so - * we determine how many fds are in use internally for this context and when - * handle_events() is called in the backend, the pollfd list and count will - * be adjusted to skip over these internal fds */ - if (usbi_using_timerfd(ctx)) - internal_nfds = 2; - else - internal_nfds = 1; - - /* only reallocate the poll fds when the list of poll fds has been modified - * since the last poll, otherwise reuse them to save the additional overhead */ - usbi_mutex_lock(&ctx->event_data_lock); - if (ctx->event_flags & USBI_EVENT_POLLFDS_MODIFIED) { - usbi_dbg("poll fds modified, reallocating"); - - free(ctx->pollfds); - ctx->pollfds = NULL; - - /* sanity check - it is invalid for a context to have fewer than the - * required internal fds (memory corruption?) */ - assert(ctx->pollfds_cnt >= internal_nfds); - - ctx->pollfds = calloc(ctx->pollfds_cnt, sizeof(*ctx->pollfds)); - if (!ctx->pollfds) { - usbi_mutex_unlock(&ctx->event_data_lock); - r = LIBUSB_ERROR_NO_MEM; - goto done; - } - - list_for_each_entry(ipollfd, &ctx->ipollfds, list, struct usbi_pollfd) { - struct libusb_pollfd *pollfd = &ipollfd->pollfd; - i++; - ctx->pollfds[i].fd = pollfd->fd; - ctx->pollfds[i].events = pollfd->events; - } - - /* reset the flag now that we have the updated list */ - ctx->event_flags &= ~USBI_EVENT_POLLFDS_MODIFIED; - - /* if no further pending events, clear the event pipe so that we do - * not immediately return from poll */ - if (!usbi_pending_events(ctx)) - usbi_clear_event(ctx); - } - fds = ctx->pollfds; - nfds = ctx->pollfds_cnt; - usbi_inc_fds_ref(fds, nfds); - usbi_mutex_unlock(&ctx->event_data_lock); - - timeout_ms = (int)(tv->tv_sec * 1000) + (tv->tv_usec / 1000); - - /* round up to next millisecond */ - if (tv->tv_usec % 1000) - timeout_ms++; - - usbi_dbg("poll() %d fds with timeout in %dms", nfds, timeout_ms); - r = usbi_poll(fds, nfds, timeout_ms); - usbi_dbg("poll() returned %d", r); - if (r == 0) { - r = handle_timeouts(ctx); - goto done; - } else if (r == -1 && errno == EINTR) { - r = LIBUSB_ERROR_INTERRUPTED; - goto done; - } else if (r < 0) { - usbi_err(ctx, "poll failed %d err=%d", r, errno); - r = LIBUSB_ERROR_IO; - goto done; - } - - /* fds[0] is always the event pipe */ - if (fds[0].revents) { - struct list_head hotplug_msgs; - struct usbi_transfer *itransfer; - int hotplug_cb_deregistered = 0; - int ret = 0; - - list_init(&hotplug_msgs); - - usbi_dbg("caught a fish on the event pipe"); - - /* take the the event data lock while processing events */ - usbi_mutex_lock(&ctx->event_data_lock); - - /* check if someone added a new poll fd */ - if (ctx->event_flags & USBI_EVENT_POLLFDS_MODIFIED) - usbi_dbg("someone updated the poll fds"); - - if (ctx->event_flags & USBI_EVENT_USER_INTERRUPT) { - usbi_dbg("someone purposely interrupted"); - ctx->event_flags &= ~USBI_EVENT_USER_INTERRUPT; - } - - if (ctx->event_flags & USBI_EVENT_HOTPLUG_CB_DEREGISTERED) { - usbi_dbg("someone unregistered a hotplug cb"); - ctx->event_flags &= ~USBI_EVENT_HOTPLUG_CB_DEREGISTERED; - hotplug_cb_deregistered = 1; - } - - /* check if someone is closing a device */ - if (ctx->device_close) - usbi_dbg("someone is closing a device"); - - /* check for any pending hotplug messages */ - if (!list_empty(&ctx->hotplug_msgs)) { - usbi_dbg("hotplug message received"); - list_cut(&hotplug_msgs, &ctx->hotplug_msgs); - } - - /* complete any pending transfers */ - while (ret == 0 && !list_empty(&ctx->completed_transfers)) { - itransfer = list_first_entry(&ctx->completed_transfers, struct usbi_transfer, completed_list); - list_del(&itransfer->completed_list); - usbi_mutex_unlock(&ctx->event_data_lock); - ret = usbi_backend.handle_transfer_completion(itransfer); - if (ret) - usbi_err(ctx, "backend handle_transfer_completion failed with error %d", ret); - usbi_mutex_lock(&ctx->event_data_lock); - } - - /* if no further pending events, clear the event pipe */ - if (!usbi_pending_events(ctx)) - usbi_clear_event(ctx); - - usbi_mutex_unlock(&ctx->event_data_lock); - - if (hotplug_cb_deregistered) - usbi_hotplug_deregister(ctx, 0); - - /* process the hotplug messages, if any */ - while (!list_empty(&hotplug_msgs)) { - struct libusb_hotplug_message *message = - list_first_entry(&hotplug_msgs, struct libusb_hotplug_message, list); - - usbi_hotplug_match(ctx, message->device, message->event); - - /* the device left, dereference the device */ - if (LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT == message->event) - libusb_unref_device(message->device); - - list_del(&message->list); - free(message); - } - - if (ret) { - /* return error code */ - r = ret; - goto done; - } - - if (0 == --r) - goto done; - } - -#ifdef USBI_TIMERFD_AVAILABLE - /* on timerfd configurations, fds[1] is the timerfd */ - if (usbi_using_timerfd(ctx) && fds[1].revents) { - /* timerfd indicates that a timeout has expired */ - int ret; - usbi_dbg("timerfd triggered"); - - ret = handle_timerfd_trigger(ctx); - if (ret < 0) { - /* return error code */ - r = ret; - goto done; - } - - if (0 == --r) - goto done; - } -#endif - - r = usbi_backend.handle_events(ctx, fds + internal_nfds, nfds - internal_nfds, r); - if (r) - usbi_err(ctx, "backend handle_events failed with error %d", r); - -done: - usbi_end_event_handling(ctx); - usbi_dec_fds_ref(fds, nfds); - return r; -} - -/* returns the smallest of: - * 1. timeout of next URB - * 2. user-supplied timeout - * returns 1 if there is an already-expired timeout, otherwise returns 0 - * and populates out - */ -static int get_next_timeout(libusb_context *ctx, struct timeval *tv, - struct timeval *out) -{ - struct timeval timeout; - int r = libusb_get_next_timeout(ctx, &timeout); - if (r) { - /* timeout already expired? */ - if (!timerisset(&timeout)) - return 1; - - /* choose the smallest of next URB timeout or user specified timeout */ - if (timercmp(&timeout, tv, <)) - *out = timeout; - else - *out = *tv; - } else { - *out = *tv; - } - return 0; -} - -/** \ingroup libusb_poll - * Handle any pending events. - * - * libusb determines "pending events" by checking if any timeouts have expired - * and by checking the set of file descriptors for activity. - * - * If a zero timeval is passed, this function will handle any already-pending - * events and then immediately return in non-blocking style. - * - * If a non-zero timeval is passed and no events are currently pending, this - * function will block waiting for events to handle up until the specified - * timeout. If an event arrives or a signal is raised, this function will - * return early. - * - * If the parameter completed is not NULL then after obtaining the event - * handling lock this function will return immediately if the integer - * pointed to is not 0. This allows for race free waiting for the completion - * of a specific transfer. - * - * \param ctx the context to operate on, or NULL for the default context - * \param tv the maximum time to block waiting for events, or an all zero - * timeval struct for non-blocking mode - * \param completed pointer to completion integer to check, or NULL - * \returns 0 on success, or a LIBUSB_ERROR code on failure - * \ref libusb_mtasync - */ -int API_EXPORTED libusb_handle_events_timeout_completed(libusb_context *ctx, - struct timeval *tv, int *completed) -{ - int r; - struct timeval poll_timeout; - - USBI_GET_CONTEXT(ctx); - r = get_next_timeout(ctx, tv, &poll_timeout); - if (r) { - /* timeout already expired */ - return handle_timeouts(ctx); - } - -retry: - if (libusb_try_lock_events(ctx) == 0) { - if (completed == NULL || !*completed) { - /* we obtained the event lock: do our own event handling */ - usbi_dbg("doing our own event handling"); - r = handle_events(ctx, &poll_timeout); - } - libusb_unlock_events(ctx); - return r; - } - - /* another thread is doing event handling. wait for thread events that - * notify event completion. */ - libusb_lock_event_waiters(ctx); - - if (completed && *completed) - goto already_done; - - if (!libusb_event_handler_active(ctx)) { - /* we hit a race: whoever was event handling earlier finished in the - * time it took us to reach this point. try the cycle again. */ - libusb_unlock_event_waiters(ctx); - usbi_dbg("event handler was active but went away, retrying"); - goto retry; - } - - usbi_dbg("another thread is doing event handling"); - r = libusb_wait_for_event(ctx, &poll_timeout); - -already_done: - libusb_unlock_event_waiters(ctx); - - if (r < 0) - return r; - else if (r == 1) - return handle_timeouts(ctx); - else - return 0; -} - -/** \ingroup libusb_poll - * Handle any pending events - * - * Like libusb_handle_events_timeout_completed(), but without the completed - * parameter, calling this function is equivalent to calling - * libusb_handle_events_timeout_completed() with a NULL completed parameter. - * - * This function is kept primarily for backwards compatibility. - * All new code should call libusb_handle_events_completed() or - * libusb_handle_events_timeout_completed() to avoid race conditions. - * - * \param ctx the context to operate on, or NULL for the default context - * \param tv the maximum time to block waiting for events, or an all zero - * timeval struct for non-blocking mode - * \returns 0 on success, or a LIBUSB_ERROR code on failure - */ -int API_EXPORTED libusb_handle_events_timeout(libusb_context *ctx, - struct timeval *tv) -{ - return libusb_handle_events_timeout_completed(ctx, tv, NULL); -} - -/** \ingroup libusb_poll - * Handle any pending events in blocking mode. There is currently a timeout - * hardcoded at 60 seconds but we plan to make it unlimited in future. For - * finer control over whether this function is blocking or non-blocking, or - * for control over the timeout, use libusb_handle_events_timeout_completed() - * instead. - * - * This function is kept primarily for backwards compatibility. - * All new code should call libusb_handle_events_completed() or - * libusb_handle_events_timeout_completed() to avoid race conditions. - * - * \param ctx the context to operate on, or NULL for the default context - * \returns 0 on success, or a LIBUSB_ERROR code on failure - */ -int API_EXPORTED libusb_handle_events(libusb_context *ctx) -{ - struct timeval tv; - tv.tv_sec = 60; - tv.tv_usec = 0; - return libusb_handle_events_timeout_completed(ctx, &tv, NULL); -} - -/** \ingroup libusb_poll - * Handle any pending events in blocking mode. - * - * Like libusb_handle_events(), with the addition of a completed parameter - * to allow for race free waiting for the completion of a specific transfer. - * - * See libusb_handle_events_timeout_completed() for details on the completed - * parameter. - * - * \param ctx the context to operate on, or NULL for the default context - * \param completed pointer to completion integer to check, or NULL - * \returns 0 on success, or a LIBUSB_ERROR code on failure - * \ref libusb_mtasync - */ -int API_EXPORTED libusb_handle_events_completed(libusb_context *ctx, - int *completed) -{ - struct timeval tv; - tv.tv_sec = 60; - tv.tv_usec = 0; - return libusb_handle_events_timeout_completed(ctx, &tv, completed); -} - -/** \ingroup libusb_poll - * Handle any pending events by polling file descriptors, without checking if - * any other threads are already doing so. Must be called with the event lock - * held, see libusb_lock_events(). - * - * This function is designed to be called under the situation where you have - * taken the event lock and are calling poll()/select() directly on libusb's - * file descriptors (as opposed to using libusb_handle_events() or similar). - * You detect events on libusb's descriptors, so you then call this function - * with a zero timeout value (while still holding the event lock). - * - * \param ctx the context to operate on, or NULL for the default context - * \param tv the maximum time to block waiting for events, or zero for - * non-blocking mode - * \returns 0 on success, or a LIBUSB_ERROR code on failure - * \ref libusb_mtasync - */ -int API_EXPORTED libusb_handle_events_locked(libusb_context *ctx, - struct timeval *tv) -{ - int r; - struct timeval poll_timeout; - - USBI_GET_CONTEXT(ctx); - r = get_next_timeout(ctx, tv, &poll_timeout); - if (r) { - /* timeout already expired */ - return handle_timeouts(ctx); - } - - return handle_events(ctx, &poll_timeout); -} - -/** \ingroup libusb_poll - * Determines whether your application must apply special timing considerations - * when monitoring libusb's file descriptors. - * - * This function is only useful for applications which retrieve and poll - * libusb's file descriptors in their own main loop (\ref libusb_pollmain). - * - * Ordinarily, libusb's event handler needs to be called into at specific - * moments in time (in addition to times when there is activity on the file - * descriptor set). The usual approach is to use libusb_get_next_timeout() - * to learn about when the next timeout occurs, and to adjust your - * poll()/select() timeout accordingly so that you can make a call into the - * library at that time. - * - * Some platforms supported by libusb do not come with this baggage - any - * events relevant to timing will be represented by activity on the file - * descriptor set, and libusb_get_next_timeout() will always return 0. - * This function allows you to detect whether you are running on such a - * platform. - * - * Since v1.0.5. - * - * \param ctx the context to operate on, or NULL for the default context - * \returns 0 if you must call into libusb at times determined by - * libusb_get_next_timeout(), or 1 if all timeout events are handled internally - * or through regular activity on the file descriptors. - * \ref libusb_pollmain "Polling libusb file descriptors for event handling" - */ -int API_EXPORTED libusb_pollfds_handle_timeouts(libusb_context *ctx) -{ -#if defined(USBI_TIMERFD_AVAILABLE) - USBI_GET_CONTEXT(ctx); - return usbi_using_timerfd(ctx); -#else - UNUSED(ctx); - return 0; -#endif -} - -/** \ingroup libusb_poll - * Determine the next internal timeout that libusb needs to handle. You only - * need to use this function if you are calling poll() or select() or similar - * on libusb's file descriptors yourself - you do not need to use it if you - * are calling libusb_handle_events() or a variant directly. - * - * You should call this function in your main loop in order to determine how - * long to wait for select() or poll() to return results. libusb needs to be - * called into at this timeout, so you should use it as an upper bound on - * your select() or poll() call. - * - * When the timeout has expired, call into libusb_handle_events_timeout() - * (perhaps in non-blocking mode) so that libusb can handle the timeout. - * - * This function may return 1 (success) and an all-zero timeval. If this is - * the case, it indicates that libusb has a timeout that has already expired - * so you should call libusb_handle_events_timeout() or similar immediately. - * A return code of 0 indicates that there are no pending timeouts. - * - * On some platforms, this function will always returns 0 (no pending - * timeouts). See \ref polltime. - * - * \param ctx the context to operate on, or NULL for the default context - * \param tv output location for a relative time against the current - * clock in which libusb must be called into in order to process timeout events - * \returns 0 if there are no pending timeouts, 1 if a timeout was returned, - * or LIBUSB_ERROR_OTHER on failure - */ -int API_EXPORTED libusb_get_next_timeout(libusb_context *ctx, - struct timeval *tv) -{ - struct usbi_transfer *transfer; - struct timespec cur_ts; - struct timeval cur_tv; - struct timeval next_timeout = { 0, 0 }; - int r; - - USBI_GET_CONTEXT(ctx); - if (usbi_using_timerfd(ctx)) - return 0; - - usbi_mutex_lock(&ctx->flying_transfers_lock); - if (list_empty(&ctx->flying_transfers)) { - usbi_mutex_unlock(&ctx->flying_transfers_lock); - usbi_dbg("no URBs, no timeout!"); - return 0; - } - - /* find next transfer which hasn't already been processed as timed out */ - list_for_each_entry(transfer, &ctx->flying_transfers, list, struct usbi_transfer) { - if (transfer->timeout_flags & (USBI_TRANSFER_TIMEOUT_HANDLED | USBI_TRANSFER_OS_HANDLES_TIMEOUT)) - continue; - - /* if we've reached transfers of infinte timeout, we're done looking */ - if (!timerisset(&transfer->timeout)) - break; - - next_timeout = transfer->timeout; - break; - } - usbi_mutex_unlock(&ctx->flying_transfers_lock); - - if (!timerisset(&next_timeout)) { - usbi_dbg("no URB with timeout or all handled by OS; no timeout!"); - return 0; - } - - r = usbi_backend.clock_gettime(USBI_CLOCK_MONOTONIC, &cur_ts); - if (r < 0) { - usbi_err(ctx, "failed to read monotonic clock, errno=%d", errno); - return 0; - } - TIMESPEC_TO_TIMEVAL(&cur_tv, &cur_ts); - - if (!timercmp(&cur_tv, &next_timeout, <)) { - usbi_dbg("first timeout already expired"); - timerclear(tv); - } else { - timersub(&next_timeout, &cur_tv, tv); - usbi_dbg("next timeout in %ld.%06lds", (long)tv->tv_sec, (long)tv->tv_usec); - } - - return 1; -} - -/** \ingroup libusb_poll - * Register notification functions for file descriptor additions/removals. - * These functions will be invoked for every new or removed file descriptor - * that libusb uses as an event source. - * - * To remove notifiers, pass NULL values for the function pointers. - * - * Note that file descriptors may have been added even before you register - * these notifiers (e.g. at libusb_init() time). - * - * Additionally, note that the removal notifier may be called during - * libusb_exit() (e.g. when it is closing file descriptors that were opened - * and added to the poll set at libusb_init() time). If you don't want this, - * remove the notifiers immediately before calling libusb_exit(). - * - * \param ctx the context to operate on, or NULL for the default context - * \param added_cb pointer to function for addition notifications - * \param removed_cb pointer to function for removal notifications - * \param user_data User data to be passed back to callbacks (useful for - * passing context information) - */ -void API_EXPORTED libusb_set_pollfd_notifiers(libusb_context *ctx, - libusb_pollfd_added_cb added_cb, libusb_pollfd_removed_cb removed_cb, - void *user_data) -{ - USBI_GET_CONTEXT(ctx); - ctx->fd_added_cb = added_cb; - ctx->fd_removed_cb = removed_cb; - ctx->fd_cb_user_data = user_data; -} - -/* - * Interrupt the iteration of the event handling thread, so that it picks - * up the fd change. Callers of this function must hold the event_data_lock. - */ -static void usbi_fd_notification(struct libusb_context *ctx) -{ - int pending_events; - - /* Record that there is a new poll fd. - * Only signal an event if there are no prior pending events. */ - pending_events = usbi_pending_events(ctx); - ctx->event_flags |= USBI_EVENT_POLLFDS_MODIFIED; - if (!pending_events) - usbi_signal_event(ctx); -} - -/* Add a file descriptor to the list of file descriptors to be monitored. - * events should be specified as a bitmask of events passed to poll(), e.g. - * POLLIN and/or POLLOUT. */ -int usbi_add_pollfd(struct libusb_context *ctx, int fd, short events) -{ - struct usbi_pollfd *ipollfd = malloc(sizeof(*ipollfd)); - if (!ipollfd) - return LIBUSB_ERROR_NO_MEM; - - usbi_dbg("add fd %d events %d", fd, events); - ipollfd->pollfd.fd = fd; - ipollfd->pollfd.events = events; - usbi_mutex_lock(&ctx->event_data_lock); - list_add_tail(&ipollfd->list, &ctx->ipollfds); - ctx->pollfds_cnt++; - usbi_fd_notification(ctx); - usbi_mutex_unlock(&ctx->event_data_lock); - - if (ctx->fd_added_cb) - ctx->fd_added_cb(fd, events, ctx->fd_cb_user_data); - return 0; -} - -/* Remove a file descriptor from the list of file descriptors to be polled. */ -void usbi_remove_pollfd(struct libusb_context *ctx, int fd) -{ - struct usbi_pollfd *ipollfd; - int found = 0; - - usbi_dbg("remove fd %d", fd); - usbi_mutex_lock(&ctx->event_data_lock); - list_for_each_entry(ipollfd, &ctx->ipollfds, list, struct usbi_pollfd) - if (ipollfd->pollfd.fd == fd) { - found = 1; - break; - } - - if (!found) { - usbi_dbg("couldn't find fd %d to remove", fd); - usbi_mutex_unlock(&ctx->event_data_lock); - return; - } - - list_del(&ipollfd->list); - ctx->pollfds_cnt--; - usbi_fd_notification(ctx); - usbi_mutex_unlock(&ctx->event_data_lock); - free(ipollfd); - if (ctx->fd_removed_cb) - ctx->fd_removed_cb(fd, ctx->fd_cb_user_data); -} - -/** \ingroup libusb_poll - * Retrieve a list of file descriptors that should be polled by your main loop - * as libusb event sources. - * - * The returned list is NULL-terminated and should be freed with libusb_free_pollfds() - * when done. The actual list contents must not be touched. - * - * As file descriptors are a Unix-specific concept, this function is not - * available on Windows and will always return NULL. - * - * \param ctx the context to operate on, or NULL for the default context - * \returns a NULL-terminated list of libusb_pollfd structures - * \returns NULL on error - * \returns NULL on platforms where the functionality is not available - */ -DEFAULT_VISIBILITY -const struct libusb_pollfd ** LIBUSB_CALL libusb_get_pollfds( - libusb_context *ctx) -{ -#ifndef OS_WINDOWS - struct libusb_pollfd **ret = NULL; - struct usbi_pollfd *ipollfd; - size_t i = 0; - USBI_GET_CONTEXT(ctx); - - usbi_mutex_lock(&ctx->event_data_lock); - - ret = calloc(ctx->pollfds_cnt + 1, sizeof(struct libusb_pollfd *)); - if (!ret) - goto out; - - list_for_each_entry(ipollfd, &ctx->ipollfds, list, struct usbi_pollfd) - ret[i++] = (struct libusb_pollfd *) ipollfd; - ret[ctx->pollfds_cnt] = NULL; - -out: - usbi_mutex_unlock(&ctx->event_data_lock); - return (const struct libusb_pollfd **) ret; -#else - usbi_err(ctx, "external polling of libusb's internal descriptors "\ - "is not yet supported on Windows platforms"); - return NULL; -#endif -} - -/** \ingroup libusb_poll - * Free a list of libusb_pollfd structures. This should be called for all - * pollfd lists allocated with libusb_get_pollfds(). - * - * Since version 1.0.20, \ref LIBUSB_API_VERSION >= 0x01000104 - * - * It is legal to call this function with a NULL pollfd list. In this case, - * the function will simply do nothing. - * - * \param pollfds the list of libusb_pollfd structures to free - */ -void API_EXPORTED libusb_free_pollfds(const struct libusb_pollfd **pollfds) -{ - free((void *)pollfds); -} - -/* Backends may call this from handle_events to report disconnection of a - * device. This function ensures transfers get cancelled appropriately. - * Callers of this function must hold the events_lock. - */ -void usbi_handle_disconnect(struct libusb_device_handle *dev_handle) -{ - struct usbi_transfer *cur; - struct usbi_transfer *to_cancel; - - usbi_dbg("device %d.%d", - dev_handle->dev->bus_number, dev_handle->dev->device_address); - - /* terminate all pending transfers with the LIBUSB_TRANSFER_NO_DEVICE - * status code. - * - * when we find a transfer for this device on the list, there are two - * possible scenarios: - * 1. the transfer is currently in-flight, in which case we terminate the - * transfer here - * 2. the transfer has been added to the flying transfer list by - * libusb_submit_transfer, has failed to submit and - * libusb_submit_transfer is waiting for us to release the - * flying_transfers_lock to remove it, so we ignore it - */ - - while (1) { - to_cancel = NULL; - usbi_mutex_lock(&HANDLE_CTX(dev_handle)->flying_transfers_lock); - list_for_each_entry(cur, &HANDLE_CTX(dev_handle)->flying_transfers, list, struct usbi_transfer) - if (USBI_TRANSFER_TO_LIBUSB_TRANSFER(cur)->dev_handle == dev_handle) { - usbi_mutex_lock(&cur->lock); - if (cur->state_flags & USBI_TRANSFER_IN_FLIGHT) - to_cancel = cur; - usbi_mutex_unlock(&cur->lock); - - if (to_cancel) - break; - } - usbi_mutex_unlock(&HANDLE_CTX(dev_handle)->flying_transfers_lock); - - if (!to_cancel) - break; - - usbi_dbg("cancelling transfer %p from disconnect", - USBI_TRANSFER_TO_LIBUSB_TRANSFER(to_cancel)); - - usbi_mutex_lock(&to_cancel->lock); - usbi_backend.clear_transfer_priv(to_cancel); - usbi_mutex_unlock(&to_cancel->lock); - usbi_handle_transfer_completion(to_cancel, LIBUSB_TRANSFER_NO_DEVICE); - } - -} diff --git a/Externals/libusb/libusb/libusb-1.0.def b/Externals/libusb/libusb/libusb-1.0.def deleted file mode 100644 index 6eba4ff00879..000000000000 --- a/Externals/libusb/libusb/libusb-1.0.def +++ /dev/null @@ -1,178 +0,0 @@ -LIBRARY "libusb-1.0.dll" -EXPORTS - libusb_alloc_streams - libusb_alloc_streams@16 = libusb_alloc_streams - libusb_alloc_transfer - libusb_alloc_transfer@4 = libusb_alloc_transfer - libusb_attach_kernel_driver - libusb_attach_kernel_driver@8 = libusb_attach_kernel_driver - libusb_bulk_transfer - libusb_bulk_transfer@24 = libusb_bulk_transfer - libusb_cancel_transfer - libusb_cancel_transfer@4 = libusb_cancel_transfer - libusb_claim_interface - libusb_claim_interface@8 = libusb_claim_interface - libusb_clear_halt - libusb_clear_halt@8 = libusb_clear_halt - libusb_close - libusb_close@4 = libusb_close - libusb_control_transfer - libusb_control_transfer@32 = libusb_control_transfer - libusb_detach_kernel_driver - libusb_detach_kernel_driver@8 = libusb_detach_kernel_driver - libusb_dev_mem_alloc - libusb_dev_mem_alloc@8 = libusb_dev_mem_alloc - libusb_dev_mem_free - libusb_dev_mem_free@12 = libusb_dev_mem_free - libusb_error_name - libusb_error_name@4 = libusb_error_name - libusb_event_handler_active - libusb_event_handler_active@4 = libusb_event_handler_active - libusb_event_handling_ok - libusb_event_handling_ok@4 = libusb_event_handling_ok - libusb_exit - libusb_exit@4 = libusb_exit - libusb_free_bos_descriptor - libusb_free_bos_descriptor@4 = libusb_free_bos_descriptor - libusb_free_config_descriptor - libusb_free_config_descriptor@4 = libusb_free_config_descriptor - libusb_free_container_id_descriptor - libusb_free_container_id_descriptor@4 = libusb_free_container_id_descriptor - libusb_free_device_list - libusb_free_device_list@8 = libusb_free_device_list - libusb_free_pollfds - libusb_free_pollfds@4 = libusb_free_pollfds - libusb_free_ss_endpoint_companion_descriptor - libusb_free_ss_endpoint_companion_descriptor@4 = libusb_free_ss_endpoint_companion_descriptor - libusb_free_ss_usb_device_capability_descriptor - libusb_free_ss_usb_device_capability_descriptor@4 = libusb_free_ss_usb_device_capability_descriptor - libusb_free_streams - libusb_free_streams@12 = libusb_free_streams - libusb_free_transfer - libusb_free_transfer@4 = libusb_free_transfer - libusb_free_usb_2_0_extension_descriptor - libusb_free_usb_2_0_extension_descriptor@4 = libusb_free_usb_2_0_extension_descriptor - libusb_get_active_config_descriptor - libusb_get_active_config_descriptor@8 = libusb_get_active_config_descriptor - libusb_get_bos_descriptor - libusb_get_bos_descriptor@8 = libusb_get_bos_descriptor - libusb_get_bus_number - libusb_get_bus_number@4 = libusb_get_bus_number - libusb_get_config_descriptor - libusb_get_config_descriptor@12 = libusb_get_config_descriptor - libusb_get_config_descriptor_by_value - libusb_get_config_descriptor_by_value@12 = libusb_get_config_descriptor_by_value - libusb_get_configuration - libusb_get_configuration@8 = libusb_get_configuration - libusb_get_container_id_descriptor - libusb_get_container_id_descriptor@12 = libusb_get_container_id_descriptor - libusb_get_device - libusb_get_device@4 = libusb_get_device - libusb_get_device_address - libusb_get_device_address@4 = libusb_get_device_address - libusb_get_device_descriptor - libusb_get_device_descriptor@8 = libusb_get_device_descriptor - libusb_get_device_list - libusb_get_device_list@8 = libusb_get_device_list - libusb_get_device_speed - libusb_get_device_speed@4 = libusb_get_device_speed - libusb_get_max_iso_packet_size - libusb_get_max_iso_packet_size@8 = libusb_get_max_iso_packet_size - libusb_get_max_packet_size - libusb_get_max_packet_size@8 = libusb_get_max_packet_size - libusb_get_next_timeout - libusb_get_next_timeout@8 = libusb_get_next_timeout - libusb_get_parent - libusb_get_parent@4 = libusb_get_parent - libusb_get_pollfds - libusb_get_pollfds@4 = libusb_get_pollfds - libusb_get_port_number - libusb_get_port_number@4 = libusb_get_port_number - libusb_get_port_numbers - libusb_get_port_numbers@12 = libusb_get_port_numbers - libusb_get_port_path - libusb_get_port_path@16 = libusb_get_port_path - libusb_get_ss_endpoint_companion_descriptor - libusb_get_ss_endpoint_companion_descriptor@12 = libusb_get_ss_endpoint_companion_descriptor - libusb_get_ss_usb_device_capability_descriptor - libusb_get_ss_usb_device_capability_descriptor@12 = libusb_get_ss_usb_device_capability_descriptor - libusb_get_string_descriptor_ascii - libusb_get_string_descriptor_ascii@16 = libusb_get_string_descriptor_ascii - libusb_get_usb_2_0_extension_descriptor - libusb_get_usb_2_0_extension_descriptor@12 = libusb_get_usb_2_0_extension_descriptor - libusb_get_version - libusb_get_version@0 = libusb_get_version - libusb_handle_events - libusb_handle_events@4 = libusb_handle_events - libusb_handle_events_completed - libusb_handle_events_completed@8 = libusb_handle_events_completed - libusb_handle_events_locked - libusb_handle_events_locked@8 = libusb_handle_events_locked - libusb_handle_events_timeout - libusb_handle_events_timeout@8 = libusb_handle_events_timeout - libusb_handle_events_timeout_completed - libusb_handle_events_timeout_completed@12 = libusb_handle_events_timeout_completed - libusb_has_capability - libusb_has_capability@4 = libusb_has_capability - libusb_hotplug_deregister_callback - libusb_hotplug_deregister_callback@8 = libusb_hotplug_deregister_callback - libusb_hotplug_register_callback - libusb_hotplug_register_callback@36 = libusb_hotplug_register_callback - libusb_init - libusb_init@4 = libusb_init - libusb_interrupt_event_handler - libusb_interrupt_event_handler@4 = libusb_interrupt_event_handler - libusb_interrupt_transfer - libusb_interrupt_transfer@24 = libusb_interrupt_transfer - libusb_kernel_driver_active - libusb_kernel_driver_active@8 = libusb_kernel_driver_active - libusb_lock_event_waiters - libusb_lock_event_waiters@4 = libusb_lock_event_waiters - libusb_lock_events - libusb_lock_events@4 = libusb_lock_events - libusb_open - libusb_open@8 = libusb_open - libusb_open_device_with_vid_pid - libusb_open_device_with_vid_pid@12 = libusb_open_device_with_vid_pid - libusb_pollfds_handle_timeouts - libusb_pollfds_handle_timeouts@4 = libusb_pollfds_handle_timeouts - libusb_ref_device - libusb_ref_device@4 = libusb_ref_device - libusb_release_interface - libusb_release_interface@8 = libusb_release_interface - libusb_reset_device - libusb_reset_device@4 = libusb_reset_device - libusb_set_auto_detach_kernel_driver - libusb_set_auto_detach_kernel_driver@8 = libusb_set_auto_detach_kernel_driver - libusb_set_configuration - libusb_set_configuration@8 = libusb_set_configuration - libusb_set_debug - libusb_set_debug@8 = libusb_set_debug - libusb_set_log_cb - libusb_set_log_cb@12 = libusb_set_log_cb - libusb_set_interface_alt_setting - libusb_set_interface_alt_setting@12 = libusb_set_interface_alt_setting - libusb_set_option - _libusb_set_option = libusb_set_option - libusb_set_pollfd_notifiers - libusb_set_pollfd_notifiers@16 = libusb_set_pollfd_notifiers - libusb_setlocale - libusb_setlocale@4 = libusb_setlocale - libusb_strerror - libusb_strerror@4 = libusb_strerror - libusb_submit_transfer - libusb_submit_transfer@4 = libusb_submit_transfer - libusb_transfer_get_stream_id - libusb_transfer_get_stream_id@4 = libusb_transfer_get_stream_id - libusb_transfer_set_stream_id - libusb_transfer_set_stream_id@8 = libusb_transfer_set_stream_id - libusb_try_lock_events - libusb_try_lock_events@4 = libusb_try_lock_events - libusb_unlock_event_waiters - libusb_unlock_event_waiters@4 = libusb_unlock_event_waiters - libusb_unlock_events - libusb_unlock_events@4 = libusb_unlock_events - libusb_unref_device - libusb_unref_device@4 = libusb_unref_device - libusb_wait_for_event - libusb_wait_for_event@8 = libusb_wait_for_event diff --git a/Externals/libusb/libusb/libusb-1.0.rc b/Externals/libusb/libusb/libusb-1.0.rc deleted file mode 100644 index 3dce6d5a91cd..000000000000 --- a/Externals/libusb/libusb/libusb-1.0.rc +++ /dev/null @@ -1,61 +0,0 @@ -/* - * For Windows: input this file to the Resoure Compiler to produce a binary - * .res file. This is then embedded in the resultant library (like any other - * compilation object). - * The information can then be queried using standard APIs and can also be - * viewed with utilities such as Windows Explorer. - */ -#ifndef _WIN32_WCE -#include "winresrc.h" -#endif - -#include "version.h" -#ifndef LIBUSB_VERSIONSTRING -#define LU_STR(s) #s -#define LU_XSTR(s) LU_STR(s) -#if LIBUSB_NANO > 0 -#define LIBUSB_VERSIONSTRING \ - LU_XSTR(LIBUSB_MAJOR) "." LU_XSTR(LIBUSB_MINOR) "." \ - LU_XSTR(LIBUSB_MICRO) "." LU_XSTR(LIBUSB_NANO) LIBUSB_RC "\0" -#else -#define LIBUSB_VERSIONSTRING \ - LU_XSTR(LIBUSB_MAJOR) "." LU_XSTR(LIBUSB_MINOR) "." \ - LU_XSTR(LIBUSB_MICRO) LIBUSB_RC "\0" -#endif -#endif - -VS_VERSION_INFO VERSIONINFO - FILEVERSION LIBUSB_MAJOR,LIBUSB_MINOR,LIBUSB_MICRO,LIBUSB_NANO - PRODUCTVERSION LIBUSB_MAJOR,LIBUSB_MINOR,LIBUSB_MICRO,LIBUSB_NANO - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x40004L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "CompanyName", "libusb.info\0" - VALUE "FileDescription", "C library for writing portable USB drivers in userspace\0" - VALUE "FileVersion", LIBUSB_VERSIONSTRING - VALUE "InternalName", "libusb\0" - VALUE "LegalCopyright", "See individual source files, GNU LGPL v2.1 or later.\0" - VALUE "LegalTrademarks", "http://www.gnu.org/licenses/lgpl-2.1.html\0" - VALUE "OriginalFilename", "libusb-1.0.dll\0" - VALUE "PrivateBuild", "\0" - VALUE "ProductName", "libusb-1.0\0" - VALUE "ProductVersion", LIBUSB_VERSIONSTRING - VALUE "SpecialBuild", "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END diff --git a/Externals/libusb/libusb/libusb.h b/Externals/libusb/libusb/libusb.h deleted file mode 100644 index 777250e47fdd..000000000000 --- a/Externals/libusb/libusb/libusb.h +++ /dev/null @@ -1,2073 +0,0 @@ -/* - * Public libusb header file - * Copyright © 2001 Johannes Erdfelt - * Copyright © 2007-2008 Daniel Drake - * Copyright © 2012 Pete Batard - * Copyright © 2012-2018 Nathan Hjelm - * For more information, please visit: http://libusb.info - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef LIBUSB_H -#define LIBUSB_H - -#ifdef _MSC_VER -#pragma warning(push) -/* Disable: warning C4200: nonstandard extension used : zero-sized array in struct/union */ -#pragma warning(disable:4200) -/* on MS environments, the inline keyword is available in C++ only */ -#if !defined(__cplusplus) -#define inline __inline -#endif -/* ssize_t is also not available (copy/paste from MinGW) */ -#ifndef _SSIZE_T_DEFINED -#define _SSIZE_T_DEFINED -#undef ssize_t -#ifdef _WIN64 - typedef __int64 ssize_t; -#else - typedef int ssize_t; -#endif /* _WIN64 */ -#endif /* _SSIZE_T_DEFINED */ -#endif /* _MSC_VER */ - -/* stdint.h is not available on older MSVC */ -#if defined(_MSC_VER) && (_MSC_VER < 1600) && (!defined(_STDINT)) && (!defined(_STDINT_H)) -typedef unsigned __int8 uint8_t; -typedef unsigned __int16 uint16_t; -typedef unsigned __int32 uint32_t; -#else -#include -#endif - -#if !defined(_WIN32_WCE) -#include -#endif - -#if defined(__linux__) || defined(__APPLE__) || defined(__CYGWIN__) || defined(__HAIKU__) -#include -#endif - -#include -#include - -#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) -#define ZERO_SIZED_ARRAY /* [] - valid C99 code */ -#else -#define ZERO_SIZED_ARRAY 0 /* [0] - non-standard, but usually working code */ -#endif - -/* 'interface' might be defined as a macro on Windows, so we need to - * undefine it so as not to break the current libusb API, because - * libusb_config_descriptor has an 'interface' member - * As this can be problematic if you include windows.h after libusb.h - * in your sources, we force windows.h to be included first. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -#include -#if defined(interface) -#undef interface -#endif -#if !defined(__CYGWIN__) -#include -#endif -#endif - -#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) -#define LIBUSB_DEPRECATED_FOR(f) \ - __attribute__((deprecated("Use " #f " instead"))) -#elif __GNUC__ >= 3 -#define LIBUSB_DEPRECATED_FOR(f) __attribute__((deprecated)) -#else -#define LIBUSB_DEPRECATED_FOR(f) -#endif /* __GNUC__ */ - -/** \def LIBUSB_CALL - * \ingroup libusb_misc - * libusb's Windows calling convention. - * - * Under Windows, the selection of available compilers and configurations - * means that, unlike other platforms, there is not one true calling - * convention (calling convention: the manner in which parameters are - * passed to functions in the generated assembly code). - * - * Matching the Windows API itself, libusb uses the WINAPI convention (which - * translates to the stdcall convention) and guarantees that the - * library is compiled in this way. The public header file also includes - * appropriate annotations so that your own software will use the right - * convention, even if another convention is being used by default within - * your codebase. - * - * The one consideration that you must apply in your software is to mark - * all functions which you use as libusb callbacks with this LIBUSB_CALL - * annotation, so that they too get compiled for the correct calling - * convention. - * - * On non-Windows operating systems, this macro is defined as nothing. This - * means that you can apply it to your code without worrying about - * cross-platform compatibility. - */ -/* LIBUSB_CALL must be defined on both definition and declaration of libusb - * functions. You'd think that declaration would be enough, but cygwin will - * complain about conflicting types unless both are marked this way. - * The placement of this macro is important too; it must appear after the - * return type, before the function name. See internal documentation for - * API_EXPORTED. - */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -#define LIBUSB_CALL WINAPI -#else -#define LIBUSB_CALL -#endif - -/** \def LIBUSB_API_VERSION - * \ingroup libusb_misc - * libusb's API version. - * - * Since version 1.0.13, to help with feature detection, libusb defines - * a LIBUSB_API_VERSION macro that gets increased every time there is a - * significant change to the API, such as the introduction of a new call, - * the definition of a new macro/enum member, or any other element that - * libusb applications may want to detect at compilation time. - * - * The macro is typically used in an application as follows: - * \code - * #if defined(LIBUSB_API_VERSION) && (LIBUSB_API_VERSION >= 0x01001234) - * // Use one of the newer features from the libusb API - * #endif - * \endcode - * - * Internally, LIBUSB_API_VERSION is defined as follows: - * (libusb major << 24) | (libusb minor << 16) | (16 bit incremental) - */ -#define LIBUSB_API_VERSION 0x01000107 - -/* The following is kept for compatibility, but will be deprecated in the future */ -#define LIBUSBX_API_VERSION LIBUSB_API_VERSION - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * \ingroup libusb_misc - * Convert a 16-bit value from host-endian to little-endian format. On - * little endian systems, this function does nothing. On big endian systems, - * the bytes are swapped. - * \param x the host-endian value to convert - * \returns the value in little-endian byte order - */ -static inline uint16_t libusb_cpu_to_le16(const uint16_t x) -{ - union { - uint8_t b8[2]; - uint16_t b16; - } _tmp; - _tmp.b8[1] = (uint8_t) (x >> 8); - _tmp.b8[0] = (uint8_t) (x & 0xff); - return _tmp.b16; -} - -/** \def libusb_le16_to_cpu - * \ingroup libusb_misc - * Convert a 16-bit value from little-endian to host-endian format. On - * little endian systems, this function does nothing. On big endian systems, - * the bytes are swapped. - * \param x the little-endian value to convert - * \returns the value in host-endian byte order - */ -#define libusb_le16_to_cpu libusb_cpu_to_le16 - -/* standard USB stuff */ - -/** \ingroup libusb_desc - * Device and/or Interface Class codes */ -enum libusb_class_code { - /** In the context of a \ref libusb_device_descriptor "device descriptor", - * this bDeviceClass value indicates that each interface specifies its - * own class information and all interfaces operate independently. - */ - LIBUSB_CLASS_PER_INTERFACE = 0, - - /** Audio class */ - LIBUSB_CLASS_AUDIO = 1, - - /** Communications class */ - LIBUSB_CLASS_COMM = 2, - - /** Human Interface Device class */ - LIBUSB_CLASS_HID = 3, - - /** Physical */ - LIBUSB_CLASS_PHYSICAL = 5, - - /** Printer class */ - LIBUSB_CLASS_PRINTER = 7, - - /** Image class */ - LIBUSB_CLASS_PTP = 6, /* legacy name from libusb-0.1 usb.h */ - LIBUSB_CLASS_IMAGE = 6, - - /** Mass storage class */ - LIBUSB_CLASS_MASS_STORAGE = 8, - - /** Hub class */ - LIBUSB_CLASS_HUB = 9, - - /** Data class */ - LIBUSB_CLASS_DATA = 10, - - /** Smart Card */ - LIBUSB_CLASS_SMART_CARD = 0x0b, - - /** Content Security */ - LIBUSB_CLASS_CONTENT_SECURITY = 0x0d, - - /** Video */ - LIBUSB_CLASS_VIDEO = 0x0e, - - /** Personal Healthcare */ - LIBUSB_CLASS_PERSONAL_HEALTHCARE = 0x0f, - - /** Diagnostic Device */ - LIBUSB_CLASS_DIAGNOSTIC_DEVICE = 0xdc, - - /** Wireless class */ - LIBUSB_CLASS_WIRELESS = 0xe0, - - /** Application class */ - LIBUSB_CLASS_APPLICATION = 0xfe, - - /** Class is vendor-specific */ - LIBUSB_CLASS_VENDOR_SPEC = 0xff -}; - -/** \ingroup libusb_desc - * Descriptor types as defined by the USB specification. */ -enum libusb_descriptor_type { - /** Device descriptor. See libusb_device_descriptor. */ - LIBUSB_DT_DEVICE = 0x01, - - /** Configuration descriptor. See libusb_config_descriptor. */ - LIBUSB_DT_CONFIG = 0x02, - - /** String descriptor */ - LIBUSB_DT_STRING = 0x03, - - /** Interface descriptor. See libusb_interface_descriptor. */ - LIBUSB_DT_INTERFACE = 0x04, - - /** Endpoint descriptor. See libusb_endpoint_descriptor. */ - LIBUSB_DT_ENDPOINT = 0x05, - - /** BOS descriptor */ - LIBUSB_DT_BOS = 0x0f, - - /** Device Capability descriptor */ - LIBUSB_DT_DEVICE_CAPABILITY = 0x10, - - /** HID descriptor */ - LIBUSB_DT_HID = 0x21, - - /** HID report descriptor */ - LIBUSB_DT_REPORT = 0x22, - - /** Physical descriptor */ - LIBUSB_DT_PHYSICAL = 0x23, - - /** Hub descriptor */ - LIBUSB_DT_HUB = 0x29, - - /** SuperSpeed Hub descriptor */ - LIBUSB_DT_SUPERSPEED_HUB = 0x2a, - - /** SuperSpeed Endpoint Companion descriptor */ - LIBUSB_DT_SS_ENDPOINT_COMPANION = 0x30 -}; - -/* Descriptor sizes per descriptor type */ -#define LIBUSB_DT_DEVICE_SIZE 18 -#define LIBUSB_DT_CONFIG_SIZE 9 -#define LIBUSB_DT_INTERFACE_SIZE 9 -#define LIBUSB_DT_ENDPOINT_SIZE 7 -#define LIBUSB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */ -#define LIBUSB_DT_HUB_NONVAR_SIZE 7 -#define LIBUSB_DT_SS_ENDPOINT_COMPANION_SIZE 6 -#define LIBUSB_DT_BOS_SIZE 5 -#define LIBUSB_DT_DEVICE_CAPABILITY_SIZE 3 - -/* BOS descriptor sizes */ -#define LIBUSB_BT_USB_2_0_EXTENSION_SIZE 7 -#define LIBUSB_BT_SS_USB_DEVICE_CAPABILITY_SIZE 10 -#define LIBUSB_BT_CONTAINER_ID_SIZE 20 - -/* We unwrap the BOS => define its max size */ -#define LIBUSB_DT_BOS_MAX_SIZE ((LIBUSB_DT_BOS_SIZE) +\ - (LIBUSB_BT_USB_2_0_EXTENSION_SIZE) +\ - (LIBUSB_BT_SS_USB_DEVICE_CAPABILITY_SIZE) +\ - (LIBUSB_BT_CONTAINER_ID_SIZE)) - -#define LIBUSB_ENDPOINT_ADDRESS_MASK 0x0f /* in bEndpointAddress */ -#define LIBUSB_ENDPOINT_DIR_MASK 0x80 - -/** \ingroup libusb_desc - * Endpoint direction. Values for bit 7 of the - * \ref libusb_endpoint_descriptor::bEndpointAddress "endpoint address" scheme. - */ -enum libusb_endpoint_direction { - /** In: device-to-host */ - LIBUSB_ENDPOINT_IN = 0x80, - - /** Out: host-to-device */ - LIBUSB_ENDPOINT_OUT = 0x00 -}; - -#define LIBUSB_TRANSFER_TYPE_MASK 0x03 /* in bmAttributes */ - -/** \ingroup libusb_desc - * Endpoint transfer type. Values for bits 0:1 of the - * \ref libusb_endpoint_descriptor::bmAttributes "endpoint attributes" field. - */ -enum libusb_transfer_type { - /** Control endpoint */ - LIBUSB_TRANSFER_TYPE_CONTROL = 0, - - /** Isochronous endpoint */ - LIBUSB_TRANSFER_TYPE_ISOCHRONOUS = 1, - - /** Bulk endpoint */ - LIBUSB_TRANSFER_TYPE_BULK = 2, - - /** Interrupt endpoint */ - LIBUSB_TRANSFER_TYPE_INTERRUPT = 3, - - /** Stream endpoint */ - LIBUSB_TRANSFER_TYPE_BULK_STREAM = 4, -}; - -/** \ingroup libusb_misc - * Standard requests, as defined in table 9-5 of the USB 3.0 specifications */ -enum libusb_standard_request { - /** Request status of the specific recipient */ - LIBUSB_REQUEST_GET_STATUS = 0x00, - - /** Clear or disable a specific feature */ - LIBUSB_REQUEST_CLEAR_FEATURE = 0x01, - - /* 0x02 is reserved */ - - /** Set or enable a specific feature */ - LIBUSB_REQUEST_SET_FEATURE = 0x03, - - /* 0x04 is reserved */ - - /** Set device address for all future accesses */ - LIBUSB_REQUEST_SET_ADDRESS = 0x05, - - /** Get the specified descriptor */ - LIBUSB_REQUEST_GET_DESCRIPTOR = 0x06, - - /** Used to update existing descriptors or add new descriptors */ - LIBUSB_REQUEST_SET_DESCRIPTOR = 0x07, - - /** Get the current device configuration value */ - LIBUSB_REQUEST_GET_CONFIGURATION = 0x08, - - /** Set device configuration */ - LIBUSB_REQUEST_SET_CONFIGURATION = 0x09, - - /** Return the selected alternate setting for the specified interface */ - LIBUSB_REQUEST_GET_INTERFACE = 0x0A, - - /** Select an alternate interface for the specified interface */ - LIBUSB_REQUEST_SET_INTERFACE = 0x0B, - - /** Set then report an endpoint's synchronization frame */ - LIBUSB_REQUEST_SYNCH_FRAME = 0x0C, - - /** Sets both the U1 and U2 Exit Latency */ - LIBUSB_REQUEST_SET_SEL = 0x30, - - /** Delay from the time a host transmits a packet to the time it is - * received by the device. */ - LIBUSB_SET_ISOCH_DELAY = 0x31, -}; - -/** \ingroup libusb_misc - * Request type bits of the - * \ref libusb_control_setup::bmRequestType "bmRequestType" field in control - * transfers. */ -enum libusb_request_type { - /** Standard */ - LIBUSB_REQUEST_TYPE_STANDARD = (0x00 << 5), - - /** Class */ - LIBUSB_REQUEST_TYPE_CLASS = (0x01 << 5), - - /** Vendor */ - LIBUSB_REQUEST_TYPE_VENDOR = (0x02 << 5), - - /** Reserved */ - LIBUSB_REQUEST_TYPE_RESERVED = (0x03 << 5) -}; - -/** \ingroup libusb_misc - * Recipient bits of the - * \ref libusb_control_setup::bmRequestType "bmRequestType" field in control - * transfers. Values 4 through 31 are reserved. */ -enum libusb_request_recipient { - /** Device */ - LIBUSB_RECIPIENT_DEVICE = 0x00, - - /** Interface */ - LIBUSB_RECIPIENT_INTERFACE = 0x01, - - /** Endpoint */ - LIBUSB_RECIPIENT_ENDPOINT = 0x02, - - /** Other */ - LIBUSB_RECIPIENT_OTHER = 0x03, -}; - -#define LIBUSB_ISO_SYNC_TYPE_MASK 0x0C - -/** \ingroup libusb_desc - * Synchronization type for isochronous endpoints. Values for bits 2:3 of the - * \ref libusb_endpoint_descriptor::bmAttributes "bmAttributes" field in - * libusb_endpoint_descriptor. - */ -enum libusb_iso_sync_type { - /** No synchronization */ - LIBUSB_ISO_SYNC_TYPE_NONE = 0, - - /** Asynchronous */ - LIBUSB_ISO_SYNC_TYPE_ASYNC = 1, - - /** Adaptive */ - LIBUSB_ISO_SYNC_TYPE_ADAPTIVE = 2, - - /** Synchronous */ - LIBUSB_ISO_SYNC_TYPE_SYNC = 3 -}; - -#define LIBUSB_ISO_USAGE_TYPE_MASK 0x30 - -/** \ingroup libusb_desc - * Usage type for isochronous endpoints. Values for bits 4:5 of the - * \ref libusb_endpoint_descriptor::bmAttributes "bmAttributes" field in - * libusb_endpoint_descriptor. - */ -enum libusb_iso_usage_type { - /** Data endpoint */ - LIBUSB_ISO_USAGE_TYPE_DATA = 0, - - /** Feedback endpoint */ - LIBUSB_ISO_USAGE_TYPE_FEEDBACK = 1, - - /** Implicit feedback Data endpoint */ - LIBUSB_ISO_USAGE_TYPE_IMPLICIT = 2, -}; - -/** \ingroup libusb_desc - * A structure representing the standard USB device descriptor. This - * descriptor is documented in section 9.6.1 of the USB 3.0 specification. - * All multiple-byte fields are represented in host-endian format. - */ -struct libusb_device_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_DEVICE LIBUSB_DT_DEVICE in this - * context. */ - uint8_t bDescriptorType; - - /** USB specification release number in binary-coded decimal. A value of - * 0x0200 indicates USB 2.0, 0x0110 indicates USB 1.1, etc. */ - uint16_t bcdUSB; - - /** USB-IF class code for the device. See \ref libusb_class_code. */ - uint8_t bDeviceClass; - - /** USB-IF subclass code for the device, qualified by the bDeviceClass - * value */ - uint8_t bDeviceSubClass; - - /** USB-IF protocol code for the device, qualified by the bDeviceClass and - * bDeviceSubClass values */ - uint8_t bDeviceProtocol; - - /** Maximum packet size for endpoint 0 */ - uint8_t bMaxPacketSize0; - - /** USB-IF vendor ID */ - uint16_t idVendor; - - /** USB-IF product ID */ - uint16_t idProduct; - - /** Device release number in binary-coded decimal */ - uint16_t bcdDevice; - - /** Index of string descriptor describing manufacturer */ - uint8_t iManufacturer; - - /** Index of string descriptor describing product */ - uint8_t iProduct; - - /** Index of string descriptor containing device serial number */ - uint8_t iSerialNumber; - - /** Number of possible configurations */ - uint8_t bNumConfigurations; -}; - -/** \ingroup libusb_desc - * A structure representing the standard USB endpoint descriptor. This - * descriptor is documented in section 9.6.6 of the USB 3.0 specification. - * All multiple-byte fields are represented in host-endian format. - */ -struct libusb_endpoint_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_ENDPOINT LIBUSB_DT_ENDPOINT in - * this context. */ - uint8_t bDescriptorType; - - /** The address of the endpoint described by this descriptor. Bits 0:3 are - * the endpoint number. Bits 4:6 are reserved. Bit 7 indicates direction, - * see \ref libusb_endpoint_direction. - */ - uint8_t bEndpointAddress; - - /** Attributes which apply to the endpoint when it is configured using - * the bConfigurationValue. Bits 0:1 determine the transfer type and - * correspond to \ref libusb_transfer_type. Bits 2:3 are only used for - * isochronous endpoints and correspond to \ref libusb_iso_sync_type. - * Bits 4:5 are also only used for isochronous endpoints and correspond to - * \ref libusb_iso_usage_type. Bits 6:7 are reserved. - */ - uint8_t bmAttributes; - - /** Maximum packet size this endpoint is capable of sending/receiving. */ - uint16_t wMaxPacketSize; - - /** Interval for polling endpoint for data transfers. */ - uint8_t bInterval; - - /** For audio devices only: the rate at which synchronization feedback - * is provided. */ - uint8_t bRefresh; - - /** For audio devices only: the address if the synch endpoint */ - uint8_t bSynchAddress; - - /** Extra descriptors. If libusb encounters unknown endpoint descriptors, - * it will store them here, should you wish to parse them. */ - const unsigned char *extra; - - /** Length of the extra descriptors, in bytes. Must be non-negative. */ - int extra_length; -}; - -/** \ingroup libusb_desc - * A structure representing the standard USB interface descriptor. This - * descriptor is documented in section 9.6.5 of the USB 3.0 specification. - * All multiple-byte fields are represented in host-endian format. - */ -struct libusb_interface_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_INTERFACE LIBUSB_DT_INTERFACE - * in this context. */ - uint8_t bDescriptorType; - - /** Number of this interface */ - uint8_t bInterfaceNumber; - - /** Value used to select this alternate setting for this interface */ - uint8_t bAlternateSetting; - - /** Number of endpoints used by this interface (excluding the control - * endpoint). */ - uint8_t bNumEndpoints; - - /** USB-IF class code for this interface. See \ref libusb_class_code. */ - uint8_t bInterfaceClass; - - /** USB-IF subclass code for this interface, qualified by the - * bInterfaceClass value */ - uint8_t bInterfaceSubClass; - - /** USB-IF protocol code for this interface, qualified by the - * bInterfaceClass and bInterfaceSubClass values */ - uint8_t bInterfaceProtocol; - - /** Index of string descriptor describing this interface */ - uint8_t iInterface; - - /** Array of endpoint descriptors. This length of this array is determined - * by the bNumEndpoints field. */ - const struct libusb_endpoint_descriptor *endpoint; - - /** Extra descriptors. If libusb encounters unknown interface descriptors, - * it will store them here, should you wish to parse them. */ - const unsigned char *extra; - - /** Length of the extra descriptors, in bytes. Must be non-negative. */ - int extra_length; -}; - -/** \ingroup libusb_desc - * A collection of alternate settings for a particular USB interface. - */ -struct libusb_interface { - /** Array of interface descriptors. The length of this array is determined - * by the num_altsetting field. */ - const struct libusb_interface_descriptor *altsetting; - - /** The number of alternate settings that belong to this interface. - * Must be non-negative. */ - int num_altsetting; -}; - -/** \ingroup libusb_desc - * A structure representing the standard USB configuration descriptor. This - * descriptor is documented in section 9.6.3 of the USB 3.0 specification. - * All multiple-byte fields are represented in host-endian format. - */ -struct libusb_config_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_CONFIG LIBUSB_DT_CONFIG - * in this context. */ - uint8_t bDescriptorType; - - /** Total length of data returned for this configuration */ - uint16_t wTotalLength; - - /** Number of interfaces supported by this configuration */ - uint8_t bNumInterfaces; - - /** Identifier value for this configuration */ - uint8_t bConfigurationValue; - - /** Index of string descriptor describing this configuration */ - uint8_t iConfiguration; - - /** Configuration characteristics */ - uint8_t bmAttributes; - - /** Maximum power consumption of the USB device from this bus in this - * configuration when the device is fully operation. Expressed in units - * of 2 mA when the device is operating in high-speed mode and in units - * of 8 mA when the device is operating in super-speed mode. */ - uint8_t MaxPower; - - /** Array of interfaces supported by this configuration. The length of - * this array is determined by the bNumInterfaces field. */ - const struct libusb_interface *interface; - - /** Extra descriptors. If libusb encounters unknown configuration - * descriptors, it will store them here, should you wish to parse them. */ - const unsigned char *extra; - - /** Length of the extra descriptors, in bytes. Must be non-negative. */ - int extra_length; -}; - -/** \ingroup libusb_desc - * A structure representing the superspeed endpoint companion - * descriptor. This descriptor is documented in section 9.6.7 of - * the USB 3.0 specification. All multiple-byte fields are represented in - * host-endian format. - */ -struct libusb_ss_endpoint_companion_descriptor { - - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_SS_ENDPOINT_COMPANION in - * this context. */ - uint8_t bDescriptorType; - - - /** The maximum number of packets the endpoint can send or - * receive as part of a burst. */ - uint8_t bMaxBurst; - - /** In bulk EP: bits 4:0 represents the maximum number of - * streams the EP supports. In isochronous EP: bits 1:0 - * represents the Mult - a zero based value that determines - * the maximum number of packets within a service interval */ - uint8_t bmAttributes; - - /** The total number of bytes this EP will transfer every - * service interval. valid only for periodic EPs. */ - uint16_t wBytesPerInterval; -}; - -/** \ingroup libusb_desc - * A generic representation of a BOS Device Capability descriptor. It is - * advised to check bDevCapabilityType and call the matching - * libusb_get_*_descriptor function to get a structure fully matching the type. - */ -struct libusb_bos_dev_capability_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_DEVICE_CAPABILITY - * LIBUSB_DT_DEVICE_CAPABILITY in this context. */ - uint8_t bDescriptorType; - /** Device Capability type */ - uint8_t bDevCapabilityType; - /** Device Capability data (bLength - 3 bytes) */ - uint8_t dev_capability_data[ZERO_SIZED_ARRAY]; -}; - -/** \ingroup libusb_desc - * A structure representing the Binary Device Object Store (BOS) descriptor. - * This descriptor is documented in section 9.6.2 of the USB 3.0 specification. - * All multiple-byte fields are represented in host-endian format. - */ -struct libusb_bos_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_BOS LIBUSB_DT_BOS - * in this context. */ - uint8_t bDescriptorType; - - /** Length of this descriptor and all of its sub descriptors */ - uint16_t wTotalLength; - - /** The number of separate device capability descriptors in - * the BOS */ - uint8_t bNumDeviceCaps; - - /** bNumDeviceCap Device Capability Descriptors */ - struct libusb_bos_dev_capability_descriptor *dev_capability[ZERO_SIZED_ARRAY]; -}; - -/** \ingroup libusb_desc - * A structure representing the USB 2.0 Extension descriptor - * This descriptor is documented in section 9.6.2.1 of the USB 3.0 specification. - * All multiple-byte fields are represented in host-endian format. - */ -struct libusb_usb_2_0_extension_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_DEVICE_CAPABILITY - * LIBUSB_DT_DEVICE_CAPABILITY in this context. */ - uint8_t bDescriptorType; - - /** Capability type. Will have value - * \ref libusb_capability_type::LIBUSB_BT_USB_2_0_EXTENSION - * LIBUSB_BT_USB_2_0_EXTENSION in this context. */ - uint8_t bDevCapabilityType; - - /** Bitmap encoding of supported device level features. - * A value of one in a bit location indicates a feature is - * supported; a value of zero indicates it is not supported. - * See \ref libusb_usb_2_0_extension_attributes. */ - uint32_t bmAttributes; -}; - -/** \ingroup libusb_desc - * A structure representing the SuperSpeed USB Device Capability descriptor - * This descriptor is documented in section 9.6.2.2 of the USB 3.0 specification. - * All multiple-byte fields are represented in host-endian format. - */ -struct libusb_ss_usb_device_capability_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_DEVICE_CAPABILITY - * LIBUSB_DT_DEVICE_CAPABILITY in this context. */ - uint8_t bDescriptorType; - - /** Capability type. Will have value - * \ref libusb_capability_type::LIBUSB_BT_SS_USB_DEVICE_CAPABILITY - * LIBUSB_BT_SS_USB_DEVICE_CAPABILITY in this context. */ - uint8_t bDevCapabilityType; - - /** Bitmap encoding of supported device level features. - * A value of one in a bit location indicates a feature is - * supported; a value of zero indicates it is not supported. - * See \ref libusb_ss_usb_device_capability_attributes. */ - uint8_t bmAttributes; - - /** Bitmap encoding of the speed supported by this device when - * operating in SuperSpeed mode. See \ref libusb_supported_speed. */ - uint16_t wSpeedSupported; - - /** The lowest speed at which all the functionality supported - * by the device is available to the user. For example if the - * device supports all its functionality when connected at - * full speed and above then it sets this value to 1. */ - uint8_t bFunctionalitySupport; - - /** U1 Device Exit Latency. */ - uint8_t bU1DevExitLat; - - /** U2 Device Exit Latency. */ - uint16_t bU2DevExitLat; -}; - -/** \ingroup libusb_desc - * A structure representing the Container ID descriptor. - * This descriptor is documented in section 9.6.2.3 of the USB 3.0 specification. - * All multiple-byte fields, except UUIDs, are represented in host-endian format. - */ -struct libusb_container_id_descriptor { - /** Size of this descriptor (in bytes) */ - uint8_t bLength; - - /** Descriptor type. Will have value - * \ref libusb_descriptor_type::LIBUSB_DT_DEVICE_CAPABILITY - * LIBUSB_DT_DEVICE_CAPABILITY in this context. */ - uint8_t bDescriptorType; - - /** Capability type. Will have value - * \ref libusb_capability_type::LIBUSB_BT_CONTAINER_ID - * LIBUSB_BT_CONTAINER_ID in this context. */ - uint8_t bDevCapabilityType; - - /** Reserved field */ - uint8_t bReserved; - - /** 128 bit UUID */ - uint8_t ContainerID[16]; -}; - -/** \ingroup libusb_asyncio - * Setup packet for control transfers. */ -struct libusb_control_setup { - /** Request type. Bits 0:4 determine recipient, see - * \ref libusb_request_recipient. Bits 5:6 determine type, see - * \ref libusb_request_type. Bit 7 determines data transfer direction, see - * \ref libusb_endpoint_direction. - */ - uint8_t bmRequestType; - - /** Request. If the type bits of bmRequestType are equal to - * \ref libusb_request_type::LIBUSB_REQUEST_TYPE_STANDARD - * "LIBUSB_REQUEST_TYPE_STANDARD" then this field refers to - * \ref libusb_standard_request. For other cases, use of this field is - * application-specific. */ - uint8_t bRequest; - - /** Value. Varies according to request */ - uint16_t wValue; - - /** Index. Varies according to request, typically used to pass an index - * or offset */ - uint16_t wIndex; - - /** Number of bytes to transfer */ - uint16_t wLength; -}; - -#define LIBUSB_CONTROL_SETUP_SIZE (sizeof(struct libusb_control_setup)) - -/* libusb */ - -struct libusb_context; -struct libusb_device; -struct libusb_device_handle; - -/** \ingroup libusb_lib - * Structure providing the version of the libusb runtime - */ -struct libusb_version { - /** Library major version. */ - const uint16_t major; - - /** Library minor version. */ - const uint16_t minor; - - /** Library micro version. */ - const uint16_t micro; - - /** Library nano version. */ - const uint16_t nano; - - /** Library release candidate suffix string, e.g. "-rc4". */ - const char *rc; - - /** For ABI compatibility only. */ - const char* describe; -}; - -/** \ingroup libusb_lib - * Structure representing a libusb session. The concept of individual libusb - * sessions allows for your program to use two libraries (or dynamically - * load two modules) which both independently use libusb. This will prevent - * interference between the individual libusb users - for example - * libusb_set_option() will not affect the other user of the library, and - * libusb_exit() will not destroy resources that the other user is still - * using. - * - * Sessions are created by libusb_init() and destroyed through libusb_exit(). - * If your application is guaranteed to only ever include a single libusb - * user (i.e. you), you do not have to worry about contexts: pass NULL in - * every function call where a context is required. The default context - * will be used. - * - * For more information, see \ref libusb_contexts. - */ -typedef struct libusb_context libusb_context; - -/** \ingroup libusb_dev - * Structure representing a USB device detected on the system. This is an - * opaque type for which you are only ever provided with a pointer, usually - * originating from libusb_get_device_list(). - * - * Certain operations can be performed on a device, but in order to do any - * I/O you will have to first obtain a device handle using libusb_open(). - * - * Devices are reference counted with libusb_ref_device() and - * libusb_unref_device(), and are freed when the reference count reaches 0. - * New devices presented by libusb_get_device_list() have a reference count of - * 1, and libusb_free_device_list() can optionally decrease the reference count - * on all devices in the list. libusb_open() adds another reference which is - * later destroyed by libusb_close(). - */ -typedef struct libusb_device libusb_device; - - -/** \ingroup libusb_dev - * Structure representing a handle on a USB device. This is an opaque type for - * which you are only ever provided with a pointer, usually originating from - * libusb_open(). - * - * A device handle is used to perform I/O and other operations. When finished - * with a device handle, you should call libusb_close(). - */ -typedef struct libusb_device_handle libusb_device_handle; - -/** \ingroup libusb_dev - * Speed codes. Indicates the speed at which the device is operating. - */ -enum libusb_speed { - /** The OS doesn't report or know the device speed. */ - LIBUSB_SPEED_UNKNOWN = 0, - - /** The device is operating at low speed (1.5MBit/s). */ - LIBUSB_SPEED_LOW = 1, - - /** The device is operating at full speed (12MBit/s). */ - LIBUSB_SPEED_FULL = 2, - - /** The device is operating at high speed (480MBit/s). */ - LIBUSB_SPEED_HIGH = 3, - - /** The device is operating at super speed (5000MBit/s). */ - LIBUSB_SPEED_SUPER = 4, - - /** The device is operating at super speed plus (10000MBit/s). */ - LIBUSB_SPEED_SUPER_PLUS = 5, -}; - -/** \ingroup libusb_dev - * Supported speeds (wSpeedSupported) bitfield. Indicates what - * speeds the device supports. - */ -enum libusb_supported_speed { - /** Low speed operation supported (1.5MBit/s). */ - LIBUSB_LOW_SPEED_OPERATION = 1, - - /** Full speed operation supported (12MBit/s). */ - LIBUSB_FULL_SPEED_OPERATION = 2, - - /** High speed operation supported (480MBit/s). */ - LIBUSB_HIGH_SPEED_OPERATION = 4, - - /** Superspeed operation supported (5000MBit/s). */ - LIBUSB_SUPER_SPEED_OPERATION = 8, -}; - -/** \ingroup libusb_dev - * Masks for the bits of the - * \ref libusb_usb_2_0_extension_descriptor::bmAttributes "bmAttributes" field - * of the USB 2.0 Extension descriptor. - */ -enum libusb_usb_2_0_extension_attributes { - /** Supports Link Power Management (LPM) */ - LIBUSB_BM_LPM_SUPPORT = 2, -}; - -/** \ingroup libusb_dev - * Masks for the bits of the - * \ref libusb_ss_usb_device_capability_descriptor::bmAttributes "bmAttributes" field - * field of the SuperSpeed USB Device Capability descriptor. - */ -enum libusb_ss_usb_device_capability_attributes { - /** Supports Latency Tolerance Messages (LTM) */ - LIBUSB_BM_LTM_SUPPORT = 2, -}; - -/** \ingroup libusb_dev - * USB capability types - */ -enum libusb_bos_type { - /** Wireless USB device capability */ - LIBUSB_BT_WIRELESS_USB_DEVICE_CAPABILITY = 1, - - /** USB 2.0 extensions */ - LIBUSB_BT_USB_2_0_EXTENSION = 2, - - /** SuperSpeed USB device capability */ - LIBUSB_BT_SS_USB_DEVICE_CAPABILITY = 3, - - /** Container ID type */ - LIBUSB_BT_CONTAINER_ID = 4, -}; - -/** \ingroup libusb_misc - * Error codes. Most libusb functions return 0 on success or one of these - * codes on failure. - * You can call libusb_error_name() to retrieve a string representation of an - * error code or libusb_strerror() to get an end-user suitable description of - * an error code. - */ -enum libusb_error { - /** Success (no error) */ - LIBUSB_SUCCESS = 0, - - /** Input/output error */ - LIBUSB_ERROR_IO = -1, - - /** Invalid parameter */ - LIBUSB_ERROR_INVALID_PARAM = -2, - - /** Access denied (insufficient permissions) */ - LIBUSB_ERROR_ACCESS = -3, - - /** No such device (it may have been disconnected) */ - LIBUSB_ERROR_NO_DEVICE = -4, - - /** Entity not found */ - LIBUSB_ERROR_NOT_FOUND = -5, - - /** Resource busy */ - LIBUSB_ERROR_BUSY = -6, - - /** Operation timed out */ - LIBUSB_ERROR_TIMEOUT = -7, - - /** Overflow */ - LIBUSB_ERROR_OVERFLOW = -8, - - /** Pipe error */ - LIBUSB_ERROR_PIPE = -9, - - /** System call interrupted (perhaps due to signal) */ - LIBUSB_ERROR_INTERRUPTED = -10, - - /** Insufficient memory */ - LIBUSB_ERROR_NO_MEM = -11, - - /** Operation not supported or unimplemented on this platform */ - LIBUSB_ERROR_NOT_SUPPORTED = -12, - - /* NB: Remember to update LIBUSB_ERROR_COUNT below as well as the - message strings in strerror.c when adding new error codes here. */ - - /** Other error */ - LIBUSB_ERROR_OTHER = -99, -}; - -/* Total number of error codes in enum libusb_error */ -#define LIBUSB_ERROR_COUNT 14 - -/** \ingroup libusb_asyncio - * Transfer status codes */ -enum libusb_transfer_status { - /** Transfer completed without error. Note that this does not indicate - * that the entire amount of requested data was transferred. */ - LIBUSB_TRANSFER_COMPLETED, - - /** Transfer failed */ - LIBUSB_TRANSFER_ERROR, - - /** Transfer timed out */ - LIBUSB_TRANSFER_TIMED_OUT, - - /** Transfer was cancelled */ - LIBUSB_TRANSFER_CANCELLED, - - /** For bulk/interrupt endpoints: halt condition detected (endpoint - * stalled). For control endpoints: control request not supported. */ - LIBUSB_TRANSFER_STALL, - - /** Device was disconnected */ - LIBUSB_TRANSFER_NO_DEVICE, - - /** Device sent more data than requested */ - LIBUSB_TRANSFER_OVERFLOW, - - /* NB! Remember to update libusb_error_name() - when adding new status codes here. */ -}; - -/** \ingroup libusb_asyncio - * libusb_transfer.flags values */ -enum libusb_transfer_flags { - /** Report short frames as errors */ - LIBUSB_TRANSFER_SHORT_NOT_OK = 1U << 0, - - /** Automatically free() transfer buffer during libusb_free_transfer(). - * Note that buffers allocated with libusb_dev_mem_alloc() should not - * be attempted freed in this way, since free() is not an appropriate - * way to release such memory. */ - LIBUSB_TRANSFER_FREE_BUFFER = 1U << 1, - - /** Automatically call libusb_free_transfer() after callback returns. - * If this flag is set, it is illegal to call libusb_free_transfer() - * from your transfer callback, as this will result in a double-free - * when this flag is acted upon. */ - LIBUSB_TRANSFER_FREE_TRANSFER = 1U << 2, - - /** Terminate transfers that are a multiple of the endpoint's - * wMaxPacketSize with an extra zero length packet. This is useful - * when a device protocol mandates that each logical request is - * terminated by an incomplete packet (i.e. the logical requests are - * not separated by other means). - * - * This flag only affects host-to-device transfers to bulk and interrupt - * endpoints. In other situations, it is ignored. - * - * This flag only affects transfers with a length that is a multiple of - * the endpoint's wMaxPacketSize. On transfers of other lengths, this - * flag has no effect. Therefore, if you are working with a device that - * needs a ZLP whenever the end of the logical request falls on a packet - * boundary, then it is sensible to set this flag on every - * transfer (you do not have to worry about only setting it on transfers - * that end on the boundary). - * - * This flag is currently only supported on Linux. - * On other systems, libusb_submit_transfer() will return - * LIBUSB_ERROR_NOT_SUPPORTED for every transfer where this flag is set. - * - * Available since libusb-1.0.9. - */ - LIBUSB_TRANSFER_ADD_ZERO_PACKET = 1U << 3, -}; - -/** \ingroup libusb_asyncio - * Isochronous packet descriptor. */ -struct libusb_iso_packet_descriptor { - /** Length of data to request in this packet */ - unsigned int length; - - /** Amount of data that was actually transferred */ - unsigned int actual_length; - - /** Status code for this packet */ - enum libusb_transfer_status status; -}; - -struct libusb_transfer; - -/** \ingroup libusb_asyncio - * Asynchronous transfer callback function type. When submitting asynchronous - * transfers, you pass a pointer to a callback function of this type via the - * \ref libusb_transfer::callback "callback" member of the libusb_transfer - * structure. libusb will call this function later, when the transfer has - * completed or failed. See \ref libusb_asyncio for more information. - * \param transfer The libusb_transfer struct the callback function is being - * notified about. - */ -typedef void (LIBUSB_CALL *libusb_transfer_cb_fn)(struct libusb_transfer *transfer); - -/** \ingroup libusb_asyncio - * The generic USB transfer structure. The user populates this structure and - * then submits it in order to request a transfer. After the transfer has - * completed, the library populates the transfer with the results and passes - * it back to the user. - */ -struct libusb_transfer { - /** Handle of the device that this transfer will be submitted to */ - libusb_device_handle *dev_handle; - - /** A bitwise OR combination of \ref libusb_transfer_flags. */ - uint8_t flags; - - /** Address of the endpoint where this transfer will be sent. */ - unsigned char endpoint; - - /** Type of the endpoint from \ref libusb_transfer_type */ - unsigned char type; - - /** Timeout for this transfer in milliseconds. A value of 0 indicates no - * timeout. */ - unsigned int timeout; - - /** The status of the transfer. Read-only, and only for use within - * transfer callback function. - * - * If this is an isochronous transfer, this field may read COMPLETED even - * if there were errors in the frames. Use the - * \ref libusb_iso_packet_descriptor::status "status" field in each packet - * to determine if errors occurred. */ - enum libusb_transfer_status status; - - /** Length of the data buffer. Must be non-negative. */ - int length; - - /** Actual length of data that was transferred. Read-only, and only for - * use within transfer callback function. Not valid for isochronous - * endpoint transfers. */ - int actual_length; - - /** Callback function. This will be invoked when the transfer completes, - * fails, or is cancelled. */ - libusb_transfer_cb_fn callback; - - /** User context data to pass to the callback function. */ - void *user_data; - - /** Data buffer */ - unsigned char *buffer; - - /** Number of isochronous packets. Only used for I/O with isochronous - * endpoints. Must be non-negative. */ - int num_iso_packets; - - /** Isochronous packet descriptors, for isochronous transfers only. */ - struct libusb_iso_packet_descriptor iso_packet_desc[ZERO_SIZED_ARRAY]; -}; - -/** \ingroup libusb_misc - * Capabilities supported by an instance of libusb on the current running - * platform. Test if the loaded library supports a given capability by calling - * \ref libusb_has_capability(). - */ -enum libusb_capability { - /** The libusb_has_capability() API is available. */ - LIBUSB_CAP_HAS_CAPABILITY = 0x0000, - /** Hotplug support is available on this platform. */ - LIBUSB_CAP_HAS_HOTPLUG = 0x0001, - /** The library can access HID devices without requiring user intervention. - * Note that before being able to actually access an HID device, you may - * still have to call additional libusb functions such as - * \ref libusb_detach_kernel_driver(). */ - LIBUSB_CAP_HAS_HID_ACCESS = 0x0100, - /** The library supports detaching of the default USB driver, using - * \ref libusb_detach_kernel_driver(), if one is set by the OS kernel */ - LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER = 0x0101 -}; - -/** \ingroup libusb_lib - * Log message levels. - * - LIBUSB_LOG_LEVEL_NONE (0) : no messages ever printed by the library (default) - * - LIBUSB_LOG_LEVEL_ERROR (1) : error messages are printed to stderr - * - LIBUSB_LOG_LEVEL_WARNING (2) : warning and error messages are printed to stderr - * - LIBUSB_LOG_LEVEL_INFO (3) : informational messages are printed to stderr - * - LIBUSB_LOG_LEVEL_DEBUG (4) : debug and informational messages are printed to stderr - */ -enum libusb_log_level { - LIBUSB_LOG_LEVEL_NONE = 0, - LIBUSB_LOG_LEVEL_ERROR = 1, - LIBUSB_LOG_LEVEL_WARNING = 2, - LIBUSB_LOG_LEVEL_INFO = 3, - LIBUSB_LOG_LEVEL_DEBUG = 4, -}; - -/** \ingroup libusb_lib - * Log callback mode. - * \see libusb_set_log_cb() - */ -enum libusb_log_cb_mode { - - /** Callback function handling all log mesages. */ - LIBUSB_LOG_CB_GLOBAL = 1 << 0, - - /** Callback function handling context related log mesages. */ - LIBUSB_LOG_CB_CONTEXT = 1 << 1 -}; - -/** \ingroup libusb_lib - * Callback function for handling log messages. - * \param ctx the context which is related to the log message, or NULL if it - * is a global log message - * \param level the log level, see \ref libusb_log_level for a description - * \param str the log message - * \see libusb_set_log_cb() - */ -typedef void (LIBUSB_CALL *libusb_log_cb)(libusb_context *ctx, - enum libusb_log_level level, const char *str); - -int LIBUSB_CALL libusb_init(libusb_context **ctx); -void LIBUSB_CALL libusb_exit(libusb_context *ctx); -LIBUSB_DEPRECATED_FOR(libusb_set_option) -void LIBUSB_CALL libusb_set_debug(libusb_context *ctx, int level); -void LIBUSB_CALL libusb_set_log_cb(libusb_context *ctx, libusb_log_cb cb, int mode); -const struct libusb_version * LIBUSB_CALL libusb_get_version(void); -int LIBUSB_CALL libusb_has_capability(uint32_t capability); -const char * LIBUSB_CALL libusb_error_name(int errcode); -int LIBUSB_CALL libusb_setlocale(const char *locale); -const char * LIBUSB_CALL libusb_strerror(enum libusb_error errcode); - -ssize_t LIBUSB_CALL libusb_get_device_list(libusb_context *ctx, - libusb_device ***list); -void LIBUSB_CALL libusb_free_device_list(libusb_device **list, - int unref_devices); -libusb_device * LIBUSB_CALL libusb_ref_device(libusb_device *dev); -void LIBUSB_CALL libusb_unref_device(libusb_device *dev); - -int LIBUSB_CALL libusb_get_configuration(libusb_device_handle *dev, - int *config); -int LIBUSB_CALL libusb_get_device_descriptor(libusb_device *dev, - struct libusb_device_descriptor *desc); -int LIBUSB_CALL libusb_get_active_config_descriptor(libusb_device *dev, - struct libusb_config_descriptor **config); -int LIBUSB_CALL libusb_get_config_descriptor(libusb_device *dev, - uint8_t config_index, struct libusb_config_descriptor **config); -int LIBUSB_CALL libusb_get_config_descriptor_by_value(libusb_device *dev, - uint8_t bConfigurationValue, struct libusb_config_descriptor **config); -void LIBUSB_CALL libusb_free_config_descriptor( - struct libusb_config_descriptor *config); -int LIBUSB_CALL libusb_get_ss_endpoint_companion_descriptor( - struct libusb_context *ctx, - const struct libusb_endpoint_descriptor *endpoint, - struct libusb_ss_endpoint_companion_descriptor **ep_comp); -void LIBUSB_CALL libusb_free_ss_endpoint_companion_descriptor( - struct libusb_ss_endpoint_companion_descriptor *ep_comp); -int LIBUSB_CALL libusb_get_bos_descriptor(libusb_device_handle *dev_handle, - struct libusb_bos_descriptor **bos); -void LIBUSB_CALL libusb_free_bos_descriptor(struct libusb_bos_descriptor *bos); -int LIBUSB_CALL libusb_get_usb_2_0_extension_descriptor( - struct libusb_context *ctx, - struct libusb_bos_dev_capability_descriptor *dev_cap, - struct libusb_usb_2_0_extension_descriptor **usb_2_0_extension); -void LIBUSB_CALL libusb_free_usb_2_0_extension_descriptor( - struct libusb_usb_2_0_extension_descriptor *usb_2_0_extension); -int LIBUSB_CALL libusb_get_ss_usb_device_capability_descriptor( - struct libusb_context *ctx, - struct libusb_bos_dev_capability_descriptor *dev_cap, - struct libusb_ss_usb_device_capability_descriptor **ss_usb_device_cap); -void LIBUSB_CALL libusb_free_ss_usb_device_capability_descriptor( - struct libusb_ss_usb_device_capability_descriptor *ss_usb_device_cap); -int LIBUSB_CALL libusb_get_container_id_descriptor(struct libusb_context *ctx, - struct libusb_bos_dev_capability_descriptor *dev_cap, - struct libusb_container_id_descriptor **container_id); -void LIBUSB_CALL libusb_free_container_id_descriptor( - struct libusb_container_id_descriptor *container_id); -uint8_t LIBUSB_CALL libusb_get_bus_number(libusb_device *dev); -uint8_t LIBUSB_CALL libusb_get_port_number(libusb_device *dev); -int LIBUSB_CALL libusb_get_port_numbers(libusb_device *dev, uint8_t* port_numbers, int port_numbers_len); -LIBUSB_DEPRECATED_FOR(libusb_get_port_numbers) -int LIBUSB_CALL libusb_get_port_path(libusb_context *ctx, libusb_device *dev, uint8_t* path, uint8_t path_length); -libusb_device * LIBUSB_CALL libusb_get_parent(libusb_device *dev); -uint8_t LIBUSB_CALL libusb_get_device_address(libusb_device *dev); -int LIBUSB_CALL libusb_get_device_speed(libusb_device *dev); -int LIBUSB_CALL libusb_get_max_packet_size(libusb_device *dev, - unsigned char endpoint); -int LIBUSB_CALL libusb_get_max_iso_packet_size(libusb_device *dev, - unsigned char endpoint); - -int LIBUSB_CALL libusb_wrap_sys_device(libusb_context *ctx, intptr_t sys_dev, libusb_device_handle **dev_handle); -int LIBUSB_CALL libusb_open(libusb_device *dev, libusb_device_handle **dev_handle); -void LIBUSB_CALL libusb_close(libusb_device_handle *dev_handle); -libusb_device * LIBUSB_CALL libusb_get_device(libusb_device_handle *dev_handle); - -int LIBUSB_CALL libusb_set_configuration(libusb_device_handle *dev_handle, - int configuration); -int LIBUSB_CALL libusb_claim_interface(libusb_device_handle *dev_handle, - int interface_number); -int LIBUSB_CALL libusb_release_interface(libusb_device_handle *dev_handle, - int interface_number); - -libusb_device_handle * LIBUSB_CALL libusb_open_device_with_vid_pid( - libusb_context *ctx, uint16_t vendor_id, uint16_t product_id); - -int LIBUSB_CALL libusb_set_interface_alt_setting(libusb_device_handle *dev_handle, - int interface_number, int alternate_setting); -int LIBUSB_CALL libusb_clear_halt(libusb_device_handle *dev_handle, - unsigned char endpoint); -int LIBUSB_CALL libusb_reset_device(libusb_device_handle *dev_handle); - -int LIBUSB_CALL libusb_alloc_streams(libusb_device_handle *dev_handle, - uint32_t num_streams, unsigned char *endpoints, int num_endpoints); -int LIBUSB_CALL libusb_free_streams(libusb_device_handle *dev_handle, - unsigned char *endpoints, int num_endpoints); - -unsigned char * LIBUSB_CALL libusb_dev_mem_alloc(libusb_device_handle *dev_handle, - size_t length); -int LIBUSB_CALL libusb_dev_mem_free(libusb_device_handle *dev_handle, - unsigned char *buffer, size_t length); - -int LIBUSB_CALL libusb_kernel_driver_active(libusb_device_handle *dev_handle, - int interface_number); -int LIBUSB_CALL libusb_detach_kernel_driver(libusb_device_handle *dev_handle, - int interface_number); -int LIBUSB_CALL libusb_attach_kernel_driver(libusb_device_handle *dev_handle, - int interface_number); -int LIBUSB_CALL libusb_set_auto_detach_kernel_driver( - libusb_device_handle *dev_handle, int enable); - -/* async I/O */ - -/** \ingroup libusb_asyncio - * Get the data section of a control transfer. This convenience function is here - * to remind you that the data does not start until 8 bytes into the actual - * buffer, as the setup packet comes first. - * - * Calling this function only makes sense from a transfer callback function, - * or situations where you have already allocated a suitably sized buffer at - * transfer->buffer. - * - * \param transfer a transfer - * \returns pointer to the first byte of the data section - */ -static inline unsigned char *libusb_control_transfer_get_data( - struct libusb_transfer *transfer) -{ - return transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE; -} - -/** \ingroup libusb_asyncio - * Get the control setup packet of a control transfer. This convenience - * function is here to remind you that the control setup occupies the first - * 8 bytes of the transfer data buffer. - * - * Calling this function only makes sense from a transfer callback function, - * or situations where you have already allocated a suitably sized buffer at - * transfer->buffer. - * - * \param transfer a transfer - * \returns a casted pointer to the start of the transfer data buffer - */ -static inline struct libusb_control_setup *libusb_control_transfer_get_setup( - struct libusb_transfer *transfer) -{ - return (struct libusb_control_setup *)(void *) transfer->buffer; -} - -/** \ingroup libusb_asyncio - * Helper function to populate the setup packet (first 8 bytes of the data - * buffer) for a control transfer. The wIndex, wValue and wLength values should - * be given in host-endian byte order. - * - * \param buffer buffer to output the setup packet into - * This pointer must be aligned to at least 2 bytes boundary. - * \param bmRequestType see the - * \ref libusb_control_setup::bmRequestType "bmRequestType" field of - * \ref libusb_control_setup - * \param bRequest see the - * \ref libusb_control_setup::bRequest "bRequest" field of - * \ref libusb_control_setup - * \param wValue see the - * \ref libusb_control_setup::wValue "wValue" field of - * \ref libusb_control_setup - * \param wIndex see the - * \ref libusb_control_setup::wIndex "wIndex" field of - * \ref libusb_control_setup - * \param wLength see the - * \ref libusb_control_setup::wLength "wLength" field of - * \ref libusb_control_setup - */ -static inline void libusb_fill_control_setup(unsigned char *buffer, - uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, - uint16_t wLength) -{ - struct libusb_control_setup *setup = (struct libusb_control_setup *)(void *) buffer; - setup->bmRequestType = bmRequestType; - setup->bRequest = bRequest; - setup->wValue = libusb_cpu_to_le16(wValue); - setup->wIndex = libusb_cpu_to_le16(wIndex); - setup->wLength = libusb_cpu_to_le16(wLength); -} - -struct libusb_transfer * LIBUSB_CALL libusb_alloc_transfer(int iso_packets); -int LIBUSB_CALL libusb_submit_transfer(struct libusb_transfer *transfer); -int LIBUSB_CALL libusb_cancel_transfer(struct libusb_transfer *transfer); -void LIBUSB_CALL libusb_free_transfer(struct libusb_transfer *transfer); -void LIBUSB_CALL libusb_transfer_set_stream_id( - struct libusb_transfer *transfer, uint32_t stream_id); -uint32_t LIBUSB_CALL libusb_transfer_get_stream_id( - struct libusb_transfer *transfer); - -/** \ingroup libusb_asyncio - * Helper function to populate the required \ref libusb_transfer fields - * for a control transfer. - * - * If you pass a transfer buffer to this function, the first 8 bytes will - * be interpreted as a control setup packet, and the wLength field will be - * used to automatically populate the \ref libusb_transfer::length "length" - * field of the transfer. Therefore the recommended approach is: - * -# Allocate a suitably sized data buffer (including space for control setup) - * -# Call libusb_fill_control_setup() - * -# If this is a host-to-device transfer with a data stage, put the data - * in place after the setup packet - * -# Call this function - * -# Call libusb_submit_transfer() - * - * It is also legal to pass a NULL buffer to this function, in which case this - * function will not attempt to populate the length field. Remember that you - * must then populate the buffer and length fields later. - * - * \param transfer the transfer to populate - * \param dev_handle handle of the device that will handle the transfer - * \param buffer data buffer. If provided, this function will interpret the - * first 8 bytes as a setup packet and infer the transfer length from that. - * This pointer must be aligned to at least 2 bytes boundary. - * \param callback callback function to be invoked on transfer completion - * \param user_data user data to pass to callback function - * \param timeout timeout for the transfer in milliseconds - */ -static inline void libusb_fill_control_transfer( - struct libusb_transfer *transfer, libusb_device_handle *dev_handle, - unsigned char *buffer, libusb_transfer_cb_fn callback, void *user_data, - unsigned int timeout) -{ - struct libusb_control_setup *setup = (struct libusb_control_setup *)(void *) buffer; - transfer->dev_handle = dev_handle; - transfer->endpoint = 0; - transfer->type = LIBUSB_TRANSFER_TYPE_CONTROL; - transfer->timeout = timeout; - transfer->buffer = buffer; - if (setup) - transfer->length = (int) (LIBUSB_CONTROL_SETUP_SIZE - + libusb_le16_to_cpu(setup->wLength)); - transfer->user_data = user_data; - transfer->callback = callback; -} - -/** \ingroup libusb_asyncio - * Helper function to populate the required \ref libusb_transfer fields - * for a bulk transfer. - * - * \param transfer the transfer to populate - * \param dev_handle handle of the device that will handle the transfer - * \param endpoint address of the endpoint where this transfer will be sent - * \param buffer data buffer - * \param length length of data buffer - * \param callback callback function to be invoked on transfer completion - * \param user_data user data to pass to callback function - * \param timeout timeout for the transfer in milliseconds - */ -static inline void libusb_fill_bulk_transfer(struct libusb_transfer *transfer, - libusb_device_handle *dev_handle, unsigned char endpoint, - unsigned char *buffer, int length, libusb_transfer_cb_fn callback, - void *user_data, unsigned int timeout) -{ - transfer->dev_handle = dev_handle; - transfer->endpoint = endpoint; - transfer->type = LIBUSB_TRANSFER_TYPE_BULK; - transfer->timeout = timeout; - transfer->buffer = buffer; - transfer->length = length; - transfer->user_data = user_data; - transfer->callback = callback; -} - -/** \ingroup libusb_asyncio - * Helper function to populate the required \ref libusb_transfer fields - * for a bulk transfer using bulk streams. - * - * Since version 1.0.19, \ref LIBUSB_API_VERSION >= 0x01000103 - * - * \param transfer the transfer to populate - * \param dev_handle handle of the device that will handle the transfer - * \param endpoint address of the endpoint where this transfer will be sent - * \param stream_id bulk stream id for this transfer - * \param buffer data buffer - * \param length length of data buffer - * \param callback callback function to be invoked on transfer completion - * \param user_data user data to pass to callback function - * \param timeout timeout for the transfer in milliseconds - */ -static inline void libusb_fill_bulk_stream_transfer( - struct libusb_transfer *transfer, libusb_device_handle *dev_handle, - unsigned char endpoint, uint32_t stream_id, - unsigned char *buffer, int length, libusb_transfer_cb_fn callback, - void *user_data, unsigned int timeout) -{ - libusb_fill_bulk_transfer(transfer, dev_handle, endpoint, buffer, - length, callback, user_data, timeout); - transfer->type = LIBUSB_TRANSFER_TYPE_BULK_STREAM; - libusb_transfer_set_stream_id(transfer, stream_id); -} - -/** \ingroup libusb_asyncio - * Helper function to populate the required \ref libusb_transfer fields - * for an interrupt transfer. - * - * \param transfer the transfer to populate - * \param dev_handle handle of the device that will handle the transfer - * \param endpoint address of the endpoint where this transfer will be sent - * \param buffer data buffer - * \param length length of data buffer - * \param callback callback function to be invoked on transfer completion - * \param user_data user data to pass to callback function - * \param timeout timeout for the transfer in milliseconds - */ -static inline void libusb_fill_interrupt_transfer( - struct libusb_transfer *transfer, libusb_device_handle *dev_handle, - unsigned char endpoint, unsigned char *buffer, int length, - libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout) -{ - transfer->dev_handle = dev_handle; - transfer->endpoint = endpoint; - transfer->type = LIBUSB_TRANSFER_TYPE_INTERRUPT; - transfer->timeout = timeout; - transfer->buffer = buffer; - transfer->length = length; - transfer->user_data = user_data; - transfer->callback = callback; -} - -/** \ingroup libusb_asyncio - * Helper function to populate the required \ref libusb_transfer fields - * for an isochronous transfer. - * - * \param transfer the transfer to populate - * \param dev_handle handle of the device that will handle the transfer - * \param endpoint address of the endpoint where this transfer will be sent - * \param buffer data buffer - * \param length length of data buffer - * \param num_iso_packets the number of isochronous packets - * \param callback callback function to be invoked on transfer completion - * \param user_data user data to pass to callback function - * \param timeout timeout for the transfer in milliseconds - */ -static inline void libusb_fill_iso_transfer(struct libusb_transfer *transfer, - libusb_device_handle *dev_handle, unsigned char endpoint, - unsigned char *buffer, int length, int num_iso_packets, - libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout) -{ - transfer->dev_handle = dev_handle; - transfer->endpoint = endpoint; - transfer->type = LIBUSB_TRANSFER_TYPE_ISOCHRONOUS; - transfer->timeout = timeout; - transfer->buffer = buffer; - transfer->length = length; - transfer->num_iso_packets = num_iso_packets; - transfer->user_data = user_data; - transfer->callback = callback; -} - -/** \ingroup libusb_asyncio - * Convenience function to set the length of all packets in an isochronous - * transfer, based on the num_iso_packets field in the transfer structure. - * - * \param transfer a transfer - * \param length the length to set in each isochronous packet descriptor - * \see libusb_get_max_packet_size() - */ -static inline void libusb_set_iso_packet_lengths( - struct libusb_transfer *transfer, unsigned int length) -{ - int i; - for (i = 0; i < transfer->num_iso_packets; i++) - transfer->iso_packet_desc[i].length = length; -} - -/** \ingroup libusb_asyncio - * Convenience function to locate the position of an isochronous packet - * within the buffer of an isochronous transfer. - * - * This is a thorough function which loops through all preceding packets, - * accumulating their lengths to find the position of the specified packet. - * Typically you will assign equal lengths to each packet in the transfer, - * and hence the above method is sub-optimal. You may wish to use - * libusb_get_iso_packet_buffer_simple() instead. - * - * \param transfer a transfer - * \param packet the packet to return the address of - * \returns the base address of the packet buffer inside the transfer buffer, - * or NULL if the packet does not exist. - * \see libusb_get_iso_packet_buffer_simple() - */ -static inline unsigned char *libusb_get_iso_packet_buffer( - struct libusb_transfer *transfer, unsigned int packet) -{ - int i; - size_t offset = 0; - int _packet; - - /* oops..slight bug in the API. packet is an unsigned int, but we use - * signed integers almost everywhere else. range-check and convert to - * signed to avoid compiler warnings. FIXME for libusb-2. */ - if (packet > INT_MAX) - return NULL; - _packet = (int) packet; - - if (_packet >= transfer->num_iso_packets) - return NULL; - - for (i = 0; i < _packet; i++) - offset += transfer->iso_packet_desc[i].length; - - return transfer->buffer + offset; -} - -/** \ingroup libusb_asyncio - * Convenience function to locate the position of an isochronous packet - * within the buffer of an isochronous transfer, for transfers where each - * packet is of identical size. - * - * This function relies on the assumption that every packet within the transfer - * is of identical size to the first packet. Calculating the location of - * the packet buffer is then just a simple calculation: - * buffer + (packet_size * packet) - * - * Do not use this function on transfers other than those that have identical - * packet lengths for each packet. - * - * \param transfer a transfer - * \param packet the packet to return the address of - * \returns the base address of the packet buffer inside the transfer buffer, - * or NULL if the packet does not exist. - * \see libusb_get_iso_packet_buffer() - */ -static inline unsigned char *libusb_get_iso_packet_buffer_simple( - struct libusb_transfer *transfer, unsigned int packet) -{ - int _packet; - - /* oops..slight bug in the API. packet is an unsigned int, but we use - * signed integers almost everywhere else. range-check and convert to - * signed to avoid compiler warnings. FIXME for libusb-2. */ - if (packet > INT_MAX) - return NULL; - _packet = (int) packet; - - if (_packet >= transfer->num_iso_packets) - return NULL; - - return transfer->buffer + ((int) transfer->iso_packet_desc[0].length * _packet); -} - -/* sync I/O */ - -int LIBUSB_CALL libusb_control_transfer(libusb_device_handle *dev_handle, - uint8_t request_type, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, - unsigned char *data, uint16_t wLength, unsigned int timeout); - -int LIBUSB_CALL libusb_bulk_transfer(libusb_device_handle *dev_handle, - unsigned char endpoint, unsigned char *data, int length, - int *actual_length, unsigned int timeout); - -int LIBUSB_CALL libusb_interrupt_transfer(libusb_device_handle *dev_handle, - unsigned char endpoint, unsigned char *data, int length, - int *actual_length, unsigned int timeout); - -/** \ingroup libusb_desc - * Retrieve a descriptor from the default control pipe. - * This is a convenience function which formulates the appropriate control - * message to retrieve the descriptor. - * - * \param dev_handle a device handle - * \param desc_type the descriptor type, see \ref libusb_descriptor_type - * \param desc_index the index of the descriptor to retrieve - * \param data output buffer for descriptor - * \param length size of data buffer - * \returns number of bytes returned in data, or LIBUSB_ERROR code on failure - */ -static inline int libusb_get_descriptor(libusb_device_handle *dev_handle, - uint8_t desc_type, uint8_t desc_index, unsigned char *data, int length) -{ - return libusb_control_transfer(dev_handle, LIBUSB_ENDPOINT_IN, - LIBUSB_REQUEST_GET_DESCRIPTOR, (uint16_t) ((desc_type << 8) | desc_index), - 0, data, (uint16_t) length, 1000); -} - -/** \ingroup libusb_desc - * Retrieve a descriptor from a device. - * This is a convenience function which formulates the appropriate control - * message to retrieve the descriptor. The string returned is Unicode, as - * detailed in the USB specifications. - * - * \param dev_handle a device handle - * \param desc_index the index of the descriptor to retrieve - * \param langid the language ID for the string descriptor - * \param data output buffer for descriptor - * \param length size of data buffer - * \returns number of bytes returned in data, or LIBUSB_ERROR code on failure - * \see libusb_get_string_descriptor_ascii() - */ -static inline int libusb_get_string_descriptor(libusb_device_handle *dev_handle, - uint8_t desc_index, uint16_t langid, unsigned char *data, int length) -{ - return libusb_control_transfer(dev_handle, LIBUSB_ENDPOINT_IN, - LIBUSB_REQUEST_GET_DESCRIPTOR, (uint16_t)((LIBUSB_DT_STRING << 8) | desc_index), - langid, data, (uint16_t) length, 1000); -} - -int LIBUSB_CALL libusb_get_string_descriptor_ascii(libusb_device_handle *dev_handle, - uint8_t desc_index, unsigned char *data, int length); - -/* polling and timeouts */ - -int LIBUSB_CALL libusb_try_lock_events(libusb_context *ctx); -void LIBUSB_CALL libusb_lock_events(libusb_context *ctx); -void LIBUSB_CALL libusb_unlock_events(libusb_context *ctx); -int LIBUSB_CALL libusb_event_handling_ok(libusb_context *ctx); -int LIBUSB_CALL libusb_event_handler_active(libusb_context *ctx); -void LIBUSB_CALL libusb_interrupt_event_handler(libusb_context *ctx); -void LIBUSB_CALL libusb_lock_event_waiters(libusb_context *ctx); -void LIBUSB_CALL libusb_unlock_event_waiters(libusb_context *ctx); -int LIBUSB_CALL libusb_wait_for_event(libusb_context *ctx, struct timeval *tv); - -int LIBUSB_CALL libusb_handle_events_timeout(libusb_context *ctx, - struct timeval *tv); -int LIBUSB_CALL libusb_handle_events_timeout_completed(libusb_context *ctx, - struct timeval *tv, int *completed); -int LIBUSB_CALL libusb_handle_events(libusb_context *ctx); -int LIBUSB_CALL libusb_handle_events_completed(libusb_context *ctx, int *completed); -int LIBUSB_CALL libusb_handle_events_locked(libusb_context *ctx, - struct timeval *tv); -int LIBUSB_CALL libusb_pollfds_handle_timeouts(libusb_context *ctx); -int LIBUSB_CALL libusb_get_next_timeout(libusb_context *ctx, - struct timeval *tv); - -/** \ingroup libusb_poll - * File descriptor for polling - */ -struct libusb_pollfd { - /** Numeric file descriptor */ - int fd; - - /** Event flags to poll for from . POLLIN indicates that you - * should monitor this file descriptor for becoming ready to read from, - * and POLLOUT indicates that you should monitor this file descriptor for - * nonblocking write readiness. */ - short events; -}; - -/** \ingroup libusb_poll - * Callback function, invoked when a new file descriptor should be added - * to the set of file descriptors monitored for events. - * \param fd the new file descriptor - * \param events events to monitor for, see \ref libusb_pollfd for a - * description - * \param user_data User data pointer specified in - * libusb_set_pollfd_notifiers() call - * \see libusb_set_pollfd_notifiers() - */ -typedef void (LIBUSB_CALL *libusb_pollfd_added_cb)(int fd, short events, - void *user_data); - -/** \ingroup libusb_poll - * Callback function, invoked when a file descriptor should be removed from - * the set of file descriptors being monitored for events. After returning - * from this callback, do not use that file descriptor again. - * \param fd the file descriptor to stop monitoring - * \param user_data User data pointer specified in - * libusb_set_pollfd_notifiers() call - * \see libusb_set_pollfd_notifiers() - */ -typedef void (LIBUSB_CALL *libusb_pollfd_removed_cb)(int fd, void *user_data); - -const struct libusb_pollfd ** LIBUSB_CALL libusb_get_pollfds( - libusb_context *ctx); -void LIBUSB_CALL libusb_free_pollfds(const struct libusb_pollfd **pollfds); -void LIBUSB_CALL libusb_set_pollfd_notifiers(libusb_context *ctx, - libusb_pollfd_added_cb added_cb, libusb_pollfd_removed_cb removed_cb, - void *user_data); - -/** \ingroup libusb_hotplug - * Callback handle. - * - * Callbacks handles are generated by libusb_hotplug_register_callback() - * and can be used to deregister callbacks. Callback handles are unique - * per libusb_context and it is safe to call libusb_hotplug_deregister_callback() - * on an already deregisted callback. - * - * Since version 1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102 - * - * For more information, see \ref libusb_hotplug. - */ -typedef int libusb_hotplug_callback_handle; - -/** \ingroup libusb_hotplug - * - * Since version 1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102 - * - * Flags for hotplug events */ -typedef enum { - /** Default value when not using any flags. */ - LIBUSB_HOTPLUG_NO_FLAGS = 0U, - - /** Arm the callback and fire it for all matching currently attached devices. */ - LIBUSB_HOTPLUG_ENUMERATE = 1U << 0, -} libusb_hotplug_flag; - -/** \ingroup libusb_hotplug - * - * Since version 1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102 - * - * Hotplug events */ -typedef enum { - /** A device has been plugged in and is ready to use */ - LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED = 0x01U, - - /** A device has left and is no longer available. - * It is the user's responsibility to call libusb_close on any handle associated with a disconnected device. - * It is safe to call libusb_get_device_descriptor on a device that has left */ - LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT = 0x02U, -} libusb_hotplug_event; - -/** \ingroup libusb_hotplug - * Wildcard matching for hotplug events */ -#define LIBUSB_HOTPLUG_MATCH_ANY -1 - -/** \ingroup libusb_hotplug - * Hotplug callback function type. When requesting hotplug event notifications, - * you pass a pointer to a callback function of this type. - * - * This callback may be called by an internal event thread and as such it is - * recommended the callback do minimal processing before returning. - * - * libusb will call this function later, when a matching event had happened on - * a matching device. See \ref libusb_hotplug for more information. - * - * It is safe to call either libusb_hotplug_register_callback() or - * libusb_hotplug_deregister_callback() from within a callback function. - * - * Since version 1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102 - * - * \param ctx context of this notification - * \param device libusb_device this event occurred on - * \param event event that occurred - * \param user_data user data provided when this callback was registered - * \returns bool whether this callback is finished processing events. - * returning 1 will cause this callback to be deregistered - */ -typedef int (LIBUSB_CALL *libusb_hotplug_callback_fn)(libusb_context *ctx, - libusb_device *device, - libusb_hotplug_event event, - void *user_data); - -/** \ingroup libusb_hotplug - * Register a hotplug callback function - * - * Register a callback with the libusb_context. The callback will fire - * when a matching event occurs on a matching device. The callback is - * armed until either it is deregistered with libusb_hotplug_deregister_callback() - * or the supplied callback returns 1 to indicate it is finished processing events. - * - * If the \ref LIBUSB_HOTPLUG_ENUMERATE is passed the callback will be - * called with a \ref LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED for all devices - * already plugged into the machine. Note that libusb modifies its internal - * device list from a separate thread, while calling hotplug callbacks from - * libusb_handle_events(), so it is possible for a device to already be present - * on, or removed from, its internal device list, while the hotplug callbacks - * still need to be dispatched. This means that when using \ref - * LIBUSB_HOTPLUG_ENUMERATE, your callback may be called twice for the arrival - * of the same device, once from libusb_hotplug_register_callback() and once - * from libusb_handle_events(); and/or your callback may be called for the - * removal of a device for which an arrived call was never made. - * - * Since version 1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102 - * - * \param[in] ctx context to register this callback with - * \param[in] events bitwise or of events that will trigger this callback. See \ref - * libusb_hotplug_event - * \param[in] flags hotplug callback flags. See \ref libusb_hotplug_flag - * \param[in] vendor_id the vendor id to match or \ref LIBUSB_HOTPLUG_MATCH_ANY - * \param[in] product_id the product id to match or \ref LIBUSB_HOTPLUG_MATCH_ANY - * \param[in] dev_class the device class to match or \ref LIBUSB_HOTPLUG_MATCH_ANY - * \param[in] cb_fn the function to be invoked on a matching event/device - * \param[in] user_data user data to pass to the callback function - * \param[out] callback_handle pointer to store the handle of the allocated callback (can be NULL) - * \returns LIBUSB_SUCCESS on success LIBUSB_ERROR code on failure - */ -int LIBUSB_CALL libusb_hotplug_register_callback(libusb_context *ctx, - libusb_hotplug_event events, - libusb_hotplug_flag flags, - int vendor_id, int product_id, - int dev_class, - libusb_hotplug_callback_fn cb_fn, - void *user_data, - libusb_hotplug_callback_handle *callback_handle); - -/** \ingroup libusb_hotplug - * Deregisters a hotplug callback. - * - * Deregister a callback from a libusb_context. This function is safe to call from within - * a hotplug callback. - * - * Since version 1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102 - * - * \param[in] ctx context this callback is registered with - * \param[in] callback_handle the handle of the callback to deregister - */ -void LIBUSB_CALL libusb_hotplug_deregister_callback(libusb_context *ctx, - libusb_hotplug_callback_handle callback_handle); - -/** \ingroup libusb_lib - * Available option values for libusb_set_option(). - */ -enum libusb_option { - /** Set the log message verbosity. - * - * The default level is LIBUSB_LOG_LEVEL_NONE, which means no messages are ever - * printed. If you choose to increase the message verbosity level, ensure - * that your application does not close the stderr file descriptor. - * - * You are advised to use level LIBUSB_LOG_LEVEL_WARNING. libusb is conservative - * with its message logging and most of the time, will only log messages that - * explain error conditions and other oddities. This will help you debug - * your software. - * - * If the LIBUSB_DEBUG environment variable was set when libusb was - * initialized, this function does nothing: the message verbosity is fixed - * to the value in the environment variable. - * - * If libusb was compiled without any message logging, this function does - * nothing: you'll never get any messages. - * - * If libusb was compiled with verbose debug message logging, this function - * does nothing: you'll always get messages from all levels. - */ - LIBUSB_OPTION_LOG_LEVEL, - - /** Use the UsbDk backend for a specific context, if available. - * - * This option should be set immediately after calling libusb_init(), otherwise - * unspecified behavior may occur. - * - * Only valid on Windows. - */ - LIBUSB_OPTION_USE_USBDK, -}; - -int LIBUSB_CALL libusb_set_option(libusb_context *ctx, enum libusb_option option, ...); - -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Externals/libusb/libusb/libusbi.h b/Externals/libusb/libusb/libusbi.h deleted file mode 100644 index d2adfebc547b..000000000000 --- a/Externals/libusb/libusb/libusbi.h +++ /dev/null @@ -1,1205 +0,0 @@ -/* - * Internal header for libusb - * Copyright © 2007-2009 Daniel Drake - * Copyright © 2001 Johannes Erdfelt - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef LIBUSBI_H -#define LIBUSBI_H - -#include - -#include -#include -#include -#include -#include -#include -#ifdef HAVE_POLL_H -#include -#endif -#ifdef HAVE_MISSING_H -#include -#endif - -#include "libusb.h" -#include "version.h" - -/* Attribute to ensure that a structure member is aligned to a natural - * pointer alignment. Used for os_priv member. */ -#if defined(_MSC_VER) -#if defined(_WIN64) -#define PTR_ALIGNED __declspec(align(8)) -#else -#define PTR_ALIGNED __declspec(align(4)) -#endif -#elif defined(__GNUC__) -#define PTR_ALIGNED __attribute__((aligned(sizeof(void *)))) -#else -#define PTR_ALIGNED -#endif - -/* Inside the libusb code, mark all public functions as follows: - * return_type API_EXPORTED function_name(params) { ... } - * But if the function returns a pointer, mark it as follows: - * DEFAULT_VISIBILITY return_type * LIBUSB_CALL function_name(params) { ... } - * In the libusb public header, mark all declarations as: - * return_type LIBUSB_CALL function_name(params); - */ -#define API_EXPORTED LIBUSB_CALL DEFAULT_VISIBILITY - -/* Macro to decorate printf-like functions, in order to get - * compiler warnings about format string mistakes. - */ -#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2) -#define USBI_PRINTFLIKE(formatarg, firstvararg) \ - __attribute__((__format__ (__printf__, formatarg, firstvararg))) -#else -#define USBI_PRINTFLIKE(formatarg, firstvararg) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define DEVICE_DESC_LENGTH 18 - -#define USB_MAXENDPOINTS 32 -#define USB_MAXINTERFACES 32 -#define USB_MAXCONFIG 8 - -/* Backend specific capabilities */ -#define USBI_CAP_HAS_HID_ACCESS 0x00010000 -#define USBI_CAP_SUPPORTS_DETACH_KERNEL_DRIVER 0x00020000 - -/* Maximum number of bytes in a log line */ -#define USBI_MAX_LOG_LEN 1024 -/* Terminator for log lines */ -#define USBI_LOG_LINE_END "\n" - -/* The following is used to silence warnings for unused variables */ -#define UNUSED(var) do { (void)(var); } while(0) - -#if !defined(ARRAYSIZE) -#define ARRAYSIZE(array) (sizeof(array) / sizeof(array[0])) -#endif - -struct list_head { - struct list_head *prev, *next; -}; - -/* Get an entry from the list - * ptr - the address of this list_head element in "type" - * type - the data type that contains "member" - * member - the list_head element in "type" - */ -#define list_entry(ptr, type, member) \ - ((type *)((uintptr_t)(ptr) - (uintptr_t)offsetof(type, member))) - -#define list_first_entry(ptr, type, member) \ - list_entry((ptr)->next, type, member) - -/* Get each entry from a list - * pos - A structure pointer has a "member" element - * head - list head - * member - the list_head element in "pos" - * type - the type of the first parameter - */ -#define list_for_each_entry(pos, head, member, type) \ - for (pos = list_entry((head)->next, type, member); \ - &pos->member != (head); \ - pos = list_entry(pos->member.next, type, member)) - -#define list_for_each_entry_safe(pos, n, head, member, type) \ - for (pos = list_entry((head)->next, type, member), \ - n = list_entry(pos->member.next, type, member); \ - &pos->member != (head); \ - pos = n, n = list_entry(n->member.next, type, member)) - -#define list_empty(entry) ((entry)->next == (entry)) - -static inline void list_init(struct list_head *entry) -{ - entry->prev = entry->next = entry; -} - -static inline void list_add(struct list_head *entry, struct list_head *head) -{ - entry->next = head->next; - entry->prev = head; - - head->next->prev = entry; - head->next = entry; -} - -static inline void list_add_tail(struct list_head *entry, - struct list_head *head) -{ - entry->next = head; - entry->prev = head->prev; - - head->prev->next = entry; - head->prev = entry; -} - -static inline void list_del(struct list_head *entry) -{ - entry->next->prev = entry->prev; - entry->prev->next = entry->next; - entry->next = entry->prev = NULL; -} - -static inline void list_cut(struct list_head *list, struct list_head *head) -{ - if (list_empty(head)) - return; - - list->next = head->next; - list->next->prev = list; - list->prev = head->prev; - list->prev->next = list; - - list_init(head); -} - -static inline void *usbi_reallocf(void *ptr, size_t size) -{ - void *ret = realloc(ptr, size); - if (!ret) - free(ptr); - return ret; -} - -#define container_of(ptr, type, member) ({ \ - const typeof( ((type *)0)->member ) *mptr = (ptr); \ - (type *)( (char *)mptr - offsetof(type,member) );}) - -#ifndef CLAMP -#define CLAMP(val, min, max) ((val) < (min) ? (min) : ((val) > (max) ? (max) : (val))) -#endif -#ifndef MIN -#define MIN(a, b) ((a) < (b) ? (a) : (b)) -#endif -#ifndef MAX -#define MAX(a, b) ((a) > (b) ? (a) : (b)) -#endif - -#define TIMESPEC_IS_SET(ts) ((ts)->tv_sec != 0 || (ts)->tv_nsec != 0) - -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -#define TIMEVAL_TV_SEC_TYPE long -#else -#define TIMEVAL_TV_SEC_TYPE time_t -#endif - -/* Some platforms don't have this define */ -#ifndef TIMESPEC_TO_TIMEVAL -#define TIMESPEC_TO_TIMEVAL(tv, ts) \ - do { \ - (tv)->tv_sec = (TIMEVAL_TV_SEC_TYPE) (ts)->tv_sec; \ - (tv)->tv_usec = (ts)->tv_nsec / 1000; \ - } while (0) -#endif - -#ifdef ENABLE_LOGGING - -#if defined(_MSC_VER) && (_MSC_VER < 1900) -#define snprintf usbi_snprintf -#define vsnprintf usbi_vsnprintf -int usbi_snprintf(char *dst, size_t size, const char *format, ...); -int usbi_vsnprintf(char *dst, size_t size, const char *format, va_list ap); -#define LIBUSB_PRINTF_WIN32 -#endif /* defined(_MSC_VER) && (_MSC_VER < 1900) */ - -void usbi_log(struct libusb_context *ctx, enum libusb_log_level level, - const char *function, const char *format, ...) USBI_PRINTFLIKE(4, 5); - -void usbi_log_v(struct libusb_context *ctx, enum libusb_log_level level, - const char *function, const char *format, va_list args) USBI_PRINTFLIKE(4, 0); - -#if !defined(_MSC_VER) || (_MSC_VER >= 1400) - -#define _usbi_log(ctx, level, ...) usbi_log(ctx, level, __FUNCTION__, __VA_ARGS__) - -#define usbi_err(ctx, ...) _usbi_log(ctx, LIBUSB_LOG_LEVEL_ERROR, __VA_ARGS__) -#define usbi_warn(ctx, ...) _usbi_log(ctx, LIBUSB_LOG_LEVEL_WARNING, __VA_ARGS__) -#define usbi_info(ctx, ...) _usbi_log(ctx, LIBUSB_LOG_LEVEL_INFO, __VA_ARGS__) -#define usbi_dbg(...) _usbi_log(NULL, LIBUSB_LOG_LEVEL_DEBUG, __VA_ARGS__) - -#else /* !defined(_MSC_VER) || (_MSC_VER >= 1400) */ - -#define LOG_BODY(ctxt, level) \ -{ \ - va_list args; \ - va_start(args, format); \ - usbi_log_v(ctxt, level, "", format, args); \ - va_end(args); \ -} - -static inline void usbi_err(struct libusb_context *ctx, const char *format, ...) - LOG_BODY(ctx, LIBUSB_LOG_LEVEL_ERROR) -static inline void usbi_warn(struct libusb_context *ctx, const char *format, ...) - LOG_BODY(ctx, LIBUSB_LOG_LEVEL_WARNING) -static inline void usbi_info(struct libusb_context *ctx, const char *format, ...) - LOG_BODY(ctx, LIBUSB_LOG_LEVEL_INFO) -static inline void usbi_dbg(const char *format, ...) - LOG_BODY(NULL, LIBUSB_LOG_LEVEL_DEBUG) - -#endif /* !defined(_MSC_VER) || (_MSC_VER >= 1400) */ - -#else /* ENABLE_LOGGING */ - -#define usbi_err(ctx, ...) do { (void)ctx; } while (0) -#define usbi_warn(ctx, ...) do { (void)ctx; } while (0) -#define usbi_info(ctx, ...) do { (void)ctx; } while (0) -#define usbi_dbg(...) do {} while (0) - -#endif /* ENABLE_LOGGING */ - -#define USBI_GET_CONTEXT(ctx) \ - do { \ - if (!(ctx)) \ - (ctx) = usbi_default_context; \ - } while(0) - -#define DEVICE_CTX(dev) ((dev)->ctx) -#define HANDLE_CTX(handle) (DEVICE_CTX((handle)->dev)) -#define TRANSFER_CTX(transfer) (HANDLE_CTX((transfer)->dev_handle)) -#define ITRANSFER_CTX(transfer) \ - (TRANSFER_CTX(USBI_TRANSFER_TO_LIBUSB_TRANSFER(transfer))) - -#define IS_EPIN(ep) (0 != ((ep) & LIBUSB_ENDPOINT_IN)) -#define IS_EPOUT(ep) (!IS_EPIN(ep)) -#define IS_XFERIN(xfer) (0 != ((xfer)->endpoint & LIBUSB_ENDPOINT_IN)) -#define IS_XFEROUT(xfer) (!IS_XFERIN(xfer)) - -/* Internal abstraction for thread synchronization */ -#if defined(THREADS_POSIX) -#include "os/threads_posix.h" -#elif defined(OS_WINDOWS) || defined(OS_WINCE) -#include "os/threads_windows.h" -#endif - -extern struct libusb_context *usbi_default_context; - -/* Forward declaration for use in context (fully defined inside poll abstraction) */ -struct pollfd; - -struct libusb_context { -#if defined(ENABLE_LOGGING) && !defined(ENABLE_DEBUG_LOGGING) - enum libusb_log_level debug; - int debug_fixed; - libusb_log_cb log_handler; -#endif - - /* internal event pipe, used for signalling occurrence of an internal event. */ - int event_pipe[2]; - - struct list_head usb_devs; - usbi_mutex_t usb_devs_lock; - - /* A list of open handles. Backends are free to traverse this if required. - */ - struct list_head open_devs; - usbi_mutex_t open_devs_lock; - - /* A list of registered hotplug callbacks */ - struct list_head hotplug_cbs; - libusb_hotplug_callback_handle next_hotplug_cb_handle; - usbi_mutex_t hotplug_cbs_lock; - - /* this is a list of in-flight transfer handles, sorted by timeout - * expiration. URBs to timeout the soonest are placed at the beginning of - * the list, URBs that will time out later are placed after, and urbs with - * infinite timeout are always placed at the very end. */ - struct list_head flying_transfers; - /* Note paths taking both this and usbi_transfer->lock must always - * take this lock first */ - usbi_mutex_t flying_transfers_lock; - - /* user callbacks for pollfd changes */ - libusb_pollfd_added_cb fd_added_cb; - libusb_pollfd_removed_cb fd_removed_cb; - void *fd_cb_user_data; - - /* ensures that only one thread is handling events at any one time */ - usbi_mutex_t events_lock; - - /* used to see if there is an active thread doing event handling */ - int event_handler_active; - - /* A thread-local storage key to track which thread is performing event - * handling */ - usbi_tls_key_t event_handling_key; - - /* used to wait for event completion in threads other than the one that is - * event handling */ - usbi_mutex_t event_waiters_lock; - usbi_cond_t event_waiters_cond; - - /* A lock to protect internal context event data. */ - usbi_mutex_t event_data_lock; - - /* A bitmask of flags that are set to indicate specific events that need to - * be handled. Protected by event_data_lock. */ - unsigned int event_flags; - - /* A counter that is set when we want to interrupt and prevent event handling, - * in order to safely close a device. Protected by event_data_lock. */ - unsigned int device_close; - - /* list and count of poll fds and an array of poll fd structures that is - * (re)allocated as necessary prior to polling. Protected by event_data_lock. */ - struct list_head ipollfds; - struct pollfd *pollfds; - POLL_NFDS_TYPE pollfds_cnt; - - /* A list of pending hotplug messages. Protected by event_data_lock. */ - struct list_head hotplug_msgs; - - /* A list of pending completed transfers. Protected by event_data_lock. */ - struct list_head completed_transfers; - -#ifdef USBI_TIMERFD_AVAILABLE - /* used for timeout handling, if supported by OS. - * this timerfd is maintained to trigger on the next pending timeout */ - int timerfd; -#endif - - struct list_head list; - - PTR_ALIGNED unsigned char os_priv[ZERO_SIZED_ARRAY]; -}; - -enum usbi_event_flags { - /* The list of pollfds has been modified */ - USBI_EVENT_POLLFDS_MODIFIED = 1U << 0, - - /* The user has interrupted the event handler */ - USBI_EVENT_USER_INTERRUPT = 1U << 1, - - /* A hotplug callback deregistration is pending */ - USBI_EVENT_HOTPLUG_CB_DEREGISTERED = 1U << 2, -}; - -/* Macros for managing event handling state */ -#define usbi_handling_events(ctx) \ - (usbi_tls_key_get((ctx)->event_handling_key) != NULL) - -#define usbi_start_event_handling(ctx) \ - usbi_tls_key_set((ctx)->event_handling_key, ctx) - -#define usbi_end_event_handling(ctx) \ - usbi_tls_key_set((ctx)->event_handling_key, NULL) - -/* Update the following macro if new event sources are added */ -#define usbi_pending_events(ctx) \ - ((ctx)->event_flags || (ctx)->device_close \ - || !list_empty(&(ctx)->hotplug_msgs) || !list_empty(&(ctx)->completed_transfers)) - -#ifdef USBI_TIMERFD_AVAILABLE -#define usbi_using_timerfd(ctx) ((ctx)->timerfd >= 0) -#else -#define usbi_using_timerfd(ctx) (0) -#endif - -struct libusb_device { - /* lock protects refcnt, everything else is finalized at initialization - * time */ - usbi_mutex_t lock; - int refcnt; - - struct libusb_context *ctx; - - uint8_t bus_number; - uint8_t port_number; - struct libusb_device* parent_dev; - uint8_t device_address; - uint8_t num_configurations; - enum libusb_speed speed; - - struct list_head list; - unsigned long session_data; - - struct libusb_device_descriptor device_descriptor; - int attached; - - PTR_ALIGNED unsigned char os_priv[ZERO_SIZED_ARRAY]; -}; - -struct libusb_device_handle { - /* lock protects claimed_interfaces */ - usbi_mutex_t lock; - unsigned long claimed_interfaces; - - struct list_head list; - struct libusb_device *dev; - int auto_detach_kernel_driver; - - PTR_ALIGNED unsigned char os_priv[ZERO_SIZED_ARRAY]; -}; - -enum { - USBI_CLOCK_MONOTONIC, - USBI_CLOCK_REALTIME -}; - -/* in-memory transfer layout: - * - * 1. struct usbi_transfer - * 2. struct libusb_transfer (which includes iso packets) [variable size] - * 3. os private data [variable size] - * - * from a libusb_transfer, you can get the usbi_transfer by rewinding the - * appropriate number of bytes. - * the usbi_transfer includes the number of allocated packets, so you can - * determine the size of the transfer and hence the start and length of the - * OS-private data. - */ - -struct usbi_transfer { - int num_iso_packets; - struct list_head list; - struct list_head completed_list; - struct timeval timeout; - int transferred; - uint32_t stream_id; - uint8_t state_flags; /* Protected by usbi_transfer->lock */ - uint8_t timeout_flags; /* Protected by the flying_stransfers_lock */ - - /* this lock is held during libusb_submit_transfer() and - * libusb_cancel_transfer() (allowing the OS backend to prevent duplicate - * cancellation, submission-during-cancellation, etc). the OS backend - * should also take this lock in the handle_events path, to prevent the user - * cancelling the transfer from another thread while you are processing - * its completion (presumably there would be races within your OS backend - * if this were possible). - * Note paths taking both this and the flying_transfers_lock must - * always take the flying_transfers_lock first */ - usbi_mutex_t lock; -}; - -enum usbi_transfer_state_flags { - /* Transfer successfully submitted by backend */ - USBI_TRANSFER_IN_FLIGHT = 1U << 0, - - /* Cancellation was requested via libusb_cancel_transfer() */ - USBI_TRANSFER_CANCELLING = 1U << 1, - - /* Operation on the transfer failed because the device disappeared */ - USBI_TRANSFER_DEVICE_DISAPPEARED = 1U << 2, -}; - -enum usbi_transfer_timeout_flags { - /* Set by backend submit_transfer() if the OS handles timeout */ - USBI_TRANSFER_OS_HANDLES_TIMEOUT = 1U << 0, - - /* The transfer timeout has been handled */ - USBI_TRANSFER_TIMEOUT_HANDLED = 1U << 1, - - /* The transfer timeout was successfully processed */ - USBI_TRANSFER_TIMED_OUT = 1U << 2, -}; - -#define USBI_TRANSFER_TO_LIBUSB_TRANSFER(transfer) \ - ((struct libusb_transfer *)(((unsigned char *)(transfer)) \ - + sizeof(struct usbi_transfer))) -#define LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer) \ - ((struct usbi_transfer *)(((unsigned char *)(transfer)) \ - - sizeof(struct usbi_transfer))) - -static inline void *usbi_transfer_get_os_priv(struct usbi_transfer *transfer) -{ - assert(transfer->num_iso_packets >= 0); - return ((unsigned char *)transfer) + sizeof(struct usbi_transfer) - + sizeof(struct libusb_transfer) - + ((size_t)transfer->num_iso_packets - * sizeof(struct libusb_iso_packet_descriptor)); -} - -/* bus structures */ - -/* All standard descriptors have these 2 fields in common */ -struct usb_descriptor_header { - uint8_t bLength; - uint8_t bDescriptorType; -}; - -/* shared data and functions */ - -int usbi_io_init(struct libusb_context *ctx); -void usbi_io_exit(struct libusb_context *ctx); - -struct libusb_device *usbi_alloc_device(struct libusb_context *ctx, - unsigned long session_id); -struct libusb_device *usbi_get_device_by_session_id(struct libusb_context *ctx, - unsigned long session_id); -int usbi_sanitize_device(struct libusb_device *dev); -void usbi_handle_disconnect(struct libusb_device_handle *dev_handle); - -int usbi_handle_transfer_completion(struct usbi_transfer *itransfer, - enum libusb_transfer_status status); -int usbi_handle_transfer_cancellation(struct usbi_transfer *transfer); -void usbi_signal_transfer_completion(struct usbi_transfer *transfer); - -int usbi_parse_descriptor(const unsigned char *source, const char *descriptor, - void *dest, int host_endian); -int usbi_device_cache_descriptor(libusb_device *dev); -int usbi_get_config_index_by_value(struct libusb_device *dev, - uint8_t bConfigurationValue, int *idx); - -void usbi_connect_device (struct libusb_device *dev); -void usbi_disconnect_device (struct libusb_device *dev); - -int usbi_signal_event(struct libusb_context *ctx); -int usbi_clear_event(struct libusb_context *ctx); - -/* Internal abstraction for poll (needs struct usbi_transfer on Windows) */ -#if defined(OS_LINUX) || defined(OS_DARWIN) || defined(OS_OPENBSD) || defined(OS_NETBSD) ||\ - defined(OS_HAIKU) || defined(OS_SUNOS) -#include -#include "os/poll_posix.h" -#elif defined(OS_WINDOWS) || defined(OS_WINCE) -#include "os/poll_windows.h" -#endif - -struct usbi_pollfd { - /* must come first */ - struct libusb_pollfd pollfd; - - struct list_head list; -}; - -int usbi_add_pollfd(struct libusb_context *ctx, int fd, short events); -void usbi_remove_pollfd(struct libusb_context *ctx, int fd); - -/* device discovery */ - -/* we traverse usbfs without knowing how many devices we are going to find. - * so we create this discovered_devs model which is similar to a linked-list - * which grows when required. it can be freed once discovery has completed, - * eliminating the need for a list node in the libusb_device structure - * itself. */ -struct discovered_devs { - size_t len; - size_t capacity; - struct libusb_device *devices[ZERO_SIZED_ARRAY]; -}; - -struct discovered_devs *discovered_devs_append( - struct discovered_devs *discdevs, struct libusb_device *dev); - -/* OS abstraction */ - -/* This is the interface that OS backends need to implement. - * All fields are mandatory, except ones explicitly noted as optional. */ -struct usbi_os_backend { - /* A human-readable name for your backend, e.g. "Linux usbfs" */ - const char *name; - - /* Binary mask for backend specific capabilities */ - uint32_t caps; - - /* Perform initialization of your backend. You might use this function - * to determine specific capabilities of the system, allocate required - * data structures for later, etc. - * - * This function is called when a libusb user initializes the library - * prior to use. - * - * Return 0 on success, or a LIBUSB_ERROR code on failure. - */ - int (*init)(struct libusb_context *ctx); - - /* Deinitialization. Optional. This function should destroy anything - * that was set up by init. - * - * This function is called when the user deinitializes the library. - */ - void (*exit)(struct libusb_context *ctx); - - /* Set a backend-specific option. Optional. - * - * This function is called when the user calls libusb_set_option() and - * the option is not handled by the core library. - * - * Return 0 on success, or a LIBUSB_ERROR code on failure. - */ - int (*set_option)(struct libusb_context *ctx, enum libusb_option option, - va_list args); - - /* Enumerate all the USB devices on the system, returning them in a list - * of discovered devices. - * - * Your implementation should enumerate all devices on the system, - * regardless of whether they have been seen before or not. - * - * When you have found a device, compute a session ID for it. The session - * ID should uniquely represent that particular device for that particular - * connection session since boot (i.e. if you disconnect and reconnect a - * device immediately after, it should be assigned a different session ID). - * If your OS cannot provide a unique session ID as described above, - * presenting a session ID of (bus_number << 8 | device_address) should - * be sufficient. Bus numbers and device addresses wrap and get reused, - * but that is an unlikely case. - * - * After computing a session ID for a device, call - * usbi_get_device_by_session_id(). This function checks if libusb already - * knows about the device, and if so, it provides you with a reference - * to a libusb_device structure for it. - * - * If usbi_get_device_by_session_id() returns NULL, it is time to allocate - * a new device structure for the device. Call usbi_alloc_device() to - * obtain a new libusb_device structure with reference count 1. Populate - * the bus_number and device_address attributes of the new device, and - * perform any other internal backend initialization you need to do. At - * this point, you should be ready to provide device descriptors and so - * on through the get_*_descriptor functions. Finally, call - * usbi_sanitize_device() to perform some final sanity checks on the - * device. Assuming all of the above succeeded, we can now continue. - * If any of the above failed, remember to unreference the device that - * was returned by usbi_alloc_device(). - * - * At this stage we have a populated libusb_device structure (either one - * that was found earlier, or one that we have just allocated and - * populated). This can now be added to the discovered devices list - * using discovered_devs_append(). Note that discovered_devs_append() - * may reallocate the list, returning a new location for it, and also - * note that reallocation can fail. Your backend should handle these - * error conditions appropriately. - * - * This function should not generate any bus I/O and should not block. - * If I/O is required (e.g. reading the active configuration value), it is - * OK to ignore these suggestions :) - * - * This function is executed when the user wishes to retrieve a list - * of USB devices connected to the system. - * - * If the backend has hotplug support, this function is not used! - * - * Return 0 on success, or a LIBUSB_ERROR code on failure. - */ - int (*get_device_list)(struct libusb_context *ctx, - struct discovered_devs **discdevs); - - /* Apps which were written before hotplug support, may listen for - * hotplug events on their own and call libusb_get_device_list on - * device addition. In this case libusb_get_device_list will likely - * return a list without the new device in there, as the hotplug - * event thread will still be busy enumerating the device, which may - * take a while, or may not even have seen the event yet. - * - * To avoid this libusb_get_device_list will call this optional - * function for backends with hotplug support before copying - * ctx->usb_devs to the user. In this function the backend should - * ensure any pending hotplug events are fully processed before - * returning. - * - * Optional, should be implemented by backends with hotplug support. - */ - void (*hotplug_poll)(void); - - /* Wrap a platform-specific device handle for I/O and other USB - * operations. The device handle is preallocated for you. - * - * Your backend should allocate any internal resources required for I/O - * and other operations so that those operations can happen (hopefully) - * without hiccup. This is also a good place to inform libusb that it - * should monitor certain file descriptors related to this device - - * see the usbi_add_pollfd() function. - * - * Your backend should also initialize the device structure - * (dev_handle->dev), which is NULL at the beginning of the call. - * - * This function should not generate any bus I/O and should not block. - * - * This function is called when the user attempts to wrap an existing - * platform-specific device handle for a device. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_ACCESS if the user has insufficient permissions - * - another LIBUSB_ERROR code on other failure - * - * Do not worry about freeing the handle on failed open, the upper layers - * do this for you. - */ - int (*wrap_sys_device)(struct libusb_context *ctx, - struct libusb_device_handle *dev_handle, intptr_t sys_dev); - - /* Open a device for I/O and other USB operations. The device handle - * is preallocated for you, you can retrieve the device in question - * through handle->dev. - * - * Your backend should allocate any internal resources required for I/O - * and other operations so that those operations can happen (hopefully) - * without hiccup. This is also a good place to inform libusb that it - * should monitor certain file descriptors related to this device - - * see the usbi_add_pollfd() function. - * - * This function should not generate any bus I/O and should not block. - * - * This function is called when the user attempts to obtain a device - * handle for a device. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_ACCESS if the user has insufficient permissions - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since - * discovery - * - another LIBUSB_ERROR code on other failure - * - * Do not worry about freeing the handle on failed open, the upper layers - * do this for you. - */ - int (*open)(struct libusb_device_handle *dev_handle); - - /* Close a device such that the handle cannot be used again. Your backend - * should destroy any resources that were allocated in the open path. - * This may also be a good place to call usbi_remove_pollfd() to inform - * libusb of any file descriptors associated with this device that should - * no longer be monitored. - * - * This function is called when the user closes a device handle. - */ - void (*close)(struct libusb_device_handle *dev_handle); - - /* Retrieve the device descriptor from a device. - * - * The descriptor should be retrieved from memory, NOT via bus I/O to the - * device. This means that you may have to cache it in a private structure - * during get_device_list enumeration. Alternatively, you may be able - * to retrieve it from a kernel interface (some Linux setups can do this) - * still without generating bus I/O. - * - * This function is expected to write DEVICE_DESC_LENGTH (18) bytes into - * buffer, which is guaranteed to be big enough. - * - * This function is called when sanity-checking a device before adding - * it to the list of discovered devices, and also when the user requests - * to read the device descriptor. - * - * This function is expected to return the descriptor in bus-endian format - * (LE). If it returns the multi-byte values in host-endian format, - * set the host_endian output parameter to "1". - * - * Return 0 on success or a LIBUSB_ERROR code on failure. - */ - int (*get_device_descriptor)(struct libusb_device *device, - unsigned char *buffer, int *host_endian); - - /* Get the ACTIVE configuration descriptor for a device. - * - * The descriptor should be retrieved from memory, NOT via bus I/O to the - * device. This means that you may have to cache it in a private structure - * during get_device_list enumeration. You may also have to keep track - * of which configuration is active when the user changes it. - * - * This function is expected to write len bytes of data into buffer, which - * is guaranteed to be big enough. If you can only do a partial write, - * return an error code. - * - * This function is expected to return the descriptor in bus-endian format - * (LE). If it returns the multi-byte values in host-endian format, - * set the host_endian output parameter to "1". - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if the device is in unconfigured state - * - another LIBUSB_ERROR code on other failure - */ - int (*get_active_config_descriptor)(struct libusb_device *device, - unsigned char *buffer, size_t len, int *host_endian); - - /* Get a specific configuration descriptor for a device. - * - * The descriptor should be retrieved from memory, NOT via bus I/O to the - * device. This means that you may have to cache it in a private structure - * during get_device_list enumeration. - * - * The requested descriptor is expressed as a zero-based index (i.e. 0 - * indicates that we are requesting the first descriptor). The index does - * not (necessarily) equal the bConfigurationValue of the configuration - * being requested. - * - * This function is expected to write len bytes of data into buffer, which - * is guaranteed to be big enough. If you can only do a partial write, - * return an error code. - * - * This function is expected to return the descriptor in bus-endian format - * (LE). If it returns the multi-byte values in host-endian format, - * set the host_endian output parameter to "1". - * - * Return the length read on success or a LIBUSB_ERROR code on failure. - */ - int (*get_config_descriptor)(struct libusb_device *device, - uint8_t config_index, unsigned char *buffer, size_t len, - int *host_endian); - - /* Like get_config_descriptor but then by bConfigurationValue instead - * of by index. - * - * Optional, if not present the core will call get_config_descriptor - * for all configs until it finds the desired bConfigurationValue. - * - * Returns a pointer to the raw-descriptor in *buffer, this memory - * is valid as long as device is valid. - * - * Returns the length of the returned raw-descriptor on success, - * or a LIBUSB_ERROR code on failure. - */ - int (*get_config_descriptor_by_value)(struct libusb_device *device, - uint8_t bConfigurationValue, unsigned char **buffer, - int *host_endian); - - /* Get the bConfigurationValue for the active configuration for a device. - * Optional. This should only be implemented if you can retrieve it from - * cache (don't generate I/O). - * - * If you cannot retrieve this from cache, either do not implement this - * function, or return LIBUSB_ERROR_NOT_SUPPORTED. This will cause - * libusb to retrieve the information through a standard control transfer. - * - * This function must be non-blocking. - * Return: - * - 0 on success - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - LIBUSB_ERROR_NOT_SUPPORTED if the value cannot be retrieved without - * blocking - * - another LIBUSB_ERROR code on other failure. - */ - int (*get_configuration)(struct libusb_device_handle *dev_handle, int *config); - - /* Set the active configuration for a device. - * - * A configuration value of -1 should put the device in unconfigured state. - * - * This function can block. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if the configuration does not exist - * - LIBUSB_ERROR_BUSY if interfaces are currently claimed (and hence - * configuration cannot be changed) - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - another LIBUSB_ERROR code on other failure. - */ - int (*set_configuration)(struct libusb_device_handle *dev_handle, int config); - - /* Claim an interface. When claimed, the application can then perform - * I/O to an interface's endpoints. - * - * This function should not generate any bus I/O and should not block. - * Interface claiming is a logical operation that simply ensures that - * no other drivers/applications are using the interface, and after - * claiming, no other drivers/applications can use the interface because - * we now "own" it. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if the interface does not exist - * - LIBUSB_ERROR_BUSY if the interface is in use by another driver/app - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - another LIBUSB_ERROR code on other failure - */ - int (*claim_interface)(struct libusb_device_handle *dev_handle, int interface_number); - - /* Release a previously claimed interface. - * - * This function should also generate a SET_INTERFACE control request, - * resetting the alternate setting of that interface to 0. It's OK for - * this function to block as a result. - * - * You will only ever be asked to release an interface which was - * successfully claimed earlier. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - another LIBUSB_ERROR code on other failure - */ - int (*release_interface)(struct libusb_device_handle *dev_handle, int interface_number); - - /* Set the alternate setting for an interface. - * - * You will only ever be asked to set the alternate setting for an - * interface which was successfully claimed earlier. - * - * It's OK for this function to block. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if the alternate setting does not exist - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - another LIBUSB_ERROR code on other failure - */ - int (*set_interface_altsetting)(struct libusb_device_handle *dev_handle, - int interface_number, int altsetting); - - /* Clear a halt/stall condition on an endpoint. - * - * It's OK for this function to block. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if the endpoint does not exist - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - another LIBUSB_ERROR code on other failure - */ - int (*clear_halt)(struct libusb_device_handle *dev_handle, - unsigned char endpoint); - - /* Perform a USB port reset to reinitialize a device. - * - * If possible, the device handle should still be usable after the reset - * completes, assuming that the device descriptors did not change during - * reset and all previous interface state can be restored. - * - * If something changes, or you cannot easily locate/verify the resetted - * device, return LIBUSB_ERROR_NOT_FOUND. This prompts the application - * to close the old handle and re-enumerate the device. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if re-enumeration is required, or if the device - * has been disconnected since it was opened - * - another LIBUSB_ERROR code on other failure - */ - int (*reset_device)(struct libusb_device_handle *dev_handle); - - /* Alloc num_streams usb3 bulk streams on the passed in endpoints */ - int (*alloc_streams)(struct libusb_device_handle *dev_handle, - uint32_t num_streams, unsigned char *endpoints, int num_endpoints); - - /* Free usb3 bulk streams allocated with alloc_streams */ - int (*free_streams)(struct libusb_device_handle *dev_handle, - unsigned char *endpoints, int num_endpoints); - - /* Allocate persistent DMA memory for the given device, suitable for - * zerocopy. May return NULL on failure. Optional to implement. - */ - unsigned char *(*dev_mem_alloc)(struct libusb_device_handle *handle, - size_t len); - - /* Free memory allocated by dev_mem_alloc. */ - int (*dev_mem_free)(struct libusb_device_handle *handle, - unsigned char *buffer, size_t len); - - /* Determine if a kernel driver is active on an interface. Optional. - * - * The presence of a kernel driver on an interface indicates that any - * calls to claim_interface would fail with the LIBUSB_ERROR_BUSY code. - * - * Return: - * - 0 if no driver is active - * - 1 if a driver is active - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - another LIBUSB_ERROR code on other failure - */ - int (*kernel_driver_active)(struct libusb_device_handle *dev_handle, - int interface_number); - - /* Detach a kernel driver from an interface. Optional. - * - * After detaching a kernel driver, the interface should be available - * for claim. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if no kernel driver was active - * - LIBUSB_ERROR_INVALID_PARAM if the interface does not exist - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - another LIBUSB_ERROR code on other failure - */ - int (*detach_kernel_driver)(struct libusb_device_handle *dev_handle, - int interface_number); - - /* Attach a kernel driver to an interface. Optional. - * - * Reattach a kernel driver to the device. - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NOT_FOUND if no kernel driver was active - * - LIBUSB_ERROR_INVALID_PARAM if the interface does not exist - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected since it - * was opened - * - LIBUSB_ERROR_BUSY if a program or driver has claimed the interface, - * preventing reattachment - * - another LIBUSB_ERROR code on other failure - */ - int (*attach_kernel_driver)(struct libusb_device_handle *dev_handle, - int interface_number); - - /* Destroy a device. Optional. - * - * This function is called when the last reference to a device is - * destroyed. It should free any resources allocated in the get_device_list - * path. - */ - void (*destroy_device)(struct libusb_device *dev); - - /* Submit a transfer. Your implementation should take the transfer, - * morph it into whatever form your platform requires, and submit it - * asynchronously. - * - * This function must not block. - * - * This function gets called with the flying_transfers_lock locked! - * - * Return: - * - 0 on success - * - LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * - another LIBUSB_ERROR code on other failure - */ - int (*submit_transfer)(struct usbi_transfer *itransfer); - - /* Cancel a previously submitted transfer. - * - * This function must not block. The transfer cancellation must complete - * later, resulting in a call to usbi_handle_transfer_cancellation() - * from the context of handle_events. - */ - int (*cancel_transfer)(struct usbi_transfer *itransfer); - - /* Clear a transfer as if it has completed or cancelled, but do not - * report any completion/cancellation to the library. You should free - * all private data from the transfer as if you were just about to report - * completion or cancellation. - * - * This function might seem a bit out of place. It is used when libusb - * detects a disconnected device - it calls this function for all pending - * transfers before reporting completion (with the disconnect code) to - * the user. Maybe we can improve upon this internal interface in future. - */ - void (*clear_transfer_priv)(struct usbi_transfer *itransfer); - - /* Handle any pending events on file descriptors. Optional. - * - * Provide this function when file descriptors directly indicate device - * or transfer activity. If your backend does not have such file descriptors, - * implement the handle_transfer_completion function below. - * - * This involves monitoring any active transfers and processing their - * completion or cancellation. - * - * The function is passed an array of pollfd structures (size nfds) - * as a result of the poll() system call. The num_ready parameter - * indicates the number of file descriptors that have reported events - * (i.e. the poll() return value). This should be enough information - * for you to determine which actions need to be taken on the currently - * active transfers. - * - * For any cancelled transfers, call usbi_handle_transfer_cancellation(). - * For completed transfers, call usbi_handle_transfer_completion(). - * For control/bulk/interrupt transfers, populate the "transferred" - * element of the appropriate usbi_transfer structure before calling the - * above functions. For isochronous transfers, populate the status and - * transferred fields of the iso packet descriptors of the transfer. - * - * This function should also be able to detect disconnection of the - * device, reporting that situation with usbi_handle_disconnect(). - * - * When processing an event related to a transfer, you probably want to - * take usbi_transfer.lock to prevent races. See the documentation for - * the usbi_transfer structure. - * - * Return 0 on success, or a LIBUSB_ERROR code on failure. - */ - int (*handle_events)(struct libusb_context *ctx, - struct pollfd *fds, POLL_NFDS_TYPE nfds, int num_ready); - - /* Handle transfer completion. Optional. - * - * Provide this function when there are no file descriptors available - * that directly indicate device or transfer activity. If your backend does - * have such file descriptors, implement the handle_events function above. - * - * Your backend must tell the library when a transfer has completed by - * calling usbi_signal_transfer_completion(). You should store any private - * information about the transfer and its completion status in the transfer's - * private backend data. - * - * During event handling, this function will be called on each transfer for - * which usbi_signal_transfer_completion() was called. - * - * For any cancelled transfers, call usbi_handle_transfer_cancellation(). - * For completed transfers, call usbi_handle_transfer_completion(). - * For control/bulk/interrupt transfers, populate the "transferred" - * element of the appropriate usbi_transfer structure before calling the - * above functions. For isochronous transfers, populate the status and - * transferred fields of the iso packet descriptors of the transfer. - * - * Return 0 on success, or a LIBUSB_ERROR code on failure. - */ - int (*handle_transfer_completion)(struct usbi_transfer *itransfer); - - /* Get time from specified clock. At least two clocks must be implemented - by the backend: USBI_CLOCK_REALTIME, and USBI_CLOCK_MONOTONIC. - - Description of clocks: - USBI_CLOCK_REALTIME : clock returns time since system epoch. - USBI_CLOCK_MONOTONIC: clock returns time since unspecified start - time (usually boot). - */ - int (*clock_gettime)(int clkid, struct timespec *tp); - -#ifdef USBI_TIMERFD_AVAILABLE - /* clock ID of the clock that should be used for timerfd */ - clockid_t (*get_timerfd_clockid)(void); -#endif - - /* Number of bytes to reserve for per-context private backend data. - * This private data area is accessible through the "os_priv" field of - * struct libusb_context. */ - size_t context_priv_size; - - /* Number of bytes to reserve for per-device private backend data. - * This private data area is accessible through the "os_priv" field of - * struct libusb_device. */ - size_t device_priv_size; - - /* Number of bytes to reserve for per-handle private backend data. - * This private data area is accessible through the "os_priv" field of - * struct libusb_device. */ - size_t device_handle_priv_size; - - /* Number of bytes to reserve for per-transfer private backend data. - * This private data area is accessible by calling - * usbi_transfer_get_os_priv() on the appropriate usbi_transfer instance. - */ - size_t transfer_priv_size; -}; - -extern const struct usbi_os_backend usbi_backend; - -extern struct list_head active_contexts_list; -extern usbi_mutex_static_t active_contexts_lock; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Externals/libusb/libusb/os/darwin_usb.c b/Externals/libusb/libusb/os/darwin_usb.c deleted file mode 100644 index f6e853b46bbd..000000000000 --- a/Externals/libusb/libusb/os/darwin_usb.c +++ /dev/null @@ -1,2252 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode:nil -*- */ -/* - * darwin backend for libusb 1.0 - * Copyright © 2008-2019 Nathan Hjelm - * Copyright © 2019 Google LLC. All rights reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -/* Suppress warnings about the use of the deprecated objc_registerThreadWithCollector - * function. Its use is also conditionalized to only older deployment targets. */ -#define OBJC_SILENCE_GC_DEPRECATIONS 1 - -#include -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 && MAC_OS_X_VERSION_MIN_REQUIRED < 101200 - #include -#endif - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 101200 -/* Apple deprecated the darwin atomics in 10.12 in favor of C11 atomics */ -#include -#define libusb_darwin_atomic_fetch_add(x, y) atomic_fetch_add(x, y) - -_Atomic int32_t initCount = ATOMIC_VAR_INIT(0); -#else -/* use darwin atomics if the target is older than 10.12 */ -#include - -/* OSAtomicAdd32Barrier returns the new value */ -#define libusb_darwin_atomic_fetch_add(x, y) (OSAtomicAdd32Barrier(y, x) - y) - -static volatile int32_t initCount = 0; - -#endif - -/* On 10.12 and later, use newly available clock_*() functions */ -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 101200 -#define OSX_USE_CLOCK_GETTIME 1 -#else -#define OSX_USE_CLOCK_GETTIME 0 -#endif - -#include "darwin_usb.h" - -/* async event thread */ -static pthread_mutex_t libusb_darwin_at_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_cond_t libusb_darwin_at_cond = PTHREAD_COND_INITIALIZER; - -#if !OSX_USE_CLOCK_GETTIME -static clock_serv_t clock_realtime; -static clock_serv_t clock_monotonic; -#endif - -static CFRunLoopRef libusb_darwin_acfl = NULL; /* event cf loop */ -static CFRunLoopSourceRef libusb_darwin_acfls = NULL; /* shutdown signal for event cf loop */ - -static usbi_mutex_t darwin_cached_devices_lock = PTHREAD_MUTEX_INITIALIZER; -static struct list_head darwin_cached_devices = {&darwin_cached_devices, &darwin_cached_devices}; -static const char *darwin_device_class = kIOUSBDeviceClassName; - -#define DARWIN_CACHED_DEVICE(a) ((struct darwin_cached_device *) (((struct darwin_device_priv *)((a)->os_priv))->dev)) - -/* async event thread */ -static pthread_t libusb_darwin_at; - -static int darwin_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len, int *host_endian); -static int darwin_claim_interface(struct libusb_device_handle *dev_handle, int iface); -static int darwin_release_interface(struct libusb_device_handle *dev_handle, int iface); -static int darwin_reset_device(struct libusb_device_handle *dev_handle); -static void darwin_async_io_callback (void *refcon, IOReturn result, void *arg0); - -static enum libusb_error darwin_scan_devices(struct libusb_context *ctx); -static enum libusb_error process_new_device (struct libusb_context *ctx, io_service_t service); - -#if defined(ENABLE_LOGGING) -static const char *darwin_error_str (IOReturn result) { - static char string_buffer[50]; - switch (result) { - case kIOReturnSuccess: - return "no error"; - case kIOReturnNotOpen: - return "device not opened for exclusive access"; - case kIOReturnNoDevice: - return "no connection to an IOService"; - case kIOUSBNoAsyncPortErr: - return "no async port has been opened for interface"; - case kIOReturnExclusiveAccess: - return "another process has device opened for exclusive access"; - case kIOUSBPipeStalled: - return "pipe is stalled"; - case kIOReturnError: - return "could not establish a connection to the Darwin kernel"; - case kIOUSBTransactionTimeout: - return "transaction timed out"; - case kIOReturnBadArgument: - return "invalid argument"; - case kIOReturnAborted: - return "transaction aborted"; - case kIOReturnNotResponding: - return "device not responding"; - case kIOReturnOverrun: - return "data overrun"; - case kIOReturnCannotWire: - return "physical memory can not be wired down"; - case kIOReturnNoResources: - return "out of resources"; - case kIOUSBHighSpeedSplitError: - return "high speed split error"; - default: - snprintf(string_buffer, sizeof(string_buffer), "unknown error (0x%x)", result); - return string_buffer; - } -} -#endif - -static enum libusb_error darwin_to_libusb (IOReturn result) { - switch (result) { - case kIOReturnUnderrun: - case kIOReturnSuccess: - return LIBUSB_SUCCESS; - case kIOReturnNotOpen: - case kIOReturnNoDevice: - return LIBUSB_ERROR_NO_DEVICE; - case kIOReturnExclusiveAccess: - return LIBUSB_ERROR_ACCESS; - case kIOUSBPipeStalled: - return LIBUSB_ERROR_PIPE; - case kIOReturnBadArgument: - return LIBUSB_ERROR_INVALID_PARAM; - case kIOUSBTransactionTimeout: - return LIBUSB_ERROR_TIMEOUT; - case kIOReturnNotResponding: - case kIOReturnAborted: - case kIOReturnError: - case kIOUSBNoAsyncPortErr: - default: - return LIBUSB_ERROR_OTHER; - } -} - -/* this function must be called with the darwin_cached_devices_lock held */ -static void darwin_deref_cached_device(struct darwin_cached_device *cached_dev) { - cached_dev->refcount--; - /* free the device and remove it from the cache */ - if (0 == cached_dev->refcount) { - list_del(&cached_dev->list); - - (*(cached_dev->device))->Release(cached_dev->device); - free (cached_dev); - } -} - -static void darwin_ref_cached_device(struct darwin_cached_device *cached_dev) { - cached_dev->refcount++; -} - -static int ep_to_pipeRef(struct libusb_device_handle *dev_handle, uint8_t ep, uint8_t *pipep, uint8_t *ifcp, struct darwin_interface **interface_out) { - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - - /* current interface */ - struct darwin_interface *cInterface; - - uint8_t i, iface; - - usbi_dbg ("converting ep address 0x%02x to pipeRef and interface", ep); - - for (iface = 0 ; iface < USB_MAXINTERFACES ; iface++) { - cInterface = &priv->interfaces[iface]; - - if (dev_handle->claimed_interfaces & (1U << iface)) { - for (i = 0 ; i < cInterface->num_endpoints ; i++) { - if (cInterface->endpoint_addrs[i] == ep) { - *pipep = i + 1; - - if (ifcp) - *ifcp = iface; - - if (interface_out) - *interface_out = cInterface; - - usbi_dbg ("pipe %d on interface %d matches", *pipep, iface); - return LIBUSB_SUCCESS; - } - } - } - } - - /* No pipe found with the correct endpoint address */ - usbi_warn (HANDLE_CTX(dev_handle), "no pipeRef found with endpoint address 0x%02x.", ep); - - return LIBUSB_ERROR_NOT_FOUND; -} - -static IOReturn usb_setup_device_iterator (io_iterator_t *deviceIterator, UInt32 location) { - CFMutableDictionaryRef matchingDict = IOServiceMatching(darwin_device_class); - - if (!matchingDict) - return kIOReturnError; - - if (location) { - CFMutableDictionaryRef propertyMatchDict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks); - - /* there are no unsigned CFNumber types so treat the value as signed. the OS seems to do this - internally (CFNumberType of locationID is kCFNumberSInt32Type) */ - CFTypeRef locationCF = CFNumberCreate (NULL, kCFNumberSInt32Type, &location); - - if (propertyMatchDict && locationCF) { - CFDictionarySetValue (propertyMatchDict, CFSTR(kUSBDevicePropertyLocationID), locationCF); - CFDictionarySetValue (matchingDict, CFSTR(kIOPropertyMatchKey), propertyMatchDict); - } - /* else we can still proceed as long as the caller accounts for the possibility of other devices in the iterator */ - - /* release our references as per the Create Rule */ - if (propertyMatchDict) - CFRelease (propertyMatchDict); - if (locationCF) - CFRelease (locationCF); - } - - return IOServiceGetMatchingServices(kIOMasterPortDefault, matchingDict, deviceIterator); -} - -/* Returns 1 on success, 0 on failure. */ -static bool get_ioregistry_value_number (io_service_t service, CFStringRef property, CFNumberType type, void *p) { - CFTypeRef cfNumber = IORegistryEntryCreateCFProperty (service, property, kCFAllocatorDefault, 0); - Boolean success = 0; - - if (cfNumber) { - if (CFGetTypeID(cfNumber) == CFNumberGetTypeID()) { - success = CFNumberGetValue(cfNumber, type, p); - } - - CFRelease (cfNumber); - } - - return (success != 0); -} - -/* Returns 1 on success, 0 on failure. */ -static bool get_ioregistry_value_data (io_service_t service, CFStringRef property, ssize_t size, void *p) { - CFTypeRef cfData = IORegistryEntryCreateCFProperty (service, property, kCFAllocatorDefault, 0); - bool success = false; - - if (cfData) { - if (CFGetTypeID (cfData) == CFDataGetTypeID ()) { - CFIndex length = CFDataGetLength (cfData); - if (length < size) { - size = length; - } - - CFDataGetBytes (cfData, CFRangeMake(0, size), p); - success = true; - } - - CFRelease (cfData); - } - - return success; -} - -static usb_device_t **darwin_device_from_service (io_service_t service) -{ - io_cf_plugin_ref_t *plugInInterface = NULL; - usb_device_t **device; - IOReturn kresult; - SInt32 score; - const int max_retries = 5; - - /* The IOCreatePlugInInterfaceForService function might consistently return - an "out of resources" error with certain USB devices the first time we run - it. The reason is still unclear, but retrying fixes the problem */ - for (int count = 0; count < max_retries; count++) { - kresult = IOCreatePlugInInterfaceForService(service, kIOUSBDeviceUserClientTypeID, - kIOCFPlugInInterfaceID, &plugInInterface, - &score); - if (kIOReturnSuccess == kresult && plugInInterface) { - break; - } - - usbi_dbg ("set up plugin for service retry: %s", darwin_error_str (kresult)); - - /* sleep for a little while before trying again */ - nanosleep(&(struct timespec){.tv_sec = 0, .tv_nsec = 1000}, NULL); - } - - if (kIOReturnSuccess != kresult || !plugInInterface) { - usbi_dbg ("could not set up plugin for service: %s", darwin_error_str (kresult)); - return NULL; - } - - (void)(*plugInInterface)->QueryInterface(plugInInterface, CFUUIDGetUUIDBytes(DeviceInterfaceID), - (LPVOID)&device); - /* Use release instead of IODestroyPlugInInterface to avoid stopping IOServices associated with this device */ - (*plugInInterface)->Release (plugInInterface); - - return device; -} - -static void darwin_devices_attached (void *ptr, io_iterator_t add_devices) { - UNUSED(ptr); - struct libusb_context *ctx; - io_service_t service; - - usbi_mutex_lock(&active_contexts_lock); - - while ((service = IOIteratorNext(add_devices))) { - /* add this device to each active context's device list */ - list_for_each_entry(ctx, &active_contexts_list, list, struct libusb_context) { - process_new_device (ctx, service); - } - - IOObjectRelease(service); - } - - usbi_mutex_unlock(&active_contexts_lock); -} - -static void darwin_devices_detached (void *ptr, io_iterator_t rem_devices) { - UNUSED(ptr); - struct libusb_device *dev = NULL; - struct libusb_context *ctx; - struct darwin_cached_device *old_device; - - io_service_t device; - UInt64 session; - int ret; - - usbi_mutex_lock(&active_contexts_lock); - - while ((device = IOIteratorNext (rem_devices)) != 0) { - /* get the location from the i/o registry */ - ret = get_ioregistry_value_number (device, CFSTR("sessionID"), kCFNumberSInt64Type, &session); - IOObjectRelease (device); - if (!ret) - continue; - - /* we need to match darwin_ref_cached_device call made in darwin_get_cached_device function - otherwise no cached device will ever get freed */ - usbi_mutex_lock(&darwin_cached_devices_lock); - list_for_each_entry(old_device, &darwin_cached_devices, list, struct darwin_cached_device) { - if (old_device->session == session) { - if (old_device->in_reenumerate) { - /* device is re-enumerating. do not dereference the device at this time. libusb_reset_device() - * will deref if needed. */ - usbi_dbg ("detected device detatched due to re-enumeration"); - } else { - darwin_deref_cached_device (old_device); - } - break; - } - } - usbi_mutex_unlock(&darwin_cached_devices_lock); - if (old_device->in_reenumerate) { - continue; - } - - list_for_each_entry(ctx, &active_contexts_list, list, struct libusb_context) { - usbi_dbg ("notifying context %p of device disconnect", ctx); - - dev = usbi_get_device_by_session_id(ctx, (unsigned long) session); - if (dev) { - /* signal the core that this device has been disconnected. the core will tear down this device - when the reference count reaches 0 */ - usbi_disconnect_device(dev); - libusb_unref_device(dev); - } - } - } - - usbi_mutex_unlock(&active_contexts_lock); -} - -static void darwin_hotplug_poll (void) -{ - /* not sure if 1 ms will be too long/short but it should work ok */ - mach_timespec_t timeout = {.tv_sec = 0, .tv_nsec = 1000000ul}; - - /* since a kernel thread may nodify the IOInterators used for - * hotplug notidication we can't just clear the iterators. - * instead just wait until all IOService providers are quiet */ - (void) IOKitWaitQuiet (kIOMasterPortDefault, &timeout); -} - -static void darwin_clear_iterator (io_iterator_t iter) { - io_service_t device; - - while ((device = IOIteratorNext (iter)) != 0) - IOObjectRelease (device); -} - -static void *darwin_event_thread_main (void *arg0) { - IOReturn kresult; - struct libusb_context *ctx = (struct libusb_context *)arg0; - CFRunLoopRef runloop; - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 - /* Set this thread's name, so it can be seen in the debugger - and crash reports. */ - pthread_setname_np ("org.libusb.device-hotplug"); -#endif - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 && MAC_OS_X_VERSION_MIN_REQUIRED < 101200 - /* Tell the Objective-C garbage collector about this thread. - This is required because, unlike NSThreads, pthreads are - not automatically registered. Although we don't use - Objective-C, we use CoreFoundation, which does. - Garbage collection support was entirely removed in 10.12, - so don't bother there. */ - objc_registerThreadWithCollector(); -#endif - - /* hotplug (device arrival/removal) sources */ - CFRunLoopSourceContext libusb_shutdown_cfsourcectx; - CFRunLoopSourceRef libusb_notification_cfsource; - io_notification_port_t libusb_notification_port; - io_iterator_t libusb_rem_device_iterator; - io_iterator_t libusb_add_device_iterator; - - usbi_dbg ("creating hotplug event source"); - - runloop = CFRunLoopGetCurrent (); - CFRetain (runloop); - - /* add the shutdown cfsource to the run loop */ - memset(&libusb_shutdown_cfsourcectx, 0, sizeof(libusb_shutdown_cfsourcectx)); - libusb_shutdown_cfsourcectx.info = runloop; - libusb_shutdown_cfsourcectx.perform = (void (*)(void *))CFRunLoopStop; - libusb_darwin_acfls = CFRunLoopSourceCreate(NULL, 0, &libusb_shutdown_cfsourcectx); - CFRunLoopAddSource(runloop, libusb_darwin_acfls, kCFRunLoopDefaultMode); - - /* add the notification port to the run loop */ - libusb_notification_port = IONotificationPortCreate (kIOMasterPortDefault); - libusb_notification_cfsource = IONotificationPortGetRunLoopSource (libusb_notification_port); - CFRunLoopAddSource(runloop, libusb_notification_cfsource, kCFRunLoopDefaultMode); - - /* create notifications for removed devices */ - kresult = IOServiceAddMatchingNotification (libusb_notification_port, kIOTerminatedNotification, - IOServiceMatching(darwin_device_class), - darwin_devices_detached, - ctx, &libusb_rem_device_iterator); - - if (kresult != kIOReturnSuccess) { - usbi_err (ctx, "could not add hotplug event source: %s", darwin_error_str (kresult)); - - pthread_exit (NULL); - } - - /* create notifications for attached devices */ - kresult = IOServiceAddMatchingNotification(libusb_notification_port, kIOFirstMatchNotification, - IOServiceMatching(darwin_device_class), - darwin_devices_attached, - ctx, &libusb_add_device_iterator); - - if (kresult != kIOReturnSuccess) { - usbi_err (ctx, "could not add hotplug event source: %s", darwin_error_str (kresult)); - - pthread_exit (NULL); - } - - /* arm notifiers */ - darwin_clear_iterator (libusb_rem_device_iterator); - darwin_clear_iterator (libusb_add_device_iterator); - - usbi_dbg ("darwin event thread ready to receive events"); - - /* signal the main thread that the hotplug runloop has been created. */ - pthread_mutex_lock (&libusb_darwin_at_mutex); - libusb_darwin_acfl = runloop; - pthread_cond_signal (&libusb_darwin_at_cond); - pthread_mutex_unlock (&libusb_darwin_at_mutex); - - /* run the runloop */ - CFRunLoopRun(); - - usbi_dbg ("darwin event thread exiting"); - - /* remove the notification cfsource */ - CFRunLoopRemoveSource(runloop, libusb_notification_cfsource, kCFRunLoopDefaultMode); - - /* remove the shutdown cfsource */ - CFRunLoopRemoveSource(runloop, libusb_darwin_acfls, kCFRunLoopDefaultMode); - - /* delete notification port */ - IONotificationPortDestroy (libusb_notification_port); - - /* delete iterators */ - IOObjectRelease (libusb_rem_device_iterator); - IOObjectRelease (libusb_add_device_iterator); - - CFRelease (libusb_darwin_acfls); - CFRelease (runloop); - - libusb_darwin_acfls = NULL; - libusb_darwin_acfl = NULL; - - pthread_exit (NULL); -} - -/* cleanup function to destroy cached devices */ -static void __attribute__((destructor)) _darwin_finalize(void) { - struct darwin_cached_device *dev, *next; - - usbi_mutex_lock(&darwin_cached_devices_lock); - list_for_each_entry_safe(dev, next, &darwin_cached_devices, list, struct darwin_cached_device) { - darwin_deref_cached_device(dev); - } - usbi_mutex_unlock(&darwin_cached_devices_lock); -} - -static int darwin_init(struct libusb_context *ctx) { - int rc; - - rc = darwin_scan_devices (ctx); - if (LIBUSB_SUCCESS != rc) { - return rc; - } - - if (libusb_darwin_atomic_fetch_add (&initCount, 1) == 0) { -#if !OSX_USE_CLOCK_GETTIME - /* create the clocks that will be used if clock_gettime() is not available */ - host_name_port_t host_self; - - host_self = mach_host_self(); - host_get_clock_service(host_self, CALENDAR_CLOCK, &clock_realtime); - host_get_clock_service(host_self, SYSTEM_CLOCK, &clock_monotonic); - mach_port_deallocate(mach_task_self(), host_self); -#endif - - pthread_create (&libusb_darwin_at, NULL, darwin_event_thread_main, ctx); - - pthread_mutex_lock (&libusb_darwin_at_mutex); - while (!libusb_darwin_acfl) - pthread_cond_wait (&libusb_darwin_at_cond, &libusb_darwin_at_mutex); - pthread_mutex_unlock (&libusb_darwin_at_mutex); - } - - return rc; -} - -static void darwin_exit (struct libusb_context *ctx) { - UNUSED(ctx); - if (libusb_darwin_atomic_fetch_add (&initCount, -1) == 1) { -#if !OSX_USE_CLOCK_GETTIME - mach_port_deallocate(mach_task_self(), clock_realtime); - mach_port_deallocate(mach_task_self(), clock_monotonic); -#endif - - /* stop the event runloop and wait for the thread to terminate. */ - CFRunLoopSourceSignal(libusb_darwin_acfls); - CFRunLoopWakeUp (libusb_darwin_acfl); - pthread_join (libusb_darwin_at, NULL); - } -} - -static int darwin_get_device_descriptor(struct libusb_device *dev, unsigned char *buffer, int *host_endian) { - struct darwin_cached_device *priv = DARWIN_CACHED_DEVICE(dev); - - /* return cached copy */ - memmove (buffer, &(priv->dev_descriptor), DEVICE_DESC_LENGTH); - - *host_endian = 0; - - return LIBUSB_SUCCESS; -} - -static int get_configuration_index (struct libusb_device *dev, int config_value) { - struct darwin_cached_device *priv = DARWIN_CACHED_DEVICE(dev); - UInt8 i, numConfig; - IOUSBConfigurationDescriptorPtr desc; - IOReturn kresult; - - /* is there a simpler way to determine the index? */ - kresult = (*(priv->device))->GetNumberOfConfigurations (priv->device, &numConfig); - if (kresult != kIOReturnSuccess) - return darwin_to_libusb (kresult); - - for (i = 0 ; i < numConfig ; i++) { - (*(priv->device))->GetConfigurationDescriptorPtr (priv->device, i, &desc); - - if (desc->bConfigurationValue == config_value) - return i; - } - - /* configuration not found */ - return LIBUSB_ERROR_NOT_FOUND; -} - -static int darwin_get_active_config_descriptor(struct libusb_device *dev, unsigned char *buffer, size_t len, int *host_endian) { - struct darwin_cached_device *priv = DARWIN_CACHED_DEVICE(dev); - int config_index; - - if (0 == priv->active_config) - return LIBUSB_ERROR_NOT_FOUND; - - config_index = get_configuration_index (dev, priv->active_config); - if (config_index < 0) - return config_index; - - assert(config_index >= 0 && config_index <= UINT8_MAX); - return darwin_get_config_descriptor (dev, (UInt8)config_index, buffer, len, host_endian); -} - -static int darwin_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len, int *host_endian) { - struct darwin_cached_device *priv = DARWIN_CACHED_DEVICE(dev); - IOUSBConfigurationDescriptorPtr desc; - IOReturn kresult; - int ret; - - if (!priv || !priv->device) - return LIBUSB_ERROR_OTHER; - - kresult = (*priv->device)->GetConfigurationDescriptorPtr (priv->device, config_index, &desc); - if (kresult == kIOReturnSuccess) { - /* copy descriptor */ - if (libusb_le16_to_cpu(desc->wTotalLength) < len) - len = libusb_le16_to_cpu(desc->wTotalLength); - - memmove (buffer, desc, len); - - /* GetConfigurationDescriptorPtr returns the descriptor in USB bus order */ - *host_endian = 0; - } - - ret = darwin_to_libusb (kresult); - if (ret != LIBUSB_SUCCESS) - return ret; - - return (int) len; -} - -/* check whether the os has configured the device */ -static enum libusb_error darwin_check_configuration (struct libusb_context *ctx, struct darwin_cached_device *dev) { - usb_device_t **darwin_device = dev->device; - - IOUSBConfigurationDescriptorPtr configDesc; - IOUSBFindInterfaceRequest request; - IOReturn kresult; - io_iterator_t interface_iterator; - io_service_t firstInterface; - - if (dev->dev_descriptor.bNumConfigurations < 1) { - usbi_err (ctx, "device has no configurations"); - return LIBUSB_ERROR_OTHER; /* no configurations at this speed so we can't use it */ - } - - /* checking the configuration of a root hub simulation takes ~1 s in 10.11. the device is - not usable anyway */ - if (0x05ac == dev->dev_descriptor.idVendor && 0x8005 == dev->dev_descriptor.idProduct) { - usbi_dbg ("ignoring configuration on root hub simulation"); - dev->active_config = 0; - return LIBUSB_SUCCESS; - } - - /* find the first configuration */ - kresult = (*darwin_device)->GetConfigurationDescriptorPtr (darwin_device, 0, &configDesc); - dev->first_config = (kIOReturnSuccess == kresult) ? configDesc->bConfigurationValue : 1; - - /* check if the device is already configured. there is probably a better way than iterating over the - to accomplish this (the trick is we need to avoid a call to GetConfigurations since buggy devices - might lock up on the device request) */ - - /* Setup the Interface Request */ - request.bInterfaceClass = kIOUSBFindInterfaceDontCare; - request.bInterfaceSubClass = kIOUSBFindInterfaceDontCare; - request.bInterfaceProtocol = kIOUSBFindInterfaceDontCare; - request.bAlternateSetting = kIOUSBFindInterfaceDontCare; - - kresult = (*(darwin_device))->CreateInterfaceIterator(darwin_device, &request, &interface_iterator); - if (kresult != kIOReturnSuccess) - return darwin_to_libusb (kresult); - - /* iterate once */ - firstInterface = IOIteratorNext(interface_iterator); - - /* done with the interface iterator */ - IOObjectRelease(interface_iterator); - - if (firstInterface) { - IOObjectRelease (firstInterface); - - /* device is configured */ - if (dev->dev_descriptor.bNumConfigurations == 1) - /* to avoid problems with some devices get the configurations value from the configuration descriptor */ - dev->active_config = dev->first_config; - else - /* devices with more than one configuration should work with GetConfiguration */ - (*darwin_device)->GetConfiguration (darwin_device, &dev->active_config); - } else - /* not configured */ - dev->active_config = 0; - - usbi_dbg ("active config: %u, first config: %u", dev->active_config, dev->first_config); - - return LIBUSB_SUCCESS; -} - -static IOReturn darwin_request_descriptor (usb_device_t **device, UInt8 desc, UInt8 desc_index, void *buffer, size_t buffer_size) { - IOUSBDevRequestTO req; - - assert(buffer_size <= UINT16_MAX); - - memset (buffer, 0, buffer_size); - - /* Set up request for descriptor/ */ - req.bmRequestType = USBmakebmRequestType(kUSBIn, kUSBStandard, kUSBDevice); - req.bRequest = kUSBRqGetDescriptor; - req.wValue = (UInt16)(desc << 8); - req.wIndex = desc_index; - req.wLength = (UInt16)buffer_size; - req.pData = buffer; - req.noDataTimeout = 20; - req.completionTimeout = 100; - - return (*device)->DeviceRequestTO (device, &req); -} - -static enum libusb_error darwin_cache_device_descriptor (struct libusb_context *ctx, struct darwin_cached_device *dev) { - usb_device_t **device = dev->device; - int retries = 1; - long delay = 30000; // microseconds - int unsuspended = 0, try_unsuspend = 1, try_reconfigure = 1; - int is_open = 0; - IOReturn ret = 0, ret2; - UInt8 bDeviceClass; - UInt16 idProduct, idVendor; - - dev->can_enumerate = 0; - - (*device)->GetDeviceClass (device, &bDeviceClass); - (*device)->GetDeviceProduct (device, &idProduct); - (*device)->GetDeviceVendor (device, &idVendor); - - /* According to Apple's documentation the device must be open for DeviceRequest but we may not be able to open some - * devices and Apple's USB Prober doesn't bother to open the device before issuing a descriptor request. Still, - * to follow the spec as closely as possible, try opening the device */ - is_open = ((*device)->USBDeviceOpenSeize(device) == kIOReturnSuccess); - - do { - /**** retrieve device descriptor ****/ - ret = darwin_request_descriptor (device, kUSBDeviceDesc, 0, &dev->dev_descriptor, sizeof(dev->dev_descriptor)); - - if (kIOReturnOverrun == ret && kUSBDeviceDesc == dev->dev_descriptor.bDescriptorType) - /* received an overrun error but we still received a device descriptor */ - ret = kIOReturnSuccess; - - if (kIOUSBVendorIDAppleComputer == idVendor) { - /* NTH: don't bother retrying or unsuspending Apple devices */ - break; - } - - if (kIOReturnSuccess == ret && (0 == dev->dev_descriptor.bNumConfigurations || - 0 == dev->dev_descriptor.bcdUSB)) { - /* work around for incorrectly configured devices */ - if (try_reconfigure && is_open) { - usbi_dbg("descriptor appears to be invalid. resetting configuration before trying again..."); - - /* set the first configuration */ - (*device)->SetConfiguration(device, 1); - - /* don't try to reconfigure again */ - try_reconfigure = 0; - } - - ret = kIOUSBPipeStalled; - } - - if (kIOReturnSuccess != ret && is_open && try_unsuspend) { - /* device may be suspended. unsuspend it and try again */ -#if DeviceVersion >= 320 - UInt32 info = 0; - - /* IOUSBFamily 320+ provides a way to detect device suspension but earlier versions do not */ - (void)(*device)->GetUSBDeviceInformation (device, &info); - - /* note that the device was suspended */ - if (info & (1U << kUSBInformationDeviceIsSuspendedBit) || 0 == info) - try_unsuspend = 1; -#endif - - if (try_unsuspend) { - /* try to unsuspend the device */ - ret2 = (*device)->USBDeviceSuspend (device, 0); - if (kIOReturnSuccess != ret2) { - /* prevent log spew from poorly behaving devices. this indicates the - os actually had trouble communicating with the device */ - usbi_dbg("could not retrieve device descriptor. failed to unsuspend: %s",darwin_error_str(ret2)); - } else - unsuspended = 1; - - try_unsuspend = 0; - } - } - - if (kIOReturnSuccess != ret) { - usbi_dbg("kernel responded with code: 0x%08x. sleeping for %ld ms before trying again", ret, delay/1000); - /* sleep for a little while before trying again */ - nanosleep(&(struct timespec){delay / 1000000, (delay * 1000) % 1000000000}, NULL); - } - } while (kIOReturnSuccess != ret && retries--); - - if (unsuspended) - /* resuspend the device */ - (void)(*device)->USBDeviceSuspend (device, 1); - - if (is_open) - (void) (*device)->USBDeviceClose (device); - - if (ret != kIOReturnSuccess) { - /* a debug message was already printed out for this error */ - if (LIBUSB_CLASS_HUB == bDeviceClass) - usbi_dbg ("could not retrieve device descriptor %.4x:%.4x: %s (%x). skipping device", - idVendor, idProduct, darwin_error_str (ret), ret); - else - usbi_warn (ctx, "could not retrieve device descriptor %.4x:%.4x: %s (%x). skipping device", - idVendor, idProduct, darwin_error_str (ret), ret); - return darwin_to_libusb (ret); - } - - /* catch buggy hubs (which appear to be virtual). Apple's own USB prober has problems with these devices. */ - if (libusb_le16_to_cpu (dev->dev_descriptor.idProduct) != idProduct) { - /* not a valid device */ - usbi_warn (ctx, "idProduct from iokit (%04x) does not match idProduct in descriptor (%04x). skipping device", - idProduct, libusb_le16_to_cpu (dev->dev_descriptor.idProduct)); - return LIBUSB_ERROR_NO_DEVICE; - } - - usbi_dbg ("cached device descriptor:"); - usbi_dbg (" bDescriptorType: 0x%02x", dev->dev_descriptor.bDescriptorType); - usbi_dbg (" bcdUSB: 0x%04x", dev->dev_descriptor.bcdUSB); - usbi_dbg (" bDeviceClass: 0x%02x", dev->dev_descriptor.bDeviceClass); - usbi_dbg (" bDeviceSubClass: 0x%02x", dev->dev_descriptor.bDeviceSubClass); - usbi_dbg (" bDeviceProtocol: 0x%02x", dev->dev_descriptor.bDeviceProtocol); - usbi_dbg (" bMaxPacketSize0: 0x%02x", dev->dev_descriptor.bMaxPacketSize0); - usbi_dbg (" idVendor: 0x%04x", dev->dev_descriptor.idVendor); - usbi_dbg (" idProduct: 0x%04x", dev->dev_descriptor.idProduct); - usbi_dbg (" bcdDevice: 0x%04x", dev->dev_descriptor.bcdDevice); - usbi_dbg (" iManufacturer: 0x%02x", dev->dev_descriptor.iManufacturer); - usbi_dbg (" iProduct: 0x%02x", dev->dev_descriptor.iProduct); - usbi_dbg (" iSerialNumber: 0x%02x", dev->dev_descriptor.iSerialNumber); - usbi_dbg (" bNumConfigurations: 0x%02x", dev->dev_descriptor.bNumConfigurations); - - dev->can_enumerate = 1; - - return LIBUSB_SUCCESS; -} - -/* Returns 1 on success, 0 on failure. */ -static bool get_device_port (io_service_t service, UInt8 *port) { - IOReturn kresult; - io_service_t parent; - bool ret = false; - - if (get_ioregistry_value_number (service, CFSTR("PortNum"), kCFNumberSInt8Type, port)) { - return true; - } - - kresult = IORegistryEntryGetParentEntry (service, kIOServicePlane, &parent); - if (kIOReturnSuccess == kresult) { - ret = get_ioregistry_value_data (parent, CFSTR("port"), 1, port); - IOObjectRelease (parent); - } - - return ret; -} - -/* Returns 1 on success, 0 on failure. */ -static bool get_device_parent_sessionID(io_service_t service, UInt64 *parent_sessionID) { - IOReturn kresult; - io_service_t parent; - - /* Walk up the tree in the IOService plane until we find a parent that has a sessionID */ - parent = service; - while((kresult = IORegistryEntryGetParentEntry (parent, kIOUSBPlane, &parent)) == kIOReturnSuccess) { - if (get_ioregistry_value_number (parent, CFSTR("sessionID"), kCFNumberSInt64Type, parent_sessionID)) { - /* Success */ - return true; - } - } - - /* We ran out of parents */ - return false; -} - -static enum libusb_error darwin_get_cached_device(struct libusb_context *ctx, io_service_t service, - struct darwin_cached_device **cached_out) { - struct darwin_cached_device *new_device; - UInt64 sessionID = 0, parent_sessionID = 0; - UInt32 locationID = 0; - enum libusb_error ret = LIBUSB_SUCCESS; - usb_device_t **device; - UInt8 port = 0; - bool reuse_device = false; - - /* get some info from the io registry */ - (void) get_ioregistry_value_number (service, CFSTR("sessionID"), kCFNumberSInt64Type, &sessionID); - (void) get_ioregistry_value_number (service, CFSTR("locationID"), kCFNumberSInt32Type, &locationID); - if (!get_device_port (service, &port)) { - usbi_dbg("could not get connected port number"); - } - - usbi_dbg("finding cached device for sessionID 0x%" PRIx64, sessionID); - - if (get_device_parent_sessionID(service, &parent_sessionID)) { - usbi_dbg("parent sessionID: 0x%" PRIx64, parent_sessionID); - } - - usbi_mutex_lock(&darwin_cached_devices_lock); - do { - *cached_out = NULL; - - list_for_each_entry(new_device, &darwin_cached_devices, list, struct darwin_cached_device) { - usbi_dbg("matching sessionID/locationID 0x%" PRIx64 "/0x%x against cached device with sessionID/locationID 0x%" PRIx64 "/0x%x", - sessionID, locationID, new_device->session, new_device->location); - if (new_device->location == locationID && new_device->in_reenumerate) { - usbi_dbg ("found cached device with matching location that is being re-enumerated"); - new_device->session = sessionID; - reuse_device = true; - break; - } - - if (new_device->session == sessionID) { - usbi_dbg("using cached device for device"); - *cached_out = new_device; - break; - } - } - - if (*cached_out) - break; - - usbi_dbg("caching new device with sessionID 0x%" PRIx64, sessionID); - - device = darwin_device_from_service (service); - if (!device) { - ret = LIBUSB_ERROR_NO_DEVICE; - break; - } - - if (!reuse_device) { - new_device = calloc (1, sizeof (*new_device)); - if (!new_device) { - ret = LIBUSB_ERROR_NO_MEM; - break; - } - - /* add this device to the cached device list */ - list_add(&new_device->list, &darwin_cached_devices); - - (*device)->GetDeviceAddress (device, (USBDeviceAddress *)&new_device->address); - - /* keep a reference to this device */ - darwin_ref_cached_device(new_device); - - new_device->session = sessionID; - (*device)->GetLocationID (device, &new_device->location); - new_device->port = port; - new_device->parent_session = parent_sessionID; - } - - new_device->device = device; - - /* cache the device descriptor */ - ret = darwin_cache_device_descriptor(ctx, new_device); - if (ret) - break; - - if (new_device->can_enumerate) { - snprintf(new_device->sys_path, 20, "%03i-%04x-%04x-%02x-%02x", new_device->address, - new_device->dev_descriptor.idVendor, new_device->dev_descriptor.idProduct, - new_device->dev_descriptor.bDeviceClass, new_device->dev_descriptor.bDeviceSubClass); - } - } while (0); - - usbi_mutex_unlock(&darwin_cached_devices_lock); - - /* keep track of devices regardless of if we successfully enumerate them to - prevent them from being enumerated multiple times */ - - *cached_out = new_device; - - return ret; -} - -static enum libusb_error process_new_device (struct libusb_context *ctx, io_service_t service) { - struct darwin_device_priv *priv; - struct libusb_device *dev = NULL; - struct darwin_cached_device *cached_device; - UInt8 devSpeed; - enum libusb_error ret = LIBUSB_SUCCESS; - - do { - ret = darwin_get_cached_device (ctx, service, &cached_device); - if (ret < 0 || !cached_device->can_enumerate) { - return ret; - } - - /* check current active configuration (and cache the first configuration value-- - which may be used by claim_interface) */ - ret = darwin_check_configuration (ctx, cached_device); - if (ret) - break; - - usbi_dbg ("allocating new device in context %p for with session 0x%" PRIx64, - ctx, cached_device->session); - - dev = usbi_alloc_device(ctx, (unsigned long) cached_device->session); - if (!dev) { - return LIBUSB_ERROR_NO_MEM; - } - - priv = (struct darwin_device_priv *)dev->os_priv; - - priv->dev = cached_device; - darwin_ref_cached_device (priv->dev); - - if (cached_device->parent_session > 0) { - dev->parent_dev = usbi_get_device_by_session_id (ctx, (unsigned long) cached_device->parent_session); - } else { - dev->parent_dev = NULL; - } - dev->port_number = cached_device->port; - dev->bus_number = cached_device->location >> 24; - assert(cached_device->address <= UINT8_MAX); - dev->device_address = (uint8_t)cached_device->address; - - (*(priv->dev->device))->GetDeviceSpeed (priv->dev->device, &devSpeed); - - switch (devSpeed) { - case kUSBDeviceSpeedLow: dev->speed = LIBUSB_SPEED_LOW; break; - case kUSBDeviceSpeedFull: dev->speed = LIBUSB_SPEED_FULL; break; - case kUSBDeviceSpeedHigh: dev->speed = LIBUSB_SPEED_HIGH; break; -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 - case kUSBDeviceSpeedSuper: dev->speed = LIBUSB_SPEED_SUPER; break; -#endif -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101200 - case kUSBDeviceSpeedSuperPlus: dev->speed = LIBUSB_SPEED_SUPER_PLUS; break; -#endif - default: - usbi_warn (ctx, "Got unknown device speed %d", devSpeed); - } - - ret = usbi_sanitize_device (dev); - if (ret < 0) - break; - - usbi_dbg ("found device with address %d port = %d parent = %p at %p", dev->device_address, - dev->port_number, (void *) dev->parent_dev, priv->dev->sys_path); - - } while (0); - - if (cached_device->in_reenumerate) { - usbi_dbg ("cached device in reset state. reset complete..."); - cached_device->in_reenumerate = false; - } else if (0 == ret) { - usbi_connect_device (dev); - } else { - libusb_unref_device (dev); - } - - return ret; -} - -static enum libusb_error darwin_scan_devices(struct libusb_context *ctx) { - io_iterator_t deviceIterator; - io_service_t service; - IOReturn kresult; - - kresult = usb_setup_device_iterator (&deviceIterator, 0); - if (kresult != kIOReturnSuccess) - return darwin_to_libusb (kresult); - - while ((service = IOIteratorNext (deviceIterator))) { - (void) process_new_device (ctx, service); - - IOObjectRelease(service); - } - - IOObjectRelease(deviceIterator); - - return LIBUSB_SUCCESS; -} - -static int darwin_open (struct libusb_device_handle *dev_handle) { - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - struct darwin_cached_device *dpriv = DARWIN_CACHED_DEVICE(dev_handle->dev); - IOReturn kresult; - - if (0 == dpriv->open_count) { - /* try to open the device */ - kresult = (*(dpriv->device))->USBDeviceOpenSeize (dpriv->device); - if (kresult != kIOReturnSuccess) { - usbi_warn (HANDLE_CTX (dev_handle), "USBDeviceOpen: %s", darwin_error_str(kresult)); - - if (kIOReturnExclusiveAccess != kresult) { - return darwin_to_libusb (kresult); - } - - /* it is possible to perform some actions on a device that is not open so do not return an error */ - priv->is_open = false; - } else { - priv->is_open = true; - } - - /* create async event source */ - kresult = (*(dpriv->device))->CreateDeviceAsyncEventSource (dpriv->device, &priv->cfSource); - if (kresult != kIOReturnSuccess) { - usbi_err (HANDLE_CTX (dev_handle), "CreateDeviceAsyncEventSource: %s", darwin_error_str(kresult)); - - if (priv->is_open) { - (*(dpriv->device))->USBDeviceClose (dpriv->device); - } - - priv->is_open = false; - - return darwin_to_libusb (kresult); - } - - CFRetain (libusb_darwin_acfl); - - /* add the cfSource to the aync run loop */ - CFRunLoopAddSource(libusb_darwin_acfl, priv->cfSource, kCFRunLoopCommonModes); - } - - /* device opened successfully */ - dpriv->open_count++; - - usbi_dbg ("device open for access"); - - return 0; -} - -static void darwin_close (struct libusb_device_handle *dev_handle) { - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - struct darwin_cached_device *dpriv = DARWIN_CACHED_DEVICE(dev_handle->dev); - IOReturn kresult; - int i; - - if (dpriv->open_count == 0) { - /* something is probably very wrong if this is the case */ - usbi_err (HANDLE_CTX (dev_handle), "Close called on a device that was not open!"); - return; - } - - dpriv->open_count--; - - /* make sure all interfaces are released */ - for (i = 0 ; i < USB_MAXINTERFACES ; i++) - if (dev_handle->claimed_interfaces & (1U << i)) - libusb_release_interface (dev_handle, i); - - if (0 == dpriv->open_count) { - /* delete the device's async event source */ - if (priv->cfSource) { - CFRunLoopRemoveSource (libusb_darwin_acfl, priv->cfSource, kCFRunLoopDefaultMode); - CFRelease (priv->cfSource); - priv->cfSource = NULL; - CFRelease (libusb_darwin_acfl); - } - - if (priv->is_open) { - /* close the device */ - kresult = (*(dpriv->device))->USBDeviceClose(dpriv->device); - if (kresult != kIOReturnSuccess) { - /* Log the fact that we had a problem closing the file, however failing a - * close isn't really an error, so return success anyway */ - usbi_warn (HANDLE_CTX (dev_handle), "USBDeviceClose: %s", darwin_error_str(kresult)); - } - } - } -} - -static int darwin_get_configuration(struct libusb_device_handle *dev_handle, int *config) { - struct darwin_cached_device *dpriv = DARWIN_CACHED_DEVICE(dev_handle->dev); - - *config = (int) dpriv->active_config; - - return LIBUSB_SUCCESS; -} - -static enum libusb_error darwin_set_configuration(struct libusb_device_handle *dev_handle, int config) { - struct darwin_cached_device *dpriv = DARWIN_CACHED_DEVICE(dev_handle->dev); - IOReturn kresult; - int i; - - assert(config >= 0 && config <= UINT8_MAX); - - /* Setting configuration will invalidate the interface, so we need - to reclaim it. First, dispose of existing interfaces, if any. */ - for (i = 0 ; i < USB_MAXINTERFACES ; i++) - if (dev_handle->claimed_interfaces & (1U << i)) - darwin_release_interface (dev_handle, i); - - kresult = (*(dpriv->device))->SetConfiguration (dpriv->device, (UInt8)config); - if (kresult != kIOReturnSuccess) - return darwin_to_libusb (kresult); - - /* Reclaim any interfaces. */ - for (i = 0 ; i < USB_MAXINTERFACES ; i++) - if (dev_handle->claimed_interfaces & (1U << i)) - darwin_claim_interface (dev_handle, i); - - dpriv->active_config = (UInt8)config; - - return LIBUSB_SUCCESS; -} - -static IOReturn darwin_get_interface (usb_device_t **darwin_device, int ifc, io_service_t *usbInterfacep) { - IOUSBFindInterfaceRequest request; - IOReturn kresult; - io_iterator_t interface_iterator; - UInt8 bInterfaceNumber; - bool ret; - - *usbInterfacep = IO_OBJECT_NULL; - - /* Setup the Interface Request */ - request.bInterfaceClass = kIOUSBFindInterfaceDontCare; - request.bInterfaceSubClass = kIOUSBFindInterfaceDontCare; - request.bInterfaceProtocol = kIOUSBFindInterfaceDontCare; - request.bAlternateSetting = kIOUSBFindInterfaceDontCare; - - kresult = (*(darwin_device))->CreateInterfaceIterator(darwin_device, &request, &interface_iterator); - if (kresult != kIOReturnSuccess) - return kresult; - - while ((*usbInterfacep = IOIteratorNext(interface_iterator))) { - /* find the interface number */ - ret = get_ioregistry_value_number (*usbInterfacep, CFSTR("bInterfaceNumber"), kCFNumberSInt8Type, - &bInterfaceNumber); - - if (ret && bInterfaceNumber == ifc) { - break; - } - - (void) IOObjectRelease (*usbInterfacep); - } - - /* done with the interface iterator */ - IOObjectRelease(interface_iterator); - - return kIOReturnSuccess; -} - -static enum libusb_error get_endpoints (struct libusb_device_handle *dev_handle, int iface) { - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - - /* current interface */ - struct darwin_interface *cInterface = &priv->interfaces[iface]; - - IOReturn kresult; - - UInt8 numep, direction, number; - UInt8 dont_care1, dont_care3; - UInt16 dont_care2; - int rc; - - usbi_dbg ("building table of endpoints."); - - /* retrieve the total number of endpoints on this interface */ - kresult = (*(cInterface->interface))->GetNumEndpoints(cInterface->interface, &numep); - if (kresult != kIOReturnSuccess) { - usbi_err (HANDLE_CTX (dev_handle), "can't get number of endpoints for interface: %s", darwin_error_str(kresult)); - return darwin_to_libusb (kresult); - } - - /* iterate through pipe references */ - for (UInt8 i = 1 ; i <= numep ; i++) { - kresult = (*(cInterface->interface))->GetPipeProperties(cInterface->interface, i, &direction, &number, &dont_care1, - &dont_care2, &dont_care3); - - if (kresult != kIOReturnSuccess) { - /* probably a buggy device. try to get the endpoint address from the descriptors */ - struct libusb_config_descriptor *config; - const struct libusb_endpoint_descriptor *endpoint_desc; - UInt8 alt_setting; - - kresult = (*(cInterface->interface))->GetAlternateSetting (cInterface->interface, &alt_setting); - if (kresult != kIOReturnSuccess) { - usbi_err (HANDLE_CTX (dev_handle), "can't get alternate setting for interface"); - return darwin_to_libusb (kresult); - } - - rc = libusb_get_active_config_descriptor (dev_handle->dev, &config); - if (LIBUSB_SUCCESS != rc) { - return rc; - } - - endpoint_desc = config->interface[iface].altsetting[alt_setting].endpoint + i - 1; - - cInterface->endpoint_addrs[i - 1] = endpoint_desc->bEndpointAddress; - } else { - cInterface->endpoint_addrs[i - 1] = (UInt8)(((kUSBIn == direction) << kUSBRqDirnShift) | (number & LIBUSB_ENDPOINT_ADDRESS_MASK)); - } - - usbi_dbg ("interface: %i pipe %i: dir: %i number: %i", iface, i, cInterface->endpoint_addrs[i - 1] >> kUSBRqDirnShift, - cInterface->endpoint_addrs[i - 1] & LIBUSB_ENDPOINT_ADDRESS_MASK); - } - - cInterface->num_endpoints = numep; - - return LIBUSB_SUCCESS; -} - -static int darwin_claim_interface(struct libusb_device_handle *dev_handle, int iface) { - struct darwin_cached_device *dpriv = DARWIN_CACHED_DEVICE(dev_handle->dev); - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - io_service_t usbInterface = IO_OBJECT_NULL; - IOReturn kresult; - enum libusb_error ret; - IOCFPlugInInterface **plugInInterface = NULL; - SInt32 score; - - assert(iface >= 0 && iface <= UINT8_MAX); - - /* current interface */ - struct darwin_interface *cInterface = &priv->interfaces[iface]; - - kresult = darwin_get_interface (dpriv->device, (uint8_t)iface, &usbInterface); - if (kresult != kIOReturnSuccess) - return darwin_to_libusb (kresult); - - /* make sure we have an interface */ - if (!usbInterface && dpriv->first_config != 0) { - usbi_info (HANDLE_CTX (dev_handle), "no interface found; setting configuration: %d", dpriv->first_config); - - /* set the configuration */ - ret = darwin_set_configuration (dev_handle, dpriv->first_config); - if (ret != LIBUSB_SUCCESS) { - usbi_err (HANDLE_CTX (dev_handle), "could not set configuration"); - return ret; - } - - kresult = darwin_get_interface (dpriv->device, (uint8_t)iface, &usbInterface); - if (kresult != kIOReturnSuccess) { - usbi_err (HANDLE_CTX (dev_handle), "darwin_get_interface: %s", darwin_error_str(kresult)); - return darwin_to_libusb (kresult); - } - } - - if (!usbInterface) { - usbi_err (HANDLE_CTX (dev_handle), "interface not found"); - return LIBUSB_ERROR_NOT_FOUND; - } - - /* get an interface to the device's interface */ - kresult = IOCreatePlugInInterfaceForService (usbInterface, kIOUSBInterfaceUserClientTypeID, - kIOCFPlugInInterfaceID, &plugInInterface, &score); - - /* ignore release error */ - (void)IOObjectRelease (usbInterface); - - if (kresult != kIOReturnSuccess) { - usbi_err (HANDLE_CTX (dev_handle), "IOCreatePlugInInterfaceForService: %s", darwin_error_str(kresult)); - return darwin_to_libusb (kresult); - } - - if (!plugInInterface) { - usbi_err (HANDLE_CTX (dev_handle), "plugin interface not found"); - return LIBUSB_ERROR_NOT_FOUND; - } - - /* Do the actual claim */ - kresult = (*plugInInterface)->QueryInterface(plugInInterface, - CFUUIDGetUUIDBytes(InterfaceInterfaceID), - (LPVOID)&cInterface->interface); - /* We no longer need the intermediate plug-in */ - /* Use release instead of IODestroyPlugInInterface to avoid stopping IOServices associated with this device */ - (*plugInInterface)->Release (plugInInterface); - if (kresult != kIOReturnSuccess || !cInterface->interface) { - usbi_err (HANDLE_CTX (dev_handle), "QueryInterface: %s", darwin_error_str(kresult)); - return darwin_to_libusb (kresult); - } - - /* claim the interface */ - kresult = (*(cInterface->interface))->USBInterfaceOpen(cInterface->interface); - if (kresult != kIOReturnSuccess) { - usbi_err (HANDLE_CTX (dev_handle), "USBInterfaceOpen: %s", darwin_error_str(kresult)); - return darwin_to_libusb (kresult); - } - - /* update list of endpoints */ - ret = get_endpoints (dev_handle, iface); - if (ret) { - /* this should not happen */ - darwin_release_interface (dev_handle, iface); - usbi_err (HANDLE_CTX (dev_handle), "could not build endpoint table"); - return ret; - } - - cInterface->cfSource = NULL; - - /* create async event source */ - kresult = (*(cInterface->interface))->CreateInterfaceAsyncEventSource (cInterface->interface, &cInterface->cfSource); - if (kresult != kIOReturnSuccess) { - usbi_err (HANDLE_CTX (dev_handle), "could not create async event source"); - - /* can't continue without an async event source */ - (void)darwin_release_interface (dev_handle, iface); - - return darwin_to_libusb (kresult); - } - - /* add the cfSource to the async thread's run loop */ - CFRunLoopAddSource(libusb_darwin_acfl, cInterface->cfSource, kCFRunLoopDefaultMode); - - usbi_dbg ("interface opened"); - - return LIBUSB_SUCCESS; -} - -static int darwin_release_interface(struct libusb_device_handle *dev_handle, int iface) { - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - IOReturn kresult; - - /* current interface */ - struct darwin_interface *cInterface = &priv->interfaces[iface]; - - /* Check to see if an interface is open */ - if (!cInterface->interface) - return LIBUSB_SUCCESS; - - /* clean up endpoint data */ - cInterface->num_endpoints = 0; - - /* delete the interface's async event source */ - if (cInterface->cfSource) { - CFRunLoopRemoveSource (libusb_darwin_acfl, cInterface->cfSource, kCFRunLoopDefaultMode); - CFRelease (cInterface->cfSource); - } - - kresult = (*(cInterface->interface))->USBInterfaceClose(cInterface->interface); - if (kresult != kIOReturnSuccess) - usbi_warn (HANDLE_CTX (dev_handle), "USBInterfaceClose: %s", darwin_error_str(kresult)); - - kresult = (*(cInterface->interface))->Release(cInterface->interface); - if (kresult != kIOReturnSuccess) - usbi_warn (HANDLE_CTX (dev_handle), "Release: %s", darwin_error_str(kresult)); - - cInterface->interface = (usb_interface_t **) IO_OBJECT_NULL; - - return darwin_to_libusb (kresult); -} - -static int darwin_set_interface_altsetting(struct libusb_device_handle *dev_handle, int iface, int altsetting) { - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - IOReturn kresult; - enum libusb_error ret; - - /* current interface */ - struct darwin_interface *cInterface = &priv->interfaces[iface]; - - if (!cInterface->interface) - return LIBUSB_ERROR_NO_DEVICE; - - assert(altsetting >= 0 && altsetting <= UINT8_MAX); - kresult = (*(cInterface->interface))->SetAlternateInterface (cInterface->interface, (UInt8)altsetting); - if (kresult != kIOReturnSuccess) - darwin_reset_device (dev_handle); - - /* update list of endpoints */ - ret = get_endpoints (dev_handle, iface); - if (ret) { - /* this should not happen */ - darwin_release_interface (dev_handle, iface); - usbi_err (HANDLE_CTX (dev_handle), "could not build endpoint table"); - return ret; - } - - return darwin_to_libusb (kresult); -} - -static int darwin_clear_halt(struct libusb_device_handle *dev_handle, unsigned char endpoint) { - /* current interface */ - struct darwin_interface *cInterface; - IOReturn kresult; - uint8_t pipeRef; - - /* determine the interface/endpoint to use */ - if (ep_to_pipeRef (dev_handle, endpoint, &pipeRef, NULL, &cInterface) != 0) { - usbi_err (HANDLE_CTX (dev_handle), "endpoint not found on any open interface"); - - return LIBUSB_ERROR_NOT_FOUND; - } - - /* newer versions of darwin support clearing additional bits on the device's endpoint */ - kresult = (*(cInterface->interface))->ClearPipeStallBothEnds(cInterface->interface, pipeRef); - if (kresult != kIOReturnSuccess) - usbi_warn (HANDLE_CTX (dev_handle), "ClearPipeStall: %s", darwin_error_str (kresult)); - - return darwin_to_libusb (kresult); -} - -static int darwin_restore_state (struct libusb_device_handle *dev_handle, int8_t active_config, - unsigned long claimed_interfaces) { - struct darwin_cached_device *dpriv = DARWIN_CACHED_DEVICE(dev_handle->dev); - struct darwin_device_handle_priv *priv = (struct darwin_device_handle_priv *)dev_handle->os_priv; - int open_count = dpriv->open_count; - int ret; - - /* clear claimed interfaces temporarily */ - dev_handle->claimed_interfaces = 0; - - /* close and re-open the device */ - priv->is_open = false; - dpriv->open_count = 1; - - /* clean up open interfaces */ - (void) darwin_close (dev_handle); - - /* re-open the device */ - ret = darwin_open (dev_handle); - dpriv->open_count = open_count; - if (LIBUSB_SUCCESS != ret) { - /* could not restore configuration */ - return LIBUSB_ERROR_NOT_FOUND; - } - - if (dpriv->active_config != active_config) { - usbi_dbg ("darwin/restore_state: restoring configuration %d...", active_config); - - ret = darwin_set_configuration (dev_handle, active_config); - if (LIBUSB_SUCCESS != ret) { - usbi_dbg ("darwin/restore_state: could not restore configuration"); - return LIBUSB_ERROR_NOT_FOUND; - } - } - - usbi_dbg ("darwin/restore_state: reclaiming interfaces"); - - if (claimed_interfaces) { - for (int iface = 0 ; iface < USB_MAXINTERFACES ; ++iface) { - if (!(claimed_interfaces & (1U << iface))) { - continue; - } - - usbi_dbg ("darwin/restore_state: re-claiming interface %d", iface); - - ret = darwin_claim_interface (dev_handle, iface); - if (LIBUSB_SUCCESS != ret) { - usbi_dbg ("darwin/restore_state: could not claim interface %d", iface); - return LIBUSB_ERROR_NOT_FOUND; - } - - dev_handle->claimed_interfaces |= 1U << iface; - } - } - - usbi_dbg ("darwin/restore_state: device state restored"); - - return LIBUSB_SUCCESS; -} - -static int darwin_reset_device(struct libusb_device_handle *dev_handle) { - struct darwin_cached_device *dpriv = DARWIN_CACHED_DEVICE(dev_handle->dev); - unsigned long claimed_interfaces = dev_handle->claimed_interfaces; - int8_t active_config = dpriv->active_config; - IOUSBDeviceDescriptor descriptor; - IOUSBConfigurationDescriptorPtr cached_configuration; - IOUSBConfigurationDescriptor *cached_configurations; - IOReturn kresult; - UInt8 i; - - if (dpriv->in_reenumerate) { - /* ack, two (or more) threads are trying to reset the device! abort! */ - return LIBUSB_ERROR_NOT_FOUND; - } - - dpriv->in_reenumerate = true; - - /* store copies of descriptors so they can be compared after the reset */ - memcpy (&descriptor, &dpriv->dev_descriptor, sizeof (descriptor)); - cached_configurations = alloca (sizeof (*cached_configurations) * descriptor.bNumConfigurations); - - for (i = 0 ; i < descriptor.bNumConfigurations ; ++i) { - (*(dpriv->device))->GetConfigurationDescriptorPtr (dpriv->device, i, &cached_configuration); - memcpy (cached_configurations + i, cached_configuration, sizeof (cached_configurations[i])); - } - - /* from macOS 10.11 ResetDevice no longer does anything so just use USBDeviceReEnumerate */ - kresult = (*(dpriv->device))->USBDeviceReEnumerate (dpriv->device, 0); - if (kresult != kIOReturnSuccess) { - usbi_err (HANDLE_CTX (dev_handle), "USBDeviceReEnumerate: %s", darwin_error_str (kresult)); - dpriv->in_reenumerate = false; - return darwin_to_libusb (kresult); - } - - usbi_dbg ("darwin/reset_device: waiting for re-enumeration to complete..."); - - while (dpriv->in_reenumerate) { - struct timespec delay = {.tv_sec = 0, .tv_nsec = 1000}; - nanosleep (&delay, NULL); - } - - /* compare descriptors */ - usbi_dbg ("darwin/reset_device: checking whether descriptors changed"); - - if (memcmp (&descriptor, &dpriv->dev_descriptor, sizeof (descriptor))) { - /* device descriptor changed. need to return not found. */ - usbi_dbg ("darwin/reset_device: device descriptor changed"); - return LIBUSB_ERROR_NOT_FOUND; - } - - for (i = 0 ; i < descriptor.bNumConfigurations ; ++i) { - (void) (*(dpriv->device))->GetConfigurationDescriptorPtr (dpriv->device, i, &cached_configuration); - if (memcmp (cached_configuration, cached_configurations + i, sizeof (cached_configurations[i]))) { - usbi_dbg ("darwin/reset_device: configuration descriptor %d changed", i); - return LIBUSB_ERROR_NOT_FOUND; - } - } - - usbi_dbg ("darwin/reset_device: device reset complete. restoring state..."); - - return darwin_restore_state (dev_handle, active_config, claimed_interfaces); -} - -static int darwin_kernel_driver_active(struct libusb_device_handle *dev_handle, int interface) { - struct darwin_cached_device *dpriv = DARWIN_CACHED_DEVICE(dev_handle->dev); - io_service_t usbInterface; - CFTypeRef driver; - IOReturn kresult; - - assert(interface >= 0 && interface <= UINT8_MAX); - kresult = darwin_get_interface (dpriv->device, (uint8_t)interface, &usbInterface); - if (kresult != kIOReturnSuccess) { - usbi_err (HANDLE_CTX (dev_handle), "darwin_get_interface: %s", darwin_error_str(kresult)); - - return darwin_to_libusb (kresult); - } - - driver = IORegistryEntryCreateCFProperty (usbInterface, kIOBundleIdentifierKey, kCFAllocatorDefault, 0); - IOObjectRelease (usbInterface); - - if (driver) { - CFRelease (driver); - - return 1; - } - - /* no driver */ - return 0; -} - -/* attaching/detaching kernel drivers is not currently supported (maybe in the future?) */ -static int darwin_attach_kernel_driver (struct libusb_device_handle *dev_handle, int interface) { - UNUSED(dev_handle); - UNUSED(interface); - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -static int darwin_detach_kernel_driver (struct libusb_device_handle *dev_handle, int interface) { - UNUSED(dev_handle); - UNUSED(interface); - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -static void darwin_destroy_device(struct libusb_device *dev) { - struct darwin_device_priv *dpriv = (struct darwin_device_priv *) dev->os_priv; - - if (dpriv->dev) { - /* need to hold the lock in case this is the last reference to the device */ - usbi_mutex_lock(&darwin_cached_devices_lock); - darwin_deref_cached_device (dpriv->dev); - dpriv->dev = NULL; - usbi_mutex_unlock(&darwin_cached_devices_lock); - } -} - -static int submit_bulk_transfer(struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - IOReturn ret; - uint8_t transferType; - /* None of the values below are used in libusbx for bulk transfers */ - uint8_t direction, number, interval, pipeRef; - uint16_t maxPacketSize; - - struct darwin_interface *cInterface; - - if (ep_to_pipeRef (transfer->dev_handle, transfer->endpoint, &pipeRef, NULL, &cInterface) != 0) { - usbi_err (TRANSFER_CTX (transfer), "endpoint not found on any open interface"); - - return LIBUSB_ERROR_NOT_FOUND; - } - - ret = (*(cInterface->interface))->GetPipeProperties (cInterface->interface, pipeRef, &direction, &number, - &transferType, &maxPacketSize, &interval); - - if (ret) { - usbi_err (TRANSFER_CTX (transfer), "bulk transfer failed (dir = %s): %s (code = 0x%08x)", IS_XFERIN(transfer) ? "In" : "Out", - darwin_error_str(ret), ret); - return darwin_to_libusb (ret); - } - - if (0 != (transfer->length % maxPacketSize)) { - /* do not need a zero packet */ - transfer->flags &= ~LIBUSB_TRANSFER_ADD_ZERO_PACKET; - } - - /* submit the request */ - /* timeouts are unavailable on interrupt endpoints */ - if (transferType == kUSBInterrupt) { - if (IS_XFERIN(transfer)) - ret = (*(cInterface->interface))->ReadPipeAsync(cInterface->interface, pipeRef, transfer->buffer, - (UInt32)transfer->length, darwin_async_io_callback, itransfer); - else - ret = (*(cInterface->interface))->WritePipeAsync(cInterface->interface, pipeRef, transfer->buffer, - (UInt32)transfer->length, darwin_async_io_callback, itransfer); - } else { - itransfer->timeout_flags |= USBI_TRANSFER_OS_HANDLES_TIMEOUT; - - if (IS_XFERIN(transfer)) - ret = (*(cInterface->interface))->ReadPipeAsyncTO(cInterface->interface, pipeRef, transfer->buffer, - (UInt32)transfer->length, transfer->timeout, transfer->timeout, - darwin_async_io_callback, itransfer); - else - ret = (*(cInterface->interface))->WritePipeAsyncTO(cInterface->interface, pipeRef, transfer->buffer, - (UInt32)transfer->length, transfer->timeout, transfer->timeout, - darwin_async_io_callback, itransfer); - } - - if (ret) - usbi_err (TRANSFER_CTX (transfer), "bulk transfer failed (dir = %s): %s (code = 0x%08x)", IS_XFERIN(transfer) ? "In" : "Out", - darwin_error_str(ret), ret); - - return darwin_to_libusb (ret); -} - -#if InterfaceVersion >= 550 -static int submit_stream_transfer(struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct darwin_interface *cInterface; - uint8_t pipeRef; - IOReturn ret; - - if (ep_to_pipeRef (transfer->dev_handle, transfer->endpoint, &pipeRef, NULL, &cInterface) != 0) { - usbi_err (TRANSFER_CTX (transfer), "endpoint not found on any open interface"); - - return LIBUSB_ERROR_NOT_FOUND; - } - - itransfer->timeout_flags |= USBI_TRANSFER_OS_HANDLES_TIMEOUT; - - if (IS_XFERIN(transfer)) - ret = (*(cInterface->interface))->ReadStreamsPipeAsyncTO(cInterface->interface, pipeRef, itransfer->stream_id, - transfer->buffer, (UInt32)transfer->length, transfer->timeout, - transfer->timeout, darwin_async_io_callback, itransfer); - else - ret = (*(cInterface->interface))->WriteStreamsPipeAsyncTO(cInterface->interface, pipeRef, itransfer->stream_id, - transfer->buffer, (UInt32)transfer->length, transfer->timeout, - transfer->timeout, darwin_async_io_callback, itransfer); - - if (ret) - usbi_err (TRANSFER_CTX (transfer), "bulk stream transfer failed (dir = %s): %s (code = 0x%08x)", IS_XFERIN(transfer) ? "In" : "Out", - darwin_error_str(ret), ret); - - return darwin_to_libusb (ret); -} -#endif - -static int submit_iso_transfer(struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct darwin_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - - IOReturn kresult; - uint8_t direction, number, interval, pipeRef, transferType; - uint16_t maxPacketSize; - UInt64 frame; - AbsoluteTime atTime; - int i; - - struct darwin_interface *cInterface; - - /* construct an array of IOUSBIsocFrames, reuse the old one if the sizes are the same */ - if (tpriv->num_iso_packets != transfer->num_iso_packets) { - free(tpriv->isoc_framelist); - tpriv->isoc_framelist = NULL; - } - - if (!tpriv->isoc_framelist) { - tpriv->num_iso_packets = transfer->num_iso_packets; - tpriv->isoc_framelist = (IOUSBIsocFrame*) calloc ((size_t)transfer->num_iso_packets, sizeof(IOUSBIsocFrame)); - if (!tpriv->isoc_framelist) - return LIBUSB_ERROR_NO_MEM; - } - - /* copy the frame list from the libusb descriptor (the structures differ only is member order) */ - for (i = 0 ; i < transfer->num_iso_packets ; i++) { - unsigned int length = transfer->iso_packet_desc[i].length; - assert(length <= UINT16_MAX); - tpriv->isoc_framelist[i].frReqCount = (UInt16)length; - } - - /* determine the interface/endpoint to use */ - if (ep_to_pipeRef (transfer->dev_handle, transfer->endpoint, &pipeRef, NULL, &cInterface) != 0) { - usbi_err (TRANSFER_CTX (transfer), "endpoint not found on any open interface"); - - return LIBUSB_ERROR_NOT_FOUND; - } - - /* determine the properties of this endpoint and the speed of the device */ - (*(cInterface->interface))->GetPipeProperties (cInterface->interface, pipeRef, &direction, &number, - &transferType, &maxPacketSize, &interval); - - /* Last but not least we need the bus frame number */ - kresult = (*(cInterface->interface))->GetBusFrameNumber(cInterface->interface, &frame, &atTime); - if (kresult != kIOReturnSuccess) { - usbi_err (TRANSFER_CTX (transfer), "failed to get bus frame number: %d", kresult); - free(tpriv->isoc_framelist); - tpriv->isoc_framelist = NULL; - - return darwin_to_libusb (kresult); - } - - (*(cInterface->interface))->GetPipeProperties (cInterface->interface, pipeRef, &direction, &number, - &transferType, &maxPacketSize, &interval); - - /* schedule for a frame a little in the future */ - frame += 4; - - if (cInterface->frames[transfer->endpoint] && frame < cInterface->frames[transfer->endpoint]) - frame = cInterface->frames[transfer->endpoint]; - - /* submit the request */ - if (IS_XFERIN(transfer)) - kresult = (*(cInterface->interface))->ReadIsochPipeAsync(cInterface->interface, pipeRef, transfer->buffer, frame, - (UInt32)transfer->num_iso_packets, tpriv->isoc_framelist, darwin_async_io_callback, - itransfer); - else - kresult = (*(cInterface->interface))->WriteIsochPipeAsync(cInterface->interface, pipeRef, transfer->buffer, frame, - (UInt32)transfer->num_iso_packets, tpriv->isoc_framelist, darwin_async_io_callback, - itransfer); - - if (LIBUSB_SPEED_FULL == transfer->dev_handle->dev->speed) - /* Full speed */ - cInterface->frames[transfer->endpoint] = frame + (UInt32)transfer->num_iso_packets * (1U << (interval - 1)); - else - /* High/super speed */ - cInterface->frames[transfer->endpoint] = frame + (UInt32)transfer->num_iso_packets * (1U << (interval - 1)) / 8; - - if (kresult != kIOReturnSuccess) { - usbi_err (TRANSFER_CTX (transfer), "isochronous transfer failed (dir: %s): %s", IS_XFERIN(transfer) ? "In" : "Out", - darwin_error_str(kresult)); - free (tpriv->isoc_framelist); - tpriv->isoc_framelist = NULL; - } - - return darwin_to_libusb (kresult); -} - -static int submit_control_transfer(struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_control_setup *setup = (struct libusb_control_setup *) transfer->buffer; - struct darwin_cached_device *dpriv = DARWIN_CACHED_DEVICE(transfer->dev_handle->dev); - struct darwin_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - - IOReturn kresult; - - memset(&tpriv->req, 0, sizeof(tpriv->req)); - - /* IOUSBDeviceInterface expects the request in cpu endianness */ - tpriv->req.bmRequestType = setup->bmRequestType; - tpriv->req.bRequest = setup->bRequest; - /* these values should be in bus order from libusb_fill_control_setup */ - tpriv->req.wValue = OSSwapLittleToHostInt16 (setup->wValue); - tpriv->req.wIndex = OSSwapLittleToHostInt16 (setup->wIndex); - tpriv->req.wLength = OSSwapLittleToHostInt16 (setup->wLength); - /* data is stored after the libusb control block */ - tpriv->req.pData = transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE; - tpriv->req.completionTimeout = transfer->timeout; - tpriv->req.noDataTimeout = transfer->timeout; - - itransfer->timeout_flags |= USBI_TRANSFER_OS_HANDLES_TIMEOUT; - - /* all transfers in libusb-1.0 are async */ - - if (transfer->endpoint) { - struct darwin_interface *cInterface; - uint8_t pipeRef; - - if (ep_to_pipeRef (transfer->dev_handle, transfer->endpoint, &pipeRef, NULL, &cInterface) != 0) { - usbi_err (TRANSFER_CTX (transfer), "endpoint not found on any open interface"); - - return LIBUSB_ERROR_NOT_FOUND; - } - - kresult = (*(cInterface->interface))->ControlRequestAsyncTO (cInterface->interface, pipeRef, &(tpriv->req), darwin_async_io_callback, itransfer); - } else - /* control request on endpoint 0 */ - kresult = (*(dpriv->device))->DeviceRequestAsyncTO(dpriv->device, &(tpriv->req), darwin_async_io_callback, itransfer); - - if (kresult != kIOReturnSuccess) - usbi_err (TRANSFER_CTX (transfer), "control request failed: %s", darwin_error_str(kresult)); - - return darwin_to_libusb (kresult); -} - -static int darwin_submit_transfer(struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - return submit_control_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - return submit_bulk_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - return submit_iso_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: -#if InterfaceVersion >= 550 - return submit_stream_transfer(itransfer); -#else - usbi_err (TRANSFER_CTX(transfer), "IOUSBFamily version does not support bulk stream transfers"); - return LIBUSB_ERROR_NOT_SUPPORTED; -#endif - default: - usbi_err (TRANSFER_CTX(transfer), "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -static int cancel_control_transfer(struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct darwin_cached_device *dpriv = DARWIN_CACHED_DEVICE(transfer->dev_handle->dev); - IOReturn kresult; - - usbi_warn (ITRANSFER_CTX (itransfer), "aborting all transactions control pipe"); - - if (!dpriv->device) - return LIBUSB_ERROR_NO_DEVICE; - - kresult = (*(dpriv->device))->USBDeviceAbortPipeZero (dpriv->device); - - return darwin_to_libusb (kresult); -} - -static int darwin_abort_transfers (struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct darwin_cached_device *dpriv = DARWIN_CACHED_DEVICE(transfer->dev_handle->dev); - struct darwin_interface *cInterface; - uint8_t pipeRef, iface; - IOReturn kresult; - - if (ep_to_pipeRef (transfer->dev_handle, transfer->endpoint, &pipeRef, &iface, &cInterface) != 0) { - usbi_err (TRANSFER_CTX (transfer), "endpoint not found on any open interface"); - - return LIBUSB_ERROR_NOT_FOUND; - } - - if (!dpriv->device) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_warn (ITRANSFER_CTX (itransfer), "aborting all transactions on interface %d pipe %d", iface, pipeRef); - - /* abort transactions */ -#if InterfaceVersion >= 550 - if (LIBUSB_TRANSFER_TYPE_BULK_STREAM == transfer->type) - (*(cInterface->interface))->AbortStreamsPipe (cInterface->interface, pipeRef, itransfer->stream_id); - else -#endif - (*(cInterface->interface))->AbortPipe (cInterface->interface, pipeRef); - - usbi_dbg ("calling clear pipe stall to clear the data toggle bit"); - - /* newer versions of darwin support clearing additional bits on the device's endpoint */ - kresult = (*(cInterface->interface))->ClearPipeStallBothEnds(cInterface->interface, pipeRef); - - return darwin_to_libusb (kresult); -} - -static int darwin_cancel_transfer(struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - return cancel_control_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - return darwin_abort_transfers (itransfer); - default: - usbi_err (TRANSFER_CTX(transfer), "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -static void darwin_clear_transfer_priv (struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct darwin_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - - if (transfer->type == LIBUSB_TRANSFER_TYPE_ISOCHRONOUS && tpriv->isoc_framelist) { - free (tpriv->isoc_framelist); - tpriv->isoc_framelist = NULL; - } -} - -static void darwin_async_io_callback (void *refcon, IOReturn result, void *arg0) { - struct usbi_transfer *itransfer = (struct usbi_transfer *)refcon; - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct darwin_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - - usbi_dbg ("an async io operation has completed"); - - /* if requested write a zero packet */ - if (kIOReturnSuccess == result && IS_XFEROUT(transfer) && transfer->flags & LIBUSB_TRANSFER_ADD_ZERO_PACKET) { - struct darwin_interface *cInterface; - uint8_t pipeRef; - - (void) ep_to_pipeRef (transfer->dev_handle, transfer->endpoint, &pipeRef, NULL, &cInterface); - - (*(cInterface->interface))->WritePipe (cInterface->interface, pipeRef, transfer->buffer, 0); - } - - tpriv->result = result; - tpriv->size = (UInt32) (uintptr_t) arg0; - - /* signal the core that this transfer is complete */ - usbi_signal_transfer_completion(itransfer); -} - -static enum libusb_transfer_status darwin_transfer_status (struct usbi_transfer *itransfer, IOReturn result) { - if (itransfer->timeout_flags & USBI_TRANSFER_TIMED_OUT) - result = kIOUSBTransactionTimeout; - - switch (result) { - case kIOReturnUnderrun: - case kIOReturnSuccess: - return LIBUSB_TRANSFER_COMPLETED; - case kIOReturnAborted: - return LIBUSB_TRANSFER_CANCELLED; - case kIOUSBPipeStalled: - usbi_dbg ("transfer error: pipe is stalled"); - return LIBUSB_TRANSFER_STALL; - case kIOReturnOverrun: - usbi_warn (ITRANSFER_CTX (itransfer), "transfer error: data overrun"); - return LIBUSB_TRANSFER_OVERFLOW; - case kIOUSBTransactionTimeout: - usbi_warn (ITRANSFER_CTX (itransfer), "transfer error: timed out"); - itransfer->timeout_flags |= USBI_TRANSFER_TIMED_OUT; - return LIBUSB_TRANSFER_TIMED_OUT; - default: - usbi_warn (ITRANSFER_CTX (itransfer), "transfer error: %s (value = 0x%08x)", darwin_error_str (result), result); - return LIBUSB_TRANSFER_ERROR; - } -} - -static int darwin_handle_transfer_completion (struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct darwin_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - bool isIsoc = LIBUSB_TRANSFER_TYPE_ISOCHRONOUS == transfer->type; - bool isBulk = LIBUSB_TRANSFER_TYPE_BULK == transfer->type; - bool isControl = LIBUSB_TRANSFER_TYPE_CONTROL == transfer->type; - bool isInterrupt = LIBUSB_TRANSFER_TYPE_INTERRUPT == transfer->type; - int i; - - if (!isIsoc && !isBulk && !isControl && !isInterrupt) { - usbi_err (TRANSFER_CTX(transfer), "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } - - usbi_dbg ("handling %s completion with kernel status %d", - isControl ? "control" : isBulk ? "bulk" : isIsoc ? "isoc" : "interrupt", tpriv->result); - - if (kIOReturnSuccess == tpriv->result || kIOReturnUnderrun == tpriv->result) { - if (isIsoc && tpriv->isoc_framelist) { - /* copy isochronous results back */ - - for (i = 0; i < transfer->num_iso_packets ; i++) { - struct libusb_iso_packet_descriptor *lib_desc = &transfer->iso_packet_desc[i]; - lib_desc->status = darwin_transfer_status (itransfer, tpriv->isoc_framelist[i].frStatus); - lib_desc->actual_length = tpriv->isoc_framelist[i].frActCount; - } - } else if (!isIsoc) - itransfer->transferred += tpriv->size; - } - - /* it is ok to handle cancelled transfers without calling usbi_handle_transfer_cancellation (we catch timeout transfers) */ - return usbi_handle_transfer_completion (itransfer, darwin_transfer_status (itransfer, tpriv->result)); -} - -static int darwin_clock_gettime(int clk_id, struct timespec *tp) { -#if !OSX_USE_CLOCK_GETTIME - mach_timespec_t sys_time; - clock_serv_t clock_ref; - - switch (clk_id) { - case USBI_CLOCK_REALTIME: - /* CLOCK_REALTIME represents time since the epoch */ - clock_ref = clock_realtime; - break; - case USBI_CLOCK_MONOTONIC: - /* use system boot time as reference for the monotonic clock */ - clock_ref = clock_monotonic; - break; - default: - return LIBUSB_ERROR_INVALID_PARAM; - } - - clock_get_time (clock_ref, &sys_time); - - tp->tv_sec = sys_time.tv_sec; - tp->tv_nsec = sys_time.tv_nsec; - - return LIBUSB_SUCCESS; -#else - switch (clk_id) { - case USBI_CLOCK_MONOTONIC: - return clock_gettime(CLOCK_MONOTONIC, tp); - case USBI_CLOCK_REALTIME: - return clock_gettime(CLOCK_REALTIME, tp); - default: - return LIBUSB_ERROR_INVALID_PARAM; - } -#endif -} - -#if InterfaceVersion >= 550 -static int darwin_alloc_streams (struct libusb_device_handle *dev_handle, uint32_t num_streams, unsigned char *endpoints, - int num_endpoints) { - struct darwin_interface *cInterface; - UInt32 supportsStreams; - uint8_t pipeRef; - int rc, i; - - /* find the mimimum number of supported streams on the endpoint list */ - for (i = 0 ; i < num_endpoints ; ++i) { - if (0 != (rc = ep_to_pipeRef (dev_handle, endpoints[i], &pipeRef, NULL, &cInterface))) { - return rc; - } - - (*(cInterface->interface))->SupportsStreams (cInterface->interface, pipeRef, &supportsStreams); - if (num_streams > supportsStreams) - num_streams = supportsStreams; - } - - /* it is an error if any endpoint in endpoints does not support streams */ - if (0 == num_streams) - return LIBUSB_ERROR_INVALID_PARAM; - - /* create the streams */ - for (i = 0 ; i < num_endpoints ; ++i) { - (void) ep_to_pipeRef (dev_handle, endpoints[i], &pipeRef, NULL, &cInterface); - - rc = (*(cInterface->interface))->CreateStreams (cInterface->interface, pipeRef, num_streams); - if (kIOReturnSuccess != rc) - return darwin_to_libusb(rc); - } - - assert(num_streams <= INT_MAX); - return (int)num_streams; -} - -static int darwin_free_streams (struct libusb_device_handle *dev_handle, unsigned char *endpoints, int num_endpoints) { - struct darwin_interface *cInterface; - UInt32 supportsStreams; - uint8_t pipeRef; - int rc; - - for (int i = 0 ; i < num_endpoints ; ++i) { - if (0 != (rc = ep_to_pipeRef (dev_handle, endpoints[i], &pipeRef, NULL, &cInterface))) - return rc; - - (*(cInterface->interface))->SupportsStreams (cInterface->interface, pipeRef, &supportsStreams); - if (0 == supportsStreams) - return LIBUSB_ERROR_INVALID_PARAM; - - rc = (*(cInterface->interface))->CreateStreams (cInterface->interface, pipeRef, 0); - if (kIOReturnSuccess != rc) - return darwin_to_libusb(rc); - } - - return LIBUSB_SUCCESS; -} -#endif - -const struct usbi_os_backend usbi_backend = { - .name = "Darwin", - .caps = 0, - .init = darwin_init, - .exit = darwin_exit, - .get_device_list = NULL, /* not needed */ - .get_device_descriptor = darwin_get_device_descriptor, - .get_active_config_descriptor = darwin_get_active_config_descriptor, - .get_config_descriptor = darwin_get_config_descriptor, - .hotplug_poll = darwin_hotplug_poll, - - .open = darwin_open, - .close = darwin_close, - .get_configuration = darwin_get_configuration, - .set_configuration = darwin_set_configuration, - .claim_interface = darwin_claim_interface, - .release_interface = darwin_release_interface, - - .set_interface_altsetting = darwin_set_interface_altsetting, - .clear_halt = darwin_clear_halt, - .reset_device = darwin_reset_device, - -#if InterfaceVersion >= 550 - .alloc_streams = darwin_alloc_streams, - .free_streams = darwin_free_streams, -#endif - - .kernel_driver_active = darwin_kernel_driver_active, - .detach_kernel_driver = darwin_detach_kernel_driver, - .attach_kernel_driver = darwin_attach_kernel_driver, - - .destroy_device = darwin_destroy_device, - - .submit_transfer = darwin_submit_transfer, - .cancel_transfer = darwin_cancel_transfer, - .clear_transfer_priv = darwin_clear_transfer_priv, - - .handle_transfer_completion = darwin_handle_transfer_completion, - - .clock_gettime = darwin_clock_gettime, - - .device_priv_size = sizeof(struct darwin_device_priv), - .device_handle_priv_size = sizeof(struct darwin_device_handle_priv), - .transfer_priv_size = sizeof(struct darwin_transfer_priv), -}; diff --git a/Externals/libusb/libusb/os/darwin_usb.h b/Externals/libusb/libusb/os/darwin_usb.h deleted file mode 100644 index 3d76baf1cf0b..000000000000 --- a/Externals/libusb/libusb/os/darwin_usb.h +++ /dev/null @@ -1,203 +0,0 @@ -/* - * darwin backend for libusb 1.0 - * Copyright © 2008-2019 Nathan Hjelm - * Copyright © 2019 Google LLC. All rights reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#if !defined(LIBUSB_DARWIN_H) -#define LIBUSB_DARWIN_H - -#include - -#include "libusbi.h" - -#include -#include -#include -#include - -/* IOUSBInterfaceInferface */ - -/* New in OS 10.12.0. */ -#if defined (kIOUSBInterfaceInterfaceID800) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 101200) - -#define usb_interface_t IOUSBInterfaceInterface800 -#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID800 -#define InterfaceVersion 800 - -/* New in OS 10.10.0. */ -#elif defined (kIOUSBInterfaceInterfaceID700) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 101000) - -#define usb_interface_t IOUSBInterfaceInterface700 -#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID700 -#define InterfaceVersion 700 - -/* New in OS 10.9.0. */ -#elif defined (kIOUSBInterfaceInterfaceID650) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1090) - -#define usb_interface_t IOUSBInterfaceInterface650 -#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID650 -#define InterfaceVersion 650 - -/* New in OS 10.8.2 but can't test deployment target to that granularity, so round up. */ -#elif defined (kIOUSBInterfaceInterfaceID550) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1090) - -#define usb_interface_t IOUSBInterfaceInterface550 -#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID550 -#define InterfaceVersion 550 - -/* New in OS 10.7.3 but can't test deployment target to that granularity, so round up. */ -#elif defined (kIOUSBInterfaceInterfaceID500) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1080) - -#define usb_interface_t IOUSBInterfaceInterface500 -#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID500 -#define InterfaceVersion 500 - -/* New in OS 10.5.0. */ -#elif defined (kIOUSBInterfaceInterfaceID300) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1050) - -#define usb_interface_t IOUSBInterfaceInterface300 -#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID300 -#define InterfaceVersion 300 - -/* New in OS 10.4.5 (or 10.4.6?) but can't test deployment target to that granularity, so round up. */ -#elif defined (kIOUSBInterfaceInterfaceID245) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1050) - -#define usb_interface_t IOUSBInterfaceInterface245 -#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID245 -#define InterfaceVersion 245 - -/* New in OS 10.4.0. */ -#elif defined (kIOUSBInterfaceInterfaceID220) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1040) - -#define usb_interface_t IOUSBInterfaceInterface220 -#define InterfaceInterfaceID kIOUSBInterfaceInterfaceID220 -#define InterfaceVersion 220 - -#else - -#error "IOUSBFamily is too old. Please upgrade your SDK and/or deployment target" - -#endif - -/* IOUSBDeviceInterface */ - -/* New in OS 10.9.0. */ -#if defined (kIOUSBDeviceInterfaceID650) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1090) - -#define usb_device_t IOUSBDeviceInterface650 -#define DeviceInterfaceID kIOUSBDeviceInterfaceID650 -#define DeviceVersion 650 - -/* New in OS 10.7.3 but can't test deployment target to that granularity, so round up. */ -#elif defined (kIOUSBDeviceInterfaceID500) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1080) - -#define usb_device_t IOUSBDeviceInterface500 -#define DeviceInterfaceID kIOUSBDeviceInterfaceID500 -#define DeviceVersion 500 - -/* New in OS 10.5.4 but can't test deployment target to that granularity, so round up. */ -#elif defined (kIOUSBDeviceInterfaceID320) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1060) - -#define usb_device_t IOUSBDeviceInterface320 -#define DeviceInterfaceID kIOUSBDeviceInterfaceID320 -#define DeviceVersion 320 - -/* New in OS 10.5.0. */ -#elif defined (kIOUSBDeviceInterfaceID300) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1050) - -#define usb_device_t IOUSBDeviceInterface300 -#define DeviceInterfaceID kIOUSBDeviceInterfaceID300 -#define DeviceVersion 300 - -/* New in OS 10.4.5 (or 10.4.6?) but can't test deployment target to that granularity, so round up. */ -#elif defined (kIOUSBDeviceInterfaceID245) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1050) - -#define usb_device_t IOUSBDeviceInterface245 -#define DeviceInterfaceID kIOUSBDeviceInterfaceID245 -#define DeviceVersion 245 - -/* New in OS 10.2.3 but can't test deployment target to that granularity, so round up. */ -#elif defined (kIOUSBDeviceInterfaceID197) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1030) - -#define usb_device_t IOUSBDeviceInterface197 -#define DeviceInterfaceID kIOUSBDeviceInterfaceID197 -#define DeviceVersion 197 - -#else - -#error "IOUSBFamily is too old. Please upgrade your SDK and/or deployment target" - -#endif - -#if !defined(IO_OBJECT_NULL) -#define IO_OBJECT_NULL ((io_object_t) 0) -#endif - -typedef IOCFPlugInInterface *io_cf_plugin_ref_t; -typedef IONotificationPortRef io_notification_port_t; - -/* private structures */ -struct darwin_cached_device { - struct list_head list; - IOUSBDeviceDescriptor dev_descriptor; - UInt32 location; - UInt64 parent_session; - UInt64 session; - USBDeviceAddress address; - char sys_path[21]; - usb_device_t **device; - int open_count; - UInt8 first_config, active_config, port; - int can_enumerate; - int refcount; - bool in_reenumerate; -}; - -struct darwin_device_priv { - struct darwin_cached_device *dev; -}; - -struct darwin_device_handle_priv { - bool is_open; - CFRunLoopSourceRef cfSource; - - struct darwin_interface { - usb_interface_t **interface; - uint8_t num_endpoints; - CFRunLoopSourceRef cfSource; - uint64_t frames[256]; - uint8_t endpoint_addrs[USB_MAXENDPOINTS]; - } interfaces[USB_MAXINTERFACES]; -}; - -struct darwin_transfer_priv { - /* Isoc */ - IOUSBIsocFrame *isoc_framelist; - int num_iso_packets; - - /* Control */ - IOUSBDevRequestTO req; - - /* Bulk */ - - /* Completion status */ - IOReturn result; - UInt32 size; -}; - -#endif diff --git a/Externals/libusb/libusb/os/haiku/Makefile.am b/Externals/libusb/libusb/os/haiku/Makefile.am deleted file mode 100644 index d6639bbf74f3..000000000000 --- a/Externals/libusb/libusb/os/haiku/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -ACLOCAL_AMFLAGS = -I m4 -AUTOMAKE_OPTIONS = subdir-objects -noinst_LTLIBRARIES = libhaikuusb.la -libhaikuusb_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/.. -I$(srcdir)/../.. -I$(srcdir)/../../.. -I$(srcdir)/../../../.. -libhaikuusb_la_SOURCES = haiku_usb_raw.cpp haiku_usb_backend.cpp haiku_pollfs.cpp haiku_usb_raw.h haiku_usb.h diff --git a/Externals/libusb/libusb/os/haiku/Makefile.in b/Externals/libusb/libusb/os/haiku/Makefile.in deleted file mode 100644 index 458466ae78ca..000000000000 --- a/Externals/libusb/libusb/os/haiku/Makefile.in +++ /dev/null @@ -1,810 +0,0 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2014 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ - $(am__configure_deps) $(am__DIST_COMMON) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libhaikuusb_la_LIBADD = -am_libhaikuusb_la_OBJECTS = libhaikuusb_la-haiku_usb_raw.lo \ - libhaikuusb_la-haiku_usb_backend.lo \ - libhaikuusb_la-haiku_pollfs.lo -libhaikuusb_la_OBJECTS = $(am_libhaikuusb_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libhaikuusb_la_SOURCES) -DIST_SOURCES = $(libhaikuusb_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -CSCOPE = cscope -AM_RECURSIVE_TARGETS = cscope -am__DIST_COMMON = $(srcdir)/Makefile.in compile config.guess \ - config.sub depcomp install-sh ltmain.sh missing -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__post_remove_distdir = $(am__remove_distdir) -DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best -DIST_TARGETS = dist-gzip -distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -ACLOCAL_AMFLAGS = -I m4 -AUTOMAKE_OPTIONS = subdir-objects -noinst_LTLIBRARIES = libhaikuusb.la -libhaikuusb_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/.. -I$(srcdir)/../.. -I$(srcdir)/../../.. -I$(srcdir)/../../../.. -libhaikuusb_la_SOURCES = haiku_usb_raw.cpp haiku_usb_backend.cpp haiku_pollfs.cpp haiku_usb_raw.h haiku_usb.h -all: all-am - -.SUFFIXES: -.SUFFIXES: .cpp .lo .o .obj -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libhaikuusb.la: $(libhaikuusb_la_OBJECTS) $(libhaikuusb_la_DEPENDENCIES) $(EXTRA_libhaikuusb_la_DEPENDENCIES) - $(AM_V_CXXLD)$(CXXLINK) $(libhaikuusb_la_OBJECTS) $(libhaikuusb_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhaikuusb_la-haiku_pollfs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhaikuusb_la-haiku_usb_backend.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhaikuusb_la-haiku_usb_raw.Plo@am__quote@ - -.cpp.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -libhaikuusb_la-haiku_usb_raw.lo: haiku_usb_raw.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhaikuusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhaikuusb_la-haiku_usb_raw.lo -MD -MP -MF $(DEPDIR)/libhaikuusb_la-haiku_usb_raw.Tpo -c -o libhaikuusb_la-haiku_usb_raw.lo `test -f 'haiku_usb_raw.cpp' || echo '$(srcdir)/'`haiku_usb_raw.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhaikuusb_la-haiku_usb_raw.Tpo $(DEPDIR)/libhaikuusb_la-haiku_usb_raw.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='haiku_usb_raw.cpp' object='libhaikuusb_la-haiku_usb_raw.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhaikuusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhaikuusb_la-haiku_usb_raw.lo `test -f 'haiku_usb_raw.cpp' || echo '$(srcdir)/'`haiku_usb_raw.cpp - -libhaikuusb_la-haiku_usb_backend.lo: haiku_usb_backend.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhaikuusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhaikuusb_la-haiku_usb_backend.lo -MD -MP -MF $(DEPDIR)/libhaikuusb_la-haiku_usb_backend.Tpo -c -o libhaikuusb_la-haiku_usb_backend.lo `test -f 'haiku_usb_backend.cpp' || echo '$(srcdir)/'`haiku_usb_backend.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhaikuusb_la-haiku_usb_backend.Tpo $(DEPDIR)/libhaikuusb_la-haiku_usb_backend.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='haiku_usb_backend.cpp' object='libhaikuusb_la-haiku_usb_backend.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhaikuusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhaikuusb_la-haiku_usb_backend.lo `test -f 'haiku_usb_backend.cpp' || echo '$(srcdir)/'`haiku_usb_backend.cpp - -libhaikuusb_la-haiku_pollfs.lo: haiku_pollfs.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhaikuusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libhaikuusb_la-haiku_pollfs.lo -MD -MP -MF $(DEPDIR)/libhaikuusb_la-haiku_pollfs.Tpo -c -o libhaikuusb_la-haiku_pollfs.lo `test -f 'haiku_pollfs.cpp' || echo '$(srcdir)/'`haiku_pollfs.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhaikuusb_la-haiku_pollfs.Tpo $(DEPDIR)/libhaikuusb_la-haiku_pollfs.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='haiku_pollfs.cpp' object='libhaikuusb_la-haiku_pollfs.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhaikuusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libhaikuusb_la-haiku_pollfs.lo `test -f 'haiku_pollfs.cpp' || echo '$(srcdir)/'`haiku_pollfs.cpp - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscope: cscope.files - test ! -s cscope.files \ - || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) -clean-cscope: - -rm -f cscope.files -cscope.files: clean-cscope cscopelist -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -rm -f cscope.out cscope.in.out cscope.po.out cscope.files - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__post_remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__post_remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__post_remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__post_remove_distdir) - -dist-tarZ: distdir - @echo WARNING: "Support for distribution archives compressed with" \ - "legacy program 'compress' is deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__post_remove_distdir) - -dist-shar: distdir - @echo WARNING: "Support for shar distribution archives is" \ - "deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__post_remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__post_remove_distdir) - -dist dist-all: - $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' - $(am__post_remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir) - chmod u+w $(distdir) - mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build/sub \ - && ../../configure \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - --srcdir=../.. --prefix="$$dc_install_base" \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__post_remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-am clean \ - clean-cscope clean-generic clean-libtool \ - clean-noinstLTLIBRARIES cscope cscopelist-am ctags ctags-am \ - dist dist-all dist-bzip2 dist-gzip dist-lzip dist-shar \ - dist-tarZ dist-xz dist-zip distcheck distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distcleancheck distdir distuninstallcheck dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/Externals/libusb/libusb/os/haiku/aclocal.m4 b/Externals/libusb/libusb/os/haiku/aclocal.m4 deleted file mode 100644 index ec062db1b44f..000000000000 --- a/Externals/libusb/libusb/os/haiku/aclocal.m4 +++ /dev/null @@ -1,1193 +0,0 @@ -# generated automatically by aclocal 1.15 -*- Autoconf -*- - -# Copyright (C) 1996-2014 Free Software Foundation, Inc. - -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically 'autoreconf'.])]) - -# Copyright (C) 2002-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.15' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.15], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.15])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to -# '$srcdir', '$srcdir/..', or '$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is '.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ([2.52])dnl - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], - [$1], [CXX], [depcc="$CXX" am_compiler_list=], - [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], - [$1], [UPC], [depcc="$UPC" am_compiler_list=], - [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES. -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE([dependency-tracking], [dnl -AS_HELP_STRING( - [--enable-dependency-tracking], - [do not reject slow dependency extractors]) -AS_HELP_STRING( - [--disable-dependency-tracking], - [speeds up one-time build])]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each '.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. -m4_define([AC_PROG_CC], -m4_defn([AC_PROG_CC]) -[_AM_PROG_CC_C_O -]) - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.65])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[AC_DIAGNOSE([obsolete], - [$0: two- and three-arguments forms are deprecated.]) -m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), - [ok:ok],, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) - AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) -AM_MISSING_PROG([AUTOCONF], [autoconf]) -AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) -AM_MISSING_PROG([AUTOHEADER], [autoheader]) -AM_MISSING_PROG([MAKEINFO], [makeinfo]) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -AC_SUBST([mkdir_p], ['$(MKDIR_P)']) -# We need awk for the "check" target (and possibly the TAP driver). The -# system "awk" is bad on some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES([CC])], - [m4_define([AC_PROG_CC], - m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES([CXX])], - [m4_define([AC_PROG_CXX], - m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES([OBJC])], - [m4_define([AC_PROG_OBJC], - m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], - [_AM_DEPENDENCIES([OBJCXX])], - [m4_define([AC_PROG_OBJCXX], - m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl -]) -AC_REQUIRE([AM_SILENT_RULES])dnl -dnl The testsuite driver may need to know about EXEEXT, so add the -dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This -dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) - fi -fi -dnl The trailing newline in this macro's definition is deliberate, for -dnl backward compatibility and to allow trailing 'dnl'-style comments -dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. -]) - -dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST([install_sh])]) - -# Copyright (C) 2003-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- -# From Jim Meyering - -# Copyright (C) 1996-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MAINTAINER_MODE([DEFAULT-MODE]) -# ---------------------------------- -# Control maintainer-specific portions of Makefiles. -# Default is to disable them, unless 'enable' is passed literally. -# For symmetry, 'disable' may be passed as well. Anyway, the user -# can override the default with the --enable/--disable switch. -AC_DEFUN([AM_MAINTAINER_MODE], -[m4_case(m4_default([$1], [disable]), - [enable], [m4_define([am_maintainer_other], [disable])], - [disable], [m4_define([am_maintainer_other], [enable])], - [m4_define([am_maintainer_other], [enable]) - m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) -AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode's default is 'disable' unless 'enable' is passed - AC_ARG_ENABLE([maintainer-mode], - [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], - am_maintainer_other[ make rules and dependencies not useful - (and sometimes confusing) to the casual installer])], - [USE_MAINTAINER_MODE=$enableval], - [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) - AC_MSG_RESULT([$USE_MAINTAINER_MODE]) - AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST([MAINT])dnl -] -) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it is modern enough. -# If it is, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - AC_MSG_WARN(['missing' script is too old or missing]) -fi -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# -------------------- -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) - -# _AM_SET_OPTIONS(OPTIONS) -# ------------------------ -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Copyright (C) 1999-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_PROG_CC_C_O -# --------------- -# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC -# to automatically call this. -AC_DEFUN([_AM_PROG_CC_C_O], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -AC_LANG_PUSH([C])dnl -AC_CACHE_CHECK( - [whether $CC understands -c and -o together], - [am_cv_prog_cc_c_o], - [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i]) -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -AC_LANG_POP([C])]) - -# For backward compatibility. -AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) - -# Copyright (C) 2001-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_RUN_LOG(COMMAND) -# ------------------- -# Run COMMAND, save the exit status in ac_status, and log it. -# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) -AC_DEFUN([AM_RUN_LOG], -[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; -esac - -# Do 'set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken - alias in your environment]) - fi - if test "$[2]" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT([yes]) -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi -AC_CONFIG_COMMANDS_PRE( - [AC_MSG_CHECKING([that generated files are newer than configure]) - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - AC_MSG_RESULT([done])]) -rm -f conftest.file -]) - -# Copyright (C) 2009-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_SILENT_RULES([DEFAULT]) -# -------------------------- -# Enable less verbose build rules; with the default set to DEFAULT -# ("yes" being less verbose, "no" or empty being verbose). -AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], [dnl -AS_HELP_STRING( - [--enable-silent-rules], - [less verbose build output (undo: "make V=1")]) -AS_HELP_STRING( - [--disable-silent-rules], - [verbose build output (undo: "make V=0")])dnl -]) -case $enable_silent_rules in @%:@ ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac -dnl -dnl A few 'make' implementations (e.g., NonStop OS and NextStep) -dnl do not support nested variable expansions. -dnl See automake bug#9928 and bug#10237. -am_make=${MAKE-make} -AC_CACHE_CHECK([whether $am_make supports nested variables], - [am_cv_make_support_nested_variables], - [if AS_ECHO([['TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using '$V' instead of '$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AC_SUBST([AM_V])dnl -AM_SUBST_NOTMAKE([AM_V])dnl -AC_SUBST([AM_DEFAULT_V])dnl -AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -AM_BACKSLASH='\' -AC_SUBST([AM_BACKSLASH])dnl -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -]) - -# Copyright (C) 2001-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor 'install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in "make install-strip", and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of 'v7', 'ustar', or 'pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -# -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' - -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - - [m4_case([$1], - [ustar], - [# The POSIX 1988 'ustar' format is defined with fixed-size fields. - # There is notably a 21 bits limit for the UID and the GID. In fact, - # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 - # and bug#13588). - am_max_uid=2097151 # 2^21 - 1 - am_max_gid=$am_max_uid - # The $UID and $GID variables are not portable, so we need to resort - # to the POSIX-mandated id(1) utility. Errors in the 'id' calls - # below are definitely unexpected, so allow the users to see them - # (that is, avoid stderr redirection). - am_uid=`id -u || echo unknown` - am_gid=`id -g || echo unknown` - AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) - if test $am_uid -le $am_max_uid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi - AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) - if test $am_gid -le $am_max_gid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi], - - [pax], - [], - - [m4_fatal([Unknown tar format])]) - - AC_MSG_CHECKING([how to create a $1 tar archive]) - - # Go ahead even if we have the value already cached. We do so because we - # need to set the values for the 'am__tar' and 'am__untar' variables. - _am_tools=${am_cv_prog_tar_$1-$_am_tools} - - for _am_tool in $_am_tools; do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works. - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi - done - rm -rf conftest.dir - - AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) - AC_MSG_RESULT([$am_cv_prog_tar_$1])]) - -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([m4/libtool.m4]) -m4_include([m4/ltoptions.m4]) -m4_include([m4/ltsugar.m4]) -m4_include([m4/ltversion.m4]) -m4_include([m4/lt~obsolete.m4]) diff --git a/Externals/libusb/libusb/os/haiku/compile b/Externals/libusb/libusb/os/haiku/compile deleted file mode 100644 index a85b723c7e67..000000000000 --- a/Externals/libusb/libusb/os/haiku/compile +++ /dev/null @@ -1,347 +0,0 @@ -#! /bin/sh -# Wrapper for compilers which do not understand '-c -o'. - -scriptversion=2012-10-14.11; # UTC - -# Copyright (C) 1999-2014 Free Software Foundation, Inc. -# Written by Tom Tromey . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -nl=' -' - -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent tools from complaining about whitespace usage. -IFS=" "" $nl" - -file_conv= - -# func_file_conv build_file lazy -# Convert a $build file to $host form and store it in $file -# Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. -func_file_conv () -{ - file=$1 - case $file in - / | /[!/]*) # absolute file, and not a UNC file - if test -z "$file_conv"; then - # lazily determine how to convert abs files - case `uname -s` in - MINGW*) - file_conv=mingw - ;; - CYGWIN*) - file_conv=cygwin - ;; - *) - file_conv=wine - ;; - esac - fi - case $file_conv/,$2, in - *,$file_conv,*) - ;; - mingw/*) - file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` - ;; - cygwin/*) - file=`cygpath -m "$file" || echo "$file"` - ;; - wine/*) - file=`winepath -w "$file" || echo "$file"` - ;; - esac - ;; - esac -} - -# func_cl_dashL linkdir -# Make cl look for libraries in LINKDIR -func_cl_dashL () -{ - func_file_conv "$1" - if test -z "$lib_path"; then - lib_path=$file - else - lib_path="$lib_path;$file" - fi - linker_opts="$linker_opts -LIBPATH:$file" -} - -# func_cl_dashl library -# Do a library search-path lookup for cl -func_cl_dashl () -{ - lib=$1 - found=no - save_IFS=$IFS - IFS=';' - for dir in $lib_path $LIB - do - IFS=$save_IFS - if $shared && test -f "$dir/$lib.dll.lib"; then - found=yes - lib=$dir/$lib.dll.lib - break - fi - if test -f "$dir/$lib.lib"; then - found=yes - lib=$dir/$lib.lib - break - fi - if test -f "$dir/lib$lib.a"; then - found=yes - lib=$dir/lib$lib.a - break - fi - done - IFS=$save_IFS - - if test "$found" != yes; then - lib=$lib.lib - fi -} - -# func_cl_wrapper cl arg... -# Adjust compile command to suit cl -func_cl_wrapper () -{ - # Assume a capable shell - lib_path= - shared=: - linker_opts= - for arg - do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - eat=1 - case $2 in - *.o | *.[oO][bB][jJ]) - func_file_conv "$2" - set x "$@" -Fo"$file" - shift - ;; - *) - func_file_conv "$2" - set x "$@" -Fe"$file" - shift - ;; - esac - ;; - -I) - eat=1 - func_file_conv "$2" mingw - set x "$@" -I"$file" - shift - ;; - -I*) - func_file_conv "${1#-I}" mingw - set x "$@" -I"$file" - shift - ;; - -l) - eat=1 - func_cl_dashl "$2" - set x "$@" "$lib" - shift - ;; - -l*) - func_cl_dashl "${1#-l}" - set x "$@" "$lib" - shift - ;; - -L) - eat=1 - func_cl_dashL "$2" - ;; - -L*) - func_cl_dashL "${1#-L}" - ;; - -static) - shared=false - ;; - -Wl,*) - arg=${1#-Wl,} - save_ifs="$IFS"; IFS=',' - for flag in $arg; do - IFS="$save_ifs" - linker_opts="$linker_opts $flag" - done - IFS="$save_ifs" - ;; - -Xlinker) - eat=1 - linker_opts="$linker_opts $2" - ;; - -*) - set x "$@" "$1" - shift - ;; - *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) - func_file_conv "$1" - set x "$@" -Tp"$file" - shift - ;; - *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) - func_file_conv "$1" mingw - set x "$@" "$file" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift - done - if test -n "$linker_opts"; then - linker_opts="-link$linker_opts" - fi - exec "$@" $linker_opts - exit 1 -} - -eat= - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: compile [--help] [--version] PROGRAM [ARGS] - -Wrapper for compilers which do not understand '-c -o'. -Remove '-o dest.o' from ARGS, run PROGRAM with the remaining -arguments, and rename the output as expected. - -If you are trying to build a whole package this is not the -right script to run: please start by reading the file 'INSTALL'. - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "compile $scriptversion" - exit $? - ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) - func_cl_wrapper "$@" # Doesn't return... - ;; -esac - -ofile= -cfile= - -for arg -do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - # So we strip '-o arg' only if arg is an object. - eat=1 - case $2 in - *.o | *.obj) - ofile=$2 - ;; - *) - set x "$@" -o "$2" - shift - ;; - esac - ;; - *.c) - cfile=$1 - set x "$@" "$1" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift -done - -if test -z "$ofile" || test -z "$cfile"; then - # If no '-o' option was seen then we might have been invoked from a - # pattern rule where we don't need one. That is ok -- this is a - # normal compilation that the losing compiler can handle. If no - # '.c' file was seen then we are probably linking. That is also - # ok. - exec "$@" -fi - -# Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` - -# Create the lock directory. -# Note: use '[/\\:.-]' here to ensure that we don't use the same name -# that we are using for the .o file. Also, base the name on the expected -# object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d -while true; do - if mkdir "$lockdir" >/dev/null 2>&1; then - break - fi - sleep 1 -done -# FIXME: race condition here if user kills between mkdir and trap. -trap "rmdir '$lockdir'; exit 1" 1 2 15 - -# Run the compile. -"$@" -ret=$? - -if test -f "$cofile"; then - test "$cofile" = "$ofile" || mv "$cofile" "$ofile" -elif test -f "${cofile}bj"; then - test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" -fi - -rmdir "$lockdir" -exit $ret - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/Externals/libusb/libusb/os/haiku/config.guess b/Externals/libusb/libusb/os/haiku/config.guess deleted file mode 100644 index dbfb9786cb6f..000000000000 --- a/Externals/libusb/libusb/os/haiku/config.guess +++ /dev/null @@ -1,1421 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright 1992-2015 Free Software Foundation, Inc. - -timestamp='2015-01-01' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that -# program. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). -# -# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -# -# Please send patches to . - - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright 1992-2015 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -case "${UNAME_SYSTEM}" in -Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu - - eval $set_cc_for_build - cat <<-EOF > $dummy.c - #include - #if defined(__UCLIBC__) - LIBC=uclibc - #elif defined(__dietlibc__) - LIBC=dietlibc - #else - LIBC=gnu - #endif - EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` - ;; -esac - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:Bitrig:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/lslpp ] ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | - awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - *:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - aarch64_be:Linux:*:*) - UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi - else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf - fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } - ;; - openrisc*:Linux:*:*) - echo or1k-unknown-linux-${LIBC} - exit ;; - or32:Linux:*:* | or1k*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} - exit ;; - ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-${LIBC} - exit ;; - ppcle:Linux:*:*) - echo powerpcle-unknown-linux-${LIBC} - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux-${LIBC} - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} - exit ;; - x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval $set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc - fi - if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - fi - elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 - fi - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; - NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; - x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx - exit ;; -esac - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/Externals/libusb/libusb/os/haiku/config.sub b/Externals/libusb/libusb/os/haiku/config.sub deleted file mode 100644 index 6467c95afecc..000000000000 --- a/Externals/libusb/libusb/os/haiku/config.sub +++ /dev/null @@ -1,1807 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright 1992-2015 Free Software Foundation, Inc. - -timestamp='2015-01-01' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that -# program. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). - - -# Please send patches to . -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright 1992-2015 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - android-linux) - os=-linux-android - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze*) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*178) - os=-lynxos178 - ;; - -lynx*5) - os=-lynxos5 - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ - | avr | avr32 \ - | be32 | be64 \ - | bfin \ - | c4x | c8051 | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv | ft32 \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | k1om \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa32r6 | mipsisa32r6el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64r6 | mipsisa64r6el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 | nios2eb | nios2el \ - | ns16k | ns32k \ - | open8 | or1k | or1knd | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | riscv32 | riscv64 \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | visium \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - leon|leon[3-9]) - basic_machine=sparc-$basic_machine - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none - ;; - xscaleeb) - basic_machine=armeb-unknown - ;; - - xscaleel) - basic_machine=armel-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | k1om-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ - | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa32r6-* | mipsisa32r6el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64r6-* | mipsisa64r6el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipsr5900-* | mipsr5900el-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* | nios2eb-* | nios2el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | or1k*-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | visium-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - leon-*|leon[3-9]-*) - basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze*) - basic_machine=microblaze-xilinx - ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; - mingw32) - basic_machine=i686-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - moxiebox) - basic_machine=moxie-unknown - os=-moxiebox - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i686-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc - os=-rdos - ;; - rdos32) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tile*) - basic_machine=$basic_machine-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux - ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* | -plan9* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -nacl*) - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - c8051-*) - os=-elf - ;; - hexagon-*) - os=-elf - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -cnk*|-aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/Externals/libusb/libusb/os/haiku/configure b/Externals/libusb/libusb/os/haiku/configure deleted file mode 100644 index cbef73cbd39e..000000000000 --- a/Externals/libusb/libusb/os/haiku/configure +++ /dev/null @@ -1,17579 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for haikuusb 1.0. -# -# -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='haikuusb' -PACKAGE_TARNAME='haikuusb' -PACKAGE_VERSION='1.0' -PACKAGE_STRING='haikuusb 1.0' -PACKAGE_BUGREPORT='' -PACKAGE_URL='' - -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -CXXCPP -am__fastdepCXX_FALSE -am__fastdepCXX_TRUE -CXXDEPMODE -ac_ct_CXX -CXXFLAGS -CXX -CPP -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -ac_ct_AR -AR -DLLTOOL -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -LIBTOOL -MAINT -MAINTAINER_MODE_FALSE -MAINTAINER_MODE_TRUE -AM_BACKSLASH -AM_DEFAULT_VERBOSITY -AM_DEFAULT_V -AM_V -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_silent_rules -enable_maintainer_mode -enable_shared -enable_static -with_pic -enable_fast_install -enable_dependency_tracking -with_gnu_ld -with_sysroot -enable_libtool_lock -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP -CXX -CXXFLAGS -CCC -CXXCPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures haikuusb 1.0 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/haikuusb] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of haikuusb 1.0:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-silent-rules less verbose build output (undo: "make V=1") - --disable-silent-rules verbose build output (undo: "make V=0") - --enable-maintainer-mode - enable make rules and dependencies not useful (and - sometimes confusing) to the casual installer - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build - --disable-libtool-lock avoid locking (might break parallel builds) - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot=DIR Search for dependent libraries within DIR - (or the compiler's sysroot if not specified). - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CPP C preprocessor - CXX C++ compiler command - CXXFLAGS C++ compiler flags - CXXCPP C++ preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -haikuusb configure 1.0 -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_cpp - -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by haikuusb $as_me 1.0, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -am__api_version='1.15' - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; -esac - -# Do 'set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken - alias in your environment" "$LINENO" 5 - fi - if test "$2" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi - -rm -f conftest.file - -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -# Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : - enableval=$enable_silent_rules; -fi - -case $enable_silent_rules in # ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=1;; -esac -am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } -if test $am_cv_make_support_nested_variables = yes; then - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AM_BACKSLASH='\' - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='haikuusb' - VERSION='1.0' - - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -mkdir_p='$(MKDIR_P)' - -# We need awk for the "check" target (and possibly the TAP driver). The -# system "awk" is bad on some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar pax cpio none' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' - - - - - - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 - fi -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 -$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } - # Check whether --enable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then : - enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval -else - USE_MAINTAINER_MODE=no -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 -$as_echo "$USE_MAINTAINER_MODE" >&6; } - if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - - MAINT=$MAINTAINER_MODE_TRUE - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4.2' -macro_revision='1.3337' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case "$ECHO" in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 - ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_FGREP" || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then - reload_cmds=false - fi - ;; - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 -$as_echo "${with_sysroot}" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD="${LD-ld}_sol2" - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&5 - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test $_lt_result -eq 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&5 - elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for lt_pkg in $withval; do - IFS="$lt_save_ifs" - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - if test -n "$lt_prog_compiler_pic"; then - lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ F* | *Sun*Fortran*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Intel*\ [CF]*Compiler*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - *Portland\ Group*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test "$lt_cv_irix_exported_symbol" = yes; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -depcc="$CXX" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CXX_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CXX_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CXX_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CXX_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } -CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then - am__fastdepCXX_TRUE= - am__fastdepCXX_FALSE='#' -else - am__fastdepCXX_TRUE='#' - am__fastdepCXX_FALSE= -fi - - - - -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf - - if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CXXCPP=$CXXCPP - -fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -else - _lt_caught_CXX_error=yes -fi - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -compiler_needs_object_CXX=no -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_direct_absolute_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_shlibpath_var_CXX=unsupported -hardcode_automatic_CXX=no -inherit_rpath_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -reload_flag_CXX=$reload_flag -reload_cmds_CXX=$reload_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - - # save warnings/boilerplate of simple test code - ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - - ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - compiler_CXX=$CC - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_CXX= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - ld_shlibs_CXX=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec_CXX='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - always_export_symbols_CXX=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_CXX='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' ${wl}-bernotok' - allow_undefined_flag_CXX=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' - fi - archive_cmds_need_lc_CXX=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs_CXX=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_CXX=' ' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=yes - file_list_spec_CXX='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' - enable_shared_with_static_runtimes_CXX=yes - # Don't use ranlib - old_postinstall_cmds_CXX='chmod 644 $oldlib' - postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=no - enable_shared_with_static_runtimes_CXX=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec_CXX='' - fi - link_all_deplibs_CXX=yes - allow_undefined_flag_CXX="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - if test "$lt_cv_apple_cc_single_mod" != "yes"; then - archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi - - else - ld_shlibs_CXX=no - fi - - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - ld_shlibs_CXX=no - ;; - - freebsd-elf*) - archive_cmds_need_lc_CXX=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - - gnu*) - ;; - - haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs_CXX=yes - ;; - - hpux9*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='${wl}-E' - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - export_dynamic_flag_spec_CXX='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - *) - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - interix[3-9]*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - link_all_deplibs_CXX=yes - ;; - esac - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - inherit_rpath_CXX=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [1-5].* | *pgcpp\ [1-5].*) - prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object_CXX=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - ld_shlibs_CXX=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - ld_shlibs_CXX=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - hardcode_direct_absolute_CXX=yes - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='${wl}-E' - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - ld_shlibs_CXX=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - hardcode_libdir_separator_CXX=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - case $host in - osf3*) - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - ;; - *) - allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - ;; - esac - - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - archive_cmds_need_lc_CXX=yes - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_shlibpath_var_CXX=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - no_undefined_flag_CXX=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='${wl}-z,text' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_CXX='${wl}-z,text' - allow_undefined_flag_CXX='${wl}-z,nodefs' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" - reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } - test "$ld_shlibs_CXX" = no && can_build_shared=no - - GCC_CXX="$GXX" - LD_CXX="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - # Dependencies to place before and after the object being linked: -predep_objects_CXX= -postdep_objects_CXX= -predeps_CXX= -postdeps_CXX= -compiler_lib_search_path_CXX= - -cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF - - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX="${prev}${p}" - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX="${prev}${p}" - else - postdeps_CXX="${postdeps_CXX} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX="$p" - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX="$p" - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -case $host_os in -interix[3-9]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - predep_objects_CXX= - postdep_objects_CXX= - postdeps_CXX= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac - - -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac - compiler_lib_search_dirs_CXX= -if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - - - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic_CXX='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_CXX='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - lt_prog_compiler_pic_CXX= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static_CXX= - ;; - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix[4-9]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - dgux*) - case $cc_basename in - ec++*) - lt_prog_compiler_pic_CXX='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-qpic' - lt_prog_compiler_static_CXX='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - lt_prog_compiler_wl_CXX='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - lt_prog_compiler_pic_CXX='-pic' - ;; - cxx*) - # Digital/Compaq C++ - lt_prog_compiler_wl_CXX='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - lt_prog_compiler_pic_CXX='-pic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - lcc*) - # Lucid - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } -lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } -if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_CXX=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_CXX=yes - fi - else - lt_cv_prog_compiler_static_works_CXX=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then - : -else - lt_prog_compiler_static_CXX= -fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - case $host_os in - aix[4-9]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) - exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - ;; - esac - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test "$ld_shlibs_CXX" = no && can_build_shared=no - -with_gnu_ld_CXX=$with_gnu_ld - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_CXX" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_CXX=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - pic_flag=$lt_prog_compiler_pic_CXX - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_CXX - allow_undefined_flag_CXX= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc_CXX=no - else - lt_cv_archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } - archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action_CXX= -if test -n "$hardcode_libdir_flag_spec_CXX" || - test -n "$runpath_var_CXX" || - test "X$hardcode_automatic_CXX" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct_CXX" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && - test "$hardcode_minus_L_CXX" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test "$hardcode_action_CXX" = relink || - test "$inherit_rpath_CXX" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -ac_config_files="$ac_config_files Makefile" - - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -ac_script=' -:mline -/\\$/{ - N - s,\\\n,, - b mline -} -t clear -:clear -s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g -t quote -s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g -t quote -b any -:quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g -s/\$/$$/g -H -:any -${ - g - s/^\n// - s/\n/ /g - p -} -' -DEFS=`sed -n "$ac_script" confdefs.h` - - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by haikuusb $as_me 1.0, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - -Configuration files: -$config_files - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -haikuusb config.status 1.0 -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h | --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' -predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' -predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' -postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' -reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' -reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -PATH_SEPARATOR \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -nm_file_list_spec \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib \ -compiler_lib_search_dirs \ -predep_objects \ -postdep_objects \ -predeps \ -postdeps \ -compiler_lib_search_path \ -LD_CXX \ -reload_flag_CXX \ -compiler_CXX \ -lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_pic_CXX \ -lt_prog_compiler_wl_CXX \ -lt_prog_compiler_static_CXX \ -lt_cv_prog_compiler_c_o_CXX \ -export_dynamic_flag_spec_CXX \ -whole_archive_flag_spec_CXX \ -compiler_needs_object_CXX \ -with_gnu_ld_CXX \ -allow_undefined_flag_CXX \ -no_undefined_flag_CXX \ -hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_separator_CXX \ -exclude_expsyms_CXX \ -include_expsyms_CXX \ -file_list_spec_CXX \ -compiler_lib_search_dirs_CXX \ -predep_objects_CXX \ -postdep_objects_CXX \ -predeps_CXX \ -postdeps_CXX \ -compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec \ -reload_cmds_CXX \ -old_archive_cmds_CXX \ -old_archive_from_new_cmds_CXX \ -old_archive_from_expsyms_cmds_CXX \ -archive_cmds_CXX \ -archive_expsym_cmds_CXX \ -module_cmds_CXX \ -module_expsym_cmds_CXX \ -export_symbols_cmds_CXX \ -prelink_cmds_CXX \ -postlink_cmds_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - - -eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="CXX " - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and in which our libraries should be installed. -lt_sysroot=$lt_sysroot - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -postdeps=$lt_postdeps - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - if test x"$xsi_shell" = xyes; then - sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ -func_dirname ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_basename ()$/,/^} # func_basename /c\ -func_basename ()\ -{\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ -func_dirname_and_basename ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ -func_stripname ()\ -{\ -\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ -\ # positional parameters, so assign one to ordinary parameter first.\ -\ func_stripname_result=${3}\ -\ func_stripname_result=${func_stripname_result#"${1}"}\ -\ func_stripname_result=${func_stripname_result%"${2}"}\ -} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ -func_split_long_opt ()\ -{\ -\ func_split_long_opt_name=${1%%=*}\ -\ func_split_long_opt_arg=${1#*=}\ -} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ -func_split_short_opt ()\ -{\ -\ func_split_short_opt_arg=${1#??}\ -\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ -} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ -func_lo2o ()\ -{\ -\ case ${1} in\ -\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ -\ *) func_lo2o_result=${1} ;;\ -\ esac\ -} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_xform ()$/,/^} # func_xform /c\ -func_xform ()\ -{\ - func_xform_result=${1%.*}.lo\ -} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_arith ()$/,/^} # func_arith /c\ -func_arith ()\ -{\ - func_arith_result=$(( $* ))\ -} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_len ()$/,/^} # func_len /c\ -func_len ()\ -{\ - func_len_result=${#1}\ -} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - -fi - -if test x"$lt_shell_append" = xyes; then - sed -e '/^func_append ()$/,/^} # func_append /c\ -func_append ()\ -{\ - eval "${1}+=\\${2}"\ -} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ -func_append_quoted ()\ -{\ -\ func_quote_for_eval "${2}"\ -\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ -} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 -$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} -fi - - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_CXX -reload_cmds=$lt_reload_cmds_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_CXX - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff --git a/Externals/libusb/libusb/os/haiku/configure.ac b/Externals/libusb/libusb/os/haiku/configure.ac deleted file mode 100644 index abae783fae08..000000000000 --- a/Externals/libusb/libusb/os/haiku/configure.ac +++ /dev/null @@ -1,8 +0,0 @@ -AC_INIT([haikuusb], [1.0]) -AM_INIT_AUTOMAKE([no-define foreign]) -AM_MAINTAINER_MODE -LT_INIT -AC_PROG_CXX -AC_CONFIG_FILES([Makefile]) -AC_CONFIG_MACRO_DIR([m4]) -AC_OUTPUT diff --git a/Externals/libusb/libusb/os/haiku/depcomp b/Externals/libusb/libusb/os/haiku/depcomp deleted file mode 100644 index fc98710e2a1d..000000000000 --- a/Externals/libusb/libusb/os/haiku/depcomp +++ /dev/null @@ -1,791 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2013-05-30.07; # UTC - -# Copyright (C) 1999-2014 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva . - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by 'PROGRAMS ARGS'. - object Object file output by 'PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputting dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -# Get the directory component of the given path, and save it in the -# global variables '$dir'. Note that this directory component will -# be either empty or ending with a '/' character. This is deliberate. -set_dir_from () -{ - case $1 in - */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; - *) dir=;; - esac -} - -# Get the suffix-stripped basename of the given path, and save it the -# global variable '$base'. -set_base_from () -{ - base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` -} - -# If no dependency file was actually created by the compiler invocation, -# we still have to create a dummy depfile, to avoid errors with the -# Makefile "include basename.Plo" scheme. -make_dummy_depfile () -{ - echo "#dummy" > "$depfile" -} - -# Factor out some common post-processing of the generated depfile. -# Requires the auxiliary global variable '$tmpdepfile' to be set. -aix_post_process_depfile () -{ - # If the compiler actually managed to produce a dependency file, - # post-process it. - if test -f "$tmpdepfile"; then - # Each line is of the form 'foo.o: dependency.h'. - # Do two passes, one to just change these to - # $object: dependency.h - # and one to simply output - # dependency.h: - # which is needed to avoid the deleted-header problem. - { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" - sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" - } > "$depfile" - rm -f "$tmpdepfile" - else - make_dummy_depfile - fi -} - -# A tabulation character. -tab=' ' -# A newline character. -nl=' -' -# Character ranges might be problematic outside the C locale. -# These definitions help. -upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ -lower=abcdefghijklmnopqrstuvwxyz -digits=0123456789 -alpha=${upper}${lower} - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Avoid interferences from the environment. -gccflag= dashmflag= - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvisualcpp -fi - -if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 -fi - -if test "$depmode" = xlc; then - # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. - gccflag=-qmakedep=gcc,-MF - depmode=gcc -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. -## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. -## (see the conditional assignment to $gccflag above). -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). Also, it might not be -## supported by the other compilers which use the 'gcc' depmode. -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # The second -e expression handles DOS-style file names with drive - # letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the "deleted header file" problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. -## Some versions of gcc put a space before the ':'. On the theory -## that the space means something, we add a space to the output as -## well. hp depmode also adds that space, but also prefixes the VPATH -## to the object. Take care to not repeat it in the output. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like '#:fec' to the end of the - # dependency line. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ - | tr "$nl" ' ' >> "$depfile" - echo >> "$depfile" - # The second pass generates a dummy entry for each header file. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - make_dummy_depfile - fi - rm -f "$tmpdepfile" - ;; - -xlc) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts '$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - set_dir_from "$object" - set_base_from "$object" - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - aix_post_process_depfile - ;; - -tcc) - # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 - # FIXME: That version still under development at the moment of writing. - # Make that this statement remains true also for stable, released - # versions. - # It will wrap lines (doesn't matter whether long or short) with a - # trailing '\', as in: - # - # foo.o : \ - # foo.c \ - # foo.h \ - # - # It will put a trailing '\' even on the last line, and will use leading - # spaces rather than leading tabs (at least since its commit 0394caf7 - # "Emit spaces for -MD"). - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. - # We have to change lines of the first kind to '$object: \'. - sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" - # And for each line of the second kind, we have to emit a 'dep.h:' - # dummy dependency, to avoid the deleted-header problem. - sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" - rm -f "$tmpdepfile" - ;; - -## The order of this option in the case statement is important, since the -## shell code in configure will try each of these formats in the order -## listed in this file. A plain '-MD' option would be understood by many -## compilers, so we must ensure this comes after the gcc and icc options. -pgcc) - # Portland's C compiler understands '-MD'. - # Will always output deps to 'file.d' where file is the root name of the - # source file under compilation, even if file resides in a subdirectory. - # The object file name does not affect the name of the '.d' file. - # pgcc 10.2 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using '\' : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - set_dir_from "$object" - # Use the source, not the object, to determine the base name, since - # that's sadly what pgcc will do too. - set_base_from "$source" - tmpdepfile=$base.d - - # For projects that build the same source file twice into different object - # files, the pgcc approach of using the *source* file root name can cause - # problems in parallel builds. Use a locking strategy to avoid stomping on - # the same $tmpdepfile. - lockdir=$base.d-lock - trap " - echo '$0: caught signal, cleaning up...' >&2 - rmdir '$lockdir' - exit 1 - " 1 2 13 15 - numtries=100 - i=$numtries - while test $i -gt 0; do - # mkdir is a portable test-and-set. - if mkdir "$lockdir" 2>/dev/null; then - # This process acquired the lock. - "$@" -MD - stat=$? - # Release the lock. - rmdir "$lockdir" - break - else - # If the lock is being held by a different process, wait - # until the winning process is done or we timeout. - while test -d "$lockdir" && test $i -gt 0; do - sleep 1 - i=`expr $i - 1` - done - fi - i=`expr $i - 1` - done - trap - 1 2 13 15 - if test $i -le 0; then - echo "$0: failed to acquire lock after $numtries attempts" >&2 - echo "$0: check lockdir '$lockdir'" >&2 - exit 1 - fi - - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - set_dir_from "$object" - set_base_from "$object" - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" - # Add 'dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - make_dummy_depfile - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in 'foo.d' instead, so we check for that too. - # Subdirectories are respected. - set_dir_from "$object" - set_base_from "$object" - - if test "$libtool" = yes; then - # Libtool generates 2 separate objects for the 2 libraries. These - # two compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir$base.o.d # libtool 1.5 - tmpdepfile2=$dir.libs/$base.o.d # Likewise. - tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - # Same post-processing that is required for AIX mode. - aix_post_process_depfile - ;; - -msvc7) - if test "$libtool" = yes; then - showIncludes=-Wc,-showIncludes - else - showIncludes=-showIncludes - fi - "$@" $showIncludes > "$tmpdepfile" - stat=$? - grep -v '^Note: including file: ' "$tmpdepfile" - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # The first sed program below extracts the file names and escapes - # backslashes for cygpath. The second sed program outputs the file - # name when reading, but also accumulates all include files in the - # hold buffer in order to output them again at the end. This only - # works with sed implementations that can handle large buffers. - sed < "$tmpdepfile" -n ' -/^Note: including file: *\(.*\)/ { - s//\1/ - s/\\/\\\\/g - p -}' | $cygpath_u | sort -u | sed -n ' -s/ /\\ /g -s/\(.*\)/'"$tab"'\1 \\/p -s/.\(.*\) \\/\1:/ -H -$ { - s/.*/'"$tab"'/ - G - p -}' >> "$depfile" - echo >> "$depfile" # make sure the fragment doesn't end with a backslash - rm -f "$tmpdepfile" - ;; - -msvc7msys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for ':' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. - "$@" $dashmflag | - sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this sed invocation - # correctly. Breaking it into two sed invocations is a workaround. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - # makedepend may prepend the VPATH from the source file name to the object. - # No need to regex-escape $object, excess matching of '.' is harmless. - sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process the last invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed '1,2d' "$tmpdepfile" \ - | tr ' ' "$nl" \ - | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E \ - | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - | sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" - echo "$tab" >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/Externals/libusb/libusb/os/haiku/haiku_pollfs.cpp b/Externals/libusb/libusb/os/haiku/haiku_pollfs.cpp deleted file mode 100644 index 6781de42888a..000000000000 --- a/Externals/libusb/libusb/os/haiku/haiku_pollfs.cpp +++ /dev/null @@ -1,378 +0,0 @@ -/* - * Copyright 2007-2008, Haiku Inc. All rights reserved. - * Distributed under the terms of the MIT License. - * - * Authors: - * Michael Lotz - */ - -#include "haiku_usb.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -class WatchedEntry { -public: - WatchedEntry(BMessenger*, entry_ref*); - ~WatchedEntry(); - bool EntryCreated(entry_ref* ref); - bool EntryRemoved(ino_t node); - bool InitCheck(); - -private: - BMessenger* fMessenger; - node_ref fNode; - bool fIsDirectory; - USBDevice* fDevice; - WatchedEntry* fEntries; - WatchedEntry* fLink; - bool fInitCheck; -}; - - -class RosterLooper : public BLooper { -public: - RosterLooper(USBRoster*); - void Stop(); - virtual void MessageReceived(BMessage*); - bool InitCheck(); - -private: - USBRoster* fRoster; - WatchedEntry* fRoot; - BMessenger* fMessenger; - bool fInitCheck; -}; - - -WatchedEntry::WatchedEntry(BMessenger* messenger, entry_ref* ref) - : fMessenger(messenger), - fIsDirectory(false), - fDevice(NULL), - fEntries(NULL), - fLink(NULL), - fInitCheck(false) -{ - BEntry entry(ref); - entry.GetNodeRef(&fNode); - - BDirectory directory; - if (entry.IsDirectory() && directory.SetTo(ref) >= B_OK) { - - fIsDirectory = true; - - while (directory.GetNextEntry(&entry) >= B_OK) { - if (entry.GetRef(ref) < B_OK) - continue; - - WatchedEntry* child = new(std::nothrow) WatchedEntry(fMessenger, ref); - if (child == NULL) - continue; - if (child->InitCheck() == false) - { - delete child; - continue; - } - - - child->fLink = fEntries; - fEntries = child; - } - - watch_node(&fNode, B_WATCH_DIRECTORY, *fMessenger); - - } else { - if (strncmp(ref->name, "raw", 3) == 0) - return; - - BPath path, parent_path; - entry.GetPath(&path); - fDevice = new(std::nothrow) USBDevice(path.Path()); - if (fDevice != NULL && fDevice->InitCheck() == true) { - // Add this new device to each active context's device list - struct libusb_context *ctx; - unsigned long session_id = (unsigned long)&fDevice; - - usbi_mutex_lock(&active_contexts_lock); - list_for_each_entry(ctx, &active_contexts_list, list, struct libusb_context) { - - struct libusb_device* dev = usbi_get_device_by_session_id(ctx, session_id); - if (dev) { - usbi_dbg("using previously allocated device with location %lu", session_id); - libusb_unref_device(dev); - continue; - } - usbi_dbg("allocating new device with location %lu" ,session_id); - dev = usbi_alloc_device(ctx, session_id); - if (!dev) { - usbi_dbg("device allocation failed"); - continue; - } - *((USBDevice**)dev->os_priv) = fDevice; - - // Calculate pseudo-device-address - int addr,tmp; - if (strcmp(path.Leaf(), "hub") == 0) - { - tmp=100; //Random Number - } - else - { - sscanf(path.Leaf(), "%d", &tmp); - } - addr = tmp + 1; - path.GetParent(&parent_path); - while(strcmp(parent_path.Leaf(),"usb") != 0) - { - sscanf(parent_path.Leaf(), "%d", &tmp); - addr += tmp + 1; - parent_path.GetParent(&parent_path); - } - sscanf(path.Path(), "/dev/bus/usb/%d", &dev->bus_number); - (dev->device_address) = addr - (dev->bus_number + 1); - - if(usbi_sanitize_device(dev) < 0) - { - usbi_dbg("device sanitization failed"); - libusb_unref_device(dev); - continue; - } - usbi_connect_device(dev); - } - usbi_mutex_unlock(&active_contexts_lock); - } else if (fDevice) { - delete fDevice; - fDevice = NULL; - return; - } - } - fInitCheck = true; -} - - -WatchedEntry::~WatchedEntry() -{ - if (fIsDirectory) { - watch_node(&fNode, B_STOP_WATCHING, *fMessenger); - - WatchedEntry* child = fEntries; - while (child) { - WatchedEntry *next = child->fLink; - delete child; - child = next; - } - } - - if (fDevice) { - // Remove this device from each active context's device list - struct libusb_context *ctx; - struct libusb_device *dev; - unsigned long session_id = (unsigned long)&fDevice; - - usbi_mutex_lock(&active_contexts_lock); - list_for_each_entry(ctx, &active_contexts_list, list, struct libusb_context) { - dev = usbi_get_device_by_session_id (ctx, session_id); - if (dev != NULL) { - usbi_disconnect_device (dev); - libusb_unref_device(dev); - } else { - usbi_dbg("device with location %lu not found", session_id); - } - } - usbi_mutex_static_unlock(&active_contexts_lock); - delete fDevice; - } -} - - -bool -WatchedEntry::EntryCreated(entry_ref *ref) -{ - if (!fIsDirectory) - return false; - - if (ref->directory != fNode.node) { - WatchedEntry* child = fEntries; - while (child) { - if (child->EntryCreated(ref)) - return true; - child = child->fLink; - } - return false; - } - - WatchedEntry* child = new(std::nothrow) WatchedEntry(fMessenger, ref); - if (child == NULL) - return false; - child->fLink = fEntries; - fEntries = child; - return true; -} - - -bool -WatchedEntry::EntryRemoved(ino_t node) -{ - if (!fIsDirectory) - return false; - - WatchedEntry* child = fEntries; - WatchedEntry* lastChild = NULL; - while (child) { - if (child->fNode.node == node) { - if (lastChild) - lastChild->fLink = child->fLink; - else - fEntries = child->fLink; - delete child; - return true; - } - - if (child->EntryRemoved(node)) - return true; - - lastChild = child; - child = child->fLink; - } - return false; -} - - -bool -WatchedEntry::InitCheck() -{ - return fInitCheck; -} - - -RosterLooper::RosterLooper(USBRoster* roster) - : BLooper("LibusbRoster Looper"), - fRoster(roster), - fRoot(NULL), - fMessenger(NULL), - fInitCheck(false) -{ - BEntry entry("/dev/bus/usb"); - if (!entry.Exists()) { - usbi_err(NULL,"usb_raw not published"); - return; - } - - Run(); - fMessenger = new(std::nothrow) BMessenger(this); - if (fMessenger == NULL) - { - usbi_err(NULL,"error creating BMessenger object"); - return; - } - - if(Lock()) { - entry_ref ref; - entry.GetRef(&ref); - fRoot = new(std::nothrow) WatchedEntry(fMessenger, &ref); - Unlock(); - if (fRoot == NULL) - { - return; - } - if (fRoot->InitCheck() == false) - { - delete fRoot; - return; - } - } - fInitCheck = true; -} - - -void -RosterLooper::Stop() -{ - Lock(); - delete fRoot; - delete fMessenger; - Quit(); -} - - -void -RosterLooper::MessageReceived(BMessage *message) -{ - int32 opcode; - if (message->FindInt32("opcode", &opcode) < B_OK) - return; - - switch (opcode) { - case B_ENTRY_CREATED: { - dev_t device; - ino_t directory; - const char* name; - if (message->FindInt32("device", &device) < B_OK - || message->FindInt64("directory", &directory) < B_OK - || message->FindString("name", &name) < B_OK) - break; - - entry_ref ref(device, directory, name); - fRoot->EntryCreated(&ref); - break; - } - case B_ENTRY_REMOVED: { - ino_t node; - if (message->FindInt64("node", &node) < B_OK) - break; - fRoot->EntryRemoved(node); - break; - } - } -} - - -bool -RosterLooper::InitCheck() -{ - return fInitCheck; -} - - -USBRoster::USBRoster() - : fLooper(NULL) -{ -} - - -USBRoster::~USBRoster() -{ - Stop(); -} - - -int -USBRoster::Start() -{ - if(fLooper) - return LIBUSB_SUCCESS; - - fLooper = new(std::nothrow) RosterLooper(this); - if (fLooper == NULL || ((RosterLooper*)fLooper)->InitCheck() == false) - return LIBUSB_ERROR_OTHER; - return LIBUSB_SUCCESS; -} - - -void -USBRoster::Stop() -{ - if(!fLooper) - return; - - ((RosterLooper *)fLooper)->Stop(); - fLooper = NULL; -} - - diff --git a/Externals/libusb/libusb/os/haiku/haiku_usb.h b/Externals/libusb/libusb/os/haiku/haiku_usb.h deleted file mode 100644 index a053835f1e4d..000000000000 --- a/Externals/libusb/libusb/os/haiku/haiku_usb.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Haiku Backend for libusb - * Copyright © 2014 Akshay Jaggi - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include -#include -#include "libusbi.h" -#include "haiku_usb_raw.h" - -using namespace std; - -class USBDevice; -class USBDeviceHandle; -class USBTransfer; - -class USBDevice { -public: - USBDevice(const char *); - virtual ~USBDevice(); - const char* Location() const; - uint8 CountConfigurations() const; - const usb_device_descriptor* Descriptor() const; - const usb_configuration_descriptor* ConfigurationDescriptor(uint32) const; - const usb_configuration_descriptor* ActiveConfiguration() const; - uint8 EndpointToIndex(uint8) const; - uint8 EndpointToInterface(uint8) const; - int ClaimInterface(int); - int ReleaseInterface(int); - int CheckInterfacesFree(int); - int SetActiveConfiguration(int); - int ActiveConfigurationIndex() const; - bool InitCheck(); -private: - int Initialise(); - unsigned int fClaimedInterfaces; // Max Interfaces can be 32. Using a bitmask - usb_device_descriptor fDeviceDescriptor; - unsigned char** fConfigurationDescriptors; - int fActiveConfiguration; - char* fPath; - map fConfigToIndex; - map* fEndpointToIndex; - map* fEndpointToInterface; - bool fInitCheck; -}; - -class USBDeviceHandle { -public: - USBDeviceHandle(USBDevice* dev); - virtual ~USBDeviceHandle(); - int ClaimInterface(int); - int ReleaseInterface(int); - int SetConfiguration(int); - int SetAltSetting(int,int); - status_t SubmitTransfer(struct usbi_transfer*); - status_t CancelTransfer(USBTransfer*); - bool InitCheck(); -private: - int fRawFD; - static status_t TransfersThread(void *); - void TransfersWorker(); - USBDevice* fUSBDevice; - unsigned int fClaimedInterfaces; - BList fTransfers; - BLocker fTransfersLock; - sem_id fTransfersSem; - thread_id fTransfersThread; - bool fInitCheck; -}; - -class USBTransfer { -public: - USBTransfer(struct usbi_transfer*,USBDevice*); - virtual ~USBTransfer(); - void Do(int); - struct usbi_transfer* UsbiTransfer(); - void SetCancelled(); - bool IsCancelled(); -private: - struct usbi_transfer* fUsbiTransfer; - struct libusb_transfer* fLibusbTransfer; - USBDevice* fUSBDevice; - BLocker fStatusLock; - bool fCancelled; -}; - -class USBRoster { -public: - USBRoster(); - virtual ~USBRoster(); - int Start(); - void Stop(); -private: - void* fLooper; -}; diff --git a/Externals/libusb/libusb/os/haiku/haiku_usb_backend.cpp b/Externals/libusb/libusb/os/haiku/haiku_usb_backend.cpp deleted file mode 100644 index 3e092fb2e937..000000000000 --- a/Externals/libusb/libusb/os/haiku/haiku_usb_backend.cpp +++ /dev/null @@ -1,550 +0,0 @@ -/* - * Haiku Backend for libusb - * Copyright © 2014 Akshay Jaggi - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include -#include -#include -#include -#include - -#include "haiku_usb.h" - -int _errno_to_libusb(int status) -{ - return status; -} - -USBTransfer::USBTransfer(struct usbi_transfer* itransfer, USBDevice* device) -{ - fUsbiTransfer=itransfer; - fLibusbTransfer=USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - fUSBDevice=device; - fCancelled=false; -} - -USBTransfer::~USBTransfer() -{ -} - -struct usbi_transfer* -USBTransfer::UsbiTransfer() -{ - return fUsbiTransfer; -} - -void -USBTransfer::SetCancelled() -{ - fCancelled=true; -} - -bool -USBTransfer::IsCancelled() -{ - return fCancelled; -} - -void -USBTransfer::Do(int fRawFD) -{ - switch(fLibusbTransfer->type) - { - case LIBUSB_TRANSFER_TYPE_CONTROL: - { - struct libusb_control_setup* setup=(struct libusb_control_setup*)fLibusbTransfer->buffer; - usb_raw_command command; - command.control.request_type=setup->bmRequestType; - command.control.request=setup->bRequest; - command.control.value=setup->wValue; - command.control.index=setup->wIndex; - command.control.length=setup->wLength; - command.control.data=fLibusbTransfer->buffer + LIBUSB_CONTROL_SETUP_SIZE; - if(fCancelled) - { - break; - } - if(ioctl(fRawFD,B_USB_RAW_COMMAND_CONTROL_TRANSFER,&command, - sizeof(command)) || command.control.status!=B_USB_RAW_STATUS_SUCCESS) { - fUsbiTransfer->transferred=-1; - usbi_err(TRANSFER_CTX(fLibusbTransfer),"failed control transfer"); - break; - } - fUsbiTransfer->transferred=command.control.length; - } - break; - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - { - usb_raw_command command; - command.transfer.interface=fUSBDevice->EndpointToInterface(fLibusbTransfer->endpoint); - command.transfer.endpoint=fUSBDevice->EndpointToIndex(fLibusbTransfer->endpoint); - command.transfer.data=fLibusbTransfer->buffer; - command.transfer.length=fLibusbTransfer->length; - if(fCancelled) - { - break; - } - if(fLibusbTransfer->type==LIBUSB_TRANSFER_TYPE_BULK) - { - if(ioctl(fRawFD,B_USB_RAW_COMMAND_BULK_TRANSFER,&command, - sizeof(command)) || command.transfer.status!=B_USB_RAW_STATUS_SUCCESS) { - fUsbiTransfer->transferred=-1; - usbi_err(TRANSFER_CTX(fLibusbTransfer),"failed bulk transfer"); - break; - } - } - else - { - if(ioctl(fRawFD,B_USB_RAW_COMMAND_INTERRUPT_TRANSFER,&command, - sizeof(command)) || command.transfer.status!=B_USB_RAW_STATUS_SUCCESS) { - fUsbiTransfer->transferred=-1; - usbi_err(TRANSFER_CTX(fLibusbTransfer),"failed interrupt transfer"); - break; - } - } - fUsbiTransfer->transferred=command.transfer.length; - } - break; - // IsochronousTransfers not tested - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - { - usb_raw_command command; - command.isochronous.interface=fUSBDevice->EndpointToInterface(fLibusbTransfer->endpoint); - command.isochronous.endpoint=fUSBDevice->EndpointToIndex(fLibusbTransfer->endpoint); - command.isochronous.data=fLibusbTransfer->buffer; - command.isochronous.length=fLibusbTransfer->length; - command.isochronous.packet_count=fLibusbTransfer->num_iso_packets; - int i=0; - usb_iso_packet_descriptor *packetDescriptors = new usb_iso_packet_descriptor[fLibusbTransfer->num_iso_packets]; - for (i=0; inum_iso_packets; i++) - { - if((int16)(fLibusbTransfer->iso_packet_desc[i]).length!=(fLibusbTransfer->iso_packet_desc[i]).length) - { - fUsbiTransfer->transferred=-1; - usbi_err(TRANSFER_CTX(fLibusbTransfer),"failed isochronous transfer"); - break; - } - packetDescriptors[i].request_length=(int16)(fLibusbTransfer->iso_packet_desc[i]).length; - } - if(inum_iso_packets) - { - break; // TODO Handle this error - } - command.isochronous.packet_descriptors=packetDescriptors; - if(fCancelled) - { - break; - } - if(ioctl(fRawFD,B_USB_RAW_COMMAND_ISOCHRONOUS_TRANSFER,&command, - sizeof(command)) || command.isochronous.status!=B_USB_RAW_STATUS_SUCCESS) { - fUsbiTransfer->transferred=-1; - usbi_err(TRANSFER_CTX(fLibusbTransfer),"failed isochronous transfer"); - break; - } - for (i=0; inum_iso_packets; i++) - { - (fLibusbTransfer->iso_packet_desc[i]).actual_length=packetDescriptors[i].actual_length; - switch(packetDescriptors[i].status) - { - case B_OK: (fLibusbTransfer->iso_packet_desc[i]).status=LIBUSB_TRANSFER_COMPLETED; - break; - default: (fLibusbTransfer->iso_packet_desc[i]).status=LIBUSB_TRANSFER_ERROR; - break; - } - } - delete[] packetDescriptors; - // Do we put the length of transfer here, for isochronous transfers? - fUsbiTransfer->transferred=command.transfer.length; - } - break; - default: - usbi_err(TRANSFER_CTX(fLibusbTransfer),"Unknown type of transfer"); - } -} - -bool -USBDeviceHandle::InitCheck() -{ - return fInitCheck; -} - -status_t -USBDeviceHandle::TransfersThread(void* self) -{ - USBDeviceHandle* handle = (USBDeviceHandle*)self; - handle->TransfersWorker(); - return B_OK; -} - -void -USBDeviceHandle::TransfersWorker() -{ - while(true) - { - status_t status = acquire_sem(fTransfersSem); - if(status== B_BAD_SEM_ID) - break; - if(status == B_INTERRUPTED) - continue; - fTransfersLock.Lock(); - USBTransfer* fPendingTransfer= (USBTransfer*) fTransfers.RemoveItem((int32)0); - fTransfersLock.Unlock(); - fPendingTransfer->Do(fRawFD); - usbi_signal_transfer_completion(fPendingTransfer->UsbiTransfer()); - } -} - -status_t -USBDeviceHandle::SubmitTransfer(struct usbi_transfer* itransfer) -{ - USBTransfer* transfer = new USBTransfer(itransfer,fUSBDevice); - *((USBTransfer**)usbi_transfer_get_os_priv(itransfer))=transfer; - BAutolock locker(fTransfersLock); - fTransfers.AddItem(transfer); - release_sem(fTransfersSem); - return LIBUSB_SUCCESS; -} - -status_t -USBDeviceHandle::CancelTransfer(USBTransfer* transfer) -{ - transfer->SetCancelled(); - fTransfersLock.Lock(); - bool removed = fTransfers.RemoveItem(transfer); - fTransfersLock.Unlock(); - if(removed) - { - usbi_signal_transfer_completion(transfer->UsbiTransfer()); - } - return LIBUSB_SUCCESS; -} - -USBDeviceHandle::USBDeviceHandle(USBDevice* dev) - : - fTransfersThread(-1), - fUSBDevice(dev), - fClaimedInterfaces(0), - fInitCheck(false) -{ - fRawFD=open(dev->Location(), O_RDWR | O_CLOEXEC); - if(fRawFD < 0) - { - usbi_err(NULL,"failed to open device"); - return; - } - fTransfersSem = create_sem(0, "Transfers Queue Sem"); - fTransfersThread = spawn_thread(TransfersThread,"Transfer Worker",B_NORMAL_PRIORITY, this); - resume_thread(fTransfersThread); - fInitCheck = true; -} - -USBDeviceHandle::~USBDeviceHandle() -{ - if(fRawFD>0) - close(fRawFD); - for(int i=0; i<32; i++) - { - if(fClaimedInterfaces&(1<0) - wait_for_thread(fTransfersThread, NULL); -} - -int -USBDeviceHandle::ClaimInterface(int inumber) -{ - int status=fUSBDevice->ClaimInterface(inumber); - if(status==LIBUSB_SUCCESS) - { - fClaimedInterfaces|=(1<ReleaseInterface(inumber); - fClaimedInterfaces&=(!(1<CheckInterfacesFree(config); - if(config_index==LIBUSB_ERROR_BUSY || config_index==LIBUSB_ERROR_NOT_FOUND) - return config_index; - - usb_raw_command command; - command.config.config_index=config_index; - if(ioctl(fRawFD,B_USB_RAW_COMMAND_SET_CONFIGURATION,&command, - sizeof(command)) || command.config.status != B_USB_RAW_STATUS_SUCCESS) { - return _errno_to_libusb(command.config.status); - } - fUSBDevice->SetActiveConfiguration(config_index); - return LIBUSB_SUCCESS; -} - -int -USBDeviceHandle::SetAltSetting(int inumber, int alt) -{ - usb_raw_command command; - command.alternate.config_index=fUSBDevice->ActiveConfigurationIndex(); - command.alternate.interface_index=inumber; - if(ioctl(fRawFD,B_USB_RAW_COMMAND_GET_ACTIVE_ALT_INTERFACE_INDEX,&command, - sizeof(command)) || command.alternate.status!=B_USB_RAW_STATUS_SUCCESS) { - usbi_err(NULL,"Error retrieving active alternate interface"); - return _errno_to_libusb(command.alternate.status); - } - if(command.alternate.alternate_info == alt) - { - usbi_dbg("Setting alternate interface successful"); - return LIBUSB_SUCCESS; - } - command.alternate.alternate_info = alt; - if(ioctl(fRawFD,B_USB_RAW_COMMAND_SET_ALT_INTERFACE,&command, //IF IOCTL FAILS DEVICE DISONNECTED PROBABLY - sizeof(command)) || command.alternate.status!=B_USB_RAW_STATUS_SUCCESS) { - usbi_err(NULL,"Error setting alternate interface"); - return _errno_to_libusb(command.alternate.status); - } - usbi_dbg("Setting alternate interface successful"); - return LIBUSB_SUCCESS; -} - - -USBDevice::USBDevice(const char * path) - : - fPath(NULL), - fActiveConfiguration(0), //0? - fConfigurationDescriptors(NULL), - fClaimedInterfaces(0), - fEndpointToIndex(NULL), - fEndpointToInterface(NULL), - fInitCheck(false) -{ - fPath=strdup(path); - Initialise(); -} - -USBDevice::~USBDevice() -{ - free(fPath); - if (fConfigurationDescriptors) - { - for(int i=0;iCountConfigurations()) - return NULL; - return (usb_configuration_descriptor*) fConfigurationDescriptors[index]; -} - -const usb_configuration_descriptor* -USBDevice::ActiveConfiguration() const -{ - return (usb_configuration_descriptor*) fConfigurationDescriptors[fActiveConfiguration]; -} - -int -USBDevice::ActiveConfigurationIndex() const -{ - return fActiveConfiguration; -} - -int USBDevice::ClaimInterface(int interface) -{ - if(interface>ActiveConfiguration()->number_interfaces) - { - return LIBUSB_ERROR_NOT_FOUND; - } - if((fClaimedInterfaces & (1< [fDeviceDescriptor.num_configurations]; - fEndpointToInterface = new(std::nothrow) map [fDeviceDescriptor.num_configurations]; - for( int i=0; i - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include -#include -#include -#include -#include - -#include "haiku_usb.h" - -USBRoster gUsbRoster; -int32 gInitCount = 0; - -static int -haiku_init(struct libusb_context* ctx) -{ - if (atomic_add(&gInitCount, 1) == 0) - { - return gUsbRoster.Start(); - } - return LIBUSB_SUCCESS; -} - -static void -haiku_exit(void) -{ - if (atomic_add(&gInitCount, -1) == 1) - gUsbRoster.Stop(); -} - -static int -haiku_open(struct libusb_device_handle *dev_handle) -{ - USBDevice* dev=*((USBDevice**)dev_handle->dev->os_priv); - USBDeviceHandle *handle=new(std::nothrow) USBDeviceHandle(dev); - if (handle == NULL) - return LIBUSB_ERROR_NO_MEM; - if (handle->InitCheck() == false) - { - delete handle; - return LIBUSB_ERROR_NO_DEVICE; - } - *((USBDeviceHandle**)dev_handle->os_priv)=handle; - return LIBUSB_SUCCESS; -} - -static void -haiku_close(struct libusb_device_handle *dev_handle) -{ - USBDeviceHandle * handle=*((USBDeviceHandle**)dev_handle->os_priv); - if(handle==NULL) - return; - delete handle; - *((USBDeviceHandle**)dev_handle->os_priv)=NULL; -} - -static int -haiku_get_device_descriptor(struct libusb_device *device, unsigned char* buffer, int *host_endian) -{ - USBDevice *dev = *((USBDevice**)(device->os_priv)); - memcpy(buffer,dev->Descriptor(),DEVICE_DESC_LENGTH); - *host_endian=0; - return LIBUSB_SUCCESS; -} - -static int -haiku_get_active_config_descriptor(struct libusb_device *device, unsigned char *buffer, size_t len, int *host_endian) -{ - USBDevice *dev = *((USBDevice**)(device->os_priv)); - const usb_configuration_descriptor* act_config = dev->ActiveConfiguration(); - if(len>act_config->total_length) - { - return LIBUSB_ERROR_OVERFLOW; - } - memcpy(buffer,act_config,len); - *host_endian=0; - return LIBUSB_SUCCESS; -} - -static int -haiku_get_config_descriptor(struct libusb_device *device, uint8_t config_index, unsigned char *buffer, size_t len, int *host_endian) -{ - USBDevice *dev = *((USBDevice**)(device->os_priv)); - const usb_configuration_descriptor* config = dev->ConfigurationDescriptor(config_index); - if(config==NULL) - { - usbi_err(DEVICE_CTX(device),"failed getting configuration descriptor"); - return LIBUSB_ERROR_INVALID_PARAM; - } - if(len>config->total_length) - len=config->total_length; - memcpy(buffer,(unsigned char*)config,len); - *host_endian=0; - return len; -} - -static int -haiku_set_configuration(struct libusb_device_handle *dev_handle, int config) -{ - USBDeviceHandle * handle= *((USBDeviceHandle**)dev_handle->os_priv); - return handle->SetConfiguration(config); -} - -static int -haiku_claim_interface(struct libusb_device_handle *dev_handle, int interface_number) -{ - USBDeviceHandle * handle=*((USBDeviceHandle**)dev_handle->os_priv); - return handle->ClaimInterface(interface_number); -} - -static int -haiku_set_altsetting(struct libusb_device_handle* dev_handle, int interface_number, int altsetting) -{ - USBDeviceHandle* handle = *((USBDeviceHandle**)dev_handle->os_priv); - return handle->SetAltSetting(interface_number, altsetting); -} - -static int -haiku_release_interface(struct libusb_device_handle *dev_handle, int interface_number) -{ - USBDeviceHandle * handle=*((USBDeviceHandle**)dev_handle->os_priv); - haiku_set_altsetting(dev_handle,interface_number,0); - return handle->ReleaseInterface(interface_number); -} - -static int -haiku_submit_transfer(struct usbi_transfer * itransfer) -{ - struct libusb_transfer* fLibusbTransfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - USBDeviceHandle * fDeviceHandle = *((USBDeviceHandle**)fLibusbTransfer->dev_handle->os_priv); - return fDeviceHandle->SubmitTransfer(itransfer); -} - -static int -haiku_cancel_transfer(struct usbi_transfer * itransfer) -{ - struct libusb_transfer* fLibusbTransfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - USBDeviceHandle * fDeviceHandle = *((USBDeviceHandle**)fLibusbTransfer->dev_handle->os_priv); - return fDeviceHandle->CancelTransfer(*((USBTransfer**)usbi_transfer_get_os_priv(itransfer))); -} - -static void -haiku_clear_transfer_priv(struct usbi_transfer * itransfer) -{ - USBTransfer* transfer=*((USBTransfer**)usbi_transfer_get_os_priv(itransfer)); - delete transfer; - *((USBTransfer**)usbi_transfer_get_os_priv(itransfer))=NULL; -} - -static int -haiku_handle_transfer_completion(struct usbi_transfer * itransfer) -{ - USBTransfer* transfer=*((USBTransfer**)usbi_transfer_get_os_priv(itransfer)); - - usbi_mutex_lock(&itransfer->lock); - if(transfer->IsCancelled()) - { - delete transfer; - *((USBTransfer**)usbi_transfer_get_os_priv(itransfer))=NULL; - usbi_mutex_unlock(&itransfer->lock); - if (itransfer->transferred < 0) - itransfer->transferred = 0; - return usbi_handle_transfer_cancellation(itransfer); - } - libusb_transfer_status status = LIBUSB_TRANSFER_COMPLETED; - if(itransfer->transferred < 0) - { - usbi_err(ITRANSFER_CTX(itransfer), "error in transfer"); - status = LIBUSB_TRANSFER_ERROR; - itransfer->transferred=0; - } - delete transfer; - *((USBTransfer**)usbi_transfer_get_os_priv(itransfer))=NULL; - usbi_mutex_unlock(&itransfer->lock); - return usbi_handle_transfer_completion(itransfer, status); -} - -static int -haiku_clock_gettime(int clkid, struct timespec *tp) -{ - if(clkid == USBI_CLOCK_REALTIME) - return clock_gettime(CLOCK_REALTIME, tp); - if(clkid == USBI_CLOCK_MONOTONIC) - return clock_gettime(CLOCK_MONOTONIC, tp); - return LIBUSB_ERROR_INVALID_PARAM; -} - -const struct usbi_os_backend haiku_usb_raw_backend = { - /*.name =*/ "Haiku usbfs", - /*.caps =*/ 0, - /*.init =*/ haiku_init, - /*.exit =*/ haiku_exit, - /*.get_device_list =*/ NULL, - /*.hotplug_poll =*/ NULL, - /*.open =*/ haiku_open, - /*.close =*/ haiku_close, - /*.get_device_descriptor =*/ haiku_get_device_descriptor, - /*.get_active_config_descriptor =*/ haiku_get_active_config_descriptor, - /*.get_config_descriptor =*/ haiku_get_config_descriptor, - /*.get_config_descriptor_by_value =*/ NULL, - - - /*.get_configuration =*/ NULL, - /*.set_configuration =*/ haiku_set_configuration, - /*.claim_interface =*/ haiku_claim_interface, - /*.release_interface =*/ haiku_release_interface, - - /*.set_interface_altsetting =*/ haiku_set_altsetting, - /*.clear_halt =*/ NULL, - /*.reset_device =*/ NULL, - - /*.alloc_streams =*/ NULL, - /*.free_streams =*/ NULL, - - /*.kernel_driver_active =*/ NULL, - /*.detach_kernel_driver =*/ NULL, - /*.attach_kernel_driver =*/ NULL, - - /*.destroy_device =*/ NULL, - - /*.submit_transfer =*/ haiku_submit_transfer, - /*.cancel_transfer =*/ haiku_cancel_transfer, - /*.clear_transfer_priv =*/ haiku_clear_transfer_priv, - - /*.handle_events =*/ NULL, - /*.handle_transfer_completion =*/ haiku_handle_transfer_completion, - - /*.clock_gettime =*/ haiku_clock_gettime, - -#ifdef USBI_TIMERFD_AVAILABLE - /*.get_timerfd_clockid =*/ NULL, -#endif - - /*.device_priv_size =*/ sizeof(USBDevice*), - /*.device_handle_priv_size =*/ sizeof(USBDeviceHandle*), - /*.transfer_priv_size =*/ sizeof(USBTransfer*), -}; diff --git a/Externals/libusb/libusb/os/haiku/haiku_usb_raw.h b/Externals/libusb/libusb/os/haiku/haiku_usb_raw.h deleted file mode 100644 index 54112c2202c1..000000000000 --- a/Externals/libusb/libusb/os/haiku/haiku_usb_raw.h +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright 2006-2008, Haiku Inc. All rights reserved. - * Distributed under the terms of the MIT License. - */ - -#ifndef _USB_RAW_H_ -#define _USB_RAW_H_ - -#include - -#define B_USB_RAW_PROTOCOL_VERSION 0x0015 -#define B_USB_RAW_ACTIVE_ALTERNATE 0xffffffff - -typedef enum { - B_USB_RAW_COMMAND_GET_VERSION = 0x1000, - - B_USB_RAW_COMMAND_GET_DEVICE_DESCRIPTOR = 0x2000, - B_USB_RAW_COMMAND_GET_CONFIGURATION_DESCRIPTOR, - B_USB_RAW_COMMAND_GET_INTERFACE_DESCRIPTOR, - B_USB_RAW_COMMAND_GET_ENDPOINT_DESCRIPTOR, - B_USB_RAW_COMMAND_GET_STRING_DESCRIPTOR, - B_USB_RAW_COMMAND_GET_GENERIC_DESCRIPTOR, - B_USB_RAW_COMMAND_GET_ALT_INTERFACE_COUNT, - B_USB_RAW_COMMAND_GET_ACTIVE_ALT_INTERFACE_INDEX, - B_USB_RAW_COMMAND_GET_INTERFACE_DESCRIPTOR_ETC, - B_USB_RAW_COMMAND_GET_ENDPOINT_DESCRIPTOR_ETC, - B_USB_RAW_COMMAND_GET_GENERIC_DESCRIPTOR_ETC, - - B_USB_RAW_COMMAND_SET_CONFIGURATION = 0x3000, - B_USB_RAW_COMMAND_SET_FEATURE, - B_USB_RAW_COMMAND_CLEAR_FEATURE, - B_USB_RAW_COMMAND_GET_STATUS, - B_USB_RAW_COMMAND_GET_DESCRIPTOR, - B_USB_RAW_COMMAND_SET_ALT_INTERFACE, - - B_USB_RAW_COMMAND_CONTROL_TRANSFER = 0x4000, - B_USB_RAW_COMMAND_INTERRUPT_TRANSFER, - B_USB_RAW_COMMAND_BULK_TRANSFER, - B_USB_RAW_COMMAND_ISOCHRONOUS_TRANSFER -} usb_raw_command_id; - - -typedef enum { - B_USB_RAW_STATUS_SUCCESS = 0, - - B_USB_RAW_STATUS_FAILED, - B_USB_RAW_STATUS_ABORTED, - B_USB_RAW_STATUS_STALLED, - B_USB_RAW_STATUS_CRC_ERROR, - B_USB_RAW_STATUS_TIMEOUT, - - B_USB_RAW_STATUS_INVALID_CONFIGURATION, - B_USB_RAW_STATUS_INVALID_INTERFACE, - B_USB_RAW_STATUS_INVALID_ENDPOINT, - B_USB_RAW_STATUS_INVALID_STRING, - - B_USB_RAW_STATUS_NO_MEMORY -} usb_raw_command_status; - - -typedef union { - struct { - status_t status; - } version; - - struct { - status_t status; - usb_device_descriptor *descriptor; - } device; - - struct { - status_t status; - usb_configuration_descriptor *descriptor; - uint32 config_index; - } config; - - struct { - status_t status; - uint32 alternate_info; - uint32 config_index; - uint32 interface_index; - } alternate; - - struct { - status_t status; - usb_interface_descriptor *descriptor; - uint32 config_index; - uint32 interface_index; - } interface; - - struct { - status_t status; - usb_interface_descriptor *descriptor; - uint32 config_index; - uint32 interface_index; - uint32 alternate_index; - } interface_etc; - - struct { - status_t status; - usb_endpoint_descriptor *descriptor; - uint32 config_index; - uint32 interface_index; - uint32 endpoint_index; - } endpoint; - - struct { - status_t status; - usb_endpoint_descriptor *descriptor; - uint32 config_index; - uint32 interface_index; - uint32 alternate_index; - uint32 endpoint_index; - } endpoint_etc; - - struct { - status_t status; - usb_descriptor *descriptor; - uint32 config_index; - uint32 interface_index; - uint32 generic_index; - size_t length; - } generic; - - struct { - status_t status; - usb_descriptor *descriptor; - uint32 config_index; - uint32 interface_index; - uint32 alternate_index; - uint32 generic_index; - size_t length; - } generic_etc; - - struct { - status_t status; - usb_string_descriptor *descriptor; - uint32 string_index; - size_t length; - } string; - - struct { - status_t status; - uint8 type; - uint8 index; - uint16 language_id; - void *data; - size_t length; - } descriptor; - - struct { - status_t status; - uint8 request_type; - uint8 request; - uint16 value; - uint16 index; - uint16 length; - void *data; - } control; - - struct { - status_t status; - uint32 interface; - uint32 endpoint; - void *data; - size_t length; - } transfer; - - struct { - status_t status; - uint32 interface; - uint32 endpoint; - void *data; - size_t length; - usb_iso_packet_descriptor *packet_descriptors; - uint32 packet_count; - } isochronous; -} usb_raw_command; - -#endif // _USB_RAW_H_ diff --git a/Externals/libusb/libusb/os/haiku/install-sh b/Externals/libusb/libusb/os/haiku/install-sh deleted file mode 100644 index 0b0fdcbba69a..000000000000 --- a/Externals/libusb/libusb/os/haiku/install-sh +++ /dev/null @@ -1,501 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2013-12-25.23; # UTC - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# 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 Software. -# -# THE SOFTWARE IS 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 -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# 'make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. - -tab=' ' -nl=' -' -IFS=" $tab$nl" - -# Set DOITPROG to "echo" to test this script. - -doit=${DOITPROG-} -doit_exec=${doit:-exec} - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -is_target_a_directory=possibly - -usage="\ -Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -d create directories instead of installing files. - -g GROUP $chgrpprog installed files to GROUP. - -m MODE $chmodprog installed files to MODE. - -o USER $chownprog installed files to USER. - -s $stripprog installed files. - -t DIRECTORY install into DIRECTORY. - -T report an error if DSTFILE is a directory. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) - is_target_a_directory=always - dst_arg=$2 - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; - - -T) is_target_a_directory=never;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -# We allow the use of options -d and -T together, by making -d -# take the precedence; this is for compatibility with GNU install. - -if test -n "$dir_arg"; then - if test -n "$dst_arg"; then - echo "$0: target directory not allowed when installing a directory." >&2 - exit 1 - fi -fi - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - done -fi - -if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call 'install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -if test -z "$dir_arg"; then - if test $# -gt 1 || test "$is_target_a_directory" = always; then - if test ! -d "$dst_arg"; then - echo "$0: $dst_arg: Is not a directory." >&2 - exit 1 - fi - fi -fi - -if test -z "$dir_arg"; then - do_exit='(exit $ret); exit $ret' - trap "ret=129; $do_exit" 1 - trap "ret=130; $do_exit" 2 - trap "ret=141; $do_exit" 13 - trap "ret=143; $do_exit" 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names problematic for 'test' and other utilities. - case $src in - -* | [=\(\)!]) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - else - - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - dst=$dst_arg - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test "$is_target_a_directory" = never; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - dstdir=`dirname "$dst"` - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; - esac - - oIFS=$IFS - IFS=/ - set -f - set fnord $dstdir - shift - set +f - IFS=$oIFS - - prefixes= - - for d - do - test X"$d" = X && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && - { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && - { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - set +f && - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || - - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/Externals/libusb/libusb/os/haiku/ltmain.sh b/Externals/libusb/libusb/os/haiku/ltmain.sh deleted file mode 100644 index 63ae69dc6fec..000000000000 --- a/Externals/libusb/libusb/os/haiku/ltmain.sh +++ /dev/null @@ -1,9655 +0,0 @@ - -# libtool (GNU libtool) 2.4.2 -# Written by Gordon Matzigkeit , 1996 - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# Usage: $progname [OPTION]... [MODE-ARG]... -# -# Provide generalized library-building support services. -# -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --no-quiet, --no-silent -# print informational messages (default) -# --no-warn don't display warning messages -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print more informational messages than default -# --no-verbose don't print the extra informational messages -# --version print version information -# -h, --help, --help-all print short, long, or detailed help message -# -# MODE must be one of the following: -# -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory -# -# MODE-ARGS vary depending on the MODE. When passed as first option, -# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. -# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -# -# When reporting a bug, please describe a test case to reproduce it and -# include the following information: -# -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4.2 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to . -# GNU libtool home page: . -# General help using GNU software: . - -PROGRAM=libtool -PACKAGE=libtool -VERSION=2.4.2 -TIMESTAMP="" -package_revision=1.3337 - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# NLS nuisances: We save the old values to restore during execute mode. -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" - fi" -done -LC_ALL=C -LANGUAGE=C -export LANGUAGE LC_ALL - -$lt_unset CDPATH - - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - - - -: ${CP="cp -f"} -test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -IFS=" $lt_nl" - -dirname="s,/[^/]*$,," -basename="s,^.*/,," - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} # func_dirname may be replaced by extended shell implementation - - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} # func_basename may be replaced by extended shell implementation - - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -} # func_dirname_and_basename may be replaced by extended shell implementation - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname may be replaced by extended shell implementation - - -# These SED scripts presuppose an absolute path with a trailing slash. -pathcar='s,^/\([^/]*\).*$,\1,' -pathcdr='s,^/[^/]*,,' -removedotparts=':dotsl - s@/\./@/@g - t dotsl - s,/\.$,/,' -collapseslashes='s@/\{1,\}@/@g' -finalslash='s,/*$,/,' - -# func_normal_abspath PATH -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -# value returned in "$func_normal_abspath_result" -func_normal_abspath () -{ - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` - while :; do - # Processed it all yet? - if test "$func_normal_abspath_tpath" = / ; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result" ; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - -# func_relative_path SRCDIR DSTDIR -# generates a relative path from SRCDIR to DSTDIR, with a trailing -# slash if non-empty, suitable for immediately appending a filename -# without needing to append a separator. -# value returned in "$func_relative_path_result" -func_relative_path () -{ - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=${func_dirname_result} - if test "x$func_relative_path_tlibdir" = x ; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test "x$func_stripname_result" != x ; then - func_relative_path_result=${func_relative_path_result}/${func_stripname_result} - fi - - # Normalisation. If bindir is libdir, return empty string, - # else relative path ending with a slash; either way, target - # file name can be directly appended. - if test ! -z "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result/" - func_relative_path_result=$func_stripname_result - fi -} - -# The name of this program: -func_dirname_and_basename "$progpath" -progname=$func_basename_result - -# Make sure we have an absolute path for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=$func_dirname_result - progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" - ;; - *) - save_IFS="$IFS" - IFS=${PATH_SEPARATOR-:} - for progdir in $PATH; do - IFS="$save_IFS" - test -x "$progdir/$progname" && break - done - IFS="$save_IFS" - test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed="${SED}"' -e 1s/^X//' -sed_quote_subst='s/\([`"$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' - -# Sed substitution that converts a w32 file name or path -# which contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - -# Re-`\' parameter expansions in output of double_quote_subst that were -# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -# in input to double_quote_subst, that '$' was protected from expansion. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" - -# Standard options: -opt_dry_run=false -opt_help=false -opt_quiet=false -opt_verbose=false -opt_warning=: - -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }$*" -} - -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -# func_error arg... -# Echo program name prefixed message to standard error. -func_error () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 -} - -# func_warning arg... -# Echo program name prefixed warning message to standard error. -func_warning () -{ - $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 - - # bash bug again: - : -} - -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" -} -help="Try \`$progname --help' for more information." ## default - - -# func_grep expression filename -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_mkdir_p directory-path -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - my_directory_path="$1" - my_dir_list= - - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then - - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" - - # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` - done - my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` - - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : - done - IFS="$save_mkdir_p_IFS" - - # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" - fi -} - - -# func_mktempdir [string] -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. -func_mktempdir () -{ - my_template="${TMPDIR-/tmp}/${1-$progname}" - - if test "$opt_dry_run" = ":"; then - # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" - else - - # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` - - if test ! -d "$my_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" - - save_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$my_tmpdir" - umask $save_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi - - $ECHO "$my_tmpdir" -} - - -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () -{ - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac - - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac -} - - -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac - - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac - - func_quote_for_expand_result="$my_arg" -} - - -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - -# func_tr_sh -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac -} - - -# func_version -# Echo version message to standard output and exit. -func_version () -{ - $opt_debug - - $SED -n '/(C)/!b go - :more - /\./!{ - N - s/\n# / / - b more - } - :go - /^# '$PROGRAM' (GNU /,/# warranty; / { - s/^# // - s/^# *$// - s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ - p - }' < "$progpath" - exit $? -} - -# func_usage -# Echo short help message to standard output and exit. -func_usage () -{ - $opt_debug - - $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - echo - $ECHO "run \`$progname --help | more' for full usage" - exit $? -} - -# func_help [NOEXIT] -# Echo long help message to standard output and exit, -# unless 'noexit' is passed as argument. -func_help () -{ - $opt_debug - - $SED -n '/^# Usage:/,/# Report bugs to/ { - :print - s/^# // - s/^# *$// - s*\$progname*'$progname'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ - p - d - } - /^# .* home page:/b print - /^# General help using/b print - ' < "$progpath" - ret=$? - if test -z "$1"; then - exit $ret - fi -} - -# func_missing_arg argname -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - $opt_debug - - func_error "missing argument for $1." - exit_cmd=exit -} - - -# func_split_short_opt shortopt -# Set func_split_short_opt_name and func_split_short_opt_arg shell -# variables after splitting SHORTOPT after the 2nd character. -func_split_short_opt () -{ - my_sed_short_opt='1s/^\(..\).*$/\1/;q' - my_sed_short_rest='1s/^..\(.*\)$/\1/;q' - - func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` - func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` -} # func_split_short_opt may be replaced by extended shell implementation - - -# func_split_long_opt longopt -# Set func_split_long_opt_name and func_split_long_opt_arg shell -# variables after splitting LONGOPT at the `=' sign. -func_split_long_opt () -{ - my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' - my_sed_long_arg='1s/^--[^=]*=//' - - func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` - func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` -} # func_split_long_opt may be replaced by extended shell implementation - -exit_cmd=: - - - - - -magic="%%%MAGIC variable%%%" -magic_exe="%%%MAGIC EXE variable%%%" - -# Global variables. -nonopt= -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "${1}=\$${1}\${2}" -} # func_append may be replaced by extended shell implementation - -# func_append_quoted var value -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -func_append_quoted () -{ - func_quote_for_eval "${2}" - eval "${1}=\$${1}\\ \$func_quote_for_eval_result" -} # func_append_quoted may be replaced by extended shell implementation - - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "${@}"` -} # func_arith may be replaced by extended shell implementation - - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` -} # func_len may be replaced by extended shell implementation - - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} # func_lo2o may be replaced by extended shell implementation - - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} # func_xform may be replaced by extended shell implementation - - -# func_fatal_configuration arg... -# Echo program name prefixed message to standard error, followed by -# a configuration failure hint, and exit. -func_fatal_configuration () -{ - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." -} - - -# func_config -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - -# func_features -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test "$build_libtool_libs" = yes; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - -# func_enable_tag tagname -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname="$1" - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf="/$re_begincf/,/$re_endcf/p" - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - -# func_check_version_match -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -# Shorthand for --mode=foo, only valid as the first argument -case $1 in -clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; -compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; -execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; -finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; -install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; -link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; -uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; -esac - - - -# Option defaults: -opt_debug=: -opt_dry_run=false -opt_config=false -opt_preserve_dup_deps=false -opt_features=false -opt_finish=false -opt_help=false -opt_help_all=false -opt_silent=: -opt_warning=: -opt_verbose=: -opt_silent=false -opt_verbose=false - - -# Parse options once, thoroughly. This comes as soon as possible in the -# script to make things like `--version' happen as quickly as we can. -{ - # this just eases exit handling - while test $# -gt 0; do - opt="$1" - shift - case $opt in - --debug|-x) opt_debug='set -x' - func_echo "enabling shell trace mode" - $opt_debug - ;; - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - --config) - opt_config=: -func_config - ;; - --dlopen|-dlopen) - optarg="$1" - opt_dlopen="${opt_dlopen+$opt_dlopen -}$optarg" - shift - ;; - --preserve-dup-deps) - opt_preserve_dup_deps=: - ;; - --features) - opt_features=: -func_features - ;; - --finish) - opt_finish=: -set dummy --mode finish ${1+"$@"}; shift - ;; - --help) - opt_help=: - ;; - --help-all) - opt_help_all=: -opt_help=': help-all' - ;; - --mode) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_mode="$optarg" -case $optarg in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; -esac - shift - ;; - --no-silent|--no-quiet) - opt_silent=false -func_append preserve_args " $opt" - ;; - --no-warning|--no-warn) - opt_warning=false -func_append preserve_args " $opt" - ;; - --no-verbose) - opt_verbose=false -func_append preserve_args " $opt" - ;; - --silent|--quiet) - opt_silent=: -func_append preserve_args " $opt" - opt_verbose=false - ;; - --verbose|-v) - opt_verbose=: -func_append preserve_args " $opt" -opt_silent=false - ;; - --tag) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_tag="$optarg" -func_append preserve_args " $opt $optarg" -func_enable_tag "$optarg" - shift - ;; - - -\?|-h) func_usage ;; - --help) func_help ;; - --version) func_version ;; - - # Separate optargs to long options: - --*=*) - func_split_long_opt "$opt" - set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-n*|-v*) - func_split_short_opt "$opt" - set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognized option \`$opt'" ;; - *) set dummy "$opt" ${1+"$@"}; shift; break ;; - esac - done - - # Validate options: - - # save first non-option argument - if test "$#" -gt 0; then - nonopt="$opt" - shift - fi - - # preserve --debug - test "$opt_debug" = : || func_append preserve_args " --debug" - - case $host in - *cygwin* | *mingw* | *pw32* | *cegcc*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - - $opt_help || { - # Sanity checks first: - func_check_version_match - - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test "$opt_mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$opt_mode' for more information." - } - - - # Bail if the options were screwed - $exit_cmd $EXIT_FAILURE -} - - - - -## ----------- ## -## Main. ## -## ----------- ## - -# func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case "$lalib_p_line" in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test "$lalib_p" = yes -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - func_lalib_p "$1" -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $opt_debug - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$save_ifs - eval cmd=\"$cmd\" - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# `FILE.' does not work on cygwin managed mounts. -func_source () -{ - $opt_debug - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_resolve_sysroot PATH -# Replace a leading = in PATH with a sysroot. Store the result into -# func_resolve_sysroot_result -func_resolve_sysroot () -{ - func_resolve_sysroot_result=$1 - case $func_resolve_sysroot_result in - =*) - func_stripname '=' '' "$func_resolve_sysroot_result" - func_resolve_sysroot_result=$lt_sysroot$func_stripname_result - ;; - esac -} - -# func_replace_sysroot PATH -# If PATH begins with the sysroot, replace it with = and -# store the result into func_replace_sysroot_result. -func_replace_sysroot () -{ - case "$lt_sysroot:$1" in - ?*:"$lt_sysroot"*) - func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result="=$func_stripname_result" - ;; - *) - # Including no sysroot. - func_replace_sysroot_result=$1 - ;; - esac -} - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $opt_debug - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' - else - write_lobj=none - fi - - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T </dev/null` - if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then - func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$lt_sed_naive_backslashify"` - else - func_convert_core_file_wine_to_w32_result= - fi - fi -} -# end: func_convert_core_file_wine_to_w32 - - -# func_convert_core_path_wine_to_w32 ARG -# Helper function used by path conversion functions when $build is *nix, and -# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -# configured wine environment available, with the winepath program in $build's -# $PATH. Assumes ARG has no leading or trailing path separator characters. -# -# ARG is path to be converted from $build format to win32. -# Result is available in $func_convert_core_path_wine_to_w32_result. -# Unconvertible file (directory) names in ARG are skipped; if no directory names -# are convertible, then the result may be empty. -func_convert_core_path_wine_to_w32 () -{ - $opt_debug - # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result="" - if test -n "$1"; then - oldIFS=$IFS - IFS=: - for func_convert_core_path_wine_to_w32_f in $1; do - IFS=$oldIFS - func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result" ; then - if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" - else - func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" - fi - fi - done - IFS=$oldIFS - fi -} -# end: func_convert_core_path_wine_to_w32 - - -# func_cygpath ARGS... -# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when -# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) -# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or -# (2), returns the Cygwin file name or path in func_cygpath_result (input -# file name or path is assumed to be in w32 format, as previously converted -# from $build's *nix or MSYS format). In case (3), returns the w32 file name -# or path in func_cygpath_result (input file name or path is assumed to be in -# Cygwin format). Returns an empty string on error. -# -# ARGS are passed to cygpath, with the last one being the file name or path to -# be converted. -# -# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH -# environment variable; do not put it in $PATH. -func_cygpath () -{ - $opt_debug - if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then - func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` - if test "$?" -ne 0; then - # on failure, ensure result is empty - func_cygpath_result= - fi - else - func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" - fi -} -#end: func_cygpath - - -# func_convert_core_msys_to_w32 ARG -# Convert file name or path ARG from MSYS format to w32 format. Return -# result in func_convert_core_msys_to_w32_result. -func_convert_core_msys_to_w32 () -{ - $opt_debug - # awkward: cmd appends spaces to result - func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` -} -#end: func_convert_core_msys_to_w32 - - -# func_convert_file_check ARG1 ARG2 -# Verify that ARG1 (a file name in $build format) was converted to $host -# format in ARG2. Otherwise, emit an error message, but continue (resetting -# func_to_host_file_result to ARG1). -func_convert_file_check () -{ - $opt_debug - if test -z "$2" && test -n "$1" ; then - func_error "Could not determine host file name corresponding to" - func_error " \`$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_file_result="$1" - fi -} -# end func_convert_file_check - - -# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH -# Verify that FROM_PATH (a path in $build format) was converted to $host -# format in TO_PATH. Otherwise, emit an error message, but continue, resetting -# func_to_host_file_result to a simplistic fallback value (see below). -func_convert_path_check () -{ - $opt_debug - if test -z "$4" && test -n "$3"; then - func_error "Could not determine the host path corresponding to" - func_error " \`$3'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This is a deliberately simplistic "conversion" and - # should not be "improved". See libtool.info. - if test "x$1" != "x$2"; then - lt_replace_pathsep_chars="s|$1|$2|g" - func_to_host_path_result=`echo "$3" | - $SED -e "$lt_replace_pathsep_chars"` - else - func_to_host_path_result="$3" - fi - fi -} -# end func_convert_path_check - - -# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG -# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT -# and appending REPL if ORIG matches BACKPAT. -func_convert_path_front_back_pathsep () -{ - $opt_debug - case $4 in - $1 ) func_to_host_path_result="$3$func_to_host_path_result" - ;; - esac - case $4 in - $2 ) func_append func_to_host_path_result "$3" - ;; - esac -} -# end func_convert_path_front_back_pathsep - - -################################################## -# $build to $host FILE NAME CONVERSION FUNCTIONS # -################################################## -# invoked via `$to_host_file_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# Result will be available in $func_to_host_file_result. - - -# func_to_host_file ARG -# Converts the file name ARG from $build format to $host format. Return result -# in func_to_host_file_result. -func_to_host_file () -{ - $opt_debug - $to_host_file_cmd "$1" -} -# end func_to_host_file - - -# func_to_tool_file ARG LAZY -# converts the file name ARG from $build format to toolchain format. Return -# result in func_to_tool_file_result. If the conversion in use is listed -# in (the comma separated) LAZY, no conversion takes place. -func_to_tool_file () -{ - $opt_debug - case ,$2, in - *,"$to_tool_file_cmd",*) - func_to_tool_file_result=$1 - ;; - *) - $to_tool_file_cmd "$1" - func_to_tool_file_result=$func_to_host_file_result - ;; - esac -} -# end func_to_tool_file - - -# func_convert_file_noop ARG -# Copy ARG to func_to_host_file_result. -func_convert_file_noop () -{ - func_to_host_file_result="$1" -} -# end func_convert_file_noop - - -# func_convert_file_msys_to_w32 ARG -# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_file_result. -func_convert_file_msys_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_to_host_file_result="$func_convert_core_msys_to_w32_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_w32 - - -# func_convert_file_cygwin_to_w32 ARG -# Convert file name ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_file_cygwin_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - # because $build is cygwin, we call "the" cygpath in $PATH; no need to use - # LT_CYGPATH in this case. - func_to_host_file_result=`cygpath -m "$1"` - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_cygwin_to_w32 - - -# func_convert_file_nix_to_w32 ARG -# Convert file name ARG from *nix to w32 format. Requires a wine environment -# and a working winepath. Returns result in func_to_host_file_result. -func_convert_file_nix_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_w32 - - -# func_convert_file_msys_to_cygwin ARG -# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_file_msys_to_cygwin () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result="$func_cygpath_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_cygwin - - -# func_convert_file_nix_to_cygwin ARG -# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed -# in a wine environment, working winepath, and LT_CYGPATH set. Returns result -# in func_to_host_file_result. -func_convert_file_nix_to_cygwin () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. - func_convert_core_file_wine_to_w32 "$1" - func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result="$func_cygpath_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_cygwin - - -############################################# -# $build to $host PATH CONVERSION FUNCTIONS # -############################################# -# invoked via `$to_host_path_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# The result will be available in $func_to_host_path_result. -# -# Path separators are also converted from $build format to $host format. If -# ARG begins or ends with a path separator character, it is preserved (but -# converted to $host format) on output. -# -# All path conversion functions are named using the following convention: -# file name conversion function : func_convert_file_X_to_Y () -# path conversion function : func_convert_path_X_to_Y () -# where, for any given $build/$host combination the 'X_to_Y' value is the -# same. If conversion functions are added for new $build/$host combinations, -# the two new functions must follow this pattern, or func_init_to_host_path_cmd -# will break. - - -# func_init_to_host_path_cmd -# Ensures that function "pointer" variable $to_host_path_cmd is set to the -# appropriate value, based on the value of $to_host_file_cmd. -to_host_path_cmd= -func_init_to_host_path_cmd () -{ - $opt_debug - if test -z "$to_host_path_cmd"; then - func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd="func_convert_path_${func_stripname_result}" - fi -} - - -# func_to_host_path ARG -# Converts the path ARG from $build format to $host format. Return result -# in func_to_host_path_result. -func_to_host_path () -{ - $opt_debug - func_init_to_host_path_cmd - $to_host_path_cmd "$1" -} -# end func_to_host_path - - -# func_convert_path_noop ARG -# Copy ARG to func_to_host_path_result. -func_convert_path_noop () -{ - func_to_host_path_result="$1" -} -# end func_convert_path_noop - - -# func_convert_path_msys_to_w32 ARG -# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_path_result. -func_convert_path_msys_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # Remove leading and trailing path separator characters from ARG. MSYS - # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; - # and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_msys_to_w32_result" - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_msys_to_w32 - - -# func_convert_path_cygwin_to_w32 ARG -# Convert path ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_path_cygwin_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_cygwin_to_w32 - - -# func_convert_path_nix_to_w32 ARG -# Convert path ARG from *nix to w32 format. Requires a wine environment and -# a working winepath. Returns result in func_to_host_file_result. -func_convert_path_nix_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_nix_to_w32 - - -# func_convert_path_msys_to_cygwin ARG -# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_path_msys_to_cygwin () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result="$func_cygpath_result" - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_msys_to_cygwin - - -# func_convert_path_nix_to_cygwin ARG -# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a -# a wine environment, working winepath, and LT_CYGPATH set. Returns result in -# func_to_host_file_result. -func_convert_path_nix_to_cygwin () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result="$func_cygpath_result" - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_nix_to_cygwin - - -# func_mode_compile arg... -func_mode_compile () -{ - $opt_debug - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - pie_flag= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" - arg_mode=normal - ;; - - target ) - libobj="$arg" - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - test -n "$libobj" && \ - func_fatal_error "you cannot specify \`-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) - func_append pie_flag " $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) - func_append later " $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - func_append_quoted lastarg "$arg" - done - IFS="$save_ifs" - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. - func_append base_compile " $lastarg" - continue - ;; - - *) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg="$srcfile" - srcfile="$arg" - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - func_append_quoted base_compile "$lastarg" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with \`-o'" - ;; - *) - # Get the name of the library object. - test -z "$libobj" && { - func_basename "$srcfile" - libobj="$func_basename_result" - } - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) - func_fatal_error "cannot determine name of library object from \`$libobj'" - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - continue - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ - && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - func_append removelist " $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - func_append removelist " $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 - srcfile=$func_to_tool_file_result - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test "$pic_mode" != no; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - func_append command " -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then - func_append command " -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - func_append command "$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test "$opt_mode" = compile && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $opt_mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to build PIC objects only - -prefer-non-pic try to build non-PIC objects only - -shared do not build a \`.o' file suitable for static linking - -static only build a \`.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -bindir BINDIR specify path to binaries directory (for systems where - libraries must be found in the PATH setting at runtime) - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface - -Wc,FLAG - -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wl,FLAG - -Xlinker FLAG pass linker-specific FLAG directly to the linker - -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode \`$opt_mode'" - ;; - esac - - echo - $ECHO "Try \`$progname --help' for more information about other modes." -} - -# Now that we've collected a possible --mode arg, show help if necessary -if $opt_help; then - if test "$opt_help" = :; then - func_mode_help - else - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - func_mode_help - done - } | sed -n '1p; 2,$s/^Usage:/ or: /p' - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - echo - func_mode_help - done - } | - sed '1d - /^When reporting/,/^Report/{ - H - d - } - $x - /information about other modes/d - /more detailed .*MODE/d - s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' - fi - exit $? -fi - - -# func_mode_execute arg... -func_mode_execute () -{ - $opt_debug - # The first argument is the command name. - cmd="$nonopt" - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $opt_dlopen; do - test -f "$file" \ - || func_fatal_help "\`$file' is not a file" - - dir= - case $file in - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir="$func_dirname_result" - - if test -f "$dir/$objdir/$dlname"; then - func_append dir "/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir="$func_dirname_result" - ;; - - *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file="$progdir/$program" - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_append_quoted args "$file" - done - - if test "X$opt_dry_run" = Xfalse; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = execute && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $opt_debug - libs= - libdirs= - admincmds= - - for opt in "$nonopt" ${1+"$@"} - do - if test -d "$opt"; then - func_append libdirs " $opt" - - elif test -f "$opt"; then - if func_lalib_unsafe_p "$opt"; then - func_append libs " $opt" - else - func_warning "\`$opt' is not a valid libtool archive" - fi - - else - func_fatal_error "invalid argument \`$opt'" - fi - done - - if test -n "$libs"; then - if test -n "$lt_sysroot"; then - sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` - sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" - else - sysroot_cmd= - fi - - # Remove sysroot references - if $opt_dry_run; then - for lib in $libs; do - echo "removing references to $lt_sysroot and \`=' prefixes from $lib" - done - else - tmpdir=`func_mktempdir` - for lib in $libs; do - sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ - > $tmpdir/tmp-la - mv -f $tmpdir/tmp-la $lib - done - ${RM}r "$tmpdir" - fi - fi - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || func_append admincmds " - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the \`$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $ECHO " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - echo - - echo "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" - echo "pages." - ;; - *) - echo "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - echo "----------------------------------------------------------------------" - fi - exit $EXIT_SUCCESS -} - -test "$opt_mode" = finish && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $opt_debug - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac; then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - func_append install_prog "$func_quote_for_eval_result" - install_shared_prog=$install_prog - case " $install_prog " in - *[\\\ /]cp\ *) install_cp=: ;; - *) install_cp=false ;; - esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - func_append files " $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - if test "x$prev" = x-m && test -n "$install_override_mode"; then - arg2=$install_override_mode - no_mode=false - fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - func_append install_prog " $func_quote_for_eval_result" - if test -n "$arg2"; then - func_quote_for_eval "$arg2" - fi - func_append install_shared_prog " $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the \`$prev' option requires an argument" - - if test -n "$install_override_mode" && $no_mode; then - if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - func_append install_shared_prog " -m $func_quote_for_eval_result" - fi - fi - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "\`$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - func_append staticlibs " $file" - ;; - - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) func_append current_libdirs " $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) func_append future_libdirs " $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir="$func_dirname_result" - func_append dir "$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking \`$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname="$1" - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme="$stripme" - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme="" - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && func_append staticlibs " $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "\`$lib' has not been installed in \`$libdir'" - finalize=no - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - $opt_dry_run || { - if test "$finalize" = yes; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_silent || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink \`$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file="$outputname" - else - func_warning "cannot relink \`$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name="$func_basename_result" - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $tool_oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = install && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -#endif - -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" - $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $opt_dry_run || { - $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" - func_basename "$dlprefile" - name="$func_basename_result" - case $host in - *cygwin* | *mingw* | *cegcc* ) - # if an import library, we need to obtain dlname - if func_win32_import_lib_p "$dlprefile"; then - func_tr_sh "$dlprefile" - eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename="" - if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then - # Use subshell, to avoid clobbering current variable values - dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname" ; then - func_basename "$dlprefile_dlname" - dlprefile_dlbasename="$func_basename_result" - else - # no lafile. user explicitly requested -dlpreopen . - $sharedlib_from_linklib_cmd "$dlprefile" - dlprefile_dlbasename=$sharedlib_from_linklib_result - fi - fi - $opt_dry_run || { - if test -n "$dlprefile_dlbasename" ; then - eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' - else - func_warning "Could not compute DLL name from $name" - eval '$ECHO ": $name " >> "$nlist"' - fi - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | - $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" - } - else # not an import lib - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - fi - ;; - *) - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - ;; - esac - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; -LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) func_append symtab_cflags " $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' - - # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $opt_debug - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' - 1,100{ - / I /{ - s,.*,import, - p - q - } - }'` - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - -# func_cygming_dll_for_implib ARG -# -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib () -{ - $opt_debug - sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` -} - -# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs -# -# The is the core of a fallback implementation of a -# platform-specific function to extract the name of the -# DLL associated with the specified import library LIBNAME. -# -# SECTION_NAME is either .idata$6 or .idata$7, depending -# on the platform and compiler that created the implib. -# -# Echos the name of the DLL associated with the -# specified import library. -func_cygming_dll_for_implib_fallback_core () -{ - $opt_debug - match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` - $OBJDUMP -s --section "$1" "$2" 2>/dev/null | - $SED '/^Contents of section '"$match_literal"':/{ - # Place marker at beginning of archive member dllname section - s/.*/====MARK====/ - p - d - } - # These lines can sometimes be longer than 43 characters, but - # are always uninteresting - /:[ ]*file format pe[i]\{,1\}-/d - /^In archive [^:]*:/d - # Ensure marker is printed - /^====MARK====/p - # Remove all lines with less than 43 characters - /^.\{43\}/!d - # From remaining lines, remove first 43 characters - s/^.\{43\}//' | - $SED -n ' - # Join marker and all lines until next marker into a single line - /^====MARK====/ b para - H - $ b para - b - :para - x - s/\n//g - # Remove the marker - s/^====MARK====// - # Remove trailing dots and whitespace - s/[\. \t]*$// - # Print - /./p' | - # we now have a list, one entry per line, of the stringified - # contents of the appropriate section of all members of the - # archive which possess that section. Heuristic: eliminate - # all those which have a first or second character that is - # a '.' (that is, objdump's representation of an unprintable - # character.) This should work for all archives with less than - # 0x302f exports -- but will fail for DLLs whose name actually - # begins with a literal '.' or a single character followed by - # a '.'. - # - # Of those that remain, print the first one. - $SED -e '/^\./d;/^.\./d;q' -} - -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - -# func_cygming_dll_for_implib_fallback ARG -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# -# This fallback implementation is for use when $DLLTOOL -# does not support the --identify-strict option. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib_fallback () -{ - $opt_debug - if func_cygming_gnu_implib_p "$1" ; then - # binutils import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1" ; then - # ms-generated import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` - else - # unknown - sharedlib_from_linklib_result="" - fi -} - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - if test "$lock_old_archive_extraction" = yes; then - lockfile=$f_ex_an_ar_oldlib.lock - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - fi - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ - 'stat=$?; rm -f "$lockfile"; exit $stat' - if test "$lock_old_archive_extraction" = yes; then - $opt_dry_run || rm -f "$lockfile" - fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $opt_debug - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib="$func_basename_result" - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result="$my_oldobjs" -} - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - file=\"\$0\"" - - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` - $ECHO "\ - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - ECHO=\"$qECHO\" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ which is used only on -# windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options which match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's $0 value, followed by "$@". -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=\$0 - shift - for lt_opt - do - case \"\$lt_opt\" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` - test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. - lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` - cat \"\$lt_dump_D/\$lt_dump_F\" - exit 0 - ;; - --lt-*) - \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n \"\$lt_option_debug\"; then - echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" - lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from \$@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - case \" \$* \" in - *\\ --lt-*) - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done ;; - esac - func_exec_program_core \${1+\"\$@\"} -} - - # Parse options - func_parse_lt_options \"\$0\" \${1+\"\$@\"} - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # fixup the dll searchpath if we need to. - # - # Fix the DLL searchpath if we need to. Do this before prepending - # to shlibpath, because on Windows, both are PATH and uninstalled - # libraries must come first. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - func_exec_program \${1+\"\$@\"} - fi - else - # The program doesn't exist. - \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 - \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" -} - - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat < -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -/* declarations of non-ANSI functions */ -#if defined(__MINGW32__) -# ifdef __STRICT_ANSI__ -int _putenv (const char *); -# endif -#elif defined(__CYGWIN__) -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined (other platforms) ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined(_MSC_VER) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -# ifndef _INTPTR_T_DEFINED -# define _INTPTR_T_DEFINED -# define intptr_t int -# endif -#elif defined(__MINGW32__) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined(__CYGWIN__) -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined (other platforms) ... */ -#endif - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -#if defined(LT_DEBUGWRAPPER) -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp (str, pat) == 0) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - int len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - int orig_value_len = strlen (orig_value); - int add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - int len = strlen (new_value); - while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[len-1] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -EOF - case $host_os in - mingw*) - cat <<"EOF" - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -EOF - ;; - esac - - cat <<"EOF" -void lt_dump_script (FILE* f) -{ -EOF - func_emit_wrapper yes | - $SED -n -e ' -s/^\(.\{79\}\)\(..*\)/\1\ -\2/ -h -s/\([\\"]\)/\\\1/g -s/$/\\n/ -s/\([^\n]*\).*/ fputs ("\1", f);/p -g -D' - cat <<"EOF" -} -EOF -} -# end: func_emit_cwrapperexe_src - -# func_win32_import_lib_p ARG -# True if ARG is an import lib, as indicated by $file_magic_cmd -func_win32_import_lib_p () -{ - $opt_debug - case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in - *import*) : ;; - *) false ;; - esac -} - -# func_mode_link arg... -func_mode_link () -{ - $opt_debug - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=no - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module="${wl}-single_module" - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir="$arg" - prev= - continue - ;; - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - func_append dlfiles " $arg" - else - func_append dlprefiles " $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) func_append deplibs " $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# func_append moreargs " $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file \`$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) func_append rpath " $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) func_append xrpath " $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - weak) - func_append weak_libs " $arg" - prev= - continue - ;; - xcclinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname "-L" '' "$arg" - if test -z "$func_stripname_result"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between \`-L' and \`$1'" - else - func_fatal_error "need path for \`-L' option" - fi - fi - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "* | *" $arg "*) - # Will only happen for absolute or sysroot arguments - ;; - *) - # Preserve sysroot, but never include relative directories - case $dir in - [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; - *) func_append deplibs " -L$dir" ;; - esac - func_append lib_search_path " $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) func_append dllsearchpath ":$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - func_append deplibs " System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test "X$arg" = "X-lc" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue - ;; - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - func_append deplibs " $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot|--sysroot) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) func_append new_inherited_linker_flags " $arg" ;; - esac - continue - ;; - - -multi_module) - single_module="${wl}-multi_module" - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - =*) - func_stripname '=' '' "$dir" - dir=$lt_sysroot$func_stripname_result - ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $func_quote_for_eval_result" - func_append compiler_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $wl$func_quote_for_eval_result" - func_append compiler_flags " $wl$func_quote_for_eval_result" - func_append linker_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - # Flags to be passed through unchanged, with rationale: - # -64, -mips[0-9] enable 64-bit mode for the SGI compiler - # -r[0-9][0-9]* specify processor for the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler - # +DA*, +DD* enable 64-bit mode for the HP compiler - # -q* compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* architecture-specific flags for GCC - # -F/path path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* profiling flags for GCC - # @file GCC response files - # -tp=* Portland pgcc target processor selection - # --sysroot=* for sysroot support - # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-flto*|-fwhopr*|-fuse-linker-plugin) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - func_append compile_command " $arg" - func_append finalize_command " $arg" - func_append compiler_flags " $arg" - continue - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - *.$objext) - # A standard object. - func_append objs " $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - func_append deplibs " $arg" - func_append old_deplibs " $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - func_resolve_sysroot "$arg" - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - func_append dlfiles " $func_resolve_sysroot_result" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - func_append dlprefiles " $func_resolve_sysroot_result" - prev= - else - func_append deplibs " $func_resolve_sysroot_result" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - func_dirname "$output" "/" "" - output_objdir="$func_dirname_result$objdir" - func_to_tool_file "$output_objdir/" - tool_output_objdir=$func_to_tool_file_result - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_preserve_dup_deps ; then - case "$libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append libs " $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; - esac - func_append pre_post_deps " $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs="$tmp_deplibs" - fi - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - func_resolve_sysroot "$lib" - case $lib in - *.la) func_source "$func_resolve_sysroot_result" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) func_append deplibs " $deplib" ;; - esac - done - done - libs="$dlprefiles" - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append compiler_flags " $deplib" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test "$linkmode" = lib; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - *) - func_warning "\`-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - func_stripname '-R' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) - func_resolve_sysroot "$deplib" - lib=$func_resolve_sysroot_result - ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - else - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - ;; - esac - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - func_append newdlprefiles " $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append newdlfiles " $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && func_append dlfiles " $dlopen" - test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - # It is a libtool convenience library, so add in its objects. - func_append convenience " $ladir/$objdir/$old_library" - func_append old_convenience " $ladir/$objdir/$old_library" - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" - fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - if test -n "$old_library" && - { test "$prefer_static_libs" = yes || - test "$prefer_static_libs,$installed" = "built,no"; }; then - linklib=$old_library - else - for l in $old_library $library_names; do - linklib="$l" - done - fi - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - func_append dlprefiles " $lib $dependency_libs" - else - func_append newdlfiles " $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of \`$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" - fi - ;; - esac - func_basename "$lib" - laname="$func_basename_result" - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library \`$lib' was moved." - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$lt_sysroot$libdir" - absdir="$lt_sysroot$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" - fi - case "$host" in - # special handling for platforms with PE-DLLs. - *cygwin* | *mingw* | *cegcc* ) - # Linker will automatically link against shared library if both - # static and shared are present. Therefore, ensure we extract - # symbols from the import library if a shared library is present - # (otherwise, the dlopen module name will be incorrect). We do - # this by putting the import library name into $newdlprefiles. - # We recover the dlopen module name by 'saving' the la file - # name in a special purpose variable, and (later) extracting the - # dlname from the la file. - if test -n "$dlname"; then - func_tr_sh "$dir/$linklib" - eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" - func_append newdlprefiles " $dir/$linklib" - else - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - fi - ;; - * ) - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - func_append newdlprefiles " $dir/$dlname" - else - func_append newdlprefiles " $dir/$linklib" - fi - ;; - esac - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - func_append newlib_search_path " $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in - *"$absdir:"*) ;; - *) func_append temp_rpath "$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes; then - use_static_libs=no - fi - if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then - case $host in - *cygwin* | *mingw* | *cegcc*) - # No point in relinking DLLs because paths are not encoded - func_append notinst_deplibs " $lib" - need_relink=no - ;; - *) - if test "$installed" = no; then - func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" - break - fi - done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - echo - if test "$linkmode" = prog; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname="$1" - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw* | *cegcc*) - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - func_basename "$soroot" - soname="$func_basename_result" - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from \`$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$opt_mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - echo - echo "*** And there doesn't seem to be a static archive available" - echo "*** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - elif test -n "$old_library"; then - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$absdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) func_append compile_shlibpath "$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$opt_mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system can not link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) func_append xrpath " $temp_xrpath";; - esac;; - *) func_append temp_deplibs " $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - func_append newlib_search_path " $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result";; - *) func_resolve_sysroot "$deplib" ;; - esac - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $func_resolve_sysroot_result "*) - func_append specialdeplibs " $func_resolve_sysroot_result" ;; - esac - fi - func_append tmp_libs " $func_resolve_sysroot_result" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path="$deplib" ;; - *.la) - func_resolve_sysroot "$deplib" - deplib=$func_resolve_sysroot_result - func_dirname "$deplib" "" "." - dir=$func_dirname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" - path= - fi - fi - ;; - *) - path="-L$absdir/$objdir" - ;; - esac - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" - - path="-L$absdir" - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) func_append lib_search_path " $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) func_append tmp_libs " $deplib" ;; - esac - ;; - *) func_append tmp_libs " $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - func_append tmp_libs " $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "\`-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - func_append objs "$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" - - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" - else - echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - func_append libobjs " $objs" - fi - fi - - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" - - install_libdir="$1" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - shift - IFS="$save_ifs" - - test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$1" - number_minor="$2" - number_revision="$3" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - # correct linux to gnu/linux during the next big refactor - darwin|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_minor" - lt_irix_increment=no - ;; - esac - ;; - no) - current="$1" - revision="$2" - age="$3" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current" - ;; - - irix | nonstopux) - if test "X$lt_irix_increment" = "Xno"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) # correct to gnu/linux during the next big refactor - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - func_append verstring ":${current}.0" - ;; - - qnx) - major=".$current" - versuffix=".$current" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - - *) - func_fatal_configuration "unknown library version type \`$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - fi - - func_generate_dlsyms "$libname" "$libname" "yes" - func_append libobjs " $symfileobj" - test "X$libobjs" = "X " && libobjs= - - if test "$opt_mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - func_append removelist " $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - func_append oldlibs " $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` - # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` - # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - func_replace_sysroot "$libdir" - func_append temp_xrpath " -R$func_replace_sysroot_result" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) func_append dlfiles " $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) func_append dlprefiles " $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - func_append deplibs " System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - func_append deplibs " -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c </dev/null` - $nocaseglob - else - potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` - fi - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append newdeplibs " $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test "X$deplibs_check_method" = "Xnone"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - deplibs="$new_libs" - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - # Remove ${wl} instances when linking with ld. - # FIXME: should test the right _cmds variable. - case $archive_cmds in - *\$LD\ *) wl= ;; - esac - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$opt_mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - func_replace_sysroot "$libdir" - libdir=$func_replace_sysroot_result - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append dep_rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname="$1" - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - linknames= - for link - do - func_append linknames " $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols="$output_objdir/$libname.uexp" - func_append delfiles " $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols="$export_symbols" - export_symbols= - always_export_symbols=yes - fi - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd1 in $cmds; do - IFS="$save_ifs" - # Take the normal branch if the nm_file_list_spec branch - # doesn't work or if tool conversion is not needed. - case $nm_file_list_spec~$to_tool_file_cmd in - *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) - try_normal_branch=yes - eval cmd=\"$cmd1\" - func_len " $cmd" - len=$func_len_result - ;; - *) - try_normal_branch=no - ;; - esac - if test "$try_normal_branch" = yes \ - && { test "$len" -lt "$max_cmd_len" \ - || test "$max_cmd_len" -le -1; } - then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - elif test -n "$nm_file_list_spec"; then - func_basename "$output" - output_la=$func_basename_result - save_libobjs=$libobjs - save_output=$output - output=${output_objdir}/${output_la}.nm - func_to_tool_file "$output" - libobjs=$nm_file_list_spec$func_to_tool_file_result - func_append delfiles " $output" - func_verbose "creating $NM input file list: $output" - for obj in $save_libobjs; do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > "$output" - eval cmd=\"$cmd1\" - func_show_eval "$cmd" 'exit $?' - output=$save_output - libobjs=$save_libobjs - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - func_append tmp_deplibs " $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - func_append linker_flags " $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then - output=${output_objdir}/${output_la}.lnkscript - func_verbose "creating GNU ld script: $output" - echo 'INPUT (' > $output - for obj in $save_libobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - echo ')' >> $output - func_append delfiles " $output" - func_to_tool_file "$output" - output=$func_to_tool_file_result - elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then - output=${output_objdir}/${output_la}.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test "$compiler_needs_object" = yes; then - firstobj="$1 " - shift - fi - for obj - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - func_append delfiles " $output" - func_to_tool_file "$output" - output=$firstobj\"$file_list_spec$func_to_tool_file_result\" - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-${k}.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test "X$objlist" = X || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-${k}.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-${k}.$objext - objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\${concat_cmds}$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" - fi - func_append delfiles " $output" - - else - output= - fi - - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - fi - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - if ${skipped_export-false}; then - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - fi - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "\`-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` - else - gentop="$output_objdir/${obj}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # If we're not building shared, we need to use non_pic_objs - test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "\`-release' is ignored for programs" - - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - func_append compile_command " ${wl}-bind_at_load" - func_append finalize_command " ${wl}-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - - func_append compile_command " $compile_deplibs" - func_append finalize_command " $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) func_append dllsearchpath ":$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) func_append finalize_perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=yes - case $host in - *cegcc* | *mingw32ce*) - # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=no - ;; - *cygwin* | *mingw* ) - if test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - esac - if test "$wrappers_required" = no; then - # Replace the output file specification. - compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.${objext}"; then - func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' - fi - - exit $exit_status - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - func_append rpath "$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output_objdir/$outputname" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save $symfileobj" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then - func_append oldobjs " $symfileobj" - fi - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $addlibs - func_append oldobjs " $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append oldobjs " $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase="$func_basename_result" - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - func_append oldobjs " $gentop/$newobj" - ;; - *) func_append oldobjs " $obj" ;; - esac - done - fi - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - elif test -n "$archiver_list_spec"; then - func_verbose "using command file archive linking..." - for obj in $oldobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > $output_objdir/$libname.libcmd - func_to_tool_file "$output_objdir/$libname.libcmd" - oldobjs=" $archiver_list_spec$func_to_tool_file_result" - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name="$func_basename_result" - func_resolve_sysroot "$deplib" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" - ;; - -L*) - func_stripname -L '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -L$func_replace_sysroot_result" - ;; - -R*) - func_stripname -R '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -R$func_replace_sysroot_result" - ;; - *) func_append newdependency_libs " $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" - ;; - *) func_append newdlfiles " $lib" ;; - esac - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" - ;; - esac - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlfiles " $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlprefiles " $abs" - done - dlprefiles="$newdlprefiles" - fi - $RM $output - # place dlname in correct position for cygwin - # In fact, it would be nice if we could use this code for all target - # systems that can't hard-code library paths into their executables - # and that have no shared library path variable independent of PATH, - # but it turns out we can't easily determine that from inspecting - # libtool variables, so we have to hard-code the OSs to which it - # applies here; at the moment, that means platforms that use the PE - # object format with DLL files. See the long comment at the top of - # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) - # If a -bindir argument was supplied, place the dll there. - if test "x$bindir" != x ; - then - func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result$dlname - else - # Otherwise fall back on heuristic. - tdlname=../bin/$dlname - fi - ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that can not go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -{ test "$opt_mode" = link || test "$opt_mode" = relink; } && - func_mode_link ${1+"$@"} - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $opt_debug - RM="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) func_append RM " $arg"; rmforce=yes ;; - -*) func_append RM " $arg" ;; - *) func_append files " $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - for file in $files; do - func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - odir="$objdir" - else - odir="$dir/$objdir" - fi - func_basename "$file" - name="$func_basename_result" - test "$opt_mode" = uninstall && odir="$dir" - - # Remember odir for removal later, being careful to avoid duplicates - if test "$opt_mode" = clean; then - case " $rmdirs " in - *" $odir "*) ;; - *) func_append rmdirs " $odir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - func_append rmfiles " $odir/$n" - done - test -n "$old_library" && func_append rmfiles " $odir/$old_library" - - case "$opt_mode" in - clean) - case " $library_names " in - *" $dlname "*) ;; - *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; - esac - test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then - func_append rmfiles " $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && - test "$non_pic_object" != none; then - func_append rmfiles " $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$opt_mode" = clean ; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - func_append rmfiles " $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - func_append rmfiles " $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - func_append rmfiles " $odir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - func_append rmfiles " $odir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && - func_mode_uninstall ${1+"$@"} - -test -z "$opt_mode" && { - help="$generic_help" - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$opt_mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: -# vi:sw=2 - diff --git a/Externals/libusb/libusb/os/haiku/m4/libtool.m4 b/Externals/libusb/libusb/os/haiku/m4/libtool.m4 deleted file mode 100644 index f12cfdf0b48e..000000000000 --- a/Externals/libusb/libusb/os/haiku/m4/libtool.m4 +++ /dev/null @@ -1,7992 +0,0 @@ -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 57 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl -dnl -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - -## ------------------------------------- ## -## Accumulate code for creating libtool. ## -## ------------------------------------- ## - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - -## ------------------------ ## -## FIXME: Eliminate VARNAME ## -## ------------------------ ## - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2011 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_REPLACE_SHELLFNS - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Go], [_LT_LANG(GO)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -m4_ifndef([AC_PROG_GO], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_GO. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ -m4_defun([AC_PROG_GO], -[AC_LANG_PUSH(Go)dnl -AC_ARG_VAR([GOC], [Go compiler command])dnl -AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl -_AC_ARG_VAR_LDFLAGS()dnl -AC_CHECK_TOOL(GOC, gccgo) -if test -z "$GOC"; then - if test -n "$ac_tool_prefix"; then - AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) - fi -fi -if test -z "$GOC"; then - AC_CHECK_PROG(GOC, gccgo, gccgo, false) -fi -])#m4_defun -])#m4_ifndef - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([AC_PROG_GO], - [LT_LANG(GO)], - [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test $_lt_result -eq 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) - - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES([TAG]) -# --------------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], - [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case "$ECHO" in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[ --with-sysroot[=DIR] Search for dependent libraries within DIR - (or the compiler's sysroot if not specified).], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([${with_sysroot}]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and in which our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD="${LD-ld}_sol2" - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[23]].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ F* | *Sun*Fortran*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - *Intel*\ [[CF]]*Compiler*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - *Portland\ Group*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -AC_CACHE_CHECK([for $compiler option to produce PIC], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS="$save_LDFLAGS"]) - if test "$lt_cv_irix_exported_symbol" = yes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [postlink_cmds], [2], - [Commands necessary for finishing linking programs]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - gnu*) - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF -package foo -func foo() { -} -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" - CFLAGS="$lt_save_CFLAGS" -fi # test "$_lt_disable_F77" != yes - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_GO_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Go compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GO_CONFIG], -[AC_REQUIRE([LT_PROG_GO])dnl -AC_LANG_SAVE - -# Source file extension for Go test sources. -ac_ext=go - -# Object file extension for compiled Go test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="package main; func main() { }" - -# Code to be used in simple link tests -lt_simple_link_test_code='package main; func main() { }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GOC-"gccgo"} -CFLAGS=$GOFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# Go did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GO_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_GO -# ---------- -AC_DEFUN([LT_PROG_GO], -[AC_CHECK_TOOL(GOC, gccgo,) -]) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -m4_defun([_LT_PROG_FUNCTION_REPLACE], -[dnl { -sed -e '/^$1 ()$/,/^} # $1 /c\ -$1 ()\ -{\ -m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: -]) - - -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. -m4_defun([_LT_PROG_REPLACE_SHELLFNS], -[if test x"$xsi_shell" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl - func_quote_for_eval "${2}" -dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ - eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine which file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/Externals/libusb/libusb/os/haiku/m4/ltoptions.m4 b/Externals/libusb/libusb/os/haiku/m4/ltoptions.m4 deleted file mode 100644 index 5d9acd8e23bc..000000000000 --- a/Externals/libusb/libusb/os/haiku/m4/ltoptions.m4 +++ /dev/null @@ -1,384 +0,0 @@ -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 7 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - -## --------------------------------- ## -## Macros to handle LT_INIT options. ## -## --------------------------------- ## - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for lt_pkg in $withval; do - IFS="$lt_save_ifs" - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - -## ----------------- ## -## LTDL_INIT Options ## -## ----------------- ## - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/Externals/libusb/libusb/os/haiku/m4/ltsugar.m4 b/Externals/libusb/libusb/os/haiku/m4/ltsugar.m4 deleted file mode 100644 index 9000a057d31d..000000000000 --- a/Externals/libusb/libusb/os/haiku/m4/ltsugar.m4 +++ /dev/null @@ -1,123 +0,0 @@ -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) diff --git a/Externals/libusb/libusb/os/haiku/m4/ltversion.m4 b/Externals/libusb/libusb/os/haiku/m4/ltversion.m4 deleted file mode 100644 index 07a8602d48d6..000000000000 --- a/Externals/libusb/libusb/os/haiku/m4/ltversion.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ - -# serial 3337 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4.2]) -m4_define([LT_PACKAGE_REVISION], [1.3337]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.2' -macro_revision='1.3337' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) diff --git a/Externals/libusb/libusb/os/haiku/m4/lt~obsolete.m4 b/Externals/libusb/libusb/os/haiku/m4/lt~obsolete.m4 deleted file mode 100644 index c573da90c5cc..000000000000 --- a/Externals/libusb/libusb/os/haiku/m4/lt~obsolete.m4 +++ /dev/null @@ -1,98 +0,0 @@ -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/Externals/libusb/libusb/os/haiku/missing b/Externals/libusb/libusb/os/haiku/missing deleted file mode 100644 index f62bbae306c7..000000000000 --- a/Externals/libusb/libusb/os/haiku/missing +++ /dev/null @@ -1,215 +0,0 @@ -#! /bin/sh -# Common wrapper for a few potentially missing GNU programs. - -scriptversion=2013-10-28.13; # UTC - -# Copyright (C) 1996-2014 Free Software Foundation, Inc. -# Originally written by Fran,cois Pinard , 1996. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try '$0 --help' for more information" - exit 1 -fi - -case $1 in - - --is-lightweight) - # Used by our autoconf macros to check whether the available missing - # script is modern enough. - exit 0 - ;; - - --run) - # Back-compat with the calling convention used by older automake. - shift - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due -to PROGRAM being missing or too old. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - -Supported PROGRAM values: - aclocal autoconf autoheader autom4te automake makeinfo - bison yacc flex lex help2man - -Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and -'g' are ignored when checking the name. - -Send bug reports to ." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) - echo 1>&2 "$0: unknown '$1' option" - echo 1>&2 "Try '$0 --help' for more information" - exit 1 - ;; - -esac - -# Run the given program, remember its exit status. -"$@"; st=$? - -# If it succeeded, we are done. -test $st -eq 0 && exit 0 - -# Also exit now if we it failed (or wasn't found), and '--version' was -# passed; such an option is passed most likely to detect whether the -# program is present and works. -case $2 in --version|--help) exit $st;; esac - -# Exit code 63 means version mismatch. This often happens when the user -# tries to use an ancient version of a tool on a file that requires a -# minimum version. -if test $st -eq 63; then - msg="probably too old" -elif test $st -eq 127; then - # Program was missing. - msg="missing on your system" -else - # Program was found and executed, but failed. Give up. - exit $st -fi - -perl_URL=http://www.perl.org/ -flex_URL=http://flex.sourceforge.net/ -gnu_software_URL=http://www.gnu.org/software - -program_details () -{ - case $1 in - aclocal|automake) - echo "The '$1' program is part of the GNU Automake package:" - echo "<$gnu_software_URL/automake>" - echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" - echo "<$gnu_software_URL/autoconf>" - echo "<$gnu_software_URL/m4/>" - echo "<$perl_URL>" - ;; - autoconf|autom4te|autoheader) - echo "The '$1' program is part of the GNU Autoconf package:" - echo "<$gnu_software_URL/autoconf/>" - echo "It also requires GNU m4 and Perl in order to run:" - echo "<$gnu_software_URL/m4/>" - echo "<$perl_URL>" - ;; - esac -} - -give_advice () -{ - # Normalize program name to check for. - normalized_program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - - printf '%s\n' "'$1' is $msg." - - configure_deps="'configure.ac' or m4 files included by 'configure.ac'" - case $normalized_program in - autoconf*) - echo "You should only need it if you modified 'configure.ac'," - echo "or m4 files included by it." - program_details 'autoconf' - ;; - autoheader*) - echo "You should only need it if you modified 'acconfig.h' or" - echo "$configure_deps." - program_details 'autoheader' - ;; - automake*) - echo "You should only need it if you modified 'Makefile.am' or" - echo "$configure_deps." - program_details 'automake' - ;; - aclocal*) - echo "You should only need it if you modified 'acinclude.m4' or" - echo "$configure_deps." - program_details 'aclocal' - ;; - autom4te*) - echo "You might have modified some maintainer files that require" - echo "the 'autom4te' program to be rebuilt." - program_details 'autom4te' - ;; - bison*|yacc*) - echo "You should only need it if you modified a '.y' file." - echo "You may want to install the GNU Bison package:" - echo "<$gnu_software_URL/bison/>" - ;; - lex*|flex*) - echo "You should only need it if you modified a '.l' file." - echo "You may want to install the Fast Lexical Analyzer package:" - echo "<$flex_URL>" - ;; - help2man*) - echo "You should only need it if you modified a dependency" \ - "of a man page." - echo "You may want to install the GNU Help2man package:" - echo "<$gnu_software_URL/help2man/>" - ;; - makeinfo*) - echo "You should only need it if you modified a '.texi' file, or" - echo "any other file indirectly affecting the aspect of the manual." - echo "You might want to install the Texinfo package:" - echo "<$gnu_software_URL/texinfo/>" - echo "The spurious makeinfo call might also be the consequence of" - echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" - echo "want to install GNU make:" - echo "<$gnu_software_URL/make/>" - ;; - *) - echo "You might have modified some files without having the proper" - echo "tools for further handling them. Check the 'README' file, it" - echo "often tells you about the needed prerequisites for installing" - echo "this package. You may also peek at any GNU archive site, in" - echo "case some other package contains this missing '$1' program." - ;; - esac -} - -give_advice "$1" | sed -e '1s/^/WARNING: /' \ - -e '2,$s/^/ /' >&2 - -# Propagate the correct exit status (expected to be 127 for a program -# not found, 63 for a program that failed due to version mismatch). -exit $st - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/Externals/libusb/libusb/os/haiku_pollfs.cpp b/Externals/libusb/libusb/os/haiku_pollfs.cpp deleted file mode 100644 index e0c771320619..000000000000 --- a/Externals/libusb/libusb/os/haiku_pollfs.cpp +++ /dev/null @@ -1,367 +0,0 @@ -/* - * Copyright 2007-2008, Haiku Inc. All rights reserved. - * Distributed under the terms of the MIT License. - * - * Authors: - * Michael Lotz - */ - -#include "haiku_usb.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -class WatchedEntry { -public: - WatchedEntry(BMessenger *, entry_ref *); - ~WatchedEntry(); - bool EntryCreated(entry_ref *ref); - bool EntryRemoved(ino_t node); - bool InitCheck(); - -private: - BMessenger* fMessenger; - node_ref fNode; - bool fIsDirectory; - USBDevice* fDevice; - WatchedEntry* fEntries; - WatchedEntry* fLink; - bool fInitCheck; -}; - - -class RosterLooper : public BLooper { -public: - RosterLooper(USBRoster *); - void Stop(); - virtual void MessageReceived(BMessage *); - bool InitCheck(); - -private: - USBRoster* fRoster; - WatchedEntry* fRoot; - BMessenger* fMessenger; - bool fInitCheck; -}; - - -WatchedEntry::WatchedEntry(BMessenger *messenger, entry_ref *ref) - : fMessenger(messenger), - fIsDirectory(false), - fDevice(NULL), - fEntries(NULL), - fLink(NULL), - fInitCheck(false) -{ - BEntry entry(ref); - entry.GetNodeRef(&fNode); - - BDirectory directory; - if (entry.IsDirectory() && directory.SetTo(ref) >= B_OK) { - fIsDirectory = true; - - while (directory.GetNextEntry(&entry) >= B_OK) { - if (entry.GetRef(ref) < B_OK) - continue; - - WatchedEntry *child = new(std::nothrow) WatchedEntry(fMessenger, ref); - if (child == NULL) - continue; - if (child->InitCheck() == false) { - delete child; - continue; - } - - child->fLink = fEntries; - fEntries = child; - } - - watch_node(&fNode, B_WATCH_DIRECTORY, *fMessenger); - } - else { - if (strncmp(ref->name, "raw", 3) == 0) - return; - - BPath path, parent_path; - entry.GetPath(&path); - fDevice = new(std::nothrow) USBDevice(path.Path()); - if (fDevice != NULL && fDevice->InitCheck() == true) { - // Add this new device to each active context's device list - struct libusb_context *ctx; - unsigned long session_id = (unsigned long)&fDevice; - - usbi_mutex_lock(&active_contexts_lock); - list_for_each_entry(ctx, &active_contexts_list, list, struct libusb_context) { - struct libusb_device *dev = usbi_get_device_by_session_id(ctx, session_id); - if (dev) { - usbi_dbg("using previously allocated device with location %lu", session_id); - libusb_unref_device(dev); - continue; - } - usbi_dbg("allocating new device with location %lu", session_id); - dev = usbi_alloc_device(ctx, session_id); - if (!dev) { - usbi_dbg("device allocation failed"); - continue; - } - *((USBDevice **)dev->os_priv) = fDevice; - - // Calculate pseudo-device-address - int addr, tmp; - if (strcmp(path.Leaf(), "hub") == 0) - tmp = 100; //Random Number - else - sscanf(path.Leaf(), "%d", &tmp); - addr = tmp + 1; - path.GetParent(&parent_path); - while (strcmp(parent_path.Leaf(), "usb") != 0) { - sscanf(parent_path.Leaf(), "%d", &tmp); - addr += tmp + 1; - parent_path.GetParent(&parent_path); - } - sscanf(path.Path(), "/dev/bus/usb/%d", &dev->bus_number); - dev->device_address = addr - (dev->bus_number + 1); - - if (usbi_sanitize_device(dev) < 0) { - usbi_dbg("device sanitization failed"); - libusb_unref_device(dev); - continue; - } - usbi_connect_device(dev); - } - usbi_mutex_unlock(&active_contexts_lock); - } - else if (fDevice) { - delete fDevice; - fDevice = NULL; - return; - } - } - fInitCheck = true; -} - - -WatchedEntry::~WatchedEntry() -{ - if (fIsDirectory) { - watch_node(&fNode, B_STOP_WATCHING, *fMessenger); - - WatchedEntry *child = fEntries; - while (child) { - WatchedEntry *next = child->fLink; - delete child; - child = next; - } - } - - if (fDevice) { - // Remove this device from each active context's device list - struct libusb_context *ctx; - struct libusb_device *dev; - unsigned long session_id = (unsigned long)&fDevice; - - usbi_mutex_lock(&active_contexts_lock); - list_for_each_entry(ctx, &active_contexts_list, list, struct libusb_context) { - dev = usbi_get_device_by_session_id(ctx, session_id); - if (dev != NULL) { - usbi_disconnect_device(dev); - libusb_unref_device(dev); - } else { - usbi_dbg("device with location %lu not found", session_id); - } - } - usbi_mutex_static_unlock(&active_contexts_lock); - delete fDevice; - } -} - - -bool -WatchedEntry::EntryCreated(entry_ref *ref) -{ - if (!fIsDirectory) - return false; - - if (ref->directory != fNode.node) { - WatchedEntry *child = fEntries; - while (child) { - if (child->EntryCreated(ref)) - return true; - child = child->fLink; - } - return false; - } - - WatchedEntry *child = new(std::nothrow) WatchedEntry(fMessenger, ref); - if (child == NULL) - return false; - child->fLink = fEntries; - fEntries = child; - return true; -} - - -bool -WatchedEntry::EntryRemoved(ino_t node) -{ - if (!fIsDirectory) - return false; - - WatchedEntry *child = fEntries; - WatchedEntry *lastChild = NULL; - while (child) { - if (child->fNode.node == node) { - if (lastChild) - lastChild->fLink = child->fLink; - else - fEntries = child->fLink; - delete child; - return true; - } - - if (child->EntryRemoved(node)) - return true; - - lastChild = child; - child = child->fLink; - } - return false; -} - - -bool -WatchedEntry::InitCheck() -{ - return fInitCheck; -} - - -RosterLooper::RosterLooper(USBRoster *roster) - : BLooper("LibusbRoster Looper"), - fRoster(roster), - fRoot(NULL), - fMessenger(NULL), - fInitCheck(false) -{ - BEntry entry("/dev/bus/usb"); - if (!entry.Exists()) { - usbi_err(NULL, "usb_raw not published"); - return; - } - - Run(); - fMessenger = new(std::nothrow) BMessenger(this); - if (fMessenger == NULL) { - usbi_err(NULL, "error creating BMessenger object"); - return; - } - - if (Lock()) { - entry_ref ref; - entry.GetRef(&ref); - fRoot = new(std::nothrow) WatchedEntry(fMessenger, &ref); - Unlock(); - if (fRoot == NULL) - return; - if (fRoot->InitCheck() == false) { - delete fRoot; - fRoot = NULL; - return; - } - } - fInitCheck = true; -} - - -void -RosterLooper::Stop() -{ - Lock(); - delete fRoot; - delete fMessenger; - Quit(); -} - - -void -RosterLooper::MessageReceived(BMessage *message) -{ - int32 opcode; - if (message->FindInt32("opcode", &opcode) < B_OK) - return; - - switch (opcode) { - case B_ENTRY_CREATED: - { - dev_t device; - ino_t directory; - const char *name; - if (message->FindInt32("device", &device) < B_OK || - message->FindInt64("directory", &directory) < B_OK || - message->FindString("name", &name) < B_OK) - break; - - entry_ref ref(device, directory, name); - fRoot->EntryCreated(&ref); - break; - } - case B_ENTRY_REMOVED: - { - ino_t node; - if (message->FindInt64("node", &node) < B_OK) - break; - fRoot->EntryRemoved(node); - break; - } - } -} - - -bool -RosterLooper::InitCheck() -{ - return fInitCheck; -} - - -USBRoster::USBRoster() - : fLooper(NULL) -{ -} - - -USBRoster::~USBRoster() -{ - Stop(); -} - - -int -USBRoster::Start() -{ - if (fLooper == NULL) { - fLooper = new(std::nothrow) RosterLooper(this); - if (fLooper == NULL || ((RosterLooper *)fLooper)->InitCheck() == false) { - if (fLooper) - fLooper = NULL; - return LIBUSB_ERROR_OTHER; - } - } - return LIBUSB_SUCCESS; -} - - -void -USBRoster::Stop() -{ - if (fLooper) { - ((RosterLooper *)fLooper)->Stop(); - fLooper = NULL; - } -} diff --git a/Externals/libusb/libusb/os/haiku_usb.h b/Externals/libusb/libusb/os/haiku_usb.h deleted file mode 100644 index d51ae9eae8fa..000000000000 --- a/Externals/libusb/libusb/os/haiku_usb.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Haiku Backend for libusb - * Copyright © 2014 Akshay Jaggi - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include -#include -#include "libusbi.h" -#include "haiku_usb_raw.h" - -using namespace std; - -class USBDevice; -class USBDeviceHandle; -class USBTransfer; - -class USBDevice { -public: - USBDevice(const char *); - virtual ~USBDevice(); - const char* Location() const; - uint8 CountConfigurations() const; - const usb_device_descriptor* Descriptor() const; - const usb_configuration_descriptor* ConfigurationDescriptor(uint32) const; - const usb_configuration_descriptor* ActiveConfiguration() const; - uint8 EndpointToIndex(uint8) const; - uint8 EndpointToInterface(uint8) const; - int ClaimInterface(int); - int ReleaseInterface(int); - int CheckInterfacesFree(int); - int SetActiveConfiguration(int); - int ActiveConfigurationIndex() const; - bool InitCheck(); -private: - int Initialise(); - unsigned int fClaimedInterfaces; // Max Interfaces can be 32. Using a bitmask - usb_device_descriptor fDeviceDescriptor; - unsigned char** fConfigurationDescriptors; - int fActiveConfiguration; - char* fPath; - map fConfigToIndex; - map* fEndpointToIndex; - map* fEndpointToInterface; - bool fInitCheck; -}; - -class USBDeviceHandle { -public: - USBDeviceHandle(USBDevice *dev); - virtual ~USBDeviceHandle(); - int ClaimInterface(int); - int ReleaseInterface(int); - int SetConfiguration(int); - int SetAltSetting(int, int); - status_t SubmitTransfer(struct usbi_transfer *); - status_t CancelTransfer(USBTransfer *); - bool InitCheck(); -private: - int fRawFD; - static status_t TransfersThread(void *); - void TransfersWorker(); - USBDevice* fUSBDevice; - unsigned int fClaimedInterfaces; - BList fTransfers; - BLocker fTransfersLock; - sem_id fTransfersSem; - thread_id fTransfersThread; - bool fInitCheck; -}; - -class USBTransfer { -public: - USBTransfer(struct usbi_transfer *, USBDevice *); - virtual ~USBTransfer(); - void Do(int); - struct usbi_transfer* UsbiTransfer(); - void SetCancelled(); - bool IsCancelled(); -private: - struct usbi_transfer* fUsbiTransfer; - struct libusb_transfer* fLibusbTransfer; - USBDevice* fUSBDevice; - BLocker fStatusLock; - bool fCancelled; -}; - -class USBRoster { -public: - USBRoster(); - virtual ~USBRoster(); - int Start(); - void Stop(); -private: - void* fLooper; -}; diff --git a/Externals/libusb/libusb/os/haiku_usb_backend.cpp b/Externals/libusb/libusb/os/haiku_usb_backend.cpp deleted file mode 100644 index 01fba25e1ab6..000000000000 --- a/Externals/libusb/libusb/os/haiku_usb_backend.cpp +++ /dev/null @@ -1,517 +0,0 @@ -/* - * Haiku Backend for libusb - * Copyright © 2014 Akshay Jaggi - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include -#include -#include -#include -#include - -#include "haiku_usb.h" - -int _errno_to_libusb(int status) -{ - return status; -} - -USBTransfer::USBTransfer(struct usbi_transfer *itransfer, USBDevice *device) -{ - fUsbiTransfer = itransfer; - fLibusbTransfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - fUSBDevice = device; - fCancelled = false; -} - -USBTransfer::~USBTransfer() -{ -} - -struct usbi_transfer * -USBTransfer::UsbiTransfer() -{ - return fUsbiTransfer; -} - -void -USBTransfer::SetCancelled() -{ - fCancelled = true; -} - -bool -USBTransfer::IsCancelled() -{ - return fCancelled; -} - -void -USBTransfer::Do(int fRawFD) -{ - switch (fLibusbTransfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - { - struct libusb_control_setup *setup = (struct libusb_control_setup *)fLibusbTransfer->buffer; - usb_raw_command command; - command.control.request_type = setup->bmRequestType; - command.control.request = setup->bRequest; - command.control.value = setup->wValue; - command.control.index = setup->wIndex; - command.control.length = setup->wLength; - command.control.data = fLibusbTransfer->buffer + LIBUSB_CONTROL_SETUP_SIZE; - if (fCancelled) - break; - if (ioctl(fRawFD, B_USB_RAW_COMMAND_CONTROL_TRANSFER, &command, sizeof(command)) || - command.control.status != B_USB_RAW_STATUS_SUCCESS) { - fUsbiTransfer->transferred = -1; - usbi_err(TRANSFER_CTX(fLibusbTransfer), "failed control transfer"); - break; - } - fUsbiTransfer->transferred = command.control.length; - } - break; - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - { - usb_raw_command command; - command.transfer.interface = fUSBDevice->EndpointToInterface(fLibusbTransfer->endpoint); - command.transfer.endpoint = fUSBDevice->EndpointToIndex(fLibusbTransfer->endpoint); - command.transfer.data = fLibusbTransfer->buffer; - command.transfer.length = fLibusbTransfer->length; - if (fCancelled) - break; - if (fLibusbTransfer->type == LIBUSB_TRANSFER_TYPE_BULK) { - if (ioctl(fRawFD, B_USB_RAW_COMMAND_BULK_TRANSFER, &command, sizeof(command)) || - command.transfer.status != B_USB_RAW_STATUS_SUCCESS) { - fUsbiTransfer->transferred = -1; - usbi_err(TRANSFER_CTX(fLibusbTransfer), "failed bulk transfer"); - break; - } - } - else { - if (ioctl(fRawFD, B_USB_RAW_COMMAND_INTERRUPT_TRANSFER, &command, sizeof(command)) || - command.transfer.status != B_USB_RAW_STATUS_SUCCESS) { - fUsbiTransfer->transferred = -1; - usbi_err(TRANSFER_CTX(fLibusbTransfer), "failed interrupt transfer"); - break; - } - } - fUsbiTransfer->transferred = command.transfer.length; - } - break; - // IsochronousTransfers not tested - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - { - usb_raw_command command; - command.isochronous.interface = fUSBDevice->EndpointToInterface(fLibusbTransfer->endpoint); - command.isochronous.endpoint = fUSBDevice->EndpointToIndex(fLibusbTransfer->endpoint); - command.isochronous.data = fLibusbTransfer->buffer; - command.isochronous.length = fLibusbTransfer->length; - command.isochronous.packet_count = fLibusbTransfer->num_iso_packets; - int i; - usb_iso_packet_descriptor *packetDescriptors = new usb_iso_packet_descriptor[fLibusbTransfer->num_iso_packets]; - for (i = 0; i < fLibusbTransfer->num_iso_packets; i++) { - if ((int16)(fLibusbTransfer->iso_packet_desc[i]).length != (fLibusbTransfer->iso_packet_desc[i]).length) { - fUsbiTransfer->transferred = -1; - usbi_err(TRANSFER_CTX(fLibusbTransfer), "failed isochronous transfer"); - break; - } - packetDescriptors[i].request_length = (int16)(fLibusbTransfer->iso_packet_desc[i]).length; - } - if (i < fLibusbTransfer->num_iso_packets) - break; // TODO Handle this error - command.isochronous.packet_descriptors = packetDescriptors; - if (fCancelled) - break; - if (ioctl(fRawFD, B_USB_RAW_COMMAND_ISOCHRONOUS_TRANSFER, &command, sizeof(command)) || - command.isochronous.status != B_USB_RAW_STATUS_SUCCESS) { - fUsbiTransfer->transferred = -1; - usbi_err(TRANSFER_CTX(fLibusbTransfer), "failed isochronous transfer"); - break; - } - for (i = 0; i < fLibusbTransfer->num_iso_packets; i++) { - (fLibusbTransfer->iso_packet_desc[i]).actual_length = packetDescriptors[i].actual_length; - switch (packetDescriptors[i].status) { - case B_OK: - (fLibusbTransfer->iso_packet_desc[i]).status = LIBUSB_TRANSFER_COMPLETED; - break; - default: - (fLibusbTransfer->iso_packet_desc[i]).status = LIBUSB_TRANSFER_ERROR; - break; - } - } - delete[] packetDescriptors; - // Do we put the length of transfer here, for isochronous transfers? - fUsbiTransfer->transferred = command.transfer.length; - } - break; - default: - usbi_err(TRANSFER_CTX(fLibusbTransfer), "Unknown type of transfer"); - } -} - -bool -USBDeviceHandle::InitCheck() -{ - return fInitCheck; -} - -status_t -USBDeviceHandle::TransfersThread(void *self) -{ - USBDeviceHandle *handle = (USBDeviceHandle *)self; - handle->TransfersWorker(); - return B_OK; -} - -void -USBDeviceHandle::TransfersWorker() -{ - while (true) { - status_t status = acquire_sem(fTransfersSem); - if (status == B_BAD_SEM_ID) - break; - if (status == B_INTERRUPTED) - continue; - fTransfersLock.Lock(); - USBTransfer *fPendingTransfer = (USBTransfer *) fTransfers.RemoveItem((int32)0); - fTransfersLock.Unlock(); - fPendingTransfer->Do(fRawFD); - usbi_signal_transfer_completion(fPendingTransfer->UsbiTransfer()); - } -} - -status_t -USBDeviceHandle::SubmitTransfer(struct usbi_transfer *itransfer) -{ - USBTransfer *transfer = new USBTransfer(itransfer, fUSBDevice); - *((USBTransfer **)usbi_transfer_get_os_priv(itransfer)) = transfer; - BAutolock locker(fTransfersLock); - fTransfers.AddItem(transfer); - release_sem(fTransfersSem); - return LIBUSB_SUCCESS; -} - -status_t -USBDeviceHandle::CancelTransfer(USBTransfer *transfer) -{ - transfer->SetCancelled(); - fTransfersLock.Lock(); - bool removed = fTransfers.RemoveItem(transfer); - fTransfersLock.Unlock(); - if(removed) - usbi_signal_transfer_completion(transfer->UsbiTransfer()); - return LIBUSB_SUCCESS; -} - -USBDeviceHandle::USBDeviceHandle(USBDevice *dev) - : - fTransfersThread(-1), - fUSBDevice(dev), - fClaimedInterfaces(0), - fInitCheck(false) -{ - fRawFD = open(dev->Location(), O_RDWR | O_CLOEXEC); - if (fRawFD < 0) { - usbi_err(NULL,"failed to open device"); - return; - } - fTransfersSem = create_sem(0, "Transfers Queue Sem"); - fTransfersThread = spawn_thread(TransfersThread, "Transfer Worker", B_NORMAL_PRIORITY, this); - resume_thread(fTransfersThread); - fInitCheck = true; -} - -USBDeviceHandle::~USBDeviceHandle() -{ - if (fRawFD > 0) - close(fRawFD); - for(int i = 0; i < 32; i++) { - if (fClaimedInterfaces & (1U << i)) - ReleaseInterface(i); - } - delete_sem(fTransfersSem); - if (fTransfersThread > 0) - wait_for_thread(fTransfersThread, NULL); -} - -int -USBDeviceHandle::ClaimInterface(int inumber) -{ - int status = fUSBDevice->ClaimInterface(inumber); - if (status == LIBUSB_SUCCESS) - fClaimedInterfaces |= (1U << inumber); - return status; -} - -int -USBDeviceHandle::ReleaseInterface(int inumber) -{ - fUSBDevice->ReleaseInterface(inumber); - fClaimedInterfaces &= ~(1U << inumber); - return LIBUSB_SUCCESS; -} - -int -USBDeviceHandle::SetConfiguration(int config) -{ - int config_index = fUSBDevice->CheckInterfacesFree(config); - if(config_index == LIBUSB_ERROR_BUSY || config_index == LIBUSB_ERROR_NOT_FOUND) - return config_index; - usb_raw_command command; - command.config.config_index = config_index; - if (ioctl(fRawFD, B_USB_RAW_COMMAND_SET_CONFIGURATION, &command, sizeof(command)) || - command.config.status != B_USB_RAW_STATUS_SUCCESS) { - return _errno_to_libusb(command.config.status); - } - fUSBDevice->SetActiveConfiguration(config_index); - return LIBUSB_SUCCESS; -} - -int -USBDeviceHandle::SetAltSetting(int inumber, int alt) -{ - usb_raw_command command; - command.alternate.config_index = fUSBDevice->ActiveConfigurationIndex(); - command.alternate.interface_index = inumber; - if (ioctl(fRawFD, B_USB_RAW_COMMAND_GET_ACTIVE_ALT_INTERFACE_INDEX, &command, sizeof(command)) || - command.alternate.status != B_USB_RAW_STATUS_SUCCESS) { - usbi_err(NULL, "Error retrieving active alternate interface"); - return _errno_to_libusb(command.alternate.status); - } - if (command.alternate.alternate_info == alt) { - usbi_dbg("Setting alternate interface successful"); - return LIBUSB_SUCCESS; - } - command.alternate.alternate_info = alt; - if (ioctl(fRawFD, B_USB_RAW_COMMAND_SET_ALT_INTERFACE, &command, sizeof(command)) || - command.alternate.status != B_USB_RAW_STATUS_SUCCESS) { //IF IOCTL FAILS DEVICE DISONNECTED PROBABLY - usbi_err(NULL, "Error setting alternate interface"); - return _errno_to_libusb(command.alternate.status); - } - usbi_dbg("Setting alternate interface successful"); - return LIBUSB_SUCCESS; -} - - -USBDevice::USBDevice(const char *path) - : - fPath(NULL), - fActiveConfiguration(0), //0? - fConfigurationDescriptors(NULL), - fClaimedInterfaces(0), - fEndpointToIndex(NULL), - fEndpointToInterface(NULL), - fInitCheck(false) -{ - fPath=strdup(path); - Initialise(); -} - -USBDevice::~USBDevice() -{ - free(fPath); - if (fConfigurationDescriptors) { - for(int i = 0; i < fDeviceDescriptor.num_configurations; i++) { - if (fConfigurationDescriptors[i]) - delete fConfigurationDescriptors[i]; - } - delete[] fConfigurationDescriptors; - } - if (fEndpointToIndex) - delete[] fEndpointToIndex; - if (fEndpointToInterface) - delete[] fEndpointToInterface; -} - -bool -USBDevice::InitCheck() -{ - return fInitCheck; -} - -const char * -USBDevice::Location() const -{ - return fPath; -} - -uint8 -USBDevice::CountConfigurations() const -{ - return fDeviceDescriptor.num_configurations; -} - -const usb_device_descriptor * -USBDevice::Descriptor() const -{ - return &fDeviceDescriptor; -} - -const usb_configuration_descriptor * -USBDevice::ConfigurationDescriptor(uint32 index) const -{ - if (index > CountConfigurations()) - return NULL; - return (usb_configuration_descriptor *) fConfigurationDescriptors[index]; -} - -const usb_configuration_descriptor * -USBDevice::ActiveConfiguration() const -{ - return (usb_configuration_descriptor *) fConfigurationDescriptors[fActiveConfiguration]; -} - -int -USBDevice::ActiveConfigurationIndex() const -{ - return fActiveConfiguration; -} - -int USBDevice::ClaimInterface(int interface) -{ - if (interface > ActiveConfiguration()->number_interfaces) - return LIBUSB_ERROR_NOT_FOUND; - if (fClaimedInterfaces & (1U << interface)) - return LIBUSB_ERROR_BUSY; - fClaimedInterfaces |= (1U << interface); - return LIBUSB_SUCCESS; -} - -int USBDevice::ReleaseInterface(int interface) -{ - fClaimedInterfaces &= ~(1U << interface); - return LIBUSB_SUCCESS; -} - -int -USBDevice::CheckInterfacesFree(int config) -{ - if (fConfigToIndex.count(config) == 0) - return LIBUSB_ERROR_NOT_FOUND; - if (fClaimedInterfaces == 0) - return fConfigToIndex[(uint8)config]; - return LIBUSB_ERROR_BUSY; -} - -int -USBDevice::SetActiveConfiguration(int config_index) -{ - fActiveConfiguration = config_index; - return LIBUSB_SUCCESS; -} - -uint8 -USBDevice::EndpointToIndex(uint8 address) const -{ - return fEndpointToIndex[fActiveConfiguration][address]; -} - -uint8 -USBDevice::EndpointToInterface(uint8 address) const -{ - return fEndpointToInterface[fActiveConfiguration][address]; -} - -int -USBDevice::Initialise() //Do we need more error checking, etc? How to report? -{ - int fRawFD = open(fPath, O_RDWR | O_CLOEXEC); - if (fRawFD < 0) - return B_ERROR; - usb_raw_command command; - command.device.descriptor = &fDeviceDescriptor; - if (ioctl(fRawFD, B_USB_RAW_COMMAND_GET_DEVICE_DESCRIPTOR, &command, sizeof(command)) || - command.device.status != B_USB_RAW_STATUS_SUCCESS) { - close(fRawFD); - return B_ERROR; - } - - fConfigurationDescriptors = new(std::nothrow) unsigned char *[fDeviceDescriptor.num_configurations]; - fEndpointToIndex = new(std::nothrow) map [fDeviceDescriptor.num_configurations]; - fEndpointToInterface = new(std::nothrow) map [fDeviceDescriptor.num_configurations]; - for (int i = 0; i < fDeviceDescriptor.num_configurations; i++) { - usb_configuration_descriptor tmp_config; - command.config.descriptor = &tmp_config; - command.config.config_index = i; - if (ioctl(fRawFD, B_USB_RAW_COMMAND_GET_CONFIGURATION_DESCRIPTOR, &command, sizeof(command)) || - command.config.status != B_USB_RAW_STATUS_SUCCESS) { - usbi_err(NULL, "failed retrieving configuration descriptor"); - close(fRawFD); - return B_ERROR; - } - fConfigToIndex[tmp_config.configuration_value] = i; - fConfigurationDescriptors[i] = new(std::nothrow) unsigned char[tmp_config.total_length]; - command.control.request_type = 128; - command.control.request = 6; - command.control.value = (2 << 8) | i; - command.control.index = 0; - command.control.length = tmp_config.total_length; - command.control.data = fConfigurationDescriptors[i]; - if (ioctl(fRawFD, B_USB_RAW_COMMAND_CONTROL_TRANSFER, &command, sizeof(command)) || - command.control.status!=B_USB_RAW_STATUS_SUCCESS) { - usbi_err(NULL, "failed retrieving full configuration descriptor"); - close(fRawFD); - return B_ERROR; - } - for (int j = 0; j < tmp_config.number_interfaces; j++) { - command.alternate.config_index = i; - command.alternate.interface_index = j; - if (ioctl(fRawFD, B_USB_RAW_COMMAND_GET_ALT_INTERFACE_COUNT, &command, sizeof(command)) || - command.config.status != B_USB_RAW_STATUS_SUCCESS) { - usbi_err(NULL, "failed retrieving number of alternate interfaces"); - close(fRawFD); - return B_ERROR; - } - int num_alternate = command.alternate.alternate_info; - for (int k = 0; k < num_alternate; k++) { - usb_interface_descriptor tmp_interface; - command.interface_etc.config_index = i; - command.interface_etc.interface_index = j; - command.interface_etc.alternate_index = k; - command.interface_etc.descriptor = &tmp_interface; - if (ioctl(fRawFD, B_USB_RAW_COMMAND_GET_INTERFACE_DESCRIPTOR_ETC, &command, sizeof(command)) || - command.config.status != B_USB_RAW_STATUS_SUCCESS) { - usbi_err(NULL, "failed retrieving interface descriptor"); - close(fRawFD); - return B_ERROR; - } - for (int l = 0; l < tmp_interface.num_endpoints; l++) { - usb_endpoint_descriptor tmp_endpoint; - command.endpoint_etc.config_index = i; - command.endpoint_etc.interface_index = j; - command.endpoint_etc.alternate_index = k; - command.endpoint_etc.endpoint_index = l; - command.endpoint_etc.descriptor = &tmp_endpoint; - if (ioctl(fRawFD, B_USB_RAW_COMMAND_GET_ENDPOINT_DESCRIPTOR_ETC, &command, sizeof(command)) || - command.config.status != B_USB_RAW_STATUS_SUCCESS) { - usbi_err(NULL, "failed retrieving endpoint descriptor"); - close(fRawFD); - return B_ERROR; - } - fEndpointToIndex[i][tmp_endpoint.endpoint_address] = l; - fEndpointToInterface[i][tmp_endpoint.endpoint_address] = j; - } - } - } - } - close(fRawFD); - fInitCheck = true; - return B_OK; -} diff --git a/Externals/libusb/libusb/os/haiku_usb_raw.cpp b/Externals/libusb/libusb/os/haiku_usb_raw.cpp deleted file mode 100644 index 7c399d19d3e8..000000000000 --- a/Externals/libusb/libusb/os/haiku_usb_raw.cpp +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Haiku Backend for libusb - * Copyright © 2014 Akshay Jaggi - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include -#include -#include -#include -#include - -#include "haiku_usb.h" - -USBRoster gUsbRoster; -int32 gInitCount = 0; - -static int haiku_get_config_descriptor(struct libusb_device *, uint8_t, - unsigned char *, size_t, int *); - -static int -haiku_init(struct libusb_context *ctx) -{ - if (atomic_add(&gInitCount, 1) == 0) - return gUsbRoster.Start(); - return LIBUSB_SUCCESS; -} - -static void -haiku_exit(struct libusb_context *ctx) -{ - UNUSED(ctx); - if (atomic_add(&gInitCount, -1) == 1) - gUsbRoster.Stop(); -} - -static int -haiku_open(struct libusb_device_handle *dev_handle) -{ - USBDevice *dev = *((USBDevice **)dev_handle->dev->os_priv); - USBDeviceHandle *handle = new(std::nothrow) USBDeviceHandle(dev); - if (handle == NULL) - return LIBUSB_ERROR_NO_MEM; - if (handle->InitCheck() == false) { - delete handle; - return LIBUSB_ERROR_NO_DEVICE; - } - *((USBDeviceHandle **)dev_handle->os_priv) = handle; - return LIBUSB_SUCCESS; -} - -static void -haiku_close(struct libusb_device_handle *dev_handle) -{ - USBDeviceHandle *handle = *((USBDeviceHandle **)dev_handle->os_priv); - if (handle == NULL) - return; - delete handle; - *((USBDeviceHandle **)dev_handle->os_priv) = NULL; -} - -static int -haiku_get_device_descriptor(struct libusb_device *device, unsigned char *buffer, int *host_endian) -{ - USBDevice *dev = *((USBDevice **)device->os_priv); - memcpy(buffer, dev->Descriptor(), DEVICE_DESC_LENGTH); - *host_endian = 0; - return LIBUSB_SUCCESS; -} - -static int -haiku_get_active_config_descriptor(struct libusb_device *device, unsigned char *buffer, size_t len, int *host_endian) -{ - USBDevice *dev = *((USBDevice **)device->os_priv); - return haiku_get_config_descriptor(device, dev->ActiveConfigurationIndex(), buffer, len, host_endian); -} - -static int -haiku_get_config_descriptor(struct libusb_device *device, uint8_t config_index, unsigned char *buffer, size_t len, int *host_endian) -{ - USBDevice *dev = *((USBDevice **)device->os_priv); - const usb_configuration_descriptor *config = dev->ConfigurationDescriptor(config_index); - if (config == NULL) { - usbi_err(DEVICE_CTX(device), "failed getting configuration descriptor"); - return LIBUSB_ERROR_INVALID_PARAM; - } - if (len > config->total_length) { - len = config->total_length; - } - memcpy(buffer, config, len); - *host_endian = 0; - return len; -} - -static int -haiku_set_configuration(struct libusb_device_handle *dev_handle, int config) -{ - USBDeviceHandle *handle= *((USBDeviceHandle **)dev_handle->os_priv); - return handle->SetConfiguration(config); -} - -static int -haiku_claim_interface(struct libusb_device_handle *dev_handle, int interface_number) -{ - USBDeviceHandle *handle = *((USBDeviceHandle **)dev_handle->os_priv); - return handle->ClaimInterface(interface_number); -} - -static int -haiku_set_altsetting(struct libusb_device_handle *dev_handle, int interface_number, int altsetting) -{ - USBDeviceHandle *handle = *((USBDeviceHandle **)dev_handle->os_priv); - return handle->SetAltSetting(interface_number, altsetting); -} - -static int -haiku_release_interface(struct libusb_device_handle *dev_handle, int interface_number) -{ - USBDeviceHandle *handle = *((USBDeviceHandle **)dev_handle->os_priv); - haiku_set_altsetting(dev_handle,interface_number, 0); - return handle->ReleaseInterface(interface_number); -} - -static int -haiku_submit_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *fLibusbTransfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - USBDeviceHandle *fDeviceHandle = *((USBDeviceHandle **)fLibusbTransfer->dev_handle->os_priv); - return fDeviceHandle->SubmitTransfer(itransfer); -} - -static int -haiku_cancel_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *fLibusbTransfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - USBDeviceHandle *fDeviceHandle = *((USBDeviceHandle **)fLibusbTransfer->dev_handle->os_priv); - return fDeviceHandle->CancelTransfer(*((USBTransfer **)usbi_transfer_get_os_priv(itransfer))); -} - -static void -haiku_clear_transfer_priv(struct usbi_transfer *itransfer) -{ - USBTransfer *transfer = *((USBTransfer **)usbi_transfer_get_os_priv(itransfer)); - delete transfer; - *((USBTransfer **)usbi_transfer_get_os_priv(itransfer)) = NULL; -} - -static int -haiku_handle_transfer_completion(struct usbi_transfer *itransfer) -{ - USBTransfer *transfer = *((USBTransfer **)usbi_transfer_get_os_priv(itransfer)); - - usbi_mutex_lock(&itransfer->lock); - if (transfer->IsCancelled()) { - delete transfer; - *((USBTransfer **)usbi_transfer_get_os_priv(itransfer)) = NULL; - usbi_mutex_unlock(&itransfer->lock); - if (itransfer->transferred < 0) - itransfer->transferred = 0; - return usbi_handle_transfer_cancellation(itransfer); - } - libusb_transfer_status status = LIBUSB_TRANSFER_COMPLETED; - if (itransfer->transferred < 0) { - usbi_err(ITRANSFER_CTX(itransfer), "error in transfer"); - status = LIBUSB_TRANSFER_ERROR; - itransfer->transferred = 0; - } - delete transfer; - *((USBTransfer **)usbi_transfer_get_os_priv(itransfer)) = NULL; - usbi_mutex_unlock(&itransfer->lock); - return usbi_handle_transfer_completion(itransfer, status); -} - -static int -haiku_clock_gettime(int clkid, struct timespec *tp) -{ - if (clkid == USBI_CLOCK_REALTIME) - return clock_gettime(CLOCK_REALTIME, tp); - if (clkid == USBI_CLOCK_MONOTONIC) - return clock_gettime(CLOCK_MONOTONIC, tp); - return LIBUSB_ERROR_INVALID_PARAM; -} - -const struct usbi_os_backend usbi_backend = { - .name = "Haiku usbfs", - .caps = 0, - .init = haiku_init, - .exit = haiku_exit, - .set_option = NULL, - .get_device_list = NULL, - .hotplug_poll = NULL, - .wrap_sys_device = NULL, - .open = haiku_open, - .close = haiku_close, - .get_device_descriptor = haiku_get_device_descriptor, - .get_active_config_descriptor = haiku_get_active_config_descriptor, - .get_config_descriptor = haiku_get_config_descriptor, - .get_config_descriptor_by_value = NULL, - - - .get_configuration = NULL, - .set_configuration = haiku_set_configuration, - .claim_interface = haiku_claim_interface, - .release_interface = haiku_release_interface, - - .set_interface_altsetting = haiku_set_altsetting, - .clear_halt = NULL, - .reset_device = NULL, - - .alloc_streams = NULL, - .free_streams = NULL, - - .dev_mem_alloc = NULL, - .dev_mem_free = NULL, - - .kernel_driver_active = NULL, - .detach_kernel_driver = NULL, - .attach_kernel_driver = NULL, - - .destroy_device = NULL, - - .submit_transfer = haiku_submit_transfer, - .cancel_transfer = haiku_cancel_transfer, - .clear_transfer_priv = haiku_clear_transfer_priv, - - .handle_events = NULL, - .handle_transfer_completion = haiku_handle_transfer_completion, - - .clock_gettime = haiku_clock_gettime, - -#ifdef USBI_TIMERFD_AVAILABLE - .get_timerfd_clockid = NULL, -#endif - - .context_priv_size = 0, - .device_priv_size = sizeof(USBDevice *), - .device_handle_priv_size = sizeof(USBDeviceHandle *), - .transfer_priv_size = sizeof(USBTransfer *), -}; diff --git a/Externals/libusb/libusb/os/haiku_usb_raw.h b/Externals/libusb/libusb/os/haiku_usb_raw.h deleted file mode 100644 index 5baf53d7c910..000000000000 --- a/Externals/libusb/libusb/os/haiku_usb_raw.h +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright 2006-2008, Haiku Inc. All rights reserved. - * Distributed under the terms of the MIT License. - */ - -#ifndef _USB_RAW_H_ -#define _USB_RAW_H_ - -#include - -#define B_USB_RAW_PROTOCOL_VERSION 0x0015 -#define B_USB_RAW_ACTIVE_ALTERNATE 0xffffffff - -typedef enum { - B_USB_RAW_COMMAND_GET_VERSION = 0x1000, - - B_USB_RAW_COMMAND_GET_DEVICE_DESCRIPTOR = 0x2000, - B_USB_RAW_COMMAND_GET_CONFIGURATION_DESCRIPTOR, - B_USB_RAW_COMMAND_GET_INTERFACE_DESCRIPTOR, - B_USB_RAW_COMMAND_GET_ENDPOINT_DESCRIPTOR, - B_USB_RAW_COMMAND_GET_STRING_DESCRIPTOR, - B_USB_RAW_COMMAND_GET_GENERIC_DESCRIPTOR, - B_USB_RAW_COMMAND_GET_ALT_INTERFACE_COUNT, - B_USB_RAW_COMMAND_GET_ACTIVE_ALT_INTERFACE_INDEX, - B_USB_RAW_COMMAND_GET_INTERFACE_DESCRIPTOR_ETC, - B_USB_RAW_COMMAND_GET_ENDPOINT_DESCRIPTOR_ETC, - B_USB_RAW_COMMAND_GET_GENERIC_DESCRIPTOR_ETC, - - B_USB_RAW_COMMAND_SET_CONFIGURATION = 0x3000, - B_USB_RAW_COMMAND_SET_FEATURE, - B_USB_RAW_COMMAND_CLEAR_FEATURE, - B_USB_RAW_COMMAND_GET_STATUS, - B_USB_RAW_COMMAND_GET_DESCRIPTOR, - B_USB_RAW_COMMAND_SET_ALT_INTERFACE, - - B_USB_RAW_COMMAND_CONTROL_TRANSFER = 0x4000, - B_USB_RAW_COMMAND_INTERRUPT_TRANSFER, - B_USB_RAW_COMMAND_BULK_TRANSFER, - B_USB_RAW_COMMAND_ISOCHRONOUS_TRANSFER -} usb_raw_command_id; - - -typedef enum { - B_USB_RAW_STATUS_SUCCESS = 0, - - B_USB_RAW_STATUS_FAILED, - B_USB_RAW_STATUS_ABORTED, - B_USB_RAW_STATUS_STALLED, - B_USB_RAW_STATUS_CRC_ERROR, - B_USB_RAW_STATUS_TIMEOUT, - - B_USB_RAW_STATUS_INVALID_CONFIGURATION, - B_USB_RAW_STATUS_INVALID_INTERFACE, - B_USB_RAW_STATUS_INVALID_ENDPOINT, - B_USB_RAW_STATUS_INVALID_STRING, - - B_USB_RAW_STATUS_NO_MEMORY -} usb_raw_command_status; - - -typedef union { - struct { - status_t status; - } version; - - struct { - status_t status; - usb_device_descriptor *descriptor; - } device; - - struct { - status_t status; - usb_configuration_descriptor *descriptor; - uint32 config_index; - } config; - - struct { - status_t status; - uint32 alternate_info; - uint32 config_index; - uint32 interface_index; - } alternate; - - struct { - status_t status; - usb_interface_descriptor *descriptor; - uint32 config_index; - uint32 interface_index; - } interface; - - struct { - status_t status; - usb_interface_descriptor *descriptor; - uint32 config_index; - uint32 interface_index; - uint32 alternate_index; - } interface_etc; - - struct { - status_t status; - usb_endpoint_descriptor *descriptor; - uint32 config_index; - uint32 interface_index; - uint32 endpoint_index; - } endpoint; - - struct { - status_t status; - usb_endpoint_descriptor *descriptor; - uint32 config_index; - uint32 interface_index; - uint32 alternate_index; - uint32 endpoint_index; - } endpoint_etc; - - struct { - status_t status; - usb_descriptor *descriptor; - uint32 config_index; - uint32 interface_index; - uint32 generic_index; - size_t length; - } generic; - - struct { - status_t status; - usb_descriptor *descriptor; - uint32 config_index; - uint32 interface_index; - uint32 alternate_index; - uint32 generic_index; - size_t length; - } generic_etc; - - struct { - status_t status; - usb_string_descriptor *descriptor; - uint32 string_index; - size_t length; - } string; - - struct { - status_t status; - uint8 type; - uint8 index; - uint16 language_id; - void *data; - size_t length; - } descriptor; - - struct { - status_t status; - uint8 request_type; - uint8 request; - uint16 value; - uint16 index; - uint16 length; - void *data; - } control; - - struct { - status_t status; - uint32 interface; - uint32 endpoint; - void *data; - size_t length; - } transfer; - - struct { - status_t status; - uint32 interface; - uint32 endpoint; - void *data; - size_t length; - usb_iso_packet_descriptor *packet_descriptors; - uint32 packet_count; - } isochronous; -} usb_raw_command; - -#endif // _USB_RAW_H_ diff --git a/Externals/libusb/libusb/os/linux_netlink.c b/Externals/libusb/libusb/os/linux_netlink.c deleted file mode 100644 index c1ad1ec51faf..000000000000 --- a/Externals/libusb/libusb/os/linux_netlink.c +++ /dev/null @@ -1,409 +0,0 @@ -/* -*- Mode: C; c-basic-offset:8 ; indent-tabs-mode:t -*- */ -/* - * Linux usbfs backend for libusb - * Copyright (C) 2007-2009 Daniel Drake - * Copyright (c) 2001 Johannes Erdfelt - * Copyright (c) 2013 Nathan Hjelm - * Copyright (c) 2016 Chris Dickens - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef HAVE_ASM_TYPES_H -#include -#endif - -#include -#include - -#include "libusbi.h" -#include "linux_usbfs.h" - -#define NL_GROUP_KERNEL 1 - -#ifndef SOCK_CLOEXEC -#define SOCK_CLOEXEC 0 -#endif - -#ifndef SOCK_NONBLOCK -#define SOCK_NONBLOCK 0 -#endif - -static int linux_netlink_socket = -1; -static int netlink_control_pipe[2] = { -1, -1 }; -static pthread_t libusb_linux_event_thread; - -static void *linux_netlink_event_thread_main(void *arg); - -static int set_fd_cloexec_nb(int fd, int socktype) -{ - int flags; - -#if defined(FD_CLOEXEC) - /* Make sure the netlink socket file descriptor is marked as CLOEXEC */ - if (!(socktype & SOCK_CLOEXEC)) { - flags = fcntl(fd, F_GETFD); - if (flags == -1) { - usbi_err(NULL, "failed to get netlink fd flags (%d)", errno); - return -1; - } - - if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) == -1) { - usbi_err(NULL, "failed to set netlink fd flags (%d)", errno); - return -1; - } - } -#endif - - /* Make sure the netlink socket is non-blocking */ - if (!(socktype & SOCK_NONBLOCK)) { - flags = fcntl(fd, F_GETFL); - if (flags == -1) { - usbi_err(NULL, "failed to get netlink fd status flags (%d)", errno); - return -1; - } - - if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1) { - usbi_err(NULL, "failed to set netlink fd status flags (%d)", errno); - return -1; - } - } - - return 0; -} - -int linux_netlink_start_event_monitor(void) -{ - struct sockaddr_nl sa_nl = { .nl_family = AF_NETLINK, .nl_groups = NL_GROUP_KERNEL }; - int socktype = SOCK_RAW | SOCK_NONBLOCK | SOCK_CLOEXEC; - int opt = 1; - int ret; - - linux_netlink_socket = socket(PF_NETLINK, socktype, NETLINK_KOBJECT_UEVENT); - if (linux_netlink_socket == -1 && errno == EINVAL) { - usbi_dbg("failed to create netlink socket of type %d, attempting SOCK_RAW", socktype); - socktype = SOCK_RAW; - linux_netlink_socket = socket(PF_NETLINK, socktype, NETLINK_KOBJECT_UEVENT); - } - - if (linux_netlink_socket == -1) { - usbi_err(NULL, "failed to create netlink socket (%d)", errno); - goto err; - } - - ret = set_fd_cloexec_nb(linux_netlink_socket, socktype); - if (ret == -1) - goto err_close_socket; - - ret = bind(linux_netlink_socket, (struct sockaddr *)&sa_nl, sizeof(sa_nl)); - if (ret == -1) { - usbi_err(NULL, "failed to bind netlink socket (%d)", errno); - goto err_close_socket; - } - - ret = setsockopt(linux_netlink_socket, SOL_SOCKET, SO_PASSCRED, &opt, sizeof(opt)); - if (ret == -1) { - usbi_err(NULL, "failed to set netlink socket SO_PASSCRED option (%d)", errno); - goto err_close_socket; - } - - ret = usbi_pipe(netlink_control_pipe); - if (ret) { - usbi_err(NULL, "failed to create netlink control pipe"); - goto err_close_socket; - } - - ret = pthread_create(&libusb_linux_event_thread, NULL, linux_netlink_event_thread_main, NULL); - if (ret != 0) { - usbi_err(NULL, "failed to create netlink event thread (%d)", ret); - goto err_close_pipe; - } - - return LIBUSB_SUCCESS; - -err_close_pipe: - close(netlink_control_pipe[0]); - close(netlink_control_pipe[1]); - netlink_control_pipe[0] = -1; - netlink_control_pipe[1] = -1; -err_close_socket: - close(linux_netlink_socket); - linux_netlink_socket = -1; -err: - return LIBUSB_ERROR_OTHER; -} - -int linux_netlink_stop_event_monitor(void) -{ - char dummy = 1; - ssize_t r; - - assert(linux_netlink_socket != -1); - - /* Write some dummy data to the control pipe and - * wait for the thread to exit */ - r = write(netlink_control_pipe[1], &dummy, sizeof(dummy)); - if (r <= 0) - usbi_warn(NULL, "netlink control pipe signal failed"); - - pthread_join(libusb_linux_event_thread, NULL); - - close(linux_netlink_socket); - linux_netlink_socket = -1; - - /* close and reset control pipe */ - close(netlink_control_pipe[0]); - close(netlink_control_pipe[1]); - netlink_control_pipe[0] = -1; - netlink_control_pipe[1] = -1; - - return LIBUSB_SUCCESS; -} - -static const char *netlink_message_parse(const char *buffer, size_t len, const char *key) -{ - const char *end = buffer + len; - size_t keylen = strlen(key); - - while (buffer < end && *buffer) { - if (strncmp(buffer, key, keylen) == 0 && buffer[keylen] == '=') - return buffer + keylen + 1; - buffer += strlen(buffer) + 1; - } - - return NULL; -} - -/* parse parts of netlink message common to both libudev and the kernel */ -static int linux_netlink_parse(const char *buffer, size_t len, int *detached, - const char **sys_name, uint8_t *busnum, uint8_t *devaddr) -{ - const char *tmp, *slash; - - errno = 0; - - *sys_name = NULL; - *detached = 0; - *busnum = 0; - *devaddr = 0; - - tmp = netlink_message_parse(buffer, len, "ACTION"); - if (!tmp) { - return -1; - } else if (strcmp(tmp, "remove") == 0) { - *detached = 1; - } else if (strcmp(tmp, "add") != 0) { - usbi_dbg("unknown device action %s", tmp); - return -1; - } - - /* check that this is a usb message */ - tmp = netlink_message_parse(buffer, len, "SUBSYSTEM"); - if (!tmp || strcmp(tmp, "usb") != 0) { - /* not usb. ignore */ - return -1; - } - - /* check that this is an actual usb device */ - tmp = netlink_message_parse(buffer, len, "DEVTYPE"); - if (!tmp || strcmp(tmp, "usb_device") != 0) { - /* not usb. ignore */ - return -1; - } - - tmp = netlink_message_parse(buffer, len, "BUSNUM"); - if (tmp) { - *busnum = (uint8_t)(strtoul(tmp, NULL, 10) & 0xff); - if (errno) { - errno = 0; - return -1; - } - - tmp = netlink_message_parse(buffer, len, "DEVNUM"); - if (NULL == tmp) - return -1; - - *devaddr = (uint8_t)(strtoul(tmp, NULL, 10) & 0xff); - if (errno) { - errno = 0; - return -1; - } - } else { - /* no bus number. try "DEVICE" */ - tmp = netlink_message_parse(buffer, len, "DEVICE"); - if (!tmp) { - /* not usb. ignore */ - return -1; - } - - /* Parse a device path such as /dev/bus/usb/003/004 */ - slash = strrchr(tmp, '/'); - if (!slash) - return -1; - - *busnum = (uint8_t)(strtoul(slash - 3, NULL, 10) & 0xff); - if (errno) { - errno = 0; - return -1; - } - - *devaddr = (uint8_t)(strtoul(slash + 1, NULL, 10) & 0xff); - if (errno) { - errno = 0; - return -1; - } - - return 0; - } - - tmp = netlink_message_parse(buffer, len, "DEVPATH"); - if (!tmp) - return -1; - - slash = strrchr(tmp, '/'); - if (slash) - *sys_name = slash + 1; - - /* found a usb device */ - return 0; -} - -static int linux_netlink_read_message(void) -{ - char cred_buffer[CMSG_SPACE(sizeof(struct ucred))]; - char msg_buffer[2048]; - const char *sys_name = NULL; - uint8_t busnum, devaddr; - int detached, r; - ssize_t len; - struct cmsghdr *cmsg; - struct ucred *cred; - struct sockaddr_nl sa_nl; - struct iovec iov = { .iov_base = msg_buffer, .iov_len = sizeof(msg_buffer) }; - struct msghdr msg = { - .msg_iov = &iov, .msg_iovlen = 1, - .msg_control = cred_buffer, .msg_controllen = sizeof(cred_buffer), - .msg_name = &sa_nl, .msg_namelen = sizeof(sa_nl) - }; - - /* read netlink message */ - len = recvmsg(linux_netlink_socket, &msg, 0); - if (len == -1) { - if (errno != EAGAIN && errno != EINTR) - usbi_err(NULL, "error receiving message from netlink (%d)", errno); - return -1; - } - - if (len < 32 || (msg.msg_flags & MSG_TRUNC)) { - usbi_err(NULL, "invalid netlink message length"); - return -1; - } - - if (sa_nl.nl_groups != NL_GROUP_KERNEL || sa_nl.nl_pid != 0) { - usbi_dbg("ignoring netlink message from unknown group/PID (%u/%u)", - (unsigned int)sa_nl.nl_groups, (unsigned int)sa_nl.nl_pid); - return -1; - } - - cmsg = CMSG_FIRSTHDR(&msg); - if (!cmsg || cmsg->cmsg_type != SCM_CREDENTIALS) { - usbi_dbg("ignoring netlink message with no sender credentials"); - return -1; - } - - cred = (struct ucred *)CMSG_DATA(cmsg); - if (cred->uid != 0) { - usbi_dbg("ignoring netlink message with non-zero sender UID %u", (unsigned int)cred->uid); - return -1; - } - - r = linux_netlink_parse(msg_buffer, (size_t)len, &detached, &sys_name, &busnum, &devaddr); - if (r) - return r; - - usbi_dbg("netlink hotplug found device busnum: %hhu, devaddr: %hhu, sys_name: %s, removed: %s", - busnum, devaddr, sys_name, detached ? "yes" : "no"); - - /* signal device is available (or not) to all contexts */ - if (detached) - linux_device_disconnected(busnum, devaddr); - else - linux_hotplug_enumerate(busnum, devaddr, sys_name); - - return 0; -} - -static void *linux_netlink_event_thread_main(void *arg) -{ - char dummy; - int r; - ssize_t nb; - struct pollfd fds[] = { - { .fd = netlink_control_pipe[0], - .events = POLLIN }, - { .fd = linux_netlink_socket, - .events = POLLIN }, - }; - - UNUSED(arg); - - usbi_dbg("netlink event thread entering"); - - while ((r = poll(fds, 2, -1)) >= 0 || errno == EINTR) { - if (r < 0) { - /* temporary failure */ - continue; - } - if (fds[0].revents & POLLIN) { - /* activity on control pipe, read the byte and exit */ - nb = read(netlink_control_pipe[0], &dummy, sizeof(dummy)); - if (nb <= 0) - usbi_warn(NULL, "netlink control pipe read failed"); - break; - } - if (fds[1].revents & POLLIN) { - usbi_mutex_static_lock(&linux_hotplug_lock); - linux_netlink_read_message(); - usbi_mutex_static_unlock(&linux_hotplug_lock); - } - } - - usbi_dbg("netlink event thread exiting"); - - return NULL; -} - -void linux_netlink_hotplug_poll(void) -{ - int r; - - usbi_mutex_static_lock(&linux_hotplug_lock); - do { - r = linux_netlink_read_message(); - } while (r == 0); - usbi_mutex_static_unlock(&linux_hotplug_lock); -} diff --git a/Externals/libusb/libusb/os/linux_udev.c b/Externals/libusb/libusb/os/linux_udev.c deleted file mode 100644 index bea03e3a8849..000000000000 --- a/Externals/libusb/libusb/os/linux_udev.c +++ /dev/null @@ -1,329 +0,0 @@ -/* -*- Mode: C; c-basic-offset:8 ; indent-tabs-mode:t -*- */ -/* - * Linux usbfs backend for libusb - * Copyright (C) 2007-2009 Daniel Drake - * Copyright (c) 2001 Johannes Erdfelt - * Copyright (c) 2012-2013 Nathan Hjelm - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "libusbi.h" -#include "linux_usbfs.h" - -/* udev context */ -static struct udev *udev_ctx = NULL; -static int udev_monitor_fd = -1; -static int udev_control_pipe[2] = {-1, -1}; -static struct udev_monitor *udev_monitor = NULL; -static pthread_t linux_event_thread; - -static void udev_hotplug_event(struct udev_device* udev_dev); -static void *linux_udev_event_thread_main(void *arg); - -int linux_udev_start_event_monitor(void) -{ - int r; - - assert(udev_ctx == NULL); - udev_ctx = udev_new(); - if (!udev_ctx) { - usbi_err(NULL, "could not create udev context"); - goto err; - } - - udev_monitor = udev_monitor_new_from_netlink(udev_ctx, "udev"); - if (!udev_monitor) { - usbi_err(NULL, "could not initialize udev monitor"); - goto err_free_ctx; - } - - r = udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, "usb", "usb_device"); - if (r) { - usbi_err(NULL, "could not initialize udev monitor filter for \"usb\" subsystem"); - goto err_free_monitor; - } - - if (udev_monitor_enable_receiving(udev_monitor)) { - usbi_err(NULL, "failed to enable the udev monitor"); - goto err_free_monitor; - } - - udev_monitor_fd = udev_monitor_get_fd(udev_monitor); - -#if defined(FD_CLOEXEC) - /* Make sure the udev file descriptor is marked as CLOEXEC */ - r = fcntl(udev_monitor_fd, F_GETFD); - if (r == -1) { - usbi_err(NULL, "geting udev monitor fd flags (%d)", errno); - goto err_free_monitor; - } - if (!(r & FD_CLOEXEC)) { - if (fcntl(udev_monitor_fd, F_SETFD, r | FD_CLOEXEC) == -1) { - usbi_err(NULL, "setting udev monitor fd flags (%d)", errno); - goto err_free_monitor; - } - } -#endif - - /* Some older versions of udev are not non-blocking by default, - * so make sure this is set */ - r = fcntl(udev_monitor_fd, F_GETFL); - if (r == -1) { - usbi_err(NULL, "getting udev monitor fd status flags (%d)", errno); - goto err_free_monitor; - } - if (!(r & O_NONBLOCK)) { - if (fcntl(udev_monitor_fd, F_SETFL, r | O_NONBLOCK) == -1) { - usbi_err(NULL, "setting udev monitor fd status flags (%d)", errno); - goto err_free_monitor; - } - } - - r = usbi_pipe(udev_control_pipe); - if (r) { - usbi_err(NULL, "could not create udev control pipe"); - goto err_free_monitor; - } - - r = pthread_create(&linux_event_thread, NULL, linux_udev_event_thread_main, NULL); - if (r) { - usbi_err(NULL, "creating hotplug event thread (%d)", r); - goto err_close_pipe; - } - - return LIBUSB_SUCCESS; - -err_close_pipe: - close(udev_control_pipe[0]); - close(udev_control_pipe[1]); -err_free_monitor: - udev_monitor_unref(udev_monitor); - udev_monitor = NULL; - udev_monitor_fd = -1; -err_free_ctx: - udev_unref(udev_ctx); -err: - udev_ctx = NULL; - return LIBUSB_ERROR_OTHER; -} - -int linux_udev_stop_event_monitor(void) -{ - char dummy = 1; - int r; - - assert(udev_ctx != NULL); - assert(udev_monitor != NULL); - assert(udev_monitor_fd != -1); - - /* Write some dummy data to the control pipe and - * wait for the thread to exit */ - r = write(udev_control_pipe[1], &dummy, sizeof(dummy)); - if (r <= 0) { - usbi_warn(NULL, "udev control pipe signal failed"); - } - pthread_join(linux_event_thread, NULL); - - /* Release the udev monitor */ - udev_monitor_unref(udev_monitor); - udev_monitor = NULL; - udev_monitor_fd = -1; - - /* Clean up the udev context */ - udev_unref(udev_ctx); - udev_ctx = NULL; - - /* close and reset control pipe */ - close(udev_control_pipe[0]); - close(udev_control_pipe[1]); - udev_control_pipe[0] = -1; - udev_control_pipe[1] = -1; - - return LIBUSB_SUCCESS; -} - -static void *linux_udev_event_thread_main(void *arg) -{ - char dummy; - int r; - ssize_t nb; - struct udev_device* udev_dev; - struct pollfd fds[] = { - {.fd = udev_control_pipe[0], - .events = POLLIN}, - {.fd = udev_monitor_fd, - .events = POLLIN}, - }; - - usbi_dbg("udev event thread entering."); - - while ((r = poll(fds, 2, -1)) >= 0 || errno == EINTR) { - if (r < 0) { - /* temporary failure */ - continue; - } - if (fds[0].revents & POLLIN) { - /* activity on control pipe, read the byte and exit */ - nb = read(udev_control_pipe[0], &dummy, sizeof(dummy)); - if (nb <= 0) { - usbi_warn(NULL, "udev control pipe read failed"); - } - break; - } - if (fds[1].revents & POLLIN) { - usbi_mutex_static_lock(&linux_hotplug_lock); - udev_dev = udev_monitor_receive_device(udev_monitor); - if (udev_dev) - udev_hotplug_event(udev_dev); - usbi_mutex_static_unlock(&linux_hotplug_lock); - } - } - - usbi_dbg("udev event thread exiting"); - - return NULL; -} - -static int udev_device_info(struct libusb_context *ctx, int detached, - struct udev_device *udev_dev, uint8_t *busnum, - uint8_t *devaddr, const char **sys_name) { - const char *dev_node; - - dev_node = udev_device_get_devnode(udev_dev); - if (!dev_node) { - return LIBUSB_ERROR_OTHER; - } - - *sys_name = udev_device_get_sysname(udev_dev); - if (!*sys_name) { - return LIBUSB_ERROR_OTHER; - } - - return linux_get_device_address(ctx, detached, busnum, devaddr, - dev_node, *sys_name, -1); -} - -static void udev_hotplug_event(struct udev_device* udev_dev) -{ - const char* udev_action; - const char* sys_name = NULL; - uint8_t busnum = 0, devaddr = 0; - int detached; - int r; - - do { - udev_action = udev_device_get_action(udev_dev); - if (!udev_action) { - break; - } - - detached = !strncmp(udev_action, "remove", 6); - - r = udev_device_info(NULL, detached, udev_dev, &busnum, &devaddr, &sys_name); - if (LIBUSB_SUCCESS != r) { - break; - } - - usbi_dbg("udev hotplug event. action: %s.", udev_action); - - if (strncmp(udev_action, "add", 3) == 0) { - linux_hotplug_enumerate(busnum, devaddr, sys_name); - } else if (detached) { - linux_device_disconnected(busnum, devaddr); - } else { - usbi_err(NULL, "ignoring udev action %s", udev_action); - } - } while (0); - - udev_device_unref(udev_dev); -} - -int linux_udev_scan_devices(struct libusb_context *ctx) -{ - struct udev_enumerate *enumerator; - struct udev_list_entry *devices, *entry; - struct udev_device *udev_dev; - const char *sys_name; - int r; - - assert(udev_ctx != NULL); - - enumerator = udev_enumerate_new(udev_ctx); - if (NULL == enumerator) { - usbi_err(ctx, "error creating udev enumerator"); - return LIBUSB_ERROR_OTHER; - } - - udev_enumerate_add_match_subsystem(enumerator, "usb"); - udev_enumerate_add_match_property(enumerator, "DEVTYPE", "usb_device"); - udev_enumerate_scan_devices(enumerator); - devices = udev_enumerate_get_list_entry(enumerator); - - entry = NULL; - udev_list_entry_foreach(entry, devices) { - const char *path = udev_list_entry_get_name(entry); - uint8_t busnum = 0, devaddr = 0; - - udev_dev = udev_device_new_from_syspath(udev_ctx, path); - - r = udev_device_info(ctx, 0, udev_dev, &busnum, &devaddr, &sys_name); - if (r) { - udev_device_unref(udev_dev); - continue; - } - - linux_enumerate_device(ctx, busnum, devaddr, sys_name); - udev_device_unref(udev_dev); - } - - udev_enumerate_unref(enumerator); - - return LIBUSB_SUCCESS; -} - -void linux_udev_hotplug_poll(void) -{ - struct udev_device* udev_dev; - - usbi_mutex_static_lock(&linux_hotplug_lock); - do { - udev_dev = udev_monitor_receive_device(udev_monitor); - if (udev_dev) { - usbi_dbg("Handling hotplug event from hotplug_poll"); - udev_hotplug_event(udev_dev); - } - } while (udev_dev); - usbi_mutex_static_unlock(&linux_hotplug_lock); -} diff --git a/Externals/libusb/libusb/os/linux_usbfs.c b/Externals/libusb/libusb/os/linux_usbfs.c deleted file mode 100644 index 84f59c34263f..000000000000 --- a/Externals/libusb/libusb/os/linux_usbfs.c +++ /dev/null @@ -1,2896 +0,0 @@ -/* -*- Mode: C; c-basic-offset:8 ; indent-tabs-mode:t -*- */ -/* - * Linux usbfs backend for libusb - * Copyright © 2007-2009 Daniel Drake - * Copyright © 2001 Johannes Erdfelt - * Copyright © 2013 Nathan Hjelm - * Copyright © 2012-2013 Hans de Goede - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "libusbi.h" -#include "linux_usbfs.h" - -/* sysfs vs usbfs: - * opening a usbfs node causes the device to be resumed, so we attempt to - * avoid this during enumeration. - * - * sysfs allows us to read the kernel's in-memory copies of device descriptors - * and so forth, avoiding the need to open the device: - * - The binary "descriptors" file contains all config descriptors since - * 2.6.26, commit 217a9081d8e69026186067711131b77f0ce219ed - * - The binary "descriptors" file was added in 2.6.23, commit - * 69d42a78f935d19384d1f6e4f94b65bb162b36df, but it only contains the - * active config descriptors - * - The "busnum" file was added in 2.6.22, commit - * 83f7d958eab2fbc6b159ee92bf1493924e1d0f72 - * - The "devnum" file has been present since pre-2.6.18 - * - the "bConfigurationValue" file has been present since pre-2.6.18 - * - * If we have bConfigurationValue, busnum, and devnum, then we can determine - * the active configuration without having to open the usbfs node in RDWR mode. - * The busnum file is important as that is the only way we can relate sysfs - * devices to usbfs nodes. - * - * If we also have all descriptors, we can obtain the device descriptor and - * configuration without touching usbfs at all. - */ - -/* endianness for multi-byte fields: - * - * Descriptors exposed by usbfs have the multi-byte fields in the device - * descriptor as host endian. Multi-byte fields in the other descriptors are - * bus-endian. The kernel documentation says otherwise, but it is wrong. - * - * In sysfs all descriptors are bus-endian. - */ - -static const char *usbfs_path = NULL; - -/* use usbdev*.* device names in /dev instead of the usbfs bus directories */ -static int usbdev_names = 0; - -/* Linux has changed the maximum length of an individual isochronous packet - * over time. Initially this limit was 1,023 bytes, but Linux 2.6.18 - * (commit 3612242e527eb47ee4756b5350f8bdf791aa5ede) increased this value to - * 8,192 bytes to support higher bandwidth devices. Linux 3.10 - * (commit e2e2f0ea1c935edcf53feb4c4c8fdb4f86d57dd9) further increased this - * value to 49,152 bytes to support super speed devices. - */ -static unsigned int max_iso_packet_len = 0; - -/* Linux 2.6.23 adds support for O_CLOEXEC when opening files, which marks the - * close-on-exec flag in the underlying file descriptor. */ -static int supports_flag_cloexec = -1; - -/* Linux 2.6.32 adds support for a bulk continuation URB flag. this basically - * allows us to mark URBs as being part of a specific logical transfer when - * we submit them to the kernel. then, on any error except a cancellation, all - * URBs within that transfer will be cancelled and no more URBs will be - * accepted for the transfer, meaning that no more data can creep in. - * - * The BULK_CONTINUATION flag must be set on all URBs within a bulk transfer - * (in either direction) except the first. - * For IN transfers, we must also set SHORT_NOT_OK on all URBs except the - * last; it means that the kernel should treat a short reply as an error. - * For OUT transfers, SHORT_NOT_OK must not be set. it isn't needed (OUT - * transfers can't be short unless there's already some sort of error), and - * setting this flag is disallowed (a kernel with USB debugging enabled will - * reject such URBs). - */ -static int supports_flag_bulk_continuation = -1; - -/* Linux 2.6.31 fixes support for the zero length packet URB flag. This - * allows us to mark URBs that should be followed by a zero length data - * packet, which can be required by device- or class-specific protocols. - */ -static int supports_flag_zero_packet = -1; - -/* clock ID for monotonic clock, as not all clock sources are available on all - * systems. appropriate choice made at initialization time. */ -static clockid_t monotonic_clkid = -1; - -/* Linux 2.6.22 (commit 83f7d958eab2fbc6b159ee92bf1493924e1d0f72) adds a busnum - * to sysfs, so we can relate devices. This also implies that we can read - * the active configuration through bConfigurationValue */ -static int sysfs_can_relate_devices = -1; - -/* Linux 2.6.26 (commit 217a9081d8e69026186067711131b77f0ce219ed) adds all - * config descriptors (rather then just the active config) to the sysfs - * descriptors file, so from then on we can use them. */ -static int sysfs_has_descriptors = -1; - -/* how many times have we initted (and not exited) ? */ -static int init_count = 0; - -/* Serialize hotplug start/stop */ -static usbi_mutex_static_t linux_hotplug_startstop_lock = USBI_MUTEX_INITIALIZER; -/* Serialize scan-devices, event-thread, and poll */ -usbi_mutex_static_t linux_hotplug_lock = USBI_MUTEX_INITIALIZER; - -static int linux_start_event_monitor(void); -static int linux_stop_event_monitor(void); -static int linux_scan_devices(struct libusb_context *ctx); -static int sysfs_scan_device(struct libusb_context *ctx, const char *devname); -static int detach_kernel_driver_and_claim(struct libusb_device_handle *, int); - -#if !defined(USE_UDEV) -static int linux_default_scan_devices (struct libusb_context *ctx); -#endif - -struct kernel_version { - int major; - int minor; - int sublevel; -}; - -struct linux_device_priv { - char *sysfs_dir; - unsigned char *descriptors; - int descriptors_len; - int active_config; /* cache val for !sysfs_can_relate_devices */ -}; - -struct linux_device_handle_priv { - int fd; - int fd_removed; - int fd_keep; - uint32_t caps; -}; - -enum reap_action { - NORMAL = 0, - /* submission failed after the first URB, so await cancellation/completion - * of all the others */ - SUBMIT_FAILED, - - /* cancelled by user or timeout */ - CANCELLED, - - /* completed multi-URB transfer in non-final URB */ - COMPLETED_EARLY, - - /* one or more urbs encountered a low-level error */ - ERROR, -}; - -struct linux_transfer_priv { - union { - struct usbfs_urb *urbs; - struct usbfs_urb **iso_urbs; - }; - - enum reap_action reap_action; - int num_urbs; - int num_retired; - enum libusb_transfer_status reap_status; - - /* next iso packet in user-supplied transfer to be populated */ - int iso_packet_offset; -}; - -static int _open(const char *path, int flags) -{ -#if defined(O_CLOEXEC) - if (supports_flag_cloexec) - return open(path, flags | O_CLOEXEC); - else -#endif - return open(path, flags); -} - -static int _get_usbfs_fd(struct libusb_device *dev, mode_t mode, int silent) -{ - struct libusb_context *ctx = DEVICE_CTX(dev); - char path[PATH_MAX]; - int fd; - int delay = 10000; - - if (usbdev_names) - snprintf(path, PATH_MAX, "%s/usbdev%d.%d", - usbfs_path, dev->bus_number, dev->device_address); - else - snprintf(path, PATH_MAX, "%s/%03d/%03d", - usbfs_path, dev->bus_number, dev->device_address); - - fd = _open(path, mode); - if (fd != -1) - return fd; /* Success */ - - if (errno == ENOENT) { - if (!silent) - usbi_err(ctx, "File doesn't exist, wait %d ms and try again", delay/1000); - - /* Wait 10ms for USB device path creation.*/ - nanosleep(&(struct timespec){delay / 1000000, (delay * 1000) % 1000000000UL}, NULL); - - fd = _open(path, mode); - if (fd != -1) - return fd; /* Success */ - } - - if (!silent) { - usbi_err(ctx, "libusb couldn't open USB device %s: %s", - path, strerror(errno)); - if (errno == EACCES && mode == O_RDWR) - usbi_err(ctx, "libusb requires write access to USB " - "device nodes."); - } - - if (errno == EACCES) - return LIBUSB_ERROR_ACCESS; - if (errno == ENOENT) - return LIBUSB_ERROR_NO_DEVICE; - return LIBUSB_ERROR_IO; -} - -static struct linux_device_priv *_device_priv(struct libusb_device *dev) -{ - return (struct linux_device_priv *) dev->os_priv; -} - -static struct linux_device_handle_priv *_device_handle_priv( - struct libusb_device_handle *handle) -{ - return (struct linux_device_handle_priv *) handle->os_priv; -} - -/* check dirent for a /dev/usbdev%d.%d name - * optionally return bus/device on success */ -static int _is_usbdev_entry(struct dirent *entry, int *bus_p, int *dev_p) -{ - int busnum, devnum; - - if (sscanf(entry->d_name, "usbdev%d.%d", &busnum, &devnum) != 2) - return 0; - - usbi_dbg("found: %s", entry->d_name); - if (bus_p != NULL) - *bus_p = busnum; - if (dev_p != NULL) - *dev_p = devnum; - return 1; -} - -static int check_usb_vfs(const char *dirname) -{ - DIR *dir; - struct dirent *entry; - int found = 0; - - dir = opendir(dirname); - if (!dir) - return 0; - - while ((entry = readdir(dir)) != NULL) { - if (entry->d_name[0] == '.') - continue; - - /* We assume if we find any files that it must be the right place */ - found = 1; - break; - } - - closedir(dir); - return found; -} - -static const char *find_usbfs_path(void) -{ - const char *path = "/dev/bus/usb"; - const char *ret = NULL; - - if (check_usb_vfs(path)) { - ret = path; - } else { - path = "/proc/bus/usb"; - if (check_usb_vfs(path)) - ret = path; - } - - /* look for /dev/usbdev*.* if the normal places fail */ - if (ret == NULL) { - struct dirent *entry; - DIR *dir; - - path = "/dev"; - dir = opendir(path); - if (dir != NULL) { - while ((entry = readdir(dir)) != NULL) { - if (_is_usbdev_entry(entry, NULL, NULL)) { - /* found one; that's enough */ - ret = path; - usbdev_names = 1; - break; - } - } - closedir(dir); - } - } - -/* On udev based systems without any usb-devices /dev/bus/usb will not - * exist. So if we've not found anything and we're using udev for hotplug - * simply assume /dev/bus/usb rather then making libusb_init fail. - * Make the same assumption for Android where SELinux policies might block us - * from reading /dev on newer devices. */ -#if defined(USE_UDEV) || defined(__ANDROID__) - if (ret == NULL) - ret = "/dev/bus/usb"; -#endif - - if (ret != NULL) - usbi_dbg("found usbfs at %s", ret); - - return ret; -} - -/* the monotonic clock is not usable on all systems (e.g. embedded ones often - * seem to lack it). fall back to REALTIME if we have to. */ -static clockid_t find_monotonic_clock(void) -{ -#ifdef CLOCK_MONOTONIC - struct timespec ts; - int r; - - /* Linux 2.6.28 adds CLOCK_MONOTONIC_RAW but we don't use it - * because it's not available through timerfd */ - r = clock_gettime(CLOCK_MONOTONIC, &ts); - if (r == 0) - return CLOCK_MONOTONIC; - usbi_dbg("monotonic clock doesn't work, errno %d", errno); -#endif - - return CLOCK_REALTIME; -} - -static int get_kernel_version(struct libusb_context *ctx, - struct kernel_version *ver) -{ - struct utsname uts; - int atoms; - - if (uname(&uts) < 0) { - usbi_err(ctx, "uname failed, errno %d", errno); - return -1; - } - - atoms = sscanf(uts.release, "%d.%d.%d", &ver->major, &ver->minor, &ver->sublevel); - if (atoms < 1) { - usbi_err(ctx, "failed to parse uname release '%s'", uts.release); - return -1; - } - - if (atoms < 2) - ver->minor = -1; - if (atoms < 3) - ver->sublevel = -1; - - usbi_dbg("reported kernel version is %s", uts.release); - - return 0; -} - -static int kernel_version_ge(const struct kernel_version *ver, - int major, int minor, int sublevel) -{ - if (ver->major > major) - return 1; - else if (ver->major < major) - return 0; - - /* kmajor == major */ - if (ver->minor == -1 && ver->sublevel == -1) - return 0 == minor && 0 == sublevel; - else if (ver->minor > minor) - return 1; - else if (ver->minor < minor) - return 0; - - /* kminor == minor */ - if (ver->sublevel == -1) - return 0 == sublevel; - - return ver->sublevel >= sublevel; -} - -static int op_init(struct libusb_context *ctx) -{ - struct kernel_version kversion; - struct stat statbuf; - int r; - - usbfs_path = find_usbfs_path(); - if (!usbfs_path) { - usbi_err(ctx, "could not find usbfs"); - return LIBUSB_ERROR_OTHER; - } - - if (monotonic_clkid == -1) - monotonic_clkid = find_monotonic_clock(); - - if (get_kernel_version(ctx, &kversion) < 0) - return LIBUSB_ERROR_OTHER; - - if (supports_flag_cloexec == -1) { - /* O_CLOEXEC flag available from Linux 2.6.23 */ - supports_flag_cloexec = kernel_version_ge(&kversion,2,6,23); - } - - if (supports_flag_bulk_continuation == -1) { - /* bulk continuation URB flag available from Linux 2.6.32 */ - supports_flag_bulk_continuation = kernel_version_ge(&kversion,2,6,32); - } - - if (supports_flag_bulk_continuation) - usbi_dbg("bulk continuation flag supported"); - - if (-1 == supports_flag_zero_packet) { - /* zero length packet URB flag fixed since Linux 2.6.31 */ - supports_flag_zero_packet = kernel_version_ge(&kversion,2,6,31); - } - - if (supports_flag_zero_packet) - usbi_dbg("zero length packet flag supported"); - - if (!max_iso_packet_len) { - if (kernel_version_ge(&kversion,3,10,0)) - max_iso_packet_len = 49152; - else if (kernel_version_ge(&kversion,2,6,18)) - max_iso_packet_len = 8192; - else - max_iso_packet_len = 1023; - } - - usbi_dbg("max iso packet length is (likely) %u bytes", max_iso_packet_len); - - if (-1 == sysfs_has_descriptors) { - /* sysfs descriptors has all descriptors since Linux 2.6.26 */ - sysfs_has_descriptors = kernel_version_ge(&kversion,2,6,26); - } - - if (-1 == sysfs_can_relate_devices) { - /* sysfs has busnum since Linux 2.6.22 */ - sysfs_can_relate_devices = kernel_version_ge(&kversion,2,6,22); - } - - if (sysfs_can_relate_devices || sysfs_has_descriptors) { - r = stat(SYSFS_DEVICE_PATH, &statbuf); - if (r != 0 || !S_ISDIR(statbuf.st_mode)) { - usbi_warn(ctx, "sysfs not mounted"); - sysfs_can_relate_devices = 0; - sysfs_has_descriptors = 0; - } - } - - if (sysfs_can_relate_devices) - usbi_dbg("sysfs can relate devices"); - - if (sysfs_has_descriptors) - usbi_dbg("sysfs has complete descriptors"); - - usbi_mutex_static_lock(&linux_hotplug_startstop_lock); - r = LIBUSB_SUCCESS; - if (init_count == 0) { - /* start up hotplug event handler */ - r = linux_start_event_monitor(); - } - if (r == LIBUSB_SUCCESS) { - r = linux_scan_devices(ctx); - if (r == LIBUSB_SUCCESS) - init_count++; - else if (init_count == 0) - linux_stop_event_monitor(); - } else - usbi_err(ctx, "error starting hotplug event monitor"); - usbi_mutex_static_unlock(&linux_hotplug_startstop_lock); - - return r; -} - -static void op_exit(struct libusb_context *ctx) -{ - UNUSED(ctx); - usbi_mutex_static_lock(&linux_hotplug_startstop_lock); - assert(init_count != 0); - if (!--init_count) { - /* tear down event handler */ - (void)linux_stop_event_monitor(); - } - usbi_mutex_static_unlock(&linux_hotplug_startstop_lock); -} - -static int linux_start_event_monitor(void) -{ -#if defined(USE_UDEV) - return linux_udev_start_event_monitor(); -#elif !defined(__ANDROID__) - return linux_netlink_start_event_monitor(); -#else - return LIBUSB_SUCCESS; -#endif -} - -static int linux_stop_event_monitor(void) -{ -#if defined(USE_UDEV) - return linux_udev_stop_event_monitor(); -#elif !defined(__ANDROID__) - return linux_netlink_stop_event_monitor(); -#else - return LIBUSB_SUCCESS; -#endif -} - -static int linux_scan_devices(struct libusb_context *ctx) -{ - int ret = 0; - - usbi_mutex_static_lock(&linux_hotplug_lock); - -#if defined(USE_UDEV) - ret = linux_udev_scan_devices(ctx); -#elif !defined(__ANDROID__) - ret = linux_default_scan_devices(ctx); -#endif - - usbi_mutex_static_unlock(&linux_hotplug_lock); - - return ret; -} - -static void op_hotplug_poll(void) -{ -#if defined(USE_UDEV) - linux_udev_hotplug_poll(); -#elif !defined(__ANDROID__) - linux_netlink_hotplug_poll(); -#endif -} - -static int _open_sysfs_attr(struct libusb_device *dev, const char *attr) -{ - struct linux_device_priv *priv = _device_priv(dev); - char filename[PATH_MAX]; - int fd; - - snprintf(filename, PATH_MAX, "%s/%s/%s", - SYSFS_DEVICE_PATH, priv->sysfs_dir, attr); - fd = _open(filename, O_RDONLY); - if (fd < 0) { - usbi_err(DEVICE_CTX(dev), - "open %s failed ret=%d errno=%d", filename, fd, errno); - return LIBUSB_ERROR_IO; - } - - return fd; -} - -/* Note only suitable for attributes which always read >= 0, < 0 is error */ -static int __read_sysfs_attr(struct libusb_context *ctx, - const char *devname, const char *attr) -{ - char filename[PATH_MAX]; - FILE *f; - int fd, r, value; - - snprintf(filename, PATH_MAX, "%s/%s/%s", SYSFS_DEVICE_PATH, - devname, attr); - fd = _open(filename, O_RDONLY); - if (fd == -1) { - if (errno == ENOENT) { - /* File doesn't exist. Assume the device has been - disconnected (see trac ticket #70). */ - return LIBUSB_ERROR_NO_DEVICE; - } - usbi_err(ctx, "open %s failed errno=%d", filename, errno); - return LIBUSB_ERROR_IO; - } - - f = fdopen(fd, "r"); - if (f == NULL) { - usbi_err(ctx, "fdopen %s failed errno=%d", filename, errno); - close(fd); - return LIBUSB_ERROR_OTHER; - } - - r = fscanf(f, "%d", &value); - fclose(f); - if (r != 1) { - usbi_err(ctx, "fscanf %s returned %d, errno=%d", attr, r, errno); - return LIBUSB_ERROR_NO_DEVICE; /* For unplug race (trac #70) */ - } - if (value < 0) { - usbi_err(ctx, "%s contains a negative value", filename); - return LIBUSB_ERROR_IO; - } - - return value; -} - -static int op_get_device_descriptor(struct libusb_device *dev, - unsigned char *buffer, int *host_endian) -{ - struct linux_device_priv *priv = _device_priv(dev); - - *host_endian = (priv->sysfs_dir && sysfs_has_descriptors) ? 0 : 1; - memcpy(buffer, priv->descriptors, DEVICE_DESC_LENGTH); - - return 0; -} - -/* read the bConfigurationValue for a device */ -static int sysfs_get_active_config(struct libusb_device *dev, int *config) -{ - char *endptr; - char tmp[5] = {0, 0, 0, 0, 0}; - long num; - int fd; - ssize_t r; - - fd = _open_sysfs_attr(dev, "bConfigurationValue"); - if (fd < 0) - return fd; - - r = read(fd, tmp, sizeof(tmp)); - close(fd); - if (r < 0) { - usbi_err(DEVICE_CTX(dev), - "read bConfigurationValue failed ret=%d errno=%d", r, errno); - return LIBUSB_ERROR_IO; - } else if (r == 0) { - usbi_dbg("device unconfigured"); - *config = -1; - return 0; - } - - if (tmp[sizeof(tmp) - 1] != 0) { - usbi_err(DEVICE_CTX(dev), "not null-terminated?"); - return LIBUSB_ERROR_IO; - } else if (tmp[0] == 0) { - usbi_err(DEVICE_CTX(dev), "no configuration value?"); - return LIBUSB_ERROR_IO; - } - - num = strtol(tmp, &endptr, 10); - if (endptr == tmp) { - usbi_err(DEVICE_CTX(dev), "error converting '%s' to integer", tmp); - return LIBUSB_ERROR_IO; - } - - *config = (int) num; - return 0; -} - -int linux_get_device_address (struct libusb_context *ctx, int detached, - uint8_t *busnum, uint8_t *devaddr,const char *dev_node, - const char *sys_name, int fd) -{ - char proc_path[PATH_MAX], fd_path[PATH_MAX]; - int sysfs_attr; - ssize_t r; - - usbi_dbg("getting address for device: %s detached: %d", sys_name, detached); - /* can't use sysfs to read the bus and device number if the - * device has been detached */ - if (!sysfs_can_relate_devices || detached || NULL == sys_name) { - if (NULL == dev_node && fd >= 0) { - /* try to retrieve the device node from fd */ - snprintf(proc_path, PATH_MAX, "/proc/self/fd/%d", fd); - r = readlink(proc_path, fd_path, PATH_MAX); - if (r > 0) - dev_node = fd_path; - } - if (NULL == dev_node) { - return LIBUSB_ERROR_OTHER; - } - - /* will this work with all supported kernel versions? */ - if (!strncmp(dev_node, "/dev/bus/usb", 12)) { - sscanf (dev_node, "/dev/bus/usb/%hhu/%hhu", busnum, devaddr); - } else if (!strncmp(dev_node, "/proc/bus/usb", 13)) { - sscanf (dev_node, "/proc/bus/usb/%hhu/%hhu", busnum, devaddr); - } else { - return LIBUSB_ERROR_OTHER; - } - - return LIBUSB_SUCCESS; - } - - usbi_dbg("scan %s", sys_name); - - sysfs_attr = __read_sysfs_attr(ctx, sys_name, "busnum"); - if (0 > sysfs_attr) - return sysfs_attr; - if (sysfs_attr > 255) - return LIBUSB_ERROR_INVALID_PARAM; - *busnum = (uint8_t) sysfs_attr; - - sysfs_attr = __read_sysfs_attr(ctx, sys_name, "devnum"); - if (0 > sysfs_attr) - return sysfs_attr; - if (sysfs_attr > 255) - return LIBUSB_ERROR_INVALID_PARAM; - - *devaddr = (uint8_t) sysfs_attr; - - usbi_dbg("bus=%d dev=%d", *busnum, *devaddr); - - return LIBUSB_SUCCESS; -} - -/* Return offset of the next descriptor with the given type */ -static int seek_to_next_descriptor(struct libusb_context *ctx, - uint8_t descriptor_type, unsigned char *buffer, int size) -{ - struct usb_descriptor_header header; - int i; - - for (i = 0; size >= 0; i += header.bLength, size -= header.bLength) { - if (size == 0) - return LIBUSB_ERROR_NOT_FOUND; - - if (size < 2) { - usbi_err(ctx, "short descriptor read %d/2", size); - return LIBUSB_ERROR_IO; - } - usbi_parse_descriptor(buffer + i, "bb", &header, 0); - - if (i && header.bDescriptorType == descriptor_type) - return i; - } - usbi_err(ctx, "bLength overflow by %d bytes", -size); - return LIBUSB_ERROR_IO; -} - -/* Return offset to next config */ -static int seek_to_next_config(struct libusb_device *dev, - unsigned char *buffer, int size) -{ - struct libusb_context *ctx = DEVICE_CTX(dev); - struct linux_device_priv *priv = _device_priv(dev); - struct libusb_config_descriptor config; - - if (size == 0) - return LIBUSB_ERROR_NOT_FOUND; - - if (size < LIBUSB_DT_CONFIG_SIZE) { - usbi_err(ctx, "short descriptor read %d/%d", - size, LIBUSB_DT_CONFIG_SIZE); - return LIBUSB_ERROR_IO; - } - - usbi_parse_descriptor(buffer, "bbwbbbbb", &config, 0); - if (config.bDescriptorType != LIBUSB_DT_CONFIG) { - usbi_err(ctx, "descriptor is not a config desc (type 0x%02x)", - config.bDescriptorType); - return LIBUSB_ERROR_IO; - } - - /* - * In usbfs the config descriptors are config.wTotalLength bytes apart, - * with any short reads from the device appearing as holes in the file. - * - * In sysfs wTotalLength is ignored, instead the kernel returns a - * config descriptor with verified bLength fields, with descriptors - * with an invalid bLength removed. - */ - if (priv->sysfs_dir && sysfs_has_descriptors) { - int next = seek_to_next_descriptor(ctx, LIBUSB_DT_CONFIG, - buffer, size); - if (next == LIBUSB_ERROR_NOT_FOUND) - next = size; - if (next < 0) - return next; - - if (next != config.wTotalLength) - usbi_warn(ctx, "config length mismatch wTotalLength " - "%d real %d", config.wTotalLength, next); - return next; - } else { - if (config.wTotalLength < LIBUSB_DT_CONFIG_SIZE) { - usbi_err(ctx, "invalid wTotalLength %d", - config.wTotalLength); - return LIBUSB_ERROR_IO; - } else if (config.wTotalLength > size) { - usbi_warn(ctx, "short descriptor read %d/%d", - size, config.wTotalLength); - return size; - } else - return config.wTotalLength; - } -} - -static int op_get_config_descriptor_by_value(struct libusb_device *dev, - uint8_t value, unsigned char **buffer, int *host_endian) -{ - struct linux_device_priv *priv = _device_priv(dev); - unsigned char *descriptors = priv->descriptors; - int size = priv->descriptors_len; - struct libusb_config_descriptor *config; - - *buffer = NULL; - /* Unlike the device desc. config descs. are always in raw format */ - *host_endian = 0; - - /* Skip device header */ - descriptors += DEVICE_DESC_LENGTH; - size -= DEVICE_DESC_LENGTH; - - /* Seek till the config is found, or till "EOF" */ - while (1) { - int next = seek_to_next_config(dev, descriptors, size); - if (next < 0) - return next; - config = (struct libusb_config_descriptor *)descriptors; - if (config->bConfigurationValue == value) { - *buffer = descriptors; - return next; - } - size -= next; - descriptors += next; - } -} - -static int op_get_active_config_descriptor(struct libusb_device *dev, - unsigned char *buffer, size_t len, int *host_endian) -{ - struct linux_device_priv *priv = _device_priv(dev); - int r, config; - unsigned char *config_desc; - - if (priv->sysfs_dir && sysfs_can_relate_devices) { - r = sysfs_get_active_config(dev, &config); - if (r < 0) - return r; - } else { - /* Use cached bConfigurationValue */ - config = priv->active_config; - } - if (config == -1) - return LIBUSB_ERROR_NOT_FOUND; - - r = op_get_config_descriptor_by_value(dev, config, &config_desc, - host_endian); - if (r < 0) - return r; - - len = MIN(len, (size_t)r); - memcpy(buffer, config_desc, len); - return len; -} - -static int op_get_config_descriptor(struct libusb_device *dev, - uint8_t config_index, unsigned char *buffer, size_t len, int *host_endian) -{ - struct linux_device_priv *priv = _device_priv(dev); - unsigned char *descriptors = priv->descriptors; - int i, r, size = priv->descriptors_len; - - /* Unlike the device desc. config descs. are always in raw format */ - *host_endian = 0; - - /* Skip device header */ - descriptors += DEVICE_DESC_LENGTH; - size -= DEVICE_DESC_LENGTH; - - /* Seek till the config is found, or till "EOF" */ - for (i = 0; ; i++) { - r = seek_to_next_config(dev, descriptors, size); - if (r < 0) - return r; - if (i == config_index) - break; - size -= r; - descriptors += r; - } - - len = MIN(len, (size_t)r); - memcpy(buffer, descriptors, len); - return len; -} - -/* send a control message to retrieve active configuration */ -static int usbfs_get_active_config(struct libusb_device *dev, int fd) -{ - struct linux_device_priv *priv = _device_priv(dev); - unsigned char active_config = 0; - int r; - - struct usbfs_ctrltransfer ctrl = { - .bmRequestType = LIBUSB_ENDPOINT_IN, - .bRequest = LIBUSB_REQUEST_GET_CONFIGURATION, - .wValue = 0, - .wIndex = 0, - .wLength = 1, - .timeout = 1000, - .data = &active_config - }; - - r = ioctl(fd, IOCTL_USBFS_CONTROL, &ctrl); - if (r < 0) { - if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - /* we hit this error path frequently with buggy devices :( */ - usbi_warn(DEVICE_CTX(dev), - "get_configuration failed ret=%d errno=%d", r, errno); - priv->active_config = -1; - } else { - if (active_config > 0) { - priv->active_config = active_config; - } else { - /* some buggy devices have a configuration 0, but we're - * reaching into the corner of a corner case here, so let's - * not support buggy devices in these circumstances. - * stick to the specs: a configuration value of 0 means - * unconfigured. */ - usbi_warn(DEVICE_CTX(dev), - "active cfg 0? assuming unconfigured device"); - priv->active_config = -1; - } - } - - return LIBUSB_SUCCESS; -} - -static int initialize_device(struct libusb_device *dev, uint8_t busnum, - uint8_t devaddr, const char *sysfs_dir, int wrapped_fd) -{ - struct linux_device_priv *priv = _device_priv(dev); - struct libusb_context *ctx = DEVICE_CTX(dev); - int descriptors_size = 512; /* Begin with a 1024 byte alloc */ - int fd, speed; - ssize_t r; - - dev->bus_number = busnum; - dev->device_address = devaddr; - - if (sysfs_dir) { - priv->sysfs_dir = strdup(sysfs_dir); - if (!priv->sysfs_dir) - return LIBUSB_ERROR_NO_MEM; - - /* Note speed can contain 1.5, in this case __read_sysfs_attr - will stop parsing at the '.' and return 1 */ - speed = __read_sysfs_attr(DEVICE_CTX(dev), sysfs_dir, "speed"); - if (speed >= 0) { - switch (speed) { - case 1: dev->speed = LIBUSB_SPEED_LOW; break; - case 12: dev->speed = LIBUSB_SPEED_FULL; break; - case 480: dev->speed = LIBUSB_SPEED_HIGH; break; - case 5000: dev->speed = LIBUSB_SPEED_SUPER; break; - case 10000: dev->speed = LIBUSB_SPEED_SUPER_PLUS; break; - default: - usbi_warn(DEVICE_CTX(dev), "Unknown device speed: %d Mbps", speed); - } - } - } - - /* cache descriptors in memory */ - if (sysfs_dir && sysfs_has_descriptors) { - fd = _open_sysfs_attr(dev, "descriptors"); - } else if (wrapped_fd < 0) { - fd = _get_usbfs_fd(dev, O_RDONLY, 0); - } else { - fd = wrapped_fd; - r = lseek(fd, 0, SEEK_SET); - if (r < 0) { - usbi_err(ctx, "seek failed ret=%d errno=%d", r, errno); - return LIBUSB_ERROR_IO; - } - } - if (fd < 0) - return fd; - - do { - descriptors_size *= 2; - priv->descriptors = usbi_reallocf(priv->descriptors, - descriptors_size); - if (!priv->descriptors) { - if (fd != wrapped_fd) - close(fd); - return LIBUSB_ERROR_NO_MEM; - } - /* usbfs has holes in the file */ - if (!(sysfs_dir && sysfs_has_descriptors)) { - memset(priv->descriptors + priv->descriptors_len, - 0, descriptors_size - priv->descriptors_len); - } - r = read(fd, priv->descriptors + priv->descriptors_len, - descriptors_size - priv->descriptors_len); - if (r < 0) { - usbi_err(ctx, "read descriptor failed ret=%d errno=%d", - fd, errno); - if (fd != wrapped_fd) - close(fd); - return LIBUSB_ERROR_IO; - } - priv->descriptors_len += r; - } while (priv->descriptors_len == descriptors_size); - - if (fd != wrapped_fd) - close(fd); - - if (priv->descriptors_len < DEVICE_DESC_LENGTH) { - usbi_err(ctx, "short descriptor read (%d)", - priv->descriptors_len); - return LIBUSB_ERROR_IO; - } - - if (sysfs_dir && sysfs_can_relate_devices) - return LIBUSB_SUCCESS; - - /* cache active config */ - if (wrapped_fd < 0) - fd = _get_usbfs_fd(dev, O_RDWR, 1); - else - fd = wrapped_fd; - if (fd < 0) { - /* cannot send a control message to determine the active - * config. just assume the first one is active. */ - usbi_warn(ctx, "Missing rw usbfs access; cannot determine " - "active configuration descriptor"); - if (priv->descriptors_len >= - (DEVICE_DESC_LENGTH + LIBUSB_DT_CONFIG_SIZE)) { - struct libusb_config_descriptor config; - usbi_parse_descriptor( - priv->descriptors + DEVICE_DESC_LENGTH, - "bbwbbbbb", &config, 0); - priv->active_config = config.bConfigurationValue; - } else - priv->active_config = -1; /* No config dt */ - - return LIBUSB_SUCCESS; - } - - r = usbfs_get_active_config(dev, fd); - if (wrapped_fd < 0) - close(fd); - - return r; -} - -static int linux_get_parent_info(struct libusb_device *dev, const char *sysfs_dir) -{ - struct libusb_context *ctx = DEVICE_CTX(dev); - struct libusb_device *it; - char *parent_sysfs_dir, *tmp; - int ret, add_parent = 1; - - /* XXX -- can we figure out the topology when using usbfs? */ - if (NULL == sysfs_dir || 0 == strncmp(sysfs_dir, "usb", 3)) { - /* either using usbfs or finding the parent of a root hub */ - return LIBUSB_SUCCESS; - } - - parent_sysfs_dir = strdup(sysfs_dir); - if (NULL == parent_sysfs_dir) { - return LIBUSB_ERROR_NO_MEM; - } - if (NULL != (tmp = strrchr(parent_sysfs_dir, '.')) || - NULL != (tmp = strrchr(parent_sysfs_dir, '-'))) { - dev->port_number = atoi(tmp + 1); - *tmp = '\0'; - } else { - usbi_warn(ctx, "Can not parse sysfs_dir: %s, no parent info", - parent_sysfs_dir); - free (parent_sysfs_dir); - return LIBUSB_SUCCESS; - } - - /* is the parent a root hub? */ - if (NULL == strchr(parent_sysfs_dir, '-')) { - tmp = parent_sysfs_dir; - ret = asprintf (&parent_sysfs_dir, "usb%s", tmp); - free (tmp); - if (0 > ret) { - return LIBUSB_ERROR_NO_MEM; - } - } - -retry: - /* find the parent in the context */ - usbi_mutex_lock(&ctx->usb_devs_lock); - list_for_each_entry(it, &ctx->usb_devs, list, struct libusb_device) { - struct linux_device_priv *priv = _device_priv(it); - if (priv->sysfs_dir) { - if (0 == strcmp (priv->sysfs_dir, parent_sysfs_dir)) { - dev->parent_dev = libusb_ref_device(it); - break; - } - } - } - usbi_mutex_unlock(&ctx->usb_devs_lock); - - if (!dev->parent_dev && add_parent) { - usbi_dbg("parent_dev %s not enumerated yet, enumerating now", - parent_sysfs_dir); - sysfs_scan_device(ctx, parent_sysfs_dir); - add_parent = 0; - goto retry; - } - - usbi_dbg("Dev %p (%s) has parent %p (%s) port %d", dev, sysfs_dir, - dev->parent_dev, parent_sysfs_dir, dev->port_number); - - free (parent_sysfs_dir); - - return LIBUSB_SUCCESS; -} - -int linux_enumerate_device(struct libusb_context *ctx, - uint8_t busnum, uint8_t devaddr, const char *sysfs_dir) -{ - unsigned long session_id; - struct libusb_device *dev; - int r = 0; - - /* FIXME: session ID is not guaranteed unique as addresses can wrap and - * will be reused. instead we should add a simple sysfs attribute with - * a session ID. */ - session_id = busnum << 8 | devaddr; - usbi_dbg("busnum %d devaddr %d session_id %ld", busnum, devaddr, - session_id); - - dev = usbi_get_device_by_session_id(ctx, session_id); - if (dev) { - /* device already exists in the context */ - usbi_dbg("session_id %ld already exists", session_id); - libusb_unref_device(dev); - return LIBUSB_SUCCESS; - } - - usbi_dbg("allocating new device for %d/%d (session %ld)", - busnum, devaddr, session_id); - dev = usbi_alloc_device(ctx, session_id); - if (!dev) - return LIBUSB_ERROR_NO_MEM; - - r = initialize_device(dev, busnum, devaddr, sysfs_dir, -1); - if (r < 0) - goto out; - r = usbi_sanitize_device(dev); - if (r < 0) - goto out; - - r = linux_get_parent_info(dev, sysfs_dir); - if (r < 0) - goto out; -out: - if (r < 0) - libusb_unref_device(dev); - else - usbi_connect_device(dev); - - return r; -} - -void linux_hotplug_enumerate(uint8_t busnum, uint8_t devaddr, const char *sys_name) -{ - struct libusb_context *ctx; - - usbi_mutex_static_lock(&active_contexts_lock); - list_for_each_entry(ctx, &active_contexts_list, list, struct libusb_context) { - linux_enumerate_device(ctx, busnum, devaddr, sys_name); - } - usbi_mutex_static_unlock(&active_contexts_lock); -} - -void linux_device_disconnected(uint8_t busnum, uint8_t devaddr) -{ - struct libusb_context *ctx; - struct libusb_device *dev; - unsigned long session_id = busnum << 8 | devaddr; - - usbi_mutex_static_lock(&active_contexts_lock); - list_for_each_entry(ctx, &active_contexts_list, list, struct libusb_context) { - dev = usbi_get_device_by_session_id (ctx, session_id); - if (NULL != dev) { - usbi_disconnect_device (dev); - libusb_unref_device(dev); - } else { - usbi_dbg("device not found for session %x", session_id); - } - } - usbi_mutex_static_unlock(&active_contexts_lock); -} - -#if !defined(USE_UDEV) -/* open a bus directory and adds all discovered devices to the context */ -static int usbfs_scan_busdir(struct libusb_context *ctx, uint8_t busnum) -{ - DIR *dir; - char dirpath[PATH_MAX]; - struct dirent *entry; - int r = LIBUSB_ERROR_IO; - - snprintf(dirpath, PATH_MAX, "%s/%03d", usbfs_path, busnum); - usbi_dbg("%s", dirpath); - dir = opendir(dirpath); - if (!dir) { - usbi_err(ctx, "opendir '%s' failed, errno=%d", dirpath, errno); - /* FIXME: should handle valid race conditions like hub unplugged - * during directory iteration - this is not an error */ - return r; - } - - while ((entry = readdir(dir))) { - int devaddr; - - if (entry->d_name[0] == '.') - continue; - - devaddr = atoi(entry->d_name); - if (devaddr == 0) { - usbi_dbg("unknown dir entry %s", entry->d_name); - continue; - } - - if (linux_enumerate_device(ctx, busnum, (uint8_t) devaddr, NULL)) { - usbi_dbg("failed to enumerate dir entry %s", entry->d_name); - continue; - } - - r = 0; - } - - closedir(dir); - return r; -} - -static int usbfs_get_device_list(struct libusb_context *ctx) -{ - struct dirent *entry; - DIR *buses = opendir(usbfs_path); - int r = 0; - - if (!buses) { - usbi_err(ctx, "opendir buses failed errno=%d", errno); - return LIBUSB_ERROR_IO; - } - - while ((entry = readdir(buses))) { - int busnum; - - if (entry->d_name[0] == '.') - continue; - - if (usbdev_names) { - int devaddr; - if (!_is_usbdev_entry(entry, &busnum, &devaddr)) - continue; - - r = linux_enumerate_device(ctx, busnum, (uint8_t) devaddr, NULL); - if (r < 0) { - usbi_dbg("failed to enumerate dir entry %s", entry->d_name); - continue; - } - } else { - busnum = atoi(entry->d_name); - if (busnum == 0) { - usbi_dbg("unknown dir entry %s", entry->d_name); - continue; - } - - r = usbfs_scan_busdir(ctx, busnum); - if (r < 0) - break; - } - } - - closedir(buses); - return r; - -} -#endif - -static int sysfs_scan_device(struct libusb_context *ctx, const char *devname) -{ - uint8_t busnum, devaddr; - int ret; - - ret = linux_get_device_address (ctx, 0, &busnum, &devaddr, NULL, devname, -1); - if (LIBUSB_SUCCESS != ret) { - return ret; - } - - return linux_enumerate_device(ctx, busnum & 0xff, devaddr & 0xff, - devname); -} - -#if !defined(USE_UDEV) -static int sysfs_get_device_list(struct libusb_context *ctx) -{ - DIR *devices = opendir(SYSFS_DEVICE_PATH); - struct dirent *entry; - int num_devices = 0; - int num_enumerated = 0; - - if (!devices) { - usbi_err(ctx, "opendir devices failed errno=%d", errno); - return LIBUSB_ERROR_IO; - } - - while ((entry = readdir(devices))) { - if ((!isdigit(entry->d_name[0]) && strncmp(entry->d_name, "usb", 3)) - || strchr(entry->d_name, ':')) - continue; - - num_devices++; - - if (sysfs_scan_device(ctx, entry->d_name)) { - usbi_dbg("failed to enumerate dir entry %s", entry->d_name); - continue; - } - - num_enumerated++; - } - - closedir(devices); - - /* successful if at least one device was enumerated or no devices were found */ - if (num_enumerated || !num_devices) - return LIBUSB_SUCCESS; - else - return LIBUSB_ERROR_IO; -} - -static int linux_default_scan_devices (struct libusb_context *ctx) -{ - /* we can retrieve device list and descriptors from sysfs or usbfs. - * sysfs is preferable, because if we use usbfs we end up resuming - * any autosuspended USB devices. however, sysfs is not available - * everywhere, so we need a usbfs fallback too. - * - * as described in the "sysfs vs usbfs" comment at the top of this - * file, sometimes we have sysfs but not enough information to - * relate sysfs devices to usbfs nodes. op_init() determines the - * adequacy of sysfs and sets sysfs_can_relate_devices. - */ - if (sysfs_can_relate_devices != 0) - return sysfs_get_device_list(ctx); - else - return usbfs_get_device_list(ctx); -} -#endif - -static int initialize_handle(struct libusb_device_handle *handle, int fd) -{ - struct linux_device_handle_priv *hpriv = _device_handle_priv(handle); - int r; - - hpriv->fd = fd; - - r = ioctl(fd, IOCTL_USBFS_GET_CAPABILITIES, &hpriv->caps); - if (r < 0) { - if (errno == ENOTTY) - usbi_dbg("getcap not available"); - else - usbi_err(HANDLE_CTX(handle), "getcap failed (%d)", errno); - hpriv->caps = 0; - if (supports_flag_zero_packet) - hpriv->caps |= USBFS_CAP_ZERO_PACKET; - if (supports_flag_bulk_continuation) - hpriv->caps |= USBFS_CAP_BULK_CONTINUATION; - } - - return usbi_add_pollfd(HANDLE_CTX(handle), hpriv->fd, POLLOUT); -} - -static int op_wrap_sys_device(struct libusb_context *ctx, - struct libusb_device_handle *handle, intptr_t sys_dev) -{ - struct linux_device_handle_priv *hpriv = _device_handle_priv(handle); - int fd = (int)sys_dev; - uint8_t busnum, devaddr; - struct usbfs_connectinfo ci; - struct libusb_device *dev; - int r; - - r = linux_get_device_address(ctx, 1, &busnum, &devaddr, NULL, NULL, fd); - if (r < 0) { - r = ioctl(fd, IOCTL_USBFS_CONNECTINFO, &ci); - if (r < 0) { - usbi_err(ctx, "connectinfo failed (%d)", errno); - return LIBUSB_ERROR_IO; - } - /* There is no ioctl to get the bus number. We choose 0 here - * as linux starts numbering buses from 1. */ - busnum = 0; - devaddr = ci.devnum; - } - - /* Session id is unused as we do not add the device to the list of - * connected devices. */ - usbi_dbg("allocating new device for fd %d", fd); - dev = usbi_alloc_device(ctx, 0); - if (!dev) - return LIBUSB_ERROR_NO_MEM; - - r = initialize_device(dev, busnum, devaddr, NULL, fd); - if (r < 0) - goto out; - r = usbi_sanitize_device(dev); - if (r < 0) - goto out; - /* Consider the device as connected, but do not add it to the managed - * device list. */ - dev->attached = 1; - handle->dev = dev; - - r = initialize_handle(handle, fd); - hpriv->fd_keep = 1; - -out: - if (r < 0) - libusb_unref_device(dev); - return r; -} - -static int op_open(struct libusb_device_handle *handle) -{ - int fd, r; - - fd = _get_usbfs_fd(handle->dev, O_RDWR, 0); - if (fd < 0) { - if (fd == LIBUSB_ERROR_NO_DEVICE) { - /* device will still be marked as attached if hotplug monitor thread - * hasn't processed remove event yet */ - usbi_mutex_static_lock(&linux_hotplug_lock); - if (handle->dev->attached) { - usbi_dbg("open failed with no device, but device still attached"); - linux_device_disconnected(handle->dev->bus_number, - handle->dev->device_address); - } - usbi_mutex_static_unlock(&linux_hotplug_lock); - } - return fd; - } - - r = initialize_handle(handle, fd); - if (r < 0) - close(fd); - - return r; -} - -static void op_close(struct libusb_device_handle *dev_handle) -{ - struct linux_device_handle_priv *hpriv = _device_handle_priv(dev_handle); - /* fd may have already been removed by POLLERR condition in op_handle_events() */ - if (!hpriv->fd_removed) - usbi_remove_pollfd(HANDLE_CTX(dev_handle), hpriv->fd); - if (!hpriv->fd_keep) - close(hpriv->fd); -} - -static int op_get_configuration(struct libusb_device_handle *handle, - int *config) -{ - struct linux_device_priv *priv = _device_priv(handle->dev); - int r; - - if (priv->sysfs_dir && sysfs_can_relate_devices) { - r = sysfs_get_active_config(handle->dev, config); - } else { - r = usbfs_get_active_config(handle->dev, - _device_handle_priv(handle)->fd); - if (r == LIBUSB_SUCCESS) - *config = priv->active_config; - } - if (r < 0) - return r; - - if (*config == -1) { - usbi_err(HANDLE_CTX(handle), "device unconfigured"); - *config = 0; - } - - return 0; -} - -static int op_set_configuration(struct libusb_device_handle *handle, int config) -{ - struct linux_device_priv *priv = _device_priv(handle->dev); - int fd = _device_handle_priv(handle)->fd; - int r = ioctl(fd, IOCTL_USBFS_SETCONFIG, &config); - if (r) { - if (errno == EINVAL) - return LIBUSB_ERROR_NOT_FOUND; - else if (errno == EBUSY) - return LIBUSB_ERROR_BUSY; - else if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), "failed, error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } - - /* update our cached active config descriptor */ - priv->active_config = config; - - return LIBUSB_SUCCESS; -} - -static int claim_interface(struct libusb_device_handle *handle, int iface) -{ - int fd = _device_handle_priv(handle)->fd; - int r = ioctl(fd, IOCTL_USBFS_CLAIMINTF, &iface); - if (r) { - if (errno == ENOENT) - return LIBUSB_ERROR_NOT_FOUND; - else if (errno == EBUSY) - return LIBUSB_ERROR_BUSY; - else if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), - "claim interface failed, error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } - return 0; -} - -static int release_interface(struct libusb_device_handle *handle, int iface) -{ - int fd = _device_handle_priv(handle)->fd; - int r = ioctl(fd, IOCTL_USBFS_RELEASEINTF, &iface); - if (r) { - if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), - "release interface failed, error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } - return 0; -} - -static int op_set_interface(struct libusb_device_handle *handle, int iface, - int altsetting) -{ - int fd = _device_handle_priv(handle)->fd; - struct usbfs_setinterface setintf; - int r; - - setintf.interface = iface; - setintf.altsetting = altsetting; - r = ioctl(fd, IOCTL_USBFS_SETINTF, &setintf); - if (r) { - if (errno == EINVAL) - return LIBUSB_ERROR_NOT_FOUND; - else if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), - "setintf failed error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } - - return 0; -} - -static int op_clear_halt(struct libusb_device_handle *handle, - unsigned char endpoint) -{ - int fd = _device_handle_priv(handle)->fd; - unsigned int _endpoint = endpoint; - int r = ioctl(fd, IOCTL_USBFS_CLEAR_HALT, &_endpoint); - if (r) { - if (errno == ENOENT) - return LIBUSB_ERROR_NOT_FOUND; - else if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), - "clear_halt failed error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } - - return 0; -} - -static int op_reset_device(struct libusb_device_handle *handle) -{ - int fd = _device_handle_priv(handle)->fd; - int i, r, ret = 0; - - /* Doing a device reset will cause the usbfs driver to get unbound - from any interfaces it is bound to. By voluntarily unbinding - the usbfs driver ourself, we stop the kernel from rebinding - the interface after reset (which would end up with the interface - getting bound to the in kernel driver if any). */ - for (i = 0; i < USB_MAXINTERFACES; i++) { - if (handle->claimed_interfaces & (1L << i)) { - release_interface(handle, i); - } - } - - usbi_mutex_lock(&handle->lock); - r = ioctl(fd, IOCTL_USBFS_RESET, NULL); - if (r) { - if (errno == ENODEV) { - ret = LIBUSB_ERROR_NOT_FOUND; - goto out; - } - - usbi_err(HANDLE_CTX(handle), - "reset failed error %d errno %d", r, errno); - ret = LIBUSB_ERROR_OTHER; - goto out; - } - - /* And re-claim any interfaces which were claimed before the reset */ - for (i = 0; i < USB_MAXINTERFACES; i++) { - if (handle->claimed_interfaces & (1L << i)) { - /* - * A driver may have completed modprobing during - * IOCTL_USBFS_RESET, and bound itself as soon as - * IOCTL_USBFS_RESET released the device lock - */ - r = detach_kernel_driver_and_claim(handle, i); - if (r) { - usbi_warn(HANDLE_CTX(handle), - "failed to re-claim interface %d after reset: %s", - i, libusb_error_name(r)); - handle->claimed_interfaces &= ~(1L << i); - ret = LIBUSB_ERROR_NOT_FOUND; - } - } - } -out: - usbi_mutex_unlock(&handle->lock); - return ret; -} - -static int do_streams_ioctl(struct libusb_device_handle *handle, long req, - uint32_t num_streams, unsigned char *endpoints, int num_endpoints) -{ - int r, fd = _device_handle_priv(handle)->fd; - struct usbfs_streams *streams; - - if (num_endpoints > 30) /* Max 15 in + 15 out eps */ - return LIBUSB_ERROR_INVALID_PARAM; - - streams = malloc(sizeof(struct usbfs_streams) + num_endpoints); - if (!streams) - return LIBUSB_ERROR_NO_MEM; - - streams->num_streams = num_streams; - streams->num_eps = num_endpoints; - memcpy(streams->eps, endpoints, num_endpoints); - - r = ioctl(fd, req, streams); - - free(streams); - - if (r < 0) { - if (errno == ENOTTY) - return LIBUSB_ERROR_NOT_SUPPORTED; - else if (errno == EINVAL) - return LIBUSB_ERROR_INVALID_PARAM; - else if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), - "streams-ioctl failed error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } - return r; -} - -static int op_alloc_streams(struct libusb_device_handle *handle, - uint32_t num_streams, unsigned char *endpoints, int num_endpoints) -{ - return do_streams_ioctl(handle, IOCTL_USBFS_ALLOC_STREAMS, - num_streams, endpoints, num_endpoints); -} - -static int op_free_streams(struct libusb_device_handle *handle, - unsigned char *endpoints, int num_endpoints) -{ - return do_streams_ioctl(handle, IOCTL_USBFS_FREE_STREAMS, 0, - endpoints, num_endpoints); -} - -static unsigned char *op_dev_mem_alloc(struct libusb_device_handle *handle, - size_t len) -{ - struct linux_device_handle_priv *hpriv = _device_handle_priv(handle); - unsigned char *buffer = (unsigned char *)mmap(NULL, len, - PROT_READ | PROT_WRITE, MAP_SHARED, hpriv->fd, 0); - if (buffer == MAP_FAILED) { - usbi_err(HANDLE_CTX(handle), "alloc dev mem failed errno %d", - errno); - return NULL; - } - return buffer; -} - -static int op_dev_mem_free(struct libusb_device_handle *handle, - unsigned char *buffer, size_t len) -{ - if (munmap(buffer, len) != 0) { - usbi_err(HANDLE_CTX(handle), "free dev mem failed errno %d", - errno); - return LIBUSB_ERROR_OTHER; - } else { - return LIBUSB_SUCCESS; - } -} - -static int op_kernel_driver_active(struct libusb_device_handle *handle, - int interface) -{ - int fd = _device_handle_priv(handle)->fd; - struct usbfs_getdriver getdrv; - int r; - - getdrv.interface = interface; - r = ioctl(fd, IOCTL_USBFS_GETDRIVER, &getdrv); - if (r) { - if (errno == ENODATA) - return 0; - else if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), - "get driver failed error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } - - return (strcmp(getdrv.driver, "usbfs") == 0) ? 0 : 1; -} - -static int op_detach_kernel_driver(struct libusb_device_handle *handle, - int interface) -{ - int fd = _device_handle_priv(handle)->fd; - struct usbfs_ioctl command; - struct usbfs_getdriver getdrv; - int r; - - command.ifno = interface; - command.ioctl_code = IOCTL_USBFS_DISCONNECT; - command.data = NULL; - - getdrv.interface = interface; - r = ioctl(fd, IOCTL_USBFS_GETDRIVER, &getdrv); - if (r == 0 && strcmp(getdrv.driver, "usbfs") == 0) - return LIBUSB_ERROR_NOT_FOUND; - - r = ioctl(fd, IOCTL_USBFS_IOCTL, &command); - if (r) { - if (errno == ENODATA) - return LIBUSB_ERROR_NOT_FOUND; - else if (errno == EINVAL) - return LIBUSB_ERROR_INVALID_PARAM; - else if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), - "detach failed error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } - - return 0; -} - -static int op_attach_kernel_driver(struct libusb_device_handle *handle, - int interface) -{ - int fd = _device_handle_priv(handle)->fd; - struct usbfs_ioctl command; - int r; - - command.ifno = interface; - command.ioctl_code = IOCTL_USBFS_CONNECT; - command.data = NULL; - - r = ioctl(fd, IOCTL_USBFS_IOCTL, &command); - if (r < 0) { - if (errno == ENODATA) - return LIBUSB_ERROR_NOT_FOUND; - else if (errno == EINVAL) - return LIBUSB_ERROR_INVALID_PARAM; - else if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - else if (errno == EBUSY) - return LIBUSB_ERROR_BUSY; - - usbi_err(HANDLE_CTX(handle), - "attach failed error %d errno %d", r, errno); - return LIBUSB_ERROR_OTHER; - } else if (r == 0) { - return LIBUSB_ERROR_NOT_FOUND; - } - - return 0; -} - -static int detach_kernel_driver_and_claim(struct libusb_device_handle *handle, - int interface) -{ - struct usbfs_disconnect_claim dc; - int r, fd = _device_handle_priv(handle)->fd; - - dc.interface = interface; - strcpy(dc.driver, "usbfs"); - dc.flags = USBFS_DISCONNECT_CLAIM_EXCEPT_DRIVER; - r = ioctl(fd, IOCTL_USBFS_DISCONNECT_CLAIM, &dc); - if (r != 0 && errno != ENOTTY) { - switch (errno) { - case EBUSY: - return LIBUSB_ERROR_BUSY; - case EINVAL: - return LIBUSB_ERROR_INVALID_PARAM; - case ENODEV: - return LIBUSB_ERROR_NO_DEVICE; - } - usbi_err(HANDLE_CTX(handle), - "disconnect-and-claim failed errno %d", errno); - return LIBUSB_ERROR_OTHER; - } else if (r == 0) - return 0; - - /* Fallback code for kernels which don't support the - disconnect-and-claim ioctl */ - r = op_detach_kernel_driver(handle, interface); - if (r != 0 && r != LIBUSB_ERROR_NOT_FOUND) - return r; - - return claim_interface(handle, interface); -} - -static int op_claim_interface(struct libusb_device_handle *handle, int iface) -{ - if (handle->auto_detach_kernel_driver) - return detach_kernel_driver_and_claim(handle, iface); - else - return claim_interface(handle, iface); -} - -static int op_release_interface(struct libusb_device_handle *handle, int iface) -{ - int r; - - r = release_interface(handle, iface); - if (r) - return r; - - if (handle->auto_detach_kernel_driver) - op_attach_kernel_driver(handle, iface); - - return 0; -} - -static void op_destroy_device(struct libusb_device *dev) -{ - struct linux_device_priv *priv = _device_priv(dev); - if (priv->descriptors) - free(priv->descriptors); - if (priv->sysfs_dir) - free(priv->sysfs_dir); -} - -/* URBs are discarded in reverse order of submission to avoid races. */ -static int discard_urbs(struct usbi_transfer *itransfer, int first, int last_plus_one) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct linux_transfer_priv *tpriv = - usbi_transfer_get_os_priv(itransfer); - struct linux_device_handle_priv *dpriv = - _device_handle_priv(transfer->dev_handle); - int i, ret = 0; - struct usbfs_urb *urb; - - for (i = last_plus_one - 1; i >= first; i--) { - if (LIBUSB_TRANSFER_TYPE_ISOCHRONOUS == transfer->type) - urb = tpriv->iso_urbs[i]; - else - urb = &tpriv->urbs[i]; - - if (0 == ioctl(dpriv->fd, IOCTL_USBFS_DISCARDURB, urb)) - continue; - - if (EINVAL == errno) { - usbi_dbg("URB not found --> assuming ready to be reaped"); - if (i == (last_plus_one - 1)) - ret = LIBUSB_ERROR_NOT_FOUND; - } else if (ENODEV == errno) { - usbi_dbg("Device not found for URB --> assuming ready to be reaped"); - ret = LIBUSB_ERROR_NO_DEVICE; - } else { - usbi_warn(TRANSFER_CTX(transfer), - "unrecognised discard errno %d", errno); - ret = LIBUSB_ERROR_OTHER; - } - } - return ret; -} - -static void free_iso_urbs(struct linux_transfer_priv *tpriv) -{ - int i; - for (i = 0; i < tpriv->num_urbs; i++) { - struct usbfs_urb *urb = tpriv->iso_urbs[i]; - if (!urb) - break; - free(urb); - } - - free(tpriv->iso_urbs); - tpriv->iso_urbs = NULL; -} - -static int submit_bulk_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - struct linux_device_handle_priv *dpriv = - _device_handle_priv(transfer->dev_handle); - struct usbfs_urb *urbs; - int is_out = (transfer->endpoint & LIBUSB_ENDPOINT_DIR_MASK) - == LIBUSB_ENDPOINT_OUT; - int bulk_buffer_len, use_bulk_continuation; - int r; - int i; - - if (is_out && (transfer->flags & LIBUSB_TRANSFER_ADD_ZERO_PACKET) && - !(dpriv->caps & USBFS_CAP_ZERO_PACKET)) - return LIBUSB_ERROR_NOT_SUPPORTED; - - /* - * Older versions of usbfs place a 16kb limit on bulk URBs. We work - * around this by splitting large transfers into 16k blocks, and then - * submit all urbs at once. it would be simpler to submit one urb at - * a time, but there is a big performance gain doing it this way. - * - * Newer versions lift the 16k limit (USBFS_CAP_NO_PACKET_SIZE_LIM), - * using arbritary large transfers can still be a bad idea though, as - * the kernel needs to allocate physical contiguous memory for this, - * which may fail for large buffers. - * - * The kernel solves this problem by splitting the transfer into - * blocks itself when the host-controller is scatter-gather capable - * (USBFS_CAP_BULK_SCATTER_GATHER), which most controllers are. - * - * Last, there is the issue of short-transfers when splitting, for - * short split-transfers to work reliable USBFS_CAP_BULK_CONTINUATION - * is needed, but this is not always available. - */ - if (dpriv->caps & USBFS_CAP_BULK_SCATTER_GATHER) { - /* Good! Just submit everything in one go */ - bulk_buffer_len = transfer->length ? transfer->length : 1; - use_bulk_continuation = 0; - } else if (dpriv->caps & USBFS_CAP_BULK_CONTINUATION) { - /* Split the transfers and use bulk-continuation to - avoid issues with short-transfers */ - bulk_buffer_len = MAX_BULK_BUFFER_LENGTH; - use_bulk_continuation = 1; - } else if (dpriv->caps & USBFS_CAP_NO_PACKET_SIZE_LIM) { - /* Don't split, assume the kernel can alloc the buffer - (otherwise the submit will fail with -ENOMEM) */ - bulk_buffer_len = transfer->length ? transfer->length : 1; - use_bulk_continuation = 0; - } else { - /* Bad, splitting without bulk-continuation, short transfers - which end before the last urb will not work reliable! */ - /* Note we don't warn here as this is "normal" on kernels < - 2.6.32 and not a problem for most applications */ - bulk_buffer_len = MAX_BULK_BUFFER_LENGTH; - use_bulk_continuation = 0; - } - - int num_urbs = transfer->length / bulk_buffer_len; - int last_urb_partial = 0; - - if (transfer->length == 0) { - num_urbs = 1; - } else if ((transfer->length % bulk_buffer_len) > 0) { - last_urb_partial = 1; - num_urbs++; - } - usbi_dbg("need %d urbs for new transfer with length %d", num_urbs, - transfer->length); - urbs = calloc(num_urbs, sizeof(struct usbfs_urb)); - if (!urbs) - return LIBUSB_ERROR_NO_MEM; - tpriv->urbs = urbs; - tpriv->num_urbs = num_urbs; - tpriv->num_retired = 0; - tpriv->reap_action = NORMAL; - tpriv->reap_status = LIBUSB_TRANSFER_COMPLETED; - - for (i = 0; i < num_urbs; i++) { - struct usbfs_urb *urb = &urbs[i]; - urb->usercontext = itransfer; - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_BULK: - urb->type = USBFS_URB_TYPE_BULK; - urb->stream_id = 0; - break; - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - urb->type = USBFS_URB_TYPE_BULK; - urb->stream_id = itransfer->stream_id; - break; - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - urb->type = USBFS_URB_TYPE_INTERRUPT; - break; - } - urb->endpoint = transfer->endpoint; - urb->buffer = transfer->buffer + (i * bulk_buffer_len); - /* don't set the short not ok flag for the last URB */ - if (use_bulk_continuation && !is_out && (i < num_urbs - 1)) - urb->flags = USBFS_URB_SHORT_NOT_OK; - if (i == num_urbs - 1 && last_urb_partial) - urb->buffer_length = transfer->length % bulk_buffer_len; - else if (transfer->length == 0) - urb->buffer_length = 0; - else - urb->buffer_length = bulk_buffer_len; - - if (i > 0 && use_bulk_continuation) - urb->flags |= USBFS_URB_BULK_CONTINUATION; - - /* we have already checked that the flag is supported */ - if (is_out && i == num_urbs - 1 && - transfer->flags & LIBUSB_TRANSFER_ADD_ZERO_PACKET) - urb->flags |= USBFS_URB_ZERO_PACKET; - - r = ioctl(dpriv->fd, IOCTL_USBFS_SUBMITURB, urb); - if (r < 0) { - if (errno == ENODEV) { - r = LIBUSB_ERROR_NO_DEVICE; - } else { - usbi_err(TRANSFER_CTX(transfer), - "submiturb failed error %d errno=%d", r, errno); - r = LIBUSB_ERROR_IO; - } - - /* if the first URB submission fails, we can simply free up and - * return failure immediately. */ - if (i == 0) { - usbi_dbg("first URB failed, easy peasy"); - free(urbs); - tpriv->urbs = NULL; - return r; - } - - /* if it's not the first URB that failed, the situation is a bit - * tricky. we may need to discard all previous URBs. there are - * complications: - * - discarding is asynchronous - discarded urbs will be reaped - * later. the user must not have freed the transfer when the - * discarded URBs are reaped, otherwise libusb will be using - * freed memory. - * - the earlier URBs may have completed successfully and we do - * not want to throw away any data. - * - this URB failing may be no error; EREMOTEIO means that - * this transfer simply didn't need all the URBs we submitted - * so, we report that the transfer was submitted successfully and - * in case of error we discard all previous URBs. later when - * the final reap completes we can report error to the user, - * or success if an earlier URB was completed successfully. - */ - tpriv->reap_action = EREMOTEIO == errno ? COMPLETED_EARLY : SUBMIT_FAILED; - - /* The URBs we haven't submitted yet we count as already - * retired. */ - tpriv->num_retired += num_urbs - i; - - /* If we completed short then don't try to discard. */ - if (COMPLETED_EARLY == tpriv->reap_action) - return 0; - - discard_urbs(itransfer, 0, i); - - usbi_dbg("reporting successful submission but waiting for %d " - "discards before reporting error", i); - return 0; - } - } - - return 0; -} - -static int submit_iso_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - struct linux_device_handle_priv *dpriv = - _device_handle_priv(transfer->dev_handle); - struct usbfs_urb **urbs; - int num_packets = transfer->num_iso_packets; - int num_packets_remaining; - int i, j; - int num_urbs; - unsigned int packet_len; - unsigned int total_len = 0; - unsigned char *urb_buffer = transfer->buffer; - - if (num_packets < 1) - return LIBUSB_ERROR_INVALID_PARAM; - - /* usbfs places arbitrary limits on iso URBs. this limit has changed - * at least three times, but we attempt to detect this limit during - * init and check it here. if the kernel rejects the request due to - * its size, we return an error indicating such to the user. - */ - for (i = 0; i < num_packets; i++) { - packet_len = transfer->iso_packet_desc[i].length; - - if (packet_len > max_iso_packet_len) { - usbi_warn(TRANSFER_CTX(transfer), - "iso packet length of %u bytes exceeds maximum of %u bytes", - packet_len, max_iso_packet_len); - return LIBUSB_ERROR_INVALID_PARAM; - } - - total_len += packet_len; - } - - if (transfer->length < (int)total_len) - return LIBUSB_ERROR_INVALID_PARAM; - - /* usbfs limits the number of iso packets per URB */ - num_urbs = (num_packets + (MAX_ISO_PACKETS_PER_URB - 1)) / MAX_ISO_PACKETS_PER_URB; - - usbi_dbg("need %d urbs for new transfer with length %d", num_urbs, - transfer->length); - - urbs = calloc(num_urbs, sizeof(*urbs)); - if (!urbs) - return LIBUSB_ERROR_NO_MEM; - - tpriv->iso_urbs = urbs; - tpriv->num_urbs = num_urbs; - tpriv->num_retired = 0; - tpriv->reap_action = NORMAL; - tpriv->iso_packet_offset = 0; - - /* allocate + initialize each URB with the correct number of packets */ - num_packets_remaining = num_packets; - for (i = 0, j = 0; i < num_urbs; i++) { - int num_packets_in_urb = MIN(num_packets_remaining, MAX_ISO_PACKETS_PER_URB); - struct usbfs_urb *urb; - size_t alloc_size; - int k; - - alloc_size = sizeof(*urb) - + (num_packets_in_urb * sizeof(struct usbfs_iso_packet_desc)); - urb = calloc(1, alloc_size); - if (!urb) { - free_iso_urbs(tpriv); - return LIBUSB_ERROR_NO_MEM; - } - urbs[i] = urb; - - /* populate packet lengths */ - for (k = 0; k < num_packets_in_urb; j++, k++) { - packet_len = transfer->iso_packet_desc[j].length; - urb->buffer_length += packet_len; - urb->iso_frame_desc[k].length = packet_len; - } - - urb->usercontext = itransfer; - urb->type = USBFS_URB_TYPE_ISO; - /* FIXME: interface for non-ASAP data? */ - urb->flags = USBFS_URB_ISO_ASAP; - urb->endpoint = transfer->endpoint; - urb->number_of_packets = num_packets_in_urb; - urb->buffer = urb_buffer; - - urb_buffer += urb->buffer_length; - num_packets_remaining -= num_packets_in_urb; - } - - /* submit URBs */ - for (i = 0; i < num_urbs; i++) { - int r = ioctl(dpriv->fd, IOCTL_USBFS_SUBMITURB, urbs[i]); - if (r < 0) { - if (errno == ENODEV) { - r = LIBUSB_ERROR_NO_DEVICE; - } else if (errno == EINVAL) { - usbi_warn(TRANSFER_CTX(transfer), - "submiturb failed, transfer too large"); - r = LIBUSB_ERROR_INVALID_PARAM; - } else if (errno == EMSGSIZE) { - usbi_warn(TRANSFER_CTX(transfer), - "submiturb failed, iso packet length too large"); - r = LIBUSB_ERROR_INVALID_PARAM; - } else { - usbi_err(TRANSFER_CTX(transfer), - "submiturb failed error %d errno=%d", r, errno); - r = LIBUSB_ERROR_IO; - } - - /* if the first URB submission fails, we can simply free up and - * return failure immediately. */ - if (i == 0) { - usbi_dbg("first URB failed, easy peasy"); - free_iso_urbs(tpriv); - return r; - } - - /* if it's not the first URB that failed, the situation is a bit - * tricky. we must discard all previous URBs. there are - * complications: - * - discarding is asynchronous - discarded urbs will be reaped - * later. the user must not have freed the transfer when the - * discarded URBs are reaped, otherwise libusb will be using - * freed memory. - * - the earlier URBs may have completed successfully and we do - * not want to throw away any data. - * so, in this case we discard all the previous URBs BUT we report - * that the transfer was submitted successfully. then later when - * the final discard completes we can report error to the user. - */ - tpriv->reap_action = SUBMIT_FAILED; - - /* The URBs we haven't submitted yet we count as already - * retired. */ - tpriv->num_retired = num_urbs - i; - discard_urbs(itransfer, 0, i); - - usbi_dbg("reporting successful submission but waiting for %d " - "discards before reporting error", i); - return 0; - } - } - - return 0; -} - -static int submit_control_transfer(struct usbi_transfer *itransfer) -{ - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct linux_device_handle_priv *dpriv = - _device_handle_priv(transfer->dev_handle); - struct usbfs_urb *urb; - int r; - - if (transfer->length - LIBUSB_CONTROL_SETUP_SIZE > MAX_CTRL_BUFFER_LENGTH) - return LIBUSB_ERROR_INVALID_PARAM; - - urb = calloc(1, sizeof(struct usbfs_urb)); - if (!urb) - return LIBUSB_ERROR_NO_MEM; - tpriv->urbs = urb; - tpriv->num_urbs = 1; - tpriv->reap_action = NORMAL; - - urb->usercontext = itransfer; - urb->type = USBFS_URB_TYPE_CONTROL; - urb->endpoint = transfer->endpoint; - urb->buffer = transfer->buffer; - urb->buffer_length = transfer->length; - - r = ioctl(dpriv->fd, IOCTL_USBFS_SUBMITURB, urb); - if (r < 0) { - free(urb); - tpriv->urbs = NULL; - if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(TRANSFER_CTX(transfer), - "submiturb failed error %d errno=%d", r, errno); - return LIBUSB_ERROR_IO; - } - return 0; -} - -static int op_submit_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - return submit_control_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - return submit_bulk_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - return submit_bulk_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - return submit_iso_transfer(itransfer); - default: - usbi_err(TRANSFER_CTX(transfer), - "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -static int op_cancel_transfer(struct usbi_transfer *itransfer) -{ - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - int r; - - if (!tpriv->urbs) - return LIBUSB_ERROR_NOT_FOUND; - - r = discard_urbs(itransfer, 0, tpriv->num_urbs); - if (r != 0) - return r; - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - if (tpriv->reap_action == ERROR) - break; - /* else, fall through */ - default: - tpriv->reap_action = CANCELLED; - } - - return 0; -} - -static void op_clear_transfer_priv(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - if (tpriv->urbs) { - free(tpriv->urbs); - tpriv->urbs = NULL; - } - break; - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - if (tpriv->iso_urbs) { - free_iso_urbs(tpriv); - tpriv->iso_urbs = NULL; - } - break; - default: - usbi_err(TRANSFER_CTX(transfer), - "unknown endpoint type %d", transfer->type); - } -} - -static int handle_bulk_completion(struct usbi_transfer *itransfer, - struct usbfs_urb *urb) -{ - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - int urb_idx = urb - tpriv->urbs; - - usbi_mutex_lock(&itransfer->lock); - usbi_dbg("handling completion status %d of bulk urb %d/%d", urb->status, - urb_idx + 1, tpriv->num_urbs); - - tpriv->num_retired++; - - if (tpriv->reap_action != NORMAL) { - /* cancelled, submit_fail, or completed early */ - usbi_dbg("abnormal reap: urb status %d", urb->status); - - /* even though we're in the process of cancelling, it's possible that - * we may receive some data in these URBs that we don't want to lose. - * examples: - * 1. while the kernel is cancelling all the packets that make up an - * URB, a few of them might complete. so we get back a successful - * cancellation *and* some data. - * 2. we receive a short URB which marks the early completion condition, - * so we start cancelling the remaining URBs. however, we're too - * slow and another URB completes (or at least completes partially). - * (this can't happen since we always use BULK_CONTINUATION.) - * - * When this happens, our objectives are not to lose any "surplus" data, - * and also to stick it at the end of the previously-received data - * (closing any holes), so that libusb reports the total amount of - * transferred data and presents it in a contiguous chunk. - */ - if (urb->actual_length > 0) { - unsigned char *target = transfer->buffer + itransfer->transferred; - usbi_dbg("received %d bytes of surplus data", urb->actual_length); - if (urb->buffer != target) { - usbi_dbg("moving surplus data from offset %d to offset %d", - (unsigned char *) urb->buffer - transfer->buffer, - target - transfer->buffer); - memmove(target, urb->buffer, urb->actual_length); - } - itransfer->transferred += urb->actual_length; - } - - if (tpriv->num_retired == tpriv->num_urbs) { - usbi_dbg("abnormal reap: last URB handled, reporting"); - if (tpriv->reap_action != COMPLETED_EARLY && - tpriv->reap_status == LIBUSB_TRANSFER_COMPLETED) - tpriv->reap_status = LIBUSB_TRANSFER_ERROR; - goto completed; - } - goto out_unlock; - } - - itransfer->transferred += urb->actual_length; - - /* Many of these errors can occur on *any* urb of a multi-urb - * transfer. When they do, we tear down the rest of the transfer. - */ - switch (urb->status) { - case 0: - break; - case -EREMOTEIO: /* short transfer */ - break; - case -ENOENT: /* cancelled */ - case -ECONNRESET: - break; - case -ENODEV: - case -ESHUTDOWN: - usbi_dbg("device removed"); - tpriv->reap_status = LIBUSB_TRANSFER_NO_DEVICE; - goto cancel_remaining; - case -EPIPE: - usbi_dbg("detected endpoint stall"); - if (tpriv->reap_status == LIBUSB_TRANSFER_COMPLETED) - tpriv->reap_status = LIBUSB_TRANSFER_STALL; - goto cancel_remaining; - case -EOVERFLOW: - /* overflow can only ever occur in the last urb */ - usbi_dbg("overflow, actual_length=%d", urb->actual_length); - if (tpriv->reap_status == LIBUSB_TRANSFER_COMPLETED) - tpriv->reap_status = LIBUSB_TRANSFER_OVERFLOW; - goto completed; - case -ETIME: - case -EPROTO: - case -EILSEQ: - case -ECOMM: - case -ENOSR: - usbi_dbg("low level error %d", urb->status); - tpriv->reap_action = ERROR; - goto cancel_remaining; - default: - usbi_warn(ITRANSFER_CTX(itransfer), - "unrecognised urb status %d", urb->status); - tpriv->reap_action = ERROR; - goto cancel_remaining; - } - - /* if we're the last urb or we got less data than requested then we're - * done */ - if (urb_idx == tpriv->num_urbs - 1) { - usbi_dbg("last URB in transfer --> complete!"); - goto completed; - } else if (urb->actual_length < urb->buffer_length) { - usbi_dbg("short transfer %d/%d --> complete!", - urb->actual_length, urb->buffer_length); - if (tpriv->reap_action == NORMAL) - tpriv->reap_action = COMPLETED_EARLY; - } else - goto out_unlock; - -cancel_remaining: - if (ERROR == tpriv->reap_action && LIBUSB_TRANSFER_COMPLETED == tpriv->reap_status) - tpriv->reap_status = LIBUSB_TRANSFER_ERROR; - - if (tpriv->num_retired == tpriv->num_urbs) /* nothing to cancel */ - goto completed; - - /* cancel remaining urbs and wait for their completion before - * reporting results */ - discard_urbs(itransfer, urb_idx + 1, tpriv->num_urbs); - -out_unlock: - usbi_mutex_unlock(&itransfer->lock); - return 0; - -completed: - free(tpriv->urbs); - tpriv->urbs = NULL; - usbi_mutex_unlock(&itransfer->lock); - return CANCELLED == tpriv->reap_action ? - usbi_handle_transfer_cancellation(itransfer) : - usbi_handle_transfer_completion(itransfer, tpriv->reap_status); -} - -static int handle_iso_completion(struct usbi_transfer *itransfer, - struct usbfs_urb *urb) -{ - struct libusb_transfer *transfer = - USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - int num_urbs = tpriv->num_urbs; - int urb_idx = 0; - int i; - enum libusb_transfer_status status = LIBUSB_TRANSFER_COMPLETED; - - usbi_mutex_lock(&itransfer->lock); - for (i = 0; i < num_urbs; i++) { - if (urb == tpriv->iso_urbs[i]) { - urb_idx = i + 1; - break; - } - } - if (urb_idx == 0) { - usbi_err(TRANSFER_CTX(transfer), "could not locate urb!"); - usbi_mutex_unlock(&itransfer->lock); - return LIBUSB_ERROR_NOT_FOUND; - } - - usbi_dbg("handling completion status %d of iso urb %d/%d", urb->status, - urb_idx, num_urbs); - - /* copy isochronous results back in */ - - for (i = 0; i < urb->number_of_packets; i++) { - struct usbfs_iso_packet_desc *urb_desc = &urb->iso_frame_desc[i]; - struct libusb_iso_packet_descriptor *lib_desc = - &transfer->iso_packet_desc[tpriv->iso_packet_offset++]; - lib_desc->status = LIBUSB_TRANSFER_COMPLETED; - switch (urb_desc->status) { - case 0: - break; - case -ENOENT: /* cancelled */ - case -ECONNRESET: - break; - case -ENODEV: - case -ESHUTDOWN: - usbi_dbg("device removed"); - lib_desc->status = LIBUSB_TRANSFER_NO_DEVICE; - break; - case -EPIPE: - usbi_dbg("detected endpoint stall"); - lib_desc->status = LIBUSB_TRANSFER_STALL; - break; - case -EOVERFLOW: - usbi_dbg("overflow error"); - lib_desc->status = LIBUSB_TRANSFER_OVERFLOW; - break; - case -ETIME: - case -EPROTO: - case -EILSEQ: - case -ECOMM: - case -ENOSR: - case -EXDEV: - usbi_dbg("low-level USB error %d", urb_desc->status); - lib_desc->status = LIBUSB_TRANSFER_ERROR; - break; - default: - usbi_warn(TRANSFER_CTX(transfer), - "unrecognised urb status %d", urb_desc->status); - lib_desc->status = LIBUSB_TRANSFER_ERROR; - break; - } - lib_desc->actual_length = urb_desc->actual_length; - } - - tpriv->num_retired++; - - if (tpriv->reap_action != NORMAL) { /* cancelled or submit_fail */ - usbi_dbg("CANCEL: urb status %d", urb->status); - - if (tpriv->num_retired == num_urbs) { - usbi_dbg("CANCEL: last URB handled, reporting"); - free_iso_urbs(tpriv); - if (tpriv->reap_action == CANCELLED) { - usbi_mutex_unlock(&itransfer->lock); - return usbi_handle_transfer_cancellation(itransfer); - } else { - usbi_mutex_unlock(&itransfer->lock); - return usbi_handle_transfer_completion(itransfer, - LIBUSB_TRANSFER_ERROR); - } - } - goto out; - } - - switch (urb->status) { - case 0: - break; - case -ENOENT: /* cancelled */ - case -ECONNRESET: - break; - case -ESHUTDOWN: - usbi_dbg("device removed"); - status = LIBUSB_TRANSFER_NO_DEVICE; - break; - default: - usbi_warn(TRANSFER_CTX(transfer), - "unrecognised urb status %d", urb->status); - status = LIBUSB_TRANSFER_ERROR; - break; - } - - /* if we're the last urb then we're done */ - if (urb_idx == num_urbs) { - usbi_dbg("last URB in transfer --> complete!"); - free_iso_urbs(tpriv); - usbi_mutex_unlock(&itransfer->lock); - return usbi_handle_transfer_completion(itransfer, status); - } - -out: - usbi_mutex_unlock(&itransfer->lock); - return 0; -} - -static int handle_control_completion(struct usbi_transfer *itransfer, - struct usbfs_urb *urb) -{ - struct linux_transfer_priv *tpriv = usbi_transfer_get_os_priv(itransfer); - int status; - - usbi_mutex_lock(&itransfer->lock); - usbi_dbg("handling completion status %d", urb->status); - - itransfer->transferred += urb->actual_length; - - if (tpriv->reap_action == CANCELLED) { - if (urb->status != 0 && urb->status != -ENOENT) - usbi_warn(ITRANSFER_CTX(itransfer), - "cancel: unrecognised urb status %d", urb->status); - free(tpriv->urbs); - tpriv->urbs = NULL; - usbi_mutex_unlock(&itransfer->lock); - return usbi_handle_transfer_cancellation(itransfer); - } - - switch (urb->status) { - case 0: - status = LIBUSB_TRANSFER_COMPLETED; - break; - case -ENOENT: /* cancelled */ - status = LIBUSB_TRANSFER_CANCELLED; - break; - case -ENODEV: - case -ESHUTDOWN: - usbi_dbg("device removed"); - status = LIBUSB_TRANSFER_NO_DEVICE; - break; - case -EPIPE: - usbi_dbg("unsupported control request"); - status = LIBUSB_TRANSFER_STALL; - break; - case -EOVERFLOW: - usbi_dbg("control overflow error"); - status = LIBUSB_TRANSFER_OVERFLOW; - break; - case -ETIME: - case -EPROTO: - case -EILSEQ: - case -ECOMM: - case -ENOSR: - usbi_dbg("low-level bus error occurred"); - status = LIBUSB_TRANSFER_ERROR; - break; - default: - usbi_warn(ITRANSFER_CTX(itransfer), - "unrecognised urb status %d", urb->status); - status = LIBUSB_TRANSFER_ERROR; - break; - } - - free(tpriv->urbs); - tpriv->urbs = NULL; - usbi_mutex_unlock(&itransfer->lock); - return usbi_handle_transfer_completion(itransfer, status); -} - -static int reap_for_handle(struct libusb_device_handle *handle) -{ - struct linux_device_handle_priv *hpriv = _device_handle_priv(handle); - int r; - struct usbfs_urb *urb = NULL; - struct usbi_transfer *itransfer; - struct libusb_transfer *transfer; - - r = ioctl(hpriv->fd, IOCTL_USBFS_REAPURBNDELAY, &urb); - if (r == -1 && errno == EAGAIN) - return 1; - if (r < 0) { - if (errno == ENODEV) - return LIBUSB_ERROR_NO_DEVICE; - - usbi_err(HANDLE_CTX(handle), "reap failed error %d errno=%d", - r, errno); - return LIBUSB_ERROR_IO; - } - - itransfer = urb->usercontext; - transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - usbi_dbg("urb type=%d status=%d transferred=%d", urb->type, urb->status, - urb->actual_length); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - return handle_iso_completion(itransfer, urb); - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - return handle_bulk_completion(itransfer, urb); - case LIBUSB_TRANSFER_TYPE_CONTROL: - return handle_control_completion(itransfer, urb); - default: - usbi_err(HANDLE_CTX(handle), "unrecognised endpoint type %x", - transfer->type); - return LIBUSB_ERROR_OTHER; - } -} - -static int op_handle_events(struct libusb_context *ctx, - struct pollfd *fds, POLL_NFDS_TYPE nfds, int num_ready) -{ - int r; - unsigned int i = 0; - - usbi_mutex_lock(&ctx->open_devs_lock); - for (i = 0; i < nfds && num_ready > 0; i++) { - struct pollfd *pollfd = &fds[i]; - struct libusb_device_handle *handle; - struct linux_device_handle_priv *hpriv = NULL; - - if (!pollfd->revents) - continue; - - num_ready--; - list_for_each_entry(handle, &ctx->open_devs, list, struct libusb_device_handle) { - hpriv = _device_handle_priv(handle); - if (hpriv->fd == pollfd->fd) - break; - } - - if (!hpriv || hpriv->fd != pollfd->fd) { - usbi_err(ctx, "cannot find handle for fd %d", - pollfd->fd); - continue; - } - - if (pollfd->revents & POLLERR) { - /* remove the fd from the pollfd set so that it doesn't continuously - * trigger an event, and flag that it has been removed so op_close() - * doesn't try to remove it a second time */ - usbi_remove_pollfd(HANDLE_CTX(handle), hpriv->fd); - hpriv->fd_removed = 1; - - /* device will still be marked as attached if hotplug monitor thread - * hasn't processed remove event yet */ - usbi_mutex_static_lock(&linux_hotplug_lock); - if (handle->dev->attached) - linux_device_disconnected(handle->dev->bus_number, - handle->dev->device_address); - usbi_mutex_static_unlock(&linux_hotplug_lock); - - if (hpriv->caps & USBFS_CAP_REAP_AFTER_DISCONNECT) { - do { - r = reap_for_handle(handle); - } while (r == 0); - } - - usbi_handle_disconnect(handle); - continue; - } - - do { - r = reap_for_handle(handle); - } while (r == 0); - if (r == 1 || r == LIBUSB_ERROR_NO_DEVICE) - continue; - else if (r < 0) - goto out; - } - - r = 0; -out: - usbi_mutex_unlock(&ctx->open_devs_lock); - return r; -} - -static int op_clock_gettime(int clk_id, struct timespec *tp) -{ - switch (clk_id) { - case USBI_CLOCK_MONOTONIC: - return clock_gettime(monotonic_clkid, tp); - case USBI_CLOCK_REALTIME: - return clock_gettime(CLOCK_REALTIME, tp); - default: - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -#ifdef USBI_TIMERFD_AVAILABLE -static clockid_t op_get_timerfd_clockid(void) -{ - return monotonic_clkid; - -} -#endif - -const struct usbi_os_backend usbi_backend = { - .name = "Linux usbfs", - .caps = USBI_CAP_HAS_HID_ACCESS|USBI_CAP_SUPPORTS_DETACH_KERNEL_DRIVER, - .init = op_init, - .exit = op_exit, - .get_device_list = NULL, - .hotplug_poll = op_hotplug_poll, - .get_device_descriptor = op_get_device_descriptor, - .get_active_config_descriptor = op_get_active_config_descriptor, - .get_config_descriptor = op_get_config_descriptor, - .get_config_descriptor_by_value = op_get_config_descriptor_by_value, - - .wrap_sys_device = op_wrap_sys_device, - .open = op_open, - .close = op_close, - .get_configuration = op_get_configuration, - .set_configuration = op_set_configuration, - .claim_interface = op_claim_interface, - .release_interface = op_release_interface, - - .set_interface_altsetting = op_set_interface, - .clear_halt = op_clear_halt, - .reset_device = op_reset_device, - - .alloc_streams = op_alloc_streams, - .free_streams = op_free_streams, - - .dev_mem_alloc = op_dev_mem_alloc, - .dev_mem_free = op_dev_mem_free, - - .kernel_driver_active = op_kernel_driver_active, - .detach_kernel_driver = op_detach_kernel_driver, - .attach_kernel_driver = op_attach_kernel_driver, - - .destroy_device = op_destroy_device, - - .submit_transfer = op_submit_transfer, - .cancel_transfer = op_cancel_transfer, - .clear_transfer_priv = op_clear_transfer_priv, - - .handle_events = op_handle_events, - - .clock_gettime = op_clock_gettime, - -#ifdef USBI_TIMERFD_AVAILABLE - .get_timerfd_clockid = op_get_timerfd_clockid, -#endif - - .device_priv_size = sizeof(struct linux_device_priv), - .device_handle_priv_size = sizeof(struct linux_device_handle_priv), - .transfer_priv_size = sizeof(struct linux_transfer_priv), -}; diff --git a/Externals/libusb/libusb/os/linux_usbfs.h b/Externals/libusb/libusb/os/linux_usbfs.h deleted file mode 100644 index a57eb413b6cd..000000000000 --- a/Externals/libusb/libusb/os/linux_usbfs.h +++ /dev/null @@ -1,194 +0,0 @@ -/* - * usbfs header structures - * Copyright © 2007 Daniel Drake - * Copyright © 2001 Johannes Erdfelt - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef LIBUSB_USBFS_H -#define LIBUSB_USBFS_H - -#include - -#define SYSFS_DEVICE_PATH "/sys/bus/usb/devices" - -struct usbfs_ctrltransfer { - /* keep in sync with usbdevice_fs.h:usbdevfs_ctrltransfer */ - uint8_t bmRequestType; - uint8_t bRequest; - uint16_t wValue; - uint16_t wIndex; - uint16_t wLength; - - uint32_t timeout; /* in milliseconds */ - - /* pointer to data */ - void *data; -}; - -struct usbfs_bulktransfer { - /* keep in sync with usbdevice_fs.h:usbdevfs_bulktransfer */ - unsigned int ep; - unsigned int len; - unsigned int timeout; /* in milliseconds */ - - /* pointer to data */ - void *data; -}; - -struct usbfs_setinterface { - /* keep in sync with usbdevice_fs.h:usbdevfs_setinterface */ - unsigned int interface; - unsigned int altsetting; -}; - -#define USBFS_MAXDRIVERNAME 255 - -struct usbfs_getdriver { - unsigned int interface; - char driver[USBFS_MAXDRIVERNAME + 1]; -}; - -#define USBFS_URB_SHORT_NOT_OK 0x01 -#define USBFS_URB_ISO_ASAP 0x02 -#define USBFS_URB_BULK_CONTINUATION 0x04 -#define USBFS_URB_QUEUE_BULK 0x10 -#define USBFS_URB_ZERO_PACKET 0x40 - -enum usbfs_urb_type { - USBFS_URB_TYPE_ISO = 0, - USBFS_URB_TYPE_INTERRUPT = 1, - USBFS_URB_TYPE_CONTROL = 2, - USBFS_URB_TYPE_BULK = 3, -}; - -struct usbfs_iso_packet_desc { - unsigned int length; - unsigned int actual_length; - unsigned int status; -}; - -#define MAX_BULK_BUFFER_LENGTH 16384 -#define MAX_CTRL_BUFFER_LENGTH 4096 - -#define MAX_ISO_PACKETS_PER_URB 128 - -struct usbfs_urb { - unsigned char type; - unsigned char endpoint; - int status; - unsigned int flags; - void *buffer; - int buffer_length; - int actual_length; - int start_frame; - union { - int number_of_packets; /* Only used for isoc urbs */ - unsigned int stream_id; /* Only used with bulk streams */ - }; - int error_count; - unsigned int signr; - void *usercontext; - struct usbfs_iso_packet_desc iso_frame_desc[0]; -}; - -struct usbfs_connectinfo { - unsigned int devnum; - unsigned char slow; -}; - -struct usbfs_ioctl { - int ifno; /* interface 0..N ; negative numbers reserved */ - int ioctl_code; /* MUST encode size + direction of data so the - * macros in give correct values */ - void *data; /* param buffer (in, or out) */ -}; - -struct usbfs_hub_portinfo { - unsigned char numports; - unsigned char port[127]; /* port to device num mapping */ -}; - -#define USBFS_CAP_ZERO_PACKET 0x01 -#define USBFS_CAP_BULK_CONTINUATION 0x02 -#define USBFS_CAP_NO_PACKET_SIZE_LIM 0x04 -#define USBFS_CAP_BULK_SCATTER_GATHER 0x08 -#define USBFS_CAP_REAP_AFTER_DISCONNECT 0x10 - -#define USBFS_DISCONNECT_CLAIM_IF_DRIVER 0x01 -#define USBFS_DISCONNECT_CLAIM_EXCEPT_DRIVER 0x02 - -struct usbfs_disconnect_claim { - unsigned int interface; - unsigned int flags; - char driver[USBFS_MAXDRIVERNAME + 1]; -}; - -struct usbfs_streams { - unsigned int num_streams; /* Not used by USBDEVFS_FREE_STREAMS */ - unsigned int num_eps; - unsigned char eps[0]; -}; - -#define IOCTL_USBFS_CONTROL _IOWR('U', 0, struct usbfs_ctrltransfer) -#define IOCTL_USBFS_BULK _IOWR('U', 2, struct usbfs_bulktransfer) -#define IOCTL_USBFS_RESETEP _IOR('U', 3, unsigned int) -#define IOCTL_USBFS_SETINTF _IOR('U', 4, struct usbfs_setinterface) -#define IOCTL_USBFS_SETCONFIG _IOR('U', 5, unsigned int) -#define IOCTL_USBFS_GETDRIVER _IOW('U', 8, struct usbfs_getdriver) -#define IOCTL_USBFS_SUBMITURB _IOR('U', 10, struct usbfs_urb) -#define IOCTL_USBFS_DISCARDURB _IO('U', 11) -#define IOCTL_USBFS_REAPURB _IOW('U', 12, void *) -#define IOCTL_USBFS_REAPURBNDELAY _IOW('U', 13, void *) -#define IOCTL_USBFS_CLAIMINTF _IOR('U', 15, unsigned int) -#define IOCTL_USBFS_RELEASEINTF _IOR('U', 16, unsigned int) -#define IOCTL_USBFS_CONNECTINFO _IOW('U', 17, struct usbfs_connectinfo) -#define IOCTL_USBFS_IOCTL _IOWR('U', 18, struct usbfs_ioctl) -#define IOCTL_USBFS_HUB_PORTINFO _IOR('U', 19, struct usbfs_hub_portinfo) -#define IOCTL_USBFS_RESET _IO('U', 20) -#define IOCTL_USBFS_CLEAR_HALT _IOR('U', 21, unsigned int) -#define IOCTL_USBFS_DISCONNECT _IO('U', 22) -#define IOCTL_USBFS_CONNECT _IO('U', 23) -#define IOCTL_USBFS_CLAIM_PORT _IOR('U', 24, unsigned int) -#define IOCTL_USBFS_RELEASE_PORT _IOR('U', 25, unsigned int) -#define IOCTL_USBFS_GET_CAPABILITIES _IOR('U', 26, __u32) -#define IOCTL_USBFS_DISCONNECT_CLAIM _IOR('U', 27, struct usbfs_disconnect_claim) -#define IOCTL_USBFS_ALLOC_STREAMS _IOR('U', 28, struct usbfs_streams) -#define IOCTL_USBFS_FREE_STREAMS _IOR('U', 29, struct usbfs_streams) - -extern usbi_mutex_static_t linux_hotplug_lock; - -#if defined(HAVE_LIBUDEV) -int linux_udev_start_event_monitor(void); -int linux_udev_stop_event_monitor(void); -int linux_udev_scan_devices(struct libusb_context *ctx); -void linux_udev_hotplug_poll(void); -#else -int linux_netlink_start_event_monitor(void); -int linux_netlink_stop_event_monitor(void); -void linux_netlink_hotplug_poll(void); -#endif - -void linux_hotplug_enumerate(uint8_t busnum, uint8_t devaddr, const char *sys_name); -void linux_device_disconnected(uint8_t busnum, uint8_t devaddr); - -int linux_get_device_address (struct libusb_context *ctx, int detached, - uint8_t *busnum, uint8_t *devaddr, const char *dev_node, - const char *sys_name, int fd); -int linux_enumerate_device(struct libusb_context *ctx, - uint8_t busnum, uint8_t devaddr, const char *sysfs_dir); - -#endif diff --git a/Externals/libusb/libusb/os/netbsd_usb.c b/Externals/libusb/libusb/os/netbsd_usb.c deleted file mode 100644 index 79aeca970ec5..000000000000 --- a/Externals/libusb/libusb/os/netbsd_usb.c +++ /dev/null @@ -1,682 +0,0 @@ -/* - * Copyright © 2011 Martin Pieuchot - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include "libusbi.h" - -struct device_priv { - char devnode[16]; - int fd; - - unsigned char *cdesc; /* active config descriptor */ - usb_device_descriptor_t ddesc; /* usb device descriptor */ -}; - -struct handle_priv { - int endpoints[USB_MAX_ENDPOINTS]; -}; - -/* - * Backend functions - */ -static int netbsd_get_device_list(struct libusb_context *, - struct discovered_devs **); -static int netbsd_open(struct libusb_device_handle *); -static void netbsd_close(struct libusb_device_handle *); - -static int netbsd_get_device_descriptor(struct libusb_device *, unsigned char *, - int *); -static int netbsd_get_active_config_descriptor(struct libusb_device *, - unsigned char *, size_t, int *); -static int netbsd_get_config_descriptor(struct libusb_device *, uint8_t, - unsigned char *, size_t, int *); - -static int netbsd_get_configuration(struct libusb_device_handle *, int *); -static int netbsd_set_configuration(struct libusb_device_handle *, int); - -static int netbsd_claim_interface(struct libusb_device_handle *, int); -static int netbsd_release_interface(struct libusb_device_handle *, int); - -static int netbsd_set_interface_altsetting(struct libusb_device_handle *, int, - int); -static int netbsd_clear_halt(struct libusb_device_handle *, unsigned char); -static int netbsd_reset_device(struct libusb_device_handle *); -static void netbsd_destroy_device(struct libusb_device *); - -static int netbsd_submit_transfer(struct usbi_transfer *); -static int netbsd_cancel_transfer(struct usbi_transfer *); -static void netbsd_clear_transfer_priv(struct usbi_transfer *); -static int netbsd_handle_transfer_completion(struct usbi_transfer *); -static int netbsd_clock_gettime(int, struct timespec *); - -/* - * Private functions - */ -static int _errno_to_libusb(int); -static int _cache_active_config_descriptor(struct libusb_device *, int); -static int _sync_control_transfer(struct usbi_transfer *); -static int _sync_gen_transfer(struct usbi_transfer *); -static int _access_endpoint(struct libusb_transfer *); - -const struct usbi_os_backend usbi_backend = { - "Synchronous NetBSD backend", - 0, - NULL, /* init() */ - NULL, /* exit() */ - NULL, /* set_option() */ - netbsd_get_device_list, - NULL, /* hotplug_poll */ - netbsd_open, - netbsd_close, - - netbsd_get_device_descriptor, - netbsd_get_active_config_descriptor, - netbsd_get_config_descriptor, - NULL, /* get_config_descriptor_by_value() */ - - netbsd_get_configuration, - netbsd_set_configuration, - - netbsd_claim_interface, - netbsd_release_interface, - - netbsd_set_interface_altsetting, - netbsd_clear_halt, - netbsd_reset_device, - - NULL, /* alloc_streams */ - NULL, /* free_streams */ - - NULL, /* dev_mem_alloc() */ - NULL, /* dev_mem_free() */ - - NULL, /* kernel_driver_active() */ - NULL, /* detach_kernel_driver() */ - NULL, /* attach_kernel_driver() */ - - netbsd_destroy_device, - - netbsd_submit_transfer, - netbsd_cancel_transfer, - netbsd_clear_transfer_priv, - - NULL, /* handle_events() */ - netbsd_handle_transfer_completion, - - netbsd_clock_gettime, - 0, /* context_priv_size */ - sizeof(struct device_priv), - sizeof(struct handle_priv), - 0, /* transfer_priv_size */ -}; - -int -netbsd_get_device_list(struct libusb_context * ctx, - struct discovered_devs **discdevs) -{ - struct libusb_device *dev; - struct device_priv *dpriv; - struct usb_device_info di; - unsigned long session_id; - char devnode[16]; - int fd, err, i; - - usbi_dbg(""); - - /* Only ugen(4) is supported */ - for (i = 0; i < USB_MAX_DEVICES; i++) { - /* Control endpoint is always .00 */ - snprintf(devnode, sizeof(devnode), "/dev/ugen%d.00", i); - - if ((fd = open(devnode, O_RDONLY)) < 0) { - if (errno != ENOENT && errno != ENXIO) - usbi_err(ctx, "could not open %s", devnode); - continue; - } - - if (ioctl(fd, USB_GET_DEVICEINFO, &di) < 0) - continue; - - session_id = (di.udi_bus << 8 | di.udi_addr); - dev = usbi_get_device_by_session_id(ctx, session_id); - - if (dev == NULL) { - dev = usbi_alloc_device(ctx, session_id); - if (dev == NULL) - return (LIBUSB_ERROR_NO_MEM); - - dev->bus_number = di.udi_bus; - dev->device_address = di.udi_addr; - dev->speed = di.udi_speed; - - dpriv = (struct device_priv *)dev->os_priv; - strlcpy(dpriv->devnode, devnode, sizeof(devnode)); - dpriv->fd = -1; - - if (ioctl(fd, USB_GET_DEVICE_DESC, &dpriv->ddesc) < 0) { - err = errno; - goto error; - } - - dpriv->cdesc = NULL; - if (_cache_active_config_descriptor(dev, fd)) { - err = errno; - goto error; - } - - if ((err = usbi_sanitize_device(dev))) - goto error; - } - close(fd); - - if (discovered_devs_append(*discdevs, dev) == NULL) - return (LIBUSB_ERROR_NO_MEM); - - libusb_unref_device(dev); - } - - return (LIBUSB_SUCCESS); - -error: - close(fd); - libusb_unref_device(dev); - return _errno_to_libusb(err); -} - -int -netbsd_open(struct libusb_device_handle *handle) -{ - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - struct handle_priv *hpriv = (struct handle_priv *)handle->os_priv; - int i; - - dpriv->fd = open(dpriv->devnode, O_RDWR); - if (dpriv->fd < 0) { - dpriv->fd = open(dpriv->devnode, O_RDONLY); - if (dpriv->fd < 0) - return _errno_to_libusb(errno); - } - - for (i = 0; i < USB_MAX_ENDPOINTS; i++) - hpriv->endpoints[i] = -1; - - usbi_dbg("open %s: fd %d", dpriv->devnode, dpriv->fd); - - return (LIBUSB_SUCCESS); -} - -void -netbsd_close(struct libusb_device_handle *handle) -{ - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - - usbi_dbg("close: fd %d", dpriv->fd); - - close(dpriv->fd); - dpriv->fd = -1; -} - -int -netbsd_get_device_descriptor(struct libusb_device *dev, unsigned char *buf, - int *host_endian) -{ - struct device_priv *dpriv = (struct device_priv *)dev->os_priv; - - usbi_dbg(""); - - memcpy(buf, &dpriv->ddesc, DEVICE_DESC_LENGTH); - - *host_endian = 0; - - return (LIBUSB_SUCCESS); -} - -int -netbsd_get_active_config_descriptor(struct libusb_device *dev, - unsigned char *buf, size_t len, int *host_endian) -{ - struct device_priv *dpriv = (struct device_priv *)dev->os_priv; - usb_config_descriptor_t *ucd; - - ucd = (usb_config_descriptor_t *) dpriv->cdesc; - len = MIN(len, UGETW(ucd->wTotalLength)); - - usbi_dbg("len %d", len); - - memcpy(buf, dpriv->cdesc, len); - - *host_endian = 0; - - return len; -} - -int -netbsd_get_config_descriptor(struct libusb_device *dev, uint8_t idx, - unsigned char *buf, size_t len, int *host_endian) -{ - struct device_priv *dpriv = (struct device_priv *)dev->os_priv; - struct usb_full_desc ufd; - int fd, err; - - usbi_dbg("index %d, len %d", idx, len); - - /* A config descriptor may be requested before opening the device */ - if (dpriv->fd >= 0) { - fd = dpriv->fd; - } else { - fd = open(dpriv->devnode, O_RDONLY); - if (fd < 0) - return _errno_to_libusb(errno); - } - - ufd.ufd_config_index = idx; - ufd.ufd_size = len; - ufd.ufd_data = buf; - - if ((ioctl(fd, USB_GET_FULL_DESC, &ufd)) < 0) { - err = errno; - if (dpriv->fd < 0) - close(fd); - return _errno_to_libusb(err); - } - - if (dpriv->fd < 0) - close(fd); - - *host_endian = 0; - - return len; -} - -int -netbsd_get_configuration(struct libusb_device_handle *handle, int *config) -{ - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - - usbi_dbg(""); - - if (ioctl(dpriv->fd, USB_GET_CONFIG, config) < 0) - return _errno_to_libusb(errno); - - usbi_dbg("configuration %d", *config); - - return (LIBUSB_SUCCESS); -} - -int -netbsd_set_configuration(struct libusb_device_handle *handle, int config) -{ - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - - usbi_dbg("configuration %d", config); - - if (ioctl(dpriv->fd, USB_SET_CONFIG, &config) < 0) - return _errno_to_libusb(errno); - - return _cache_active_config_descriptor(handle->dev, dpriv->fd); -} - -int -netbsd_claim_interface(struct libusb_device_handle *handle, int iface) -{ - struct handle_priv *hpriv = (struct handle_priv *)handle->os_priv; - int i; - - for (i = 0; i < USB_MAX_ENDPOINTS; i++) - hpriv->endpoints[i] = -1; - - return (LIBUSB_SUCCESS); -} - -int -netbsd_release_interface(struct libusb_device_handle *handle, int iface) -{ - struct handle_priv *hpriv = (struct handle_priv *)handle->os_priv; - int i; - - for (i = 0; i < USB_MAX_ENDPOINTS; i++) - if (hpriv->endpoints[i] >= 0) - close(hpriv->endpoints[i]); - - return (LIBUSB_SUCCESS); -} - -int -netbsd_set_interface_altsetting(struct libusb_device_handle *handle, int iface, - int altsetting) -{ - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - struct usb_alt_interface intf; - - usbi_dbg("iface %d, setting %d", iface, altsetting); - - memset(&intf, 0, sizeof(intf)); - - intf.uai_interface_index = iface; - intf.uai_alt_no = altsetting; - - if (ioctl(dpriv->fd, USB_SET_ALTINTERFACE, &intf) < 0) - return _errno_to_libusb(errno); - - return (LIBUSB_SUCCESS); -} - -int -netbsd_clear_halt(struct libusb_device_handle *handle, unsigned char endpoint) -{ - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - struct usb_ctl_request req; - - usbi_dbg(""); - - req.ucr_request.bmRequestType = UT_WRITE_ENDPOINT; - req.ucr_request.bRequest = UR_CLEAR_FEATURE; - USETW(req.ucr_request.wValue, UF_ENDPOINT_HALT); - USETW(req.ucr_request.wIndex, endpoint); - USETW(req.ucr_request.wLength, 0); - - if (ioctl(dpriv->fd, USB_DO_REQUEST, &req) < 0) - return _errno_to_libusb(errno); - - return (LIBUSB_SUCCESS); -} - -int -netbsd_reset_device(struct libusb_device_handle *handle) -{ - usbi_dbg(""); - - return (LIBUSB_ERROR_NOT_SUPPORTED); -} - -void -netbsd_destroy_device(struct libusb_device *dev) -{ - struct device_priv *dpriv = (struct device_priv *)dev->os_priv; - - usbi_dbg(""); - - free(dpriv->cdesc); -} - -int -netbsd_submit_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer; - struct handle_priv *hpriv; - int err = 0; - - usbi_dbg(""); - - transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - hpriv = (struct handle_priv *)transfer->dev_handle->os_priv; - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - err = _sync_control_transfer(itransfer); - break; - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - if (IS_XFEROUT(transfer)) { - /* Isochronous write is not supported */ - err = LIBUSB_ERROR_NOT_SUPPORTED; - break; - } - err = _sync_gen_transfer(itransfer); - break; - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - if (IS_XFEROUT(transfer) && - transfer->flags & LIBUSB_TRANSFER_ADD_ZERO_PACKET) { - err = LIBUSB_ERROR_NOT_SUPPORTED; - break; - } - err = _sync_gen_transfer(itransfer); - break; - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - err = LIBUSB_ERROR_NOT_SUPPORTED; - break; - } - - if (err) - return (err); - - usbi_signal_transfer_completion(itransfer); - - return (LIBUSB_SUCCESS); -} - -int -netbsd_cancel_transfer(struct usbi_transfer *itransfer) -{ - usbi_dbg(""); - - return (LIBUSB_ERROR_NOT_SUPPORTED); -} - -void -netbsd_clear_transfer_priv(struct usbi_transfer *itransfer) -{ - usbi_dbg(""); - - /* Nothing to do */ -} - -int -netbsd_handle_transfer_completion(struct usbi_transfer *itransfer) -{ - return usbi_handle_transfer_completion(itransfer, LIBUSB_TRANSFER_COMPLETED); -} - -int -netbsd_clock_gettime(int clkid, struct timespec *tp) -{ - usbi_dbg("clock %d", clkid); - - if (clkid == USBI_CLOCK_REALTIME) - return clock_gettime(CLOCK_REALTIME, tp); - - if (clkid == USBI_CLOCK_MONOTONIC) - return clock_gettime(CLOCK_MONOTONIC, tp); - - return (LIBUSB_ERROR_INVALID_PARAM); -} - -int -_errno_to_libusb(int err) -{ - switch (err) { - case EIO: - return (LIBUSB_ERROR_IO); - case EACCES: - return (LIBUSB_ERROR_ACCESS); - case ENOENT: - return (LIBUSB_ERROR_NO_DEVICE); - case ENOMEM: - return (LIBUSB_ERROR_NO_MEM); - } - - usbi_dbg("error: %s", strerror(err)); - - return (LIBUSB_ERROR_OTHER); -} - -int -_cache_active_config_descriptor(struct libusb_device *dev, int fd) -{ - struct device_priv *dpriv = (struct device_priv *)dev->os_priv; - struct usb_config_desc ucd; - struct usb_full_desc ufd; - unsigned char* buf; - int len; - - usbi_dbg("fd %d", fd); - - ucd.ucd_config_index = USB_CURRENT_CONFIG_INDEX; - - if ((ioctl(fd, USB_GET_CONFIG_DESC, &ucd)) < 0) - return _errno_to_libusb(errno); - - usbi_dbg("active bLength %d", ucd.ucd_desc.bLength); - - len = UGETW(ucd.ucd_desc.wTotalLength); - buf = malloc(len); - if (buf == NULL) - return (LIBUSB_ERROR_NO_MEM); - - ufd.ufd_config_index = ucd.ucd_config_index; - ufd.ufd_size = len; - ufd.ufd_data = buf; - - usbi_dbg("index %d, len %d", ufd.ufd_config_index, len); - - if ((ioctl(fd, USB_GET_FULL_DESC, &ufd)) < 0) { - free(buf); - return _errno_to_libusb(errno); - } - - if (dpriv->cdesc) - free(dpriv->cdesc); - dpriv->cdesc = buf; - - return (0); -} - -int -_sync_control_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer; - struct libusb_control_setup *setup; - struct device_priv *dpriv; - struct usb_ctl_request req; - - transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - dpriv = (struct device_priv *)transfer->dev_handle->dev->os_priv; - setup = (struct libusb_control_setup *)transfer->buffer; - - usbi_dbg("type %d request %d value %d index %d length %d timeout %d", - setup->bmRequestType, setup->bRequest, - libusb_le16_to_cpu(setup->wValue), - libusb_le16_to_cpu(setup->wIndex), - libusb_le16_to_cpu(setup->wLength), transfer->timeout); - - req.ucr_request.bmRequestType = setup->bmRequestType; - req.ucr_request.bRequest = setup->bRequest; - /* Don't use USETW, libusb already deals with the endianness */ - (*(uint16_t *)req.ucr_request.wValue) = setup->wValue; - (*(uint16_t *)req.ucr_request.wIndex) = setup->wIndex; - (*(uint16_t *)req.ucr_request.wLength) = setup->wLength; - req.ucr_data = transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE; - - if ((transfer->flags & LIBUSB_TRANSFER_SHORT_NOT_OK) == 0) - req.ucr_flags = USBD_SHORT_XFER_OK; - - if ((ioctl(dpriv->fd, USB_SET_TIMEOUT, &transfer->timeout)) < 0) - return _errno_to_libusb(errno); - - if ((ioctl(dpriv->fd, USB_DO_REQUEST, &req)) < 0) - return _errno_to_libusb(errno); - - itransfer->transferred = req.ucr_actlen; - - usbi_dbg("transferred %d", itransfer->transferred); - - return (0); -} - -int -_access_endpoint(struct libusb_transfer *transfer) -{ - struct handle_priv *hpriv; - struct device_priv *dpriv; - char *s, devnode[16]; - int fd, endpt; - mode_t mode; - - hpriv = (struct handle_priv *)transfer->dev_handle->os_priv; - dpriv = (struct device_priv *)transfer->dev_handle->dev->os_priv; - - endpt = UE_GET_ADDR(transfer->endpoint); - mode = IS_XFERIN(transfer) ? O_RDONLY : O_WRONLY; - - usbi_dbg("endpoint %d mode %d", endpt, mode); - - if (hpriv->endpoints[endpt] < 0) { - /* Pick the right node given the control one */ - strlcpy(devnode, dpriv->devnode, sizeof(devnode)); - s = strchr(devnode, '.'); - snprintf(s, 4, ".%02d", endpt); - - /* We may need to read/write to the same endpoint later. */ - if (((fd = open(devnode, O_RDWR)) < 0) && (errno == ENXIO)) - if ((fd = open(devnode, mode)) < 0) - return (-1); - - hpriv->endpoints[endpt] = fd; - } - - return (hpriv->endpoints[endpt]); -} - -int -_sync_gen_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer; - int fd, nr = 1; - - transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - /* - * Bulk, Interrupt or Isochronous transfer depends on the - * endpoint and thus the node to open. - */ - if ((fd = _access_endpoint(transfer)) < 0) - return _errno_to_libusb(errno); - - if ((ioctl(fd, USB_SET_TIMEOUT, &transfer->timeout)) < 0) - return _errno_to_libusb(errno); - - if (IS_XFERIN(transfer)) { - if ((transfer->flags & LIBUSB_TRANSFER_SHORT_NOT_OK) == 0) - if ((ioctl(fd, USB_SET_SHORT_XFER, &nr)) < 0) - return _errno_to_libusb(errno); - - nr = read(fd, transfer->buffer, transfer->length); - } else { - nr = write(fd, transfer->buffer, transfer->length); - } - - if (nr < 0) - return _errno_to_libusb(errno); - - itransfer->transferred = nr; - - return (0); -} diff --git a/Externals/libusb/libusb/os/openbsd_usb.c b/Externals/libusb/libusb/os/openbsd_usb.c deleted file mode 100644 index f174e496c44d..000000000000 --- a/Externals/libusb/libusb/os/openbsd_usb.c +++ /dev/null @@ -1,771 +0,0 @@ -/* - * Copyright © 2011-2013 Martin Pieuchot - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include "libusbi.h" - -struct device_priv { - char *devname; /* name of the ugen(4) node */ - int fd; /* device file descriptor */ - - unsigned char *cdesc; /* active config descriptor */ - usb_device_descriptor_t ddesc; /* usb device descriptor */ -}; - -struct handle_priv { - int endpoints[USB_MAX_ENDPOINTS]; -}; - -/* - * Backend functions - */ -static int obsd_get_device_list(struct libusb_context *, - struct discovered_devs **); -static int obsd_open(struct libusb_device_handle *); -static void obsd_close(struct libusb_device_handle *); - -static int obsd_get_device_descriptor(struct libusb_device *, unsigned char *, - int *); -static int obsd_get_active_config_descriptor(struct libusb_device *, - unsigned char *, size_t, int *); -static int obsd_get_config_descriptor(struct libusb_device *, uint8_t, - unsigned char *, size_t, int *); - -static int obsd_get_configuration(struct libusb_device_handle *, int *); -static int obsd_set_configuration(struct libusb_device_handle *, int); - -static int obsd_claim_interface(struct libusb_device_handle *, int); -static int obsd_release_interface(struct libusb_device_handle *, int); - -static int obsd_set_interface_altsetting(struct libusb_device_handle *, int, - int); -static int obsd_clear_halt(struct libusb_device_handle *, unsigned char); -static int obsd_reset_device(struct libusb_device_handle *); -static void obsd_destroy_device(struct libusb_device *); - -static int obsd_submit_transfer(struct usbi_transfer *); -static int obsd_cancel_transfer(struct usbi_transfer *); -static void obsd_clear_transfer_priv(struct usbi_transfer *); -static int obsd_handle_transfer_completion(struct usbi_transfer *); -static int obsd_clock_gettime(int, struct timespec *); - -/* - * Private functions - */ -static int _errno_to_libusb(int); -static int _cache_active_config_descriptor(struct libusb_device *); -static int _sync_control_transfer(struct usbi_transfer *); -static int _sync_gen_transfer(struct usbi_transfer *); -static int _access_endpoint(struct libusb_transfer *); - -static int _bus_open(int); - - -const struct usbi_os_backend usbi_backend = { - "Synchronous OpenBSD backend", - 0, - NULL, /* init() */ - NULL, /* exit() */ - NULL, /* set_option() */ - obsd_get_device_list, - NULL, /* hotplug_poll */ - obsd_open, - obsd_close, - - obsd_get_device_descriptor, - obsd_get_active_config_descriptor, - obsd_get_config_descriptor, - NULL, /* get_config_descriptor_by_value() */ - - obsd_get_configuration, - obsd_set_configuration, - - obsd_claim_interface, - obsd_release_interface, - - obsd_set_interface_altsetting, - obsd_clear_halt, - obsd_reset_device, - - NULL, /* alloc_streams */ - NULL, /* free_streams */ - - NULL, /* dev_mem_alloc() */ - NULL, /* dev_mem_free() */ - - NULL, /* kernel_driver_active() */ - NULL, /* detach_kernel_driver() */ - NULL, /* attach_kernel_driver() */ - - obsd_destroy_device, - - obsd_submit_transfer, - obsd_cancel_transfer, - obsd_clear_transfer_priv, - - NULL, /* handle_events() */ - obsd_handle_transfer_completion, - - obsd_clock_gettime, - 0, /* context_priv_size */ - sizeof(struct device_priv), - sizeof(struct handle_priv), - 0, /* transfer_priv_size */ -}; - -#define DEVPATH "/dev/" -#define USBDEV DEVPATH "usb" - -int -obsd_get_device_list(struct libusb_context * ctx, - struct discovered_devs **discdevs) -{ - struct discovered_devs *ddd; - struct libusb_device *dev; - struct device_priv *dpriv; - struct usb_device_info di; - struct usb_device_ddesc dd; - unsigned long session_id; - char devices[USB_MAX_DEVICES]; - char busnode[16]; - char *udevname; - int fd, addr, i, j; - - usbi_dbg(""); - - for (i = 0; i < 8; i++) { - snprintf(busnode, sizeof(busnode), USBDEV "%d", i); - - if ((fd = open(busnode, O_RDWR)) < 0) { - if (errno != ENOENT && errno != ENXIO) - usbi_err(ctx, "could not open %s", busnode); - continue; - } - - bzero(devices, sizeof(devices)); - for (addr = 1; addr < USB_MAX_DEVICES; addr++) { - if (devices[addr]) - continue; - - di.udi_addr = addr; - if (ioctl(fd, USB_DEVICEINFO, &di) < 0) - continue; - - /* - * XXX If ugen(4) is attached to the USB device - * it will be used. - */ - udevname = NULL; - for (j = 0; j < USB_MAX_DEVNAMES; j++) - if (!strncmp("ugen", di.udi_devnames[j], 4)) { - udevname = strdup(di.udi_devnames[j]); - break; - } - - session_id = (di.udi_bus << 8 | di.udi_addr); - dev = usbi_get_device_by_session_id(ctx, session_id); - - if (dev == NULL) { - dev = usbi_alloc_device(ctx, session_id); - if (dev == NULL) { - close(fd); - return (LIBUSB_ERROR_NO_MEM); - } - - dev->bus_number = di.udi_bus; - dev->device_address = di.udi_addr; - dev->speed = di.udi_speed; - - dpriv = (struct device_priv *)dev->os_priv; - dpriv->fd = -1; - dpriv->cdesc = NULL; - dpriv->devname = udevname; - - dd.udd_bus = di.udi_bus; - dd.udd_addr = di.udi_addr; - if (ioctl(fd, USB_DEVICE_GET_DDESC, &dd) < 0) { - libusb_unref_device(dev); - continue; - } - dpriv->ddesc = dd.udd_desc; - - if (_cache_active_config_descriptor(dev)) { - libusb_unref_device(dev); - continue; - } - - if (usbi_sanitize_device(dev)) { - libusb_unref_device(dev); - continue; - } - } - - ddd = discovered_devs_append(*discdevs, dev); - if (ddd == NULL) { - close(fd); - return (LIBUSB_ERROR_NO_MEM); - } - libusb_unref_device(dev); - - *discdevs = ddd; - devices[addr] = 1; - } - - close(fd); - } - - return (LIBUSB_SUCCESS); -} - -int -obsd_open(struct libusb_device_handle *handle) -{ - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - char devnode[16]; - - if (dpriv->devname) { - /* - * Only open ugen(4) attached devices read-write, all - * read-only operations are done through the bus node. - */ - snprintf(devnode, sizeof(devnode), DEVPATH "%s.00", - dpriv->devname); - dpriv->fd = open(devnode, O_RDWR); - if (dpriv->fd < 0) - return _errno_to_libusb(errno); - - usbi_dbg("open %s: fd %d", devnode, dpriv->fd); - } - - return (LIBUSB_SUCCESS); -} - -void -obsd_close(struct libusb_device_handle *handle) -{ - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - - if (dpriv->devname) { - usbi_dbg("close: fd %d", dpriv->fd); - - close(dpriv->fd); - dpriv->fd = -1; - } -} - -int -obsd_get_device_descriptor(struct libusb_device *dev, unsigned char *buf, - int *host_endian) -{ - struct device_priv *dpriv = (struct device_priv *)dev->os_priv; - - usbi_dbg(""); - - memcpy(buf, &dpriv->ddesc, DEVICE_DESC_LENGTH); - - *host_endian = 0; - - return (LIBUSB_SUCCESS); -} - -int -obsd_get_active_config_descriptor(struct libusb_device *dev, - unsigned char *buf, size_t len, int *host_endian) -{ - struct device_priv *dpriv = (struct device_priv *)dev->os_priv; - usb_config_descriptor_t *ucd = (usb_config_descriptor_t *)dpriv->cdesc; - - len = MIN(len, UGETW(ucd->wTotalLength)); - - usbi_dbg("len %d", len); - - memcpy(buf, dpriv->cdesc, len); - - *host_endian = 0; - - return (len); -} - -int -obsd_get_config_descriptor(struct libusb_device *dev, uint8_t idx, - unsigned char *buf, size_t len, int *host_endian) -{ - struct usb_device_fdesc udf; - int fd, err; - - if ((fd = _bus_open(dev->bus_number)) < 0) - return _errno_to_libusb(errno); - - udf.udf_bus = dev->bus_number; - udf.udf_addr = dev->device_address; - udf.udf_config_index = idx; - udf.udf_size = len; - udf.udf_data = buf; - - usbi_dbg("index %d, len %d", udf.udf_config_index, len); - - if (ioctl(fd, USB_DEVICE_GET_FDESC, &udf) < 0) { - err = errno; - close(fd); - return _errno_to_libusb(err); - } - close(fd); - - *host_endian = 0; - - return (len); -} - -int -obsd_get_configuration(struct libusb_device_handle *handle, int *config) -{ - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - usb_config_descriptor_t *ucd = (usb_config_descriptor_t *)dpriv->cdesc; - - *config = ucd->bConfigurationValue; - - usbi_dbg("bConfigurationValue %d", *config); - - return (LIBUSB_SUCCESS); -} - -int -obsd_set_configuration(struct libusb_device_handle *handle, int config) -{ - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - - if (dpriv->devname == NULL) - return (LIBUSB_ERROR_NOT_SUPPORTED); - - usbi_dbg("bConfigurationValue %d", config); - - if (ioctl(dpriv->fd, USB_SET_CONFIG, &config) < 0) - return _errno_to_libusb(errno); - - return _cache_active_config_descriptor(handle->dev); -} - -int -obsd_claim_interface(struct libusb_device_handle *handle, int iface) -{ - struct handle_priv *hpriv = (struct handle_priv *)handle->os_priv; - int i; - - for (i = 0; i < USB_MAX_ENDPOINTS; i++) - hpriv->endpoints[i] = -1; - - return (LIBUSB_SUCCESS); -} - -int -obsd_release_interface(struct libusb_device_handle *handle, int iface) -{ - struct handle_priv *hpriv = (struct handle_priv *)handle->os_priv; - int i; - - for (i = 0; i < USB_MAX_ENDPOINTS; i++) - if (hpriv->endpoints[i] >= 0) - close(hpriv->endpoints[i]); - - return (LIBUSB_SUCCESS); -} - -int -obsd_set_interface_altsetting(struct libusb_device_handle *handle, int iface, - int altsetting) -{ - struct device_priv *dpriv = (struct device_priv *)handle->dev->os_priv; - struct usb_alt_interface intf; - - if (dpriv->devname == NULL) - return (LIBUSB_ERROR_NOT_SUPPORTED); - - usbi_dbg("iface %d, setting %d", iface, altsetting); - - memset(&intf, 0, sizeof(intf)); - - intf.uai_interface_index = iface; - intf.uai_alt_no = altsetting; - - if (ioctl(dpriv->fd, USB_SET_ALTINTERFACE, &intf) < 0) - return _errno_to_libusb(errno); - - return (LIBUSB_SUCCESS); -} - -int -obsd_clear_halt(struct libusb_device_handle *handle, unsigned char endpoint) -{ - struct usb_ctl_request req; - int fd, err; - - if ((fd = _bus_open(handle->dev->bus_number)) < 0) - return _errno_to_libusb(errno); - - usbi_dbg(""); - - req.ucr_addr = handle->dev->device_address; - req.ucr_request.bmRequestType = UT_WRITE_ENDPOINT; - req.ucr_request.bRequest = UR_CLEAR_FEATURE; - USETW(req.ucr_request.wValue, UF_ENDPOINT_HALT); - USETW(req.ucr_request.wIndex, endpoint); - USETW(req.ucr_request.wLength, 0); - - if (ioctl(fd, USB_REQUEST, &req) < 0) { - err = errno; - close(fd); - return _errno_to_libusb(err); - } - close(fd); - - return (LIBUSB_SUCCESS); -} - -int -obsd_reset_device(struct libusb_device_handle *handle) -{ - usbi_dbg(""); - - return (LIBUSB_ERROR_NOT_SUPPORTED); -} - -void -obsd_destroy_device(struct libusb_device *dev) -{ - struct device_priv *dpriv = (struct device_priv *)dev->os_priv; - - usbi_dbg(""); - - free(dpriv->cdesc); - free(dpriv->devname); -} - -int -obsd_submit_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer; - struct handle_priv *hpriv; - int err = 0; - - usbi_dbg(""); - - transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - hpriv = (struct handle_priv *)transfer->dev_handle->os_priv; - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - err = _sync_control_transfer(itransfer); - break; - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - if (IS_XFEROUT(transfer)) { - /* Isochronous write is not supported */ - err = LIBUSB_ERROR_NOT_SUPPORTED; - break; - } - err = _sync_gen_transfer(itransfer); - break; - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - if (IS_XFEROUT(transfer) && - transfer->flags & LIBUSB_TRANSFER_ADD_ZERO_PACKET) { - err = LIBUSB_ERROR_NOT_SUPPORTED; - break; - } - err = _sync_gen_transfer(itransfer); - break; - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - err = LIBUSB_ERROR_NOT_SUPPORTED; - break; - } - - if (err) - return (err); - - usbi_signal_transfer_completion(itransfer); - - return (LIBUSB_SUCCESS); -} - -int -obsd_cancel_transfer(struct usbi_transfer *itransfer) -{ - usbi_dbg(""); - - return (LIBUSB_ERROR_NOT_SUPPORTED); -} - -void -obsd_clear_transfer_priv(struct usbi_transfer *itransfer) -{ - usbi_dbg(""); - - /* Nothing to do */ -} - -int -obsd_handle_transfer_completion(struct usbi_transfer *itransfer) -{ - return usbi_handle_transfer_completion(itransfer, LIBUSB_TRANSFER_COMPLETED); -} - -int -obsd_clock_gettime(int clkid, struct timespec *tp) -{ - usbi_dbg("clock %d", clkid); - - if (clkid == USBI_CLOCK_REALTIME) - return clock_gettime(CLOCK_REALTIME, tp); - - if (clkid == USBI_CLOCK_MONOTONIC) - return clock_gettime(CLOCK_MONOTONIC, tp); - - return (LIBUSB_ERROR_INVALID_PARAM); -} - -int -_errno_to_libusb(int err) -{ - usbi_dbg("error: %s (%d)", strerror(err), err); - - switch (err) { - case EIO: - return (LIBUSB_ERROR_IO); - case EACCES: - return (LIBUSB_ERROR_ACCESS); - case ENOENT: - return (LIBUSB_ERROR_NO_DEVICE); - case ENOMEM: - return (LIBUSB_ERROR_NO_MEM); - case ETIMEDOUT: - return (LIBUSB_ERROR_TIMEOUT); - } - - return (LIBUSB_ERROR_OTHER); -} - -int -_cache_active_config_descriptor(struct libusb_device *dev) -{ - struct device_priv *dpriv = (struct device_priv *)dev->os_priv; - struct usb_device_cdesc udc; - struct usb_device_fdesc udf; - unsigned char* buf; - int fd, len, err; - - if ((fd = _bus_open(dev->bus_number)) < 0) - return _errno_to_libusb(errno); - - usbi_dbg("fd %d, addr %d", fd, dev->device_address); - - udc.udc_bus = dev->bus_number; - udc.udc_addr = dev->device_address; - udc.udc_config_index = USB_CURRENT_CONFIG_INDEX; - if (ioctl(fd, USB_DEVICE_GET_CDESC, &udc) < 0) { - err = errno; - close(fd); - return _errno_to_libusb(errno); - } - - usbi_dbg("active bLength %d", udc.udc_desc.bLength); - - len = UGETW(udc.udc_desc.wTotalLength); - buf = malloc(len); - if (buf == NULL) - return (LIBUSB_ERROR_NO_MEM); - - udf.udf_bus = dev->bus_number; - udf.udf_addr = dev->device_address; - udf.udf_config_index = udc.udc_config_index; - udf.udf_size = len; - udf.udf_data = buf; - - usbi_dbg("index %d, len %d", udf.udf_config_index, len); - - if (ioctl(fd, USB_DEVICE_GET_FDESC, &udf) < 0) { - err = errno; - close(fd); - free(buf); - return _errno_to_libusb(err); - } - close(fd); - - if (dpriv->cdesc) - free(dpriv->cdesc); - dpriv->cdesc = buf; - - return (LIBUSB_SUCCESS); -} - -int -_sync_control_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer; - struct libusb_control_setup *setup; - struct device_priv *dpriv; - struct usb_ctl_request req; - - transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - dpriv = (struct device_priv *)transfer->dev_handle->dev->os_priv; - setup = (struct libusb_control_setup *)transfer->buffer; - - usbi_dbg("type %x request %x value %x index %d length %d timeout %d", - setup->bmRequestType, setup->bRequest, - libusb_le16_to_cpu(setup->wValue), - libusb_le16_to_cpu(setup->wIndex), - libusb_le16_to_cpu(setup->wLength), transfer->timeout); - - req.ucr_addr = transfer->dev_handle->dev->device_address; - req.ucr_request.bmRequestType = setup->bmRequestType; - req.ucr_request.bRequest = setup->bRequest; - /* Don't use USETW, libusb already deals with the endianness */ - (*(uint16_t *)req.ucr_request.wValue) = setup->wValue; - (*(uint16_t *)req.ucr_request.wIndex) = setup->wIndex; - (*(uint16_t *)req.ucr_request.wLength) = setup->wLength; - req.ucr_data = transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE; - - if ((transfer->flags & LIBUSB_TRANSFER_SHORT_NOT_OK) == 0) - req.ucr_flags = USBD_SHORT_XFER_OK; - - if (dpriv->devname == NULL) { - /* - * XXX If the device is not attached to ugen(4) it is - * XXX still possible to submit a control transfer but - * XXX with the default timeout only. - */ - int fd, err; - - if ((fd = _bus_open(transfer->dev_handle->dev->bus_number)) < 0) - return _errno_to_libusb(errno); - - if ((ioctl(fd, USB_REQUEST, &req)) < 0) { - err = errno; - close(fd); - return _errno_to_libusb(err); - } - close(fd); - } else { - if ((ioctl(dpriv->fd, USB_SET_TIMEOUT, &transfer->timeout)) < 0) - return _errno_to_libusb(errno); - - if ((ioctl(dpriv->fd, USB_DO_REQUEST, &req)) < 0) - return _errno_to_libusb(errno); - } - - itransfer->transferred = req.ucr_actlen; - - usbi_dbg("transferred %d", itransfer->transferred); - - return (0); -} - -int -_access_endpoint(struct libusb_transfer *transfer) -{ - struct handle_priv *hpriv; - struct device_priv *dpriv; - char devnode[16]; - int fd, endpt; - mode_t mode; - - hpriv = (struct handle_priv *)transfer->dev_handle->os_priv; - dpriv = (struct device_priv *)transfer->dev_handle->dev->os_priv; - - endpt = UE_GET_ADDR(transfer->endpoint); - mode = IS_XFERIN(transfer) ? O_RDONLY : O_WRONLY; - - usbi_dbg("endpoint %d mode %d", endpt, mode); - - if (hpriv->endpoints[endpt] < 0) { - /* Pick the right endpoint node */ - snprintf(devnode, sizeof(devnode), DEVPATH "%s.%02d", - dpriv->devname, endpt); - - /* We may need to read/write to the same endpoint later. */ - if (((fd = open(devnode, O_RDWR)) < 0) && (errno == ENXIO)) - if ((fd = open(devnode, mode)) < 0) - return (-1); - - hpriv->endpoints[endpt] = fd; - } - - return (hpriv->endpoints[endpt]); -} - -int -_sync_gen_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer; - struct device_priv *dpriv; - int fd, nr = 1; - - transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - dpriv = (struct device_priv *)transfer->dev_handle->dev->os_priv; - - if (dpriv->devname == NULL) - return (LIBUSB_ERROR_NOT_SUPPORTED); - - /* - * Bulk, Interrupt or Isochronous transfer depends on the - * endpoint and thus the node to open. - */ - if ((fd = _access_endpoint(transfer)) < 0) - return _errno_to_libusb(errno); - - if ((ioctl(fd, USB_SET_TIMEOUT, &transfer->timeout)) < 0) - return _errno_to_libusb(errno); - - if (IS_XFERIN(transfer)) { - if ((transfer->flags & LIBUSB_TRANSFER_SHORT_NOT_OK) == 0) - if ((ioctl(fd, USB_SET_SHORT_XFER, &nr)) < 0) - return _errno_to_libusb(errno); - - nr = read(fd, transfer->buffer, transfer->length); - } else { - nr = write(fd, transfer->buffer, transfer->length); - } - - if (nr < 0) - return _errno_to_libusb(errno); - - itransfer->transferred = nr; - - return (0); -} - -int -_bus_open(int number) -{ - char busnode[16]; - - snprintf(busnode, sizeof(busnode), USBDEV "%d", number); - - return open(busnode, O_RDWR); -} diff --git a/Externals/libusb/libusb/os/poll_posix.c b/Externals/libusb/libusb/os/poll_posix.c deleted file mode 100644 index 337714aa6bbe..000000000000 --- a/Externals/libusb/libusb/os/poll_posix.c +++ /dev/null @@ -1,84 +0,0 @@ -/* - * poll_posix: poll compatibility wrapper for POSIX systems - * Copyright © 2013 RealVNC Ltd. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -#include - -#include -#include -#include -#include - -#include "libusbi.h" - -int usbi_pipe(int pipefd[2]) -{ -#if defined(HAVE_PIPE2) - int ret = pipe2(pipefd, O_CLOEXEC); -#else - int ret = pipe(pipefd); -#endif - - if (ret != 0) { - usbi_err(NULL, "failed to create pipe (%d)", errno); - return ret; - } - -#if !defined(HAVE_PIPE2) && defined(FD_CLOEXEC) - ret = fcntl(pipefd[0], F_GETFD); - if (ret == -1) { - usbi_err(NULL, "failed to get pipe fd flags (%d)", errno); - goto err_close_pipe; - } - ret = fcntl(pipefd[0], F_SETFD, ret | FD_CLOEXEC); - if (ret == -1) { - usbi_err(NULL, "failed to set pipe fd flags (%d)", errno); - goto err_close_pipe; - } - - ret = fcntl(pipefd[1], F_GETFD); - if (ret == -1) { - usbi_err(NULL, "failed to get pipe fd flags (%d)", errno); - goto err_close_pipe; - } - ret = fcntl(pipefd[1], F_SETFD, ret | FD_CLOEXEC); - if (ret == -1) { - usbi_err(NULL, "failed to set pipe fd flags (%d)", errno); - goto err_close_pipe; - } -#endif - - ret = fcntl(pipefd[1], F_GETFL); - if (ret == -1) { - usbi_err(NULL, "failed to get pipe fd status flags (%d)", errno); - goto err_close_pipe; - } - ret = fcntl(pipefd[1], F_SETFL, ret | O_NONBLOCK); - if (ret == -1) { - usbi_err(NULL, "failed to set pipe fd status flags (%d)", errno); - goto err_close_pipe; - } - - return 0; - -err_close_pipe: - close(pipefd[0]); - close(pipefd[1]); - return ret; -} diff --git a/Externals/libusb/libusb/os/poll_posix.h b/Externals/libusb/libusb/os/poll_posix.h deleted file mode 100644 index bc0239caa214..000000000000 --- a/Externals/libusb/libusb/os/poll_posix.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef LIBUSB_POLL_POSIX_H -#define LIBUSB_POLL_POSIX_H - -#define usbi_write write -#define usbi_read read -#define usbi_close close -#define usbi_poll poll - -int usbi_pipe(int pipefd[2]); - -#define usbi_inc_fds_ref(x, y) -#define usbi_dec_fds_ref(x, y) - -#endif /* LIBUSB_POLL_POSIX_H */ diff --git a/Externals/libusb/libusb/os/poll_windows.c b/Externals/libusb/libusb/os/poll_windows.c deleted file mode 100644 index 208953b4b91b..000000000000 --- a/Externals/libusb/libusb/os/poll_windows.c +++ /dev/null @@ -1,407 +0,0 @@ -/* - * poll_windows: poll compatibility wrapper for Windows - * Copyright © 2017 Chris Dickens - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -/* - * poll() and pipe() Windows compatibility layer for libusb 1.0 - * - * The way this layer works is by using OVERLAPPED with async I/O transfers, as - * OVERLAPPED have an associated event which is flagged for I/O completion. - * - * For USB pollable async I/O, you would typically: - * - obtain a Windows HANDLE to a file or device that has been opened in - * OVERLAPPED mode - * - call usbi_create_fd with this handle to obtain a custom fd. - * - leave the core functions call the poll routine and flag POLLIN/POLLOUT - * - * The pipe pollable synchronous I/O works using the overlapped event associated - * with a fake pipe. The read/write functions are only meant to be used in that - * context. - */ -#include - -#include -#include -#include - -#include "libusbi.h" -#include "windows_common.h" - -// public fd data -const struct winfd INVALID_WINFD = { -1, NULL }; - -// private data -struct file_descriptor { - enum fd_type { FD_TYPE_PIPE, FD_TYPE_TRANSFER } type; - OVERLAPPED overlapped; - int refcount; -}; - -static usbi_mutex_static_t fd_table_lock = USBI_MUTEX_INITIALIZER; -static struct file_descriptor *fd_table[MAX_FDS]; - -static struct file_descriptor *create_fd(enum fd_type type) -{ - struct file_descriptor *fd = calloc(1, sizeof(*fd)); - if (fd == NULL) - return NULL; - fd->overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); - if (fd->overlapped.hEvent == NULL) { - free(fd); - return NULL; - } - fd->type = type; - fd->refcount = 1; - return fd; -} - -static void free_fd(struct file_descriptor *fd) -{ - CloseHandle(fd->overlapped.hEvent); - free(fd); -} - -/* - * Create both an fd and an OVERLAPPED, so that it can be used with our - * polling function - * The handle MUST support overlapped transfers (usually requires CreateFile - * with FILE_FLAG_OVERLAPPED) - * Return a pollable file descriptor struct, or INVALID_WINFD on error - * - * Note that the fd returned by this function is a per-transfer fd, rather - * than a per-session fd and cannot be used for anything else but our - * custom functions. - * if you plan to do R/W on the same handle, you MUST create 2 fds: one for - * read and one for write. Using a single R/W fd is unsupported and will - * produce unexpected results - */ -struct winfd usbi_create_fd(void) -{ - struct file_descriptor *fd; - struct winfd wfd; - - fd = create_fd(FD_TYPE_TRANSFER); - if (fd == NULL) - return INVALID_WINFD; - - usbi_mutex_static_lock(&fd_table_lock); - for (wfd.fd = 0; wfd.fd < MAX_FDS; wfd.fd++) { - if (fd_table[wfd.fd] != NULL) - continue; - fd_table[wfd.fd] = fd; - break; - } - usbi_mutex_static_unlock(&fd_table_lock); - - if (wfd.fd == MAX_FDS) { - free_fd(fd); - return INVALID_WINFD; - } - - wfd.overlapped = &fd->overlapped; - - return wfd; -} - -int usbi_inc_fds_ref(struct pollfd *fds, unsigned int nfds) -{ - int n; - usbi_mutex_static_lock(&fd_table_lock); - for (n = 0; n < nfds; ++n) { - fd_table[fds[n].fd]->refcount++; - } - usbi_mutex_static_unlock(&fd_table_lock); -} - -int usbi_dec_fds_ref(struct pollfd *fds, unsigned int nfds) -{ - int n; - struct file_descriptor *fd; - - usbi_mutex_static_lock(&fd_table_lock); - for (n = 0; n < nfds; ++n) { - fd = fd_table[fds[n].fd]; - fd->refcount--; - if (fd->refcount == 0) - { - if (fd->type == FD_TYPE_PIPE) { - // InternalHigh is our reference count - fd->overlapped.InternalHigh--; - if (fd->overlapped.InternalHigh == 0) - free_fd(fd); - } - else { - free_fd(fd); - } - fd_table[fds[n].fd] = NULL; - } - } - usbi_mutex_static_unlock(&fd_table_lock); -} - - -static int check_pollfds(struct pollfd *fds, unsigned int nfds, - HANDLE *wait_handles, DWORD *nb_wait_handles) -{ - struct file_descriptor *fd; - unsigned int n; - int nready = 0; - - usbi_mutex_static_lock(&fd_table_lock); - - for (n = 0; n < nfds; ++n) { - fds[n].revents = 0; - - // Keep it simple - only allow either POLLIN *or* POLLOUT - assert((fds[n].events == POLLIN) || (fds[n].events == POLLOUT)); - if ((fds[n].events != POLLIN) && (fds[n].events != POLLOUT)) { - fds[n].revents = POLLNVAL; - nready++; - continue; - } - - if ((fds[n].fd >= 0) && (fds[n].fd < MAX_FDS)) - fd = fd_table[fds[n].fd]; - else - fd = NULL; - - assert(fd != NULL); - if (fd == NULL) { - fds[n].revents = POLLNVAL; - nready++; - continue; - } - - if (HasOverlappedIoCompleted(&fd->overlapped) - && (WaitForSingleObject(fd->overlapped.hEvent, 0) == WAIT_OBJECT_0)) { - fds[n].revents = fds[n].events; - nready++; - } else if (wait_handles != NULL) { - if (*nb_wait_handles == MAXIMUM_WAIT_OBJECTS) { - usbi_warn(NULL, "too many HANDLEs to wait on"); - continue; - } - wait_handles[*nb_wait_handles] = fd->overlapped.hEvent; - (*nb_wait_handles)++; - } - } - - usbi_mutex_static_unlock(&fd_table_lock); - - return nready; -} -/* - * POSIX poll equivalent, using Windows OVERLAPPED - * Currently, this function only accepts one of POLLIN or POLLOUT per fd - * (but you can create multiple fds from the same handle for read and write) - */ -int usbi_poll(struct pollfd *fds, unsigned int nfds, int timeout) -{ - HANDLE wait_handles[MAXIMUM_WAIT_OBJECTS]; - DWORD nb_wait_handles = 0; - DWORD ret; - int nready; - - nready = check_pollfds(fds, nfds, wait_handles, &nb_wait_handles); - - // If nothing was triggered, wait on all fds that require it - if ((nready == 0) && (nb_wait_handles != 0) && (timeout != 0)) { - ret = WaitForMultipleObjects(nb_wait_handles, wait_handles, - FALSE, (timeout < 0) ? INFINITE : (DWORD)timeout); - if (ret < (WAIT_OBJECT_0 + nb_wait_handles)) { - nready = check_pollfds(fds, nfds, NULL, NULL); - } else if (ret != WAIT_TIMEOUT) { - if (ret == WAIT_FAILED) - usbi_err(NULL, "WaitForMultipleObjects failed: %u", (unsigned int)GetLastError()); - nready = -1; - } - } - - return nready; -} - -/* - * close a fake file descriptor - */ -int usbi_close(int _fd) -{ - struct file_descriptor *fd; - - if (_fd < 0 || _fd >= MAX_FDS) - goto err_badfd; - - usbi_mutex_static_lock(&fd_table_lock); - fd = fd_table[_fd]; - fd->refcount--; - if(fd->refcount==0) - { fd_table[_fd] = NULL; - - if (fd->type == FD_TYPE_PIPE) { - // InternalHigh is our reference count - fd->overlapped.InternalHigh--; - if (fd->overlapped.InternalHigh == 0) - free_fd(fd); - } - else { - free_fd(fd); - } - } - usbi_mutex_static_unlock(&fd_table_lock); - - if (fd == NULL) - goto err_badfd; - - return 0; - -err_badfd: - errno = EBADF; - return -1; -} - -/* -* Create a fake pipe. -* As libusb only uses pipes for signaling, all we need from a pipe is an -* event. To that extent, we create a single wfd and overlapped as a means -* to access that event. -*/ -int usbi_pipe(int filedes[2]) -{ - struct file_descriptor *fd; - int r_fd = -1, w_fd = -1; - int i; - - fd = create_fd(FD_TYPE_PIPE); - if (fd == NULL) { - errno = ENOMEM; - return -1; - } - - // Use InternalHigh as a reference count - fd->overlapped.Internal = STATUS_PENDING; - fd->overlapped.InternalHigh = 2; - - usbi_mutex_static_lock(&fd_table_lock); - do { - for (i = 0; i < MAX_FDS; i++) { - if (fd_table[i] != NULL) - continue; - if (r_fd == -1) { - r_fd = i; - } else if (w_fd == -1) { - w_fd = i; - break; - } - } - - if (i == MAX_FDS) - break; - - fd_table[r_fd] = fd; - fd_table[w_fd] = fd; - - } while (0); - usbi_mutex_static_unlock(&fd_table_lock); - - if (i == MAX_FDS) { - free_fd(fd); - errno = EMFILE; - return -1; - } - - filedes[0] = r_fd; - filedes[1] = w_fd; - - return 0; -} - -/* - * synchronous write for fake "pipe" signaling - */ -ssize_t usbi_write(int fd, const void *buf, size_t count) -{ - int error = EBADF; - - UNUSED(buf); - - if (fd < 0 || fd >= MAX_FDS) - goto err_out; - - if (count != sizeof(unsigned char)) { - usbi_err(NULL, "this function should only used for signaling"); - error = EINVAL; - goto err_out; - } - - usbi_mutex_static_lock(&fd_table_lock); - if ((fd_table[fd] != NULL) && (fd_table[fd]->type == FD_TYPE_PIPE)) { - assert(fd_table[fd]->overlapped.Internal == STATUS_PENDING); - assert(fd_table[fd]->overlapped.InternalHigh == 2); - fd_table[fd]->overlapped.Internal = STATUS_WAIT_0; - SetEvent(fd_table[fd]->overlapped.hEvent); - error = 0; - } - usbi_mutex_static_unlock(&fd_table_lock); - - if (error) - goto err_out; - - return sizeof(unsigned char); - -err_out: - errno = error; - return -1; -} - -/* - * synchronous read for fake "pipe" signaling - */ -ssize_t usbi_read(int fd, void *buf, size_t count) -{ - int error = EBADF; - - UNUSED(buf); - - if (fd < 0 || fd >= MAX_FDS) - goto err_out; - - if (count != sizeof(unsigned char)) { - usbi_err(NULL, "this function should only used for signaling"); - error = EINVAL; - goto err_out; - } - - usbi_mutex_static_lock(&fd_table_lock); - if ((fd_table[fd] != NULL) && (fd_table[fd]->type == FD_TYPE_PIPE)) { - assert(fd_table[fd]->overlapped.Internal == STATUS_WAIT_0); - assert(fd_table[fd]->overlapped.InternalHigh == 2); - fd_table[fd]->overlapped.Internal = STATUS_PENDING; - ResetEvent(fd_table[fd]->overlapped.hEvent); - error = 0; - } - usbi_mutex_static_unlock(&fd_table_lock); - - if (error) - goto err_out; - - return sizeof(unsigned char); - -err_out: - errno = error; - return -1; -} diff --git a/Externals/libusb/libusb/os/poll_windows.h b/Externals/libusb/libusb/os/poll_windows.h deleted file mode 100644 index 980870d827b7..000000000000 --- a/Externals/libusb/libusb/os/poll_windows.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Windows compat: POSIX compatibility wrapper - * Copyright © 2012-2013 RealVNC Ltd. - * Copyright © 2009-2010 Pete Batard - * Copyright © 2016-2018 Chris Dickens - * With contributions from Michael Plante, Orin Eman et al. - * Parts of poll implementation from libusb-win32, by Stephan Meyer et al. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ -#pragma once - -#if defined(_MSC_VER) -// disable /W4 MSVC warnings that are benign -#pragma warning(disable:4127) // conditional expression is constant -#endif - -// Handle synchronous completion through the overlapped structure -#if !defined(STATUS_REPARSE) // reuse the REPARSE status code -#define STATUS_REPARSE ((LONG)0x00000104L) -#endif -#define STATUS_COMPLETED_SYNCHRONOUSLY STATUS_REPARSE -#if defined(_WIN32_WCE) -// WinCE doesn't have a HasOverlappedIoCompleted() macro, so attempt to emulate it -#define HasOverlappedIoCompleted(lpOverlapped) (((DWORD)(lpOverlapped)->Internal) != STATUS_PENDING) -#endif -#define HasOverlappedIoCompletedSync(lpOverlapped) (((DWORD)(lpOverlapped)->Internal) == STATUS_COMPLETED_SYNCHRONOUSLY) - -#define DUMMY_HANDLE ((HANDLE)(LONG_PTR)-2) - -#define MAX_FDS 256 - -#define POLLIN 0x0001 /* There is data to read */ -#define POLLPRI 0x0002 /* There is urgent data to read */ -#define POLLOUT 0x0004 /* Writing now will not block */ -#define POLLERR 0x0008 /* Error condition */ -#define POLLHUP 0x0010 /* Hung up */ -#define POLLNVAL 0x0020 /* Invalid request: fd not open */ - -struct pollfd { - int fd; /* file descriptor */ - short events; /* requested events */ - short revents; /* returned events */ -}; - -struct winfd { - int fd; // what's exposed to libusb core - OVERLAPPED *overlapped; // what will report our I/O status -}; - -extern const struct winfd INVALID_WINFD; - -struct winfd usbi_create_fd(void); - -int usbi_pipe(int pipefd[2]); -int usbi_poll(struct pollfd *fds, unsigned int nfds, int timeout); -ssize_t usbi_write(int fd, const void *buf, size_t count); -ssize_t usbi_read(int fd, void *buf, size_t count); -int usbi_close(int fd); - -int usbi_inc_fds_ref(struct pollfd *fds, unsigned int nfds); -int usbi_dec_fds_ref(struct pollfd *fds, unsigned int nfds); - -/* - * Timeval operations - */ -#if defined(DDKBUILD) -#include // defines timeval functions on DDK -#endif - -#if !defined(TIMESPEC_TO_TIMEVAL) -#define TIMESPEC_TO_TIMEVAL(tv, ts) { \ - (tv)->tv_sec = (long)(ts)->tv_sec; \ - (tv)->tv_usec = (long)(ts)->tv_nsec / 1000; \ -} -#endif -#if !defined(timersub) -#define timersub(a, b, result) \ -do { \ - (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ - (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ - if ((result)->tv_usec < 0) { \ - --(result)->tv_sec; \ - (result)->tv_usec += 1000000; \ - } \ -} while (0) -#endif diff --git a/Externals/libusb/libusb/os/sunos_usb.c b/Externals/libusb/libusb/os/sunos_usb.c deleted file mode 100644 index 6a3f633f97dc..000000000000 --- a/Externals/libusb/libusb/os/sunos_usb.c +++ /dev/null @@ -1,1695 +0,0 @@ -/* - * - * Copyright (c) 2016, Oracle and/or its affiliates. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "libusbi.h" -#include "sunos_usb.h" - -#define UPDATEDRV_PATH "/usr/sbin/update_drv" -#define UPDATEDRV "update_drv" - -typedef list_t string_list_t; -typedef struct string_node { - char *string; - list_node_t link; -} string_node_t; - -/* - * Backend functions - */ -static int sunos_init(struct libusb_context *); -static void sunos_exit(struct libusb_context *); -static int sunos_get_device_list(struct libusb_context *, - struct discovered_devs **); -static int sunos_open(struct libusb_device_handle *); -static void sunos_close(struct libusb_device_handle *); -static int sunos_get_device_descriptor(struct libusb_device *, - uint8_t*, int *); -static int sunos_get_active_config_descriptor(struct libusb_device *, - uint8_t*, size_t, int *); -static int sunos_get_config_descriptor(struct libusb_device *, uint8_t, - uint8_t*, size_t, int *); -static int sunos_get_configuration(struct libusb_device_handle *, int *); -static int sunos_set_configuration(struct libusb_device_handle *, int); -static int sunos_claim_interface(struct libusb_device_handle *, int); -static int sunos_release_interface(struct libusb_device_handle *, int); -static int sunos_set_interface_altsetting(struct libusb_device_handle *, - int, int); -static int sunos_clear_halt(struct libusb_device_handle *, uint8_t); -static int sunos_reset_device(struct libusb_device_handle *); -static void sunos_destroy_device(struct libusb_device *); -static int sunos_submit_transfer(struct usbi_transfer *); -static int sunos_cancel_transfer(struct usbi_transfer *); -static void sunos_clear_transfer_priv(struct usbi_transfer *); -static int sunos_handle_transfer_completion(struct usbi_transfer *); -static int sunos_clock_gettime(int, struct timespec *); -static int sunos_kernel_driver_active(struct libusb_device_handle *, int interface); -static int sunos_detach_kernel_driver (struct libusb_device_handle *dev, int interface_number); -static int sunos_attach_kernel_driver (struct libusb_device_handle *dev, int interface_number); -static int sunos_usb_open_ep0(sunos_dev_handle_priv_t *hpriv, sunos_dev_priv_t *dpriv); -static int sunos_usb_ioctl(struct libusb_device *dev, int cmd); - -static struct devctl_iocdata iocdata; -static int sunos_get_link(di_devlink_t devlink, void *arg) -{ - walk_link_t *larg = (walk_link_t *)arg; - const char *p; - const char *q; - - if (larg->path) { - char *content = (char *)di_devlink_content(devlink); - char *start = strstr(content, "/devices/"); - start += strlen("/devices"); - usbi_dbg("%s", start); - - /* line content must have minor node */ - if (start == NULL || - strncmp(start, larg->path, larg->len) != 0 || - start[larg->len] != ':') - return (DI_WALK_CONTINUE); - } - - p = di_devlink_path(devlink); - q = strrchr(p, '/'); - usbi_dbg("%s", q); - - *(larg->linkpp) = strndup(p, strlen(p) - strlen(q)); - - return (DI_WALK_TERMINATE); -} - - -static int sunos_physpath_to_devlink( - const char *node_path, const char *match, char **link_path) -{ - walk_link_t larg; - di_devlink_handle_t hdl; - - *link_path = NULL; - larg.linkpp = link_path; - if ((hdl = di_devlink_init(NULL, 0)) == NULL) { - usbi_dbg("di_devlink_init failure"); - return (-1); - } - - larg.len = strlen(node_path); - larg.path = (char *)node_path; - - (void) di_devlink_walk(hdl, match, NULL, DI_PRIMARY_LINK, - (void *)&larg, sunos_get_link); - - (void) di_devlink_fini(&hdl); - - if (*link_path == NULL) { - usbi_dbg("there is no devlink for this path"); - return (-1); - } - - return 0; -} - -static int -sunos_usb_ioctl(struct libusb_device *dev, int cmd) -{ - int fd; - nvlist_t *nvlist; - char *end; - char *phypath; - char *hubpath; - char path_arg[PATH_MAX]; - sunos_dev_priv_t *dpriv; - devctl_ap_state_t devctl_ap_state; - - dpriv = (sunos_dev_priv_t *)dev->os_priv; - phypath = dpriv->phypath; - - end = strrchr(phypath, '/'); - if (end == NULL) - return (-1); - hubpath = strndup(phypath, end - phypath); - if (hubpath == NULL) - return (-1); - - end = strrchr(hubpath, '@'); - if (end == NULL) { - free(hubpath); - return (-1); - } - end++; - usbi_dbg("unitaddr: %s", end); - - nvlist_alloc(&nvlist, NV_UNIQUE_NAME_TYPE, KM_NOSLEEP); - nvlist_add_int32(nvlist, "port", dev->port_number); - //find the hub path - snprintf(path_arg, sizeof(path_arg), "/devices%s:hubd", hubpath); - usbi_dbg("ioctl hub path: %s", path_arg); - - fd = open(path_arg, O_RDONLY); - if (fd < 0) { - usbi_err(DEVICE_CTX(dev), "open failed: %d (%s)", errno, strerror(errno)); - nvlist_free(nvlist); - free(hubpath); - return (-1); - } - - memset(&iocdata, 0, sizeof(iocdata)); - memset(&devctl_ap_state, 0, sizeof(devctl_ap_state)); - - nvlist_pack(nvlist, (char **)&iocdata.nvl_user, &iocdata.nvl_usersz, NV_ENCODE_NATIVE, 0); - - iocdata.cmd = DEVCTL_AP_GETSTATE; - iocdata.flags = 0; - iocdata.c_nodename = "hub"; - iocdata.c_unitaddr = end; - iocdata.cpyout_buf = &devctl_ap_state; - usbi_dbg("%p, %d", iocdata.nvl_user, iocdata.nvl_usersz); - - errno = 0; - if (ioctl(fd, DEVCTL_AP_GETSTATE, &iocdata) == -1) { - usbi_err(DEVICE_CTX(dev), "ioctl failed: fd %d, cmd %x, errno %d (%s)", - fd, DEVCTL_AP_GETSTATE, errno, strerror(errno)); - } else { - usbi_dbg("dev rstate: %d", devctl_ap_state.ap_rstate); - usbi_dbg("dev ostate: %d", devctl_ap_state.ap_ostate); - } - - errno = 0; - iocdata.cmd = cmd; - if (ioctl(fd, (int)cmd, &iocdata) != 0) { - usbi_err(DEVICE_CTX(dev), "ioctl failed: fd %d, cmd %x, errno %d (%s)", - fd, cmd, errno, strerror(errno)); - sleep(2); - } - - close(fd); - free(iocdata.nvl_user); - nvlist_free(nvlist); - free(hubpath); - - return (-errno); -} - -static int -sunos_kernel_driver_active(struct libusb_device_handle *dev, int interface) -{ - sunos_dev_priv_t *dpriv; - dpriv = (sunos_dev_priv_t *)dev->dev->os_priv; - - usbi_dbg("%s", dpriv->ugenpath); - - return (dpriv->ugenpath == NULL); -} - -/* - * Private functions - */ -static int _errno_to_libusb(int); -static int sunos_usb_get_status(int fd); - -static int sunos_init(struct libusb_context *ctx) -{ - return (LIBUSB_SUCCESS); -} - -static void sunos_exit(struct libusb_context *ctx) -{ - usbi_dbg(""); -} - -static string_list_t * -sunos_new_string_list(void) -{ - string_list_t *list; - - list = calloc(1, sizeof(*list)); - if (list != NULL) - list_create(list, sizeof(string_node_t), - offsetof(string_node_t, link)); - - return (list); -} - -static int -sunos_append_to_string_list(string_list_t *list, const char *arg) -{ - string_node_t *np; - - np = calloc(1, sizeof(*np)); - if (!np) - return (-1); - - np->string = strdup(arg); - if (!np->string) { - free(np); - return (-1); - } - - list_insert_tail(list, np); - - return (0); -} - -static void -sunos_free_string_list(string_list_t *list) -{ - string_node_t *np; - - while ((np = list_remove_head(list)) != NULL) { - free(np->string); - free(np); - } - - free(list); -} - -static char ** -sunos_build_argv_list(string_list_t *list) -{ - char **argv_list; - string_node_t *np; - int n; - - n = 1; /* Start at 1 for NULL terminator */ - for (np = list_head(list); np != NULL; np = list_next(list, np)) - n++; - - argv_list = calloc(n, sizeof(char *)); - if (argv_list == NULL) - return NULL; - - n = 0; - for (np = list_head(list); np != NULL; np = list_next(list, np)) - argv_list[n++] = np->string; - - return (argv_list); -} - - -static int -sunos_exec_command(struct libusb_context *ctx, const char *path, - string_list_t *list) -{ - pid_t pid; - int status; - int waitstat; - int exit_status; - char **argv_list; - - argv_list = sunos_build_argv_list(list); - if (argv_list == NULL) - return (-1); - - pid = fork(); - if (pid == 0) { - /* child */ - execv(path, argv_list); - _exit(127); - } else if (pid > 0) { - /* parent */ - do { - waitstat = waitpid(pid, &status, 0); - } while ((waitstat == -1 && errno == EINTR) || - (waitstat == 0 && !WIFEXITED(status) && !WIFSIGNALED(status))); - - if (waitstat == 0) { - if (WIFEXITED(status)) - exit_status = WEXITSTATUS(status); - else - exit_status = WTERMSIG(status); - } else { - usbi_err(ctx, "waitpid failed: errno %d (%s)", errno, strerror(errno)); - exit_status = -1; - } - } else { - /* fork failed */ - usbi_err(ctx, "fork failed: errno %d (%s)", errno, strerror(errno)); - exit_status = -1; - } - - free(argv_list); - - return (exit_status); -} - -static int -sunos_detach_kernel_driver(struct libusb_device_handle *dev_handle, - int interface_number) -{ - struct libusb_context *ctx = HANDLE_CTX(dev_handle); - string_list_t *list; - char path_arg[PATH_MAX]; - sunos_dev_priv_t *dpriv; - int r; - - dpriv = (sunos_dev_priv_t *)dev_handle->dev->os_priv; - snprintf(path_arg, sizeof(path_arg), "\'\"%s\"\'", dpriv->phypath); - usbi_dbg("%s", path_arg); - - list = sunos_new_string_list(); - if (list == NULL) - return (LIBUSB_ERROR_NO_MEM); - - /* attach ugen driver */ - r = 0; - r |= sunos_append_to_string_list(list, UPDATEDRV); - r |= sunos_append_to_string_list(list, "-a"); /* add rule */ - r |= sunos_append_to_string_list(list, "-i"); /* specific device */ - r |= sunos_append_to_string_list(list, path_arg); /* physical path */ - r |= sunos_append_to_string_list(list, "ugen"); - if (r) { - sunos_free_string_list(list); - return (LIBUSB_ERROR_NO_MEM); - } - - r = sunos_exec_command(ctx, UPDATEDRV_PATH, list); - sunos_free_string_list(list); - if (r < 0) - return (LIBUSB_ERROR_OTHER); - - /* reconfigure the driver node */ - r = 0; - r |= sunos_usb_ioctl(dev_handle->dev, DEVCTL_AP_DISCONNECT); - r |= sunos_usb_ioctl(dev_handle->dev, DEVCTL_AP_CONFIGURE); - if (r) - usbi_warn(HANDLE_CTX(dev_handle), "one or more ioctls failed"); - - snprintf(path_arg, sizeof(path_arg), "^usb/%x.%x", dpriv->dev_descr.idVendor, - dpriv->dev_descr.idProduct); - sunos_physpath_to_devlink(dpriv->phypath, path_arg, &dpriv->ugenpath); - - if (access(dpriv->ugenpath, F_OK) == -1) { - usbi_err(HANDLE_CTX(dev_handle), "fail to detach kernel driver"); - return (LIBUSB_ERROR_IO); - } - - return sunos_usb_open_ep0((sunos_dev_handle_priv_t *)dev_handle->os_priv, dpriv); -} - -static int -sunos_attach_kernel_driver(struct libusb_device_handle *dev_handle, - int interface_number) -{ - struct libusb_context *ctx = HANDLE_CTX(dev_handle); - string_list_t *list; - char path_arg[PATH_MAX]; - sunos_dev_priv_t *dpriv; - int r; - - /* we open the dev in detach driver, so we need close it first. */ - sunos_close(dev_handle); - - dpriv = (sunos_dev_priv_t *)dev_handle->dev->os_priv; - snprintf(path_arg, sizeof(path_arg), "\'\"%s\"\'", dpriv->phypath); - usbi_dbg("%s", path_arg); - - list = sunos_new_string_list(); - if (list == NULL) - return (LIBUSB_ERROR_NO_MEM); - - /* detach ugen driver */ - r = 0; - r |= sunos_append_to_string_list(list, UPDATEDRV); - r |= sunos_append_to_string_list(list, "-d"); /* add rule */ - r |= sunos_append_to_string_list(list, "-i"); /* specific device */ - r |= sunos_append_to_string_list(list, path_arg); /* physical path */ - r |= sunos_append_to_string_list(list, "ugen"); - if (r) { - sunos_free_string_list(list); - return (LIBUSB_ERROR_NO_MEM); - } - - r = sunos_exec_command(ctx, UPDATEDRV_PATH, list); - sunos_free_string_list(list); - if (r < 0) - return (LIBUSB_ERROR_OTHER); - - /* reconfigure the driver node */ - r = 0; - r |= sunos_usb_ioctl(dev_handle->dev, DEVCTL_AP_CONFIGURE); - r |= sunos_usb_ioctl(dev_handle->dev, DEVCTL_AP_DISCONNECT); - r |= sunos_usb_ioctl(dev_handle->dev, DEVCTL_AP_CONFIGURE); - if (r) - usbi_warn(HANDLE_CTX(dev_handle), "one or more ioctls failed"); - - return 0; -} - -static int -sunos_fill_in_dev_info(di_node_t node, struct libusb_device *dev) -{ - int proplen; - int *i, n, *addr, *port_prop; - char *phypath; - uint8_t *rdata; - struct libusb_device_descriptor *descr; - sunos_dev_priv_t *dpriv = (sunos_dev_priv_t *)dev->os_priv; - char match_str[PATH_MAX]; - - /* Device descriptors */ - proplen = di_prop_lookup_bytes(DDI_DEV_T_ANY, node, - "usb-dev-descriptor", &rdata); - if (proplen <= 0) { - - return (LIBUSB_ERROR_IO); - } - - descr = (struct libusb_device_descriptor *)rdata; - bcopy(descr, &dpriv->dev_descr, LIBUSB_DT_DEVICE_SIZE); - dpriv->dev_descr.bcdUSB = libusb_cpu_to_le16(descr->bcdUSB); - dpriv->dev_descr.idVendor = libusb_cpu_to_le16(descr->idVendor); - dpriv->dev_descr.idProduct = libusb_cpu_to_le16(descr->idProduct); - dpriv->dev_descr.bcdDevice = libusb_cpu_to_le16(descr->bcdDevice); - - /* Raw configuration descriptors */ - proplen = di_prop_lookup_bytes(DDI_DEV_T_ANY, node, - "usb-raw-cfg-descriptors", &rdata); - if (proplen <= 0) { - usbi_dbg("can't find raw config descriptors"); - - return (LIBUSB_ERROR_IO); - } - dpriv->raw_cfgdescr = calloc(1, proplen); - if (dpriv->raw_cfgdescr == NULL) { - return (LIBUSB_ERROR_NO_MEM); - } else { - bcopy(rdata, dpriv->raw_cfgdescr, proplen); - dpriv->cfgvalue = ((struct libusb_config_descriptor *) - rdata)->bConfigurationValue; - } - - n = di_prop_lookup_ints(DDI_DEV_T_ANY, node, "reg", &port_prop); - - if ((n != 1) || (*port_prop <= 0)) { - return (LIBUSB_ERROR_IO); - } - dev->port_number = *port_prop; - - /* device physical path */ - phypath = di_devfs_path(node); - if (phypath) { - dpriv->phypath = strdup(phypath); - snprintf(match_str, sizeof(match_str), "^usb/%x.%x", dpriv->dev_descr.idVendor, dpriv->dev_descr.idProduct); - usbi_dbg("match is %s", match_str); - sunos_physpath_to_devlink(dpriv->phypath, match_str, &dpriv->ugenpath); - di_devfs_path_free(phypath); - - } else { - free(dpriv->raw_cfgdescr); - - return (LIBUSB_ERROR_IO); - } - - /* address */ - n = di_prop_lookup_ints(DDI_DEV_T_ANY, node, "assigned-address", &addr); - if (n != 1 || *addr == 0) { - usbi_dbg("can't get address"); - } else { - dev->device_address = *addr; - } - - /* speed */ - if (di_prop_lookup_ints(DDI_DEV_T_ANY, node, "low-speed", &i) >= 0) { - dev->speed = LIBUSB_SPEED_LOW; - } else if (di_prop_lookup_ints(DDI_DEV_T_ANY, node, "high-speed", &i) >= 0) { - dev->speed = LIBUSB_SPEED_HIGH; - } else if (di_prop_lookup_ints(DDI_DEV_T_ANY, node, "full-speed", &i) >= 0) { - dev->speed = LIBUSB_SPEED_FULL; - } else if (di_prop_lookup_ints(DDI_DEV_T_ANY, node, "super-speed", &i) >= 0) { - dev->speed = LIBUSB_SPEED_SUPER; - } - - usbi_dbg("vid=%x pid=%x, path=%s, bus_nmber=0x%x, port_number=%d, " - "speed=%d", dpriv->dev_descr.idVendor, dpriv->dev_descr.idProduct, - dpriv->phypath, dev->bus_number, dev->port_number, dev->speed); - - return (LIBUSB_SUCCESS); -} - -static int -sunos_add_devices(di_devlink_t link, void *arg) -{ - struct devlink_cbarg *largs = (struct devlink_cbarg *)arg; - struct node_args *nargs; - di_node_t myself, dn; - uint64_t session_id = 0; - uint64_t sid = 0; - uint64_t bdf = 0; - struct libusb_device *dev; - sunos_dev_priv_t *devpriv; - int n, *j; - int i = 0; - int *addr_prop; - uint8_t bus_number = 0; - uint32_t * regbuf = NULL; - uint32_t reg; - - nargs = (struct node_args *)largs->nargs; - myself = largs->myself; - - /* - * Construct session ID. - * session ID = dev_addr | hub addr |parent hub addr|...|root hub bdf - * 8 bits 8bits 8 bits 16bits - */ - if (myself == DI_NODE_NIL) - return (DI_WALK_CONTINUE); - - dn = myself; - /* find the root hub */ - while (di_prop_lookup_ints(DDI_DEV_T_ANY, dn, "root-hub", &j) != 0) { - usbi_dbg("find_root_hub:%s", di_devfs_path(dn)); - n = di_prop_lookup_ints(DDI_DEV_T_ANY, dn, - "assigned-address", &addr_prop); - session_id |= ((addr_prop[0] & 0xff) << i++ * 8); - dn = di_parent_node(dn); - } - - /* dn is the root hub node */ - n = di_prop_lookup_ints(DDI_DEV_T_ANY, dn, "reg", (int **)®buf); - reg = regbuf[0]; - bdf = (PCI_REG_BUS_G(reg) << 8) | (PCI_REG_DEV_G(reg) << 3) | PCI_REG_FUNC_G(reg); - /* bdf must larger than i*8 bits */ - session_id |= (bdf << i * 8); - bus_number = (PCI_REG_DEV_G(reg) << 3) | PCI_REG_FUNC_G(reg); - - usbi_dbg("device bus address=%s:%x, name:%s", - di_bus_addr(myself), bus_number, di_node_name(dn)); - usbi_dbg("session id org:%lx", session_id); - - /* dn is the usb device */ - for (dn = di_child_node(myself); dn != DI_NODE_NIL; dn = di_sibling_node(dn)) { - usbi_dbg("device path:%s", di_devfs_path(dn)); - /* skip hub devices, because its driver can not been unload */ - if (di_prop_lookup_ints(DDI_DEV_T_ANY, dn, "usb-port-count", &addr_prop) != -1) - continue; - /* usb_addr */ - n = di_prop_lookup_ints(DDI_DEV_T_ANY, dn, - "assigned-address", &addr_prop); - if ((n != 1) || (addr_prop[0] == 0)) { - usbi_dbg("cannot get valid usb_addr"); - continue; - } - - sid = (session_id << 8) | (addr_prop[0] & 0xff) ; - usbi_dbg("session id %lx", sid); - - dev = usbi_get_device_by_session_id(nargs->ctx, sid); - if (dev == NULL) { - dev = usbi_alloc_device(nargs->ctx, sid); - if (dev == NULL) { - usbi_dbg("can't alloc device"); - continue; - } - devpriv = (sunos_dev_priv_t *)dev->os_priv; - dev->bus_number = bus_number; - - if (sunos_fill_in_dev_info(dn, dev) != LIBUSB_SUCCESS) { - libusb_unref_device(dev); - usbi_dbg("get infomation fail"); - continue; - } - if (usbi_sanitize_device(dev) < 0) { - libusb_unref_device(dev); - usbi_dbg("sanatize failed: "); - return (DI_WALK_TERMINATE); - } - } else { - devpriv = (sunos_dev_priv_t *)dev->os_priv; - usbi_dbg("Dev %s exists", devpriv->ugenpath); - } - - if (discovered_devs_append(*(nargs->discdevs), dev) == NULL) { - usbi_dbg("cannot append device"); - } - - /* - * we alloc and hence ref this dev. We don't need to ref it - * hereafter. Front end or app should take care of their ref. - */ - libusb_unref_device(dev); - - usbi_dbg("Device %s %s id=0x%llx, devcount:%d, bdf=%x", - devpriv->ugenpath, di_devfs_path(dn), (uint64_t)sid, - (*nargs->discdevs)->len, bdf); - } - - return (DI_WALK_CONTINUE); -} - -static int -sunos_walk_minor_node_link(di_node_t node, void *args) -{ - di_minor_t minor = DI_MINOR_NIL; - char *minor_path; - struct devlink_cbarg arg; - struct node_args *nargs = (struct node_args *)args; - di_devlink_handle_t devlink_hdl = nargs->dlink_hdl; - - /* walk each minor to find usb devices */ - while ((minor = di_minor_next(node, minor)) != DI_MINOR_NIL) { - minor_path = di_devfs_minor_path(minor); - arg.nargs = args; - arg.myself = node; - arg.minor = minor; - (void) di_devlink_walk(devlink_hdl, - "^usb/hub[0-9]+", minor_path, - DI_PRIMARY_LINK, (void *)&arg, sunos_add_devices); - di_devfs_path_free(minor_path); - } - - /* switch to a different node */ - nargs->last_ugenpath = NULL; - - return (DI_WALK_CONTINUE); -} - -int -sunos_get_device_list(struct libusb_context * ctx, - struct discovered_devs **discdevs) -{ - di_node_t root_node; - struct node_args args; - di_devlink_handle_t devlink_hdl; - - args.ctx = ctx; - args.discdevs = discdevs; - args.last_ugenpath = NULL; - if ((root_node = di_init("/", DINFOCPYALL)) == DI_NODE_NIL) { - usbi_dbg("di_int() failed: %s", strerror(errno)); - return (LIBUSB_ERROR_IO); - } - - if ((devlink_hdl = di_devlink_init(NULL, 0)) == NULL) { - di_fini(root_node); - usbi_dbg("di_devlink_init() failed: %s", strerror(errno)); - - return (LIBUSB_ERROR_IO); - } - args.dlink_hdl = devlink_hdl; - - /* walk each node to find USB devices */ - if (di_walk_node(root_node, DI_WALK_SIBFIRST, &args, - sunos_walk_minor_node_link) == -1) { - usbi_dbg("di_walk_node() failed: %s", strerror(errno)); - di_fini(root_node); - - return (LIBUSB_ERROR_IO); - } - - di_fini(root_node); - di_devlink_fini(&devlink_hdl); - - usbi_dbg("%d devices", (*discdevs)->len); - - return ((*discdevs)->len); -} - -static int -sunos_usb_open_ep0(sunos_dev_handle_priv_t *hpriv, sunos_dev_priv_t *dpriv) -{ - char filename[PATH_MAX + 1]; - - if (hpriv->eps[0].datafd > 0) { - - return (LIBUSB_SUCCESS); - } - snprintf(filename, PATH_MAX, "%s/cntrl0", dpriv->ugenpath); - - usbi_dbg("opening %s", filename); - hpriv->eps[0].datafd = open(filename, O_RDWR); - if (hpriv->eps[0].datafd < 0) { - return(_errno_to_libusb(errno)); - } - - snprintf(filename, PATH_MAX, "%s/cntrl0stat", dpriv->ugenpath); - hpriv->eps[0].statfd = open(filename, O_RDONLY); - if (hpriv->eps[0].statfd < 0) { - close(hpriv->eps[0].datafd); - hpriv->eps[0].datafd = -1; - - return(_errno_to_libusb(errno)); - } - - return (LIBUSB_SUCCESS); -} - -static void -sunos_usb_close_all_eps(sunos_dev_handle_priv_t *hdev) -{ - int i; - - /* not close ep0 */ - for (i = 1; i < USB_MAXENDPOINTS; i++) { - if (hdev->eps[i].datafd != -1) { - (void) close(hdev->eps[i].datafd); - hdev->eps[i].datafd = -1; - } - if (hdev->eps[i].statfd != -1) { - (void) close(hdev->eps[i].statfd); - hdev->eps[i].statfd = -1; - } - } -} - -static void -sunos_usb_close_ep0(sunos_dev_handle_priv_t *hdev, sunos_dev_priv_t *dpriv) -{ - if (hdev->eps[0].datafd >= 0) { - close(hdev->eps[0].datafd); - close(hdev->eps[0].statfd); - hdev->eps[0].datafd = -1; - hdev->eps[0].statfd = -1; - } -} - -static uchar_t -sunos_usb_ep_index(uint8_t ep_addr) -{ - return ((ep_addr & LIBUSB_ENDPOINT_ADDRESS_MASK) + - ((ep_addr & LIBUSB_ENDPOINT_DIR_MASK) ? 16 : 0)); -} - -static int -sunos_find_interface(struct libusb_device_handle *hdev, - uint8_t endpoint, uint8_t *interface) -{ - struct libusb_config_descriptor *config; - int r; - int iface_idx; - - r = libusb_get_active_config_descriptor(hdev->dev, &config); - if (r < 0) { - return (LIBUSB_ERROR_INVALID_PARAM); - } - - for (iface_idx = 0; iface_idx < config->bNumInterfaces; iface_idx++) { - const struct libusb_interface *iface = - &config->interface[iface_idx]; - int altsetting_idx; - - for (altsetting_idx = 0; altsetting_idx < iface->num_altsetting; - altsetting_idx++) { - const struct libusb_interface_descriptor *altsetting = - &iface->altsetting[altsetting_idx]; - int ep_idx; - - for (ep_idx = 0; ep_idx < altsetting->bNumEndpoints; - ep_idx++) { - const struct libusb_endpoint_descriptor *ep = - &altsetting->endpoint[ep_idx]; - if (ep->bEndpointAddress == endpoint) { - *interface = iface_idx; - libusb_free_config_descriptor(config); - - return (LIBUSB_SUCCESS); - } - } - } - } - libusb_free_config_descriptor(config); - - return (LIBUSB_ERROR_INVALID_PARAM); -} - -static int -sunos_check_device_and_status_open(struct libusb_device_handle *hdl, - uint8_t ep_addr, int ep_type) -{ - char filename[PATH_MAX + 1], statfilename[PATH_MAX + 1]; - char cfg_num[16], alt_num[16]; - int fd, fdstat, mode; - uint8_t ifc = 0; - uint8_t ep_index; - sunos_dev_handle_priv_t *hpriv; - - usbi_dbg("open ep 0x%02x", ep_addr); - hpriv = (sunos_dev_handle_priv_t *)hdl->os_priv; - ep_index = sunos_usb_ep_index(ep_addr); - /* ep already opened */ - if ((hpriv->eps[ep_index].datafd > 0) && - (hpriv->eps[ep_index].statfd > 0)) { - usbi_dbg("ep 0x%02x already opened, return success", - ep_addr); - - return (0); - } - - if (sunos_find_interface(hdl, ep_addr, &ifc) < 0) { - usbi_dbg("can't find interface for endpoint 0x%02x", - ep_addr); - - return (EACCES); - } - - /* create filename */ - if (hpriv->config_index > 0) { - (void) snprintf(cfg_num, sizeof (cfg_num), "cfg%d", - hpriv->config_index + 1); - } else { - bzero(cfg_num, sizeof (cfg_num)); - } - - if (hpriv->altsetting[ifc] > 0) { - (void) snprintf(alt_num, sizeof (alt_num), ".%d", - hpriv->altsetting[ifc]); - } else { - bzero(alt_num, sizeof (alt_num)); - } - - (void) snprintf(filename, PATH_MAX, "%s/%sif%d%s%s%d", - hpriv->dpriv->ugenpath, cfg_num, ifc, alt_num, - (ep_addr & LIBUSB_ENDPOINT_DIR_MASK) ? "in" : - "out", (ep_addr & LIBUSB_ENDPOINT_ADDRESS_MASK)); - (void) snprintf(statfilename, PATH_MAX, "%sstat", filename); - - /* - * for interrupt IN endpoints, we need to enable one xfer - * mode before opening the endpoint - */ - if ((ep_type == LIBUSB_TRANSFER_TYPE_INTERRUPT) && - (ep_addr & LIBUSB_ENDPOINT_IN)) { - char control = USB_EP_INTR_ONE_XFER; - int count; - - /* open the status device node for the ep first RDWR */ - if ((fdstat = open(statfilename, O_RDWR)) == -1) { - usbi_dbg("can't open %s RDWR: %d", - statfilename, errno); - } else { - count = write(fdstat, &control, sizeof (control)); - if (count != 1) { - /* this should have worked */ - usbi_dbg("can't write to %s: %d", - statfilename, errno); - (void) close(fdstat); - - return (errno); - } - /* close status node and open xfer node first */ - close (fdstat); - } - } - - /* open the xfer node first in case alt needs to be changed */ - if (ep_type == LIBUSB_TRANSFER_TYPE_ISOCHRONOUS) { - mode = O_RDWR; - } else if (ep_addr & LIBUSB_ENDPOINT_IN) { - mode = O_RDONLY; - } else { - mode = O_WRONLY; - } - - /* - * IMPORTANT: must open data xfer node first and then open stat node - * Otherwise, it will fail on multi-config or multi-altsetting devices - * with "Device Busy" error. See ugen_epxs_switch_cfg_alt() and - * ugen_epxs_check_alt_switch() in ugen driver source code. - */ - if ((fd = open(filename, mode)) == -1) { - usbi_dbg("can't open %s: %d(%s)", filename, errno, - strerror(errno)); - - return (errno); - } - /* open the status node */ - if ((fdstat = open(statfilename, O_RDONLY)) == -1) { - usbi_dbg("can't open %s: %d", statfilename, errno); - - (void) close(fd); - - return (errno); - } - - hpriv->eps[ep_index].datafd = fd; - hpriv->eps[ep_index].statfd = fdstat; - usbi_dbg("ep=0x%02x datafd=%d, statfd=%d", ep_addr, fd, fdstat); - - return (0); -} - -int -sunos_open(struct libusb_device_handle *handle) -{ - sunos_dev_handle_priv_t *hpriv; - sunos_dev_priv_t *dpriv; - int i; - int ret; - - hpriv = (sunos_dev_handle_priv_t *)handle->os_priv; - dpriv = (sunos_dev_priv_t *)handle->dev->os_priv; - hpriv->dpriv = dpriv; - - /* set all file descriptors to "closed" */ - for (i = 0; i < USB_MAXENDPOINTS; i++) { - hpriv->eps[i].datafd = -1; - hpriv->eps[i].statfd = -1; - } - - if (sunos_kernel_driver_active(handle, 0)) { - /* pretend we can open the device */ - return (LIBUSB_SUCCESS); - } - - if ((ret = sunos_usb_open_ep0(hpriv, dpriv)) != LIBUSB_SUCCESS) { - usbi_dbg("fail: %d", ret); - return (ret); - } - - return (LIBUSB_SUCCESS); -} - -void -sunos_close(struct libusb_device_handle *handle) -{ - sunos_dev_handle_priv_t *hpriv; - sunos_dev_priv_t *dpriv; - - usbi_dbg(""); - if (!handle) { - return; - } - - hpriv = (sunos_dev_handle_priv_t *)handle->os_priv; - if (!hpriv) { - return; - } - dpriv = (sunos_dev_priv_t *)handle->dev->os_priv; - if (!dpriv) { - return; - } - - sunos_usb_close_all_eps(hpriv); - sunos_usb_close_ep0(hpriv, dpriv); -} - -int -sunos_get_device_descriptor(struct libusb_device *dev, uint8_t *buf, - int *host_endian) -{ - sunos_dev_priv_t *dpriv = (sunos_dev_priv_t *)dev->os_priv; - - memcpy(buf, &dpriv->dev_descr, LIBUSB_DT_DEVICE_SIZE); - *host_endian = 0; - - return (LIBUSB_SUCCESS); -} - -int -sunos_get_active_config_descriptor(struct libusb_device *dev, - uint8_t *buf, size_t len, int *host_endian) -{ - sunos_dev_priv_t *dpriv = (sunos_dev_priv_t *)dev->os_priv; - struct libusb_config_descriptor *cfg; - int proplen; - di_node_t node; - uint8_t *rdata; - - /* - * Keep raw configuration descriptors updated, in case config - * has ever been changed through setCfg. - */ - if ((node = di_init(dpriv->phypath, DINFOCPYALL)) == DI_NODE_NIL) { - usbi_dbg("di_int() failed: %s", strerror(errno)); - return (LIBUSB_ERROR_IO); - } - proplen = di_prop_lookup_bytes(DDI_DEV_T_ANY, node, - "usb-raw-cfg-descriptors", &rdata); - if (proplen <= 0) { - usbi_dbg("can't find raw config descriptors"); - - return (LIBUSB_ERROR_IO); - } - dpriv->raw_cfgdescr = realloc(dpriv->raw_cfgdescr, proplen); - if (dpriv->raw_cfgdescr == NULL) { - return (LIBUSB_ERROR_NO_MEM); - } else { - bcopy(rdata, dpriv->raw_cfgdescr, proplen); - dpriv->cfgvalue = ((struct libusb_config_descriptor *) - rdata)->bConfigurationValue; - } - di_fini(node); - - cfg = (struct libusb_config_descriptor *)dpriv->raw_cfgdescr; - len = MIN(len, libusb_le16_to_cpu(cfg->wTotalLength)); - memcpy(buf, dpriv->raw_cfgdescr, len); - *host_endian = 0; - usbi_dbg("path:%s len %d", dpriv->phypath, len); - - return (len); -} - -int -sunos_get_config_descriptor(struct libusb_device *dev, uint8_t idx, - uint8_t *buf, size_t len, int *host_endian) -{ - /* XXX */ - return(sunos_get_active_config_descriptor(dev, buf, len, host_endian)); -} - -int -sunos_get_configuration(struct libusb_device_handle *handle, int *config) -{ - sunos_dev_priv_t *dpriv = (sunos_dev_priv_t *)handle->dev->os_priv; - - *config = dpriv->cfgvalue; - - usbi_dbg("bConfigurationValue %d", *config); - - return (LIBUSB_SUCCESS); -} - -int -sunos_set_configuration(struct libusb_device_handle *handle, int config) -{ - sunos_dev_priv_t *dpriv = (sunos_dev_priv_t *)handle->dev->os_priv; - sunos_dev_handle_priv_t *hpriv; - - usbi_dbg("bConfigurationValue %d", config); - hpriv = (sunos_dev_handle_priv_t *)handle->os_priv; - - if (dpriv->ugenpath == NULL) - return (LIBUSB_ERROR_NOT_SUPPORTED); - - if (config < 1 || config > dpriv->dev_descr.bNumConfigurations) - return (LIBUSB_ERROR_INVALID_PARAM); - - dpriv->cfgvalue = config; - hpriv->config_index = config - 1; - - return (LIBUSB_SUCCESS); -} - -int -sunos_claim_interface(struct libusb_device_handle *handle, int iface) -{ - usbi_dbg("iface %d", iface); - if (iface < 0) { - return (LIBUSB_ERROR_INVALID_PARAM); - } - - return (LIBUSB_SUCCESS); -} - -int -sunos_release_interface(struct libusb_device_handle *handle, int iface) -{ - sunos_dev_handle_priv_t *hpriv = - (sunos_dev_handle_priv_t *)handle->os_priv; - - usbi_dbg("iface %d", iface); - if (iface < 0) { - return (LIBUSB_ERROR_INVALID_PARAM); - } - - /* XXX: can we release it? */ - hpriv->altsetting[iface] = 0; - - return (LIBUSB_SUCCESS); -} - -int -sunos_set_interface_altsetting(struct libusb_device_handle *handle, int iface, - int altsetting) -{ - sunos_dev_priv_t *dpriv = (sunos_dev_priv_t *)handle->dev->os_priv; - sunos_dev_handle_priv_t *hpriv = - (sunos_dev_handle_priv_t *)handle->os_priv; - - usbi_dbg("iface %d, setting %d", iface, altsetting); - - if (iface < 0 || altsetting < 0) { - return (LIBUSB_ERROR_INVALID_PARAM); - } - if (dpriv->ugenpath == NULL) - return (LIBUSB_ERROR_NOT_FOUND); - - /* XXX: can we switch altsetting? */ - hpriv->altsetting[iface] = altsetting; - - return (LIBUSB_SUCCESS); -} - -static void -usb_dump_data(unsigned char *data, size_t size) -{ - int i; - - if (getenv("LIBUSB_DEBUG") == NULL) { - return; - } - - (void) fprintf(stderr, "data dump:"); - for (i = 0; i < size; i++) { - if (i % 16 == 0) { - (void) fprintf(stderr, "\n%08x ", i); - } - (void) fprintf(stderr, "%02x ", (uchar_t)data[i]); - } - (void) fprintf(stderr, "\n"); -} - -static void -sunos_async_callback(union sigval arg) -{ - struct sunos_transfer_priv *tpriv = - (struct sunos_transfer_priv *)arg.sival_ptr; - struct libusb_transfer *xfer = tpriv->transfer; - struct aiocb *aiocb = &tpriv->aiocb; - int ret; - sunos_dev_handle_priv_t *hpriv; - uint8_t ep; - libusb_device_handle *dev_handle; - - dev_handle = xfer->dev_handle; - - /* libusb can forcibly interrupt transfer in do_close() */ - if (dev_handle != NULL) { - hpriv = (sunos_dev_handle_priv_t *)dev_handle->os_priv; - ep = sunos_usb_ep_index(xfer->endpoint); - - ret = aio_error(aiocb); - if (ret != 0) { - xfer->status = sunos_usb_get_status(hpriv->eps[ep].statfd); - } else { - xfer->actual_length = - LIBUSB_TRANSFER_TO_USBI_TRANSFER(xfer)->transferred = - aio_return(aiocb); - } - - usb_dump_data(xfer->buffer, xfer->actual_length); - - usbi_dbg("ret=%d, len=%d, actual_len=%d", ret, xfer->length, - xfer->actual_length); - - /* async notification */ - usbi_signal_transfer_completion(LIBUSB_TRANSFER_TO_USBI_TRANSFER(xfer)); - } -} - -static int -sunos_do_async_io(struct libusb_transfer *transfer) -{ - int ret = -1; - struct aiocb *aiocb; - sunos_dev_handle_priv_t *hpriv; - uint8_t ep; - struct sunos_transfer_priv *tpriv; - - usbi_dbg(""); - - tpriv = usbi_transfer_get_os_priv(LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer)); - hpriv = (sunos_dev_handle_priv_t *)transfer->dev_handle->os_priv; - ep = sunos_usb_ep_index(transfer->endpoint); - - tpriv->transfer = transfer; - aiocb = &tpriv->aiocb; - bzero(aiocb, sizeof (*aiocb)); - aiocb->aio_fildes = hpriv->eps[ep].datafd; - aiocb->aio_buf = transfer->buffer; - aiocb->aio_nbytes = transfer->length; - aiocb->aio_lio_opcode = - ((transfer->endpoint & LIBUSB_ENDPOINT_DIR_MASK) == - LIBUSB_ENDPOINT_IN) ? LIO_READ:LIO_WRITE; - aiocb->aio_sigevent.sigev_notify = SIGEV_THREAD; - aiocb->aio_sigevent.sigev_value.sival_ptr = tpriv; - aiocb->aio_sigevent.sigev_notify_function = sunos_async_callback; - - if (aiocb->aio_lio_opcode == LIO_READ) { - ret = aio_read(aiocb); - } else { - ret = aio_write(aiocb); - } - - return (ret); -} - -/* return the number of bytes read/written */ -static int -usb_do_io(int fd, int stat_fd, char *data, size_t size, int flag, int *status) -{ - int error; - int ret = -1; - - usbi_dbg("usb_do_io(): datafd=%d statfd=%d size=0x%x flag=%s", - fd, stat_fd, size, flag? "WRITE":"READ"); - - switch (flag) { - case READ: - errno = 0; - ret = read(fd, data, size); - usb_dump_data(data, size); - break; - case WRITE: - usb_dump_data(data, size); - errno = 0; - ret = write(fd, data, size); - break; - } - - usbi_dbg("usb_do_io(): amount=%d", ret); - - if (ret < 0) { - int save_errno = errno; - - usbi_dbg("TID=%x io %s errno=%d(%s) ret=%d", pthread_self(), - flag?"WRITE":"READ", errno, strerror(errno), ret); - - /* sunos_usb_get_status will do a read and overwrite errno */ - error = sunos_usb_get_status(stat_fd); - usbi_dbg("io status=%d errno=%d(%s)", error, - save_errno, strerror(save_errno)); - - if (status) { - *status = save_errno; - } - - return (save_errno); - - } else if (status) { - *status = 0; - } - - return (ret); -} - -static int -solaris_submit_ctrl_on_default(struct libusb_transfer *transfer) -{ - int ret = -1, setup_ret; - int status; - sunos_dev_handle_priv_t *hpriv; - struct libusb_device_handle *hdl = transfer->dev_handle; - uint16_t wLength; - uint8_t *data = transfer->buffer; - - hpriv = (sunos_dev_handle_priv_t *)hdl->os_priv; - wLength = transfer->length - LIBUSB_CONTROL_SETUP_SIZE; - - if (hpriv->eps[0].datafd == -1) { - usbi_dbg("ep0 not opened"); - - return (LIBUSB_ERROR_NOT_FOUND); - } - - if ((data[0] & LIBUSB_ENDPOINT_DIR_MASK) == LIBUSB_ENDPOINT_IN) { - usbi_dbg("IN request"); - ret = usb_do_io(hpriv->eps[0].datafd, - hpriv->eps[0].statfd, (char *)data, LIBUSB_CONTROL_SETUP_SIZE, - WRITE, (int *)&status); - } else { - usbi_dbg("OUT request"); - ret = usb_do_io(hpriv->eps[0].datafd, hpriv->eps[0].statfd, - transfer->buffer, transfer->length, WRITE, - (int *)&transfer->status); - } - - setup_ret = ret; - if (ret < LIBUSB_CONTROL_SETUP_SIZE) { - usbi_dbg("error sending control msg: %d", ret); - - return (LIBUSB_ERROR_IO); - } - - ret = transfer->length - LIBUSB_CONTROL_SETUP_SIZE; - - /* Read the remaining bytes for IN request */ - if ((wLength) && ((data[0] & LIBUSB_ENDPOINT_DIR_MASK) == - LIBUSB_ENDPOINT_IN)) { - usbi_dbg("DATA: %d", transfer->length - setup_ret); - ret = usb_do_io(hpriv->eps[0].datafd, - hpriv->eps[0].statfd, - (char *)transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE, - wLength, READ, (int *)&transfer->status); - } - - if (ret >= 0) { - transfer->actual_length = ret; - LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer)->transferred = ret; - } - usbi_dbg("Done: ctrl data bytes %d", ret); - - /** - * Sync transfer handling. - * We should release transfer lock here and later get it back - * as usbi_handle_transfer_completion() takes its own transfer lock. - */ - usbi_mutex_unlock(&LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer)->lock); - ret = usbi_handle_transfer_completion(LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer), - transfer->status); - usbi_mutex_lock(&LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer)->lock); - - return (ret); -} - -int -sunos_clear_halt(struct libusb_device_handle *handle, uint8_t endpoint) -{ - int ret; - - usbi_dbg("endpoint=0x%02x", endpoint); - - ret = libusb_control_transfer(handle, LIBUSB_ENDPOINT_OUT | - LIBUSB_RECIPIENT_ENDPOINT | LIBUSB_REQUEST_TYPE_STANDARD, - LIBUSB_REQUEST_CLEAR_FEATURE, 0, endpoint, NULL, 0, 1000); - - usbi_dbg("ret=%d", ret); - - return (ret); -} - -int -sunos_reset_device(struct libusb_device_handle *handle) -{ - usbi_dbg(""); - - return (LIBUSB_ERROR_NOT_SUPPORTED); -} - -void -sunos_destroy_device(struct libusb_device *dev) -{ - sunos_dev_priv_t *dpriv = (sunos_dev_priv_t *)dev->os_priv; - usbi_dbg("destroy everyting"); - free(dpriv->raw_cfgdescr); - free(dpriv->ugenpath); - free(dpriv->phypath); -} - -int -sunos_submit_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer; - struct libusb_device_handle *hdl; - int err = 0; - - transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - hdl = transfer->dev_handle; - - err = sunos_check_device_and_status_open(hdl, - transfer->endpoint, transfer->type); - if (err < 0) { - - return (_errno_to_libusb(err)); - } - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - /* sync transfer */ - usbi_dbg("CTRL transfer: %d", transfer->length); - err = solaris_submit_ctrl_on_default(transfer); - break; - - case LIBUSB_TRANSFER_TYPE_BULK: - /* fallthru */ - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - if (transfer->type == LIBUSB_TRANSFER_TYPE_BULK) - usbi_dbg("BULK transfer: %d", transfer->length); - else - usbi_dbg("INTR transfer: %d", transfer->length); - err = sunos_do_async_io(transfer); - break; - - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - /* Isochronous/Stream is not supported */ - - /* fallthru */ - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - if (transfer->type == LIBUSB_TRANSFER_TYPE_ISOCHRONOUS) - usbi_dbg("ISOC transfer: %d", transfer->length); - else - usbi_dbg("BULK STREAM transfer: %d", transfer->length); - err = LIBUSB_ERROR_NOT_SUPPORTED; - break; - } - - return (err); -} - -int -sunos_cancel_transfer(struct usbi_transfer *itransfer) -{ - sunos_xfer_priv_t *tpriv; - sunos_dev_handle_priv_t *hpriv; - struct libusb_transfer *transfer; - struct aiocb *aiocb; - uint8_t ep; - int ret; - - tpriv = usbi_transfer_get_os_priv(itransfer); - aiocb = &tpriv->aiocb; - transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - hpriv = (sunos_dev_handle_priv_t *)transfer->dev_handle->os_priv; - ep = sunos_usb_ep_index(transfer->endpoint); - - ret = aio_cancel(hpriv->eps[ep].datafd, aiocb); - - usbi_dbg("aio->fd=%d fd=%d ret = %d, %s", aiocb->aio_fildes, - hpriv->eps[ep].datafd, ret, (ret == AIO_CANCELED)? - strerror(0):strerror(errno)); - - if (ret != AIO_CANCELED) { - ret = _errno_to_libusb(errno); - } else { - /* - * we don't need to call usbi_handle_transfer_cancellation(), - * because we'll handle everything in sunos_async_callback. - */ - ret = LIBUSB_SUCCESS; - } - - return (ret); -} - -void -sunos_clear_transfer_priv(struct usbi_transfer *itransfer) -{ - usbi_dbg(""); - - /* Nothing to do */ -} - -int -sunos_handle_transfer_completion(struct usbi_transfer *itransfer) -{ - return usbi_handle_transfer_completion(itransfer, LIBUSB_TRANSFER_COMPLETED); -} - -int -sunos_clock_gettime(int clkid, struct timespec *tp) -{ - if (clkid == USBI_CLOCK_REALTIME) - return clock_gettime(CLOCK_REALTIME, tp); - - if (clkid == USBI_CLOCK_MONOTONIC) - return clock_gettime(CLOCK_MONOTONIC, tp); - - return (LIBUSB_ERROR_INVALID_PARAM); -} - -int -_errno_to_libusb(int err) -{ - usbi_dbg("error: %s (%d)", strerror(err), err); - - switch (err) { - case EIO: - return (LIBUSB_ERROR_IO); - case EACCES: - return (LIBUSB_ERROR_ACCESS); - case ENOENT: - return (LIBUSB_ERROR_NO_DEVICE); - case ENOMEM: - return (LIBUSB_ERROR_NO_MEM); - case ETIMEDOUT: - return (LIBUSB_ERROR_TIMEOUT); - } - - return (LIBUSB_ERROR_OTHER); -} - -/* - * sunos_usb_get_status: - * gets status of endpoint - * - * Returns: ugen's last cmd status - */ -static int -sunos_usb_get_status(int fd) -{ - int status, ret; - - usbi_dbg("sunos_usb_get_status(): fd=%d", fd); - - ret = read(fd, &status, sizeof (status)); - if (ret == sizeof (status)) { - switch (status) { - case USB_LC_STAT_NOERROR: - usbi_dbg("No Error"); - break; - case USB_LC_STAT_CRC: - usbi_dbg("CRC Timeout Detected\n"); - break; - case USB_LC_STAT_BITSTUFFING: - usbi_dbg("Bit Stuffing Violation\n"); - break; - case USB_LC_STAT_DATA_TOGGLE_MM: - usbi_dbg("Data Toggle Mismatch\n"); - break; - case USB_LC_STAT_STALL: - usbi_dbg("End Point Stalled\n"); - break; - case USB_LC_STAT_DEV_NOT_RESP: - usbi_dbg("Device is Not Responding\n"); - break; - case USB_LC_STAT_PID_CHECKFAILURE: - usbi_dbg("PID Check Failure\n"); - break; - case USB_LC_STAT_UNEXP_PID: - usbi_dbg("Unexpected PID\n"); - break; - case USB_LC_STAT_DATA_OVERRUN: - usbi_dbg("Data Exceeded Size\n"); - break; - case USB_LC_STAT_DATA_UNDERRUN: - usbi_dbg("Less data received\n"); - break; - case USB_LC_STAT_BUFFER_OVERRUN: - usbi_dbg("Buffer Size Exceeded\n"); - break; - case USB_LC_STAT_BUFFER_UNDERRUN: - usbi_dbg("Buffer Underrun\n"); - break; - case USB_LC_STAT_TIMEOUT: - usbi_dbg("Command Timed Out\n"); - break; - case USB_LC_STAT_NOT_ACCESSED: - usbi_dbg("Not Accessed by h/w\n"); - break; - case USB_LC_STAT_UNSPECIFIED_ERR: - usbi_dbg("Unspecified Error\n"); - break; - case USB_LC_STAT_NO_BANDWIDTH: - usbi_dbg("No Bandwidth\n"); - break; - case USB_LC_STAT_HW_ERR: - usbi_dbg("Host Controller h/w Error\n"); - break; - case USB_LC_STAT_SUSPENDED: - usbi_dbg("Device was Suspended\n"); - break; - case USB_LC_STAT_DISCONNECTED: - usbi_dbg("Device was Disconnected\n"); - break; - case USB_LC_STAT_INTR_BUF_FULL: - usbi_dbg("Interrupt buffer was full\n"); - break; - case USB_LC_STAT_INVALID_REQ: - usbi_dbg("Request was Invalid\n"); - break; - case USB_LC_STAT_INTERRUPTED: - usbi_dbg("Request was Interrupted\n"); - break; - case USB_LC_STAT_NO_RESOURCES: - usbi_dbg("No resources available for " - "request\n"); - break; - case USB_LC_STAT_INTR_POLLING_FAILED: - usbi_dbg("Failed to Restart Poll"); - break; - default: - usbi_dbg("Error Not Determined %d\n", - status); - break; - } - } else { - usbi_dbg("read stat error: %s",strerror(errno)); - status = -1; - } - - return (status); -} - -#ifdef USBI_TIMERFD_AVAILABLE -static clockid_t op_get_timerfd_clockid(void) -{ - return CLOCK_MONOTONIC; -} -#endif - -const struct usbi_os_backend usbi_backend = { - .name = "Solaris", - .caps = 0, - .init = sunos_init, - .exit = sunos_exit, - .get_device_list = sunos_get_device_list, - .get_device_descriptor = sunos_get_device_descriptor, - .get_active_config_descriptor = sunos_get_active_config_descriptor, - .get_config_descriptor = sunos_get_config_descriptor, - .hotplug_poll = NULL, - .open = sunos_open, - .close = sunos_close, - .get_configuration = sunos_get_configuration, - .set_configuration = sunos_set_configuration, - - .claim_interface = sunos_claim_interface, - .release_interface = sunos_release_interface, - .set_interface_altsetting = sunos_set_interface_altsetting, - .clear_halt = sunos_clear_halt, - .reset_device = sunos_reset_device, /* TODO */ - .alloc_streams = NULL, - .free_streams = NULL, - .kernel_driver_active = sunos_kernel_driver_active, - .detach_kernel_driver = sunos_detach_kernel_driver, - .attach_kernel_driver = sunos_attach_kernel_driver, - .destroy_device = sunos_destroy_device, - .submit_transfer = sunos_submit_transfer, - .cancel_transfer = sunos_cancel_transfer, - .handle_events = NULL, - .clear_transfer_priv = sunos_clear_transfer_priv, - .handle_transfer_completion = sunos_handle_transfer_completion, - .clock_gettime = sunos_clock_gettime, -#ifdef USBI_TIMERFD_AVAILABLE - .get_timerfd_clockid = op_get_timerfd_clockid, -#endif - .device_priv_size = sizeof(sunos_dev_priv_t), - .device_handle_priv_size = sizeof(sunos_dev_handle_priv_t), - .transfer_priv_size = sizeof(sunos_xfer_priv_t), -}; diff --git a/Externals/libusb/libusb/os/sunos_usb.h b/Externals/libusb/libusb/os/sunos_usb.h deleted file mode 100644 index 52bb3d33a0a8..000000000000 --- a/Externals/libusb/libusb/os/sunos_usb.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * - * Copyright (c) 2016, Oracle and/or its affiliates. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef LIBUSB_SUNOS_H -#define LIBUSB_SUNOS_H - -#include -#include -#include "libusbi.h" - -#define READ 0 -#define WRITE 1 - -typedef struct sunos_device_priv { - uint8_t cfgvalue; /* active config value */ - uint8_t *raw_cfgdescr; /* active config descriptor */ - struct libusb_device_descriptor dev_descr; /* usb device descriptor */ - char *ugenpath; /* name of the ugen(4) node */ - char *phypath; /* physical path */ -} sunos_dev_priv_t; - -typedef struct endpoint { - int datafd; /* data file */ - int statfd; /* state file */ -} sunos_ep_priv_t; - -typedef struct sunos_device_handle_priv { - uint8_t altsetting[USB_MAXINTERFACES]; /* a interface's alt */ - uint8_t config_index; - sunos_ep_priv_t eps[USB_MAXENDPOINTS]; - sunos_dev_priv_t *dpriv; /* device private */ -} sunos_dev_handle_priv_t; - -typedef struct sunos_transfer_priv { - struct aiocb aiocb; - struct libusb_transfer *transfer; -} sunos_xfer_priv_t; - -struct node_args { - struct libusb_context *ctx; - struct discovered_devs **discdevs; - const char *last_ugenpath; - di_devlink_handle_t dlink_hdl; -}; - -struct devlink_cbarg { - struct node_args *nargs; /* di node walk arguments */ - di_node_t myself; /* the di node */ - di_minor_t minor; -}; - -typedef struct walk_link { - char *path; - int len; - char **linkpp; -} walk_link_t; - -/* AIO callback args */ -struct aio_callback_args{ - struct libusb_transfer *transfer; - struct aiocb aiocb; -}; - -#endif /* LIBUSB_SUNOS_H */ diff --git a/Externals/libusb/libusb/os/threads_posix.c b/Externals/libusb/libusb/os/threads_posix.c deleted file mode 100644 index 16a7578b81ff..000000000000 --- a/Externals/libusb/libusb/os/threads_posix.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * libusb synchronization using POSIX Threads - * - * Copyright © 2011 Vitali Lovich - * Copyright © 2011 Peter Stuge - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#if defined(__linux__) || defined(__OpenBSD__) -# if defined(__OpenBSD__) -# define _BSD_SOURCE -# endif -# include -# include -#elif defined(__APPLE__) -# include -#elif defined(__CYGWIN__) -# include -#endif - -#include "threads_posix.h" -#include "libusbi.h" - -int usbi_cond_timedwait(pthread_cond_t *cond, - pthread_mutex_t *mutex, const struct timeval *tv) -{ - struct timespec timeout; - int r; - - r = usbi_backend.clock_gettime(USBI_CLOCK_REALTIME, &timeout); - if (r < 0) - return r; - - timeout.tv_sec += tv->tv_sec; - timeout.tv_nsec += tv->tv_usec * 1000; - while (timeout.tv_nsec >= 1000000000L) { - timeout.tv_nsec -= 1000000000L; - timeout.tv_sec++; - } - - return pthread_cond_timedwait(cond, mutex, &timeout); -} - -int usbi_get_tid(void) -{ - int ret; -#if defined(__ANDROID__) - ret = gettid(); -#elif defined(__linux__) - ret = syscall(SYS_gettid); -#elif defined(__OpenBSD__) - /* The following only works with OpenBSD > 5.1 as it requires - real thread support. For 5.1 and earlier, -1 is returned. */ - ret = syscall(SYS_getthrid); -#elif defined(__APPLE__) - ret = (int)pthread_mach_thread_np(pthread_self()); -#elif defined(__CYGWIN__) - ret = GetCurrentThreadId(); -#else - ret = -1; -#endif -/* TODO: NetBSD thread ID support */ - return ret; -} diff --git a/Externals/libusb/libusb/os/threads_posix.h b/Externals/libusb/libusb/os/threads_posix.h deleted file mode 100644 index 9f1ef94bc7a8..000000000000 --- a/Externals/libusb/libusb/os/threads_posix.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * libusb synchronization using POSIX Threads - * - * Copyright © 2010 Peter Stuge - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef LIBUSB_THREADS_POSIX_H -#define LIBUSB_THREADS_POSIX_H - -#include -#ifdef HAVE_SYS_TIME_H -#include -#endif - -#define USBI_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER -typedef pthread_mutex_t usbi_mutex_static_t; -static inline void usbi_mutex_static_lock(usbi_mutex_static_t *mutex) -{ - (void)pthread_mutex_lock(mutex); -} -static inline void usbi_mutex_static_unlock(usbi_mutex_static_t *mutex) -{ - (void)pthread_mutex_unlock(mutex); -} - -typedef pthread_mutex_t usbi_mutex_t; -static inline int usbi_mutex_init(usbi_mutex_t *mutex) -{ - return pthread_mutex_init(mutex, NULL); -} -static inline void usbi_mutex_lock(usbi_mutex_t *mutex) -{ - (void)pthread_mutex_lock(mutex); -} -static inline void usbi_mutex_unlock(usbi_mutex_t *mutex) -{ - (void)pthread_mutex_unlock(mutex); -} -static inline int usbi_mutex_trylock(usbi_mutex_t *mutex) -{ - return pthread_mutex_trylock(mutex); -} -static inline void usbi_mutex_destroy(usbi_mutex_t *mutex) -{ - (void)pthread_mutex_destroy(mutex); -} - -typedef pthread_cond_t usbi_cond_t; -static inline void usbi_cond_init(pthread_cond_t *cond) -{ - (void)pthread_cond_init(cond, NULL); -} -static inline int usbi_cond_wait(usbi_cond_t *cond, usbi_mutex_t *mutex) -{ - return pthread_cond_wait(cond, mutex); -} -int usbi_cond_timedwait(usbi_cond_t *cond, - usbi_mutex_t *mutex, const struct timeval *tv); -static inline void usbi_cond_broadcast(usbi_cond_t *cond) -{ - (void)pthread_cond_broadcast(cond); -} -static inline void usbi_cond_destroy(usbi_cond_t *cond) -{ - (void)pthread_cond_destroy(cond); -} - -typedef pthread_key_t usbi_tls_key_t; -static inline void usbi_tls_key_create(usbi_tls_key_t *key) -{ - (void)pthread_key_create(key, NULL); -} -static inline void *usbi_tls_key_get(usbi_tls_key_t key) -{ - return pthread_getspecific(key); -} -static inline void usbi_tls_key_set(usbi_tls_key_t key, void *ptr) -{ - (void)pthread_setspecific(key, ptr); -} -static inline void usbi_tls_key_delete(usbi_tls_key_t key) -{ - (void)pthread_key_delete(key); -} - -int usbi_get_tid(void); - -#endif /* LIBUSB_THREADS_POSIX_H */ diff --git a/Externals/libusb/libusb/os/threads_windows.c b/Externals/libusb/libusb/os/threads_windows.c deleted file mode 100644 index 409c49055392..000000000000 --- a/Externals/libusb/libusb/os/threads_windows.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * libusb synchronization on Microsoft Windows - * - * Copyright © 2010 Michael Plante - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include - -#include "libusbi.h" - -struct usbi_cond_perthread { - struct list_head list; - HANDLE event; -}; - -void usbi_mutex_static_lock(usbi_mutex_static_t *mutex) -{ - while (InterlockedExchange(mutex, 1L) == 1L) - SleepEx(0, TRUE); -} - -void usbi_cond_init(usbi_cond_t *cond) -{ - list_init(&cond->waiters); - list_init(&cond->not_waiting); -} - -static int usbi_cond_intwait(usbi_cond_t *cond, - usbi_mutex_t *mutex, DWORD timeout_ms) -{ - struct usbi_cond_perthread *pos; - DWORD r; - - // Same assumption as usbi_cond_broadcast() holds - if (list_empty(&cond->not_waiting)) { - pos = malloc(sizeof(*pos)); - if (pos == NULL) - return ENOMEM; // This errno is not POSIX-allowed. - pos->event = CreateEvent(NULL, FALSE, FALSE, NULL); // auto-reset. - if (pos->event == NULL) { - free(pos); - return ENOMEM; - } - } else { - pos = list_first_entry(&cond->not_waiting, struct usbi_cond_perthread, list); - list_del(&pos->list); // remove from not_waiting list. - // Ensure the event is clear before waiting - WaitForSingleObject(pos->event, 0); - } - - list_add(&pos->list, &cond->waiters); - - LeaveCriticalSection(mutex); - r = WaitForSingleObject(pos->event, timeout_ms); - EnterCriticalSection(mutex); - - list_del(&pos->list); - list_add(&pos->list, &cond->not_waiting); - - if (r == WAIT_OBJECT_0) - return 0; - else if (r == WAIT_TIMEOUT) - return ETIMEDOUT; - else - return EINVAL; -} - -// N.B.: usbi_cond_*wait() can also return ENOMEM, even though pthread_cond_*wait cannot! -int usbi_cond_wait(usbi_cond_t *cond, usbi_mutex_t *mutex) -{ - return usbi_cond_intwait(cond, mutex, INFINITE); -} - -int usbi_cond_timedwait(usbi_cond_t *cond, - usbi_mutex_t *mutex, const struct timeval *tv) -{ - DWORD millis; - - millis = (DWORD)(tv->tv_sec * 1000) + (tv->tv_usec / 1000); - /* round up to next millisecond */ - if (tv->tv_usec % 1000) - millis++; - return usbi_cond_intwait(cond, mutex, millis); -} - -void usbi_cond_broadcast(usbi_cond_t *cond) -{ - // Assumes mutex is locked; this is not in keeping with POSIX spec, but - // libusb does this anyway, so we simplify by not adding more sync - // primitives to the CV definition! - struct usbi_cond_perthread *pos; - - list_for_each_entry(pos, &cond->waiters, list, struct usbi_cond_perthread) - SetEvent(pos->event); - // The wait function will remove its respective item from the list. -} - -void usbi_cond_destroy(usbi_cond_t *cond) -{ - // This assumes no one is using this anymore. The check MAY NOT BE safe. - struct usbi_cond_perthread *pos, *next; - - if (!list_empty(&cond->waiters)) - return; // (!see above!) - list_for_each_entry_safe(pos, next, &cond->not_waiting, list, struct usbi_cond_perthread) { - CloseHandle(pos->event); - list_del(&pos->list); - free(pos); - } -} diff --git a/Externals/libusb/libusb/os/threads_windows.h b/Externals/libusb/libusb/os/threads_windows.h deleted file mode 100644 index 409de2d0e25e..000000000000 --- a/Externals/libusb/libusb/os/threads_windows.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * libusb synchronization on Microsoft Windows - * - * Copyright © 2010 Michael Plante - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef LIBUSB_THREADS_WINDOWS_H -#define LIBUSB_THREADS_WINDOWS_H - -#define USBI_MUTEX_INITIALIZER 0L -#ifdef _WIN32_WCE -typedef LONG usbi_mutex_static_t; -#else -typedef volatile LONG usbi_mutex_static_t; -#endif -void usbi_mutex_static_lock(usbi_mutex_static_t *mutex); -static inline void usbi_mutex_static_unlock(usbi_mutex_static_t *mutex) -{ - InterlockedExchange(mutex, 0L); -} - -typedef CRITICAL_SECTION usbi_mutex_t; -static inline int usbi_mutex_init(usbi_mutex_t *mutex) -{ - InitializeCriticalSection(mutex); - return 0; -} -static inline void usbi_mutex_lock(usbi_mutex_t *mutex) -{ - EnterCriticalSection(mutex); -} -static inline void usbi_mutex_unlock(usbi_mutex_t *mutex) -{ - LeaveCriticalSection(mutex); -} -static inline int usbi_mutex_trylock(usbi_mutex_t *mutex) -{ - return !TryEnterCriticalSection(mutex); -} -static inline void usbi_mutex_destroy(usbi_mutex_t *mutex) -{ - DeleteCriticalSection(mutex); -} - -// We *were* getting timespec from pthread.h: -#if (!defined(HAVE_STRUCT_TIMESPEC) && !defined(_TIMESPEC_DEFINED)) -#define HAVE_STRUCT_TIMESPEC 1 -#define _TIMESPEC_DEFINED 1 -struct timespec { - long tv_sec; - long tv_nsec; -}; -#endif /* HAVE_STRUCT_TIMESPEC | _TIMESPEC_DEFINED */ - -// We *were* getting ETIMEDOUT from pthread.h: -#ifndef ETIMEDOUT -#define ETIMEDOUT 10060 /* This is the value in winsock.h. */ -#endif - -typedef struct usbi_cond { - // Every time a thread touches the CV, it winds up in one of these lists. - // It stays there until the CV is destroyed, even if the thread terminates. - struct list_head waiters; - struct list_head not_waiting; -} usbi_cond_t; - -void usbi_cond_init(usbi_cond_t *cond); -int usbi_cond_wait(usbi_cond_t *cond, usbi_mutex_t *mutex); -int usbi_cond_timedwait(usbi_cond_t *cond, - usbi_mutex_t *mutex, const struct timeval *tv); -void usbi_cond_broadcast(usbi_cond_t *cond); -void usbi_cond_destroy(usbi_cond_t *cond); - -typedef DWORD usbi_tls_key_t; -static inline void usbi_tls_key_create(usbi_tls_key_t *key) -{ - *key = TlsAlloc(); -} -static inline void *usbi_tls_key_get(usbi_tls_key_t key) -{ - return TlsGetValue(key); -} -static inline void usbi_tls_key_set(usbi_tls_key_t key, void *ptr) -{ - (void)TlsSetValue(key, ptr); -} -static inline void usbi_tls_key_delete(usbi_tls_key_t key) -{ - (void)TlsFree(key); -} - -static inline int usbi_get_tid(void) -{ - return (int)GetCurrentThreadId(); -} - -#endif /* LIBUSB_THREADS_WINDOWS_H */ diff --git a/Externals/libusb/libusb/os/wince_usb.c b/Externals/libusb/libusb/os/wince_usb.c deleted file mode 100644 index a0f35e93e5de..000000000000 --- a/Externals/libusb/libusb/os/wince_usb.c +++ /dev/null @@ -1,888 +0,0 @@ -/* - * Windows CE backend for libusb 1.0 - * Copyright © 2011-2013 RealVNC Ltd. - * Large portions taken from Windows backend, which is - * Copyright © 2009-2010 Pete Batard - * With contributions from Michael Plante, Orin Eman et al. - * Parts of this code adapted from libusb-win32-v1 by Stephan Meyer - * Major code testing contribution by Xiaofan Chen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include - -#include "libusbi.h" -#include "wince_usb.h" - -// Global variables -int errno = 0; -static uint64_t hires_frequency, hires_ticks_to_ps; -static HANDLE driver_handle = INVALID_HANDLE_VALUE; -static int concurrent_usage = -1; - -/* - * Converts a windows error to human readable string - * uses retval as errorcode, or, if 0, use GetLastError() - */ -#if defined(ENABLE_LOGGING) -static const char *windows_error_str(DWORD error_code) -{ - static TCHAR wErr_string[ERR_BUFFER_SIZE]; - static char err_string[ERR_BUFFER_SIZE]; - - DWORD size; - int len; - - if (error_code == 0) - error_code = GetLastError(); - - len = sprintf(err_string, "[%u] ", (unsigned int)error_code); - - size = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, error_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - wErr_string, ERR_BUFFER_SIZE, NULL); - if (size == 0) { - DWORD format_error = GetLastError(); - if (format_error) - snprintf(err_string, ERR_BUFFER_SIZE, - "Windows error code %u (FormatMessage error code %u)", - (unsigned int)error_code, (unsigned int)format_error); - else - snprintf(err_string, ERR_BUFFER_SIZE, "Unknown error code %u", (unsigned int)error_code); - } else { - // Remove CR/LF terminators, if present - size_t pos = size - 2; - if (wErr_string[pos] == 0x0D) - wErr_string[pos] = 0; - - if (!WideCharToMultiByte(CP_ACP, 0, wErr_string, -1, &err_string[len], ERR_BUFFER_SIZE - len, NULL, NULL)) - strcpy(err_string, "Unable to convert error string"); - } - - return err_string; -} -#endif - -static struct wince_device_priv *_device_priv(struct libusb_device *dev) -{ - return (struct wince_device_priv *)dev->os_priv; -} - -// ceusbkwrapper to libusb error code mapping -static int translate_driver_error(DWORD error) -{ - switch (error) { - case ERROR_INVALID_PARAMETER: - return LIBUSB_ERROR_INVALID_PARAM; - case ERROR_CALL_NOT_IMPLEMENTED: - case ERROR_NOT_SUPPORTED: - return LIBUSB_ERROR_NOT_SUPPORTED; - case ERROR_NOT_ENOUGH_MEMORY: - return LIBUSB_ERROR_NO_MEM; - case ERROR_INVALID_HANDLE: - return LIBUSB_ERROR_NO_DEVICE; - case ERROR_BUSY: - return LIBUSB_ERROR_BUSY; - - // Error codes that are either unexpected, or have - // no suitable LIBUSB_ERROR equivalent. - case ERROR_CANCELLED: - case ERROR_INTERNAL_ERROR: - default: - return LIBUSB_ERROR_OTHER; - } -} - -static BOOL init_dllimports(void) -{ - DLL_GET_HANDLE(ceusbkwrapper); - DLL_LOAD_FUNC(ceusbkwrapper, UkwOpenDriver, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwGetDeviceList, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwReleaseDeviceList, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwGetDeviceAddress, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwGetDeviceDescriptor, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwGetConfigDescriptor, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwCloseDriver, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwCancelTransfer, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwIssueControlTransfer, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwClaimInterface, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwReleaseInterface, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwSetInterfaceAlternateSetting, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwClearHaltHost, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwClearHaltDevice, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwGetConfig, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwSetConfig, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwResetDevice, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwKernelDriverActive, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwAttachKernelDriver, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwDetachKernelDriver, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwIssueBulkTransfer, TRUE); - DLL_LOAD_FUNC(ceusbkwrapper, UkwIsPipeHalted, TRUE); - - return TRUE; -} - -static void exit_dllimports(void) -{ - DLL_FREE_HANDLE(ceusbkwrapper); -} - -static int init_device( - struct libusb_device *dev, UKW_DEVICE drv_dev, - unsigned char bus_addr, unsigned char dev_addr) -{ - struct wince_device_priv *priv = _device_priv(dev); - int r = LIBUSB_SUCCESS; - - dev->bus_number = bus_addr; - dev->device_address = dev_addr; - priv->dev = drv_dev; - - if (!UkwGetDeviceDescriptor(priv->dev, &(priv->desc))) - r = translate_driver_error(GetLastError()); - - return r; -} - -// Internal API functions -static int wince_init(struct libusb_context *ctx) -{ - int r = LIBUSB_ERROR_OTHER; - HANDLE semaphore; - LARGE_INTEGER li_frequency; - TCHAR sem_name[11 + 8 + 1]; // strlen("libusb_init") + (32-bit hex PID) + '\0' - - _stprintf(sem_name, _T("libusb_init%08X"), (unsigned int)(GetCurrentProcessId() & 0xFFFFFFFF)); - semaphore = CreateSemaphore(NULL, 1, 1, sem_name); - if (semaphore == NULL) { - usbi_err(ctx, "could not create semaphore: %s", windows_error_str(0)); - return LIBUSB_ERROR_NO_MEM; - } - - // A successful wait brings our semaphore count to 0 (unsignaled) - // => any concurent wait stalls until the semaphore's release - if (WaitForSingleObject(semaphore, INFINITE) != WAIT_OBJECT_0) { - usbi_err(ctx, "failure to access semaphore: %s", windows_error_str(0)); - CloseHandle(semaphore); - return LIBUSB_ERROR_NO_MEM; - } - - // NB: concurrent usage supposes that init calls are equally balanced with - // exit calls. If init is called more than exit, we will not exit properly - if ( ++concurrent_usage == 0 ) { // First init? - // Load DLL imports - if (!init_dllimports()) { - usbi_err(ctx, "could not resolve DLL functions"); - r = LIBUSB_ERROR_NOT_SUPPORTED; - goto init_exit; - } - - // try to open a handle to the driver - driver_handle = UkwOpenDriver(); - if (driver_handle == INVALID_HANDLE_VALUE) { - usbi_err(ctx, "could not connect to driver"); - r = LIBUSB_ERROR_NOT_SUPPORTED; - goto init_exit; - } - - // find out if we have access to a monotonic (hires) timer - if (QueryPerformanceFrequency(&li_frequency)) { - hires_frequency = li_frequency.QuadPart; - // The hires frequency can go as high as 4 GHz, so we'll use a conversion - // to picoseconds to compute the tv_nsecs part in clock_gettime - hires_ticks_to_ps = UINT64_C(1000000000000) / hires_frequency; - usbi_dbg("hires timer available (Frequency: %"PRIu64" Hz)", hires_frequency); - } else { - usbi_dbg("no hires timer available on this platform"); - hires_frequency = 0; - hires_ticks_to_ps = UINT64_C(0); - } - } - // At this stage, either we went through full init successfully, or didn't need to - r = LIBUSB_SUCCESS; - -init_exit: // Holds semaphore here. - if (!concurrent_usage && r != LIBUSB_SUCCESS) { // First init failed? - exit_dllimports(); - - if (driver_handle != INVALID_HANDLE_VALUE) { - UkwCloseDriver(driver_handle); - driver_handle = INVALID_HANDLE_VALUE; - } - } - - if (r != LIBUSB_SUCCESS) - --concurrent_usage; // Not expected to call libusb_exit if we failed. - - ReleaseSemaphore(semaphore, 1, NULL); // increase count back to 1 - CloseHandle(semaphore); - return r; -} - -static void wince_exit(struct libusb_context *ctx) -{ - HANDLE semaphore; - TCHAR sem_name[11 + 8 + 1]; // strlen("libusb_init") + (32-bit hex PID) + '\0' - UNUSED(ctx); - - _stprintf(sem_name, _T("libusb_init%08X"), (unsigned int)(GetCurrentProcessId() & 0xFFFFFFFF)); - semaphore = CreateSemaphore(NULL, 1, 1, sem_name); - if (semaphore == NULL) - return; - - // A successful wait brings our semaphore count to 0 (unsignaled) - // => any concurent wait stalls until the semaphore release - if (WaitForSingleObject(semaphore, INFINITE) != WAIT_OBJECT_0) { - CloseHandle(semaphore); - return; - } - - // Only works if exits and inits are balanced exactly - if (--concurrent_usage < 0) { // Last exit - exit_dllimports(); - - if (driver_handle != INVALID_HANDLE_VALUE) { - UkwCloseDriver(driver_handle); - driver_handle = INVALID_HANDLE_VALUE; - } - } - - ReleaseSemaphore(semaphore, 1, NULL); // increase count back to 1 - CloseHandle(semaphore); -} - -static int wince_get_device_list( - struct libusb_context *ctx, - struct discovered_devs **discdevs) -{ - UKW_DEVICE devices[MAX_DEVICE_COUNT]; - struct discovered_devs *new_devices = *discdevs; - DWORD count = 0, i; - struct libusb_device *dev = NULL; - unsigned char bus_addr, dev_addr; - unsigned long session_id; - BOOL success; - DWORD release_list_offset = 0; - int r = LIBUSB_SUCCESS; - - success = UkwGetDeviceList(driver_handle, devices, MAX_DEVICE_COUNT, &count); - if (!success) { - int libusbErr = translate_driver_error(GetLastError()); - usbi_err(ctx, "could not get devices: %s", windows_error_str(0)); - return libusbErr; - } - - for (i = 0; i < count; ++i) { - release_list_offset = i; - success = UkwGetDeviceAddress(devices[i], &bus_addr, &dev_addr, &session_id); - if (!success) { - r = translate_driver_error(GetLastError()); - usbi_err(ctx, "could not get device address for %u: %s", (unsigned int)i, windows_error_str(0)); - goto err_out; - } - - dev = usbi_get_device_by_session_id(ctx, session_id); - if (dev) { - usbi_dbg("using existing device for %u/%u (session %lu)", - bus_addr, dev_addr, session_id); - // Release just this element in the device list (as we already hold a - // reference to it). - UkwReleaseDeviceList(driver_handle, &devices[i], 1); - release_list_offset++; - } else { - usbi_dbg("allocating new device for %u/%u (session %lu)", - bus_addr, dev_addr, session_id); - dev = usbi_alloc_device(ctx, session_id); - if (!dev) { - r = LIBUSB_ERROR_NO_MEM; - goto err_out; - } - - r = init_device(dev, devices[i], bus_addr, dev_addr); - if (r < 0) - goto err_out; - - r = usbi_sanitize_device(dev); - if (r < 0) - goto err_out; - } - - new_devices = discovered_devs_append(new_devices, dev); - if (!new_devices) { - r = LIBUSB_ERROR_NO_MEM; - goto err_out; - } - - libusb_unref_device(dev); - } - - *discdevs = new_devices; - return r; -err_out: - *discdevs = new_devices; - libusb_unref_device(dev); - // Release the remainder of the unprocessed device list. - // The devices added to new_devices already will still be passed up to libusb, - // which can dispose of them at its leisure. - UkwReleaseDeviceList(driver_handle, &devices[release_list_offset], count - release_list_offset); - return r; -} - -static int wince_open(struct libusb_device_handle *handle) -{ - // Nothing to do to open devices as a handle to it has - // been retrieved by wince_get_device_list - return LIBUSB_SUCCESS; -} - -static void wince_close(struct libusb_device_handle *handle) -{ - // Nothing to do as wince_open does nothing. -} - -static int wince_get_device_descriptor( - struct libusb_device *device, - unsigned char *buffer, int *host_endian) -{ - struct wince_device_priv *priv = _device_priv(device); - - *host_endian = 1; - memcpy(buffer, &priv->desc, DEVICE_DESC_LENGTH); - return LIBUSB_SUCCESS; -} - -static int wince_get_active_config_descriptor( - struct libusb_device *device, - unsigned char *buffer, size_t len, int *host_endian) -{ - struct wince_device_priv *priv = _device_priv(device); - DWORD actualSize = len; - - *host_endian = 0; - if (!UkwGetConfigDescriptor(priv->dev, UKW_ACTIVE_CONFIGURATION, buffer, len, &actualSize)) - return translate_driver_error(GetLastError()); - - return actualSize; -} - -static int wince_get_config_descriptor( - struct libusb_device *device, - uint8_t config_index, - unsigned char *buffer, size_t len, int *host_endian) -{ - struct wince_device_priv *priv = _device_priv(device); - DWORD actualSize = len; - - *host_endian = 0; - if (!UkwGetConfigDescriptor(priv->dev, config_index, buffer, len, &actualSize)) - return translate_driver_error(GetLastError()); - - return actualSize; -} - -static int wince_get_configuration( - struct libusb_device_handle *handle, - int *config) -{ - struct wince_device_priv *priv = _device_priv(handle->dev); - UCHAR cv = 0; - - if (!UkwGetConfig(priv->dev, &cv)) - return translate_driver_error(GetLastError()); - - (*config) = cv; - return LIBUSB_SUCCESS; -} - -static int wince_set_configuration( - struct libusb_device_handle *handle, - int config) -{ - struct wince_device_priv *priv = _device_priv(handle->dev); - // Setting configuration 0 places the device in Address state. - // This should correspond to the "unconfigured state" required by - // libusb when the specified configuration is -1. - UCHAR cv = (config < 0) ? 0 : config; - if (!UkwSetConfig(priv->dev, cv)) - return translate_driver_error(GetLastError()); - - return LIBUSB_SUCCESS; -} - -static int wince_claim_interface( - struct libusb_device_handle *handle, - int interface_number) -{ - struct wince_device_priv *priv = _device_priv(handle->dev); - - if (!UkwClaimInterface(priv->dev, interface_number)) - return translate_driver_error(GetLastError()); - - return LIBUSB_SUCCESS; -} - -static int wince_release_interface( - struct libusb_device_handle *handle, - int interface_number) -{ - struct wince_device_priv *priv = _device_priv(handle->dev); - - if (!UkwSetInterfaceAlternateSetting(priv->dev, interface_number, 0)) - return translate_driver_error(GetLastError()); - - if (!UkwReleaseInterface(priv->dev, interface_number)) - return translate_driver_error(GetLastError()); - - return LIBUSB_SUCCESS; -} - -static int wince_set_interface_altsetting( - struct libusb_device_handle *handle, - int interface_number, int altsetting) -{ - struct wince_device_priv *priv = _device_priv(handle->dev); - - if (!UkwSetInterfaceAlternateSetting(priv->dev, interface_number, altsetting)) - return translate_driver_error(GetLastError()); - - return LIBUSB_SUCCESS; -} - -static int wince_clear_halt( - struct libusb_device_handle *handle, - unsigned char endpoint) -{ - struct wince_device_priv *priv = _device_priv(handle->dev); - - if (!UkwClearHaltHost(priv->dev, endpoint)) - return translate_driver_error(GetLastError()); - - if (!UkwClearHaltDevice(priv->dev, endpoint)) - return translate_driver_error(GetLastError()); - - return LIBUSB_SUCCESS; -} - -static int wince_reset_device( - struct libusb_device_handle *handle) -{ - struct wince_device_priv *priv = _device_priv(handle->dev); - - if (!UkwResetDevice(priv->dev)) - return translate_driver_error(GetLastError()); - - return LIBUSB_SUCCESS; -} - -static int wince_kernel_driver_active( - struct libusb_device_handle *handle, - int interface_number) -{ - struct wince_device_priv *priv = _device_priv(handle->dev); - BOOL result = FALSE; - - if (!UkwKernelDriverActive(priv->dev, interface_number, &result)) - return translate_driver_error(GetLastError()); - - return result ? 1 : 0; -} - -static int wince_detach_kernel_driver( - struct libusb_device_handle *handle, - int interface_number) -{ - struct wince_device_priv *priv = _device_priv(handle->dev); - - if (!UkwDetachKernelDriver(priv->dev, interface_number)) - return translate_driver_error(GetLastError()); - - return LIBUSB_SUCCESS; -} - -static int wince_attach_kernel_driver( - struct libusb_device_handle *handle, - int interface_number) -{ - struct wince_device_priv *priv = _device_priv(handle->dev); - - if (!UkwAttachKernelDriver(priv->dev, interface_number)) - return translate_driver_error(GetLastError()); - - return LIBUSB_SUCCESS; -} - -static void wince_destroy_device(struct libusb_device *dev) -{ - struct wince_device_priv *priv = _device_priv(dev); - - UkwReleaseDeviceList(driver_handle, &priv->dev, 1); -} - -static void wince_clear_transfer_priv(struct usbi_transfer *itransfer) -{ - struct wince_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - - usbi_close(transfer_priv->pollable_fd.fd); - transfer_priv->pollable_fd = INVALID_WINFD; -} - -static int wince_cancel_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct wince_device_priv *priv = _device_priv(transfer->dev_handle->dev); - struct wince_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - - if (!UkwCancelTransfer(priv->dev, transfer_priv->pollable_fd.overlapped, UKW_TF_NO_WAIT)) - return translate_driver_error(GetLastError()); - - return LIBUSB_SUCCESS; -} - -static int wince_submit_control_or_bulk_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct wince_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct wince_device_priv *priv = _device_priv(transfer->dev_handle->dev); - BOOL direction_in, ret; - struct winfd wfd; - DWORD flags; - PUKW_CONTROL_HEADER setup = NULL; - const BOOL control_transfer = transfer->type == LIBUSB_TRANSFER_TYPE_CONTROL; - int r; - - if (control_transfer) { - setup = (PUKW_CONTROL_HEADER) transfer->buffer; - direction_in = setup->bmRequestType & LIBUSB_ENDPOINT_IN; - } else { - direction_in = transfer->endpoint & LIBUSB_ENDPOINT_IN; - } - flags = direction_in ? UKW_TF_IN_TRANSFER : UKW_TF_OUT_TRANSFER; - flags |= UKW_TF_SHORT_TRANSFER_OK; - - wfd = usbi_create_fd(); - if (wfd.fd < 0) - return LIBUSB_ERROR_NO_MEM; - - r = usbi_add_pollfd(ctx, wfd.fd, direction_in ? POLLIN : POLLOUT); - if (r) { - usbi_close(wfd.fd); - return r; - } - - transfer_priv->pollable_fd = wfd; - - if (control_transfer) { - // Split out control setup header and data buffer - DWORD bufLen = transfer->length - sizeof(UKW_CONTROL_HEADER); - PVOID buf = (PVOID) &transfer->buffer[sizeof(UKW_CONTROL_HEADER)]; - - ret = UkwIssueControlTransfer(priv->dev, flags, setup, buf, bufLen, &transfer->actual_length, wfd.overlapped); - } else { - ret = UkwIssueBulkTransfer(priv->dev, flags, transfer->endpoint, transfer->buffer, - transfer->length, &transfer->actual_length, wfd.overlapped); - } - - if (!ret) { - int libusbErr = translate_driver_error(GetLastError()); - usbi_err(ctx, "UkwIssue%sTransfer failed: error %u", - control_transfer ? "Control" : "Bulk", (unsigned int)GetLastError()); - usbi_remove_pollfd(ctx, wfd.fd); - usbi_close(wfd.fd); - transfer_priv->pollable_fd = INVALID_WINFD; - return libusbErr; - } - - - return LIBUSB_SUCCESS; -} - -static int wince_submit_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - return wince_submit_control_or_bulk_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - return LIBUSB_ERROR_NOT_SUPPORTED; - default: - usbi_err(TRANSFER_CTX(transfer), "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -static void wince_transfer_callback( - struct usbi_transfer *itransfer, - uint32_t io_result, uint32_t io_size) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct wince_transfer_priv *transfer_priv = (struct wince_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct wince_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int status; - - usbi_dbg("handling I/O completion with errcode %u", io_result); - - if (io_result == ERROR_NOT_SUPPORTED && - transfer->type != LIBUSB_TRANSFER_TYPE_CONTROL) { - /* For functional stalls, the WinCE USB layer (and therefore the USB Kernel Wrapper - * Driver) will report USB_ERROR_STALL/ERROR_NOT_SUPPORTED in situations where the - * endpoint isn't actually stalled. - * - * One example of this is that some devices will occasionally fail to reply to an IN - * token. The WinCE USB layer carries on with the transaction until it is completed - * (or cancelled) but then completes it with USB_ERROR_STALL. - * - * This code therefore needs to confirm that there really is a stall error, by both - * checking the pipe status and requesting the endpoint status from the device. - */ - BOOL halted = FALSE; - usbi_dbg("checking I/O completion with errcode ERROR_NOT_SUPPORTED is really a stall"); - if (UkwIsPipeHalted(priv->dev, transfer->endpoint, &halted)) { - /* Pipe status retrieved, so now request endpoint status by sending a GET_STATUS - * control request to the device. This is done synchronously, which is a bit - * naughty, but this is a special corner case. - */ - WORD wStatus = 0; - DWORD written = 0; - UKW_CONTROL_HEADER ctrlHeader; - ctrlHeader.bmRequestType = LIBUSB_REQUEST_TYPE_STANDARD | - LIBUSB_ENDPOINT_IN | LIBUSB_RECIPIENT_ENDPOINT; - ctrlHeader.bRequest = LIBUSB_REQUEST_GET_STATUS; - ctrlHeader.wValue = 0; - ctrlHeader.wIndex = transfer->endpoint; - ctrlHeader.wLength = sizeof(wStatus); - if (UkwIssueControlTransfer(priv->dev, - UKW_TF_IN_TRANSFER | UKW_TF_SEND_TO_ENDPOINT, - &ctrlHeader, &wStatus, sizeof(wStatus), &written, NULL)) { - if (written == sizeof(wStatus) && - (wStatus & STATUS_HALT_FLAG) == 0) { - if (!halted || UkwClearHaltHost(priv->dev, transfer->endpoint)) { - usbi_dbg("Endpoint doesn't appear to be stalled, overriding error with success"); - io_result = ERROR_SUCCESS; - } else { - usbi_dbg("Endpoint doesn't appear to be stalled, but the host is halted, changing error"); - io_result = ERROR_IO_DEVICE; - } - } - } - } - } - - switch(io_result) { - case ERROR_SUCCESS: - itransfer->transferred += io_size; - status = LIBUSB_TRANSFER_COMPLETED; - break; - case ERROR_CANCELLED: - usbi_dbg("detected transfer cancel"); - status = LIBUSB_TRANSFER_CANCELLED; - break; - case ERROR_NOT_SUPPORTED: - case ERROR_GEN_FAILURE: - usbi_dbg("detected endpoint stall"); - status = LIBUSB_TRANSFER_STALL; - break; - case ERROR_SEM_TIMEOUT: - usbi_dbg("detected semaphore timeout"); - status = LIBUSB_TRANSFER_TIMED_OUT; - break; - case ERROR_OPERATION_ABORTED: - usbi_dbg("detected operation aborted"); - status = LIBUSB_TRANSFER_CANCELLED; - break; - default: - usbi_err(ITRANSFER_CTX(itransfer), "detected I/O error: %s", windows_error_str(io_result)); - status = LIBUSB_TRANSFER_ERROR; - break; - } - - wince_clear_transfer_priv(itransfer); - if (status == LIBUSB_TRANSFER_CANCELLED) - usbi_handle_transfer_cancellation(itransfer); - else - usbi_handle_transfer_completion(itransfer, (enum libusb_transfer_status)status); -} - -static void wince_handle_callback( - struct usbi_transfer *itransfer, - uint32_t io_result, uint32_t io_size) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - wince_transfer_callback (itransfer, io_result, io_size); - break; - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - break; - default: - usbi_err(ITRANSFER_CTX(itransfer), "unknown endpoint type %d", transfer->type); - } -} - -static int wince_handle_events( - struct libusb_context *ctx, - struct pollfd *fds, POLL_NFDS_TYPE nfds, int num_ready) -{ - struct wince_transfer_priv* transfer_priv = NULL; - POLL_NFDS_TYPE i = 0; - BOOL found = FALSE; - struct usbi_transfer *itransfer; - DWORD io_size, io_result; - int r = LIBUSB_SUCCESS; - - usbi_mutex_lock(&ctx->open_devs_lock); - for (i = 0; i < nfds && num_ready > 0; i++) { - - usbi_dbg("checking fd %d with revents = %04x", fds[i].fd, fds[i].revents); - - if (!fds[i].revents) - continue; - - num_ready--; - - // Because a Windows OVERLAPPED is used for poll emulation, - // a pollable fd is created and stored with each transfer - usbi_mutex_lock(&ctx->flying_transfers_lock); - list_for_each_entry(itransfer, &ctx->flying_transfers, list, struct usbi_transfer) { - transfer_priv = usbi_transfer_get_os_priv(itransfer); - if (transfer_priv->pollable_fd.fd == fds[i].fd) { - found = TRUE; - break; - } - } - usbi_mutex_unlock(&ctx->flying_transfers_lock); - - if (found && HasOverlappedIoCompleted(transfer_priv->pollable_fd.overlapped)) { - io_result = (DWORD)transfer_priv->pollable_fd.overlapped->Internal; - io_size = (DWORD)transfer_priv->pollable_fd.overlapped->InternalHigh; - usbi_remove_pollfd(ctx, transfer_priv->pollable_fd.fd); - // let handle_callback free the event using the transfer wfd - // If you don't use the transfer wfd, you run a risk of trying to free a - // newly allocated wfd that took the place of the one from the transfer. - wince_handle_callback(itransfer, io_result, io_size); - } else if (found) { - usbi_err(ctx, "matching transfer for fd %d has not completed", fds[i]); - r = LIBUSB_ERROR_OTHER; - break; - } else { - usbi_err(ctx, "could not find a matching transfer for fd %d", fds[i]); - r = LIBUSB_ERROR_NOT_FOUND; - break; - } - } - usbi_mutex_unlock(&ctx->open_devs_lock); - - return r; -} - -/* - * Monotonic and real time functions - */ -static int wince_clock_gettime(int clk_id, struct timespec *tp) -{ - LARGE_INTEGER hires_counter; - ULARGE_INTEGER rtime; - FILETIME filetime; - SYSTEMTIME st; - - switch(clk_id) { - case USBI_CLOCK_MONOTONIC: - if (hires_frequency != 0 && QueryPerformanceCounter(&hires_counter)) { - tp->tv_sec = (long)(hires_counter.QuadPart / hires_frequency); - tp->tv_nsec = (long)(((hires_counter.QuadPart % hires_frequency) / 1000) * hires_ticks_to_ps); - return LIBUSB_SUCCESS; - } - // Fall through and return real-time if monotonic read failed or was not detected @ init - case USBI_CLOCK_REALTIME: - // We follow http://msdn.microsoft.com/en-us/library/ms724928%28VS.85%29.aspx - // with a predef epoch time to have an epoch that starts at 1970.01.01 00:00 - // Note however that our resolution is bounded by the Windows system time - // functions and is at best of the order of 1 ms (or, usually, worse) - GetSystemTime(&st); - SystemTimeToFileTime(&st, &filetime); - rtime.LowPart = filetime.dwLowDateTime; - rtime.HighPart = filetime.dwHighDateTime; - rtime.QuadPart -= EPOCH_TIME; - tp->tv_sec = (long)(rtime.QuadPart / 10000000); - tp->tv_nsec = (long)((rtime.QuadPart % 10000000)*100); - return LIBUSB_SUCCESS; - default: - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -const struct usbi_os_backend usbi_backend = { - "Windows CE", - 0, - wince_init, - wince_exit, - NULL, /* set_option() */ - - wince_get_device_list, - NULL, /* hotplug_poll */ - wince_open, - wince_close, - - wince_get_device_descriptor, - wince_get_active_config_descriptor, - wince_get_config_descriptor, - NULL, /* get_config_descriptor_by_value() */ - - wince_get_configuration, - wince_set_configuration, - wince_claim_interface, - wince_release_interface, - - wince_set_interface_altsetting, - wince_clear_halt, - wince_reset_device, - - NULL, /* alloc_streams */ - NULL, /* free_streams */ - - NULL, /* dev_mem_alloc() */ - NULL, /* dev_mem_free() */ - - wince_kernel_driver_active, - wince_detach_kernel_driver, - wince_attach_kernel_driver, - - wince_destroy_device, - - wince_submit_transfer, - wince_cancel_transfer, - wince_clear_transfer_priv, - - wince_handle_events, - NULL, /* handle_transfer_completion() */ - - wince_clock_gettime, - 0, - sizeof(struct wince_device_priv), - 0, - sizeof(struct wince_transfer_priv), -}; diff --git a/Externals/libusb/libusb/os/wince_usb.h b/Externals/libusb/libusb/os/wince_usb.h deleted file mode 100644 index edcb9fcc4005..000000000000 --- a/Externals/libusb/libusb/os/wince_usb.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Windows CE backend for libusb 1.0 - * Copyright © 2011-2013 RealVNC Ltd. - * Portions taken from Windows backend, which is - * Copyright © 2009-2010 Pete Batard - * With contributions from Michael Plante, Orin Eman et al. - * Parts of this code adapted from libusb-win32-v1 by Stephan Meyer - * Major code testing contribution by Xiaofan Chen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ -#pragma once - -#include "windows_common.h" - -#include -#include "poll_windows.h" - -#define MAX_DEVICE_COUNT 256 - -// This is a modified dump of the types in the ceusbkwrapper.h library header -// with functions transformed into extern pointers. -// -// This backend dynamically loads ceusbkwrapper.dll and doesn't include -// ceusbkwrapper.h directly to simplify the build process. The kernel -// side wrapper driver is built using the platform image build tools, -// which makes it difficult to reference directly from the libusb build -// system. -struct UKW_DEVICE_PRIV; -typedef struct UKW_DEVICE_PRIV *UKW_DEVICE; -typedef UKW_DEVICE *PUKW_DEVICE, *LPUKW_DEVICE; - -typedef struct { - UINT8 bLength; - UINT8 bDescriptorType; - UINT16 bcdUSB; - UINT8 bDeviceClass; - UINT8 bDeviceSubClass; - UINT8 bDeviceProtocol; - UINT8 bMaxPacketSize0; - UINT16 idVendor; - UINT16 idProduct; - UINT16 bcdDevice; - UINT8 iManufacturer; - UINT8 iProduct; - UINT8 iSerialNumber; - UINT8 bNumConfigurations; -} UKW_DEVICE_DESCRIPTOR, *PUKW_DEVICE_DESCRIPTOR, *LPUKW_DEVICE_DESCRIPTOR; - -typedef struct { - UINT8 bmRequestType; - UINT8 bRequest; - UINT16 wValue; - UINT16 wIndex; - UINT16 wLength; -} UKW_CONTROL_HEADER, *PUKW_CONTROL_HEADER, *LPUKW_CONTROL_HEADER; - -// Collection of flags which can be used when issuing transfer requests -/* Indicates that the transfer direction is 'in' */ -#define UKW_TF_IN_TRANSFER 0x00000001 -/* Indicates that the transfer direction is 'out' */ -#define UKW_TF_OUT_TRANSFER 0x00000000 -/* Specifies that the transfer should complete as soon as possible, - * even if no OVERLAPPED structure has been provided. */ -#define UKW_TF_NO_WAIT 0x00000100 -/* Indicates that transfers shorter than the buffer are ok */ -#define UKW_TF_SHORT_TRANSFER_OK 0x00000200 -#define UKW_TF_SEND_TO_DEVICE 0x00010000 -#define UKW_TF_SEND_TO_INTERFACE 0x00020000 -#define UKW_TF_SEND_TO_ENDPOINT 0x00040000 -/* Don't block when waiting for memory allocations */ -#define UKW_TF_DONT_BLOCK_FOR_MEM 0x00080000 - -/* Value to use when dealing with configuration values, such as UkwGetConfigDescriptor, - * to specify the currently active configuration for the device. */ -#define UKW_ACTIVE_CONFIGURATION -1 - -DLL_DECLARE_HANDLE(ceusbkwrapper); -DLL_DECLARE_FUNC(WINAPI, HANDLE, UkwOpenDriver, ()); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwGetDeviceList, (HANDLE, LPUKW_DEVICE, DWORD, LPDWORD)); -DLL_DECLARE_FUNC(WINAPI, void, UkwReleaseDeviceList, (HANDLE, LPUKW_DEVICE, DWORD)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwGetDeviceAddress, (UKW_DEVICE, unsigned char*, unsigned char*, unsigned long*)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwGetDeviceDescriptor, (UKW_DEVICE, LPUKW_DEVICE_DESCRIPTOR)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwGetConfigDescriptor, (UKW_DEVICE, DWORD, LPVOID, DWORD, LPDWORD)); -DLL_DECLARE_FUNC(WINAPI, void, UkwCloseDriver, (HANDLE)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwCancelTransfer, (UKW_DEVICE, LPOVERLAPPED, DWORD)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwIssueControlTransfer, (UKW_DEVICE, DWORD, LPUKW_CONTROL_HEADER, LPVOID, DWORD, LPDWORD, LPOVERLAPPED)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwClaimInterface, (UKW_DEVICE, DWORD)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwReleaseInterface, (UKW_DEVICE, DWORD)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwSetInterfaceAlternateSetting, (UKW_DEVICE, DWORD, DWORD)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwClearHaltHost, (UKW_DEVICE, UCHAR)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwClearHaltDevice, (UKW_DEVICE, UCHAR)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwGetConfig, (UKW_DEVICE, PUCHAR)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwSetConfig, (UKW_DEVICE, UCHAR)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwResetDevice, (UKW_DEVICE)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwKernelDriverActive, (UKW_DEVICE, DWORD, PBOOL)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwAttachKernelDriver, (UKW_DEVICE, DWORD)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwDetachKernelDriver, (UKW_DEVICE, DWORD)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwIssueBulkTransfer, (UKW_DEVICE, DWORD, UCHAR, LPVOID, DWORD, LPDWORD, LPOVERLAPPED)); -DLL_DECLARE_FUNC(WINAPI, BOOL, UkwIsPipeHalted, (UKW_DEVICE, UCHAR, LPBOOL)); - -// Used to determine if an endpoint status really is halted on a failed transfer. -#define STATUS_HALT_FLAG 0x1 - -struct wince_device_priv { - UKW_DEVICE dev; - UKW_DEVICE_DESCRIPTOR desc; -}; - -struct wince_transfer_priv { - struct winfd pollable_fd; - uint8_t interface_number; -}; - diff --git a/Externals/libusb/libusb/os/windows_common.h b/Externals/libusb/libusb/os/windows_common.h deleted file mode 100644 index b1725c2e3261..000000000000 --- a/Externals/libusb/libusb/os/windows_common.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Windows backend common header for libusb 1.0 - * - * This file brings together header code common between - * the desktop Windows and Windows CE backends. - * Copyright © 2012-2013 RealVNC Ltd. - * Copyright © 2009-2012 Pete Batard - * With contributions from Michael Plante, Orin Eman et al. - * Parts of this code adapted from libusb-win32-v1 by Stephan Meyer - * Major code testing contribution by Xiaofan Chen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#pragma once - -// Windows API default is uppercase - ugh! -#if !defined(bool) -#define bool BOOL -#endif -#if !defined(true) -#define true TRUE -#endif -#if !defined(false) -#define false FALSE -#endif - -#define EPOCH_TIME UINT64_C(116444736000000000) // 1970.01.01 00:00:000 in MS Filetime - -#if defined(__CYGWIN__ ) -#define _stricmp strcasecmp -#define _strdup strdup -// _beginthreadex is MSVCRT => unavailable for cygwin. Fallback to using CreateThread -#define _beginthreadex(a, b, c, d, e, f) CreateThread(a, b, (LPTHREAD_START_ROUTINE)c, d, e, (LPDWORD)f) -#endif - -#define safe_free(p) do {if (p != NULL) {free((void *)p); p = NULL;}} while (0) - -#ifndef ARRAYSIZE -#define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0])) -#endif - -#define ERR_BUFFER_SIZE 256 - -/* - * API macros - leveraged from libusb-win32 1.x - */ -#ifndef _WIN32_WCE -#define DLL_STRINGIFY(s) #s -#define DLL_LOAD_LIBRARY(name) LoadLibraryA(DLL_STRINGIFY(name)) -#else -#define DLL_STRINGIFY(s) L#s -#define DLL_LOAD_LIBRARY(name) LoadLibrary(DLL_STRINGIFY(name)) -#endif - -/* - * Macros for handling DLL themselves - */ -#define DLL_HANDLE_NAME(name) __dll_##name##_handle - -#define DLL_DECLARE_HANDLE(name) \ - static HMODULE DLL_HANDLE_NAME(name) = NULL - -#define DLL_GET_HANDLE(name) \ - do { \ - DLL_HANDLE_NAME(name) = DLL_LOAD_LIBRARY(name); \ - if (!DLL_HANDLE_NAME(name)) \ - return FALSE; \ - } while (0) - -#define DLL_FREE_HANDLE(name) \ - do { \ - if (DLL_HANDLE_NAME(name)) { \ - FreeLibrary(DLL_HANDLE_NAME(name)); \ - DLL_HANDLE_NAME(name) = NULL; \ - } \ - } while (0) - - -/* - * Macros for handling functions within a DLL - */ -#define DLL_FUNC_NAME(name) __dll_##name##_func_t - -#define DLL_DECLARE_FUNC_PREFIXNAME(api, ret, prefixname, name, args) \ - typedef ret (api * DLL_FUNC_NAME(name))args; \ - static DLL_FUNC_NAME(name) prefixname = NULL - -#define DLL_DECLARE_FUNC(api, ret, name, args) \ - DLL_DECLARE_FUNC_PREFIXNAME(api, ret, name, name, args) -#define DLL_DECLARE_FUNC_PREFIXED(api, ret, prefix, name, args) \ - DLL_DECLARE_FUNC_PREFIXNAME(api, ret, prefix##name, name, args) - -#define DLL_LOAD_FUNC_PREFIXNAME(dll, prefixname, name, ret_on_failure) \ - do { \ - HMODULE h = DLL_HANDLE_NAME(dll); \ - prefixname = (DLL_FUNC_NAME(name))GetProcAddress(h, \ - DLL_STRINGIFY(name)); \ - if (prefixname) \ - break; \ - prefixname = (DLL_FUNC_NAME(name))GetProcAddress(h, \ - DLL_STRINGIFY(name) DLL_STRINGIFY(A)); \ - if (prefixname) \ - break; \ - prefixname = (DLL_FUNC_NAME(name))GetProcAddress(h, \ - DLL_STRINGIFY(name) DLL_STRINGIFY(W)); \ - if (prefixname) \ - break; \ - if (ret_on_failure) \ - return FALSE; \ - } while (0) - -#define DLL_LOAD_FUNC(dll, name, ret_on_failure) \ - DLL_LOAD_FUNC_PREFIXNAME(dll, name, name, ret_on_failure) -#define DLL_LOAD_FUNC_PREFIXED(dll, prefix, name, ret_on_failure) \ - DLL_LOAD_FUNC_PREFIXNAME(dll, prefix##name, name, ret_on_failure) diff --git a/Externals/libusb/libusb/os/windows_nt_common.c b/Externals/libusb/libusb/os/windows_nt_common.c deleted file mode 100644 index 7ead83db5988..000000000000 --- a/Externals/libusb/libusb/os/windows_nt_common.c +++ /dev/null @@ -1,1009 +0,0 @@ -/* - * windows backend for libusb 1.0 - * Copyright © 2009-2012 Pete Batard - * With contributions from Michael Plante, Orin Eman et al. - * Parts of this code adapted from libusb-win32-v1 by Stephan Meyer - * HID Reports IOCTLs inspired from HIDAPI by Alan Ott, Signal 11 Software - * Hash table functions adapted from glibc, by Ulrich Drepper et al. - * Major code testing contribution by Xiaofan Chen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include -#include - -#include "libusbi.h" -#include "windows_common.h" -#include "windows_nt_common.h" - -// Public -BOOL (WINAPI *pCancelIoEx)(HANDLE, LPOVERLAPPED); -enum windows_version windows_version = WINDOWS_UNDEFINED; - - // Global variables for init/exit -static unsigned int init_count = 0; -static bool usbdk_available = false; - -// Global variables for clock_gettime mechanism -static uint64_t hires_ticks_to_ps; -static uint64_t hires_frequency; - -#define TIMER_REQUEST_RETRY_MS 100 -#define WM_TIMER_REQUEST (WM_USER + 1) -#define WM_TIMER_EXIT (WM_USER + 2) - -// used for monotonic clock_gettime() -struct timer_request { - struct timespec *tp; - HANDLE event; -}; - -// Timer thread -static HANDLE timer_thread = NULL; -static DWORD timer_thread_id = 0; - -/* Kernel32 dependencies */ -DLL_DECLARE_HANDLE(Kernel32); -/* This call is only available from XP SP2 */ -DLL_DECLARE_FUNC_PREFIXED(WINAPI, BOOL, p, IsWow64Process, (HANDLE, PBOOL)); - -/* User32 dependencies */ -DLL_DECLARE_HANDLE(User32); -DLL_DECLARE_FUNC_PREFIXED(WINAPI, BOOL, p, GetMessageA, (LPMSG, HWND, UINT, UINT)); -DLL_DECLARE_FUNC_PREFIXED(WINAPI, BOOL, p, PeekMessageA, (LPMSG, HWND, UINT, UINT, UINT)); -DLL_DECLARE_FUNC_PREFIXED(WINAPI, BOOL, p, PostThreadMessageA, (DWORD, UINT, WPARAM, LPARAM)); - -static unsigned __stdcall windows_clock_gettime_threaded(void *param); - -/* -* Converts a windows error to human readable string -* uses retval as errorcode, or, if 0, use GetLastError() -*/ -#if defined(ENABLE_LOGGING) -const char *windows_error_str(DWORD error_code) -{ - static char err_string[ERR_BUFFER_SIZE]; - - DWORD size; - int len; - - if (error_code == 0) - error_code = GetLastError(); - - len = sprintf(err_string, "[%u] ", (unsigned int)error_code); - - // Translate codes returned by SetupAPI. The ones we are dealing with are either - // in 0x0000xxxx or 0xE000xxxx and can be distinguished from standard error codes. - // See http://msdn.microsoft.com/en-us/library/windows/hardware/ff545011.aspx - switch (error_code & 0xE0000000) { - case 0: - error_code = HRESULT_FROM_WIN32(error_code); // Still leaves ERROR_SUCCESS unmodified - break; - case 0xE0000000: - error_code = 0x80000000 | (FACILITY_SETUPAPI << 16) | (error_code & 0x0000FFFF); - break; - default: - break; - } - - size = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, error_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - &err_string[len], ERR_BUFFER_SIZE - len, NULL); - if (size == 0) { - DWORD format_error = GetLastError(); - if (format_error) - snprintf(err_string, ERR_BUFFER_SIZE, - "Windows error code %u (FormatMessage error code %u)", - (unsigned int)error_code, (unsigned int)format_error); - else - snprintf(err_string, ERR_BUFFER_SIZE, "Unknown error code %u", (unsigned int)error_code); - } else { - // Remove CRLF from end of message, if present - size_t pos = len + size - 2; - if (err_string[pos] == '\r') - err_string[pos] = '\0'; - } - - return err_string; -} -#endif - -static inline struct windows_context_priv *_context_priv(struct libusb_context *ctx) -{ - return (struct windows_context_priv *)ctx->os_priv; -} - -/* Hash table functions - modified From glibc 2.3.2: - [Aho,Sethi,Ullman] Compilers: Principles, Techniques and Tools, 1986 - [Knuth] The Art of Computer Programming, part 3 (6.4) */ - -#define HTAB_SIZE 1021UL // *MUST* be a prime number!! - -typedef struct htab_entry { - unsigned long used; - char *str; -} htab_entry; - -static htab_entry *htab_table = NULL; -static usbi_mutex_t htab_mutex; -static unsigned long htab_filled; - -/* Before using the hash table we must allocate memory for it. - We allocate one element more as the found prime number says. - This is done for more effective indexing as explained in the - comment for the hash function. */ -static bool htab_create(struct libusb_context *ctx) -{ - if (htab_table != NULL) { - usbi_err(ctx, "hash table already allocated"); - return true; - } - - // Create a mutex - usbi_mutex_init(&htab_mutex); - - usbi_dbg("using %lu entries hash table", HTAB_SIZE); - htab_filled = 0; - - // allocate memory and zero out. - htab_table = calloc(HTAB_SIZE + 1, sizeof(htab_entry)); - if (htab_table == NULL) { - usbi_err(ctx, "could not allocate space for hash table"); - return false; - } - - return true; -} - -/* After using the hash table it has to be destroyed. */ -static void htab_destroy(void) -{ - unsigned long i; - - if (htab_table == NULL) - return; - - for (i = 0; i < HTAB_SIZE; i++) - free(htab_table[i].str); - - safe_free(htab_table); - - usbi_mutex_destroy(&htab_mutex); -} - -/* This is the search function. It uses double hashing with open addressing. - We use a trick to speed up the lookup. The table is created with one - more element available. This enables us to use the index zero special. - This index will never be used because we store the first hash index in - the field used where zero means not used. Every other value means used. - The used field can be used as a first fast comparison for equality of - the stored and the parameter value. This helps to prevent unnecessary - expensive calls of strcmp. */ -unsigned long htab_hash(const char *str) -{ - unsigned long hval, hval2; - unsigned long idx; - unsigned long r = 5381; - int c; - const char *sz = str; - - if (str == NULL) - return 0; - - // Compute main hash value (algorithm suggested by Nokia) - while ((c = *sz++) != 0) - r = ((r << 5) + r) + c; - if (r == 0) - ++r; - - // compute table hash: simply take the modulus - hval = r % HTAB_SIZE; - if (hval == 0) - ++hval; - - // Try the first index - idx = hval; - - // Mutually exclusive access (R/W lock would be better) - usbi_mutex_lock(&htab_mutex); - - if (htab_table[idx].used) { - if ((htab_table[idx].used == hval) && (strcmp(str, htab_table[idx].str) == 0)) - goto out_unlock; // existing hash - - usbi_dbg("hash collision ('%s' vs '%s')", str, htab_table[idx].str); - - // Second hash function, as suggested in [Knuth] - hval2 = 1 + hval % (HTAB_SIZE - 2); - - do { - // Because size is prime this guarantees to step through all available indexes - if (idx <= hval2) - idx = HTAB_SIZE + idx - hval2; - else - idx -= hval2; - - // If we visited all entries leave the loop unsuccessfully - if (idx == hval) - break; - - // If entry is found use it. - if ((htab_table[idx].used == hval) && (strcmp(str, htab_table[idx].str) == 0)) - goto out_unlock; - } while (htab_table[idx].used); - } - - // Not found => New entry - - // If the table is full return an error - if (htab_filled >= HTAB_SIZE) { - usbi_err(NULL, "hash table is full (%lu entries)", HTAB_SIZE); - idx = 0; - goto out_unlock; - } - - htab_table[idx].str = _strdup(str); - if (htab_table[idx].str == NULL) { - usbi_err(NULL, "could not duplicate string for hash table"); - idx = 0; - goto out_unlock; - } - - htab_table[idx].used = hval; - ++htab_filled; - -out_unlock: - usbi_mutex_unlock(&htab_mutex); - - return idx; -} - -/* -* Make a transfer complete synchronously -*/ -void windows_force_sync_completion(OVERLAPPED *overlapped, ULONG size) -{ - overlapped->Internal = STATUS_COMPLETED_SYNCHRONOUSLY; - overlapped->InternalHigh = size; - SetEvent(overlapped->hEvent); -} - -static BOOL windows_init_dlls(void) -{ - DLL_GET_HANDLE(Kernel32); - DLL_LOAD_FUNC_PREFIXED(Kernel32, p, IsWow64Process, FALSE); - pCancelIoEx = (BOOL (WINAPI *)(HANDLE, LPOVERLAPPED)) - GetProcAddress(DLL_HANDLE_NAME(Kernel32), "CancelIoEx"); - usbi_dbg("Will use CancelIo%s for I/O cancellation", pCancelIoEx ? "Ex" : ""); - - DLL_GET_HANDLE(User32); - DLL_LOAD_FUNC_PREFIXED(User32, p, GetMessageA, TRUE); - DLL_LOAD_FUNC_PREFIXED(User32, p, PeekMessageA, TRUE); - DLL_LOAD_FUNC_PREFIXED(User32, p, PostThreadMessageA, TRUE); - - return TRUE; -} - -static void windows_exit_dlls(void) -{ - DLL_FREE_HANDLE(Kernel32); - DLL_FREE_HANDLE(User32); -} - -static bool windows_init_clock(struct libusb_context *ctx) -{ - DWORD_PTR affinity, dummy; - HANDLE event; - LARGE_INTEGER li_frequency; - int i; - - if (QueryPerformanceFrequency(&li_frequency)) { - // The hires frequency can go as high as 4 GHz, so we'll use a conversion - // to picoseconds to compute the tv_nsecs part in clock_gettime - hires_frequency = li_frequency.QuadPart; - hires_ticks_to_ps = UINT64_C(1000000000000) / hires_frequency; - usbi_dbg("hires timer available (Frequency: %"PRIu64" Hz)", hires_frequency); - - // Because QueryPerformanceCounter might report different values when - // running on different cores, we create a separate thread for the timer - // calls, which we glue to the first available core always to prevent timing discrepancies. - if (!GetProcessAffinityMask(GetCurrentProcess(), &affinity, &dummy) || (affinity == 0)) { - usbi_err(ctx, "could not get process affinity: %s", windows_error_str(0)); - return false; - } - - // The process affinity mask is a bitmask where each set bit represents a core on - // which this process is allowed to run, so we find the first set bit - for (i = 0; !(affinity & (DWORD_PTR)(1 << i)); i++); - affinity = (DWORD_PTR)(1 << i); - - usbi_dbg("timer thread will run on core #%d", i); - - event = CreateEvent(NULL, FALSE, FALSE, NULL); - if (event == NULL) { - usbi_err(ctx, "could not create event: %s", windows_error_str(0)); - return false; - } - - timer_thread = (HANDLE)_beginthreadex(NULL, 0, windows_clock_gettime_threaded, (void *)event, - 0, (unsigned int *)&timer_thread_id); - if (timer_thread == NULL) { - usbi_err(ctx, "unable to create timer thread - aborting"); - CloseHandle(event); - return false; - } - - if (!SetThreadAffinityMask(timer_thread, affinity)) - usbi_warn(ctx, "unable to set timer thread affinity, timer discrepancies may arise"); - - // Wait for timer thread to init before continuing. - if (WaitForSingleObject(event, INFINITE) != WAIT_OBJECT_0) { - usbi_err(ctx, "failed to wait for timer thread to become ready - aborting"); - CloseHandle(event); - return false; - } - - CloseHandle(event); - } else { - usbi_dbg("no hires timer available on this platform"); - hires_frequency = 0; - hires_ticks_to_ps = UINT64_C(0); - } - - return true; -} - -static void windows_destroy_clock(void) -{ - if (timer_thread) { - // actually the signal to quit the thread. - if (!pPostThreadMessageA(timer_thread_id, WM_TIMER_EXIT, 0, 0) - || (WaitForSingleObject(timer_thread, INFINITE) != WAIT_OBJECT_0)) { - usbi_dbg("could not wait for timer thread to quit"); - TerminateThread(timer_thread, 1); - // shouldn't happen, but we're destroying - // all objects it might have held anyway. - } - CloseHandle(timer_thread); - timer_thread = NULL; - timer_thread_id = 0; - } -} - -/* Windows version detection */ -static BOOL is_x64(void) -{ - BOOL ret = FALSE; - - // Detect if we're running a 32 or 64 bit system - if (sizeof(uintptr_t) < 8) { - if (pIsWow64Process != NULL) - pIsWow64Process(GetCurrentProcess(), &ret); - } else { - ret = TRUE; - } - - return ret; -} - -static void get_windows_version(void) -{ - OSVERSIONINFOEXA vi, vi2; - const char *arch, *w = NULL; - unsigned major, minor, version; - ULONGLONG major_equal, minor_equal; - BOOL ws; - - windows_version = WINDOWS_UNDEFINED; - - memset(&vi, 0, sizeof(vi)); - vi.dwOSVersionInfoSize = sizeof(vi); - if (!GetVersionExA((OSVERSIONINFOA *)&vi)) { - memset(&vi, 0, sizeof(vi)); - vi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA); - if (!GetVersionExA((OSVERSIONINFOA *)&vi)) - return; - } - - if (vi.dwPlatformId != VER_PLATFORM_WIN32_NT) - return; - - if ((vi.dwMajorVersion > 6) || ((vi.dwMajorVersion == 6) && (vi.dwMinorVersion >= 2))) { - // Starting with Windows 8.1 Preview, GetVersionEx() does no longer report the actual OS version - // See: http://msdn.microsoft.com/en-us/library/windows/desktop/dn302074.aspx - - major_equal = VerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL); - for (major = vi.dwMajorVersion; major <= 9; major++) { - memset(&vi2, 0, sizeof(vi2)); - vi2.dwOSVersionInfoSize = sizeof(vi2); - vi2.dwMajorVersion = major; - if (!VerifyVersionInfoA(&vi2, VER_MAJORVERSION, major_equal)) - continue; - - if (vi.dwMajorVersion < major) { - vi.dwMajorVersion = major; - vi.dwMinorVersion = 0; - } - - minor_equal = VerSetConditionMask(0, VER_MINORVERSION, VER_EQUAL); - for (minor = vi.dwMinorVersion; minor <= 9; minor++) { - memset(&vi2, 0, sizeof(vi2)); - vi2.dwOSVersionInfoSize = sizeof(vi2); - vi2.dwMinorVersion = minor; - if (!VerifyVersionInfoA(&vi2, VER_MINORVERSION, minor_equal)) - continue; - - vi.dwMinorVersion = minor; - break; - } - - break; - } - } - - if ((vi.dwMajorVersion > 0xf) || (vi.dwMinorVersion > 0xf)) - return; - - ws = (vi.wProductType <= VER_NT_WORKSTATION); - version = vi.dwMajorVersion << 4 | vi.dwMinorVersion; - switch (version) { - case 0x50: windows_version = WINDOWS_2000; w = "2000"; break; - case 0x51: windows_version = WINDOWS_XP; w = "XP"; break; - case 0x52: windows_version = WINDOWS_2003; w = "2003"; break; - case 0x60: windows_version = WINDOWS_VISTA; w = (ws ? "Vista" : "2008"); break; - case 0x61: windows_version = WINDOWS_7; w = (ws ? "7" : "2008_R2"); break; - case 0x62: windows_version = WINDOWS_8; w = (ws ? "8" : "2012"); break; - case 0x63: windows_version = WINDOWS_8_1; w = (ws ? "8.1" : "2012_R2"); break; - case 0x64: windows_version = WINDOWS_10; w = (ws ? "10" : "2016"); break; - default: - if (version < 0x50) { - return; - } else { - windows_version = WINDOWS_11_OR_LATER; - w = "11 or later"; - } - } - - arch = is_x64() ? "64-bit" : "32-bit"; - - if (vi.wServicePackMinor) - usbi_dbg("Windows %s SP%u.%u %s", w, vi.wServicePackMajor, vi.wServicePackMinor, arch); - else if (vi.wServicePackMajor) - usbi_dbg("Windows %s SP%u %s", w, vi.wServicePackMajor, arch); - else - usbi_dbg("Windows %s %s", w, arch); -} - -/* -* Monotonic and real time functions -*/ -static unsigned __stdcall windows_clock_gettime_threaded(void *param) -{ - struct timer_request *request; - LARGE_INTEGER hires_counter; - MSG msg; - - // The following call will create this thread's message queue - // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms644946.aspx - pPeekMessageA(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE); - - // Signal windows_init_clock() that we're ready to service requests - if (!SetEvent((HANDLE)param)) - usbi_dbg("SetEvent failed for timer init event: %s", windows_error_str(0)); - param = NULL; - - // Main loop - wait for requests - while (1) { - if (pGetMessageA(&msg, NULL, WM_TIMER_REQUEST, WM_TIMER_EXIT) == -1) { - usbi_err(NULL, "GetMessage failed for timer thread: %s", windows_error_str(0)); - return 1; - } - - switch (msg.message) { - case WM_TIMER_REQUEST: - // Requests to this thread are for hires always - // Microsoft says that this function always succeeds on XP and later - // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms644904.aspx - request = (struct timer_request *)msg.lParam; - QueryPerformanceCounter(&hires_counter); - request->tp->tv_sec = (long)(hires_counter.QuadPart / hires_frequency); - request->tp->tv_nsec = (long)(((hires_counter.QuadPart % hires_frequency) / 1000) * hires_ticks_to_ps); - if (!SetEvent(request->event)) - usbi_err(NULL, "SetEvent failed for timer request: %s", windows_error_str(0)); - break; - case WM_TIMER_EXIT: - usbi_dbg("timer thread quitting"); - return 0; - } - } -} - -static void windows_transfer_callback(const struct windows_backend *backend, - struct usbi_transfer *itransfer, DWORD io_result, DWORD io_size) -{ - int status, istatus; - - usbi_dbg("handling I/O completion with errcode %u, size %u", (unsigned int)io_result, (unsigned int)io_size); - - switch (io_result) { - case NO_ERROR: - status = backend->copy_transfer_data(itransfer, (uint32_t)io_size); - break; - case ERROR_GEN_FAILURE: - usbi_dbg("detected endpoint stall"); - status = LIBUSB_TRANSFER_STALL; - break; - case ERROR_SEM_TIMEOUT: - usbi_dbg("detected semaphore timeout"); - status = LIBUSB_TRANSFER_TIMED_OUT; - break; - case ERROR_OPERATION_ABORTED: - istatus = backend->copy_transfer_data(itransfer, (uint32_t)io_size); - if (istatus != LIBUSB_TRANSFER_COMPLETED) - usbi_dbg("Failed to copy partial data in aborted operation: %d", istatus); - - usbi_dbg("detected operation aborted"); - status = LIBUSB_TRANSFER_CANCELLED; - break; - case ERROR_FILE_NOT_FOUND: - usbi_dbg("detected device removed"); - status = LIBUSB_TRANSFER_NO_DEVICE; - break; - default: - usbi_err(ITRANSFER_CTX(itransfer), "detected I/O error %u: %s", (unsigned int)io_result, windows_error_str(io_result)); - status = LIBUSB_TRANSFER_ERROR; - break; - } - backend->clear_transfer_priv(itransfer); // Cancel polling - if (status == LIBUSB_TRANSFER_CANCELLED) - usbi_handle_transfer_cancellation(itransfer); - else - usbi_handle_transfer_completion(itransfer, (enum libusb_transfer_status)status); -} - -static void windows_handle_callback(const struct windows_backend *backend, - struct usbi_transfer *itransfer, DWORD io_result, DWORD io_size) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - windows_transfer_callback(backend, itransfer, io_result, io_size); - break; - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - usbi_warn(ITRANSFER_CTX(itransfer), "bulk stream transfers are not yet supported on this platform"); - break; - default: - usbi_err(ITRANSFER_CTX(itransfer), "unknown endpoint type %d", transfer->type); - } -} - -static int windows_init(struct libusb_context *ctx) -{ - struct windows_context_priv *priv = _context_priv(ctx); - HANDLE semaphore; - char sem_name[11 + 8 + 1]; // strlen("libusb_init") + (32-bit hex PID) + '\0' - int r = LIBUSB_ERROR_OTHER; - bool winusb_backend_init = false; - - sprintf(sem_name, "libusb_init%08X", (unsigned int)(GetCurrentProcessId() & 0xFFFFFFFF)); - semaphore = CreateSemaphoreA(NULL, 1, 1, sem_name); - if (semaphore == NULL) { - usbi_err(ctx, "could not create semaphore: %s", windows_error_str(0)); - return LIBUSB_ERROR_NO_MEM; - } - - // A successful wait brings our semaphore count to 0 (unsignaled) - // => any concurent wait stalls until the semaphore's release - if (WaitForSingleObject(semaphore, INFINITE) != WAIT_OBJECT_0) { - usbi_err(ctx, "failure to access semaphore: %s", windows_error_str(0)); - CloseHandle(semaphore); - return LIBUSB_ERROR_NO_MEM; - } - - // NB: concurrent usage supposes that init calls are equally balanced with - // exit calls. If init is called more than exit, we will not exit properly - if (++init_count == 1) { // First init? - // Load DLL imports - if (!windows_init_dlls()) { - usbi_err(ctx, "could not resolve DLL functions"); - goto init_exit; - } - - get_windows_version(); - - if (windows_version == WINDOWS_UNDEFINED) { - usbi_err(ctx, "failed to detect Windows version"); - r = LIBUSB_ERROR_NOT_SUPPORTED; - goto init_exit; - } - - if (!windows_init_clock(ctx)) - goto init_exit; - - if (!htab_create(ctx)) - goto init_exit; - - r = winusb_backend.init(ctx); - if (r != LIBUSB_SUCCESS) - goto init_exit; - winusb_backend_init = true; - - r = usbdk_backend.init(ctx); - if (r == LIBUSB_SUCCESS) { - usbi_dbg("UsbDk backend is available"); - usbdk_available = true; - } else { - usbi_info(ctx, "UsbDk backend is not available"); - // Do not report this as an error - r = LIBUSB_SUCCESS; - } - } - - // By default, new contexts will use the WinUSB backend - priv->backend = &winusb_backend; - - r = LIBUSB_SUCCESS; - -init_exit: // Holds semaphore here - if ((init_count == 1) && (r != LIBUSB_SUCCESS)) { // First init failed? - if (winusb_backend_init) - winusb_backend.exit(ctx); - htab_destroy(); - windows_destroy_clock(); - windows_exit_dlls(); - --init_count; - } - - ReleaseSemaphore(semaphore, 1, NULL); // increase count back to 1 - CloseHandle(semaphore); - return r; -} - -static void windows_exit(struct libusb_context *ctx) -{ - HANDLE semaphore; - char sem_name[11 + 8 + 1]; // strlen("libusb_init") + (32-bit hex PID) + '\0' - UNUSED(ctx); - - sprintf(sem_name, "libusb_init%08X", (unsigned int)(GetCurrentProcessId() & 0xFFFFFFFF)); - semaphore = CreateSemaphoreA(NULL, 1, 1, sem_name); - if (semaphore == NULL) - return; - - // A successful wait brings our semaphore count to 0 (unsignaled) - // => any concurent wait stalls until the semaphore release - if (WaitForSingleObject(semaphore, INFINITE) != WAIT_OBJECT_0) { - CloseHandle(semaphore); - return; - } - - // Only works if exits and inits are balanced exactly - if (--init_count == 0) { // Last exit - if (usbdk_available) { - usbdk_backend.exit(ctx); - usbdk_available = false; - } - winusb_backend.exit(ctx); - htab_destroy(); - windows_destroy_clock(); - windows_exit_dlls(); - } - - ReleaseSemaphore(semaphore, 1, NULL); // increase count back to 1 - CloseHandle(semaphore); -} - -static int windows_set_option(struct libusb_context *ctx, enum libusb_option option, va_list ap) -{ - struct windows_context_priv *priv = _context_priv(ctx); - - UNUSED(ap); - - switch (option) { - case LIBUSB_OPTION_USE_USBDK: - if (usbdk_available) { - usbi_dbg("switching context %p to use UsbDk backend", ctx); - priv->backend = &usbdk_backend; - } else { - usbi_err(ctx, "UsbDk backend not available"); - return LIBUSB_ERROR_NOT_FOUND; - } - return LIBUSB_SUCCESS; - default: - return LIBUSB_ERROR_NOT_SUPPORTED; - } - -} - -static int windows_get_device_list(struct libusb_context *ctx, struct discovered_devs **discdevs) -{ - struct windows_context_priv *priv = _context_priv(ctx); - return priv->backend->get_device_list(ctx, discdevs); -} - -static int windows_open(struct libusb_device_handle *dev_handle) -{ - struct windows_context_priv *priv = _context_priv(HANDLE_CTX(dev_handle)); - return priv->backend->open(dev_handle); -} - -static void windows_close(struct libusb_device_handle *dev_handle) -{ - struct windows_context_priv *priv = _context_priv(HANDLE_CTX(dev_handle)); - priv->backend->close(dev_handle); -} - -static int windows_get_device_descriptor(struct libusb_device *dev, - unsigned char *buffer, int *host_endian) -{ - struct windows_context_priv *priv = _context_priv(DEVICE_CTX(dev)); - *host_endian = 0; - return priv->backend->get_device_descriptor(dev, buffer); -} - -static int windows_get_active_config_descriptor(struct libusb_device *dev, - unsigned char *buffer, size_t len, int *host_endian) -{ - struct windows_context_priv *priv = _context_priv(DEVICE_CTX(dev)); - *host_endian = 0; - return priv->backend->get_active_config_descriptor(dev, buffer, len); -} - -static int windows_get_config_descriptor(struct libusb_device *dev, - uint8_t config_index, unsigned char *buffer, size_t len, int *host_endian) -{ - struct windows_context_priv *priv = _context_priv(DEVICE_CTX(dev)); - *host_endian = 0; - return priv->backend->get_config_descriptor(dev, config_index, buffer, len); -} - -static int windows_get_config_descriptor_by_value(struct libusb_device *dev, - uint8_t bConfigurationValue, unsigned char **buffer, int *host_endian) -{ - struct windows_context_priv *priv = _context_priv(DEVICE_CTX(dev)); - *host_endian = 0; - return priv->backend->get_config_descriptor_by_value(dev, bConfigurationValue, buffer); -} - -static int windows_get_configuration(struct libusb_device_handle *dev_handle, int *config) -{ - struct windows_context_priv *priv = _context_priv(HANDLE_CTX(dev_handle)); - return priv->backend->get_configuration(dev_handle, config); -} - -static int windows_set_configuration(struct libusb_device_handle *dev_handle, int config) -{ - struct windows_context_priv *priv = _context_priv(HANDLE_CTX(dev_handle)); - return priv->backend->set_configuration(dev_handle, config); -} - -static int windows_claim_interface(struct libusb_device_handle *dev_handle, int interface_number) -{ - struct windows_context_priv *priv = _context_priv(HANDLE_CTX(dev_handle)); - return priv->backend->claim_interface(dev_handle, interface_number); -} - -static int windows_release_interface(struct libusb_device_handle *dev_handle, int interface_number) -{ - struct windows_context_priv *priv = _context_priv(HANDLE_CTX(dev_handle)); - return priv->backend->release_interface(dev_handle, interface_number); -} - -static int windows_set_interface_altsetting(struct libusb_device_handle *dev_handle, - int interface_number, int altsetting) -{ - struct windows_context_priv *priv = _context_priv(HANDLE_CTX(dev_handle)); - return priv->backend->set_interface_altsetting(dev_handle, interface_number, altsetting); -} - -static int windows_clear_halt(struct libusb_device_handle *dev_handle, unsigned char endpoint) -{ - struct windows_context_priv *priv = _context_priv(HANDLE_CTX(dev_handle)); - return priv->backend->clear_halt(dev_handle, endpoint); -} - -static int windows_reset_device(struct libusb_device_handle *dev_handle) -{ - struct windows_context_priv *priv = _context_priv(HANDLE_CTX(dev_handle)); - return priv->backend->reset_device(dev_handle); -} - -static void windows_destroy_device(struct libusb_device *dev) -{ - struct windows_context_priv *priv = _context_priv(DEVICE_CTX(dev)); - priv->backend->destroy_device(dev); -} - -static int windows_submit_transfer(struct usbi_transfer *itransfer) -{ - struct windows_context_priv *priv = _context_priv(ITRANSFER_CTX(itransfer)); - return priv->backend->submit_transfer(itransfer); -} - -static int windows_cancel_transfer(struct usbi_transfer *itransfer) -{ - struct windows_context_priv *priv = _context_priv(ITRANSFER_CTX(itransfer)); - return priv->backend->cancel_transfer(itransfer); -} - -static void windows_clear_transfer_priv(struct usbi_transfer *itransfer) -{ - struct windows_context_priv *priv = _context_priv(ITRANSFER_CTX(itransfer)); - priv->backend->clear_transfer_priv(itransfer); -} - -static int windows_handle_events(struct libusb_context *ctx, struct pollfd *fds, POLL_NFDS_TYPE nfds, int num_ready) -{ - struct windows_context_priv *priv = _context_priv(ctx); - struct usbi_transfer *itransfer; - DWORD io_size, io_result; - POLL_NFDS_TYPE i; - bool found; - int transfer_fd; - int r = LIBUSB_SUCCESS; - - usbi_mutex_lock(&ctx->open_devs_lock); - for (i = 0; i < nfds && num_ready > 0; i++) { - - usbi_dbg("checking fd %d with revents = %04x", fds[i].fd, fds[i].revents); - - if (!fds[i].revents) - continue; - - num_ready--; - - // Because a Windows OVERLAPPED is used for poll emulation, - // a pollable fd is created and stored with each transfer - found = false; - transfer_fd = -1; - usbi_mutex_lock(&ctx->flying_transfers_lock); - list_for_each_entry(itransfer, &ctx->flying_transfers, list, struct usbi_transfer) { - transfer_fd = priv->backend->get_transfer_fd(itransfer); - if (transfer_fd == fds[i].fd) { - found = true; - break; - } - } - usbi_mutex_unlock(&ctx->flying_transfers_lock); - - if (found) { - priv->backend->get_overlapped_result(itransfer, &io_result, &io_size); - - usbi_remove_pollfd(ctx, transfer_fd); - - // let handle_callback free the event using the transfer wfd - // If you don't use the transfer wfd, you run a risk of trying to free a - // newly allocated wfd that took the place of the one from the transfer. - windows_handle_callback(priv->backend, itransfer, io_result, io_size); - } else { - usbi_err(ctx, "could not find a matching transfer for fd %d", fds[i].fd); - r = LIBUSB_ERROR_NOT_FOUND; - break; - } - } - usbi_mutex_unlock(&ctx->open_devs_lock); - - return r; -} - -static int windows_clock_gettime(int clk_id, struct timespec *tp) -{ - struct timer_request request; -#if !defined(_MSC_VER) || (_MSC_VER < 1900) - FILETIME filetime; - ULARGE_INTEGER rtime; -#endif - DWORD r; - - switch (clk_id) { - case USBI_CLOCK_MONOTONIC: - if (timer_thread) { - request.tp = tp; - request.event = CreateEvent(NULL, FALSE, FALSE, NULL); - if (request.event == NULL) - return LIBUSB_ERROR_NO_MEM; - - if (!pPostThreadMessageA(timer_thread_id, WM_TIMER_REQUEST, 0, (LPARAM)&request)) { - usbi_err(NULL, "PostThreadMessage failed for timer thread: %s", windows_error_str(0)); - CloseHandle(request.event); - return LIBUSB_ERROR_OTHER; - } - - do { - r = WaitForSingleObject(request.event, TIMER_REQUEST_RETRY_MS); - if (r == WAIT_TIMEOUT) - usbi_dbg("could not obtain a timer value within reasonable timeframe - too much load?"); - else if (r == WAIT_FAILED) - usbi_err(NULL, "WaitForSingleObject failed: %s", windows_error_str(0)); - } while (r == WAIT_TIMEOUT); - CloseHandle(request.event); - - if (r == WAIT_OBJECT_0) - return LIBUSB_SUCCESS; - else - return LIBUSB_ERROR_OTHER; - } - // Fall through and return real-time if monotonic was not detected @ timer init - case USBI_CLOCK_REALTIME: -#if defined(_MSC_VER) && (_MSC_VER >= 1900) - timespec_get(tp, TIME_UTC); -#else - // We follow http://msdn.microsoft.com/en-us/library/ms724928%28VS.85%29.aspx - // with a predef epoch time to have an epoch that starts at 1970.01.01 00:00 - // Note however that our resolution is bounded by the Windows system time - // functions and is at best of the order of 1 ms (or, usually, worse) - GetSystemTimeAsFileTime(&filetime); - rtime.LowPart = filetime.dwLowDateTime; - rtime.HighPart = filetime.dwHighDateTime; - rtime.QuadPart -= EPOCH_TIME; - tp->tv_sec = (long)(rtime.QuadPart / 10000000); - tp->tv_nsec = (long)((rtime.QuadPart % 10000000) * 100); -#endif - return LIBUSB_SUCCESS; - default: - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -// NB: MSVC6 does not support named initializers. -const struct usbi_os_backend usbi_backend = { - "Windows", - USBI_CAP_HAS_HID_ACCESS, - windows_init, - windows_exit, - windows_set_option, - windows_get_device_list, - NULL, /* hotplug_poll */ - NULL, /* wrap_sys_device */ - windows_open, - windows_close, - windows_get_device_descriptor, - windows_get_active_config_descriptor, - windows_get_config_descriptor, - windows_get_config_descriptor_by_value, - windows_get_configuration, - windows_set_configuration, - windows_claim_interface, - windows_release_interface, - windows_set_interface_altsetting, - windows_clear_halt, - windows_reset_device, - NULL, /* alloc_streams */ - NULL, /* free_streams */ - NULL, /* dev_mem_alloc */ - NULL, /* dev_mem_free */ - NULL, /* kernel_driver_active */ - NULL, /* detach_kernel_driver */ - NULL, /* attach_kernel_driver */ - windows_destroy_device, - windows_submit_transfer, - windows_cancel_transfer, - windows_clear_transfer_priv, - windows_handle_events, - NULL, /* handle_transfer_completion */ - windows_clock_gettime, - sizeof(struct windows_context_priv), - sizeof(union windows_device_priv), - sizeof(union windows_device_handle_priv), - sizeof(union windows_transfer_priv), -}; diff --git a/Externals/libusb/libusb/os/windows_nt_common.h b/Externals/libusb/libusb/os/windows_nt_common.h deleted file mode 100644 index e155b5d3e3c4..000000000000 --- a/Externals/libusb/libusb/os/windows_nt_common.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Windows backend common header for libusb 1.0 - * - * This file brings together header code common between - * the desktop Windows backends. - * Copyright © 2012-2013 RealVNC Ltd. - * Copyright © 2009-2012 Pete Batard - * With contributions from Michael Plante, Orin Eman et al. - * Parts of this code adapted from libusb-win32-v1 by Stephan Meyer - * Major code testing contribution by Xiaofan Chen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#pragma once - -#include "windows_nt_shared_types.h" - - /* Windows versions */ -enum windows_version { - WINDOWS_UNDEFINED, - WINDOWS_2000, - WINDOWS_XP, - WINDOWS_2003, // Also XP x64 - WINDOWS_VISTA, - WINDOWS_7, - WINDOWS_8, - WINDOWS_8_1, - WINDOWS_10, - WINDOWS_11_OR_LATER -}; - -extern enum windows_version windows_version; - -/* This call is only available from Vista */ -extern BOOL (WINAPI *pCancelIoEx)(HANDLE, LPOVERLAPPED); - -struct windows_backend { - int (*init)(struct libusb_context *ctx); - void (*exit)(struct libusb_context *ctx); - int (*get_device_list)(struct libusb_context *ctx, - struct discovered_devs **discdevs); - int (*open)(struct libusb_device_handle *dev_handle); - void (*close)(struct libusb_device_handle *dev_handle); - int (*get_device_descriptor)(struct libusb_device *device, unsigned char *buffer); - int (*get_active_config_descriptor)(struct libusb_device *device, - unsigned char *buffer, size_t len); - int (*get_config_descriptor)(struct libusb_device *device, - uint8_t config_index, unsigned char *buffer, size_t len); - int (*get_config_descriptor_by_value)(struct libusb_device *device, - uint8_t bConfigurationValue, unsigned char **buffer); - int (*get_configuration)(struct libusb_device_handle *dev_handle, int *config); - int (*set_configuration)(struct libusb_device_handle *dev_handle, int config); - int (*claim_interface)(struct libusb_device_handle *dev_handle, int interface_number); - int (*release_interface)(struct libusb_device_handle *dev_handle, int interface_number); - int (*set_interface_altsetting)(struct libusb_device_handle *dev_handle, - int interface_number, int altsetting); - int (*clear_halt)(struct libusb_device_handle *dev_handle, - unsigned char endpoint); - int (*reset_device)(struct libusb_device_handle *dev_handle); - void (*destroy_device)(struct libusb_device *dev); - int (*submit_transfer)(struct usbi_transfer *itransfer); - int (*cancel_transfer)(struct usbi_transfer *itransfer); - void (*clear_transfer_priv)(struct usbi_transfer *itransfer); - int (*copy_transfer_data)(struct usbi_transfer *itransfer, uint32_t io_size); - int (*get_transfer_fd)(struct usbi_transfer *itransfer); - void (*get_overlapped_result)(struct usbi_transfer *itransfer, - DWORD *io_result, DWORD *io_size); -}; - -struct windows_context_priv { - const struct windows_backend *backend; -}; - -union windows_device_priv { - struct usbdk_device_priv usbdk_priv; - struct winusb_device_priv winusb_priv; -}; - -union windows_device_handle_priv { - struct usbdk_device_handle_priv usbdk_priv; - struct winusb_device_handle_priv winusb_priv; -}; - -union windows_transfer_priv { - struct usbdk_transfer_priv usbdk_priv; - struct winusb_transfer_priv winusb_priv; -}; - -extern const struct windows_backend usbdk_backend; -extern const struct windows_backend winusb_backend; - -unsigned long htab_hash(const char *str); -void windows_force_sync_completion(OVERLAPPED *overlapped, ULONG size); - -#if defined(ENABLE_LOGGING) -const char *windows_error_str(DWORD error_code); -#endif diff --git a/Externals/libusb/libusb/os/windows_nt_shared_types.h b/Externals/libusb/libusb/os/windows_nt_shared_types.h deleted file mode 100644 index d809bfd7d903..000000000000 --- a/Externals/libusb/libusb/os/windows_nt_shared_types.h +++ /dev/null @@ -1,147 +0,0 @@ -#pragma once - -#include "windows_common.h" - -#include - -typedef struct USB_DEVICE_DESCRIPTOR { - UCHAR bLength; - UCHAR bDescriptorType; - USHORT bcdUSB; - UCHAR bDeviceClass; - UCHAR bDeviceSubClass; - UCHAR bDeviceProtocol; - UCHAR bMaxPacketSize0; - USHORT idVendor; - USHORT idProduct; - USHORT bcdDevice; - UCHAR iManufacturer; - UCHAR iProduct; - UCHAR iSerialNumber; - UCHAR bNumConfigurations; -} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR; - -typedef struct USB_CONFIGURATION_DESCRIPTOR { - UCHAR bLength; - UCHAR bDescriptorType; - USHORT wTotalLength; - UCHAR bNumInterfaces; - UCHAR bConfigurationValue; - UCHAR iConfiguration; - UCHAR bmAttributes; - UCHAR MaxPower; -} USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR; - -#include - -#define MAX_DEVICE_ID_LEN 200 - -typedef struct USB_DK_DEVICE_ID { - WCHAR DeviceID[MAX_DEVICE_ID_LEN]; - WCHAR InstanceID[MAX_DEVICE_ID_LEN]; -} USB_DK_DEVICE_ID, *PUSB_DK_DEVICE_ID; - -typedef struct USB_DK_DEVICE_INFO { - USB_DK_DEVICE_ID ID; - ULONG64 FilterID; - ULONG64 Port; - ULONG64 Speed; - USB_DEVICE_DESCRIPTOR DeviceDescriptor; -} USB_DK_DEVICE_INFO, *PUSB_DK_DEVICE_INFO; - -typedef struct USB_DK_ISO_TRANSFER_RESULT { - ULONG64 ActualLength; - ULONG64 TransferResult; -} USB_DK_ISO_TRANSFER_RESULT, *PUSB_DK_ISO_TRANSFER_RESULT; - -typedef struct USB_DK_GEN_TRANSFER_RESULT { - ULONG64 BytesTransferred; - ULONG64 UsbdStatus; // USBD_STATUS code -} USB_DK_GEN_TRANSFER_RESULT, *PUSB_DK_GEN_TRANSFER_RESULT; - -typedef struct USB_DK_TRANSFER_RESULT { - USB_DK_GEN_TRANSFER_RESULT GenResult; - PVOID64 IsochronousResultsArray; // array of USB_DK_ISO_TRANSFER_RESULT -} USB_DK_TRANSFER_RESULT, *PUSB_DK_TRANSFER_RESULT; - -typedef struct USB_DK_TRANSFER_REQUEST { - ULONG64 EndpointAddress; - PVOID64 Buffer; - ULONG64 BufferLength; - ULONG64 TransferType; - ULONG64 IsochronousPacketsArraySize; - PVOID64 IsochronousPacketsArray; - USB_DK_TRANSFER_RESULT Result; -} USB_DK_TRANSFER_REQUEST, *PUSB_DK_TRANSFER_REQUEST; - -struct usbdk_device_priv { - USB_DK_DEVICE_INFO info; - PUSB_CONFIGURATION_DESCRIPTOR *config_descriptors; - HANDLE redirector_handle; - HANDLE system_handle; - uint8_t active_configuration; -}; - -struct winusb_device_priv { - bool initialized; - bool root_hub; - uint8_t active_config; - uint8_t depth; // distance to HCD - const struct windows_usb_api_backend *apib; - char *dev_id; - char *path; // device interface path - int sub_api; // for WinUSB-like APIs - struct { - char *path; // each interface needs a device interface path, - const struct windows_usb_api_backend *apib; // an API backend (multiple drivers support), - int sub_api; - int8_t nb_endpoints; // and a set of endpoint addresses (USB_MAXENDPOINTS) - uint8_t *endpoint; - int current_altsetting; - bool restricted_functionality; // indicates if the interface functionality is restricted - // by Windows (eg. HID keyboards or mice cannot do R/W) - } usb_interface[USB_MAXINTERFACES]; - struct hid_device_priv *hid; - USB_DEVICE_DESCRIPTOR dev_descriptor; - PUSB_CONFIGURATION_DESCRIPTOR *config_descriptor; // list of pointers to the cached config descriptors -}; - -struct usbdk_device_handle_priv { - // Not currently used - char dummy; -}; - -struct winusb_device_handle_priv { - int active_interface; - struct { - HANDLE dev_handle; // WinUSB needs an extra handle for the file - HANDLE api_handle; // used by the API to communicate with the device - } interface_handle[USB_MAXINTERFACES]; - int autoclaim_count[USB_MAXINTERFACES]; // For auto-release -}; - -struct usbdk_transfer_priv { - USB_DK_TRANSFER_REQUEST request; - struct winfd pollable_fd; - HANDLE system_handle; - PULONG64 IsochronousPacketsArray; - PUSB_DK_ISO_TRANSFER_RESULT IsochronousResultsArray; -}; - -struct winusb_transfer_priv { - struct winfd pollable_fd; - HANDLE handle; - uint8_t interface_number; - uint8_t *hid_buffer; // 1 byte extended data buffer, required for HID - uint8_t *hid_dest; // transfer buffer destination, required for HID - size_t hid_expected_size; - - // For isochronous transfers with LibUSBk driver: - void *iso_context; - - // For isochronous transfers with Microsoft WinUSB driver: - void *isoch_buffer_handle; // The isoch_buffer_handle to free at the end of the transfer - BOOL iso_break_stream; // Whether the isoch. stream was to be continued in the last call of libusb_submit_transfer. - // As we this structure is zeroed out upon initialization, we need to use inverse logic here. - libusb_transfer_cb_fn iso_user_callback; // Original transfer callback of the user. Might be used for isochronous transfers. -}; diff --git a/Externals/libusb/libusb/os/windows_usb.c b/Externals/libusb/libusb/os/windows_usb.c deleted file mode 100644 index 79a9612b2254..000000000000 --- a/Externals/libusb/libusb/os/windows_usb.c +++ /dev/null @@ -1,4643 +0,0 @@ -/* - * windows backend for libusb 1.0 - * Copyright © 2009-2012 Pete Batard - * With contributions from Michael Plante, Orin Eman et al. - * Parts of this code adapted from libusb-win32-v1 by Stephan Meyer - * HID Reports IOCTLs inspired from HIDAPI by Alan Ott, Signal 11 Software - * Hash table functions adapted from glibc, by Ulrich Drepper et al. - * Major code testing contribution by Xiaofan Chen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "libusbi.h" -#include "poll_windows.h" -#include "windows_usb.h" - -// The 2 macros below are used in conjunction with safe loops. -#define LOOP_CHECK(fcall) { r=fcall; if (r != LIBUSB_SUCCESS) continue; } -#define LOOP_BREAK(err) { r=err; continue; } - -// Helper prototypes -static int windows_get_active_config_descriptor(struct libusb_device *dev, unsigned char *buffer, size_t len, int *host_endian); -static int windows_clock_gettime(int clk_id, struct timespec *tp); -unsigned __stdcall windows_clock_gettime_threaded(void* param); -// Common calls -static int common_configure_endpoints(int sub_api, struct libusb_device_handle *dev_handle, int iface); - -// WinUSB-like API prototypes -static int winusbx_init(int sub_api, struct libusb_context *ctx); -static int winusbx_exit(int sub_api); -static int winusbx_open(int sub_api, struct libusb_device_handle *dev_handle); -static void winusbx_close(int sub_api, struct libusb_device_handle *dev_handle); -static int winusbx_configure_endpoints(int sub_api, struct libusb_device_handle *dev_handle, int iface); -static int winusbx_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface); -static int winusbx_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface); -static int winusbx_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer); -static int winusbx_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting); -static int winusbx_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer); -static int winusbx_clear_halt(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint); -static int winusbx_abort_transfers(int sub_api, struct usbi_transfer *itransfer); -static int winusbx_abort_control(int sub_api, struct usbi_transfer *itransfer); -static int winusbx_reset_device(int sub_api, struct libusb_device_handle *dev_handle); -static int winusbx_copy_transfer_data(int sub_api, struct usbi_transfer *itransfer, uint32_t io_size); -// HID API prototypes -static int hid_init(int sub_api, struct libusb_context *ctx); -static int hid_exit(int sub_api); -static int hid_open(int sub_api, struct libusb_device_handle *dev_handle); -static void hid_close(int sub_api, struct libusb_device_handle *dev_handle); -static int hid_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface); -static int hid_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface); -static int hid_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting); -static int hid_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer); -static int hid_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer); -static int hid_clear_halt(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint); -static int hid_abort_transfers(int sub_api, struct usbi_transfer *itransfer); -static int hid_reset_device(int sub_api, struct libusb_device_handle *dev_handle); -static int hid_copy_transfer_data(int sub_api, struct usbi_transfer *itransfer, uint32_t io_size); -// Composite API prototypes -static int composite_init(int sub_api, struct libusb_context *ctx); -static int composite_exit(int sub_api); -static int composite_open(int sub_api, struct libusb_device_handle *dev_handle); -static void composite_close(int sub_api, struct libusb_device_handle *dev_handle); -static int composite_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface); -static int composite_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting); -static int composite_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface); -static int composite_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer); -static int composite_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer); -static int composite_submit_iso_transfer(int sub_api, struct usbi_transfer *itransfer); -static int composite_clear_halt(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint); -static int composite_abort_transfers(int sub_api, struct usbi_transfer *itransfer); -static int composite_abort_control(int sub_api, struct usbi_transfer *itransfer); -static int composite_reset_device(int sub_api, struct libusb_device_handle *dev_handle); -static int composite_copy_transfer_data(int sub_api, struct usbi_transfer *itransfer, uint32_t io_size); - - -// Global variables -uint64_t hires_frequency, hires_ticks_to_ps; -const uint64_t epoch_time = UINT64_C(116444736000000000); // 1970.01.01 00:00:000 in MS Filetime -int windows_version = WINDOWS_UNDEFINED; -static char windows_version_str[128] = "Windows Undefined"; -// Concurrency -static int concurrent_usage = -1; -usbi_mutex_t autoclaim_lock; -// Timer thread -HANDLE timer_thread = NULL; -DWORD timer_thread_id = 0; -// API globals -#define CHECK_WINUSBX_AVAILABLE(sub_api) do { if (sub_api == SUB_API_NOTSET) sub_api = priv->sub_api; \ - if (!WinUSBX[sub_api].initialized) return LIBUSB_ERROR_ACCESS; } while(0) -static struct winusb_interface WinUSBX[SUB_API_MAX]; -const char* sub_api_name[SUB_API_MAX] = WINUSBX_DRV_NAMES; -bool api_hid_available = false; -#define CHECK_HID_AVAILABLE do { if (!api_hid_available) return LIBUSB_ERROR_ACCESS; } while (0) - -static inline BOOLEAN guid_eq(const GUID *guid1, const GUID *guid2) { - if ((guid1 != NULL) && (guid2 != NULL)) { - return (memcmp(guid1, guid2, sizeof(GUID)) == 0); - } - return false; -} - -#if defined(ENABLE_LOGGING) -static char* guid_to_string(const GUID* guid) -{ - static char guid_string[MAX_GUID_STRING_LENGTH]; - - if (guid == NULL) return NULL; - sprintf(guid_string, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", - (unsigned int)guid->Data1, guid->Data2, guid->Data3, - guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], - guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]); - return guid_string; -} -#endif - -/* - * Converts a windows error to human readable string - * uses retval as errorcode, or, if 0, use GetLastError() - */ -#if defined(ENABLE_LOGGING) -static char *windows_error_str(uint32_t retval) -{ -static char err_string[ERR_BUFFER_SIZE]; - - DWORD size; - ssize_t i; - uint32_t error_code, format_error; - - error_code = retval?retval:GetLastError(); - - safe_sprintf(err_string, ERR_BUFFER_SIZE, "[%u] ", error_code); - - // Translate codes returned by SetupAPI. The ones we are dealing with are either - // in 0x0000xxxx or 0xE000xxxx and can be distinguished from standard error codes. - // See http://msdn.microsoft.com/en-us/library/windows/hardware/ff545011.aspx - switch (error_code & 0xE0000000) { - case 0: - error_code = HRESULT_FROM_WIN32(error_code); // Still leaves ERROR_SUCCESS unmodified - break; - case 0xE0000000: - error_code = 0x80000000 | (FACILITY_SETUPAPI << 16) | (error_code & 0x0000FFFF); - break; - default: - break; - } - - size = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, error_code, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), &err_string[safe_strlen(err_string)], - ERR_BUFFER_SIZE - (DWORD)safe_strlen(err_string), NULL); - if (size == 0) { - format_error = GetLastError(); - if (format_error) - safe_sprintf(err_string, ERR_BUFFER_SIZE, - "Windows error code %u (FormatMessage error code %u)", error_code, format_error); - else - safe_sprintf(err_string, ERR_BUFFER_SIZE, "Unknown error code %u", error_code); - } else { - // Remove CR/LF terminators - for (i=safe_strlen(err_string)-1; (i>=0) && ((err_string[i]==0x0A) || (err_string[i]==0x0D)); i--) { - err_string[i] = 0; - } - } - return err_string; -} -#endif - -/* - * Sanitize Microsoft's paths: convert to uppercase, add prefix and fix backslashes. - * Return an allocated sanitized string or NULL on error. - */ -static char* sanitize_path(const char* path) -{ - const char root_prefix[] = "\\\\.\\"; - size_t j, size, root_size; - char* ret_path = NULL; - size_t add_root = 0; - - if (path == NULL) - return NULL; - - size = safe_strlen(path)+1; - root_size = sizeof(root_prefix)-1; - - // Microsoft indiscriminately uses '\\?\', '\\.\', '##?#" or "##.#" for root prefixes. - if (!((size > 3) && (((path[0] == '\\') && (path[1] == '\\') && (path[3] == '\\')) || - ((path[0] == '#') && (path[1] == '#') && (path[3] == '#'))))) { - add_root = root_size; - size += add_root; - } - - if ((ret_path = (char*) calloc(size, 1)) == NULL) - return NULL; - - safe_strcpy(&ret_path[add_root], size-add_root, path); - - // Ensure consistency with root prefix - for (j=0; jcbSize = sizeof(SP_DEVINFO_DATA); - if (!pSetupDiEnumDeviceInfo(*dev_info, _index, dev_info_data)) { - if (GetLastError() != ERROR_NO_MORE_ITEMS) { - usbi_err(ctx, "Could not obtain device info data for index %u: %s", - _index, windows_error_str(0)); - } - pSetupDiDestroyDeviceInfoList(*dev_info); - *dev_info = INVALID_HANDLE_VALUE; - return false; - } - return true; -} - -/* - * enumerate interfaces for a specific GUID - * - * Parameters: - * dev_info: a pointer to a dev_info list - * dev_info_data: a pointer to an SP_DEVINFO_DATA to be filled (or NULL if not needed) - * guid: the GUID for which to retrieve interface details - * index: zero based index of the interface in the device info list - * - * Note: it is the responsibility of the caller to free the DEVICE_INTERFACE_DETAIL_DATA - * structure returned and call this function repeatedly using the same guid (with an - * incremented index starting at zero) until all interfaces have been returned. - */ -static SP_DEVICE_INTERFACE_DETAIL_DATA_A *get_interface_details(struct libusb_context *ctx, - HDEVINFO *dev_info, SP_DEVINFO_DATA *dev_info_data, const GUID* guid, unsigned _index) -{ - SP_DEVICE_INTERFACE_DATA dev_interface_data; - SP_DEVICE_INTERFACE_DETAIL_DATA_A *dev_interface_details = NULL; - DWORD size; - - if (_index <= 0) { - *dev_info = pSetupDiGetClassDevsA(guid, NULL, NULL, DIGCF_PRESENT|DIGCF_DEVICEINTERFACE); - } - - if (dev_info_data != NULL) { - dev_info_data->cbSize = sizeof(SP_DEVINFO_DATA); - if (!pSetupDiEnumDeviceInfo(*dev_info, _index, dev_info_data)) { - if (GetLastError() != ERROR_NO_MORE_ITEMS) { - usbi_err(ctx, "Could not obtain device info data for index %u: %s", - _index, windows_error_str(0)); - } - pSetupDiDestroyDeviceInfoList(*dev_info); - *dev_info = INVALID_HANDLE_VALUE; - return NULL; - } - } - - dev_interface_data.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); - if (!pSetupDiEnumDeviceInterfaces(*dev_info, NULL, guid, _index, &dev_interface_data)) { - if (GetLastError() != ERROR_NO_MORE_ITEMS) { - usbi_err(ctx, "Could not obtain interface data for index %u: %s", - _index, windows_error_str(0)); - } - pSetupDiDestroyDeviceInfoList(*dev_info); - *dev_info = INVALID_HANDLE_VALUE; - return NULL; - } - - // Read interface data (dummy + actual) to access the device path - if (!pSetupDiGetDeviceInterfaceDetailA(*dev_info, &dev_interface_data, NULL, 0, &size, NULL)) { - // The dummy call should fail with ERROR_INSUFFICIENT_BUFFER - if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { - usbi_err(ctx, "could not access interface data (dummy) for index %u: %s", - _index, windows_error_str(0)); - goto err_exit; - } - } else { - usbi_err(ctx, "program assertion failed - http://msdn.microsoft.com/en-us/library/ms792901.aspx is wrong."); - goto err_exit; - } - - if ((dev_interface_details = (SP_DEVICE_INTERFACE_DETAIL_DATA_A*) calloc(size, 1)) == NULL) { - usbi_err(ctx, "could not allocate interface data for index %u.", _index); - goto err_exit; - } - - dev_interface_details->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_A); - if (!pSetupDiGetDeviceInterfaceDetailA(*dev_info, &dev_interface_data, - dev_interface_details, size, &size, NULL)) { - usbi_err(ctx, "could not access interface data (actual) for index %u: %s", - _index, windows_error_str(0)); - } - - return dev_interface_details; - -err_exit: - pSetupDiDestroyDeviceInfoList(*dev_info); - *dev_info = INVALID_HANDLE_VALUE; - return NULL; -} - -/* For libusb0 filter */ -static SP_DEVICE_INTERFACE_DETAIL_DATA_A *get_interface_details_filter(struct libusb_context *ctx, - HDEVINFO *dev_info, SP_DEVINFO_DATA *dev_info_data, const GUID* guid, unsigned _index, char* filter_path){ - SP_DEVICE_INTERFACE_DATA dev_interface_data; - SP_DEVICE_INTERFACE_DETAIL_DATA_A *dev_interface_details = NULL; - DWORD size; - if (_index <= 0) { - *dev_info = pSetupDiGetClassDevsA(guid, NULL, NULL, DIGCF_PRESENT|DIGCF_DEVICEINTERFACE); - } - if (dev_info_data != NULL) { - dev_info_data->cbSize = sizeof(SP_DEVINFO_DATA); - if (!pSetupDiEnumDeviceInfo(*dev_info, _index, dev_info_data)) { - if (GetLastError() != ERROR_NO_MORE_ITEMS) { - usbi_err(ctx, "Could not obtain device info data for index %u: %s", - _index, windows_error_str(0)); - } - pSetupDiDestroyDeviceInfoList(*dev_info); - *dev_info = INVALID_HANDLE_VALUE; - return NULL; - } - } - dev_interface_data.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); - if (!pSetupDiEnumDeviceInterfaces(*dev_info, NULL, guid, _index, &dev_interface_data)) { - if (GetLastError() != ERROR_NO_MORE_ITEMS) { - usbi_err(ctx, "Could not obtain interface data for index %u: %s", - _index, windows_error_str(0)); - } - pSetupDiDestroyDeviceInfoList(*dev_info); - *dev_info = INVALID_HANDLE_VALUE; - return NULL; - } - // Read interface data (dummy + actual) to access the device path - if (!pSetupDiGetDeviceInterfaceDetailA(*dev_info, &dev_interface_data, NULL, 0, &size, NULL)) { - // The dummy call should fail with ERROR_INSUFFICIENT_BUFFER - if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { - usbi_err(ctx, "could not access interface data (dummy) for index %u: %s", - _index, windows_error_str(0)); - goto err_exit; - } - } else { - usbi_err(ctx, "program assertion failed - http://msdn.microsoft.com/en-us/library/ms792901.aspx is wrong."); - goto err_exit; - } - if ((dev_interface_details = malloc(size)) == NULL) { - usbi_err(ctx, "could not allocate interface data for index %u.", _index); - goto err_exit; - } - dev_interface_details->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_A); - if (!pSetupDiGetDeviceInterfaceDetailA(*dev_info, &dev_interface_data, - dev_interface_details, size, &size, NULL)) { - usbi_err(ctx, "could not access interface data (actual) for index %u: %s", - _index, windows_error_str(0)); - } - // [trobinso] lookup the libusb0 symbolic index. - if (dev_interface_details) { - HKEY hkey_device_interface=pSetupDiOpenDeviceInterfaceRegKey(*dev_info,&dev_interface_data,0,KEY_READ); - if (hkey_device_interface != INVALID_HANDLE_VALUE) { - DWORD libusb0_symboliclink_index=0; - DWORD value_length=sizeof(DWORD); - DWORD value_type=0; - LONG status; - status = pRegQueryValueExW(hkey_device_interface, L"LUsb0", NULL, &value_type, - (LPBYTE) &libusb0_symboliclink_index, &value_length); - if (status == ERROR_SUCCESS) { - if (libusb0_symboliclink_index < 256) { - // libusb0.sys is connected to this device instance. - // If the the device interface guid is {F9F3FF14-AE21-48A0-8A25-8011A7A931D9} then it's a filter. - safe_sprintf(filter_path, sizeof("\\\\.\\libusb0-0000"), "\\\\.\\libusb0-%04d", libusb0_symboliclink_index); - usbi_dbg("assigned libusb0 symbolic link %s", filter_path); - } else { - // libusb0.sys was connected to this device instance at one time; but not anymore. - } - } - pRegCloseKey(hkey_device_interface); - } - } - return dev_interface_details; -err_exit: - pSetupDiDestroyDeviceInfoList(*dev_info); - *dev_info = INVALID_HANDLE_VALUE; - return NULL;} - -/* Hash table functions - modified From glibc 2.3.2: - [Aho,Sethi,Ullman] Compilers: Principles, Techniques and Tools, 1986 - [Knuth] The Art of Computer Programming, part 3 (6.4) */ -typedef struct htab_entry { - unsigned long used; - char* str; -} htab_entry; -htab_entry* htab_table = NULL; -usbi_mutex_t htab_write_mutex = NULL; -unsigned long htab_size, htab_filled; - -/* For the used double hash method the table size has to be a prime. To - correct the user given table size we need a prime test. This trivial - algorithm is adequate because the code is called only during init and - the number is likely to be small */ -static int isprime(unsigned long number) -{ - // no even number will be passed - unsigned int divider = 3; - - while((divider * divider < number) && (number % divider != 0)) - divider += 2; - - return (number % divider != 0); -} - -/* Before using the hash table we must allocate memory for it. - We allocate one element more as the found prime number says. - This is done for more effective indexing as explained in the - comment for the hash function. */ -static int htab_create(struct libusb_context *ctx, unsigned long nel) -{ - if (htab_table != NULL) { - usbi_err(ctx, "hash table already allocated"); - } - - // Create a mutex - usbi_mutex_init(&htab_write_mutex, NULL); - - // Change nel to the first prime number not smaller as nel. - nel |= 1; - while(!isprime(nel)) - nel += 2; - - htab_size = nel; - usbi_dbg("using %d entries hash table", nel); - htab_filled = 0; - - // allocate memory and zero out. - htab_table = (htab_entry*) calloc(htab_size + 1, sizeof(htab_entry)); - if (htab_table == NULL) { - usbi_err(ctx, "could not allocate space for hash table"); - return 0; - } - - return 1; -} - -/* After using the hash table it has to be destroyed. */ -static void htab_destroy(void) -{ - size_t i; - if (htab_table == NULL) { - return; - } - - for (i=0; i New entry - - // If the table is full return an error - if (htab_filled >= htab_size) { - usbi_err(NULL, "hash table is full (%d entries)", htab_size); - return 0; - } - - // Concurrent threads might be storing the same entry at the same time - // (eg. "simultaneous" enums from different threads) => use a mutex - usbi_mutex_lock(&htab_write_mutex); - // Just free any previously allocated string (which should be the same as - // new one). The possibility of concurrent threads storing a collision - // string (same hash, different string) at the same time is extremely low - safe_free(htab_table[idx].str); - htab_table[idx].used = hval; - htab_table[idx].str = (char*) malloc(safe_strlen(str)+1); - if (htab_table[idx].str == NULL) { - usbi_err(NULL, "could not duplicate string for hash table"); - usbi_mutex_unlock(&htab_write_mutex); - return 0; - } - memcpy(htab_table[idx].str, str, safe_strlen(str)+1); - ++htab_filled; - usbi_mutex_unlock(&htab_write_mutex); - - return idx; -} - -/* - * Returns the session ID of a device's nth level ancestor - * If there's no device at the nth level, return 0 - */ -static unsigned long get_ancestor_session_id(DWORD devinst, unsigned level) -{ - DWORD parent_devinst; - unsigned long session_id = 0; - char* sanitized_path = NULL; - char path[MAX_PATH_LENGTH]; - unsigned i; - - if (level < 1) return 0; - for (i = 0; ibNumInterfaces; i++) { - intf = &conf_desc->interface[i]; - for (j = 0; j < intf->num_altsetting; j++) { - intf_desc = &intf->altsetting[j]; - for (k = 0; k < intf_desc->bNumEndpoints; k++) { - if (intf_desc->endpoint[k].bEndpointAddress == ep) { - usbi_dbg("found endpoint %02X on interface %d", intf_desc->bInterfaceNumber); - return intf_desc->bInterfaceNumber; - } - } - } - } - - usbi_dbg("endpoint %02X not found on any interface", ep); - return LIBUSB_ERROR_NOT_FOUND; -} - -/* - * Populate the endpoints addresses of the device_priv interface helper structs - */ -static int windows_assign_endpoints(struct libusb_device_handle *dev_handle, int iface, int altsetting) -{ - int i, r; - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - struct libusb_config_descriptor *conf_desc; - const struct libusb_interface_descriptor *if_desc; - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - - r = libusb_get_config_descriptor(dev_handle->dev, (uint8_t)(priv->active_config-1), &conf_desc); - if (r != LIBUSB_SUCCESS) { - usbi_warn(ctx, "could not read config descriptor: error %d", r); - return r; - } - - if_desc = &conf_desc->interface[iface].altsetting[altsetting]; - safe_free(priv->usb_interface[iface].endpoint); - - if (if_desc->bNumEndpoints == 0) { - usbi_dbg("no endpoints found for interface %d", iface); - return LIBUSB_SUCCESS; - } - - priv->usb_interface[iface].endpoint = (uint8_t*) malloc(if_desc->bNumEndpoints); - if (priv->usb_interface[iface].endpoint == NULL) { - return LIBUSB_ERROR_NO_MEM; - } - - priv->usb_interface[iface].nb_endpoints = if_desc->bNumEndpoints; - for (i=0; ibNumEndpoints; i++) { - priv->usb_interface[iface].endpoint[i] = if_desc->endpoint[i].bEndpointAddress; - usbi_dbg("(re)assigned endpoint %02X to interface %d", priv->usb_interface[iface].endpoint[i], iface); - } - libusb_free_config_descriptor(conf_desc); - - // Extra init may be required to configure endpoints - return priv->apib->configure_endpoints(SUB_API_NOTSET, dev_handle, iface); -} - -// Lookup for a match in the list of API driver names -// return -1 if not found, driver match number otherwise -static int get_sub_api(char* driver, int api){ - int i; - const char sep_str[2] = {LIST_SEPARATOR, 0}; - char *tok, *tmp_str; - size_t len = safe_strlen(driver); - - if (len == 0) return SUB_API_NOTSET; - tmp_str = (char*) calloc(len+1, 1); - if (tmp_str == NULL) return SUB_API_NOTSET; - memcpy(tmp_str, driver, len+1); - tok = strtok(tmp_str, sep_str); - while (tok != NULL) { - for (i=0; idev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv( - transfer->dev_handle); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int current_interface = *interface_number; - int r = LIBUSB_SUCCESS; - - switch(api_type) { - case USB_API_WINUSBX: - case USB_API_HID: - break; - default: - return LIBUSB_ERROR_INVALID_PARAM; - } - - usbi_mutex_lock(&autoclaim_lock); - if (current_interface < 0) // No serviceable interface was found - { - for (current_interface=0; current_interfaceusb_interface[current_interface].apib->id == api_type) - && (libusb_claim_interface(transfer->dev_handle, current_interface) == LIBUSB_SUCCESS) ) { - usbi_dbg("auto-claimed interface %d for control request", current_interface); - if (handle_priv->autoclaim_count[current_interface] != 0) { - usbi_warn(ctx, "program assertion failed - autoclaim_count was nonzero"); - } - handle_priv->autoclaim_count[current_interface]++; - break; - } - } - if (current_interface == USB_MAXINTERFACES) { - usbi_err(ctx, "could not auto-claim any interface"); - r = LIBUSB_ERROR_NOT_FOUND; - } - } else { - // If we have a valid interface that was autoclaimed, we must increment - // its autoclaim count so that we can prevent an early release. - if (handle_priv->autoclaim_count[current_interface] != 0) { - handle_priv->autoclaim_count[current_interface]++; - } - } - usbi_mutex_unlock(&autoclaim_lock); - - *interface_number = current_interface; - return r; - -} - -static void auto_release(struct usbi_transfer *itransfer) -{ - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - libusb_device_handle *dev_handle = transfer->dev_handle; - struct windows_device_handle_priv* handle_priv = _device_handle_priv(dev_handle); - int r; - - usbi_mutex_lock(&autoclaim_lock); - if (handle_priv->autoclaim_count[transfer_priv->interface_number] > 0) { - handle_priv->autoclaim_count[transfer_priv->interface_number]--; - if (handle_priv->autoclaim_count[transfer_priv->interface_number] == 0) { - r = libusb_release_interface(dev_handle, transfer_priv->interface_number); - if (r == LIBUSB_SUCCESS) { - usbi_dbg("auto-released interface %d", transfer_priv->interface_number); - } else { - usbi_dbg("failed to auto-release interface %d (%s)", - transfer_priv->interface_number, libusb_error_name((enum libusb_error)r)); - } - } - } - usbi_mutex_unlock(&autoclaim_lock); -} - -/* Windows version dtection */ -static BOOL is_x64(void) -{ - BOOL ret = FALSE; - // Detect if we're running a 32 or 64 bit system - if (sizeof(uintptr_t) < 8) { - DLL_LOAD_PREFIXED(Kernel32.dll, p, IsWow64Process, FALSE); - if (pIsWow64Process != NULL) { - (*pIsWow64Process)(GetCurrentProcess(), &ret); - } - } else { - ret = TRUE; - } - return ret; -} - -static void get_windows_version(void) -{ - OSVERSIONINFOEXA vi, vi2; - const char* w = 0; - const char* w64 = "32 bit"; - char* vptr; - size_t vlen; - unsigned major, minor; - ULONGLONG major_equal, minor_equal; - BOOL ws; - - memset(&vi, 0, sizeof(vi)); - vi.dwOSVersionInfoSize = sizeof(vi); - if (!GetVersionExA((OSVERSIONINFOA *)&vi)) { - memset(&vi, 0, sizeof(vi)); - vi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA); - if (!GetVersionExA((OSVERSIONINFOA *)&vi)) - return; - } - - if (vi.dwPlatformId == VER_PLATFORM_WIN32_NT) { - - if (vi.dwMajorVersion > 6 || (vi.dwMajorVersion == 6 && vi.dwMinorVersion >= 2)) { - // Starting with Windows 8.1 Preview, GetVersionEx() does no longer report the actual OS version - // See: http://msdn.microsoft.com/en-us/library/windows/desktop/dn302074.aspx - - major_equal = VerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL); - for (major = vi.dwMajorVersion; major <= 9; major++) { - memset(&vi2, 0, sizeof(vi2)); - vi2.dwOSVersionInfoSize = sizeof(vi2); vi2.dwMajorVersion = major; - if (!VerifyVersionInfoA(&vi2, VER_MAJORVERSION, major_equal)) - continue; - if (vi.dwMajorVersion < major) { - vi.dwMajorVersion = major; vi.dwMinorVersion = 0; - } - - minor_equal = VerSetConditionMask(0, VER_MINORVERSION, VER_EQUAL); - for (minor = vi.dwMinorVersion; minor <= 9; minor++) { - memset(&vi2, 0, sizeof(vi2)); vi2.dwOSVersionInfoSize = sizeof(vi2); - vi2.dwMinorVersion = minor; - if (!VerifyVersionInfoA(&vi2, VER_MINORVERSION, minor_equal)) - continue; - vi.dwMinorVersion = minor; - break; - } - - break; - } - } - - if (vi.dwMajorVersion <= 0xf && vi.dwMinorVersion <= 0xf) { - ws = (vi.wProductType <= VER_NT_WORKSTATION); - windows_version = vi.dwMajorVersion << 4 | vi.dwMinorVersion; - switch (windows_version) { - case 0x50: w = "2000"; - break; - case 0x51: w = "XP"; - break; - case 0x52: w = ("2003"); - break; - case 0x60: w = (ws?"Vista":"2008"); - break; - case 0x61: w = (ws?"7":"2008_R2"); - break; - case 0x62: w = (ws?"8":"2012"); - break; - case 0x63: w = (ws?"8.1":"2012_R2"); - break; - case 0x64: w = (ws?"10":"2015"); - break; - default: - if (windows_version < 0x50) - windows_version = WINDOWS_UNSUPPORTED; - else - w = "11 or later"; - break; - } - } - } - - if (is_x64()) - w64 = "64-bit"; - - vptr = &windows_version_str[sizeof("Windows ") - 1]; - vlen = sizeof(windows_version_str) - sizeof("Windows ") - 1; - if (!w) - safe_sprintf(vptr, vlen, "%s %u.%u %s", (vi.dwPlatformId==VER_PLATFORM_WIN32_NT?"NT":"??"), - (unsigned)vi.dwMajorVersion, (unsigned)vi.dwMinorVersion, w64); - else if (vi.wServicePackMinor) - safe_sprintf(vptr, vlen, "%s SP%u.%u %s", w, vi.wServicePackMajor, vi.wServicePackMinor, w64); - else if (vi.wServicePackMajor) - safe_sprintf(vptr, vlen, "%s SP%u %s", w, vi.wServicePackMajor, w64); - else - safe_sprintf(vptr, vlen, "%s %s", w, w64); -} - -/* - * init: libusb backend init function - * - * This function enumerates the HCDs (Host Controller Drivers) and populates our private HCD list - * In our implementation, we equate Windows' "HCD" to libusb's "bus". Note that bus is zero indexed. - * HCDs are not expected to change after init (might not hold true for hot pluggable USB PCI card?) - */ -static int windows_init(struct libusb_context *ctx) -{ - int i, r = LIBUSB_ERROR_OTHER; - DWORD_PTR affinity, dummy; - HANDLE event = NULL; - HANDLE semaphore; - LARGE_INTEGER li_frequency; - char sem_name[11+1+8]; // strlen(libusb_init)+'\0'+(32-bit hex PID) - - sprintf(sem_name, "libusb_init%08X", (unsigned int)GetCurrentProcessId()&0xFFFFFFFF); - semaphore = CreateSemaphoreA(NULL, 1, 1, sem_name); - if (semaphore == NULL) { - usbi_err(ctx, "could not create semaphore: %s", windows_error_str(0)); - return LIBUSB_ERROR_NO_MEM; - } - - // A successful wait brings our semaphore count to 0 (unsignaled) - // => any concurent wait stalls until the semaphore's release - if (WaitForSingleObject(semaphore, INFINITE) != WAIT_OBJECT_0) { - usbi_err(ctx, "failure to access semaphore: %s", windows_error_str(0)); - CloseHandle(semaphore); - return LIBUSB_ERROR_NO_MEM; - } - - // NB: concurrent usage supposes that init calls are equally balanced with - // exit calls. If init is called more than exit, we will not exit properly - if ( ++concurrent_usage == 0 ) { // First init? - get_windows_version(); - usbi_dbg(windows_version_str); - if (windows_version == WINDOWS_UNSUPPORTED) { - usbi_err(ctx, "This version of Windows is NOT supported"); - r = LIBUSB_ERROR_NOT_SUPPORTED; - goto init_exit; - } - - // We need a lock for proper auto-release - usbi_mutex_init(&autoclaim_lock, NULL); - - // Initialize pollable file descriptors - init_polling(); - - // Load DLL imports - if (init_dlls() != LIBUSB_SUCCESS) { - usbi_err(ctx, "could not resolve DLL functions"); - goto init_exit; - } - - // Initialize the low level APIs (we don't care about errors at this stage) - for (i=0; inum_configurations = 1; - priv->dev_descriptor.bLength = sizeof(USB_DEVICE_DESCRIPTOR); - priv->dev_descriptor.bDescriptorType = USB_DEVICE_DESCRIPTOR_TYPE; - priv->dev_descriptor.bNumConfigurations = 1; - priv->active_config = 1; - - if (priv->parent_dev == NULL) { - usbi_err(ctx, "program assertion failed - HCD hub has no parent"); - return LIBUSB_ERROR_NO_DEVICE; - } - parent_priv = _device_priv(priv->parent_dev); - if (sscanf(parent_priv->path, "\\\\.\\PCI#VEN_%04x&DEV_%04x%*s", &vid, &pid) == 2) { - priv->dev_descriptor.idVendor = (uint16_t)vid; - priv->dev_descriptor.idProduct = (uint16_t)pid; - } else { - usbi_warn(ctx, "could not infer VID/PID of HCD hub from '%s'", parent_priv->path); - priv->dev_descriptor.idVendor = 0x1d6b; // Linux Foundation root hub - priv->dev_descriptor.idProduct = 1; - } - return LIBUSB_SUCCESS; -} - -/* - * fetch and cache all the config descriptors through I/O - */ -static int cache_config_descriptors(struct libusb_device *dev, HANDLE hub_handle, char* device_id) -{ - DWORD size, ret_size; - struct libusb_context *ctx = DEVICE_CTX(dev); - struct windows_device_priv *priv = _device_priv(dev); - int r; - uint8_t i; - - USB_CONFIGURATION_DESCRIPTOR_SHORT cd_buf_short; // dummy request - PUSB_DESCRIPTOR_REQUEST cd_buf_actual = NULL; // actual request - PUSB_CONFIGURATION_DESCRIPTOR cd_data = NULL; - - if (dev->num_configurations == 0) - return LIBUSB_ERROR_INVALID_PARAM; - - priv->config_descriptor = (unsigned char**) calloc(dev->num_configurations, sizeof(unsigned char*)); - if (priv->config_descriptor == NULL) - return LIBUSB_ERROR_NO_MEM; - for (i=0; inum_configurations; i++) - priv->config_descriptor[i] = NULL; - - for (i=0, r=LIBUSB_SUCCESS; ; i++) - { - // safe loop: release all dynamic resources - safe_free(cd_buf_actual); - - // safe loop: end of loop condition - if ((i >= dev->num_configurations) || (r != LIBUSB_SUCCESS)) - break; - - size = sizeof(USB_CONFIGURATION_DESCRIPTOR_SHORT); - memset(&cd_buf_short, 0, size); - - cd_buf_short.req.ConnectionIndex = (ULONG)priv->port; - cd_buf_short.req.SetupPacket.bmRequest = LIBUSB_ENDPOINT_IN; - cd_buf_short.req.SetupPacket.bRequest = USB_REQUEST_GET_DESCRIPTOR; - cd_buf_short.req.SetupPacket.wValue = (USB_CONFIGURATION_DESCRIPTOR_TYPE << 8) | i; - cd_buf_short.req.SetupPacket.wIndex = 0; - cd_buf_short.req.SetupPacket.wLength = (USHORT)(size - sizeof(USB_DESCRIPTOR_REQUEST)); - - // Dummy call to get the required data size. Initial failures are reported as info rather - // than error as they can occur for non-penalizing situations, such as with some hubs. - // coverity[tainted_data_argument] - if (!DeviceIoControl(hub_handle, IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, &cd_buf_short, size, - &cd_buf_short, size, &ret_size, NULL)) { - usbi_info(ctx, "could not access configuration descriptor (dummy) for '%s': %s", device_id, windows_error_str(0)); - LOOP_BREAK(LIBUSB_ERROR_IO); - } - - if ((ret_size != size) || (cd_buf_short.data.wTotalLength < sizeof(USB_CONFIGURATION_DESCRIPTOR))) { - usbi_info(ctx, "unexpected configuration descriptor size (dummy) for '%s'.", device_id); - LOOP_BREAK(LIBUSB_ERROR_IO); - } - - size = sizeof(USB_DESCRIPTOR_REQUEST) + cd_buf_short.data.wTotalLength; - if ((cd_buf_actual = (PUSB_DESCRIPTOR_REQUEST) calloc(1, size)) == NULL) { - usbi_err(ctx, "could not allocate configuration descriptor buffer for '%s'.", device_id); - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - } - memset(cd_buf_actual, 0, size); - - // Actual call - cd_buf_actual->ConnectionIndex = (ULONG)priv->port; - cd_buf_actual->SetupPacket.bmRequest = LIBUSB_ENDPOINT_IN; - cd_buf_actual->SetupPacket.bRequest = USB_REQUEST_GET_DESCRIPTOR; - cd_buf_actual->SetupPacket.wValue = (USB_CONFIGURATION_DESCRIPTOR_TYPE << 8) | i; - cd_buf_actual->SetupPacket.wIndex = 0; - cd_buf_actual->SetupPacket.wLength = (USHORT)(size - sizeof(USB_DESCRIPTOR_REQUEST)); - - if (!DeviceIoControl(hub_handle, IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, cd_buf_actual, size, - cd_buf_actual, size, &ret_size, NULL)) { - usbi_err(ctx, "could not access configuration descriptor (actual) for '%s': %s", device_id, windows_error_str(0)); - LOOP_BREAK(LIBUSB_ERROR_IO); - } - - cd_data = (PUSB_CONFIGURATION_DESCRIPTOR)((UCHAR*)cd_buf_actual+sizeof(USB_DESCRIPTOR_REQUEST)); - - if ((size != ret_size) || (cd_data->wTotalLength != cd_buf_short.data.wTotalLength)) { - usbi_err(ctx, "unexpected configuration descriptor size (actual) for '%s'.", device_id); - LOOP_BREAK(LIBUSB_ERROR_IO); - } - - if (cd_data->bDescriptorType != USB_CONFIGURATION_DESCRIPTOR_TYPE) { - usbi_err(ctx, "not a configuration descriptor for '%s'", device_id); - LOOP_BREAK(LIBUSB_ERROR_IO); - } - - usbi_dbg("cached config descriptor %d (bConfigurationValue=%d, %d bytes)", - i, cd_data->bConfigurationValue, cd_data->wTotalLength); - - // Cache the descriptor - priv->config_descriptor[i] = (unsigned char*) malloc(cd_data->wTotalLength); - if (priv->config_descriptor[i] == NULL) - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - memcpy(priv->config_descriptor[i], cd_data, cd_data->wTotalLength); - } - return LIBUSB_SUCCESS; -} - -/* - * Populate a libusb device structure - */ -static int init_device(struct libusb_device* dev, struct libusb_device* parent_dev, - uint8_t port_number, char* device_id, DWORD devinst) -{ - HANDLE handle; - DWORD size; - USB_NODE_CONNECTION_INFORMATION_EX conn_info; - USB_NODE_CONNECTION_INFORMATION_EX_V2 conn_info_v2; - struct windows_device_priv *priv, *parent_priv; - struct libusb_context *ctx; - struct libusb_device* tmp_dev; - unsigned long tmp_id; - unsigned i; - - if ((dev == NULL) || (parent_dev == NULL)) { - return LIBUSB_ERROR_NOT_FOUND; - } - ctx = DEVICE_CTX(dev); - priv = _device_priv(dev); - parent_priv = _device_priv(parent_dev); - if (parent_priv->apib->id != USB_API_HUB) { - usbi_warn(ctx, "parent for device '%s' is not a hub", device_id); - return LIBUSB_ERROR_NOT_FOUND; - } - - // It is possible for the parent hub not to have been initialized yet - // If that's the case, lookup the ancestors to set the bus number - if (parent_dev->bus_number == 0) { - for (i=2; ; i++) { - tmp_id = get_ancestor_session_id(devinst, i); - if (tmp_id == 0) break; - tmp_dev = usbi_get_device_by_session_id(ctx, tmp_id); - if (tmp_dev == NULL) continue; - if (tmp_dev->bus_number != 0) { - usbi_dbg("got bus number from ancestor #%d", i); - parent_dev->bus_number = tmp_dev->bus_number; - libusb_unref_device(tmp_dev); - break; - } - libusb_unref_device(tmp_dev); - } - } - if (parent_dev->bus_number == 0) { - usbi_err(ctx, "program assertion failed: unable to find ancestor bus number for '%s'", device_id); - return LIBUSB_ERROR_NOT_FOUND; - } - dev->bus_number = parent_dev->bus_number; - priv->port = port_number; - dev->port_number = port_number; - priv->depth = parent_priv->depth + 1; - priv->parent_dev = parent_dev; - dev->parent_dev = parent_dev; - - // If the device address is already set, we can stop here - if (dev->device_address != 0) { - return LIBUSB_SUCCESS; - } - memset(&conn_info, 0, sizeof(conn_info)); - if (priv->depth != 0) { // Not a HCD hub - handle = CreateFileA(parent_priv->path, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, - FILE_FLAG_OVERLAPPED, NULL); - if (handle == INVALID_HANDLE_VALUE) { - usbi_warn(ctx, "could not open hub %s: %s", parent_priv->path, windows_error_str(0)); - return LIBUSB_ERROR_ACCESS; - } - size = sizeof(conn_info); - conn_info.ConnectionIndex = (ULONG)port_number; - // coverity[tainted_data_argument] - if (!DeviceIoControl(handle, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX, &conn_info, size, - &conn_info, size, &size, NULL)) { - usbi_warn(ctx, "could not get node connection information for device '%s': %s", - device_id, windows_error_str(0)); - safe_closehandle(handle); - return LIBUSB_ERROR_NO_DEVICE; - } - if (conn_info.ConnectionStatus == NoDeviceConnected) { - usbi_err(ctx, "device '%s' is no longer connected!", device_id); - safe_closehandle(handle); - return LIBUSB_ERROR_NO_DEVICE; - } - memcpy(&priv->dev_descriptor, &(conn_info.DeviceDescriptor), sizeof(USB_DEVICE_DESCRIPTOR)); - dev->num_configurations = priv->dev_descriptor.bNumConfigurations; - priv->active_config = conn_info.CurrentConfigurationValue; - usbi_dbg("found %d configurations (active conf: %d)", dev->num_configurations, priv->active_config); - // If we can't read the config descriptors, just set the number of confs to zero - if (cache_config_descriptors(dev, handle, device_id) != LIBUSB_SUCCESS) { - dev->num_configurations = 0; - priv->dev_descriptor.bNumConfigurations = 0; - } - - // In their great wisdom, Microsoft decided to BREAK the USB speed report between Windows 7 and Windows 8 - if (windows_version >= WINDOWS_8) { - memset(&conn_info_v2, 0, sizeof(conn_info_v2)); - size = sizeof(conn_info_v2); - conn_info_v2.ConnectionIndex = (ULONG)port_number; - conn_info_v2.Length = size; - conn_info_v2.SupportedUsbProtocols.Usb300 = 1; - if (!DeviceIoControl(handle, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2, - &conn_info_v2, size, &conn_info_v2, size, &size, NULL)) { - usbi_warn(ctx, "could not get node connection information (V2) for device '%s': %s", - device_id, windows_error_str(0)); - } else if (conn_info_v2.Flags.DeviceIsOperatingAtSuperSpeedOrHigher) { - conn_info.Speed = 3; - } - } - - safe_closehandle(handle); - - if (conn_info.DeviceAddress > UINT8_MAX) { - usbi_err(ctx, "program assertion failed: device address overflow"); - } - dev->device_address = (uint8_t)conn_info.DeviceAddress + 1; - if (dev->device_address == 1) { - usbi_err(ctx, "program assertion failed: device address collision with root hub"); - } - switch (conn_info.Speed) { - case 0: dev->speed = LIBUSB_SPEED_LOW; break; - case 1: dev->speed = LIBUSB_SPEED_FULL; break; - case 2: dev->speed = LIBUSB_SPEED_HIGH; break; - case 3: dev->speed = LIBUSB_SPEED_SUPER; break; - default: - usbi_warn(ctx, "Got unknown device speed %d", conn_info.Speed); - break; - } - } else { - dev->device_address = 1; // root hubs are set to use device number 1 - force_hcd_device_descriptor(dev); - } - - usbi_sanitize_device(dev); - - usbi_dbg("(bus: %d, addr: %d, depth: %d, port: %d): '%s'", - dev->bus_number, dev->device_address, priv->depth, priv->port, device_id); - - return LIBUSB_SUCCESS; -} - -// Returns the api type, or 0 if not found/unsupported -static void get_api_type(struct libusb_context *ctx, HDEVINFO *dev_info, - SP_DEVINFO_DATA *dev_info_data, int *api, int *sub_api) -{ - // Precedence for filter drivers vs driver is in the order of this array - struct driver_lookup lookup[3] = { - {"\0\0", SPDRP_SERVICE, "driver"}, - {"\0\0", SPDRP_UPPERFILTERS, "upper filter driver"}, - {"\0\0", SPDRP_LOWERFILTERS, "lower filter driver"} - }; - DWORD size, reg_type; - unsigned k, l; - int i, j; - - *api = USB_API_UNSUPPORTED; - *sub_api = SUB_API_NOTSET; - // Check the service & filter names to know the API we should use - for (k=0; k<3; k++) { - if (pSetupDiGetDeviceRegistryPropertyA(*dev_info, dev_info_data, lookup[k].reg_prop, - ®_type, (BYTE*)lookup[k].list, MAX_KEY_LENGTH, &size)) { - // Turn the REG_SZ SPDRP_SERVICE into REG_MULTI_SZ - if (lookup[k].reg_prop == SPDRP_SERVICE) { - // our buffers are MAX_KEY_LENGTH+1 so we can overflow if needed - lookup[k].list[safe_strlen(lookup[k].list)+1] = 0; - } - // MULTI_SZ is a pain to work with. Turn it into something much more manageable - // NB: none of the driver names we check against contain LIST_SEPARATOR, - // (currently ';'), so even if an unsuported one does, it's not an issue - for (l=0; (lookup[k].list[l] != 0) || (lookup[k].list[l+1] != 0); l++) { - if (lookup[k].list[l] == 0) { - lookup[k].list[l] = LIST_SEPARATOR; - } - } - usbi_dbg("%s(s): %s", lookup[k].designation, lookup[k].list); - } else { - if (GetLastError() != ERROR_INVALID_DATA) { - usbi_dbg("could not access %s: %s", lookup[k].designation, windows_error_str(0)); - } - lookup[k].list[0] = 0; - } - } - - for (i=1; i= 0) { - usbi_dbg("matched %s name against %s", - lookup[k].designation, (i!=USB_API_WINUSBX)?usb_api_backend[i].designation:sub_api_name[j]); - *api = i; - *sub_api = j; - return; - } - } - } -} - -static int set_composite_interface(struct libusb_context* ctx, struct libusb_device* dev, - char* dev_interface_path, char* device_id, int api, int sub_api) -{ - unsigned i; - struct windows_device_priv *priv = _device_priv(dev); - int interface_number; - - if (priv->apib->id != USB_API_COMPOSITE) { - usbi_err(ctx, "program assertion failed: '%s' is not composite", device_id); - return LIBUSB_ERROR_NO_DEVICE; - } - - // Because MI_## are not necessarily in sequential order (some composite - // devices will have only MI_00 & MI_03 for instance), we retrieve the actual - // interface number from the path's MI value - interface_number = 0; - for (i=0; device_id[i] != 0; ) { - if ( (device_id[i++] == 'M') && (device_id[i++] == 'I') - && (device_id[i++] == '_') ) { - interface_number = (device_id[i++] - '0')*10; - interface_number += device_id[i] - '0'; - break; - } - } - - if (device_id[i] == 0) { - usbi_warn(ctx, "failure to read interface number for %s. Using default value %d", - device_id, interface_number); - } - - if (priv->usb_interface[interface_number].path != NULL) { - if (api == USB_API_HID) { - // HID devices can have multiple collections (COL##) for each MI_## interface - usbi_dbg("interface[%d] already set - ignoring HID collection: %s", - interface_number, device_id); - return LIBUSB_ERROR_ACCESS; - } - // In other cases, just use the latest data - safe_free(priv->usb_interface[interface_number].path); - } - - usbi_dbg("interface[%d] = %s", interface_number, dev_interface_path); - priv->usb_interface[interface_number].path = dev_interface_path; - priv->usb_interface[interface_number].apib = &usb_api_backend[api]; - priv->usb_interface[interface_number].sub_api = sub_api; - if ((api == USB_API_HID) && (priv->hid == NULL)) { - priv->hid = (struct hid_device_priv*) calloc(1, sizeof(struct hid_device_priv)); - if (priv->hid == NULL) - return LIBUSB_ERROR_NO_MEM; - } - - return LIBUSB_SUCCESS; -} - -static int set_hid_interface(struct libusb_context* ctx, struct libusb_device* dev, - char* dev_interface_path) -{ - int i; - struct windows_device_priv *priv = _device_priv(dev); - - if (priv->hid == NULL) { - usbi_err(ctx, "program assertion failed: parent is not HID"); - return LIBUSB_ERROR_NO_DEVICE; - } - if (priv->hid->nb_interfaces == USB_MAXINTERFACES) { - usbi_err(ctx, "program assertion failed: max USB interfaces reached for HID device"); - return LIBUSB_ERROR_NO_DEVICE; - } - for (i=0; ihid->nb_interfaces; i++) { - if (safe_strcmp(priv->usb_interface[i].path, dev_interface_path) == 0) { - usbi_dbg("interface[%d] already set to %s", i, dev_interface_path); - return LIBUSB_SUCCESS; - } - } - - priv->usb_interface[priv->hid->nb_interfaces].path = dev_interface_path; - priv->usb_interface[priv->hid->nb_interfaces].apib = &usb_api_backend[USB_API_HID]; - usbi_dbg("interface[%d] = %s", priv->hid->nb_interfaces, dev_interface_path); - priv->hid->nb_interfaces++; - return LIBUSB_SUCCESS; -} - -/* - * get_device_list: libusb backend device enumeration function - */ -static int windows_get_device_list(struct libusb_context *ctx, struct discovered_devs **_discdevs) -{ - struct discovered_devs *discdevs; - HDEVINFO dev_info = { 0 }; - const char* usb_class[] = {"USB", "NUSB3", "IUSB3"}; - SP_DEVINFO_DATA dev_info_data = { 0 }; - SP_DEVICE_INTERFACE_DETAIL_DATA_A *dev_interface_details = NULL; - GUID hid_guid; -#define MAX_ENUM_GUIDS 64 - const GUID* guid[MAX_ENUM_GUIDS]; -#define HCD_PASS 0 -#define HUB_PASS 1 -#define GEN_PASS 2 -#define DEV_PASS 3 -#define HID_PASS 4 - int r = LIBUSB_SUCCESS; - int api, sub_api; - size_t class_index = 0; - unsigned int nb_guids, pass, i, j, ancestor; - char path[MAX_PATH_LENGTH]; - char strbuf[MAX_PATH_LENGTH]; - struct libusb_device *dev, *parent_dev; - struct windows_device_priv *priv, *parent_priv; - char* dev_interface_path = NULL; - char* dev_id_path = NULL; - unsigned long session_id; - DWORD size, reg_type, port_nr, install_state; - HKEY key; - WCHAR guid_string_w[MAX_GUID_STRING_LENGTH]; - GUID* if_guid; - LONG s; - // Keep a list of newly allocated devs to unref - libusb_device** unref_list; - unsigned int unref_size = 64; - unsigned int unref_cur = 0; - - // PASS 1 : (re)enumerate HCDs (allows for HCD hotplug) - // PASS 2 : (re)enumerate HUBS - // PASS 3 : (re)enumerate generic USB devices (including driverless) - // and list additional USB device interface GUIDs to explore - // PASS 4 : (re)enumerate master USB devices that have a device interface - // PASS 5+: (re)enumerate device interfaced GUIDs (including HID) and - // set the device interfaces. - - // Init the GUID table - guid[HCD_PASS] = &GUID_DEVINTERFACE_USB_HOST_CONTROLLER; - guid[HUB_PASS] = &GUID_DEVINTERFACE_USB_HUB; - guid[GEN_PASS] = NULL; - guid[DEV_PASS] = &GUID_DEVINTERFACE_USB_DEVICE; - HidD_GetHidGuid(&hid_guid); - guid[HID_PASS] = &hid_guid; - nb_guids = HID_PASS+1; - - unref_list = (libusb_device**) calloc(unref_size, sizeof(libusb_device*)); - if (unref_list == NULL) { - return LIBUSB_ERROR_NO_MEM; - } - - for (pass = 0; ((pass < nb_guids) && (r == LIBUSB_SUCCESS)); pass++) { -//#define ENUM_DEBUG -#ifdef ENUM_DEBUG - const char *passname[] = { "HCD", "HUB", "GEN", "DEV", "HID", "EXT" }; - usbi_dbg("#### PROCESSING %ss %s", passname[(pass<=HID_PASS)?pass:HID_PASS+1], - (pass!=GEN_PASS)?guid_to_string(guid[pass]):""); -#endif - for (i = 0; ; i++) { - // safe loop: free up any (unprotected) dynamic resource - // NB: this is always executed before breaking the loop - safe_free(dev_interface_details); - safe_free(dev_interface_path); - safe_free(dev_id_path); - priv = parent_priv = NULL; - dev = parent_dev = NULL; - - // Safe loop: end of loop conditions - if (r != LIBUSB_SUCCESS) { - break; - } - if ((pass == HCD_PASS) && (i == UINT8_MAX)) { - usbi_warn(ctx, "program assertion failed - found more than %d buses, skipping the rest.", UINT8_MAX); - break; - } - if (pass != GEN_PASS) { - // Except for GEN, all passes deal with device interfaces - dev_interface_details = get_interface_details(ctx, &dev_info, &dev_info_data, guid[pass], i); - if (dev_interface_details == NULL) { - break; - } else { - dev_interface_path = sanitize_path(dev_interface_details->DevicePath); - if (dev_interface_path == NULL) { - usbi_warn(ctx, "could not sanitize device interface path for '%s'", dev_interface_details->DevicePath); - continue; - } - } - } else { - // Workaround for a Nec/Renesas USB 3.0 driver bug where root hubs are - // being listed under the "NUSB3" PnP Symbolic Name rather than "USB". - // The Intel USB 3.0 driver behaves similar, but uses "IUSB3" - for (; class_index < ARRAYSIZE(usb_class); class_index++) { - if (get_devinfo_data(ctx, &dev_info, &dev_info_data, usb_class[class_index], i)) - break; - i = 0; - } - if (class_index >= ARRAYSIZE(usb_class)) - break; - } - - // Read the Device ID path. This is what we'll use as UID - // Note that if the device is plugged in a different port or hub, the Device ID changes - if (CM_Get_Device_IDA(dev_info_data.DevInst, path, sizeof(path), 0) != CR_SUCCESS) { - usbi_warn(ctx, "could not read the device id path for devinst %X, skipping", - dev_info_data.DevInst); - continue; - } - dev_id_path = sanitize_path(path); - if (dev_id_path == NULL) { - usbi_warn(ctx, "could not sanitize device id path for devinst %X, skipping", - dev_info_data.DevInst); - continue; - } -#ifdef ENUM_DEBUG - usbi_dbg("PRO: %s", dev_id_path); -#endif - - // The SPDRP_ADDRESS for USB devices is the device port number on the hub - port_nr = 0; - if ((pass >= HUB_PASS) && (pass <= GEN_PASS)) { - if ( (!pSetupDiGetDeviceRegistryPropertyA(dev_info, &dev_info_data, SPDRP_ADDRESS, - ®_type, (BYTE*)&port_nr, 4, &size)) - || (size != 4) ) { - usbi_warn(ctx, "could not retrieve port number for device '%s', skipping: %s", - dev_id_path, windows_error_str(0)); - continue; - } - } - - // Set API to use or get additional data from generic pass - api = USB_API_UNSUPPORTED; - sub_api = SUB_API_NOTSET; - switch (pass) { - case HCD_PASS: - break; - case GEN_PASS: - // We use the GEN pass to detect driverless devices... - size = sizeof(strbuf); - if (!pSetupDiGetDeviceRegistryPropertyA(dev_info, &dev_info_data, SPDRP_DRIVER, - ®_type, (BYTE*)strbuf, size, &size)) { - usbi_info(ctx, "The following device has no driver: '%s'", dev_id_path); - usbi_info(ctx, "libusb will not be able to access it."); - } - // ...and to add the additional device interface GUIDs - key = pSetupDiOpenDevRegKey(dev_info, &dev_info_data, DICS_FLAG_GLOBAL, 0, DIREG_DEV, KEY_READ); - if (key != INVALID_HANDLE_VALUE) { - size = sizeof(guid_string_w); - s = pRegQueryValueExW(key, L"DeviceInterfaceGUIDs", NULL, ®_type, - (BYTE*)guid_string_w, &size); - pRegCloseKey(key); - if (s == ERROR_SUCCESS) { - if (nb_guids >= MAX_ENUM_GUIDS) { - // If this assert is ever reported, grow a GUID table dynamically - usbi_err(ctx, "program assertion failed: too many GUIDs"); - LOOP_BREAK(LIBUSB_ERROR_OVERFLOW); - } - if_guid = (GUID*) calloc(1, sizeof(GUID)); - if (if_guid == NULL) { - usbi_err(ctx, "could not calloc for if_guid: not enough memory"); - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - } - pCLSIDFromString(guid_string_w, if_guid); - guid[nb_guids++] = if_guid; - usbi_dbg("extra GUID: %s", guid_to_string(if_guid)); - } - } - break; - case HID_PASS: - api = USB_API_HID; - break; - default: - // Get the API type (after checking that the driver installation is OK) - if ( (!pSetupDiGetDeviceRegistryPropertyA(dev_info, &dev_info_data, SPDRP_INSTALL_STATE, - ®_type, (BYTE*)&install_state, 4, &size)) - || (size != 4) ){ - usbi_warn(ctx, "could not detect installation state of driver for '%s': %s", - dev_id_path, windows_error_str(0)); - } else if (install_state != 0) { - usbi_warn(ctx, "driver for device '%s' is reporting an issue (code: %d) - skipping", - dev_id_path, install_state); - continue; - } - get_api_type(ctx, &dev_info, &dev_info_data, &api, &sub_api); - break; - } - - // Find parent device (for the passes that need it) - switch (pass) { - case HCD_PASS: - case DEV_PASS: - case HUB_PASS: - break; - default: - // Go through the ancestors until we see a face we recognize - parent_dev = NULL; - for (ancestor = 1; parent_dev == NULL; ancestor++) { - session_id = get_ancestor_session_id(dev_info_data.DevInst, ancestor); - if (session_id == 0) { - break; - } - parent_dev = usbi_get_device_by_session_id(ctx, session_id); - } - if (parent_dev == NULL) { - usbi_dbg("unlisted ancestor for '%s' (non USB HID, newly connected, etc.) - ignoring", dev_id_path); - continue; - } - parent_priv = _device_priv(parent_dev); - // virtual USB devices are also listed during GEN - don't process these yet - if ( (pass == GEN_PASS) && (parent_priv->apib->id != USB_API_HUB) ) { - libusb_unref_device(parent_dev); - continue; - } - break; - } - - // Create new or match existing device, using the (hashed) device_id as session id - if (pass <= DEV_PASS) { // For subsequent passes, we'll lookup the parent - // These are the passes that create "new" devices - session_id = htab_hash(dev_id_path); - dev = usbi_get_device_by_session_id(ctx, session_id); - if (dev == NULL) { - if (pass == DEV_PASS) { - // This can occur if the OS only reports a newly plugged device after we started enum - usbi_warn(ctx, "'%s' was only detected in late pass (newly connected device?)" - " - ignoring", dev_id_path); - continue; - } - usbi_dbg("allocating new device for session [%X]", session_id); - if ((dev = usbi_alloc_device(ctx, session_id)) == NULL) { - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - } - windows_device_priv_init(dev); - } else { - usbi_dbg("found existing device for session [%X] (%d.%d)", - session_id, dev->bus_number, dev->device_address); - } - // Keep track of devices that need unref - unref_list[unref_cur++] = dev; - if (unref_cur >= unref_size) { - unref_size += 64; - unref_list = usbi_reallocf(unref_list, unref_size*sizeof(libusb_device*)); - if (unref_list == NULL) { - usbi_err(ctx, "could not realloc list for unref - aborting."); - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - } - } - priv = _device_priv(dev); - } - - // Setup device - switch (pass) { - case HCD_PASS: - dev->bus_number = (uint8_t)(i + 1); // bus 0 is reserved for disconnected - dev->device_address = 0; - dev->num_configurations = 0; - priv->apib = &usb_api_backend[USB_API_HUB]; - priv->sub_api = SUB_API_NOTSET; - priv->depth = UINT8_MAX; // Overflow to 0 for HCD Hubs - priv->path = dev_interface_path; dev_interface_path = NULL; - break; - case HUB_PASS: - case DEV_PASS: - // If the device has already been setup, don't do it again - if (priv->path != NULL) - break; - // Take care of API initialization - priv->path = dev_interface_path; dev_interface_path = NULL; - priv->apib = &usb_api_backend[api]; - priv->sub_api = sub_api; - switch(api) { - case USB_API_COMPOSITE: - case USB_API_HUB: - break; - case USB_API_HID: - priv->hid = calloc(1, sizeof(struct hid_device_priv)); - if (priv->hid == NULL) { - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - } - priv->hid->nb_interfaces = 0; - break; - default: - // For other devices, the first interface is the same as the device - priv->usb_interface[0].path = (char*) calloc(safe_strlen(priv->path)+1, 1); - if (priv->usb_interface[0].path != NULL) { - safe_strcpy(priv->usb_interface[0].path, safe_strlen(priv->path)+1, priv->path); - } else { - usbi_warn(ctx, "could not duplicate interface path '%s'", priv->path); - } - // The following is needed if we want API calls to work for both simple - // and composite devices. - for(j=0; jusb_interface[j].apib = &usb_api_backend[api]; - } - break; - } - break; - case GEN_PASS: - r = init_device(dev, parent_dev, (uint8_t)port_nr, dev_id_path, dev_info_data.DevInst); - if (r == LIBUSB_SUCCESS) { - // Append device to the list of discovered devices - discdevs = discovered_devs_append(*_discdevs, dev); - if (!discdevs) { - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - } - *_discdevs = discdevs; - } else if (r == LIBUSB_ERROR_NO_DEVICE) { - // This can occur if the device was disconnected but Windows hasn't - // refreshed its enumeration yet - in that case, we ignore the device - r = LIBUSB_SUCCESS; - } - break; - default: // HID_PASS and later - if (parent_priv->apib->id == USB_API_HID) { - usbi_dbg("setting HID interface for [%lX]:", parent_dev->session_data); - r = set_hid_interface(ctx, parent_dev, dev_interface_path); - if (r != LIBUSB_SUCCESS) LOOP_BREAK(r); - dev_interface_path = NULL; - } else if (parent_priv->apib->id == USB_API_COMPOSITE) { - usbi_dbg("setting composite interface for [%lX]:", parent_dev->session_data); - switch (set_composite_interface(ctx, parent_dev, dev_interface_path, dev_id_path, api, sub_api)) { - case LIBUSB_SUCCESS: - dev_interface_path = NULL; - break; - case LIBUSB_ERROR_ACCESS: - // interface has already been set => make sure dev_interface_path is freed then - break; - default: - LOOP_BREAK(r); - break; - } - } - libusb_unref_device(parent_dev); - break; - } - } - } - - // Free any additional GUIDs - for (pass = HID_PASS+1; pass < nb_guids; pass++) { - safe_free(guid[pass]); - } - - // Unref newly allocated devs - if (unref_list != NULL) { - for (i=0; i any concurent wait stalls until the semaphore release - if (WaitForSingleObject(semaphore, INFINITE) != WAIT_OBJECT_0) { - CloseHandle(semaphore); - return; - } - - // Only works if exits and inits are balanced exactly - if (--concurrent_usage < 0) { // Last exit - for (i=0; idev_descriptor), DEVICE_DESC_LENGTH); - *host_endian = 0; - - return LIBUSB_SUCCESS; -} - -static int windows_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len, int *host_endian) -{ - struct windows_device_priv *priv = _device_priv(dev); - PUSB_CONFIGURATION_DESCRIPTOR config_header; - size_t size; - - // config index is zero based - if (config_index >= dev->num_configurations) - return LIBUSB_ERROR_INVALID_PARAM; - - if ((priv->config_descriptor == NULL) || (priv->config_descriptor[config_index] == NULL)) - return LIBUSB_ERROR_NOT_FOUND; - - config_header = (PUSB_CONFIGURATION_DESCRIPTOR)priv->config_descriptor[config_index]; - - size = MIN(config_header->wTotalLength, len); - memcpy(buffer, priv->config_descriptor[config_index], size); - *host_endian = 0; - - return (int)size; -} - -/* - * return the cached copy of the active config descriptor - */ -static int windows_get_active_config_descriptor(struct libusb_device *dev, unsigned char *buffer, size_t len, int *host_endian) -{ - struct windows_device_priv *priv = _device_priv(dev); - - if (priv->active_config == 0) - return LIBUSB_ERROR_NOT_FOUND; - - // config index is zero based - return windows_get_config_descriptor(dev, (uint8_t)(priv->active_config-1), buffer, len, host_endian); -} - -static int windows_open(struct libusb_device_handle *dev_handle) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - - if (priv->apib == NULL) { - usbi_err(ctx, "program assertion failed - device is not initialized"); - return LIBUSB_ERROR_NO_DEVICE; - } - - return priv->apib->open(SUB_API_NOTSET, dev_handle); -} - -static void windows_close(struct libusb_device_handle *dev_handle) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - - priv->apib->close(SUB_API_NOTSET, dev_handle); -} - -static int windows_get_configuration(struct libusb_device_handle *dev_handle, int *config) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - - if (priv->active_config == 0) { - *config = 0; - return LIBUSB_ERROR_NOT_FOUND; - } - - *config = priv->active_config; - return LIBUSB_SUCCESS; -} - -/* - * from http://msdn.microsoft.com/en-us/library/ms793522.aspx: "The port driver - * does not currently expose a service that allows higher-level drivers to set - * the configuration." - */ -static int windows_set_configuration(struct libusb_device_handle *dev_handle, int config) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - int r = LIBUSB_SUCCESS; - - if (config >= USB_MAXCONFIG) - return LIBUSB_ERROR_INVALID_PARAM; - - r = libusb_control_transfer(dev_handle, LIBUSB_ENDPOINT_OUT | - LIBUSB_REQUEST_TYPE_STANDARD | LIBUSB_RECIPIENT_DEVICE, - LIBUSB_REQUEST_SET_CONFIGURATION, (uint16_t)config, - 0, NULL, 0, 1000); - - if (r == LIBUSB_SUCCESS) { - priv->active_config = (uint8_t)config; - } - return r; -} - -static int windows_claim_interface(struct libusb_device_handle *dev_handle, int iface) -{ - int r = LIBUSB_SUCCESS; - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - - safe_free(priv->usb_interface[iface].endpoint); - priv->usb_interface[iface].nb_endpoints= 0; - - r = priv->apib->claim_interface(SUB_API_NOTSET, dev_handle, iface); - - if (r == LIBUSB_SUCCESS) { - r = windows_assign_endpoints(dev_handle, iface, 0); - } - - return r; -} - -static int windows_set_interface_altsetting(struct libusb_device_handle *dev_handle, int iface, int altsetting) -{ - int r = LIBUSB_SUCCESS; - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - - safe_free(priv->usb_interface[iface].endpoint); - priv->usb_interface[iface].nb_endpoints= 0; - - r = priv->apib->set_interface_altsetting(SUB_API_NOTSET, dev_handle, iface, altsetting); - - if (r == LIBUSB_SUCCESS) { - r = windows_assign_endpoints(dev_handle, iface, altsetting); - } - - return r; -} - -static int windows_release_interface(struct libusb_device_handle *dev_handle, int iface) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - - return priv->apib->release_interface(SUB_API_NOTSET, dev_handle, iface); -} - -static int windows_clear_halt(struct libusb_device_handle *dev_handle, unsigned char endpoint) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - return priv->apib->clear_halt(SUB_API_NOTSET, dev_handle, endpoint); -} - -static int windows_reset_device(struct libusb_device_handle *dev_handle) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - return priv->apib->reset_device(SUB_API_NOTSET, dev_handle); -} - -// The 3 functions below are unlikely to ever get supported on Windows -static int windows_kernel_driver_active(struct libusb_device_handle *dev_handle, int iface) -{ - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -static int windows_attach_kernel_driver(struct libusb_device_handle *dev_handle, int iface) -{ - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -static int windows_detach_kernel_driver(struct libusb_device_handle *dev_handle, int iface) -{ - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -static void windows_destroy_device(struct libusb_device *dev) -{ - windows_device_priv_release(dev); -} - -static void windows_clear_transfer_priv(struct usbi_transfer *itransfer) -{ - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - - usbi_free_fd(&transfer_priv->pollable_fd); - safe_free(transfer_priv->hid_buffer); - // When auto claim is in use, attempt to release the auto-claimed interface - auto_release(itransfer); -} - -static int submit_bulk_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int r; - - r = priv->apib->submit_bulk_transfer(SUB_API_NOTSET, itransfer); - if (r != LIBUSB_SUCCESS) { - return r; - } - - usbi_add_pollfd(ctx, transfer_priv->pollable_fd.fd, - (short)(IS_XFERIN(transfer) ? POLLIN : POLLOUT)); - - return LIBUSB_SUCCESS; -} - -static int submit_iso_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int r; - - r = priv->apib->submit_iso_transfer(SUB_API_NOTSET, itransfer); - if (r != LIBUSB_SUCCESS) { - return r; - } - - usbi_add_pollfd(ctx, transfer_priv->pollable_fd.fd, - (short)(IS_XFERIN(transfer) ? POLLIN : POLLOUT)); - - return LIBUSB_SUCCESS; -} - -static int submit_control_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int r; - - r = priv->apib->submit_control_transfer(SUB_API_NOTSET, itransfer); - if (r != LIBUSB_SUCCESS) { - return r; - } - - usbi_add_pollfd(ctx, transfer_priv->pollable_fd.fd, POLLIN); - - return LIBUSB_SUCCESS; - -} - -static int windows_submit_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - return submit_control_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - if (IS_XFEROUT(transfer) && - transfer->flags & LIBUSB_TRANSFER_ADD_ZERO_PACKET) - return LIBUSB_ERROR_NOT_SUPPORTED; - return submit_bulk_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - return submit_iso_transfer(itransfer); - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - return LIBUSB_ERROR_NOT_SUPPORTED; - default: - usbi_err(TRANSFER_CTX(transfer), "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -static int windows_abort_control(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - - return priv->apib->abort_control(SUB_API_NOTSET, itransfer); -} - -static int windows_abort_transfers(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - - return priv->apib->abort_transfers(SUB_API_NOTSET, itransfer); -} - -static int windows_cancel_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - return windows_abort_control(itransfer); - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - return windows_abort_transfers(itransfer); - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - return LIBUSB_ERROR_NOT_SUPPORTED; - default: - usbi_err(ITRANSFER_CTX(itransfer), "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -static void windows_transfer_callback(struct usbi_transfer *itransfer, uint32_t io_result, uint32_t io_size) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int status, istatus; - - usbi_dbg("handling I/O completion with errcode %d, size %d", io_result, io_size); - - switch(io_result) { - case NO_ERROR: - status = priv->apib->copy_transfer_data(SUB_API_NOTSET, itransfer, io_size); - break; - case ERROR_GEN_FAILURE: - usbi_dbg("detected endpoint stall"); - status = LIBUSB_TRANSFER_STALL; - break; - case ERROR_SEM_TIMEOUT: - usbi_dbg("detected semaphore timeout"); - status = LIBUSB_TRANSFER_TIMED_OUT; - break; - case ERROR_OPERATION_ABORTED: - istatus = priv->apib->copy_transfer_data(SUB_API_NOTSET, itransfer, io_size); - if (istatus != LIBUSB_TRANSFER_COMPLETED) { - usbi_dbg("Failed to copy partial data in aborted operation: %d", istatus); - } - if (itransfer->flags & USBI_TRANSFER_TIMED_OUT) { - usbi_dbg("detected timeout"); - status = LIBUSB_TRANSFER_TIMED_OUT; - } else { - usbi_dbg("detected operation aborted"); - status = LIBUSB_TRANSFER_CANCELLED; - } - break; - default: - usbi_err(ITRANSFER_CTX(itransfer), "detected I/O error %d: %s", io_result, windows_error_str(io_result)); - status = LIBUSB_TRANSFER_ERROR; - break; - } - windows_clear_transfer_priv(itransfer); // Cancel polling - usbi_handle_transfer_completion(itransfer, (enum libusb_transfer_status)status); -} - -static void windows_handle_callback (struct usbi_transfer *itransfer, uint32_t io_result, uint32_t io_size) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - windows_transfer_callback (itransfer, io_result, io_size); - break; - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - usbi_warn(ITRANSFER_CTX(itransfer), "bulk stream transfers are not yet supported on this platform"); - break; - default: - usbi_err(ITRANSFER_CTX(itransfer), "unknown endpoint type %d", transfer->type); - } -} - -static int windows_handle_events(struct libusb_context *ctx, struct pollfd *fds, POLL_NFDS_TYPE nfds, int num_ready) -{ - struct windows_transfer_priv* transfer_priv = NULL; - POLL_NFDS_TYPE i = 0; - bool found; - struct usbi_transfer *transfer; - DWORD io_size, io_result; - - usbi_mutex_lock(&ctx->open_devs_lock); - for (i = 0; i < nfds && num_ready > 0; i++) { - - usbi_dbg("checking fd %d with revents = %04x", fds[i].fd, fds[i].revents); - - if (!fds[i].revents) { - continue; - } - - num_ready--; - - // Because a Windows OVERLAPPED is used for poll emulation, - // a pollable fd is created and stored with each transfer - usbi_mutex_lock(&ctx->flying_transfers_lock); - found = false; - list_for_each_entry(transfer, &ctx->flying_transfers, list, struct usbi_transfer) { - transfer_priv = usbi_transfer_get_os_priv(transfer); - if (transfer_priv->pollable_fd.fd == fds[i].fd) { - found = true; - break; - } - } - usbi_mutex_unlock(&ctx->flying_transfers_lock); - - if (found) { - // Handle async requests that completed synchronously first - if (HasOverlappedIoCompletedSync(transfer_priv->pollable_fd.overlapped)) { - io_result = NO_ERROR; - io_size = (DWORD)transfer_priv->pollable_fd.overlapped->InternalHigh; - // Regular async overlapped - } else if (GetOverlappedResult(transfer_priv->pollable_fd.handle, - transfer_priv->pollable_fd.overlapped, &io_size, false)) { - io_result = NO_ERROR; - } else { - io_result = GetLastError(); - } - usbi_remove_pollfd(ctx, transfer_priv->pollable_fd.fd); - // let handle_callback free the event using the transfer wfd - // If you don't use the transfer wfd, you run a risk of trying to free a - // newly allocated wfd that took the place of the one from the transfer. - windows_handle_callback(transfer, io_result, io_size); - } else { - usbi_mutex_unlock(&ctx->open_devs_lock); - usbi_err(ctx, "could not find a matching transfer for fd %x", fds[i]); - return LIBUSB_ERROR_NOT_FOUND; - } - } - - usbi_mutex_unlock(&ctx->open_devs_lock); - return LIBUSB_SUCCESS; -} - -/* - * Monotonic and real time functions - */ -unsigned __stdcall windows_clock_gettime_threaded(void* param) -{ - struct timer_request *request; - LARGE_INTEGER hires_counter; - MSG msg; - - // The following call will create this thread's message queue - // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms644946.aspx - pPeekMessageA(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE); - - // Signal windows_init() that we're ready to service requests - if (!SetEvent((HANDLE)param)) { - usbi_dbg("SetEvent failed for timer init event: %s", windows_error_str(0)); - } - param = NULL; - - // Main loop - wait for requests - while (1) { - if (pGetMessageA(&msg, NULL, WM_TIMER_REQUEST, WM_TIMER_EXIT) == -1) { - usbi_err(NULL, "GetMessage failed for timer thread: %s", windows_error_str(0)); - return 1; - } - - switch (msg.message) { - case WM_TIMER_REQUEST: - // Requests to this thread are for hires always - // Microsoft says that this function always succeeds on XP and later - // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms644904.aspx - request = (struct timer_request *)msg.lParam; - QueryPerformanceCounter(&hires_counter); - request->tp->tv_sec = (long)(hires_counter.QuadPart / hires_frequency); - request->tp->tv_nsec = (long)(((hires_counter.QuadPart % hires_frequency) / 1000) * hires_ticks_to_ps); - if (!SetEvent(request->event)) { - usbi_err(NULL, "SetEvent failed for timer request: %s", windows_error_str(0)); - } - break; - - case WM_TIMER_EXIT: - usbi_dbg("timer thread quitting"); - return 0; - } - } -} - -static int windows_clock_gettime(int clk_id, struct timespec *tp) -{ - struct timer_request request; - FILETIME filetime; - ULARGE_INTEGER rtime; - DWORD r; - switch(clk_id) { - case USBI_CLOCK_MONOTONIC: - if (timer_thread) { - request.tp = tp; - request.event = CreateEvent(NULL, FALSE, FALSE, NULL); - if (request.event == NULL) { - return LIBUSB_ERROR_NO_MEM; - } - - if (!pPostThreadMessageA(timer_thread_id, WM_TIMER_REQUEST, 0, (LPARAM)&request)) { - usbi_err(NULL, "PostThreadMessage failed for timer thread: %s", windows_error_str(0)); - CloseHandle(request.event); - return LIBUSB_ERROR_OTHER; - } - - do { - r = WaitForSingleObject(request.event, TIMER_REQUEST_RETRY_MS); - if (r == WAIT_TIMEOUT) { - usbi_dbg("could not obtain a timer value within reasonable timeframe - too much load?"); - } - else if (r == WAIT_FAILED) { - usbi_err(NULL, "WaitForSingleObject failed: %s", windows_error_str(0)); - } - } while (r == WAIT_TIMEOUT); - CloseHandle(request.event); - - if (r == WAIT_OBJECT_0) { - return LIBUSB_SUCCESS; - } - else { - return LIBUSB_ERROR_OTHER; - } - } - // Fall through and return real-time if monotonic was not detected @ timer init - case USBI_CLOCK_REALTIME: - // We follow http://msdn.microsoft.com/en-us/library/ms724928%28VS.85%29.aspx - // with a predef epoch_time to have an epoch that starts at 1970.01.01 00:00 - // Note however that our resolution is bounded by the Windows system time - // functions and is at best of the order of 1 ms (or, usually, worse) - GetSystemTimeAsFileTime(&filetime); - rtime.LowPart = filetime.dwLowDateTime; - rtime.HighPart = filetime.dwHighDateTime; - rtime.QuadPart -= epoch_time; - tp->tv_sec = (long)(rtime.QuadPart / 10000000); - tp->tv_nsec = (long)((rtime.QuadPart % 10000000)*100); - return LIBUSB_SUCCESS; - default: - return LIBUSB_ERROR_INVALID_PARAM; - } -} - - -// NB: MSVC6 does not support named initializers. -const struct usbi_os_backend windows_backend = { - "Windows", - USBI_CAP_HAS_HID_ACCESS, - windows_init, - windows_exit, - - windows_get_device_list, - NULL, /* hotplug_poll */ - windows_open, - windows_close, - - windows_get_device_descriptor, - windows_get_active_config_descriptor, - windows_get_config_descriptor, - NULL, /* get_config_descriptor_by_value() */ - - windows_get_configuration, - windows_set_configuration, - windows_claim_interface, - windows_release_interface, - - windows_set_interface_altsetting, - windows_clear_halt, - windows_reset_device, - - NULL, /* alloc_streams */ - NULL, /* free_streams */ - - windows_kernel_driver_active, - windows_detach_kernel_driver, - windows_attach_kernel_driver, - - windows_destroy_device, - - windows_submit_transfer, - windows_cancel_transfer, - windows_clear_transfer_priv, - - windows_handle_events, - NULL, /* handle_transfer_completion() */ - - windows_clock_gettime, -#if defined(USBI_TIMERFD_AVAILABLE) - NULL, -#endif - sizeof(struct windows_device_priv), - sizeof(struct windows_device_handle_priv), - sizeof(struct windows_transfer_priv), -}; - - -/* - * USB API backends - */ -static int unsupported_init(int sub_api, struct libusb_context *ctx) { - return LIBUSB_SUCCESS; -} -static int unsupported_exit(int sub_api) { - return LIBUSB_SUCCESS; -} -static int unsupported_open(int sub_api, struct libusb_device_handle *dev_handle) { - PRINT_UNSUPPORTED_API(open); -} -static void unsupported_close(int sub_api, struct libusb_device_handle *dev_handle) { - usbi_dbg("unsupported API call for 'close'"); -} -static int unsupported_configure_endpoints(int sub_api, struct libusb_device_handle *dev_handle, int iface) { - PRINT_UNSUPPORTED_API(configure_endpoints); -} -static int unsupported_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface) { - PRINT_UNSUPPORTED_API(claim_interface); -} -static int unsupported_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting) { - PRINT_UNSUPPORTED_API(set_interface_altsetting); -} -static int unsupported_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface) { - PRINT_UNSUPPORTED_API(release_interface); -} -static int unsupported_clear_halt(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint) { - PRINT_UNSUPPORTED_API(clear_halt); -} -static int unsupported_reset_device(int sub_api, struct libusb_device_handle *dev_handle) { - PRINT_UNSUPPORTED_API(reset_device); -} -static int unsupported_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer) { - PRINT_UNSUPPORTED_API(submit_bulk_transfer); -} -static int unsupported_submit_iso_transfer(int sub_api, struct usbi_transfer *itransfer) { - PRINT_UNSUPPORTED_API(submit_iso_transfer); -} -static int unsupported_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer) { - PRINT_UNSUPPORTED_API(submit_control_transfer); -} -static int unsupported_abort_control(int sub_api, struct usbi_transfer *itransfer) { - PRINT_UNSUPPORTED_API(abort_control); -} -static int unsupported_abort_transfers(int sub_api, struct usbi_transfer *itransfer) { - PRINT_UNSUPPORTED_API(abort_transfers); -} -static int unsupported_copy_transfer_data(int sub_api, struct usbi_transfer *itransfer, uint32_t io_size) { - PRINT_UNSUPPORTED_API(copy_transfer_data); -} -static int common_configure_endpoints(int sub_api, struct libusb_device_handle *dev_handle, int iface) { - return LIBUSB_SUCCESS; -} -// These names must be uppercase -const char* hub_driver_names[] = {"USBHUB", "USBHUB3", "USB3HUB", "NUSB3HUB", "RUSB3HUB", "FLXHCIH", "TIHUB3", "ETRONHUB3", "VIAHUB3", "ASMTHUB3", "IUSB3HUB", "VUSB3HUB", "AMDHUB30"}; -const char* composite_driver_names[] = {"USBCCGP"}; -const char* winusbx_driver_names[] = WINUSBX_DRV_NAMES; -const char* hid_driver_names[] = {"HIDUSB", "MOUHID", "KBDHID"}; -const struct windows_usb_api_backend usb_api_backend[USB_API_MAX] = { - { - USB_API_UNSUPPORTED, - "Unsupported API", - NULL, - 0, - unsupported_init, - unsupported_exit, - unsupported_open, - unsupported_close, - unsupported_configure_endpoints, - unsupported_claim_interface, - unsupported_set_interface_altsetting, - unsupported_release_interface, - unsupported_clear_halt, - unsupported_reset_device, - unsupported_submit_bulk_transfer, - unsupported_submit_iso_transfer, - unsupported_submit_control_transfer, - unsupported_abort_control, - unsupported_abort_transfers, - unsupported_copy_transfer_data, - }, { - USB_API_HUB, - "HUB API", - hub_driver_names, - ARRAYSIZE(hub_driver_names), - unsupported_init, - unsupported_exit, - unsupported_open, - unsupported_close, - unsupported_configure_endpoints, - unsupported_claim_interface, - unsupported_set_interface_altsetting, - unsupported_release_interface, - unsupported_clear_halt, - unsupported_reset_device, - unsupported_submit_bulk_transfer, - unsupported_submit_iso_transfer, - unsupported_submit_control_transfer, - unsupported_abort_control, - unsupported_abort_transfers, - unsupported_copy_transfer_data, - }, { - USB_API_COMPOSITE, - "Composite API", - composite_driver_names, - ARRAYSIZE(composite_driver_names), - composite_init, - composite_exit, - composite_open, - composite_close, - common_configure_endpoints, - composite_claim_interface, - composite_set_interface_altsetting, - composite_release_interface, - composite_clear_halt, - composite_reset_device, - composite_submit_bulk_transfer, - composite_submit_iso_transfer, - composite_submit_control_transfer, - composite_abort_control, - composite_abort_transfers, - composite_copy_transfer_data, - }, { - USB_API_WINUSBX, - "WinUSB-like APIs", - winusbx_driver_names, - ARRAYSIZE(winusbx_driver_names), - winusbx_init, - winusbx_exit, - winusbx_open, - winusbx_close, - winusbx_configure_endpoints, - winusbx_claim_interface, - winusbx_set_interface_altsetting, - winusbx_release_interface, - winusbx_clear_halt, - winusbx_reset_device, - winusbx_submit_bulk_transfer, - unsupported_submit_iso_transfer, - winusbx_submit_control_transfer, - winusbx_abort_control, - winusbx_abort_transfers, - winusbx_copy_transfer_data, - }, { - USB_API_HID, - "HID API", - hid_driver_names, - ARRAYSIZE(hid_driver_names), - hid_init, - hid_exit, - hid_open, - hid_close, - common_configure_endpoints, - hid_claim_interface, - hid_set_interface_altsetting, - hid_release_interface, - hid_clear_halt, - hid_reset_device, - hid_submit_bulk_transfer, - unsupported_submit_iso_transfer, - hid_submit_control_transfer, - hid_abort_transfers, - hid_abort_transfers, - hid_copy_transfer_data, - }, -}; - - -/* - * WinUSB-like (WinUSB, libusb0/libusbK through libusbk DLL) API functions - */ -#define WinUSBX_Set(fn) do { if (native_winusb) WinUSBX[i].fn = (WinUsb_##fn##_t) GetProcAddress(h, "WinUsb_" #fn); \ - else pLibK_GetProcAddress((PVOID*)&WinUSBX[i].fn, i, KUSB_FNID_##fn); } while (0) - -static int winusbx_init(int sub_api, struct libusb_context *ctx) -{ - HMODULE h = NULL; - bool native_winusb = false; - int i; - KLIB_VERSION LibK_Version; - LibK_GetProcAddress_t pLibK_GetProcAddress = NULL; - LibK_GetVersion_t pLibK_GetVersion = NULL; - - h = GetModuleHandleA("libusbK"); - if (h == NULL) { - h = LoadLibraryA("libusbK"); - } - if (h == NULL) { - usbi_info(ctx, "libusbK DLL is not available, will use native WinUSB"); - h = GetModuleHandleA("WinUSB"); - if (h == NULL) { - h = LoadLibraryA("WinUSB"); - } if (h == NULL) { - usbi_warn(ctx, "WinUSB DLL is not available either, " - "you will not be able to access devices outside of enumeration"); - return LIBUSB_ERROR_NOT_FOUND; - } - } else { - usbi_dbg("using libusbK DLL for universal access"); - pLibK_GetVersion = (LibK_GetVersion_t) GetProcAddress(h, "LibK_GetVersion"); - if (pLibK_GetVersion != NULL) { - pLibK_GetVersion(&LibK_Version); - usbi_dbg("libusbK version: %d.%d.%d.%d", LibK_Version.Major, LibK_Version.Minor, - LibK_Version.Micro, LibK_Version.Nano); - } - pLibK_GetProcAddress = (LibK_GetProcAddress_t) GetProcAddress(h, "LibK_GetProcAddress"); - if (pLibK_GetProcAddress == NULL) { - usbi_err(ctx, "LibK_GetProcAddress() not found in libusbK DLL"); - return LIBUSB_ERROR_NOT_FOUND; - } - } - native_winusb = (pLibK_GetProcAddress == NULL); - for (i=SUB_API_LIBUSBK; idev); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - - HANDLE file_handle; - int i; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - // WinUSB requires a seperate handle for each interface - for (i = 0; i < USB_MAXINTERFACES; i++) { - if ( (priv->usb_interface[i].path != NULL) - && (priv->usb_interface[i].apib->id == USB_API_WINUSBX) ) { - file_handle = CreateFileA(priv->usb_interface[i].path, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, - NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL); - if (file_handle == INVALID_HANDLE_VALUE) { - usbi_err(ctx, "could not open device %s (interface %d): %s", priv->usb_interface[i].path, i, windows_error_str(0)); - switch(GetLastError()) { - case ERROR_FILE_NOT_FOUND: // The device was disconnected - return LIBUSB_ERROR_NO_DEVICE; - case ERROR_ACCESS_DENIED: - return LIBUSB_ERROR_ACCESS; - default: - return LIBUSB_ERROR_IO; - } - } - handle_priv->interface_handle[i].dev_handle = file_handle; - } - } - - return LIBUSB_SUCCESS; -} - -static void winusbx_close(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE handle; - int i; - - if (sub_api == SUB_API_NOTSET) - sub_api = priv->sub_api; - if (!WinUSBX[sub_api].initialized) - return; - - if (priv->apib->id == USB_API_COMPOSITE) { - // If this is a composite device, just free and close all WinUSB-like - // interfaces directly (each is independent and not associated with another) - for (i = 0; i < USB_MAXINTERFACES; i++) { - if (priv->usb_interface[i].apib->id == USB_API_WINUSBX) { - handle = handle_priv->interface_handle[i].api_handle; - if ((handle != 0) && (handle != INVALID_HANDLE_VALUE)) { - WinUSBX[sub_api].Free(handle); - } - handle = handle_priv->interface_handle[i].dev_handle; - if ((handle != 0) && (handle != INVALID_HANDLE_VALUE)) { - CloseHandle(handle); - } - } - } - } - else { - // If this is a WinUSB device, free all interfaces above interface 0, - // then free and close interface 0 last - for (i = 1; i < USB_MAXINTERFACES; i++) { - handle = handle_priv->interface_handle[i].api_handle; - if ((handle != 0) && (handle != INVALID_HANDLE_VALUE)) { - WinUSBX[sub_api].Free(handle); - } - } - handle = handle_priv->interface_handle[0].api_handle; - if ((handle != 0) && (handle != INVALID_HANDLE_VALUE)) { - WinUSBX[sub_api].Free(handle); - } - handle = handle_priv->interface_handle[0].dev_handle; - if ((handle != 0) && (handle != INVALID_HANDLE_VALUE)) { - CloseHandle(handle); - } - } -} - -static int winusbx_configure_endpoints(int sub_api, struct libusb_device_handle *dev_handle, int iface) -{ - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE winusb_handle = handle_priv->interface_handle[iface].api_handle; - UCHAR policy; - ULONG timeout = 0; - uint8_t endpoint_address; - int i; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - // With handle and enpoints set (in parent), we can setup the default pipe properties - // see http://download.microsoft.com/download/D/1/D/D1DD7745-426B-4CC3-A269-ABBBE427C0EF/DVC-T705_DDC08.pptx - for (i=-1; iusb_interface[iface].nb_endpoints; i++) { - endpoint_address =(i==-1)?0:priv->usb_interface[iface].endpoint[i]; - if (!WinUSBX[sub_api].SetPipePolicy(winusb_handle, endpoint_address, - PIPE_TRANSFER_TIMEOUT, sizeof(ULONG), &timeout)) { - usbi_dbg("failed to set PIPE_TRANSFER_TIMEOUT for control endpoint %02X", endpoint_address); - } - if ((i == -1) || (sub_api == SUB_API_LIBUSB0)) { - continue; // Other policies don't apply to control endpoint or libusb0 - } - policy = false; - if (!WinUSBX[sub_api].SetPipePolicy(winusb_handle, endpoint_address, - SHORT_PACKET_TERMINATE, sizeof(UCHAR), &policy)) { - usbi_dbg("failed to disable SHORT_PACKET_TERMINATE for endpoint %02X", endpoint_address); - } - if (!WinUSBX[sub_api].SetPipePolicy(winusb_handle, endpoint_address, - IGNORE_SHORT_PACKETS, sizeof(UCHAR), &policy)) { - usbi_dbg("failed to disable IGNORE_SHORT_PACKETS for endpoint %02X", endpoint_address); - } - policy = true; - /* ALLOW_PARTIAL_READS must be enabled due to likely libusbK bug. See: - https://sourceforge.net/mailarchive/message.php?msg_id=29736015 */ - if (!WinUSBX[sub_api].SetPipePolicy(winusb_handle, endpoint_address, - ALLOW_PARTIAL_READS, sizeof(UCHAR), &policy)) { - usbi_dbg("failed to enable ALLOW_PARTIAL_READS for endpoint %02X", endpoint_address); - } - if (!WinUSBX[sub_api].SetPipePolicy(winusb_handle, endpoint_address, - AUTO_CLEAR_STALL, sizeof(UCHAR), &policy)) { - usbi_dbg("failed to enable AUTO_CLEAR_STALL for endpoint %02X", endpoint_address); - } - } - - return LIBUSB_SUCCESS; -} - -static int winusbx_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - bool is_using_usbccgp = (priv->apib->id == USB_API_COMPOSITE); - HANDLE file_handle, winusb_handle; - DWORD err; - int i; - SP_DEVICE_INTERFACE_DETAIL_DATA_A *dev_interface_details = NULL; - HDEVINFO dev_info = INVALID_HANDLE_VALUE; - SP_DEVINFO_DATA dev_info_data; - char* dev_path_no_guid = NULL; - char filter_path[] = "\\\\.\\libusb0-0000"; - bool found_filter = false; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - // If the device is composite, but using the default Windows composite parent driver (usbccgp) - // or if it's the first WinUSB-like interface, we get a handle through Initialize(). - if ((is_using_usbccgp) || (iface == 0)) { - // composite device (independent interfaces) or interface 0 - file_handle = handle_priv->interface_handle[iface].dev_handle; - if ((file_handle == 0) || (file_handle == INVALID_HANDLE_VALUE)) { - return LIBUSB_ERROR_NOT_FOUND; - } - - if (!WinUSBX[sub_api].Initialize(file_handle, &winusb_handle)) { - handle_priv->interface_handle[iface].api_handle = INVALID_HANDLE_VALUE; - err = GetLastError(); - switch(err) { - case ERROR_BAD_COMMAND: - // The device was disconnected - usbi_err(ctx, "could not access interface %d: %s", iface, windows_error_str(0)); - return LIBUSB_ERROR_NO_DEVICE; - default: - // it may be that we're using the libusb0 filter driver. - // TODO: can we move this whole business into the K/0 DLL? - for (i = 0; ; i++) { - safe_free(dev_interface_details); - safe_free(dev_path_no_guid); - dev_interface_details = get_interface_details_filter(ctx, &dev_info, &dev_info_data, &GUID_DEVINTERFACE_LIBUSB0_FILTER, i, filter_path); - if ((found_filter) || (dev_interface_details == NULL)) { - break; - } - // ignore GUID part - dev_path_no_guid = sanitize_path(strtok(dev_interface_details->DevicePath, "{")); - if (safe_strncmp(dev_path_no_guid, priv->usb_interface[iface].path, safe_strlen(dev_path_no_guid)) == 0) { - file_handle = CreateFileA(filter_path, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, - NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL); - if (file_handle == INVALID_HANDLE_VALUE) { - usbi_err(ctx, "could not open device %s: %s", filter_path, windows_error_str(0)); - } else { - WinUSBX[sub_api].Free(winusb_handle); - if (WinUSBX[sub_api].Initialize(file_handle, &winusb_handle)) - found_filter = true; - else - usbi_err(ctx, "could not initialize filter driver for %s", filter_path); - } - } - } - if (!found_filter) { - usbi_err(ctx, "could not access interface %d: %s", iface, windows_error_str(err)); - return LIBUSB_ERROR_ACCESS; - } - } - } - handle_priv->interface_handle[iface].api_handle = winusb_handle; - } else { - // For all other interfaces, use GetAssociatedInterface() - winusb_handle = handle_priv->interface_handle[0].api_handle; - // It is a requirement for multiple interface devices on Windows that, to you - // must first claim the first interface before you claim the others - if ((winusb_handle == 0) || (winusb_handle == INVALID_HANDLE_VALUE)) { - file_handle = handle_priv->interface_handle[0].dev_handle; - if (WinUSBX[sub_api].Initialize(file_handle, &winusb_handle)) { - handle_priv->interface_handle[0].api_handle = winusb_handle; - usbi_warn(ctx, "auto-claimed interface 0 (required to claim %d with WinUSB)", iface); - } else { - usbi_warn(ctx, "failed to auto-claim interface 0 (required to claim %d with WinUSB): %s", iface, windows_error_str(0)); - return LIBUSB_ERROR_ACCESS; - } - } - if (!WinUSBX[sub_api].GetAssociatedInterface(winusb_handle, (UCHAR)(iface-1), - &handle_priv->interface_handle[iface].api_handle)) { - handle_priv->interface_handle[iface].api_handle = INVALID_HANDLE_VALUE; - switch(GetLastError()) { - case ERROR_NO_MORE_ITEMS: // invalid iface - return LIBUSB_ERROR_NOT_FOUND; - case ERROR_BAD_COMMAND: // The device was disconnected - return LIBUSB_ERROR_NO_DEVICE; - case ERROR_ALREADY_EXISTS: // already claimed - return LIBUSB_ERROR_BUSY; - default: - usbi_err(ctx, "could not claim interface %d: %s", iface, windows_error_str(0)); - return LIBUSB_ERROR_ACCESS; - } - } - } - usbi_dbg("claimed interface %d", iface); - handle_priv->active_interface = iface; - - return LIBUSB_SUCCESS; -} - -static int winusbx_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface) -{ - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE winusb_handle; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - winusb_handle = handle_priv->interface_handle[iface].api_handle; - if ((winusb_handle == 0) || (winusb_handle == INVALID_HANDLE_VALUE)) { - return LIBUSB_ERROR_NOT_FOUND; - } - - WinUSBX[sub_api].Free(winusb_handle); - handle_priv->interface_handle[iface].api_handle = INVALID_HANDLE_VALUE; - - return LIBUSB_SUCCESS; -} - -/* - * Return the first valid interface (of the same API type), for control transfers - */ -static int get_valid_interface(struct libusb_device_handle *dev_handle, int api_id) -{ - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - int i; - - if ((api_id < USB_API_WINUSBX) || (api_id > USB_API_HID)) { - usbi_dbg("unsupported API ID"); - return -1; - } - - for (i=0; iinterface_handle[i].dev_handle != 0) - && (handle_priv->interface_handle[i].dev_handle != INVALID_HANDLE_VALUE) - && (handle_priv->interface_handle[i].api_handle != 0) - && (handle_priv->interface_handle[i].api_handle != INVALID_HANDLE_VALUE) - && (priv->usb_interface[i].apib->id == api_id) ) { - return i; - } - } - return -1; -} - -/* - * Lookup interface by endpoint address. -1 if not found - */ -static int interface_by_endpoint(struct windows_device_priv *priv, - struct windows_device_handle_priv *handle_priv, uint8_t endpoint_address) -{ - int i, j; - for (i=0; iinterface_handle[i].api_handle == INVALID_HANDLE_VALUE) - continue; - if (handle_priv->interface_handle[i].api_handle == 0) - continue; - if (priv->usb_interface[i].endpoint == NULL) - continue; - for (j=0; jusb_interface[i].nb_endpoints; j++) { - if (priv->usb_interface[i].endpoint[j] == endpoint_address) { - return i; - } - } - } - return -1; -} - -static int winusbx_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct windows_device_handle_priv *handle_priv = _device_handle_priv( - transfer->dev_handle); - WINUSB_SETUP_PACKET *setup = (WINUSB_SETUP_PACKET *) transfer->buffer; - ULONG size; - HANDLE winusb_handle; - int current_interface; - struct winfd wfd; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - transfer_priv->pollable_fd = INVALID_WINFD; - size = transfer->length - LIBUSB_CONTROL_SETUP_SIZE; - - if (size > MAX_CTRL_BUFFER_LENGTH) - return LIBUSB_ERROR_INVALID_PARAM; - - current_interface = get_valid_interface(transfer->dev_handle, USB_API_WINUSBX); - if (current_interface < 0) { - if (auto_claim(transfer, ¤t_interface, USB_API_WINUSBX) != LIBUSB_SUCCESS) { - return LIBUSB_ERROR_NOT_FOUND; - } - } - - usbi_dbg("will use interface %d", current_interface); - winusb_handle = handle_priv->interface_handle[current_interface].api_handle; - - wfd = usbi_create_fd(winusb_handle, RW_READ, NULL, NULL); - // Always use the handle returned from usbi_create_fd (wfd.handle) - if (wfd.fd < 0) { - return LIBUSB_ERROR_NO_MEM; - } - - // Sending of set configuration control requests from WinUSB creates issues - if ( ((setup->request_type & (0x03 << 5)) == LIBUSB_REQUEST_TYPE_STANDARD) - && (setup->request == LIBUSB_REQUEST_SET_CONFIGURATION) ) { - if (setup->value != priv->active_config) { - usbi_warn(ctx, "cannot set configuration other than the default one"); - usbi_free_fd(&wfd); - return LIBUSB_ERROR_INVALID_PARAM; - } - wfd.overlapped->Internal = STATUS_COMPLETED_SYNCHRONOUSLY; - wfd.overlapped->InternalHigh = 0; - } else { - if (!WinUSBX[sub_api].ControlTransfer(wfd.handle, *setup, transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE, size, NULL, wfd.overlapped)) { - if(GetLastError() != ERROR_IO_PENDING) { - usbi_warn(ctx, "ControlTransfer failed: %s", windows_error_str(0)); - usbi_free_fd(&wfd); - return LIBUSB_ERROR_IO; - } - } else { - wfd.overlapped->Internal = STATUS_COMPLETED_SYNCHRONOUSLY; - wfd.overlapped->InternalHigh = (DWORD)size; - } - } - - // Use priv_transfer to store data needed for async polling - transfer_priv->pollable_fd = wfd; - transfer_priv->interface_number = (uint8_t)current_interface; - - return LIBUSB_SUCCESS; -} - -static int winusbx_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE winusb_handle; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - if (altsetting > 255) { - return LIBUSB_ERROR_INVALID_PARAM; - } - - winusb_handle = handle_priv->interface_handle[iface].api_handle; - if ((winusb_handle == 0) || (winusb_handle == INVALID_HANDLE_VALUE)) { - usbi_err(ctx, "interface must be claimed first"); - return LIBUSB_ERROR_NOT_FOUND; - } - - if (!WinUSBX[sub_api].SetCurrentAlternateSetting(winusb_handle, (UCHAR)altsetting)) { - usbi_err(ctx, "SetCurrentAlternateSetting failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_IO; - } - - return LIBUSB_SUCCESS; -} - -static int winusbx_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - HANDLE winusb_handle; - bool ret; - int current_interface; - struct winfd wfd; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - transfer_priv->pollable_fd = INVALID_WINFD; - - current_interface = interface_by_endpoint(priv, handle_priv, transfer->endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cancelling transfer"); - return LIBUSB_ERROR_NOT_FOUND; - } - - usbi_dbg("matched endpoint %02X with interface %d", transfer->endpoint, current_interface); - - winusb_handle = handle_priv->interface_handle[current_interface].api_handle; - - wfd = usbi_create_fd(winusb_handle, IS_XFERIN(transfer) ? RW_READ : RW_WRITE, NULL, NULL); - // Always use the handle returned from usbi_create_fd (wfd.handle) - if (wfd.fd < 0) { - return LIBUSB_ERROR_NO_MEM; - } - - if (IS_XFERIN(transfer)) { - usbi_dbg("reading %d bytes", transfer->length); - ret = WinUSBX[sub_api].ReadPipe(wfd.handle, transfer->endpoint, transfer->buffer, transfer->length, NULL, wfd.overlapped); - } else { - usbi_dbg("writing %d bytes", transfer->length); - ret = WinUSBX[sub_api].WritePipe(wfd.handle, transfer->endpoint, transfer->buffer, transfer->length, NULL, wfd.overlapped); - } - if (!ret) { - if(GetLastError() != ERROR_IO_PENDING) { - usbi_err(ctx, "ReadPipe/WritePipe failed: %s", windows_error_str(0)); - usbi_free_fd(&wfd); - return LIBUSB_ERROR_IO; - } - } else { - wfd.overlapped->Internal = STATUS_COMPLETED_SYNCHRONOUSLY; - wfd.overlapped->InternalHigh = (DWORD)transfer->length; - } - - transfer_priv->pollable_fd = wfd; - transfer_priv->interface_number = (uint8_t)current_interface; - - return LIBUSB_SUCCESS; -} - -static int winusbx_clear_halt(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE winusb_handle; - int current_interface; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - current_interface = interface_by_endpoint(priv, handle_priv, endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cannot clear"); - return LIBUSB_ERROR_NOT_FOUND; - } - - usbi_dbg("matched endpoint %02X with interface %d", endpoint, current_interface); - winusb_handle = handle_priv->interface_handle[current_interface].api_handle; - - if (!WinUSBX[sub_api].ResetPipe(winusb_handle, endpoint)) { - usbi_err(ctx, "ResetPipe failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_NO_DEVICE; - } - - return LIBUSB_SUCCESS; -} - -/* - * from http://www.winvistatips.com/winusb-bugchecks-t335323.html (confirmed - * through testing as well): - * "You can not call WinUsb_AbortPipe on control pipe. You can possibly cancel - * the control transfer using CancelIo" - */ -static int winusbx_abort_control(int sub_api, struct usbi_transfer *itransfer) -{ - // Cancelling of the I/O is done in the parent - return LIBUSB_SUCCESS; -} - -static int winusbx_abort_transfers(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - HANDLE winusb_handle; - int current_interface; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - current_interface = transfer_priv->interface_number; - if ((current_interface < 0) || (current_interface >= USB_MAXINTERFACES)) { - usbi_err(ctx, "program assertion failed: invalid interface_number"); - return LIBUSB_ERROR_NOT_FOUND; - } - usbi_dbg("will use interface %d", current_interface); - - winusb_handle = handle_priv->interface_handle[current_interface].api_handle; - - if (!WinUSBX[sub_api].AbortPipe(winusb_handle, transfer->endpoint)) { - usbi_err(ctx, "AbortPipe failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_NO_DEVICE; - } - - return LIBUSB_SUCCESS; -} - -/* - * from the "How to Use WinUSB to Communicate with a USB Device" Microsoft white paper - * (http://www.microsoft.com/whdc/connect/usb/winusb_howto.mspx): - * "WinUSB does not support host-initiated reset port and cycle port operations" and - * IOCTL_INTERNAL_USB_CYCLE_PORT is only available in kernel mode and the - * IOCTL_USB_HUB_CYCLE_PORT ioctl was removed from Vista => the best we can do is - * cycle the pipes (and even then, the control pipe can not be reset using WinUSB) - */ -// TODO: (post hotplug): see if we can force eject the device and redetect it (reuse hotplug?) -static int winusbx_reset_device(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - struct winfd wfd; - HANDLE winusb_handle; - int i, j; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - // Reset any available pipe (except control) - for (i=0; iinterface_handle[i].api_handle; - for (wfd = handle_to_winfd(winusb_handle); wfd.fd > 0;) - { - // Cancel any pollable I/O - usbi_remove_pollfd(ctx, wfd.fd); - usbi_free_fd(&wfd); - wfd = handle_to_winfd(winusb_handle); - } - - if ( (winusb_handle != 0) && (winusb_handle != INVALID_HANDLE_VALUE)) { - for (j=0; jusb_interface[i].nb_endpoints; j++) { - usbi_dbg("resetting ep %02X", priv->usb_interface[i].endpoint[j]); - if (!WinUSBX[sub_api].AbortPipe(winusb_handle, priv->usb_interface[i].endpoint[j])) { - usbi_err(ctx, "AbortPipe (pipe address %02X) failed: %s", - priv->usb_interface[i].endpoint[j], windows_error_str(0)); - } - // FlushPipe seems to fail on OUT pipes - if (IS_EPIN(priv->usb_interface[i].endpoint[j]) - && (!WinUSBX[sub_api].FlushPipe(winusb_handle, priv->usb_interface[i].endpoint[j])) ) { - usbi_err(ctx, "FlushPipe (pipe address %02X) failed: %s", - priv->usb_interface[i].endpoint[j], windows_error_str(0)); - } - if (!WinUSBX[sub_api].ResetPipe(winusb_handle, priv->usb_interface[i].endpoint[j])) { - usbi_err(ctx, "ResetPipe (pipe address %02X) failed: %s", - priv->usb_interface[i].endpoint[j], windows_error_str(0)); - } - } - } - } - - // libusbK & libusb0 have the ability to issue an actual device reset - if (WinUSBX[sub_api].ResetDevice != NULL) { - winusb_handle = handle_priv->interface_handle[0].api_handle; - if ( (winusb_handle != 0) && (winusb_handle != INVALID_HANDLE_VALUE)) { - WinUSBX[sub_api].ResetDevice(winusb_handle); - } - } - return LIBUSB_SUCCESS; -} - -static int winusbx_copy_transfer_data(int sub_api, struct usbi_transfer *itransfer, uint32_t io_size) -{ - itransfer->transferred += io_size; - return LIBUSB_TRANSFER_COMPLETED; -} - -/* - * Internal HID Support functions (from libusb-win32) - * Note that functions that complete data transfer synchronously must return - * LIBUSB_COMPLETED instead of LIBUSB_SUCCESS - */ -static int _hid_get_hid_descriptor(struct hid_device_priv* dev, void *data, size_t *size); -static int _hid_get_report_descriptor(struct hid_device_priv* dev, void *data, size_t *size); - -static int _hid_wcslen(WCHAR *str) -{ - int i = 0; - while (str[i] && (str[i] != 0x409)) { - i++; - } - return i; -} - -static int _hid_get_device_descriptor(struct hid_device_priv* dev, void *data, size_t *size) -{ - struct libusb_device_descriptor d; - - d.bLength = LIBUSB_DT_DEVICE_SIZE; - d.bDescriptorType = LIBUSB_DT_DEVICE; - d.bcdUSB = 0x0200; /* 2.00 */ - d.bDeviceClass = 0; - d.bDeviceSubClass = 0; - d.bDeviceProtocol = 0; - d.bMaxPacketSize0 = 64; /* fix this! */ - d.idVendor = (uint16_t)dev->vid; - d.idProduct = (uint16_t)dev->pid; - d.bcdDevice = 0x0100; - d.iManufacturer = dev->string_index[0]; - d.iProduct = dev->string_index[1]; - d.iSerialNumber = dev->string_index[2]; - d.bNumConfigurations = 1; - - if (*size > LIBUSB_DT_DEVICE_SIZE) - *size = LIBUSB_DT_DEVICE_SIZE; - memcpy(data, &d, *size); - return LIBUSB_COMPLETED; -} - -static int _hid_get_config_descriptor(struct hid_device_priv* dev, void *data, size_t *size) -{ - char num_endpoints = 0; - size_t config_total_len = 0; - char tmp[HID_MAX_CONFIG_DESC_SIZE]; - struct libusb_config_descriptor *cd; - struct libusb_interface_descriptor *id; - struct libusb_hid_descriptor *hd; - struct libusb_endpoint_descriptor *ed; - size_t tmp_size; - - if (dev->input_report_size) - num_endpoints++; - if (dev->output_report_size) - num_endpoints++; - - config_total_len = LIBUSB_DT_CONFIG_SIZE + LIBUSB_DT_INTERFACE_SIZE - + LIBUSB_DT_HID_SIZE + num_endpoints * LIBUSB_DT_ENDPOINT_SIZE; - - - cd = (struct libusb_config_descriptor *)tmp; - id = (struct libusb_interface_descriptor *)(tmp + LIBUSB_DT_CONFIG_SIZE); - hd = (struct libusb_hid_descriptor *)(tmp + LIBUSB_DT_CONFIG_SIZE - + LIBUSB_DT_INTERFACE_SIZE); - ed = (struct libusb_endpoint_descriptor *)(tmp + LIBUSB_DT_CONFIG_SIZE - + LIBUSB_DT_INTERFACE_SIZE - + LIBUSB_DT_HID_SIZE); - - cd->bLength = LIBUSB_DT_CONFIG_SIZE; - cd->bDescriptorType = LIBUSB_DT_CONFIG; - cd->wTotalLength = (uint16_t) config_total_len; - cd->bNumInterfaces = 1; - cd->bConfigurationValue = 1; - cd->iConfiguration = 0; - cd->bmAttributes = 1 << 7; /* bus powered */ - cd->MaxPower = 50; - - id->bLength = LIBUSB_DT_INTERFACE_SIZE; - id->bDescriptorType = LIBUSB_DT_INTERFACE; - id->bInterfaceNumber = 0; - id->bAlternateSetting = 0; - id->bNumEndpoints = num_endpoints; - id->bInterfaceClass = 3; - id->bInterfaceSubClass = 0; - id->bInterfaceProtocol = 0; - id->iInterface = 0; - - tmp_size = LIBUSB_DT_HID_SIZE; - _hid_get_hid_descriptor(dev, hd, &tmp_size); - - if (dev->input_report_size) { - ed->bLength = LIBUSB_DT_ENDPOINT_SIZE; - ed->bDescriptorType = LIBUSB_DT_ENDPOINT; - ed->bEndpointAddress = HID_IN_EP; - ed->bmAttributes = 3; - ed->wMaxPacketSize = dev->input_report_size - 1; - ed->bInterval = 10; - ed = (struct libusb_endpoint_descriptor *)((char*)ed + LIBUSB_DT_ENDPOINT_SIZE); - } - - if (dev->output_report_size) { - ed->bLength = LIBUSB_DT_ENDPOINT_SIZE; - ed->bDescriptorType = LIBUSB_DT_ENDPOINT; - ed->bEndpointAddress = HID_OUT_EP; - ed->bmAttributes = 3; - ed->wMaxPacketSize = dev->output_report_size - 1; - ed->bInterval = 10; - } - - if (*size > config_total_len) - *size = config_total_len; - memcpy(data, tmp, *size); - return LIBUSB_COMPLETED; -} - -static int _hid_get_string_descriptor(struct hid_device_priv* dev, int _index, - void *data, size_t *size) -{ - void *tmp = NULL; - size_t tmp_size = 0; - int i; - - /* language ID, EN-US */ - char string_langid[] = { - 0x09, - 0x04 - }; - - if ((*size < 2) || (*size > 255)) { - return LIBUSB_ERROR_OVERFLOW; - } - - if (_index == 0) { - tmp = string_langid; - tmp_size = sizeof(string_langid)+2; - } else { - for (i=0; i<3; i++) { - if (_index == (dev->string_index[i])) { - tmp = dev->string[i]; - tmp_size = (_hid_wcslen(dev->string[i])+1) * sizeof(WCHAR); - break; - } - } - if (i == 3) { // not found - return LIBUSB_ERROR_INVALID_PARAM; - } - } - - if(!tmp_size) { - return LIBUSB_ERROR_INVALID_PARAM; - } - - if (tmp_size < *size) { - *size = tmp_size; - } - // 2 byte header - ((uint8_t*)data)[0] = (uint8_t)*size; - ((uint8_t*)data)[1] = LIBUSB_DT_STRING; - memcpy((uint8_t*)data+2, tmp, *size-2); - return LIBUSB_COMPLETED; -} - -static int _hid_get_hid_descriptor(struct hid_device_priv* dev, void *data, size_t *size) -{ - struct libusb_hid_descriptor d; - uint8_t tmp[MAX_HID_DESCRIPTOR_SIZE]; - size_t report_len = MAX_HID_DESCRIPTOR_SIZE; - - _hid_get_report_descriptor(dev, tmp, &report_len); - - d.bLength = LIBUSB_DT_HID_SIZE; - d.bDescriptorType = LIBUSB_DT_HID; - d.bcdHID = 0x0110; /* 1.10 */ - d.bCountryCode = 0; - d.bNumDescriptors = 1; - d.bClassDescriptorType = LIBUSB_DT_REPORT; - d.wClassDescriptorLength = (uint16_t)report_len; - - if (*size > LIBUSB_DT_HID_SIZE) - *size = LIBUSB_DT_HID_SIZE; - memcpy(data, &d, *size); - return LIBUSB_COMPLETED; -} - -static int _hid_get_report_descriptor(struct hid_device_priv* dev, void *data, size_t *size) -{ - uint8_t d[MAX_HID_DESCRIPTOR_SIZE]; - size_t i = 0; - - /* usage page (0xFFA0 == vendor defined) */ - d[i++] = 0x06; d[i++] = 0xA0; d[i++] = 0xFF; - /* usage (vendor defined) */ - d[i++] = 0x09; d[i++] = 0x01; - /* start collection (application) */ - d[i++] = 0xA1; d[i++] = 0x01; - /* input report */ - if (dev->input_report_size) { - /* usage (vendor defined) */ - d[i++] = 0x09; d[i++] = 0x01; - /* logical minimum (0) */ - d[i++] = 0x15; d[i++] = 0x00; - /* logical maximum (255) */ - d[i++] = 0x25; d[i++] = 0xFF; - /* report size (8 bits) */ - d[i++] = 0x75; d[i++] = 0x08; - /* report count */ - d[i++] = 0x95; d[i++] = (uint8_t)dev->input_report_size - 1; - /* input (data, variable, absolute) */ - d[i++] = 0x81; d[i++] = 0x00; - } - /* output report */ - if (dev->output_report_size) { - /* usage (vendor defined) */ - d[i++] = 0x09; d[i++] = 0x02; - /* logical minimum (0) */ - d[i++] = 0x15; d[i++] = 0x00; - /* logical maximum (255) */ - d[i++] = 0x25; d[i++] = 0xFF; - /* report size (8 bits) */ - d[i++] = 0x75; d[i++] = 0x08; - /* report count */ - d[i++] = 0x95; d[i++] = (uint8_t)dev->output_report_size - 1; - /* output (data, variable, absolute) */ - d[i++] = 0x91; d[i++] = 0x00; - } - /* feature report */ - if (dev->feature_report_size) { - /* usage (vendor defined) */ - d[i++] = 0x09; d[i++] = 0x03; - /* logical minimum (0) */ - d[i++] = 0x15; d[i++] = 0x00; - /* logical maximum (255) */ - d[i++] = 0x25; d[i++] = 0xFF; - /* report size (8 bits) */ - d[i++] = 0x75; d[i++] = 0x08; - /* report count */ - d[i++] = 0x95; d[i++] = (uint8_t)dev->feature_report_size - 1; - /* feature (data, variable, absolute) */ - d[i++] = 0xb2; d[i++] = 0x02; d[i++] = 0x01; - } - - /* end collection */ - d[i++] = 0xC0; - - if (*size > i) - *size = i; - memcpy(data, d, *size); - return LIBUSB_COMPLETED; -} - -static int _hid_get_descriptor(struct hid_device_priv* dev, HANDLE hid_handle, int recipient, - int type, int _index, void *data, size_t *size) -{ - switch(type) { - case LIBUSB_DT_DEVICE: - usbi_dbg("LIBUSB_DT_DEVICE"); - return _hid_get_device_descriptor(dev, data, size); - case LIBUSB_DT_CONFIG: - usbi_dbg("LIBUSB_DT_CONFIG"); - if (!_index) - return _hid_get_config_descriptor(dev, data, size); - return LIBUSB_ERROR_INVALID_PARAM; - case LIBUSB_DT_STRING: - usbi_dbg("LIBUSB_DT_STRING"); - return _hid_get_string_descriptor(dev, _index, data, size); - case LIBUSB_DT_HID: - usbi_dbg("LIBUSB_DT_HID"); - if (!_index) - return _hid_get_hid_descriptor(dev, data, size); - return LIBUSB_ERROR_INVALID_PARAM; - case LIBUSB_DT_REPORT: - usbi_dbg("LIBUSB_DT_REPORT"); - if (!_index) - return _hid_get_report_descriptor(dev, data, size); - return LIBUSB_ERROR_INVALID_PARAM; - case LIBUSB_DT_PHYSICAL: - usbi_dbg("LIBUSB_DT_PHYSICAL"); - if (HidD_GetPhysicalDescriptor(hid_handle, data, (ULONG)*size)) - return LIBUSB_COMPLETED; - return LIBUSB_ERROR_OTHER; - } - usbi_dbg("unsupported"); - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -static int _hid_get_report(struct hid_device_priv* dev, HANDLE hid_handle, int id, void *data, - struct windows_transfer_priv *tp, size_t *size, OVERLAPPED* overlapped, - int report_type) -{ - uint8_t *buf; - DWORD ioctl_code, read_size, expected_size = (DWORD)*size; - int r = LIBUSB_SUCCESS; - - if (tp->hid_buffer != NULL) { - usbi_dbg("program assertion failed: hid_buffer is not NULL"); - } - - if ((*size == 0) || (*size > MAX_HID_REPORT_SIZE)) { - usbi_dbg("invalid size (%d)", *size); - return LIBUSB_ERROR_INVALID_PARAM; - } - - switch (report_type) { - case HID_REPORT_TYPE_INPUT: - ioctl_code = IOCTL_HID_GET_INPUT_REPORT; - break; - case HID_REPORT_TYPE_FEATURE: - ioctl_code = IOCTL_HID_GET_FEATURE; - break; - default: - usbi_dbg("unknown HID report type %d", report_type); - return LIBUSB_ERROR_INVALID_PARAM; - } - - // Add a trailing byte to detect overflows - buf = (uint8_t*)calloc(expected_size+1, 1); - if (buf == NULL) { - return LIBUSB_ERROR_NO_MEM; - } - buf[0] = (uint8_t)id; // Must be set always - usbi_dbg("report ID: 0x%02X", buf[0]); - - tp->hid_expected_size = expected_size; - read_size = expected_size; - - // NB: The size returned by DeviceIoControl doesn't include report IDs when not in use (0) - if (!DeviceIoControl(hid_handle, ioctl_code, buf, expected_size+1, - buf, expected_size+1, &read_size, overlapped)) { - if (GetLastError() != ERROR_IO_PENDING) { - usbi_dbg("Failed to Read HID Report: %s", windows_error_str(0)); - safe_free(buf); - return LIBUSB_ERROR_IO; - } - // Asynchronous wait - tp->hid_buffer = buf; - tp->hid_dest = (uint8_t*)data; // copy dest, as not necessarily the start of the transfer buffer - return LIBUSB_SUCCESS; - } - - // Transfer completed synchronously => copy and discard extra buffer - if (read_size == 0) { - usbi_warn(NULL, "program assertion failed - read completed synchronously, but no data was read"); - *size = 0; - } else { - if (buf[0] != id) { - usbi_warn(NULL, "mismatched report ID (data is %02X, parameter is %02X)", buf[0], id); - } - if ((size_t)read_size > expected_size) { - r = LIBUSB_ERROR_OVERFLOW; - usbi_dbg("OVERFLOW!"); - } else { - r = LIBUSB_COMPLETED; - } - - *size = MIN((size_t)read_size, *size); - if (id == 0) { - // Discard report ID - memcpy(data, buf+1, *size); - } else { - memcpy(data, buf, *size); - } - } - safe_free(buf); - return r; -} - -static int _hid_set_report(struct hid_device_priv* dev, HANDLE hid_handle, int id, void *data, - struct windows_transfer_priv *tp, size_t *size, OVERLAPPED* overlapped, - int report_type) -{ - uint8_t *buf = NULL; - DWORD ioctl_code, write_size= (DWORD)*size; - - if (tp->hid_buffer != NULL) { - usbi_dbg("program assertion failed: hid_buffer is not NULL"); - } - - if ((*size == 0) || (*size > MAX_HID_REPORT_SIZE)) { - usbi_dbg("invalid size (%d)", *size); - return LIBUSB_ERROR_INVALID_PARAM; - } - - switch (report_type) { - case HID_REPORT_TYPE_OUTPUT: - ioctl_code = IOCTL_HID_SET_OUTPUT_REPORT; - break; - case HID_REPORT_TYPE_FEATURE: - ioctl_code = IOCTL_HID_SET_FEATURE; - break; - default: - usbi_dbg("unknown HID report type %d", report_type); - return LIBUSB_ERROR_INVALID_PARAM; - } - - usbi_dbg("report ID: 0x%02X", id); - // When report IDs are not used (i.e. when id == 0), we must add - // a null report ID. Otherwise, we just use original data buffer - if (id == 0) { - write_size++; - } - buf = (uint8_t*) malloc(write_size); - if (buf == NULL) { - return LIBUSB_ERROR_NO_MEM; - } - if (id == 0) { - buf[0] = 0; - memcpy(buf + 1, data, *size); - } else { - // This seems like a waste, but if we don't duplicate the - // data, we'll get issues when freeing hid_buffer - memcpy(buf, data, *size); - if (buf[0] != id) { - usbi_warn(NULL, "mismatched report ID (data is %02X, parameter is %02X)", buf[0], id); - } - } - - // NB: The size returned by DeviceIoControl doesn't include report IDs when not in use (0) - if (!DeviceIoControl(hid_handle, ioctl_code, buf, write_size, - buf, write_size, &write_size, overlapped)) { - if (GetLastError() != ERROR_IO_PENDING) { - usbi_dbg("Failed to Write HID Output Report: %s", windows_error_str(0)); - safe_free(buf); - return LIBUSB_ERROR_IO; - } - tp->hid_buffer = buf; - tp->hid_dest = NULL; - return LIBUSB_SUCCESS; - } - - // Transfer completed synchronously - *size = write_size; - if (write_size == 0) { - usbi_dbg("program assertion failed - write completed synchronously, but no data was written"); - } - safe_free(buf); - return LIBUSB_COMPLETED; -} - -static int _hid_class_request(struct hid_device_priv* dev, HANDLE hid_handle, int request_type, - int request, int value, int _index, void *data, struct windows_transfer_priv *tp, - size_t *size, OVERLAPPED* overlapped) -{ - int report_type = (value >> 8) & 0xFF; - int report_id = value & 0xFF; - - if ( (LIBUSB_REQ_RECIPIENT(request_type) != LIBUSB_RECIPIENT_INTERFACE) - && (LIBUSB_REQ_RECIPIENT(request_type) != LIBUSB_RECIPIENT_DEVICE) ) - return LIBUSB_ERROR_INVALID_PARAM; - - if (LIBUSB_REQ_OUT(request_type) && request == HID_REQ_SET_REPORT) - return _hid_set_report(dev, hid_handle, report_id, data, tp, size, overlapped, report_type); - - if (LIBUSB_REQ_IN(request_type) && request == HID_REQ_GET_REPORT) - return _hid_get_report(dev, hid_handle, report_id, data, tp, size, overlapped, report_type); - - return LIBUSB_ERROR_INVALID_PARAM; -} - - -/* - * HID API functions - */ -static int hid_init(int sub_api, struct libusb_context *ctx) -{ - DLL_LOAD(hid.dll, HidD_GetAttributes, TRUE); - DLL_LOAD(hid.dll, HidD_GetHidGuid, TRUE); - DLL_LOAD(hid.dll, HidD_GetPreparsedData, TRUE); - DLL_LOAD(hid.dll, HidD_FreePreparsedData, TRUE); - DLL_LOAD(hid.dll, HidD_GetManufacturerString, TRUE); - DLL_LOAD(hid.dll, HidD_GetProductString, TRUE); - DLL_LOAD(hid.dll, HidD_GetSerialNumberString, TRUE); - DLL_LOAD(hid.dll, HidP_GetCaps, TRUE); - DLL_LOAD(hid.dll, HidD_SetNumInputBuffers, TRUE); - DLL_LOAD(hid.dll, HidD_SetFeature, TRUE); - DLL_LOAD(hid.dll, HidD_GetFeature, TRUE); - DLL_LOAD(hid.dll, HidD_GetPhysicalDescriptor, TRUE); - DLL_LOAD(hid.dll, HidD_GetInputReport, FALSE); - DLL_LOAD(hid.dll, HidD_SetOutputReport, FALSE); - DLL_LOAD(hid.dll, HidD_FlushQueue, TRUE); - DLL_LOAD(hid.dll, HidP_GetValueCaps, TRUE); - - api_hid_available = true; - return LIBUSB_SUCCESS; -} - -static int hid_exit(int sub_api) -{ - return LIBUSB_SUCCESS; -} - -// NB: open and close must ensure that they only handle interface of -// the right API type, as these functions can be called wholesale from -// composite_open(), with interfaces belonging to different APIs -static int hid_open(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - - HIDD_ATTRIBUTES hid_attributes; - PHIDP_PREPARSED_DATA preparsed_data = NULL; - HIDP_CAPS capabilities; - HIDP_VALUE_CAPS *value_caps; - - HANDLE hid_handle = INVALID_HANDLE_VALUE; - int i, j; - // report IDs handling - ULONG size[3]; - const char* type[3] = {"input", "output", "feature"}; - int nb_ids[2]; // zero and nonzero report IDs - - CHECK_HID_AVAILABLE; - if (priv->hid == NULL) { - usbi_err(ctx, "program assertion failed - private HID structure is unitialized"); - return LIBUSB_ERROR_NOT_FOUND; - } - - for (i = 0; i < USB_MAXINTERFACES; i++) { - if ( (priv->usb_interface[i].path != NULL) - && (priv->usb_interface[i].apib->id == USB_API_HID) ) { - hid_handle = CreateFileA(priv->usb_interface[i].path, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, - NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL); - /* - * http://www.lvr.com/hidfaq.htm: Why do I receive "Access denied" when attempting to access my HID? - * "Windows 2000 and later have exclusive read/write access to HIDs that are configured as a system - * keyboards or mice. An application can obtain a handle to a system keyboard or mouse by not - * requesting READ or WRITE access with CreateFile. Applications can then use HidD_SetFeature and - * HidD_GetFeature (if the device supports Feature reports)." - */ - if (hid_handle == INVALID_HANDLE_VALUE) { - usbi_warn(ctx, "could not open HID device in R/W mode (keyboard or mouse?) - trying without"); - hid_handle = CreateFileA(priv->usb_interface[i].path, 0, FILE_SHARE_WRITE | FILE_SHARE_READ, - NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL); - if (hid_handle == INVALID_HANDLE_VALUE) { - usbi_err(ctx, "could not open device %s (interface %d): %s", priv->path, i, windows_error_str(0)); - switch(GetLastError()) { - case ERROR_FILE_NOT_FOUND: // The device was disconnected - return LIBUSB_ERROR_NO_DEVICE; - case ERROR_ACCESS_DENIED: - return LIBUSB_ERROR_ACCESS; - default: - return LIBUSB_ERROR_IO; - } - } - priv->usb_interface[i].restricted_functionality = true; - } - handle_priv->interface_handle[i].api_handle = hid_handle; - } - } - - hid_attributes.Size = sizeof(hid_attributes); - do { - if (!HidD_GetAttributes(hid_handle, &hid_attributes)) { - usbi_err(ctx, "could not gain access to HID top collection (HidD_GetAttributes)"); - break; - } - - priv->hid->vid = hid_attributes.VendorID; - priv->hid->pid = hid_attributes.ProductID; - - // Set the maximum available input buffer size - for (i=32; HidD_SetNumInputBuffers(hid_handle, i); i*=2); - usbi_dbg("set maximum input buffer size to %d", i/2); - - // Get the maximum input and output report size - if (!HidD_GetPreparsedData(hid_handle, &preparsed_data) || !preparsed_data) { - usbi_err(ctx, "could not read HID preparsed data (HidD_GetPreparsedData)"); - break; - } - if (HidP_GetCaps(preparsed_data, &capabilities) != HIDP_STATUS_SUCCESS) { - usbi_err(ctx, "could not parse HID capabilities (HidP_GetCaps)"); - break; - } - - // Find out if interrupt will need report IDs - size[0] = capabilities.NumberInputValueCaps; - size[1] = capabilities.NumberOutputValueCaps; - size[2] = capabilities.NumberFeatureValueCaps; - for (j=HidP_Input; j<=HidP_Feature; j++) { - usbi_dbg("%d HID %s report value(s) found", size[j], type[j]); - priv->hid->uses_report_ids[j] = false; - if (size[j] > 0) { - value_caps = (HIDP_VALUE_CAPS*) calloc(size[j], sizeof(HIDP_VALUE_CAPS)); - if ( (value_caps != NULL) - && (HidP_GetValueCaps((HIDP_REPORT_TYPE)j, value_caps, &size[j], preparsed_data) == HIDP_STATUS_SUCCESS) - && (size[j] >= 1) ) { - nb_ids[0] = 0; - nb_ids[1] = 0; - for (i=0; i<(int)size[j]; i++) { - usbi_dbg(" Report ID: 0x%02X", value_caps[i].ReportID); - if (value_caps[i].ReportID != 0) { - nb_ids[1]++; - } else { - nb_ids[0]++; - } - } - if (nb_ids[1] != 0) { - if (nb_ids[0] != 0) { - usbi_warn(ctx, "program assertion failed: zero and nonzero report IDs used for %s", - type[j]); - } - priv->hid->uses_report_ids[j] = true; - } - } else { - usbi_warn(ctx, " could not process %s report IDs", type[j]); - } - safe_free(value_caps); - } - } - - // Set the report sizes - priv->hid->input_report_size = capabilities.InputReportByteLength; - priv->hid->output_report_size = capabilities.OutputReportByteLength; - priv->hid->feature_report_size = capabilities.FeatureReportByteLength; - - // Fetch string descriptors - priv->hid->string_index[0] = priv->dev_descriptor.iManufacturer; - if (priv->hid->string_index[0] != 0) { - HidD_GetManufacturerString(hid_handle, priv->hid->string[0], - sizeof(priv->hid->string[0])); - } else { - priv->hid->string[0][0] = 0; - } - priv->hid->string_index[1] = priv->dev_descriptor.iProduct; - if (priv->hid->string_index[1] != 0) { - HidD_GetProductString(hid_handle, priv->hid->string[1], - sizeof(priv->hid->string[1])); - } else { - priv->hid->string[1][0] = 0; - } - priv->hid->string_index[2] = priv->dev_descriptor.iSerialNumber; - if (priv->hid->string_index[2] != 0) { - HidD_GetSerialNumberString(hid_handle, priv->hid->string[2], - sizeof(priv->hid->string[2])); - } else { - priv->hid->string[2][0] = 0; - } - } while(0); - - if (preparsed_data) { - HidD_FreePreparsedData(preparsed_data); - } - - return LIBUSB_SUCCESS; -} - -static void hid_close(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - HANDLE file_handle; - int i; - - if (!api_hid_available) - return; - - for (i = 0; i < USB_MAXINTERFACES; i++) { - if (priv->usb_interface[i].apib->id == USB_API_HID) { - file_handle = handle_priv->interface_handle[i].api_handle; - if ( (file_handle != 0) && (file_handle != INVALID_HANDLE_VALUE)) { - CloseHandle(file_handle); - } - } - } -} - -static int hid_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface) -{ - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - - CHECK_HID_AVAILABLE; - - // NB: Disconnection detection is not possible in this function - if (priv->usb_interface[iface].path == NULL) { - return LIBUSB_ERROR_NOT_FOUND; // invalid iface - } - - // We use dev_handle as a flag for interface claimed - if (handle_priv->interface_handle[iface].dev_handle == INTERFACE_CLAIMED) { - return LIBUSB_ERROR_BUSY; // already claimed - } - - handle_priv->interface_handle[iface].dev_handle = INTERFACE_CLAIMED; - - usbi_dbg("claimed interface %d", iface); - handle_priv->active_interface = iface; - - return LIBUSB_SUCCESS; -} - -static int hid_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface) -{ - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - - CHECK_HID_AVAILABLE; - - if (priv->usb_interface[iface].path == NULL) { - return LIBUSB_ERROR_NOT_FOUND; // invalid iface - } - - if (handle_priv->interface_handle[iface].dev_handle != INTERFACE_CLAIMED) { - return LIBUSB_ERROR_NOT_FOUND; // invalid iface - } - - handle_priv->interface_handle[iface].dev_handle = INVALID_HANDLE_VALUE; - - return LIBUSB_SUCCESS; -} - -static int hid_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - - CHECK_HID_AVAILABLE; - - if (altsetting > 255) { - return LIBUSB_ERROR_INVALID_PARAM; - } - - if (altsetting != 0) { - usbi_err(ctx, "set interface altsetting not supported for altsetting >0"); - return LIBUSB_ERROR_NOT_SUPPORTED; - } - - return LIBUSB_SUCCESS; -} - -static int hid_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - WINUSB_SETUP_PACKET *setup = (WINUSB_SETUP_PACKET *) transfer->buffer; - HANDLE hid_handle; - struct winfd wfd; - int current_interface, config; - size_t size; - int r = LIBUSB_ERROR_INVALID_PARAM; - - CHECK_HID_AVAILABLE; - - transfer_priv->pollable_fd = INVALID_WINFD; - safe_free(transfer_priv->hid_buffer); - transfer_priv->hid_dest = NULL; - size = transfer->length - LIBUSB_CONTROL_SETUP_SIZE; - - if (size > MAX_CTRL_BUFFER_LENGTH) { - return LIBUSB_ERROR_INVALID_PARAM; - } - - current_interface = get_valid_interface(transfer->dev_handle, USB_API_HID); - if (current_interface < 0) { - if (auto_claim(transfer, ¤t_interface, USB_API_HID) != LIBUSB_SUCCESS) { - return LIBUSB_ERROR_NOT_FOUND; - } - } - - usbi_dbg("will use interface %d", current_interface); - hid_handle = handle_priv->interface_handle[current_interface].api_handle; - // Always use the handle returned from usbi_create_fd (wfd.handle) - wfd = usbi_create_fd(hid_handle, RW_READ, NULL, NULL); - if (wfd.fd < 0) { - return LIBUSB_ERROR_NOT_FOUND; - } - - switch(LIBUSB_REQ_TYPE(setup->request_type)) { - case LIBUSB_REQUEST_TYPE_STANDARD: - switch(setup->request) { - case LIBUSB_REQUEST_GET_DESCRIPTOR: - r = _hid_get_descriptor(priv->hid, wfd.handle, LIBUSB_REQ_RECIPIENT(setup->request_type), - (setup->value >> 8) & 0xFF, setup->value & 0xFF, transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE, &size); - break; - case LIBUSB_REQUEST_GET_CONFIGURATION: - r = windows_get_configuration(transfer->dev_handle, &config); - if (r == LIBUSB_SUCCESS) { - size = 1; - ((uint8_t*)transfer->buffer)[LIBUSB_CONTROL_SETUP_SIZE] = (uint8_t)config; - r = LIBUSB_COMPLETED; - } - break; - case LIBUSB_REQUEST_SET_CONFIGURATION: - if (setup->value == priv->active_config) { - r = LIBUSB_COMPLETED; - } else { - usbi_warn(ctx, "cannot set configuration other than the default one"); - r = LIBUSB_ERROR_NOT_SUPPORTED; - } - break; - case LIBUSB_REQUEST_GET_INTERFACE: - size = 1; - ((uint8_t*)transfer->buffer)[LIBUSB_CONTROL_SETUP_SIZE] = 0; - r = LIBUSB_COMPLETED; - break; - case LIBUSB_REQUEST_SET_INTERFACE: - r = hid_set_interface_altsetting(0, transfer->dev_handle, setup->index, setup->value); - if (r == LIBUSB_SUCCESS) { - r = LIBUSB_COMPLETED; - } - break; - default: - usbi_warn(ctx, "unsupported HID control request"); - r = LIBUSB_ERROR_NOT_SUPPORTED; - break; - } - break; - case LIBUSB_REQUEST_TYPE_CLASS: - r =_hid_class_request(priv->hid, wfd.handle, setup->request_type, setup->request, setup->value, - setup->index, transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE, transfer_priv, - &size, wfd.overlapped); - break; - default: - usbi_warn(ctx, "unsupported HID control request"); - r = LIBUSB_ERROR_NOT_SUPPORTED; - break; - } - - if (r == LIBUSB_COMPLETED) { - // Force request to be completed synchronously. Transferred size has been set by previous call - wfd.overlapped->Internal = STATUS_COMPLETED_SYNCHRONOUSLY; - // http://msdn.microsoft.com/en-us/library/ms684342%28VS.85%29.aspx - // set InternalHigh to the number of bytes transferred - wfd.overlapped->InternalHigh = (DWORD)size; - r = LIBUSB_SUCCESS; - } - - if (r == LIBUSB_SUCCESS) { - // Use priv_transfer to store data needed for async polling - transfer_priv->pollable_fd = wfd; - transfer_priv->interface_number = (uint8_t)current_interface; - } else { - usbi_free_fd(&wfd); - } - - return r; -} - -static int hid_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - struct winfd wfd; - HANDLE hid_handle; - bool direction_in, ret; - int current_interface, length; - DWORD size; - int r = LIBUSB_SUCCESS; - - CHECK_HID_AVAILABLE; - - transfer_priv->pollable_fd = INVALID_WINFD; - transfer_priv->hid_dest = NULL; - safe_free(transfer_priv->hid_buffer); - - current_interface = interface_by_endpoint(priv, handle_priv, transfer->endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cancelling transfer"); - return LIBUSB_ERROR_NOT_FOUND; - } - - usbi_dbg("matched endpoint %02X with interface %d", transfer->endpoint, current_interface); - - hid_handle = handle_priv->interface_handle[current_interface].api_handle; - direction_in = transfer->endpoint & LIBUSB_ENDPOINT_IN; - - wfd = usbi_create_fd(hid_handle, direction_in?RW_READ:RW_WRITE, NULL, NULL); - // Always use the handle returned from usbi_create_fd (wfd.handle) - if (wfd.fd < 0) { - return LIBUSB_ERROR_NO_MEM; - } - - // If report IDs are not in use, an extra prefix byte must be added - if ( ((direction_in) && (!priv->hid->uses_report_ids[0])) - || ((!direction_in) && (!priv->hid->uses_report_ids[1])) ) { - length = transfer->length+1; - } else { - length = transfer->length; - } - // Add a trailing byte to detect overflows on input - transfer_priv->hid_buffer = (uint8_t*)calloc(length+1, 1); - if (transfer_priv->hid_buffer == NULL) { - return LIBUSB_ERROR_NO_MEM; - } - transfer_priv->hid_expected_size = length; - - if (direction_in) { - transfer_priv->hid_dest = transfer->buffer; - usbi_dbg("reading %d bytes (report ID: 0x00)", length); - ret = ReadFile(wfd.handle, transfer_priv->hid_buffer, length+1, &size, wfd.overlapped); - } else { - if (!priv->hid->uses_report_ids[1]) { - memcpy(transfer_priv->hid_buffer+1, transfer->buffer, transfer->length); - } else { - // We could actually do without the calloc and memcpy in this case - memcpy(transfer_priv->hid_buffer, transfer->buffer, transfer->length); - } - usbi_dbg("writing %d bytes (report ID: 0x%02X)", length, transfer_priv->hid_buffer[0]); - ret = WriteFile(wfd.handle, transfer_priv->hid_buffer, length, &size, wfd.overlapped); - } - if (!ret) { - if (GetLastError() != ERROR_IO_PENDING) { - usbi_err(ctx, "HID transfer failed: %s", windows_error_str(0)); - usbi_free_fd(&wfd); - safe_free(transfer_priv->hid_buffer); - return LIBUSB_ERROR_IO; - } - } else { - // Only write operations that completed synchronously need to free up - // hid_buffer. For reads, copy_transfer_data() handles that process. - if (!direction_in) { - safe_free(transfer_priv->hid_buffer); - } - if (size == 0) { - usbi_err(ctx, "program assertion failed - no data was transferred"); - size = 1; - } - if (size > (size_t)length) { - usbi_err(ctx, "OVERFLOW!"); - r = LIBUSB_ERROR_OVERFLOW; - } - wfd.overlapped->Internal = STATUS_COMPLETED_SYNCHRONOUSLY; - wfd.overlapped->InternalHigh = size; - } - - transfer_priv->pollable_fd = wfd; - transfer_priv->interface_number = (uint8_t)current_interface; - - return r; -} - -static int hid_abort_transfers(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct windows_transfer_priv *transfer_priv = (struct windows_transfer_priv*)usbi_transfer_get_os_priv(itransfer); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - HANDLE hid_handle; - int current_interface; - - CHECK_HID_AVAILABLE; - - current_interface = transfer_priv->interface_number; - hid_handle = handle_priv->interface_handle[current_interface].api_handle; - CancelIo(hid_handle); - - return LIBUSB_SUCCESS; -} - -static int hid_reset_device(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - HANDLE hid_handle; - int current_interface; - - CHECK_HID_AVAILABLE; - - // Flushing the queues on all interfaces is the best we can achieve - for (current_interface = 0; current_interface < USB_MAXINTERFACES; current_interface++) { - hid_handle = handle_priv->interface_handle[current_interface].api_handle; - if ((hid_handle != 0) && (hid_handle != INVALID_HANDLE_VALUE)) { - HidD_FlushQueue(hid_handle); - } - } - return LIBUSB_SUCCESS; -} - -static int hid_clear_halt(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE hid_handle; - int current_interface; - - CHECK_HID_AVAILABLE; - - current_interface = interface_by_endpoint(priv, handle_priv, endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cannot clear"); - return LIBUSB_ERROR_NOT_FOUND; - } - - usbi_dbg("matched endpoint %02X with interface %d", endpoint, current_interface); - hid_handle = handle_priv->interface_handle[current_interface].api_handle; - - // No endpoint selection with Microsoft's implementation, so we try to flush the - // whole interface. Should be OK for most case scenarios - if (!HidD_FlushQueue(hid_handle)) { - usbi_err(ctx, "Flushing of HID queue failed: %s", windows_error_str(0)); - // Device was probably disconnected - return LIBUSB_ERROR_NO_DEVICE; - } - - return LIBUSB_SUCCESS; -} - -// This extra function is only needed for HID -static int hid_copy_transfer_data(int sub_api, struct usbi_transfer *itransfer, uint32_t io_size) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - int r = LIBUSB_TRANSFER_COMPLETED; - uint32_t corrected_size = io_size; - - if (transfer_priv->hid_buffer != NULL) { - // If we have a valid hid_buffer, it means the transfer was async - if (transfer_priv->hid_dest != NULL) { // Data readout - if (corrected_size > 0) { - // First, check for overflow - if (corrected_size > transfer_priv->hid_expected_size) { - usbi_err(ctx, "OVERFLOW!"); - corrected_size = (uint32_t)transfer_priv->hid_expected_size; - r = LIBUSB_TRANSFER_OVERFLOW; - } - - if (transfer_priv->hid_buffer[0] == 0) { - // Discard the 1 byte report ID prefix - corrected_size--; - memcpy(transfer_priv->hid_dest, transfer_priv->hid_buffer+1, corrected_size); - } else { - memcpy(transfer_priv->hid_dest, transfer_priv->hid_buffer, corrected_size); - } - } - transfer_priv->hid_dest = NULL; - } - // For write, we just need to free the hid buffer - safe_free(transfer_priv->hid_buffer); - } - itransfer->transferred += corrected_size; - return r; -} - - -/* - * Composite API functions - */ -static int composite_init(int sub_api, struct libusb_context *ctx) -{ - return LIBUSB_SUCCESS; -} - -static int composite_exit(int sub_api) -{ - return LIBUSB_SUCCESS; -} - -static int composite_open(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - int r = LIBUSB_ERROR_NOT_FOUND; - uint8_t i; - // SUB_API_MAX+1 as the SUB_API_MAX pos is used to indicate availability of HID - bool available[SUB_API_MAX+1] = {0}; - - for (i=0; iusb_interface[i].apib->id) { - case USB_API_WINUSBX: - if (priv->usb_interface[i].sub_api != SUB_API_NOTSET) - available[priv->usb_interface[i].sub_api] = true; - break; - case USB_API_HID: - available[SUB_API_MAX] = true; - break; - default: - break; - } - } - - for (i=0; idev); - uint8_t i; - // SUB_API_MAX+1 as the SUB_API_MAX pos is used to indicate availability of HID - bool available[SUB_API_MAX+1] = {0}; - - for (i=0; iusb_interface[i].apib->id) { - case USB_API_WINUSBX: - if (priv->usb_interface[i].sub_api != SUB_API_NOTSET) - available[priv->usb_interface[i].sub_api] = true; - break; - case USB_API_HID: - available[SUB_API_MAX] = true; - break; - default: - break; - } - } - - for (i=0; idev); - return priv->usb_interface[iface].apib-> - claim_interface(priv->usb_interface[iface].sub_api, dev_handle, iface); -} - -static int composite_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - return priv->usb_interface[iface].apib-> - set_interface_altsetting(priv->usb_interface[iface].sub_api, dev_handle, iface, altsetting); -} - -static int composite_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - return priv->usb_interface[iface].apib-> - release_interface(priv->usb_interface[iface].sub_api, dev_handle, iface); -} - -static int composite_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - struct libusb_config_descriptor *conf_desc; - WINUSB_SETUP_PACKET *setup = (WINUSB_SETUP_PACKET *) transfer->buffer; - int iface, pass, r; - - // Interface shouldn't matter for control, but it does in practice, with Windows' - // restrictions with regards to accessing HID keyboards and mice. Try to target - // a specific interface first, if possible. - switch (LIBUSB_REQ_RECIPIENT(setup->request_type)) { - case LIBUSB_RECIPIENT_INTERFACE: - iface = setup->index & 0xFF; - break; - case LIBUSB_RECIPIENT_ENDPOINT: - r = libusb_get_config_descriptor(transfer->dev_handle->dev, (uint8_t)(priv->active_config-1), &conf_desc); - if (r == LIBUSB_SUCCESS) { - iface = get_interface_by_endpoint(conf_desc, (setup->index & 0xFF)); - libusb_free_config_descriptor(conf_desc); - break; - } - // Fall through if not able to determine interface - default: - iface = -1; - break; - } - - // Try and target a specific interface if the control setup indicates such - if ((iface >= 0) && (iface < USB_MAXINTERFACES)) { - usbi_dbg("attempting control transfer targeted to interface %d", iface); - if (priv->usb_interface[iface].path != NULL) { - r = priv->usb_interface[iface].apib->submit_control_transfer(priv->usb_interface[iface].sub_api, itransfer); - if (r == LIBUSB_SUCCESS) { - return r; - } - } - } - - // Either not targeted to a specific interface or no luck in doing so. - // Try a 2 pass approach with all interfaces. - for (pass = 0; pass < 2; pass++) { - for (iface = 0; iface < USB_MAXINTERFACES; iface++) { - if (priv->usb_interface[iface].path != NULL) { - if ((pass == 0) && (priv->usb_interface[iface].restricted_functionality)) { - usbi_dbg("trying to skip restricted interface #%d (HID keyboard or mouse?)", iface); - continue; - } - usbi_dbg("using interface %d", iface); - r = priv->usb_interface[iface].apib->submit_control_transfer(priv->usb_interface[iface].sub_api, itransfer); - // If not supported on this API, it may be supported on another, so don't give up yet!! - if (r == LIBUSB_ERROR_NOT_SUPPORTED) { - continue; - } - return r; - } - } - } - - usbi_err(ctx, "no libusb supported interfaces to complete request"); - return LIBUSB_ERROR_NOT_FOUND; -} - -static int composite_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int current_interface; - - current_interface = interface_by_endpoint(priv, handle_priv, transfer->endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cancelling transfer"); - return LIBUSB_ERROR_NOT_FOUND; - } - - return priv->usb_interface[current_interface].apib-> - submit_bulk_transfer(priv->usb_interface[current_interface].sub_api, itransfer);} - -static int composite_submit_iso_transfer(int sub_api, struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int current_interface; - - current_interface = interface_by_endpoint(priv, handle_priv, transfer->endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cancelling transfer"); - return LIBUSB_ERROR_NOT_FOUND; - } - - return priv->usb_interface[current_interface].apib-> - submit_iso_transfer(priv->usb_interface[current_interface].sub_api, itransfer);} - -static int composite_clear_halt(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct windows_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - int current_interface; - - current_interface = interface_by_endpoint(priv, handle_priv, endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cannot clear"); - return LIBUSB_ERROR_NOT_FOUND; - } - - return priv->usb_interface[current_interface].apib-> - clear_halt(priv->usb_interface[current_interface].sub_api, dev_handle, endpoint);} - -static int composite_abort_control(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct windows_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - - return priv->usb_interface[transfer_priv->interface_number].apib-> - abort_control(priv->usb_interface[transfer_priv->interface_number].sub_api, itransfer);} - -static int composite_abort_transfers(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct windows_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct windows_device_priv *priv = _device_priv(transfer->dev_handle->dev); - - return priv->usb_interface[transfer_priv->interface_number].apib-> - abort_transfers(priv->usb_interface[transfer_priv->interface_number].sub_api, itransfer);} - -static int composite_reset_device(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct windows_device_priv *priv = _device_priv(dev_handle->dev); - int r; - uint8_t i; - bool available[SUB_API_MAX]; - for (i = 0; iusb_interface[i].apib->id == USB_API_WINUSBX) - && (priv->usb_interface[i].sub_api != SUB_API_NOTSET) ) { - available[priv->usb_interface[i].sub_api] = true; - } - } - for (i=0; idev_handle->dev); - - return priv->usb_interface[transfer_priv->interface_number].apib-> - copy_transfer_data(priv->usb_interface[transfer_priv->interface_number].sub_api, itransfer, io_size); -} diff --git a/Externals/libusb/libusb/os/windows_usb.h b/Externals/libusb/libusb/os/windows_usb.h deleted file mode 100644 index 35fd2f275cdf..000000000000 --- a/Externals/libusb/libusb/os/windows_usb.h +++ /dev/null @@ -1,973 +0,0 @@ -/* - * Windows backend for libusb 1.0 - * Copyright © 2009-2012 Pete Batard - * With contributions from Michael Plante, Orin Eman et al. - * Parts of this code adapted from libusb-win32-v1 by Stephan Meyer - * Major code testing contribution by Xiaofan Chen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#pragma once - -#include "windows_common.h" - -#if defined(_MSC_VER) -// disable /W4 MSVC warnings that are benign -#pragma warning(disable:4100) // unreferenced formal parameter -#pragma warning(disable:4127) // conditional expression is constant -#pragma warning(disable:4201) // nameless struct/union -#pragma warning(disable:4214) // bit field types other than int -#pragma warning(disable:4996) // deprecated API calls -#pragma warning(disable:28159) // more deprecated API calls -#endif - -// Missing from MSVC6 setupapi.h -#if !defined(SPDRP_ADDRESS) -#define SPDRP_ADDRESS 28 -#endif -#if !defined(SPDRP_INSTALL_STATE) -#define SPDRP_INSTALL_STATE 34 -#endif - -// Missing from MinGW -#if !defined(FACILITY_SETUPAPI) -#define FACILITY_SETUPAPI 15 -#endif - -#if defined(__CYGWIN__ ) -#define _stricmp stricmp -#define _snprintf snprintf -#define _strdup strdup -// _beginthreadex is MSVCRT => unavailable for cygwin. Fallback to using CreateThread -#define _beginthreadex(a, b, c, d, e, f) CreateThread(a, b, (LPTHREAD_START_ROUTINE)c, d, e, f) -#endif - -#define MAX_CTRL_BUFFER_LENGTH 4096 -#define MAX_USB_DEVICES 256 -#define MAX_USB_STRING_LENGTH 128 -#define MAX_HID_REPORT_SIZE 1024 -#define MAX_HID_DESCRIPTOR_SIZE 256 -#define MAX_GUID_STRING_LENGTH 40 -#define MAX_PATH_LENGTH 128 -#define MAX_KEY_LENGTH 256 -#define LIST_SEPARATOR ';' -#define HTAB_SIZE 1021 - -// Handle code for HID interface that have been claimed ("dibs") -#define INTERFACE_CLAIMED ((HANDLE)(intptr_t)0xD1B5) -// Additional return code for HID operations that completed synchronously -#define LIBUSB_COMPLETED (LIBUSB_SUCCESS + 1) - -// http://msdn.microsoft.com/en-us/library/ff545978.aspx -// http://msdn.microsoft.com/en-us/library/ff545972.aspx -// http://msdn.microsoft.com/en-us/library/ff545982.aspx -#if !defined(GUID_DEVINTERFACE_USB_HOST_CONTROLLER) -const GUID GUID_DEVINTERFACE_USB_HOST_CONTROLLER = { 0x3ABF6F2D, 0x71C4, 0x462A, {0x8A, 0x92, 0x1E, 0x68, 0x61, 0xE6, 0xAF, 0x27} }; -#endif -#if !defined(GUID_DEVINTERFACE_USB_DEVICE) -const GUID GUID_DEVINTERFACE_USB_DEVICE = { 0xA5DCBF10, 0x6530, 0x11D2, {0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED} }; -#endif -#if !defined(GUID_DEVINTERFACE_USB_HUB) -const GUID GUID_DEVINTERFACE_USB_HUB = { 0xF18A0E88, 0xC30C, 0x11D0, {0x88, 0x15, 0x00, 0xA0, 0xC9, 0x06, 0xBE, 0xD8} }; -#endif -#if !defined(GUID_DEVINTERFACE_LIBUSB0_FILTER) -const GUID GUID_DEVINTERFACE_LIBUSB0_FILTER = { 0xF9F3FF14, 0xAE21, 0x48A0, {0x8A, 0x25, 0x80, 0x11, 0xA7, 0xA9, 0x31, 0xD9} }; -#endif - - -/* - * Multiple USB API backend support - */ -#define USB_API_UNSUPPORTED 0 -#define USB_API_HUB 1 -#define USB_API_COMPOSITE 2 -#define USB_API_WINUSBX 3 -#define USB_API_HID 4 -#define USB_API_MAX 5 -// The following is used to indicate if the HID or composite extra props have already been set. -#define USB_API_SET (1<os_priv; -} - -static inline void windows_device_priv_init(libusb_device* dev) { - struct windows_device_priv* p = _device_priv(dev); - int i; - p->depth = 0; - p->port = 0; - p->parent_dev = NULL; - p->path = NULL; - p->apib = &usb_api_backend[USB_API_UNSUPPORTED]; - p->sub_api = SUB_API_NOTSET; - p->hid = NULL; - p->active_config = 0; - p->config_descriptor = NULL; - memset(&(p->dev_descriptor), 0, sizeof(USB_DEVICE_DESCRIPTOR)); - for (i=0; iusb_interface[i].path = NULL; - p->usb_interface[i].apib = &usb_api_backend[USB_API_UNSUPPORTED]; - p->usb_interface[i].sub_api = SUB_API_NOTSET; - p->usb_interface[i].nb_endpoints = 0; - p->usb_interface[i].endpoint = NULL; - p->usb_interface[i].restricted_functionality = false; - } -} - -static inline void windows_device_priv_release(libusb_device* dev) { - struct windows_device_priv* p = _device_priv(dev); - int i; - safe_free(p->path); - if ((dev->num_configurations > 0) && (p->config_descriptor != NULL)) { - for (i=0; i < dev->num_configurations; i++) - safe_free(p->config_descriptor[i]); - } - safe_free(p->config_descriptor); - safe_free(p->hid); - for (i=0; iusb_interface[i].path); - safe_free(p->usb_interface[i].endpoint); - } -} - -struct interface_handle_t { - HANDLE dev_handle; // WinUSB needs an extra handle for the file - HANDLE api_handle; // used by the API to communicate with the device -}; - -struct windows_device_handle_priv { - int active_interface; - struct interface_handle_t interface_handle[USB_MAXINTERFACES]; - int autoclaim_count[USB_MAXINTERFACES]; // For auto-release -}; - -static inline struct windows_device_handle_priv *_device_handle_priv( - struct libusb_device_handle *handle) -{ - return (struct windows_device_handle_priv *) handle->os_priv; -} - -// used for async polling functions -struct windows_transfer_priv { - struct winfd pollable_fd; - uint8_t interface_number; - uint8_t *hid_buffer; // 1 byte extended data buffer, required for HID - uint8_t *hid_dest; // transfer buffer destination, required for HID - size_t hid_expected_size; -}; - -// used to match a device driver (including filter drivers) against a supported API -struct driver_lookup { - char list[MAX_KEY_LENGTH+1];// REG_MULTI_SZ list of services (driver) names - const DWORD reg_prop; // SPDRP registry key to use to retreive list - const char* designation; // internal designation (for debug output) -}; - -#define WM_TIMER_REQUEST (WM_USER + 1) -#define WM_TIMER_EXIT (WM_USER + 2) - -// used for monotonic clock_gettime() -struct timer_request { - struct timespec *tp; - HANDLE event; -}; - -/* OLE32 dependency */ -DLL_DECLARE_PREFIXED(WINAPI, HRESULT, p, CLSIDFromString, (LPCOLESTR, LPCLSID)); - -/* This call is only available from XP SP2 */ -DLL_DECLARE_PREFIXED(WINAPI, BOOL, p, IsWow64Process, (HANDLE, PBOOL)); - -/* SetupAPI dependencies */ -DLL_DECLARE_PREFIXED(WINAPI, HDEVINFO, p, SetupDiGetClassDevsA, (const GUID*, PCSTR, HWND, DWORD)); -DLL_DECLARE_PREFIXED(WINAPI, BOOL, p, SetupDiEnumDeviceInfo, (HDEVINFO, DWORD, PSP_DEVINFO_DATA)); -DLL_DECLARE_PREFIXED(WINAPI, BOOL, p, SetupDiEnumDeviceInterfaces, (HDEVINFO, PSP_DEVINFO_DATA, - const GUID*, DWORD, PSP_DEVICE_INTERFACE_DATA)); -DLL_DECLARE_PREFIXED(WINAPI, BOOL, p, SetupDiGetDeviceInterfaceDetailA, (HDEVINFO, PSP_DEVICE_INTERFACE_DATA, - PSP_DEVICE_INTERFACE_DETAIL_DATA_A, DWORD, PDWORD, PSP_DEVINFO_DATA)); -DLL_DECLARE_PREFIXED(WINAPI, BOOL, p, SetupDiDestroyDeviceInfoList, (HDEVINFO)); -DLL_DECLARE_PREFIXED(WINAPI, HKEY, p, SetupDiOpenDevRegKey, (HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, REGSAM)); -DLL_DECLARE_PREFIXED(WINAPI, BOOL, p, SetupDiGetDeviceRegistryPropertyA, (HDEVINFO, - PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD)); -DLL_DECLARE_PREFIXED(WINAPI, HKEY, p, SetupDiOpenDeviceInterfaceRegKey, (HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, DWORD)); -DLL_DECLARE_PREFIXED(WINAPI, LONG, p, RegQueryValueExW, (HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD)); -DLL_DECLARE_PREFIXED(WINAPI, LONG, p, RegCloseKey, (HKEY)); - -/* User32 dependencies */ -DLL_DECLARE_PREFIXED(WINAPI, BOOL, p, GetMessageA, (LPMSG, HWND, UINT, UINT)); -DLL_DECLARE_PREFIXED(WINAPI, BOOL, p, PeekMessageA, (LPMSG, HWND, UINT, UINT, UINT)); -DLL_DECLARE_PREFIXED(WINAPI, BOOL, p, PostThreadMessageA, (DWORD, UINT, WPARAM, LPARAM)); - -/* - * Windows DDK API definitions. Most of it copied from MinGW's includes - */ -typedef DWORD DEVNODE, DEVINST; -typedef DEVNODE *PDEVNODE, *PDEVINST; -typedef DWORD RETURN_TYPE; -typedef RETURN_TYPE CONFIGRET; - -#define CR_SUCCESS 0x00000000 -#define CR_NO_SUCH_DEVNODE 0x0000000D - -#define USB_DEVICE_DESCRIPTOR_TYPE LIBUSB_DT_DEVICE -#define USB_CONFIGURATION_DESCRIPTOR_TYPE LIBUSB_DT_CONFIG -#define USB_STRING_DESCRIPTOR_TYPE LIBUSB_DT_STRING -#define USB_INTERFACE_DESCRIPTOR_TYPE LIBUSB_DT_INTERFACE -#define USB_ENDPOINT_DESCRIPTOR_TYPE LIBUSB_DT_ENDPOINT - -#define USB_REQUEST_GET_STATUS LIBUSB_REQUEST_GET_STATUS -#define USB_REQUEST_CLEAR_FEATURE LIBUSB_REQUEST_CLEAR_FEATURE -#define USB_REQUEST_SET_FEATURE LIBUSB_REQUEST_SET_FEATURE -#define USB_REQUEST_SET_ADDRESS LIBUSB_REQUEST_SET_ADDRESS -#define USB_REQUEST_GET_DESCRIPTOR LIBUSB_REQUEST_GET_DESCRIPTOR -#define USB_REQUEST_SET_DESCRIPTOR LIBUSB_REQUEST_SET_DESCRIPTOR -#define USB_REQUEST_GET_CONFIGURATION LIBUSB_REQUEST_GET_CONFIGURATION -#define USB_REQUEST_SET_CONFIGURATION LIBUSB_REQUEST_SET_CONFIGURATION -#define USB_REQUEST_GET_INTERFACE LIBUSB_REQUEST_GET_INTERFACE -#define USB_REQUEST_SET_INTERFACE LIBUSB_REQUEST_SET_INTERFACE -#define USB_REQUEST_SYNC_FRAME LIBUSB_REQUEST_SYNCH_FRAME - -#define USB_GET_NODE_INFORMATION 258 -#define USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION 260 -#define USB_GET_NODE_CONNECTION_NAME 261 -#define USB_GET_HUB_CAPABILITIES 271 -#if !defined(USB_GET_NODE_CONNECTION_INFORMATION_EX) -#define USB_GET_NODE_CONNECTION_INFORMATION_EX 274 -#endif -#if !defined(USB_GET_HUB_CAPABILITIES_EX) -#define USB_GET_HUB_CAPABILITIES_EX 276 -#endif -#if !defined(USB_GET_NODE_CONNECTION_INFORMATION_EX_V2) -#define USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 279 -#endif - -#ifndef METHOD_BUFFERED -#define METHOD_BUFFERED 0 -#endif -#ifndef FILE_ANY_ACCESS -#define FILE_ANY_ACCESS 0x00000000 -#endif -#ifndef FILE_DEVICE_UNKNOWN -#define FILE_DEVICE_UNKNOWN 0x00000022 -#endif -#ifndef FILE_DEVICE_USB -#define FILE_DEVICE_USB FILE_DEVICE_UNKNOWN -#endif - -#ifndef CTL_CODE -#define CTL_CODE(DeviceType, Function, Method, Access)( \ - ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)) -#endif - -typedef enum USB_CONNECTION_STATUS { - NoDeviceConnected, - DeviceConnected, - DeviceFailedEnumeration, - DeviceGeneralFailure, - DeviceCausedOvercurrent, - DeviceNotEnoughPower, - DeviceNotEnoughBandwidth, - DeviceHubNestedTooDeeply, - DeviceInLegacyHub -} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS; - -typedef enum USB_HUB_NODE { - UsbHub, - UsbMIParent -} USB_HUB_NODE; - -/* Cfgmgr32.dll interface */ -DLL_DECLARE(WINAPI, CONFIGRET, CM_Get_Parent, (PDEVINST, DEVINST, ULONG)); -DLL_DECLARE(WINAPI, CONFIGRET, CM_Get_Child, (PDEVINST, DEVINST, ULONG)); -DLL_DECLARE(WINAPI, CONFIGRET, CM_Get_Sibling, (PDEVINST, DEVINST, ULONG)); -DLL_DECLARE(WINAPI, CONFIGRET, CM_Get_Device_IDA, (DEVINST, PCHAR, ULONG, ULONG)); - -#define IOCTL_USB_GET_HUB_CAPABILITIES_EX \ - CTL_CODE( FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES_EX, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_HUB_CAPABILITIES \ - CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION \ - CTL_CODE(FILE_DEVICE_USB, USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_ROOT_HUB_NAME \ - CTL_CODE(FILE_DEVICE_USB, HCD_GET_ROOT_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_NODE_INFORMATION \ - CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX \ - CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION_EX, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 \ - CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION_EX_V2, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES \ - CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_ATTRIBUTES, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_NODE_CONNECTION_NAME \ - CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS) - -// Most of the structures below need to be packed -#pragma pack(push, 1) - -typedef struct USB_INTERFACE_DESCRIPTOR { - UCHAR bLength; - UCHAR bDescriptorType; - UCHAR bInterfaceNumber; - UCHAR bAlternateSetting; - UCHAR bNumEndpoints; - UCHAR bInterfaceClass; - UCHAR bInterfaceSubClass; - UCHAR bInterfaceProtocol; - UCHAR iInterface; -} USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR; - -typedef struct USB_CONFIGURATION_DESCRIPTOR { - UCHAR bLength; - UCHAR bDescriptorType; - USHORT wTotalLength; - UCHAR bNumInterfaces; - UCHAR bConfigurationValue; - UCHAR iConfiguration; - UCHAR bmAttributes; - UCHAR MaxPower; -} USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR; - -typedef struct USB_CONFIGURATION_DESCRIPTOR_SHORT { - struct { - ULONG ConnectionIndex; - struct { - UCHAR bmRequest; - UCHAR bRequest; - USHORT wValue; - USHORT wIndex; - USHORT wLength; - } SetupPacket; - } req; - USB_CONFIGURATION_DESCRIPTOR data; -} USB_CONFIGURATION_DESCRIPTOR_SHORT; - -typedef struct USB_ENDPOINT_DESCRIPTOR { - UCHAR bLength; - UCHAR bDescriptorType; - UCHAR bEndpointAddress; - UCHAR bmAttributes; - USHORT wMaxPacketSize; - UCHAR bInterval; -} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR; - -typedef struct USB_DESCRIPTOR_REQUEST { - ULONG ConnectionIndex; - struct { - UCHAR bmRequest; - UCHAR bRequest; - USHORT wValue; - USHORT wIndex; - USHORT wLength; - } SetupPacket; -// UCHAR Data[0]; -} USB_DESCRIPTOR_REQUEST, *PUSB_DESCRIPTOR_REQUEST; - -typedef struct USB_HUB_DESCRIPTOR { - UCHAR bDescriptorLength; - UCHAR bDescriptorType; - UCHAR bNumberOfPorts; - USHORT wHubCharacteristics; - UCHAR bPowerOnToPowerGood; - UCHAR bHubControlCurrent; - UCHAR bRemoveAndPowerMask[64]; -} USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR; - -typedef struct USB_ROOT_HUB_NAME { - ULONG ActualLength; - WCHAR RootHubName[1]; -} USB_ROOT_HUB_NAME, *PUSB_ROOT_HUB_NAME; - -typedef struct USB_ROOT_HUB_NAME_FIXED { - ULONG ActualLength; - WCHAR RootHubName[MAX_PATH_LENGTH]; -} USB_ROOT_HUB_NAME_FIXED; - -typedef struct USB_NODE_CONNECTION_NAME { - ULONG ConnectionIndex; - ULONG ActualLength; - WCHAR NodeName[1]; -} USB_NODE_CONNECTION_NAME, *PUSB_NODE_CONNECTION_NAME; - -typedef struct USB_NODE_CONNECTION_NAME_FIXED { - ULONG ConnectionIndex; - ULONG ActualLength; - WCHAR NodeName[MAX_PATH_LENGTH]; -} USB_NODE_CONNECTION_NAME_FIXED; - -typedef struct USB_HUB_NAME_FIXED { - union { - USB_ROOT_HUB_NAME_FIXED root; - USB_NODE_CONNECTION_NAME_FIXED node; - } u; -} USB_HUB_NAME_FIXED; - -typedef struct USB_HUB_INFORMATION { - USB_HUB_DESCRIPTOR HubDescriptor; - BOOLEAN HubIsBusPowered; -} USB_HUB_INFORMATION, *PUSB_HUB_INFORMATION; - -typedef struct USB_MI_PARENT_INFORMATION { - ULONG NumberOfInterfaces; -} USB_MI_PARENT_INFORMATION, *PUSB_MI_PARENT_INFORMATION; - -typedef struct USB_NODE_INFORMATION { - USB_HUB_NODE NodeType; - union { - USB_HUB_INFORMATION HubInformation; - USB_MI_PARENT_INFORMATION MiParentInformation; - } u; -} USB_NODE_INFORMATION, *PUSB_NODE_INFORMATION; - -typedef struct USB_PIPE_INFO { - USB_ENDPOINT_DESCRIPTOR EndpointDescriptor; - ULONG ScheduleOffset; -} USB_PIPE_INFO, *PUSB_PIPE_INFO; - -typedef struct USB_NODE_CONNECTION_INFORMATION_EX { - ULONG ConnectionIndex; - USB_DEVICE_DESCRIPTOR DeviceDescriptor; - UCHAR CurrentConfigurationValue; - UCHAR Speed; - BOOLEAN DeviceIsHub; - USHORT DeviceAddress; - ULONG NumberOfOpenPipes; - USB_CONNECTION_STATUS ConnectionStatus; -// USB_PIPE_INFO PipeList[0]; -} USB_NODE_CONNECTION_INFORMATION_EX, *PUSB_NODE_CONNECTION_INFORMATION_EX; - -typedef union _USB_PROTOCOLS { - ULONG ul; - struct { - ULONG Usb110:1; - ULONG Usb200:1; - ULONG Usb300:1; - ULONG ReservedMBZ:29; - }; -} USB_PROTOCOLS, *PUSB_PROTOCOLS; - -typedef union _USB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS { - ULONG ul; - struct { - ULONG DeviceIsOperatingAtSuperSpeedOrHigher:1; - ULONG DeviceIsSuperSpeedCapableOrHigher:1; - ULONG ReservedMBZ:30; - }; -} USB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS, *PUSB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS; - -typedef struct _USB_NODE_CONNECTION_INFORMATION_EX_V2 { - ULONG ConnectionIndex; - ULONG Length; - USB_PROTOCOLS SupportedUsbProtocols; - USB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS Flags; -} USB_NODE_CONNECTION_INFORMATION_EX_V2, *PUSB_NODE_CONNECTION_INFORMATION_EX_V2; - -typedef struct USB_HUB_CAP_FLAGS { - ULONG HubIsHighSpeedCapable:1; - ULONG HubIsHighSpeed:1; - ULONG HubIsMultiTtCapable:1; - ULONG HubIsMultiTt:1; - ULONG HubIsRoot:1; - ULONG HubIsArmedWakeOnConnect:1; - ULONG ReservedMBZ:26; -} USB_HUB_CAP_FLAGS, *PUSB_HUB_CAP_FLAGS; - -typedef struct USB_HUB_CAPABILITIES { - ULONG HubIs2xCapable : 1; -} USB_HUB_CAPABILITIES, *PUSB_HUB_CAPABILITIES; - -typedef struct USB_HUB_CAPABILITIES_EX { - USB_HUB_CAP_FLAGS CapabilityFlags; -} USB_HUB_CAPABILITIES_EX, *PUSB_HUB_CAPABILITIES_EX; - -#pragma pack(pop) - -/* winusb.dll interface */ - -#define SHORT_PACKET_TERMINATE 0x01 -#define AUTO_CLEAR_STALL 0x02 -#define PIPE_TRANSFER_TIMEOUT 0x03 -#define IGNORE_SHORT_PACKETS 0x04 -#define ALLOW_PARTIAL_READS 0x05 -#define AUTO_FLUSH 0x06 -#define RAW_IO 0x07 -#define MAXIMUM_TRANSFER_SIZE 0x08 -#define AUTO_SUSPEND 0x81 -#define SUSPEND_DELAY 0x83 -#define DEVICE_SPEED 0x01 -#define LowSpeed 0x01 -#define FullSpeed 0x02 -#define HighSpeed 0x03 - -typedef enum USBD_PIPE_TYPE { - UsbdPipeTypeControl, - UsbdPipeTypeIsochronous, - UsbdPipeTypeBulk, - UsbdPipeTypeInterrupt -} USBD_PIPE_TYPE; - -typedef struct { - USBD_PIPE_TYPE PipeType; - UCHAR PipeId; - USHORT MaximumPacketSize; - UCHAR Interval; -} WINUSB_PIPE_INFORMATION, *PWINUSB_PIPE_INFORMATION; - -#pragma pack(1) -typedef struct { - UCHAR request_type; - UCHAR request; - USHORT value; - USHORT index; - USHORT length; -} WINUSB_SETUP_PACKET, *PWINUSB_SETUP_PACKET; -#pragma pack() - -typedef void *WINUSB_INTERFACE_HANDLE, *PWINUSB_INTERFACE_HANDLE; - -typedef BOOL (WINAPI *WinUsb_AbortPipe_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID -); -typedef BOOL (WINAPI *WinUsb_ControlTransfer_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - WINUSB_SETUP_PACKET SetupPacket, - PUCHAR Buffer, - ULONG BufferLength, - PULONG LengthTransferred, - LPOVERLAPPED Overlapped -); -typedef BOOL (WINAPI *WinUsb_FlushPipe_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID -); -typedef BOOL (WINAPI *WinUsb_Free_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle -); -typedef BOOL (WINAPI *WinUsb_GetAssociatedInterface_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR AssociatedInterfaceIndex, - PWINUSB_INTERFACE_HANDLE AssociatedInterfaceHandle -); -typedef BOOL (WINAPI *WinUsb_GetCurrentAlternateSetting_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - PUCHAR AlternateSetting -); -typedef BOOL (WINAPI *WinUsb_GetDescriptor_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR DescriptorType, - UCHAR Index, - USHORT LanguageID, - PUCHAR Buffer, - ULONG BufferLength, - PULONG LengthTransferred -); -typedef BOOL (WINAPI *WinUsb_GetOverlappedResult_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - LPOVERLAPPED lpOverlapped, - LPDWORD lpNumberOfBytesTransferred, - BOOL bWait -); -typedef BOOL (WINAPI *WinUsb_GetPipePolicy_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID, - ULONG PolicyType, - PULONG ValueLength, - PVOID Value -); -typedef BOOL (WINAPI *WinUsb_GetPowerPolicy_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - ULONG PolicyType, - PULONG ValueLength, - PVOID Value -); -typedef BOOL (WINAPI *WinUsb_Initialize_t)( - HANDLE DeviceHandle, - PWINUSB_INTERFACE_HANDLE InterfaceHandle -); -typedef BOOL (WINAPI *WinUsb_QueryDeviceInformation_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - ULONG InformationType, - PULONG BufferLength, - PVOID Buffer -); -typedef BOOL (WINAPI *WinUsb_QueryInterfaceSettings_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR AlternateSettingNumber, - PUSB_INTERFACE_DESCRIPTOR UsbAltInterfaceDescriptor -); -typedef BOOL (WINAPI *WinUsb_QueryPipe_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR AlternateInterfaceNumber, - UCHAR PipeIndex, - PWINUSB_PIPE_INFORMATION PipeInformation -); -typedef BOOL (WINAPI *WinUsb_ReadPipe_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID, - PUCHAR Buffer, - ULONG BufferLength, - PULONG LengthTransferred, - LPOVERLAPPED Overlapped -); -typedef BOOL (WINAPI *WinUsb_ResetPipe_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID -); -typedef BOOL (WINAPI *WinUsb_SetCurrentAlternateSetting_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR AlternateSetting -); -typedef BOOL (WINAPI *WinUsb_SetPipePolicy_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID, - ULONG PolicyType, - ULONG ValueLength, - PVOID Value -); -typedef BOOL (WINAPI *WinUsb_SetPowerPolicy_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - ULONG PolicyType, - ULONG ValueLength, - PVOID Value -); -typedef BOOL (WINAPI *WinUsb_WritePipe_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID, - PUCHAR Buffer, - ULONG BufferLength, - PULONG LengthTransferred, - LPOVERLAPPED Overlapped -); -typedef BOOL (WINAPI *WinUsb_ResetDevice_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle -); - -/* /!\ These must match the ones from the official libusbk.h */ -typedef enum _KUSB_FNID -{ - KUSB_FNID_Init, - KUSB_FNID_Free, - KUSB_FNID_ClaimInterface, - KUSB_FNID_ReleaseInterface, - KUSB_FNID_SetAltInterface, - KUSB_FNID_GetAltInterface, - KUSB_FNID_GetDescriptor, - KUSB_FNID_ControlTransfer, - KUSB_FNID_SetPowerPolicy, - KUSB_FNID_GetPowerPolicy, - KUSB_FNID_SetConfiguration, - KUSB_FNID_GetConfiguration, - KUSB_FNID_ResetDevice, - KUSB_FNID_Initialize, - KUSB_FNID_SelectInterface, - KUSB_FNID_GetAssociatedInterface, - KUSB_FNID_Clone, - KUSB_FNID_QueryInterfaceSettings, - KUSB_FNID_QueryDeviceInformation, - KUSB_FNID_SetCurrentAlternateSetting, - KUSB_FNID_GetCurrentAlternateSetting, - KUSB_FNID_QueryPipe, - KUSB_FNID_SetPipePolicy, - KUSB_FNID_GetPipePolicy, - KUSB_FNID_ReadPipe, - KUSB_FNID_WritePipe, - KUSB_FNID_ResetPipe, - KUSB_FNID_AbortPipe, - KUSB_FNID_FlushPipe, - KUSB_FNID_IsoReadPipe, - KUSB_FNID_IsoWritePipe, - KUSB_FNID_GetCurrentFrameNumber, - KUSB_FNID_GetOverlappedResult, - KUSB_FNID_GetProperty, - KUSB_FNID_COUNT, -} KUSB_FNID; - -typedef struct _KLIB_VERSION { - INT Major; - INT Minor; - INT Micro; - INT Nano; -} KLIB_VERSION; -typedef KLIB_VERSION* PKLIB_VERSION; - -typedef BOOL (WINAPI *LibK_GetProcAddress_t)( - PVOID* ProcAddress, - ULONG DriverID, - ULONG FunctionID -); - -typedef VOID (WINAPI *LibK_GetVersion_t)( - PKLIB_VERSION Version -); - -struct winusb_interface { - bool initialized; - WinUsb_AbortPipe_t AbortPipe; - WinUsb_ControlTransfer_t ControlTransfer; - WinUsb_FlushPipe_t FlushPipe; - WinUsb_Free_t Free; - WinUsb_GetAssociatedInterface_t GetAssociatedInterface; - WinUsb_GetCurrentAlternateSetting_t GetCurrentAlternateSetting; - WinUsb_GetDescriptor_t GetDescriptor; - WinUsb_GetOverlappedResult_t GetOverlappedResult; - WinUsb_GetPipePolicy_t GetPipePolicy; - WinUsb_GetPowerPolicy_t GetPowerPolicy; - WinUsb_Initialize_t Initialize; - WinUsb_QueryDeviceInformation_t QueryDeviceInformation; - WinUsb_QueryInterfaceSettings_t QueryInterfaceSettings; - WinUsb_QueryPipe_t QueryPipe; - WinUsb_ReadPipe_t ReadPipe; - WinUsb_ResetPipe_t ResetPipe; - WinUsb_SetCurrentAlternateSetting_t SetCurrentAlternateSetting; - WinUsb_SetPipePolicy_t SetPipePolicy; - WinUsb_SetPowerPolicy_t SetPowerPolicy; - WinUsb_WritePipe_t WritePipe; - WinUsb_ResetDevice_t ResetDevice; -}; - -/* hid.dll interface */ - -#define HIDP_STATUS_SUCCESS 0x110000 -typedef void* PHIDP_PREPARSED_DATA; - -#pragma pack(1) -typedef struct { - ULONG Size; - USHORT VendorID; - USHORT ProductID; - USHORT VersionNumber; -} HIDD_ATTRIBUTES, *PHIDD_ATTRIBUTES; -#pragma pack() - -typedef USHORT USAGE; -typedef struct { - USAGE Usage; - USAGE UsagePage; - USHORT InputReportByteLength; - USHORT OutputReportByteLength; - USHORT FeatureReportByteLength; - USHORT Reserved[17]; - USHORT NumberLinkCollectionNodes; - USHORT NumberInputButtonCaps; - USHORT NumberInputValueCaps; - USHORT NumberInputDataIndices; - USHORT NumberOutputButtonCaps; - USHORT NumberOutputValueCaps; - USHORT NumberOutputDataIndices; - USHORT NumberFeatureButtonCaps; - USHORT NumberFeatureValueCaps; - USHORT NumberFeatureDataIndices; -} HIDP_CAPS, *PHIDP_CAPS; - -typedef enum _HIDP_REPORT_TYPE { - HidP_Input, - HidP_Output, - HidP_Feature -} HIDP_REPORT_TYPE; - -typedef struct _HIDP_VALUE_CAPS { - USAGE UsagePage; - UCHAR ReportID; - BOOLEAN IsAlias; - USHORT BitField; - USHORT LinkCollection; - USAGE LinkUsage; - USAGE LinkUsagePage; - BOOLEAN IsRange; - BOOLEAN IsStringRange; - BOOLEAN IsDesignatorRange; - BOOLEAN IsAbsolute; - BOOLEAN HasNull; - UCHAR Reserved; - USHORT BitSize; - USHORT ReportCount; - USHORT Reserved2[5]; - ULONG UnitsExp; - ULONG Units; - LONG LogicalMin, LogicalMax; - LONG PhysicalMin, PhysicalMax; - union { - struct { - USAGE UsageMin, UsageMax; - USHORT StringMin, StringMax; - USHORT DesignatorMin, DesignatorMax; - USHORT DataIndexMin, DataIndexMax; - } Range; - struct { - USAGE Usage, Reserved1; - USHORT StringIndex, Reserved2; - USHORT DesignatorIndex, Reserved3; - USHORT DataIndex, Reserved4; - } NotRange; - } u; -} HIDP_VALUE_CAPS, *PHIDP_VALUE_CAPS; - -DLL_DECLARE(WINAPI, BOOL, HidD_GetAttributes, (HANDLE, PHIDD_ATTRIBUTES)); -DLL_DECLARE(WINAPI, VOID, HidD_GetHidGuid, (LPGUID)); -DLL_DECLARE(WINAPI, BOOL, HidD_GetPreparsedData, (HANDLE, PHIDP_PREPARSED_DATA *)); -DLL_DECLARE(WINAPI, BOOL, HidD_FreePreparsedData, (PHIDP_PREPARSED_DATA)); -DLL_DECLARE(WINAPI, BOOL, HidD_GetManufacturerString, (HANDLE, PVOID, ULONG)); -DLL_DECLARE(WINAPI, BOOL, HidD_GetProductString, (HANDLE, PVOID, ULONG)); -DLL_DECLARE(WINAPI, BOOL, HidD_GetSerialNumberString, (HANDLE, PVOID, ULONG)); -DLL_DECLARE(WINAPI, LONG, HidP_GetCaps, (PHIDP_PREPARSED_DATA, PHIDP_CAPS)); -DLL_DECLARE(WINAPI, BOOL, HidD_SetNumInputBuffers, (HANDLE, ULONG)); -DLL_DECLARE(WINAPI, BOOL, HidD_SetFeature, (HANDLE, PVOID, ULONG)); -DLL_DECLARE(WINAPI, BOOL, HidD_GetFeature, (HANDLE, PVOID, ULONG)); -DLL_DECLARE(WINAPI, BOOL, HidD_GetPhysicalDescriptor, (HANDLE, PVOID, ULONG)); -DLL_DECLARE(WINAPI, BOOL, HidD_GetInputReport, (HANDLE, PVOID, ULONG)); -DLL_DECLARE(WINAPI, BOOL, HidD_SetOutputReport, (HANDLE, PVOID, ULONG)); -DLL_DECLARE(WINAPI, BOOL, HidD_FlushQueue, (HANDLE)); -DLL_DECLARE(WINAPI, BOOL, HidP_GetValueCaps, (HIDP_REPORT_TYPE, PHIDP_VALUE_CAPS, PULONG, PHIDP_PREPARSED_DATA)); diff --git a/Externals/libusb/libusb/os/windows_usbdk.c b/Externals/libusb/libusb/os/windows_usbdk.c deleted file mode 100644 index fbccbd5cffcb..000000000000 --- a/Externals/libusb/libusb/os/windows_usbdk.c +++ /dev/null @@ -1,830 +0,0 @@ -/* - * windows UsbDk backend for libusb 1.0 - * Copyright © 2014 Red Hat, Inc. - - * Authors: - * Dmitry Fleytman - * Pavel Gurvich - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include - -#include "libusbi.h" -#include "windows_common.h" -#include "windows_nt_common.h" -#include "windows_usbdk.h" - -#if !defined(STATUS_SUCCESS) -typedef LONG NTSTATUS; -#define STATUS_SUCCESS ((NTSTATUS)0x00000000L) -#endif - -#if !defined(STATUS_CANCELLED) -#define STATUS_CANCELLED ((NTSTATUS)0xC0000120L) -#endif - -#if !defined(STATUS_REQUEST_CANCELED) -#define STATUS_REQUEST_CANCELED ((NTSTATUS)0xC0000703L) -#endif - -#if !defined(USBD_SUCCESS) -typedef LONG USBD_STATUS; -#define USBD_SUCCESS(Status) ((USBD_STATUS) (Status) >= 0) -#define USBD_PENDING(Status) ((ULONG) (Status) >> 30 == 1) -#define USBD_ERROR(Status) ((USBD_STATUS) (Status) < 0) -#define USBD_STATUS_STALL_PID ((USBD_STATUS) 0xc0000004) -#define USBD_STATUS_ENDPOINT_HALTED ((USBD_STATUS) 0xc0000030) -#define USBD_STATUS_BAD_START_FRAME ((USBD_STATUS) 0xc0000a00) -#define USBD_STATUS_TIMEOUT ((USBD_STATUS) 0xc0006000) -#define USBD_STATUS_CANCELED ((USBD_STATUS) 0xc0010000) -#endif - -static inline struct usbdk_device_priv *_usbdk_device_priv(struct libusb_device *dev) -{ - return (struct usbdk_device_priv *)dev->os_priv; -} - -static inline struct usbdk_transfer_priv *_usbdk_transfer_priv(struct usbi_transfer *itransfer) -{ - return (struct usbdk_transfer_priv *)usbi_transfer_get_os_priv(itransfer); -} - -static struct { - HMODULE module; - - USBDK_GET_DEVICES_LIST GetDevicesList; - USBDK_RELEASE_DEVICES_LIST ReleaseDevicesList; - USBDK_START_REDIRECT StartRedirect; - USBDK_STOP_REDIRECT StopRedirect; - USBDK_GET_CONFIGURATION_DESCRIPTOR GetConfigurationDescriptor; - USBDK_RELEASE_CONFIGURATION_DESCRIPTOR ReleaseConfigurationDescriptor; - USBDK_READ_PIPE ReadPipe; - USBDK_WRITE_PIPE WritePipe; - USBDK_ABORT_PIPE AbortPipe; - USBDK_RESET_PIPE ResetPipe; - USBDK_SET_ALTSETTING SetAltsetting; - USBDK_RESET_DEVICE ResetDevice; - USBDK_GET_REDIRECTOR_SYSTEM_HANDLE GetRedirectorSystemHandle; -} usbdk_helper; - -static FARPROC get_usbdk_proc_addr(struct libusb_context *ctx, LPCSTR api_name) -{ - FARPROC api_ptr = GetProcAddress(usbdk_helper.module, api_name); - - if (api_ptr == NULL) - usbi_err(ctx, "UsbDkHelper API %s not found: %s", api_name, windows_error_str(0)); - - return api_ptr; -} - -static void unload_usbdk_helper_dll(void) -{ - if (usbdk_helper.module != NULL) { - FreeLibrary(usbdk_helper.module); - usbdk_helper.module = NULL; - } -} - -static int load_usbdk_helper_dll(struct libusb_context *ctx) -{ - usbdk_helper.module = LoadLibraryA("UsbDkHelper"); - if (usbdk_helper.module == NULL) { - usbi_err(ctx, "Failed to load UsbDkHelper.dll: %s", windows_error_str(0)); - return LIBUSB_ERROR_NOT_FOUND; - } - - usbdk_helper.GetDevicesList = (USBDK_GET_DEVICES_LIST)get_usbdk_proc_addr(ctx, "UsbDk_GetDevicesList"); - if (usbdk_helper.GetDevicesList == NULL) - goto error_unload; - - usbdk_helper.ReleaseDevicesList = (USBDK_RELEASE_DEVICES_LIST)get_usbdk_proc_addr(ctx, "UsbDk_ReleaseDevicesList"); - if (usbdk_helper.ReleaseDevicesList == NULL) - goto error_unload; - - usbdk_helper.StartRedirect = (USBDK_START_REDIRECT)get_usbdk_proc_addr(ctx, "UsbDk_StartRedirect"); - if (usbdk_helper.StartRedirect == NULL) - goto error_unload; - - usbdk_helper.StopRedirect = (USBDK_STOP_REDIRECT)get_usbdk_proc_addr(ctx, "UsbDk_StopRedirect"); - if (usbdk_helper.StopRedirect == NULL) - goto error_unload; - - usbdk_helper.GetConfigurationDescriptor = (USBDK_GET_CONFIGURATION_DESCRIPTOR)get_usbdk_proc_addr(ctx, "UsbDk_GetConfigurationDescriptor"); - if (usbdk_helper.GetConfigurationDescriptor == NULL) - goto error_unload; - - usbdk_helper.ReleaseConfigurationDescriptor = (USBDK_RELEASE_CONFIGURATION_DESCRIPTOR)get_usbdk_proc_addr(ctx, "UsbDk_ReleaseConfigurationDescriptor"); - if (usbdk_helper.ReleaseConfigurationDescriptor == NULL) - goto error_unload; - - usbdk_helper.ReadPipe = (USBDK_READ_PIPE)get_usbdk_proc_addr(ctx, "UsbDk_ReadPipe"); - if (usbdk_helper.ReadPipe == NULL) - goto error_unload; - - usbdk_helper.WritePipe = (USBDK_WRITE_PIPE)get_usbdk_proc_addr(ctx, "UsbDk_WritePipe"); - if (usbdk_helper.WritePipe == NULL) - goto error_unload; - - usbdk_helper.AbortPipe = (USBDK_ABORT_PIPE)get_usbdk_proc_addr(ctx, "UsbDk_AbortPipe"); - if (usbdk_helper.AbortPipe == NULL) - goto error_unload; - - usbdk_helper.ResetPipe = (USBDK_RESET_PIPE)get_usbdk_proc_addr(ctx, "UsbDk_ResetPipe"); - if (usbdk_helper.ResetPipe == NULL) - goto error_unload; - - usbdk_helper.SetAltsetting = (USBDK_SET_ALTSETTING)get_usbdk_proc_addr(ctx, "UsbDk_SetAltsetting"); - if (usbdk_helper.SetAltsetting == NULL) - goto error_unload; - - usbdk_helper.ResetDevice = (USBDK_RESET_DEVICE)get_usbdk_proc_addr(ctx, "UsbDk_ResetDevice"); - if (usbdk_helper.ResetDevice == NULL) - goto error_unload; - - usbdk_helper.GetRedirectorSystemHandle = (USBDK_GET_REDIRECTOR_SYSTEM_HANDLE)get_usbdk_proc_addr(ctx, "UsbDk_GetRedirectorSystemHandle"); - if (usbdk_helper.GetRedirectorSystemHandle == NULL) - goto error_unload; - - return LIBUSB_SUCCESS; - -error_unload: - FreeLibrary(usbdk_helper.module); - usbdk_helper.module = NULL; - return LIBUSB_ERROR_NOT_FOUND; -} - -static int usbdk_init(struct libusb_context *ctx) -{ - SC_HANDLE managerHandle; - SC_HANDLE serviceHandle; - - managerHandle = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT); - if (managerHandle == NULL) { - usbi_warn(ctx, "failed to open service control manager: %s", windows_error_str(0)); - return LIBUSB_ERROR_OTHER; - } - - serviceHandle = OpenServiceA(managerHandle, "UsbDk", GENERIC_READ); - CloseServiceHandle(managerHandle); - - if (serviceHandle == NULL) { - if (GetLastError() != ERROR_SERVICE_DOES_NOT_EXIST) - usbi_warn(ctx, "failed to open UsbDk service: %s", windows_error_str(0)); - return LIBUSB_ERROR_NOT_FOUND; - } - - CloseServiceHandle(serviceHandle); - - return load_usbdk_helper_dll(ctx); -} - -static void usbdk_exit(struct libusb_context *ctx) -{ - UNUSED(ctx); - unload_usbdk_helper_dll(); -} - -static int usbdk_get_session_id_for_device(struct libusb_context *ctx, - PUSB_DK_DEVICE_ID id, unsigned long *session_id) -{ - char dev_identity[ARRAYSIZE(id->DeviceID) + ARRAYSIZE(id->InstanceID) + 1]; - - if (snprintf(dev_identity, sizeof(dev_identity), "%S%S", id->DeviceID, id->InstanceID) == -1) { - usbi_warn(ctx, "cannot form device identity", id->DeviceID); - return LIBUSB_ERROR_NOT_SUPPORTED; - } - - *session_id = htab_hash(dev_identity); - - return LIBUSB_SUCCESS; -} - -static void usbdk_release_config_descriptors(struct usbdk_device_priv *p, uint8_t count) -{ - uint8_t i; - - for (i = 0; i < count; i++) - usbdk_helper.ReleaseConfigurationDescriptor(p->config_descriptors[i]); - - free(p->config_descriptors); - p->config_descriptors = NULL; -} - -static int usbdk_cache_config_descriptors(struct libusb_context *ctx, - struct usbdk_device_priv *p, PUSB_DK_DEVICE_INFO info) -{ - uint8_t i; - USB_DK_CONFIG_DESCRIPTOR_REQUEST Request; - Request.ID = info->ID; - - p->config_descriptors = calloc(info->DeviceDescriptor.bNumConfigurations, sizeof(PUSB_CONFIGURATION_DESCRIPTOR)); - if (p->config_descriptors == NULL) { - usbi_err(ctx, "failed to allocate configuration descriptors holder"); - return LIBUSB_ERROR_NO_MEM; - } - - for (i = 0; i < info->DeviceDescriptor.bNumConfigurations; i++) { - ULONG Length; - - Request.Index = i; - if (!usbdk_helper.GetConfigurationDescriptor(&Request, &p->config_descriptors[i], &Length)) { - usbi_err(ctx, "failed to retrieve configuration descriptors"); - usbdk_release_config_descriptors(p, i); - return LIBUSB_ERROR_OTHER; - } - } - - return LIBUSB_SUCCESS; -} - -static inline int usbdk_device_priv_init(struct libusb_context *ctx, struct libusb_device *dev, PUSB_DK_DEVICE_INFO info) -{ - struct usbdk_device_priv *p = _usbdk_device_priv(dev); - - p->info = *info; - p->active_configuration = 0; - - return usbdk_cache_config_descriptors(ctx, p, info); -} - -static void usbdk_device_init(libusb_device *dev, PUSB_DK_DEVICE_INFO info) -{ - dev->bus_number = (uint8_t)info->FilterID; - dev->port_number = (uint8_t)info->Port; - dev->parent_dev = NULL; - - // Addresses in libusb are 1-based - dev->device_address = (uint8_t)(info->Port + 1); - - dev->num_configurations = info->DeviceDescriptor.bNumConfigurations; - memcpy(&dev->device_descriptor, &info->DeviceDescriptor, LIBUSB_DT_DEVICE_SIZE); - - switch (info->Speed) { - case LowSpeed: - dev->speed = LIBUSB_SPEED_LOW; - break; - case FullSpeed: - dev->speed = LIBUSB_SPEED_FULL; - break; - case HighSpeed: - dev->speed = LIBUSB_SPEED_HIGH; - break; - case SuperSpeed: - dev->speed = LIBUSB_SPEED_SUPER; - break; - case NoSpeed: - default: - dev->speed = LIBUSB_SPEED_UNKNOWN; - break; - } -} - -static int usbdk_get_device_list(struct libusb_context *ctx, struct discovered_devs **_discdevs) -{ - int r = LIBUSB_SUCCESS; - ULONG i; - struct discovered_devs *discdevs = NULL; - ULONG dev_number; - PUSB_DK_DEVICE_INFO devices; - - if (!usbdk_helper.GetDevicesList(&devices, &dev_number)) - return LIBUSB_ERROR_OTHER; - - for (i = 0; i < dev_number; i++) { - unsigned long session_id; - struct libusb_device *dev = NULL; - - if (usbdk_get_session_id_for_device(ctx, &devices[i].ID, &session_id)) - continue; - - dev = usbi_get_device_by_session_id(ctx, session_id); - if (dev == NULL) { - dev = usbi_alloc_device(ctx, session_id); - if (dev == NULL) { - usbi_err(ctx, "failed to allocate a new device structure"); - continue; - } - - usbdk_device_init(dev, &devices[i]); - if (usbdk_device_priv_init(ctx, dev, &devices[i]) != LIBUSB_SUCCESS) { - libusb_unref_device(dev); - continue; - } - } - - discdevs = discovered_devs_append(*_discdevs, dev); - libusb_unref_device(dev); - if (!discdevs) { - usbi_err(ctx, "cannot append new device to list"); - r = LIBUSB_ERROR_NO_MEM; - goto func_exit; - } - - *_discdevs = discdevs; - } - -func_exit: - usbdk_helper.ReleaseDevicesList(devices); - return r; -} - -static int usbdk_get_device_descriptor(struct libusb_device *dev, unsigned char *buffer) -{ - struct usbdk_device_priv *priv = _usbdk_device_priv(dev); - - memcpy(buffer, &priv->info.DeviceDescriptor, DEVICE_DESC_LENGTH); - - return LIBUSB_SUCCESS; -} - -static int usbdk_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len) -{ - struct usbdk_device_priv *priv = _usbdk_device_priv(dev); - PUSB_CONFIGURATION_DESCRIPTOR config_header; - size_t size; - - if (config_index >= dev->num_configurations) - return LIBUSB_ERROR_INVALID_PARAM; - - config_header = (PUSB_CONFIGURATION_DESCRIPTOR)priv->config_descriptors[config_index]; - - size = min(config_header->wTotalLength, len); - memcpy(buffer, config_header, size); - return (int)size; -} - -static int usbdk_get_config_descriptor_by_value(struct libusb_device *dev, uint8_t bConfigurationValue, - unsigned char **buffer) -{ - struct usbdk_device_priv *priv = _usbdk_device_priv(dev); - PUSB_CONFIGURATION_DESCRIPTOR config_header; - uint8_t index; - - for (index = 0; index < dev->num_configurations; index++) { - config_header = priv->config_descriptors[index]; - if (config_header->bConfigurationValue == bConfigurationValue) { - *buffer = (unsigned char *)priv->config_descriptors[index]; - return (int)config_header->wTotalLength; - } - } - - return LIBUSB_ERROR_NOT_FOUND; -} - -static int usbdk_get_active_config_descriptor(struct libusb_device *dev, unsigned char *buffer, size_t len) -{ - return usbdk_get_config_descriptor(dev, _usbdk_device_priv(dev)->active_configuration, - buffer, len); -} - -static int usbdk_open(struct libusb_device_handle *dev_handle) -{ - struct usbdk_device_priv *priv = _usbdk_device_priv(dev_handle->dev); - - priv->redirector_handle = usbdk_helper.StartRedirect(&priv->info.ID); - if (priv->redirector_handle == INVALID_HANDLE_VALUE) { - usbi_err(DEVICE_CTX(dev_handle->dev), "Redirector startup failed"); - return LIBUSB_ERROR_OTHER; - } - - priv->system_handle = usbdk_helper.GetRedirectorSystemHandle(priv->redirector_handle); - - return LIBUSB_SUCCESS; -} - -static void usbdk_close(struct libusb_device_handle *dev_handle) -{ - struct usbdk_device_priv *priv = _usbdk_device_priv(dev_handle->dev); - - if (!usbdk_helper.StopRedirect(priv->redirector_handle)) - usbi_err(HANDLE_CTX(dev_handle), "Redirector shutdown failed"); -} - -static int usbdk_get_configuration(struct libusb_device_handle *dev_handle, int *config) -{ - *config = _usbdk_device_priv(dev_handle->dev)->active_configuration; - - return LIBUSB_SUCCESS; -} - -static int usbdk_set_configuration(struct libusb_device_handle *dev_handle, int config) -{ - UNUSED(dev_handle); - UNUSED(config); - return LIBUSB_SUCCESS; -} - -static int usbdk_claim_interface(struct libusb_device_handle *dev_handle, int iface) -{ - UNUSED(dev_handle); - UNUSED(iface); - return LIBUSB_SUCCESS; -} - -static int usbdk_set_interface_altsetting(struct libusb_device_handle *dev_handle, int iface, int altsetting) -{ - struct libusb_context *ctx = HANDLE_CTX(dev_handle); - struct usbdk_device_priv *priv = _usbdk_device_priv(dev_handle->dev); - - if (!usbdk_helper.SetAltsetting(priv->redirector_handle, iface, altsetting)) { - usbi_err(ctx, "SetAltsetting failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_NO_DEVICE; - } - - return LIBUSB_SUCCESS; -} - -static int usbdk_release_interface(struct libusb_device_handle *dev_handle, int iface) -{ - UNUSED(dev_handle); - UNUSED(iface); - return LIBUSB_SUCCESS; -} - -static int usbdk_clear_halt(struct libusb_device_handle *dev_handle, unsigned char endpoint) -{ - struct libusb_context *ctx = HANDLE_CTX(dev_handle); - struct usbdk_device_priv *priv = _usbdk_device_priv(dev_handle->dev); - - if (!usbdk_helper.ResetPipe(priv->redirector_handle, endpoint)) { - usbi_err(ctx, "ResetPipe failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_NO_DEVICE; - } - - return LIBUSB_SUCCESS; -} - -static int usbdk_reset_device(struct libusb_device_handle *dev_handle) -{ - struct libusb_context *ctx = HANDLE_CTX(dev_handle); - struct usbdk_device_priv *priv = _usbdk_device_priv(dev_handle->dev); - - if (!usbdk_helper.ResetDevice(priv->redirector_handle)) { - usbi_err(ctx, "ResetDevice failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_NO_DEVICE; - } - - return LIBUSB_SUCCESS; -} - -static void usbdk_destroy_device(struct libusb_device *dev) -{ - struct usbdk_device_priv* p = _usbdk_device_priv(dev); - - if (p->config_descriptors != NULL) - usbdk_release_config_descriptors(p, p->info.DeviceDescriptor.bNumConfigurations); -} - -static void usbdk_clear_transfer_priv(struct usbi_transfer *itransfer) -{ - struct usbdk_transfer_priv *transfer_priv = _usbdk_transfer_priv(itransfer); - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - usbi_close(transfer_priv->pollable_fd.fd); - transfer_priv->pollable_fd = INVALID_WINFD; - transfer_priv->system_handle = NULL; - - if (transfer->type == LIBUSB_TRANSFER_TYPE_ISOCHRONOUS) { - safe_free(transfer_priv->IsochronousPacketsArray); - safe_free(transfer_priv->IsochronousResultsArray); - } -} - -static int usbdk_do_control_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct usbdk_device_priv *priv = _usbdk_device_priv(transfer->dev_handle->dev); - struct usbdk_transfer_priv *transfer_priv = _usbdk_transfer_priv(itransfer); - struct libusb_context *ctx = TRANSFER_CTX(transfer); - OVERLAPPED *overlapped = transfer_priv->pollable_fd.overlapped; - TransferResult transResult; - - transfer_priv->request.Buffer = (PVOID64)transfer->buffer; - transfer_priv->request.BufferLength = transfer->length; - transfer_priv->request.TransferType = ControlTransferType; - - if (transfer->buffer[0] & LIBUSB_ENDPOINT_IN) - transResult = usbdk_helper.ReadPipe(priv->redirector_handle, &transfer_priv->request, overlapped); - else - transResult = usbdk_helper.WritePipe(priv->redirector_handle, &transfer_priv->request, overlapped); - - switch (transResult) { - case TransferSuccess: - windows_force_sync_completion(overlapped, (ULONG)transfer_priv->request.Result.GenResult.BytesTransferred); - break; - case TransferSuccessAsync: - break; - case TransferFailure: - usbi_err(ctx, "ControlTransfer failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_IO; - } - - return LIBUSB_SUCCESS; -} - -static int usbdk_do_bulk_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct usbdk_device_priv *priv = _usbdk_device_priv(transfer->dev_handle->dev); - struct usbdk_transfer_priv *transfer_priv = _usbdk_transfer_priv(itransfer); - struct libusb_context *ctx = TRANSFER_CTX(transfer); - OVERLAPPED *overlapped = transfer_priv->pollable_fd.overlapped; - TransferResult transferRes; - - transfer_priv->request.Buffer = (PVOID64)transfer->buffer; - transfer_priv->request.BufferLength = transfer->length; - transfer_priv->request.EndpointAddress = transfer->endpoint; - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_BULK: - transfer_priv->request.TransferType = BulkTransferType; - break; - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - transfer_priv->request.TransferType = InterruptTransferType; - break; - default: - usbi_err(ctx, "Wrong transfer type (%d) in usbdk_do_bulk_transfer", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } - - if (IS_XFERIN(transfer)) - transferRes = usbdk_helper.ReadPipe(priv->redirector_handle, &transfer_priv->request, overlapped); - else - transferRes = usbdk_helper.WritePipe(priv->redirector_handle, &transfer_priv->request, overlapped); - - switch (transferRes) { - case TransferSuccess: - windows_force_sync_completion(overlapped, (ULONG)transfer_priv->request.Result.GenResult.BytesTransferred); - break; - case TransferSuccessAsync: - break; - case TransferFailure: - usbi_err(ctx, "ReadPipe/WritePipe failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_IO; - } - - return LIBUSB_SUCCESS; -} - -static int usbdk_do_iso_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct usbdk_device_priv *priv = _usbdk_device_priv(transfer->dev_handle->dev); - struct usbdk_transfer_priv *transfer_priv = _usbdk_transfer_priv(itransfer); - struct libusb_context *ctx = TRANSFER_CTX(transfer); - OVERLAPPED *overlapped = transfer_priv->pollable_fd.overlapped; - TransferResult transferRes; - int i; - - transfer_priv->request.Buffer = (PVOID64)transfer->buffer; - transfer_priv->request.BufferLength = transfer->length; - transfer_priv->request.EndpointAddress = transfer->endpoint; - transfer_priv->request.TransferType = IsochronousTransferType; - transfer_priv->request.IsochronousPacketsArraySize = transfer->num_iso_packets; - transfer_priv->IsochronousPacketsArray = malloc(transfer->num_iso_packets * sizeof(ULONG64)); - transfer_priv->request.IsochronousPacketsArray = (PVOID64)transfer_priv->IsochronousPacketsArray; - if (!transfer_priv->IsochronousPacketsArray) { - usbi_err(ctx, "Allocation of IsochronousPacketsArray failed"); - return LIBUSB_ERROR_NO_MEM; - } - - transfer_priv->IsochronousResultsArray = malloc(transfer->num_iso_packets * sizeof(USB_DK_ISO_TRANSFER_RESULT)); - transfer_priv->request.Result.IsochronousResultsArray = (PVOID64)transfer_priv->IsochronousResultsArray; - if (!transfer_priv->IsochronousResultsArray) { - usbi_err(ctx, "Allocation of isochronousResultsArray failed"); - return LIBUSB_ERROR_NO_MEM; - } - - for (i = 0; i < transfer->num_iso_packets; i++) - transfer_priv->IsochronousPacketsArray[i] = transfer->iso_packet_desc[i].length; - - if (IS_XFERIN(transfer)) - transferRes = usbdk_helper.ReadPipe(priv->redirector_handle, &transfer_priv->request, overlapped); - else - transferRes = usbdk_helper.WritePipe(priv->redirector_handle, &transfer_priv->request, overlapped); - - switch (transferRes) { - case TransferSuccess: - windows_force_sync_completion(overlapped, (ULONG)transfer_priv->request.Result.GenResult.BytesTransferred); - break; - case TransferSuccessAsync: - break; - case TransferFailure: - return LIBUSB_ERROR_IO; - } - - return LIBUSB_SUCCESS; -} - -static int usbdk_do_submit_transfer(struct usbi_transfer *itransfer, - short events, int (*transfer_fn)(struct usbi_transfer *)) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = TRANSFER_CTX(transfer); - struct usbdk_device_priv *priv = _usbdk_device_priv(transfer->dev_handle->dev); - struct usbdk_transfer_priv *transfer_priv = _usbdk_transfer_priv(itransfer); - struct winfd wfd; - int r; - - wfd = usbi_create_fd(); - if (wfd.fd < 0) - return LIBUSB_ERROR_NO_MEM; - - r = usbi_add_pollfd(ctx, wfd.fd, events); - if (r) { - usbi_close(wfd.fd); - return r; - } - - // Use transfer_priv to store data needed for async polling - transfer_priv->pollable_fd = wfd; - transfer_priv->system_handle = priv->system_handle; - - r = transfer_fn(itransfer); - if (r != LIBUSB_SUCCESS) { - usbi_remove_pollfd(ctx, wfd.fd); - usbdk_clear_transfer_priv(itransfer); - return r; - } - - return LIBUSB_SUCCESS; -} - -static int usbdk_submit_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - int (*transfer_fn)(struct usbi_transfer *); - short events; - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - events = (transfer->buffer[0] & LIBUSB_ENDPOINT_IN) ? POLLIN : POLLOUT; - transfer_fn = usbdk_do_control_transfer; - break; - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - if (IS_XFEROUT(transfer) && (transfer->flags & LIBUSB_TRANSFER_ADD_ZERO_PACKET)) - return LIBUSB_ERROR_NOT_SUPPORTED; //TODO: Check whether we can support this in UsbDk - events = IS_XFERIN(transfer) ? POLLIN : POLLOUT; - transfer_fn = usbdk_do_bulk_transfer; - break; - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - events = IS_XFERIN(transfer) ? POLLIN : POLLOUT; - transfer_fn = usbdk_do_iso_transfer; - break; - default: - usbi_err(TRANSFER_CTX(transfer), "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } - - return usbdk_do_submit_transfer(itransfer, events, transfer_fn); -} - -static int usbdk_abort_transfers(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = TRANSFER_CTX(transfer); - struct usbdk_device_priv *priv = _usbdk_device_priv(transfer->dev_handle->dev); - struct usbdk_transfer_priv *transfer_priv = _usbdk_transfer_priv(itransfer); - struct winfd *pollable_fd = &transfer_priv->pollable_fd; - - if (pCancelIoEx != NULL) { - // Use CancelIoEx if available to cancel just a single transfer - if (!pCancelIoEx(priv->system_handle, pollable_fd->overlapped)) { - usbi_err(ctx, "CancelIoEx failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_NO_DEVICE; - } - } else { - if (!usbdk_helper.AbortPipe(priv->redirector_handle, transfer->endpoint)) { - usbi_err(ctx, "AbortPipe failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_NO_DEVICE; - } - } - - return LIBUSB_SUCCESS; -} - -static int usbdk_cancel_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - // Control transfers cancelled by IoCancelXXX() API - // No special treatment needed - return LIBUSB_SUCCESS; - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - return usbdk_abort_transfers(itransfer); - default: - usbi_err(ITRANSFER_CTX(itransfer), "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -static int usbdk_copy_transfer_data(struct usbi_transfer *itransfer, uint32_t io_size) -{ - itransfer->transferred += io_size; - return LIBUSB_TRANSFER_COMPLETED; -} - -static int usbdk_get_transfer_fd(struct usbi_transfer *itransfer) -{ - struct usbdk_transfer_priv *transfer_priv = _usbdk_transfer_priv(itransfer); - return transfer_priv->pollable_fd.fd; -} - -static DWORD usbdk_translate_usbd_status(USBD_STATUS UsbdStatus) -{ - if (USBD_SUCCESS(UsbdStatus)) - return NO_ERROR; - - switch (UsbdStatus) { - case USBD_STATUS_TIMEOUT: - return ERROR_SEM_TIMEOUT; - case USBD_STATUS_CANCELED: - return ERROR_OPERATION_ABORTED; - default: - return ERROR_GEN_FAILURE; - } -} - -static void usbdk_get_overlapped_result(struct usbi_transfer *itransfer, DWORD *io_result, DWORD *io_size) -{ - struct usbdk_transfer_priv *transfer_priv = _usbdk_transfer_priv(itransfer); - struct winfd *pollable_fd = &transfer_priv->pollable_fd; - - if (HasOverlappedIoCompletedSync(pollable_fd->overlapped) // Handle async requests that completed synchronously first - || GetOverlappedResult(transfer_priv->system_handle, pollable_fd->overlapped, io_size, FALSE)) { // Regular async overlapped - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - if (transfer->type == LIBUSB_TRANSFER_TYPE_ISOCHRONOUS) { - ULONG64 i; - for (i = 0; i < transfer_priv->request.IsochronousPacketsArraySize; i++) { - struct libusb_iso_packet_descriptor *lib_desc = &transfer->iso_packet_desc[i]; - - switch (transfer_priv->IsochronousResultsArray[i].TransferResult) { - case STATUS_SUCCESS: - case STATUS_CANCELLED: - case STATUS_REQUEST_CANCELED: - lib_desc->status = LIBUSB_TRANSFER_COMPLETED; // == ERROR_SUCCESS - break; - default: - lib_desc->status = LIBUSB_TRANSFER_ERROR; // ERROR_UNKNOWN_EXCEPTION; - break; - } - - lib_desc->actual_length = (unsigned int)transfer_priv->IsochronousResultsArray[i].ActualLength; - } - } - - *io_size = (DWORD)transfer_priv->request.Result.GenResult.BytesTransferred; - *io_result = usbdk_translate_usbd_status((USBD_STATUS)transfer_priv->request.Result.GenResult.UsbdStatus); - } else { - *io_result = GetLastError(); - } -} - -const struct windows_backend usbdk_backend = { - usbdk_init, - usbdk_exit, - usbdk_get_device_list, - usbdk_open, - usbdk_close, - usbdk_get_device_descriptor, - usbdk_get_active_config_descriptor, - usbdk_get_config_descriptor, - usbdk_get_config_descriptor_by_value, - usbdk_get_configuration, - usbdk_set_configuration, - usbdk_claim_interface, - usbdk_release_interface, - usbdk_set_interface_altsetting, - usbdk_clear_halt, - usbdk_reset_device, - usbdk_destroy_device, - usbdk_submit_transfer, - usbdk_cancel_transfer, - usbdk_clear_transfer_priv, - usbdk_copy_transfer_data, - usbdk_get_transfer_fd, - usbdk_get_overlapped_result, -}; diff --git a/Externals/libusb/libusb/os/windows_usbdk.h b/Externals/libusb/libusb/os/windows_usbdk.h deleted file mode 100644 index 77660ae97ffc..000000000000 --- a/Externals/libusb/libusb/os/windows_usbdk.h +++ /dev/null @@ -1,103 +0,0 @@ -/* -* windows UsbDk backend for libusb 1.0 -* Copyright © 2014 Red Hat, Inc. - -* Authors: -* Dmitry Fleytman -* Pavel Gurvich -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; either -* version 2.1 of the License, or (at your option) any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#pragma once - -#include "windows_nt_common.h" - -typedef struct USB_DK_CONFIG_DESCRIPTOR_REQUEST { - USB_DK_DEVICE_ID ID; - ULONG64 Index; -} USB_DK_CONFIG_DESCRIPTOR_REQUEST, *PUSB_DK_CONFIG_DESCRIPTOR_REQUEST; - -typedef enum { - TransferFailure = 0, - TransferSuccess, - TransferSuccessAsync -} TransferResult; - -typedef enum { - NoSpeed = 0, - LowSpeed, - FullSpeed, - HighSpeed, - SuperSpeed -} USB_DK_DEVICE_SPEED; - -typedef enum { - ControlTransferType, - BulkTransferType, - InterruptTransferType, - IsochronousTransferType -} USB_DK_TRANSFER_TYPE; - -typedef BOOL (__cdecl *USBDK_GET_DEVICES_LIST)( - PUSB_DK_DEVICE_INFO *DeviceInfo, - PULONG DeviceNumber -); -typedef void (__cdecl *USBDK_RELEASE_DEVICES_LIST)( - PUSB_DK_DEVICE_INFO DeviceInfo -); -typedef HANDLE (__cdecl *USBDK_START_REDIRECT)( - PUSB_DK_DEVICE_ID DeviceId -); -typedef BOOL (__cdecl *USBDK_STOP_REDIRECT)( - HANDLE DeviceHandle -); -typedef BOOL (__cdecl *USBDK_GET_CONFIGURATION_DESCRIPTOR)( - PUSB_DK_CONFIG_DESCRIPTOR_REQUEST Request, - PUSB_CONFIGURATION_DESCRIPTOR *Descriptor, - PULONG Length -); -typedef void (__cdecl *USBDK_RELEASE_CONFIGURATION_DESCRIPTOR)( - PUSB_CONFIGURATION_DESCRIPTOR Descriptor -); -typedef TransferResult (__cdecl *USBDK_WRITE_PIPE)( - HANDLE DeviceHandle, - PUSB_DK_TRANSFER_REQUEST Request, - LPOVERLAPPED lpOverlapped -); -typedef TransferResult (__cdecl *USBDK_READ_PIPE)( - HANDLE DeviceHandle, - PUSB_DK_TRANSFER_REQUEST Request, - LPOVERLAPPED lpOverlapped -); -typedef BOOL (__cdecl *USBDK_ABORT_PIPE)( - HANDLE DeviceHandle, - ULONG64 PipeAddress -); -typedef BOOL (__cdecl *USBDK_RESET_PIPE)( - HANDLE DeviceHandle, - ULONG64 PipeAddress -); -typedef BOOL (__cdecl *USBDK_SET_ALTSETTING)( - HANDLE DeviceHandle, - ULONG64 InterfaceIdx, - ULONG64 AltSettingIdx -); -typedef BOOL (__cdecl *USBDK_RESET_DEVICE)( - HANDLE DeviceHandle -); -typedef HANDLE (__cdecl *USBDK_GET_REDIRECTOR_SYSTEM_HANDLE)( - HANDLE DeviceHandle -); diff --git a/Externals/libusb/libusb/os/windows_winusb.c b/Externals/libusb/libusb/os/windows_winusb.c deleted file mode 100644 index 19b605a6d5e4..000000000000 --- a/Externals/libusb/libusb/os/windows_winusb.c +++ /dev/null @@ -1,4379 +0,0 @@ -/* - * windows backend for libusb 1.0 - * Copyright © 2009-2012 Pete Batard - * Copyright © 2016-2018 Chris Dickens - * With contributions from Michael Plante, Orin Eman et al. - * Parts of this code adapted from libusb-win32-v1 by Stephan Meyer - * HID Reports IOCTLs inspired from HIDAPI by Alan Ott, Signal 11 Software - * Hash table functions adapted from glibc, by Ulrich Drepper et al. - * Major code testing contribution by Xiaofan Chen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "libusbi.h" -#include "windows_common.h" -#include "windows_nt_common.h" -#include "windows_winusb.h" - -#define HANDLE_VALID(h) (((h) != NULL) && ((h) != INVALID_HANDLE_VALUE)) - -// The 2 macros below are used in conjunction with safe loops. -#define LOOP_CHECK(fcall) \ - { \ - r = fcall; \ - if (r != LIBUSB_SUCCESS) \ - continue; \ - } -#define LOOP_BREAK(err) \ - { \ - r = err; \ - continue; \ - } - -// WinUSB-like API prototypes -static int winusbx_init(struct libusb_context *ctx); -static void winusbx_exit(void); -static int winusbx_open(int sub_api, struct libusb_device_handle *dev_handle); -static void winusbx_close(int sub_api, struct libusb_device_handle *dev_handle); -static int winusbx_configure_endpoints(int sub_api, struct libusb_device_handle *dev_handle, int iface); -static int winusbx_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface); -static int winusbx_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface); -static int winusbx_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer); -static int winusbx_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting); -static int winusbx_submit_iso_transfer(int sub_api, struct usbi_transfer *itransfer); -static int winusbx_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer); -static int winusbx_clear_halt(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint); -static int winusbx_abort_transfers(int sub_api, struct usbi_transfer *itransfer); -static int winusbx_abort_control(int sub_api, struct usbi_transfer *itransfer); -static int winusbx_reset_device(int sub_api, struct libusb_device_handle *dev_handle); -static int winusbx_copy_transfer_data(int sub_api, struct usbi_transfer *itransfer, uint32_t io_size); -// HID API prototypes -static int hid_init(struct libusb_context *ctx); -static void hid_exit(void); -static int hid_open(int sub_api, struct libusb_device_handle *dev_handle); -static void hid_close(int sub_api, struct libusb_device_handle *dev_handle); -static int hid_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface); -static int hid_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface); -static int hid_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting); -static int hid_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer); -static int hid_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer); -static int hid_clear_halt(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint); -static int hid_abort_transfers(int sub_api, struct usbi_transfer *itransfer); -static int hid_reset_device(int sub_api, struct libusb_device_handle *dev_handle); -static int hid_copy_transfer_data(int sub_api, struct usbi_transfer *itransfer, uint32_t io_size); -// Composite API prototypes -static int composite_open(int sub_api, struct libusb_device_handle *dev_handle); -static void composite_close(int sub_api, struct libusb_device_handle *dev_handle); -static int composite_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface); -static int composite_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting); -static int composite_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface); -static int composite_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer); -static int composite_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer); -static int composite_submit_iso_transfer(int sub_api, struct usbi_transfer *itransfer); -static int composite_clear_halt(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint); -static int composite_abort_transfers(int sub_api, struct usbi_transfer *itransfer); -static int composite_abort_control(int sub_api, struct usbi_transfer *itransfer); -static int composite_reset_device(int sub_api, struct libusb_device_handle *dev_handle); -static int composite_copy_transfer_data(int sub_api, struct usbi_transfer *itransfer, uint32_t io_size); - -static usbi_mutex_t autoclaim_lock; - -// API globals -static HMODULE WinUSBX_handle = NULL; -static struct winusb_interface WinUSBX[SUB_API_MAX]; -#define CHECK_WINUSBX_AVAILABLE(sub_api) \ - do { \ - if (sub_api == SUB_API_NOTSET) \ - sub_api = priv->sub_api; \ - if (!WinUSBX[sub_api].initialized) \ - return LIBUSB_ERROR_ACCESS; \ - } while (0) - -static bool api_hid_available = false; -#define CHECK_HID_AVAILABLE \ - do { \ - if (!api_hid_available) \ - return LIBUSB_ERROR_ACCESS; \ - } while (0) - -#if defined(ENABLE_LOGGING) -static const char *guid_to_string(const GUID *guid) -{ - static char guid_string[MAX_GUID_STRING_LENGTH]; - - if (guid == NULL) - return ""; - - sprintf(guid_string, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", - (unsigned int)guid->Data1, guid->Data2, guid->Data3, - guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], - guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]); - - return guid_string; -} -#endif - -/* - * Sanitize Microsoft's paths: convert to uppercase, add prefix and fix backslashes. - * Return an allocated sanitized string or NULL on error. - */ -static char *sanitize_path(const char *path) -{ - const char root_prefix[] = {'\\', '\\', '.', '\\'}; - size_t j, size; - char *ret_path; - size_t add_root = 0; - - if (path == NULL) - return NULL; - - size = strlen(path) + 1; - - // Microsoft indiscriminately uses '\\?\', '\\.\', '##?#" or "##.#" for root prefixes. - if (!((size > 3) && (((path[0] == '\\') && (path[1] == '\\') && (path[3] == '\\')) - || ((path[0] == '#') && (path[1] == '#') && (path[3] == '#'))))) { - add_root = sizeof(root_prefix); - size += add_root; - } - - ret_path = malloc(size); - if (ret_path == NULL) - return NULL; - - strcpy(&ret_path[add_root], path); - - // Ensure consistency with root prefix - memcpy(ret_path, root_prefix, sizeof(root_prefix)); - - // Same goes for '\' and '#' after the root prefix. Ensure '#' is used - for (j = sizeof(root_prefix); j < size; j++) { - ret_path[j] = (char)toupper((int)ret_path[j]); // Fix case too - if (ret_path[j] == '\\') - ret_path[j] = '#'; - } - - return ret_path; -} - -/* - * Cfgmgr32, AdvAPI32, OLE32 and SetupAPI DLL functions - */ -static BOOL init_dlls(void) -{ - DLL_GET_HANDLE(Cfgmgr32); - DLL_LOAD_FUNC(Cfgmgr32, CM_Get_Parent, TRUE); - DLL_LOAD_FUNC(Cfgmgr32, CM_Get_Child, TRUE); - - // Prefixed to avoid conflict with header files - DLL_GET_HANDLE(AdvAPI32); - DLL_LOAD_FUNC_PREFIXED(AdvAPI32, p, RegQueryValueExW, TRUE); - DLL_LOAD_FUNC_PREFIXED(AdvAPI32, p, RegCloseKey, TRUE); - - DLL_GET_HANDLE(OLE32); - DLL_LOAD_FUNC_PREFIXED(OLE32, p, IIDFromString, TRUE); - - DLL_GET_HANDLE(SetupAPI); - DLL_LOAD_FUNC_PREFIXED(SetupAPI, p, SetupDiGetClassDevsA, TRUE); - DLL_LOAD_FUNC_PREFIXED(SetupAPI, p, SetupDiEnumDeviceInfo, TRUE); - DLL_LOAD_FUNC_PREFIXED(SetupAPI, p, SetupDiEnumDeviceInterfaces, TRUE); - DLL_LOAD_FUNC_PREFIXED(SetupAPI, p, SetupDiGetDeviceInstanceIdA, TRUE); - DLL_LOAD_FUNC_PREFIXED(SetupAPI, p, SetupDiGetDeviceInterfaceDetailA, TRUE); - DLL_LOAD_FUNC_PREFIXED(SetupAPI, p, SetupDiGetDeviceRegistryPropertyA, TRUE); - DLL_LOAD_FUNC_PREFIXED(SetupAPI, p, SetupDiDestroyDeviceInfoList, TRUE); - DLL_LOAD_FUNC_PREFIXED(SetupAPI, p, SetupDiOpenDevRegKey, TRUE); - DLL_LOAD_FUNC_PREFIXED(SetupAPI, p, SetupDiOpenDeviceInterfaceRegKey, TRUE); - - return TRUE; -} - -static void exit_dlls(void) -{ - DLL_FREE_HANDLE(Cfgmgr32); - DLL_FREE_HANDLE(AdvAPI32); - DLL_FREE_HANDLE(OLE32); - DLL_FREE_HANDLE(SetupAPI); -} - -/* - * enumerate interfaces for the whole USB class - * - * Parameters: - * dev_info: a pointer to a dev_info list - * dev_info_data: a pointer to an SP_DEVINFO_DATA to be filled (or NULL if not needed) - * enumerator: the generic USB class for which to retrieve interface details - * index: zero based index of the interface in the device info list - * - * Note: it is the responsibility of the caller to free the DEVICE_INTERFACE_DETAIL_DATA - * structure returned and call this function repeatedly using the same guid (with an - * incremented index starting at zero) until all interfaces have been returned. - */ -static bool get_devinfo_data(struct libusb_context *ctx, - HDEVINFO *dev_info, SP_DEVINFO_DATA *dev_info_data, const char *enumerator, unsigned _index) -{ - if (_index == 0) { - *dev_info = pSetupDiGetClassDevsA(NULL, enumerator, NULL, DIGCF_PRESENT|DIGCF_ALLCLASSES); - if (*dev_info == INVALID_HANDLE_VALUE) { - usbi_err(ctx, "could not obtain device info set for PnP enumerator '%s': %s", - enumerator, windows_error_str(0)); - return false; - } - } - - dev_info_data->cbSize = sizeof(SP_DEVINFO_DATA); - if (!pSetupDiEnumDeviceInfo(*dev_info, _index, dev_info_data)) { - if (GetLastError() != ERROR_NO_MORE_ITEMS) - usbi_err(ctx, "could not obtain device info data for PnP enumerator '%s' index %u: %s", - enumerator, _index, windows_error_str(0)); - - pSetupDiDestroyDeviceInfoList(*dev_info); - *dev_info = INVALID_HANDLE_VALUE; - return false; - } - return true; -} - -/* - * enumerate interfaces for a specific GUID - * - * Parameters: - * dev_info: a pointer to a dev_info list - * dev_info_data: a pointer to an SP_DEVINFO_DATA to be filled (or NULL if not needed) - * guid: the GUID for which to retrieve interface details - * index: zero based index of the interface in the device info list - * - * Note: it is the responsibility of the caller to free the DEVICE_INTERFACE_DETAIL_DATA - * structure returned and call this function repeatedly using the same guid (with an - * incremented index starting at zero) until all interfaces have been returned. - */ -static int get_interface_details(struct libusb_context *ctx, HDEVINFO dev_info, - PSP_DEVINFO_DATA dev_info_data, LPCGUID guid, DWORD *_index, char **dev_interface_path) -{ - SP_DEVICE_INTERFACE_DATA dev_interface_data; - PSP_DEVICE_INTERFACE_DETAIL_DATA_A dev_interface_details; - DWORD size; - - dev_info_data->cbSize = sizeof(SP_DEVINFO_DATA); - dev_interface_data.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); - for (;;) { - if (!pSetupDiEnumDeviceInfo(dev_info, *_index, dev_info_data)) { - if (GetLastError() != ERROR_NO_MORE_ITEMS) { - usbi_err(ctx, "Could not obtain device info data for %s index %u: %s", - guid_to_string(guid), *_index, windows_error_str(0)); - return LIBUSB_ERROR_OTHER; - } - - // No more devices - return LIBUSB_SUCCESS; - } - - // Always advance the index for the next iteration - (*_index)++; - - if (pSetupDiEnumDeviceInterfaces(dev_info, dev_info_data, guid, 0, &dev_interface_data)) - break; - - if (GetLastError() != ERROR_NO_MORE_ITEMS) { - usbi_err(ctx, "Could not obtain interface data for %s devInst %X: %s", - guid_to_string(guid), dev_info_data->DevInst, windows_error_str(0)); - return LIBUSB_ERROR_OTHER; - } - - // Device does not have an interface matching this GUID, skip - } - - // Read interface data (dummy + actual) to access the device path - if (!pSetupDiGetDeviceInterfaceDetailA(dev_info, &dev_interface_data, NULL, 0, &size, NULL)) { - // The dummy call should fail with ERROR_INSUFFICIENT_BUFFER - if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { - usbi_err(ctx, "could not access interface data (dummy) for %s devInst %X: %s", - guid_to_string(guid), dev_info_data->DevInst, windows_error_str(0)); - return LIBUSB_ERROR_OTHER; - } - } else { - usbi_err(ctx, "program assertion failed - http://msdn.microsoft.com/en-us/library/ms792901.aspx is wrong"); - return LIBUSB_ERROR_OTHER; - } - - dev_interface_details = malloc(size); - if (dev_interface_details == NULL) { - usbi_err(ctx, "could not allocate interface data for %s devInst %X", - guid_to_string(guid), dev_info_data->DevInst); - return LIBUSB_ERROR_NO_MEM; - } - - dev_interface_details->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_A); - if (!pSetupDiGetDeviceInterfaceDetailA(dev_info, &dev_interface_data, - dev_interface_details, size, NULL, NULL)) { - usbi_err(ctx, "could not access interface data (actual) for %s devInst %X: %s", - guid_to_string(guid), dev_info_data->DevInst, windows_error_str(0)); - free(dev_interface_details); - return LIBUSB_ERROR_OTHER; - } - - *dev_interface_path = sanitize_path(dev_interface_details->DevicePath); - free(dev_interface_details); - - if (*dev_interface_path == NULL) { - usbi_err(ctx, "could not allocate interface path for %s devInst %X", - guid_to_string(guid), dev_info_data->DevInst); - return LIBUSB_ERROR_NO_MEM; - } - - return LIBUSB_SUCCESS; -} - -/* For libusb0 filter */ -static SP_DEVICE_INTERFACE_DETAIL_DATA_A *get_interface_details_filter(struct libusb_context *ctx, - HDEVINFO *dev_info, SP_DEVINFO_DATA *dev_info_data, const GUID *guid, unsigned _index, char *filter_path) -{ - SP_DEVICE_INTERFACE_DATA dev_interface_data; - SP_DEVICE_INTERFACE_DETAIL_DATA_A *dev_interface_details; - DWORD size; - - if (_index == 0) - *dev_info = pSetupDiGetClassDevsA(guid, NULL, NULL, DIGCF_PRESENT|DIGCF_DEVICEINTERFACE); - - if (dev_info_data != NULL) { - dev_info_data->cbSize = sizeof(SP_DEVINFO_DATA); - if (!pSetupDiEnumDeviceInfo(*dev_info, _index, dev_info_data)) { - if (GetLastError() != ERROR_NO_MORE_ITEMS) - usbi_err(ctx, "Could not obtain device info data for index %u: %s", - _index, windows_error_str(0)); - - pSetupDiDestroyDeviceInfoList(*dev_info); - *dev_info = INVALID_HANDLE_VALUE; - return NULL; - } - } - - dev_interface_data.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); - if (!pSetupDiEnumDeviceInterfaces(*dev_info, NULL, guid, _index, &dev_interface_data)) { - if (GetLastError() != ERROR_NO_MORE_ITEMS) - usbi_err(ctx, "Could not obtain interface data for index %u: %s", - _index, windows_error_str(0)); - - pSetupDiDestroyDeviceInfoList(*dev_info); - *dev_info = INVALID_HANDLE_VALUE; - return NULL; - } - - // Read interface data (dummy + actual) to access the device path - if (!pSetupDiGetDeviceInterfaceDetailA(*dev_info, &dev_interface_data, NULL, 0, &size, NULL)) { - // The dummy call should fail with ERROR_INSUFFICIENT_BUFFER - if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { - usbi_err(ctx, "could not access interface data (dummy) for index %u: %s", - _index, windows_error_str(0)); - goto err_exit; - } - } else { - usbi_err(ctx, "program assertion failed - http://msdn.microsoft.com/en-us/library/ms792901.aspx is wrong."); - goto err_exit; - } - - dev_interface_details = calloc(1, size); - if (dev_interface_details == NULL) { - usbi_err(ctx, "could not allocate interface data for index %u.", _index); - goto err_exit; - } - - dev_interface_details->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_A); - if (!pSetupDiGetDeviceInterfaceDetailA(*dev_info, &dev_interface_data, dev_interface_details, size, &size, NULL)) - usbi_err(ctx, "could not access interface data (actual) for index %u: %s", - _index, windows_error_str(0)); - - // [trobinso] lookup the libusb0 symbolic index. - if (dev_interface_details) { - HKEY hkey_device_interface = pSetupDiOpenDeviceInterfaceRegKey(*dev_info, &dev_interface_data, 0, KEY_READ); - if (hkey_device_interface != INVALID_HANDLE_VALUE) { - DWORD libusb0_symboliclink_index = 0; - DWORD value_length = sizeof(DWORD); - DWORD value_type = 0; - LONG status; - - status = pRegQueryValueExW(hkey_device_interface, L"LUsb0", NULL, &value_type, - (LPBYTE)&libusb0_symboliclink_index, &value_length); - if (status == ERROR_SUCCESS) { - if (libusb0_symboliclink_index < 256) { - // libusb0.sys is connected to this device instance. - // If the the device interface guid is {F9F3FF14-AE21-48A0-8A25-8011A7A931D9} then it's a filter. - sprintf(filter_path, "\\\\.\\libusb0-%04u", (unsigned int)libusb0_symboliclink_index); - usbi_dbg("assigned libusb0 symbolic link %s", filter_path); - } else { - // libusb0.sys was connected to this device instance at one time; but not anymore. - } - } - pRegCloseKey(hkey_device_interface); - } - } - - return dev_interface_details; - -err_exit: - pSetupDiDestroyDeviceInfoList(*dev_info); - *dev_info = INVALID_HANDLE_VALUE; - return NULL; -} - -/* - * Returns the first known ancestor of a device - */ -static struct libusb_device *get_ancestor(struct libusb_context *ctx, - DEVINST devinst, PDEVINST _parent_devinst) -{ - struct libusb_device *dev = NULL; - DEVINST parent_devinst; - - while (dev == NULL) { - if (CM_Get_Parent(&parent_devinst, devinst, 0) != CR_SUCCESS) - break; - devinst = parent_devinst; - dev = usbi_get_device_by_session_id(ctx, (unsigned long)devinst); - } - - if ((dev != NULL) && (_parent_devinst != NULL)) - *_parent_devinst = devinst; - - return dev; -} - -/* - * Determine which interface the given endpoint address belongs to - */ -static int get_interface_by_endpoint(struct libusb_config_descriptor *conf_desc, uint8_t ep) -{ - const struct libusb_interface *intf; - const struct libusb_interface_descriptor *intf_desc; - int i, j, k; - - for (i = 0; i < conf_desc->bNumInterfaces; i++) { - intf = &conf_desc->interface[i]; - for (j = 0; j < intf->num_altsetting; j++) { - intf_desc = &intf->altsetting[j]; - for (k = 0; k < intf_desc->bNumEndpoints; k++) { - if (intf_desc->endpoint[k].bEndpointAddress == ep) { - usbi_dbg("found endpoint %02X on interface %d", intf_desc->bInterfaceNumber, i); - return intf_desc->bInterfaceNumber; - } - } - } - } - - usbi_dbg("endpoint %02X not found on any interface", ep); - return LIBUSB_ERROR_NOT_FOUND; -} - -/* - * Populate the endpoints addresses of the device_priv interface helper structs - */ -static int windows_assign_endpoints(struct libusb_device_handle *dev_handle, int iface, int altsetting) -{ - int i, r; - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - struct libusb_config_descriptor *conf_desc; - const struct libusb_interface_descriptor *if_desc; - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - - r = libusb_get_active_config_descriptor(dev_handle->dev, &conf_desc); - if (r != LIBUSB_SUCCESS) { - usbi_warn(ctx, "could not read config descriptor: error %d", r); - return r; - } - - if_desc = &conf_desc->interface[iface].altsetting[altsetting]; - safe_free(priv->usb_interface[iface].endpoint); - - if (if_desc->bNumEndpoints == 0) { - usbi_dbg("no endpoints found for interface %d", iface); - libusb_free_config_descriptor(conf_desc); - priv->usb_interface[iface].current_altsetting = altsetting; - return LIBUSB_SUCCESS; - } - - priv->usb_interface[iface].endpoint = malloc(if_desc->bNumEndpoints); - if (priv->usb_interface[iface].endpoint == NULL) { - libusb_free_config_descriptor(conf_desc); - return LIBUSB_ERROR_NO_MEM; - } - - priv->usb_interface[iface].nb_endpoints = if_desc->bNumEndpoints; - for (i = 0; i < if_desc->bNumEndpoints; i++) { - priv->usb_interface[iface].endpoint[i] = if_desc->endpoint[i].bEndpointAddress; - usbi_dbg("(re)assigned endpoint %02X to interface %d", priv->usb_interface[iface].endpoint[i], iface); - } - libusb_free_config_descriptor(conf_desc); - - // Extra init may be required to configure endpoints - if (priv->apib->configure_endpoints) - r = priv->apib->configure_endpoints(SUB_API_NOTSET, dev_handle, iface); - - if (r == LIBUSB_SUCCESS) - priv->usb_interface[iface].current_altsetting = altsetting; - - return r; -} - -// Lookup for a match in the list of API driver names -// return -1 if not found, driver match number otherwise -static int get_sub_api(char *driver, int api) -{ - int i; - const char sep_str[2] = {LIST_SEPARATOR, 0}; - char *tok, *tmp_str; - size_t len = strlen(driver); - - if (len == 0) - return SUB_API_NOTSET; - - tmp_str = _strdup(driver); - if (tmp_str == NULL) - return SUB_API_NOTSET; - - tok = strtok(tmp_str, sep_str); - while (tok != NULL) { - for (i = 0; i < usb_api_backend[api].nb_driver_names; i++) { - if (_stricmp(tok, usb_api_backend[api].driver_name_list[i]) == 0) { - free(tmp_str); - return i; - } - } - tok = strtok(NULL, sep_str); - } - - free(tmp_str); - return SUB_API_NOTSET; -} - -/* - * auto-claiming and auto-release helper functions - */ -static int auto_claim(struct libusb_transfer *transfer, int *interface_number, int api_type) -{ - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv( - transfer->dev_handle); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int current_interface = *interface_number; - int r = LIBUSB_SUCCESS; - - switch (api_type) { - case USB_API_WINUSBX: - case USB_API_HID: - break; - default: - return LIBUSB_ERROR_INVALID_PARAM; - } - - usbi_mutex_lock(&autoclaim_lock); - if (current_interface < 0) { // No serviceable interface was found - for (current_interface = 0; current_interface < USB_MAXINTERFACES; current_interface++) { - // Must claim an interface of the same API type - if ((priv->usb_interface[current_interface].apib->id == api_type) - && (libusb_claim_interface(transfer->dev_handle, current_interface) == LIBUSB_SUCCESS)) { - usbi_dbg("auto-claimed interface %d for control request", current_interface); - if (handle_priv->autoclaim_count[current_interface] != 0) - usbi_warn(ctx, "program assertion failed - autoclaim_count was nonzero"); - handle_priv->autoclaim_count[current_interface]++; - break; - } - } - if (current_interface == USB_MAXINTERFACES) { - usbi_err(ctx, "could not auto-claim any interface"); - r = LIBUSB_ERROR_NOT_FOUND; - } - } else { - // If we have a valid interface that was autoclaimed, we must increment - // its autoclaim count so that we can prevent an early release. - if (handle_priv->autoclaim_count[current_interface] != 0) - handle_priv->autoclaim_count[current_interface]++; - } - usbi_mutex_unlock(&autoclaim_lock); - - *interface_number = current_interface; - return r; -} - -static void auto_release(struct usbi_transfer *itransfer) -{ - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - libusb_device_handle *dev_handle = transfer->dev_handle; - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - int r; - - usbi_mutex_lock(&autoclaim_lock); - if (handle_priv->autoclaim_count[transfer_priv->interface_number] > 0) { - handle_priv->autoclaim_count[transfer_priv->interface_number]--; - if (handle_priv->autoclaim_count[transfer_priv->interface_number] == 0) { - r = libusb_release_interface(dev_handle, transfer_priv->interface_number); - if (r == LIBUSB_SUCCESS) - usbi_dbg("auto-released interface %d", transfer_priv->interface_number); - else - usbi_dbg("failed to auto-release interface %d (%s)", - transfer_priv->interface_number, libusb_error_name((enum libusb_error)r)); - } - } - usbi_mutex_unlock(&autoclaim_lock); -} - -/* - * init: libusb backend init function - */ -static int winusb_init(struct libusb_context *ctx) -{ - int i; - - // We need a lock for proper auto-release - usbi_mutex_init(&autoclaim_lock); - - // Load DLL imports - if (!init_dlls()) { - usbi_err(ctx, "could not resolve DLL functions"); - return LIBUSB_ERROR_OTHER; - } - - // Initialize the low level APIs (we don't care about errors at this stage) - for (i = 0; i < USB_API_MAX; i++) { - if (usb_api_backend[i].init && usb_api_backend[i].init(ctx)) - usbi_warn(ctx, "error initializing %s backend", - usb_api_backend[i].designation); - } - - return LIBUSB_SUCCESS; -} - -/* -* exit: libusb backend deinitialization function -*/ -static void winusb_exit(struct libusb_context *ctx) -{ - int i; - - for (i = 0; i < USB_API_MAX; i++) { - if (usb_api_backend[i].exit) - usb_api_backend[i].exit(); - } - - exit_dlls(); - usbi_mutex_destroy(&autoclaim_lock); -} - -/* - * fetch and cache all the config descriptors through I/O - */ -static void cache_config_descriptors(struct libusb_device *dev, HANDLE hub_handle) -{ - struct libusb_context *ctx = DEVICE_CTX(dev); - struct winusb_device_priv *priv = _device_priv(dev); - DWORD size, ret_size; - uint8_t i; - - USB_CONFIGURATION_DESCRIPTOR_SHORT cd_buf_short; // dummy request - PUSB_DESCRIPTOR_REQUEST cd_buf_actual = NULL; // actual request - PUSB_CONFIGURATION_DESCRIPTOR cd_data; - - if (dev->num_configurations == 0) - return; - - priv->config_descriptor = calloc(dev->num_configurations, sizeof(PUSB_CONFIGURATION_DESCRIPTOR)); - if (priv->config_descriptor == NULL) { - usbi_err(ctx, "could not allocate configuration descriptor array for '%s'", priv->dev_id); - return; - } - - for (i = 0; i <= dev->num_configurations; i++) { - safe_free(cd_buf_actual); - - if (i == dev->num_configurations) - break; - - size = sizeof(cd_buf_short); - memset(&cd_buf_short, 0, size); - - cd_buf_short.req.ConnectionIndex = (ULONG)dev->port_number; - cd_buf_short.req.SetupPacket.bmRequest = LIBUSB_ENDPOINT_IN; - cd_buf_short.req.SetupPacket.bRequest = LIBUSB_REQUEST_GET_DESCRIPTOR; - cd_buf_short.req.SetupPacket.wValue = (LIBUSB_DT_CONFIG << 8) | i; - cd_buf_short.req.SetupPacket.wIndex = 0; - cd_buf_short.req.SetupPacket.wLength = (USHORT)sizeof(USB_CONFIGURATION_DESCRIPTOR); - - // Dummy call to get the required data size. Initial failures are reported as info rather - // than error as they can occur for non-penalizing situations, such as with some hubs. - // coverity[tainted_data_argument] - if (!DeviceIoControl(hub_handle, IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, &cd_buf_short, size, - &cd_buf_short, size, &ret_size, NULL)) { - usbi_info(ctx, "could not access configuration descriptor %u (dummy) for '%s': %s", i, priv->dev_id, windows_error_str(0)); - continue; - } - - if ((ret_size != size) || (cd_buf_short.desc.wTotalLength < sizeof(USB_CONFIGURATION_DESCRIPTOR))) { - usbi_info(ctx, "unexpected configuration descriptor %u size (dummy) for '%s'", i, priv->dev_id); - continue; - } - - size = sizeof(USB_DESCRIPTOR_REQUEST) + cd_buf_short.desc.wTotalLength; - cd_buf_actual = malloc(size); - if (cd_buf_actual == NULL) { - usbi_err(ctx, "could not allocate configuration descriptor %u buffer for '%s'", i, priv->dev_id); - continue; - } - - // Actual call - cd_buf_actual->ConnectionIndex = (ULONG)dev->port_number; - cd_buf_actual->SetupPacket.bmRequest = LIBUSB_ENDPOINT_IN; - cd_buf_actual->SetupPacket.bRequest = LIBUSB_REQUEST_GET_DESCRIPTOR; - cd_buf_actual->SetupPacket.wValue = (LIBUSB_DT_CONFIG << 8) | i; - cd_buf_actual->SetupPacket.wIndex = 0; - cd_buf_actual->SetupPacket.wLength = cd_buf_short.desc.wTotalLength; - - if (!DeviceIoControl(hub_handle, IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, cd_buf_actual, size, - cd_buf_actual, size, &ret_size, NULL)) { - usbi_err(ctx, "could not access configuration descriptor %u (actual) for '%s': %s", i, priv->dev_id, windows_error_str(0)); - continue; - } - - cd_data = (PUSB_CONFIGURATION_DESCRIPTOR)((UCHAR *)cd_buf_actual + sizeof(USB_DESCRIPTOR_REQUEST)); - - if ((size != ret_size) || (cd_data->wTotalLength != cd_buf_short.desc.wTotalLength)) { - usbi_err(ctx, "unexpected configuration descriptor %u size (actual) for '%s'", i, priv->dev_id); - continue; - } - - if (cd_data->bDescriptorType != LIBUSB_DT_CONFIG) { - usbi_err(ctx, "descriptor %u not a configuration descriptor for '%s'", i, priv->dev_id); - continue; - } - - usbi_dbg("cached config descriptor %u (bConfigurationValue=%u, %u bytes)", - i, cd_data->bConfigurationValue, cd_data->wTotalLength); - - // Cache the descriptor - priv->config_descriptor[i] = malloc(cd_data->wTotalLength); - if (priv->config_descriptor[i] != NULL) { - memcpy(priv->config_descriptor[i], cd_data, cd_data->wTotalLength); - } else { - usbi_err(ctx, "could not allocate configuration descriptor %u buffer for '%s'", i, priv->dev_id); - } - } -} - -/* - * Populate a libusb device structure - */ -static int init_device(struct libusb_device *dev, struct libusb_device *parent_dev, - uint8_t port_number, DEVINST devinst) -{ - struct libusb_context *ctx; - struct libusb_device *tmp_dev; - struct winusb_device_priv *priv, *parent_priv; - USB_NODE_CONNECTION_INFORMATION_EX conn_info; - USB_NODE_CONNECTION_INFORMATION_EX_V2 conn_info_v2; - HANDLE hub_handle; - DWORD size; - uint8_t bus_number, depth; - int r; - int ginfotimeout; - - priv = _device_priv(dev); - - // If the device is already initialized, we can stop here - if (priv->initialized) - return LIBUSB_SUCCESS; - - if (parent_dev != NULL) { // Not a HCD root hub - ctx = DEVICE_CTX(dev); - parent_priv = _device_priv(parent_dev); - if (parent_priv->apib->id != USB_API_HUB) { - usbi_warn(ctx, "parent for device '%s' is not a hub", priv->dev_id); - return LIBUSB_ERROR_NOT_FOUND; - } - - // Calculate depth and fetch bus number - bus_number = parent_dev->bus_number; - if (bus_number == 0) { - tmp_dev = get_ancestor(ctx, devinst, &devinst); - if (tmp_dev != parent_dev) { - usbi_err(ctx, "program assertion failed - first ancestor is not parent"); - return LIBUSB_ERROR_NOT_FOUND; - } - libusb_unref_device(tmp_dev); - - for (depth = 1; bus_number == 0; depth++) { - tmp_dev = get_ancestor(ctx, devinst, &devinst); - if (tmp_dev->bus_number != 0) { - bus_number = tmp_dev->bus_number; - depth += _device_priv(tmp_dev)->depth; - } - libusb_unref_device(tmp_dev); - } - } else { - depth = parent_priv->depth + 1; - } - - if (bus_number == 0) { - usbi_err(ctx, "program assertion failed - bus number not found for '%s'", priv->dev_id); - return LIBUSB_ERROR_NOT_FOUND; - } - - dev->bus_number = bus_number; - dev->port_number = port_number; - dev->parent_dev = parent_dev; - priv->depth = depth; - - hub_handle = CreateFileA(parent_priv->path, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, - 0, NULL); - if (hub_handle == INVALID_HANDLE_VALUE) { - usbi_warn(ctx, "could not open hub %s: %s", parent_priv->path, windows_error_str(0)); - return LIBUSB_ERROR_ACCESS; - } - - memset(&conn_info, 0, sizeof(conn_info)); - conn_info.ConnectionIndex = (ULONG)port_number; - // coverity[tainted_data_argument] - ginfotimeout = 20; - do { - if (!DeviceIoControl(hub_handle, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX, &conn_info, sizeof(conn_info), - &conn_info, sizeof(conn_info), &size, NULL)) { - usbi_warn(ctx, "could not get node connection information for device '%s': %s", - priv->dev_id, windows_error_str(0)); - CloseHandle(hub_handle); - return LIBUSB_ERROR_NO_DEVICE; - } - - if (conn_info.ConnectionStatus == NoDeviceConnected) { - usbi_err(ctx, "device '%s' is no longer connected!", priv->dev_id); - CloseHandle(hub_handle); - return LIBUSB_ERROR_NO_DEVICE; - } - - memcpy(&priv->dev_descriptor, &(conn_info.DeviceDescriptor), sizeof(USB_DEVICE_DESCRIPTOR)); - dev->num_configurations = priv->dev_descriptor.bNumConfigurations; - priv->active_config = conn_info.CurrentConfigurationValue; - if (priv->active_config == 0) { - usbi_dbg("0x%x:0x%x found %u configurations (active conf: %u) \n", - priv->dev_descriptor.idVendor, - priv->dev_descriptor.idProduct, - dev->num_configurations, - priv->active_config); - } - if (priv->active_config == 0) - Sleep(50); - } while (priv->active_config == 0 && --ginfotimeout >= 0); - - if (priv->active_config == 0) { - usbi_dbg("after try 0x%x:0x%x found %u configurations (active conf: %u) \n", - priv->dev_descriptor.idVendor, - priv->dev_descriptor.idProduct, - dev->num_configurations, - priv->active_config); - usbi_dbg("Force this device active config to 1 in libusb! \nNOTICE: Should not reach this place!!!!!! \n"); - priv->active_config = 1; - } - - usbi_dbg("found %u configurations (active conf: %u)", dev->num_configurations, priv->active_config); - - // Cache as many config descriptors as we can - cache_config_descriptors(dev, hub_handle); - - // In their great wisdom, Microsoft decided to BREAK the USB speed report between Windows 7 and Windows 8 - if (windows_version >= WINDOWS_8) { - conn_info_v2.ConnectionIndex = (ULONG)port_number; - conn_info_v2.Length = sizeof(USB_NODE_CONNECTION_INFORMATION_EX_V2); - conn_info_v2.SupportedUsbProtocols.Usb300 = 1; - if (!DeviceIoControl(hub_handle, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2, - &conn_info_v2, sizeof(conn_info_v2), &conn_info_v2, sizeof(conn_info_v2), &size, NULL)) { - usbi_warn(ctx, "could not get node connection information (V2) for device '%s': %s", - priv->dev_id, windows_error_str(0)); - } else if (conn_info_v2.Flags.DeviceIsOperatingAtSuperSpeedOrHigher) { - conn_info.Speed = 3; - } - } - - CloseHandle(hub_handle); - - if (conn_info.DeviceAddress > UINT8_MAX) - usbi_err(ctx, "program assertion failed - device address overflow"); - - dev->device_address = (uint8_t)conn_info.DeviceAddress; - - switch (conn_info.Speed) { - case 0: dev->speed = LIBUSB_SPEED_LOW; break; - case 1: dev->speed = LIBUSB_SPEED_FULL; break; - case 2: dev->speed = LIBUSB_SPEED_HIGH; break; - case 3: dev->speed = LIBUSB_SPEED_SUPER; break; - default: - usbi_warn(ctx, "unknown device speed %u", conn_info.Speed); - break; - } - } - - r = usbi_sanitize_device(dev); - if (r) - return r; - - priv->initialized = true; - - usbi_dbg("(bus: %u, addr: %u, depth: %u, port: %u): '%s'", - dev->bus_number, dev->device_address, priv->depth, dev->port_number, priv->dev_id); - - return LIBUSB_SUCCESS; -} - -static int enumerate_hcd_root_hub(struct libusb_context *ctx, const char *dev_id, - uint8_t bus_number, DEVINST devinst) -{ - struct libusb_device *dev; - struct winusb_device_priv *priv; - unsigned long session_id; - DEVINST child_devinst; - - if (CM_Get_Child(&child_devinst, devinst, 0) != CR_SUCCESS) { - usbi_err(ctx, "could not get child devinst for '%s'", dev_id); - return LIBUSB_ERROR_OTHER; - } - - session_id = (unsigned long)child_devinst; - dev = usbi_get_device_by_session_id(ctx, session_id); - if (dev == NULL) { - usbi_err(ctx, "program assertion failed - HCD '%s' child not found", dev_id); - return LIBUSB_ERROR_NO_DEVICE; - } - - if (dev->bus_number == 0) { - // Only do this once - usbi_dbg("assigning HCD '%s' bus number %u", dev_id, bus_number); - priv = _device_priv(dev); - dev->bus_number = bus_number; - dev->num_configurations = 1; - priv->dev_descriptor.bLength = LIBUSB_DT_DEVICE_SIZE; - priv->dev_descriptor.bDescriptorType = LIBUSB_DT_DEVICE; - priv->dev_descriptor.bDeviceClass = LIBUSB_CLASS_HUB; - priv->dev_descriptor.bNumConfigurations = 1; - priv->active_config = 1; - priv->root_hub = true; - if (sscanf(dev_id, "PCI\\VEN_%04hx&DEV_%04hx%*s", &priv->dev_descriptor.idVendor, &priv->dev_descriptor.idProduct) != 2) { - usbi_warn(ctx, "could not infer VID/PID of HCD root hub from '%s'", dev_id); - priv->dev_descriptor.idVendor = 0x1d6b; // Linux Foundation root hub - priv->dev_descriptor.idProduct = 1; - } - } - - libusb_unref_device(dev); - return LIBUSB_SUCCESS; -} - -// Returns the api type, or 0 if not found/unsupported -static void get_api_type(struct libusb_context *ctx, HDEVINFO *dev_info, - SP_DEVINFO_DATA *dev_info_data, int *api, int *sub_api) -{ - // Precedence for filter drivers vs driver is in the order of this array - struct driver_lookup lookup[3] = { - {"\0\0", SPDRP_SERVICE, "driver"}, - {"\0\0", SPDRP_UPPERFILTERS, "upper filter driver"}, - {"\0\0", SPDRP_LOWERFILTERS, "lower filter driver"} - }; - DWORD size, reg_type; - unsigned k, l; - int i, j; - - // Check the service & filter names to know the API we should use - for (k = 0; k < 3; k++) { - if (pSetupDiGetDeviceRegistryPropertyA(*dev_info, dev_info_data, lookup[k].reg_prop, - ®_type, (PBYTE)lookup[k].list, MAX_KEY_LENGTH, &size)) { - // Turn the REG_SZ SPDRP_SERVICE into REG_MULTI_SZ - if (lookup[k].reg_prop == SPDRP_SERVICE) - // our buffers are MAX_KEY_LENGTH + 1 so we can overflow if needed - lookup[k].list[strlen(lookup[k].list) + 1] = 0; - - // MULTI_SZ is a pain to work with. Turn it into something much more manageable - // NB: none of the driver names we check against contain LIST_SEPARATOR, - // (currently ';'), so even if an unsuported one does, it's not an issue - for (l = 0; (lookup[k].list[l] != 0) || (lookup[k].list[l + 1] != 0); l++) { - if (lookup[k].list[l] == 0) - lookup[k].list[l] = LIST_SEPARATOR; - } - usbi_dbg("%s(s): %s", lookup[k].designation, lookup[k].list); - } else { - if (GetLastError() != ERROR_INVALID_DATA) - usbi_dbg("could not access %s: %s", lookup[k].designation, windows_error_str(0)); - lookup[k].list[0] = 0; - } - } - - for (i = 2; i < USB_API_MAX; i++) { - for (k = 0; k < 3; k++) { - j = get_sub_api(lookup[k].list, i); - if (j >= 0) { - usbi_dbg("matched %s name against %s", lookup[k].designation, - (i != USB_API_WINUSBX) ? usb_api_backend[i].designation : usb_api_backend[i].driver_name_list[j]); - *api = i; - *sub_api = j; - return; - } - } - } -} - -static int set_composite_interface(struct libusb_context *ctx, struct libusb_device *dev, - char *dev_interface_path, char *device_id, int api, int sub_api) -{ - struct winusb_device_priv *priv = _device_priv(dev); - int interface_number; - const char *mi_str; - - // Because MI_## are not necessarily in sequential order (some composite - // devices will have only MI_00 & MI_03 for instance), we retrieve the actual - // interface number from the path's MI value - mi_str = strstr(device_id, "MI_"); - if ((mi_str != NULL) && isdigit(mi_str[3]) && isdigit(mi_str[4])) { - interface_number = ((mi_str[3] - '0') * 10) + (mi_str[4] - '0'); - } else { - usbi_warn(ctx, "failure to read interface number for %s, using default value", device_id); - interface_number = 0; - } - - if (interface_number >= USB_MAXINTERFACES) { - usbi_warn(ctx, "interface %d too large - ignoring interface path %s", interface_number, dev_interface_path); - return LIBUSB_ERROR_ACCESS; - } - - if (priv->usb_interface[interface_number].path != NULL) { - if (api == USB_API_HID) { - // HID devices can have multiple collections (COL##) for each MI_## interface - usbi_dbg("interface[%d] already set - ignoring HID collection: %s", - interface_number, device_id); - return LIBUSB_ERROR_ACCESS; - } - // In other cases, just use the latest data - safe_free(priv->usb_interface[interface_number].path); - } - - usbi_dbg("interface[%d] = %s", interface_number, dev_interface_path); - priv->usb_interface[interface_number].path = dev_interface_path; - priv->usb_interface[interface_number].apib = &usb_api_backend[api]; - priv->usb_interface[interface_number].sub_api = sub_api; - if ((api == USB_API_HID) && (priv->hid == NULL)) { - priv->hid = calloc(1, sizeof(struct hid_device_priv)); - if (priv->hid == NULL) - return LIBUSB_ERROR_NO_MEM; - } - - return LIBUSB_SUCCESS; -} - -static int set_hid_interface(struct libusb_context *ctx, struct libusb_device *dev, - char *dev_interface_path) -{ - int i; - struct winusb_device_priv *priv = _device_priv(dev); - - if (priv->hid == NULL) { - usbi_err(ctx, "program assertion failed: parent is not HID"); - return LIBUSB_ERROR_NO_DEVICE; - } else if (priv->hid->nb_interfaces == USB_MAXINTERFACES) { - usbi_err(ctx, "program assertion failed: max USB interfaces reached for HID device"); - return LIBUSB_ERROR_NO_DEVICE; - } - - for (i = 0; i < priv->hid->nb_interfaces; i++) { - if ((priv->usb_interface[i].path != NULL) && strcmp(priv->usb_interface[i].path, dev_interface_path) == 0) { - usbi_dbg("interface[%d] already set to %s", i, dev_interface_path); - return LIBUSB_ERROR_ACCESS; - } - } - - priv->usb_interface[priv->hid->nb_interfaces].path = dev_interface_path; - priv->usb_interface[priv->hid->nb_interfaces].apib = &usb_api_backend[USB_API_HID]; - usbi_dbg("interface[%u] = %s", priv->hid->nb_interfaces, dev_interface_path); - priv->hid->nb_interfaces++; - return LIBUSB_SUCCESS; -} - -/* - * get_device_list: libusb backend device enumeration function - */ -static int winusb_get_device_list(struct libusb_context *ctx, struct discovered_devs **_discdevs) -{ - struct discovered_devs *discdevs; - HDEVINFO *dev_info, dev_info_intf, dev_info_enum; - SP_DEVINFO_DATA dev_info_data; - DWORD _index = 0; - GUID hid_guid; - int r = LIBUSB_SUCCESS; - int api, sub_api; - unsigned int pass, i, j; - char enumerator[16]; - char dev_id[MAX_PATH_LENGTH]; - struct libusb_device *dev, *parent_dev; - struct winusb_device_priv *priv, *parent_priv; - char *dev_interface_path = NULL; - unsigned long session_id; - DWORD size, port_nr, reg_type, install_state; - HKEY key; - WCHAR guid_string_w[MAX_GUID_STRING_LENGTH]; - GUID *if_guid; - LONG s; -#define HUB_PASS 0 -#define DEV_PASS 1 -#define HCD_PASS 2 -#define GEN_PASS 3 -#define HID_PASS 4 -#define EXT_PASS 5 - // Keep a list of guids that will be enumerated -#define GUID_SIZE_STEP 8 - const GUID **guid_list, **new_guid_list; - unsigned int guid_size = GUID_SIZE_STEP; - unsigned int nb_guids; - // Keep a list of PnP enumerator strings that are found - char *usb_enumerator[8] = { "USB" }; - unsigned int nb_usb_enumerators = 1; - unsigned int usb_enum_index = 0; - // Keep a list of newly allocated devs to unref -#define UNREF_SIZE_STEP 16 - libusb_device **unref_list, **new_unref_list; - unsigned int unref_size = UNREF_SIZE_STEP; - unsigned int unref_cur = 0; - - // PASS 1 : (re)enumerate HCDs (allows for HCD hotplug) - // PASS 2 : (re)enumerate HUBS - // PASS 3 : (re)enumerate generic USB devices (including driverless) - // and list additional USB device interface GUIDs to explore - // PASS 4 : (re)enumerate master USB devices that have a device interface - // PASS 5+: (re)enumerate device interfaced GUIDs (including HID) and - // set the device interfaces. - - // Init the GUID table - guid_list = malloc(guid_size * sizeof(void *)); - if (guid_list == NULL) { - usbi_err(ctx, "failed to alloc guid list"); - return LIBUSB_ERROR_NO_MEM; - } - - guid_list[HUB_PASS] = &GUID_DEVINTERFACE_USB_HUB; - guid_list[DEV_PASS] = &GUID_DEVINTERFACE_USB_DEVICE; - guid_list[HCD_PASS] = &GUID_DEVINTERFACE_USB_HOST_CONTROLLER; - guid_list[GEN_PASS] = NULL; - if (api_hid_available) { - HidD_GetHidGuid(&hid_guid); - guid_list[HID_PASS] = &hid_guid; - } else { - guid_list[HID_PASS] = NULL; - } - nb_guids = EXT_PASS; - - unref_list = malloc(unref_size * sizeof(void *)); - if (unref_list == NULL) { - usbi_err(ctx, "failed to alloc unref list"); - free((void *)guid_list); - return LIBUSB_ERROR_NO_MEM; - } - - dev_info_intf = pSetupDiGetClassDevsA(NULL, NULL, NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT | DIGCF_DEVICEINTERFACE); - if (dev_info_intf == INVALID_HANDLE_VALUE) { - usbi_err(ctx, "failed to obtain device info list: %s", windows_error_str(0)); - free(unref_list); - free((void *)guid_list); - return LIBUSB_ERROR_OTHER; - } - - for (pass = 0; ((pass < nb_guids) && (r == LIBUSB_SUCCESS)); pass++) { -//#define ENUM_DEBUG -#if defined(ENABLE_LOGGING) && defined(ENUM_DEBUG) - const char * const passname[] = {"HUB", "DEV", "HCD", "GEN", "HID", "EXT"}; - usbi_dbg("#### PROCESSING %ss %s", passname[MIN(pass, EXT_PASS)], guid_to_string(guid_list[pass])); -#endif - if ((pass == HID_PASS) && (guid_list[HID_PASS] == NULL)) - continue; - - dev_info = (pass != GEN_PASS) ? &dev_info_intf : &dev_info_enum; - - for (i = 0; ; i++) { - // safe loop: free up any (unprotected) dynamic resource - // NB: this is always executed before breaking the loop - safe_free(dev_interface_path); - priv = parent_priv = NULL; - dev = parent_dev = NULL; - - // Safe loop: end of loop conditions - if (r != LIBUSB_SUCCESS) - break; - - if ((pass == HCD_PASS) && (i == UINT8_MAX)) { - usbi_warn(ctx, "program assertion failed - found more than %u buses, skipping the rest.", UINT8_MAX); - break; - } - - if (pass != GEN_PASS) { - // Except for GEN, all passes deal with device interfaces - r = get_interface_details(ctx, *dev_info, &dev_info_data, guid_list[pass], &_index, &dev_interface_path); - if ((r != LIBUSB_SUCCESS) || (dev_interface_path == NULL)) { - _index = 0; - break; - } - } else { - // Workaround for a Nec/Renesas USB 3.0 driver bug where root hubs are - // being listed under the "NUSB3" PnP Symbolic Name rather than "USB". - // The Intel USB 3.0 driver behaves similar, but uses "IUSB3" - // The Intel Alpine Ridge USB 3.1 driver uses "IARUSB3" - for (; usb_enum_index < nb_usb_enumerators; usb_enum_index++) { - if (get_devinfo_data(ctx, dev_info, &dev_info_data, usb_enumerator[usb_enum_index], i)) - break; - i = 0; - } - if (usb_enum_index == nb_usb_enumerators) - break; - } - - // Read the Device ID path - if (!pSetupDiGetDeviceInstanceIdA(*dev_info, &dev_info_data, dev_id, sizeof(dev_id), NULL)) { - usbi_warn(ctx, "could not read the device instance ID for devInst %X, skipping", - dev_info_data.DevInst); - continue; - } - -#ifdef ENUM_DEBUG - usbi_dbg("PRO: %s", dev_id); -#endif - - // Set API to use or get additional data from generic pass - api = USB_API_UNSUPPORTED; - sub_api = SUB_API_NOTSET; - switch (pass) { - case HCD_PASS: - break; - case HUB_PASS: - api = USB_API_HUB; - // Fetch the PnP enumerator class for this hub - // This will allow us to enumerate all classes during the GEN pass - if (!pSetupDiGetDeviceRegistryPropertyA(*dev_info, &dev_info_data, SPDRP_ENUMERATOR_NAME, - NULL, (PBYTE)enumerator, sizeof(enumerator), NULL)) { - usbi_err(ctx, "could not read enumerator string for device '%s': %s", dev_id, windows_error_str(0)); - LOOP_BREAK(LIBUSB_ERROR_OTHER); - } - for (j = 0; j < nb_usb_enumerators; j++) { - if (strcmp(usb_enumerator[j], enumerator) == 0) - break; - } - if (j == nb_usb_enumerators) { - usbi_dbg("found new PnP enumerator string '%s'", enumerator); - if (nb_usb_enumerators < ARRAYSIZE(usb_enumerator)) { - usb_enumerator[nb_usb_enumerators] = _strdup(enumerator); - if (usb_enumerator[nb_usb_enumerators] != NULL) { - nb_usb_enumerators++; - } else { - usbi_err(ctx, "could not allocate enumerator string '%s'", enumerator); - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - } - } else { - usbi_warn(ctx, "too many enumerator strings, some devices may not be accessible"); - } - } - break; - case GEN_PASS: - // We use the GEN pass to detect driverless devices... - if (!pSetupDiGetDeviceRegistryPropertyA(*dev_info, &dev_info_data, SPDRP_DRIVER, - NULL, NULL, 0, NULL) && (GetLastError() != ERROR_INSUFFICIENT_BUFFER)) { - usbi_info(ctx, "The following device has no driver: '%s'", dev_id); - usbi_info(ctx, "libusb will not be able to access it"); - } - // ...and to add the additional device interface GUIDs - key = pSetupDiOpenDevRegKey(*dev_info, &dev_info_data, DICS_FLAG_GLOBAL, 0, DIREG_DEV, KEY_READ); - if (key == INVALID_HANDLE_VALUE) - break; - // Look for both DeviceInterfaceGUIDs *and* DeviceInterfaceGUID, in that order - size = sizeof(guid_string_w); - s = pRegQueryValueExW(key, L"DeviceInterfaceGUIDs", NULL, ®_type, - (LPBYTE)guid_string_w, &size); - if (s == ERROR_FILE_NOT_FOUND) - s = pRegQueryValueExW(key, L"DeviceInterfaceGUID", NULL, ®_type, - (LPBYTE)guid_string_w, &size); - pRegCloseKey(key); - if ((s == ERROR_SUCCESS) && - (((reg_type == REG_SZ) && (size == (sizeof(guid_string_w) - sizeof(WCHAR)))) || - ((reg_type == REG_MULTI_SZ) && (size == sizeof(guid_string_w))))) { - if (nb_guids == guid_size) { - new_guid_list = realloc((void *)guid_list, (guid_size + GUID_SIZE_STEP) * sizeof(void *)); - if (new_guid_list == NULL) { - usbi_err(ctx, "failed to realloc guid list"); - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - } - guid_list = new_guid_list; - guid_size += GUID_SIZE_STEP; - } - if_guid = malloc(sizeof(*if_guid)); - if (if_guid == NULL) { - usbi_err(ctx, "failed to alloc if_guid"); - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - } - if (pIIDFromString(guid_string_w, if_guid) != 0) { - usbi_warn(ctx, "device '%s' has malformed DeviceInterfaceGUID string, skipping", dev_id); - free(if_guid); - } else { - // Check if we've already seen this GUID - for (j = EXT_PASS; j < nb_guids; j++) { - if (memcmp(guid_list[j], if_guid, sizeof(*if_guid)) == 0) - break; - } - if (j == nb_guids) { - usbi_dbg("extra GUID: %s", guid_to_string(if_guid)); - guid_list[nb_guids++] = if_guid; - } else { - // Duplicate, ignore - free(if_guid); - } - } - } else if (s == ERROR_SUCCESS) { - usbi_warn(ctx, "unexpected type/size of DeviceInterfaceGUID for '%s'", dev_id); - } - break; - case HID_PASS: - api = USB_API_HID; - break; - default: - // Get the API type (after checking that the driver installation is OK) - if ((!pSetupDiGetDeviceRegistryPropertyA(*dev_info, &dev_info_data, SPDRP_INSTALL_STATE, - NULL, (PBYTE)&install_state, sizeof(install_state), &size)) || (size != sizeof(install_state))) { - usbi_warn(ctx, "could not detect installation state of driver for '%s': %s", - dev_id, windows_error_str(0)); - } else if (install_state != 0) { - usbi_warn(ctx, "driver for device '%s' is reporting an issue (code: %u) - skipping", - dev_id, (unsigned int)install_state); - continue; - } - get_api_type(ctx, dev_info, &dev_info_data, &api, &sub_api); - break; - } - - // Find parent device (for the passes that need it) - if (pass >= GEN_PASS) { - parent_dev = get_ancestor(ctx, dev_info_data.DevInst, NULL); - if (parent_dev == NULL) { - // Root hubs will not have a parent - dev = usbi_get_device_by_session_id(ctx, (unsigned long)dev_info_data.DevInst); - if (dev != NULL) { - priv = _device_priv(dev); - if (priv->root_hub) - goto track_unref; - libusb_unref_device(dev); - } - - usbi_dbg("unlisted ancestor for '%s' (non USB HID, newly connected, etc.) - ignoring", dev_id); - continue; - } - - parent_priv = _device_priv(parent_dev); - // virtual USB devices are also listed during GEN - don't process these yet - if ((pass == GEN_PASS) && (parent_priv->apib->id != USB_API_HUB)) { - libusb_unref_device(parent_dev); - continue; - } - } - - // Create new or match existing device, using the devInst as session id - if ((pass <= GEN_PASS) && (pass != HCD_PASS)) { // For subsequent passes, we'll lookup the parent - // These are the passes that create "new" devices - session_id = (unsigned long)dev_info_data.DevInst; - dev = usbi_get_device_by_session_id(ctx, session_id); - if (dev == NULL) { - alloc_device: - usbi_dbg("allocating new device for session [%lX]", session_id); - dev = usbi_alloc_device(ctx, session_id); - if (dev == NULL) - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - - priv = winusb_device_priv_init(dev); - priv->dev_id = _strdup(dev_id); - if (priv->dev_id == NULL) { - libusb_unref_device(dev); - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - } - } else { - usbi_dbg("found existing device for session [%lX]", session_id); - - priv = _device_priv(dev); - if (strcmp(priv->dev_id, dev_id) != 0) { - usbi_dbg("device instance ID for session [%lX] changed", session_id); - usbi_disconnect_device(dev); - libusb_unref_device(dev); - goto alloc_device; - } - } - - track_unref: - // Keep track of devices that need unref - if (unref_cur == unref_size) { - new_unref_list = realloc(unref_list, (unref_size + UNREF_SIZE_STEP) * sizeof(void *)); - if (new_unref_list == NULL) { - usbi_err(ctx, "could not realloc list for unref - aborting"); - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - } - unref_list = new_unref_list; - unref_size += UNREF_SIZE_STEP; - } - unref_list[unref_cur++] = dev; - } - - // Setup device - switch (pass) { - case HUB_PASS: - case DEV_PASS: - // If the device has already been setup, don't do it again - if (priv->path != NULL) - break; - // Take care of API initialization - priv->path = dev_interface_path; - dev_interface_path = NULL; - priv->apib = &usb_api_backend[api]; - priv->sub_api = sub_api; - switch (api) { - case USB_API_COMPOSITE: - case USB_API_HUB: - break; - case USB_API_HID: - priv->hid = calloc(1, sizeof(struct hid_device_priv)); - if (priv->hid == NULL) - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - break; - default: - // For other devices, the first interface is the same as the device - priv->usb_interface[0].path = _strdup(priv->path); - if (priv->usb_interface[0].path == NULL) - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - // The following is needed if we want API calls to work for both simple - // and composite devices. - for (j = 0; j < USB_MAXINTERFACES; j++) - priv->usb_interface[j].apib = &usb_api_backend[api]; - break; - } - break; - case HCD_PASS: - r = enumerate_hcd_root_hub(ctx, dev_id, (uint8_t)(i + 1), dev_info_data.DevInst); - break; - case GEN_PASS: - // The SPDRP_ADDRESS for USB devices is the device port number on the hub - port_nr = 0; - if (!pSetupDiGetDeviceRegistryPropertyA(*dev_info, &dev_info_data, SPDRP_ADDRESS, - NULL, (PBYTE)&port_nr, sizeof(port_nr), &size) || (size != sizeof(port_nr))) - usbi_warn(ctx, "could not retrieve port number for device '%s': %s", dev_id, windows_error_str(0)); - r = init_device(dev, parent_dev, (uint8_t)port_nr, dev_info_data.DevInst); - if (r == LIBUSB_SUCCESS) { - // Append device to the list of discovered devices - discdevs = discovered_devs_append(*_discdevs, dev); - if (!discdevs) - LOOP_BREAK(LIBUSB_ERROR_NO_MEM); - - *_discdevs = discdevs; - } else if (r == LIBUSB_ERROR_NO_DEVICE) { - // This can occur if the device was disconnected but Windows hasn't - // refreshed its enumeration yet - in that case, we ignore the device - r = LIBUSB_SUCCESS; - } - break; - default: // HID_PASS and later - if (parent_priv->apib->id == USB_API_HID || parent_priv->apib->id == USB_API_COMPOSITE) { - if (parent_priv->apib->id == USB_API_HID) { - usbi_dbg("setting HID interface for [%lX]:", parent_dev->session_data); - r = set_hid_interface(ctx, parent_dev, dev_interface_path); - } else { - usbi_dbg("setting composite interface for [%lX]:", parent_dev->session_data); - r = set_composite_interface(ctx, parent_dev, dev_interface_path, dev_id, api, sub_api); - } - switch (r) { - case LIBUSB_SUCCESS: - dev_interface_path = NULL; - break; - case LIBUSB_ERROR_ACCESS: - // interface has already been set => make sure dev_interface_path is freed then - r = LIBUSB_SUCCESS; - break; - default: - LOOP_BREAK(r); - break; - } - } - libusb_unref_device(parent_dev); - break; - } - } - } - - pSetupDiDestroyDeviceInfoList(dev_info_intf); - - // Free any additional GUIDs - for (pass = EXT_PASS; pass < nb_guids; pass++) - free((void *)guid_list[pass]); - free((void *)guid_list); - - // Free any PnP enumerator strings - for (i = 1; i < nb_usb_enumerators; i++) - free(usb_enumerator[i]); - - // Unref newly allocated devs - for (i = 0; i < unref_cur; i++) - libusb_unref_device(unref_list[i]); - free(unref_list); - - return r; -} - -static int winusb_get_device_descriptor(struct libusb_device *dev, unsigned char *buffer) -{ - struct winusb_device_priv *priv = _device_priv(dev); - - memcpy(buffer, &priv->dev_descriptor, DEVICE_DESC_LENGTH); - return LIBUSB_SUCCESS; -} - -static int winusb_get_config_descriptor(struct libusb_device *dev, uint8_t config_index, unsigned char *buffer, size_t len) -{ - struct winusb_device_priv *priv = _device_priv(dev); - PUSB_CONFIGURATION_DESCRIPTOR config_header; - size_t size; - - // config index is zero based - if (config_index >= dev->num_configurations) - return LIBUSB_ERROR_INVALID_PARAM; - - if ((priv->config_descriptor == NULL) || (priv->config_descriptor[config_index] == NULL)) - return LIBUSB_ERROR_NOT_FOUND; - - config_header = priv->config_descriptor[config_index]; - - size = MIN(config_header->wTotalLength, len); - memcpy(buffer, priv->config_descriptor[config_index], size); - return (int)size; -} - -static int winusb_get_config_descriptor_by_value(struct libusb_device *dev, uint8_t bConfigurationValue, - unsigned char **buffer) -{ - struct winusb_device_priv *priv = _device_priv(dev); - PUSB_CONFIGURATION_DESCRIPTOR config_header; - uint8_t index; - - if (priv->config_descriptor == NULL) - return LIBUSB_ERROR_NOT_FOUND; - - for (index = 0; index < dev->num_configurations; index++) { - config_header = priv->config_descriptor[index]; - if (config_header == NULL) - continue; - if (config_header->bConfigurationValue == bConfigurationValue) { - *buffer = (unsigned char *)priv->config_descriptor[index]; - return (int)config_header->wTotalLength; - } - } - - return LIBUSB_ERROR_NOT_FOUND; -} - -/* - * return the cached copy of the active config descriptor - */ -static int winusb_get_active_config_descriptor(struct libusb_device *dev, unsigned char *buffer, size_t len) -{ - struct winusb_device_priv *priv = _device_priv(dev); - unsigned char *config_desc; - int r; - - if (priv->active_config == 0) - return LIBUSB_ERROR_NOT_FOUND; - - r = winusb_get_config_descriptor_by_value(dev, priv->active_config, &config_desc); - if (r < 0) - return r; - - len = MIN((size_t)r, len); - memcpy(buffer, config_desc, len); - return (int)len; -} - -static int winusb_open(struct libusb_device_handle *dev_handle) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - - CHECK_SUPPORTED_API(priv->apib, open); - - return priv->apib->open(SUB_API_NOTSET, dev_handle); -} - -static void winusb_close(struct libusb_device_handle *dev_handle) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - - if (priv->apib->close) - priv->apib->close(SUB_API_NOTSET, dev_handle); -} - -static int winusb_get_configuration(struct libusb_device_handle *dev_handle, int *config) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - - if (priv->active_config == 0) { - *config = 0; - return LIBUSB_ERROR_NOT_FOUND; - } - - *config = priv->active_config; - return LIBUSB_SUCCESS; -} - -/* - * from http://msdn.microsoft.com/en-us/library/ms793522.aspx: "The port driver - * does not currently expose a service that allows higher-level drivers to set - * the configuration." - */ -static int winusb_set_configuration(struct libusb_device_handle *dev_handle, int config) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - int r = LIBUSB_SUCCESS; - - if (config >= USB_MAXCONFIG) - return LIBUSB_ERROR_INVALID_PARAM; - - r = libusb_control_transfer(dev_handle, LIBUSB_ENDPOINT_OUT | - LIBUSB_REQUEST_TYPE_STANDARD | LIBUSB_RECIPIENT_DEVICE, - LIBUSB_REQUEST_SET_CONFIGURATION, (uint16_t)config, - 0, NULL, 0, 1000); - - if (r == LIBUSB_SUCCESS) - priv->active_config = (uint8_t)config; - - return r; -} - -static int winusb_claim_interface(struct libusb_device_handle *dev_handle, int iface) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - int r; - - CHECK_SUPPORTED_API(priv->apib, claim_interface); - - safe_free(priv->usb_interface[iface].endpoint); - priv->usb_interface[iface].nb_endpoints = 0; - - r = priv->apib->claim_interface(SUB_API_NOTSET, dev_handle, iface); - - if (r == LIBUSB_SUCCESS) - r = windows_assign_endpoints(dev_handle, iface, 0); - - return r; -} - -static int winusb_set_interface_altsetting(struct libusb_device_handle *dev_handle, int iface, int altsetting) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - int r; - - CHECK_SUPPORTED_API(priv->apib, set_interface_altsetting); - - safe_free(priv->usb_interface[iface].endpoint); - priv->usb_interface[iface].nb_endpoints = 0; - - r = priv->apib->set_interface_altsetting(SUB_API_NOTSET, dev_handle, iface, altsetting); - - if (r == LIBUSB_SUCCESS) - r = windows_assign_endpoints(dev_handle, iface, altsetting); - - return r; -} - -static int winusb_release_interface(struct libusb_device_handle *dev_handle, int iface) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - - CHECK_SUPPORTED_API(priv->apib, release_interface); - - return priv->apib->release_interface(SUB_API_NOTSET, dev_handle, iface); -} - -static int winusb_clear_halt(struct libusb_device_handle *dev_handle, unsigned char endpoint) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - - CHECK_SUPPORTED_API(priv->apib, clear_halt); - - return priv->apib->clear_halt(SUB_API_NOTSET, dev_handle, endpoint); -} - -static int winusb_reset_device(struct libusb_device_handle *dev_handle) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - - CHECK_SUPPORTED_API(priv->apib, reset_device); - - return priv->apib->reset_device(SUB_API_NOTSET, dev_handle); -} - -static void winusb_destroy_device(struct libusb_device *dev) -{ - winusb_device_priv_release(dev); -} - -static void winusb_clear_transfer_priv(struct usbi_transfer *itransfer) -{ - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int sub_api = priv->sub_api; - - usbi_close(transfer_priv->pollable_fd.fd); - transfer_priv->pollable_fd = INVALID_WINFD; - transfer_priv->handle = NULL; - safe_free(transfer_priv->hid_buffer); - - if (transfer->type == LIBUSB_TRANSFER_TYPE_ISOCHRONOUS && sub_api == SUB_API_WINUSB) { - if (transfer_priv->isoch_buffer_handle != NULL) { - if (WinUSBX[sub_api].UnregisterIsochBuffer(transfer_priv->isoch_buffer_handle)) { - transfer_priv->isoch_buffer_handle = NULL; - } else { - usbi_dbg("Couldn't unregister isoch buffer!"); - } - } - } - - safe_free(transfer_priv->iso_context); - - // When auto claim is in use, attempt to release the auto-claimed interface - auto_release(itransfer); -} - -static int do_submit_transfer(struct usbi_transfer *itransfer, short events, - int (*transfer_fn)(int, struct usbi_transfer *)) -{ - struct libusb_context *ctx = ITRANSFER_CTX(itransfer); - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct winfd wfd; - int r; - - wfd = usbi_create_fd(); - if (wfd.fd < 0) - return LIBUSB_ERROR_NO_MEM; - - r = usbi_add_pollfd(ctx, wfd.fd, events); - if (r) { - usbi_close(wfd.fd); - return r; - } - - // Use transfer_priv to store data needed for async polling - transfer_priv->pollable_fd = wfd; - - r = transfer_fn(SUB_API_NOTSET, itransfer); - - if ((r != LIBUSB_SUCCESS) && (r != LIBUSB_ERROR_OVERFLOW)) { - usbi_remove_pollfd(ctx, wfd.fd); - usbi_close(wfd.fd); - transfer_priv->pollable_fd = INVALID_WINFD; - } - - return r; -} - -static int winusb_submit_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int (*transfer_fn)(int, struct usbi_transfer *); - short events; - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - events = (transfer->buffer[0] & LIBUSB_ENDPOINT_IN) ? POLLIN : POLLOUT; - transfer_fn = priv->apib->submit_control_transfer; - break; - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - if (IS_XFEROUT(transfer) && (transfer->flags & LIBUSB_TRANSFER_ADD_ZERO_PACKET)) - return LIBUSB_ERROR_NOT_SUPPORTED; - events = IS_XFERIN(transfer) ? POLLIN : POLLOUT; - transfer_fn = priv->apib->submit_bulk_transfer; - break; - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - events = IS_XFERIN(transfer) ? POLLIN : POLLOUT; - transfer_fn = priv->apib->submit_iso_transfer; - break; - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - return LIBUSB_ERROR_NOT_SUPPORTED; - default: - usbi_err(TRANSFER_CTX(transfer), "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } - - if (transfer_fn == NULL) { - usbi_warn(TRANSFER_CTX(transfer), - "unsupported transfer type %d (unrecognized device driver)", - transfer->type); - return LIBUSB_ERROR_NOT_SUPPORTED; - } - - return do_submit_transfer(itransfer, events, transfer_fn); -} - -static int windows_abort_control(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - - CHECK_SUPPORTED_API(priv->apib, abort_control); - - return priv->apib->abort_control(SUB_API_NOTSET, itransfer); -} - -static int windows_abort_transfers(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - - CHECK_SUPPORTED_API(priv->apib, abort_transfers); - - return priv->apib->abort_transfers(SUB_API_NOTSET, itransfer); -} - -static int winusb_cancel_transfer(struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - - switch (transfer->type) { - case LIBUSB_TRANSFER_TYPE_CONTROL: - return windows_abort_control(itransfer); - case LIBUSB_TRANSFER_TYPE_BULK: - case LIBUSB_TRANSFER_TYPE_INTERRUPT: - case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: - return windows_abort_transfers(itransfer); - case LIBUSB_TRANSFER_TYPE_BULK_STREAM: - return LIBUSB_ERROR_NOT_SUPPORTED; - default: - usbi_err(ITRANSFER_CTX(itransfer), "unknown endpoint type %d", transfer->type); - return LIBUSB_ERROR_INVALID_PARAM; - } -} - -static int winusb_copy_transfer_data(struct usbi_transfer *itransfer, uint32_t io_size) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - return priv->apib->copy_transfer_data(SUB_API_NOTSET, itransfer, io_size); -} - -static int winusb_get_transfer_fd(struct usbi_transfer *itransfer) -{ - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - return transfer_priv->pollable_fd.fd; -} - -static void winusb_get_overlapped_result(struct usbi_transfer *itransfer, - DWORD *io_result, DWORD *io_size) -{ - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct winfd *pollable_fd = &transfer_priv->pollable_fd; - - if (HasOverlappedIoCompletedSync(pollable_fd->overlapped)) { - *io_result = NO_ERROR; - *io_size = (DWORD)pollable_fd->overlapped->InternalHigh; - } else if (GetOverlappedResult(transfer_priv->handle, pollable_fd->overlapped, io_size, FALSE)) { - // Regular async overlapped - *io_result = NO_ERROR; - } else { - *io_result = GetLastError(); - } -} - -// NB: MSVC6 does not support named initializers. -const struct windows_backend winusb_backend = { - winusb_init, - winusb_exit, - winusb_get_device_list, - winusb_open, - winusb_close, - winusb_get_device_descriptor, - winusb_get_active_config_descriptor, - winusb_get_config_descriptor, - winusb_get_config_descriptor_by_value, - winusb_get_configuration, - winusb_set_configuration, - winusb_claim_interface, - winusb_release_interface, - winusb_set_interface_altsetting, - winusb_clear_halt, - winusb_reset_device, - winusb_destroy_device, - winusb_submit_transfer, - winusb_cancel_transfer, - winusb_clear_transfer_priv, - winusb_copy_transfer_data, - winusb_get_transfer_fd, - winusb_get_overlapped_result, -}; - -/* - * USB API backends - */ - -static const char * const composite_driver_names[] = {"USBCCGP"}; -static const char * const winusbx_driver_names[] = {"libusbK", "libusb0", "WinUSB"}; -static const char * const hid_driver_names[] = {"HIDUSB", "MOUHID", "KBDHID"}; -const struct windows_usb_api_backend usb_api_backend[USB_API_MAX] = { - { - USB_API_UNSUPPORTED, - "Unsupported API", - // No supported operations - }, - { - USB_API_HUB, - "HUB API", - // No supported operations - }, - { - USB_API_COMPOSITE, - "Composite API", - composite_driver_names, - ARRAYSIZE(composite_driver_names), - NULL, /* init */ - NULL, /* exit */ - composite_open, - composite_close, - NULL, /* configure_endpoints */ - composite_claim_interface, - composite_set_interface_altsetting, - composite_release_interface, - composite_clear_halt, - composite_reset_device, - composite_submit_bulk_transfer, - composite_submit_iso_transfer, - composite_submit_control_transfer, - composite_abort_control, - composite_abort_transfers, - composite_copy_transfer_data, - }, - { - USB_API_WINUSBX, - "WinUSB-like APIs", - winusbx_driver_names, - ARRAYSIZE(winusbx_driver_names), - winusbx_init, - winusbx_exit, - winusbx_open, - winusbx_close, - winusbx_configure_endpoints, - winusbx_claim_interface, - winusbx_set_interface_altsetting, - winusbx_release_interface, - winusbx_clear_halt, - winusbx_reset_device, - winusbx_submit_bulk_transfer, - winusbx_submit_iso_transfer, - winusbx_submit_control_transfer, - winusbx_abort_control, - winusbx_abort_transfers, - winusbx_copy_transfer_data, - }, - { - USB_API_HID, - "HID API", - hid_driver_names, - ARRAYSIZE(hid_driver_names), - hid_init, - hid_exit, - hid_open, - hid_close, - NULL, /* configure_endpoints */ - hid_claim_interface, - hid_set_interface_altsetting, - hid_release_interface, - hid_clear_halt, - hid_reset_device, - hid_submit_bulk_transfer, - NULL, /* submit_iso_transfer */ - hid_submit_control_transfer, - hid_abort_transfers, - hid_abort_transfers, - hid_copy_transfer_data, - }, -}; - - -/* - * WinUSB-like (WinUSB, libusb0/libusbK through libusbk DLL) API functions - */ -#define WinUSBX_Set(fn) \ - do { \ - if (native_winusb) \ - WinUSBX[i].fn = (WinUsb_##fn##_t)GetProcAddress(h, "WinUsb_" #fn); \ - else \ - pLibK_GetProcAddress((PVOID *)&WinUSBX[i].fn, i, KUSB_FNID_##fn); \ - } while (0) - -#define NativeWinUSBOnly_Set(fn) \ - do { \ - if (native_winusb) \ - WinUSBX[i].fn = (WinUsb_##fn##_t)GetProcAddress(h, "WinUsb_" #fn); \ - else \ - WinUSBX[i].fn = NULL; \ - } while (0) - -static int winusbx_init(struct libusb_context *ctx) -{ - HMODULE h; - bool native_winusb; - int i; - KLIB_VERSION LibK_Version; - LibK_GetProcAddress_t pLibK_GetProcAddress = NULL; - LibK_GetVersion_t pLibK_GetVersion; - - h = LoadLibraryA("libusbK"); - - if (h == NULL) { - usbi_info(ctx, "libusbK DLL is not available, will use native WinUSB"); - h = LoadLibraryA("WinUSB"); - - if (h == NULL) { - usbi_warn(ctx, "WinUSB DLL is not available either, " - "you will not be able to access devices outside of enumeration"); - return LIBUSB_ERROR_NOT_FOUND; - } - } else { - usbi_dbg("using libusbK DLL for universal access"); - pLibK_GetVersion = (LibK_GetVersion_t)GetProcAddress(h, "LibK_GetVersion"); - if (pLibK_GetVersion != NULL) { - pLibK_GetVersion(&LibK_Version); - usbi_dbg("libusbK version: %d.%d.%d.%d", LibK_Version.Major, LibK_Version.Minor, - LibK_Version.Micro, LibK_Version.Nano); - } - pLibK_GetProcAddress = (LibK_GetProcAddress_t)GetProcAddress(h, "LibK_GetProcAddress"); - if (pLibK_GetProcAddress == NULL) { - usbi_err(ctx, "LibK_GetProcAddress() not found in libusbK DLL"); - FreeLibrary(h); - return LIBUSB_ERROR_NOT_FOUND; - } - } - - native_winusb = (pLibK_GetProcAddress == NULL); - for (i = 0; i < SUB_API_MAX; i++) { - WinUSBX_Set(AbortPipe); - WinUSBX_Set(ControlTransfer); - WinUSBX_Set(FlushPipe); - WinUSBX_Set(Free); - WinUSBX_Set(GetAssociatedInterface); - WinUSBX_Set(Initialize); - WinUSBX_Set(ReadPipe); - if (!native_winusb) - WinUSBX_Set(ResetDevice); - WinUSBX_Set(ResetPipe); - WinUSBX_Set(SetCurrentAlternateSetting); - WinUSBX_Set(SetPipePolicy); - WinUSBX_Set(WritePipe); - WinUSBX_Set(IsoReadPipe); - WinUSBX_Set(IsoWritePipe); - NativeWinUSBOnly_Set(RegisterIsochBuffer); - NativeWinUSBOnly_Set(UnregisterIsochBuffer); - NativeWinUSBOnly_Set(WriteIsochPipeAsap); - NativeWinUSBOnly_Set(ReadIsochPipeAsap); - NativeWinUSBOnly_Set(QueryPipeEx); - - if (WinUSBX[i].Initialize != NULL) { - WinUSBX[i].initialized = true; - // Assume driver supports CancelIoEx() if it is available - WinUSBX[i].CancelIoEx_supported = (pCancelIoEx != NULL); - usbi_dbg("initalized sub API %s", winusbx_driver_names[i]); - } else { - usbi_warn(ctx, "Failed to initalize sub API %s", winusbx_driver_names[i]); - WinUSBX[i].initialized = false; - } - } - - WinUSBX_handle = h; - return LIBUSB_SUCCESS; -} - -static void winusbx_exit(void) -{ - if (WinUSBX_handle != NULL) { - FreeLibrary(WinUSBX_handle); - WinUSBX_handle = NULL; - - /* Reset the WinUSBX API structures */ - memset(&WinUSBX, 0, sizeof(WinUSBX)); - } -} - -// NB: open and close must ensure that they only handle interface of -// the right API type, as these functions can be called wholesale from -// composite_open(), with interfaces belonging to different APIs -static int winusbx_open(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - HANDLE file_handle; - int i; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - // WinUSB requires a separate handle for each interface - for (i = 0; i < USB_MAXINTERFACES; i++) { - if ((priv->usb_interface[i].path != NULL) - && (priv->usb_interface[i].apib->id == USB_API_WINUSBX)) { - file_handle = CreateFileA(priv->usb_interface[i].path, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, - NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL); - if (file_handle == INVALID_HANDLE_VALUE) { - usbi_err(ctx, "could not open device %s (interface %d): %s", priv->usb_interface[i].path, i, windows_error_str(0)); - switch (GetLastError()) { - case ERROR_FILE_NOT_FOUND: // The device was disconnected - return LIBUSB_ERROR_NO_DEVICE; - case ERROR_ACCESS_DENIED: - return LIBUSB_ERROR_ACCESS; - default: - return LIBUSB_ERROR_IO; - } - } - handle_priv->interface_handle[i].dev_handle = file_handle; - } - } - - return LIBUSB_SUCCESS; -} - -static void winusbx_close(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE handle; - int i; - - if (sub_api == SUB_API_NOTSET) - sub_api = priv->sub_api; - - if (!WinUSBX[sub_api].initialized) - return; - - if (priv->apib->id == USB_API_COMPOSITE) { - // If this is a composite device, just free and close all WinUSB-like - // interfaces directly (each is independent and not associated with another) - for (i = 0; i < USB_MAXINTERFACES; i++) { - if (priv->usb_interface[i].apib->id == USB_API_WINUSBX) { - handle = handle_priv->interface_handle[i].api_handle; - if (HANDLE_VALID(handle)) - WinUSBX[sub_api].Free(handle); - - handle = handle_priv->interface_handle[i].dev_handle; - if (HANDLE_VALID(handle)) - CloseHandle(handle); - } - } - } else { - // If this is a WinUSB device, free all interfaces above interface 0, - // then free and close interface 0 last - for (i = 1; i < USB_MAXINTERFACES; i++) { - handle = handle_priv->interface_handle[i].api_handle; - if (HANDLE_VALID(handle)) - WinUSBX[sub_api].Free(handle); - } - handle = handle_priv->interface_handle[0].api_handle; - if (HANDLE_VALID(handle)) - WinUSBX[sub_api].Free(handle); - - handle = handle_priv->interface_handle[0].dev_handle; - if (HANDLE_VALID(handle)) - CloseHandle(handle); - } -} - -static int winusbx_configure_endpoints(int sub_api, struct libusb_device_handle *dev_handle, int iface) -{ - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE winusb_handle = handle_priv->interface_handle[iface].api_handle; - UCHAR policy; - ULONG timeout = 0; - uint8_t endpoint_address; - int i; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - // With handle and enpoints set (in parent), we can setup the default pipe properties - // see http://download.microsoft.com/download/D/1/D/D1DD7745-426B-4CC3-A269-ABBBE427C0EF/DVC-T705_DDC08.pptx - for (i = -1; i < priv->usb_interface[iface].nb_endpoints; i++) { - endpoint_address = (i == -1) ? 0 : priv->usb_interface[iface].endpoint[i]; - if (!WinUSBX[sub_api].SetPipePolicy(winusb_handle, endpoint_address, - PIPE_TRANSFER_TIMEOUT, sizeof(ULONG), &timeout)) - usbi_dbg("failed to set PIPE_TRANSFER_TIMEOUT for control endpoint %02X", endpoint_address); - - if ((i == -1) || (sub_api == SUB_API_LIBUSB0)) - continue; // Other policies don't apply to control endpoint or libusb0 - - policy = false; - if (!WinUSBX[sub_api].SetPipePolicy(winusb_handle, endpoint_address, - SHORT_PACKET_TERMINATE, sizeof(UCHAR), &policy)) - usbi_dbg("failed to disable SHORT_PACKET_TERMINATE for endpoint %02X", endpoint_address); - - if (!WinUSBX[sub_api].SetPipePolicy(winusb_handle, endpoint_address, - IGNORE_SHORT_PACKETS, sizeof(UCHAR), &policy)) - usbi_dbg("failed to disable IGNORE_SHORT_PACKETS for endpoint %02X", endpoint_address); - - policy = true; - /* ALLOW_PARTIAL_READS must be enabled due to likely libusbK bug. See: - https://sourceforge.net/mailarchive/message.php?msg_id=29736015 */ - if (!WinUSBX[sub_api].SetPipePolicy(winusb_handle, endpoint_address, - ALLOW_PARTIAL_READS, sizeof(UCHAR), &policy)) - usbi_dbg("failed to enable ALLOW_PARTIAL_READS for endpoint %02X", endpoint_address); - - if (!WinUSBX[sub_api].SetPipePolicy(winusb_handle, endpoint_address, - AUTO_CLEAR_STALL, sizeof(UCHAR), &policy)) - usbi_dbg("failed to enable AUTO_CLEAR_STALL for endpoint %02X", endpoint_address); - - if (sub_api == SUB_API_LIBUSBK) { - if (!WinUSBX[sub_api].SetPipePolicy(winusb_handle, endpoint_address, - ISO_ALWAYS_START_ASAP, sizeof(UCHAR), &policy)) - usbi_dbg("failed to enable ISO_ALWAYS_START_ASAP for endpoint %02X", endpoint_address); - } - } - - return LIBUSB_SUCCESS; -} - -static int winusbx_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - bool is_using_usbccgp = (priv->apib->id == USB_API_COMPOSITE); - SP_DEVICE_INTERFACE_DETAIL_DATA_A *dev_interface_details = NULL; - HDEVINFO dev_info = INVALID_HANDLE_VALUE; - SP_DEVINFO_DATA dev_info_data; - char *dev_path_no_guid = NULL; - char filter_path[] = "\\\\.\\libusb0-0000"; - bool found_filter = false; - HANDLE file_handle, winusb_handle; - DWORD err; - int i; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - // If the device is composite, but using the default Windows composite parent driver (usbccgp) - // or if it's the first WinUSB-like interface, we get a handle through Initialize(). - if ((is_using_usbccgp) || (iface == 0)) { - // composite device (independent interfaces) or interface 0 - file_handle = handle_priv->interface_handle[iface].dev_handle; - if (!HANDLE_VALID(file_handle)) - return LIBUSB_ERROR_NOT_FOUND; - - if (!WinUSBX[sub_api].Initialize(file_handle, &winusb_handle)) { - handle_priv->interface_handle[iface].api_handle = INVALID_HANDLE_VALUE; - err = GetLastError(); - switch (err) { - case ERROR_BAD_COMMAND: - // The device was disconnected - usbi_err(ctx, "could not access interface %d: %s", iface, windows_error_str(0)); - return LIBUSB_ERROR_NO_DEVICE; - default: - // it may be that we're using the libusb0 filter driver. - // TODO: can we move this whole business into the K/0 DLL? - for (i = 0; ; i++) { - safe_free(dev_interface_details); - safe_free(dev_path_no_guid); - - dev_interface_details = get_interface_details_filter(ctx, &dev_info, &dev_info_data, &GUID_DEVINTERFACE_LIBUSB0_FILTER, i, filter_path); - if ((found_filter) || (dev_interface_details == NULL)) - break; - - // ignore GUID part - dev_path_no_guid = sanitize_path(strtok(dev_interface_details->DevicePath, "{")); - if (dev_path_no_guid == NULL) - continue; - - if (strncmp(dev_path_no_guid, priv->usb_interface[iface].path, strlen(dev_path_no_guid)) == 0) { - file_handle = CreateFileA(filter_path, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, - NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL); - if (file_handle != INVALID_HANDLE_VALUE) { - if (WinUSBX[sub_api].Initialize(file_handle, &winusb_handle)) { - // Replace the existing file handle with the working one - CloseHandle(handle_priv->interface_handle[iface].dev_handle); - handle_priv->interface_handle[iface].dev_handle = file_handle; - found_filter = true; - } else { - usbi_err(ctx, "could not initialize filter driver for %s", filter_path); - CloseHandle(file_handle); - } - } else { - usbi_err(ctx, "could not open device %s: %s", filter_path, windows_error_str(0)); - } - } - } - free(dev_interface_details); - if (!found_filter) { - usbi_err(ctx, "could not access interface %d: %s", iface, windows_error_str(err)); - return LIBUSB_ERROR_ACCESS; - } - } - } - handle_priv->interface_handle[iface].api_handle = winusb_handle; - } else { - // For all other interfaces, use GetAssociatedInterface() - winusb_handle = handle_priv->interface_handle[0].api_handle; - // It is a requirement for multiple interface devices on Windows that, to you - // must first claim the first interface before you claim the others - if (!HANDLE_VALID(winusb_handle)) { - file_handle = handle_priv->interface_handle[0].dev_handle; - if (WinUSBX[sub_api].Initialize(file_handle, &winusb_handle)) { - handle_priv->interface_handle[0].api_handle = winusb_handle; - usbi_warn(ctx, "auto-claimed interface 0 (required to claim %d with WinUSB)", iface); - } else { - usbi_warn(ctx, "failed to auto-claim interface 0 (required to claim %d with WinUSB): %s", iface, windows_error_str(0)); - return LIBUSB_ERROR_ACCESS; - } - } - if (!WinUSBX[sub_api].GetAssociatedInterface(winusb_handle, (UCHAR)(iface - 1), - &handle_priv->interface_handle[iface].api_handle)) { - handle_priv->interface_handle[iface].api_handle = INVALID_HANDLE_VALUE; - switch (GetLastError()) { - case ERROR_NO_MORE_ITEMS: // invalid iface - return LIBUSB_ERROR_NOT_FOUND; - case ERROR_BAD_COMMAND: // The device was disconnected - return LIBUSB_ERROR_NO_DEVICE; - case ERROR_ALREADY_EXISTS: // already claimed - return LIBUSB_ERROR_BUSY; - default: - usbi_err(ctx, "could not claim interface %d: %s", iface, windows_error_str(0)); - return LIBUSB_ERROR_ACCESS; - } - } - handle_priv->interface_handle[iface].dev_handle = handle_priv->interface_handle[0].dev_handle; - } - usbi_dbg("claimed interface %d", iface); - handle_priv->active_interface = iface; - - return LIBUSB_SUCCESS; -} - -static int winusbx_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface) -{ - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE winusb_handle; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - winusb_handle = handle_priv->interface_handle[iface].api_handle; - if (!HANDLE_VALID(winusb_handle)) - return LIBUSB_ERROR_NOT_FOUND; - - WinUSBX[sub_api].Free(winusb_handle); - handle_priv->interface_handle[iface].api_handle = INVALID_HANDLE_VALUE; - - return LIBUSB_SUCCESS; -} - -/* - * Return the first valid interface (of the same API type), for control transfers - */ -static int get_valid_interface(struct libusb_device_handle *dev_handle, int api_id) -{ - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - int i; - - if ((api_id < USB_API_WINUSBX) || (api_id > USB_API_HID)) { - usbi_dbg("unsupported API ID"); - return -1; - } - - for (i = 0; i < USB_MAXINTERFACES; i++) { - if (HANDLE_VALID(handle_priv->interface_handle[i].dev_handle) - && HANDLE_VALID(handle_priv->interface_handle[i].api_handle) - && (priv->usb_interface[i].apib->id == api_id)) - return i; - } - - return -1; -} - -/* -* Check a specific interface is valid (of the same API type), for control transfers -*/ -static int check_valid_interface(struct libusb_device_handle *dev_handle, unsigned short interface, int api_id) -{ - if (interface >= USB_MAXINTERFACES) - return -1; - - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - - if ((api_id < USB_API_WINUSBX) || (api_id > USB_API_HID)) { - usbi_dbg("unsupported API ID"); - return -1; - } - - // try the requested interface - if (HANDLE_VALID(handle_priv->interface_handle[interface].dev_handle) - && HANDLE_VALID(handle_priv->interface_handle[interface].api_handle) - && (priv->usb_interface[interface].apib->id == api_id)) - return interface; - - return -1; -} - -/* - * Lookup interface by endpoint address. -1 if not found - */ -static int interface_by_endpoint(struct winusb_device_priv *priv, - struct winusb_device_handle_priv *handle_priv, uint8_t endpoint_address) -{ - int i, j; - - for (i = 0; i < USB_MAXINTERFACES; i++) { - if (!HANDLE_VALID(handle_priv->interface_handle[i].api_handle)) - continue; - if (priv->usb_interface[i].endpoint == NULL) - continue; - for (j = 0; j < priv->usb_interface[i].nb_endpoints; j++) { - if (priv->usb_interface[i].endpoint[j] == endpoint_address) - return i; - } - } - - return -1; -} - -static int winusbx_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - PWINUSB_SETUP_PACKET setup = (PWINUSB_SETUP_PACKET)transfer->buffer; - ULONG size; - HANDLE winusb_handle; - OVERLAPPED *overlapped; - int current_interface; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - size = transfer->length - LIBUSB_CONTROL_SETUP_SIZE; - - // Windows places upper limits on the control transfer size - // See: https://msdn.microsoft.com/en-us/library/windows/hardware/ff538112.aspx - if (size > MAX_CTRL_BUFFER_LENGTH) - return LIBUSB_ERROR_INVALID_PARAM; - - if ((setup->RequestType & 0x1F) == LIBUSB_RECIPIENT_INTERFACE) - current_interface = check_valid_interface(transfer->dev_handle, setup->Index & 0xff, USB_API_WINUSBX); - else - current_interface = get_valid_interface(transfer->dev_handle, USB_API_WINUSBX); - if (current_interface < 0) { - if (auto_claim(transfer, ¤t_interface, USB_API_WINUSBX) != LIBUSB_SUCCESS) - return LIBUSB_ERROR_NOT_FOUND; - } - - usbi_dbg("will use interface %d", current_interface); - - transfer_priv->handle = winusb_handle = handle_priv->interface_handle[current_interface].api_handle; - overlapped = transfer_priv->pollable_fd.overlapped; - - // Sending of set configuration control requests from WinUSB creates issues, except when using libusb0.sys - if (sub_api != SUB_API_LIBUSB0 - && (LIBUSB_REQ_TYPE(setup->RequestType) == LIBUSB_REQUEST_TYPE_STANDARD) - && (setup->Request == LIBUSB_REQUEST_SET_CONFIGURATION)) { - if (setup->Value != priv->active_config) { - usbi_warn(ctx, "cannot set configuration other than the default one"); - return LIBUSB_ERROR_INVALID_PARAM; - } - windows_force_sync_completion(overlapped, 0); - } else { - if (!WinUSBX[sub_api].ControlTransfer(winusb_handle, *setup, transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE, size, NULL, overlapped)) { - if (GetLastError() != ERROR_IO_PENDING) { - usbi_warn(ctx, "ControlTransfer failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_IO; - } - } else { - windows_force_sync_completion(overlapped, size); - } - } - - transfer_priv->interface_number = (uint8_t)current_interface; - - return LIBUSB_SUCCESS; -} - -static int winusbx_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE winusb_handle; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - if (altsetting > 255) - return LIBUSB_ERROR_INVALID_PARAM; - - winusb_handle = handle_priv->interface_handle[iface].api_handle; - if (!HANDLE_VALID(winusb_handle)) { - usbi_err(ctx, "interface must be claimed first"); - return LIBUSB_ERROR_NOT_FOUND; - } - - if (!WinUSBX[sub_api].SetCurrentAlternateSetting(winusb_handle, (UCHAR)altsetting)) { - usbi_err(ctx, "SetCurrentAlternateSetting failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_IO; - } - - return LIBUSB_SUCCESS; -} - -static enum libusb_transfer_status usbd_status_to_libusb_transfer_status(USBD_STATUS status) -{ - /* Based on https://msdn.microsoft.com/en-us/library/windows/hardware/ff539136(v=vs.85).aspx : - * USBD_STATUS have the most significant 4 bits indicating overall status and the rest gives the details. */ - switch (status >> 28) { - case 0x00: /* USBD_STATUS_SUCCESS */ - return LIBUSB_TRANSFER_COMPLETED; - case 0x01: /* USBD_STATUS_PENDING */ - return LIBUSB_TRANSFER_COMPLETED; - default: /* USBD_STATUS_ERROR */ - switch (status & 0x0fffffff) { - case 0xC0006000: /* USBD_STATUS_TIMEOUT */ - return LIBUSB_TRANSFER_TIMED_OUT; - case 0xC0010000: /* USBD_STATUS_CANCELED */ - return LIBUSB_TRANSFER_CANCELLED; - case 0xC0000030: /* USBD_STATUS_ENDPOINT_HALTED */ - return LIBUSB_TRANSFER_STALL; - case 0xC0007000: /* USBD_STATUS_DEVICE_GONE */ - return LIBUSB_TRANSFER_NO_DEVICE; - default: - usbi_dbg("USBD_STATUS 0x%08x translated to LIBUSB_TRANSFER_ERROR", status); - return LIBUSB_TRANSFER_ERROR; - } - } -} - -static void WINAPI winusbx_native_iso_transfer_continue_stream_callback(struct libusb_transfer *transfer) -{ - // If this callback is invoked, this means that we attempted to set ContinueStream - // to TRUE when calling Read/WriteIsochPipeAsap in winusbx_do_iso_transfer. - // The role of this callback is to fallback to ContinueStream = FALSE if the transfer - // did not succeed. - - struct winusb_transfer_priv *transfer_priv = (struct winusb_transfer_priv *) - usbi_transfer_get_os_priv(LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer)); - BOOL fallback = (transfer->status != LIBUSB_TRANSFER_COMPLETED); - int idx; - - // Restore the user callback - transfer->callback = transfer_priv->iso_user_callback; - - for (idx = 0; idx < transfer->num_iso_packets && !fallback; ++idx) { - if (transfer->iso_packet_desc[idx].status != LIBUSB_TRANSFER_COMPLETED) { - fallback = TRUE; - } - } - - if (!fallback) { - // If the transfer was successful, we restore the user callback and call it. - if (transfer->callback) { - transfer->callback(transfer); - } - } - else { - // If the transfer wasn't successful we reschedule the transfer while forcing it - // not to continue the stream. This might results in a 5-ms delay. - transfer_priv->iso_break_stream = TRUE; - libusb_submit_transfer(transfer); - } -} -static int winusbx_submit_iso_transfer(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - HANDLE winusb_handle; - OVERLAPPED *overlapped; - bool ret; - int current_interface; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - current_interface = interface_by_endpoint(priv, handle_priv, transfer->endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cancelling transfer"); - return LIBUSB_ERROR_NOT_FOUND; - } else { - usbi_dbg("matched endpoint %02X with interface %d", transfer->endpoint, current_interface); - } - - transfer_priv->handle = winusb_handle = handle_priv->interface_handle[current_interface].api_handle; - overlapped = transfer_priv->pollable_fd.overlapped; - - if ((sub_api == SUB_API_LIBUSBK) || (sub_api == SUB_API_LIBUSB0)) { - int i; - UINT offset; - size_t iso_ctx_size; - PKISO_CONTEXT iso_context; - - iso_ctx_size = sizeof(KISO_CONTEXT) + (transfer->num_iso_packets * sizeof(KISO_PACKET)); - transfer_priv->iso_context = iso_context = calloc(1, iso_ctx_size); - if (transfer_priv->iso_context == NULL) - return LIBUSB_ERROR_NO_MEM; - - // start ASAP - iso_context->StartFrame = 0; - iso_context->NumberOfPackets = (SHORT)transfer->num_iso_packets; - - // convert the transfer packet lengths to iso_packet offsets - offset = 0; - for (i = 0; i < transfer->num_iso_packets; i++) { - iso_context->IsoPackets[i].offset = offset; - offset += transfer->iso_packet_desc[i].length; - } - - if (IS_XFERIN(transfer)) { - usbi_dbg("reading %d iso packets", transfer->num_iso_packets); - ret = WinUSBX[sub_api].IsoReadPipe(winusb_handle, transfer->endpoint, transfer->buffer, transfer->length, overlapped, iso_context); - } else { - usbi_dbg("writing %d iso packets", transfer->num_iso_packets); - ret = WinUSBX[sub_api].IsoWritePipe(winusb_handle, transfer->endpoint, transfer->buffer, transfer->length, overlapped, iso_context); - } - - if (!ret) { - if (GetLastError() != ERROR_IO_PENDING) { - usbi_err(ctx, "IsoReadPipe/IsoWritePipe failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_IO; - } - } else { - windows_force_sync_completion(overlapped, (ULONG)transfer->length); - } - - transfer_priv->interface_number = (uint8_t)current_interface; - - return LIBUSB_SUCCESS; - } - else if (sub_api == SUB_API_WINUSB) { - WINUSB_PIPE_INFORMATION_EX pipe_info_ex = { 0 }; - WINUSB_ISOCH_BUFFER_HANDLE buffer_handle; - ULONG iso_transfer_size_multiple; - int out_transfer_length = 0; - int idx; - -# define WINUSBX_CHECK_API_SUPPORTED(API) \ - if (WinUSBX[sub_api].API == NULL) \ - { \ - usbi_dbg(#API " isn't available"); \ - return LIBUSB_ERROR_NOT_SUPPORTED; \ - } - - // Depending on the version of Microsoft WinUSB, isochronous transfers may not be supported. - WINUSBX_CHECK_API_SUPPORTED(RegisterIsochBuffer); - WINUSBX_CHECK_API_SUPPORTED(ReadIsochPipeAsap); - WINUSBX_CHECK_API_SUPPORTED(WriteIsochPipeAsap); - WINUSBX_CHECK_API_SUPPORTED(UnregisterIsochBuffer); - WINUSBX_CHECK_API_SUPPORTED(QueryPipeEx); - - if (sizeof(struct libusb_iso_packet_descriptor) != sizeof(USBD_ISO_PACKET_DESCRIPTOR)) { - usbi_dbg("The size of Microsoft WinUsb and libusb isochronous packet descriptor doesn't match."); - return LIBUSB_ERROR_NOT_SUPPORTED; - } - - // Query the pipe extended information to find the pipe index corresponding to the endpoint. - for (idx = 0; idx < priv->usb_interface[current_interface].nb_endpoints; ++idx) { - ret = WinUSBX[sub_api].QueryPipeEx(winusb_handle, (UINT8)priv->usb_interface[current_interface].current_altsetting, (UCHAR)idx, &pipe_info_ex); - if (!ret) { - usbi_dbg("Couldn't query interface settings for USB pipe with index %d. Error: %s", idx, windows_error_str(0)); - return LIBUSB_ERROR_NOT_FOUND; - } - - if (pipe_info_ex.PipeId == transfer->endpoint && pipe_info_ex.PipeType == UsbdPipeTypeIsochronous) { - break; - } - } - - // Make sure we found the index. - if (idx >= priv->usb_interface[current_interface].nb_endpoints) { - usbi_dbg("Couldn't find the isochronous endpoint %02x.", transfer->endpoint); - return LIBUSB_ERROR_NOT_FOUND; - } - - if (IS_XFERIN(transfer)) { - int interval = pipe_info_ex.Interval; - - // For high-speed and SuperSpeed device, the interval is 2**(bInterval-1). - if (libusb_get_device_speed(libusb_get_device(transfer->dev_handle)) >= LIBUSB_SPEED_HIGH) { - interval = (1 << (pipe_info_ex.Interval - 1)); - } - - // WinUSB only supports isochronous transfers spanning a full USB frames. Later, we might be smarter about this - // and allocate a temporary buffer. However, this is harder than it seems as its destruction would depend on overlapped - // IO... - iso_transfer_size_multiple = (pipe_info_ex.MaximumBytesPerInterval * 8) / interval; - if (transfer->length % iso_transfer_size_multiple != 0) { - usbi_dbg("The length of isochronous buffer must be a multiple of the MaximumBytesPerInterval * 8 / Interval"); - return LIBUSB_ERROR_INVALID_PARAM; - } - } - else { - // If this is an OUT transfer, we make sure the isochronous packets are contiguous as this isn't supported otherwise. - BOOL size_should_be_zero = FALSE; - out_transfer_length = 0; - for (idx = 0; idx < transfer->num_iso_packets; ++idx) { - if ((size_should_be_zero && transfer->iso_packet_desc[idx].length != 0) || - (transfer->iso_packet_desc[idx].length != pipe_info_ex.MaximumBytesPerInterval && idx + 1 < transfer->num_iso_packets && transfer->iso_packet_desc[idx + 1].length > 0)) { - usbi_dbg("Isochronous packets for OUT transfer with Microsoft WinUSB must be contiguous in memory."); - return LIBUSB_ERROR_INVALID_PARAM; - } - - size_should_be_zero = (transfer->iso_packet_desc[idx].length == 0); - out_transfer_length += transfer->iso_packet_desc[idx].length; - } - } - - if (transfer_priv->isoch_buffer_handle != NULL) { - if (WinUSBX[sub_api].UnregisterIsochBuffer(transfer_priv->isoch_buffer_handle)) { - transfer_priv->isoch_buffer_handle = NULL; - } else { - usbi_dbg("Couldn't unregister the Microsoft WinUSB isochronous buffer: %s", windows_error_str(0)); - return LIBUSB_ERROR_OTHER; - } - } - - // Register the isochronous buffer to the operating system. - ret = WinUSBX[sub_api].RegisterIsochBuffer(winusb_handle, transfer->endpoint, transfer->buffer, transfer->length, &buffer_handle); - if (!ret) { - usbi_dbg("Microsoft WinUSB refused to allocate an isochronous buffer."); - return LIBUSB_ERROR_NO_MEM; - } - - // Important note: the WinUSB_Read/WriteIsochPipeAsap API requires a ContinueStream parameter that tells whether the isochronous - // stream must be continued or if the WinUSB driver can schedule the transfer at its conveniance. Profiling subsequent transfers - // with ContinueStream = FALSE showed that 5 frames, i.e. about 5 milliseconds, were left empty between each transfer. This - // is critical as this greatly diminish the achievable isochronous bandwidth. We solved the problem using the following strategy: - // - Transfers are first scheduled with ContinueStream = TRUE and with winusbx_iso_transfer_continue_stream_callback as user callback. - // - If the transfer succeeds, winusbx_iso_transfer_continue_stream_callback restore the user callback and calls its. - // - If the transfer fails, winusbx_iso_transfer_continue_stream_callback reschedule the transfer and force ContinueStream = FALSE. - if (!transfer_priv->iso_break_stream) { - transfer_priv->iso_user_callback = transfer->callback; - transfer->callback = winusbx_native_iso_transfer_continue_stream_callback; - } - - // Initiate the transfers. - if (IS_XFERIN(transfer)) { - ret = WinUSBX[sub_api].ReadIsochPipeAsap(buffer_handle, 0, transfer->length, !transfer_priv->iso_break_stream, transfer->num_iso_packets, (PUSBD_ISO_PACKET_DESCRIPTOR)transfer->iso_packet_desc, overlapped); - } - else { - ret = WinUSBX[sub_api].WriteIsochPipeAsap(buffer_handle, 0, out_transfer_length, !transfer_priv->iso_break_stream, overlapped); - } - - // Restore the ContinueStream parameter to TRUE. - transfer_priv->iso_break_stream = FALSE; - - if (!ret) { - if (GetLastError() == ERROR_IO_PENDING) { - transfer_priv->isoch_buffer_handle = buffer_handle; - } else { - usbi_err(ctx, "ReadIsochPipeAsap/WriteIsochPipeAsap failed: %s", windows_error_str(0)); - if (WinUSBX[sub_api].UnregisterIsochBuffer(buffer_handle)) { - transfer_priv->isoch_buffer_handle = NULL; - return LIBUSB_ERROR_IO; - } else { - usbi_dbg("Couldn't unregister the Microsoft WinUSB isochronous buffer: %s", windows_error_str(0)); - return LIBUSB_ERROR_OTHER; - } - } - } else { - windows_force_sync_completion(overlapped, (ULONG)transfer->length); - if (!WinUSBX[sub_api].UnregisterIsochBuffer(buffer_handle)) { - usbi_dbg("Couldn't unregister the Microsoft WinUSB isochronous buffer: %s", windows_error_str(0)); - return LIBUSB_ERROR_OTHER; - } - } - - transfer_priv->interface_number = (uint8_t)current_interface; - - return LIBUSB_SUCCESS; - } else { - PRINT_UNSUPPORTED_API(winusbx_submit_iso_transfer); - return LIBUSB_ERROR_NOT_SUPPORTED; - } -} - -static int winusbx_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - HANDLE winusb_handle; - OVERLAPPED *overlapped; - bool ret; - int current_interface; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - current_interface = interface_by_endpoint(priv, handle_priv, transfer->endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cancelling transfer"); - return LIBUSB_ERROR_NOT_FOUND; - } - - usbi_dbg("matched endpoint %02X with interface %d", transfer->endpoint, current_interface); - - transfer_priv->handle = winusb_handle = handle_priv->interface_handle[current_interface].api_handle; - overlapped = transfer_priv->pollable_fd.overlapped; - - if (IS_XFERIN(transfer)) { - usbi_dbg("reading %d bytes", transfer->length); - ret = WinUSBX[sub_api].ReadPipe(winusb_handle, transfer->endpoint, transfer->buffer, transfer->length, NULL, overlapped); - } else { - usbi_dbg("writing %d bytes", transfer->length); - ret = WinUSBX[sub_api].WritePipe(winusb_handle, transfer->endpoint, transfer->buffer, transfer->length, NULL, overlapped); - } - - if (!ret) { - if (GetLastError() != ERROR_IO_PENDING) { - usbi_err(ctx, "ReadPipe/WritePipe failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_IO; - } - } else { - windows_force_sync_completion(overlapped, (ULONG)transfer->length); - } - - transfer_priv->interface_number = (uint8_t)current_interface; - - return LIBUSB_SUCCESS; -} - -static int winusbx_clear_halt(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE winusb_handle; - int current_interface; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - current_interface = interface_by_endpoint(priv, handle_priv, endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cannot clear"); - return LIBUSB_ERROR_NOT_FOUND; - } - - usbi_dbg("matched endpoint %02X with interface %d", endpoint, current_interface); - winusb_handle = handle_priv->interface_handle[current_interface].api_handle; - - if (!WinUSBX[sub_api].ResetPipe(winusb_handle, endpoint)) { - usbi_err(ctx, "ResetPipe failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_NO_DEVICE; - } - - return LIBUSB_SUCCESS; -} - -/* - * from http://www.winvistatips.com/winusb-bugchecks-t335323.html (confirmed - * through testing as well): - * "You can not call WinUsb_AbortPipe on control pipe. You can possibly cancel - * the control transfer using CancelIo" - */ -static int winusbx_abort_control(int sub_api, struct usbi_transfer *itransfer) -{ - // Cancelling of the I/O is done in the parent - return LIBUSB_SUCCESS; -} - -static int winusbx_abort_transfers(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - HANDLE handle; - int current_interface; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - current_interface = transfer_priv->interface_number; - if ((current_interface < 0) || (current_interface >= USB_MAXINTERFACES)) { - usbi_err(ctx, "program assertion failed: invalid interface_number"); - return LIBUSB_ERROR_NOT_FOUND; - } - usbi_dbg("will use interface %d", current_interface); - - if (WinUSBX[sub_api].CancelIoEx_supported) { - // Try to use CancelIoEx if available to cancel just a single transfer - handle = handle_priv->interface_handle[current_interface].dev_handle; - if (pCancelIoEx(handle, transfer_priv->pollable_fd.overlapped)) - return LIBUSB_SUCCESS; - else if (GetLastError() == ERROR_NOT_FOUND) - return LIBUSB_ERROR_NOT_FOUND; - - // Not every driver implements the necessary functionality for CancelIoEx - usbi_warn(ctx, "CancelIoEx not supported for sub API %s", winusbx_driver_names[sub_api]); - WinUSBX[sub_api].CancelIoEx_supported = false; - } - - handle = handle_priv->interface_handle[current_interface].api_handle; - if (!WinUSBX[sub_api].AbortPipe(handle, transfer->endpoint)) { - usbi_err(ctx, "AbortPipe failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_NO_DEVICE; - } - - return LIBUSB_SUCCESS; -} - -/* - * from the "How to Use WinUSB to Communicate with a USB Device" Microsoft white paper - * (http://www.microsoft.com/whdc/connect/usb/winusb_howto.mspx): - * "WinUSB does not support host-initiated reset port and cycle port operations" and - * IOCTL_INTERNAL_USB_CYCLE_PORT is only available in kernel mode and the - * IOCTL_USB_HUB_CYCLE_PORT ioctl was removed from Vista => the best we can do is - * cycle the pipes (and even then, the control pipe can not be reset using WinUSB) - */ -// TODO: (post hotplug): see if we can force eject the device and redetect it (reuse hotplug?) -static int winusbx_reset_device(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE winusb_handle; - int i, j; - - CHECK_WINUSBX_AVAILABLE(sub_api); - - // Reset any available pipe (except control) - for (i = 0; i < USB_MAXINTERFACES; i++) { - winusb_handle = handle_priv->interface_handle[i].api_handle; - if (HANDLE_VALID(winusb_handle)) { - for (j = 0; j < priv->usb_interface[i].nb_endpoints; j++) { - usbi_dbg("resetting ep %02X", priv->usb_interface[i].endpoint[j]); - if (!WinUSBX[sub_api].AbortPipe(winusb_handle, priv->usb_interface[i].endpoint[j])) - usbi_err(ctx, "AbortPipe (pipe address %02X) failed: %s", - priv->usb_interface[i].endpoint[j], windows_error_str(0)); - - // FlushPipe seems to fail on OUT pipes - if (IS_EPIN(priv->usb_interface[i].endpoint[j]) - && (!WinUSBX[sub_api].FlushPipe(winusb_handle, priv->usb_interface[i].endpoint[j]))) - usbi_err(ctx, "FlushPipe (pipe address %02X) failed: %s", - priv->usb_interface[i].endpoint[j], windows_error_str(0)); - - if (!WinUSBX[sub_api].ResetPipe(winusb_handle, priv->usb_interface[i].endpoint[j])) - usbi_err(ctx, "ResetPipe (pipe address %02X) failed: %s", - priv->usb_interface[i].endpoint[j], windows_error_str(0)); - } - } - } - - // libusbK & libusb0 have the ability to issue an actual device reset - if (WinUSBX[sub_api].ResetDevice != NULL) { - winusb_handle = handle_priv->interface_handle[0].api_handle; - if (HANDLE_VALID(winusb_handle)) - WinUSBX[sub_api].ResetDevice(winusb_handle); - } - - return LIBUSB_SUCCESS; -} - -static int winusbx_copy_transfer_data(int sub_api, struct usbi_transfer *itransfer, uint32_t io_size) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - PKISO_CONTEXT iso_context; - int i; - - if (transfer->type == LIBUSB_TRANSFER_TYPE_ISOCHRONOUS) { - CHECK_WINUSBX_AVAILABLE(sub_api); - - // for isochronous, need to copy the individual iso packet actual_lengths and statuses - if ((sub_api == SUB_API_LIBUSBK) || (sub_api == SUB_API_LIBUSB0)) { - // iso only supported on libusbk-based backends for now - iso_context = transfer_priv->iso_context; - for (i = 0; i < transfer->num_iso_packets; i++) { - transfer->iso_packet_desc[i].actual_length = iso_context->IsoPackets[i].actual_length; - // TODO translate USDB_STATUS codes http://msdn.microsoft.com/en-us/library/ff539136(VS.85).aspx to libusb_transfer_status - //transfer->iso_packet_desc[i].status = transfer_priv->iso_context->IsoPackets[i].status; - } - } else if (sub_api == SUB_API_WINUSB) { - if (IS_XFERIN(transfer)) { - /* Convert isochronous packet descriptor between Windows and libusb representation. - * Both representation are guaranteed to have the same length in bytes.*/ - PUSBD_ISO_PACKET_DESCRIPTOR usbd_iso_packet_desc = (PUSBD_ISO_PACKET_DESCRIPTOR)transfer->iso_packet_desc; - for (i = 0; i < transfer->num_iso_packets; ++i) - { - int length = (i < transfer->num_iso_packets - 1) ? (usbd_iso_packet_desc[i + 1].Offset - usbd_iso_packet_desc[i].Offset) : usbd_iso_packet_desc[i].Length; - int actual_length = usbd_iso_packet_desc[i].Length; - USBD_STATUS status = usbd_iso_packet_desc[i].Status; - - transfer->iso_packet_desc[i].length = length; - transfer->iso_packet_desc[i].actual_length = actual_length; - transfer->iso_packet_desc[i].status = usbd_status_to_libusb_transfer_status(status); - } - } - else { - for (i = 0; i < transfer->num_iso_packets; ++i) - { - transfer->iso_packet_desc[i].status = LIBUSB_TRANSFER_COMPLETED; - } - } - } else { - // This should only occur if backend is not set correctly or other backend isoc is partially implemented - PRINT_UNSUPPORTED_API(copy_transfer_data); - return LIBUSB_ERROR_NOT_SUPPORTED; - } - } - - itransfer->transferred += io_size; - return LIBUSB_TRANSFER_COMPLETED; -} - -/* - * Internal HID Support functions (from libusb-win32) - * Note that functions that complete data transfer synchronously must return - * LIBUSB_COMPLETED instead of LIBUSB_SUCCESS - */ -static int _hid_get_hid_descriptor(struct hid_device_priv *dev, void *data, size_t *size); -static int _hid_get_report_descriptor(struct hid_device_priv *dev, void *data, size_t *size); - -static int _hid_wcslen(WCHAR *str) -{ - int i = 0; - - while (str[i] && (str[i] != 0x409)) - i++; - - return i; -} - -static int _hid_get_device_descriptor(struct hid_device_priv *dev, void *data, size_t *size) -{ - struct libusb_device_descriptor d; - - d.bLength = LIBUSB_DT_DEVICE_SIZE; - d.bDescriptorType = LIBUSB_DT_DEVICE; - d.bcdUSB = 0x0200; /* 2.00 */ - d.bDeviceClass = 0; - d.bDeviceSubClass = 0; - d.bDeviceProtocol = 0; - d.bMaxPacketSize0 = 64; /* fix this! */ - d.idVendor = (uint16_t)dev->vid; - d.idProduct = (uint16_t)dev->pid; - d.bcdDevice = 0x0100; - d.iManufacturer = dev->string_index[0]; - d.iProduct = dev->string_index[1]; - d.iSerialNumber = dev->string_index[2]; - d.bNumConfigurations = 1; - - if (*size > LIBUSB_DT_DEVICE_SIZE) - *size = LIBUSB_DT_DEVICE_SIZE; - memcpy(data, &d, *size); - - return LIBUSB_COMPLETED; -} - -static int _hid_get_config_descriptor(struct hid_device_priv *dev, void *data, size_t *size) -{ - char num_endpoints = 0; - size_t config_total_len = 0; - char tmp[HID_MAX_CONFIG_DESC_SIZE]; - struct libusb_config_descriptor *cd; - struct libusb_interface_descriptor *id; - struct libusb_hid_descriptor *hd; - struct libusb_endpoint_descriptor *ed; - size_t tmp_size; - - if (dev->input_report_size) - num_endpoints++; - if (dev->output_report_size) - num_endpoints++; - - config_total_len = LIBUSB_DT_CONFIG_SIZE + LIBUSB_DT_INTERFACE_SIZE - + LIBUSB_DT_HID_SIZE + num_endpoints * LIBUSB_DT_ENDPOINT_SIZE; - - cd = (struct libusb_config_descriptor *)tmp; - id = (struct libusb_interface_descriptor *)(tmp + LIBUSB_DT_CONFIG_SIZE); - hd = (struct libusb_hid_descriptor *)(tmp + LIBUSB_DT_CONFIG_SIZE - + LIBUSB_DT_INTERFACE_SIZE); - ed = (struct libusb_endpoint_descriptor *)(tmp + LIBUSB_DT_CONFIG_SIZE - + LIBUSB_DT_INTERFACE_SIZE - + LIBUSB_DT_HID_SIZE); - - cd->bLength = LIBUSB_DT_CONFIG_SIZE; - cd->bDescriptorType = LIBUSB_DT_CONFIG; - cd->wTotalLength = (uint16_t)config_total_len; - cd->bNumInterfaces = 1; - cd->bConfigurationValue = 1; - cd->iConfiguration = 0; - cd->bmAttributes = 1 << 7; /* bus powered */ - cd->MaxPower = 50; - - id->bLength = LIBUSB_DT_INTERFACE_SIZE; - id->bDescriptorType = LIBUSB_DT_INTERFACE; - id->bInterfaceNumber = 0; - id->bAlternateSetting = 0; - id->bNumEndpoints = num_endpoints; - id->bInterfaceClass = 3; - id->bInterfaceSubClass = 0; - id->bInterfaceProtocol = 0; - id->iInterface = 0; - - tmp_size = LIBUSB_DT_HID_SIZE; - _hid_get_hid_descriptor(dev, hd, &tmp_size); - - if (dev->input_report_size) { - ed->bLength = LIBUSB_DT_ENDPOINT_SIZE; - ed->bDescriptorType = LIBUSB_DT_ENDPOINT; - ed->bEndpointAddress = HID_IN_EP; - ed->bmAttributes = 3; - ed->wMaxPacketSize = dev->input_report_size - 1; - ed->bInterval = 10; - ed = (struct libusb_endpoint_descriptor *)((char *)ed + LIBUSB_DT_ENDPOINT_SIZE); - } - - if (dev->output_report_size) { - ed->bLength = LIBUSB_DT_ENDPOINT_SIZE; - ed->bDescriptorType = LIBUSB_DT_ENDPOINT; - ed->bEndpointAddress = HID_OUT_EP; - ed->bmAttributes = 3; - ed->wMaxPacketSize = dev->output_report_size - 1; - ed->bInterval = 10; - } - - if (*size > config_total_len) - *size = config_total_len; - memcpy(data, tmp, *size); - - return LIBUSB_COMPLETED; -} - -static int _hid_get_string_descriptor(struct hid_device_priv *dev, int _index, - void *data, size_t *size, HANDLE hid_handle) -{ - void *tmp = NULL; - WCHAR string[MAX_USB_STRING_LENGTH]; - size_t tmp_size = 0; - int i; - - /* language ID, EN-US */ - char string_langid[] = {0x09, 0x04}; - - if ((*size < 2) || (*size > 255)) - return LIBUSB_ERROR_OVERFLOW; - - if (_index == 0) { - tmp = string_langid; - tmp_size = sizeof(string_langid) + 2; - } else { - for (i = 0; i < 3; i++) { - if (_index == (dev->string_index[i])) { - tmp = dev->string[i]; - tmp_size = (_hid_wcslen(dev->string[i]) + 1) * sizeof(WCHAR); - break; - } - } - - if (i == 3) { - if (!HidD_GetIndexedString(hid_handle, _index, string, sizeof(string))) - return LIBUSB_ERROR_INVALID_PARAM; - tmp = string; - tmp_size = (_hid_wcslen(string) + 1) * sizeof(WCHAR); - } - } - - if (!tmp_size) - return LIBUSB_ERROR_INVALID_PARAM; - - if (tmp_size < *size) - *size = tmp_size; - - // 2 byte header - ((uint8_t *)data)[0] = (uint8_t)*size; - ((uint8_t *)data)[1] = LIBUSB_DT_STRING; - memcpy((uint8_t *)data + 2, tmp, *size - 2); - - return LIBUSB_COMPLETED; -} - -static int _hid_get_hid_descriptor(struct hid_device_priv *dev, void *data, size_t *size) -{ - struct libusb_hid_descriptor d; - uint8_t tmp[MAX_HID_DESCRIPTOR_SIZE]; - size_t report_len = MAX_HID_DESCRIPTOR_SIZE; - - _hid_get_report_descriptor(dev, tmp, &report_len); - - d.bLength = LIBUSB_DT_HID_SIZE; - d.bDescriptorType = LIBUSB_DT_HID; - d.bcdHID = 0x0110; /* 1.10 */ - d.bCountryCode = 0; - d.bNumDescriptors = 1; - d.bClassDescriptorType = LIBUSB_DT_REPORT; - d.wClassDescriptorLength = (uint16_t)report_len; - - if (*size > LIBUSB_DT_HID_SIZE) - *size = LIBUSB_DT_HID_SIZE; - memcpy(data, &d, *size); - - return LIBUSB_COMPLETED; -} - -static int _hid_get_report_descriptor(struct hid_device_priv *dev, void *data, size_t *size) -{ - uint8_t d[MAX_HID_DESCRIPTOR_SIZE]; - size_t i = 0; - - /* usage page */ - d[i++] = 0x06; d[i++] = dev->usagePage & 0xFF; d[i++] = dev->usagePage >> 8; - /* usage */ - d[i++] = 0x09; d[i++] = (uint8_t)dev->usage; - /* start collection (application) */ - d[i++] = 0xA1; d[i++] = 0x01; - /* input report */ - if (dev->input_report_size) { - /* usage (vendor defined) */ - d[i++] = 0x09; d[i++] = 0x01; - /* logical minimum (0) */ - d[i++] = 0x15; d[i++] = 0x00; - /* logical maximum (255) */ - d[i++] = 0x25; d[i++] = 0xFF; - /* report size (8 bits) */ - d[i++] = 0x75; d[i++] = 0x08; - /* report count */ - d[i++] = 0x95; d[i++] = (uint8_t)dev->input_report_size - 1; - /* input (data, variable, absolute) */ - d[i++] = 0x81; d[i++] = 0x00; - } - /* output report */ - if (dev->output_report_size) { - /* usage (vendor defined) */ - d[i++] = 0x09; d[i++] = 0x02; - /* logical minimum (0) */ - d[i++] = 0x15; d[i++] = 0x00; - /* logical maximum (255) */ - d[i++] = 0x25; d[i++] = 0xFF; - /* report size (8 bits) */ - d[i++] = 0x75; d[i++] = 0x08; - /* report count */ - d[i++] = 0x95; d[i++] = (uint8_t)dev->output_report_size - 1; - /* output (data, variable, absolute) */ - d[i++] = 0x91; d[i++] = 0x00; - } - /* feature report */ - if (dev->feature_report_size) { - /* usage (vendor defined) */ - d[i++] = 0x09; d[i++] = 0x03; - /* logical minimum (0) */ - d[i++] = 0x15; d[i++] = 0x00; - /* logical maximum (255) */ - d[i++] = 0x25; d[i++] = 0xFF; - /* report size (8 bits) */ - d[i++] = 0x75; d[i++] = 0x08; - /* report count */ - d[i++] = 0x95; d[i++] = (uint8_t)dev->feature_report_size - 1; - /* feature (data, variable, absolute) */ - d[i++] = 0xb2; d[i++] = 0x02; d[i++] = 0x01; - } - - /* end collection */ - d[i++] = 0xC0; - - if (*size > i) - *size = i; - memcpy(data, d, *size); - - return LIBUSB_COMPLETED; -} - -static int _hid_get_descriptor(struct hid_device_priv *dev, HANDLE hid_handle, int recipient, - int type, int _index, void *data, size_t *size) -{ - switch (type) { - case LIBUSB_DT_DEVICE: - usbi_dbg("LIBUSB_DT_DEVICE"); - return _hid_get_device_descriptor(dev, data, size); - case LIBUSB_DT_CONFIG: - usbi_dbg("LIBUSB_DT_CONFIG"); - if (!_index) - return _hid_get_config_descriptor(dev, data, size); - return LIBUSB_ERROR_INVALID_PARAM; - case LIBUSB_DT_STRING: - usbi_dbg("LIBUSB_DT_STRING"); - return _hid_get_string_descriptor(dev, _index, data, size, hid_handle); - case LIBUSB_DT_HID: - usbi_dbg("LIBUSB_DT_HID"); - if (!_index) - return _hid_get_hid_descriptor(dev, data, size); - return LIBUSB_ERROR_INVALID_PARAM; - case LIBUSB_DT_REPORT: - usbi_dbg("LIBUSB_DT_REPORT"); - if (!_index) - return _hid_get_report_descriptor(dev, data, size); - return LIBUSB_ERROR_INVALID_PARAM; - case LIBUSB_DT_PHYSICAL: - usbi_dbg("LIBUSB_DT_PHYSICAL"); - if (HidD_GetPhysicalDescriptor(hid_handle, data, (ULONG)*size)) - return LIBUSB_COMPLETED; - return LIBUSB_ERROR_OTHER; - } - - usbi_dbg("unsupported"); - return LIBUSB_ERROR_NOT_SUPPORTED; -} - -static int _hid_get_report(struct hid_device_priv *dev, HANDLE hid_handle, int id, void *data, - struct winusb_transfer_priv *tp, size_t *size, OVERLAPPED *overlapped, int report_type) -{ - uint8_t *buf; - DWORD ioctl_code, read_size, expected_size = (DWORD)*size; - int r = LIBUSB_SUCCESS; - - if (tp->hid_buffer != NULL) - usbi_dbg("program assertion failed: hid_buffer is not NULL"); - - if ((*size == 0) || (*size > MAX_HID_REPORT_SIZE)) { - usbi_dbg("invalid size (%u)", *size); - return LIBUSB_ERROR_INVALID_PARAM; - } - - switch (report_type) { - case HID_REPORT_TYPE_INPUT: - ioctl_code = IOCTL_HID_GET_INPUT_REPORT; - break; - case HID_REPORT_TYPE_FEATURE: - ioctl_code = IOCTL_HID_GET_FEATURE; - break; - default: - usbi_dbg("unknown HID report type %d", report_type); - return LIBUSB_ERROR_INVALID_PARAM; - } - - // Add a trailing byte to detect overflows - buf = calloc(1, expected_size + 1); - if (buf == NULL) - return LIBUSB_ERROR_NO_MEM; - - buf[0] = (uint8_t)id; // Must be set always - usbi_dbg("report ID: 0x%02X", buf[0]); - - tp->hid_expected_size = expected_size; - read_size = expected_size; - - // NB: The size returned by DeviceIoControl doesn't include report IDs when not in use (0) - if (!DeviceIoControl(hid_handle, ioctl_code, buf, expected_size + 1, - buf, expected_size + 1, &read_size, overlapped)) { - if (GetLastError() != ERROR_IO_PENDING) { - usbi_dbg("Failed to Read HID Report: %s", windows_error_str(0)); - free(buf); - return LIBUSB_ERROR_IO; - } - // Asynchronous wait - tp->hid_buffer = buf; - tp->hid_dest = data; // copy dest, as not necessarily the start of the transfer buffer - return LIBUSB_SUCCESS; - } - - // Transfer completed synchronously => copy and discard extra buffer - if (read_size == 0) { - usbi_warn(NULL, "program assertion failed - read completed synchronously, but no data was read"); - *size = 0; - } else { - if (buf[0] != id) - usbi_warn(NULL, "mismatched report ID (data is %02X, parameter is %02X)", buf[0], id); - - if ((size_t)read_size > expected_size) { - r = LIBUSB_ERROR_OVERFLOW; - usbi_dbg("OVERFLOW!"); - } else { - r = LIBUSB_COMPLETED; - } - - *size = MIN((size_t)read_size, *size); - if (id == 0) - memcpy(data, buf + 1, *size); // Discard report ID - else - memcpy(data, buf, *size); - } - - free(buf); - return r; -} - -static int _hid_set_report(struct hid_device_priv *dev, HANDLE hid_handle, int id, void *data, - struct winusb_transfer_priv *tp, size_t *size, OVERLAPPED *overlapped, int report_type) -{ - uint8_t *buf = NULL; - DWORD ioctl_code, write_size = (DWORD)*size; - // If an id is reported, we must allow MAX_HID_REPORT_SIZE + 1 - size_t max_report_size = MAX_HID_REPORT_SIZE + (id ? 1 : 0); - - if (tp->hid_buffer != NULL) - usbi_dbg("program assertion failed: hid_buffer is not NULL"); - - if ((*size == 0) || (*size > max_report_size)) { - usbi_dbg("invalid size (%u)", *size); - return LIBUSB_ERROR_INVALID_PARAM; - } - - switch (report_type) { - case HID_REPORT_TYPE_OUTPUT: - ioctl_code = IOCTL_HID_SET_OUTPUT_REPORT; - break; - case HID_REPORT_TYPE_FEATURE: - ioctl_code = IOCTL_HID_SET_FEATURE; - break; - default: - usbi_dbg("unknown HID report type %d", report_type); - return LIBUSB_ERROR_INVALID_PARAM; - } - - usbi_dbg("report ID: 0x%02X", id); - // When report IDs are not used (i.e. when id == 0), we must add - // a null report ID. Otherwise, we just use original data buffer - if (id == 0) - write_size++; - - buf = malloc(write_size); - if (buf == NULL) - return LIBUSB_ERROR_NO_MEM; - - if (id == 0) { - buf[0] = 0; - memcpy(buf + 1, data, *size); - } else { - // This seems like a waste, but if we don't duplicate the - // data, we'll get issues when freeing hid_buffer - memcpy(buf, data, *size); - if (buf[0] != id) - usbi_warn(NULL, "mismatched report ID (data is %02X, parameter is %02X)", buf[0], id); - } - - // NB: The size returned by DeviceIoControl doesn't include report IDs when not in use (0) - if (!DeviceIoControl(hid_handle, ioctl_code, buf, write_size, - buf, write_size, &write_size, overlapped)) { - if (GetLastError() != ERROR_IO_PENDING) { - usbi_dbg("Failed to Write HID Output Report: %s", windows_error_str(0)); - free(buf); - return LIBUSB_ERROR_IO; - } - tp->hid_buffer = buf; - tp->hid_dest = NULL; - return LIBUSB_SUCCESS; - } - - // Transfer completed synchronously - *size = write_size; - if (write_size == 0) - usbi_dbg("program assertion failed - write completed synchronously, but no data was written"); - - free(buf); - return LIBUSB_COMPLETED; -} - -static int _hid_class_request(struct hid_device_priv *dev, HANDLE hid_handle, int request_type, - int request, int value, int _index, void *data, struct winusb_transfer_priv *tp, - size_t *size, OVERLAPPED *overlapped) -{ - int report_type = (value >> 8) & 0xFF; - int report_id = value & 0xFF; - - if ((LIBUSB_REQ_RECIPIENT(request_type) != LIBUSB_RECIPIENT_INTERFACE) - && (LIBUSB_REQ_RECIPIENT(request_type) != LIBUSB_RECIPIENT_DEVICE)) - return LIBUSB_ERROR_INVALID_PARAM; - - if (LIBUSB_REQ_OUT(request_type) && request == HID_REQ_SET_REPORT) - return _hid_set_report(dev, hid_handle, report_id, data, tp, size, overlapped, report_type); - - if (LIBUSB_REQ_IN(request_type) && request == HID_REQ_GET_REPORT) - return _hid_get_report(dev, hid_handle, report_id, data, tp, size, overlapped, report_type); - - return LIBUSB_ERROR_INVALID_PARAM; -} - - -/* - * HID API functions - */ -static int hid_init(struct libusb_context *ctx) -{ - DLL_GET_HANDLE(hid); - - DLL_LOAD_FUNC(hid, HidD_GetAttributes, TRUE); - DLL_LOAD_FUNC(hid, HidD_GetHidGuid, TRUE); - DLL_LOAD_FUNC(hid, HidD_GetPreparsedData, TRUE); - DLL_LOAD_FUNC(hid, HidD_FreePreparsedData, TRUE); - DLL_LOAD_FUNC(hid, HidD_GetManufacturerString, TRUE); - DLL_LOAD_FUNC(hid, HidD_GetProductString, TRUE); - DLL_LOAD_FUNC(hid, HidD_GetSerialNumberString, TRUE); - DLL_LOAD_FUNC(hid, HidD_GetIndexedString, TRUE); - DLL_LOAD_FUNC(hid, HidP_GetCaps, TRUE); - DLL_LOAD_FUNC(hid, HidD_SetNumInputBuffers, TRUE); - DLL_LOAD_FUNC(hid, HidD_GetPhysicalDescriptor, TRUE); - DLL_LOAD_FUNC(hid, HidD_FlushQueue, TRUE); - DLL_LOAD_FUNC(hid, HidP_GetValueCaps, TRUE); - - api_hid_available = true; - return LIBUSB_SUCCESS; -} - -static void hid_exit(void) -{ - DLL_FREE_HANDLE(hid); -} - -// NB: open and close must ensure that they only handle interface of -// the right API type, as these functions can be called wholesale from -// composite_open(), with interfaces belonging to different APIs -static int hid_open(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - HIDD_ATTRIBUTES hid_attributes; - PHIDP_PREPARSED_DATA preparsed_data = NULL; - HIDP_CAPS capabilities; - HIDP_VALUE_CAPS *value_caps; - HANDLE hid_handle = INVALID_HANDLE_VALUE; - int i, j; - // report IDs handling - ULONG size[3]; - int nb_ids[2]; // zero and nonzero report IDs -#if defined(ENABLE_LOGGING) - const char * const type[3] = {"input", "output", "feature"}; -#endif - - CHECK_HID_AVAILABLE; - - if (priv->hid == NULL) { - usbi_err(ctx, "program assertion failed - private HID structure is unitialized"); - return LIBUSB_ERROR_NOT_FOUND; - } - - for (i = 0; i < USB_MAXINTERFACES; i++) { - if ((priv->usb_interface[i].path != NULL) - && (priv->usb_interface[i].apib->id == USB_API_HID)) { - hid_handle = CreateFileA(priv->usb_interface[i].path, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, - NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL); - /* - * http://www.lvr.com/hidfaq.htm: Why do I receive "Access denied" when attempting to access my HID? - * "Windows 2000 and later have exclusive read/write access to HIDs that are configured as a system - * keyboards or mice. An application can obtain a handle to a system keyboard or mouse by not - * requesting READ or WRITE access with CreateFile. Applications can then use HidD_SetFeature and - * HidD_GetFeature (if the device supports Feature reports)." - */ - if (hid_handle == INVALID_HANDLE_VALUE) { - usbi_warn(ctx, "could not open HID device in R/W mode (keyboard or mouse?) - trying without"); - hid_handle = CreateFileA(priv->usb_interface[i].path, 0, FILE_SHARE_WRITE | FILE_SHARE_READ, - NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL); - if (hid_handle == INVALID_HANDLE_VALUE) { - usbi_err(ctx, "could not open device %s (interface %d): %s", priv->path, i, windows_error_str(0)); - switch (GetLastError()) { - case ERROR_FILE_NOT_FOUND: // The device was disconnected - return LIBUSB_ERROR_NO_DEVICE; - case ERROR_ACCESS_DENIED: - return LIBUSB_ERROR_ACCESS; - default: - return LIBUSB_ERROR_IO; - } - } - priv->usb_interface[i].restricted_functionality = true; - } - handle_priv->interface_handle[i].api_handle = hid_handle; - } - } - - hid_attributes.Size = sizeof(hid_attributes); - do { - if (!HidD_GetAttributes(hid_handle, &hid_attributes)) { - usbi_err(ctx, "could not gain access to HID top collection (HidD_GetAttributes)"); - break; - } - - priv->hid->vid = hid_attributes.VendorID; - priv->hid->pid = hid_attributes.ProductID; - - // Set the maximum available input buffer size - for (i = 32; HidD_SetNumInputBuffers(hid_handle, i); i *= 2); - usbi_dbg("set maximum input buffer size to %d", i / 2); - - // Get the maximum input and output report size - if (!HidD_GetPreparsedData(hid_handle, &preparsed_data) || !preparsed_data) { - usbi_err(ctx, "could not read HID preparsed data (HidD_GetPreparsedData)"); - break; - } - if (HidP_GetCaps(preparsed_data, &capabilities) != HIDP_STATUS_SUCCESS) { - usbi_err(ctx, "could not parse HID capabilities (HidP_GetCaps)"); - break; - } - - // Find out if interrupt will need report IDs - size[0] = capabilities.NumberInputValueCaps; - size[1] = capabilities.NumberOutputValueCaps; - size[2] = capabilities.NumberFeatureValueCaps; - for (j = HidP_Input; j <= HidP_Feature; j++) { - usbi_dbg("%u HID %s report value(s) found", (unsigned int)size[j], type[j]); - priv->hid->uses_report_ids[j] = false; - if (size[j] > 0) { - value_caps = calloc(size[j], sizeof(HIDP_VALUE_CAPS)); - if ((value_caps != NULL) - && (HidP_GetValueCaps((HIDP_REPORT_TYPE)j, value_caps, &size[j], preparsed_data) == HIDP_STATUS_SUCCESS) - && (size[j] >= 1)) { - nb_ids[0] = 0; - nb_ids[1] = 0; - for (i = 0; i < (int)size[j]; i++) { - usbi_dbg(" Report ID: 0x%02X", value_caps[i].ReportID); - if (value_caps[i].ReportID != 0) - nb_ids[1]++; - else - nb_ids[0]++; - } - if (nb_ids[1] != 0) { - if (nb_ids[0] != 0) - usbi_warn(ctx, "program assertion failed: zero and nonzero report IDs used for %s", - type[j]); - priv->hid->uses_report_ids[j] = true; - } - } else { - usbi_warn(ctx, " could not process %s report IDs", type[j]); - } - free(value_caps); - } - } - - // Set the report sizes - priv->hid->input_report_size = capabilities.InputReportByteLength; - priv->hid->output_report_size = capabilities.OutputReportByteLength; - priv->hid->feature_report_size = capabilities.FeatureReportByteLength; - - // Store usage and usagePage values - priv->hid->usage = capabilities.Usage; - priv->hid->usagePage = capabilities.UsagePage; - - // Fetch string descriptors - priv->hid->string_index[0] = priv->dev_descriptor.iManufacturer; - if (priv->hid->string_index[0] != 0) - HidD_GetManufacturerString(hid_handle, priv->hid->string[0], sizeof(priv->hid->string[0])); - else - priv->hid->string[0][0] = 0; - - priv->hid->string_index[1] = priv->dev_descriptor.iProduct; - if (priv->hid->string_index[1] != 0) - HidD_GetProductString(hid_handle, priv->hid->string[1], sizeof(priv->hid->string[1])); - else - priv->hid->string[1][0] = 0; - - priv->hid->string_index[2] = priv->dev_descriptor.iSerialNumber; - if (priv->hid->string_index[2] != 0) - HidD_GetSerialNumberString(hid_handle, priv->hid->string[2], sizeof(priv->hid->string[2])); - else - priv->hid->string[2][0] = 0; - } while (0); - - if (preparsed_data) - HidD_FreePreparsedData(preparsed_data); - - return LIBUSB_SUCCESS; -} - -static void hid_close(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - HANDLE file_handle; - int i; - - if (!api_hid_available) - return; - - for (i = 0; i < USB_MAXINTERFACES; i++) { - if (priv->usb_interface[i].apib->id == USB_API_HID) { - file_handle = handle_priv->interface_handle[i].api_handle; - if (HANDLE_VALID(file_handle)) - CloseHandle(file_handle); - } - } -} - -static int hid_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface) -{ - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - - CHECK_HID_AVAILABLE; - - // NB: Disconnection detection is not possible in this function - if (priv->usb_interface[iface].path == NULL) - return LIBUSB_ERROR_NOT_FOUND; // invalid iface - - // We use dev_handle as a flag for interface claimed - if (handle_priv->interface_handle[iface].dev_handle == INTERFACE_CLAIMED) - return LIBUSB_ERROR_BUSY; // already claimed - - handle_priv->interface_handle[iface].dev_handle = INTERFACE_CLAIMED; - - usbi_dbg("claimed interface %d", iface); - handle_priv->active_interface = iface; - - return LIBUSB_SUCCESS; -} - -static int hid_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface) -{ - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - - CHECK_HID_AVAILABLE; - - if (priv->usb_interface[iface].path == NULL) - return LIBUSB_ERROR_NOT_FOUND; // invalid iface - - if (handle_priv->interface_handle[iface].dev_handle != INTERFACE_CLAIMED) - return LIBUSB_ERROR_NOT_FOUND; // invalid iface - - handle_priv->interface_handle[iface].dev_handle = INVALID_HANDLE_VALUE; - - return LIBUSB_SUCCESS; -} - -static int hid_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - - CHECK_HID_AVAILABLE; - - if (altsetting > 255) - return LIBUSB_ERROR_INVALID_PARAM; - - if (altsetting != 0) { - usbi_err(ctx, "set interface altsetting not supported for altsetting >0"); - return LIBUSB_ERROR_NOT_SUPPORTED; - } - - return LIBUSB_SUCCESS; -} - -static int hid_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - WINUSB_SETUP_PACKET *setup = (WINUSB_SETUP_PACKET *)transfer->buffer; - HANDLE hid_handle; - OVERLAPPED *overlapped; - int current_interface, config; - size_t size; - int r = LIBUSB_ERROR_INVALID_PARAM; - - CHECK_HID_AVAILABLE; - - safe_free(transfer_priv->hid_buffer); - transfer_priv->hid_dest = NULL; - size = transfer->length - LIBUSB_CONTROL_SETUP_SIZE; - - if (size > MAX_CTRL_BUFFER_LENGTH) - return LIBUSB_ERROR_INVALID_PARAM; - - current_interface = get_valid_interface(transfer->dev_handle, USB_API_HID); - if (current_interface < 0) { - if (auto_claim(transfer, ¤t_interface, USB_API_HID) != LIBUSB_SUCCESS) - return LIBUSB_ERROR_NOT_FOUND; - } - - usbi_dbg("will use interface %d", current_interface); - - hid_handle = handle_priv->interface_handle[current_interface].api_handle; - overlapped = transfer_priv->pollable_fd.overlapped; - - switch (LIBUSB_REQ_TYPE(setup->RequestType)) { - case LIBUSB_REQUEST_TYPE_STANDARD: - switch (setup->Request) { - case LIBUSB_REQUEST_GET_DESCRIPTOR: - r = _hid_get_descriptor(priv->hid, hid_handle, LIBUSB_REQ_RECIPIENT(setup->RequestType), - (setup->Value >> 8) & 0xFF, setup->Value & 0xFF, transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE, &size); - break; - case LIBUSB_REQUEST_GET_CONFIGURATION: - r = winusb_get_configuration(transfer->dev_handle, &config); - if (r == LIBUSB_SUCCESS) { - size = 1; - ((uint8_t *)transfer->buffer)[LIBUSB_CONTROL_SETUP_SIZE] = (uint8_t)config; - r = LIBUSB_COMPLETED; - } - break; - case LIBUSB_REQUEST_SET_CONFIGURATION: - if (setup->Value == priv->active_config) { - r = LIBUSB_COMPLETED; - } else { - usbi_warn(ctx, "cannot set configuration other than the default one"); - r = LIBUSB_ERROR_NOT_SUPPORTED; - } - break; - case LIBUSB_REQUEST_GET_INTERFACE: - size = 1; - ((uint8_t *)transfer->buffer)[LIBUSB_CONTROL_SETUP_SIZE] = 0; - r = LIBUSB_COMPLETED; - break; - case LIBUSB_REQUEST_SET_INTERFACE: - r = hid_set_interface_altsetting(0, transfer->dev_handle, setup->Index, setup->Value); - if (r == LIBUSB_SUCCESS) - r = LIBUSB_COMPLETED; - break; - default: - usbi_warn(ctx, "unsupported HID control request"); - return LIBUSB_ERROR_NOT_SUPPORTED; - } - break; - case LIBUSB_REQUEST_TYPE_CLASS: - r = _hid_class_request(priv->hid, hid_handle, setup->RequestType, setup->Request, setup->Value, - setup->Index, transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE, transfer_priv, - &size, overlapped); - break; - default: - usbi_warn(ctx, "unsupported HID control request"); - return LIBUSB_ERROR_NOT_SUPPORTED; - } - - if (r < 0) - return r; - - if (r == LIBUSB_COMPLETED) { - // Force request to be completed synchronously. Transferred size has been set by previous call - windows_force_sync_completion(overlapped, (ULONG)size); - r = LIBUSB_SUCCESS; - } - - transfer_priv->interface_number = (uint8_t)current_interface; - - return LIBUSB_SUCCESS; -} - -static int hid_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - HANDLE hid_handle; - OVERLAPPED *overlapped; - bool direction_in, ret; - int current_interface, length; - DWORD size; - int r = LIBUSB_SUCCESS; - - CHECK_HID_AVAILABLE; - - transfer_priv->hid_dest = NULL; - safe_free(transfer_priv->hid_buffer); - - current_interface = interface_by_endpoint(priv, handle_priv, transfer->endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cancelling transfer"); - return LIBUSB_ERROR_NOT_FOUND; - } - - usbi_dbg("matched endpoint %02X with interface %d", transfer->endpoint, current_interface); - - transfer_priv->handle = hid_handle = handle_priv->interface_handle[current_interface].api_handle; - overlapped = transfer_priv->pollable_fd.overlapped; - direction_in = IS_XFERIN(transfer); - - // If report IDs are not in use, an extra prefix byte must be added - if (((direction_in) && (!priv->hid->uses_report_ids[0])) - || ((!direction_in) && (!priv->hid->uses_report_ids[1]))) - length = transfer->length + 1; - else - length = transfer->length; - - // Add a trailing byte to detect overflows on input - transfer_priv->hid_buffer = calloc(1, length + 1); - if (transfer_priv->hid_buffer == NULL) - return LIBUSB_ERROR_NO_MEM; - - transfer_priv->hid_expected_size = length; - - if (direction_in) { - transfer_priv->hid_dest = transfer->buffer; - usbi_dbg("reading %d bytes (report ID: 0x00)", length); - ret = ReadFile(hid_handle, transfer_priv->hid_buffer, length + 1, &size, overlapped); - } else { - if (!priv->hid->uses_report_ids[1]) - memcpy(transfer_priv->hid_buffer + 1, transfer->buffer, transfer->length); - else - // We could actually do without the calloc and memcpy in this case - memcpy(transfer_priv->hid_buffer, transfer->buffer, transfer->length); - - usbi_dbg("writing %d bytes (report ID: 0x%02X)", length, transfer_priv->hid_buffer[0]); - ret = WriteFile(hid_handle, transfer_priv->hid_buffer, length, &size, overlapped); - } - - if (!ret) { - if (GetLastError() != ERROR_IO_PENDING) { - usbi_err(ctx, "HID transfer failed: %s", windows_error_str(0)); - safe_free(transfer_priv->hid_buffer); - return LIBUSB_ERROR_IO; - } - } else { - // Only write operations that completed synchronously need to free up - // hid_buffer. For reads, copy_transfer_data() handles that process. - if (!direction_in) - safe_free(transfer_priv->hid_buffer); - - if (size == 0) { - usbi_err(ctx, "program assertion failed - no data was transferred"); - size = 1; - } - if (size > (size_t)length) { - usbi_err(ctx, "OVERFLOW!"); - r = LIBUSB_ERROR_OVERFLOW; - } - windows_force_sync_completion(overlapped, (ULONG)size); - } - - transfer_priv->interface_number = (uint8_t)current_interface; - - return r; -} - -static int hid_abort_transfers(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_context *ctx = ITRANSFER_CTX(itransfer); - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - HANDLE hid_handle; - int current_interface; - - CHECK_HID_AVAILABLE; - - current_interface = transfer_priv->interface_number; - if ((current_interface < 0) || (current_interface >= USB_MAXINTERFACES)) { - usbi_err(ctx, "program assertion failed: invalid interface_number"); - return LIBUSB_ERROR_NOT_FOUND; - } - usbi_dbg("will use interface %d", current_interface); - - hid_handle = handle_priv->interface_handle[current_interface].api_handle; - - if (pCancelIoEx != NULL) { - // Use CancelIoEx if available to cancel just a single transfer - if (pCancelIoEx(hid_handle, transfer_priv->pollable_fd.overlapped)) - return LIBUSB_SUCCESS; - } else { - if (CancelIo(hid_handle)) - return LIBUSB_SUCCESS; - } - - usbi_warn(ctx, "cancel failed: %s", windows_error_str(0)); - return LIBUSB_ERROR_NOT_FOUND; -} - -static int hid_reset_device(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - HANDLE hid_handle; - int current_interface; - - CHECK_HID_AVAILABLE; - - // Flushing the queues on all interfaces is the best we can achieve - for (current_interface = 0; current_interface < USB_MAXINTERFACES; current_interface++) { - hid_handle = handle_priv->interface_handle[current_interface].api_handle; - if (HANDLE_VALID(hid_handle)) - HidD_FlushQueue(hid_handle); - } - - return LIBUSB_SUCCESS; -} - -static int hid_clear_halt(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - HANDLE hid_handle; - int current_interface; - - CHECK_HID_AVAILABLE; - - current_interface = interface_by_endpoint(priv, handle_priv, endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cannot clear"); - return LIBUSB_ERROR_NOT_FOUND; - } - - usbi_dbg("matched endpoint %02X with interface %d", endpoint, current_interface); - hid_handle = handle_priv->interface_handle[current_interface].api_handle; - - // No endpoint selection with Microsoft's implementation, so we try to flush the - // whole interface. Should be OK for most case scenarios - if (!HidD_FlushQueue(hid_handle)) { - usbi_err(ctx, "Flushing of HID queue failed: %s", windows_error_str(0)); - // Device was probably disconnected - return LIBUSB_ERROR_NO_DEVICE; - } - - return LIBUSB_SUCCESS; -} - -// This extra function is only needed for HID -static int hid_copy_transfer_data(int sub_api, struct usbi_transfer *itransfer, uint32_t io_size) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - int r = LIBUSB_TRANSFER_COMPLETED; - uint32_t corrected_size = io_size; - - if (transfer_priv->hid_buffer != NULL) { - // If we have a valid hid_buffer, it means the transfer was async - if (transfer_priv->hid_dest != NULL) { // Data readout - if (corrected_size > 0) { - // First, check for overflow - if (corrected_size > transfer_priv->hid_expected_size) { - usbi_err(ctx, "OVERFLOW!"); - corrected_size = (uint32_t)transfer_priv->hid_expected_size; - r = LIBUSB_TRANSFER_OVERFLOW; - } - - if (transfer_priv->hid_buffer[0] == 0) { - // Discard the 1 byte report ID prefix - corrected_size--; - memcpy(transfer_priv->hid_dest, transfer_priv->hid_buffer + 1, corrected_size); - } else { - memcpy(transfer_priv->hid_dest, transfer_priv->hid_buffer, corrected_size); - } - } - transfer_priv->hid_dest = NULL; - } - // For write, we just need to free the hid buffer - safe_free(transfer_priv->hid_buffer); - } - - itransfer->transferred += corrected_size; - return r; -} - - -/* - * Composite API functions - */ -static int composite_open(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - int r = LIBUSB_ERROR_NOT_FOUND; - uint8_t i; - // SUB_API_MAX + 1 as the SUB_API_MAX pos is used to indicate availability of HID - bool available[SUB_API_MAX + 1] = { 0 }; - - for (i = 0; i < USB_MAXINTERFACES; i++) { - switch (priv->usb_interface[i].apib->id) { - case USB_API_WINUSBX: - if (priv->usb_interface[i].sub_api != SUB_API_NOTSET) - available[priv->usb_interface[i].sub_api] = true; - break; - case USB_API_HID: - available[SUB_API_MAX] = true; - break; - default: - break; - } - } - - for (i = 0; i < SUB_API_MAX; i++) { // WinUSB-like drivers - if (available[i]) { - r = usb_api_backend[USB_API_WINUSBX].open(i, dev_handle); - if (r != LIBUSB_SUCCESS) - return r; - } - } - - if (available[SUB_API_MAX]) // HID driver - r = hid_open(SUB_API_NOTSET, dev_handle); - - return r; -} - -static void composite_close(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - uint8_t i; - // SUB_API_MAX + 1 as the SUB_API_MAX pos is used to indicate availability of HID - bool available[SUB_API_MAX + 1] = { 0 }; - - for (i = 0; i < USB_MAXINTERFACES; i++) { - switch (priv->usb_interface[i].apib->id) { - case USB_API_WINUSBX: - if (priv->usb_interface[i].sub_api != SUB_API_NOTSET) - available[priv->usb_interface[i].sub_api] = true; - break; - case USB_API_HID: - available[SUB_API_MAX] = true; - break; - default: - break; - } - } - - for (i = 0; i < SUB_API_MAX; i++) { // WinUSB-like drivers - if (available[i]) - usb_api_backend[USB_API_WINUSBX].close(i, dev_handle); - } - - if (available[SUB_API_MAX]) // HID driver - hid_close(SUB_API_NOTSET, dev_handle); -} - -static int composite_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - - CHECK_SUPPORTED_API(priv->usb_interface[iface].apib, claim_interface); - - return priv->usb_interface[iface].apib-> - claim_interface(priv->usb_interface[iface].sub_api, dev_handle, iface); -} - -static int composite_set_interface_altsetting(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - - CHECK_SUPPORTED_API(priv->usb_interface[iface].apib, set_interface_altsetting); - - return priv->usb_interface[iface].apib-> - set_interface_altsetting(priv->usb_interface[iface].sub_api, dev_handle, iface, altsetting); -} - -static int composite_release_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - - CHECK_SUPPORTED_API(priv->usb_interface[iface].apib, release_interface); - - return priv->usb_interface[iface].apib-> - release_interface(priv->usb_interface[iface].sub_api, dev_handle, iface); -} - -static int composite_submit_control_transfer(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - struct libusb_config_descriptor *conf_desc; - WINUSB_SETUP_PACKET *setup = (WINUSB_SETUP_PACKET *)transfer->buffer; - int iface, pass, r; - - // Interface shouldn't matter for control, but it does in practice, with Windows' - // restrictions with regards to accessing HID keyboards and mice. Try to target - // a specific interface first, if possible. - switch (LIBUSB_REQ_RECIPIENT(setup->RequestType)) { - case LIBUSB_RECIPIENT_INTERFACE: - iface = setup->Index & 0xFF; - break; - case LIBUSB_RECIPIENT_ENDPOINT: - r = libusb_get_active_config_descriptor(transfer->dev_handle->dev, &conf_desc); - if (r == LIBUSB_SUCCESS) { - iface = get_interface_by_endpoint(conf_desc, (setup->Index & 0xFF)); - libusb_free_config_descriptor(conf_desc); - break; - } - // Fall through if not able to determine interface - default: - iface = -1; - break; - } - - // Try and target a specific interface if the control setup indicates such - if ((iface >= 0) && (iface < USB_MAXINTERFACES)) { - usbi_dbg("attempting control transfer targeted to interface %d", iface); - if ((priv->usb_interface[iface].path != NULL) - && (priv->usb_interface[iface].apib->submit_control_transfer != NULL)) { - r = priv->usb_interface[iface].apib->submit_control_transfer(priv->usb_interface[iface].sub_api, itransfer); - if (r == LIBUSB_SUCCESS) - return r; - } - } - - // Either not targeted to a specific interface or no luck in doing so. - // Try a 2 pass approach with all interfaces. - for (pass = 0; pass < 2; pass++) { - for (iface = 0; iface < USB_MAXINTERFACES; iface++) { - if ((priv->usb_interface[iface].path != NULL) - && (priv->usb_interface[iface].apib->submit_control_transfer != NULL)) { - if ((pass == 0) && (priv->usb_interface[iface].restricted_functionality)) { - usbi_dbg("trying to skip restricted interface #%d (HID keyboard or mouse?)", iface); - continue; - } - usbi_dbg("using interface %d", iface); - r = priv->usb_interface[iface].apib->submit_control_transfer(priv->usb_interface[iface].sub_api, itransfer); - // If not supported on this API, it may be supported on another, so don't give up yet!! - if (r == LIBUSB_ERROR_NOT_SUPPORTED) - continue; - return r; - } - } - } - - usbi_err(ctx, "no libusb supported interfaces to complete request"); - return LIBUSB_ERROR_NOT_FOUND; -} - -static int composite_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int current_interface; - - current_interface = interface_by_endpoint(priv, handle_priv, transfer->endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cancelling transfer"); - return LIBUSB_ERROR_NOT_FOUND; - } - - CHECK_SUPPORTED_API(priv->usb_interface[current_interface].apib, submit_bulk_transfer); - - return priv->usb_interface[current_interface].apib-> - submit_bulk_transfer(priv->usb_interface[current_interface].sub_api, itransfer); -} - -static int composite_submit_iso_transfer(int sub_api, struct usbi_transfer *itransfer) { - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(transfer->dev_handle); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int current_interface; - - current_interface = interface_by_endpoint(priv, handle_priv, transfer->endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cancelling transfer"); - return LIBUSB_ERROR_NOT_FOUND; - } - - CHECK_SUPPORTED_API(priv->usb_interface[current_interface].apib, submit_iso_transfer); - - return priv->usb_interface[current_interface].apib-> - submit_iso_transfer(priv->usb_interface[current_interface].sub_api, itransfer); -} - -static int composite_clear_halt(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint) -{ - struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev); - struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle); - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - int current_interface; - - current_interface = interface_by_endpoint(priv, handle_priv, endpoint); - if (current_interface < 0) { - usbi_err(ctx, "unable to match endpoint to an open interface - cannot clear"); - return LIBUSB_ERROR_NOT_FOUND; - } - - CHECK_SUPPORTED_API(priv->usb_interface[current_interface].apib, clear_halt); - - return priv->usb_interface[current_interface].apib-> - clear_halt(priv->usb_interface[current_interface].sub_api, dev_handle, endpoint); -} - -static int composite_abort_control(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int current_interface = transfer_priv->interface_number; - - if ((current_interface < 0) || (current_interface >= USB_MAXINTERFACES)) { - usbi_err(TRANSFER_CTX(transfer), "program assertion failed: invalid interface_number"); - return LIBUSB_ERROR_NOT_FOUND; - } - - CHECK_SUPPORTED_API(priv->usb_interface[current_interface].apib, abort_control); - - return priv->usb_interface[current_interface].apib-> - abort_control(priv->usb_interface[current_interface].sub_api, itransfer); -} - -static int composite_abort_transfers(int sub_api, struct usbi_transfer *itransfer) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int current_interface = transfer_priv->interface_number; - - if ((current_interface < 0) || (current_interface >= USB_MAXINTERFACES)) { - usbi_err(TRANSFER_CTX(transfer), "program assertion failed: invalid interface_number"); - return LIBUSB_ERROR_NOT_FOUND; - } - - CHECK_SUPPORTED_API(priv->usb_interface[current_interface].apib, abort_transfers); - - return priv->usb_interface[current_interface].apib-> - abort_transfers(priv->usb_interface[current_interface].sub_api, itransfer); -} - -static int composite_reset_device(int sub_api, struct libusb_device_handle *dev_handle) -{ - struct winusb_device_priv *priv = _device_priv(dev_handle->dev); - int r; - uint8_t i; - bool available[SUB_API_MAX]; - - for (i = 0; i < SUB_API_MAX; i++) - available[i] = false; - - for (i = 0; i < USB_MAXINTERFACES; i++) { - if ((priv->usb_interface[i].apib->id == USB_API_WINUSBX) - && (priv->usb_interface[i].sub_api != SUB_API_NOTSET)) - available[priv->usb_interface[i].sub_api] = true; - } - - for (i = 0; i < SUB_API_MAX; i++) { - if (available[i]) { - r = usb_api_backend[USB_API_WINUSBX].reset_device(i, dev_handle); - if (r != LIBUSB_SUCCESS) - return r; - } - } - - return LIBUSB_SUCCESS; -} - -static int composite_copy_transfer_data(int sub_api, struct usbi_transfer *itransfer, uint32_t io_size) -{ - struct libusb_transfer *transfer = USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer); - struct winusb_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer); - struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev); - int current_interface = transfer_priv->interface_number; - - CHECK_SUPPORTED_API(priv->usb_interface[current_interface].apib, copy_transfer_data); - - return priv->usb_interface[current_interface].apib-> - copy_transfer_data(priv->usb_interface[current_interface].sub_api, itransfer, io_size); -} diff --git a/Externals/libusb/libusb/os/windows_winusb.h b/Externals/libusb/libusb/os/windows_winusb.h deleted file mode 100644 index 3a911d55f173..000000000000 --- a/Externals/libusb/libusb/os/windows_winusb.h +++ /dev/null @@ -1,781 +0,0 @@ -/* - * Windows backend for libusb 1.0 - * Copyright © 2009-2012 Pete Batard - * With contributions from Michael Plante, Orin Eman et al. - * Parts of this code adapted from libusb-win32-v1 by Stephan Meyer - * Major code testing contribution by Xiaofan Chen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#pragma once - -#include "windows_common.h" -#include "windows_nt_common.h" - -#if defined(_MSC_VER) -// disable /W4 MSVC warnings that are benign -#pragma warning(disable:4100) // unreferenced formal parameter -#pragma warning(disable:4127) // conditional expression is constant -#pragma warning(disable:4201) // nameless struct/union -#pragma warning(disable:4214) // bit field types other than int -#pragma warning(disable:4996) // deprecated API calls -#pragma warning(disable:28159) // more deprecated API calls -#endif - -// Missing from MSVC6 setupapi.h -#ifndef SPDRP_ADDRESS -#define SPDRP_ADDRESS 28 -#endif -#ifndef SPDRP_INSTALL_STATE -#define SPDRP_INSTALL_STATE 34 -#endif - -#define MAX_CTRL_BUFFER_LENGTH 4096 -#define MAX_USB_STRING_LENGTH 128 -#define MAX_HID_REPORT_SIZE 1024 -#define MAX_HID_DESCRIPTOR_SIZE 256 -#define MAX_GUID_STRING_LENGTH 40 -#define MAX_PATH_LENGTH 128 -#define MAX_KEY_LENGTH 256 -#define LIST_SEPARATOR ';' - -// Handle code for HID interface that have been claimed ("dibs") -#define INTERFACE_CLAIMED ((HANDLE)(intptr_t)0xD1B5) -// Additional return code for HID operations that completed synchronously -#define LIBUSB_COMPLETED (LIBUSB_SUCCESS + 1) - -// http://msdn.microsoft.com/en-us/library/ff545978.aspx -// http://msdn.microsoft.com/en-us/library/ff545972.aspx -// http://msdn.microsoft.com/en-us/library/ff545982.aspx -#ifndef GUID_DEVINTERFACE_USB_HOST_CONTROLLER -const GUID GUID_DEVINTERFACE_USB_HOST_CONTROLLER = {0x3ABF6F2D, 0x71C4, 0x462A, {0x8A, 0x92, 0x1E, 0x68, 0x61, 0xE6, 0xAF, 0x27}}; -#endif -#ifndef GUID_DEVINTERFACE_USB_DEVICE -const GUID GUID_DEVINTERFACE_USB_DEVICE = {0xA5DCBF10, 0x6530, 0x11D2, {0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED}}; -#endif -#ifndef GUID_DEVINTERFACE_USB_HUB -const GUID GUID_DEVINTERFACE_USB_HUB = {0xF18A0E88, 0xC30C, 0x11D0, {0x88, 0x15, 0x00, 0xA0, 0xC9, 0x06, 0xBE, 0xD8}}; -#endif -#ifndef GUID_DEVINTERFACE_LIBUSB0_FILTER -const GUID GUID_DEVINTERFACE_LIBUSB0_FILTER = {0xF9F3FF14, 0xAE21, 0x48A0, {0x8A, 0x25, 0x80, 0x11, 0xA7, 0xA9, 0x31, 0xD9}}; -#endif - - -/* - * Multiple USB API backend support - */ -#define USB_API_UNSUPPORTED 0 -#define USB_API_HUB 1 -#define USB_API_COMPOSITE 2 -#define USB_API_WINUSBX 3 -#define USB_API_HID 4 -#define USB_API_MAX 5 - -// Sub-APIs for WinUSB-like driver APIs (WinUSB, libusbK, libusb-win32 through the libusbK DLL) -// Must have the same values as the KUSB_DRVID enum from libusbk.h -#define SUB_API_NOTSET -1 -#define SUB_API_LIBUSBK 0 -#define SUB_API_LIBUSB0 1 -#define SUB_API_WINUSB 2 -#define SUB_API_MAX 3 - -struct windows_usb_api_backend { - const uint8_t id; - const char * const designation; - const char * const * const driver_name_list; // Driver name, without .sys, e.g. "usbccgp" - const uint8_t nb_driver_names; - int (*init)(struct libusb_context *ctx); - void (*exit)(void); - int (*open)(int sub_api, struct libusb_device_handle *dev_handle); - void (*close)(int sub_api, struct libusb_device_handle *dev_handle); - int (*configure_endpoints)(int sub_api, struct libusb_device_handle *dev_handle, int iface); - int (*claim_interface)(int sub_api, struct libusb_device_handle *dev_handle, int iface); - int (*set_interface_altsetting)(int sub_api, struct libusb_device_handle *dev_handle, int iface, int altsetting); - int (*release_interface)(int sub_api, struct libusb_device_handle *dev_handle, int iface); - int (*clear_halt)(int sub_api, struct libusb_device_handle *dev_handle, unsigned char endpoint); - int (*reset_device)(int sub_api, struct libusb_device_handle *dev_handle); - int (*submit_bulk_transfer)(int sub_api, struct usbi_transfer *itransfer); - int (*submit_iso_transfer)(int sub_api, struct usbi_transfer *itransfer); - int (*submit_control_transfer)(int sub_api, struct usbi_transfer *itransfer); - int (*abort_control)(int sub_api, struct usbi_transfer *itransfer); - int (*abort_transfers)(int sub_api, struct usbi_transfer *itransfer); - int (*copy_transfer_data)(int sub_api, struct usbi_transfer *itransfer, uint32_t io_size); -}; - -extern const struct windows_usb_api_backend usb_api_backend[USB_API_MAX]; - -#define PRINT_UNSUPPORTED_API(fname) \ - usbi_dbg("unsupported API call for '%s' " \ - "(unrecognized device driver)", #fname) - -#define CHECK_SUPPORTED_API(apip, fname) \ - do { \ - if ((apip)->fname == NULL) { \ - PRINT_UNSUPPORTED_API(fname); \ - return LIBUSB_ERROR_NOT_SUPPORTED; \ - } \ - } while (0) - -/* - * private structures definition - * with inline pseudo constructors/destructors - */ - -// TODO (v2+): move hid desc to libusb.h? -struct libusb_hid_descriptor { - uint8_t bLength; - uint8_t bDescriptorType; - uint16_t bcdHID; - uint8_t bCountryCode; - uint8_t bNumDescriptors; - uint8_t bClassDescriptorType; - uint16_t wClassDescriptorLength; -}; - -#define LIBUSB_DT_HID_SIZE 9 -#define HID_MAX_CONFIG_DESC_SIZE (LIBUSB_DT_CONFIG_SIZE + LIBUSB_DT_INTERFACE_SIZE \ - + LIBUSB_DT_HID_SIZE + 2 * LIBUSB_DT_ENDPOINT_SIZE) -#define HID_MAX_REPORT_SIZE 1024 -#define HID_IN_EP 0x81 -#define HID_OUT_EP 0x02 -#define LIBUSB_REQ_RECIPIENT(request_type) ((request_type) & 0x1F) -#define LIBUSB_REQ_TYPE(request_type) ((request_type) & (0x03 << 5)) -#define LIBUSB_REQ_IN(request_type) ((request_type) & LIBUSB_ENDPOINT_IN) -#define LIBUSB_REQ_OUT(request_type) (!LIBUSB_REQ_IN(request_type)) - -#ifndef CTL_CODE -#define CTL_CODE(DeviceType, Function, Method, Access) \ - (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)) -#endif - -// The following are used for HID reports IOCTLs -#define HID_IN_CTL_CODE(id) \ - CTL_CODE(FILE_DEVICE_KEYBOARD, (id), METHOD_IN_DIRECT, FILE_ANY_ACCESS) -#define HID_OUT_CTL_CODE(id) \ - CTL_CODE(FILE_DEVICE_KEYBOARD, (id), METHOD_OUT_DIRECT, FILE_ANY_ACCESS) - -#define IOCTL_HID_GET_FEATURE HID_OUT_CTL_CODE(100) -#define IOCTL_HID_GET_INPUT_REPORT HID_OUT_CTL_CODE(104) -#define IOCTL_HID_SET_FEATURE HID_IN_CTL_CODE(100) -#define IOCTL_HID_SET_OUTPUT_REPORT HID_IN_CTL_CODE(101) - -enum libusb_hid_request_type { - HID_REQ_GET_REPORT = 0x01, - HID_REQ_GET_IDLE = 0x02, - HID_REQ_GET_PROTOCOL = 0x03, - HID_REQ_SET_REPORT = 0x09, - HID_REQ_SET_IDLE = 0x0A, - HID_REQ_SET_PROTOCOL = 0x0B -}; - -enum libusb_hid_report_type { - HID_REPORT_TYPE_INPUT = 0x01, - HID_REPORT_TYPE_OUTPUT = 0x02, - HID_REPORT_TYPE_FEATURE = 0x03 -}; - -struct hid_device_priv { - uint16_t vid; - uint16_t pid; - uint8_t config; - uint8_t nb_interfaces; - bool uses_report_ids[3]; // input, ouptput, feature - uint16_t input_report_size; - uint16_t output_report_size; - uint16_t feature_report_size; - uint16_t usage; - uint16_t usagePage; - WCHAR string[3][MAX_USB_STRING_LENGTH]; - uint8_t string_index[3]; // man, prod, ser -}; - -static inline struct winusb_device_priv *_device_priv(struct libusb_device *dev) -{ - return (struct winusb_device_priv *)dev->os_priv; -} - -static inline struct winusb_device_priv *winusb_device_priv_init(struct libusb_device *dev) -{ - struct winusb_device_priv *p = _device_priv(dev); - int i; - - p->apib = &usb_api_backend[USB_API_UNSUPPORTED]; - p->sub_api = SUB_API_NOTSET; - for (i = 0; i < USB_MAXINTERFACES; i++) { - p->usb_interface[i].apib = &usb_api_backend[USB_API_UNSUPPORTED]; - p->usb_interface[i].sub_api = SUB_API_NOTSET; - } - - return p; -} - -static inline void winusb_device_priv_release(struct libusb_device *dev) -{ - struct winusb_device_priv *p = _device_priv(dev); - int i; - - free(p->dev_id); - free(p->path); - if ((dev->num_configurations > 0) && (p->config_descriptor != NULL)) { - for (i = 0; i < dev->num_configurations; i++) - free(p->config_descriptor[i]); - } - free(p->config_descriptor); - free(p->hid); - for (i = 0; i < USB_MAXINTERFACES; i++) { - free(p->usb_interface[i].path); - free(p->usb_interface[i].endpoint); - } -} - -static inline struct winusb_device_handle_priv *_device_handle_priv( - struct libusb_device_handle *handle) -{ - return (struct winusb_device_handle_priv *)handle->os_priv; -} - -// used to match a device driver (including filter drivers) against a supported API -struct driver_lookup { - char list[MAX_KEY_LENGTH + 1]; // REG_MULTI_SZ list of services (driver) names - const DWORD reg_prop; // SPDRP registry key to use to retrieve list - const char* designation; // internal designation (for debug output) -}; - -/* - * Windows DDK API definitions. Most of it copied from MinGW's includes - */ -typedef DWORD DEVNODE, DEVINST; -typedef DEVNODE *PDEVNODE, *PDEVINST; -typedef DWORD RETURN_TYPE; -typedef RETURN_TYPE CONFIGRET; - -#define CR_SUCCESS 0x00000000 - -/* Cfgmgr32 dependencies */ -DLL_DECLARE_HANDLE(Cfgmgr32); -DLL_DECLARE_FUNC(WINAPI, CONFIGRET, CM_Get_Parent, (PDEVINST, DEVINST, ULONG)); -DLL_DECLARE_FUNC(WINAPI, CONFIGRET, CM_Get_Child, (PDEVINST, DEVINST, ULONG)); - -/* AdvAPI32 dependencies */ -DLL_DECLARE_HANDLE(AdvAPI32); -DLL_DECLARE_FUNC_PREFIXED(WINAPI, LONG, p, RegQueryValueExW, (HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD)); -DLL_DECLARE_FUNC_PREFIXED(WINAPI, LONG, p, RegCloseKey, (HKEY)); - -/* OLE32 dependency */ -DLL_DECLARE_HANDLE(OLE32); -DLL_DECLARE_FUNC_PREFIXED(WINAPI, HRESULT, p, IIDFromString, (LPCOLESTR, LPIID)); - -/* SetupAPI dependencies */ -DLL_DECLARE_HANDLE(SetupAPI); -DLL_DECLARE_FUNC_PREFIXED(WINAPI, HDEVINFO, p, SetupDiGetClassDevsA, (LPCGUID, PCSTR, HWND, DWORD)); -DLL_DECLARE_FUNC_PREFIXED(WINAPI, BOOL, p, SetupDiEnumDeviceInfo, (HDEVINFO, DWORD, PSP_DEVINFO_DATA)); -DLL_DECLARE_FUNC_PREFIXED(WINAPI, BOOL, p, SetupDiEnumDeviceInterfaces, (HDEVINFO, PSP_DEVINFO_DATA, - LPCGUID, DWORD, PSP_DEVICE_INTERFACE_DATA)); -DLL_DECLARE_FUNC_PREFIXED(WINAPI, BOOL, p, SetupDiGetDeviceInstanceIdA, (HDEVINFO, PSP_DEVINFO_DATA, - PCSTR, DWORD, PDWORD)); -DLL_DECLARE_FUNC_PREFIXED(WINAPI, BOOL, p, SetupDiGetDeviceInterfaceDetailA, (HDEVINFO, PSP_DEVICE_INTERFACE_DATA, - PSP_DEVICE_INTERFACE_DETAIL_DATA_A, DWORD, PDWORD, PSP_DEVINFO_DATA)); -DLL_DECLARE_FUNC_PREFIXED(WINAPI, BOOL, p, SetupDiGetDeviceRegistryPropertyA, (HDEVINFO, - PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD)); -DLL_DECLARE_FUNC_PREFIXED(WINAPI, BOOL, p, SetupDiDestroyDeviceInfoList, (HDEVINFO)); -DLL_DECLARE_FUNC_PREFIXED(WINAPI, HKEY, p, SetupDiOpenDevRegKey, (HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, REGSAM)); -DLL_DECLARE_FUNC_PREFIXED(WINAPI, HKEY, p, SetupDiOpenDeviceInterfaceRegKey, (HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, DWORD)); - - -#ifndef USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION -#define USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION 260 -#endif -#ifndef USB_GET_NODE_CONNECTION_INFORMATION_EX -#define USB_GET_NODE_CONNECTION_INFORMATION_EX 274 -#endif -#ifndef USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 -#define USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 279 -#endif - -#ifndef FILE_DEVICE_USB -#define FILE_DEVICE_USB FILE_DEVICE_UNKNOWN -#endif - -#define USB_CTL_CODE(id) \ - CTL_CODE(FILE_DEVICE_USB, (id), METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION \ - USB_CTL_CODE(USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION) - -#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX \ - USB_CTL_CODE(USB_GET_NODE_CONNECTION_INFORMATION_EX) - -#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 \ - USB_CTL_CODE(USB_GET_NODE_CONNECTION_INFORMATION_EX_V2) - -typedef enum USB_CONNECTION_STATUS { - NoDeviceConnected, - DeviceConnected, - DeviceFailedEnumeration, - DeviceGeneralFailure, - DeviceCausedOvercurrent, - DeviceNotEnoughPower, - DeviceNotEnoughBandwidth, - DeviceHubNestedTooDeeply, - DeviceInLegacyHub -} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS; - -typedef enum USB_HUB_NODE { - UsbHub, - UsbMIParent -} USB_HUB_NODE; - -// Most of the structures below need to be packed -#include - -typedef struct _USB_DESCRIPTOR_REQUEST { - ULONG ConnectionIndex; - struct { - UCHAR bmRequest; - UCHAR bRequest; - USHORT wValue; - USHORT wIndex; - USHORT wLength; - } SetupPacket; -// UCHAR Data[0]; -} USB_DESCRIPTOR_REQUEST, *PUSB_DESCRIPTOR_REQUEST; - -typedef struct _USB_CONFIGURATION_DESCRIPTOR_SHORT { - USB_DESCRIPTOR_REQUEST req; - USB_CONFIGURATION_DESCRIPTOR desc; -} USB_CONFIGURATION_DESCRIPTOR_SHORT; - -typedef struct USB_INTERFACE_DESCRIPTOR { - UCHAR bLength; - UCHAR bDescriptorType; - UCHAR bInterfaceNumber; - UCHAR bAlternateSetting; - UCHAR bNumEndpoints; - UCHAR bInterfaceClass; - UCHAR bInterfaceSubClass; - UCHAR bInterfaceProtocol; - UCHAR iInterface; -} USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR; - -typedef struct _USB_NODE_CONNECTION_INFORMATION_EX { - ULONG ConnectionIndex; - USB_DEVICE_DESCRIPTOR DeviceDescriptor; - UCHAR CurrentConfigurationValue; - UCHAR Speed; - BOOLEAN DeviceIsHub; - USHORT DeviceAddress; - ULONG NumberOfOpenPipes; - USB_CONNECTION_STATUS ConnectionStatus; -// USB_PIPE_INFO PipeList[0]; -} USB_NODE_CONNECTION_INFORMATION_EX, *PUSB_NODE_CONNECTION_INFORMATION_EX; - -typedef union _USB_PROTOCOLS { - ULONG ul; - struct { - ULONG Usb110:1; - ULONG Usb200:1; - ULONG Usb300:1; - ULONG ReservedMBZ:29; - }; -} USB_PROTOCOLS, *PUSB_PROTOCOLS; - -typedef union _USB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS { - ULONG ul; - struct { - ULONG DeviceIsOperatingAtSuperSpeedOrHigher:1; - ULONG DeviceIsSuperSpeedCapableOrHigher:1; - ULONG ReservedMBZ:30; - }; -} USB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS, *PUSB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS; - -typedef struct _USB_NODE_CONNECTION_INFORMATION_EX_V2 { - ULONG ConnectionIndex; - ULONG Length; - USB_PROTOCOLS SupportedUsbProtocols; - USB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS Flags; -} USB_NODE_CONNECTION_INFORMATION_EX_V2, *PUSB_NODE_CONNECTION_INFORMATION_EX_V2; - -#include - -/* winusb.dll interface */ - -/* pipe policies */ -#define SHORT_PACKET_TERMINATE 0x01 -#define AUTO_CLEAR_STALL 0x02 -#define PIPE_TRANSFER_TIMEOUT 0x03 -#define IGNORE_SHORT_PACKETS 0x04 -#define ALLOW_PARTIAL_READS 0x05 -#define AUTO_FLUSH 0x06 -#define RAW_IO 0x07 -#define MAXIMUM_TRANSFER_SIZE 0x08 -/* libusbK */ -#define ISO_ALWAYS_START_ASAP 0x21 - -typedef enum _USBD_PIPE_TYPE { - UsbdPipeTypeControl, - UsbdPipeTypeIsochronous, - UsbdPipeTypeBulk, - UsbdPipeTypeInterrupt -} USBD_PIPE_TYPE; - -#include - -typedef struct _WINUSB_SETUP_PACKET { - UCHAR RequestType; - UCHAR Request; - USHORT Value; - USHORT Index; - USHORT Length; -} WINUSB_SETUP_PACKET, *PWINUSB_SETUP_PACKET; - -#include - -typedef void *WINUSB_INTERFACE_HANDLE, *PWINUSB_INTERFACE_HANDLE; - -typedef BOOL (WINAPI *WinUsb_AbortPipe_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID -); -typedef BOOL (WINAPI *WinUsb_ControlTransfer_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - WINUSB_SETUP_PACKET SetupPacket, - PUCHAR Buffer, - ULONG BufferLength, - PULONG LengthTransferred, - LPOVERLAPPED Overlapped -); -typedef BOOL (WINAPI *WinUsb_FlushPipe_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID -); -typedef BOOL (WINAPI *WinUsb_Free_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle -); -typedef BOOL (WINAPI *WinUsb_GetAssociatedInterface_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR AssociatedInterfaceIndex, - PWINUSB_INTERFACE_HANDLE AssociatedInterfaceHandle -); -typedef BOOL (WINAPI *WinUsb_Initialize_t)( - HANDLE DeviceHandle, - PWINUSB_INTERFACE_HANDLE InterfaceHandle -); -typedef BOOL (WINAPI *WinUsb_ReadPipe_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID, - PUCHAR Buffer, - ULONG BufferLength, - PULONG LengthTransferred, - LPOVERLAPPED Overlapped -); -typedef BOOL (WINAPI *WinUsb_ResetDevice_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle -); -typedef BOOL (WINAPI *WinUsb_ResetPipe_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID -); -typedef BOOL (WINAPI *WinUsb_SetCurrentAlternateSetting_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR AlternateSetting -); -typedef BOOL (WINAPI *WinUsb_SetPipePolicy_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID, - ULONG PolicyType, - ULONG ValueLength, - PVOID Value -); -typedef BOOL (WINAPI *WinUsb_WritePipe_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID, - PUCHAR Buffer, - ULONG BufferLength, - PULONG LengthTransferred, - LPOVERLAPPED Overlapped -); - -typedef PVOID WINUSB_ISOCH_BUFFER_HANDLE, *PWINUSB_ISOCH_BUFFER_HANDLE; - -typedef BOOL (WINAPI *WinUsb_RegisterIsochBuffer_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID, - PVOID Buffer, - ULONG BufferLength, - PWINUSB_ISOCH_BUFFER_HANDLE BufferHandle -); - -typedef BOOL (WINAPI *WinUsb_UnregisterIsochBuffer_t)( - WINUSB_ISOCH_BUFFER_HANDLE BufferHandle -); - -typedef BOOL (WINAPI *WinUsb_WriteIsochPipeAsap_t)( - WINUSB_ISOCH_BUFFER_HANDLE BufferHandle, - ULONG Offset, - ULONG Length, - BOOL ContinueStream, - LPOVERLAPPED Overlapped -); - -typedef LONG USBD_STATUS; -typedef struct { - ULONG Offset; - ULONG Length; - USBD_STATUS Status; -} USBD_ISO_PACKET_DESCRIPTOR, *PUSBD_ISO_PACKET_DESCRIPTOR; - -typedef BOOL (WINAPI *WinUsb_ReadIsochPipeAsap_t)( - PWINUSB_ISOCH_BUFFER_HANDLE BufferHandle, - ULONG Offset, - ULONG Length, - BOOL ContinueStream, - ULONG NumberOfPackets, - PUSBD_ISO_PACKET_DESCRIPTOR IsoPacketDescriptors, - LPOVERLAPPED Overlapped -); - -typedef struct { - USBD_PIPE_TYPE PipeType; - UCHAR PipeId; - USHORT MaximumPacketSize; - UCHAR Interval; - ULONG MaximumBytesPerInterval; -} WINUSB_PIPE_INFORMATION_EX, *PWINUSB_PIPE_INFORMATION_EX; - -typedef BOOL (WINAPI *WinUsb_QueryPipeEx_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR AlternateInterfaceHandle, - UCHAR PipeIndex, - PWINUSB_PIPE_INFORMATION_EX PipeInformationEx -); - -/* /!\ These must match the ones from the official libusbk.h */ -typedef enum _KUSB_FNID { - KUSB_FNID_Init, - KUSB_FNID_Free, - KUSB_FNID_ClaimInterface, - KUSB_FNID_ReleaseInterface, - KUSB_FNID_SetAltInterface, - KUSB_FNID_GetAltInterface, - KUSB_FNID_GetDescriptor, - KUSB_FNID_ControlTransfer, - KUSB_FNID_SetPowerPolicy, - KUSB_FNID_GetPowerPolicy, - KUSB_FNID_SetConfiguration, - KUSB_FNID_GetConfiguration, - KUSB_FNID_ResetDevice, - KUSB_FNID_Initialize, - KUSB_FNID_SelectInterface, - KUSB_FNID_GetAssociatedInterface, - KUSB_FNID_Clone, - KUSB_FNID_QueryInterfaceSettings, - KUSB_FNID_QueryDeviceInformation, - KUSB_FNID_SetCurrentAlternateSetting, - KUSB_FNID_GetCurrentAlternateSetting, - KUSB_FNID_QueryPipe, - KUSB_FNID_SetPipePolicy, - KUSB_FNID_GetPipePolicy, - KUSB_FNID_ReadPipe, - KUSB_FNID_WritePipe, - KUSB_FNID_ResetPipe, - KUSB_FNID_AbortPipe, - KUSB_FNID_FlushPipe, - KUSB_FNID_IsoReadPipe, - KUSB_FNID_IsoWritePipe, - KUSB_FNID_GetCurrentFrameNumber, - KUSB_FNID_GetOverlappedResult, - KUSB_FNID_GetProperty, - KUSB_FNID_COUNT, -} KUSB_FNID; - -typedef struct _KLIB_VERSION { - INT Major; - INT Minor; - INT Micro; - INT Nano; -} KLIB_VERSION, *PKLIB_VERSION; - -typedef BOOL (WINAPI *LibK_GetProcAddress_t)( - PVOID *ProcAddress, - ULONG DriverID, - ULONG FunctionID -); - -typedef VOID (WINAPI *LibK_GetVersion_t)( - PKLIB_VERSION Version -); - -//KISO_PACKET is equivalent of libusb_iso_packet_descriptor except uses absolute "offset" field instead of sequential Lengths -typedef struct _KISO_PACKET { - UINT offset; - USHORT actual_length; //changed from libusbk_shared.h "Length" for clarity - USHORT status; -} KISO_PACKET, *PKISO_PACKET; - -typedef enum _KISO_FLAG { - KISO_FLAG_NONE = 0, - KISO_FLAG_SET_START_FRAME = 0x00000001, -} KISO_FLAG; - -//KISO_CONTEXT is the conceptual equivalent of libusb_transfer except is isochronous-specific and must match libusbk's version -typedef struct _KISO_CONTEXT { - KISO_FLAG Flags; - UINT StartFrame; - SHORT ErrorCount; - SHORT NumberOfPackets; - UINT UrbHdrStatus; - KISO_PACKET IsoPackets[0]; -} KISO_CONTEXT, *PKISO_CONTEXT; - -typedef BOOL(WINAPI *WinUsb_IsoReadPipe_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID, - PUCHAR Buffer, - ULONG BufferLength, - LPOVERLAPPED Overlapped, - PKISO_CONTEXT IsoContext -); - -typedef BOOL(WINAPI *WinUsb_IsoWritePipe_t)( - WINUSB_INTERFACE_HANDLE InterfaceHandle, - UCHAR PipeID, - PUCHAR Buffer, - ULONG BufferLength, - LPOVERLAPPED Overlapped, - PKISO_CONTEXT IsoContext -); - -struct winusb_interface { - bool initialized; - bool CancelIoEx_supported; - WinUsb_AbortPipe_t AbortPipe; - WinUsb_ControlTransfer_t ControlTransfer; - WinUsb_FlushPipe_t FlushPipe; - WinUsb_Free_t Free; - WinUsb_GetAssociatedInterface_t GetAssociatedInterface; - WinUsb_Initialize_t Initialize; - WinUsb_ReadPipe_t ReadPipe; - WinUsb_ResetDevice_t ResetDevice; - WinUsb_ResetPipe_t ResetPipe; - WinUsb_SetCurrentAlternateSetting_t SetCurrentAlternateSetting; - WinUsb_SetPipePolicy_t SetPipePolicy; - WinUsb_WritePipe_t WritePipe; - - // Isochoronous functions for LibUSBk sub api: - WinUsb_IsoReadPipe_t IsoReadPipe; - WinUsb_IsoWritePipe_t IsoWritePipe; - - // Isochronous functions for Microsoft WinUSB sub api (native WinUSB): - WinUsb_RegisterIsochBuffer_t RegisterIsochBuffer; - WinUsb_UnregisterIsochBuffer_t UnregisterIsochBuffer; - WinUsb_WriteIsochPipeAsap_t WriteIsochPipeAsap; - WinUsb_ReadIsochPipeAsap_t ReadIsochPipeAsap; - WinUsb_QueryPipeEx_t QueryPipeEx; -}; - -/* hid.dll interface */ - -#define HIDP_STATUS_SUCCESS 0x110000 -typedef void * PHIDP_PREPARSED_DATA; - -#include - -typedef struct _HIDD_ATTIRBUTES { - ULONG Size; - USHORT VendorID; - USHORT ProductID; - USHORT VersionNumber; -} HIDD_ATTRIBUTES, *PHIDD_ATTRIBUTES; - -#include - -typedef USHORT USAGE; -typedef struct _HIDP_CAPS { - USAGE Usage; - USAGE UsagePage; - USHORT InputReportByteLength; - USHORT OutputReportByteLength; - USHORT FeatureReportByteLength; - USHORT Reserved[17]; - USHORT NumberLinkCollectionNodes; - USHORT NumberInputButtonCaps; - USHORT NumberInputValueCaps; - USHORT NumberInputDataIndices; - USHORT NumberOutputButtonCaps; - USHORT NumberOutputValueCaps; - USHORT NumberOutputDataIndices; - USHORT NumberFeatureButtonCaps; - USHORT NumberFeatureValueCaps; - USHORT NumberFeatureDataIndices; -} HIDP_CAPS, *PHIDP_CAPS; - -typedef enum _HIDP_REPORT_TYPE { - HidP_Input, - HidP_Output, - HidP_Feature -} HIDP_REPORT_TYPE; - -typedef struct _HIDP_VALUE_CAPS { - USAGE UsagePage; - UCHAR ReportID; - BOOLEAN IsAlias; - USHORT BitField; - USHORT LinkCollection; - USAGE LinkUsage; - USAGE LinkUsagePage; - BOOLEAN IsRange; - BOOLEAN IsStringRange; - BOOLEAN IsDesignatorRange; - BOOLEAN IsAbsolute; - BOOLEAN HasNull; - UCHAR Reserved; - USHORT BitSize; - USHORT ReportCount; - USHORT Reserved2[5]; - ULONG UnitsExp; - ULONG Units; - LONG LogicalMin, LogicalMax; - LONG PhysicalMin, PhysicalMax; - union { - struct { - USAGE UsageMin, UsageMax; - USHORT StringMin, StringMax; - USHORT DesignatorMin, DesignatorMax; - USHORT DataIndexMin, DataIndexMax; - } Range; - struct { - USAGE Usage, Reserved1; - USHORT StringIndex, Reserved2; - USHORT DesignatorIndex, Reserved3; - USHORT DataIndex, Reserved4; - } NotRange; - } u; -} HIDP_VALUE_CAPS, *PHIDP_VALUE_CAPS; - -DLL_DECLARE_HANDLE(hid); -DLL_DECLARE_FUNC(WINAPI, VOID, HidD_GetHidGuid, (LPGUID)); -DLL_DECLARE_FUNC(WINAPI, BOOL, HidD_GetAttributes, (HANDLE, PHIDD_ATTRIBUTES)); -DLL_DECLARE_FUNC(WINAPI, BOOL, HidD_GetPreparsedData, (HANDLE, PHIDP_PREPARSED_DATA *)); -DLL_DECLARE_FUNC(WINAPI, BOOL, HidD_FreePreparsedData, (PHIDP_PREPARSED_DATA)); -DLL_DECLARE_FUNC(WINAPI, BOOL, HidD_GetManufacturerString, (HANDLE, PVOID, ULONG)); -DLL_DECLARE_FUNC(WINAPI, BOOL, HidD_GetProductString, (HANDLE, PVOID, ULONG)); -DLL_DECLARE_FUNC(WINAPI, BOOL, HidD_GetSerialNumberString, (HANDLE, PVOID, ULONG)); -DLL_DECLARE_FUNC(WINAPI, BOOL, HidD_GetIndexedString, (HANDLE, ULONG, PVOID, ULONG)); -DLL_DECLARE_FUNC(WINAPI, LONG, HidP_GetCaps, (PHIDP_PREPARSED_DATA, PHIDP_CAPS)); -DLL_DECLARE_FUNC(WINAPI, BOOL, HidD_SetNumInputBuffers, (HANDLE, ULONG)); -DLL_DECLARE_FUNC(WINAPI, BOOL, HidD_GetPhysicalDescriptor, (HANDLE, PVOID, ULONG)); -DLL_DECLARE_FUNC(WINAPI, BOOL, HidD_FlushQueue, (HANDLE)); -DLL_DECLARE_FUNC(WINAPI, BOOL, HidP_GetValueCaps, (HIDP_REPORT_TYPE, PHIDP_VALUE_CAPS, PULONG, PHIDP_PREPARSED_DATA)); diff --git a/Externals/libusb/libusb/strerror.c b/Externals/libusb/libusb/strerror.c deleted file mode 100644 index a1b474e94b48..000000000000 --- a/Externals/libusb/libusb/strerror.c +++ /dev/null @@ -1,233 +0,0 @@ -/* - * libusb strerror code - * Copyright © 2013 Hans de Goede - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include -#include -#if defined(HAVE_STRINGS_H) -#include -#endif - -#include "libusbi.h" - -#if defined(_MSC_VER) -#define strncasecmp _strnicmp -#endif - -static size_t usbi_locale = 0; - -/** \ingroup libusb_misc - * How to add a new \ref libusb_strerror() translation: - *
    - *
  1. Download the latest \c strerror.c from:
    - * https://raw.github.com/libusb/libusb/master/libusb/strerror.c
  2. - *
  3. Open the file in an UTF-8 capable editor
  4. - *
  5. Add the 2 letter ISO 639-1 - * code for your locale at the end of \c usbi_locale_supported[]
    - * Eg. for Chinese, you would add "zh" so that: - * \code... usbi_locale_supported[] = { "en", "nl", "fr" };\endcode - * becomes: - * \code... usbi_locale_supported[] = { "en", "nl", "fr", "zh" };\endcode
  6. - *
  7. Copy the { / * English (en) * / ... } section and add it at the end of \c usbi_localized_errors
    - * Eg. for Chinese, the last section of \c usbi_localized_errors could look like: - * \code - * }, { / * Chinese (zh) * / - * "Success", - * ... - * "Other error", - * } - * };\endcode
  8. - *
  9. Translate each of the English messages from the section you copied into your language
  10. - *
  11. Save the file (in UTF-8 format) and send it to \c libusb-devel\@lists.sourceforge.net
  12. - *
- */ - -static const char* usbi_locale_supported[] = { "en", "nl", "fr", "ru", "de", "hu" }; -static const char* usbi_localized_errors[ARRAYSIZE(usbi_locale_supported)][LIBUSB_ERROR_COUNT] = { - { /* English (en) */ - "Success", - "Input/Output Error", - "Invalid parameter", - "Access denied (insufficient permissions)", - "No such device (it may have been disconnected)", - "Entity not found", - "Resource busy", - "Operation timed out", - "Overflow", - "Pipe error", - "System call interrupted (perhaps due to signal)", - "Insufficient memory", - "Operation not supported or unimplemented on this platform", - "Other error", - }, { /* Dutch (nl) */ - "Gelukt", - "Invoer-/uitvoerfout", - "Ongeldig argument", - "Toegang geweigerd (onvoldoende toegangsrechten)", - "Apparaat bestaat niet (verbinding met apparaat verbroken?)", - "Niet gevonden", - "Apparaat of hulpbron is bezig", - "Bewerking verlopen", - "Waarde is te groot", - "Gebroken pijp", - "Onderbroken systeemaanroep", - "Onvoldoende geheugen beschikbaar", - "Bewerking wordt niet ondersteund", - "Andere fout", - }, { /* French (fr) */ - "Succès", - "Erreur d'entrée/sortie", - "Paramètre invalide", - "Accès refusé (permissions insuffisantes)", - "Périphérique introuvable (peut-être déconnecté)", - "Elément introuvable", - "Resource déjà occupée", - "Operation expirée", - "Débordement", - "Erreur de pipe", - "Appel système abandonné (peut-être à cause d’un signal)", - "Mémoire insuffisante", - "Opération non supportée or non implémentée sur cette plateforme", - "Autre erreur", - }, { /* Russian (ru) */ - "Успех", - "Ошибка ввода/вывода", - "Неверный параметр", - "Доступ запрещён (не хватает прав)", - "Устройство отсутствует (возможно, оно было отсоединено)", - "Элемент не найден", - "Ресурс занят", - "Истекло время ожидания операции", - "Переполнение", - "Ошибка канала", - "Системный вызов прерван (возможно, сигналом)", - "Память исчерпана", - "Операция не поддерживается данной платформой", - "Неизвестная ошибка" - - }, { /* German (de) */ - "Erfolgreich", - "Eingabe-/Ausgabefehler", - "Ungültiger Parameter", - "Keine Berechtigung (Zugriffsrechte fehlen)", - "Kein passendes Gerät gefunden (es könnte entfernt worden sein)", - "Entität nicht gefunden", - "Die Ressource ist belegt", - "Die Wartezeit für die Operation ist abgelaufen", - "Mehr Daten empfangen als erwartet", - "Datenübergabe unterbrochen (broken pipe)", - "Unterbrechung während des Betriebssystemaufrufs", - "Nicht genügend Hauptspeicher verfügbar", - "Die Operation wird nicht unterstützt oder ist auf dieser Platform nicht implementiert", - "Allgemeiner Fehler", - }, { /* Hungarian (hu) */ - "Sikeres", - "Be-/kimeneti hiba", - "Érvénytelen paraméter", - "Hozzáférés megtagadva", - "Az eszköz nem található (eltávolították?)", - "Nem található", - "Az erőforrás foglalt", - "Időtúllépés", - "Túlcsordulás", - "Törött adatcsatorna", - "Rendszerhívás megszakítva", - "Nincs elég memória", - "A művelet nem támogatott ezen a rendszeren", - "Általános hiba", - } -}; - -/** \ingroup libusb_misc - * Set the language, and only the language, not the encoding! used for - * translatable libusb messages. - * - * This takes a locale string in the default setlocale format: lang[-region] - * or lang[_country_region][.codeset]. Only the lang part of the string is - * used, and only 2 letter ISO 639-1 codes are accepted for it, such as "de". - * The optional region, country_region or codeset parts are ignored. This - * means that functions which return translatable strings will NOT honor the - * specified encoding. - * All strings returned are encoded as UTF-8 strings. - * - * If libusb_setlocale() is not called, all messages will be in English. - * - * The following functions return translatable strings: libusb_strerror(). - * Note that the libusb log messages controlled through libusb_set_debug() - * are not translated, they are always in English. - * - * For POSIX UTF-8 environments if you want libusb to follow the standard - * locale settings, call libusb_setlocale(setlocale(LC_MESSAGES, NULL)), - * after your app has done its locale setup. - * - * \param locale locale-string in the form of lang[_country_region][.codeset] - * or lang[-region], where lang is a 2 letter ISO 639-1 code - * \returns LIBUSB_SUCCESS on success - * \returns LIBUSB_ERROR_INVALID_PARAM if the locale doesn't meet the requirements - * \returns LIBUSB_ERROR_NOT_FOUND if the requested language is not supported - * \returns a LIBUSB_ERROR code on other errors - */ - -int API_EXPORTED libusb_setlocale(const char *locale) -{ - size_t i; - - if ( (locale == NULL) || (strlen(locale) < 2) - || ((strlen(locale) > 2) && (locale[2] != '-') && (locale[2] != '_') && (locale[2] != '.')) ) - return LIBUSB_ERROR_INVALID_PARAM; - - for (i=0; i= ARRAYSIZE(usbi_locale_supported)) { - return LIBUSB_ERROR_NOT_FOUND; - } - - usbi_locale = i; - - return LIBUSB_SUCCESS; -} - -/** \ingroup libusb_misc - * Returns a constant string with a short description of the given error code, - * this description is intended for displaying to the end user and will be in - * the language set by libusb_setlocale(). - * - * The returned string is encoded in UTF-8. - * - * The messages always start with a capital letter and end without any dot. - * The caller must not free() the returned string. - * - * \param errcode the error code whose description is desired - * \returns a short description of the error code in UTF-8 encoding - */ -DEFAULT_VISIBILITY const char* LIBUSB_CALL libusb_strerror(enum libusb_error errcode) -{ - int errcode_index = -errcode; - - if ((errcode_index < 0) || (errcode_index >= LIBUSB_ERROR_COUNT)) { - /* "Other Error", which should always be our last message, is returned */ - errcode_index = LIBUSB_ERROR_COUNT - 1; - } - - return usbi_localized_errors[usbi_locale][errcode_index]; -} diff --git a/Externals/libusb/libusb/sync.c b/Externals/libusb/libusb/sync.c deleted file mode 100644 index a609f65f44f4..000000000000 --- a/Externals/libusb/libusb/sync.c +++ /dev/null @@ -1,327 +0,0 @@ -/* - * Synchronous I/O functions for libusb - * Copyright © 2007-2008 Daniel Drake - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include -#include -#include -#include - -#include "libusbi.h" - -/** - * @defgroup libusb_syncio Synchronous device I/O - * - * This page documents libusb's synchronous (blocking) API for USB device I/O. - * This interface is easy to use but has some limitations. More advanced users - * may wish to consider using the \ref libusb_asyncio "asynchronous I/O API" instead. - */ - -static void LIBUSB_CALL sync_transfer_cb(struct libusb_transfer *transfer) -{ - int *completed = transfer->user_data; - *completed = 1; - usbi_dbg("actual_length=%d", transfer->actual_length); - /* caller interprets result and frees transfer */ -} - -static void sync_transfer_wait_for_completion(struct libusb_transfer *transfer) -{ - int r, *completed = transfer->user_data; - struct libusb_context *ctx = HANDLE_CTX(transfer->dev_handle); - - while (!*completed) { - r = libusb_handle_events_completed(ctx, completed); - if (r < 0) { - if (r == LIBUSB_ERROR_INTERRUPTED) - continue; - usbi_err(ctx, "libusb_handle_events failed: %s, cancelling transfer and retrying", - libusb_error_name(r)); - libusb_cancel_transfer(transfer); - continue; - } - } -} - -/** \ingroup libusb_syncio - * Perform a USB control transfer. - * - * The direction of the transfer is inferred from the bmRequestType field of - * the setup packet. - * - * The wValue, wIndex and wLength fields values should be given in host-endian - * byte order. - * - * \param dev_handle a handle for the device to communicate with - * \param bmRequestType the request type field for the setup packet - * \param bRequest the request field for the setup packet - * \param wValue the value field for the setup packet - * \param wIndex the index field for the setup packet - * \param data a suitably-sized data buffer for either input or output - * (depending on direction bits within bmRequestType) - * \param wLength the length field for the setup packet. The data buffer should - * be at least this size. - * \param timeout timeout (in millseconds) that this function should wait - * before giving up due to no response being received. For an unlimited - * timeout, use value 0. - * \returns on success, the number of bytes actually transferred - * \returns LIBUSB_ERROR_TIMEOUT if the transfer timed out - * \returns LIBUSB_ERROR_PIPE if the control request was not supported by the - * device - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns LIBUSB_ERROR_BUSY if called from event handling context - * \returns LIBUSB_ERROR_INVALID_PARAM if the transfer size is larger than - * the operating system and/or hardware can support - * \returns another LIBUSB_ERROR code on other failures - */ -int API_EXPORTED libusb_control_transfer(libusb_device_handle *dev_handle, - uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, - unsigned char *data, uint16_t wLength, unsigned int timeout) -{ - struct libusb_transfer *transfer; - unsigned char *buffer; - int completed = 0; - int r; - - if (usbi_handling_events(HANDLE_CTX(dev_handle))) - return LIBUSB_ERROR_BUSY; - - transfer = libusb_alloc_transfer(0); - if (!transfer) - return LIBUSB_ERROR_NO_MEM; - - buffer = (unsigned char*) malloc(LIBUSB_CONTROL_SETUP_SIZE + wLength); - if (!buffer) { - libusb_free_transfer(transfer); - return LIBUSB_ERROR_NO_MEM; - } - - libusb_fill_control_setup(buffer, bmRequestType, bRequest, wValue, wIndex, - wLength); - if ((bmRequestType & LIBUSB_ENDPOINT_DIR_MASK) == LIBUSB_ENDPOINT_OUT) - memcpy(buffer + LIBUSB_CONTROL_SETUP_SIZE, data, wLength); - - libusb_fill_control_transfer(transfer, dev_handle, buffer, - sync_transfer_cb, &completed, timeout); - transfer->flags = LIBUSB_TRANSFER_FREE_BUFFER; - r = libusb_submit_transfer(transfer); - if (r < 0) { - libusb_free_transfer(transfer); - return r; - } - - sync_transfer_wait_for_completion(transfer); - - if ((bmRequestType & LIBUSB_ENDPOINT_DIR_MASK) == LIBUSB_ENDPOINT_IN) - memcpy(data, libusb_control_transfer_get_data(transfer), - transfer->actual_length); - - switch (transfer->status) { - case LIBUSB_TRANSFER_COMPLETED: - r = transfer->actual_length; - break; - case LIBUSB_TRANSFER_TIMED_OUT: - r = LIBUSB_ERROR_TIMEOUT; - break; - case LIBUSB_TRANSFER_STALL: - r = LIBUSB_ERROR_PIPE; - break; - case LIBUSB_TRANSFER_NO_DEVICE: - r = LIBUSB_ERROR_NO_DEVICE; - break; - case LIBUSB_TRANSFER_OVERFLOW: - r = LIBUSB_ERROR_OVERFLOW; - break; - case LIBUSB_TRANSFER_ERROR: - case LIBUSB_TRANSFER_CANCELLED: - r = LIBUSB_ERROR_IO; - break; - default: - usbi_warn(HANDLE_CTX(dev_handle), - "unrecognised status code %d", transfer->status); - r = LIBUSB_ERROR_OTHER; - } - - libusb_free_transfer(transfer); - return r; -} - -static int do_sync_bulk_transfer(struct libusb_device_handle *dev_handle, - unsigned char endpoint, unsigned char *buffer, int length, - int *transferred, unsigned int timeout, unsigned char type) -{ - struct libusb_transfer *transfer; - int completed = 0; - int r; - - if (usbi_handling_events(HANDLE_CTX(dev_handle))) - return LIBUSB_ERROR_BUSY; - - transfer = libusb_alloc_transfer(0); - if (!transfer) - return LIBUSB_ERROR_NO_MEM; - - libusb_fill_bulk_transfer(transfer, dev_handle, endpoint, buffer, length, - sync_transfer_cb, &completed, timeout); - transfer->type = type; - - r = libusb_submit_transfer(transfer); - if (r < 0) { - libusb_free_transfer(transfer); - return r; - } - - sync_transfer_wait_for_completion(transfer); - - if (transferred) - *transferred = transfer->actual_length; - - switch (transfer->status) { - case LIBUSB_TRANSFER_COMPLETED: - r = 0; - break; - case LIBUSB_TRANSFER_TIMED_OUT: - r = LIBUSB_ERROR_TIMEOUT; - break; - case LIBUSB_TRANSFER_STALL: - r = LIBUSB_ERROR_PIPE; - break; - case LIBUSB_TRANSFER_OVERFLOW: - r = LIBUSB_ERROR_OVERFLOW; - break; - case LIBUSB_TRANSFER_NO_DEVICE: - r = LIBUSB_ERROR_NO_DEVICE; - break; - case LIBUSB_TRANSFER_ERROR: - case LIBUSB_TRANSFER_CANCELLED: - r = LIBUSB_ERROR_IO; - break; - default: - usbi_warn(HANDLE_CTX(dev_handle), - "unrecognised status code %d", transfer->status); - r = LIBUSB_ERROR_OTHER; - } - - libusb_free_transfer(transfer); - return r; -} - -/** \ingroup libusb_syncio - * Perform a USB bulk transfer. The direction of the transfer is inferred from - * the direction bits of the endpoint address. - * - * For bulk reads, the length field indicates the maximum length of - * data you are expecting to receive. If less data arrives than expected, - * this function will return that data, so be sure to check the - * transferred output parameter. - * - * You should also check the transferred parameter for bulk writes. - * Not all of the data may have been written. - * - * Also check transferred when dealing with a timeout error code. - * libusb may have to split your transfer into a number of chunks to satisfy - * underlying O/S requirements, meaning that the timeout may expire after - * the first few chunks have completed. libusb is careful not to lose any data - * that may have been transferred; do not assume that timeout conditions - * indicate a complete lack of I/O. - * - * \param dev_handle a handle for the device to communicate with - * \param endpoint the address of a valid endpoint to communicate with - * \param data a suitably-sized data buffer for either input or output - * (depending on endpoint) - * \param length for bulk writes, the number of bytes from data to be sent. for - * bulk reads, the maximum number of bytes to receive into the data buffer. - * \param transferred output location for the number of bytes actually - * transferred. Since version 1.0.21 (\ref LIBUSB_API_VERSION >= 0x01000105), - * it is legal to pass a NULL pointer if you do not wish to receive this - * information. - * \param timeout timeout (in millseconds) that this function should wait - * before giving up due to no response being received. For an unlimited - * timeout, use value 0. - * - * \returns 0 on success (and populates transferred) - * \returns LIBUSB_ERROR_TIMEOUT if the transfer timed out (and populates - * transferred) - * \returns LIBUSB_ERROR_PIPE if the endpoint halted - * \returns LIBUSB_ERROR_OVERFLOW if the device offered more data, see - * \ref libusb_packetoverflow - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns LIBUSB_ERROR_BUSY if called from event handling context - * \returns another LIBUSB_ERROR code on other failures - */ -int API_EXPORTED libusb_bulk_transfer(struct libusb_device_handle *dev_handle, - unsigned char endpoint, unsigned char *data, int length, int *transferred, - unsigned int timeout) -{ - return do_sync_bulk_transfer(dev_handle, endpoint, data, length, - transferred, timeout, LIBUSB_TRANSFER_TYPE_BULK); -} - -/** \ingroup libusb_syncio - * Perform a USB interrupt transfer. The direction of the transfer is inferred - * from the direction bits of the endpoint address. - * - * For interrupt reads, the length field indicates the maximum length - * of data you are expecting to receive. If less data arrives than expected, - * this function will return that data, so be sure to check the - * transferred output parameter. - * - * You should also check the transferred parameter for interrupt - * writes. Not all of the data may have been written. - * - * Also check transferred when dealing with a timeout error code. - * libusb may have to split your transfer into a number of chunks to satisfy - * underlying O/S requirements, meaning that the timeout may expire after - * the first few chunks have completed. libusb is careful not to lose any data - * that may have been transferred; do not assume that timeout conditions - * indicate a complete lack of I/O. - * - * The default endpoint bInterval value is used as the polling interval. - * - * \param dev_handle a handle for the device to communicate with - * \param endpoint the address of a valid endpoint to communicate with - * \param data a suitably-sized data buffer for either input or output - * (depending on endpoint) - * \param length for bulk writes, the number of bytes from data to be sent. for - * bulk reads, the maximum number of bytes to receive into the data buffer. - * \param transferred output location for the number of bytes actually - * transferred. Since version 1.0.21 (\ref LIBUSB_API_VERSION >= 0x01000105), - * it is legal to pass a NULL pointer if you do not wish to receive this - * information. - * \param timeout timeout (in millseconds) that this function should wait - * before giving up due to no response being received. For an unlimited - * timeout, use value 0. - * - * \returns 0 on success (and populates transferred) - * \returns LIBUSB_ERROR_TIMEOUT if the transfer timed out - * \returns LIBUSB_ERROR_PIPE if the endpoint halted - * \returns LIBUSB_ERROR_OVERFLOW if the device offered more data, see - * \ref libusb_packetoverflow - * \returns LIBUSB_ERROR_NO_DEVICE if the device has been disconnected - * \returns LIBUSB_ERROR_BUSY if called from event handling context - * \returns another LIBUSB_ERROR code on other error - */ -int API_EXPORTED libusb_interrupt_transfer( - struct libusb_device_handle *dev_handle, unsigned char endpoint, - unsigned char *data, int length, int *transferred, unsigned int timeout) -{ - return do_sync_bulk_transfer(dev_handle, endpoint, data, length, - transferred, timeout, LIBUSB_TRANSFER_TYPE_INTERRUPT); -} diff --git a/Externals/libusb/libusb/version.h b/Externals/libusb/libusb/version.h deleted file mode 100644 index a7550b0a652c..000000000000 --- a/Externals/libusb/libusb/version.h +++ /dev/null @@ -1,18 +0,0 @@ -/* This file is parsed by m4 and windres and RC.EXE so please keep it simple. */ -#include "version_nano.h" -#ifndef LIBUSB_MAJOR -#define LIBUSB_MAJOR 1 -#endif -#ifndef LIBUSB_MINOR -#define LIBUSB_MINOR 0 -#endif -#ifndef LIBUSB_MICRO -#define LIBUSB_MICRO 23 -#endif -#ifndef LIBUSB_NANO -#define LIBUSB_NANO 0 -#endif -/* LIBUSB_RC is the release candidate suffix. Should normally be empty. */ -#ifndef LIBUSB_RC -#define LIBUSB_RC "-rc1" -#endif diff --git a/Externals/libusb/libusb/version_nano.h b/Externals/libusb/libusb/version_nano.h deleted file mode 100644 index e549eee7304f..000000000000 --- a/Externals/libusb/libusb/version_nano.h +++ /dev/null @@ -1 +0,0 @@ -#define LIBUSB_NANO 11367 diff --git a/Externals/libusb/msvc/config.h b/Externals/libusb/msvc/config.h deleted file mode 100644 index b20d99ba71ec..000000000000 --- a/Externals/libusb/msvc/config.h +++ /dev/null @@ -1,51 +0,0 @@ -/* config.h. Manual config for MSVC. */ - -#ifndef _MSC_VER -#warn "msvc/config.h shouldn't be included for your development environment." -#error "Please make sure the msvc/ directory is removed from your build path." -#endif - -/* Visual Studio 2015 and later defines timespec */ -#if (_MSC_VER >= 1900) -#define _TIMESPEC_DEFINED 1 -#endif - -/* Disable: warning C4200: nonstandard extension used : zero-sized array in struct/union */ -#pragma warning(disable:4200) -/* Disable: warning C4324: structure was padded due to __declspec(align()) */ -#pragma warning(disable:4324) -/* Disable: warning C6258: Using TerminateThread does not allow proper thread clean up */ -#pragma warning(disable:6258) -/* Disable: warning C4996: 'GetVersionA': was declared deprecated */ -#pragma warning(disable:4996) - -#if defined(_PREFAST_) -/* Disable "Banned API" errors when using the MS's WDK OACR/Prefast */ -#pragma warning(disable:28719) -/* Disable "The function 'InitializeCriticalSection' must be called from within a try/except block" */ -#pragma warning(disable:28125) -#endif - -/* Default visibility */ -#define DEFAULT_VISIBILITY /**/ - -/* Enable global message logging */ -#define ENABLE_LOGGING 1 - -/* Uncomment to start with debug message logging enabled */ -// #define ENABLE_DEBUG_LOGGING 1 - -/* Uncomment to enabling logging to system log */ -// #define USE_SYSTEM_LOGGING_FACILITY - -/* type of second poll() argument */ -#define POLL_NFDS_TYPE unsigned int - -/* Windows/WinCE backend */ -#if defined(_WIN32_WCE) -#define OS_WINCE 1 -#define HAVE_MISSING_H -#else -#define OS_WINDOWS 1 -#define HAVE_SYS_TYPES_H 1 -#endif diff --git a/Externals/libusb/travis-autogen.sh b/Externals/libusb/travis-autogen.sh deleted file mode 100755 index cdd8781de8cf..000000000000 --- a/Externals/libusb/travis-autogen.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -# Warnings enabled -CFLAGS="-Wall -Wextra" - -CFLAGS+=" -Wbad-function-cast" -#CFLAGS+=" -Wcast-align" -CFLAGS+=" -Wchar-subscripts" -CFLAGS+=" -Wempty-body" -CFLAGS+=" -Wformat" -CFLAGS+=" -Wformat-security" -CFLAGS+=" -Winit-self" -CFLAGS+=" -Winline" -CFLAGS+=" -Wmissing-declarations" -CFLAGS+=" -Wmissing-include-dirs" -CFLAGS+=" -Wmissing-prototypes" -CFLAGS+=" -Wnested-externs" -CFLAGS+=" -Wold-style-definition" -CFLAGS+=" -Wpointer-arith" -CFLAGS+=" -Wredundant-decls" -CFLAGS+=" -Wshadow" -CFLAGS+=" -Wstrict-prototypes" -CFLAGS+=" -Wswitch-enum" -CFLAGS+=" -Wundef" -CFLAGS+=" -Wuninitialized" -CFLAGS+=" -Wunused" -CFLAGS+=" -Wwrite-strings" - -# warnings disabled on purpose -CFLAGS+=" -Wno-unused-parameter" -CFLAGS+=" -Wno-unused-function" -CFLAGS+=" -Wno-deprecated-declarations" - -# should be removed and the code fixed -CFLAGS+=" -Wno-incompatible-pointer-types-discards-qualifiers" - -export CFLAGS - -./autogen.sh "$@" diff --git a/Externals/mGBA/mgba.vcxproj b/Externals/mGBA/mgba.vcxproj index ab62ea7edc5e..edb4d6900705 100644 --- a/Externals/mGBA/mgba.vcxproj +++ b/Externals/mGBA/mgba.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/mGBA/mgba.vcxproj.filters b/Externals/mGBA/mgba.vcxproj.filters index b5e7b0ed6af0..a4a0763858c0 100644 --- a/Externals/mGBA/mgba.vcxproj.filters +++ b/Externals/mGBA/mgba.vcxproj.filters @@ -1,5 +1,5 @@  - + Source Files diff --git a/Externals/mbedtls/3rdparty/.gitignore b/Externals/mbedtls/3rdparty/.gitignore new file mode 100644 index 000000000000..5fc607b9e2fb --- /dev/null +++ b/Externals/mbedtls/3rdparty/.gitignore @@ -0,0 +1 @@ +/Makefile diff --git a/Externals/mbedtls/3rdparty/CMakeLists.txt b/Externals/mbedtls/3rdparty/CMakeLists.txt new file mode 100644 index 000000000000..18945e52ee75 --- /dev/null +++ b/Externals/mbedtls/3rdparty/CMakeLists.txt @@ -0,0 +1,17 @@ +list (APPEND thirdparty_src) +list (APPEND thirdparty_lib) +list (APPEND thirdparty_inc_public) +list (APPEND thirdparty_inc) +list (APPEND thirdparty_def) + +execute_process(COMMAND ${MBEDTLS_PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/config.py -f ${CMAKE_CURRENT_SOURCE_DIR}/../include/mbedtls/config.h get MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED RESULT_VARIABLE result) + +if(${result} EQUAL 0) + add_subdirectory(everest) +endif() + +set(thirdparty_src ${thirdparty_src} PARENT_SCOPE) +set(thirdparty_lib ${thirdparty_lib} PARENT_SCOPE) +set(thirdparty_inc_public ${thirdparty_inc_public} PARENT_SCOPE) +set(thirdparty_inc ${thirdparty_inc} PARENT_SCOPE) +set(thirdparty_def ${thirdparty_def} PARENT_SCOPE) diff --git a/Externals/mbedtls/3rdparty/Makefile.inc b/Externals/mbedtls/3rdparty/Makefile.inc new file mode 100644 index 000000000000..0ed85af51ec2 --- /dev/null +++ b/Externals/mbedtls/3rdparty/Makefile.inc @@ -0,0 +1,2 @@ +THIRDPARTY_DIR = $(dir $(lastword $(MAKEFILE_LIST))) +include $(THIRDPARTY_DIR)/everest/Makefile.inc diff --git a/Externals/mbedtls/3rdparty/everest/.gitignore b/Externals/mbedtls/3rdparty/everest/.gitignore new file mode 100644 index 000000000000..6eb25f66ad51 --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/.gitignore @@ -0,0 +1,2 @@ +*.o +Makefile diff --git a/Externals/mbedtls/3rdparty/everest/CMakeLists.txt b/Externals/mbedtls/3rdparty/everest/CMakeLists.txt new file mode 100644 index 000000000000..d81d995f1fba --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/CMakeLists.txt @@ -0,0 +1,28 @@ +list (APPEND everest_src) +list (APPEND everest_inc_public) +list (APPEND everest_inc) +list (APPEND everest_def) + +set(everest_src + ${CMAKE_CURRENT_SOURCE_DIR}/library/everest.c + ${CMAKE_CURRENT_SOURCE_DIR}/library/x25519.c + ${CMAKE_CURRENT_SOURCE_DIR}/library/Hacl_Curve25519_joined.c +) + +list(APPEND everest_inc_public ${CMAKE_CURRENT_SOURCE_DIR}/include) +list(APPEND everest_inc ${CMAKE_CURRENT_SOURCE_DIR}/include/everest ${CMAKE_CURRENT_SOURCE_DIR}/include/everest/kremlib) + +if(INSTALL_MBEDTLS_HEADERS) + + install(DIRECTORY include/everest + DESTINATION include + FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ + DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE + FILES_MATCHING PATTERN "*.h") + +endif(INSTALL_MBEDTLS_HEADERS) + +set(thirdparty_src ${thirdparty_src} ${everest_src} PARENT_SCOPE) +set(thirdparty_inc_public ${thirdparty_inc_public} ${everest_inc_public} PARENT_SCOPE) +set(thirdparty_inc ${thirdparty_inc} ${everest_inc} PARENT_SCOPE) +set(thirdparty_def ${thirdparty_def} ${everest_def} PARENT_SCOPE) diff --git a/Externals/mbedtls/3rdparty/everest/Makefile.inc b/Externals/mbedtls/3rdparty/everest/Makefile.inc new file mode 100644 index 000000000000..77a6b496547e --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/Makefile.inc @@ -0,0 +1,6 @@ +THIRDPARTY_INCLUDES+=-I../3rdparty/everest/include -I../3rdparty/everest/include/everest -I../3rdparty/everest/include/everest/kremlib + +THIRDPARTY_CRYPTO_OBJECTS+= \ + ../3rdparty/everest/library/everest.o \ + ../3rdparty/everest/library/x25519.o \ + ../3rdparty/everest/library/Hacl_Curve25519_joined.o diff --git a/Externals/mbedtls/3rdparty/everest/README.md b/Externals/mbedtls/3rdparty/everest/README.md new file mode 100644 index 000000000000..0e254666260f --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/README.md @@ -0,0 +1,5 @@ +The files in this directory stem from [Project Everest](https://project-everest.github.io/) and are distributed under the Apache 2.0 license. + +This is a formally verified implementation of Curve25519-based handshakes. The C code is automatically derived from the (verified) [original implementation](https://github.com/project-everest/hacl-star/tree/master/code/curve25519) in the [F* language](https://github.com/fstarlang/fstar) by [KreMLin](https://github.com/fstarlang/kremlin). In addition to the improved safety and security of the implementation, it is also significantly faster than the default implementation of Curve25519 in mbedTLS. + +The caveat is that not all platforms are supported, although the version in `everest/library/legacy` should work on most systems. The main issue is that some platforms do not provide a 128-bit integer type and KreMLin therefore has to use additional (also verified) code to simulate them, resulting in less of a performance gain overall. Explictly supported platforms are currently `x86` and `x86_64` using gcc or clang, and Visual C (2010 and later). diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/Hacl_Curve25519.h b/Externals/mbedtls/3rdparty/everest/include/everest/Hacl_Curve25519.h new file mode 100644 index 000000000000..e3f5ba44b2e8 --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/Hacl_Curve25519.h @@ -0,0 +1,21 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +/* This file was generated by KreMLin + * KreMLin invocation: /mnt/e/everest/verify/kremlin/krml -fc89 -fparentheses -fno-shadow -header /mnt/e/everest/verify/hdrcLh -minimal -fbuiltin-uint128 -fc89 -fparentheses -fno-shadow -header /mnt/e/everest/verify/hdrcLh -minimal -I /mnt/e/everest/verify/hacl-star/code/lib/kremlin -I /mnt/e/everest/verify/kremlin/kremlib/compat -I /mnt/e/everest/verify/hacl-star/specs -I /mnt/e/everest/verify/hacl-star/specs/old -I . -ccopt -march=native -verbose -ldopt -flto -tmpdir x25519-c -I ../bignum -bundle Hacl.Curve25519=* -minimal -add-include "kremlib.h" -skip-compilation x25519-c/out.krml -o x25519-c/Hacl_Curve25519.c + * F* version: 059db0c8 + * KreMLin version: 916c37ac + */ + + + +#ifndef __Hacl_Curve25519_H +#define __Hacl_Curve25519_H + + +#include "kremlib.h" + +void Hacl_Curve25519_crypto_scalarmult(uint8_t *mypublic, uint8_t *secret, uint8_t *basepoint); + +#define __Hacl_Curve25519_H_DEFINED +#endif diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/everest.h b/Externals/mbedtls/3rdparty/everest/include/everest/everest.h new file mode 100644 index 000000000000..58065001f477 --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/everest.h @@ -0,0 +1,234 @@ +/* + * Interface to code from Project Everest + * + * Copyright 2016-2018 INRIA and Microsoft Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of Mbed TLS (https://tls.mbed.org). + */ + +#ifndef MBEDTLS_EVEREST_H +#define MBEDTLS_EVEREST_H + +#include "everest/x25519.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Defines the source of the imported EC key. + */ +typedef enum +{ + MBEDTLS_EVEREST_ECDH_OURS, /**< Our key. */ + MBEDTLS_EVEREST_ECDH_THEIRS, /**< The key of the peer. */ +} mbedtls_everest_ecdh_side; + +typedef struct { + mbedtls_x25519_context ctx; +} mbedtls_ecdh_context_everest; + + +/** + * \brief This function sets up the ECDH context with the information + * given. + * + * This function should be called after mbedtls_ecdh_init() but + * before mbedtls_ecdh_make_params(). There is no need to call + * this function before mbedtls_ecdh_read_params(). + * + * This is the first function used by a TLS server for ECDHE + * ciphersuites. + * + * \param ctx The ECDH context to set up. + * \param grp_id The group id of the group to set up the context for. + * + * \return \c 0 on success. + */ +int mbedtls_everest_setup( mbedtls_ecdh_context_everest *ctx, int grp_id ); + +/** + * \brief This function frees a context. + * + * \param ctx The context to free. + */ +void mbedtls_everest_free( mbedtls_ecdh_context_everest *ctx ); + +/** + * \brief This function generates a public key and a TLS + * ServerKeyExchange payload. + * + * This is the second function used by a TLS server for ECDHE + * ciphersuites. (It is called after mbedtls_ecdh_setup().) + * + * \note This function assumes that the ECP group (grp) of the + * \p ctx context has already been properly set, + * for example, using mbedtls_ecp_group_load(). + * + * \see ecp.h + * + * \param ctx The ECDH context. + * \param olen The number of characters written. + * \param buf The destination buffer. + * \param blen The length of the destination buffer. + * \param f_rng The RNG function. + * \param p_rng The RNG context. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. + */ +int mbedtls_everest_make_params( mbedtls_ecdh_context_everest *ctx, size_t *olen, + unsigned char *buf, size_t blen, + int( *f_rng )( void *, unsigned char *, size_t ), + void *p_rng ); + +/** + * \brief This function parses and processes a TLS ServerKeyExhange + * payload. + * + * This is the first function used by a TLS client for ECDHE + * ciphersuites. + * + * \see ecp.h + * + * \param ctx The ECDH context. + * \param buf The pointer to the start of the input buffer. + * \param end The address for one Byte past the end of the buffer. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. + * + */ +int mbedtls_everest_read_params( mbedtls_ecdh_context_everest *ctx, + const unsigned char **buf, const unsigned char *end ); + +/** + * \brief This function parses and processes a TLS ServerKeyExhange + * payload. + * + * This is the first function used by a TLS client for ECDHE + * ciphersuites. + * + * \see ecp.h + * + * \param ctx The ECDH context. + * \param buf The pointer to the start of the input buffer. + * \param end The address for one Byte past the end of the buffer. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. + * + */ +int mbedtls_everest_read_params( mbedtls_ecdh_context_everest *ctx, + const unsigned char **buf, const unsigned char *end ); + +/** + * \brief This function sets up an ECDH context from an EC key. + * + * It is used by clients and servers in place of the + * ServerKeyEchange for static ECDH, and imports ECDH + * parameters from the EC key information of a certificate. + * + * \see ecp.h + * + * \param ctx The ECDH context to set up. + * \param key The EC key to use. + * \param side Defines the source of the key: 1: Our key, or + * 0: The key of the peer. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. + * + */ +int mbedtls_everest_get_params( mbedtls_ecdh_context_everest *ctx, const mbedtls_ecp_keypair *key, + mbedtls_everest_ecdh_side side ); + +/** + * \brief This function generates a public key and a TLS + * ClientKeyExchange payload. + * + * This is the second function used by a TLS client for ECDH(E) + * ciphersuites. + * + * \see ecp.h + * + * \param ctx The ECDH context. + * \param olen The number of Bytes written. + * \param buf The destination buffer. + * \param blen The size of the destination buffer. + * \param f_rng The RNG function. + * \param p_rng The RNG context. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. + */ +int mbedtls_everest_make_public( mbedtls_ecdh_context_everest *ctx, size_t *olen, + unsigned char *buf, size_t blen, + int( *f_rng )( void *, unsigned char *, size_t ), + void *p_rng ); + +/** + * \brief This function parses and processes a TLS ClientKeyExchange + * payload. + * + * This is the third function used by a TLS server for ECDH(E) + * ciphersuites. (It is called after mbedtls_ecdh_setup() and + * mbedtls_ecdh_make_params().) + * + * \see ecp.h + * + * \param ctx The ECDH context. + * \param buf The start of the input buffer. + * \param blen The length of the input buffer. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. + */ +int mbedtls_everest_read_public( mbedtls_ecdh_context_everest *ctx, + const unsigned char *buf, size_t blen ); + +/** + * \brief This function derives and exports the shared secret. + * + * This is the last function used by both TLS client + * and servers. + * + * \note If \p f_rng is not NULL, it is used to implement + * countermeasures against side-channel attacks. + * For more information, see mbedtls_ecp_mul(). + * + * \see ecp.h + * + * \param ctx The ECDH context. + * \param olen The number of Bytes written. + * \param buf The destination buffer. + * \param blen The length of the destination buffer. + * \param f_rng The RNG function. + * \param p_rng The RNG context. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. + */ +int mbedtls_everest_calc_secret( mbedtls_ecdh_context_everest *ctx, size_t *olen, + unsigned char *buf, size_t blen, + int( *f_rng )( void *, unsigned char *, size_t ), + void *p_rng ); + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_EVEREST_H */ diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/kremlib.h b/Externals/mbedtls/3rdparty/everest/include/everest/kremlib.h new file mode 100644 index 000000000000..f06663f0958e --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/kremlib.h @@ -0,0 +1,29 @@ +/* + * Copyright 2016-2018 INRIA and Microsoft Corporation + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of Mbed TLS (https://tls.mbed.org) and + * originated from Project Everest (https://project-everest.github.io/) + */ + +#ifndef __KREMLIB_H +#define __KREMLIB_H + +#include "kremlin/internal/target.h" +#include "kremlin/internal/types.h" +#include "kremlin/c_endianness.h" + +#endif /* __KREMLIB_H */ diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/kremlib/FStar_UInt128.h b/Externals/mbedtls/3rdparty/everest/include/everest/kremlib/FStar_UInt128.h new file mode 100644 index 000000000000..d71c8820bc79 --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/kremlib/FStar_UInt128.h @@ -0,0 +1,124 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +/* This file was generated by KreMLin + * KreMLin invocation: ../krml -fc89 -fparentheses -fno-shadow -header /mnt/e/everest/verify/hdrB9w -minimal -fparentheses -fcurly-braces -fno-shadow -header copyright-header.txt -minimal -tmpdir dist/uint128 -skip-compilation -extract-uints -add-include -add-include -add-include "kremlin/internal/types.h" -bundle FStar.UInt128=* extracted/prims.krml extracted/FStar_Pervasives_Native.krml extracted/FStar_Pervasives.krml extracted/FStar_Mul.krml extracted/FStar_Squash.krml extracted/FStar_Classical.krml extracted/FStar_StrongExcludedMiddle.krml extracted/FStar_FunctionalExtensionality.krml extracted/FStar_List_Tot_Base.krml extracted/FStar_List_Tot_Properties.krml extracted/FStar_List_Tot.krml extracted/FStar_Seq_Base.krml extracted/FStar_Seq_Properties.krml extracted/FStar_Seq.krml extracted/FStar_Math_Lib.krml extracted/FStar_Math_Lemmas.krml extracted/FStar_BitVector.krml extracted/FStar_UInt.krml extracted/FStar_UInt32.krml extracted/FStar_Int.krml extracted/FStar_Int16.krml extracted/FStar_Preorder.krml extracted/FStar_Ghost.krml extracted/FStar_ErasedLogic.krml extracted/FStar_UInt64.krml extracted/FStar_Set.krml extracted/FStar_PropositionalExtensionality.krml extracted/FStar_PredicateExtensionality.krml extracted/FStar_TSet.krml extracted/FStar_Monotonic_Heap.krml extracted/FStar_Heap.krml extracted/FStar_Map.krml extracted/FStar_Monotonic_HyperHeap.krml extracted/FStar_Monotonic_HyperStack.krml extracted/FStar_HyperStack.krml extracted/FStar_Monotonic_Witnessed.krml extracted/FStar_HyperStack_ST.krml extracted/FStar_HyperStack_All.krml extracted/FStar_Date.krml extracted/FStar_Universe.krml extracted/FStar_GSet.krml extracted/FStar_ModifiesGen.krml extracted/LowStar_Monotonic_Buffer.krml extracted/LowStar_Buffer.krml extracted/Spec_Loops.krml extracted/LowStar_BufferOps.krml extracted/C_Loops.krml extracted/FStar_UInt8.krml extracted/FStar_Kremlin_Endianness.krml extracted/FStar_UInt63.krml extracted/FStar_Exn.krml extracted/FStar_ST.krml extracted/FStar_All.krml extracted/FStar_Dyn.krml extracted/FStar_Int63.krml extracted/FStar_Int64.krml extracted/FStar_Int32.krml extracted/FStar_Int8.krml extracted/FStar_UInt16.krml extracted/FStar_Int_Cast.krml extracted/FStar_UInt128.krml extracted/C_Endianness.krml extracted/FStar_List.krml extracted/FStar_Float.krml extracted/FStar_IO.krml extracted/C.krml extracted/FStar_Char.krml extracted/FStar_String.krml extracted/LowStar_Modifies.krml extracted/C_String.krml extracted/FStar_Bytes.krml extracted/FStar_HyperStack_IO.krml extracted/C_Failure.krml extracted/TestLib.krml extracted/FStar_Int_Cast_Full.krml + * F* version: 059db0c8 + * KreMLin version: 916c37ac + */ + + + +#ifndef __FStar_UInt128_H +#define __FStar_UInt128_H + + +#include +#include +#include "kremlin/internal/types.h" + +uint64_t FStar_UInt128___proj__Mkuint128__item__low(FStar_UInt128_uint128 projectee); + +uint64_t FStar_UInt128___proj__Mkuint128__item__high(FStar_UInt128_uint128 projectee); + +typedef FStar_UInt128_uint128 FStar_UInt128_t; + +FStar_UInt128_uint128 FStar_UInt128_add(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +FStar_UInt128_uint128 +FStar_UInt128_add_underspec(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +FStar_UInt128_uint128 FStar_UInt128_add_mod(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +FStar_UInt128_uint128 FStar_UInt128_sub(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +FStar_UInt128_uint128 +FStar_UInt128_sub_underspec(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +FStar_UInt128_uint128 FStar_UInt128_sub_mod(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +FStar_UInt128_uint128 FStar_UInt128_logand(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +FStar_UInt128_uint128 FStar_UInt128_logxor(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +FStar_UInt128_uint128 FStar_UInt128_logor(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +FStar_UInt128_uint128 FStar_UInt128_lognot(FStar_UInt128_uint128 a); + +FStar_UInt128_uint128 FStar_UInt128_shift_left(FStar_UInt128_uint128 a, uint32_t s); + +FStar_UInt128_uint128 FStar_UInt128_shift_right(FStar_UInt128_uint128 a, uint32_t s); + +bool FStar_UInt128_eq(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +bool FStar_UInt128_gt(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +bool FStar_UInt128_lt(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +bool FStar_UInt128_gte(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +bool FStar_UInt128_lte(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +FStar_UInt128_uint128 FStar_UInt128_eq_mask(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +FStar_UInt128_uint128 FStar_UInt128_gte_mask(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); + +FStar_UInt128_uint128 FStar_UInt128_uint64_to_uint128(uint64_t a); + +uint64_t FStar_UInt128_uint128_to_uint64(FStar_UInt128_uint128 a); + +extern FStar_UInt128_uint128 +(*FStar_UInt128_op_Plus_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +extern FStar_UInt128_uint128 +(*FStar_UInt128_op_Plus_Question_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +extern FStar_UInt128_uint128 +(*FStar_UInt128_op_Plus_Percent_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +extern FStar_UInt128_uint128 +(*FStar_UInt128_op_Subtraction_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +extern FStar_UInt128_uint128 +(*FStar_UInt128_op_Subtraction_Question_Hat)( + FStar_UInt128_uint128 x0, + FStar_UInt128_uint128 x1 +); + +extern FStar_UInt128_uint128 +(*FStar_UInt128_op_Subtraction_Percent_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +extern FStar_UInt128_uint128 +(*FStar_UInt128_op_Amp_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +extern FStar_UInt128_uint128 +(*FStar_UInt128_op_Hat_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +extern FStar_UInt128_uint128 +(*FStar_UInt128_op_Bar_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +extern FStar_UInt128_uint128 +(*FStar_UInt128_op_Less_Less_Hat)(FStar_UInt128_uint128 x0, uint32_t x1); + +extern FStar_UInt128_uint128 +(*FStar_UInt128_op_Greater_Greater_Hat)(FStar_UInt128_uint128 x0, uint32_t x1); + +extern bool (*FStar_UInt128_op_Equals_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +extern bool +(*FStar_UInt128_op_Greater_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +extern bool (*FStar_UInt128_op_Less_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +extern bool +(*FStar_UInt128_op_Greater_Equals_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +extern bool +(*FStar_UInt128_op_Less_Equals_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +FStar_UInt128_uint128 FStar_UInt128_mul32(uint64_t x, uint32_t y); + +FStar_UInt128_uint128 FStar_UInt128_mul_wide(uint64_t x, uint64_t y); + +#define __FStar_UInt128_H_DEFINED +#endif diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.h b/Externals/mbedtls/3rdparty/everest/include/everest/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.h new file mode 100644 index 000000000000..21560c4a5d1c --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.h @@ -0,0 +1,280 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +/* This file was generated by KreMLin + * KreMLin invocation: ../krml -fc89 -fparentheses -fno-shadow -header /mnt/e/everest/verify/hdrB9w -minimal -fparentheses -fcurly-braces -fno-shadow -header copyright-header.txt -minimal -tmpdir dist/minimal -skip-compilation -extract-uints -add-include -add-include -add-include "kremlin/internal/compat.h" -add-include "kremlin/internal/types.h" -bundle FStar.UInt64+FStar.UInt32+FStar.UInt16+FStar.UInt8=* extracted/prims.krml extracted/FStar_Pervasives_Native.krml extracted/FStar_Pervasives.krml extracted/FStar_Mul.krml extracted/FStar_Squash.krml extracted/FStar_Classical.krml extracted/FStar_StrongExcludedMiddle.krml extracted/FStar_FunctionalExtensionality.krml extracted/FStar_List_Tot_Base.krml extracted/FStar_List_Tot_Properties.krml extracted/FStar_List_Tot.krml extracted/FStar_Seq_Base.krml extracted/FStar_Seq_Properties.krml extracted/FStar_Seq.krml extracted/FStar_Math_Lib.krml extracted/FStar_Math_Lemmas.krml extracted/FStar_BitVector.krml extracted/FStar_UInt.krml extracted/FStar_UInt32.krml extracted/FStar_Int.krml extracted/FStar_Int16.krml extracted/FStar_Preorder.krml extracted/FStar_Ghost.krml extracted/FStar_ErasedLogic.krml extracted/FStar_UInt64.krml extracted/FStar_Set.krml extracted/FStar_PropositionalExtensionality.krml extracted/FStar_PredicateExtensionality.krml extracted/FStar_TSet.krml extracted/FStar_Monotonic_Heap.krml extracted/FStar_Heap.krml extracted/FStar_Map.krml extracted/FStar_Monotonic_HyperHeap.krml extracted/FStar_Monotonic_HyperStack.krml extracted/FStar_HyperStack.krml extracted/FStar_Monotonic_Witnessed.krml extracted/FStar_HyperStack_ST.krml extracted/FStar_HyperStack_All.krml extracted/FStar_Date.krml extracted/FStar_Universe.krml extracted/FStar_GSet.krml extracted/FStar_ModifiesGen.krml extracted/LowStar_Monotonic_Buffer.krml extracted/LowStar_Buffer.krml extracted/Spec_Loops.krml extracted/LowStar_BufferOps.krml extracted/C_Loops.krml extracted/FStar_UInt8.krml extracted/FStar_Kremlin_Endianness.krml extracted/FStar_UInt63.krml extracted/FStar_Exn.krml extracted/FStar_ST.krml extracted/FStar_All.krml extracted/FStar_Dyn.krml extracted/FStar_Int63.krml extracted/FStar_Int64.krml extracted/FStar_Int32.krml extracted/FStar_Int8.krml extracted/FStar_UInt16.krml extracted/FStar_Int_Cast.krml extracted/FStar_UInt128.krml extracted/C_Endianness.krml extracted/FStar_List.krml extracted/FStar_Float.krml extracted/FStar_IO.krml extracted/C.krml extracted/FStar_Char.krml extracted/FStar_String.krml extracted/LowStar_Modifies.krml extracted/C_String.krml extracted/FStar_Bytes.krml extracted/FStar_HyperStack_IO.krml extracted/C_Failure.krml extracted/TestLib.krml extracted/FStar_Int_Cast_Full.krml + * F* version: 059db0c8 + * KreMLin version: 916c37ac + */ + + + +#ifndef __FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8_H +#define __FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8_H + + +#include +#include +#include "kremlin/internal/compat.h" +#include "kremlin/internal/types.h" + +extern Prims_int FStar_UInt64_n; + +extern Prims_int FStar_UInt64_v(uint64_t x0); + +extern uint64_t FStar_UInt64_uint_to_t(Prims_int x0); + +extern uint64_t FStar_UInt64_add(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_add_underspec(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_add_mod(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_sub(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_sub_underspec(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_sub_mod(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_mul(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_mul_underspec(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_mul_mod(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_mul_div(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_div(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_rem(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_logand(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_logxor(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_logor(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_lognot(uint64_t x0); + +extern uint64_t FStar_UInt64_shift_right(uint64_t x0, uint32_t x1); + +extern uint64_t FStar_UInt64_shift_left(uint64_t x0, uint32_t x1); + +extern bool FStar_UInt64_eq(uint64_t x0, uint64_t x1); + +extern bool FStar_UInt64_gt(uint64_t x0, uint64_t x1); + +extern bool FStar_UInt64_gte(uint64_t x0, uint64_t x1); + +extern bool FStar_UInt64_lt(uint64_t x0, uint64_t x1); + +extern bool FStar_UInt64_lte(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_minus(uint64_t x0); + +extern uint32_t FStar_UInt64_n_minus_one; + +uint64_t FStar_UInt64_eq_mask(uint64_t a, uint64_t b); + +uint64_t FStar_UInt64_gte_mask(uint64_t a, uint64_t b); + +extern Prims_string FStar_UInt64_to_string(uint64_t x0); + +extern uint64_t FStar_UInt64_of_string(Prims_string x0); + +extern Prims_int FStar_UInt32_n; + +extern Prims_int FStar_UInt32_v(uint32_t x0); + +extern uint32_t FStar_UInt32_uint_to_t(Prims_int x0); + +extern uint32_t FStar_UInt32_add(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_add_underspec(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_add_mod(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_sub(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_sub_underspec(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_sub_mod(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_mul(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_mul_underspec(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_mul_mod(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_mul_div(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_div(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_rem(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_logand(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_logxor(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_logor(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_lognot(uint32_t x0); + +extern uint32_t FStar_UInt32_shift_right(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_shift_left(uint32_t x0, uint32_t x1); + +extern bool FStar_UInt32_eq(uint32_t x0, uint32_t x1); + +extern bool FStar_UInt32_gt(uint32_t x0, uint32_t x1); + +extern bool FStar_UInt32_gte(uint32_t x0, uint32_t x1); + +extern bool FStar_UInt32_lt(uint32_t x0, uint32_t x1); + +extern bool FStar_UInt32_lte(uint32_t x0, uint32_t x1); + +extern uint32_t FStar_UInt32_minus(uint32_t x0); + +extern uint32_t FStar_UInt32_n_minus_one; + +uint32_t FStar_UInt32_eq_mask(uint32_t a, uint32_t b); + +uint32_t FStar_UInt32_gte_mask(uint32_t a, uint32_t b); + +extern Prims_string FStar_UInt32_to_string(uint32_t x0); + +extern uint32_t FStar_UInt32_of_string(Prims_string x0); + +extern Prims_int FStar_UInt16_n; + +extern Prims_int FStar_UInt16_v(uint16_t x0); + +extern uint16_t FStar_UInt16_uint_to_t(Prims_int x0); + +extern uint16_t FStar_UInt16_add(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_add_underspec(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_add_mod(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_sub(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_sub_underspec(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_sub_mod(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_mul(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_mul_underspec(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_mul_mod(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_mul_div(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_div(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_rem(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_logand(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_logxor(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_logor(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_lognot(uint16_t x0); + +extern uint16_t FStar_UInt16_shift_right(uint16_t x0, uint32_t x1); + +extern uint16_t FStar_UInt16_shift_left(uint16_t x0, uint32_t x1); + +extern bool FStar_UInt16_eq(uint16_t x0, uint16_t x1); + +extern bool FStar_UInt16_gt(uint16_t x0, uint16_t x1); + +extern bool FStar_UInt16_gte(uint16_t x0, uint16_t x1); + +extern bool FStar_UInt16_lt(uint16_t x0, uint16_t x1); + +extern bool FStar_UInt16_lte(uint16_t x0, uint16_t x1); + +extern uint16_t FStar_UInt16_minus(uint16_t x0); + +extern uint32_t FStar_UInt16_n_minus_one; + +uint16_t FStar_UInt16_eq_mask(uint16_t a, uint16_t b); + +uint16_t FStar_UInt16_gte_mask(uint16_t a, uint16_t b); + +extern Prims_string FStar_UInt16_to_string(uint16_t x0); + +extern uint16_t FStar_UInt16_of_string(Prims_string x0); + +extern Prims_int FStar_UInt8_n; + +extern Prims_int FStar_UInt8_v(uint8_t x0); + +extern uint8_t FStar_UInt8_uint_to_t(Prims_int x0); + +extern uint8_t FStar_UInt8_add(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_add_underspec(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_add_mod(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_sub(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_sub_underspec(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_sub_mod(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_mul(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_mul_underspec(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_mul_mod(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_mul_div(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_div(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_rem(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_logand(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_logxor(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_logor(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_lognot(uint8_t x0); + +extern uint8_t FStar_UInt8_shift_right(uint8_t x0, uint32_t x1); + +extern uint8_t FStar_UInt8_shift_left(uint8_t x0, uint32_t x1); + +extern bool FStar_UInt8_eq(uint8_t x0, uint8_t x1); + +extern bool FStar_UInt8_gt(uint8_t x0, uint8_t x1); + +extern bool FStar_UInt8_gte(uint8_t x0, uint8_t x1); + +extern bool FStar_UInt8_lt(uint8_t x0, uint8_t x1); + +extern bool FStar_UInt8_lte(uint8_t x0, uint8_t x1); + +extern uint8_t FStar_UInt8_minus(uint8_t x0); + +extern uint32_t FStar_UInt8_n_minus_one; + +uint8_t FStar_UInt8_eq_mask(uint8_t a, uint8_t b); + +uint8_t FStar_UInt8_gte_mask(uint8_t a, uint8_t b); + +extern Prims_string FStar_UInt8_to_string(uint8_t x0); + +extern uint8_t FStar_UInt8_of_string(Prims_string x0); + +typedef uint8_t FStar_UInt8_byte; + +#define __FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8_H_DEFINED +#endif diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/c_endianness.h b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/c_endianness.h new file mode 100644 index 000000000000..5cfde5d9ea2a --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/c_endianness.h @@ -0,0 +1,204 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +#ifndef __KREMLIN_ENDIAN_H +#define __KREMLIN_ENDIAN_H + +#include +#include + +/******************************************************************************/ +/* Implementing C.fst (part 2: endian-ness macros) */ +/******************************************************************************/ + +/* ... for Linux */ +#if defined(__linux__) || defined(__CYGWIN__) +# include + +/* ... for OSX */ +#elif defined(__APPLE__) +# include +# define htole64(x) OSSwapHostToLittleInt64(x) +# define le64toh(x) OSSwapLittleToHostInt64(x) +# define htobe64(x) OSSwapHostToBigInt64(x) +# define be64toh(x) OSSwapBigToHostInt64(x) + +# define htole16(x) OSSwapHostToLittleInt16(x) +# define le16toh(x) OSSwapLittleToHostInt16(x) +# define htobe16(x) OSSwapHostToBigInt16(x) +# define be16toh(x) OSSwapBigToHostInt16(x) + +# define htole32(x) OSSwapHostToLittleInt32(x) +# define le32toh(x) OSSwapLittleToHostInt32(x) +# define htobe32(x) OSSwapHostToBigInt32(x) +# define be32toh(x) OSSwapBigToHostInt32(x) + +/* ... for Solaris */ +#elif defined(__sun__) +# include +# define htole64(x) LE_64(x) +# define le64toh(x) LE_64(x) +# define htobe64(x) BE_64(x) +# define be64toh(x) BE_64(x) + +# define htole16(x) LE_16(x) +# define le16toh(x) LE_16(x) +# define htobe16(x) BE_16(x) +# define be16toh(x) BE_16(x) + +# define htole32(x) LE_32(x) +# define le32toh(x) LE_32(x) +# define htobe32(x) BE_32(x) +# define be32toh(x) BE_32(x) + +/* ... for the BSDs */ +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) +# include +#elif defined(__OpenBSD__) +# include + +/* ... for Windows (MSVC)... not targeting XBOX 360! */ +#elif defined(_MSC_VER) + +# include +# define htobe16(x) _byteswap_ushort(x) +# define htole16(x) (x) +# define be16toh(x) _byteswap_ushort(x) +# define le16toh(x) (x) + +# define htobe32(x) _byteswap_ulong(x) +# define htole32(x) (x) +# define be32toh(x) _byteswap_ulong(x) +# define le32toh(x) (x) + +# define htobe64(x) _byteswap_uint64(x) +# define htole64(x) (x) +# define be64toh(x) _byteswap_uint64(x) +# define le64toh(x) (x) + +/* ... for Windows (GCC-like, e.g. mingw or clang) */ +#elif (defined(_WIN32) || defined(_WIN64)) && \ + (defined(__GNUC__) || defined(__clang__)) + +# define htobe16(x) __builtin_bswap16(x) +# define htole16(x) (x) +# define be16toh(x) __builtin_bswap16(x) +# define le16toh(x) (x) + +# define htobe32(x) __builtin_bswap32(x) +# define htole32(x) (x) +# define be32toh(x) __builtin_bswap32(x) +# define le32toh(x) (x) + +# define htobe64(x) __builtin_bswap64(x) +# define htole64(x) (x) +# define be64toh(x) __builtin_bswap64(x) +# define le64toh(x) (x) + +/* ... generic big-endian fallback code */ +#elif defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + +/* byte swapping code inspired by: + * https://github.com/rweather/arduinolibs/blob/master/libraries/Crypto/utility/EndianUtil.h + * */ + +# define htobe32(x) (x) +# define be32toh(x) (x) +# define htole32(x) \ + (__extension__({ \ + uint32_t _temp = (x); \ + ((_temp >> 24) & 0x000000FF) | ((_temp >> 8) & 0x0000FF00) | \ + ((_temp << 8) & 0x00FF0000) | ((_temp << 24) & 0xFF000000); \ + })) +# define le32toh(x) (htole32((x))) + +# define htobe64(x) (x) +# define be64toh(x) (x) +# define htole64(x) \ + (__extension__({ \ + uint64_t __temp = (x); \ + uint32_t __low = htobe32((uint32_t)__temp); \ + uint32_t __high = htobe32((uint32_t)(__temp >> 32)); \ + (((uint64_t)__low) << 32) | __high; \ + })) +# define le64toh(x) (htole64((x))) + +/* ... generic little-endian fallback code */ +#elif defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + +# define htole32(x) (x) +# define le32toh(x) (x) +# define htobe32(x) \ + (__extension__({ \ + uint32_t _temp = (x); \ + ((_temp >> 24) & 0x000000FF) | ((_temp >> 8) & 0x0000FF00) | \ + ((_temp << 8) & 0x00FF0000) | ((_temp << 24) & 0xFF000000); \ + })) +# define be32toh(x) (htobe32((x))) + +# define htole64(x) (x) +# define le64toh(x) (x) +# define htobe64(x) \ + (__extension__({ \ + uint64_t __temp = (x); \ + uint32_t __low = htobe32((uint32_t)__temp); \ + uint32_t __high = htobe32((uint32_t)(__temp >> 32)); \ + (((uint64_t)__low) << 32) | __high; \ + })) +# define be64toh(x) (htobe64((x))) + +/* ... couldn't determine endian-ness of the target platform */ +#else +# error "Please define __BYTE_ORDER__!" + +#endif /* defined(__linux__) || ... */ + +/* Loads and stores. These avoid undefined behavior due to unaligned memory + * accesses, via memcpy. */ + +inline static uint16_t load16(uint8_t *b) { + uint16_t x; + memcpy(&x, b, 2); + return x; +} + +inline static uint32_t load32(uint8_t *b) { + uint32_t x; + memcpy(&x, b, 4); + return x; +} + +inline static uint64_t load64(uint8_t *b) { + uint64_t x; + memcpy(&x, b, 8); + return x; +} + +inline static void store16(uint8_t *b, uint16_t i) { + memcpy(b, &i, 2); +} + +inline static void store32(uint8_t *b, uint32_t i) { + memcpy(b, &i, 4); +} + +inline static void store64(uint8_t *b, uint64_t i) { + memcpy(b, &i, 8); +} + +#define load16_le(b) (le16toh(load16(b))) +#define store16_le(b, i) (store16(b, htole16(i))) +#define load16_be(b) (be16toh(load16(b))) +#define store16_be(b, i) (store16(b, htobe16(i))) + +#define load32_le(b) (le32toh(load32(b))) +#define store32_le(b, i) (store32(b, htole32(i))) +#define load32_be(b) (be32toh(load32(b))) +#define store32_be(b, i) (store32(b, htobe32(i))) + +#define load64_le(b) (le64toh(load64(b))) +#define store64_le(b, i) (store64(b, htole64(i))) +#define load64_be(b) (be64toh(load64(b))) +#define store64_be(b, i) (store64(b, htobe64(i))) + +#endif diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/builtin.h b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/builtin.h new file mode 100644 index 000000000000..219b2668621f --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/builtin.h @@ -0,0 +1,16 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +#ifndef __KREMLIN_BUILTIN_H +#define __KREMLIN_BUILTIN_H + +/* For alloca, when using KreMLin's -falloca */ +#if (defined(_WIN32) || defined(_WIN64)) +# include +#endif + +/* If some globals need to be initialized before the main, then kremlin will + * generate and try to link last a function with this type: */ +void kremlinit_globals(void); + +#endif diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/callconv.h b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/callconv.h new file mode 100644 index 000000000000..bf631ff46ff3 --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/callconv.h @@ -0,0 +1,46 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +#ifndef __KREMLIN_CALLCONV_H +#define __KREMLIN_CALLCONV_H + +/******************************************************************************/ +/* Some macros to ease compatibility */ +/******************************************************************************/ + +/* We want to generate __cdecl safely without worrying about it being undefined. + * When using MSVC, these are always defined. When using MinGW, these are + * defined too. They have no meaning for other platforms, so we define them to + * be empty macros in other situations. */ +#ifndef _MSC_VER +#ifndef __cdecl +#define __cdecl +#endif +#ifndef __stdcall +#define __stdcall +#endif +#ifndef __fastcall +#define __fastcall +#endif +#endif + +/* Since KreMLin emits the inline keyword unconditionally, we follow the + * guidelines at https://gcc.gnu.org/onlinedocs/gcc/Inline.html and make this + * __inline__ to ensure the code compiles with -std=c90 and earlier. */ +#ifdef __GNUC__ +# define inline __inline__ +#endif + +/* GCC-specific attribute syntax; everyone else gets the standard C inline + * attribute. */ +#ifdef __GNU_C__ +# ifndef __clang__ +# define force_inline inline __attribute__((always_inline)) +# else +# define force_inline inline +# endif +#else +# define force_inline inline +#endif + +#endif diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/compat.h b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/compat.h new file mode 100644 index 000000000000..a5b8889da854 --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/compat.h @@ -0,0 +1,34 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +#ifndef KRML_COMPAT_H +#define KRML_COMPAT_H + +#include + +/* A series of macros that define C implementations of types that are not Low*, + * to facilitate porting programs to Low*. */ + +typedef const char *Prims_string; + +typedef struct { + uint32_t length; + const char *data; +} FStar_Bytes_bytes; + +typedef int32_t Prims_pos, Prims_nat, Prims_nonzero, Prims_int, + krml_checked_int_t; + +#define RETURN_OR(x) \ + do { \ + int64_t __ret = x; \ + if (__ret < INT32_MIN || INT32_MAX < __ret) { \ + KRML_HOST_PRINTF( \ + "Prims.{int,nat,pos} integer overflow at %s:%d\n", __FILE__, \ + __LINE__); \ + KRML_HOST_EXIT(252); \ + } \ + return (int32_t)__ret; \ + } while (0) + +#endif diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/debug.h b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/debug.h new file mode 100644 index 000000000000..44ac22cd6232 --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/debug.h @@ -0,0 +1,57 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +#ifndef __KREMLIN_DEBUG_H +#define __KREMLIN_DEBUG_H + +#include + +#include "kremlin/internal/target.h" + +/******************************************************************************/ +/* Debugging helpers - intended only for KreMLin developers */ +/******************************************************************************/ + +/* In support of "-wasm -d force-c": we might need this function to be + * forward-declared, because the dependency on WasmSupport appears very late, + * after SimplifyWasm, and sadly, after the topological order has been done. */ +void WasmSupport_check_buffer_size(uint32_t s); + +/* A series of GCC atrocities to trace function calls (kremlin's [-d c-calls] + * option). Useful when trying to debug, say, Wasm, to compare traces. */ +/* clang-format off */ +#ifdef __GNUC__ +#define KRML_FORMAT(X) _Generic((X), \ + uint8_t : "0x%08" PRIx8, \ + uint16_t: "0x%08" PRIx16, \ + uint32_t: "0x%08" PRIx32, \ + uint64_t: "0x%08" PRIx64, \ + int8_t : "0x%08" PRIx8, \ + int16_t : "0x%08" PRIx16, \ + int32_t : "0x%08" PRIx32, \ + int64_t : "0x%08" PRIx64, \ + default : "%s") + +#define KRML_FORMAT_ARG(X) _Generic((X), \ + uint8_t : X, \ + uint16_t: X, \ + uint32_t: X, \ + uint64_t: X, \ + int8_t : X, \ + int16_t : X, \ + int32_t : X, \ + int64_t : X, \ + default : "unknown") +/* clang-format on */ + +# define KRML_DEBUG_RETURN(X) \ + ({ \ + __auto_type _ret = (X); \ + KRML_HOST_PRINTF("returning: "); \ + KRML_HOST_PRINTF(KRML_FORMAT(_ret), KRML_FORMAT_ARG(_ret)); \ + KRML_HOST_PRINTF(" \n"); \ + _ret; \ + }) +#endif + +#endif diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/target.h b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/target.h new file mode 100644 index 000000000000..b552f52b066b --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/target.h @@ -0,0 +1,102 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +#ifndef __KREMLIN_TARGET_H +#define __KREMLIN_TARGET_H + +#include +#include +#include +#include +#include + +#include "kremlin/internal/callconv.h" + +/******************************************************************************/ +/* Macros that KreMLin will generate. */ +/******************************************************************************/ + +/* For "bare" targets that do not have a C stdlib, the user might want to use + * [-add-early-include '"mydefinitions.h"'] and override these. */ +#ifndef KRML_HOST_PRINTF +# define KRML_HOST_PRINTF printf +#endif + +#if ( \ + (defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ + (!(defined KRML_HOST_EPRINTF))) +# define KRML_HOST_EPRINTF(...) fprintf(stderr, __VA_ARGS__) +#endif + +#ifndef KRML_HOST_EXIT +# define KRML_HOST_EXIT exit +#endif + +#ifndef KRML_HOST_MALLOC +# define KRML_HOST_MALLOC malloc +#endif + +#ifndef KRML_HOST_CALLOC +# define KRML_HOST_CALLOC calloc +#endif + +#ifndef KRML_HOST_FREE +# define KRML_HOST_FREE free +#endif + +#ifndef KRML_HOST_TIME + +# include + +/* Prims_nat not yet in scope */ +inline static int32_t krml_time() { + return (int32_t)time(NULL); +} + +# define KRML_HOST_TIME krml_time +#endif + +/* In statement position, exiting is easy. */ +#define KRML_EXIT \ + do { \ + KRML_HOST_PRINTF("Unimplemented function at %s:%d\n", __FILE__, __LINE__); \ + KRML_HOST_EXIT(254); \ + } while (0) + +/* In expression position, use the comma-operator and a malloc to return an + * expression of the right size. KreMLin passes t as the parameter to the macro. + */ +#define KRML_EABORT(t, msg) \ + (KRML_HOST_PRINTF("KreMLin abort at %s:%d\n%s\n", __FILE__, __LINE__, msg), \ + KRML_HOST_EXIT(255), *((t *)KRML_HOST_MALLOC(sizeof(t)))) + +/* In FStar.Buffer.fst, the size of arrays is uint32_t, but it's a number of + * *elements*. Do an ugly, run-time check (some of which KreMLin can eliminate). + */ + +#ifdef __GNUC__ +# define _KRML_CHECK_SIZE_PRAGMA \ + _Pragma("GCC diagnostic ignored \"-Wtype-limits\"") +#else +# define _KRML_CHECK_SIZE_PRAGMA +#endif + +#define KRML_CHECK_SIZE(size_elt, sz) \ + do { \ + _KRML_CHECK_SIZE_PRAGMA \ + if (((size_t)(sz)) > ((size_t)(SIZE_MAX / (size_elt)))) { \ + KRML_HOST_PRINTF( \ + "Maximum allocatable size exceeded, aborting before overflow at " \ + "%s:%d\n", \ + __FILE__, __LINE__); \ + KRML_HOST_EXIT(253); \ + } \ + } while (0) + +#if defined(_MSC_VER) && _MSC_VER < 1900 +# define KRML_HOST_SNPRINTF(buf, sz, fmt, arg) _snprintf_s(buf, sz, _TRUNCATE, fmt, arg) +#else +# define KRML_HOST_SNPRINTF(buf, sz, fmt, arg) snprintf(buf, sz, fmt, arg) +#endif + +#endif diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/types.h b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/types.h new file mode 100644 index 000000000000..b936f00db5a2 --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/types.h @@ -0,0 +1,61 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +#ifndef KRML_TYPES_H +#define KRML_TYPES_H + +#include +#include +#include + +/* Types which are either abstract, meaning that have to be implemented in C, or + * which are models, meaning that they are swapped out at compile-time for + * hand-written C types (in which case they're marked as noextract). */ + +typedef uint64_t FStar_UInt64_t, FStar_UInt64_t_; +typedef int64_t FStar_Int64_t, FStar_Int64_t_; +typedef uint32_t FStar_UInt32_t, FStar_UInt32_t_; +typedef int32_t FStar_Int32_t, FStar_Int32_t_; +typedef uint16_t FStar_UInt16_t, FStar_UInt16_t_; +typedef int16_t FStar_Int16_t, FStar_Int16_t_; +typedef uint8_t FStar_UInt8_t, FStar_UInt8_t_; +typedef int8_t FStar_Int8_t, FStar_Int8_t_; + +/* Only useful when building Kremlib, because it's in the dependency graph of + * FStar.Int.Cast. */ +typedef uint64_t FStar_UInt63_t, FStar_UInt63_t_; +typedef int64_t FStar_Int63_t, FStar_Int63_t_; + +typedef double FStar_Float_float; +typedef uint32_t FStar_Char_char; +typedef FILE *FStar_IO_fd_read, *FStar_IO_fd_write; + +typedef void *FStar_Dyn_dyn; + +typedef const char *C_String_t, *C_String_t_; + +typedef int exit_code; +typedef FILE *channel; + +typedef unsigned long long TestLib_cycles; + +typedef uint64_t FStar_Date_dateTime, FStar_Date_timeSpan; + +/* The uint128 type is a special case since we offer several implementations of + * it, depending on the compiler and whether the user wants the verified + * implementation or not. */ +#if !defined(KRML_VERIFIED_UINT128) && defined(_MSC_VER) && defined(_M_X64) +# include +typedef __m128i FStar_UInt128_uint128; +#elif !defined(KRML_VERIFIED_UINT128) && !defined(_MSC_VER) +typedef unsigned __int128 FStar_UInt128_uint128; +#else +typedef struct FStar_UInt128_uint128_s { + uint64_t low; + uint64_t high; +} FStar_UInt128_uint128; +#endif + +typedef FStar_UInt128_uint128 FStar_UInt128_t, FStar_UInt128_t_, uint128_t; + +#endif diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/wasmsupport.h b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/wasmsupport.h new file mode 100644 index 000000000000..b44fa3f75dd9 --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/wasmsupport.h @@ -0,0 +1,5 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +/* This file is automatically included when compiling with -wasm -d force-c */ +#define WasmSupport_check_buffer_size(X) diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/vs2010/Hacl_Curve25519.h b/Externals/mbedtls/3rdparty/everest/include/everest/vs2010/Hacl_Curve25519.h new file mode 100644 index 000000000000..27ebe07947c6 --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/vs2010/Hacl_Curve25519.h @@ -0,0 +1,21 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +/* This file was generated by KreMLin + * KreMLin invocation: /mnt/e/everest/verify/kremlin/krml -fc89 -fparentheses -fno-shadow -header /mnt/e/everest/verify/hdrcLh -minimal -fc89 -fparentheses -fno-shadow -header /mnt/e/everest/verify/hdrcLh -minimal -I /mnt/e/everest/verify/hacl-star/code/lib/kremlin -I /mnt/e/everest/verify/kremlin/kremlib/compat -I /mnt/e/everest/verify/hacl-star/specs -I /mnt/e/everest/verify/hacl-star/specs/old -I . -ccopt -march=native -verbose -ldopt -flto -tmpdir x25519-c -I ../bignum -bundle Hacl.Curve25519=* -minimal -add-include "kremlib.h" -skip-compilation x25519-c/out.krml -o x25519-c/Hacl_Curve25519.c + * F* version: 059db0c8 + * KreMLin version: 916c37ac + */ + + + +#ifndef __Hacl_Curve25519_H +#define __Hacl_Curve25519_H + + +#include "kremlib.h" + +void Hacl_Curve25519_crypto_scalarmult(uint8_t *mypublic, uint8_t *secret, uint8_t *basepoint); + +#define __Hacl_Curve25519_H_DEFINED +#endif diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/vs2010/inttypes.h b/Externals/mbedtls/3rdparty/everest/include/everest/vs2010/inttypes.h new file mode 100644 index 000000000000..d53f87f21d32 --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/vs2010/inttypes.h @@ -0,0 +1,36 @@ +/* + * Custom inttypes.h for VS2010 KreMLin requires these definitions, + * but VS2010 doesn't provide them. + * + * Copyright 2016-2018 INRIA and Microsoft Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef _INTTYPES_H_VS2010 +#define _INTTYPES_H_VS2010 + +#include + +#ifdef _MSC_VER +#define inline __inline +#endif + +/* VS2010 unsigned long == 8 bytes */ + +#define PRIu64 "I64u" + +#endif diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/vs2010/stdbool.h b/Externals/mbedtls/3rdparty/everest/include/everest/vs2010/stdbool.h new file mode 100644 index 000000000000..5b7039c4f463 --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/vs2010/stdbool.h @@ -0,0 +1,31 @@ +/* + * Custom stdbool.h for VS2010 KreMLin requires these definitions, + * but VS2010 doesn't provide them. + * + * Copyright 2016-2018 INRIA and Microsoft Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef _STDBOOL_H_VS2010 +#define _STDBOOL_H_VS2010 + +typedef int bool; + +static bool true = 1; +static bool false = 0; + +#endif diff --git a/Externals/mbedtls/3rdparty/everest/include/everest/x25519.h b/Externals/mbedtls/3rdparty/everest/include/everest/x25519.h new file mode 100644 index 000000000000..7a973dcf010b --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/include/everest/x25519.h @@ -0,0 +1,190 @@ +/* + * ECDH with curve-optimized implementation multiplexing + * + * Copyright 2016-2018 INRIA and Microsoft Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_X25519_H +#define MBEDTLS_X25519_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define MBEDTLS_ECP_TLS_CURVE25519 0x1d +#define MBEDTLS_X25519_KEY_SIZE_BYTES 32 + +/** + * Defines the source of the imported EC key. + */ +typedef enum +{ + MBEDTLS_X25519_ECDH_OURS, /**< Our key. */ + MBEDTLS_X25519_ECDH_THEIRS, /**< The key of the peer. */ +} mbedtls_x25519_ecdh_side; + +/** + * \brief The x25519 context structure. + */ +typedef struct +{ + unsigned char our_secret[MBEDTLS_X25519_KEY_SIZE_BYTES]; + unsigned char peer_point[MBEDTLS_X25519_KEY_SIZE_BYTES]; +} mbedtls_x25519_context; + +/** + * \brief This function initializes an x25519 context. + * + * \param ctx The x25519 context to initialize. + */ +void mbedtls_x25519_init( mbedtls_x25519_context *ctx ); + +/** + * \brief This function frees a context. + * + * \param ctx The context to free. + */ +void mbedtls_x25519_free( mbedtls_x25519_context *ctx ); + +/** + * \brief This function generates a public key and a TLS + * ServerKeyExchange payload. + * + * This is the first function used by a TLS server for x25519. + * + * + * \param ctx The x25519 context. + * \param olen The number of characters written. + * \param buf The destination buffer. + * \param blen The length of the destination buffer. + * \param f_rng The RNG function. + * \param p_rng The RNG context. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. + */ +int mbedtls_x25519_make_params( mbedtls_x25519_context *ctx, size_t *olen, + unsigned char *buf, size_t blen, + int( *f_rng )(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This function parses and processes a TLS ServerKeyExchange + * payload. + * + * + * \param ctx The x25519 context. + * \param buf The pointer to the start of the input buffer. + * \param end The address for one Byte past the end of the buffer. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. + * + */ +int mbedtls_x25519_read_params( mbedtls_x25519_context *ctx, + const unsigned char **buf, const unsigned char *end ); + +/** + * \brief This function sets up an x25519 context from an EC key. + * + * It is used by clients and servers in place of the + * ServerKeyEchange for static ECDH, and imports ECDH + * parameters from the EC key information of a certificate. + * + * \see ecp.h + * + * \param ctx The x25519 context to set up. + * \param key The EC key to use. + * \param side Defines the source of the key: 1: Our key, or + * 0: The key of the peer. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. + * + */ +int mbedtls_x25519_get_params( mbedtls_x25519_context *ctx, const mbedtls_ecp_keypair *key, + mbedtls_x25519_ecdh_side side ); + +/** + * \brief This function derives and exports the shared secret. + * + * This is the last function used by both TLS client + * and servers. + * + * + * \param ctx The x25519 context. + * \param olen The number of Bytes written. + * \param buf The destination buffer. + * \param blen The length of the destination buffer. + * \param f_rng The RNG function. + * \param p_rng The RNG context. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. + */ +int mbedtls_x25519_calc_secret( mbedtls_x25519_context *ctx, size_t *olen, + unsigned char *buf, size_t blen, + int( *f_rng )(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This function generates a public key and a TLS + * ClientKeyExchange payload. + * + * This is the second function used by a TLS client for x25519. + * + * \see ecp.h + * + * \param ctx The x25519 context. + * \param olen The number of Bytes written. + * \param buf The destination buffer. + * \param blen The size of the destination buffer. + * \param f_rng The RNG function. + * \param p_rng The RNG context. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. + */ +int mbedtls_x25519_make_public( mbedtls_x25519_context *ctx, size_t *olen, + unsigned char *buf, size_t blen, + int( *f_rng )(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This function parses and processes a TLS ClientKeyExchange + * payload. + * + * This is the second function used by a TLS server for x25519. + * + * \see ecp.h + * + * \param ctx The x25519 context. + * \param buf The start of the input buffer. + * \param blen The length of the input buffer. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. + */ +int mbedtls_x25519_read_public( mbedtls_x25519_context *ctx, + const unsigned char *buf, size_t blen ); + +#ifdef __cplusplus +} +#endif + +#endif /* x25519.h */ diff --git a/Externals/mbedtls/3rdparty/everest/library/Hacl_Curve25519.c b/Externals/mbedtls/3rdparty/everest/library/Hacl_Curve25519.c new file mode 100644 index 000000000000..450b9f8ddf06 --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/library/Hacl_Curve25519.c @@ -0,0 +1,760 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +/* This file was generated by KreMLin + * KreMLin invocation: /mnt/e/everest/verify/kremlin/krml -fc89 -fparentheses -fno-shadow -header /mnt/e/everest/verify/hdrcLh -minimal -fbuiltin-uint128 -fc89 -fparentheses -fno-shadow -header /mnt/e/everest/verify/hdrcLh -minimal -I /mnt/e/everest/verify/hacl-star/code/lib/kremlin -I /mnt/e/everest/verify/kremlin/kremlib/compat -I /mnt/e/everest/verify/hacl-star/specs -I /mnt/e/everest/verify/hacl-star/specs/old -I . -ccopt -march=native -verbose -ldopt -flto -tmpdir x25519-c -I ../bignum -bundle Hacl.Curve25519=* -minimal -add-include "kremlib.h" -skip-compilation x25519-c/out.krml -o x25519-c/Hacl_Curve25519.c + * F* version: 059db0c8 + * KreMLin version: 916c37ac + */ + + +#include "Hacl_Curve25519.h" + +extern uint64_t FStar_UInt64_eq_mask(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_gte_mask(uint64_t x0, uint64_t x1); + +extern uint128_t FStar_UInt128_add(uint128_t x0, uint128_t x1); + +extern uint128_t FStar_UInt128_add_mod(uint128_t x0, uint128_t x1); + +extern uint128_t FStar_UInt128_logand(uint128_t x0, uint128_t x1); + +extern uint128_t FStar_UInt128_shift_right(uint128_t x0, uint32_t x1); + +extern uint128_t FStar_UInt128_uint64_to_uint128(uint64_t x0); + +extern uint64_t FStar_UInt128_uint128_to_uint64(uint128_t x0); + +extern uint128_t FStar_UInt128_mul_wide(uint64_t x0, uint64_t x1); + +static void Hacl_Bignum_Modulo_carry_top(uint64_t *b) +{ + uint64_t b4 = b[4U]; + uint64_t b0 = b[0U]; + uint64_t b4_ = b4 & (uint64_t)0x7ffffffffffffU; + uint64_t b0_ = b0 + (uint64_t)19U * (b4 >> (uint32_t)51U); + b[4U] = b4_; + b[0U] = b0_; +} + +inline static void Hacl_Bignum_Fproduct_copy_from_wide_(uint64_t *output, uint128_t *input) +{ + uint32_t i; + for (i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) + { + uint128_t xi = input[i]; + output[i] = (uint64_t)xi; + } +} + +inline static void +Hacl_Bignum_Fproduct_sum_scalar_multiplication_(uint128_t *output, uint64_t *input, uint64_t s) +{ + uint32_t i; + for (i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) + { + uint128_t xi = output[i]; + uint64_t yi = input[i]; + output[i] = xi + (uint128_t)yi * s; + } +} + +inline static void Hacl_Bignum_Fproduct_carry_wide_(uint128_t *tmp) +{ + uint32_t i; + for (i = (uint32_t)0U; i < (uint32_t)4U; i = i + (uint32_t)1U) + { + uint32_t ctr = i; + uint128_t tctr = tmp[ctr]; + uint128_t tctrp1 = tmp[ctr + (uint32_t)1U]; + uint64_t r0 = (uint64_t)tctr & (uint64_t)0x7ffffffffffffU; + uint128_t c = tctr >> (uint32_t)51U; + tmp[ctr] = (uint128_t)r0; + tmp[ctr + (uint32_t)1U] = tctrp1 + c; + } +} + +inline static void Hacl_Bignum_Fmul_shift_reduce(uint64_t *output) +{ + uint64_t tmp = output[4U]; + uint64_t b0; + { + uint32_t i; + for (i = (uint32_t)0U; i < (uint32_t)4U; i = i + (uint32_t)1U) + { + uint32_t ctr = (uint32_t)5U - i - (uint32_t)1U; + uint64_t z = output[ctr - (uint32_t)1U]; + output[ctr] = z; + } + } + output[0U] = tmp; + b0 = output[0U]; + output[0U] = (uint64_t)19U * b0; +} + +static void +Hacl_Bignum_Fmul_mul_shift_reduce_(uint128_t *output, uint64_t *input, uint64_t *input2) +{ + uint32_t i; + uint64_t input2i; + { + uint32_t i0; + for (i0 = (uint32_t)0U; i0 < (uint32_t)4U; i0 = i0 + (uint32_t)1U) + { + uint64_t input2i0 = input2[i0]; + Hacl_Bignum_Fproduct_sum_scalar_multiplication_(output, input, input2i0); + Hacl_Bignum_Fmul_shift_reduce(input); + } + } + i = (uint32_t)4U; + input2i = input2[i]; + Hacl_Bignum_Fproduct_sum_scalar_multiplication_(output, input, input2i); +} + +inline static void Hacl_Bignum_Fmul_fmul(uint64_t *output, uint64_t *input, uint64_t *input2) +{ + uint64_t tmp[5U] = { 0U }; + memcpy(tmp, input, (uint32_t)5U * sizeof input[0U]); + KRML_CHECK_SIZE(sizeof (uint128_t), (uint32_t)5U); + { + uint128_t t[5U]; + { + uint32_t _i; + for (_i = 0U; _i < (uint32_t)5U; ++_i) + t[_i] = (uint128_t)(uint64_t)0U; + } + { + uint128_t b4; + uint128_t b0; + uint128_t b4_; + uint128_t b0_; + uint64_t i0; + uint64_t i1; + uint64_t i0_; + uint64_t i1_; + Hacl_Bignum_Fmul_mul_shift_reduce_(t, tmp, input2); + Hacl_Bignum_Fproduct_carry_wide_(t); + b4 = t[4U]; + b0 = t[0U]; + b4_ = b4 & (uint128_t)(uint64_t)0x7ffffffffffffU; + b0_ = b0 + (uint128_t)(uint64_t)19U * (uint64_t)(b4 >> (uint32_t)51U); + t[4U] = b4_; + t[0U] = b0_; + Hacl_Bignum_Fproduct_copy_from_wide_(output, t); + i0 = output[0U]; + i1 = output[1U]; + i0_ = i0 & (uint64_t)0x7ffffffffffffU; + i1_ = i1 + (i0 >> (uint32_t)51U); + output[0U] = i0_; + output[1U] = i1_; + } + } +} + +inline static void Hacl_Bignum_Fsquare_fsquare__(uint128_t *tmp, uint64_t *output) +{ + uint64_t r0 = output[0U]; + uint64_t r1 = output[1U]; + uint64_t r2 = output[2U]; + uint64_t r3 = output[3U]; + uint64_t r4 = output[4U]; + uint64_t d0 = r0 * (uint64_t)2U; + uint64_t d1 = r1 * (uint64_t)2U; + uint64_t d2 = r2 * (uint64_t)2U * (uint64_t)19U; + uint64_t d419 = r4 * (uint64_t)19U; + uint64_t d4 = d419 * (uint64_t)2U; + uint128_t s0 = (uint128_t)r0 * r0 + (uint128_t)d4 * r1 + (uint128_t)d2 * r3; + uint128_t s1 = (uint128_t)d0 * r1 + (uint128_t)d4 * r2 + (uint128_t)(r3 * (uint64_t)19U) * r3; + uint128_t s2 = (uint128_t)d0 * r2 + (uint128_t)r1 * r1 + (uint128_t)d4 * r3; + uint128_t s3 = (uint128_t)d0 * r3 + (uint128_t)d1 * r2 + (uint128_t)r4 * d419; + uint128_t s4 = (uint128_t)d0 * r4 + (uint128_t)d1 * r3 + (uint128_t)r2 * r2; + tmp[0U] = s0; + tmp[1U] = s1; + tmp[2U] = s2; + tmp[3U] = s3; + tmp[4U] = s4; +} + +inline static void Hacl_Bignum_Fsquare_fsquare_(uint128_t *tmp, uint64_t *output) +{ + uint128_t b4; + uint128_t b0; + uint128_t b4_; + uint128_t b0_; + uint64_t i0; + uint64_t i1; + uint64_t i0_; + uint64_t i1_; + Hacl_Bignum_Fsquare_fsquare__(tmp, output); + Hacl_Bignum_Fproduct_carry_wide_(tmp); + b4 = tmp[4U]; + b0 = tmp[0U]; + b4_ = b4 & (uint128_t)(uint64_t)0x7ffffffffffffU; + b0_ = b0 + (uint128_t)(uint64_t)19U * (uint64_t)(b4 >> (uint32_t)51U); + tmp[4U] = b4_; + tmp[0U] = b0_; + Hacl_Bignum_Fproduct_copy_from_wide_(output, tmp); + i0 = output[0U]; + i1 = output[1U]; + i0_ = i0 & (uint64_t)0x7ffffffffffffU; + i1_ = i1 + (i0 >> (uint32_t)51U); + output[0U] = i0_; + output[1U] = i1_; +} + +static void +Hacl_Bignum_Fsquare_fsquare_times_(uint64_t *input, uint128_t *tmp, uint32_t count1) +{ + uint32_t i; + Hacl_Bignum_Fsquare_fsquare_(tmp, input); + for (i = (uint32_t)1U; i < count1; i = i + (uint32_t)1U) + Hacl_Bignum_Fsquare_fsquare_(tmp, input); +} + +inline static void +Hacl_Bignum_Fsquare_fsquare_times(uint64_t *output, uint64_t *input, uint32_t count1) +{ + KRML_CHECK_SIZE(sizeof (uint128_t), (uint32_t)5U); + { + uint128_t t[5U]; + { + uint32_t _i; + for (_i = 0U; _i < (uint32_t)5U; ++_i) + t[_i] = (uint128_t)(uint64_t)0U; + } + memcpy(output, input, (uint32_t)5U * sizeof input[0U]); + Hacl_Bignum_Fsquare_fsquare_times_(output, t, count1); + } +} + +inline static void Hacl_Bignum_Fsquare_fsquare_times_inplace(uint64_t *output, uint32_t count1) +{ + KRML_CHECK_SIZE(sizeof (uint128_t), (uint32_t)5U); + { + uint128_t t[5U]; + { + uint32_t _i; + for (_i = 0U; _i < (uint32_t)5U; ++_i) + t[_i] = (uint128_t)(uint64_t)0U; + } + Hacl_Bignum_Fsquare_fsquare_times_(output, t, count1); + } +} + +inline static void Hacl_Bignum_Crecip_crecip(uint64_t *out, uint64_t *z) +{ + uint64_t buf[20U] = { 0U }; + uint64_t *a0 = buf; + uint64_t *t00 = buf + (uint32_t)5U; + uint64_t *b0 = buf + (uint32_t)10U; + uint64_t *t01; + uint64_t *b1; + uint64_t *c0; + uint64_t *a; + uint64_t *t0; + uint64_t *b; + uint64_t *c; + Hacl_Bignum_Fsquare_fsquare_times(a0, z, (uint32_t)1U); + Hacl_Bignum_Fsquare_fsquare_times(t00, a0, (uint32_t)2U); + Hacl_Bignum_Fmul_fmul(b0, t00, z); + Hacl_Bignum_Fmul_fmul(a0, b0, a0); + Hacl_Bignum_Fsquare_fsquare_times(t00, a0, (uint32_t)1U); + Hacl_Bignum_Fmul_fmul(b0, t00, b0); + Hacl_Bignum_Fsquare_fsquare_times(t00, b0, (uint32_t)5U); + t01 = buf + (uint32_t)5U; + b1 = buf + (uint32_t)10U; + c0 = buf + (uint32_t)15U; + Hacl_Bignum_Fmul_fmul(b1, t01, b1); + Hacl_Bignum_Fsquare_fsquare_times(t01, b1, (uint32_t)10U); + Hacl_Bignum_Fmul_fmul(c0, t01, b1); + Hacl_Bignum_Fsquare_fsquare_times(t01, c0, (uint32_t)20U); + Hacl_Bignum_Fmul_fmul(t01, t01, c0); + Hacl_Bignum_Fsquare_fsquare_times_inplace(t01, (uint32_t)10U); + Hacl_Bignum_Fmul_fmul(b1, t01, b1); + Hacl_Bignum_Fsquare_fsquare_times(t01, b1, (uint32_t)50U); + a = buf; + t0 = buf + (uint32_t)5U; + b = buf + (uint32_t)10U; + c = buf + (uint32_t)15U; + Hacl_Bignum_Fmul_fmul(c, t0, b); + Hacl_Bignum_Fsquare_fsquare_times(t0, c, (uint32_t)100U); + Hacl_Bignum_Fmul_fmul(t0, t0, c); + Hacl_Bignum_Fsquare_fsquare_times_inplace(t0, (uint32_t)50U); + Hacl_Bignum_Fmul_fmul(t0, t0, b); + Hacl_Bignum_Fsquare_fsquare_times_inplace(t0, (uint32_t)5U); + Hacl_Bignum_Fmul_fmul(out, t0, a); +} + +inline static void Hacl_Bignum_fsum(uint64_t *a, uint64_t *b) +{ + uint32_t i; + for (i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) + { + uint64_t xi = a[i]; + uint64_t yi = b[i]; + a[i] = xi + yi; + } +} + +inline static void Hacl_Bignum_fdifference(uint64_t *a, uint64_t *b) +{ + uint64_t tmp[5U] = { 0U }; + uint64_t b0; + uint64_t b1; + uint64_t b2; + uint64_t b3; + uint64_t b4; + memcpy(tmp, b, (uint32_t)5U * sizeof b[0U]); + b0 = tmp[0U]; + b1 = tmp[1U]; + b2 = tmp[2U]; + b3 = tmp[3U]; + b4 = tmp[4U]; + tmp[0U] = b0 + (uint64_t)0x3fffffffffff68U; + tmp[1U] = b1 + (uint64_t)0x3ffffffffffff8U; + tmp[2U] = b2 + (uint64_t)0x3ffffffffffff8U; + tmp[3U] = b3 + (uint64_t)0x3ffffffffffff8U; + tmp[4U] = b4 + (uint64_t)0x3ffffffffffff8U; + { + uint32_t i; + for (i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) + { + uint64_t xi = a[i]; + uint64_t yi = tmp[i]; + a[i] = yi - xi; + } + } +} + +inline static void Hacl_Bignum_fscalar(uint64_t *output, uint64_t *b, uint64_t s) +{ + KRML_CHECK_SIZE(sizeof (uint128_t), (uint32_t)5U); + { + uint128_t tmp[5U]; + { + uint32_t _i; + for (_i = 0U; _i < (uint32_t)5U; ++_i) + tmp[_i] = (uint128_t)(uint64_t)0U; + } + { + uint128_t b4; + uint128_t b0; + uint128_t b4_; + uint128_t b0_; + { + uint32_t i; + for (i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) + { + uint64_t xi = b[i]; + tmp[i] = (uint128_t)xi * s; + } + } + Hacl_Bignum_Fproduct_carry_wide_(tmp); + b4 = tmp[4U]; + b0 = tmp[0U]; + b4_ = b4 & (uint128_t)(uint64_t)0x7ffffffffffffU; + b0_ = b0 + (uint128_t)(uint64_t)19U * (uint64_t)(b4 >> (uint32_t)51U); + tmp[4U] = b4_; + tmp[0U] = b0_; + Hacl_Bignum_Fproduct_copy_from_wide_(output, tmp); + } + } +} + +inline static void Hacl_Bignum_fmul(uint64_t *output, uint64_t *a, uint64_t *b) +{ + Hacl_Bignum_Fmul_fmul(output, a, b); +} + +inline static void Hacl_Bignum_crecip(uint64_t *output, uint64_t *input) +{ + Hacl_Bignum_Crecip_crecip(output, input); +} + +static void +Hacl_EC_Point_swap_conditional_step(uint64_t *a, uint64_t *b, uint64_t swap1, uint32_t ctr) +{ + uint32_t i = ctr - (uint32_t)1U; + uint64_t ai = a[i]; + uint64_t bi = b[i]; + uint64_t x = swap1 & (ai ^ bi); + uint64_t ai1 = ai ^ x; + uint64_t bi1 = bi ^ x; + a[i] = ai1; + b[i] = bi1; +} + +static void +Hacl_EC_Point_swap_conditional_(uint64_t *a, uint64_t *b, uint64_t swap1, uint32_t ctr) +{ + if (!(ctr == (uint32_t)0U)) + { + uint32_t i; + Hacl_EC_Point_swap_conditional_step(a, b, swap1, ctr); + i = ctr - (uint32_t)1U; + Hacl_EC_Point_swap_conditional_(a, b, swap1, i); + } +} + +static void Hacl_EC_Point_swap_conditional(uint64_t *a, uint64_t *b, uint64_t iswap) +{ + uint64_t swap1 = (uint64_t)0U - iswap; + Hacl_EC_Point_swap_conditional_(a, b, swap1, (uint32_t)5U); + Hacl_EC_Point_swap_conditional_(a + (uint32_t)5U, b + (uint32_t)5U, swap1, (uint32_t)5U); +} + +static void Hacl_EC_Point_copy(uint64_t *output, uint64_t *input) +{ + memcpy(output, input, (uint32_t)5U * sizeof input[0U]); + memcpy(output + (uint32_t)5U, + input + (uint32_t)5U, + (uint32_t)5U * sizeof (input + (uint32_t)5U)[0U]); +} + +static void Hacl_EC_Format_fexpand(uint64_t *output, uint8_t *input) +{ + uint64_t i0 = load64_le(input); + uint8_t *x00 = input + (uint32_t)6U; + uint64_t i1 = load64_le(x00); + uint8_t *x01 = input + (uint32_t)12U; + uint64_t i2 = load64_le(x01); + uint8_t *x02 = input + (uint32_t)19U; + uint64_t i3 = load64_le(x02); + uint8_t *x0 = input + (uint32_t)24U; + uint64_t i4 = load64_le(x0); + uint64_t output0 = i0 & (uint64_t)0x7ffffffffffffU; + uint64_t output1 = i1 >> (uint32_t)3U & (uint64_t)0x7ffffffffffffU; + uint64_t output2 = i2 >> (uint32_t)6U & (uint64_t)0x7ffffffffffffU; + uint64_t output3 = i3 >> (uint32_t)1U & (uint64_t)0x7ffffffffffffU; + uint64_t output4 = i4 >> (uint32_t)12U & (uint64_t)0x7ffffffffffffU; + output[0U] = output0; + output[1U] = output1; + output[2U] = output2; + output[3U] = output3; + output[4U] = output4; +} + +static void Hacl_EC_Format_fcontract_first_carry_pass(uint64_t *input) +{ + uint64_t t0 = input[0U]; + uint64_t t1 = input[1U]; + uint64_t t2 = input[2U]; + uint64_t t3 = input[3U]; + uint64_t t4 = input[4U]; + uint64_t t1_ = t1 + (t0 >> (uint32_t)51U); + uint64_t t0_ = t0 & (uint64_t)0x7ffffffffffffU; + uint64_t t2_ = t2 + (t1_ >> (uint32_t)51U); + uint64_t t1__ = t1_ & (uint64_t)0x7ffffffffffffU; + uint64_t t3_ = t3 + (t2_ >> (uint32_t)51U); + uint64_t t2__ = t2_ & (uint64_t)0x7ffffffffffffU; + uint64_t t4_ = t4 + (t3_ >> (uint32_t)51U); + uint64_t t3__ = t3_ & (uint64_t)0x7ffffffffffffU; + input[0U] = t0_; + input[1U] = t1__; + input[2U] = t2__; + input[3U] = t3__; + input[4U] = t4_; +} + +static void Hacl_EC_Format_fcontract_first_carry_full(uint64_t *input) +{ + Hacl_EC_Format_fcontract_first_carry_pass(input); + Hacl_Bignum_Modulo_carry_top(input); +} + +static void Hacl_EC_Format_fcontract_second_carry_pass(uint64_t *input) +{ + uint64_t t0 = input[0U]; + uint64_t t1 = input[1U]; + uint64_t t2 = input[2U]; + uint64_t t3 = input[3U]; + uint64_t t4 = input[4U]; + uint64_t t1_ = t1 + (t0 >> (uint32_t)51U); + uint64_t t0_ = t0 & (uint64_t)0x7ffffffffffffU; + uint64_t t2_ = t2 + (t1_ >> (uint32_t)51U); + uint64_t t1__ = t1_ & (uint64_t)0x7ffffffffffffU; + uint64_t t3_ = t3 + (t2_ >> (uint32_t)51U); + uint64_t t2__ = t2_ & (uint64_t)0x7ffffffffffffU; + uint64_t t4_ = t4 + (t3_ >> (uint32_t)51U); + uint64_t t3__ = t3_ & (uint64_t)0x7ffffffffffffU; + input[0U] = t0_; + input[1U] = t1__; + input[2U] = t2__; + input[3U] = t3__; + input[4U] = t4_; +} + +static void Hacl_EC_Format_fcontract_second_carry_full(uint64_t *input) +{ + uint64_t i0; + uint64_t i1; + uint64_t i0_; + uint64_t i1_; + Hacl_EC_Format_fcontract_second_carry_pass(input); + Hacl_Bignum_Modulo_carry_top(input); + i0 = input[0U]; + i1 = input[1U]; + i0_ = i0 & (uint64_t)0x7ffffffffffffU; + i1_ = i1 + (i0 >> (uint32_t)51U); + input[0U] = i0_; + input[1U] = i1_; +} + +static void Hacl_EC_Format_fcontract_trim(uint64_t *input) +{ + uint64_t a0 = input[0U]; + uint64_t a1 = input[1U]; + uint64_t a2 = input[2U]; + uint64_t a3 = input[3U]; + uint64_t a4 = input[4U]; + uint64_t mask0 = FStar_UInt64_gte_mask(a0, (uint64_t)0x7ffffffffffedU); + uint64_t mask1 = FStar_UInt64_eq_mask(a1, (uint64_t)0x7ffffffffffffU); + uint64_t mask2 = FStar_UInt64_eq_mask(a2, (uint64_t)0x7ffffffffffffU); + uint64_t mask3 = FStar_UInt64_eq_mask(a3, (uint64_t)0x7ffffffffffffU); + uint64_t mask4 = FStar_UInt64_eq_mask(a4, (uint64_t)0x7ffffffffffffU); + uint64_t mask = (((mask0 & mask1) & mask2) & mask3) & mask4; + uint64_t a0_ = a0 - ((uint64_t)0x7ffffffffffedU & mask); + uint64_t a1_ = a1 - ((uint64_t)0x7ffffffffffffU & mask); + uint64_t a2_ = a2 - ((uint64_t)0x7ffffffffffffU & mask); + uint64_t a3_ = a3 - ((uint64_t)0x7ffffffffffffU & mask); + uint64_t a4_ = a4 - ((uint64_t)0x7ffffffffffffU & mask); + input[0U] = a0_; + input[1U] = a1_; + input[2U] = a2_; + input[3U] = a3_; + input[4U] = a4_; +} + +static void Hacl_EC_Format_fcontract_store(uint8_t *output, uint64_t *input) +{ + uint64_t t0 = input[0U]; + uint64_t t1 = input[1U]; + uint64_t t2 = input[2U]; + uint64_t t3 = input[3U]; + uint64_t t4 = input[4U]; + uint64_t o0 = t1 << (uint32_t)51U | t0; + uint64_t o1 = t2 << (uint32_t)38U | t1 >> (uint32_t)13U; + uint64_t o2 = t3 << (uint32_t)25U | t2 >> (uint32_t)26U; + uint64_t o3 = t4 << (uint32_t)12U | t3 >> (uint32_t)39U; + uint8_t *b0 = output; + uint8_t *b1 = output + (uint32_t)8U; + uint8_t *b2 = output + (uint32_t)16U; + uint8_t *b3 = output + (uint32_t)24U; + store64_le(b0, o0); + store64_le(b1, o1); + store64_le(b2, o2); + store64_le(b3, o3); +} + +static void Hacl_EC_Format_fcontract(uint8_t *output, uint64_t *input) +{ + Hacl_EC_Format_fcontract_first_carry_full(input); + Hacl_EC_Format_fcontract_second_carry_full(input); + Hacl_EC_Format_fcontract_trim(input); + Hacl_EC_Format_fcontract_store(output, input); +} + +static void Hacl_EC_Format_scalar_of_point(uint8_t *scalar, uint64_t *point) +{ + uint64_t *x = point; + uint64_t *z = point + (uint32_t)5U; + uint64_t buf[10U] = { 0U }; + uint64_t *zmone = buf; + uint64_t *sc = buf + (uint32_t)5U; + Hacl_Bignum_crecip(zmone, z); + Hacl_Bignum_fmul(sc, x, zmone); + Hacl_EC_Format_fcontract(scalar, sc); +} + +static void +Hacl_EC_AddAndDouble_fmonty( + uint64_t *pp, + uint64_t *ppq, + uint64_t *p, + uint64_t *pq, + uint64_t *qmqp +) +{ + uint64_t *qx = qmqp; + uint64_t *x2 = pp; + uint64_t *z2 = pp + (uint32_t)5U; + uint64_t *x3 = ppq; + uint64_t *z3 = ppq + (uint32_t)5U; + uint64_t *x = p; + uint64_t *z = p + (uint32_t)5U; + uint64_t *xprime = pq; + uint64_t *zprime = pq + (uint32_t)5U; + uint64_t buf[40U] = { 0U }; + uint64_t *origx = buf; + uint64_t *origxprime0 = buf + (uint32_t)5U; + uint64_t *xxprime0 = buf + (uint32_t)25U; + uint64_t *zzprime0 = buf + (uint32_t)30U; + uint64_t *origxprime; + uint64_t *xx0; + uint64_t *zz0; + uint64_t *xxprime; + uint64_t *zzprime; + uint64_t *zzzprime; + uint64_t *zzz; + uint64_t *xx; + uint64_t *zz; + uint64_t scalar; + memcpy(origx, x, (uint32_t)5U * sizeof x[0U]); + Hacl_Bignum_fsum(x, z); + Hacl_Bignum_fdifference(z, origx); + memcpy(origxprime0, xprime, (uint32_t)5U * sizeof xprime[0U]); + Hacl_Bignum_fsum(xprime, zprime); + Hacl_Bignum_fdifference(zprime, origxprime0); + Hacl_Bignum_fmul(xxprime0, xprime, z); + Hacl_Bignum_fmul(zzprime0, x, zprime); + origxprime = buf + (uint32_t)5U; + xx0 = buf + (uint32_t)15U; + zz0 = buf + (uint32_t)20U; + xxprime = buf + (uint32_t)25U; + zzprime = buf + (uint32_t)30U; + zzzprime = buf + (uint32_t)35U; + memcpy(origxprime, xxprime, (uint32_t)5U * sizeof xxprime[0U]); + Hacl_Bignum_fsum(xxprime, zzprime); + Hacl_Bignum_fdifference(zzprime, origxprime); + Hacl_Bignum_Fsquare_fsquare_times(x3, xxprime, (uint32_t)1U); + Hacl_Bignum_Fsquare_fsquare_times(zzzprime, zzprime, (uint32_t)1U); + Hacl_Bignum_fmul(z3, zzzprime, qx); + Hacl_Bignum_Fsquare_fsquare_times(xx0, x, (uint32_t)1U); + Hacl_Bignum_Fsquare_fsquare_times(zz0, z, (uint32_t)1U); + zzz = buf + (uint32_t)10U; + xx = buf + (uint32_t)15U; + zz = buf + (uint32_t)20U; + Hacl_Bignum_fmul(x2, xx, zz); + Hacl_Bignum_fdifference(zz, xx); + scalar = (uint64_t)121665U; + Hacl_Bignum_fscalar(zzz, zz, scalar); + Hacl_Bignum_fsum(zzz, xx); + Hacl_Bignum_fmul(z2, zzz, zz); +} + +static void +Hacl_EC_Ladder_SmallLoop_cmult_small_loop_step( + uint64_t *nq, + uint64_t *nqpq, + uint64_t *nq2, + uint64_t *nqpq2, + uint64_t *q, + uint8_t byt +) +{ + uint64_t bit0 = (uint64_t)(byt >> (uint32_t)7U); + uint64_t bit; + Hacl_EC_Point_swap_conditional(nq, nqpq, bit0); + Hacl_EC_AddAndDouble_fmonty(nq2, nqpq2, nq, nqpq, q); + bit = (uint64_t)(byt >> (uint32_t)7U); + Hacl_EC_Point_swap_conditional(nq2, nqpq2, bit); +} + +static void +Hacl_EC_Ladder_SmallLoop_cmult_small_loop_double_step( + uint64_t *nq, + uint64_t *nqpq, + uint64_t *nq2, + uint64_t *nqpq2, + uint64_t *q, + uint8_t byt +) +{ + uint8_t byt1; + Hacl_EC_Ladder_SmallLoop_cmult_small_loop_step(nq, nqpq, nq2, nqpq2, q, byt); + byt1 = byt << (uint32_t)1U; + Hacl_EC_Ladder_SmallLoop_cmult_small_loop_step(nq2, nqpq2, nq, nqpq, q, byt1); +} + +static void +Hacl_EC_Ladder_SmallLoop_cmult_small_loop( + uint64_t *nq, + uint64_t *nqpq, + uint64_t *nq2, + uint64_t *nqpq2, + uint64_t *q, + uint8_t byt, + uint32_t i +) +{ + if (!(i == (uint32_t)0U)) + { + uint32_t i_ = i - (uint32_t)1U; + uint8_t byt_; + Hacl_EC_Ladder_SmallLoop_cmult_small_loop_double_step(nq, nqpq, nq2, nqpq2, q, byt); + byt_ = byt << (uint32_t)2U; + Hacl_EC_Ladder_SmallLoop_cmult_small_loop(nq, nqpq, nq2, nqpq2, q, byt_, i_); + } +} + +static void +Hacl_EC_Ladder_BigLoop_cmult_big_loop( + uint8_t *n1, + uint64_t *nq, + uint64_t *nqpq, + uint64_t *nq2, + uint64_t *nqpq2, + uint64_t *q, + uint32_t i +) +{ + if (!(i == (uint32_t)0U)) + { + uint32_t i1 = i - (uint32_t)1U; + uint8_t byte = n1[i1]; + Hacl_EC_Ladder_SmallLoop_cmult_small_loop(nq, nqpq, nq2, nqpq2, q, byte, (uint32_t)4U); + Hacl_EC_Ladder_BigLoop_cmult_big_loop(n1, nq, nqpq, nq2, nqpq2, q, i1); + } +} + +static void Hacl_EC_Ladder_cmult(uint64_t *result, uint8_t *n1, uint64_t *q) +{ + uint64_t point_buf[40U] = { 0U }; + uint64_t *nq = point_buf; + uint64_t *nqpq = point_buf + (uint32_t)10U; + uint64_t *nq2 = point_buf + (uint32_t)20U; + uint64_t *nqpq2 = point_buf + (uint32_t)30U; + Hacl_EC_Point_copy(nqpq, q); + nq[0U] = (uint64_t)1U; + Hacl_EC_Ladder_BigLoop_cmult_big_loop(n1, nq, nqpq, nq2, nqpq2, q, (uint32_t)32U); + Hacl_EC_Point_copy(result, nq); +} + +void Hacl_Curve25519_crypto_scalarmult(uint8_t *mypublic, uint8_t *secret, uint8_t *basepoint) +{ + uint64_t buf0[10U] = { 0U }; + uint64_t *x0 = buf0; + uint64_t *z = buf0 + (uint32_t)5U; + uint64_t *q; + Hacl_EC_Format_fexpand(x0, basepoint); + z[0U] = (uint64_t)1U; + q = buf0; + { + uint8_t e[32U] = { 0U }; + uint8_t e0; + uint8_t e31; + uint8_t e01; + uint8_t e311; + uint8_t e312; + uint8_t *scalar; + memcpy(e, secret, (uint32_t)32U * sizeof secret[0U]); + e0 = e[0U]; + e31 = e[31U]; + e01 = e0 & (uint8_t)248U; + e311 = e31 & (uint8_t)127U; + e312 = e311 | (uint8_t)64U; + e[0U] = e01; + e[31U] = e312; + scalar = e; + { + uint64_t buf[15U] = { 0U }; + uint64_t *nq = buf; + uint64_t *x = nq; + x[0U] = (uint64_t)1U; + Hacl_EC_Ladder_cmult(nq, scalar, q); + Hacl_EC_Format_scalar_of_point(mypublic, nq); + } + } +} + diff --git a/Externals/mbedtls/3rdparty/everest/library/Hacl_Curve25519_joined.c b/Externals/mbedtls/3rdparty/everest/library/Hacl_Curve25519_joined.c new file mode 100644 index 000000000000..ee62be1ceb46 --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/library/Hacl_Curve25519_joined.c @@ -0,0 +1,41 @@ +/* + * Interface to code from Project Everest + * + * Copyright 2016-2018 INRIA and Microsoft Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#include "common.h" + +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) + +#if defined(__SIZEOF_INT128__) && (__SIZEOF_INT128__ == 16) +#define MBEDTLS_HAVE_INT128 +#endif + +#if defined(MBEDTLS_HAVE_INT128) +#include "Hacl_Curve25519.c" +#else +#define KRML_VERIFIED_UINT128 +#include "kremlib/FStar_UInt128_extracted.c" +#include "legacy/Hacl_Curve25519.c" +#endif + +#include "kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.c" + +#endif /* defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) */ + diff --git a/Externals/mbedtls/3rdparty/everest/library/everest.c b/Externals/mbedtls/3rdparty/everest/library/everest.c new file mode 100644 index 000000000000..82c4e03adb5f --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/library/everest.c @@ -0,0 +1,107 @@ +/* + * Interface to code from Project Everest + * + * Copyright 2016-2018 INRIA and Microsoft Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of Mbed TLS (https://tls.mbed.org). + */ + +#include "common.h" + +#include + +#include "mbedtls/ecdh.h" + +#include "everest/x25519.h" +#include "everest/everest.h" + +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#define mbedtls_calloc calloc +#define mbedtls_free free +#endif + +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) + +int mbedtls_everest_setup( mbedtls_ecdh_context_everest *ctx, int grp_id ) +{ + if( grp_id != MBEDTLS_ECP_DP_CURVE25519 ) + return MBEDTLS_ERR_ECP_BAD_INPUT_DATA; + mbedtls_x25519_init( &ctx->ctx ); + return 0; +} + +void mbedtls_everest_free( mbedtls_ecdh_context_everest *ctx ) +{ + mbedtls_x25519_free( &ctx->ctx ); +} + +int mbedtls_everest_make_params( mbedtls_ecdh_context_everest *ctx, size_t *olen, + unsigned char *buf, size_t blen, + int( *f_rng )( void *, unsigned char *, size_t ), + void *p_rng ) +{ + mbedtls_x25519_context *x25519_ctx = &ctx->ctx; + return mbedtls_x25519_make_params( x25519_ctx, olen, buf, blen, f_rng, p_rng ); +} + +int mbedtls_everest_read_params( mbedtls_ecdh_context_everest *ctx, + const unsigned char **buf, + const unsigned char *end ) +{ + mbedtls_x25519_context *x25519_ctx = &ctx->ctx; + return mbedtls_x25519_read_params( x25519_ctx, buf, end ); +} + +int mbedtls_everest_get_params( mbedtls_ecdh_context_everest *ctx, + const mbedtls_ecp_keypair *key, + mbedtls_everest_ecdh_side side ) +{ + mbedtls_x25519_context *x25519_ctx = &ctx->ctx; + mbedtls_x25519_ecdh_side s = side == MBEDTLS_EVEREST_ECDH_OURS ? + MBEDTLS_X25519_ECDH_OURS : + MBEDTLS_X25519_ECDH_THEIRS; + return mbedtls_x25519_get_params( x25519_ctx, key, s ); +} + +int mbedtls_everest_make_public( mbedtls_ecdh_context_everest *ctx, size_t *olen, + unsigned char *buf, size_t blen, + int( *f_rng )( void *, unsigned char *, size_t ), + void *p_rng ) +{ + mbedtls_x25519_context *x25519_ctx = &ctx->ctx; + return mbedtls_x25519_make_public( x25519_ctx, olen, buf, blen, f_rng, p_rng ); +} + +int mbedtls_everest_read_public( mbedtls_ecdh_context_everest *ctx, + const unsigned char *buf, size_t blen ) +{ + mbedtls_x25519_context *x25519_ctx = &ctx->ctx; + return mbedtls_x25519_read_public ( x25519_ctx, buf, blen ); +} + +int mbedtls_everest_calc_secret( mbedtls_ecdh_context_everest *ctx, size_t *olen, + unsigned char *buf, size_t blen, + int( *f_rng )( void *, unsigned char *, size_t ), + void *p_rng ) +{ + mbedtls_x25519_context *x25519_ctx = &ctx->ctx; + return mbedtls_x25519_calc_secret( x25519_ctx, olen, buf, blen, f_rng, p_rng ); +} + +#endif /* MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED */ + diff --git a/Externals/mbedtls/3rdparty/everest/library/kremlib/FStar_UInt128_extracted.c b/Externals/mbedtls/3rdparty/everest/library/kremlib/FStar_UInt128_extracted.c new file mode 100644 index 000000000000..1060515d927a --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/library/kremlib/FStar_UInt128_extracted.c @@ -0,0 +1,413 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +/* This file was generated by KreMLin + * KreMLin invocation: ../krml -fc89 -fparentheses -fno-shadow -header /mnt/e/everest/verify/hdrB9w -minimal -fparentheses -fcurly-braces -fno-shadow -header copyright-header.txt -minimal -tmpdir extracted -warn-error +9+11 -skip-compilation -extract-uints -add-include -add-include "kremlib.h" -add-include "kremlin/internal/compat.h" extracted/prims.krml extracted/FStar_Pervasives_Native.krml extracted/FStar_Pervasives.krml extracted/FStar_Mul.krml extracted/FStar_Squash.krml extracted/FStar_Classical.krml extracted/FStar_StrongExcludedMiddle.krml extracted/FStar_FunctionalExtensionality.krml extracted/FStar_List_Tot_Base.krml extracted/FStar_List_Tot_Properties.krml extracted/FStar_List_Tot.krml extracted/FStar_Seq_Base.krml extracted/FStar_Seq_Properties.krml extracted/FStar_Seq.krml extracted/FStar_Math_Lib.krml extracted/FStar_Math_Lemmas.krml extracted/FStar_BitVector.krml extracted/FStar_UInt.krml extracted/FStar_UInt32.krml extracted/FStar_Int.krml extracted/FStar_Int16.krml extracted/FStar_Preorder.krml extracted/FStar_Ghost.krml extracted/FStar_ErasedLogic.krml extracted/FStar_UInt64.krml extracted/FStar_Set.krml extracted/FStar_PropositionalExtensionality.krml extracted/FStar_PredicateExtensionality.krml extracted/FStar_TSet.krml extracted/FStar_Monotonic_Heap.krml extracted/FStar_Heap.krml extracted/FStar_Map.krml extracted/FStar_Monotonic_HyperHeap.krml extracted/FStar_Monotonic_HyperStack.krml extracted/FStar_HyperStack.krml extracted/FStar_Monotonic_Witnessed.krml extracted/FStar_HyperStack_ST.krml extracted/FStar_HyperStack_All.krml extracted/FStar_Date.krml extracted/FStar_Universe.krml extracted/FStar_GSet.krml extracted/FStar_ModifiesGen.krml extracted/LowStar_Monotonic_Buffer.krml extracted/LowStar_Buffer.krml extracted/Spec_Loops.krml extracted/LowStar_BufferOps.krml extracted/C_Loops.krml extracted/FStar_UInt8.krml extracted/FStar_Kremlin_Endianness.krml extracted/FStar_UInt63.krml extracted/FStar_Exn.krml extracted/FStar_ST.krml extracted/FStar_All.krml extracted/FStar_Dyn.krml extracted/FStar_Int63.krml extracted/FStar_Int64.krml extracted/FStar_Int32.krml extracted/FStar_Int8.krml extracted/FStar_UInt16.krml extracted/FStar_Int_Cast.krml extracted/FStar_UInt128.krml extracted/C_Endianness.krml extracted/FStar_List.krml extracted/FStar_Float.krml extracted/FStar_IO.krml extracted/C.krml extracted/FStar_Char.krml extracted/FStar_String.krml extracted/LowStar_Modifies.krml extracted/C_String.krml extracted/FStar_Bytes.krml extracted/FStar_HyperStack_IO.krml extracted/C_Failure.krml extracted/TestLib.krml extracted/FStar_Int_Cast_Full.krml + * F* version: 059db0c8 + * KreMLin version: 916c37ac + */ + + +#include "FStar_UInt128.h" +#include "kremlin/c_endianness.h" +#include "FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.h" + +uint64_t FStar_UInt128___proj__Mkuint128__item__low(FStar_UInt128_uint128 projectee) +{ + return projectee.low; +} + +uint64_t FStar_UInt128___proj__Mkuint128__item__high(FStar_UInt128_uint128 projectee) +{ + return projectee.high; +} + +static uint64_t FStar_UInt128_constant_time_carry(uint64_t a, uint64_t b) +{ + return (a ^ ((a ^ b) | ((a - b) ^ b))) >> (uint32_t)63U; +} + +static uint64_t FStar_UInt128_carry(uint64_t a, uint64_t b) +{ + return FStar_UInt128_constant_time_carry(a, b); +} + +FStar_UInt128_uint128 FStar_UInt128_add(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + FStar_UInt128_uint128 + flat = { a.low + b.low, a.high + b.high + FStar_UInt128_carry(a.low + b.low, b.low) }; + return flat; +} + +FStar_UInt128_uint128 +FStar_UInt128_add_underspec(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + FStar_UInt128_uint128 + flat = { a.low + b.low, a.high + b.high + FStar_UInt128_carry(a.low + b.low, b.low) }; + return flat; +} + +FStar_UInt128_uint128 FStar_UInt128_add_mod(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + FStar_UInt128_uint128 + flat = { a.low + b.low, a.high + b.high + FStar_UInt128_carry(a.low + b.low, b.low) }; + return flat; +} + +FStar_UInt128_uint128 FStar_UInt128_sub(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + FStar_UInt128_uint128 + flat = { a.low - b.low, a.high - b.high - FStar_UInt128_carry(a.low, a.low - b.low) }; + return flat; +} + +FStar_UInt128_uint128 +FStar_UInt128_sub_underspec(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + FStar_UInt128_uint128 + flat = { a.low - b.low, a.high - b.high - FStar_UInt128_carry(a.low, a.low - b.low) }; + return flat; +} + +static FStar_UInt128_uint128 +FStar_UInt128_sub_mod_impl(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + FStar_UInt128_uint128 + flat = { a.low - b.low, a.high - b.high - FStar_UInt128_carry(a.low, a.low - b.low) }; + return flat; +} + +FStar_UInt128_uint128 FStar_UInt128_sub_mod(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + return FStar_UInt128_sub_mod_impl(a, b); +} + +FStar_UInt128_uint128 FStar_UInt128_logand(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + FStar_UInt128_uint128 flat = { a.low & b.low, a.high & b.high }; + return flat; +} + +FStar_UInt128_uint128 FStar_UInt128_logxor(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + FStar_UInt128_uint128 flat = { a.low ^ b.low, a.high ^ b.high }; + return flat; +} + +FStar_UInt128_uint128 FStar_UInt128_logor(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + FStar_UInt128_uint128 flat = { a.low | b.low, a.high | b.high }; + return flat; +} + +FStar_UInt128_uint128 FStar_UInt128_lognot(FStar_UInt128_uint128 a) +{ + FStar_UInt128_uint128 flat = { ~a.low, ~a.high }; + return flat; +} + +static uint32_t FStar_UInt128_u32_64 = (uint32_t)64U; + +static uint64_t FStar_UInt128_add_u64_shift_left(uint64_t hi, uint64_t lo, uint32_t s) +{ + return (hi << s) + (lo >> (FStar_UInt128_u32_64 - s)); +} + +static uint64_t FStar_UInt128_add_u64_shift_left_respec(uint64_t hi, uint64_t lo, uint32_t s) +{ + return FStar_UInt128_add_u64_shift_left(hi, lo, s); +} + +static FStar_UInt128_uint128 +FStar_UInt128_shift_left_small(FStar_UInt128_uint128 a, uint32_t s) +{ + if (s == (uint32_t)0U) + { + return a; + } + else + { + FStar_UInt128_uint128 + flat = { a.low << s, FStar_UInt128_add_u64_shift_left_respec(a.high, a.low, s) }; + return flat; + } +} + +static FStar_UInt128_uint128 +FStar_UInt128_shift_left_large(FStar_UInt128_uint128 a, uint32_t s) +{ + FStar_UInt128_uint128 flat = { (uint64_t)0U, a.low << (s - FStar_UInt128_u32_64) }; + return flat; +} + +FStar_UInt128_uint128 FStar_UInt128_shift_left(FStar_UInt128_uint128 a, uint32_t s) +{ + if (s < FStar_UInt128_u32_64) + { + return FStar_UInt128_shift_left_small(a, s); + } + else + { + return FStar_UInt128_shift_left_large(a, s); + } +} + +static uint64_t FStar_UInt128_add_u64_shift_right(uint64_t hi, uint64_t lo, uint32_t s) +{ + return (lo >> s) + (hi << (FStar_UInt128_u32_64 - s)); +} + +static uint64_t FStar_UInt128_add_u64_shift_right_respec(uint64_t hi, uint64_t lo, uint32_t s) +{ + return FStar_UInt128_add_u64_shift_right(hi, lo, s); +} + +static FStar_UInt128_uint128 +FStar_UInt128_shift_right_small(FStar_UInt128_uint128 a, uint32_t s) +{ + if (s == (uint32_t)0U) + { + return a; + } + else + { + FStar_UInt128_uint128 + flat = { FStar_UInt128_add_u64_shift_right_respec(a.high, a.low, s), a.high >> s }; + return flat; + } +} + +static FStar_UInt128_uint128 +FStar_UInt128_shift_right_large(FStar_UInt128_uint128 a, uint32_t s) +{ + FStar_UInt128_uint128 flat = { a.high >> (s - FStar_UInt128_u32_64), (uint64_t)0U }; + return flat; +} + +FStar_UInt128_uint128 FStar_UInt128_shift_right(FStar_UInt128_uint128 a, uint32_t s) +{ + if (s < FStar_UInt128_u32_64) + { + return FStar_UInt128_shift_right_small(a, s); + } + else + { + return FStar_UInt128_shift_right_large(a, s); + } +} + +bool FStar_UInt128_eq(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + return a.low == b.low && a.high == b.high; +} + +bool FStar_UInt128_gt(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + return a.high > b.high || (a.high == b.high && a.low > b.low); +} + +bool FStar_UInt128_lt(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + return a.high < b.high || (a.high == b.high && a.low < b.low); +} + +bool FStar_UInt128_gte(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + return a.high > b.high || (a.high == b.high && a.low >= b.low); +} + +bool FStar_UInt128_lte(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + return a.high < b.high || (a.high == b.high && a.low <= b.low); +} + +FStar_UInt128_uint128 FStar_UInt128_eq_mask(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + FStar_UInt128_uint128 + flat = + { + FStar_UInt64_eq_mask(a.low, + b.low) + & FStar_UInt64_eq_mask(a.high, b.high), + FStar_UInt64_eq_mask(a.low, + b.low) + & FStar_UInt64_eq_mask(a.high, b.high) + }; + return flat; +} + +FStar_UInt128_uint128 FStar_UInt128_gte_mask(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b) +{ + FStar_UInt128_uint128 + flat = + { + (FStar_UInt64_gte_mask(a.high, b.high) & ~FStar_UInt64_eq_mask(a.high, b.high)) + | (FStar_UInt64_eq_mask(a.high, b.high) & FStar_UInt64_gte_mask(a.low, b.low)), + (FStar_UInt64_gte_mask(a.high, b.high) & ~FStar_UInt64_eq_mask(a.high, b.high)) + | (FStar_UInt64_eq_mask(a.high, b.high) & FStar_UInt64_gte_mask(a.low, b.low)) + }; + return flat; +} + +FStar_UInt128_uint128 FStar_UInt128_uint64_to_uint128(uint64_t a) +{ + FStar_UInt128_uint128 flat = { a, (uint64_t)0U }; + return flat; +} + +uint64_t FStar_UInt128_uint128_to_uint64(FStar_UInt128_uint128 a) +{ + return a.low; +} + +FStar_UInt128_uint128 +(*FStar_UInt128_op_Plus_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1) = + FStar_UInt128_add; + +FStar_UInt128_uint128 +(*FStar_UInt128_op_Plus_Question_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1) = + FStar_UInt128_add_underspec; + +FStar_UInt128_uint128 +(*FStar_UInt128_op_Plus_Percent_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1) = + FStar_UInt128_add_mod; + +FStar_UInt128_uint128 +(*FStar_UInt128_op_Subtraction_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1) = + FStar_UInt128_sub; + +FStar_UInt128_uint128 +(*FStar_UInt128_op_Subtraction_Question_Hat)( + FStar_UInt128_uint128 x0, + FStar_UInt128_uint128 x1 +) = FStar_UInt128_sub_underspec; + +FStar_UInt128_uint128 +(*FStar_UInt128_op_Subtraction_Percent_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1) = + FStar_UInt128_sub_mod; + +FStar_UInt128_uint128 +(*FStar_UInt128_op_Amp_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1) = + FStar_UInt128_logand; + +FStar_UInt128_uint128 +(*FStar_UInt128_op_Hat_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1) = + FStar_UInt128_logxor; + +FStar_UInt128_uint128 +(*FStar_UInt128_op_Bar_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1) = + FStar_UInt128_logor; + +FStar_UInt128_uint128 +(*FStar_UInt128_op_Less_Less_Hat)(FStar_UInt128_uint128 x0, uint32_t x1) = + FStar_UInt128_shift_left; + +FStar_UInt128_uint128 +(*FStar_UInt128_op_Greater_Greater_Hat)(FStar_UInt128_uint128 x0, uint32_t x1) = + FStar_UInt128_shift_right; + +bool +(*FStar_UInt128_op_Equals_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1) = + FStar_UInt128_eq; + +bool +(*FStar_UInt128_op_Greater_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1) = + FStar_UInt128_gt; + +bool +(*FStar_UInt128_op_Less_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1) = + FStar_UInt128_lt; + +bool +(*FStar_UInt128_op_Greater_Equals_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1) = + FStar_UInt128_gte; + +bool +(*FStar_UInt128_op_Less_Equals_Hat)(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1) = + FStar_UInt128_lte; + +static uint64_t FStar_UInt128_u64_mod_32(uint64_t a) +{ + return a & (uint64_t)0xffffffffU; +} + +static uint32_t FStar_UInt128_u32_32 = (uint32_t)32U; + +static uint64_t FStar_UInt128_u32_combine(uint64_t hi, uint64_t lo) +{ + return lo + (hi << FStar_UInt128_u32_32); +} + +FStar_UInt128_uint128 FStar_UInt128_mul32(uint64_t x, uint32_t y) +{ + FStar_UInt128_uint128 + flat = + { + FStar_UInt128_u32_combine((x >> FStar_UInt128_u32_32) + * (uint64_t)y + + (FStar_UInt128_u64_mod_32(x) * (uint64_t)y >> FStar_UInt128_u32_32), + FStar_UInt128_u64_mod_32(FStar_UInt128_u64_mod_32(x) * (uint64_t)y)), + ((x >> FStar_UInt128_u32_32) + * (uint64_t)y + + (FStar_UInt128_u64_mod_32(x) * (uint64_t)y >> FStar_UInt128_u32_32)) + >> FStar_UInt128_u32_32 + }; + return flat; +} + +typedef struct K___uint64_t_uint64_t_uint64_t_uint64_t_s +{ + uint64_t fst; + uint64_t snd; + uint64_t thd; + uint64_t f3; +} +K___uint64_t_uint64_t_uint64_t_uint64_t; + +static K___uint64_t_uint64_t_uint64_t_uint64_t +FStar_UInt128_mul_wide_impl_t_(uint64_t x, uint64_t y) +{ + K___uint64_t_uint64_t_uint64_t_uint64_t + flat = + { + FStar_UInt128_u64_mod_32(x), + FStar_UInt128_u64_mod_32(FStar_UInt128_u64_mod_32(x) * FStar_UInt128_u64_mod_32(y)), + x + >> FStar_UInt128_u32_32, + (x >> FStar_UInt128_u32_32) + * FStar_UInt128_u64_mod_32(y) + + (FStar_UInt128_u64_mod_32(x) * FStar_UInt128_u64_mod_32(y) >> FStar_UInt128_u32_32) + }; + return flat; +} + +static uint64_t FStar_UInt128_u32_combine_(uint64_t hi, uint64_t lo) +{ + return lo + (hi << FStar_UInt128_u32_32); +} + +static FStar_UInt128_uint128 FStar_UInt128_mul_wide_impl(uint64_t x, uint64_t y) +{ + K___uint64_t_uint64_t_uint64_t_uint64_t scrut = FStar_UInt128_mul_wide_impl_t_(x, y); + uint64_t u1 = scrut.fst; + uint64_t w3 = scrut.snd; + uint64_t x_ = scrut.thd; + uint64_t t_ = scrut.f3; + FStar_UInt128_uint128 + flat = + { + FStar_UInt128_u32_combine_(u1 * (y >> FStar_UInt128_u32_32) + FStar_UInt128_u64_mod_32(t_), + w3), + x_ + * (y >> FStar_UInt128_u32_32) + + (t_ >> FStar_UInt128_u32_32) + + ((u1 * (y >> FStar_UInt128_u32_32) + FStar_UInt128_u64_mod_32(t_)) >> FStar_UInt128_u32_32) + }; + return flat; +} + +FStar_UInt128_uint128 FStar_UInt128_mul_wide(uint64_t x, uint64_t y) +{ + return FStar_UInt128_mul_wide_impl(x, y); +} + diff --git a/Externals/mbedtls/3rdparty/everest/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.c b/Externals/mbedtls/3rdparty/everest/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.c new file mode 100644 index 000000000000..08265248f20c --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.c @@ -0,0 +1,100 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +/* This file was generated by KreMLin + * KreMLin invocation: ../krml -fc89 -fparentheses -fno-shadow -header /mnt/e/everest/verify/hdrB9w -minimal -fparentheses -fcurly-braces -fno-shadow -header copyright-header.txt -minimal -tmpdir dist/minimal -skip-compilation -extract-uints -add-include -add-include -add-include "kremlin/internal/compat.h" -add-include "kremlin/internal/types.h" -bundle FStar.UInt64+FStar.UInt32+FStar.UInt16+FStar.UInt8=* extracted/prims.krml extracted/FStar_Pervasives_Native.krml extracted/FStar_Pervasives.krml extracted/FStar_Mul.krml extracted/FStar_Squash.krml extracted/FStar_Classical.krml extracted/FStar_StrongExcludedMiddle.krml extracted/FStar_FunctionalExtensionality.krml extracted/FStar_List_Tot_Base.krml extracted/FStar_List_Tot_Properties.krml extracted/FStar_List_Tot.krml extracted/FStar_Seq_Base.krml extracted/FStar_Seq_Properties.krml extracted/FStar_Seq.krml extracted/FStar_Math_Lib.krml extracted/FStar_Math_Lemmas.krml extracted/FStar_BitVector.krml extracted/FStar_UInt.krml extracted/FStar_UInt32.krml extracted/FStar_Int.krml extracted/FStar_Int16.krml extracted/FStar_Preorder.krml extracted/FStar_Ghost.krml extracted/FStar_ErasedLogic.krml extracted/FStar_UInt64.krml extracted/FStar_Set.krml extracted/FStar_PropositionalExtensionality.krml extracted/FStar_PredicateExtensionality.krml extracted/FStar_TSet.krml extracted/FStar_Monotonic_Heap.krml extracted/FStar_Heap.krml extracted/FStar_Map.krml extracted/FStar_Monotonic_HyperHeap.krml extracted/FStar_Monotonic_HyperStack.krml extracted/FStar_HyperStack.krml extracted/FStar_Monotonic_Witnessed.krml extracted/FStar_HyperStack_ST.krml extracted/FStar_HyperStack_All.krml extracted/FStar_Date.krml extracted/FStar_Universe.krml extracted/FStar_GSet.krml extracted/FStar_ModifiesGen.krml extracted/LowStar_Monotonic_Buffer.krml extracted/LowStar_Buffer.krml extracted/Spec_Loops.krml extracted/LowStar_BufferOps.krml extracted/C_Loops.krml extracted/FStar_UInt8.krml extracted/FStar_Kremlin_Endianness.krml extracted/FStar_UInt63.krml extracted/FStar_Exn.krml extracted/FStar_ST.krml extracted/FStar_All.krml extracted/FStar_Dyn.krml extracted/FStar_Int63.krml extracted/FStar_Int64.krml extracted/FStar_Int32.krml extracted/FStar_Int8.krml extracted/FStar_UInt16.krml extracted/FStar_Int_Cast.krml extracted/FStar_UInt128.krml extracted/C_Endianness.krml extracted/FStar_List.krml extracted/FStar_Float.krml extracted/FStar_IO.krml extracted/C.krml extracted/FStar_Char.krml extracted/FStar_String.krml extracted/LowStar_Modifies.krml extracted/C_String.krml extracted/FStar_Bytes.krml extracted/FStar_HyperStack_IO.krml extracted/C_Failure.krml extracted/TestLib.krml extracted/FStar_Int_Cast_Full.krml + * F* version: 059db0c8 + * KreMLin version: 916c37ac + */ + + +#include "FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.h" + +uint64_t FStar_UInt64_eq_mask(uint64_t a, uint64_t b) +{ + uint64_t x = a ^ b; + uint64_t minus_x = ~x + (uint64_t)1U; + uint64_t x_or_minus_x = x | minus_x; + uint64_t xnx = x_or_minus_x >> (uint32_t)63U; + return xnx - (uint64_t)1U; +} + +uint64_t FStar_UInt64_gte_mask(uint64_t a, uint64_t b) +{ + uint64_t x = a; + uint64_t y = b; + uint64_t x_xor_y = x ^ y; + uint64_t x_sub_y = x - y; + uint64_t x_sub_y_xor_y = x_sub_y ^ y; + uint64_t q = x_xor_y | x_sub_y_xor_y; + uint64_t x_xor_q = x ^ q; + uint64_t x_xor_q_ = x_xor_q >> (uint32_t)63U; + return x_xor_q_ - (uint64_t)1U; +} + +uint32_t FStar_UInt32_eq_mask(uint32_t a, uint32_t b) +{ + uint32_t x = a ^ b; + uint32_t minus_x = ~x + (uint32_t)1U; + uint32_t x_or_minus_x = x | minus_x; + uint32_t xnx = x_or_minus_x >> (uint32_t)31U; + return xnx - (uint32_t)1U; +} + +uint32_t FStar_UInt32_gte_mask(uint32_t a, uint32_t b) +{ + uint32_t x = a; + uint32_t y = b; + uint32_t x_xor_y = x ^ y; + uint32_t x_sub_y = x - y; + uint32_t x_sub_y_xor_y = x_sub_y ^ y; + uint32_t q = x_xor_y | x_sub_y_xor_y; + uint32_t x_xor_q = x ^ q; + uint32_t x_xor_q_ = x_xor_q >> (uint32_t)31U; + return x_xor_q_ - (uint32_t)1U; +} + +uint16_t FStar_UInt16_eq_mask(uint16_t a, uint16_t b) +{ + uint16_t x = a ^ b; + uint16_t minus_x = ~x + (uint16_t)1U; + uint16_t x_or_minus_x = x | minus_x; + uint16_t xnx = x_or_minus_x >> (uint32_t)15U; + return xnx - (uint16_t)1U; +} + +uint16_t FStar_UInt16_gte_mask(uint16_t a, uint16_t b) +{ + uint16_t x = a; + uint16_t y = b; + uint16_t x_xor_y = x ^ y; + uint16_t x_sub_y = x - y; + uint16_t x_sub_y_xor_y = x_sub_y ^ y; + uint16_t q = x_xor_y | x_sub_y_xor_y; + uint16_t x_xor_q = x ^ q; + uint16_t x_xor_q_ = x_xor_q >> (uint32_t)15U; + return x_xor_q_ - (uint16_t)1U; +} + +uint8_t FStar_UInt8_eq_mask(uint8_t a, uint8_t b) +{ + uint8_t x = a ^ b; + uint8_t minus_x = ~x + (uint8_t)1U; + uint8_t x_or_minus_x = x | minus_x; + uint8_t xnx = x_or_minus_x >> (uint32_t)7U; + return xnx - (uint8_t)1U; +} + +uint8_t FStar_UInt8_gte_mask(uint8_t a, uint8_t b) +{ + uint8_t x = a; + uint8_t y = b; + uint8_t x_xor_y = x ^ y; + uint8_t x_sub_y = x - y; + uint8_t x_sub_y_xor_y = x_sub_y ^ y; + uint8_t q = x_xor_y | x_sub_y_xor_y; + uint8_t x_xor_q = x ^ q; + uint8_t x_xor_q_ = x_xor_q >> (uint32_t)7U; + return x_xor_q_ - (uint8_t)1U; +} + diff --git a/Externals/mbedtls/3rdparty/everest/library/legacy/Hacl_Curve25519.c b/Externals/mbedtls/3rdparty/everest/library/legacy/Hacl_Curve25519.c new file mode 100644 index 000000000000..babebe4f111c --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/library/legacy/Hacl_Curve25519.c @@ -0,0 +1,805 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +/* This file was generated by KreMLin + * KreMLin invocation: /mnt/e/everest/verify/kremlin/krml -fc89 -fparentheses -fno-shadow -header /mnt/e/everest/verify/hdrcLh -minimal -fc89 -fparentheses -fno-shadow -header /mnt/e/everest/verify/hdrcLh -minimal -I /mnt/e/everest/verify/hacl-star/code/lib/kremlin -I /mnt/e/everest/verify/kremlin/kremlib/compat -I /mnt/e/everest/verify/hacl-star/specs -I /mnt/e/everest/verify/hacl-star/specs/old -I . -ccopt -march=native -verbose -ldopt -flto -tmpdir x25519-c -I ../bignum -bundle Hacl.Curve25519=* -minimal -add-include "kremlib.h" -skip-compilation x25519-c/out.krml -o x25519-c/Hacl_Curve25519.c + * F* version: 059db0c8 + * KreMLin version: 916c37ac + */ + + +#include "Hacl_Curve25519.h" + +extern uint64_t FStar_UInt64_eq_mask(uint64_t x0, uint64_t x1); + +extern uint64_t FStar_UInt64_gte_mask(uint64_t x0, uint64_t x1); + +extern FStar_UInt128_uint128 +FStar_UInt128_add(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +extern FStar_UInt128_uint128 +FStar_UInt128_add_mod(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +extern FStar_UInt128_uint128 +FStar_UInt128_logand(FStar_UInt128_uint128 x0, FStar_UInt128_uint128 x1); + +extern FStar_UInt128_uint128 FStar_UInt128_shift_right(FStar_UInt128_uint128 x0, uint32_t x1); + +extern FStar_UInt128_uint128 FStar_UInt128_uint64_to_uint128(uint64_t x0); + +extern uint64_t FStar_UInt128_uint128_to_uint64(FStar_UInt128_uint128 x0); + +extern FStar_UInt128_uint128 FStar_UInt128_mul_wide(uint64_t x0, uint64_t x1); + +static void Hacl_Bignum_Modulo_carry_top(uint64_t *b) +{ + uint64_t b4 = b[4U]; + uint64_t b0 = b[0U]; + uint64_t b4_ = b4 & (uint64_t)0x7ffffffffffffU; + uint64_t b0_ = b0 + (uint64_t)19U * (b4 >> (uint32_t)51U); + b[4U] = b4_; + b[0U] = b0_; +} + +inline static void +Hacl_Bignum_Fproduct_copy_from_wide_(uint64_t *output, FStar_UInt128_uint128 *input) +{ + uint32_t i; + for (i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) + { + FStar_UInt128_uint128 xi = input[i]; + output[i] = FStar_UInt128_uint128_to_uint64(xi); + } +} + +inline static void +Hacl_Bignum_Fproduct_sum_scalar_multiplication_( + FStar_UInt128_uint128 *output, + uint64_t *input, + uint64_t s +) +{ + uint32_t i; + for (i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) + { + FStar_UInt128_uint128 xi = output[i]; + uint64_t yi = input[i]; + output[i] = FStar_UInt128_add_mod(xi, FStar_UInt128_mul_wide(yi, s)); + } +} + +inline static void Hacl_Bignum_Fproduct_carry_wide_(FStar_UInt128_uint128 *tmp) +{ + uint32_t i; + for (i = (uint32_t)0U; i < (uint32_t)4U; i = i + (uint32_t)1U) + { + uint32_t ctr = i; + FStar_UInt128_uint128 tctr = tmp[ctr]; + FStar_UInt128_uint128 tctrp1 = tmp[ctr + (uint32_t)1U]; + uint64_t r0 = FStar_UInt128_uint128_to_uint64(tctr) & (uint64_t)0x7ffffffffffffU; + FStar_UInt128_uint128 c = FStar_UInt128_shift_right(tctr, (uint32_t)51U); + tmp[ctr] = FStar_UInt128_uint64_to_uint128(r0); + tmp[ctr + (uint32_t)1U] = FStar_UInt128_add(tctrp1, c); + } +} + +inline static void Hacl_Bignum_Fmul_shift_reduce(uint64_t *output) +{ + uint64_t tmp = output[4U]; + uint64_t b0; + { + uint32_t i; + for (i = (uint32_t)0U; i < (uint32_t)4U; i = i + (uint32_t)1U) + { + uint32_t ctr = (uint32_t)5U - i - (uint32_t)1U; + uint64_t z = output[ctr - (uint32_t)1U]; + output[ctr] = z; + } + } + output[0U] = tmp; + b0 = output[0U]; + output[0U] = (uint64_t)19U * b0; +} + +static void +Hacl_Bignum_Fmul_mul_shift_reduce_( + FStar_UInt128_uint128 *output, + uint64_t *input, + uint64_t *input2 +) +{ + uint32_t i; + uint64_t input2i; + { + uint32_t i0; + for (i0 = (uint32_t)0U; i0 < (uint32_t)4U; i0 = i0 + (uint32_t)1U) + { + uint64_t input2i0 = input2[i0]; + Hacl_Bignum_Fproduct_sum_scalar_multiplication_(output, input, input2i0); + Hacl_Bignum_Fmul_shift_reduce(input); + } + } + i = (uint32_t)4U; + input2i = input2[i]; + Hacl_Bignum_Fproduct_sum_scalar_multiplication_(output, input, input2i); +} + +inline static void Hacl_Bignum_Fmul_fmul(uint64_t *output, uint64_t *input, uint64_t *input2) +{ + uint64_t tmp[5U] = { 0U }; + memcpy(tmp, input, (uint32_t)5U * sizeof input[0U]); + KRML_CHECK_SIZE(sizeof (FStar_UInt128_uint128), (uint32_t)5U); + { + FStar_UInt128_uint128 t[5U]; + { + uint32_t _i; + for (_i = 0U; _i < (uint32_t)5U; ++_i) + t[_i] = FStar_UInt128_uint64_to_uint128((uint64_t)0U); + } + { + FStar_UInt128_uint128 b4; + FStar_UInt128_uint128 b0; + FStar_UInt128_uint128 b4_; + FStar_UInt128_uint128 b0_; + uint64_t i0; + uint64_t i1; + uint64_t i0_; + uint64_t i1_; + Hacl_Bignum_Fmul_mul_shift_reduce_(t, tmp, input2); + Hacl_Bignum_Fproduct_carry_wide_(t); + b4 = t[4U]; + b0 = t[0U]; + b4_ = FStar_UInt128_logand(b4, FStar_UInt128_uint64_to_uint128((uint64_t)0x7ffffffffffffU)); + b0_ = + FStar_UInt128_add(b0, + FStar_UInt128_mul_wide((uint64_t)19U, + FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(b4, (uint32_t)51U)))); + t[4U] = b4_; + t[0U] = b0_; + Hacl_Bignum_Fproduct_copy_from_wide_(output, t); + i0 = output[0U]; + i1 = output[1U]; + i0_ = i0 & (uint64_t)0x7ffffffffffffU; + i1_ = i1 + (i0 >> (uint32_t)51U); + output[0U] = i0_; + output[1U] = i1_; + } + } +} + +inline static void Hacl_Bignum_Fsquare_fsquare__(FStar_UInt128_uint128 *tmp, uint64_t *output) +{ + uint64_t r0 = output[0U]; + uint64_t r1 = output[1U]; + uint64_t r2 = output[2U]; + uint64_t r3 = output[3U]; + uint64_t r4 = output[4U]; + uint64_t d0 = r0 * (uint64_t)2U; + uint64_t d1 = r1 * (uint64_t)2U; + uint64_t d2 = r2 * (uint64_t)2U * (uint64_t)19U; + uint64_t d419 = r4 * (uint64_t)19U; + uint64_t d4 = d419 * (uint64_t)2U; + FStar_UInt128_uint128 + s0 = + FStar_UInt128_add(FStar_UInt128_add(FStar_UInt128_mul_wide(r0, r0), + FStar_UInt128_mul_wide(d4, r1)), + FStar_UInt128_mul_wide(d2, r3)); + FStar_UInt128_uint128 + s1 = + FStar_UInt128_add(FStar_UInt128_add(FStar_UInt128_mul_wide(d0, r1), + FStar_UInt128_mul_wide(d4, r2)), + FStar_UInt128_mul_wide(r3 * (uint64_t)19U, r3)); + FStar_UInt128_uint128 + s2 = + FStar_UInt128_add(FStar_UInt128_add(FStar_UInt128_mul_wide(d0, r2), + FStar_UInt128_mul_wide(r1, r1)), + FStar_UInt128_mul_wide(d4, r3)); + FStar_UInt128_uint128 + s3 = + FStar_UInt128_add(FStar_UInt128_add(FStar_UInt128_mul_wide(d0, r3), + FStar_UInt128_mul_wide(d1, r2)), + FStar_UInt128_mul_wide(r4, d419)); + FStar_UInt128_uint128 + s4 = + FStar_UInt128_add(FStar_UInt128_add(FStar_UInt128_mul_wide(d0, r4), + FStar_UInt128_mul_wide(d1, r3)), + FStar_UInt128_mul_wide(r2, r2)); + tmp[0U] = s0; + tmp[1U] = s1; + tmp[2U] = s2; + tmp[3U] = s3; + tmp[4U] = s4; +} + +inline static void Hacl_Bignum_Fsquare_fsquare_(FStar_UInt128_uint128 *tmp, uint64_t *output) +{ + FStar_UInt128_uint128 b4; + FStar_UInt128_uint128 b0; + FStar_UInt128_uint128 b4_; + FStar_UInt128_uint128 b0_; + uint64_t i0; + uint64_t i1; + uint64_t i0_; + uint64_t i1_; + Hacl_Bignum_Fsquare_fsquare__(tmp, output); + Hacl_Bignum_Fproduct_carry_wide_(tmp); + b4 = tmp[4U]; + b0 = tmp[0U]; + b4_ = FStar_UInt128_logand(b4, FStar_UInt128_uint64_to_uint128((uint64_t)0x7ffffffffffffU)); + b0_ = + FStar_UInt128_add(b0, + FStar_UInt128_mul_wide((uint64_t)19U, + FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(b4, (uint32_t)51U)))); + tmp[4U] = b4_; + tmp[0U] = b0_; + Hacl_Bignum_Fproduct_copy_from_wide_(output, tmp); + i0 = output[0U]; + i1 = output[1U]; + i0_ = i0 & (uint64_t)0x7ffffffffffffU; + i1_ = i1 + (i0 >> (uint32_t)51U); + output[0U] = i0_; + output[1U] = i1_; +} + +static void +Hacl_Bignum_Fsquare_fsquare_times_( + uint64_t *input, + FStar_UInt128_uint128 *tmp, + uint32_t count1 +) +{ + uint32_t i; + Hacl_Bignum_Fsquare_fsquare_(tmp, input); + for (i = (uint32_t)1U; i < count1; i = i + (uint32_t)1U) + Hacl_Bignum_Fsquare_fsquare_(tmp, input); +} + +inline static void +Hacl_Bignum_Fsquare_fsquare_times(uint64_t *output, uint64_t *input, uint32_t count1) +{ + KRML_CHECK_SIZE(sizeof (FStar_UInt128_uint128), (uint32_t)5U); + { + FStar_UInt128_uint128 t[5U]; + { + uint32_t _i; + for (_i = 0U; _i < (uint32_t)5U; ++_i) + t[_i] = FStar_UInt128_uint64_to_uint128((uint64_t)0U); + } + memcpy(output, input, (uint32_t)5U * sizeof input[0U]); + Hacl_Bignum_Fsquare_fsquare_times_(output, t, count1); + } +} + +inline static void Hacl_Bignum_Fsquare_fsquare_times_inplace(uint64_t *output, uint32_t count1) +{ + KRML_CHECK_SIZE(sizeof (FStar_UInt128_uint128), (uint32_t)5U); + { + FStar_UInt128_uint128 t[5U]; + { + uint32_t _i; + for (_i = 0U; _i < (uint32_t)5U; ++_i) + t[_i] = FStar_UInt128_uint64_to_uint128((uint64_t)0U); + } + Hacl_Bignum_Fsquare_fsquare_times_(output, t, count1); + } +} + +inline static void Hacl_Bignum_Crecip_crecip(uint64_t *out, uint64_t *z) +{ + uint64_t buf[20U] = { 0U }; + uint64_t *a0 = buf; + uint64_t *t00 = buf + (uint32_t)5U; + uint64_t *b0 = buf + (uint32_t)10U; + uint64_t *t01; + uint64_t *b1; + uint64_t *c0; + uint64_t *a; + uint64_t *t0; + uint64_t *b; + uint64_t *c; + Hacl_Bignum_Fsquare_fsquare_times(a0, z, (uint32_t)1U); + Hacl_Bignum_Fsquare_fsquare_times(t00, a0, (uint32_t)2U); + Hacl_Bignum_Fmul_fmul(b0, t00, z); + Hacl_Bignum_Fmul_fmul(a0, b0, a0); + Hacl_Bignum_Fsquare_fsquare_times(t00, a0, (uint32_t)1U); + Hacl_Bignum_Fmul_fmul(b0, t00, b0); + Hacl_Bignum_Fsquare_fsquare_times(t00, b0, (uint32_t)5U); + t01 = buf + (uint32_t)5U; + b1 = buf + (uint32_t)10U; + c0 = buf + (uint32_t)15U; + Hacl_Bignum_Fmul_fmul(b1, t01, b1); + Hacl_Bignum_Fsquare_fsquare_times(t01, b1, (uint32_t)10U); + Hacl_Bignum_Fmul_fmul(c0, t01, b1); + Hacl_Bignum_Fsquare_fsquare_times(t01, c0, (uint32_t)20U); + Hacl_Bignum_Fmul_fmul(t01, t01, c0); + Hacl_Bignum_Fsquare_fsquare_times_inplace(t01, (uint32_t)10U); + Hacl_Bignum_Fmul_fmul(b1, t01, b1); + Hacl_Bignum_Fsquare_fsquare_times(t01, b1, (uint32_t)50U); + a = buf; + t0 = buf + (uint32_t)5U; + b = buf + (uint32_t)10U; + c = buf + (uint32_t)15U; + Hacl_Bignum_Fmul_fmul(c, t0, b); + Hacl_Bignum_Fsquare_fsquare_times(t0, c, (uint32_t)100U); + Hacl_Bignum_Fmul_fmul(t0, t0, c); + Hacl_Bignum_Fsquare_fsquare_times_inplace(t0, (uint32_t)50U); + Hacl_Bignum_Fmul_fmul(t0, t0, b); + Hacl_Bignum_Fsquare_fsquare_times_inplace(t0, (uint32_t)5U); + Hacl_Bignum_Fmul_fmul(out, t0, a); +} + +inline static void Hacl_Bignum_fsum(uint64_t *a, uint64_t *b) +{ + uint32_t i; + for (i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) + { + uint64_t xi = a[i]; + uint64_t yi = b[i]; + a[i] = xi + yi; + } +} + +inline static void Hacl_Bignum_fdifference(uint64_t *a, uint64_t *b) +{ + uint64_t tmp[5U] = { 0U }; + uint64_t b0; + uint64_t b1; + uint64_t b2; + uint64_t b3; + uint64_t b4; + memcpy(tmp, b, (uint32_t)5U * sizeof b[0U]); + b0 = tmp[0U]; + b1 = tmp[1U]; + b2 = tmp[2U]; + b3 = tmp[3U]; + b4 = tmp[4U]; + tmp[0U] = b0 + (uint64_t)0x3fffffffffff68U; + tmp[1U] = b1 + (uint64_t)0x3ffffffffffff8U; + tmp[2U] = b2 + (uint64_t)0x3ffffffffffff8U; + tmp[3U] = b3 + (uint64_t)0x3ffffffffffff8U; + tmp[4U] = b4 + (uint64_t)0x3ffffffffffff8U; + { + uint32_t i; + for (i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) + { + uint64_t xi = a[i]; + uint64_t yi = tmp[i]; + a[i] = yi - xi; + } + } +} + +inline static void Hacl_Bignum_fscalar(uint64_t *output, uint64_t *b, uint64_t s) +{ + KRML_CHECK_SIZE(sizeof (FStar_UInt128_uint128), (uint32_t)5U); + { + FStar_UInt128_uint128 tmp[5U]; + { + uint32_t _i; + for (_i = 0U; _i < (uint32_t)5U; ++_i) + tmp[_i] = FStar_UInt128_uint64_to_uint128((uint64_t)0U); + } + { + FStar_UInt128_uint128 b4; + FStar_UInt128_uint128 b0; + FStar_UInt128_uint128 b4_; + FStar_UInt128_uint128 b0_; + { + uint32_t i; + for (i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) + { + uint64_t xi = b[i]; + tmp[i] = FStar_UInt128_mul_wide(xi, s); + } + } + Hacl_Bignum_Fproduct_carry_wide_(tmp); + b4 = tmp[4U]; + b0 = tmp[0U]; + b4_ = FStar_UInt128_logand(b4, FStar_UInt128_uint64_to_uint128((uint64_t)0x7ffffffffffffU)); + b0_ = + FStar_UInt128_add(b0, + FStar_UInt128_mul_wide((uint64_t)19U, + FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(b4, (uint32_t)51U)))); + tmp[4U] = b4_; + tmp[0U] = b0_; + Hacl_Bignum_Fproduct_copy_from_wide_(output, tmp); + } + } +} + +inline static void Hacl_Bignum_fmul(uint64_t *output, uint64_t *a, uint64_t *b) +{ + Hacl_Bignum_Fmul_fmul(output, a, b); +} + +inline static void Hacl_Bignum_crecip(uint64_t *output, uint64_t *input) +{ + Hacl_Bignum_Crecip_crecip(output, input); +} + +static void +Hacl_EC_Point_swap_conditional_step(uint64_t *a, uint64_t *b, uint64_t swap1, uint32_t ctr) +{ + uint32_t i = ctr - (uint32_t)1U; + uint64_t ai = a[i]; + uint64_t bi = b[i]; + uint64_t x = swap1 & (ai ^ bi); + uint64_t ai1 = ai ^ x; + uint64_t bi1 = bi ^ x; + a[i] = ai1; + b[i] = bi1; +} + +static void +Hacl_EC_Point_swap_conditional_(uint64_t *a, uint64_t *b, uint64_t swap1, uint32_t ctr) +{ + if (!(ctr == (uint32_t)0U)) + { + uint32_t i; + Hacl_EC_Point_swap_conditional_step(a, b, swap1, ctr); + i = ctr - (uint32_t)1U; + Hacl_EC_Point_swap_conditional_(a, b, swap1, i); + } +} + +static void Hacl_EC_Point_swap_conditional(uint64_t *a, uint64_t *b, uint64_t iswap) +{ + uint64_t swap1 = (uint64_t)0U - iswap; + Hacl_EC_Point_swap_conditional_(a, b, swap1, (uint32_t)5U); + Hacl_EC_Point_swap_conditional_(a + (uint32_t)5U, b + (uint32_t)5U, swap1, (uint32_t)5U); +} + +static void Hacl_EC_Point_copy(uint64_t *output, uint64_t *input) +{ + memcpy(output, input, (uint32_t)5U * sizeof input[0U]); + memcpy(output + (uint32_t)5U, + input + (uint32_t)5U, + (uint32_t)5U * sizeof (input + (uint32_t)5U)[0U]); +} + +static void Hacl_EC_Format_fexpand(uint64_t *output, uint8_t *input) +{ + uint64_t i0 = load64_le(input); + uint8_t *x00 = input + (uint32_t)6U; + uint64_t i1 = load64_le(x00); + uint8_t *x01 = input + (uint32_t)12U; + uint64_t i2 = load64_le(x01); + uint8_t *x02 = input + (uint32_t)19U; + uint64_t i3 = load64_le(x02); + uint8_t *x0 = input + (uint32_t)24U; + uint64_t i4 = load64_le(x0); + uint64_t output0 = i0 & (uint64_t)0x7ffffffffffffU; + uint64_t output1 = i1 >> (uint32_t)3U & (uint64_t)0x7ffffffffffffU; + uint64_t output2 = i2 >> (uint32_t)6U & (uint64_t)0x7ffffffffffffU; + uint64_t output3 = i3 >> (uint32_t)1U & (uint64_t)0x7ffffffffffffU; + uint64_t output4 = i4 >> (uint32_t)12U & (uint64_t)0x7ffffffffffffU; + output[0U] = output0; + output[1U] = output1; + output[2U] = output2; + output[3U] = output3; + output[4U] = output4; +} + +static void Hacl_EC_Format_fcontract_first_carry_pass(uint64_t *input) +{ + uint64_t t0 = input[0U]; + uint64_t t1 = input[1U]; + uint64_t t2 = input[2U]; + uint64_t t3 = input[3U]; + uint64_t t4 = input[4U]; + uint64_t t1_ = t1 + (t0 >> (uint32_t)51U); + uint64_t t0_ = t0 & (uint64_t)0x7ffffffffffffU; + uint64_t t2_ = t2 + (t1_ >> (uint32_t)51U); + uint64_t t1__ = t1_ & (uint64_t)0x7ffffffffffffU; + uint64_t t3_ = t3 + (t2_ >> (uint32_t)51U); + uint64_t t2__ = t2_ & (uint64_t)0x7ffffffffffffU; + uint64_t t4_ = t4 + (t3_ >> (uint32_t)51U); + uint64_t t3__ = t3_ & (uint64_t)0x7ffffffffffffU; + input[0U] = t0_; + input[1U] = t1__; + input[2U] = t2__; + input[3U] = t3__; + input[4U] = t4_; +} + +static void Hacl_EC_Format_fcontract_first_carry_full(uint64_t *input) +{ + Hacl_EC_Format_fcontract_first_carry_pass(input); + Hacl_Bignum_Modulo_carry_top(input); +} + +static void Hacl_EC_Format_fcontract_second_carry_pass(uint64_t *input) +{ + uint64_t t0 = input[0U]; + uint64_t t1 = input[1U]; + uint64_t t2 = input[2U]; + uint64_t t3 = input[3U]; + uint64_t t4 = input[4U]; + uint64_t t1_ = t1 + (t0 >> (uint32_t)51U); + uint64_t t0_ = t0 & (uint64_t)0x7ffffffffffffU; + uint64_t t2_ = t2 + (t1_ >> (uint32_t)51U); + uint64_t t1__ = t1_ & (uint64_t)0x7ffffffffffffU; + uint64_t t3_ = t3 + (t2_ >> (uint32_t)51U); + uint64_t t2__ = t2_ & (uint64_t)0x7ffffffffffffU; + uint64_t t4_ = t4 + (t3_ >> (uint32_t)51U); + uint64_t t3__ = t3_ & (uint64_t)0x7ffffffffffffU; + input[0U] = t0_; + input[1U] = t1__; + input[2U] = t2__; + input[3U] = t3__; + input[4U] = t4_; +} + +static void Hacl_EC_Format_fcontract_second_carry_full(uint64_t *input) +{ + uint64_t i0; + uint64_t i1; + uint64_t i0_; + uint64_t i1_; + Hacl_EC_Format_fcontract_second_carry_pass(input); + Hacl_Bignum_Modulo_carry_top(input); + i0 = input[0U]; + i1 = input[1U]; + i0_ = i0 & (uint64_t)0x7ffffffffffffU; + i1_ = i1 + (i0 >> (uint32_t)51U); + input[0U] = i0_; + input[1U] = i1_; +} + +static void Hacl_EC_Format_fcontract_trim(uint64_t *input) +{ + uint64_t a0 = input[0U]; + uint64_t a1 = input[1U]; + uint64_t a2 = input[2U]; + uint64_t a3 = input[3U]; + uint64_t a4 = input[4U]; + uint64_t mask0 = FStar_UInt64_gte_mask(a0, (uint64_t)0x7ffffffffffedU); + uint64_t mask1 = FStar_UInt64_eq_mask(a1, (uint64_t)0x7ffffffffffffU); + uint64_t mask2 = FStar_UInt64_eq_mask(a2, (uint64_t)0x7ffffffffffffU); + uint64_t mask3 = FStar_UInt64_eq_mask(a3, (uint64_t)0x7ffffffffffffU); + uint64_t mask4 = FStar_UInt64_eq_mask(a4, (uint64_t)0x7ffffffffffffU); + uint64_t mask = (((mask0 & mask1) & mask2) & mask3) & mask4; + uint64_t a0_ = a0 - ((uint64_t)0x7ffffffffffedU & mask); + uint64_t a1_ = a1 - ((uint64_t)0x7ffffffffffffU & mask); + uint64_t a2_ = a2 - ((uint64_t)0x7ffffffffffffU & mask); + uint64_t a3_ = a3 - ((uint64_t)0x7ffffffffffffU & mask); + uint64_t a4_ = a4 - ((uint64_t)0x7ffffffffffffU & mask); + input[0U] = a0_; + input[1U] = a1_; + input[2U] = a2_; + input[3U] = a3_; + input[4U] = a4_; +} + +static void Hacl_EC_Format_fcontract_store(uint8_t *output, uint64_t *input) +{ + uint64_t t0 = input[0U]; + uint64_t t1 = input[1U]; + uint64_t t2 = input[2U]; + uint64_t t3 = input[3U]; + uint64_t t4 = input[4U]; + uint64_t o0 = t1 << (uint32_t)51U | t0; + uint64_t o1 = t2 << (uint32_t)38U | t1 >> (uint32_t)13U; + uint64_t o2 = t3 << (uint32_t)25U | t2 >> (uint32_t)26U; + uint64_t o3 = t4 << (uint32_t)12U | t3 >> (uint32_t)39U; + uint8_t *b0 = output; + uint8_t *b1 = output + (uint32_t)8U; + uint8_t *b2 = output + (uint32_t)16U; + uint8_t *b3 = output + (uint32_t)24U; + store64_le(b0, o0); + store64_le(b1, o1); + store64_le(b2, o2); + store64_le(b3, o3); +} + +static void Hacl_EC_Format_fcontract(uint8_t *output, uint64_t *input) +{ + Hacl_EC_Format_fcontract_first_carry_full(input); + Hacl_EC_Format_fcontract_second_carry_full(input); + Hacl_EC_Format_fcontract_trim(input); + Hacl_EC_Format_fcontract_store(output, input); +} + +static void Hacl_EC_Format_scalar_of_point(uint8_t *scalar, uint64_t *point) +{ + uint64_t *x = point; + uint64_t *z = point + (uint32_t)5U; + uint64_t buf[10U] = { 0U }; + uint64_t *zmone = buf; + uint64_t *sc = buf + (uint32_t)5U; + Hacl_Bignum_crecip(zmone, z); + Hacl_Bignum_fmul(sc, x, zmone); + Hacl_EC_Format_fcontract(scalar, sc); +} + +static void +Hacl_EC_AddAndDouble_fmonty( + uint64_t *pp, + uint64_t *ppq, + uint64_t *p, + uint64_t *pq, + uint64_t *qmqp +) +{ + uint64_t *qx = qmqp; + uint64_t *x2 = pp; + uint64_t *z2 = pp + (uint32_t)5U; + uint64_t *x3 = ppq; + uint64_t *z3 = ppq + (uint32_t)5U; + uint64_t *x = p; + uint64_t *z = p + (uint32_t)5U; + uint64_t *xprime = pq; + uint64_t *zprime = pq + (uint32_t)5U; + uint64_t buf[40U] = { 0U }; + uint64_t *origx = buf; + uint64_t *origxprime0 = buf + (uint32_t)5U; + uint64_t *xxprime0 = buf + (uint32_t)25U; + uint64_t *zzprime0 = buf + (uint32_t)30U; + uint64_t *origxprime; + uint64_t *xx0; + uint64_t *zz0; + uint64_t *xxprime; + uint64_t *zzprime; + uint64_t *zzzprime; + uint64_t *zzz; + uint64_t *xx; + uint64_t *zz; + uint64_t scalar; + memcpy(origx, x, (uint32_t)5U * sizeof x[0U]); + Hacl_Bignum_fsum(x, z); + Hacl_Bignum_fdifference(z, origx); + memcpy(origxprime0, xprime, (uint32_t)5U * sizeof xprime[0U]); + Hacl_Bignum_fsum(xprime, zprime); + Hacl_Bignum_fdifference(zprime, origxprime0); + Hacl_Bignum_fmul(xxprime0, xprime, z); + Hacl_Bignum_fmul(zzprime0, x, zprime); + origxprime = buf + (uint32_t)5U; + xx0 = buf + (uint32_t)15U; + zz0 = buf + (uint32_t)20U; + xxprime = buf + (uint32_t)25U; + zzprime = buf + (uint32_t)30U; + zzzprime = buf + (uint32_t)35U; + memcpy(origxprime, xxprime, (uint32_t)5U * sizeof xxprime[0U]); + Hacl_Bignum_fsum(xxprime, zzprime); + Hacl_Bignum_fdifference(zzprime, origxprime); + Hacl_Bignum_Fsquare_fsquare_times(x3, xxprime, (uint32_t)1U); + Hacl_Bignum_Fsquare_fsquare_times(zzzprime, zzprime, (uint32_t)1U); + Hacl_Bignum_fmul(z3, zzzprime, qx); + Hacl_Bignum_Fsquare_fsquare_times(xx0, x, (uint32_t)1U); + Hacl_Bignum_Fsquare_fsquare_times(zz0, z, (uint32_t)1U); + zzz = buf + (uint32_t)10U; + xx = buf + (uint32_t)15U; + zz = buf + (uint32_t)20U; + Hacl_Bignum_fmul(x2, xx, zz); + Hacl_Bignum_fdifference(zz, xx); + scalar = (uint64_t)121665U; + Hacl_Bignum_fscalar(zzz, zz, scalar); + Hacl_Bignum_fsum(zzz, xx); + Hacl_Bignum_fmul(z2, zzz, zz); +} + +static void +Hacl_EC_Ladder_SmallLoop_cmult_small_loop_step( + uint64_t *nq, + uint64_t *nqpq, + uint64_t *nq2, + uint64_t *nqpq2, + uint64_t *q, + uint8_t byt +) +{ + uint64_t bit0 = (uint64_t)(byt >> (uint32_t)7U); + uint64_t bit; + Hacl_EC_Point_swap_conditional(nq, nqpq, bit0); + Hacl_EC_AddAndDouble_fmonty(nq2, nqpq2, nq, nqpq, q); + bit = (uint64_t)(byt >> (uint32_t)7U); + Hacl_EC_Point_swap_conditional(nq2, nqpq2, bit); +} + +static void +Hacl_EC_Ladder_SmallLoop_cmult_small_loop_double_step( + uint64_t *nq, + uint64_t *nqpq, + uint64_t *nq2, + uint64_t *nqpq2, + uint64_t *q, + uint8_t byt +) +{ + uint8_t byt1; + Hacl_EC_Ladder_SmallLoop_cmult_small_loop_step(nq, nqpq, nq2, nqpq2, q, byt); + byt1 = byt << (uint32_t)1U; + Hacl_EC_Ladder_SmallLoop_cmult_small_loop_step(nq2, nqpq2, nq, nqpq, q, byt1); +} + +static void +Hacl_EC_Ladder_SmallLoop_cmult_small_loop( + uint64_t *nq, + uint64_t *nqpq, + uint64_t *nq2, + uint64_t *nqpq2, + uint64_t *q, + uint8_t byt, + uint32_t i +) +{ + if (!(i == (uint32_t)0U)) + { + uint32_t i_ = i - (uint32_t)1U; + uint8_t byt_; + Hacl_EC_Ladder_SmallLoop_cmult_small_loop_double_step(nq, nqpq, nq2, nqpq2, q, byt); + byt_ = byt << (uint32_t)2U; + Hacl_EC_Ladder_SmallLoop_cmult_small_loop(nq, nqpq, nq2, nqpq2, q, byt_, i_); + } +} + +static void +Hacl_EC_Ladder_BigLoop_cmult_big_loop( + uint8_t *n1, + uint64_t *nq, + uint64_t *nqpq, + uint64_t *nq2, + uint64_t *nqpq2, + uint64_t *q, + uint32_t i +) +{ + if (!(i == (uint32_t)0U)) + { + uint32_t i1 = i - (uint32_t)1U; + uint8_t byte = n1[i1]; + Hacl_EC_Ladder_SmallLoop_cmult_small_loop(nq, nqpq, nq2, nqpq2, q, byte, (uint32_t)4U); + Hacl_EC_Ladder_BigLoop_cmult_big_loop(n1, nq, nqpq, nq2, nqpq2, q, i1); + } +} + +static void Hacl_EC_Ladder_cmult(uint64_t *result, uint8_t *n1, uint64_t *q) +{ + uint64_t point_buf[40U] = { 0U }; + uint64_t *nq = point_buf; + uint64_t *nqpq = point_buf + (uint32_t)10U; + uint64_t *nq2 = point_buf + (uint32_t)20U; + uint64_t *nqpq2 = point_buf + (uint32_t)30U; + Hacl_EC_Point_copy(nqpq, q); + nq[0U] = (uint64_t)1U; + Hacl_EC_Ladder_BigLoop_cmult_big_loop(n1, nq, nqpq, nq2, nqpq2, q, (uint32_t)32U); + Hacl_EC_Point_copy(result, nq); +} + +void Hacl_Curve25519_crypto_scalarmult(uint8_t *mypublic, uint8_t *secret, uint8_t *basepoint) +{ + uint64_t buf0[10U] = { 0U }; + uint64_t *x0 = buf0; + uint64_t *z = buf0 + (uint32_t)5U; + uint64_t *q; + Hacl_EC_Format_fexpand(x0, basepoint); + z[0U] = (uint64_t)1U; + q = buf0; + { + uint8_t e[32U] = { 0U }; + uint8_t e0; + uint8_t e31; + uint8_t e01; + uint8_t e311; + uint8_t e312; + uint8_t *scalar; + memcpy(e, secret, (uint32_t)32U * sizeof secret[0U]); + e0 = e[0U]; + e31 = e[31U]; + e01 = e0 & (uint8_t)248U; + e311 = e31 & (uint8_t)127U; + e312 = e311 | (uint8_t)64U; + e[0U] = e01; + e[31U] = e312; + scalar = e; + { + uint64_t buf[15U] = { 0U }; + uint64_t *nq = buf; + uint64_t *x = nq; + x[0U] = (uint64_t)1U; + Hacl_EC_Ladder_cmult(nq, scalar, q); + Hacl_EC_Format_scalar_of_point(mypublic, nq); + } + } +} + diff --git a/Externals/mbedtls/3rdparty/everest/library/x25519.c b/Externals/mbedtls/3rdparty/everest/library/x25519.c new file mode 100644 index 000000000000..9faa9ab7d86a --- /dev/null +++ b/Externals/mbedtls/3rdparty/everest/library/x25519.c @@ -0,0 +1,186 @@ +/* + * ECDH with curve-optimized implementation multiplexing + * + * Copyright 2016-2018 INRIA and Microsoft Corporation + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#include "common.h" + +#if defined(MBEDTLS_ECDH_C) && defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) + +#include + +#if !(defined(__SIZEOF_INT128__) && (__SIZEOF_INT128__ == 16)) +#define KRML_VERIFIED_UINT128 +#endif + +#include +#include + +#include "x25519.h" + +#include + +/* + * Initialize context + */ +void mbedtls_x25519_init( mbedtls_x25519_context *ctx ) +{ + mbedtls_platform_zeroize( ctx, sizeof( mbedtls_x25519_context ) ); +} + +/* + * Free context + */ +void mbedtls_x25519_free( mbedtls_x25519_context *ctx ) +{ + if( ctx == NULL ) + return; + + mbedtls_platform_zeroize( ctx->our_secret, MBEDTLS_X25519_KEY_SIZE_BYTES ); + mbedtls_platform_zeroize( ctx->peer_point, MBEDTLS_X25519_KEY_SIZE_BYTES ); +} + +int mbedtls_x25519_make_params( mbedtls_x25519_context *ctx, size_t *olen, + unsigned char *buf, size_t blen, + int( *f_rng )(void *, unsigned char *, size_t), + void *p_rng ) +{ + int ret = 0; + + uint8_t base[MBEDTLS_X25519_KEY_SIZE_BYTES] = {0}; + + if( ( ret = f_rng( p_rng, ctx->our_secret, MBEDTLS_X25519_KEY_SIZE_BYTES ) ) != 0 ) + return ret; + + *olen = MBEDTLS_X25519_KEY_SIZE_BYTES + 4; + if( blen < *olen ) + return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL ); + + *buf++ = MBEDTLS_ECP_TLS_NAMED_CURVE; + *buf++ = MBEDTLS_ECP_TLS_CURVE25519 >> 8; + *buf++ = MBEDTLS_ECP_TLS_CURVE25519 & 0xFF; + *buf++ = MBEDTLS_X25519_KEY_SIZE_BYTES; + + base[0] = 9; + Hacl_Curve25519_crypto_scalarmult( buf, ctx->our_secret, base ); + + base[0] = 0; + if( memcmp( buf, base, MBEDTLS_X25519_KEY_SIZE_BYTES) == 0 ) + return MBEDTLS_ERR_ECP_RANDOM_FAILED; + + return( 0 ); +} + +int mbedtls_x25519_read_params( mbedtls_x25519_context *ctx, + const unsigned char **buf, const unsigned char *end ) +{ + if( end - *buf < MBEDTLS_X25519_KEY_SIZE_BYTES + 1 ) + return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); + + if( ( *(*buf)++ != MBEDTLS_X25519_KEY_SIZE_BYTES ) ) + return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); + + memcpy( ctx->peer_point, *buf, MBEDTLS_X25519_KEY_SIZE_BYTES ); + *buf += MBEDTLS_X25519_KEY_SIZE_BYTES; + return( 0 ); +} + +int mbedtls_x25519_get_params( mbedtls_x25519_context *ctx, const mbedtls_ecp_keypair *key, + mbedtls_x25519_ecdh_side side ) +{ + size_t olen = 0; + + switch( side ) { + case MBEDTLS_X25519_ECDH_THEIRS: + return mbedtls_ecp_point_write_binary( &key->grp, &key->Q, MBEDTLS_ECP_PF_COMPRESSED, &olen, ctx->peer_point, MBEDTLS_X25519_KEY_SIZE_BYTES ); + case MBEDTLS_X25519_ECDH_OURS: + return mbedtls_mpi_write_binary_le( &key->d, ctx->our_secret, MBEDTLS_X25519_KEY_SIZE_BYTES ); + default: + return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); + } +} + +int mbedtls_x25519_calc_secret( mbedtls_x25519_context *ctx, size_t *olen, + unsigned char *buf, size_t blen, + int( *f_rng )(void *, unsigned char *, size_t), + void *p_rng ) +{ + /* f_rng and p_rng are not used here because this implementation does not + need blinding since it has constant trace. */ + (( void )f_rng); + (( void )p_rng); + + *olen = MBEDTLS_X25519_KEY_SIZE_BYTES; + + if( blen < *olen ) + return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL ); + + Hacl_Curve25519_crypto_scalarmult( buf, ctx->our_secret, ctx->peer_point); + + /* Wipe the DH secret and don't let the peer chose a small subgroup point */ + mbedtls_platform_zeroize( ctx->our_secret, MBEDTLS_X25519_KEY_SIZE_BYTES ); + + if( memcmp( buf, ctx->our_secret, MBEDTLS_X25519_KEY_SIZE_BYTES) == 0 ) + return MBEDTLS_ERR_ECP_RANDOM_FAILED; + + return( 0 ); +} + +int mbedtls_x25519_make_public( mbedtls_x25519_context *ctx, size_t *olen, + unsigned char *buf, size_t blen, + int( *f_rng )(void *, unsigned char *, size_t), + void *p_rng ) +{ + int ret = 0; + unsigned char base[MBEDTLS_X25519_KEY_SIZE_BYTES] = { 0 }; + + if( ctx == NULL ) + return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); + + if( ( ret = f_rng( p_rng, ctx->our_secret, MBEDTLS_X25519_KEY_SIZE_BYTES ) ) != 0 ) + return ret; + + *olen = MBEDTLS_X25519_KEY_SIZE_BYTES + 1; + if( blen < *olen ) + return(MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL); + *buf++ = MBEDTLS_X25519_KEY_SIZE_BYTES; + + base[0] = 9; + Hacl_Curve25519_crypto_scalarmult( buf, ctx->our_secret, base ); + + base[0] = 0; + if( memcmp( buf, base, MBEDTLS_X25519_KEY_SIZE_BYTES ) == 0 ) + return MBEDTLS_ERR_ECP_RANDOM_FAILED; + + return( ret ); +} + +int mbedtls_x25519_read_public( mbedtls_x25519_context *ctx, + const unsigned char *buf, size_t blen ) +{ + if( blen < MBEDTLS_X25519_KEY_SIZE_BYTES + 1 ) + return(MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL); + if( (*buf++ != MBEDTLS_X25519_KEY_SIZE_BYTES) ) + return(MBEDTLS_ERR_ECP_BAD_INPUT_DATA); + memcpy( ctx->peer_point, buf, MBEDTLS_X25519_KEY_SIZE_BYTES ); + return( 0 ); +} + + +#endif /* MBEDTLS_ECDH_C && MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED */ diff --git a/Externals/mbedtls/CMakeLists.txt b/Externals/mbedtls/CMakeLists.txt index 3477fa40ae10..ab43a408999a 100644 --- a/Externals/mbedtls/CMakeLists.txt +++ b/Externals/mbedtls/CMakeLists.txt @@ -1,43 +1,224 @@ +# +# CMake build system design considerations: +# +# - Include directories: +# + Do not define include directories globally using the include_directories +# command but rather at the target level using the +# target_include_directories command. That way, it is easier to guarantee +# that targets are built using the proper list of include directories. +# + Use the PUBLIC and PRIVATE keywords to specifiy the scope of include +# directories. That way, a target linking to a library (using the +# target_link_librairies command) inherits from the library PUBLIC include +# directories and not from the PRIVATE ones. +# + Note: there is currently one remaining include_directories command in the +# CMake files. It is related to ZLIB support which is planned to be removed. +# When the support is removed, the associated include_directories command +# will be removed as well as this note. +# - MBEDTLS_TARGET_PREFIX: CMake targets are designed to be alterable by calling +# CMake in order to avoid target name clashes, via the use of +# MBEDTLS_TARGET_PREFIX. The value of this variable is prefixed to the +# mbedtls, mbedx509, mbedcrypto and apidoc targets. +# + cmake_minimum_required(VERSION 2.8.12) -project("mbed TLS" C) -set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} - CACHE STRING "Choose the type of build: None Debug Release Coverage ASan ASanDbg MemSan MemSanDbg Check CheckFull" - FORCE) +# https://cmake.org/cmake/help/latest/policy/CMP0011.html +# Setting this policy is required in CMake >= 3.18.0, otherwise a warning is generated. The OLD +# policy setting is deprecated, and will be removed in future versions. +cmake_policy(SET CMP0011 NEW) +# https://cmake.org/cmake/help/latest/policy/CMP0012.html +# Setting the CMP0012 policy to NEW is required for FindPython3 to work with CMake 3.18.2 +# (there is a bug in this particular version), otherwise, setting the CMP0012 policy is required +# for CMake versions >= 3.18.3 otherwise a deprecated warning is generated. The OLD policy setting +# is deprecated and will be removed in future versions. +cmake_policy(SET CMP0012 NEW) + +if(TEST_CPP) + project("mbed TLS" C CXX) +else() + project("mbed TLS" C) +endif() + +# Set the project root directory. +set(MBEDTLS_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + +option(USE_PKCS11_HELPER_LIBRARY "Build mbed TLS with the pkcs11-helper library." OFF) +option(ENABLE_ZLIB_SUPPORT "Build mbed TLS with zlib library." OFF) + +option(ENABLE_PROGRAMS "Build mbed TLS programs." OFF) + +option(UNSAFE_BUILD "Allow unsafe builds. These builds ARE NOT SECURE." OFF) +option(MBEDTLS_FATAL_WARNINGS "Compiler warnings treated as errors" ON) + +string(REGEX MATCH "Clang" CMAKE_COMPILER_IS_CLANG "${CMAKE_C_COMPILER_ID}") +string(REGEX MATCH "GNU" CMAKE_COMPILER_IS_GNU "${CMAKE_C_COMPILER_ID}") +string(REGEX MATCH "IAR" CMAKE_COMPILER_IS_IAR "${CMAKE_C_COMPILER_ID}") +string(REGEX MATCH "MSVC" CMAKE_COMPILER_IS_MSVC "${CMAKE_C_COMPILER_ID}") + +# the test suites currently have compile errors with MSVC +if(CMAKE_COMPILER_IS_MSVC) + option(ENABLE_TESTING "Build mbed TLS tests." OFF) +else() + option(ENABLE_TESTING "Build mbed TLS tests." OFF) +endif() + +# Warning string - created as a list for compatibility with CMake 2.8 +set(WARNING_BORDER "*******************************************************\n") +set(NULL_ENTROPY_WARN_L1 "**** WARNING! MBEDTLS_TEST_NULL_ENTROPY defined!\n") +set(NULL_ENTROPY_WARN_L2 "**** THIS BUILD HAS NO DEFINED ENTROPY SOURCES\n") +set(NULL_ENTROPY_WARN_L3 "**** AND IS *NOT* SUITABLE FOR PRODUCTION USE\n") + +set(NULL_ENTROPY_WARNING "${WARNING_BORDER}" + "${NULL_ENTROPY_WARN_L1}" + "${NULL_ENTROPY_WARN_L2}" + "${NULL_ENTROPY_WARN_L3}" + "${WARNING_BORDER}") + +set(CTR_DRBG_128_BIT_KEY_WARN_L1 "**** WARNING! MBEDTLS_CTR_DRBG_USE_128_BIT_KEY defined!\n") +set(CTR_DRBG_128_BIT_KEY_WARN_L2 "**** Using 128-bit keys for CTR_DRBG limits the security of generated\n") +set(CTR_DRBG_128_BIT_KEY_WARN_L3 "**** keys and operations that use random values generated to 128-bit security\n") + +set(CTR_DRBG_128_BIT_KEY_WARNING "${WARNING_BORDER}" + "${CTR_DRBG_128_BIT_KEY_WARN_L1}" + "${CTR_DRBG_128_BIT_KEY_WARN_L2}" + "${CTR_DRBG_128_BIT_KEY_WARN_L3}" + "${WARNING_BORDER}") + +# Python 3 is only needed here to check for configuration warnings. +if(NOT CMAKE_VERSION VERSION_LESS 3.15.0) + set(Python3_FIND_STRATEGY LOCATION) + find_package(Python3 COMPONENTS Interpreter) + if(Python3_Interpreter_FOUND) + set(MBEDTLS_PYTHON_EXECUTABLE ${Python3_EXECUTABLE}) + endif() +else() + find_package(PythonInterp 3) + if(PYTHONINTERP_FOUND) + set(MBEDTLS_PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE}) + endif() +endif() +if(MBEDTLS_PYTHON_EXECUTABLE) + + # If 128-bit keys are configured for CTR_DRBG, display an appropriate warning + execute_process(COMMAND ${MBEDTLS_PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/config.py -f ${CMAKE_CURRENT_SOURCE_DIR}/include/mbedtls/config.h get MBEDTLS_CTR_DRBG_USE_128_BIT_KEY + RESULT_VARIABLE result) + if(${result} EQUAL 0) + message(WARNING ${CTR_DRBG_128_BIT_KEY_WARNING}) + endif() + + # If NULL Entropy is configured, display an appropriate warning + execute_process(COMMAND ${MBEDTLS_PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/config.py -f ${CMAKE_CURRENT_SOURCE_DIR}/include/mbedtls/config.h get MBEDTLS_TEST_NULL_ENTROPY + RESULT_VARIABLE result) + if(${result} EQUAL 0) + message(WARNING ${NULL_ENTROPY_WARNING}) + + if(NOT UNSAFE_BUILD) + message(FATAL_ERROR "\ +\n\ +Warning! You have enabled MBEDTLS_TEST_NULL_ENTROPY. \ +This option is not safe for production use and negates all security \ +It is intended for development use only. \ +\n\ +To confirm you want to build with this option, re-run cmake with the \ +option: \n\ + cmake -DUNSAFE_BUILD=ON ") + + return() + endif() + endif() +endif() + +# If this is the root project add longer list of available CMAKE_BUILD_TYPE values +if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} + CACHE STRING "Choose the type of build: None Debug Release Coverage ASan ASanDbg MemSan MemSanDbg Check CheckFull" + FORCE) +endif() + +# Create a symbolic link from ${base_name} in the binary directory +# to the corresponding path in the source directory. +function(link_to_source base_name) + # Get OS dependent path to use in `execute_process` + if (CMAKE_HOST_WIN32) + #mklink is an internal command of cmd.exe it can only work with \ + string(REPLACE "/" "\\" link "${CMAKE_CURRENT_BINARY_DIR}/${base_name}") + string(REPLACE "/" "\\" target "${CMAKE_CURRENT_SOURCE_DIR}/${base_name}") + else() + set(link "${CMAKE_CURRENT_BINARY_DIR}/${base_name}") + set(target "${CMAKE_CURRENT_SOURCE_DIR}/${base_name}") + endif() + + if (NOT EXISTS ${link}) + if (CMAKE_HOST_UNIX) + set(command ln -s ${target} ${link}) + else() + if (IS_DIRECTORY ${target}) + set(command cmd.exe /c mklink /j ${link} ${target}) + else() + set(command cmd.exe /c mklink /h ${link} ${target}) + endif() + endif() + + execute_process(COMMAND ${command} + RESULT_VARIABLE result + ERROR_VARIABLE output) + + if (NOT ${result} EQUAL 0) + message(FATAL_ERROR "Could not create symbolic link for: ${target} --> ${output}") + endif() + endif() +endfunction(link_to_source) string(REGEX MATCH "Clang" CMAKE_COMPILER_IS_CLANG "${CMAKE_C_COMPILER_ID}") +include(CheckCCompilerFlag) + if(CMAKE_COMPILER_IS_GNU) # some warnings we want are not available with old GCC versions # note: starting with CMake 2.8 we could use CMAKE_C_COMPILER_VERSION execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -W -Wdeclaration-after-statement -Wwrite-strings") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wwrite-strings") + if (GCC_VERSION VERSION_GREATER 3.0 OR GCC_VERSION VERSION_EQUAL 3.0) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wformat=2 -Wno-format-nonliteral") + endif() + if (GCC_VERSION VERSION_GREATER 4.3 OR GCC_VERSION VERSION_EQUAL 4.3) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wvla") + endif() if (GCC_VERSION VERSION_GREATER 4.5 OR GCC_VERSION VERSION_EQUAL 4.5) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wlogical-op") endif() if (GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow") endif() + if (GCC_VERSION VERSION_GREATER 5.0) + CHECK_C_COMPILER_FLAG("-Wformat-signedness" C_COMPILER_SUPPORTS_WFORMAT_SIGNEDNESS) + if(C_COMPILER_SUPPORTS_WFORMAT_SIGNEDNESS) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wformat-signedness") + endif() + endif() + if (GCC_VERSION VERSION_GREATER 7.0 OR GCC_VERSION VERSION_EQUAL 7.0) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wformat-overflow=2 -Wformat-truncation") + endif() set(CMAKE_C_FLAGS_RELEASE "-O2") set(CMAKE_C_FLAGS_DEBUG "-O0 -g3") set(CMAKE_C_FLAGS_COVERAGE "-O0 -g3 --coverage") - set(CMAKE_C_FLAGS_ASAN "-Werror -fsanitize=address -fno-common -O3") - set(CMAKE_C_FLAGS_ASANDBG "-Werror -fsanitize=address -fno-common -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls ") - set(CMAKE_C_FLAGS_CHECK "-Werror -Os") + set(CMAKE_C_FLAGS_ASAN "-fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=all -O3") + set(CMAKE_C_FLAGS_ASANDBG "-fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=all -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls") + set(CMAKE_C_FLAGS_CHECK "-Os") set(CMAKE_C_FLAGS_CHECKFULL "${CMAKE_C_FLAGS_CHECK} -Wcast-qual") endif(CMAKE_COMPILER_IS_GNU) if(CMAKE_COMPILER_IS_CLANG) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -W -Wdeclaration-after-statement -Wwrite-strings -Wpointer-arith -Wimplicit-fallthrough -Wshadow") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wimplicit-fallthrough -Wshadow -Wvla -Wformat=2 -Wno-format-nonliteral") set(CMAKE_C_FLAGS_RELEASE "-O2") set(CMAKE_C_FLAGS_DEBUG "-O0 -g3") set(CMAKE_C_FLAGS_COVERAGE "-O0 -g3 --coverage") - set(CMAKE_C_FLAGS_ASAN "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=all -O3") - set(CMAKE_C_FLAGS_ASANDBG "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=all -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls ") - set(CMAKE_C_FLAGS_MEMSAN "-Werror -fsanitize=memory -O3") - set(CMAKE_C_FLAGS_MEMSANDBG "-Werror -fsanitize=memory -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2") - set(CMAKE_C_FLAGS_CHECK "-Werror -Os") + set(CMAKE_C_FLAGS_ASAN "-fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=all -O3") + set(CMAKE_C_FLAGS_ASANDBG "-fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=all -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls") + set(CMAKE_C_FLAGS_MEMSAN "-fsanitize=memory -O3") + set(CMAKE_C_FLAGS_MEMSANDBG "-fsanitize=memory -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2") + set(CMAKE_C_FLAGS_CHECK "-Os") endif(CMAKE_COMPILER_IS_CLANG) if(CMAKE_COMPILER_IS_IAR) @@ -45,11 +226,25 @@ if(CMAKE_COMPILER_IS_IAR) endif(CMAKE_COMPILER_IS_IAR) if(CMAKE_COMPILER_IS_MSVC) - # Strictest warnings, and treat as errors + # Strictest warnings set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W3") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX") endif(CMAKE_COMPILER_IS_MSVC) +if(MBEDTLS_FATAL_WARNINGS) + if(CMAKE_COMPILER_IS_MSVC) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX") + endif(CMAKE_COMPILER_IS_MSVC) + + if(CMAKE_COMPILER_IS_CLANG OR CMAKE_COMPILER_IS_GNU) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") + if(UNSAFE_BUILD) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=cpp") + set(CMAKE_C_FLAGS_ASAN "${CMAKE_C_FLAGS_ASAN} -Wno-error=cpp") + set(CMAKE_C_FLAGS_ASANDBG "${CMAKE_C_FLAGS_ASANDBG} -Wno-error=cpp") + endif(UNSAFE_BUILD) + endif(CMAKE_COMPILER_IS_CLANG OR CMAKE_COMPILER_IS_GNU) +endif(MBEDTLS_FATAL_WARNINGS) + if(CMAKE_BUILD_TYPE STREQUAL "Coverage") if(CMAKE_COMPILER_IS_GNU OR CMAKE_COMPILER_IS_CLANG) set(CMAKE_SHARED_LINKER_FLAGS "--coverage") @@ -61,6 +256,17 @@ else() set(LIB_INSTALL_DIR lib) endif() -include_directories(include/) +if(ENABLE_ZLIB_SUPPORT) + find_package(ZLIB) + + if(ZLIB_FOUND) + include_directories(${ZLIB_INCLUDE_DIR}) + endif(ZLIB_FOUND) +endif(ENABLE_ZLIB_SUPPORT) + +add_subdirectory(include) + +add_subdirectory(3rdparty) +list(APPEND libs ${thirdparty_lib}) add_subdirectory(library) diff --git a/Externals/mbedtls/LICENSE b/Externals/mbedtls/LICENSE index 546a8e631f5b..d64569567334 100644 --- a/Externals/mbedtls/LICENSE +++ b/Externals/mbedtls/LICENSE @@ -1,2 +1,202 @@ -Unless specifically indicated otherwise in a file, files are licensed -under the Apache 2.0 license, as can be found in: apache-2.0.txt + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/Externals/mbedtls/apache-2.0.txt b/Externals/mbedtls/apache-2.0.txt deleted file mode 100644 index d64569567334..000000000000 --- a/Externals/mbedtls/apache-2.0.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/Externals/mbedtls/include/CMakeLists.txt b/Externals/mbedtls/include/CMakeLists.txt index 1b581a54ddfa..62c0f620afb6 100644 --- a/Externals/mbedtls/include/CMakeLists.txt +++ b/Externals/mbedtls/include/CMakeLists.txt @@ -3,14 +3,20 @@ option(INSTALL_MBEDTLS_HEADERS "Install mbed TLS headers." ON) if(INSTALL_MBEDTLS_HEADERS) file(GLOB headers "mbedtls/*.h") + file(GLOB psa_headers "psa/*.h") install(FILES ${headers} DESTINATION include/mbedtls PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) + install(FILES ${psa_headers} + DESTINATION include/psa + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) + endif(INSTALL_MBEDTLS_HEADERS) # Make config.h available in an out-of-source build. ssl-opt.sh requires it. -if (NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) +if (ENABLE_TESTING AND NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) link_to_source(mbedtls) + link_to_source(psa) endif() diff --git a/Externals/mbedtls/include/mbedtls/aes.h b/Externals/mbedtls/include/mbedtls/aes.h index 94e7282d36d0..e280dbb1c660 100644 --- a/Externals/mbedtls/include/mbedtls/aes.h +++ b/Externals/mbedtls/include/mbedtls/aes.h @@ -20,7 +20,8 @@ * . */ -/* Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved. +/* + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -34,18 +35,17 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_AES_H #define MBEDTLS_AES_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif +#include "mbedtls/platform_util.h" #include #include @@ -55,17 +55,22 @@ #define MBEDTLS_AES_DECRYPT 0 /**< AES decryption. */ /* Error codes in range 0x0020-0x0022 */ -#define MBEDTLS_ERR_AES_INVALID_KEY_LENGTH -0x0020 /**< Invalid key length. */ -#define MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH -0x0022 /**< Invalid data input length. */ +/** Invalid key length. */ +#define MBEDTLS_ERR_AES_INVALID_KEY_LENGTH -0x0020 +/** Invalid data input length. */ +#define MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH -0x0022 /* Error codes in range 0x0021-0x0025 */ -#define MBEDTLS_ERR_AES_BAD_INPUT_DATA -0x0021 /**< Invalid input data. */ +/** Invalid input data. */ +#define MBEDTLS_ERR_AES_BAD_INPUT_DATA -0x0021 /* MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE is deprecated and should not be used. */ -#define MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE -0x0023 /**< Feature not available. For example, an unsupported AES key size. */ +/** Feature not available. For example, an unsupported AES key size. */ +#define MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE -0x0023 /* MBEDTLS_ERR_AES_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_AES_HW_ACCEL_FAILED -0x0025 /**< AES hardware accelerator failed. */ +/** AES hardware accelerator failed. */ +#define MBEDTLS_ERR_AES_HW_ACCEL_FAILED -0x0025 #if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ !defined(inline) && !defined(__cplusplus) @@ -170,6 +175,7 @@ void mbedtls_aes_xts_free( mbedtls_aes_xts_context *ctx ); * \return \c 0 on success. * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_aes_setkey_enc( mbedtls_aes_context *ctx, const unsigned char *key, unsigned int keybits ); @@ -188,6 +194,7 @@ int mbedtls_aes_setkey_enc( mbedtls_aes_context *ctx, const unsigned char *key, * \return \c 0 on success. * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_aes_setkey_dec( mbedtls_aes_context *ctx, const unsigned char *key, unsigned int keybits ); @@ -208,6 +215,7 @@ int mbedtls_aes_setkey_dec( mbedtls_aes_context *ctx, const unsigned char *key, * \return \c 0 on success. * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_aes_xts_setkey_enc( mbedtls_aes_xts_context *ctx, const unsigned char *key, unsigned int keybits ); @@ -228,6 +236,7 @@ int mbedtls_aes_xts_setkey_enc( mbedtls_aes_xts_context *ctx, * \return \c 0 on success. * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_aes_xts_setkey_dec( mbedtls_aes_xts_context *ctx, const unsigned char *key, unsigned int keybits ); @@ -256,6 +265,7 @@ int mbedtls_aes_xts_setkey_dec( mbedtls_aes_xts_context *ctx, * \return \c 0 on success. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_aes_crypt_ecb( mbedtls_aes_context *ctx, int mode, const unsigned char input[16], @@ -303,6 +313,7 @@ int mbedtls_aes_crypt_ecb( mbedtls_aes_context *ctx, * \return #MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH * on failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, int mode, size_t length, @@ -347,6 +358,7 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, * smaller than an AES block in size (16 Bytes) or if \p * length is larger than 2^20 blocks (16 MiB). */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx, int mode, size_t length, @@ -395,6 +407,7 @@ int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx, * * \return \c 0 on success. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_aes_crypt_cfb128( mbedtls_aes_context *ctx, int mode, size_t length, @@ -439,6 +452,7 @@ int mbedtls_aes_crypt_cfb128( mbedtls_aes_context *ctx, * * \return \c 0 on success. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, int mode, size_t length, @@ -493,6 +507,7 @@ int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, * * \return \c 0 on success. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_aes_crypt_ofb( mbedtls_aes_context *ctx, size_t length, size_t *iv_off, @@ -507,10 +522,6 @@ int mbedtls_aes_crypt_ofb( mbedtls_aes_context *ctx, * \brief This function performs an AES-CTR encryption or decryption * operation. * - * This function performs the operation defined in the \p mode - * parameter (encrypt/decrypt), on the input data buffer - * defined in the \p input parameter. - * * Due to the nature of CTR, you must use the same key schedule * for both encryption and decryption operations. Therefore, you * must use the context initialized with mbedtls_aes_setkey_enc() @@ -579,6 +590,7 @@ int mbedtls_aes_crypt_ofb( mbedtls_aes_context *ctx, * * \return \c 0 on success. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_aes_crypt_ctr( mbedtls_aes_context *ctx, size_t length, size_t *nc_off, @@ -599,6 +611,7 @@ int mbedtls_aes_crypt_ctr( mbedtls_aes_context *ctx, * * \return \c 0 on success. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_internal_aes_encrypt( mbedtls_aes_context *ctx, const unsigned char input[16], unsigned char output[16] ); @@ -614,6 +627,7 @@ int mbedtls_internal_aes_encrypt( mbedtls_aes_context *ctx, * * \return \c 0 on success. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_internal_aes_decrypt( mbedtls_aes_context *ctx, const unsigned char input[16], unsigned char output[16] ); @@ -663,6 +677,7 @@ MBEDTLS_DEPRECATED void mbedtls_aes_decrypt( mbedtls_aes_context *ctx, * \return \c 0 on success. * \return \c 1 on failure. */ +MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_aes_self_test( int verbose ); #endif /* MBEDTLS_SELF_TEST */ diff --git a/Externals/mbedtls/include/mbedtls/aesni.h b/Externals/mbedtls/include/mbedtls/aesni.h index a4ca012f8a10..c1d22f59af3e 100644 --- a/Externals/mbedtls/include/mbedtls/aesni.h +++ b/Externals/mbedtls/include/mbedtls/aesni.h @@ -7,7 +7,7 @@ * functions; you must not call them directly. */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -21,19 +21,17 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_AESNI_H #define MBEDTLS_AESNI_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "aes.h" +#include "mbedtls/aes.h" #define MBEDTLS_AESNI_AES 0x02000000u #define MBEDTLS_AESNI_CLMUL 0x00000002u diff --git a/Externals/mbedtls/include/mbedtls/arc4.h b/Externals/mbedtls/include/mbedtls/arc4.h index fb044d5b7fd3..f4b0f9f35084 100644 --- a/Externals/mbedtls/include/mbedtls/arc4.h +++ b/Externals/mbedtls/include/mbedtls/arc4.h @@ -7,7 +7,7 @@ * security risk. We recommend considering stronger ciphers instead. */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -22,14 +22,12 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * This file is part of mbed TLS (https://tls.mbed.org) - * */ #ifndef MBEDTLS_ARC4_H #define MBEDTLS_ARC4_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -37,7 +35,8 @@ #include /* MBEDTLS_ERR_ARC4_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_ARC4_HW_ACCEL_FAILED -0x0019 /**< ARC4 hardware accelerator failed. */ +/** ARC4 hardware accelerator failed. */ +#define MBEDTLS_ERR_ARC4_HW_ACCEL_FAILED -0x0019 #ifdef __cplusplus extern "C" { diff --git a/Externals/mbedtls/include/mbedtls/aria.h b/Externals/mbedtls/include/mbedtls/aria.h index 1e8956ed13c5..226e2dbf3c82 100644 --- a/Externals/mbedtls/include/mbedtls/aria.h +++ b/Externals/mbedtls/include/mbedtls/aria.h @@ -9,7 +9,8 @@ * Korean, but see http://210.104.33.10/ARIA/index-e.html in English) * and also described by the IETF in RFC 5794. */ -/* Copyright (C) 2006-2018, ARM Limited, All Rights Reserved +/* + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -23,15 +24,13 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_ARIA_H #define MBEDTLS_ARIA_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -39,7 +38,7 @@ #include #include -#include "platform_util.h" +#include "mbedtls/platform_util.h" #define MBEDTLS_ARIA_ENCRYPT 1 /**< ARIA encryption. */ #define MBEDTLS_ARIA_DECRYPT 0 /**< ARIA decryption. */ @@ -51,25 +50,29 @@ #if !defined(MBEDTLS_DEPRECATED_REMOVED) #define MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( -0x005C ) #endif /* !MBEDTLS_DEPRECATED_REMOVED */ -#define MBEDTLS_ERR_ARIA_BAD_INPUT_DATA -0x005C /**< Bad input data. */ +/** Bad input data. */ +#define MBEDTLS_ERR_ARIA_BAD_INPUT_DATA -0x005C -#define MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH -0x005E /**< Invalid data input length. */ +/** Invalid data input length. */ +#define MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH -0x005E /* MBEDTLS_ERR_ARIA_FEATURE_UNAVAILABLE is deprecated and should not be used. */ -#define MBEDTLS_ERR_ARIA_FEATURE_UNAVAILABLE -0x005A /**< Feature not available. For example, an unsupported ARIA key size. */ +/** Feature not available. For example, an unsupported ARIA key size. */ +#define MBEDTLS_ERR_ARIA_FEATURE_UNAVAILABLE -0x005A /* MBEDTLS_ERR_ARIA_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_ARIA_HW_ACCEL_FAILED -0x0058 /**< ARIA hardware accelerator failed. */ - -#if !defined(MBEDTLS_ARIA_ALT) -// Regular implementation -// +/** ARIA hardware accelerator failed. */ +#define MBEDTLS_ERR_ARIA_HW_ACCEL_FAILED -0x0058 #ifdef __cplusplus extern "C" { #endif +#if !defined(MBEDTLS_ARIA_ALT) +// Regular implementation +// + /** * \brief The ARIA context-type definition. */ diff --git a/Externals/mbedtls/include/mbedtls/asn1.h b/Externals/mbedtls/include/mbedtls/asn1.h index 96c1c9a8ab21..10f7905b7e60 100644 --- a/Externals/mbedtls/include/mbedtls/asn1.h +++ b/Externals/mbedtls/include/mbedtls/asn1.h @@ -4,7 +4,7 @@ * \brief Generic ASN.1 parsing */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,14 +18,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_ASN1_H #define MBEDTLS_ASN1_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -33,7 +31,7 @@ #include #if defined(MBEDTLS_BIGNUM_C) -#include "bignum.h" +#include "mbedtls/bignum.h" #endif /** @@ -48,13 +46,20 @@ * ASN1 is a standard to specify data structures. * \{ */ -#define MBEDTLS_ERR_ASN1_OUT_OF_DATA -0x0060 /**< Out of data when parsing an ASN1 data structure. */ -#define MBEDTLS_ERR_ASN1_UNEXPECTED_TAG -0x0062 /**< ASN1 tag was of an unexpected value. */ -#define MBEDTLS_ERR_ASN1_INVALID_LENGTH -0x0064 /**< Error when trying to determine the length or invalid length. */ -#define MBEDTLS_ERR_ASN1_LENGTH_MISMATCH -0x0066 /**< Actual length differs from expected length. */ -#define MBEDTLS_ERR_ASN1_INVALID_DATA -0x0068 /**< Data is invalid. (not used) */ -#define MBEDTLS_ERR_ASN1_ALLOC_FAILED -0x006A /**< Memory allocation failed */ -#define MBEDTLS_ERR_ASN1_BUF_TOO_SMALL -0x006C /**< Buffer too small when writing ASN.1 data structure. */ +/** Out of data when parsing an ASN1 data structure. */ +#define MBEDTLS_ERR_ASN1_OUT_OF_DATA -0x0060 +/** ASN1 tag was of an unexpected value. */ +#define MBEDTLS_ERR_ASN1_UNEXPECTED_TAG -0x0062 +/** Error when trying to determine the length or invalid length. */ +#define MBEDTLS_ERR_ASN1_INVALID_LENGTH -0x0064 +/** Actual length differs from expected length. */ +#define MBEDTLS_ERR_ASN1_LENGTH_MISMATCH -0x0066 +/** Data is invalid. */ +#define MBEDTLS_ERR_ASN1_INVALID_DATA -0x0068 +/** Memory allocation failed */ +#define MBEDTLS_ERR_ASN1_ALLOC_FAILED -0x006A +/** Buffer too small when writing ASN.1 data structure. */ +#define MBEDTLS_ERR_ASN1_BUF_TOO_SMALL -0x006C /* \} name */ @@ -75,6 +80,7 @@ #define MBEDTLS_ASN1_OCTET_STRING 0x04 #define MBEDTLS_ASN1_NULL 0x05 #define MBEDTLS_ASN1_OID 0x06 +#define MBEDTLS_ASN1_ENUMERATED 0x0A #define MBEDTLS_ASN1_UTF8_STRING 0x0C #define MBEDTLS_ASN1_SEQUENCE 0x10 #define MBEDTLS_ASN1_SET 0x11 @@ -89,6 +95,18 @@ #define MBEDTLS_ASN1_CONSTRUCTED 0x20 #define MBEDTLS_ASN1_CONTEXT_SPECIFIC 0x80 +/* Slightly smaller way to check if tag is a string tag + * compared to canonical implementation. */ +#define MBEDTLS_ASN1_IS_STRING_TAG( tag ) \ + ( ( tag ) < 32u && ( \ + ( ( 1u << ( tag ) ) & ( ( 1u << MBEDTLS_ASN1_BMP_STRING ) | \ + ( 1u << MBEDTLS_ASN1_UTF8_STRING ) | \ + ( 1u << MBEDTLS_ASN1_T61_STRING ) | \ + ( 1u << MBEDTLS_ASN1_IA5_STRING ) | \ + ( 1u << MBEDTLS_ASN1_UNIVERSAL_STRING ) | \ + ( 1u << MBEDTLS_ASN1_PRINTABLE_STRING ) | \ + ( 1u << MBEDTLS_ASN1_BIT_STRING ) ) ) != 0 ) ) + /* * Bit masks for each of the components of an ASN.1 tag as specified in * ITU X.690 (08/2015), section 8.1 "General rules for encoding", @@ -119,6 +137,10 @@ ( ( MBEDTLS_OID_SIZE(oid_str) != (oid_buf)->len ) || \ memcmp( (oid_str), (oid_buf)->p, (oid_buf)->len) != 0 ) +#define MBEDTLS_OID_CMP_RAW(oid_str, oid_buf, oid_buf_len) \ + ( ( MBEDTLS_OID_SIZE(oid_str) != (oid_buf_len) ) || \ + memcmp( (oid_str), (oid_buf), (oid_buf_len) ) != 0 ) + #ifdef __cplusplus extern "C" { #endif @@ -176,119 +198,342 @@ mbedtls_asn1_named_data; * \brief Get the length of an ASN.1 element. * Updates the pointer to immediately behind the length. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param len The variable that will receive the value + * \param p On entry, \c *p points to the first byte of the length, + * i.e. immediately after the tag. + * On successful completion, \c *p points to the first byte + * after the length, i.e. the first byte of the content. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param len On successful completion, \c *len contains the length + * read from the ASN.1 input. * - * \return 0 if successful, MBEDTLS_ERR_ASN1_OUT_OF_DATA on reaching - * end of data, MBEDTLS_ERR_ASN1_INVALID_LENGTH if length is - * unparseable. + * \return 0 if successful. + * \return #MBEDTLS_ERR_ASN1_OUT_OF_DATA if the ASN.1 element + * would end beyond \p end. + * \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the length is unparseable. */ int mbedtls_asn1_get_len( unsigned char **p, - const unsigned char *end, - size_t *len ); + const unsigned char *end, + size_t *len ); /** - * \brief Get the tag and length of the tag. Check for the requested tag. + * \brief Get the tag and length of the element. + * Check for the requested tag. * Updates the pointer to immediately behind the tag and length. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param len The variable that will receive the length - * \param tag The expected tag + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * after the length, i.e. the first byte of the content. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param len On successful completion, \c *len contains the length + * read from the ASN.1 input. + * \param tag The expected tag. * - * \return 0 if successful, MBEDTLS_ERR_ASN1_UNEXPECTED_TAG if tag did - * not match requested tag, or another specific ASN.1 error code. + * \return 0 if successful. + * \return #MBEDTLS_ERR_ASN1_UNEXPECTED_TAG if the data does not start + * with the requested tag. + * \return #MBEDTLS_ERR_ASN1_OUT_OF_DATA if the ASN.1 element + * would end beyond \p end. + * \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the length is unparseable. */ int mbedtls_asn1_get_tag( unsigned char **p, - const unsigned char *end, - size_t *len, int tag ); + const unsigned char *end, + size_t *len, int tag ); /** * \brief Retrieve a boolean ASN.1 tag and its value. * Updates the pointer to immediately behind the full tag. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param val The variable that will receive the value + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the ASN.1 element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param val On success, the parsed value (\c 0 or \c 1). * - * \return 0 if successful or a specific ASN.1 error code. + * \return 0 if successful. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 BOOLEAN. */ int mbedtls_asn1_get_bool( unsigned char **p, - const unsigned char *end, - int *val ); + const unsigned char *end, + int *val ); /** * \brief Retrieve an integer ASN.1 tag and its value. * Updates the pointer to immediately behind the full tag. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param val The variable that will receive the value + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the ASN.1 element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param val On success, the parsed value. * - * \return 0 if successful or a specific ASN.1 error code. + * \return 0 if successful. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 INTEGER. + * \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the parsed value does + * not fit in an \c int. */ int mbedtls_asn1_get_int( unsigned char **p, - const unsigned char *end, - int *val ); + const unsigned char *end, + int *val ); + +/** + * \brief Retrieve an enumerated ASN.1 tag and its value. + * Updates the pointer to immediately behind the full tag. + * + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the ASN.1 element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param val On success, the parsed value. + * + * \return 0 if successful. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 ENUMERATED. + * \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the parsed value does + * not fit in an \c int. + */ +int mbedtls_asn1_get_enum( unsigned char **p, + const unsigned char *end, + int *val ); /** * \brief Retrieve a bitstring ASN.1 tag and its value. * Updates the pointer to immediately behind the full tag. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param bs The variable that will receive the value + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p is equal to \p end. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param bs On success, ::mbedtls_asn1_bitstring information about + * the parsed value. * - * \return 0 if successful or a specific ASN.1 error code. + * \return 0 if successful. + * \return #MBEDTLS_ERR_ASN1_LENGTH_MISMATCH if the input contains + * extra data after a valid BIT STRING. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 BIT STRING. */ int mbedtls_asn1_get_bitstring( unsigned char **p, const unsigned char *end, - mbedtls_asn1_bitstring *bs); + mbedtls_asn1_bitstring *bs ); /** * \brief Retrieve a bitstring ASN.1 tag without unused bits and its * value. * Updates the pointer to the beginning of the bit/octet string. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param len Length of the actual bit/octect string in bytes + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * of the content of the BIT STRING. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param len On success, \c *len is the length of the content in bytes. * - * \return 0 if successful or a specific ASN.1 error code. + * \return 0 if successful. + * \return #MBEDTLS_ERR_ASN1_INVALID_DATA if the input starts with + * a valid BIT STRING with a nonzero number of unused bits. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 BIT STRING. */ -int mbedtls_asn1_get_bitstring_null( unsigned char **p, const unsigned char *end, - size_t *len ); +int mbedtls_asn1_get_bitstring_null( unsigned char **p, + const unsigned char *end, + size_t *len ); /** - * \brief Parses and splits an ASN.1 "SEQUENCE OF " - * Updated the pointer to immediately behind the full sequence tag. + * \brief Parses and splits an ASN.1 "SEQUENCE OF ". + * Updates the pointer to immediately behind the full sequence tag. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param cur First variable in the chain to fill - * \param tag Type of sequence + * This function allocates memory for the sequence elements. You can free + * the allocated memory with mbedtls_asn1_sequence_free(). * - * \return 0 if successful or a specific ASN.1 error code. + * \note On error, this function may return a partial list in \p cur. + * You must set `cur->next = NULL` before calling this function! + * Otherwise it is impossible to distinguish a previously non-null + * pointer from a pointer to an object allocated by this function. + * + * \note If the sequence is empty, this function does not modify + * \c *cur. If the sequence is valid and non-empty, this + * function sets `cur->buf.tag` to \p tag. This allows + * callers to distinguish between an empty sequence and + * a one-element sequence. + * + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p is equal to \p end. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param cur A ::mbedtls_asn1_sequence which this function fills. + * When this function returns, \c *cur is the head of a linked + * list. Each node in this list is allocated with + * mbedtls_calloc() apart from \p cur itself, and should + * therefore be freed with mbedtls_free(). + * The list describes the content of the sequence. + * The head of the list (i.e. \c *cur itself) describes the + * first element, `*cur->next` describes the second element, etc. + * For each element, `buf.tag == tag`, `buf.len` is the length + * of the content of the content of the element, and `buf.p` + * points to the first byte of the content (i.e. immediately + * past the length of the element). + * Note that list elements may be allocated even on error. + * \param tag Each element of the sequence must have this tag. + * + * \return 0 if successful. + * \return #MBEDTLS_ERR_ASN1_LENGTH_MISMATCH if the input contains + * extra data after a valid SEQUENCE OF \p tag. + * \return #MBEDTLS_ERR_ASN1_UNEXPECTED_TAG if the input starts with + * an ASN.1 SEQUENCE in which an element has a tag that + * is different from \p tag. + * \return #MBEDTLS_ERR_ASN1_ALLOC_FAILED if a memory allocation failed. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 SEQUENCE. */ int mbedtls_asn1_get_sequence_of( unsigned char **p, - const unsigned char *end, - mbedtls_asn1_sequence *cur, - int tag); + const unsigned char *end, + mbedtls_asn1_sequence *cur, + int tag ); +/** + * \brief Free a heap-allocated linked list presentation of + * an ASN.1 sequence, including the first element. + * + * There are two common ways to manage the memory used for the representation + * of a parsed ASN.1 sequence: + * - Allocate a head node `mbedtls_asn1_sequence *head` with mbedtls_calloc(). + * Pass this node as the `cur` argument to mbedtls_asn1_get_sequence_of(). + * When you have finished processing the sequence, + * call mbedtls_asn1_sequence_free() on `head`. + * - Allocate a head node `mbedtls_asn1_sequence *head` in any manner, + * for example on the stack. Make sure that `head->next == NULL`. + * Pass `head` as the `cur` argument to mbedtls_asn1_get_sequence_of(). + * When you have finished processing the sequence, + * call mbedtls_asn1_sequence_free() on `head->cur`, + * then free `head` itself in the appropriate manner. + * + * \param seq The address of the first sequence component. This may + * be \c NULL, in which case this functions returns + * immediately. + */ +void mbedtls_asn1_sequence_free( mbedtls_asn1_sequence *seq ); + +/** + * \brief Traverse an ASN.1 SEQUENCE container and + * call a callback for each entry. + * + * This function checks that the input is a SEQUENCE of elements that + * each have a "must" tag, and calls a callback function on the elements + * that have a "may" tag. + * + * For example, to validate that the input is a SEQUENCE of `tag1` and call + * `cb` on each element, use + * ``` + * mbedtls_asn1_traverse_sequence_of(&p, end, 0xff, tag1, 0, 0, cb, ctx); + * ``` + * + * To validate that the input is a SEQUENCE of ANY and call `cb` on + * each element, use + * ``` + * mbedtls_asn1_traverse_sequence_of(&p, end, 0, 0, 0, 0, cb, ctx); + * ``` + * + * To validate that the input is a SEQUENCE of CHOICE {NULL, OCTET STRING} + * and call `cb` on each element that is an OCTET STRING, use + * ``` + * mbedtls_asn1_traverse_sequence_of(&p, end, 0xfe, 0x04, 0xff, 0x04, cb, ctx); + * ``` + * + * The callback is called on the elements with a "may" tag from left to + * right. If the input is not a valid SEQUENCE of elements with a "must" tag, + * the callback is called on the elements up to the leftmost point where + * the input is invalid. + * + * \warning This function is still experimental and may change + * at any time. + * + * \param p The address of the pointer to the beginning of + * the ASN.1 SEQUENCE header. This is updated to + * point to the end of the ASN.1 SEQUENCE container + * on a successful invocation. + * \param end The end of the ASN.1 SEQUENCE container. + * \param tag_must_mask A mask to be applied to the ASN.1 tags found within + * the SEQUENCE before comparing to \p tag_must_value. + * \param tag_must_val The required value of each ASN.1 tag found in the + * SEQUENCE, after masking with \p tag_must_mask. + * Mismatching tags lead to an error. + * For example, a value of \c 0 for both \p tag_must_mask + * and \p tag_must_val means that every tag is allowed, + * while a value of \c 0xFF for \p tag_must_mask means + * that \p tag_must_val is the only allowed tag. + * \param tag_may_mask A mask to be applied to the ASN.1 tags found within + * the SEQUENCE before comparing to \p tag_may_value. + * \param tag_may_val The desired value of each ASN.1 tag found in the + * SEQUENCE, after masking with \p tag_may_mask. + * Mismatching tags will be silently ignored. + * For example, a value of \c 0 for \p tag_may_mask and + * \p tag_may_val means that any tag will be considered, + * while a value of \c 0xFF for \p tag_may_mask means + * that all tags with value different from \p tag_may_val + * will be ignored. + * \param cb The callback to trigger for each component + * in the ASN.1 SEQUENCE that matches \p tag_may_val. + * The callback function is called with the following + * parameters: + * - \p ctx. + * - The tag of the current element. + * - A pointer to the start of the current element's + * content inside the input. + * - The length of the content of the current element. + * If the callback returns a non-zero value, + * the function stops immediately, + * forwarding the callback's return value. + * \param ctx The context to be passed to the callback \p cb. + * + * \return \c 0 if successful the entire ASN.1 SEQUENCE + * was traversed without parsing or callback errors. + * \return #MBEDTLS_ERR_ASN1_LENGTH_MISMATCH if the input + * contains extra data after a valid SEQUENCE + * of elements with an accepted tag. + * \return #MBEDTLS_ERR_ASN1_UNEXPECTED_TAG if the input starts + * with an ASN.1 SEQUENCE in which an element has a tag + * that is not accepted. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 SEQUENCE. + * \return A non-zero error code forwarded from the callback + * \p cb in case the latter returns a non-zero value. + */ +int mbedtls_asn1_traverse_sequence_of( + unsigned char **p, + const unsigned char *end, + unsigned char tag_must_mask, unsigned char tag_must_val, + unsigned char tag_may_mask, unsigned char tag_may_val, + int (*cb)( void *ctx, int tag, + unsigned char* start, size_t len ), + void *ctx ); #if defined(MBEDTLS_BIGNUM_C) /** - * \brief Retrieve a MPI value from an integer ASN.1 tag. + * \brief Retrieve an integer ASN.1 tag and its value. * Updates the pointer to immediately behind the full tag. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param X The MPI that will receive the value + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the ASN.1 element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param X On success, the parsed value. * - * \return 0 if successful or a specific ASN.1 or MPI error code. + * \return 0 if successful. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 INTEGER. + * \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the parsed value does + * not fit in an \c int. + * \return An MPI error code if the parsed value is too large. */ int mbedtls_asn1_get_mpi( unsigned char **p, - const unsigned char *end, - mbedtls_mpi *X ); + const unsigned char *end, + mbedtls_mpi *X ); #endif /* MBEDTLS_BIGNUM_C */ /** @@ -296,10 +541,14 @@ int mbedtls_asn1_get_mpi( unsigned char **p, * Updates the pointer to immediately behind the full * AlgorithmIdentifier. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param alg The buffer to receive the OID - * \param params The buffer to receive the params (if any) + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the AlgorithmIdentifier element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param alg The buffer to receive the OID. + * \param params The buffer to receive the parameters. + * This is zeroized if there are no parameters. * * \return 0 if successful or a specific ASN.1 or MPI error code. */ @@ -313,9 +562,12 @@ int mbedtls_asn1_get_alg( unsigned char **p, * Updates the pointer to immediately behind the full * AlgorithmIdentifier. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param alg The buffer to receive the OID + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the AlgorithmIdentifier element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param alg The buffer to receive the OID. * * \return 0 if successful or a specific ASN.1 or MPI error code. */ @@ -339,15 +591,19 @@ mbedtls_asn1_named_data *mbedtls_asn1_find_named_data( mbedtls_asn1_named_data * /** * \brief Free a mbedtls_asn1_named_data entry * - * \param entry The named data entry to free + * \param entry The named data entry to free. + * This function calls mbedtls_free() on + * `entry->oid.p` and `entry->val.p`. */ void mbedtls_asn1_free_named_data( mbedtls_asn1_named_data *entry ); /** - * \brief Free all entries in a mbedtls_asn1_named_data list - * Head will be set to NULL + * \brief Free all entries in a mbedtls_asn1_named_data list. * - * \param head Pointer to the head of the list of named data entries to free + * \param head Pointer to the head of the list of named data entries to free. + * This function calls mbedtls_asn1_free_named_data() and + * mbedtls_free() on each list element and + * sets \c *head to \c NULL. */ void mbedtls_asn1_free_named_data_list( mbedtls_asn1_named_data **head ); diff --git a/Externals/mbedtls/include/mbedtls/asn1write.h b/Externals/mbedtls/include/mbedtls/asn1write.h index 360540a0027e..44afae0e5604 100644 --- a/Externals/mbedtls/include/mbedtls/asn1write.h +++ b/Externals/mbedtls/include/mbedtls/asn1write.h @@ -4,7 +4,7 @@ * \brief ASN.1 buffer writing functionality */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,26 +18,25 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_ASN1_WRITE_H #define MBEDTLS_ASN1_WRITE_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "asn1.h" +#include "mbedtls/asn1.h" #define MBEDTLS_ASN1_CHK_ADD(g, f) \ - do { \ - if( ( ret = f ) < 0 ) \ + do \ + { \ + if( ( ret = (f) ) < 0 ) \ return( ret ); \ else \ - g += ret; \ + (g) += ret; \ } while( 0 ) #ifdef __cplusplus @@ -99,6 +98,7 @@ int mbedtls_asn1_write_raw_buffer( unsigned char **p, unsigned char *start, * \param p The reference to the current position pointer. * \param start The start of the buffer, for bounds-checking. * \param X The MPI to write. + * It must be non-negative. * * \return The number of bytes written to \p p on success. * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. @@ -183,12 +183,28 @@ int mbedtls_asn1_write_bool( unsigned char **p, unsigned char *start, * \param p The reference to the current position pointer. * \param start The start of the buffer, for bounds-checking. * \param val The integer value to write. + * It must be non-negative. * * \return The number of bytes written to \p p on success. * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. */ int mbedtls_asn1_write_int( unsigned char **p, unsigned char *start, int val ); +/** + * \brief Write an enum tag (#MBEDTLS_ASN1_ENUMERATED) and value + * in ASN.1 format. + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param val The integer value to write. + * + * \return The number of bytes written to \p p on success. + * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. + */ +int mbedtls_asn1_write_enum( unsigned char **p, unsigned char *start, int val ); + /** * \brief Write a string in ASN.1 format using a specific * string encoding tag. @@ -231,7 +247,7 @@ int mbedtls_asn1_write_printable_string( unsigned char **p, /** * \brief Write a UTF8 string in ASN.1 format using the UTF8String - * string encoding tag (#MBEDTLS_ASN1_PRINTABLE_STRING). + * string encoding tag (#MBEDTLS_ASN1_UTF8_STRING). * * \note This function works backwards in data buffer. * @@ -282,6 +298,28 @@ int mbedtls_asn1_write_ia5_string( unsigned char **p, unsigned char *start, int mbedtls_asn1_write_bitstring( unsigned char **p, unsigned char *start, const unsigned char *buf, size_t bits ); +/** + * \brief This function writes a named bitstring tag + * (#MBEDTLS_ASN1_BIT_STRING) and value in ASN.1 format. + * + * As stated in RFC 5280 Appendix B, trailing zeroes are + * omitted when encoding named bitstrings in DER. + * + * \note This function works backwards within the data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer which is used for bounds-checking. + * \param buf The bitstring to write. + * \param bits The total number of bits in the bitstring. + * + * \return The number of bytes written to \p p on success. + * \return A negative error code on failure. + */ +int mbedtls_asn1_write_named_bitstring( unsigned char **p, + unsigned char *start, + const unsigned char *buf, + size_t bits ); + /** * \brief Write an octet string tag (#MBEDTLS_ASN1_OCTET_STRING) * and value in ASN.1 format. @@ -309,9 +347,13 @@ int mbedtls_asn1_write_octet_string( unsigned char **p, unsigned char *start, * through (will be updated in case of a new entry). * \param oid The OID to look for. * \param oid_len The size of the OID. - * \param val The data to store (can be \c NULL if you want to fill - * it by hand). + * \param val The associated data to store. If this is \c NULL, + * no data is copied to the new or existing buffer. * \param val_len The minimum length of the data buffer needed. + * If this is 0, do not allocate a buffer for the associated + * data. + * If the OID was already present, enlarge, shrink or free + * the existing buffer to fit \p val_len. * * \return A pointer to the new / existing entry on success. * \return \c NULL if if there was a memory allocation error. diff --git a/Externals/mbedtls/include/mbedtls/base64.h b/Externals/mbedtls/include/mbedtls/base64.h index 0d024164c565..cf4149e731dc 100644 --- a/Externals/mbedtls/include/mbedtls/base64.h +++ b/Externals/mbedtls/include/mbedtls/base64.h @@ -4,7 +4,7 @@ * \brief RFC 1521 base64 encoding/decoding */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,22 +18,22 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_BASE64_H #define MBEDTLS_BASE64_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif #include -#define MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL -0x002A /**< Output buffer too small. */ -#define MBEDTLS_ERR_BASE64_INVALID_CHARACTER -0x002C /**< Invalid character in input. */ +/** Output buffer too small. */ +#define MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL -0x002A +/** Invalid character in input. */ +#define MBEDTLS_ERR_BASE64_INVALID_CHARACTER -0x002C #ifdef __cplusplus extern "C" { diff --git a/Externals/mbedtls/include/mbedtls/bignum.h b/Externals/mbedtls/include/mbedtls/bignum.h index a54c18e37506..9d2cff3275a6 100644 --- a/Externals/mbedtls/include/mbedtls/bignum.h +++ b/Externals/mbedtls/include/mbedtls/bignum.h @@ -4,7 +4,7 @@ * \brief Multi-precision integer library */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,14 +18,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_BIGNUM_H #define MBEDTLS_BIGNUM_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -37,16 +35,29 @@ #include #endif -#define MBEDTLS_ERR_MPI_FILE_IO_ERROR -0x0002 /**< An error occurred while reading from or writing to a file. */ -#define MBEDTLS_ERR_MPI_BAD_INPUT_DATA -0x0004 /**< Bad input parameters to function. */ -#define MBEDTLS_ERR_MPI_INVALID_CHARACTER -0x0006 /**< There is an invalid character in the digit string. */ -#define MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL -0x0008 /**< The buffer is too small to write to. */ -#define MBEDTLS_ERR_MPI_NEGATIVE_VALUE -0x000A /**< The input arguments are negative or result in illegal output. */ -#define MBEDTLS_ERR_MPI_DIVISION_BY_ZERO -0x000C /**< The input argument for division is zero, which is not allowed. */ -#define MBEDTLS_ERR_MPI_NOT_ACCEPTABLE -0x000E /**< The input arguments are not acceptable. */ -#define MBEDTLS_ERR_MPI_ALLOC_FAILED -0x0010 /**< Memory allocation failed. */ +/** An error occurred while reading from or writing to a file. */ +#define MBEDTLS_ERR_MPI_FILE_IO_ERROR -0x0002 +/** Bad input parameters to function. */ +#define MBEDTLS_ERR_MPI_BAD_INPUT_DATA -0x0004 +/** There is an invalid character in the digit string. */ +#define MBEDTLS_ERR_MPI_INVALID_CHARACTER -0x0006 +/** The buffer is too small to write to. */ +#define MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL -0x0008 +/** The input arguments are negative or result in illegal output. */ +#define MBEDTLS_ERR_MPI_NEGATIVE_VALUE -0x000A +/** The input argument for division is zero, which is not allowed. */ +#define MBEDTLS_ERR_MPI_DIVISION_BY_ZERO -0x000C +/** The input arguments are not acceptable. */ +#define MBEDTLS_ERR_MPI_NOT_ACCEPTABLE -0x000E +/** Memory allocation failed. */ +#define MBEDTLS_ERR_MPI_ALLOC_FAILED -0x0010 -#define MBEDTLS_MPI_CHK(f) do { if( ( ret = f ) != 0 ) goto cleanup; } while( 0 ) +#define MBEDTLS_MPI_CHK(f) \ + do \ + { \ + if( ( ret = (f) ) != 0 ) \ + goto cleanup; \ + } while( 0 ) /* * Maximum size MPIs are allowed to grow to in number of limbs. @@ -58,12 +69,12 @@ * Maximum window size used for modular exponentiation. Default: 6 * Minimum value: 1. Maximum value: 6. * - * Result is an array of ( 2 << MBEDTLS_MPI_WINDOW_SIZE ) MPIs used + * Result is an array of ( 2 ** MBEDTLS_MPI_WINDOW_SIZE ) MPIs used * for the sliding window calculation. (So 64 by default) * * Reduction in size, reduces speed. */ -#define MBEDTLS_MPI_WINDOW_SIZE 6 /**< Maximum windows size used. */ +#define MBEDTLS_MPI_WINDOW_SIZE 6 /**< Maximum window size used. */ #endif /* !MBEDTLS_MPI_WINDOW_SIZE */ #if !defined(MBEDTLS_MPI_MAX_SIZE) @@ -124,7 +135,8 @@ defined(__ppc64__) || defined(__powerpc64__) || \ defined(__ia64__) || defined(__alpha__) || \ ( defined(__sparc__) && defined(__arch64__) ) || \ - defined(__s390x__) || defined(__mips64) ) + defined(__s390x__) || defined(__mips64) || \ + defined(__aarch64__) ) #if !defined(MBEDTLS_HAVE_INT64) #define MBEDTLS_HAVE_INT64 #endif /* MBEDTLS_HAVE_INT64 */ @@ -179,7 +191,7 @@ extern "C" { */ typedef struct mbedtls_mpi { - int s; /*!< integer sign */ + int s; /*!< Sign: -1 if the mpi is negative, 1 otherwise */ size_t n; /*!< total # of limbs */ mbedtls_mpi_uint *p; /*!< pointer to limbs */ } @@ -490,8 +502,24 @@ int mbedtls_mpi_read_binary( mbedtls_mpi *X, const unsigned char *buf, size_t buflen ); /** - * \brief Export an MPI into unsigned big endian binary data - * of fixed size. + * \brief Import X from unsigned binary data, little endian + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param buf The input buffer. This must be a readable buffer of length + * \p buflen Bytes. + * \param buflen The length of the input buffer \p p in Bytes. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_read_binary_le( mbedtls_mpi *X, + const unsigned char *buf, size_t buflen ); + +/** + * \brief Export X into unsigned binary data, big endian. + * Always fills the whole buffer, which will start with zeros + * if the number is smaller. * * \param X The source MPI. This must point to an initialized MPI. * \param buf The output buffer. This must be a writable buffer of length @@ -506,6 +534,24 @@ int mbedtls_mpi_read_binary( mbedtls_mpi *X, const unsigned char *buf, int mbedtls_mpi_write_binary( const mbedtls_mpi *X, unsigned char *buf, size_t buflen ); +/** + * \brief Export X into unsigned binary data, little endian. + * Always fills the whole buffer, which will end with zeros + * if the number is smaller. + * + * \param X The source MPI. This must point to an initialized MPI. + * \param buf The output buffer. This must be a writable buffer of length + * \p buflen Bytes. + * \param buflen The size of the output buffer \p buf in Bytes. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL if \p buf isn't + * large enough to hold the value of \p X. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_write_binary_le( const mbedtls_mpi *X, + unsigned char *buf, size_t buflen ); + /** * \brief Perform a left-shift on an MPI: X <<= count * @@ -554,6 +600,24 @@ int mbedtls_mpi_cmp_abs( const mbedtls_mpi *X, const mbedtls_mpi *Y ); */ int mbedtls_mpi_cmp_mpi( const mbedtls_mpi *X, const mbedtls_mpi *Y ); +/** + * \brief Check if an MPI is less than the other in constant time. + * + * \param X The left-hand MPI. This must point to an initialized MPI + * with the same allocated length as Y. + * \param Y The right-hand MPI. This must point to an initialized MPI + * with the same allocated length as X. + * \param ret The result of the comparison: + * \c 1 if \p X is less than \p Y. + * \c 0 if \p X is greater than or equal to \p Y. + * + * \return 0 on success. + * \return MBEDTLS_ERR_MPI_BAD_INPUT_DATA if the allocated length of + * the two input MPIs is not the same. + */ +int mbedtls_mpi_lt_mpi_ct( const mbedtls_mpi *X, const mbedtls_mpi *Y, + unsigned *ret ); + /** * \brief Compare an MPI with an integer. * @@ -773,14 +837,14 @@ int mbedtls_mpi_mod_int( mbedtls_mpi_uint *r, const mbedtls_mpi *A, * \param E The exponent MPI. This must point to an initialized MPI. * \param N The base for the modular reduction. This must point to an * initialized MPI. - * \param _RR A helper MPI depending solely on \p N which can be used to + * \param prec_RR A helper MPI depending solely on \p N which can be used to * speed-up multiple modular exponentiations for the same value * of \p N. This may be \c NULL. If it is not \c NULL, it must * point to an initialized MPI. If it hasn't been used after * the call to mbedtls_mpi_init(), this function will compute - * the helper value and store it in \p _RR for reuse on + * the helper value and store it in \p prec_RR for reuse on * subsequent calls to this function. Otherwise, the function - * will assume that \p _RR holds the helper value set by a + * will assume that \p prec_RR holds the helper value set by a * previous call to mbedtls_mpi_exp_mod(), and reuse it. * * \return \c 0 if successful. @@ -792,7 +856,7 @@ int mbedtls_mpi_mod_int( mbedtls_mpi_uint *r, const mbedtls_mpi *A, */ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *E, const mbedtls_mpi *N, - mbedtls_mpi *_RR ); + mbedtls_mpi *prec_RR ); /** * \brief Fill an MPI with a number of random bytes. @@ -815,6 +879,44 @@ int mbedtls_mpi_fill_random( mbedtls_mpi *X, size_t size, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); +/** Generate a random number uniformly in a range. + * + * This function generates a random number between \p min inclusive and + * \p N exclusive. + * + * The procedure complies with RFC 6979 §3.3 (deterministic ECDSA) + * when the RNG is a suitably parametrized instance of HMAC_DRBG + * and \p min is \c 1. + * + * \note There are `N - min` possible outputs. The lower bound + * \p min can be reached, but the upper bound \p N cannot. + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param min The minimum value to return. + * It must be nonnegative. + * \param N The upper bound of the range, exclusive. + * In other words, this is one plus the maximum value to return. + * \p N must be strictly larger than \p min. + * \param f_rng The RNG function to use. This must not be \c NULL. + * \param p_rng The RNG parameter to be passed to \p f_rng. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return #MBEDTLS_ERR_MPI_BAD_INPUT_DATA if \p min or \p N is invalid + * or if they are incompatible. + * \return #MBEDTLS_ERR_MPI_NOT_ACCEPTABLE if the implementation was + * unable to find a suitable value within a limited number + * of attempts. This has a negligible probability if \p N + * is significantly larger than \p min, which is the case + * for all usual cryptographic applications. + * \return Another negative error code on failure. + */ +int mbedtls_mpi_random( mbedtls_mpi *X, + mbedtls_mpi_sint min, + const mbedtls_mpi *N, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + /** * \brief Compute the greatest common divisor: G = gcd(A, B) * diff --git a/Externals/mbedtls/include/mbedtls/blowfish.h b/Externals/mbedtls/include/mbedtls/blowfish.h index f01573dcaf8d..77dca70d314f 100644 --- a/Externals/mbedtls/include/mbedtls/blowfish.h +++ b/Externals/mbedtls/include/mbedtls/blowfish.h @@ -4,7 +4,7 @@ * \brief Blowfish block cipher */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,14 +18,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_BLOWFISH_H #define MBEDTLS_BLOWFISH_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -33,7 +31,7 @@ #include #include -#include "platform_util.h" +#include "mbedtls/platform_util.h" #define MBEDTLS_BLOWFISH_ENCRYPT 1 #define MBEDTLS_BLOWFISH_DECRYPT 0 @@ -45,13 +43,16 @@ #if !defined(MBEDTLS_DEPRECATED_REMOVED) #define MBEDTLS_ERR_BLOWFISH_INVALID_KEY_LENGTH MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( -0x0016 ) #endif /* !MBEDTLS_DEPRECATED_REMOVED */ -#define MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA -0x0016 /**< Bad input data. */ +/** Bad input data. */ +#define MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA -0x0016 -#define MBEDTLS_ERR_BLOWFISH_INVALID_INPUT_LENGTH -0x0018 /**< Invalid data input length. */ +/** Invalid data input length. */ +#define MBEDTLS_ERR_BLOWFISH_INVALID_INPUT_LENGTH -0x0018 /* MBEDTLS_ERR_BLOWFISH_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_BLOWFISH_HW_ACCEL_FAILED -0x0017 /**< Blowfish hardware accelerator failed. */ +/** Blowfish hardware accelerator failed. */ +#define MBEDTLS_ERR_BLOWFISH_HW_ACCEL_FAILED -0x0017 #ifdef __cplusplus extern "C" { diff --git a/Externals/mbedtls/include/mbedtls/bn_mul.h b/Externals/mbedtls/include/mbedtls/bn_mul.h index c33bd8d4ab50..31137cd4c231 100644 --- a/Externals/mbedtls/include/mbedtls/bn_mul.h +++ b/Externals/mbedtls/include/mbedtls/bn_mul.h @@ -4,7 +4,7 @@ * \brief Multi-precision integer library */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,8 +18,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * Multiply source vector [s] with b, add result @@ -39,12 +37,52 @@ #define MBEDTLS_BN_MUL_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "bignum.h" +#include "mbedtls/bignum.h" + + +/* + * Conversion macros for embedded constants: + * build lists of mbedtls_mpi_uint's from lists of unsigned char's grouped by 8, 4 or 2 + */ +#if defined(MBEDTLS_HAVE_INT32) + +#define MBEDTLS_BYTES_TO_T_UINT_4( a, b, c, d ) \ + ( (mbedtls_mpi_uint) (a) << 0 ) | \ + ( (mbedtls_mpi_uint) (b) << 8 ) | \ + ( (mbedtls_mpi_uint) (c) << 16 ) | \ + ( (mbedtls_mpi_uint) (d) << 24 ) + +#define MBEDTLS_BYTES_TO_T_UINT_2( a, b ) \ + MBEDTLS_BYTES_TO_T_UINT_4( a, b, 0, 0 ) + +#define MBEDTLS_BYTES_TO_T_UINT_8( a, b, c, d, e, f, g, h ) \ + MBEDTLS_BYTES_TO_T_UINT_4( a, b, c, d ), \ + MBEDTLS_BYTES_TO_T_UINT_4( e, f, g, h ) + +#else /* 64-bits */ + +#define MBEDTLS_BYTES_TO_T_UINT_8( a, b, c, d, e, f, g, h ) \ + ( (mbedtls_mpi_uint) (a) << 0 ) | \ + ( (mbedtls_mpi_uint) (b) << 8 ) | \ + ( (mbedtls_mpi_uint) (c) << 16 ) | \ + ( (mbedtls_mpi_uint) (d) << 24 ) | \ + ( (mbedtls_mpi_uint) (e) << 32 ) | \ + ( (mbedtls_mpi_uint) (f) << 40 ) | \ + ( (mbedtls_mpi_uint) (g) << 48 ) | \ + ( (mbedtls_mpi_uint) (h) << 56 ) + +#define MBEDTLS_BYTES_TO_T_UINT_4( a, b, c, d ) \ + MBEDTLS_BYTES_TO_T_UINT_8( a, b, c, d, 0, 0, 0, 0 ) + +#define MBEDTLS_BYTES_TO_T_UINT_2( a, b ) \ + MBEDTLS_BYTES_TO_T_UINT_8( a, b, 0, 0, 0, 0, 0, 0 ) + +#endif /* bits in mbedtls_mpi_uint */ #if defined(MBEDTLS_HAVE_ASM) @@ -191,13 +229,37 @@ "addq $8, %%rdi\n" #define MULADDC_STOP \ - : "+c" (c), "+D" (d), "+S" (s) \ - : "b" (b) \ - : "rax", "rdx", "r8" \ + : "+c" (c), "+D" (d), "+S" (s), "+m" (*(uint64_t (*)[16]) d) \ + : "b" (b), "m" (*(const uint64_t (*)[16]) s) \ + : "rax", "rdx", "r8" \ ); #endif /* AMD64 */ +#if defined(__aarch64__) + +#define MULADDC_INIT \ + asm( + +#define MULADDC_CORE \ + "ldr x4, [%2], #8 \n\t" \ + "ldr x5, [%1] \n\t" \ + "mul x6, x4, %4 \n\t" \ + "umulh x7, x4, %4 \n\t" \ + "adds x5, x5, x6 \n\t" \ + "adc x7, x7, xzr \n\t" \ + "adds x5, x5, %0 \n\t" \ + "adc %0, x7, xzr \n\t" \ + "str x5, [%1], #8 \n\t" + +#define MULADDC_STOP \ + : "+r" (c), "+r" (d), "+r" (s), "+m" (*(uint64_t (*)[16]) d) \ + : "r" (b), "m" (*(const uint64_t (*)[16]) s) \ + : "x4", "x5", "x6", "x7", "cc" \ + ); + +#endif /* Aarch64 */ + #if defined(__mc68020__) || defined(__mcpu32__) #define MULADDC_INIT \ @@ -642,7 +704,8 @@ "r6", "r7", "r8", "r9", "cc" \ ); -#elif defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1) +#elif (__ARM_ARCH >= 6) && \ + defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1) #define MULADDC_INIT \ asm( diff --git a/Externals/mbedtls/include/mbedtls/camellia.h b/Externals/mbedtls/include/mbedtls/camellia.h index 3eeb66366d68..925a623e47ee 100644 --- a/Externals/mbedtls/include/mbedtls/camellia.h +++ b/Externals/mbedtls/include/mbedtls/camellia.h @@ -4,7 +4,7 @@ * \brief Camellia block cipher */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,14 +18,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_CAMELLIA_H #define MBEDTLS_CAMELLIA_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -33,7 +31,7 @@ #include #include -#include "platform_util.h" +#include "mbedtls/platform_util.h" #define MBEDTLS_CAMELLIA_ENCRYPT 1 #define MBEDTLS_CAMELLIA_DECRYPT 0 @@ -41,13 +39,16 @@ #if !defined(MBEDTLS_DEPRECATED_REMOVED) #define MBEDTLS_ERR_CAMELLIA_INVALID_KEY_LENGTH MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( -0x0024 ) #endif /* !MBEDTLS_DEPRECATED_REMOVED */ -#define MBEDTLS_ERR_CAMELLIA_BAD_INPUT_DATA -0x0024 /**< Bad input data. */ +/** Bad input data. */ +#define MBEDTLS_ERR_CAMELLIA_BAD_INPUT_DATA -0x0024 -#define MBEDTLS_ERR_CAMELLIA_INVALID_INPUT_LENGTH -0x0026 /**< Invalid data input length. */ +/** Invalid data input length. */ +#define MBEDTLS_ERR_CAMELLIA_INVALID_INPUT_LENGTH -0x0026 /* MBEDTLS_ERR_CAMELLIA_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_CAMELLIA_HW_ACCEL_FAILED -0x0027 /**< Camellia hardware accelerator failed. */ +/** Camellia hardware accelerator failed. */ +#define MBEDTLS_ERR_CAMELLIA_HW_ACCEL_FAILED -0x0027 #ifdef __cplusplus extern "C" { diff --git a/Externals/mbedtls/include/mbedtls/ccm.h b/Externals/mbedtls/include/mbedtls/ccm.h index f03e3b580eae..ece5a901cb63 100644 --- a/Externals/mbedtls/include/mbedtls/ccm.h +++ b/Externals/mbedtls/include/mbedtls/ccm.h @@ -28,7 +28,7 @@ * consistent with RFC 3610. */ /* - * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -42,26 +42,27 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_CCM_H #define MBEDTLS_CCM_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "cipher.h" +#include "mbedtls/cipher.h" -#define MBEDTLS_ERR_CCM_BAD_INPUT -0x000D /**< Bad input parameters to the function. */ -#define MBEDTLS_ERR_CCM_AUTH_FAILED -0x000F /**< Authenticated decryption failed. */ +/** Bad input parameters to the function. */ +#define MBEDTLS_ERR_CCM_BAD_INPUT -0x000D +/** Authenticated decryption failed. */ +#define MBEDTLS_ERR_CCM_AUTH_FAILED -0x000F /* MBEDTLS_ERR_CCM_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_CCM_HW_ACCEL_FAILED -0x0011 /**< CCM hardware accelerator failed. */ +/** CCM hardware accelerator failed. */ +#define MBEDTLS_ERR_CCM_HW_ACCEL_FAILED -0x0011 #ifdef __cplusplus extern "C" { @@ -150,7 +151,7 @@ void mbedtls_ccm_free( mbedtls_ccm_context *ctx ); * than zero, \p output must be a writable buffer of at least * that length. * \param tag The buffer holding the authentication field. This must be a - * readable buffer of at least \p tag_len Bytes. + * writable buffer of at least \p tag_len Bytes. * \param tag_len The length of the authentication field to generate in Bytes: * 4, 6, 8, 10, 12, 14 or 16. * @@ -195,7 +196,7 @@ int mbedtls_ccm_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length, * than zero, \p output must be a writable buffer of at least * that length. * \param tag The buffer holding the authentication field. This must be a - * readable buffer of at least \p tag_len Bytes. + * writable buffer of at least \p tag_len Bytes. * \param tag_len The length of the authentication field to generate in Bytes: * 0, 4, 6, 8, 10, 12, 14 or 16. * diff --git a/Externals/mbedtls/include/mbedtls/certs.h b/Externals/mbedtls/include/mbedtls/certs.h index b7c5708f85d5..c93c741c7fff 100644 --- a/Externals/mbedtls/include/mbedtls/certs.h +++ b/Externals/mbedtls/include/mbedtls/certs.h @@ -4,7 +4,7 @@ * \brief Sample certificates and DHM parameters for testing */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,14 +18,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_CERTS_H #define MBEDTLS_CERTS_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -36,68 +34,214 @@ extern "C" { #endif +/* List of all PEM-encoded CA certificates, terminated by NULL; + * PEM encoded if MBEDTLS_PEM_PARSE_C is enabled, DER encoded + * otherwise. */ +extern const char * mbedtls_test_cas[]; +extern const size_t mbedtls_test_cas_len[]; + +/* List of all DER-encoded CA certificates, terminated by NULL */ +extern const unsigned char * mbedtls_test_cas_der[]; +extern const size_t mbedtls_test_cas_der_len[]; + #if defined(MBEDTLS_PEM_PARSE_C) /* Concatenation of all CA certificates in PEM format if available */ extern const char mbedtls_test_cas_pem[]; extern const size_t mbedtls_test_cas_pem_len; -#endif - -/* List of all CA certificates, terminated by NULL */ -extern const char * mbedtls_test_cas[]; -extern const size_t mbedtls_test_cas_len[]; +#endif /* MBEDTLS_PEM_PARSE_C */ /* - * Convenience for users who just want a certificate: - * RSA by default, or ECDSA if RSA is not available + * CA test certificates */ + +extern const char mbedtls_test_ca_crt_ec_pem[]; +extern const char mbedtls_test_ca_key_ec_pem[]; +extern const char mbedtls_test_ca_pwd_ec_pem[]; +extern const char mbedtls_test_ca_key_rsa_pem[]; +extern const char mbedtls_test_ca_pwd_rsa_pem[]; +extern const char mbedtls_test_ca_crt_rsa_sha1_pem[]; +extern const char mbedtls_test_ca_crt_rsa_sha256_pem[]; + +extern const unsigned char mbedtls_test_ca_crt_ec_der[]; +extern const unsigned char mbedtls_test_ca_key_ec_der[]; +extern const unsigned char mbedtls_test_ca_key_rsa_der[]; +extern const unsigned char mbedtls_test_ca_crt_rsa_sha1_der[]; +extern const unsigned char mbedtls_test_ca_crt_rsa_sha256_der[]; + +extern const size_t mbedtls_test_ca_crt_ec_pem_len; +extern const size_t mbedtls_test_ca_key_ec_pem_len; +extern const size_t mbedtls_test_ca_pwd_ec_pem_len; +extern const size_t mbedtls_test_ca_key_rsa_pem_len; +extern const size_t mbedtls_test_ca_pwd_rsa_pem_len; +extern const size_t mbedtls_test_ca_crt_rsa_sha1_pem_len; +extern const size_t mbedtls_test_ca_crt_rsa_sha256_pem_len; + +extern const size_t mbedtls_test_ca_crt_ec_der_len; +extern const size_t mbedtls_test_ca_key_ec_der_len; +extern const size_t mbedtls_test_ca_pwd_ec_der_len; +extern const size_t mbedtls_test_ca_key_rsa_der_len; +extern const size_t mbedtls_test_ca_pwd_rsa_der_len; +extern const size_t mbedtls_test_ca_crt_rsa_sha1_der_len; +extern const size_t mbedtls_test_ca_crt_rsa_sha256_der_len; + +/* Config-dependent dispatch between PEM and DER encoding + * (PEM if enabled, otherwise DER) */ + +extern const char mbedtls_test_ca_crt_ec[]; +extern const char mbedtls_test_ca_key_ec[]; +extern const char mbedtls_test_ca_pwd_ec[]; +extern const char mbedtls_test_ca_key_rsa[]; +extern const char mbedtls_test_ca_pwd_rsa[]; +extern const char mbedtls_test_ca_crt_rsa_sha1[]; +extern const char mbedtls_test_ca_crt_rsa_sha256[]; + +extern const size_t mbedtls_test_ca_crt_ec_len; +extern const size_t mbedtls_test_ca_key_ec_len; +extern const size_t mbedtls_test_ca_pwd_ec_len; +extern const size_t mbedtls_test_ca_key_rsa_len; +extern const size_t mbedtls_test_ca_pwd_rsa_len; +extern const size_t mbedtls_test_ca_crt_rsa_sha1_len; +extern const size_t mbedtls_test_ca_crt_rsa_sha256_len; + +/* Config-dependent dispatch between SHA-1 and SHA-256 + * (SHA-256 if enabled, otherwise SHA-1) */ + +extern const char mbedtls_test_ca_crt_rsa[]; +extern const size_t mbedtls_test_ca_crt_rsa_len; + +/* Config-dependent dispatch between EC and RSA + * (RSA if enabled, otherwise EC) */ + extern const char * mbedtls_test_ca_crt; -extern const size_t mbedtls_test_ca_crt_len; extern const char * mbedtls_test_ca_key; -extern const size_t mbedtls_test_ca_key_len; extern const char * mbedtls_test_ca_pwd; +extern const size_t mbedtls_test_ca_crt_len; +extern const size_t mbedtls_test_ca_key_len; extern const size_t mbedtls_test_ca_pwd_len; + +/* + * Server test certificates + */ + +extern const char mbedtls_test_srv_crt_ec_pem[]; +extern const char mbedtls_test_srv_key_ec_pem[]; +extern const char mbedtls_test_srv_pwd_ec_pem[]; +extern const char mbedtls_test_srv_key_rsa_pem[]; +extern const char mbedtls_test_srv_pwd_rsa_pem[]; +extern const char mbedtls_test_srv_crt_rsa_sha1_pem[]; +extern const char mbedtls_test_srv_crt_rsa_sha256_pem[]; + +extern const unsigned char mbedtls_test_srv_crt_ec_der[]; +extern const unsigned char mbedtls_test_srv_key_ec_der[]; +extern const unsigned char mbedtls_test_srv_key_rsa_der[]; +extern const unsigned char mbedtls_test_srv_crt_rsa_sha1_der[]; +extern const unsigned char mbedtls_test_srv_crt_rsa_sha256_der[]; + +extern const size_t mbedtls_test_srv_crt_ec_pem_len; +extern const size_t mbedtls_test_srv_key_ec_pem_len; +extern const size_t mbedtls_test_srv_pwd_ec_pem_len; +extern const size_t mbedtls_test_srv_key_rsa_pem_len; +extern const size_t mbedtls_test_srv_pwd_rsa_pem_len; +extern const size_t mbedtls_test_srv_crt_rsa_sha1_pem_len; +extern const size_t mbedtls_test_srv_crt_rsa_sha256_pem_len; + +extern const size_t mbedtls_test_srv_crt_ec_der_len; +extern const size_t mbedtls_test_srv_key_ec_der_len; +extern const size_t mbedtls_test_srv_pwd_ec_der_len; +extern const size_t mbedtls_test_srv_key_rsa_der_len; +extern const size_t mbedtls_test_srv_pwd_rsa_der_len; +extern const size_t mbedtls_test_srv_crt_rsa_sha1_der_len; +extern const size_t mbedtls_test_srv_crt_rsa_sha256_der_len; + +/* Config-dependent dispatch between PEM and DER encoding + * (PEM if enabled, otherwise DER) */ + +extern const char mbedtls_test_srv_crt_ec[]; +extern const char mbedtls_test_srv_key_ec[]; +extern const char mbedtls_test_srv_pwd_ec[]; +extern const char mbedtls_test_srv_key_rsa[]; +extern const char mbedtls_test_srv_pwd_rsa[]; +extern const char mbedtls_test_srv_crt_rsa_sha1[]; +extern const char mbedtls_test_srv_crt_rsa_sha256[]; + +extern const size_t mbedtls_test_srv_crt_ec_len; +extern const size_t mbedtls_test_srv_key_ec_len; +extern const size_t mbedtls_test_srv_pwd_ec_len; +extern const size_t mbedtls_test_srv_key_rsa_len; +extern const size_t mbedtls_test_srv_pwd_rsa_len; +extern const size_t mbedtls_test_srv_crt_rsa_sha1_len; +extern const size_t mbedtls_test_srv_crt_rsa_sha256_len; + +/* Config-dependent dispatch between SHA-1 and SHA-256 + * (SHA-256 if enabled, otherwise SHA-1) */ + +extern const char mbedtls_test_srv_crt_rsa[]; +extern const size_t mbedtls_test_srv_crt_rsa_len; + +/* Config-dependent dispatch between EC and RSA + * (RSA if enabled, otherwise EC) */ + extern const char * mbedtls_test_srv_crt; -extern const size_t mbedtls_test_srv_crt_len; extern const char * mbedtls_test_srv_key; +extern const char * mbedtls_test_srv_pwd; +extern const size_t mbedtls_test_srv_crt_len; extern const size_t mbedtls_test_srv_key_len; -extern const char * mbedtls_test_cli_crt; -extern const size_t mbedtls_test_cli_crt_len; -extern const char * mbedtls_test_cli_key; -extern const size_t mbedtls_test_cli_key_len; +extern const size_t mbedtls_test_srv_pwd_len; + +/* + * Client test certificates + */ + +extern const char mbedtls_test_cli_crt_ec_pem[]; +extern const char mbedtls_test_cli_key_ec_pem[]; +extern const char mbedtls_test_cli_pwd_ec_pem[]; +extern const char mbedtls_test_cli_key_rsa_pem[]; +extern const char mbedtls_test_cli_pwd_rsa_pem[]; +extern const char mbedtls_test_cli_crt_rsa_pem[]; + +extern const unsigned char mbedtls_test_cli_crt_ec_der[]; +extern const unsigned char mbedtls_test_cli_key_ec_der[]; +extern const unsigned char mbedtls_test_cli_key_rsa_der[]; +extern const unsigned char mbedtls_test_cli_crt_rsa_der[]; + +extern const size_t mbedtls_test_cli_crt_ec_pem_len; +extern const size_t mbedtls_test_cli_key_ec_pem_len; +extern const size_t mbedtls_test_cli_pwd_ec_pem_len; +extern const size_t mbedtls_test_cli_key_rsa_pem_len; +extern const size_t mbedtls_test_cli_pwd_rsa_pem_len; +extern const size_t mbedtls_test_cli_crt_rsa_pem_len; + +extern const size_t mbedtls_test_cli_crt_ec_der_len; +extern const size_t mbedtls_test_cli_key_ec_der_len; +extern const size_t mbedtls_test_cli_key_rsa_der_len; +extern const size_t mbedtls_test_cli_crt_rsa_der_len; + +/* Config-dependent dispatch between PEM and DER encoding + * (PEM if enabled, otherwise DER) */ + +extern const char mbedtls_test_cli_crt_ec[]; +extern const char mbedtls_test_cli_key_ec[]; +extern const char mbedtls_test_cli_pwd_ec[]; +extern const char mbedtls_test_cli_key_rsa[]; +extern const char mbedtls_test_cli_pwd_rsa[]; +extern const char mbedtls_test_cli_crt_rsa[]; -#if defined(MBEDTLS_ECDSA_C) -extern const char mbedtls_test_ca_crt_ec[]; -extern const size_t mbedtls_test_ca_crt_ec_len; -extern const char mbedtls_test_ca_key_ec[]; -extern const size_t mbedtls_test_ca_key_ec_len; -extern const char mbedtls_test_ca_pwd_ec[]; -extern const size_t mbedtls_test_ca_pwd_ec_len; -extern const char mbedtls_test_srv_crt_ec[]; -extern const size_t mbedtls_test_srv_crt_ec_len; -extern const char mbedtls_test_srv_key_ec[]; -extern const size_t mbedtls_test_srv_key_ec_len; -extern const char mbedtls_test_cli_crt_ec[]; extern const size_t mbedtls_test_cli_crt_ec_len; -extern const char mbedtls_test_cli_key_ec[]; extern const size_t mbedtls_test_cli_key_ec_len; -#endif - -#if defined(MBEDTLS_RSA_C) -extern const char mbedtls_test_ca_crt_rsa[]; -extern const size_t mbedtls_test_ca_crt_rsa_len; -extern const char mbedtls_test_ca_key_rsa[]; -extern const size_t mbedtls_test_ca_key_rsa_len; -extern const char mbedtls_test_ca_pwd_rsa[]; -extern const size_t mbedtls_test_ca_pwd_rsa_len; -extern const char mbedtls_test_srv_crt_rsa[]; -extern const size_t mbedtls_test_srv_crt_rsa_len; -extern const char mbedtls_test_srv_key_rsa[]; -extern const size_t mbedtls_test_srv_key_rsa_len; -extern const char mbedtls_test_cli_crt_rsa[]; -extern const size_t mbedtls_test_cli_crt_rsa_len; -extern const char mbedtls_test_cli_key_rsa[]; +extern const size_t mbedtls_test_cli_pwd_ec_len; extern const size_t mbedtls_test_cli_key_rsa_len; -#endif +extern const size_t mbedtls_test_cli_pwd_rsa_len; +extern const size_t mbedtls_test_cli_crt_rsa_len; + +/* Config-dependent dispatch between EC and RSA + * (RSA if enabled, otherwise EC) */ + +extern const char * mbedtls_test_cli_crt; +extern const char * mbedtls_test_cli_key; +extern const char * mbedtls_test_cli_pwd; +extern const size_t mbedtls_test_cli_crt_len; +extern const size_t mbedtls_test_cli_key_len; +extern const size_t mbedtls_test_cli_pwd_len; #ifdef __cplusplus } diff --git a/Externals/mbedtls/include/mbedtls/chacha20.h b/Externals/mbedtls/include/mbedtls/chacha20.h index 2ae5e6e5f4ee..03b48714780b 100644 --- a/Externals/mbedtls/include/mbedtls/chacha20.h +++ b/Externals/mbedtls/include/mbedtls/chacha20.h @@ -12,7 +12,8 @@ * \author Daniel King */ -/* Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved. +/* + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -26,15 +27,13 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_CHACHA20_H #define MBEDTLS_CHACHA20_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -42,15 +41,18 @@ #include #include -#define MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA -0x0051 /**< Invalid input parameter(s). */ +/** Invalid input parameter(s). */ +#define MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA -0x0051 /* MBEDTLS_ERR_CHACHA20_FEATURE_UNAVAILABLE is deprecated and should not be * used. */ -#define MBEDTLS_ERR_CHACHA20_FEATURE_UNAVAILABLE -0x0053 /**< Feature not available. For example, s part of the API is not implemented. */ +/** Feature not available. For example, s part of the API is not implemented. */ +#define MBEDTLS_ERR_CHACHA20_FEATURE_UNAVAILABLE -0x0053 /* MBEDTLS_ERR_CHACHA20_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_CHACHA20_HW_ACCEL_FAILED -0x0055 /**< Chacha20 hardware accelerator failed. */ +/** Chacha20 hardware accelerator failed. */ +#define MBEDTLS_ERR_CHACHA20_HW_ACCEL_FAILED -0x0055 #ifdef __cplusplus extern "C" { diff --git a/Externals/mbedtls/include/mbedtls/chachapoly.h b/Externals/mbedtls/include/mbedtls/chachapoly.h index 49e615d278fa..c4ec7b5f2a91 100644 --- a/Externals/mbedtls/include/mbedtls/chachapoly.h +++ b/Externals/mbedtls/include/mbedtls/chachapoly.h @@ -12,7 +12,8 @@ * \author Daniel King */ -/* Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved. +/* + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -26,24 +27,24 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_CHACHAPOLY_H #define MBEDTLS_CHACHAPOLY_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif /* for shared error codes */ -#include "poly1305.h" +#include "mbedtls/poly1305.h" -#define MBEDTLS_ERR_CHACHAPOLY_BAD_STATE -0x0054 /**< The requested operation is not permitted in the current state. */ -#define MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED -0x0056 /**< Authenticated decryption failed: data was not authentic. */ +/** The requested operation is not permitted in the current state. */ +#define MBEDTLS_ERR_CHACHAPOLY_BAD_STATE -0x0054 +/** Authenticated decryption failed: data was not authentic. */ +#define MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED -0x0056 #ifdef __cplusplus extern "C" { @@ -58,7 +59,7 @@ mbedtls_chachapoly_mode_t; #if !defined(MBEDTLS_CHACHAPOLY_ALT) -#include "chacha20.h" +#include "mbedtls/chacha20.h" typedef struct mbedtls_chachapoly_context { diff --git a/Externals/mbedtls/include/mbedtls/check_config.h b/Externals/mbedtls/include/mbedtls/check_config.h index b86e5807e00c..396fe7dfc2b2 100644 --- a/Externals/mbedtls/include/mbedtls/check_config.h +++ b/Externals/mbedtls/include/mbedtls/check_config.h @@ -4,7 +4,7 @@ * \brief Consistency checks for configuration options */ /* - * Copyright (C) 2006-2018, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,8 +18,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -45,16 +43,20 @@ #endif /* Fix the config here. Not convenient to put an #ifdef _WIN32 in config.h as - * it would confuse config.pl. */ + * it would confuse config.py. */ #if !defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) && \ !defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO) #define MBEDTLS_PLATFORM_SNPRINTF_ALT #endif + +#if !defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT) && \ + !defined(MBEDTLS_PLATFORM_VSNPRINTF_MACRO) +#define MBEDTLS_PLATFORM_VSNPRINTF_ALT +#endif #endif /* _WIN32 */ -#if defined(TARGET_LIKE_MBED) && \ - ( defined(MBEDTLS_NET_C) || defined(MBEDTLS_TIMING_C) ) -#error "The NET and TIMING modules are not available for mbed OS - please use the network and timing functions provided by mbed OS" +#if defined(TARGET_LIKE_MBED) && defined(MBEDTLS_NET_C) +#error "The NET module is not available for mbed OS - please use the network functions provided by Mbed OS" #endif #if defined(MBEDTLS_DEPRECATED_WARNING) && \ @@ -98,6 +100,17 @@ #if defined(MBEDTLS_ECDSA_C) && \ ( !defined(MBEDTLS_ECP_C) || \ + !( defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) ) || \ !defined(MBEDTLS_ASN1_PARSE_C) || \ !defined(MBEDTLS_ASN1_WRITE_C) ) #error "MBEDTLS_ECDSA_C defined, but not all prerequisites" @@ -109,21 +122,32 @@ #endif #if defined(MBEDTLS_ECP_RESTARTABLE) && \ - ( defined(MBEDTLS_ECDH_COMPUTE_SHARED_ALT) || \ + ( defined(MBEDTLS_USE_PSA_CRYPTO) || \ + defined(MBEDTLS_ECDH_COMPUTE_SHARED_ALT) || \ defined(MBEDTLS_ECDH_GEN_PUBLIC_ALT) || \ defined(MBEDTLS_ECDSA_SIGN_ALT) || \ defined(MBEDTLS_ECDSA_VERIFY_ALT) || \ defined(MBEDTLS_ECDSA_GENKEY_ALT) || \ defined(MBEDTLS_ECP_INTERNAL_ALT) || \ defined(MBEDTLS_ECP_ALT) ) -#error "MBEDTLS_ECP_RESTARTABLE defined, but it cannot coexist with an alternative ECP implementation" +#error "MBEDTLS_ECP_RESTARTABLE defined, but it cannot coexist with an alternative or PSA-based ECP implementation" +#endif + +#if defined(MBEDTLS_ECP_RESTARTABLE) && \ + ! defined(MBEDTLS_ECDH_LEGACY_CONTEXT) +#error "MBEDTLS_ECP_RESTARTABLE defined, but not MBEDTLS_ECDH_LEGACY_CONTEXT" +#endif + +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) && \ + defined(MBEDTLS_ECDH_LEGACY_CONTEXT) +#error "MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED defined, but MBEDTLS_ECDH_LEGACY_CONTEXT not disabled" #endif #if defined(MBEDTLS_ECDSA_DETERMINISTIC) && !defined(MBEDTLS_HMAC_DRBG_C) #error "MBEDTLS_ECDSA_DETERMINISTIC defined, but not all prerequisites" #endif -#if defined(MBEDTLS_ECP_C) && ( !defined(MBEDTLS_BIGNUM_C) || ( \ +#if defined(MBEDTLS_ECP_C) && ( !defined(MBEDTLS_BIGNUM_C) || ( \ !defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) && \ !defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) && \ !defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) && \ @@ -134,10 +158,20 @@ !defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) && \ !defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) && \ !defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) && \ - !defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) ) ) + !defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) && \ + !defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) && \ + !defined(MBEDTLS_ECP_DP_CURVE448_ENABLED) ) ) #error "MBEDTLS_ECP_C defined, but not all prerequisites" #endif +#if defined(MBEDTLS_ECP_C) && !( \ + defined(MBEDTLS_ECP_ALT) || \ + defined(MBEDTLS_CTR_DRBG_C) || \ + defined(MBEDTLS_HMAC_DRBG_C) || \ + defined(MBEDTLS_ECP_NO_INTERNAL_RNG)) +#error "MBEDTLS_ECP_C requires a DRBG module unless MBEDTLS_ECP_NO_INTERNAL_RNG is defined or an alternative implementation is used" +#endif + #if defined(MBEDTLS_PK_PARSE_C) && !defined(MBEDTLS_ASN1_PARSE_C) #error "MBEDTLS_PK_PARSE_C defined, but not all prerequesites" #endif @@ -160,6 +194,16 @@ #error "MBEDTLS_ENTROPY_FORCE_SHA256 defined, but not all prerequisites" #endif +#if defined(__has_feature) +#if __has_feature(memory_sanitizer) +#define MBEDTLS_HAS_MEMSAN +#endif +#endif +#if defined(MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN) && !defined(MBEDTLS_HAS_MEMSAN) +#error "MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN requires building with MemorySanitizer" +#endif +#undef MBEDTLS_HAS_MEMSAN + #if defined(MBEDTLS_TEST_NULL_ENTROPY) && \ ( !defined(MBEDTLS_ENTROPY_C) || !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES) ) #error "MBEDTLS_TEST_NULL_ENTROPY defined, but not all prerequisites" @@ -171,7 +215,7 @@ #endif #if defined(MBEDTLS_GCM_C) && ( \ - !defined(MBEDTLS_AES_C) && !defined(MBEDTLS_CAMELLIA_C) ) + !defined(MBEDTLS_AES_C) && !defined(MBEDTLS_CAMELLIA_C) && !defined(MBEDTLS_ARIA_C) ) #error "MBEDTLS_GCM_C defined, but not all prerequisites" #endif @@ -207,6 +251,10 @@ #error "MBEDTLS_ECP_NORMALIZE_MXZ_ALT defined, but not all prerequisites" #endif +#if defined(MBEDTLS_ECP_NO_FALLBACK) && !defined(MBEDTLS_ECP_INTERNAL_ALT) +#error "MBEDTLS_ECP_NO_FALLBACK defined, but no alternative implementation enabled" +#endif + #if defined(MBEDTLS_HAVEGE_C) && !defined(MBEDTLS_TIMING_C) #error "MBEDTLS_HAVEGE_C defined, but not all prerequisites" #endif @@ -220,12 +268,14 @@ #endif #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) && \ - ( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_X509_CRT_PARSE_C) ) + ( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_ECDSA_C) || \ + !defined(MBEDTLS_X509_CRT_PARSE_C) ) #error "MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED defined, but not all prerequisites" #endif #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) && \ - ( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_X509_CRT_PARSE_C) ) + ( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_RSA_C) || \ + !defined(MBEDTLS_X509_CRT_PARSE_C) ) #error "MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED defined, but not all prerequisites" #endif @@ -274,11 +324,27 @@ #error "MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED defined, but not all prerequisites" #endif +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) && \ + !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) && \ + ( !defined(MBEDTLS_SHA256_C) && \ + !defined(MBEDTLS_SHA512_C) && \ + !defined(MBEDTLS_SHA1_C) ) +#error "!MBEDTLS_SSL_KEEP_PEER_CERTIFICATE requires MBEDTLS_SHA512_C, MBEDTLS_SHA256_C or MBEDTLS_SHA1_C" +#endif + #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && \ ( !defined(MBEDTLS_PLATFORM_C) || !defined(MBEDTLS_PLATFORM_MEMORY) ) #error "MBEDTLS_MEMORY_BUFFER_ALLOC_C defined, but not all prerequisites" #endif +#if defined(MBEDTLS_MEMORY_BACKTRACE) && !defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) +#error "MBEDTLS_MEMORY_BACKTRACE defined, but not all prerequesites" +#endif + +#if defined(MBEDTLS_MEMORY_DEBUG) && !defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) +#error "MBEDTLS_MEMORY_DEBUG defined, but not all prerequesites" +#endif + #if defined(MBEDTLS_PADLOCK_C) && !defined(MBEDTLS_HAVE_ASM) #error "MBEDTLS_PADLOCK_C defined, but not all prerequisites" #endif @@ -308,6 +374,14 @@ #error "MBEDTLS_PKCS11_C defined, but not all prerequisites" #endif +#if defined(MBEDTLS_PKCS11_C) +#if defined(MBEDTLS_DEPRECATED_REMOVED) +#error "MBEDTLS_PKCS11_C is deprecated and will be removed in a future version of Mbed TLS" +#elif defined(MBEDTLS_DEPRECATED_WARNING) +#warning "MBEDTLS_PKCS11_C is deprecated and will be removed in a future version of Mbed TLS" +#endif +#endif /* MBEDTLS_PKCS11_C */ + #if defined(MBEDTLS_PLATFORM_EXIT_ALT) && !defined(MBEDTLS_PLATFORM_C) #error "MBEDTLS_PLATFORM_EXIT_ALT defined, but not all prerequisites" #endif @@ -435,10 +509,6 @@ #error "MBEDTLS_PLATFORM_STD_CALLOC defined, but not all prerequisites" #endif -#if defined(MBEDTLS_PLATFORM_STD_CALLOC) && !defined(MBEDTLS_PLATFORM_MEMORY) -#error "MBEDTLS_PLATFORM_STD_CALLOC defined, but not all prerequisites" -#endif - #if defined(MBEDTLS_PLATFORM_STD_FREE) && !defined(MBEDTLS_PLATFORM_MEMORY) #error "MBEDTLS_PLATFORM_STD_FREE defined, but not all prerequisites" #endif @@ -501,6 +571,54 @@ #error "MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO and MBEDTLS_PLATFORM_STD_NV_SEED_WRITE cannot be defined simultaneously" #endif +#if defined(MBEDTLS_PSA_CRYPTO_C) && \ + !( ( ( defined(MBEDTLS_CTR_DRBG_C) || defined(MBEDTLS_HMAC_DRBG_C) ) && \ + defined(MBEDTLS_ENTROPY_C) ) || \ + defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) ) +#error "MBEDTLS_PSA_CRYPTO_C defined, but not all prerequisites (missing RNG)" +#endif + +#if defined(MBEDTLS_PSA_CRYPTO_SPM) && !defined(MBEDTLS_PSA_CRYPTO_C) +#error "MBEDTLS_PSA_CRYPTO_SPM defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) && \ + ! ( defined(MBEDTLS_PSA_CRYPTO_C) && \ + defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) ) +#error "MBEDTLS_PSA_CRYPTO_SE_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) && \ + ! defined(MBEDTLS_PSA_CRYPTO_C) +#error "MBEDTLS_PSA_CRYPTO_STORAGE_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PSA_INJECT_ENTROPY) && \ + !( defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) && \ + defined(MBEDTLS_ENTROPY_NV_SEED) ) +#error "MBEDTLS_PSA_INJECT_ENTROPY defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PSA_INJECT_ENTROPY) && \ + !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES) +#error "MBEDTLS_PSA_INJECT_ENTROPY is not compatible with actual entropy sources" +#endif + +#if defined(MBEDTLS_PSA_INJECT_ENTROPY) && \ + defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) +#error "MBEDTLS_PSA_INJECT_ENTROPY is not compatible with MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG" +#endif + +#if defined(MBEDTLS_PSA_ITS_FILE_C) && \ + !defined(MBEDTLS_FS_IO) +#error "MBEDTLS_PSA_ITS_FILE_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER) && \ + defined(MBEDTLS_USE_PSA_CRYPTO) +#error "MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER defined, but it cannot coexist with MBEDTLS_USE_PSA_CRYPTO." +#endif + #if defined(MBEDTLS_RSA_C) && ( !defined(MBEDTLS_BIGNUM_C) || \ !defined(MBEDTLS_OID_C) ) #error "MBEDTLS_RSA_C defined, but not all prerequisites" @@ -516,6 +634,10 @@ #error "MBEDTLS_X509_RSASSA_PSS_SUPPORT defined, but not all prerequisites" #endif +#if defined(MBEDTLS_SHA512_NO_SHA384) && !defined(MBEDTLS_SHA512_C) +#error "MBEDTLS_SHA512_NO_SHA384 defined without MBEDTLS_SHA512_C" +#endif + #if defined(MBEDTLS_SSL_PROTO_SSL3) && ( !defined(MBEDTLS_MD5_C) || \ !defined(MBEDTLS_SHA1_C) ) #error "MBEDTLS_SSL_PROTO_SSL3 defined, but not all prerequisites" @@ -536,6 +658,28 @@ #error "MBEDTLS_SSL_PROTO_TLS1_2 defined, but not all prerequisites" #endif +#if defined(MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL) && ( !defined(MBEDTLS_HKDF_C) && \ + !defined(MBEDTLS_SHA256_C) && !defined(MBEDTLS_SHA512_C) ) +#error "MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL defined, but not all prerequisites" +#endif + +#if (defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \ + defined(MBEDTLS_SSL_PROTO_TLS1_1) || defined(MBEDTLS_SSL_PROTO_TLS1_2)) && \ + !(defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) ) +#error "One or more versions of the TLS protocol are enabled " \ + "but no key exchange methods defined with MBEDTLS_KEY_EXCHANGE_xxxx" +#endif + #if defined(MBEDTLS_SSL_PROTO_DTLS) && \ !defined(MBEDTLS_SSL_PROTO_TLS1_1) && \ !defined(MBEDTLS_SSL_PROTO_TLS1_2) @@ -591,6 +735,23 @@ #error "MBEDTLS_SSL_DTLS_ANTI_REPLAY defined, but not all prerequisites" #endif +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) && \ + ( !defined(MBEDTLS_SSL_TLS_C) || !defined(MBEDTLS_SSL_PROTO_DTLS) ) +#error "MBEDTLS_SSL_DTLS_CONNECTION_ID defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) && \ + defined(MBEDTLS_SSL_CID_IN_LEN_MAX) && \ + MBEDTLS_SSL_CID_IN_LEN_MAX > 255 +#error "MBEDTLS_SSL_CID_IN_LEN_MAX too large (max 255)" +#endif + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) && \ + defined(MBEDTLS_SSL_CID_OUT_LEN_MAX) && \ + MBEDTLS_SSL_CID_OUT_LEN_MAX > 255 +#error "MBEDTLS_SSL_CID_OUT_LEN_MAX too large (max 255)" +#endif + #if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) && \ ( !defined(MBEDTLS_SSL_TLS_C) || !defined(MBEDTLS_SSL_PROTO_DTLS) ) #error "MBEDTLS_SSL_DTLS_BADMAC_LIMIT defined, but not all prerequisites" @@ -643,6 +804,10 @@ #endif #undef MBEDTLS_THREADING_IMPL +#if defined(MBEDTLS_USE_PSA_CRYPTO) && !defined(MBEDTLS_PSA_CRYPTO_C) +#error "MBEDTLS_USE_PSA_CRYPTO defined, but not all prerequisites" +#endif + #if defined(MBEDTLS_VERSION_FEATURES) && !defined(MBEDTLS_VERSION_C) #error "MBEDTLS_VERSION_FEATURES defined, but not all prerequisites" #endif @@ -659,6 +824,10 @@ #error "MBEDTLS_X509_CREATE_C defined, but not all prerequisites" #endif +#if defined(MBEDTLS_CERTS_C) && !defined(MBEDTLS_X509_USE_C) +#error "MBEDTLS_CERTS_C defined, but not all prerequisites" +#endif + #if defined(MBEDTLS_X509_CRT_PARSE_C) && ( !defined(MBEDTLS_X509_USE_C) ) #error "MBEDTLS_X509_CRT_PARSE_C defined, but not all prerequisites" #endif @@ -688,10 +857,42 @@ #error "MBEDTLS_HAVE_INT32/MBEDTLS_HAVE_INT64 and MBEDTLS_HAVE_ASM cannot be defined simultaneously" #endif /* (MBEDTLS_HAVE_INT32 || MBEDTLS_HAVE_INT64) && MBEDTLS_HAVE_ASM */ +#if defined(MBEDTLS_SSL_PROTO_SSL3) +#if defined(MBEDTLS_DEPRECATED_REMOVED) +#error "MBEDTLS_SSL_PROTO_SSL3 is deprecated and will be removed in a future version of Mbed TLS" +#elif defined(MBEDTLS_DEPRECATED_WARNING) +#warning "MBEDTLS_SSL_PROTO_SSL3 is deprecated and will be removed in a future version of Mbed TLS" +#endif +#endif /* MBEDTLS_SSL_PROTO_SSL3 */ + +#if defined(MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO) +#if defined(MBEDTLS_DEPRECATED_REMOVED) +#error "MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO is deprecated and will be removed in a future version of Mbed TLS" +#elif defined(MBEDTLS_DEPRECATED_WARNING) +#warning "MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO is deprecated and will be removed in a future version of Mbed TLS" +#endif +#endif /* MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO */ + +#if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) +#if defined(MBEDTLS_DEPRECATED_REMOVED) +#error "MBEDTLS_SSL_HW_RECORD_ACCEL is deprecated and will be removed in a future version of Mbed TLS" +#elif defined(MBEDTLS_DEPRECATED_WARNING) +#warning "MBEDTLS_SSL_HW_RECORD_ACCEL is deprecated and will be removed in a future version of Mbed TLS" +#endif /* MBEDTLS_DEPRECATED_REMOVED */ +#endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ + +#if defined(MBEDTLS_SSL_DTLS_SRTP) && ( !defined(MBEDTLS_SSL_PROTO_DTLS) ) +#error "MBEDTLS_SSL_DTLS_SRTP defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) && ( !defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) ) +#error "MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH defined, but not all prerequisites" +#endif + /* * Avoid warning from -pedantic. This is a convenient place for this * workaround since this is included by every single file before the - * #if defined(MBEDTLS_xxx_C) that results in emtpy translation units. + * #if defined(MBEDTLS_xxx_C) that results in empty translation units. */ typedef int mbedtls_iso_c_forbids_empty_translation_units; diff --git a/Externals/mbedtls/include/mbedtls/cipher.h b/Externals/mbedtls/include/mbedtls/cipher.h index 082a69174159..6d83da8827ef 100644 --- a/Externals/mbedtls/include/mbedtls/cipher.h +++ b/Externals/mbedtls/include/mbedtls/cipher.h @@ -8,7 +8,7 @@ * \author Adriaan de Jong */ /* - * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -22,21 +22,19 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_CIPHER_H #define MBEDTLS_CIPHER_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif #include -#include "platform_util.h" +#include "mbedtls/platform_util.h" #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C) || defined(MBEDTLS_CHACHAPOLY_C) #define MBEDTLS_CIPHER_MODE_AEAD @@ -56,16 +54,24 @@ #define inline __inline #endif -#define MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE -0x6080 /**< The selected feature is not available. */ -#define MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA -0x6100 /**< Bad input parameters. */ -#define MBEDTLS_ERR_CIPHER_ALLOC_FAILED -0x6180 /**< Failed to allocate memory. */ -#define MBEDTLS_ERR_CIPHER_INVALID_PADDING -0x6200 /**< Input data contains invalid padding and is rejected. */ -#define MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED -0x6280 /**< Decryption of block requires a full block. */ -#define MBEDTLS_ERR_CIPHER_AUTH_FAILED -0x6300 /**< Authentication failed (for AEAD modes). */ -#define MBEDTLS_ERR_CIPHER_INVALID_CONTEXT -0x6380 /**< The context is invalid. For example, because it was freed. */ +/** The selected feature is not available. */ +#define MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE -0x6080 +/** Bad input parameters. */ +#define MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA -0x6100 +/** Failed to allocate memory. */ +#define MBEDTLS_ERR_CIPHER_ALLOC_FAILED -0x6180 +/** Input data contains invalid padding and is rejected. */ +#define MBEDTLS_ERR_CIPHER_INVALID_PADDING -0x6200 +/** Decryption of block requires a full block. */ +#define MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED -0x6280 +/** Authentication failed (for AEAD modes). */ +#define MBEDTLS_ERR_CIPHER_AUTH_FAILED -0x6300 +/** The context is invalid. For example, because it was freed. */ +#define MBEDTLS_ERR_CIPHER_INVALID_CONTEXT -0x6380 /* MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED -0x6400 /**< Cipher hardware accelerator failed. */ +/** Cipher hardware accelerator failed. */ +#define MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED -0x6400 #define MBEDTLS_CIPHER_VARIABLE_IV_LEN 0x01 /**< Cipher accepts IVs of variable length. */ #define MBEDTLS_CIPHER_VARIABLE_KEY_LEN 0x02 /**< Cipher accepts keys of variable length. */ @@ -176,21 +182,29 @@ typedef enum { MBEDTLS_CIPHER_AES_256_XTS, /**< AES 256-bit cipher in XTS block mode. */ MBEDTLS_CIPHER_CHACHA20, /**< ChaCha20 stream cipher. */ MBEDTLS_CIPHER_CHACHA20_POLY1305, /**< ChaCha20-Poly1305 AEAD cipher. */ + MBEDTLS_CIPHER_AES_128_KW, /**< AES cipher with 128-bit NIST KW mode. */ + MBEDTLS_CIPHER_AES_192_KW, /**< AES cipher with 192-bit NIST KW mode. */ + MBEDTLS_CIPHER_AES_256_KW, /**< AES cipher with 256-bit NIST KW mode. */ + MBEDTLS_CIPHER_AES_128_KWP, /**< AES cipher with 128-bit NIST KWP mode. */ + MBEDTLS_CIPHER_AES_192_KWP, /**< AES cipher with 192-bit NIST KWP mode. */ + MBEDTLS_CIPHER_AES_256_KWP, /**< AES cipher with 256-bit NIST KWP mode. */ } mbedtls_cipher_type_t; /** Supported cipher modes. */ typedef enum { - MBEDTLS_MODE_NONE = 0, /**< None. */ - MBEDTLS_MODE_ECB, /**< The ECB cipher mode. */ - MBEDTLS_MODE_CBC, /**< The CBC cipher mode. */ - MBEDTLS_MODE_CFB, /**< The CFB cipher mode. */ - MBEDTLS_MODE_OFB, /**< The OFB cipher mode. */ - MBEDTLS_MODE_CTR, /**< The CTR cipher mode. */ - MBEDTLS_MODE_GCM, /**< The GCM cipher mode. */ - MBEDTLS_MODE_STREAM, /**< The stream cipher mode. */ - MBEDTLS_MODE_CCM, /**< The CCM cipher mode. */ - MBEDTLS_MODE_XTS, /**< The XTS cipher mode. */ + MBEDTLS_MODE_NONE = 0, /**< None. */ + MBEDTLS_MODE_ECB, /**< The ECB cipher mode. */ + MBEDTLS_MODE_CBC, /**< The CBC cipher mode. */ + MBEDTLS_MODE_CFB, /**< The CFB cipher mode. */ + MBEDTLS_MODE_OFB, /**< The OFB cipher mode. */ + MBEDTLS_MODE_CTR, /**< The CTR cipher mode. */ + MBEDTLS_MODE_GCM, /**< The GCM cipher mode. */ + MBEDTLS_MODE_STREAM, /**< The stream cipher mode. */ + MBEDTLS_MODE_CCM, /**< The CCM cipher mode. */ + MBEDTLS_MODE_XTS, /**< The XTS cipher mode. */ MBEDTLS_MODE_CHACHAPOLY, /**< The ChaCha-Poly cipher mode. */ + MBEDTLS_MODE_KW, /**< The SP800-38F KW mode */ + MBEDTLS_MODE_KWP, /**< The SP800-38F KWP mode */ } mbedtls_cipher_mode_t; /** Supported cipher padding types. */ @@ -221,10 +235,30 @@ enum { }; /** Maximum length of any IV, in Bytes. */ +/* This should ideally be derived automatically from list of ciphers. + * This should be kept in sync with MBEDTLS_SSL_MAX_IV_LENGTH defined + * in ssl_internal.h. */ #define MBEDTLS_MAX_IV_LENGTH 16 + /** Maximum block size of any cipher, in Bytes. */ +/* This should ideally be derived automatically from list of ciphers. + * This should be kept in sync with MBEDTLS_SSL_MAX_BLOCK_LENGTH defined + * in ssl_internal.h. */ #define MBEDTLS_MAX_BLOCK_LENGTH 16 +/** Maximum key length, in Bytes. */ +/* This should ideally be derived automatically from list of ciphers. + * For now, only check whether XTS is enabled which uses 64 Byte keys, + * and use 32 Bytes as an upper bound for the maximum key length otherwise. + * This should be kept in sync with MBEDTLS_SSL_MAX_BLOCK_LENGTH defined + * in ssl_internal.h, which however deliberately ignores the case of XTS + * since the latter isn't used in SSL/TLS. */ +#if defined(MBEDTLS_CIPHER_MODE_XTS) +#define MBEDTLS_MAX_KEY_LENGTH 64 +#else +#define MBEDTLS_MAX_KEY_LENGTH 32 +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + /** * Base cipher information (opaque struct). */ @@ -322,14 +356,32 @@ typedef struct mbedtls_cipher_context_t /** CMAC-specific context. */ mbedtls_cmac_context_t *cmac_ctx; #endif + +#if defined(MBEDTLS_USE_PSA_CRYPTO) + /** Indicates whether the cipher operations should be performed + * by Mbed TLS' own crypto library or an external implementation + * of the PSA Crypto API. + * This is unset if the cipher context was established through + * mbedtls_cipher_setup(), and set if it was established through + * mbedtls_cipher_setup_psa(). + */ + unsigned char psa_enabled; +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + } mbedtls_cipher_context_t; /** - * \brief This function retrieves the list of ciphers supported by the generic - * cipher module. + * \brief This function retrieves the list of ciphers supported + * by the generic cipher module. + * + * For any cipher identifier in the returned list, you can + * obtain the corresponding generic cipher information structure + * via mbedtls_cipher_info_from_type(), which can then be used + * to prepare a cipher context via mbedtls_cipher_setup(). + * * - * \return A statically-allocated array of ciphers. The last entry - * is zero. + * \return A statically-allocated array of cipher identifiers + * of type cipher_type_t. The last entry is zero. */ const int *mbedtls_cipher_list( void ); @@ -396,9 +448,8 @@ void mbedtls_cipher_free( mbedtls_cipher_context_t *ctx ); /** - * \brief This function initializes and fills the cipher-context - * structure with the appropriate values. It also clears - * the structure. + * \brief This function initializes a cipher context for + * use with the given cipher primitive. * * \param ctx The context to initialize. This must be initialized. * \param cipher_info The cipher to use. @@ -416,6 +467,33 @@ void mbedtls_cipher_free( mbedtls_cipher_context_t *ctx ); int mbedtls_cipher_setup( mbedtls_cipher_context_t *ctx, const mbedtls_cipher_info_t *cipher_info ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) +/** + * \brief This function initializes a cipher context for + * PSA-based use with the given cipher primitive. + * + * \note See #MBEDTLS_USE_PSA_CRYPTO for information on PSA. + * + * \param ctx The context to initialize. May not be \c NULL. + * \param cipher_info The cipher to use. + * \param taglen For AEAD ciphers, the length in bytes of the + * authentication tag to use. Subsequent uses of + * mbedtls_cipher_auth_encrypt() or + * mbedtls_cipher_auth_decrypt() must provide + * the same tag length. + * For non-AEAD ciphers, the value must be \c 0. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on + * parameter-verification failure. + * \return #MBEDTLS_ERR_CIPHER_ALLOC_FAILED if allocation of the + * cipher-specific context fails. + */ +int mbedtls_cipher_setup_psa( mbedtls_cipher_context_t *ctx, + const mbedtls_cipher_info_t *cipher_info, + size_t taglen ); +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + /** * \brief This function returns the block size of the given cipher. * @@ -638,7 +716,7 @@ int mbedtls_cipher_reset( mbedtls_cipher_context_t *ctx ); * \param ctx The generic cipher context. This must be initialized. * \param ad The additional data to use. This must be a readable * buffer of at least \p ad_len Bytes. - * \param ad_len the Length of \p ad Bytes. + * \param ad_len The length of \p ad in Bytes. * * \return \c 0 on success. * \return A specific error code on failure. @@ -681,8 +759,10 @@ int mbedtls_cipher_update_ad( mbedtls_cipher_context_t *ctx, * unsupported mode for a cipher. * \return A cipher-specific error code on failure. */ -int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *input, - size_t ilen, unsigned char *output, size_t *olen ); +int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, + const unsigned char *input, + size_t ilen, unsigned char *output, + size_t *olen ); /** * \brief The generic cipher finalization function. If data still @@ -785,30 +865,52 @@ int mbedtls_cipher_crypt( mbedtls_cipher_context_t *ctx, unsigned char *output, size_t *olen ); #if defined(MBEDTLS_CIPHER_MODE_AEAD) +#if ! defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif /* MBEDTLS_DEPRECATED_WARNING */ /** - * \brief The generic autenticated encryption (AEAD) function. + * \brief The generic authenticated encryption (AEAD) function. + * + * \deprecated Superseded by mbedtls_cipher_auth_encrypt_ext(). + * + * \note This function only supports AEAD algorithms, not key + * wrapping algorithms such as NIST_KW; for this, see + * mbedtls_cipher_auth_encrypt_ext(). * * \param ctx The generic cipher context. This must be initialized and - * bound to a key. - * \param iv The IV to use, or NONCE_COUNTER for CTR-mode ciphers. - * This must be a readable buffer of at least \p iv_len - * Bytes. - * \param iv_len The IV length for ciphers with variable-size IV. - * This parameter is discarded by ciphers with fixed-size IV. + * bound to a key associated with an AEAD algorithm. + * \param iv The nonce to use. This must be a readable buffer of + * at least \p iv_len Bytes and must not be \c NULL. + * \param iv_len The length of the nonce. This must satisfy the + * constraints imposed by the AEAD cipher used. * \param ad The additional data to authenticate. This must be a - * readable buffer of at least \p ad_len Bytes. + * readable buffer of at least \p ad_len Bytes, and may + * be \c NULL is \p ad_len is \c 0. * \param ad_len The length of \p ad. * \param input The buffer holding the input data. This must be a - * readable buffer of at least \p ilen Bytes. + * readable buffer of at least \p ilen Bytes, and may be + * \c NULL if \p ilen is \c 0. * \param ilen The length of the input data. - * \param output The buffer for the output data. This must be able to - * hold at least \p ilen Bytes. - * \param olen The length of the output data, to be updated with the - * actual number of Bytes written. This must not be - * \c NULL. + * \param output The buffer for the output data. This must be a + * writable buffer of at least \p ilen Bytes, and must + * not be \c NULL. + * \param olen This will be filled with the actual number of Bytes + * written to the \p output buffer. This must point to a + * writable object of type \c size_t. * \param tag The buffer for the authentication tag. This must be a - * writable buffer of at least \p tag_len Bytes. - * \param tag_len The desired length of the authentication tag. + * writable buffer of at least \p tag_len Bytes. See note + * below regarding restrictions with PSA-based contexts. + * \param tag_len The desired length of the authentication tag. This + * must match the constraints imposed by the AEAD cipher + * used, and in particular must not be \c 0. + * + * \note If the context is based on PSA (that is, it was set up + * with mbedtls_cipher_setup_psa()), then it is required + * that \c tag == output + ilen. That is, the tag must be + * appended to the ciphertext as recommended by RFC 5116. * * \return \c 0 on success. * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on @@ -820,36 +922,53 @@ int mbedtls_cipher_auth_encrypt( mbedtls_cipher_context_t *ctx, const unsigned char *ad, size_t ad_len, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, - unsigned char *tag, size_t tag_len ); + unsigned char *tag, size_t tag_len ) + MBEDTLS_DEPRECATED; /** - * \brief The generic autenticated decryption (AEAD) function. + * \brief The generic authenticated decryption (AEAD) function. + * + * \deprecated Superseded by mbedtls_cipher_auth_decrypt_ext(). + * + * \note This function only supports AEAD algorithms, not key + * wrapping algorithms such as NIST_KW; for this, see + * mbedtls_cipher_auth_decrypt_ext(). * * \note If the data is not authentic, then the output buffer * is zeroed out to prevent the unauthentic plaintext being * used, making this interface safer. * * \param ctx The generic cipher context. This must be initialized and - * and bound to a key. - * \param iv The IV to use, or NONCE_COUNTER for CTR-mode ciphers. - * This must be a readable buffer of at least \p iv_len - * Bytes. - * \param iv_len The IV length for ciphers with variable-size IV. - * This parameter is discarded by ciphers with fixed-size IV. - * \param ad The additional data to be authenticated. This must be a - * readable buffer of at least \p ad_len Bytes. + * bound to a key associated with an AEAD algorithm. + * \param iv The nonce to use. This must be a readable buffer of + * at least \p iv_len Bytes and must not be \c NULL. + * \param iv_len The length of the nonce. This must satisfy the + * constraints imposed by the AEAD cipher used. + * \param ad The additional data to authenticate. This must be a + * readable buffer of at least \p ad_len Bytes, and may + * be \c NULL is \p ad_len is \c 0. * \param ad_len The length of \p ad. * \param input The buffer holding the input data. This must be a - * readable buffer of at least \p ilen Bytes. + * readable buffer of at least \p ilen Bytes, and may be + * \c NULL if \p ilen is \c 0. * \param ilen The length of the input data. - * \param output The buffer for the output data. - * This must be able to hold at least \p ilen Bytes. - * \param olen The length of the output data, to be updated with the - * actual number of Bytes written. This must not be - * \c NULL. - * \param tag The buffer holding the authentication tag. This must be - * a readable buffer of at least \p tag_len Bytes. - * \param tag_len The length of the authentication tag. + * \param output The buffer for the output data. This must be a + * writable buffer of at least \p ilen Bytes, and must + * not be \c NULL. + * \param olen This will be filled with the actual number of Bytes + * written to the \p output buffer. This must point to a + * writable object of type \c size_t. + * \param tag The buffer for the authentication tag. This must be a + * readable buffer of at least \p tag_len Bytes. See note + * below regarding restrictions with PSA-based contexts. + * \param tag_len The length of the authentication tag. This must match + * the constraints imposed by the AEAD cipher used, and in + * particular must not be \c 0. + * + * \note If the context is based on PSA (that is, it was set up + * with mbedtls_cipher_setup_psa()), then it is required + * that \c tag == input + len. That is, the tag must be + * appended to the ciphertext as recommended by RFC 5116. * * \return \c 0 on success. * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on @@ -862,9 +981,120 @@ int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx, const unsigned char *ad, size_t ad_len, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, - const unsigned char *tag, size_t tag_len ); + const unsigned char *tag, size_t tag_len ) + MBEDTLS_DEPRECATED; +#undef MBEDTLS_DEPRECATED +#endif /* MBEDTLS_DEPRECATED_REMOVED */ #endif /* MBEDTLS_CIPHER_MODE_AEAD */ +#if defined(MBEDTLS_CIPHER_MODE_AEAD) || defined(MBEDTLS_NIST_KW_C) +/** + * \brief The authenticated encryption (AEAD/NIST_KW) function. + * + * \note For AEAD modes, the tag will be appended to the + * ciphertext, as recommended by RFC 5116. + * (NIST_KW doesn't have a separate tag.) + * + * \param ctx The generic cipher context. This must be initialized and + * bound to a key, with an AEAD algorithm or NIST_KW. + * \param iv The nonce to use. This must be a readable buffer of + * at least \p iv_len Bytes and may be \c NULL if \p + * iv_len is \c 0. + * \param iv_len The length of the nonce. For AEAD ciphers, this must + * satisfy the constraints imposed by the cipher used. + * For NIST_KW, this must be \c 0. + * \param ad The additional data to authenticate. This must be a + * readable buffer of at least \p ad_len Bytes, and may + * be \c NULL is \p ad_len is \c 0. + * \param ad_len The length of \p ad. For NIST_KW, this must be \c 0. + * \param input The buffer holding the input data. This must be a + * readable buffer of at least \p ilen Bytes, and may be + * \c NULL if \p ilen is \c 0. + * \param ilen The length of the input data. + * \param output The buffer for the output data. This must be a + * writable buffer of at least \p output_len Bytes, and + * must not be \c NULL. + * \param output_len The length of the \p output buffer in Bytes. For AEAD + * ciphers, this must be at least \p ilen + \p tag_len. + * For NIST_KW, this must be at least \p ilen + 8 + * (rounded up to a multiple of 8 if KWP is used); + * \p ilen + 15 is always a safe value. + * \param olen This will be filled with the actual number of Bytes + * written to the \p output buffer. This must point to a + * writable object of type \c size_t. + * \param tag_len The desired length of the authentication tag. For AEAD + * ciphers, this must match the constraints imposed by + * the cipher used, and in particular must not be \c 0. + * For NIST_KW, this must be \c 0. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on + * parameter-verification failure. + * \return A cipher-specific error code on failure. + */ +int mbedtls_cipher_auth_encrypt_ext( mbedtls_cipher_context_t *ctx, + const unsigned char *iv, size_t iv_len, + const unsigned char *ad, size_t ad_len, + const unsigned char *input, size_t ilen, + unsigned char *output, size_t output_len, + size_t *olen, size_t tag_len ); + +/** + * \brief The authenticated encryption (AEAD/NIST_KW) function. + * + * \note If the data is not authentic, then the output buffer + * is zeroed out to prevent the unauthentic plaintext being + * used, making this interface safer. + * + * \note For AEAD modes, the tag must be appended to the + * ciphertext, as recommended by RFC 5116. + * (NIST_KW doesn't have a separate tag.) + * + * \param ctx The generic cipher context. This must be initialized and + * bound to a key, with an AEAD algorithm or NIST_KW. + * \param iv The nonce to use. This must be a readable buffer of + * at least \p iv_len Bytes and may be \c NULL if \p + * iv_len is \c 0. + * \param iv_len The length of the nonce. For AEAD ciphers, this must + * satisfy the constraints imposed by the cipher used. + * For NIST_KW, this must be \c 0. + * \param ad The additional data to authenticate. This must be a + * readable buffer of at least \p ad_len Bytes, and may + * be \c NULL is \p ad_len is \c 0. + * \param ad_len The length of \p ad. For NIST_KW, this must be \c 0. + * \param input The buffer holding the input data. This must be a + * readable buffer of at least \p ilen Bytes, and may be + * \c NULL if \p ilen is \c 0. + * \param ilen The length of the input data. For AEAD ciphers this + * must be at least \p tag_len. For NIST_KW this must be + * at least \c 8. + * \param output The buffer for the output data. This must be a + * writable buffer of at least \p output_len Bytes, and + * may be \c NULL if \p output_len is \c 0. + * \param output_len The length of the \p output buffer in Bytes. For AEAD + * ciphers, this must be at least \p ilen - \p tag_len. + * For NIST_KW, this must be at least \p ilen - 8. + * \param olen This will be filled with the actual number of Bytes + * written to the \p output buffer. This must point to a + * writable object of type \c size_t. + * \param tag_len The actual length of the authentication tag. For AEAD + * ciphers, this must match the constraints imposed by + * the cipher used, and in particular must not be \c 0. + * For NIST_KW, this must be \c 0. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on + * parameter-verification failure. + * \return #MBEDTLS_ERR_CIPHER_AUTH_FAILED if data is not authentic. + * \return A cipher-specific error code on failure. + */ +int mbedtls_cipher_auth_decrypt_ext( mbedtls_cipher_context_t *ctx, + const unsigned char *iv, size_t iv_len, + const unsigned char *ad, size_t ad_len, + const unsigned char *input, size_t ilen, + unsigned char *output, size_t output_len, + size_t *olen, size_t tag_len ); +#endif /* MBEDTLS_CIPHER_MODE_AEAD || MBEDTLS_NIST_KW_C */ #ifdef __cplusplus } #endif diff --git a/Externals/mbedtls/include/mbedtls/cipher_internal.h b/Externals/mbedtls/include/mbedtls/cipher_internal.h index c6def0bef755..2484c01c7a49 100644 --- a/Externals/mbedtls/include/mbedtls/cipher_internal.h +++ b/Externals/mbedtls/include/mbedtls/cipher_internal.h @@ -6,7 +6,7 @@ * \author Adriaan de Jong */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -20,19 +20,21 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_CIPHER_WRAP_H #define MBEDTLS_CIPHER_WRAP_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "cipher.h" +#include "mbedtls/cipher.h" + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "psa/crypto.h" +#endif /* MBEDTLS_USE_PSA_CRYPTO */ #ifdef __cplusplus extern "C" { @@ -114,6 +116,29 @@ typedef struct const mbedtls_cipher_info_t *info; } mbedtls_cipher_definition_t; +#if defined(MBEDTLS_USE_PSA_CRYPTO) +typedef enum +{ + MBEDTLS_CIPHER_PSA_KEY_UNSET = 0, + MBEDTLS_CIPHER_PSA_KEY_OWNED, /* Used for PSA-based cipher contexts which */ + /* use raw key material internally imported */ + /* as a volatile key, and which hence need */ + /* to destroy that key when the context is */ + /* freed. */ + MBEDTLS_CIPHER_PSA_KEY_NOT_OWNED, /* Used for PSA-based cipher contexts */ + /* which use a key provided by the */ + /* user, and which hence will not be */ + /* destroyed when the context is freed. */ +} mbedtls_cipher_psa_key_ownership; + +typedef struct +{ + psa_algorithm_t alg; + psa_key_id_t slot; + mbedtls_cipher_psa_key_ownership slot_state; +} mbedtls_cipher_context_psa; +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + extern const mbedtls_cipher_definition_t mbedtls_cipher_definitions[]; extern int mbedtls_cipher_supported[]; diff --git a/Externals/mbedtls/include/mbedtls/cmac.h b/Externals/mbedtls/include/mbedtls/cmac.h index 9d42b3f209f9..8934886af743 100644 --- a/Externals/mbedtls/include/mbedtls/cmac.h +++ b/Externals/mbedtls/include/mbedtls/cmac.h @@ -7,7 +7,7 @@ * Authentication is defined in RFC-4493: The AES-CMAC Algorithm. */ /* - * Copyright (C) 2015-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -21,27 +21,26 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_CMAC_H #define MBEDTLS_CMAC_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "cipher.h" +#include "mbedtls/cipher.h" #ifdef __cplusplus extern "C" { #endif /* MBEDTLS_ERR_CMAC_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_CMAC_HW_ACCEL_FAILED -0x007A /**< CMAC hardware accelerator failed. */ +/** CMAC hardware accelerator failed. */ +#define MBEDTLS_ERR_CMAC_HW_ACCEL_FAILED -0x007A #define MBEDTLS_AES_BLOCK_SIZE 16 #define MBEDTLS_DES3_BLOCK_SIZE 8 @@ -75,9 +74,23 @@ struct mbedtls_cmac_context_t #endif /* !MBEDTLS_CMAC_ALT */ /** - * \brief This function sets the CMAC key, and prepares to authenticate + * \brief This function starts a new CMAC computation + * by setting the CMAC key, and preparing to authenticate * the input data. - * Must be called with an initialized cipher context. + * It must be called with an initialized cipher context. + * + * Once this function has completed, data can be supplied + * to the CMAC computation by calling + * mbedtls_cipher_cmac_update(). + * + * To start a CMAC computation using the same key as a previous + * CMAC computation, use mbedtls_cipher_cmac_finish(). + * + * \note When the CMAC implementation is supplied by an alternate + * implementation (through #MBEDTLS_CMAC_ALT), some ciphers + * may not be supported by that implementation, and thus + * return an error. Alternate implementations must support + * AES-128 and AES-256, and may support AES-192 and 3DES. * * \param ctx The cipher context used for the CMAC operation, initialized * as one of the following types: MBEDTLS_CIPHER_AES_128_ECB, @@ -97,9 +110,15 @@ int mbedtls_cipher_cmac_starts( mbedtls_cipher_context_t *ctx, * \brief This function feeds an input buffer into an ongoing CMAC * computation. * - * It is called between mbedtls_cipher_cmac_starts() or - * mbedtls_cipher_cmac_reset(), and mbedtls_cipher_cmac_finish(). - * Can be called repeatedly. + * The CMAC computation must have previously been started + * by calling mbedtls_cipher_cmac_starts() or + * mbedtls_cipher_cmac_reset(). + * + * Call this function as many times as needed to input the + * data to be authenticated. + * Once all of the required data has been input, + * call mbedtls_cipher_cmac_finish() to obtain the result + * of the CMAC operation. * * \param ctx The cipher context used for the CMAC operation. * \param input The buffer holding the input data. @@ -113,12 +132,13 @@ int mbedtls_cipher_cmac_update( mbedtls_cipher_context_t *ctx, const unsigned char *input, size_t ilen ); /** - * \brief This function finishes the CMAC operation, and writes - * the result to the output buffer. + * \brief This function finishes an ongoing CMAC operation, and + * writes the result to the output buffer. * - * It is called after mbedtls_cipher_cmac_update(). - * It can be followed by mbedtls_cipher_cmac_reset() and - * mbedtls_cipher_cmac_update(), or mbedtls_cipher_free(). + * It should be followed either by + * mbedtls_cipher_cmac_reset(), which starts another CMAC + * operation with the same key, or mbedtls_cipher_free(), + * which clears the cipher context. * * \param ctx The cipher context used for the CMAC operation. * \param output The output buffer for the CMAC checksum result. @@ -131,12 +151,14 @@ int mbedtls_cipher_cmac_finish( mbedtls_cipher_context_t *ctx, unsigned char *output ); /** - * \brief This function prepares the authentication of another - * message with the same key as the previous CMAC - * operation. + * \brief This function starts a new CMAC operation with the same + * key as the previous one. * - * It is called after mbedtls_cipher_cmac_finish() - * and before mbedtls_cipher_cmac_update(). + * It should be called after finishing the previous CMAC + * operation with mbedtls_cipher_cmac_finish(). + * After calling this function, + * call mbedtls_cipher_cmac_update() to supply the new + * CMAC operation with data. * * \param ctx The cipher context used for the CMAC operation. * @@ -156,6 +178,11 @@ int mbedtls_cipher_cmac_reset( mbedtls_cipher_context_t *ctx ); * The CMAC result is calculated as * output = generic CMAC(cmac key, input buffer). * + * \note When the CMAC implementation is supplied by an alternate + * implementation (through #MBEDTLS_CMAC_ALT), some ciphers + * may not be supported by that implementation, and thus + * return an error. Alternate implementations must support + * AES-128 and AES-256, and may support AES-192 and 3DES. * * \param cipher_info The cipher information. * \param key The CMAC key. @@ -200,6 +227,13 @@ int mbedtls_aes_cmac_prf_128( const unsigned char *key, size_t key_len, /** * \brief The CMAC checkup routine. * + * \note In case the CMAC routines are provided by an alternative + * implementation (i.e. #MBEDTLS_CMAC_ALT is defined), the + * checkup routine will succeed even if the implementation does + * not support the less widely used AES-192 or 3DES primitives. + * The self-test requires at least AES-128 and AES-256 to be + * supported by the underlying implementation. + * * \return \c 0 on success. * \return \c 1 on failure. */ diff --git a/Externals/mbedtls/include/mbedtls/compat-1.3.h b/Externals/mbedtls/include/mbedtls/compat-1.3.h index a58b47243d9c..40177512cabb 100644 --- a/Externals/mbedtls/include/mbedtls/compat-1.3.h +++ b/Externals/mbedtls/include/mbedtls/compat-1.3.h @@ -7,7 +7,7 @@ * \deprecated Use the new names directly instead */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -21,12 +21,10 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -1250,9 +1248,9 @@ #define POLARSSL_KEY_EXCHANGE_PSK MBEDTLS_KEY_EXCHANGE_PSK #define POLARSSL_KEY_EXCHANGE_RSA MBEDTLS_KEY_EXCHANGE_RSA #define POLARSSL_KEY_EXCHANGE_RSA_PSK MBEDTLS_KEY_EXCHANGE_RSA_PSK -#define POLARSSL_KEY_EXCHANGE__SOME__ECDHE_ENABLED MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED -#define POLARSSL_KEY_EXCHANGE__SOME__PSK_ENABLED MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED -#define POLARSSL_KEY_EXCHANGE__WITH_CERT__ENABLED MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED +#define POLARSSL_KEY_EXCHANGE__SOME__ECDHE_ENABLED MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED +#define POLARSSL_KEY_EXCHANGE__SOME__PSK_ENABLED MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED +#define POLARSSL_KEY_EXCHANGE__WITH_CERT__ENABLED MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED #define POLARSSL_KEY_LENGTH_DES MBEDTLS_KEY_LENGTH_DES #define POLARSSL_KEY_LENGTH_DES_EDE MBEDTLS_KEY_LENGTH_DES_EDE #define POLARSSL_KEY_LENGTH_DES_EDE3 MBEDTLS_KEY_LENGTH_DES_EDE3 diff --git a/Externals/mbedtls/include/mbedtls/config.h b/Externals/mbedtls/include/mbedtls/config.h index 654f9725e452..87b4e9192e7d 100644 --- a/Externals/mbedtls/include/mbedtls/config.h +++ b/Externals/mbedtls/include/mbedtls/config.h @@ -8,7 +8,7 @@ * memory footprint. */ /* - * Copyright (C) 2006-2018, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -22,8 +22,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_CONFIG_H @@ -139,7 +137,7 @@ * * System has time.h, time(), and an implementation for * mbedtls_platform_gmtime_r() (see below). - * The time needs to be correct (not necesarily very accurate, but at least + * The time needs to be correct (not necessarily very accurate, but at least * the date should be correct). This is used to verify the validity period of * X.509 certificates. * @@ -226,33 +224,34 @@ //#define MBEDTLS_PLATFORM_FPRINTF_ALT //#define MBEDTLS_PLATFORM_PRINTF_ALT //#define MBEDTLS_PLATFORM_SNPRINTF_ALT +//#define MBEDTLS_PLATFORM_VSNPRINTF_ALT //#define MBEDTLS_PLATFORM_NV_SEED_ALT //#define MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT /** * \def MBEDTLS_DEPRECATED_WARNING * - * Mark deprecated functions so that they generate a warning if used. - * Functions deprecated in one version will usually be removed in the next - * version. You can enable this to help you prepare the transition to a new - * major version by making sure your code is not using these functions. + * Mark deprecated functions and features so that they generate a warning if + * used. Functionality deprecated in one version will usually be removed in the + * next version. You can enable this to help you prepare the transition to a + * new major version by making sure your code is not using this functionality. * * This only works with GCC and Clang. With other compilers, you may want to * use MBEDTLS_DEPRECATED_REMOVED * - * Uncomment to get warnings on using deprecated functions. + * Uncomment to get warnings on using deprecated functions and features. */ //#define MBEDTLS_DEPRECATED_WARNING /** * \def MBEDTLS_DEPRECATED_REMOVED * - * Remove deprecated functions so that they generate an error if used. - * Functions deprecated in one version will usually be removed in the next - * version. You can enable this to help you prepare the transition to a new - * major version by making sure your code is not using these functions. + * Remove deprecated functions and features so that they generate an error if + * used. Functionality deprecated in one version will usually be removed in the + * next version. You can enable this to help you prepare the transition to a + * new major version by making sure your code is not using this functionality. * - * Uncomment to get errors on using deprecated functions. + * Uncomment to get errors on using deprecated functions and features. */ //#define MBEDTLS_DEPRECATED_REMOVED @@ -276,28 +275,52 @@ * For example, when a function accepts as input a pointer to a buffer that may * contain untrusted data, and its documentation mentions that this pointer * must not be NULL: - * - the pointer is checked to be non-NULL only if this option is enabled - * - the content of the buffer is always validated + * - The pointer is checked to be non-NULL only if this option is enabled. + * - The content of the buffer is always validated. * * When this flag is defined, if a library function receives a parameter that - * is invalid, it will: - * - invoke the macro MBEDTLS_PARAM_FAILED() which by default expands to a - * call to the function mbedtls_param_failed() - * - immediately return (with a specific error code unless the function - * returns void and can't communicate an error). - * - * When defining this flag, you also need to: - * - either provide a definition of the function mbedtls_param_failed() in - * your application (see platform_util.h for its prototype) as the library - * calls that function, but does not provide a default definition for it, - * - or provide a different definition of the macro MBEDTLS_PARAM_FAILED() - * below if the above mechanism is not flexible enough to suit your needs. - * See the documentation of this macro later in this file. + * is invalid: + * 1. The function will invoke the macro MBEDTLS_PARAM_FAILED(). + * 2. If MBEDTLS_PARAM_FAILED() did not terminate the program, the function + * will immediately return. If the function returns an Mbed TLS error code, + * the error code in this case is MBEDTLS_ERR_xxx_BAD_INPUT_DATA. + * + * When defining this flag, you also need to arrange a definition for + * MBEDTLS_PARAM_FAILED(). You can do this by any of the following methods: + * - By default, the library defines MBEDTLS_PARAM_FAILED() to call a + * function mbedtls_param_failed(), but the library does not define this + * function. If you do not make any other arrangements, you must provide + * the function mbedtls_param_failed() in your application. + * See `platform_util.h` for its prototype. + * - If you enable the macro #MBEDTLS_CHECK_PARAMS_ASSERT, then the + * library defines MBEDTLS_PARAM_FAILED(\c cond) to be `assert(cond)`. + * You can still supply an alternative definition of + * MBEDTLS_PARAM_FAILED(), which may call `assert`. + * - If you define a macro MBEDTLS_PARAM_FAILED() before including `config.h` + * or you uncomment the definition of MBEDTLS_PARAM_FAILED() in `config.h`, + * the library will call the macro that you defined and will not supply + * its own version. Note that if MBEDTLS_PARAM_FAILED() calls `assert`, + * you need to enable #MBEDTLS_CHECK_PARAMS_ASSERT so that library source + * files include ``. * * Uncomment to enable validation of application-controlled parameters. */ //#define MBEDTLS_CHECK_PARAMS +/** + * \def MBEDTLS_CHECK_PARAMS_ASSERT + * + * Allow MBEDTLS_PARAM_FAILED() to call `assert`, and make it default to + * `assert`. This macro is only used if #MBEDTLS_CHECK_PARAMS is defined. + * + * If this macro is not defined, then MBEDTLS_PARAM_FAILED() defaults to + * calling a function mbedtls_param_failed(). See the documentation of + * #MBEDTLS_CHECK_PARAMS for details. + * + * Uncomment to allow MBEDTLS_PARAM_FAILED() to call `assert`. + */ +//#define MBEDTLS_CHECK_PARAMS_ASSERT + /* \} name SECTION: System support */ /** @@ -401,10 +424,10 @@ * \note Because of a signature change, the core AES encryption and decryption routines are * currently named mbedtls_aes_internal_encrypt and mbedtls_aes_internal_decrypt, * respectively. When setting up alternative implementations, these functions should - * be overriden, but the wrapper functions mbedtls_aes_decrypt and mbedtls_aes_encrypt + * be overridden, but the wrapper functions mbedtls_aes_decrypt and mbedtls_aes_encrypt * must stay untouched. * - * \note If you use the AES_xxx_ALT macros, then is is recommended to also set + * \note If you use the AES_xxx_ALT macros, then it is recommended to also set * MBEDTLS_AES_ROM_TABLES in order to help the linker garbage-collect the AES * tables. * @@ -416,6 +439,16 @@ * dependencies on them, and considering stronger message digests * and ciphers instead. * + * \warning If both MBEDTLS_ECDSA_SIGN_ALT and MBEDTLS_ECDSA_DETERMINISTIC are + * enabled, then the deterministic ECDH signature functions pass the + * the static HMAC-DRBG as RNG to mbedtls_ecdsa_sign(). Therefore + * alternative implementations should use the RNG only for generating + * the ephemeral key and nothing else. If this is not possible, then + * MBEDTLS_ECDSA_DETERMINISTIC should be disabled and an alternative + * implementation should be provided for mbedtls_ecdsa_sign_det_ext() + * (and for mbedtls_ecdsa_sign_det() too if backward compatibility is + * desirable). + * */ //#define MBEDTLS_MD2_PROCESS_ALT //#define MBEDTLS_MD4_PROCESS_ALT @@ -451,6 +484,11 @@ * is still present and it is used for group structures not supported by the * alternative. * + * The original implementation can in addition be removed by setting the + * MBEDTLS_ECP_NO_FALLBACK option, in which case any function for which the + * corresponding MBEDTLS_ECP__FUNCTION_NAME__ALT macro is defined will not be + * able to fallback to curves not supported by the alternative implementation. + * * Any of these options become available by defining MBEDTLS_ECP_INTERNAL_ALT * and implementing the following functions: * unsigned char mbedtls_internal_ecp_grp_capable( @@ -464,21 +502,28 @@ * called before and after each point operation and provide an opportunity to * implement optimized set up and tear down instructions. * - * Example: In case you uncomment MBEDTLS_ECP_INTERNAL_ALT and - * MBEDTLS_ECP_DOUBLE_JAC_ALT, mbed TLS will still provide the ecp_double_jac - * function, but will use your mbedtls_internal_ecp_double_jac if the group is - * supported (your mbedtls_internal_ecp_grp_capable function returns 1 when - * receives it as an argument). If the group is not supported then the original - * implementation is used. The other functions and the definition of - * mbedtls_ecp_group and mbedtls_ecp_point will not change, so your - * implementation of mbedtls_internal_ecp_double_jac and - * mbedtls_internal_ecp_grp_capable must be compatible with this definition. + * Example: In case you set MBEDTLS_ECP_INTERNAL_ALT and + * MBEDTLS_ECP_DOUBLE_JAC_ALT, mbed TLS will still provide the ecp_double_jac() + * function, but will use your mbedtls_internal_ecp_double_jac() if the group + * for the operation is supported by your implementation (i.e. your + * mbedtls_internal_ecp_grp_capable() function returns 1 for this group). If the + * group is not supported by your implementation, then the original mbed TLS + * implementation of ecp_double_jac() is used instead, unless this fallback + * behaviour is disabled by setting MBEDTLS_ECP_NO_FALLBACK (in which case + * ecp_double_jac() will return MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE). + * + * The function prototypes and the definition of mbedtls_ecp_group and + * mbedtls_ecp_point will not change based on MBEDTLS_ECP_INTERNAL_ALT, so your + * implementation of mbedtls_internal_ecp__function_name__ must be compatible + * with their definitions. * * Uncomment a macro to enable alternate implementation of the corresponding * function. */ /* Required for all the functions in this section */ //#define MBEDTLS_ECP_INTERNAL_ALT +/* Turn off software fallback for curves not supported in hardware */ +//#define MBEDTLS_ECP_NO_FALLBACK /* Support for Weierstrass curves with Jacobi representation */ //#define MBEDTLS_ECP_RANDOMIZE_JAC_ALT //#define MBEDTLS_ECP_ADD_MIXED_ALT @@ -571,6 +616,29 @@ */ //#define MBEDTLS_CAMELLIA_SMALL_MEMORY +/** + * \def MBEDTLS_CHECK_RETURN_WARNING + * + * If this macro is defined, emit a compile-time warning if application code + * calls a function without checking its return value, but the return value + * should generally be checked in portable applications. + * + * This is only supported on platforms where #MBEDTLS_CHECK_RETURN is + * implemented. Otherwise this option has no effect. + * + * Uncomment to get warnings on using fallible functions without checking + * their return value. + * + * \note This feature is a work in progress. + * Warnings will be added to more functions in the future. + * + * \note A few functions are considered critical, and ignoring the return + * value of these functions will trigger a warning even if this + * macro is not defined. To completely disable return value check + * warnings, define #MBEDTLS_CHECK_RETURN with an empty expansion. + */ +//#define MBEDTLS_CHECK_RETURN_WARNING + /** * \def MBEDTLS_CIPHER_MODE_CBC * @@ -655,6 +723,13 @@ #define MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN #define MBEDTLS_CIPHER_PADDING_ZEROS +/** \def MBEDTLS_CTR_DRBG_USE_128_BIT_KEY + * + * Uncomment this macro to use a 128-bit key in the CTR_DRBG module. + * By default, CTR_DRBG uses a 256-bit key. + */ +//#define MBEDTLS_CTR_DRBG_USE_128_BIT_KEY + /** * \def MBEDTLS_ENABLE_WEAK_CIPHERSUITES * @@ -714,6 +789,7 @@ * * Comment macros to disable the curve and functions for it */ +/* Short Weierstrass curves (supporting ECP, ECDH, ECDSA) */ #define MBEDTLS_ECP_DP_SECP192R1_ENABLED #define MBEDTLS_ECP_DP_SECP224R1_ENABLED #define MBEDTLS_ECP_DP_SECP256R1_ENABLED @@ -725,6 +801,7 @@ #define MBEDTLS_ECP_DP_BP256R1_ENABLED #define MBEDTLS_ECP_DP_BP384R1_ENABLED #define MBEDTLS_ECP_DP_BP512R1_ENABLED +/* Montgomery curves (supporting ECP) */ #define MBEDTLS_ECP_DP_CURVE25519_ENABLED #define MBEDTLS_ECP_DP_CURVE448_ENABLED @@ -739,6 +816,28 @@ */ #define MBEDTLS_ECP_NIST_OPTIM +/** + * \def MBEDTLS_ECP_NO_INTERNAL_RNG + * + * When this option is disabled, mbedtls_ecp_mul() will make use of an + * internal RNG when called with a NULL \c f_rng argument, in order to protect + * against some side-channel attacks. + * + * This protection introduces a dependency of the ECP module on one of the + * DRBG modules. For very constrained implementations that don't require this + * protection (for example, because you're only doing signature verification, + * so not manipulating any secret, or because local/physical side-channel + * attacks are outside your threat model), it might be desirable to get rid of + * that dependency. + * + * \warning Enabling this option makes some uses of ECP vulnerable to some + * side-channel attacks. Only enable it if you know that's not a problem for + * your use case. + * + * Uncomment this macro to disable some counter-measures in ECP. + */ +//#define MBEDTLS_ECP_NO_INTERNAL_RNG + /** * \def MBEDTLS_ECP_RESTARTABLE * @@ -759,10 +858,39 @@ * * \note This option only works with the default software implementation of * elliptic curve functionality. It is incompatible with - * MBEDTLS_ECP_ALT, MBEDTLS_ECDH_XXX_ALT and MBEDTLS_ECDSA_XXX_ALT. + * MBEDTLS_ECP_ALT, MBEDTLS_ECDH_XXX_ALT, MBEDTLS_ECDSA_XXX_ALT + * and MBEDTLS_ECDH_LEGACY_CONTEXT. */ //#define MBEDTLS_ECP_RESTARTABLE +/** + * \def MBEDTLS_ECDH_LEGACY_CONTEXT + * + * Use a backward compatible ECDH context. + * + * Mbed TLS supports two formats for ECDH contexts (#mbedtls_ecdh_context + * defined in `ecdh.h`). For most applications, the choice of format makes + * no difference, since all library functions can work with either format, + * except that the new format is incompatible with MBEDTLS_ECP_RESTARTABLE. + + * The new format used when this option is disabled is smaller + * (56 bytes on a 32-bit platform). In future versions of the library, it + * will support alternative implementations of ECDH operations. + * The new format is incompatible with applications that access + * context fields directly and with restartable ECP operations. + * + * Define this macro if you enable MBEDTLS_ECP_RESTARTABLE or if you + * want to access ECDH context fields directly. Otherwise you should + * comment out this macro definition. + * + * This option has no effect if #MBEDTLS_ECDH_C is not enabled. + * + * \note This configuration option is experimental. Future versions of the + * library may modify the way the ECDH context layout is configured + * and may modify the layout of the new context type. + */ +#define MBEDTLS_ECDH_LEGACY_CONTEXT + /** * \def MBEDTLS_ECDSA_DETERMINISTIC * @@ -771,7 +899,7 @@ * may result in a compromise of the long-term signing key. This is avoided by * the deterministic variant. * - * Requires: MBEDTLS_HMAC_DRBG_C + * Requires: MBEDTLS_HMAC_DRBG_C, MBEDTLS_ECDSA_C * * Comment this macro to disable deterministic ECDSA. */ @@ -990,7 +1118,7 @@ * * Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS. * - * Requires: MBEDTLS_ECDH_C, MBEDTLS_X509_CRT_PARSE_C + * Requires: MBEDTLS_ECDH_C, MBEDTLS_ECDSA_C, MBEDTLS_X509_CRT_PARSE_C * * This enables the following ciphersuites (if other requisites are * enabled as well): @@ -1014,7 +1142,7 @@ * * Enable the ECDH-RSA based ciphersuite modes in SSL / TLS. * - * Requires: MBEDTLS_ECDH_C, MBEDTLS_X509_CRT_PARSE_C + * Requires: MBEDTLS_ECDH_C, MBEDTLS_RSA_C, MBEDTLS_X509_CRT_PARSE_C * * This enables the following ciphersuites (if other requisites are * enabled as well): @@ -1165,6 +1293,18 @@ */ //#define MBEDTLS_ENTROPY_NV_SEED +/* MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER + * + * Enable key identifiers that encode a key owner identifier. + * + * The owner of a key is identified by a value of type ::mbedtls_key_owner_id_t + * which is currently hard-coded to be int32_t. + * + * Note that this option is meant for internal use only and may be removed + * without notice. It is incompatible with MBEDTLS_USE_PSA_CRYPTO. + */ +//#define MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER + /** * \def MBEDTLS_MEMORY_DEBUG * @@ -1221,6 +1361,114 @@ */ #define MBEDTLS_PKCS1_V21 +/** \def MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS + * + * Enable support for platform built-in keys. If you enable this feature, + * you must implement the function mbedtls_psa_platform_get_builtin_key(). + * See the documentation of that function for more information. + * + * Built-in keys are typically derived from a hardware unique key or + * stored in a secure element. + * + * Requires: MBEDTLS_PSA_CRYPTO_C. + * + * \warning This interface is experimental and may change or be removed + * without notice. + */ +//#define MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS + +/** \def MBEDTLS_PSA_CRYPTO_CLIENT + * + * Enable support for PSA crypto client. + * + * \note This option allows to include the code necessary for a PSA + * crypto client when the PSA crypto implementation is not included in + * the library (MBEDTLS_PSA_CRYPTO_C disabled). The code included is the + * code to set and get PSA key attributes. + * The development of PSA drivers partially relying on the library to + * fulfill the hardware gaps is another possible usage of this option. + * + * \warning This interface is experimental and may change or be removed + * without notice. + */ +//#define MBEDTLS_PSA_CRYPTO_CLIENT + +/** \def MBEDTLS_PSA_CRYPTO_DRIVERS + * + * Enable support for the experimental PSA crypto driver interface. + * + * Requires: MBEDTLS_PSA_CRYPTO_C + * + * \warning This interface is experimental and may change or be removed + * without notice. + */ +//#define MBEDTLS_PSA_CRYPTO_DRIVERS + +/** \def MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG + * + * Make the PSA Crypto module use an external random generator provided + * by a driver, instead of Mbed TLS's entropy and DRBG modules. + * + * \note This random generator must deliver random numbers with cryptographic + * quality and high performance. It must supply unpredictable numbers + * with a uniform distribution. The implementation of this function + * is responsible for ensuring that the random generator is seeded + * with sufficient entropy. If you have a hardware TRNG which is slow + * or delivers non-uniform output, declare it as an entropy source + * with mbedtls_entropy_add_source() instead of enabling this option. + * + * If you enable this option, you must configure the type + * ::mbedtls_psa_external_random_context_t in psa/crypto_platform.h + * and define a function called mbedtls_psa_external_get_random() + * with the following prototype: + * ``` + * psa_status_t mbedtls_psa_external_get_random( + * mbedtls_psa_external_random_context_t *context, + * uint8_t *output, size_t output_size, size_t *output_length); + * ); + * ``` + * The \c context value is initialized to 0 before the first call. + * The function must fill the \c output buffer with \p output_size bytes + * of random data and set \c *output_length to \p output_size. + * + * Requires: MBEDTLS_PSA_CRYPTO_C + * + * \warning If you enable this option, code that uses the PSA cryptography + * interface will not use any of the entropy sources set up for + * the entropy module, nor the NV seed that MBEDTLS_ENTROPY_NV_SEED + * enables. + * + * \note This option is experimental and may be removed without notice. + */ +//#define MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG + +/** + * \def MBEDTLS_PSA_CRYPTO_SPM + * + * When MBEDTLS_PSA_CRYPTO_SPM is defined, the code is built for SPM (Secure + * Partition Manager) integration which separates the code into two parts: a + * NSPE (Non-Secure Process Environment) and an SPE (Secure Process + * Environment). + * + * Module: library/psa_crypto.c + * Requires: MBEDTLS_PSA_CRYPTO_C + * + */ +//#define MBEDTLS_PSA_CRYPTO_SPM + +/** + * \def MBEDTLS_PSA_INJECT_ENTROPY + * + * Enable support for entropy injection at first boot. This feature is + * required on systems that do not have a built-in entropy source (TRNG). + * This feature is currently not supported on systems that have a built-in + * entropy source. + * + * Requires: MBEDTLS_PSA_CRYPTO_STORAGE_C, MBEDTLS_ENTROPY_NV_SEED + * + */ +//#define MBEDTLS_PSA_INJECT_ENTROPY + /** * \def MBEDTLS_RSA_NO_CRT * @@ -1255,6 +1503,28 @@ */ //#define MBEDTLS_SHA256_SMALLER +/** + * \def MBEDTLS_SHA512_SMALLER + * + * Enable an implementation of SHA-512 that has lower ROM footprint but also + * lower performance. + * + * Uncomment to enable the smaller implementation of SHA512. + */ +//#define MBEDTLS_SHA512_SMALLER + +/** + * \def MBEDTLS_SHA512_NO_SHA384 + * + * Disable the SHA-384 option of the SHA-512 module. Use this to save some + * code size on devices that don't use SHA-384. + * + * Requires: MBEDTLS_SHA512_C + * + * Uncomment to disable SHA-384 + */ +//#define MBEDTLS_SHA512_NO_SHA384 + /** * \def MBEDTLS_SSL_ALL_ALERT_MESSAGES * @@ -1269,6 +1539,48 @@ */ #define MBEDTLS_SSL_ALL_ALERT_MESSAGES +/** + * \def MBEDTLS_SSL_RECORD_CHECKING + * + * Enable the function mbedtls_ssl_check_record() which can be used to check + * the validity and authenticity of an incoming record, to verify that it has + * not been seen before. These checks are performed without modifying the + * externally visible state of the SSL context. + * + * See mbedtls_ssl_check_record() for more information. + * + * Uncomment to enable support for record checking. + */ +#define MBEDTLS_SSL_RECORD_CHECKING + +/** + * \def MBEDTLS_SSL_DTLS_CONNECTION_ID + * + * Enable support for the DTLS Connection ID extension + * (version draft-ietf-tls-dtls-connection-id-05, + * https://tools.ietf.org/html/draft-ietf-tls-dtls-connection-id-05) + * which allows to identify DTLS connections across changes + * in the underlying transport. + * + * Setting this option enables the SSL APIs `mbedtls_ssl_set_cid()`, + * `mbedtls_ssl_get_peer_cid()` and `mbedtls_ssl_conf_cid()`. + * See the corresponding documentation for more information. + * + * \warning The Connection ID extension is still in draft state. + * We make no stability promises for the availability + * or the shape of the API controlled by this option. + * + * The maximum lengths of outgoing and incoming CIDs can be configured + * through the options + * - MBEDTLS_SSL_CID_OUT_LEN_MAX + * - MBEDTLS_SSL_CID_IN_LEN_MAX. + * + * Requires: MBEDTLS_SSL_PROTO_DTLS + * + * Uncomment to enable the Connection ID extension. + */ +//#define MBEDTLS_SSL_DTLS_CONNECTION_ID + /** * \def MBEDTLS_SSL_ASYNC_PRIVATE * @@ -1280,6 +1592,33 @@ */ //#define MBEDTLS_SSL_ASYNC_PRIVATE +/** + * \def MBEDTLS_SSL_CONTEXT_SERIALIZATION + * + * Enable serialization of the TLS context structures, through use of the + * functions mbedtls_ssl_context_save() and mbedtls_ssl_context_load(). + * + * This pair of functions allows one side of a connection to serialize the + * context associated with the connection, then free or re-use that context + * while the serialized state is persisted elsewhere, and finally deserialize + * that state to a live context for resuming read/write operations on the + * connection. From a protocol perspective, the state of the connection is + * unaffected, in particular this is entirely transparent to the peer. + * + * Note: this is distinct from TLS session resumption, which is part of the + * protocol and fully visible by the peer. TLS session resumption enables + * establishing new connections associated to a saved session with shorter, + * lighter handshakes, while context serialization is a local optimization in + * handling a single, potentially long-lived connection. + * + * Enabling these APIs makes some SSL structures larger, as 64 extra bytes are + * saved after the handshake to allow for more efficient serialization, so if + * you don't need this feature you'll save RAM by disabling it. + * + * Comment to disable the context serialization APIs. + */ +#define MBEDTLS_SSL_CONTEXT_SERIALIZATION + /** * \def MBEDTLS_SSL_DEBUG_ALL * @@ -1316,8 +1655,8 @@ /** \def MBEDTLS_SSL_EXTENDED_MASTER_SECRET * - * Enable support for Extended Master Secret, aka Session Hash - * (draft-ietf-tls-session-hash-02). + * Enable support for RFC 7627: Session Hash and Extended Master Secret + * Extension. * * This was introduced as "the proper fix" to the Triple Handshake familiy of * attacks, but it is recommended to always use it (even if you disable @@ -1335,7 +1674,8 @@ /** * \def MBEDTLS_SSL_FALLBACK_SCSV * - * Enable support for FALLBACK_SCSV (draft-ietf-tls-downgrade-scsv-00). + * Enable support for RFC 7507: Fallback Signaling Cipher Suite Value (SCSV) + * for Preventing Protocol Downgrade Attacks. * * For servers, it is recommended to always enable this, unless you support * only one version of TLS, or know for sure that none of your clients @@ -1349,12 +1689,37 @@ */ #define MBEDTLS_SSL_FALLBACK_SCSV +/** + * \def MBEDTLS_SSL_KEEP_PEER_CERTIFICATE + * + * This option controls the availability of the API mbedtls_ssl_get_peer_cert() + * giving access to the peer's certificate after completion of the handshake. + * + * Unless you need mbedtls_ssl_peer_cert() in your application, it is + * recommended to disable this option for reduced RAM usage. + * + * \note If this option is disabled, mbedtls_ssl_get_peer_cert() is still + * defined, but always returns \c NULL. + * + * \note This option has no influence on the protection against the + * triple handshake attack. Even if it is disabled, Mbed TLS will + * still ensure that certificates do not change during renegotiation, + * for exaple by keeping a hash of the peer's certificate. + * + * Comment this macro to disable storing the peer's certificate + * after the handshake. + */ +#define MBEDTLS_SSL_KEEP_PEER_CERTIFICATE + /** * \def MBEDTLS_SSL_HW_RECORD_ACCEL * * Enable hooking functions in SSL module for hardware acceleration of * individual records. * + * \deprecated This option is deprecated and will be removed in a future + * version of Mbed TLS. + * * Uncomment this macro to enable hooking functions. */ //#define MBEDTLS_SSL_HW_RECORD_ACCEL @@ -1399,6 +1764,9 @@ * Enable support for receiving and parsing SSLv2 Client Hello messages for the * SSL Server module (MBEDTLS_SSL_SRV_C). * + * \deprecated This option is deprecated and will be removed in a future + * version of Mbed TLS. + * * Uncomment this macro to enable support for SSLv2 Client Hello messages. */ //#define MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO @@ -1430,6 +1798,9 @@ * Requires: MBEDTLS_MD5_C * MBEDTLS_SHA1_C * + * \deprecated This option is deprecated and will be removed in a future + * version of Mbed TLS. + * * Comment this macro to disable support for SSL 3.0 */ //#define MBEDTLS_SSL_PROTO_SSL3 @@ -1470,6 +1841,25 @@ */ #define MBEDTLS_SSL_PROTO_TLS1_2 +/** + * \def MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL + * + * This macro is used to selectively enable experimental parts + * of the code that contribute to the ongoing development of + * the prototype TLS 1.3 and DTLS 1.3 implementation, and provide + * no other purpose. + * + * \warning TLS 1.3 and DTLS 1.3 aren't yet supported in Mbed TLS, + * and no feature exposed through this macro is part of the + * public API. In particular, features under the control + * of this macro are experimental and don't come with any + * stability guarantees. + * + * Uncomment this macro to enable experimental and partial + * functionality specific to TLS 1.3. + */ +//#define MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL + /** * \def MBEDTLS_SSL_PROTO_DTLS * @@ -1527,6 +1917,37 @@ */ #define MBEDTLS_SSL_DTLS_HELLO_VERIFY +/** + * \def MBEDTLS_SSL_DTLS_SRTP + * + * Enable support for negotiation of DTLS-SRTP (RFC 5764) + * through the use_srtp extension. + * + * \note This feature provides the minimum functionality required + * to negotiate the use of DTLS-SRTP and to allow the derivation of + * the associated SRTP packet protection key material. + * In particular, the SRTP packet protection itself, as well as the + * demultiplexing of RTP and DTLS packets at the datagram layer + * (see Section 5 of RFC 5764), are not handled by this feature. + * Instead, after successful completion of a handshake negotiating + * the use of DTLS-SRTP, the extended key exporter API + * mbedtls_ssl_conf_export_keys_ext_cb() should be used to implement + * the key exporter described in Section 4.2 of RFC 5764 and RFC 5705 + * (this is implemented in the SSL example programs). + * The resulting key should then be passed to an SRTP stack. + * + * Setting this option enables the runtime API + * mbedtls_ssl_conf_dtls_srtp_protection_profiles() + * through which the supported DTLS-SRTP protection + * profiles can be configured. You must call this API at + * runtime if you wish to negotiate the use of DTLS-SRTP. + * + * Requires: MBEDTLS_SSL_PROTO_DTLS + * + * Uncomment this to enable support for use_srtp extension. + */ +//#define MBEDTLS_SSL_DTLS_SRTP + /** * \def MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE * @@ -1558,7 +1979,7 @@ * \def MBEDTLS_SSL_SESSION_TICKETS * * Enable support for RFC 5077 session tickets in SSL. - * Client-side, provides full support for session tickets (maintainance of a + * Client-side, provides full support for session tickets (maintenance of a * session store remains the responsibility of the application, though). * Server-side, you also need to provide callbacks for writing and parsing * tickets, including authenticated encryption and key management. Example @@ -1603,8 +2024,8 @@ * * Fallback to old (pre-2.7), non-conforming implementation of the truncated * HMAC extension which also truncates the HMAC key. Note that this option is - * only meant for a transitory upgrade period and is likely to be removed in - * a future version of the library. + * only meant for a transitory upgrade period and will be removed in a future + * version of the library. * * \warning The old implementation is non-compliant and has a security weakness * (2^80 brute force attack on the HMAC key used for a single, @@ -1613,7 +2034,7 @@ * bandwidth, and (2) the peer is an Mbed TLS stack that doesn't use * the fixed implementation yet (pre-2.7). * - * \deprecated This option is deprecated and will likely be removed in a + * \deprecated This option is deprecated and will be removed in a * future version of Mbed TLS. * * Uncomment to fallback to old, non-compliant truncated HMAC implementation. @@ -1622,6 +2043,72 @@ */ //#define MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT +/** + * \def MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH + * + * When this option is enabled, the SSL buffer will be resized automatically + * based on the negotiated maximum fragment length in each direction. + * + * Requires: MBEDTLS_SSL_MAX_FRAGMENT_LENGTH + */ +//#define MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH + +/** + * \def MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN + * + * Enable testing of the constant-flow nature of some sensitive functions with + * clang's MemorySanitizer. This causes some existing tests to also test + * this non-functional property of the code under test. + * + * This setting requires compiling with clang -fsanitize=memory. The test + * suites can then be run normally. + * + * \warning This macro is only used for extended testing; it is not considered + * part of the library's API, so it may change or disappear at any time. + * + * Uncomment to enable testing of the constant-flow nature of selected code. + */ +//#define MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN + +/** + * \def MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND + * + * Enable testing of the constant-flow nature of some sensitive functions with + * valgrind's memcheck tool. This causes some existing tests to also test + * this non-functional property of the code under test. + * + * This setting requires valgrind headers for building, and is only useful for + * testing if the tests suites are run with valgrind's memcheck. This can be + * done for an individual test suite with 'valgrind ./test_suite_xxx', or when + * using CMake, this can be done for all test suites with 'make memcheck'. + * + * \warning This macro is only used for extended testing; it is not considered + * part of the library's API, so it may change or disappear at any time. + * + * Uncomment to enable testing of the constant-flow nature of selected code. + */ +//#define MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND + +/** + * \def MBEDTLS_TEST_HOOKS + * + * Enable features for invasive testing such as introspection functions and + * hooks for fault injection. This enables additional unit tests. + * + * Merely enabling this feature should not change the behavior of the product. + * It only adds new code, and new branching points where the default behavior + * is the same as when this feature is disabled. + * However, this feature increases the attack surface: there is an added + * risk of vulnerabilities, and more gadgets that can make exploits easier. + * Therefore this feature must never be enabled in production. + * + * See `docs/architecture/testing/mbed-crypto-invasive-testing.md` for more + * information. + * + * Uncomment to enable invasive tests. + */ +//#define MBEDTLS_TEST_HOOKS + /** * \def MBEDTLS_THREADING_ALT * @@ -1644,6 +2131,49 @@ */ //#define MBEDTLS_THREADING_PTHREAD +/** + * \def MBEDTLS_USE_PSA_CRYPTO + * + * Make the X.509 and TLS library use PSA for cryptographic operations, and + * enable new APIs for using keys handled by PSA Crypto. + * + * \note Development of this option is currently in progress, and parts of Mbed + * TLS's X.509 and TLS modules are not ported to PSA yet. However, these parts + * will still continue to work as usual, so enabling this option should not + * break backwards compatibility. + * + * \note See docs/use-psa-crypto.md for a complete description of what this + * option currently does, and of parts that are not affected by it so far. + * + * \warning This option enables new Mbed TLS APIs which are currently + * considered experimental and may change in incompatible ways at any time. + * That is, the APIs enabled by this option are not covered by the usual + * promises of API stability. + * + * Requires: MBEDTLS_PSA_CRYPTO_C. + * + * Uncomment this to enable internal use of PSA Crypto and new associated APIs. + */ +//#define MBEDTLS_USE_PSA_CRYPTO + +/** + * \def MBEDTLS_PSA_CRYPTO_CONFIG + * + * This setting allows support for cryptographic mechanisms through the PSA + * API to be configured separately from support through the mbedtls API. + * + * Uncomment this to enable use of PSA Crypto configuration settings which + * can be found in include/psa/crypto_config.h. + * + * If you enable this option and write your own configuration file, you must + * include mbedtls/config_psa.h in your configuration file. The default + * provided mbedtls/config.h contains the necessary inclusion. + * + * This feature is still experimental and is not ready for production since + * it is not completed. + */ +//#define MBEDTLS_PSA_CRYPTO_CONFIG + /** * \def MBEDTLS_VERSION_FEATURES * @@ -1679,6 +2209,25 @@ */ //#define MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION +/** + * \def MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK + * + * If set, this enables the X.509 API `mbedtls_x509_crt_verify_with_ca_cb()` + * and the SSL API `mbedtls_ssl_conf_ca_cb()` which allow users to configure + * the set of trusted certificates through a callback instead of a linked + * list. + * + * This is useful for example in environments where a large number of trusted + * certificates is present and storing them in a linked list isn't efficient + * enough, or when the set of trusted certificates changes frequently. + * + * See the documentation of `mbedtls_x509_crt_verify_with_ca_cb()` and + * `mbedtls_ssl_conf_ca_cb()` for more information. + * + * Uncomment to enable trusted certificate callbacks. + */ +//#define MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK + /** * \def MBEDTLS_X509_CHECK_KEY_USAGE * @@ -1724,7 +2273,7 @@ * * \warning TLS-level compression MAY REDUCE SECURITY! See for example the * CRIME attack. Before enabling this option, you should examine with care if - * CRIME or similar exploits may be a applicable to your use case. + * CRIME or similar exploits may be applicable to your use case. * * \note Currently compression can't be used with DTLS. * @@ -2103,6 +2652,11 @@ * Enable the CMAC (Cipher-based Message Authentication Code) mode for block * ciphers. * + * \note When #MBEDTLS_CMAC_ALT is active, meaning that the underlying + * implementation of the CMAC algorithm is provided by an alternate + * implementation, that alternate implementation may opt to not support + * AES-192 or 3DES as underlying block ciphers for the CMAC operation. + * * Module: library/cmac.c * * Requires: MBEDTLS_AES_C or MBEDTLS_DES_C @@ -2115,7 +2669,11 @@ * * Enable the CTR_DRBG AES-based random generator. * The CTR_DRBG generator uses AES-256 by default. - * To use AES-128 instead, enable MBEDTLS_CTR_DRBG_USE_128_BIT_KEY below. + * To use AES-128 instead, enable \c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY above. + * + * \note To achieve a 256-bit security strength with CTR_DRBG, + * you must use AES-256 *and* use sufficient entropy. + * See ctr_drbg.h for more details. * * Module: library/ctr_drbg.c * Caller: @@ -2217,7 +2775,9 @@ * This module is used by the following key exchanges: * ECDHE-ECDSA * - * Requires: MBEDTLS_ECP_C, MBEDTLS_ASN1_WRITE_C, MBEDTLS_ASN1_PARSE_C + * Requires: MBEDTLS_ECP_C, MBEDTLS_ASN1_WRITE_C, MBEDTLS_ASN1_PARSE_C, + * and at least one MBEDTLS_ECP_DP_XXX_ENABLED for a + * short Weierstrass curve. */ #define MBEDTLS_ECDSA_C @@ -2283,11 +2843,11 @@ /** * \def MBEDTLS_GCM_C * - * Enable the Galois/Counter Mode (GCM) for AES. + * Enable the Galois/Counter Mode (GCM). * * Module: library/gcm.c * - * Requires: MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C + * Requires: MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C or MBEDTLS_ARIA_C * * This module enables the AES-GCM and CAMELLIA-GCM ciphersuites, if other * requisites are enabled as well. @@ -2594,7 +3154,10 @@ /** * \def MBEDTLS_PKCS11_C * - * Enable wrapper for PKCS#11 smartcard support. + * Enable wrapper for PKCS#11 smartcard support via the pkcs11-helper library. + * + * \deprecated This option is deprecated and will be removed in a future + * version of Mbed TLS. * * Module: library/pkcs11.c * Caller: library/pk.c @@ -2652,6 +3215,61 @@ */ #define MBEDTLS_POLY1305_C +/** + * \def MBEDTLS_PSA_CRYPTO_C + * + * Enable the Platform Security Architecture cryptography API. + * + * Module: library/psa_crypto.c + * + * Requires: either MBEDTLS_CTR_DRBG_C and MBEDTLS_ENTROPY_C, + * or MBEDTLS_HMAC_DRBG_C and MBEDTLS_ENTROPY_C, + * or MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG. + * + */ +#define MBEDTLS_PSA_CRYPTO_C + +/** + * \def MBEDTLS_PSA_CRYPTO_SE_C + * + * Enable secure element support in the Platform Security Architecture + * cryptography API. + * + * \warning This feature is not yet suitable for production. It is provided + * for API evaluation and testing purposes only. + * + * Module: library/psa_crypto_se.c + * + * Requires: MBEDTLS_PSA_CRYPTO_C, MBEDTLS_PSA_CRYPTO_STORAGE_C + * + */ +//#define MBEDTLS_PSA_CRYPTO_SE_C + +/** + * \def MBEDTLS_PSA_CRYPTO_STORAGE_C + * + * Enable the Platform Security Architecture persistent key storage. + * + * Module: library/psa_crypto_storage.c + * + * Requires: MBEDTLS_PSA_CRYPTO_C, + * either MBEDTLS_PSA_ITS_FILE_C or a native implementation of + * the PSA ITS interface + */ +#define MBEDTLS_PSA_CRYPTO_STORAGE_C + +/** + * \def MBEDTLS_PSA_ITS_FILE_C + * + * Enable the emulation of the Platform Security Architecture + * Internal Trusted Storage (PSA ITS) over files. + * + * Module: library/psa_its_file.c + * + * Requires: MBEDTLS_FS_IO + */ +#define MBEDTLS_PSA_ITS_FILE_C + /** * \def MBEDTLS_RIPEMD160_C * @@ -2998,7 +3616,7 @@ */ /* MPI / BIGNUM options */ -//#define MBEDTLS_MPI_WINDOW_SIZE 6 /**< Maximum windows size used. */ +//#define MBEDTLS_MPI_WINDOW_SIZE 6 /**< Maximum window size used. */ //#define MBEDTLS_MPI_MAX_SIZE 1024 /**< Maximum number of bytes for usable MPIs. */ /* CTR_DRBG options */ @@ -3007,7 +3625,6 @@ //#define MBEDTLS_CTR_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */ //#define MBEDTLS_CTR_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */ //#define MBEDTLS_CTR_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */ -//#define MBEDTLS_CTR_DRBG_USE_128_BIT_KEY /**< Use 128-bit key for CTR_DRBG - may reduce security (see ctr_drbg.h) */ /* HMAC_DRBG options */ //#define MBEDTLS_HMAC_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */ @@ -3016,8 +3633,8 @@ //#define MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */ /* ECP options */ -//#define MBEDTLS_ECP_MAX_BITS 521 /**< Maximum bit size of groups */ -//#define MBEDTLS_ECP_WINDOW_SIZE 6 /**< Maximum window size used */ +//#define MBEDTLS_ECP_MAX_BITS 521 /**< Maximum bit size of groups. Normally determined automatically from the configured curves. */ +//#define MBEDTLS_ECP_WINDOW_SIZE 4 /**< Maximum window size used */ //#define MBEDTLS_ECP_FIXED_POINT_OPTIM 1 /**< Enable fixed-point speed-up */ /* Entropy options */ @@ -3036,7 +3653,7 @@ //#define MBEDTLS_PLATFORM_STD_TIME time /**< Default time to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */ //#define MBEDTLS_PLATFORM_STD_FPRINTF fprintf /**< Default fprintf to use, can be undefined */ //#define MBEDTLS_PLATFORM_STD_PRINTF printf /**< Default printf to use, can be undefined */ -/* Note: your snprintf must correclty zero-terminate the buffer! */ +/* Note: your snprintf must correctly zero-terminate the buffer! */ //#define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf /**< Default snprintf to use, can be undefined */ //#define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS 0 /**< Default exit value to use, can be undefined */ //#define MBEDTLS_PLATFORM_STD_EXIT_FAILURE 1 /**< Default exit value to use, can be undefined */ @@ -3053,20 +3670,24 @@ //#define MBEDTLS_PLATFORM_TIME_TYPE_MACRO time_t /**< Default time macro to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */ //#define MBEDTLS_PLATFORM_FPRINTF_MACRO fprintf /**< Default fprintf macro to use, can be undefined */ //#define MBEDTLS_PLATFORM_PRINTF_MACRO printf /**< Default printf macro to use, can be undefined */ -/* Note: your snprintf must correclty zero-terminate the buffer! */ +/* Note: your snprintf must correctly zero-terminate the buffer! */ //#define MBEDTLS_PLATFORM_SNPRINTF_MACRO snprintf /**< Default snprintf macro to use, can be undefined */ +//#define MBEDTLS_PLATFORM_VSNPRINTF_MACRO vsnprintf /**< Default vsnprintf macro to use, can be undefined */ //#define MBEDTLS_PLATFORM_NV_SEED_READ_MACRO mbedtls_platform_std_nv_seed_read /**< Default nv_seed_read function to use, can be undefined */ //#define MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO mbedtls_platform_std_nv_seed_write /**< Default nv_seed_write function to use, can be undefined */ /** * \brief This macro is invoked by the library when an invalid parameter - * is detected that is only checked with MBEDTLS_CHECK_PARAMS + * is detected that is only checked with #MBEDTLS_CHECK_PARAMS * (see the documentation of that option for context). * - * When you leave this undefined here, a default definition is - * provided that invokes the function mbedtls_param_failed(), - * which is declared in platform_util.h for the benefit of the - * library, but that you need to define in your application. + * When you leave this undefined here, the library provides + * a default definition. If the macro #MBEDTLS_CHECK_PARAMS_ASSERT + * is defined, the default definition is `assert(cond)`, + * otherwise the default definition calls a function + * mbedtls_param_failed(). This function is declared in + * `platform_util.h` for the benefit of the library, but + * you need to define in your application. * * When you define this here, this replaces the default * definition in platform_util.h (which no longer declares the @@ -3075,6 +3696,9 @@ * particular, that all the necessary declarations are visible * from within the library - you can ensure that by providing * them in this file next to the macro definition). + * If you define this macro to call `assert`, also define + * #MBEDTLS_CHECK_PARAMS_ASSERT so that library source files + * include ``. * * Note that you may define this macro to expand to nothing, in * which case you don't have to worry about declarations or @@ -3088,6 +3712,53 @@ */ //#define MBEDTLS_PARAM_FAILED( cond ) assert( cond ) +/** \def MBEDTLS_CHECK_RETURN + * + * This macro is used at the beginning of the declaration of a function + * to indicate that its return value should be checked. It should + * instruct the compiler to emit a warning or an error if the function + * is called without checking its return value. + * + * There is a default implementation for popular compilers in platform_util.h. + * You can override the default implementation by defining your own here. + * + * If the implementation here is empty, this will effectively disable the + * checking of functions' return values. + */ +//#define MBEDTLS_CHECK_RETURN __attribute__((__warn_unused_result__)) + +/** \def MBEDTLS_IGNORE_RETURN + * + * This macro requires one argument, which should be a C function call. + * If that function call would cause a #MBEDTLS_CHECK_RETURN warning, this + * warning is suppressed. + */ +//#define MBEDTLS_IGNORE_RETURN( result ) ((void) !(result)) + +/* PSA options */ +/** + * Use HMAC_DRBG with the specified hash algorithm for HMAC_DRBG for the + * PSA crypto subsystem. + * + * If this option is unset: + * - If CTR_DRBG is available, the PSA subsystem uses it rather than HMAC_DRBG. + * - Otherwise, the PSA subsystem uses HMAC_DRBG with either + * #MBEDTLS_MD_SHA512 or #MBEDTLS_MD_SHA256 based on availability and + * on unspecified heuristics. + */ +//#define MBEDTLS_PSA_HMAC_DRBG_MD_TYPE MBEDTLS_MD_SHA256 + +/** \def MBEDTLS_PSA_KEY_SLOT_COUNT + * Restrict the PSA library to supporting a maximum amount of simultaneously + * loaded keys. A loaded key is a key stored by the PSA Crypto core as a + * volatile key, or a persistent key which is loaded temporarily by the + * library as part of a crypto operation in flight. + * + * If this option is unset, the library will fall back to a default value of + * 32 keys. + */ +//#define MBEDTLS_PSA_KEY_SLOT_COUNT 32 + /* SSL Cache options */ //#define MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT 86400 /**< 1 day */ //#define MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES 50 /**< Maximum entries in cache */ @@ -3145,6 +3816,53 @@ */ //#define MBEDTLS_SSL_IN_CONTENT_LEN 16384 +/** \def MBEDTLS_SSL_CID_IN_LEN_MAX + * + * The maximum length of CIDs used for incoming DTLS messages. + * + */ +//#define MBEDTLS_SSL_CID_IN_LEN_MAX 32 + +/** \def MBEDTLS_SSL_CID_OUT_LEN_MAX + * + * The maximum length of CIDs used for outgoing DTLS messages. + * + */ +//#define MBEDTLS_SSL_CID_OUT_LEN_MAX 32 + +/** \def MBEDTLS_SSL_CID_PADDING_GRANULARITY + * + * This option controls the use of record plaintext padding + * when using the Connection ID extension in DTLS 1.2. + * + * The padding will always be chosen so that the length of the + * padded plaintext is a multiple of the value of this option. + * + * Note: A value of \c 1 means that no padding will be used + * for outgoing records. + * + * Note: On systems lacking division instructions, + * a power of two should be preferred. + * + */ +//#define MBEDTLS_SSL_CID_PADDING_GRANULARITY 16 + +/** \def MBEDTLS_SSL_TLS1_3_PADDING_GRANULARITY + * + * This option controls the use of record plaintext padding + * in TLS 1.3. + * + * The padding will always be chosen so that the length of the + * padded plaintext is a multiple of the value of this option. + * + * Note: A value of \c 1 means that no padding will be used + * for outgoing records. + * + * Note: On systems lacking division instructions, + * a power of two should be preferred. + */ +//#define MBEDTLS_SSL_TLS1_3_PADDING_GRANULARITY 1 + /** \def MBEDTLS_SSL_OUT_CONTENT_LEN * * Maximum length (in bytes) of outgoing plaintext fragments. @@ -3174,7 +3892,7 @@ * Maximum number of heap-allocated bytes for the purpose of * DTLS handshake message reassembly and future message buffering. * - * This should be at least 9/8 * MBEDTLSSL_IN_CONTENT_LEN + * This should be at least 9/8 * MBEDTLS_SSL_IN_CONTENT_LEN * to account for a reassembled handshake message of maximum size, * together with its reassembly bitmap. * @@ -3190,6 +3908,17 @@ //#define MBEDTLS_PSK_MAX_LEN 32 /**< Max size of TLS pre-shared keys, in bytes (default 256 bits) */ //#define MBEDTLS_SSL_COOKIE_TIMEOUT 60 /**< Default expiration delay of DTLS cookies, in seconds if HAVE_TIME, or in number of cookies issued */ +/** \def MBEDTLS_TLS_EXT_CID + * + * At the time of writing, the CID extension has not been assigned its + * final value. Set this configuration option to make Mbed TLS use a + * different value. + * + * A future minor revision of Mbed TLS may change the default value of + * this option to match evolving standards and usage. + */ +//#define MBEDTLS_TLS_EXT_CID 254 + /** * Complete list of ciphersuites to use, in order of preference. * @@ -3208,20 +3937,6 @@ //#define MBEDTLS_X509_MAX_INTERMEDIATE_CA 8 /**< Maximum number of intermediate CAs in a verification chain. */ //#define MBEDTLS_X509_MAX_FILE_PATH_LEN 512 /**< Maximum length of a path/filename string in bytes including the null terminator character ('\0'). */ -/** - * Allow SHA-1 in the default TLS configuration for certificate signing. - * Without this build-time option, SHA-1 support must be activated explicitly - * through mbedtls_ssl_conf_cert_profile. Turning on this option is not - * recommended because of it is possible to generate SHA-1 collisions, however - * this may be safe for legacy infrastructure where additional controls apply. - * - * \warning SHA-1 is considered a weak message digest and its use constitutes - * a security risk. If possible, we recommend avoiding dependencies - * on it, and considering stronger message digests instead. - * - */ -// #define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES - /** * Allow SHA-1 in the default TLS configuration for TLS 1.2 handshake * signature and ciphersuite selection. Without this build-time option, SHA-1 @@ -3237,7 +3952,7 @@ * on it, and considering stronger message digests instead. * */ -#define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE +//#define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE /** * Uncomment the macro to let mbed TLS use your alternate implementation of @@ -3278,6 +3993,15 @@ */ //#define MBEDTLS_PLATFORM_GMTIME_R_ALT +/** + * Enable the verified implementations of ECDH primitives from Project Everest + * (currently only Curve25519). This feature changes the layout of ECDH + * contexts and therefore is a compatibility break for applications that access + * fields of a mbedtls_ecdh_context structure directly. See also + * MBEDTLS_ECDH_LEGACY_CONTEXT in include/mbedtls/ecdh.h. + */ +//#define MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED + /* \} name SECTION: Customisation configuration options */ /* Target and application specific configurations @@ -3289,6 +4013,10 @@ #include MBEDTLS_USER_CONFIG_FILE #endif -#include "check_config.h" +#if defined(MBEDTLS_PSA_CRYPTO_CONFIG) +#include "mbedtls/config_psa.h" +#endif + +#include "mbedtls/check_config.h" #endif /* MBEDTLS_CONFIG_H */ diff --git a/Externals/mbedtls/include/mbedtls/config_psa.h b/Externals/mbedtls/include/mbedtls/config_psa.h new file mode 100644 index 000000000000..189f6c21734a --- /dev/null +++ b/Externals/mbedtls/include/mbedtls/config_psa.h @@ -0,0 +1,836 @@ +/** + * \file mbedtls/config_psa.h + * \brief PSA crypto configuration options (set of defines) + * + * This set of compile-time options takes settings defined in + * include/mbedtls/config.h and include/psa/crypto_config.h and uses + * those definitions to define symbols used in the library code. + * + * Users and integrators should not edit this file, please edit + * include/mbedtls/config.h for MBETLS_XXX settings or + * include/psa/crypto_config.h for PSA_WANT_XXX settings. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBEDTLS_CONFIG_PSA_H +#define MBEDTLS_CONFIG_PSA_H + +#if defined(MBEDTLS_PSA_CRYPTO_CONFIG) +#include "psa/crypto_config.h" +#endif /* defined(MBEDTLS_PSA_CRYPTO_CONFIG) */ + +#ifdef __cplusplus +extern "C" { +#endif + + + +/****************************************************************/ +/* De facto synonyms */ +/****************************************************************/ + +#if defined(PSA_WANT_ALG_ECDSA_ANY) && !defined(PSA_WANT_ALG_ECDSA) +#define PSA_WANT_ALG_ECDSA PSA_WANT_ALG_ECDSA_ANY +#elif !defined(PSA_WANT_ALG_ECDSA_ANY) && defined(PSA_WANT_ALG_ECDSA) +#define PSA_WANT_ALG_ECDSA_ANY PSA_WANT_ALG_ECDSA +#endif + +#if defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW) && !defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN) +#define PSA_WANT_ALG_RSA_PKCS1V15_SIGN PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW +#elif !defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW) && defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN) +#define PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW PSA_WANT_ALG_RSA_PKCS1V15_SIGN +#endif + +#if defined(PSA_WANT_ALG_RSA_PSS_ANY_SALT) && !defined(PSA_WANT_ALG_RSA_PSS) +#define PSA_WANT_ALG_RSA_PSS PSA_WANT_ALG_RSA_PSS_ANY_SALT +#elif !defined(PSA_WANT_ALG_RSA_PSS_ANY_SALT) && defined(PSA_WANT_ALG_RSA_PSS) +#define PSA_WANT_ALG_RSA_PSS_ANY_SALT PSA_WANT_ALG_RSA_PSS +#endif + + + +/****************************************************************/ +/* Require built-in implementations based on PSA requirements */ +/****************************************************************/ + +#if defined(MBEDTLS_PSA_CRYPTO_CONFIG) + +#if defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_DETERMINISTIC_ECDSA) +#define MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA 1 +#define MBEDTLS_ECDSA_DETERMINISTIC +#define MBEDTLS_ECDSA_C +#define MBEDTLS_HMAC_DRBG_C +#define MBEDTLS_MD_C +#endif /* !MBEDTLS_PSA_ACCEL_ALG_DETERMINISTIC_ECDSA */ +#endif /* PSA_WANT_ALG_DETERMINISTIC_ECDSA */ + +#if defined(PSA_WANT_ALG_ECDH) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_ECDH) +#define MBEDTLS_PSA_BUILTIN_ALG_ECDH 1 +#define MBEDTLS_ECDH_C +#define MBEDTLS_ECP_C +#define MBEDTLS_BIGNUM_C +#endif /* !MBEDTLS_PSA_ACCEL_ALG_ECDH */ +#endif /* PSA_WANT_ALG_ECDH */ + +#if defined(PSA_WANT_ALG_ECDSA) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_ECDSA) +#define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1 +#define MBEDTLS_ECDSA_C +#define MBEDTLS_ECP_C +#define MBEDTLS_BIGNUM_C +#define MBEDTLS_ASN1_PARSE_C +#define MBEDTLS_ASN1_WRITE_C +#endif /* !MBEDTLS_PSA_ACCEL_ALG_ECDSA */ +#endif /* PSA_WANT_ALG_ECDSA */ + +#if defined(PSA_WANT_ALG_HKDF) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_HKDF) +#define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1 +#define MBEDTLS_PSA_BUILTIN_ALG_HKDF 1 +#endif /* !MBEDTLS_PSA_ACCEL_ALG_HKDF */ +#endif /* PSA_WANT_ALG_HKDF */ + +#if defined(PSA_WANT_ALG_HMAC) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_HMAC) +#define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1 +#endif /* !MBEDTLS_PSA_ACCEL_ALG_HMAC */ +#endif /* PSA_WANT_ALG_HMAC */ + +#if defined(PSA_WANT_ALG_MD2) && !defined(MBEDTLS_PSA_ACCEL_ALG_MD2) +#define MBEDTLS_PSA_BUILTIN_ALG_MD2 1 +#define MBEDTLS_MD2_C +#endif + +#if defined(PSA_WANT_ALG_MD4) && !defined(MBEDTLS_PSA_ACCEL_ALG_MD4) +#define MBEDTLS_PSA_BUILTIN_ALG_MD4 1 +#define MBEDTLS_MD4_C +#endif + +#if defined(PSA_WANT_ALG_MD5) && !defined(MBEDTLS_PSA_ACCEL_ALG_MD5) +#define MBEDTLS_PSA_BUILTIN_ALG_MD5 1 +#define MBEDTLS_MD5_C +#endif + +#if defined(PSA_WANT_ALG_RIPEMD160) && !defined(MBEDTLS_PSA_ACCEL_ALG_RIPEMD160) +#define MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160 1 +#define MBEDTLS_RIPEMD160_C +#endif + +#if defined(PSA_WANT_ALG_RSA_OAEP) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_OAEP) +#define MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP 1 +#define MBEDTLS_RSA_C +#define MBEDTLS_BIGNUM_C +#define MBEDTLS_OID_C +#define MBEDTLS_PKCS1_V21 +#define MBEDTLS_MD_C +#endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_OAEP */ +#endif /* PSA_WANT_ALG_RSA_OAEP */ + +#if defined(PSA_WANT_ALG_RSA_PKCS1V15_CRYPT) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_CRYPT) +#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT 1 +#define MBEDTLS_RSA_C +#define MBEDTLS_BIGNUM_C +#define MBEDTLS_OID_C +#define MBEDTLS_PKCS1_V15 +#endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_CRYPT */ +#endif /* PSA_WANT_ALG_RSA_PKCS1V15_CRYPT */ + +#if defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN) +#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN 1 +#define MBEDTLS_RSA_C +#define MBEDTLS_BIGNUM_C +#define MBEDTLS_OID_C +#define MBEDTLS_PKCS1_V15 +#define MBEDTLS_MD_C +#endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN */ +#endif /* PSA_WANT_ALG_RSA_PKCS1V15_SIGN */ + +#if defined(PSA_WANT_ALG_RSA_PSS) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PSS) +#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS 1 +#define MBEDTLS_RSA_C +#define MBEDTLS_BIGNUM_C +#define MBEDTLS_OID_C +#define MBEDTLS_PKCS1_V21 +#define MBEDTLS_MD_C +#endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PSS */ +#endif /* PSA_WANT_ALG_RSA_PSS */ + +#if defined(PSA_WANT_ALG_SHA_1) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_1) +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_1 1 +#define MBEDTLS_SHA1_C +#endif + +#if defined(PSA_WANT_ALG_SHA_224) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_224) +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_224 1 +#define MBEDTLS_SHA256_C +#endif + +#if defined(PSA_WANT_ALG_SHA_256) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_256) +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_256 1 +#define MBEDTLS_SHA256_C +#endif + +#if defined(PSA_WANT_ALG_SHA_384) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_384) +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_384 1 +#define MBEDTLS_SHA512_C +#endif + +#if defined(PSA_WANT_ALG_SHA_512) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_512) +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_512 1 +#define MBEDTLS_SHA512_C +#endif + +#if defined(PSA_WANT_ALG_TLS12_PRF) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_TLS12_PRF) +#define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF 1 +#endif /* !MBEDTLS_PSA_ACCEL_ALG_TLS12_PRF */ +#endif /* PSA_WANT_ALG_TLS12_PRF */ + +#if defined(PSA_WANT_ALG_TLS12_PSK_TO_MS) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_TLS12_PSK_TO_MS) +#define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS 1 +#endif /* !MBEDTLS_PSA_ACCEL_ALG_TLS12_PSK_TO_MS */ +#endif /* PSA_WANT_ALG_TLS12_PSK_TO_MS */ + +#if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR) +#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR) +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR 1 +#define MBEDTLS_ECP_C +#define MBEDTLS_BIGNUM_C +#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR */ +#endif /* PSA_WANT_KEY_TYPE_ECC_KEY_PAIR */ + +#if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) +#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY) +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1 +#define MBEDTLS_ECP_C +#define MBEDTLS_BIGNUM_C +#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY */ +#endif /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */ + +#if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR) +#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR) +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR 1 +#define MBEDTLS_RSA_C +#define MBEDTLS_BIGNUM_C +#define MBEDTLS_OID_C +#define MBEDTLS_GENPRIME +#define MBEDTLS_PK_PARSE_C +#define MBEDTLS_PK_WRITE_C +#define MBEDTLS_PK_C +#define MBEDTLS_ASN1_PARSE_C +#define MBEDTLS_ASN1_WRITE_C +#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR */ +#endif /* PSA_WANT_KEY_TYPE_RSA_KEY_PAIR */ + +#if defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) +#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY) +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY 1 +#define MBEDTLS_RSA_C +#define MBEDTLS_BIGNUM_C +#define MBEDTLS_OID_C +#define MBEDTLS_PK_PARSE_C +#define MBEDTLS_PK_WRITE_C +#define MBEDTLS_PK_C +#define MBEDTLS_ASN1_PARSE_C +#define MBEDTLS_ASN1_WRITE_C +#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY */ +#endif /* PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY */ + +/* If any of the block modes are requested that don't have an + * associated HW assist, define PSA_HAVE_SOFT_BLOCK_MODE for checking + * in the block cipher key types. */ +#if (defined(PSA_WANT_ALG_CTR) && !defined(MBEDTLS_PSA_ACCEL_ALG_CTR)) || \ + (defined(PSA_WANT_ALG_CFB) && !defined(MBEDTLS_PSA_ACCEL_ALG_CFB)) || \ + (defined(PSA_WANT_ALG_OFB) && !defined(MBEDTLS_PSA_ACCEL_ALG_OFB)) || \ + (defined(PSA_WANT_ALG_XTS) && !defined(MBEDTLS_PSA_ACCEL_ALG_XTS)) || \ + defined(PSA_WANT_ALG_ECB_NO_PADDING) || \ + (defined(PSA_WANT_ALG_CBC_NO_PADDING) && \ + !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING)) || \ + (defined(PSA_WANT_ALG_CBC_PKCS7) && \ + !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7)) || \ + (defined(PSA_WANT_ALG_CMAC) && !defined(MBEDTLS_PSA_ACCEL_ALG_CMAC)) +#define PSA_HAVE_SOFT_BLOCK_MODE 1 +#endif + +#if (defined(PSA_WANT_ALG_GCM) && !defined(MBEDTLS_PSA_ACCEL_ALG_GCM)) || \ + (defined(PSA_WANT_ALG_CCM) && !defined(MBEDTLS_PSA_ACCEL_ALG_CCM)) +#define PSA_HAVE_SOFT_BLOCK_AEAD 1 +#endif + +#if defined(PSA_WANT_KEY_TYPE_AES) +#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_AES) +#define PSA_HAVE_SOFT_KEY_TYPE_AES 1 +#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_AES */ +#if defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \ + defined(PSA_HAVE_SOFT_BLOCK_MODE) || \ + defined(PSA_HAVE_SOFT_BLOCK_AEAD) +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_AES 1 +#define MBEDTLS_AES_C +#endif /* PSA_HAVE_SOFT_KEY_TYPE_AES || PSA_HAVE_SOFT_BLOCK_MODE */ +#endif /* PSA_WANT_KEY_TYPE_AES */ + +#if defined(PSA_WANT_KEY_TYPE_ARC4) +#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ARC4) +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ARC4 1 +#define MBEDTLS_ARC4_C +#endif /*!MBEDTLS_PSA_ACCEL_KEY_TYPE_ARC4 */ +#endif /* PSA_WANT_KEY_TYPE_ARC4 */ + +#if defined(PSA_WANT_KEY_TYPE_ARIA) +#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ARIA) +#define PSA_HAVE_SOFT_KEY_TYPE_ARIA 1 +#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ARIA */ +#if defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \ + defined(PSA_HAVE_SOFT_BLOCK_MODE) || \ + defined(PSA_HAVE_SOFT_BLOCK_AEAD) +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ARIA 1 +#define MBEDTLS_ARIA_C +#endif /* PSA_HAVE_SOFT_KEY_TYPE_ARIA || PSA_HAVE_SOFT_BLOCK_MODE */ +#endif /* PSA_WANT_KEY_TYPE_ARIA */ + +#if defined(PSA_WANT_KEY_TYPE_CAMELLIA) +#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_CAMELLIA) +#define PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA 1 +#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_CAMELLIA */ +#if defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA) || \ + defined(PSA_HAVE_SOFT_BLOCK_MODE) || \ + defined(PSA_HAVE_SOFT_BLOCK_AEAD) +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CAMELLIA 1 +#define MBEDTLS_CAMELLIA_C +#endif /* PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA || PSA_HAVE_SOFT_BLOCK_MODE */ +#endif /* PSA_WANT_KEY_TYPE_CAMELLIA */ + +#if defined(PSA_WANT_KEY_TYPE_DES) +#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DES) +#define PSA_HAVE_SOFT_KEY_TYPE_DES 1 +#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_DES */ +#if defined(PSA_HAVE_SOFT_KEY_TYPE_DES) || \ + defined(PSA_HAVE_SOFT_BLOCK_MODE) +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES 1 +#define MBEDTLS_DES_C +#endif /*PSA_HAVE_SOFT_KEY_TYPE_DES || PSA_HAVE_SOFT_BLOCK_MODE */ +#endif /* PSA_WANT_KEY_TYPE_DES */ + +#if defined(PSA_WANT_KEY_TYPE_CHACHA20) +#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_CHACHA20) +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CHACHA20 1 +#define MBEDTLS_CHACHA20_C +#endif /*!MBEDTLS_PSA_ACCEL_KEY_TYPE_CHACHA20 */ +#endif /* PSA_WANT_KEY_TYPE_CHACHA20 */ + +/* If any of the software block ciphers are selected, define + * PSA_HAVE_SOFT_BLOCK_CIPHER, which can be used in any of these + * situations. */ +#if defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \ + defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \ + defined(PSA_HAVE_SOFT_KEY_TYPE_DES) || \ + defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA) +#define PSA_HAVE_SOFT_BLOCK_CIPHER 1 +#endif + +#if defined(PSA_WANT_ALG_STREAM_CIPHER) +#define MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER 1 +#endif /* PSA_WANT_ALG_STREAM_CIPHER */ + +#if defined(PSA_WANT_ALG_CBC_MAC) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_MAC) +#error "CBC-MAC is not yet supported via the PSA API in Mbed TLS." +#define MBEDTLS_PSA_BUILTIN_ALG_CBC_MAC 1 +#endif /* !MBEDTLS_PSA_ACCEL_ALG_CBC_MAC */ +#endif /* PSA_WANT_ALG_CBC_MAC */ + +#if defined(PSA_WANT_ALG_CMAC) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_CMAC) || \ + defined(PSA_HAVE_SOFT_BLOCK_CIPHER) +#define MBEDTLS_PSA_BUILTIN_ALG_CMAC 1 +#define MBEDTLS_CMAC_C +#endif /* !MBEDTLS_PSA_ACCEL_ALG_CMAC */ +#endif /* PSA_WANT_ALG_CMAC */ + +#if defined(PSA_WANT_ALG_CTR) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_CTR) || \ + defined(PSA_HAVE_SOFT_BLOCK_CIPHER) +#define MBEDTLS_PSA_BUILTIN_ALG_CTR 1 +#define MBEDTLS_CIPHER_MODE_CTR +#endif +#endif /* PSA_WANT_ALG_CTR */ + +#if defined(PSA_WANT_ALG_CFB) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_CFB) || \ + defined(PSA_HAVE_SOFT_BLOCK_CIPHER) +#define MBEDTLS_PSA_BUILTIN_ALG_CFB 1 +#define MBEDTLS_CIPHER_MODE_CFB +#endif +#endif /* PSA_WANT_ALG_CFB */ + +#if defined(PSA_WANT_ALG_OFB) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_OFB) || \ + defined(PSA_HAVE_SOFT_BLOCK_CIPHER) +#define MBEDTLS_PSA_BUILTIN_ALG_OFB 1 +#define MBEDTLS_CIPHER_MODE_OFB +#endif +#endif /* PSA_WANT_ALG_OFB */ + +#if defined(PSA_WANT_ALG_XTS) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_XTS) || \ + defined(PSA_HAVE_SOFT_BLOCK_CIPHER) +#define MBEDTLS_PSA_BUILTIN_ALG_XTS 1 +#define MBEDTLS_CIPHER_MODE_XTS +#endif +#endif /* PSA_WANT_ALG_XTS */ + +#if defined(PSA_WANT_ALG_ECB_NO_PADDING) +#define MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING 1 +#endif + +#if defined(PSA_WANT_ALG_CBC_NO_PADDING) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING) || \ + defined(PSA_HAVE_SOFT_BLOCK_CIPHER) +#define MBEDTLS_CIPHER_MODE_CBC +#define MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING 1 +#endif +#endif /* PSA_WANT_ALG_CBC_NO_PADDING */ + +#if defined(PSA_WANT_ALG_CBC_PKCS7) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7) || \ + defined(PSA_HAVE_SOFT_BLOCK_CIPHER) +#define MBEDTLS_CIPHER_MODE_CBC +#define MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7 1 +#define MBEDTLS_CIPHER_PADDING_PKCS7 +#endif +#endif /* PSA_WANT_ALG_CBC_PKCS7 */ + +#if defined(PSA_WANT_ALG_CCM) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_CCM) || \ + defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \ + defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \ + defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA) +#define MBEDTLS_PSA_BUILTIN_ALG_CCM 1 +#define MBEDTLS_CCM_C +#endif +#endif /* PSA_WANT_ALG_CCM */ + +#if defined(PSA_WANT_ALG_GCM) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_GCM) || \ + defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \ + defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \ + defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA) +#define MBEDTLS_PSA_BUILTIN_ALG_GCM 1 +#define MBEDTLS_GCM_C +#endif +#endif /* PSA_WANT_ALG_GCM */ + +#if defined(PSA_WANT_ALG_CHACHA20_POLY1305) +#if !defined(MBEDTLS_PSA_ACCEL_ALG_CHACHA20_POLY1305) +#if defined(PSA_WANT_KEY_TYPE_CHACHA20) +#define MBEDTLS_CHACHAPOLY_C +#define MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 1 +#endif /* PSA_WANT_KEY_TYPE_CHACHA20 */ +#endif /* !MBEDTLS_PSA_ACCEL_ALG_CHACHA20_POLY1305 */ +#endif /* PSA_WANT_ALG_CHACHA20_POLY1305 */ + +#if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_256) +#if !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_256) +#define MBEDTLS_ECP_DP_BP256R1_ENABLED +#define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_256 1 +#endif /* !MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_256 */ +#endif /* PSA_WANT_ECC_BRAINPOOL_P_R1_256 */ + +#if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_384) +#if !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_384) +#define MBEDTLS_ECP_DP_BP384R1_ENABLED +#define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_384 1 +#endif /* !MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_384 */ +#endif /* PSA_WANT_ECC_BRAINPOOL_P_R1_384 */ + +#if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_512) +#if !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_512) +#define MBEDTLS_ECP_DP_BP512R1_ENABLED +#define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_512 1 +#endif /* !MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_512 */ +#endif /* PSA_WANT_ECC_BRAINPOOL_P_R1_512 */ + +#if defined(PSA_WANT_ECC_MONTGOMERY_255) +#if !defined(MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255) +#define MBEDTLS_ECP_DP_CURVE25519_ENABLED +#define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_255 1 +#endif /* !MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255 */ +#endif /* PSA_WANT_ECC_MONTGOMERY_255 */ + +#if defined(PSA_WANT_ECC_MONTGOMERY_448) +#if !defined(MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_448) +/* + * Curve448 is not yet supported via the PSA API in Mbed TLS + * (https://github.com/ARMmbed/mbedtls/issues/4249). + */ +#error "Curve448 is not yet supported via the PSA API in Mbed TLS." +#define MBEDTLS_ECP_DP_CURVE448_ENABLED +#define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_448 1 +#endif /* !MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_448 */ +#endif /* PSA_WANT_ECC_MONTGOMERY_448 */ + +#if defined(PSA_WANT_ECC_SECP_R1_192) +#if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_192) +#define MBEDTLS_ECP_DP_SECP192R1_ENABLED +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_192 1 +#endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_R1_192 */ +#endif /* PSA_WANT_ECC_SECP_R1_192 */ + +#if defined(PSA_WANT_ECC_SECP_R1_224) +#if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_224) +#define MBEDTLS_ECP_DP_SECP224R1_ENABLED +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_224 1 +#endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_R1_224 */ +#endif /* PSA_WANT_ECC_SECP_R1_224 */ + +#if defined(PSA_WANT_ECC_SECP_R1_256) +#if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256) +#define MBEDTLS_ECP_DP_SECP256R1_ENABLED +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_256 1 +#endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256 */ +#endif /* PSA_WANT_ECC_SECP_R1_256 */ + +#if defined(PSA_WANT_ECC_SECP_R1_384) +#if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_384) +#define MBEDTLS_ECP_DP_SECP384R1_ENABLED +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_384 1 +#endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_R1_384 */ +#endif /* PSA_WANT_ECC_SECP_R1_384 */ + +#if defined(PSA_WANT_ECC_SECP_R1_521) +#if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_521) +#define MBEDTLS_ECP_DP_SECP521R1_ENABLED +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_521 1 +#endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_R1_521 */ +#endif /* PSA_WANT_ECC_SECP_R1_521 */ + +#if defined(PSA_WANT_ECC_SECP_K1_192) +#if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_192) +#define MBEDTLS_ECP_DP_SECP192K1_ENABLED +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_192 1 +#endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_K1_192 */ +#endif /* PSA_WANT_ECC_SECP_K1_192 */ + +#if defined(PSA_WANT_ECC_SECP_K1_224) +#if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_224) +/* + * SECP224K1 is buggy via the PSA API in Mbed TLS + * (https://github.com/ARMmbed/mbedtls/issues/3541). + */ +#error "SECP224K1 is buggy via the PSA API in Mbed TLS." +#define MBEDTLS_ECP_DP_SECP224K1_ENABLED +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_224 1 +#endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_K1_224 */ +#endif /* PSA_WANT_ECC_SECP_K1_224 */ + +#if defined(PSA_WANT_ECC_SECP_K1_256) +#if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_256) +#define MBEDTLS_ECP_DP_SECP256K1_ENABLED +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_256 1 +#endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_K1_256 */ +#endif /* PSA_WANT_ECC_SECP_K1_256 */ + + + +/****************************************************************/ +/* Infer PSA requirements from Mbed TLS capabilities */ +/****************************************************************/ + +#else /* MBEDTLS_PSA_CRYPTO_CONFIG */ + +/* + * Ensure PSA_WANT_* defines are setup properly if MBEDTLS_PSA_CRYPTO_CONFIG + * is not defined + */ + +#if defined(MBEDTLS_CCM_C) +#define MBEDTLS_PSA_BUILTIN_ALG_CCM 1 +#define PSA_WANT_ALG_CCM 1 +#endif /* MBEDTLS_CCM_C */ + +#if defined(MBEDTLS_CMAC_C) +#define MBEDTLS_PSA_BUILTIN_ALG_CMAC 1 +#define PSA_WANT_ALG_CMAC 1 +#endif /* MBEDTLS_CMAC_C */ + +#if defined(MBEDTLS_ECDH_C) +#define MBEDTLS_PSA_BUILTIN_ALG_ECDH 1 +#define PSA_WANT_ALG_ECDH 1 +#endif /* MBEDTLS_ECDH_C */ + +#if defined(MBEDTLS_ECDSA_C) +#define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1 +#define PSA_WANT_ALG_ECDSA 1 +#define PSA_WANT_ALG_ECDSA_ANY 1 + +// Only add in DETERMINISTIC support if ECDSA is also enabled +#if defined(MBEDTLS_ECDSA_DETERMINISTIC) +#define MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA 1 +#define PSA_WANT_ALG_DETERMINISTIC_ECDSA 1 +#endif /* MBEDTLS_ECDSA_DETERMINISTIC */ + +#endif /* MBEDTLS_ECDSA_C */ + +#if defined(MBEDTLS_ECP_C) +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR 1 +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR 1 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1 +#define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY 1 +#endif /* MBEDTLS_ECP_C */ + +#if defined(MBEDTLS_GCM_C) +#define MBEDTLS_PSA_BUILTIN_ALG_GCM 1 +#define PSA_WANT_ALG_GCM 1 +#endif /* MBEDTLS_GCM_C */ + +#if defined(MBEDTLS_HKDF_C) +#define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1 +#define PSA_WANT_ALG_HMAC 1 +#define MBEDTLS_PSA_BUILTIN_ALG_HKDF 1 +#define PSA_WANT_ALG_HKDF 1 +#endif /* MBEDTLS_HKDF_C */ + +#if defined(MBEDTLS_MD_C) +#define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1 +#define PSA_WANT_ALG_HMAC 1 +#define PSA_WANT_KEY_TYPE_HMAC +#define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF 1 +#define PSA_WANT_ALG_TLS12_PRF 1 +#define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS 1 +#define PSA_WANT_ALG_TLS12_PSK_TO_MS 1 +#endif /* MBEDTLS_MD_C */ + +#if defined(MBEDTLS_MD2_C) +#define MBEDTLS_PSA_BUILTIN_ALG_MD2 1 +#define PSA_WANT_ALG_MD2 1 +#endif + +#if defined(MBEDTLS_MD4_C) +#define MBEDTLS_PSA_BUILTIN_ALG_MD4 1 +#define PSA_WANT_ALG_MD4 1 +#endif + +#if defined(MBEDTLS_MD5_C) +#define MBEDTLS_PSA_BUILTIN_ALG_MD5 1 +#define PSA_WANT_ALG_MD5 1 +#endif + +#if defined(MBEDTLS_RIPEMD160_C) +#define MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160 1 +#define PSA_WANT_ALG_RIPEMD160 1 +#endif + +#if defined(MBEDTLS_RSA_C) +#if defined(MBEDTLS_PKCS1_V15) +#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT 1 +#define PSA_WANT_ALG_RSA_PKCS1V15_CRYPT 1 +#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN 1 +#define PSA_WANT_ALG_RSA_PKCS1V15_SIGN 1 +#define PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW 1 +#endif /* MBEDTLS_PKCS1_V15 */ +#if defined(MBEDTLS_PKCS1_V21) +#define MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP 1 +#define PSA_WANT_ALG_RSA_OAEP 1 +#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS 1 +#define PSA_WANT_ALG_RSA_PSS 1 +#endif /* MBEDTLS_PKCS1_V21 */ +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR 1 +#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR 1 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY 1 +#define PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY 1 +#endif /* MBEDTLS_RSA_C */ + +#if defined(MBEDTLS_SHA1_C) +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_1 1 +#define PSA_WANT_ALG_SHA_1 1 +#endif + +#if defined(MBEDTLS_SHA256_C) +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_224 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_256 1 +#define PSA_WANT_ALG_SHA_224 1 +#define PSA_WANT_ALG_SHA_256 1 +#endif + +#if defined(MBEDTLS_SHA512_C) +#if !defined(MBEDTLS_SHA512_NO_SHA384) +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_384 1 +#define PSA_WANT_ALG_SHA_384 1 +#endif +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_512 1 +#define PSA_WANT_ALG_SHA_512 1 +#endif + +#if defined(MBEDTLS_AES_C) +#define PSA_WANT_KEY_TYPE_AES 1 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_AES 1 +#endif + +#if defined(MBEDTLS_ARC4_C) +#define PSA_WANT_KEY_TYPE_ARC4 1 +#define PSA_WANT_ALG_STREAM_CIPHER 1 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ARC4 1 +#define MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER 1 +#endif + +#if defined(MBEDTLS_ARIA_C) +#define PSA_WANT_KEY_TYPE_ARIA 1 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ARIA 1 +#endif + +#if defined(MBEDTLS_CAMELLIA_C) +#define PSA_WANT_KEY_TYPE_CAMELLIA 1 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CAMELLIA 1 +#endif + +#if defined(MBEDTLS_DES_C) +#define PSA_WANT_KEY_TYPE_DES 1 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES 1 +#endif + +#if defined(MBEDTLS_CHACHA20_C) +#define PSA_WANT_KEY_TYPE_CHACHA20 1 +#define PSA_WANT_ALG_STREAM_CIPHER 1 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CHACHA20 1 +#define MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER 1 +#if defined(MBEDTLS_CHACHAPOLY_C) +#define PSA_WANT_ALG_CHACHA20_POLY1305 1 +#define MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 1 +#endif +#endif + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +#define MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING 1 +#define PSA_WANT_ALG_CBC_NO_PADDING 1 +#if defined(MBEDTLS_CIPHER_PADDING_PKCS7) +#define MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7 1 +#define PSA_WANT_ALG_CBC_PKCS7 1 +#endif +#endif + +#if defined(MBEDTLS_AES_C) || defined(MBEDTLS_DES_C) || \ + defined(MBEDTLS_ARIA_C) || defined(MBEDTLS_CAMELLIA_C) +#define MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING 1 +#define PSA_WANT_ALG_ECB_NO_PADDING 1 +#endif + +#if defined(MBEDTLS_CIPHER_MODE_CFB) +#define MBEDTLS_PSA_BUILTIN_ALG_CFB 1 +#define PSA_WANT_ALG_CFB 1 +#endif + +#if defined(MBEDTLS_CIPHER_MODE_CTR) +#define MBEDTLS_PSA_BUILTIN_ALG_CTR 1 +#define PSA_WANT_ALG_CTR 1 +#endif + +#if defined(MBEDTLS_CIPHER_MODE_OFB) +#define MBEDTLS_PSA_BUILTIN_ALG_OFB 1 +#define PSA_WANT_ALG_OFB 1 +#endif + +#if defined(MBEDTLS_CIPHER_MODE_XTS) +#define MBEDTLS_PSA_BUILTIN_ALG_XTS 1 +#define PSA_WANT_ALG_XTS 1 +#endif + +#if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) +#define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_256 1 +#define PSA_WANT_ECC_BRAINPOOL_P_R1_256 +#endif + +#if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) +#define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_384 1 +#define PSA_WANT_ECC_BRAINPOOL_P_R1_384 +#endif + +#if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) +#define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_512 1 +#define PSA_WANT_ECC_BRAINPOOL_P_R1_512 +#endif + +#if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) +#define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_255 1 +#define PSA_WANT_ECC_MONTGOMERY_255 +#endif + +/* Curve448 is not yet supported via the PSA API (https://github.com/ARMmbed/mbedtls/issues/4249) */ +#if 0 && defined(MBEDTLS_ECP_DP_CURVE448_ENABLED) +#define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_448 1 +#define PSA_WANT_ECC_MONTGOMERY_448 +#endif + +#if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_192 1 +#define PSA_WANT_ECC_SECP_R1_192 +#endif + +#if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_224 1 +#define PSA_WANT_ECC_SECP_R1_224 +#endif + +#if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_256 1 +#define PSA_WANT_ECC_SECP_R1_256 +#endif + +#if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_384 1 +#define PSA_WANT_ECC_SECP_R1_384 +#endif + +#if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_521 1 +#define PSA_WANT_ECC_SECP_R1_521 +#endif + +#if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_192 1 +#define PSA_WANT_ECC_SECP_K1_192 +#endif + +/* SECP224K1 is buggy via the PSA API (https://github.com/ARMmbed/mbedtls/issues/3541) */ +#if 0 && defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_224 1 +#define PSA_WANT_ECC_SECP_K1_224 +#endif + +#if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_256 1 +#define PSA_WANT_ECC_SECP_K1_256 +#endif + +#endif /* MBEDTLS_PSA_CRYPTO_CONFIG */ + +/* These features are always enabled. */ +#define PSA_WANT_KEY_TYPE_DERIVE 1 +#define PSA_WANT_KEY_TYPE_RAW_DATA 1 + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_CONFIG_PSA_H */ diff --git a/Externals/mbedtls/include/mbedtls/constant_time.h b/Externals/mbedtls/include/mbedtls/constant_time.h new file mode 100644 index 000000000000..c5de57a01f08 --- /dev/null +++ b/Externals/mbedtls/include/mbedtls/constant_time.h @@ -0,0 +1,45 @@ +/** + * Constant-time functions + * + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBEDTLS_CONSTANT_TIME_H +#define MBEDTLS_CONSTANT_TIME_H + +#include + + +/** Constant-time buffer comparison without branches. + * + * This is equivalent to the standard memcmp function, but is likely to be + * compiled to code using bitwise operation rather than a branch. + * + * This function can be used to write constant-time code by replacing branches + * with bit operations using masks. + * + * \param a Pointer to the first buffer. + * \param b Pointer to the second buffer. + * \param n The number of bytes to compare in the buffer. + * + * \return Zero if the content of the two buffer is the same, + * otherwise non-zero. + */ +int mbedtls_ct_memcmp( const void *a, + const void *b, + size_t n ); + +#endif /* MBEDTLS_CONSTANT_TIME_H */ diff --git a/Externals/mbedtls/include/mbedtls/ctr_drbg.h b/Externals/mbedtls/include/mbedtls/ctr_drbg.h index cc3df7b113f1..dc4adc896d4d 100644 --- a/Externals/mbedtls/include/mbedtls/ctr_drbg.h +++ b/Externals/mbedtls/include/mbedtls/ctr_drbg.h @@ -1,7 +1,8 @@ /** * \file ctr_drbg.h * - * \brief This file contains CTR_DRBG definitions and functions. + * \brief This file contains definitions and functions for the + * CTR_DRBG pseudorandom generator. * * CTR_DRBG is a standardized way of building a PRNG from a block-cipher * in counter mode operation, as defined in NIST SP 800-90A: @@ -9,13 +10,19 @@ * Bit Generators. * * The Mbed TLS implementation of CTR_DRBG uses AES-256 (default) or AES-128 - * as the underlying block cipher. - * - * \warning Using 128-bit keys for CTR_DRBG limits the security of generated - * keys and operations that use random values generated to 128-bit security. + * (if \c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY is enabled at compile time) + * as the underlying block cipher, with a derivation function. + * + * The security strength as defined in NIST SP 800-90A is + * 128 bits when AES-128 is used (\c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY enabled) + * and 256 bits otherwise, provided that #MBEDTLS_CTR_DRBG_ENTROPY_LEN is + * kept at its default value (and not overridden in config.h) and that the + * DRBG instance is set up with default parameters. + * See the documentation of mbedtls_ctr_drbg_seed() for more + * information. */ /* - * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -29,36 +36,48 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_CTR_DRBG_H #define MBEDTLS_CTR_DRBG_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "aes.h" +#include "mbedtls/aes.h" #if defined(MBEDTLS_THREADING_C) -#include "threading.h" +#include "mbedtls/threading.h" #endif -#define MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED -0x0034 /**< The entropy source failed. */ -#define MBEDTLS_ERR_CTR_DRBG_REQUEST_TOO_BIG -0x0036 /**< The requested random buffer length is too big. */ -#define MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG -0x0038 /**< The input (entropy + additional data) is too large. */ -#define MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR -0x003A /**< Read or write error in file. */ +/** The entropy source failed. */ +#define MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED -0x0034 +/** The requested random buffer length is too big. */ +#define MBEDTLS_ERR_CTR_DRBG_REQUEST_TOO_BIG -0x0036 +/** The input (entropy + additional data) is too large. */ +#define MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG -0x0038 +/** Read or write error in file. */ +#define MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR -0x003A #define MBEDTLS_CTR_DRBG_BLOCKSIZE 16 /**< The block size used by the cipher. */ #if defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY) -#define MBEDTLS_CTR_DRBG_KEYSIZE 16 /**< The key size used by the cipher (compile-time choice: 128 bits). */ +#define MBEDTLS_CTR_DRBG_KEYSIZE 16 +/**< The key size in bytes used by the cipher. + * + * Compile-time choice: 16 bytes (128 bits) + * because #MBEDTLS_CTR_DRBG_USE_128_BIT_KEY is enabled. + */ #else -#define MBEDTLS_CTR_DRBG_KEYSIZE 32 /**< The key size used by the cipher (compile-time choice: 256 bits). */ +#define MBEDTLS_CTR_DRBG_KEYSIZE 32 +/**< The key size in bytes used by the cipher. + * + * Compile-time choice: 32 bytes (256 bits) + * because \c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY is disabled. + */ #endif #define MBEDTLS_CTR_DRBG_KEYBITS ( MBEDTLS_CTR_DRBG_KEYSIZE * 8 ) /**< The key size for the DRBG operation, in bits. */ @@ -73,21 +92,31 @@ * \{ */ +/** \def MBEDTLS_CTR_DRBG_ENTROPY_LEN + * + * \brief The amount of entropy used per seed by default, in bytes. + */ #if !defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) #if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256) +/** This is 48 bytes because the entropy module uses SHA-512 + * (\c MBEDTLS_ENTROPY_FORCE_SHA256 is disabled). + */ #define MBEDTLS_CTR_DRBG_ENTROPY_LEN 48 -/**< The amount of entropy used per seed by default: - *
  • 48 with SHA-512.
  • - *
  • 32 with SHA-256.
+ +#else /* defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256) */ + +/** This is 32 bytes because the entropy module uses SHA-256 + * (the SHA512 module is disabled or + * \c MBEDTLS_ENTROPY_FORCE_SHA256 is enabled). */ -#else -#define MBEDTLS_CTR_DRBG_ENTROPY_LEN 32 -/**< Amount of entropy used per seed by default: - *
  • 48 with SHA-512.
  • - *
  • 32 with SHA-256.
+#if !defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY) +/** \warning To achieve a 256-bit security strength, you must pass a nonce + * to mbedtls_ctr_drbg_seed(). */ -#endif -#endif +#endif /* !defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY) */ +#define MBEDTLS_CTR_DRBG_ENTROPY_LEN 32 +#endif /* defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256) */ +#endif /* !defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) */ #if !defined(MBEDTLS_CTR_DRBG_RESEED_INTERVAL) #define MBEDTLS_CTR_DRBG_RESEED_INTERVAL 10000 @@ -106,7 +135,7 @@ #if !defined(MBEDTLS_CTR_DRBG_MAX_SEED_INPUT) #define MBEDTLS_CTR_DRBG_MAX_SEED_INPUT 384 -/**< The maximum size of seed or reseed buffer. */ +/**< The maximum size of seed or reseed buffer in bytes. */ #endif /* \} name SECTION: Module settings */ @@ -120,20 +149,49 @@ extern "C" { #endif +#if MBEDTLS_CTR_DRBG_ENTROPY_LEN >= MBEDTLS_CTR_DRBG_KEYSIZE * 3 / 2 +/** The default length of the nonce read from the entropy source. + * + * This is \c 0 because a single read from the entropy source is sufficient + * to include a nonce. + * See the documentation of mbedtls_ctr_drbg_seed() for more information. + */ +#define MBEDTLS_CTR_DRBG_ENTROPY_NONCE_LEN 0 +#else +/** The default length of the nonce read from the entropy source. + * + * This is half of the default entropy length because a single read from + * the entropy source does not provide enough material to form a nonce. + * See the documentation of mbedtls_ctr_drbg_seed() for more information. + */ +#define MBEDTLS_CTR_DRBG_ENTROPY_NONCE_LEN ( MBEDTLS_CTR_DRBG_ENTROPY_LEN + 1 ) / 2 +#endif + /** * \brief The CTR_DRBG context structure. */ typedef struct mbedtls_ctr_drbg_context { unsigned char counter[16]; /*!< The counter (V). */ - int reseed_counter; /*!< The reseed counter. */ + int reseed_counter; /*!< The reseed counter. + * This is the number of requests that have + * been made since the last (re)seeding, + * minus one. + * Before the initial seeding, this field + * contains the amount of entropy in bytes + * to use as a nonce for the initial seeding, + * or -1 if no nonce length has been explicitly + * set (see mbedtls_ctr_drbg_set_nonce_len()). + */ int prediction_resistance; /*!< This determines whether prediction resistance is enabled, that is whether to systematically reseed before each random generation. */ size_t entropy_len; /*!< The amount of entropy grabbed on each - seed or reseed operation. */ - int reseed_interval; /*!< The reseed interval. */ + seed or reseed operation, in bytes. */ + int reseed_interval; /*!< The reseed interval. + * This is the maximum number of requests + * that can be made between reseedings. */ mbedtls_aes_context aes_ctx; /*!< The AES context. */ @@ -146,6 +204,13 @@ typedef struct mbedtls_ctr_drbg_context void *p_entropy; /*!< The context for the entropy function. */ #if defined(MBEDTLS_THREADING_C) + /* Invariant: the mutex is initialized if and only if f_entropy != NULL. + * This means that the mutex is initialized during the initial seeding + * in mbedtls_ctr_drbg_seed() and freed in mbedtls_ctr_drbg_free(). + * + * Note that this invariant may change without notice. Do not rely on it + * and do not access the mutex directly in application code. + */ mbedtls_threading_mutex_t mutex; #endif } @@ -156,6 +221,11 @@ mbedtls_ctr_drbg_context; * and prepares it for mbedtls_ctr_drbg_seed() * or mbedtls_ctr_drbg_free(). * + * \note The reseed interval is + * #MBEDTLS_CTR_DRBG_RESEED_INTERVAL by default. + * You can override it by calling + * mbedtls_ctr_drbg_set_reseed_interval(). + * * \param ctx The CTR_DRBG context to initialize. */ void mbedtls_ctr_drbg_init( mbedtls_ctr_drbg_context *ctx ); @@ -164,17 +234,97 @@ void mbedtls_ctr_drbg_init( mbedtls_ctr_drbg_context *ctx ); * \brief This function seeds and sets up the CTR_DRBG * entropy source for future reseeds. * - * \note Personalization data can be provided in addition to the more generic - * entropy source, to make this instantiation as unique as possible. + * A typical choice for the \p f_entropy and \p p_entropy parameters is + * to use the entropy module: + * - \p f_entropy is mbedtls_entropy_func(); + * - \p p_entropy is an instance of ::mbedtls_entropy_context initialized + * with mbedtls_entropy_init() (which registers the platform's default + * entropy sources). + * + * The entropy length is #MBEDTLS_CTR_DRBG_ENTROPY_LEN by default. + * You can override it by calling mbedtls_ctr_drbg_set_entropy_len(). + * + * The entropy nonce length is: + * - \c 0 if the entropy length is at least 3/2 times the entropy length, + * which guarantees that the security strength is the maximum permitted + * by the key size and entropy length according to NIST SP 800-90A §10.2.1; + * - Half the entropy length otherwise. + * You can override it by calling mbedtls_ctr_drbg_set_nonce_len(). + * With the default entropy length, the entropy nonce length is + * #MBEDTLS_CTR_DRBG_ENTROPY_NONCE_LEN. + * + * You can provide a nonce and personalization string in addition to the + * entropy source, to make this instantiation as unique as possible. + * See SP 800-90A §8.6.7 for more details about nonces. + * + * The _seed_material_ value passed to the derivation function in + * the CTR_DRBG Instantiate Process described in NIST SP 800-90A §10.2.1.3.2 + * is the concatenation of the following strings: + * - A string obtained by calling \p f_entropy function for the entropy + * length. + */ +#if MBEDTLS_CTR_DRBG_ENTROPY_NONCE_LEN == 0 +/** + * - If mbedtls_ctr_drbg_set_nonce_len() has been called, a string + * obtained by calling \p f_entropy function for the specified length. + */ +#else +/** + * - A string obtained by calling \p f_entropy function for the entropy nonce + * length. If the entropy nonce length is \c 0, this function does not + * make a second call to \p f_entropy. + */ +#endif +#if defined(MBEDTLS_THREADING_C) +/** + * \note When Mbed TLS is built with threading support, + * after this function returns successfully, + * it is safe to call mbedtls_ctr_drbg_random() + * from multiple threads. Other operations, including + * reseeding, are not thread-safe. + */ +#endif /* MBEDTLS_THREADING_C */ +/** + * - The \p custom string. + * + * \note To achieve the nominal security strength permitted + * by CTR_DRBG, the entropy length must be: + * - at least 16 bytes for a 128-bit strength + * (maximum achievable strength when using AES-128); + * - at least 32 bytes for a 256-bit strength + * (maximum achievable strength when using AES-256). + * + * In addition, if you do not pass a nonce in \p custom, + * the sum of the entropy length + * and the entropy nonce length must be: + * - at least 24 bytes for a 128-bit strength + * (maximum achievable strength when using AES-128); + * - at least 48 bytes for a 256-bit strength + * (maximum achievable strength when using AES-256). * * \param ctx The CTR_DRBG context to seed. + * It must have been initialized with + * mbedtls_ctr_drbg_init(). + * After a successful call to mbedtls_ctr_drbg_seed(), + * you may not call mbedtls_ctr_drbg_seed() again on + * the same context unless you call + * mbedtls_ctr_drbg_free() and mbedtls_ctr_drbg_init() + * again first. + * After a failed call to mbedtls_ctr_drbg_seed(), + * you must call mbedtls_ctr_drbg_free(). * \param f_entropy The entropy callback, taking as arguments the * \p p_entropy context, the buffer to fill, and the - length of the buffer. - * \param p_entropy The entropy context. - * \param custom Personalization data, that is device-specific - identifiers. Can be NULL. - * \param len The length of the personalization data. + * length of the buffer. + * \p f_entropy is always called with a buffer size + * less than or equal to the entropy length. + * \param p_entropy The entropy context to pass to \p f_entropy. + * \param custom The personalization string. + * This can be \c NULL, in which case the personalization + * string is empty regardless of the value of \p len. + * \param len The length of the personalization string. + * This must be at most + * #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT + * - #MBEDTLS_CTR_DRBG_ENTROPY_LEN. * * \return \c 0 on success. * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on failure. @@ -186,7 +336,8 @@ int mbedtls_ctr_drbg_seed( mbedtls_ctr_drbg_context *ctx, size_t len ); /** - * \brief This function clears CTR_CRBG context data. + * \brief This function resets CTR_DRBG context to the state immediately + * after initial call of mbedtls_ctr_drbg_init(). * * \param ctx The CTR_DRBG context to clear. */ @@ -197,7 +348,8 @@ void mbedtls_ctr_drbg_free( mbedtls_ctr_drbg_context *ctx ); * The default value is off. * * \note If enabled, entropy is gathered at the beginning of - * every call to mbedtls_ctr_drbg_random_with_add(). + * every call to mbedtls_ctr_drbg_random_with_add() + * or mbedtls_ctr_drbg_random(). * Only use this if your entropy source has sufficient * throughput. * @@ -209,18 +361,61 @@ void mbedtls_ctr_drbg_set_prediction_resistance( mbedtls_ctr_drbg_context *ctx, /** * \brief This function sets the amount of entropy grabbed on each - * seed or reseed. The default value is - * #MBEDTLS_CTR_DRBG_ENTROPY_LEN. + * seed or reseed. + * + * The default value is #MBEDTLS_CTR_DRBG_ENTROPY_LEN. + * + * \note The security strength of CTR_DRBG is bounded by the + * entropy length. Thus: + * - When using AES-256 + * (\c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY is disabled, + * which is the default), + * \p len must be at least 32 (in bytes) + * to achieve a 256-bit strength. + * - When using AES-128 + * (\c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY is enabled) + * \p len must be at least 16 (in bytes) + * to achieve a 128-bit strength. * * \param ctx The CTR_DRBG context. - * \param len The amount of entropy to grab. + * \param len The amount of entropy to grab, in bytes. + * This must be at most #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT + * and at most the maximum length accepted by the + * entropy function that is set in the context. */ void mbedtls_ctr_drbg_set_entropy_len( mbedtls_ctr_drbg_context *ctx, size_t len ); +/** + * \brief This function sets the amount of entropy grabbed + * as a nonce for the initial seeding. + * + * Call this function before calling mbedtls_ctr_drbg_seed() to read + * a nonce from the entropy source during the initial seeding. + * + * \param ctx The CTR_DRBG context. + * \param len The amount of entropy to grab for the nonce, in bytes. + * This must be at most #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT + * and at most the maximum length accepted by the + * entropy function that is set in the context. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG if \p len is + * more than #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT. + * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED + * if the initial seeding has already taken place. + */ +int mbedtls_ctr_drbg_set_nonce_len( mbedtls_ctr_drbg_context *ctx, + size_t len ); + /** * \brief This function sets the reseed interval. - * The default value is #MBEDTLS_CTR_DRBG_RESEED_INTERVAL. + * + * The reseed interval is the number of calls to mbedtls_ctr_drbg_random() + * or mbedtls_ctr_drbg_random_with_add() after which the entropy function + * is called again. + * + * The default value is #MBEDTLS_CTR_DRBG_RESEED_INTERVAL. * * \param ctx The CTR_DRBG context. * \param interval The reseed interval. @@ -232,9 +427,18 @@ void mbedtls_ctr_drbg_set_reseed_interval( mbedtls_ctr_drbg_context *ctx, * \brief This function reseeds the CTR_DRBG context, that is * extracts data from the entropy source. * + * \note This function is not thread-safe. It is not safe + * to call this function if another thread might be + * concurrently obtaining random numbers from the same + * context or updating or reseeding the same context. + * * \param ctx The CTR_DRBG context. - * \param additional Additional data to add to the state. Can be NULL. + * \param additional Additional data to add to the state. Can be \c NULL. * \param len The length of the additional data. + * This must be less than + * #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT - \c entropy_len + * where \c entropy_len is the entropy length + * configured for the context. * * \return \c 0 on success. * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on failure. @@ -245,8 +449,14 @@ int mbedtls_ctr_drbg_reseed( mbedtls_ctr_drbg_context *ctx, /** * \brief This function updates the state of the CTR_DRBG context. * + * \note This function is not thread-safe. It is not safe + * to call this function if another thread might be + * concurrently obtaining random numbers from the same + * context or updating or reseeding the same context. + * * \param ctx The CTR_DRBG context. - * \param additional The data to update the state with. + * \param additional The data to update the state with. This must not be + * \c NULL unless \p add_len is \c 0. * \param add_len Length of \p additional in bytes. This must be at * most #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT. * @@ -264,14 +474,28 @@ int mbedtls_ctr_drbg_update_ret( mbedtls_ctr_drbg_context *ctx, * \brief This function updates a CTR_DRBG instance with additional * data and uses it to generate random data. * - * \note The function automatically reseeds if the reseed counter is exceeded. + * This function automatically reseeds if the reseed counter is exceeded + * or prediction resistance is enabled. + * + * \note This function is not thread-safe. It is not safe + * to call this function if another thread might be + * concurrently obtaining random numbers from the same + * context or updating or reseeding the same context. * * \param p_rng The CTR_DRBG context. This must be a pointer to a * #mbedtls_ctr_drbg_context structure. * \param output The buffer to fill. - * \param output_len The length of the buffer. - * \param additional Additional data to update. Can be NULL. - * \param add_len The length of the additional data. + * \param output_len The length of the buffer in bytes. + * \param additional Additional data to update. Can be \c NULL, in which + * case the additional data is empty regardless of + * the value of \p add_len. + * \param add_len The length of the additional data + * if \p additional is not \c NULL. + * This must be less than #MBEDTLS_CTR_DRBG_MAX_INPUT + * and less than + * #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT - \c entropy_len + * where \c entropy_len is the entropy length + * configured for the context. * * \return \c 0 on success. * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED or @@ -284,12 +508,22 @@ int mbedtls_ctr_drbg_random_with_add( void *p_rng, /** * \brief This function uses CTR_DRBG to generate random data. * - * \note The function automatically reseeds if the reseed counter is exceeded. - * + * This function automatically reseeds if the reseed counter is exceeded + * or prediction resistance is enabled. + */ +#if defined(MBEDTLS_THREADING_C) +/** + * \note When Mbed TLS is built with threading support, + * it is safe to call mbedtls_ctr_drbg_random() + * from multiple threads. Other operations, including + * reseeding, are not thread-safe. + */ +#endif /* MBEDTLS_THREADING_C */ +/** * \param p_rng The CTR_DRBG context. This must be a pointer to a * #mbedtls_ctr_drbg_context structure. * \param output The buffer to fill. - * \param output_len The length of the buffer. + * \param output_len The length of the buffer in bytes. * * \return \c 0 on success. * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED or @@ -336,7 +570,7 @@ MBEDTLS_DEPRECATED void mbedtls_ctr_drbg_update( * * \return \c 0 on success. * \return #MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR on file error. - * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on + * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on reseed * failure. */ int mbedtls_ctr_drbg_write_seed_file( mbedtls_ctr_drbg_context *ctx, const char *path ); @@ -350,8 +584,10 @@ int mbedtls_ctr_drbg_write_seed_file( mbedtls_ctr_drbg_context *ctx, const char * * \return \c 0 on success. * \return #MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR on file error. - * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED or - * #MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG on failure. + * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on + * reseed failure. + * \return #MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG if the existing + * seed file is too large. */ int mbedtls_ctr_drbg_update_seed_file( mbedtls_ctr_drbg_context *ctx, const char *path ); #endif /* MBEDTLS_FS_IO */ @@ -368,11 +604,6 @@ int mbedtls_ctr_drbg_self_test( int verbose ); #endif /* MBEDTLS_SELF_TEST */ -/* Internal functions (do not call directly) */ -int mbedtls_ctr_drbg_seed_entropy_len( mbedtls_ctr_drbg_context *, - int (*)(void *, unsigned char *, size_t), void *, - const unsigned char *, size_t, size_t ); - #ifdef __cplusplus } #endif diff --git a/Externals/mbedtls/include/mbedtls/debug.h b/Externals/mbedtls/include/mbedtls/debug.h index 736444bb76a9..3c08244f3da3 100644 --- a/Externals/mbedtls/include/mbedtls/debug.h +++ b/Externals/mbedtls/include/mbedtls/debug.h @@ -4,7 +4,7 @@ * \brief Functions for controlling and providing debug output from the library. */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,22 +18,20 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_DEBUG_H #define MBEDTLS_DEBUG_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "ssl.h" +#include "mbedtls/ssl.h" #if defined(MBEDTLS_ECP_C) -#include "ecp.h" +#include "mbedtls/ecp.h" #endif #if defined(MBEDTLS_DEBUG_C) @@ -82,6 +80,55 @@ #endif /* MBEDTLS_DEBUG_C */ +/** + * \def MBEDTLS_PRINTF_ATTRIBUTE + * + * Mark a function as having printf attributes, and thus enable checking + * via -wFormat and other flags. This does nothing on builds with compilers + * that do not support the format attribute + * + * Module: library/debug.c + * Caller: + * + * This module provides debugging functions. + */ +#if defined(__has_attribute) +#if __has_attribute(format) +#if defined(__MINGW32__) && __USE_MINGW_ANSI_STDIO == 1 +#define MBEDTLS_PRINTF_ATTRIBUTE(string_index, first_to_check) \ + __attribute__((__format__ (gnu_printf, string_index, first_to_check))) +#else /* defined(__MINGW32__) && __USE_MINGW_ANSI_STDIO == 1 */ +#define MBEDTLS_PRINTF_ATTRIBUTE(string_index, first_to_check) \ + __attribute__((format(printf, string_index, first_to_check))) +#endif +#else /* __has_attribute(format) */ +#define MBEDTLS_PRINTF_ATTRIBUTE(string_index, first_to_check) +#endif /* __has_attribute(format) */ +#else /* defined(__has_attribute) */ +#define MBEDTLS_PRINTF_ATTRIBUTE(string_index, first_to_check) +#endif + +/** + * \def MBEDTLS_PRINTF_SIZET + * + * MBEDTLS_PRINTF_xxx: Due to issues with older window compilers + * and MinGW we need to define the printf specifier for size_t + * and long long per platform. + * + * Module: library/debug.c + * Caller: + * + * This module provides debugging functions. + */ +#if (defined(__MINGW32__) && __USE_MINGW_ANSI_STDIO == 0) || (defined(_MSC_VER) && _MSC_VER < 1800) + #include + #define MBEDTLS_PRINTF_SIZET PRIuPTR + #define MBEDTLS_PRINTF_LONGLONG "I64d" +#else /* (defined(__MINGW32__) && __USE_MINGW_ANSI_STDIO == 0) || (defined(_MSC_VER) && _MSC_VER < 1800) */ + #define MBEDTLS_PRINTF_SIZET "zu" + #define MBEDTLS_PRINTF_LONGLONG "lld" +#endif /* (defined(__MINGW32__) && __USE_MINGW_ANSI_STDIO == 0) || (defined(_MSC_VER) && _MSC_VER < 1800) */ + #ifdef __cplusplus extern "C" { #endif @@ -120,7 +167,7 @@ void mbedtls_debug_set_threshold( int threshold ); */ void mbedtls_debug_print_msg( const mbedtls_ssl_context *ssl, int level, const char *file, int line, - const char *format, ... ); + const char *format, ... ) MBEDTLS_PRINTF_ATTRIBUTE(5, 6); /** * \brief Print the return value of a function to the debug output. This @@ -262,4 +309,3 @@ void mbedtls_debug_printf_ecdh( const mbedtls_ssl_context *ssl, int level, #endif #endif /* debug.h */ - diff --git a/Externals/mbedtls/include/mbedtls/des.h b/Externals/mbedtls/include/mbedtls/des.h index 54e6b7894b6f..325aab536442 100644 --- a/Externals/mbedtls/include/mbedtls/des.h +++ b/Externals/mbedtls/include/mbedtls/des.h @@ -8,7 +8,7 @@ * instead. */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -23,17 +23,16 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * This file is part of mbed TLS (https://tls.mbed.org) - * */ #ifndef MBEDTLS_DES_H #define MBEDTLS_DES_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif +#include "mbedtls/platform_util.h" #include #include @@ -41,10 +40,12 @@ #define MBEDTLS_DES_ENCRYPT 1 #define MBEDTLS_DES_DECRYPT 0 -#define MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH -0x0032 /**< The data input has an invalid length. */ +/** The data input has an invalid length. */ +#define MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH -0x0032 /* MBEDTLS_ERR_DES_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_DES_HW_ACCEL_FAILED -0x0033 /**< DES hardware accelerator failed. */ +/** DES hardware accelerator failed. */ +#define MBEDTLS_ERR_DES_HW_ACCEL_FAILED -0x0033 #define MBEDTLS_DES_KEY_SIZE 8 @@ -146,6 +147,7 @@ void mbedtls_des_key_set_parity( unsigned char key[MBEDTLS_DES_KEY_SIZE] ); * security risk. We recommend considering stronger ciphers * instead. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_des_key_check_key_parity( const unsigned char key[MBEDTLS_DES_KEY_SIZE] ); /** @@ -159,6 +161,7 @@ int mbedtls_des_key_check_key_parity( const unsigned char key[MBEDTLS_DES_KEY_SI * security risk. We recommend considering stronger ciphers * instead. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_des_key_check_weak( const unsigned char key[MBEDTLS_DES_KEY_SIZE] ); /** @@ -173,6 +176,7 @@ int mbedtls_des_key_check_weak( const unsigned char key[MBEDTLS_DES_KEY_SIZE] ); * security risk. We recommend considering stronger ciphers * instead. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_des_setkey_enc( mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE] ); /** @@ -187,6 +191,7 @@ int mbedtls_des_setkey_enc( mbedtls_des_context *ctx, const unsigned char key[MB * security risk. We recommend considering stronger ciphers * instead. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_des_setkey_dec( mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE] ); /** @@ -197,6 +202,7 @@ int mbedtls_des_setkey_dec( mbedtls_des_context *ctx, const unsigned char key[MB * * \return 0 */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_des3_set2key_enc( mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE * 2] ); @@ -208,6 +214,7 @@ int mbedtls_des3_set2key_enc( mbedtls_des3_context *ctx, * * \return 0 */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_des3_set2key_dec( mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE * 2] ); @@ -219,6 +226,7 @@ int mbedtls_des3_set2key_dec( mbedtls_des3_context *ctx, * * \return 0 */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_des3_set3key_enc( mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE * 3] ); @@ -230,6 +238,7 @@ int mbedtls_des3_set3key_enc( mbedtls_des3_context *ctx, * * \return 0 */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_des3_set3key_dec( mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE * 3] ); @@ -246,6 +255,7 @@ int mbedtls_des3_set3key_dec( mbedtls_des3_context *ctx, * security risk. We recommend considering stronger ciphers * instead. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_des_crypt_ecb( mbedtls_des_context *ctx, const unsigned char input[8], unsigned char output[8] ); @@ -273,6 +283,7 @@ int mbedtls_des_crypt_ecb( mbedtls_des_context *ctx, * security risk. We recommend considering stronger ciphers * instead. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_des_crypt_cbc( mbedtls_des_context *ctx, int mode, size_t length, @@ -290,6 +301,7 @@ int mbedtls_des_crypt_cbc( mbedtls_des_context *ctx, * * \return 0 if successful */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_des3_crypt_ecb( mbedtls_des3_context *ctx, const unsigned char input[8], unsigned char output[8] ); @@ -315,6 +327,7 @@ int mbedtls_des3_crypt_ecb( mbedtls_des3_context *ctx, * * \return 0 if successful, or MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_des3_crypt_cbc( mbedtls_des3_context *ctx, int mode, size_t length, @@ -345,6 +358,7 @@ void mbedtls_des_setkey( uint32_t SK[32], * * \return 0 if successful, or 1 if the test failed */ +MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_des_self_test( int verbose ); #endif /* MBEDTLS_SELF_TEST */ diff --git a/Externals/mbedtls/include/mbedtls/dhm.h b/Externals/mbedtls/include/mbedtls/dhm.h index 2909f5fbc8e8..c4b15a2c4527 100644 --- a/Externals/mbedtls/include/mbedtls/dhm.h +++ b/Externals/mbedtls/include/mbedtls/dhm.h @@ -44,7 +44,7 @@ * */ /* - * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -58,37 +58,46 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_DHM_H #define MBEDTLS_DHM_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "bignum.h" +#include "mbedtls/bignum.h" /* * DHM Error codes */ -#define MBEDTLS_ERR_DHM_BAD_INPUT_DATA -0x3080 /**< Bad input parameters. */ -#define MBEDTLS_ERR_DHM_READ_PARAMS_FAILED -0x3100 /**< Reading of the DHM parameters failed. */ -#define MBEDTLS_ERR_DHM_MAKE_PARAMS_FAILED -0x3180 /**< Making of the DHM parameters failed. */ -#define MBEDTLS_ERR_DHM_READ_PUBLIC_FAILED -0x3200 /**< Reading of the public values failed. */ -#define MBEDTLS_ERR_DHM_MAKE_PUBLIC_FAILED -0x3280 /**< Making of the public value failed. */ -#define MBEDTLS_ERR_DHM_CALC_SECRET_FAILED -0x3300 /**< Calculation of the DHM secret failed. */ -#define MBEDTLS_ERR_DHM_INVALID_FORMAT -0x3380 /**< The ASN.1 data is not formatted correctly. */ -#define MBEDTLS_ERR_DHM_ALLOC_FAILED -0x3400 /**< Allocation of memory failed. */ -#define MBEDTLS_ERR_DHM_FILE_IO_ERROR -0x3480 /**< Read or write of file failed. */ +/** Bad input parameters. */ +#define MBEDTLS_ERR_DHM_BAD_INPUT_DATA -0x3080 +/** Reading of the DHM parameters failed. */ +#define MBEDTLS_ERR_DHM_READ_PARAMS_FAILED -0x3100 +/** Making of the DHM parameters failed. */ +#define MBEDTLS_ERR_DHM_MAKE_PARAMS_FAILED -0x3180 +/** Reading of the public values failed. */ +#define MBEDTLS_ERR_DHM_READ_PUBLIC_FAILED -0x3200 +/** Making of the public value failed. */ +#define MBEDTLS_ERR_DHM_MAKE_PUBLIC_FAILED -0x3280 +/** Calculation of the DHM secret failed. */ +#define MBEDTLS_ERR_DHM_CALC_SECRET_FAILED -0x3300 +/** The ASN.1 data is not formatted correctly. */ +#define MBEDTLS_ERR_DHM_INVALID_FORMAT -0x3380 +/** Allocation of memory failed. */ +#define MBEDTLS_ERR_DHM_ALLOC_FAILED -0x3400 +/** Read or write of file failed. */ +#define MBEDTLS_ERR_DHM_FILE_IO_ERROR -0x3480 /* MBEDTLS_ERR_DHM_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_DHM_HW_ACCEL_FAILED -0x3500 /**< DHM hardware accelerator failed. */ +/** DHM hardware accelerator failed. */ +#define MBEDTLS_ERR_DHM_HW_ACCEL_FAILED -0x3500 -#define MBEDTLS_ERR_DHM_SET_GROUP_FAILED -0x3580 /**< Setting the modulus and generator failed. */ +/** Setting the modulus and generator failed. */ +#define MBEDTLS_ERR_DHM_SET_GROUP_FAILED -0x3580 #ifdef __cplusplus extern "C" { @@ -298,7 +307,6 @@ int mbedtls_dhm_calc_secret( mbedtls_dhm_context *ctx, void mbedtls_dhm_free( mbedtls_dhm_context *ctx ); #if defined(MBEDTLS_ASN1_PARSE_C) -/** \ingroup x509_module */ /** * \brief This function parses DHM parameters in PEM or DER format. * @@ -317,7 +325,6 @@ int mbedtls_dhm_parse_dhm( mbedtls_dhm_context *dhm, const unsigned char *dhmin, size_t dhminlen ); #if defined(MBEDTLS_FS_IO) -/** \ingroup x509_module */ /** * \brief This function loads and parses DHM parameters from a file. * diff --git a/Externals/mbedtls/include/mbedtls/ecdh.h b/Externals/mbedtls/include/mbedtls/ecdh.h index 4479a1d46fb3..05855cdf10bb 100644 --- a/Externals/mbedtls/include/mbedtls/ecdh.h +++ b/Externals/mbedtls/include/mbedtls/ecdh.h @@ -13,7 +13,7 @@ * Cryptography. */ /* - * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -27,32 +27,23 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_ECDH_H #define MBEDTLS_ECDH_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "ecp.h" +#include "mbedtls/ecp.h" -/* - * Use a backward compatible ECDH context. - * - * This flag is always enabled for now and future versions might add a - * configuration option that conditionally undefines this flag. - * The configuration option in question may have a different name. - * - * Features undefining this flag, must have a warning in their description in - * config.h stating that the feature breaks backward compatibility. - */ -#define MBEDTLS_ECDH_LEGACY_CONTEXT +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) +#undef MBEDTLS_ECDH_LEGACY_CONTEXT +#include "everest/everest.h" +#endif #ifdef __cplusplus extern "C" { @@ -78,6 +69,9 @@ typedef enum { MBEDTLS_ECDH_VARIANT_NONE = 0, /*!< Implementation not defined. */ MBEDTLS_ECDH_VARIANT_MBEDTLS_2_0,/*!< The default Mbed TLS implementation */ +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) + MBEDTLS_ECDH_VARIANT_EVEREST /*!< Everest implementation */ +#endif } mbedtls_ecdh_variant; /** @@ -131,6 +125,9 @@ typedef struct mbedtls_ecdh_context union { mbedtls_ecdh_context_mbed mbed_ecdh; +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) + mbedtls_ecdh_context_everest everest_ecdh; +#endif } ctx; /*!< Implementation-specific context. The context in use is specified by the \c var field. */ @@ -145,6 +142,15 @@ typedef struct mbedtls_ecdh_context } mbedtls_ecdh_context; +/** + * \brief Check whether a given group can be used for ECDH. + * + * \param gid The ECP group ID to check. + * + * \return \c 1 if the group can be used, \c 0 otherwise + */ +int mbedtls_ecdh_can_do( mbedtls_ecp_group_id gid ); + /** * \brief This function generates an ECDH keypair on an elliptic * curve. diff --git a/Externals/mbedtls/include/mbedtls/ecdsa.h b/Externals/mbedtls/include/mbedtls/ecdsa.h index f8b28507c21d..264a638bb520 100644 --- a/Externals/mbedtls/include/mbedtls/ecdsa.h +++ b/Externals/mbedtls/include/mbedtls/ecdsa.h @@ -11,7 +11,7 @@ * */ /* - * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -25,41 +25,44 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_ECDSA_H #define MBEDTLS_ECDSA_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "ecp.h" -#include "md.h" +#include "mbedtls/ecp.h" +#include "mbedtls/md.h" -/* - * RFC-4492 page 20: +/** + * \brief Maximum ECDSA signature size for a given curve bit size * + * \param bits Curve size in bits + * \return Maximum signature size in bytes + * + * \note This macro returns a compile-time constant if its argument + * is one. It may evaluate its argument multiple times. + */ +/* * Ecdsa-Sig-Value ::= SEQUENCE { * r INTEGER, * s INTEGER * } * - * Size is at most - * 1 (tag) + 1 (len) + 1 (initial 0) + ECP_MAX_BYTES for each of r and s, - * twice that + 1 (tag) + 2 (len) for the sequence - * (assuming ECP_MAX_BYTES is less than 126 for r and s, - * and less than 124 (total len <= 255) for the sequence) + * For each of r and s, the value (V) may include an extra initial "0" bit. */ -#if MBEDTLS_ECP_MAX_BYTES > 124 -#error "MBEDTLS_ECP_MAX_BYTES bigger than expected, please fix MBEDTLS_ECDSA_MAX_LEN" -#endif +#define MBEDTLS_ECDSA_MAX_SIG_LEN( bits ) \ + ( /*T,L of SEQUENCE*/ ( ( bits ) >= 61 * 8 ? 3 : 2 ) + \ + /*T,L of r,s*/ 2 * ( ( ( bits ) >= 127 * 8 ? 3 : 2 ) + \ + /*V of r,s*/ ( ( bits ) + 8 ) / 8 ) ) + /** The maximal size of an ECDSA signature in Bytes. */ -#define MBEDTLS_ECDSA_MAX_LEN ( 3 + 2 * ( 3 + MBEDTLS_ECP_MAX_BYTES ) ) +#define MBEDTLS_ECDSA_MAX_LEN MBEDTLS_ECDSA_MAX_SIG_LEN( MBEDTLS_ECP_MAX_BITS ) #ifdef __cplusplus extern "C" { @@ -120,6 +123,16 @@ typedef void mbedtls_ecdsa_restart_ctx; #endif /* MBEDTLS_ECP_RESTARTABLE */ +/** + * \brief This function checks whether a given group can be used + * for ECDSA. + * + * \param gid The ECP group ID to check. + * + * \return \c 1 if the group can be used, \c 0 otherwise + */ +int mbedtls_ecdsa_can_do( mbedtls_ecp_group_id gid ); + /** * \brief This function computes the ECDSA signature of a * previously-hashed message. @@ -161,6 +174,12 @@ int mbedtls_ecdsa_sign( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); #if defined(MBEDTLS_ECDSA_DETERMINISTIC) +#if ! defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif /** * \brief This function computes the ECDSA signature of a * previously-hashed message, deterministic version. @@ -175,6 +194,19 @@ int mbedtls_ecdsa_sign( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, * (SECG): SEC1 Elliptic Curve Cryptography, section * 4.1.3, step 5. * + * \warning Since the output of the internal RNG is always the same for + * the same key and message, this limits the efficiency of + * blinding and leaks information through side channels. For + * secure behavior use mbedtls_ecdsa_sign_det_ext() instead. + * + * (Optimally the blinding is a random value that is different + * on every execution. In this case the blinding is still + * random from the attackers perspective, but is the same on + * each execution. This means that this blinding does not + * prevent attackers from recovering secrets by combining + * several measurement traces, but may prevent some attacks + * that exploit relationships between secret data.) + * * \see ecp.h * * \param grp The context for the elliptic curve to use. @@ -199,7 +231,55 @@ int mbedtls_ecdsa_sign( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, int mbedtls_ecdsa_sign_det( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, const mbedtls_mpi *d, const unsigned char *buf, size_t blen, - mbedtls_md_type_t md_alg ); + mbedtls_md_type_t md_alg ) MBEDTLS_DEPRECATED; +#undef MBEDTLS_DEPRECATED +#endif /* MBEDTLS_DEPRECATED_REMOVED */ + +/** + * \brief This function computes the ECDSA signature of a + * previously-hashed message, deterministic version. + * + * For more information, see RFC-6979: Deterministic + * Usage of the Digital Signature Algorithm (DSA) and Elliptic + * Curve Digital Signature Algorithm (ECDSA). + * + * \note If the bitlength of the message hash is larger than the + * bitlength of the group order, then the hash is truncated as + * defined in Standards for Efficient Cryptography Group + * (SECG): SEC1 Elliptic Curve Cryptography, section + * 4.1.3, step 5. + * + * \see ecp.h + * + * \param grp The context for the elliptic curve to use. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param r The MPI context in which to store the first part + * the signature. This must be initialized. + * \param s The MPI context in which to store the second part + * the signature. This must be initialized. + * \param d The private signing key. This must be initialized + * and setup, for example through mbedtls_ecp_gen_privkey(). + * \param buf The hashed content to be signed. This must be a readable + * buffer of length \p blen Bytes. It may be \c NULL if + * \p blen is zero. + * \param blen The length of \p buf in Bytes. + * \param md_alg The hash algorithm used to hash the original data. + * \param f_rng_blind The RNG function used for blinding. This must not be + * \c NULL. + * \param p_rng_blind The RNG context to be passed to \p f_rng. This may be + * \c NULL if \p f_rng doesn't need a context parameter. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX or \c MBEDTLS_MPI_XXX + * error code on failure. + */ +int mbedtls_ecdsa_sign_det_ext( mbedtls_ecp_group *grp, mbedtls_mpi *r, + mbedtls_mpi *s, const mbedtls_mpi *d, + const unsigned char *buf, size_t blen, + mbedtls_md_type_t md_alg, + int (*f_rng_blind)(void *, unsigned char *, size_t), + void *p_rng_blind ); #endif /* MBEDTLS_ECDSA_DETERMINISTIC */ /** @@ -278,7 +358,8 @@ int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp, * the signature written. Must not be \c NULL. * \param f_rng The RNG function. This must not be \c NULL if * #MBEDTLS_ECDSA_DETERMINISTIC is unset. Otherwise, - * it is unused and may be set to \c NULL. + * it is used only for blinding and may be set to \c NULL, but + * doing so is DEPRECATED. * \param p_rng The RNG context to be passed to \p f_rng. This may be * \c NULL if \p f_rng is \c NULL or doesn't use a context. * diff --git a/Externals/mbedtls/include/mbedtls/ecjpake.h b/Externals/mbedtls/include/mbedtls/ecjpake.h index 3d8d02ae6464..891705d8c4f3 100644 --- a/Externals/mbedtls/include/mbedtls/ecjpake.h +++ b/Externals/mbedtls/include/mbedtls/ecjpake.h @@ -4,7 +4,7 @@ * \brief Elliptic curve J-PAKE */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,8 +18,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_ECJPAKE_H #define MBEDTLS_ECJPAKE_H @@ -41,13 +39,13 @@ * also be use outside TLS. */ #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "ecp.h" -#include "md.h" +#include "mbedtls/ecp.h" +#include "mbedtls/md.h" #ifdef __cplusplus extern "C" { diff --git a/Externals/mbedtls/include/mbedtls/ecp.h b/Externals/mbedtls/include/mbedtls/ecp.h index 24017780d4d8..0924341e0029 100644 --- a/Externals/mbedtls/include/mbedtls/ecp.h +++ b/Externals/mbedtls/include/mbedtls/ecp.h @@ -15,7 +15,7 @@ */ /* - * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -29,37 +29,65 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_ECP_H #define MBEDTLS_ECP_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "bignum.h" +#include "mbedtls/bignum.h" /* * ECP error codes */ -#define MBEDTLS_ERR_ECP_BAD_INPUT_DATA -0x4F80 /**< Bad input parameters to function. */ -#define MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL -0x4F00 /**< The buffer is too small to write to. */ -#define MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE -0x4E80 /**< The requested feature is not available, for example, the requested curve is not supported. */ -#define MBEDTLS_ERR_ECP_VERIFY_FAILED -0x4E00 /**< The signature is not valid. */ -#define MBEDTLS_ERR_ECP_ALLOC_FAILED -0x4D80 /**< Memory allocation failed. */ -#define MBEDTLS_ERR_ECP_RANDOM_FAILED -0x4D00 /**< Generation of random value, such as ephemeral key, failed. */ -#define MBEDTLS_ERR_ECP_INVALID_KEY -0x4C80 /**< Invalid private or public key. */ -#define MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH -0x4C00 /**< The buffer contains a valid signature followed by more data. */ +/** Bad input parameters to function. */ +#define MBEDTLS_ERR_ECP_BAD_INPUT_DATA -0x4F80 +/** The buffer is too small to write to. */ +#define MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL -0x4F00 +/** The requested feature is not available, for example, the requested curve is not supported. */ +#define MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE -0x4E80 +/** The signature is not valid. */ +#define MBEDTLS_ERR_ECP_VERIFY_FAILED -0x4E00 +/** Memory allocation failed. */ +#define MBEDTLS_ERR_ECP_ALLOC_FAILED -0x4D80 +/** Generation of random value, such as ephemeral key, failed. */ +#define MBEDTLS_ERR_ECP_RANDOM_FAILED -0x4D00 +/** Invalid private or public key. */ +#define MBEDTLS_ERR_ECP_INVALID_KEY -0x4C80 +/** The buffer contains a valid signature followed by more data. */ +#define MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH -0x4C00 /* MBEDTLS_ERR_ECP_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_ECP_HW_ACCEL_FAILED -0x4B80 /**< The ECP hardware accelerator failed. */ - -#define MBEDTLS_ERR_ECP_IN_PROGRESS -0x4B00 /**< Operation in progress, call again with the same parameters to continue. */ +/** The ECP hardware accelerator failed. */ +#define MBEDTLS_ERR_ECP_HW_ACCEL_FAILED -0x4B80 + +/** Operation in progress, call again with the same parameters to continue. */ +#define MBEDTLS_ERR_ECP_IN_PROGRESS -0x4B00 + +/* Flags indicating whether to include code that is specific to certain + * types of curves. These flags are for internal library use only. */ +#if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) +#define MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED +#endif +#if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) || \ + defined(MBEDTLS_ECP_DP_CURVE448_ENABLED) +#define MBEDTLS_ECP_MONTGOMERY_ENABLED +#endif #ifdef __cplusplus extern "C" { @@ -74,6 +102,21 @@ extern "C" { * parameters. Therefore, only standardized domain parameters from trusted * sources should be used. See mbedtls_ecp_group_load(). */ +/* Note: when adding a new curve: + * - Add it at the end of this enum, otherwise you'll break the ABI by + * changing the numerical value for existing curves. + * - Increment MBEDTLS_ECP_DP_MAX below if needed. + * - Update the calculation of MBEDTLS_ECP_MAX_BITS_MIN below. + * - Add the corresponding MBEDTLS_ECP_DP_xxx_ENABLED macro definition to + * config.h. + * - List the curve as a dependency of MBEDTLS_ECP_C and + * MBEDTLS_ECDSA_C if supported in check_config.h. + * - Add the curve to the appropriate curve type macro + * MBEDTLS_ECP_yyy_ENABLED above. + * - Add the necessary definitions to ecp_curves.c. + * - Add the curve to the ecp_supported_curves array in ecp.c. + * - Add the curve to applicable profiles in x509_crt.c if applicable. + */ typedef enum { MBEDTLS_ECP_DP_NONE = 0, /*!< Curve not defined. */ @@ -99,6 +142,16 @@ typedef enum */ #define MBEDTLS_ECP_DP_MAX 12 +/* + * Curve types + */ +typedef enum +{ + MBEDTLS_ECP_TYPE_NONE = 0, + MBEDTLS_ECP_TYPE_SHORT_WEIERSTRASS, /* y^2 = x^3 + a x + b */ + MBEDTLS_ECP_TYPE_MONTGOMERY, /* y^2 = x^3 + a x^2 + x */ +} mbedtls_ecp_curve_type; + /** * Curve information, for use by other modules. */ @@ -129,6 +182,40 @@ typedef struct mbedtls_ecp_point } mbedtls_ecp_point; +/* Determine the minimum safe value of MBEDTLS_ECP_MAX_BITS. */ +#if !defined(MBEDTLS_ECP_C) +#define MBEDTLS_ECP_MAX_BITS_MIN 0 +/* Note: the curves must be listed in DECREASING size! */ +#elif defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) +#define MBEDTLS_ECP_MAX_BITS_MIN 521 +#elif defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) +#define MBEDTLS_ECP_MAX_BITS_MIN 512 +#elif defined(MBEDTLS_ECP_DP_CURVE448_ENABLED) +#define MBEDTLS_ECP_MAX_BITS_MIN 448 +#elif defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) +#define MBEDTLS_ECP_MAX_BITS_MIN 384 +#elif defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) +#define MBEDTLS_ECP_MAX_BITS_MIN 384 +#elif defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) +#define MBEDTLS_ECP_MAX_BITS_MIN 256 +#elif defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) +#define MBEDTLS_ECP_MAX_BITS_MIN 256 +#elif defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) +#define MBEDTLS_ECP_MAX_BITS_MIN 256 +#elif defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) +#define MBEDTLS_ECP_MAX_BITS_MIN 255 +#elif defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) +#define MBEDTLS_ECP_MAX_BITS_MIN 225 // n is slightly above 2^224 +#elif defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) +#define MBEDTLS_ECP_MAX_BITS_MIN 224 +#elif defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) +#define MBEDTLS_ECP_MAX_BITS_MIN 192 +#elif defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) +#define MBEDTLS_ECP_MAX_BITS_MIN 192 +#else +#error "MBEDTLS_ECP_C enabled, but no curve?" +#endif + #if !defined(MBEDTLS_ECP_ALT) /* * default mbed TLS elliptic curve arithmetic implementation @@ -203,11 +290,23 @@ mbedtls_ecp_group; * \{ */ -#if !defined(MBEDTLS_ECP_MAX_BITS) +#if defined(MBEDTLS_ECP_MAX_BITS) + +#if MBEDTLS_ECP_MAX_BITS < MBEDTLS_ECP_MAX_BITS_MIN +#error "MBEDTLS_ECP_MAX_BITS is smaller than the largest supported curve" +#endif + +#elif defined(MBEDTLS_ECP_C) /** * The maximum size of the groups, that is, of \c N and \c P. */ -#define MBEDTLS_ECP_MAX_BITS 521 /**< The maximum size of groups, in bits. */ +#define MBEDTLS_ECP_MAX_BITS MBEDTLS_ECP_MAX_BITS_MIN + +#else +/* MBEDTLS_ECP_MAX_BITS is not relevant without MBEDTLS_ECP_C, but set it + * to a nonzero value so that code that unconditionally allocates an array + * of a size based on it keeps working if built without ECC support. */ +#define MBEDTLS_ECP_MAX_BITS 1 #endif #define MBEDTLS_ECP_MAX_BYTES ( ( MBEDTLS_ECP_MAX_BITS + 7 ) / 8 ) @@ -216,7 +315,8 @@ mbedtls_ecp_group; #if !defined(MBEDTLS_ECP_WINDOW_SIZE) /* * Maximum "window" size used for point multiplication. - * Default: 6. + * Default: a point where higher memory usage yields disminishing performance + * returns. * Minimum value: 2. Maximum value: 7. * * Result is an array of at most ( 1 << ( MBEDTLS_ECP_WINDOW_SIZE - 1 ) ) @@ -233,7 +333,7 @@ mbedtls_ecp_group; * 224 475 475 453 398 342 * 192 640 640 633 587 476 */ -#define MBEDTLS_ECP_WINDOW_SIZE 6 /**< The maximum window size used. */ +#define MBEDTLS_ECP_WINDOW_SIZE 4 /**< The maximum window size used. */ #endif /* MBEDTLS_ECP_WINDOW_SIZE */ #if !defined(MBEDTLS_ECP_FIXED_POINT_OPTIM) @@ -417,10 +517,20 @@ void mbedtls_ecp_set_max_ops( unsigned max_ops ); int mbedtls_ecp_restart_is_enabled( void ); #endif /* MBEDTLS_ECP_RESTARTABLE */ +/* + * Get the type of a curve + */ +mbedtls_ecp_curve_type mbedtls_ecp_get_type( const mbedtls_ecp_group *grp ); + /** * \brief This function retrieves the information defined in - * mbedtls_ecp_curve_info() for all supported curves in order - * of preference. + * mbedtls_ecp_curve_info() for all supported curves. + * + * \note This function returns information about all curves + * supported by the library. Some curves may not be + * supported for all algorithms. Call mbedtls_ecdh_can_do() + * or mbedtls_ecdsa_can_do() to check if a curve is + * supported for ECDH or ECDSA. * * \return A statically allocated array. The last entry is 0. */ @@ -431,6 +541,12 @@ const mbedtls_ecp_curve_info *mbedtls_ecp_curve_list( void ); * identifiers of all supported curves in the order of * preference. * + * \note This function returns information about all curves + * supported by the library. Some curves may not be + * supported for all algorithms. Call mbedtls_ecdh_can_do() + * or mbedtls_ecdsa_can_do() to check if a curve is + * supported for ECDH or ECDSA. + * * \return A statically allocated array, * terminated with MBEDTLS_ECP_DP_NONE. */ @@ -482,7 +598,7 @@ void mbedtls_ecp_point_init( mbedtls_ecp_point *pt ); * * \note After this function is called, domain parameters * for various ECP groups can be loaded through the - * mbedtls_ecp_load() or mbedtls_ecp_tls_read_group() + * mbedtls_ecp_group_load() or mbedtls_ecp_tls_read_group() * functions. */ void mbedtls_ecp_group_init( mbedtls_ecp_group *grp ); @@ -626,6 +742,9 @@ int mbedtls_ecp_point_read_string( mbedtls_ecp_point *P, int radix, * \param P The point to export. This must be initialized. * \param format The point format. This must be either * #MBEDTLS_ECP_PF_COMPRESSED or #MBEDTLS_ECP_PF_UNCOMPRESSED. + * (For groups without these formats, this parameter is + * ignored. But it still has to be either of the above + * values.) * \param olen The address at which to store the length of * the output in Bytes. This must not be \c NULL. * \param buf The output buffer. This must be a writable buffer @@ -635,11 +754,14 @@ int mbedtls_ecp_point_read_string( mbedtls_ecp_point *P, int radix, * \return \c 0 on success. * \return #MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL if the output buffer * is too small to hold the point. + * \return #MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the point format + * or the export for the given group is not implemented. * \return Another negative error code on other kinds of failure. */ -int mbedtls_ecp_point_write_binary( const mbedtls_ecp_group *grp, const mbedtls_ecp_point *P, - int format, size_t *olen, - unsigned char *buf, size_t buflen ); +int mbedtls_ecp_point_write_binary( const mbedtls_ecp_group *grp, + const mbedtls_ecp_point *P, + int format, size_t *olen, + unsigned char *buf, size_t buflen ); /** * \brief This function imports a point from unsigned binary data. @@ -660,8 +782,8 @@ int mbedtls_ecp_point_write_binary( const mbedtls_ecp_group *grp, const mbedtls_ * \return \c 0 on success. * \return #MBEDTLS_ERR_ECP_BAD_INPUT_DATA if the input is invalid. * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED on memory-allocation failure. - * \return #MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the point format - * is not implemented. + * \return #MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the import for the + * given group is not implemented. */ int mbedtls_ecp_point_read_binary( const mbedtls_ecp_group *grp, mbedtls_ecp_point *P, @@ -813,6 +935,9 @@ int mbedtls_ecp_tls_write_group( const mbedtls_ecp_group *grp, * intermediate results to prevent potential timing attacks * targeting these results. We recommend always providing * a non-NULL \p f_rng. The overhead is negligible. + * Note: unless #MBEDTLS_ECP_NO_INTERNAL_RNG is defined, when + * \p f_rng is NULL, an internal RNG (seeded from the value + * of \p m) will be used instead. * * \param grp The ECP group to use. * This must be initialized and have group parameters @@ -870,6 +995,7 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, mbedtls_ecp_restart_ctx *rs_ctx ); +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) /** * \brief This function performs multiplication and addition of two * points by integers: \p R = \p m * \p P + \p n * \p Q @@ -879,6 +1005,10 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, * \note In contrast to mbedtls_ecp_mul(), this function does not * guarantee a constant execution flow and timing. * + * \note This function is only defined for short Weierstrass curves. + * It may not be included in builds without any short + * Weierstrass curve. + * * \param grp The ECP group to use. * This must be initialized and have group parameters * set, for example through mbedtls_ecp_group_load(). @@ -897,6 +1027,8 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, * valid private keys, or \p P or \p Q are not valid public * keys. * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED on memory-allocation failure. + * \return #MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if \p grp does not + * designate a short Weierstrass curve. * \return Another negative error code on other kinds of failure. */ int mbedtls_ecp_muladd( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, @@ -914,6 +1046,10 @@ int mbedtls_ecp_muladd( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, * but it can return early and restart according to the limit * set with \c mbedtls_ecp_set_max_ops() to reduce blocking. * + * \note This function is only defined for short Weierstrass curves. + * It may not be included in builds without any short + * Weierstrass curve. + * * \param grp The ECP group to use. * This must be initialized and have group parameters * set, for example through mbedtls_ecp_group_load(). @@ -933,6 +1069,8 @@ int mbedtls_ecp_muladd( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, * valid private keys, or \p P or \p Q are not valid public * keys. * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED on memory-allocation failure. + * \return #MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if \p grp does not + * designate a short Weierstrass curve. * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached: see \c mbedtls_ecp_set_max_ops(). * \return Another negative error code on other kinds of failure. @@ -942,6 +1080,7 @@ int mbedtls_ecp_muladd_restartable( const mbedtls_mpi *m, const mbedtls_ecp_point *P, const mbedtls_mpi *n, const mbedtls_ecp_point *Q, mbedtls_ecp_restart_ctx *rs_ctx ); +#endif /* MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED */ /** * \brief This function checks that a point is a valid public key @@ -1093,6 +1232,46 @@ int mbedtls_ecp_gen_key( mbedtls_ecp_group_id grp_id, mbedtls_ecp_keypair *key, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); +/** + * \brief This function reads an elliptic curve private key. + * + * \param grp_id The ECP group identifier. + * \param key The destination key. + * \param buf The buffer containing the binary representation of the + * key. (Big endian integer for Weierstrass curves, byte + * string for Montgomery curves.) + * \param buflen The length of the buffer in bytes. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_INVALID_KEY error if the key is + * invalid. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed. + * \return #MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the operation for + * the group is not implemented. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_ecp_read_key( mbedtls_ecp_group_id grp_id, mbedtls_ecp_keypair *key, + const unsigned char *buf, size_t buflen ); + +/** + * \brief This function exports an elliptic curve private key. + * + * \param key The private key. + * \param buf The output buffer for containing the binary representation + * of the key. (Big endian integer for Weierstrass curves, byte + * string for Montgomery curves.) + * \param buflen The total length of the buffer in bytes. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL if the \p key + representation is larger than the available space in \p buf. + * \return #MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the operation for + * the group is not implemented. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_ecp_write_key( mbedtls_ecp_keypair *key, + unsigned char *buf, size_t buflen ); + /** * \brief This function checks that the keypair objects * \p pub and \p prv have the same group and the diff --git a/Externals/mbedtls/include/mbedtls/ecp_internal.h b/Externals/mbedtls/include/mbedtls/ecp_internal.h index 7625ed48e1af..6a47a8ff27e8 100644 --- a/Externals/mbedtls/include/mbedtls/ecp_internal.h +++ b/Externals/mbedtls/include/mbedtls/ecp_internal.h @@ -5,7 +5,7 @@ * point arithmetic. */ /* - * Copyright (C) 2016, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -19,8 +19,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -62,7 +60,7 @@ #define MBEDTLS_ECP_INTERNAL_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -105,7 +103,7 @@ int mbedtls_internal_ecp_init( const mbedtls_ecp_group *grp ); */ void mbedtls_internal_ecp_free( const mbedtls_ecp_group *grp ); -#if defined(ECP_SHORTWEIERSTRASS) +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) #if defined(MBEDTLS_ECP_RANDOMIZE_JAC_ALT) /** @@ -245,9 +243,9 @@ int mbedtls_internal_ecp_normalize_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *pt ); #endif -#endif /* ECP_SHORTWEIERSTRASS */ +#endif /* MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED */ -#if defined(ECP_MONTGOMERY) +#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) #if defined(MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT) int mbedtls_internal_ecp_double_add_mxz( const mbedtls_ecp_group *grp, @@ -291,7 +289,7 @@ int mbedtls_internal_ecp_normalize_mxz( const mbedtls_ecp_group *grp, mbedtls_ecp_point *P ); #endif -#endif /* ECP_MONTGOMERY */ +#endif /* MBEDTLS_ECP_MONTGOMERY_ENABLED */ #endif /* MBEDTLS_ECP_INTERNAL_ALT */ diff --git a/Externals/mbedtls/include/mbedtls/entropy.h b/Externals/mbedtls/include/mbedtls/entropy.h index ca06dc3c58e8..deb3c50300b2 100644 --- a/Externals/mbedtls/include/mbedtls/entropy.h +++ b/Externals/mbedtls/include/mbedtls/entropy.h @@ -4,7 +4,7 @@ * \brief Entropy accumulator implementation */ /* - * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,14 +18,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_ENTROPY_H #define MBEDTLS_ENTROPY_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -33,28 +31,33 @@ #include #if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256) -#include "sha512.h" +#include "mbedtls/sha512.h" #define MBEDTLS_ENTROPY_SHA512_ACCUMULATOR #else #if defined(MBEDTLS_SHA256_C) #define MBEDTLS_ENTROPY_SHA256_ACCUMULATOR -#include "sha256.h" +#include "mbedtls/sha256.h" #endif #endif #if defined(MBEDTLS_THREADING_C) -#include "threading.h" +#include "mbedtls/threading.h" #endif #if defined(MBEDTLS_HAVEGE_C) -#include "havege.h" +#include "mbedtls/havege.h" #endif -#define MBEDTLS_ERR_ENTROPY_SOURCE_FAILED -0x003C /**< Critical entropy source failure. */ -#define MBEDTLS_ERR_ENTROPY_MAX_SOURCES -0x003E /**< No more sources can be added. */ -#define MBEDTLS_ERR_ENTROPY_NO_SOURCES_DEFINED -0x0040 /**< No sources have been added to poll. */ -#define MBEDTLS_ERR_ENTROPY_NO_STRONG_SOURCE -0x003D /**< No strong sources have been added to poll. */ -#define MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR -0x003F /**< Read/write error in file. */ +/** Critical entropy source failure. */ +#define MBEDTLS_ERR_ENTROPY_SOURCE_FAILED -0x003C +/** No more sources can be added. */ +#define MBEDTLS_ERR_ENTROPY_MAX_SOURCES -0x003E +/** No sources have been added to poll. */ +#define MBEDTLS_ERR_ENTROPY_NO_SOURCES_DEFINED -0x0040 +/** No strong sources have been added to poll. */ +#define MBEDTLS_ERR_ENTROPY_NO_STRONG_SOURCE -0x003D +/** Read/write error in file. */ +#define MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR -0x003F /** * \name SECTION: Module settings @@ -122,13 +125,15 @@ mbedtls_entropy_source_state; */ typedef struct mbedtls_entropy_context { - int accumulator_started; + int accumulator_started; /* 0 after init. + * 1 after the first update. + * -1 after free. */ #if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR) mbedtls_sha512_context accumulator; -#else +#elif defined(MBEDTLS_ENTROPY_SHA256_ACCUMULATOR) mbedtls_sha256_context accumulator; #endif - int source_count; + int source_count; /* Number of entries used in source. */ mbedtls_entropy_source_state source[MBEDTLS_ENTROPY_MAX_SOURCES]; #if defined(MBEDTLS_HAVEGE_C) mbedtls_havege_state havege_data; diff --git a/Externals/mbedtls/include/mbedtls/entropy_poll.h b/Externals/mbedtls/include/mbedtls/entropy_poll.h index 94dd657eb956..e1d7491aa218 100644 --- a/Externals/mbedtls/include/mbedtls/entropy_poll.h +++ b/Externals/mbedtls/include/mbedtls/entropy_poll.h @@ -4,7 +4,7 @@ * \brief Platform-specific and custom entropy polling functions */ /* - * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,14 +18,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_ENTROPY_POLL_H #define MBEDTLS_ENTROPY_POLL_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif diff --git a/Externals/mbedtls/include/mbedtls/error.h b/Externals/mbedtls/include/mbedtls/error.h index bee0fe485ac6..50f253850804 100644 --- a/Externals/mbedtls/include/mbedtls/error.h +++ b/Externals/mbedtls/include/mbedtls/error.h @@ -4,7 +4,7 @@ * \brief Error to string translation */ /* - * Copyright (C) 2006-2018, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,20 +18,23 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_ERROR_H #define MBEDTLS_ERROR_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif #include +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) +#define inline __inline +#endif + /** * Error code layout. * @@ -52,9 +55,10 @@ * For historical reasons, low-level error codes are divided in even and odd, * even codes were assigned first, and -1 is reserved for other errors. * - * Low-level module errors (0x0002-0x007E, 0x0003-0x007F) + * Low-level module errors (0x0002-0x007E, 0x0001-0x007F) * * Module Nr Codes assigned + * ERROR 2 0x006E 0x0001 * MPI 7 0x0002-0x0010 * GCM 3 0x0012-0x0014 0x0013-0x0013 * BLOWFISH 3 0x0016-0x0018 0x0017-0x0017 @@ -86,7 +90,7 @@ * CHACHA20 3 0x0051-0x0055 * POLY1305 3 0x0057-0x005B * CHACHAPOLY 2 0x0054-0x0056 - * PLATFORM 1 0x0070-0x0072 + * PLATFORM 2 0x0070-0x0072 * * High-level module nr (3 bits - 0x0...-0x7...) * Name ID Nr of Errors @@ -100,8 +104,9 @@ * ECP 4 10 (Started from top) * MD 5 5 * HKDF 5 1 (Started from top) - * CIPHER 6 8 - * SSL 6 23 (Started from top) + * SSL 5 2 (Started from 0x5F00) + * CIPHER 6 8 (Started from 0x6080) + * SSL 6 24 (Started from top, plus 0x6000) * SSL 7 32 * * Module dependent error code (5 bits 0x.00.-0x.F8.) @@ -111,6 +116,59 @@ extern "C" { #endif +/** Generic error */ +#define MBEDTLS_ERR_ERROR_GENERIC_ERROR -0x0001 +/** This is a bug in the library */ +#define MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED -0x006E + +/** + * \brief Combines a high-level and low-level error code together. + * + * Wrapper macro for mbedtls_error_add(). See that function for + * more details. + */ +#define MBEDTLS_ERROR_ADD( high, low ) \ + mbedtls_error_add( high, low, __FILE__, __LINE__ ) + +#if defined(MBEDTLS_TEST_HOOKS) +/** + * \brief Testing hook called before adding/combining two error codes together. + * Only used when invasive testing is enabled via MBEDTLS_TEST_HOOKS. + */ +extern void (*mbedtls_test_hook_error_add)( int, int, const char *, int ); +#endif + +/** + * \brief Combines a high-level and low-level error code together. + * + * This function can be called directly however it is usually + * called via the #MBEDTLS_ERROR_ADD macro. + * + * While a value of zero is not a negative error code, it is still an + * error code (that denotes success) and can be combined with both a + * negative error code or another value of zero. + * + * \note When invasive testing is enabled via #MBEDTLS_TEST_HOOKS, also try to + * call \link mbedtls_test_hook_error_add \endlink. + * + * \param high high-level error code. See error.h for more details. + * \param low low-level error code. See error.h for more details. + * \param file file where this error code addition occurred. + * \param line line where this error code addition occurred. + */ +static inline int mbedtls_error_add( int high, int low, + const char *file, int line ) +{ +#if defined(MBEDTLS_TEST_HOOKS) + if( *mbedtls_test_hook_error_add != NULL ) + ( *mbedtls_test_hook_error_add )( high, low, file, line ); +#endif + (void)file; + (void)line; + + return( high + low ); +} + /** * \brief Translate a mbed TLS error code into a string representation, * Result is truncated if necessary and always includes a terminating @@ -122,6 +180,36 @@ extern "C" { */ void mbedtls_strerror( int errnum, char *buffer, size_t buflen ); +/** + * \brief Translate the high-level part of an Mbed TLS error code into a string + * representation. + * + * This function returns a const pointer to an un-modifiable string. The caller + * must not try to modify the string. It is intended to be used mostly for + * logging purposes. + * + * \param error_code error code + * + * \return The string representation of the error code, or \c NULL if the error + * code is unknown. + */ +const char * mbedtls_high_level_strerr( int error_code ); + +/** + * \brief Translate the low-level part of an Mbed TLS error code into a string + * representation. + * + * This function returns a const pointer to an un-modifiable string. The caller + * must not try to modify the string. It is intended to be used mostly for + * logging purposes. + * + * \param error_code error code + * + * \return The string representation of the error code, or \c NULL if the error + * code is unknown. + */ +const char * mbedtls_low_level_strerr( int error_code ); + #ifdef __cplusplus } #endif diff --git a/Externals/mbedtls/include/mbedtls/gcm.h b/Externals/mbedtls/include/mbedtls/gcm.h index fd130abd7cff..9723a17b65fd 100644 --- a/Externals/mbedtls/include/mbedtls/gcm.h +++ b/Externals/mbedtls/include/mbedtls/gcm.h @@ -12,7 +12,7 @@ * */ /* - * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -26,32 +26,33 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_GCM_H #define MBEDTLS_GCM_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "cipher.h" +#include "mbedtls/cipher.h" #include #define MBEDTLS_GCM_ENCRYPT 1 #define MBEDTLS_GCM_DECRYPT 0 -#define MBEDTLS_ERR_GCM_AUTH_FAILED -0x0012 /**< Authenticated decryption failed. */ +/** Authenticated decryption failed. */ +#define MBEDTLS_ERR_GCM_AUTH_FAILED -0x0012 /* MBEDTLS_ERR_GCM_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_GCM_HW_ACCEL_FAILED -0x0013 /**< GCM hardware accelerator failed. */ +/** GCM hardware accelerator failed. */ +#define MBEDTLS_ERR_GCM_HW_ACCEL_FAILED -0x0013 -#define MBEDTLS_ERR_GCM_BAD_INPUT -0x0014 /**< Bad input parameters to function. */ +/** Bad input parameters to function. */ +#define MBEDTLS_ERR_GCM_BAD_INPUT -0x0014 #ifdef __cplusplus extern "C" { @@ -157,7 +158,7 @@ int mbedtls_gcm_setkey( mbedtls_gcm_context *ctx, * than zero, this must be a writable buffer of at least that * size in Bytes. * \param tag_len The length of the tag to generate. - * \param tag The buffer for holding the tag. This must be a readable + * \param tag The buffer for holding the tag. This must be a writable * buffer of at least \p tag_len Bytes. * * \return \c 0 if the encryption or decryption was performed @@ -285,7 +286,7 @@ int mbedtls_gcm_update( mbedtls_gcm_context *ctx, * tag. The tag can have a maximum length of 16 Bytes. * * \param ctx The GCM context. This must be initialized. - * \param tag The buffer for holding the tag. This must be a readable + * \param tag The buffer for holding the tag. This must be a writable * buffer of at least \p tag_len Bytes. * \param tag_len The length of the tag to generate. This must be at least * four. diff --git a/Externals/mbedtls/include/mbedtls/havege.h b/Externals/mbedtls/include/mbedtls/havege.h index 4c1c86087a8c..7d27039e8c70 100644 --- a/Externals/mbedtls/include/mbedtls/havege.h +++ b/Externals/mbedtls/include/mbedtls/havege.h @@ -4,7 +4,7 @@ * \brief HAVEGE: HArdware Volatile Entropy Gathering and Expansion */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,19 +18,18 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_HAVEGE_H #define MBEDTLS_HAVEGE_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif #include +#include #define MBEDTLS_HAVEGE_COLLECT_SIZE 1024 @@ -43,9 +42,9 @@ extern "C" { */ typedef struct mbedtls_havege_state { - int PT1, PT2, offset[2]; - int pool[MBEDTLS_HAVEGE_COLLECT_SIZE]; - int WALK[8192]; + uint32_t PT1, PT2, offset[2]; + uint32_t pool[MBEDTLS_HAVEGE_COLLECT_SIZE]; + uint32_t WALK[8192]; } mbedtls_havege_state; diff --git a/Externals/mbedtls/include/mbedtls/hkdf.h b/Externals/mbedtls/include/mbedtls/hkdf.h index 40ee64eb03cd..223004b8ede6 100644 --- a/Externals/mbedtls/include/mbedtls/hkdf.h +++ b/Externals/mbedtls/include/mbedtls/hkdf.h @@ -7,39 +7,38 @@ * specified by RFC 5869. */ /* - * Copyright (C) 2016-2018, ARM Limited, All Rights Reserved - * SPDX-License-Identifier: Apache-2.0 + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBEDTLS_HKDF_H #define MBEDTLS_HKDF_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "md.h" +#include "mbedtls/md.h" /** * \name HKDF Error codes * \{ */ -#define MBEDTLS_ERR_HKDF_BAD_INPUT_DATA -0x5F80 /**< Bad input parameters to function. */ +/** Bad input parameters to function. */ +#define MBEDTLS_ERR_HKDF_BAD_INPUT_DATA -0x5F80 /* \} name */ #ifdef __cplusplus diff --git a/Externals/mbedtls/include/mbedtls/hmac_drbg.h b/Externals/mbedtls/include/mbedtls/hmac_drbg.h index 7eae32bbd67f..79132d4d9100 100644 --- a/Externals/mbedtls/include/mbedtls/hmac_drbg.h +++ b/Externals/mbedtls/include/mbedtls/hmac_drbg.h @@ -1,10 +1,14 @@ /** * \file hmac_drbg.h * - * \brief HMAC_DRBG (NIST SP 800-90A) + * \brief The HMAC_DRBG pseudorandom generator. + * + * This module implements the HMAC_DRBG pseudorandom generator described + * in NIST SP 800-90A: Recommendation for Random Number Generation Using + * Deterministic Random Bit Generators. */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,31 +22,33 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_HMAC_DRBG_H #define MBEDTLS_HMAC_DRBG_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "md.h" +#include "mbedtls/md.h" #if defined(MBEDTLS_THREADING_C) -#include "threading.h" +#include "mbedtls/threading.h" #endif /* * Error codes */ -#define MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG -0x0003 /**< Too many random requested in single call. */ -#define MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG -0x0005 /**< Input too large (Entropy + additional). */ -#define MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR -0x0007 /**< Read/write error in file. */ -#define MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED -0x0009 /**< The entropy source failed. */ +/** Too many random requested in single call. */ +#define MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG -0x0003 +/** Input too large (Entropy + additional). */ +#define MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG -0x0005 +/** Read/write error in file. */ +#define MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR -0x0007 +/** The entropy source failed. */ +#define MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED -0x0009 /** * \name SECTION: Module settings @@ -82,7 +88,7 @@ extern "C" { */ typedef struct mbedtls_hmac_drbg_context { - /* Working state: the key K is not stored explicitely, + /* Working state: the key K is not stored explicitly, * but is implied by the HMAC context */ mbedtls_md_context_t md_ctx; /*!< HMAC context (inc. K) */ unsigned char V[MBEDTLS_MD_MAX_SIZE]; /*!< V in the spec */ @@ -99,43 +105,99 @@ typedef struct mbedtls_hmac_drbg_context void *p_entropy; /*!< context for the entropy function */ #if defined(MBEDTLS_THREADING_C) + /* Invariant: the mutex is initialized if and only if + * md_ctx->md_info != NULL. This means that the mutex is initialized + * during the initial seeding in mbedtls_hmac_drbg_seed() or + * mbedtls_hmac_drbg_seed_buf() and freed in mbedtls_ctr_drbg_free(). + * + * Note that this invariant may change without notice. Do not rely on it + * and do not access the mutex directly in application code. + */ mbedtls_threading_mutex_t mutex; #endif } mbedtls_hmac_drbg_context; /** - * \brief HMAC_DRBG context initialization - * Makes the context ready for mbedtls_hmac_drbg_seed(), - * mbedtls_hmac_drbg_seed_buf() or - * mbedtls_hmac_drbg_free(). + * \brief HMAC_DRBG context initialization. + * + * This function makes the context ready for mbedtls_hmac_drbg_seed(), + * mbedtls_hmac_drbg_seed_buf() or mbedtls_hmac_drbg_free(). * - * \param ctx HMAC_DRBG context to be initialized + * \note The reseed interval is #MBEDTLS_HMAC_DRBG_RESEED_INTERVAL + * by default. Override this value by calling + * mbedtls_hmac_drbg_set_reseed_interval(). + * + * \param ctx HMAC_DRBG context to be initialized. */ void mbedtls_hmac_drbg_init( mbedtls_hmac_drbg_context *ctx ); /** - * \brief HMAC_DRBG initial seeding - * Seed and setup entropy source for future reseeds. - * - * \param ctx HMAC_DRBG context to be seeded - * \param md_info MD algorithm to use for HMAC_DRBG - * \param f_entropy Entropy callback (p_entropy, buffer to fill, buffer - * length) - * \param p_entropy Entropy context - * \param custom Personalization data (Device specific identifiers) - * (Can be NULL) - * \param len Length of personalization data - * - * \note The "security strength" as defined by NIST is set to: - * 128 bits if md_alg is SHA-1, - * 192 bits if md_alg is SHA-224, - * 256 bits if md_alg is SHA-256 or higher. + * \brief HMAC_DRBG initial seeding. + * + * Set the initial seed and set up the entropy source for future reseeds. + * + * A typical choice for the \p f_entropy and \p p_entropy parameters is + * to use the entropy module: + * - \p f_entropy is mbedtls_entropy_func(); + * - \p p_entropy is an instance of ::mbedtls_entropy_context initialized + * with mbedtls_entropy_init() (which registers the platform's default + * entropy sources). + * + * You can provide a personalization string in addition to the + * entropy source, to make this instantiation as unique as possible. + * + * \note By default, the security strength as defined by NIST is: + * - 128 bits if \p md_info is SHA-1; + * - 192 bits if \p md_info is SHA-224; + * - 256 bits if \p md_info is SHA-256, SHA-384 or SHA-512. * Note that SHA-256 is just as efficient as SHA-224. + * The security strength can be reduced if a smaller + * entropy length is set with + * mbedtls_hmac_drbg_set_entropy_len(). * - * \return 0 if successful, or - * MBEDTLS_ERR_MD_BAD_INPUT_DATA, or - * MBEDTLS_ERR_MD_ALLOC_FAILED, or - * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED. + * \note The default entropy length is the security strength + * (converted from bits to bytes). You can override + * it by calling mbedtls_hmac_drbg_set_entropy_len(). + * + * \note During the initial seeding, this function calls + * the entropy source to obtain a nonce + * whose length is half the entropy length. + */ +#if defined(MBEDTLS_THREADING_C) +/** + * \note When Mbed TLS is built with threading support, + * after this function returns successfully, + * it is safe to call mbedtls_hmac_drbg_random() + * from multiple threads. Other operations, including + * reseeding, are not thread-safe. + */ +#endif /* MBEDTLS_THREADING_C */ +/** + * \param ctx HMAC_DRBG context to be seeded. + * \param md_info MD algorithm to use for HMAC_DRBG. + * \param f_entropy The entropy callback, taking as arguments the + * \p p_entropy context, the buffer to fill, and the + * length of the buffer. + * \p f_entropy is always called with a length that is + * less than or equal to the entropy length. + * \param p_entropy The entropy context to pass to \p f_entropy. + * \param custom The personalization string. + * This can be \c NULL, in which case the personalization + * string is empty regardless of the value of \p len. + * \param len The length of the personalization string. + * This must be at most #MBEDTLS_HMAC_DRBG_MAX_INPUT + * and also at most + * #MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT - \p entropy_len * 3 / 2 + * where \p entropy_len is the entropy length + * described above. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA if \p md_info is + * invalid. + * \return #MBEDTLS_ERR_MD_ALLOC_FAILED if there was not enough + * memory to allocate context data. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * if the call to \p f_entropy failed. */ int mbedtls_hmac_drbg_seed( mbedtls_hmac_drbg_context *ctx, const mbedtls_md_info_t * md_info, @@ -146,98 +208,156 @@ int mbedtls_hmac_drbg_seed( mbedtls_hmac_drbg_context *ctx, /** * \brief Initilisation of simpified HMAC_DRBG (never reseeds). - * (For use with deterministic ECDSA.) - * - * \param ctx HMAC_DRBG context to be initialised - * \param md_info MD algorithm to use for HMAC_DRBG - * \param data Concatenation of entropy string and additional data - * \param data_len Length of data in bytes * - * \return 0 if successful, or - * MBEDTLS_ERR_MD_BAD_INPUT_DATA, or - * MBEDTLS_ERR_MD_ALLOC_FAILED. + * This function is meant for use in algorithms that need a pseudorandom + * input such as deterministic ECDSA. + */ +#if defined(MBEDTLS_THREADING_C) +/** + * \note When Mbed TLS is built with threading support, + * after this function returns successfully, + * it is safe to call mbedtls_hmac_drbg_random() + * from multiple threads. Other operations, including + * reseeding, are not thread-safe. + */ +#endif /* MBEDTLS_THREADING_C */ +/** + * \param ctx HMAC_DRBG context to be initialised. + * \param md_info MD algorithm to use for HMAC_DRBG. + * \param data Concatenation of the initial entropy string and + * the additional data. + * \param data_len Length of \p data in bytes. + * + * \return \c 0 if successful. or + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA if \p md_info is + * invalid. + * \return #MBEDTLS_ERR_MD_ALLOC_FAILED if there was not enough + * memory to allocate context data. */ int mbedtls_hmac_drbg_seed_buf( mbedtls_hmac_drbg_context *ctx, const mbedtls_md_info_t * md_info, const unsigned char *data, size_t data_len ); /** - * \brief Enable / disable prediction resistance (Default: Off) + * \brief This function turns prediction resistance on or off. + * The default value is off. * - * Note: If enabled, entropy is used for ctx->entropy_len before each call! - * Only use this if you have ample supply of good entropy! + * \note If enabled, entropy is gathered at the beginning of + * every call to mbedtls_hmac_drbg_random_with_add() + * or mbedtls_hmac_drbg_random(). + * Only use this if your entropy source has sufficient + * throughput. * - * \param ctx HMAC_DRBG context - * \param resistance MBEDTLS_HMAC_DRBG_PR_ON or MBEDTLS_HMAC_DRBG_PR_OFF + * \param ctx The HMAC_DRBG context. + * \param resistance #MBEDTLS_HMAC_DRBG_PR_ON or #MBEDTLS_HMAC_DRBG_PR_OFF. */ void mbedtls_hmac_drbg_set_prediction_resistance( mbedtls_hmac_drbg_context *ctx, int resistance ); /** - * \brief Set the amount of entropy grabbed on each reseed - * (Default: given by the security strength, which - * depends on the hash used, see \c mbedtls_hmac_drbg_init() ) + * \brief This function sets the amount of entropy grabbed on each + * seed or reseed. * - * \param ctx HMAC_DRBG context - * \param len Amount of entropy to grab, in bytes + * See the documentation of mbedtls_hmac_drbg_seed() for the default value. + * + * \param ctx The HMAC_DRBG context. + * \param len The amount of entropy to grab, in bytes. */ void mbedtls_hmac_drbg_set_entropy_len( mbedtls_hmac_drbg_context *ctx, size_t len ); /** - * \brief Set the reseed interval - * (Default: MBEDTLS_HMAC_DRBG_RESEED_INTERVAL) + * \brief Set the reseed interval. + * + * The reseed interval is the number of calls to mbedtls_hmac_drbg_random() + * or mbedtls_hmac_drbg_random_with_add() after which the entropy function + * is called again. + * + * The default value is #MBEDTLS_HMAC_DRBG_RESEED_INTERVAL. * - * \param ctx HMAC_DRBG context - * \param interval Reseed interval + * \param ctx The HMAC_DRBG context. + * \param interval The reseed interval. */ void mbedtls_hmac_drbg_set_reseed_interval( mbedtls_hmac_drbg_context *ctx, int interval ); /** - * \brief HMAC_DRBG update state + * \brief This function updates the state of the HMAC_DRBG context. * - * \param ctx HMAC_DRBG context - * \param additional Additional data to update state with, or NULL - * \param add_len Length of additional data, or 0 + * \note This function is not thread-safe. It is not safe + * to call this function if another thread might be + * concurrently obtaining random numbers from the same + * context or updating or reseeding the same context. + * + * \param ctx The HMAC_DRBG context. + * \param additional The data to update the state with. + * If this is \c NULL, there is no additional data. + * \param add_len Length of \p additional in bytes. + * Unused if \p additional is \c NULL. * * \return \c 0 on success, or an error from the underlying * hash calculation. - * - * \note Additional data is optional, pass NULL and 0 as second - * third argument if no additional data is being used. */ int mbedtls_hmac_drbg_update_ret( mbedtls_hmac_drbg_context *ctx, const unsigned char *additional, size_t add_len ); /** - * \brief HMAC_DRBG reseeding (extracts data from entropy source) - * - * \param ctx HMAC_DRBG context - * \param additional Additional data to add to state (Can be NULL) - * \param len Length of additional data - * - * \return 0 if successful, or - * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * \brief This function reseeds the HMAC_DRBG context, that is + * extracts data from the entropy source. + * + * \note This function is not thread-safe. It is not safe + * to call this function if another thread might be + * concurrently obtaining random numbers from the same + * context or updating or reseeding the same context. + * + * \param ctx The HMAC_DRBG context. + * \param additional Additional data to add to the state. + * If this is \c NULL, there is no additional data + * and \p len should be \c 0. + * \param len The length of the additional data. + * This must be at most #MBEDTLS_HMAC_DRBG_MAX_INPUT + * and also at most + * #MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT - \p entropy_len + * where \p entropy_len is the entropy length + * (see mbedtls_hmac_drbg_set_entropy_len()). + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * if a call to the entropy function failed. */ int mbedtls_hmac_drbg_reseed( mbedtls_hmac_drbg_context *ctx, const unsigned char *additional, size_t len ); /** - * \brief HMAC_DRBG generate random with additional update input - * - * Note: Automatically reseeds if reseed_counter is reached or PR is enabled. - * - * \param p_rng HMAC_DRBG context - * \param output Buffer to fill - * \param output_len Length of the buffer - * \param additional Additional data to update with (can be NULL) - * \param add_len Length of additional data (can be 0) - * - * \return 0 if successful, or - * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED, or - * MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG, or - * MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG. + * \brief This function updates an HMAC_DRBG instance with additional + * data and uses it to generate random data. + * + * This function automatically reseeds if the reseed counter is exceeded + * or prediction resistance is enabled. + * + * \note This function is not thread-safe. It is not safe + * to call this function if another thread might be + * concurrently obtaining random numbers from the same + * context or updating or reseeding the same context. + * + * \param p_rng The HMAC_DRBG context. This must be a pointer to a + * #mbedtls_hmac_drbg_context structure. + * \param output The buffer to fill. + * \param output_len The length of the buffer in bytes. + * This must be at most #MBEDTLS_HMAC_DRBG_MAX_REQUEST. + * \param additional Additional data to update with. + * If this is \c NULL, there is no additional data + * and \p add_len should be \c 0. + * \param add_len The length of the additional data. + * This must be at most #MBEDTLS_HMAC_DRBG_MAX_INPUT. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * if a call to the entropy source failed. + * \return #MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG if + * \p output_len > #MBEDTLS_HMAC_DRBG_MAX_REQUEST. + * \return #MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG if + * \p add_len > #MBEDTLS_HMAC_DRBG_MAX_INPUT. */ int mbedtls_hmac_drbg_random_with_add( void *p_rng, unsigned char *output, size_t output_len, @@ -245,24 +365,39 @@ int mbedtls_hmac_drbg_random_with_add( void *p_rng, size_t add_len ); /** - * \brief HMAC_DRBG generate random + * \brief This function uses HMAC_DRBG to generate random data. * - * Note: Automatically reseeds if reseed_counter is reached or PR is enabled. - * - * \param p_rng HMAC_DRBG context - * \param output Buffer to fill - * \param out_len Length of the buffer - * - * \return 0 if successful, or - * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED, or - * MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG + * This function automatically reseeds if the reseed counter is exceeded + * or prediction resistance is enabled. + */ +#if defined(MBEDTLS_THREADING_C) +/** + * \note When Mbed TLS is built with threading support, + * it is safe to call mbedtls_ctr_drbg_random() + * from multiple threads. Other operations, including + * reseeding, are not thread-safe. + */ +#endif /* MBEDTLS_THREADING_C */ +/** + * \param p_rng The HMAC_DRBG context. This must be a pointer to a + * #mbedtls_hmac_drbg_context structure. + * \param output The buffer to fill. + * \param out_len The length of the buffer in bytes. + * This must be at most #MBEDTLS_HMAC_DRBG_MAX_REQUEST. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * if a call to the entropy source failed. + * \return #MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG if + * \p out_len > #MBEDTLS_HMAC_DRBG_MAX_REQUEST. */ int mbedtls_hmac_drbg_random( void *p_rng, unsigned char *output, size_t out_len ); /** - * \brief Free an HMAC_DRBG context + * \brief This function resets HMAC_DRBG context to the state immediately + * after initial call of mbedtls_hmac_drbg_init(). * - * \param ctx HMAC_DRBG context to free. + * \param ctx The HMAC_DRBG context to free. */ void mbedtls_hmac_drbg_free( mbedtls_hmac_drbg_context *ctx ); @@ -273,17 +408,16 @@ void mbedtls_hmac_drbg_free( mbedtls_hmac_drbg_context *ctx ); #define MBEDTLS_DEPRECATED #endif /** - * \brief HMAC_DRBG update state + * \brief This function updates the state of the HMAC_DRBG context. * * \deprecated Superseded by mbedtls_hmac_drbg_update_ret() * in 2.16.0. * - * \param ctx HMAC_DRBG context - * \param additional Additional data to update state with, or NULL - * \param add_len Length of additional data, or 0 - * - * \note Additional data is optional, pass NULL and 0 as second - * third argument if no additional data is being used. + * \param ctx The HMAC_DRBG context. + * \param additional The data to update the state with. + * If this is \c NULL, there is no additional data. + * \param add_len Length of \p additional in bytes. + * Unused if \p additional is \c NULL. */ MBEDTLS_DEPRECATED void mbedtls_hmac_drbg_update( mbedtls_hmac_drbg_context *ctx, @@ -293,26 +427,31 @@ MBEDTLS_DEPRECATED void mbedtls_hmac_drbg_update( #if defined(MBEDTLS_FS_IO) /** - * \brief Write a seed file + * \brief This function writes a seed file. * - * \param ctx HMAC_DRBG context - * \param path Name of the file + * \param ctx The HMAC_DRBG context. + * \param path The name of the file. * - * \return 0 if successful, 1 on file error, or - * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * \return \c 0 on success. + * \return #MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR on file error. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED on reseed + * failure. */ int mbedtls_hmac_drbg_write_seed_file( mbedtls_hmac_drbg_context *ctx, const char *path ); /** - * \brief Read and update a seed file. Seed is added to this - * instance - * - * \param ctx HMAC_DRBG context - * \param path Name of the file - * - * \return 0 if successful, 1 on file error, - * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED or - * MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG + * \brief This function reads and updates a seed file. The seed + * is added to this instance. + * + * \param ctx The HMAC_DRBG context. + * \param path The name of the file. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR on file error. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED on + * reseed failure. + * \return #MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG if the existing + * seed file is too large. */ int mbedtls_hmac_drbg_update_seed_file( mbedtls_hmac_drbg_context *ctx, const char *path ); #endif /* MBEDTLS_FS_IO */ @@ -320,9 +459,10 @@ int mbedtls_hmac_drbg_update_seed_file( mbedtls_hmac_drbg_context *ctx, const ch #if defined(MBEDTLS_SELF_TEST) /** - * \brief Checkup routine + * \brief The HMAC_DRBG Checkup routine. * - * \return 0 if successful, or 1 if the test failed + * \return \c 0 if successful. + * \return \c 1 if the test failed. */ int mbedtls_hmac_drbg_self_test( int verbose ); #endif diff --git a/Externals/mbedtls/include/mbedtls/md.h b/Externals/mbedtls/include/mbedtls/md.h index 8bcf766a6ca6..84fafd2ac777 100644 --- a/Externals/mbedtls/include/mbedtls/md.h +++ b/Externals/mbedtls/include/mbedtls/md.h @@ -6,7 +6,7 @@ * \author Adriaan de Jong */ /* - * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -20,8 +20,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_MD_H @@ -30,18 +28,24 @@ #include #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif +#include "mbedtls/platform_util.h" -#define MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE -0x5080 /**< The selected feature is not available. */ -#define MBEDTLS_ERR_MD_BAD_INPUT_DATA -0x5100 /**< Bad input parameters to function. */ -#define MBEDTLS_ERR_MD_ALLOC_FAILED -0x5180 /**< Failed to allocate memory. */ -#define MBEDTLS_ERR_MD_FILE_IO_ERROR -0x5200 /**< Opening or reading of file failed. */ +/** The selected feature is not available. */ +#define MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE -0x5080 +/** Bad input parameters to function. */ +#define MBEDTLS_ERR_MD_BAD_INPUT_DATA -0x5100 +/** Failed to allocate memory. */ +#define MBEDTLS_ERR_MD_ALLOC_FAILED -0x5180 +/** Opening or reading of file failed. */ +#define MBEDTLS_ERR_MD_FILE_IO_ERROR -0x5200 /* MBEDTLS_ERR_MD_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_MD_HW_ACCEL_FAILED -0x5280 /**< MD hardware accelerator failed. */ +/** MD hardware accelerator failed. */ +#define MBEDTLS_ERR_MD_HW_ACCEL_FAILED -0x5280 #ifdef __cplusplus extern "C" { @@ -74,6 +78,12 @@ typedef enum { #define MBEDTLS_MD_MAX_SIZE 32 /* longest known is SHA256 or less */ #endif +#if defined(MBEDTLS_SHA512_C) +#define MBEDTLS_MD_MAX_BLOCK_SIZE 128 +#else +#define MBEDTLS_MD_MAX_BLOCK_SIZE 64 +#endif + /** * Opaque struct defined in md_internal.h. */ @@ -98,6 +108,8 @@ typedef struct mbedtls_md_context_t * \brief This function returns the list of digests supported by the * generic digest module. * + * \note The list starts with the strongest available hashes. + * * \return A statically allocated array of digests. Each element * in the returned list is an integer belonging to the * message-digest enumeration #mbedtls_md_type_t. @@ -199,6 +211,7 @@ int mbedtls_md_init_ctx( mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_ * failure. * \return #MBEDTLS_ERR_MD_ALLOC_FAILED on memory-allocation failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_setup( mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info, int hmac ); /** @@ -220,6 +233,7 @@ int mbedtls_md_setup( mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_inf * \return \c 0 on success. * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_clone( mbedtls_md_context_t *dst, const mbedtls_md_context_t *src ); @@ -269,6 +283,7 @@ const char *mbedtls_md_get_name( const mbedtls_md_info_t *md_info ); * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification * failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_starts( mbedtls_md_context_t *ctx ); /** @@ -287,6 +302,7 @@ int mbedtls_md_starts( mbedtls_md_context_t *ctx ); * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification * failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_update( mbedtls_md_context_t *ctx, const unsigned char *input, size_t ilen ); /** @@ -307,6 +323,7 @@ int mbedtls_md_update( mbedtls_md_context_t *ctx, const unsigned char *input, si * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification * failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_finish( mbedtls_md_context_t *ctx, unsigned char *output ); /** @@ -327,6 +344,7 @@ int mbedtls_md_finish( mbedtls_md_context_t *ctx, unsigned char *output ); * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification * failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md( const mbedtls_md_info_t *md_info, const unsigned char *input, size_t ilen, unsigned char *output ); @@ -348,6 +366,7 @@ int mbedtls_md( const mbedtls_md_info_t *md_info, const unsigned char *input, si * the file pointed by \p path. * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA if \p md_info was NULL. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_file( const mbedtls_md_info_t *md_info, const char *path, unsigned char *output ); #endif /* MBEDTLS_FS_IO */ @@ -370,6 +389,7 @@ int mbedtls_md_file( const mbedtls_md_info_t *md_info, const char *path, * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification * failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_hmac_starts( mbedtls_md_context_t *ctx, const unsigned char *key, size_t keylen ); @@ -392,6 +412,7 @@ int mbedtls_md_hmac_starts( mbedtls_md_context_t *ctx, const unsigned char *key, * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification * failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_hmac_update( mbedtls_md_context_t *ctx, const unsigned char *input, size_t ilen ); @@ -413,6 +434,7 @@ int mbedtls_md_hmac_update( mbedtls_md_context_t *ctx, const unsigned char *inpu * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification * failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_hmac_finish( mbedtls_md_context_t *ctx, unsigned char *output); /** @@ -430,6 +452,7 @@ int mbedtls_md_hmac_finish( mbedtls_md_context_t *ctx, unsigned char *output); * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification * failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_hmac_reset( mbedtls_md_context_t *ctx ); /** @@ -454,11 +477,13 @@ int mbedtls_md_hmac_reset( mbedtls_md_context_t *ctx ); * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification * failure. */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_hmac( const mbedtls_md_info_t *md_info, const unsigned char *key, size_t keylen, const unsigned char *input, size_t ilen, unsigned char *output ); /* Internal use */ +MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_process( mbedtls_md_context_t *ctx, const unsigned char *data ); #ifdef __cplusplus diff --git a/Externals/mbedtls/include/mbedtls/md2.h b/Externals/mbedtls/include/mbedtls/md2.h index fe97cf08d409..7f3d5cf446c9 100644 --- a/Externals/mbedtls/include/mbedtls/md2.h +++ b/Externals/mbedtls/include/mbedtls/md2.h @@ -8,7 +8,7 @@ * instead. */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -23,14 +23,12 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * This file is part of mbed TLS (https://tls.mbed.org) - * */ #ifndef MBEDTLS_MD2_H #define MBEDTLS_MD2_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -38,7 +36,8 @@ #include /* MBEDTLS_ERR_MD2_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_MD2_HW_ACCEL_FAILED -0x002B /**< MD2 hardware accelerator failed */ +/** MD2 hardware accelerator failed */ +#define MBEDTLS_ERR_MD2_HW_ACCEL_FAILED -0x002B #ifdef __cplusplus extern "C" { diff --git a/Externals/mbedtls/include/mbedtls/md4.h b/Externals/mbedtls/include/mbedtls/md4.h index ce703c0ba4f3..0238c6723a6b 100644 --- a/Externals/mbedtls/include/mbedtls/md4.h +++ b/Externals/mbedtls/include/mbedtls/md4.h @@ -8,7 +8,7 @@ * instead. */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -23,14 +23,12 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * This file is part of mbed TLS (https://tls.mbed.org) - * */ #ifndef MBEDTLS_MD4_H #define MBEDTLS_MD4_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -39,7 +37,8 @@ #include /* MBEDTLS_ERR_MD4_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_MD4_HW_ACCEL_FAILED -0x002D /**< MD4 hardware accelerator failed */ +/** MD4 hardware accelerator failed */ +#define MBEDTLS_ERR_MD4_HW_ACCEL_FAILED -0x002D #ifdef __cplusplus extern "C" { diff --git a/Externals/mbedtls/include/mbedtls/md5.h b/Externals/mbedtls/include/mbedtls/md5.h index 6eed6cc864aa..73e4dd2c2a78 100644 --- a/Externals/mbedtls/include/mbedtls/md5.h +++ b/Externals/mbedtls/include/mbedtls/md5.h @@ -8,7 +8,7 @@ * digests instead. */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -22,14 +22,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_MD5_H #define MBEDTLS_MD5_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -38,7 +36,8 @@ #include /* MBEDTLS_ERR_MD5_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_MD5_HW_ACCEL_FAILED -0x002F /**< MD5 hardware accelerator failed */ +/** MD5 hardware accelerator failed */ +#define MBEDTLS_ERR_MD5_HW_ACCEL_FAILED -0x002F #ifdef __cplusplus extern "C" { diff --git a/Externals/mbedtls/include/mbedtls/md_internal.h b/Externals/mbedtls/include/mbedtls/md_internal.h index 04de48291844..f33cdf6086da 100644 --- a/Externals/mbedtls/include/mbedtls/md_internal.h +++ b/Externals/mbedtls/include/mbedtls/md_internal.h @@ -8,7 +8,7 @@ * \author Adriaan de Jong */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -22,19 +22,17 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_MD_WRAP_H #define MBEDTLS_MD_WRAP_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "md.h" +#include "mbedtls/md.h" #ifdef __cplusplus extern "C" { @@ -46,42 +44,17 @@ extern "C" { */ struct mbedtls_md_info_t { - /** Digest identifier */ - mbedtls_md_type_t type; - /** Name of the message digest */ const char * name; + /** Digest identifier */ + mbedtls_md_type_t type; + /** Output length of the digest function in bytes */ - int size; + unsigned char size; /** Block length of the digest function in bytes */ - int block_size; - - /** Digest initialisation function */ - int (*starts_func)( void *ctx ); - - /** Digest update function */ - int (*update_func)( void *ctx, const unsigned char *input, size_t ilen ); - - /** Digest finalisation function */ - int (*finish_func)( void *ctx, unsigned char *output ); - - /** Generic digest function */ - int (*digest_func)( const unsigned char *input, size_t ilen, - unsigned char *output ); - - /** Allocate a new context */ - void * (*ctx_alloc_func)( void ); - - /** Free the given context */ - void (*ctx_free_func)( void *ctx ); - - /** Clone state from a context */ - void (*clone_func)( void *dst, const void *src ); - - /** Internal use only */ - int (*process_func)( void *ctx, const unsigned char *input ); + unsigned char block_size; }; #if defined(MBEDTLS_MD2_C) @@ -104,7 +77,9 @@ extern const mbedtls_md_info_t mbedtls_sha224_info; extern const mbedtls_md_info_t mbedtls_sha256_info; #endif #if defined(MBEDTLS_SHA512_C) +#if !defined(MBEDTLS_SHA512_NO_SHA384) extern const mbedtls_md_info_t mbedtls_sha384_info; +#endif extern const mbedtls_md_info_t mbedtls_sha512_info; #endif diff --git a/Externals/mbedtls/include/mbedtls/memory_buffer_alloc.h b/Externals/mbedtls/include/mbedtls/memory_buffer_alloc.h index 705f9a636900..233977252a3a 100644 --- a/Externals/mbedtls/include/mbedtls/memory_buffer_alloc.h +++ b/Externals/mbedtls/include/mbedtls/memory_buffer_alloc.h @@ -4,7 +4,7 @@ * \brief Buffer-based memory allocator */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,14 +18,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_MEMORY_BUFFER_ALLOC_H #define MBEDTLS_MEMORY_BUFFER_ALLOC_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif diff --git a/Externals/mbedtls/include/mbedtls/net.h b/Externals/mbedtls/include/mbedtls/net.h index 8cead58e5df2..66921887da09 100644 --- a/Externals/mbedtls/include/mbedtls/net.h +++ b/Externals/mbedtls/include/mbedtls/net.h @@ -6,7 +6,7 @@ * \deprecated Superseded by mbedtls/net_sockets.h */ /* - * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -20,17 +20,15 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif #if !defined(MBEDTLS_DEPRECATED_REMOVED) -#include "net_sockets.h" +#include "mbedtls/net_sockets.h" #if defined(MBEDTLS_DEPRECATED_WARNING) #warning "Deprecated header file: Superseded by mbedtls/net_sockets.h" #endif /* MBEDTLS_DEPRECATED_WARNING */ diff --git a/Externals/mbedtls/include/mbedtls/net_sockets.h b/Externals/mbedtls/include/mbedtls/net_sockets.h index 4c7ef00fe667..ceb7d5f65277 100644 --- a/Externals/mbedtls/include/mbedtls/net_sockets.h +++ b/Externals/mbedtls/include/mbedtls/net_sockets.h @@ -20,7 +20,7 @@ * */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -34,36 +34,47 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_NET_SOCKETS_H #define MBEDTLS_NET_SOCKETS_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "ssl.h" +#include "mbedtls/ssl.h" #include #include -#define MBEDTLS_ERR_NET_SOCKET_FAILED -0x0042 /**< Failed to open a socket. */ -#define MBEDTLS_ERR_NET_CONNECT_FAILED -0x0044 /**< The connection to the given server / port failed. */ -#define MBEDTLS_ERR_NET_BIND_FAILED -0x0046 /**< Binding of the socket failed. */ -#define MBEDTLS_ERR_NET_LISTEN_FAILED -0x0048 /**< Could not listen on the socket. */ -#define MBEDTLS_ERR_NET_ACCEPT_FAILED -0x004A /**< Could not accept the incoming connection. */ -#define MBEDTLS_ERR_NET_RECV_FAILED -0x004C /**< Reading information from the socket failed. */ -#define MBEDTLS_ERR_NET_SEND_FAILED -0x004E /**< Sending information through the socket failed. */ -#define MBEDTLS_ERR_NET_CONN_RESET -0x0050 /**< Connection was reset by peer. */ -#define MBEDTLS_ERR_NET_UNKNOWN_HOST -0x0052 /**< Failed to get an IP address for the given hostname. */ -#define MBEDTLS_ERR_NET_BUFFER_TOO_SMALL -0x0043 /**< Buffer is too small to hold the data. */ -#define MBEDTLS_ERR_NET_INVALID_CONTEXT -0x0045 /**< The context is invalid, eg because it was free()ed. */ -#define MBEDTLS_ERR_NET_POLL_FAILED -0x0047 /**< Polling the net context failed. */ -#define MBEDTLS_ERR_NET_BAD_INPUT_DATA -0x0049 /**< Input invalid. */ +/** Failed to open a socket. */ +#define MBEDTLS_ERR_NET_SOCKET_FAILED -0x0042 +/** The connection to the given server / port failed. */ +#define MBEDTLS_ERR_NET_CONNECT_FAILED -0x0044 +/** Binding of the socket failed. */ +#define MBEDTLS_ERR_NET_BIND_FAILED -0x0046 +/** Could not listen on the socket. */ +#define MBEDTLS_ERR_NET_LISTEN_FAILED -0x0048 +/** Could not accept the incoming connection. */ +#define MBEDTLS_ERR_NET_ACCEPT_FAILED -0x004A +/** Reading information from the socket failed. */ +#define MBEDTLS_ERR_NET_RECV_FAILED -0x004C +/** Sending information through the socket failed. */ +#define MBEDTLS_ERR_NET_SEND_FAILED -0x004E +/** Connection was reset by peer. */ +#define MBEDTLS_ERR_NET_CONN_RESET -0x0050 +/** Failed to get an IP address for the given hostname. */ +#define MBEDTLS_ERR_NET_UNKNOWN_HOST -0x0052 +/** Buffer is too small to hold the data. */ +#define MBEDTLS_ERR_NET_BUFFER_TOO_SMALL -0x0043 +/** The context is invalid, eg because it was free()ed. */ +#define MBEDTLS_ERR_NET_INVALID_CONTEXT -0x0045 +/** Polling the net context failed. */ +#define MBEDTLS_ERR_NET_POLL_FAILED -0x0047 +/** Input invalid. */ +#define MBEDTLS_ERR_NET_BAD_INPUT_DATA -0x0049 #define MBEDTLS_NET_LISTEN_BACKLOG 10 /**< The backlog that listen() should use. */ @@ -126,6 +137,7 @@ int mbedtls_net_connect( mbedtls_net_context *ctx, const char *host, const char * * \return 0 if successful, or one of: * MBEDTLS_ERR_NET_SOCKET_FAILED, + * MBEDTLS_ERR_NET_UNKNOWN_HOST, * MBEDTLS_ERR_NET_BIND_FAILED, * MBEDTLS_ERR_NET_LISTEN_FAILED * @@ -145,6 +157,8 @@ int mbedtls_net_bind( mbedtls_net_context *ctx, const char *bind_ip, const char * can be NULL if client_ip is null * * \return 0 if successful, or + * MBEDTLS_ERR_NET_SOCKET_FAILED, + * MBEDTLS_ERR_NET_BIND_FAILED, * MBEDTLS_ERR_NET_ACCEPT_FAILED, or * MBEDTLS_ERR_NET_BUFFER_TOO_SMALL if buf_size is too small, * MBEDTLS_ERR_SSL_WANT_READ if bind_fd was set to @@ -157,6 +171,10 @@ int mbedtls_net_accept( mbedtls_net_context *bind_ctx, /** * \brief Check and wait for the context to be ready for read/write * + * \note The current implementation of this function uses + * select() and returns an error if the file descriptor + * is \c FD_SETSIZE or greater. + * * \param ctx Socket to check * \param rw Bitflag composed of MBEDTLS_NET_POLL_READ and * MBEDTLS_NET_POLL_WRITE specifying the events @@ -238,16 +256,21 @@ int mbedtls_net_send( void *ctx, const unsigned char *buf, size_t len ); * 'timeout' seconds. If no error occurs, the actual amount * read is returned. * + * \note The current implementation of this function uses + * select() and returns an error if the file descriptor + * is \c FD_SETSIZE or greater. + * * \param ctx Socket * \param buf The buffer to write to * \param len Maximum length of the buffer * \param timeout Maximum number of milliseconds to wait for data * 0 means no timeout (wait forever) * - * \return the number of bytes received, - * or a non-zero error code: - * MBEDTLS_ERR_SSL_TIMEOUT if the operation timed out, + * \return The number of bytes received if successful. + * MBEDTLS_ERR_SSL_TIMEOUT if the operation timed out. * MBEDTLS_ERR_SSL_WANT_READ if interrupted by a signal. + * Another negative error code (MBEDTLS_ERR_NET_xxx) + * for other failures. * * \note This function will block (until data becomes available or * timeout is reached) even if the socket is set to @@ -257,6 +280,13 @@ int mbedtls_net_send( void *ctx, const unsigned char *buf, size_t len ); int mbedtls_net_recv_timeout( void *ctx, unsigned char *buf, size_t len, uint32_t timeout ); +/** + * \brief Closes down the connection and free associated data + * + * \param ctx The context to close + */ +void mbedtls_net_close( mbedtls_net_context *ctx ); + /** * \brief Gracefully shutdown the connection and free associated data * diff --git a/Externals/mbedtls/include/mbedtls/nist_kw.h b/Externals/mbedtls/include/mbedtls/nist_kw.h index 3b67b59cd297..7f3e64a525d4 100644 --- a/Externals/mbedtls/include/mbedtls/nist_kw.h +++ b/Externals/mbedtls/include/mbedtls/nist_kw.h @@ -16,7 +16,7 @@ * */ /* - * Copyright (C) 2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -30,20 +30,18 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_NIST_KW_H #define MBEDTLS_NIST_KW_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "cipher.h" +#include "mbedtls/cipher.h" #ifdef __cplusplus extern "C" { diff --git a/Externals/mbedtls/include/mbedtls/oid.h b/Externals/mbedtls/include/mbedtls/oid.h index 6fbd018aaa1a..1c39186a491f 100644 --- a/Externals/mbedtls/include/mbedtls/oid.h +++ b/Externals/mbedtls/include/mbedtls/oid.h @@ -4,7 +4,7 @@ * \brief Object Identifier (OID) database */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,37 +18,55 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_OID_H #define MBEDTLS_OID_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "asn1.h" -#include "pk.h" +#include "mbedtls/asn1.h" +#include "mbedtls/pk.h" #include #if defined(MBEDTLS_CIPHER_C) -#include "cipher.h" +#include "mbedtls/cipher.h" #endif #if defined(MBEDTLS_MD_C) -#include "md.h" +#include "mbedtls/md.h" #endif -#if defined(MBEDTLS_X509_USE_C) || defined(MBEDTLS_X509_CREATE_C) -#include "x509.h" -#endif +/** OID is not found. */ +#define MBEDTLS_ERR_OID_NOT_FOUND -0x002E +/** output buffer is too small */ +#define MBEDTLS_ERR_OID_BUF_TOO_SMALL -0x000B -#define MBEDTLS_ERR_OID_NOT_FOUND -0x002E /**< OID is not found. */ -#define MBEDTLS_ERR_OID_BUF_TOO_SMALL -0x000B /**< output buffer is too small */ +/* This is for the benefit of X.509, but defined here in order to avoid + * having a "backwards" include of x.509.h here */ +/* + * X.509 extension types (internal, arbitrary values for bitsets) + */ +#define MBEDTLS_OID_X509_EXT_AUTHORITY_KEY_IDENTIFIER (1 << 0) +#define MBEDTLS_OID_X509_EXT_SUBJECT_KEY_IDENTIFIER (1 << 1) +#define MBEDTLS_OID_X509_EXT_KEY_USAGE (1 << 2) +#define MBEDTLS_OID_X509_EXT_CERTIFICATE_POLICIES (1 << 3) +#define MBEDTLS_OID_X509_EXT_POLICY_MAPPINGS (1 << 4) +#define MBEDTLS_OID_X509_EXT_SUBJECT_ALT_NAME (1 << 5) +#define MBEDTLS_OID_X509_EXT_ISSUER_ALT_NAME (1 << 6) +#define MBEDTLS_OID_X509_EXT_SUBJECT_DIRECTORY_ATTRS (1 << 7) +#define MBEDTLS_OID_X509_EXT_BASIC_CONSTRAINTS (1 << 8) +#define MBEDTLS_OID_X509_EXT_NAME_CONSTRAINTS (1 << 9) +#define MBEDTLS_OID_X509_EXT_POLICY_CONSTRAINTS (1 << 10) +#define MBEDTLS_OID_X509_EXT_EXTENDED_KEY_USAGE (1 << 11) +#define MBEDTLS_OID_X509_EXT_CRL_DISTRIBUTION_POINTS (1 << 12) +#define MBEDTLS_OID_X509_EXT_INIHIBIT_ANYPOLICY (1 << 13) +#define MBEDTLS_OID_X509_EXT_FRESHEST_CRL (1 << 14) +#define MBEDTLS_OID_X509_EXT_NS_CERT_TYPE (1 << 16) /* * Top level OID tuples @@ -104,7 +122,8 @@ * { iso(1) identified-organization(3) dod(6) internet(1) * security(5) mechanisms(5) pkix(7) } */ -#define MBEDTLS_OID_PKIX MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_ORG_DOD "\x01\x05\x05\x07" +#define MBEDTLS_OID_INTERNET MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_ORG_DOD "\x01" +#define MBEDTLS_OID_PKIX MBEDTLS_OID_INTERNET "\x05\x05\x07" /* * Arc for standard naming attributes @@ -149,6 +168,11 @@ #define MBEDTLS_OID_INIHIBIT_ANYPOLICY MBEDTLS_OID_ID_CE "\x36" /**< id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::= { id-ce 54 } */ #define MBEDTLS_OID_FRESHEST_CRL MBEDTLS_OID_ID_CE "\x2E" /**< id-ce-freshestCRL OBJECT IDENTIFIER ::= { id-ce 46 } */ +/* + * Certificate policies + */ +#define MBEDTLS_OID_ANY_POLICY MBEDTLS_OID_CERTIFICATE_POLICIES "\x00" /**< anyPolicy OBJECT IDENTIFIER ::= { id-ce-certificatePolicies 0 } */ + /* * Netscape certificate extensions */ @@ -183,6 +207,16 @@ #define MBEDTLS_OID_TIME_STAMPING MBEDTLS_OID_KP "\x08" /**< id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 } */ #define MBEDTLS_OID_OCSP_SIGNING MBEDTLS_OID_KP "\x09" /**< id-kp-OCSPSigning OBJECT IDENTIFIER ::= { id-kp 9 } */ +/** + * Wi-SUN Alliance Field Area Network + * { iso(1) identified-organization(3) dod(6) internet(1) + * private(4) enterprise(1) WiSUN(45605) FieldAreaNetwork(1) } + */ +#define MBEDTLS_OID_WISUN_FAN MBEDTLS_OID_INTERNET "\x04\x01\x82\xe4\x25\x01" + +#define MBEDTLS_OID_ON MBEDTLS_OID_PKIX "\x08" /**< id-on OBJECT IDENTIFIER ::= { id-pkix 8 } */ +#define MBEDTLS_OID_ON_HW_MODULE_NAME MBEDTLS_OID_ON "\x04" /**< id-on-hardwareModuleName OBJECT IDENTIFIER ::= { id-on 4 } */ + /* * PKCS definition OIDs */ @@ -228,6 +262,8 @@ #define MBEDTLS_OID_DIGEST_ALG_SHA512 MBEDTLS_OID_NIST_ALG "\x02\x03" /**< id-mbedtls_sha512 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 3 } */ +#define MBEDTLS_OID_DIGEST_ALG_RIPEMD160 MBEDTLS_OID_TELETRUST "\x03\x02\x01" /**< id-ripemd160 OBJECT IDENTIFIER :: { iso(1) identified-organization(3) teletrust(36) algorithm(3) hashAlgorithm(2) ripemd160(1) } */ + #define MBEDTLS_OID_HMAC_SHA1 MBEDTLS_OID_RSA_COMPANY "\x02\x07" /**< id-hmacWithSHA1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 7 } */ #define MBEDTLS_OID_HMAC_SHA224 MBEDTLS_OID_RSA_COMPANY "\x02\x08" /**< id-hmacWithSHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 8 } */ @@ -424,7 +460,6 @@ typedef struct mbedtls_oid_descriptor_t */ int mbedtls_oid_get_numeric_string( char *buf, size_t size, const mbedtls_asn1_buf *oid ); -#if defined(MBEDTLS_X509_USE_C) || defined(MBEDTLS_X509_CREATE_C) /** * \brief Translate an X.509 extension OID into local values * @@ -434,7 +469,6 @@ int mbedtls_oid_get_numeric_string( char *buf, size_t size, const mbedtls_asn1_b * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND */ int mbedtls_oid_get_x509_ext_type( const mbedtls_asn1_buf *oid, int *ext_type ); -#endif /** * \brief Translate an X.509 attribute type OID into the short name @@ -560,6 +594,16 @@ int mbedtls_oid_get_md_hmac( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_ */ int mbedtls_oid_get_extended_key_usage( const mbedtls_asn1_buf *oid, const char **desc ); +/** + * \brief Translate certificate policies OID into description + * + * \param oid OID to use + * \param desc place to store string pointer + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_certificate_policies( const mbedtls_asn1_buf *oid, const char **desc ); + /** * \brief Translate md_type into hash algorithm OID * diff --git a/Externals/mbedtls/include/mbedtls/padlock.h b/Externals/mbedtls/include/mbedtls/padlock.h index f05b72b077b3..624d02dff55d 100644 --- a/Externals/mbedtls/include/mbedtls/padlock.h +++ b/Externals/mbedtls/include/mbedtls/padlock.h @@ -8,7 +8,7 @@ * functions; you must not call them directly. */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -22,21 +22,20 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_PADLOCK_H #define MBEDTLS_PADLOCK_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "aes.h" +#include "mbedtls/aes.h" -#define MBEDTLS_ERR_PADLOCK_DATA_MISALIGNED -0x0030 /**< Input data should be aligned. */ +/** Input data should be aligned. */ +#define MBEDTLS_ERR_PADLOCK_DATA_MISALIGNED -0x0030 #if defined(__has_feature) #if __has_feature(address_sanitizer) @@ -59,7 +58,7 @@ #define MBEDTLS_PADLOCK_PHE 0x0C00 #define MBEDTLS_PADLOCK_PMM 0x3000 -#define MBEDTLS_PADLOCK_ALIGN16(x) (uint32_t *) (16 + ((int32_t) x & ~15)) +#define MBEDTLS_PADLOCK_ALIGN16(x) (uint32_t *) (16 + ((int32_t) (x) & ~15)) #ifdef __cplusplus extern "C" { @@ -73,7 +72,7 @@ extern "C" { * * \param feature The feature to detect * - * \return 1 if CPU has support for the feature, 0 otherwise + * \return non-zero if CPU has support for the feature, 0 otherwise */ int mbedtls_padlock_has_support( int feature ); diff --git a/Externals/mbedtls/include/mbedtls/pem.h b/Externals/mbedtls/include/mbedtls/pem.h index a29e9ce30024..dfb4ff218e6c 100644 --- a/Externals/mbedtls/include/mbedtls/pem.h +++ b/Externals/mbedtls/include/mbedtls/pem.h @@ -4,7 +4,7 @@ * \brief Privacy Enhanced Mail (PEM) decoding */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,14 +18,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_PEM_H #define MBEDTLS_PEM_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -38,15 +36,24 @@ * PEM data. * \{ */ -#define MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT -0x1080 /**< No PEM header or footer found. */ -#define MBEDTLS_ERR_PEM_INVALID_DATA -0x1100 /**< PEM string is not as expected. */ -#define MBEDTLS_ERR_PEM_ALLOC_FAILED -0x1180 /**< Failed to allocate memory. */ -#define MBEDTLS_ERR_PEM_INVALID_ENC_IV -0x1200 /**< RSA IV is not in hex-format. */ -#define MBEDTLS_ERR_PEM_UNKNOWN_ENC_ALG -0x1280 /**< Unsupported key encryption algorithm. */ -#define MBEDTLS_ERR_PEM_PASSWORD_REQUIRED -0x1300 /**< Private key password can't be empty. */ -#define MBEDTLS_ERR_PEM_PASSWORD_MISMATCH -0x1380 /**< Given private key password does not allow for correct decryption. */ -#define MBEDTLS_ERR_PEM_FEATURE_UNAVAILABLE -0x1400 /**< Unavailable feature, e.g. hashing/encryption combination. */ -#define MBEDTLS_ERR_PEM_BAD_INPUT_DATA -0x1480 /**< Bad input parameters to function. */ +/** No PEM header or footer found. */ +#define MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT -0x1080 +/** PEM string is not as expected. */ +#define MBEDTLS_ERR_PEM_INVALID_DATA -0x1100 +/** Failed to allocate memory. */ +#define MBEDTLS_ERR_PEM_ALLOC_FAILED -0x1180 +/** RSA IV is not in hex-format. */ +#define MBEDTLS_ERR_PEM_INVALID_ENC_IV -0x1200 +/** Unsupported key encryption algorithm. */ +#define MBEDTLS_ERR_PEM_UNKNOWN_ENC_ALG -0x1280 +/** Private key password can't be empty. */ +#define MBEDTLS_ERR_PEM_PASSWORD_REQUIRED -0x1300 +/** Given private key password does not allow for correct decryption. */ +#define MBEDTLS_ERR_PEM_PASSWORD_MISMATCH -0x1380 +/** Unavailable feature, e.g. hashing/encryption combination. */ +#define MBEDTLS_ERR_PEM_FEATURE_UNAVAILABLE -0x1400 +/** Bad input parameters to function. */ +#define MBEDTLS_ERR_PEM_BAD_INPUT_DATA -0x1480 /* \} name */ #ifdef __cplusplus @@ -112,17 +119,27 @@ void mbedtls_pem_free( mbedtls_pem_context *ctx ); * \brief Write a buffer of PEM information from a DER encoded * buffer. * - * \param header header string to write - * \param footer footer string to write - * \param der_data DER data to write - * \param der_len length of the DER data - * \param buf buffer to write to - * \param buf_len length of output buffer - * \param olen total length written / required (if buf_len is not enough) + * \param header The header string to write. + * \param footer The footer string to write. + * \param der_data The DER data to encode. + * \param der_len The length of the DER data \p der_data in Bytes. + * \param buf The buffer to write to. + * \param buf_len The length of the output buffer \p buf in Bytes. + * \param olen The address at which to store the total length written + * or required (if \p buf_len is not enough). + * + * \note You may pass \c NULL for \p buf and \c 0 for \p buf_len + * to request the length of the resulting PEM buffer in + * `*olen`. + * + * \note This function may be called with overlapping \p der_data + * and \p buf buffers. * - * \return 0 on success, or a specific PEM or BASE64 error code. On - * MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL olen is the required - * size. + * \return \c 0 on success. + * \return #MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL if \p buf isn't large + * enough to hold the PEM buffer. In this case, `*olen` holds + * the required minimum size of \p buf. + * \return Another PEM or BASE64 error code on other kinds of failure. */ int mbedtls_pem_write_buffer( const char *header, const char *footer, const unsigned char *der_data, size_t der_len, diff --git a/Externals/mbedtls/include/mbedtls/pk.h b/Externals/mbedtls/include/mbedtls/pk.h index 91950f9407b3..8f2abf2a608c 100644 --- a/Externals/mbedtls/include/mbedtls/pk.h +++ b/Externals/mbedtls/include/mbedtls/pk.h @@ -4,7 +4,7 @@ * \brief Public Key abstraction layer */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,31 +18,33 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_PK_H #define MBEDTLS_PK_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "md.h" +#include "mbedtls/md.h" #if defined(MBEDTLS_RSA_C) -#include "rsa.h" +#include "mbedtls/rsa.h" #endif #if defined(MBEDTLS_ECP_C) -#include "ecp.h" +#include "mbedtls/ecp.h" #endif #if defined(MBEDTLS_ECDSA_C) -#include "ecdsa.h" +#include "mbedtls/ecdsa.h" +#endif + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "psa/crypto.h" #endif #if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ @@ -50,23 +52,38 @@ #define inline __inline #endif -#define MBEDTLS_ERR_PK_ALLOC_FAILED -0x3F80 /**< Memory allocation failed. */ -#define MBEDTLS_ERR_PK_TYPE_MISMATCH -0x3F00 /**< Type mismatch, eg attempt to encrypt with an ECDSA key */ -#define MBEDTLS_ERR_PK_BAD_INPUT_DATA -0x3E80 /**< Bad input parameters to function. */ -#define MBEDTLS_ERR_PK_FILE_IO_ERROR -0x3E00 /**< Read/write of file failed. */ -#define MBEDTLS_ERR_PK_KEY_INVALID_VERSION -0x3D80 /**< Unsupported key version */ -#define MBEDTLS_ERR_PK_KEY_INVALID_FORMAT -0x3D00 /**< Invalid key tag or value. */ -#define MBEDTLS_ERR_PK_UNKNOWN_PK_ALG -0x3C80 /**< Key algorithm is unsupported (only RSA and EC are supported). */ -#define MBEDTLS_ERR_PK_PASSWORD_REQUIRED -0x3C00 /**< Private key password can't be empty. */ -#define MBEDTLS_ERR_PK_PASSWORD_MISMATCH -0x3B80 /**< Given private key password does not allow for correct decryption. */ -#define MBEDTLS_ERR_PK_INVALID_PUBKEY -0x3B00 /**< The pubkey tag or value is invalid (only RSA and EC are supported). */ -#define MBEDTLS_ERR_PK_INVALID_ALG -0x3A80 /**< The algorithm tag or value is invalid. */ -#define MBEDTLS_ERR_PK_UNKNOWN_NAMED_CURVE -0x3A00 /**< Elliptic curve is unsupported (only NIST curves are supported). */ -#define MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE -0x3980 /**< Unavailable feature, e.g. RSA disabled for RSA key. */ -#define MBEDTLS_ERR_PK_SIG_LEN_MISMATCH -0x3900 /**< The buffer contains a valid signature followed by more data. */ +/** Memory allocation failed. */ +#define MBEDTLS_ERR_PK_ALLOC_FAILED -0x3F80 +/** Type mismatch, eg attempt to encrypt with an ECDSA key */ +#define MBEDTLS_ERR_PK_TYPE_MISMATCH -0x3F00 +/** Bad input parameters to function. */ +#define MBEDTLS_ERR_PK_BAD_INPUT_DATA -0x3E80 +/** Read/write of file failed. */ +#define MBEDTLS_ERR_PK_FILE_IO_ERROR -0x3E00 +/** Unsupported key version */ +#define MBEDTLS_ERR_PK_KEY_INVALID_VERSION -0x3D80 +/** Invalid key tag or value. */ +#define MBEDTLS_ERR_PK_KEY_INVALID_FORMAT -0x3D00 +/** Key algorithm is unsupported (only RSA and EC are supported). */ +#define MBEDTLS_ERR_PK_UNKNOWN_PK_ALG -0x3C80 +/** Private key password can't be empty. */ +#define MBEDTLS_ERR_PK_PASSWORD_REQUIRED -0x3C00 +/** Given private key password does not allow for correct decryption. */ +#define MBEDTLS_ERR_PK_PASSWORD_MISMATCH -0x3B80 +/** The pubkey tag or value is invalid (only RSA and EC are supported). */ +#define MBEDTLS_ERR_PK_INVALID_PUBKEY -0x3B00 +/** The algorithm tag or value is invalid. */ +#define MBEDTLS_ERR_PK_INVALID_ALG -0x3A80 +/** Elliptic curve is unsupported (only NIST curves are supported). */ +#define MBEDTLS_ERR_PK_UNKNOWN_NAMED_CURVE -0x3A00 +/** Unavailable feature, e.g. RSA disabled for RSA key. */ +#define MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE -0x3980 +/** The buffer contains a valid signature followed by more data. */ +#define MBEDTLS_ERR_PK_SIG_LEN_MISMATCH -0x3900 /* MBEDTLS_ERR_PK_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_PK_HW_ACCEL_FAILED -0x3880 /**< PK hardware accelerator failed. */ +/** PK hardware accelerator failed. */ +#define MBEDTLS_ERR_PK_HW_ACCEL_FAILED -0x3880 #ifdef __cplusplus extern "C" { @@ -83,6 +100,7 @@ typedef enum { MBEDTLS_PK_ECDSA, MBEDTLS_PK_RSA_ALT, MBEDTLS_PK_RSASSA_PSS, + MBEDTLS_PK_OPAQUE, } mbedtls_pk_type_t; /** @@ -96,6 +114,58 @@ typedef struct mbedtls_pk_rsassa_pss_options } mbedtls_pk_rsassa_pss_options; +/** + * \brief Maximum size of a signature made by mbedtls_pk_sign(). + */ +/* We need to set MBEDTLS_PK_SIGNATURE_MAX_SIZE to the maximum signature + * size among the supported signature types. Do it by starting at 0, + * then incrementally increasing to be large enough for each supported + * signature mechanism. + * + * The resulting value can be 0, for example if MBEDTLS_ECDH_C is enabled + * (which allows the pk module to be included) but neither MBEDTLS_ECDSA_C + * nor MBEDTLS_RSA_C nor any opaque signature mechanism (PSA or RSA_ALT). + */ +#define MBEDTLS_PK_SIGNATURE_MAX_SIZE 0 + +#if ( defined(MBEDTLS_RSA_C) || defined(MBEDTLS_PK_RSA_ALT_SUPPORT) ) && \ + MBEDTLS_MPI_MAX_SIZE > MBEDTLS_PK_SIGNATURE_MAX_SIZE +/* For RSA, the signature can be as large as the bignum module allows. + * For RSA_ALT, the signature size is not necessarily tied to what the + * bignum module can do, but in the absence of any specific setting, + * we use that (rsa_alt_sign_wrap in pk_wrap will check). */ +#undef MBEDTLS_PK_SIGNATURE_MAX_SIZE +#define MBEDTLS_PK_SIGNATURE_MAX_SIZE MBEDTLS_MPI_MAX_SIZE +#endif + +#if defined(MBEDTLS_ECDSA_C) && \ + MBEDTLS_ECDSA_MAX_LEN > MBEDTLS_PK_SIGNATURE_MAX_SIZE +/* For ECDSA, the ecdsa module exports a constant for the maximum + * signature size. */ +#undef MBEDTLS_PK_SIGNATURE_MAX_SIZE +#define MBEDTLS_PK_SIGNATURE_MAX_SIZE MBEDTLS_ECDSA_MAX_LEN +#endif + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#if PSA_SIGNATURE_MAX_SIZE > MBEDTLS_PK_SIGNATURE_MAX_SIZE +/* PSA_SIGNATURE_MAX_SIZE is the maximum size of a signature made + * through the PSA API in the PSA representation. */ +#undef MBEDTLS_PK_SIGNATURE_MAX_SIZE +#define MBEDTLS_PK_SIGNATURE_MAX_SIZE PSA_SIGNATURE_MAX_SIZE +#endif + +#if PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE + 11 > MBEDTLS_PK_SIGNATURE_MAX_SIZE +/* The Mbed TLS representation is different for ECDSA signatures: + * PSA uses the raw concatenation of r and s, + * whereas Mbed TLS uses the ASN.1 representation (SEQUENCE of two INTEGERs). + * Add the overhead of ASN.1: up to (1+2) + 2 * (1+2+1) for the + * types, lengths (represented by up to 2 bytes), and potential leading + * zeros of the INTEGERs and the SEQUENCE. */ +#undef MBEDTLS_PK_SIGNATURE_MAX_SIZE +#define MBEDTLS_PK_SIGNATURE_MAX_SIZE ( PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE + 11 ) +#endif +#endif /* defined(MBEDTLS_USE_PSA_CRYPTO) */ + /** * \brief Types for interfacing with the debug module */ @@ -209,6 +279,11 @@ void mbedtls_pk_init( mbedtls_pk_context *ctx ); * * \param ctx The context to clear. It must have been initialized. * If this is \c NULL, this function does nothing. + * + * \note For contexts that have been set up with + * mbedtls_pk_setup_opaque(), this does not free the underlying + * PSA key and you still need to call psa_destroy_key() + * independently if you want to destroy that key. */ void mbedtls_pk_free( mbedtls_pk_context *ctx ); @@ -247,6 +322,39 @@ void mbedtls_pk_restart_free( mbedtls_pk_restart_ctx *ctx ); */ int mbedtls_pk_setup( mbedtls_pk_context *ctx, const mbedtls_pk_info_t *info ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) +/** + * \brief Initialize a PK context to wrap a PSA key. + * + * \note This function replaces mbedtls_pk_setup() for contexts + * that wrap a (possibly opaque) PSA key instead of + * storing and manipulating the key material directly. + * + * \param ctx The context to initialize. It must be empty (type NONE). + * \param key The PSA key to wrap, which must hold an ECC key pair + * (see notes below). + * + * \note The wrapped key must remain valid as long as the + * wrapping PK context is in use, that is at least between + * the point this function is called and the point + * mbedtls_pk_free() is called on this context. The wrapped + * key might then be independently used or destroyed. + * + * \note This function is currently only available for ECC key + * pairs (that is, ECC keys containing private key material). + * Support for other key types may be added later. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_PK_BAD_INPUT_DATA on invalid input + * (context already used, invalid key identifier). + * \return #MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE if the key is not an + * ECC key pair. + * \return #MBEDTLS_ERR_PK_ALLOC_FAILED on allocation failure. + */ +int mbedtls_pk_setup_opaque( mbedtls_pk_context *ctx, + const psa_key_id_t key ); +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + #if defined(MBEDTLS_PK_RSA_ALT_SUPPORT) /** * \brief Initialize an RSA-alt context @@ -400,8 +508,13 @@ int mbedtls_pk_verify_ext( mbedtls_pk_type_t type, const void *options, * \param md_alg Hash algorithm used (see notes) * \param hash Hash of the message to sign * \param hash_len Hash length or 0 (see notes) - * \param sig Place to write the signature - * \param sig_len Number of bytes written + * \param sig Place to write the signature. + * It must have enough room for the signature. + * #MBEDTLS_PK_SIGNATURE_MAX_SIZE is always enough. + * You may use a smaller buffer if it is large enough + * given the key type. + * \param sig_len On successful return, + * the number of bytes written to \p sig. * \param f_rng RNG function * \param p_rng RNG parameter * @@ -432,16 +545,21 @@ int mbedtls_pk_sign( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, * * \param ctx The PK context to use. It must have been set up * with a private key. - * \param md_alg Hash algorithm used (see notes) + * \param md_alg Hash algorithm used (see notes for mbedtls_pk_sign()) * \param hash Hash of the message to sign - * \param hash_len Hash length or 0 (see notes) - * \param sig Place to write the signature - * \param sig_len Number of bytes written + * \param hash_len Hash length or 0 (see notes for mbedtls_pk_sign()) + * \param sig Place to write the signature. + * It must have enough room for the signature. + * #MBEDTLS_PK_SIGNATURE_MAX_SIZE is always enough. + * You may use a smaller buffer if it is large enough + * given the key type. + * \param sig_len On successful return, + * the number of bytes written to \p sig. * \param f_rng RNG function * \param p_rng RNG parameter * \param rs_ctx Restart context (NULL to disable restart) * - * \return See \c mbedtls_pk_sign(), or + * \return See \c mbedtls_pk_sign(). * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached: see \c mbedtls_ecp_set_max_ops(). */ @@ -501,7 +619,11 @@ int mbedtls_pk_encrypt( mbedtls_pk_context *ctx, * \param pub Context holding a public key. * \param prv Context holding a private (and public) key. * - * \return 0 on success or MBEDTLS_ERR_PK_BAD_INPUT_DATA + * \return \c 0 on success (keys were checked and match each other). + * \return #MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE if the keys could not + * be checked - in that case they may or may not match. + * \return #MBEDTLS_ERR_PK_BAD_INPUT_DATA if a context is invalid. + * \return Another non-zero value if the keys do not match. */ int mbedtls_pk_check_pair( const mbedtls_pk_context *pub, const mbedtls_pk_context *prv ); @@ -740,6 +862,32 @@ int mbedtls_pk_write_pubkey( unsigned char **p, unsigned char *start, int mbedtls_pk_load_file( const char *path, unsigned char **buf, size_t *n ); #endif +#if defined(MBEDTLS_USE_PSA_CRYPTO) +/** + * \brief Turn an EC key into an opaque one. + * + * \warning This is a temporary utility function for tests. It might + * change or be removed at any time without notice. + * + * \note Only ECDSA keys are supported so far. Signing with the + * specified hash is the only allowed use of that key. + * + * \param pk Input: the EC key to import to a PSA key. + * Output: a PK context wrapping that PSA key. + * \param key Output: a PSA key identifier. + * It's the caller's responsibility to call + * psa_destroy_key() on that key identifier after calling + * mbedtls_pk_free() on the PK context. + * \param hash_alg The hash algorithm to allow for use with that key. + * + * \return \c 0 if successful. + * \return An Mbed TLS error code otherwise. + */ +int mbedtls_pk_wrap_as_opaque( mbedtls_pk_context *pk, + psa_key_id_t *key, + psa_algorithm_t hash_alg ); +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + #ifdef __cplusplus } #endif diff --git a/Externals/mbedtls/include/mbedtls/pk_internal.h b/Externals/mbedtls/include/mbedtls/pk_internal.h index 48b7a5f7bf29..47f7767700cd 100644 --- a/Externals/mbedtls/include/mbedtls/pk_internal.h +++ b/Externals/mbedtls/include/mbedtls/pk_internal.h @@ -4,7 +4,7 @@ * \brief Public Key abstraction layer: wrapper functions */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,20 +18,18 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_PK_WRAP_H #define MBEDTLS_PK_WRAP_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "pk.h" +#include "mbedtls/pk.h" struct mbedtls_pk_info_t { @@ -135,4 +133,8 @@ extern const mbedtls_pk_info_t mbedtls_ecdsa_info; extern const mbedtls_pk_info_t mbedtls_rsa_alt_info; #endif +#if defined(MBEDTLS_USE_PSA_CRYPTO) +extern const mbedtls_pk_info_t mbedtls_pk_opaque_info; +#endif + #endif /* MBEDTLS_PK_WRAP_H */ diff --git a/Externals/mbedtls/include/mbedtls/pkcs11.h b/Externals/mbedtls/include/mbedtls/pkcs11.h index 02427ddc1e9c..3530ee168898 100644 --- a/Externals/mbedtls/include/mbedtls/pkcs11.h +++ b/Externals/mbedtls/include/mbedtls/pkcs11.h @@ -6,7 +6,7 @@ * \author Adriaan de Jong */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -20,21 +20,19 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_PKCS11_H #define MBEDTLS_PKCS11_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif #if defined(MBEDTLS_PKCS11_C) -#include "x509_crt.h" +#include "mbedtls/x509_crt.h" #include @@ -47,6 +45,8 @@ extern "C" { #endif +#if defined(MBEDTLS_DEPRECATED_REMOVED) + /** * Context for PKCS #11 private keys. */ @@ -56,47 +56,71 @@ typedef struct mbedtls_pkcs11_context int len; } mbedtls_pkcs11_context; +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif + /** * Initialize a mbedtls_pkcs11_context. * (Just making memory references valid.) + * + * \deprecated This function is deprecated and will be removed in a + * future version of the library. */ -void mbedtls_pkcs11_init( mbedtls_pkcs11_context *ctx ); +MBEDTLS_DEPRECATED void mbedtls_pkcs11_init( mbedtls_pkcs11_context *ctx ); /** * Fill in a mbed TLS certificate, based on the given PKCS11 helper certificate. * + * \deprecated This function is deprecated and will be removed in a + * future version of the library. + * * \param cert X.509 certificate to fill * \param pkcs11h_cert PKCS #11 helper certificate * * \return 0 on success. */ -int mbedtls_pkcs11_x509_cert_bind( mbedtls_x509_crt *cert, pkcs11h_certificate_t pkcs11h_cert ); +MBEDTLS_DEPRECATED int mbedtls_pkcs11_x509_cert_bind( mbedtls_x509_crt *cert, + pkcs11h_certificate_t pkcs11h_cert ); /** * Set up a mbedtls_pkcs11_context storing the given certificate. Note that the * mbedtls_pkcs11_context will take over control of the certificate, freeing it when * done. * + * \deprecated This function is deprecated and will be removed in a + * future version of the library. + * * \param priv_key Private key structure to fill. * \param pkcs11_cert PKCS #11 helper certificate * * \return 0 on success */ -int mbedtls_pkcs11_priv_key_bind( mbedtls_pkcs11_context *priv_key, - pkcs11h_certificate_t pkcs11_cert ); +MBEDTLS_DEPRECATED int mbedtls_pkcs11_priv_key_bind( + mbedtls_pkcs11_context *priv_key, + pkcs11h_certificate_t pkcs11_cert ); /** * Free the contents of the given private key context. Note that the structure * itself is not freed. * + * \deprecated This function is deprecated and will be removed in a + * future version of the library. + * * \param priv_key Private key structure to cleanup */ -void mbedtls_pkcs11_priv_key_free( mbedtls_pkcs11_context *priv_key ); +MBEDTLS_DEPRECATED void mbedtls_pkcs11_priv_key_free( + mbedtls_pkcs11_context *priv_key ); /** * \brief Do an RSA private key decrypt, then remove the message * padding * + * \deprecated This function is deprecated and will be removed in a future + * version of the library. + * * \param ctx PKCS #11 context * \param mode must be MBEDTLS_RSA_PRIVATE, for compatibility with rsa.c's signature * \param input buffer holding the encrypted data @@ -110,15 +134,18 @@ void mbedtls_pkcs11_priv_key_free( mbedtls_pkcs11_context *priv_key ); * of ctx->N (eg. 128 bytes if RSA-1024 is used) otherwise * an error is thrown. */ -int mbedtls_pkcs11_decrypt( mbedtls_pkcs11_context *ctx, - int mode, size_t *olen, - const unsigned char *input, - unsigned char *output, - size_t output_max_len ); +MBEDTLS_DEPRECATED int mbedtls_pkcs11_decrypt( mbedtls_pkcs11_context *ctx, + int mode, size_t *olen, + const unsigned char *input, + unsigned char *output, + size_t output_max_len ); /** * \brief Do a private RSA to sign a message digest * + * \deprecated This function is deprecated and will be removed in a future + * version of the library. + * * \param ctx PKCS #11 context * \param mode must be MBEDTLS_RSA_PRIVATE, for compatibility with rsa.c's signature * \param md_alg a MBEDTLS_MD_XXX (use MBEDTLS_MD_NONE for signing raw data) @@ -132,28 +159,58 @@ int mbedtls_pkcs11_decrypt( mbedtls_pkcs11_context *ctx, * \note The "sig" buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used). */ -int mbedtls_pkcs11_sign( mbedtls_pkcs11_context *ctx, - int mode, - mbedtls_md_type_t md_alg, - unsigned int hashlen, - const unsigned char *hash, - unsigned char *sig ); +MBEDTLS_DEPRECATED int mbedtls_pkcs11_sign( mbedtls_pkcs11_context *ctx, + int mode, + mbedtls_md_type_t md_alg, + unsigned int hashlen, + const unsigned char *hash, + unsigned char *sig ); /** * SSL/TLS wrappers for PKCS#11 functions + * + * \deprecated This function is deprecated and will be removed in a future + * version of the library. */ -static inline int mbedtls_ssl_pkcs11_decrypt( void *ctx, int mode, size_t *olen, - const unsigned char *input, unsigned char *output, - size_t output_max_len ) +MBEDTLS_DEPRECATED static inline int mbedtls_ssl_pkcs11_decrypt( void *ctx, + int mode, size_t *olen, + const unsigned char *input, unsigned char *output, + size_t output_max_len ) { return mbedtls_pkcs11_decrypt( (mbedtls_pkcs11_context *) ctx, mode, olen, input, output, output_max_len ); } -static inline int mbedtls_ssl_pkcs11_sign( void *ctx, - int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, - int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, - const unsigned char *hash, unsigned char *sig ) +/** + * \brief This function signs a message digest using RSA. + * + * \deprecated This function is deprecated and will be removed in a future + * version of the library. + * + * \param ctx The PKCS #11 context. + * \param f_rng The RNG function. This parameter is unused. + * \param p_rng The RNG context. This parameter is unused. + * \param mode The operation to run. This must be set to + * MBEDTLS_RSA_PRIVATE, for compatibility with rsa.c's + * signature. + * \param md_alg The message digest algorithm. One of the MBEDTLS_MD_XXX + * must be passed to this function and MBEDTLS_MD_NONE can be + * used for signing raw data. + * \param hashlen The message digest length (for MBEDTLS_MD_NONE only). + * \param hash The buffer holding the message digest. + * \param sig The buffer that will hold the ciphertext. + * + * \return \c 0 if the signing operation was successful. + * \return A non-zero error code on failure. + * + * \note The \p sig buffer must be as large as the size of + * ctx->N. For example, 128 bytes if RSA-1024 is + * used. + */ +MBEDTLS_DEPRECATED static inline int mbedtls_ssl_pkcs11_sign( void *ctx, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, + const unsigned char *hash, unsigned char *sig ) { ((void) f_rng); ((void) p_rng); @@ -161,11 +218,25 @@ static inline int mbedtls_ssl_pkcs11_sign( void *ctx, hashlen, hash, sig ); } -static inline size_t mbedtls_ssl_pkcs11_key_len( void *ctx ) +/** + * This function gets the length of the private key. + * + * \deprecated This function is deprecated and will be removed in a future + * version of the library. + * + * \param ctx The PKCS #11 context. + * + * \return The length of the private key. + */ +MBEDTLS_DEPRECATED static inline size_t mbedtls_ssl_pkcs11_key_len( void *ctx ) { return ( (mbedtls_pkcs11_context *) ctx )->len; } +#undef MBEDTLS_DEPRECATED + +#endif /* MBEDTLS_DEPRECATED_REMOVED */ + #ifdef __cplusplus } #endif diff --git a/Externals/mbedtls/include/mbedtls/pkcs12.h b/Externals/mbedtls/include/mbedtls/pkcs12.h index d441357b7f4f..d9e85b1d1265 100644 --- a/Externals/mbedtls/include/mbedtls/pkcs12.h +++ b/Externals/mbedtls/include/mbedtls/pkcs12.h @@ -4,7 +4,7 @@ * \brief PKCS#12 Personal Information Exchange Syntax */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,28 +18,30 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_PKCS12_H #define MBEDTLS_PKCS12_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "md.h" -#include "cipher.h" -#include "asn1.h" +#include "mbedtls/md.h" +#include "mbedtls/cipher.h" +#include "mbedtls/asn1.h" #include -#define MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA -0x1F80 /**< Bad input parameters to function. */ -#define MBEDTLS_ERR_PKCS12_FEATURE_UNAVAILABLE -0x1F00 /**< Feature not available, e.g. unsupported encryption scheme. */ -#define MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT -0x1E80 /**< PBE ASN.1 data not as expected. */ -#define MBEDTLS_ERR_PKCS12_PASSWORD_MISMATCH -0x1E00 /**< Given private key password does not allow for correct decryption. */ +/** Bad input parameters to function. */ +#define MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA -0x1F80 +/** Feature not available, e.g. unsupported encryption scheme. */ +#define MBEDTLS_ERR_PKCS12_FEATURE_UNAVAILABLE -0x1F00 +/** PBE ASN.1 data not as expected. */ +#define MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT -0x1E80 +/** Given private key password does not allow for correct decryption. */ +#define MBEDTLS_ERR_PKCS12_PASSWORD_MISMATCH -0x1E00 #define MBEDTLS_PKCS12_DERIVE_KEY 1 /**< encryption/decryption key */ #define MBEDTLS_PKCS12_DERIVE_IV 2 /**< initialization vector */ @@ -77,11 +79,13 @@ int mbedtls_pkcs12_pbe_sha1_rc4_128( mbedtls_asn1_buf *pbe_params, int mode, * \brief PKCS12 Password Based function (encryption / decryption) * for cipher-based and mbedtls_md-based PBE's * - * \param pbe_params an ASN1 buffer containing the pkcs-12PbeParams structure - * \param mode either MBEDTLS_PKCS12_PBE_ENCRYPT or MBEDTLS_PKCS12_PBE_DECRYPT + * \param pbe_params an ASN1 buffer containing the pkcs-12 PbeParams structure + * \param mode either #MBEDTLS_PKCS12_PBE_ENCRYPT or + * #MBEDTLS_PKCS12_PBE_DECRYPT * \param cipher_type the cipher used - * \param md_type the mbedtls_md used - * \param pwd the password used (may be NULL if no password is used) + * \param md_type the mbedtls_md used + * \param pwd Latin1-encoded password used. This may only be \c NULL when + * \p pwdlen is 0. No null terminator should be used. * \param pwdlen length of the password (may be 0) * \param input the input data * \param len data length @@ -102,18 +106,24 @@ int mbedtls_pkcs12_pbe( mbedtls_asn1_buf *pbe_params, int mode, * to produce pseudo-random bits for a particular "purpose". * * Depending on the given id, this function can produce an - * encryption/decryption key, an nitialization vector or an + * encryption/decryption key, an initialization vector or an * integrity key. * * \param data buffer to store the derived data in - * \param datalen length to fill - * \param pwd password to use (may be NULL if no password is used) - * \param pwdlen length of the password (may be 0) - * \param salt salt buffer to use - * \param saltlen length of the salt - * \param mbedtls_md mbedtls_md type to use during the derivation - * \param id id that describes the purpose (can be MBEDTLS_PKCS12_DERIVE_KEY, - * MBEDTLS_PKCS12_DERIVE_IV or MBEDTLS_PKCS12_DERIVE_MAC_KEY) + * \param datalen length of buffer to fill + * \param pwd The password to use. For compliance with PKCS#12 §B.1, this + * should be a BMPString, i.e. a Unicode string where each + * character is encoded as 2 bytes in big-endian order, with + * no byte order mark and with a null terminator (i.e. the + * last two bytes should be 0x00 0x00). + * \param pwdlen length of the password (may be 0). + * \param salt Salt buffer to use This may only be \c NULL when + * \p saltlen is 0. + * \param saltlen length of the salt (may be zero) + * \param mbedtls_md mbedtls_md type to use during the derivation + * \param id id that describes the purpose (can be + * #MBEDTLS_PKCS12_DERIVE_KEY, #MBEDTLS_PKCS12_DERIVE_IV or + * #MBEDTLS_PKCS12_DERIVE_MAC_KEY) * \param iterations number of iterations * * \return 0 if successful, or a MD, BIGNUM type error. diff --git a/Externals/mbedtls/include/mbedtls/pkcs5.h b/Externals/mbedtls/include/mbedtls/pkcs5.h index c92185f7a68c..696930f745f0 100644 --- a/Externals/mbedtls/include/mbedtls/pkcs5.h +++ b/Externals/mbedtls/include/mbedtls/pkcs5.h @@ -6,7 +6,7 @@ * \author Mathias Olsson */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -20,28 +20,30 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_PKCS5_H #define MBEDTLS_PKCS5_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "asn1.h" -#include "md.h" +#include "mbedtls/asn1.h" +#include "mbedtls/md.h" #include #include -#define MBEDTLS_ERR_PKCS5_BAD_INPUT_DATA -0x2f80 /**< Bad input parameters to function. */ -#define MBEDTLS_ERR_PKCS5_INVALID_FORMAT -0x2f00 /**< Unexpected ASN.1 data. */ -#define MBEDTLS_ERR_PKCS5_FEATURE_UNAVAILABLE -0x2e80 /**< Requested encryption or digest alg not available. */ -#define MBEDTLS_ERR_PKCS5_PASSWORD_MISMATCH -0x2e00 /**< Given private key password does not allow for correct decryption. */ +/** Bad input parameters to function. */ +#define MBEDTLS_ERR_PKCS5_BAD_INPUT_DATA -0x2f80 +/** Unexpected ASN.1 data. */ +#define MBEDTLS_ERR_PKCS5_INVALID_FORMAT -0x2f00 +/** Requested encryption or digest alg not available. */ +#define MBEDTLS_ERR_PKCS5_FEATURE_UNAVAILABLE -0x2e80 +/** Given private key password does not allow for correct decryption. */ +#define MBEDTLS_ERR_PKCS5_PASSWORD_MISMATCH -0x2e00 #define MBEDTLS_PKCS5_DECRYPT 0 #define MBEDTLS_PKCS5_ENCRYPT 1 diff --git a/Externals/mbedtls/include/mbedtls/platform.h b/Externals/mbedtls/include/mbedtls/platform.h index 89fe8a7b197a..bdef07498d75 100644 --- a/Externals/mbedtls/include/mbedtls/platform.h +++ b/Externals/mbedtls/include/mbedtls/platform.h @@ -13,7 +13,7 @@ * dynamically configured at runtime. */ /* - * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -27,24 +27,24 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_PLATFORM_H #define MBEDTLS_PLATFORM_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif #if defined(MBEDTLS_HAVE_TIME) -#include "platform_time.h" +#include "mbedtls/platform_time.h" #endif -#define MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED -0x0070 /**< Hardware accelerator failed */ -#define MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED -0x0072 /**< The requested feature is not supported by the platform */ +/** Hardware accelerator failed */ +#define MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED -0x0070 +/** The requested feature is not supported by the platform */ +#define MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED -0x0072 #ifdef __cplusplus extern "C" { @@ -58,17 +58,33 @@ extern "C" { * \{ */ +/* The older Microsoft Windows common runtime provides non-conforming + * implementations of some standard library functions, including snprintf + * and vsnprintf. This affects MSVC and MinGW builds. + */ +#if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER <= 1900) +#define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF +#define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF +#endif + #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) #include #include #include #if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF) -#if defined(_WIN32) +#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF) #define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf /**< The default \c snprintf function to use. */ #else #define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf /**< The default \c snprintf function to use. */ #endif #endif +#if !defined(MBEDTLS_PLATFORM_STD_VSNPRINTF) +#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF) +#define MBEDTLS_PLATFORM_STD_VSNPRINTF mbedtls_platform_win32_vsnprintf /**< The default \c vsnprintf function to use. */ +#else +#define MBEDTLS_PLATFORM_STD_VSNPRINTF vsnprintf /**< The default \c vsnprintf function to use. */ +#endif +#endif #if !defined(MBEDTLS_PLATFORM_STD_PRINTF) #define MBEDTLS_PLATFORM_STD_PRINTF printf /**< The default \c printf function to use. */ #endif @@ -204,7 +220,7 @@ int mbedtls_platform_set_printf( int (*printf_func)( const char *, ... ) ); * - however it is acceptable to return -1 instead of the required length when * the destination buffer is too short. */ -#if defined(_WIN32) +#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF) /* For Windows (inc. MSYS2), we provide our own fixed implementation */ int mbedtls_platform_win32_snprintf( char *s, size_t n, const char *fmt, ... ); #endif @@ -230,6 +246,42 @@ int mbedtls_platform_set_snprintf( int (*snprintf_func)( char * s, size_t n, #endif /* MBEDTLS_PLATFORM_SNPRINTF_MACRO */ #endif /* MBEDTLS_PLATFORM_SNPRINTF_ALT */ +/* + * The function pointers for vsnprintf + * + * The vsnprintf implementation should conform to C99: + * - it *must* always correctly zero-terminate the buffer + * (except when n == 0, then it must leave the buffer untouched) + * - however it is acceptable to return -1 instead of the required length when + * the destination buffer is too short. + */ +#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF) +#include +/* For Older Windows (inc. MSYS2), we provide our own fixed implementation */ +int mbedtls_platform_win32_vsnprintf( char *s, size_t n, const char *fmt, va_list arg ); +#endif + +#if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT) +#include +extern int (*mbedtls_vsnprintf)( char * s, size_t n, const char * format, va_list arg ); + +/** + * \brief Set your own snprintf function pointer + * + * \param vsnprintf_func The \c vsnprintf function implementation + * + * \return \c 0 + */ +int mbedtls_platform_set_vsnprintf( int (*vsnprintf_func)( char * s, size_t n, + const char * format, va_list arg ) ); +#else /* MBEDTLS_PLATFORM_VSNPRINTF_ALT */ +#if defined(MBEDTLS_PLATFORM_VSNPRINTF_MACRO) +#define mbedtls_vsnprintf MBEDTLS_PLATFORM_VSNPRINTF_MACRO +#else +#define mbedtls_vsnprintf vsnprintf +#endif /* MBEDTLS_PLATFORM_VSNPRINTF_MACRO */ +#endif /* MBEDTLS_PLATFORM_VSNPRINTF_ALT */ + /* * The function pointers for exit */ diff --git a/Externals/mbedtls/include/mbedtls/platform_time.h b/Externals/mbedtls/include/mbedtls/platform_time.h index 2ed36f56c9ee..7e7daab69207 100644 --- a/Externals/mbedtls/include/mbedtls/platform_time.h +++ b/Externals/mbedtls/include/mbedtls/platform_time.h @@ -4,7 +4,7 @@ * \brief mbed TLS Platform time abstraction */ /* - * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,14 +18,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_PLATFORM_TIME_H #define MBEDTLS_PLATFORM_TIME_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif diff --git a/Externals/mbedtls/include/mbedtls/platform_util.h b/Externals/mbedtls/include/mbedtls/platform_util.h index dba6d4598227..f982db8c01c3 100644 --- a/Externals/mbedtls/include/mbedtls/platform_util.h +++ b/Externals/mbedtls/include/mbedtls/platform_util.h @@ -5,7 +5,7 @@ * library. */ /* - * Copyright (C) 2018, Arm Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -19,21 +19,19 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_PLATFORM_UTIL_H #define MBEDTLS_PLATFORM_UTIL_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif #include #if defined(MBEDTLS_HAVE_TIME_DATE) -#include "platform_time.h" +#include "mbedtls/platform_time.h" #include #endif /* MBEDTLS_HAVE_TIME_DATE */ @@ -43,6 +41,12 @@ extern "C" { #if defined(MBEDTLS_CHECK_PARAMS) +#if defined(MBEDTLS_CHECK_PARAMS_ASSERT) +/* Allow the user to define MBEDTLS_PARAM_FAILED to something like assert + * (which is what our config.h suggests). */ +#include +#endif /* MBEDTLS_CHECK_PARAMS_ASSERT */ + #if defined(MBEDTLS_PARAM_FAILED) /** An alternative definition of MBEDTLS_PARAM_FAILED has been set in config.h. * @@ -50,6 +54,11 @@ extern "C" { * MBEDTLS_PARAM_FAILED() will expand to a call to mbedtls_param_failed(). */ #define MBEDTLS_PARAM_FAILED_ALT + +#elif defined(MBEDTLS_CHECK_PARAMS_ASSERT) +#define MBEDTLS_PARAM_FAILED( cond ) assert( cond ) +#define MBEDTLS_PARAM_FAILED_ALT + #else /* MBEDTLS_PARAM_FAILED */ #define MBEDTLS_PARAM_FAILED( cond ) \ mbedtls_param_failed( #cond, __FILE__, __LINE__ ) @@ -123,6 +132,95 @@ MBEDTLS_DEPRECATED typedef int mbedtls_deprecated_numeric_constant_t; #endif /* MBEDTLS_DEPRECATED_WARNING */ #endif /* MBEDTLS_DEPRECATED_REMOVED */ +/* Implementation of the check-return facility. + * See the user documentation in config.h. + * + * Do not use this macro directly to annotate function: instead, + * use one of MBEDTLS_CHECK_RETURN_CRITICAL or MBEDTLS_CHECK_RETURN_TYPICAL + * depending on how important it is to check the return value. + */ +#if !defined(MBEDTLS_CHECK_RETURN) +#if defined(__GNUC__) +#define MBEDTLS_CHECK_RETURN __attribute__((__warn_unused_result__)) +#elif defined(_MSC_VER) && _MSC_VER >= 1700 +#include +#define MBEDTLS_CHECK_RETURN _Check_return_ +#else +#define MBEDTLS_CHECK_RETURN +#endif +#endif + +/** Critical-failure function + * + * This macro appearing at the beginning of the declaration of a function + * indicates that its return value should be checked in all applications. + * Omitting the check is very likely to indicate a bug in the application + * and will result in a compile-time warning if #MBEDTLS_CHECK_RETURN + * is implemented for the compiler in use. + * + * \note The use of this macro is a work in progress. + * This macro may be added to more functions in the future. + * Such an extension is not considered an API break, provided that + * there are near-unavoidable circumstances under which the function + * can fail. For example, signature/MAC/AEAD verification functions, + * and functions that require a random generator, are considered + * return-check-critical. + */ +#define MBEDTLS_CHECK_RETURN_CRITICAL MBEDTLS_CHECK_RETURN + +/** Ordinary-failure function + * + * This macro appearing at the beginning of the declaration of a function + * indicates that its return value should be generally be checked in portable + * applications. Omitting the check will result in a compile-time warning if + * #MBEDTLS_CHECK_RETURN is implemented for the compiler in use and + * #MBEDTLS_CHECK_RETURN_WARNING is enabled in the compile-time configuration. + * + * You can use #MBEDTLS_IGNORE_RETURN to explicitly ignore the return value + * of a function that is annotated with #MBEDTLS_CHECK_RETURN. + * + * \note The use of this macro is a work in progress. + * This macro will be added to more functions in the future. + * Eventually this should appear before most functions returning + * an error code (as \c int in the \c mbedtls_xxx API or + * as ::psa_status_t in the \c psa_xxx API). + */ +#if defined(MBEDTLS_CHECK_RETURN_WARNING) +#define MBEDTLS_CHECK_RETURN_TYPICAL MBEDTLS_CHECK_RETURN +#else +#define MBEDTLS_CHECK_RETURN_TYPICAL +#endif + +/** Benign-failure function + * + * This macro appearing at the beginning of the declaration of a function + * indicates that it is rarely useful to check its return value. + * + * This macro has an empty expansion. It exists for documentation purposes: + * a #MBEDTLS_CHECK_RETURN_OPTIONAL annotation indicates that the function + * has been analyzed for return-check usefuless, whereas the lack of + * an annotation indicates that the function has not been analyzed and its + * return-check usefulness is unknown. + */ +#define MBEDTLS_CHECK_RETURN_OPTIONAL + +/** \def MBEDTLS_IGNORE_RETURN + * + * Call this macro with one argument, a function call, to suppress a warning + * from #MBEDTLS_CHECK_RETURN due to that function call. + */ +#if !defined(MBEDTLS_IGNORE_RETURN) +/* GCC doesn't silence the warning with just (void)(result). + * (void)!(result) is known to work up at least up to GCC 10, as well + * as with Clang and MSVC. + * + * https://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Non_002dbugs.html + * https://stackoverflow.com/questions/40576003/ignoring-warning-wunused-result + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425#c34 + */ +#define MBEDTLS_IGNORE_RETURN(result) ( (void) !( result ) ) +#endif + /** * \brief Securely zeroize a buffer * diff --git a/Externals/mbedtls/include/mbedtls/poly1305.h b/Externals/mbedtls/include/mbedtls/poly1305.h index f0ec44c96833..a69ede98b5ef 100644 --- a/Externals/mbedtls/include/mbedtls/poly1305.h +++ b/Externals/mbedtls/include/mbedtls/poly1305.h @@ -12,7 +12,8 @@ * \author Daniel King */ -/* Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved. +/* + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -26,15 +27,13 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_POLY1305_H #define MBEDTLS_POLY1305_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -42,15 +41,18 @@ #include #include -#define MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA -0x0057 /**< Invalid input parameter(s). */ +/** Invalid input parameter(s). */ +#define MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA -0x0057 /* MBEDTLS_ERR_POLY1305_FEATURE_UNAVAILABLE is deprecated and should not be * used. */ -#define MBEDTLS_ERR_POLY1305_FEATURE_UNAVAILABLE -0x0059 /**< Feature not available. For example, s part of the API is not implemented. */ +/** Feature not available. For example, s part of the API is not implemented. */ +#define MBEDTLS_ERR_POLY1305_FEATURE_UNAVAILABLE -0x0059 /* MBEDTLS_ERR_POLY1305_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_POLY1305_HW_ACCEL_FAILED -0x005B /**< Poly1305 hardware accelerator failed. */ +/** Poly1305 hardware accelerator failed. */ +#define MBEDTLS_ERR_POLY1305_HW_ACCEL_FAILED -0x005B #ifdef __cplusplus extern "C" { diff --git a/Externals/mbedtls/include/mbedtls/psa_util.h b/Externals/mbedtls/include/mbedtls/psa_util.h new file mode 100644 index 000000000000..af7a809e40b6 --- /dev/null +++ b/Externals/mbedtls/include/mbedtls/psa_util.h @@ -0,0 +1,512 @@ +/** + * \file psa_util.h + * + * \brief Utility functions for the use of the PSA Crypto library. + * + * \warning This function is not part of the public API and may + * change at any time. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBEDTLS_PSA_UTIL_H +#define MBEDTLS_PSA_UTIL_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_USE_PSA_CRYPTO) + +#include "psa/crypto.h" + +#include "mbedtls/ecp.h" +#include "mbedtls/md.h" +#include "mbedtls/pk.h" +#include "mbedtls/oid.h" + +#include + +/* Translations for symmetric crypto. */ + +static inline psa_key_type_t mbedtls_psa_translate_cipher_type( + mbedtls_cipher_type_t cipher ) +{ + switch( cipher ) + { + case MBEDTLS_CIPHER_AES_128_CCM: + case MBEDTLS_CIPHER_AES_192_CCM: + case MBEDTLS_CIPHER_AES_256_CCM: + case MBEDTLS_CIPHER_AES_128_GCM: + case MBEDTLS_CIPHER_AES_192_GCM: + case MBEDTLS_CIPHER_AES_256_GCM: + case MBEDTLS_CIPHER_AES_128_CBC: + case MBEDTLS_CIPHER_AES_192_CBC: + case MBEDTLS_CIPHER_AES_256_CBC: + case MBEDTLS_CIPHER_AES_128_ECB: + case MBEDTLS_CIPHER_AES_192_ECB: + case MBEDTLS_CIPHER_AES_256_ECB: + return( PSA_KEY_TYPE_AES ); + + /* ARIA not yet supported in PSA. */ + /* case MBEDTLS_CIPHER_ARIA_128_CCM: + case MBEDTLS_CIPHER_ARIA_192_CCM: + case MBEDTLS_CIPHER_ARIA_256_CCM: + case MBEDTLS_CIPHER_ARIA_128_GCM: + case MBEDTLS_CIPHER_ARIA_192_GCM: + case MBEDTLS_CIPHER_ARIA_256_GCM: + case MBEDTLS_CIPHER_ARIA_128_CBC: + case MBEDTLS_CIPHER_ARIA_192_CBC: + case MBEDTLS_CIPHER_ARIA_256_CBC: + return( PSA_KEY_TYPE_ARIA ); */ + + default: + return( 0 ); + } +} + +static inline psa_algorithm_t mbedtls_psa_translate_cipher_mode( + mbedtls_cipher_mode_t mode, size_t taglen ) +{ + switch( mode ) + { + case MBEDTLS_MODE_ECB: + return( PSA_ALG_ECB_NO_PADDING ); + case MBEDTLS_MODE_GCM: + return( PSA_ALG_AEAD_WITH_SHORTENED_TAG( PSA_ALG_GCM, taglen ) ); + case MBEDTLS_MODE_CCM: + return( PSA_ALG_AEAD_WITH_SHORTENED_TAG( PSA_ALG_CCM, taglen ) ); + case MBEDTLS_MODE_CBC: + if( taglen == 0 ) + return( PSA_ALG_CBC_NO_PADDING ); + else + return( 0 ); + default: + return( 0 ); + } +} + +static inline psa_key_usage_t mbedtls_psa_translate_cipher_operation( + mbedtls_operation_t op ) +{ + switch( op ) + { + case MBEDTLS_ENCRYPT: + return( PSA_KEY_USAGE_ENCRYPT ); + case MBEDTLS_DECRYPT: + return( PSA_KEY_USAGE_DECRYPT ); + default: + return( 0 ); + } +} + +/* Translations for hashing. */ + +static inline psa_algorithm_t mbedtls_psa_translate_md( mbedtls_md_type_t md_alg ) +{ + switch( md_alg ) + { +#if defined(MBEDTLS_MD2_C) + case MBEDTLS_MD_MD2: + return( PSA_ALG_MD2 ); +#endif +#if defined(MBEDTLS_MD4_C) + case MBEDTLS_MD_MD4: + return( PSA_ALG_MD4 ); +#endif +#if defined(MBEDTLS_MD5_C) + case MBEDTLS_MD_MD5: + return( PSA_ALG_MD5 ); +#endif +#if defined(MBEDTLS_SHA1_C) + case MBEDTLS_MD_SHA1: + return( PSA_ALG_SHA_1 ); +#endif +#if defined(MBEDTLS_SHA256_C) + case MBEDTLS_MD_SHA224: + return( PSA_ALG_SHA_224 ); + case MBEDTLS_MD_SHA256: + return( PSA_ALG_SHA_256 ); +#endif +#if defined(MBEDTLS_SHA512_C) + case MBEDTLS_MD_SHA384: + return( PSA_ALG_SHA_384 ); + case MBEDTLS_MD_SHA512: + return( PSA_ALG_SHA_512 ); +#endif +#if defined(MBEDTLS_RIPEMD160_C) + case MBEDTLS_MD_RIPEMD160: + return( PSA_ALG_RIPEMD160 ); +#endif + case MBEDTLS_MD_NONE: + return( 0 ); + default: + return( 0 ); + } +} + +/* Translations for ECC. */ + +static inline int mbedtls_psa_get_ecc_oid_from_id( + psa_ecc_family_t curve, size_t bits, + char const **oid, size_t *oid_len ) +{ + switch( curve ) + { + case PSA_ECC_FAMILY_SECP_R1: + switch( bits ) + { +#if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) + case 192: + *oid = MBEDTLS_OID_EC_GRP_SECP192R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP192R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) + case 224: + *oid = MBEDTLS_OID_EC_GRP_SECP224R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP224R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) + case 256: + *oid = MBEDTLS_OID_EC_GRP_SECP256R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP256R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) + case 384: + *oid = MBEDTLS_OID_EC_GRP_SECP384R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP384R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) + case 521: + *oid = MBEDTLS_OID_EC_GRP_SECP521R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP521R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */ + } + break; + case PSA_ECC_FAMILY_SECP_K1: + switch( bits ) + { +#if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) + case 192: + *oid = MBEDTLS_OID_EC_GRP_SECP192K1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP192K1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) + case 224: + *oid = MBEDTLS_OID_EC_GRP_SECP224K1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP224K1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) + case 256: + *oid = MBEDTLS_OID_EC_GRP_SECP256K1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP256K1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */ + } + break; + case PSA_ECC_FAMILY_BRAINPOOL_P_R1: + switch( bits ) + { +#if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) + case 256: + *oid = MBEDTLS_OID_EC_GRP_BP256R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_BP256R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_BP256R1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) + case 384: + *oid = MBEDTLS_OID_EC_GRP_BP384R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_BP384R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_BP384R1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) + case 512: + *oid = MBEDTLS_OID_EC_GRP_BP512R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_BP512R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */ + } + break; + } + (void) oid; + (void) oid_len; + return( -1 ); +} + +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH 1 + +#if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 192 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 192 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 224 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 224 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 256 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 256 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 384 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 384 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 521 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 521 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 192 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 192 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 224 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 224 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 256 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 256 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 256 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 256 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_BP256R1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 384 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 384 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_BP384R1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 512 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 512 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */ + + +/* Translations for PK layer */ + +static inline int mbedtls_psa_err_translate_pk( psa_status_t status ) +{ + switch( status ) + { + case PSA_SUCCESS: + return( 0 ); + case PSA_ERROR_NOT_SUPPORTED: + return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); + case PSA_ERROR_INSUFFICIENT_MEMORY: + return( MBEDTLS_ERR_PK_ALLOC_FAILED ); + case PSA_ERROR_INSUFFICIENT_ENTROPY: + return( MBEDTLS_ERR_ECP_RANDOM_FAILED ); + case PSA_ERROR_BAD_STATE: + return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); + /* All other failures */ + case PSA_ERROR_COMMUNICATION_FAILURE: + case PSA_ERROR_HARDWARE_FAILURE: + case PSA_ERROR_CORRUPTION_DETECTED: + return( MBEDTLS_ERR_PK_HW_ACCEL_FAILED ); + default: /* We return the same as for the 'other failures', + * but list them separately nonetheless to indicate + * which failure conditions we have considered. */ + return( MBEDTLS_ERR_PK_HW_ACCEL_FAILED ); + } +} + +/* Translations for ECC */ + +/* This function transforms an ECC group identifier from + * https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 + * into a PSA ECC group identifier. */ +#if defined(MBEDTLS_ECP_C) +static inline psa_key_type_t mbedtls_psa_parse_tls_ecc_group( + uint16_t tls_ecc_grp_reg_id, size_t *bits ) +{ + const mbedtls_ecp_curve_info *curve_info = + mbedtls_ecp_curve_info_from_tls_id( tls_ecc_grp_reg_id ); + if( curve_info == NULL ) + return( 0 ); + return( PSA_KEY_TYPE_ECC_KEY_PAIR( + mbedtls_ecc_group_to_psa( curve_info->grp_id, bits ) ) ); +} +#endif /* MBEDTLS_ECP_C */ + +/* This function takes a buffer holding an EC public key + * exported through psa_export_public_key(), and converts + * it into an ECPoint structure to be put into a ClientKeyExchange + * message in an ECDHE exchange. + * + * Both the present and the foreseeable future format of EC public keys + * used by PSA have the ECPoint structure contained in the exported key + * as a subbuffer, and the function merely selects this subbuffer instead + * of making a copy. + */ +static inline int mbedtls_psa_tls_psa_ec_to_ecpoint( unsigned char *src, + size_t srclen, + unsigned char **dst, + size_t *dstlen ) +{ + *dst = src; + *dstlen = srclen; + return( 0 ); +} + +/* This function takes a buffer holding an ECPoint structure + * (as contained in a TLS ServerKeyExchange message for ECDHE + * exchanges) and converts it into a format that the PSA key + * agreement API understands. + */ +static inline int mbedtls_psa_tls_ecpoint_to_psa_ec( unsigned char const *src, + size_t srclen, + unsigned char *dst, + size_t dstlen, + size_t *olen ) +{ + if( srclen > dstlen ) + return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL ); + + memcpy( dst, src, srclen ); + *olen = srclen; + return( 0 ); +} + +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + +/* Expose whatever RNG the PSA subsystem uses to applications using the + * mbedtls_xxx API. The declarations and definitions here need to be + * consistent with the implementation in library/psa_crypto_random_impl.h. + * See that file for implementation documentation. */ +#if defined(MBEDTLS_PSA_CRYPTO_C) + +/* The type of a `f_rng` random generator function that many library functions + * take. + * + * This type name is not part of the Mbed TLS stable API. It may be renamed + * or moved without warning. + */ +typedef int mbedtls_f_rng_t( void *p_rng, unsigned char *output, size_t output_size ); + +#if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) + +/** The random generator function for the PSA subsystem. + * + * This function is suitable as the `f_rng` random generator function + * parameter of many `mbedtls_xxx` functions. Use #MBEDTLS_PSA_RANDOM_STATE + * to obtain the \p p_rng parameter. + * + * The implementation of this function depends on the configuration of the + * library. + * + * \note Depending on the configuration, this may be a function or + * a pointer to a function. + * + * \note This function may only be used if the PSA crypto subsystem is active. + * This means that you must call psa_crypto_init() before any call to + * this function, and you must not call this function after calling + * mbedtls_psa_crypto_free(). + * + * \param p_rng The random generator context. This must be + * #MBEDTLS_PSA_RANDOM_STATE. No other state is + * supported. + * \param output The buffer to fill. It must have room for + * \c output_size bytes. + * \param output_size The number of bytes to write to \p output. + * This function may fail if \p output_size is too + * large. It is guaranteed to accept any output size + * requested by Mbed TLS library functions. The + * maximum request size depends on the library + * configuration. + * + * \return \c 0 on success. + * \return An `MBEDTLS_ERR_ENTROPY_xxx`, + * `MBEDTLS_ERR_PLATFORM_xxx, + * `MBEDTLS_ERR_CTR_DRBG_xxx` or + * `MBEDTLS_ERR_HMAC_DRBG_xxx` on error. + */ +int mbedtls_psa_get_random( void *p_rng, + unsigned char *output, + size_t output_size ); + +/** The random generator state for the PSA subsystem. + * + * This macro expands to an expression which is suitable as the `p_rng` + * random generator state parameter of many `mbedtls_xxx` functions. + * It must be used in combination with the random generator function + * mbedtls_psa_get_random(). + * + * The implementation of this macro depends on the configuration of the + * library. Do not make any assumption on its nature. + */ +#define MBEDTLS_PSA_RANDOM_STATE NULL + +#else /* !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) */ + +#if defined(MBEDTLS_CTR_DRBG_C) +#include "mbedtls/ctr_drbg.h" +typedef mbedtls_ctr_drbg_context mbedtls_psa_drbg_context_t; +static mbedtls_f_rng_t *const mbedtls_psa_get_random = mbedtls_ctr_drbg_random; +#elif defined(MBEDTLS_HMAC_DRBG_C) +#include "mbedtls/hmac_drbg.h" +typedef mbedtls_hmac_drbg_context mbedtls_psa_drbg_context_t; +static mbedtls_f_rng_t *const mbedtls_psa_get_random = mbedtls_hmac_drbg_random; +#endif +extern mbedtls_psa_drbg_context_t *const mbedtls_psa_random_state; + +#define MBEDTLS_PSA_RANDOM_STATE mbedtls_psa_random_state + +#endif /* !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) */ + +#endif /* MBEDTLS_PSA_CRYPTO_C */ + +#endif /* MBEDTLS_PSA_UTIL_H */ diff --git a/Externals/mbedtls/include/mbedtls/ripemd160.h b/Externals/mbedtls/include/mbedtls/ripemd160.h index b42f6d2a9597..63270d123943 100644 --- a/Externals/mbedtls/include/mbedtls/ripemd160.h +++ b/Externals/mbedtls/include/mbedtls/ripemd160.h @@ -4,7 +4,7 @@ * \brief RIPE MD-160 message digest */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,14 +18,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_RIPEMD160_H #define MBEDTLS_RIPEMD160_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -35,7 +33,8 @@ /* MBEDTLS_ERR_RIPEMD160_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_RIPEMD160_HW_ACCEL_FAILED -0x0031 /**< RIPEMD160 hardware accelerator failed */ +/** RIPEMD160 hardware accelerator failed */ +#define MBEDTLS_ERR_RIPEMD160_HW_ACCEL_FAILED -0x0031 #ifdef __cplusplus extern "C" { @@ -57,7 +56,7 @@ typedef struct mbedtls_ripemd160_context mbedtls_ripemd160_context; #else /* MBEDTLS_RIPEMD160_ALT */ -#include "ripemd160.h" +#include "ripemd160_alt.h" #endif /* MBEDTLS_RIPEMD160_ALT */ /** diff --git a/Externals/mbedtls/include/mbedtls/rsa.h b/Externals/mbedtls/include/mbedtls/rsa.h index 906c4273325f..3c481e12a178 100644 --- a/Externals/mbedtls/include/mbedtls/rsa.h +++ b/Externals/mbedtls/include/mbedtls/rsa.h @@ -10,7 +10,7 @@ * */ /* - * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -24,44 +24,53 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_RSA_H #define MBEDTLS_RSA_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "bignum.h" -#include "md.h" +#include "mbedtls/bignum.h" +#include "mbedtls/md.h" #if defined(MBEDTLS_THREADING_C) -#include "threading.h" +#include "mbedtls/threading.h" #endif /* * RSA Error codes */ -#define MBEDTLS_ERR_RSA_BAD_INPUT_DATA -0x4080 /**< Bad input parameters to function. */ -#define MBEDTLS_ERR_RSA_INVALID_PADDING -0x4100 /**< Input data contains invalid padding and is rejected. */ -#define MBEDTLS_ERR_RSA_KEY_GEN_FAILED -0x4180 /**< Something failed during generation of a key. */ -#define MBEDTLS_ERR_RSA_KEY_CHECK_FAILED -0x4200 /**< Key failed to pass the validity check of the library. */ -#define MBEDTLS_ERR_RSA_PUBLIC_FAILED -0x4280 /**< The public key operation failed. */ -#define MBEDTLS_ERR_RSA_PRIVATE_FAILED -0x4300 /**< The private key operation failed. */ -#define MBEDTLS_ERR_RSA_VERIFY_FAILED -0x4380 /**< The PKCS#1 verification failed. */ -#define MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE -0x4400 /**< The output buffer for decryption is not large enough. */ -#define MBEDTLS_ERR_RSA_RNG_FAILED -0x4480 /**< The random generator failed to generate non-zeros. */ +/** Bad input parameters to function. */ +#define MBEDTLS_ERR_RSA_BAD_INPUT_DATA -0x4080 +/** Input data contains invalid padding and is rejected. */ +#define MBEDTLS_ERR_RSA_INVALID_PADDING -0x4100 +/** Something failed during generation of a key. */ +#define MBEDTLS_ERR_RSA_KEY_GEN_FAILED -0x4180 +/** Key failed to pass the validity check of the library. */ +#define MBEDTLS_ERR_RSA_KEY_CHECK_FAILED -0x4200 +/** The public key operation failed. */ +#define MBEDTLS_ERR_RSA_PUBLIC_FAILED -0x4280 +/** The private key operation failed. */ +#define MBEDTLS_ERR_RSA_PRIVATE_FAILED -0x4300 +/** The PKCS#1 verification failed. */ +#define MBEDTLS_ERR_RSA_VERIFY_FAILED -0x4380 +/** The output buffer for decryption is not large enough. */ +#define MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE -0x4400 +/** The random generator failed to generate non-zeros. */ +#define MBEDTLS_ERR_RSA_RNG_FAILED -0x4480 /* MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION is deprecated and should not be used. */ -#define MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION -0x4500 /**< The implementation does not offer the requested operation, for example, because of security violations or lack of functionality. */ +/** The implementation does not offer the requested operation, for example, because of security violations or lack of functionality. */ +#define MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION -0x4500 /* MBEDTLS_ERR_RSA_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_RSA_HW_ACCEL_FAILED -0x4580 /**< RSA hardware accelerator failed. */ +/** RSA hardware accelerator failed. */ +#define MBEDTLS_ERR_RSA_HW_ACCEL_FAILED -0x4580 /* * RSA constants @@ -99,7 +108,10 @@ extern "C" { */ typedef struct mbedtls_rsa_context { - int ver; /*!< Always 0.*/ + int ver; /*!< Reserved for internal purposes. + * Do not set this field in application + * code. Its meaning might change without + * notice. */ size_t len; /*!< The size of \p N in Bytes. */ mbedtls_mpi N; /*!< The public modulus. */ @@ -129,6 +141,7 @@ typedef struct mbedtls_rsa_context mask generating function used in the EME-OAEP and EMSA-PSS encodings. */ #if defined(MBEDTLS_THREADING_C) + /* Invariant: the mutex is initialized iff ver != 0. */ mbedtls_threading_mutex_t mutex; /*!< Thread-safety mutex. */ #endif } @@ -150,13 +163,13 @@ mbedtls_rsa_context; * \note The choice of padding mode is strictly enforced for private key * operations, since there might be security concerns in * mixing padding modes. For public key operations it is - * a default value, which can be overriden by calling specific + * a default value, which can be overridden by calling specific * \c rsa_rsaes_xxx or \c rsa_rsassa_xxx functions. * * \note The hash selected in \p hash_id is always used for OEAP * encryption. For PSS signatures, it is always used for - * making signatures, but can be overriden for verifying them. - * If set to #MBEDTLS_MD_NONE, it is always overriden. + * making signatures, but can be overridden for verifying them. + * If set to #MBEDTLS_MD_NONE, it is always overridden. * * \param ctx The RSA context to initialize. This must not be \c NULL. * \param padding The padding mode to use. This must be either @@ -601,7 +614,8 @@ int mbedtls_rsa_private( mbedtls_rsa_context *ctx, * #MBEDTLS_RSA_PUBLIC or #MBEDTLS_RSA_PRIVATE (deprecated). * \param ilen The length of the plaintext in Bytes. * \param input The input data to encrypt. This must be a readable - * buffer of size \p ilen Bytes. This must not be \c NULL. + * buffer of size \p ilen Bytes. It may be \c NULL if + * `ilen == 0`. * \param output The output buffer. This must be a writable buffer * of length \c ctx->len Bytes. For example, \c 256 Bytes * for an 2048-bit RSA modulus. @@ -641,7 +655,8 @@ int mbedtls_rsa_pkcs1_encrypt( mbedtls_rsa_context *ctx, * #MBEDTLS_RSA_PUBLIC or #MBEDTLS_RSA_PRIVATE (deprecated). * \param ilen The length of the plaintext in Bytes. * \param input The input data to encrypt. This must be a readable - * buffer of size \p ilen Bytes. This must not be \c NULL. + * buffer of size \p ilen Bytes. It may be \c NULL if + * `ilen == 0`. * \param output The output buffer. This must be a writable buffer * of length \c ctx->len Bytes. For example, \c 256 Bytes * for an 2048-bit RSA modulus. @@ -685,7 +700,8 @@ int mbedtls_rsa_rsaes_pkcs1_v15_encrypt( mbedtls_rsa_context *ctx, * \param label_len The length of the label in Bytes. * \param ilen The length of the plaintext buffer \p input in Bytes. * \param input The input data to encrypt. This must be a readable - * buffer of size \p ilen Bytes. This must not be \c NULL. + * buffer of size \p ilen Bytes. It may be \c NULL if + * `ilen == 0`. * \param output The output buffer. This must be a writable buffer * of length \c ctx->len Bytes. For example, \c 256 Bytes * for an 2048-bit RSA modulus. @@ -904,7 +920,8 @@ int mbedtls_rsa_rsaes_oaep_decrypt( mbedtls_rsa_context *ctx, * the size of the hash corresponding to \p md_alg. * \param sig The buffer to hold the signature. This must be a writable * buffer of length \c ctx->len Bytes. For example, \c 256 Bytes - * for an 2048-bit RSA modulus. + * for an 2048-bit RSA modulus. A buffer length of + * #MBEDTLS_MPI_MAX_SIZE is always safe. * * \return \c 0 if the signing operation was successful. * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. @@ -951,7 +968,8 @@ int mbedtls_rsa_pkcs1_sign( mbedtls_rsa_context *ctx, * the size of the hash corresponding to \p md_alg. * \param sig The buffer to hold the signature. This must be a writable * buffer of length \c ctx->len Bytes. For example, \c 256 Bytes - * for an 2048-bit RSA modulus. + * for an 2048-bit RSA modulus. A buffer length of + * #MBEDTLS_MPI_MAX_SIZE is always safe. * * \return \c 0 if the signing operation was successful. * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. @@ -969,12 +987,69 @@ int mbedtls_rsa_rsassa_pkcs1_v15_sign( mbedtls_rsa_context *ctx, * \brief This function performs a PKCS#1 v2.1 PSS signature * operation (RSASSA-PSS-SIGN). * - * \note The \p hash_id in the RSA context is the one used for the - * encoding. \p md_alg in the function call is the type of hash - * that is encoded. According to RFC-3447: Public-Key + * \note The \c hash_id set in \p ctx (when calling + * mbedtls_rsa_init() or by calling mbedtls_rsa_set_padding() + * afterwards) selects the hash used for the + * encoding operation and for the mask generation function + * (MGF1). For more details on the encoding operation and the + * mask generation function, consult RFC-3447: Public-Key + * Cryptography Standards (PKCS) #1 v2.1: RSA Cryptography + * Specifications. + * + * \note This function enforces that the provided salt length complies + * with FIPS 186-4 §5.5 (e) and RFC 8017 (PKCS#1 v2.2) §9.1.1 + * step 3. The constraint is that the hash length plus the salt + * length plus 2 bytes must be at most the key length. If this + * constraint is not met, this function returns + * #MBEDTLS_ERR_RSA_BAD_INPUT_DATA. + * + * \param ctx The initialized RSA context to use. + * \param f_rng The RNG function. It must not be \c NULL. + * \param p_rng The RNG context to be passed to \p f_rng. This may be \c NULL + * if \p f_rng doesn't need a context argument. + * \param md_alg The message-digest algorithm used to hash the original data. + * Use #MBEDTLS_MD_NONE for signing raw data. + * \param hashlen The length of the message digest. + * Ths is only used if \p md_alg is #MBEDTLS_MD_NONE. + * \param hash The buffer holding the message digest or raw data. + * If \p md_alg is #MBEDTLS_MD_NONE, this must be a readable + * buffer of length \p hashlen Bytes. If \p md_alg is not + * #MBEDTLS_MD_NONE, it must be a readable buffer of length + * the size of the hash corresponding to \p md_alg. + * \param saltlen The length of the salt that should be used. + * If passed #MBEDTLS_RSA_SALT_LEN_ANY, the function will use + * the largest possible salt length up to the hash length, + * which is the largest permitted by some standards including + * FIPS 186-4 §5.5. + * \param sig The buffer to hold the signature. This must be a writable + * buffer of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. A buffer length of + * #MBEDTLS_MPI_MAX_SIZE is always safe. + * + * \return \c 0 if the signing operation was successful. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_rsassa_pss_sign_ext( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + mbedtls_md_type_t md_alg, + unsigned int hashlen, + const unsigned char *hash, + int saltlen, + unsigned char *sig ); + +/** + * \brief This function performs a PKCS#1 v2.1 PSS signature + * operation (RSASSA-PSS-SIGN). + * + * \note The \c hash_id set in \p ctx (when calling + * mbedtls_rsa_init() or by calling mbedtls_rsa_set_padding() + * afterwards) selects the hash used for the + * encoding operation and for the mask generation function + * (MGF1). For more details on the encoding operation and the + * mask generation function, consult RFC-3447: Public-Key * Cryptography Standards (PKCS) #1 v2.1: RSA Cryptography - * Specifications it is advised to keep both hashes the - * same. + * Specifications. * * \note This function always uses the maximum possible salt size, * up to the length of the payload hash. This choice of salt @@ -1004,7 +1079,7 @@ int mbedtls_rsa_rsassa_pkcs1_v15_sign( mbedtls_rsa_context *ctx, * \param md_alg The message-digest algorithm used to hash the original data. * Use #MBEDTLS_MD_NONE for signing raw data. * \param hashlen The length of the message digest. - * Ths is only used if \p md_alg is #MBEDTLS_MD_NONE. + * This is only used if \p md_alg is #MBEDTLS_MD_NONE. * \param hash The buffer holding the message digest or raw data. * If \p md_alg is #MBEDTLS_MD_NONE, this must be a readable * buffer of length \p hashlen Bytes. If \p md_alg is not @@ -1012,7 +1087,8 @@ int mbedtls_rsa_rsassa_pkcs1_v15_sign( mbedtls_rsa_context *ctx, * the size of the hash corresponding to \p md_alg. * \param sig The buffer to hold the signature. This must be a writable * buffer of length \c ctx->len Bytes. For example, \c 256 Bytes - * for an 2048-bit RSA modulus. + * for an 2048-bit RSA modulus. A buffer length of + * #MBEDTLS_MPI_MAX_SIZE is always safe. * * \return \c 0 if the signing operation was successful. * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. @@ -1129,16 +1205,15 @@ int mbedtls_rsa_rsassa_pkcs1_v15_verify( mbedtls_rsa_context *ctx, * \brief This function performs a PKCS#1 v2.1 PSS verification * operation (RSASSA-PSS-VERIFY). * - * The hash function for the MGF mask generating function - * is that specified in the RSA context. - * - * \note The \p hash_id in the RSA context is the one used for the - * verification. \p md_alg in the function call is the type of - * hash that is verified. According to RFC-3447: Public-Key + * \note The \c hash_id set in \p ctx (when calling + * mbedtls_rsa_init() or by calling mbedtls_rsa_set_padding() + * afterwards) selects the hash used for the + * encoding operation and for the mask generation function + * (MGF1). For more details on the encoding operation and the + * mask generation function, consult RFC-3447: Public-Key * Cryptography Standards (PKCS) #1 v2.1: RSA Cryptography - * Specifications it is advised to keep both hashes the - * same. If \p hash_id in the RSA context is unset, - * the \p md_alg from the function call is used. + * Specifications. If the \c hash_id set in \p ctx is + * #MBEDTLS_MD_NONE, the \p md_alg parameter is used. * * \deprecated It is deprecated and discouraged to call this function * in #MBEDTLS_RSA_PRIVATE mode. Future versions of the library @@ -1186,13 +1261,12 @@ int mbedtls_rsa_rsassa_pss_verify( mbedtls_rsa_context *ctx, * \brief This function performs a PKCS#1 v2.1 PSS verification * operation (RSASSA-PSS-VERIFY). * - * The hash function for the MGF mask generating function - * is that specified in \p mgf1_hash_id. - * * \note The \p sig buffer must be as large as the size * of \p ctx->N. For example, 128 Bytes if RSA-1024 is used. * - * \note The \p hash_id in the RSA context is ignored. + * \note The \c hash_id set in \p ctx (when calling + * mbedtls_rsa_init() or by calling mbedtls_rsa_set_padding() + * afterwards) is ignored. * * \param ctx The initialized RSA public key context to use. * \param f_rng The RNG function to use. If \p mode is #MBEDTLS_RSA_PRIVATE, @@ -1211,7 +1285,13 @@ int mbedtls_rsa_rsassa_pss_verify( mbedtls_rsa_context *ctx, * buffer of length \p hashlen Bytes. If \p md_alg is not * #MBEDTLS_MD_NONE, it must be a readable buffer of length * the size of the hash corresponding to \p md_alg. - * \param mgf1_hash_id The message digest used for mask generation. + * \param mgf1_hash_id The message digest algorithm used for the + * verification operation and the mask generation + * function (MGF1). For more details on the encoding + * operation and the mask generation function, consult + * RFC-3447: Public-Key Cryptography Standards + * (PKCS) #1 v2.1: RSA Cryptography + * Specifications. * \param expected_salt_len The length of the salt used in padding. Use * #MBEDTLS_RSA_SALT_LEN_ANY to accept any salt length. * \param sig The buffer holding the signature. This must be a readable diff --git a/Externals/mbedtls/include/mbedtls/rsa_internal.h b/Externals/mbedtls/include/mbedtls/rsa_internal.h index 53abd3c5b0ee..d55492bb16bc 100644 --- a/Externals/mbedtls/include/mbedtls/rsa_internal.h +++ b/Externals/mbedtls/include/mbedtls/rsa_internal.h @@ -35,7 +35,7 @@ * */ /* - * Copyright (C) 2006-2017, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -50,20 +50,18 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * This file is part of mbed TLS (https://tls.mbed.org) - * */ #ifndef MBEDTLS_RSA_INTERNAL_H #define MBEDTLS_RSA_INTERNAL_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "bignum.h" +#include "mbedtls/bignum.h" #ifdef __cplusplus extern "C" { diff --git a/Externals/mbedtls/include/mbedtls/sha1.h b/Externals/mbedtls/include/mbedtls/sha1.h index bb6ecf05a4a8..4c3251b4a128 100644 --- a/Externals/mbedtls/include/mbedtls/sha1.h +++ b/Externals/mbedtls/include/mbedtls/sha1.h @@ -11,7 +11,7 @@ * digests instead. */ /* - * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -25,14 +25,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_SHA1_H #define MBEDTLS_SHA1_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -41,8 +39,10 @@ #include /* MBEDTLS_ERR_SHA1_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_SHA1_HW_ACCEL_FAILED -0x0035 /**< SHA-1 hardware accelerator failed */ -#define MBEDTLS_ERR_SHA1_BAD_INPUT_DATA -0x0073 /**< SHA-1 input data was malformed. */ +/** SHA-1 hardware accelerator failed */ +#define MBEDTLS_ERR_SHA1_HW_ACCEL_FAILED -0x0035 +/** SHA-1 input data was malformed. */ +#define MBEDTLS_ERR_SHA1_BAD_INPUT_DATA -0x0073 #ifdef __cplusplus extern "C" { diff --git a/Externals/mbedtls/include/mbedtls/sha256.h b/Externals/mbedtls/include/mbedtls/sha256.h index d64739820c6d..5b54be214259 100644 --- a/Externals/mbedtls/include/mbedtls/sha256.h +++ b/Externals/mbedtls/include/mbedtls/sha256.h @@ -7,7 +7,7 @@ * hash functions are defined in FIPS 180-4: Secure Hash Standard (SHS). */ /* - * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -21,14 +21,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_SHA256_H #define MBEDTLS_SHA256_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -37,8 +35,10 @@ #include /* MBEDTLS_ERR_SHA256_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_SHA256_HW_ACCEL_FAILED -0x0037 /**< SHA-256 hardware accelerator failed */ -#define MBEDTLS_ERR_SHA256_BAD_INPUT_DATA -0x0074 /**< SHA-256 input data was malformed. */ +/** SHA-256 hardware accelerator failed */ +#define MBEDTLS_ERR_SHA256_HW_ACCEL_FAILED -0x0037 +/** SHA-256 input data was malformed. */ +#define MBEDTLS_ERR_SHA256_BAD_INPUT_DATA -0x0074 #ifdef __cplusplus extern "C" { @@ -237,6 +237,9 @@ MBEDTLS_DEPRECATED void mbedtls_sha256_process( mbedtls_sha256_context *ctx, * be a writable buffer of length \c 32 Bytes. * \param is224 Determines which function to use. This must be * either \c 0 for SHA-256, or \c 1 for SHA-224. + * + * \return \c 0 on success. + * \return A negative error code on failure. */ int mbedtls_sha256_ret( const unsigned char *input, size_t ilen, diff --git a/Externals/mbedtls/include/mbedtls/sha512.h b/Externals/mbedtls/include/mbedtls/sha512.h index c06ceed1d13c..cca47c2fe620 100644 --- a/Externals/mbedtls/include/mbedtls/sha512.h +++ b/Externals/mbedtls/include/mbedtls/sha512.h @@ -6,7 +6,7 @@ * hash functions are defined in FIPS 180-4: Secure Hash Standard (SHS). */ /* - * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -20,14 +20,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_SHA512_H #define MBEDTLS_SHA512_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -36,8 +34,10 @@ #include /* MBEDTLS_ERR_SHA512_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_SHA512_HW_ACCEL_FAILED -0x0039 /**< SHA-512 hardware accelerator failed */ -#define MBEDTLS_ERR_SHA512_BAD_INPUT_DATA -0x0075 /**< SHA-512 input data was malformed. */ +/** SHA-512 hardware accelerator failed */ +#define MBEDTLS_ERR_SHA512_HW_ACCEL_FAILED -0x0039 +/** SHA-512 input data was malformed. */ +#define MBEDTLS_ERR_SHA512_BAD_INPUT_DATA -0x0075 #ifdef __cplusplus extern "C" { @@ -59,8 +59,10 @@ typedef struct mbedtls_sha512_context uint64_t total[2]; /*!< The number of Bytes processed. */ uint64_t state[8]; /*!< The intermediate digest state. */ unsigned char buffer[128]; /*!< The data block being processed. */ +#if !defined(MBEDTLS_SHA512_NO_SHA384) int is384; /*!< Determines which function to use: 0: Use SHA-512, or 1: Use SHA-384. */ +#endif } mbedtls_sha512_context; @@ -101,7 +103,11 @@ void mbedtls_sha512_clone( mbedtls_sha512_context *dst, * * \param ctx The SHA-512 context to use. This must be initialized. * \param is384 Determines which function to use. This must be - * either \c for SHA-512, or \c 1 for SHA-384. + * either \c 0 for SHA-512, or \c 1 for SHA-384. + * + * \note When \c MBEDTLS_SHA512_NO_SHA384 is defined, \p is384 must + * be \c 0, or the function will return + * #MBEDTLS_ERR_SHA512_BAD_INPUT_DATA. * * \return \c 0 on success. * \return A negative error code on failure. @@ -127,8 +133,7 @@ int mbedtls_sha512_update_ret( mbedtls_sha512_context *ctx, /** * \brief This function finishes the SHA-512 operation, and writes - * the result to the output buffer. This function is for - * internal use only. + * the result to the output buffer. * * \param ctx The SHA-512 context. This must be initialized * and have a hash operation started. @@ -144,6 +149,7 @@ int mbedtls_sha512_finish_ret( mbedtls_sha512_context *ctx, /** * \brief This function processes a single data block within * the ongoing SHA-512 computation. + * This function is for internal use only. * * \param ctx The SHA-512 context. This must be initialized. * \param data The buffer holding one block of data. This @@ -169,6 +175,9 @@ int mbedtls_internal_sha512_process( mbedtls_sha512_context *ctx, * \param ctx The SHA-512 context to use. This must be initialized. * \param is384 Determines which function to use. This must be either * \c 0 for SHA-512 or \c 1 for SHA-384. + * + * \note When \c MBEDTLS_SHA512_NO_SHA384 is defined, \p is384 must + * be \c 0, or the function will fail to work. */ MBEDTLS_DEPRECATED void mbedtls_sha512_starts( mbedtls_sha512_context *ctx, int is384 ); @@ -239,6 +248,10 @@ MBEDTLS_DEPRECATED void mbedtls_sha512_process( * \param is384 Determines which function to use. This must be either * \c 0 for SHA-512, or \c 1 for SHA-384. * + * \note When \c MBEDTLS_SHA512_NO_SHA384 is defined, \p is384 must + * be \c 0, or the function will return + * #MBEDTLS_ERR_SHA512_BAD_INPUT_DATA. + * * \return \c 0 on success. * \return A negative error code on failure. */ @@ -273,6 +286,9 @@ int mbedtls_sha512_ret( const unsigned char *input, * be a writable buffer of length \c 64 Bytes. * \param is384 Determines which function to use. This must be either * \c 0 for SHA-512, or \c 1 for SHA-384. + * + * \note When \c MBEDTLS_SHA512_NO_SHA384 is defined, \p is384 must + * be \c 0, or the function will fail to work. */ MBEDTLS_DEPRECATED void mbedtls_sha512( const unsigned char *input, size_t ilen, diff --git a/Externals/mbedtls/include/mbedtls/ssl.h b/Externals/mbedtls/include/mbedtls/ssl.h index 8106bb4ab0f5..209dbf6053c2 100644 --- a/Externals/mbedtls/include/mbedtls/ssl.h +++ b/Externals/mbedtls/include/mbedtls/ssl.h @@ -4,7 +4,7 @@ * \brief SSL/TLS functions. */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,34 +18,37 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_SSL_H #define MBEDTLS_SSL_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "bignum.h" -#include "ecp.h" +#include "mbedtls/bignum.h" +#include "mbedtls/ecp.h" -#include "ssl_ciphersuites.h" +#include "mbedtls/ssl_ciphersuites.h" #if defined(MBEDTLS_X509_CRT_PARSE_C) -#include "x509_crt.h" -#include "x509_crl.h" +#include "mbedtls/x509_crt.h" +#include "mbedtls/x509_crl.h" #endif #if defined(MBEDTLS_DHM_C) -#include "dhm.h" +#include "mbedtls/dhm.h" #endif -#if defined(MBEDTLS_ECDH_C) -#include "ecdh.h" +/* Adding guard for MBEDTLS_ECDSA_C to ensure no compile errors due + * to guards also being in ssl_srv.c and ssl_cli.c. There is a gap + * in functionality that access to ecdh_ctx structure is needed for + * MBEDTLS_ECDSA_C which does not seem correct. + */ +#if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) +#include "mbedtls/ecdh.h" #endif #if defined(MBEDTLS_ZLIB_SUPPORT) @@ -62,67 +65,132 @@ #endif #if defined(MBEDTLS_HAVE_TIME) -#include "platform_time.h" +#include "mbedtls/platform_time.h" #endif +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "psa/crypto.h" +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + /* * SSL Error codes */ -#define MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE -0x7080 /**< The requested feature is not available. */ -#define MBEDTLS_ERR_SSL_BAD_INPUT_DATA -0x7100 /**< Bad input parameters to function. */ -#define MBEDTLS_ERR_SSL_INVALID_MAC -0x7180 /**< Verification of the message MAC failed. */ -#define MBEDTLS_ERR_SSL_INVALID_RECORD -0x7200 /**< An invalid SSL record was received. */ -#define MBEDTLS_ERR_SSL_CONN_EOF -0x7280 /**< The connection indicated an EOF. */ -#define MBEDTLS_ERR_SSL_UNKNOWN_CIPHER -0x7300 /**< An unknown cipher was received. */ -#define MBEDTLS_ERR_SSL_NO_CIPHER_CHOSEN -0x7380 /**< The server has no ciphersuites in common with the client. */ -#define MBEDTLS_ERR_SSL_NO_RNG -0x7400 /**< No RNG was provided to the SSL module. */ -#define MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE -0x7480 /**< No client certification received from the client, but required by the authentication mode. */ -#define MBEDTLS_ERR_SSL_CERTIFICATE_TOO_LARGE -0x7500 /**< Our own certificate(s) is/are too large to send in an SSL message. */ -#define MBEDTLS_ERR_SSL_CERTIFICATE_REQUIRED -0x7580 /**< The own certificate is not set, but needed by the server. */ -#define MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED -0x7600 /**< The own private key or pre-shared key is not set, but needed. */ -#define MBEDTLS_ERR_SSL_CA_CHAIN_REQUIRED -0x7680 /**< No CA Chain is set, but required to operate. */ -#define MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE -0x7700 /**< An unexpected message was received from our peer. */ -#define MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE -0x7780 /**< A fatal alert message was received from our peer. */ -#define MBEDTLS_ERR_SSL_PEER_VERIFY_FAILED -0x7800 /**< Verification of our peer failed. */ -#define MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY -0x7880 /**< The peer notified us that the connection is going to be closed. */ -#define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO -0x7900 /**< Processing of the ClientHello handshake message failed. */ -#define MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO -0x7980 /**< Processing of the ServerHello handshake message failed. */ -#define MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE -0x7A00 /**< Processing of the Certificate handshake message failed. */ -#define MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_REQUEST -0x7A80 /**< Processing of the CertificateRequest handshake message failed. */ -#define MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE -0x7B00 /**< Processing of the ServerKeyExchange handshake message failed. */ -#define MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO_DONE -0x7B80 /**< Processing of the ServerHelloDone handshake message failed. */ -#define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE -0x7C00 /**< Processing of the ClientKeyExchange handshake message failed. */ -#define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_RP -0x7C80 /**< Processing of the ClientKeyExchange handshake message failed in DHM / ECDH Read Public. */ -#define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_CS -0x7D00 /**< Processing of the ClientKeyExchange handshake message failed in DHM / ECDH Calculate Secret. */ -#define MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_VERIFY -0x7D80 /**< Processing of the CertificateVerify handshake message failed. */ -#define MBEDTLS_ERR_SSL_BAD_HS_CHANGE_CIPHER_SPEC -0x7E00 /**< Processing of the ChangeCipherSpec handshake message failed. */ -#define MBEDTLS_ERR_SSL_BAD_HS_FINISHED -0x7E80 /**< Processing of the Finished handshake message failed. */ -#define MBEDTLS_ERR_SSL_ALLOC_FAILED -0x7F00 /**< Memory allocation failed */ -#define MBEDTLS_ERR_SSL_HW_ACCEL_FAILED -0x7F80 /**< Hardware acceleration function returned with error */ -#define MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH -0x6F80 /**< Hardware acceleration function skipped / left alone data */ -#define MBEDTLS_ERR_SSL_COMPRESSION_FAILED -0x6F00 /**< Processing of the compression / decompression failed */ -#define MBEDTLS_ERR_SSL_BAD_HS_PROTOCOL_VERSION -0x6E80 /**< Handshake protocol not within min/max boundaries */ -#define MBEDTLS_ERR_SSL_BAD_HS_NEW_SESSION_TICKET -0x6E00 /**< Processing of the NewSessionTicket handshake message failed. */ -#define MBEDTLS_ERR_SSL_SESSION_TICKET_EXPIRED -0x6D80 /**< Session ticket has expired. */ -#define MBEDTLS_ERR_SSL_PK_TYPE_MISMATCH -0x6D00 /**< Public key type mismatch (eg, asked for RSA key exchange and presented EC key) */ -#define MBEDTLS_ERR_SSL_UNKNOWN_IDENTITY -0x6C80 /**< Unknown identity received (eg, PSK identity) */ -#define MBEDTLS_ERR_SSL_INTERNAL_ERROR -0x6C00 /**< Internal error (eg, unexpected failure in lower-level module) */ -#define MBEDTLS_ERR_SSL_COUNTER_WRAPPING -0x6B80 /**< A counter would wrap (eg, too many messages exchanged). */ -#define MBEDTLS_ERR_SSL_WAITING_SERVER_HELLO_RENEGO -0x6B00 /**< Unexpected message at ServerHello in renegotiation. */ -#define MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED -0x6A80 /**< DTLS client must retry for hello verification */ -#define MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL -0x6A00 /**< A buffer is too small to receive or write a message */ -#define MBEDTLS_ERR_SSL_NO_USABLE_CIPHERSUITE -0x6980 /**< None of the common ciphersuites is usable (eg, no suitable certificate, see debug messages). */ -#define MBEDTLS_ERR_SSL_WANT_READ -0x6900 /**< No data of requested type currently available on underlying transport. */ -#define MBEDTLS_ERR_SSL_WANT_WRITE -0x6880 /**< Connection requires a write call. */ -#define MBEDTLS_ERR_SSL_TIMEOUT -0x6800 /**< The operation timed out. */ -#define MBEDTLS_ERR_SSL_CLIENT_RECONNECT -0x6780 /**< The client initiated a reconnect from the same port. */ -#define MBEDTLS_ERR_SSL_UNEXPECTED_RECORD -0x6700 /**< Record header looks valid but is not expected. */ -#define MBEDTLS_ERR_SSL_NON_FATAL -0x6680 /**< The alert message received indicates a non-fatal error. */ -#define MBEDTLS_ERR_SSL_INVALID_VERIFY_HASH -0x6600 /**< Couldn't set the hash for verifying CertificateVerify */ -#define MBEDTLS_ERR_SSL_CONTINUE_PROCESSING -0x6580 /**< Internal-only message signaling that further message-processing should be done */ -#define MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS -0x6500 /**< The asynchronous operation is not completed yet. */ -#define MBEDTLS_ERR_SSL_EARLY_MESSAGE -0x6480 /**< Internal-only message signaling that a message arrived early. */ -#define MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS -0x7000 /**< A cryptographic operation is in progress. Try again later. */ +/** The requested feature is not available. */ +#define MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE -0x7080 +/** Bad input parameters to function. */ +#define MBEDTLS_ERR_SSL_BAD_INPUT_DATA -0x7100 +/** Verification of the message MAC failed. */ +#define MBEDTLS_ERR_SSL_INVALID_MAC -0x7180 +/** An invalid SSL record was received. */ +#define MBEDTLS_ERR_SSL_INVALID_RECORD -0x7200 +/** The connection indicated an EOF. */ +#define MBEDTLS_ERR_SSL_CONN_EOF -0x7280 +/** An unknown cipher was received. */ +#define MBEDTLS_ERR_SSL_UNKNOWN_CIPHER -0x7300 +/** The server has no ciphersuites in common with the client. */ +#define MBEDTLS_ERR_SSL_NO_CIPHER_CHOSEN -0x7380 +/** No RNG was provided to the SSL module. */ +#define MBEDTLS_ERR_SSL_NO_RNG -0x7400 +/** No client certification received from the client, but required by the authentication mode. */ +#define MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE -0x7480 +/** Our own certificate(s) is/are too large to send in an SSL message. */ +#define MBEDTLS_ERR_SSL_CERTIFICATE_TOO_LARGE -0x7500 +/** The own certificate is not set, but needed by the server. */ +#define MBEDTLS_ERR_SSL_CERTIFICATE_REQUIRED -0x7580 +/** The own private key or pre-shared key is not set, but needed. */ +#define MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED -0x7600 +/** No CA Chain is set, but required to operate. */ +#define MBEDTLS_ERR_SSL_CA_CHAIN_REQUIRED -0x7680 +/** An unexpected message was received from our peer. */ +#define MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE -0x7700 +/** A fatal alert message was received from our peer. */ +#define MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE -0x7780 +/** Verification of our peer failed. */ +#define MBEDTLS_ERR_SSL_PEER_VERIFY_FAILED -0x7800 +/** The peer notified us that the connection is going to be closed. */ +#define MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY -0x7880 +/** Processing of the ClientHello handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO -0x7900 +/** Processing of the ServerHello handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO -0x7980 +/** Processing of the Certificate handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE -0x7A00 +/** Processing of the CertificateRequest handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_REQUEST -0x7A80 +/** Processing of the ServerKeyExchange handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE -0x7B00 +/** Processing of the ServerHelloDone handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO_DONE -0x7B80 +/** Processing of the ClientKeyExchange handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE -0x7C00 +/** Processing of the ClientKeyExchange handshake message failed in DHM / ECDH Read Public. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_RP -0x7C80 +/** Processing of the ClientKeyExchange handshake message failed in DHM / ECDH Calculate Secret. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_CS -0x7D00 +/** Processing of the CertificateVerify handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_VERIFY -0x7D80 +/** Processing of the ChangeCipherSpec handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CHANGE_CIPHER_SPEC -0x7E00 +/** Processing of the Finished handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_FINISHED -0x7E80 +/** Memory allocation failed */ +#define MBEDTLS_ERR_SSL_ALLOC_FAILED -0x7F00 +/** Hardware acceleration function returned with error */ +#define MBEDTLS_ERR_SSL_HW_ACCEL_FAILED -0x7F80 +/** Hardware acceleration function skipped / left alone data */ +#define MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH -0x6F80 +/** Processing of the compression / decompression failed */ +#define MBEDTLS_ERR_SSL_COMPRESSION_FAILED -0x6F00 +/** Handshake protocol not within min/max boundaries */ +#define MBEDTLS_ERR_SSL_BAD_HS_PROTOCOL_VERSION -0x6E80 +/** Processing of the NewSessionTicket handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_NEW_SESSION_TICKET -0x6E00 +/** Session ticket has expired. */ +#define MBEDTLS_ERR_SSL_SESSION_TICKET_EXPIRED -0x6D80 +/** Public key type mismatch (eg, asked for RSA key exchange and presented EC key) */ +#define MBEDTLS_ERR_SSL_PK_TYPE_MISMATCH -0x6D00 +/** Unknown identity received (eg, PSK identity) */ +#define MBEDTLS_ERR_SSL_UNKNOWN_IDENTITY -0x6C80 +/** Internal error (eg, unexpected failure in lower-level module) */ +#define MBEDTLS_ERR_SSL_INTERNAL_ERROR -0x6C00 +/** A counter would wrap (eg, too many messages exchanged). */ +#define MBEDTLS_ERR_SSL_COUNTER_WRAPPING -0x6B80 +/** Unexpected message at ServerHello in renegotiation. */ +#define MBEDTLS_ERR_SSL_WAITING_SERVER_HELLO_RENEGO -0x6B00 +/** DTLS client must retry for hello verification */ +#define MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED -0x6A80 +/** A buffer is too small to receive or write a message */ +#define MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL -0x6A00 +/** None of the common ciphersuites is usable (eg, no suitable certificate, see debug messages). */ +#define MBEDTLS_ERR_SSL_NO_USABLE_CIPHERSUITE -0x6980 +/** No data of requested type currently available on underlying transport. */ +#define MBEDTLS_ERR_SSL_WANT_READ -0x6900 +/** Connection requires a write call. */ +#define MBEDTLS_ERR_SSL_WANT_WRITE -0x6880 +/** The operation timed out. */ +#define MBEDTLS_ERR_SSL_TIMEOUT -0x6800 +/** The client initiated a reconnect from the same port. */ +#define MBEDTLS_ERR_SSL_CLIENT_RECONNECT -0x6780 +/** Record header looks valid but is not expected. */ +#define MBEDTLS_ERR_SSL_UNEXPECTED_RECORD -0x6700 +/** The alert message received indicates a non-fatal error. */ +#define MBEDTLS_ERR_SSL_NON_FATAL -0x6680 +/** Couldn't set the hash for verifying CertificateVerify */ +#define MBEDTLS_ERR_SSL_INVALID_VERIFY_HASH -0x6600 +/** Internal-only message signaling that further message-processing should be done */ +#define MBEDTLS_ERR_SSL_CONTINUE_PROCESSING -0x6580 +/** The asynchronous operation is not completed yet. */ +#define MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS -0x6500 +/** Internal-only message signaling that a message arrived early. */ +#define MBEDTLS_ERR_SSL_EARLY_MESSAGE -0x6480 +/** An encrypted DTLS-frame with an unexpected CID was received. */ +#define MBEDTLS_ERR_SSL_UNEXPECTED_CID -0x6000 +/** An operation failed due to an unexpected version or configuration. */ +#define MBEDTLS_ERR_SSL_VERSION_MISMATCH -0x5F00 +/** A cryptographic operation is in progress. Try again later. */ +#define MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS -0x7000 +/** Invalid value in SSL config */ +#define MBEDTLS_ERR_SSL_BAD_CONFIG -0x5E80 /* * Various constants @@ -132,11 +200,15 @@ #define MBEDTLS_SSL_MINOR_VERSION_1 1 /*!< TLS v1.0 */ #define MBEDTLS_SSL_MINOR_VERSION_2 2 /*!< TLS v1.1 */ #define MBEDTLS_SSL_MINOR_VERSION_3 3 /*!< TLS v1.2 */ +#define MBEDTLS_SSL_MINOR_VERSION_4 4 /*!< TLS v1.3 (experimental) */ #define MBEDTLS_SSL_TRANSPORT_STREAM 0 /*!< TLS */ #define MBEDTLS_SSL_TRANSPORT_DATAGRAM 1 /*!< DTLS */ #define MBEDTLS_SSL_MAX_HOST_NAME_LEN 255 /*!< Maximum host name defined in RFC 1035 */ +#define MBEDTLS_SSL_MAX_ALPN_NAME_LEN 255 /*!< Maximum size in bytes of a protocol name in alpn ext., RFC 7301 */ + +#define MBEDTLS_SSL_MAX_ALPN_LIST_LEN 65535 /*!< Maximum size in bytes of list in alpn ext., RFC 7301 */ /* RFC 6066 section 4, see also mfl_code_to_length in ssl_tls.c * NONE must be zero so that memset()ing structure to zero works */ @@ -156,6 +228,9 @@ #define MBEDTLS_SSL_EXTENDED_MS_DISABLED 0 #define MBEDTLS_SSL_EXTENDED_MS_ENABLED 1 +#define MBEDTLS_SSL_CID_DISABLED 0 +#define MBEDTLS_SSL_CID_ENABLED 1 + #define MBEDTLS_SSL_ETM_DISABLED 0 #define MBEDTLS_SSL_ETM_ENABLED 1 @@ -202,6 +277,9 @@ #define MBEDTLS_SSL_CERT_REQ_CA_LIST_ENABLED 1 #define MBEDTLS_SSL_CERT_REQ_CA_LIST_DISABLED 0 +#define MBEDTLS_SSL_DTLS_SRTP_MKI_UNSUPPORTED 0 +#define MBEDTLS_SSL_DTLS_SRTP_MKI_SUPPORTED 1 + /* * Default range for DTLS retransmission timer value, in milliseconds. * RFC 6347 4.2.4.1 says from 1 second to 60 seconds. @@ -252,6 +330,25 @@ #define MBEDTLS_SSL_DTLS_MAX_BUFFERING 32768 #endif +/* + * Maximum length of CIDs for incoming and outgoing messages. + */ +#if !defined(MBEDTLS_SSL_CID_IN_LEN_MAX) +#define MBEDTLS_SSL_CID_IN_LEN_MAX 32 +#endif + +#if !defined(MBEDTLS_SSL_CID_OUT_LEN_MAX) +#define MBEDTLS_SSL_CID_OUT_LEN_MAX 32 +#endif + +#if !defined(MBEDTLS_SSL_CID_PADDING_GRANULARITY) +#define MBEDTLS_SSL_CID_PADDING_GRANULARITY 16 +#endif + +#if !defined(MBEDTLS_SSL_TLS1_3_PADDING_GRANULARITY) +#define MBEDTLS_SSL_TLS1_3_PADDING_GRANULARITY 1 +#endif + /* \} name SECTION: Module settings */ /* @@ -299,6 +396,7 @@ #define MBEDTLS_SSL_MSG_ALERT 21 #define MBEDTLS_SSL_MSG_HANDSHAKE 22 #define MBEDTLS_SSL_MSG_APPLICATION_DATA 23 +#define MBEDTLS_SSL_MSG_CID 25 #define MBEDTLS_SSL_ALERT_LEVEL_WARNING 1 #define MBEDTLS_SSL_ALERT_LEVEL_FATAL 2 @@ -361,6 +459,8 @@ #define MBEDTLS_TLS_EXT_SIG_ALG 13 +#define MBEDTLS_TLS_EXT_USE_SRTP 14 + #define MBEDTLS_TLS_EXT_ALPN 16 #define MBEDTLS_TLS_EXT_ENCRYPT_THEN_MAC 22 /* 0x16 */ @@ -368,6 +468,17 @@ #define MBEDTLS_TLS_EXT_SESSION_TICKET 35 +/* The value of the CID extension is still TBD as of + * draft-ietf-tls-dtls-connection-id-05 + * (https://tools.ietf.org/html/draft-ietf-tls-dtls-connection-id-05). + * + * A future minor revision of Mbed TLS may change the default value of + * this option to match evolving standards and usage. + */ +#if !defined(MBEDTLS_TLS_EXT_CID) +#define MBEDTLS_TLS_EXT_CID 254 /* TBD */ +#endif + #define MBEDTLS_TLS_EXT_ECJPAKE_KKPP 256 /* experimental */ #define MBEDTLS_TLS_EXT_RENEGOTIATION_INFO 0xFF01 @@ -446,6 +557,18 @@ typedef enum } mbedtls_ssl_states; +/* + * The tls_prf function types. + */ +typedef enum +{ + MBEDTLS_SSL_TLS_PRF_NONE, + MBEDTLS_SSL_TLS_PRF_SSL3, + MBEDTLS_SSL_TLS_PRF_TLS1, + MBEDTLS_SSL_TLS_PRF_SHA384, + MBEDTLS_SSL_TLS_PRF_SHA256 +} +mbedtls_tls_prf_types; /** * \brief Callback type: send data on the network. * @@ -477,10 +600,11 @@ typedef int mbedtls_ssl_send_t( void *ctx, * \param buf Buffer to write the received data to * \param len Length of the receive buffer * - * \return The callback must return the number of bytes received, - * or a non-zero error code. - * If performing non-blocking I/O, \c MBEDTLS_ERR_SSL_WANT_READ + * \returns If data has been received, the positive number of bytes received. + * \returns \c 0 if the connection has been closed. + * \returns If performing non-blocking I/O, \c MBEDTLS_ERR_SSL_WANT_READ * must be returned when the operation would block. + * \returns Another negative error code on other kinds of failures. * * \note The callback may receive fewer bytes than the length of the * buffer. It must always return the number of bytes actually @@ -783,11 +907,77 @@ typedef int mbedtls_ssl_async_resume_t( mbedtls_ssl_context *ssl, typedef void mbedtls_ssl_async_cancel_t( mbedtls_ssl_context *ssl ); #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) && \ + !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) +#define MBEDTLS_SSL_PEER_CERT_DIGEST_MAX_LEN 48 +#if defined(MBEDTLS_SHA256_C) +#define MBEDTLS_SSL_PEER_CERT_DIGEST_DFL_TYPE MBEDTLS_MD_SHA256 +#define MBEDTLS_SSL_PEER_CERT_DIGEST_DFL_LEN 32 +#elif defined(MBEDTLS_SHA512_C) +#define MBEDTLS_SSL_PEER_CERT_DIGEST_DFL_TYPE MBEDTLS_MD_SHA384 +#define MBEDTLS_SSL_PEER_CERT_DIGEST_DFL_LEN 48 +#elif defined(MBEDTLS_SHA1_C) +#define MBEDTLS_SSL_PEER_CERT_DIGEST_DFL_TYPE MBEDTLS_MD_SHA1 +#define MBEDTLS_SSL_PEER_CERT_DIGEST_DFL_LEN 20 +#else +/* This is already checked in check_config.h, but be sure. */ +#error "Bad configuration - need SHA-1, SHA-256 or SHA-512 enabled to compute digest of peer CRT." +#endif +#endif /* MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED && + !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + +#if defined(MBEDTLS_SSL_DTLS_SRTP) + +#define MBEDTLS_TLS_SRTP_MAX_MKI_LENGTH 255 +#define MBEDTLS_TLS_SRTP_MAX_PROFILE_LIST_LENGTH 4 +/* + * For code readability use a typedef for DTLS-SRTP profiles + * + * Use_srtp extension protection profiles values as defined in + * http://www.iana.org/assignments/srtp-protection/srtp-protection.xhtml + * + * Reminder: if this list is expanded mbedtls_ssl_check_srtp_profile_value + * must be updated too. + */ +#define MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80 ( (uint16_t) 0x0001) +#define MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32 ( (uint16_t) 0x0002) +#define MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80 ( (uint16_t) 0x0005) +#define MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32 ( (uint16_t) 0x0006) +/* This one is not iana defined, but for code readability. */ +#define MBEDTLS_TLS_SRTP_UNSET ( (uint16_t) 0x0000) + +typedef uint16_t mbedtls_ssl_srtp_profile; + +typedef struct mbedtls_dtls_srtp_info_t +{ + /*! The SRTP profile that was negotiated. */ + mbedtls_ssl_srtp_profile chosen_dtls_srtp_profile; + /*! The length of mki_value. */ + uint16_t mki_len; + /*! The mki_value used, with max size of 256 bytes. */ + unsigned char mki_value[MBEDTLS_TLS_SRTP_MAX_MKI_LENGTH]; +} +mbedtls_dtls_srtp_info; + +#endif /* MBEDTLS_SSL_DTLS_SRTP */ + /* * This structure is used for storing current session data. + * + * Note: when changing this definition, we need to check and update: + * - in tests/suites/test_suite_ssl.function: + * ssl_populate_session() and ssl_serialize_session_save_load() + * - in library/ssl_tls.c: + * mbedtls_ssl_session_init() and mbedtls_ssl_session_free() + * mbedtls_ssl_session_save() and ssl_session_load() + * ssl_session_copy() */ struct mbedtls_ssl_session { +#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) + unsigned char mfl_code; /*!< MaxFragmentLength negotiated by peer */ +#endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ + #if defined(MBEDTLS_HAVE_TIME) mbedtls_time_t start; /*!< starting time */ #endif @@ -798,7 +988,15 @@ struct mbedtls_ssl_session unsigned char master[48]; /*!< the master secret */ #if defined(MBEDTLS_X509_CRT_PARSE_C) - mbedtls_x509_crt *peer_cert; /*!< peer X.509 cert chain */ +#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + mbedtls_x509_crt *peer_cert; /*!< peer X.509 cert chain */ +#else /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + /*! The digest of the peer's end-CRT. This must be kept to detect CRT + * changes during renegotiation, mitigating the triple handshake attack. */ + unsigned char *peer_cert_digest; + size_t peer_cert_digest_len; + mbedtls_md_type_t peer_cert_digest_type; +#endif /* !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ uint32_t verify_result; /*!< verification result */ @@ -808,10 +1006,6 @@ struct mbedtls_ssl_session uint32_t ticket_lifetime; /*!< ticket lifetime hint */ #endif /* MBEDTLS_SSL_SESSION_TICKETS && MBEDTLS_SSL_CLI_C */ -#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) - unsigned char mfl_code; /*!< MaxFragmentLength negotiated by peer */ -#endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ - #if defined(MBEDTLS_SSL_TRUNCATED_HMAC) int trunc_hmac; /*!< flag for truncated hmac activation */ #endif /* MBEDTLS_SSL_TRUNCATED_HMAC */ @@ -826,7 +1020,98 @@ struct mbedtls_ssl_session */ struct mbedtls_ssl_config { - /* Group items by size (largest first) to minimize padding overhead */ + /* Group items by size and reorder them to maximize usage of immediate offset access. */ + + /* + * Numerical settings (char) + */ + + unsigned char max_major_ver; /*!< max. major version used */ + unsigned char max_minor_ver; /*!< max. minor version used */ + unsigned char min_major_ver; /*!< min. major version used */ + unsigned char min_minor_ver; /*!< min. minor version used */ + + /* + * Flags (could be bit-fields to save RAM, but separate bytes make + * the code smaller on architectures with an instruction for direct + * byte access). + */ + + uint8_t endpoint /*bool*/; /*!< 0: client, 1: server */ + uint8_t transport /*bool*/; /*!< stream (TLS) or datagram (DTLS) */ + uint8_t authmode /*2 bits*/; /*!< MBEDTLS_SSL_VERIFY_XXX */ + /* needed even with renego disabled for LEGACY_BREAK_HANDSHAKE */ + uint8_t allow_legacy_renegotiation /*2 bits*/; /*!< MBEDTLS_LEGACY_XXX */ +#if defined(MBEDTLS_ARC4_C) + uint8_t arc4_disabled /*bool*/; /*!< blacklist RC4 ciphersuites? */ +#endif +#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) + uint8_t mfl_code /*3 bits*/; /*!< desired fragment length */ +#endif +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) + uint8_t encrypt_then_mac /*bool*/; /*!< negotiate encrypt-then-mac? */ +#endif +#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) + uint8_t extended_ms /*bool*/; /*!< negotiate extended master secret? */ +#endif +#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) + uint8_t anti_replay /*bool*/; /*!< detect and prevent replay? */ +#endif +#if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING) + uint8_t cbc_record_splitting /*bool*/; /*!< do cbc record splitting */ +#endif +#if defined(MBEDTLS_SSL_RENEGOTIATION) + uint8_t disable_renegotiation /*bool*/; /*!< disable renegotiation? */ +#endif +#if defined(MBEDTLS_SSL_TRUNCATED_HMAC) + uint8_t trunc_hmac /*bool*/; /*!< negotiate truncated hmac? */ +#endif +#if defined(MBEDTLS_SSL_SESSION_TICKETS) + uint8_t session_tickets /*bool*/; /*!< use session tickets? */ +#endif +#if defined(MBEDTLS_SSL_FALLBACK_SCSV) && defined(MBEDTLS_SSL_CLI_C) + uint8_t fallback /*bool*/; /*!< is this a fallback? */ +#endif +#if defined(MBEDTLS_SSL_SRV_C) + uint8_t cert_req_ca_list /*bool*/; /*!< enable sending CA list in + Certificate Request messages? */ +#endif +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + uint8_t ignore_unexpected_cid /*bool*/; /*!< Determines whether DTLS + * record with unexpected CID + * should lead to failure. */ +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ +#if defined(MBEDTLS_SSL_DTLS_SRTP) + uint8_t dtls_srtp_mki_support /*bool*/; /*!< support having mki_value + in the use_srtp extension? */ +#endif + + /* + * Numerical settings (int or larger) + */ + + uint32_t read_timeout; /*!< timeout for mbedtls_ssl_read (ms) */ + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + uint32_t hs_timeout_min; /*!< initial value of the handshake + retransmission timeout (ms) */ + uint32_t hs_timeout_max; /*!< maximum value of the handshake + retransmission timeout (ms) */ +#endif + +#if defined(MBEDTLS_SSL_RENEGOTIATION) + int renego_max_records; /*!< grace period for renegotiation */ + unsigned char renego_period[8]; /*!< value of the record counters + that triggers renegotiation */ +#endif + +#if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) + unsigned int badmac_limit; /*!< limit of records with a bad MAC */ +#endif + +#if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_CLI_C) + unsigned int dhm_min_bitlen; /*!< min. bit length of the DHM prime */ +#endif /* * Pointers @@ -860,7 +1145,7 @@ struct mbedtls_ssl_config void *p_vrfy; /*!< context for X.509 verify calllback */ #endif -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) /** Callback to retrieve PSK key from identity */ int (*f_psk)(void *, mbedtls_ssl_context *, const unsigned char *, size_t); void *p_psk; /*!< context for PSK callback */ @@ -889,14 +1174,28 @@ struct mbedtls_ssl_config /** Callback to export key block and master secret */ int (*f_export_keys)( void *, const unsigned char *, const unsigned char *, size_t, size_t, size_t ); + /** Callback to export key block, master secret, + * tls_prf and random bytes. Should replace f_export_keys */ + int (*f_export_keys_ext)( void *, const unsigned char *, + const unsigned char *, size_t, size_t, size_t, + const unsigned char[32], const unsigned char[32], + mbedtls_tls_prf_types ); void *p_export_keys; /*!< context for key export callback */ #endif +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + size_t cid_len; /*!< The length of CIDs for incoming DTLS records. */ +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + #if defined(MBEDTLS_X509_CRT_PARSE_C) const mbedtls_x509_crt_profile *cert_profile; /*!< verification profile */ mbedtls_ssl_key_cert *key_cert; /*!< own certificate/key pair(s) */ mbedtls_x509_crt *ca_chain; /*!< trusted CAs */ mbedtls_x509_crl *ca_crl; /*!< trusted CAs CRLs */ +#if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK) + mbedtls_x509_crt_ca_cb_t f_ca_cb; + void *p_ca_cb; +#endif /* MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) @@ -909,7 +1208,7 @@ struct mbedtls_ssl_config void *p_async_config_data; /*!< Configuration data set by mbedtls_ssl_conf_async_private_cb(). */ #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) const int *sig_hashes; /*!< allowed signature hashes */ #endif @@ -922,103 +1221,52 @@ struct mbedtls_ssl_config mbedtls_mpi dhm_G; /*!< generator for DHM */ #endif -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) - unsigned char *psk; /*!< pre-shared key. This field should - only be set via - mbedtls_ssl_conf_psk() */ - size_t psk_len; /*!< length of the pre-shared key. This - field should only be set via - mbedtls_ssl_conf_psk() */ - unsigned char *psk_identity; /*!< identity for PSK negotiation. This - field should only be set via - mbedtls_ssl_conf_psk() */ - size_t psk_identity_len;/*!< length of identity. This field should - only be set via - mbedtls_ssl_conf_psk() */ -#endif +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) + +#if defined(MBEDTLS_USE_PSA_CRYPTO) + psa_key_id_t psk_opaque; /*!< PSA key slot holding opaque PSK. This field + * should only be set via + * mbedtls_ssl_conf_psk_opaque(). + * If either no PSK or a raw PSK have been + * configured, this has value \c 0. + */ +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + + unsigned char *psk; /*!< The raw pre-shared key. This field should + * only be set via mbedtls_ssl_conf_psk(). + * If either no PSK or an opaque PSK + * have been configured, this has value NULL. */ + size_t psk_len; /*!< The length of the raw pre-shared key. + * This field should only be set via + * mbedtls_ssl_conf_psk(). + * Its value is non-zero if and only if + * \c psk is not \c NULL. */ + + unsigned char *psk_identity; /*!< The PSK identity for PSK negotiation. + * This field should only be set via + * mbedtls_ssl_conf_psk(). + * This is set if and only if either + * \c psk or \c psk_opaque are set. */ + size_t psk_identity_len;/*!< The length of PSK identity. + * This field should only be set via + * mbedtls_ssl_conf_psk(). + * Its value is non-zero if and only if + * \c psk is not \c NULL or \c psk_opaque + * is not \c 0. */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ #if defined(MBEDTLS_SSL_ALPN) const char **alpn_list; /*!< ordered list of protocols */ #endif - /* - * Numerical settings (int then char) - */ - - uint32_t read_timeout; /*!< timeout for mbedtls_ssl_read (ms) */ - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - uint32_t hs_timeout_min; /*!< initial value of the handshake - retransmission timeout (ms) */ - uint32_t hs_timeout_max; /*!< maximum value of the handshake - retransmission timeout (ms) */ -#endif - -#if defined(MBEDTLS_SSL_RENEGOTIATION) - int renego_max_records; /*!< grace period for renegotiation */ - unsigned char renego_period[8]; /*!< value of the record counters - that triggers renegotiation */ -#endif - -#if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) - unsigned int badmac_limit; /*!< limit of records with a bad MAC */ -#endif - -#if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_CLI_C) - unsigned int dhm_min_bitlen; /*!< min. bit length of the DHM prime */ -#endif - - unsigned char max_major_ver; /*!< max. major version used */ - unsigned char max_minor_ver; /*!< max. minor version used */ - unsigned char min_major_ver; /*!< min. major version used */ - unsigned char min_minor_ver; /*!< min. minor version used */ - - /* - * Flags (bitfields) - */ - - unsigned int endpoint : 1; /*!< 0: client, 1: server */ - unsigned int transport : 1; /*!< stream (TLS) or datagram (DTLS) */ - unsigned int authmode : 2; /*!< MBEDTLS_SSL_VERIFY_XXX */ - /* needed even with renego disabled for LEGACY_BREAK_HANDSHAKE */ - unsigned int allow_legacy_renegotiation : 2 ; /*!< MBEDTLS_LEGACY_XXX */ -#if defined(MBEDTLS_ARC4_C) - unsigned int arc4_disabled : 1; /*!< blacklist RC4 ciphersuites? */ -#endif -#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) - unsigned int mfl_code : 3; /*!< desired fragment length */ -#endif -#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) - unsigned int encrypt_then_mac : 1 ; /*!< negotiate encrypt-then-mac? */ -#endif -#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) - unsigned int extended_ms : 1; /*!< negotiate extended master secret? */ -#endif -#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) - unsigned int anti_replay : 1; /*!< detect and prevent replay? */ -#endif -#if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING) - unsigned int cbc_record_splitting : 1; /*!< do cbc record splitting */ -#endif -#if defined(MBEDTLS_SSL_RENEGOTIATION) - unsigned int disable_renegotiation : 1; /*!< disable renegotiation? */ -#endif -#if defined(MBEDTLS_SSL_TRUNCATED_HMAC) - unsigned int trunc_hmac : 1; /*!< negotiate truncated hmac? */ -#endif -#if defined(MBEDTLS_SSL_SESSION_TICKETS) - unsigned int session_tickets : 1; /*!< use session tickets? */ -#endif -#if defined(MBEDTLS_SSL_FALLBACK_SCSV) && defined(MBEDTLS_SSL_CLI_C) - unsigned int fallback : 1; /*!< is this a fallback? */ -#endif -#if defined(MBEDTLS_SSL_SRV_C) - unsigned int cert_req_ca_list : 1; /*!< enable sending CA list in - Certificate Request messages? */ -#endif +#if defined(MBEDTLS_SSL_DTLS_SRTP) + /*! ordered list of supported srtp profile */ + const mbedtls_ssl_srtp_profile *dtls_srtp_profile_list; + /*! number of supported profiles */ + size_t dtls_srtp_profile_list_len; +#endif /* MBEDTLS_SSL_DTLS_SRTP */ }; - struct mbedtls_ssl_context { const mbedtls_ssl_config *conf; /*!< configuration information */ @@ -1041,6 +1289,12 @@ struct mbedtls_ssl_context unsigned badmac_seen; /*!< records with a bad MAC received */ #endif /* MBEDTLS_SSL_DTLS_BADMAC_LIMIT */ +#if defined(MBEDTLS_X509_CRT_PARSE_C) + /** Callback to customize X.509 certificate chain verification */ + int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *); + void *p_vrfy; /*!< context for X.509 verify callback */ +#endif + mbedtls_ssl_send_t *f_send; /*!< Callback for network send */ mbedtls_ssl_recv_t *f_recv; /*!< Callback for network receive */ mbedtls_ssl_recv_timeout_t *f_recv_timeout; @@ -1083,6 +1337,10 @@ struct mbedtls_ssl_context TLS: maintained by us DTLS: read from peer */ unsigned char *in_hdr; /*!< start of record header */ +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + unsigned char *in_cid; /*!< The start of the CID; + * (the end is marked by in_len). */ +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ unsigned char *in_len; /*!< two-bytes message length field */ unsigned char *in_iv; /*!< ivlen-byte IV */ unsigned char *in_msg; /*!< message contents (in_iv+ivlen) */ @@ -1091,6 +1349,9 @@ struct mbedtls_ssl_context int in_msgtype; /*!< record header: message type */ size_t in_msglen; /*!< record header: message length */ size_t in_left; /*!< amount of data read so far */ +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + size_t in_buf_len; /*!< length of input buffer */ +#endif #if defined(MBEDTLS_SSL_PROTO_DTLS) uint16_t in_epoch; /*!< DTLS epoch for incoming records */ size_t next_record_offset; /*!< offset of the next record in datagram @@ -1119,6 +1380,10 @@ struct mbedtls_ssl_context unsigned char *out_buf; /*!< output buffer */ unsigned char *out_ctr; /*!< 64-bit outgoing message counter */ unsigned char *out_hdr; /*!< start of record header */ +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + unsigned char *out_cid; /*!< The start of the CID; + * (the end is marked by in_len). */ +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ unsigned char *out_len; /*!< two-bytes message length field */ unsigned char *out_iv; /*!< ivlen-byte IV */ unsigned char *out_msg; /*!< message contents (out_iv+ivlen) */ @@ -1126,6 +1391,9 @@ struct mbedtls_ssl_context int out_msgtype; /*!< record header: message type */ size_t out_msglen; /*!< record header: message length */ size_t out_left; /*!< amount of data not yet written */ +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + size_t out_buf_len; /*!< length of output buffer */ +#endif unsigned char cur_out_ctr[8]; /*!< Outgoing record sequence number. */ @@ -1157,6 +1425,13 @@ struct mbedtls_ssl_context const char *alpn_chosen; /*!< negotiated protocol */ #endif /* MBEDTLS_SSL_ALPN */ +#if defined(MBEDTLS_SSL_DTLS_SRTP) + /* + * use_srtp extension + */ + mbedtls_dtls_srtp_info dtls_srtp_info; +#endif /* MBEDTLS_SSL_DTLS_SRTP */ + /* * Information for DTLS hello verify */ @@ -1176,25 +1451,59 @@ struct mbedtls_ssl_context char own_verify_data[MBEDTLS_SSL_VERIFY_DATA_MAX_LEN]; /*!< previous handshake verify data */ char peer_verify_data[MBEDTLS_SSL_VERIFY_DATA_MAX_LEN]; /*!< previous handshake verify data */ #endif /* MBEDTLS_SSL_RENEGOTIATION */ + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + /* CID configuration to use in subsequent handshakes. */ + + /*! The next incoming CID, chosen by the user and applying to + * all subsequent handshakes. This may be different from the + * CID currently used in case the user has re-configured the CID + * after an initial handshake. */ + unsigned char own_cid[ MBEDTLS_SSL_CID_IN_LEN_MAX ]; + uint8_t own_cid_len; /*!< The length of \c own_cid. */ + uint8_t negotiate_cid; /*!< This indicates whether the CID extension should + * be negotiated in the next handshake or not. + * Possible values are #MBEDTLS_SSL_CID_ENABLED + * and #MBEDTLS_SSL_CID_DISABLED. */ +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ }; #if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) -#define MBEDTLS_SSL_CHANNEL_OUTBOUND 0 -#define MBEDTLS_SSL_CHANNEL_INBOUND 1 - -extern int (*mbedtls_ssl_hw_record_init)(mbedtls_ssl_context *ssl, - const unsigned char *key_enc, const unsigned char *key_dec, - size_t keylen, - const unsigned char *iv_enc, const unsigned char *iv_dec, - size_t ivlen, - const unsigned char *mac_enc, const unsigned char *mac_dec, - size_t maclen); -extern int (*mbedtls_ssl_hw_record_activate)(mbedtls_ssl_context *ssl, int direction); -extern int (*mbedtls_ssl_hw_record_reset)(mbedtls_ssl_context *ssl); -extern int (*mbedtls_ssl_hw_record_write)(mbedtls_ssl_context *ssl); -extern int (*mbedtls_ssl_hw_record_read)(mbedtls_ssl_context *ssl); -extern int (*mbedtls_ssl_hw_record_finish)(mbedtls_ssl_context *ssl); +#if !defined(MBEDTLS_DEPRECATED_REMOVED) + +#define MBEDTLS_SSL_CHANNEL_OUTBOUND MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( 0 ) +#define MBEDTLS_SSL_CHANNEL_INBOUND MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( 1 ) + +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif /* MBEDTLS_DEPRECATED_WARNING */ + +MBEDTLS_DEPRECATED extern int (*mbedtls_ssl_hw_record_init)( + mbedtls_ssl_context *ssl, + const unsigned char *key_enc, const unsigned char *key_dec, + size_t keylen, + const unsigned char *iv_enc, const unsigned char *iv_dec, + size_t ivlen, + const unsigned char *mac_enc, const unsigned char *mac_dec, + size_t maclen); +MBEDTLS_DEPRECATED extern int (*mbedtls_ssl_hw_record_activate)( + mbedtls_ssl_context *ssl, + int direction ); +MBEDTLS_DEPRECATED extern int (*mbedtls_ssl_hw_record_reset)( + mbedtls_ssl_context *ssl ); +MBEDTLS_DEPRECATED extern int (*mbedtls_ssl_hw_record_write)( + mbedtls_ssl_context *ssl ); +MBEDTLS_DEPRECATED extern int (*mbedtls_ssl_hw_record_read)( + mbedtls_ssl_context *ssl ); +MBEDTLS_DEPRECATED extern int (*mbedtls_ssl_hw_record_finish)( + mbedtls_ssl_context *ssl ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + #endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ /** @@ -1317,13 +1626,17 @@ void mbedtls_ssl_conf_authmode( mbedtls_ssl_config *conf, int authmode ); /** * \brief Set the verification callback (Optional). * - * If set, the verify callback is called for each - * certificate in the chain. For implementation - * information, please see \c mbedtls_x509_crt_verify() + * If set, the provided verify callback is called for each + * certificate in the peer's CRT chain, including the trusted + * root. For more information, please see the documentation of + * \c mbedtls_x509_crt_verify(). * - * \param conf SSL configuration - * \param f_vrfy verification function - * \param p_vrfy verification parameter + * \note For per context callbacks and contexts, please use + * mbedtls_ssl_set_verify() instead. + * + * \param conf The SSL configuration to use. + * \param f_vrfy The verification callback to use during CRT verification. + * \param p_vrfy The opaque context to be passed to the callback. */ void mbedtls_ssl_conf_verify( mbedtls_ssl_config *conf, int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), @@ -1380,7 +1693,7 @@ void mbedtls_ssl_conf_dbg( mbedtls_ssl_config *conf, * \note For DTLS, you need to provide either a non-NULL * f_recv_timeout callback, or a f_recv that doesn't block. * - * \note See the documentations of \c mbedtls_ssl_sent_t, + * \note See the documentations of \c mbedtls_ssl_send_t, * \c mbedtls_ssl_recv_t and \c mbedtls_ssl_recv_timeout_t for * the conventions those callbacks must follow. * @@ -1396,6 +1709,142 @@ void mbedtls_ssl_set_bio( mbedtls_ssl_context *ssl, mbedtls_ssl_recv_timeout_t *f_recv_timeout ); #if defined(MBEDTLS_SSL_PROTO_DTLS) + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + + +/** + * \brief Configure the use of the Connection ID (CID) + * extension in the next handshake. + * + * Reference: draft-ietf-tls-dtls-connection-id-05 + * https://tools.ietf.org/html/draft-ietf-tls-dtls-connection-id-05 + * + * The DTLS CID extension allows the reliable association of + * DTLS records to DTLS connections across changes in the + * underlying transport (changed IP and Port metadata) by + * adding explicit connection identifiers (CIDs) to the + * headers of encrypted DTLS records. The desired CIDs are + * configured by the application layer and are exchanged in + * new `ClientHello` / `ServerHello` extensions during the + * handshake, where each side indicates the CID it wants the + * peer to use when writing encrypted messages. The CIDs are + * put to use once records get encrypted: the stack discards + * any incoming records that don't include the configured CID + * in their header, and adds the peer's requested CID to the + * headers of outgoing messages. + * + * This API enables or disables the use of the CID extension + * in the next handshake and sets the value of the CID to + * be used for incoming messages. + * + * \param ssl The SSL context to configure. This must be initialized. + * \param enable This value determines whether the CID extension should + * be used or not. Possible values are: + * - MBEDTLS_SSL_CID_ENABLED to enable the use of the CID. + * - MBEDTLS_SSL_CID_DISABLED (default) to disable the use + * of the CID. + * \param own_cid The address of the readable buffer holding the CID we want + * the peer to use when sending encrypted messages to us. + * This may be \c NULL if \p own_cid_len is \c 0. + * This parameter is unused if \p enabled is set to + * MBEDTLS_SSL_CID_DISABLED. + * \param own_cid_len The length of \p own_cid. + * This parameter is unused if \p enabled is set to + * MBEDTLS_SSL_CID_DISABLED. + * + * \note The value of \p own_cid_len must match the value of the + * \c len parameter passed to mbedtls_ssl_conf_cid() + * when configuring the ::mbedtls_ssl_config that \p ssl + * is bound to. + * + * \note This CID configuration applies to subsequent handshakes + * performed on the SSL context \p ssl, but does not trigger + * one. You still have to call `mbedtls_ssl_handshake()` + * (for the initial handshake) or `mbedtls_ssl_renegotiate()` + * (for a renegotiation handshake) explicitly after a + * successful call to this function to run the handshake. + * + * \note This call cannot guarantee that the use of the CID + * will be successfully negotiated in the next handshake, + * because the peer might not support it. Specifically: + * - On the Client, enabling the use of the CID through + * this call implies that the `ClientHello` in the next + * handshake will include the CID extension, thereby + * offering the use of the CID to the server. Only if + * the `ServerHello` contains the CID extension, too, + * the CID extension will actually be put to use. + * - On the Server, enabling the use of the CID through + * this call implies that that the server will look for + * the CID extension in a `ClientHello` from the client, + * and, if present, reply with a CID extension in its + * `ServerHello`. + * + * \note To check whether the use of the CID was negotiated + * after the subsequent handshake has completed, please + * use the API mbedtls_ssl_get_peer_cid(). + * + * \warning If the use of the CID extension is enabled in this call + * and the subsequent handshake negotiates its use, Mbed TLS + * will silently drop every packet whose CID does not match + * the CID configured in \p own_cid. It is the responsibility + * of the user to adapt the underlying transport to take care + * of CID-based demultiplexing before handing datagrams to + * Mbed TLS. + * + * \return \c 0 on success. In this case, the CID configuration + * applies to the next handshake. + * \return A negative error code on failure. + */ +int mbedtls_ssl_set_cid( mbedtls_ssl_context *ssl, + int enable, + unsigned char const *own_cid, + size_t own_cid_len ); + +/** + * \brief Get information about the use of the CID extension + * in the current connection. + * + * \param ssl The SSL context to query. + * \param enabled The address at which to store whether the CID extension + * is currently in use or not. If the CID is in use, + * `*enabled` is set to MBEDTLS_SSL_CID_ENABLED; + * otherwise, it is set to MBEDTLS_SSL_CID_DISABLED. + * \param peer_cid The address of the buffer in which to store the CID + * chosen by the peer (if the CID extension is used). + * This may be \c NULL in case the value of peer CID + * isn't needed. If it is not \c NULL, \p peer_cid_len + * must not be \c NULL. + * \param peer_cid_len The address at which to store the size of the CID + * chosen by the peer (if the CID extension is used). + * This is also the number of Bytes in \p peer_cid that + * have been written. + * This may be \c NULL in case the length of the peer CID + * isn't needed. If it is \c NULL, \p peer_cid must be + * \c NULL, too. + * + * \note This applies to the state of the CID negotiated in + * the last complete handshake. If a handshake is in + * progress, this function will attempt to complete + * the handshake first. + * + * \note If CID extensions have been exchanged but both client + * and server chose to use an empty CID, this function + * sets `*enabled` to #MBEDTLS_SSL_CID_DISABLED + * (the rationale for this is that the resulting + * communication is the same as if the CID extensions + * hadn't been used). + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_ssl_get_peer_cid( mbedtls_ssl_context *ssl, + int *enabled, + unsigned char peer_cid[ MBEDTLS_SSL_CID_OUT_LEN_MAX ], + size_t *peer_cid_len ); + +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + /** * \brief Set the Maximum Tranport Unit (MTU). * Special value: 0 means unset (no limit). @@ -1441,6 +1890,30 @@ void mbedtls_ssl_set_bio( mbedtls_ssl_context *ssl, void mbedtls_ssl_set_mtu( mbedtls_ssl_context *ssl, uint16_t mtu ); #endif /* MBEDTLS_SSL_PROTO_DTLS */ +#if defined(MBEDTLS_X509_CRT_PARSE_C) +/** + * \brief Set a connection-specific verification callback (optional). + * + * If set, the provided verify callback is called for each + * certificate in the peer's CRT chain, including the trusted + * root. For more information, please see the documentation of + * \c mbedtls_x509_crt_verify(). + * + * \note This call is analogous to mbedtls_ssl_conf_verify() but + * binds the verification callback and context to an SSL context + * as opposed to an SSL configuration. + * If mbedtls_ssl_conf_verify() and mbedtls_ssl_set_verify() + * are both used, mbedtls_ssl_set_verify() takes precedence. + * + * \param ssl The SSL context to use. + * \param f_vrfy The verification callback to use during CRT verification. + * \param p_vrfy The opaque context to be passed to the callback. + */ +void mbedtls_ssl_set_verify( mbedtls_ssl_context *ssl, + int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), + void *p_vrfy ); +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + /** * \brief Set the timeout period for mbedtls_ssl_read() * (Default: no timeout.) @@ -1459,6 +1932,56 @@ void mbedtls_ssl_set_mtu( mbedtls_ssl_context *ssl, uint16_t mtu ); */ void mbedtls_ssl_conf_read_timeout( mbedtls_ssl_config *conf, uint32_t timeout ); +#if defined(MBEDTLS_SSL_RECORD_CHECKING) +/** + * \brief Check whether a buffer contains a valid and authentic record + * that has not been seen before. (DTLS only). + * + * This function does not change the user-visible state + * of the SSL context. Its sole purpose is to provide + * an indication of the legitimacy of an incoming record. + * + * This can be useful e.g. in distributed server environments + * using the DTLS Connection ID feature, in which connections + * might need to be passed between service instances on a change + * of peer address, but where such disruptive operations should + * only happen after the validity of incoming records has been + * confirmed. + * + * \param ssl The SSL context to use. + * \param buf The address of the buffer holding the record to be checked. + * This must be a read/write buffer of length \p buflen Bytes. + * \param buflen The length of \p buf in Bytes. + * + * \note This routine only checks whether the provided buffer begins + * with a valid and authentic record that has not been seen + * before, but does not check potential data following the + * initial record. In particular, it is possible to pass DTLS + * datagrams containing multiple records, in which case only + * the first record is checked. + * + * \note This function modifies the input buffer \p buf. If you need + * to preserve the original record, you have to maintain a copy. + * + * \return \c 0 if the record is valid and authentic and has not been + * seen before. + * \return MBEDTLS_ERR_SSL_INVALID_MAC if the check completed + * successfully but the record was found to be not authentic. + * \return MBEDTLS_ERR_SSL_INVALID_RECORD if the check completed + * successfully but the record was found to be invalid for + * a reason different from authenticity checking. + * \return MBEDTLS_ERR_SSL_UNEXPECTED_RECORD if the check completed + * successfully but the record was found to be unexpected + * in the state of the SSL context, including replayed records. + * \return Another negative error code on different kinds of failure. + * In this case, the SSL context becomes unusable and needs + * to be freed or reset before reuse. + */ +int mbedtls_ssl_check_record( mbedtls_ssl_context const *ssl, + unsigned char *buf, + size_t buflen ); +#endif /* MBEDTLS_SSL_RECORD_CHECKING */ + /** * \brief Set the timer callbacks (Mandatory for DTLS.) * @@ -1537,6 +2060,41 @@ typedef int mbedtls_ssl_export_keys_t( void *p_expkey, size_t maclen, size_t keylen, size_t ivlen ); + +/** + * \brief Callback type: Export key block, master secret, + * handshake randbytes and the tls_prf function + * used to derive keys. + * + * \note This is required for certain uses of TLS, e.g. EAP-TLS + * (RFC 5216) and Thread. The key pointers are ephemeral and + * therefore must not be stored. The master secret and keys + * should not be used directly except as an input to a key + * derivation function. + * + * \param p_expkey Context for the callback. + * \param ms Pointer to master secret (fixed length: 48 bytes). + * \param kb Pointer to key block, see RFC 5246 section 6.3. + * (variable length: 2 * maclen + 2 * keylen + 2 * ivlen). + * \param maclen MAC length. + * \param keylen Key length. + * \param ivlen IV length. + * \param client_random The client random bytes. + * \param server_random The server random bytes. + * \param tls_prf_type The tls_prf enum type. + * + * \return 0 if successful, or + * a specific MBEDTLS_ERR_XXX code. + */ +typedef int mbedtls_ssl_export_keys_ext_t( void *p_expkey, + const unsigned char *ms, + const unsigned char *kb, + size_t maclen, + size_t keylen, + size_t ivlen, + const unsigned char client_random[32], + const unsigned char server_random[32], + mbedtls_tls_prf_types tls_prf_type ); #endif /* MBEDTLS_SSL_EXPORT_KEYS */ /** @@ -1602,6 +2160,22 @@ void mbedtls_ssl_conf_session_tickets_cb( mbedtls_ssl_config *conf, void mbedtls_ssl_conf_export_keys_cb( mbedtls_ssl_config *conf, mbedtls_ssl_export_keys_t *f_export_keys, void *p_export_keys ); + +/** + * \brief Configure extended key export callback. + * (Default: none.) + * + * \note See \c mbedtls_ssl_export_keys_ext_t. + * \warning Exported key material must not be used for any purpose + * before the (D)TLS handshake is completed + * + * \param conf SSL configuration context + * \param f_export_keys_ext Callback for exporting keys + * \param p_export_keys Context for the callback + */ +void mbedtls_ssl_conf_export_keys_ext_cb( mbedtls_ssl_config *conf, + mbedtls_ssl_export_keys_ext_t *f_export_keys_ext, + void *p_export_keys ); #endif /* MBEDTLS_SSL_EXPORT_KEYS */ #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) @@ -1952,6 +2526,90 @@ void mbedtls_ssl_conf_session_cache( mbedtls_ssl_config *conf, int mbedtls_ssl_set_session( mbedtls_ssl_context *ssl, const mbedtls_ssl_session *session ); #endif /* MBEDTLS_SSL_CLI_C */ +/** + * \brief Load serialized session data into a session structure. + * On client, this can be used for loading saved sessions + * before resuming them with mbedstls_ssl_set_session(). + * On server, this can be used for alternative implementations + * of session cache or session tickets. + * + * \warning If a peer certificate chain is associated with the session, + * the serialized state will only contain the peer's + * end-entity certificate and the result of the chain + * verification (unless verification was disabled), but not + * the rest of the chain. + * + * \see mbedtls_ssl_session_save() + * \see mbedtls_ssl_set_session() + * + * \param session The session structure to be populated. It must have been + * initialised with mbedtls_ssl_session_init() but not + * populated yet. + * \param buf The buffer holding the serialized session data. It must be a + * readable buffer of at least \p len bytes. + * \param len The size of the serialized data in bytes. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_SSL_ALLOC_FAILED if memory allocation failed. + * \return #MBEDTLS_ERR_SSL_BAD_INPUT_DATA if input data is invalid. + * \return #MBEDTLS_ERR_SSL_VERSION_MISMATCH if the serialized data + * was generated in a different version or configuration of + * Mbed TLS. + * \return Another negative value for other kinds of errors (for + * example, unsupported features in the embedded certificate). + */ +int mbedtls_ssl_session_load( mbedtls_ssl_session *session, + const unsigned char *buf, + size_t len ); + +/** + * \brief Save session structure as serialized data in a buffer. + * On client, this can be used for saving session data, + * potentially in non-volatile storage, for resuming later. + * On server, this can be used for alternative implementations + * of session cache or session tickets. + * + * \see mbedtls_ssl_session_load() + * \see mbedtls_ssl_get_session_pointer() + * + * \param session The session structure to be saved. + * \param buf The buffer to write the serialized data to. It must be a + * writeable buffer of at least \p len bytes, or may be \c + * NULL if \p len is \c 0. + * \param buf_len The number of bytes available for writing in \p buf. + * \param olen The size in bytes of the data that has been or would have + * been written. It must point to a valid \c size_t. + * + * \note \p olen is updated to the correct value regardless of + * whether \p buf_len was large enough. This makes it possible + * to determine the necessary size by calling this function + * with \p buf set to \c NULL and \p buf_len to \c 0. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL if \p buf is too small. + */ +int mbedtls_ssl_session_save( const mbedtls_ssl_session *session, + unsigned char *buf, + size_t buf_len, + size_t *olen ); + +/** + * \brief Get a pointer to the current session structure, for example + * to serialize it. + * + * \warning Ownership of the session remains with the SSL context, and + * the returned pointer is only guaranteed to be valid until + * the next API call operating on the same \p ssl context. + * + * \see mbedtls_ssl_session_save() + * + * \param ssl The SSL context. + * + * \return A pointer to the current session if successful. + * \return \c NULL if no session is active. + */ +const mbedtls_ssl_session *mbedtls_ssl_get_session_pointer( const mbedtls_ssl_context *ssl ); + /** * \brief Set the list of allowed ciphersuites and the preference * order. First in the list has the highest preference. @@ -1970,6 +2628,45 @@ int mbedtls_ssl_set_session( mbedtls_ssl_context *ssl, const mbedtls_ssl_session void mbedtls_ssl_conf_ciphersuites( mbedtls_ssl_config *conf, const int *ciphersuites ); +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) +#define MBEDTLS_SSL_UNEXPECTED_CID_IGNORE 0 +#define MBEDTLS_SSL_UNEXPECTED_CID_FAIL 1 +/** + * \brief Specify the length of Connection IDs for incoming + * encrypted DTLS records, as well as the behaviour + * on unexpected CIDs. + * + * By default, the CID length is set to \c 0, + * and unexpected CIDs are silently ignored. + * + * \param conf The SSL configuration to modify. + * \param len The length in Bytes of the CID fields in encrypted + * DTLS records using the CID mechanism. This must + * not be larger than #MBEDTLS_SSL_CID_OUT_LEN_MAX. + * \param ignore_other_cids This determines the stack's behaviour when + * receiving a record with an unexpected CID. + * Possible values are: + * - #MBEDTLS_SSL_UNEXPECTED_CID_IGNORE + * In this case, the record is silently ignored. + * - #MBEDTLS_SSL_UNEXPECTED_CID_FAIL + * In this case, the stack fails with the specific + * error code #MBEDTLS_ERR_SSL_UNEXPECTED_CID. + * + * \note The CID specification allows implementations to either + * use a common length for all incoming connection IDs or + * allow variable-length incoming IDs. Mbed TLS currently + * requires a common length for all connections sharing the + * same SSL configuration; this allows simpler parsing of + * record headers. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_SSL_BAD_INPUT_DATA if \p own_cid_len + * is too large. + */ +int mbedtls_ssl_conf_cid( mbedtls_ssl_config *conf, size_t len, + int ignore_other_cids ); +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + /** * \brief Set the list of allowed ciphersuites and the * preference order for a specific version of the protocol. @@ -2022,6 +2719,63 @@ void mbedtls_ssl_conf_ca_chain( mbedtls_ssl_config *conf, mbedtls_x509_crt *ca_chain, mbedtls_x509_crl *ca_crl ); +#if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK) +/** + * \brief Set the trusted certificate callback. + * + * This API allows to register the set of trusted certificates + * through a callback, instead of a linked list as configured + * by mbedtls_ssl_conf_ca_chain(). + * + * This is useful for example in contexts where a large number + * of CAs are used, and the inefficiency of maintaining them + * in a linked list cannot be tolerated. It is also useful when + * the set of trusted CAs needs to be modified frequently. + * + * See the documentation of `mbedtls_x509_crt_ca_cb_t` for + * more information. + * + * \param conf The SSL configuration to register the callback with. + * \param f_ca_cb The trusted certificate callback to use when verifying + * certificate chains. + * \param p_ca_cb The context to be passed to \p f_ca_cb (for example, + * a reference to a trusted CA database). + * + * \note This API is incompatible with mbedtls_ssl_conf_ca_chain(): + * Any call to this function overwrites the values set through + * earlier calls to mbedtls_ssl_conf_ca_chain() or + * mbedtls_ssl_conf_ca_cb(). + * + * \note This API is incompatible with CA indication in + * CertificateRequest messages: A server-side SSL context which + * is bound to an SSL configuration that uses a CA callback + * configured via mbedtls_ssl_conf_ca_cb(), and which requires + * client authentication, will send an empty CA list in the + * corresponding CertificateRequest message. + * + * \note This API is incompatible with mbedtls_ssl_set_hs_ca_chain(): + * If an SSL context is bound to an SSL configuration which uses + * CA callbacks configured via mbedtls_ssl_conf_ca_cb(), then + * calls to mbedtls_ssl_set_hs_ca_chain() have no effect. + * + * \note The use of this API disables the use of restartable ECC + * during X.509 CRT signature verification (but doesn't affect + * other uses). + * + * \warning This API is incompatible with the use of CRLs. Any call to + * mbedtls_ssl_conf_ca_cb() unsets CRLs configured through + * earlier calls to mbedtls_ssl_conf_ca_chain(). + * + * \warning In multi-threaded environments, the callback \p f_ca_cb + * must be thread-safe, and it is the user's responsibility + * to guarantee this (for example through a mutex + * contained in the callback context pointed to by \p p_ca_cb). + */ +void mbedtls_ssl_conf_ca_cb( mbedtls_ssl_config *conf, + mbedtls_x509_crt_ca_cb_t f_ca_cb, + void *p_ca_cb ); +#endif /* MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK */ + /** * \brief Set own certificate chain and private key * @@ -2033,7 +2787,7 @@ void mbedtls_ssl_conf_ca_chain( mbedtls_ssl_config *conf, * provision more than one cert/key pair (eg one ECDSA, one * RSA with SHA-256, one RSA with SHA-1). An adequate * certificate will be selected according to the client's - * advertised capabilities. In case mutliple certificates are + * advertised capabilities. In case multiple certificates are * adequate, preference is given to the one set by the first * call to this function, then second, etc. * @@ -2063,76 +2817,172 @@ int mbedtls_ssl_conf_own_cert( mbedtls_ssl_config *conf, mbedtls_pk_context *pk_key ); #endif /* MBEDTLS_X509_CRT_PARSE_C */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) /** - * \brief Set the Pre Shared Key (PSK) and the expected identity name + * \brief Configure a pre-shared key (PSK) and identity + * to be used in PSK-based ciphersuites. * * \note This is mainly useful for clients. Servers will usually * want to use \c mbedtls_ssl_conf_psk_cb() instead. * - * \note Currently clients can only register one pre-shared key. - * In other words, the servers' identity hint is ignored. + * \note A PSK set by \c mbedtls_ssl_set_hs_psk() in the PSK callback + * takes precedence over a PSK configured by this function. + * + * \warning Currently, clients can only register a single pre-shared key. + * Calling this function or mbedtls_ssl_conf_psk_opaque() more + * than once will overwrite values configured in previous calls. * Support for setting multiple PSKs on clients and selecting - * one based on the identity hint is not a planned feature but - * feedback is welcomed. + * one based on the identity hint is not a planned feature, + * but feedback is welcomed. * - * \param conf SSL configuration - * \param psk pointer to the pre-shared key - * \param psk_len pre-shared key length - * \param psk_identity pointer to the pre-shared key identity - * \param psk_identity_len identity key length + * \param conf The SSL configuration to register the PSK with. + * \param psk The pointer to the pre-shared key to use. + * \param psk_len The length of the pre-shared key in bytes. + * \param psk_identity The pointer to the pre-shared key identity. + * \param psk_identity_len The length of the pre-shared key identity + * in bytes. * - * \return 0 if successful or MBEDTLS_ERR_SSL_ALLOC_FAILED + * \note The PSK and its identity are copied internally and + * hence need not be preserved by the caller for the lifetime + * of the SSL configuration. + * + * \return \c 0 if successful. + * \return An \c MBEDTLS_ERR_SSL_XXX error code on failure. */ int mbedtls_ssl_conf_psk( mbedtls_ssl_config *conf, const unsigned char *psk, size_t psk_len, const unsigned char *psk_identity, size_t psk_identity_len ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) +/** + * \brief Configure an opaque pre-shared key (PSK) and identity + * to be used in PSK-based ciphersuites. + * + * \note This is mainly useful for clients. Servers will usually + * want to use \c mbedtls_ssl_conf_psk_cb() instead. + * + * \note An opaque PSK set by \c mbedtls_ssl_set_hs_psk_opaque() in + * the PSK callback takes precedence over an opaque PSK + * configured by this function. + * + * \warning Currently, clients can only register a single pre-shared key. + * Calling this function or mbedtls_ssl_conf_psk() more than + * once will overwrite values configured in previous calls. + * Support for setting multiple PSKs on clients and selecting + * one based on the identity hint is not a planned feature, + * but feedback is welcomed. + * + * \param conf The SSL configuration to register the PSK with. + * \param psk The identifier of the key slot holding the PSK. + * Until \p conf is destroyed or this function is successfully + * called again, the key slot \p psk must be populated with a + * key of type PSA_ALG_CATEGORY_KEY_DERIVATION whose policy + * allows its use for the key derivation algorithm applied + * in the handshake. + * \param psk_identity The pointer to the pre-shared key identity. + * \param psk_identity_len The length of the pre-shared key identity + * in bytes. + * + * \note The PSK identity hint is copied internally and hence need + * not be preserved by the caller for the lifetime of the + * SSL configuration. + * + * \return \c 0 if successful. + * \return An \c MBEDTLS_ERR_SSL_XXX error code on failure. + */ +int mbedtls_ssl_conf_psk_opaque( mbedtls_ssl_config *conf, + psa_key_id_t psk, + const unsigned char *psk_identity, + size_t psk_identity_len ); +#endif /* MBEDTLS_USE_PSA_CRYPTO */ /** - * \brief Set the Pre Shared Key (PSK) for the current handshake + * \brief Set the pre-shared Key (PSK) for the current handshake. * * \note This should only be called inside the PSK callback, - * ie the function passed to \c mbedtls_ssl_conf_psk_cb(). + * i.e. the function passed to \c mbedtls_ssl_conf_psk_cb(). * - * \param ssl SSL context - * \param psk pointer to the pre-shared key - * \param psk_len pre-shared key length + * \note A PSK set by this function takes precedence over a PSK + * configured by \c mbedtls_ssl_conf_psk(). + * + * \param ssl The SSL context to configure a PSK for. + * \param psk The pointer to the pre-shared key. + * \param psk_len The length of the pre-shared key in bytes. * - * \return 0 if successful or MBEDTLS_ERR_SSL_ALLOC_FAILED + * \return \c 0 if successful. + * \return An \c MBEDTLS_ERR_SSL_XXX error code on failure. */ int mbedtls_ssl_set_hs_psk( mbedtls_ssl_context *ssl, const unsigned char *psk, size_t psk_len ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) +/** + * \brief Set an opaque pre-shared Key (PSK) for the current handshake. + * + * \note This should only be called inside the PSK callback, + * i.e. the function passed to \c mbedtls_ssl_conf_psk_cb(). + * + * \note An opaque PSK set by this function takes precedence over an + * opaque PSK configured by \c mbedtls_ssl_conf_psk_opaque(). + * + * \param ssl The SSL context to configure a PSK for. + * \param psk The identifier of the key slot holding the PSK. + * For the duration of the current handshake, the key slot + * must be populated with a key of type + * PSA_ALG_CATEGORY_KEY_DERIVATION whose policy allows its + * use for the key derivation algorithm + * applied in the handshake. + * + * \return \c 0 if successful. + * \return An \c MBEDTLS_ERR_SSL_XXX error code on failure. + */ +int mbedtls_ssl_set_hs_psk_opaque( mbedtls_ssl_context *ssl, + psa_key_id_t psk ); +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + /** * \brief Set the PSK callback (server-side only). * * If set, the PSK callback is called for each - * handshake where a PSK ciphersuite was negotiated. + * handshake where a PSK-based ciphersuite was negotiated. * The caller provides the identity received and wants to * receive the actual PSK data and length. * - * The callback has the following parameters: (void *parameter, - * mbedtls_ssl_context *ssl, const unsigned char *psk_identity, - * size_t identity_len) + * The callback has the following parameters: + * - \c void*: The opaque pointer \p p_psk. + * - \c mbedtls_ssl_context*: The SSL context to which + * the operation applies. + * - \c const unsigned char*: The PSK identity + * selected by the client. + * - \c size_t: The length of the PSK identity + * selected by the client. + * * If a valid PSK identity is found, the callback should use - * \c mbedtls_ssl_set_hs_psk() on the ssl context to set the - * correct PSK and return 0. + * \c mbedtls_ssl_set_hs_psk() or + * \c mbedtls_ssl_set_hs_psk_opaque() + * on the SSL context to set the correct PSK and return \c 0. * Any other return value will result in a denied PSK identity. * - * \note If you set a PSK callback using this function, then you - * don't need to set a PSK key and identity using - * \c mbedtls_ssl_conf_psk(). - * - * \param conf SSL configuration - * \param f_psk PSK identity function - * \param p_psk PSK identity parameter + * \note A dynamic PSK (i.e. set by the PSK callback) takes + * precedence over a static PSK (i.e. set by + * \c mbedtls_ssl_conf_psk() or + * \c mbedtls_ssl_conf_psk_opaque()). + * This means that if you set a PSK callback using this + * function, you don't need to set a PSK using + * \c mbedtls_ssl_conf_psk() or + * \c mbedtls_ssl_conf_psk_opaque()). + * + * \param conf The SSL configuration to register the callback with. + * \param f_psk The callback for selecting and setting the PSK based + * in the PSK identity chosen by the client. + * \param p_psk A pointer to an opaque structure to be passed to + * the callback, for example a PSK store. */ void mbedtls_ssl_conf_psk_cb( mbedtls_ssl_config *conf, int (*f_psk)(void *, mbedtls_ssl_context *, const unsigned char *, size_t), void *p_psk ); -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_SRV_C) @@ -2208,7 +3058,9 @@ void mbedtls_ssl_conf_dhm_min_bitlen( mbedtls_ssl_config *conf, #if defined(MBEDTLS_ECP_C) /** * \brief Set the allowed curves in order of preference. - * (Default: all defined curves.) + * (Default: all defined curves in order of decreasing size, + * except that Montgomery curves come last. This order + * is likely to change in a future version.) * * On server: this only affects selection of the ECDHE curve; * the curves used for ECDH and ECDSA are determined by the @@ -2237,10 +3089,12 @@ void mbedtls_ssl_conf_curves( mbedtls_ssl_config *conf, const mbedtls_ecp_group_id *curves ); #endif /* MBEDTLS_ECP_C */ -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) /** * \brief Set the allowed hashes for signatures during the handshake. - * (Default: all available hashes except MD5.) + * (Default: all SHA-2 hashes, largest first. Also SHA-1 if + * the compile-time option + * `MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE` is enabled.) * * \note This only affects which hashes are offered and can be used * for signatures during the handshake. Hashes for message @@ -2258,7 +3112,7 @@ void mbedtls_ssl_conf_curves( mbedtls_ssl_config *conf, */ void mbedtls_ssl_conf_sig_hashes( mbedtls_ssl_config *conf, const int *hashes ); -#endif /* MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ #if defined(MBEDTLS_X509_CRT_PARSE_C) /** @@ -2406,6 +3260,105 @@ int mbedtls_ssl_conf_alpn_protocols( mbedtls_ssl_config *conf, const char **prot const char *mbedtls_ssl_get_alpn_protocol( const mbedtls_ssl_context *ssl ); #endif /* MBEDTLS_SSL_ALPN */ +#if defined(MBEDTLS_SSL_DTLS_SRTP) +#if defined(MBEDTLS_DEBUG_C) +static inline const char *mbedtls_ssl_get_srtp_profile_as_string( mbedtls_ssl_srtp_profile profile ) +{ + switch( profile ) + { + case MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80: + return( "MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" ); + case MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32: + return( "MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" ); + case MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80: + return( "MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" ); + case MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32: + return( "MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" ); + default: break; + } + return( "" ); +} +#endif /* MBEDTLS_DEBUG_C */ +/** + * \brief Manage support for mki(master key id) value + * in use_srtp extension. + * MKI is an optional part of SRTP used for key management + * and re-keying. See RFC3711 section 3.1 for details. + * The default value is + * #MBEDTLS_SSL_DTLS_SRTP_MKI_UNSUPPORTED. + * + * \param conf The SSL configuration to manage mki support. + * \param support_mki_value Enable or disable mki usage. Values are + * #MBEDTLS_SSL_DTLS_SRTP_MKI_UNSUPPORTED + * or #MBEDTLS_SSL_DTLS_SRTP_MKI_SUPPORTED. + */ +void mbedtls_ssl_conf_srtp_mki_value_supported( mbedtls_ssl_config *conf, + int support_mki_value ); + +/** + * \brief Set the supported DTLS-SRTP protection profiles. + * + * \param conf SSL configuration + * \param profiles Pointer to a List of MBEDTLS_TLS_SRTP_UNSET terminated + * supported protection profiles + * in decreasing preference order. + * The pointer to the list is recorded by the library + * for later reference as required, so the lifetime + * of the table must be at least as long as the lifetime + * of the SSL configuration structure. + * The list must not hold more than + * MBEDTLS_TLS_SRTP_MAX_PROFILE_LIST_LENGTH elements + * (excluding the terminating MBEDTLS_TLS_SRTP_UNSET). + * + * \return 0 on success + * \return #MBEDTLS_ERR_SSL_BAD_INPUT_DATA when the list of + * protection profiles is incorrect. + */ +int mbedtls_ssl_conf_dtls_srtp_protection_profiles + ( mbedtls_ssl_config *conf, + const mbedtls_ssl_srtp_profile *profiles ); + +/** + * \brief Set the mki_value for the current DTLS-SRTP session. + * + * \param ssl SSL context to use. + * \param mki_value The MKI value to set. + * \param mki_len The length of the MKI value. + * + * \note This function is relevant on client side only. + * The server discovers the mki value during handshake. + * A mki value set on server side using this function + * is ignored. + * + * \return 0 on success + * \return #MBEDTLS_ERR_SSL_BAD_INPUT_DATA + * \return #MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE + */ +int mbedtls_ssl_dtls_srtp_set_mki_value( mbedtls_ssl_context *ssl, + unsigned char *mki_value, + uint16_t mki_len ); +/** + * \brief Get the negotiated DTLS-SRTP informations: + * Protection profile and MKI value. + * + * \warning This function must be called after the handshake is + * completed. The value returned by this function must + * not be trusted or acted upon before the handshake completes. + * + * \param ssl The SSL context to query. + * \param dtls_srtp_info The negotiated DTLS-SRTP informations: + * - Protection profile in use. + * A direct mapping of the iana defined value for protection + * profile on an uint16_t. + http://www.iana.org/assignments/srtp-protection/srtp-protection.xhtml + * #MBEDTLS_TLS_SRTP_UNSET if the use of SRTP was not negotiated + * or peer's Hello packet was not parsed yet. + * - mki size and value( if size is > 0 ). + */ +void mbedtls_ssl_get_dtls_srtp_negotiation_result( const mbedtls_ssl_context *ssl, + mbedtls_dtls_srtp_info *dtls_srtp_info ); +#endif /* MBEDTLS_SSL_DTLS_SRTP */ + /** * \brief Set the maximum supported version sent from the client side * and/or accepted at the server side @@ -2505,7 +3458,7 @@ void mbedtls_ssl_conf_extended_master_secret( mbedtls_ssl_config *conf, char ems * \warning Use of RC4 in DTLS/TLS has been prohibited by RFC 7465 * for security reasons. Use at your own risk. * - * \note This function is deprecated and will likely be removed in + * \note This function is deprecated and will be removed in * a future version of the library. * RC4 is disabled by default at compile time and needs to be * actively enabled for use with legacy systems. @@ -2532,13 +3485,19 @@ void mbedtls_ssl_conf_cert_req_ca_list( mbedtls_ssl_config *conf, #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) /** - * \brief Set the maximum fragment length to emit and/or negotiate - * (Default: the smaller of MBEDTLS_SSL_IN_CONTENT_LEN and - * MBEDTLS_SSL_OUT_CONTENT_LEN, usually 2^14 bytes) + * \brief Set the maximum fragment length to emit and/or negotiate. + * (Typical: the smaller of #MBEDTLS_SSL_IN_CONTENT_LEN and + * #MBEDTLS_SSL_OUT_CONTENT_LEN, usually `2^14` bytes) * (Server: set maximum fragment length to emit, - * usually negotiated by the client during handshake + * usually negotiated by the client during handshake) * (Client: set maximum fragment length to emit *and* * negotiate with the server during handshake) + * (Default: #MBEDTLS_SSL_MAX_FRAG_LEN_NONE) + * + * \note On the client side, the maximum fragment length extension + * *will not* be used, unless the maximum fragment length has + * been set via this function to a value different than + * #MBEDTLS_SSL_MAX_FRAG_LEN_NONE. * * \note With TLS, this currently only affects ApplicationData (sent * with \c mbedtls_ssl_read()), not handshake messages. @@ -2698,7 +3657,7 @@ void mbedtls_ssl_conf_renegotiation_enforced( mbedtls_ssl_config *conf, int max_ * (Default: 2^48 - 1) * * Renegotiation is automatically triggered when a record - * counter (outgoing or ingoing) crosses the defined + * counter (outgoing or incoming) crosses the defined * threshold. The default value is meant to prevent the * connection from being closed when the counter is about to * reached its maximal value (it is not allowed to wrap). @@ -2828,18 +3787,61 @@ int mbedtls_ssl_get_record_expansion( const mbedtls_ssl_context *ssl ); #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) /** - * \brief Return the maximum fragment length (payload, in bytes). - * This is the value negotiated with peer if any, - * or the locally configured value. + * \brief Return the maximum fragment length (payload, in bytes) for + * the output buffer. For the client, this is the configured + * value. For the server, it is the minimum of two - the + * configured value and the negotiated one. + * + * \sa mbedtls_ssl_conf_max_frag_len() + * \sa mbedtls_ssl_get_max_record_payload() + * + * \param ssl SSL context + * + * \return Current maximum fragment length for the output buffer. + */ +size_t mbedtls_ssl_get_output_max_frag_len( const mbedtls_ssl_context *ssl ); + +/** + * \brief Return the maximum fragment length (payload, in bytes) for + * the input buffer. This is the negotiated maximum fragment + * length, or, if there is none, MBEDTLS_SSL_MAX_CONTENT_LEN. + * If it is not defined either, the value is 2^14. This function + * works as its predecessor, \c mbedtls_ssl_get_max_frag_len(). * * \sa mbedtls_ssl_conf_max_frag_len() * \sa mbedtls_ssl_get_max_record_payload() * * \param ssl SSL context * - * \return Current maximum fragment length. + * \return Current maximum fragment length for the output buffer. + */ +size_t mbedtls_ssl_get_input_max_frag_len( const mbedtls_ssl_context *ssl ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) + +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif + +/** + * \brief This function is a deprecated approach to getting the max + * fragment length. Its an alias for + * \c mbedtls_ssl_get_output_max_frag_len(), as the behaviour + * is the same. See \c mbedtls_ssl_get_output_max_frag_len() for + * more detail. + * + * \sa mbedtls_ssl_get_input_max_frag_len() + * \sa mbedtls_ssl_get_output_max_frag_len() + * + * \param ssl SSL context + * + * \return Current maximum fragment length for the output buffer. */ -size_t mbedtls_ssl_get_max_frag_len( const mbedtls_ssl_context *ssl ); +MBEDTLS_DEPRECATED size_t mbedtls_ssl_get_max_frag_len( + const mbedtls_ssl_context *ssl ); +#endif /* MBEDTLS_DEPRECATED_REMOVED */ #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ /** @@ -2860,7 +3862,8 @@ size_t mbedtls_ssl_get_max_frag_len( const mbedtls_ssl_context *ssl ); * when record compression is enabled. * * \sa mbedtls_ssl_set_mtu() - * \sa mbedtls_ssl_get_max_frag_len() + * \sa mbedtls_ssl_get_output_max_frag_len() + * \sa mbedtls_ssl_get_input_max_frag_len() * \sa mbedtls_ssl_get_record_expansion() * * \param ssl SSL context @@ -2872,18 +3875,34 @@ int mbedtls_ssl_get_max_out_record_payload( const mbedtls_ssl_context *ssl ); #if defined(MBEDTLS_X509_CRT_PARSE_C) /** - * \brief Return the peer certificate from the current connection - * - * Note: Can be NULL in case no certificate was sent during - * the handshake. Different calls for the same connection can - * return the same or different pointers for the same - * certificate and even a different certificate altogether. - * The peer cert CAN change in a single connection if - * renegotiation is performed. - * - * \param ssl SSL context - * - * \return the current peer certificate + * \brief Return the peer certificate from the current connection. + * + * \param ssl The SSL context to use. This must be initialized and setup. + * + * \return The current peer certificate, if available. + * The returned certificate is owned by the SSL context and + * is valid only until the next call to the SSL API. + * \return \c NULL if no peer certificate is available. This might + * be because the chosen ciphersuite doesn't use CRTs + * (PSK-based ciphersuites, for example), or because + * #MBEDTLS_SSL_KEEP_PEER_CERTIFICATE has been disabled, + * allowing the stack to free the peer's CRT to save memory. + * + * \note For one-time inspection of the peer's certificate during + * the handshake, consider registering an X.509 CRT verification + * callback through mbedtls_ssl_conf_verify() instead of calling + * this function. Using mbedtls_ssl_conf_verify() also comes at + * the benefit of allowing you to influence the verification + * process, for example by masking expected and tolerated + * verification failures. + * + * \warning You must not use the pointer returned by this function + * after any further call to the SSL API, including + * mbedtls_ssl_read() and mbedtls_ssl_write(); this is + * because the pointer might change during renegotiation, + * which happens transparently to the user. + * If you want to use the certificate across API calls, + * you must make a copy. */ const mbedtls_x509_crt *mbedtls_ssl_get_peer_cert( const mbedtls_ssl_context *ssl ); #endif /* MBEDTLS_X509_CRT_PARSE_C */ @@ -3028,7 +4047,14 @@ int mbedtls_ssl_renegotiate( mbedtls_ssl_context *ssl ); * * \return The (positive) number of bytes read if successful. * \return \c 0 if the read end of the underlying transport was closed - * - in this case you must stop using the context (see below). + * without sending a CloseNotify beforehand, which might happen + * because of various reasons (internal error of an underlying + * stack, non-conformant peer not sending a CloseNotify and + * such) - in this case you must stop using the context + * (see below). + * \return #MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY if the underlying + * transport is still functional, but the peer has + * acknowledged to not send anything anymore. * \return #MBEDTLS_ERR_SSL_WANT_READ or #MBEDTLS_ERR_SSL_WANT_WRITE * if the handshake is incomplete and waiting for data to * be available for reading from or writing to the underlying @@ -3145,8 +4171,8 @@ int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) * or negotiated with the peer), then: * - with TLS, less bytes than requested are written. * - with DTLS, MBEDTLS_ERR_SSL_BAD_INPUT_DATA is returned. - * \c mbedtls_ssl_get_max_frag_len() may be used to query the - * active maximum fragment length. + * \c mbedtls_ssl_get_output_max_frag_len() may be used to + * query the active maximum fragment length. * * \note Attempting to write 0 bytes will result in an empty TLS * application record being sent. @@ -3194,13 +4220,137 @@ int mbedtls_ssl_close_notify( mbedtls_ssl_context *ssl ); */ void mbedtls_ssl_free( mbedtls_ssl_context *ssl ); +#if defined(MBEDTLS_SSL_CONTEXT_SERIALIZATION) +/** + * \brief Save an active connection as serialized data in a buffer. + * This allows the freeing or re-using of the SSL context + * while still picking up the connection later in a way that + * it entirely transparent to the peer. + * + * \see mbedtls_ssl_context_load() + * + * \note This feature is currently only available under certain + * conditions, see the documentation of the return value + * #MBEDTLS_ERR_SSL_BAD_INPUT_DATA for details. + * + * \note When this function succeeds, it calls + * mbedtls_ssl_session_reset() on \p ssl which as a result is + * no longer associated with the connection that has been + * serialized. This avoids creating copies of the connection + * state. You're then free to either re-use the context + * structure for a different connection, or call + * mbedtls_ssl_free() on it. See the documentation of + * mbedtls_ssl_session_reset() for more details. + * + * \param ssl The SSL context to save. On success, it is no longer + * associated with the connection that has been serialized. + * \param buf The buffer to write the serialized data to. It must be a + * writeable buffer of at least \p buf_len bytes, or may be \c + * NULL if \p buf_len is \c 0. + * \param buf_len The number of bytes available for writing in \p buf. + * \param olen The size in bytes of the data that has been or would have + * been written. It must point to a valid \c size_t. + * + * \note \p olen is updated to the correct value regardless of + * whether \p buf_len was large enough. This makes it possible + * to determine the necessary size by calling this function + * with \p buf set to \c NULL and \p buf_len to \c 0. However, + * the value of \p olen is only guaranteed to be correct when + * the function returns #MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL or + * \c 0. If the return value is different, then the value of + * \p olen is undefined. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL if \p buf is too small. + * \return #MBEDTLS_ERR_SSL_ALLOC_FAILED if memory allocation failed + * while reseting the context. + * \return #MBEDTLS_ERR_SSL_BAD_INPUT_DATA if a handshake is in + * progress, or there is pending data for reading or sending, + * or the connection does not use DTLS 1.2 with an AEAD + * ciphersuite, or renegotiation is enabled. + */ +int mbedtls_ssl_context_save( mbedtls_ssl_context *ssl, + unsigned char *buf, + size_t buf_len, + size_t *olen ); + +/** + * \brief Load serialized connection data to an SSL context. + * + * \see mbedtls_ssl_context_save() + * + * \warning The same serialized data must never be loaded into more + * that one context. In order to ensure that, after + * successfully loading serialized data to an SSL context, you + * should immediately destroy or invalidate all copies of the + * serialized data that was loaded. Loading the same data in + * more than one context would cause severe security failures + * including but not limited to loss of confidentiality. + * + * \note Before calling this function, the SSL context must be + * prepared in one of the two following ways. The first way is + * to take a context freshly initialised with + * mbedtls_ssl_init() and call mbedtls_ssl_setup() on it with + * the same ::mbedtls_ssl_config structure that was used in + * the original connection. The second way is to + * call mbedtls_ssl_session_reset() on a context that was + * previously prepared as above but used in the meantime. + * Either way, you must not use the context to perform a + * handshake between calling mbedtls_ssl_setup() or + * mbedtls_ssl_session_reset() and calling this function. You + * may however call other setter functions in that time frame + * as indicated in the note below. + * + * \note Before or after calling this function successfully, you + * also need to configure some connection-specific callbacks + * and settings before you can use the connection again + * (unless they were already set before calling + * mbedtls_ssl_session_reset() and the values are suitable for + * the present connection). Specifically, you want to call + * at least mbedtls_ssl_set_bio() and + * mbedtls_ssl_set_timer_cb(). All other SSL setter functions + * are not necessary to call, either because they're only used + * in handshakes, or because the setting is already saved. You + * might choose to call them anyway, for example in order to + * share code between the cases of establishing a new + * connection and the case of loading an already-established + * connection. + * + * \note If you have new information about the path MTU, you want to + * call mbedtls_ssl_set_mtu() after calling this function, as + * otherwise this function would overwrite your + * newly-configured value with the value that was active when + * the context was saved. + * + * \note When this function returns an error code, it calls + * mbedtls_ssl_free() on \p ssl. In this case, you need to + * prepare the context with the usual sequence starting with a + * call to mbedtls_ssl_init() if you want to use it again. + * + * \param ssl The SSL context structure to be populated. It must have + * been prepared as described in the note above. + * \param buf The buffer holding the serialized connection data. It must + * be a readable buffer of at least \p len bytes. + * \param len The size of the serialized data in bytes. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_SSL_ALLOC_FAILED if memory allocation failed. + * \return #MBEDTLS_ERR_SSL_VERSION_MISMATCH if the serialized data + * comes from a different Mbed TLS version or build. + * \return #MBEDTLS_ERR_SSL_BAD_INPUT_DATA if input data is invalid. + */ +int mbedtls_ssl_context_load( mbedtls_ssl_context *ssl, + const unsigned char *buf, + size_t len ); +#endif /* MBEDTLS_SSL_CONTEXT_SERIALIZATION */ + /** * \brief Initialize an SSL configuration context * Just makes the context ready for * mbedtls_ssl_config_defaults() or mbedtls_ssl_config_free(). * * \note You need to call mbedtls_ssl_config_defaults() unless you - * manually set all of the relevent fields yourself. + * manually set all of the relevant fields yourself. * * \param conf SSL configuration context */ @@ -3249,6 +4399,27 @@ void mbedtls_ssl_session_init( mbedtls_ssl_session *session ); */ void mbedtls_ssl_session_free( mbedtls_ssl_session *session ); +/** + * \brief TLS-PRF function for key derivation. + * + * \param prf The tls_prf type function type to be used. + * \param secret Secret for the key derivation function. + * \param slen Length of the secret. + * \param label String label for the key derivation function, + * terminated with null character. + * \param random Random bytes. + * \param rlen Length of the random bytes buffer. + * \param dstbuf The buffer holding the derived key. + * \param dlen Length of the output buffer. + * + * \return 0 on success. An SSL specific error on failure. + */ +int mbedtls_ssl_tls_prf( const mbedtls_tls_prf_types prf, + const unsigned char *secret, size_t slen, + const char *label, + const unsigned char *random, size_t rlen, + unsigned char *dstbuf, size_t dlen ); + #ifdef __cplusplus } #endif diff --git a/Externals/mbedtls/include/mbedtls/ssl_cache.h b/Externals/mbedtls/include/mbedtls/ssl_cache.h index 52ba0948c55d..c6ef2960f4d6 100644 --- a/Externals/mbedtls/include/mbedtls/ssl_cache.h +++ b/Externals/mbedtls/include/mbedtls/ssl_cache.h @@ -4,7 +4,7 @@ * \brief SSL session cache implementation */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,22 +18,20 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_SSL_CACHE_H #define MBEDTLS_SSL_CACHE_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "ssl.h" +#include "mbedtls/ssl.h" #if defined(MBEDTLS_THREADING_C) -#include "threading.h" +#include "mbedtls/threading.h" #endif /** @@ -70,7 +68,8 @@ struct mbedtls_ssl_cache_entry mbedtls_time_t timestamp; /*!< entry timestamp */ #endif mbedtls_ssl_session session; /*!< entry session */ -#if defined(MBEDTLS_X509_CRT_PARSE_C) +#if defined(MBEDTLS_X509_CRT_PARSE_C) && \ + defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) mbedtls_x509_buf peer_cert; /*!< entry peer_cert */ #endif mbedtls_ssl_cache_entry *next; /*!< chain pointer */ diff --git a/Externals/mbedtls/include/mbedtls/ssl_ciphersuites.h b/Externals/mbedtls/include/mbedtls/ssl_ciphersuites.h index 71053e5ba71c..93c32a5edac0 100644 --- a/Externals/mbedtls/include/mbedtls/ssl_ciphersuites.h +++ b/Externals/mbedtls/include/mbedtls/ssl_ciphersuites.h @@ -4,7 +4,7 @@ * \brief SSL Ciphersuites for mbed TLS */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,21 +18,19 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_SSL_CIPHERSUITES_H #define MBEDTLS_SSL_CIPHERSUITES_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "pk.h" -#include "cipher.h" -#include "md.h" +#include "mbedtls/pk.h" +#include "mbedtls/cipher.h" +#include "mbedtls/md.h" #ifdef __cplusplus extern "C" { @@ -312,7 +310,7 @@ typedef enum { defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED +#define MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED #endif /* Key exchanges allowing client certificate requests */ @@ -322,28 +320,28 @@ typedef enum { defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__CERT_REQ_ALLOWED__ENABLED +#define MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED #endif /* Key exchanges involving server signature in ServerKeyExchange */ #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED +#define MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED #endif /* Key exchanges using ECDH */ #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED +#define MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED #endif /* Key exchanges that don't involve ephemeral keys */ #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ - defined(MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED + defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED) +#define MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED #endif /* Key exchanges that involve ephemeral keys */ @@ -353,7 +351,7 @@ typedef enum { defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED +#define MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED #endif /* Key exchanges using a PSK */ @@ -361,20 +359,20 @@ typedef enum { defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED +#define MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED #endif /* Key exchanges using DHE */ #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__SOME__DHE_ENABLED +#define MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED #endif /* Key exchanges using ECDHE */ #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED +#define MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED #endif typedef struct mbedtls_ssl_ciphersuite_t mbedtls_ssl_ciphersuite_t; @@ -417,7 +415,7 @@ mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_alg( const mbedtls_ssl_ciphers int mbedtls_ssl_ciphersuite_uses_ec( const mbedtls_ssl_ciphersuite_t *info ); int mbedtls_ssl_ciphersuite_uses_psk( const mbedtls_ssl_ciphersuite_t *info ); -#if defined(MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED) static inline int mbedtls_ssl_ciphersuite_has_pfs( const mbedtls_ssl_ciphersuite_t *info ) { switch( info->key_exchange ) @@ -434,9 +432,9 @@ static inline int mbedtls_ssl_ciphersuite_has_pfs( const mbedtls_ssl_ciphersuite return( 0 ); } } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED) static inline int mbedtls_ssl_ciphersuite_no_pfs( const mbedtls_ssl_ciphersuite_t *info ) { switch( info->key_exchange ) @@ -452,9 +450,9 @@ static inline int mbedtls_ssl_ciphersuite_no_pfs( const mbedtls_ssl_ciphersuite_ return( 0 ); } } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED) static inline int mbedtls_ssl_ciphersuite_uses_ecdh( const mbedtls_ssl_ciphersuite_t *info ) { switch( info->key_exchange ) @@ -467,7 +465,7 @@ static inline int mbedtls_ssl_ciphersuite_uses_ecdh( const mbedtls_ssl_ciphersui return( 0 ); } } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED */ static inline int mbedtls_ssl_ciphersuite_cert_req_allowed( const mbedtls_ssl_ciphersuite_t *info ) { @@ -486,7 +484,25 @@ static inline int mbedtls_ssl_ciphersuite_cert_req_allowed( const mbedtls_ssl_ci } } -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__DHE_ENABLED) +static inline int mbedtls_ssl_ciphersuite_uses_srv_cert( const mbedtls_ssl_ciphersuite_t *info ) +{ + switch( info->key_exchange ) + { + case MBEDTLS_KEY_EXCHANGE_RSA: + case MBEDTLS_KEY_EXCHANGE_RSA_PSK: + case MBEDTLS_KEY_EXCHANGE_DHE_RSA: + case MBEDTLS_KEY_EXCHANGE_ECDH_RSA: + case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA: + case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA: + case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA: + return( 1 ); + + default: + return( 0 ); + } +} + +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED) static inline int mbedtls_ssl_ciphersuite_uses_dhe( const mbedtls_ssl_ciphersuite_t *info ) { switch( info->key_exchange ) @@ -499,9 +515,9 @@ static inline int mbedtls_ssl_ciphersuite_uses_dhe( const mbedtls_ssl_ciphersuit return( 0 ); } } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__DHE_ENABLED) */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED) */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED) static inline int mbedtls_ssl_ciphersuite_uses_ecdhe( const mbedtls_ssl_ciphersuite_t *info ) { switch( info->key_exchange ) @@ -515,9 +531,9 @@ static inline int mbedtls_ssl_ciphersuite_uses_ecdhe( const mbedtls_ssl_ciphersu return( 0 ); } } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED) */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED) */ -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED) static inline int mbedtls_ssl_ciphersuite_uses_server_signature( const mbedtls_ssl_ciphersuite_t *info ) { switch( info->key_exchange ) @@ -531,7 +547,7 @@ static inline int mbedtls_ssl_ciphersuite_uses_server_signature( const mbedtls_s return( 0 ); } } -#endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED */ #ifdef __cplusplus } diff --git a/Externals/mbedtls/include/mbedtls/ssl_cookie.h b/Externals/mbedtls/include/mbedtls/ssl_cookie.h index e34760ae85ea..0a238708e598 100644 --- a/Externals/mbedtls/include/mbedtls/ssl_cookie.h +++ b/Externals/mbedtls/include/mbedtls/ssl_cookie.h @@ -4,7 +4,7 @@ * \brief DTLS cookie callbacks implementation */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,22 +18,20 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_SSL_COOKIE_H #define MBEDTLS_SSL_COOKIE_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "ssl.h" +#include "mbedtls/ssl.h" #if defined(MBEDTLS_THREADING_C) -#include "threading.h" +#include "mbedtls/threading.h" #endif /** diff --git a/Externals/mbedtls/include/mbedtls/ssl_internal.h b/Externals/mbedtls/include/mbedtls/ssl_internal.h index bd5ad94dbf06..6913dc0f6680 100644 --- a/Externals/mbedtls/include/mbedtls/ssl_internal.h +++ b/Externals/mbedtls/include/mbedtls/ssl_internal.h @@ -4,7 +4,7 @@ * \brief Internal functions shared by the SSL modules */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,41 +18,48 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_SSL_INTERNAL_H #define MBEDTLS_SSL_INTERNAL_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "ssl.h" -#include "cipher.h" +#include "mbedtls/ssl.h" +#include "mbedtls/cipher.h" + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "psa/crypto.h" +#endif #if defined(MBEDTLS_MD5_C) -#include "md5.h" +#include "mbedtls/md5.h" #endif #if defined(MBEDTLS_SHA1_C) -#include "sha1.h" +#include "mbedtls/sha1.h" #endif #if defined(MBEDTLS_SHA256_C) -#include "sha256.h" +#include "mbedtls/sha256.h" #endif #if defined(MBEDTLS_SHA512_C) -#include "sha512.h" +#include "mbedtls/sha512.h" #endif #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) -#include "ecjpake.h" +#include "mbedtls/ecjpake.h" #endif +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "psa/crypto.h" +#include "mbedtls/psa_util.h" +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + #if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ !defined(inline) && !defined(__cplusplus) #define inline __inline @@ -104,7 +111,7 @@ defined(MBEDTLS_SSL_CLI_C) && \ defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) -#define MBEDTLS_SSL__ECP_RESTARTABLE +#define MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED #endif #define MBEDTLS_SSL_INITIAL_HANDSHAKE 0 @@ -137,7 +144,30 @@ #define MBEDTLS_SSL_COMPRESSION_ADD 0 #endif -#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_MODE_CBC) +/* This macro determines whether CBC is supported. */ +#if defined(MBEDTLS_CIPHER_MODE_CBC) && \ + ( defined(MBEDTLS_AES_C) || \ + defined(MBEDTLS_CAMELLIA_C) || \ + defined(MBEDTLS_ARIA_C) || \ + defined(MBEDTLS_DES_C) ) +#define MBEDTLS_SSL_SOME_SUITES_USE_CBC +#endif + +/* This macro determines whether the CBC construct used in TLS 1.0-1.2 (as + * opposed to the very different CBC construct used in SSLv3) is supported. */ +#if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC) && \ + ( defined(MBEDTLS_SSL_PROTO_TLS1) || \ + defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ + defined(MBEDTLS_SSL_PROTO_TLS1_2) ) +#define MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC +#endif + +#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) || \ + defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC) +#define MBEDTLS_SSL_SOME_MODES_USE_MAC +#endif + +#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC) /* Ciphersuites using HMAC */ #if defined(MBEDTLS_SHA512_C) #define MBEDTLS_SSL_MAC_ADD 48 /* SHA-384 used for HMAC */ @@ -146,7 +176,7 @@ #else #define MBEDTLS_SSL_MAC_ADD 20 /* SHA-1 used for HMAC */ #endif -#else +#else /* MBEDTLS_SSL_SOME_MODES_USE_MAC */ /* AEAD ciphersuites: GCM and CCM use a 128 bits tag */ #define MBEDTLS_SSL_MAC_ADD 16 #endif @@ -157,10 +187,17 @@ #define MBEDTLS_SSL_PADDING_ADD 0 #endif +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) +#define MBEDTLS_SSL_MAX_CID_EXPANSION MBEDTLS_SSL_CID_PADDING_GRANULARITY +#else +#define MBEDTLS_SSL_MAX_CID_EXPANSION 0 +#endif + #define MBEDTLS_SSL_PAYLOAD_OVERHEAD ( MBEDTLS_SSL_COMPRESSION_ADD + \ MBEDTLS_MAX_IV_LENGTH + \ MBEDTLS_SSL_MAC_ADD + \ - MBEDTLS_SSL_PADDING_ADD \ + MBEDTLS_SSL_PADDING_ADD + \ + MBEDTLS_SSL_MAX_CID_EXPANSION \ ) #define MBEDTLS_SSL_IN_PAYLOAD_LEN ( MBEDTLS_SSL_PAYLOAD_OVERHEAD + \ @@ -182,6 +219,12 @@ : ( MBEDTLS_SSL_IN_CONTENT_LEN ) \ ) +/* Maximum size in bytes of list in sig-hash algorithm ext., RFC 5246 */ +#define MBEDTLS_SSL_MAX_SIG_HASH_ALG_LIST_LEN 65534 + +/* Maximum size in bytes of list in supported elliptic curve ext., RFC 4492 */ +#define MBEDTLS_SSL_MAX_CURVE_LIST_LEN 65535 + /* * Check that we obey the standard's message size bounds */ @@ -213,11 +256,49 @@ implicit sequence number. */ #define MBEDTLS_SSL_HEADER_LEN 13 +#if !defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) #define MBEDTLS_SSL_IN_BUFFER_LEN \ ( ( MBEDTLS_SSL_HEADER_LEN ) + ( MBEDTLS_SSL_IN_PAYLOAD_LEN ) ) +#else +#define MBEDTLS_SSL_IN_BUFFER_LEN \ + ( ( MBEDTLS_SSL_HEADER_LEN ) + ( MBEDTLS_SSL_IN_PAYLOAD_LEN ) \ + + ( MBEDTLS_SSL_CID_IN_LEN_MAX ) ) +#endif +#if !defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) #define MBEDTLS_SSL_OUT_BUFFER_LEN \ ( ( MBEDTLS_SSL_HEADER_LEN ) + ( MBEDTLS_SSL_OUT_PAYLOAD_LEN ) ) +#else +#define MBEDTLS_SSL_OUT_BUFFER_LEN \ + ( ( MBEDTLS_SSL_HEADER_LEN ) + ( MBEDTLS_SSL_OUT_PAYLOAD_LEN ) \ + + ( MBEDTLS_SSL_CID_OUT_LEN_MAX ) ) +#endif + +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) +static inline size_t mbedtls_ssl_get_output_buflen( const mbedtls_ssl_context *ctx ) +{ +#if defined (MBEDTLS_SSL_DTLS_CONNECTION_ID) + return mbedtls_ssl_get_output_max_frag_len( ctx ) + + MBEDTLS_SSL_HEADER_LEN + MBEDTLS_SSL_PAYLOAD_OVERHEAD + + MBEDTLS_SSL_CID_OUT_LEN_MAX; +#else + return mbedtls_ssl_get_output_max_frag_len( ctx ) + + MBEDTLS_SSL_HEADER_LEN + MBEDTLS_SSL_PAYLOAD_OVERHEAD; +#endif +} + +static inline size_t mbedtls_ssl_get_input_buflen( const mbedtls_ssl_context *ctx ) +{ +#if defined (MBEDTLS_SSL_DTLS_CONNECTION_ID) + return mbedtls_ssl_get_input_max_frag_len( ctx ) + + MBEDTLS_SSL_HEADER_LEN + MBEDTLS_SSL_PAYLOAD_OVERHEAD + + MBEDTLS_SSL_CID_IN_LEN_MAX; +#else + return mbedtls_ssl_get_input_max_frag_len( ctx ) + + MBEDTLS_SSL_HEADER_LEN + MBEDTLS_SSL_PAYLOAD_OVERHEAD; +#endif +} +#endif #ifdef MBEDTLS_ZLIB_SUPPORT /* Compression buffer holds both IN and OUT buffers, so should be size of the larger */ @@ -236,12 +317,47 @@ #define MBEDTLS_TLS_EXT_SUPPORTED_POINT_FORMATS_PRESENT (1 << 0) #define MBEDTLS_TLS_EXT_ECJPAKE_KKPP_OK (1 << 1) +/** + * \brief This function checks if the remaining size in a buffer is + * greater or equal than a needed space. + * + * \param cur Pointer to the current position in the buffer. + * \param end Pointer to one past the end of the buffer. + * \param need Needed space in bytes. + * + * \return Zero if the needed space is available in the buffer, non-zero + * otherwise. + */ +static inline int mbedtls_ssl_chk_buf_ptr( const uint8_t *cur, + const uint8_t *end, size_t need ) +{ + return( ( cur > end ) || ( need > (size_t)( end - cur ) ) ); +} + +/** + * \brief This macro checks if the remaining size in a buffer is + * greater or equal than a needed space. If it is not the case, + * it returns an SSL_BUFFER_TOO_SMALL error. + * + * \param cur Pointer to the current position in the buffer. + * \param end Pointer to one past the end of the buffer. + * \param need Needed space in bytes. + * + */ +#define MBEDTLS_SSL_CHK_BUF_PTR( cur, end, need ) \ + do { \ + if( mbedtls_ssl_chk_buf_ptr( ( cur ), ( end ), ( need ) ) != 0 ) \ + { \ + return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); \ + } \ + } while( 0 ) + #ifdef __cplusplus extern "C" { #endif #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) /* * Abstraction for a grid of allowed signature-hash-algorithm pairs. */ @@ -256,7 +372,54 @@ struct mbedtls_ssl_sig_hash_set_t mbedtls_md_type_t ecdsa; }; #endif /* MBEDTLS_SSL_PROTO_TLS1_2 && - MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ + MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ + +typedef int mbedtls_ssl_tls_prf_cb( const unsigned char *secret, size_t slen, + const char *label, + const unsigned char *random, size_t rlen, + unsigned char *dstbuf, size_t dlen ); + +/* cipher.h exports the maximum IV, key and block length from + * all ciphers enabled in the config, regardless of whether those + * ciphers are actually usable in SSL/TLS. Notably, XTS is enabled + * in the default configuration and uses 64 Byte keys, but it is + * not used for record protection in SSL/TLS. + * + * In order to prevent unnecessary inflation of key structures, + * we introduce SSL-specific variants of the max-{key,block,IV} + * macros here which are meant to only take those ciphers into + * account which can be negotiated in SSL/TLS. + * + * Since the current definitions of MBEDTLS_MAX_{KEY|BLOCK|IV}_LENGTH + * in cipher.h are rough overapproximations of the real maxima, here + * we content ourselves with replicating those overapproximations + * for the maximum block and IV length, and excluding XTS from the + * computation of the maximum key length. */ +#define MBEDTLS_SSL_MAX_BLOCK_LENGTH 16 +#define MBEDTLS_SSL_MAX_IV_LENGTH 16 +#define MBEDTLS_SSL_MAX_KEY_LENGTH 32 + +/** + * \brief The data structure holding the cryptographic material (key and IV) + * used for record protection in TLS 1.3. + */ +struct mbedtls_ssl_key_set +{ + /*! The key for client->server records. */ + unsigned char client_write_key[ MBEDTLS_SSL_MAX_KEY_LENGTH ]; + /*! The key for server->client records. */ + unsigned char server_write_key[ MBEDTLS_SSL_MAX_KEY_LENGTH ]; + /*! The IV for client->server records. */ + unsigned char client_write_iv[ MBEDTLS_SSL_MAX_IV_LENGTH ]; + /*! The IV for server->client records. */ + unsigned char server_write_iv[ MBEDTLS_SSL_MAX_IV_LENGTH ]; + + size_t key_len; /*!< The length of client_write_key and + * server_write_key, in Bytes. */ + size_t iv_len; /*!< The length of client_write_iv and + * server_write_iv, in Bytes. */ +}; +typedef struct mbedtls_ssl_key_set mbedtls_ssl_key_set; /* * This structure contains the parameters only needed during handshake. @@ -267,16 +430,80 @@ struct mbedtls_ssl_handshake_params * Handshake specific crypto variables */ -#if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + uint8_t max_major_ver; /*!< max. major version client*/ + uint8_t max_minor_ver; /*!< max. minor version client*/ + uint8_t resume; /*!< session resume indicator*/ + uint8_t cli_exts; /*!< client extension presence*/ + +#if defined(MBEDTLS_X509_CRT_PARSE_C) && \ + defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) + uint8_t sni_authmode; /*!< authmode from SNI callback */ +#endif + +#if defined(MBEDTLS_SSL_SESSION_TICKETS) + uint8_t new_session_ticket; /*!< use NewSessionTicket? */ +#endif /* MBEDTLS_SSL_SESSION_TICKETS */ + +#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) + uint8_t extended_ms; /*!< use Extended Master Secret? */ +#endif + +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) + uint8_t async_in_progress; /*!< an asynchronous operation is in progress */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + unsigned char retransmit_state; /*!< Retransmission state */ +#endif + +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) + uint8_t ecrs_enabled; /*!< Handshake supports EC restart? */ + enum { /* this complements ssl->state with info on intra-state operations */ + ssl_ecrs_none = 0, /*!< nothing going on (yet) */ + ssl_ecrs_crt_verify, /*!< Certificate: crt_verify() */ + ssl_ecrs_ske_start_processing, /*!< ServerKeyExchange: pk_verify() */ + ssl_ecrs_cke_ecdh_calc_secret, /*!< ClientKeyExchange: ECDH step 2 */ + ssl_ecrs_crt_vrfy_sign, /*!< CertificateVerify: pk_sign() */ + } ecrs_state; /*!< current (or last) operation */ + mbedtls_x509_crt *ecrs_peer_cert; /*!< The peer's CRT chain. */ + size_t ecrs_n; /*!< place for saving a length */ +#endif + +#if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) mbedtls_ssl_sig_hash_set_t hash_algs; /*!< Set of suitable sig-hash pairs */ #endif + + size_t pmslen; /*!< premaster length */ + + mbedtls_ssl_ciphersuite_t const *ciphersuite_info; + + void (*update_checksum)(mbedtls_ssl_context *, const unsigned char *, size_t); + void (*calc_verify)(const mbedtls_ssl_context *, unsigned char *, size_t *); + void (*calc_finished)(mbedtls_ssl_context *, unsigned char *, int); + mbedtls_ssl_tls_prf_cb *tls_prf; + #if defined(MBEDTLS_DHM_C) mbedtls_dhm_context dhm_ctx; /*!< DHM key exchange */ #endif -#if defined(MBEDTLS_ECDH_C) + +/* Adding guard for MBEDTLS_ECDSA_C to ensure no compile errors due + * to guards also being in ssl_srv.c and ssl_cli.c. There is a gap + * in functionality that access to ecdh_ctx structure is needed for + * MBEDTLS_ECDSA_C which does not seem correct. + */ +#if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) mbedtls_ecdh_context ecdh_ctx; /*!< ECDH key exchange */ -#endif + +#if defined(MBEDTLS_USE_PSA_CRYPTO) + psa_key_type_t ecdh_psa_type; + uint16_t ecdh_bits; + psa_key_id_t ecdh_psa_privkey; + unsigned char ecdh_psa_peerkey[MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH]; + size_t ecdh_psa_peerkey_len; +#endif /* MBEDTLS_USE_PSA_CRYPTO */ +#endif /* MBEDTLS_ECDH_C || MBEDTLS_ECDSA_C */ + #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) mbedtls_ecjpake_context ecjpake_ctx; /*!< EC J-PAKE key exchange */ #if defined(MBEDTLS_SSL_CLI_C) @@ -284,56 +511,39 @@ struct mbedtls_ssl_handshake_params size_t ecjpake_cache_len; /*!< Length of cached data */ #endif #endif /* MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED */ -#if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ + +#if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) const mbedtls_ecp_curve_info **curves; /*!< Supported elliptic curves */ #endif -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) + +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) +#if defined(MBEDTLS_USE_PSA_CRYPTO) + psa_key_id_t psk_opaque; /*!< Opaque PSK from the callback */ +#endif /* MBEDTLS_USE_PSA_CRYPTO */ unsigned char *psk; /*!< PSK from the callback */ size_t psk_len; /*!< Length of PSK from callback */ -#endif +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ + #if defined(MBEDTLS_X509_CRT_PARSE_C) mbedtls_ssl_key_cert *key_cert; /*!< chosen key/cert pair (server) */ #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) - int sni_authmode; /*!< authmode from SNI callback */ mbedtls_ssl_key_cert *sni_key_cert; /*!< key/cert list from SNI */ mbedtls_x509_crt *sni_ca_chain; /*!< trusted CAs from SNI callback */ mbedtls_x509_crl *sni_ca_crl; /*!< trusted CAs CRLs from SNI */ #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - int ecrs_enabled; /*!< Handshake supports EC restart? */ + +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) mbedtls_x509_crt_restart_ctx ecrs_ctx; /*!< restart context */ - enum { /* this complements ssl->state with info on intra-state operations */ - ssl_ecrs_none = 0, /*!< nothing going on (yet) */ - ssl_ecrs_crt_verify, /*!< Certificate: crt_verify() */ - ssl_ecrs_ske_start_processing, /*!< ServerKeyExchange: pk_verify() */ - ssl_ecrs_cke_ecdh_calc_secret, /*!< ClientKeyExchange: ECDH step 2 */ - ssl_ecrs_crt_vrfy_sign, /*!< CertificateVerify: pk_sign() */ - } ecrs_state; /*!< current (or last) operation */ - size_t ecrs_n; /*!< place for saving a length */ #endif -#if defined(MBEDTLS_SSL_PROTO_DTLS) - unsigned int out_msg_seq; /*!< Outgoing handshake sequence number */ - unsigned int in_msg_seq; /*!< Incoming handshake sequence number */ - unsigned char *verify_cookie; /*!< Cli: HelloVerifyRequest cookie - Srv: unused */ - unsigned char verify_cookie_len; /*!< Cli: cookie length - Srv: flag for sending a cookie */ - - uint32_t retransmit_timeout; /*!< Current value of timeout */ - unsigned char retransmit_state; /*!< Retransmission state */ - mbedtls_ssl_flight_item *flight; /*!< Current outgoing flight */ - mbedtls_ssl_flight_item *cur_msg; /*!< Current message in flight */ - unsigned char *cur_msg_p; /*!< Position in current message */ - unsigned int in_flight_start_seq; /*!< Minimum message sequence in the - flight being received */ - mbedtls_ssl_transform *alt_transform_out; /*!< Alternative transform for - resending messages */ - unsigned char alt_out_ctr[8]; /*!< Alternative record epoch/counter - for resending messages */ +#if defined(MBEDTLS_X509_CRT_PARSE_C) && \ + !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + mbedtls_pk_context peer_pubkey; /*!< The public key from the peer. */ +#endif /* MBEDTLS_X509_CRT_PARSE_C && !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) struct { size_t total_bytes_buffered; /*!< Cumulative size of heap allocated @@ -360,6 +570,37 @@ struct mbedtls_ssl_handshake_params } buffering; + unsigned int out_msg_seq; /*!< Outgoing handshake sequence number */ + unsigned int in_msg_seq; /*!< Incoming handshake sequence number */ + + unsigned char *verify_cookie; /*!< Cli: HelloVerifyRequest cookie + Srv: unused */ + unsigned char verify_cookie_len; /*!< Cli: cookie length + Srv: flag for sending a cookie */ + + uint32_t retransmit_timeout; /*!< Current value of timeout */ + mbedtls_ssl_flight_item *flight; /*!< Current outgoing flight */ + mbedtls_ssl_flight_item *cur_msg; /*!< Current message in flight */ + unsigned char *cur_msg_p; /*!< Position in current message */ + unsigned int in_flight_start_seq; /*!< Minimum message sequence in the + flight being received */ + mbedtls_ssl_transform *alt_transform_out; /*!< Alternative transform for + resending messages */ + unsigned char alt_out_ctr[8]; /*!< Alternative record epoch/counter + for resending messages */ + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + /* The state of CID configuration in this handshake. */ + + uint8_t cid_in_use; /*!< This indicates whether the use of the CID extension + * has been negotiated. Possible values are + * #MBEDTLS_SSL_CID_ENABLED and + * #MBEDTLS_SSL_CID_DISABLED. */ + unsigned char peer_cid[ MBEDTLS_SSL_CID_OUT_LEN_MAX ]; /*! The peer's CID */ + uint8_t peer_cid_len; /*!< The length of + * \c peer_cid. */ +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + uint16_t mtu; /*!< Handshake mtu, used to fragment outgoing messages */ #endif /* MBEDTLS_SSL_PROTO_DTLS */ @@ -368,47 +609,30 @@ struct mbedtls_ssl_handshake_params */ #if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \ defined(MBEDTLS_SSL_PROTO_TLS1_1) - mbedtls_md5_context fin_md5; - mbedtls_sha1_context fin_sha1; + mbedtls_md5_context fin_md5; + mbedtls_sha1_context fin_sha1; #endif #if defined(MBEDTLS_SSL_PROTO_TLS1_2) #if defined(MBEDTLS_SHA256_C) +#if defined(MBEDTLS_USE_PSA_CRYPTO) + psa_hash_operation_t fin_sha256_psa; +#else mbedtls_sha256_context fin_sha256; #endif +#endif #if defined(MBEDTLS_SHA512_C) +#if defined(MBEDTLS_USE_PSA_CRYPTO) + psa_hash_operation_t fin_sha384_psa; +#else mbedtls_sha512_context fin_sha512; #endif +#endif #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ - void (*update_checksum)(mbedtls_ssl_context *, const unsigned char *, size_t); - void (*calc_verify)(mbedtls_ssl_context *, unsigned char *); - void (*calc_finished)(mbedtls_ssl_context *, unsigned char *, int); - int (*tls_prf)(const unsigned char *, size_t, const char *, - const unsigned char *, size_t, - unsigned char *, size_t); - - size_t pmslen; /*!< premaster length */ - unsigned char randbytes[64]; /*!< random bytes */ unsigned char premaster[MBEDTLS_PREMASTER_SIZE]; /*!< premaster secret */ - int resume; /*!< session resume indicator*/ - int max_major_ver; /*!< max. major version client*/ - int max_minor_ver; /*!< max. minor version client*/ - int cli_exts; /*!< client extension presence*/ - -#if defined(MBEDTLS_SSL_SESSION_TICKETS) - int new_session_ticket; /*!< use NewSessionTicket? */ -#endif /* MBEDTLS_SSL_SESSION_TICKETS */ -#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) - int extended_ms; /*!< use Extended Master Secret? */ -#endif - -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) - unsigned int async_in_progress : 1; /*!< an asynchronous operation is in progress */ -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ - #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) /** Asynchronous operation context. This field is meant for use by the * asynchronous operation callbacks (mbedtls_ssl_config::f_async_sign_start, @@ -422,25 +646,120 @@ struct mbedtls_ssl_handshake_params typedef struct mbedtls_ssl_hs_buffer mbedtls_ssl_hs_buffer; /* - * This structure contains a full set of runtime transform parameters - * either in negotiation or active. + * Representation of decryption/encryption transformations on records + * + * There are the following general types of record transformations: + * - Stream transformations (TLS versions <= 1.2 only) + * Transformation adding a MAC and applying a stream-cipher + * to the authenticated message. + * - CBC block cipher transformations ([D]TLS versions <= 1.2 only) + * In addition to the distinction of the order of encryption and + * authentication, there's a fundamental difference between the + * handling in SSL3 & TLS 1.0 and TLS 1.1 and TLS 1.2: For SSL3 + * and TLS 1.0, the final IV after processing a record is used + * as the IV for the next record. No explicit IV is contained + * in an encrypted record. The IV for the first record is extracted + * at key extraction time. In contrast, for TLS 1.1 and 1.2, no + * IV is generated at key extraction time, but every encrypted + * record is explicitly prefixed by the IV with which it was encrypted. + * - AEAD transformations ([D]TLS versions >= 1.2 only) + * These come in two fundamentally different versions, the first one + * used in TLS 1.2, excluding ChaChaPoly ciphersuites, and the second + * one used for ChaChaPoly ciphersuites in TLS 1.2 as well as for TLS 1.3. + * In the first transformation, the IV to be used for a record is obtained + * as the concatenation of an explicit, static 4-byte IV and the 8-byte + * record sequence number, and explicitly prepending this sequence number + * to the encrypted record. In contrast, in the second transformation + * the IV is obtained by XOR'ing a static IV obtained at key extraction + * time with the 8-byte record sequence number, without prepending the + * latter to the encrypted record. + * + * Additionally, DTLS 1.2 + CID as well as TLS 1.3 use an inner plaintext + * which allows to add flexible length padding and to hide a record's true + * content type. + * + * In addition to type and version, the following parameters are relevant: + * - The symmetric cipher algorithm to be used. + * - The (static) encryption/decryption keys for the cipher. + * - For stream/CBC, the type of message digest to be used. + * - For stream/CBC, (static) encryption/decryption keys for the digest. + * - For AEAD transformations, the size (potentially 0) of an explicit, + * random initialization vector placed in encrypted records. + * - For some transformations (currently AEAD and CBC in SSL3 and TLS 1.0) + * an implicit IV. It may be static (e.g. AEAD) or dynamic (e.g. CBC) + * and (if present) is combined with the explicit IV in a transformation- + * dependent way (e.g. appending in TLS 1.2 and XOR'ing in TLS 1.3). + * - For stream/CBC, a flag determining the order of encryption and MAC. + * - The details of the transformation depend on the SSL/TLS version. + * - The length of the authentication tag. + * + * Note: Except for CBC in SSL3 and TLS 1.0, these parameters are + * constant across multiple encryption/decryption operations. + * For CBC, the implicit IV needs to be updated after each + * operation. + * + * The struct below refines this abstract view as follows: + * - The cipher underlying the transformation is managed in + * cipher contexts cipher_ctx_{enc/dec}, which must have the + * same cipher type. The mode of these cipher contexts determines + * the type of the transformation in the sense above: e.g., if + * the type is MBEDTLS_CIPHER_AES_256_CBC resp. MBEDTLS_CIPHER_AES_192_GCM + * then the transformation has type CBC resp. AEAD. + * - The cipher keys are never stored explicitly but + * are maintained within cipher_ctx_{enc/dec}. + * - For stream/CBC transformations, the message digest contexts + * used for the MAC's are stored in md_ctx_{enc/dec}. These contexts + * are unused for AEAD transformations. + * - For stream/CBC transformations and versions > SSL3, the + * MAC keys are not stored explicitly but maintained within + * md_ctx_{enc/dec}. + * - For stream/CBC transformations and version SSL3, the MAC + * keys are stored explicitly in mac_enc, mac_dec and have + * a fixed size of 20 bytes. These fields are unused for + * AEAD transformations or transformations >= TLS 1.0. + * - For transformations using an implicit IV maintained within + * the transformation context, its contents are stored within + * iv_{enc/dec}. + * - The value of ivlen indicates the length of the IV. + * This is redundant in case of stream/CBC transformations + * which always use 0 resp. the cipher's block length as the + * IV length, but is needed for AEAD ciphers and may be + * different from the underlying cipher's block length + * in this case. + * - The field fixed_ivlen is nonzero for AEAD transformations only + * and indicates the length of the static part of the IV which is + * constant throughout the communication, and which is stored in + * the first fixed_ivlen bytes of the iv_{enc/dec} arrays. + * Note: For CBC in SSL3 and TLS 1.0, the fields iv_{enc/dec} + * still store IV's for continued use across multiple transformations, + * so it is not true that fixed_ivlen == 0 means that iv_{enc/dec} are + * not being used! + * - minor_ver denotes the SSL/TLS version + * - For stream/CBC transformations, maclen denotes the length of the + * authentication tag, while taglen is unused and 0. + * - For AEAD transformations, taglen denotes the length of the + * authentication tag, while maclen is unused and 0. + * - For CBC transformations, encrypt_then_mac determines the + * order of encryption and authentication. This field is unused + * in other transformations. + * */ struct mbedtls_ssl_transform { /* * Session specific crypto layer */ - const mbedtls_ssl_ciphersuite_t *ciphersuite_info; - /*!< Chosen cipersuite_info */ - unsigned int keylen; /*!< symmetric key length (bytes) */ size_t minlen; /*!< min. ciphertext length */ size_t ivlen; /*!< IV length */ size_t fixed_ivlen; /*!< Fixed part of IV (AEAD) */ - size_t maclen; /*!< MAC length */ + size_t maclen; /*!< MAC(CBC) len */ + size_t taglen; /*!< TAG(AEAD) len */ unsigned char iv_enc[16]; /*!< IV (encryption) */ unsigned char iv_dec[16]; /*!< IV (decryption) */ +#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC) + #if defined(MBEDTLS_SSL_PROTO_SSL3) /* Needed only for SSL v3.0 secret */ unsigned char mac_enc[20]; /*!< SSL v3.0 secret (enc) */ @@ -450,8 +769,22 @@ struct mbedtls_ssl_transform mbedtls_md_context_t md_ctx_enc; /*!< MAC (encryption) */ mbedtls_md_context_t md_ctx_dec; /*!< MAC (decryption) */ +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) + int encrypt_then_mac; /*!< flag for EtM activation */ +#endif + +#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */ + mbedtls_cipher_context_t cipher_ctx_enc; /*!< encryption context */ mbedtls_cipher_context_t cipher_ctx_dec; /*!< decryption context */ + int minor_ver; + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + uint8_t in_cid_len; + uint8_t out_cid_len; + unsigned char in_cid [ MBEDTLS_SSL_CID_OUT_LEN_MAX ]; + unsigned char out_cid[ MBEDTLS_SSL_CID_OUT_LEN_MAX ]; +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ /* * Session specific compression layer @@ -460,8 +793,83 @@ struct mbedtls_ssl_transform z_stream ctx_deflate; /*!< compression context */ z_stream ctx_inflate; /*!< decompression context */ #endif + +#if defined(MBEDTLS_SSL_CONTEXT_SERIALIZATION) + /* We need the Hello random bytes in order to re-derive keys from the + * Master Secret and other session info, see ssl_populate_transform() */ + unsigned char randbytes[64]; /*!< ServerHello.random+ClientHello.random */ +#endif /* MBEDTLS_SSL_CONTEXT_SERIALIZATION */ }; +/* + * Return 1 if the transform uses an AEAD cipher, 0 otherwise. + * Equivalently, return 0 if a separate MAC is used, 1 otherwise. + */ +static inline int mbedtls_ssl_transform_uses_aead( + const mbedtls_ssl_transform *transform ) +{ +#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC) + return( transform->maclen == 0 && transform->taglen != 0 ); +#else + (void) transform; + return( 1 ); +#endif +} + +/* + * Internal representation of record frames + * + * Instances come in two flavors: + * (1) Encrypted + * These always have data_offset = 0 + * (2) Unencrypted + * These have data_offset set to the amount of + * pre-expansion during record protection. Concretely, + * this is the length of the fixed part of the explicit IV + * used for encryption, or 0 if no explicit IV is used + * (e.g. for CBC in TLS 1.0, or stream ciphers). + * + * The reason for the data_offset in the unencrypted case + * is to allow for in-place conversion of an unencrypted to + * an encrypted record. If the offset wasn't included, the + * encrypted content would need to be shifted afterwards to + * make space for the fixed IV. + * + */ +#if MBEDTLS_SSL_CID_OUT_LEN_MAX > MBEDTLS_SSL_CID_IN_LEN_MAX +#define MBEDTLS_SSL_CID_LEN_MAX MBEDTLS_SSL_CID_OUT_LEN_MAX +#else +#define MBEDTLS_SSL_CID_LEN_MAX MBEDTLS_SSL_CID_IN_LEN_MAX +#endif + +typedef struct +{ + uint8_t ctr[8]; /* In TLS: The implicit record sequence number. + * In DTLS: The 2-byte epoch followed by + * the 6-byte sequence number. + * This is stored as a raw big endian byte array + * as opposed to a uint64_t because we rarely + * need to perform arithmetic on this, but do + * need it as a Byte array for the purpose of + * MAC computations. */ + uint8_t type; /* The record content type. */ + uint8_t ver[2]; /* SSL/TLS version as present on the wire. + * Convert to internal presentation of versions + * using mbedtls_ssl_read_version() and + * mbedtls_ssl_write_version(). + * Keep wire-format for MAC computations. */ + + unsigned char *buf; /* Memory buffer enclosing the record content */ + size_t buf_len; /* Buffer length */ + size_t data_offset; /* Offset of record content */ + size_t data_len; /* Length of record content */ + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + uint8_t cid_len; /* Length of the CID (0 if not present) */ + unsigned char cid[ MBEDTLS_SSL_CID_LEN_MAX ]; /* The CID */ +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ +} mbedtls_record; + #if defined(MBEDTLS_X509_CRT_PARSE_C) /* * List of certificate + private key pairs @@ -488,7 +896,7 @@ struct mbedtls_ssl_flight_item #endif /* MBEDTLS_SSL_PROTO_DTLS */ #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) /* Find an entry in a signature-hash set matching a given hash algorithm. */ mbedtls_md_type_t mbedtls_ssl_sig_hash_set_find( mbedtls_ssl_sig_hash_set_t *set, @@ -508,7 +916,7 @@ static inline void mbedtls_ssl_sig_hash_set_init( mbedtls_ssl_sig_hash_set_t *se } #endif /* MBEDTLS_SSL_PROTO_TLS1_2) && - MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ + MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ /** * \brief Free referenced items in an SSL transform context and clear @@ -635,9 +1043,62 @@ int mbedtls_ssl_write_finished( mbedtls_ssl_context *ssl ); void mbedtls_ssl_optimize_checksum( mbedtls_ssl_context *ssl, const mbedtls_ssl_ciphersuite_t *ciphersuite_info ); -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) int mbedtls_ssl_psk_derive_premaster( mbedtls_ssl_context *ssl, mbedtls_key_exchange_type_t key_ex ); -#endif + +/** + * Get the first defined PSK by order of precedence: + * 1. handshake PSK set by \c mbedtls_ssl_set_hs_psk() in the PSK callback + * 2. static PSK configured by \c mbedtls_ssl_conf_psk() + * Return a code and update the pair (PSK, PSK length) passed to this function + */ +static inline int mbedtls_ssl_get_psk( const mbedtls_ssl_context *ssl, + const unsigned char **psk, size_t *psk_len ) +{ + if( ssl->handshake->psk != NULL && ssl->handshake->psk_len > 0 ) + { + *psk = ssl->handshake->psk; + *psk_len = ssl->handshake->psk_len; + } + + else if( ssl->conf->psk != NULL && ssl->conf->psk_len > 0 ) + { + *psk = ssl->conf->psk; + *psk_len = ssl->conf->psk_len; + } + + else + { + *psk = NULL; + *psk_len = 0; + return( MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED ); + } + + return( 0 ); +} + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +/** + * Get the first defined opaque PSK by order of precedence: + * 1. handshake PSK set by \c mbedtls_ssl_set_hs_psk_opaque() in the PSK + * callback + * 2. static PSK configured by \c mbedtls_ssl_conf_psk_opaque() + * Return an opaque PSK + */ +static inline psa_key_id_t mbedtls_ssl_get_opaque_psk( + const mbedtls_ssl_context *ssl ) +{ + if( ! mbedtls_svc_key_id_is_null( ssl->handshake->psk_opaque ) ) + return( ssl->handshake->psk_opaque ); + + if( ! mbedtls_svc_key_id_is_null( ssl->conf->psk_opaque ) ) + return( ssl->conf->psk_opaque ); + + return( MBEDTLS_SVC_KEY_ID_INIT ); +} +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ #if defined(MBEDTLS_PK_C) unsigned char mbedtls_ssl_sig_from_pk( mbedtls_pk_context *pk ); @@ -653,11 +1114,28 @@ int mbedtls_ssl_set_calc_verify_md( mbedtls_ssl_context *ssl, int md ); int mbedtls_ssl_check_curve( const mbedtls_ssl_context *ssl, mbedtls_ecp_group_id grp_id ); #endif -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) int mbedtls_ssl_check_sig_hash( const mbedtls_ssl_context *ssl, mbedtls_md_type_t md ); #endif +#if defined(MBEDTLS_SSL_DTLS_SRTP) +static inline mbedtls_ssl_srtp_profile mbedtls_ssl_check_srtp_profile_value + ( const uint16_t srtp_profile_value ) +{ + switch( srtp_profile_value ) + { + case MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80: + case MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32: + case MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80: + case MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32: + return srtp_profile_value; + default: break; + } + return( MBEDTLS_TLS_SRTP_UNSET ); +} +#endif + #if defined(MBEDTLS_X509_CRT_PARSE_C) static inline mbedtls_pk_context *mbedtls_ssl_own_key( mbedtls_ssl_context *ssl ) { @@ -703,15 +1181,27 @@ void mbedtls_ssl_write_version( int major, int minor, int transport, void mbedtls_ssl_read_version( int *major, int *minor, int transport, const unsigned char ver[2] ); -static inline size_t mbedtls_ssl_hdr_len( const mbedtls_ssl_context *ssl ) +static inline size_t mbedtls_ssl_in_hdr_len( const mbedtls_ssl_context *ssl ) { +#if !defined(MBEDTLS_SSL_PROTO_DTLS) + ((void) ssl); +#endif + #if defined(MBEDTLS_SSL_PROTO_DTLS) if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { return( 13 ); -#else - ((void) ssl); -#endif - return( 5 ); + } + else +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + { + return( 5 ); + } +} + +static inline size_t mbedtls_ssl_out_hdr_len( const mbedtls_ssl_context *ssl ) +{ + return( (size_t) ( ssl->out_iv - ssl->out_hdr ) ); } static inline size_t mbedtls_ssl_hs_hdr_len( const mbedtls_ssl_context *ssl ) @@ -734,29 +1224,12 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ); /* Visible for testing purposes only */ #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) -int mbedtls_ssl_dtls_replay_check( mbedtls_ssl_context *ssl ); +int mbedtls_ssl_dtls_replay_check( mbedtls_ssl_context const *ssl ); void mbedtls_ssl_dtls_replay_update( mbedtls_ssl_context *ssl ); #endif -/* constant-time buffer comparison */ -static inline int mbedtls_ssl_safer_memcmp( const void *a, const void *b, size_t n ) -{ - size_t i; - volatile const unsigned char *A = (volatile const unsigned char *) a; - volatile const unsigned char *B = (volatile const unsigned char *) b; - volatile unsigned char diff = 0; - - for( i = 0; i < n; i++ ) - { - /* Read volatile data in order before computing diff. - * This avoids IAR compiler warning: - * 'the order of volatile accesses is undefined ..' */ - unsigned char x = A[i], y = B[i]; - diff |= x ^ y; - } - - return( diff ); -} +int mbedtls_ssl_session_copy( mbedtls_ssl_session *dst, + const mbedtls_ssl_session *src ); #if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \ defined(MBEDTLS_SSL_PROTO_TLS1_1) @@ -768,6 +1241,7 @@ int mbedtls_ssl_get_key_exchange_md_ssl_tls( mbedtls_ssl_context *ssl, #if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ defined(MBEDTLS_SSL_PROTO_TLS1_2) +/* The hash buffer must have at least MBEDTLS_MD_MAX_SIZE bytes of length. */ int mbedtls_ssl_get_key_exchange_md_tls1_2( mbedtls_ssl_context *ssl, unsigned char *hash, size_t *hashlen, unsigned char *data, size_t data_len, @@ -779,4 +1253,56 @@ int mbedtls_ssl_get_key_exchange_md_tls1_2( mbedtls_ssl_context *ssl, } #endif +void mbedtls_ssl_transform_init( mbedtls_ssl_transform *transform ); +int mbedtls_ssl_encrypt_buf( mbedtls_ssl_context *ssl, + mbedtls_ssl_transform *transform, + mbedtls_record *rec, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); +int mbedtls_ssl_decrypt_buf( mbedtls_ssl_context const *ssl, + mbedtls_ssl_transform *transform, + mbedtls_record *rec ); + +/* Length of the "epoch" field in the record header */ +static inline size_t mbedtls_ssl_ep_len( const mbedtls_ssl_context *ssl ) +{ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + return( 2 ); +#else + ((void) ssl); +#endif + return( 0 ); +} + +#if defined(MBEDTLS_SSL_PROTO_DTLS) +int mbedtls_ssl_resend_hello_request( mbedtls_ssl_context *ssl ); +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + +void mbedtls_ssl_set_timer( mbedtls_ssl_context *ssl, uint32_t millisecs ); +int mbedtls_ssl_check_timer( mbedtls_ssl_context *ssl ); + +void mbedtls_ssl_reset_in_out_pointers( mbedtls_ssl_context *ssl ); +void mbedtls_ssl_update_out_pointers( mbedtls_ssl_context *ssl, + mbedtls_ssl_transform *transform ); +void mbedtls_ssl_update_in_pointers( mbedtls_ssl_context *ssl ); + +int mbedtls_ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ); + +#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) +void mbedtls_ssl_dtls_replay_reset( mbedtls_ssl_context *ssl ); +#endif + +void mbedtls_ssl_handshake_wrapup_free_hs_transform( mbedtls_ssl_context *ssl ); + +#if defined(MBEDTLS_SSL_RENEGOTIATION) +int mbedtls_ssl_start_renegotiation( mbedtls_ssl_context *ssl ); +#endif /* MBEDTLS_SSL_RENEGOTIATION */ + +#if defined(MBEDTLS_SSL_PROTO_DTLS) +size_t mbedtls_ssl_get_current_mtu( const mbedtls_ssl_context *ssl ); +void mbedtls_ssl_buffering_free( mbedtls_ssl_context *ssl ); +void mbedtls_ssl_flight_free( mbedtls_ssl_flight_item *flight ); +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + #endif /* ssl_internal.h */ diff --git a/Externals/mbedtls/include/mbedtls/ssl_ticket.h b/Externals/mbedtls/include/mbedtls/ssl_ticket.h index a84e7816e4a7..a882eed23b96 100644 --- a/Externals/mbedtls/include/mbedtls/ssl_ticket.h +++ b/Externals/mbedtls/include/mbedtls/ssl_ticket.h @@ -4,7 +4,7 @@ * \brief TLS server ticket callbacks implementation */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,14 +18,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_SSL_TICKET_H #define MBEDTLS_SSL_TICKET_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -36,11 +34,11 @@ * secrecy, when MBEDTLS_HAVE_TIME is defined. */ -#include "ssl.h" -#include "cipher.h" +#include "mbedtls/ssl.h" +#include "mbedtls/cipher.h" #if defined(MBEDTLS_THREADING_C) -#include "threading.h" +#include "mbedtls/threading.h" #endif #ifdef __cplusplus @@ -99,7 +97,7 @@ void mbedtls_ssl_ticket_init( mbedtls_ssl_ticket_context *ctx ); * Recommended value: 86400 (one day). * * \note It is highly recommended to select a cipher that is at - * least as strong as the the strongest ciphersuite + * least as strong as the strongest ciphersuite * supported. Usually that means a 256-bit key. * * \note The lifetime of the keys is twice the lifetime of tickets. @@ -117,14 +115,14 @@ int mbedtls_ssl_ticket_setup( mbedtls_ssl_ticket_context *ctx, /** * \brief Implementation of the ticket write callback * - * \note See \c mbedlts_ssl_ticket_write_t for description + * \note See \c mbedtls_ssl_ticket_write_t for description */ mbedtls_ssl_ticket_write_t mbedtls_ssl_ticket_write; /** * \brief Implementation of the ticket parse callback * - * \note See \c mbedlts_ssl_ticket_parse_t for description + * \note See \c mbedtls_ssl_ticket_parse_t for description */ mbedtls_ssl_ticket_parse_t mbedtls_ssl_ticket_parse; diff --git a/Externals/mbedtls/include/mbedtls/threading.h b/Externals/mbedtls/include/mbedtls/threading.h index 92e6e6b987e7..d147c73f0668 100644 --- a/Externals/mbedtls/include/mbedtls/threading.h +++ b/Externals/mbedtls/include/mbedtls/threading.h @@ -4,7 +4,7 @@ * \brief Threading abstraction layer */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,14 +18,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_THREADING_H #define MBEDTLS_THREADING_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -38,16 +36,22 @@ extern "C" { /* MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE is deprecated and should not be * used. */ -#define MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE -0x001A /**< The selected feature is not available. */ +/** The selected feature is not available. */ +#define MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE -0x001A -#define MBEDTLS_ERR_THREADING_BAD_INPUT_DATA -0x001C /**< Bad input parameters to function. */ -#define MBEDTLS_ERR_THREADING_MUTEX_ERROR -0x001E /**< Locking / unlocking / free failed with error code. */ +/** Bad input parameters to function. */ +#define MBEDTLS_ERR_THREADING_BAD_INPUT_DATA -0x001C +/** Locking / unlocking / free failed with error code. */ +#define MBEDTLS_ERR_THREADING_MUTEX_ERROR -0x001E #if defined(MBEDTLS_THREADING_PTHREAD) #include typedef struct mbedtls_threading_mutex_t { pthread_mutex_t mutex; + /* is_valid is 0 after a failed init or a free, and nonzero after a + * successful init. This field is not considered part of the public + * API of Mbed TLS and may change without notice. */ char is_valid; } mbedtls_threading_mutex_t; #endif diff --git a/Externals/mbedtls/include/mbedtls/timing.h b/Externals/mbedtls/include/mbedtls/timing.h index a965fe0d355a..b7290cfcabc6 100644 --- a/Externals/mbedtls/include/mbedtls/timing.h +++ b/Externals/mbedtls/include/mbedtls/timing.h @@ -4,7 +4,7 @@ * \brief Portable interface to timeouts and to the CPU cycle counter */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,14 +18,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_TIMING_H #define MBEDTLS_TIMING_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif diff --git a/Externals/mbedtls/include/mbedtls/version.h b/Externals/mbedtls/include/mbedtls/version.h index cc736e1590f2..b1a92b2bcf33 100644 --- a/Externals/mbedtls/include/mbedtls/version.h +++ b/Externals/mbedtls/include/mbedtls/version.h @@ -4,7 +4,7 @@ * \brief Run-time version information */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,8 +18,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * This set of compile-time defines and run-time variables can be used to @@ -29,7 +27,7 @@ #define MBEDTLS_VERSION_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -39,17 +37,17 @@ * Major, Minor, Patchlevel */ #define MBEDTLS_VERSION_MAJOR 2 -#define MBEDTLS_VERSION_MINOR 16 -#define MBEDTLS_VERSION_PATCH 1 +#define MBEDTLS_VERSION_MINOR 28 +#define MBEDTLS_VERSION_PATCH 0 /** * The single version number has the following structure: * MMNNPP00 * Major version | Minor version | Patch version */ -#define MBEDTLS_VERSION_NUMBER 0x02100100 -#define MBEDTLS_VERSION_STRING "2.16.1" -#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.16.1" +#define MBEDTLS_VERSION_NUMBER 0x021C0000 +#define MBEDTLS_VERSION_STRING "2.28.0" +#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.28.0" #if defined(MBEDTLS_VERSION_C) diff --git a/Externals/mbedtls/include/mbedtls/x509.h b/Externals/mbedtls/include/mbedtls/x509.h index 9ae825c18385..c17750143009 100644 --- a/Externals/mbedtls/include/mbedtls/x509.h +++ b/Externals/mbedtls/include/mbedtls/x509.h @@ -4,7 +4,7 @@ * \brief X.509 generic defines and structures */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,23 +18,21 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_X509_H #define MBEDTLS_X509_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "asn1.h" -#include "pk.h" +#include "mbedtls/asn1.h" +#include "mbedtls/pk.h" #if defined(MBEDTLS_RSA_C) -#include "rsa.h" +#include "mbedtls/rsa.h" #endif /** @@ -58,26 +56,46 @@ * \name X509 Error codes * \{ */ -#define MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE -0x2080 /**< Unavailable feature, e.g. RSA hashing/encryption combination. */ -#define MBEDTLS_ERR_X509_UNKNOWN_OID -0x2100 /**< Requested OID is unknown. */ -#define MBEDTLS_ERR_X509_INVALID_FORMAT -0x2180 /**< The CRT/CRL/CSR format is invalid, e.g. different type expected. */ -#define MBEDTLS_ERR_X509_INVALID_VERSION -0x2200 /**< The CRT/CRL/CSR version element is invalid. */ -#define MBEDTLS_ERR_X509_INVALID_SERIAL -0x2280 /**< The serial tag or value is invalid. */ -#define MBEDTLS_ERR_X509_INVALID_ALG -0x2300 /**< The algorithm tag or value is invalid. */ -#define MBEDTLS_ERR_X509_INVALID_NAME -0x2380 /**< The name tag or value is invalid. */ -#define MBEDTLS_ERR_X509_INVALID_DATE -0x2400 /**< The date tag or value is invalid. */ -#define MBEDTLS_ERR_X509_INVALID_SIGNATURE -0x2480 /**< The signature tag or value invalid. */ -#define MBEDTLS_ERR_X509_INVALID_EXTENSIONS -0x2500 /**< The extension tag or value is invalid. */ -#define MBEDTLS_ERR_X509_UNKNOWN_VERSION -0x2580 /**< CRT/CRL/CSR has an unsupported version number. */ -#define MBEDTLS_ERR_X509_UNKNOWN_SIG_ALG -0x2600 /**< Signature algorithm (oid) is unsupported. */ -#define MBEDTLS_ERR_X509_SIG_MISMATCH -0x2680 /**< Signature algorithms do not match. (see \c ::mbedtls_x509_crt sig_oid) */ -#define MBEDTLS_ERR_X509_CERT_VERIFY_FAILED -0x2700 /**< Certificate verification failed, e.g. CRL, CA or signature check failed. */ -#define MBEDTLS_ERR_X509_CERT_UNKNOWN_FORMAT -0x2780 /**< Format not recognized as DER or PEM. */ -#define MBEDTLS_ERR_X509_BAD_INPUT_DATA -0x2800 /**< Input invalid. */ -#define MBEDTLS_ERR_X509_ALLOC_FAILED -0x2880 /**< Allocation of memory failed. */ -#define MBEDTLS_ERR_X509_FILE_IO_ERROR -0x2900 /**< Read/write of file failed. */ -#define MBEDTLS_ERR_X509_BUFFER_TOO_SMALL -0x2980 /**< Destination buffer is too small. */ -#define MBEDTLS_ERR_X509_FATAL_ERROR -0x3000 /**< A fatal error occured, eg the chain is too long or the vrfy callback failed. */ +/** Unavailable feature, e.g. RSA hashing/encryption combination. */ +#define MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE -0x2080 +/** Requested OID is unknown. */ +#define MBEDTLS_ERR_X509_UNKNOWN_OID -0x2100 +/** The CRT/CRL/CSR format is invalid, e.g. different type expected. */ +#define MBEDTLS_ERR_X509_INVALID_FORMAT -0x2180 +/** The CRT/CRL/CSR version element is invalid. */ +#define MBEDTLS_ERR_X509_INVALID_VERSION -0x2200 +/** The serial tag or value is invalid. */ +#define MBEDTLS_ERR_X509_INVALID_SERIAL -0x2280 +/** The algorithm tag or value is invalid. */ +#define MBEDTLS_ERR_X509_INVALID_ALG -0x2300 +/** The name tag or value is invalid. */ +#define MBEDTLS_ERR_X509_INVALID_NAME -0x2380 +/** The date tag or value is invalid. */ +#define MBEDTLS_ERR_X509_INVALID_DATE -0x2400 +/** The signature tag or value invalid. */ +#define MBEDTLS_ERR_X509_INVALID_SIGNATURE -0x2480 +/** The extension tag or value is invalid. */ +#define MBEDTLS_ERR_X509_INVALID_EXTENSIONS -0x2500 +/** CRT/CRL/CSR has an unsupported version number. */ +#define MBEDTLS_ERR_X509_UNKNOWN_VERSION -0x2580 +/** Signature algorithm (oid) is unsupported. */ +#define MBEDTLS_ERR_X509_UNKNOWN_SIG_ALG -0x2600 +/** Signature algorithms do not match. (see \c ::mbedtls_x509_crt sig_oid) */ +#define MBEDTLS_ERR_X509_SIG_MISMATCH -0x2680 +/** Certificate verification failed, e.g. CRL, CA or signature check failed. */ +#define MBEDTLS_ERR_X509_CERT_VERIFY_FAILED -0x2700 +/** Format not recognized as DER or PEM. */ +#define MBEDTLS_ERR_X509_CERT_UNKNOWN_FORMAT -0x2780 +/** Input invalid. */ +#define MBEDTLS_ERR_X509_BAD_INPUT_DATA -0x2800 +/** Allocation of memory failed. */ +#define MBEDTLS_ERR_X509_ALLOC_FAILED -0x2880 +/** Read/write of file failed. */ +#define MBEDTLS_ERR_X509_FILE_IO_ERROR -0x2900 +/** Destination buffer is too small. */ +#define MBEDTLS_ERR_X509_BUFFER_TOO_SMALL -0x2980 +/** A fatal error occurred, eg the chain is too long or the vrfy callback failed. */ +#define MBEDTLS_ERR_X509_FATAL_ERROR -0x3000 /* \} name */ /** @@ -109,6 +127,28 @@ /* \} name */ /* \} addtogroup x509_module */ +/* + * X.509 v3 Subject Alternative Name types. + * otherName [0] OtherName, + * rfc822Name [1] IA5String, + * dNSName [2] IA5String, + * x400Address [3] ORAddress, + * directoryName [4] Name, + * ediPartyName [5] EDIPartyName, + * uniformResourceIdentifier [6] IA5String, + * iPAddress [7] OCTET STRING, + * registeredID [8] OBJECT IDENTIFIER + */ +#define MBEDTLS_X509_SAN_OTHER_NAME 0 +#define MBEDTLS_X509_SAN_RFC822_NAME 1 +#define MBEDTLS_X509_SAN_DNS_NAME 2 +#define MBEDTLS_X509_SAN_X400_ADDRESS_NAME 3 +#define MBEDTLS_X509_SAN_DIRECTORY_NAME 4 +#define MBEDTLS_X509_SAN_EDI_PARTY_NAME 5 +#define MBEDTLS_X509_SAN_UNIFORM_RESOURCE_IDENTIFIER 6 +#define MBEDTLS_X509_SAN_IP_ADDRESS 7 +#define MBEDTLS_X509_SAN_REGISTERED_ID 8 + /* * X.509 v3 Key Usage Extension flags * Reminder: update x509_info_key_usage() when adding new flags. @@ -142,24 +182,26 @@ * * Comments refer to the status for using certificates. Status can be * different for writing certificates or reading CRLs or CSRs. + * + * Those are defined in oid.h as oid.c needs them in a data structure. Since + * these were previously defined here, let's have aliases for compatibility. */ -#define MBEDTLS_X509_EXT_AUTHORITY_KEY_IDENTIFIER (1 << 0) -#define MBEDTLS_X509_EXT_SUBJECT_KEY_IDENTIFIER (1 << 1) -#define MBEDTLS_X509_EXT_KEY_USAGE (1 << 2) -#define MBEDTLS_X509_EXT_CERTIFICATE_POLICIES (1 << 3) -#define MBEDTLS_X509_EXT_POLICY_MAPPINGS (1 << 4) -#define MBEDTLS_X509_EXT_SUBJECT_ALT_NAME (1 << 5) /* Supported (DNS) */ -#define MBEDTLS_X509_EXT_ISSUER_ALT_NAME (1 << 6) -#define MBEDTLS_X509_EXT_SUBJECT_DIRECTORY_ATTRS (1 << 7) -#define MBEDTLS_X509_EXT_BASIC_CONSTRAINTS (1 << 8) /* Supported */ -#define MBEDTLS_X509_EXT_NAME_CONSTRAINTS (1 << 9) -#define MBEDTLS_X509_EXT_POLICY_CONSTRAINTS (1 << 10) -#define MBEDTLS_X509_EXT_EXTENDED_KEY_USAGE (1 << 11) -#define MBEDTLS_X509_EXT_CRL_DISTRIBUTION_POINTS (1 << 12) -#define MBEDTLS_X509_EXT_INIHIBIT_ANYPOLICY (1 << 13) -#define MBEDTLS_X509_EXT_FRESHEST_CRL (1 << 14) - -#define MBEDTLS_X509_EXT_NS_CERT_TYPE (1 << 16) +#define MBEDTLS_X509_EXT_AUTHORITY_KEY_IDENTIFIER MBEDTLS_OID_X509_EXT_AUTHORITY_KEY_IDENTIFIER +#define MBEDTLS_X509_EXT_SUBJECT_KEY_IDENTIFIER MBEDTLS_OID_X509_EXT_SUBJECT_KEY_IDENTIFIER +#define MBEDTLS_X509_EXT_KEY_USAGE MBEDTLS_OID_X509_EXT_KEY_USAGE +#define MBEDTLS_X509_EXT_CERTIFICATE_POLICIES MBEDTLS_OID_X509_EXT_CERTIFICATE_POLICIES +#define MBEDTLS_X509_EXT_POLICY_MAPPINGS MBEDTLS_OID_X509_EXT_POLICY_MAPPINGS +#define MBEDTLS_X509_EXT_SUBJECT_ALT_NAME MBEDTLS_OID_X509_EXT_SUBJECT_ALT_NAME /* Supported (DNS) */ +#define MBEDTLS_X509_EXT_ISSUER_ALT_NAME MBEDTLS_OID_X509_EXT_ISSUER_ALT_NAME +#define MBEDTLS_X509_EXT_SUBJECT_DIRECTORY_ATTRS MBEDTLS_OID_X509_EXT_SUBJECT_DIRECTORY_ATTRS +#define MBEDTLS_X509_EXT_BASIC_CONSTRAINTS MBEDTLS_OID_X509_EXT_BASIC_CONSTRAINTS /* Supported */ +#define MBEDTLS_X509_EXT_NAME_CONSTRAINTS MBEDTLS_OID_X509_EXT_NAME_CONSTRAINTS +#define MBEDTLS_X509_EXT_POLICY_CONSTRAINTS MBEDTLS_OID_X509_EXT_POLICY_CONSTRAINTS +#define MBEDTLS_X509_EXT_EXTENDED_KEY_USAGE MBEDTLS_OID_X509_EXT_EXTENDED_KEY_USAGE +#define MBEDTLS_X509_EXT_CRL_DISTRIBUTION_POINTS MBEDTLS_OID_X509_EXT_CRL_DISTRIBUTION_POINTS +#define MBEDTLS_X509_EXT_INIHIBIT_ANYPOLICY MBEDTLS_OID_X509_EXT_INIHIBIT_ANYPOLICY +#define MBEDTLS_X509_EXT_FRESHEST_CRL MBEDTLS_OID_X509_EXT_FRESHEST_CRL +#define MBEDTLS_X509_EXT_NS_CERT_TYPE MBEDTLS_OID_X509_EXT_NS_CERT_TYPE /* * Storage format identifiers @@ -250,7 +292,7 @@ int mbedtls_x509_serial_gets( char *buf, size_t size, const mbedtls_x509_buf *se * * \param to mbedtls_x509_time to check * - * \return 1 if the given time is in the past or an error occured, + * \return 1 if the given time is in the past or an error occurred, * 0 otherwise. */ int mbedtls_x509_time_is_past( const mbedtls_x509_time *to ); @@ -264,7 +306,7 @@ int mbedtls_x509_time_is_past( const mbedtls_x509_time *to ); * * \param from mbedtls_x509_time to check * - * \return 1 if the given time is in the future or an error occured, + * \return 1 if the given time is in the future or an error occurred, * 0 otherwise. */ int mbedtls_x509_time_is_future( const mbedtls_x509_time *from ); diff --git a/Externals/mbedtls/include/mbedtls/x509_crl.h b/Externals/mbedtls/include/mbedtls/x509_crl.h index 08a4283a674a..7e9e8885f413 100644 --- a/Externals/mbedtls/include/mbedtls/x509_crl.h +++ b/Externals/mbedtls/include/mbedtls/x509_crl.h @@ -4,7 +4,7 @@ * \brief X.509 certificate revocation list parsing */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,19 +18,17 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_X509_CRL_H #define MBEDTLS_X509_CRL_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "x509.h" +#include "mbedtls/x509.h" #ifdef __cplusplus extern "C" { @@ -111,7 +109,7 @@ int mbedtls_x509_crl_parse_der( mbedtls_x509_crl *chain, /** * \brief Parse one or more CRLs and append them to the chained list * - * \note Mutliple CRLs are accepted only if using PEM format + * \note Multiple CRLs are accepted only if using PEM format * * \param chain points to the start of the chain * \param buf buffer holding the CRL data in PEM or DER format @@ -126,7 +124,7 @@ int mbedtls_x509_crl_parse( mbedtls_x509_crl *chain, const unsigned char *buf, s /** * \brief Load one or more CRLs and append them to the chained list * - * \note Mutliple CRLs are accepted only if using PEM format + * \note Multiple CRLs are accepted only if using PEM format * * \param chain points to the start of the chain * \param path filename to read the CRLs from (in PEM or DER encoding) diff --git a/Externals/mbedtls/include/mbedtls/x509_crt.h b/Externals/mbedtls/include/mbedtls/x509_crt.h index 3dd592248609..64ccb433ba88 100644 --- a/Externals/mbedtls/include/mbedtls/x509_crt.h +++ b/Externals/mbedtls/include/mbedtls/x509_crt.h @@ -4,7 +4,7 @@ * \brief X.509 certificate parsing and writing */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,20 +18,19 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_X509_CRT_H #define MBEDTLS_X509_CRT_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "x509.h" -#include "x509_crl.h" +#include "mbedtls/x509.h" +#include "mbedtls/x509_crl.h" +#include "mbedtls/bignum.h" /** * \addtogroup x509_module @@ -52,6 +51,8 @@ extern "C" { */ typedef struct mbedtls_x509_crt { + int own_buffer; /**< Indicates if \c raw is owned + * by the structure or not. */ mbedtls_x509_buf raw; /**< The raw certificate data (DER). */ mbedtls_x509_buf tbs; /**< The raw certificate body (DER). The part that is To Be Signed. */ @@ -68,12 +69,15 @@ typedef struct mbedtls_x509_crt mbedtls_x509_time valid_from; /**< Start time of certificate validity. */ mbedtls_x509_time valid_to; /**< End time of certificate validity. */ + mbedtls_x509_buf pk_raw; mbedtls_pk_context pk; /**< Container for the public key context. */ mbedtls_x509_buf issuer_id; /**< Optional X.509 v2/v3 issuer unique identifier. */ mbedtls_x509_buf subject_id; /**< Optional X.509 v2/v3 subject unique identifier. */ mbedtls_x509_buf v3_ext; /**< Optional X.509 v3 extensions. */ - mbedtls_x509_sequence subject_alt_names; /**< Optional list of Subject Alternative Names (Only dNSName supported). */ + mbedtls_x509_sequence subject_alt_names; /**< Optional list of raw entries of Subject Alternative Names extension (currently only dNSName and OtherName are listed). */ + + mbedtls_x509_sequence certificate_policies; /**< Optional list of certificate policies (Only anyPolicy is printed and enforced, however the rest of the policies are still listed). */ int ext_types; /**< Bit string containing detected and parsed extensions */ int ca_istrue; /**< Optional Basic Constraint extension value: 1 if this certificate belongs to a CA, 0 otherwise. */ @@ -94,11 +98,58 @@ typedef struct mbedtls_x509_crt } mbedtls_x509_crt; +/** + * From RFC 5280 section 4.2.1.6: + * OtherName ::= SEQUENCE { + * type-id OBJECT IDENTIFIER, + * value [0] EXPLICIT ANY DEFINED BY type-id } + */ +typedef struct mbedtls_x509_san_other_name +{ + /** + * The type_id is an OID as deifned in RFC 5280. + * To check the value of the type id, you should use + * \p MBEDTLS_OID_CMP with a known OID mbedtls_x509_buf. + */ + mbedtls_x509_buf type_id; /**< The type id. */ + union + { + /** + * From RFC 4108 section 5: + * HardwareModuleName ::= SEQUENCE { + * hwType OBJECT IDENTIFIER, + * hwSerialNum OCTET STRING } + */ + struct + { + mbedtls_x509_buf oid; /**< The object identifier. */ + mbedtls_x509_buf val; /**< The named value. */ + } + hardware_module_name; + } + value; +} +mbedtls_x509_san_other_name; + +/** + * A structure for holding the parsed Subject Alternative Name, according to type + */ +typedef struct mbedtls_x509_subject_alternative_name +{ + int type; /**< The SAN type, value of MBEDTLS_X509_SAN_XXX. */ + union { + mbedtls_x509_san_other_name other_name; /**< The otherName supported type. */ + mbedtls_x509_buf unstructured_name; /**< The buffer for the un constructed types. Only dnsName currently supported */ + } + san; /**< A union of the supported SAN types */ +} +mbedtls_x509_subject_alternative_name; + /** * Build flag from an algorithm/curve identifier (pk, md, ecp) * Since 0 is always XXX_NONE, ignore it. */ -#define MBEDTLS_X509_ID_FLAG( id ) ( 1 << ( id - 1 ) ) +#define MBEDTLS_X509_ID_FLAG( id ) ( 1 << ( (id) - 1 ) ) /** * Security profile for certificate verification. @@ -163,6 +214,14 @@ typedef struct { mbedtls_x509_crt_verify_chain_item items[MBEDTLS_X509_MAX_VERIFY_CHAIN_SIZE]; unsigned len; + +#if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK) + /* This stores the list of potential trusted signers obtained from + * the CA callback used for the CRT verification, if configured. + * We must track it somewhere because the callback passes its + * ownership to the caller. */ + mbedtls_x509_crt *trust_ca_cb_result; +#endif /* MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK */ } mbedtls_x509_crt_verify_chain; #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) @@ -204,12 +263,21 @@ typedef void mbedtls_x509_crt_restart_ctx; /** * Default security profile. Should provide a good balance between security * and compatibility with current deployments. + * + * This profile permits: + * - SHA2 hashes. + * - All supported elliptic curves. + * - RSA with 2048 bits and above. + * + * New minor versions of Mbed TLS may extend this profile, for example if + * new curves are added to the library. New minor versions of Mbed TLS will + * not reduce this profile unless serious security concerns require it. */ extern const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_default; /** * Expected next default profile. Recommended for new deployments. - * Currently targets a 128-bit security level, except for RSA-2048. + * Currently targets a 128-bit security level, except for allowing RSA-2048. */ extern const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_next; @@ -220,16 +288,142 @@ extern const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_suiteb; /** * \brief Parse a single DER formatted certificate and add it - * to the chained list. - * - * \param chain points to the start of the chain - * \param buf buffer holding the certificate DER data - * \param buflen size of the buffer - * - * \return 0 if successful, or a specific X509 or PEM error code + * to the end of the provided chained list. + * + * \param chain The pointer to the start of the CRT chain to attach to. + * When parsing the first CRT in a chain, this should point + * to an instance of ::mbedtls_x509_crt initialized through + * mbedtls_x509_crt_init(). + * \param buf The buffer holding the DER encoded certificate. + * \param buflen The size in Bytes of \p buf. + * + * \note This function makes an internal copy of the CRT buffer + * \p buf. In particular, \p buf may be destroyed or reused + * after this call returns. To avoid duplicating the CRT + * buffer (at the cost of stricter lifetime constraints), + * use mbedtls_x509_crt_parse_der_nocopy() instead. + * + * \return \c 0 if successful. + * \return A negative error code on failure. */ -int mbedtls_x509_crt_parse_der( mbedtls_x509_crt *chain, const unsigned char *buf, - size_t buflen ); +int mbedtls_x509_crt_parse_der( mbedtls_x509_crt *chain, + const unsigned char *buf, + size_t buflen ); + +/** + * \brief The type of certificate extension callbacks. + * + * Callbacks of this type are passed to and used by the + * mbedtls_x509_crt_parse_der_with_ext_cb() routine when + * it encounters either an unsupported extension or a + * "certificate policies" extension containing any + * unsupported certificate policies. + * Future versions of the library may invoke the callback + * in other cases, if and when the need arises. + * + * \param p_ctx An opaque context passed to the callback. + * \param crt The certificate being parsed. + * \param oid The OID of the extension. + * \param critical Whether the extension is critical. + * \param p Pointer to the start of the extension value + * (the content of the OCTET STRING). + * \param end End of extension value. + * + * \note The callback must fail and return a negative error code + * if it can not parse or does not support the extension. + * When the callback fails to parse a critical extension + * mbedtls_x509_crt_parse_der_with_ext_cb() also fails. + * When the callback fails to parse a non critical extension + * mbedtls_x509_crt_parse_der_with_ext_cb() simply skips + * the extension and continues parsing. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +typedef int (*mbedtls_x509_crt_ext_cb_t)( void *p_ctx, + mbedtls_x509_crt const *crt, + mbedtls_x509_buf const *oid, + int critical, + const unsigned char *p, + const unsigned char *end ); + +/** + * \brief Parse a single DER formatted certificate and add it + * to the end of the provided chained list. + * + * \param chain The pointer to the start of the CRT chain to attach to. + * When parsing the first CRT in a chain, this should point + * to an instance of ::mbedtls_x509_crt initialized through + * mbedtls_x509_crt_init(). + * \param buf The buffer holding the DER encoded certificate. + * \param buflen The size in Bytes of \p buf. + * \param make_copy When not zero this function makes an internal copy of the + * CRT buffer \p buf. In particular, \p buf may be destroyed + * or reused after this call returns. + * When zero this function avoids duplicating the CRT buffer + * by taking temporary ownership thereof until the CRT + * is destroyed (like mbedtls_x509_crt_parse_der_nocopy()) + * \param cb A callback invoked for every unsupported certificate + * extension. + * \param p_ctx An opaque context passed to the callback. + * + * \note This call is functionally equivalent to + * mbedtls_x509_crt_parse_der(), and/or + * mbedtls_x509_crt_parse_der_nocopy() + * but it calls the callback with every unsupported + * certificate extension and additionally the + * "certificate policies" extension if it contains any + * unsupported certificate policies. + * The callback must return a negative error code if it + * does not know how to handle such an extension. + * When the callback fails to parse a critical extension + * mbedtls_x509_crt_parse_der_with_ext_cb() also fails. + * When the callback fails to parse a non critical extension + * mbedtls_x509_crt_parse_der_with_ext_cb() simply skips + * the extension and continues parsing. + * Future versions of the library may invoke the callback + * in other cases, if and when the need arises. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_x509_crt_parse_der_with_ext_cb( mbedtls_x509_crt *chain, + const unsigned char *buf, + size_t buflen, + int make_copy, + mbedtls_x509_crt_ext_cb_t cb, + void *p_ctx ); + +/** + * \brief Parse a single DER formatted certificate and add it + * to the end of the provided chained list. This is a + * variant of mbedtls_x509_crt_parse_der() which takes + * temporary ownership of the CRT buffer until the CRT + * is destroyed. + * + * \param chain The pointer to the start of the CRT chain to attach to. + * When parsing the first CRT in a chain, this should point + * to an instance of ::mbedtls_x509_crt initialized through + * mbedtls_x509_crt_init(). + * \param buf The address of the readable buffer holding the DER encoded + * certificate to use. On success, this buffer must be + * retained and not be changed for the liftetime of the + * CRT chain \p chain, that is, until \p chain is destroyed + * through a call to mbedtls_x509_crt_free(). + * \param buflen The size in Bytes of \p buf. + * + * \note This call is functionally equivalent to + * mbedtls_x509_crt_parse_der(), but it avoids creating a + * copy of the input buffer at the cost of stronger lifetime + * constraints. This is useful in constrained environments + * where duplication of the CRT cannot be tolerated. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_x509_crt_parse_der_nocopy( mbedtls_x509_crt *chain, + const unsigned char *buf, + size_t buflen ); /** * \brief Parse one DER-encoded or one or more concatenated PEM-encoded @@ -293,8 +487,37 @@ int mbedtls_x509_crt_parse_file( mbedtls_x509_crt *chain, const char *path ); * if partly successful or a specific X509 or PEM error code */ int mbedtls_x509_crt_parse_path( mbedtls_x509_crt *chain, const char *path ); -#endif /* MBEDTLS_FS_IO */ +#endif /* MBEDTLS_FS_IO */ +/** + * \brief This function parses an item in the SubjectAlternativeNames + * extension. + * + * \param san_buf The buffer holding the raw data item of the subject + * alternative name. + * \param san The target structure to populate with the parsed presentation + * of the subject alternative name encoded in \p san_raw. + * + * \note Only "dnsName" and "otherName" of type hardware_module_name + * as defined in RFC 4180 is supported. + * + * \note This function should be called on a single raw data of + * subject alternative name. For example, after successful + * certificate parsing, one must iterate on every item in the + * \p crt->subject_alt_names sequence, and pass it to + * this function. + * + * \warning The target structure contains pointers to the raw data of the + * parsed certificate, and its lifetime is restricted by the + * lifetime of the certificate. + * + * \return \c 0 on success + * \return #MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE for an unsupported + * SAN type. + * \return Another negative value for any other failure. + */ +int mbedtls_x509_parse_subject_alt_name( const mbedtls_x509_buf *san_buf, + mbedtls_x509_subject_alternative_name *san ); /** * \brief Returns an informational string about the * certificate. @@ -326,7 +549,7 @@ int mbedtls_x509_crt_verify_info( char *buf, size_t size, const char *prefix, uint32_t flags ); /** - * \brief Verify the certificate signature + * \brief Verify a chain of certificates. * * The verify callback is a user-supplied callback that * can clear / modify / add flags for a certificate. If set, @@ -366,22 +589,30 @@ int mbedtls_x509_crt_verify_info( char *buf, size_t size, const char *prefix, * specific peers you know) - in that case, the self-signed * certificate doesn't need to have the CA bit set. * - * \param crt a certificate (chain) to be verified - * \param trust_ca the list of trusted CAs (see note above) - * \param ca_crl the list of CRLs for trusted CAs (see note above) - * \param cn expected Common Name (can be set to - * NULL if the CN must not be verified) - * \param flags result of the verification - * \param f_vrfy verification function - * \param p_vrfy verification parameter - * - * \return 0 (and flags set to 0) if the chain was verified and valid, - * MBEDTLS_ERR_X509_CERT_VERIFY_FAILED if the chain was verified - * but found to be invalid, in which case *flags will have one - * or more MBEDTLS_X509_BADCERT_XXX or MBEDTLS_X509_BADCRL_XXX - * flags set, or another error (and flags set to 0xffffffff) - * in case of a fatal error encountered during the - * verification process. + * \param crt The certificate chain to be verified. + * \param trust_ca The list of trusted CAs. + * \param ca_crl The list of CRLs for trusted CAs. + * \param cn The expected Common Name. This will be checked to be + * present in the certificate's subjectAltNames extension or, + * if this extension is absent, as a CN component in its + * Subject name. Currently only DNS names are supported. This + * may be \c NULL if the CN need not be verified. + * \param flags The address at which to store the result of the verification. + * If the verification couldn't be completed, the flag value is + * set to (uint32_t) -1. + * \param f_vrfy The verification callback to use. See the documentation + * of mbedtls_x509_crt_verify() for more information. + * \param p_vrfy The context to be passed to \p f_vrfy. + * + * \return \c 0 if the chain is valid with respect to the + * passed CN, CAs, CRLs and security profile. + * \return #MBEDTLS_ERR_X509_CERT_VERIFY_FAILED in case the + * certificate chain verification failed. In this case, + * \c *flags will have one or more + * \c MBEDTLS_X509_BADCERT_XXX or \c MBEDTLS_X509_BADCRL_XXX + * flags set. + * \return Another negative error code in case of a fatal error + * encountered during the verification process. */ int mbedtls_x509_crt_verify( mbedtls_x509_crt *crt, mbedtls_x509_crt *trust_ca, @@ -391,7 +622,8 @@ int mbedtls_x509_crt_verify( mbedtls_x509_crt *crt, void *p_vrfy ); /** - * \brief Verify the certificate signature according to profile + * \brief Verify a chain of certificates with respect to + * a configurable security profile. * * \note Same as \c mbedtls_x509_crt_verify(), but with explicit * security profile. @@ -400,22 +632,28 @@ int mbedtls_x509_crt_verify( mbedtls_x509_crt *crt, * for ECDSA) apply to all certificates: trusted root, * intermediate CAs if any, and end entity certificate. * - * \param crt a certificate (chain) to be verified - * \param trust_ca the list of trusted CAs - * \param ca_crl the list of CRLs for trusted CAs - * \param profile security profile for verification - * \param cn expected Common Name (can be set to - * NULL if the CN must not be verified) - * \param flags result of the verification - * \param f_vrfy verification function - * \param p_vrfy verification parameter - * - * \return 0 if successful or MBEDTLS_ERR_X509_CERT_VERIFY_FAILED - * in which case *flags will have one or more - * MBEDTLS_X509_BADCERT_XXX or MBEDTLS_X509_BADCRL_XXX flags - * set, - * or another error in case of a fatal error encountered - * during the verification process. + * \param crt The certificate chain to be verified. + * \param trust_ca The list of trusted CAs. + * \param ca_crl The list of CRLs for trusted CAs. + * \param profile The security profile to use for the verification. + * \param cn The expected Common Name. This may be \c NULL if the + * CN need not be verified. + * \param flags The address at which to store the result of the verification. + * If the verification couldn't be completed, the flag value is + * set to (uint32_t) -1. + * \param f_vrfy The verification callback to use. See the documentation + * of mbedtls_x509_crt_verify() for more information. + * \param p_vrfy The context to be passed to \p f_vrfy. + * + * \return \c 0 if the chain is valid with respect to the + * passed CN, CAs, CRLs and security profile. + * \return #MBEDTLS_ERR_X509_CERT_VERIFY_FAILED in case the + * certificate chain verification failed. In this case, + * \c *flags will have one or more + * \c MBEDTLS_X509_BADCERT_XXX or \c MBEDTLS_X509_BADCRL_XXX + * flags set. + * \return Another negative error code in case of a fatal error + * encountered during the verification process. */ int mbedtls_x509_crt_verify_with_profile( mbedtls_x509_crt *crt, mbedtls_x509_crt *trust_ca, @@ -432,16 +670,20 @@ int mbedtls_x509_crt_verify_with_profile( mbedtls_x509_crt *crt, * but can return early and restart according to the limit * set with \c mbedtls_ecp_set_max_ops() to reduce blocking. * - * \param crt a certificate (chain) to be verified - * \param trust_ca the list of trusted CAs - * \param ca_crl the list of CRLs for trusted CAs - * \param profile security profile for verification - * \param cn expected Common Name (can be set to - * NULL if the CN must not be verified) - * \param flags result of the verification - * \param f_vrfy verification function - * \param p_vrfy verification parameter - * \param rs_ctx restart context (NULL to disable restart) + * \param crt The certificate chain to be verified. + * \param trust_ca The list of trusted CAs. + * \param ca_crl The list of CRLs for trusted CAs. + * \param profile The security profile to use for the verification. + * \param cn The expected Common Name. This may be \c NULL if the + * CN need not be verified. + * \param flags The address at which to store the result of the verification. + * If the verification couldn't be completed, the flag value is + * set to (uint32_t) -1. + * \param f_vrfy The verification callback to use. See the documentation + * of mbedtls_x509_crt_verify() for more information. + * \param p_vrfy The context to be passed to \p f_vrfy. + * \param rs_ctx The restart context to use. This may be set to \c NULL + * to disable restartable ECC. * * \return See \c mbedtls_crt_verify_with_profile(), or * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of @@ -456,6 +698,73 @@ int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, void *p_vrfy, mbedtls_x509_crt_restart_ctx *rs_ctx ); +/** + * \brief The type of trusted certificate callbacks. + * + * Callbacks of this type are passed to and used by the CRT + * verification routine mbedtls_x509_crt_verify_with_ca_cb() + * when looking for trusted signers of a given certificate. + * + * On success, the callback returns a list of trusted + * certificates to be considered as potential signers + * for the input certificate. + * + * \param p_ctx An opaque context passed to the callback. + * \param child The certificate for which to search a potential signer. + * This will point to a readable certificate. + * \param candidate_cas The address at which to store the address of the first + * entry in the generated linked list of candidate signers. + * This will not be \c NULL. + * + * \note The callback must only return a non-zero value on a + * fatal error. If, in contrast, the search for a potential + * signer completes without a single candidate, the + * callback must return \c 0 and set \c *candidate_cas + * to \c NULL. + * + * \return \c 0 on success. In this case, \c *candidate_cas points + * to a heap-allocated linked list of instances of + * ::mbedtls_x509_crt, and ownership of this list is passed + * to the caller. + * \return A negative error code on failure. + */ +typedef int (*mbedtls_x509_crt_ca_cb_t)( void *p_ctx, + mbedtls_x509_crt const *child, + mbedtls_x509_crt **candidate_cas ); + +#if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK) +/** + * \brief Version of \c mbedtls_x509_crt_verify_with_profile() which + * uses a callback to acquire the list of trusted CA + * certificates. + * + * \param crt The certificate chain to be verified. + * \param f_ca_cb The callback to be used to query for potential signers + * of a given child certificate. See the documentation of + * ::mbedtls_x509_crt_ca_cb_t for more information. + * \param p_ca_cb The opaque context to be passed to \p f_ca_cb. + * \param profile The security profile for the verification. + * \param cn The expected Common Name. This may be \c NULL if the + * CN need not be verified. + * \param flags The address at which to store the result of the verification. + * If the verification couldn't be completed, the flag value is + * set to (uint32_t) -1. + * \param f_vrfy The verification callback to use. See the documentation + * of mbedtls_x509_crt_verify() for more information. + * \param p_vrfy The context to be passed to \p f_vrfy. + * + * \return See \c mbedtls_crt_verify_with_profile(). + */ +int mbedtls_x509_crt_verify_with_ca_cb( mbedtls_x509_crt *crt, + mbedtls_x509_crt_ca_cb_t f_ca_cb, + void *p_ca_cb, + const mbedtls_x509_crt_profile *profile, + const char *cn, uint32_t *flags, + int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), + void *p_vrfy ); + +#endif /* MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK */ + #if defined(MBEDTLS_X509_CHECK_KEY_USAGE) /** * \brief Check usage of certificate against keyUsage extension. diff --git a/Externals/mbedtls/include/mbedtls/x509_csr.h b/Externals/mbedtls/include/mbedtls/x509_csr.h index a3c28048e011..b1dfc21f1fb5 100644 --- a/Externals/mbedtls/include/mbedtls/x509_csr.h +++ b/Externals/mbedtls/include/mbedtls/x509_csr.h @@ -4,7 +4,7 @@ * \brief X.509 certificate signing request parsing and writing */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,19 +18,17 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_X509_CSR_H #define MBEDTLS_X509_CSR_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif -#include "x509.h" +#include "mbedtls/x509.h" #ifdef __cplusplus extern "C" { diff --git a/Externals/mbedtls/include/mbedtls/xtea.h b/Externals/mbedtls/include/mbedtls/xtea.h index b47f5535085e..4bdc711fda02 100644 --- a/Externals/mbedtls/include/mbedtls/xtea.h +++ b/Externals/mbedtls/include/mbedtls/xtea.h @@ -4,7 +4,7 @@ * \brief XTEA block cipher (32-bit) */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,14 +18,12 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef MBEDTLS_XTEA_H #define MBEDTLS_XTEA_H #if !defined(MBEDTLS_CONFIG_FILE) -#include "config.h" +#include "mbedtls/config.h" #else #include MBEDTLS_CONFIG_FILE #endif @@ -36,10 +34,12 @@ #define MBEDTLS_XTEA_ENCRYPT 1 #define MBEDTLS_XTEA_DECRYPT 0 -#define MBEDTLS_ERR_XTEA_INVALID_INPUT_LENGTH -0x0028 /**< The data input has an invalid length. */ +/** The data input has an invalid length. */ +#define MBEDTLS_ERR_XTEA_INVALID_INPUT_LENGTH -0x0028 /* MBEDTLS_ERR_XTEA_HW_ACCEL_FAILED is deprecated and should not be used. */ -#define MBEDTLS_ERR_XTEA_HW_ACCEL_FAILED -0x0029 /**< XTEA hardware accelerator failed. */ +/** XTEA hardware accelerator failed. */ +#define MBEDTLS_ERR_XTEA_HW_ACCEL_FAILED -0x0029 #ifdef __cplusplus extern "C" { diff --git a/Externals/mbedtls/include/psa/crypto.h b/Externals/mbedtls/include/psa/crypto.h new file mode 100644 index 000000000000..b0b57c3a6ba8 --- /dev/null +++ b/Externals/mbedtls/include/psa/crypto.h @@ -0,0 +1,3956 @@ +/** + * \file psa/crypto.h + * \brief Platform Security Architecture cryptography module + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_H +#define PSA_CRYPTO_H + +#include "crypto_platform.h" + +#include + +#ifdef __DOXYGEN_ONLY__ +/* This __DOXYGEN_ONLY__ block contains mock definitions for things that + * must be defined in the crypto_platform.h header. These mock definitions + * are present in this file as a convenience to generate pretty-printed + * documentation that includes those definitions. */ + +/** \defgroup platform Implementation-specific definitions + * @{ + */ + +/**@}*/ +#endif /* __DOXYGEN_ONLY__ */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* The file "crypto_types.h" declares types that encode errors, + * algorithms, key types, policies, etc. */ +#include "crypto_types.h" + +/** \defgroup version API version + * @{ + */ + +/** + * The major version of this implementation of the PSA Crypto API + */ +#define PSA_CRYPTO_API_VERSION_MAJOR 1 + +/** + * The minor version of this implementation of the PSA Crypto API + */ +#define PSA_CRYPTO_API_VERSION_MINOR 0 + +/**@}*/ + +/* The file "crypto_values.h" declares macros to build and analyze values + * of integral types defined in "crypto_types.h". */ +#include "crypto_values.h" + +/** \defgroup initialization Library initialization + * @{ + */ + +/** + * \brief Library initialization. + * + * Applications must call this function before calling any other + * function in this module. + * + * Applications may call this function more than once. Once a call + * succeeds, subsequent calls are guaranteed to succeed. + * + * If the application calls other functions before calling psa_crypto_init(), + * the behavior is undefined. Implementations are encouraged to either perform + * the operation as if the library had been initialized or to return + * #PSA_ERROR_BAD_STATE or some other applicable error. In particular, + * implementations should not return a success status if the lack of + * initialization may have security implications, for example due to improper + * seeding of the random number generator. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_DATA_INVALID + * \retval #PSA_ERROR_DATA_CORRUPT + */ +psa_status_t psa_crypto_init(void); + +/**@}*/ + +/** \addtogroup attributes + * @{ + */ + +/** \def PSA_KEY_ATTRIBUTES_INIT + * + * This macro returns a suitable initializer for a key attribute structure + * of type #psa_key_attributes_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_KEY_ATTRIBUTES_INIT {0} +#endif + +/** Return an initial value for a key attributes structure. + */ +static psa_key_attributes_t psa_key_attributes_init(void); + +/** Declare a key as persistent and set its key identifier. + * + * If the attribute structure currently declares the key as volatile (which + * is the default content of an attribute structure), this function sets + * the lifetime attribute to #PSA_KEY_LIFETIME_PERSISTENT. + * + * This function does not access storage, it merely stores the given + * value in the structure. + * The persistent key will be written to storage when the attribute + * structure is passed to a key creation function such as + * psa_import_key(), psa_generate_key(), + * psa_key_derivation_output_key() or psa_copy_key(). + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param key The persistent identifier for the key. + */ +static void psa_set_key_id( psa_key_attributes_t *attributes, + mbedtls_svc_key_id_t key ); + +#ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER +/** Set the owner identifier of a key. + * + * When key identifiers encode key owner identifiers, psa_set_key_id() does + * not allow to define in key attributes the owner of volatile keys as + * psa_set_key_id() enforces the key to be persistent. + * + * This function allows to set in key attributes the owner identifier of a + * key. It is intended to be used for volatile keys. For persistent keys, + * it is recommended to use the PSA Cryptography API psa_set_key_id() to define + * the owner of a key. + * + * \param[out] attributes The attribute structure to write to. + * \param owner The key owner identifier. + */ +static void mbedtls_set_key_owner_id( psa_key_attributes_t *attributes, + mbedtls_key_owner_id_t owner ); +#endif + +/** Set the location of a persistent key. + * + * To make a key persistent, you must give it a persistent key identifier + * with psa_set_key_id(). By default, a key that has a persistent identifier + * is stored in the default storage area identifier by + * #PSA_KEY_LIFETIME_PERSISTENT. Call this function to choose a storage + * area, or to explicitly declare the key as volatile. + * + * This function does not access storage, it merely stores the given + * value in the structure. + * The persistent key will be written to storage when the attribute + * structure is passed to a key creation function such as + * psa_import_key(), psa_generate_key(), + * psa_key_derivation_output_key() or psa_copy_key(). + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param lifetime The lifetime for the key. + * If this is #PSA_KEY_LIFETIME_VOLATILE, the + * key will be volatile, and the key identifier + * attribute is reset to 0. + */ +static void psa_set_key_lifetime(psa_key_attributes_t *attributes, + psa_key_lifetime_t lifetime); + +/** Retrieve the key identifier from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The persistent identifier stored in the attribute structure. + * This value is unspecified if the attribute structure declares + * the key as volatile. + */ +static mbedtls_svc_key_id_t psa_get_key_id( + const psa_key_attributes_t *attributes); + +/** Retrieve the lifetime from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The lifetime value stored in the attribute structure. + */ +static psa_key_lifetime_t psa_get_key_lifetime( + const psa_key_attributes_t *attributes); + +/** Declare usage flags for a key. + * + * Usage flags are part of a key's usage policy. They encode what + * kind of operations are permitted on the key. For more details, + * refer to the documentation of the type #psa_key_usage_t. + * + * This function overwrites any usage flags + * previously set in \p attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param usage_flags The usage flags to write. + */ +static void psa_set_key_usage_flags(psa_key_attributes_t *attributes, + psa_key_usage_t usage_flags); + +/** Retrieve the usage flags from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The usage flags stored in the attribute structure. + */ +static psa_key_usage_t psa_get_key_usage_flags( + const psa_key_attributes_t *attributes); + +/** Declare the permitted algorithm policy for a key. + * + * The permitted algorithm policy of a key encodes which algorithm or + * algorithms are permitted to be used with this key. The following + * algorithm policies are supported: + * - 0 does not allow any cryptographic operation with the key. The key + * may be used for non-cryptographic actions such as exporting (if + * permitted by the usage flags). + * - An algorithm value permits this particular algorithm. + * - An algorithm wildcard built from #PSA_ALG_ANY_HASH allows the specified + * signature scheme with any hash algorithm. + * - An algorithm built from #PSA_ALG_AT_LEAST_THIS_LENGTH_MAC allows + * any MAC algorithm from the same base class (e.g. CMAC) which + * generates/verifies a MAC length greater than or equal to the length + * encoded in the wildcard algorithm. + * - An algorithm built from #PSA_ALG_AEAD_WITH_AT_LEAST_THIS_LENGTH_TAG + * allows any AEAD algorithm from the same base class (e.g. CCM) which + * generates/verifies a tag length greater than or equal to the length + * encoded in the wildcard algorithm. + * + * This function overwrites any algorithm policy + * previously set in \p attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param alg The permitted algorithm policy to write. + */ +static void psa_set_key_algorithm(psa_key_attributes_t *attributes, + psa_algorithm_t alg); + + +/** Retrieve the algorithm policy from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The algorithm stored in the attribute structure. + */ +static psa_algorithm_t psa_get_key_algorithm( + const psa_key_attributes_t *attributes); + +/** Declare the type of a key. + * + * This function overwrites any key type + * previously set in \p attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param type The key type to write. + * If this is 0, the key type in \p attributes + * becomes unspecified. + */ +static void psa_set_key_type(psa_key_attributes_t *attributes, + psa_key_type_t type); + + +/** Declare the size of a key. + * + * This function overwrites any key size previously set in \p attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param bits The key size in bits. + * If this is 0, the key size in \p attributes + * becomes unspecified. Keys of size 0 are + * not supported. + */ +static void psa_set_key_bits(psa_key_attributes_t *attributes, + size_t bits); + +/** Retrieve the key type from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The key type stored in the attribute structure. + */ +static psa_key_type_t psa_get_key_type(const psa_key_attributes_t *attributes); + +/** Retrieve the key size from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The key size stored in the attribute structure, in bits. + */ +static size_t psa_get_key_bits(const psa_key_attributes_t *attributes); + +/** Retrieve the attributes of a key. + * + * This function first resets the attribute structure as with + * psa_reset_key_attributes(). It then copies the attributes of + * the given key into the given attribute structure. + * + * \note This function may allocate memory or other resources. + * Once you have called this function on an attribute structure, + * you must call psa_reset_key_attributes() to free these resources. + * + * \param[in] key Identifier of the key to query. + * \param[in,out] attributes On success, the attributes of the key. + * On failure, equivalent to a + * freshly-initialized structure. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_DATA_CORRUPT + * \retval #PSA_ERROR_DATA_INVALID + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_get_key_attributes(mbedtls_svc_key_id_t key, + psa_key_attributes_t *attributes); + +/** Reset a key attribute structure to a freshly initialized state. + * + * You must initialize the attribute structure as described in the + * documentation of the type #psa_key_attributes_t before calling this + * function. Once the structure has been initialized, you may call this + * function at any time. + * + * This function frees any auxiliary resources that the structure + * may contain. + * + * \param[in,out] attributes The attribute structure to reset. + */ +void psa_reset_key_attributes(psa_key_attributes_t *attributes); + +/**@}*/ + +/** \defgroup key_management Key management + * @{ + */ + +/** Remove non-essential copies of key material from memory. + * + * If the key identifier designates a volatile key, this functions does not do + * anything and returns successfully. + * + * If the key identifier designates a persistent key, then this function will + * free all resources associated with the key in volatile memory. The key + * data in persistent storage is not affected and the key can still be used. + * + * \param key Identifier of the key to purge. + * + * \retval #PSA_SUCCESS + * The key material will have been removed from memory if it is not + * currently required. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not a valid key identifier. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_purge_key(mbedtls_svc_key_id_t key); + +/** Make a copy of a key. + * + * Copy key material from one location to another. + * + * This function is primarily useful to copy a key from one location + * to another, since it populates a key using the material from + * another key which may have a different lifetime. + * + * This function may be used to share a key with a different party, + * subject to implementation-defined restrictions on key sharing. + * + * The policy on the source key must have the usage flag + * #PSA_KEY_USAGE_COPY set. + * This flag is sufficient to permit the copy if the key has the lifetime + * #PSA_KEY_LIFETIME_VOLATILE or #PSA_KEY_LIFETIME_PERSISTENT. + * Some secure elements do not provide a way to copy a key without + * making it extractable from the secure element. If a key is located + * in such a secure element, then the key must have both usage flags + * #PSA_KEY_USAGE_COPY and #PSA_KEY_USAGE_EXPORT in order to make + * a copy of the key outside the secure element. + * + * The resulting key may only be used in a way that conforms to + * both the policy of the original key and the policy specified in + * the \p attributes parameter: + * - The usage flags on the resulting key are the bitwise-and of the + * usage flags on the source policy and the usage flags in \p attributes. + * - If both allow the same algorithm or wildcard-based + * algorithm policy, the resulting key has the same algorithm policy. + * - If either of the policies allows an algorithm and the other policy + * allows a wildcard-based algorithm policy that includes this algorithm, + * the resulting key allows the same algorithm. + * - If the policies do not allow any algorithm in common, this function + * fails with the status #PSA_ERROR_INVALID_ARGUMENT. + * + * The effect of this function on implementation-defined attributes is + * implementation-defined. + * + * \param source_key The key to copy. It must allow the usage + * #PSA_KEY_USAGE_COPY. If a private or secret key is + * being copied outside of a secure element it must + * also allow #PSA_KEY_USAGE_EXPORT. + * \param[in] attributes The attributes for the new key. + * They are used as follows: + * - The key type and size may be 0. If either is + * nonzero, it must match the corresponding + * attribute of the source key. + * - The key location (the lifetime and, for + * persistent keys, the key identifier) is + * used directly. + * - The policy constraints (usage flags and + * algorithm policy) are combined from + * the source key and \p attributes so that + * both sets of restrictions apply, as + * described in the documentation of this function. + * \param[out] target_key On success, an identifier for the newly created + * key. For persistent keys, this is the key + * identifier defined in \p attributes. + * \c 0 on failure. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \p source_key is invalid. + * \retval #PSA_ERROR_ALREADY_EXISTS + * This is an attempt to create a persistent key, and there is + * already a persistent key with the given identifier. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The lifetime or identifier in \p attributes are invalid. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The policy constraints on the source and specified in + * \p attributes are incompatible. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p attributes specifies a key type or key size + * which does not match the attributes of the source key. + * \retval #PSA_ERROR_NOT_PERMITTED + * The source key does not have the #PSA_KEY_USAGE_COPY usage flag. + * \retval #PSA_ERROR_NOT_PERMITTED + * The source key is not exportable and its lifetime does not + * allow copying it to the target's lifetime. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_DATA_INVALID + * \retval #PSA_ERROR_DATA_CORRUPT + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_copy_key(mbedtls_svc_key_id_t source_key, + const psa_key_attributes_t *attributes, + mbedtls_svc_key_id_t *target_key); + + +/** + * \brief Destroy a key. + * + * This function destroys a key from both volatile + * memory and, if applicable, non-volatile storage. Implementations shall + * make a best effort to ensure that that the key material cannot be recovered. + * + * This function also erases any metadata such as policies and frees + * resources associated with the key. + * + * If a key is currently in use in a multipart operation, then destroying the + * key will cause the multipart operation to fail. + * + * \param key Identifier of the key to erase. If this is \c 0, do nothing and + * return #PSA_SUCCESS. + * + * \retval #PSA_SUCCESS + * \p key was a valid identifier and the key material that it + * referred to has been erased. Alternatively, \p key is \c 0. + * \retval #PSA_ERROR_NOT_PERMITTED + * The key cannot be erased because it is + * read-only, either due to a policy or due to physical restrictions. + * \retval #PSA_ERROR_INVALID_HANDLE + * \p key is not a valid identifier nor \c 0. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * There was an failure in communication with the cryptoprocessor. + * The key material may still be present in the cryptoprocessor. + * \retval #PSA_ERROR_DATA_INVALID + * This error is typically a result of either storage corruption on a + * cleartext storage backend, or an attempt to read data that was + * written by an incompatible version of the library. + * \retval #PSA_ERROR_STORAGE_FAILURE + * The storage is corrupted. Implementations shall make a best effort + * to erase key material even in this stage, however applications + * should be aware that it may be impossible to guarantee that the + * key material is not recoverable in such cases. + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * An unexpected condition which is not a storage corruption or + * a communication failure occurred. The cryptoprocessor may have + * been compromised. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_destroy_key(mbedtls_svc_key_id_t key); + +/**@}*/ + +/** \defgroup import_export Key import and export + * @{ + */ + +/** + * \brief Import a key in binary format. + * + * This function supports any output from psa_export_key(). Refer to the + * documentation of psa_export_public_key() for the format of public keys + * and to the documentation of psa_export_key() for the format for + * other key types. + * + * The key data determines the key size. The attributes may optionally + * specify a key size; in this case it must match the size determined + * from the key data. A key size of 0 in \p attributes indicates that + * the key size is solely determined by the key data. + * + * Implementations must reject an attempt to import a key of size 0. + * + * This specification supports a single format for each key type. + * Implementations may support other formats as long as the standard + * format is supported. Implementations that support other formats + * should ensure that the formats are clearly unambiguous so as to + * minimize the risk that an invalid input is accidentally interpreted + * according to a different format. + * + * \param[in] attributes The attributes for the new key. + * The key size is always determined from the + * \p data buffer. + * If the key size in \p attributes is nonzero, + * it must be equal to the size from \p data. + * \param[out] key On success, an identifier to the newly created key. + * For persistent keys, this is the key identifier + * defined in \p attributes. + * \c 0 on failure. + * \param[in] data Buffer containing the key data. The content of this + * buffer is interpreted according to the type declared + * in \p attributes. + * All implementations must support at least the format + * described in the documentation + * of psa_export_key() or psa_export_public_key() for + * the chosen type. Implementations may allow other + * formats, but should be conservative: implementations + * should err on the side of rejecting content if it + * may be erroneous (e.g. wrong type or truncated data). + * \param data_length Size of the \p data buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * If the key is persistent, the key material and the key's metadata + * have been saved to persistent storage. + * \retval #PSA_ERROR_ALREADY_EXISTS + * This is an attempt to create a persistent key, and there is + * already a persistent key with the given identifier. + * \retval #PSA_ERROR_NOT_SUPPORTED + * The key type or key size is not supported, either by the + * implementation in general or in this particular persistent location. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key attributes, as a whole, are invalid. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key data is not correctly formatted. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The size in \p attributes is nonzero and does not match the size + * of the key data. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_DATA_CORRUPT + * \retval #PSA_ERROR_DATA_INVALID + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_import_key(const psa_key_attributes_t *attributes, + const uint8_t *data, + size_t data_length, + mbedtls_svc_key_id_t *key); + + + +/** + * \brief Export a key in binary format. + * + * The output of this function can be passed to psa_import_key() to + * create an equivalent object. + * + * If the implementation of psa_import_key() supports other formats + * beyond the format specified here, the output from psa_export_key() + * must use the representation specified here, not the original + * representation. + * + * For standard key types, the output format is as follows: + * + * - For symmetric keys (including MAC keys), the format is the + * raw bytes of the key. + * - For DES, the key data consists of 8 bytes. The parity bits must be + * correct. + * - For Triple-DES, the format is the concatenation of the + * two or three DES keys. + * - For RSA key pairs (#PSA_KEY_TYPE_RSA_KEY_PAIR), the format + * is the non-encrypted DER encoding of the representation defined by + * PKCS\#1 (RFC 8017) as `RSAPrivateKey`, version 0. + * ``` + * RSAPrivateKey ::= SEQUENCE { + * version INTEGER, -- must be 0 + * modulus INTEGER, -- n + * publicExponent INTEGER, -- e + * privateExponent INTEGER, -- d + * prime1 INTEGER, -- p + * prime2 INTEGER, -- q + * exponent1 INTEGER, -- d mod (p-1) + * exponent2 INTEGER, -- d mod (q-1) + * coefficient INTEGER, -- (inverse of q) mod p + * } + * ``` + * - For elliptic curve key pairs (key types for which + * #PSA_KEY_TYPE_IS_ECC_KEY_PAIR is true), the format is + * a representation of the private value as a `ceiling(m/8)`-byte string + * where `m` is the bit size associated with the curve, i.e. the bit size + * of the order of the curve's coordinate field. This byte string is + * in little-endian order for Montgomery curves (curve types + * `PSA_ECC_FAMILY_CURVEXXX`), and in big-endian order for Weierstrass + * curves (curve types `PSA_ECC_FAMILY_SECTXXX`, `PSA_ECC_FAMILY_SECPXXX` + * and `PSA_ECC_FAMILY_BRAINPOOL_PXXX`). + * For Weierstrass curves, this is the content of the `privateKey` field of + * the `ECPrivateKey` format defined by RFC 5915. For Montgomery curves, + * the format is defined by RFC 7748, and output is masked according to §5. + * For twisted Edwards curves, the private key is as defined by RFC 8032 + * (a 32-byte string for Edwards25519, a 57-byte string for Edwards448). + * - For Diffie-Hellman key exchange key pairs (key types for which + * #PSA_KEY_TYPE_IS_DH_KEY_PAIR is true), the + * format is the representation of the private key `x` as a big-endian byte + * string. The length of the byte string is the private key size in bytes + * (leading zeroes are not stripped). + * - For public keys (key types for which #PSA_KEY_TYPE_IS_PUBLIC_KEY is + * true), the format is the same as for psa_export_public_key(). + * + * The policy on the key must have the usage flag #PSA_KEY_USAGE_EXPORT set. + * + * \param key Identifier of the key to export. It must allow the + * usage #PSA_KEY_USAGE_EXPORT, unless it is a public + * key. + * \param[out] data Buffer where the key data is to be written. + * \param data_size Size of the \p data buffer in bytes. + * \param[out] data_length On success, the number of bytes + * that make up the key data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * The key does not have the #PSA_KEY_USAGE_EXPORT flag. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p data buffer is too small. You can determine a + * sufficient buffer size by calling + * #PSA_EXPORT_KEY_OUTPUT_SIZE(\c type, \c bits) + * where \c type is the key type + * and \c bits is the key size in bits. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_export_key(mbedtls_svc_key_id_t key, + uint8_t *data, + size_t data_size, + size_t *data_length); + +/** + * \brief Export a public key or the public part of a key pair in binary format. + * + * The output of this function can be passed to psa_import_key() to + * create an object that is equivalent to the public key. + * + * This specification supports a single format for each key type. + * Implementations may support other formats as long as the standard + * format is supported. Implementations that support other formats + * should ensure that the formats are clearly unambiguous so as to + * minimize the risk that an invalid input is accidentally interpreted + * according to a different format. + * + * For standard key types, the output format is as follows: + * - For RSA public keys (#PSA_KEY_TYPE_RSA_PUBLIC_KEY), the DER encoding of + * the representation defined by RFC 3279 §2.3.1 as `RSAPublicKey`. + * ``` + * RSAPublicKey ::= SEQUENCE { + * modulus INTEGER, -- n + * publicExponent INTEGER } -- e + * ``` + * - For elliptic curve keys on a twisted Edwards curve (key types for which + * #PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY is true and #PSA_KEY_TYPE_ECC_GET_FAMILY + * returns #PSA_ECC_FAMILY_TWISTED_EDWARDS), the public key is as defined + * by RFC 8032 + * (a 32-byte string for Edwards25519, a 57-byte string for Edwards448). + * - For other elliptic curve public keys (key types for which + * #PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY is true), the format is the uncompressed + * representation defined by SEC1 §2.3.3 as the content of an ECPoint. + * Let `m` be the bit size associated with the curve, i.e. the bit size of + * `q` for a curve over `F_q`. The representation consists of: + * - The byte 0x04; + * - `x_P` as a `ceiling(m/8)`-byte string, big-endian; + * - `y_P` as a `ceiling(m/8)`-byte string, big-endian. + * - For Diffie-Hellman key exchange public keys (key types for which + * #PSA_KEY_TYPE_IS_DH_PUBLIC_KEY is true), + * the format is the representation of the public key `y = g^x mod p` as a + * big-endian byte string. The length of the byte string is the length of the + * base prime `p` in bytes. + * + * Exporting a public key object or the public part of a key pair is + * always permitted, regardless of the key's usage flags. + * + * \param key Identifier of the key to export. + * \param[out] data Buffer where the key data is to be written. + * \param data_size Size of the \p data buffer in bytes. + * \param[out] data_length On success, the number of bytes + * that make up the key data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key is neither a public key nor a key pair. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p data buffer is too small. You can determine a + * sufficient buffer size by calling + * #PSA_EXPORT_KEY_OUTPUT_SIZE(#PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(\c type), \c bits) + * where \c type is the key type + * and \c bits is the key size in bits. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_export_public_key(mbedtls_svc_key_id_t key, + uint8_t *data, + size_t data_size, + size_t *data_length); + + + +/**@}*/ + +/** \defgroup hash Message digests + * @{ + */ + +/** Calculate the hash (digest) of a message. + * + * \note To verify the hash of a message against an + * expected value, use psa_hash_compare() instead. + * + * \param alg The hash algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_HASH(\p alg) is true). + * \param[in] input Buffer containing the message to hash. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] hash Buffer where the hash is to be written. + * \param hash_size Size of the \p hash buffer in bytes. + * \param[out] hash_length On success, the number of bytes + * that make up the hash value. This is always + * #PSA_HASH_LENGTH(\p alg). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a hash algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p hash_size is too small + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_compute(psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *hash, + size_t hash_size, + size_t *hash_length); + +/** Calculate the hash (digest) of a message and compare it with a + * reference value. + * + * \param alg The hash algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_HASH(\p alg) is true). + * \param[in] input Buffer containing the message to hash. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] hash Buffer containing the expected hash value. + * \param hash_length Size of the \p hash buffer in bytes. + * + * \retval #PSA_SUCCESS + * The expected hash is identical to the actual hash of the input. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The hash of the message was calculated successfully, but it + * differs from the expected hash. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a hash algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p input_length or \p hash_length do not match the hash size for \p alg + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_compare(psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *hash, + size_t hash_length); + +/** The type of the state data structure for multipart hash operations. + * + * Before calling any function on a hash operation object, the application must + * initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_hash_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_hash_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_HASH_OPERATION_INIT, + * for example: + * \code + * psa_hash_operation_t operation = PSA_HASH_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_hash_operation_init() + * to the structure, for example: + * \code + * psa_hash_operation_t operation; + * operation = psa_hash_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_hash_operation_s psa_hash_operation_t; + +/** \def PSA_HASH_OPERATION_INIT + * + * This macro returns a suitable initializer for a hash operation object + * of type #psa_hash_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_HASH_OPERATION_INIT {0} +#endif + +/** Return an initial value for a hash operation object. + */ +static psa_hash_operation_t psa_hash_operation_init(void); + +/** Set up a multipart hash operation. + * + * The sequence of operations to calculate a hash (message digest) + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_hash_operation_t, e.g. #PSA_HASH_OPERATION_INIT. + * -# Call psa_hash_setup() to specify the algorithm. + * -# Call psa_hash_update() zero, one or more times, passing a fragment + * of the message each time. The hash that is calculated is the hash + * of the concatenation of these messages in order. + * -# To calculate the hash, call psa_hash_finish(). + * To compare the hash with an expected value, call psa_hash_verify(). + * + * If an error occurs at any step after a call to psa_hash_setup(), the + * operation will need to be reset by a call to psa_hash_abort(). The + * application may call psa_hash_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_hash_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to psa_hash_finish() or psa_hash_verify(). + * - A call to psa_hash_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_hash_operation_t and not yet in use. + * \param alg The hash algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_HASH(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not a supported hash algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p alg is not a hash algorithm. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_setup(psa_hash_operation_t *operation, + psa_algorithm_t alg); + +/** Add a message fragment to a multipart hash operation. + * + * The application must call psa_hash_setup() before calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_hash_abort(). + * + * \param[in,out] operation Active hash operation. + * \param[in] input Buffer containing the message fragment to hash. + * \param input_length Size of the \p input buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it muct be active). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_update(psa_hash_operation_t *operation, + const uint8_t *input, + size_t input_length); + +/** Finish the calculation of the hash of a message. + * + * The application must call psa_hash_setup() before calling this function. + * This function calculates the hash of the message formed by concatenating + * the inputs passed to preceding calls to psa_hash_update(). + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_hash_abort(). + * + * \warning Applications should not call this function if they expect + * a specific value for the hash. Call psa_hash_verify() instead. + * Beware that comparing integrity or authenticity data such as + * hash values with a function such as \c memcmp is risky + * because the time taken by the comparison may leak information + * about the hashed data which could allow an attacker to guess + * a valid hash and thereby bypass security controls. + * + * \param[in,out] operation Active hash operation. + * \param[out] hash Buffer where the hash is to be written. + * \param hash_size Size of the \p hash buffer in bytes. + * \param[out] hash_length On success, the number of bytes + * that make up the hash value. This is always + * #PSA_HASH_LENGTH(\c alg) where \c alg is the + * hash algorithm that is calculated. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p hash buffer is too small. You can determine a + * sufficient buffer size by calling #PSA_HASH_LENGTH(\c alg) + * where \c alg is the hash algorithm that is calculated. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_finish(psa_hash_operation_t *operation, + uint8_t *hash, + size_t hash_size, + size_t *hash_length); + +/** Finish the calculation of the hash of a message and compare it with + * an expected value. + * + * The application must call psa_hash_setup() before calling this function. + * This function calculates the hash of the message formed by concatenating + * the inputs passed to preceding calls to psa_hash_update(). It then + * compares the calculated hash with the expected hash passed as a + * parameter to this function. + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_hash_abort(). + * + * \note Implementations shall make the best effort to ensure that the + * comparison between the actual hash and the expected hash is performed + * in constant time. + * + * \param[in,out] operation Active hash operation. + * \param[in] hash Buffer containing the expected hash value. + * \param hash_length Size of the \p hash buffer in bytes. + * + * \retval #PSA_SUCCESS + * The expected hash is identical to the actual hash of the message. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The hash of the message was calculated successfully, but it + * differs from the expected hash. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_verify(psa_hash_operation_t *operation, + const uint8_t *hash, + size_t hash_length); + +/** Abort a hash operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * psa_hash_setup() again. + * + * You may call this function any time after the operation object has + * been initialized by one of the methods described in #psa_hash_operation_t. + * + * In particular, calling psa_hash_abort() after the operation has been + * terminated by a call to psa_hash_abort(), psa_hash_finish() or + * psa_hash_verify() is safe and has no effect. + * + * \param[in,out] operation Initialized hash operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_abort(psa_hash_operation_t *operation); + +/** Clone a hash operation. + * + * This function copies the state of an ongoing hash operation to + * a new operation object. In other words, this function is equivalent + * to calling psa_hash_setup() on \p target_operation with the same + * algorithm that \p source_operation was set up for, then + * psa_hash_update() on \p target_operation with the same input that + * that was passed to \p source_operation. After this function returns, the + * two objects are independent, i.e. subsequent calls involving one of + * the objects do not affect the other object. + * + * \param[in] source_operation The active hash operation to clone. + * \param[in,out] target_operation The operation object to set up. + * It must be initialized but not active. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BAD_STATE + * The \p source_operation state is not valid (it must be active). + * \retval #PSA_ERROR_BAD_STATE + * The \p target_operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_clone(const psa_hash_operation_t *source_operation, + psa_hash_operation_t *target_operation); + +/**@}*/ + +/** \defgroup MAC Message authentication codes + * @{ + */ + +/** Calculate the MAC (message authentication code) of a message. + * + * \note To verify the MAC of a message against an + * expected value, use psa_mac_verify() instead. + * Beware that comparing integrity or authenticity data such as + * MAC values with a function such as \c memcmp is risky + * because the time taken by the comparison may leak information + * about the MAC value which could allow an attacker to guess + * a valid MAC and thereby bypass security controls. + * + * \param key Identifier of the key to use for the operation. It + * must allow the usage PSA_KEY_USAGE_SIGN_MESSAGE. + * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * \param[in] input Buffer containing the input message. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] mac Buffer where the MAC value is to be written. + * \param mac_size Size of the \p mac buffer in bytes. + * \param[out] mac_length On success, the number of bytes + * that make up the MAC value. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a MAC algorithm. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p mac_size is too small + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * The key could not be retrieved from storage. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_compute(mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *mac, + size_t mac_size, + size_t *mac_length); + +/** Calculate the MAC of a message and compare it with a reference value. + * + * \param key Identifier of the key to use for the operation. It + * must allow the usage PSA_KEY_USAGE_VERIFY_MESSAGE. + * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * \param[in] input Buffer containing the input message. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] mac Buffer containing the expected MAC value. + * \param mac_length Size of the \p mac buffer in bytes. + * + * \retval #PSA_SUCCESS + * The expected MAC is identical to the actual MAC of the input. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The MAC of the message was calculated successfully, but it + * differs from the expected value. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a MAC algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * The key could not be retrieved from storage. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_verify(mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *mac, + size_t mac_length); + +/** The type of the state data structure for multipart MAC operations. + * + * Before calling any function on a MAC operation object, the application must + * initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_mac_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_mac_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_MAC_OPERATION_INIT, + * for example: + * \code + * psa_mac_operation_t operation = PSA_MAC_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_mac_operation_init() + * to the structure, for example: + * \code + * psa_mac_operation_t operation; + * operation = psa_mac_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_mac_operation_s psa_mac_operation_t; + +/** \def PSA_MAC_OPERATION_INIT + * + * This macro returns a suitable initializer for a MAC operation object of type + * #psa_mac_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_MAC_OPERATION_INIT {0} +#endif + +/** Return an initial value for a MAC operation object. + */ +static psa_mac_operation_t psa_mac_operation_init(void); + +/** Set up a multipart MAC calculation operation. + * + * This function sets up the calculation of the MAC + * (message authentication code) of a byte string. + * To verify the MAC of a message against an + * expected value, use psa_mac_verify_setup() instead. + * + * The sequence of operations to calculate a MAC is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_mac_operation_t, e.g. #PSA_MAC_OPERATION_INIT. + * -# Call psa_mac_sign_setup() to specify the algorithm and key. + * -# Call psa_mac_update() zero, one or more times, passing a fragment + * of the message each time. The MAC that is calculated is the MAC + * of the concatenation of these messages in order. + * -# At the end of the message, call psa_mac_sign_finish() to finish + * calculating the MAC value and retrieve it. + * + * If an error occurs at any step after a call to psa_mac_sign_setup(), the + * operation will need to be reset by a call to psa_mac_abort(). The + * application may call psa_mac_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_mac_sign_setup(), the application must + * eventually terminate the operation through one of the following methods: + * - A successful call to psa_mac_sign_finish(). + * - A call to psa_mac_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_mac_operation_t and not yet in use. + * \param key Identifier of the key to use for the operation. It + * must remain valid until the operation terminates. + * It must allow the usage PSA_KEY_USAGE_SIGN_MESSAGE. + * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a MAC algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * The key could not be retrieved from storage. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, + mbedtls_svc_key_id_t key, + psa_algorithm_t alg); + +/** Set up a multipart MAC verification operation. + * + * This function sets up the verification of the MAC + * (message authentication code) of a byte string against an expected value. + * + * The sequence of operations to verify a MAC is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_mac_operation_t, e.g. #PSA_MAC_OPERATION_INIT. + * -# Call psa_mac_verify_setup() to specify the algorithm and key. + * -# Call psa_mac_update() zero, one or more times, passing a fragment + * of the message each time. The MAC that is calculated is the MAC + * of the concatenation of these messages in order. + * -# At the end of the message, call psa_mac_verify_finish() to finish + * calculating the actual MAC of the message and verify it against + * the expected value. + * + * If an error occurs at any step after a call to psa_mac_verify_setup(), the + * operation will need to be reset by a call to psa_mac_abort(). The + * application may call psa_mac_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_mac_verify_setup(), the application must + * eventually terminate the operation through one of the following methods: + * - A successful call to psa_mac_verify_finish(). + * - A call to psa_mac_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_mac_operation_t and not yet in use. + * \param key Identifier of the key to use for the operation. It + * must remain valid until the operation terminates. + * It must allow the usage + * PSA_KEY_USAGE_VERIFY_MESSAGE. + * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c key is not compatible with \c alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \c alg is not supported or is not a MAC algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * The key could not be retrieved from storage + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_verify_setup(psa_mac_operation_t *operation, + mbedtls_svc_key_id_t key, + psa_algorithm_t alg); + +/** Add a message fragment to a multipart MAC operation. + * + * The application must call psa_mac_sign_setup() or psa_mac_verify_setup() + * before calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_mac_abort(). + * + * \param[in,out] operation Active MAC operation. + * \param[in] input Buffer containing the message fragment to add to + * the MAC calculation. + * \param input_length Size of the \p input buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_update(psa_mac_operation_t *operation, + const uint8_t *input, + size_t input_length); + +/** Finish the calculation of the MAC of a message. + * + * The application must call psa_mac_sign_setup() before calling this function. + * This function calculates the MAC of the message formed by concatenating + * the inputs passed to preceding calls to psa_mac_update(). + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_mac_abort(). + * + * \warning Applications should not call this function if they expect + * a specific value for the MAC. Call psa_mac_verify_finish() instead. + * Beware that comparing integrity or authenticity data such as + * MAC values with a function such as \c memcmp is risky + * because the time taken by the comparison may leak information + * about the MAC value which could allow an attacker to guess + * a valid MAC and thereby bypass security controls. + * + * \param[in,out] operation Active MAC operation. + * \param[out] mac Buffer where the MAC value is to be written. + * \param mac_size Size of the \p mac buffer in bytes. + * \param[out] mac_length On success, the number of bytes + * that make up the MAC value. This is always + * #PSA_MAC_LENGTH(\c key_type, \c key_bits, \c alg) + * where \c key_type and \c key_bits are the type and + * bit-size respectively of the key and \c alg is the + * MAC algorithm that is calculated. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active mac sign + * operation). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p mac buffer is too small. You can determine a + * sufficient buffer size by calling PSA_MAC_LENGTH(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_sign_finish(psa_mac_operation_t *operation, + uint8_t *mac, + size_t mac_size, + size_t *mac_length); + +/** Finish the calculation of the MAC of a message and compare it with + * an expected value. + * + * The application must call psa_mac_verify_setup() before calling this function. + * This function calculates the MAC of the message formed by concatenating + * the inputs passed to preceding calls to psa_mac_update(). It then + * compares the calculated MAC with the expected MAC passed as a + * parameter to this function. + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_mac_abort(). + * + * \note Implementations shall make the best effort to ensure that the + * comparison between the actual MAC and the expected MAC is performed + * in constant time. + * + * \param[in,out] operation Active MAC operation. + * \param[in] mac Buffer containing the expected MAC value. + * \param mac_length Size of the \p mac buffer in bytes. + * + * \retval #PSA_SUCCESS + * The expected MAC is identical to the actual MAC of the message. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The MAC of the message was calculated successfully, but it + * differs from the expected MAC. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active mac verify + * operation). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation, + const uint8_t *mac, + size_t mac_length); + +/** Abort a MAC operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * psa_mac_sign_setup() or psa_mac_verify_setup() again. + * + * You may call this function any time after the operation object has + * been initialized by one of the methods described in #psa_mac_operation_t. + * + * In particular, calling psa_mac_abort() after the operation has been + * terminated by a call to psa_mac_abort(), psa_mac_sign_finish() or + * psa_mac_verify_finish() is safe and has no effect. + * + * \param[in,out] operation Initialized MAC operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_abort(psa_mac_operation_t *operation); + +/**@}*/ + +/** \defgroup cipher Symmetric ciphers + * @{ + */ + +/** Encrypt a message using a symmetric cipher. + * + * This function encrypts a message with a random IV (initialization + * vector). Use the multipart operation interface with a + * #psa_cipher_operation_t object to provide other forms of IV. + * + * \param key Identifier of the key to use for the operation. + * It must allow the usage #PSA_KEY_USAGE_ENCRYPT. + * \param alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * \param[in] input Buffer containing the message to encrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] output Buffer where the output is to be written. + * The output contains the IV followed by + * the ciphertext proper. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a cipher algorithm. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_encrypt(mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** Decrypt a message using a symmetric cipher. + * + * This function decrypts a message encrypted with a symmetric cipher. + * + * \param key Identifier of the key to use for the operation. + * It must remain valid until the operation + * terminates. It must allow the usage + * #PSA_KEY_USAGE_DECRYPT. + * \param alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * \param[in] input Buffer containing the message to decrypt. + * This consists of the IV followed by the + * ciphertext proper. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] output Buffer where the plaintext is to be written. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a cipher algorithm. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_decrypt(mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** The type of the state data structure for multipart cipher operations. + * + * Before calling any function on a cipher operation object, the application + * must initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_cipher_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_cipher_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_CIPHER_OPERATION_INIT, + * for example: + * \code + * psa_cipher_operation_t operation = PSA_CIPHER_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_cipher_operation_init() + * to the structure, for example: + * \code + * psa_cipher_operation_t operation; + * operation = psa_cipher_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_cipher_operation_s psa_cipher_operation_t; + +/** \def PSA_CIPHER_OPERATION_INIT + * + * This macro returns a suitable initializer for a cipher operation object of + * type #psa_cipher_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_CIPHER_OPERATION_INIT {0} +#endif + +/** Return an initial value for a cipher operation object. + */ +static psa_cipher_operation_t psa_cipher_operation_init(void); + +/** Set the key for a multipart symmetric encryption operation. + * + * The sequence of operations to encrypt a message with a symmetric cipher + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_cipher_operation_t, e.g. + * #PSA_CIPHER_OPERATION_INIT. + * -# Call psa_cipher_encrypt_setup() to specify the algorithm and key. + * -# Call either psa_cipher_generate_iv() or psa_cipher_set_iv() to + * generate or set the IV (initialization vector). You should use + * psa_cipher_generate_iv() unless the protocol you are implementing + * requires a specific IV value. + * -# Call psa_cipher_update() zero, one or more times, passing a fragment + * of the message each time. + * -# Call psa_cipher_finish(). + * + * If an error occurs at any step after a call to psa_cipher_encrypt_setup(), + * the operation will need to be reset by a call to psa_cipher_abort(). The + * application may call psa_cipher_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_cipher_encrypt_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to psa_cipher_finish(). + * - A call to psa_cipher_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_cipher_operation_t and not yet in use. + * \param key Identifier of the key to use for the operation. + * It must remain valid until the operation + * terminates. It must allow the usage + * #PSA_KEY_USAGE_ENCRYPT. + * \param alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a cipher algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, + mbedtls_svc_key_id_t key, + psa_algorithm_t alg); + +/** Set the key for a multipart symmetric decryption operation. + * + * The sequence of operations to decrypt a message with a symmetric cipher + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_cipher_operation_t, e.g. + * #PSA_CIPHER_OPERATION_INIT. + * -# Call psa_cipher_decrypt_setup() to specify the algorithm and key. + * -# Call psa_cipher_set_iv() with the IV (initialization vector) for the + * decryption. If the IV is prepended to the ciphertext, you can call + * psa_cipher_update() on a buffer containing the IV followed by the + * beginning of the message. + * -# Call psa_cipher_update() zero, one or more times, passing a fragment + * of the message each time. + * -# Call psa_cipher_finish(). + * + * If an error occurs at any step after a call to psa_cipher_decrypt_setup(), + * the operation will need to be reset by a call to psa_cipher_abort(). The + * application may call psa_cipher_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_cipher_decrypt_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to psa_cipher_finish(). + * - A call to psa_cipher_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_cipher_operation_t and not yet in use. + * \param key Identifier of the key to use for the operation. + * It must remain valid until the operation + * terminates. It must allow the usage + * #PSA_KEY_USAGE_DECRYPT. + * \param alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a cipher algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_decrypt_setup(psa_cipher_operation_t *operation, + mbedtls_svc_key_id_t key, + psa_algorithm_t alg); + +/** Generate an IV for a symmetric encryption operation. + * + * This function generates a random IV (initialization vector), nonce + * or initial counter value for the encryption operation as appropriate + * for the chosen algorithm, key type and key size. + * + * The application must call psa_cipher_encrypt_setup() before + * calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). + * + * \param[in,out] operation Active cipher operation. + * \param[out] iv Buffer where the generated IV is to be written. + * \param iv_size Size of the \p iv buffer in bytes. + * \param[out] iv_length On success, the number of bytes of the + * generated IV. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, with no IV set). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p iv buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_generate_iv(psa_cipher_operation_t *operation, + uint8_t *iv, + size_t iv_size, + size_t *iv_length); + +/** Set the IV for a symmetric encryption or decryption operation. + * + * This function sets the IV (initialization vector), nonce + * or initial counter value for the encryption or decryption operation. + * + * The application must call psa_cipher_encrypt_setup() before + * calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). + * + * \note When encrypting, applications should use psa_cipher_generate_iv() + * instead of this function, unless implementing a protocol that requires + * a non-random IV. + * + * \param[in,out] operation Active cipher operation. + * \param[in] iv Buffer containing the IV to use. + * \param iv_length Size of the IV in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active cipher + * encrypt operation, with no IV set). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The size of \p iv is not acceptable for the chosen algorithm, + * or the chosen algorithm does not use an IV. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_set_iv(psa_cipher_operation_t *operation, + const uint8_t *iv, + size_t iv_length); + +/** Encrypt or decrypt a message fragment in an active cipher operation. + * + * Before calling this function, you must: + * 1. Call either psa_cipher_encrypt_setup() or psa_cipher_decrypt_setup(). + * The choice of setup function determines whether this function + * encrypts or decrypts its input. + * 2. If the algorithm requires an IV, call psa_cipher_generate_iv() + * (recommended when encrypting) or psa_cipher_set_iv(). + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). + * + * \param[in,out] operation Active cipher operation. + * \param[in] input Buffer containing the message fragment to + * encrypt or decrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] output Buffer where the output is to be written. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, with an IV set + * if required for the algorithm). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_update(psa_cipher_operation_t *operation, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** Finish encrypting or decrypting a message in a cipher operation. + * + * The application must call psa_cipher_encrypt_setup() or + * psa_cipher_decrypt_setup() before calling this function. The choice + * of setup function determines whether this function encrypts or + * decrypts its input. + * + * This function finishes the encryption or decryption of the message + * formed by concatenating the inputs passed to preceding calls to + * psa_cipher_update(). + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). + * + * \param[in,out] operation Active cipher operation. + * \param[out] output Buffer where the output is to be written. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total input size passed to this operation is not valid for + * this particular algorithm. For example, the algorithm is a based + * on block cipher and requires a whole number of blocks, but the + * total input size is not a multiple of the block size. + * \retval #PSA_ERROR_INVALID_PADDING + * This is a decryption operation for an algorithm that includes + * padding, and the ciphertext does not contain valid padding. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, with an IV set + * if required for the algorithm). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_finish(psa_cipher_operation_t *operation, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** Abort a cipher operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * psa_cipher_encrypt_setup() or psa_cipher_decrypt_setup() again. + * + * You may call this function any time after the operation object has + * been initialized as described in #psa_cipher_operation_t. + * + * In particular, calling psa_cipher_abort() after the operation has been + * terminated by a call to psa_cipher_abort() or psa_cipher_finish() + * is safe and has no effect. + * + * \param[in,out] operation Initialized cipher operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_abort(psa_cipher_operation_t *operation); + +/**@}*/ + +/** \defgroup aead Authenticated encryption with associated data (AEAD) + * @{ + */ + +/** Process an authenticated encryption operation. + * + * \param key Identifier of the key to use for the + * operation. It must allow the usage + * #PSA_KEY_USAGE_ENCRYPT. + * \param alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param[in] nonce Nonce or IV to use. + * \param nonce_length Size of the \p nonce buffer in bytes. + * \param[in] additional_data Additional data that will be authenticated + * but not encrypted. + * \param additional_data_length Size of \p additional_data in bytes. + * \param[in] plaintext Data that will be authenticated and + * encrypted. + * \param plaintext_length Size of \p plaintext in bytes. + * \param[out] ciphertext Output buffer for the authenticated and + * encrypted data. The additional data is not + * part of this output. For algorithms where the + * encrypted data and the authentication tag + * are defined as separate outputs, the + * authentication tag is appended to the + * encrypted data. + * \param ciphertext_size Size of the \p ciphertext buffer in bytes. + * This must be appropriate for the selected + * algorithm and key: + * - A sufficient output size is + * #PSA_AEAD_ENCRYPT_OUTPUT_SIZE(\c key_type, + * \p alg, \p plaintext_length) where + * \c key_type is the type of \p key. + * - #PSA_AEAD_ENCRYPT_OUTPUT_MAX_SIZE(\p + * plaintext_length) evaluates to the maximum + * ciphertext size of any supported AEAD + * encryption. + * \param[out] ciphertext_length On success, the size of the output + * in the \p ciphertext buffer. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not an AEAD algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p ciphertext_size is too small. + * #PSA_AEAD_ENCRYPT_OUTPUT_SIZE(\c key_type, \p alg, + * \p plaintext_length) or + * #PSA_AEAD_ENCRYPT_OUTPUT_MAX_SIZE(\p plaintext_length) can be used to + * determine the required buffer size. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_encrypt(mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *plaintext, + size_t plaintext_length, + uint8_t *ciphertext, + size_t ciphertext_size, + size_t *ciphertext_length); + +/** Process an authenticated decryption operation. + * + * \param key Identifier of the key to use for the + * operation. It must allow the usage + * #PSA_KEY_USAGE_DECRYPT. + * \param alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param[in] nonce Nonce or IV to use. + * \param nonce_length Size of the \p nonce buffer in bytes. + * \param[in] additional_data Additional data that has been authenticated + * but not encrypted. + * \param additional_data_length Size of \p additional_data in bytes. + * \param[in] ciphertext Data that has been authenticated and + * encrypted. For algorithms where the + * encrypted data and the authentication tag + * are defined as separate inputs, the buffer + * must contain the encrypted data followed + * by the authentication tag. + * \param ciphertext_length Size of \p ciphertext in bytes. + * \param[out] plaintext Output buffer for the decrypted data. + * \param plaintext_size Size of the \p plaintext buffer in bytes. + * This must be appropriate for the selected + * algorithm and key: + * - A sufficient output size is + * #PSA_AEAD_DECRYPT_OUTPUT_SIZE(\c key_type, + * \p alg, \p ciphertext_length) where + * \c key_type is the type of \p key. + * - #PSA_AEAD_DECRYPT_OUTPUT_MAX_SIZE(\p + * ciphertext_length) evaluates to the maximum + * plaintext size of any supported AEAD + * decryption. + * \param[out] plaintext_length On success, the size of the output + * in the \p plaintext buffer. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The ciphertext is not authentic. + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not an AEAD algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p plaintext_size is too small. + * #PSA_AEAD_DECRYPT_OUTPUT_SIZE(\c key_type, \p alg, + * \p ciphertext_length) or + * #PSA_AEAD_DECRYPT_OUTPUT_MAX_SIZE(\p ciphertext_length) can be used + * to determine the required buffer size. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_decrypt(mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *ciphertext, + size_t ciphertext_length, + uint8_t *plaintext, + size_t plaintext_size, + size_t *plaintext_length); + +/** The type of the state data structure for multipart AEAD operations. + * + * Before calling any function on an AEAD operation object, the application + * must initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_aead_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_aead_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_AEAD_OPERATION_INIT, + * for example: + * \code + * psa_aead_operation_t operation = PSA_AEAD_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_aead_operation_init() + * to the structure, for example: + * \code + * psa_aead_operation_t operation; + * operation = psa_aead_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_aead_operation_s psa_aead_operation_t; + +/** \def PSA_AEAD_OPERATION_INIT + * + * This macro returns a suitable initializer for an AEAD operation object of + * type #psa_aead_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_AEAD_OPERATION_INIT {0} +#endif + +/** Return an initial value for an AEAD operation object. + */ +static psa_aead_operation_t psa_aead_operation_init(void); + +/** Set the key for a multipart authenticated encryption operation. + * + * The sequence of operations to encrypt a message with authentication + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_aead_operation_t, e.g. + * #PSA_AEAD_OPERATION_INIT. + * -# Call psa_aead_encrypt_setup() to specify the algorithm and key. + * -# If needed, call psa_aead_set_lengths() to specify the length of the + * inputs to the subsequent calls to psa_aead_update_ad() and + * psa_aead_update(). See the documentation of psa_aead_set_lengths() + * for details. + * -# Call either psa_aead_generate_nonce() or psa_aead_set_nonce() to + * generate or set the nonce. You should use + * psa_aead_generate_nonce() unless the protocol you are implementing + * requires a specific nonce value. + * -# Call psa_aead_update_ad() zero, one or more times, passing a fragment + * of the non-encrypted additional authenticated data each time. + * -# Call psa_aead_update() zero, one or more times, passing a fragment + * of the message to encrypt each time. + * -# Call psa_aead_finish(). + * + * If an error occurs at any step after a call to psa_aead_encrypt_setup(), + * the operation will need to be reset by a call to psa_aead_abort(). The + * application may call psa_aead_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_aead_encrypt_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to psa_aead_finish(). + * - A call to psa_aead_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_aead_operation_t and not yet in use. + * \param key Identifier of the key to use for the operation. + * It must remain valid until the operation + * terminates. It must allow the usage + * #PSA_KEY_USAGE_ENCRYPT. + * \param alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not an AEAD algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_encrypt_setup(psa_aead_operation_t *operation, + mbedtls_svc_key_id_t key, + psa_algorithm_t alg); + +/** Set the key for a multipart authenticated decryption operation. + * + * The sequence of operations to decrypt a message with authentication + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_aead_operation_t, e.g. + * #PSA_AEAD_OPERATION_INIT. + * -# Call psa_aead_decrypt_setup() to specify the algorithm and key. + * -# If needed, call psa_aead_set_lengths() to specify the length of the + * inputs to the subsequent calls to psa_aead_update_ad() and + * psa_aead_update(). See the documentation of psa_aead_set_lengths() + * for details. + * -# Call psa_aead_set_nonce() with the nonce for the decryption. + * -# Call psa_aead_update_ad() zero, one or more times, passing a fragment + * of the non-encrypted additional authenticated data each time. + * -# Call psa_aead_update() zero, one or more times, passing a fragment + * of the ciphertext to decrypt each time. + * -# Call psa_aead_verify(). + * + * If an error occurs at any step after a call to psa_aead_decrypt_setup(), + * the operation will need to be reset by a call to psa_aead_abort(). The + * application may call psa_aead_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_aead_decrypt_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to psa_aead_verify(). + * - A call to psa_aead_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_aead_operation_t and not yet in use. + * \param key Identifier of the key to use for the operation. + * It must remain valid until the operation + * terminates. It must allow the usage + * #PSA_KEY_USAGE_DECRYPT. + * \param alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not an AEAD algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_decrypt_setup(psa_aead_operation_t *operation, + mbedtls_svc_key_id_t key, + psa_algorithm_t alg); + +/** Generate a random nonce for an authenticated encryption operation. + * + * This function generates a random nonce for the authenticated encryption + * operation with an appropriate size for the chosen algorithm, key type + * and key size. + * + * The application must call psa_aead_encrypt_setup() before + * calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \param[in,out] operation Active AEAD operation. + * \param[out] nonce Buffer where the generated nonce is to be + * written. + * \param nonce_size Size of the \p nonce buffer in bytes. + * \param[out] nonce_length On success, the number of bytes of the + * generated nonce. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active aead encrypt + * operation, with no nonce set). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p nonce buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_generate_nonce(psa_aead_operation_t *operation, + uint8_t *nonce, + size_t nonce_size, + size_t *nonce_length); + +/** Set the nonce for an authenticated encryption or decryption operation. + * + * This function sets the nonce for the authenticated + * encryption or decryption operation. + * + * The application must call psa_aead_encrypt_setup() or + * psa_aead_decrypt_setup() before calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \note When encrypting, applications should use psa_aead_generate_nonce() + * instead of this function, unless implementing a protocol that requires + * a non-random IV. + * + * \param[in,out] operation Active AEAD operation. + * \param[in] nonce Buffer containing the nonce to use. + * \param nonce_length Size of the nonce in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, with no nonce + * set). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The size of \p nonce is not acceptable for the chosen algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_set_nonce(psa_aead_operation_t *operation, + const uint8_t *nonce, + size_t nonce_length); + +/** Declare the lengths of the message and additional data for AEAD. + * + * The application must call this function before calling + * psa_aead_update_ad() or psa_aead_update() if the algorithm for + * the operation requires it. If the algorithm does not require it, + * calling this function is optional, but if this function is called + * then the implementation must enforce the lengths. + * + * You may call this function before or after setting the nonce with + * psa_aead_set_nonce() or psa_aead_generate_nonce(). + * + * - For #PSA_ALG_CCM, calling this function is required. + * - For the other AEAD algorithms defined in this specification, calling + * this function is not required. + * - For vendor-defined algorithm, refer to the vendor documentation. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \param[in,out] operation Active AEAD operation. + * \param ad_length Size of the non-encrypted additional + * authenticated data in bytes. + * \param plaintext_length Size of the plaintext to encrypt in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, and + * psa_aead_update_ad() and psa_aead_update() must not have been + * called yet). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * At least one of the lengths is not acceptable for the chosen + * algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_set_lengths(psa_aead_operation_t *operation, + size_t ad_length, + size_t plaintext_length); + +/** Pass additional data to an active AEAD operation. + * + * Additional data is authenticated, but not encrypted. + * + * You may call this function multiple times to pass successive fragments + * of the additional data. You may not call this function after passing + * data to encrypt or decrypt with psa_aead_update(). + * + * Before calling this function, you must: + * 1. Call either psa_aead_encrypt_setup() or psa_aead_decrypt_setup(). + * 2. Set the nonce with psa_aead_generate_nonce() or psa_aead_set_nonce(). + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \warning When decrypting, until psa_aead_verify() has returned #PSA_SUCCESS, + * there is no guarantee that the input is valid. Therefore, until + * you have called psa_aead_verify() and it has returned #PSA_SUCCESS, + * treat the input as untrusted and prepare to undo any action that + * depends on the input if psa_aead_verify() returns an error status. + * + * \param[in,out] operation Active AEAD operation. + * \param[in] input Buffer containing the fragment of + * additional data. + * \param input_length Size of the \p input buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, have a nonce + * set, have lengths set if required by the algorithm, and + * psa_aead_update() must not have been called yet). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total input length overflows the additional data length that + * was previously specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_update_ad(psa_aead_operation_t *operation, + const uint8_t *input, + size_t input_length); + +/** Encrypt or decrypt a message fragment in an active AEAD operation. + * + * Before calling this function, you must: + * 1. Call either psa_aead_encrypt_setup() or psa_aead_decrypt_setup(). + * The choice of setup function determines whether this function + * encrypts or decrypts its input. + * 2. Set the nonce with psa_aead_generate_nonce() or psa_aead_set_nonce(). + * 3. Call psa_aead_update_ad() to pass all the additional data. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \warning When decrypting, until psa_aead_verify() has returned #PSA_SUCCESS, + * there is no guarantee that the input is valid. Therefore, until + * you have called psa_aead_verify() and it has returned #PSA_SUCCESS: + * - Do not use the output in any way other than storing it in a + * confidential location. If you take any action that depends + * on the tentative decrypted data, this action will need to be + * undone if the input turns out not to be valid. Furthermore, + * if an adversary can observe that this action took place + * (for example through timing), they may be able to use this + * fact as an oracle to decrypt any message encrypted with the + * same key. + * - In particular, do not copy the output anywhere but to a + * memory or storage space that you have exclusive access to. + * + * This function does not require the input to be aligned to any + * particular block boundary. If the implementation can only process + * a whole block at a time, it must consume all the input provided, but + * it may delay the end of the corresponding output until a subsequent + * call to psa_aead_update(), psa_aead_finish() or psa_aead_verify() + * provides sufficient input. The amount of data that can be delayed + * in this way is bounded by #PSA_AEAD_UPDATE_OUTPUT_SIZE. + * + * \param[in,out] operation Active AEAD operation. + * \param[in] input Buffer containing the message fragment to + * encrypt or decrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] output Buffer where the output is to be written. + * \param output_size Size of the \p output buffer in bytes. + * This must be appropriate for the selected + * algorithm and key: + * - A sufficient output size is + * #PSA_AEAD_UPDATE_OUTPUT_SIZE(\c key_type, + * \c alg, \p input_length) where + * \c key_type is the type of key and \c alg is + * the algorithm that were used to set up the + * operation. + * - #PSA_AEAD_UPDATE_OUTPUT_MAX_SIZE(\p + * input_length) evaluates to the maximum + * output size of any supported AEAD + * algorithm. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, have a nonce + * set, and have lengths set if required by the algorithm). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. + * #PSA_AEAD_UPDATE_OUTPUT_SIZE(\c key_type, \c alg, \p input_length) or + * #PSA_AEAD_UPDATE_OUTPUT_MAX_SIZE(\p input_length) can be used to + * determine the required buffer size. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total length of input to psa_aead_update_ad() so far is + * less than the additional data length that was previously + * specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total input length overflows the plaintext length that + * was previously specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_update(psa_aead_operation_t *operation, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** Finish encrypting a message in an AEAD operation. + * + * The operation must have been set up with psa_aead_encrypt_setup(). + * + * This function finishes the authentication of the additional data + * formed by concatenating the inputs passed to preceding calls to + * psa_aead_update_ad() with the plaintext formed by concatenating the + * inputs passed to preceding calls to psa_aead_update(). + * + * This function has two output buffers: + * - \p ciphertext contains trailing ciphertext that was buffered from + * preceding calls to psa_aead_update(). + * - \p tag contains the authentication tag. + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \param[in,out] operation Active AEAD operation. + * \param[out] ciphertext Buffer where the last part of the ciphertext + * is to be written. + * \param ciphertext_size Size of the \p ciphertext buffer in bytes. + * This must be appropriate for the selected + * algorithm and key: + * - A sufficient output size is + * #PSA_AEAD_FINISH_OUTPUT_SIZE(\c key_type, + * \c alg) where \c key_type is the type of key + * and \c alg is the algorithm that were used to + * set up the operation. + * - #PSA_AEAD_FINISH_OUTPUT_MAX_SIZE evaluates to + * the maximum output size of any supported AEAD + * algorithm. + * \param[out] ciphertext_length On success, the number of bytes of + * returned ciphertext. + * \param[out] tag Buffer where the authentication tag is + * to be written. + * \param tag_size Size of the \p tag buffer in bytes. + * This must be appropriate for the selected + * algorithm and key: + * - The exact tag size is #PSA_AEAD_TAG_LENGTH(\c + * key_type, \c key_bits, \c alg) where + * \c key_type and \c key_bits are the type and + * bit-size of the key, and \c alg is the + * algorithm that were used in the call to + * psa_aead_encrypt_setup(). + * - #PSA_AEAD_TAG_MAX_SIZE evaluates to the + * maximum tag size of any supported AEAD + * algorithm. + * \param[out] tag_length On success, the number of bytes + * that make up the returned tag. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active encryption + * operation with a nonce set). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p ciphertext or \p tag buffer is too small. + * #PSA_AEAD_FINISH_OUTPUT_SIZE(\c key_type, \c alg) or + * #PSA_AEAD_FINISH_OUTPUT_MAX_SIZE can be used to determine the + * required \p ciphertext buffer size. #PSA_AEAD_TAG_LENGTH(\c key_type, + * \c key_bits, \c alg) or #PSA_AEAD_TAG_MAX_SIZE can be used to + * determine the required \p tag buffer size. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total length of input to psa_aead_update_ad() so far is + * less than the additional data length that was previously + * specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total length of input to psa_aead_update() so far is + * less than the plaintext length that was previously + * specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_finish(psa_aead_operation_t *operation, + uint8_t *ciphertext, + size_t ciphertext_size, + size_t *ciphertext_length, + uint8_t *tag, + size_t tag_size, + size_t *tag_length); + +/** Finish authenticating and decrypting a message in an AEAD operation. + * + * The operation must have been set up with psa_aead_decrypt_setup(). + * + * This function finishes the authenticated decryption of the message + * components: + * + * - The additional data consisting of the concatenation of the inputs + * passed to preceding calls to psa_aead_update_ad(). + * - The ciphertext consisting of the concatenation of the inputs passed to + * preceding calls to psa_aead_update(). + * - The tag passed to this function call. + * + * If the authentication tag is correct, this function outputs any remaining + * plaintext and reports success. If the authentication tag is not correct, + * this function returns #PSA_ERROR_INVALID_SIGNATURE. + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \note Implementations shall make the best effort to ensure that the + * comparison between the actual tag and the expected tag is performed + * in constant time. + * + * \param[in,out] operation Active AEAD operation. + * \param[out] plaintext Buffer where the last part of the plaintext + * is to be written. This is the remaining data + * from previous calls to psa_aead_update() + * that could not be processed until the end + * of the input. + * \param plaintext_size Size of the \p plaintext buffer in bytes. + * This must be appropriate for the selected algorithm and key: + * - A sufficient output size is + * #PSA_AEAD_VERIFY_OUTPUT_SIZE(\c key_type, + * \c alg) where \c key_type is the type of key + * and \c alg is the algorithm that were used to + * set up the operation. + * - #PSA_AEAD_VERIFY_OUTPUT_MAX_SIZE evaluates to + * the maximum output size of any supported AEAD + * algorithm. + * \param[out] plaintext_length On success, the number of bytes of + * returned plaintext. + * \param[in] tag Buffer containing the authentication tag. + * \param tag_length Size of the \p tag buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The calculations were successful, but the authentication tag is + * not correct. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active decryption + * operation with a nonce set). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p plaintext buffer is too small. + * #PSA_AEAD_VERIFY_OUTPUT_SIZE(\c key_type, \c alg) or + * #PSA_AEAD_VERIFY_OUTPUT_MAX_SIZE can be used to determine the + * required buffer size. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total length of input to psa_aead_update_ad() so far is + * less than the additional data length that was previously + * specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total length of input to psa_aead_update() so far is + * less than the plaintext length that was previously + * specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_verify(psa_aead_operation_t *operation, + uint8_t *plaintext, + size_t plaintext_size, + size_t *plaintext_length, + const uint8_t *tag, + size_t tag_length); + +/** Abort an AEAD operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * psa_aead_encrypt_setup() or psa_aead_decrypt_setup() again. + * + * You may call this function any time after the operation object has + * been initialized as described in #psa_aead_operation_t. + * + * In particular, calling psa_aead_abort() after the operation has been + * terminated by a call to psa_aead_abort(), psa_aead_finish() or + * psa_aead_verify() is safe and has no effect. + * + * \param[in,out] operation Initialized AEAD operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_abort(psa_aead_operation_t *operation); + +/**@}*/ + +/** \defgroup asymmetric Asymmetric cryptography + * @{ + */ + +/** + * \brief Sign a message with a private key. For hash-and-sign algorithms, + * this includes the hashing step. + * + * \note To perform a multi-part hash-and-sign signature algorithm, first use + * a multi-part hash operation and then pass the resulting hash to + * psa_sign_hash(). PSA_ALG_GET_HASH(\p alg) can be used to determine the + * hash algorithm to use. + * + * \param[in] key Identifier of the key to use for the operation. + * It must be an asymmetric key pair. The key must + * allow the usage #PSA_KEY_USAGE_SIGN_MESSAGE. + * \param[in] alg An asymmetric signature algorithm (PSA_ALG_XXX + * value such that #PSA_ALG_IS_SIGN_MESSAGE(\p alg) + * is true), that is compatible with the type of + * \p key. + * \param[in] input The input message to sign. + * \param[in] input_length Size of the \p input buffer in bytes. + * \param[out] signature Buffer where the signature is to be written. + * \param[in] signature_size Size of the \p signature buffer in bytes. This + * must be appropriate for the selected + * algorithm and key: + * - The required signature size is + * #PSA_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and + * bit-size respectively of key. + * - #PSA_SIGNATURE_MAX_SIZE evaluates to the + * maximum signature size of any supported + * signature algorithm. + * \param[out] signature_length On success, the number of bytes that make up + * the returned signature value. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * The key does not have the #PSA_KEY_USAGE_SIGN_MESSAGE flag, + * or it does not permit the requested algorithm. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p signature buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and bit-size + * respectively of \p key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_DATA_CORRUPT + * \retval #PSA_ERROR_DATA_INVALID + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_sign_message( mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t * input, + size_t input_length, + uint8_t * signature, + size_t signature_size, + size_t * signature_length ); + +/** \brief Verify the signature of a message with a public key, using + * a hash-and-sign verification algorithm. + * + * \note To perform a multi-part hash-and-sign signature verification + * algorithm, first use a multi-part hash operation to hash the message + * and then pass the resulting hash to psa_verify_hash(). + * PSA_ALG_GET_HASH(\p alg) can be used to determine the hash algorithm + * to use. + * + * \param[in] key Identifier of the key to use for the operation. + * It must be a public key or an asymmetric key + * pair. The key must allow the usage + * #PSA_KEY_USAGE_VERIFY_MESSAGE. + * \param[in] alg An asymmetric signature algorithm (PSA_ALG_XXX + * value such that #PSA_ALG_IS_SIGN_MESSAGE(\p alg) + * is true), that is compatible with the type of + * \p key. + * \param[in] input The message whose signature is to be verified. + * \param[in] input_length Size of the \p input buffer in bytes. + * \param[out] signature Buffer containing the signature to verify. + * \param[in] signature_length Size of the \p signature buffer in bytes. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * The key does not have the #PSA_KEY_USAGE_SIGN_MESSAGE flag, + * or it does not permit the requested algorithm. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The calculation was performed successfully, but the passed signature + * is not a valid signature. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_DATA_CORRUPT + * \retval #PSA_ERROR_DATA_INVALID + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_verify_message( mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t * input, + size_t input_length, + const uint8_t * signature, + size_t signature_length ); + +/** + * \brief Sign a hash or short message with a private key. + * + * Note that to perform a hash-and-sign signature algorithm, you must + * first calculate the hash by calling psa_hash_setup(), psa_hash_update() + * and psa_hash_finish(), or alternatively by calling psa_hash_compute(). + * Then pass the resulting hash as the \p hash + * parameter to this function. You can use #PSA_ALG_SIGN_GET_HASH(\p alg) + * to determine the hash algorithm to use. + * + * \param key Identifier of the key to use for the operation. + * It must be an asymmetric key pair. The key must + * allow the usage #PSA_KEY_USAGE_SIGN_HASH. + * \param alg A signature algorithm (PSA_ALG_XXX + * value such that #PSA_ALG_IS_SIGN_HASH(\p alg) + * is true), that is compatible with + * the type of \p key. + * \param[in] hash The hash or message to sign. + * \param hash_length Size of the \p hash buffer in bytes. + * \param[out] signature Buffer where the signature is to be written. + * \param signature_size Size of the \p signature buffer in bytes. + * \param[out] signature_length On success, the number of bytes + * that make up the returned signature value. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p signature buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and bit-size + * respectively of \p key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_sign_hash(mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + uint8_t *signature, + size_t signature_size, + size_t *signature_length); + +/** + * \brief Verify the signature of a hash or short message using a public key. + * + * Note that to perform a hash-and-sign signature algorithm, you must + * first calculate the hash by calling psa_hash_setup(), psa_hash_update() + * and psa_hash_finish(), or alternatively by calling psa_hash_compute(). + * Then pass the resulting hash as the \p hash + * parameter to this function. You can use #PSA_ALG_SIGN_GET_HASH(\p alg) + * to determine the hash algorithm to use. + * + * \param key Identifier of the key to use for the operation. It + * must be a public key or an asymmetric key pair. The + * key must allow the usage + * #PSA_KEY_USAGE_VERIFY_HASH. + * \param alg A signature algorithm (PSA_ALG_XXX + * value such that #PSA_ALG_IS_SIGN_HASH(\p alg) + * is true), that is compatible with + * the type of \p key. + * \param[in] hash The hash or message whose signature is to be + * verified. + * \param hash_length Size of the \p hash buffer in bytes. + * \param[in] signature Buffer containing the signature to verify. + * \param signature_length Size of the \p signature buffer in bytes. + * + * \retval #PSA_SUCCESS + * The signature is valid. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The calculation was perfomed successfully, but the passed + * signature is not a valid signature. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_verify_hash(mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + const uint8_t *signature, + size_t signature_length); + +/** + * \brief Encrypt a short message with a public key. + * + * \param key Identifer of the key to use for the operation. + * It must be a public key or an asymmetric key + * pair. It must allow the usage + * #PSA_KEY_USAGE_ENCRYPT. + * \param alg An asymmetric encryption algorithm that is + * compatible with the type of \p key. + * \param[in] input The message to encrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[in] salt A salt or label, if supported by the + * encryption algorithm. + * If the algorithm does not support a + * salt, pass \c NULL. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass \c NULL. + * + * - For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param salt_length Size of the \p salt buffer in bytes. + * If \p salt is \c NULL, pass 0. + * \param[out] output Buffer where the encrypted message is to + * be written. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_ASYMMETRIC_ENCRYPT_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and bit-size + * respectively of \p key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_asymmetric_encrypt(mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *salt, + size_t salt_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** + * \brief Decrypt a short message with a private key. + * + * \param key Identifier of the key to use for the operation. + * It must be an asymmetric key pair. It must + * allow the usage #PSA_KEY_USAGE_DECRYPT. + * \param alg An asymmetric encryption algorithm that is + * compatible with the type of \p key. + * \param[in] input The message to decrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[in] salt A salt or label, if supported by the + * encryption algorithm. + * If the algorithm does not support a + * salt, pass \c NULL. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass \c NULL. + * + * - For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param salt_length Size of the \p salt buffer in bytes. + * If \p salt is \c NULL, pass 0. + * \param[out] output Buffer where the decrypted message is to + * be written. + * \param output_size Size of the \c output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_ASYMMETRIC_DECRYPT_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and bit-size + * respectively of \p key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_INVALID_PADDING + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_asymmetric_decrypt(mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *salt, + size_t salt_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/**@}*/ + +/** \defgroup key_derivation Key derivation and pseudorandom generation + * @{ + */ + +/** The type of the state data structure for key derivation operations. + * + * Before calling any function on a key derivation operation object, the + * application must initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_key_derivation_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_key_derivation_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_KEY_DERIVATION_OPERATION_INIT, + * for example: + * \code + * psa_key_derivation_operation_t operation = PSA_KEY_DERIVATION_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_key_derivation_operation_init() + * to the structure, for example: + * \code + * psa_key_derivation_operation_t operation; + * operation = psa_key_derivation_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. + */ +typedef struct psa_key_derivation_s psa_key_derivation_operation_t; + +/** \def PSA_KEY_DERIVATION_OPERATION_INIT + * + * This macro returns a suitable initializer for a key derivation operation + * object of type #psa_key_derivation_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_KEY_DERIVATION_OPERATION_INIT {0} +#endif + +/** Return an initial value for a key derivation operation object. + */ +static psa_key_derivation_operation_t psa_key_derivation_operation_init(void); + +/** Set up a key derivation operation. + * + * A key derivation algorithm takes some inputs and uses them to generate + * a byte stream in a deterministic way. + * This byte stream can be used to produce keys and other + * cryptographic material. + * + * To derive a key: + * -# Start with an initialized object of type #psa_key_derivation_operation_t. + * -# Call psa_key_derivation_setup() to select the algorithm. + * -# Provide the inputs for the key derivation by calling + * psa_key_derivation_input_bytes() or psa_key_derivation_input_key() + * as appropriate. Which inputs are needed, in what order, and whether + * they may be keys and if so of what type depends on the algorithm. + * -# Optionally set the operation's maximum capacity with + * psa_key_derivation_set_capacity(). You may do this before, in the middle + * of or after providing inputs. For some algorithms, this step is mandatory + * because the output depends on the maximum capacity. + * -# To derive a key, call psa_key_derivation_output_key(). + * To derive a byte string for a different purpose, call + * psa_key_derivation_output_bytes(). + * Successive calls to these functions use successive output bytes + * calculated by the key derivation algorithm. + * -# Clean up the key derivation operation object with + * psa_key_derivation_abort(). + * + * If this function returns an error, the key derivation operation object is + * not changed. + * + * If an error occurs at any step after a call to psa_key_derivation_setup(), + * the operation will need to be reset by a call to psa_key_derivation_abort(). + * + * Implementations must reject an attempt to derive a key of size 0. + * + * \param[in,out] operation The key derivation operation object + * to set up. It must + * have been initialized but not set up yet. + * \param alg The key derivation algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_KEY_DERIVATION(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c alg is not a key derivation algorithm. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \c alg is not supported or is not a key derivation algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_setup( + psa_key_derivation_operation_t *operation, + psa_algorithm_t alg); + +/** Retrieve the current capacity of a key derivation operation. + * + * The capacity of a key derivation is the maximum number of bytes that it can + * return. When you get *N* bytes of output from a key derivation operation, + * this reduces its capacity by *N*. + * + * \param[in] operation The operation to query. + * \param[out] capacity On success, the capacity of the operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_get_capacity( + const psa_key_derivation_operation_t *operation, + size_t *capacity); + +/** Set the maximum capacity of a key derivation operation. + * + * The capacity of a key derivation operation is the maximum number of bytes + * that the key derivation operation can return from this point onwards. + * + * \param[in,out] operation The key derivation operation object to modify. + * \param capacity The new capacity of the operation. + * It must be less or equal to the operation's + * current capacity. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p capacity is larger than the operation's current capacity. + * In this case, the operation object remains valid and its capacity + * remains unchanged. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_set_capacity( + psa_key_derivation_operation_t *operation, + size_t capacity); + +/** Use the maximum possible capacity for a key derivation operation. + * + * Use this value as the capacity argument when setting up a key derivation + * to indicate that the operation should have the maximum possible capacity. + * The value of the maximum possible capacity depends on the key derivation + * algorithm. + */ +#define PSA_KEY_DERIVATION_UNLIMITED_CAPACITY ((size_t)(-1)) + +/** Provide an input for key derivation or key agreement. + * + * Which inputs are required and in what order depends on the algorithm. + * Refer to the documentation of each key derivation or key agreement + * algorithm for information. + * + * This function passes direct inputs, which is usually correct for + * non-secret inputs. To pass a secret input, which should be in a key + * object, call psa_key_derivation_input_key() instead of this function. + * Refer to the documentation of individual step types + * (`PSA_KEY_DERIVATION_INPUT_xxx` values of type ::psa_key_derivation_step_t) + * for more information. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * + * \param[in,out] operation The key derivation operation object to use. + * It must have been set up with + * psa_key_derivation_setup() and must not + * have produced any output yet. + * \param step Which step the input data is for. + * \param[in] data Input data to use. + * \param data_length Size of the \p data buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step is not compatible with the operation's algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step does not allow direct inputs. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid for this input \p step. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_input_bytes( + psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + const uint8_t *data, + size_t data_length); + +/** Provide an input for key derivation in the form of a key. + * + * Which inputs are required and in what order depends on the algorithm. + * Refer to the documentation of each key derivation or key agreement + * algorithm for information. + * + * This function obtains input from a key object, which is usually correct for + * secret inputs or for non-secret personalization strings kept in the key + * store. To pass a non-secret parameter which is not in the key store, + * call psa_key_derivation_input_bytes() instead of this function. + * Refer to the documentation of individual step types + * (`PSA_KEY_DERIVATION_INPUT_xxx` values of type ::psa_key_derivation_step_t) + * for more information. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * + * \param[in,out] operation The key derivation operation object to use. + * It must have been set up with + * psa_key_derivation_setup() and must not + * have produced any output yet. + * \param step Which step the input data is for. + * \param key Identifier of the key. It must have an + * appropriate type for step and must allow the + * usage #PSA_KEY_USAGE_DERIVE. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step is not compatible with the operation's algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step does not allow key inputs of the given type + * or does not allow key inputs at all. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid for this input \p step. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_input_key( + psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + mbedtls_svc_key_id_t key); + +/** Perform a key agreement and use the shared secret as input to a key + * derivation. + * + * A key agreement algorithm takes two inputs: a private key \p private_key + * a public key \p peer_key. + * The result of this function is passed as input to a key derivation. + * The output of this key derivation can be extracted by reading from the + * resulting operation to produce keys and other cryptographic material. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * + * \param[in,out] operation The key derivation operation object to use. + * It must have been set up with + * psa_key_derivation_setup() with a + * key agreement and derivation algorithm + * \c alg (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_KEY_AGREEMENT(\c alg) is true + * and #PSA_ALG_IS_RAW_KEY_AGREEMENT(\c alg) + * is false). + * The operation must be ready for an + * input of the type given by \p step. + * \param step Which step the input data is for. + * \param private_key Identifier of the private key to use. It must + * allow the usage #PSA_KEY_USAGE_DERIVE. + * \param[in] peer_key Public key of the peer. The peer key must be in the + * same format that psa_import_key() accepts for the + * public key type corresponding to the type of + * private_key. That is, this function performs the + * equivalent of + * #psa_import_key(..., + * `peer_key`, `peer_key_length`) where + * with key attributes indicating the public key + * type corresponding to the type of `private_key`. + * For example, for EC keys, this means that peer_key + * is interpreted as a point on the curve that the + * private key is on. The standard formats for public + * keys are documented in the documentation of + * psa_export_public_key(). + * \param peer_key_length Size of \p peer_key in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid for this key agreement \p step. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c private_key is not compatible with \c alg, + * or \p peer_key is not valid for \c alg or not compatible with + * \c private_key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \c alg is not supported or is not a key derivation algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step does not allow an input resulting from a key agreement. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_key_agreement( + psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + mbedtls_svc_key_id_t private_key, + const uint8_t *peer_key, + size_t peer_key_length); + +/** Read some data from a key derivation operation. + * + * This function calculates output bytes from a key derivation algorithm and + * return those bytes. + * If you view the key derivation's output as a stream of bytes, this + * function destructively reads the requested number of bytes from the + * stream. + * The operation's capacity decreases by the number of bytes read. + * + * If this function returns an error status other than + * #PSA_ERROR_INSUFFICIENT_DATA, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * + * \param[in,out] operation The key derivation operation object to read from. + * \param[out] output Buffer where the output will be written. + * \param output_length Number of bytes to output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INSUFFICIENT_DATA + * The operation's capacity was less than + * \p output_length bytes. Note that in this case, + * no output is written to the output buffer. + * The operation's capacity is set to 0, thus + * subsequent calls to this function will not + * succeed, even with a smaller output buffer. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active and completed + * all required input steps). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_output_bytes( + psa_key_derivation_operation_t *operation, + uint8_t *output, + size_t output_length); + +/** Derive a key from an ongoing key derivation operation. + * + * This function calculates output bytes from a key derivation algorithm + * and uses those bytes to generate a key deterministically. + * The key's location, usage policy, type and size are taken from + * \p attributes. + * + * If you view the key derivation's output as a stream of bytes, this + * function destructively reads as many bytes as required from the + * stream. + * The operation's capacity decreases by the number of bytes read. + * + * If this function returns an error status other than + * #PSA_ERROR_INSUFFICIENT_DATA, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * + * How much output is produced and consumed from the operation, and how + * the key is derived, depends on the key type and on the key size + * (denoted \c bits below): + * + * - For key types for which the key is an arbitrary sequence of bytes + * of a given size, this function is functionally equivalent to + * calling #psa_key_derivation_output_bytes + * and passing the resulting output to #psa_import_key. + * However, this function has a security benefit: + * if the implementation provides an isolation boundary then + * the key material is not exposed outside the isolation boundary. + * As a consequence, for these key types, this function always consumes + * exactly (\c bits / 8) bytes from the operation. + * The following key types defined in this specification follow this scheme: + * + * - #PSA_KEY_TYPE_AES; + * - #PSA_KEY_TYPE_ARC4; + * - #PSA_KEY_TYPE_ARIA; + * - #PSA_KEY_TYPE_CAMELLIA; + * - #PSA_KEY_TYPE_DERIVE; + * - #PSA_KEY_TYPE_HMAC. + * + * - For ECC keys on a Montgomery elliptic curve + * (#PSA_KEY_TYPE_ECC_KEY_PAIR(\c curve) where \c curve designates a + * Montgomery curve), this function always draws a byte string whose + * length is determined by the curve, and sets the mandatory bits + * accordingly. That is: + * + * - Curve25519 (#PSA_ECC_FAMILY_MONTGOMERY, 255 bits): draw a 32-byte + * string and process it as specified in RFC 7748 §5. + * - Curve448 (#PSA_ECC_FAMILY_MONTGOMERY, 448 bits): draw a 56-byte + * string and process it as specified in RFC 7748 §5. + * + * - For key types for which the key is represented by a single sequence of + * \c bits bits with constraints as to which bit sequences are acceptable, + * this function draws a byte string of length (\c bits / 8) bytes rounded + * up to the nearest whole number of bytes. If the resulting byte string + * is acceptable, it becomes the key, otherwise the drawn bytes are discarded. + * This process is repeated until an acceptable byte string is drawn. + * The byte string drawn from the operation is interpreted as specified + * for the output produced by psa_export_key(). + * The following key types defined in this specification follow this scheme: + * + * - #PSA_KEY_TYPE_DES. + * Force-set the parity bits, but discard forbidden weak keys. + * For 2-key and 3-key triple-DES, the three keys are generated + * successively (for example, for 3-key triple-DES, + * if the first 8 bytes specify a weak key and the next 8 bytes do not, + * discard the first 8 bytes, use the next 8 bytes as the first key, + * and continue reading output from the operation to derive the other + * two keys). + * - Finite-field Diffie-Hellman keys (#PSA_KEY_TYPE_DH_KEY_PAIR(\c group) + * where \c group designates any Diffie-Hellman group) and + * ECC keys on a Weierstrass elliptic curve + * (#PSA_KEY_TYPE_ECC_KEY_PAIR(\c curve) where \c curve designates a + * Weierstrass curve). + * For these key types, interpret the byte string as integer + * in big-endian order. Discard it if it is not in the range + * [0, *N* - 2] where *N* is the boundary of the private key domain + * (the prime *p* for Diffie-Hellman, the subprime *q* for DSA, + * or the order of the curve's base point for ECC). + * Add 1 to the resulting integer and use this as the private key *x*. + * This method allows compliance to NIST standards, specifically + * the methods titled "key-pair generation by testing candidates" + * in NIST SP 800-56A §5.6.1.1.4 for Diffie-Hellman, + * in FIPS 186-4 §B.1.2 for DSA, and + * in NIST SP 800-56A §5.6.1.2.2 or + * FIPS 186-4 §B.4.2 for elliptic curve keys. + * + * - For other key types, including #PSA_KEY_TYPE_RSA_KEY_PAIR, + * the way in which the operation output is consumed is + * implementation-defined. + * + * In all cases, the data that is read is discarded from the operation. + * The operation's capacity is decreased by the number of bytes read. + * + * For algorithms that take an input step #PSA_KEY_DERIVATION_INPUT_SECRET, + * the input to that step must be provided with psa_key_derivation_input_key(). + * Future versions of this specification may include additional restrictions + * on the derived key based on the attributes and strength of the secret key. + * + * \param[in] attributes The attributes for the new key. + * \param[in,out] operation The key derivation operation object to read from. + * \param[out] key On success, an identifier for the newly created + * key. For persistent keys, this is the key + * identifier defined in \p attributes. + * \c 0 on failure. + * + * \retval #PSA_SUCCESS + * Success. + * If the key is persistent, the key material and the key's metadata + * have been saved to persistent storage. + * \retval #PSA_ERROR_ALREADY_EXISTS + * This is an attempt to create a persistent key, and there is + * already a persistent key with the given identifier. + * \retval #PSA_ERROR_INSUFFICIENT_DATA + * There was not enough data to create the desired key. + * Note that in this case, no output is written to the output buffer. + * The operation's capacity is set to 0, thus subsequent calls to + * this function will not succeed, even with a smaller output buffer. + * \retval #PSA_ERROR_NOT_SUPPORTED + * The key type or key size is not supported, either by the + * implementation in general or in this particular location. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The provided key attributes are not valid for the operation. + * \retval #PSA_ERROR_NOT_PERMITTED + * The #PSA_KEY_DERIVATION_INPUT_SECRET input was not provided through + * a key. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active and completed + * all required input steps). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_DATA_INVALID + * \retval #PSA_ERROR_DATA_CORRUPT + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_output_key( + const psa_key_attributes_t *attributes, + psa_key_derivation_operation_t *operation, + mbedtls_svc_key_id_t *key); + +/** Abort a key derivation operation. + * + * Aborting an operation frees all associated resources except for the \c + * operation structure itself. Once aborted, the operation object can be reused + * for another operation by calling psa_key_derivation_setup() again. + * + * This function may be called at any time after the operation + * object has been initialized as described in #psa_key_derivation_operation_t. + * + * In particular, it is valid to call psa_key_derivation_abort() twice, or to + * call psa_key_derivation_abort() on an operation that has not been set up. + * + * \param[in,out] operation The operation to abort. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_abort( + psa_key_derivation_operation_t *operation); + +/** Perform a key agreement and return the raw shared secret. + * + * \warning The raw result of a key agreement algorithm such as finite-field + * Diffie-Hellman or elliptic curve Diffie-Hellman has biases and should + * not be used directly as key material. It should instead be passed as + * input to a key derivation algorithm. To chain a key agreement with + * a key derivation, use psa_key_derivation_key_agreement() and other + * functions from the key derivation interface. + * + * \param alg The key agreement algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_RAW_KEY_AGREEMENT(\p alg) + * is true). + * \param private_key Identifier of the private key to use. It must + * allow the usage #PSA_KEY_USAGE_DERIVE. + * \param[in] peer_key Public key of the peer. It must be + * in the same format that psa_import_key() + * accepts. The standard formats for public + * keys are documented in the documentation + * of psa_export_public_key(). + * \param peer_key_length Size of \p peer_key in bytes. + * \param[out] output Buffer where the decrypted message is to + * be written. + * \param output_size Size of the \c output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p alg is not a key agreement algorithm + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p private_key is not compatible with \p alg, + * or \p peer_key is not valid for \p alg or not compatible with + * \p private_key. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p output_size is too small + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not a supported key agreement algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_raw_key_agreement(psa_algorithm_t alg, + mbedtls_svc_key_id_t private_key, + const uint8_t *peer_key, + size_t peer_key_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/**@}*/ + +/** \defgroup random Random generation + * @{ + */ + +/** + * \brief Generate random bytes. + * + * \warning This function **can** fail! Callers MUST check the return status + * and MUST NOT use the content of the output buffer if the return + * status is not #PSA_SUCCESS. + * + * \note To generate a key, use psa_generate_key() instead. + * + * \param[out] output Output buffer for the generated data. + * \param output_size Number of bytes to generate and output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_generate_random(uint8_t *output, + size_t output_size); + +/** + * \brief Generate a key or key pair. + * + * The key is generated randomly. + * Its location, usage policy, type and size are taken from \p attributes. + * + * Implementations must reject an attempt to generate a key of size 0. + * + * The following type-specific considerations apply: + * - For RSA keys (#PSA_KEY_TYPE_RSA_KEY_PAIR), + * the public exponent is 65537. + * The modulus is a product of two probabilistic primes + * between 2^{n-1} and 2^n where n is the bit size specified in the + * attributes. + * + * \param[in] attributes The attributes for the new key. + * \param[out] key On success, an identifier for the newly created + * key. For persistent keys, this is the key + * identifier defined in \p attributes. + * \c 0 on failure. + * + * \retval #PSA_SUCCESS + * Success. + * If the key is persistent, the key material and the key's metadata + * have been saved to persistent storage. + * \retval #PSA_ERROR_ALREADY_EXISTS + * This is an attempt to create a persistent key, and there is + * already a persistent key with the given identifier. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_DATA_INVALID + * \retval #PSA_ERROR_DATA_CORRUPT + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_generate_key(const psa_key_attributes_t *attributes, + mbedtls_svc_key_id_t *key); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +/* The file "crypto_sizes.h" contains definitions for size calculation + * macros whose definitions are implementation-specific. */ +#include "crypto_sizes.h" + +/* The file "crypto_struct.h" contains definitions for + * implementation-specific structs that are declared above. */ +#include "crypto_struct.h" + +/* The file "crypto_extra.h" contains vendor-specific definitions. This + * can include vendor-defined algorithms, extra functions, etc. */ +#include "crypto_extra.h" + +#endif /* PSA_CRYPTO_H */ diff --git a/Externals/mbedtls/include/psa/crypto_builtin_composites.h b/Externals/mbedtls/include/psa/crypto_builtin_composites.h new file mode 100644 index 000000000000..a875b2370415 --- /dev/null +++ b/Externals/mbedtls/include/psa/crypto_builtin_composites.h @@ -0,0 +1,79 @@ +/* + * Context structure declaration of the Mbed TLS software-based PSA drivers + * called through the PSA Crypto driver dispatch layer. + * This file contains the context structures of those algorithms which need to + * rely on other algorithms, i.e. are 'composite' algorithms. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * \note This header and its content is not part of the Mbed TLS API and + * applications must not depend on it. Its main purpose is to define the + * multi-part state objects of the Mbed TLS software-based PSA drivers. The + * definition of these objects are then used by crypto_struct.h to define the + * implementation-defined types of PSA multi-part state objects. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_BUILTIN_COMPOSITES_H +#define PSA_CRYPTO_BUILTIN_COMPOSITES_H + +#include + +/* + * MAC multi-part operation definitions. + */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CMAC) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_HMAC) +#define MBEDTLS_PSA_BUILTIN_MAC +#endif + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HMAC) || defined(PSA_CRYPTO_DRIVER_TEST) +typedef struct +{ + /** The HMAC algorithm in use */ + psa_algorithm_t alg; + /** The hash context. */ + struct psa_hash_operation_s hash_ctx; + /** The HMAC part of the context. */ + uint8_t opad[PSA_HMAC_MAX_HASH_BLOCK_SIZE]; +} mbedtls_psa_hmac_operation_t; + +#define MBEDTLS_PSA_HMAC_OPERATION_INIT {0, PSA_HASH_OPERATION_INIT, {0}} +#endif /* MBEDTLS_PSA_BUILTIN_ALG_HMAC */ + +#include "mbedtls/cmac.h" + +typedef struct +{ + psa_algorithm_t alg; + union + { + unsigned dummy; /* Make the union non-empty even with no supported algorithms. */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HMAC) || defined(PSA_CRYPTO_DRIVER_TEST) + mbedtls_psa_hmac_operation_t hmac; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_HMAC */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CMAC) || defined(PSA_CRYPTO_DRIVER_TEST) + mbedtls_cipher_context_t cmac; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CMAC */ + } ctx; +} mbedtls_psa_mac_operation_t; + +#define MBEDTLS_PSA_MAC_OPERATION_INIT {0, {0}} + +#endif /* PSA_CRYPTO_BUILTIN_COMPOSITES_H */ diff --git a/Externals/mbedtls/include/psa/crypto_builtin_primitives.h b/Externals/mbedtls/include/psa/crypto_builtin_primitives.h new file mode 100644 index 000000000000..62a0e6f37047 --- /dev/null +++ b/Externals/mbedtls/include/psa/crypto_builtin_primitives.h @@ -0,0 +1,126 @@ +/* + * Context structure declaration of the Mbed TLS software-based PSA drivers + * called through the PSA Crypto driver dispatch layer. + * This file contains the context structures of those algorithms which do not + * rely on other algorithms, i.e. are 'primitive' algorithms. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * \note This header and its content is not part of the Mbed TLS API and + * applications must not depend on it. Its main purpose is to define the + * multi-part state objects of the Mbed TLS software-based PSA drivers. The + * definition of these objects are then used by crypto_struct.h to define the + * implementation-defined types of PSA multi-part state objects. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_BUILTIN_PRIMITIVES_H +#define PSA_CRYPTO_BUILTIN_PRIMITIVES_H + +#include + +/* + * Hash multi-part operation definitions. + */ + +#include "mbedtls/md2.h" +#include "mbedtls/md4.h" +#include "mbedtls/md5.h" +#include "mbedtls/ripemd160.h" +#include "mbedtls/sha1.h" +#include "mbedtls/sha256.h" +#include "mbedtls/sha512.h" + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD2) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_MD4) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_MD5) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_1) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_224) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_256) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_384) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_512) +#define MBEDTLS_PSA_BUILTIN_HASH +#endif + +typedef struct +{ + psa_algorithm_t alg; + union + { + unsigned dummy; /* Make the union non-empty even with no supported algorithms. */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD2) + mbedtls_md2_context md2; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD4) + mbedtls_md4_context md4; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD5) + mbedtls_md5_context md5; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160) + mbedtls_ripemd160_context ripemd160; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_1) + mbedtls_sha1_context sha1; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_256) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_224) + mbedtls_sha256_context sha256; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_512) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_384) + mbedtls_sha512_context sha512; +#endif + } ctx; +} mbedtls_psa_hash_operation_t; + +#define MBEDTLS_PSA_HASH_OPERATION_INIT {0, {0}} + +/* + * Cipher multi-part operation definitions. + */ + +#include "mbedtls/cipher.h" + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_CTR) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_CFB) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_OFB) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_XTS) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7) +#define MBEDTLS_PSA_BUILTIN_CIPHER 1 +#endif + +typedef struct { + /* Context structure for the Mbed TLS cipher implementation. */ + psa_algorithm_t alg; + uint8_t iv_length; + uint8_t block_length; + union { + unsigned int dummy; + mbedtls_cipher_context_t cipher; + } ctx; +} mbedtls_psa_cipher_operation_t; + +#define MBEDTLS_PSA_CIPHER_OPERATION_INIT {0, 0, 0, {0}} + +#endif /* PSA_CRYPTO_BUILTIN_PRIMITIVES_H */ diff --git a/Externals/mbedtls/include/psa/crypto_compat.h b/Externals/mbedtls/include/psa/crypto_compat.h new file mode 100644 index 000000000000..09ac488398fa --- /dev/null +++ b/Externals/mbedtls/include/psa/crypto_compat.h @@ -0,0 +1,528 @@ +/** + * \file psa/crypto_compat.h + * + * \brief PSA cryptography module: Backward compatibility aliases + * + * This header declares alternative names for macro and functions. + * New application code should not use these names. + * These names may be removed in a future version of Mbed Crypto. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_COMPAT_H +#define PSA_CRYPTO_COMPAT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * To support both openless APIs and psa_open_key() temporarily, define + * psa_key_handle_t to be equal to mbedtls_svc_key_id_t. Do not mark the + * type and its utility macros and functions deprecated yet. This will be done + * in a subsequent phase. + */ +typedef mbedtls_svc_key_id_t psa_key_handle_t; + +#define PSA_KEY_HANDLE_INIT MBEDTLS_SVC_KEY_ID_INIT + +/** Check whether an handle is null. + * + * \param handle Handle + * + * \return Non-zero if the handle is null, zero otherwise. + */ +static inline int psa_key_handle_is_null( psa_key_handle_t handle ) +{ + return( mbedtls_svc_key_id_is_null( handle ) ); +} + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) + +/* + * Mechanism for declaring deprecated values + */ +#if defined(MBEDTLS_DEPRECATED_WARNING) && !defined(MBEDTLS_PSA_DEPRECATED) +#define MBEDTLS_PSA_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_PSA_DEPRECATED +#endif + +typedef MBEDTLS_PSA_DEPRECATED size_t mbedtls_deprecated_size_t; +typedef MBEDTLS_PSA_DEPRECATED psa_status_t mbedtls_deprecated_psa_status_t; +typedef MBEDTLS_PSA_DEPRECATED psa_key_usage_t mbedtls_deprecated_psa_key_usage_t; +typedef MBEDTLS_PSA_DEPRECATED psa_ecc_family_t mbedtls_deprecated_psa_ecc_family_t; +typedef MBEDTLS_PSA_DEPRECATED psa_dh_family_t mbedtls_deprecated_psa_dh_family_t; +typedef MBEDTLS_PSA_DEPRECATED psa_ecc_family_t psa_ecc_curve_t; +typedef MBEDTLS_PSA_DEPRECATED psa_dh_family_t psa_dh_group_t; +typedef MBEDTLS_PSA_DEPRECATED psa_algorithm_t mbedtls_deprecated_psa_algorithm_t; + +#define PSA_KEY_TYPE_GET_CURVE PSA_KEY_TYPE_ECC_GET_FAMILY +#define PSA_KEY_TYPE_GET_GROUP PSA_KEY_TYPE_DH_GET_FAMILY + +#define MBEDTLS_DEPRECATED_CONSTANT( type, value ) \ + ( (mbedtls_deprecated_##type) ( value ) ) + +/* + * Deprecated PSA Crypto error code definitions (PSA Crypto API <= 1.0 beta2) + */ +#define PSA_ERROR_UNKNOWN_ERROR \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_GENERIC_ERROR ) +#define PSA_ERROR_OCCUPIED_SLOT \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_ALREADY_EXISTS ) +#define PSA_ERROR_EMPTY_SLOT \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_DOES_NOT_EXIST ) +#define PSA_ERROR_INSUFFICIENT_CAPACITY \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_INSUFFICIENT_DATA ) +#define PSA_ERROR_TAMPERING_DETECTED \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_CORRUPTION_DETECTED ) + +/* + * Deprecated PSA Crypto numerical encodings (PSA Crypto API <= 1.0 beta3) + */ +#define PSA_KEY_USAGE_SIGN \ + MBEDTLS_DEPRECATED_CONSTANT( psa_key_usage_t, PSA_KEY_USAGE_SIGN_HASH ) +#define PSA_KEY_USAGE_VERIFY \ + MBEDTLS_DEPRECATED_CONSTANT( psa_key_usage_t, PSA_KEY_USAGE_VERIFY_HASH ) + +/* + * Deprecated PSA Crypto size calculation macros (PSA Crypto API <= 1.0 beta3) + */ +#define PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_SIGNATURE_MAX_SIZE ) +#define PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE( key_type, key_bits, alg ) \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_SIGN_OUTPUT_SIZE( key_type, key_bits, alg ) ) +#define PSA_KEY_EXPORT_MAX_SIZE( key_type, key_bits ) \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_EXPORT_KEY_OUTPUT_SIZE( key_type, key_bits ) ) +#define PSA_BLOCK_CIPHER_BLOCK_SIZE( type ) \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_BLOCK_CIPHER_BLOCK_LENGTH( type ) ) +#define PSA_MAX_BLOCK_CIPHER_BLOCK_SIZE \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE ) +#define PSA_HASH_SIZE( alg ) \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_HASH_LENGTH( alg ) ) +#define PSA_MAC_FINAL_SIZE( key_type, key_bits, alg ) \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_MAC_LENGTH( key_type, key_bits, alg ) ) +#define PSA_ALG_TLS12_PSK_TO_MS_MAX_PSK_LEN \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_TLS12_PSK_TO_MS_PSK_MAX_SIZE ) + +/* + * Deprecated PSA Crypto function names (PSA Crypto API <= 1.0 beta3) + */ +MBEDTLS_PSA_DEPRECATED static inline psa_status_t psa_asymmetric_sign( psa_key_handle_t key, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + uint8_t *signature, + size_t signature_size, + size_t *signature_length ) +{ + return psa_sign_hash( key, alg, hash, hash_length, signature, signature_size, signature_length ); +} + +MBEDTLS_PSA_DEPRECATED static inline psa_status_t psa_asymmetric_verify( psa_key_handle_t key, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + const uint8_t *signature, + size_t signature_length ) +{ + return psa_verify_hash( key, alg, hash, hash_length, signature, signature_length ); +} + +/* + * Size-specific elliptic curve families. + */ +#define PSA_ECC_CURVE_SECP160K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_K1 ) +#define PSA_ECC_CURVE_SECP192K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_K1 ) +#define PSA_ECC_CURVE_SECP224K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_K1 ) +#define PSA_ECC_CURVE_SECP256K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_K1 ) +#define PSA_ECC_CURVE_SECP160R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1 ) +#define PSA_ECC_CURVE_SECP192R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1 ) +#define PSA_ECC_CURVE_SECP224R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1 ) +#define PSA_ECC_CURVE_SECP256R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1 ) +#define PSA_ECC_CURVE_SECP384R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1 ) +#define PSA_ECC_CURVE_SECP521R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1 ) +#define PSA_ECC_CURVE_SECP160R2 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R2 ) +#define PSA_ECC_CURVE_SECT163K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1 ) +#define PSA_ECC_CURVE_SECT233K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1 ) +#define PSA_ECC_CURVE_SECT239K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1 ) +#define PSA_ECC_CURVE_SECT283K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1 ) +#define PSA_ECC_CURVE_SECT409K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1 ) +#define PSA_ECC_CURVE_SECT571K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1 ) +#define PSA_ECC_CURVE_SECT163R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1 ) +#define PSA_ECC_CURVE_SECT193R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1 ) +#define PSA_ECC_CURVE_SECT233R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1 ) +#define PSA_ECC_CURVE_SECT283R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1 ) +#define PSA_ECC_CURVE_SECT409R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1 ) +#define PSA_ECC_CURVE_SECT571R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1 ) +#define PSA_ECC_CURVE_SECT163R2 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R2 ) +#define PSA_ECC_CURVE_SECT193R2 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R2 ) +#define PSA_ECC_CURVE_BRAINPOOL_P256R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_BRAINPOOL_P_R1 ) +#define PSA_ECC_CURVE_BRAINPOOL_P384R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_BRAINPOOL_P_R1 ) +#define PSA_ECC_CURVE_BRAINPOOL_P512R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_BRAINPOOL_P_R1 ) +#define PSA_ECC_CURVE_CURVE25519 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_MONTGOMERY ) +#define PSA_ECC_CURVE_CURVE448 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_MONTGOMERY ) + +/* + * Curves that changed name due to PSA specification. + */ +#define PSA_ECC_CURVE_SECP_K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_K1 ) +#define PSA_ECC_CURVE_SECP_R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1 ) +#define PSA_ECC_CURVE_SECP_R2 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R2 ) +#define PSA_ECC_CURVE_SECT_K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1 ) +#define PSA_ECC_CURVE_SECT_R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1 ) +#define PSA_ECC_CURVE_SECT_R2 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R2 ) +#define PSA_ECC_CURVE_BRAINPOOL_P_R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_BRAINPOOL_P_R1 ) +#define PSA_ECC_CURVE_MONTGOMERY \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_MONTGOMERY ) + +/* + * Finite-field Diffie-Hellman families. + */ +#define PSA_DH_GROUP_FFDHE2048 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_family_t, PSA_DH_FAMILY_RFC7919 ) +#define PSA_DH_GROUP_FFDHE3072 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_family_t, PSA_DH_FAMILY_RFC7919 ) +#define PSA_DH_GROUP_FFDHE4096 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_family_t, PSA_DH_FAMILY_RFC7919 ) +#define PSA_DH_GROUP_FFDHE6144 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_family_t, PSA_DH_FAMILY_RFC7919 ) +#define PSA_DH_GROUP_FFDHE8192 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_family_t, PSA_DH_FAMILY_RFC7919 ) + +/* + * Diffie-Hellman families that changed name due to PSA specification. + */ +#define PSA_DH_GROUP_RFC7919 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_family_t, PSA_DH_FAMILY_RFC7919 ) +#define PSA_DH_GROUP_CUSTOM \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_family_t, PSA_DH_FAMILY_CUSTOM ) + +/* + * Deprecated PSA Crypto stream cipher algorithms (PSA Crypto API <= 1.0 beta3) + */ +#define PSA_ALG_ARC4 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_algorithm_t, PSA_ALG_STREAM_CIPHER ) +#define PSA_ALG_CHACHA20 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_algorithm_t, PSA_ALG_STREAM_CIPHER ) + +/* + * Renamed AEAD tag length macros (PSA Crypto API <= 1.0 beta3) + */ +#define PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH( aead_alg ) \ + MBEDTLS_DEPRECATED_CONSTANT( psa_algorithm_t, PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG( aead_alg ) ) +#define PSA_ALG_AEAD_WITH_TAG_LENGTH( aead_alg, tag_length ) \ + MBEDTLS_DEPRECATED_CONSTANT( psa_algorithm_t, PSA_ALG_AEAD_WITH_SHORTENED_TAG( aead_alg, tag_length ) ) + +/* + * Deprecated PSA AEAD output size macros (PSA Crypto API <= 1.0 beta3) + */ + +/** The tag size for an AEAD algorithm, in bytes. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return The tag size for the specified algorithm. + * If the AEAD algorithm does not have an identified + * tag that can be distinguished from the rest of + * the ciphertext, return 0. + * If the AEAD algorithm is not recognized, return 0. + */ +#define PSA_AEAD_TAG_LENGTH_1_ARG( alg ) \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, \ + PSA_ALG_IS_AEAD( alg ) ? \ + PSA_ALG_AEAD_GET_TAG_LENGTH( alg ) : \ + 0 ) + +/** The maximum size of the output of psa_aead_encrypt(), in bytes. + * + * If the size of the ciphertext buffer is at least this large, it is + * guaranteed that psa_aead_encrypt() will not fail due to an + * insufficient buffer size. Depending on the algorithm, the actual size of + * the ciphertext may be smaller. + * + * \warning This macro may evaluate its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param plaintext_length Size of the plaintext in bytes. + * + * \return The AEAD ciphertext size for the specified + * algorithm. + * If the AEAD algorithm is not recognized, return 0. + */ +#define PSA_AEAD_ENCRYPT_OUTPUT_SIZE_2_ARG( alg, plaintext_length ) \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, \ + PSA_ALG_IS_AEAD( alg ) ? \ + (plaintext_length) + PSA_ALG_AEAD_GET_TAG_LENGTH( alg ) : \ + 0 ) + +/** The maximum size of the output of psa_aead_decrypt(), in bytes. + * + * If the size of the plaintext buffer is at least this large, it is + * guaranteed that psa_aead_decrypt() will not fail due to an + * insufficient buffer size. Depending on the algorithm, the actual size of + * the plaintext may be smaller. + * + * \warning This macro may evaluate its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param ciphertext_length Size of the plaintext in bytes. + * + * \return The AEAD ciphertext size for the specified + * algorithm. + * If the AEAD algorithm is not recognized, return 0. + */ +#define PSA_AEAD_DECRYPT_OUTPUT_SIZE_2_ARG( alg, ciphertext_length ) \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, \ + PSA_ALG_IS_AEAD( alg ) && \ + (ciphertext_length) > PSA_ALG_AEAD_GET_TAG_LENGTH( alg ) ? \ + (ciphertext_length) - PSA_ALG_AEAD_GET_TAG_LENGTH( alg ) : \ + 0 ) + +/** A sufficient output buffer size for psa_aead_update(). + * + * If the size of the output buffer is at least this large, it is + * guaranteed that psa_aead_update() will not fail due to an + * insufficient buffer size. The actual size of the output may be smaller + * in any given call. + * + * \warning This macro may evaluate its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param input_length Size of the input in bytes. + * + * \return A sufficient output buffer size for the specified + * algorithm. + * If the AEAD algorithm is not recognized, return 0. + */ +/* For all the AEAD modes defined in this specification, it is possible + * to emit output without delay. However, hardware may not always be + * capable of this. So for modes based on a block cipher, allow the + * implementation to delay the output until it has a full block. */ +#define PSA_AEAD_UPDATE_OUTPUT_SIZE_2_ARG( alg, input_length ) \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, \ + PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER( alg ) ? \ + PSA_ROUND_UP_TO_MULTIPLE( PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE, (input_length) ) : \ + (input_length) ) + +/** A sufficient ciphertext buffer size for psa_aead_finish(). + * + * If the size of the ciphertext buffer is at least this large, it is + * guaranteed that psa_aead_finish() will not fail due to an + * insufficient ciphertext buffer size. The actual size of the output may + * be smaller in any given call. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return A sufficient ciphertext buffer size for the + * specified algorithm. + * If the AEAD algorithm is not recognized, return 0. + */ +#define PSA_AEAD_FINISH_OUTPUT_SIZE_1_ARG( alg ) \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, \ + PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER( alg ) ? \ + PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE : \ + 0 ) + +/** A sufficient plaintext buffer size for psa_aead_verify(). + * + * If the size of the plaintext buffer is at least this large, it is + * guaranteed that psa_aead_verify() will not fail due to an + * insufficient plaintext buffer size. The actual size of the output may + * be smaller in any given call. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return A sufficient plaintext buffer size for the + * specified algorithm. + * If the AEAD algorithm is not recognized, return 0. + */ +#define PSA_AEAD_VERIFY_OUTPUT_SIZE_1_ARG( alg ) \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, \ + PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER( alg ) ? \ + PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE : \ + 0 ) + +#endif /* MBEDTLS_DEPRECATED_REMOVED */ + +/** Open a handle to an existing persistent key. + * + * Open a handle to a persistent key. A key is persistent if it was created + * with a lifetime other than #PSA_KEY_LIFETIME_VOLATILE. A persistent key + * always has a nonzero key identifier, set with psa_set_key_id() when + * creating the key. Implementations may provide additional pre-provisioned + * keys that can be opened with psa_open_key(). Such keys have an application + * key identifier in the vendor range, as documented in the description of + * #psa_key_id_t. + * + * The application must eventually close the handle with psa_close_key() or + * psa_destroy_key() to release associated resources. If the application dies + * without calling one of these functions, the implementation should perform + * the equivalent of a call to psa_close_key(). + * + * Some implementations permit an application to open the same key multiple + * times. If this is successful, each call to psa_open_key() will return a + * different key handle. + * + * \note This API is not part of the PSA Cryptography API Release 1.0.0 + * specification. It was defined in the 1.0 Beta 3 version of the + * specification but was removed in the 1.0.0 released version. This API is + * kept for the time being to not break applications relying on it. It is not + * deprecated yet but will be in the near future. + * + * \note Applications that rely on opening a key multiple times will not be + * portable to implementations that only permit a single key handle to be + * opened. See also :ref:\`key-handles\`. + * + * + * \param key The persistent identifier of the key. + * \param[out] handle On success, a handle to the key. + * + * \retval #PSA_SUCCESS + * Success. The application can now use the value of `*handle` + * to access the key. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * The implementation does not have sufficient resources to open the + * key. This can be due to reaching an implementation limit on the + * number of open keys, the number of open key handles, or available + * memory. + * \retval #PSA_ERROR_DOES_NOT_EXIST + * There is no persistent key with key identifier \p key. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p key is not a valid persistent key identifier. + * \retval #PSA_ERROR_NOT_PERMITTED + * The specified key exists, but the application does not have the + * permission to access it. Note that this specification does not + * define any way to create such a key, but it may be possible + * through implementation-specific means. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_DATA_INVALID + * \retval #PSA_ERROR_DATA_CORRUPT + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_open_key( mbedtls_svc_key_id_t key, + psa_key_handle_t *handle ); + +/** Close a key handle. + * + * If the handle designates a volatile key, this will destroy the key material + * and free all associated resources, just like psa_destroy_key(). + * + * If this is the last open handle to a persistent key, then closing the handle + * will free all resources associated with the key in volatile memory. The key + * data in persistent storage is not affected and can be opened again later + * with a call to psa_open_key(). + * + * Closing the key handle makes the handle invalid, and the key handle + * must not be used again by the application. + * + * \note This API is not part of the PSA Cryptography API Release 1.0.0 + * specification. It was defined in the 1.0 Beta 3 version of the + * specification but was removed in the 1.0.0 released version. This API is + * kept for the time being to not break applications relying on it. It is not + * deprecated yet but will be in the near future. + * + * \note If the key handle was used to set up an active + * :ref:\`multipart operation \`, then closing the + * key handle can cause the multipart operation to fail. Applications should + * maintain the key handle until after the multipart operation has finished. + * + * \param handle The key handle to close. + * If this is \c 0, do nothing and return \c PSA_SUCCESS. + * + * \retval #PSA_SUCCESS + * \p handle was a valid handle or \c 0. It is now closed. + * \retval #PSA_ERROR_INVALID_HANDLE + * \p handle is not a valid handle nor \c 0. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_close_key(psa_key_handle_t handle); + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_COMPAT_H */ diff --git a/Externals/mbedtls/include/psa/crypto_config.h b/Externals/mbedtls/include/psa/crypto_config.h new file mode 100644 index 000000000000..e2446cb26c4b --- /dev/null +++ b/Externals/mbedtls/include/psa/crypto_config.h @@ -0,0 +1,129 @@ +/** + * \file psa/crypto_config.h + * \brief PSA crypto configuration options (set of defines) + * + */ +#if defined(MBEDTLS_PSA_CRYPTO_CONFIG) +/** + * When #MBEDTLS_PSA_CRYPTO_CONFIG is enabled in config.h, + * this file determines which cryptographic mechanisms are enabled + * through the PSA Cryptography API (\c psa_xxx() functions). + * + * To enable a cryptographic mechanism, uncomment the definition of + * the corresponding \c PSA_WANT_xxx preprocessor symbol. + * To disable a cryptographic mechanism, comment out the definition of + * the corresponding \c PSA_WANT_xxx preprocessor symbol. + * The names of cryptographic mechanisms correspond to values + * defined in psa/crypto_values.h, with the prefix \c PSA_WANT_ instead + * of \c PSA_. + * + * Note that many cryptographic mechanisms involve two symbols: one for + * the key type (\c PSA_WANT_KEY_TYPE_xxx) and one for the algorithm + * (\c PSA_WANT_ALG_xxx). Mechanisms with additional parameters may involve + * additional symbols. + */ +#else +/** + * When \c MBEDTLS_PSA_CRYPTO_CONFIG is disabled in config.h, + * this file is not used, and cryptographic mechanisms are supported + * through the PSA API if and only if they are supported through the + * mbedtls_xxx API. + */ +#endif +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_CONFIG_H +#define PSA_CRYPTO_CONFIG_H + +/* + * CBC-MAC is not yet supported via the PSA API in Mbed TLS. + */ +//#define PSA_WANT_ALG_CBC_MAC 1 +#define PSA_WANT_ALG_CBC_NO_PADDING 1 +#define PSA_WANT_ALG_CBC_PKCS7 1 +#define PSA_WANT_ALG_CCM 1 +#define PSA_WANT_ALG_CMAC 1 +#define PSA_WANT_ALG_CFB 1 +#define PSA_WANT_ALG_CHACHA20_POLY1305 1 +#define PSA_WANT_ALG_CMAC 1 +#define PSA_WANT_ALG_CTR 1 +#define PSA_WANT_ALG_DETERMINISTIC_ECDSA 1 +#define PSA_WANT_ALG_ECB_NO_PADDING 1 +#define PSA_WANT_ALG_ECDH 1 +#define PSA_WANT_ALG_ECDSA 1 +#define PSA_WANT_ALG_GCM 1 +#define PSA_WANT_ALG_HKDF 1 +#define PSA_WANT_ALG_HMAC 1 +#define PSA_WANT_ALG_MD2 1 +#define PSA_WANT_ALG_MD4 1 +#define PSA_WANT_ALG_MD5 1 +#define PSA_WANT_ALG_OFB 1 +#define PSA_WANT_ALG_RIPEMD160 1 +#define PSA_WANT_ALG_RSA_OAEP 1 +#define PSA_WANT_ALG_RSA_PKCS1V15_CRYPT 1 +#define PSA_WANT_ALG_RSA_PKCS1V15_SIGN 1 +#define PSA_WANT_ALG_RSA_PSS 1 +#define PSA_WANT_ALG_SHA_1 1 +#define PSA_WANT_ALG_SHA_224 1 +#define PSA_WANT_ALG_SHA_256 1 +#define PSA_WANT_ALG_SHA_384 1 +#define PSA_WANT_ALG_SHA_512 1 +#define PSA_WANT_ALG_STREAM_CIPHER 1 +#define PSA_WANT_ALG_TLS12_PRF 1 +#define PSA_WANT_ALG_TLS12_PSK_TO_MS 1 +#define PSA_WANT_ALG_XTS 1 + +#define PSA_WANT_ECC_BRAINPOOL_P_R1_256 1 +#define PSA_WANT_ECC_BRAINPOOL_P_R1_384 1 +#define PSA_WANT_ECC_BRAINPOOL_P_R1_512 1 +#define PSA_WANT_ECC_MONTGOMERY_255 1 +/* + * Curve448 is not yet supported via the PSA API in Mbed TLS + * (https://github.com/ARMmbed/mbedtls/issues/4249). Thus, do not enable it by + * default. + */ +//#define PSA_WANT_ECC_MONTGOMERY_448 1 +#define PSA_WANT_ECC_SECP_K1_192 1 +/* + * SECP224K1 is buggy via the PSA API in Mbed TLS + * (https://github.com/ARMmbed/mbedtls/issues/3541). Thus, do not enable it by + * default. + */ +//#define PSA_WANT_ECC_SECP_K1_224 1 +#define PSA_WANT_ECC_SECP_K1_256 1 +#define PSA_WANT_ECC_SECP_R1_192 1 +#define PSA_WANT_ECC_SECP_R1_224 1 +#define PSA_WANT_ECC_SECP_R1_256 1 +#define PSA_WANT_ECC_SECP_R1_384 1 +#define PSA_WANT_ECC_SECP_R1_521 1 + +#define PSA_WANT_KEY_TYPE_DERIVE 1 +#define PSA_WANT_KEY_TYPE_HMAC 1 +#define PSA_WANT_KEY_TYPE_AES 1 +#define PSA_WANT_KEY_TYPE_ARC4 1 +#define PSA_WANT_KEY_TYPE_ARIA 1 +#define PSA_WANT_KEY_TYPE_CAMELLIA 1 +#define PSA_WANT_KEY_TYPE_CHACHA20 1 +#define PSA_WANT_KEY_TYPE_DES 1 +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR 1 +#define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY 1 +#define PSA_WANT_KEY_TYPE_RAW_DATA 1 +#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR 1 +#define PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY 1 + +#endif /* PSA_CRYPTO_CONFIG_H */ diff --git a/Externals/mbedtls/include/psa/crypto_driver_common.h b/Externals/mbedtls/include/psa/crypto_driver_common.h new file mode 100644 index 000000000000..26363c6b2f3e --- /dev/null +++ b/Externals/mbedtls/include/psa/crypto_driver_common.h @@ -0,0 +1,56 @@ +/** + * \file psa/crypto_driver_common.h + * \brief Definitions for all PSA crypto drivers + * + * This file contains common definitions shared by all PSA crypto drivers. + * Do not include it directly: instead, include the header file(s) for + * the type(s) of driver that you are implementing. For example, if + * you are writing a dynamically registered driver for a secure element, + * include `psa/crypto_se_driver.h`. + * + * This file is part of the PSA Crypto Driver Model, containing functions for + * driver developers to implement to enable hardware to be called in a + * standardized way by a PSA Cryptographic API implementation. The functions + * comprising the driver model, which driver authors implement, are not + * intended to be called by application developers. + */ + +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef PSA_CRYPTO_DRIVER_COMMON_H +#define PSA_CRYPTO_DRIVER_COMMON_H + +#include +#include + +/* Include type definitions (psa_status_t, psa_algorithm_t, + * psa_key_type_t, etc.) and macros to build and analyze values + * of these types. */ +#include "crypto_types.h" +#include "crypto_values.h" +/* Include size definitions which are used to size some arrays in operation + * structures. */ +#include + +/** For encrypt-decrypt functions, whether the operation is an encryption + * or a decryption. */ +typedef enum { + PSA_CRYPTO_DRIVER_DECRYPT, + PSA_CRYPTO_DRIVER_ENCRYPT +} psa_encrypt_or_decrypt_t; + +#endif /* PSA_CRYPTO_DRIVER_COMMON_H */ diff --git a/Externals/mbedtls/include/psa/crypto_driver_contexts_composites.h b/Externals/mbedtls/include/psa/crypto_driver_contexts_composites.h new file mode 100644 index 000000000000..a7220091ea3b --- /dev/null +++ b/Externals/mbedtls/include/psa/crypto_driver_contexts_composites.h @@ -0,0 +1,93 @@ +/* + * Declaration of context structures for use with the PSA driver wrapper + * interface. This file contains the context structures for 'composite' + * operations, i.e. those operations which need to make use of other operations + * from the primitives (crypto_driver_contexts_primitives.h) + * + * Warning: This file will be auto-generated in the future. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * \note This header and its content is not part of the Mbed TLS API and + * applications must not depend on it. Its main purpose is to define the + * multi-part state objects of the PSA drivers included in the cryptographic + * library. The definition of these objects are then used by crypto_struct.h + * to define the implementation-defined types of PSA multi-part state objects. + */ +/* Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_DRIVER_CONTEXTS_COMPOSITES_H +#define PSA_CRYPTO_DRIVER_CONTEXTS_COMPOSITES_H + +#include "psa/crypto_driver_common.h" + +/* Include the context structure definitions for the Mbed TLS software drivers */ +#include "psa/crypto_builtin_composites.h" + +/* Include the context structure definitions for those drivers that were + * declared during the autogeneration process. */ + +#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) +#include +#endif + +#if defined(PSA_CRYPTO_DRIVER_TEST) +#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \ + defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC) +typedef libtestdriver1_mbedtls_psa_mac_operation_t + mbedtls_transparent_test_driver_mac_operation_t; +typedef libtestdriver1_mbedtls_psa_mac_operation_t + mbedtls_opaque_test_driver_mac_operation_t; + +#define MBEDTLS_TRANSPARENT_TEST_DRIVER_MAC_OPERATION_INIT \ + LIBTESTDRIVER1_MBEDTLS_PSA_MAC_OPERATION_INIT +#define MBEDTLS_OPAQUE_TEST_DRIVER_MAC_OPERATION_INIT \ + LIBTESTDRIVER1_MBEDTLS_PSA_MAC_OPERATION_INIT + +#else +typedef mbedtls_psa_mac_operation_t + mbedtls_transparent_test_driver_mac_operation_t; +typedef mbedtls_psa_mac_operation_t + mbedtls_opaque_test_driver_mac_operation_t; + +#define MBEDTLS_TRANSPARENT_TEST_DRIVER_MAC_OPERATION_INIT \ + MBEDTLS_PSA_MAC_OPERATION_INIT +#define MBEDTLS_OPAQUE_TEST_DRIVER_MAC_OPERATION_INIT \ + MBEDTLS_PSA_MAC_OPERATION_INIT + +#endif /* MBEDTLS_TEST_LIBTESTDRIVER1 */ +#endif /* PSA_CRYPTO_DRIVER_TEST */ + +/* Define the context to be used for an operation that is executed through the + * PSA Driver wrapper layer as the union of all possible driver's contexts. + * + * The union members are the driver's context structures, and the member names + * are formatted as `'drivername'_ctx`. This allows for procedural generation + * of both this file and the content of psa_crypto_driver_wrappers.c */ + +typedef union { + unsigned dummy; /* Make sure this union is always non-empty */ + mbedtls_psa_mac_operation_t mbedtls_ctx; +#if defined(PSA_CRYPTO_DRIVER_TEST) + mbedtls_transparent_test_driver_mac_operation_t transparent_test_driver_ctx; + mbedtls_opaque_test_driver_mac_operation_t opaque_test_driver_ctx; +#endif +} psa_driver_mac_context_t; + +#endif /* PSA_CRYPTO_DRIVER_CONTEXTS_COMPOSITES_H */ +/* End of automatically generated file. */ diff --git a/Externals/mbedtls/include/psa/crypto_driver_contexts_primitives.h b/Externals/mbedtls/include/psa/crypto_driver_contexts_primitives.h new file mode 100644 index 000000000000..2bb01ed432f7 --- /dev/null +++ b/Externals/mbedtls/include/psa/crypto_driver_contexts_primitives.h @@ -0,0 +1,117 @@ +/* + * Declaration of context structures for use with the PSA driver wrapper + * interface. This file contains the context structures for 'primitive' + * operations, i.e. those operations which do not rely on other contexts. + * + * Warning: This file will be auto-generated in the future. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * \note This header and its content is not part of the Mbed TLS API and + * applications must not depend on it. Its main purpose is to define the + * multi-part state objects of the PSA drivers included in the cryptographic + * library. The definition of these objects are then used by crypto_struct.h + * to define the implementation-defined types of PSA multi-part state objects. + */ +/* Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_DRIVER_CONTEXTS_PRIMITIVES_H +#define PSA_CRYPTO_DRIVER_CONTEXTS_PRIMITIVES_H + +#include "psa/crypto_driver_common.h" + +/* Include the context structure definitions for the Mbed TLS software drivers */ +#include "psa/crypto_builtin_primitives.h" + +/* Include the context structure definitions for those drivers that were + * declared during the autogeneration process. */ + +#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) +#include +#endif + +#if defined(PSA_CRYPTO_DRIVER_TEST) + +#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \ + defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_CIPHER) +typedef libtestdriver1_mbedtls_psa_cipher_operation_t + mbedtls_transparent_test_driver_cipher_operation_t; + +#define MBEDTLS_TRANSPARENT_TEST_DRIVER_CIPHER_OPERATION_INIT \ + LIBTESTDRIVER1_MBEDTLS_PSA_CIPHER_OPERATION_INIT +#else +typedef mbedtls_psa_cipher_operation_t + mbedtls_transparent_test_driver_cipher_operation_t; + +#define MBEDTLS_TRANSPARENT_TEST_DRIVER_CIPHER_OPERATION_INIT \ + MBEDTLS_PSA_CIPHER_OPERATION_INIT +#endif /* MBEDTLS_TEST_LIBTESTDRIVER1 && + LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_CIPHER */ + +#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \ + defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH) +typedef libtestdriver1_mbedtls_psa_hash_operation_t + mbedtls_transparent_test_driver_hash_operation_t; + +#define MBEDTLS_TRANSPARENT_TEST_DRIVER_HASH_OPERATION_INIT \ + LIBTESTDRIVER1_MBEDTLS_PSA_HASH_OPERATION_INIT +#else +typedef mbedtls_psa_hash_operation_t + mbedtls_transparent_test_driver_hash_operation_t; + +#define MBEDTLS_TRANSPARENT_TEST_DRIVER_HASH_OPERATION_INIT \ + MBEDTLS_PSA_HASH_OPERATION_INIT +#endif /* MBEDTLS_TEST_LIBTESTDRIVER1 && + LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH */ + +typedef struct { + unsigned int initialised : 1; + mbedtls_transparent_test_driver_cipher_operation_t ctx; +} mbedtls_opaque_test_driver_cipher_operation_t; + +#define MBEDTLS_OPAQUE_TEST_DRIVER_CIPHER_OPERATION_INIT \ + { 0, MBEDTLS_TRANSPARENT_TEST_DRIVER_CIPHER_OPERATION_INIT } + +#endif /* PSA_CRYPTO_DRIVER_TEST */ + +/* Define the context to be used for an operation that is executed through the + * PSA Driver wrapper layer as the union of all possible driver's contexts. + * + * The union members are the driver's context structures, and the member names + * are formatted as `'drivername'_ctx`. This allows for procedural generation + * of both this file and the content of psa_crypto_driver_wrappers.c */ + +typedef union { + unsigned dummy; /* Make sure this union is always non-empty */ + mbedtls_psa_hash_operation_t mbedtls_ctx; +#if defined(PSA_CRYPTO_DRIVER_TEST) + mbedtls_transparent_test_driver_hash_operation_t test_driver_ctx; +#endif +} psa_driver_hash_context_t; + +typedef union { + unsigned dummy; /* Make sure this union is always non-empty */ + mbedtls_psa_cipher_operation_t mbedtls_ctx; +#if defined(PSA_CRYPTO_DRIVER_TEST) + mbedtls_transparent_test_driver_cipher_operation_t transparent_test_driver_ctx; + mbedtls_opaque_test_driver_cipher_operation_t opaque_test_driver_ctx; +#endif +} psa_driver_cipher_context_t; + +#endif /* PSA_CRYPTO_DRIVER_CONTEXTS_PRIMITIVES_H */ +/* End of automatically generated file. */ diff --git a/Externals/mbedtls/include/psa/crypto_extra.h b/Externals/mbedtls/include/psa/crypto_extra.h new file mode 100644 index 000000000000..3ee0482cbda5 --- /dev/null +++ b/Externals/mbedtls/include/psa/crypto_extra.h @@ -0,0 +1,819 @@ +/** + * \file psa/crypto_extra.h + * + * \brief PSA cryptography module: Mbed TLS vendor extensions + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * This file is reserved for vendor-specific definitions. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_EXTRA_H +#define PSA_CRYPTO_EXTRA_H + +#include "mbedtls/platform_util.h" + +#include "crypto_types.h" +#include "crypto_compat.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UID for secure storage seed */ +#define PSA_CRYPTO_ITS_RANDOM_SEED_UID 0xFFFFFF52 + +/* See config.h for definition */ +#if !defined(MBEDTLS_PSA_KEY_SLOT_COUNT) +#define MBEDTLS_PSA_KEY_SLOT_COUNT 32 +#endif + +/** \addtogroup attributes + * @{ + */ + +/** \brief Declare the enrollment algorithm for a key. + * + * An operation on a key may indifferently use the algorithm set with + * psa_set_key_algorithm() or with this function. + * + * \param[out] attributes The attribute structure to write to. + * \param alg2 A second algorithm that the key may be used + * for, in addition to the algorithm set with + * psa_set_key_algorithm(). + * + * \warning Setting an enrollment algorithm is not recommended, because + * using the same key with different algorithms can allow some + * attacks based on arithmetic relations between different + * computations made with the same key, or can escalate harmless + * side channels into exploitable ones. Use this function only + * if it is necessary to support a protocol for which it has been + * verified that the usage of the key with multiple algorithms + * is safe. + */ +static inline void psa_set_key_enrollment_algorithm( + psa_key_attributes_t *attributes, + psa_algorithm_t alg2) +{ + attributes->core.policy.alg2 = alg2; +} + +/** Retrieve the enrollment algorithm policy from key attributes. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The enrollment algorithm stored in the attribute structure. + */ +static inline psa_algorithm_t psa_get_key_enrollment_algorithm( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.policy.alg2 ); +} + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + +/** Retrieve the slot number where a key is stored. + * + * A slot number is only defined for keys that are stored in a secure + * element. + * + * This information is only useful if the secure element is not entirely + * managed through the PSA Cryptography API. It is up to the secure + * element driver to decide how PSA slot numbers map to any other interface + * that the secure element may have. + * + * \param[in] attributes The key attribute structure to query. + * \param[out] slot_number On success, the slot number containing the key. + * + * \retval #PSA_SUCCESS + * The key is located in a secure element, and \p *slot_number + * indicates the slot number that contains it. + * \retval #PSA_ERROR_NOT_PERMITTED + * The caller is not permitted to query the slot number. + * Mbed Crypto currently does not return this error. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key is not located in a secure element. + */ +psa_status_t psa_get_key_slot_number( + const psa_key_attributes_t *attributes, + psa_key_slot_number_t *slot_number ); + +/** Choose the slot number where a key is stored. + * + * This function declares a slot number in the specified attribute + * structure. + * + * A slot number is only meaningful for keys that are stored in a secure + * element. It is up to the secure element driver to decide how PSA slot + * numbers map to any other interface that the secure element may have. + * + * \note Setting a slot number in key attributes for a key creation can + * cause the following errors when creating the key: + * - #PSA_ERROR_NOT_SUPPORTED if the selected secure element does + * not support choosing a specific slot number. + * - #PSA_ERROR_NOT_PERMITTED if the caller is not permitted to + * choose slot numbers in general or to choose this specific slot. + * - #PSA_ERROR_INVALID_ARGUMENT if the chosen slot number is not + * valid in general or not valid for this specific key. + * - #PSA_ERROR_ALREADY_EXISTS if there is already a key in the + * selected slot. + * + * \param[out] attributes The attribute structure to write to. + * \param slot_number The slot number to set. + */ +static inline void psa_set_key_slot_number( + psa_key_attributes_t *attributes, + psa_key_slot_number_t slot_number ) +{ + attributes->core.flags |= MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER; + attributes->slot_number = slot_number; +} + +/** Remove the slot number attribute from a key attribute structure. + * + * This function undoes the action of psa_set_key_slot_number(). + * + * \param[out] attributes The attribute structure to write to. + */ +static inline void psa_clear_key_slot_number( + psa_key_attributes_t *attributes ) +{ + attributes->core.flags &= ~MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER; +} + +/** Register a key that is already present in a secure element. + * + * The key must be located in a secure element designated by the + * lifetime field in \p attributes, in the slot set with + * psa_set_key_slot_number() in the attribute structure. + * This function makes the key available through the key identifier + * specified in \p attributes. + * + * \param[in] attributes The attributes of the existing key. + * + * \retval #PSA_SUCCESS + * The key was successfully registered. + * Note that depending on the design of the driver, this may or may + * not guarantee that a key actually exists in the designated slot + * and is compatible with the specified attributes. + * \retval #PSA_ERROR_ALREADY_EXISTS + * There is already a key with the identifier specified in + * \p attributes. + * \retval #PSA_ERROR_NOT_SUPPORTED + * The secure element driver for the specified lifetime does not + * support registering a key. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The identifier in \p attributes is invalid, namely the identifier is + * not in the user range. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p attributes specifies a lifetime which is not located + * in a secure element. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * No slot number is specified in \p attributes, + * or the specified slot number is not valid. + * \retval #PSA_ERROR_NOT_PERMITTED + * The caller is not authorized to register the specified key slot. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_DATA_INVALID + * \retval #PSA_ERROR_DATA_CORRUPT + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t mbedtls_psa_register_se_key( + const psa_key_attributes_t *attributes); + +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + +/**@}*/ + +/** + * \brief Library deinitialization. + * + * This function clears all data associated with the PSA layer, + * including the whole key store. + * + * This is an Mbed TLS extension. + */ +void mbedtls_psa_crypto_free( void ); + +/** \brief Statistics about + * resource consumption related to the PSA keystore. + * + * \note The content of this structure is not part of the stable API and ABI + * of Mbed Crypto and may change arbitrarily from version to version. + */ +typedef struct mbedtls_psa_stats_s +{ + /** Number of slots containing key material for a volatile key. */ + size_t volatile_slots; + /** Number of slots containing key material for a key which is in + * internal persistent storage. */ + size_t persistent_slots; + /** Number of slots containing a reference to a key in a + * secure element. */ + size_t external_slots; + /** Number of slots which are occupied, but do not contain + * key material yet. */ + size_t half_filled_slots; + /** Number of slots that contain cache data. */ + size_t cache_slots; + /** Number of slots that are not used for anything. */ + size_t empty_slots; + /** Number of slots that are locked. */ + size_t locked_slots; + /** Largest key id value among open keys in internal persistent storage. */ + psa_key_id_t max_open_internal_key_id; + /** Largest key id value among open keys in secure elements. */ + psa_key_id_t max_open_external_key_id; +} mbedtls_psa_stats_t; + +/** \brief Get statistics about + * resource consumption related to the PSA keystore. + * + * \note When Mbed Crypto is built as part of a service, with isolation + * between the application and the keystore, the service may or + * may not expose this function. + */ +void mbedtls_psa_get_stats( mbedtls_psa_stats_t *stats ); + +/** + * \brief Inject an initial entropy seed for the random generator into + * secure storage. + * + * This function injects data to be used as a seed for the random generator + * used by the PSA Crypto implementation. On devices that lack a trusted + * entropy source (preferably a hardware random number generator), + * the Mbed PSA Crypto implementation uses this value to seed its + * random generator. + * + * On devices without a trusted entropy source, this function must be + * called exactly once in the lifetime of the device. On devices with + * a trusted entropy source, calling this function is optional. + * In all cases, this function may only be called before calling any + * other function in the PSA Crypto API, including psa_crypto_init(). + * + * When this function returns successfully, it populates a file in + * persistent storage. Once the file has been created, this function + * can no longer succeed. + * + * If any error occurs, this function does not change the system state. + * You can call this function again after correcting the reason for the + * error if possible. + * + * \warning This function **can** fail! Callers MUST check the return status. + * + * \warning If you use this function, you should use it as part of a + * factory provisioning process. The value of the injected seed + * is critical to the security of the device. It must be + * *secret*, *unpredictable* and (statistically) *unique per device*. + * You should be generate it randomly using a cryptographically + * secure random generator seeded from trusted entropy sources. + * You should transmit it securely to the device and ensure + * that its value is not leaked or stored anywhere beyond the + * needs of transmitting it from the point of generation to + * the call of this function, and erase all copies of the value + * once this function returns. + * + * This is an Mbed TLS extension. + * + * \note This function is only available on the following platforms: + * * If the compile-time option MBEDTLS_PSA_INJECT_ENTROPY is enabled. + * Note that you must provide compatible implementations of + * mbedtls_nv_seed_read and mbedtls_nv_seed_write. + * * In a client-server integration of PSA Cryptography, on the client side, + * if the server supports this feature. + * \param[in] seed Buffer containing the seed value to inject. + * \param[in] seed_size Size of the \p seed buffer. + * The size of the seed in bytes must be greater + * or equal to both #MBEDTLS_ENTROPY_MIN_PLATFORM + * and #MBEDTLS_ENTROPY_BLOCK_SIZE. + * It must be less or equal to + * #MBEDTLS_ENTROPY_MAX_SEED_SIZE. + * + * \retval #PSA_SUCCESS + * The seed value was injected successfully. The random generator + * of the PSA Crypto implementation is now ready for use. + * You may now call psa_crypto_init() and use the PSA Crypto + * implementation. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p seed_size is out of range. + * \retval #PSA_ERROR_STORAGE_FAILURE + * There was a failure reading or writing from storage. + * \retval #PSA_ERROR_NOT_PERMITTED + * The library has already been initialized. It is no longer + * possible to call this function. + */ +psa_status_t mbedtls_psa_inject_entropy(const uint8_t *seed, + size_t seed_size); + +/** \addtogroup crypto_types + * @{ + */ + +/** DSA public key. + * + * The import and export format is the + * representation of the public key `y = g^x mod p` as a big-endian byte + * string. The length of the byte string is the length of the base prime `p` + * in bytes. + */ +#define PSA_KEY_TYPE_DSA_PUBLIC_KEY ((psa_key_type_t)0x4002) + +/** DSA key pair (private and public key). + * + * The import and export format is the + * representation of the private key `x` as a big-endian byte string. The + * length of the byte string is the private key size in bytes (leading zeroes + * are not stripped). + * + * Determinstic DSA key derivation with psa_generate_derived_key follows + * FIPS 186-4 §B.1.2: interpret the byte string as integer + * in big-endian order. Discard it if it is not in the range + * [0, *N* - 2] where *N* is the boundary of the private key domain + * (the prime *p* for Diffie-Hellman, the subprime *q* for DSA, + * or the order of the curve's base point for ECC). + * Add 1 to the resulting integer and use this as the private key *x*. + * + */ +#define PSA_KEY_TYPE_DSA_KEY_PAIR ((psa_key_type_t)0x7002) + +/** Whether a key type is an DSA key (pair or public-only). */ +#define PSA_KEY_TYPE_IS_DSA(type) \ + (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) == PSA_KEY_TYPE_DSA_PUBLIC_KEY) + +#define PSA_ALG_DSA_BASE ((psa_algorithm_t)0x06000400) +/** DSA signature with hashing. + * + * This is the signature scheme defined by FIPS 186-4, + * with a random per-message secret number (*k*). + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding DSA signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_DSA(hash_alg) \ + (PSA_ALG_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_DETERMINISTIC_DSA_BASE ((psa_algorithm_t)0x06000500) +#define PSA_ALG_DSA_DETERMINISTIC_FLAG PSA_ALG_ECDSA_DETERMINISTIC_FLAG +/** Deterministic DSA signature with hashing. + * + * This is the deterministic variant defined by RFC 6979 of + * the signature scheme defined by FIPS 186-4. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding DSA signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_DETERMINISTIC_DSA(hash_alg) \ + (PSA_ALG_DETERMINISTIC_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_IS_DSA(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_DSA_DETERMINISTIC_FLAG) == \ + PSA_ALG_DSA_BASE) +#define PSA_ALG_DSA_IS_DETERMINISTIC(alg) \ + (((alg) & PSA_ALG_DSA_DETERMINISTIC_FLAG) != 0) +#define PSA_ALG_IS_DETERMINISTIC_DSA(alg) \ + (PSA_ALG_IS_DSA(alg) && PSA_ALG_DSA_IS_DETERMINISTIC(alg)) +#define PSA_ALG_IS_RANDOMIZED_DSA(alg) \ + (PSA_ALG_IS_DSA(alg) && !PSA_ALG_DSA_IS_DETERMINISTIC(alg)) + + +/* We need to expand the sample definition of this macro from + * the API definition. */ +#undef PSA_ALG_IS_VENDOR_HASH_AND_SIGN +#define PSA_ALG_IS_VENDOR_HASH_AND_SIGN(alg) \ + PSA_ALG_IS_DSA(alg) + +/**@}*/ + +/** \addtogroup attributes + * @{ + */ + +/** Custom Diffie-Hellman group. + * + * For keys of type #PSA_KEY_TYPE_DH_PUBLIC_KEY(#PSA_DH_FAMILY_CUSTOM) or + * #PSA_KEY_TYPE_DH_KEY_PAIR(#PSA_DH_FAMILY_CUSTOM), the group data comes + * from domain parameters set by psa_set_key_domain_parameters(). + */ +#define PSA_DH_FAMILY_CUSTOM ((psa_dh_family_t) 0x7e) + + +/** + * \brief Set domain parameters for a key. + * + * Some key types require additional domain parameters in addition to + * the key type identifier and the key size. Use this function instead + * of psa_set_key_type() when you need to specify domain parameters. + * + * The format for the required domain parameters varies based on the key type. + * + * - For RSA keys (#PSA_KEY_TYPE_RSA_PUBLIC_KEY or #PSA_KEY_TYPE_RSA_KEY_PAIR), + * the domain parameter data consists of the public exponent, + * represented as a big-endian integer with no leading zeros. + * This information is used when generating an RSA key pair. + * When importing a key, the public exponent is read from the imported + * key data and the exponent recorded in the attribute structure is ignored. + * As an exception, the public exponent 65537 is represented by an empty + * byte string. + * - For DSA keys (#PSA_KEY_TYPE_DSA_PUBLIC_KEY or #PSA_KEY_TYPE_DSA_KEY_PAIR), + * the `Dss-Parms` format as defined by RFC 3279 §2.3.2. + * ``` + * Dss-Parms ::= SEQUENCE { + * p INTEGER, + * q INTEGER, + * g INTEGER + * } + * ``` + * - For Diffie-Hellman key exchange keys + * (#PSA_KEY_TYPE_DH_PUBLIC_KEY(#PSA_DH_FAMILY_CUSTOM) or + * #PSA_KEY_TYPE_DH_KEY_PAIR(#PSA_DH_FAMILY_CUSTOM)), the + * `DomainParameters` format as defined by RFC 3279 §2.3.3. + * ``` + * DomainParameters ::= SEQUENCE { + * p INTEGER, -- odd prime, p=jq +1 + * g INTEGER, -- generator, g + * q INTEGER, -- factor of p-1 + * j INTEGER OPTIONAL, -- subgroup factor + * validationParms ValidationParms OPTIONAL + * } + * ValidationParms ::= SEQUENCE { + * seed BIT STRING, + * pgenCounter INTEGER + * } + * ``` + * + * \note This function may allocate memory or other resources. + * Once you have called this function on an attribute structure, + * you must call psa_reset_key_attributes() to free these resources. + * + * \note This is an experimental extension to the interface. It may change + * in future versions of the library. + * + * \param[in,out] attributes Attribute structure where the specified domain + * parameters will be stored. + * If this function fails, the content of + * \p attributes is not modified. + * \param type Key type (a \c PSA_KEY_TYPE_XXX value). + * \param[in] data Buffer containing the key domain parameters. + * The content of this buffer is interpreted + * according to \p type as described above. + * \param data_length Size of the \p data buffer in bytes. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t psa_set_key_domain_parameters(psa_key_attributes_t *attributes, + psa_key_type_t type, + const uint8_t *data, + size_t data_length); + +/** + * \brief Get domain parameters for a key. + * + * Get the domain parameters for a key with this function, if any. The format + * of the domain parameters written to \p data is specified in the + * documentation for psa_set_key_domain_parameters(). + * + * \note This is an experimental extension to the interface. It may change + * in future versions of the library. + * + * \param[in] attributes The key attribute structure to query. + * \param[out] data On success, the key domain parameters. + * \param data_size Size of the \p data buffer in bytes. + * The buffer is guaranteed to be large + * enough if its size in bytes is at least + * the value given by + * PSA_KEY_DOMAIN_PARAMETERS_SIZE(). + * \param[out] data_length On success, the number of bytes + * that make up the key domain parameters data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + */ +psa_status_t psa_get_key_domain_parameters( + const psa_key_attributes_t *attributes, + uint8_t *data, + size_t data_size, + size_t *data_length); + +/** Safe output buffer size for psa_get_key_domain_parameters(). + * + * This macro returns a compile-time constant if its arguments are + * compile-time constants. + * + * \warning This function may call its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \note This is an experimental extension to the interface. It may change + * in future versions of the library. + * + * \param key_type A supported key type. + * \param key_bits The size of the key in bits. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_get_key_domain_parameters() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that is not supported + * by the implementation, this macro shall return either a + * sensible size or 0. + * If the parameters are not valid, the + * return value is unspecified. + */ +#define PSA_KEY_DOMAIN_PARAMETERS_SIZE(key_type, key_bits) \ + (PSA_KEY_TYPE_IS_RSA(key_type) ? sizeof(int) : \ + PSA_KEY_TYPE_IS_DH(key_type) ? PSA_DH_KEY_DOMAIN_PARAMETERS_SIZE(key_bits) : \ + PSA_KEY_TYPE_IS_DSA(key_type) ? PSA_DSA_KEY_DOMAIN_PARAMETERS_SIZE(key_bits) : \ + 0) +#define PSA_DH_KEY_DOMAIN_PARAMETERS_SIZE(key_bits) \ + (4 + (PSA_BITS_TO_BYTES(key_bits) + 5) * 3 /*without optional parts*/) +#define PSA_DSA_KEY_DOMAIN_PARAMETERS_SIZE(key_bits) \ + (4 + (PSA_BITS_TO_BYTES(key_bits) + 5) * 2 /*p, g*/ + 34 /*q*/) + +/**@}*/ + +/** \defgroup psa_tls_helpers TLS helper functions + * @{ + */ + +#if defined(MBEDTLS_ECP_C) +#include + +/** Convert an ECC curve identifier from the Mbed TLS encoding to PSA. + * + * \note This function is provided solely for the convenience of + * Mbed TLS and may be removed at any time without notice. + * + * \param grpid An Mbed TLS elliptic curve identifier + * (`MBEDTLS_ECP_DP_xxx`). + * \param[out] bits On success, the bit size of the curve. + * + * \return The corresponding PSA elliptic curve identifier + * (`PSA_ECC_FAMILY_xxx`). + * \return \c 0 on failure (\p grpid is not recognized). + */ +static inline psa_ecc_family_t mbedtls_ecc_group_to_psa( mbedtls_ecp_group_id grpid, + size_t *bits ) +{ + switch( grpid ) + { + case MBEDTLS_ECP_DP_SECP192R1: + *bits = 192; + return( PSA_ECC_FAMILY_SECP_R1 ); + case MBEDTLS_ECP_DP_SECP224R1: + *bits = 224; + return( PSA_ECC_FAMILY_SECP_R1 ); + case MBEDTLS_ECP_DP_SECP256R1: + *bits = 256; + return( PSA_ECC_FAMILY_SECP_R1 ); + case MBEDTLS_ECP_DP_SECP384R1: + *bits = 384; + return( PSA_ECC_FAMILY_SECP_R1 ); + case MBEDTLS_ECP_DP_SECP521R1: + *bits = 521; + return( PSA_ECC_FAMILY_SECP_R1 ); + case MBEDTLS_ECP_DP_BP256R1: + *bits = 256; + return( PSA_ECC_FAMILY_BRAINPOOL_P_R1 ); + case MBEDTLS_ECP_DP_BP384R1: + *bits = 384; + return( PSA_ECC_FAMILY_BRAINPOOL_P_R1 ); + case MBEDTLS_ECP_DP_BP512R1: + *bits = 512; + return( PSA_ECC_FAMILY_BRAINPOOL_P_R1 ); + case MBEDTLS_ECP_DP_CURVE25519: + *bits = 255; + return( PSA_ECC_FAMILY_MONTGOMERY ); + case MBEDTLS_ECP_DP_SECP192K1: + *bits = 192; + return( PSA_ECC_FAMILY_SECP_K1 ); + case MBEDTLS_ECP_DP_SECP224K1: + *bits = 224; + return( PSA_ECC_FAMILY_SECP_K1 ); + case MBEDTLS_ECP_DP_SECP256K1: + *bits = 256; + return( PSA_ECC_FAMILY_SECP_K1 ); + case MBEDTLS_ECP_DP_CURVE448: + *bits = 448; + return( PSA_ECC_FAMILY_MONTGOMERY ); + default: + *bits = 0; + return( 0 ); + } +} + +/** Convert an ECC curve identifier from the PSA encoding to Mbed TLS. + * + * \note This function is provided solely for the convenience of + * Mbed TLS and may be removed at any time without notice. + * + * \param curve A PSA elliptic curve identifier + * (`PSA_ECC_FAMILY_xxx`). + * \param bits The bit-length of a private key on \p curve. + * \param bits_is_sloppy If true, \p bits may be the bit-length rounded up + * to the nearest multiple of 8. This allows the caller + * to infer the exact curve from the length of a key + * which is supplied as a byte string. + * + * \return The corresponding Mbed TLS elliptic curve identifier + * (`MBEDTLS_ECP_DP_xxx`). + * \return #MBEDTLS_ECP_DP_NONE if \c curve is not recognized. + * \return #MBEDTLS_ECP_DP_NONE if \p bits is not + * correct for \p curve. + */ +mbedtls_ecp_group_id mbedtls_ecc_group_of_psa( psa_ecc_family_t curve, + size_t bits, + int bits_is_sloppy ); +#endif /* MBEDTLS_ECP_C */ + +/**@}*/ + +/** \defgroup psa_external_rng External random generator + * @{ + */ + +#if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) +/** External random generator function, implemented by the platform. + * + * When the compile-time option #MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG is enabled, + * this function replaces Mbed TLS's entropy and DRBG modules for all + * random generation triggered via PSA crypto interfaces. + * + * \note This random generator must deliver random numbers with cryptographic + * quality and high performance. It must supply unpredictable numbers + * with a uniform distribution. The implementation of this function + * is responsible for ensuring that the random generator is seeded + * with sufficient entropy. If you have a hardware TRNG which is slow + * or delivers non-uniform output, declare it as an entropy source + * with mbedtls_entropy_add_source() instead of enabling this option. + * + * \param[in,out] context Pointer to the random generator context. + * This is all-bits-zero on the first call + * and preserved between successive calls. + * \param[out] output Output buffer. On success, this buffer + * contains random data with a uniform + * distribution. + * \param output_size The size of the \p output buffer in bytes. + * \param[out] output_length On success, set this value to \p output_size. + * + * \retval #PSA_SUCCESS + * Success. The output buffer contains \p output_size bytes of + * cryptographic-quality random data, and \c *output_length is + * set to \p output_size. + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * The random generator requires extra entropy and there is no + * way to obtain entropy under current environment conditions. + * This error should not happen under normal circumstances since + * this function is responsible for obtaining as much entropy as + * it needs. However implementations of this function may return + * #PSA_ERROR_INSUFFICIENT_ENTROPY if there is no way to obtain + * entropy without blocking indefinitely. + * \retval #PSA_ERROR_HARDWARE_FAILURE + * A failure of the random generator hardware that isn't covered + * by #PSA_ERROR_INSUFFICIENT_ENTROPY. + */ +psa_status_t mbedtls_psa_external_get_random( + mbedtls_psa_external_random_context_t *context, + uint8_t *output, size_t output_size, size_t *output_length ); +#endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */ + +/**@}*/ + +/** \defgroup psa_builtin_keys Built-in keys + * @{ + */ + +/** The minimum value for a key identifier that is built into the + * implementation. + * + * The range of key identifiers from #MBEDTLS_PSA_KEY_ID_BUILTIN_MIN + * to #MBEDTLS_PSA_KEY_ID_BUILTIN_MAX within the range from + * #PSA_KEY_ID_VENDOR_MIN and #PSA_KEY_ID_VENDOR_MAX and must not intersect + * with any other set of implementation-chosen key identifiers. + * + * This value is part of the library's ABI since changing it would invalidate + * the values of built-in key identifiers in applications. + */ +#define MBEDTLS_PSA_KEY_ID_BUILTIN_MIN ((psa_key_id_t)0x7fff0000) + +/** The maximum value for a key identifier that is built into the + * implementation. + * + * See #MBEDTLS_PSA_KEY_ID_BUILTIN_MIN for more information. + */ +#define MBEDTLS_PSA_KEY_ID_BUILTIN_MAX ((psa_key_id_t)0x7fffefff) + +/** A slot number identifying a key in a driver. + * + * Values of this type are used to identify built-in keys. + */ +typedef uint64_t psa_drv_slot_number_t; + +#if defined(MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS) +/** Test whether a key identifier belongs to the builtin key range. + * + * \param key_id Key identifier to test. + * + * \retval 1 + * The key identifier is a builtin key identifier. + * \retval 0 + * The key identifier is not a builtin key identifier. + */ +static inline int psa_key_id_is_builtin( psa_key_id_t key_id ) +{ + return( ( key_id >= MBEDTLS_PSA_KEY_ID_BUILTIN_MIN ) && + ( key_id <= MBEDTLS_PSA_KEY_ID_BUILTIN_MAX ) ); +} + +/** Platform function to obtain the location and slot number of a built-in key. + * + * An application-specific implementation of this function must be provided if + * #MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS is enabled. This would typically be provided + * as part of a platform's system image. + * + * #MBEDTLS_SVC_KEY_ID_GET_KEY_ID(\p key_id) needs to be in the range from + * #MBEDTLS_PSA_KEY_ID_BUILTIN_MIN to #MBEDTLS_PSA_KEY_ID_BUILTIN_MAX. + * + * In a multi-application configuration + * (\c MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER is defined), + * this function should check that #MBEDTLS_SVC_KEY_ID_GET_OWNER_ID(\p key_id) + * is allowed to use the given key. + * + * \param key_id The key ID for which to retrieve the + * location and slot attributes. + * \param[out] lifetime On success, the lifetime associated with the key + * corresponding to \p key_id. Lifetime is a + * combination of which driver contains the key, + * and with what persistence level the key is + * intended to be used. If the platform + * implementation does not contain specific + * information about the intended key persistence + * level, the persistence level may be reported as + * #PSA_KEY_PERSISTENCE_DEFAULT. + * \param[out] slot_number On success, the slot number known to the driver + * registered at the lifetime location reported + * through \p lifetime which corresponds to the + * requested built-in key. + * + * \retval #PSA_SUCCESS + * The requested key identifier designates a built-in key. + * In a multi-application configuration, the requested owner + * is allowed to access it. + * \retval #PSA_ERROR_DOES_NOT_EXIST + * The requested key identifier is not a built-in key which is known + * to this function. If a key exists in the key storage with this + * identifier, the data from the storage will be used. + * \return (any other error) + * Any other error is propagated to the function that requested the key. + * Common errors include: + * - #PSA_ERROR_NOT_PERMITTED: the key exists but the requested owner + * is not allowed to access it. + */ +psa_status_t mbedtls_psa_platform_get_builtin_key( + mbedtls_svc_key_id_t key_id, + psa_key_lifetime_t *lifetime, + psa_drv_slot_number_t *slot_number ); +#endif /* MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */ + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_EXTRA_H */ diff --git a/Externals/mbedtls/include/psa/crypto_platform.h b/Externals/mbedtls/include/psa/crypto_platform.h new file mode 100644 index 000000000000..66f46879305a --- /dev/null +++ b/Externals/mbedtls/include/psa/crypto_platform.h @@ -0,0 +1,111 @@ +/** + * \file psa/crypto_platform.h + * + * \brief PSA cryptography module: Mbed TLS platform definitions + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * This file contains platform-dependent type definitions. + * + * In implementations with isolation between the application and the + * cryptography module, implementers should take care to ensure that + * the definitions that are exposed to applications match what the + * module implements. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_PLATFORM_H +#define PSA_CRYPTO_PLATFORM_H + +/* Include the Mbed TLS configuration file, the way Mbed TLS does it + * in each of its header files. */ +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +/* Translate between classic MBEDTLS_xxx feature symbols and PSA_xxx + * feature symbols. */ +#include "mbedtls/config_psa.h" + +/* PSA requires several types which C99 provides in stdint.h. */ +#include + +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) +#define inline __inline +#endif + +#if defined(MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER) + +/* Building for the PSA Crypto service on a PSA platform, a key owner is a PSA + * partition identifier. + * + * The function psa_its_identifier_of_slot() in psa_crypto_storage.c that + * translates a key identifier to a key storage file name assumes that + * mbedtls_key_owner_id_t is an 32 bits integer. This function thus needs + * reworking if mbedtls_key_owner_id_t is not defined as a 32 bits integer + * here anymore. + */ +typedef int32_t mbedtls_key_owner_id_t; + +/** Compare two key owner identifiers. + * + * \param id1 First key owner identifier. + * \param id2 Second key owner identifier. + * + * \return Non-zero if the two key owner identifiers are equal, zero otherwise. + */ +static inline int mbedtls_key_owner_id_equal( mbedtls_key_owner_id_t id1, + mbedtls_key_owner_id_t id2 ) +{ + return( id1 == id2 ); +} + +#endif /* MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER */ + +/* + * When MBEDTLS_PSA_CRYPTO_SPM is defined, the code is being built for SPM + * (Secure Partition Manager) integration which separates the code into two + * parts: NSPE (Non-Secure Processing Environment) and SPE (Secure Processing + * Environment). When building for the SPE, an additional header file should be + * included. + */ +#if defined(MBEDTLS_PSA_CRYPTO_SPM) +#define PSA_CRYPTO_SECURE 1 +#include "crypto_spe.h" +#endif // MBEDTLS_PSA_CRYPTO_SPM + +#if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) +/** The type of the context passed to mbedtls_psa_external_get_random(). + * + * Mbed TLS initializes the context to all-bits-zero before calling + * mbedtls_psa_external_get_random() for the first time. + * + * The definition of this type in the Mbed TLS source code is for + * demonstration purposes. Implementers of mbedtls_psa_external_get_random() + * are expected to replace it with a custom definition. + */ +typedef struct { + uintptr_t opaque[2]; +} mbedtls_psa_external_random_context_t; +#endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */ + +#endif /* PSA_CRYPTO_PLATFORM_H */ diff --git a/Externals/mbedtls/include/psa/crypto_se_driver.h b/Externals/mbedtls/include/psa/crypto_se_driver.h new file mode 100644 index 000000000000..1dc8f9b5c408 --- /dev/null +++ b/Externals/mbedtls/include/psa/crypto_se_driver.h @@ -0,0 +1,1395 @@ +/** + * \file psa/crypto_se_driver.h + * \brief PSA external cryptoprocessor driver module + * + * This header declares types and function signatures for cryptography + * drivers that access key material via opaque references. + * This is meant for cryptoprocessors that have a separate key storage from the + * space in which the PSA Crypto implementation runs, typically secure + * elements (SEs). + * + * This file is part of the PSA Crypto Driver HAL (hardware abstraction layer), + * containing functions for driver developers to implement to enable hardware + * to be called in a standardized way by a PSA Cryptography API + * implementation. The functions comprising the driver HAL, which driver + * authors implement, are not intended to be called by application developers. + */ + +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef PSA_CRYPTO_SE_DRIVER_H +#define PSA_CRYPTO_SE_DRIVER_H + +#include "crypto_driver_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup se_init Secure element driver initialization + */ +/**@{*/ + +/** \brief Driver context structure + * + * Driver functions receive a pointer to this structure. + * Each registered driver has one instance of this structure. + * + * Implementations must include the fields specified here and + * may include other fields. + */ +typedef struct { + /** A read-only pointer to the driver's persistent data. + * + * Drivers typically use this persistent data to keep track of + * which slot numbers are available. This is only a guideline: + * drivers may use the persistent data for any purpose, keeping + * in mind the restrictions on when the persistent data is saved + * to storage: the persistent data is only saved after calling + * certain functions that receive a writable pointer to the + * persistent data. + * + * The core allocates a memory buffer for the persistent data. + * The pointer is guaranteed to be suitably aligned for any data type, + * like a pointer returned by `malloc` (but the core can use any + * method to allocate the buffer, not necessarily `malloc`). + * + * The size of this buffer is in the \c persistent_data_size field of + * this structure. + * + * Before the driver is initialized for the first time, the content of + * the persistent data is all-bits-zero. After a driver upgrade, if the + * size of the persistent data has increased, the original data is padded + * on the right with zeros; if the size has decreased, the original data + * is truncated to the new size. + * + * This pointer is to read-only data. Only a few driver functions are + * allowed to modify the persistent data. These functions receive a + * writable pointer. These functions are: + * - psa_drv_se_t::p_init + * - psa_drv_se_key_management_t::p_allocate + * - psa_drv_se_key_management_t::p_destroy + * + * The PSA Cryptography core saves the persistent data from one + * session to the next. It does this before returning from API functions + * that call a driver method that is allowed to modify the persistent + * data, specifically: + * - psa_crypto_init() causes a call to psa_drv_se_t::p_init, and may call + * psa_drv_se_key_management_t::p_destroy to complete an action + * that was interrupted by a power failure. + * - Key creation functions cause a call to + * psa_drv_se_key_management_t::p_allocate, and may cause a call to + * psa_drv_se_key_management_t::p_destroy in case an error occurs. + * - psa_destroy_key() causes a call to + * psa_drv_se_key_management_t::p_destroy. + */ + const void *const persistent_data; + + /** The size of \c persistent_data in bytes. + * + * This is always equal to the value of the `persistent_data_size` field + * of the ::psa_drv_se_t structure when the driver is registered. + */ + const size_t persistent_data_size; + + /** Driver transient data. + * + * The core initializes this value to 0 and does not read or modify it + * afterwards. The driver may store whatever it wants in this field. + */ + uintptr_t transient_data; +} psa_drv_se_context_t; + +/** \brief A driver initialization function. + * + * \param[in,out] drv_context The driver context structure. + * \param[in,out] persistent_data A pointer to the persistent data + * that allows writing. + * \param location The location value for which this driver + * is registered. The driver will be invoked + * for all keys whose lifetime is in this + * location. + * + * \retval #PSA_SUCCESS + * The driver is operational. + * The core will update the persistent data in storage. + * \return + * Any other return value prevents the driver from being used in + * this session. + * The core will NOT update the persistent data in storage. + */ +typedef psa_status_t (*psa_drv_se_init_t)(psa_drv_se_context_t *drv_context, + void *persistent_data, + psa_key_location_t location); + +#if defined(__DOXYGEN_ONLY__) || !defined(MBEDTLS_PSA_CRYPTO_SE_C) +/* Mbed Crypto with secure element support enabled defines this type in + * crypto_types.h because it is also visible to applications through an + * implementation-specific extension. + * For the PSA Cryptography specification, this type is only visible + * via crypto_se_driver.h. */ +/** An internal designation of a key slot between the core part of the + * PSA Crypto implementation and the driver. The meaning of this value + * is driver-dependent. */ +typedef uint64_t psa_key_slot_number_t; +#endif /* __DOXYGEN_ONLY__ || !MBEDTLS_PSA_CRYPTO_SE_C */ + +/**@}*/ + +/** \defgroup se_mac Secure Element Message Authentication Codes + * Generation and authentication of Message Authentication Codes (MACs) using + * a secure element can be done either as a single function call (via the + * `psa_drv_se_mac_generate_t` or `psa_drv_se_mac_verify_t` functions), or in + * parts using the following sequence: + * - `psa_drv_se_mac_setup_t` + * - `psa_drv_se_mac_update_t` + * - `psa_drv_se_mac_update_t` + * - ... + * - `psa_drv_se_mac_finish_t` or `psa_drv_se_mac_finish_verify_t` + * + * If a previously started secure element MAC operation needs to be terminated, + * it should be done so by the `psa_drv_se_mac_abort_t`. Failure to do so may + * result in allocated resources not being freed or in other undefined + * behavior. + */ +/**@{*/ +/** \brief A function that starts a secure element MAC operation for a PSA + * Crypto Driver implementation + * + * \param[in,out] drv_context The driver context structure. + * \param[in,out] op_context A structure that will contain the + * hardware-specific MAC context + * \param[in] key_slot The slot of the key to be used for the + * operation + * \param[in] algorithm The algorithm to be used to underly the MAC + * operation + * + * \retval #PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_se_mac_setup_t)(psa_drv_se_context_t *drv_context, + void *op_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t algorithm); + +/** \brief A function that continues a previously started secure element MAC + * operation + * + * \param[in,out] op_context A hardware-specific structure for the + * previously-established MAC operation to be + * updated + * \param[in] p_input A buffer containing the message to be appended + * to the MAC operation + * \param[in] input_length The size in bytes of the input message buffer + */ +typedef psa_status_t (*psa_drv_se_mac_update_t)(void *op_context, + const uint8_t *p_input, + size_t input_length); + +/** \brief a function that completes a previously started secure element MAC + * operation by returning the resulting MAC. + * + * \param[in,out] op_context A hardware-specific structure for the + * previously started MAC operation to be + * finished + * \param[out] p_mac A buffer where the generated MAC will be + * placed + * \param[in] mac_size The size in bytes of the buffer that has been + * allocated for the `output` buffer + * \param[out] p_mac_length After completion, will contain the number of + * bytes placed in the `p_mac` buffer + * + * \retval #PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_se_mac_finish_t)(void *op_context, + uint8_t *p_mac, + size_t mac_size, + size_t *p_mac_length); + +/** \brief A function that completes a previously started secure element MAC + * operation by comparing the resulting MAC against a provided value + * + * \param[in,out] op_context A hardware-specific structure for the previously + * started MAC operation to be fiinished + * \param[in] p_mac The MAC value against which the resulting MAC + * will be compared against + * \param[in] mac_length The size in bytes of the value stored in `p_mac` + * + * \retval #PSA_SUCCESS + * The operation completed successfully and the MACs matched each + * other + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The operation completed successfully, but the calculated MAC did + * not match the provided MAC + */ +typedef psa_status_t (*psa_drv_se_mac_finish_verify_t)(void *op_context, + const uint8_t *p_mac, + size_t mac_length); + +/** \brief A function that aborts a previous started secure element MAC + * operation + * + * \param[in,out] op_context A hardware-specific structure for the previously + * started MAC operation to be aborted + */ +typedef psa_status_t (*psa_drv_se_mac_abort_t)(void *op_context); + +/** \brief A function that performs a secure element MAC operation in one + * command and returns the calculated MAC + * + * \param[in,out] drv_context The driver context structure. + * \param[in] p_input A buffer containing the message to be MACed + * \param[in] input_length The size in bytes of `p_input` + * \param[in] key_slot The slot of the key to be used + * \param[in] alg The algorithm to be used to underlie the MAC + * operation + * \param[out] p_mac A buffer where the generated MAC will be + * placed + * \param[in] mac_size The size in bytes of the `p_mac` buffer + * \param[out] p_mac_length After completion, will contain the number of + * bytes placed in the `output` buffer + * + * \retval #PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_se_mac_generate_t)(psa_drv_se_context_t *drv_context, + const uint8_t *p_input, + size_t input_length, + psa_key_slot_number_t key_slot, + psa_algorithm_t alg, + uint8_t *p_mac, + size_t mac_size, + size_t *p_mac_length); + +/** \brief A function that performs a secure element MAC operation in one + * command and compares the resulting MAC against a provided value + * + * \param[in,out] drv_context The driver context structure. + * \param[in] p_input A buffer containing the message to be MACed + * \param[in] input_length The size in bytes of `input` + * \param[in] key_slot The slot of the key to be used + * \param[in] alg The algorithm to be used to underlie the MAC + * operation + * \param[in] p_mac The MAC value against which the resulting MAC will + * be compared against + * \param[in] mac_length The size in bytes of `mac` + * + * \retval #PSA_SUCCESS + * The operation completed successfully and the MACs matched each + * other + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The operation completed successfully, but the calculated MAC did + * not match the provided MAC + */ +typedef psa_status_t (*psa_drv_se_mac_verify_t)(psa_drv_se_context_t *drv_context, + const uint8_t *p_input, + size_t input_length, + psa_key_slot_number_t key_slot, + psa_algorithm_t alg, + const uint8_t *p_mac, + size_t mac_length); + +/** \brief A struct containing all of the function pointers needed to + * perform secure element MAC operations + * + * PSA Crypto API implementations should populate the table as appropriate + * upon startup. + * + * If one of the functions is not implemented (such as + * `psa_drv_se_mac_generate_t`), it should be set to NULL. + * + * Driver implementers should ensure that they implement all of the functions + * that make sense for their hardware, and that they provide a full solution + * (for example, if they support `p_setup`, they should also support + * `p_update` and at least one of `p_finish` or `p_finish_verify`). + * + */ +typedef struct { + /**The size in bytes of the hardware-specific secure element MAC context + * structure + */ + size_t context_size; + /** Function that performs a MAC setup operation + */ + psa_drv_se_mac_setup_t p_setup; + /** Function that performs a MAC update operation + */ + psa_drv_se_mac_update_t p_update; + /** Function that completes a MAC operation + */ + psa_drv_se_mac_finish_t p_finish; + /** Function that completes a MAC operation with a verify check + */ + psa_drv_se_mac_finish_verify_t p_finish_verify; + /** Function that aborts a previoustly started MAC operation + */ + psa_drv_se_mac_abort_t p_abort; + /** Function that performs a MAC operation in one call + */ + psa_drv_se_mac_generate_t p_mac; + /** Function that performs a MAC and verify operation in one call + */ + psa_drv_se_mac_verify_t p_mac_verify; +} psa_drv_se_mac_t; +/**@}*/ + +/** \defgroup se_cipher Secure Element Symmetric Ciphers + * + * Encryption and Decryption using secure element keys in block modes other + * than ECB must be done in multiple parts, using the following flow: + * - `psa_drv_se_cipher_setup_t` + * - `psa_drv_se_cipher_set_iv_t` (optional depending upon block mode) + * - `psa_drv_se_cipher_update_t` + * - `psa_drv_se_cipher_update_t` + * - ... + * - `psa_drv_se_cipher_finish_t` + * + * If a previously started secure element Cipher operation needs to be + * terminated, it should be done so by the `psa_drv_se_cipher_abort_t`. Failure + * to do so may result in allocated resources not being freed or in other + * undefined behavior. + * + * In situations where a PSA Cryptographic API implementation is using a block + * mode not-supported by the underlying hardware or driver, it can construct + * the block mode itself, while calling the `psa_drv_se_cipher_ecb_t` function + * for the cipher operations. + */ +/**@{*/ + +/** \brief A function that provides the cipher setup function for a + * secure element driver + * + * \param[in,out] drv_context The driver context structure. + * \param[in,out] op_context A structure that will contain the + * hardware-specific cipher context. + * \param[in] key_slot The slot of the key to be used for the + * operation + * \param[in] algorithm The algorithm to be used in the cipher + * operation + * \param[in] direction Indicates whether the operation is an encrypt + * or decrypt + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_NOT_SUPPORTED + */ +typedef psa_status_t (*psa_drv_se_cipher_setup_t)(psa_drv_se_context_t *drv_context, + void *op_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t algorithm, + psa_encrypt_or_decrypt_t direction); + +/** \brief A function that sets the initialization vector (if + * necessary) for an secure element cipher operation + * + * Rationale: The `psa_se_cipher_*` operation in the PSA Cryptographic API has + * two IV functions: one to set the IV, and one to generate it internally. The + * generate function is not necessary for the drivers to implement as the PSA + * Crypto implementation can do the generation using its RNG features. + * + * \param[in,out] op_context A structure that contains the previously set up + * hardware-specific cipher context + * \param[in] p_iv A buffer containing the initialization vector + * \param[in] iv_length The size (in bytes) of the `p_iv` buffer + * + * \retval #PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_cipher_set_iv_t)(void *op_context, + const uint8_t *p_iv, + size_t iv_length); + +/** \brief A function that continues a previously started secure element cipher + * operation + * + * \param[in,out] op_context A hardware-specific structure for the + * previously started cipher operation + * \param[in] p_input A buffer containing the data to be + * encrypted/decrypted + * \param[in] input_size The size in bytes of the buffer pointed to + * by `p_input` + * \param[out] p_output The caller-allocated buffer where the + * output will be placed + * \param[in] output_size The allocated size in bytes of the + * `p_output` buffer + * \param[out] p_output_length After completion, will contain the number + * of bytes placed in the `p_output` buffer + * + * \retval #PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_cipher_update_t)(void *op_context, + const uint8_t *p_input, + size_t input_size, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** \brief A function that completes a previously started secure element cipher + * operation + * + * \param[in,out] op_context A hardware-specific structure for the + * previously started cipher operation + * \param[out] p_output The caller-allocated buffer where the output + * will be placed + * \param[in] output_size The allocated size in bytes of the `p_output` + * buffer + * \param[out] p_output_length After completion, will contain the number of + * bytes placed in the `p_output` buffer + * + * \retval #PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_cipher_finish_t)(void *op_context, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** \brief A function that aborts a previously started secure element cipher + * operation + * + * \param[in,out] op_context A hardware-specific structure for the + * previously started cipher operation + */ +typedef psa_status_t (*psa_drv_se_cipher_abort_t)(void *op_context); + +/** \brief A function that performs the ECB block mode for secure element + * cipher operations + * + * Note: this function should only be used with implementations that do not + * provide a needed higher-level operation. + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key_slot The slot of the key to be used for the operation + * \param[in] algorithm The algorithm to be used in the cipher operation + * \param[in] direction Indicates whether the operation is an encrypt or + * decrypt + * \param[in] p_input A buffer containing the data to be + * encrypted/decrypted + * \param[in] input_size The size in bytes of the buffer pointed to by + * `p_input` + * \param[out] p_output The caller-allocated buffer where the output + * will be placed + * \param[in] output_size The allocated size in bytes of the `p_output` + * buffer + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_NOT_SUPPORTED + */ +typedef psa_status_t (*psa_drv_se_cipher_ecb_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t algorithm, + psa_encrypt_or_decrypt_t direction, + const uint8_t *p_input, + size_t input_size, + uint8_t *p_output, + size_t output_size); + +/** + * \brief A struct containing all of the function pointers needed to implement + * cipher operations using secure elements. + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup or at build time. + * + * If one of the functions is not implemented (such as + * `psa_drv_se_cipher_ecb_t`), it should be set to NULL. + */ +typedef struct { + /** The size in bytes of the hardware-specific secure element cipher + * context structure + */ + size_t context_size; + /** Function that performs a cipher setup operation */ + psa_drv_se_cipher_setup_t p_setup; + /** Function that sets a cipher IV (if necessary) */ + psa_drv_se_cipher_set_iv_t p_set_iv; + /** Function that performs a cipher update operation */ + psa_drv_se_cipher_update_t p_update; + /** Function that completes a cipher operation */ + psa_drv_se_cipher_finish_t p_finish; + /** Function that aborts a cipher operation */ + psa_drv_se_cipher_abort_t p_abort; + /** Function that performs ECB mode for a cipher operation + * (Danger: ECB mode should not be used directly by clients of the PSA + * Crypto Client API) + */ + psa_drv_se_cipher_ecb_t p_ecb; +} psa_drv_se_cipher_t; + +/**@}*/ + +/** \defgroup se_asymmetric Secure Element Asymmetric Cryptography + * + * Since the amount of data that can (or should) be encrypted or signed using + * asymmetric keys is limited by the key size, asymmetric key operations using + * keys in a secure element must be done in single function calls. + */ +/**@{*/ + +/** + * \brief A function that signs a hash or short message with a private key in + * a secure element + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key_slot Key slot of an asymmetric key pair + * \param[in] alg A signature algorithm that is compatible + * with the type of `key` + * \param[in] p_hash The hash to sign + * \param[in] hash_length Size of the `p_hash` buffer in bytes + * \param[out] p_signature Buffer where the signature is to be written + * \param[in] signature_size Size of the `p_signature` buffer in bytes + * \param[out] p_signature_length On success, the number of bytes + * that make up the returned signature value + * + * \retval #PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_asymmetric_sign_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t alg, + const uint8_t *p_hash, + size_t hash_length, + uint8_t *p_signature, + size_t signature_size, + size_t *p_signature_length); + +/** + * \brief A function that verifies the signature a hash or short message using + * an asymmetric public key in a secure element + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key_slot Key slot of a public key or an asymmetric key + * pair + * \param[in] alg A signature algorithm that is compatible with + * the type of `key` + * \param[in] p_hash The hash whose signature is to be verified + * \param[in] hash_length Size of the `p_hash` buffer in bytes + * \param[in] p_signature Buffer containing the signature to verify + * \param[in] signature_length Size of the `p_signature` buffer in bytes + * + * \retval #PSA_SUCCESS + * The signature is valid. + */ +typedef psa_status_t (*psa_drv_se_asymmetric_verify_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t alg, + const uint8_t *p_hash, + size_t hash_length, + const uint8_t *p_signature, + size_t signature_length); + +/** + * \brief A function that encrypts a short message with an asymmetric public + * key in a secure element + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key_slot Key slot of a public key or an asymmetric key + * pair + * \param[in] alg An asymmetric encryption algorithm that is + * compatible with the type of `key` + * \param[in] p_input The message to encrypt + * \param[in] input_length Size of the `p_input` buffer in bytes + * \param[in] p_salt A salt or label, if supported by the + * encryption algorithm + * If the algorithm does not support a + * salt, pass `NULL`. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass `NULL`. + * For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param[in] salt_length Size of the `p_salt` buffer in bytes + * If `p_salt` is `NULL`, pass 0. + * \param[out] p_output Buffer where the encrypted message is to + * be written + * \param[in] output_size Size of the `p_output` buffer in bytes + * \param[out] p_output_length On success, the number of bytes that make up + * the returned output + * + * \retval #PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_asymmetric_encrypt_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t alg, + const uint8_t *p_input, + size_t input_length, + const uint8_t *p_salt, + size_t salt_length, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** + * \brief A function that decrypts a short message with an asymmetric private + * key in a secure element. + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key_slot Key slot of an asymmetric key pair + * \param[in] alg An asymmetric encryption algorithm that is + * compatible with the type of `key` + * \param[in] p_input The message to decrypt + * \param[in] input_length Size of the `p_input` buffer in bytes + * \param[in] p_salt A salt or label, if supported by the + * encryption algorithm + * If the algorithm does not support a + * salt, pass `NULL`. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass `NULL`. + * For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param[in] salt_length Size of the `p_salt` buffer in bytes + * If `p_salt` is `NULL`, pass 0. + * \param[out] p_output Buffer where the decrypted message is to + * be written + * \param[in] output_size Size of the `p_output` buffer in bytes + * \param[out] p_output_length On success, the number of bytes + * that make up the returned output + * + * \retval #PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_asymmetric_decrypt_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t alg, + const uint8_t *p_input, + size_t input_length, + const uint8_t *p_salt, + size_t salt_length, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** + * \brief A struct containing all of the function pointers needed to implement + * asymmetric cryptographic operations using secure elements. + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup or at build time. + * + * If one of the functions is not implemented, it should be set to NULL. + */ +typedef struct { + /** Function that performs an asymmetric sign operation */ + psa_drv_se_asymmetric_sign_t p_sign; + /** Function that performs an asymmetric verify operation */ + psa_drv_se_asymmetric_verify_t p_verify; + /** Function that performs an asymmetric encrypt operation */ + psa_drv_se_asymmetric_encrypt_t p_encrypt; + /** Function that performs an asymmetric decrypt operation */ + psa_drv_se_asymmetric_decrypt_t p_decrypt; +} psa_drv_se_asymmetric_t; + +/**@}*/ + +/** \defgroup se_aead Secure Element Authenticated Encryption with Additional Data + * Authenticated Encryption with Additional Data (AEAD) operations with secure + * elements must be done in one function call. While this creates a burden for + * implementers as there must be sufficient space in memory for the entire + * message, it prevents decrypted data from being made available before the + * authentication operation is complete and the data is known to be authentic. + */ +/**@{*/ + +/** \brief A function that performs a secure element authenticated encryption + * operation + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key_slot Slot containing the key to use. + * \param[in] algorithm The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(`alg`) is true) + * \param[in] p_nonce Nonce or IV to use + * \param[in] nonce_length Size of the `p_nonce` buffer in bytes + * \param[in] p_additional_data Additional data that will be + * authenticated but not encrypted + * \param[in] additional_data_length Size of `p_additional_data` in bytes + * \param[in] p_plaintext Data that will be authenticated and + * encrypted + * \param[in] plaintext_length Size of `p_plaintext` in bytes + * \param[out] p_ciphertext Output buffer for the authenticated and + * encrypted data. The additional data is + * not part of this output. For algorithms + * where the encrypted data and the + * authentication tag are defined as + * separate outputs, the authentication + * tag is appended to the encrypted data. + * \param[in] ciphertext_size Size of the `p_ciphertext` buffer in + * bytes + * \param[out] p_ciphertext_length On success, the size of the output in + * the `p_ciphertext` buffer + * + * \retval #PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_se_aead_encrypt_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t algorithm, + const uint8_t *p_nonce, + size_t nonce_length, + const uint8_t *p_additional_data, + size_t additional_data_length, + const uint8_t *p_plaintext, + size_t plaintext_length, + uint8_t *p_ciphertext, + size_t ciphertext_size, + size_t *p_ciphertext_length); + +/** A function that peforms a secure element authenticated decryption operation + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key_slot Slot containing the key to use + * \param[in] algorithm The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(`alg`) is true) + * \param[in] p_nonce Nonce or IV to use + * \param[in] nonce_length Size of the `p_nonce` buffer in bytes + * \param[in] p_additional_data Additional data that has been + * authenticated but not encrypted + * \param[in] additional_data_length Size of `p_additional_data` in bytes + * \param[in] p_ciphertext Data that has been authenticated and + * encrypted. + * For algorithms where the encrypted data + * and the authentication tag are defined + * as separate inputs, the buffer must + * contain the encrypted data followed by + * the authentication tag. + * \param[in] ciphertext_length Size of `p_ciphertext` in bytes + * \param[out] p_plaintext Output buffer for the decrypted data + * \param[in] plaintext_size Size of the `p_plaintext` buffer in + * bytes + * \param[out] p_plaintext_length On success, the size of the output in + * the `p_plaintext` buffer + * + * \retval #PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_se_aead_decrypt_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t algorithm, + const uint8_t *p_nonce, + size_t nonce_length, + const uint8_t *p_additional_data, + size_t additional_data_length, + const uint8_t *p_ciphertext, + size_t ciphertext_length, + uint8_t *p_plaintext, + size_t plaintext_size, + size_t *p_plaintext_length); + +/** + * \brief A struct containing all of the function pointers needed to implement + * secure element Authenticated Encryption with Additional Data operations + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup. + * + * If one of the functions is not implemented, it should be set to NULL. + */ +typedef struct { + /** Function that performs the AEAD encrypt operation */ + psa_drv_se_aead_encrypt_t p_encrypt; + /** Function that performs the AEAD decrypt operation */ + psa_drv_se_aead_decrypt_t p_decrypt; +} psa_drv_se_aead_t; +/**@}*/ + +/** \defgroup se_key_management Secure Element Key Management + * Currently, key management is limited to importing keys in the clear, + * destroying keys, and exporting keys in the clear. + * Whether a key may be exported is determined by the key policies in place + * on the key slot. + */ +/**@{*/ + +/** An enumeration indicating how a key is created. + */ +typedef enum +{ + PSA_KEY_CREATION_IMPORT, /**< During psa_import_key() */ + PSA_KEY_CREATION_GENERATE, /**< During psa_generate_key() */ + PSA_KEY_CREATION_DERIVE, /**< During psa_key_derivation_output_key() */ + PSA_KEY_CREATION_COPY, /**< During psa_copy_key() */ + +#ifndef __DOXYGEN_ONLY__ + /** A key is being registered with mbedtls_psa_register_se_key(). + * + * The core only passes this value to + * psa_drv_se_key_management_t::p_validate_slot_number, not to + * psa_drv_se_key_management_t::p_allocate. The call to + * `p_validate_slot_number` is not followed by any other call to the + * driver: the key is considered successfully registered if the call to + * `p_validate_slot_number` succeeds, or if `p_validate_slot_number` is + * null. + * + * With this creation method, the driver must return #PSA_SUCCESS if + * the given attributes are compatible with the existing key in the slot, + * and #PSA_ERROR_DOES_NOT_EXIST if the driver can determine that there + * is no key with the specified slot number. + * + * This is an Mbed Crypto extension. + */ + PSA_KEY_CREATION_REGISTER, +#endif +} psa_key_creation_method_t; + +/** \brief A function that allocates a slot for a key. + * + * To create a key in a specific slot in a secure element, the core + * first calls this function to determine a valid slot number, + * then calls a function to create the key material in that slot. + * In nominal conditions (that is, if no error occurs), + * the effect of a call to a key creation function in the PSA Cryptography + * API with a lifetime that places the key in a secure element is the + * following: + * -# The core calls psa_drv_se_key_management_t::p_allocate + * (or in some implementations + * psa_drv_se_key_management_t::p_validate_slot_number). The driver + * selects (or validates) a suitable slot number given the key attributes + * and the state of the secure element. + * -# The core calls a key creation function in the driver. + * + * The key creation functions in the PSA Cryptography API are: + * - psa_import_key(), which causes + * a call to `p_allocate` with \p method = #PSA_KEY_CREATION_IMPORT + * then a call to psa_drv_se_key_management_t::p_import. + * - psa_generate_key(), which causes + * a call to `p_allocate` with \p method = #PSA_KEY_CREATION_GENERATE + * then a call to psa_drv_se_key_management_t::p_import. + * - psa_key_derivation_output_key(), which causes + * a call to `p_allocate` with \p method = #PSA_KEY_CREATION_DERIVE + * then a call to psa_drv_se_key_derivation_t::p_derive. + * - psa_copy_key(), which causes + * a call to `p_allocate` with \p method = #PSA_KEY_CREATION_COPY + * then a call to psa_drv_se_key_management_t::p_export. + * + * In case of errors, other behaviors are possible. + * - If the PSA Cryptography subsystem dies after the first step, + * for example because the device has lost power abruptly, + * the second step may never happen, or may happen after a reset + * and re-initialization. Alternatively, after a reset and + * re-initialization, the core may call + * psa_drv_se_key_management_t::p_destroy on the slot number that + * was allocated (or validated) instead of calling a key creation function. + * - If an error occurs, the core may call + * psa_drv_se_key_management_t::p_destroy on the slot number that + * was allocated (or validated) instead of calling a key creation function. + * + * Errors and system resets also have an impact on the driver's persistent + * data. If a reset happens before the overall key creation process is + * completed (before or after the second step above), it is unspecified + * whether the persistent data after the reset is identical to what it + * was before or after the call to `p_allocate` (or `p_validate_slot_number`). + * + * \param[in,out] drv_context The driver context structure. + * \param[in,out] persistent_data A pointer to the persistent data + * that allows writing. + * \param[in] attributes Attributes of the key. + * \param method The way in which the key is being created. + * \param[out] key_slot Slot where the key will be stored. + * This must be a valid slot for a key of the + * chosen type. It must be unoccupied. + * + * \retval #PSA_SUCCESS + * Success. + * The core will record \c *key_slot as the key slot where the key + * is stored and will update the persistent data in storage. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + */ +typedef psa_status_t (*psa_drv_se_allocate_key_t)( + psa_drv_se_context_t *drv_context, + void *persistent_data, + const psa_key_attributes_t *attributes, + psa_key_creation_method_t method, + psa_key_slot_number_t *key_slot); + +/** \brief A function that determines whether a slot number is valid + * for a key. + * + * To create a key in a specific slot in a secure element, the core + * first calls this function to validate the choice of slot number, + * then calls a function to create the key material in that slot. + * See the documentation of #psa_drv_se_allocate_key_t for more details. + * + * As of the PSA Cryptography API specification version 1.0, there is no way + * for applications to trigger a call to this function. However some + * implementations offer the capability to create or declare a key in + * a specific slot via implementation-specific means, generally for the + * sake of initial device provisioning or onboarding. Such a mechanism may + * be added to a future version of the PSA Cryptography API specification. + * + * This function may update the driver's persistent data through + * \p persistent_data. The core will save the updated persistent data at the + * end of the key creation process. See the description of + * ::psa_drv_se_allocate_key_t for more information. + * + * \param[in,out] drv_context The driver context structure. + * \param[in,out] persistent_data A pointer to the persistent data + * that allows writing. + * \param[in] attributes Attributes of the key. + * \param method The way in which the key is being created. + * \param[in] key_slot Slot where the key is to be stored. + * + * \retval #PSA_SUCCESS + * The given slot number is valid for a key with the given + * attributes. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The given slot number is not valid for a key with the + * given attributes. This includes the case where the slot + * number is not valid at all. + * \retval #PSA_ERROR_ALREADY_EXISTS + * There is already a key with the specified slot number. + * Drivers may choose to return this error from the key + * creation function instead. + */ +typedef psa_status_t (*psa_drv_se_validate_slot_number_t)( + psa_drv_se_context_t *drv_context, + void *persistent_data, + const psa_key_attributes_t *attributes, + psa_key_creation_method_t method, + psa_key_slot_number_t key_slot); + +/** \brief A function that imports a key into a secure element in binary format + * + * This function can support any output from psa_export_key(). Refer to the + * documentation of psa_export_key() for the format for each key type. + * + * \param[in,out] drv_context The driver context structure. + * \param key_slot Slot where the key will be stored. + * This must be a valid slot for a key of the + * chosen type. It must be unoccupied. + * \param[in] attributes The key attributes, including the lifetime, + * the key type and the usage policy. + * Drivers should not access the key size stored + * in the attributes: it may not match the + * data passed in \p data. + * Drivers can call psa_get_key_lifetime(), + * psa_get_key_type(), + * psa_get_key_usage_flags() and + * psa_get_key_algorithm() to access this + * information. + * \param[in] data Buffer containing the key data. + * \param[in] data_length Size of the \p data buffer in bytes. + * \param[out] bits On success, the key size in bits. The driver + * must determine this value after parsing the + * key according to the key type. + * This value is not used if the function fails. + * + * \retval #PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_se_import_key_t)( + psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + const psa_key_attributes_t *attributes, + const uint8_t *data, + size_t data_length, + size_t *bits); + +/** + * \brief A function that destroys a secure element key and restore the slot to + * its default state + * + * This function destroys the content of the key from a secure element. + * Implementations shall make a best effort to ensure that any previous content + * of the slot is unrecoverable. + * + * This function returns the specified slot to its default state. + * + * \param[in,out] drv_context The driver context structure. + * \param[in,out] persistent_data A pointer to the persistent data + * that allows writing. + * \param key_slot The key slot to erase. + * + * \retval #PSA_SUCCESS + * The slot's content, if any, has been erased. + */ +typedef psa_status_t (*psa_drv_se_destroy_key_t)( + psa_drv_se_context_t *drv_context, + void *persistent_data, + psa_key_slot_number_t key_slot); + +/** + * \brief A function that exports a secure element key in binary format + * + * The output of this function can be passed to psa_import_key() to + * create an equivalent object. + * + * If a key is created with `psa_import_key()` and then exported with + * this function, it is not guaranteed that the resulting data is + * identical: the implementation may choose a different representation + * of the same key if the format permits it. + * + * This function should generate output in the same format that + * `psa_export_key()` does. Refer to the + * documentation of `psa_export_key()` for the format for each key type. + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key Slot whose content is to be exported. This must + * be an occupied key slot. + * \param[out] p_data Buffer where the key data is to be written. + * \param[in] data_size Size of the `p_data` buffer in bytes. + * \param[out] p_data_length On success, the number of bytes + * that make up the key data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +typedef psa_status_t (*psa_drv_se_export_key_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key, + uint8_t *p_data, + size_t data_size, + size_t *p_data_length); + +/** + * \brief A function that generates a symmetric or asymmetric key on a secure + * element + * + * If the key type \c type recorded in \p attributes + * is asymmetric (#PSA_KEY_TYPE_IS_ASYMMETRIC(\c type) = 1), + * the driver may export the public key at the time of generation, + * in the format documented for psa_export_public_key() by writing it + * to the \p pubkey buffer. + * This is optional, intended for secure elements that output the + * public key at generation time and that cannot export the public key + * later. Drivers that do not need this feature should leave + * \p *pubkey_length set to 0 and should + * implement the psa_drv_key_management_t::p_export_public function. + * Some implementations do not support this feature, in which case + * \p pubkey is \c NULL and \p pubkey_size is 0. + * + * \param[in,out] drv_context The driver context structure. + * \param key_slot Slot where the key will be stored. + * This must be a valid slot for a key of the + * chosen type. It must be unoccupied. + * \param[in] attributes The key attributes, including the lifetime, + * the key type and size, and the usage policy. + * Drivers can call psa_get_key_lifetime(), + * psa_get_key_type(), psa_get_key_bits(), + * psa_get_key_usage_flags() and + * psa_get_key_algorithm() to access this + * information. + * \param[out] pubkey A buffer where the driver can write the + * public key, when generating an asymmetric + * key pair. + * This is \c NULL when generating a symmetric + * key or if the core does not support + * exporting the public key at generation time. + * \param pubkey_size The size of the `pubkey` buffer in bytes. + * This is 0 when generating a symmetric + * key or if the core does not support + * exporting the public key at generation time. + * \param[out] pubkey_length On entry, this is always 0. + * On success, the number of bytes written to + * \p pubkey. If this is 0 or unchanged on return, + * the core will not read the \p pubkey buffer, + * and will instead call the driver's + * psa_drv_key_management_t::p_export_public + * function to export the public key when needed. + */ +typedef psa_status_t (*psa_drv_se_generate_key_t)( + psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + const psa_key_attributes_t *attributes, + uint8_t *pubkey, size_t pubkey_size, size_t *pubkey_length); + +/** + * \brief A struct containing all of the function pointers needed to for secure + * element key management + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup or at build time. + * + * If one of the functions is not implemented, it should be set to NULL. + */ +typedef struct { + /** Function that allocates a slot for a key. */ + psa_drv_se_allocate_key_t p_allocate; + /** Function that checks the validity of a slot for a key. */ + psa_drv_se_validate_slot_number_t p_validate_slot_number; + /** Function that performs a key import operation */ + psa_drv_se_import_key_t p_import; + /** Function that performs a generation */ + psa_drv_se_generate_key_t p_generate; + /** Function that performs a key destroy operation */ + psa_drv_se_destroy_key_t p_destroy; + /** Function that performs a key export operation */ + psa_drv_se_export_key_t p_export; + /** Function that performs a public key export operation */ + psa_drv_se_export_key_t p_export_public; +} psa_drv_se_key_management_t; + +/**@}*/ + +/** \defgroup driver_derivation Secure Element Key Derivation and Agreement + * Key derivation is the process of generating new key material using an + * existing key and additional parameters, iterating through a basic + * cryptographic function, such as a hash. + * Key agreement is a part of cryptographic protocols that allows two parties + * to agree on the same key value, but starting from different original key + * material. + * The flows are similar, and the PSA Crypto Driver Model uses the same functions + * for both of the flows. + * + * There are two different final functions for the flows, + * `psa_drv_se_key_derivation_derive` and `psa_drv_se_key_derivation_export`. + * `psa_drv_se_key_derivation_derive` is used when the key material should be + * placed in a slot on the hardware and not exposed to the caller. + * `psa_drv_se_key_derivation_export` is used when the key material should be + * returned to the PSA Cryptographic API implementation. + * + * Different key derivation algorithms require a different number of inputs. + * Instead of having an API that takes as input variable length arrays, which + * can be problemmatic to manage on embedded platforms, the inputs are passed + * to the driver via a function, `psa_drv_se_key_derivation_collateral`, that + * is called multiple times with different `collateral_id`s. Thus, for a key + * derivation algorithm that required 3 parameter inputs, the flow would look + * something like: + * ~~~~~~~~~~~~~{.c} + * psa_drv_se_key_derivation_setup(kdf_algorithm, source_key, dest_key_size_bytes); + * psa_drv_se_key_derivation_collateral(kdf_algorithm_collateral_id_0, + * p_collateral_0, + * collateral_0_size); + * psa_drv_se_key_derivation_collateral(kdf_algorithm_collateral_id_1, + * p_collateral_1, + * collateral_1_size); + * psa_drv_se_key_derivation_collateral(kdf_algorithm_collateral_id_2, + * p_collateral_2, + * collateral_2_size); + * psa_drv_se_key_derivation_derive(); + * ~~~~~~~~~~~~~ + * + * key agreement example: + * ~~~~~~~~~~~~~{.c} + * psa_drv_se_key_derivation_setup(alg, source_key. dest_key_size_bytes); + * psa_drv_se_key_derivation_collateral(DHE_PUBKEY, p_pubkey, pubkey_size); + * psa_drv_se_key_derivation_export(p_session_key, + * session_key_size, + * &session_key_length); + * ~~~~~~~~~~~~~ + */ +/**@{*/ + +/** \brief A function that Sets up a secure element key derivation operation by + * specifying the algorithm and the source key sot + * + * \param[in,out] drv_context The driver context structure. + * \param[in,out] op_context A hardware-specific structure containing any + * context information for the implementation + * \param[in] kdf_alg The algorithm to be used for the key derivation + * \param[in] source_key The key to be used as the source material for + * the key derivation + * + * \retval #PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_key_derivation_setup_t)(psa_drv_se_context_t *drv_context, + void *op_context, + psa_algorithm_t kdf_alg, + psa_key_slot_number_t source_key); + +/** \brief A function that provides collateral (parameters) needed for a secure + * element key derivation or key agreement operation + * + * Since many key derivation algorithms require multiple parameters, it is + * expected that this function may be called multiple times for the same + * operation, each with a different algorithm-specific `collateral_id` + * + * \param[in,out] op_context A hardware-specific structure containing any + * context information for the implementation + * \param[in] collateral_id An ID for the collateral being provided + * \param[in] p_collateral A buffer containing the collateral data + * \param[in] collateral_size The size in bytes of the collateral + * + * \retval #PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_key_derivation_collateral_t)(void *op_context, + uint32_t collateral_id, + const uint8_t *p_collateral, + size_t collateral_size); + +/** \brief A function that performs the final secure element key derivation + * step and place the generated key material in a slot + * + * \param[in,out] op_context A hardware-specific structure containing any + * context information for the implementation + * \param[in] dest_key The slot where the generated key material + * should be placed + * + * \retval #PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_key_derivation_derive_t)(void *op_context, + psa_key_slot_number_t dest_key); + +/** \brief A function that performs the final step of a secure element key + * agreement and place the generated key material in a buffer + * + * \param[out] p_output Buffer in which to place the generated key + * material + * \param[in] output_size The size in bytes of `p_output` + * \param[out] p_output_length Upon success, contains the number of bytes of + * key material placed in `p_output` + * + * \retval #PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_key_derivation_export_t)(void *op_context, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** + * \brief A struct containing all of the function pointers needed to for secure + * element key derivation and agreement + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup. + * + * If one of the functions is not implemented, it should be set to NULL. + */ +typedef struct { + /** The driver-specific size of the key derivation context */ + size_t context_size; + /** Function that performs a key derivation setup */ + psa_drv_se_key_derivation_setup_t p_setup; + /** Function that sets key derivation collateral */ + psa_drv_se_key_derivation_collateral_t p_collateral; + /** Function that performs a final key derivation step */ + psa_drv_se_key_derivation_derive_t p_derive; + /** Function that perforsm a final key derivation or agreement and + * exports the key */ + psa_drv_se_key_derivation_export_t p_export; +} psa_drv_se_key_derivation_t; + +/**@}*/ + +/** \defgroup se_registration Secure element driver registration + */ +/**@{*/ + +/** A structure containing pointers to all the entry points of a + * secure element driver. + * + * Future versions of this specification may add extra substructures at + * the end of this structure. + */ +typedef struct { + /** The version of the driver HAL that this driver implements. + * This is a protection against loading driver binaries built against + * a different version of this specification. + * Use #PSA_DRV_SE_HAL_VERSION. + */ + uint32_t hal_version; + + /** The size of the driver's persistent data in bytes. + * + * This can be 0 if the driver does not need persistent data. + * + * See the documentation of psa_drv_se_context_t::persistent_data + * for more information about why and how a driver can use + * persistent data. + */ + size_t persistent_data_size; + + /** The driver initialization function. + * + * This function is called once during the initialization of the + * PSA Cryptography subsystem, before any other function of the + * driver is called. If this function returns a failure status, + * the driver will be unusable, at least until the next system reset. + * + * If this field is \c NULL, it is equivalent to a function that does + * nothing and returns #PSA_SUCCESS. + */ + psa_drv_se_init_t p_init; + + const psa_drv_se_key_management_t *key_management; + const psa_drv_se_mac_t *mac; + const psa_drv_se_cipher_t *cipher; + const psa_drv_se_aead_t *aead; + const psa_drv_se_asymmetric_t *asymmetric; + const psa_drv_se_key_derivation_t *derivation; +} psa_drv_se_t; + +/** The current version of the secure element driver HAL. + */ +/* 0.0.0 patchlevel 5 */ +#define PSA_DRV_SE_HAL_VERSION 0x00000005 + +/** Register an external cryptoprocessor (secure element) driver. + * + * This function is only intended to be used by driver code, not by + * application code. In implementations with separation between the + * PSA cryptography module and applications, this function should + * only be available to callers that run in the same memory space as + * the cryptography module, and should not be exposed to applications + * running in a different memory space. + * + * This function may be called before psa_crypto_init(). It is + * implementation-defined whether this function may be called + * after psa_crypto_init(). + * + * \note Implementations store metadata about keys including the lifetime + * value, which contains the driver's location indicator. Therefore, + * from one instantiation of the PSA Cryptography + * library to the next one, if there is a key in storage with a certain + * lifetime value, you must always register the same driver (or an + * updated version that communicates with the same secure element) + * with the same location value. + * + * \param location The location value through which this driver will + * be exposed to applications. + * This driver will be used for all keys such that + * `location == #PSA_KEY_LIFETIME_GET_LOCATION( lifetime )`. + * The value #PSA_KEY_LOCATION_LOCAL_STORAGE is reserved + * and may not be used for drivers. Implementations + * may reserve other values. + * \param[in] methods The method table of the driver. This structure must + * remain valid for as long as the cryptography + * module keeps running. It is typically a global + * constant. + * + * \return #PSA_SUCCESS + * The driver was successfully registered. Applications can now + * use \p location to access keys through the methods passed to + * this function. + * \return #PSA_ERROR_BAD_STATE + * This function was called after the initialization of the + * cryptography module, and this implementation does not support + * driver registration at this stage. + * \return #PSA_ERROR_ALREADY_EXISTS + * There is already a registered driver for this value of \p location. + * \return #PSA_ERROR_INVALID_ARGUMENT + * \p location is a reserved value. + * \return #PSA_ERROR_NOT_SUPPORTED + * `methods->hal_version` is not supported by this implementation. + * \return #PSA_ERROR_INSUFFICIENT_MEMORY + * \return #PSA_ERROR_NOT_PERMITTED + * \return #PSA_ERROR_STORAGE_FAILURE + * \return #PSA_ERROR_DATA_CORRUPT + */ +psa_status_t psa_register_se_driver( + psa_key_location_t location, + const psa_drv_se_t *methods); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_SE_DRIVER_H */ diff --git a/Externals/mbedtls/include/psa/crypto_sizes.h b/Externals/mbedtls/include/psa/crypto_sizes.h new file mode 100644 index 000000000000..e2ae5965d4f9 --- /dev/null +++ b/Externals/mbedtls/include/psa/crypto_sizes.h @@ -0,0 +1,1171 @@ +/** + * \file psa/crypto_sizes.h + * + * \brief PSA cryptography module: Mbed TLS buffer size macros + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * This file contains the definitions of macros that are useful to + * compute buffer sizes. The signatures and semantics of these macros + * are standardized, but the definitions are not, because they depend on + * the available algorithms and, in some cases, on permitted tolerances + * on buffer sizes. + * + * In implementations with isolation between the application and the + * cryptography module, implementers should take care to ensure that + * the definitions that are exposed to applications match what the + * module implements. + * + * Macros that compute sizes whose values do not depend on the + * implementation are in crypto.h. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_SIZES_H +#define PSA_CRYPTO_SIZES_H + +/* Include the Mbed TLS configuration file, the way Mbed TLS does it + * in each of its header files. */ +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#define PSA_BITS_TO_BYTES(bits) (((bits) + 7) / 8) +#define PSA_BYTES_TO_BITS(bytes) ((bytes) * 8) + +#define PSA_ROUND_UP_TO_MULTIPLE(block_size, length) \ + (((length) + (block_size) - 1) / (block_size) * (block_size)) + +/** The size of the output of psa_hash_finish(), in bytes. + * + * This is also the hash size that psa_hash_verify() expects. + * + * \param alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p alg) is true), or an HMAC algorithm + * (#PSA_ALG_HMAC(\c hash_alg) where \c hash_alg is a + * hash algorithm). + * + * \return The hash size for the specified hash algorithm. + * If the hash algorithm is not recognized, return 0. + */ +#define PSA_HASH_LENGTH(alg) \ + ( \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD2 ? 16 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD4 ? 16 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 16 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 20 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 20 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_224 ? 28 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_256 ? 32 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_384 ? 48 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512 ? 64 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_224 ? 28 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_256 ? 32 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_224 ? 28 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_256 ? 32 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_384 ? 48 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_512 ? 64 : \ + 0) + +/** The input block size of a hash algorithm, in bytes. + * + * Hash algorithms process their input data in blocks. Hash operations will + * retain any partial blocks until they have enough input to fill the block or + * until the operation is finished. + * This affects the output from psa_hash_suspend(). + * + * \param alg A hash algorithm (\c PSA_ALG_XXX value such that + * PSA_ALG_IS_HASH(\p alg) is true). + * + * \return The block size in bytes for the specified hash algorithm. + * If the hash algorithm is not recognized, return 0. + * An implementation can return either 0 or the correct size for a + * hash algorithm that it recognizes, but does not support. + */ +#define PSA_HASH_BLOCK_LENGTH(alg) \ + ( \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD2 ? 16 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD4 ? 64 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 64 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 64 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 64 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_224 ? 64 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_256 ? 64 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_384 ? 128 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512 ? 128 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_224 ? 128 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_256 ? 128 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_224 ? 144 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_256 ? 136 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_384 ? 104 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_512 ? 72 : \ + 0) + +/** \def PSA_HASH_MAX_SIZE + * + * Maximum size of a hash. + * + * This macro expands to a compile-time constant integer. This value + * is the maximum size of a hash in bytes. + */ +/* Note: for HMAC-SHA-3, the block size is 144 bytes for HMAC-SHA3-226, + * 136 bytes for HMAC-SHA3-256, 104 bytes for SHA3-384, 72 bytes for + * HMAC-SHA3-512. */ +#if defined(PSA_WANT_ALG_SHA_512) || defined(PSA_WANT_ALG_SHA_384) +#define PSA_HASH_MAX_SIZE 64 +#define PSA_HMAC_MAX_HASH_BLOCK_SIZE 128 +#else +#define PSA_HASH_MAX_SIZE 32 +#define PSA_HMAC_MAX_HASH_BLOCK_SIZE 64 +#endif + +/** \def PSA_MAC_MAX_SIZE + * + * Maximum size of a MAC. + * + * This macro expands to a compile-time constant integer. This value + * is the maximum size of a MAC in bytes. + */ +/* All non-HMAC MACs have a maximum size that's smaller than the + * minimum possible value of PSA_HASH_MAX_SIZE in this implementation. */ +/* Note that the encoding of truncated MAC algorithms limits this value + * to 64 bytes. + */ +#define PSA_MAC_MAX_SIZE PSA_HASH_MAX_SIZE + +/** The length of a tag for an AEAD algorithm, in bytes. + * + * This macro can be used to allocate a buffer of sufficient size to store the + * tag output from psa_aead_finish(). + * + * See also #PSA_AEAD_TAG_MAX_SIZE. + * + * \param key_type The type of the AEAD key. + * \param key_bits The size of the AEAD key in bits. + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return The tag length for the specified algorithm and key. + * If the AEAD algorithm does not have an identified + * tag that can be distinguished from the rest of + * the ciphertext, return 0. + * If the key type or AEAD algorithm is not + * recognized, or the parameters are incompatible, + * return 0. + */ +#define PSA_AEAD_TAG_LENGTH(key_type, key_bits, alg) \ + (PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 ? \ + PSA_ALG_AEAD_GET_TAG_LENGTH(alg) : \ + ((void) (key_bits), 0)) + +/** The maximum tag size for all supported AEAD algorithms, in bytes. + * + * See also #PSA_AEAD_TAG_LENGTH(\p key_type, \p key_bits, \p alg). + */ +#define PSA_AEAD_TAG_MAX_SIZE 16 + +/* The maximum size of an RSA key on this implementation, in bits. + * This is a vendor-specific macro. + * + * Mbed TLS does not set a hard limit on the size of RSA keys: any key + * whose parameters fit in a bignum is accepted. However large keys can + * induce a large memory usage and long computation times. Unlike other + * auxiliary macros in this file and in crypto.h, which reflect how the + * library is configured, this macro defines how the library is + * configured. This implementation refuses to import or generate an + * RSA key whose size is larger than the value defined here. + * + * Note that an implementation may set different size limits for different + * operations, and does not need to accept all key sizes up to the limit. */ +#define PSA_VENDOR_RSA_MAX_KEY_BITS 4096 + +/* The maximum size of an ECC key on this implementation, in bits. + * This is a vendor-specific macro. */ +#if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 521 +#elif defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 512 +#elif defined(MBEDTLS_ECP_DP_CURVE448_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 448 +#elif defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 384 +#elif defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 384 +#elif defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 256 +#elif defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 256 +#elif defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 256 +#elif defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 255 +#elif defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 224 +#elif defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 224 +#elif defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 192 +#elif defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 192 +#else +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 0 +#endif + +/** This macro returns the maximum supported length of the PSK for the + * TLS-1.2 PSK-to-MS key derivation + * (#PSA_ALG_TLS12_PSK_TO_MS(\c hash_alg)). + * + * The maximum supported length does not depend on the chosen hash algorithm. + * + * Quoting RFC 4279, Sect 5.3: + * TLS implementations supporting these ciphersuites MUST support + * arbitrary PSK identities up to 128 octets in length, and arbitrary + * PSKs up to 64 octets in length. Supporting longer identities and + * keys is RECOMMENDED. + * + * Therefore, no implementation should define a value smaller than 64 + * for #PSA_TLS12_PSK_TO_MS_PSK_MAX_SIZE. + */ +#define PSA_TLS12_PSK_TO_MS_PSK_MAX_SIZE 128 + +/** The maximum size of a block cipher. */ +#define PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE 16 + +/** The size of the output of psa_mac_sign_finish(), in bytes. + * + * This is also the MAC size that psa_mac_verify_finish() expects. + * + * \warning This macro may evaluate its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type The type of the MAC key. + * \param key_bits The size of the MAC key in bits. + * \param alg A MAC algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_MAC(\p alg) is true). + * + * \return The MAC size for the specified algorithm with + * the specified key parameters. + * \return 0 if the MAC algorithm is not recognized. + * \return Either 0 or the correct size for a MAC algorithm that + * the implementation recognizes, but does not support. + * \return Unspecified if the key parameters are not consistent + * with the algorithm. + */ +#define PSA_MAC_LENGTH(key_type, key_bits, alg) \ + ((alg) & PSA_ALG_MAC_TRUNCATION_MASK ? PSA_MAC_TRUNCATED_LENGTH(alg) : \ + PSA_ALG_IS_HMAC(alg) ? PSA_HASH_LENGTH(PSA_ALG_HMAC_GET_HASH(alg)) : \ + PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) ? PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \ + ((void)(key_type), (void)(key_bits), 0)) + +/** The maximum size of the output of psa_aead_encrypt(), in bytes. + * + * If the size of the ciphertext buffer is at least this large, it is + * guaranteed that psa_aead_encrypt() will not fail due to an + * insufficient buffer size. Depending on the algorithm, the actual size of + * the ciphertext may be smaller. + * + * See also #PSA_AEAD_ENCRYPT_OUTPUT_MAX_SIZE(\p plaintext_length). + * + * \warning This macro may evaluate its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type A symmetric key type that is + * compatible with algorithm \p alg. + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param plaintext_length Size of the plaintext in bytes. + * + * \return The AEAD ciphertext size for the specified + * algorithm. + * If the key type or AEAD algorithm is not + * recognized, or the parameters are incompatible, + * return 0. + */ +#define PSA_AEAD_ENCRYPT_OUTPUT_SIZE(key_type, alg, plaintext_length) \ + (PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 ? \ + (plaintext_length) + PSA_ALG_AEAD_GET_TAG_LENGTH(alg) : \ + 0) + +/** A sufficient output buffer size for psa_aead_encrypt(), for any of the + * supported key types and AEAD algorithms. + * + * If the size of the ciphertext buffer is at least this large, it is guaranteed + * that psa_aead_encrypt() will not fail due to an insufficient buffer size. + * + * \note This macro returns a compile-time constant if its arguments are + * compile-time constants. + * + * See also #PSA_AEAD_ENCRYPT_OUTPUT_SIZE(\p key_type, \p alg, + * \p plaintext_length). + * + * \param plaintext_length Size of the plaintext in bytes. + * + * \return A sufficient output buffer size for any of the + * supported key types and AEAD algorithms. + * + */ +#define PSA_AEAD_ENCRYPT_OUTPUT_MAX_SIZE(plaintext_length) \ + ((plaintext_length) + PSA_AEAD_TAG_MAX_SIZE) + + +/** The maximum size of the output of psa_aead_decrypt(), in bytes. + * + * If the size of the plaintext buffer is at least this large, it is + * guaranteed that psa_aead_decrypt() will not fail due to an + * insufficient buffer size. Depending on the algorithm, the actual size of + * the plaintext may be smaller. + * + * See also #PSA_AEAD_DECRYPT_OUTPUT_MAX_SIZE(\p ciphertext_length). + * + * \warning This macro may evaluate its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type A symmetric key type that is + * compatible with algorithm \p alg. + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param ciphertext_length Size of the plaintext in bytes. + * + * \return The AEAD ciphertext size for the specified + * algorithm. + * If the key type or AEAD algorithm is not + * recognized, or the parameters are incompatible, + * return 0. + */ +#define PSA_AEAD_DECRYPT_OUTPUT_SIZE(key_type, alg, ciphertext_length) \ + (PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 && \ + (ciphertext_length) > PSA_ALG_AEAD_GET_TAG_LENGTH(alg) ? \ + (ciphertext_length) - PSA_ALG_AEAD_GET_TAG_LENGTH(alg) : \ + 0) + +/** A sufficient output buffer size for psa_aead_decrypt(), for any of the + * supported key types and AEAD algorithms. + * + * If the size of the plaintext buffer is at least this large, it is guaranteed + * that psa_aead_decrypt() will not fail due to an insufficient buffer size. + * + * \note This macro returns a compile-time constant if its arguments are + * compile-time constants. + * + * See also #PSA_AEAD_DECRYPT_OUTPUT_SIZE(\p key_type, \p alg, + * \p ciphertext_length). + * + * \param ciphertext_length Size of the ciphertext in bytes. + * + * \return A sufficient output buffer size for any of the + * supported key types and AEAD algorithms. + * + */ +#define PSA_AEAD_DECRYPT_OUTPUT_MAX_SIZE(ciphertext_length) \ + (ciphertext_length) + +/** The default nonce size for an AEAD algorithm, in bytes. + * + * This macro can be used to allocate a buffer of sufficient size to + * store the nonce output from #psa_aead_generate_nonce(). + * + * See also #PSA_AEAD_NONCE_MAX_SIZE. + * + * \note This is not the maximum size of nonce supported as input to + * #psa_aead_set_nonce(), #psa_aead_encrypt() or #psa_aead_decrypt(), + * just the default size that is generated by #psa_aead_generate_nonce(). + * + * \warning This macro may evaluate its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type A symmetric key type that is compatible with + * algorithm \p alg. + * + * \param alg An AEAD algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return The default nonce size for the specified key type and algorithm. + * If the key type or AEAD algorithm is not recognized, + * or the parameters are incompatible, return 0. + */ +#define PSA_AEAD_NONCE_LENGTH(key_type, alg) \ + (PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) == 16 ? \ + MBEDTLS_PSA_ALG_AEAD_EQUAL(alg, PSA_ALG_CCM) ? 13 : \ + MBEDTLS_PSA_ALG_AEAD_EQUAL(alg, PSA_ALG_GCM) ? 12 : \ + 0 : \ + (key_type) == PSA_KEY_TYPE_CHACHA20 && \ + MBEDTLS_PSA_ALG_AEAD_EQUAL(alg, PSA_ALG_CHACHA20_POLY1305) ? 12 : \ + 0) + +/** The maximum default nonce size among all supported pairs of key types and + * AEAD algorithms, in bytes. + * + * This is equal to or greater than any value that #PSA_AEAD_NONCE_LENGTH() + * may return. + * + * \note This is not the maximum size of nonce supported as input to + * #psa_aead_set_nonce(), #psa_aead_encrypt() or #psa_aead_decrypt(), + * just the largest size that may be generated by + * #psa_aead_generate_nonce(). + */ +#define PSA_AEAD_NONCE_MAX_SIZE 13 + +/** A sufficient output buffer size for psa_aead_update(). + * + * If the size of the output buffer is at least this large, it is + * guaranteed that psa_aead_update() will not fail due to an + * insufficient buffer size. The actual size of the output may be smaller + * in any given call. + * + * See also #PSA_AEAD_UPDATE_OUTPUT_MAX_SIZE(\p input_length). + * + * \warning This macro may evaluate its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type A symmetric key type that is + * compatible with algorithm \p alg. + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param input_length Size of the input in bytes. + * + * \return A sufficient output buffer size for the specified + * algorithm. + * If the key type or AEAD algorithm is not + * recognized, or the parameters are incompatible, + * return 0. + */ +/* For all the AEAD modes defined in this specification, it is possible + * to emit output without delay. However, hardware may not always be + * capable of this. So for modes based on a block cipher, allow the + * implementation to delay the output until it has a full block. */ +#define PSA_AEAD_UPDATE_OUTPUT_SIZE(key_type, alg, input_length) \ + (PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 ? \ + PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \ + PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type), (input_length)) : \ + (input_length) : \ + 0) + +/** A sufficient output buffer size for psa_aead_update(), for any of the + * supported key types and AEAD algorithms. + * + * If the size of the output buffer is at least this large, it is guaranteed + * that psa_aead_update() will not fail due to an insufficient buffer size. + * + * See also #PSA_AEAD_UPDATE_OUTPUT_SIZE(\p key_type, \p alg, \p input_length). + * + * \param input_length Size of the input in bytes. + */ +#define PSA_AEAD_UPDATE_OUTPUT_MAX_SIZE(input_length) \ + (PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE, (input_length))) + +/** A sufficient ciphertext buffer size for psa_aead_finish(). + * + * If the size of the ciphertext buffer is at least this large, it is + * guaranteed that psa_aead_finish() will not fail due to an + * insufficient ciphertext buffer size. The actual size of the output may + * be smaller in any given call. + * + * See also #PSA_AEAD_FINISH_OUTPUT_MAX_SIZE. + * + * \param key_type A symmetric key type that is + compatible with algorithm \p alg. + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return A sufficient ciphertext buffer size for the + * specified algorithm. + * If the key type or AEAD algorithm is not + * recognized, or the parameters are incompatible, + * return 0. + */ +#define PSA_AEAD_FINISH_OUTPUT_SIZE(key_type, alg) \ + (PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 && \ + PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \ + PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \ + 0) + +/** A sufficient ciphertext buffer size for psa_aead_finish(), for any of the + * supported key types and AEAD algorithms. + * + * See also #PSA_AEAD_FINISH_OUTPUT_SIZE(\p key_type, \p alg). + */ +#define PSA_AEAD_FINISH_OUTPUT_MAX_SIZE (PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE) + +/** A sufficient plaintext buffer size for psa_aead_verify(). + * + * If the size of the plaintext buffer is at least this large, it is + * guaranteed that psa_aead_verify() will not fail due to an + * insufficient plaintext buffer size. The actual size of the output may + * be smaller in any given call. + * + * See also #PSA_AEAD_VERIFY_OUTPUT_MAX_SIZE. + * + * \param key_type A symmetric key type that is + * compatible with algorithm \p alg. + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return A sufficient plaintext buffer size for the + * specified algorithm. + * If the key type or AEAD algorithm is not + * recognized, or the parameters are incompatible, + * return 0. + */ +#define PSA_AEAD_VERIFY_OUTPUT_SIZE(key_type, alg) \ + (PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 && \ + PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \ + PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \ + 0) + +/** A sufficient plaintext buffer size for psa_aead_verify(), for any of the + * supported key types and AEAD algorithms. + * + * See also #PSA_AEAD_VERIFY_OUTPUT_SIZE(\p key_type, \p alg). + */ +#define PSA_AEAD_VERIFY_OUTPUT_MAX_SIZE (PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE) + +#define PSA_RSA_MINIMUM_PADDING_SIZE(alg) \ + (PSA_ALG_IS_RSA_OAEP(alg) ? \ + 2 * PSA_HASH_LENGTH(PSA_ALG_RSA_OAEP_GET_HASH(alg)) + 1 : \ + 11 /*PKCS#1v1.5*/) + +/** + * \brief ECDSA signature size for a given curve bit size + * + * \param curve_bits Curve size in bits. + * \return Signature size in bytes. + * + * \note This macro returns a compile-time constant if its argument is one. + */ +#define PSA_ECDSA_SIGNATURE_SIZE(curve_bits) \ + (PSA_BITS_TO_BYTES(curve_bits) * 2) + +/** Sufficient signature buffer size for psa_sign_hash(). + * + * This macro returns a sufficient buffer size for a signature using a key + * of the specified type and size, with the specified algorithm. + * Note that the actual size of the signature may be smaller + * (some algorithms produce a variable-size signature). + * + * \warning This function may call its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type An asymmetric key type (this may indifferently be a + * key pair type or a public key type). + * \param key_bits The size of the key in bits. + * \param alg The signature algorithm. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_sign_hash() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that is not supported, + * return either a sensible size or 0. + * If the parameters are not valid, the + * return value is unspecified. + */ +#define PSA_SIGN_OUTPUT_SIZE(key_type, key_bits, alg) \ + (PSA_KEY_TYPE_IS_RSA(key_type) ? ((void)alg, PSA_BITS_TO_BYTES(key_bits)) : \ + PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_ECDSA_SIGNATURE_SIZE(key_bits) : \ + ((void)alg, 0)) + +#define PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE \ + PSA_ECDSA_SIGNATURE_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS) + +/** \def PSA_SIGNATURE_MAX_SIZE + * + * Maximum size of an asymmetric signature. + * + * This macro expands to a compile-time constant integer. This value + * is the maximum size of a signature in bytes. + */ +#define PSA_SIGNATURE_MAX_SIZE \ + (PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) > PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE ? \ + PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) : \ + PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE) + +/** Sufficient output buffer size for psa_asymmetric_encrypt(). + * + * This macro returns a sufficient buffer size for a ciphertext produced using + * a key of the specified type and size, with the specified algorithm. + * Note that the actual size of the ciphertext may be smaller, depending + * on the algorithm. + * + * \warning This function may call its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type An asymmetric key type (this may indifferently be a + * key pair type or a public key type). + * \param key_bits The size of the key in bits. + * \param alg The asymmetric encryption algorithm. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_asymmetric_encrypt() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that is not supported, + * return either a sensible size or 0. + * If the parameters are not valid, the + * return value is unspecified. + */ +#define PSA_ASYMMETRIC_ENCRYPT_OUTPUT_SIZE(key_type, key_bits, alg) \ + (PSA_KEY_TYPE_IS_RSA(key_type) ? \ + ((void)alg, PSA_BITS_TO_BYTES(key_bits)) : \ + 0) + +/** A sufficient output buffer size for psa_asymmetric_encrypt(), for any + * supported asymmetric encryption. + * + * See also #PSA_ASYMMETRIC_ENCRYPT_OUTPUT_SIZE(\p key_type, \p key_bits, \p alg). + */ +/* This macro assumes that RSA is the only supported asymmetric encryption. */ +#define PSA_ASYMMETRIC_ENCRYPT_OUTPUT_MAX_SIZE \ + (PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS)) + +/** Sufficient output buffer size for psa_asymmetric_decrypt(). + * + * This macro returns a sufficient buffer size for a plaintext produced using + * a key of the specified type and size, with the specified algorithm. + * Note that the actual size of the plaintext may be smaller, depending + * on the algorithm. + * + * \warning This function may call its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type An asymmetric key type (this may indifferently be a + * key pair type or a public key type). + * \param key_bits The size of the key in bits. + * \param alg The asymmetric encryption algorithm. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_asymmetric_decrypt() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that is not supported, + * return either a sensible size or 0. + * If the parameters are not valid, the + * return value is unspecified. + */ +#define PSA_ASYMMETRIC_DECRYPT_OUTPUT_SIZE(key_type, key_bits, alg) \ + (PSA_KEY_TYPE_IS_RSA(key_type) ? \ + PSA_BITS_TO_BYTES(key_bits) - PSA_RSA_MINIMUM_PADDING_SIZE(alg) : \ + 0) + +/** A sufficient output buffer size for psa_asymmetric_decrypt(), for any + * supported asymmetric decryption. + * + * This macro assumes that RSA is the only supported asymmetric encryption. + * + * See also #PSA_ASYMMETRIC_DECRYPT_OUTPUT_SIZE(\p key_type, \p key_bits, \p alg). + */ +#define PSA_ASYMMETRIC_DECRYPT_OUTPUT_MAX_SIZE \ + (PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS)) + +/* Maximum size of the ASN.1 encoding of an INTEGER with the specified + * number of bits. + * + * This definition assumes that bits <= 2^19 - 9 so that the length field + * is at most 3 bytes. The length of the encoding is the length of the + * bit string padded to a whole number of bytes plus: + * - 1 type byte; + * - 1 to 3 length bytes; + * - 0 to 1 bytes of leading 0 due to the sign bit. + */ +#define PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(bits) \ + ((bits) / 8 + 5) + +/* Maximum size of the export encoding of an RSA public key. + * Assumes that the public exponent is less than 2^32. + * + * RSAPublicKey ::= SEQUENCE { + * modulus INTEGER, -- n + * publicExponent INTEGER } -- e + * + * - 4 bytes of SEQUENCE overhead; + * - n : INTEGER; + * - 7 bytes for the public exponent. + */ +#define PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) \ + (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) + 11) + +/* Maximum size of the export encoding of an RSA key pair. + * Assumes thatthe public exponent is less than 2^32 and that the size + * difference between the two primes is at most 1 bit. + * + * RSAPrivateKey ::= SEQUENCE { + * version Version, -- 0 + * modulus INTEGER, -- N-bit + * publicExponent INTEGER, -- 32-bit + * privateExponent INTEGER, -- N-bit + * prime1 INTEGER, -- N/2-bit + * prime2 INTEGER, -- N/2-bit + * exponent1 INTEGER, -- N/2-bit + * exponent2 INTEGER, -- N/2-bit + * coefficient INTEGER, -- N/2-bit + * } + * + * - 4 bytes of SEQUENCE overhead; + * - 3 bytes of version; + * - 7 half-size INTEGERs plus 2 full-size INTEGERs, + * overapproximated as 9 half-size INTEGERS; + * - 7 bytes for the public exponent. + */ +#define PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(key_bits) \ + (9 * PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE((key_bits) / 2 + 1) + 14) + +/* Maximum size of the export encoding of a DSA public key. + * + * SubjectPublicKeyInfo ::= SEQUENCE { + * algorithm AlgorithmIdentifier, + * subjectPublicKey BIT STRING } -- contains DSAPublicKey + * AlgorithmIdentifier ::= SEQUENCE { + * algorithm OBJECT IDENTIFIER, + * parameters Dss-Parms } -- SEQUENCE of 3 INTEGERs + * DSAPublicKey ::= INTEGER -- public key, Y + * + * - 3 * 4 bytes of SEQUENCE overhead; + * - 1 + 1 + 7 bytes of algorithm (DSA OID); + * - 4 bytes of BIT STRING overhead; + * - 3 full-size INTEGERs (p, g, y); + * - 1 + 1 + 32 bytes for 1 sub-size INTEGER (q <= 256 bits). + */ +#define PSA_KEY_EXPORT_DSA_PUBLIC_KEY_MAX_SIZE(key_bits) \ + (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) * 3 + 59) + +/* Maximum size of the export encoding of a DSA key pair. + * + * DSAPrivateKey ::= SEQUENCE { + * version Version, -- 0 + * prime INTEGER, -- p + * subprime INTEGER, -- q + * generator INTEGER, -- g + * public INTEGER, -- y + * private INTEGER, -- x + * } + * + * - 4 bytes of SEQUENCE overhead; + * - 3 bytes of version; + * - 3 full-size INTEGERs (p, g, y); + * - 2 * (1 + 1 + 32) bytes for 2 sub-size INTEGERs (q, x <= 256 bits). + */ +#define PSA_KEY_EXPORT_DSA_KEY_PAIR_MAX_SIZE(key_bits) \ + (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) * 3 + 75) + +/* Maximum size of the export encoding of an ECC public key. + * + * The representation of an ECC public key is: + * - The byte 0x04; + * - `x_P` as a `ceiling(m/8)`-byte string, big-endian; + * - `y_P` as a `ceiling(m/8)`-byte string, big-endian; + * - where m is the bit size associated with the curve. + * + * - 1 byte + 2 * point size. + */ +#define PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) \ + (2 * PSA_BITS_TO_BYTES(key_bits) + 1) + +/* Maximum size of the export encoding of an ECC key pair. + * + * An ECC key pair is represented by the secret value. + */ +#define PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(key_bits) \ + (PSA_BITS_TO_BYTES(key_bits)) + +/** Sufficient output buffer size for psa_export_key() or + * psa_export_public_key(). + * + * This macro returns a compile-time constant if its arguments are + * compile-time constants. + * + * \warning This macro may evaluate its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * The following code illustrates how to allocate enough memory to export + * a key by querying the key type and size at runtime. + * \code{c} + * psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + * psa_status_t status; + * status = psa_get_key_attributes(key, &attributes); + * if (status != PSA_SUCCESS) handle_error(...); + * psa_key_type_t key_type = psa_get_key_type(&attributes); + * size_t key_bits = psa_get_key_bits(&attributes); + * size_t buffer_size = PSA_EXPORT_KEY_OUTPUT_SIZE(key_type, key_bits); + * psa_reset_key_attributes(&attributes); + * uint8_t *buffer = malloc(buffer_size); + * if (buffer == NULL) handle_error(...); + * size_t buffer_length; + * status = psa_export_key(key, buffer, buffer_size, &buffer_length); + * if (status != PSA_SUCCESS) handle_error(...); + * \endcode + * + * \param key_type A supported key type. + * \param key_bits The size of the key in bits. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_export_key() or psa_export_public_key() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that is not supported, + * return either a sensible size or 0. + * If the parameters are not valid, the return value is unspecified. + */ +#define PSA_EXPORT_KEY_OUTPUT_SIZE(key_type, key_bits) \ + (PSA_KEY_TYPE_IS_UNSTRUCTURED(key_type) ? PSA_BITS_TO_BYTES(key_bits) : \ + (key_type) == PSA_KEY_TYPE_RSA_KEY_PAIR ? PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(key_bits) : \ + (key_type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY ? PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \ + (key_type) == PSA_KEY_TYPE_DSA_KEY_PAIR ? PSA_KEY_EXPORT_DSA_KEY_PAIR_MAX_SIZE(key_bits) : \ + (key_type) == PSA_KEY_TYPE_DSA_PUBLIC_KEY ? PSA_KEY_EXPORT_DSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \ + PSA_KEY_TYPE_IS_ECC_KEY_PAIR(key_type) ? PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(key_bits) : \ + PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(key_type) ? PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) : \ + 0) + +/** Sufficient output buffer size for psa_export_public_key(). + * + * This macro returns a compile-time constant if its arguments are + * compile-time constants. + * + * \warning This macro may evaluate its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * The following code illustrates how to allocate enough memory to export + * a public key by querying the key type and size at runtime. + * \code{c} + * psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + * psa_status_t status; + * status = psa_get_key_attributes(key, &attributes); + * if (status != PSA_SUCCESS) handle_error(...); + * psa_key_type_t key_type = psa_get_key_type(&attributes); + * size_t key_bits = psa_get_key_bits(&attributes); + * size_t buffer_size = PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(key_type, key_bits); + * psa_reset_key_attributes(&attributes); + * uint8_t *buffer = malloc(buffer_size); + * if (buffer == NULL) handle_error(...); + * size_t buffer_length; + * status = psa_export_public_key(key, buffer, buffer_size, &buffer_length); + * if (status != PSA_SUCCESS) handle_error(...); + * \endcode + * + * \param key_type A public key or key pair key type. + * \param key_bits The size of the key in bits. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_export_public_key() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that is not + * supported, return either a sensible size or 0. + * If the parameters are not valid, + * the return value is unspecified. + * + * If the parameters are valid and supported, + * return the same result as + * #PSA_EXPORT_KEY_OUTPUT_SIZE( + * \p #PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(\p key_type), + * \p key_bits). + */ +#define PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(key_type, key_bits) \ + (PSA_KEY_TYPE_IS_RSA(key_type) ? PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \ + PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) : \ + 0) + +/** Sufficient buffer size for exporting any asymmetric key pair. + * + * This macro expands to a compile-time constant integer. This value is + * a sufficient buffer size when calling psa_export_key() to export any + * asymmetric key pair, regardless of the exact key type and key size. + * + * See also #PSA_EXPORT_KEY_OUTPUT_SIZE(\p key_type, \p key_bits). + */ +#define PSA_EXPORT_KEY_PAIR_MAX_SIZE \ + (PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) > \ + PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS) ? \ + PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) : \ + PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS)) + +/** Sufficient buffer size for exporting any asymmetric public key. + * + * This macro expands to a compile-time constant integer. This value is + * a sufficient buffer size when calling psa_export_key() or + * psa_export_public_key() to export any asymmetric public key, + * regardless of the exact key type and key size. + * + * See also #PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(\p key_type, \p key_bits). + */ +#define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE \ + (PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) > \ + PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS) ? \ + PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) : \ + PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS)) + +/** Sufficient output buffer size for psa_raw_key_agreement(). + * + * This macro returns a compile-time constant if its arguments are + * compile-time constants. + * + * \warning This macro may evaluate its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * See also #PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE. + * + * \param key_type A supported key type. + * \param key_bits The size of the key in bits. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_raw_key_agreement() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that + * is not supported, return either a sensible size or 0. + * If the parameters are not valid, + * the return value is unspecified. + */ +/* FFDH is not yet supported in PSA. */ +#define PSA_RAW_KEY_AGREEMENT_OUTPUT_SIZE(key_type, key_bits) \ + (PSA_KEY_TYPE_IS_ECC_KEY_PAIR(key_type) ? \ + PSA_BITS_TO_BYTES(key_bits) : \ + 0) + +/** Maximum size of the output from psa_raw_key_agreement(). + * + * This macro expands to a compile-time constant integer. This value is the + * maximum size of the output any raw key agreement algorithm, in bytes. + * + * See also #PSA_RAW_KEY_AGREEMENT_OUTPUT_SIZE(\p key_type, \p key_bits). + */ +#define PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE \ + (PSA_BITS_TO_BYTES(PSA_VENDOR_ECC_MAX_CURVE_BITS)) + +/** The default IV size for a cipher algorithm, in bytes. + * + * The IV that is generated as part of a call to #psa_cipher_encrypt() is always + * the default IV length for the algorithm. + * + * This macro can be used to allocate a buffer of sufficient size to + * store the IV output from #psa_cipher_generate_iv() when using + * a multi-part cipher operation. + * + * See also #PSA_CIPHER_IV_MAX_SIZE. + * + * \warning This macro may evaluate its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type A symmetric key type that is compatible with algorithm \p alg. + * + * \param alg A cipher algorithm (\c PSA_ALG_XXX value such that #PSA_ALG_IS_CIPHER(\p alg) is true). + * + * \return The default IV size for the specified key type and algorithm. + * If the algorithm does not use an IV, return 0. + * If the key type or cipher algorithm is not recognized, + * or the parameters are incompatible, return 0. + */ +#define PSA_CIPHER_IV_LENGTH(key_type, alg) \ + (PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) > 1 && \ + ((alg) == PSA_ALG_CTR || \ + (alg) == PSA_ALG_CFB || \ + (alg) == PSA_ALG_OFB || \ + (alg) == PSA_ALG_XTS || \ + (alg) == PSA_ALG_CBC_NO_PADDING || \ + (alg) == PSA_ALG_CBC_PKCS7) ? PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \ + (key_type) == PSA_KEY_TYPE_CHACHA20 && \ + (alg) == PSA_ALG_STREAM_CIPHER ? 12 : \ + 0) + +/** The maximum IV size for all supported cipher algorithms, in bytes. + * + * See also #PSA_CIPHER_IV_LENGTH(). + */ +#define PSA_CIPHER_IV_MAX_SIZE 16 + +/** The maximum size of the output of psa_cipher_encrypt(), in bytes. + * + * If the size of the output buffer is at least this large, it is guaranteed + * that psa_cipher_encrypt() will not fail due to an insufficient buffer size. + * Depending on the algorithm, the actual size of the output might be smaller. + * + * See also #PSA_CIPHER_ENCRYPT_OUTPUT_MAX_SIZE(\p input_length). + * + * \warning This macro may evaluate its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type A symmetric key type that is compatible with algorithm + * alg. + * \param alg A cipher algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * \param input_length Size of the input in bytes. + * + * \return A sufficient output size for the specified key type and + * algorithm. If the key type or cipher algorithm is not + * recognized, or the parameters are incompatible, + * return 0. + */ +#define PSA_CIPHER_ENCRYPT_OUTPUT_SIZE(key_type, alg, input_length) \ + (alg == PSA_ALG_CBC_PKCS7 ? \ + (PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) != 0 ? \ + PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type), \ + (input_length) + 1) + \ + PSA_CIPHER_IV_LENGTH((key_type), (alg)) : 0) : \ + (PSA_ALG_IS_CIPHER(alg) ? \ + (input_length) + PSA_CIPHER_IV_LENGTH((key_type), (alg)) : \ + 0)) + +/** A sufficient output buffer size for psa_cipher_encrypt(), for any of the + * supported key types and cipher algorithms. + * + * If the size of the output buffer is at least this large, it is guaranteed + * that psa_cipher_encrypt() will not fail due to an insufficient buffer size. + * + * See also #PSA_CIPHER_ENCRYPT_OUTPUT_SIZE(\p key_type, \p alg, \p input_length). + * + * \param input_length Size of the input in bytes. + * + */ +#define PSA_CIPHER_ENCRYPT_OUTPUT_MAX_SIZE(input_length) \ + (PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE, \ + (input_length) + 1) + \ + PSA_CIPHER_IV_MAX_SIZE) + +/** The maximum size of the output of psa_cipher_decrypt(), in bytes. + * + * If the size of the output buffer is at least this large, it is guaranteed + * that psa_cipher_decrypt() will not fail due to an insufficient buffer size. + * Depending on the algorithm, the actual size of the output might be smaller. + * + * See also #PSA_CIPHER_DECRYPT_OUTPUT_MAX_SIZE(\p input_length). + * + * \param key_type A symmetric key type that is compatible with algorithm + * alg. + * \param alg A cipher algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * \param input_length Size of the input in bytes. + * + * \return A sufficient output size for the specified key type and + * algorithm. If the key type or cipher algorithm is not + * recognized, or the parameters are incompatible, + * return 0. + */ +#define PSA_CIPHER_DECRYPT_OUTPUT_SIZE(key_type, alg, input_length) \ + (PSA_ALG_IS_CIPHER(alg) && \ + ((key_type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_SYMMETRIC ? \ + (input_length) : \ + 0) + +/** A sufficient output buffer size for psa_cipher_decrypt(), for any of the + * supported key types and cipher algorithms. + * + * If the size of the output buffer is at least this large, it is guaranteed + * that psa_cipher_decrypt() will not fail due to an insufficient buffer size. + * + * See also #PSA_CIPHER_DECRYPT_OUTPUT_SIZE(\p key_type, \p alg, \p input_length). + * + * \param input_length Size of the input in bytes. + */ +#define PSA_CIPHER_DECRYPT_OUTPUT_MAX_SIZE(input_length) \ + (input_length) + +/** A sufficient output buffer size for psa_cipher_update(). + * + * If the size of the output buffer is at least this large, it is guaranteed + * that psa_cipher_update() will not fail due to an insufficient buffer size. + * The actual size of the output might be smaller in any given call. + * + * See also #PSA_CIPHER_UPDATE_OUTPUT_MAX_SIZE(\p input_length). + * + * \param key_type A symmetric key type that is compatible with algorithm + * alg. + * \param alg A cipher algorithm (PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * \param input_length Size of the input in bytes. + * + * \return A sufficient output size for the specified key type and + * algorithm. If the key type or cipher algorithm is not + * recognized, or the parameters are incompatible, return 0. + */ +#define PSA_CIPHER_UPDATE_OUTPUT_SIZE(key_type, alg, input_length) \ + (PSA_ALG_IS_CIPHER(alg) ? \ + (PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) != 0 ? \ + (((alg) == PSA_ALG_CBC_PKCS7 || \ + (alg) == PSA_ALG_CBC_NO_PADDING || \ + (alg) == PSA_ALG_ECB_NO_PADDING) ? \ + PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type), \ + input_length) : \ + (input_length)) : 0) : \ + 0) + +/** A sufficient output buffer size for psa_cipher_update(), for any of the + * supported key types and cipher algorithms. + * + * If the size of the output buffer is at least this large, it is guaranteed + * that psa_cipher_update() will not fail due to an insufficient buffer size. + * + * See also #PSA_CIPHER_UPDATE_OUTPUT_SIZE(\p key_type, \p alg, \p input_length). + * + * \param input_length Size of the input in bytes. + */ +#define PSA_CIPHER_UPDATE_OUTPUT_MAX_SIZE(input_length) \ + (PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE, input_length)) + +/** A sufficient ciphertext buffer size for psa_cipher_finish(). + * + * If the size of the ciphertext buffer is at least this large, it is + * guaranteed that psa_cipher_finish() will not fail due to an insufficient + * ciphertext buffer size. The actual size of the output might be smaller in + * any given call. + * + * See also #PSA_CIPHER_FINISH_OUTPUT_MAX_SIZE(). + * + * \param key_type A symmetric key type that is compatible with algorithm + * alg. + * \param alg A cipher algorithm (PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * \return A sufficient output size for the specified key type and + * algorithm. If the key type or cipher algorithm is not + * recognized, or the parameters are incompatible, return 0. + */ +#define PSA_CIPHER_FINISH_OUTPUT_SIZE(key_type, alg) \ + (PSA_ALG_IS_CIPHER(alg) ? \ + (alg == PSA_ALG_CBC_PKCS7 ? \ + PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \ + 0) : \ + 0) + +/** A sufficient ciphertext buffer size for psa_cipher_finish(), for any of the + * supported key types and cipher algorithms. + * + * See also #PSA_CIPHER_FINISH_OUTPUT_SIZE(\p key_type, \p alg). + */ +#define PSA_CIPHER_FINISH_OUTPUT_MAX_SIZE \ + (PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE) + +#endif /* PSA_CRYPTO_SIZES_H */ diff --git a/Externals/mbedtls/include/psa/crypto_struct.h b/Externals/mbedtls/include/psa/crypto_struct.h new file mode 100644 index 000000000000..23a02a5d8ef3 --- /dev/null +++ b/Externals/mbedtls/include/psa/crypto_struct.h @@ -0,0 +1,478 @@ +/** + * \file psa/crypto_struct.h + * + * \brief PSA cryptography module: Mbed TLS structured type implementations + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * This file contains the definitions of some data structures with + * implementation-specific definitions. + * + * In implementations with isolation between the application and the + * cryptography module, it is expected that the front-end and the back-end + * would have different versions of this file. + * + *

Design notes about multipart operation structures

+ * + * For multipart operations without driver delegation support, each multipart + * operation structure contains a `psa_algorithm_t alg` field which indicates + * which specific algorithm the structure is for. When the structure is not in + * use, `alg` is 0. Most of the structure consists of a union which is + * discriminated by `alg`. + * + * For multipart operations with driver delegation support, each multipart + * operation structure contains an `unsigned int id` field indicating which + * driver got assigned to do the operation. When the structure is not in use, + * 'id' is 0. The structure contains also a driver context which is the union + * of the contexts of all drivers able to handle the type of multipart + * operation. + * + * Note that when `alg` or `id` is 0, the content of other fields is undefined. + * In particular, it is not guaranteed that a freshly-initialized structure + * is all-zero: we initialize structures to something like `{0, 0}`, which + * is only guaranteed to initializes the first member of the union; + * GCC and Clang initialize the whole structure to 0 (at the time of writing), + * but MSVC and CompCert don't. + * + * In Mbed Crypto, multipart operation structures live independently from + * the key. This allows Mbed Crypto to free the key objects when destroying + * a key slot. If a multipart operation needs to remember the key after + * the setup function returns, the operation structure needs to contain a + * copy of the key. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_STRUCT_H +#define PSA_CRYPTO_STRUCT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Include the Mbed TLS configuration file, the way Mbed TLS does it + * in each of its header files. */ +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/cmac.h" +#include "mbedtls/gcm.h" + +/* Include the context definition for the compiled-in drivers for the primitive + * algorithms. */ +#include "psa/crypto_driver_contexts_primitives.h" + +struct psa_hash_operation_s +{ + /** Unique ID indicating which driver got assigned to do the + * operation. Since driver contexts are driver-specific, swapping + * drivers halfway through the operation is not supported. + * ID values are auto-generated in psa_driver_wrappers.h. + * ID value zero means the context is not valid or not assigned to + * any driver (i.e. the driver context is not active, in use). */ + unsigned int id; + psa_driver_hash_context_t ctx; +}; + +#define PSA_HASH_OPERATION_INIT {0, {0}} +static inline struct psa_hash_operation_s psa_hash_operation_init( void ) +{ + const struct psa_hash_operation_s v = PSA_HASH_OPERATION_INIT; + return( v ); +} + +struct psa_cipher_operation_s +{ + /** Unique ID indicating which driver got assigned to do the + * operation. Since driver contexts are driver-specific, swapping + * drivers halfway through the operation is not supported. + * ID values are auto-generated in psa_crypto_driver_wrappers.h + * ID value zero means the context is not valid or not assigned to + * any driver (i.e. none of the driver contexts are active). */ + unsigned int id; + + unsigned int iv_required : 1; + unsigned int iv_set : 1; + + uint8_t default_iv_length; + + psa_driver_cipher_context_t ctx; +}; + +#define PSA_CIPHER_OPERATION_INIT {0, 0, 0, 0, {0}} +static inline struct psa_cipher_operation_s psa_cipher_operation_init( void ) +{ + const struct psa_cipher_operation_s v = PSA_CIPHER_OPERATION_INIT; + return( v ); +} + +/* Include the context definition for the compiled-in drivers for the composite + * algorithms. */ +#include "psa/crypto_driver_contexts_composites.h" + +struct psa_mac_operation_s +{ + /** Unique ID indicating which driver got assigned to do the + * operation. Since driver contexts are driver-specific, swapping + * drivers halfway through the operation is not supported. + * ID values are auto-generated in psa_driver_wrappers.h + * ID value zero means the context is not valid or not assigned to + * any driver (i.e. none of the driver contexts are active). */ + unsigned int id; + uint8_t mac_size; + unsigned int is_sign : 1; + psa_driver_mac_context_t ctx; +}; + +#define PSA_MAC_OPERATION_INIT {0, 0, 0, {0}} +static inline struct psa_mac_operation_s psa_mac_operation_init( void ) +{ + const struct psa_mac_operation_s v = PSA_MAC_OPERATION_INIT; + return( v ); +} + +struct psa_aead_operation_s +{ + psa_algorithm_t alg; + unsigned int key_set : 1; + unsigned int iv_set : 1; + uint8_t iv_size; + uint8_t block_size; + union + { + unsigned dummy; /* Enable easier initializing of the union. */ + mbedtls_cipher_context_t cipher; + } ctx; +}; + +#define PSA_AEAD_OPERATION_INIT {0, 0, 0, 0, 0, {0}} +static inline struct psa_aead_operation_s psa_aead_operation_init( void ) +{ + const struct psa_aead_operation_s v = PSA_AEAD_OPERATION_INIT; + return( v ); +} + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF) +typedef struct +{ + uint8_t *info; + size_t info_length; +#if PSA_HASH_MAX_SIZE > 0xff +#error "PSA_HASH_MAX_SIZE does not fit in uint8_t" +#endif + uint8_t offset_in_block; + uint8_t block_number; + unsigned int state : 2; + unsigned int info_set : 1; + uint8_t output_block[PSA_HASH_MAX_SIZE]; + uint8_t prk[PSA_HASH_MAX_SIZE]; + struct psa_mac_operation_s hmac; +} psa_hkdf_key_derivation_t; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_HKDF */ + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS) +typedef enum +{ + PSA_TLS12_PRF_STATE_INIT, /* no input provided */ + PSA_TLS12_PRF_STATE_SEED_SET, /* seed has been set */ + PSA_TLS12_PRF_STATE_KEY_SET, /* key has been set */ + PSA_TLS12_PRF_STATE_LABEL_SET, /* label has been set */ + PSA_TLS12_PRF_STATE_OUTPUT /* output has been started */ +} psa_tls12_prf_key_derivation_state_t; + +typedef struct psa_tls12_prf_key_derivation_s +{ +#if PSA_HASH_MAX_SIZE > 0xff +#error "PSA_HASH_MAX_SIZE does not fit in uint8_t" +#endif + + /* Indicates how many bytes in the current HMAC block have + * not yet been read by the user. */ + uint8_t left_in_block; + + /* The 1-based number of the block. */ + uint8_t block_number; + + psa_tls12_prf_key_derivation_state_t state; + + uint8_t *secret; + size_t secret_length; + uint8_t *seed; + size_t seed_length; + uint8_t *label; + size_t label_length; + + uint8_t Ai[PSA_HASH_MAX_SIZE]; + + /* `HMAC_hash( prk, A(i) + seed )` in the notation of RFC 5246, Sect. 5. */ + uint8_t output_block[PSA_HASH_MAX_SIZE]; +} psa_tls12_prf_key_derivation_t; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) || + * MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS */ + +struct psa_key_derivation_s +{ + psa_algorithm_t alg; + unsigned int can_output_key : 1; + size_t capacity; + union + { + /* Make the union non-empty even with no supported algorithms. */ + uint8_t dummy; +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF) + psa_hkdf_key_derivation_t hkdf; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS) + psa_tls12_prf_key_derivation_t tls12_prf; +#endif + } ctx; +}; + +/* This only zeroes out the first byte in the union, the rest is unspecified. */ +#define PSA_KEY_DERIVATION_OPERATION_INIT {0, 0, 0, {0}} +static inline struct psa_key_derivation_s psa_key_derivation_operation_init( void ) +{ + const struct psa_key_derivation_s v = PSA_KEY_DERIVATION_OPERATION_INIT; + return( v ); +} + +struct psa_key_policy_s +{ + psa_key_usage_t usage; + psa_algorithm_t alg; + psa_algorithm_t alg2; +}; +typedef struct psa_key_policy_s psa_key_policy_t; + +#define PSA_KEY_POLICY_INIT {0, 0, 0} +static inline struct psa_key_policy_s psa_key_policy_init( void ) +{ + const struct psa_key_policy_s v = PSA_KEY_POLICY_INIT; + return( v ); +} + +/* The type used internally for key sizes. + * Public interfaces use size_t, but internally we use a smaller type. */ +typedef uint16_t psa_key_bits_t; +/* The maximum value of the type used to represent bit-sizes. + * This is used to mark an invalid key size. */ +#define PSA_KEY_BITS_TOO_LARGE ( (psa_key_bits_t) ( -1 ) ) +/* The maximum size of a key in bits. + * Currently defined as the maximum that can be represented, rounded down + * to a whole number of bytes. + * This is an uncast value so that it can be used in preprocessor + * conditionals. */ +#define PSA_MAX_KEY_BITS 0xfff8 + +/** A mask of flags that can be stored in key attributes. + * + * This type is also used internally to store flags in slots. Internal + * flags are defined in library/psa_crypto_core.h. Internal flags may have + * the same value as external flags if they are properly handled during + * key creation and in psa_get_key_attributes. + */ +typedef uint16_t psa_key_attributes_flag_t; + +#define MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER \ + ( (psa_key_attributes_flag_t) 0x0001 ) + +/* A mask of key attribute flags used externally only. + * Only meant for internal checks inside the library. */ +#define MBEDTLS_PSA_KA_MASK_EXTERNAL_ONLY ( \ + MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER | \ + 0 ) + +/* A mask of key attribute flags used both internally and externally. + * Currently there aren't any. */ +#define MBEDTLS_PSA_KA_MASK_DUAL_USE ( \ + 0 ) + +typedef struct +{ + psa_key_type_t type; + psa_key_bits_t bits; + psa_key_lifetime_t lifetime; + mbedtls_svc_key_id_t id; + psa_key_policy_t policy; + psa_key_attributes_flag_t flags; +} psa_core_key_attributes_t; + +#define PSA_CORE_KEY_ATTRIBUTES_INIT {PSA_KEY_TYPE_NONE, 0, PSA_KEY_LIFETIME_VOLATILE, MBEDTLS_SVC_KEY_ID_INIT, PSA_KEY_POLICY_INIT, 0} + +struct psa_key_attributes_s +{ + psa_core_key_attributes_t core; +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + psa_key_slot_number_t slot_number; +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + void *domain_parameters; + size_t domain_parameters_size; +}; + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) +#define PSA_KEY_ATTRIBUTES_INIT {PSA_CORE_KEY_ATTRIBUTES_INIT, 0, NULL, 0} +#else +#define PSA_KEY_ATTRIBUTES_INIT {PSA_CORE_KEY_ATTRIBUTES_INIT, NULL, 0} +#endif + +static inline struct psa_key_attributes_s psa_key_attributes_init( void ) +{ + const struct psa_key_attributes_s v = PSA_KEY_ATTRIBUTES_INIT; + return( v ); +} + +static inline void psa_set_key_id( psa_key_attributes_t *attributes, + mbedtls_svc_key_id_t key ) +{ + psa_key_lifetime_t lifetime = attributes->core.lifetime; + + attributes->core.id = key; + + if( PSA_KEY_LIFETIME_IS_VOLATILE( lifetime ) ) + { + attributes->core.lifetime = + PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION( + PSA_KEY_LIFETIME_PERSISTENT, + PSA_KEY_LIFETIME_GET_LOCATION( lifetime ) ); + } +} + +static inline mbedtls_svc_key_id_t psa_get_key_id( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.id ); +} + +#ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER +static inline void mbedtls_set_key_owner_id( psa_key_attributes_t *attributes, + mbedtls_key_owner_id_t owner ) +{ + attributes->core.id.owner = owner; +} +#endif + +static inline void psa_set_key_lifetime(psa_key_attributes_t *attributes, + psa_key_lifetime_t lifetime) +{ + attributes->core.lifetime = lifetime; + if( PSA_KEY_LIFETIME_IS_VOLATILE( lifetime ) ) + { +#ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER + attributes->core.id.key_id = 0; +#else + attributes->core.id = 0; +#endif + } +} + +static inline psa_key_lifetime_t psa_get_key_lifetime( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.lifetime ); +} + +static inline void psa_extend_key_usage_flags( psa_key_usage_t *usage_flags ) +{ + if( *usage_flags & PSA_KEY_USAGE_SIGN_HASH ) + *usage_flags |= PSA_KEY_USAGE_SIGN_MESSAGE; + + if( *usage_flags & PSA_KEY_USAGE_VERIFY_HASH ) + *usage_flags |= PSA_KEY_USAGE_VERIFY_MESSAGE; +} + +static inline void psa_set_key_usage_flags(psa_key_attributes_t *attributes, + psa_key_usage_t usage_flags) +{ + psa_extend_key_usage_flags( &usage_flags ); + attributes->core.policy.usage = usage_flags; +} + +static inline psa_key_usage_t psa_get_key_usage_flags( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.policy.usage ); +} + +static inline void psa_set_key_algorithm(psa_key_attributes_t *attributes, + psa_algorithm_t alg) +{ + attributes->core.policy.alg = alg; +} + +static inline psa_algorithm_t psa_get_key_algorithm( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.policy.alg ); +} + +/* This function is declared in crypto_extra.h, which comes after this + * header file, but we need the function here, so repeat the declaration. */ +psa_status_t psa_set_key_domain_parameters(psa_key_attributes_t *attributes, + psa_key_type_t type, + const uint8_t *data, + size_t data_length); + +static inline void psa_set_key_type(psa_key_attributes_t *attributes, + psa_key_type_t type) +{ + if( attributes->domain_parameters == NULL ) + { + /* Common case: quick path */ + attributes->core.type = type; + } + else + { + /* Call the bigger function to free the old domain paramteres. + * Ignore any errors which may arise due to type requiring + * non-default domain parameters, since this function can't + * report errors. */ + (void) psa_set_key_domain_parameters( attributes, type, NULL, 0 ); + } +} + +static inline psa_key_type_t psa_get_key_type( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.type ); +} + +static inline void psa_set_key_bits(psa_key_attributes_t *attributes, + size_t bits) +{ + if( bits > PSA_MAX_KEY_BITS ) + attributes->core.bits = PSA_KEY_BITS_TOO_LARGE; + else + attributes->core.bits = (psa_key_bits_t) bits; +} + +static inline size_t psa_get_key_bits( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.bits ); +} + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_STRUCT_H */ diff --git a/Externals/mbedtls/include/psa/crypto_types.h b/Externals/mbedtls/include/psa/crypto_types.h new file mode 100644 index 000000000000..386c7d794b47 --- /dev/null +++ b/Externals/mbedtls/include/psa/crypto_types.h @@ -0,0 +1,383 @@ +/** + * \file psa/crypto_types.h + * + * \brief PSA cryptography module: type aliases. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. Drivers must include the appropriate driver + * header file. + * + * This file contains portable definitions of integral types for properties + * of cryptographic keys, designations of cryptographic algorithms, and + * error codes returned by the library. + * + * This header file does not declare any function. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_TYPES_H +#define PSA_CRYPTO_TYPES_H + +#include "crypto_platform.h" + +/* If MBEDTLS_PSA_CRYPTO_C is defined, make sure MBEDTLS_PSA_CRYPTO_CLIENT + * is defined as well to include all PSA code. + */ +#if defined(MBEDTLS_PSA_CRYPTO_C) +#define MBEDTLS_PSA_CRYPTO_CLIENT +#endif /* MBEDTLS_PSA_CRYPTO_C */ + +#include + +/** \defgroup error Error codes + * @{ + */ + +/** + * \brief Function return status. + * + * This is either #PSA_SUCCESS (which is zero), indicating success, + * or a small negative value indicating that an error occurred. Errors are + * encoded as one of the \c PSA_ERROR_xxx values defined here. */ +/* If #PSA_SUCCESS is already defined, it means that #psa_status_t + * is also defined in an external header, so prevent its multiple + * definition. + */ +#ifndef PSA_SUCCESS +typedef int32_t psa_status_t; +#endif + +/**@}*/ + +/** \defgroup crypto_types Key and algorithm types + * @{ + */ + +/** \brief Encoding of a key type. + */ +typedef uint16_t psa_key_type_t; + +/** The type of PSA elliptic curve family identifiers. + * + * The curve identifier is required to create an ECC key using the + * PSA_KEY_TYPE_ECC_KEY_PAIR() or PSA_KEY_TYPE_ECC_PUBLIC_KEY() + * macros. + * + * Values defined by this standard will never be in the range 0x80-0xff. + * Vendors who define additional families must use an encoding in this range. + */ +typedef uint8_t psa_ecc_family_t; + +/** The type of PSA Diffie-Hellman group family identifiers. + * + * The group identifier is required to create an Diffie-Hellman key using the + * PSA_KEY_TYPE_DH_KEY_PAIR() or PSA_KEY_TYPE_DH_PUBLIC_KEY() + * macros. + * + * Values defined by this standard will never be in the range 0x80-0xff. + * Vendors who define additional families must use an encoding in this range. + */ +typedef uint8_t psa_dh_family_t; + +/** \brief Encoding of a cryptographic algorithm. + * + * For algorithms that can be applied to multiple key types, this type + * does not encode the key type. For example, for symmetric ciphers + * based on a block cipher, #psa_algorithm_t encodes the block cipher + * mode and the padding mode while the block cipher itself is encoded + * via #psa_key_type_t. + */ +typedef uint32_t psa_algorithm_t; + +/**@}*/ + +/** \defgroup key_lifetimes Key lifetimes + * @{ + */ + +/** Encoding of key lifetimes. + * + * The lifetime of a key indicates where it is stored and what system actions + * may create and destroy it. + * + * Lifetime values have the following structure: + * - Bits 0-7 (#PSA_KEY_LIFETIME_GET_PERSISTENCE(\c lifetime)): + * persistence level. This value indicates what device management + * actions can cause it to be destroyed. In particular, it indicates + * whether the key is _volatile_ or _persistent_. + * See ::psa_key_persistence_t for more information. + * - Bits 8-31 (#PSA_KEY_LIFETIME_GET_LOCATION(\c lifetime)): + * location indicator. This value indicates which part of the system + * has access to the key material and can perform operations using the key. + * See ::psa_key_location_t for more information. + * + * Volatile keys are automatically destroyed when the application instance + * terminates or on a power reset of the device. Persistent keys are + * preserved until the application explicitly destroys them or until an + * integration-specific device management event occurs (for example, + * a factory reset). + * + * Persistent keys have a key identifier of type #mbedtls_svc_key_id_t. + * This identifier remains valid throughout the lifetime of the key, + * even if the application instance that created the key terminates. + * The application can call psa_open_key() to open a persistent key that + * it created previously. + * + * The default lifetime of a key is #PSA_KEY_LIFETIME_VOLATILE. The lifetime + * #PSA_KEY_LIFETIME_PERSISTENT is supported if persistent storage is + * available. Other lifetime values may be supported depending on the + * library configuration. + */ +typedef uint32_t psa_key_lifetime_t; + +/** Encoding of key persistence levels. + * + * What distinguishes different persistence levels is what device management + * events may cause keys to be destroyed. _Volatile_ keys are destroyed + * by a power reset. Persistent keys may be destroyed by events such as + * a transfer of ownership or a factory reset. What management events + * actually affect persistent keys at different levels is outside the + * scope of the PSA Cryptography specification. + * + * The PSA Cryptography specification defines the following values of + * persistence levels: + * - \c 0 = #PSA_KEY_PERSISTENCE_VOLATILE: volatile key. + * A volatile key is automatically destroyed by the implementation when + * the application instance terminates. In particular, a volatile key + * is automatically destroyed on a power reset of the device. + * - \c 1 = #PSA_KEY_PERSISTENCE_DEFAULT: + * persistent key with a default lifetime. + * - \c 2-254: currently not supported by Mbed TLS. + * - \c 255 = #PSA_KEY_PERSISTENCE_READ_ONLY: + * read-only or write-once key. + * A key with this persistence level cannot be destroyed. + * Mbed TLS does not currently offer a way to create such keys, but + * integrations of Mbed TLS can use it for built-in keys that the + * application cannot modify (for example, a hardware unique key (HUK)). + * + * \note Key persistence levels are 8-bit values. Key management + * interfaces operate on lifetimes (type ::psa_key_lifetime_t) which + * encode the persistence as the lower 8 bits of a 32-bit value. + */ +typedef uint8_t psa_key_persistence_t; + +/** Encoding of key location indicators. + * + * If an integration of Mbed TLS can make calls to external + * cryptoprocessors such as secure elements, the location of a key + * indicates which secure element performs the operations on the key. + * Depending on the design of the secure element, the key + * material may be stored either in the secure element, or + * in wrapped (encrypted) form alongside the key metadata in the + * primary local storage. + * + * The PSA Cryptography API specification defines the following values of + * location indicators: + * - \c 0: primary local storage. + * This location is always available. + * The primary local storage is typically the same storage area that + * contains the key metadata. + * - \c 1: primary secure element. + * Integrations of Mbed TLS should support this value if there is a secure + * element attached to the operating environment. + * As a guideline, secure elements may provide higher resistance against + * side channel and physical attacks than the primary local storage, but may + * have restrictions on supported key types, sizes, policies and operations + * and may have different performance characteristics. + * - \c 2-0x7fffff: other locations defined by a PSA specification. + * The PSA Cryptography API does not currently assign any meaning to these + * locations, but future versions of that specification or other PSA + * specifications may do so. + * - \c 0x800000-0xffffff: vendor-defined locations. + * No PSA specification will assign a meaning to locations in this range. + * + * \note Key location indicators are 24-bit values. Key management + * interfaces operate on lifetimes (type ::psa_key_lifetime_t) which + * encode the location as the upper 24 bits of a 32-bit value. + */ +typedef uint32_t psa_key_location_t; + +/** Encoding of identifiers of persistent keys. + * + * - Applications may freely choose key identifiers in the range + * #PSA_KEY_ID_USER_MIN to #PSA_KEY_ID_USER_MAX. + * - The implementation may define additional key identifiers in the range + * #PSA_KEY_ID_VENDOR_MIN to #PSA_KEY_ID_VENDOR_MAX. + * - 0 is reserved as an invalid key identifier. + * - Key identifiers outside these ranges are reserved for future use. + */ +typedef uint32_t psa_key_id_t; + +#if !defined(MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER) +typedef psa_key_id_t mbedtls_svc_key_id_t; + +#else /* MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER */ +/* Implementation-specific: The Mbed Cryptography library can be built as + * part of a multi-client service that exposes the PSA Cryptograpy API in each + * client and encodes the client identity in the key identifier argument of + * functions such as psa_open_key(). + */ +typedef struct +{ + psa_key_id_t key_id; + mbedtls_key_owner_id_t owner; +} mbedtls_svc_key_id_t; + +#endif /* !MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER */ + +/**@}*/ + +/** \defgroup policy Key policies + * @{ + */ + +/** \brief Encoding of permitted usage on a key. */ +typedef uint32_t psa_key_usage_t; + +/**@}*/ + +/** \defgroup attributes Key attributes + * @{ + */ + +/** The type of a structure containing key attributes. + * + * This is an opaque structure that can represent the metadata of a key + * object. Metadata that can be stored in attributes includes: + * - The location of the key in storage, indicated by its key identifier + * and its lifetime. + * - The key's policy, comprising usage flags and a specification of + * the permitted algorithm(s). + * - Information about the key itself: the key type and its size. + * - Additional implementation-defined attributes. + * + * The actual key material is not considered an attribute of a key. + * Key attributes do not contain information that is generally considered + * highly confidential. + * + * An attribute structure works like a simple data structure where each function + * `psa_set_key_xxx` sets a field and the corresponding function + * `psa_get_key_xxx` retrieves the value of the corresponding field. + * However, a future version of the library may report values that are + * equivalent to the original one, but have a different encoding. Invalid + * values may be mapped to different, also invalid values. + * + * An attribute structure may contain references to auxiliary resources, + * for example pointers to allocated memory or indirect references to + * pre-calculated values. In order to free such resources, the application + * must call psa_reset_key_attributes(). As an exception, calling + * psa_reset_key_attributes() on an attribute structure is optional if + * the structure has only been modified by the following functions + * since it was initialized or last reset with psa_reset_key_attributes(): + * - psa_set_key_id() + * - psa_set_key_lifetime() + * - psa_set_key_type() + * - psa_set_key_bits() + * - psa_set_key_usage_flags() + * - psa_set_key_algorithm() + * + * Before calling any function on a key attribute structure, the application + * must initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_key_attributes_t attributes; + * memset(&attributes, 0, sizeof(attributes)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_key_attributes_t attributes = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_KEY_ATTRIBUTES_INIT, + * for example: + * \code + * psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + * \endcode + * - Assign the result of the function psa_key_attributes_init() + * to the structure, for example: + * \code + * psa_key_attributes_t attributes; + * attributes = psa_key_attributes_init(); + * \endcode + * + * A freshly initialized attribute structure contains the following + * values: + * + * - lifetime: #PSA_KEY_LIFETIME_VOLATILE. + * - key identifier: 0 (which is not a valid key identifier). + * - type: \c 0 (meaning that the type is unspecified). + * - key size: \c 0 (meaning that the size is unspecified). + * - usage flags: \c 0 (which allows no usage except exporting a public key). + * - algorithm: \c 0 (which allows no cryptographic usage, but allows + * exporting). + * + * A typical sequence to create a key is as follows: + * -# Create and initialize an attribute structure. + * -# If the key is persistent, call psa_set_key_id(). + * Also call psa_set_key_lifetime() to place the key in a non-default + * location. + * -# Set the key policy with psa_set_key_usage_flags() and + * psa_set_key_algorithm(). + * -# Set the key type with psa_set_key_type(). + * Skip this step if copying an existing key with psa_copy_key(). + * -# When generating a random key with psa_generate_key() or deriving a key + * with psa_key_derivation_output_key(), set the desired key size with + * psa_set_key_bits(). + * -# Call a key creation function: psa_import_key(), psa_generate_key(), + * psa_key_derivation_output_key() or psa_copy_key(). This function reads + * the attribute structure, creates a key with these attributes, and + * outputs a key identifier to the newly created key. + * -# The attribute structure is now no longer necessary. + * You may call psa_reset_key_attributes(), although this is optional + * with the workflow presented here because the attributes currently + * defined in this specification do not require any additional resources + * beyond the structure itself. + * + * A typical sequence to query a key's attributes is as follows: + * -# Call psa_get_key_attributes(). + * -# Call `psa_get_key_xxx` functions to retrieve the attribute(s) that + * you are interested in. + * -# Call psa_reset_key_attributes() to free any resources that may be + * used by the attribute structure. + * + * Once a key has been created, it is impossible to change its attributes. + */ +typedef struct psa_key_attributes_s psa_key_attributes_t; + + +#ifndef __DOXYGEN_ONLY__ +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) +/* Mbed Crypto defines this type in crypto_types.h because it is also + * visible to applications through an implementation-specific extension. + * For the PSA Cryptography specification, this type is only visible + * via crypto_se_driver.h. */ +typedef uint64_t psa_key_slot_number_t; +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ +#endif /* !__DOXYGEN_ONLY__ */ + +/**@}*/ + +/** \defgroup derivation Key derivation + * @{ + */ + +/** \brief Encoding of the step of a key derivation. */ +typedef uint16_t psa_key_derivation_step_t; + +/**@}*/ + +#endif /* PSA_CRYPTO_TYPES_H */ diff --git a/Externals/mbedtls/include/psa/crypto_values.h b/Externals/mbedtls/include/psa/crypto_values.h new file mode 100644 index 000000000000..fafe93cf9ba4 --- /dev/null +++ b/Externals/mbedtls/include/psa/crypto_values.h @@ -0,0 +1,2325 @@ +/** + * \file psa/crypto_values.h + * + * \brief PSA cryptography module: macros to build and analyze integer values. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. Drivers must include the appropriate driver + * header file. + * + * This file contains portable definitions of macros to build and analyze + * values of integral types that encode properties of cryptographic keys, + * designations of cryptographic algorithms, and error codes returned by + * the library. + * + * This header file only defines preprocessor macros. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_VALUES_H +#define PSA_CRYPTO_VALUES_H + +/** \defgroup error Error codes + * @{ + */ + +/* PSA error codes */ + +/** The action was completed successfully. */ +#define PSA_SUCCESS ((psa_status_t)0) + +/** An error occurred that does not correspond to any defined + * failure cause. + * + * Implementations may use this error code if none of the other standard + * error codes are applicable. */ +#define PSA_ERROR_GENERIC_ERROR ((psa_status_t)-132) + +/** The requested operation or a parameter is not supported + * by this implementation. + * + * Implementations should return this error code when an enumeration + * parameter such as a key type, algorithm, etc. is not recognized. + * If a combination of parameters is recognized and identified as + * not valid, return #PSA_ERROR_INVALID_ARGUMENT instead. */ +#define PSA_ERROR_NOT_SUPPORTED ((psa_status_t)-134) + +/** The requested action is denied by a policy. + * + * Implementations should return this error code when the parameters + * are recognized as valid and supported, and a policy explicitly + * denies the requested operation. + * + * If a subset of the parameters of a function call identify a + * forbidden operation, and another subset of the parameters are + * not valid or not supported, it is unspecified whether the function + * returns #PSA_ERROR_NOT_PERMITTED, #PSA_ERROR_NOT_SUPPORTED or + * #PSA_ERROR_INVALID_ARGUMENT. */ +#define PSA_ERROR_NOT_PERMITTED ((psa_status_t)-133) + +/** An output buffer is too small. + * + * Applications can call the \c PSA_xxx_SIZE macro listed in the function + * description to determine a sufficient buffer size. + * + * Implementations should preferably return this error code only + * in cases when performing the operation with a larger output + * buffer would succeed. However implementations may return this + * error if a function has invalid or unsupported parameters in addition + * to the parameters that determine the necessary output buffer size. */ +#define PSA_ERROR_BUFFER_TOO_SMALL ((psa_status_t)-138) + +/** Asking for an item that already exists + * + * Implementations should return this error, when attempting + * to write an item (like a key) that already exists. */ +#define PSA_ERROR_ALREADY_EXISTS ((psa_status_t)-139) + +/** Asking for an item that doesn't exist + * + * Implementations should return this error, if a requested item (like + * a key) does not exist. */ +#define PSA_ERROR_DOES_NOT_EXIST ((psa_status_t)-140) + +/** The requested action cannot be performed in the current state. + * + * Multipart operations return this error when one of the + * functions is called out of sequence. Refer to the function + * descriptions for permitted sequencing of functions. + * + * Implementations shall not return this error code to indicate + * that a key either exists or not, + * but shall instead return #PSA_ERROR_ALREADY_EXISTS or #PSA_ERROR_DOES_NOT_EXIST + * as applicable. + * + * Implementations shall not return this error code to indicate that a + * key identifier is invalid, but shall return #PSA_ERROR_INVALID_HANDLE + * instead. */ +#define PSA_ERROR_BAD_STATE ((psa_status_t)-137) + +/** The parameters passed to the function are invalid. + * + * Implementations may return this error any time a parameter or + * combination of parameters are recognized as invalid. + * + * Implementations shall not return this error code to indicate that a + * key identifier is invalid, but shall return #PSA_ERROR_INVALID_HANDLE + * instead. + */ +#define PSA_ERROR_INVALID_ARGUMENT ((psa_status_t)-135) + +/** There is not enough runtime memory. + * + * If the action is carried out across multiple security realms, this + * error can refer to available memory in any of the security realms. */ +#define PSA_ERROR_INSUFFICIENT_MEMORY ((psa_status_t)-141) + +/** There is not enough persistent storage. + * + * Functions that modify the key storage return this error code if + * there is insufficient storage space on the host media. In addition, + * many functions that do not otherwise access storage may return this + * error code if the implementation requires a mandatory log entry for + * the requested action and the log storage space is full. */ +#define PSA_ERROR_INSUFFICIENT_STORAGE ((psa_status_t)-142) + +/** There was a communication failure inside the implementation. + * + * This can indicate a communication failure between the application + * and an external cryptoprocessor or between the cryptoprocessor and + * an external volatile or persistent memory. A communication failure + * may be transient or permanent depending on the cause. + * + * \warning If a function returns this error, it is undetermined + * whether the requested action has completed or not. Implementations + * should return #PSA_SUCCESS on successful completion whenever + * possible, however functions may return #PSA_ERROR_COMMUNICATION_FAILURE + * if the requested action was completed successfully in an external + * cryptoprocessor but there was a breakdown of communication before + * the cryptoprocessor could report the status to the application. + */ +#define PSA_ERROR_COMMUNICATION_FAILURE ((psa_status_t)-145) + +/** There was a storage failure that may have led to data loss. + * + * This error indicates that some persistent storage is corrupted. + * It should not be used for a corruption of volatile memory + * (use #PSA_ERROR_CORRUPTION_DETECTED), for a communication error + * between the cryptoprocessor and its external storage (use + * #PSA_ERROR_COMMUNICATION_FAILURE), or when the storage is + * in a valid state but is full (use #PSA_ERROR_INSUFFICIENT_STORAGE). + * + * Note that a storage failure does not indicate that any data that was + * previously read is invalid. However this previously read data may no + * longer be readable from storage. + * + * When a storage failure occurs, it is no longer possible to ensure + * the global integrity of the keystore. Depending on the global + * integrity guarantees offered by the implementation, access to other + * data may or may not fail even if the data is still readable but + * its integrity cannot be guaranteed. + * + * Implementations should only use this error code to report a + * permanent storage corruption. However application writers should + * keep in mind that transient errors while reading the storage may be + * reported using this error code. */ +#define PSA_ERROR_STORAGE_FAILURE ((psa_status_t)-146) + +/** A hardware failure was detected. + * + * A hardware failure may be transient or permanent depending on the + * cause. */ +#define PSA_ERROR_HARDWARE_FAILURE ((psa_status_t)-147) + +/** A tampering attempt was detected. + * + * If an application receives this error code, there is no guarantee + * that previously accessed or computed data was correct and remains + * confidential. Applications should not perform any security function + * and should enter a safe failure state. + * + * Implementations may return this error code if they detect an invalid + * state that cannot happen during normal operation and that indicates + * that the implementation's security guarantees no longer hold. Depending + * on the implementation architecture and on its security and safety goals, + * the implementation may forcibly terminate the application. + * + * This error code is intended as a last resort when a security breach + * is detected and it is unsure whether the keystore data is still + * protected. Implementations shall only return this error code + * to report an alarm from a tampering detector, to indicate that + * the confidentiality of stored data can no longer be guaranteed, + * or to indicate that the integrity of previously returned data is now + * considered compromised. Implementations shall not use this error code + * to indicate a hardware failure that merely makes it impossible to + * perform the requested operation (use #PSA_ERROR_COMMUNICATION_FAILURE, + * #PSA_ERROR_STORAGE_FAILURE, #PSA_ERROR_HARDWARE_FAILURE, + * #PSA_ERROR_INSUFFICIENT_ENTROPY or other applicable error code + * instead). + * + * This error indicates an attack against the application. Implementations + * shall not return this error code as a consequence of the behavior of + * the application itself. */ +#define PSA_ERROR_CORRUPTION_DETECTED ((psa_status_t)-151) + +/** There is not enough entropy to generate random data needed + * for the requested action. + * + * This error indicates a failure of a hardware random generator. + * Application writers should note that this error can be returned not + * only by functions whose purpose is to generate random data, such + * as key, IV or nonce generation, but also by functions that execute + * an algorithm with a randomized result, as well as functions that + * use randomization of intermediate computations as a countermeasure + * to certain attacks. + * + * Implementations should avoid returning this error after psa_crypto_init() + * has succeeded. Implementations should generate sufficient + * entropy during initialization and subsequently use a cryptographically + * secure pseudorandom generator (PRNG). However implementations may return + * this error at any time if a policy requires the PRNG to be reseeded + * during normal operation. */ +#define PSA_ERROR_INSUFFICIENT_ENTROPY ((psa_status_t)-148) + +/** The signature, MAC or hash is incorrect. + * + * Verification functions return this error if the verification + * calculations completed successfully, and the value to be verified + * was determined to be incorrect. + * + * If the value to verify has an invalid size, implementations may return + * either #PSA_ERROR_INVALID_ARGUMENT or #PSA_ERROR_INVALID_SIGNATURE. */ +#define PSA_ERROR_INVALID_SIGNATURE ((psa_status_t)-149) + +/** The decrypted padding is incorrect. + * + * \warning In some protocols, when decrypting data, it is essential that + * the behavior of the application does not depend on whether the padding + * is correct, down to precise timing. Applications should prefer + * protocols that use authenticated encryption rather than plain + * encryption. If the application must perform a decryption of + * unauthenticated data, the application writer should take care not + * to reveal whether the padding is invalid. + * + * Implementations should strive to make valid and invalid padding + * as close as possible to indistinguishable to an external observer. + * In particular, the timing of a decryption operation should not + * depend on the validity of the padding. */ +#define PSA_ERROR_INVALID_PADDING ((psa_status_t)-150) + +/** Return this error when there's insufficient data when attempting + * to read from a resource. */ +#define PSA_ERROR_INSUFFICIENT_DATA ((psa_status_t)-143) + +/** The key identifier is not valid. See also :ref:\`key-handles\`. + */ +#define PSA_ERROR_INVALID_HANDLE ((psa_status_t)-136) + +/** Stored data has been corrupted. + * + * This error indicates that some persistent storage has suffered corruption. + * It does not indicate the following situations, which have specific error + * codes: + * + * - A corruption of volatile memory - use #PSA_ERROR_CORRUPTION_DETECTED. + * - A communication error between the cryptoprocessor and its external + * storage - use #PSA_ERROR_COMMUNICATION_FAILURE. + * - When the storage is in a valid state but is full - use + * #PSA_ERROR_INSUFFICIENT_STORAGE. + * - When the storage fails for other reasons - use + * #PSA_ERROR_STORAGE_FAILURE. + * - When the stored data is not valid - use #PSA_ERROR_DATA_INVALID. + * + * \note A storage corruption does not indicate that any data that was + * previously read is invalid. However this previously read data might no + * longer be readable from storage. + * + * When a storage failure occurs, it is no longer possible to ensure the + * global integrity of the keystore. + */ +#define PSA_ERROR_DATA_CORRUPT ((psa_status_t)-152) + +/** Data read from storage is not valid for the implementation. + * + * This error indicates that some data read from storage does not have a valid + * format. It does not indicate the following situations, which have specific + * error codes: + * + * - When the storage or stored data is corrupted - use #PSA_ERROR_DATA_CORRUPT + * - When the storage fails for other reasons - use #PSA_ERROR_STORAGE_FAILURE + * - An invalid argument to the API - use #PSA_ERROR_INVALID_ARGUMENT + * + * This error is typically a result of either storage corruption on a + * cleartext storage backend, or an attempt to read data that was + * written by an incompatible version of the library. + */ +#define PSA_ERROR_DATA_INVALID ((psa_status_t)-153) + +/**@}*/ + +/** \defgroup crypto_types Key and algorithm types + * @{ + */ + +/** An invalid key type value. + * + * Zero is not the encoding of any key type. + */ +#define PSA_KEY_TYPE_NONE ((psa_key_type_t)0x0000) + +/** Vendor-defined key type flag. + * + * Key types defined by this standard will never have the + * #PSA_KEY_TYPE_VENDOR_FLAG bit set. Vendors who define additional key types + * must use an encoding with the #PSA_KEY_TYPE_VENDOR_FLAG bit set and should + * respect the bitwise structure used by standard encodings whenever practical. + */ +#define PSA_KEY_TYPE_VENDOR_FLAG ((psa_key_type_t)0x8000) + +#define PSA_KEY_TYPE_CATEGORY_MASK ((psa_key_type_t)0x7000) +#define PSA_KEY_TYPE_CATEGORY_RAW ((psa_key_type_t)0x1000) +#define PSA_KEY_TYPE_CATEGORY_SYMMETRIC ((psa_key_type_t)0x2000) +#define PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY ((psa_key_type_t)0x4000) +#define PSA_KEY_TYPE_CATEGORY_KEY_PAIR ((psa_key_type_t)0x7000) + +#define PSA_KEY_TYPE_CATEGORY_FLAG_PAIR ((psa_key_type_t)0x3000) + +/** Whether a key type is vendor-defined. + * + * See also #PSA_KEY_TYPE_VENDOR_FLAG. + */ +#define PSA_KEY_TYPE_IS_VENDOR_DEFINED(type) \ + (((type) & PSA_KEY_TYPE_VENDOR_FLAG) != 0) + +/** Whether a key type is an unstructured array of bytes. + * + * This encompasses both symmetric keys and non-key data. + */ +#define PSA_KEY_TYPE_IS_UNSTRUCTURED(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_RAW || \ + ((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_SYMMETRIC) + +/** Whether a key type is asymmetric: either a key pair or a public key. */ +#define PSA_KEY_TYPE_IS_ASYMMETRIC(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK \ + & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) == \ + PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY) +/** Whether a key type is the public part of a key pair. */ +#define PSA_KEY_TYPE_IS_PUBLIC_KEY(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY) +/** Whether a key type is a key pair containing a private part and a public + * part. */ +#define PSA_KEY_TYPE_IS_KEY_PAIR(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_KEY_PAIR) +/** The key pair type corresponding to a public key type. + * + * You may also pass a key pair type as \p type, it will be left unchanged. + * + * \param type A public key type or key pair type. + * + * \return The corresponding key pair type. + * If \p type is not a public key or a key pair, + * the return value is undefined. + */ +#define PSA_KEY_TYPE_KEY_PAIR_OF_PUBLIC_KEY(type) \ + ((type) | PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) +/** The public key type corresponding to a key pair type. + * + * You may also pass a key pair type as \p type, it will be left unchanged. + * + * \param type A public key type or key pair type. + * + * \return The corresponding public key type. + * If \p type is not a public key or a key pair, + * the return value is undefined. + */ +#define PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) \ + ((type) & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) + +/** Raw data. + * + * A "key" of this type cannot be used for any cryptographic operation. + * Applications may use this type to store arbitrary data in the keystore. */ +#define PSA_KEY_TYPE_RAW_DATA ((psa_key_type_t)0x1001) + +/** HMAC key. + * + * The key policy determines which underlying hash algorithm the key can be + * used for. + * + * HMAC keys should generally have the same size as the underlying hash. + * This size can be calculated with #PSA_HASH_LENGTH(\c alg) where + * \c alg is the HMAC algorithm or the underlying hash algorithm. */ +#define PSA_KEY_TYPE_HMAC ((psa_key_type_t)0x1100) + +/** A secret for key derivation. + * + * The key policy determines which key derivation algorithm the key + * can be used for. + */ +#define PSA_KEY_TYPE_DERIVE ((psa_key_type_t)0x1200) + +/** Key for a cipher, AEAD or MAC algorithm based on the AES block cipher. + * + * The size of the key can be 16 bytes (AES-128), 24 bytes (AES-192) or + * 32 bytes (AES-256). + */ +#define PSA_KEY_TYPE_AES ((psa_key_type_t)0x2400) + +/** Key for a cipher, AEAD or MAC algorithm based on the + * ARIA block cipher. */ +#define PSA_KEY_TYPE_ARIA ((psa_key_type_t)0x2406) + +/** Key for a cipher or MAC algorithm based on DES or 3DES (Triple-DES). + * + * The size of the key can be 64 bits (single DES), 128 bits (2-key 3DES) or + * 192 bits (3-key 3DES). + * + * Note that single DES and 2-key 3DES are weak and strongly + * deprecated and should only be used to decrypt legacy data. 3-key 3DES + * is weak and deprecated and should only be used in legacy protocols. + */ +#define PSA_KEY_TYPE_DES ((psa_key_type_t)0x2301) + +/** Key for a cipher, AEAD or MAC algorithm based on the + * Camellia block cipher. */ +#define PSA_KEY_TYPE_CAMELLIA ((psa_key_type_t)0x2403) + +/** Key for the RC4 stream cipher. + * + * Note that RC4 is weak and deprecated and should only be used in + * legacy protocols. */ +#define PSA_KEY_TYPE_ARC4 ((psa_key_type_t)0x2002) + +/** Key for the ChaCha20 stream cipher or the Chacha20-Poly1305 AEAD algorithm. + * + * ChaCha20 and the ChaCha20_Poly1305 construction are defined in RFC 7539. + * + * Implementations must support 12-byte nonces, may support 8-byte nonces, + * and should reject other sizes. + */ +#define PSA_KEY_TYPE_CHACHA20 ((psa_key_type_t)0x2004) + +/** RSA public key. + * + * The size of an RSA key is the bit size of the modulus. + */ +#define PSA_KEY_TYPE_RSA_PUBLIC_KEY ((psa_key_type_t)0x4001) +/** RSA key pair (private and public key). + * + * The size of an RSA key is the bit size of the modulus. + */ +#define PSA_KEY_TYPE_RSA_KEY_PAIR ((psa_key_type_t)0x7001) +/** Whether a key type is an RSA key (pair or public-only). */ +#define PSA_KEY_TYPE_IS_RSA(type) \ + (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY) + +#define PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE ((psa_key_type_t)0x4100) +#define PSA_KEY_TYPE_ECC_KEY_PAIR_BASE ((psa_key_type_t)0x7100) +#define PSA_KEY_TYPE_ECC_CURVE_MASK ((psa_key_type_t)0x00ff) +/** Elliptic curve key pair. + * + * The size of an elliptic curve key is the bit size associated with the curve, + * i.e. the bit size of *q* for a curve over a field *Fq*. + * See the documentation of `PSA_ECC_FAMILY_xxx` curve families for details. + * + * \param curve A value of type ::psa_ecc_family_t that + * identifies the ECC curve to be used. + */ +#define PSA_KEY_TYPE_ECC_KEY_PAIR(curve) \ + (PSA_KEY_TYPE_ECC_KEY_PAIR_BASE | (curve)) +/** Elliptic curve public key. + * + * The size of an elliptic curve public key is the same as the corresponding + * private key (see #PSA_KEY_TYPE_ECC_KEY_PAIR and the documentation of + * `PSA_ECC_FAMILY_xxx` curve families). + * + * \param curve A value of type ::psa_ecc_family_t that + * identifies the ECC curve to be used. + */ +#define PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve) \ + (PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE | (curve)) + +/** Whether a key type is an elliptic curve key (pair or public-only). */ +#define PSA_KEY_TYPE_IS_ECC(type) \ + ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) & \ + ~PSA_KEY_TYPE_ECC_CURVE_MASK) == PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE) +/** Whether a key type is an elliptic curve key pair. */ +#define PSA_KEY_TYPE_IS_ECC_KEY_PAIR(type) \ + (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \ + PSA_KEY_TYPE_ECC_KEY_PAIR_BASE) +/** Whether a key type is an elliptic curve public key. */ +#define PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(type) \ + (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \ + PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE) + +/** Extract the curve from an elliptic curve key type. */ +#define PSA_KEY_TYPE_ECC_GET_FAMILY(type) \ + ((psa_ecc_family_t) (PSA_KEY_TYPE_IS_ECC(type) ? \ + ((type) & PSA_KEY_TYPE_ECC_CURVE_MASK) : \ + 0)) + +/** SEC Koblitz curves over prime fields. + * + * This family comprises the following curves: + * secp192k1, secp224k1, secp256k1. + * They are defined in _Standards for Efficient Cryptography_, + * _SEC 2: Recommended Elliptic Curve Domain Parameters_. + * https://www.secg.org/sec2-v2.pdf + */ +#define PSA_ECC_FAMILY_SECP_K1 ((psa_ecc_family_t) 0x17) + +/** SEC random curves over prime fields. + * + * This family comprises the following curves: + * secp192k1, secp224r1, secp256r1, secp384r1, secp521r1. + * They are defined in _Standards for Efficient Cryptography_, + * _SEC 2: Recommended Elliptic Curve Domain Parameters_. + * https://www.secg.org/sec2-v2.pdf + */ +#define PSA_ECC_FAMILY_SECP_R1 ((psa_ecc_family_t) 0x12) +/* SECP160R2 (SEC2 v1, obsolete) */ +#define PSA_ECC_FAMILY_SECP_R2 ((psa_ecc_family_t) 0x1b) + +/** SEC Koblitz curves over binary fields. + * + * This family comprises the following curves: + * sect163k1, sect233k1, sect239k1, sect283k1, sect409k1, sect571k1. + * They are defined in _Standards for Efficient Cryptography_, + * _SEC 2: Recommended Elliptic Curve Domain Parameters_. + * https://www.secg.org/sec2-v2.pdf + */ +#define PSA_ECC_FAMILY_SECT_K1 ((psa_ecc_family_t) 0x27) + +/** SEC random curves over binary fields. + * + * This family comprises the following curves: + * sect163r1, sect233r1, sect283r1, sect409r1, sect571r1. + * They are defined in _Standards for Efficient Cryptography_, + * _SEC 2: Recommended Elliptic Curve Domain Parameters_. + * https://www.secg.org/sec2-v2.pdf + */ +#define PSA_ECC_FAMILY_SECT_R1 ((psa_ecc_family_t) 0x22) + +/** SEC additional random curves over binary fields. + * + * This family comprises the following curve: + * sect163r2. + * It is defined in _Standards for Efficient Cryptography_, + * _SEC 2: Recommended Elliptic Curve Domain Parameters_. + * https://www.secg.org/sec2-v2.pdf + */ +#define PSA_ECC_FAMILY_SECT_R2 ((psa_ecc_family_t) 0x2b) + +/** Brainpool P random curves. + * + * This family comprises the following curves: + * brainpoolP160r1, brainpoolP192r1, brainpoolP224r1, brainpoolP256r1, + * brainpoolP320r1, brainpoolP384r1, brainpoolP512r1. + * It is defined in RFC 5639. + */ +#define PSA_ECC_FAMILY_BRAINPOOL_P_R1 ((psa_ecc_family_t) 0x30) + +/** Curve25519 and Curve448. + * + * This family comprises the following Montgomery curves: + * - 255-bit: Bernstein et al., + * _Curve25519: new Diffie-Hellman speed records_, LNCS 3958, 2006. + * The algorithm #PSA_ALG_ECDH performs X25519 when used with this curve. + * - 448-bit: Hamburg, + * _Ed448-Goldilocks, a new elliptic curve_, NIST ECC Workshop, 2015. + * The algorithm #PSA_ALG_ECDH performs X448 when used with this curve. + */ +#define PSA_ECC_FAMILY_MONTGOMERY ((psa_ecc_family_t) 0x41) + +/** The twisted Edwards curves Ed25519 and Ed448. + * + * These curves are suitable for EdDSA (#PSA_ALG_PURE_EDDSA for both curves, + * #PSA_ALG_ED25519PH for the 255-bit curve, + * #PSA_ALG_ED448PH for the 448-bit curve). + * + * This family comprises the following twisted Edwards curves: + * - 255-bit: Edwards25519, the twisted Edwards curve birationally equivalent + * to Curve25519. + * Bernstein et al., _Twisted Edwards curves_, Africacrypt 2008. + * - 448-bit: Edwards448, the twisted Edwards curve birationally equivalent + * to Curve448. + * Hamburg, _Ed448-Goldilocks, a new elliptic curve_, NIST ECC Workshop, 2015. + */ +#define PSA_ECC_FAMILY_TWISTED_EDWARDS ((psa_ecc_family_t) 0x42) + +#define PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE ((psa_key_type_t)0x4200) +#define PSA_KEY_TYPE_DH_KEY_PAIR_BASE ((psa_key_type_t)0x7200) +#define PSA_KEY_TYPE_DH_GROUP_MASK ((psa_key_type_t)0x00ff) +/** Diffie-Hellman key pair. + * + * \param group A value of type ::psa_dh_family_t that identifies the + * Diffie-Hellman group to be used. + */ +#define PSA_KEY_TYPE_DH_KEY_PAIR(group) \ + (PSA_KEY_TYPE_DH_KEY_PAIR_BASE | (group)) +/** Diffie-Hellman public key. + * + * \param group A value of type ::psa_dh_family_t that identifies the + * Diffie-Hellman group to be used. + */ +#define PSA_KEY_TYPE_DH_PUBLIC_KEY(group) \ + (PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE | (group)) + +/** Whether a key type is a Diffie-Hellman key (pair or public-only). */ +#define PSA_KEY_TYPE_IS_DH(type) \ + ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) & \ + ~PSA_KEY_TYPE_DH_GROUP_MASK) == PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE) +/** Whether a key type is a Diffie-Hellman key pair. */ +#define PSA_KEY_TYPE_IS_DH_KEY_PAIR(type) \ + (((type) & ~PSA_KEY_TYPE_DH_GROUP_MASK) == \ + PSA_KEY_TYPE_DH_KEY_PAIR_BASE) +/** Whether a key type is a Diffie-Hellman public key. */ +#define PSA_KEY_TYPE_IS_DH_PUBLIC_KEY(type) \ + (((type) & ~PSA_KEY_TYPE_DH_GROUP_MASK) == \ + PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE) + +/** Extract the group from a Diffie-Hellman key type. */ +#define PSA_KEY_TYPE_DH_GET_FAMILY(type) \ + ((psa_dh_family_t) (PSA_KEY_TYPE_IS_DH(type) ? \ + ((type) & PSA_KEY_TYPE_DH_GROUP_MASK) : \ + 0)) + +/** Diffie-Hellman groups defined in RFC 7919 Appendix A. + * + * This family includes groups with the following key sizes (in bits): + * 2048, 3072, 4096, 6144, 8192. A given implementation may support + * all of these sizes or only a subset. + */ +#define PSA_DH_FAMILY_RFC7919 ((psa_dh_family_t) 0x03) + +#define PSA_GET_KEY_TYPE_BLOCK_SIZE_EXPONENT(type) \ + (((type) >> 8) & 7) +/** The block size of a block cipher. + * + * \param type A cipher key type (value of type #psa_key_type_t). + * + * \return The block size for a block cipher, or 1 for a stream cipher. + * The return value is undefined if \p type is not a supported + * cipher key type. + * + * \note It is possible to build stream cipher algorithms on top of a block + * cipher, for example CTR mode (#PSA_ALG_CTR). + * This macro only takes the key type into account, so it cannot be + * used to determine the size of the data that #psa_cipher_update() + * might buffer for future processing in general. + * + * \note This macro returns a compile-time constant if its argument is one. + * + * \warning This macro may evaluate its argument multiple times. + */ +#define PSA_BLOCK_CIPHER_BLOCK_LENGTH(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_SYMMETRIC ? \ + 1u << PSA_GET_KEY_TYPE_BLOCK_SIZE_EXPONENT(type) : \ + 0u) + +/** Vendor-defined algorithm flag. + * + * Algorithms defined by this standard will never have the #PSA_ALG_VENDOR_FLAG + * bit set. Vendors who define additional algorithms must use an encoding with + * the #PSA_ALG_VENDOR_FLAG bit set and should respect the bitwise structure + * used by standard encodings whenever practical. + */ +#define PSA_ALG_VENDOR_FLAG ((psa_algorithm_t)0x80000000) + +#define PSA_ALG_CATEGORY_MASK ((psa_algorithm_t)0x7f000000) +#define PSA_ALG_CATEGORY_HASH ((psa_algorithm_t)0x02000000) +#define PSA_ALG_CATEGORY_MAC ((psa_algorithm_t)0x03000000) +#define PSA_ALG_CATEGORY_CIPHER ((psa_algorithm_t)0x04000000) +#define PSA_ALG_CATEGORY_AEAD ((psa_algorithm_t)0x05000000) +#define PSA_ALG_CATEGORY_SIGN ((psa_algorithm_t)0x06000000) +#define PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION ((psa_algorithm_t)0x07000000) +#define PSA_ALG_CATEGORY_KEY_DERIVATION ((psa_algorithm_t)0x08000000) +#define PSA_ALG_CATEGORY_KEY_AGREEMENT ((psa_algorithm_t)0x09000000) + +/** Whether an algorithm is vendor-defined. + * + * See also #PSA_ALG_VENDOR_FLAG. + */ +#define PSA_ALG_IS_VENDOR_DEFINED(alg) \ + (((alg) & PSA_ALG_VENDOR_FLAG) != 0) + +/** Whether the specified algorithm is a hash algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a hash algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_HASH(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_HASH) + +/** Whether the specified algorithm is a MAC algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a MAC algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_MAC(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_MAC) + +/** Whether the specified algorithm is a symmetric cipher algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a symmetric cipher algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_CIPHER(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_CIPHER) + +/** Whether the specified algorithm is an authenticated encryption + * with associated data (AEAD) algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is an AEAD algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_AEAD(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_AEAD) + +/** Whether the specified algorithm is an asymmetric signature algorithm, + * also known as public-key signature algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is an asymmetric signature algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_SIGN(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_SIGN) + +/** Whether the specified algorithm is an asymmetric encryption algorithm, + * also known as public-key encryption algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is an asymmetric encryption algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_ASYMMETRIC_ENCRYPTION(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION) + +/** Whether the specified algorithm is a key agreement algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a key agreement algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_KEY_AGREEMENT(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_AGREEMENT) + +/** Whether the specified algorithm is a key derivation algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a key derivation algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_KEY_DERIVATION(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_DERIVATION) + +/** An invalid algorithm identifier value. */ +#define PSA_ALG_NONE ((psa_algorithm_t)0) + +#define PSA_ALG_HASH_MASK ((psa_algorithm_t)0x000000ff) +/** MD2 */ +#define PSA_ALG_MD2 ((psa_algorithm_t)0x02000001) +/** MD4 */ +#define PSA_ALG_MD4 ((psa_algorithm_t)0x02000002) +/** MD5 */ +#define PSA_ALG_MD5 ((psa_algorithm_t)0x02000003) +/** PSA_ALG_RIPEMD160 */ +#define PSA_ALG_RIPEMD160 ((psa_algorithm_t)0x02000004) +/** SHA1 */ +#define PSA_ALG_SHA_1 ((psa_algorithm_t)0x02000005) +/** SHA2-224 */ +#define PSA_ALG_SHA_224 ((psa_algorithm_t)0x02000008) +/** SHA2-256 */ +#define PSA_ALG_SHA_256 ((psa_algorithm_t)0x02000009) +/** SHA2-384 */ +#define PSA_ALG_SHA_384 ((psa_algorithm_t)0x0200000a) +/** SHA2-512 */ +#define PSA_ALG_SHA_512 ((psa_algorithm_t)0x0200000b) +/** SHA2-512/224 */ +#define PSA_ALG_SHA_512_224 ((psa_algorithm_t)0x0200000c) +/** SHA2-512/256 */ +#define PSA_ALG_SHA_512_256 ((psa_algorithm_t)0x0200000d) +/** SHA3-224 */ +#define PSA_ALG_SHA3_224 ((psa_algorithm_t)0x02000010) +/** SHA3-256 */ +#define PSA_ALG_SHA3_256 ((psa_algorithm_t)0x02000011) +/** SHA3-384 */ +#define PSA_ALG_SHA3_384 ((psa_algorithm_t)0x02000012) +/** SHA3-512 */ +#define PSA_ALG_SHA3_512 ((psa_algorithm_t)0x02000013) +/** The first 512 bits (64 bytes) of the SHAKE256 output. + * + * This is the prehashing for Ed448ph (see #PSA_ALG_ED448PH). For other + * scenarios where a hash function based on SHA3/SHAKE is desired, SHA3-512 + * has the same output size and a (theoretically) higher security strength. + */ +#define PSA_ALG_SHAKE256_512 ((psa_algorithm_t)0x02000015) + +/** In a hash-and-sign algorithm policy, allow any hash algorithm. + * + * This value may be used to form the algorithm usage field of a policy + * for a signature algorithm that is parametrized by a hash. The key + * may then be used to perform operations using the same signature + * algorithm parametrized with any supported hash. + * + * That is, suppose that `PSA_xxx_SIGNATURE` is one of the following macros: + * - #PSA_ALG_RSA_PKCS1V15_SIGN, #PSA_ALG_RSA_PSS, #PSA_ALG_RSA_PSS_ANY_SALT, + * - #PSA_ALG_ECDSA, #PSA_ALG_DETERMINISTIC_ECDSA. + * Then you may create and use a key as follows: + * - Set the key usage field using #PSA_ALG_ANY_HASH, for example: + * ``` + * psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_SIGN_HASH); // or VERIFY + * psa_set_key_algorithm(&attributes, PSA_xxx_SIGNATURE(PSA_ALG_ANY_HASH)); + * ``` + * - Import or generate key material. + * - Call psa_sign_hash() or psa_verify_hash(), passing + * an algorithm built from `PSA_xxx_SIGNATURE` and a specific hash. Each + * call to sign or verify a message may use a different hash. + * ``` + * psa_sign_hash(key, PSA_xxx_SIGNATURE(PSA_ALG_SHA_256), ...); + * psa_sign_hash(key, PSA_xxx_SIGNATURE(PSA_ALG_SHA_512), ...); + * psa_sign_hash(key, PSA_xxx_SIGNATURE(PSA_ALG_SHA3_256), ...); + * ``` + * + * This value may not be used to build other algorithms that are + * parametrized over a hash. For any valid use of this macro to build + * an algorithm \c alg, #PSA_ALG_IS_HASH_AND_SIGN(\c alg) is true. + * + * This value may not be used to build an algorithm specification to + * perform an operation. It is only valid to build policies. + */ +#define PSA_ALG_ANY_HASH ((psa_algorithm_t)0x020000ff) + +#define PSA_ALG_MAC_SUBCATEGORY_MASK ((psa_algorithm_t)0x00c00000) +#define PSA_ALG_HMAC_BASE ((psa_algorithm_t)0x03800000) +/** Macro to build an HMAC algorithm. + * + * For example, #PSA_ALG_HMAC(#PSA_ALG_SHA_256) is HMAC-SHA-256. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding HMAC algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_HMAC(hash_alg) \ + (PSA_ALG_HMAC_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_HMAC_GET_HASH(hmac_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hmac_alg) & PSA_ALG_HASH_MASK)) + +/** Whether the specified algorithm is an HMAC algorithm. + * + * HMAC is a family of MAC algorithms that are based on a hash function. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is an HMAC algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_HMAC(alg) \ + (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \ + PSA_ALG_HMAC_BASE) + +/* In the encoding of a MAC algorithm, the bits corresponding to + * PSA_ALG_MAC_TRUNCATION_MASK encode the length to which the MAC is + * truncated. As an exception, the value 0 means the untruncated algorithm, + * whatever its length is. The length is encoded in 6 bits, so it can + * reach up to 63; the largest MAC is 64 bytes so its trivial truncation + * to full length is correctly encoded as 0 and any non-trivial truncation + * is correctly encoded as a value between 1 and 63. */ +#define PSA_ALG_MAC_TRUNCATION_MASK ((psa_algorithm_t)0x003f0000) +#define PSA_MAC_TRUNCATION_OFFSET 16 + +/* In the encoding of a MAC algorithm, the bit corresponding to + * #PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG encodes the fact that the algorithm + * is a wildcard algorithm. A key with such wildcard algorithm as permitted + * algorithm policy can be used with any algorithm corresponding to the + * same base class and having a (potentially truncated) MAC length greater or + * equal than the one encoded in #PSA_ALG_MAC_TRUNCATION_MASK. */ +#define PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG ((psa_algorithm_t)0x00008000) + +/** Macro to build a truncated MAC algorithm. + * + * A truncated MAC algorithm is identical to the corresponding MAC + * algorithm except that the MAC value for the truncated algorithm + * consists of only the first \p mac_length bytes of the MAC value + * for the untruncated algorithm. + * + * \note This macro may allow constructing algorithm identifiers that + * are not valid, either because the specified length is larger + * than the untruncated MAC or because the specified length is + * smaller than permitted by the implementation. + * + * \note It is implementation-defined whether a truncated MAC that + * is truncated to the same length as the MAC of the untruncated + * algorithm is considered identical to the untruncated algorithm + * for policy comparison purposes. + * + * \param mac_alg A MAC algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p mac_alg) + * is true). This may be a truncated or untruncated + * MAC algorithm. + * \param mac_length Desired length of the truncated MAC in bytes. + * This must be at most the full length of the MAC + * and must be at least an implementation-specified + * minimum. The implementation-specified minimum + * shall not be zero. + * + * \return The corresponding MAC algorithm with the specified + * length. + * \return Unspecified if \p mac_alg is not a supported + * MAC algorithm or if \p mac_length is too small or + * too large for the specified MAC algorithm. + */ +#define PSA_ALG_TRUNCATED_MAC(mac_alg, mac_length) \ + (((mac_alg) & ~(PSA_ALG_MAC_TRUNCATION_MASK | \ + PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG)) | \ + ((mac_length) << PSA_MAC_TRUNCATION_OFFSET & PSA_ALG_MAC_TRUNCATION_MASK)) + +/** Macro to build the base MAC algorithm corresponding to a truncated + * MAC algorithm. + * + * \param mac_alg A MAC algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p mac_alg) + * is true). This may be a truncated or untruncated + * MAC algorithm. + * + * \return The corresponding base MAC algorithm. + * \return Unspecified if \p mac_alg is not a supported + * MAC algorithm. + */ +#define PSA_ALG_FULL_LENGTH_MAC(mac_alg) \ + ((mac_alg) & ~(PSA_ALG_MAC_TRUNCATION_MASK | \ + PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG)) + +/** Length to which a MAC algorithm is truncated. + * + * \param mac_alg A MAC algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p mac_alg) + * is true). + * + * \return Length of the truncated MAC in bytes. + * \return 0 if \p mac_alg is a non-truncated MAC algorithm. + * \return Unspecified if \p mac_alg is not a supported + * MAC algorithm. + */ +#define PSA_MAC_TRUNCATED_LENGTH(mac_alg) \ + (((mac_alg) & PSA_ALG_MAC_TRUNCATION_MASK) >> PSA_MAC_TRUNCATION_OFFSET) + +/** Macro to build a MAC minimum-MAC-length wildcard algorithm. + * + * A minimum-MAC-length MAC wildcard algorithm permits all MAC algorithms + * sharing the same base algorithm, and where the (potentially truncated) MAC + * length of the specific algorithm is equal to or larger then the wildcard + * algorithm's minimum MAC length. + * + * \note When setting the minimum required MAC length to less than the + * smallest MAC length allowed by the base algorithm, this effectively + * becomes an 'any-MAC-length-allowed' policy for that base algorithm. + * + * \param mac_alg A MAC algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p mac_alg) + * is true). + * \param min_mac_length Desired minimum length of the message authentication + * code in bytes. This must be at most the untruncated + * length of the MAC and must be at least 1. + * + * \return The corresponding MAC wildcard algorithm with the + * specified minimum length. + * \return Unspecified if \p mac_alg is not a supported MAC + * algorithm or if \p min_mac_length is less than 1 or + * too large for the specified MAC algorithm. + */ +#define PSA_ALG_AT_LEAST_THIS_LENGTH_MAC(mac_alg, min_mac_length) \ + ( PSA_ALG_TRUNCATED_MAC(mac_alg, min_mac_length) | \ + PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG ) + +#define PSA_ALG_CIPHER_MAC_BASE ((psa_algorithm_t)0x03c00000) +/** The CBC-MAC construction over a block cipher + * + * \warning CBC-MAC is insecure in many cases. + * A more secure mode, such as #PSA_ALG_CMAC, is recommended. + */ +#define PSA_ALG_CBC_MAC ((psa_algorithm_t)0x03c00100) +/** The CMAC construction over a block cipher */ +#define PSA_ALG_CMAC ((psa_algorithm_t)0x03c00200) + +/** Whether the specified algorithm is a MAC algorithm based on a block cipher. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a MAC algorithm based on a block cipher, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) \ + (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \ + PSA_ALG_CIPHER_MAC_BASE) + +#define PSA_ALG_CIPHER_STREAM_FLAG ((psa_algorithm_t)0x00800000) +#define PSA_ALG_CIPHER_FROM_BLOCK_FLAG ((psa_algorithm_t)0x00400000) + +/** Whether the specified algorithm is a stream cipher. + * + * A stream cipher is a symmetric cipher that encrypts or decrypts messages + * by applying a bitwise-xor with a stream of bytes that is generated + * from a key. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a stream cipher algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier or if it is not a symmetric cipher algorithm. + */ +#define PSA_ALG_IS_STREAM_CIPHER(alg) \ + (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_CIPHER_STREAM_FLAG)) == \ + (PSA_ALG_CATEGORY_CIPHER | PSA_ALG_CIPHER_STREAM_FLAG)) + +/** The stream cipher mode of a stream cipher algorithm. + * + * The underlying stream cipher is determined by the key type. + * - To use ChaCha20, use a key type of #PSA_KEY_TYPE_CHACHA20. + * - To use ARC4, use a key type of #PSA_KEY_TYPE_ARC4. + */ +#define PSA_ALG_STREAM_CIPHER ((psa_algorithm_t)0x04800100) + +/** The CTR stream cipher mode. + * + * CTR is a stream cipher which is built from a block cipher. + * The underlying block cipher is determined by the key type. + * For example, to use AES-128-CTR, use this algorithm with + * a key of type #PSA_KEY_TYPE_AES and a length of 128 bits (16 bytes). + */ +#define PSA_ALG_CTR ((psa_algorithm_t)0x04c01000) + +/** The CFB stream cipher mode. + * + * The underlying block cipher is determined by the key type. + */ +#define PSA_ALG_CFB ((psa_algorithm_t)0x04c01100) + +/** The OFB stream cipher mode. + * + * The underlying block cipher is determined by the key type. + */ +#define PSA_ALG_OFB ((psa_algorithm_t)0x04c01200) + +/** The XTS cipher mode. + * + * XTS is a cipher mode which is built from a block cipher. It requires at + * least one full block of input, but beyond this minimum the input + * does not need to be a whole number of blocks. + */ +#define PSA_ALG_XTS ((psa_algorithm_t)0x0440ff00) + +/** The Electronic Code Book (ECB) mode of a block cipher, with no padding. + * + * \warning ECB mode does not protect the confidentiality of the encrypted data + * except in extremely narrow circumstances. It is recommended that applications + * only use ECB if they need to construct an operating mode that the + * implementation does not provide. Implementations are encouraged to provide + * the modes that applications need in preference to supporting direct access + * to ECB. + * + * The underlying block cipher is determined by the key type. + * + * This symmetric cipher mode can only be used with messages whose lengths are a + * multiple of the block size of the chosen block cipher. + * + * ECB mode does not accept an initialization vector (IV). When using a + * multi-part cipher operation with this algorithm, psa_cipher_generate_iv() + * and psa_cipher_set_iv() must not be called. + */ +#define PSA_ALG_ECB_NO_PADDING ((psa_algorithm_t)0x04404400) + +/** The CBC block cipher chaining mode, with no padding. + * + * The underlying block cipher is determined by the key type. + * + * This symmetric cipher mode can only be used with messages whose lengths + * are whole number of blocks for the chosen block cipher. + */ +#define PSA_ALG_CBC_NO_PADDING ((psa_algorithm_t)0x04404000) + +/** The CBC block cipher chaining mode with PKCS#7 padding. + * + * The underlying block cipher is determined by the key type. + * + * This is the padding method defined by PKCS#7 (RFC 2315) §10.3. + */ +#define PSA_ALG_CBC_PKCS7 ((psa_algorithm_t)0x04404100) + +#define PSA_ALG_AEAD_FROM_BLOCK_FLAG ((psa_algorithm_t)0x00400000) + +/** Whether the specified algorithm is an AEAD mode on a block cipher. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is an AEAD algorithm which is an AEAD mode based on + * a block cipher, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) \ + (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_AEAD_FROM_BLOCK_FLAG)) == \ + (PSA_ALG_CATEGORY_AEAD | PSA_ALG_AEAD_FROM_BLOCK_FLAG)) + +/** The CCM authenticated encryption algorithm. + * + * The underlying block cipher is determined by the key type. + */ +#define PSA_ALG_CCM ((psa_algorithm_t)0x05500100) + +/** The GCM authenticated encryption algorithm. + * + * The underlying block cipher is determined by the key type. + */ +#define PSA_ALG_GCM ((psa_algorithm_t)0x05500200) + +/** The Chacha20-Poly1305 AEAD algorithm. + * + * The ChaCha20_Poly1305 construction is defined in RFC 7539. + * + * Implementations must support 12-byte nonces, may support 8-byte nonces, + * and should reject other sizes. + * + * Implementations must support 16-byte tags and should reject other sizes. + */ +#define PSA_ALG_CHACHA20_POLY1305 ((psa_algorithm_t)0x05100500) + +/* In the encoding of a AEAD algorithm, the bits corresponding to + * PSA_ALG_AEAD_TAG_LENGTH_MASK encode the length of the AEAD tag. + * The constants for default lengths follow this encoding. + */ +#define PSA_ALG_AEAD_TAG_LENGTH_MASK ((psa_algorithm_t)0x003f0000) +#define PSA_AEAD_TAG_LENGTH_OFFSET 16 + +/* In the encoding of an AEAD algorithm, the bit corresponding to + * #PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG encodes the fact that the algorithm + * is a wildcard algorithm. A key with such wildcard algorithm as permitted + * algorithm policy can be used with any algorithm corresponding to the + * same base class and having a tag length greater than or equal to the one + * encoded in #PSA_ALG_AEAD_TAG_LENGTH_MASK. */ +#define PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG ((psa_algorithm_t)0x00008000) + +/** Macro to build a shortened AEAD algorithm. + * + * A shortened AEAD algorithm is similar to the corresponding AEAD + * algorithm, but has an authentication tag that consists of fewer bytes. + * Depending on the algorithm, the tag length may affect the calculation + * of the ciphertext. + * + * \param aead_alg An AEAD algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_AEAD(\p aead_alg) + * is true). + * \param tag_length Desired length of the authentication tag in bytes. + * + * \return The corresponding AEAD algorithm with the specified + * length. + * \return Unspecified if \p aead_alg is not a supported + * AEAD algorithm or if \p tag_length is not valid + * for the specified AEAD algorithm. + */ +#define PSA_ALG_AEAD_WITH_SHORTENED_TAG(aead_alg, tag_length) \ + (((aead_alg) & ~(PSA_ALG_AEAD_TAG_LENGTH_MASK | \ + PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG)) | \ + ((tag_length) << PSA_AEAD_TAG_LENGTH_OFFSET & \ + PSA_ALG_AEAD_TAG_LENGTH_MASK)) + +/** Retrieve the tag length of a specified AEAD algorithm + * + * \param aead_alg An AEAD algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_AEAD(\p aead_alg) + * is true). + * + * \return The tag length specified by the input algorithm. + * \return Unspecified if \p aead_alg is not a supported + * AEAD algorithm. + */ +#define PSA_ALG_AEAD_GET_TAG_LENGTH(aead_alg) \ + (((aead_alg) & PSA_ALG_AEAD_TAG_LENGTH_MASK) >> \ + PSA_AEAD_TAG_LENGTH_OFFSET ) + +/** Calculate the corresponding AEAD algorithm with the default tag length. + * + * \param aead_alg An AEAD algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p aead_alg) is true). + * + * \return The corresponding AEAD algorithm with the default + * tag length for that algorithm. + */ +#define PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(aead_alg) \ + ( \ + PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG_CASE(aead_alg, PSA_ALG_CCM) \ + PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG_CASE(aead_alg, PSA_ALG_GCM) \ + PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG_CASE(aead_alg, PSA_ALG_CHACHA20_POLY1305) \ + 0) +#define PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG_CASE(aead_alg, ref) \ + PSA_ALG_AEAD_WITH_SHORTENED_TAG(aead_alg, 0) == \ + PSA_ALG_AEAD_WITH_SHORTENED_TAG(ref, 0) ? \ + ref : + +/** Macro to build an AEAD minimum-tag-length wildcard algorithm. + * + * A minimum-tag-length AEAD wildcard algorithm permits all AEAD algorithms + * sharing the same base algorithm, and where the tag length of the specific + * algorithm is equal to or larger then the minimum tag length specified by the + * wildcard algorithm. + * + * \note When setting the minimum required tag length to less than the + * smallest tag length allowed by the base algorithm, this effectively + * becomes an 'any-tag-length-allowed' policy for that base algorithm. + * + * \param aead_alg An AEAD algorithm identifier (value of type + * #psa_algorithm_t such that + * #PSA_ALG_IS_AEAD(\p aead_alg) is true). + * \param min_tag_length Desired minimum length of the authentication tag in + * bytes. This must be at least 1 and at most the largest + * allowed tag length of the algorithm. + * + * \return The corresponding AEAD wildcard algorithm with the + * specified minimum length. + * \return Unspecified if \p aead_alg is not a supported + * AEAD algorithm or if \p min_tag_length is less than 1 + * or too large for the specified AEAD algorithm. + */ +#define PSA_ALG_AEAD_WITH_AT_LEAST_THIS_LENGTH_TAG(aead_alg, min_tag_length) \ + ( PSA_ALG_AEAD_WITH_SHORTENED_TAG(aead_alg, min_tag_length) | \ + PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG ) + +#define PSA_ALG_RSA_PKCS1V15_SIGN_BASE ((psa_algorithm_t)0x06000200) +/** RSA PKCS#1 v1.5 signature with hashing. + * + * This is the signature scheme defined by RFC 8017 + * (PKCS#1: RSA Cryptography Specifications) under the name + * RSASSA-PKCS1-v1_5. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding RSA PKCS#1 v1.5 signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_RSA_PKCS1V15_SIGN(hash_alg) \ + (PSA_ALG_RSA_PKCS1V15_SIGN_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +/** Raw PKCS#1 v1.5 signature. + * + * The input to this algorithm is the DigestInfo structure used by + * RFC 8017 (PKCS#1: RSA Cryptography Specifications), §9.2 + * steps 3–6. + */ +#define PSA_ALG_RSA_PKCS1V15_SIGN_RAW PSA_ALG_RSA_PKCS1V15_SIGN_BASE +#define PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PKCS1V15_SIGN_BASE) + +#define PSA_ALG_RSA_PSS_BASE ((psa_algorithm_t)0x06000300) +#define PSA_ALG_RSA_PSS_ANY_SALT_BASE ((psa_algorithm_t)0x06001300) +/** RSA PSS signature with hashing. + * + * This is the signature scheme defined by RFC 8017 + * (PKCS#1: RSA Cryptography Specifications) under the name + * RSASSA-PSS, with the message generation function MGF1, and with + * a salt length equal to the length of the hash. The specified + * hash algorithm is used to hash the input message, to create the + * salted hash, and for the mask generation. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding RSA PSS signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_RSA_PSS(hash_alg) \ + (PSA_ALG_RSA_PSS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) + +/** RSA PSS signature with hashing with relaxed verification. + * + * This algorithm has the same behavior as #PSA_ALG_RSA_PSS when signing, + * but allows an arbitrary salt length (including \c 0) when verifying a + * signature. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding RSA PSS signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_RSA_PSS_ANY_SALT(hash_alg) \ + (PSA_ALG_RSA_PSS_ANY_SALT_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) + +/** Whether the specified algorithm is RSA PSS with standard salt. + * + * \param alg An algorithm value or an algorithm policy wildcard. + * + * \return 1 if \p alg is of the form + * #PSA_ALG_RSA_PSS(\c hash_alg), + * where \c hash_alg is a hash algorithm or + * #PSA_ALG_ANY_HASH. 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not + * a supported algorithm identifier or policy. + */ +#define PSA_ALG_IS_RSA_PSS_STANDARD_SALT(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PSS_BASE) + +/** Whether the specified algorithm is RSA PSS with any salt. + * + * \param alg An algorithm value or an algorithm policy wildcard. + * + * \return 1 if \p alg is of the form + * #PSA_ALG_RSA_PSS_ANY_SALT_BASE(\c hash_alg), + * where \c hash_alg is a hash algorithm or + * #PSA_ALG_ANY_HASH. 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not + * a supported algorithm identifier or policy. + */ +#define PSA_ALG_IS_RSA_PSS_ANY_SALT(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PSS_ANY_SALT_BASE) + +/** Whether the specified algorithm is RSA PSS. + * + * This includes any of the RSA PSS algorithm variants, regardless of the + * constraints on salt length. + * + * \param alg An algorithm value or an algorithm policy wildcard. + * + * \return 1 if \p alg is of the form + * #PSA_ALG_RSA_PSS(\c hash_alg) or + * #PSA_ALG_RSA_PSS_ANY_SALT_BASE(\c hash_alg), + * where \c hash_alg is a hash algorithm or + * #PSA_ALG_ANY_HASH. 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not + * a supported algorithm identifier or policy. + */ +#define PSA_ALG_IS_RSA_PSS(alg) \ + (PSA_ALG_IS_RSA_PSS_STANDARD_SALT(alg) || \ + PSA_ALG_IS_RSA_PSS_ANY_SALT(alg)) + +#define PSA_ALG_ECDSA_BASE ((psa_algorithm_t)0x06000600) +/** ECDSA signature with hashing. + * + * This is the ECDSA signature scheme defined by ANSI X9.62, + * with a random per-message secret number (*k*). + * + * The representation of the signature as a byte string consists of + * the concatentation of the signature values *r* and *s*. Each of + * *r* and *s* is encoded as an *N*-octet string, where *N* is the length + * of the base point of the curve in octets. Each value is represented + * in big-endian order (most significant octet first). + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding ECDSA signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_ECDSA(hash_alg) \ + (PSA_ALG_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +/** ECDSA signature without hashing. + * + * This is the same signature scheme as #PSA_ALG_ECDSA(), but + * without specifying a hash algorithm. This algorithm may only be + * used to sign or verify a sequence of bytes that should be an + * already-calculated hash. Note that the input is padded with + * zeros on the left or truncated on the left as required to fit + * the curve size. + */ +#define PSA_ALG_ECDSA_ANY PSA_ALG_ECDSA_BASE +#define PSA_ALG_DETERMINISTIC_ECDSA_BASE ((psa_algorithm_t)0x06000700) +/** Deterministic ECDSA signature with hashing. + * + * This is the deterministic ECDSA signature scheme defined by RFC 6979. + * + * The representation of a signature is the same as with #PSA_ALG_ECDSA(). + * + * Note that when this algorithm is used for verification, signatures + * made with randomized ECDSA (#PSA_ALG_ECDSA(\p hash_alg)) with the + * same private key are accepted. In other words, + * #PSA_ALG_DETERMINISTIC_ECDSA(\p hash_alg) differs from + * #PSA_ALG_ECDSA(\p hash_alg) only for signature, not for verification. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding deterministic ECDSA signature + * algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_DETERMINISTIC_ECDSA(hash_alg) \ + (PSA_ALG_DETERMINISTIC_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_ECDSA_DETERMINISTIC_FLAG ((psa_algorithm_t)0x00000100) +#define PSA_ALG_IS_ECDSA(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_ECDSA_DETERMINISTIC_FLAG) == \ + PSA_ALG_ECDSA_BASE) +#define PSA_ALG_ECDSA_IS_DETERMINISTIC(alg) \ + (((alg) & PSA_ALG_ECDSA_DETERMINISTIC_FLAG) != 0) +#define PSA_ALG_IS_DETERMINISTIC_ECDSA(alg) \ + (PSA_ALG_IS_ECDSA(alg) && PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) +#define PSA_ALG_IS_RANDOMIZED_ECDSA(alg) \ + (PSA_ALG_IS_ECDSA(alg) && !PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) + +/** Edwards-curve digital signature algorithm without prehashing (PureEdDSA), + * using standard parameters. + * + * Contexts are not supported in the current version of this specification + * because there is no suitable signature interface that can take the + * context as a parameter. A future version of this specification may add + * suitable functions and extend this algorithm to support contexts. + * + * PureEdDSA requires an elliptic curve key on a twisted Edwards curve. + * In this specification, the following curves are supported: + * - #PSA_ECC_FAMILY_TWISTED_EDWARDS, 255-bit: Ed25519 as specified + * in RFC 8032. + * The curve is Edwards25519. + * The hash function used internally is SHA-512. + * - #PSA_ECC_FAMILY_TWISTED_EDWARDS, 448-bit: Ed448 as specified + * in RFC 8032. + * The curve is Edwards448. + * The hash function used internally is the first 114 bytes of the + * SHAKE256 output. + * + * This algorithm can be used with psa_sign_message() and + * psa_verify_message(). Since there is no prehashing, it cannot be used + * with psa_sign_hash() or psa_verify_hash(). + * + * The signature format is the concatenation of R and S as defined by + * RFC 8032 §5.1.6 and §5.2.6 (a 64-byte string for Ed25519, a 114-byte + * string for Ed448). + */ +#define PSA_ALG_PURE_EDDSA ((psa_algorithm_t)0x06000800) + +#define PSA_ALG_HASH_EDDSA_BASE ((psa_algorithm_t)0x06000900) +#define PSA_ALG_IS_HASH_EDDSA(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HASH_EDDSA_BASE) + +/** Edwards-curve digital signature algorithm with prehashing (HashEdDSA), + * using SHA-512 and the Edwards25519 curve. + * + * See #PSA_ALG_PURE_EDDSA regarding context support and the signature format. + * + * This algorithm is Ed25519 as specified in RFC 8032. + * The curve is Edwards25519. + * The prehash is SHA-512. + * The hash function used internally is SHA-512. + * + * This is a hash-and-sign algorithm: to calculate a signature, + * you can either: + * - call psa_sign_message() on the message; + * - or calculate the SHA-512 hash of the message + * with psa_hash_compute() + * or with a multi-part hash operation started with psa_hash_setup(), + * using the hash algorithm #PSA_ALG_SHA_512, + * then sign the calculated hash with psa_sign_hash(). + * Verifying a signature is similar, using psa_verify_message() or + * psa_verify_hash() instead of the signature function. + */ +#define PSA_ALG_ED25519PH \ + (PSA_ALG_HASH_EDDSA_BASE | (PSA_ALG_SHA_512 & PSA_ALG_HASH_MASK)) + +/** Edwards-curve digital signature algorithm with prehashing (HashEdDSA), + * using SHAKE256 and the Edwards448 curve. + * + * See #PSA_ALG_PURE_EDDSA regarding context support and the signature format. + * + * This algorithm is Ed448 as specified in RFC 8032. + * The curve is Edwards448. + * The prehash is the first 64 bytes of the SHAKE256 output. + * The hash function used internally is the first 114 bytes of the + * SHAKE256 output. + * + * This is a hash-and-sign algorithm: to calculate a signature, + * you can either: + * - call psa_sign_message() on the message; + * - or calculate the first 64 bytes of the SHAKE256 output of the message + * with psa_hash_compute() + * or with a multi-part hash operation started with psa_hash_setup(), + * using the hash algorithm #PSA_ALG_SHAKE256_512, + * then sign the calculated hash with psa_sign_hash(). + * Verifying a signature is similar, using psa_verify_message() or + * psa_verify_hash() instead of the signature function. + */ +#define PSA_ALG_ED448PH \ + (PSA_ALG_HASH_EDDSA_BASE | (PSA_ALG_SHAKE256_512 & PSA_ALG_HASH_MASK)) + +/* Default definition, to be overridden if the library is extended with + * more hash-and-sign algorithms that we want to keep out of this header + * file. */ +#define PSA_ALG_IS_VENDOR_HASH_AND_SIGN(alg) 0 + +/** Whether the specified algorithm is a signature algorithm that can be used + * with psa_sign_hash() and psa_verify_hash(). + * + * This encompasses all strict hash-and-sign algorithms categorized by + * PSA_ALG_IS_HASH_AND_SIGN(), as well as algorithms that follow the + * paradigm more loosely: + * - #PSA_ALG_RSA_PKCS1V15_SIGN_RAW (expects its input to be an encoded hash) + * - #PSA_ALG_ECDSA_ANY (doesn't specify what kind of hash the input is) + * + * \param alg An algorithm identifier (value of type psa_algorithm_t). + * + * \return 1 if alg is a signature algorithm that can be used to sign a + * hash. 0 if alg is a signature algorithm that can only be used + * to sign a message. 0 if alg is not a signature algorithm. + * This macro can return either 0 or 1 if alg is not a + * supported algorithm identifier. + */ +#define PSA_ALG_IS_SIGN_HASH(alg) \ + (PSA_ALG_IS_RSA_PSS(alg) || PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) || \ + PSA_ALG_IS_ECDSA(alg) || PSA_ALG_IS_HASH_EDDSA(alg) || \ + PSA_ALG_IS_VENDOR_HASH_AND_SIGN(alg)) + +/** Whether the specified algorithm is a signature algorithm that can be used + * with psa_sign_message() and psa_verify_message(). + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if alg is a signature algorithm that can be used to sign a + * message. 0 if \p alg is a signature algorithm that can only be used + * to sign an already-calculated hash. 0 if \p alg is not a signature + * algorithm. This macro can return either 0 or 1 if \p alg is not a + * supported algorithm identifier. + */ +#define PSA_ALG_IS_SIGN_MESSAGE(alg) \ + (PSA_ALG_IS_SIGN_HASH(alg) || (alg) == PSA_ALG_PURE_EDDSA ) + +/** Whether the specified algorithm is a hash-and-sign algorithm. + * + * Hash-and-sign algorithms are asymmetric (public-key) signature algorithms + * structured in two parts: first the calculation of a hash in a way that + * does not depend on the key, then the calculation of a signature from the + * hash value and the key. Hash-and-sign algorithms encode the hash + * used for the hashing step, and you can call #PSA_ALG_SIGN_GET_HASH + * to extract this algorithm. + * + * Thus, for a hash-and-sign algorithm, + * `psa_sign_message(key, alg, input, ...)` is equivalent to + * ``` + * psa_hash_compute(PSA_ALG_SIGN_GET_HASH(alg), input, ..., hash, ...); + * psa_sign_hash(key, alg, hash, ..., signature, ...); + * ``` + * Most usefully, separating the hash from the signature allows the hash + * to be calculated in multiple steps with psa_hash_setup(), psa_hash_update() + * and psa_hash_finish(). Likewise psa_verify_message() is equivalent to + * calculating the hash and then calling psa_verify_hash(). + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a hash-and-sign algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_HASH_AND_SIGN(alg) \ + (PSA_ALG_IS_SIGN_HASH(alg) && \ + ((alg) & PSA_ALG_HASH_MASK) != 0) + +/** Get the hash used by a hash-and-sign signature algorithm. + * + * A hash-and-sign algorithm is a signature algorithm which is + * composed of two phases: first a hashing phase which does not use + * the key and produces a hash of the input message, then a signing + * phase which only uses the hash and the key and not the message + * itself. + * + * \param alg A signature algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_SIGN(\p alg) is true). + * + * \return The underlying hash algorithm if \p alg is a hash-and-sign + * algorithm. + * \return 0 if \p alg is a signature algorithm that does not + * follow the hash-and-sign structure. + * \return Unspecified if \p alg is not a signature algorithm or + * if it is not supported by the implementation. + */ +#define PSA_ALG_SIGN_GET_HASH(alg) \ + (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \ + ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \ + 0) + +/** RSA PKCS#1 v1.5 encryption. + */ +#define PSA_ALG_RSA_PKCS1V15_CRYPT ((psa_algorithm_t)0x07000200) + +#define PSA_ALG_RSA_OAEP_BASE ((psa_algorithm_t)0x07000300) +/** RSA OAEP encryption. + * + * This is the encryption scheme defined by RFC 8017 + * (PKCS#1: RSA Cryptography Specifications) under the name + * RSAES-OAEP, with the message generation function MGF1. + * + * \param hash_alg The hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true) to use + * for MGF1. + * + * \return The corresponding RSA OAEP encryption algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_RSA_OAEP(hash_alg) \ + (PSA_ALG_RSA_OAEP_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_IS_RSA_OAEP(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_OAEP_BASE) +#define PSA_ALG_RSA_OAEP_GET_HASH(alg) \ + (PSA_ALG_IS_RSA_OAEP(alg) ? \ + ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \ + 0) + +#define PSA_ALG_HKDF_BASE ((psa_algorithm_t)0x08000100) +/** Macro to build an HKDF algorithm. + * + * For example, `PSA_ALG_HKDF(PSA_ALG_SHA256)` is HKDF using HMAC-SHA-256. + * + * This key derivation algorithm uses the following inputs: + * - #PSA_KEY_DERIVATION_INPUT_SALT is the salt used in the "extract" step. + * It is optional; if omitted, the derivation uses an empty salt. + * - #PSA_KEY_DERIVATION_INPUT_SECRET is the secret key used in the "extract" step. + * - #PSA_KEY_DERIVATION_INPUT_INFO is the info string used in the "expand" step. + * You must pass #PSA_KEY_DERIVATION_INPUT_SALT before #PSA_KEY_DERIVATION_INPUT_SECRET. + * You may pass #PSA_KEY_DERIVATION_INPUT_INFO at any time after steup and before + * starting to generate output. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding HKDF algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_HKDF(hash_alg) \ + (PSA_ALG_HKDF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +/** Whether the specified algorithm is an HKDF algorithm. + * + * HKDF is a family of key derivation algorithms that are based on a hash + * function and the HMAC construction. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is an HKDF algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key derivation algorithm identifier. + */ +#define PSA_ALG_IS_HKDF(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_BASE) +#define PSA_ALG_HKDF_GET_HASH(hkdf_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_TLS12_PRF_BASE ((psa_algorithm_t)0x08000200) +/** Macro to build a TLS-1.2 PRF algorithm. + * + * TLS 1.2 uses a custom pseudorandom function (PRF) for key schedule, + * specified in Section 5 of RFC 5246. It is based on HMAC and can be + * used with either SHA-256 or SHA-384. + * + * This key derivation algorithm uses the following inputs, which must be + * passed in the order given here: + * - #PSA_KEY_DERIVATION_INPUT_SEED is the seed. + * - #PSA_KEY_DERIVATION_INPUT_SECRET is the secret key. + * - #PSA_KEY_DERIVATION_INPUT_LABEL is the label. + * + * For the application to TLS-1.2 key expansion, the seed is the + * concatenation of ServerHello.Random + ClientHello.Random, + * and the label is "key expansion". + * + * For example, `PSA_ALG_TLS12_PRF(PSA_ALG_SHA256)` represents the + * TLS 1.2 PRF using HMAC-SHA-256. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding TLS-1.2 PRF algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_TLS12_PRF(hash_alg) \ + (PSA_ALG_TLS12_PRF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) + +/** Whether the specified algorithm is a TLS-1.2 PRF algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a TLS-1.2 PRF algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key derivation algorithm identifier. + */ +#define PSA_ALG_IS_TLS12_PRF(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PRF_BASE) +#define PSA_ALG_TLS12_PRF_GET_HASH(hkdf_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_TLS12_PSK_TO_MS_BASE ((psa_algorithm_t)0x08000300) +/** Macro to build a TLS-1.2 PSK-to-MasterSecret algorithm. + * + * In a pure-PSK handshake in TLS 1.2, the master secret is derived + * from the PreSharedKey (PSK) through the application of padding + * (RFC 4279, Section 2) and the TLS-1.2 PRF (RFC 5246, Section 5). + * The latter is based on HMAC and can be used with either SHA-256 + * or SHA-384. + * + * This key derivation algorithm uses the following inputs, which must be + * passed in the order given here: + * - #PSA_KEY_DERIVATION_INPUT_SEED is the seed. + * - #PSA_KEY_DERIVATION_INPUT_SECRET is the secret key. + * - #PSA_KEY_DERIVATION_INPUT_LABEL is the label. + * + * For the application to TLS-1.2, the seed (which is + * forwarded to the TLS-1.2 PRF) is the concatenation of the + * ClientHello.Random + ServerHello.Random, + * and the label is "master secret" or "extended master secret". + * + * For example, `PSA_ALG_TLS12_PSK_TO_MS(PSA_ALG_SHA256)` represents the + * TLS-1.2 PSK to MasterSecret derivation PRF using HMAC-SHA-256. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding TLS-1.2 PSK to MS algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_TLS12_PSK_TO_MS(hash_alg) \ + (PSA_ALG_TLS12_PSK_TO_MS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) + +/** Whether the specified algorithm is a TLS-1.2 PSK to MS algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a TLS-1.2 PSK to MS algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key derivation algorithm identifier. + */ +#define PSA_ALG_IS_TLS12_PSK_TO_MS(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PSK_TO_MS_BASE) +#define PSA_ALG_TLS12_PSK_TO_MS_GET_HASH(hkdf_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_KEY_DERIVATION_MASK ((psa_algorithm_t)0xfe00ffff) +#define PSA_ALG_KEY_AGREEMENT_MASK ((psa_algorithm_t)0xffff0000) + +/** Macro to build a combined algorithm that chains a key agreement with + * a key derivation. + * + * \param ka_alg A key agreement algorithm (\c PSA_ALG_XXX value such + * that #PSA_ALG_IS_KEY_AGREEMENT(\p ka_alg) is true). + * \param kdf_alg A key derivation algorithm (\c PSA_ALG_XXX value such + * that #PSA_ALG_IS_KEY_DERIVATION(\p kdf_alg) is true). + * + * \return The corresponding key agreement and derivation + * algorithm. + * \return Unspecified if \p ka_alg is not a supported + * key agreement algorithm or \p kdf_alg is not a + * supported key derivation algorithm. + */ +#define PSA_ALG_KEY_AGREEMENT(ka_alg, kdf_alg) \ + ((ka_alg) | (kdf_alg)) + +#define PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) \ + (((alg) & PSA_ALG_KEY_DERIVATION_MASK) | PSA_ALG_CATEGORY_KEY_DERIVATION) + +#define PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) \ + (((alg) & PSA_ALG_KEY_AGREEMENT_MASK) | PSA_ALG_CATEGORY_KEY_AGREEMENT) + +/** Whether the specified algorithm is a raw key agreement algorithm. + * + * A raw key agreement algorithm is one that does not specify + * a key derivation function. + * Usually, raw key agreement algorithms are constructed directly with + * a \c PSA_ALG_xxx macro while non-raw key agreement algorithms are + * constructed with #PSA_ALG_KEY_AGREEMENT(). + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a raw key agreement algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_RAW_KEY_AGREEMENT(alg) \ + (PSA_ALG_IS_KEY_AGREEMENT(alg) && \ + PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) == PSA_ALG_CATEGORY_KEY_DERIVATION) + +#define PSA_ALG_IS_KEY_DERIVATION_OR_AGREEMENT(alg) \ + ((PSA_ALG_IS_KEY_DERIVATION(alg) || PSA_ALG_IS_KEY_AGREEMENT(alg))) + +/** The finite-field Diffie-Hellman (DH) key agreement algorithm. + * + * The shared secret produced by key agreement is + * `g^{ab}` in big-endian format. + * It is `ceiling(m / 8)` bytes long where `m` is the size of the prime `p` + * in bits. + */ +#define PSA_ALG_FFDH ((psa_algorithm_t)0x09010000) + +/** Whether the specified algorithm is a finite field Diffie-Hellman algorithm. + * + * This includes the raw finite field Diffie-Hellman algorithm as well as + * finite-field Diffie-Hellman followed by any supporter key derivation + * algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a finite field Diffie-Hellman algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key agreement algorithm identifier. + */ +#define PSA_ALG_IS_FFDH(alg) \ + (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_FFDH) + +/** The elliptic curve Diffie-Hellman (ECDH) key agreement algorithm. + * + * The shared secret produced by key agreement is the x-coordinate of + * the shared secret point. It is always `ceiling(m / 8)` bytes long where + * `m` is the bit size associated with the curve, i.e. the bit size of the + * order of the curve's coordinate field. When `m` is not a multiple of 8, + * the byte containing the most significant bit of the shared secret + * is padded with zero bits. The byte order is either little-endian + * or big-endian depending on the curve type. + * + * - For Montgomery curves (curve types `PSA_ECC_FAMILY_CURVEXXX`), + * the shared secret is the x-coordinate of `d_A Q_B = d_B Q_A` + * in little-endian byte order. + * The bit size is 448 for Curve448 and 255 for Curve25519. + * - For Weierstrass curves over prime fields (curve types + * `PSA_ECC_FAMILY_SECPXXX` and `PSA_ECC_FAMILY_BRAINPOOL_PXXX`), + * the shared secret is the x-coordinate of `d_A Q_B = d_B Q_A` + * in big-endian byte order. + * The bit size is `m = ceiling(log_2(p))` for the field `F_p`. + * - For Weierstrass curves over binary fields (curve types + * `PSA_ECC_FAMILY_SECTXXX`), + * the shared secret is the x-coordinate of `d_A Q_B = d_B Q_A` + * in big-endian byte order. + * The bit size is `m` for the field `F_{2^m}`. + */ +#define PSA_ALG_ECDH ((psa_algorithm_t)0x09020000) + +/** Whether the specified algorithm is an elliptic curve Diffie-Hellman + * algorithm. + * + * This includes the raw elliptic curve Diffie-Hellman algorithm as well as + * elliptic curve Diffie-Hellman followed by any supporter key derivation + * algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is an elliptic curve Diffie-Hellman algorithm, + * 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key agreement algorithm identifier. + */ +#define PSA_ALG_IS_ECDH(alg) \ + (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_ECDH) + +/** Whether the specified algorithm encoding is a wildcard. + * + * Wildcard values may only be used to set the usage algorithm field in + * a policy, not to perform an operation. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a wildcard algorithm encoding. + * \return 0 if \c alg is a non-wildcard algorithm encoding (suitable for + * an operation). + * \return This macro may return either 0 or 1 if \c alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_WILDCARD(alg) \ + (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \ + PSA_ALG_SIGN_GET_HASH(alg) == PSA_ALG_ANY_HASH : \ + PSA_ALG_IS_MAC(alg) ? \ + (alg & PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG) != 0 : \ + PSA_ALG_IS_AEAD(alg) ? \ + (alg & PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG) != 0 : \ + (alg) == PSA_ALG_ANY_HASH) + +/**@}*/ + +/** \defgroup key_lifetimes Key lifetimes + * @{ + */ + +/** The default lifetime for volatile keys. + * + * A volatile key only exists as long as the identifier to it is not destroyed. + * The key material is guaranteed to be erased on a power reset. + * + * A key with this lifetime is typically stored in the RAM area of the + * PSA Crypto subsystem. However this is an implementation choice. + * If an implementation stores data about the key in a non-volatile memory, + * it must release all the resources associated with the key and erase the + * key material if the calling application terminates. + */ +#define PSA_KEY_LIFETIME_VOLATILE ((psa_key_lifetime_t)0x00000000) + +/** The default lifetime for persistent keys. + * + * A persistent key remains in storage until it is explicitly destroyed or + * until the corresponding storage area is wiped. This specification does + * not define any mechanism to wipe a storage area, but integrations may + * provide their own mechanism (for example to perform a factory reset, + * to prepare for device refurbishment, or to uninstall an application). + * + * This lifetime value is the default storage area for the calling + * application. Integrations of Mbed TLS may support other persistent lifetimes. + * See ::psa_key_lifetime_t for more information. + */ +#define PSA_KEY_LIFETIME_PERSISTENT ((psa_key_lifetime_t)0x00000001) + +/** The persistence level of volatile keys. + * + * See ::psa_key_persistence_t for more information. + */ +#define PSA_KEY_PERSISTENCE_VOLATILE ((psa_key_persistence_t)0x00) + +/** The default persistence level for persistent keys. + * + * See ::psa_key_persistence_t for more information. + */ +#define PSA_KEY_PERSISTENCE_DEFAULT ((psa_key_persistence_t)0x01) + +/** A persistence level indicating that a key is never destroyed. + * + * See ::psa_key_persistence_t for more information. + */ +#define PSA_KEY_PERSISTENCE_READ_ONLY ((psa_key_persistence_t)0xff) + +#define PSA_KEY_LIFETIME_GET_PERSISTENCE(lifetime) \ + ((psa_key_persistence_t)((lifetime) & 0x000000ff)) + +#define PSA_KEY_LIFETIME_GET_LOCATION(lifetime) \ + ((psa_key_location_t)((lifetime) >> 8)) + +/** Whether a key lifetime indicates that the key is volatile. + * + * A volatile key is automatically destroyed by the implementation when + * the application instance terminates. In particular, a volatile key + * is automatically destroyed on a power reset of the device. + * + * A key that is not volatile is persistent. Persistent keys are + * preserved until the application explicitly destroys them or until an + * implementation-specific device management event occurs (for example, + * a factory reset). + * + * \param lifetime The lifetime value to query (value of type + * ::psa_key_lifetime_t). + * + * \return \c 1 if the key is volatile, otherwise \c 0. + */ +#define PSA_KEY_LIFETIME_IS_VOLATILE(lifetime) \ + (PSA_KEY_LIFETIME_GET_PERSISTENCE(lifetime) == \ + PSA_KEY_PERSISTENCE_VOLATILE) + +/** Whether a key lifetime indicates that the key is read-only. + * + * Read-only keys cannot be created or destroyed through the PSA Crypto API. + * They must be created through platform-specific means that bypass the API. + * + * Some platforms may offer ways to destroy read-only keys. For example, + * consider a platform with multiple levels of privilege, where a + * low-privilege application can use a key but is not allowed to destroy + * it, and the platform exposes the key to the application with a read-only + * lifetime. High-privilege code can destroy the key even though the + * application sees the key as read-only. + * + * \param lifetime The lifetime value to query (value of type + * ::psa_key_lifetime_t). + * + * \return \c 1 if the key is read-only, otherwise \c 0. + */ +#define PSA_KEY_LIFETIME_IS_READ_ONLY(lifetime) \ + (PSA_KEY_LIFETIME_GET_PERSISTENCE(lifetime) == \ + PSA_KEY_PERSISTENCE_READ_ONLY) + +/** Construct a lifetime from a persistence level and a location. + * + * \param persistence The persistence level + * (value of type ::psa_key_persistence_t). + * \param location The location indicator + * (value of type ::psa_key_location_t). + * + * \return The constructed lifetime value. + */ +#define PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(persistence, location) \ + ((location) << 8 | (persistence)) + +/** The local storage area for persistent keys. + * + * This storage area is available on all systems that can store persistent + * keys without delegating the storage to a third-party cryptoprocessor. + * + * See ::psa_key_location_t for more information. + */ +#define PSA_KEY_LOCATION_LOCAL_STORAGE ((psa_key_location_t)0x000000) + +#define PSA_KEY_LOCATION_VENDOR_FLAG ((psa_key_location_t)0x800000) + +/** The null key identifier. + */ +#define PSA_KEY_ID_NULL ((psa_key_id_t)0) +/** The minimum value for a key identifier chosen by the application. + */ +#define PSA_KEY_ID_USER_MIN ((psa_key_id_t)0x00000001) +/** The maximum value for a key identifier chosen by the application. + */ +#define PSA_KEY_ID_USER_MAX ((psa_key_id_t)0x3fffffff) +/** The minimum value for a key identifier chosen by the implementation. + */ +#define PSA_KEY_ID_VENDOR_MIN ((psa_key_id_t)0x40000000) +/** The maximum value for a key identifier chosen by the implementation. + */ +#define PSA_KEY_ID_VENDOR_MAX ((psa_key_id_t)0x7fffffff) + + +#if !defined(MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER) + +#define MBEDTLS_SVC_KEY_ID_INIT ( (psa_key_id_t)0 ) +#define MBEDTLS_SVC_KEY_ID_GET_KEY_ID( id ) ( id ) +#define MBEDTLS_SVC_KEY_ID_GET_OWNER_ID( id ) ( 0 ) + +/** Utility to initialize a key identifier at runtime. + * + * \param unused Unused parameter. + * \param key_id Identifier of the key. + */ +static inline mbedtls_svc_key_id_t mbedtls_svc_key_id_make( + unsigned int unused, psa_key_id_t key_id ) +{ + (void)unused; + + return( key_id ); +} + +/** Compare two key identifiers. + * + * \param id1 First key identifier. + * \param id2 Second key identifier. + * + * \return Non-zero if the two key identifier are equal, zero otherwise. + */ +static inline int mbedtls_svc_key_id_equal( mbedtls_svc_key_id_t id1, + mbedtls_svc_key_id_t id2 ) +{ + return( id1 == id2 ); +} + +/** Check whether a key identifier is null. + * + * \param key Key identifier. + * + * \return Non-zero if the key identifier is null, zero otherwise. + */ +static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key ) +{ + return( key == 0 ); +} + +#else /* MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER */ + +#define MBEDTLS_SVC_KEY_ID_INIT ( (mbedtls_svc_key_id_t){ 0, 0 } ) +#define MBEDTLS_SVC_KEY_ID_GET_KEY_ID( id ) ( ( id ).key_id ) +#define MBEDTLS_SVC_KEY_ID_GET_OWNER_ID( id ) ( ( id ).owner ) + +/** Utility to initialize a key identifier at runtime. + * + * \param owner_id Identifier of the key owner. + * \param key_id Identifier of the key. + */ +static inline mbedtls_svc_key_id_t mbedtls_svc_key_id_make( + mbedtls_key_owner_id_t owner_id, psa_key_id_t key_id ) +{ + return( (mbedtls_svc_key_id_t){ .key_id = key_id, + .owner = owner_id } ); +} + +/** Compare two key identifiers. + * + * \param id1 First key identifier. + * \param id2 Second key identifier. + * + * \return Non-zero if the two key identifier are equal, zero otherwise. + */ +static inline int mbedtls_svc_key_id_equal( mbedtls_svc_key_id_t id1, + mbedtls_svc_key_id_t id2 ) +{ + return( ( id1.key_id == id2.key_id ) && + mbedtls_key_owner_id_equal( id1.owner, id2.owner ) ); +} + +/** Check whether a key identifier is null. + * + * \param key Key identifier. + * + * \return Non-zero if the key identifier is null, zero otherwise. + */ +static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key ) +{ + return( key.key_id == 0 ); +} + +#endif /* !MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER */ + +/**@}*/ + +/** \defgroup policy Key policies + * @{ + */ + +/** Whether the key may be exported. + * + * A public key or the public part of a key pair may always be exported + * regardless of the value of this permission flag. + * + * If a key does not have export permission, implementations shall not + * allow the key to be exported in plain form from the cryptoprocessor, + * whether through psa_export_key() or through a proprietary interface. + * The key may however be exportable in a wrapped form, i.e. in a form + * where it is encrypted by another key. + */ +#define PSA_KEY_USAGE_EXPORT ((psa_key_usage_t)0x00000001) + +/** Whether the key may be copied. + * + * This flag allows the use of psa_copy_key() to make a copy of the key + * with the same policy or a more restrictive policy. + * + * For lifetimes for which the key is located in a secure element which + * enforce the non-exportability of keys, copying a key outside the secure + * element also requires the usage flag #PSA_KEY_USAGE_EXPORT. + * Copying the key inside the secure element is permitted with just + * #PSA_KEY_USAGE_COPY if the secure element supports it. + * For keys with the lifetime #PSA_KEY_LIFETIME_VOLATILE or + * #PSA_KEY_LIFETIME_PERSISTENT, the usage flag #PSA_KEY_USAGE_COPY + * is sufficient to permit the copy. + */ +#define PSA_KEY_USAGE_COPY ((psa_key_usage_t)0x00000002) + +/** Whether the key may be used to encrypt a message. + * + * This flag allows the key to be used for a symmetric encryption operation, + * for an AEAD encryption-and-authentication operation, + * or for an asymmetric encryption operation, + * if otherwise permitted by the key's type and policy. + * + * For a key pair, this concerns the public key. + */ +#define PSA_KEY_USAGE_ENCRYPT ((psa_key_usage_t)0x00000100) + +/** Whether the key may be used to decrypt a message. + * + * This flag allows the key to be used for a symmetric decryption operation, + * for an AEAD decryption-and-verification operation, + * or for an asymmetric decryption operation, + * if otherwise permitted by the key's type and policy. + * + * For a key pair, this concerns the private key. + */ +#define PSA_KEY_USAGE_DECRYPT ((psa_key_usage_t)0x00000200) + +/** Whether the key may be used to sign a message. + * + * This flag allows the key to be used for a MAC calculation operation or for + * an asymmetric message signature operation, if otherwise permitted by the + * key’s type and policy. + * + * For a key pair, this concerns the private key. + */ +#define PSA_KEY_USAGE_SIGN_MESSAGE ((psa_key_usage_t)0x00000400) + +/** Whether the key may be used to verify a message. + * + * This flag allows the key to be used for a MAC verification operation or for + * an asymmetric message signature verification operation, if otherwise + * permitted by the key’s type and policy. + * + * For a key pair, this concerns the public key. + */ +#define PSA_KEY_USAGE_VERIFY_MESSAGE ((psa_key_usage_t)0x00000800) + +/** Whether the key may be used to sign a message. + * + * This flag allows the key to be used for a MAC calculation operation + * or for an asymmetric signature operation, + * if otherwise permitted by the key's type and policy. + * + * For a key pair, this concerns the private key. + */ +#define PSA_KEY_USAGE_SIGN_HASH ((psa_key_usage_t)0x00001000) + +/** Whether the key may be used to verify a message signature. + * + * This flag allows the key to be used for a MAC verification operation + * or for an asymmetric signature verification operation, + * if otherwise permitted by by the key's type and policy. + * + * For a key pair, this concerns the public key. + */ +#define PSA_KEY_USAGE_VERIFY_HASH ((psa_key_usage_t)0x00002000) + +/** Whether the key may be used to derive other keys. + */ +#define PSA_KEY_USAGE_DERIVE ((psa_key_usage_t)0x00004000) + +/**@}*/ + +/** \defgroup derivation Key derivation + * @{ + */ + +/** A secret input for key derivation. + * + * This should be a key of type #PSA_KEY_TYPE_DERIVE + * (passed to psa_key_derivation_input_key()) + * or the shared secret resulting from a key agreement + * (obtained via psa_key_derivation_key_agreement()). + * + * The secret can also be a direct input (passed to + * key_derivation_input_bytes()). In this case, the derivation operation + * may not be used to derive keys: the operation will only allow + * psa_key_derivation_output_bytes(), not psa_key_derivation_output_key(). + */ +#define PSA_KEY_DERIVATION_INPUT_SECRET ((psa_key_derivation_step_t)0x0101) + +/** A label for key derivation. + * + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. + */ +#define PSA_KEY_DERIVATION_INPUT_LABEL ((psa_key_derivation_step_t)0x0201) + +/** A salt for key derivation. + * + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. + */ +#define PSA_KEY_DERIVATION_INPUT_SALT ((psa_key_derivation_step_t)0x0202) + +/** An information string for key derivation. + * + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. + */ +#define PSA_KEY_DERIVATION_INPUT_INFO ((psa_key_derivation_step_t)0x0203) + +/** A seed for key derivation. + * + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. + */ +#define PSA_KEY_DERIVATION_INPUT_SEED ((psa_key_derivation_step_t)0x0204) + +/**@}*/ + +/** \defgroup helper_macros Helper macros + * @{ + */ + +/* Helper macros */ + +/** Check if two AEAD algorithm identifiers refer to the same AEAD algorithm + * regardless of the tag length they encode. + * + * \param aead_alg_1 An AEAD algorithm identifier. + * \param aead_alg_2 An AEAD algorithm identifier. + * + * \return 1 if both identifiers refer to the same AEAD algorithm, + * 0 otherwise. + * Unspecified if neither \p aead_alg_1 nor \p aead_alg_2 are + * a supported AEAD algorithm. + */ +#define MBEDTLS_PSA_ALG_AEAD_EQUAL(aead_alg_1, aead_alg_2) \ + (!(((aead_alg_1) ^ (aead_alg_2)) & \ + ~(PSA_ALG_AEAD_TAG_LENGTH_MASK | PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG))) + +/**@}*/ + +#endif /* PSA_CRYPTO_VALUES_H */ diff --git a/Externals/mbedtls/library/CMakeLists.txt b/Externals/mbedtls/library/CMakeLists.txt index 720c7fa17c7b..0a600674db40 100644 --- a/Externals/mbedtls/library/CMakeLists.txt +++ b/Externals/mbedtls/library/CMakeLists.txt @@ -1,6 +1,14 @@ option(USE_STATIC_MBEDTLS_LIBRARY "Build mbed TLS static library." ON) option(USE_SHARED_MBEDTLS_LIBRARY "Build mbed TLS shared library." OFF) option(LINK_WITH_PTHREAD "Explicitly link mbed TLS library to pthread." OFF) +option(LINK_WITH_TRUSTED_STORAGE "Explicitly link mbed TLS library to trusted_storage." OFF) + +# Set the project root directory if it's not already defined, as may happen if +# the library folder is included directly by a parent project, without +# including the top level CMakeLists.txt. +if(NOT DEFINED MBEDTLS_DIR) + set(MBEDTLS_DIR ${CMAKE_SOURCE_DIR}) +endif() set(src_crypto aes.c @@ -18,6 +26,7 @@ set(src_crypto chachapoly.c cipher.c cipher_wrap.c + constant_time.c cmac.c ctr_drbg.c des.c @@ -38,8 +47,9 @@ set(src_crypto md2.c md4.c md5.c - md_wrap.c memory_buffer_alloc.c + mps_reader.c + mps_trace.c nist_kw.c oid.c padlock.c @@ -53,6 +63,19 @@ set(src_crypto platform.c platform_util.c poly1305.c + psa_crypto.c + psa_crypto_aead.c + psa_crypto_cipher.c + psa_crypto_client.c + psa_crypto_driver_wrappers.c + psa_crypto_ecp.c + psa_crypto_hash.c + psa_crypto_mac.c + psa_crypto_rsa.c + psa_crypto_se.c + psa_crypto_slot_management.c + psa_crypto_storage.c + psa_its_file.c ripemd160.c rsa.c rsa_internal.c @@ -66,6 +89,8 @@ set(src_crypto xtea.c ) +list(APPEND src_crypto ${thirdparty_src}) + set(src_x509 certs.c pkcs11.c @@ -85,9 +110,11 @@ set(src_tls ssl_ciphersuites.c ssl_cli.c ssl_cookie.c + ssl_msg.c ssl_srv.c ssl_ticket.c ssl_tls.c + ssl_tls13_keys.c ) if(CMAKE_COMPILER_IS_GNUCC) @@ -98,12 +125,6 @@ if(CMAKE_COMPILER_IS_CLANG) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-declarations -Wmissing-prototypes -Wdocumentation -Wno-documentation-deprecated-sync -Wunreachable-code") endif(CMAKE_COMPILER_IS_CLANG) -if(UNSAFE_BUILD) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error") - set(CMAKE_C_FLAGS_ASAN "${CMAKE_C_FLAGS_ASAN} -Wno-error") - set(CMAKE_C_FLAGS_ASANDBG "${CMAKE_C_FLAGS_ASANDBG} -Wno-error") -endif(UNSAFE_BUILD) - if(WIN32) set(libs ${libs} ws2_32) endif(WIN32) @@ -131,57 +152,90 @@ if(LINK_WITH_PTHREAD) set(libs ${libs} pthread) endif() +if(LINK_WITH_TRUSTED_STORAGE) + set(libs ${libs} trusted_storage) +endif() + if (NOT USE_STATIC_MBEDTLS_LIBRARY AND NOT USE_SHARED_MBEDTLS_LIBRARY) message(FATAL_ERROR "Need to choose static or shared mbedtls build!") endif(NOT USE_STATIC_MBEDTLS_LIBRARY AND NOT USE_SHARED_MBEDTLS_LIBRARY) +set(mbedtls_target "${MBEDTLS_TARGET_PREFIX}mbedtls") +set(mbedx509_target "${MBEDTLS_TARGET_PREFIX}mbedx509") +set(mbedcrypto_target "${MBEDTLS_TARGET_PREFIX}mbedcrypto") + +set(mbedtls_target ${mbedtls_target} PARENT_SCOPE) +set(mbedx509_target ${mbedx509_target} PARENT_SCOPE) +set(mbedcrypto_target ${mbedcrypto_target} PARENT_SCOPE) + +if (USE_STATIC_MBEDTLS_LIBRARY) + set(mbedtls_static_target ${mbedtls_target}) + set(mbedx509_static_target ${mbedx509_target}) + set(mbedcrypto_static_target ${mbedcrypto_target}) +endif() + +set(target_libraries ${mbedcrypto_target} ${mbedx509_target} ${mbedtls_target}) + if(USE_STATIC_MBEDTLS_LIBRARY AND USE_SHARED_MBEDTLS_LIBRARY) - set(mbedtls_static_target "mbedtls_static") - set(mbedx509_static_target "mbedx509_static") - set(mbedcrypto_static_target "mbedcrypto_static") -elseif(USE_STATIC_MBEDTLS_LIBRARY) - set(mbedtls_static_target "mbedtls") - set(mbedx509_static_target "mbedx509") - set(mbedcrypto_static_target "mbedcrypto") + string(APPEND mbedtls_static_target "_static") + string(APPEND mbedx509_static_target "_static") + string(APPEND mbedcrypto_static_target "_static") + + list(APPEND target_libraries + ${mbedcrypto_static_target} + ${mbedx509_static_target} + ${mbedtls_static_target}) endif() if(USE_STATIC_MBEDTLS_LIBRARY) add_library(${mbedcrypto_static_target} STATIC ${src_crypto}) set_target_properties(${mbedcrypto_static_target} PROPERTIES OUTPUT_NAME mbedcrypto) - target_link_libraries(${mbedcrypto_static_target} ${libs}) + target_link_libraries(${mbedcrypto_static_target} PUBLIC ${libs}) add_library(${mbedx509_static_target} STATIC ${src_x509}) set_target_properties(${mbedx509_static_target} PROPERTIES OUTPUT_NAME mbedx509) - target_link_libraries(${mbedx509_static_target} ${libs} ${mbedcrypto_static_target}) + target_link_libraries(${mbedx509_static_target} PUBLIC ${libs} ${mbedcrypto_static_target}) add_library(${mbedtls_static_target} STATIC ${src_tls}) set_target_properties(${mbedtls_static_target} PROPERTIES OUTPUT_NAME mbedtls) - target_link_libraries(${mbedtls_static_target} ${libs} ${mbedx509_static_target}) - - install(TARGETS ${mbedtls_static_target} ${mbedx509_static_target} ${mbedcrypto_static_target} - DESTINATION ${LIB_INSTALL_DIR} - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + target_link_libraries(${mbedtls_static_target} PUBLIC ${libs} ${mbedx509_static_target}) endif(USE_STATIC_MBEDTLS_LIBRARY) if(USE_SHARED_MBEDTLS_LIBRARY) - add_library(mbedcrypto SHARED ${src_crypto}) - set_target_properties(mbedcrypto PROPERTIES VERSION 2.16.1 SOVERSION 3) - target_link_libraries(mbedcrypto ${libs}) + add_library(${mbedcrypto_target} SHARED ${src_crypto}) + set_target_properties(${mbedcrypto_target} PROPERTIES VERSION 2.28.0 SOVERSION 7) + target_link_libraries(${mbedcrypto_target} PUBLIC ${libs}) - add_library(mbedx509 SHARED ${src_x509}) - set_target_properties(mbedx509 PROPERTIES VERSION 2.16.1 SOVERSION 0) - target_link_libraries(mbedx509 ${libs} mbedcrypto) + add_library(${mbedx509_target} SHARED ${src_x509}) + set_target_properties(${mbedx509_target} PROPERTIES VERSION 2.28.0 SOVERSION 1) + target_link_libraries(${mbedx509_target} PUBLIC ${libs} ${mbedcrypto_target}) - add_library(mbedtls SHARED ${src_tls}) - set_target_properties(mbedtls PROPERTIES VERSION 2.16.1 SOVERSION 12) - target_link_libraries(mbedtls ${libs} mbedx509) + add_library(${mbedtls_target} SHARED ${src_tls}) + set_target_properties(${mbedtls_target} PROPERTIES VERSION 2.28.0 SOVERSION 14) + target_link_libraries(${mbedtls_target} PUBLIC ${libs} ${mbedx509_target}) +endif(USE_SHARED_MBEDTLS_LIBRARY) - install(TARGETS mbedtls mbedx509 mbedcrypto +foreach(target IN LISTS target_libraries) + # Include public header files from /include and other directories + # declared by /3rdparty/**/CMakeLists.txt. Include private header files + # from /library and others declared by /3rdparty/**/CMakeLists.txt. + # /library needs to be listed explicitly when building .c files outside + # of /library (which currently means: under /3rdparty). + target_include_directories(${target} + PUBLIC ${MBEDTLS_DIR}/include/ + PUBLIC ${thirdparty_inc_public} + PRIVATE ${MBEDTLS_DIR}/library/ + PRIVATE ${thirdparty_inc}) + target_compile_definitions(${target} + PRIVATE ${thirdparty_def}) + install(TARGETS ${target} DESTINATION ${LIB_INSTALL_DIR} - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) -endif(USE_SHARED_MBEDTLS_LIBRARY) + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) +endforeach(target) + +set(lib_target "${MBEDTLS_TARGET_PREFIX}lib") -add_custom_target(lib DEPENDS mbedcrypto mbedx509 mbedtls) +add_custom_target(${lib_target} DEPENDS ${mbedcrypto_target} ${mbedx509_target} ${mbedtls_target}) if(USE_STATIC_MBEDTLS_LIBRARY AND USE_SHARED_MBEDTLS_LIBRARY) - add_dependencies(lib mbedcrypto_static mbedx509_static mbedtls_static) + add_dependencies(${lib_target} ${mbedcrypto_static_target} ${mbedx509_static_target} ${mbedtls_static_target}) endif() diff --git a/Externals/mbedtls/library/Makefile b/Externals/mbedtls/library/Makefile index 430c59881239..54b0651dc48d 100644 --- a/Externals/mbedtls/library/Makefile +++ b/Externals/mbedtls/library/Makefile @@ -2,10 +2,14 @@ # Also see "include/mbedtls/config.h" CFLAGS ?= -O2 -WARNING_CFLAGS ?= -Wall -W -Wdeclaration-after-statement +WARNING_CFLAGS ?= -Wall -Wextra -Wformat=2 -Wno-format-nonliteral LDFLAGS ?= -LOCAL_CFLAGS = $(WARNING_CFLAGS) -I../include -D_FILE_OFFSET_BITS=64 +# Include ../include for public headers and . for private headers. +# Note that . needs to be included explicitly for the sake of library +# files that are not in the /library directory (which currently means +# under /3rdparty). +LOCAL_CFLAGS = $(WARNING_CFLAGS) -I. -I../include -D_FILE_OFFSET_BITS=64 LOCAL_LDFLAGS = ifdef DEBUG @@ -35,11 +39,11 @@ LOCAL_CFLAGS += -fPIC -fpic endif endif -SOEXT_TLS=so.12 -SOEXT_X509=so.0 -SOEXT_CRYPTO=so.3 +SOEXT_TLS=so.14 +SOEXT_X509=so.1 +SOEXT_CRYPTO=so.7 -# Set AR_DASH= (empty string) to use an ar implentation that does not accept +# Set AR_DASH= (empty string) to use an ar implementation that does not accept # the - prefix for command line options (e.g. llvm-ar) AR_DASH ?= - @@ -63,38 +67,114 @@ DLEXT = dylib endif endif -OBJS_CRYPTO= aes.o aesni.o arc4.o \ - aria.o asn1parse.o asn1write.o \ - base64.o bignum.o blowfish.o \ - camellia.o ccm.o chacha20.o \ - chachapoly.o cipher.o cipher_wrap.o \ - cmac.o ctr_drbg.o des.o \ - dhm.o ecdh.o ecdsa.o \ - ecjpake.o ecp.o \ - ecp_curves.o entropy.o entropy_poll.o \ - error.o gcm.o havege.o \ - hkdf.o \ - hmac_drbg.o md.o md2.o \ - md4.o md5.o md_wrap.o \ - memory_buffer_alloc.o nist_kw.o \ - oid.o padlock.o pem.o \ - pk.o pk_wrap.o pkcs12.o \ - pkcs5.o pkparse.o pkwrite.o \ - platform.o platform_util.o poly1305.o \ - ripemd160.o rsa_internal.o rsa.o \ - sha1.o sha256.o sha512.o \ - threading.o timing.o version.o \ - version_features.o xtea.o - -OBJS_X509= certs.o pkcs11.o x509.o \ - x509_create.o x509_crl.o x509_crt.o \ - x509_csr.o x509write_crt.o x509write_csr.o - -OBJS_TLS= debug.o net_sockets.o \ - ssl_cache.o ssl_ciphersuites.o \ - ssl_cli.o ssl_cookie.o \ - ssl_srv.o ssl_ticket.o \ - ssl_tls.o +OBJS_CRYPTO= \ + aes.o \ + aesni.o \ + arc4.o \ + aria.o \ + asn1parse.o \ + asn1write.o \ + base64.o \ + bignum.o \ + blowfish.o \ + camellia.o \ + ccm.o \ + chacha20.o \ + chachapoly.o \ + cipher.o \ + cipher_wrap.o \ + cmac.o \ + constant_time.o \ + ctr_drbg.o \ + des.o \ + dhm.o \ + ecdh.o \ + ecdsa.o \ + ecjpake.o \ + ecp.o \ + ecp_curves.o \ + entropy.o \ + entropy_poll.o \ + error.o \ + gcm.o \ + havege.o \ + hkdf.o \ + hmac_drbg.o \ + md.o \ + md2.o \ + md4.o \ + md5.o \ + memory_buffer_alloc.o \ + mps_reader.o \ + mps_trace.o \ + nist_kw.o \ + oid.o \ + padlock.o \ + pem.o \ + pk.o \ + pk_wrap.o \ + pkcs12.o \ + pkcs5.o \ + pkparse.o \ + pkwrite.o \ + platform.o \ + platform_util.o \ + poly1305.o \ + psa_crypto.o \ + psa_crypto_aead.o \ + psa_crypto_cipher.o \ + psa_crypto_client.o \ + psa_crypto_driver_wrappers.o \ + psa_crypto_ecp.o \ + psa_crypto_hash.o \ + psa_crypto_mac.o \ + psa_crypto_rsa.o \ + psa_crypto_se.o \ + psa_crypto_slot_management.o \ + psa_crypto_storage.o \ + psa_its_file.o \ + ripemd160.o \ + rsa.o \ + rsa_internal.o \ + sha1.o \ + sha256.o \ + sha512.o \ + threading.o \ + timing.o \ + version.o \ + version_features.o \ + xtea.o \ + # This line is intentionally left blank + +include ../3rdparty/Makefile.inc +LOCAL_CFLAGS+=$(THIRDPARTY_INCLUDES) +OBJS_CRYPTO+=$(THIRDPARTY_CRYPTO_OBJECTS) + +OBJS_X509= \ + certs.o \ + pkcs11.o \ + x509.o \ + x509_create.o \ + x509_crl.o \ + x509_crt.o \ + x509_csr.o \ + x509write_crt.o \ + x509write_csr.o \ + # This line is intentionally left blank + +OBJS_TLS= \ + debug.o \ + net_sockets.o \ + ssl_cache.o \ + ssl_ciphersuites.o \ + ssl_cli.o \ + ssl_cookie.o \ + ssl_msg.o \ + ssl_srv.o \ + ssl_ticket.o \ + ssl_tls.o \ + ssl_tls13_keys.o \ + # This line is intentionally left blank .SILENT: @@ -110,6 +190,14 @@ static: libmbedcrypto.a libmbedx509.a libmbedtls.a shared: libmbedcrypto.$(DLEXT) libmbedx509.$(DLEXT) libmbedtls.$(DLEXT) +# Windows builds under Mingw can fail if make tries to create archives in the same +# directory at the same time - see https://bugs.launchpad.net/gcc-arm-embedded/+bug/1848002. +# This forces builds of the .a files to be serialised. +ifdef WINDOWS +libmbedtls.a: | libmbedx509.a +libmbedx509.a: | libmbedcrypto.a +endif + # tls libmbedtls.a: $(OBJS_TLS) echo " AR $@" @@ -123,7 +211,7 @@ endif libmbedtls.$(SOEXT_TLS): $(OBJS_TLS) libmbedx509.so echo " LD $@" - $(CC) -shared -Wl,-soname,$@ -L. -lmbedcrypto -lmbedx509 $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_TLS) + $(CC) -shared -Wl,-soname,$@ -o $@ $(OBJS_TLS) -L. -lmbedx509 -lmbedcrypto $(LOCAL_LDFLAGS) $(LDFLAGS) libmbedtls.so: libmbedtls.$(SOEXT_TLS) echo " LN $@ -> $<" @@ -131,11 +219,11 @@ libmbedtls.so: libmbedtls.$(SOEXT_TLS) libmbedtls.dylib: $(OBJS_TLS) libmbedx509.dylib echo " LD $@" - $(CC) -dynamiclib -L. -lmbedcrypto -lmbedx509 $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_TLS) + $(CC) -dynamiclib -o $@ $(OBJS_TLS) -L. -lmbedx509 -lmbedcrypto $(LOCAL_LDFLAGS) $(LDFLAGS) libmbedtls.dll: $(OBJS_TLS) libmbedx509.dll echo " LD $@" - $(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_TLS) -lws2_32 -lwinmm -lgdi32 -L. -lmbedcrypto -lmbedx509 -static-libgcc $(LOCAL_LDFLAGS) $(LDFLAGS) + $(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_TLS) -lws2_32 -lwinmm -lgdi32 -L. -lmbedx509 -lmbedcrypto -static-libgcc $(LOCAL_LDFLAGS) $(LDFLAGS) # x509 libmbedx509.a: $(OBJS_X509) @@ -150,7 +238,7 @@ endif libmbedx509.$(SOEXT_X509): $(OBJS_X509) libmbedcrypto.so echo " LD $@" - $(CC) -shared -Wl,-soname,$@ -L. -lmbedcrypto $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_X509) + $(CC) -shared -Wl,-soname,$@ -o $@ $(OBJS_X509) -L. -lmbedcrypto $(LOCAL_LDFLAGS) $(LDFLAGS) libmbedx509.so: libmbedx509.$(SOEXT_X509) echo " LN $@ -> $<" @@ -158,7 +246,7 @@ libmbedx509.so: libmbedx509.$(SOEXT_X509) libmbedx509.dylib: $(OBJS_X509) libmbedcrypto.dylib echo " LD $@" - $(CC) -dynamiclib -L. -lmbedcrypto $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_X509) + $(CC) -dynamiclib -o $@ $(OBJS_X509) -L. -lmbedcrypto $(LOCAL_LDFLAGS) $(LDFLAGS) libmbedx509.dll: $(OBJS_X509) libmbedcrypto.dll echo " LD $@" @@ -177,7 +265,7 @@ endif libmbedcrypto.$(SOEXT_CRYPTO): $(OBJS_CRYPTO) echo " LD $@" - $(CC) -shared -Wl,-soname,$@ $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_CRYPTO) + $(CC) -shared -Wl,-soname,$@ -o $@ $(OBJS_CRYPTO) $(LOCAL_LDFLAGS) $(LDFLAGS) libmbedcrypto.so: libmbedcrypto.$(SOEXT_CRYPTO) echo " LN $@ -> $<" @@ -185,7 +273,7 @@ libmbedcrypto.so: libmbedcrypto.$(SOEXT_CRYPTO) libmbedcrypto.dylib: $(OBJS_CRYPTO) echo " LD $@" - $(CC) -dynamiclib $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_CRYPTO) + $(CC) -dynamiclib -o $@ $(OBJS_CRYPTO) $(LOCAL_LDFLAGS) $(LDFLAGS) libmbedcrypto.dll: $(OBJS_CRYPTO) echo " LD $@" @@ -193,11 +281,14 @@ libmbedcrypto.dll: $(OBJS_CRYPTO) .c.o: echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) -c $< + $(CC) $(LOCAL_CFLAGS) $(CFLAGS) -o $@ -c $< clean: ifndef WINDOWS rm -f *.o libmbed* + rm -f $(THIRDPARTY_CRYPTO_OBJECTS) else - del /Q /F *.o libmbed* + if exist *.o del /Q /F *.o + if exist libmbed* del /Q /F libmbed* + del /Q /F del_errors_out_if_the_file_list_is_empty_but_not_if_a_file_does_not_exist $(subst /,\,$(THIRDPARTY_CRYPTO_OBJECTS)) endif diff --git a/Externals/mbedtls/library/aes.c b/Externals/mbedtls/library/aes.c index 0543cd7817ce..31824e75cf54 100644 --- a/Externals/mbedtls/library/aes.c +++ b/Externals/mbedtls/library/aes.c @@ -1,7 +1,7 @@ /* * FIPS-197 compliant AES implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The AES block cipher was designed by Vincent Rijmen and Joan Daemen. @@ -25,11 +23,7 @@ * http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_AES_C) @@ -38,6 +32,7 @@ #include "mbedtls/aes.h" #include "mbedtls/platform.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #if defined(MBEDTLS_PADLOCK_C) #include "mbedtls/padlock.h" #endif @@ -62,29 +57,6 @@ #define AES_VALIDATE( cond ) \ MBEDTLS_INTERNAL_VALIDATE( cond ) -/* - * 32-bit integer manipulation macros (little endian) - */ -#ifndef GET_UINT32_LE -#define GET_UINT32_LE(n,b,i) \ -{ \ - (n) = ( (uint32_t) (b)[(i) ] ) \ - | ( (uint32_t) (b)[(i) + 1] << 8 ) \ - | ( (uint32_t) (b)[(i) + 2] << 16 ) \ - | ( (uint32_t) (b)[(i) + 3] << 24 ); \ -} -#endif - -#ifndef PUT_UINT32_LE -#define PUT_UINT32_LE(n,b,i) \ -{ \ - (b)[(i) ] = (unsigned char) ( ( (n) ) & 0xFF ); \ - (b)[(i) + 1] = (unsigned char) ( ( (n) >> 8 ) & 0xFF ); \ - (b)[(i) + 2] = (unsigned char) ( ( (n) >> 16 ) & 0xFF ); \ - (b)[(i) + 3] = (unsigned char) ( ( (n) >> 24 ) & 0xFF ); \ -} -#endif - #if defined(MBEDTLS_PADLOCK_C) && \ ( defined(MBEDTLS_HAVE_X86) || defined(MBEDTLS_PADLOCK_ALIGN16) ) static int aes_padlock_ace = -1; @@ -395,9 +367,9 @@ static uint32_t RCON[10]; /* * Tables generation code */ -#define ROTL8(x) ( ( x << 8 ) & 0xFFFFFFFF ) | ( x >> 24 ) -#define XTIME(x) ( ( x << 1 ) ^ ( ( x & 0x80 ) ? 0x1B : 0x00 ) ) -#define MUL(x,y) ( ( x && y ) ? pow[(log[x]+log[y]) % 255] : 0 ) +#define ROTL8(x) ( ( (x) << 8 ) & 0xFFFFFFFF ) | ( (x) >> 24 ) +#define XTIME(x) ( ( (x) << 1 ) ^ ( ( (x) & 0x80 ) ? 0x1B : 0x00 ) ) +#define MUL(x,y) ( ( (x) && (y) ) ? pow[(log[(x)]+log[(y)]) % 255] : 0 ) static int aes_init_done = 0; @@ -414,7 +386,7 @@ static void aes_gen_tables( void ) { pow[i] = x; log[x] = i; - x = ( x ^ XTIME( x ) ) & 0xFF; + x = MBEDTLS_BYTE_0( x ^ XTIME( x ) ); } /* @@ -423,7 +395,7 @@ static void aes_gen_tables( void ) for( i = 0, x = 1; i < 10; i++ ) { RCON[i] = (uint32_t) x; - x = XTIME( x ) & 0xFF; + x = MBEDTLS_BYTE_0( XTIME( x ) ); } /* @@ -436,10 +408,10 @@ static void aes_gen_tables( void ) { x = pow[255 - log[i]]; - y = x; y = ( ( y << 1 ) | ( y >> 7 ) ) & 0xFF; - x ^= y; y = ( ( y << 1 ) | ( y >> 7 ) ) & 0xFF; - x ^= y; y = ( ( y << 1 ) | ( y >> 7 ) ) & 0xFF; - x ^= y; y = ( ( y << 1 ) | ( y >> 7 ) ) & 0xFF; + y = x; y = MBEDTLS_BYTE_0( ( y << 1 ) | ( y >> 7 ) ); + x ^= y; y = MBEDTLS_BYTE_0( ( y << 1 ) | ( y >> 7 ) ); + x ^= y; y = MBEDTLS_BYTE_0( ( y << 1 ) | ( y >> 7 ) ); + x ^= y; y = MBEDTLS_BYTE_0( ( y << 1 ) | ( y >> 7 ) ); x ^= y ^ 0x63; FSb[i] = (unsigned char) x; @@ -452,8 +424,8 @@ static void aes_gen_tables( void ) for( i = 0; i < 256; i++ ) { x = FSb[i]; - y = XTIME( x ) & 0xFF; - z = ( y ^ x ) & 0xFF; + y = MBEDTLS_BYTE_0( XTIME( x ) ); + z = MBEDTLS_BYTE_0( y ^ x ); FT0[i] = ( (uint32_t) y ) ^ ( (uint32_t) x << 8 ) ^ @@ -595,7 +567,7 @@ int mbedtls_aes_setkey_enc( mbedtls_aes_context *ctx, const unsigned char *key, for( i = 0; i < ( keybits >> 5 ); i++ ) { - GET_UINT32_LE( RK[i], key, i << 2 ); + RK[i] = MBEDTLS_GET_UINT32_LE( key, i << 2 ); } switch( ctx->nr ) @@ -605,10 +577,10 @@ int mbedtls_aes_setkey_enc( mbedtls_aes_context *ctx, const unsigned char *key, for( i = 0; i < 10; i++, RK += 4 ) { RK[4] = RK[0] ^ RCON[i] ^ - ( (uint32_t) FSb[ ( RK[3] >> 8 ) & 0xFF ] ) ^ - ( (uint32_t) FSb[ ( RK[3] >> 16 ) & 0xFF ] << 8 ) ^ - ( (uint32_t) FSb[ ( RK[3] >> 24 ) & 0xFF ] << 16 ) ^ - ( (uint32_t) FSb[ ( RK[3] ) & 0xFF ] << 24 ); + ( (uint32_t) FSb[ MBEDTLS_BYTE_1( RK[3] ) ] ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_2( RK[3] ) ] << 8 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_3( RK[3] ) ] << 16 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_0( RK[3] ) ] << 24 ); RK[5] = RK[1] ^ RK[4]; RK[6] = RK[2] ^ RK[5]; @@ -621,10 +593,10 @@ int mbedtls_aes_setkey_enc( mbedtls_aes_context *ctx, const unsigned char *key, for( i = 0; i < 8; i++, RK += 6 ) { RK[6] = RK[0] ^ RCON[i] ^ - ( (uint32_t) FSb[ ( RK[5] >> 8 ) & 0xFF ] ) ^ - ( (uint32_t) FSb[ ( RK[5] >> 16 ) & 0xFF ] << 8 ) ^ - ( (uint32_t) FSb[ ( RK[5] >> 24 ) & 0xFF ] << 16 ) ^ - ( (uint32_t) FSb[ ( RK[5] ) & 0xFF ] << 24 ); + ( (uint32_t) FSb[ MBEDTLS_BYTE_1( RK[5] ) ] ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_2( RK[5] ) ] << 8 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_3( RK[5] ) ] << 16 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_0( RK[5] ) ] << 24 ); RK[7] = RK[1] ^ RK[6]; RK[8] = RK[2] ^ RK[7]; @@ -639,20 +611,20 @@ int mbedtls_aes_setkey_enc( mbedtls_aes_context *ctx, const unsigned char *key, for( i = 0; i < 7; i++, RK += 8 ) { RK[8] = RK[0] ^ RCON[i] ^ - ( (uint32_t) FSb[ ( RK[7] >> 8 ) & 0xFF ] ) ^ - ( (uint32_t) FSb[ ( RK[7] >> 16 ) & 0xFF ] << 8 ) ^ - ( (uint32_t) FSb[ ( RK[7] >> 24 ) & 0xFF ] << 16 ) ^ - ( (uint32_t) FSb[ ( RK[7] ) & 0xFF ] << 24 ); + ( (uint32_t) FSb[ MBEDTLS_BYTE_1( RK[7] ) ] ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_2( RK[7] ) ] << 8 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_3( RK[7] ) ] << 16 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_0( RK[7] ) ] << 24 ); RK[9] = RK[1] ^ RK[8]; RK[10] = RK[2] ^ RK[9]; RK[11] = RK[3] ^ RK[10]; RK[12] = RK[4] ^ - ( (uint32_t) FSb[ ( RK[11] ) & 0xFF ] ) ^ - ( (uint32_t) FSb[ ( RK[11] >> 8 ) & 0xFF ] << 8 ) ^ - ( (uint32_t) FSb[ ( RK[11] >> 16 ) & 0xFF ] << 16 ) ^ - ( (uint32_t) FSb[ ( RK[11] >> 24 ) & 0xFF ] << 24 ); + ( (uint32_t) FSb[ MBEDTLS_BYTE_0( RK[11] ) ] ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_1( RK[11] ) ] << 8 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_2( RK[11] ) ] << 16 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_3( RK[11] ) ] << 24 ); RK[13] = RK[5] ^ RK[12]; RK[14] = RK[6] ^ RK[13]; @@ -718,10 +690,10 @@ int mbedtls_aes_setkey_dec( mbedtls_aes_context *ctx, const unsigned char *key, { for( j = 0; j < 4; j++, SK++ ) { - *RK++ = AES_RT0( FSb[ ( *SK ) & 0xFF ] ) ^ - AES_RT1( FSb[ ( *SK >> 8 ) & 0xFF ] ) ^ - AES_RT2( FSb[ ( *SK >> 16 ) & 0xFF ] ) ^ - AES_RT3( FSb[ ( *SK >> 24 ) & 0xFF ] ); + *RK++ = AES_RT0( FSb[ MBEDTLS_BYTE_0( *SK ) ] ) ^ + AES_RT1( FSb[ MBEDTLS_BYTE_1( *SK ) ] ) ^ + AES_RT2( FSb[ MBEDTLS_BYTE_2( *SK ) ] ) ^ + AES_RT3( FSb[ MBEDTLS_BYTE_3( *SK ) ] ); } } @@ -735,6 +707,7 @@ int mbedtls_aes_setkey_dec( mbedtls_aes_context *ctx, const unsigned char *key, return( ret ); } +#endif /* !MBEDTLS_AES_SETKEY_DEC_ALT */ #if defined(MBEDTLS_CIPHER_MODE_XTS) static int mbedtls_aes_xts_decode_keys( const unsigned char *key, @@ -766,7 +739,7 @@ int mbedtls_aes_xts_setkey_enc( mbedtls_aes_xts_context *ctx, const unsigned char *key, unsigned int keybits) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const unsigned char *key1, *key2; unsigned int key1bits, key2bits; @@ -791,7 +764,7 @@ int mbedtls_aes_xts_setkey_dec( mbedtls_aes_xts_context *ctx, const unsigned char *key, unsigned int keybits) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const unsigned char *key1, *key2; unsigned int key1bits, key2bits; @@ -813,53 +786,53 @@ int mbedtls_aes_xts_setkey_dec( mbedtls_aes_xts_context *ctx, } #endif /* MBEDTLS_CIPHER_MODE_XTS */ -#endif /* !MBEDTLS_AES_SETKEY_DEC_ALT */ - -#define AES_FROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \ -{ \ - X0 = *RK++ ^ AES_FT0( ( Y0 ) & 0xFF ) ^ \ - AES_FT1( ( Y1 >> 8 ) & 0xFF ) ^ \ - AES_FT2( ( Y2 >> 16 ) & 0xFF ) ^ \ - AES_FT3( ( Y3 >> 24 ) & 0xFF ); \ - \ - X1 = *RK++ ^ AES_FT0( ( Y1 ) & 0xFF ) ^ \ - AES_FT1( ( Y2 >> 8 ) & 0xFF ) ^ \ - AES_FT2( ( Y3 >> 16 ) & 0xFF ) ^ \ - AES_FT3( ( Y0 >> 24 ) & 0xFF ); \ - \ - X2 = *RK++ ^ AES_FT0( ( Y2 ) & 0xFF ) ^ \ - AES_FT1( ( Y3 >> 8 ) & 0xFF ) ^ \ - AES_FT2( ( Y0 >> 16 ) & 0xFF ) ^ \ - AES_FT3( ( Y1 >> 24 ) & 0xFF ); \ - \ - X3 = *RK++ ^ AES_FT0( ( Y3 ) & 0xFF ) ^ \ - AES_FT1( ( Y0 >> 8 ) & 0xFF ) ^ \ - AES_FT2( ( Y1 >> 16 ) & 0xFF ) ^ \ - AES_FT3( ( Y2 >> 24 ) & 0xFF ); \ -} - -#define AES_RROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \ -{ \ - X0 = *RK++ ^ AES_RT0( ( Y0 ) & 0xFF ) ^ \ - AES_RT1( ( Y3 >> 8 ) & 0xFF ) ^ \ - AES_RT2( ( Y2 >> 16 ) & 0xFF ) ^ \ - AES_RT3( ( Y1 >> 24 ) & 0xFF ); \ - \ - X1 = *RK++ ^ AES_RT0( ( Y1 ) & 0xFF ) ^ \ - AES_RT1( ( Y0 >> 8 ) & 0xFF ) ^ \ - AES_RT2( ( Y3 >> 16 ) & 0xFF ) ^ \ - AES_RT3( ( Y2 >> 24 ) & 0xFF ); \ - \ - X2 = *RK++ ^ AES_RT0( ( Y2 ) & 0xFF ) ^ \ - AES_RT1( ( Y1 >> 8 ) & 0xFF ) ^ \ - AES_RT2( ( Y0 >> 16 ) & 0xFF ) ^ \ - AES_RT3( ( Y3 >> 24 ) & 0xFF ); \ - \ - X3 = *RK++ ^ AES_RT0( ( Y3 ) & 0xFF ) ^ \ - AES_RT1( ( Y2 >> 8 ) & 0xFF ) ^ \ - AES_RT2( ( Y1 >> 16 ) & 0xFF ) ^ \ - AES_RT3( ( Y0 >> 24 ) & 0xFF ); \ -} +#define AES_FROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \ + do \ + { \ + (X0) = *RK++ ^ AES_FT0( MBEDTLS_BYTE_0( Y0 ) ) ^ \ + AES_FT1( MBEDTLS_BYTE_1( Y1 ) ) ^ \ + AES_FT2( MBEDTLS_BYTE_2( Y2 ) ) ^ \ + AES_FT3( MBEDTLS_BYTE_3( Y3 ) ); \ + \ + (X1) = *RK++ ^ AES_FT0( MBEDTLS_BYTE_0( Y1 ) ) ^ \ + AES_FT1( MBEDTLS_BYTE_1( Y2 ) ) ^ \ + AES_FT2( MBEDTLS_BYTE_2( Y3 ) ) ^ \ + AES_FT3( MBEDTLS_BYTE_3( Y0 ) ); \ + \ + (X2) = *RK++ ^ AES_FT0( MBEDTLS_BYTE_0( Y2 ) ) ^ \ + AES_FT1( MBEDTLS_BYTE_1( Y3 ) ) ^ \ + AES_FT2( MBEDTLS_BYTE_2( Y0 ) ) ^ \ + AES_FT3( MBEDTLS_BYTE_3( Y1 ) ); \ + \ + (X3) = *RK++ ^ AES_FT0( MBEDTLS_BYTE_0( Y3 ) ) ^ \ + AES_FT1( MBEDTLS_BYTE_1( Y0 ) ) ^ \ + AES_FT2( MBEDTLS_BYTE_2( Y1 ) ) ^ \ + AES_FT3( MBEDTLS_BYTE_3( Y2 ) ); \ + } while( 0 ) + +#define AES_RROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \ + do \ + { \ + (X0) = *RK++ ^ AES_RT0( MBEDTLS_BYTE_0( Y0 ) ) ^ \ + AES_RT1( MBEDTLS_BYTE_1( Y3 ) ) ^ \ + AES_RT2( MBEDTLS_BYTE_2( Y2 ) ) ^ \ + AES_RT3( MBEDTLS_BYTE_3( Y1 ) ); \ + \ + (X1) = *RK++ ^ AES_RT0( MBEDTLS_BYTE_0( Y1 ) ) ^ \ + AES_RT1( MBEDTLS_BYTE_1( Y0 ) ) ^ \ + AES_RT2( MBEDTLS_BYTE_2( Y3 ) ) ^ \ + AES_RT3( MBEDTLS_BYTE_3( Y2 ) ); \ + \ + (X2) = *RK++ ^ AES_RT0( MBEDTLS_BYTE_0( Y2 ) ) ^ \ + AES_RT1( MBEDTLS_BYTE_1( Y1 ) ) ^ \ + AES_RT2( MBEDTLS_BYTE_2( Y0 ) ) ^ \ + AES_RT3( MBEDTLS_BYTE_3( Y3 ) ); \ + \ + (X3) = *RK++ ^ AES_RT0( MBEDTLS_BYTE_0( Y3 ) ) ^ \ + AES_RT1( MBEDTLS_BYTE_1( Y2 ) ) ^ \ + AES_RT2( MBEDTLS_BYTE_2( Y1 ) ) ^ \ + AES_RT3( MBEDTLS_BYTE_3( Y0 ) ); \ + } while( 0 ) /* * AES-ECB block encryption @@ -870,51 +843,56 @@ int mbedtls_internal_aes_encrypt( mbedtls_aes_context *ctx, unsigned char output[16] ) { int i; - uint32_t *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; - - RK = ctx->rk; + uint32_t *RK = ctx->rk; + struct + { + uint32_t X[4]; + uint32_t Y[4]; + } t; - GET_UINT32_LE( X0, input, 0 ); X0 ^= *RK++; - GET_UINT32_LE( X1, input, 4 ); X1 ^= *RK++; - GET_UINT32_LE( X2, input, 8 ); X2 ^= *RK++; - GET_UINT32_LE( X3, input, 12 ); X3 ^= *RK++; + t.X[0] = MBEDTLS_GET_UINT32_LE( input, 0 ); t.X[0] ^= *RK++; + t.X[1] = MBEDTLS_GET_UINT32_LE( input, 4 ); t.X[1] ^= *RK++; + t.X[2] = MBEDTLS_GET_UINT32_LE( input, 8 ); t.X[2] ^= *RK++; + t.X[3] = MBEDTLS_GET_UINT32_LE( input, 12 ); t.X[3] ^= *RK++; for( i = ( ctx->nr >> 1 ) - 1; i > 0; i-- ) { - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); - AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); + AES_FROUND( t.Y[0], t.Y[1], t.Y[2], t.Y[3], t.X[0], t.X[1], t.X[2], t.X[3] ); + AES_FROUND( t.X[0], t.X[1], t.X[2], t.X[3], t.Y[0], t.Y[1], t.Y[2], t.Y[3] ); } - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); - - X0 = *RK++ ^ \ - ( (uint32_t) FSb[ ( Y0 ) & 0xFF ] ) ^ - ( (uint32_t) FSb[ ( Y1 >> 8 ) & 0xFF ] << 8 ) ^ - ( (uint32_t) FSb[ ( Y2 >> 16 ) & 0xFF ] << 16 ) ^ - ( (uint32_t) FSb[ ( Y3 >> 24 ) & 0xFF ] << 24 ); - - X1 = *RK++ ^ \ - ( (uint32_t) FSb[ ( Y1 ) & 0xFF ] ) ^ - ( (uint32_t) FSb[ ( Y2 >> 8 ) & 0xFF ] << 8 ) ^ - ( (uint32_t) FSb[ ( Y3 >> 16 ) & 0xFF ] << 16 ) ^ - ( (uint32_t) FSb[ ( Y0 >> 24 ) & 0xFF ] << 24 ); - - X2 = *RK++ ^ \ - ( (uint32_t) FSb[ ( Y2 ) & 0xFF ] ) ^ - ( (uint32_t) FSb[ ( Y3 >> 8 ) & 0xFF ] << 8 ) ^ - ( (uint32_t) FSb[ ( Y0 >> 16 ) & 0xFF ] << 16 ) ^ - ( (uint32_t) FSb[ ( Y1 >> 24 ) & 0xFF ] << 24 ); - - X3 = *RK++ ^ \ - ( (uint32_t) FSb[ ( Y3 ) & 0xFF ] ) ^ - ( (uint32_t) FSb[ ( Y0 >> 8 ) & 0xFF ] << 8 ) ^ - ( (uint32_t) FSb[ ( Y1 >> 16 ) & 0xFF ] << 16 ) ^ - ( (uint32_t) FSb[ ( Y2 >> 24 ) & 0xFF ] << 24 ); - - PUT_UINT32_LE( X0, output, 0 ); - PUT_UINT32_LE( X1, output, 4 ); - PUT_UINT32_LE( X2, output, 8 ); - PUT_UINT32_LE( X3, output, 12 ); + AES_FROUND( t.Y[0], t.Y[1], t.Y[2], t.Y[3], t.X[0], t.X[1], t.X[2], t.X[3] ); + + t.X[0] = *RK++ ^ \ + ( (uint32_t) FSb[ MBEDTLS_BYTE_0( t.Y[0] ) ] ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_1( t.Y[1] ) ] << 8 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_2( t.Y[2] ) ] << 16 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_3( t.Y[3] ) ] << 24 ); + + t.X[1] = *RK++ ^ \ + ( (uint32_t) FSb[ MBEDTLS_BYTE_0( t.Y[1] ) ] ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_1( t.Y[2] ) ] << 8 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_2( t.Y[3] ) ] << 16 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_3( t.Y[0] ) ] << 24 ); + + t.X[2] = *RK++ ^ \ + ( (uint32_t) FSb[ MBEDTLS_BYTE_0( t.Y[2] ) ] ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_1( t.Y[3] ) ] << 8 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_2( t.Y[0] ) ] << 16 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_3( t.Y[1] ) ] << 24 ); + + t.X[3] = *RK++ ^ \ + ( (uint32_t) FSb[ MBEDTLS_BYTE_0( t.Y[3] ) ] ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_1( t.Y[0] ) ] << 8 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_2( t.Y[1] ) ] << 16 ) ^ + ( (uint32_t) FSb[ MBEDTLS_BYTE_3( t.Y[2] ) ] << 24 ); + + MBEDTLS_PUT_UINT32_LE( t.X[0], output, 0 ); + MBEDTLS_PUT_UINT32_LE( t.X[1], output, 4 ); + MBEDTLS_PUT_UINT32_LE( t.X[2], output, 8 ); + MBEDTLS_PUT_UINT32_LE( t.X[3], output, 12 ); + + mbedtls_platform_zeroize( &t, sizeof( t ) ); return( 0 ); } @@ -925,7 +903,7 @@ void mbedtls_aes_encrypt( mbedtls_aes_context *ctx, const unsigned char input[16], unsigned char output[16] ) { - mbedtls_internal_aes_encrypt( ctx, input, output ); + MBEDTLS_IGNORE_RETURN( mbedtls_internal_aes_encrypt( ctx, input, output ) ); } #endif /* !MBEDTLS_DEPRECATED_REMOVED */ @@ -938,51 +916,56 @@ int mbedtls_internal_aes_decrypt( mbedtls_aes_context *ctx, unsigned char output[16] ) { int i; - uint32_t *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; - - RK = ctx->rk; + uint32_t *RK = ctx->rk; + struct + { + uint32_t X[4]; + uint32_t Y[4]; + } t; - GET_UINT32_LE( X0, input, 0 ); X0 ^= *RK++; - GET_UINT32_LE( X1, input, 4 ); X1 ^= *RK++; - GET_UINT32_LE( X2, input, 8 ); X2 ^= *RK++; - GET_UINT32_LE( X3, input, 12 ); X3 ^= *RK++; + t.X[0] = MBEDTLS_GET_UINT32_LE( input, 0 ); t.X[0] ^= *RK++; + t.X[1] = MBEDTLS_GET_UINT32_LE( input, 4 ); t.X[1] ^= *RK++; + t.X[2] = MBEDTLS_GET_UINT32_LE( input, 8 ); t.X[2] ^= *RK++; + t.X[3] = MBEDTLS_GET_UINT32_LE( input, 12 ); t.X[3] ^= *RK++; for( i = ( ctx->nr >> 1 ) - 1; i > 0; i-- ) { - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); - AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); + AES_RROUND( t.Y[0], t.Y[1], t.Y[2], t.Y[3], t.X[0], t.X[1], t.X[2], t.X[3] ); + AES_RROUND( t.X[0], t.X[1], t.X[2], t.X[3], t.Y[0], t.Y[1], t.Y[2], t.Y[3] ); } - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); - - X0 = *RK++ ^ \ - ( (uint32_t) RSb[ ( Y0 ) & 0xFF ] ) ^ - ( (uint32_t) RSb[ ( Y3 >> 8 ) & 0xFF ] << 8 ) ^ - ( (uint32_t) RSb[ ( Y2 >> 16 ) & 0xFF ] << 16 ) ^ - ( (uint32_t) RSb[ ( Y1 >> 24 ) & 0xFF ] << 24 ); - - X1 = *RK++ ^ \ - ( (uint32_t) RSb[ ( Y1 ) & 0xFF ] ) ^ - ( (uint32_t) RSb[ ( Y0 >> 8 ) & 0xFF ] << 8 ) ^ - ( (uint32_t) RSb[ ( Y3 >> 16 ) & 0xFF ] << 16 ) ^ - ( (uint32_t) RSb[ ( Y2 >> 24 ) & 0xFF ] << 24 ); - - X2 = *RK++ ^ \ - ( (uint32_t) RSb[ ( Y2 ) & 0xFF ] ) ^ - ( (uint32_t) RSb[ ( Y1 >> 8 ) & 0xFF ] << 8 ) ^ - ( (uint32_t) RSb[ ( Y0 >> 16 ) & 0xFF ] << 16 ) ^ - ( (uint32_t) RSb[ ( Y3 >> 24 ) & 0xFF ] << 24 ); - - X3 = *RK++ ^ \ - ( (uint32_t) RSb[ ( Y3 ) & 0xFF ] ) ^ - ( (uint32_t) RSb[ ( Y2 >> 8 ) & 0xFF ] << 8 ) ^ - ( (uint32_t) RSb[ ( Y1 >> 16 ) & 0xFF ] << 16 ) ^ - ( (uint32_t) RSb[ ( Y0 >> 24 ) & 0xFF ] << 24 ); - - PUT_UINT32_LE( X0, output, 0 ); - PUT_UINT32_LE( X1, output, 4 ); - PUT_UINT32_LE( X2, output, 8 ); - PUT_UINT32_LE( X3, output, 12 ); + AES_RROUND( t.Y[0], t.Y[1], t.Y[2], t.Y[3], t.X[0], t.X[1], t.X[2], t.X[3] ); + + t.X[0] = *RK++ ^ \ + ( (uint32_t) RSb[ MBEDTLS_BYTE_0( t.Y[0] ) ] ) ^ + ( (uint32_t) RSb[ MBEDTLS_BYTE_1( t.Y[3] ) ] << 8 ) ^ + ( (uint32_t) RSb[ MBEDTLS_BYTE_2( t.Y[2] ) ] << 16 ) ^ + ( (uint32_t) RSb[ MBEDTLS_BYTE_3( t.Y[1] ) ] << 24 ); + + t.X[1] = *RK++ ^ \ + ( (uint32_t) RSb[ MBEDTLS_BYTE_0( t.Y[1] ) ] ) ^ + ( (uint32_t) RSb[ MBEDTLS_BYTE_1( t.Y[0] ) ] << 8 ) ^ + ( (uint32_t) RSb[ MBEDTLS_BYTE_2( t.Y[3] ) ] << 16 ) ^ + ( (uint32_t) RSb[ MBEDTLS_BYTE_3( t.Y[2] ) ] << 24 ); + + t.X[2] = *RK++ ^ \ + ( (uint32_t) RSb[ MBEDTLS_BYTE_0( t.Y[2] ) ] ) ^ + ( (uint32_t) RSb[ MBEDTLS_BYTE_1( t.Y[1] ) ] << 8 ) ^ + ( (uint32_t) RSb[ MBEDTLS_BYTE_2( t.Y[0] ) ] << 16 ) ^ + ( (uint32_t) RSb[ MBEDTLS_BYTE_3( t.Y[3] ) ] << 24 ); + + t.X[3] = *RK++ ^ \ + ( (uint32_t) RSb[ MBEDTLS_BYTE_0( t.Y[3] ) ] ) ^ + ( (uint32_t) RSb[ MBEDTLS_BYTE_1( t.Y[2] ) ] << 8 ) ^ + ( (uint32_t) RSb[ MBEDTLS_BYTE_2( t.Y[1] ) ] << 16 ) ^ + ( (uint32_t) RSb[ MBEDTLS_BYTE_3( t.Y[0] ) ] << 24 ); + + MBEDTLS_PUT_UINT32_LE( t.X[0], output, 0 ); + MBEDTLS_PUT_UINT32_LE( t.X[1], output, 4 ); + MBEDTLS_PUT_UINT32_LE( t.X[2], output, 8 ); + MBEDTLS_PUT_UINT32_LE( t.X[3], output, 12 ); + + mbedtls_platform_zeroize( &t, sizeof( t ) ); return( 0 ); } @@ -993,7 +976,7 @@ void mbedtls_aes_decrypt( mbedtls_aes_context *ctx, const unsigned char input[16], unsigned char output[16] ) { - mbedtls_internal_aes_decrypt( ctx, input, output ); + MBEDTLS_IGNORE_RETURN( mbedtls_internal_aes_decrypt( ctx, input, output ) ); } #endif /* !MBEDTLS_DEPRECATED_REMOVED */ @@ -1046,6 +1029,7 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, unsigned char *output ) { int i; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char temp[16]; AES_VALIDATE_RET( ctx != NULL ); @@ -1075,7 +1059,9 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, while( length > 0 ) { memcpy( temp, input, 16 ); - mbedtls_aes_crypt_ecb( ctx, mode, input, output ); + ret = mbedtls_aes_crypt_ecb( ctx, mode, input, output ); + if( ret != 0 ) + goto exit; for( i = 0; i < 16; i++ ) output[i] = (unsigned char)( output[i] ^ iv[i] ); @@ -1094,7 +1080,9 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, for( i = 0; i < 16; i++ ) output[i] = (unsigned char)( input[i] ^ iv[i] ); - mbedtls_aes_crypt_ecb( ctx, mode, output, output ); + ret = mbedtls_aes_crypt_ecb( ctx, mode, output, output ); + if( ret != 0 ) + goto exit; memcpy( iv, output, 16 ); input += 16; @@ -1102,42 +1090,15 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, length -= 16; } } + ret = 0; - return( 0 ); +exit: + return( ret ); } #endif /* MBEDTLS_CIPHER_MODE_CBC */ #if defined(MBEDTLS_CIPHER_MODE_XTS) -/* Endianess with 64 bits values */ -#ifndef GET_UINT64_LE -#define GET_UINT64_LE(n,b,i) \ -{ \ - (n) = ( (uint64_t) (b)[(i) + 7] << 56 ) \ - | ( (uint64_t) (b)[(i) + 6] << 48 ) \ - | ( (uint64_t) (b)[(i) + 5] << 40 ) \ - | ( (uint64_t) (b)[(i) + 4] << 32 ) \ - | ( (uint64_t) (b)[(i) + 3] << 24 ) \ - | ( (uint64_t) (b)[(i) + 2] << 16 ) \ - | ( (uint64_t) (b)[(i) + 1] << 8 ) \ - | ( (uint64_t) (b)[(i) ] ); \ -} -#endif - -#ifndef PUT_UINT64_LE -#define PUT_UINT64_LE(n,b,i) \ -{ \ - (b)[(i) + 7] = (unsigned char) ( (n) >> 56 ); \ - (b)[(i) + 6] = (unsigned char) ( (n) >> 48 ); \ - (b)[(i) + 5] = (unsigned char) ( (n) >> 40 ); \ - (b)[(i) + 4] = (unsigned char) ( (n) >> 32 ); \ - (b)[(i) + 3] = (unsigned char) ( (n) >> 24 ); \ - (b)[(i) + 2] = (unsigned char) ( (n) >> 16 ); \ - (b)[(i) + 1] = (unsigned char) ( (n) >> 8 ); \ - (b)[(i) ] = (unsigned char) ( (n) ); \ -} -#endif - typedef unsigned char mbedtls_be128[16]; /* @@ -1153,14 +1114,14 @@ static void mbedtls_gf128mul_x_ble( unsigned char r[16], { uint64_t a, b, ra, rb; - GET_UINT64_LE( a, x, 0 ); - GET_UINT64_LE( b, x, 8 ); + a = MBEDTLS_GET_UINT64_LE( x, 0 ); + b = MBEDTLS_GET_UINT64_LE( x, 8 ); ra = ( a << 1 ) ^ 0x0087 >> ( 8 - ( ( b >> 63 ) << 3 ) ); rb = ( a >> 63 ) | ( b << 1 ); - PUT_UINT64_LE( ra, r, 0 ); - PUT_UINT64_LE( rb, r, 8 ); + MBEDTLS_PUT_UINT64_LE( ra, r, 0 ); + MBEDTLS_PUT_UINT64_LE( rb, r, 8 ); } /* @@ -1173,7 +1134,7 @@ int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx, const unsigned char *input, unsigned char *output ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t blocks = length / 16; size_t leftover = length % 16; unsigned char tweak[16]; @@ -1286,6 +1247,7 @@ int mbedtls_aes_crypt_cfb128( mbedtls_aes_context *ctx, unsigned char *output ) { int c; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n; AES_VALIDATE_RET( ctx != NULL ); @@ -1306,7 +1268,11 @@ int mbedtls_aes_crypt_cfb128( mbedtls_aes_context *ctx, while( length-- ) { if( n == 0 ) - mbedtls_aes_crypt_ecb( ctx, MBEDTLS_AES_ENCRYPT, iv, iv ); + { + ret = mbedtls_aes_crypt_ecb( ctx, MBEDTLS_AES_ENCRYPT, iv, iv ); + if( ret != 0 ) + goto exit; + } c = *input++; *output++ = (unsigned char)( c ^ iv[n] ); @@ -1320,7 +1286,11 @@ int mbedtls_aes_crypt_cfb128( mbedtls_aes_context *ctx, while( length-- ) { if( n == 0 ) - mbedtls_aes_crypt_ecb( ctx, MBEDTLS_AES_ENCRYPT, iv, iv ); + { + ret = mbedtls_aes_crypt_ecb( ctx, MBEDTLS_AES_ENCRYPT, iv, iv ); + if( ret != 0 ) + goto exit; + } iv[n] = *output++ = (unsigned char)( iv[n] ^ *input++ ); @@ -1329,8 +1299,10 @@ int mbedtls_aes_crypt_cfb128( mbedtls_aes_context *ctx, } *iv_off = n; + ret = 0; - return( 0 ); +exit: + return( ret ); } /* @@ -1343,6 +1315,7 @@ int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, const unsigned char *input, unsigned char *output ) { + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char c; unsigned char ov[17]; @@ -1355,7 +1328,9 @@ int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, while( length-- ) { memcpy( ov, iv, 16 ); - mbedtls_aes_crypt_ecb( ctx, MBEDTLS_AES_ENCRYPT, iv, iv ); + ret = mbedtls_aes_crypt_ecb( ctx, MBEDTLS_AES_ENCRYPT, iv, iv ); + if( ret != 0 ) + goto exit; if( mode == MBEDTLS_AES_DECRYPT ) ov[16] = *input; @@ -1367,8 +1342,10 @@ int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, memcpy( iv, ov + 1, 16 ); } + ret = 0; - return( 0 ); +exit: + return( ret ); } #endif /* MBEDTLS_CIPHER_MODE_CFB */ @@ -1430,6 +1407,7 @@ int mbedtls_aes_crypt_ctr( mbedtls_aes_context *ctx, unsigned char *output ) { int c, i; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n; AES_VALIDATE_RET( ctx != NULL ); @@ -1447,7 +1425,9 @@ int mbedtls_aes_crypt_ctr( mbedtls_aes_context *ctx, while( length-- ) { if( n == 0 ) { - mbedtls_aes_crypt_ecb( ctx, MBEDTLS_AES_ENCRYPT, nonce_counter, stream_block ); + ret = mbedtls_aes_crypt_ecb( ctx, MBEDTLS_AES_ENCRYPT, nonce_counter, stream_block ); + if( ret != 0 ) + goto exit; for( i = 16; i > 0; i-- ) if( ++nonce_counter[i - 1] != 0 ) @@ -1460,8 +1440,10 @@ int mbedtls_aes_crypt_ctr( mbedtls_aes_context *ctx, } *nc_off = n; + ret = 0; - return( 0 ); +exit: + return( ret ); } #endif /* MBEDTLS_CIPHER_MODE_CTR */ @@ -1820,7 +1802,7 @@ int mbedtls_aes_self_test( int verbose ) mode = i & 1; if( verbose != 0 ) - mbedtls_printf( " AES-ECB-%3d (%s): ", keybits, + mbedtls_printf( " AES-ECB-%3u (%s): ", keybits, ( mode == MBEDTLS_AES_DECRYPT ) ? "dec" : "enc" ); memset( buf, 0, 16 ); @@ -1882,7 +1864,7 @@ int mbedtls_aes_self_test( int verbose ) mode = i & 1; if( verbose != 0 ) - mbedtls_printf( " AES-CBC-%3d (%s): ", keybits, + mbedtls_printf( " AES-CBC-%3u (%s): ", keybits, ( mode == MBEDTLS_AES_DECRYPT ) ? "dec" : "enc" ); memset( iv , 0, 16 ); @@ -1957,7 +1939,7 @@ int mbedtls_aes_self_test( int verbose ) mode = i & 1; if( verbose != 0 ) - mbedtls_printf( " AES-CFB128-%3d (%s): ", keybits, + mbedtls_printf( " AES-CFB128-%3u (%s): ", keybits, ( mode == MBEDTLS_AES_DECRYPT ) ? "dec" : "enc" ); memcpy( iv, aes_test_cfb128_iv, 16 ); @@ -2020,7 +2002,7 @@ int mbedtls_aes_self_test( int verbose ) mode = i & 1; if( verbose != 0 ) - mbedtls_printf( " AES-OFB-%3d (%s): ", keybits, + mbedtls_printf( " AES-OFB-%3u (%s): ", keybits, ( mode == MBEDTLS_AES_DECRYPT ) ? "dec" : "enc" ); memcpy( iv, aes_test_ofb_iv, 16 ); diff --git a/Externals/mbedtls/library/aesni.c b/Externals/mbedtls/library/aesni.c index 062708b047d8..996292ff6dc8 100644 --- a/Externals/mbedtls/library/aesni.c +++ b/Externals/mbedtls/library/aesni.c @@ -1,7 +1,7 @@ /* * AES-NI support functions * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -24,11 +22,7 @@ * [CLMUL-WP] http://software.intel.com/en-us/articles/intel-carry-less-multiplication-instruction-and-its-usage-for-computing-the-gcm-mode/ */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_AESNI_C) diff --git a/Externals/mbedtls/library/arc4.c b/Externals/mbedtls/library/arc4.c index b8998ac6cd76..b34dc5e7541e 100644 --- a/Externals/mbedtls/library/arc4.c +++ b/Externals/mbedtls/library/arc4.c @@ -1,7 +1,7 @@ /* * An implementation of the ARCFOUR algorithm * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The ARCFOUR algorithm was publicly disclosed on 94/09. @@ -24,11 +22,7 @@ * http://groups.google.com/group/sci.crypt/msg/10a300c9d21afca0 */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_ARC4_C) diff --git a/Externals/mbedtls/library/aria.c b/Externals/mbedtls/library/aria.c index aff66d667f1d..bc05c4a31962 100644 --- a/Externals/mbedtls/library/aria.c +++ b/Externals/mbedtls/library/aria.c @@ -1,7 +1,7 @@ /* * ARIA implementation * - * Copyright (C) 2006-2017, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -25,11 +23,7 @@ * [2] https://tools.ietf.org/html/rfc5794 */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_ARIA_C) @@ -61,29 +55,6 @@ #define ARIA_VALIDATE( cond ) \ MBEDTLS_INTERNAL_VALIDATE( cond ) -/* - * 32-bit integer manipulation macros (little endian) - */ -#ifndef GET_UINT32_LE -#define GET_UINT32_LE( n, b, i ) \ -{ \ - (n) = ( (uint32_t) (b)[(i) ] ) \ - | ( (uint32_t) (b)[(i) + 1] << 8 ) \ - | ( (uint32_t) (b)[(i) + 2] << 16 ) \ - | ( (uint32_t) (b)[(i) + 3] << 24 ); \ -} -#endif - -#ifndef PUT_UINT32_LE -#define PUT_UINT32_LE( n, b, i ) \ -{ \ - (b)[(i) ] = (unsigned char) ( ( (n) ) & 0xFF ); \ - (b)[(i) + 1] = (unsigned char) ( ( (n) >> 8 ) & 0xFF ); \ - (b)[(i) + 2] = (unsigned char) ( ( (n) >> 16 ) & 0xFF ); \ - (b)[(i) + 3] = (unsigned char) ( ( (n) >> 24 ) & 0xFF ); \ -} -#endif - /* * modify byte order: ( A B C D ) -> ( B A D C ), i.e. swap pairs of bytes * @@ -241,22 +212,22 @@ static inline void aria_sl( uint32_t *a, uint32_t *b, const uint8_t sa[256], const uint8_t sb[256], const uint8_t sc[256], const uint8_t sd[256] ) { - *a = ( (uint32_t) sa[ *a & 0xFF] ) ^ - (((uint32_t) sb[(*a >> 8) & 0xFF]) << 8) ^ - (((uint32_t) sc[(*a >> 16) & 0xFF]) << 16) ^ - (((uint32_t) sd[ *a >> 24 ]) << 24); - *b = ( (uint32_t) sa[ *b & 0xFF] ) ^ - (((uint32_t) sb[(*b >> 8) & 0xFF]) << 8) ^ - (((uint32_t) sc[(*b >> 16) & 0xFF]) << 16) ^ - (((uint32_t) sd[ *b >> 24 ]) << 24); - *c = ( (uint32_t) sa[ *c & 0xFF] ) ^ - (((uint32_t) sb[(*c >> 8) & 0xFF]) << 8) ^ - (((uint32_t) sc[(*c >> 16) & 0xFF]) << 16) ^ - (((uint32_t) sd[ *c >> 24 ]) << 24); - *d = ( (uint32_t) sa[ *d & 0xFF] ) ^ - (((uint32_t) sb[(*d >> 8) & 0xFF]) << 8) ^ - (((uint32_t) sc[(*d >> 16) & 0xFF]) << 16) ^ - (((uint32_t) sd[ *d >> 24 ]) << 24); + *a = ( (uint32_t) sa[ MBEDTLS_BYTE_0( *a ) ] ) ^ + (((uint32_t) sb[ MBEDTLS_BYTE_1( *a ) ]) << 8) ^ + (((uint32_t) sc[ MBEDTLS_BYTE_2( *a ) ]) << 16) ^ + (((uint32_t) sd[ MBEDTLS_BYTE_3( *a ) ]) << 24); + *b = ( (uint32_t) sa[ MBEDTLS_BYTE_0( *b ) ] ) ^ + (((uint32_t) sb[ MBEDTLS_BYTE_1( *b ) ]) << 8) ^ + (((uint32_t) sc[ MBEDTLS_BYTE_2( *b ) ]) << 16) ^ + (((uint32_t) sd[ MBEDTLS_BYTE_3( *b ) ]) << 24); + *c = ( (uint32_t) sa[ MBEDTLS_BYTE_0( *c ) ] ) ^ + (((uint32_t) sb[ MBEDTLS_BYTE_1( *c ) ]) << 8) ^ + (((uint32_t) sc[ MBEDTLS_BYTE_2( *c ) ]) << 16) ^ + (((uint32_t) sd[ MBEDTLS_BYTE_3( *c ) ]) << 24); + *d = ( (uint32_t) sa[ MBEDTLS_BYTE_0( *d ) ] ) ^ + (((uint32_t) sb[ MBEDTLS_BYTE_1( *d ) ]) << 8) ^ + (((uint32_t) sc[ MBEDTLS_BYTE_2( *d ) ]) << 16) ^ + (((uint32_t) sd[ MBEDTLS_BYTE_3( *d ) ]) << 24); } /* @@ -414,7 +385,8 @@ static void aria_fe_xor( uint32_t r[4], const uint32_t p[4], * Big endian 128-bit rotation: r = a ^ (b <<< n), used only in key setup. * * We chose to store bytes into 32-bit words in little-endian format (see - * GET/PUT_UINT32_LE) so we need to reverse bytes here. + * MBEDTLS_GET_UINT32_LE / MBEDTLS_PUT_UINT32_LE ) so we need to reverse + * bytes here. */ static void aria_rot128( uint32_t r[4], const uint32_t a[4], const uint32_t b[4], uint8_t n ) @@ -462,21 +434,21 @@ int mbedtls_aria_setkey_enc( mbedtls_aria_context *ctx, return( MBEDTLS_ERR_ARIA_BAD_INPUT_DATA ); /* Copy key to W0 (and potential remainder to W1) */ - GET_UINT32_LE( w[0][0], key, 0 ); - GET_UINT32_LE( w[0][1], key, 4 ); - GET_UINT32_LE( w[0][2], key, 8 ); - GET_UINT32_LE( w[0][3], key, 12 ); + w[0][0] = MBEDTLS_GET_UINT32_LE( key, 0 ); + w[0][1] = MBEDTLS_GET_UINT32_LE( key, 4 ); + w[0][2] = MBEDTLS_GET_UINT32_LE( key, 8 ); + w[0][3] = MBEDTLS_GET_UINT32_LE( key, 12 ); memset( w[1], 0, 16 ); if( keybits >= 192 ) { - GET_UINT32_LE( w[1][0], key, 16 ); // 192 bit key - GET_UINT32_LE( w[1][1], key, 20 ); + w[1][0] = MBEDTLS_GET_UINT32_LE( key, 16 ); // 192 bit key + w[1][1] = MBEDTLS_GET_UINT32_LE( key, 20 ); } if( keybits == 256 ) { - GET_UINT32_LE( w[1][2], key, 24 ); // 256 bit key - GET_UINT32_LE( w[1][3], key, 28 ); + w[1][2] = MBEDTLS_GET_UINT32_LE( key, 24 ); // 256 bit key + w[1][3] = MBEDTLS_GET_UINT32_LE( key, 28 ); } i = ( keybits - 128 ) >> 6; // index: 0, 1, 2 @@ -553,10 +525,10 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, ARIA_VALIDATE_RET( input != NULL ); ARIA_VALIDATE_RET( output != NULL ); - GET_UINT32_LE( a, input, 0 ); - GET_UINT32_LE( b, input, 4 ); - GET_UINT32_LE( c, input, 8 ); - GET_UINT32_LE( d, input, 12 ); + a = MBEDTLS_GET_UINT32_LE( input, 0 ); + b = MBEDTLS_GET_UINT32_LE( input, 4 ); + c = MBEDTLS_GET_UINT32_LE( input, 8 ); + d = MBEDTLS_GET_UINT32_LE( input, 12 ); i = 0; while( 1 ) @@ -588,10 +560,10 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, c ^= ctx->rk[i][2]; d ^= ctx->rk[i][3]; - PUT_UINT32_LE( a, output, 0 ); - PUT_UINT32_LE( b, output, 4 ); - PUT_UINT32_LE( c, output, 8 ); - PUT_UINT32_LE( d, output, 12 ); + MBEDTLS_PUT_UINT32_LE( a, output, 0 ); + MBEDTLS_PUT_UINT32_LE( b, output, 4 ); + MBEDTLS_PUT_UINT32_LE( c, output, 8 ); + MBEDTLS_PUT_UINT32_LE( d, output, 12 ); return( 0 ); } @@ -927,7 +899,7 @@ static const uint8_t aria_test2_ctr_ct[3][48] = // CTR ciphertext { \ if( verbose ) \ mbedtls_printf( "failed\n" ); \ - return( 1 ); \ + goto exit; \ } else { \ if( verbose ) \ mbedtls_printf( "passed\n" ); \ @@ -941,6 +913,7 @@ int mbedtls_aria_self_test( int verbose ) int i; uint8_t blk[MBEDTLS_ARIA_BLOCKSIZE]; mbedtls_aria_context ctx; + int ret = 1; #if (defined(MBEDTLS_CIPHER_MODE_CFB) || defined(MBEDTLS_CIPHER_MODE_CTR)) size_t j; @@ -952,6 +925,8 @@ int mbedtls_aria_self_test( int verbose ) uint8_t buf[48], iv[MBEDTLS_ARIA_BLOCKSIZE]; #endif + mbedtls_aria_init( &ctx ); + /* * Test set 1 */ @@ -1071,7 +1046,11 @@ int mbedtls_aria_self_test( int verbose ) mbedtls_printf( "\n" ); #endif /* MBEDTLS_CIPHER_MODE_CTR */ - return( 0 ); + ret = 0; + +exit: + mbedtls_aria_free( &ctx ); + return( ret ); } #endif /* MBEDTLS_SELF_TEST */ diff --git a/Externals/mbedtls/library/asn1parse.c b/Externals/mbedtls/library/asn1parse.c index 171c340b8c8d..22747d3ba4f0 100644 --- a/Externals/mbedtls/library/asn1parse.c +++ b/Externals/mbedtls/library/asn1parse.c @@ -1,7 +1,7 @@ /* * Generic ASN.1 parsing * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,20 +15,15 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_ASN1_PARSE_C) #include "mbedtls/asn1.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -124,7 +119,7 @@ int mbedtls_asn1_get_bool( unsigned char **p, const unsigned char *end, int *val ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_BOOLEAN ) ) != 0 ) @@ -139,21 +134,41 @@ int mbedtls_asn1_get_bool( unsigned char **p, return( 0 ); } -int mbedtls_asn1_get_int( unsigned char **p, - const unsigned char *end, - int *val ) +static int asn1_get_tagged_int( unsigned char **p, + const unsigned char *end, + int tag, int *val ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; - if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_INTEGER ) ) != 0 ) + if( ( ret = mbedtls_asn1_get_tag( p, end, &len, tag ) ) != 0 ) return( ret ); - if( len == 0 || len > sizeof( int ) || ( **p & 0x80 ) != 0 ) + /* + * len==0 is malformed (0 must be represented as 020100 for INTEGER, + * or 0A0100 for ENUMERATED tags + */ + if( len == 0 ) + return( MBEDTLS_ERR_ASN1_INVALID_LENGTH ); + /* This is a cryptography library. Reject negative integers. */ + if( ( **p & 0x80 ) != 0 ) return( MBEDTLS_ERR_ASN1_INVALID_LENGTH ); - *val = 0; + /* Skip leading zeros. */ + while( len > 0 && **p == 0 ) + { + ++( *p ); + --len; + } + /* Reject integers that don't fit in an int. This code assumes that + * the int type has no padding bit. */ + if( len > sizeof( int ) ) + return( MBEDTLS_ERR_ASN1_INVALID_LENGTH ); + if( len == sizeof( int ) && ( **p & 0x80 ) != 0 ) + return( MBEDTLS_ERR_ASN1_INVALID_LENGTH ); + + *val = 0; while( len-- > 0 ) { *val = ( *val << 8 ) | **p; @@ -163,12 +178,26 @@ int mbedtls_asn1_get_int( unsigned char **p, return( 0 ); } +int mbedtls_asn1_get_int( unsigned char **p, + const unsigned char *end, + int *val ) +{ + return( asn1_get_tagged_int( p, end, MBEDTLS_ASN1_INTEGER, val) ); +} + +int mbedtls_asn1_get_enum( unsigned char **p, + const unsigned char *end, + int *val ) +{ + return( asn1_get_tagged_int( p, end, MBEDTLS_ASN1_ENUMERATED, val) ); +} + #if defined(MBEDTLS_BIGNUM_C) int mbedtls_asn1_get_mpi( unsigned char **p, const unsigned char *end, mbedtls_mpi *X ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_INTEGER ) ) != 0 ) @@ -185,7 +214,7 @@ int mbedtls_asn1_get_mpi( unsigned char **p, int mbedtls_asn1_get_bitstring( unsigned char **p, const unsigned char *end, mbedtls_asn1_bitstring *bs) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; /* Certificate type is a single byte bitstring */ if( ( ret = mbedtls_asn1_get_tag( p, end, &bs->len, MBEDTLS_ASN1_BIT_STRING ) ) != 0 ) @@ -213,82 +242,145 @@ int mbedtls_asn1_get_bitstring( unsigned char **p, const unsigned char *end, } /* - * Get a bit string without unused bits + * Traverse an ASN.1 "SEQUENCE OF " + * and call a callback for each entry found. */ -int mbedtls_asn1_get_bitstring_null( unsigned char **p, const unsigned char *end, - size_t *len ) -{ - int ret; - - if( ( ret = mbedtls_asn1_get_tag( p, end, len, MBEDTLS_ASN1_BIT_STRING ) ) != 0 ) - return( ret ); - - if( (*len)-- < 2 || *(*p)++ != 0 ) - return( MBEDTLS_ERR_ASN1_INVALID_DATA ); - - return( 0 ); -} - - - -/* - * Parses and splits an ASN.1 "SEQUENCE OF " - */ -int mbedtls_asn1_get_sequence_of( unsigned char **p, - const unsigned char *end, - mbedtls_asn1_sequence *cur, - int tag) +int mbedtls_asn1_traverse_sequence_of( + unsigned char **p, + const unsigned char *end, + unsigned char tag_must_mask, unsigned char tag_must_val, + unsigned char tag_may_mask, unsigned char tag_may_val, + int (*cb)( void *ctx, int tag, + unsigned char *start, size_t len ), + void *ctx ) { int ret; size_t len; - mbedtls_asn1_buf *buf; /* Get main sequence tag */ if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) + { return( ret ); + } if( *p + len != end ) return( MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); while( *p < end ) { - buf = &(cur->buf); - buf->tag = **p; + unsigned char const tag = *(*p)++; - if( ( ret = mbedtls_asn1_get_tag( p, end, &buf->len, tag ) ) != 0 ) - return( ret ); + if( ( tag & tag_must_mask ) != tag_must_val ) + return( MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ); - buf->p = *p; - *p += buf->len; + if( ( ret = mbedtls_asn1_get_len( p, end, &len ) ) != 0 ) + return( ret ); - /* Allocate and assign next pointer */ - if( *p < end ) + if( ( tag & tag_may_mask ) == tag_may_val ) { - cur->next = (mbedtls_asn1_sequence*)mbedtls_calloc( 1, - sizeof( mbedtls_asn1_sequence ) ); + if( cb != NULL ) + { + ret = cb( ctx, tag, *p, len ); + if( ret != 0 ) + return( ret ); + } + } - if( cur->next == NULL ) - return( MBEDTLS_ERR_ASN1_ALLOC_FAILED ); + *p += len; + } - cur = cur->next; - } + return( 0 ); +} + +/* + * Get a bit string without unused bits + */ +int mbedtls_asn1_get_bitstring_null( unsigned char **p, const unsigned char *end, + size_t *len ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + if( ( ret = mbedtls_asn1_get_tag( p, end, len, MBEDTLS_ASN1_BIT_STRING ) ) != 0 ) + return( ret ); + + if( *len == 0 ) + return( MBEDTLS_ERR_ASN1_INVALID_DATA ); + --( *len ); + + if( **p != 0 ) + return( MBEDTLS_ERR_ASN1_INVALID_DATA ); + ++( *p ); + + return( 0 ); +} + +void mbedtls_asn1_sequence_free( mbedtls_asn1_sequence *seq ) +{ + while( seq != NULL ) + { + mbedtls_asn1_sequence *next = seq->next; + mbedtls_platform_zeroize( seq, sizeof( *seq ) ); + mbedtls_free( seq ); + seq = next; } +} - /* Set final sequence entry's next pointer to NULL */ - cur->next = NULL; +typedef struct +{ + int tag; + mbedtls_asn1_sequence *cur; +} asn1_get_sequence_of_cb_ctx_t; + +static int asn1_get_sequence_of_cb( void *ctx, + int tag, + unsigned char *start, + size_t len ) +{ + asn1_get_sequence_of_cb_ctx_t *cb_ctx = + (asn1_get_sequence_of_cb_ctx_t *) ctx; + mbedtls_asn1_sequence *cur = + cb_ctx->cur; - if( *p != end ) - return( MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + if( cur->buf.p != NULL ) + { + cur->next = + mbedtls_calloc( 1, sizeof( mbedtls_asn1_sequence ) ); + + if( cur->next == NULL ) + return( MBEDTLS_ERR_ASN1_ALLOC_FAILED ); + + cur = cur->next; + } + + cur->buf.p = start; + cur->buf.len = len; + cur->buf.tag = tag; + cb_ctx->cur = cur; return( 0 ); } +/* + * Parses and splits an ASN.1 "SEQUENCE OF " + */ +int mbedtls_asn1_get_sequence_of( unsigned char **p, + const unsigned char *end, + mbedtls_asn1_sequence *cur, + int tag) +{ + asn1_get_sequence_of_cb_ctx_t cb_ctx = { tag, cur }; + memset( cur, 0, sizeof( mbedtls_asn1_sequence ) ); + return( mbedtls_asn1_traverse_sequence_of( + p, end, 0xFF, tag, 0, 0, + asn1_get_sequence_of_cb, &cb_ctx ) ); +} + int mbedtls_asn1_get_alg( unsigned char **p, const unsigned char *end, mbedtls_asn1_buf *alg, mbedtls_asn1_buf *params ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; if( ( ret = mbedtls_asn1_get_tag( p, end, &len, @@ -332,7 +424,7 @@ int mbedtls_asn1_get_alg_null( unsigned char **p, const unsigned char *end, mbedtls_asn1_buf *alg ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_asn1_buf params; memset( ¶ms, 0, sizeof(mbedtls_asn1_buf) ); diff --git a/Externals/mbedtls/library/asn1write.c b/Externals/mbedtls/library/asn1write.c index c0b4622d58d8..3811ef27a3ff 100644 --- a/Externals/mbedtls/library/asn1write.c +++ b/Externals/mbedtls/library/asn1write.c @@ -1,7 +1,7 @@ /* * ASN.1 buffer writing functionality * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,19 +15,14 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_ASN1_WRITE_C) #include "mbedtls/asn1write.h" +#include "mbedtls/error.h" #include @@ -65,8 +60,8 @@ int mbedtls_asn1_write_len( unsigned char **p, unsigned char *start, size_t len if( *p - start < 3 ) return( MBEDTLS_ERR_ASN1_BUF_TOO_SMALL ); - *--(*p) = ( len ) & 0xFF; - *--(*p) = ( len >> 8 ) & 0xFF; + *--(*p) = MBEDTLS_BYTE_0( len ); + *--(*p) = MBEDTLS_BYTE_1( len ); *--(*p) = 0x82; return( 3 ); } @@ -76,9 +71,9 @@ int mbedtls_asn1_write_len( unsigned char **p, unsigned char *start, size_t len if( *p - start < 4 ) return( MBEDTLS_ERR_ASN1_BUF_TOO_SMALL ); - *--(*p) = ( len ) & 0xFF; - *--(*p) = ( len >> 8 ) & 0xFF; - *--(*p) = ( len >> 16 ) & 0xFF; + *--(*p) = MBEDTLS_BYTE_0( len ); + *--(*p) = MBEDTLS_BYTE_1( len ); + *--(*p) = MBEDTLS_BYTE_2( len ); *--(*p) = 0x83; return( 4 ); } @@ -90,10 +85,10 @@ int mbedtls_asn1_write_len( unsigned char **p, unsigned char *start, size_t len if( *p - start < 5 ) return( MBEDTLS_ERR_ASN1_BUF_TOO_SMALL ); - *--(*p) = ( len ) & 0xFF; - *--(*p) = ( len >> 8 ) & 0xFF; - *--(*p) = ( len >> 16 ) & 0xFF; - *--(*p) = ( len >> 24 ) & 0xFF; + *--(*p) = MBEDTLS_BYTE_0( len ); + *--(*p) = MBEDTLS_BYTE_1( len ); + *--(*p) = MBEDTLS_BYTE_2( len ); + *--(*p) = MBEDTLS_BYTE_3( len ); *--(*p) = 0x84; return( 5 ); } @@ -131,7 +126,7 @@ int mbedtls_asn1_write_raw_buffer( unsigned char **p, unsigned char *start, #if defined(MBEDTLS_BIGNUM_C) int mbedtls_asn1_write_mpi( unsigned char **p, unsigned char *start, const mbedtls_mpi *X ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; // Write the MPI @@ -168,7 +163,7 @@ int mbedtls_asn1_write_mpi( unsigned char **p, unsigned char *start, const mbedt int mbedtls_asn1_write_null( unsigned char **p, unsigned char *start ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; // Write NULL @@ -182,7 +177,7 @@ int mbedtls_asn1_write_null( unsigned char **p, unsigned char *start ) int mbedtls_asn1_write_oid( unsigned char **p, unsigned char *start, const char *oid, size_t oid_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_raw_buffer( p, start, @@ -197,7 +192,7 @@ int mbedtls_asn1_write_algorithm_identifier( unsigned char **p, unsigned char *s const char *oid, size_t oid_len, size_t par_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; if( par_len == 0 ) @@ -216,7 +211,7 @@ int mbedtls_asn1_write_algorithm_identifier( unsigned char **p, unsigned char *s int mbedtls_asn1_write_bool( unsigned char **p, unsigned char *start, int boolean ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; if( *p - start < 1 ) @@ -231,36 +226,49 @@ int mbedtls_asn1_write_bool( unsigned char **p, unsigned char *start, int boolea return( (int) len ); } -int mbedtls_asn1_write_int( unsigned char **p, unsigned char *start, int val ) +static int asn1_write_tagged_int( unsigned char **p, unsigned char *start, int val, int tag ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; - if( *p - start < 1 ) - return( MBEDTLS_ERR_ASN1_BUF_TOO_SMALL ); - - len += 1; - *--(*p) = val; - - if( val > 0 && **p & 0x80 ) + do { if( *p - start < 1 ) return( MBEDTLS_ERR_ASN1_BUF_TOO_SMALL ); + len += 1; + *--(*p) = val & 0xff; + val >>= 8; + } + while( val > 0 ); + if( **p & 0x80 ) + { + if( *p - start < 1 ) + return( MBEDTLS_ERR_ASN1_BUF_TOO_SMALL ); *--(*p) = 0x00; len += 1; } MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( p, start, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, MBEDTLS_ASN1_INTEGER ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, tag ) ); return( (int) len ); } +int mbedtls_asn1_write_int( unsigned char **p, unsigned char *start, int val ) +{ + return( asn1_write_tagged_int( p, start, val, MBEDTLS_ASN1_INTEGER ) ); +} + +int mbedtls_asn1_write_enum( unsigned char **p, unsigned char *start, int val ) +{ + return( asn1_write_tagged_int( p, start, val, MBEDTLS_ASN1_ENUMERATED ) ); +} + int mbedtls_asn1_write_tagged_string( unsigned char **p, unsigned char *start, int tag, const char *text, size_t text_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_raw_buffer( p, start, @@ -290,10 +298,53 @@ int mbedtls_asn1_write_ia5_string( unsigned char **p, unsigned char *start, return( mbedtls_asn1_write_tagged_string(p, start, MBEDTLS_ASN1_IA5_STRING, text, text_len) ); } +int mbedtls_asn1_write_named_bitstring( unsigned char **p, + unsigned char *start, + const unsigned char *buf, + size_t bits ) +{ + size_t unused_bits, byte_len; + const unsigned char *cur_byte; + unsigned char cur_byte_shifted; + unsigned char bit; + + byte_len = ( bits + 7 ) / 8; + unused_bits = ( byte_len * 8 ) - bits; + + /* + * Named bitstrings require that trailing 0s are excluded in the encoding + * of the bitstring. Trailing 0s are considered part of the 'unused' bits + * when encoding this value in the first content octet + */ + if( bits != 0 ) + { + cur_byte = buf + byte_len - 1; + cur_byte_shifted = *cur_byte >> unused_bits; + + for( ; ; ) + { + bit = cur_byte_shifted & 0x1; + cur_byte_shifted >>= 1; + + if( bit != 0 ) + break; + + bits--; + if( bits == 0 ) + break; + + if( bits % 8 == 0 ) + cur_byte_shifted = *--cur_byte; + } + } + + return( mbedtls_asn1_write_bitstring( p, start, buf, bits ) ); +} + int mbedtls_asn1_write_bitstring( unsigned char **p, unsigned char *start, const unsigned char *buf, size_t bits ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; size_t unused_bits, byte_len; @@ -326,7 +377,7 @@ int mbedtls_asn1_write_bitstring( unsigned char **p, unsigned char *start, int mbedtls_asn1_write_octet_string( unsigned char **p, unsigned char *start, const unsigned char *buf, size_t size ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_raw_buffer( p, start, buf, size ) ); @@ -386,18 +437,26 @@ mbedtls_asn1_named_data *mbedtls_asn1_store_named_data( memcpy( cur->oid.p, oid, oid_len ); cur->val.len = val_len; - cur->val.p = mbedtls_calloc( 1, val_len ); - if( cur->val.p == NULL ) + if( val_len != 0 ) { - mbedtls_free( cur->oid.p ); - mbedtls_free( cur ); - return( NULL ); + cur->val.p = mbedtls_calloc( 1, val_len ); + if( cur->val.p == NULL ) + { + mbedtls_free( cur->oid.p ); + mbedtls_free( cur ); + return( NULL ); + } } cur->next = *head; *head = cur; } - else if( cur->val.len < val_len ) + else if( val_len == 0 ) + { + mbedtls_free( cur->val.p ); + cur->val.p = NULL; + } + else if( cur->val.len != val_len ) { /* * Enlarge existing value buffer if needed diff --git a/Externals/mbedtls/library/base64.c b/Externals/mbedtls/library/base64.c index f06b57b31fcd..83daa0bcc67f 100644 --- a/Externals/mbedtls/library/base64.c +++ b/Externals/mbedtls/library/base64.c @@ -1,7 +1,7 @@ /* * RFC 1521 base64 encoding/decoding * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,19 +15,14 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_BASE64_C) #include "mbedtls/base64.h" +#include "constant_time_internal.h" #include @@ -41,34 +36,6 @@ #endif /* MBEDTLS_PLATFORM_C */ #endif /* MBEDTLS_SELF_TEST */ -static const unsigned char base64_enc_map[64] = -{ - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', - 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', - 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', - 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', - 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', - 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', '+', '/' -}; - -static const unsigned char base64_dec_map[128] = -{ - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 62, 127, 127, 127, 63, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 127, 127, - 127, 64, 127, 127, 127, 0, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 127, 127, 127, 127, 127, 127, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 127, 127, 127, 127, 127 -}; - #define BASE64_SIZE_T_MAX ( (size_t) -1 ) /* SIZE_T_MAX is not standard */ /* @@ -111,10 +78,12 @@ int mbedtls_base64_encode( unsigned char *dst, size_t dlen, size_t *olen, C2 = *src++; C3 = *src++; - *p++ = base64_enc_map[(C1 >> 2) & 0x3F]; - *p++ = base64_enc_map[(((C1 & 3) << 4) + (C2 >> 4)) & 0x3F]; - *p++ = base64_enc_map[(((C2 & 15) << 2) + (C3 >> 6)) & 0x3F]; - *p++ = base64_enc_map[C3 & 0x3F]; + *p++ = mbedtls_ct_base64_enc_char( ( C1 >> 2 ) & 0x3F ); + *p++ = mbedtls_ct_base64_enc_char( ( ( ( C1 & 3 ) << 4 ) + ( C2 >> 4 ) ) + & 0x3F ); + *p++ = mbedtls_ct_base64_enc_char( ( ( ( C2 & 15 ) << 2 ) + ( C3 >> 6 ) ) + & 0x3F ); + *p++ = mbedtls_ct_base64_enc_char( C3 & 0x3F ); } if( i < slen ) @@ -122,11 +91,12 @@ int mbedtls_base64_encode( unsigned char *dst, size_t dlen, size_t *olen, C1 = *src++; C2 = ( ( i + 1 ) < slen ) ? *src++ : 0; - *p++ = base64_enc_map[(C1 >> 2) & 0x3F]; - *p++ = base64_enc_map[(((C1 & 3) << 4) + (C2 >> 4)) & 0x3F]; + *p++ = mbedtls_ct_base64_enc_char( ( C1 >> 2 ) & 0x3F ); + *p++ = mbedtls_ct_base64_enc_char( ( ( ( C1 & 3 ) << 4 ) + ( C2 >> 4 ) ) + & 0x3F ); if( ( i + 1 ) < slen ) - *p++ = base64_enc_map[((C2 & 15) << 2) & 0x3F]; + *p++ = mbedtls_ct_base64_enc_char( ( ( C2 & 15 ) << 2 ) & 0x3F ); else *p++ = '='; *p++ = '='; @@ -144,19 +114,23 @@ int mbedtls_base64_encode( unsigned char *dst, size_t dlen, size_t *olen, int mbedtls_base64_decode( unsigned char *dst, size_t dlen, size_t *olen, const unsigned char *src, size_t slen ) { - size_t i, n; - uint32_t j, x; + size_t i; /* index in source */ + size_t n; /* number of digits or trailing = in source */ + uint32_t x; /* value accumulator */ + unsigned accumulated_digits = 0; + unsigned equals = 0; + int spaces_present = 0; unsigned char *p; /* First pass: check for validity and get output length */ - for( i = n = j = 0; i < slen; i++ ) + for( i = n = 0; i < slen; i++ ) { /* Skip spaces before checking for EOL */ - x = 0; + spaces_present = 0; while( i < slen && src[i] == ' ' ) { ++i; - ++x; + spaces_present = 1; } /* Spaces at end of buffer are OK */ @@ -171,18 +145,24 @@ int mbedtls_base64_decode( unsigned char *dst, size_t dlen, size_t *olen, continue; /* Space inside a line is an error */ - if( x != 0 ) + if( spaces_present ) return( MBEDTLS_ERR_BASE64_INVALID_CHARACTER ); - if( src[i] == '=' && ++j > 2 ) - return( MBEDTLS_ERR_BASE64_INVALID_CHARACTER ); - - if( src[i] > 127 || base64_dec_map[src[i]] == 127 ) - return( MBEDTLS_ERR_BASE64_INVALID_CHARACTER ); - - if( base64_dec_map[src[i]] < 64 && j != 0 ) + if( src[i] > 127 ) return( MBEDTLS_ERR_BASE64_INVALID_CHARACTER ); + if( src[i] == '=' ) + { + if( ++equals > 2 ) + return( MBEDTLS_ERR_BASE64_INVALID_CHARACTER ); + } + else + { + if( equals != 0 ) + return( MBEDTLS_ERR_BASE64_INVALID_CHARACTER ); + if( mbedtls_ct_base64_dec_value( src[i] ) < 0 ) + return( MBEDTLS_ERR_BASE64_INVALID_CHARACTER ); + } n++; } @@ -197,7 +177,7 @@ int mbedtls_base64_decode( unsigned char *dst, size_t dlen, size_t *olen, * n = ( ( n * 6 ) + 7 ) >> 3; */ n = ( 6 * ( n >> 3 ) ) + ( ( 6 * ( n & 0x7 ) + 7 ) >> 3 ); - n -= j; + n -= equals; if( dst == NULL || dlen < n ) { @@ -205,20 +185,24 @@ int mbedtls_base64_decode( unsigned char *dst, size_t dlen, size_t *olen, return( MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL ); } - for( j = 3, n = x = 0, p = dst; i > 0; i--, src++ ) - { + equals = 0; + for( x = 0, p = dst; i > 0; i--, src++ ) + { if( *src == '\r' || *src == '\n' || *src == ' ' ) continue; - j -= ( base64_dec_map[*src] == 64 ); - x = ( x << 6 ) | ( base64_dec_map[*src] & 0x3F ); + x = x << 6; + if( *src == '=' ) + ++equals; + else + x |= mbedtls_ct_base64_dec_value( *src ); - if( ++n == 4 ) + if( ++accumulated_digits == 4 ) { - n = 0; - if( j > 0 ) *p++ = (unsigned char)( x >> 16 ); - if( j > 1 ) *p++ = (unsigned char)( x >> 8 ); - if( j > 2 ) *p++ = (unsigned char)( x ); + accumulated_digits = 0; + *p++ = MBEDTLS_BYTE_2( x ); + if( equals <= 1 ) *p++ = MBEDTLS_BYTE_1( x ); + if( equals <= 0 ) *p++ = MBEDTLS_BYTE_0( x ); } } diff --git a/Externals/mbedtls/library/bignum.c b/Externals/mbedtls/library/bignum.c index 87015af0c8d1..62e7f76727f5 100644 --- a/Externals/mbedtls/library/bignum.c +++ b/Externals/mbedtls/library/bignum.c @@ -1,7 +1,7 @@ /* * Multi-precision integer library * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -35,18 +33,17 @@ * */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_BIGNUM_C) #include "mbedtls/bignum.h" #include "mbedtls/bn_mul.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" +#include "constant_time_internal.h" +#include #include #if defined(MBEDTLS_PLATFORM_C) @@ -157,9 +154,10 @@ int mbedtls_mpi_shrink( mbedtls_mpi *X, size_t nblimbs ) if( nblimbs > MBEDTLS_MPI_MAX_LIMBS ) return( MBEDTLS_ERR_MPI_ALLOC_FAILED ); - /* Actually resize up in this case */ + /* Actually resize up if there are currently fewer than nblimbs limbs. */ if( X->n <= nblimbs ) return( mbedtls_mpi_grow( X, nblimbs ) ); + /* After this point, then X->n > nblimbs and in particular X->n > 0. */ for( i = X->n - 1; i > 0; i-- ) if( X->p[i] != 0 ) @@ -185,8 +183,35 @@ int mbedtls_mpi_shrink( mbedtls_mpi *X, size_t nblimbs ) return( 0 ); } +/* Resize X to have exactly n limbs and set it to 0. */ +static int mbedtls_mpi_resize_clear( mbedtls_mpi *X, size_t limbs ) +{ + if( limbs == 0 ) + { + mbedtls_mpi_free( X ); + return( 0 ); + } + else if( X->n == limbs ) + { + memset( X->p, 0, limbs * ciL ); + X->s = 1; + return( 0 ); + } + else + { + mbedtls_mpi_free( X ); + return( mbedtls_mpi_grow( X, limbs ) ); + } +} + /* - * Copy the contents of Y into X + * Copy the contents of Y into X. + * + * This function is not constant-time. Leading zeros in Y may be removed. + * + * Ensure that X does not shrink. This is not guaranteed by the public API, + * but some code in the bignum module relies on this property, for example + * in mbedtls_mpi_exp_mod(). */ int mbedtls_mpi_copy( mbedtls_mpi *X, const mbedtls_mpi *Y ) { @@ -198,9 +223,13 @@ int mbedtls_mpi_copy( mbedtls_mpi *X, const mbedtls_mpi *Y ) if( X == Y ) return( 0 ); - if( Y->p == NULL ) + if( Y->n == 0 ) { - mbedtls_mpi_free( X ); + if( X->n != 0 ) + { + X->s = 1; + memset( X->p, 0, X->n * ciL ); + } return( 0 ); } @@ -241,80 +270,12 @@ void mbedtls_mpi_swap( mbedtls_mpi *X, mbedtls_mpi *Y ) memcpy( Y, &T, sizeof( mbedtls_mpi ) ); } -/* - * Conditionally assign X = Y, without leaking information - * about whether the assignment was made or not. - * (Leaking information about the respective sizes of X and Y is ok however.) - */ -int mbedtls_mpi_safe_cond_assign( mbedtls_mpi *X, const mbedtls_mpi *Y, unsigned char assign ) -{ - int ret = 0; - size_t i; - MPI_VALIDATE_RET( X != NULL ); - MPI_VALIDATE_RET( Y != NULL ); - - /* make sure assign is 0 or 1 in a time-constant manner */ - assign = (assign | (unsigned char)-assign) >> 7; - - MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, Y->n ) ); - - X->s = X->s * ( 1 - assign ) + Y->s * assign; - - for( i = 0; i < Y->n; i++ ) - X->p[i] = X->p[i] * ( 1 - assign ) + Y->p[i] * assign; - - for( ; i < X->n; i++ ) - X->p[i] *= ( 1 - assign ); - -cleanup: - return( ret ); -} - -/* - * Conditionally swap X and Y, without leaking information - * about whether the swap was made or not. - * Here it is not ok to simply swap the pointers, which whould lead to - * different memory access patterns when X and Y are used afterwards. - */ -int mbedtls_mpi_safe_cond_swap( mbedtls_mpi *X, mbedtls_mpi *Y, unsigned char swap ) -{ - int ret, s; - size_t i; - mbedtls_mpi_uint tmp; - MPI_VALIDATE_RET( X != NULL ); - MPI_VALIDATE_RET( Y != NULL ); - - if( X == Y ) - return( 0 ); - - /* make sure swap is 0 or 1 in a time-constant manner */ - swap = (swap | (unsigned char)-swap) >> 7; - - MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, Y->n ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_grow( Y, X->n ) ); - - s = X->s; - X->s = X->s * ( 1 - swap ) + Y->s * swap; - Y->s = Y->s * ( 1 - swap ) + s * swap; - - - for( i = 0; i < X->n; i++ ) - { - tmp = X->p[i]; - X->p[i] = X->p[i] * ( 1 - swap ) + Y->p[i] * swap; - Y->p[i] = Y->p[i] * ( 1 - swap ) + tmp * swap; - } - -cleanup: - return( ret ); -} - /* * Set value from integer */ int mbedtls_mpi_lset( mbedtls_mpi *X, mbedtls_mpi_sint z ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; MPI_VALIDATE_RET( X != NULL ); MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, 1 ) ); @@ -457,8 +418,9 @@ static int mpi_get_digit( mbedtls_mpi_uint *d, int radix, char c ) */ int mbedtls_mpi_read_string( mbedtls_mpi *X, int radix, const char *s ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i, j, slen, n; + int sign = 1; mbedtls_mpi_uint d; mbedtls_mpi T; MPI_VALIDATE_RET( X != NULL ); @@ -469,6 +431,18 @@ int mbedtls_mpi_read_string( mbedtls_mpi *X, int radix, const char *s ) mbedtls_mpi_init( &T ); + if( s[0] == 0 ) + { + mbedtls_mpi_free( X ); + return( 0 ); + } + + if( s[0] == '-' ) + { + ++s; + sign = -1; + } + slen = strlen( s ); if( radix == 16 ) @@ -483,12 +457,6 @@ int mbedtls_mpi_read_string( mbedtls_mpi *X, int radix, const char *s ) for( i = slen, j = 0; i > 0; i--, j++ ) { - if( i == 1 && s[i - 1] == '-' ) - { - X->s = -1; - break; - } - MBEDTLS_MPI_CHK( mpi_get_digit( &d, radix, s[i - 1] ) ); X->p[j / ( 2 * ciL )] |= d << ( ( j % ( 2 * ciL ) ) << 2 ); } @@ -499,26 +467,15 @@ int mbedtls_mpi_read_string( mbedtls_mpi *X, int radix, const char *s ) for( i = 0; i < slen; i++ ) { - if( i == 0 && s[i] == '-' ) - { - X->s = -1; - continue; - } - MBEDTLS_MPI_CHK( mpi_get_digit( &d, radix, s[i] ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mul_int( &T, X, radix ) ); - - if( X->s == 1 ) - { - MBEDTLS_MPI_CHK( mbedtls_mpi_add_int( X, &T, d ) ); - } - else - { - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( X, &T, d ) ); - } + MBEDTLS_MPI_CHK( mbedtls_mpi_add_int( X, &T, d ) ); } } + if( sign < 0 && mbedtls_mpi_bitlen( X ) != 0 ) + X->s = -1; + cleanup: mbedtls_mpi_free( &T ); @@ -532,7 +489,7 @@ int mbedtls_mpi_read_string( mbedtls_mpi *X, int radix, const char *s ) static int mpi_write_hlp( mbedtls_mpi *X, int radix, char **p, const size_t buflen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_mpi_uint r; size_t length = 0; char *p_end = *p + buflen; @@ -582,15 +539,20 @@ int mbedtls_mpi_write_string( const mbedtls_mpi *X, int radix, if( radix < 2 || radix > 16 ) return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); - n = mbedtls_mpi_bitlen( X ); - if( radix >= 4 ) n >>= 1; - if( radix >= 16 ) n >>= 1; - /* - * Round up the buffer length to an even value to ensure that there is - * enough room for hexadecimal values that can be represented in an odd - * number of digits. - */ - n += 3 + ( ( n + 1 ) & 1 ); + n = mbedtls_mpi_bitlen( X ); /* Number of bits necessary to present `n`. */ + if( radix >= 4 ) n >>= 1; /* Number of 4-adic digits necessary to present + * `n`. If radix > 4, this might be a strict + * overapproximation of the number of + * radix-adic digits needed to present `n`. */ + if( radix >= 16 ) n >>= 1; /* Number of hexadecimal digits necessary to + * present `n`. */ + + n += 1; /* Terminating null byte */ + n += 1; /* Compensate for the divisions above, which round down `n` + * in case it's not even. */ + n += 1; /* Potential '-'-sign. */ + n += ( n & 1 ); /* Make n even to have enough space for hexadecimal writing, + * which always uses an even number of hex-digits. */ if( buflen < n ) { @@ -602,7 +564,10 @@ int mbedtls_mpi_write_string( const mbedtls_mpi *X, int radix, mbedtls_mpi_init( &T ); if( X->s == -1 ) + { *p++ = '-'; + buflen--; + } if( radix == 16 ) { @@ -689,7 +654,7 @@ int mbedtls_mpi_read_file( mbedtls_mpi *X, int radix, FILE *fin ) */ int mbedtls_mpi_write_file( const char *p, const mbedtls_mpi *X, int radix, FILE *fout ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n, slen, plen; /* * Buffer should have space for (short) label and decimal formatted MPI, @@ -734,10 +699,15 @@ int mbedtls_mpi_write_file( const char *p, const mbedtls_mpi *X, int radix, FILE static mbedtls_mpi_uint mpi_uint_bigendian_to_host_c( mbedtls_mpi_uint x ) { uint8_t i; + unsigned char *x_ptr; mbedtls_mpi_uint tmp = 0; - /* This works regardless of the endianness. */ - for( i = 0; i < ciL; i++, x >>= 8 ) - tmp |= ( x & 0xFF ) << ( ( ciL - 1 - i ) << 3 ); + + for( i = 0, x_ptr = (unsigned char*) &x; i < ciL; i++, x_ptr++ ) + { + tmp <<= CHAR_BIT; + tmp |= (mbedtls_mpi_uint) *x_ptr; + } + return( tmp ); } @@ -813,12 +783,38 @@ static void mpi_bigendian_to_host( mbedtls_mpi_uint * const p, size_t limbs ) } } +/* + * Import X from unsigned binary data, little endian + */ +int mbedtls_mpi_read_binary_le( mbedtls_mpi *X, + const unsigned char *buf, size_t buflen ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t i; + size_t const limbs = CHARS_TO_LIMBS( buflen ); + + /* Ensure that target MPI has exactly the necessary number of limbs */ + MBEDTLS_MPI_CHK( mbedtls_mpi_resize_clear( X, limbs ) ); + + for( i = 0; i < buflen; i++ ) + X->p[i / ciL] |= ((mbedtls_mpi_uint) buf[i]) << ((i % ciL) << 3); + +cleanup: + + /* + * This function is also used to import keys. However, wiping the buffers + * upon failure is not necessary because failure only can happen before any + * input is copied. + */ + return( ret ); +} + /* * Import X from unsigned binary data, big endian */ int mbedtls_mpi_read_binary( mbedtls_mpi *X, const unsigned char *buf, size_t buflen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t const limbs = CHARS_TO_LIMBS( buflen ); size_t const overhead = ( limbs * ciL ) - buflen; unsigned char *Xp; @@ -827,17 +823,11 @@ int mbedtls_mpi_read_binary( mbedtls_mpi *X, const unsigned char *buf, size_t bu MPI_VALIDATE_RET( buflen == 0 || buf != NULL ); /* Ensure that target MPI has exactly the necessary number of limbs */ - if( X->n != limbs ) - { - mbedtls_mpi_free( X ); - mbedtls_mpi_init( X ); - MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, limbs ) ); - } - MBEDTLS_MPI_CHK( mbedtls_mpi_lset( X, 0 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_resize_clear( X, limbs ) ); - /* Avoid calling `memcpy` with NULL source argument, + /* Avoid calling `memcpy` with NULL source or destination argument, * even if buflen is 0. */ - if( buf != NULL ) + if( buflen != 0 ) { Xp = (unsigned char*) X->p; memcpy( Xp + overhead, buf, buflen ); @@ -847,9 +837,53 @@ int mbedtls_mpi_read_binary( mbedtls_mpi *X, const unsigned char *buf, size_t bu cleanup: + /* + * This function is also used to import keys. However, wiping the buffers + * upon failure is not necessary because failure only can happen before any + * input is copied. + */ return( ret ); } +/* + * Export X into unsigned binary data, little endian + */ +int mbedtls_mpi_write_binary_le( const mbedtls_mpi *X, + unsigned char *buf, size_t buflen ) +{ + size_t stored_bytes = X->n * ciL; + size_t bytes_to_copy; + size_t i; + + if( stored_bytes < buflen ) + { + bytes_to_copy = stored_bytes; + } + else + { + bytes_to_copy = buflen; + + /* The output buffer is smaller than the allocated size of X. + * However X may fit if its leading bytes are zero. */ + for( i = bytes_to_copy; i < stored_bytes; i++ ) + { + if( GET_BYTE( X, i ) != 0 ) + return( MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL ); + } + } + + for( i = 0; i < bytes_to_copy; i++ ) + buf[i] = GET_BYTE( X, i ); + + if( stored_bytes < buflen ) + { + /* Write trailing 0 bytes */ + memset( buf + stored_bytes, 0, buflen - stored_bytes ); + } + + return( 0 ); +} + /* * Export X into unsigned binary data, big endian */ @@ -901,7 +935,7 @@ int mbedtls_mpi_write_binary( const mbedtls_mpi *X, */ int mbedtls_mpi_shift_l( mbedtls_mpi *X, size_t count ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i, v0, t1; mbedtls_mpi_uint r0 = 0, r1; MPI_VALIDATE_RET( X != NULL ); @@ -1080,7 +1114,7 @@ int mbedtls_mpi_cmp_int( const mbedtls_mpi *X, mbedtls_mpi_sint z ) */ int mbedtls_mpi_add_abs( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i, j; mbedtls_mpi_uint *o, *p, c, tmp; MPI_VALIDATE_RET( X != NULL ); @@ -1134,70 +1168,92 @@ int mbedtls_mpi_add_abs( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi return( ret ); } -/* - * Helper for mbedtls_mpi subtraction +/** + * Helper for mbedtls_mpi subtraction. + * + * Calculate l - r where l and r have the same size. + * This function operates modulo (2^ciL)^n and returns the carry + * (1 if there was a wraparound, i.e. if `l < r`, and 0 otherwise). + * + * d may be aliased to l or r. + * + * \param n Number of limbs of \p d, \p l and \p r. + * \param[out] d The result of the subtraction. + * \param[in] l The left operand. + * \param[in] r The right operand. + * + * \return 1 if `l < r`. + * 0 if `l >= r`. */ -static void mpi_sub_hlp( size_t n, mbedtls_mpi_uint *s, mbedtls_mpi_uint *d ) +static mbedtls_mpi_uint mpi_sub_hlp( size_t n, + mbedtls_mpi_uint *d, + const mbedtls_mpi_uint *l, + const mbedtls_mpi_uint *r ) { size_t i; - mbedtls_mpi_uint c, z; + mbedtls_mpi_uint c = 0, t, z; - for( i = c = 0; i < n; i++, s++, d++ ) + for( i = 0; i < n; i++ ) { - z = ( *d < c ); *d -= c; - c = ( *d < *s ) + z; *d -= *s; + z = ( l[i] < c ); t = l[i] - c; + c = ( t < r[i] ) + z; d[i] = t - r[i]; } - while( c != 0 ) - { - z = ( *d < c ); *d -= c; - c = z; d++; - } + return( c ); } /* - * Unsigned subtraction: X = |A| - |B| (HAC 14.9) + * Unsigned subtraction: X = |A| - |B| (HAC 14.9, 14.10) */ int mbedtls_mpi_sub_abs( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ) { - mbedtls_mpi TB; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n; + mbedtls_mpi_uint carry; MPI_VALIDATE_RET( X != NULL ); MPI_VALIDATE_RET( A != NULL ); MPI_VALIDATE_RET( B != NULL ); - if( mbedtls_mpi_cmp_abs( A, B ) < 0 ) - return( MBEDTLS_ERR_MPI_NEGATIVE_VALUE ); - - mbedtls_mpi_init( &TB ); - - if( X == B ) + for( n = B->n; n > 0; n-- ) + if( B->p[n - 1] != 0 ) + break; + if( n > A->n ) { - MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &TB, B ) ); - B = &TB; + /* B >= (2^ciL)^n > A */ + ret = MBEDTLS_ERR_MPI_NEGATIVE_VALUE; + goto cleanup; } - if( X != A ) - MBEDTLS_MPI_CHK( mbedtls_mpi_copy( X, A ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, A->n ) ); - /* - * X should always be positive as a result of unsigned subtractions. - */ - X->s = 1; - - ret = 0; + /* Set the high limbs of X to match A. Don't touch the lower limbs + * because X might be aliased to B, and we must not overwrite the + * significant digits of B. */ + if( A->n > n ) + memcpy( X->p + n, A->p + n, ( A->n - n ) * ciL ); + if( X->n > A->n ) + memset( X->p + A->n, 0, ( X->n - A->n ) * ciL ); - for( n = B->n; n > 0; n-- ) - if( B->p[n - 1] != 0 ) - break; + carry = mpi_sub_hlp( n, X->p, A->p, B->p ); + if( carry != 0 ) + { + /* Propagate the carry to the first nonzero limb of X. */ + for( ; n < X->n && X->p[n] == 0; n++ ) + --X->p[n]; + /* If we ran out of space for the carry, it means that the result + * is negative. */ + if( n == X->n ) + { + ret = MBEDTLS_ERR_MPI_NEGATIVE_VALUE; + goto cleanup; + } + --X->p[n]; + } - mpi_sub_hlp( n, B->p, X->p ); + /* X should always be positive as a result of unsigned subtractions. */ + X->s = 1; cleanup: - - mbedtls_mpi_free( &TB ); - return( ret ); } @@ -1276,17 +1332,17 @@ int mbedtls_mpi_sub_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi */ int mbedtls_mpi_add_int( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_sint b ) { - mbedtls_mpi _B; + mbedtls_mpi B; mbedtls_mpi_uint p[1]; MPI_VALIDATE_RET( X != NULL ); MPI_VALIDATE_RET( A != NULL ); p[0] = ( b < 0 ) ? -b : b; - _B.s = ( b < 0 ) ? -1 : 1; - _B.n = 1; - _B.p = p; + B.s = ( b < 0 ) ? -1 : 1; + B.n = 1; + B.p = p; - return( mbedtls_mpi_add_mpi( X, A, &_B ) ); + return( mbedtls_mpi_add_mpi( X, A, &B ) ); } /* @@ -1294,21 +1350,34 @@ int mbedtls_mpi_add_int( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_sint */ int mbedtls_mpi_sub_int( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_sint b ) { - mbedtls_mpi _B; + mbedtls_mpi B; mbedtls_mpi_uint p[1]; MPI_VALIDATE_RET( X != NULL ); MPI_VALIDATE_RET( A != NULL ); p[0] = ( b < 0 ) ? -b : b; - _B.s = ( b < 0 ) ? -1 : 1; - _B.n = 1; - _B.p = p; + B.s = ( b < 0 ) ? -1 : 1; + B.n = 1; + B.p = p; - return( mbedtls_mpi_sub_mpi( X, A, &_B ) ); + return( mbedtls_mpi_sub_mpi( X, A, &B ) ); } -/* - * Helper for mbedtls_mpi multiplication +/** Helper for mbedtls_mpi multiplication. + * + * Add \p b * \p s to \p d. + * + * \param i The number of limbs of \p s. + * \param[in] s A bignum to multiply, of size \p i. + * It may overlap with \p d, but only if + * \p d <= \p s. + * Its leading limb must not be \c 0. + * \param[in,out] d The bignum to add to. + * It must be sufficiently large to store the + * result of the multiplication. This means + * \p i + 1 limbs if \p d[\p i - 1] started as 0 and \p b + * is not known a priori. + * \param b A scalar to multiply. */ static #if defined(__APPLE__) && defined(__arm__) @@ -1318,7 +1387,10 @@ static */ __attribute__ ((noinline)) #endif -void mpi_mul_hlp( size_t i, mbedtls_mpi_uint *s, mbedtls_mpi_uint *d, mbedtls_mpi_uint b ) +void mpi_mul_hlp( size_t i, + const mbedtls_mpi_uint *s, + mbedtls_mpi_uint *d, + mbedtls_mpi_uint b ) { mbedtls_mpi_uint c = 0, t = 0; @@ -1373,10 +1445,10 @@ void mpi_mul_hlp( size_t i, mbedtls_mpi_uint *s, mbedtls_mpi_uint *d, mbedtls_mp t++; - do { + while( c != 0 ) + { *d += c; c = ( *d < c ); d++; } - while( c != 0 ); } /* @@ -1384,9 +1456,10 @@ void mpi_mul_hlp( size_t i, mbedtls_mpi_uint *s, mbedtls_mpi_uint *d, mbedtls_mp */ int mbedtls_mpi_mul_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i, j; mbedtls_mpi TA, TB; + int result_is_zero = 0; MPI_VALIDATE_RET( X != NULL ); MPI_VALIDATE_RET( A != NULL ); MPI_VALIDATE_RET( B != NULL ); @@ -1399,10 +1472,14 @@ int mbedtls_mpi_mul_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi for( i = A->n; i > 0; i-- ) if( A->p[i - 1] != 0 ) break; + if( i == 0 ) + result_is_zero = 1; for( j = B->n; j > 0; j-- ) if( B->p[j - 1] != 0 ) break; + if( j == 0 ) + result_is_zero = 1; MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, i + j ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_lset( X, 0 ) ); @@ -1410,7 +1487,14 @@ int mbedtls_mpi_mul_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi for( ; j > 0; j-- ) mpi_mul_hlp( i, A->p, X->p + j - 1, B->p[j - 1] ); - X->s = A->s * B->s; + /* If the result is 0, we don't shortcut the operation, which reduces + * but does not eliminate side channels leaking the zero-ness. We do + * need to take care to set the sign bit properly since the library does + * not fully support an MPI object with a value of 0 and s == -1. */ + if( result_is_zero ) + X->s = 1; + else + X->s = A->s * B->s; cleanup: @@ -1424,17 +1508,37 @@ int mbedtls_mpi_mul_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi */ int mbedtls_mpi_mul_int( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_uint b ) { - mbedtls_mpi _B; - mbedtls_mpi_uint p[1]; MPI_VALIDATE_RET( X != NULL ); MPI_VALIDATE_RET( A != NULL ); - _B.s = 1; - _B.n = 1; - _B.p = p; - p[0] = b; + /* mpi_mul_hlp can't deal with a leading 0. */ + size_t n = A->n; + while( n > 0 && A->p[n - 1] == 0 ) + --n; - return( mbedtls_mpi_mul_mpi( X, A, &_B ) ); + /* The general method below doesn't work if n==0 or b==0. By chance + * calculating the result is trivial in those cases. */ + if( b == 0 || n == 0 ) + { + return( mbedtls_mpi_lset( X, 0 ) ); + } + + /* Calculate A*b as A + A*(b-1) to take advantage of mpi_mul_hlp */ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + /* In general, A * b requires 1 limb more than b. If + * A->p[n - 1] * b / b == A->p[n - 1], then A * b fits in the same + * number of limbs as A and the call to grow() is not required since + * copy() will take care of the growth if needed. However, experimentally, + * making the call to grow() unconditional causes slightly fewer + * calls to calloc() in ECP code, presumably because it reuses the + * same mpi for a while and this way the mpi is more likely to directly + * grow to its final size. */ + MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, n + 1 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_copy( X, A ) ); + mpi_mul_hlp( n, A->p, X->p, b - 1 ); + +cleanup: + return( ret ); } /* @@ -1539,9 +1643,10 @@ static mbedtls_mpi_uint mbedtls_int_div_int( mbedtls_mpi_uint u1, int mbedtls_mpi_div_mpi( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, const mbedtls_mpi *B ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i, n, t, k; mbedtls_mpi X, Y, Z, T1, T2; + mbedtls_mpi_uint TP2[3]; MPI_VALIDATE_RET( A != NULL ); MPI_VALIDATE_RET( B != NULL ); @@ -1549,7 +1654,17 @@ int mbedtls_mpi_div_mpi( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, return( MBEDTLS_ERR_MPI_DIVISION_BY_ZERO ); mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &Z ); - mbedtls_mpi_init( &T1 ); mbedtls_mpi_init( &T2 ); + mbedtls_mpi_init( &T1 ); + /* + * Avoid dynamic memory allocations for constant-size T2. + * + * T2 is used for comparison only and the 3 limbs are assigned explicitly, + * so nobody increase the size of the MPI and we're safe to use an on-stack + * buffer. + */ + T2.s = 1; + T2.n = sizeof( TP2 ) / sizeof( *TP2 ); + T2.p = TP2; if( mbedtls_mpi_cmp_abs( A, B ) < 0 ) { @@ -1564,8 +1679,7 @@ int mbedtls_mpi_div_mpi( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &Z, A->n + 2 ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &Z, 0 ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &T1, 2 ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &T2, 3 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &T1, A->n + 2 ) ); k = mbedtls_mpi_bitlen( &Y ) % biL; if( k < biL - 1 ) @@ -1597,6 +1711,10 @@ int mbedtls_mpi_div_mpi( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, Y.p[t], NULL); } + T2.p[0] = ( i < 2 ) ? 0 : X.p[i - 2]; + T2.p[1] = ( i < 1 ) ? 0 : X.p[i - 1]; + T2.p[2] = X.p[i]; + Z.p[i - t - 1]++; do { @@ -1606,11 +1724,6 @@ int mbedtls_mpi_div_mpi( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, T1.p[0] = ( t < 1 ) ? 0 : Y.p[t - 1]; T1.p[1] = Y.p[t]; MBEDTLS_MPI_CHK( mbedtls_mpi_mul_int( &T1, &T1, Z.p[i - t - 1] ) ); - - MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &T2, 0 ) ); - T2.p[0] = ( i < 2 ) ? 0 : X.p[i - 2]; - T2.p[1] = ( i < 1 ) ? 0 : X.p[i - 1]; - T2.p[2] = X.p[i]; } while( mbedtls_mpi_cmp_mpi( &T1, &T2 ) > 0 ); @@ -1646,7 +1759,8 @@ int mbedtls_mpi_div_mpi( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, cleanup: mbedtls_mpi_free( &X ); mbedtls_mpi_free( &Y ); mbedtls_mpi_free( &Z ); - mbedtls_mpi_free( &T1 ); mbedtls_mpi_free( &T2 ); + mbedtls_mpi_free( &T1 ); + mbedtls_platform_zeroize( TP2, sizeof( TP2 ) ); return( ret ); } @@ -1658,16 +1772,16 @@ int mbedtls_mpi_div_int( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, mbedtls_mpi_sint b ) { - mbedtls_mpi _B; + mbedtls_mpi B; mbedtls_mpi_uint p[1]; MPI_VALIDATE_RET( A != NULL ); p[0] = ( b < 0 ) ? -b : b; - _B.s = ( b < 0 ) ? -1 : 1; - _B.n = 1; - _B.p = p; + B.s = ( b < 0 ) ? -1 : 1; + B.n = 1; + B.p = p; - return( mbedtls_mpi_div_mpi( Q, R, A, &_B ) ); + return( mbedtls_mpi_div_mpi( Q, R, A, &B ) ); } /* @@ -1675,7 +1789,7 @@ int mbedtls_mpi_div_int( mbedtls_mpi *Q, mbedtls_mpi *R, */ int mbedtls_mpi_mod_mpi( mbedtls_mpi *R, const mbedtls_mpi *A, const mbedtls_mpi *B ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; MPI_VALIDATE_RET( R != NULL ); MPI_VALIDATE_RET( A != NULL ); MPI_VALIDATE_RET( B != NULL ); @@ -1772,18 +1886,34 @@ static void mpi_montg_init( mbedtls_mpi_uint *mm, const mbedtls_mpi *N ) *mm = ~x + 1; } -/* - * Montgomery multiplication: A = A * B * R^-1 mod N (HAC 14.36) +/** Montgomery multiplication: A = A * B * R^-1 mod N (HAC 14.36) + * + * \param[in,out] A One of the numbers to multiply. + * It must have at least as many limbs as N + * (A->n >= N->n), and any limbs beyond n are ignored. + * On successful completion, A contains the result of + * the multiplication A * B * R^-1 mod N where + * R = (2^ciL)^n. + * \param[in] B One of the numbers to multiply. + * It must be nonzero and must not have more limbs than N + * (B->n <= N->n). + * \param[in] N The modulo. N must be odd. + * \param mm The value calculated by `mpi_montg_init(&mm, N)`. + * This is -N^-1 mod 2^ciL. + * \param[in,out] T A bignum for temporary storage. + * It must be at least twice the limb size of N plus 2 + * (T->n >= 2 * (N->n + 1)). + * Its initial content is unused and + * its final content is indeterminate. + * Note that unlike the usual convention in the library + * for `const mbedtls_mpi*`, the content of T can change. */ -static int mpi_montmul( mbedtls_mpi *A, const mbedtls_mpi *B, const mbedtls_mpi *N, mbedtls_mpi_uint mm, +static void mpi_montmul( mbedtls_mpi *A, const mbedtls_mpi *B, const mbedtls_mpi *N, mbedtls_mpi_uint mm, const mbedtls_mpi *T ) { size_t i, n, m; mbedtls_mpi_uint u0, u1, *d; - if( T->n < N->n + 1 || T->p == NULL ) - return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); - memset( T->p, 0, T->n * ciL ); d = T->p; @@ -1804,22 +1934,34 @@ static int mpi_montmul( mbedtls_mpi *A, const mbedtls_mpi *B, const mbedtls_mpi *d++ = u0; d[n + 1] = 0; } - memcpy( A->p, d, ( n + 1 ) * ciL ); - - if( mbedtls_mpi_cmp_abs( A, N ) >= 0 ) - mpi_sub_hlp( n, N->p, A->p ); - else - /* prevent timing attacks */ - mpi_sub_hlp( n, A->p, T->p ); - - return( 0 ); + /* At this point, d is either the desired result or the desired result + * plus N. We now potentially subtract N, avoiding leaking whether the + * subtraction is performed through side channels. */ + + /* Copy the n least significant limbs of d to A, so that + * A = d if d < N (recall that N has n limbs). */ + memcpy( A->p, d, n * ciL ); + /* If d >= N then we want to set A to d - N. To prevent timing attacks, + * do the calculation without using conditional tests. */ + /* Set d to d0 + (2^biL)^n - N where d0 is the current value of d. */ + d[n] += 1; + d[n] -= mpi_sub_hlp( n, d, d, N->p ); + /* If d0 < N then d < (2^biL)^n + * so d[n] == 0 and we want to keep A as it is. + * If d0 >= N then d >= (2^biL)^n, and d <= (2^biL)^n + N < 2 * (2^biL)^n + * so d[n] == 1 and we want to set A to the result of the subtraction + * which is d - (2^biL)^n, i.e. the n least significant limbs of d. + * This exactly corresponds to a conditional assignment. */ + mbedtls_ct_mpi_uint_cond_assign( n, A->p, d, (unsigned char) d[n] ); } /* * Montgomery reduction: A = A * R^-1 mod N + * + * See mpi_montmul() regarding constraints and guarantees on the parameters. */ -static int mpi_montred( mbedtls_mpi *A, const mbedtls_mpi *N, - mbedtls_mpi_uint mm, const mbedtls_mpi *T ) +static void mpi_montred( mbedtls_mpi *A, const mbedtls_mpi *N, + mbedtls_mpi_uint mm, const mbedtls_mpi *T ) { mbedtls_mpi_uint z = 1; mbedtls_mpi U; @@ -1827,7 +1969,36 @@ static int mpi_montred( mbedtls_mpi *A, const mbedtls_mpi *N, U.n = U.s = (int) z; U.p = &z; - return( mpi_montmul( A, &U, N, mm, T ) ); + mpi_montmul( A, &U, N, mm, T ); +} + +/** + * Select an MPI from a table without leaking the index. + * + * This is functionally equivalent to mbedtls_mpi_copy(R, T[idx]) except it + * reads the entire table in order to avoid leaking the value of idx to an + * attacker able to observe memory access patterns. + * + * \param[out] R Where to write the selected MPI. + * \param[in] T The table to read from. + * \param[in] T_size The number of elements in the table. + * \param[in] idx The index of the element to select; + * this must satisfy 0 <= idx < T_size. + * + * \return \c 0 on success, or a negative error code. + */ +static int mpi_select( mbedtls_mpi *R, const mbedtls_mpi *T, size_t T_size, size_t idx ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + for( size_t i = 0; i < T_size; i++ ) + { + MBEDTLS_MPI_CHK( mbedtls_mpi_safe_cond_assign( R, &T[i], + (unsigned char) mbedtls_ct_size_bool_eq( i, idx ) ) ); + } + +cleanup: + return( ret ); } /* @@ -1835,14 +2006,14 @@ static int mpi_montred( mbedtls_mpi *A, const mbedtls_mpi *N, */ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *E, const mbedtls_mpi *N, - mbedtls_mpi *_RR ) + mbedtls_mpi *prec_RR ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t wbits, wsize, one = 1; size_t i, j, nblimbs; size_t bufsize, nbits; mbedtls_mpi_uint ei, mm, state; - mbedtls_mpi RR, T, W[ 2 << MBEDTLS_MPI_WINDOW_SIZE ], Apos; + mbedtls_mpi RR, T, W[ 1 << MBEDTLS_MPI_WINDOW_SIZE ], WW, Apos; int neg; MPI_VALIDATE_RET( X != NULL ); @@ -1856,12 +2027,17 @@ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, if( mbedtls_mpi_cmp_int( E, 0 ) < 0 ) return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); + if( mbedtls_mpi_bitlen( E ) > MBEDTLS_MPI_MAX_BITS || + mbedtls_mpi_bitlen( N ) > MBEDTLS_MPI_MAX_BITS ) + return ( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); + /* * Init temps and window size */ mpi_montg_init( &mm, N ); mbedtls_mpi_init( &RR ); mbedtls_mpi_init( &T ); mbedtls_mpi_init( &Apos ); + mbedtls_mpi_init( &WW ); memset( W, 0, sizeof( W ) ); i = mbedtls_mpi_bitlen( E ); @@ -1869,10 +2045,17 @@ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, wsize = ( i > 671 ) ? 6 : ( i > 239 ) ? 5 : ( i > 79 ) ? 4 : ( i > 23 ) ? 3 : 1; +#if( MBEDTLS_MPI_WINDOW_SIZE < 6 ) if( wsize > MBEDTLS_MPI_WINDOW_SIZE ) wsize = MBEDTLS_MPI_WINDOW_SIZE; +#endif j = N->n + 1; + /* All W[i] and X must have at least N->n limbs for the mpi_montmul() + * and mpi_montred() calls later. Here we ensure that W[1] and X are + * large enough, and later we'll grow other W[i] to the same length. + * They must not be shrunk midway through this function! + */ MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, j ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &W[1], j ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &T, j * 2 ) ); @@ -1891,33 +2074,41 @@ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, /* * If 1st call, pre-compute R^2 mod N */ - if( _RR == NULL || _RR->p == NULL ) + if( prec_RR == NULL || prec_RR->p == NULL ) { MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &RR, 1 ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l( &RR, N->n * 2 * biL ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &RR, &RR, N ) ); - if( _RR != NULL ) - memcpy( _RR, &RR, sizeof( mbedtls_mpi ) ); + if( prec_RR != NULL ) + memcpy( prec_RR, &RR, sizeof( mbedtls_mpi ) ); } else - memcpy( &RR, _RR, sizeof( mbedtls_mpi ) ); + memcpy( &RR, prec_RR, sizeof( mbedtls_mpi ) ); /* * W[1] = A * R^2 * R^-1 mod N = A * R mod N */ if( mbedtls_mpi_cmp_mpi( A, N ) >= 0 ) + { MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &W[1], A, N ) ); + /* This should be a no-op because W[1] is already that large before + * mbedtls_mpi_mod_mpi(), but it's necessary to avoid an overflow + * in mpi_montmul() below, so let's make sure. */ + MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &W[1], N->n + 1 ) ); + } else MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &W[1], A ) ); - MBEDTLS_MPI_CHK( mpi_montmul( &W[1], &RR, N, mm, &T ) ); + /* Note that this is safe because W[1] always has at least N->n limbs + * (it grew above and was preserved by mbedtls_mpi_copy()). */ + mpi_montmul( &W[1], &RR, N, mm, &T ); /* * X = R^2 * R^-1 mod N = R mod N */ MBEDTLS_MPI_CHK( mbedtls_mpi_copy( X, &RR ) ); - MBEDTLS_MPI_CHK( mpi_montred( X, N, mm, &T ) ); + mpi_montred( X, N, mm, &T ); if( wsize > 1 ) { @@ -1930,7 +2121,7 @@ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &W[j], &W[1] ) ); for( i = 0; i < wsize - 1; i++ ) - MBEDTLS_MPI_CHK( mpi_montmul( &W[j], &W[j], N, mm, &T ) ); + mpi_montmul( &W[j], &W[j], N, mm, &T ); /* * W[i] = W[i - 1] * W[1] @@ -1940,7 +2131,7 @@ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &W[i], N->n + 1 ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &W[i], &W[i - 1] ) ); - MBEDTLS_MPI_CHK( mpi_montmul( &W[i], &W[1], N, mm, &T ) ); + mpi_montmul( &W[i], &W[1], N, mm, &T ); } } @@ -1977,7 +2168,7 @@ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, /* * out of window, square X */ - MBEDTLS_MPI_CHK( mpi_montmul( X, X, N, mm, &T ) ); + mpi_montmul( X, X, N, mm, &T ); continue; } @@ -1995,12 +2186,13 @@ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, * X = X^wsize R^-1 mod N */ for( i = 0; i < wsize; i++ ) - MBEDTLS_MPI_CHK( mpi_montmul( X, X, N, mm, &T ) ); + mpi_montmul( X, X, N, mm, &T ); /* * X = X * W[wbits] R^-1 mod N */ - MBEDTLS_MPI_CHK( mpi_montmul( X, &W[wbits], N, mm, &T ) ); + MBEDTLS_MPI_CHK( mpi_select( &WW, W, (size_t) 1 << wsize, wbits ) ); + mpi_montmul( X, &WW, N, mm, &T ); state--; nbits = 0; @@ -2013,18 +2205,18 @@ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, */ for( i = 0; i < nbits; i++ ) { - MBEDTLS_MPI_CHK( mpi_montmul( X, X, N, mm, &T ) ); + mpi_montmul( X, X, N, mm, &T ); wbits <<= 1; if( ( wbits & ( one << wsize ) ) != 0 ) - MBEDTLS_MPI_CHK( mpi_montmul( X, &W[1], N, mm, &T ) ); + mpi_montmul( X, &W[1], N, mm, &T ); } /* * X = A^E * R * R^-1 mod N = A^E mod N */ - MBEDTLS_MPI_CHK( mpi_montred( X, N, mm, &T ) ); + mpi_montred( X, N, mm, &T ); if( neg && E->n != 0 && ( E->p[0] & 1 ) != 0 ) { @@ -2038,8 +2230,9 @@ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_free( &W[i] ); mbedtls_mpi_free( &W[1] ); mbedtls_mpi_free( &T ); mbedtls_mpi_free( &Apos ); + mbedtls_mpi_free( &WW ); - if( _RR == NULL || _RR->p == NULL ) + if( prec_RR == NULL || prec_RR->p == NULL ) mbedtls_mpi_free( &RR ); return( ret ); @@ -2050,15 +2243,15 @@ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, */ int mbedtls_mpi_gcd( mbedtls_mpi *G, const mbedtls_mpi *A, const mbedtls_mpi *B ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t lz, lzt; - mbedtls_mpi TG, TA, TB; + mbedtls_mpi TA, TB; MPI_VALIDATE_RET( G != NULL ); MPI_VALIDATE_RET( A != NULL ); MPI_VALIDATE_RET( B != NULL ); - mbedtls_mpi_init( &TG ); mbedtls_mpi_init( &TA ); mbedtls_mpi_init( &TB ); + mbedtls_mpi_init( &TA ); mbedtls_mpi_init( &TB ); MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &TA, A ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &TB, B ) ); @@ -2066,19 +2259,67 @@ int mbedtls_mpi_gcd( mbedtls_mpi *G, const mbedtls_mpi *A, const mbedtls_mpi *B lz = mbedtls_mpi_lsb( &TA ); lzt = mbedtls_mpi_lsb( &TB ); + /* The loop below gives the correct result when A==0 but not when B==0. + * So have a special case for B==0. Leverage the fact that we just + * calculated the lsb and lsb(B)==0 iff B is odd or 0 to make the test + * slightly more efficient than cmp_int(). */ + if( lzt == 0 && mbedtls_mpi_get_bit( &TB, 0 ) == 0 ) + { + ret = mbedtls_mpi_copy( G, A ); + goto cleanup; + } + if( lzt < lz ) lz = lzt; - MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &TA, lz ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &TB, lz ) ); - TA.s = TB.s = 1; + /* We mostly follow the procedure described in HAC 14.54, but with some + * minor differences: + * - Sequences of multiplications or divisions by 2 are grouped into a + * single shift operation. + * - The procedure in HAC assumes that 0 < TB <= TA. + * - The condition TB <= TA is not actually necessary for correctness. + * TA and TB have symmetric roles except for the loop termination + * condition, and the shifts at the beginning of the loop body + * remove any significance from the ordering of TA vs TB before + * the shifts. + * - If TA = 0, the loop goes through 0 iterations and the result is + * correctly TB. + * - The case TB = 0 was short-circuited above. + * + * For the correctness proof below, decompose the original values of + * A and B as + * A = sa * 2^a * A' with A'=0 or A' odd, and sa = +-1 + * B = sb * 2^b * B' with B'=0 or B' odd, and sb = +-1 + * Then gcd(A, B) = 2^{min(a,b)} * gcd(A',B'), + * and gcd(A',B') is odd or 0. + * + * At the beginning, we have TA = |A| and TB = |B| so gcd(A,B) = gcd(TA,TB). + * The code maintains the following invariant: + * gcd(A,B) = 2^k * gcd(TA,TB) for some k (I) + */ + + /* Proof that the loop terminates: + * At each iteration, either the right-shift by 1 is made on a nonzero + * value and the nonnegative integer bitlen(TA) + bitlen(TB) decreases + * by at least 1, or the right-shift by 1 is made on zero and then + * TA becomes 0 which ends the loop (TB cannot be 0 if it is right-shifted + * since in that case TB is calculated from TB-TA with the condition TB>TA). + */ while( mbedtls_mpi_cmp_int( &TA, 0 ) != 0 ) { + /* Divisions by 2 preserve the invariant (I). */ MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &TA, mbedtls_mpi_lsb( &TA ) ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &TB, mbedtls_mpi_lsb( &TB ) ) ); + /* Set either TA or TB to |TA-TB|/2. Since TA and TB are both odd, + * TA-TB is even so the division by 2 has an integer result. + * Invariant (I) is preserved since any odd divisor of both TA and TB + * also divides |TA-TB|/2, and any odd divisor of both TA and |TA-TB|/2 + * also divides TB, and any odd divisior of both TB and |TA-TB|/2 also + * divides TA. + */ if( mbedtls_mpi_cmp_mpi( &TA, &TB ) >= 0 ) { MBEDTLS_MPI_CHK( mbedtls_mpi_sub_abs( &TA, &TA, &TB ) ); @@ -2089,15 +2330,52 @@ int mbedtls_mpi_gcd( mbedtls_mpi *G, const mbedtls_mpi *A, const mbedtls_mpi *B MBEDTLS_MPI_CHK( mbedtls_mpi_sub_abs( &TB, &TB, &TA ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &TB, 1 ) ); } + /* Note that one of TA or TB is still odd. */ } + /* By invariant (I), gcd(A,B) = 2^k * gcd(TA,TB) for some k. + * At the loop exit, TA = 0, so gcd(TA,TB) = TB. + * - If there was at least one loop iteration, then one of TA or TB is odd, + * and TA = 0, so TB is odd and gcd(TA,TB) = gcd(A',B'). In this case, + * lz = min(a,b) so gcd(A,B) = 2^lz * TB. + * - If there was no loop iteration, then A was 0, and gcd(A,B) = B. + * In this case, lz = 0 and B = TB so gcd(A,B) = B = 2^lz * TB as well. + */ + MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l( &TB, lz ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_copy( G, &TB ) ); cleanup: - mbedtls_mpi_free( &TG ); mbedtls_mpi_free( &TA ); mbedtls_mpi_free( &TB ); + mbedtls_mpi_free( &TA ); mbedtls_mpi_free( &TB ); + + return( ret ); +} + +/* Fill X with n_bytes random bytes. + * X must already have room for those bytes. + * The ordering of the bytes returned from the RNG is suitable for + * deterministic ECDSA (see RFC 6979 §3.3 and mbedtls_mpi_random()). + * The size and sign of X are unchanged. + * n_bytes must not be 0. + */ +static int mpi_fill_random_internal( + mbedtls_mpi *X, size_t n_bytes, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + const size_t limbs = CHARS_TO_LIMBS( n_bytes ); + const size_t overhead = ( limbs * ciL ) - n_bytes; + + if( X->n < limbs ) + return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); + + memset( X->p, 0, overhead ); + memset( (unsigned char *) X->p + limbs * ciL, 0, ( X->n - limbs ) * ciL ); + MBEDTLS_MPI_CHK( f_rng( p_rng, (unsigned char *) X->p + overhead, n_bytes ) ); + mpi_bigendian_to_host( X->p, limbs ); +cleanup: return( ret ); } @@ -2112,29 +2390,95 @@ int mbedtls_mpi_fill_random( mbedtls_mpi *X, size_t size, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t const limbs = CHARS_TO_LIMBS( size ); - size_t const overhead = ( limbs * ciL ) - size; - unsigned char *Xp; MPI_VALIDATE_RET( X != NULL ); MPI_VALIDATE_RET( f_rng != NULL ); /* Ensure that target MPI has exactly the necessary number of limbs */ - if( X->n != limbs ) + MBEDTLS_MPI_CHK( mbedtls_mpi_resize_clear( X, limbs ) ); + if( size == 0 ) + return( 0 ); + + ret = mpi_fill_random_internal( X, size, f_rng, p_rng ); + +cleanup: + return( ret ); +} + +int mbedtls_mpi_random( mbedtls_mpi *X, + mbedtls_mpi_sint min, + const mbedtls_mpi *N, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ) +{ + int ret = MBEDTLS_ERR_MPI_BAD_INPUT_DATA; + int count; + unsigned lt_lower = 1, lt_upper = 0; + size_t n_bits = mbedtls_mpi_bitlen( N ); + size_t n_bytes = ( n_bits + 7 ) / 8; + mbedtls_mpi lower_bound; + + if( min < 0 ) + return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); + if( mbedtls_mpi_cmp_int( N, min ) <= 0 ) + return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); + + /* + * When min == 0, each try has at worst a probability 1/2 of failing + * (the msb has a probability 1/2 of being 0, and then the result will + * be < N), so after 30 tries failure probability is a most 2**(-30). + * + * When N is just below a power of 2, as is the case when generating + * a random scalar on most elliptic curves, 1 try is enough with + * overwhelming probability. When N is just above a power of 2, + * as when generating a random scalar on secp224k1, each try has + * a probability of failing that is almost 1/2. + * + * The probabilities are almost the same if min is nonzero but negligible + * compared to N. This is always the case when N is crypto-sized, but + * it's convenient to support small N for testing purposes. When N + * is small, use a higher repeat count, otherwise the probability of + * failure is macroscopic. + */ + count = ( n_bytes > 4 ? 30 : 250 ); + + mbedtls_mpi_init( &lower_bound ); + + /* Ensure that target MPI has exactly the same number of limbs + * as the upper bound, even if the upper bound has leading zeros. + * This is necessary for the mbedtls_mpi_lt_mpi_ct() check. */ + MBEDTLS_MPI_CHK( mbedtls_mpi_resize_clear( X, N->n ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &lower_bound, N->n ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &lower_bound, min ) ); + + /* + * Match the procedure given in RFC 6979 §3.3 (deterministic ECDSA) + * when f_rng is a suitably parametrized instance of HMAC_DRBG: + * - use the same byte ordering; + * - keep the leftmost n_bits bits of the generated octet string; + * - try until result is in the desired range. + * This also avoids any bias, which is especially important for ECDSA. + */ + do { - mbedtls_mpi_free( X ); - mbedtls_mpi_init( X ); - MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, limbs ) ); - } - MBEDTLS_MPI_CHK( mbedtls_mpi_lset( X, 0 ) ); + MBEDTLS_MPI_CHK( mpi_fill_random_internal( X, n_bytes, f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( X, 8 * n_bytes - n_bits ) ); - Xp = (unsigned char*) X->p; - f_rng( p_rng, Xp + overhead, size ); + if( --count == 0 ) + { + ret = MBEDTLS_ERR_MPI_NOT_ACCEPTABLE; + goto cleanup; + } - mpi_bigendian_to_host( X->p, limbs ); + MBEDTLS_MPI_CHK( mbedtls_mpi_lt_mpi_ct( X, &lower_bound, <_lower ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_lt_mpi_ct( X, N, <_upper ) ); + } + while( lt_lower != 0 || lt_upper == 0 ); cleanup: + mbedtls_mpi_free( &lower_bound ); return( ret ); } @@ -2143,7 +2487,7 @@ int mbedtls_mpi_fill_random( mbedtls_mpi *X, size_t size, */ int mbedtls_mpi_inv_mod( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *N ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_mpi G, TA, TU, U1, U2, TB, TV, V1, V2; MPI_VALIDATE_RET( X != NULL ); MPI_VALIDATE_RET( A != NULL ); @@ -2323,8 +2667,6 @@ static int mpi_miller_rabin( const mbedtls_mpi *X, size_t rounds, MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &R, &W ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &R, s ) ); - i = mbedtls_mpi_bitlen( X ); - for( i = 0; i < rounds; i++ ) { /* @@ -2341,7 +2683,8 @@ static int mpi_miller_rabin( const mbedtls_mpi *X, size_t rounds, } if (count++ > 30) { - return MBEDTLS_ERR_MPI_NOT_ACCEPTABLE; + ret = MBEDTLS_ERR_MPI_NOT_ACCEPTABLE; + goto cleanup; } } while ( mbedtls_mpi_cmp_mpi( &A, &W ) >= 0 || @@ -2397,7 +2740,7 @@ int mbedtls_mpi_is_prime_ext( const mbedtls_mpi *X, int rounds, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_mpi XX; MPI_VALIDATE_RET( X != NULL ); MPI_VALIDATE_RET( f_rng != NULL ); @@ -2734,7 +3077,7 @@ int mbedtls_mpi_self_test( int verbose ) cleanup: if( ret != 0 && verbose != 0 ) - mbedtls_printf( "Unexpected error, return code = %08X\n", ret ); + mbedtls_printf( "Unexpected error, return code = %08X\n", (unsigned int) ret ); mbedtls_mpi_free( &A ); mbedtls_mpi_free( &E ); mbedtls_mpi_free( &N ); mbedtls_mpi_free( &X ); mbedtls_mpi_free( &Y ); mbedtls_mpi_free( &U ); mbedtls_mpi_free( &V ); diff --git a/Externals/mbedtls/library/blowfish.c b/Externals/mbedtls/library/blowfish.c index cbf92382468d..621e9f76cd7c 100644 --- a/Externals/mbedtls/library/blowfish.c +++ b/Externals/mbedtls/library/blowfish.c @@ -1,7 +1,7 @@ /* * Blowfish implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The Blowfish block cipher was designed by Bruce Schneier in 1993. @@ -25,11 +23,7 @@ * */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_BLOWFISH_C) @@ -46,29 +40,6 @@ #define BLOWFISH_VALIDATE( cond ) \ MBEDTLS_INTERNAL_VALIDATE( cond ) -/* - * 32-bit integer manipulation macros (big endian) - */ -#ifndef GET_UINT32_BE -#define GET_UINT32_BE(n,b,i) \ -{ \ - (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ - | ( (uint32_t) (b)[(i) + 1] << 16 ) \ - | ( (uint32_t) (b)[(i) + 2] << 8 ) \ - | ( (uint32_t) (b)[(i) + 3] ); \ -} -#endif - -#ifndef PUT_UINT32_BE -#define PUT_UINT32_BE(n,b,i) \ -{ \ - (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ - (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ - (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \ - (b)[(i) + 3] = (unsigned char) ( (n) ); \ -} -#endif - static const uint32_t P[MBEDTLS_BLOWFISH_ROUNDS + 2] = { 0x243F6A88L, 0x85A308D3L, 0x13198A2EL, 0x03707344L, 0xA4093822L, 0x299F31D0L, 0x082EFA98L, 0xEC4E6C89L, @@ -85,13 +56,13 @@ static uint32_t F( mbedtls_blowfish_context *ctx, uint32_t x ) unsigned short a, b, c, d; uint32_t y; - d = (unsigned short)(x & 0xFF); + d = MBEDTLS_BYTE_0( x ); x >>= 8; - c = (unsigned short)(x & 0xFF); + c = MBEDTLS_BYTE_0( x ); x >>= 8; - b = (unsigned short)(x & 0xFF); + b = MBEDTLS_BYTE_0( x ); x >>= 8; - a = (unsigned short)(x & 0xFF); + a = MBEDTLS_BYTE_0( x ); y = ctx->S[0][a] + ctx->S[1][b]; y = y ^ ctx->S[2][c]; y = y + ctx->S[3][d]; @@ -248,8 +219,8 @@ int mbedtls_blowfish_crypt_ecb( mbedtls_blowfish_context *ctx, BLOWFISH_VALIDATE_RET( input != NULL ); BLOWFISH_VALIDATE_RET( output != NULL ); - GET_UINT32_BE( X0, input, 0 ); - GET_UINT32_BE( X1, input, 4 ); + X0 = MBEDTLS_GET_UINT32_BE( input, 0 ); + X1 = MBEDTLS_GET_UINT32_BE( input, 4 ); if( mode == MBEDTLS_BLOWFISH_DECRYPT ) { @@ -260,8 +231,8 @@ int mbedtls_blowfish_crypt_ecb( mbedtls_blowfish_context *ctx, blowfish_enc( ctx, &X0, &X1 ); } - PUT_UINT32_BE( X0, output, 0 ); - PUT_UINT32_BE( X1, output, 4 ); + MBEDTLS_PUT_UINT32_BE( X0, output, 0 ); + MBEDTLS_PUT_UINT32_BE( X1, output, 4 ); return( 0 ); } diff --git a/Externals/mbedtls/library/camellia.c b/Externals/mbedtls/library/camellia.c index 22262b89a865..29d730ab5369 100644 --- a/Externals/mbedtls/library/camellia.c +++ b/Externals/mbedtls/library/camellia.c @@ -1,7 +1,7 @@ /* * Camellia implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The Camellia block cipher was designed by NTT and Mitsubishi Electric @@ -25,11 +23,7 @@ * http://info.isl.ntt.co.jp/crypt/eng/camellia/dl/01espec.pdf */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_CAMELLIA_C) @@ -55,29 +49,6 @@ #define CAMELLIA_VALIDATE( cond ) \ MBEDTLS_INTERNAL_VALIDATE( cond ) -/* - * 32-bit integer manipulation macros (big endian) - */ -#ifndef GET_UINT32_BE -#define GET_UINT32_BE(n,b,i) \ -{ \ - (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ - | ( (uint32_t) (b)[(i) + 1] << 16 ) \ - | ( (uint32_t) (b)[(i) + 2] << 8 ) \ - | ( (uint32_t) (b)[(i) + 3] ); \ -} -#endif - -#ifndef PUT_UINT32_BE -#define PUT_UINT32_BE(n,b,i) \ -{ \ - (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ - (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ - (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \ - (b)[(i) + 3] = (unsigned char) ( (n) ); \ -} -#endif - static const unsigned char SIGMA_CHARS[6][8] = { { 0xa0, 0x9e, 0x66, 0x7f, 0x3b, 0xcc, 0x90, 0x8b }, @@ -307,14 +278,14 @@ static void camellia_feistel( const uint32_t x[2], const uint32_t k[2], I0 = x[0] ^ k[0]; I1 = x[1] ^ k[1]; - I0 = ((uint32_t) SBOX1((I0 >> 24) & 0xFF) << 24) | - ((uint32_t) SBOX2((I0 >> 16) & 0xFF) << 16) | - ((uint32_t) SBOX3((I0 >> 8) & 0xFF) << 8) | - ((uint32_t) SBOX4((I0 ) & 0xFF) ); - I1 = ((uint32_t) SBOX2((I1 >> 24) & 0xFF) << 24) | - ((uint32_t) SBOX3((I1 >> 16) & 0xFF) << 16) | - ((uint32_t) SBOX4((I1 >> 8) & 0xFF) << 8) | - ((uint32_t) SBOX1((I1 ) & 0xFF) ); + I0 = ((uint32_t) SBOX1( MBEDTLS_BYTE_3( I0 )) << 24) | + ((uint32_t) SBOX2( MBEDTLS_BYTE_2( I0 )) << 16) | + ((uint32_t) SBOX3( MBEDTLS_BYTE_1( I0 )) << 8) | + ((uint32_t) SBOX4( MBEDTLS_BYTE_0( I0 )) ); + I1 = ((uint32_t) SBOX2( MBEDTLS_BYTE_3( I1 )) << 24) | + ((uint32_t) SBOX3( MBEDTLS_BYTE_2( I1 )) << 16) | + ((uint32_t) SBOX4( MBEDTLS_BYTE_1( I1 )) << 8) | + ((uint32_t) SBOX1( MBEDTLS_BYTE_0( I1 )) ); I0 ^= (I1 << 8) | (I1 >> 24); I1 ^= (I0 << 16) | (I0 >> 16); @@ -382,8 +353,8 @@ int mbedtls_camellia_setkey_enc( mbedtls_camellia_context *ctx, * Prepare SIGMA values */ for( i = 0; i < 6; i++ ) { - GET_UINT32_BE( SIGMA[i][0], SIGMA_CHARS[i], 0 ); - GET_UINT32_BE( SIGMA[i][1], SIGMA_CHARS[i], 4 ); + SIGMA[i][0] = MBEDTLS_GET_UINT32_BE( SIGMA_CHARS[i], 0 ); + SIGMA[i][1] = MBEDTLS_GET_UINT32_BE( SIGMA_CHARS[i], 4 ); } /* @@ -394,7 +365,7 @@ int mbedtls_camellia_setkey_enc( mbedtls_camellia_context *ctx, /* Store KL, KR */ for( i = 0; i < 8; i++ ) - GET_UINT32_BE( KC[i], t, i * 4 ); + KC[i] = MBEDTLS_GET_UINT32_BE( t, i * 4 ); /* Generate KA */ for( i = 0; i < 4; ++i ) @@ -520,10 +491,10 @@ int mbedtls_camellia_crypt_ecb( mbedtls_camellia_context *ctx, NR = ctx->nr; RK = ctx->rk; - GET_UINT32_BE( X[0], input, 0 ); - GET_UINT32_BE( X[1], input, 4 ); - GET_UINT32_BE( X[2], input, 8 ); - GET_UINT32_BE( X[3], input, 12 ); + X[0] = MBEDTLS_GET_UINT32_BE( input, 0 ); + X[1] = MBEDTLS_GET_UINT32_BE( input, 4 ); + X[2] = MBEDTLS_GET_UINT32_BE( input, 8 ); + X[3] = MBEDTLS_GET_UINT32_BE( input, 12 ); X[0] ^= *RK++; X[1] ^= *RK++; @@ -558,10 +529,10 @@ int mbedtls_camellia_crypt_ecb( mbedtls_camellia_context *ctx, X[0] ^= *RK++; X[1] ^= *RK++; - PUT_UINT32_BE( X[2], output, 0 ); - PUT_UINT32_BE( X[3], output, 4 ); - PUT_UINT32_BE( X[0], output, 8 ); - PUT_UINT32_BE( X[1], output, 12 ); + MBEDTLS_PUT_UINT32_BE( X[2], output, 0 ); + MBEDTLS_PUT_UINT32_BE( X[3], output, 4 ); + MBEDTLS_PUT_UINT32_BE( X[0], output, 8 ); + MBEDTLS_PUT_UINT32_BE( X[1], output, 12 ); return( 0 ); } @@ -948,9 +919,11 @@ int mbedtls_camellia_self_test( int verbose ) unsigned char nonce_counter[16]; unsigned char stream_block[16]; #endif + int ret = 1; mbedtls_camellia_context ctx; + mbedtls_camellia_init( &ctx ); memset( key, 0, 32 ); for( j = 0; j < 6; j++ ) { @@ -980,8 +953,7 @@ int mbedtls_camellia_self_test( int verbose ) { if( verbose != 0 ) mbedtls_printf( "failed\n" ); - - return( 1 ); + goto exit; } } @@ -1033,8 +1005,7 @@ int mbedtls_camellia_self_test( int verbose ) { if( verbose != 0 ) mbedtls_printf( "failed\n" ); - - return( 1 ); + goto exit; } } @@ -1077,8 +1048,7 @@ int mbedtls_camellia_self_test( int verbose ) { if( verbose != 0 ) mbedtls_printf( "failed\n" ); - - return( 1 ); + goto exit; } } else @@ -1093,8 +1063,7 @@ int mbedtls_camellia_self_test( int verbose ) { if( verbose != 0 ) mbedtls_printf( "failed\n" ); - - return( 1 ); + goto exit; } } @@ -1106,7 +1075,11 @@ int mbedtls_camellia_self_test( int verbose ) mbedtls_printf( "\n" ); #endif /* MBEDTLS_CIPHER_MODE_CTR */ - return( 0 ); + ret = 0; + +exit: + mbedtls_camellia_free( &ctx ); + return( ret ); } #endif /* MBEDTLS_SELF_TEST */ diff --git a/Externals/mbedtls/library/ccm.c b/Externals/mbedtls/library/ccm.c index 01e58b04361c..a21a37f55f3e 100644 --- a/Externals/mbedtls/library/ccm.c +++ b/Externals/mbedtls/library/ccm.c @@ -1,7 +1,7 @@ /* * NIST SP800-38C compliant CCM implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -28,16 +26,13 @@ * RFC 5116 "An Interface and Algorithms for Authenticated Encryption" */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_CCM_C) #include "mbedtls/ccm.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -74,13 +69,14 @@ int mbedtls_ccm_setkey( mbedtls_ccm_context *ctx, const unsigned char *key, unsigned int keybits ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const mbedtls_cipher_info_t *cipher_info; CCM_VALIDATE_RET( ctx != NULL ); CCM_VALIDATE_RET( key != NULL ); - cipher_info = mbedtls_cipher_info_from_values( cipher, keybits, MBEDTLS_MODE_ECB ); + cipher_info = mbedtls_cipher_info_from_values( cipher, keybits, + MBEDTLS_MODE_ECB ); if( cipher_info == NULL ) return( MBEDTLS_ERR_CCM_BAD_INPUT ); @@ -134,11 +130,17 @@ void mbedtls_ccm_free( mbedtls_ccm_context *ctx ) * This avoids allocating one more 16 bytes buffer while allowing src == dst. */ #define CTR_CRYPT( dst, src, len ) \ - if( ( ret = mbedtls_cipher_update( &ctx->cipher_ctx, ctr, 16, b, &olen ) ) != 0 ) \ - return( ret ); \ - \ - for( i = 0; i < len; i++ ) \ - dst[i] = src[i] ^ b[i]; + do \ + { \ + if( ( ret = mbedtls_cipher_update( &ctx->cipher_ctx, ctr, \ + 16, b, &olen ) ) != 0 ) \ + { \ + return( ret ); \ + } \ + \ + for( i = 0; i < (len); i++ ) \ + (dst)[i] = (src)[i] ^ b[i]; \ + } while( 0 ) /* * Authenticated encryption or decryption @@ -149,7 +151,7 @@ static int ccm_auth_crypt( mbedtls_ccm_context *ctx, int mode, size_t length, const unsigned char *input, unsigned char *output, unsigned char *tag, size_t tag_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char i; unsigned char q; size_t len_left, olen; @@ -173,7 +175,7 @@ static int ccm_auth_crypt( mbedtls_ccm_context *ctx, int mode, size_t length, if( iv_len < 7 || iv_len > 13 ) return( MBEDTLS_ERR_CCM_BAD_INPUT ); - if( add_len > 0xFF00 ) + if( add_len >= 0xFF00 ) return( MBEDTLS_ERR_CCM_BAD_INPUT ); q = 16 - 1 - (unsigned char) iv_len; @@ -198,7 +200,7 @@ static int ccm_auth_crypt( mbedtls_ccm_context *ctx, int mode, size_t length, memcpy( b + 1, iv, iv_len ); for( i = 0, len_left = length; i < q; i++, len_left >>= 8 ) - b[15-i] = (unsigned char)( len_left & 0xFF ); + b[15-i] = MBEDTLS_BYTE_0( len_left ); if( len_left > 0 ) return( MBEDTLS_ERR_CCM_BAD_INPUT ); @@ -219,8 +221,7 @@ static int ccm_auth_crypt( mbedtls_ccm_context *ctx, int mode, size_t length, src = add; memset( b, 0, 16 ); - b[0] = (unsigned char)( ( add_len >> 8 ) & 0xFF ); - b[1] = (unsigned char)( ( add_len ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( add_len, b, 0 ); use_len = len_left < 16 - 2 ? len_left : 16 - 2; memcpy( b + 2, src, use_len ); @@ -359,7 +360,7 @@ int mbedtls_ccm_star_auth_decrypt( mbedtls_ccm_context *ctx, size_t length, const unsigned char *input, unsigned char *output, const unsigned char *tag, size_t tag_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char check_tag[16]; unsigned char i; int diff; @@ -423,34 +424,34 @@ int mbedtls_ccm_auth_decrypt( mbedtls_ccm_context *ctx, size_t length, /* * The data is the same for all tests, only the used length changes */ -static const unsigned char key[] = { +static const unsigned char key_test_data[] = { 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f }; -static const unsigned char iv[] = { +static const unsigned char iv_test_data[] = { 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b }; -static const unsigned char ad[] = { +static const unsigned char ad_test_data[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13 }; -static const unsigned char msg[CCM_SELFTEST_PT_MAX_LEN] = { +static const unsigned char msg_test_data[CCM_SELFTEST_PT_MAX_LEN] = { 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, }; -static const size_t iv_len [NB_TESTS] = { 7, 8, 12 }; -static const size_t add_len[NB_TESTS] = { 8, 16, 20 }; -static const size_t msg_len[NB_TESTS] = { 4, 16, 24 }; -static const size_t tag_len[NB_TESTS] = { 4, 6, 8 }; +static const size_t iv_len_test_data [NB_TESTS] = { 7, 8, 12 }; +static const size_t add_len_test_data[NB_TESTS] = { 8, 16, 20 }; +static const size_t msg_len_test_data[NB_TESTS] = { 4, 16, 24 }; +static const size_t tag_len_test_data[NB_TESTS] = { 4, 6, 8 }; -static const unsigned char res[NB_TESTS][CCM_SELFTEST_CT_MAX_LEN] = { +static const unsigned char res_test_data[NB_TESTS][CCM_SELFTEST_CT_MAX_LEN] = { { 0x71, 0x62, 0x01, 0x5b, 0x4d, 0xac, 0x25, 0x5d }, { 0xd2, 0xa1, 0xf0, 0xe0, 0x51, 0xea, 0x5f, 0x62, 0x08, 0x1a, 0x77, 0x92, 0x07, 0x3d, 0x59, 0x3d, @@ -472,11 +473,12 @@ int mbedtls_ccm_self_test( int verbose ) unsigned char plaintext[CCM_SELFTEST_PT_MAX_LEN]; unsigned char ciphertext[CCM_SELFTEST_CT_MAX_LEN]; size_t i; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ccm_init( &ctx ); - if( mbedtls_ccm_setkey( &ctx, MBEDTLS_CIPHER_ID_AES, key, 8 * sizeof key ) != 0 ) + if( mbedtls_ccm_setkey( &ctx, MBEDTLS_CIPHER_ID_AES, key_test_data, + 8 * sizeof key_test_data ) != 0 ) { if( verbose != 0 ) mbedtls_printf( " CCM: setup failed" ); @@ -491,15 +493,18 @@ int mbedtls_ccm_self_test( int verbose ) memset( plaintext, 0, CCM_SELFTEST_PT_MAX_LEN ); memset( ciphertext, 0, CCM_SELFTEST_CT_MAX_LEN ); - memcpy( plaintext, msg, msg_len[i] ); + memcpy( plaintext, msg_test_data, msg_len_test_data[i] ); - ret = mbedtls_ccm_encrypt_and_tag( &ctx, msg_len[i], - iv, iv_len[i], ad, add_len[i], + ret = mbedtls_ccm_encrypt_and_tag( &ctx, msg_len_test_data[i], + iv_test_data, iv_len_test_data[i], + ad_test_data, add_len_test_data[i], plaintext, ciphertext, - ciphertext + msg_len[i], tag_len[i] ); + ciphertext + msg_len_test_data[i], + tag_len_test_data[i] ); if( ret != 0 || - memcmp( ciphertext, res[i], msg_len[i] + tag_len[i] ) != 0 ) + memcmp( ciphertext, res_test_data[i], + msg_len_test_data[i] + tag_len_test_data[i] ) != 0 ) { if( verbose != 0 ) mbedtls_printf( "failed\n" ); @@ -508,13 +513,15 @@ int mbedtls_ccm_self_test( int verbose ) } memset( plaintext, 0, CCM_SELFTEST_PT_MAX_LEN ); - ret = mbedtls_ccm_auth_decrypt( &ctx, msg_len[i], - iv, iv_len[i], ad, add_len[i], + ret = mbedtls_ccm_auth_decrypt( &ctx, msg_len_test_data[i], + iv_test_data, iv_len_test_data[i], + ad_test_data, add_len_test_data[i], ciphertext, plaintext, - ciphertext + msg_len[i], tag_len[i] ); + ciphertext + msg_len_test_data[i], + tag_len_test_data[i] ); if( ret != 0 || - memcmp( plaintext, msg, msg_len[i] ) != 0 ) + memcmp( plaintext, msg_test_data, msg_len_test_data[i] ) != 0 ) { if( verbose != 0 ) mbedtls_printf( "failed\n" ); diff --git a/Externals/mbedtls/library/certs.c b/Externals/mbedtls/library/certs.c index ff0f11e923cf..a5695e3c8e88 100644 --- a/Externals/mbedtls/library/certs.c +++ b/Externals/mbedtls/library/certs.c @@ -1,7 +1,7 @@ /* * X.509 test certificates * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,342 +15,1665 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #include "mbedtls/certs.h" #if defined(MBEDTLS_CERTS_C) -#if defined(MBEDTLS_ECDSA_C) -#define TEST_CA_CRT_EC \ -"-----BEGIN CERTIFICATE-----\r\n" \ -"MIICUjCCAdegAwIBAgIJAMFD4n5iQ8zoMAoGCCqGSM49BAMCMD4xCzAJBgNVBAYT\r\n" \ -"Ak5MMREwDwYDVQQKEwhQb2xhclNTTDEcMBoGA1UEAxMTUG9sYXJzc2wgVGVzdCBF\r\n" \ -"QyBDQTAeFw0xMzA5MjQxNTQ5NDhaFw0yMzA5MjIxNTQ5NDhaMD4xCzAJBgNVBAYT\r\n" \ -"Ak5MMREwDwYDVQQKEwhQb2xhclNTTDEcMBoGA1UEAxMTUG9sYXJzc2wgVGVzdCBF\r\n" \ -"QyBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABMPaKzRBN1gvh1b+/Im6KUNLTuBu\r\n" \ -"ww5XUzM5WNRStJGVOQsj318XJGJI/BqVKc4sLYfCiFKAr9ZqqyHduNMcbli4yuiy\r\n" \ -"aY7zQa0pw7RfdadHb9UZKVVpmlM7ILRmFmAzHqOBoDCBnTAdBgNVHQ4EFgQUnW0g\r\n" \ -"JEkBPyvLeLUZvH4kydv7NnwwbgYDVR0jBGcwZYAUnW0gJEkBPyvLeLUZvH4kydv7\r\n" \ -"NnyhQqRAMD4xCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEcMBoGA1UE\r\n" \ -"AxMTUG9sYXJzc2wgVGVzdCBFQyBDQYIJAMFD4n5iQ8zoMAwGA1UdEwQFMAMBAf8w\r\n" \ -"CgYIKoZIzj0EAwIDaQAwZgIxAMO0YnNWKJUAfXgSJtJxexn4ipg+kv4znuR50v56\r\n" \ -"t4d0PCu412mUC6Nnd7izvtE2MgIxAP1nnJQjZ8BWukszFQDG48wxCCyci9qpdSMv\r\n" \ -"uCjn8pwUOkABXK8Mss90fzCfCEOtIA==\r\n" \ -"-----END CERTIFICATE-----\r\n" -const char mbedtls_test_ca_crt_ec[] = TEST_CA_CRT_EC; -const size_t mbedtls_test_ca_crt_ec_len = sizeof( mbedtls_test_ca_crt_ec ); - -const char mbedtls_test_ca_key_ec[] = -"-----BEGIN EC PRIVATE KEY-----\r\n" -"Proc-Type: 4,ENCRYPTED\r\n" -"DEK-Info: DES-EDE3-CBC,307EAB469933D64E\r\n" -"\r\n" -"IxbrRmKcAzctJqPdTQLA4SWyBYYGYJVkYEna+F7Pa5t5Yg/gKADrFKcm6B72e7DG\r\n" -"ihExtZI648s0zdYw6qSJ74vrPSuWDe5qm93BqsfVH9svtCzWHW0pm1p0KTBCFfUq\r\n" -"UsuWTITwJImcnlAs1gaRZ3sAWm7cOUidL0fo2G0fYUFNcYoCSLffCFTEHBuPnagb\r\n" -"a77x/sY1Bvii8S9/XhDTb6pTMx06wzrm\r\n" -"-----END EC PRIVATE KEY-----\r\n"; -const size_t mbedtls_test_ca_key_ec_len = sizeof( mbedtls_test_ca_key_ec ); - -const char mbedtls_test_ca_pwd_ec[] = "PolarSSLTest"; -const size_t mbedtls_test_ca_pwd_ec_len = sizeof( mbedtls_test_ca_pwd_ec ) - 1; - -const char mbedtls_test_srv_crt_ec[] = -"-----BEGIN CERTIFICATE-----\r\n" -"MIICHzCCAaWgAwIBAgIBCTAKBggqhkjOPQQDAjA+MQswCQYDVQQGEwJOTDERMA8G\r\n" -"A1UEChMIUG9sYXJTU0wxHDAaBgNVBAMTE1BvbGFyc3NsIFRlc3QgRUMgQ0EwHhcN\r\n" -"MTMwOTI0MTU1MjA0WhcNMjMwOTIyMTU1MjA0WjA0MQswCQYDVQQGEwJOTDERMA8G\r\n" -"A1UEChMIUG9sYXJTU0wxEjAQBgNVBAMTCWxvY2FsaG9zdDBZMBMGByqGSM49AgEG\r\n" -"CCqGSM49AwEHA0IABDfMVtl2CR5acj7HWS3/IG7ufPkGkXTQrRS192giWWKSTuUA\r\n" -"2CMR/+ov0jRdXRa9iojCa3cNVc2KKg76Aci07f+jgZ0wgZowCQYDVR0TBAIwADAd\r\n" -"BgNVHQ4EFgQUUGGlj9QH2deCAQzlZX+MY0anE74wbgYDVR0jBGcwZYAUnW0gJEkB\r\n" -"PyvLeLUZvH4kydv7NnyhQqRAMD4xCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xh\r\n" -"clNTTDEcMBoGA1UEAxMTUG9sYXJzc2wgVGVzdCBFQyBDQYIJAMFD4n5iQ8zoMAoG\r\n" -"CCqGSM49BAMCA2gAMGUCMQCaLFzXptui5WQN8LlO3ddh1hMxx6tzgLvT03MTVK2S\r\n" -"C12r0Lz3ri/moSEpNZWqPjkCMCE2f53GXcYLqyfyJR078c/xNSUU5+Xxl7VZ414V\r\n" -"fGa5kHvHARBPc8YAIVIqDvHH1Q==\r\n" -"-----END CERTIFICATE-----\r\n"; -const size_t mbedtls_test_srv_crt_ec_len = sizeof( mbedtls_test_srv_crt_ec ); - -const char mbedtls_test_srv_key_ec[] = -"-----BEGIN EC PRIVATE KEY-----\r\n" -"MHcCAQEEIPEqEyB2AnCoPL/9U/YDHvdqXYbIogTywwyp6/UfDw6noAoGCCqGSM49\r\n" -"AwEHoUQDQgAEN8xW2XYJHlpyPsdZLf8gbu58+QaRdNCtFLX3aCJZYpJO5QDYIxH/\r\n" -"6i/SNF1dFr2KiMJrdw1VzYoqDvoByLTt/w==\r\n" -"-----END EC PRIVATE KEY-----\r\n"; -const size_t mbedtls_test_srv_key_ec_len = sizeof( mbedtls_test_srv_key_ec ); - -const char mbedtls_test_cli_crt_ec[] = -"-----BEGIN CERTIFICATE-----\r\n" -"MIICLDCCAbKgAwIBAgIBDTAKBggqhkjOPQQDAjA+MQswCQYDVQQGEwJOTDERMA8G\r\n" -"A1UEChMIUG9sYXJTU0wxHDAaBgNVBAMTE1BvbGFyc3NsIFRlc3QgRUMgQ0EwHhcN\r\n" -"MTMwOTI0MTU1MjA0WhcNMjMwOTIyMTU1MjA0WjBBMQswCQYDVQQGEwJOTDERMA8G\r\n" -"A1UEChMIUG9sYXJTU0wxHzAdBgNVBAMTFlBvbGFyU1NMIFRlc3QgQ2xpZW50IDIw\r\n" -"WTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARX5a6xc9/TrLuTuIH/Eq7u5lOszlVT\r\n" -"9jQOzC7jYyUL35ji81xgNpbA1RgUcOV/n9VLRRjlsGzVXPiWj4dwo+THo4GdMIGa\r\n" -"MAkGA1UdEwQCMAAwHQYDVR0OBBYEFHoAX4Zk/OBd5REQO7LmO8QmP8/iMG4GA1Ud\r\n" -"IwRnMGWAFJ1tICRJAT8ry3i1Gbx+JMnb+zZ8oUKkQDA+MQswCQYDVQQGEwJOTDER\r\n" -"MA8GA1UEChMIUG9sYXJTU0wxHDAaBgNVBAMTE1BvbGFyc3NsIFRlc3QgRUMgQ0GC\r\n" -"CQDBQ+J+YkPM6DAKBggqhkjOPQQDAgNoADBlAjBKZQ17IIOimbmoD/yN7o89u3BM\r\n" -"lgOsjnhw3fIOoLIWy2WOGsk/LGF++DzvrRzuNiACMQCd8iem1XS4JK7haj8xocpU\r\n" -"LwjQje5PDGHfd3h9tP38Qknu5bJqws0md2KOKHyeV0U=\r\n" -"-----END CERTIFICATE-----\r\n"; -const size_t mbedtls_test_cli_crt_ec_len = sizeof( mbedtls_test_cli_crt_ec ); - -const char mbedtls_test_cli_key_ec[] = -"-----BEGIN EC PRIVATE KEY-----\r\n" -"MHcCAQEEIPb3hmTxZ3/mZI3vyk7p3U3wBf+WIop6hDhkFzJhmLcqoAoGCCqGSM49\r\n" -"AwEHoUQDQgAEV+WusXPf06y7k7iB/xKu7uZTrM5VU/Y0Dswu42MlC9+Y4vNcYDaW\r\n" -"wNUYFHDlf5/VS0UY5bBs1Vz4lo+HcKPkxw==\r\n" -"-----END EC PRIVATE KEY-----\r\n"; -const size_t mbedtls_test_cli_key_ec_len = sizeof( mbedtls_test_cli_key_ec ); -#endif /* MBEDTLS_ECDSA_C */ +/* + * Test CA Certificates + * + * We define test CA certificates for each choice of the following parameters: + * - PEM or DER encoding + * - SHA-1 or SHA-256 hash + * - RSA or EC key + * + * Things to add: + * - multiple EC curve types + * + */ -#if defined(MBEDTLS_RSA_C) +/* This is taken from tests/data_files/test-ca2.crt */ +/* BEGIN FILE string macro TEST_CA_CRT_EC_PEM tests/data_files/test-ca2.crt */ +#define TEST_CA_CRT_EC_PEM \ + "-----BEGIN CERTIFICATE-----\r\n" \ + "MIICBDCCAYigAwIBAgIJAMFD4n5iQ8zoMAwGCCqGSM49BAMCBQAwPjELMAkGA1UE\r\n" \ + "BhMCTkwxETAPBgNVBAoMCFBvbGFyU1NMMRwwGgYDVQQDDBNQb2xhcnNzbCBUZXN0\r\n" \ + "IEVDIENBMB4XDTE5MDIxMDE0NDQwMFoXDTI5MDIxMDE0NDQwMFowPjELMAkGA1UE\r\n" \ + "BhMCTkwxETAPBgNVBAoMCFBvbGFyU1NMMRwwGgYDVQQDDBNQb2xhcnNzbCBUZXN0\r\n" \ + "IEVDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEw9orNEE3WC+HVv78ibopQ0tO\r\n" \ + "4G7DDldTMzlY1FK0kZU5CyPfXxckYkj8GpUpziwth8KIUoCv1mqrId240xxuWLjK\r\n" \ + "6LJpjvNBrSnDtF91p0dv1RkpVWmaUzsgtGYWYDMeo1AwTjAMBgNVHRMEBTADAQH/\r\n" \ + "MB0GA1UdDgQWBBSdbSAkSQE/K8t4tRm8fiTJ2/s2fDAfBgNVHSMEGDAWgBSdbSAk\r\n" \ + "SQE/K8t4tRm8fiTJ2/s2fDAMBggqhkjOPQQDAgUAA2gAMGUCMFHKrjAPpHB0BN1a\r\n" \ + "LH8TwcJ3vh0AxeKZj30mRdOKBmg/jLS3rU3g8VQBHpn8sOTTBwIxANxPO5AerimZ\r\n" \ + "hCjMe0d4CTHf1gFZMF70+IqEP+o5VHsIp2Cqvflb0VGWFC5l9a4cQg==\r\n" \ + "-----END CERTIFICATE-----\r\n" +/* END FILE */ -#if defined(MBEDTLS_SHA256_C) -#define TEST_CA_CRT_RSA_SHA256 \ +/* This is generated from tests/data_files/test-ca2.crt.der using `xxd -i`. */ +/* BEGIN FILE binary macro TEST_CA_CRT_EC_DER tests/data_files/test-ca2.crt.der */ +#define TEST_CA_CRT_EC_DER { \ + 0x30, 0x82, 0x02, 0x04, 0x30, 0x82, 0x01, 0x88, 0xa0, 0x03, 0x02, 0x01, \ + 0x02, 0x02, 0x09, 0x00, 0xc1, 0x43, 0xe2, 0x7e, 0x62, 0x43, 0xcc, 0xe8, \ + 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, \ + 0x05, 0x00, 0x30, 0x3e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, \ + 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, \ + 0x04, 0x0a, 0x0c, 0x08, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, 0x53, 0x4c, \ + 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x13, 0x50, \ + 0x6f, 0x6c, 0x61, 0x72, 0x73, 0x73, 0x6c, 0x20, 0x54, 0x65, 0x73, 0x74, \ + 0x20, 0x45, 0x43, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x39, \ + 0x30, 0x32, 0x31, 0x30, 0x31, 0x34, 0x34, 0x34, 0x30, 0x30, 0x5a, 0x17, \ + 0x0d, 0x32, 0x39, 0x30, 0x32, 0x31, 0x30, 0x31, 0x34, 0x34, 0x34, 0x30, \ + 0x30, 0x5a, 0x30, 0x3e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, \ + 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, \ + 0x04, 0x0a, 0x0c, 0x08, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, 0x53, 0x4c, \ + 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x13, 0x50, \ + 0x6f, 0x6c, 0x61, 0x72, 0x73, 0x73, 0x6c, 0x20, 0x54, 0x65, 0x73, 0x74, \ + 0x20, 0x45, 0x43, 0x20, 0x43, 0x41, 0x30, 0x76, 0x30, 0x10, 0x06, 0x07, \ + 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x05, 0x2b, 0x81, 0x04, \ + 0x00, 0x22, 0x03, 0x62, 0x00, 0x04, 0xc3, 0xda, 0x2b, 0x34, 0x41, 0x37, \ + 0x58, 0x2f, 0x87, 0x56, 0xfe, 0xfc, 0x89, 0xba, 0x29, 0x43, 0x4b, 0x4e, \ + 0xe0, 0x6e, 0xc3, 0x0e, 0x57, 0x53, 0x33, 0x39, 0x58, 0xd4, 0x52, 0xb4, \ + 0x91, 0x95, 0x39, 0x0b, 0x23, 0xdf, 0x5f, 0x17, 0x24, 0x62, 0x48, 0xfc, \ + 0x1a, 0x95, 0x29, 0xce, 0x2c, 0x2d, 0x87, 0xc2, 0x88, 0x52, 0x80, 0xaf, \ + 0xd6, 0x6a, 0xab, 0x21, 0xdd, 0xb8, 0xd3, 0x1c, 0x6e, 0x58, 0xb8, 0xca, \ + 0xe8, 0xb2, 0x69, 0x8e, 0xf3, 0x41, 0xad, 0x29, 0xc3, 0xb4, 0x5f, 0x75, \ + 0xa7, 0x47, 0x6f, 0xd5, 0x19, 0x29, 0x55, 0x69, 0x9a, 0x53, 0x3b, 0x20, \ + 0xb4, 0x66, 0x16, 0x60, 0x33, 0x1e, 0xa3, 0x50, 0x30, 0x4e, 0x30, 0x0c, \ + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, \ + 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x9d, \ + 0x6d, 0x20, 0x24, 0x49, 0x01, 0x3f, 0x2b, 0xcb, 0x78, 0xb5, 0x19, 0xbc, \ + 0x7e, 0x24, 0xc9, 0xdb, 0xfb, 0x36, 0x7c, 0x30, 0x1f, 0x06, 0x03, 0x55, \ + 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x9d, 0x6d, 0x20, 0x24, \ + 0x49, 0x01, 0x3f, 0x2b, 0xcb, 0x78, 0xb5, 0x19, 0xbc, 0x7e, 0x24, 0xc9, \ + 0xdb, 0xfb, 0x36, 0x7c, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, \ + 0x3d, 0x04, 0x03, 0x02, 0x05, 0x00, 0x03, 0x68, 0x00, 0x30, 0x65, 0x02, \ + 0x30, 0x51, 0xca, 0xae, 0x30, 0x0f, 0xa4, 0x70, 0x74, 0x04, 0xdd, 0x5a, \ + 0x2c, 0x7f, 0x13, 0xc1, 0xc2, 0x77, 0xbe, 0x1d, 0x00, 0xc5, 0xe2, 0x99, \ + 0x8f, 0x7d, 0x26, 0x45, 0xd3, 0x8a, 0x06, 0x68, 0x3f, 0x8c, 0xb4, 0xb7, \ + 0xad, 0x4d, 0xe0, 0xf1, 0x54, 0x01, 0x1e, 0x99, 0xfc, 0xb0, 0xe4, 0xd3, \ + 0x07, 0x02, 0x31, 0x00, 0xdc, 0x4f, 0x3b, 0x90, 0x1e, 0xae, 0x29, 0x99, \ + 0x84, 0x28, 0xcc, 0x7b, 0x47, 0x78, 0x09, 0x31, 0xdf, 0xd6, 0x01, 0x59, \ + 0x30, 0x5e, 0xf4, 0xf8, 0x8a, 0x84, 0x3f, 0xea, 0x39, 0x54, 0x7b, 0x08, \ + 0xa7, 0x60, 0xaa, 0xbd, 0xf9, 0x5b, 0xd1, 0x51, 0x96, 0x14, 0x2e, 0x65, \ + 0xf5, 0xae, 0x1c, 0x42 \ +} +/* END FILE */ + +/* This is taken from tests/data_files/test-ca2.key.enc */ +/* BEGIN FILE string macro TEST_CA_KEY_EC_PEM tests/data_files/test-ca2.key.enc */ +#define TEST_CA_KEY_EC_PEM \ + "-----BEGIN EC PRIVATE KEY-----\r\n" \ + "Proc-Type: 4,ENCRYPTED\r\n" \ + "DEK-Info: DES-EDE3-CBC,307EAB469933D64E\r\n" \ + "\r\n" \ + "IxbrRmKcAzctJqPdTQLA4SWyBYYGYJVkYEna+F7Pa5t5Yg/gKADrFKcm6B72e7DG\r\n" \ + "ihExtZI648s0zdYw6qSJ74vrPSuWDe5qm93BqsfVH9svtCzWHW0pm1p0KTBCFfUq\r\n" \ + "UsuWTITwJImcnlAs1gaRZ3sAWm7cOUidL0fo2G0fYUFNcYoCSLffCFTEHBuPnagb\r\n" \ + "a77x/sY1Bvii8S9/XhDTb6pTMx06wzrm\r\n" \ + "-----END EC PRIVATE KEY-----\r\n" +/* END FILE */ + +#define TEST_CA_PWD_EC_PEM "PolarSSLTest" + +/* This is generated from tests/data_files/test-ca2.key.der using `xxd -i`. */ +/* BEGIN FILE binary macro TEST_CA_KEY_EC_DER tests/data_files/test-ca2.key.der */ +#define TEST_CA_KEY_EC_DER { \ + 0x30, 0x81, 0xa4, 0x02, 0x01, 0x01, 0x04, 0x30, 0x83, 0xd9, 0x15, 0x0e, \ + 0xa0, 0x71, 0xf0, 0x57, 0x10, 0x33, 0xa3, 0x38, 0xb8, 0x86, 0xc1, 0xa6, \ + 0x11, 0x5d, 0x6d, 0xb4, 0x03, 0xe1, 0x29, 0x76, 0x45, 0xd7, 0x87, 0x6f, \ + 0x23, 0xab, 0x44, 0x20, 0xea, 0x64, 0x7b, 0x85, 0xb1, 0x76, 0xe7, 0x85, \ + 0x95, 0xaa, 0x74, 0xd6, 0xd1, 0xa4, 0x5e, 0xea, 0xa0, 0x07, 0x06, 0x05, \ + 0x2b, 0x81, 0x04, 0x00, 0x22, 0xa1, 0x64, 0x03, 0x62, 0x00, 0x04, 0xc3, \ + 0xda, 0x2b, 0x34, 0x41, 0x37, 0x58, 0x2f, 0x87, 0x56, 0xfe, 0xfc, 0x89, \ + 0xba, 0x29, 0x43, 0x4b, 0x4e, 0xe0, 0x6e, 0xc3, 0x0e, 0x57, 0x53, 0x33, \ + 0x39, 0x58, 0xd4, 0x52, 0xb4, 0x91, 0x95, 0x39, 0x0b, 0x23, 0xdf, 0x5f, \ + 0x17, 0x24, 0x62, 0x48, 0xfc, 0x1a, 0x95, 0x29, 0xce, 0x2c, 0x2d, 0x87, \ + 0xc2, 0x88, 0x52, 0x80, 0xaf, 0xd6, 0x6a, 0xab, 0x21, 0xdd, 0xb8, 0xd3, \ + 0x1c, 0x6e, 0x58, 0xb8, 0xca, 0xe8, 0xb2, 0x69, 0x8e, 0xf3, 0x41, 0xad, \ + 0x29, 0xc3, 0xb4, 0x5f, 0x75, 0xa7, 0x47, 0x6f, 0xd5, 0x19, 0x29, 0x55, \ + 0x69, 0x9a, 0x53, 0x3b, 0x20, 0xb4, 0x66, 0x16, 0x60, 0x33, 0x1e \ +} +/* END FILE */ + +/* This is taken from tests/data_files/test-ca-sha256.crt. */ +/* BEGIN FILE string macro TEST_CA_CRT_RSA_SHA256_PEM tests/data_files/test-ca-sha256.crt */ +#define TEST_CA_CRT_RSA_SHA256_PEM \ + "-----BEGIN CERTIFICATE-----\r\n" \ + "MIIDQTCCAimgAwIBAgIBAzANBgkqhkiG9w0BAQsFADA7MQswCQYDVQQGEwJOTDER\r\n" \ + "MA8GA1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwHhcN\r\n" \ + "MTkwMjEwMTQ0NDAwWhcNMjkwMjEwMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8G\r\n" \ + "A1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0G\r\n" \ + "CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHx\r\n" \ + "mdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny\r\n" \ + "50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8n\r\n" \ + "YMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnL\r\n" \ + "R7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsu\r\n" \ + "KNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGj\r\n" \ + "UDBOMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFLRa5KWz3tJS9rnVppUP6z68x/3/\r\n" \ + "MB8GA1UdIwQYMBaAFLRa5KWz3tJS9rnVppUP6z68x/3/MA0GCSqGSIb3DQEBCwUA\r\n" \ + "A4IBAQA4qFSCth2q22uJIdE4KGHJsJjVEfw2/xn+MkTvCMfxVrvmRvqCtjE4tKDl\r\n" \ + "oK4MxFOek07oDZwvtAT9ijn1hHftTNS7RH9zd/fxNpfcHnMZXVC4w4DNA1fSANtW\r\n" \ + "5sY1JB5Je9jScrsLSS+mAjyv0Ow3Hb2Bix8wu7xNNrV5fIf7Ubm+wt6SqEBxu3Kb\r\n" \ + "+EfObAT4huf3czznhH3C17ed6NSbXwoXfby7stWUDeRJv08RaFOykf/Aae7bY5PL\r\n" \ + "yTVrkAnikMntJ9YI+hNNYt3inqq11A5cN0+rVTst8UKCxzQ4GpvroSwPKTFkbMw4\r\n" \ + "/anT1dVxr/BtwJfiESoK3/4CeXR1\r\n" \ + "-----END CERTIFICATE-----\r\n" +/* END FILE */ + +/* This is generated from tests/data_files/test-ca-sha256.crt.der + * using `xxd -i`. */ +/* BEGIN FILE binary macro TEST_CA_CRT_RSA_SHA256_DER tests/data_files/test-ca-sha256.crt.der */ +#define TEST_CA_CRT_RSA_SHA256_DER { \ + 0x30, 0x82, 0x03, 0x41, 0x30, 0x82, 0x02, 0x29, 0xa0, 0x03, 0x02, 0x01, \ + 0x02, 0x02, 0x01, 0x03, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, \ + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x3b, 0x31, 0x0b, 0x30, \ + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, \ + 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x08, 0x50, 0x6f, 0x6c, \ + 0x61, 0x72, 0x53, 0x53, 0x4c, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, \ + 0x04, 0x03, 0x0c, 0x10, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, 0x53, 0x4c, \ + 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, \ + 0x31, 0x39, 0x30, 0x32, 0x31, 0x30, 0x31, 0x34, 0x34, 0x34, 0x30, 0x30, \ + 0x5a, 0x17, 0x0d, 0x32, 0x39, 0x30, 0x32, 0x31, 0x30, 0x31, 0x34, 0x34, \ + 0x34, 0x30, 0x30, 0x5a, 0x30, 0x3b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, \ + 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, 0x30, 0x0f, 0x06, \ + 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x08, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, \ + 0x53, 0x4c, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, \ + 0x10, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, 0x53, 0x4c, 0x20, 0x54, 0x65, \ + 0x73, 0x74, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, \ + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, \ + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, \ + 0x01, 0x00, 0xc0, 0xdf, 0x37, 0xfc, 0x17, 0xbb, 0xe0, 0x96, 0x9d, 0x3f, \ + 0x86, 0xde, 0x96, 0x32, 0x7d, 0x44, 0xa5, 0x16, 0xa0, 0xcd, 0x21, 0xf1, \ + 0x99, 0xd4, 0xec, 0xea, 0xcb, 0x7c, 0x18, 0x58, 0x08, 0x94, 0xa5, 0xec, \ + 0x9b, 0xc5, 0x8b, 0xdf, 0x1a, 0x1e, 0x99, 0x38, 0x99, 0x87, 0x1e, 0x7b, \ + 0xc0, 0x8d, 0x39, 0xdf, 0x38, 0x5d, 0x70, 0x78, 0x07, 0xd3, 0x9e, 0xd9, \ + 0x93, 0xe8, 0xb9, 0x72, 0x51, 0xc5, 0xce, 0xa3, 0x30, 0x52, 0xa9, 0xf2, \ + 0xe7, 0x40, 0x70, 0x14, 0xcb, 0x44, 0xa2, 0x72, 0x0b, 0xc2, 0xe5, 0x40, \ + 0xf9, 0x3e, 0xe5, 0xa6, 0x0e, 0xb3, 0xf9, 0xec, 0x4a, 0x63, 0xc0, 0xb8, \ + 0x29, 0x00, 0x74, 0x9c, 0x57, 0x3b, 0xa8, 0xa5, 0x04, 0x90, 0x71, 0xf1, \ + 0xbd, 0x83, 0xd9, 0x3f, 0xd6, 0xa5, 0xe2, 0x3c, 0x2a, 0x8f, 0xef, 0x27, \ + 0x60, 0xc3, 0xc6, 0x9f, 0xcb, 0xba, 0xec, 0x60, 0x7d, 0xb7, 0xe6, 0x84, \ + 0x32, 0xbe, 0x4f, 0xfb, 0x58, 0x26, 0x22, 0x03, 0x5b, 0xd4, 0xb4, 0xd5, \ + 0xfb, 0xf5, 0xe3, 0x96, 0x2e, 0x70, 0xc0, 0xe4, 0x2e, 0xbd, 0xfc, 0x2e, \ + 0xee, 0xe2, 0x41, 0x55, 0xc0, 0x34, 0x2e, 0x7d, 0x24, 0x72, 0x69, 0xcb, \ + 0x47, 0xb1, 0x14, 0x40, 0x83, 0x7d, 0x67, 0xf4, 0x86, 0xf6, 0x31, 0xab, \ + 0xf1, 0x79, 0xa4, 0xb2, 0xb5, 0x2e, 0x12, 0xf9, 0x84, 0x17, 0xf0, 0x62, \ + 0x6f, 0x27, 0x3e, 0x13, 0x58, 0xb1, 0x54, 0x0d, 0x21, 0x9a, 0x73, 0x37, \ + 0xa1, 0x30, 0xcf, 0x6f, 0x92, 0xdc, 0xf6, 0xe9, 0xfc, 0xac, 0xdb, 0x2e, \ + 0x28, 0xd1, 0x7e, 0x02, 0x4b, 0x23, 0xa0, 0x15, 0xf2, 0x38, 0x65, 0x64, \ + 0x09, 0xea, 0x0c, 0x6e, 0x8e, 0x1b, 0x17, 0xa0, 0x71, 0xc8, 0xb3, 0x9b, \ + 0xc9, 0xab, 0xe9, 0xc3, 0xf2, 0xcf, 0x87, 0x96, 0x8f, 0x80, 0x02, 0x32, \ + 0x9e, 0x99, 0x58, 0x6f, 0xa2, 0xd5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, \ + 0x50, 0x30, 0x4e, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x05, \ + 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, \ + 0x04, 0x16, 0x04, 0x14, 0xb4, 0x5a, 0xe4, 0xa5, 0xb3, 0xde, 0xd2, 0x52, \ + 0xf6, 0xb9, 0xd5, 0xa6, 0x95, 0x0f, 0xeb, 0x3e, 0xbc, 0xc7, 0xfd, 0xff, \ + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, \ + 0x14, 0xb4, 0x5a, 0xe4, 0xa5, 0xb3, 0xde, 0xd2, 0x52, 0xf6, 0xb9, 0xd5, \ + 0xa6, 0x95, 0x0f, 0xeb, 0x3e, 0xbc, 0xc7, 0xfd, 0xff, 0x30, 0x0d, 0x06, \ + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, \ + 0x03, 0x82, 0x01, 0x01, 0x00, 0x38, 0xa8, 0x54, 0x82, 0xb6, 0x1d, 0xaa, \ + 0xdb, 0x6b, 0x89, 0x21, 0xd1, 0x38, 0x28, 0x61, 0xc9, 0xb0, 0x98, 0xd5, \ + 0x11, 0xfc, 0x36, 0xff, 0x19, 0xfe, 0x32, 0x44, 0xef, 0x08, 0xc7, 0xf1, \ + 0x56, 0xbb, 0xe6, 0x46, 0xfa, 0x82, 0xb6, 0x31, 0x38, 0xb4, 0xa0, 0xe5, \ + 0xa0, 0xae, 0x0c, 0xc4, 0x53, 0x9e, 0x93, 0x4e, 0xe8, 0x0d, 0x9c, 0x2f, \ + 0xb4, 0x04, 0xfd, 0x8a, 0x39, 0xf5, 0x84, 0x77, 0xed, 0x4c, 0xd4, 0xbb, \ + 0x44, 0x7f, 0x73, 0x77, 0xf7, 0xf1, 0x36, 0x97, 0xdc, 0x1e, 0x73, 0x19, \ + 0x5d, 0x50, 0xb8, 0xc3, 0x80, 0xcd, 0x03, 0x57, 0xd2, 0x00, 0xdb, 0x56, \ + 0xe6, 0xc6, 0x35, 0x24, 0x1e, 0x49, 0x7b, 0xd8, 0xd2, 0x72, 0xbb, 0x0b, \ + 0x49, 0x2f, 0xa6, 0x02, 0x3c, 0xaf, 0xd0, 0xec, 0x37, 0x1d, 0xbd, 0x81, \ + 0x8b, 0x1f, 0x30, 0xbb, 0xbc, 0x4d, 0x36, 0xb5, 0x79, 0x7c, 0x87, 0xfb, \ + 0x51, 0xb9, 0xbe, 0xc2, 0xde, 0x92, 0xa8, 0x40, 0x71, 0xbb, 0x72, 0x9b, \ + 0xf8, 0x47, 0xce, 0x6c, 0x04, 0xf8, 0x86, 0xe7, 0xf7, 0x73, 0x3c, 0xe7, \ + 0x84, 0x7d, 0xc2, 0xd7, 0xb7, 0x9d, 0xe8, 0xd4, 0x9b, 0x5f, 0x0a, 0x17, \ + 0x7d, 0xbc, 0xbb, 0xb2, 0xd5, 0x94, 0x0d, 0xe4, 0x49, 0xbf, 0x4f, 0x11, \ + 0x68, 0x53, 0xb2, 0x91, 0xff, 0xc0, 0x69, 0xee, 0xdb, 0x63, 0x93, 0xcb, \ + 0xc9, 0x35, 0x6b, 0x90, 0x09, 0xe2, 0x90, 0xc9, 0xed, 0x27, 0xd6, 0x08, \ + 0xfa, 0x13, 0x4d, 0x62, 0xdd, 0xe2, 0x9e, 0xaa, 0xb5, 0xd4, 0x0e, 0x5c, \ + 0x37, 0x4f, 0xab, 0x55, 0x3b, 0x2d, 0xf1, 0x42, 0x82, 0xc7, 0x34, 0x38, \ + 0x1a, 0x9b, 0xeb, 0xa1, 0x2c, 0x0f, 0x29, 0x31, 0x64, 0x6c, 0xcc, 0x38, \ + 0xfd, 0xa9, 0xd3, 0xd5, 0xd5, 0x71, 0xaf, 0xf0, 0x6d, 0xc0, 0x97, 0xe2, \ + 0x11, 0x2a, 0x0a, 0xdf, 0xfe, 0x02, 0x79, 0x74, 0x75 \ +} +/* END FILE */ + +/* This is taken from tests/data_files/test-ca-sha1.crt. */ +/* BEGIN FILE string macro TEST_CA_CRT_RSA_SHA1_PEM tests/data_files/test-ca-sha1.crt */ +#define TEST_CA_CRT_RSA_SHA1_PEM \ + "-----BEGIN CERTIFICATE-----\r\n" \ + "MIIDQTCCAimgAwIBAgIBAzANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER\r\n" \ + "MA8GA1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwHhcN\r\n" \ + "MTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8G\r\n" \ + "A1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0G\r\n" \ + "CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHx\r\n" \ + "mdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny\r\n" \ + "50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8n\r\n" \ + "YMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnL\r\n" \ + "R7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsu\r\n" \ + "KNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGj\r\n" \ + "UDBOMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFLRa5KWz3tJS9rnVppUP6z68x/3/\r\n" \ + "MB8GA1UdIwQYMBaAFLRa5KWz3tJS9rnVppUP6z68x/3/MA0GCSqGSIb3DQEBBQUA\r\n" \ + "A4IBAQABE3OEPfEd/bcJW5ZdU3/VgPNS4tMzh8gnJP/V2FcvFtGylMpQq6YnEBYI\r\n" \ + "yBHAL4DRvlMY5rnXGBp3ODR8MpqHC6AquRTCLzjS57iYff//4QFQqW9n92zctspv\r\n" \ + "czkaPKgjqo1No3Uq0Xaz10rcxyTUPrf5wNVRZ2V0KvllvAAVSzbI4mpdUXztjhST\r\n" \ + "S5A2BeWQAAOr0zq1F7TSRVJpJs7jmB2ai/igkh1IAjcuwV6VwlP+sbw0gjQ0NpGM\r\n" \ + "iHpnlzRAi/tIbtOvMIGOBU2TIfax/5jq1agUx5aPmT5TWAiJPOOP6l5xXnDwxeYS\r\n" \ + "NWqiX9GyusBZjezaCaHabjDLU0qQ\r\n" \ + "-----END CERTIFICATE-----\r\n" +/* END FILE */ + +/* This is taken from tests/data_files/test-ca-sha1.crt.der. */ +/* BEGIN FILE binary macro TEST_CA_CRT_RSA_SHA1_DER tests/data_files/test-ca-sha1.crt.der */ +#define TEST_CA_CRT_RSA_SHA1_DER { \ + 0x30, 0x82, 0x03, 0x41, 0x30, 0x82, 0x02, 0x29, 0xa0, 0x03, 0x02, 0x01, \ + 0x02, 0x02, 0x01, 0x03, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, \ + 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x3b, 0x31, 0x0b, 0x30, \ + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, \ + 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x08, 0x50, 0x6f, 0x6c, \ + 0x61, 0x72, 0x53, 0x53, 0x4c, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, \ + 0x04, 0x03, 0x0c, 0x10, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, 0x53, 0x4c, \ + 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, \ + 0x31, 0x31, 0x30, 0x32, 0x31, 0x32, 0x31, 0x34, 0x34, 0x34, 0x30, 0x30, \ + 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x30, 0x32, 0x31, 0x32, 0x31, 0x34, 0x34, \ + 0x34, 0x30, 0x30, 0x5a, 0x30, 0x3b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, \ + 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, 0x30, 0x0f, 0x06, \ + 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x08, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, \ + 0x53, 0x4c, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, \ + 0x10, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, 0x53, 0x4c, 0x20, 0x54, 0x65, \ + 0x73, 0x74, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, \ + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, \ + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, \ + 0x01, 0x00, 0xc0, 0xdf, 0x37, 0xfc, 0x17, 0xbb, 0xe0, 0x96, 0x9d, 0x3f, \ + 0x86, 0xde, 0x96, 0x32, 0x7d, 0x44, 0xa5, 0x16, 0xa0, 0xcd, 0x21, 0xf1, \ + 0x99, 0xd4, 0xec, 0xea, 0xcb, 0x7c, 0x18, 0x58, 0x08, 0x94, 0xa5, 0xec, \ + 0x9b, 0xc5, 0x8b, 0xdf, 0x1a, 0x1e, 0x99, 0x38, 0x99, 0x87, 0x1e, 0x7b, \ + 0xc0, 0x8d, 0x39, 0xdf, 0x38, 0x5d, 0x70, 0x78, 0x07, 0xd3, 0x9e, 0xd9, \ + 0x93, 0xe8, 0xb9, 0x72, 0x51, 0xc5, 0xce, 0xa3, 0x30, 0x52, 0xa9, 0xf2, \ + 0xe7, 0x40, 0x70, 0x14, 0xcb, 0x44, 0xa2, 0x72, 0x0b, 0xc2, 0xe5, 0x40, \ + 0xf9, 0x3e, 0xe5, 0xa6, 0x0e, 0xb3, 0xf9, 0xec, 0x4a, 0x63, 0xc0, 0xb8, \ + 0x29, 0x00, 0x74, 0x9c, 0x57, 0x3b, 0xa8, 0xa5, 0x04, 0x90, 0x71, 0xf1, \ + 0xbd, 0x83, 0xd9, 0x3f, 0xd6, 0xa5, 0xe2, 0x3c, 0x2a, 0x8f, 0xef, 0x27, \ + 0x60, 0xc3, 0xc6, 0x9f, 0xcb, 0xba, 0xec, 0x60, 0x7d, 0xb7, 0xe6, 0x84, \ + 0x32, 0xbe, 0x4f, 0xfb, 0x58, 0x26, 0x22, 0x03, 0x5b, 0xd4, 0xb4, 0xd5, \ + 0xfb, 0xf5, 0xe3, 0x96, 0x2e, 0x70, 0xc0, 0xe4, 0x2e, 0xbd, 0xfc, 0x2e, \ + 0xee, 0xe2, 0x41, 0x55, 0xc0, 0x34, 0x2e, 0x7d, 0x24, 0x72, 0x69, 0xcb, \ + 0x47, 0xb1, 0x14, 0x40, 0x83, 0x7d, 0x67, 0xf4, 0x86, 0xf6, 0x31, 0xab, \ + 0xf1, 0x79, 0xa4, 0xb2, 0xb5, 0x2e, 0x12, 0xf9, 0x84, 0x17, 0xf0, 0x62, \ + 0x6f, 0x27, 0x3e, 0x13, 0x58, 0xb1, 0x54, 0x0d, 0x21, 0x9a, 0x73, 0x37, \ + 0xa1, 0x30, 0xcf, 0x6f, 0x92, 0xdc, 0xf6, 0xe9, 0xfc, 0xac, 0xdb, 0x2e, \ + 0x28, 0xd1, 0x7e, 0x02, 0x4b, 0x23, 0xa0, 0x15, 0xf2, 0x38, 0x65, 0x64, \ + 0x09, 0xea, 0x0c, 0x6e, 0x8e, 0x1b, 0x17, 0xa0, 0x71, 0xc8, 0xb3, 0x9b, \ + 0xc9, 0xab, 0xe9, 0xc3, 0xf2, 0xcf, 0x87, 0x96, 0x8f, 0x80, 0x02, 0x32, \ + 0x9e, 0x99, 0x58, 0x6f, 0xa2, 0xd5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, \ + 0x50, 0x30, 0x4e, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x05, \ + 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, \ + 0x04, 0x16, 0x04, 0x14, 0xb4, 0x5a, 0xe4, 0xa5, 0xb3, 0xde, 0xd2, 0x52, \ + 0xf6, 0xb9, 0xd5, 0xa6, 0x95, 0x0f, 0xeb, 0x3e, 0xbc, 0xc7, 0xfd, 0xff, \ + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, \ + 0x14, 0xb4, 0x5a, 0xe4, 0xa5, 0xb3, 0xde, 0xd2, 0x52, 0xf6, 0xb9, 0xd5, \ + 0xa6, 0x95, 0x0f, 0xeb, 0x3e, 0xbc, 0xc7, 0xfd, 0xff, 0x30, 0x0d, 0x06, \ + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, \ + 0x03, 0x82, 0x01, 0x01, 0x00, 0x01, 0x13, 0x73, 0x84, 0x3d, 0xf1, 0x1d, \ + 0xfd, 0xb7, 0x09, 0x5b, 0x96, 0x5d, 0x53, 0x7f, 0xd5, 0x80, 0xf3, 0x52, \ + 0xe2, 0xd3, 0x33, 0x87, 0xc8, 0x27, 0x24, 0xff, 0xd5, 0xd8, 0x57, 0x2f, \ + 0x16, 0xd1, 0xb2, 0x94, 0xca, 0x50, 0xab, 0xa6, 0x27, 0x10, 0x16, 0x08, \ + 0xc8, 0x11, 0xc0, 0x2f, 0x80, 0xd1, 0xbe, 0x53, 0x18, 0xe6, 0xb9, 0xd7, \ + 0x18, 0x1a, 0x77, 0x38, 0x34, 0x7c, 0x32, 0x9a, 0x87, 0x0b, 0xa0, 0x2a, \ + 0xb9, 0x14, 0xc2, 0x2f, 0x38, 0xd2, 0xe7, 0xb8, 0x98, 0x7d, 0xff, 0xff, \ + 0xe1, 0x01, 0x50, 0xa9, 0x6f, 0x67, 0xf7, 0x6c, 0xdc, 0xb6, 0xca, 0x6f, \ + 0x73, 0x39, 0x1a, 0x3c, 0xa8, 0x23, 0xaa, 0x8d, 0x4d, 0xa3, 0x75, 0x2a, \ + 0xd1, 0x76, 0xb3, 0xd7, 0x4a, 0xdc, 0xc7, 0x24, 0xd4, 0x3e, 0xb7, 0xf9, \ + 0xc0, 0xd5, 0x51, 0x67, 0x65, 0x74, 0x2a, 0xf9, 0x65, 0xbc, 0x00, 0x15, \ + 0x4b, 0x36, 0xc8, 0xe2, 0x6a, 0x5d, 0x51, 0x7c, 0xed, 0x8e, 0x14, 0x93, \ + 0x4b, 0x90, 0x36, 0x05, 0xe5, 0x90, 0x00, 0x03, 0xab, 0xd3, 0x3a, 0xb5, \ + 0x17, 0xb4, 0xd2, 0x45, 0x52, 0x69, 0x26, 0xce, 0xe3, 0x98, 0x1d, 0x9a, \ + 0x8b, 0xf8, 0xa0, 0x92, 0x1d, 0x48, 0x02, 0x37, 0x2e, 0xc1, 0x5e, 0x95, \ + 0xc2, 0x53, 0xfe, 0xb1, 0xbc, 0x34, 0x82, 0x34, 0x34, 0x36, 0x91, 0x8c, \ + 0x88, 0x7a, 0x67, 0x97, 0x34, 0x40, 0x8b, 0xfb, 0x48, 0x6e, 0xd3, 0xaf, \ + 0x30, 0x81, 0x8e, 0x05, 0x4d, 0x93, 0x21, 0xf6, 0xb1, 0xff, 0x98, 0xea, \ + 0xd5, 0xa8, 0x14, 0xc7, 0x96, 0x8f, 0x99, 0x3e, 0x53, 0x58, 0x08, 0x89, \ + 0x3c, 0xe3, 0x8f, 0xea, 0x5e, 0x71, 0x5e, 0x70, 0xf0, 0xc5, 0xe6, 0x12, \ + 0x35, 0x6a, 0xa2, 0x5f, 0xd1, 0xb2, 0xba, 0xc0, 0x59, 0x8d, 0xec, 0xda, \ + 0x09, 0xa1, 0xda, 0x6e, 0x30, 0xcb, 0x53, 0x4a, 0x90 \ +} +/* END FILE */ + +/* This is taken from tests/data_files/test-ca.key */ +/* BEGIN FILE string macro TEST_CA_KEY_RSA_PEM tests/data_files/test-ca.key */ +#define TEST_CA_KEY_RSA_PEM \ + "-----BEGIN RSA PRIVATE KEY-----\r\n" \ + "Proc-Type: 4,ENCRYPTED\r\n" \ + "DEK-Info: DES-EDE3-CBC,A8A95B05D5B7206B\r\n" \ + "\r\n" \ + "9Qd9GeArejl1GDVh2lLV1bHt0cPtfbh5h/5zVpAVaFpqtSPMrElp50Rntn9et+JA\r\n" \ + "7VOyboR+Iy2t/HU4WvA687k3Bppe9GwKHjHhtl//8xFKwZr3Xb5yO5JUP8AUctQq\r\n" \ + "Nb8CLlZyuUC+52REAAthdWgsX+7dJO4yabzUcQ22Tp9JSD0hiL43BlkWYUNK3dAo\r\n" \ + "PZlmiptjnzVTjg1MxsBSydZinWOLBV8/JQgxSPo2yD4uEfig28qbvQ2wNIn0pnAb\r\n" \ + "GxnSAOazkongEGfvcjIIs+LZN9gXFhxcOh6kc4Q/c99B7QWETwLLkYgZ+z1a9VY9\r\n" \ + "gEU7CwCxYCD+h9hY6FPmsK0/lC4O7aeRKpYq00rPPxs6i7phiexg6ax6yTMmArQq\r\n" \ + "QmK3TAsJm8V/J5AWpLEV6jAFgRGymGGHnof0DXzVWZidrcZJWTNuGEX90nB3ee2w\r\n" \ + "PXJEFWKoD3K3aFcSLdHYr3mLGxP7H9ThQai9VsycxZKS5kwvBKQ//YMrmFfwPk8x\r\n" \ + "vTeY4KZMaUrveEel5tWZC94RSMKgxR6cyE1nBXyTQnDOGbfpNNgBKxyKbINWoOJU\r\n" \ + "WJZAwlsQn+QzCDwpri7+sV1mS3gBE6UY7aQmnmiiaC2V3Hbphxct/en5QsfDOt1X\r\n" \ + "JczSfpRWLlbPznZg8OQh/VgCMA58N5DjOzTIK7sJJ5r+94ZBTCpgAMbF588f0NTR\r\n" \ + "KCe4yrxGJR7X02M4nvD4IwOlpsQ8xQxZtOSgXv4LkxvdU9XJJKWZ/XNKJeWztxSe\r\n" \ + "Z1vdTc2YfsDBA2SEv33vxHx2g1vqtw8SjDRT2RaQSS0QuSaMJimdOX6mTOCBKk1J\r\n" \ + "9Q5mXTrER+/LnK0jEmXsBXWA5bqqVZIyahXSx4VYZ7l7w/PHiUDtDgyRhMMKi4n2\r\n" \ + "iQvQcWSQTjrpnlJbca1/DkpRt3YwrvJwdqb8asZU2VrNETh5x0QVefDRLFiVpif/\r\n" \ + "tUaeAe/P1F8OkS7OIZDs1SUbv/sD2vMbhNkUoCms3/PvNtdnvgL4F0zhaDpKCmlT\r\n" \ + "P8vx49E7v5CyRNmED9zZg4o3wmMqrQO93PtTug3Eu9oVx1zPQM1NVMyBa2+f29DL\r\n" \ + "1nuTCeXdo9+ni45xx+jAI4DCwrRdhJ9uzZyC6962H37H6D+5naNvClFR1s6li1Gb\r\n" \ + "nqPoiy/OBsEx9CaDGcqQBp5Wme/3XW+6z1ISOx+igwNTVCT14mHdBMbya0eIKft5\r\n" \ + "X+GnwtgEMyCYyyWuUct8g4RzErcY9+yW9Om5Hzpx4zOuW4NPZgPDTgK+t2RSL/Yq\r\n" \ + "rE1njrgeGYcVeG3f+OftH4s6fPbq7t1A5ZgUscbLMBqr9tK+OqygR4EgKBPsH6Cz\r\n" \ + "L6zlv/2RV0qAHvVuDJcIDIgwY5rJtINEm32rhOeFNJwZS5MNIC1czXZx5//ugX7l\r\n" \ + "I4sy5nbVhwSjtAk8Xg5dZbdTZ6mIrb7xqH+fdakZor1khG7bC2uIwibD3cSl2XkR\r\n" \ + "wN48lslbHnqqagr6Xm1nNOSVl8C/6kbJEsMpLhAezfRtGwvOucoaE+WbeUNolGde\r\n" \ + "P/eQiddSf0brnpiLJRh7qZrl9XuqYdpUqnoEdMAfotDOID8OtV7gt8a48ad8VPW2\r\n" \ + "-----END RSA PRIVATE KEY-----\r\n" +/* END FILE */ + +#define TEST_CA_PWD_RSA_PEM "PolarSSLTest" + +/* This was generated from test-ca.key.der using `xxd -i`. */ +/* BEGIN FILE binary macro TEST_CA_KEY_RSA_DER tests/data_files/test-ca.key.der */ +#define TEST_CA_KEY_RSA_DER { \ + 0x30, 0x82, 0x04, 0xa4, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00, \ + 0xc0, 0xdf, 0x37, 0xfc, 0x17, 0xbb, 0xe0, 0x96, 0x9d, 0x3f, 0x86, 0xde, \ + 0x96, 0x32, 0x7d, 0x44, 0xa5, 0x16, 0xa0, 0xcd, 0x21, 0xf1, 0x99, 0xd4, \ + 0xec, 0xea, 0xcb, 0x7c, 0x18, 0x58, 0x08, 0x94, 0xa5, 0xec, 0x9b, 0xc5, \ + 0x8b, 0xdf, 0x1a, 0x1e, 0x99, 0x38, 0x99, 0x87, 0x1e, 0x7b, 0xc0, 0x8d, \ + 0x39, 0xdf, 0x38, 0x5d, 0x70, 0x78, 0x07, 0xd3, 0x9e, 0xd9, 0x93, 0xe8, \ + 0xb9, 0x72, 0x51, 0xc5, 0xce, 0xa3, 0x30, 0x52, 0xa9, 0xf2, 0xe7, 0x40, \ + 0x70, 0x14, 0xcb, 0x44, 0xa2, 0x72, 0x0b, 0xc2, 0xe5, 0x40, 0xf9, 0x3e, \ + 0xe5, 0xa6, 0x0e, 0xb3, 0xf9, 0xec, 0x4a, 0x63, 0xc0, 0xb8, 0x29, 0x00, \ + 0x74, 0x9c, 0x57, 0x3b, 0xa8, 0xa5, 0x04, 0x90, 0x71, 0xf1, 0xbd, 0x83, \ + 0xd9, 0x3f, 0xd6, 0xa5, 0xe2, 0x3c, 0x2a, 0x8f, 0xef, 0x27, 0x60, 0xc3, \ + 0xc6, 0x9f, 0xcb, 0xba, 0xec, 0x60, 0x7d, 0xb7, 0xe6, 0x84, 0x32, 0xbe, \ + 0x4f, 0xfb, 0x58, 0x26, 0x22, 0x03, 0x5b, 0xd4, 0xb4, 0xd5, 0xfb, 0xf5, \ + 0xe3, 0x96, 0x2e, 0x70, 0xc0, 0xe4, 0x2e, 0xbd, 0xfc, 0x2e, 0xee, 0xe2, \ + 0x41, 0x55, 0xc0, 0x34, 0x2e, 0x7d, 0x24, 0x72, 0x69, 0xcb, 0x47, 0xb1, \ + 0x14, 0x40, 0x83, 0x7d, 0x67, 0xf4, 0x86, 0xf6, 0x31, 0xab, 0xf1, 0x79, \ + 0xa4, 0xb2, 0xb5, 0x2e, 0x12, 0xf9, 0x84, 0x17, 0xf0, 0x62, 0x6f, 0x27, \ + 0x3e, 0x13, 0x58, 0xb1, 0x54, 0x0d, 0x21, 0x9a, 0x73, 0x37, 0xa1, 0x30, \ + 0xcf, 0x6f, 0x92, 0xdc, 0xf6, 0xe9, 0xfc, 0xac, 0xdb, 0x2e, 0x28, 0xd1, \ + 0x7e, 0x02, 0x4b, 0x23, 0xa0, 0x15, 0xf2, 0x38, 0x65, 0x64, 0x09, 0xea, \ + 0x0c, 0x6e, 0x8e, 0x1b, 0x17, 0xa0, 0x71, 0xc8, 0xb3, 0x9b, 0xc9, 0xab, \ + 0xe9, 0xc3, 0xf2, 0xcf, 0x87, 0x96, 0x8f, 0x80, 0x02, 0x32, 0x9e, 0x99, \ + 0x58, 0x6f, 0xa2, 0xd5, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x82, 0x01, \ + 0x00, 0x3f, 0xf7, 0x07, 0xd3, 0x34, 0x6f, 0xdb, 0xc9, 0x37, 0xb7, 0x84, \ + 0xdc, 0x37, 0x45, 0xe1, 0x63, 0xad, 0xb8, 0xb6, 0x75, 0xb1, 0xc7, 0x35, \ + 0xb4, 0x77, 0x2a, 0x5b, 0x77, 0xf9, 0x7e, 0xe0, 0xc1, 0xa3, 0xd1, 0xb7, \ + 0xcb, 0xa9, 0x5a, 0xc1, 0x87, 0xda, 0x5a, 0xfa, 0x17, 0xe4, 0xd5, 0x38, \ + 0x03, 0xde, 0x68, 0x98, 0x81, 0xec, 0xb5, 0xf2, 0x2a, 0x8d, 0xe9, 0x2c, \ + 0xf3, 0xa6, 0xe5, 0x32, 0x17, 0x7f, 0x33, 0x81, 0xe8, 0x38, 0x72, 0xd5, \ + 0x9c, 0xfa, 0x4e, 0xfb, 0x26, 0xf5, 0x15, 0x0b, 0xaf, 0x84, 0x66, 0xab, \ + 0x02, 0xe0, 0x18, 0xd5, 0x91, 0x7c, 0xd6, 0x8f, 0xc9, 0x4b, 0x76, 0x08, \ + 0x2b, 0x1d, 0x81, 0x68, 0x30, 0xe1, 0xfa, 0x70, 0x6c, 0x13, 0x4e, 0x10, \ + 0x03, 0x35, 0x3e, 0xc5, 0xca, 0x58, 0x20, 0x8a, 0x21, 0x18, 0x38, 0xa0, \ + 0x0f, 0xed, 0xc4, 0xbb, 0x45, 0x6f, 0xf5, 0x84, 0x5b, 0xb0, 0xcf, 0x4e, \ + 0x9d, 0x58, 0x13, 0x6b, 0x35, 0x35, 0x69, 0xa1, 0xd2, 0xc4, 0xf2, 0xc1, \ + 0x48, 0x04, 0x20, 0x51, 0xb9, 0x6b, 0xa4, 0x5d, 0xa5, 0x4b, 0x84, 0x88, \ + 0x43, 0x48, 0x99, 0x2c, 0xbb, 0xa4, 0x97, 0xd6, 0xd6, 0x18, 0xf6, 0xec, \ + 0x5c, 0xd1, 0x31, 0x49, 0xc9, 0xf2, 0x8f, 0x0b, 0x4d, 0xef, 0x09, 0x02, \ + 0xfe, 0x7d, 0xfd, 0xbb, 0xaf, 0x2b, 0x83, 0x94, 0x22, 0xc4, 0xa7, 0x3e, \ + 0x66, 0xf5, 0xe0, 0x57, 0xdc, 0xf2, 0xed, 0x2c, 0x3e, 0x81, 0x74, 0x76, \ + 0x1e, 0x96, 0x6f, 0x74, 0x1e, 0x32, 0x0e, 0x14, 0x31, 0xd0, 0x74, 0xf0, \ + 0xf4, 0x07, 0xbd, 0xc3, 0xd1, 0x22, 0xc2, 0xa8, 0x95, 0x92, 0x06, 0x7f, \ + 0x43, 0x02, 0x91, 0xbc, 0xdd, 0x23, 0x01, 0x89, 0x94, 0x20, 0x44, 0x64, \ + 0xf5, 0x1d, 0x67, 0xd2, 0x8f, 0xe8, 0x69, 0xa5, 0x29, 0x25, 0xe6, 0x50, \ + 0x9c, 0xe3, 0xe9, 0xcb, 0x75, 0x02, 0x81, 0x81, 0x00, 0xe2, 0x29, 0x3e, \ + 0xaa, 0x6b, 0xd5, 0x59, 0x1e, 0x9c, 0xe6, 0x47, 0xd5, 0xb6, 0xd7, 0xe3, \ + 0xf1, 0x8e, 0x9e, 0xe9, 0x83, 0x5f, 0x10, 0x9f, 0x63, 0xec, 0x04, 0x44, \ + 0xcc, 0x3f, 0xf8, 0xd9, 0x3a, 0x17, 0xe0, 0x4f, 0xfe, 0xd8, 0x4d, 0xcd, \ + 0x46, 0x54, 0x74, 0xbf, 0x0a, 0xc4, 0x67, 0x9c, 0xa7, 0xd8, 0x89, 0x65, \ + 0x4c, 0xfd, 0x58, 0x2a, 0x47, 0x0f, 0xf4, 0x37, 0xb6, 0x55, 0xb0, 0x1d, \ + 0xed, 0xa7, 0x39, 0xfc, 0x4f, 0xa3, 0xc4, 0x75, 0x3a, 0xa3, 0x98, 0xa7, \ + 0x45, 0xf5, 0x66, 0xcb, 0x7c, 0x65, 0xfb, 0x80, 0x23, 0xe6, 0xff, 0xfd, \ + 0x99, 0x1f, 0x8e, 0x6b, 0xff, 0x5e, 0x93, 0x66, 0xdf, 0x6c, 0x6f, 0xc3, \ + 0xf6, 0x38, 0x2e, 0xff, 0x69, 0xb5, 0xac, 0xae, 0xbb, 0xc6, 0x71, 0x16, \ + 0x6b, 0xd0, 0xf8, 0x22, 0xd9, 0xf8, 0xa2, 0x72, 0x20, 0xd2, 0xe2, 0x3a, \ + 0x70, 0x4b, 0xde, 0xab, 0x2f, 0x02, 0x81, 0x81, 0x00, 0xda, 0x51, 0x9b, \ + 0xb8, 0xb2, 0x2a, 0x14, 0x75, 0x58, 0x40, 0x8d, 0x27, 0x70, 0xfa, 0x31, \ + 0x48, 0xb0, 0x20, 0x21, 0x34, 0xfa, 0x4c, 0x57, 0xa8, 0x11, 0x88, 0xf3, \ + 0xa7, 0xae, 0x21, 0xe9, 0xb6, 0x2b, 0xd1, 0xcd, 0xa7, 0xf8, 0xd8, 0x0c, \ + 0x8a, 0x76, 0x22, 0x35, 0x44, 0xce, 0x3f, 0x25, 0x29, 0x83, 0x7d, 0x79, \ + 0xa7, 0x31, 0xd6, 0xec, 0xb2, 0xbf, 0xda, 0x34, 0xb6, 0xf6, 0xb2, 0x3b, \ + 0xf3, 0x78, 0x5a, 0x04, 0x83, 0x33, 0x3e, 0xa2, 0xe2, 0x81, 0x82, 0x13, \ + 0xd4, 0x35, 0x17, 0x63, 0x9b, 0x9e, 0xc4, 0x8d, 0x91, 0x4c, 0x03, 0x77, \ + 0xc7, 0x71, 0x5b, 0xee, 0x83, 0x6d, 0xd5, 0x78, 0x88, 0xf6, 0x2c, 0x79, \ + 0xc2, 0x4a, 0xb4, 0x79, 0x90, 0x70, 0xbf, 0xdf, 0x34, 0x56, 0x96, 0x71, \ + 0xe3, 0x0e, 0x68, 0x91, 0xbc, 0xea, 0xcb, 0x33, 0xc0, 0xbe, 0x45, 0xd7, \ + 0xfc, 0x30, 0xfd, 0x01, 0x3b, 0x02, 0x81, 0x81, 0x00, 0xd2, 0x9f, 0x2a, \ + 0xb7, 0x38, 0x19, 0xc7, 0x17, 0x95, 0x73, 0x78, 0xae, 0xf5, 0xcb, 0x75, \ + 0x83, 0x7f, 0x19, 0x4b, 0xcb, 0x86, 0xfb, 0x4a, 0x15, 0x9a, 0xb6, 0x17, \ + 0x04, 0x49, 0x07, 0x8d, 0xf6, 0x66, 0x4a, 0x06, 0xf6, 0x05, 0xa7, 0xdf, \ + 0x66, 0x82, 0x3c, 0xff, 0xb6, 0x1d, 0x57, 0x89, 0x33, 0x5f, 0x9c, 0x05, \ + 0x75, 0x7f, 0xf3, 0x5d, 0xdc, 0x34, 0x65, 0x72, 0x85, 0x22, 0xa4, 0x14, \ + 0x1b, 0x41, 0xc3, 0xe4, 0xd0, 0x9e, 0x69, 0xd5, 0xeb, 0x38, 0x74, 0x70, \ + 0x43, 0xdc, 0xd9, 0x50, 0xe4, 0x97, 0x6d, 0x73, 0xd6, 0xfb, 0xc8, 0xa7, \ + 0xfa, 0xb4, 0xc2, 0xc4, 0x9d, 0x5d, 0x0c, 0xd5, 0x9f, 0x79, 0xb3, 0x54, \ + 0xc2, 0xb7, 0x6c, 0x3d, 0x7d, 0xcb, 0x2d, 0xf8, 0xc4, 0xf3, 0x78, 0x5a, \ + 0x33, 0x2a, 0xb8, 0x0c, 0x6d, 0x06, 0xfa, 0xf2, 0x62, 0xd3, 0x42, 0xd0, \ + 0xbd, 0xc8, 0x4a, 0xa5, 0x0d, 0x02, 0x81, 0x81, 0x00, 0xd4, 0xa9, 0x90, \ + 0x15, 0xde, 0xbf, 0x2c, 0xc4, 0x8d, 0x9d, 0xfb, 0xa1, 0xc2, 0xe4, 0x83, \ + 0xe3, 0x79, 0x65, 0x22, 0xd3, 0xb7, 0x49, 0x6c, 0x4d, 0x94, 0x1f, 0x22, \ + 0xb1, 0x60, 0xe7, 0x3a, 0x00, 0xb1, 0x38, 0xa2, 0xab, 0x0f, 0xb4, 0x6c, \ + 0xaa, 0xe7, 0x9e, 0x34, 0xe3, 0x7c, 0x40, 0x78, 0x53, 0xb2, 0xf9, 0x23, \ + 0xea, 0xa0, 0x9a, 0xea, 0x60, 0xc8, 0x8f, 0xa6, 0xaf, 0xdf, 0x29, 0x09, \ + 0x4b, 0x06, 0x1e, 0x31, 0xad, 0x17, 0xda, 0xd8, 0xd1, 0xe9, 0x33, 0xab, \ + 0x5b, 0x18, 0x08, 0x5b, 0x87, 0xf8, 0xa5, 0x1f, 0xfd, 0xbb, 0xdc, 0xd8, \ + 0xed, 0x97, 0x57, 0xe4, 0xc3, 0x73, 0xd6, 0xf0, 0x9e, 0x01, 0xa6, 0x9b, \ + 0x48, 0x8e, 0x7a, 0xb4, 0xbb, 0xe5, 0x88, 0x91, 0xc5, 0x2a, 0xdf, 0x4b, \ + 0xba, 0xd0, 0x8b, 0x3e, 0x03, 0x97, 0x77, 0x2f, 0x47, 0x7e, 0x51, 0x0c, \ + 0xae, 0x65, 0x8d, 0xde, 0x87, 0x02, 0x81, 0x80, 0x20, 0x24, 0x0f, 0xd2, \ + 0xaf, 0xc2, 0x28, 0x3b, 0x97, 0x20, 0xb2, 0x92, 0x49, 0xeb, 0x09, 0x68, \ + 0x40, 0xb2, 0xbe, 0xd1, 0xc3, 0x83, 0x94, 0x34, 0x38, 0xd6, 0xc9, 0xec, \ + 0x34, 0x09, 0xf9, 0x41, 0x6d, 0x5c, 0x42, 0x94, 0xf7, 0x04, 0xfc, 0x32, \ + 0x39, 0x69, 0xbc, 0x1c, 0xfb, 0x3e, 0x61, 0x98, 0xc0, 0x80, 0xd8, 0x36, \ + 0x47, 0xc3, 0x6d, 0xc2, 0x2e, 0xe7, 0x81, 0x2a, 0x17, 0x34, 0x64, 0x30, \ + 0x4e, 0x96, 0xbb, 0x26, 0x16, 0xb9, 0x41, 0x36, 0xfe, 0x8a, 0xd6, 0x53, \ + 0x7c, 0xaa, 0xec, 0x39, 0x42, 0x50, 0xef, 0xe3, 0xb3, 0x01, 0x28, 0x32, \ + 0xca, 0x6d, 0xf5, 0x9a, 0x1e, 0x9f, 0x37, 0xbe, 0xfe, 0x38, 0x20, 0x22, \ + 0x91, 0x8c, 0xcd, 0x95, 0x02, 0xf2, 0x4d, 0x6f, 0x1a, 0xb4, 0x43, 0xf0, \ + 0x19, 0xdf, 0x65, 0xc0, 0x92, 0xe7, 0x9d, 0x2f, 0x09, 0xe7, 0xec, 0x69, \ + 0xa8, 0xc2, 0x8f, 0x0d \ +} +/* END FILE */ + +/* + * Test server Certificates + * + * Test server certificates are defined for each choice + * of the following parameters: + * - PEM or DER encoding + * - SHA-1 or SHA-256 hash + * - RSA or EC key + * + * Things to add: + * - multiple EC curve types + */ + +/* This is taken from tests/data_files/server5.crt. */ +/* BEGIN FILE string macro TEST_SRV_CRT_EC_PEM tests/data_files/server5.crt */ +#define TEST_SRV_CRT_EC_PEM \ + "-----BEGIN CERTIFICATE-----\r\n" \ + "MIICHzCCAaWgAwIBAgIBCTAKBggqhkjOPQQDAjA+MQswCQYDVQQGEwJOTDERMA8G\r\n" \ + "A1UEChMIUG9sYXJTU0wxHDAaBgNVBAMTE1BvbGFyc3NsIFRlc3QgRUMgQ0EwHhcN\r\n" \ + "MTMwOTI0MTU1MjA0WhcNMjMwOTIyMTU1MjA0WjA0MQswCQYDVQQGEwJOTDERMA8G\r\n" \ + "A1UEChMIUG9sYXJTU0wxEjAQBgNVBAMTCWxvY2FsaG9zdDBZMBMGByqGSM49AgEG\r\n" \ + "CCqGSM49AwEHA0IABDfMVtl2CR5acj7HWS3/IG7ufPkGkXTQrRS192giWWKSTuUA\r\n" \ + "2CMR/+ov0jRdXRa9iojCa3cNVc2KKg76Aci07f+jgZ0wgZowCQYDVR0TBAIwADAd\r\n" \ + "BgNVHQ4EFgQUUGGlj9QH2deCAQzlZX+MY0anE74wbgYDVR0jBGcwZYAUnW0gJEkB\r\n" \ + "PyvLeLUZvH4kydv7NnyhQqRAMD4xCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xh\r\n" \ + "clNTTDEcMBoGA1UEAxMTUG9sYXJzc2wgVGVzdCBFQyBDQYIJAMFD4n5iQ8zoMAoG\r\n" \ + "CCqGSM49BAMCA2gAMGUCMQCaLFzXptui5WQN8LlO3ddh1hMxx6tzgLvT03MTVK2S\r\n" \ + "C12r0Lz3ri/moSEpNZWqPjkCMCE2f53GXcYLqyfyJR078c/xNSUU5+Xxl7VZ414V\r\n" \ + "fGa5kHvHARBPc8YAIVIqDvHH1Q==\r\n" \ + "-----END CERTIFICATE-----\r\n" +/* END FILE */ + +/* This is generated from tests/data_files/server5.crt.der using `xxd -i`. */ +/* BEGIN FILE binary macro TEST_SRV_CRT_EC_DER tests/data_files/server5.crt.der */ +#define TEST_SRV_CRT_EC_DER { \ + 0x30, 0x82, 0x02, 0x1f, 0x30, 0x82, 0x01, 0xa5, 0xa0, 0x03, 0x02, 0x01, \ + 0x02, 0x02, 0x01, 0x09, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, \ + 0x3d, 0x04, 0x03, 0x02, 0x30, 0x3e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, \ + 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, 0x30, 0x0f, 0x06, \ + 0x03, 0x55, 0x04, 0x0a, 0x13, 0x08, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, \ + 0x53, 0x4c, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, \ + 0x13, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x73, 0x73, 0x6c, 0x20, 0x54, 0x65, \ + 0x73, 0x74, 0x20, 0x45, 0x43, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, \ + 0x31, 0x33, 0x30, 0x39, 0x32, 0x34, 0x31, 0x35, 0x35, 0x32, 0x30, 0x34, \ + 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x39, 0x32, 0x32, 0x31, 0x35, 0x35, \ + 0x32, 0x30, 0x34, 0x5a, 0x30, 0x34, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, \ + 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, 0x30, 0x0f, 0x06, \ + 0x03, 0x55, 0x04, 0x0a, 0x13, 0x08, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, \ + 0x53, 0x4c, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, \ + 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x30, 0x59, \ + 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, \ + 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, \ + 0x04, 0x37, 0xcc, 0x56, 0xd9, 0x76, 0x09, 0x1e, 0x5a, 0x72, 0x3e, 0xc7, \ + 0x59, 0x2d, 0xff, 0x20, 0x6e, 0xee, 0x7c, 0xf9, 0x06, 0x91, 0x74, 0xd0, \ + 0xad, 0x14, 0xb5, 0xf7, 0x68, 0x22, 0x59, 0x62, 0x92, 0x4e, 0xe5, 0x00, \ + 0xd8, 0x23, 0x11, 0xff, 0xea, 0x2f, 0xd2, 0x34, 0x5d, 0x5d, 0x16, 0xbd, \ + 0x8a, 0x88, 0xc2, 0x6b, 0x77, 0x0d, 0x55, 0xcd, 0x8a, 0x2a, 0x0e, 0xfa, \ + 0x01, 0xc8, 0xb4, 0xed, 0xff, 0xa3, 0x81, 0x9d, 0x30, 0x81, 0x9a, 0x30, \ + 0x09, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, \ + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x50, 0x61, 0xa5, \ + 0x8f, 0xd4, 0x07, 0xd9, 0xd7, 0x82, 0x01, 0x0c, 0xe5, 0x65, 0x7f, 0x8c, \ + 0x63, 0x46, 0xa7, 0x13, 0xbe, 0x30, 0x6e, 0x06, 0x03, 0x55, 0x1d, 0x23, \ + 0x04, 0x67, 0x30, 0x65, 0x80, 0x14, 0x9d, 0x6d, 0x20, 0x24, 0x49, 0x01, \ + 0x3f, 0x2b, 0xcb, 0x78, 0xb5, 0x19, 0xbc, 0x7e, 0x24, 0xc9, 0xdb, 0xfb, \ + 0x36, 0x7c, 0xa1, 0x42, 0xa4, 0x40, 0x30, 0x3e, 0x31, 0x0b, 0x30, 0x09, \ + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, 0x30, \ + 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x08, 0x50, 0x6f, 0x6c, 0x61, \ + 0x72, 0x53, 0x53, 0x4c, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, \ + 0x03, 0x13, 0x13, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x73, 0x73, 0x6c, 0x20, \ + 0x54, 0x65, 0x73, 0x74, 0x20, 0x45, 0x43, 0x20, 0x43, 0x41, 0x82, 0x09, \ + 0x00, 0xc1, 0x43, 0xe2, 0x7e, 0x62, 0x43, 0xcc, 0xe8, 0x30, 0x0a, 0x06, \ + 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x68, 0x00, \ + 0x30, 0x65, 0x02, 0x31, 0x00, 0x9a, 0x2c, 0x5c, 0xd7, 0xa6, 0xdb, 0xa2, \ + 0xe5, 0x64, 0x0d, 0xf0, 0xb9, 0x4e, 0xdd, 0xd7, 0x61, 0xd6, 0x13, 0x31, \ + 0xc7, 0xab, 0x73, 0x80, 0xbb, 0xd3, 0xd3, 0x73, 0x13, 0x54, 0xad, 0x92, \ + 0x0b, 0x5d, 0xab, 0xd0, 0xbc, 0xf7, 0xae, 0x2f, 0xe6, 0xa1, 0x21, 0x29, \ + 0x35, 0x95, 0xaa, 0x3e, 0x39, 0x02, 0x30, 0x21, 0x36, 0x7f, 0x9d, 0xc6, \ + 0x5d, 0xc6, 0x0b, 0xab, 0x27, 0xf2, 0x25, 0x1d, 0x3b, 0xf1, 0xcf, 0xf1, \ + 0x35, 0x25, 0x14, 0xe7, 0xe5, 0xf1, 0x97, 0xb5, 0x59, 0xe3, 0x5e, 0x15, \ + 0x7c, 0x66, 0xb9, 0x90, 0x7b, 0xc7, 0x01, 0x10, 0x4f, 0x73, 0xc6, 0x00, \ + 0x21, 0x52, 0x2a, 0x0e, 0xf1, 0xc7, 0xd5 \ +} +/* END FILE */ + +/* This is taken from tests/data_files/server5.key. */ +/* BEGIN FILE string macro TEST_SRV_KEY_EC_PEM tests/data_files/server5.key */ +#define TEST_SRV_KEY_EC_PEM \ + "-----BEGIN EC PRIVATE KEY-----\r\n" \ + "MHcCAQEEIPEqEyB2AnCoPL/9U/YDHvdqXYbIogTywwyp6/UfDw6noAoGCCqGSM49\r\n" \ + "AwEHoUQDQgAEN8xW2XYJHlpyPsdZLf8gbu58+QaRdNCtFLX3aCJZYpJO5QDYIxH/\r\n" \ + "6i/SNF1dFr2KiMJrdw1VzYoqDvoByLTt/w==\r\n" \ + "-----END EC PRIVATE KEY-----\r\n" +/* END FILE */ + +/* This is generated from tests/data_files/server5.key.der using `xxd -i`. */ +/* BEGIN FILE binary macro TEST_SRV_KEY_EC_DER tests/data_files/server5.key.der */ +#define TEST_SRV_KEY_EC_DER { \ + 0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0xf1, 0x2a, 0x13, 0x20, 0x76, \ + 0x02, 0x70, 0xa8, 0x3c, 0xbf, 0xfd, 0x53, 0xf6, 0x03, 0x1e, 0xf7, 0x6a, \ + 0x5d, 0x86, 0xc8, 0xa2, 0x04, 0xf2, 0xc3, 0x0c, 0xa9, 0xeb, 0xf5, 0x1f, \ + 0x0f, 0x0e, 0xa7, 0xa0, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, \ + 0x03, 0x01, 0x07, 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x37, 0xcc, 0x56, \ + 0xd9, 0x76, 0x09, 0x1e, 0x5a, 0x72, 0x3e, 0xc7, 0x59, 0x2d, 0xff, 0x20, \ + 0x6e, 0xee, 0x7c, 0xf9, 0x06, 0x91, 0x74, 0xd0, 0xad, 0x14, 0xb5, 0xf7, \ + 0x68, 0x22, 0x59, 0x62, 0x92, 0x4e, 0xe5, 0x00, 0xd8, 0x23, 0x11, 0xff, \ + 0xea, 0x2f, 0xd2, 0x34, 0x5d, 0x5d, 0x16, 0xbd, 0x8a, 0x88, 0xc2, 0x6b, \ + 0x77, 0x0d, 0x55, 0xcd, 0x8a, 0x2a, 0x0e, 0xfa, 0x01, 0xc8, 0xb4, 0xed, \ + 0xff \ +} +/* END FILE */ + +/* This is taken from tests/data_files/server2-sha256.crt. */ +/* BEGIN FILE string macro TEST_SRV_CRT_RSA_SHA256_PEM tests/data_files/server2-sha256.crt */ +#define TEST_SRV_CRT_RSA_SHA256_PEM \ + "-----BEGIN CERTIFICATE-----\r\n" \ + "MIIDNzCCAh+gAwIBAgIBAjANBgkqhkiG9w0BAQsFADA7MQswCQYDVQQGEwJOTDER\r\n" \ + "MA8GA1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwHhcN\r\n" \ + "MTkwMjEwMTQ0NDA2WhcNMjkwMjEwMTQ0NDA2WjA0MQswCQYDVQQGEwJOTDERMA8G\r\n" \ + "A1UECgwIUG9sYXJTU0wxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcN\r\n" \ + "AQEBBQADggEPADCCAQoCggEBAMFNo93nzR3RBNdJcriZrA545Do8Ss86ExbQWuTN\r\n" \ + "owCIp+4ea5anUrSQ7y1yej4kmvy2NKwk9XfgJmSMnLAofaHa6ozmyRyWvP7BBFKz\r\n" \ + "NtSj+uGxdtiQwWG0ZlI2oiZTqqt0Xgd9GYLbKtgfoNkNHC1JZvdbJXNG6AuKT2kM\r\n" \ + "tQCQ4dqCEGZ9rlQri2V5kaHiYcPNQEkI7mgM8YuG0ka/0LiqEQMef1aoGh5EGA8P\r\n" \ + "hYvai0Re4hjGYi/HZo36Xdh98yeJKQHFkA4/J/EwyEoO79bex8cna8cFPXrEAjya\r\n" \ + "HT4P6DSYW8tzS1KW2BGiLICIaTla0w+w3lkvEcf36hIBMJcCAwEAAaNNMEswCQYD\r\n" \ + "VR0TBAIwADAdBgNVHQ4EFgQUpQXoZLjc32APUBJNYKhkr02LQ5MwHwYDVR0jBBgw\r\n" \ + "FoAUtFrkpbPe0lL2udWmlQ/rPrzH/f8wDQYJKoZIhvcNAQELBQADggEBAC465FJh\r\n" \ + "Pqel7zJngHIHJrqj/wVAxGAFOTF396XKATGAp+HRCqJ81Ry60CNK1jDzk8dv6M6U\r\n" \ + "HoS7RIFiM/9rXQCbJfiPD5xMTejZp5n5UYHAmxsxDaazfA5FuBhkfokKK6jD4Eq9\r\n" \ + "1C94xGKb6X4/VkaPF7cqoBBw/bHxawXc0UEPjqayiBpCYU/rJoVZgLqFVP7Px3sv\r\n" \ + "a1nOrNx8rPPI1hJ+ZOg8maiPTxHZnBVLakSSLQy/sWeWyazO1RnrbxjrbgQtYKz0\r\n" \ + "e3nwGpu1w13vfckFmUSBhHXH7AAS/HpKC4IH7G2GAk3+n8iSSN71sZzpxonQwVbo\r\n" \ + "pMZqLmbBm/7WPLc=\r\n" \ + "-----END CERTIFICATE-----\r\n" +/* END FILE */ + +/* This is taken from tests/data_files/server2-sha256.crt.der. */ +/* BEGIN FILE binary macro TEST_SRV_CRT_RSA_SHA256_DER tests/data_files/server2-sha256.crt.der */ +#define TEST_SRV_CRT_RSA_SHA256_DER { \ + 0x30, 0x82, 0x03, 0x37, 0x30, 0x82, 0x02, 0x1f, 0xa0, 0x03, 0x02, 0x01, \ + 0x02, 0x02, 0x01, 0x02, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, \ + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x3b, 0x31, 0x0b, 0x30, \ + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, \ + 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x08, 0x50, 0x6f, 0x6c, \ + 0x61, 0x72, 0x53, 0x53, 0x4c, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, \ + 0x04, 0x03, 0x0c, 0x10, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, 0x53, 0x4c, \ + 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, \ + 0x31, 0x39, 0x30, 0x32, 0x31, 0x30, 0x31, 0x34, 0x34, 0x34, 0x30, 0x36, \ + 0x5a, 0x17, 0x0d, 0x32, 0x39, 0x30, 0x32, 0x31, 0x30, 0x31, 0x34, 0x34, \ + 0x34, 0x30, 0x36, 0x5a, 0x30, 0x34, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, \ + 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, 0x30, 0x0f, 0x06, \ + 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x08, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, \ + 0x53, 0x4c, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, \ + 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x30, 0x82, \ + 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, \ + 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, \ + 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xc1, 0x4d, 0xa3, 0xdd, 0xe7, \ + 0xcd, 0x1d, 0xd1, 0x04, 0xd7, 0x49, 0x72, 0xb8, 0x99, 0xac, 0x0e, 0x78, \ + 0xe4, 0x3a, 0x3c, 0x4a, 0xcf, 0x3a, 0x13, 0x16, 0xd0, 0x5a, 0xe4, 0xcd, \ + 0xa3, 0x00, 0x88, 0xa7, 0xee, 0x1e, 0x6b, 0x96, 0xa7, 0x52, 0xb4, 0x90, \ + 0xef, 0x2d, 0x72, 0x7a, 0x3e, 0x24, 0x9a, 0xfc, 0xb6, 0x34, 0xac, 0x24, \ + 0xf5, 0x77, 0xe0, 0x26, 0x64, 0x8c, 0x9c, 0xb0, 0x28, 0x7d, 0xa1, 0xda, \ + 0xea, 0x8c, 0xe6, 0xc9, 0x1c, 0x96, 0xbc, 0xfe, 0xc1, 0x04, 0x52, 0xb3, \ + 0x36, 0xd4, 0xa3, 0xfa, 0xe1, 0xb1, 0x76, 0xd8, 0x90, 0xc1, 0x61, 0xb4, \ + 0x66, 0x52, 0x36, 0xa2, 0x26, 0x53, 0xaa, 0xab, 0x74, 0x5e, 0x07, 0x7d, \ + 0x19, 0x82, 0xdb, 0x2a, 0xd8, 0x1f, 0xa0, 0xd9, 0x0d, 0x1c, 0x2d, 0x49, \ + 0x66, 0xf7, 0x5b, 0x25, 0x73, 0x46, 0xe8, 0x0b, 0x8a, 0x4f, 0x69, 0x0c, \ + 0xb5, 0x00, 0x90, 0xe1, 0xda, 0x82, 0x10, 0x66, 0x7d, 0xae, 0x54, 0x2b, \ + 0x8b, 0x65, 0x79, 0x91, 0xa1, 0xe2, 0x61, 0xc3, 0xcd, 0x40, 0x49, 0x08, \ + 0xee, 0x68, 0x0c, 0xf1, 0x8b, 0x86, 0xd2, 0x46, 0xbf, 0xd0, 0xb8, 0xaa, \ + 0x11, 0x03, 0x1e, 0x7f, 0x56, 0xa8, 0x1a, 0x1e, 0x44, 0x18, 0x0f, 0x0f, \ + 0x85, 0x8b, 0xda, 0x8b, 0x44, 0x5e, 0xe2, 0x18, 0xc6, 0x62, 0x2f, 0xc7, \ + 0x66, 0x8d, 0xfa, 0x5d, 0xd8, 0x7d, 0xf3, 0x27, 0x89, 0x29, 0x01, 0xc5, \ + 0x90, 0x0e, 0x3f, 0x27, 0xf1, 0x30, 0xc8, 0x4a, 0x0e, 0xef, 0xd6, 0xde, \ + 0xc7, 0xc7, 0x27, 0x6b, 0xc7, 0x05, 0x3d, 0x7a, 0xc4, 0x02, 0x3c, 0x9a, \ + 0x1d, 0x3e, 0x0f, 0xe8, 0x34, 0x98, 0x5b, 0xcb, 0x73, 0x4b, 0x52, 0x96, \ + 0xd8, 0x11, 0xa2, 0x2c, 0x80, 0x88, 0x69, 0x39, 0x5a, 0xd3, 0x0f, 0xb0, \ + 0xde, 0x59, 0x2f, 0x11, 0xc7, 0xf7, 0xea, 0x12, 0x01, 0x30, 0x97, 0x02, \ + 0x03, 0x01, 0x00, 0x01, 0xa3, 0x4d, 0x30, 0x4b, 0x30, 0x09, 0x06, 0x03, \ + 0x55, 0x1d, 0x13, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, \ + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xa5, 0x05, 0xe8, 0x64, 0xb8, 0xdc, \ + 0xdf, 0x60, 0x0f, 0x50, 0x12, 0x4d, 0x60, 0xa8, 0x64, 0xaf, 0x4d, 0x8b, \ + 0x43, 0x93, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, \ + 0x16, 0x80, 0x14, 0xb4, 0x5a, 0xe4, 0xa5, 0xb3, 0xde, 0xd2, 0x52, 0xf6, \ + 0xb9, 0xd5, 0xa6, 0x95, 0x0f, 0xeb, 0x3e, 0xbc, 0xc7, 0xfd, 0xff, 0x30, \ + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, \ + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x2e, 0x3a, 0xe4, 0x52, 0x61, \ + 0x3e, 0xa7, 0xa5, 0xef, 0x32, 0x67, 0x80, 0x72, 0x07, 0x26, 0xba, 0xa3, \ + 0xff, 0x05, 0x40, 0xc4, 0x60, 0x05, 0x39, 0x31, 0x77, 0xf7, 0xa5, 0xca, \ + 0x01, 0x31, 0x80, 0xa7, 0xe1, 0xd1, 0x0a, 0xa2, 0x7c, 0xd5, 0x1c, 0xba, \ + 0xd0, 0x23, 0x4a, 0xd6, 0x30, 0xf3, 0x93, 0xc7, 0x6f, 0xe8, 0xce, 0x94, \ + 0x1e, 0x84, 0xbb, 0x44, 0x81, 0x62, 0x33, 0xff, 0x6b, 0x5d, 0x00, 0x9b, \ + 0x25, 0xf8, 0x8f, 0x0f, 0x9c, 0x4c, 0x4d, 0xe8, 0xd9, 0xa7, 0x99, 0xf9, \ + 0x51, 0x81, 0xc0, 0x9b, 0x1b, 0x31, 0x0d, 0xa6, 0xb3, 0x7c, 0x0e, 0x45, \ + 0xb8, 0x18, 0x64, 0x7e, 0x89, 0x0a, 0x2b, 0xa8, 0xc3, 0xe0, 0x4a, 0xbd, \ + 0xd4, 0x2f, 0x78, 0xc4, 0x62, 0x9b, 0xe9, 0x7e, 0x3f, 0x56, 0x46, 0x8f, \ + 0x17, 0xb7, 0x2a, 0xa0, 0x10, 0x70, 0xfd, 0xb1, 0xf1, 0x6b, 0x05, 0xdc, \ + 0xd1, 0x41, 0x0f, 0x8e, 0xa6, 0xb2, 0x88, 0x1a, 0x42, 0x61, 0x4f, 0xeb, \ + 0x26, 0x85, 0x59, 0x80, 0xba, 0x85, 0x54, 0xfe, 0xcf, 0xc7, 0x7b, 0x2f, \ + 0x6b, 0x59, 0xce, 0xac, 0xdc, 0x7c, 0xac, 0xf3, 0xc8, 0xd6, 0x12, 0x7e, \ + 0x64, 0xe8, 0x3c, 0x99, 0xa8, 0x8f, 0x4f, 0x11, 0xd9, 0x9c, 0x15, 0x4b, \ + 0x6a, 0x44, 0x92, 0x2d, 0x0c, 0xbf, 0xb1, 0x67, 0x96, 0xc9, 0xac, 0xce, \ + 0xd5, 0x19, 0xeb, 0x6f, 0x18, 0xeb, 0x6e, 0x04, 0x2d, 0x60, 0xac, 0xf4, \ + 0x7b, 0x79, 0xf0, 0x1a, 0x9b, 0xb5, 0xc3, 0x5d, 0xef, 0x7d, 0xc9, 0x05, \ + 0x99, 0x44, 0x81, 0x84, 0x75, 0xc7, 0xec, 0x00, 0x12, 0xfc, 0x7a, 0x4a, \ + 0x0b, 0x82, 0x07, 0xec, 0x6d, 0x86, 0x02, 0x4d, 0xfe, 0x9f, 0xc8, 0x92, \ + 0x48, 0xde, 0xf5, 0xb1, 0x9c, 0xe9, 0xc6, 0x89, 0xd0, 0xc1, 0x56, 0xe8, \ + 0xa4, 0xc6, 0x6a, 0x2e, 0x66, 0xc1, 0x9b, 0xfe, 0xd6, 0x3c, 0xb7 \ +} +/* END FILE */ + +/* This is taken from tests/data_files/server2.crt. */ +/* BEGIN FILE string macro TEST_SRV_CRT_RSA_SHA1_PEM tests/data_files/server2.crt */ +#define TEST_SRV_CRT_RSA_SHA1_PEM \ "-----BEGIN CERTIFICATE-----\r\n" \ -"MIIDhzCCAm+gAwIBAgIBADANBgkqhkiG9w0BAQsFADA7MQswCQYDVQQGEwJOTDER\r\n" \ +"MIIDNzCCAh+gAwIBAgIBAjANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER\r\n" \ "MA8GA1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwHhcN\r\n" \ -"MTcwNTA0MTY1NzAxWhcNMjcwNTA1MTY1NzAxWjA7MQswCQYDVQQGEwJOTDERMA8G\r\n" \ -"A1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0G\r\n" \ -"CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHx\r\n" \ -"mdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny\r\n" \ -"50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8n\r\n" \ -"YMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnL\r\n" \ -"R7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsu\r\n" \ -"KNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGj\r\n" \ -"gZUwgZIwHQYDVR0OBBYEFLRa5KWz3tJS9rnVppUP6z68x/3/MGMGA1UdIwRcMFqA\r\n" \ -"FLRa5KWz3tJS9rnVppUP6z68x/3/oT+kPTA7MQswCQYDVQQGEwJOTDERMA8GA1UE\r\n" \ -"CgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0GCAQAwDAYDVR0T\r\n" \ -"BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAHK/HHrTZMnnVMpde1io+voAtql7j\r\n" \ -"4sRhLrjD7o3THtwRbDa2diCvpq0Sq23Ng2LMYoXsOxoL/RQK3iN7UKxV3MKPEr0w\r\n" \ -"XQS+kKQqiT2bsfrjnWMVHZtUOMpm6FNqcdGm/Rss3vKda2lcKl8kUnq/ylc1+QbB\r\n" \ -"G6A6tUvQcr2ZyWfVg+mM5XkhTrOOXus2OLikb4WwEtJTJRNE0f+yPODSUz0/vT57\r\n" \ -"ApH0CnB80bYJshYHPHHymOtleAB8KSYtqm75g/YNobjnjB6cm4HkW3OZRVIl6fYY\r\n" \ -"n20NRVA1Vjs6GAROr4NqW4k/+LofY9y0LLDE+p0oIEKXIsIvhPr39swxSA==\r\n" \ +"MTkwMjEwMTQ0NDA2WhcNMjkwMjEwMTQ0NDA2WjA0MQswCQYDVQQGEwJOTDERMA8G\r\n" \ +"A1UECgwIUG9sYXJTU0wxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcN\r\n" \ +"AQEBBQADggEPADCCAQoCggEBAMFNo93nzR3RBNdJcriZrA545Do8Ss86ExbQWuTN\r\n" \ +"owCIp+4ea5anUrSQ7y1yej4kmvy2NKwk9XfgJmSMnLAofaHa6ozmyRyWvP7BBFKz\r\n" \ +"NtSj+uGxdtiQwWG0ZlI2oiZTqqt0Xgd9GYLbKtgfoNkNHC1JZvdbJXNG6AuKT2kM\r\n" \ +"tQCQ4dqCEGZ9rlQri2V5kaHiYcPNQEkI7mgM8YuG0ka/0LiqEQMef1aoGh5EGA8P\r\n" \ +"hYvai0Re4hjGYi/HZo36Xdh98yeJKQHFkA4/J/EwyEoO79bex8cna8cFPXrEAjya\r\n" \ +"HT4P6DSYW8tzS1KW2BGiLICIaTla0w+w3lkvEcf36hIBMJcCAwEAAaNNMEswCQYD\r\n" \ +"VR0TBAIwADAdBgNVHQ4EFgQUpQXoZLjc32APUBJNYKhkr02LQ5MwHwYDVR0jBBgw\r\n" \ +"FoAUtFrkpbPe0lL2udWmlQ/rPrzH/f8wDQYJKoZIhvcNAQEFBQADggEBAJklg3Q4\r\n" \ +"cB7v7BzsxM/vLyKccO6op0/gZzM4ghuLq2Y32kl0sM6kSNUUmduuq3u/+GmUZN2A\r\n" \ +"O/7c+Hw7hDFEIvZk98aBGjCLqn3DmgHIv8ToQ67nellQxx2Uj309PdgjNi/r9HOc\r\n" \ +"KNAYPbBcg6MJGWWj2TI6vNaceios/DhOYx5V0j5nfqSJ/pnU0g9Ign2LAhgYpGJE\r\n" \ +"iEM9wW7hEMkwmk0h/sqZsrJsGH5YsF/VThSq/JVO1e2mZH2vruyZKJVBq+8tDNYp\r\n" \ +"HkK6tSyVYQhzIt3StMJWKMl/o5k2AYz6tSC164+1oG+ML3LWg8XrGKa91H4UOKap\r\n" \ +"Awgk0+4m0T25cNs=\r\n" \ "-----END CERTIFICATE-----\r\n" +/* END FILE */ -const char mbedtls_test_ca_crt_rsa[] = TEST_CA_CRT_RSA_SHA256; -const size_t mbedtls_test_ca_crt_rsa_len = sizeof( mbedtls_test_ca_crt_rsa ); -#define TEST_CA_CRT_RSA_SOME +/* This is taken from tests/data_files/server2.crt.der. */ +/* BEGIN FILE binary macro TEST_SRV_CRT_RSA_SHA1_DER tests/data_files/server2.crt.der */ +#define TEST_SRV_CRT_RSA_SHA1_DER { \ + 0x30, 0x82, 0x03, 0x37, 0x30, 0x82, 0x02, 0x1f, 0xa0, 0x03, 0x02, 0x01, \ + 0x02, 0x02, 0x01, 0x02, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, \ + 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x3b, 0x31, 0x0b, 0x30, \ + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, \ + 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x08, 0x50, 0x6f, 0x6c, \ + 0x61, 0x72, 0x53, 0x53, 0x4c, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, \ + 0x04, 0x03, 0x0c, 0x10, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, 0x53, 0x4c, \ + 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, \ + 0x31, 0x31, 0x30, 0x32, 0x31, 0x32, 0x31, 0x34, 0x34, 0x34, 0x30, 0x36, \ + 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x30, 0x32, 0x31, 0x32, 0x31, 0x34, 0x34, \ + 0x34, 0x30, 0x36, 0x5a, 0x30, 0x34, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, \ + 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, 0x30, 0x0f, 0x06, \ + 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x08, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, \ + 0x53, 0x4c, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, \ + 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x30, 0x82, \ + 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, \ + 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, \ + 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xc1, 0x4d, 0xa3, 0xdd, 0xe7, \ + 0xcd, 0x1d, 0xd1, 0x04, 0xd7, 0x49, 0x72, 0xb8, 0x99, 0xac, 0x0e, 0x78, \ + 0xe4, 0x3a, 0x3c, 0x4a, 0xcf, 0x3a, 0x13, 0x16, 0xd0, 0x5a, 0xe4, 0xcd, \ + 0xa3, 0x00, 0x88, 0xa7, 0xee, 0x1e, 0x6b, 0x96, 0xa7, 0x52, 0xb4, 0x90, \ + 0xef, 0x2d, 0x72, 0x7a, 0x3e, 0x24, 0x9a, 0xfc, 0xb6, 0x34, 0xac, 0x24, \ + 0xf5, 0x77, 0xe0, 0x26, 0x64, 0x8c, 0x9c, 0xb0, 0x28, 0x7d, 0xa1, 0xda, \ + 0xea, 0x8c, 0xe6, 0xc9, 0x1c, 0x96, 0xbc, 0xfe, 0xc1, 0x04, 0x52, 0xb3, \ + 0x36, 0xd4, 0xa3, 0xfa, 0xe1, 0xb1, 0x76, 0xd8, 0x90, 0xc1, 0x61, 0xb4, \ + 0x66, 0x52, 0x36, 0xa2, 0x26, 0x53, 0xaa, 0xab, 0x74, 0x5e, 0x07, 0x7d, \ + 0x19, 0x82, 0xdb, 0x2a, 0xd8, 0x1f, 0xa0, 0xd9, 0x0d, 0x1c, 0x2d, 0x49, \ + 0x66, 0xf7, 0x5b, 0x25, 0x73, 0x46, 0xe8, 0x0b, 0x8a, 0x4f, 0x69, 0x0c, \ + 0xb5, 0x00, 0x90, 0xe1, 0xda, 0x82, 0x10, 0x66, 0x7d, 0xae, 0x54, 0x2b, \ + 0x8b, 0x65, 0x79, 0x91, 0xa1, 0xe2, 0x61, 0xc3, 0xcd, 0x40, 0x49, 0x08, \ + 0xee, 0x68, 0x0c, 0xf1, 0x8b, 0x86, 0xd2, 0x46, 0xbf, 0xd0, 0xb8, 0xaa, \ + 0x11, 0x03, 0x1e, 0x7f, 0x56, 0xa8, 0x1a, 0x1e, 0x44, 0x18, 0x0f, 0x0f, \ + 0x85, 0x8b, 0xda, 0x8b, 0x44, 0x5e, 0xe2, 0x18, 0xc6, 0x62, 0x2f, 0xc7, \ + 0x66, 0x8d, 0xfa, 0x5d, 0xd8, 0x7d, 0xf3, 0x27, 0x89, 0x29, 0x01, 0xc5, \ + 0x90, 0x0e, 0x3f, 0x27, 0xf1, 0x30, 0xc8, 0x4a, 0x0e, 0xef, 0xd6, 0xde, \ + 0xc7, 0xc7, 0x27, 0x6b, 0xc7, 0x05, 0x3d, 0x7a, 0xc4, 0x02, 0x3c, 0x9a, \ + 0x1d, 0x3e, 0x0f, 0xe8, 0x34, 0x98, 0x5b, 0xcb, 0x73, 0x4b, 0x52, 0x96, \ + 0xd8, 0x11, 0xa2, 0x2c, 0x80, 0x88, 0x69, 0x39, 0x5a, 0xd3, 0x0f, 0xb0, \ + 0xde, 0x59, 0x2f, 0x11, 0xc7, 0xf7, 0xea, 0x12, 0x01, 0x30, 0x97, 0x02, \ + 0x03, 0x01, 0x00, 0x01, 0xa3, 0x4d, 0x30, 0x4b, 0x30, 0x09, 0x06, 0x03, \ + 0x55, 0x1d, 0x13, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, \ + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xa5, 0x05, 0xe8, 0x64, 0xb8, 0xdc, \ + 0xdf, 0x60, 0x0f, 0x50, 0x12, 0x4d, 0x60, 0xa8, 0x64, 0xaf, 0x4d, 0x8b, \ + 0x43, 0x93, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, \ + 0x16, 0x80, 0x14, 0xb4, 0x5a, 0xe4, 0xa5, 0xb3, 0xde, 0xd2, 0x52, 0xf6, \ + 0xb9, 0xd5, 0xa6, 0x95, 0x0f, 0xeb, 0x3e, 0xbc, 0xc7, 0xfd, 0xff, 0x30, \ + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, \ + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x01, 0x73, 0x0b, 0x4a, 0xc5, \ + 0xcb, 0xa0, 0xde, 0xf1, 0x63, 0x1c, 0x76, 0x04, 0x2b, 0x13, 0x0d, 0xc0, \ + 0x84, 0x11, 0xc5, 0x8f, 0x3a, 0xa7, 0xc5, 0x9c, 0x35, 0x7a, 0x77, 0xb8, \ + 0x20, 0x14, 0x82, 0xee, 0x54, 0xf0, 0xf2, 0xb0, 0x52, 0xcb, 0x78, 0xce, \ + 0x59, 0x07, 0x4f, 0x51, 0x69, 0xfe, 0xd3, 0x2f, 0xe9, 0x09, 0xe7, 0x85, \ + 0x92, 0xd8, 0xba, 0xb1, 0xeb, 0xc5, 0x76, 0x5d, 0x61, 0x2d, 0xe9, 0x86, \ + 0xb5, 0xde, 0x2a, 0xf9, 0x3f, 0x53, 0x28, 0x42, 0x86, 0x83, 0x73, 0x43, \ + 0xe0, 0x04, 0x5f, 0x07, 0x90, 0x14, 0x65, 0x9f, 0x6e, 0x10, 0x7a, 0xbc, \ + 0x58, 0x19, 0x22, 0xc2, 0xeb, 0x39, 0x72, 0x51, 0x92, 0xd7, 0xb4, 0x1d, \ + 0x75, 0x2f, 0xd3, 0x3a, 0x2b, 0x01, 0xe7, 0xdb, 0x50, 0xae, 0xe2, 0xf1, \ + 0xd4, 0x4d, 0x5b, 0x3c, 0xbb, 0x41, 0x2b, 0x2a, 0xa4, 0xe2, 0x4a, 0x02, \ + 0xe5, 0x60, 0x14, 0x2c, 0x9c, 0x1f, 0xa6, 0xcc, 0x06, 0x4b, 0x25, 0x89, \ + 0x4e, 0x96, 0x30, 0x22, 0x9c, 0x5c, 0x58, 0x4d, 0xc3, 0xda, 0xd0, 0x6e, \ + 0x50, 0x1e, 0x8c, 0x65, 0xf5, 0xd9, 0x17, 0x35, 0xa6, 0x58, 0x43, 0xb2, \ + 0x29, 0xb7, 0xa8, 0x5e, 0x35, 0xde, 0xf0, 0x60, 0x42, 0x1a, 0x01, 0xcb, \ + 0xcb, 0x0b, 0xd8, 0x0e, 0xc1, 0x90, 0xdf, 0xa1, 0xd2, 0x1a, 0xd1, 0x2c, \ + 0x02, 0xf4, 0x76, 0x41, 0xa4, 0xcb, 0x4b, 0x15, 0x98, 0x71, 0xf9, 0x35, \ + 0x7d, 0xb0, 0xe7, 0xe2, 0x34, 0x96, 0x91, 0xbe, 0x32, 0x67, 0x2d, 0x6b, \ + 0xd3, 0x55, 0x04, 0x8a, 0x01, 0x50, 0xb4, 0xe3, 0x62, 0x78, 0x6c, 0x11, \ + 0x15, 0xa5, 0x2a, 0x11, 0xc1, 0x49, 0x1c, 0x9b, 0xc4, 0x10, 0x65, 0x60, \ + 0x87, 0xd9, 0x1e, 0x69, 0x59, 0x4e, 0x8f, 0x6b, 0xeb, 0xc1, 0xfe, 0x6b, \ + 0xe2, 0x63, 0x78, 0x95, 0x6e, 0xe0, 0x2d, 0xd7, 0xa7, 0x37, 0xa8 \ +} +/* END FILE */ -static const char mbedtls_test_ca_crt_rsa_sha256[] = TEST_CA_CRT_RSA_SHA256; +/* This is taken from tests/data_files/server2.key. */ +/* BEGIN FILE string macro TEST_SRV_KEY_RSA_PEM tests/data_files/server2.key */ +#define TEST_SRV_KEY_RSA_PEM \ + "-----BEGIN RSA PRIVATE KEY-----\r\n" \ + "MIIEpAIBAAKCAQEAwU2j3efNHdEE10lyuJmsDnjkOjxKzzoTFtBa5M2jAIin7h5r\r\n" \ + "lqdStJDvLXJ6PiSa/LY0rCT1d+AmZIycsCh9odrqjObJHJa8/sEEUrM21KP64bF2\r\n" \ + "2JDBYbRmUjaiJlOqq3ReB30Zgtsq2B+g2Q0cLUlm91slc0boC4pPaQy1AJDh2oIQ\r\n" \ + "Zn2uVCuLZXmRoeJhw81ASQjuaAzxi4bSRr/QuKoRAx5/VqgaHkQYDw+Fi9qLRF7i\r\n" \ + "GMZiL8dmjfpd2H3zJ4kpAcWQDj8n8TDISg7v1t7HxydrxwU9esQCPJodPg/oNJhb\r\n" \ + "y3NLUpbYEaIsgIhpOVrTD7DeWS8Rx/fqEgEwlwIDAQABAoIBAQCXR0S8EIHFGORZ\r\n" \ + "++AtOg6eENxD+xVs0f1IeGz57Tjo3QnXX7VBZNdj+p1ECvhCE/G7XnkgU5hLZX+G\r\n" \ + "Z0jkz/tqJOI0vRSdLBbipHnWouyBQ4e/A1yIJdlBtqXxJ1KE/ituHRbNc4j4kL8Z\r\n" \ + "/r6pvwnTI0PSx2Eqs048YdS92LT6qAv4flbNDxMn2uY7s4ycS4Q8w1JXnCeaAnYm\r\n" \ + "WYI5wxO+bvRELR2Mcz5DmVnL8jRyml6l6582bSv5oufReFIbyPZbQWlXgYnpu6He\r\n" \ + "GTc7E1zKYQGG/9+DQUl/1vQuCPqQwny0tQoX2w5tdYpdMdVm+zkLtbajzdTviJJa\r\n" \ + "TWzL6lt5AoGBAN86+SVeJDcmQJcv4Eq6UhtRr4QGMiQMz0Sod6ettYxYzMgxtw28\r\n" \ + "CIrgpozCc+UaZJLo7UxvC6an85r1b2nKPCLQFaggJ0H4Q0J/sZOhBIXaoBzWxveK\r\n" \ + "nupceKdVxGsFi8CDy86DBfiyFivfBj+47BbaQzPBj7C4rK7UlLjab2rDAoGBAN2u\r\n" \ + "AM2gchoFiu4v1HFL8D7lweEpi6ZnMJjnEu/dEgGQJFjwdpLnPbsj4c75odQ4Gz8g\r\n" \ + "sw9lao9VVzbusoRE/JGI4aTdO0pATXyG7eG1Qu+5Yc1YGXcCrliA2xM9xx+d7f+s\r\n" \ + "mPzN+WIEg5GJDYZDjAzHG5BNvi/FfM1C9dOtjv2dAoGAF0t5KmwbjWHBhcVqO4Ic\r\n" \ + "BVvN3BIlc1ue2YRXEDlxY5b0r8N4XceMgKmW18OHApZxfl8uPDauWZLXOgl4uepv\r\n" \ + "whZC3EuWrSyyICNhLY21Ah7hbIEBPF3L3ZsOwC+UErL+dXWLdB56Jgy3gZaBeW7b\r\n" \ + "vDrEnocJbqCm7IukhXHOBK8CgYEAwqdHB0hqyNSzIOGY7v9abzB6pUdA3BZiQvEs\r\n" \ + "3LjHVd4HPJ2x0N8CgrBIWOE0q8+0hSMmeE96WW/7jD3fPWwCR5zlXknxBQsfv0gP\r\n" \ + "3BC5PR0Qdypz+d+9zfMf625kyit4T/hzwhDveZUzHnk1Cf+IG7Q+TOEnLnWAWBED\r\n" \ + "ISOWmrUCgYAFEmRxgwAc/u+D6t0syCwAYh6POtscq9Y0i9GyWk89NzgC4NdwwbBH\r\n" \ + "4AgahOxIxXx2gxJnq3yfkJfIjwf0s2DyP0kY2y6Ua1OeomPeY9mrIS4tCuDQ6LrE\r\n" \ + "TB6l9VGoxJL4fyHnZb8L5gGvnB1bbD8cL6YPaDiOhcRseC9vBiEuVg==\r\n" \ + "-----END RSA PRIVATE KEY-----\r\n" +/* END FILE */ -#endif +/* This was generated from tests/data_files/server2.key.der using `xxd -i`. */ +/* BEGIN FILE binary macro TEST_SRV_KEY_RSA_DER tests/data_files/server2.key.der */ +#define TEST_SRV_KEY_RSA_DER { \ + 0x30, 0x82, 0x04, 0xa4, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00, \ + 0xc1, 0x4d, 0xa3, 0xdd, 0xe7, 0xcd, 0x1d, 0xd1, 0x04, 0xd7, 0x49, 0x72, \ + 0xb8, 0x99, 0xac, 0x0e, 0x78, 0xe4, 0x3a, 0x3c, 0x4a, 0xcf, 0x3a, 0x13, \ + 0x16, 0xd0, 0x5a, 0xe4, 0xcd, 0xa3, 0x00, 0x88, 0xa7, 0xee, 0x1e, 0x6b, \ + 0x96, 0xa7, 0x52, 0xb4, 0x90, 0xef, 0x2d, 0x72, 0x7a, 0x3e, 0x24, 0x9a, \ + 0xfc, 0xb6, 0x34, 0xac, 0x24, 0xf5, 0x77, 0xe0, 0x26, 0x64, 0x8c, 0x9c, \ + 0xb0, 0x28, 0x7d, 0xa1, 0xda, 0xea, 0x8c, 0xe6, 0xc9, 0x1c, 0x96, 0xbc, \ + 0xfe, 0xc1, 0x04, 0x52, 0xb3, 0x36, 0xd4, 0xa3, 0xfa, 0xe1, 0xb1, 0x76, \ + 0xd8, 0x90, 0xc1, 0x61, 0xb4, 0x66, 0x52, 0x36, 0xa2, 0x26, 0x53, 0xaa, \ + 0xab, 0x74, 0x5e, 0x07, 0x7d, 0x19, 0x82, 0xdb, 0x2a, 0xd8, 0x1f, 0xa0, \ + 0xd9, 0x0d, 0x1c, 0x2d, 0x49, 0x66, 0xf7, 0x5b, 0x25, 0x73, 0x46, 0xe8, \ + 0x0b, 0x8a, 0x4f, 0x69, 0x0c, 0xb5, 0x00, 0x90, 0xe1, 0xda, 0x82, 0x10, \ + 0x66, 0x7d, 0xae, 0x54, 0x2b, 0x8b, 0x65, 0x79, 0x91, 0xa1, 0xe2, 0x61, \ + 0xc3, 0xcd, 0x40, 0x49, 0x08, 0xee, 0x68, 0x0c, 0xf1, 0x8b, 0x86, 0xd2, \ + 0x46, 0xbf, 0xd0, 0xb8, 0xaa, 0x11, 0x03, 0x1e, 0x7f, 0x56, 0xa8, 0x1a, \ + 0x1e, 0x44, 0x18, 0x0f, 0x0f, 0x85, 0x8b, 0xda, 0x8b, 0x44, 0x5e, 0xe2, \ + 0x18, 0xc6, 0x62, 0x2f, 0xc7, 0x66, 0x8d, 0xfa, 0x5d, 0xd8, 0x7d, 0xf3, \ + 0x27, 0x89, 0x29, 0x01, 0xc5, 0x90, 0x0e, 0x3f, 0x27, 0xf1, 0x30, 0xc8, \ + 0x4a, 0x0e, 0xef, 0xd6, 0xde, 0xc7, 0xc7, 0x27, 0x6b, 0xc7, 0x05, 0x3d, \ + 0x7a, 0xc4, 0x02, 0x3c, 0x9a, 0x1d, 0x3e, 0x0f, 0xe8, 0x34, 0x98, 0x5b, \ + 0xcb, 0x73, 0x4b, 0x52, 0x96, 0xd8, 0x11, 0xa2, 0x2c, 0x80, 0x88, 0x69, \ + 0x39, 0x5a, 0xd3, 0x0f, 0xb0, 0xde, 0x59, 0x2f, 0x11, 0xc7, 0xf7, 0xea, \ + 0x12, 0x01, 0x30, 0x97, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x82, 0x01, \ + 0x01, 0x00, 0x97, 0x47, 0x44, 0xbc, 0x10, 0x81, 0xc5, 0x18, 0xe4, 0x59, \ + 0xfb, 0xe0, 0x2d, 0x3a, 0x0e, 0x9e, 0x10, 0xdc, 0x43, 0xfb, 0x15, 0x6c, \ + 0xd1, 0xfd, 0x48, 0x78, 0x6c, 0xf9, 0xed, 0x38, 0xe8, 0xdd, 0x09, 0xd7, \ + 0x5f, 0xb5, 0x41, 0x64, 0xd7, 0x63, 0xfa, 0x9d, 0x44, 0x0a, 0xf8, 0x42, \ + 0x13, 0xf1, 0xbb, 0x5e, 0x79, 0x20, 0x53, 0x98, 0x4b, 0x65, 0x7f, 0x86, \ + 0x67, 0x48, 0xe4, 0xcf, 0xfb, 0x6a, 0x24, 0xe2, 0x34, 0xbd, 0x14, 0x9d, \ + 0x2c, 0x16, 0xe2, 0xa4, 0x79, 0xd6, 0xa2, 0xec, 0x81, 0x43, 0x87, 0xbf, \ + 0x03, 0x5c, 0x88, 0x25, 0xd9, 0x41, 0xb6, 0xa5, 0xf1, 0x27, 0x52, 0x84, \ + 0xfe, 0x2b, 0x6e, 0x1d, 0x16, 0xcd, 0x73, 0x88, 0xf8, 0x90, 0xbf, 0x19, \ + 0xfe, 0xbe, 0xa9, 0xbf, 0x09, 0xd3, 0x23, 0x43, 0xd2, 0xc7, 0x61, 0x2a, \ + 0xb3, 0x4e, 0x3c, 0x61, 0xd4, 0xbd, 0xd8, 0xb4, 0xfa, 0xa8, 0x0b, 0xf8, \ + 0x7e, 0x56, 0xcd, 0x0f, 0x13, 0x27, 0xda, 0xe6, 0x3b, 0xb3, 0x8c, 0x9c, \ + 0x4b, 0x84, 0x3c, 0xc3, 0x52, 0x57, 0x9c, 0x27, 0x9a, 0x02, 0x76, 0x26, \ + 0x59, 0x82, 0x39, 0xc3, 0x13, 0xbe, 0x6e, 0xf4, 0x44, 0x2d, 0x1d, 0x8c, \ + 0x73, 0x3e, 0x43, 0x99, 0x59, 0xcb, 0xf2, 0x34, 0x72, 0x9a, 0x5e, 0xa5, \ + 0xeb, 0x9f, 0x36, 0x6d, 0x2b, 0xf9, 0xa2, 0xe7, 0xd1, 0x78, 0x52, 0x1b, \ + 0xc8, 0xf6, 0x5b, 0x41, 0x69, 0x57, 0x81, 0x89, 0xe9, 0xbb, 0xa1, 0xde, \ + 0x19, 0x37, 0x3b, 0x13, 0x5c, 0xca, 0x61, 0x01, 0x86, 0xff, 0xdf, 0x83, \ + 0x41, 0x49, 0x7f, 0xd6, 0xf4, 0x2e, 0x08, 0xfa, 0x90, 0xc2, 0x7c, 0xb4, \ + 0xb5, 0x0a, 0x17, 0xdb, 0x0e, 0x6d, 0x75, 0x8a, 0x5d, 0x31, 0xd5, 0x66, \ + 0xfb, 0x39, 0x0b, 0xb5, 0xb6, 0xa3, 0xcd, 0xd4, 0xef, 0x88, 0x92, 0x5a, \ + 0x4d, 0x6c, 0xcb, 0xea, 0x5b, 0x79, 0x02, 0x81, 0x81, 0x00, 0xdf, 0x3a, \ + 0xf9, 0x25, 0x5e, 0x24, 0x37, 0x26, 0x40, 0x97, 0x2f, 0xe0, 0x4a, 0xba, \ + 0x52, 0x1b, 0x51, 0xaf, 0x84, 0x06, 0x32, 0x24, 0x0c, 0xcf, 0x44, 0xa8, \ + 0x77, 0xa7, 0xad, 0xb5, 0x8c, 0x58, 0xcc, 0xc8, 0x31, 0xb7, 0x0d, 0xbc, \ + 0x08, 0x8a, 0xe0, 0xa6, 0x8c, 0xc2, 0x73, 0xe5, 0x1a, 0x64, 0x92, 0xe8, \ + 0xed, 0x4c, 0x6f, 0x0b, 0xa6, 0xa7, 0xf3, 0x9a, 0xf5, 0x6f, 0x69, 0xca, \ + 0x3c, 0x22, 0xd0, 0x15, 0xa8, 0x20, 0x27, 0x41, 0xf8, 0x43, 0x42, 0x7f, \ + 0xb1, 0x93, 0xa1, 0x04, 0x85, 0xda, 0xa0, 0x1c, 0xd6, 0xc6, 0xf7, 0x8a, \ + 0x9e, 0xea, 0x5c, 0x78, 0xa7, 0x55, 0xc4, 0x6b, 0x05, 0x8b, 0xc0, 0x83, \ + 0xcb, 0xce, 0x83, 0x05, 0xf8, 0xb2, 0x16, 0x2b, 0xdf, 0x06, 0x3f, 0xb8, \ + 0xec, 0x16, 0xda, 0x43, 0x33, 0xc1, 0x8f, 0xb0, 0xb8, 0xac, 0xae, 0xd4, \ + 0x94, 0xb8, 0xda, 0x6f, 0x6a, 0xc3, 0x02, 0x81, 0x81, 0x00, 0xdd, 0xae, \ + 0x00, 0xcd, 0xa0, 0x72, 0x1a, 0x05, 0x8a, 0xee, 0x2f, 0xd4, 0x71, 0x4b, \ + 0xf0, 0x3e, 0xe5, 0xc1, 0xe1, 0x29, 0x8b, 0xa6, 0x67, 0x30, 0x98, 0xe7, \ + 0x12, 0xef, 0xdd, 0x12, 0x01, 0x90, 0x24, 0x58, 0xf0, 0x76, 0x92, 0xe7, \ + 0x3d, 0xbb, 0x23, 0xe1, 0xce, 0xf9, 0xa1, 0xd4, 0x38, 0x1b, 0x3f, 0x20, \ + 0xb3, 0x0f, 0x65, 0x6a, 0x8f, 0x55, 0x57, 0x36, 0xee, 0xb2, 0x84, 0x44, \ + 0xfc, 0x91, 0x88, 0xe1, 0xa4, 0xdd, 0x3b, 0x4a, 0x40, 0x4d, 0x7c, 0x86, \ + 0xed, 0xe1, 0xb5, 0x42, 0xef, 0xb9, 0x61, 0xcd, 0x58, 0x19, 0x77, 0x02, \ + 0xae, 0x58, 0x80, 0xdb, 0x13, 0x3d, 0xc7, 0x1f, 0x9d, 0xed, 0xff, 0xac, \ + 0x98, 0xfc, 0xcd, 0xf9, 0x62, 0x04, 0x83, 0x91, 0x89, 0x0d, 0x86, 0x43, \ + 0x8c, 0x0c, 0xc7, 0x1b, 0x90, 0x4d, 0xbe, 0x2f, 0xc5, 0x7c, 0xcd, 0x42, \ + 0xf5, 0xd3, 0xad, 0x8e, 0xfd, 0x9d, 0x02, 0x81, 0x80, 0x17, 0x4b, 0x79, \ + 0x2a, 0x6c, 0x1b, 0x8d, 0x61, 0xc1, 0x85, 0xc5, 0x6a, 0x3b, 0x82, 0x1c, \ + 0x05, 0x5b, 0xcd, 0xdc, 0x12, 0x25, 0x73, 0x5b, 0x9e, 0xd9, 0x84, 0x57, \ + 0x10, 0x39, 0x71, 0x63, 0x96, 0xf4, 0xaf, 0xc3, 0x78, 0x5d, 0xc7, 0x8c, \ + 0x80, 0xa9, 0x96, 0xd7, 0xc3, 0x87, 0x02, 0x96, 0x71, 0x7e, 0x5f, 0x2e, \ + 0x3c, 0x36, 0xae, 0x59, 0x92, 0xd7, 0x3a, 0x09, 0x78, 0xb9, 0xea, 0x6f, \ + 0xc2, 0x16, 0x42, 0xdc, 0x4b, 0x96, 0xad, 0x2c, 0xb2, 0x20, 0x23, 0x61, \ + 0x2d, 0x8d, 0xb5, 0x02, 0x1e, 0xe1, 0x6c, 0x81, 0x01, 0x3c, 0x5d, 0xcb, \ + 0xdd, 0x9b, 0x0e, 0xc0, 0x2f, 0x94, 0x12, 0xb2, 0xfe, 0x75, 0x75, 0x8b, \ + 0x74, 0x1e, 0x7a, 0x26, 0x0c, 0xb7, 0x81, 0x96, 0x81, 0x79, 0x6e, 0xdb, \ + 0xbc, 0x3a, 0xc4, 0x9e, 0x87, 0x09, 0x6e, 0xa0, 0xa6, 0xec, 0x8b, 0xa4, \ + 0x85, 0x71, 0xce, 0x04, 0xaf, 0x02, 0x81, 0x81, 0x00, 0xc2, 0xa7, 0x47, \ + 0x07, 0x48, 0x6a, 0xc8, 0xd4, 0xb3, 0x20, 0xe1, 0x98, 0xee, 0xff, 0x5a, \ + 0x6f, 0x30, 0x7a, 0xa5, 0x47, 0x40, 0xdc, 0x16, 0x62, 0x42, 0xf1, 0x2c, \ + 0xdc, 0xb8, 0xc7, 0x55, 0xde, 0x07, 0x3c, 0x9d, 0xb1, 0xd0, 0xdf, 0x02, \ + 0x82, 0xb0, 0x48, 0x58, 0xe1, 0x34, 0xab, 0xcf, 0xb4, 0x85, 0x23, 0x26, \ + 0x78, 0x4f, 0x7a, 0x59, 0x6f, 0xfb, 0x8c, 0x3d, 0xdf, 0x3d, 0x6c, 0x02, \ + 0x47, 0x9c, 0xe5, 0x5e, 0x49, 0xf1, 0x05, 0x0b, 0x1f, 0xbf, 0x48, 0x0f, \ + 0xdc, 0x10, 0xb9, 0x3d, 0x1d, 0x10, 0x77, 0x2a, 0x73, 0xf9, 0xdf, 0xbd, \ + 0xcd, 0xf3, 0x1f, 0xeb, 0x6e, 0x64, 0xca, 0x2b, 0x78, 0x4f, 0xf8, 0x73, \ + 0xc2, 0x10, 0xef, 0x79, 0x95, 0x33, 0x1e, 0x79, 0x35, 0x09, 0xff, 0x88, \ + 0x1b, 0xb4, 0x3e, 0x4c, 0xe1, 0x27, 0x2e, 0x75, 0x80, 0x58, 0x11, 0x03, \ + 0x21, 0x23, 0x96, 0x9a, 0xb5, 0x02, 0x81, 0x80, 0x05, 0x12, 0x64, 0x71, \ + 0x83, 0x00, 0x1c, 0xfe, 0xef, 0x83, 0xea, 0xdd, 0x2c, 0xc8, 0x2c, 0x00, \ + 0x62, 0x1e, 0x8f, 0x3a, 0xdb, 0x1c, 0xab, 0xd6, 0x34, 0x8b, 0xd1, 0xb2, \ + 0x5a, 0x4f, 0x3d, 0x37, 0x38, 0x02, 0xe0, 0xd7, 0x70, 0xc1, 0xb0, 0x47, \ + 0xe0, 0x08, 0x1a, 0x84, 0xec, 0x48, 0xc5, 0x7c, 0x76, 0x83, 0x12, 0x67, \ + 0xab, 0x7c, 0x9f, 0x90, 0x97, 0xc8, 0x8f, 0x07, 0xf4, 0xb3, 0x60, 0xf2, \ + 0x3f, 0x49, 0x18, 0xdb, 0x2e, 0x94, 0x6b, 0x53, 0x9e, 0xa2, 0x63, 0xde, \ + 0x63, 0xd9, 0xab, 0x21, 0x2e, 0x2d, 0x0a, 0xe0, 0xd0, 0xe8, 0xba, 0xc4, \ + 0x4c, 0x1e, 0xa5, 0xf5, 0x51, 0xa8, 0xc4, 0x92, 0xf8, 0x7f, 0x21, 0xe7, \ + 0x65, 0xbf, 0x0b, 0xe6, 0x01, 0xaf, 0x9c, 0x1d, 0x5b, 0x6c, 0x3f, 0x1c, \ + 0x2f, 0xa6, 0x0f, 0x68, 0x38, 0x8e, 0x85, 0xc4, 0x6c, 0x78, 0x2f, 0x6f, \ + 0x06, 0x21, 0x2e, 0x56 \ +} +/* END FILE */ -#if !defined(TEST_CA_CRT_RSA_SOME) || defined(MBEDTLS_SHA1_C) -#define TEST_CA_CRT_RSA_SHA1 \ -"-----BEGIN CERTIFICATE-----\r\n" \ -"MIIDhzCCAm+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER\r\n" \ -"MA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcN\r\n" \ -"MTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8G\r\n" \ -"A1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0G\r\n" \ -"CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHx\r\n" \ -"mdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny\r\n" \ -"50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8n\r\n" \ -"YMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnL\r\n" \ -"R7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsu\r\n" \ -"KNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGj\r\n" \ -"gZUwgZIwDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUtFrkpbPe0lL2udWmlQ/rPrzH\r\n" \ -"/f8wYwYDVR0jBFwwWoAUtFrkpbPe0lL2udWmlQ/rPrzH/f+hP6Q9MDsxCzAJBgNV\r\n" \ -"BAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEZMBcGA1UEAxMQUG9sYXJTU0wgVGVz\r\n" \ -"dCBDQYIBADANBgkqhkiG9w0BAQUFAAOCAQEAuP1U2ABUkIslsCfdlc2i94QHHYeJ\r\n" \ -"SsR4EdgHtdciUI5I62J6Mom+Y0dT/7a+8S6MVMCZP6C5NyNyXw1GWY/YR82XTJ8H\r\n" \ -"DBJiCTok5DbZ6SzaONBzdWHXwWwmi5vg1dxn7YxrM9d0IjxM27WNKs4sDQhZBQkF\r\n" \ -"pjmfs2cb4oPl4Y9T9meTx/lvdkRYEug61Jfn6cA+qHpyPYdTH+UshITnmp5/Ztkf\r\n" \ -"m/UTSLBNFNHesiTZeH31NcxYGdHSme9Nc/gfidRa0FLOCfWxRlFqAI47zG9jAQCZ\r\n" \ -"7Z2mCGDNMhjQc+BYcdnl0lPXjdDK6V0qCg1dVewhUBcW5gZKzV7e9+DpVA==\r\n" \ -"-----END CERTIFICATE-----\r\n" +/* + * Test client Certificates + * + * Test client certificates are defined for each choice + * of the following parameters: + * - PEM or DER encoding + * - RSA or EC key + * + * Things to add: + * - hash type + * - multiple EC curve types + */ -#if !defined (TEST_CA_CRT_RSA_SOME) -const char mbedtls_test_ca_crt_rsa[] = TEST_CA_CRT_RSA_SHA1; -const size_t mbedtls_test_ca_crt_rsa_len = sizeof( mbedtls_test_ca_crt_rsa ); -#endif +/* This is taken from tests/data_files/cli2.crt. */ +/* BEGIN FILE string macro TEST_CLI_CRT_EC_PEM tests/data_files/cli2.crt */ +#define TEST_CLI_CRT_EC_PEM \ + "-----BEGIN CERTIFICATE-----\r\n" \ + "MIIB3zCCAWOgAwIBAgIBDTAMBggqhkjOPQQDAgUAMD4xCzAJBgNVBAYTAk5MMREw\r\n" \ + "DwYDVQQKDAhQb2xhclNTTDEcMBoGA1UEAwwTUG9sYXJTU0wgVGVzdCBFQyBDQTAe\r\n" \ + "Fw0xOTAyMTAxNDQ0MDBaFw0yOTAyMTAxNDQ0MDBaMEExCzAJBgNVBAYTAk5MMREw\r\n" \ + "DwYDVQQKDAhQb2xhclNTTDEfMB0GA1UEAwwWUG9sYXJTU0wgVGVzdCBDbGllbnQg\r\n" \ + "MjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABFflrrFz39Osu5O4gf8Sru7mU6zO\r\n" \ + "VVP2NA7MLuNjJQvfmOLzXGA2lsDVGBRw5X+f1UtFGOWwbNVc+JaPh3Cj5MejTTBL\r\n" \ + "MAkGA1UdEwQCMAAwHQYDVR0OBBYEFHoAX4Zk/OBd5REQO7LmO8QmP8/iMB8GA1Ud\r\n" \ + "IwQYMBaAFJ1tICRJAT8ry3i1Gbx+JMnb+zZ8MAwGCCqGSM49BAMCBQADaAAwZQIx\r\n" \ + "AMqme4DKMldUlplDET9Q6Eptre7uUWKhsLOF+zPkKDlfzpIkJYEFgcloDHGYw80u\r\n" \ + "IgIwNftyPXsabTqMM7iEHgVpX/GRozKklY9yQI/5eoA6gGW7Y+imuGR/oao5ySOb\r\n" \ + "a9Vk\r\n" \ + "-----END CERTIFICATE-----\r\n" +/* END FILE */ -static const char mbedtls_test_ca_crt_rsa_sha1[] = TEST_CA_CRT_RSA_SHA1; +/* This is generated from tests/data_files/cli2.crt.der using `xxd -i`. */ +/* BEGIN FILE binary macro TEST_CLI_CRT_EC_DER tests/data_files/cli2.crt.der */ +#define TEST_CLI_CRT_EC_DER { \ + 0x30, 0x82, 0x01, 0xdf, 0x30, 0x82, 0x01, 0x63, 0xa0, 0x03, 0x02, 0x01, \ + 0x02, 0x02, 0x01, 0x0d, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, \ + 0x3d, 0x04, 0x03, 0x02, 0x05, 0x00, 0x30, 0x3e, 0x31, 0x0b, 0x30, 0x09, \ + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, 0x30, \ + 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x08, 0x50, 0x6f, 0x6c, 0x61, \ + 0x72, 0x53, 0x53, 0x4c, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, \ + 0x03, 0x0c, 0x13, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, 0x53, 0x4c, 0x20, \ + 0x54, 0x65, 0x73, 0x74, 0x20, 0x45, 0x43, 0x20, 0x43, 0x41, 0x30, 0x1e, \ + 0x17, 0x0d, 0x31, 0x39, 0x30, 0x32, 0x31, 0x30, 0x31, 0x34, 0x34, 0x34, \ + 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x39, 0x30, 0x32, 0x31, 0x30, 0x31, \ + 0x34, 0x34, 0x34, 0x30, 0x30, 0x5a, 0x30, 0x41, 0x31, 0x0b, 0x30, 0x09, \ + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, 0x30, \ + 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x08, 0x50, 0x6f, 0x6c, 0x61, \ + 0x72, 0x53, 0x53, 0x4c, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, \ + 0x03, 0x0c, 0x16, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, 0x53, 0x4c, 0x20, \ + 0x54, 0x65, 0x73, 0x74, 0x20, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, \ + 0x32, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, \ + 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, \ + 0x03, 0x42, 0x00, 0x04, 0x57, 0xe5, 0xae, 0xb1, 0x73, 0xdf, 0xd3, 0xac, \ + 0xbb, 0x93, 0xb8, 0x81, 0xff, 0x12, 0xae, 0xee, 0xe6, 0x53, 0xac, 0xce, \ + 0x55, 0x53, 0xf6, 0x34, 0x0e, 0xcc, 0x2e, 0xe3, 0x63, 0x25, 0x0b, 0xdf, \ + 0x98, 0xe2, 0xf3, 0x5c, 0x60, 0x36, 0x96, 0xc0, 0xd5, 0x18, 0x14, 0x70, \ + 0xe5, 0x7f, 0x9f, 0xd5, 0x4b, 0x45, 0x18, 0xe5, 0xb0, 0x6c, 0xd5, 0x5c, \ + 0xf8, 0x96, 0x8f, 0x87, 0x70, 0xa3, 0xe4, 0xc7, 0xa3, 0x4d, 0x30, 0x4b, \ + 0x30, 0x09, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x02, 0x30, 0x00, 0x30, \ + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x7a, 0x00, \ + 0x5f, 0x86, 0x64, 0xfc, 0xe0, 0x5d, 0xe5, 0x11, 0x10, 0x3b, 0xb2, 0xe6, \ + 0x3b, 0xc4, 0x26, 0x3f, 0xcf, 0xe2, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, \ + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x9d, 0x6d, 0x20, 0x24, 0x49, \ + 0x01, 0x3f, 0x2b, 0xcb, 0x78, 0xb5, 0x19, 0xbc, 0x7e, 0x24, 0xc9, 0xdb, \ + 0xfb, 0x36, 0x7c, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, \ + 0x04, 0x03, 0x02, 0x05, 0x00, 0x03, 0x68, 0x00, 0x30, 0x65, 0x02, 0x31, \ + 0x00, 0xca, 0xa6, 0x7b, 0x80, 0xca, 0x32, 0x57, 0x54, 0x96, 0x99, 0x43, \ + 0x11, 0x3f, 0x50, 0xe8, 0x4a, 0x6d, 0xad, 0xee, 0xee, 0x51, 0x62, 0xa1, \ + 0xb0, 0xb3, 0x85, 0xfb, 0x33, 0xe4, 0x28, 0x39, 0x5f, 0xce, 0x92, 0x24, \ + 0x25, 0x81, 0x05, 0x81, 0xc9, 0x68, 0x0c, 0x71, 0x98, 0xc3, 0xcd, 0x2e, \ + 0x22, 0x02, 0x30, 0x35, 0xfb, 0x72, 0x3d, 0x7b, 0x1a, 0x6d, 0x3a, 0x8c, \ + 0x33, 0xb8, 0x84, 0x1e, 0x05, 0x69, 0x5f, 0xf1, 0x91, 0xa3, 0x32, 0xa4, \ + 0x95, 0x8f, 0x72, 0x40, 0x8f, 0xf9, 0x7a, 0x80, 0x3a, 0x80, 0x65, 0xbb, \ + 0x63, 0xe8, 0xa6, 0xb8, 0x64, 0x7f, 0xa1, 0xaa, 0x39, 0xc9, 0x23, 0x9b, \ + 0x6b, 0xd5, 0x64 \ +} +/* END FILE */ -#endif +/* This is taken from tests/data_files/cli2.key. */ +/* BEGIN FILE string macro TEST_CLI_KEY_EC_PEM tests/data_files/cli2.key */ +#define TEST_CLI_KEY_EC_PEM \ + "-----BEGIN EC PRIVATE KEY-----\r\n" \ + "MHcCAQEEIPb3hmTxZ3/mZI3vyk7p3U3wBf+WIop6hDhkFzJhmLcqoAoGCCqGSM49\r\n" \ + "AwEHoUQDQgAEV+WusXPf06y7k7iB/xKu7uZTrM5VU/Y0Dswu42MlC9+Y4vNcYDaW\r\n" \ + "wNUYFHDlf5/VS0UY5bBs1Vz4lo+HcKPkxw==\r\n" \ + "-----END EC PRIVATE KEY-----\r\n" +/* END FILE */ -const char mbedtls_test_ca_key_rsa[] = -"-----BEGIN RSA PRIVATE KEY-----\r\n" -"Proc-Type: 4,ENCRYPTED\r\n" -"DEK-Info: DES-EDE3-CBC,A8A95B05D5B7206B\r\n" -"\r\n" -"9Qd9GeArejl1GDVh2lLV1bHt0cPtfbh5h/5zVpAVaFpqtSPMrElp50Rntn9et+JA\r\n" -"7VOyboR+Iy2t/HU4WvA687k3Bppe9GwKHjHhtl//8xFKwZr3Xb5yO5JUP8AUctQq\r\n" -"Nb8CLlZyuUC+52REAAthdWgsX+7dJO4yabzUcQ22Tp9JSD0hiL43BlkWYUNK3dAo\r\n" -"PZlmiptjnzVTjg1MxsBSydZinWOLBV8/JQgxSPo2yD4uEfig28qbvQ2wNIn0pnAb\r\n" -"GxnSAOazkongEGfvcjIIs+LZN9gXFhxcOh6kc4Q/c99B7QWETwLLkYgZ+z1a9VY9\r\n" -"gEU7CwCxYCD+h9hY6FPmsK0/lC4O7aeRKpYq00rPPxs6i7phiexg6ax6yTMmArQq\r\n" -"QmK3TAsJm8V/J5AWpLEV6jAFgRGymGGHnof0DXzVWZidrcZJWTNuGEX90nB3ee2w\r\n" -"PXJEFWKoD3K3aFcSLdHYr3mLGxP7H9ThQai9VsycxZKS5kwvBKQ//YMrmFfwPk8x\r\n" -"vTeY4KZMaUrveEel5tWZC94RSMKgxR6cyE1nBXyTQnDOGbfpNNgBKxyKbINWoOJU\r\n" -"WJZAwlsQn+QzCDwpri7+sV1mS3gBE6UY7aQmnmiiaC2V3Hbphxct/en5QsfDOt1X\r\n" -"JczSfpRWLlbPznZg8OQh/VgCMA58N5DjOzTIK7sJJ5r+94ZBTCpgAMbF588f0NTR\r\n" -"KCe4yrxGJR7X02M4nvD4IwOlpsQ8xQxZtOSgXv4LkxvdU9XJJKWZ/XNKJeWztxSe\r\n" -"Z1vdTc2YfsDBA2SEv33vxHx2g1vqtw8SjDRT2RaQSS0QuSaMJimdOX6mTOCBKk1J\r\n" -"9Q5mXTrER+/LnK0jEmXsBXWA5bqqVZIyahXSx4VYZ7l7w/PHiUDtDgyRhMMKi4n2\r\n" -"iQvQcWSQTjrpnlJbca1/DkpRt3YwrvJwdqb8asZU2VrNETh5x0QVefDRLFiVpif/\r\n" -"tUaeAe/P1F8OkS7OIZDs1SUbv/sD2vMbhNkUoCms3/PvNtdnvgL4F0zhaDpKCmlT\r\n" -"P8vx49E7v5CyRNmED9zZg4o3wmMqrQO93PtTug3Eu9oVx1zPQM1NVMyBa2+f29DL\r\n" -"1nuTCeXdo9+ni45xx+jAI4DCwrRdhJ9uzZyC6962H37H6D+5naNvClFR1s6li1Gb\r\n" -"nqPoiy/OBsEx9CaDGcqQBp5Wme/3XW+6z1ISOx+igwNTVCT14mHdBMbya0eIKft5\r\n" -"X+GnwtgEMyCYyyWuUct8g4RzErcY9+yW9Om5Hzpx4zOuW4NPZgPDTgK+t2RSL/Yq\r\n" -"rE1njrgeGYcVeG3f+OftH4s6fPbq7t1A5ZgUscbLMBqr9tK+OqygR4EgKBPsH6Cz\r\n" -"L6zlv/2RV0qAHvVuDJcIDIgwY5rJtINEm32rhOeFNJwZS5MNIC1czXZx5//ugX7l\r\n" -"I4sy5nbVhwSjtAk8Xg5dZbdTZ6mIrb7xqH+fdakZor1khG7bC2uIwibD3cSl2XkR\r\n" -"wN48lslbHnqqagr6Xm1nNOSVl8C/6kbJEsMpLhAezfRtGwvOucoaE+WbeUNolGde\r\n" -"P/eQiddSf0brnpiLJRh7qZrl9XuqYdpUqnoEdMAfotDOID8OtV7gt8a48ad8VPW2\r\n" -"-----END RSA PRIVATE KEY-----\r\n"; -const size_t mbedtls_test_ca_key_rsa_len = sizeof( mbedtls_test_ca_key_rsa ); - -const char mbedtls_test_ca_pwd_rsa[] = "PolarSSLTest"; -const size_t mbedtls_test_ca_pwd_rsa_len = sizeof( mbedtls_test_ca_pwd_rsa ) - 1; - -/* tests/data_files/server2.crt */ -const char mbedtls_test_srv_crt_rsa[] = -"-----BEGIN CERTIFICATE-----\r\n" -"MIIDNzCCAh+gAwIBAgIBAjANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER\r\n" -"MA8GA1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwHhcN\r\n" -"MTEwMjEyMTQ0NDA2WhcNMjEwMjEyMTQ0NDA2WjA0MQswCQYDVQQGEwJOTDERMA8G\r\n" -"A1UECgwIUG9sYXJTU0wxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcN\r\n" -"AQEBBQADggEPADCCAQoCggEBAMFNo93nzR3RBNdJcriZrA545Do8Ss86ExbQWuTN\r\n" -"owCIp+4ea5anUrSQ7y1yej4kmvy2NKwk9XfgJmSMnLAofaHa6ozmyRyWvP7BBFKz\r\n" -"NtSj+uGxdtiQwWG0ZlI2oiZTqqt0Xgd9GYLbKtgfoNkNHC1JZvdbJXNG6AuKT2kM\r\n" -"tQCQ4dqCEGZ9rlQri2V5kaHiYcPNQEkI7mgM8YuG0ka/0LiqEQMef1aoGh5EGA8P\r\n" -"hYvai0Re4hjGYi/HZo36Xdh98yeJKQHFkA4/J/EwyEoO79bex8cna8cFPXrEAjya\r\n" -"HT4P6DSYW8tzS1KW2BGiLICIaTla0w+w3lkvEcf36hIBMJcCAwEAAaNNMEswCQYD\r\n" -"VR0TBAIwADAdBgNVHQ4EFgQUpQXoZLjc32APUBJNYKhkr02LQ5MwHwYDVR0jBBgw\r\n" -"FoAUtFrkpbPe0lL2udWmlQ/rPrzH/f8wDQYJKoZIhvcNAQEFBQADggEBAAFzC0rF\r\n" -"y6De8WMcdgQrEw3AhBHFjzqnxZw1ene4IBSC7lTw8rBSy3jOWQdPUWn+0y/pCeeF\r\n" -"kti6sevFdl1hLemGtd4q+T9TKEKGg3ND4ARfB5AUZZ9uEHq8WBkiwus5clGS17Qd\r\n" -"dS/TOisB59tQruLx1E1bPLtBKyqk4koC5WAULJwfpswGSyWJTpYwIpxcWE3D2tBu\r\n" -"UB6MZfXZFzWmWEOyKbeoXjXe8GBCGgHLywvYDsGQ36HSGtEsAvR2QaTLSxWYcfk1\r\n" -"fbDn4jSWkb4yZy1r01UEigFQtONieGwRFaUqEcFJHJvEEGVgh9keaVlOj2vrwf5r\r\n" -"4mN4lW7gLdenN6g=\r\n" -"-----END CERTIFICATE-----\r\n"; -const size_t mbedtls_test_srv_crt_rsa_len = sizeof( mbedtls_test_srv_crt_rsa ); - -/* tests/data_files/server2.key */ -const char mbedtls_test_srv_key_rsa[] = -"-----BEGIN RSA PRIVATE KEY-----\r\n" -"MIIEpAIBAAKCAQEAwU2j3efNHdEE10lyuJmsDnjkOjxKzzoTFtBa5M2jAIin7h5r\r\n" -"lqdStJDvLXJ6PiSa/LY0rCT1d+AmZIycsCh9odrqjObJHJa8/sEEUrM21KP64bF2\r\n" -"2JDBYbRmUjaiJlOqq3ReB30Zgtsq2B+g2Q0cLUlm91slc0boC4pPaQy1AJDh2oIQ\r\n" -"Zn2uVCuLZXmRoeJhw81ASQjuaAzxi4bSRr/QuKoRAx5/VqgaHkQYDw+Fi9qLRF7i\r\n" -"GMZiL8dmjfpd2H3zJ4kpAcWQDj8n8TDISg7v1t7HxydrxwU9esQCPJodPg/oNJhb\r\n" -"y3NLUpbYEaIsgIhpOVrTD7DeWS8Rx/fqEgEwlwIDAQABAoIBAQCXR0S8EIHFGORZ\r\n" -"++AtOg6eENxD+xVs0f1IeGz57Tjo3QnXX7VBZNdj+p1ECvhCE/G7XnkgU5hLZX+G\r\n" -"Z0jkz/tqJOI0vRSdLBbipHnWouyBQ4e/A1yIJdlBtqXxJ1KE/ituHRbNc4j4kL8Z\r\n" -"/r6pvwnTI0PSx2Eqs048YdS92LT6qAv4flbNDxMn2uY7s4ycS4Q8w1JXnCeaAnYm\r\n" -"WYI5wxO+bvRELR2Mcz5DmVnL8jRyml6l6582bSv5oufReFIbyPZbQWlXgYnpu6He\r\n" -"GTc7E1zKYQGG/9+DQUl/1vQuCPqQwny0tQoX2w5tdYpdMdVm+zkLtbajzdTviJJa\r\n" -"TWzL6lt5AoGBAN86+SVeJDcmQJcv4Eq6UhtRr4QGMiQMz0Sod6ettYxYzMgxtw28\r\n" -"CIrgpozCc+UaZJLo7UxvC6an85r1b2nKPCLQFaggJ0H4Q0J/sZOhBIXaoBzWxveK\r\n" -"nupceKdVxGsFi8CDy86DBfiyFivfBj+47BbaQzPBj7C4rK7UlLjab2rDAoGBAN2u\r\n" -"AM2gchoFiu4v1HFL8D7lweEpi6ZnMJjnEu/dEgGQJFjwdpLnPbsj4c75odQ4Gz8g\r\n" -"sw9lao9VVzbusoRE/JGI4aTdO0pATXyG7eG1Qu+5Yc1YGXcCrliA2xM9xx+d7f+s\r\n" -"mPzN+WIEg5GJDYZDjAzHG5BNvi/FfM1C9dOtjv2dAoGAF0t5KmwbjWHBhcVqO4Ic\r\n" -"BVvN3BIlc1ue2YRXEDlxY5b0r8N4XceMgKmW18OHApZxfl8uPDauWZLXOgl4uepv\r\n" -"whZC3EuWrSyyICNhLY21Ah7hbIEBPF3L3ZsOwC+UErL+dXWLdB56Jgy3gZaBeW7b\r\n" -"vDrEnocJbqCm7IukhXHOBK8CgYEAwqdHB0hqyNSzIOGY7v9abzB6pUdA3BZiQvEs\r\n" -"3LjHVd4HPJ2x0N8CgrBIWOE0q8+0hSMmeE96WW/7jD3fPWwCR5zlXknxBQsfv0gP\r\n" -"3BC5PR0Qdypz+d+9zfMf625kyit4T/hzwhDveZUzHnk1Cf+IG7Q+TOEnLnWAWBED\r\n" -"ISOWmrUCgYAFEmRxgwAc/u+D6t0syCwAYh6POtscq9Y0i9GyWk89NzgC4NdwwbBH\r\n" -"4AgahOxIxXx2gxJnq3yfkJfIjwf0s2DyP0kY2y6Ua1OeomPeY9mrIS4tCuDQ6LrE\r\n" -"TB6l9VGoxJL4fyHnZb8L5gGvnB1bbD8cL6YPaDiOhcRseC9vBiEuVg==\r\n" -"-----END RSA PRIVATE KEY-----\r\n"; -const size_t mbedtls_test_srv_key_rsa_len = sizeof( mbedtls_test_srv_key_rsa ); - -/* tests/data_files/cli-rsa-sha256.crt */ -const char mbedtls_test_cli_crt_rsa[] = -"-----BEGIN CERTIFICATE-----\r\n" -"MIIDPzCCAiegAwIBAgIBBDANBgkqhkiG9w0BAQsFADA7MQswCQYDVQQGEwJOTDER\r\n" -"MA8GA1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwHhcN\r\n" -"MTEwMjEyMTQ0NDA2WhcNMjEwMjEyMTQ0NDA2WjA8MQswCQYDVQQGEwJOTDERMA8G\r\n" -"A1UECgwIUG9sYXJTU0wxGjAYBgNVBAMMEVBvbGFyU1NMIENsaWVudCAyMIIBIjAN\r\n" -"BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyHTEzLn5tXnpRdkUYLB9u5Pyax6f\r\n" -"M60Nj4o8VmXl3ETZzGaFB9X4J7BKNdBjngpuG7fa8H6r7gwQk4ZJGDTzqCrSV/Uu\r\n" -"1C93KYRhTYJQj6eVSHD1bk2y1RPD0hrt5kPqQhTrdOrA7R/UV06p86jt0uDBMHEw\r\n" -"MjDV0/YI0FZPRo7yX/k9Z5GIMC5Cst99++UMd//sMcB4j7/Cf8qtbCHWjdmLao5v\r\n" -"4Jv4EFbMs44TFeY0BGbH7vk2DmqV9gmaBmf0ZXH4yqSxJeD+PIs1BGe64E92hfx/\r\n" -"/DZrtenNLQNiTrM9AM+vdqBpVoNq0qjU51Bx5rU2BXcFbXvI5MT9TNUhXwIDAQAB\r\n" -"o00wSzAJBgNVHRMEAjAAMB0GA1UdDgQWBBRxoQBzckAvVHZeM/xSj7zx3WtGITAf\r\n" -"BgNVHSMEGDAWgBS0WuSls97SUva51aaVD+s+vMf9/zANBgkqhkiG9w0BAQsFAAOC\r\n" -"AQEAlHabem2Tu69VUN7EipwnQn1dIHdgvT5i+iQHpSxY1crPnBbAeSdAXwsVEqLQ\r\n" -"gOOIAQD5VIITNuoGgo4i+4OpNh9u7ZkpRHla+/swsfrFWRRbBNP5Bcu74AGLstwU\r\n" -"zM8gIkBiyfM1Q1qDQISV9trlCG6O8vh8dp/rbI3rfzo99BOHXgFCrzXjCuW4vDsF\r\n" -"r+Dao26bX3sJ6UnEWg1H3o2x6PpUcvQ36h71/bz4TEbbUUEpe02V4QWuL+wrhHJL\r\n" -"U7o3SVE3Og7jPF8sat0a50YUWhwEFI256m02KAXLg89ueUyYKEr6rNwhcvXJpvU9\r\n" -"giIVvd0Sbjjnn7NC4VDbcXV8vw==\r\n" -"-----END CERTIFICATE-----\r\n"; -const size_t mbedtls_test_cli_crt_rsa_len = sizeof( mbedtls_test_cli_crt_rsa ); - -/* tests/data_files/cli-rsa.key */ -const char mbedtls_test_cli_key_rsa[] = -"-----BEGIN RSA PRIVATE KEY-----\r\n" -"MIIEpAIBAAKCAQEAyHTEzLn5tXnpRdkUYLB9u5Pyax6fM60Nj4o8VmXl3ETZzGaF\r\n" -"B9X4J7BKNdBjngpuG7fa8H6r7gwQk4ZJGDTzqCrSV/Uu1C93KYRhTYJQj6eVSHD1\r\n" -"bk2y1RPD0hrt5kPqQhTrdOrA7R/UV06p86jt0uDBMHEwMjDV0/YI0FZPRo7yX/k9\r\n" -"Z5GIMC5Cst99++UMd//sMcB4j7/Cf8qtbCHWjdmLao5v4Jv4EFbMs44TFeY0BGbH\r\n" -"7vk2DmqV9gmaBmf0ZXH4yqSxJeD+PIs1BGe64E92hfx//DZrtenNLQNiTrM9AM+v\r\n" -"dqBpVoNq0qjU51Bx5rU2BXcFbXvI5MT9TNUhXwIDAQABAoIBAGdNtfYDiap6bzst\r\n" -"yhCiI8m9TtrhZw4MisaEaN/ll3XSjaOG2dvV6xMZCMV+5TeXDHOAZnY18Yi18vzz\r\n" -"4Ut2TnNFzizCECYNaA2fST3WgInnxUkV3YXAyP6CNxJaCmv2aA0yFr2kFVSeaKGt\r\n" -"ymvljNp2NVkvm7Th8fBQBO7I7AXhz43k0mR7XmPgewe8ApZOG3hstkOaMvbWAvWA\r\n" -"zCZupdDjZYjOJqlA4eEA4H8/w7F83r5CugeBE8LgEREjLPiyejrU5H1fubEY+h0d\r\n" -"l5HZBJ68ybTXfQ5U9o/QKA3dd0toBEhhdRUDGzWtjvwkEQfqF1reGWj/tod/gCpf\r\n" -"DFi6X0ECgYEA4wOv/pjSC3ty6TuOvKX2rOUiBrLXXv2JSxZnMoMiWI5ipLQt+RYT\r\n" -"VPafL/m7Dn6MbwjayOkcZhBwk5CNz5A6Q4lJ64Mq/lqHznRCQQ2Mc1G8eyDF/fYL\r\n" -"Ze2pLvwP9VD5jTc2miDfw+MnvJhywRRLcemDFP8k4hQVtm8PMp3ZmNECgYEA4gz7\r\n" -"wzObR4gn8ibe617uQPZjWzUj9dUHYd+in1gwBCIrtNnaRn9I9U/Q6tegRYpii4ys\r\n" -"c176NmU+umy6XmuSKV5qD9bSpZWG2nLFnslrN15Lm3fhZxoeMNhBaEDTnLT26yoi\r\n" -"33gp0mSSWy94ZEqipms+ULF6sY1ZtFW6tpGFoy8CgYAQHhnnvJflIs2ky4q10B60\r\n" -"ZcxFp3rtDpkp0JxhFLhiizFrujMtZSjYNm5U7KkgPVHhLELEUvCmOnKTt4ap/vZ0\r\n" -"BxJNe1GZH3pW6SAvGDQpl9sG7uu/vTFP+lCxukmzxB0DrrDcvorEkKMom7ZCCRvW\r\n" -"KZsZ6YeH2Z81BauRj218kQKBgQCUV/DgKP2985xDTT79N08jUo3hTP5MVYCCuj/+\r\n" -"UeEw1TvZcx3LJby7P6Xad6a1/BqveaGyFKIfEFIaBUBItk801sDDpDaYc4gL00Xc\r\n" -"7lFuBHOZkxJYlss5QrGpuOEl9ZwUt5IrFLBdYaKqNHzNVC1pCPfb/JyH6Dr2HUxq\r\n" -"gxUwAQKBgQCcU6G2L8AG9d9c0UpOyL1tMvFe5Ttw0KjlQVdsh1MP6yigYo9DYuwu\r\n" -"bHFVW2r0dBTqegP2/KTOxKzaHfC1qf0RGDsUoJCNJrd1cwoCLG8P2EF4w3OBrKqv\r\n" -"8u4ytY0F+Vlanj5lm3TaoHSVF1+NWPyOTiwevIECGKwSxvlki4fDAA==\r\n" -"-----END RSA PRIVATE KEY-----\r\n"; -const size_t mbedtls_test_cli_key_rsa_len = sizeof( mbedtls_test_cli_key_rsa ); -#endif /* MBEDTLS_RSA_C */ +/* This is generated from tests/data_files/cli2.key.der using `xxd -i`. */ +/* BEGIN FILE binary macro TEST_CLI_KEY_EC_DER tests/data_files/cli2.key.der */ +#define TEST_CLI_KEY_EC_DER { \ + 0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0xf6, 0xf7, 0x86, 0x64, 0xf1, \ + 0x67, 0x7f, 0xe6, 0x64, 0x8d, 0xef, 0xca, 0x4e, 0xe9, 0xdd, 0x4d, 0xf0, \ + 0x05, 0xff, 0x96, 0x22, 0x8a, 0x7a, 0x84, 0x38, 0x64, 0x17, 0x32, 0x61, \ + 0x98, 0xb7, 0x2a, 0xa0, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, \ + 0x03, 0x01, 0x07, 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x57, 0xe5, 0xae, \ + 0xb1, 0x73, 0xdf, 0xd3, 0xac, 0xbb, 0x93, 0xb8, 0x81, 0xff, 0x12, 0xae, \ + 0xee, 0xe6, 0x53, 0xac, 0xce, 0x55, 0x53, 0xf6, 0x34, 0x0e, 0xcc, 0x2e, \ + 0xe3, 0x63, 0x25, 0x0b, 0xdf, 0x98, 0xe2, 0xf3, 0x5c, 0x60, 0x36, 0x96, \ + 0xc0, 0xd5, 0x18, 0x14, 0x70, 0xe5, 0x7f, 0x9f, 0xd5, 0x4b, 0x45, 0x18, \ + 0xe5, 0xb0, 0x6c, 0xd5, 0x5c, 0xf8, 0x96, 0x8f, 0x87, 0x70, 0xa3, 0xe4, \ + 0xc7 \ +} +/* END FILE */ + +/* This is taken from tests/data_files/cli-rsa-sha256.crt. */ +/* BEGIN FILE string macro TEST_CLI_CRT_RSA_PEM tests/data_files/cli-rsa-sha256.crt */ +#define TEST_CLI_CRT_RSA_PEM \ + "-----BEGIN CERTIFICATE-----\r\n" \ + "MIIDPzCCAiegAwIBAgIBBDANBgkqhkiG9w0BAQsFADA7MQswCQYDVQQGEwJOTDER\r\n" \ + "MA8GA1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwHhcN\r\n" \ + "MTkwMjEwMTQ0NDA2WhcNMjkwMjEwMTQ0NDA2WjA8MQswCQYDVQQGEwJOTDERMA8G\r\n" \ + "A1UECgwIUG9sYXJTU0wxGjAYBgNVBAMMEVBvbGFyU1NMIENsaWVudCAyMIIBIjAN\r\n" \ + "BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyHTEzLn5tXnpRdkUYLB9u5Pyax6f\r\n" \ + "M60Nj4o8VmXl3ETZzGaFB9X4J7BKNdBjngpuG7fa8H6r7gwQk4ZJGDTzqCrSV/Uu\r\n" \ + "1C93KYRhTYJQj6eVSHD1bk2y1RPD0hrt5kPqQhTrdOrA7R/UV06p86jt0uDBMHEw\r\n" \ + "MjDV0/YI0FZPRo7yX/k9Z5GIMC5Cst99++UMd//sMcB4j7/Cf8qtbCHWjdmLao5v\r\n" \ + "4Jv4EFbMs44TFeY0BGbH7vk2DmqV9gmaBmf0ZXH4yqSxJeD+PIs1BGe64E92hfx/\r\n" \ + "/DZrtenNLQNiTrM9AM+vdqBpVoNq0qjU51Bx5rU2BXcFbXvI5MT9TNUhXwIDAQAB\r\n" \ + "o00wSzAJBgNVHRMEAjAAMB0GA1UdDgQWBBRxoQBzckAvVHZeM/xSj7zx3WtGITAf\r\n" \ + "BgNVHSMEGDAWgBS0WuSls97SUva51aaVD+s+vMf9/zANBgkqhkiG9w0BAQsFAAOC\r\n" \ + "AQEAXidv1d4pLlBiKWED95rMycBdgDcgyNqJxakFkRfRyA2y1mlyTn7uBXRkNLY5\r\n" \ + "ZFzK82GCjk2Q2OD4RZSCPAJJqLpHHU34t71ciffvy2KK81YvrxczRhMAE64i+qna\r\n" \ + "yP3Td2XuWJR05PVPoSemsNELs9gWttdnYy3ce+EY2Y0n7Rsi7982EeLIAA7H6ca4\r\n" \ + "2Es/NUH//JZJT32OP0doMxeDRA+vplkKqTLLWf7dX26LIriBkBaRCgR5Yv9LBPFc\r\n" \ + "NOtpzu/LbrY7QFXKJMI+JXDudCsOn8KCmiA4d6Emisqfh3V3485l7HEQNcvLTxlD\r\n" \ + "6zDQyi0/ykYUYZkwQTK1N2Nvlw==\r\n" \ + "-----END CERTIFICATE-----\r\n" +/* END FILE */ + +/* This was generated from tests/data_files/cli-rsa-sha256.crt.der + using `xxd -i.` */ +/* BEGIN FILE binary macro TEST_CLI_CRT_RSA_DER tests/data_files/cli-rsa-sha256.crt.der */ +#define TEST_CLI_CRT_RSA_DER { \ + 0x30, 0x82, 0x03, 0x3f, 0x30, 0x82, 0x02, 0x27, 0xa0, 0x03, 0x02, 0x01, \ + 0x02, 0x02, 0x01, 0x04, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, \ + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x3b, 0x31, 0x0b, 0x30, \ + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, \ + 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x08, 0x50, 0x6f, 0x6c, \ + 0x61, 0x72, 0x53, 0x53, 0x4c, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, \ + 0x04, 0x03, 0x0c, 0x10, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, 0x53, 0x4c, \ + 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, \ + 0x31, 0x39, 0x30, 0x32, 0x31, 0x30, 0x31, 0x34, 0x34, 0x34, 0x30, 0x36, \ + 0x5a, 0x17, 0x0d, 0x32, 0x39, 0x30, 0x32, 0x31, 0x30, 0x31, 0x34, 0x34, \ + 0x34, 0x30, 0x36, 0x5a, 0x30, 0x3c, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, \ + 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x11, 0x30, 0x0f, 0x06, \ + 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x08, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, \ + 0x53, 0x4c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, \ + 0x11, 0x50, 0x6f, 0x6c, 0x61, 0x72, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x6c, \ + 0x69, 0x65, 0x6e, 0x74, 0x20, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, \ + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, \ + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, \ + 0x01, 0x01, 0x00, 0xc8, 0x74, 0xc4, 0xcc, 0xb9, 0xf9, 0xb5, 0x79, 0xe9, \ + 0x45, 0xd9, 0x14, 0x60, 0xb0, 0x7d, 0xbb, 0x93, 0xf2, 0x6b, 0x1e, 0x9f, \ + 0x33, 0xad, 0x0d, 0x8f, 0x8a, 0x3c, 0x56, 0x65, 0xe5, 0xdc, 0x44, 0xd9, \ + 0xcc, 0x66, 0x85, 0x07, 0xd5, 0xf8, 0x27, 0xb0, 0x4a, 0x35, 0xd0, 0x63, \ + 0x9e, 0x0a, 0x6e, 0x1b, 0xb7, 0xda, 0xf0, 0x7e, 0xab, 0xee, 0x0c, 0x10, \ + 0x93, 0x86, 0x49, 0x18, 0x34, 0xf3, 0xa8, 0x2a, 0xd2, 0x57, 0xf5, 0x2e, \ + 0xd4, 0x2f, 0x77, 0x29, 0x84, 0x61, 0x4d, 0x82, 0x50, 0x8f, 0xa7, 0x95, \ + 0x48, 0x70, 0xf5, 0x6e, 0x4d, 0xb2, 0xd5, 0x13, 0xc3, 0xd2, 0x1a, 0xed, \ + 0xe6, 0x43, 0xea, 0x42, 0x14, 0xeb, 0x74, 0xea, 0xc0, 0xed, 0x1f, 0xd4, \ + 0x57, 0x4e, 0xa9, 0xf3, 0xa8, 0xed, 0xd2, 0xe0, 0xc1, 0x30, 0x71, 0x30, \ + 0x32, 0x30, 0xd5, 0xd3, 0xf6, 0x08, 0xd0, 0x56, 0x4f, 0x46, 0x8e, 0xf2, \ + 0x5f, 0xf9, 0x3d, 0x67, 0x91, 0x88, 0x30, 0x2e, 0x42, 0xb2, 0xdf, 0x7d, \ + 0xfb, 0xe5, 0x0c, 0x77, 0xff, 0xec, 0x31, 0xc0, 0x78, 0x8f, 0xbf, 0xc2, \ + 0x7f, 0xca, 0xad, 0x6c, 0x21, 0xd6, 0x8d, 0xd9, 0x8b, 0x6a, 0x8e, 0x6f, \ + 0xe0, 0x9b, 0xf8, 0x10, 0x56, 0xcc, 0xb3, 0x8e, 0x13, 0x15, 0xe6, 0x34, \ + 0x04, 0x66, 0xc7, 0xee, 0xf9, 0x36, 0x0e, 0x6a, 0x95, 0xf6, 0x09, 0x9a, \ + 0x06, 0x67, 0xf4, 0x65, 0x71, 0xf8, 0xca, 0xa4, 0xb1, 0x25, 0xe0, 0xfe, \ + 0x3c, 0x8b, 0x35, 0x04, 0x67, 0xba, 0xe0, 0x4f, 0x76, 0x85, 0xfc, 0x7f, \ + 0xfc, 0x36, 0x6b, 0xb5, 0xe9, 0xcd, 0x2d, 0x03, 0x62, 0x4e, 0xb3, 0x3d, \ + 0x00, 0xcf, 0xaf, 0x76, 0xa0, 0x69, 0x56, 0x83, 0x6a, 0xd2, 0xa8, 0xd4, \ + 0xe7, 0x50, 0x71, 0xe6, 0xb5, 0x36, 0x05, 0x77, 0x05, 0x6d, 0x7b, 0xc8, \ + 0xe4, 0xc4, 0xfd, 0x4c, 0xd5, 0x21, 0x5f, 0x02, 0x03, 0x01, 0x00, 0x01, \ + 0xa3, 0x4d, 0x30, 0x4b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, \ + 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, \ + 0x04, 0x14, 0x71, 0xa1, 0x00, 0x73, 0x72, 0x40, 0x2f, 0x54, 0x76, 0x5e, \ + 0x33, 0xfc, 0x52, 0x8f, 0xbc, 0xf1, 0xdd, 0x6b, 0x46, 0x21, 0x30, 0x1f, \ + 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xb4, \ + 0x5a, 0xe4, 0xa5, 0xb3, 0xde, 0xd2, 0x52, 0xf6, 0xb9, 0xd5, 0xa6, 0x95, \ + 0x0f, 0xeb, 0x3e, 0xbc, 0xc7, 0xfd, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, \ + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, \ + 0x01, 0x01, 0x00, 0x5e, 0x27, 0x6f, 0xd5, 0xde, 0x29, 0x2e, 0x50, 0x62, \ + 0x29, 0x61, 0x03, 0xf7, 0x9a, 0xcc, 0xc9, 0xc0, 0x5d, 0x80, 0x37, 0x20, \ + 0xc8, 0xda, 0x89, 0xc5, 0xa9, 0x05, 0x91, 0x17, 0xd1, 0xc8, 0x0d, 0xb2, \ + 0xd6, 0x69, 0x72, 0x4e, 0x7e, 0xee, 0x05, 0x74, 0x64, 0x34, 0xb6, 0x39, \ + 0x64, 0x5c, 0xca, 0xf3, 0x61, 0x82, 0x8e, 0x4d, 0x90, 0xd8, 0xe0, 0xf8, \ + 0x45, 0x94, 0x82, 0x3c, 0x02, 0x49, 0xa8, 0xba, 0x47, 0x1d, 0x4d, 0xf8, \ + 0xb7, 0xbd, 0x5c, 0x89, 0xf7, 0xef, 0xcb, 0x62, 0x8a, 0xf3, 0x56, 0x2f, \ + 0xaf, 0x17, 0x33, 0x46, 0x13, 0x00, 0x13, 0xae, 0x22, 0xfa, 0xa9, 0xda, \ + 0xc8, 0xfd, 0xd3, 0x77, 0x65, 0xee, 0x58, 0x94, 0x74, 0xe4, 0xf5, 0x4f, \ + 0xa1, 0x27, 0xa6, 0xb0, 0xd1, 0x0b, 0xb3, 0xd8, 0x16, 0xb6, 0xd7, 0x67, \ + 0x63, 0x2d, 0xdc, 0x7b, 0xe1, 0x18, 0xd9, 0x8d, 0x27, 0xed, 0x1b, 0x22, \ + 0xef, 0xdf, 0x36, 0x11, 0xe2, 0xc8, 0x00, 0x0e, 0xc7, 0xe9, 0xc6, 0xb8, \ + 0xd8, 0x4b, 0x3f, 0x35, 0x41, 0xff, 0xfc, 0x96, 0x49, 0x4f, 0x7d, 0x8e, \ + 0x3f, 0x47, 0x68, 0x33, 0x17, 0x83, 0x44, 0x0f, 0xaf, 0xa6, 0x59, 0x0a, \ + 0xa9, 0x32, 0xcb, 0x59, 0xfe, 0xdd, 0x5f, 0x6e, 0x8b, 0x22, 0xb8, 0x81, \ + 0x90, 0x16, 0x91, 0x0a, 0x04, 0x79, 0x62, 0xff, 0x4b, 0x04, 0xf1, 0x5c, \ + 0x34, 0xeb, 0x69, 0xce, 0xef, 0xcb, 0x6e, 0xb6, 0x3b, 0x40, 0x55, 0xca, \ + 0x24, 0xc2, 0x3e, 0x25, 0x70, 0xee, 0x74, 0x2b, 0x0e, 0x9f, 0xc2, 0x82, \ + 0x9a, 0x20, 0x38, 0x77, 0xa1, 0x26, 0x8a, 0xca, 0x9f, 0x87, 0x75, 0x77, \ + 0xe3, 0xce, 0x65, 0xec, 0x71, 0x10, 0x35, 0xcb, 0xcb, 0x4f, 0x19, 0x43, \ + 0xeb, 0x30, 0xd0, 0xca, 0x2d, 0x3f, 0xca, 0x46, 0x14, 0x61, 0x99, 0x30, \ + 0x41, 0x32, 0xb5, 0x37, 0x63, 0x6f, 0x97 \ +} +/* END FILE */ + +/* This is taken from tests/data_files/cli-rsa.key. */ +/* BEGIN FILE string macro TEST_CLI_KEY_RSA_PEM tests/data_files/cli-rsa.key */ +#define TEST_CLI_KEY_RSA_PEM \ + "-----BEGIN RSA PRIVATE KEY-----\r\n" \ + "MIIEpAIBAAKCAQEAyHTEzLn5tXnpRdkUYLB9u5Pyax6fM60Nj4o8VmXl3ETZzGaF\r\n" \ + "B9X4J7BKNdBjngpuG7fa8H6r7gwQk4ZJGDTzqCrSV/Uu1C93KYRhTYJQj6eVSHD1\r\n" \ + "bk2y1RPD0hrt5kPqQhTrdOrA7R/UV06p86jt0uDBMHEwMjDV0/YI0FZPRo7yX/k9\r\n" \ + "Z5GIMC5Cst99++UMd//sMcB4j7/Cf8qtbCHWjdmLao5v4Jv4EFbMs44TFeY0BGbH\r\n" \ + "7vk2DmqV9gmaBmf0ZXH4yqSxJeD+PIs1BGe64E92hfx//DZrtenNLQNiTrM9AM+v\r\n" \ + "dqBpVoNq0qjU51Bx5rU2BXcFbXvI5MT9TNUhXwIDAQABAoIBAGdNtfYDiap6bzst\r\n" \ + "yhCiI8m9TtrhZw4MisaEaN/ll3XSjaOG2dvV6xMZCMV+5TeXDHOAZnY18Yi18vzz\r\n" \ + "4Ut2TnNFzizCECYNaA2fST3WgInnxUkV3YXAyP6CNxJaCmv2aA0yFr2kFVSeaKGt\r\n" \ + "ymvljNp2NVkvm7Th8fBQBO7I7AXhz43k0mR7XmPgewe8ApZOG3hstkOaMvbWAvWA\r\n" \ + "zCZupdDjZYjOJqlA4eEA4H8/w7F83r5CugeBE8LgEREjLPiyejrU5H1fubEY+h0d\r\n" \ + "l5HZBJ68ybTXfQ5U9o/QKA3dd0toBEhhdRUDGzWtjvwkEQfqF1reGWj/tod/gCpf\r\n" \ + "DFi6X0ECgYEA4wOv/pjSC3ty6TuOvKX2rOUiBrLXXv2JSxZnMoMiWI5ipLQt+RYT\r\n" \ + "VPafL/m7Dn6MbwjayOkcZhBwk5CNz5A6Q4lJ64Mq/lqHznRCQQ2Mc1G8eyDF/fYL\r\n" \ + "Ze2pLvwP9VD5jTc2miDfw+MnvJhywRRLcemDFP8k4hQVtm8PMp3ZmNECgYEA4gz7\r\n" \ + "wzObR4gn8ibe617uQPZjWzUj9dUHYd+in1gwBCIrtNnaRn9I9U/Q6tegRYpii4ys\r\n" \ + "c176NmU+umy6XmuSKV5qD9bSpZWG2nLFnslrN15Lm3fhZxoeMNhBaEDTnLT26yoi\r\n" \ + "33gp0mSSWy94ZEqipms+ULF6sY1ZtFW6tpGFoy8CgYAQHhnnvJflIs2ky4q10B60\r\n" \ + "ZcxFp3rtDpkp0JxhFLhiizFrujMtZSjYNm5U7KkgPVHhLELEUvCmOnKTt4ap/vZ0\r\n" \ + "BxJNe1GZH3pW6SAvGDQpl9sG7uu/vTFP+lCxukmzxB0DrrDcvorEkKMom7ZCCRvW\r\n" \ + "KZsZ6YeH2Z81BauRj218kQKBgQCUV/DgKP2985xDTT79N08jUo3hTP5MVYCCuj/+\r\n" \ + "UeEw1TvZcx3LJby7P6Xad6a1/BqveaGyFKIfEFIaBUBItk801sDDpDaYc4gL00Xc\r\n" \ + "7lFuBHOZkxJYlss5QrGpuOEl9ZwUt5IrFLBdYaKqNHzNVC1pCPfb/JyH6Dr2HUxq\r\n" \ + "gxUwAQKBgQCcU6G2L8AG9d9c0UpOyL1tMvFe5Ttw0KjlQVdsh1MP6yigYo9DYuwu\r\n" \ + "bHFVW2r0dBTqegP2/KTOxKzaHfC1qf0RGDsUoJCNJrd1cwoCLG8P2EF4w3OBrKqv\r\n" \ + "8u4ytY0F+Vlanj5lm3TaoHSVF1+NWPyOTiwevIECGKwSxvlki4fDAA==\r\n" \ + "-----END RSA PRIVATE KEY-----\r\n"/* END FILE */ + +/* This was generated from tests/data_files/cli-rsa.key.der using `xxd -i`. */ +/* BEGIN FILE binary macro TEST_CLI_KEY_RSA_DER tests/data_files/cli-rsa.key.der */ +#define TEST_CLI_KEY_RSA_DER { \ + 0x30, 0x82, 0x04, 0xa4, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00, \ + 0xc8, 0x74, 0xc4, 0xcc, 0xb9, 0xf9, 0xb5, 0x79, 0xe9, 0x45, 0xd9, 0x14, \ + 0x60, 0xb0, 0x7d, 0xbb, 0x93, 0xf2, 0x6b, 0x1e, 0x9f, 0x33, 0xad, 0x0d, \ + 0x8f, 0x8a, 0x3c, 0x56, 0x65, 0xe5, 0xdc, 0x44, 0xd9, 0xcc, 0x66, 0x85, \ + 0x07, 0xd5, 0xf8, 0x27, 0xb0, 0x4a, 0x35, 0xd0, 0x63, 0x9e, 0x0a, 0x6e, \ + 0x1b, 0xb7, 0xda, 0xf0, 0x7e, 0xab, 0xee, 0x0c, 0x10, 0x93, 0x86, 0x49, \ + 0x18, 0x34, 0xf3, 0xa8, 0x2a, 0xd2, 0x57, 0xf5, 0x2e, 0xd4, 0x2f, 0x77, \ + 0x29, 0x84, 0x61, 0x4d, 0x82, 0x50, 0x8f, 0xa7, 0x95, 0x48, 0x70, 0xf5, \ + 0x6e, 0x4d, 0xb2, 0xd5, 0x13, 0xc3, 0xd2, 0x1a, 0xed, 0xe6, 0x43, 0xea, \ + 0x42, 0x14, 0xeb, 0x74, 0xea, 0xc0, 0xed, 0x1f, 0xd4, 0x57, 0x4e, 0xa9, \ + 0xf3, 0xa8, 0xed, 0xd2, 0xe0, 0xc1, 0x30, 0x71, 0x30, 0x32, 0x30, 0xd5, \ + 0xd3, 0xf6, 0x08, 0xd0, 0x56, 0x4f, 0x46, 0x8e, 0xf2, 0x5f, 0xf9, 0x3d, \ + 0x67, 0x91, 0x88, 0x30, 0x2e, 0x42, 0xb2, 0xdf, 0x7d, 0xfb, 0xe5, 0x0c, \ + 0x77, 0xff, 0xec, 0x31, 0xc0, 0x78, 0x8f, 0xbf, 0xc2, 0x7f, 0xca, 0xad, \ + 0x6c, 0x21, 0xd6, 0x8d, 0xd9, 0x8b, 0x6a, 0x8e, 0x6f, 0xe0, 0x9b, 0xf8, \ + 0x10, 0x56, 0xcc, 0xb3, 0x8e, 0x13, 0x15, 0xe6, 0x34, 0x04, 0x66, 0xc7, \ + 0xee, 0xf9, 0x36, 0x0e, 0x6a, 0x95, 0xf6, 0x09, 0x9a, 0x06, 0x67, 0xf4, \ + 0x65, 0x71, 0xf8, 0xca, 0xa4, 0xb1, 0x25, 0xe0, 0xfe, 0x3c, 0x8b, 0x35, \ + 0x04, 0x67, 0xba, 0xe0, 0x4f, 0x76, 0x85, 0xfc, 0x7f, 0xfc, 0x36, 0x6b, \ + 0xb5, 0xe9, 0xcd, 0x2d, 0x03, 0x62, 0x4e, 0xb3, 0x3d, 0x00, 0xcf, 0xaf, \ + 0x76, 0xa0, 0x69, 0x56, 0x83, 0x6a, 0xd2, 0xa8, 0xd4, 0xe7, 0x50, 0x71, \ + 0xe6, 0xb5, 0x36, 0x05, 0x77, 0x05, 0x6d, 0x7b, 0xc8, 0xe4, 0xc4, 0xfd, \ + 0x4c, 0xd5, 0x21, 0x5f, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x82, 0x01, \ + 0x00, 0x67, 0x4d, 0xb5, 0xf6, 0x03, 0x89, 0xaa, 0x7a, 0x6f, 0x3b, 0x2d, \ + 0xca, 0x10, 0xa2, 0x23, 0xc9, 0xbd, 0x4e, 0xda, 0xe1, 0x67, 0x0e, 0x0c, \ + 0x8a, 0xc6, 0x84, 0x68, 0xdf, 0xe5, 0x97, 0x75, 0xd2, 0x8d, 0xa3, 0x86, \ + 0xd9, 0xdb, 0xd5, 0xeb, 0x13, 0x19, 0x08, 0xc5, 0x7e, 0xe5, 0x37, 0x97, \ + 0x0c, 0x73, 0x80, 0x66, 0x76, 0x35, 0xf1, 0x88, 0xb5, 0xf2, 0xfc, 0xf3, \ + 0xe1, 0x4b, 0x76, 0x4e, 0x73, 0x45, 0xce, 0x2c, 0xc2, 0x10, 0x26, 0x0d, \ + 0x68, 0x0d, 0x9f, 0x49, 0x3d, 0xd6, 0x80, 0x89, 0xe7, 0xc5, 0x49, 0x15, \ + 0xdd, 0x85, 0xc0, 0xc8, 0xfe, 0x82, 0x37, 0x12, 0x5a, 0x0a, 0x6b, 0xf6, \ + 0x68, 0x0d, 0x32, 0x16, 0xbd, 0xa4, 0x15, 0x54, 0x9e, 0x68, 0xa1, 0xad, \ + 0xca, 0x6b, 0xe5, 0x8c, 0xda, 0x76, 0x35, 0x59, 0x2f, 0x9b, 0xb4, 0xe1, \ + 0xf1, 0xf0, 0x50, 0x04, 0xee, 0xc8, 0xec, 0x05, 0xe1, 0xcf, 0x8d, 0xe4, \ + 0xd2, 0x64, 0x7b, 0x5e, 0x63, 0xe0, 0x7b, 0x07, 0xbc, 0x02, 0x96, 0x4e, \ + 0x1b, 0x78, 0x6c, 0xb6, 0x43, 0x9a, 0x32, 0xf6, 0xd6, 0x02, 0xf5, 0x80, \ + 0xcc, 0x26, 0x6e, 0xa5, 0xd0, 0xe3, 0x65, 0x88, 0xce, 0x26, 0xa9, 0x40, \ + 0xe1, 0xe1, 0x00, 0xe0, 0x7f, 0x3f, 0xc3, 0xb1, 0x7c, 0xde, 0xbe, 0x42, \ + 0xba, 0x07, 0x81, 0x13, 0xc2, 0xe0, 0x11, 0x11, 0x23, 0x2c, 0xf8, 0xb2, \ + 0x7a, 0x3a, 0xd4, 0xe4, 0x7d, 0x5f, 0xb9, 0xb1, 0x18, 0xfa, 0x1d, 0x1d, \ + 0x97, 0x91, 0xd9, 0x04, 0x9e, 0xbc, 0xc9, 0xb4, 0xd7, 0x7d, 0x0e, 0x54, \ + 0xf6, 0x8f, 0xd0, 0x28, 0x0d, 0xdd, 0x77, 0x4b, 0x68, 0x04, 0x48, 0x61, \ + 0x75, 0x15, 0x03, 0x1b, 0x35, 0xad, 0x8e, 0xfc, 0x24, 0x11, 0x07, 0xea, \ + 0x17, 0x5a, 0xde, 0x19, 0x68, 0xff, 0xb6, 0x87, 0x7f, 0x80, 0x2a, 0x5f, \ + 0x0c, 0x58, 0xba, 0x5f, 0x41, 0x02, 0x81, 0x81, 0x00, 0xe3, 0x03, 0xaf, \ + 0xfe, 0x98, 0xd2, 0x0b, 0x7b, 0x72, 0xe9, 0x3b, 0x8e, 0xbc, 0xa5, 0xf6, \ + 0xac, 0xe5, 0x22, 0x06, 0xb2, 0xd7, 0x5e, 0xfd, 0x89, 0x4b, 0x16, 0x67, \ + 0x32, 0x83, 0x22, 0x58, 0x8e, 0x62, 0xa4, 0xb4, 0x2d, 0xf9, 0x16, 0x13, \ + 0x54, 0xf6, 0x9f, 0x2f, 0xf9, 0xbb, 0x0e, 0x7e, 0x8c, 0x6f, 0x08, 0xda, \ + 0xc8, 0xe9, 0x1c, 0x66, 0x10, 0x70, 0x93, 0x90, 0x8d, 0xcf, 0x90, 0x3a, \ + 0x43, 0x89, 0x49, 0xeb, 0x83, 0x2a, 0xfe, 0x5a, 0x87, 0xce, 0x74, 0x42, \ + 0x41, 0x0d, 0x8c, 0x73, 0x51, 0xbc, 0x7b, 0x20, 0xc5, 0xfd, 0xf6, 0x0b, \ + 0x65, 0xed, 0xa9, 0x2e, 0xfc, 0x0f, 0xf5, 0x50, 0xf9, 0x8d, 0x37, 0x36, \ + 0x9a, 0x20, 0xdf, 0xc3, 0xe3, 0x27, 0xbc, 0x98, 0x72, 0xc1, 0x14, 0x4b, \ + 0x71, 0xe9, 0x83, 0x14, 0xff, 0x24, 0xe2, 0x14, 0x15, 0xb6, 0x6f, 0x0f, \ + 0x32, 0x9d, 0xd9, 0x98, 0xd1, 0x02, 0x81, 0x81, 0x00, 0xe2, 0x0c, 0xfb, \ + 0xc3, 0x33, 0x9b, 0x47, 0x88, 0x27, 0xf2, 0x26, 0xde, 0xeb, 0x5e, 0xee, \ + 0x40, 0xf6, 0x63, 0x5b, 0x35, 0x23, 0xf5, 0xd5, 0x07, 0x61, 0xdf, 0xa2, \ + 0x9f, 0x58, 0x30, 0x04, 0x22, 0x2b, 0xb4, 0xd9, 0xda, 0x46, 0x7f, 0x48, \ + 0xf5, 0x4f, 0xd0, 0xea, 0xd7, 0xa0, 0x45, 0x8a, 0x62, 0x8b, 0x8c, 0xac, \ + 0x73, 0x5e, 0xfa, 0x36, 0x65, 0x3e, 0xba, 0x6c, 0xba, 0x5e, 0x6b, 0x92, \ + 0x29, 0x5e, 0x6a, 0x0f, 0xd6, 0xd2, 0xa5, 0x95, 0x86, 0xda, 0x72, 0xc5, \ + 0x9e, 0xc9, 0x6b, 0x37, 0x5e, 0x4b, 0x9b, 0x77, 0xe1, 0x67, 0x1a, 0x1e, \ + 0x30, 0xd8, 0x41, 0x68, 0x40, 0xd3, 0x9c, 0xb4, 0xf6, 0xeb, 0x2a, 0x22, \ + 0xdf, 0x78, 0x29, 0xd2, 0x64, 0x92, 0x5b, 0x2f, 0x78, 0x64, 0x4a, 0xa2, \ + 0xa6, 0x6b, 0x3e, 0x50, 0xb1, 0x7a, 0xb1, 0x8d, 0x59, 0xb4, 0x55, 0xba, \ + 0xb6, 0x91, 0x85, 0xa3, 0x2f, 0x02, 0x81, 0x80, 0x10, 0x1e, 0x19, 0xe7, \ + 0xbc, 0x97, 0xe5, 0x22, 0xcd, 0xa4, 0xcb, 0x8a, 0xb5, 0xd0, 0x1e, 0xb4, \ + 0x65, 0xcc, 0x45, 0xa7, 0x7a, 0xed, 0x0e, 0x99, 0x29, 0xd0, 0x9c, 0x61, \ + 0x14, 0xb8, 0x62, 0x8b, 0x31, 0x6b, 0xba, 0x33, 0x2d, 0x65, 0x28, 0xd8, \ + 0x36, 0x6e, 0x54, 0xec, 0xa9, 0x20, 0x3d, 0x51, 0xe1, 0x2c, 0x42, 0xc4, \ + 0x52, 0xf0, 0xa6, 0x3a, 0x72, 0x93, 0xb7, 0x86, 0xa9, 0xfe, 0xf6, 0x74, \ + 0x07, 0x12, 0x4d, 0x7b, 0x51, 0x99, 0x1f, 0x7a, 0x56, 0xe9, 0x20, 0x2f, \ + 0x18, 0x34, 0x29, 0x97, 0xdb, 0x06, 0xee, 0xeb, 0xbf, 0xbd, 0x31, 0x4f, \ + 0xfa, 0x50, 0xb1, 0xba, 0x49, 0xb3, 0xc4, 0x1d, 0x03, 0xae, 0xb0, 0xdc, \ + 0xbe, 0x8a, 0xc4, 0x90, 0xa3, 0x28, 0x9b, 0xb6, 0x42, 0x09, 0x1b, 0xd6, \ + 0x29, 0x9b, 0x19, 0xe9, 0x87, 0x87, 0xd9, 0x9f, 0x35, 0x05, 0xab, 0x91, \ + 0x8f, 0x6d, 0x7c, 0x91, 0x02, 0x81, 0x81, 0x00, 0x94, 0x57, 0xf0, 0xe0, \ + 0x28, 0xfd, 0xbd, 0xf3, 0x9c, 0x43, 0x4d, 0x3e, 0xfd, 0x37, 0x4f, 0x23, \ + 0x52, 0x8d, 0xe1, 0x4c, 0xfe, 0x4c, 0x55, 0x80, 0x82, 0xba, 0x3f, 0xfe, \ + 0x51, 0xe1, 0x30, 0xd5, 0x3b, 0xd9, 0x73, 0x1d, 0xcb, 0x25, 0xbc, 0xbb, \ + 0x3f, 0xa5, 0xda, 0x77, 0xa6, 0xb5, 0xfc, 0x1a, 0xaf, 0x79, 0xa1, 0xb2, \ + 0x14, 0xa2, 0x1f, 0x10, 0x52, 0x1a, 0x05, 0x40, 0x48, 0xb6, 0x4f, 0x34, \ + 0xd6, 0xc0, 0xc3, 0xa4, 0x36, 0x98, 0x73, 0x88, 0x0b, 0xd3, 0x45, 0xdc, \ + 0xee, 0x51, 0x6e, 0x04, 0x73, 0x99, 0x93, 0x12, 0x58, 0x96, 0xcb, 0x39, \ + 0x42, 0xb1, 0xa9, 0xb8, 0xe1, 0x25, 0xf5, 0x9c, 0x14, 0xb7, 0x92, 0x2b, \ + 0x14, 0xb0, 0x5d, 0x61, 0xa2, 0xaa, 0x34, 0x7c, 0xcd, 0x54, 0x2d, 0x69, \ + 0x08, 0xf7, 0xdb, 0xfc, 0x9c, 0x87, 0xe8, 0x3a, 0xf6, 0x1d, 0x4c, 0x6a, \ + 0x83, 0x15, 0x30, 0x01, 0x02, 0x81, 0x81, 0x00, 0x9c, 0x53, 0xa1, 0xb6, \ + 0x2f, 0xc0, 0x06, 0xf5, 0xdf, 0x5c, 0xd1, 0x4a, 0x4e, 0xc8, 0xbd, 0x6d, \ + 0x32, 0xf1, 0x5e, 0xe5, 0x3b, 0x70, 0xd0, 0xa8, 0xe5, 0x41, 0x57, 0x6c, \ + 0x87, 0x53, 0x0f, 0xeb, 0x28, 0xa0, 0x62, 0x8f, 0x43, 0x62, 0xec, 0x2e, \ + 0x6c, 0x71, 0x55, 0x5b, 0x6a, 0xf4, 0x74, 0x14, 0xea, 0x7a, 0x03, 0xf6, \ + 0xfc, 0xa4, 0xce, 0xc4, 0xac, 0xda, 0x1d, 0xf0, 0xb5, 0xa9, 0xfd, 0x11, \ + 0x18, 0x3b, 0x14, 0xa0, 0x90, 0x8d, 0x26, 0xb7, 0x75, 0x73, 0x0a, 0x02, \ + 0x2c, 0x6f, 0x0f, 0xd8, 0x41, 0x78, 0xc3, 0x73, 0x81, 0xac, 0xaa, 0xaf, \ + 0xf2, 0xee, 0x32, 0xb5, 0x8d, 0x05, 0xf9, 0x59, 0x5a, 0x9e, 0x3e, 0x65, \ + 0x9b, 0x74, 0xda, 0xa0, 0x74, 0x95, 0x17, 0x5f, 0x8d, 0x58, 0xfc, 0x8e, \ + 0x4e, 0x2c, 0x1e, 0xbc, 0x81, 0x02, 0x18, 0xac, 0x12, 0xc6, 0xf9, 0x64, \ + 0x8b, 0x87, 0xc3, 0x00 \ +} +/* END FILE */ + +/* + * + * Test certificates and keys as C variables + * + */ + +/* + * CA + */ + +const char mbedtls_test_ca_crt_ec_pem[] = TEST_CA_CRT_EC_PEM; +const char mbedtls_test_ca_key_ec_pem[] = TEST_CA_KEY_EC_PEM; +const char mbedtls_test_ca_pwd_ec_pem[] = TEST_CA_PWD_EC_PEM; +const char mbedtls_test_ca_key_rsa_pem[] = TEST_CA_KEY_RSA_PEM; +const char mbedtls_test_ca_pwd_rsa_pem[] = TEST_CA_PWD_RSA_PEM; +const char mbedtls_test_ca_crt_rsa_sha1_pem[] = TEST_CA_CRT_RSA_SHA1_PEM; +const char mbedtls_test_ca_crt_rsa_sha256_pem[] = TEST_CA_CRT_RSA_SHA256_PEM; + +const unsigned char mbedtls_test_ca_crt_ec_der[] = TEST_CA_CRT_EC_DER; +const unsigned char mbedtls_test_ca_key_ec_der[] = TEST_CA_KEY_EC_DER; +const unsigned char mbedtls_test_ca_key_rsa_der[] = TEST_CA_KEY_RSA_DER; +const unsigned char mbedtls_test_ca_crt_rsa_sha1_der[] = + TEST_CA_CRT_RSA_SHA1_DER; +const unsigned char mbedtls_test_ca_crt_rsa_sha256_der[] = + TEST_CA_CRT_RSA_SHA256_DER; + +const size_t mbedtls_test_ca_crt_ec_pem_len = + sizeof( mbedtls_test_ca_crt_ec_pem ); +const size_t mbedtls_test_ca_key_ec_pem_len = + sizeof( mbedtls_test_ca_key_ec_pem ); +const size_t mbedtls_test_ca_pwd_ec_pem_len = + sizeof( mbedtls_test_ca_pwd_ec_pem ) - 1; +const size_t mbedtls_test_ca_key_rsa_pem_len = + sizeof( mbedtls_test_ca_key_rsa_pem ); +const size_t mbedtls_test_ca_pwd_rsa_pem_len = + sizeof( mbedtls_test_ca_pwd_rsa_pem ) - 1; +const size_t mbedtls_test_ca_crt_rsa_sha1_pem_len = + sizeof( mbedtls_test_ca_crt_rsa_sha1_pem ); +const size_t mbedtls_test_ca_crt_rsa_sha256_pem_len = + sizeof( mbedtls_test_ca_crt_rsa_sha256_pem ); + +const size_t mbedtls_test_ca_crt_ec_der_len = + sizeof( mbedtls_test_ca_crt_ec_der ); +const size_t mbedtls_test_ca_key_ec_der_len = + sizeof( mbedtls_test_ca_key_ec_der ); +const size_t mbedtls_test_ca_pwd_ec_der_len = 0; +const size_t mbedtls_test_ca_key_rsa_der_len = + sizeof( mbedtls_test_ca_key_rsa_der ); +const size_t mbedtls_test_ca_pwd_rsa_der_len = 0; +const size_t mbedtls_test_ca_crt_rsa_sha1_der_len = + sizeof( mbedtls_test_ca_crt_rsa_sha1_der ); +const size_t mbedtls_test_ca_crt_rsa_sha256_der_len = + sizeof( mbedtls_test_ca_crt_rsa_sha256_der ); + +/* + * Server + */ + +const char mbedtls_test_srv_crt_ec_pem[] = TEST_SRV_CRT_EC_PEM; +const char mbedtls_test_srv_key_ec_pem[] = TEST_SRV_KEY_EC_PEM; +const char mbedtls_test_srv_pwd_ec_pem[] = ""; +const char mbedtls_test_srv_key_rsa_pem[] = TEST_SRV_KEY_RSA_PEM; +const char mbedtls_test_srv_pwd_rsa_pem[] = ""; +const char mbedtls_test_srv_crt_rsa_sha1_pem[] = TEST_SRV_CRT_RSA_SHA1_PEM; +const char mbedtls_test_srv_crt_rsa_sha256_pem[] = TEST_SRV_CRT_RSA_SHA256_PEM; + +const unsigned char mbedtls_test_srv_crt_ec_der[] = TEST_SRV_CRT_EC_DER; +const unsigned char mbedtls_test_srv_key_ec_der[] = TEST_SRV_KEY_EC_DER; +const unsigned char mbedtls_test_srv_key_rsa_der[] = TEST_SRV_KEY_RSA_DER; +const unsigned char mbedtls_test_srv_crt_rsa_sha1_der[] = + TEST_SRV_CRT_RSA_SHA1_DER; +const unsigned char mbedtls_test_srv_crt_rsa_sha256_der[] = + TEST_SRV_CRT_RSA_SHA256_DER; + +const size_t mbedtls_test_srv_crt_ec_pem_len = + sizeof( mbedtls_test_srv_crt_ec_pem ); +const size_t mbedtls_test_srv_key_ec_pem_len = + sizeof( mbedtls_test_srv_key_ec_pem ); +const size_t mbedtls_test_srv_pwd_ec_pem_len = + sizeof( mbedtls_test_srv_pwd_ec_pem ) - 1; +const size_t mbedtls_test_srv_key_rsa_pem_len = + sizeof( mbedtls_test_srv_key_rsa_pem ); +const size_t mbedtls_test_srv_pwd_rsa_pem_len = + sizeof( mbedtls_test_srv_pwd_rsa_pem ) - 1; +const size_t mbedtls_test_srv_crt_rsa_sha1_pem_len = + sizeof( mbedtls_test_srv_crt_rsa_sha1_pem ); +const size_t mbedtls_test_srv_crt_rsa_sha256_pem_len = + sizeof( mbedtls_test_srv_crt_rsa_sha256_pem ); + +const size_t mbedtls_test_srv_crt_ec_der_len = + sizeof( mbedtls_test_srv_crt_ec_der ); +const size_t mbedtls_test_srv_key_ec_der_len = + sizeof( mbedtls_test_srv_key_ec_der ); +const size_t mbedtls_test_srv_pwd_ec_der_len = 0; +const size_t mbedtls_test_srv_key_rsa_der_len = + sizeof( mbedtls_test_srv_key_rsa_der ); +const size_t mbedtls_test_srv_pwd_rsa_der_len = 0; +const size_t mbedtls_test_srv_crt_rsa_sha1_der_len = + sizeof( mbedtls_test_srv_crt_rsa_sha1_der ); +const size_t mbedtls_test_srv_crt_rsa_sha256_der_len = + sizeof( mbedtls_test_srv_crt_rsa_sha256_der ); + +/* + * Client + */ + +const char mbedtls_test_cli_crt_ec_pem[] = TEST_CLI_CRT_EC_PEM; +const char mbedtls_test_cli_key_ec_pem[] = TEST_CLI_KEY_EC_PEM; +const char mbedtls_test_cli_pwd_ec_pem[] = ""; +const char mbedtls_test_cli_key_rsa_pem[] = TEST_CLI_KEY_RSA_PEM; +const char mbedtls_test_cli_pwd_rsa_pem[] = ""; +const char mbedtls_test_cli_crt_rsa_pem[] = TEST_CLI_CRT_RSA_PEM; + +const unsigned char mbedtls_test_cli_crt_ec_der[] = TEST_CLI_CRT_EC_DER; +const unsigned char mbedtls_test_cli_key_ec_der[] = TEST_CLI_KEY_EC_DER; +const unsigned char mbedtls_test_cli_key_rsa_der[] = TEST_CLI_KEY_RSA_DER; +const unsigned char mbedtls_test_cli_crt_rsa_der[] = TEST_CLI_CRT_RSA_DER; + +const size_t mbedtls_test_cli_crt_ec_pem_len = + sizeof( mbedtls_test_cli_crt_ec_pem ); +const size_t mbedtls_test_cli_key_ec_pem_len = + sizeof( mbedtls_test_cli_key_ec_pem ); +const size_t mbedtls_test_cli_pwd_ec_pem_len = + sizeof( mbedtls_test_cli_pwd_ec_pem ) - 1; +const size_t mbedtls_test_cli_key_rsa_pem_len = + sizeof( mbedtls_test_cli_key_rsa_pem ); +const size_t mbedtls_test_cli_pwd_rsa_pem_len = + sizeof( mbedtls_test_cli_pwd_rsa_pem ) - 1; +const size_t mbedtls_test_cli_crt_rsa_pem_len = + sizeof( mbedtls_test_cli_crt_rsa_pem ); + +const size_t mbedtls_test_cli_crt_ec_der_len = + sizeof( mbedtls_test_cli_crt_ec_der ); +const size_t mbedtls_test_cli_key_ec_der_len = + sizeof( mbedtls_test_cli_key_ec_der ); +const size_t mbedtls_test_cli_key_rsa_der_len = + sizeof( mbedtls_test_cli_key_rsa_der ); +const size_t mbedtls_test_cli_crt_rsa_der_len = + sizeof( mbedtls_test_cli_crt_rsa_der ); + +/* + * + * Definitions of test CRTs without specification of all parameters, choosing + * them automatically according to the config. For example, mbedtls_test_ca_crt + * is one of mbedtls_test_ca_crt_{rsa|ec}_{sha1|sha256}_{pem|der}. + * + */ + +/* + * Dispatch between PEM and DER according to config + */ #if defined(MBEDTLS_PEM_PARSE_C) -/* Concatenation of all available CA certificates */ -const char mbedtls_test_cas_pem[] = -#ifdef TEST_CA_CRT_RSA_SHA1 - TEST_CA_CRT_RSA_SHA1 -#endif -#ifdef TEST_CA_CRT_RSA_SHA256 - TEST_CA_CRT_RSA_SHA256 -#endif -#ifdef TEST_CA_CRT_EC - TEST_CA_CRT_EC -#endif - ""; -const size_t mbedtls_test_cas_pem_len = sizeof( mbedtls_test_cas_pem ); -#endif -/* List of all available CA certificates */ +/* PEM encoded test CA certificates and keys */ + +#define TEST_CA_KEY_RSA TEST_CA_KEY_RSA_PEM +#define TEST_CA_PWD_RSA TEST_CA_PWD_RSA_PEM +#define TEST_CA_CRT_RSA_SHA256 TEST_CA_CRT_RSA_SHA256_PEM +#define TEST_CA_CRT_RSA_SHA1 TEST_CA_CRT_RSA_SHA1_PEM +#define TEST_CA_KEY_EC TEST_CA_KEY_EC_PEM +#define TEST_CA_PWD_EC TEST_CA_PWD_EC_PEM +#define TEST_CA_CRT_EC TEST_CA_CRT_EC_PEM + +/* PEM encoded test server certificates and keys */ + +#define TEST_SRV_KEY_RSA TEST_SRV_KEY_RSA_PEM +#define TEST_SRV_PWD_RSA "" +#define TEST_SRV_CRT_RSA_SHA256 TEST_SRV_CRT_RSA_SHA256_PEM +#define TEST_SRV_CRT_RSA_SHA1 TEST_SRV_CRT_RSA_SHA1_PEM +#define TEST_SRV_KEY_EC TEST_SRV_KEY_EC_PEM +#define TEST_SRV_PWD_EC "" +#define TEST_SRV_CRT_EC TEST_SRV_CRT_EC_PEM + +/* PEM encoded test client certificates and keys */ + +#define TEST_CLI_KEY_RSA TEST_CLI_KEY_RSA_PEM +#define TEST_CLI_PWD_RSA "" +#define TEST_CLI_CRT_RSA TEST_CLI_CRT_RSA_PEM +#define TEST_CLI_KEY_EC TEST_CLI_KEY_EC_PEM +#define TEST_CLI_PWD_EC "" +#define TEST_CLI_CRT_EC TEST_CLI_CRT_EC_PEM + +#else /* MBEDTLS_PEM_PARSE_C */ + +/* DER encoded test CA certificates and keys */ + +#define TEST_CA_KEY_RSA TEST_CA_KEY_RSA_DER +#define TEST_CA_PWD_RSA "" +#define TEST_CA_CRT_RSA_SHA256 TEST_CA_CRT_RSA_SHA256_DER +#define TEST_CA_CRT_RSA_SHA1 TEST_CA_CRT_RSA_SHA1_DER +#define TEST_CA_KEY_EC TEST_CA_KEY_EC_DER +#define TEST_CA_PWD_EC "" +#define TEST_CA_CRT_EC TEST_CA_CRT_EC_DER + +/* DER encoded test server certificates and keys */ + +#define TEST_SRV_KEY_RSA TEST_SRV_KEY_RSA_DER +#define TEST_SRV_PWD_RSA "" +#define TEST_SRV_CRT_RSA_SHA256 TEST_SRV_CRT_RSA_SHA256_DER +#define TEST_SRV_CRT_RSA_SHA1 TEST_SRV_CRT_RSA_SHA1_DER +#define TEST_SRV_KEY_EC TEST_SRV_KEY_EC_DER +#define TEST_SRV_PWD_EC "" +#define TEST_SRV_CRT_EC TEST_SRV_CRT_EC_DER + +/* DER encoded test client certificates and keys */ + +#define TEST_CLI_KEY_RSA TEST_CLI_KEY_RSA_DER +#define TEST_CLI_PWD_RSA "" +#define TEST_CLI_CRT_RSA TEST_CLI_CRT_RSA_DER +#define TEST_CLI_KEY_EC TEST_CLI_KEY_EC_DER +#define TEST_CLI_PWD_EC "" +#define TEST_CLI_CRT_EC TEST_CLI_CRT_EC_DER + +#endif /* MBEDTLS_PEM_PARSE_C */ + +const char mbedtls_test_ca_key_rsa[] = TEST_CA_KEY_RSA; +const char mbedtls_test_ca_pwd_rsa[] = TEST_CA_PWD_RSA; +const char mbedtls_test_ca_crt_rsa_sha256[] = TEST_CA_CRT_RSA_SHA256; +const char mbedtls_test_ca_crt_rsa_sha1[] = TEST_CA_CRT_RSA_SHA1; +const char mbedtls_test_ca_key_ec[] = TEST_CA_KEY_EC; +const char mbedtls_test_ca_pwd_ec[] = TEST_CA_PWD_EC; +const char mbedtls_test_ca_crt_ec[] = TEST_CA_CRT_EC; + +const char mbedtls_test_srv_key_rsa[] = TEST_SRV_KEY_RSA; +const char mbedtls_test_srv_pwd_rsa[] = TEST_SRV_PWD_RSA; +const char mbedtls_test_srv_crt_rsa_sha256[] = TEST_SRV_CRT_RSA_SHA256; +const char mbedtls_test_srv_crt_rsa_sha1[] = TEST_SRV_CRT_RSA_SHA1; +const char mbedtls_test_srv_key_ec[] = TEST_SRV_KEY_EC; +const char mbedtls_test_srv_pwd_ec[] = TEST_SRV_PWD_EC; +const char mbedtls_test_srv_crt_ec[] = TEST_SRV_CRT_EC; + +const char mbedtls_test_cli_key_rsa[] = TEST_CLI_KEY_RSA; +const char mbedtls_test_cli_pwd_rsa[] = TEST_CLI_PWD_RSA; +const char mbedtls_test_cli_crt_rsa[] = TEST_CLI_CRT_RSA; +const char mbedtls_test_cli_key_ec[] = TEST_CLI_KEY_EC; +const char mbedtls_test_cli_pwd_ec[] = TEST_CLI_PWD_EC; +const char mbedtls_test_cli_crt_ec[] = TEST_CLI_CRT_EC; + +const size_t mbedtls_test_ca_key_rsa_len = + sizeof( mbedtls_test_ca_key_rsa ); +const size_t mbedtls_test_ca_pwd_rsa_len = + sizeof( mbedtls_test_ca_pwd_rsa ) - 1; +const size_t mbedtls_test_ca_crt_rsa_sha256_len = + sizeof( mbedtls_test_ca_crt_rsa_sha256 ); +const size_t mbedtls_test_ca_crt_rsa_sha1_len = + sizeof( mbedtls_test_ca_crt_rsa_sha1 ); +const size_t mbedtls_test_ca_key_ec_len = + sizeof( mbedtls_test_ca_key_ec ); +const size_t mbedtls_test_ca_pwd_ec_len = + sizeof( mbedtls_test_ca_pwd_ec ) - 1; +const size_t mbedtls_test_ca_crt_ec_len = + sizeof( mbedtls_test_ca_crt_ec ); + +const size_t mbedtls_test_srv_key_rsa_len = + sizeof( mbedtls_test_srv_key_rsa ); +const size_t mbedtls_test_srv_pwd_rsa_len = + sizeof( mbedtls_test_srv_pwd_rsa ) -1; +const size_t mbedtls_test_srv_crt_rsa_sha256_len = + sizeof( mbedtls_test_srv_crt_rsa_sha256 ); +const size_t mbedtls_test_srv_crt_rsa_sha1_len = + sizeof( mbedtls_test_srv_crt_rsa_sha1 ); +const size_t mbedtls_test_srv_key_ec_len = + sizeof( mbedtls_test_srv_key_ec ); +const size_t mbedtls_test_srv_pwd_ec_len = + sizeof( mbedtls_test_srv_pwd_ec ) - 1; +const size_t mbedtls_test_srv_crt_ec_len = + sizeof( mbedtls_test_srv_crt_ec ); + +const size_t mbedtls_test_cli_key_rsa_len = + sizeof( mbedtls_test_cli_key_rsa ); +const size_t mbedtls_test_cli_pwd_rsa_len = + sizeof( mbedtls_test_cli_pwd_rsa ) - 1; +const size_t mbedtls_test_cli_crt_rsa_len = + sizeof( mbedtls_test_cli_crt_rsa ); +const size_t mbedtls_test_cli_key_ec_len = + sizeof( mbedtls_test_cli_key_ec ); +const size_t mbedtls_test_cli_pwd_ec_len = + sizeof( mbedtls_test_cli_pwd_ec ) - 1; +const size_t mbedtls_test_cli_crt_ec_len = + sizeof( mbedtls_test_cli_crt_ec ); + +/* + * Dispatch between SHA-1 and SHA-256 + */ + +#if defined(MBEDTLS_SHA256_C) +#define TEST_CA_CRT_RSA TEST_CA_CRT_RSA_SHA256 +#define TEST_SRV_CRT_RSA TEST_SRV_CRT_RSA_SHA256 +#else +#define TEST_CA_CRT_RSA TEST_CA_CRT_RSA_SHA1 +#define TEST_SRV_CRT_RSA TEST_SRV_CRT_RSA_SHA1 +#endif /* MBEDTLS_SHA256_C */ + +const char mbedtls_test_ca_crt_rsa[] = TEST_CA_CRT_RSA; +const char mbedtls_test_srv_crt_rsa[] = TEST_SRV_CRT_RSA; + +const size_t mbedtls_test_ca_crt_rsa_len = + sizeof( mbedtls_test_ca_crt_rsa ); +const size_t mbedtls_test_srv_crt_rsa_len = + sizeof( mbedtls_test_srv_crt_rsa ); + +/* + * Dispatch between RSA and EC + */ + +#if defined(MBEDTLS_RSA_C) + +#define TEST_CA_KEY TEST_CA_KEY_RSA +#define TEST_CA_PWD TEST_CA_PWD_RSA +#define TEST_CA_CRT TEST_CA_CRT_RSA + +#define TEST_SRV_KEY TEST_SRV_KEY_RSA +#define TEST_SRV_PWD TEST_SRV_PWD_RSA +#define TEST_SRV_CRT TEST_SRV_CRT_RSA + +#define TEST_CLI_KEY TEST_CLI_KEY_RSA +#define TEST_CLI_PWD TEST_CLI_PWD_RSA +#define TEST_CLI_CRT TEST_CLI_CRT_RSA + +#else /* no RSA, so assume ECDSA */ + +#define TEST_CA_KEY TEST_CA_KEY_EC +#define TEST_CA_PWD TEST_CA_PWD_EC +#define TEST_CA_CRT TEST_CA_CRT_EC + +#define TEST_SRV_KEY TEST_SRV_KEY_EC +#define TEST_SRV_PWD TEST_SRV_PWD_EC +#define TEST_SRV_CRT TEST_SRV_CRT_EC + +#define TEST_CLI_KEY TEST_CLI_KEY_EC +#define TEST_CLI_PWD TEST_CLI_PWD_EC +#define TEST_CLI_CRT TEST_CLI_CRT_EC +#endif /* MBEDTLS_RSA_C */ + +/* API stability forces us to declare + * mbedtls_test_{ca|srv|cli}_{key|pwd|crt} + * as pointers. */ +static const char test_ca_key[] = TEST_CA_KEY; +static const char test_ca_pwd[] = TEST_CA_PWD; +static const char test_ca_crt[] = TEST_CA_CRT; + +static const char test_srv_key[] = TEST_SRV_KEY; +static const char test_srv_pwd[] = TEST_SRV_PWD; +static const char test_srv_crt[] = TEST_SRV_CRT; + +static const char test_cli_key[] = TEST_CLI_KEY; +static const char test_cli_pwd[] = TEST_CLI_PWD; +static const char test_cli_crt[] = TEST_CLI_CRT; + +const char *mbedtls_test_ca_key = test_ca_key; +const char *mbedtls_test_ca_pwd = test_ca_pwd; +const char *mbedtls_test_ca_crt = test_ca_crt; + +const char *mbedtls_test_srv_key = test_srv_key; +const char *mbedtls_test_srv_pwd = test_srv_pwd; +const char *mbedtls_test_srv_crt = test_srv_crt; + +const char *mbedtls_test_cli_key = test_cli_key; +const char *mbedtls_test_cli_pwd = test_cli_pwd; +const char *mbedtls_test_cli_crt = test_cli_crt; + +const size_t mbedtls_test_ca_key_len = + sizeof( test_ca_key ); +const size_t mbedtls_test_ca_pwd_len = + sizeof( test_ca_pwd ) - 1; +const size_t mbedtls_test_ca_crt_len = + sizeof( test_ca_crt ); + +const size_t mbedtls_test_srv_key_len = + sizeof( test_srv_key ); +const size_t mbedtls_test_srv_pwd_len = + sizeof( test_srv_pwd ) - 1; +const size_t mbedtls_test_srv_crt_len = + sizeof( test_srv_crt ); + +const size_t mbedtls_test_cli_key_len = + sizeof( test_cli_key ); +const size_t mbedtls_test_cli_pwd_len = + sizeof( test_cli_pwd ) - 1; +const size_t mbedtls_test_cli_crt_len = + sizeof( test_cli_crt ); + +/* + * + * Lists of certificates + * + */ + +/* List of CAs in PEM or DER, depending on config */ const char * mbedtls_test_cas[] = { -#if defined(TEST_CA_CRT_RSA_SHA1) +#if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_SHA1_C) mbedtls_test_ca_crt_rsa_sha1, #endif -#if defined(TEST_CA_CRT_RSA_SHA256) +#if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_SHA256_C) mbedtls_test_ca_crt_rsa_sha256, #endif #if defined(MBEDTLS_ECDSA_C) @@ -359,10 +1682,10 @@ const char * mbedtls_test_cas[] = { NULL }; const size_t mbedtls_test_cas_len[] = { -#if defined(TEST_CA_CRT_RSA_SHA1) +#if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_SHA1_C) sizeof( mbedtls_test_ca_crt_rsa_sha1 ), #endif -#if defined(TEST_CA_CRT_RSA_SHA256) +#if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_SHA256_C) sizeof( mbedtls_test_ca_crt_rsa_sha256 ), #endif #if defined(MBEDTLS_ECDSA_C) @@ -371,36 +1694,53 @@ const size_t mbedtls_test_cas_len[] = { 0 }; +/* List of all available CA certificates in DER format */ +const unsigned char * mbedtls_test_cas_der[] = { +#if defined(MBEDTLS_RSA_C) +#if defined(MBEDTLS_SHA256_C) + mbedtls_test_ca_crt_rsa_sha256_der, +#endif /* MBEDTLS_SHA256_C */ +#if defined(MBEDTLS_SHA1_C) + mbedtls_test_ca_crt_rsa_sha1_der, +#endif /* MBEDTLS_SHA1_C */ +#endif /* MBEDTLS_RSA_C */ +#if defined(MBEDTLS_ECDSA_C) + mbedtls_test_ca_crt_ec_der, +#endif /* MBEDTLS_ECDSA_C */ + NULL +}; + +const size_t mbedtls_test_cas_der_len[] = { +#if defined(MBEDTLS_RSA_C) +#if defined(MBEDTLS_SHA256_C) + sizeof( mbedtls_test_ca_crt_rsa_sha256_der ), +#endif /* MBEDTLS_SHA256_C */ +#if defined(MBEDTLS_SHA1_C) + sizeof( mbedtls_test_ca_crt_rsa_sha1_der ), +#endif /* MBEDTLS_SHA1_C */ +#endif /* MBEDTLS_RSA_C */ +#if defined(MBEDTLS_ECDSA_C) + sizeof( mbedtls_test_ca_crt_ec_der ), +#endif /* MBEDTLS_ECDSA_C */ + 0 +}; + +/* Concatenation of all available CA certificates in PEM format */ +#if defined(MBEDTLS_PEM_PARSE_C) +const char mbedtls_test_cas_pem[] = #if defined(MBEDTLS_RSA_C) -const char *mbedtls_test_ca_crt = mbedtls_test_ca_crt_rsa; /* SHA1 or SHA256 */ -const char *mbedtls_test_ca_key = mbedtls_test_ca_key_rsa; -const char *mbedtls_test_ca_pwd = mbedtls_test_ca_pwd_rsa; -const char *mbedtls_test_srv_crt = mbedtls_test_srv_crt_rsa; -const char *mbedtls_test_srv_key = mbedtls_test_srv_key_rsa; -const char *mbedtls_test_cli_crt = mbedtls_test_cli_crt_rsa; -const char *mbedtls_test_cli_key = mbedtls_test_cli_key_rsa; -const size_t mbedtls_test_ca_crt_len = sizeof( mbedtls_test_ca_crt_rsa ); -const size_t mbedtls_test_ca_key_len = sizeof( mbedtls_test_ca_key_rsa ); -const size_t mbedtls_test_ca_pwd_len = sizeof( mbedtls_test_ca_pwd_rsa ) - 1; -const size_t mbedtls_test_srv_crt_len = sizeof( mbedtls_test_srv_crt_rsa ); -const size_t mbedtls_test_srv_key_len = sizeof( mbedtls_test_srv_key_rsa ); -const size_t mbedtls_test_cli_crt_len = sizeof( mbedtls_test_cli_crt_rsa ); -const size_t mbedtls_test_cli_key_len = sizeof( mbedtls_test_cli_key_rsa ); -#else /* ! MBEDTLS_RSA_C, so MBEDTLS_ECDSA_C */ -const char *mbedtls_test_ca_crt = mbedtls_test_ca_crt_ec; -const char *mbedtls_test_ca_key = mbedtls_test_ca_key_ec; -const char *mbedtls_test_ca_pwd = mbedtls_test_ca_pwd_ec; -const char *mbedtls_test_srv_crt = mbedtls_test_srv_crt_ec; -const char *mbedtls_test_srv_key = mbedtls_test_srv_key_ec; -const char *mbedtls_test_cli_crt = mbedtls_test_cli_crt_ec; -const char *mbedtls_test_cli_key = mbedtls_test_cli_key_ec; -const size_t mbedtls_test_ca_crt_len = sizeof( mbedtls_test_ca_crt_ec ); -const size_t mbedtls_test_ca_key_len = sizeof( mbedtls_test_ca_key_ec ); -const size_t mbedtls_test_ca_pwd_len = sizeof( mbedtls_test_ca_pwd_ec ) - 1; -const size_t mbedtls_test_srv_crt_len = sizeof( mbedtls_test_srv_crt_ec ); -const size_t mbedtls_test_srv_key_len = sizeof( mbedtls_test_srv_key_ec ); -const size_t mbedtls_test_cli_crt_len = sizeof( mbedtls_test_cli_crt_ec ); -const size_t mbedtls_test_cli_key_len = sizeof( mbedtls_test_cli_key_ec ); +#if defined(MBEDTLS_SHA256_C) + TEST_CA_CRT_RSA_SHA256_PEM +#endif /* MBEDTLS_SHA256_C */ +#if defined(MBEDTLS_SHA1_C) + TEST_CA_CRT_RSA_SHA1_PEM +#endif /* MBEDTLS_SHA1_C */ #endif /* MBEDTLS_RSA_C */ +#if defined(MBEDTLS_ECDSA_C) + TEST_CA_CRT_EC_PEM +#endif /* MBEDTLS_ECDSA_C */ + ""; +const size_t mbedtls_test_cas_pem_len = sizeof( mbedtls_test_cas_pem ); +#endif /* MBEDTLS_PEM_PARSE_C */ #endif /* MBEDTLS_CERTS_C */ diff --git a/Externals/mbedtls/library/chacha20.c b/Externals/mbedtls/library/chacha20.c index 0757163e2f77..658f04690170 100644 --- a/Externals/mbedtls/library/chacha20.c +++ b/Externals/mbedtls/library/chacha20.c @@ -5,7 +5,7 @@ * * \author Daniel King * - * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -19,20 +19,15 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_CHACHA20_C) #include "mbedtls/chacha20.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include #include @@ -59,15 +54,8 @@ #define CHACHA20_VALIDATE( cond ) \ MBEDTLS_INTERNAL_VALIDATE( cond ) -#define BYTES_TO_U32_LE( data, offset ) \ - ( (uint32_t) data[offset] \ - | (uint32_t) ( (uint32_t) data[( offset ) + 1] << 8 ) \ - | (uint32_t) ( (uint32_t) data[( offset ) + 2] << 16 ) \ - | (uint32_t) ( (uint32_t) data[( offset ) + 3] << 24 ) \ - ) - #define ROTL32( value, amount ) \ - ( (uint32_t) ( value << amount ) | ( value >> ( 32 - amount ) ) ) + ( (uint32_t) ( (value) << (amount) ) | ( (value) >> ( 32 - (amount) ) ) ) #define CHACHA20_CTR_INDEX ( 12U ) @@ -176,10 +164,7 @@ static void chacha20_block( const uint32_t initial_state[16], { size_t offset = i * 4U; - keystream[offset ] = (unsigned char)( working_state[i] ); - keystream[offset + 1U] = (unsigned char)( working_state[i] >> 8 ); - keystream[offset + 2U] = (unsigned char)( working_state[i] >> 16 ); - keystream[offset + 3U] = (unsigned char)( working_state[i] >> 24 ); + MBEDTLS_PUT_UINT32_LE(working_state[i], keystream, offset); } mbedtls_platform_zeroize( working_state, sizeof( working_state ) ); @@ -217,14 +202,14 @@ int mbedtls_chacha20_setkey( mbedtls_chacha20_context *ctx, ctx->state[3] = 0x6b206574; /* Set key */ - ctx->state[4] = BYTES_TO_U32_LE( key, 0 ); - ctx->state[5] = BYTES_TO_U32_LE( key, 4 ); - ctx->state[6] = BYTES_TO_U32_LE( key, 8 ); - ctx->state[7] = BYTES_TO_U32_LE( key, 12 ); - ctx->state[8] = BYTES_TO_U32_LE( key, 16 ); - ctx->state[9] = BYTES_TO_U32_LE( key, 20 ); - ctx->state[10] = BYTES_TO_U32_LE( key, 24 ); - ctx->state[11] = BYTES_TO_U32_LE( key, 28 ); + ctx->state[4] = MBEDTLS_GET_UINT32_LE( key, 0 ); + ctx->state[5] = MBEDTLS_GET_UINT32_LE( key, 4 ); + ctx->state[6] = MBEDTLS_GET_UINT32_LE( key, 8 ); + ctx->state[7] = MBEDTLS_GET_UINT32_LE( key, 12 ); + ctx->state[8] = MBEDTLS_GET_UINT32_LE( key, 16 ); + ctx->state[9] = MBEDTLS_GET_UINT32_LE( key, 20 ); + ctx->state[10] = MBEDTLS_GET_UINT32_LE( key, 24 ); + ctx->state[11] = MBEDTLS_GET_UINT32_LE( key, 28 ); return( 0 ); } @@ -240,9 +225,9 @@ int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, ctx->state[12] = counter; /* Nonce */ - ctx->state[13] = BYTES_TO_U32_LE( nonce, 0 ); - ctx->state[14] = BYTES_TO_U32_LE( nonce, 4 ); - ctx->state[15] = BYTES_TO_U32_LE( nonce, 8 ); + ctx->state[13] = MBEDTLS_GET_UINT32_LE( nonce, 0 ); + ctx->state[14] = MBEDTLS_GET_UINT32_LE( nonce, 4 ); + ctx->state[15] = MBEDTLS_GET_UINT32_LE( nonce, 8 ); mbedtls_platform_zeroize( ctx->keystream8, sizeof( ctx->keystream8 ) ); @@ -325,7 +310,7 @@ int mbedtls_chacha20_crypt( const unsigned char key[32], unsigned char* output ) { mbedtls_chacha20_context ctx; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; CHACHA20_VALIDATE_RET( key != NULL ); CHACHA20_VALIDATE_RET( nonce != NULL ); @@ -519,6 +504,9 @@ static const size_t test_lengths[2] = 375U }; +/* Make sure no other definition is already present. */ +#undef ASSERT + #define ASSERT( cond, args ) \ do \ { \ @@ -536,7 +524,7 @@ int mbedtls_chacha20_self_test( int verbose ) { unsigned char output[381]; unsigned i; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; for( i = 0U; i < 2U; i++ ) { diff --git a/Externals/mbedtls/library/chachapoly.c b/Externals/mbedtls/library/chachapoly.c index dc643dd61890..dc75b2030a48 100644 --- a/Externals/mbedtls/library/chachapoly.c +++ b/Externals/mbedtls/library/chachapoly.c @@ -3,7 +3,7 @@ * * \brief ChaCha20-Poly1305 AEAD construction based on RFC 7539. * - * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -17,19 +17,14 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_CHACHAPOLY_C) #include "mbedtls/chachapoly.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -122,7 +117,7 @@ void mbedtls_chachapoly_free( mbedtls_chachapoly_context *ctx ) int mbedtls_chachapoly_setkey( mbedtls_chachapoly_context *ctx, const unsigned char key[32] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; CHACHAPOLY_VALIDATE_RET( ctx != NULL ); CHACHAPOLY_VALIDATE_RET( key != NULL ); @@ -135,7 +130,7 @@ int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx, const unsigned char nonce[12], mbedtls_chachapoly_mode_t mode ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char poly1305_key[64]; CHACHAPOLY_VALIDATE_RET( ctx != NULL ); CHACHAPOLY_VALIDATE_RET( nonce != NULL ); @@ -191,7 +186,7 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, const unsigned char *input, unsigned char *output ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; CHACHAPOLY_VALIDATE_RET( ctx != NULL ); CHACHAPOLY_VALIDATE_RET( len == 0 || input != NULL ); CHACHAPOLY_VALIDATE_RET( len == 0 || output != NULL ); @@ -240,7 +235,7 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, unsigned char mac[16] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char len_block[16]; CHACHAPOLY_VALIDATE_RET( ctx != NULL ); CHACHAPOLY_VALIDATE_RET( mac != NULL ); @@ -268,22 +263,8 @@ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, /* The lengths of the AAD and ciphertext are processed by * Poly1305 as the final 128-bit block, encoded as little-endian integers. */ - len_block[ 0] = (unsigned char)( ctx->aad_len ); - len_block[ 1] = (unsigned char)( ctx->aad_len >> 8 ); - len_block[ 2] = (unsigned char)( ctx->aad_len >> 16 ); - len_block[ 3] = (unsigned char)( ctx->aad_len >> 24 ); - len_block[ 4] = (unsigned char)( ctx->aad_len >> 32 ); - len_block[ 5] = (unsigned char)( ctx->aad_len >> 40 ); - len_block[ 6] = (unsigned char)( ctx->aad_len >> 48 ); - len_block[ 7] = (unsigned char)( ctx->aad_len >> 56 ); - len_block[ 8] = (unsigned char)( ctx->ciphertext_len ); - len_block[ 9] = (unsigned char)( ctx->ciphertext_len >> 8 ); - len_block[10] = (unsigned char)( ctx->ciphertext_len >> 16 ); - len_block[11] = (unsigned char)( ctx->ciphertext_len >> 24 ); - len_block[12] = (unsigned char)( ctx->ciphertext_len >> 32 ); - len_block[13] = (unsigned char)( ctx->ciphertext_len >> 40 ); - len_block[14] = (unsigned char)( ctx->ciphertext_len >> 48 ); - len_block[15] = (unsigned char)( ctx->ciphertext_len >> 56 ); + MBEDTLS_PUT_UINT64_LE(ctx->aad_len, len_block, 0); + MBEDTLS_PUT_UINT64_LE(ctx->ciphertext_len, len_block, 8); ret = mbedtls_poly1305_update( &ctx->poly1305_ctx, len_block, 16U ); if( ret != 0 ) @@ -304,7 +285,7 @@ static int chachapoly_crypt_and_tag( mbedtls_chachapoly_context *ctx, unsigned char *output, unsigned char tag[16] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ret = mbedtls_chachapoly_starts( ctx, nonce, mode ); if( ret != 0 ) @@ -354,7 +335,7 @@ int mbedtls_chachapoly_auth_decrypt( mbedtls_chachapoly_context *ctx, const unsigned char *input, unsigned char *output ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char check_tag[16]; size_t i; int diff; @@ -475,6 +456,9 @@ static const unsigned char test_mac[1][16] = } }; +/* Make sure no other definition is already present. */ +#undef ASSERT + #define ASSERT( cond, args ) \ do \ { \ @@ -492,7 +476,7 @@ int mbedtls_chachapoly_self_test( int verbose ) { mbedtls_chachapoly_context ctx; unsigned i; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char output[200]; unsigned char mac[16]; diff --git a/Externals/mbedtls/library/check_crypto_config.h b/Externals/mbedtls/library/check_crypto_config.h new file mode 100644 index 000000000000..d7ad16a6170f --- /dev/null +++ b/Externals/mbedtls/library/check_crypto_config.h @@ -0,0 +1,91 @@ +/** + * \file check_crypto_config.h + * + * \brief Consistency checks for PSA configuration options + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * It is recommended to include this file from your crypto_config.h + * in order to catch dependency issues early. + */ + +#ifndef MBEDTLS_CHECK_CRYPTO_CONFIG_H +#define MBEDTLS_CHECK_CRYPTO_CONFIG_H + +#if defined(PSA_WANT_ALG_CCM) && \ + !( defined(PSA_WANT_KEY_TYPE_AES) || \ + defined(PSA_WANT_KEY_TYPE_CAMELLIA) ) +#error "PSA_WANT_ALG_CCM defined, but not all prerequisites" +#endif + +#if defined(PSA_WANT_ALG_CMAC) && \ + !( defined(PSA_WANT_KEY_TYPE_AES) || \ + defined(PSA_WANT_KEY_TYPE_CAMELLIA) || \ + defined(PSA_WANT_KEY_TYPE_DES) ) +#error "PSA_WANT_ALG_CMAC defined, but not all prerequisites" +#endif + +#if defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA) && \ + !( defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR) || \ + defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) ) +#error "PSA_WANT_ALG_DETERMINISTIC_ECDSA defined, but not all prerequisites" +#endif + +#if defined(PSA_WANT_ALG_ECDSA) && \ + !( defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR) || \ + defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) ) +#error "PSA_WANT_ALG_ECDSA defined, but not all prerequisites" +#endif + +#if defined(PSA_WANT_ALG_GCM) && \ + !( defined(PSA_WANT_KEY_TYPE_AES) || \ + defined(PSA_WANT_KEY_TYPE_CAMELLIA) ) +#error "PSA_WANT_ALG_GCM defined, but not all prerequisites" +#endif + +#if defined(PSA_WANT_ALG_RSA_PKCS1V15_CRYPT) && \ + !( defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR) || \ + defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) ) +#error "PSA_WANT_ALG_RSA_PKCS1V15_CRYPT defined, but not all prerequisites" +#endif + +#if defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN) && \ + !( defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR) || \ + defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) ) +#error "PSA_WANT_ALG_RSA_PKCS1V15_SIGN defined, but not all prerequisites" +#endif + +#if defined(PSA_WANT_ALG_RSA_OAEP) && \ + !( defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR) || \ + defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) ) +#error "PSA_WANT_ALG_RSA_OAEP defined, but not all prerequisites" +#endif + +#if defined(PSA_WANT_ALG_RSA_PSS) && \ + !( defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR) || \ + defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) ) +#error "PSA_WANT_ALG_RSA_PSS defined, but not all prerequisites" +#endif + +#if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR) && \ + !defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) +#error "PSA_WANT_KEY_TYPE_ECC_KEY_PAIR defined, but not all prerequisites" +#endif + +#endif /* MBEDTLS_CHECK_CRYPTO_CONFIG_H */ diff --git a/Externals/mbedtls/library/cipher.c b/Externals/mbedtls/library/cipher.c index 273997577b68..4ec40d2cacd8 100644 --- a/Externals/mbedtls/library/cipher.c +++ b/Externals/mbedtls/library/cipher.c @@ -5,7 +5,7 @@ * * \author Adriaan de Jong * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -19,21 +19,17 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_CIPHER_C) #include "mbedtls/cipher.h" #include "mbedtls/cipher_internal.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" +#include "mbedtls/constant_time.h" #include #include @@ -58,6 +54,15 @@ #include "mbedtls/cmac.h" #endif +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "psa/crypto.h" +#include "mbedtls/psa_util.h" +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + +#if defined(MBEDTLS_NIST_KW_C) +#include "mbedtls/nist_kw.h" +#endif + #if defined(MBEDTLS_PLATFORM_C) #include "mbedtls/platform.h" #else @@ -70,26 +75,6 @@ #define CIPHER_VALIDATE( cond ) \ MBEDTLS_INTERNAL_VALIDATE( cond ) -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) -/* Compare the contents of two buffers in constant time. - * Returns 0 if the contents are bitwise identical, otherwise returns - * a non-zero value. - * This is currently only used by GCM and ChaCha20+Poly1305. - */ -static int mbedtls_constant_time_memcmp( const void *v1, const void *v2, size_t len ) -{ - const unsigned char *p1 = (const unsigned char*) v1; - const unsigned char *p2 = (const unsigned char*) v2; - size_t i; - unsigned char diff; - - for( diff = 0, i = 0; i < len; i++ ) - diff |= p1[i] ^ p2[i]; - - return( (int)diff ); -} -#endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */ - static int supported_init = 0; const int *mbedtls_cipher_list( void ) @@ -113,7 +98,8 @@ const int *mbedtls_cipher_list( void ) return( mbedtls_cipher_supported ); } -const mbedtls_cipher_info_t *mbedtls_cipher_info_from_type( const mbedtls_cipher_type_t cipher_type ) +const mbedtls_cipher_info_t *mbedtls_cipher_info_from_type( + const mbedtls_cipher_type_t cipher_type ) { const mbedtls_cipher_definition_t *def; @@ -124,7 +110,8 @@ const mbedtls_cipher_info_t *mbedtls_cipher_info_from_type( const mbedtls_cipher return( NULL ); } -const mbedtls_cipher_info_t *mbedtls_cipher_info_from_string( const char *cipher_name ) +const mbedtls_cipher_info_t *mbedtls_cipher_info_from_string( + const char *cipher_name ) { const mbedtls_cipher_definition_t *def; @@ -138,9 +125,10 @@ const mbedtls_cipher_info_t *mbedtls_cipher_info_from_string( const char *cipher return( NULL ); } -const mbedtls_cipher_info_t *mbedtls_cipher_info_from_values( const mbedtls_cipher_id_t cipher_id, - int key_bitlen, - const mbedtls_cipher_mode_t mode ) +const mbedtls_cipher_info_t *mbedtls_cipher_info_from_values( + const mbedtls_cipher_id_t cipher_id, + int key_bitlen, + const mbedtls_cipher_mode_t mode ) { const mbedtls_cipher_definition_t *def; @@ -164,6 +152,29 @@ void mbedtls_cipher_free( mbedtls_cipher_context_t *ctx ) if( ctx == NULL ) return; +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ctx->psa_enabled == 1 ) + { + if( ctx->cipher_ctx != NULL ) + { + mbedtls_cipher_context_psa * const cipher_psa = + (mbedtls_cipher_context_psa *) ctx->cipher_ctx; + + if( cipher_psa->slot_state == MBEDTLS_CIPHER_PSA_KEY_OWNED ) + { + /* xxx_free() doesn't allow to return failures. */ + (void) psa_destroy_key( cipher_psa->slot ); + } + + mbedtls_platform_zeroize( cipher_psa, sizeof( *cipher_psa ) ); + mbedtls_free( cipher_psa ); + } + + mbedtls_platform_zeroize( ctx, sizeof(mbedtls_cipher_context_t) ); + return; + } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + #if defined(MBEDTLS_CMAC_C) if( ctx->cmac_ctx ) { @@ -179,7 +190,8 @@ void mbedtls_cipher_free( mbedtls_cipher_context_t *ctx ) mbedtls_platform_zeroize( ctx, sizeof(mbedtls_cipher_context_t) ); } -int mbedtls_cipher_setup( mbedtls_cipher_context_t *ctx, const mbedtls_cipher_info_t *cipher_info ) +int mbedtls_cipher_setup( mbedtls_cipher_context_t *ctx, + const mbedtls_cipher_info_t *cipher_info ) { CIPHER_VALIDATE_RET( ctx != NULL ); if( cipher_info == NULL ) @@ -206,6 +218,38 @@ int mbedtls_cipher_setup( mbedtls_cipher_context_t *ctx, const mbedtls_cipher_in return( 0 ); } +#if defined(MBEDTLS_USE_PSA_CRYPTO) +int mbedtls_cipher_setup_psa( mbedtls_cipher_context_t *ctx, + const mbedtls_cipher_info_t *cipher_info, + size_t taglen ) +{ + psa_algorithm_t alg; + mbedtls_cipher_context_psa *cipher_psa; + + if( NULL == cipher_info || NULL == ctx ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + /* Check that the underlying cipher mode and cipher type are + * supported by the underlying PSA Crypto implementation. */ + alg = mbedtls_psa_translate_cipher_mode( cipher_info->mode, taglen ); + if( alg == 0 ) + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + if( mbedtls_psa_translate_cipher_type( cipher_info->type ) == 0 ) + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + + memset( ctx, 0, sizeof( mbedtls_cipher_context_t ) ); + + cipher_psa = mbedtls_calloc( 1, sizeof(mbedtls_cipher_context_psa ) ); + if( cipher_psa == NULL ) + return( MBEDTLS_ERR_CIPHER_ALLOC_FAILED ); + cipher_psa->alg = alg; + ctx->cipher_ctx = cipher_psa; + ctx->cipher_info = cipher_info; + ctx->psa_enabled = 1; + return( 0 ); +} +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + int mbedtls_cipher_setkey( mbedtls_cipher_context_t *ctx, const unsigned char *key, int key_bitlen, @@ -218,6 +262,64 @@ int mbedtls_cipher_setkey( mbedtls_cipher_context_t *ctx, if( ctx->cipher_info == NULL ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ctx->psa_enabled == 1 ) + { + mbedtls_cipher_context_psa * const cipher_psa = + (mbedtls_cipher_context_psa *) ctx->cipher_ctx; + + size_t const key_bytelen = ( (size_t) key_bitlen + 7 ) / 8; + + psa_status_t status; + psa_key_type_t key_type; + psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + + /* PSA Crypto API only accepts byte-aligned keys. */ + if( key_bitlen % 8 != 0 ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + /* Don't allow keys to be set multiple times. */ + if( cipher_psa->slot_state != MBEDTLS_CIPHER_PSA_KEY_UNSET ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + key_type = mbedtls_psa_translate_cipher_type( + ctx->cipher_info->type ); + if( key_type == 0 ) + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + psa_set_key_type( &attributes, key_type ); + + /* Mbed TLS' cipher layer doesn't enforce the mode of operation + * (encrypt vs. decrypt): it is possible to setup a key for encryption + * and use it for AEAD decryption. Until tests relying on this + * are changed, allow any usage in PSA. */ + psa_set_key_usage_flags( &attributes, + /* mbedtls_psa_translate_cipher_operation( operation ); */ + PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT ); + psa_set_key_algorithm( &attributes, cipher_psa->alg ); + + status = psa_import_key( &attributes, key, key_bytelen, + &cipher_psa->slot ); + switch( status ) + { + case PSA_SUCCESS: + break; + case PSA_ERROR_INSUFFICIENT_MEMORY: + return( MBEDTLS_ERR_CIPHER_ALLOC_FAILED ); + case PSA_ERROR_NOT_SUPPORTED: + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + default: + return( MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED ); + } + /* Indicate that we own the key slot and need to + * destroy it in mbedtls_cipher_free(). */ + cipher_psa->slot_state = MBEDTLS_CIPHER_PSA_KEY_OWNED; + + ctx->key_bitlen = key_bitlen; + ctx->operation = operation; + return( 0 ); + } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + if( ( ctx->cipher_info->flags & MBEDTLS_CIPHER_VARIABLE_KEY_LEN ) == 0 && (int) ctx->cipher_info->key_bitlen != key_bitlen ) { @@ -256,6 +358,15 @@ int mbedtls_cipher_set_iv( mbedtls_cipher_context_t *ctx, CIPHER_VALIDATE_RET( iv_len == 0 || iv != NULL ); if( ctx->cipher_info == NULL ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ctx->psa_enabled == 1 ) + { + /* While PSA Crypto has an API for multipart + * operations, we currently don't make it + * accessible through the cipher layer. */ + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ /* avoid buffer overflow in ctx->iv */ if( iv_len > MBEDTLS_MAX_IV_LENGTH ) @@ -299,6 +410,15 @@ int mbedtls_cipher_reset( mbedtls_cipher_context_t *ctx ) if( ctx->cipher_info == NULL ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ctx->psa_enabled == 1 ) + { + /* We don't support resetting PSA-based + * cipher contexts, yet. */ + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + ctx->unprocessed_len = 0; return( 0 ); @@ -313,6 +433,16 @@ int mbedtls_cipher_update_ad( mbedtls_cipher_context_t *ctx, if( ctx->cipher_info == NULL ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ctx->psa_enabled == 1 ) + { + /* While PSA Crypto has an API for multipart + * operations, we currently don't make it + * accessible through the cipher layer. */ + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + #if defined(MBEDTLS_GCM_C) if( MBEDTLS_MODE_GCM == ctx->cipher_info->mode ) { @@ -349,7 +479,7 @@ int mbedtls_cipher_update_ad( mbedtls_cipher_context_t *ctx, int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t block_size; CIPHER_VALIDATE_RET( ctx != NULL ); @@ -359,8 +489,22 @@ int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *i if( ctx->cipher_info == NULL ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ctx->psa_enabled == 1 ) + { + /* While PSA Crypto has an API for multipart + * operations, we currently don't make it + * accessible through the cipher layer. */ + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + *olen = 0; block_size = mbedtls_cipher_get_block_size( ctx ); + if ( 0 == block_size ) + { + return( MBEDTLS_ERR_CIPHER_INVALID_CONTEXT ); + } if( ctx->cipher_info->mode == MBEDTLS_MODE_ECB ) { @@ -396,11 +540,6 @@ int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *i } #endif - if ( 0 == block_size ) - { - return( MBEDTLS_ERR_CIPHER_INVALID_CONTEXT ); - } - if( input == output && ( ctx->unprocessed_len != 0 || ilen % block_size ) ) { @@ -459,11 +598,6 @@ int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *i */ if( 0 != ilen ) { - if( 0 == block_size ) - { - return( MBEDTLS_ERR_CIPHER_INVALID_CONTEXT ); - } - /* Encryption: only cache partial blocks * Decryption w/ padding: always keep at least one whole block * Decryption w/o padding: only cache partial blocks @@ -768,6 +902,16 @@ int mbedtls_cipher_finish( mbedtls_cipher_context_t *ctx, if( ctx->cipher_info == NULL ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ctx->psa_enabled == 1 ) + { + /* While PSA Crypto has an API for multipart + * operations, we currently don't make it + * accessible through the cipher layer. */ + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + *olen = 0; if( MBEDTLS_MODE_CFB == ctx->cipher_info->mode || @@ -860,6 +1004,19 @@ int mbedtls_cipher_set_padding_mode( mbedtls_cipher_context_t *ctx, return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); } +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ctx->psa_enabled == 1 ) + { + /* While PSA Crypto knows about CBC padding + * schemes, we currently don't make them + * accessible through the cipher layer. */ + if( mode != MBEDTLS_PADDING_NONE ) + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + + return( 0 ); + } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + switch( mode ) { #if defined(MBEDTLS_CIPHER_PADDING_PKCS7) @@ -911,6 +1068,16 @@ int mbedtls_cipher_write_tag( mbedtls_cipher_context_t *ctx, if( MBEDTLS_ENCRYPT != ctx->operation ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ctx->psa_enabled == 1 ) + { + /* While PSA Crypto has an API for multipart + * operations, we currently don't make it + * accessible through the cipher layer. */ + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + #if defined(MBEDTLS_GCM_C) if( MBEDTLS_MODE_GCM == ctx->cipher_info->mode ) return( mbedtls_gcm_finish( (mbedtls_gcm_context *) ctx->cipher_ctx, @@ -924,8 +1091,8 @@ int mbedtls_cipher_write_tag( mbedtls_cipher_context_t *ctx, if ( tag_len != 16U ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); - return( mbedtls_chachapoly_finish( (mbedtls_chachapoly_context*) ctx->cipher_ctx, - tag ) ); + return( mbedtls_chachapoly_finish( + (mbedtls_chachapoly_context*) ctx->cipher_ctx, tag ) ); } #endif @@ -936,7 +1103,7 @@ int mbedtls_cipher_check_tag( mbedtls_cipher_context_t *ctx, const unsigned char *tag, size_t tag_len ) { unsigned char check_tag[16]; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; CIPHER_VALIDATE_RET( ctx != NULL ); CIPHER_VALIDATE_RET( tag_len == 0 || tag != NULL ); @@ -948,23 +1115,41 @@ int mbedtls_cipher_check_tag( mbedtls_cipher_context_t *ctx, return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); } +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ctx->psa_enabled == 1 ) + { + /* While PSA Crypto has an API for multipart + * operations, we currently don't make it + * accessible through the cipher layer. */ + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + + /* Status to return on a non-authenticated algorithm. It would make sense + * to return MBEDTLS_ERR_CIPHER_INVALID_CONTEXT or perhaps + * MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA, but at the time I write this our + * unit tests assume 0. */ + ret = 0; + #if defined(MBEDTLS_GCM_C) if( MBEDTLS_MODE_GCM == ctx->cipher_info->mode ) { if( tag_len > sizeof( check_tag ) ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); - if( 0 != ( ret = mbedtls_gcm_finish( (mbedtls_gcm_context *) ctx->cipher_ctx, - check_tag, tag_len ) ) ) + if( 0 != ( ret = mbedtls_gcm_finish( + (mbedtls_gcm_context *) ctx->cipher_ctx, + check_tag, tag_len ) ) ) { return( ret ); } /* Check the tag in "constant-time" */ - if( mbedtls_constant_time_memcmp( tag, check_tag, tag_len ) != 0 ) - return( MBEDTLS_ERR_CIPHER_AUTH_FAILED ); - - return( 0 ); + if( mbedtls_ct_memcmp( tag, check_tag, tag_len ) != 0 ) + { + ret = MBEDTLS_ERR_CIPHER_AUTH_FAILED; + goto exit; + } } #endif /* MBEDTLS_GCM_C */ @@ -975,22 +1160,25 @@ int mbedtls_cipher_check_tag( mbedtls_cipher_context_t *ctx, if ( tag_len != sizeof( check_tag ) ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); - ret = mbedtls_chachapoly_finish( (mbedtls_chachapoly_context*) ctx->cipher_ctx, - check_tag ); + ret = mbedtls_chachapoly_finish( + (mbedtls_chachapoly_context*) ctx->cipher_ctx, check_tag ); if ( ret != 0 ) { return( ret ); } /* Check the tag in "constant-time" */ - if( mbedtls_constant_time_memcmp( tag, check_tag, tag_len ) != 0 ) - return( MBEDTLS_ERR_CIPHER_AUTH_FAILED ); - - return( 0 ); + if( mbedtls_ct_memcmp( tag, check_tag, tag_len ) != 0 ) + { + ret = MBEDTLS_ERR_CIPHER_AUTH_FAILED; + goto exit; + } } #endif /* MBEDTLS_CHACHAPOLY_C */ - return( 0 ); +exit: + mbedtls_platform_zeroize( check_tag, tag_len ); + return( ret ); } #endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */ @@ -1002,7 +1190,7 @@ int mbedtls_cipher_crypt( mbedtls_cipher_context_t *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t finish_olen; CIPHER_VALIDATE_RET( ctx != NULL ); @@ -1011,16 +1199,79 @@ int mbedtls_cipher_crypt( mbedtls_cipher_context_t *ctx, CIPHER_VALIDATE_RET( output != NULL ); CIPHER_VALIDATE_RET( olen != NULL ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ctx->psa_enabled == 1 ) + { + /* As in the non-PSA case, we don't check that + * a key has been set. If not, the key slot will + * still be in its default state of 0, which is + * guaranteed to be invalid, hence the PSA-call + * below will gracefully fail. */ + mbedtls_cipher_context_psa * const cipher_psa = + (mbedtls_cipher_context_psa *) ctx->cipher_ctx; + + psa_status_t status; + psa_cipher_operation_t cipher_op = PSA_CIPHER_OPERATION_INIT; + size_t part_len; + + if( ctx->operation == MBEDTLS_DECRYPT ) + { + status = psa_cipher_decrypt_setup( &cipher_op, + cipher_psa->slot, + cipher_psa->alg ); + } + else if( ctx->operation == MBEDTLS_ENCRYPT ) + { + status = psa_cipher_encrypt_setup( &cipher_op, + cipher_psa->slot, + cipher_psa->alg ); + } + else + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + /* In the following, we can immediately return on an error, + * because the PSA Crypto API guarantees that cipher operations + * are terminated by unsuccessful calls to psa_cipher_update(), + * and by any call to psa_cipher_finish(). */ + if( status != PSA_SUCCESS ) + return( MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED ); + + if( ctx->cipher_info->mode != MBEDTLS_MODE_ECB ) + { + status = psa_cipher_set_iv( &cipher_op, iv, iv_len ); + if( status != PSA_SUCCESS ) + return( MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED ); + } + + status = psa_cipher_update( &cipher_op, + input, ilen, + output, ilen, olen ); + if( status != PSA_SUCCESS ) + return( MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED ); + + status = psa_cipher_finish( &cipher_op, + output + *olen, ilen - *olen, + &part_len ); + if( status != PSA_SUCCESS ) + return( MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED ); + + *olen += part_len; + return( 0 ); + } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + if( ( ret = mbedtls_cipher_set_iv( ctx, iv, iv_len ) ) != 0 ) return( ret ); if( ( ret = mbedtls_cipher_reset( ctx ) ) != 0 ) return( ret ); - if( ( ret = mbedtls_cipher_update( ctx, input, ilen, output, olen ) ) != 0 ) + if( ( ret = mbedtls_cipher_update( ctx, input, ilen, + output, olen ) ) != 0 ) return( ret ); - if( ( ret = mbedtls_cipher_finish( ctx, output + *olen, &finish_olen ) ) != 0 ) + if( ( ret = mbedtls_cipher_finish( ctx, output + *olen, + &finish_olen ) ) != 0 ) return( ret ); *olen += finish_olen; @@ -1030,30 +1281,55 @@ int mbedtls_cipher_crypt( mbedtls_cipher_context_t *ctx, #if defined(MBEDTLS_CIPHER_MODE_AEAD) /* - * Packet-oriented encryption for AEAD modes + * Packet-oriented encryption for AEAD modes: internal function shared by + * mbedtls_cipher_auth_encrypt() and mbedtls_cipher_auth_encrypt_ext(). */ -int mbedtls_cipher_auth_encrypt( mbedtls_cipher_context_t *ctx, +static int mbedtls_cipher_aead_encrypt( mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len, const unsigned char *ad, size_t ad_len, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, unsigned char *tag, size_t tag_len ) { - CIPHER_VALIDATE_RET( ctx != NULL ); - CIPHER_VALIDATE_RET( iv != NULL ); - CIPHER_VALIDATE_RET( ad_len == 0 || ad != NULL ); - CIPHER_VALIDATE_RET( ilen == 0 || input != NULL ); - CIPHER_VALIDATE_RET( output != NULL ); - CIPHER_VALIDATE_RET( olen != NULL ); - CIPHER_VALIDATE_RET( tag_len == 0 || tag != NULL ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ctx->psa_enabled == 1 ) + { + /* As in the non-PSA case, we don't check that + * a key has been set. If not, the key slot will + * still be in its default state of 0, which is + * guaranteed to be invalid, hence the PSA-call + * below will gracefully fail. */ + mbedtls_cipher_context_psa * const cipher_psa = + (mbedtls_cipher_context_psa *) ctx->cipher_ctx; + + psa_status_t status; + + /* PSA Crypto API always writes the authentication tag + * at the end of the encrypted message. */ + if( output == NULL || tag != output + ilen ) + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + + status = psa_aead_encrypt( cipher_psa->slot, + cipher_psa->alg, + iv, iv_len, + ad, ad_len, + input, ilen, + output, ilen + tag_len, olen ); + if( status != PSA_SUCCESS ) + return( MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED ); + + *olen -= tag_len; + return( 0 ); + } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ #if defined(MBEDTLS_GCM_C) if( MBEDTLS_MODE_GCM == ctx->cipher_info->mode ) { *olen = ilen; - return( mbedtls_gcm_crypt_and_tag( ctx->cipher_ctx, MBEDTLS_GCM_ENCRYPT, ilen, - iv, iv_len, ad, ad_len, input, output, - tag_len, tag ) ); + return( mbedtls_gcm_crypt_and_tag( ctx->cipher_ctx, MBEDTLS_GCM_ENCRYPT, + ilen, iv, iv_len, ad, ad_len, + input, output, tag_len, tag ) ); } #endif /* MBEDTLS_GCM_C */ #if defined(MBEDTLS_CCM_C) @@ -1085,27 +1361,53 @@ int mbedtls_cipher_auth_encrypt( mbedtls_cipher_context_t *ctx, } /* - * Packet-oriented decryption for AEAD modes + * Packet-oriented encryption for AEAD modes: internal function shared by + * mbedtls_cipher_auth_encrypt() and mbedtls_cipher_auth_encrypt_ext(). */ -int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx, +static int mbedtls_cipher_aead_decrypt( mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len, const unsigned char *ad, size_t ad_len, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, const unsigned char *tag, size_t tag_len ) { - CIPHER_VALIDATE_RET( ctx != NULL ); - CIPHER_VALIDATE_RET( iv != NULL ); - CIPHER_VALIDATE_RET( ad_len == 0 || ad != NULL ); - CIPHER_VALIDATE_RET( ilen == 0 || input != NULL ); - CIPHER_VALIDATE_RET( output != NULL ); - CIPHER_VALIDATE_RET( olen != NULL ); - CIPHER_VALIDATE_RET( tag_len == 0 || tag != NULL ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ctx->psa_enabled == 1 ) + { + /* As in the non-PSA case, we don't check that + * a key has been set. If not, the key slot will + * still be in its default state of 0, which is + * guaranteed to be invalid, hence the PSA-call + * below will gracefully fail. */ + mbedtls_cipher_context_psa * const cipher_psa = + (mbedtls_cipher_context_psa *) ctx->cipher_ctx; + + psa_status_t status; + + /* PSA Crypto API always writes the authentication tag + * at the end of the encrypted message. */ + if( input == NULL || tag != input + ilen ) + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + + status = psa_aead_decrypt( cipher_psa->slot, + cipher_psa->alg, + iv, iv_len, + ad, ad_len, + input, ilen + tag_len, + output, ilen, olen ); + if( status == PSA_ERROR_INVALID_SIGNATURE ) + return( MBEDTLS_ERR_CIPHER_AUTH_FAILED ); + else if( status != PSA_SUCCESS ) + return( MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED ); + + return( 0 ); + } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ #if defined(MBEDTLS_GCM_C) if( MBEDTLS_MODE_GCM == ctx->cipher_info->mode ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; *olen = ilen; ret = mbedtls_gcm_auth_decrypt( ctx->cipher_ctx, ilen, @@ -1121,7 +1423,7 @@ int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx, #if defined(MBEDTLS_CCM_C) if( MBEDTLS_MODE_CCM == ctx->cipher_info->mode ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; *olen = ilen; ret = mbedtls_ccm_auth_decrypt( ctx->cipher_ctx, ilen, @@ -1137,7 +1439,7 @@ int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx, #if defined(MBEDTLS_CHACHAPOLY_C) if ( MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; /* ChachaPoly has fixed length nonce and MAC (tag) */ if ( ( iv_len != ctx->cipher_info->iv_size ) || @@ -1159,6 +1461,166 @@ int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx, return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); } + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +/* + * Packet-oriented encryption for AEAD modes: public legacy function. + */ +int mbedtls_cipher_auth_encrypt( mbedtls_cipher_context_t *ctx, + const unsigned char *iv, size_t iv_len, + const unsigned char *ad, size_t ad_len, + const unsigned char *input, size_t ilen, + unsigned char *output, size_t *olen, + unsigned char *tag, size_t tag_len ) +{ + CIPHER_VALIDATE_RET( ctx != NULL ); + CIPHER_VALIDATE_RET( iv_len == 0 || iv != NULL ); + CIPHER_VALIDATE_RET( ad_len == 0 || ad != NULL ); + CIPHER_VALIDATE_RET( ilen == 0 || input != NULL ); + CIPHER_VALIDATE_RET( ilen == 0 || output != NULL ); + CIPHER_VALIDATE_RET( olen != NULL ); + CIPHER_VALIDATE_RET( tag_len == 0 || tag != NULL ); + + return( mbedtls_cipher_aead_encrypt( ctx, iv, iv_len, ad, ad_len, + input, ilen, output, olen, + tag, tag_len ) ); +} + +/* + * Packet-oriented decryption for AEAD modes: public legacy function. + */ +int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx, + const unsigned char *iv, size_t iv_len, + const unsigned char *ad, size_t ad_len, + const unsigned char *input, size_t ilen, + unsigned char *output, size_t *olen, + const unsigned char *tag, size_t tag_len ) +{ + CIPHER_VALIDATE_RET( ctx != NULL ); + CIPHER_VALIDATE_RET( iv_len == 0 || iv != NULL ); + CIPHER_VALIDATE_RET( ad_len == 0 || ad != NULL ); + CIPHER_VALIDATE_RET( ilen == 0 || input != NULL ); + CIPHER_VALIDATE_RET( ilen == 0 || output != NULL ); + CIPHER_VALIDATE_RET( olen != NULL ); + CIPHER_VALIDATE_RET( tag_len == 0 || tag != NULL ); + + return( mbedtls_cipher_aead_decrypt( ctx, iv, iv_len, ad, ad_len, + input, ilen, output, olen, + tag, tag_len ) ); +} +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ +#endif /* MBEDTLS_CIPHER_MODE_AEAD */ + +#if defined(MBEDTLS_CIPHER_MODE_AEAD) || defined(MBEDTLS_NIST_KW_C) +/* + * Packet-oriented encryption for AEAD/NIST_KW: public function. + */ +int mbedtls_cipher_auth_encrypt_ext( mbedtls_cipher_context_t *ctx, + const unsigned char *iv, size_t iv_len, + const unsigned char *ad, size_t ad_len, + const unsigned char *input, size_t ilen, + unsigned char *output, size_t output_len, + size_t *olen, size_t tag_len ) +{ + CIPHER_VALIDATE_RET( ctx != NULL ); + CIPHER_VALIDATE_RET( iv_len == 0 || iv != NULL ); + CIPHER_VALIDATE_RET( ad_len == 0 || ad != NULL ); + CIPHER_VALIDATE_RET( ilen == 0 || input != NULL ); + CIPHER_VALIDATE_RET( output != NULL ); + CIPHER_VALIDATE_RET( olen != NULL ); + +#if defined(MBEDTLS_NIST_KW_C) + if( +#if defined(MBEDTLS_USE_PSA_CRYPTO) + ctx->psa_enabled == 0 && +#endif + ( MBEDTLS_MODE_KW == ctx->cipher_info->mode || + MBEDTLS_MODE_KWP == ctx->cipher_info->mode ) ) + { + mbedtls_nist_kw_mode_t mode = ( MBEDTLS_MODE_KW == ctx->cipher_info->mode ) ? + MBEDTLS_KW_MODE_KW : MBEDTLS_KW_MODE_KWP; + + /* There is no iv, tag or ad associated with KW and KWP, + * so these length should be 0 as documented. */ + if( iv_len != 0 || tag_len != 0 || ad_len != 0 ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + (void) iv; + (void) ad; + + return( mbedtls_nist_kw_wrap( ctx->cipher_ctx, mode, input, ilen, + output, olen, output_len ) ); + } +#endif /* MBEDTLS_NIST_KW_C */ + +#if defined(MBEDTLS_CIPHER_MODE_AEAD) + /* AEAD case: check length before passing on to shared function */ + if( output_len < ilen + tag_len ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + int ret = mbedtls_cipher_aead_encrypt( ctx, iv, iv_len, ad, ad_len, + input, ilen, output, olen, + output + ilen, tag_len ); + *olen += tag_len; + return( ret ); +#else + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); #endif /* MBEDTLS_CIPHER_MODE_AEAD */ +} + +/* + * Packet-oriented decryption for AEAD/NIST_KW: public function. + */ +int mbedtls_cipher_auth_decrypt_ext( mbedtls_cipher_context_t *ctx, + const unsigned char *iv, size_t iv_len, + const unsigned char *ad, size_t ad_len, + const unsigned char *input, size_t ilen, + unsigned char *output, size_t output_len, + size_t *olen, size_t tag_len ) +{ + CIPHER_VALIDATE_RET( ctx != NULL ); + CIPHER_VALIDATE_RET( iv_len == 0 || iv != NULL ); + CIPHER_VALIDATE_RET( ad_len == 0 || ad != NULL ); + CIPHER_VALIDATE_RET( ilen == 0 || input != NULL ); + CIPHER_VALIDATE_RET( output_len == 0 || output != NULL ); + CIPHER_VALIDATE_RET( olen != NULL ); + +#if defined(MBEDTLS_NIST_KW_C) + if( +#if defined(MBEDTLS_USE_PSA_CRYPTO) + ctx->psa_enabled == 0 && +#endif + ( MBEDTLS_MODE_KW == ctx->cipher_info->mode || + MBEDTLS_MODE_KWP == ctx->cipher_info->mode ) ) + { + mbedtls_nist_kw_mode_t mode = ( MBEDTLS_MODE_KW == ctx->cipher_info->mode ) ? + MBEDTLS_KW_MODE_KW : MBEDTLS_KW_MODE_KWP; + + /* There is no iv, tag or ad associated with KW and KWP, + * so these length should be 0 as documented. */ + if( iv_len != 0 || tag_len != 0 || ad_len != 0 ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + (void) iv; + (void) ad; + + return( mbedtls_nist_kw_unwrap( ctx->cipher_ctx, mode, input, ilen, + output, olen, output_len ) ); + } +#endif /* MBEDTLS_NIST_KW_C */ + +#if defined(MBEDTLS_CIPHER_MODE_AEAD) + /* AEAD case: check length before passing on to shared function */ + if( ilen < tag_len || output_len < ilen - tag_len ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + return( mbedtls_cipher_aead_decrypt( ctx, iv, iv_len, ad, ad_len, + input, ilen - tag_len, output, olen, + input + ilen - tag_len, tag_len ) ); +#else + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); +#endif /* MBEDTLS_CIPHER_MODE_AEAD */ +} +#endif /* MBEDTLS_CIPHER_MODE_AEAD || MBEDTLS_NIST_KW_C */ #endif /* MBEDTLS_CIPHER_C */ diff --git a/Externals/mbedtls/library/cipher_wrap.c b/Externals/mbedtls/library/cipher_wrap.c index 6dd8c5d3a967..57eb3cb67fb8 100644 --- a/Externals/mbedtls/library/cipher_wrap.c +++ b/Externals/mbedtls/library/cipher_wrap.c @@ -5,7 +5,7 @@ * * \author Adriaan de Jong * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -19,19 +19,14 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_CIPHER_C) #include "mbedtls/cipher_internal.h" +#include "mbedtls/error.h" #if defined(MBEDTLS_CHACHAPOLY_C) #include "mbedtls/chachapoly.h" @@ -73,6 +68,10 @@ #include "mbedtls/ccm.h" #endif +#if defined(MBEDTLS_NIST_KW_C) +#include "mbedtls/nist_kw.h" +#endif + #if defined(MBEDTLS_CIPHER_NULL_CIPHER) #include #endif @@ -754,7 +753,7 @@ static const mbedtls_cipher_info_t camellia_128_ecb_info = { MBEDTLS_MODE_ECB, 128, "CAMELLIA-128-ECB", - 16, + 0, 0, 16, &camellia_info @@ -765,7 +764,7 @@ static const mbedtls_cipher_info_t camellia_192_ecb_info = { MBEDTLS_MODE_ECB, 192, "CAMELLIA-192-ECB", - 16, + 0, 0, 16, &camellia_info @@ -776,7 +775,7 @@ static const mbedtls_cipher_info_t camellia_256_ecb_info = { MBEDTLS_MODE_ECB, 256, "CAMELLIA-256-ECB", - 16, + 0, 0, 16, &camellia_info @@ -1130,7 +1129,7 @@ static const mbedtls_cipher_info_t aria_128_ecb_info = { MBEDTLS_MODE_ECB, 128, "ARIA-128-ECB", - 16, + 0, 0, 16, &aria_info @@ -1141,7 +1140,7 @@ static const mbedtls_cipher_info_t aria_192_ecb_info = { MBEDTLS_MODE_ECB, 192, "ARIA-192-ECB", - 16, + 0, 0, 16, &aria_info @@ -1152,7 +1151,7 @@ static const mbedtls_cipher_info_t aria_256_ecb_info = { MBEDTLS_MODE_ECB, 256, "ARIA-256-ECB", - 16, + 0, 0, 16, &aria_info @@ -1554,7 +1553,7 @@ static const mbedtls_cipher_info_t des_ecb_info = { MBEDTLS_MODE_ECB, MBEDTLS_KEY_LENGTH_DES, "DES-ECB", - 8, + 0, 0, 8, &des_info @@ -1605,7 +1604,7 @@ static const mbedtls_cipher_info_t des_ede_ecb_info = { MBEDTLS_MODE_ECB, MBEDTLS_KEY_LENGTH_DES_EDE, "DES-EDE-ECB", - 8, + 0, 0, 8, &des_ede_info @@ -1656,7 +1655,7 @@ static const mbedtls_cipher_info_t des_ede3_ecb_info = { MBEDTLS_MODE_ECB, MBEDTLS_KEY_LENGTH_DES_EDE3, "DES-EDE3-ECB", - 8, + 0, 0, 8, &des_ede3_info @@ -1771,7 +1770,7 @@ static const mbedtls_cipher_info_t blowfish_ecb_info = { MBEDTLS_MODE_ECB, 128, "BLOWFISH-ECB", - 8, + 0, MBEDTLS_CIPHER_VARIABLE_KEY_LEN, 8, &blowfish_info @@ -1912,7 +1911,7 @@ static int chacha20_stream_wrap( void *ctx, size_t length, const unsigned char *input, unsigned char *output ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ret = mbedtls_chacha20_update( ctx, length, input, output ); if( ret == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ) @@ -2119,6 +2118,131 @@ static const mbedtls_cipher_info_t null_cipher_info = { }; #endif /* defined(MBEDTLS_CIPHER_NULL_CIPHER) */ +#if defined(MBEDTLS_NIST_KW_C) +static void *kw_ctx_alloc( void ) +{ + void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_nist_kw_context ) ); + + if( ctx != NULL ) + mbedtls_nist_kw_init( (mbedtls_nist_kw_context *) ctx ); + + return( ctx ); +} + +static void kw_ctx_free( void *ctx ) +{ + mbedtls_nist_kw_free( ctx ); + mbedtls_free( ctx ); +} + +static int kw_aes_setkey_wrap( void *ctx, const unsigned char *key, + unsigned int key_bitlen ) +{ + return mbedtls_nist_kw_setkey( (mbedtls_nist_kw_context *) ctx, + MBEDTLS_CIPHER_ID_AES, key, key_bitlen, 1 ); +} + +static int kw_aes_setkey_unwrap( void *ctx, const unsigned char *key, + unsigned int key_bitlen ) +{ + return mbedtls_nist_kw_setkey( (mbedtls_nist_kw_context *) ctx, + MBEDTLS_CIPHER_ID_AES, key, key_bitlen, 0 ); +} + +static const mbedtls_cipher_base_t kw_aes_info = { + MBEDTLS_CIPHER_ID_AES, + NULL, +#if defined(MBEDTLS_CIPHER_MODE_CBC) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CFB) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CTR) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_STREAM) + NULL, +#endif + kw_aes_setkey_wrap, + kw_aes_setkey_unwrap, + kw_ctx_alloc, + kw_ctx_free, +}; + +static const mbedtls_cipher_info_t aes_128_nist_kw_info = { + MBEDTLS_CIPHER_AES_128_KW, + MBEDTLS_MODE_KW, + 128, + "AES-128-KW", + 0, + 0, + 16, + &kw_aes_info +}; + +static const mbedtls_cipher_info_t aes_192_nist_kw_info = { + MBEDTLS_CIPHER_AES_192_KW, + MBEDTLS_MODE_KW, + 192, + "AES-192-KW", + 0, + 0, + 16, + &kw_aes_info +}; + +static const mbedtls_cipher_info_t aes_256_nist_kw_info = { + MBEDTLS_CIPHER_AES_256_KW, + MBEDTLS_MODE_KW, + 256, + "AES-256-KW", + 0, + 0, + 16, + &kw_aes_info +}; + +static const mbedtls_cipher_info_t aes_128_nist_kwp_info = { + MBEDTLS_CIPHER_AES_128_KWP, + MBEDTLS_MODE_KWP, + 128, + "AES-128-KWP", + 0, + 0, + 16, + &kw_aes_info +}; + +static const mbedtls_cipher_info_t aes_192_nist_kwp_info = { + MBEDTLS_CIPHER_AES_192_KWP, + MBEDTLS_MODE_KWP, + 192, + "AES-192-KWP", + 0, + 0, + 16, + &kw_aes_info +}; + +static const mbedtls_cipher_info_t aes_256_nist_kwp_info = { + MBEDTLS_CIPHER_AES_256_KWP, + MBEDTLS_MODE_KWP, + 256, + "AES-256-KWP", + 0, + 0, + 16, + &kw_aes_info +}; +#endif /* MBEDTLS_NIST_KW_C */ + const mbedtls_cipher_definition_t mbedtls_cipher_definitions[] = { #if defined(MBEDTLS_AES_C) @@ -2259,6 +2383,15 @@ const mbedtls_cipher_definition_t mbedtls_cipher_definitions[] = { MBEDTLS_CIPHER_CHACHA20_POLY1305, &chachapoly_info }, #endif +#if defined(MBEDTLS_NIST_KW_C) + { MBEDTLS_CIPHER_AES_128_KW, &aes_128_nist_kw_info }, + { MBEDTLS_CIPHER_AES_192_KW, &aes_192_nist_kw_info }, + { MBEDTLS_CIPHER_AES_256_KW, &aes_256_nist_kw_info }, + { MBEDTLS_CIPHER_AES_128_KWP, &aes_128_nist_kwp_info }, + { MBEDTLS_CIPHER_AES_192_KWP, &aes_192_nist_kwp_info }, + { MBEDTLS_CIPHER_AES_256_KWP, &aes_256_nist_kwp_info }, +#endif + #if defined(MBEDTLS_CIPHER_NULL_CIPHER) { MBEDTLS_CIPHER_NULL, &null_cipher_info }, #endif /* MBEDTLS_CIPHER_NULL_CIPHER */ @@ -2266,7 +2399,8 @@ const mbedtls_cipher_definition_t mbedtls_cipher_definitions[] = { MBEDTLS_CIPHER_NONE, NULL } }; -#define NUM_CIPHERS sizeof mbedtls_cipher_definitions / sizeof mbedtls_cipher_definitions[0] +#define NUM_CIPHERS ( sizeof(mbedtls_cipher_definitions) / \ + sizeof(mbedtls_cipher_definitions[0]) ) int mbedtls_cipher_supported[NUM_CIPHERS]; #endif /* MBEDTLS_CIPHER_C */ diff --git a/Externals/mbedtls/library/cmac.c b/Externals/mbedtls/library/cmac.c index 5d101e1c7d0b..3cc49d10cc22 100644 --- a/Externals/mbedtls/library/cmac.c +++ b/Externals/mbedtls/library/cmac.c @@ -3,7 +3,7 @@ * * \brief NIST SP800-38B compliant CMAC implementation for AES and 3DES * - * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -17,8 +17,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -40,32 +38,17 @@ * */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_CMAC_C) #include "mbedtls/cmac.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" +#include "mbedtls/platform.h" #include - -#if defined(MBEDTLS_PLATFORM_C) -#include "mbedtls/platform.h" -#else -#include -#define mbedtls_calloc calloc -#define mbedtls_free free -#if defined(MBEDTLS_SELF_TEST) -#include -#define mbedtls_printf printf -#endif /* MBEDTLS_SELF_TEST */ -#endif /* MBEDTLS_PLATFORM_C */ - #if !defined(MBEDTLS_CMAC_ALT) || defined(MBEDTLS_SELF_TEST) /* @@ -136,7 +119,7 @@ static int cmac_multiply_by_u( unsigned char *output, static int cmac_generate_subkeys( mbedtls_cipher_context_t *ctx, unsigned char* K1, unsigned char* K2 ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char L[MBEDTLS_CIPHER_BLKSIZE_MAX]; size_t olen, block_size; @@ -315,7 +298,7 @@ int mbedtls_cipher_cmac_finish( mbedtls_cipher_context_t *ctx, unsigned char K1[MBEDTLS_CIPHER_BLKSIZE_MAX]; unsigned char K2[MBEDTLS_CIPHER_BLKSIZE_MAX]; unsigned char M_last[MBEDTLS_CIPHER_BLKSIZE_MAX]; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t olen, block_size; if( ctx == NULL || ctx->cipher_info == NULL || ctx->cmac_ctx == NULL || @@ -393,7 +376,7 @@ int mbedtls_cipher_cmac( const mbedtls_cipher_info_t *cipher_info, unsigned char *output ) { mbedtls_cipher_context_t ctx; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( cipher_info == NULL || key == NULL || input == NULL || output == NULL ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); @@ -425,9 +408,9 @@ int mbedtls_cipher_cmac( const mbedtls_cipher_info_t *cipher_info, */ int mbedtls_aes_cmac_prf_128( const unsigned char *key, size_t key_length, const unsigned char *input, size_t in_len, - unsigned char *output ) + unsigned char output[16] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const mbedtls_cipher_info_t *cipher_info; unsigned char zero_key[MBEDTLS_AES_BLOCK_SIZE]; unsigned char int_key[MBEDTLS_AES_BLOCK_SIZE]; @@ -783,7 +766,7 @@ static int cmac_test_subkeys( int verbose, for( i = 0; i < num_tests; i++ ) { if( verbose != 0 ) - mbedtls_printf( " %s CMAC subkey #%u: ", testname, i + 1 ); + mbedtls_printf( " %s CMAC subkey #%d: ", testname, i + 1 ); mbedtls_cipher_init( &ctx ); @@ -798,6 +781,18 @@ static int cmac_test_subkeys( int verbose, if( ( ret = mbedtls_cipher_setkey( &ctx, key, keybits, MBEDTLS_ENCRYPT ) ) != 0 ) { + /* When CMAC is implemented by an alternative implementation, or + * the underlying primitive itself is implemented alternatively, + * AES-192 may be unavailable. This should not cause the selftest + * function to fail. */ + if( ( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED || + ret == MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ) && + cipher_type == MBEDTLS_CIPHER_AES_192_ECB ) { + if( verbose != 0 ) + mbedtls_printf( "skipped\n" ); + goto next_test; + } + if( verbose != 0 ) mbedtls_printf( "test execution failed\n" ); @@ -825,6 +820,7 @@ static int cmac_test_subkeys( int verbose, if( verbose != 0 ) mbedtls_printf( "passed\n" ); +next_test: mbedtls_cipher_free( &ctx ); } @@ -864,11 +860,24 @@ static int cmac_test_wth_cipher( int verbose, for( i = 0; i < num_tests; i++ ) { if( verbose != 0 ) - mbedtls_printf( " %s CMAC #%u: ", testname, i + 1 ); + mbedtls_printf( " %s CMAC #%d: ", testname, i + 1 ); if( ( ret = mbedtls_cipher_cmac( cipher_info, key, keybits, messages, message_lengths[i], output ) ) != 0 ) { + /* When CMAC is implemented by an alternative implementation, or + * the underlying primitive itself is implemented alternatively, + * AES-192 and/or 3DES may be unavailable. This should not cause + * the selftest function to fail. */ + if( ( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED || + ret == MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ) && + ( cipher_type == MBEDTLS_CIPHER_AES_192_ECB || + cipher_type == MBEDTLS_CIPHER_DES_EDE3_ECB ) ) { + if( verbose != 0 ) + mbedtls_printf( "skipped\n" ); + continue; + } + if( verbose != 0 ) mbedtls_printf( "failed\n" ); goto exit; @@ -894,12 +903,12 @@ static int cmac_test_wth_cipher( int verbose, static int test_aes128_cmac_prf( int verbose ) { int i; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char output[MBEDTLS_AES_BLOCK_SIZE]; for( i = 0; i < NB_PRF_TESTS; i++ ) { - mbedtls_printf( " AES CMAC 128 PRF #%u: ", i ); + mbedtls_printf( " AES CMAC 128 PRF #%d: ", i ); ret = mbedtls_aes_cmac_prf_128( PRFK, PRFKlen[i], PRFM, 20, output ); if( ret != 0 || memcmp( output, PRFT[i], MBEDTLS_AES_BLOCK_SIZE ) != 0 ) @@ -921,7 +930,7 @@ static int test_aes128_cmac_prf( int verbose ) int mbedtls_cmac_self_test( int verbose ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; #if defined(MBEDTLS_AES_C) /* AES-128 */ diff --git a/Externals/mbedtls/library/common.h b/Externals/mbedtls/library/common.h new file mode 100644 index 000000000000..c06472418dfb --- /dev/null +++ b/Externals/mbedtls/library/common.h @@ -0,0 +1,305 @@ +/** + * \file common.h + * + * \brief Utility macros for internal use in the library + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBEDTLS_LIBRARY_COMMON_H +#define MBEDTLS_LIBRARY_COMMON_H + +#if defined(MBEDTLS_CONFIG_FILE) +#include MBEDTLS_CONFIG_FILE +#else +#include "mbedtls/config.h" +#endif + +#include + +/** Helper to define a function as static except when building invasive tests. + * + * If a function is only used inside its own source file and should be + * declared `static` to allow the compiler to optimize for code size, + * but that function has unit tests, define it with + * ``` + * MBEDTLS_STATIC_TESTABLE int mbedtls_foo(...) { ... } + * ``` + * and declare it in a header in the `library/` directory with + * ``` + * #if defined(MBEDTLS_TEST_HOOKS) + * int mbedtls_foo(...); + * #endif + * ``` + */ +#if defined(MBEDTLS_TEST_HOOKS) +#define MBEDTLS_STATIC_TESTABLE +#else +#define MBEDTLS_STATIC_TESTABLE static +#endif + +/** Byte Reading Macros + * + * Given a multi-byte integer \p x, MBEDTLS_BYTE_n retrieves the n-th + * byte from x, where byte 0 is the least significant byte. + */ +#define MBEDTLS_BYTE_0( x ) ( (uint8_t) ( ( x ) & 0xff ) ) +#define MBEDTLS_BYTE_1( x ) ( (uint8_t) ( ( ( x ) >> 8 ) & 0xff ) ) +#define MBEDTLS_BYTE_2( x ) ( (uint8_t) ( ( ( x ) >> 16 ) & 0xff ) ) +#define MBEDTLS_BYTE_3( x ) ( (uint8_t) ( ( ( x ) >> 24 ) & 0xff ) ) +#define MBEDTLS_BYTE_4( x ) ( (uint8_t) ( ( ( x ) >> 32 ) & 0xff ) ) +#define MBEDTLS_BYTE_5( x ) ( (uint8_t) ( ( ( x ) >> 40 ) & 0xff ) ) +#define MBEDTLS_BYTE_6( x ) ( (uint8_t) ( ( ( x ) >> 48 ) & 0xff ) ) +#define MBEDTLS_BYTE_7( x ) ( (uint8_t) ( ( ( x ) >> 56 ) & 0xff ) ) + +/** + * Get the unsigned 32 bits integer corresponding to four bytes in + * big-endian order (MSB first). + * + * \param data Base address of the memory to get the four bytes from. + * \param offset Offset from \p base of the first and most significant + * byte of the four bytes to build the 32 bits unsigned + * integer from. + */ +#ifndef MBEDTLS_GET_UINT32_BE +#define MBEDTLS_GET_UINT32_BE( data , offset ) \ + ( \ + ( (uint32_t) ( data )[( offset ) ] << 24 ) \ + | ( (uint32_t) ( data )[( offset ) + 1] << 16 ) \ + | ( (uint32_t) ( data )[( offset ) + 2] << 8 ) \ + | ( (uint32_t) ( data )[( offset ) + 3] ) \ + ) +#endif + +/** + * Put in memory a 32 bits unsigned integer in big-endian order. + * + * \param n 32 bits unsigned integer to put in memory. + * \param data Base address of the memory where to put the 32 + * bits unsigned integer in. + * \param offset Offset from \p base where to put the most significant + * byte of the 32 bits unsigned integer \p n. + */ +#ifndef MBEDTLS_PUT_UINT32_BE +#define MBEDTLS_PUT_UINT32_BE( n, data, offset ) \ +{ \ + ( data )[( offset ) ] = MBEDTLS_BYTE_3( n ); \ + ( data )[( offset ) + 1] = MBEDTLS_BYTE_2( n ); \ + ( data )[( offset ) + 2] = MBEDTLS_BYTE_1( n ); \ + ( data )[( offset ) + 3] = MBEDTLS_BYTE_0( n ); \ +} +#endif + +/** + * Get the unsigned 32 bits integer corresponding to four bytes in + * little-endian order (LSB first). + * + * \param data Base address of the memory to get the four bytes from. + * \param offset Offset from \p base of the first and least significant + * byte of the four bytes to build the 32 bits unsigned + * integer from. + */ +#ifndef MBEDTLS_GET_UINT32_LE +#define MBEDTLS_GET_UINT32_LE( data, offset ) \ + ( \ + ( (uint32_t) ( data )[( offset ) ] ) \ + | ( (uint32_t) ( data )[( offset ) + 1] << 8 ) \ + | ( (uint32_t) ( data )[( offset ) + 2] << 16 ) \ + | ( (uint32_t) ( data )[( offset ) + 3] << 24 ) \ + ) +#endif + +/** + * Put in memory a 32 bits unsigned integer in little-endian order. + * + * \param n 32 bits unsigned integer to put in memory. + * \param data Base address of the memory where to put the 32 + * bits unsigned integer in. + * \param offset Offset from \p base where to put the least significant + * byte of the 32 bits unsigned integer \p n. + */ +#ifndef MBEDTLS_PUT_UINT32_LE +#define MBEDTLS_PUT_UINT32_LE( n, data, offset ) \ +{ \ + ( data )[( offset ) ] = MBEDTLS_BYTE_0( n ); \ + ( data )[( offset ) + 1] = MBEDTLS_BYTE_1( n ); \ + ( data )[( offset ) + 2] = MBEDTLS_BYTE_2( n ); \ + ( data )[( offset ) + 3] = MBEDTLS_BYTE_3( n ); \ +} +#endif + +/** + * Get the unsigned 16 bits integer corresponding to two bytes in + * little-endian order (LSB first). + * + * \param data Base address of the memory to get the two bytes from. + * \param offset Offset from \p base of the first and least significant + * byte of the two bytes to build the 16 bits unsigned + * integer from. + */ +#ifndef MBEDTLS_GET_UINT16_LE +#define MBEDTLS_GET_UINT16_LE( data, offset ) \ + ( \ + ( (uint16_t) ( data )[( offset ) ] ) \ + | ( (uint16_t) ( data )[( offset ) + 1] << 8 ) \ + ) +#endif + +/** + * Put in memory a 16 bits unsigned integer in little-endian order. + * + * \param n 16 bits unsigned integer to put in memory. + * \param data Base address of the memory where to put the 16 + * bits unsigned integer in. + * \param offset Offset from \p base where to put the least significant + * byte of the 16 bits unsigned integer \p n. + */ +#ifndef MBEDTLS_PUT_UINT16_LE +#define MBEDTLS_PUT_UINT16_LE( n, data, offset ) \ +{ \ + ( data )[( offset ) ] = MBEDTLS_BYTE_0( n ); \ + ( data )[( offset ) + 1] = MBEDTLS_BYTE_1( n ); \ +} +#endif + +/** + * Get the unsigned 16 bits integer corresponding to two bytes in + * big-endian order (MSB first). + * + * \param data Base address of the memory to get the two bytes from. + * \param offset Offset from \p base of the first and most significant + * byte of the two bytes to build the 16 bits unsigned + * integer from. + */ +#ifndef MBEDTLS_GET_UINT16_BE +#define MBEDTLS_GET_UINT16_BE( data, offset ) \ + ( \ + ( (uint16_t) ( data )[( offset ) ] << 8 ) \ + | ( (uint16_t) ( data )[( offset ) + 1] ) \ + ) +#endif + +/** + * Put in memory a 16 bits unsigned integer in big-endian order. + * + * \param n 16 bits unsigned integer to put in memory. + * \param data Base address of the memory where to put the 16 + * bits unsigned integer in. + * \param offset Offset from \p base where to put the most significant + * byte of the 16 bits unsigned integer \p n. + */ +#ifndef MBEDTLS_PUT_UINT16_BE +#define MBEDTLS_PUT_UINT16_BE( n, data, offset ) \ +{ \ + ( data )[( offset ) ] = MBEDTLS_BYTE_1( n ); \ + ( data )[( offset ) + 1] = MBEDTLS_BYTE_0( n ); \ +} +#endif + +/** + * Get the unsigned 64 bits integer corresponding to eight bytes in + * big-endian order (MSB first). + * + * \param data Base address of the memory to get the eight bytes from. + * \param offset Offset from \p base of the first and most significant + * byte of the eight bytes to build the 64 bits unsigned + * integer from. + */ +#ifndef MBEDTLS_GET_UINT64_BE +#define MBEDTLS_GET_UINT64_BE( data, offset ) \ + ( \ + ( (uint64_t) ( data )[( offset ) ] << 56 ) \ + | ( (uint64_t) ( data )[( offset ) + 1] << 48 ) \ + | ( (uint64_t) ( data )[( offset ) + 2] << 40 ) \ + | ( (uint64_t) ( data )[( offset ) + 3] << 32 ) \ + | ( (uint64_t) ( data )[( offset ) + 4] << 24 ) \ + | ( (uint64_t) ( data )[( offset ) + 5] << 16 ) \ + | ( (uint64_t) ( data )[( offset ) + 6] << 8 ) \ + | ( (uint64_t) ( data )[( offset ) + 7] ) \ + ) +#endif + +/** + * Put in memory a 64 bits unsigned integer in big-endian order. + * + * \param n 64 bits unsigned integer to put in memory. + * \param data Base address of the memory where to put the 64 + * bits unsigned integer in. + * \param offset Offset from \p base where to put the most significant + * byte of the 64 bits unsigned integer \p n. + */ +#ifndef MBEDTLS_PUT_UINT64_BE +#define MBEDTLS_PUT_UINT64_BE( n, data, offset ) \ +{ \ + ( data )[( offset ) ] = MBEDTLS_BYTE_7( n ); \ + ( data )[( offset ) + 1] = MBEDTLS_BYTE_6( n ); \ + ( data )[( offset ) + 2] = MBEDTLS_BYTE_5( n ); \ + ( data )[( offset ) + 3] = MBEDTLS_BYTE_4( n ); \ + ( data )[( offset ) + 4] = MBEDTLS_BYTE_3( n ); \ + ( data )[( offset ) + 5] = MBEDTLS_BYTE_2( n ); \ + ( data )[( offset ) + 6] = MBEDTLS_BYTE_1( n ); \ + ( data )[( offset ) + 7] = MBEDTLS_BYTE_0( n ); \ +} +#endif + +/** + * Get the unsigned 64 bits integer corresponding to eight bytes in + * little-endian order (LSB first). + * + * \param data Base address of the memory to get the eight bytes from. + * \param offset Offset from \p base of the first and least significant + * byte of the eight bytes to build the 64 bits unsigned + * integer from. + */ +#ifndef MBEDTLS_GET_UINT64_LE +#define MBEDTLS_GET_UINT64_LE( data, offset ) \ + ( \ + ( (uint64_t) ( data )[( offset ) + 7] << 56 ) \ + | ( (uint64_t) ( data )[( offset ) + 6] << 48 ) \ + | ( (uint64_t) ( data )[( offset ) + 5] << 40 ) \ + | ( (uint64_t) ( data )[( offset ) + 4] << 32 ) \ + | ( (uint64_t) ( data )[( offset ) + 3] << 24 ) \ + | ( (uint64_t) ( data )[( offset ) + 2] << 16 ) \ + | ( (uint64_t) ( data )[( offset ) + 1] << 8 ) \ + | ( (uint64_t) ( data )[( offset ) ] ) \ + ) +#endif + +/** + * Put in memory a 64 bits unsigned integer in little-endian order. + * + * \param n 64 bits unsigned integer to put in memory. + * \param data Base address of the memory where to put the 64 + * bits unsigned integer in. + * \param offset Offset from \p base where to put the least significant + * byte of the 64 bits unsigned integer \p n. + */ +#ifndef MBEDTLS_PUT_UINT64_LE +#define MBEDTLS_PUT_UINT64_LE( n, data, offset ) \ +{ \ + ( data )[( offset ) ] = MBEDTLS_BYTE_0( n ); \ + ( data )[( offset ) + 1] = MBEDTLS_BYTE_1( n ); \ + ( data )[( offset ) + 2] = MBEDTLS_BYTE_2( n ); \ + ( data )[( offset ) + 3] = MBEDTLS_BYTE_3( n ); \ + ( data )[( offset ) + 4] = MBEDTLS_BYTE_4( n ); \ + ( data )[( offset ) + 5] = MBEDTLS_BYTE_5( n ); \ + ( data )[( offset ) + 6] = MBEDTLS_BYTE_6( n ); \ + ( data )[( offset ) + 7] = MBEDTLS_BYTE_7( n ); \ +} +#endif + +#endif /* MBEDTLS_LIBRARY_COMMON_H */ diff --git a/Externals/mbedtls/library/constant_time.c b/Externals/mbedtls/library/constant_time.c new file mode 100644 index 000000000000..18f1b20daa34 --- /dev/null +++ b/Externals/mbedtls/library/constant_time.c @@ -0,0 +1,819 @@ +/** + * Constant-time functions + * + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * The following functions are implemented without using comparison operators, as those + * might be translated to branches by some compilers on some platforms. + */ + +#include "common.h" +#include "constant_time_internal.h" +#include "mbedtls/constant_time.h" +#include "mbedtls/error.h" +#include "mbedtls/platform_util.h" + +#if defined(MBEDTLS_BIGNUM_C) +#include "mbedtls/bignum.h" +#endif + +#if defined(MBEDTLS_SSL_TLS_C) +#include "mbedtls/ssl_internal.h" +#endif + +#if defined(MBEDTLS_RSA_C) +#include "mbedtls/rsa.h" +#endif + +#if defined(MBEDTLS_BASE64_C) +#include "constant_time_invasive.h" +#endif + +#include + +int mbedtls_ct_memcmp( const void *a, + const void *b, + size_t n ) +{ + size_t i; + volatile const unsigned char *A = (volatile const unsigned char *) a; + volatile const unsigned char *B = (volatile const unsigned char *) b; + volatile unsigned char diff = 0; + + for( i = 0; i < n; i++ ) + { + /* Read volatile data in order before computing diff. + * This avoids IAR compiler warning: + * 'the order of volatile accesses is undefined ..' */ + unsigned char x = A[i], y = B[i]; + diff |= x ^ y; + } + + return( (int)diff ); +} + +unsigned mbedtls_ct_uint_mask( unsigned value ) +{ + /* MSVC has a warning about unary minus on unsigned, but this is + * well-defined and precisely what we want to do here */ +#if defined(_MSC_VER) +#pragma warning( push ) +#pragma warning( disable : 4146 ) +#endif + return( - ( ( value | - value ) >> ( sizeof( value ) * 8 - 1 ) ) ); +#if defined(_MSC_VER) +#pragma warning( pop ) +#endif +} + +#if defined(MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC) + +size_t mbedtls_ct_size_mask( size_t value ) +{ + /* MSVC has a warning about unary minus on unsigned integer types, + * but this is well-defined and precisely what we want to do here. */ +#if defined(_MSC_VER) +#pragma warning( push ) +#pragma warning( disable : 4146 ) +#endif + return( - ( ( value | - value ) >> ( sizeof( value ) * 8 - 1 ) ) ); +#if defined(_MSC_VER) +#pragma warning( pop ) +#endif +} + +#endif /* MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC */ + +#if defined(MBEDTLS_BIGNUM_C) + +mbedtls_mpi_uint mbedtls_ct_mpi_uint_mask( mbedtls_mpi_uint value ) +{ + /* MSVC has a warning about unary minus on unsigned, but this is + * well-defined and precisely what we want to do here */ +#if defined(_MSC_VER) +#pragma warning( push ) +#pragma warning( disable : 4146 ) +#endif + return( - ( ( value | - value ) >> ( sizeof( value ) * 8 - 1 ) ) ); +#if defined(_MSC_VER) +#pragma warning( pop ) +#endif +} + +#endif /* MBEDTLS_BIGNUM_C */ + +#if defined(MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC) + +/** Constant-flow mask generation for "less than" comparison: + * - if \p x < \p y, return all-bits 1, that is (size_t) -1 + * - otherwise, return all bits 0, that is 0 + * + * This function can be used to write constant-time code by replacing branches + * with bit operations using masks. + * + * \param x The first value to analyze. + * \param y The second value to analyze. + * + * \return All-bits-one if \p x is less than \p y, otherwise zero. + */ +static size_t mbedtls_ct_size_mask_lt( size_t x, + size_t y ) +{ + /* This has the most significant bit set if and only if x < y */ + const size_t sub = x - y; + + /* sub1 = (x < y) ? 1 : 0 */ + const size_t sub1 = sub >> ( sizeof( sub ) * 8 - 1 ); + + /* mask = (x < y) ? 0xff... : 0x00... */ + const size_t mask = mbedtls_ct_size_mask( sub1 ); + + return( mask ); +} + +size_t mbedtls_ct_size_mask_ge( size_t x, + size_t y ) +{ + return( ~mbedtls_ct_size_mask_lt( x, y ) ); +} + +#endif /* MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC */ + +#if defined(MBEDTLS_BASE64_C) + +/* Return 0xff if low <= c <= high, 0 otherwise. + * + * Constant flow with respect to c. + */ +MBEDTLS_STATIC_TESTABLE +unsigned char mbedtls_ct_uchar_mask_of_range( unsigned char low, + unsigned char high, + unsigned char c ) +{ + /* low_mask is: 0 if low <= c, 0x...ff if low > c */ + unsigned low_mask = ( (unsigned) c - low ) >> 8; + /* high_mask is: 0 if c <= high, 0x...ff if c > high */ + unsigned high_mask = ( (unsigned) high - c ) >> 8; + return( ~( low_mask | high_mask ) & 0xff ); +} + +#endif /* MBEDTLS_BASE64_C */ + +unsigned mbedtls_ct_size_bool_eq( size_t x, + size_t y ) +{ + /* diff = 0 if x == y, non-zero otherwise */ + const size_t diff = x ^ y; + + /* MSVC has a warning about unary minus on unsigned integer types, + * but this is well-defined and precisely what we want to do here. */ +#if defined(_MSC_VER) +#pragma warning( push ) +#pragma warning( disable : 4146 ) +#endif + + /* diff_msb's most significant bit is equal to x != y */ + const size_t diff_msb = ( diff | (size_t) -diff ); + +#if defined(_MSC_VER) +#pragma warning( pop ) +#endif + + /* diff1 = (x != y) ? 1 : 0 */ + const unsigned diff1 = diff_msb >> ( sizeof( diff_msb ) * 8 - 1 ); + + return( 1 ^ diff1 ); +} + +#if defined(MBEDTLS_PKCS1_V15) && defined(MBEDTLS_RSA_C) && !defined(MBEDTLS_RSA_ALT) + +/** Constant-flow "greater than" comparison: + * return x > y + * + * This is equivalent to \p x > \p y, but is likely to be compiled + * to code using bitwise operation rather than a branch. + * + * \param x The first value to analyze. + * \param y The second value to analyze. + * + * \return 1 if \p x greater than \p y, otherwise 0. + */ +static unsigned mbedtls_ct_size_gt( size_t x, + size_t y ) +{ + /* Return the sign bit (1 for negative) of (y - x). */ + return( ( y - x ) >> ( sizeof( size_t ) * 8 - 1 ) ); +} + +#endif /* MBEDTLS_PKCS1_V15 && MBEDTLS_RSA_C && ! MBEDTLS_RSA_ALT */ + +#if defined(MBEDTLS_BIGNUM_C) + +unsigned mbedtls_ct_mpi_uint_lt( const mbedtls_mpi_uint x, + const mbedtls_mpi_uint y ) +{ + mbedtls_mpi_uint ret; + mbedtls_mpi_uint cond; + + /* + * Check if the most significant bits (MSB) of the operands are different. + */ + cond = ( x ^ y ); + /* + * If the MSB are the same then the difference x-y will be negative (and + * have its MSB set to 1 during conversion to unsigned) if and only if x> ( sizeof( mbedtls_mpi_uint ) * 8 - 1 ); + + return (unsigned) ret; +} + +#endif /* MBEDTLS_BIGNUM_C */ + +unsigned mbedtls_ct_uint_if( unsigned condition, + unsigned if1, + unsigned if0 ) +{ + unsigned mask = mbedtls_ct_uint_mask( condition ); + return( ( mask & if1 ) | (~mask & if0 ) ); +} + +#if defined(MBEDTLS_BIGNUM_C) + +/** Select between two sign values without branches. + * + * This is functionally equivalent to `condition ? if1 : if0` but uses only bit + * operations in order to avoid branches. + * + * \note if1 and if0 must be either 1 or -1, otherwise the result + * is undefined. + * + * \param condition Condition to test. + * \param if1 The first sign; must be either +1 or -1. + * \param if0 The second sign; must be either +1 or -1. + * + * \return \c if1 if \p condition is nonzero, otherwise \c if0. + * */ +static int mbedtls_ct_cond_select_sign( unsigned char condition, + int if1, + int if0 ) +{ + /* In order to avoid questions about what we can reasonably assume about + * the representations of signed integers, move everything to unsigned + * by taking advantage of the fact that if1 and if0 are either +1 or -1. */ + unsigned uif1 = if1 + 1; + unsigned uif0 = if0 + 1; + + /* condition was 0 or 1, mask is 0 or 2 as are uif1 and uif0 */ + const unsigned mask = condition << 1; + + /* select uif1 or uif0 */ + unsigned ur = ( uif0 & ~mask ) | ( uif1 & mask ); + + /* ur is now 0 or 2, convert back to -1 or +1 */ + return( (int) ur - 1 ); +} + +void mbedtls_ct_mpi_uint_cond_assign( size_t n, + mbedtls_mpi_uint *dest, + const mbedtls_mpi_uint *src, + unsigned char condition ) +{ + size_t i; + + /* MSVC has a warning about unary minus on unsigned integer types, + * but this is well-defined and precisely what we want to do here. */ +#if defined(_MSC_VER) +#pragma warning( push ) +#pragma warning( disable : 4146 ) +#endif + + /* all-bits 1 if condition is 1, all-bits 0 if condition is 0 */ + const mbedtls_mpi_uint mask = -condition; + +#if defined(_MSC_VER) +#pragma warning( pop ) +#endif + + for( i = 0; i < n; i++ ) + dest[i] = ( src[i] & mask ) | ( dest[i] & ~mask ); +} + +#endif /* MBEDTLS_BIGNUM_C */ + +#if defined(MBEDTLS_BASE64_C) + +unsigned char mbedtls_ct_base64_enc_char( unsigned char value ) +{ + unsigned char digit = 0; + /* For each range of values, if value is in that range, mask digit with + * the corresponding value. Since value can only be in a single range, + * only at most one masking will change digit. */ + digit |= mbedtls_ct_uchar_mask_of_range( 0, 25, value ) & ( 'A' + value ); + digit |= mbedtls_ct_uchar_mask_of_range( 26, 51, value ) & ( 'a' + value - 26 ); + digit |= mbedtls_ct_uchar_mask_of_range( 52, 61, value ) & ( '0' + value - 52 ); + digit |= mbedtls_ct_uchar_mask_of_range( 62, 62, value ) & '+'; + digit |= mbedtls_ct_uchar_mask_of_range( 63, 63, value ) & '/'; + return( digit ); +} + +signed char mbedtls_ct_base64_dec_value( unsigned char c ) +{ + unsigned char val = 0; + /* For each range of digits, if c is in that range, mask val with + * the corresponding value. Since c can only be in a single range, + * only at most one masking will change val. Set val to one plus + * the desired value so that it stays 0 if c is in none of the ranges. */ + val |= mbedtls_ct_uchar_mask_of_range( 'A', 'Z', c ) & ( c - 'A' + 0 + 1 ); + val |= mbedtls_ct_uchar_mask_of_range( 'a', 'z', c ) & ( c - 'a' + 26 + 1 ); + val |= mbedtls_ct_uchar_mask_of_range( '0', '9', c ) & ( c - '0' + 52 + 1 ); + val |= mbedtls_ct_uchar_mask_of_range( '+', '+', c ) & ( c - '+' + 62 + 1 ); + val |= mbedtls_ct_uchar_mask_of_range( '/', '/', c ) & ( c - '/' + 63 + 1 ); + /* At this point, val is 0 if c is an invalid digit and v+1 if c is + * a digit with the value v. */ + return( val - 1 ); +} + +#endif /* MBEDTLS_BASE64_C */ + +#if defined(MBEDTLS_PKCS1_V15) && defined(MBEDTLS_RSA_C) && !defined(MBEDTLS_RSA_ALT) + +/** Shift some data towards the left inside a buffer. + * + * `mbedtls_ct_mem_move_to_left(start, total, offset)` is functionally + * equivalent to + * ``` + * memmove(start, start + offset, total - offset); + * memset(start + offset, 0, total - offset); + * ``` + * but it strives to use a memory access pattern (and thus total timing) + * that does not depend on \p offset. This timing independence comes at + * the expense of performance. + * + * \param start Pointer to the start of the buffer. + * \param total Total size of the buffer. + * \param offset Offset from which to copy \p total - \p offset bytes. + */ +static void mbedtls_ct_mem_move_to_left( void *start, + size_t total, + size_t offset ) +{ + volatile unsigned char *buf = start; + size_t i, n; + if( total == 0 ) + return; + for( i = 0; i < total; i++ ) + { + unsigned no_op = mbedtls_ct_size_gt( total - offset, i ); + /* The first `total - offset` passes are a no-op. The last + * `offset` passes shift the data one byte to the left and + * zero out the last byte. */ + for( n = 0; n < total - 1; n++ ) + { + unsigned char current = buf[n]; + unsigned char next = buf[n+1]; + buf[n] = mbedtls_ct_uint_if( no_op, current, next ); + } + buf[total-1] = mbedtls_ct_uint_if( no_op, buf[total-1], 0 ); + } +} + +#endif /* MBEDTLS_PKCS1_V15 && MBEDTLS_RSA_C && ! MBEDTLS_RSA_ALT */ + +#if defined(MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC) + +void mbedtls_ct_memcpy_if_eq( unsigned char *dest, + const unsigned char *src, + size_t len, + size_t c1, + size_t c2 ) +{ + /* mask = c1 == c2 ? 0xff : 0x00 */ + const size_t equal = mbedtls_ct_size_bool_eq( c1, c2 ); + const unsigned char mask = (unsigned char) mbedtls_ct_size_mask( equal ); + + /* dest[i] = c1 == c2 ? src[i] : dest[i] */ + for( size_t i = 0; i < len; i++ ) + dest[i] = ( src[i] & mask ) | ( dest[i] & ~mask ); +} + +void mbedtls_ct_memcpy_offset( unsigned char *dest, + const unsigned char *src, + size_t offset, + size_t offset_min, + size_t offset_max, + size_t len ) +{ + size_t offsetval; + + for( offsetval = offset_min; offsetval <= offset_max; offsetval++ ) + { + mbedtls_ct_memcpy_if_eq( dest, src + offsetval, len, + offsetval, offset ); + } +} + +int mbedtls_ct_hmac( mbedtls_md_context_t *ctx, + const unsigned char *add_data, + size_t add_data_len, + const unsigned char *data, + size_t data_len_secret, + size_t min_data_len, + size_t max_data_len, + unsigned char *output ) +{ + /* + * This function breaks the HMAC abstraction and uses the md_clone() + * extension to the MD API in order to get constant-flow behaviour. + * + * HMAC(msg) is defined as HASH(okey + HASH(ikey + msg)) where + means + * concatenation, and okey/ikey are the XOR of the key with some fixed bit + * patterns (see RFC 2104, sec. 2), which are stored in ctx->hmac_ctx. + * + * We'll first compute inner_hash = HASH(ikey + msg) by hashing up to + * minlen, then cloning the context, and for each byte up to maxlen + * finishing up the hash computation, keeping only the correct result. + * + * Then we only need to compute HASH(okey + inner_hash) and we're done. + */ + const mbedtls_md_type_t md_alg = mbedtls_md_get_type( ctx->md_info ); + /* TLS 1.0-1.2 only support SHA-384, SHA-256, SHA-1, MD-5, + * all of which have the same block size except SHA-384. */ + const size_t block_size = md_alg == MBEDTLS_MD_SHA384 ? 128 : 64; + const unsigned char * const ikey = ctx->hmac_ctx; + const unsigned char * const okey = ikey + block_size; + const size_t hash_size = mbedtls_md_get_size( ctx->md_info ); + + unsigned char aux_out[MBEDTLS_MD_MAX_SIZE]; + mbedtls_md_context_t aux; + size_t offset; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + mbedtls_md_init( &aux ); + +#define MD_CHK( func_call ) \ + do { \ + ret = (func_call); \ + if( ret != 0 ) \ + goto cleanup; \ + } while( 0 ) + + MD_CHK( mbedtls_md_setup( &aux, ctx->md_info, 0 ) ); + + /* After hmac_start() of hmac_reset(), ikey has already been hashed, + * so we can start directly with the message */ + MD_CHK( mbedtls_md_update( ctx, add_data, add_data_len ) ); + MD_CHK( mbedtls_md_update( ctx, data, min_data_len ) ); + + /* For each possible length, compute the hash up to that point */ + for( offset = min_data_len; offset <= max_data_len; offset++ ) + { + MD_CHK( mbedtls_md_clone( &aux, ctx ) ); + MD_CHK( mbedtls_md_finish( &aux, aux_out ) ); + /* Keep only the correct inner_hash in the output buffer */ + mbedtls_ct_memcpy_if_eq( output, aux_out, hash_size, + offset, data_len_secret ); + + if( offset < max_data_len ) + MD_CHK( mbedtls_md_update( ctx, data + offset, 1 ) ); + } + + /* The context needs to finish() before it starts() again */ + MD_CHK( mbedtls_md_finish( ctx, aux_out ) ); + + /* Now compute HASH(okey + inner_hash) */ + MD_CHK( mbedtls_md_starts( ctx ) ); + MD_CHK( mbedtls_md_update( ctx, okey, block_size ) ); + MD_CHK( mbedtls_md_update( ctx, output, hash_size ) ); + MD_CHK( mbedtls_md_finish( ctx, output ) ); + + /* Done, get ready for next time */ + MD_CHK( mbedtls_md_hmac_reset( ctx ) ); + +#undef MD_CHK + +cleanup: + mbedtls_md_free( &aux ); + return( ret ); +} + +#endif /* MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC */ + +#if defined(MBEDTLS_BIGNUM_C) + +#define MPI_VALIDATE_RET( cond ) \ + MBEDTLS_INTERNAL_VALIDATE_RET( cond, MBEDTLS_ERR_MPI_BAD_INPUT_DATA ) + +/* + * Conditionally assign X = Y, without leaking information + * about whether the assignment was made or not. + * (Leaking information about the respective sizes of X and Y is ok however.) + */ +int mbedtls_mpi_safe_cond_assign( mbedtls_mpi *X, + const mbedtls_mpi *Y, + unsigned char assign ) +{ + int ret = 0; + size_t i; + mbedtls_mpi_uint limb_mask; + MPI_VALIDATE_RET( X != NULL ); + MPI_VALIDATE_RET( Y != NULL ); + + /* all-bits 1 if assign is 1, all-bits 0 if assign is 0 */ + limb_mask = mbedtls_ct_mpi_uint_mask( assign );; + + MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, Y->n ) ); + + X->s = mbedtls_ct_cond_select_sign( assign, Y->s, X->s ); + + mbedtls_ct_mpi_uint_cond_assign( Y->n, X->p, Y->p, assign ); + + for( i = Y->n; i < X->n; i++ ) + X->p[i] &= ~limb_mask; + +cleanup: + return( ret ); +} + +/* + * Conditionally swap X and Y, without leaking information + * about whether the swap was made or not. + * Here it is not ok to simply swap the pointers, which whould lead to + * different memory access patterns when X and Y are used afterwards. + */ +int mbedtls_mpi_safe_cond_swap( mbedtls_mpi *X, + mbedtls_mpi *Y, + unsigned char swap ) +{ + int ret, s; + size_t i; + mbedtls_mpi_uint limb_mask; + mbedtls_mpi_uint tmp; + MPI_VALIDATE_RET( X != NULL ); + MPI_VALIDATE_RET( Y != NULL ); + + if( X == Y ) + return( 0 ); + + /* all-bits 1 if swap is 1, all-bits 0 if swap is 0 */ + limb_mask = mbedtls_ct_mpi_uint_mask( swap ); + + MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, Y->n ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_grow( Y, X->n ) ); + + s = X->s; + X->s = mbedtls_ct_cond_select_sign( swap, Y->s, X->s ); + Y->s = mbedtls_ct_cond_select_sign( swap, s, Y->s ); + + + for( i = 0; i < X->n; i++ ) + { + tmp = X->p[i]; + X->p[i] = ( X->p[i] & ~limb_mask ) | ( Y->p[i] & limb_mask ); + Y->p[i] = ( Y->p[i] & ~limb_mask ) | ( tmp & limb_mask ); + } + +cleanup: + return( ret ); +} + +/* + * Compare signed values in constant time + */ +int mbedtls_mpi_lt_mpi_ct( const mbedtls_mpi *X, + const mbedtls_mpi *Y, + unsigned *ret ) +{ + size_t i; + /* The value of any of these variables is either 0 or 1 at all times. */ + unsigned cond, done, X_is_negative, Y_is_negative; + + MPI_VALIDATE_RET( X != NULL ); + MPI_VALIDATE_RET( Y != NULL ); + MPI_VALIDATE_RET( ret != NULL ); + + if( X->n != Y->n ) + return MBEDTLS_ERR_MPI_BAD_INPUT_DATA; + + /* + * Set sign_N to 1 if N >= 0, 0 if N < 0. + * We know that N->s == 1 if N >= 0 and N->s == -1 if N < 0. + */ + X_is_negative = ( X->s & 2 ) >> 1; + Y_is_negative = ( Y->s & 2 ) >> 1; + + /* + * If the signs are different, then the positive operand is the bigger. + * That is if X is negative (X_is_negative == 1), then X < Y is true and it + * is false if X is positive (X_is_negative == 0). + */ + cond = ( X_is_negative ^ Y_is_negative ); + *ret = cond & X_is_negative; + + /* + * This is a constant-time function. We might have the result, but we still + * need to go through the loop. Record if we have the result already. + */ + done = cond; + + for( i = X->n; i > 0; i-- ) + { + /* + * If Y->p[i - 1] < X->p[i - 1] then X < Y is true if and only if both + * X and Y are negative. + * + * Again even if we can make a decision, we just mark the result and + * the fact that we are done and continue looping. + */ + cond = mbedtls_ct_mpi_uint_lt( Y->p[i - 1], X->p[i - 1] ); + *ret |= cond & ( 1 - done ) & X_is_negative; + done |= cond; + + /* + * If X->p[i - 1] < Y->p[i - 1] then X < Y is true if and only if both + * X and Y are positive. + * + * Again even if we can make a decision, we just mark the result and + * the fact that we are done and continue looping. + */ + cond = mbedtls_ct_mpi_uint_lt( X->p[i - 1], Y->p[i - 1] ); + *ret |= cond & ( 1 - done ) & ( 1 - X_is_negative ); + done |= cond; + } + + return( 0 ); +} + +#endif /* MBEDTLS_BIGNUM_C */ + +#if defined(MBEDTLS_PKCS1_V15) && defined(MBEDTLS_RSA_C) && !defined(MBEDTLS_RSA_ALT) + +int mbedtls_ct_rsaes_pkcs1_v15_unpadding( int mode, + unsigned char *input, + size_t ilen, + unsigned char *output, + size_t output_max_len, + size_t *olen ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t i, plaintext_max_size; + + /* The following variables take sensitive values: their value must + * not leak into the observable behavior of the function other than + * the designated outputs (output, olen, return value). Otherwise + * this would open the execution of the function to + * side-channel-based variants of the Bleichenbacher padding oracle + * attack. Potential side channels include overall timing, memory + * access patterns (especially visible to an adversary who has access + * to a shared memory cache), and branches (especially visible to + * an adversary who has access to a shared code cache or to a shared + * branch predictor). */ + size_t pad_count = 0; + unsigned bad = 0; + unsigned char pad_done = 0; + size_t plaintext_size = 0; + unsigned output_too_large; + + plaintext_max_size = ( output_max_len > ilen - 11 ) ? ilen - 11 + : output_max_len; + + /* Check and get padding length in constant time and constant + * memory trace. The first byte must be 0. */ + bad |= input[0]; + + if( mode == MBEDTLS_RSA_PRIVATE ) + { + /* Decode EME-PKCS1-v1_5 padding: 0x00 || 0x02 || PS || 0x00 + * where PS must be at least 8 nonzero bytes. */ + bad |= input[1] ^ MBEDTLS_RSA_CRYPT; + + /* Read the whole buffer. Set pad_done to nonzero if we find + * the 0x00 byte and remember the padding length in pad_count. */ + for( i = 2; i < ilen; i++ ) + { + pad_done |= ((input[i] | (unsigned char)-input[i]) >> 7) ^ 1; + pad_count += ((pad_done | (unsigned char)-pad_done) >> 7) ^ 1; + } + } + else + { + /* Decode EMSA-PKCS1-v1_5 padding: 0x00 || 0x01 || PS || 0x00 + * where PS must be at least 8 bytes with the value 0xFF. */ + bad |= input[1] ^ MBEDTLS_RSA_SIGN; + + /* Read the whole buffer. Set pad_done to nonzero if we find + * the 0x00 byte and remember the padding length in pad_count. + * If there's a non-0xff byte in the padding, the padding is bad. */ + for( i = 2; i < ilen; i++ ) + { + pad_done |= mbedtls_ct_uint_if( input[i], 0, 1 ); + pad_count += mbedtls_ct_uint_if( pad_done, 0, 1 ); + bad |= mbedtls_ct_uint_if( pad_done, 0, input[i] ^ 0xFF ); + } + } + + /* If pad_done is still zero, there's no data, only unfinished padding. */ + bad |= mbedtls_ct_uint_if( pad_done, 0, 1 ); + + /* There must be at least 8 bytes of padding. */ + bad |= mbedtls_ct_size_gt( 8, pad_count ); + + /* If the padding is valid, set plaintext_size to the number of + * remaining bytes after stripping the padding. If the padding + * is invalid, avoid leaking this fact through the size of the + * output: use the maximum message size that fits in the output + * buffer. Do it without branches to avoid leaking the padding + * validity through timing. RSA keys are small enough that all the + * size_t values involved fit in unsigned int. */ + plaintext_size = mbedtls_ct_uint_if( + bad, (unsigned) plaintext_max_size, + (unsigned) ( ilen - pad_count - 3 ) ); + + /* Set output_too_large to 0 if the plaintext fits in the output + * buffer and to 1 otherwise. */ + output_too_large = mbedtls_ct_size_gt( plaintext_size, + plaintext_max_size ); + + /* Set ret without branches to avoid timing attacks. Return: + * - INVALID_PADDING if the padding is bad (bad != 0). + * - OUTPUT_TOO_LARGE if the padding is good but the decrypted + * plaintext does not fit in the output buffer. + * - 0 if the padding is correct. */ + ret = - (int) mbedtls_ct_uint_if( + bad, - MBEDTLS_ERR_RSA_INVALID_PADDING, + mbedtls_ct_uint_if( output_too_large, + - MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE, + 0 ) ); + + /* If the padding is bad or the plaintext is too large, zero the + * data that we're about to copy to the output buffer. + * We need to copy the same amount of data + * from the same buffer whether the padding is good or not to + * avoid leaking the padding validity through overall timing or + * through memory or cache access patterns. */ + bad = mbedtls_ct_uint_mask( bad | output_too_large ); + for( i = 11; i < ilen; i++ ) + input[i] &= ~bad; + + /* If the plaintext is too large, truncate it to the buffer size. + * Copy anyway to avoid revealing the length through timing, because + * revealing the length is as bad as revealing the padding validity + * for a Bleichenbacher attack. */ + plaintext_size = mbedtls_ct_uint_if( output_too_large, + (unsigned) plaintext_max_size, + (unsigned) plaintext_size ); + + /* Move the plaintext to the leftmost position where it can start in + * the working buffer, i.e. make it start plaintext_max_size from + * the end of the buffer. Do this with a memory access trace that + * does not depend on the plaintext size. After this move, the + * starting location of the plaintext is no longer sensitive + * information. */ + mbedtls_ct_mem_move_to_left( input + ilen - plaintext_max_size, + plaintext_max_size, + plaintext_max_size - plaintext_size ); + + /* Finally copy the decrypted plaintext plus trailing zeros into the output + * buffer. If output_max_len is 0, then output may be an invalid pointer + * and the result of memcpy() would be undefined; prevent undefined + * behavior making sure to depend only on output_max_len (the size of the + * user-provided output buffer), which is independent from plaintext + * length, validity of padding, success of the decryption, and other + * secrets. */ + if( output_max_len != 0 ) + memcpy( output, input + ilen - plaintext_max_size, plaintext_max_size ); + + /* Report the amount of data we copied to the output buffer. In case + * of errors (bad padding or output too large), the value of *olen + * when this function returns is not specified. Making it equivalent + * to the good case limits the risks of leaking the padding validity. */ + *olen = plaintext_size; + + return( ret ); +} + +#endif /* MBEDTLS_PKCS1_V15 && MBEDTLS_RSA_C && ! MBEDTLS_RSA_ALT */ diff --git a/Externals/mbedtls/library/constant_time_internal.h b/Externals/mbedtls/library/constant_time_internal.h new file mode 100644 index 000000000000..bbb3a9067090 --- /dev/null +++ b/Externals/mbedtls/library/constant_time_internal.h @@ -0,0 +1,329 @@ +/** + * Constant-time functions + * + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBEDTLS_CONSTANT_TIME_INTERNAL_H +#define MBEDTLS_CONSTANT_TIME_INTERNAL_H + +#include "common.h" + +#if defined(MBEDTLS_BIGNUM_C) +#include "mbedtls/bignum.h" +#endif + +#if defined(MBEDTLS_SSL_TLS_C) +#include "mbedtls/ssl_internal.h" +#endif + +#include + + +/** Turn a value into a mask: + * - if \p value == 0, return the all-bits 0 mask, aka 0 + * - otherwise, return the all-bits 1 mask, aka (unsigned) -1 + * + * This function can be used to write constant-time code by replacing branches + * with bit operations using masks. + * + * \param value The value to analyze. + * + * \return Zero if \p value is zero, otherwise all-bits-one. + */ +unsigned mbedtls_ct_uint_mask( unsigned value ); + +#if defined(MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC) + +/** Turn a value into a mask: + * - if \p value == 0, return the all-bits 0 mask, aka 0 + * - otherwise, return the all-bits 1 mask, aka (size_t) -1 + * + * This function can be used to write constant-time code by replacing branches + * with bit operations using masks. + * + * \param value The value to analyze. + * + * \return Zero if \p value is zero, otherwise all-bits-one. + */ +size_t mbedtls_ct_size_mask( size_t value ); + +#endif /* MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC */ + +#if defined(MBEDTLS_BIGNUM_C) + +/** Turn a value into a mask: + * - if \p value == 0, return the all-bits 0 mask, aka 0 + * - otherwise, return the all-bits 1 mask, aka (mbedtls_mpi_uint) -1 + * + * This function can be used to write constant-time code by replacing branches + * with bit operations using masks. + * + * \param value The value to analyze. + * + * \return Zero if \p value is zero, otherwise all-bits-one. + */ +mbedtls_mpi_uint mbedtls_ct_mpi_uint_mask( mbedtls_mpi_uint value ); + +#endif /* MBEDTLS_BIGNUM_C */ + +#if defined(MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC) + +/** Constant-flow mask generation for "greater or equal" comparison: + * - if \p x >= \p y, return all-bits 1, that is (size_t) -1 + * - otherwise, return all bits 0, that is 0 + * + * This function can be used to write constant-time code by replacing branches + * with bit operations using masks. + * + * \param x The first value to analyze. + * \param y The second value to analyze. + * + * \return All-bits-one if \p x is greater or equal than \p y, + * otherwise zero. + */ +size_t mbedtls_ct_size_mask_ge( size_t x, + size_t y ); + +#endif /* MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC */ + +/** Constant-flow boolean "equal" comparison: + * return x == y + * + * This is equivalent to \p x == \p y, but is likely to be compiled + * to code using bitwise operation rather than a branch. + * + * \param x The first value to analyze. + * \param y The second value to analyze. + * + * \return 1 if \p x equals to \p y, otherwise 0. + */ +unsigned mbedtls_ct_size_bool_eq( size_t x, + size_t y ); + +#if defined(MBEDTLS_BIGNUM_C) + +/** Decide if an integer is less than the other, without branches. + * + * This is equivalent to \p x < \p y, but is likely to be compiled + * to code using bitwise operation rather than a branch. + * + * \param x The first value to analyze. + * \param y The second value to analyze. + * + * \return 1 if \p x is less than \p y, otherwise 0. + */ +unsigned mbedtls_ct_mpi_uint_lt( const mbedtls_mpi_uint x, + const mbedtls_mpi_uint y ); + +#endif /* MBEDTLS_BIGNUM_C */ + +/** Choose between two integer values without branches. + * + * This is equivalent to `condition ? if1 : if0`, but is likely to be compiled + * to code using bitwise operation rather than a branch. + * + * \param condition Condition to test. + * \param if1 Value to use if \p condition is nonzero. + * \param if0 Value to use if \p condition is zero. + * + * \return \c if1 if \p condition is nonzero, otherwise \c if0. + */ +unsigned mbedtls_ct_uint_if( unsigned condition, + unsigned if1, + unsigned if0 ); + +#if defined(MBEDTLS_BIGNUM_C) + +/** Conditionally assign a value without branches. + * + * This is equivalent to `if ( condition ) dest = src`, but is likely + * to be compiled to code using bitwise operation rather than a branch. + * + * \param n \p dest and \p src must be arrays of limbs of size n. + * \param dest The MPI to conditionally assign to. This must point + * to an initialized MPI. + * \param src The MPI to be assigned from. This must point to an + * initialized MPI. + * \param condition Condition to test, must be 0 or 1. + */ +void mbedtls_ct_mpi_uint_cond_assign( size_t n, + mbedtls_mpi_uint *dest, + const mbedtls_mpi_uint *src, + unsigned char condition ); + +#endif /* MBEDTLS_BIGNUM_C */ + +#if defined(MBEDTLS_BASE64_C) + +/** Given a value in the range 0..63, return the corresponding Base64 digit. + * + * The implementation assumes that letters are consecutive (e.g. ASCII + * but not EBCDIC). + * + * \param value A value in the range 0..63. + * + * \return A base64 digit converted from \p value. + */ +unsigned char mbedtls_ct_base64_enc_char( unsigned char value ); + +/** Given a Base64 digit, return its value. + * + * If c is not a Base64 digit ('A'..'Z', 'a'..'z', '0'..'9', '+' or '/'), + * return -1. + * + * The implementation assumes that letters are consecutive (e.g. ASCII + * but not EBCDIC). + * + * \param c A base64 digit. + * + * \return The value of the base64 digit \p c. + */ +signed char mbedtls_ct_base64_dec_value( unsigned char c ); + +#endif /* MBEDTLS_BASE64_C */ + +#if defined(MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC) + +/** Conditional memcpy without branches. + * + * This is equivalent to `if ( c1 == c2 ) memcpy(dest, src, len)`, but is likely + * to be compiled to code using bitwise operation rather than a branch. + * + * \param dest The pointer to conditionally copy to. + * \param src The pointer to copy from. Shouldn't overlap with \p dest. + * \param len The number of bytes to copy. + * \param c1 The first value to analyze in the condition. + * \param c2 The second value to analyze in the condition. + */ +void mbedtls_ct_memcpy_if_eq( unsigned char *dest, + const unsigned char *src, + size_t len, + size_t c1, size_t c2 ); + +/** Copy data from a secret position with constant flow. + * + * This function copies \p len bytes from \p src_base + \p offset_secret to \p + * dst, with a code flow and memory access pattern that does not depend on \p + * offset_secret, but only on \p offset_min, \p offset_max and \p len. + * Functionally equivalent to `memcpy(dst, src + offset_secret, len)`. + * + * \param dest The destination buffer. This must point to a writable + * buffer of at least \p len bytes. + * \param src The base of the source buffer. This must point to a + * readable buffer of at least \p offset_max + \p len + * bytes. Shouldn't overlap with \p dest. + * \param offset The offset in the source buffer from which to copy. + * This must be no less than \p offset_min and no greater + * than \p offset_max. + * \param offset_min The minimal value of \p offset. + * \param offset_max The maximal value of \p offset. + * \param len The number of bytes to copy. + */ +void mbedtls_ct_memcpy_offset( unsigned char *dest, + const unsigned char *src, + size_t offset, + size_t offset_min, + size_t offset_max, + size_t len ); + +/** Compute the HMAC of variable-length data with constant flow. + * + * This function computes the HMAC of the concatenation of \p add_data and \p + * data, and does with a code flow and memory access pattern that does not + * depend on \p data_len_secret, but only on \p min_data_len and \p + * max_data_len. In particular, this function always reads exactly \p + * max_data_len bytes from \p data. + * + * \param ctx The HMAC context. It must have keys configured + * with mbedtls_md_hmac_starts() and use one of the + * following hashes: SHA-384, SHA-256, SHA-1 or MD-5. + * It is reset using mbedtls_md_hmac_reset() after + * the computation is complete to prepare for the + * next computation. + * \param add_data The first part of the message whose HMAC is being + * calculated. This must point to a readable buffer + * of \p add_data_len bytes. + * \param add_data_len The length of \p add_data in bytes. + * \param data The buffer containing the second part of the + * message. This must point to a readable buffer + * of \p max_data_len bytes. + * \param data_len_secret The length of the data to process in \p data. + * This must be no less than \p min_data_len and no + * greater than \p max_data_len. + * \param min_data_len The minimal length of the second part of the + * message, read from \p data. + * \param max_data_len The maximal length of the second part of the + * message, read from \p data. + * \param output The HMAC will be written here. This must point to + * a writable buffer of sufficient size to hold the + * HMAC value. + * + * \retval 0 on success. + * \retval #MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED + * The hardware accelerator failed. + */ +int mbedtls_ct_hmac( mbedtls_md_context_t *ctx, + const unsigned char *add_data, + size_t add_data_len, + const unsigned char *data, + size_t data_len_secret, + size_t min_data_len, + size_t max_data_len, + unsigned char *output ); + +#endif /* MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC */ + +#if defined(MBEDTLS_PKCS1_V15) && defined(MBEDTLS_RSA_C) && !defined(MBEDTLS_RSA_ALT) + +/** This function performs the unpadding part of a PKCS#1 v1.5 decryption + * operation (EME-PKCS1-v1_5 decoding). + * + * \note The return value from this function is a sensitive value + * (this is unusual). #MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE shouldn't happen + * in a well-written application, but 0 vs #MBEDTLS_ERR_RSA_INVALID_PADDING + * is often a situation that an attacker can provoke and leaking which + * one is the result is precisely the information the attacker wants. + * + * \param mode The mode of operation. This must be either + * #MBEDTLS_RSA_PRIVATE or #MBEDTLS_RSA_PUBLIC (deprecated). + * \param input The input buffer which is the payload inside PKCS#1v1.5 + * encryption padding, called the "encoded message EM" + * by the terminology. + * \param ilen The length of the payload in the \p input buffer. + * \param output The buffer for the payload, called "message M" by the + * PKCS#1 terminology. This must be a writable buffer of + * length \p output_max_len bytes. + * \param olen The address at which to store the length of + * the payload. This must not be \c NULL. + * \param output_max_len The length in bytes of the output buffer \p output. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE + * The output buffer is too small for the unpadded payload. + * \return #MBEDTLS_ERR_RSA_INVALID_PADDING + * The input doesn't contain properly formatted padding. + */ +int mbedtls_ct_rsaes_pkcs1_v15_unpadding( int mode, + unsigned char *input, + size_t ilen, + unsigned char *output, + size_t output_max_len, + size_t *olen ); + +#endif /* MBEDTLS_PKCS1_V15 && MBEDTLS_RSA_C && ! MBEDTLS_RSA_ALT */ + +#endif /* MBEDTLS_CONSTANT_TIME_INTERNAL_H */ diff --git a/Externals/mbedtls/library/constant_time_invasive.h b/Externals/mbedtls/library/constant_time_invasive.h new file mode 100644 index 000000000000..4620ca137999 --- /dev/null +++ b/Externals/mbedtls/library/constant_time_invasive.h @@ -0,0 +1,51 @@ +/** + * \file constant_time_invasive.h + * + * \brief Constant-time module: interfaces for invasive testing only. + * + * The interfaces in this file are intended for testing purposes only. + * They SHOULD NOT be made available in library integrations except when + * building the library for testing. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBEDTLS_CONSTANT_TIME_INVASIVE_H +#define MBEDTLS_CONSTANT_TIME_INVASIVE_H + +#include "common.h" + +#if defined(MBEDTLS_TEST_HOOKS) + +/** Turn a value into a mask: + * - if \p low <= \p c <= \p high, + * return the all-bits 1 mask, aka (unsigned) -1 + * - otherwise, return the all-bits 0 mask, aka 0 + * + * \param low The value to analyze. + * \param high The value to analyze. + * \param c The value to analyze. + * + * \return All-bits-one if \p low <= \p c <= \p high, otherwise zero. + */ +unsigned char mbedtls_ct_uchar_mask_of_range( unsigned char low, + unsigned char high, + unsigned char c ); + +#endif /* MBEDTLS_TEST_HOOKS */ + +#endif /* MBEDTLS_CONSTANT_TIME_INVASIVE_H */ diff --git a/Externals/mbedtls/library/ctr_drbg.c b/Externals/mbedtls/library/ctr_drbg.c index fb121575bbbe..a604ec0761a6 100644 --- a/Externals/mbedtls/library/ctr_drbg.c +++ b/Externals/mbedtls/library/ctr_drbg.c @@ -1,7 +1,7 @@ /* * CTR_DRBG implementation based on AES-256 (NIST SP 800-90) * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The NIST SP 800-90 DRBGs are described in the following publication. @@ -24,16 +22,13 @@ * http://csrc.nist.gov/publications/nistpubs/800-90/SP800-90revised_March2007.pdf */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_CTR_DRBG_C) #include "mbedtls/ctr_drbg.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -56,97 +51,73 @@ void mbedtls_ctr_drbg_init( mbedtls_ctr_drbg_context *ctx ) { memset( ctx, 0, sizeof( mbedtls_ctr_drbg_context ) ); + /* Indicate that the entropy nonce length is not set explicitly. + * See mbedtls_ctr_drbg_set_nonce_len(). */ + ctx->reseed_counter = -1; -#if defined(MBEDTLS_THREADING_C) - mbedtls_mutex_init( &ctx->mutex ); -#endif + ctx->reseed_interval = MBEDTLS_CTR_DRBG_RESEED_INTERVAL; } /* - * Non-public function wrapped by mbedtls_ctr_drbg_seed(). Necessary to allow - * NIST tests to succeed (which require known length fixed entropy) + * This function resets CTR_DRBG context to the state immediately + * after initial call of mbedtls_ctr_drbg_init(). */ -/* CTR_DRBG_Instantiate with derivation function (SP 800-90A §10.2.1.3.2) - * mbedtls_ctr_drbg_seed_entropy_len(ctx, f_entropy, p_entropy, - * custom, len, entropy_len) - * implements - * CTR_DRBG_Instantiate(entropy_input, nonce, personalization_string, - * security_strength) -> initial_working_state - * with inputs - * custom[:len] = nonce || personalization_string - * where entropy_input comes from f_entropy for entropy_len bytes - * and with outputs - * ctx = initial_working_state - */ -int mbedtls_ctr_drbg_seed_entropy_len( - mbedtls_ctr_drbg_context *ctx, - int (*f_entropy)(void *, unsigned char *, size_t), - void *p_entropy, - const unsigned char *custom, - size_t len, - size_t entropy_len ) -{ - int ret; - unsigned char key[MBEDTLS_CTR_DRBG_KEYSIZE]; - - memset( key, 0, MBEDTLS_CTR_DRBG_KEYSIZE ); - - mbedtls_aes_init( &ctx->aes_ctx ); - - ctx->f_entropy = f_entropy; - ctx->p_entropy = p_entropy; - - ctx->entropy_len = entropy_len; - ctx->reseed_interval = MBEDTLS_CTR_DRBG_RESEED_INTERVAL; - - /* - * Initialize with an empty key - */ - if( ( ret = mbedtls_aes_setkey_enc( &ctx->aes_ctx, key, MBEDTLS_CTR_DRBG_KEYBITS ) ) != 0 ) - { - return( ret ); - } - - if( ( ret = mbedtls_ctr_drbg_reseed( ctx, custom, len ) ) != 0 ) - { - return( ret ); - } - return( 0 ); -} - -int mbedtls_ctr_drbg_seed( mbedtls_ctr_drbg_context *ctx, - int (*f_entropy)(void *, unsigned char *, size_t), - void *p_entropy, - const unsigned char *custom, - size_t len ) -{ - return( mbedtls_ctr_drbg_seed_entropy_len( ctx, f_entropy, p_entropy, custom, len, - MBEDTLS_CTR_DRBG_ENTROPY_LEN ) ); -} - void mbedtls_ctr_drbg_free( mbedtls_ctr_drbg_context *ctx ) { if( ctx == NULL ) return; #if defined(MBEDTLS_THREADING_C) - mbedtls_mutex_free( &ctx->mutex ); + /* The mutex is initialized iff f_entropy is set. */ + if( ctx->f_entropy != NULL ) + mbedtls_mutex_free( &ctx->mutex ); #endif mbedtls_aes_free( &ctx->aes_ctx ); mbedtls_platform_zeroize( ctx, sizeof( mbedtls_ctr_drbg_context ) ); + ctx->reseed_interval = MBEDTLS_CTR_DRBG_RESEED_INTERVAL; + ctx->reseed_counter = -1; } -void mbedtls_ctr_drbg_set_prediction_resistance( mbedtls_ctr_drbg_context *ctx, int resistance ) +void mbedtls_ctr_drbg_set_prediction_resistance( mbedtls_ctr_drbg_context *ctx, + int resistance ) { ctx->prediction_resistance = resistance; } -void mbedtls_ctr_drbg_set_entropy_len( mbedtls_ctr_drbg_context *ctx, size_t len ) +void mbedtls_ctr_drbg_set_entropy_len( mbedtls_ctr_drbg_context *ctx, + size_t len ) { ctx->entropy_len = len; } -void mbedtls_ctr_drbg_set_reseed_interval( mbedtls_ctr_drbg_context *ctx, int interval ) +int mbedtls_ctr_drbg_set_nonce_len( mbedtls_ctr_drbg_context *ctx, + size_t len ) +{ + /* If mbedtls_ctr_drbg_seed() has already been called, it's + * too late. Return the error code that's closest to making sense. */ + if( ctx->f_entropy != NULL ) + return( MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED ); + + if( len > MBEDTLS_CTR_DRBG_MAX_SEED_INPUT ) + return( MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG ); +#if SIZE_MAX > INT_MAX + /* This shouldn't be an issue because + * MBEDTLS_CTR_DRBG_MAX_SEED_INPUT < INT_MAX in any sensible + * configuration, but make sure anyway. */ + if( len > INT_MAX ) + return( MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG ); +#endif + + /* For backward compatibility with Mbed TLS <= 2.19, store the + * entropy nonce length in a field that already exists, but isn't + * used until after the initial seeding. */ + /* Due to the capping of len above, the value fits in an int. */ + ctx->reseed_counter = (int) len; + return( 0 ); +} + +void mbedtls_ctr_drbg_set_reseed_interval( mbedtls_ctr_drbg_context *ctx, + int interval ) { ctx->reseed_interval = interval; } @@ -154,7 +125,8 @@ void mbedtls_ctr_drbg_set_reseed_interval( mbedtls_ctr_drbg_context *ctx, int in static int block_cipher_df( unsigned char *output, const unsigned char *data, size_t data_len ) { - unsigned char buf[MBEDTLS_CTR_DRBG_MAX_SEED_INPUT + MBEDTLS_CTR_DRBG_BLOCKSIZE + 16]; + unsigned char buf[MBEDTLS_CTR_DRBG_MAX_SEED_INPUT + + MBEDTLS_CTR_DRBG_BLOCKSIZE + 16]; unsigned char tmp[MBEDTLS_CTR_DRBG_SEEDLEN]; unsigned char key[MBEDTLS_CTR_DRBG_KEYSIZE]; unsigned char chain[MBEDTLS_CTR_DRBG_BLOCKSIZE]; @@ -168,7 +140,8 @@ static int block_cipher_df( unsigned char *output, if( data_len > MBEDTLS_CTR_DRBG_MAX_SEED_INPUT ) return( MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG ); - memset( buf, 0, MBEDTLS_CTR_DRBG_MAX_SEED_INPUT + MBEDTLS_CTR_DRBG_BLOCKSIZE + 16 ); + memset( buf, 0, MBEDTLS_CTR_DRBG_MAX_SEED_INPUT + + MBEDTLS_CTR_DRBG_BLOCKSIZE + 16 ); mbedtls_aes_init( &aes_ctx ); /* @@ -179,11 +152,8 @@ static int block_cipher_df( unsigned char *output, * (Total is padded to a multiple of 16-bytes with zeroes) */ p = buf + MBEDTLS_CTR_DRBG_BLOCKSIZE; - *p++ = ( data_len >> 24 ) & 0xff; - *p++ = ( data_len >> 16 ) & 0xff; - *p++ = ( data_len >> 8 ) & 0xff; - *p++ = ( data_len ) & 0xff; - p += 3; + MBEDTLS_PUT_UINT32_BE( data_len, p, 0); + p += 4 + 3; *p++ = MBEDTLS_CTR_DRBG_SEEDLEN; memcpy( p, data, data_len ); p[data_len] = 0x80; @@ -193,7 +163,8 @@ static int block_cipher_df( unsigned char *output, for( i = 0; i < MBEDTLS_CTR_DRBG_KEYSIZE; i++ ) key[i] = i; - if( ( ret = mbedtls_aes_setkey_enc( &aes_ctx, key, MBEDTLS_CTR_DRBG_KEYBITS ) ) != 0 ) + if( ( ret = mbedtls_aes_setkey_enc( &aes_ctx, key, + MBEDTLS_CTR_DRBG_KEYBITS ) ) != 0 ) { goto exit; } @@ -215,7 +186,8 @@ static int block_cipher_df( unsigned char *output, use_len -= ( use_len >= MBEDTLS_CTR_DRBG_BLOCKSIZE ) ? MBEDTLS_CTR_DRBG_BLOCKSIZE : use_len; - if( ( ret = mbedtls_aes_crypt_ecb( &aes_ctx, MBEDTLS_AES_ENCRYPT, chain, chain ) ) != 0 ) + if( ( ret = mbedtls_aes_crypt_ecb( &aes_ctx, MBEDTLS_AES_ENCRYPT, + chain, chain ) ) != 0 ) { goto exit; } @@ -232,7 +204,8 @@ static int block_cipher_df( unsigned char *output, /* * Do final encryption with reduced data */ - if( ( ret = mbedtls_aes_setkey_enc( &aes_ctx, tmp, MBEDTLS_CTR_DRBG_KEYBITS ) ) != 0 ) + if( ( ret = mbedtls_aes_setkey_enc( &aes_ctx, tmp, + MBEDTLS_CTR_DRBG_KEYBITS ) ) != 0 ) { goto exit; } @@ -241,7 +214,8 @@ static int block_cipher_df( unsigned char *output, for( j = 0; j < MBEDTLS_CTR_DRBG_SEEDLEN; j += MBEDTLS_CTR_DRBG_BLOCKSIZE ) { - if( ( ret = mbedtls_aes_crypt_ecb( &aes_ctx, MBEDTLS_AES_ENCRYPT, iv, iv ) ) != 0 ) + if( ( ret = mbedtls_aes_crypt_ecb( &aes_ctx, MBEDTLS_AES_ENCRYPT, + iv, iv ) ) != 0 ) { goto exit; } @@ -277,7 +251,7 @@ static int block_cipher_df( unsigned char *output, * ctx->counter = V */ static int ctr_drbg_update_internal( mbedtls_ctr_drbg_context *ctx, - const unsigned char data[MBEDTLS_CTR_DRBG_SEEDLEN] ) + const unsigned char data[MBEDTLS_CTR_DRBG_SEEDLEN] ) { unsigned char tmp[MBEDTLS_CTR_DRBG_SEEDLEN]; unsigned char *p = tmp; @@ -298,8 +272,11 @@ static int ctr_drbg_update_internal( mbedtls_ctr_drbg_context *ctx, /* * Crypt counter block */ - if( ( ret = mbedtls_aes_crypt_ecb( &ctx->aes_ctx, MBEDTLS_AES_ENCRYPT, ctx->counter, p ) ) != 0 ) + if( ( ret = mbedtls_aes_crypt_ecb( &ctx->aes_ctx, MBEDTLS_AES_ENCRYPT, + ctx->counter, p ) ) != 0 ) + { goto exit; + } p += MBEDTLS_CTR_DRBG_BLOCKSIZE; } @@ -310,9 +287,13 @@ static int ctr_drbg_update_internal( mbedtls_ctr_drbg_context *ctx, /* * Update key and counter */ - if( ( ret = mbedtls_aes_setkey_enc( &ctx->aes_ctx, tmp, MBEDTLS_CTR_DRBG_KEYBITS ) ) != 0 ) + if( ( ret = mbedtls_aes_setkey_enc( &ctx->aes_ctx, tmp, + MBEDTLS_CTR_DRBG_KEYBITS ) ) != 0 ) + { goto exit; - memcpy( ctx->counter, tmp + MBEDTLS_CTR_DRBG_KEYSIZE, MBEDTLS_CTR_DRBG_BLOCKSIZE ); + } + memcpy( ctx->counter, tmp + MBEDTLS_CTR_DRBG_KEYSIZE, + MBEDTLS_CTR_DRBG_BLOCKSIZE ); exit: mbedtls_platform_zeroize( tmp, sizeof( tmp ) ); @@ -336,7 +317,7 @@ int mbedtls_ctr_drbg_update_ret( mbedtls_ctr_drbg_context *ctx, size_t add_len ) { unsigned char add_input[MBEDTLS_CTR_DRBG_SEEDLEN]; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( add_len == 0 ) return( 0 ); @@ -365,7 +346,7 @@ void mbedtls_ctr_drbg_update( mbedtls_ctr_drbg_context *ctx, #endif /* MBEDTLS_DEPRECATED_REMOVED */ /* CTR_DRBG_Reseed with derivation function (SP 800-90A §10.2.1.4.2) - * mbedtls_ctr_drbg_reseed(ctx, additional, len) + * mbedtls_ctr_drbg_reseed(ctx, additional, len, nonce_len) * implements * CTR_DRBG_Reseed(working_state, entropy_input, additional_input) * -> new_working_state @@ -373,51 +354,57 @@ void mbedtls_ctr_drbg_update( mbedtls_ctr_drbg_context *ctx, * ctx contains working_state * additional[:len] = additional_input * and entropy_input comes from calling ctx->f_entropy + * for (ctx->entropy_len + nonce_len) bytes * and with output * ctx contains new_working_state */ -int mbedtls_ctr_drbg_reseed( mbedtls_ctr_drbg_context *ctx, - const unsigned char *additional, size_t len ) +static int mbedtls_ctr_drbg_reseed_internal( mbedtls_ctr_drbg_context *ctx, + const unsigned char *additional, + size_t len, + size_t nonce_len ) { unsigned char seed[MBEDTLS_CTR_DRBG_MAX_SEED_INPUT]; size_t seedlen = 0; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; - if( ctx->entropy_len > MBEDTLS_CTR_DRBG_MAX_SEED_INPUT || - len > MBEDTLS_CTR_DRBG_MAX_SEED_INPUT - ctx->entropy_len ) + if( ctx->entropy_len > MBEDTLS_CTR_DRBG_MAX_SEED_INPUT ) + return( MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG ); + if( nonce_len > MBEDTLS_CTR_DRBG_MAX_SEED_INPUT - ctx->entropy_len ) + return( MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG ); + if( len > MBEDTLS_CTR_DRBG_MAX_SEED_INPUT - ctx->entropy_len - nonce_len ) return( MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG ); memset( seed, 0, MBEDTLS_CTR_DRBG_MAX_SEED_INPUT ); - /* - * Gather entropy_len bytes of entropy to seed state - */ - if( 0 != ctx->f_entropy( ctx->p_entropy, seed, - ctx->entropy_len ) ) + /* Gather entropy_len bytes of entropy to seed state. */ + if( 0 != ctx->f_entropy( ctx->p_entropy, seed, ctx->entropy_len ) ) { return( MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED ); } - seedlen += ctx->entropy_len; - /* - * Add additional data - */ - if( additional && len ) + /* Gather entropy for a nonce if requested. */ + if( nonce_len != 0 ) + { + if( 0 != ctx->f_entropy( ctx->p_entropy, seed + seedlen, nonce_len ) ) + { + return( MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED ); + } + seedlen += nonce_len; + } + + /* Add additional data if provided. */ + if( additional != NULL && len != 0 ) { memcpy( seed + seedlen, additional, len ); seedlen += len; } - /* - * Reduce to 384 bits - */ + /* Reduce to 384 bits. */ if( ( ret = block_cipher_df( seed, seed, seedlen ) ) != 0 ) goto exit; - /* - * Update state - */ + /* Update state. */ if( ( ret = ctr_drbg_update_internal( ctx, seed ) ) != 0 ) goto exit; ctx->reseed_counter = 1; @@ -427,6 +414,84 @@ int mbedtls_ctr_drbg_reseed( mbedtls_ctr_drbg_context *ctx, return( ret ); } +int mbedtls_ctr_drbg_reseed( mbedtls_ctr_drbg_context *ctx, + const unsigned char *additional, size_t len ) +{ + return( mbedtls_ctr_drbg_reseed_internal( ctx, additional, len, 0 ) ); +} + +/* Return a "good" nonce length for CTR_DRBG. The chosen nonce length + * is sufficient to achieve the maximum security strength given the key + * size and entropy length. If there is enough entropy in the initial + * call to the entropy function to serve as both the entropy input and + * the nonce, don't make a second call to get a nonce. */ +static size_t good_nonce_len( size_t entropy_len ) +{ + if( entropy_len >= MBEDTLS_CTR_DRBG_KEYSIZE * 3 / 2 ) + return( 0 ); + else + return( ( entropy_len + 1 ) / 2 ); +} + +/* CTR_DRBG_Instantiate with derivation function (SP 800-90A §10.2.1.3.2) + * mbedtls_ctr_drbg_seed(ctx, f_entropy, p_entropy, custom, len) + * implements + * CTR_DRBG_Instantiate(entropy_input, nonce, personalization_string, + * security_strength) -> initial_working_state + * with inputs + * custom[:len] = nonce || personalization_string + * where entropy_input comes from f_entropy for ctx->entropy_len bytes + * and with outputs + * ctx = initial_working_state + */ +int mbedtls_ctr_drbg_seed( mbedtls_ctr_drbg_context *ctx, + int (*f_entropy)(void *, unsigned char *, size_t), + void *p_entropy, + const unsigned char *custom, + size_t len ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + unsigned char key[MBEDTLS_CTR_DRBG_KEYSIZE]; + size_t nonce_len; + + memset( key, 0, MBEDTLS_CTR_DRBG_KEYSIZE ); + + /* The mutex is initialized iff f_entropy is set. */ +#if defined(MBEDTLS_THREADING_C) + mbedtls_mutex_init( &ctx->mutex ); +#endif + + mbedtls_aes_init( &ctx->aes_ctx ); + + ctx->f_entropy = f_entropy; + ctx->p_entropy = p_entropy; + + if( ctx->entropy_len == 0 ) + ctx->entropy_len = MBEDTLS_CTR_DRBG_ENTROPY_LEN; + /* ctx->reseed_counter contains the desired amount of entropy to + * grab for a nonce (see mbedtls_ctr_drbg_set_nonce_len()). + * If it's -1, indicating that the entropy nonce length was not set + * explicitly, use a sufficiently large nonce for security. */ + nonce_len = ( ctx->reseed_counter >= 0 ? + (size_t) ctx->reseed_counter : + good_nonce_len( ctx->entropy_len ) ); + + /* Initialize with an empty key. */ + if( ( ret = mbedtls_aes_setkey_enc( &ctx->aes_ctx, key, + MBEDTLS_CTR_DRBG_KEYBITS ) ) != 0 ) + { + return( ret ); + } + + /* Do the initial seeding. */ + if( ( ret = mbedtls_ctr_drbg_reseed_internal( ctx, custom, len, + nonce_len ) ) != 0 ) + { + return( ret ); + } + return( 0 ); +} + /* CTR_DRBG_Generate with derivation function (SP 800-90A §10.2.1.5.2) * mbedtls_ctr_drbg_random_with_add(ctx, output, output_len, additional, add_len) * implements @@ -496,11 +561,14 @@ int mbedtls_ctr_drbg_random_with_add( void *p_rng, /* * Crypt counter block */ - if( ( ret = mbedtls_aes_crypt_ecb( &ctx->aes_ctx, MBEDTLS_AES_ENCRYPT, ctx->counter, tmp ) ) != 0 ) + if( ( ret = mbedtls_aes_crypt_ecb( &ctx->aes_ctx, MBEDTLS_AES_ENCRYPT, + ctx->counter, tmp ) ) != 0 ) + { goto exit; + } - use_len = ( output_len > MBEDTLS_CTR_DRBG_BLOCKSIZE ) ? MBEDTLS_CTR_DRBG_BLOCKSIZE : - output_len; + use_len = ( output_len > MBEDTLS_CTR_DRBG_BLOCKSIZE ) + ? MBEDTLS_CTR_DRBG_BLOCKSIZE : output_len; /* * Copy random block to destination */ @@ -517,12 +585,13 @@ int mbedtls_ctr_drbg_random_with_add( void *p_rng, exit: mbedtls_platform_zeroize( add_input, sizeof( add_input ) ); mbedtls_platform_zeroize( tmp, sizeof( tmp ) ); - return( 0 ); + return( ret ); } -int mbedtls_ctr_drbg_random( void *p_rng, unsigned char *output, size_t output_len ) +int mbedtls_ctr_drbg_random( void *p_rng, unsigned char *output, + size_t output_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ctr_drbg_context *ctx = (mbedtls_ctr_drbg_context *) p_rng; #if defined(MBEDTLS_THREADING_C) @@ -541,7 +610,8 @@ int mbedtls_ctr_drbg_random( void *p_rng, unsigned char *output, size_t output_l } #if defined(MBEDTLS_FS_IO) -int mbedtls_ctr_drbg_write_seed_file( mbedtls_ctr_drbg_context *ctx, const char *path ) +int mbedtls_ctr_drbg_write_seed_file( mbedtls_ctr_drbg_context *ctx, + const char *path ) { int ret = MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR; FILE *f; @@ -550,13 +620,19 @@ int mbedtls_ctr_drbg_write_seed_file( mbedtls_ctr_drbg_context *ctx, const char if( ( f = fopen( path, "wb" ) ) == NULL ) return( MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR ); - if( ( ret = mbedtls_ctr_drbg_random( ctx, buf, MBEDTLS_CTR_DRBG_MAX_INPUT ) ) != 0 ) + if( ( ret = mbedtls_ctr_drbg_random( ctx, buf, + MBEDTLS_CTR_DRBG_MAX_INPUT ) ) != 0 ) goto exit; - if( fwrite( buf, 1, MBEDTLS_CTR_DRBG_MAX_INPUT, f ) != MBEDTLS_CTR_DRBG_MAX_INPUT ) + if( fwrite( buf, 1, MBEDTLS_CTR_DRBG_MAX_INPUT, f ) != + MBEDTLS_CTR_DRBG_MAX_INPUT ) + { ret = MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR; + } else + { ret = 0; + } exit: mbedtls_platform_zeroize( buf, sizeof( buf ) ); @@ -565,7 +641,8 @@ int mbedtls_ctr_drbg_write_seed_file( mbedtls_ctr_drbg_context *ctx, const char return( ret ); } -int mbedtls_ctr_drbg_update_seed_file( mbedtls_ctr_drbg_context *ctx, const char *path ) +int mbedtls_ctr_drbg_update_seed_file( mbedtls_ctr_drbg_context *ctx, + const char *path ) { int ret = 0; FILE *f = NULL; @@ -604,45 +681,135 @@ int mbedtls_ctr_drbg_update_seed_file( mbedtls_ctr_drbg_context *ctx, const char #if defined(MBEDTLS_SELF_TEST) -static const unsigned char entropy_source_pr[96] = - { 0xc1, 0x80, 0x81, 0xa6, 0x5d, 0x44, 0x02, 0x16, - 0x19, 0xb3, 0xf1, 0x80, 0xb1, 0xc9, 0x20, 0x02, - 0x6a, 0x54, 0x6f, 0x0c, 0x70, 0x81, 0x49, 0x8b, - 0x6e, 0xa6, 0x62, 0x52, 0x6d, 0x51, 0xb1, 0xcb, - 0x58, 0x3b, 0xfa, 0xd5, 0x37, 0x5f, 0xfb, 0xc9, - 0xff, 0x46, 0xd2, 0x19, 0xc7, 0x22, 0x3e, 0x95, - 0x45, 0x9d, 0x82, 0xe1, 0xe7, 0x22, 0x9f, 0x63, - 0x31, 0x69, 0xd2, 0x6b, 0x57, 0x47, 0x4f, 0xa3, - 0x37, 0xc9, 0x98, 0x1c, 0x0b, 0xfb, 0x91, 0x31, - 0x4d, 0x55, 0xb9, 0xe9, 0x1c, 0x5a, 0x5e, 0xe4, - 0x93, 0x92, 0xcf, 0xc5, 0x23, 0x12, 0xd5, 0x56, - 0x2c, 0x4a, 0x6e, 0xff, 0xdc, 0x10, 0xd0, 0x68 }; - -static const unsigned char entropy_source_nopr[64] = - { 0x5a, 0x19, 0x4d, 0x5e, 0x2b, 0x31, 0x58, 0x14, - 0x54, 0xde, 0xf6, 0x75, 0xfb, 0x79, 0x58, 0xfe, - 0xc7, 0xdb, 0x87, 0x3e, 0x56, 0x89, 0xfc, 0x9d, - 0x03, 0x21, 0x7c, 0x68, 0xd8, 0x03, 0x38, 0x20, - 0xf9, 0xe6, 0x5e, 0x04, 0xd8, 0x56, 0xf3, 0xa9, - 0xc4, 0x4a, 0x4c, 0xbd, 0xc1, 0xd0, 0x08, 0x46, - 0xf5, 0x98, 0x3d, 0x77, 0x1c, 0x1b, 0x13, 0x7e, - 0x4e, 0x0f, 0x9d, 0x8e, 0xf4, 0x09, 0xf9, 0x2e }; - -static const unsigned char nonce_pers_pr[16] = - { 0xd2, 0x54, 0xfc, 0xff, 0x02, 0x1e, 0x69, 0xd2, - 0x29, 0xc9, 0xcf, 0xad, 0x85, 0xfa, 0x48, 0x6c }; - -static const unsigned char nonce_pers_nopr[16] = - { 0x1b, 0x54, 0xb8, 0xff, 0x06, 0x42, 0xbf, 0xf5, - 0x21, 0xf1, 0x5c, 0x1c, 0x0b, 0x66, 0x5f, 0x3f }; - -static const unsigned char result_pr[16] = - { 0x34, 0x01, 0x16, 0x56, 0xb4, 0x29, 0x00, 0x8f, - 0x35, 0x63, 0xec, 0xb5, 0xf2, 0x59, 0x07, 0x23 }; - -static const unsigned char result_nopr[16] = - { 0xa0, 0x54, 0x30, 0x3d, 0x8a, 0x7e, 0xa9, 0x88, - 0x9d, 0x90, 0x3e, 0x07, 0x7c, 0x6f, 0x21, 0x8f }; +/* The CTR_DRBG NIST test vectors used here are available at + * https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/drbg/drbgtestvectors.zip + * + * The parameters used to derive the test data are: + * + * [AES-128 use df] + * [PredictionResistance = True/False] + * [EntropyInputLen = 128] + * [NonceLen = 64] + * [PersonalizationStringLen = 128] + * [AdditionalInputLen = 0] + * [ReturnedBitsLen = 512] + * + * [AES-256 use df] + * [PredictionResistance = True/False] + * [EntropyInputLen = 256] + * [NonceLen = 128] + * [PersonalizationStringLen = 256] + * [AdditionalInputLen = 0] + * [ReturnedBitsLen = 512] + * + */ + +#if defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY) +static const unsigned char entropy_source_pr[] = + { 0x04, 0xd9, 0x49, 0xa6, 0xdc, 0xe8, 0x6e, 0xbb, + 0xf1, 0x08, 0x77, 0x2b, 0x9e, 0x08, 0xca, 0x92, + 0x65, 0x16, 0xda, 0x99, 0xa2, 0x59, 0xf3, 0xe8, + 0x38, 0x7e, 0x3f, 0x6b, 0x51, 0x70, 0x7b, 0x20, + 0xec, 0x53, 0xd0, 0x66, 0xc3, 0x0f, 0xe3, 0xb0, + 0xe0, 0x86, 0xa6, 0xaa, 0x5f, 0x72, 0x2f, 0xad, + 0xf7, 0xef, 0x06, 0xb8, 0xd6, 0x9c, 0x9d, 0xe8 }; + +static const unsigned char entropy_source_nopr[] = + { 0x07, 0x0d, 0x59, 0x63, 0x98, 0x73, 0xa5, 0x45, + 0x27, 0x38, 0x22, 0x7b, 0x76, 0x85, 0xd1, 0xa9, + 0x74, 0x18, 0x1f, 0x3c, 0x22, 0xf6, 0x49, 0x20, + 0x4a, 0x47, 0xc2, 0xf3, 0x85, 0x16, 0xb4, 0x6f, + 0x00, 0x2e, 0x71, 0xda, 0xed, 0x16, 0x9b, 0x5c }; + +static const unsigned char pers_pr[] = + { 0xbf, 0xa4, 0x9a, 0x8f, 0x7b, 0xd8, 0xb1, 0x7a, + 0x9d, 0xfa, 0x45, 0xed, 0x21, 0x52, 0xb3, 0xad }; + +static const unsigned char pers_nopr[] = + { 0x4e, 0x61, 0x79, 0xd4, 0xc2, 0x72, 0xa1, 0x4c, + 0xf1, 0x3d, 0xf6, 0x5e, 0xa3, 0xa6, 0xe5, 0x0f }; + +static const unsigned char result_pr[] = + { 0xc9, 0x0a, 0xaf, 0x85, 0x89, 0x71, 0x44, 0x66, + 0x4f, 0x25, 0x0b, 0x2b, 0xde, 0xd8, 0xfa, 0xff, + 0x52, 0x5a, 0x1b, 0x32, 0x5e, 0x41, 0x7a, 0x10, + 0x1f, 0xef, 0x1e, 0x62, 0x23, 0xe9, 0x20, 0x30, + 0xc9, 0x0d, 0xad, 0x69, 0xb4, 0x9c, 0x5b, 0xf4, + 0x87, 0x42, 0xd5, 0xae, 0x5e, 0x5e, 0x43, 0xcc, + 0xd9, 0xfd, 0x0b, 0x93, 0x4a, 0xe3, 0xd4, 0x06, + 0x37, 0x36, 0x0f, 0x3f, 0x72, 0x82, 0x0c, 0xcf }; + +static const unsigned char result_nopr[] = + { 0x31, 0xc9, 0x91, 0x09, 0xf8, 0xc5, 0x10, 0x13, + 0x3c, 0xd3, 0x96, 0xf9, 0xbc, 0x2c, 0x12, 0xc0, + 0x7c, 0xc1, 0x61, 0x5f, 0xa3, 0x09, 0x99, 0xaf, + 0xd7, 0xf2, 0x36, 0xfd, 0x40, 0x1a, 0x8b, 0xf2, + 0x33, 0x38, 0xee, 0x1d, 0x03, 0x5f, 0x83, 0xb7, + 0xa2, 0x53, 0xdc, 0xee, 0x18, 0xfc, 0xa7, 0xf2, + 0xee, 0x96, 0xc6, 0xc2, 0xcd, 0x0c, 0xff, 0x02, + 0x76, 0x70, 0x69, 0xaa, 0x69, 0xd1, 0x3b, 0xe8 }; +#else /* MBEDTLS_CTR_DRBG_USE_128_BIT_KEY */ + +static const unsigned char entropy_source_pr[] = + { 0xca, 0x58, 0xfd, 0xf2, 0xb9, 0x77, 0xcb, 0x49, + 0xd4, 0xe0, 0x5b, 0xe2, 0x39, 0x50, 0xd9, 0x8a, + 0x6a, 0xb3, 0xc5, 0x2f, 0xdf, 0x74, 0xd5, 0x85, + 0x8f, 0xd1, 0xba, 0x64, 0x54, 0x7b, 0xdb, 0x1e, + 0xc5, 0xea, 0x24, 0xc0, 0xfa, 0x0c, 0x90, 0x15, + 0x09, 0x20, 0x92, 0x42, 0x32, 0x36, 0x45, 0x45, + 0x7d, 0x20, 0x76, 0x6b, 0xcf, 0xa2, 0x15, 0xc8, + 0x2f, 0x9f, 0xbc, 0x88, 0x3f, 0x80, 0xd1, 0x2c, + 0xb7, 0x16, 0xd1, 0x80, 0x9e, 0xe1, 0xc9, 0xb3, + 0x88, 0x1b, 0x21, 0x45, 0xef, 0xa1, 0x7f, 0xce, + 0xc8, 0x92, 0x35, 0x55, 0x2a, 0xd9, 0x1d, 0x8e, + 0x12, 0x38, 0xac, 0x01, 0x4e, 0x38, 0x18, 0x76, + 0x9c, 0xf2, 0xb6, 0xd4, 0x13, 0xb6, 0x2c, 0x77, + 0xc0, 0xe7, 0xe6, 0x0c, 0x47, 0x44, 0x95, 0xbe }; + +static const unsigned char entropy_source_nopr[] = + { 0x4c, 0xfb, 0x21, 0x86, 0x73, 0x34, 0x6d, 0x9d, + 0x50, 0xc9, 0x22, 0xe4, 0x9b, 0x0d, 0xfc, 0xd0, + 0x90, 0xad, 0xf0, 0x4f, 0x5c, 0x3b, 0xa4, 0x73, + 0x27, 0xdf, 0xcd, 0x6f, 0xa6, 0x3a, 0x78, 0x5c, + 0x01, 0x69, 0x62, 0xa7, 0xfd, 0x27, 0x87, 0xa2, + 0x4b, 0xf6, 0xbe, 0x47, 0xef, 0x37, 0x83, 0xf1, + 0xb7, 0xec, 0x46, 0x07, 0x23, 0x63, 0x83, 0x4a, + 0x1b, 0x01, 0x33, 0xf2, 0xc2, 0x38, 0x91, 0xdb, + 0x4f, 0x11, 0xa6, 0x86, 0x51, 0xf2, 0x3e, 0x3a, + 0x8b, 0x1f, 0xdc, 0x03, 0xb1, 0x92, 0xc7, 0xe7 }; + +static const unsigned char pers_pr[] = + { 0x5a, 0x70, 0x95, 0xe9, 0x81, 0x40, 0x52, 0x33, + 0x91, 0x53, 0x7e, 0x75, 0xd6, 0x19, 0x9d, 0x1e, + 0xad, 0x0d, 0xc6, 0xa7, 0xde, 0x6c, 0x1f, 0xe0, + 0xea, 0x18, 0x33, 0xa8, 0x7e, 0x06, 0x20, 0xe9 }; + +static const unsigned char pers_nopr[] = + { 0x88, 0xee, 0xb8, 0xe0, 0xe8, 0x3b, 0xf3, 0x29, + 0x4b, 0xda, 0xcd, 0x60, 0x99, 0xeb, 0xe4, 0xbf, + 0x55, 0xec, 0xd9, 0x11, 0x3f, 0x71, 0xe5, 0xeb, + 0xcb, 0x45, 0x75, 0xf3, 0xd6, 0xa6, 0x8a, 0x6b }; + +static const unsigned char result_pr[] = + { 0xce, 0x2f, 0xdb, 0xb6, 0xd9, 0xb7, 0x39, 0x85, + 0x04, 0xc5, 0xc0, 0x42, 0xc2, 0x31, 0xc6, 0x1d, + 0x9b, 0x5a, 0x59, 0xf8, 0x7e, 0x0d, 0xcc, 0x62, + 0x7b, 0x65, 0x11, 0x55, 0x10, 0xeb, 0x9e, 0x3d, + 0xa4, 0xfb, 0x1c, 0x6a, 0x18, 0xc0, 0x74, 0xdb, + 0xdd, 0xe7, 0x02, 0x23, 0x63, 0x21, 0xd0, 0x39, + 0xf9, 0xa7, 0xc4, 0x52, 0x84, 0x3b, 0x49, 0x40, + 0x72, 0x2b, 0xb0, 0x6c, 0x9c, 0xdb, 0xc3, 0x43 }; + +static const unsigned char result_nopr[] = + { 0xa5, 0x51, 0x80, 0xa1, 0x90, 0xbe, 0xf3, 0xad, + 0xaf, 0x28, 0xf6, 0xb7, 0x95, 0xe9, 0xf1, 0xf3, + 0xd6, 0xdf, 0xa1, 0xb2, 0x7d, 0xd0, 0x46, 0x7b, + 0x0c, 0x75, 0xf5, 0xfa, 0x93, 0x1e, 0x97, 0x14, + 0x75, 0xb2, 0x7c, 0xae, 0x03, 0xa2, 0x96, 0x54, + 0xe2, 0xf4, 0x09, 0x66, 0xea, 0x33, 0x64, 0x30, + 0x40, 0xd1, 0x40, 0x0f, 0xe6, 0x77, 0x87, 0x3a, + 0xf8, 0x09, 0x7c, 0x1f, 0xe9, 0xf0, 0x02, 0x98 }; +#endif /* MBEDTLS_CTR_DRBG_USE_128_BIT_KEY */ static size_t test_offset; static int ctr_drbg_self_test_entropy( void *data, unsigned char *buf, @@ -661,13 +828,15 @@ static int ctr_drbg_self_test_entropy( void *data, unsigned char *buf, return( 1 ); \ } +#define SELF_TEST_OUPUT_DISCARD_LENGTH 64 + /* * Checkup routine */ int mbedtls_ctr_drbg_self_test( int verbose ) { mbedtls_ctr_drbg_context ctx; - unsigned char buf[16]; + unsigned char buf[ sizeof( result_pr ) ]; mbedtls_ctr_drbg_init( &ctx ); @@ -678,12 +847,16 @@ int mbedtls_ctr_drbg_self_test( int verbose ) mbedtls_printf( " CTR_DRBG (PR = TRUE) : " ); test_offset = 0; - CHK( mbedtls_ctr_drbg_seed_entropy_len( &ctx, ctr_drbg_self_test_entropy, - (void *) entropy_source_pr, nonce_pers_pr, 16, 32 ) ); + mbedtls_ctr_drbg_set_entropy_len( &ctx, MBEDTLS_CTR_DRBG_KEYSIZE ); + mbedtls_ctr_drbg_set_nonce_len( &ctx, MBEDTLS_CTR_DRBG_KEYSIZE / 2 ); + CHK( mbedtls_ctr_drbg_seed( &ctx, + ctr_drbg_self_test_entropy, + (void *) entropy_source_pr, + pers_pr, MBEDTLS_CTR_DRBG_KEYSIZE ) ); mbedtls_ctr_drbg_set_prediction_resistance( &ctx, MBEDTLS_CTR_DRBG_PR_ON ); - CHK( mbedtls_ctr_drbg_random( &ctx, buf, MBEDTLS_CTR_DRBG_BLOCKSIZE ) ); - CHK( mbedtls_ctr_drbg_random( &ctx, buf, MBEDTLS_CTR_DRBG_BLOCKSIZE ) ); - CHK( memcmp( buf, result_pr, MBEDTLS_CTR_DRBG_BLOCKSIZE ) ); + CHK( mbedtls_ctr_drbg_random( &ctx, buf, SELF_TEST_OUPUT_DISCARD_LENGTH ) ); + CHK( mbedtls_ctr_drbg_random( &ctx, buf, sizeof( result_pr ) ) ); + CHK( memcmp( buf, result_pr, sizeof( result_pr ) ) ); mbedtls_ctr_drbg_free( &ctx ); @@ -699,12 +872,16 @@ int mbedtls_ctr_drbg_self_test( int verbose ) mbedtls_ctr_drbg_init( &ctx ); test_offset = 0; - CHK( mbedtls_ctr_drbg_seed_entropy_len( &ctx, ctr_drbg_self_test_entropy, - (void *) entropy_source_nopr, nonce_pers_nopr, 16, 32 ) ); - CHK( mbedtls_ctr_drbg_random( &ctx, buf, 16 ) ); + mbedtls_ctr_drbg_set_entropy_len( &ctx, MBEDTLS_CTR_DRBG_KEYSIZE); + mbedtls_ctr_drbg_set_nonce_len( &ctx, MBEDTLS_CTR_DRBG_KEYSIZE / 2 ); + CHK( mbedtls_ctr_drbg_seed( &ctx, + ctr_drbg_self_test_entropy, + (void *) entropy_source_nopr, + pers_nopr, MBEDTLS_CTR_DRBG_KEYSIZE ) ); CHK( mbedtls_ctr_drbg_reseed( &ctx, NULL, 0 ) ); - CHK( mbedtls_ctr_drbg_random( &ctx, buf, 16 ) ); - CHK( memcmp( buf, result_nopr, 16 ) ); + CHK( mbedtls_ctr_drbg_random( &ctx, buf, SELF_TEST_OUPUT_DISCARD_LENGTH ) ); + CHK( mbedtls_ctr_drbg_random( &ctx, buf, sizeof( result_nopr ) ) ); + CHK( memcmp( buf, result_nopr, sizeof( result_nopr ) ) ); mbedtls_ctr_drbg_free( &ctx ); diff --git a/Externals/mbedtls/library/debug.c b/Externals/mbedtls/library/debug.c index 824cd0236ed8..e1086008af70 100644 --- a/Externals/mbedtls/library/debug.c +++ b/Externals/mbedtls/library/debug.c @@ -1,7 +1,7 @@ /* * Debugging routines * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,15 +15,9 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_DEBUG_C) @@ -35,9 +29,11 @@ #define mbedtls_free free #define mbedtls_time_t time_t #define mbedtls_snprintf snprintf +#define mbedtls_vsnprintf vsnprintf #endif #include "mbedtls/debug.h" +#include "mbedtls/error.h" #include #include @@ -78,32 +74,25 @@ static inline void debug_send_line( const mbedtls_ssl_context *ssl, int level, #endif } +MBEDTLS_PRINTF_ATTRIBUTE(5, 6) void mbedtls_debug_print_msg( const mbedtls_ssl_context *ssl, int level, const char *file, int line, const char *format, ... ) { va_list argp; char str[DEBUG_BUF_SIZE]; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; - if( NULL == ssl || NULL == ssl->conf || NULL == ssl->conf->f_dbg || level > debug_threshold ) + if( NULL == ssl || + NULL == ssl->conf || + NULL == ssl->conf->f_dbg || + level > debug_threshold ) + { return; + } va_start( argp, format ); -#if defined(_WIN32) -#if defined(_TRUNCATE) && !defined(__MINGW32__) - ret = _vsnprintf_s( str, DEBUG_BUF_SIZE, _TRUNCATE, format, argp ); -#else - ret = _vsnprintf( str, DEBUG_BUF_SIZE, format, argp ); - if( ret < 0 || (size_t) ret == DEBUG_BUF_SIZE ) - { - str[DEBUG_BUF_SIZE-1] = '\0'; - ret = -1; - } -#endif -#else - ret = vsnprintf( str, DEBUG_BUF_SIZE, format, argp ); -#endif + ret = mbedtls_vsnprintf( str, DEBUG_BUF_SIZE, format, argp ); va_end( argp ); if( ret >= 0 && ret < DEBUG_BUF_SIZE - 1 ) @@ -121,8 +110,13 @@ void mbedtls_debug_print_ret( const mbedtls_ssl_context *ssl, int level, { char str[DEBUG_BUF_SIZE]; - if( ssl->conf == NULL || ssl->conf->f_dbg == NULL || level > debug_threshold ) + if( NULL == ssl || + NULL == ssl->conf || + NULL == ssl->conf->f_dbg || + level > debug_threshold ) + { return; + } /* * With non-blocking I/O and examples that just retry immediately, @@ -133,7 +127,7 @@ void mbedtls_debug_print_ret( const mbedtls_ssl_context *ssl, int level, return; mbedtls_snprintf( str, sizeof( str ), "%s() returned %d (-0x%04x)\n", - text, ret, -ret ); + text, ret, (unsigned int) -ret ); debug_send_line( ssl, level, file, line, str ); } @@ -146,8 +140,13 @@ void mbedtls_debug_print_buf( const mbedtls_ssl_context *ssl, int level, char txt[17]; size_t i, idx = 0; - if( ssl->conf == NULL || ssl->conf->f_dbg == NULL || level > debug_threshold ) + if( NULL == ssl || + NULL == ssl->conf || + NULL == ssl->conf->f_dbg || + level > debug_threshold ) + { return; + } mbedtls_snprintf( str + idx, sizeof( str ) - idx, "dumping '%s' (%u bytes)\n", text, (unsigned int) len ); @@ -199,8 +198,13 @@ void mbedtls_debug_print_ecp( const mbedtls_ssl_context *ssl, int level, { char str[DEBUG_BUF_SIZE]; - if( ssl->conf == NULL || ssl->conf->f_dbg == NULL || level > debug_threshold ) + if( NULL == ssl || + NULL == ssl->conf || + NULL == ssl->conf->f_dbg || + level > debug_threshold ) + { return; + } mbedtls_snprintf( str, sizeof( str ), "%s(X)", text ); mbedtls_debug_print_mpi( ssl, level, file, line, str, &X->X ); @@ -216,61 +220,55 @@ void mbedtls_debug_print_mpi( const mbedtls_ssl_context *ssl, int level, const char *text, const mbedtls_mpi *X ) { char str[DEBUG_BUF_SIZE]; - int j, k, zeros = 1; - size_t i, n, idx = 0; - - if( ssl->conf == NULL || ssl->conf->f_dbg == NULL || X == NULL || level > debug_threshold ) + size_t bitlen; + size_t idx = 0; + + if( NULL == ssl || + NULL == ssl->conf || + NULL == ssl->conf->f_dbg || + NULL == X || + level > debug_threshold ) + { return; + } - for( n = X->n - 1; n > 0; n-- ) - if( X->p[n] != 0 ) - break; - - for( j = ( sizeof(mbedtls_mpi_uint) << 3 ) - 1; j >= 0; j-- ) - if( ( ( X->p[n] >> j ) & 1 ) != 0 ) - break; - - mbedtls_snprintf( str + idx, sizeof( str ) - idx, "value of '%s' (%d bits) is:\n", - text, (int) ( ( n * ( sizeof(mbedtls_mpi_uint) << 3 ) ) + j + 1 ) ); + bitlen = mbedtls_mpi_bitlen( X ); + mbedtls_snprintf( str, sizeof( str ), "value of '%s' (%u bits) is:\n", + text, (unsigned) bitlen ); debug_send_line( ssl, level, file, line, str ); - idx = 0; - for( i = n + 1, j = 0; i > 0; i-- ) + if( bitlen == 0 ) { - if( zeros && X->p[i - 1] == 0 ) - continue; - - for( k = sizeof( mbedtls_mpi_uint ) - 1; k >= 0; k-- ) + str[0] = ' '; str[1] = '0'; str[2] = '0'; + idx = 3; + } + else + { + int n; + for( n = (int) ( ( bitlen - 1 ) / 8 ); n >= 0; n-- ) { - if( zeros && ( ( X->p[i - 1] >> ( k << 3 ) ) & 0xFF ) == 0 ) - continue; - else - zeros = 0; - - if( j % 16 == 0 ) + size_t limb_offset = n / sizeof( mbedtls_mpi_uint ); + size_t offset_in_limb = n % sizeof( mbedtls_mpi_uint ); + unsigned char octet = + ( X->p[limb_offset] >> ( offset_in_limb * 8 ) ) & 0xff; + mbedtls_snprintf( str + idx, sizeof( str ) - idx, " %02x", octet ); + idx += 3; + /* Wrap lines after 16 octets that each take 3 columns */ + if( idx >= 3 * 16 ) { - if( j > 0 ) - { - mbedtls_snprintf( str + idx, sizeof( str ) - idx, "\n" ); - debug_send_line( ssl, level, file, line, str ); - idx = 0; - } + mbedtls_snprintf( str + idx, sizeof( str ) - idx, "\n" ); + debug_send_line( ssl, level, file, line, str ); + idx = 0; } - - idx += mbedtls_snprintf( str + idx, sizeof( str ) - idx, " %02x", (unsigned int) - ( X->p[i - 1] >> ( k << 3 ) ) & 0xFF ); - - j++; } - } - if( zeros == 1 ) - idx += mbedtls_snprintf( str + idx, sizeof( str ) - idx, " 00" ); - - mbedtls_snprintf( str + idx, sizeof( str ) - idx, "\n" ); - debug_send_line( ssl, level, file, line, str ); + if( idx != 0 ) + { + mbedtls_snprintf( str + idx, sizeof( str ) - idx, "\n" ); + debug_send_line( ssl, level, file, line, str ); + } } #endif /* MBEDTLS_BIGNUM_C */ @@ -345,8 +343,14 @@ void mbedtls_debug_print_crt( const mbedtls_ssl_context *ssl, int level, char str[DEBUG_BUF_SIZE]; int i = 0; - if( ssl->conf == NULL || ssl->conf->f_dbg == NULL || crt == NULL || level > debug_threshold ) + if( NULL == ssl || + NULL == ssl->conf || + NULL == ssl->conf->f_dbg || + NULL == crt || + level > debug_threshold ) + { return; + } while( crt != NULL ) { diff --git a/Externals/mbedtls/library/des.c b/Externals/mbedtls/library/des.c index ca9e071f3254..91d22b5d906f 100644 --- a/Externals/mbedtls/library/des.c +++ b/Externals/mbedtls/library/des.c @@ -1,7 +1,7 @@ /* * FIPS-46-3 compliant Triple-DES implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * DES, on which TDES is based, was originally designed by Horst Feistel @@ -25,15 +23,12 @@ * http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_DES_C) #include "mbedtls/des.h" +#include "mbedtls/error.h" #include "mbedtls/platform_util.h" #include @@ -49,29 +44,6 @@ #if !defined(MBEDTLS_DES_ALT) -/* - * 32-bit integer manipulation macros (big endian) - */ -#ifndef GET_UINT32_BE -#define GET_UINT32_BE(n,b,i) \ -{ \ - (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ - | ( (uint32_t) (b)[(i) + 1] << 16 ) \ - | ( (uint32_t) (b)[(i) + 2] << 8 ) \ - | ( (uint32_t) (b)[(i) + 3] ); \ -} -#endif - -#ifndef PUT_UINT32_BE -#define PUT_UINT32_BE(n,b,i) \ -{ \ - (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ - (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ - (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \ - (b)[(i) + 3] = (unsigned char) ( (n) ); \ -} -#endif - /* * Expanded DES S-boxes */ @@ -257,50 +229,57 @@ static const uint32_t RHs[16] = /* * Initial Permutation macro */ -#define DES_IP(X,Y) \ -{ \ - T = ((X >> 4) ^ Y) & 0x0F0F0F0F; Y ^= T; X ^= (T << 4); \ - T = ((X >> 16) ^ Y) & 0x0000FFFF; Y ^= T; X ^= (T << 16); \ - T = ((Y >> 2) ^ X) & 0x33333333; X ^= T; Y ^= (T << 2); \ - T = ((Y >> 8) ^ X) & 0x00FF00FF; X ^= T; Y ^= (T << 8); \ - Y = ((Y << 1) | (Y >> 31)) & 0xFFFFFFFF; \ - T = (X ^ Y) & 0xAAAAAAAA; Y ^= T; X ^= T; \ - X = ((X << 1) | (X >> 31)) & 0xFFFFFFFF; \ -} +#define DES_IP(X,Y) \ + do \ + { \ + T = (((X) >> 4) ^ (Y)) & 0x0F0F0F0F; (Y) ^= T; (X) ^= (T << 4); \ + T = (((X) >> 16) ^ (Y)) & 0x0000FFFF; (Y) ^= T; (X) ^= (T << 16); \ + T = (((Y) >> 2) ^ (X)) & 0x33333333; (X) ^= T; (Y) ^= (T << 2); \ + T = (((Y) >> 8) ^ (X)) & 0x00FF00FF; (X) ^= T; (Y) ^= (T << 8); \ + (Y) = (((Y) << 1) | ((Y) >> 31)) & 0xFFFFFFFF; \ + T = ((X) ^ (Y)) & 0xAAAAAAAA; (Y) ^= T; (X) ^= T; \ + (X) = (((X) << 1) | ((X) >> 31)) & 0xFFFFFFFF; \ + } while( 0 ) /* * Final Permutation macro */ -#define DES_FP(X,Y) \ -{ \ - X = ((X << 31) | (X >> 1)) & 0xFFFFFFFF; \ - T = (X ^ Y) & 0xAAAAAAAA; X ^= T; Y ^= T; \ - Y = ((Y << 31) | (Y >> 1)) & 0xFFFFFFFF; \ - T = ((Y >> 8) ^ X) & 0x00FF00FF; X ^= T; Y ^= (T << 8); \ - T = ((Y >> 2) ^ X) & 0x33333333; X ^= T; Y ^= (T << 2); \ - T = ((X >> 16) ^ Y) & 0x0000FFFF; Y ^= T; X ^= (T << 16); \ - T = ((X >> 4) ^ Y) & 0x0F0F0F0F; Y ^= T; X ^= (T << 4); \ -} +#define DES_FP(X,Y) \ + do \ + { \ + (X) = (((X) << 31) | ((X) >> 1)) & 0xFFFFFFFF; \ + T = ((X) ^ (Y)) & 0xAAAAAAAA; (X) ^= T; (Y) ^= T; \ + (Y) = (((Y) << 31) | ((Y) >> 1)) & 0xFFFFFFFF; \ + T = (((Y) >> 8) ^ (X)) & 0x00FF00FF; (X) ^= T; (Y) ^= (T << 8); \ + T = (((Y) >> 2) ^ (X)) & 0x33333333; (X) ^= T; (Y) ^= (T << 2); \ + T = (((X) >> 16) ^ (Y)) & 0x0000FFFF; (Y) ^= T; (X) ^= (T << 16); \ + T = (((X) >> 4) ^ (Y)) & 0x0F0F0F0F; (Y) ^= T; (X) ^= (T << 4); \ + } while( 0 ) /* * DES round macro */ -#define DES_ROUND(X,Y) \ -{ \ - T = *SK++ ^ X; \ - Y ^= SB8[ (T ) & 0x3F ] ^ \ - SB6[ (T >> 8) & 0x3F ] ^ \ - SB4[ (T >> 16) & 0x3F ] ^ \ - SB2[ (T >> 24) & 0x3F ]; \ - \ - T = *SK++ ^ ((X << 28) | (X >> 4)); \ - Y ^= SB7[ (T ) & 0x3F ] ^ \ - SB5[ (T >> 8) & 0x3F ] ^ \ - SB3[ (T >> 16) & 0x3F ] ^ \ - SB1[ (T >> 24) & 0x3F ]; \ -} - -#define SWAP(a,b) { uint32_t t = a; a = b; b = t; t = 0; } +#define DES_ROUND(X,Y) \ + do \ + { \ + T = *SK++ ^ (X); \ + (Y) ^= SB8[ (T ) & 0x3F ] ^ \ + SB6[ (T >> 8) & 0x3F ] ^ \ + SB4[ (T >> 16) & 0x3F ] ^ \ + SB2[ (T >> 24) & 0x3F ]; \ + \ + T = *SK++ ^ (((X) << 28) | ((X) >> 4)); \ + (Y) ^= SB7[ (T ) & 0x3F ] ^ \ + SB5[ (T >> 8) & 0x3F ] ^ \ + SB3[ (T >> 16) & 0x3F ] ^ \ + SB1[ (T >> 24) & 0x3F ]; \ + } while( 0 ) + +#define SWAP(a,b) \ + do \ + { \ + uint32_t t = (a); (a) = (b); (b) = t; t = 0; \ + } while( 0 ) void mbedtls_des_init( mbedtls_des_context *ctx ) { @@ -422,8 +401,8 @@ void mbedtls_des_setkey( uint32_t SK[32], const unsigned char key[MBEDTLS_DES_KE int i; uint32_t X, Y, T; - GET_UINT32_BE( X, key, 0 ); - GET_UINT32_BE( Y, key, 4 ); + X = MBEDTLS_GET_UINT32_BE( key, 0 ); + Y = MBEDTLS_GET_UINT32_BE( key, 4 ); /* * Permuted Choice 1 @@ -632,8 +611,8 @@ int mbedtls_des_crypt_ecb( mbedtls_des_context *ctx, SK = ctx->sk; - GET_UINT32_BE( X, input, 0 ); - GET_UINT32_BE( Y, input, 4 ); + X = MBEDTLS_GET_UINT32_BE( input, 0 ); + Y = MBEDTLS_GET_UINT32_BE( input, 4 ); DES_IP( X, Y ); @@ -645,8 +624,8 @@ int mbedtls_des_crypt_ecb( mbedtls_des_context *ctx, DES_FP( Y, X ); - PUT_UINT32_BE( Y, output, 0 ); - PUT_UINT32_BE( X, output, 4 ); + MBEDTLS_PUT_UINT32_BE( Y, output, 0 ); + MBEDTLS_PUT_UINT32_BE( X, output, 4 ); return( 0 ); } @@ -664,6 +643,7 @@ int mbedtls_des_crypt_cbc( mbedtls_des_context *ctx, unsigned char *output ) { int i; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char temp[8]; if( length % 8 ) @@ -676,7 +656,9 @@ int mbedtls_des_crypt_cbc( mbedtls_des_context *ctx, for( i = 0; i < 8; i++ ) output[i] = (unsigned char)( input[i] ^ iv[i] ); - mbedtls_des_crypt_ecb( ctx, output, output ); + ret = mbedtls_des_crypt_ecb( ctx, output, output ); + if( ret != 0 ) + goto exit; memcpy( iv, output, 8 ); input += 8; @@ -689,7 +671,9 @@ int mbedtls_des_crypt_cbc( mbedtls_des_context *ctx, while( length > 0 ) { memcpy( temp, input, 8 ); - mbedtls_des_crypt_ecb( ctx, input, output ); + ret = mbedtls_des_crypt_ecb( ctx, input, output ); + if( ret != 0 ) + goto exit; for( i = 0; i < 8; i++ ) output[i] = (unsigned char)( output[i] ^ iv[i] ); @@ -701,8 +685,10 @@ int mbedtls_des_crypt_cbc( mbedtls_des_context *ctx, length -= 8; } } + ret = 0; - return( 0 ); +exit: + return( ret ); } #endif /* MBEDTLS_CIPHER_MODE_CBC */ @@ -719,8 +705,8 @@ int mbedtls_des3_crypt_ecb( mbedtls_des3_context *ctx, SK = ctx->sk; - GET_UINT32_BE( X, input, 0 ); - GET_UINT32_BE( Y, input, 4 ); + X = MBEDTLS_GET_UINT32_BE( input, 0 ); + Y = MBEDTLS_GET_UINT32_BE( input, 4 ); DES_IP( X, Y ); @@ -744,8 +730,8 @@ int mbedtls_des3_crypt_ecb( mbedtls_des3_context *ctx, DES_FP( Y, X ); - PUT_UINT32_BE( Y, output, 0 ); - PUT_UINT32_BE( X, output, 4 ); + MBEDTLS_PUT_UINT32_BE( Y, output, 0 ); + MBEDTLS_PUT_UINT32_BE( X, output, 4 ); return( 0 ); } @@ -763,6 +749,7 @@ int mbedtls_des3_crypt_cbc( mbedtls_des3_context *ctx, unsigned char *output ) { int i; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char temp[8]; if( length % 8 ) @@ -775,7 +762,9 @@ int mbedtls_des3_crypt_cbc( mbedtls_des3_context *ctx, for( i = 0; i < 8; i++ ) output[i] = (unsigned char)( input[i] ^ iv[i] ); - mbedtls_des3_crypt_ecb( ctx, output, output ); + ret = mbedtls_des3_crypt_ecb( ctx, output, output ); + if( ret != 0 ) + goto exit; memcpy( iv, output, 8 ); input += 8; @@ -788,7 +777,9 @@ int mbedtls_des3_crypt_cbc( mbedtls_des3_context *ctx, while( length > 0 ) { memcpy( temp, input, 8 ); - mbedtls_des3_crypt_ecb( ctx, input, output ); + ret = mbedtls_des3_crypt_ecb( ctx, input, output ); + if( ret != 0 ) + goto exit; for( i = 0; i < 8; i++ ) output[i] = (unsigned char)( output[i] ^ iv[i] ); @@ -800,8 +791,10 @@ int mbedtls_des3_crypt_cbc( mbedtls_des3_context *ctx, length -= 8; } } + ret = 0; - return( 0 ); +exit: + return( ret ); } #endif /* MBEDTLS_CIPHER_MODE_CBC */ @@ -827,16 +820,16 @@ static const unsigned char des3_test_buf[8] = static const unsigned char des3_test_ecb_dec[3][8] = { - { 0xCD, 0xD6, 0x4F, 0x2F, 0x94, 0x27, 0xC1, 0x5D }, - { 0x69, 0x96, 0xC8, 0xFA, 0x47, 0xA2, 0xAB, 0xEB }, - { 0x83, 0x25, 0x39, 0x76, 0x44, 0x09, 0x1A, 0x0A } + { 0x37, 0x2B, 0x98, 0xBF, 0x52, 0x65, 0xB0, 0x59 }, + { 0xC2, 0x10, 0x19, 0x9C, 0x38, 0x5A, 0x65, 0xA1 }, + { 0xA2, 0x70, 0x56, 0x68, 0x69, 0xE5, 0x15, 0x1D } }; static const unsigned char des3_test_ecb_enc[3][8] = { - { 0x6A, 0x2A, 0x19, 0xF4, 0x1E, 0xCA, 0x85, 0x4B }, - { 0x03, 0xE6, 0x9F, 0x5B, 0xFA, 0x58, 0xEB, 0x42 }, - { 0xDD, 0x17, 0xE8, 0xB8, 0xB4, 0x37, 0xD2, 0x32 } + { 0x1C, 0xD5, 0x97, 0xEA, 0x84, 0x26, 0x73, 0xFB }, + { 0xB3, 0x92, 0x4D, 0xF3, 0xC5, 0xB5, 0x42, 0x93 }, + { 0xDA, 0x37, 0x64, 0x41, 0xBA, 0x6F, 0x62, 0x6F } }; #if defined(MBEDTLS_CIPHER_MODE_CBC) @@ -847,16 +840,16 @@ static const unsigned char des3_test_iv[8] = static const unsigned char des3_test_cbc_dec[3][8] = { - { 0x12, 0x9F, 0x40, 0xB9, 0xD2, 0x00, 0x56, 0xB3 }, - { 0x47, 0x0E, 0xFC, 0x9A, 0x6B, 0x8E, 0xE3, 0x93 }, - { 0xC5, 0xCE, 0xCF, 0x63, 0xEC, 0xEC, 0x51, 0x4C } + { 0x58, 0xD9, 0x48, 0xEF, 0x85, 0x14, 0x65, 0x9A }, + { 0x5F, 0xC8, 0x78, 0xD4, 0xD7, 0x92, 0xD9, 0x54 }, + { 0x25, 0xF9, 0x75, 0x85, 0xA8, 0x1E, 0x48, 0xBF } }; static const unsigned char des3_test_cbc_enc[3][8] = { - { 0x54, 0xF1, 0x5A, 0xF6, 0xEB, 0xE3, 0xA4, 0xB4 }, - { 0x35, 0x76, 0x11, 0x56, 0x5F, 0xA1, 0x8E, 0x4D }, - { 0xCB, 0x19, 0x1F, 0x85, 0xD1, 0xED, 0x84, 0x39 } + { 0x91, 0x1C, 0x6D, 0xCF, 0x48, 0xA7, 0xC3, 0x4D }, + { 0x60, 0x1A, 0x76, 0x8F, 0xA1, 0xF9, 0x66, 0xF1 }, + { 0xA1, 0x50, 0x0F, 0x99, 0xB2, 0xCD, 0x64, 0x76 } }; #endif /* MBEDTLS_CIPHER_MODE_CBC */ @@ -894,39 +887,43 @@ int mbedtls_des_self_test( int verbose ) switch( i ) { case 0: - mbedtls_des_setkey_dec( &ctx, des3_test_keys ); + ret = mbedtls_des_setkey_dec( &ctx, des3_test_keys ); break; case 1: - mbedtls_des_setkey_enc( &ctx, des3_test_keys ); + ret = mbedtls_des_setkey_enc( &ctx, des3_test_keys ); break; case 2: - mbedtls_des3_set2key_dec( &ctx3, des3_test_keys ); + ret = mbedtls_des3_set2key_dec( &ctx3, des3_test_keys ); break; case 3: - mbedtls_des3_set2key_enc( &ctx3, des3_test_keys ); + ret = mbedtls_des3_set2key_enc( &ctx3, des3_test_keys ); break; case 4: - mbedtls_des3_set3key_dec( &ctx3, des3_test_keys ); + ret = mbedtls_des3_set3key_dec( &ctx3, des3_test_keys ); break; case 5: - mbedtls_des3_set3key_enc( &ctx3, des3_test_keys ); + ret = mbedtls_des3_set3key_enc( &ctx3, des3_test_keys ); break; default: return( 1 ); } + if( ret != 0 ) + goto exit; - for( j = 0; j < 10000; j++ ) + for( j = 0; j < 100; j++ ) { if( u == 0 ) - mbedtls_des_crypt_ecb( &ctx, buf, buf ); + ret = mbedtls_des_crypt_ecb( &ctx, buf, buf ); else - mbedtls_des3_crypt_ecb( &ctx3, buf, buf ); + ret = mbedtls_des3_crypt_ecb( &ctx3, buf, buf ); + if( ret != 0 ) + goto exit; } if( ( v == MBEDTLS_DES_DECRYPT && @@ -969,53 +966,59 @@ int mbedtls_des_self_test( int verbose ) switch( i ) { case 0: - mbedtls_des_setkey_dec( &ctx, des3_test_keys ); + ret = mbedtls_des_setkey_dec( &ctx, des3_test_keys ); break; case 1: - mbedtls_des_setkey_enc( &ctx, des3_test_keys ); + ret = mbedtls_des_setkey_enc( &ctx, des3_test_keys ); break; case 2: - mbedtls_des3_set2key_dec( &ctx3, des3_test_keys ); + ret = mbedtls_des3_set2key_dec( &ctx3, des3_test_keys ); break; case 3: - mbedtls_des3_set2key_enc( &ctx3, des3_test_keys ); + ret = mbedtls_des3_set2key_enc( &ctx3, des3_test_keys ); break; case 4: - mbedtls_des3_set3key_dec( &ctx3, des3_test_keys ); + ret = mbedtls_des3_set3key_dec( &ctx3, des3_test_keys ); break; case 5: - mbedtls_des3_set3key_enc( &ctx3, des3_test_keys ); + ret = mbedtls_des3_set3key_enc( &ctx3, des3_test_keys ); break; default: return( 1 ); } + if( ret != 0 ) + goto exit; if( v == MBEDTLS_DES_DECRYPT ) { - for( j = 0; j < 10000; j++ ) + for( j = 0; j < 100; j++ ) { if( u == 0 ) - mbedtls_des_crypt_cbc( &ctx, v, 8, iv, buf, buf ); + ret = mbedtls_des_crypt_cbc( &ctx, v, 8, iv, buf, buf ); else - mbedtls_des3_crypt_cbc( &ctx3, v, 8, iv, buf, buf ); + ret = mbedtls_des3_crypt_cbc( &ctx3, v, 8, iv, buf, buf ); + if( ret != 0 ) + goto exit; } } else { - for( j = 0; j < 10000; j++ ) + for( j = 0; j < 100; j++ ) { unsigned char tmp[8]; if( u == 0 ) - mbedtls_des_crypt_cbc( &ctx, v, 8, iv, buf, buf ); + ret = mbedtls_des_crypt_cbc( &ctx, v, 8, iv, buf, buf ); else - mbedtls_des3_crypt_cbc( &ctx3, v, 8, iv, buf, buf ); + ret = mbedtls_des3_crypt_cbc( &ctx3, v, 8, iv, buf, buf ); + if( ret != 0 ) + goto exit; memcpy( tmp, prv, 8 ); memcpy( prv, buf, 8 ); @@ -1049,6 +1052,8 @@ int mbedtls_des_self_test( int verbose ) mbedtls_des_free( &ctx ); mbedtls_des3_free( &ctx3 ); + if( ret != 0 ) + ret = 1; return( ret ); } diff --git a/Externals/mbedtls/library/dhm.c b/Externals/mbedtls/library/dhm.c index fb6937e8549d..88e148bb80ff 100644 --- a/Externals/mbedtls/library/dhm.c +++ b/Externals/mbedtls/library/dhm.c @@ -1,7 +1,7 @@ /* * Diffie-Hellman-Merkle key exchange * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The following sources were referenced in the design of this implementation @@ -27,16 +25,13 @@ * */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_DHM_C) #include "mbedtls/dhm.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -84,7 +79,7 @@ static int dhm_read_bignum( mbedtls_mpi *X, return( MBEDTLS_ERR_DHM_BAD_INPUT_DATA ); if( ( ret = mbedtls_mpi_read_binary( X, *p, n ) ) != 0 ) - return( MBEDTLS_ERR_DHM_READ_PARAMS_FAILED + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_DHM_READ_PARAMS_FAILED, ret ) ); (*p) += n; @@ -105,22 +100,21 @@ static int dhm_read_bignum( mbedtls_mpi *X, */ static int dhm_check_range( const mbedtls_mpi *param, const mbedtls_mpi *P ) { - mbedtls_mpi L, U; + mbedtls_mpi U; int ret = 0; - mbedtls_mpi_init( &L ); mbedtls_mpi_init( &U ); + mbedtls_mpi_init( &U ); - MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &L, 2 ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &U, P, 2 ) ); - if( mbedtls_mpi_cmp_mpi( param, &L ) < 0 || + if( mbedtls_mpi_cmp_int( param, 2 ) < 0 || mbedtls_mpi_cmp_mpi( param, &U ) > 0 ) { ret = MBEDTLS_ERR_DHM_BAD_INPUT_DATA; } cleanup: - mbedtls_mpi_free( &L ); mbedtls_mpi_free( &U ); + mbedtls_mpi_free( &U ); return( ret ); } @@ -137,7 +131,7 @@ int mbedtls_dhm_read_params( mbedtls_dhm_context *ctx, unsigned char **p, const unsigned char *end ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; DHM_VALIDATE_RET( ctx != NULL ); DHM_VALIDATE_RET( p != NULL && *p != NULL ); DHM_VALIDATE_RET( end != NULL ); @@ -156,38 +150,44 @@ int mbedtls_dhm_read_params( mbedtls_dhm_context *ctx, } /* - * Setup and write the ServerKeyExchange parameters + * Pick a random R in the range [2, M-2] for blinding or key generation. */ -int mbedtls_dhm_make_params( mbedtls_dhm_context *ctx, int x_size, - unsigned char *output, size_t *olen, - int (*f_rng)(void *, unsigned char *, size_t), - void *p_rng ) +static int dhm_random_below( mbedtls_mpi *R, const mbedtls_mpi *M, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret, count = 0; - size_t n1, n2, n3; - unsigned char *p; - DHM_VALIDATE_RET( ctx != NULL ); - DHM_VALIDATE_RET( output != NULL ); - DHM_VALIDATE_RET( olen != NULL ); - DHM_VALIDATE_RET( f_rng != NULL ); + int ret; + + MBEDTLS_MPI_CHK( mbedtls_mpi_random( R, 3, M, f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( R, R, 1 ) ); + +cleanup: + return( ret ); +} + +static int dhm_make_common( mbedtls_dhm_context *ctx, int x_size, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ) +{ + int ret = 0; if( mbedtls_mpi_cmp_int( &ctx->P, 0 ) == 0 ) return( MBEDTLS_ERR_DHM_BAD_INPUT_DATA ); + if( x_size < 0 ) + return( MBEDTLS_ERR_DHM_BAD_INPUT_DATA ); - /* - * Generate X as large as possible ( < P ) - */ - do + if( (unsigned) x_size < mbedtls_mpi_size( &ctx->P ) ) { MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( &ctx->X, x_size, f_rng, p_rng ) ); - - while( mbedtls_mpi_cmp_mpi( &ctx->X, &ctx->P ) >= 0 ) - MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &ctx->X, 1 ) ); - - if( count++ > 10 ) + } + else + { + /* Generate X as large as possible ( <= P - 2 ) */ + ret = dhm_random_below( &ctx->X, &ctx->P, f_rng, p_rng ); + if( ret == MBEDTLS_ERR_MPI_NOT_ACCEPTABLE ) return( MBEDTLS_ERR_DHM_MAKE_PARAMS_FAILED ); + if( ret != 0 ) + return( ret ); } - while( dhm_check_range( &ctx->X, &ctx->P ) != 0 ); /* * Calculate GX = G^X mod P @@ -198,16 +198,41 @@ int mbedtls_dhm_make_params( mbedtls_dhm_context *ctx, int x_size, if( ( ret = dhm_check_range( &ctx->GX, &ctx->P ) ) != 0 ) return( ret ); +cleanup: + return( ret ); +} + +/* + * Setup and write the ServerKeyExchange parameters + */ +int mbedtls_dhm_make_params( mbedtls_dhm_context *ctx, int x_size, + unsigned char *output, size_t *olen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ) +{ + int ret; + size_t n1, n2, n3; + unsigned char *p; + DHM_VALIDATE_RET( ctx != NULL ); + DHM_VALIDATE_RET( output != NULL ); + DHM_VALIDATE_RET( olen != NULL ); + DHM_VALIDATE_RET( f_rng != NULL ); + + ret = dhm_make_common( ctx, x_size, f_rng, p_rng ); + if( ret != 0 ) + goto cleanup; + /* - * export P, G, GX + * Export P, G, GX. RFC 5246 §4.4 states that "leading zero octets are + * not required". We omit leading zeros for compactness. */ #define DHM_MPI_EXPORT( X, n ) \ do { \ MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( ( X ), \ p + 2, \ ( n ) ) ); \ - *p++ = (unsigned char)( ( n ) >> 8 ); \ - *p++ = (unsigned char)( ( n ) ); \ + *p++ = MBEDTLS_BYTE_1( n ); \ + *p++ = MBEDTLS_BYTE_0( n ); \ p += ( n ); \ } while( 0 ) @@ -225,11 +250,9 @@ int mbedtls_dhm_make_params( mbedtls_dhm_context *ctx, int x_size, ctx->len = n1; cleanup: - - if( ret != 0 ) - return( MBEDTLS_ERR_DHM_MAKE_PARAMS_FAILED + ret ); - - return( 0 ); + if( ret != 0 && ret > -128 ) + ret = MBEDTLS_ERROR_ADD( MBEDTLS_ERR_DHM_MAKE_PARAMS_FAILED, ret ); + return( ret ); } /* @@ -239,7 +262,7 @@ int mbedtls_dhm_set_group( mbedtls_dhm_context *ctx, const mbedtls_mpi *P, const mbedtls_mpi *G ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; DHM_VALIDATE_RET( ctx != NULL ); DHM_VALIDATE_RET( P != NULL ); DHM_VALIDATE_RET( G != NULL ); @@ -247,7 +270,7 @@ int mbedtls_dhm_set_group( mbedtls_dhm_context *ctx, if( ( ret = mbedtls_mpi_copy( &ctx->P, P ) ) != 0 || ( ret = mbedtls_mpi_copy( &ctx->G, G ) ) != 0 ) { - return( MBEDTLS_ERR_DHM_SET_GROUP_FAILED + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_DHM_SET_GROUP_FAILED, ret ) ); } ctx->len = mbedtls_mpi_size( &ctx->P ); @@ -260,7 +283,7 @@ int mbedtls_dhm_set_group( mbedtls_dhm_context *ctx, int mbedtls_dhm_read_public( mbedtls_dhm_context *ctx, const unsigned char *input, size_t ilen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; DHM_VALIDATE_RET( ctx != NULL ); DHM_VALIDATE_RET( input != NULL ); @@ -268,7 +291,7 @@ int mbedtls_dhm_read_public( mbedtls_dhm_context *ctx, return( MBEDTLS_ERR_DHM_BAD_INPUT_DATA ); if( ( ret = mbedtls_mpi_read_binary( &ctx->GY, input, ilen ) ) != 0 ) - return( MBEDTLS_ERR_DHM_READ_PUBLIC_FAILED + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_DHM_READ_PUBLIC_FAILED, ret ) ); return( 0 ); } @@ -281,7 +304,7 @@ int mbedtls_dhm_make_public( mbedtls_dhm_context *ctx, int x_size, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret, count = 0; + int ret; DHM_VALIDATE_RET( ctx != NULL ); DHM_VALIDATE_RET( output != NULL ); DHM_VALIDATE_RET( f_rng != NULL ); @@ -289,40 +312,21 @@ int mbedtls_dhm_make_public( mbedtls_dhm_context *ctx, int x_size, if( olen < 1 || olen > ctx->len ) return( MBEDTLS_ERR_DHM_BAD_INPUT_DATA ); - if( mbedtls_mpi_cmp_int( &ctx->P, 0 ) == 0 ) - return( MBEDTLS_ERR_DHM_BAD_INPUT_DATA ); - - /* - * generate X and calculate GX = G^X mod P - */ - do - { - MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( &ctx->X, x_size, f_rng, p_rng ) ); - - while( mbedtls_mpi_cmp_mpi( &ctx->X, &ctx->P ) >= 0 ) - MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &ctx->X, 1 ) ); - - if( count++ > 10 ) - return( MBEDTLS_ERR_DHM_MAKE_PUBLIC_FAILED ); - } - while( dhm_check_range( &ctx->X, &ctx->P ) != 0 ); - - MBEDTLS_MPI_CHK( mbedtls_mpi_exp_mod( &ctx->GX, &ctx->G, &ctx->X, - &ctx->P , &ctx->RP ) ); - - if( ( ret = dhm_check_range( &ctx->GX, &ctx->P ) ) != 0 ) - return( ret ); + ret = dhm_make_common( ctx, x_size, f_rng, p_rng ); + if( ret == MBEDTLS_ERR_DHM_MAKE_PARAMS_FAILED ) + return( MBEDTLS_ERR_DHM_MAKE_PUBLIC_FAILED ); + if( ret != 0 ) + goto cleanup; MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &ctx->GX, output, olen ) ); cleanup: - - if( ret != 0 ) - return( MBEDTLS_ERR_DHM_MAKE_PUBLIC_FAILED + ret ); - - return( 0 ); + if( ret != 0 && ret > -128 ) + ret = MBEDTLS_ERROR_ADD( MBEDTLS_ERR_DHM_MAKE_PUBLIC_FAILED, ret ); + return( ret ); } + /* * Use the blinding method and optimisation suggested in section 10 of: * KOCHER, Paul C. Timing attacks on implementations of Diffie-Hellman, RSA, @@ -332,7 +336,10 @@ int mbedtls_dhm_make_public( mbedtls_dhm_context *ctx, int x_size, static int dhm_update_blinding( mbedtls_dhm_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret, count; + int ret; + mbedtls_mpi R; + + mbedtls_mpi_init( &R ); /* * Don't use any blinding the first time a particular X is used, @@ -366,25 +373,24 @@ static int dhm_update_blinding( mbedtls_dhm_context *ctx, * We need to generate blinding values from scratch */ - /* Vi = random( 2, P-1 ) */ - count = 0; - do - { - MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( &ctx->Vi, mbedtls_mpi_size( &ctx->P ), f_rng, p_rng ) ); - - while( mbedtls_mpi_cmp_mpi( &ctx->Vi, &ctx->P ) >= 0 ) - MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &ctx->Vi, 1 ) ); + /* Vi = random( 2, P-2 ) */ + MBEDTLS_MPI_CHK( dhm_random_below( &ctx->Vi, &ctx->P, f_rng, p_rng ) ); - if( count++ > 10 ) - return( MBEDTLS_ERR_MPI_NOT_ACCEPTABLE ); - } - while( mbedtls_mpi_cmp_int( &ctx->Vi, 1 ) <= 0 ); + /* Vf = Vi^-X mod P + * First compute Vi^-1 = R * (R Vi)^-1, (avoiding leaks from inv_mod), + * then elevate to the Xth power. */ + MBEDTLS_MPI_CHK( dhm_random_below( &R, &ctx->P, f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &ctx->Vf, &ctx->Vi, &R ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &ctx->Vf, &ctx->Vf, &ctx->P ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( &ctx->Vf, &ctx->Vf, &ctx->P ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &ctx->Vf, &ctx->Vf, &R ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &ctx->Vf, &ctx->Vf, &ctx->P ) ); - /* Vf = Vi^-X mod P */ - MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( &ctx->Vf, &ctx->Vi, &ctx->P ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_exp_mod( &ctx->Vf, &ctx->Vf, &ctx->X, &ctx->P, &ctx->RP ) ); cleanup: + mbedtls_mpi_free( &R ); + return( ret ); } @@ -396,7 +402,7 @@ int mbedtls_dhm_calc_secret( mbedtls_dhm_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_mpi GYb; DHM_VALIDATE_RET( ctx != NULL ); DHM_VALIDATE_RET( output != NULL ); @@ -431,15 +437,16 @@ int mbedtls_dhm_calc_secret( mbedtls_dhm_context *ctx, MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &ctx->K, &ctx->K, &ctx->P ) ); } + /* Output the secret without any leading zero byte. This is mandatory + * for TLS per RFC 5246 §8.1.2. */ *olen = mbedtls_mpi_size( &ctx->K ); - MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &ctx->K, output, *olen ) ); cleanup: mbedtls_mpi_free( &GYb ); if( ret != 0 ) - return( MBEDTLS_ERR_DHM_CALC_SECRET_FAILED + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_DHM_CALC_SECRET_FAILED, ret ) ); return( 0 ); } @@ -473,7 +480,7 @@ void mbedtls_dhm_free( mbedtls_dhm_context *ctx ) int mbedtls_dhm_parse_dhm( mbedtls_dhm_context *dhm, const unsigned char *dhmin, size_t dhminlen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; unsigned char *p, *end; #if defined(MBEDTLS_PEM_PARSE_C) @@ -521,7 +528,7 @@ int mbedtls_dhm_parse_dhm( mbedtls_dhm_context *dhm, const unsigned char *dhmin, if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) { - ret = MBEDTLS_ERR_DHM_INVALID_FORMAT + ret; + ret = MBEDTLS_ERROR_ADD( MBEDTLS_ERR_DHM_INVALID_FORMAT, ret ); goto exit; } @@ -530,7 +537,7 @@ int mbedtls_dhm_parse_dhm( mbedtls_dhm_context *dhm, const unsigned char *dhmin, if( ( ret = mbedtls_asn1_get_mpi( &p, end, &dhm->P ) ) != 0 || ( ret = mbedtls_asn1_get_mpi( &p, end, &dhm->G ) ) != 0 ) { - ret = MBEDTLS_ERR_DHM_INVALID_FORMAT + ret; + ret = MBEDTLS_ERROR_ADD( MBEDTLS_ERR_DHM_INVALID_FORMAT, ret ); goto exit; } @@ -544,13 +551,13 @@ int mbedtls_dhm_parse_dhm( mbedtls_dhm_context *dhm, const unsigned char *dhmin, mbedtls_mpi_free( &rec ); if ( ret != 0 ) { - ret = MBEDTLS_ERR_DHM_INVALID_FORMAT + ret; + ret = MBEDTLS_ERROR_ADD( MBEDTLS_ERR_DHM_INVALID_FORMAT, ret ); goto exit; } if ( p != end ) { - ret = MBEDTLS_ERR_DHM_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH; + ret = MBEDTLS_ERROR_ADD( MBEDTLS_ERR_DHM_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); goto exit; } } @@ -627,7 +634,7 @@ static int load_file( const char *path, unsigned char **buf, size_t *n ) */ int mbedtls_dhm_parse_dhmfile( mbedtls_dhm_context *dhm, const char *path ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n; unsigned char *buf; DHM_VALIDATE_RET( dhm != NULL ); @@ -649,12 +656,28 @@ int mbedtls_dhm_parse_dhmfile( mbedtls_dhm_context *dhm, const char *path ) #if defined(MBEDTLS_SELF_TEST) +#if defined(MBEDTLS_PEM_PARSE_C) static const char mbedtls_test_dhm_params[] = "-----BEGIN DH PARAMETERS-----\r\n" "MIGHAoGBAJ419DBEOgmQTzo5qXl5fQcN9TN455wkOL7052HzxxRVMyhYmwQcgJvh\r\n" "1sa18fyfR9OiVEMYglOpkqVoGLN7qd5aQNNi5W7/C+VBdHTBJcGZJyyP5B3qcz32\r\n" "9mLJKudlVudV0Qxk5qUJaPZ/xupz0NyoVpviuiBOI1gNi8ovSXWzAgEC\r\n" "-----END DH PARAMETERS-----\r\n"; +#else /* MBEDTLS_PEM_PARSE_C */ +static const char mbedtls_test_dhm_params[] = { + 0x30, 0x81, 0x87, 0x02, 0x81, 0x81, 0x00, 0x9e, 0x35, 0xf4, 0x30, 0x44, + 0x3a, 0x09, 0x90, 0x4f, 0x3a, 0x39, 0xa9, 0x79, 0x79, 0x7d, 0x07, 0x0d, + 0xf5, 0x33, 0x78, 0xe7, 0x9c, 0x24, 0x38, 0xbe, 0xf4, 0xe7, 0x61, 0xf3, + 0xc7, 0x14, 0x55, 0x33, 0x28, 0x58, 0x9b, 0x04, 0x1c, 0x80, 0x9b, 0xe1, + 0xd6, 0xc6, 0xb5, 0xf1, 0xfc, 0x9f, 0x47, 0xd3, 0xa2, 0x54, 0x43, 0x18, + 0x82, 0x53, 0xa9, 0x92, 0xa5, 0x68, 0x18, 0xb3, 0x7b, 0xa9, 0xde, 0x5a, + 0x40, 0xd3, 0x62, 0xe5, 0x6e, 0xff, 0x0b, 0xe5, 0x41, 0x74, 0x74, 0xc1, + 0x25, 0xc1, 0x99, 0x27, 0x2c, 0x8f, 0xe4, 0x1d, 0xea, 0x73, 0x3d, 0xf6, + 0xf6, 0x62, 0xc9, 0x2a, 0xe7, 0x65, 0x56, 0xe7, 0x55, 0xd1, 0x0c, 0x64, + 0xe6, 0xa5, 0x09, 0x68, 0xf6, 0x7f, 0xc6, 0xea, 0x73, 0xd0, 0xdc, 0xa8, + 0x56, 0x9b, 0xe2, 0xba, 0x20, 0x4e, 0x23, 0x58, 0x0d, 0x8b, 0xca, 0x2f, + 0x49, 0x75, 0xb3, 0x02, 0x01, 0x02 }; +#endif /* MBEDTLS_PEM_PARSE_C */ static const size_t mbedtls_test_dhm_params_len = sizeof( mbedtls_test_dhm_params ); @@ -663,7 +686,7 @@ static const size_t mbedtls_test_dhm_params_len = sizeof( mbedtls_test_dhm_param */ int mbedtls_dhm_self_test( int verbose ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_dhm_context dhm; mbedtls_dhm_init( &dhm ); diff --git a/Externals/mbedtls/library/ecdh.c b/Externals/mbedtls/library/ecdh.c index da95c60dad27..9dfa8680637b 100644 --- a/Externals/mbedtls/library/ecdh.c +++ b/Externals/mbedtls/library/ecdh.c @@ -1,7 +1,7 @@ /* * Elliptic curve Diffie-Hellman * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -26,16 +24,13 @@ * RFC 4492 */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_ECDH_C) #include "mbedtls/ecdh.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -49,6 +44,23 @@ typedef mbedtls_ecdh_context mbedtls_ecdh_context_mbed; #endif +static mbedtls_ecp_group_id mbedtls_ecdh_grp_id( + const mbedtls_ecdh_context *ctx ) +{ +#if defined(MBEDTLS_ECDH_LEGACY_CONTEXT) + return( ctx->grp.id ); +#else + return( ctx->grp_id ); +#endif +} + +int mbedtls_ecdh_can_do( mbedtls_ecp_group_id gid ) +{ + /* At this time, all groups support ECDH. */ + (void) gid; + return( 1 ); +} + #if !defined(MBEDTLS_ECDH_GEN_PUBLIC_ALT) /* * Generate public key (restartable version) @@ -63,7 +75,7 @@ static int ecdh_gen_public_restartable( mbedtls_ecp_group *grp, void *p_rng, mbedtls_ecp_restart_ctx *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; /* If multiplication is in progress, we already generated a privkey */ #if defined(MBEDTLS_ECP_RESTARTABLE) @@ -104,7 +116,7 @@ static int ecdh_compute_shared_restartable( mbedtls_ecp_group *grp, void *p_rng, mbedtls_ecp_restart_ctx *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecp_point P; mbedtls_ecp_point_init( &P ); @@ -182,7 +194,7 @@ void mbedtls_ecdh_init( mbedtls_ecdh_context *ctx ) static int ecdh_setup_internal( mbedtls_ecdh_context_mbed *ctx, mbedtls_ecp_group_id grp_id ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ret = mbedtls_ecp_group_load( &ctx->grp, grp_id ); if( ret != 0 ) @@ -205,6 +217,13 @@ int mbedtls_ecdh_setup( mbedtls_ecdh_context *ctx, mbedtls_ecp_group_id grp_id ) #else switch( grp_id ) { +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) + case MBEDTLS_ECP_DP_CURVE25519: + ctx->point_format = MBEDTLS_ECP_PF_COMPRESSED; + ctx->var = MBEDTLS_ECDH_VARIANT_EVEREST; + ctx->grp_id = grp_id; + return( mbedtls_everest_setup( &ctx->ctx.everest_ecdh, grp_id ) ); +#endif default: ctx->point_format = MBEDTLS_ECP_PF_UNCOMPRESSED; ctx->var = MBEDTLS_ECDH_VARIANT_MBEDTLS_2_0; @@ -256,6 +275,11 @@ void mbedtls_ecdh_free( mbedtls_ecdh_context *ctx ) #else switch( ctx->var ) { +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) + case MBEDTLS_ECDH_VARIANT_EVEREST: + mbedtls_everest_free( &ctx->ctx.everest_ecdh ); + break; +#endif case MBEDTLS_ECDH_VARIANT_MBEDTLS_2_0: ecdh_free_internal( &ctx->ctx.mbed_ecdh ); break; @@ -278,7 +302,7 @@ static int ecdh_make_params_internal( mbedtls_ecdh_context_mbed *ctx, void *p_rng, int restart_enabled ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t grp_len, pt_len; #if defined(MBEDTLS_ECP_RESTARTABLE) mbedtls_ecp_restart_ctx *rs_ctx = NULL; @@ -321,7 +345,7 @@ static int ecdh_make_params_internal( mbedtls_ecdh_context_mbed *ctx, } /* - * Setup and write the ServerKeyExhange parameters (RFC 4492) + * Setup and write the ServerKeyExchange parameters (RFC 4492) * struct { * ECParameters curve_params; * ECPoint public; @@ -350,6 +374,11 @@ int mbedtls_ecdh_make_params( mbedtls_ecdh_context *ctx, size_t *olen, #else switch( ctx->var ) { +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) + case MBEDTLS_ECDH_VARIANT_EVEREST: + return( mbedtls_everest_make_params( &ctx->ctx.everest_ecdh, olen, + buf, blen, f_rng, p_rng ) ); +#endif case MBEDTLS_ECDH_VARIANT_MBEDTLS_2_0: return( ecdh_make_params_internal( &ctx->ctx.mbed_ecdh, olen, ctx->point_format, buf, blen, @@ -380,7 +409,7 @@ int mbedtls_ecdh_read_params( mbedtls_ecdh_context *ctx, const unsigned char **buf, const unsigned char *end ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecp_group_id grp_id; ECDH_VALIDATE_RET( ctx != NULL ); ECDH_VALIDATE_RET( buf != NULL ); @@ -399,6 +428,11 @@ int mbedtls_ecdh_read_params( mbedtls_ecdh_context *ctx, #else switch( ctx->var ) { +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) + case MBEDTLS_ECDH_VARIANT_EVEREST: + return( mbedtls_everest_read_params( &ctx->ctx.everest_ecdh, + buf, end) ); +#endif case MBEDTLS_ECDH_VARIANT_MBEDTLS_2_0: return( ecdh_read_params_internal( &ctx->ctx.mbed_ecdh, buf, end ) ); @@ -412,7 +446,7 @@ static int ecdh_get_params_internal( mbedtls_ecdh_context_mbed *ctx, const mbedtls_ecp_keypair *key, mbedtls_ecdh_side side ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; /* If it's not our key, just import the public part as Qp */ if( side == MBEDTLS_ECDH_THEIRS ) @@ -436,20 +470,43 @@ int mbedtls_ecdh_get_params( mbedtls_ecdh_context *ctx, const mbedtls_ecp_keypair *key, mbedtls_ecdh_side side ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ECDH_VALIDATE_RET( ctx != NULL ); ECDH_VALIDATE_RET( key != NULL ); ECDH_VALIDATE_RET( side == MBEDTLS_ECDH_OURS || side == MBEDTLS_ECDH_THEIRS ); - if( ( ret = mbedtls_ecdh_setup( ctx, key->grp.id ) ) != 0 ) - return( ret ); + if( mbedtls_ecdh_grp_id( ctx ) == MBEDTLS_ECP_DP_NONE ) + { + /* This is the first call to get_params(). Set up the context + * for use with the group. */ + if( ( ret = mbedtls_ecdh_setup( ctx, key->grp.id ) ) != 0 ) + return( ret ); + } + else + { + /* This is not the first call to get_params(). Check that the + * current key's group is the same as the context's, which was set + * from the first key's group. */ + if( mbedtls_ecdh_grp_id( ctx ) != key->grp.id ) + return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); + } #if defined(MBEDTLS_ECDH_LEGACY_CONTEXT) return( ecdh_get_params_internal( ctx, key, side ) ); #else switch( ctx->var ) { +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) + case MBEDTLS_ECDH_VARIANT_EVEREST: + { + mbedtls_everest_ecdh_side s = side == MBEDTLS_ECDH_OURS ? + MBEDTLS_EVEREST_ECDH_OURS : + MBEDTLS_EVEREST_ECDH_THEIRS; + return( mbedtls_everest_get_params( &ctx->ctx.everest_ecdh, + key, s) ); + } +#endif case MBEDTLS_ECDH_VARIANT_MBEDTLS_2_0: return( ecdh_get_params_internal( &ctx->ctx.mbed_ecdh, key, side ) ); @@ -468,7 +525,7 @@ static int ecdh_make_public_internal( mbedtls_ecdh_context_mbed *ctx, void *p_rng, int restart_enabled ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; #if defined(MBEDTLS_ECP_RESTARTABLE) mbedtls_ecp_restart_ctx *rs_ctx = NULL; #endif @@ -521,6 +578,11 @@ int mbedtls_ecdh_make_public( mbedtls_ecdh_context *ctx, size_t *olen, #else switch( ctx->var ) { +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) + case MBEDTLS_ECDH_VARIANT_EVEREST: + return( mbedtls_everest_make_public( &ctx->ctx.everest_ecdh, olen, + buf, blen, f_rng, p_rng ) ); +#endif case MBEDTLS_ECDH_VARIANT_MBEDTLS_2_0: return( ecdh_make_public_internal( &ctx->ctx.mbed_ecdh, olen, ctx->point_format, buf, blen, @@ -535,7 +597,7 @@ int mbedtls_ecdh_make_public( mbedtls_ecdh_context *ctx, size_t *olen, static int ecdh_read_public_internal( mbedtls_ecdh_context_mbed *ctx, const unsigned char *buf, size_t blen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const unsigned char *p = buf; if( ( ret = mbedtls_ecp_tls_read_point( &ctx->grp, &ctx->Qp, &p, @@ -562,6 +624,11 @@ int mbedtls_ecdh_read_public( mbedtls_ecdh_context *ctx, #else switch( ctx->var ) { +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) + case MBEDTLS_ECDH_VARIANT_EVEREST: + return( mbedtls_everest_read_public( &ctx->ctx.everest_ecdh, + buf, blen ) ); +#endif case MBEDTLS_ECDH_VARIANT_MBEDTLS_2_0: return( ecdh_read_public_internal( &ctx->ctx.mbed_ecdh, buf, blen ) ); @@ -580,7 +647,7 @@ static int ecdh_calc_secret_internal( mbedtls_ecdh_context_mbed *ctx, void *p_rng, int restart_enabled ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; #if defined(MBEDTLS_ECP_RESTARTABLE) mbedtls_ecp_restart_ctx *rs_ctx = NULL; #endif @@ -614,6 +681,10 @@ static int ecdh_calc_secret_internal( mbedtls_ecdh_context_mbed *ctx, return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); *olen = ctx->grp.pbits / 8 + ( ( ctx->grp.pbits % 8 ) != 0 ); + + if( mbedtls_ecp_get_type( &ctx->grp ) == MBEDTLS_ECP_TYPE_MONTGOMERY ) + return mbedtls_mpi_write_binary_le( &ctx->z, buf, *olen ); + return mbedtls_mpi_write_binary( &ctx->z, buf, *olen ); } @@ -640,6 +711,11 @@ int mbedtls_ecdh_calc_secret( mbedtls_ecdh_context *ctx, size_t *olen, #else switch( ctx->var ) { +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) + case MBEDTLS_ECDH_VARIANT_EVEREST: + return( mbedtls_everest_calc_secret( &ctx->ctx.everest_ecdh, olen, + buf, blen, f_rng, p_rng ) ); +#endif case MBEDTLS_ECDH_VARIANT_MBEDTLS_2_0: return( ecdh_calc_secret_internal( &ctx->ctx.mbed_ecdh, olen, buf, blen, f_rng, p_rng, diff --git a/Externals/mbedtls/library/ecdsa.c b/Externals/mbedtls/library/ecdsa.c index dc19384d614d..640eb24a26e1 100644 --- a/Externals/mbedtls/library/ecdsa.c +++ b/Externals/mbedtls/library/ecdsa.c @@ -1,7 +1,7 @@ /* * Elliptic curve DSA * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -25,11 +23,7 @@ * SEC1 http://www.secg.org/index.php?action=secg,docs_secg */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_ECDSA_C) @@ -51,6 +45,7 @@ #endif #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" /* Parameter validation macros based on platform_util.h */ #define ECDSA_VALIDATE_RET( cond ) \ @@ -172,11 +167,11 @@ static void ecdsa_restart_det_free( mbedtls_ecdsa_restart_det_ctx *ctx ) } #endif /* MBEDTLS_ECDSA_DETERMINISTIC */ -#define ECDSA_RS_ECP &rs_ctx->ecp +#define ECDSA_RS_ECP ( rs_ctx == NULL ? NULL : &rs_ctx->ecp ) /* Utility macro for checking and updating ops budget */ #define ECDSA_BUDGET( ops ) \ - MBEDTLS_MPI_CHK( mbedtls_ecp_check_budget( grp, &rs_ctx->ecp, ops ) ); + MBEDTLS_MPI_CHK( mbedtls_ecp_check_budget( grp, ECDSA_RS_ECP, ops ) ); /* Call this when entering a function that needs its own sub-context */ #define ECDSA_RS_ENTER( SUB ) do { \ @@ -222,6 +217,9 @@ static void ecdsa_restart_det_free( mbedtls_ecdsa_restart_det_ctx *ctx ) #endif /* MBEDTLS_ECP_RESTARTABLE */ +#if defined(MBEDTLS_ECDSA_DETERMINISTIC) || \ + !defined(MBEDTLS_ECDSA_SIGN_ALT) || \ + !defined(MBEDTLS_ECDSA_VERIFY_ALT) /* * Derive a suitable integer for group grp from a buffer of length len * SEC1 4.1.3 step 5 aka SEC1 4.1.4 step 3 @@ -229,7 +227,7 @@ static void ecdsa_restart_det_free( mbedtls_ecdsa_restart_det_ctx *ctx ) static int derive_mpi( const mbedtls_ecp_group *grp, mbedtls_mpi *x, const unsigned char *buf, size_t blen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n_size = ( grp->nbits + 7 ) / 8; size_t use_size = blen > n_size ? n_size : blen; @@ -244,6 +242,7 @@ static int derive_mpi( const mbedtls_ecp_group *grp, mbedtls_mpi *x, cleanup: return( ret ); } +#endif /* ECDSA_DETERMINISTIC || !ECDSA_SIGN_ALT || !ECDSA_VERIFY_ALT */ #if !defined(MBEDTLS_ECDSA_SIGN_ALT) /* @@ -254,6 +253,8 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, const mbedtls_mpi *d, const unsigned char *buf, size_t blen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + int (*f_rng_blind)(void *, unsigned char *, size_t), + void *p_rng_blind, mbedtls_ecdsa_restart_ctx *rs_ctx ) { int ret, key_tries, sign_tries; @@ -263,7 +264,7 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, mbedtls_mpi *pk = &k, *pr = r; /* Fail cleanly on curves such as Curve25519 that can't be used for ECDSA */ - if( grp->N.p == NULL ) + if( ! mbedtls_ecdsa_can_do( grp->id ) || grp->N.p == NULL ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); /* Make sure d is in range 1..n-1 */ @@ -295,7 +296,7 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, *p_sign_tries = 0; do { - if( *p_sign_tries++ > 10 ) + if( (*p_sign_tries)++ > 10 ) { ret = MBEDTLS_ERR_ECP_RANDOM_FAILED; goto cleanup; @@ -308,7 +309,7 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, *p_key_tries = 0; do { - if( *p_key_tries++ > 10 ) + if( (*p_key_tries)++ > 10 ) { ret = MBEDTLS_ERR_ECP_RANDOM_FAILED; goto cleanup; @@ -323,7 +324,9 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, mul: #endif MBEDTLS_MPI_CHK( mbedtls_ecp_mul_restartable( grp, &R, pk, &grp->G, - f_rng, p_rng, ECDSA_RS_ECP ) ); + f_rng_blind, + p_rng_blind, + ECDSA_RS_ECP ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( pr, &R.X, &grp->N ) ); } while( mbedtls_mpi_cmp_int( pr, 0 ) == 0 ); @@ -349,7 +352,8 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, * Generate a random value to blind inv_mod in next step, * avoiding a potential timing leak. */ - MBEDTLS_MPI_CHK( mbedtls_ecp_gen_privkey( grp, &t, f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( mbedtls_ecp_gen_privkey( grp, &t, f_rng_blind, + p_rng_blind ) ); /* * Step 6: compute s = (e + r * d) / k = t (e + rd) / (kt) mod n @@ -358,6 +362,7 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( &e, &e, s ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &e, &e, &t ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( pk, pk, &t ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( pk, pk, &grp->N ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( s, pk, &grp->N ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( s, s, &e ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( s, s, &grp->N ) ); @@ -378,6 +383,20 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, return( ret ); } +int mbedtls_ecdsa_can_do( mbedtls_ecp_group_id gid ) +{ + switch( gid ) + { +#ifdef MBEDTLS_ECP_DP_CURVE25519_ENABLED + case MBEDTLS_ECP_DP_CURVE25519: return 0; +#endif +#ifdef MBEDTLS_ECP_DP_CURVE448_ENABLED + case MBEDTLS_ECP_DP_CURVE448: return 0; +#endif + default: return 1; + } +} + /* * Compute ECDSA signature of a hashed message */ @@ -392,8 +411,9 @@ int mbedtls_ecdsa_sign( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, ECDSA_VALIDATE_RET( f_rng != NULL ); ECDSA_VALIDATE_RET( buf != NULL || blen == 0 ); + /* Use the same RNG for both blinding and ephemeral key generation */ return( ecdsa_sign_restartable( grp, r, s, d, buf, blen, - f_rng, p_rng, NULL ) ); + f_rng, p_rng, f_rng, p_rng, NULL ) ); } #endif /* !MBEDTLS_ECDSA_SIGN_ALT */ @@ -405,9 +425,11 @@ static int ecdsa_sign_det_restartable( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, const mbedtls_mpi *d, const unsigned char *buf, size_t blen, mbedtls_md_type_t md_alg, + int (*f_rng_blind)(void *, unsigned char *, size_t), + void *p_rng_blind, mbedtls_ecdsa_restart_ctx *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_hmac_drbg_context rng_ctx; mbedtls_hmac_drbg_context *p_rng = &rng_ctx; unsigned char data[2 * MBEDTLS_ECP_MAX_BYTES]; @@ -448,11 +470,74 @@ static int ecdsa_sign_det_restartable( mbedtls_ecp_group *grp, sign: #endif #if defined(MBEDTLS_ECDSA_SIGN_ALT) + (void) f_rng_blind; + (void) p_rng_blind; ret = mbedtls_ecdsa_sign( grp, r, s, d, buf, blen, mbedtls_hmac_drbg_random, p_rng ); #else - ret = ecdsa_sign_restartable( grp, r, s, d, buf, blen, - mbedtls_hmac_drbg_random, p_rng, rs_ctx ); + if( f_rng_blind != NULL ) + ret = ecdsa_sign_restartable( grp, r, s, d, buf, blen, + mbedtls_hmac_drbg_random, p_rng, + f_rng_blind, p_rng_blind, rs_ctx ); + else + { + mbedtls_hmac_drbg_context *p_rng_blind_det; + +#if !defined(MBEDTLS_ECP_RESTARTABLE) + /* + * To avoid reusing rng_ctx and risking incorrect behavior we seed a + * second HMAC-DRBG with the same seed. We also apply a label to avoid + * reusing the bits of the ephemeral key for blinding and eliminate the + * risk that they leak this way. + */ + const char* blind_label = "BLINDING CONTEXT"; + mbedtls_hmac_drbg_context rng_ctx_blind; + + mbedtls_hmac_drbg_init( &rng_ctx_blind ); + p_rng_blind_det = &rng_ctx_blind; + mbedtls_hmac_drbg_seed_buf( p_rng_blind_det, md_info, + data, 2 * grp_len ); + ret = mbedtls_hmac_drbg_update_ret( p_rng_blind_det, + (const unsigned char*) blind_label, + strlen( blind_label ) ); + if( ret != 0 ) + { + mbedtls_hmac_drbg_free( &rng_ctx_blind ); + goto cleanup; + } +#else + /* + * In the case of restartable computations we would either need to store + * the second RNG in the restart context too or set it up at every + * restart. The first option would penalize the correct application of + * the function and the second would defeat the purpose of the + * restartable feature. + * + * Therefore in this case we reuse the original RNG. This comes with the + * price that the resulting signature might not be a valid deterministic + * ECDSA signature with a very low probability (same magnitude as + * successfully guessing the private key). However even then it is still + * a valid ECDSA signature. + */ + p_rng_blind_det = p_rng; +#endif /* MBEDTLS_ECP_RESTARTABLE */ + + /* + * Since the output of the RNGs is always the same for the same key and + * message, this limits the efficiency of blinding and leaks information + * through side channels. After mbedtls_ecdsa_sign_det() is removed NULL + * won't be a valid value for f_rng_blind anymore. Therefore it should + * be checked by the caller and this branch and check can be removed. + */ + ret = ecdsa_sign_restartable( grp, r, s, d, buf, blen, + mbedtls_hmac_drbg_random, p_rng, + mbedtls_hmac_drbg_random, p_rng_blind_det, + rs_ctx ); + +#if !defined(MBEDTLS_ECP_RESTARTABLE) + mbedtls_hmac_drbg_free( &rng_ctx_blind ); +#endif + } #endif /* MBEDTLS_ECDSA_SIGN_ALT */ cleanup: @@ -465,19 +550,43 @@ static int ecdsa_sign_det_restartable( mbedtls_ecp_group *grp, } /* - * Deterministic signature wrapper + * Deterministic signature wrappers */ -int mbedtls_ecdsa_sign_det( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, - const mbedtls_mpi *d, const unsigned char *buf, size_t blen, - mbedtls_md_type_t md_alg ) + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +int mbedtls_ecdsa_sign_det( mbedtls_ecp_group *grp, mbedtls_mpi *r, + mbedtls_mpi *s, const mbedtls_mpi *d, + const unsigned char *buf, size_t blen, + mbedtls_md_type_t md_alg ) +{ + ECDSA_VALIDATE_RET( grp != NULL ); + ECDSA_VALIDATE_RET( r != NULL ); + ECDSA_VALIDATE_RET( s != NULL ); + ECDSA_VALIDATE_RET( d != NULL ); + ECDSA_VALIDATE_RET( buf != NULL || blen == 0 ); + + return( ecdsa_sign_det_restartable( grp, r, s, d, buf, blen, md_alg, + NULL, NULL, NULL ) ); +} +#endif /* MBEDTLS_DEPRECATED_REMOVED */ + +int mbedtls_ecdsa_sign_det_ext( mbedtls_ecp_group *grp, mbedtls_mpi *r, + mbedtls_mpi *s, const mbedtls_mpi *d, + const unsigned char *buf, size_t blen, + mbedtls_md_type_t md_alg, + int (*f_rng_blind)(void *, unsigned char *, + size_t), + void *p_rng_blind ) { ECDSA_VALIDATE_RET( grp != NULL ); ECDSA_VALIDATE_RET( r != NULL ); ECDSA_VALIDATE_RET( s != NULL ); ECDSA_VALIDATE_RET( d != NULL ); ECDSA_VALIDATE_RET( buf != NULL || blen == 0 ); + ECDSA_VALIDATE_RET( f_rng_blind != NULL ); - return( ecdsa_sign_det_restartable( grp, r, s, d, buf, blen, md_alg, NULL ) ); + return( ecdsa_sign_det_restartable( grp, r, s, d, buf, blen, md_alg, + f_rng_blind, p_rng_blind, NULL ) ); } #endif /* MBEDTLS_ECDSA_DETERMINISTIC */ @@ -492,7 +601,7 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp, const mbedtls_mpi *r, const mbedtls_mpi *s, mbedtls_ecdsa_restart_ctx *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_mpi e, s_inv, u1, u2; mbedtls_ecp_point R; mbedtls_mpi *pu1 = &u1, *pu2 = &u2; @@ -502,7 +611,7 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp, mbedtls_mpi_init( &u1 ); mbedtls_mpi_init( &u2 ); /* Fail cleanly on curves such as Curve25519 that can't be used for ECDSA */ - if( grp->N.p == NULL ) + if( ! mbedtls_ecdsa_can_do( grp->id ) || grp->N.p == NULL ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); ECDSA_RS_ENTER( ver ); @@ -616,8 +725,8 @@ int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp, static int ecdsa_signature_to_asn1( const mbedtls_mpi *r, const mbedtls_mpi *s, unsigned char *sig, size_t *slen ) { - int ret; - unsigned char buf[MBEDTLS_ECDSA_MAX_LEN]; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + unsigned char buf[MBEDTLS_ECDSA_MAX_LEN] = {0}; unsigned char *p = buf + sizeof( buf ); size_t len = 0; @@ -645,7 +754,7 @@ int mbedtls_ecdsa_write_signature_restartable( mbedtls_ecdsa_context *ctx, void *p_rng, mbedtls_ecdsa_restart_ctx *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_mpi r, s; ECDSA_VALIDATE_RET( ctx != NULL ); ECDSA_VALIDATE_RET( hash != NULL ); @@ -656,20 +765,22 @@ int mbedtls_ecdsa_write_signature_restartable( mbedtls_ecdsa_context *ctx, mbedtls_mpi_init( &s ); #if defined(MBEDTLS_ECDSA_DETERMINISTIC) - (void) f_rng; - (void) p_rng; - MBEDTLS_MPI_CHK( ecdsa_sign_det_restartable( &ctx->grp, &r, &s, &ctx->d, - hash, hlen, md_alg, rs_ctx ) ); + hash, hlen, md_alg, f_rng, + p_rng, rs_ctx ) ); #else (void) md_alg; #if defined(MBEDTLS_ECDSA_SIGN_ALT) + (void) rs_ctx; + MBEDTLS_MPI_CHK( mbedtls_ecdsa_sign( &ctx->grp, &r, &s, &ctx->d, hash, hlen, f_rng, p_rng ) ); #else + /* Use the same RNG for both blinding and ephemeral key generation */ MBEDTLS_MPI_CHK( ecdsa_sign_restartable( &ctx->grp, &r, &s, &ctx->d, - hash, hlen, f_rng, p_rng, rs_ctx ) ); + hash, hlen, f_rng, p_rng, f_rng, + p_rng, rs_ctx ) ); #endif /* MBEDTLS_ECDSA_SIGN_ALT */ #endif /* MBEDTLS_ECDSA_DETERMINISTIC */ @@ -738,7 +849,7 @@ int mbedtls_ecdsa_read_signature_restartable( mbedtls_ecdsa_context *ctx, const unsigned char *sig, size_t slen, mbedtls_ecdsa_restart_ctx *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *p = (unsigned char *) sig; const unsigned char *end = sig + slen; size_t len; @@ -759,8 +870,8 @@ int mbedtls_ecdsa_read_signature_restartable( mbedtls_ecdsa_context *ctx, if( p + len != end ) { - ret = MBEDTLS_ERR_ECP_BAD_INPUT_DATA + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH; + ret = MBEDTLS_ERROR_ADD( MBEDTLS_ERR_ECP_BAD_INPUT_DATA, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); goto cleanup; } @@ -771,6 +882,8 @@ int mbedtls_ecdsa_read_signature_restartable( mbedtls_ecdsa_context *ctx, goto cleanup; } #if defined(MBEDTLS_ECDSA_VERIFY_ALT) + (void) rs_ctx; + if( ( ret = mbedtls_ecdsa_verify( &ctx->grp, hash, hlen, &ctx->Q, &r, &s ) ) != 0 ) goto cleanup; @@ -818,7 +931,7 @@ int mbedtls_ecdsa_genkey( mbedtls_ecdsa_context *ctx, mbedtls_ecp_group_id gid, */ int mbedtls_ecdsa_from_keypair( mbedtls_ecdsa_context *ctx, const mbedtls_ecp_keypair *key ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ECDSA_VALIDATE_RET( ctx != NULL ); ECDSA_VALIDATE_RET( key != NULL ); diff --git a/Externals/mbedtls/library/ecjpake.c b/Externals/mbedtls/library/ecjpake.c index be941b14b115..368b6c7124bf 100644 --- a/Externals/mbedtls/library/ecjpake.c +++ b/Externals/mbedtls/library/ecjpake.c @@ -1,7 +1,7 @@ /* * Elliptic curve J-PAKE * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -24,16 +22,13 @@ * available to members of the Thread Group http://threadgroup.org/ */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_ECJPAKE_C) #include "mbedtls/ecjpake.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -110,7 +105,7 @@ int mbedtls_ecjpake_setup( mbedtls_ecjpake_context *ctx, const unsigned char *secret, size_t len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ECJPAKE_VALIDATE_RET( ctx != NULL ); ECJPAKE_VALIDATE_RET( role == MBEDTLS_ECJPAKE_CLIENT || @@ -159,7 +154,7 @@ static int ecjpake_write_len_point( unsigned char **p, const int pf, const mbedtls_ecp_point *P ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; /* Need at least 4 for length plus 1 for point */ @@ -171,10 +166,7 @@ static int ecjpake_write_len_point( unsigned char **p, if( ret != 0 ) return( ret ); - (*p)[0] = (unsigned char)( ( len >> 24 ) & 0xFF ); - (*p)[1] = (unsigned char)( ( len >> 16 ) & 0xFF ); - (*p)[2] = (unsigned char)( ( len >> 8 ) & 0xFF ); - (*p)[3] = (unsigned char)( ( len ) & 0xFF ); + MBEDTLS_PUT_UINT32_BE( len, *p, 0 ); *p += 4 + len; @@ -199,7 +191,7 @@ static int ecjpake_hash( const mbedtls_md_info_t *md_info, const char *id, mbedtls_mpi *h ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char buf[ECJPAKE_HASH_BUF_LEN]; unsigned char *p = buf; const unsigned char *end = buf + sizeof( buf ); @@ -214,10 +206,8 @@ static int ecjpake_hash( const mbedtls_md_info_t *md_info, if( end - p < 4 ) return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL ); - *p++ = (unsigned char)( ( id_len >> 24 ) & 0xFF ); - *p++ = (unsigned char)( ( id_len >> 16 ) & 0xFF ); - *p++ = (unsigned char)( ( id_len >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( id_len ) & 0xFF ); + MBEDTLS_PUT_UINT32_BE( id_len, p, 0 ); + p += 4; if( end < p || (size_t)( end - p ) < id_len ) return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL ); @@ -226,7 +216,7 @@ static int ecjpake_hash( const mbedtls_md_info_t *md_info, p += id_len; /* Compute hash */ - mbedtls_md( md_info, buf, p - buf, hash ); + MBEDTLS_MPI_CHK( mbedtls_md( md_info, buf, p - buf, hash ) ); /* Turn it into an integer mod n */ MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( h, hash, @@ -249,7 +239,7 @@ static int ecjpake_zkp_read( const mbedtls_md_info_t *md_info, const unsigned char **p, const unsigned char *end ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecp_point V, VV; mbedtls_mpi r, h; size_t r_len; @@ -278,7 +268,7 @@ static int ecjpake_zkp_read( const mbedtls_md_info_t *md_info, r_len = *(*p)++; - if( end < *p || (size_t)( end - *p ) < r_len ) + if( end < *p || (size_t)( end - *p ) < r_len || r_len == 0 ) { ret = MBEDTLS_ERR_ECP_BAD_INPUT_DATA; goto cleanup; @@ -324,7 +314,7 @@ static int ecjpake_zkp_write( const mbedtls_md_info_t *md_info, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecp_point V; mbedtls_mpi v; mbedtls_mpi h; /* later recycled to hold r */ @@ -357,7 +347,7 @@ static int ecjpake_zkp_write( const mbedtls_md_info_t *md_info, goto cleanup; } - *(*p)++ = (unsigned char)( len & 0xFF ); + *(*p)++ = MBEDTLS_BYTE_0( len ); MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &h, *p, len ) ); /* r */ *p += len; @@ -382,7 +372,7 @@ static int ecjpake_kkp_read( const mbedtls_md_info_t *md_info, const unsigned char **p, const unsigned char *end ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( end < *p ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); @@ -422,7 +412,7 @@ static int ecjpake_kkp_write( const mbedtls_md_info_t *md_info, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; if( end < *p ) @@ -457,7 +447,7 @@ static int ecjpake_kkpp_read( const mbedtls_md_info_t *md_info, const unsigned char *buf, size_t len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const unsigned char *p = buf; const unsigned char *end = buf + len; @@ -495,7 +485,7 @@ static int ecjpake_kkpp_write( const mbedtls_md_info_t *md_info, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *p = buf; const unsigned char *end = buf + len; @@ -553,7 +543,7 @@ static int ecjpake_ecp_add3( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_ecp_point *B, const mbedtls_ecp_point *C ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_mpi one; mbedtls_mpi_init( &one ); @@ -575,7 +565,7 @@ int mbedtls_ecjpake_read_round_two( mbedtls_ecjpake_context *ctx, const unsigned char *buf, size_t len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const unsigned char *p = buf; const unsigned char *end = buf + len; mbedtls_ecp_group grp; @@ -639,7 +629,7 @@ static int ecjpake_mul_secret( mbedtls_mpi *R, int sign, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_mpi b; /* Blinding value, then s + N * blinding */ mbedtls_mpi_init( &b ); @@ -668,7 +658,7 @@ int mbedtls_ecjpake_write_round_two( mbedtls_ecjpake_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecp_point G; /* C: GA, S: GB */ mbedtls_ecp_point Xm; /* C: Xc, S: Xs */ mbedtls_mpi xm; /* C: xc, S: xs */ @@ -750,7 +740,7 @@ int mbedtls_ecjpake_derive_secret( mbedtls_ecjpake_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecp_point K; mbedtls_mpi m_xm2_s, one; unsigned char kx[MBEDTLS_ECP_MAX_BYTES]; @@ -825,6 +815,8 @@ static const unsigned char ecjpake_test_password[] = { 0x65, 0x73, 0x74 }; +#if !defined(MBEDTLS_ECJPAKE_ALT) + static const unsigned char ecjpake_test_x1[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, @@ -951,12 +943,12 @@ static const unsigned char ecjpake_test_pms[] = { 0xb4, 0x38, 0xf7, 0x19, 0xd3, 0xc4, 0xf3, 0x51 }; -/* Load my private keys and generate the correponding public keys */ +/* Load my private keys and generate the corresponding public keys */ static int ecjpake_test_load( mbedtls_ecjpake_context *ctx, const unsigned char *xm1, size_t len1, const unsigned char *xm2, size_t len2 ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &ctx->xm1, xm1, len1 ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &ctx->xm2, xm2, len2 ) ); @@ -969,6 +961,8 @@ static int ecjpake_test_load( mbedtls_ecjpake_context *ctx, return( ret ); } +#endif /* ! MBEDTLS_ECJPAKE_ALT */ + /* For tests we don't need a secure RNG; * use the LGC from Numerical Recipes for simplicity */ static int ecjpake_lgc( void *p, unsigned char *out, size_t len ) @@ -1004,7 +998,7 @@ static int ecjpake_lgc( void *p, unsigned char *out, size_t len ) */ int mbedtls_ecjpake_self_test( int verbose ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecjpake_context cli; mbedtls_ecjpake_context srv; unsigned char buf[512], pms[32]; @@ -1064,6 +1058,12 @@ int mbedtls_ecjpake_self_test( int verbose ) if( verbose != 0 ) mbedtls_printf( "passed\n" ); +#if !defined(MBEDTLS_ECJPAKE_ALT) + /* 'reference handshake' tests can only be run against implementations + * for which we have 100% control over how the random ephemeral keys + * are generated. This is only the case for the internal mbed TLS + * implementation, so these tests are skipped in case the internal + * implementation is swapped out for an alternative one. */ if( verbose != 0 ) mbedtls_printf( " ECJPAKE test #2 (reference handshake): " ); @@ -1112,6 +1112,7 @@ int mbedtls_ecjpake_self_test( int verbose ) if( verbose != 0 ) mbedtls_printf( "passed\n" ); +#endif /* ! MBEDTLS_ECJPAKE_ALT */ cleanup: mbedtls_ecjpake_free( &cli ); diff --git a/Externals/mbedtls/library/ecp.c b/Externals/mbedtls/library/ecp.c index ecea5910e077..7f9e1045d4b9 100644 --- a/Externals/mbedtls/library/ecp.c +++ b/Externals/mbedtls/library/ecp.c @@ -1,7 +1,7 @@ /* * Elliptic curves over GF(p): generic functions * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -41,11 +39,7 @@ * */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" /** * \brief Function level alternative implementation. @@ -81,6 +75,10 @@ #include "mbedtls/ecp.h" #include "mbedtls/threading.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" +#include "mbedtls/bn_mul.h" + +#include "ecp_invasive.h" #include @@ -104,6 +102,16 @@ #include "mbedtls/ecp_internal.h" +#if !defined(MBEDTLS_ECP_NO_INTERNAL_RNG) +#if defined(MBEDTLS_HMAC_DRBG_C) +#include "mbedtls/hmac_drbg.h" +#elif defined(MBEDTLS_CTR_DRBG_C) +#include "mbedtls/ctr_drbg.h" +#else +#error "Invalid configuration detected. Include check_config.h to ensure that the configuration is valid." +#endif +#endif /* MBEDTLS_ECP_NO_INTERNAL_RNG */ + #if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ !defined(inline) && !defined(__cplusplus) #define inline __inline @@ -117,6 +125,144 @@ static unsigned long add_count, dbl_count, mul_count; #endif +#if !defined(MBEDTLS_ECP_NO_INTERNAL_RNG) +/* + * Currently ecp_mul() takes a RNG function as an argument, used for + * side-channel protection, but it can be NULL. The initial reasoning was + * that people will pass non-NULL RNG when they care about side-channels, but + * unfortunately we have some APIs that call ecp_mul() with a NULL RNG, with + * no opportunity for the user to do anything about it. + * + * The obvious strategies for addressing that include: + * - change those APIs so that they take RNG arguments; + * - require a global RNG to be available to all crypto modules. + * + * Unfortunately those would break compatibility. So what we do instead is + * have our own internal DRBG instance, seeded from the secret scalar. + * + * The following is a light-weight abstraction layer for doing that with + * HMAC_DRBG (first choice) or CTR_DRBG. + */ + +#if defined(MBEDTLS_HMAC_DRBG_C) + +/* DRBG context type */ +typedef mbedtls_hmac_drbg_context ecp_drbg_context; + +/* DRBG context init */ +static inline void ecp_drbg_init( ecp_drbg_context *ctx ) +{ + mbedtls_hmac_drbg_init( ctx ); +} + +/* DRBG context free */ +static inline void ecp_drbg_free( ecp_drbg_context *ctx ) +{ + mbedtls_hmac_drbg_free( ctx ); +} + +/* DRBG function */ +static inline int ecp_drbg_random( void *p_rng, + unsigned char *output, size_t output_len ) +{ + return( mbedtls_hmac_drbg_random( p_rng, output, output_len ) ); +} + +/* DRBG context seeding */ +static int ecp_drbg_seed( ecp_drbg_context *ctx, + const mbedtls_mpi *secret, size_t secret_len ) +{ + int ret; + unsigned char secret_bytes[MBEDTLS_ECP_MAX_BYTES]; + /* The list starts with strong hashes */ + const mbedtls_md_type_t md_type = mbedtls_md_list()[0]; + const mbedtls_md_info_t *md_info = mbedtls_md_info_from_type( md_type ); + + if( secret_len > MBEDTLS_ECP_MAX_BYTES ) + { + ret = MBEDTLS_ERR_ECP_RANDOM_FAILED; + goto cleanup; + } + + MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( secret, + secret_bytes, secret_len ) ); + + ret = mbedtls_hmac_drbg_seed_buf( ctx, md_info, secret_bytes, secret_len ); + +cleanup: + mbedtls_platform_zeroize( secret_bytes, secret_len ); + + return( ret ); +} + +#elif defined(MBEDTLS_CTR_DRBG_C) + +/* DRBG context type */ +typedef mbedtls_ctr_drbg_context ecp_drbg_context; + +/* DRBG context init */ +static inline void ecp_drbg_init( ecp_drbg_context *ctx ) +{ + mbedtls_ctr_drbg_init( ctx ); +} + +/* DRBG context free */ +static inline void ecp_drbg_free( ecp_drbg_context *ctx ) +{ + mbedtls_ctr_drbg_free( ctx ); +} + +/* DRBG function */ +static inline int ecp_drbg_random( void *p_rng, + unsigned char *output, size_t output_len ) +{ + return( mbedtls_ctr_drbg_random( p_rng, output, output_len ) ); +} + +/* + * Since CTR_DRBG doesn't have a seed_buf() function the way HMAC_DRBG does, + * we need to pass an entropy function when seeding. So we use a dummy + * function for that, and pass the actual entropy as customisation string. + * (During seeding of CTR_DRBG the entropy input and customisation string are + * concatenated before being used to update the secret state.) + */ +static int ecp_ctr_drbg_null_entropy(void *ctx, unsigned char *out, size_t len) +{ + (void) ctx; + memset( out, 0, len ); + return( 0 ); +} + +/* DRBG context seeding */ +static int ecp_drbg_seed( ecp_drbg_context *ctx, + const mbedtls_mpi *secret, size_t secret_len ) +{ + int ret; + unsigned char secret_bytes[MBEDTLS_ECP_MAX_BYTES]; + + if( secret_len > MBEDTLS_ECP_MAX_BYTES ) + { + ret = MBEDTLS_ERR_ECP_RANDOM_FAILED; + goto cleanup; + } + + MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( secret, + secret_bytes, secret_len ) ); + + ret = mbedtls_ctr_drbg_seed( ctx, ecp_ctr_drbg_null_entropy, NULL, + secret_bytes, secret_len ); + +cleanup: + mbedtls_platform_zeroize( secret_bytes, secret_len ); + + return( ret ); +} + +#else +#error "Invalid configuration detected. Include check_config.h to ensure that the configuration is valid." +#endif /* DRBG modules */ +#endif /* MBEDTLS_ECP_NO_INTERNAL_RNG */ + #if defined(MBEDTLS_ECP_RESTARTABLE) /* * Maximum number of "basic operations" to be done in a row. @@ -164,6 +310,10 @@ struct mbedtls_ecp_restart_mul ecp_rsm_comb_core, /* ecp_mul_comb_core() */ ecp_rsm_final_norm, /* do the final normalization */ } state; +#if !defined(MBEDTLS_ECP_NO_INTERNAL_RNG) + ecp_drbg_context drbg_ctx; + unsigned char drbg_seeded; +#endif }; /* @@ -176,6 +326,10 @@ static void ecp_restart_rsm_init( mbedtls_ecp_restart_mul_ctx *ctx ) ctx->T = NULL; ctx->T_size = 0; ctx->state = ecp_rsm_init; +#if !defined(MBEDTLS_ECP_NO_INTERNAL_RNG) + ecp_drbg_init( &ctx->drbg_ctx ); + ctx->drbg_seeded = 0; +#endif } /* @@ -197,6 +351,10 @@ static void ecp_restart_rsm_free( mbedtls_ecp_restart_mul_ctx *ctx ) mbedtls_free( ctx->T ); } +#if !defined(MBEDTLS_ECP_NO_INTERNAL_RNG) + ecp_drbg_free( &ctx->drbg_ctx ); +#endif + ecp_restart_rsm_init( ctx ); } @@ -344,39 +502,10 @@ int mbedtls_ecp_check_budget( const mbedtls_ecp_group *grp, #endif /* MBEDTLS_ECP_RESTARTABLE */ -#if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) || \ - defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) || \ - defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) || \ - defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) || \ - defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) || \ - defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) || \ - defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) || \ - defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) || \ - defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) || \ - defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) || \ - defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) -#define ECP_SHORTWEIERSTRASS -#endif - -#if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) || \ - defined(MBEDTLS_ECP_DP_CURVE448_ENABLED) -#define ECP_MONTGOMERY -#endif - -/* - * Curve types: internal for now, might be exposed later - */ -typedef enum -{ - ECP_TYPE_NONE = 0, - ECP_TYPE_SHORT_WEIERSTRASS, /* y^2 = x^3 + a x + b */ - ECP_TYPE_MONTGOMERY, /* y^2 = x^3 + a x^2 + x */ -} ecp_curve_type; - /* * List of supported curves: * - internal ID - * - TLS NamedCurve ID (RFC 4492 sec. 5.1.1, RFC 7071 sec. 2) + * - TLS NamedCurve ID (RFC 4492 sec. 5.1.1, RFC 7071 sec. 2, RFC 8446 sec. 4.2.7) * - size in bits * - readable name * @@ -419,6 +548,12 @@ static const mbedtls_ecp_curve_info ecp_supported_curves[] = #endif #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) { MBEDTLS_ECP_DP_SECP192K1, 18, 192, "secp192k1" }, +#endif +#if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) + { MBEDTLS_ECP_DP_CURVE25519, 29, 256, "x25519" }, +#endif +#if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED) + { MBEDTLS_ECP_DP_CURVE448, 30, 448, "x448" }, #endif { MBEDTLS_ECP_DP_NONE, 0, 0, NULL }, }; @@ -522,15 +657,15 @@ const mbedtls_ecp_curve_info *mbedtls_ecp_curve_info_from_name( const char *name /* * Get the type of a curve */ -static inline ecp_curve_type ecp_get_type( const mbedtls_ecp_group *grp ) +mbedtls_ecp_curve_type mbedtls_ecp_get_type( const mbedtls_ecp_group *grp ) { if( grp->G.X.p == NULL ) - return( ECP_TYPE_NONE ); + return( MBEDTLS_ECP_TYPE_NONE ); if( grp->G.Y.p == NULL ) - return( ECP_TYPE_MONTGOMERY ); + return( MBEDTLS_ECP_TYPE_MONTGOMERY ); else - return( ECP_TYPE_SHORT_WEIERSTRASS ); + return( MBEDTLS_ECP_TYPE_SHORT_WEIERSTRASS ); } /* @@ -641,7 +776,7 @@ void mbedtls_ecp_keypair_free( mbedtls_ecp_keypair *key ) */ int mbedtls_ecp_copy( mbedtls_ecp_point *P, const mbedtls_ecp_point *Q ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ECP_VALIDATE_RET( P != NULL ); ECP_VALIDATE_RET( Q != NULL ); @@ -669,7 +804,7 @@ int mbedtls_ecp_group_copy( mbedtls_ecp_group *dst, const mbedtls_ecp_group *src */ int mbedtls_ecp_set_zero( mbedtls_ecp_point *pt ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ECP_VALIDATE_RET( pt != NULL ); MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &pt->X , 1 ) ); @@ -715,7 +850,7 @@ int mbedtls_ecp_point_cmp( const mbedtls_ecp_point *P, int mbedtls_ecp_point_read_string( mbedtls_ecp_point *P, int radix, const char *x, const char *y ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ECP_VALIDATE_RET( P != NULL ); ECP_VALIDATE_RET( x != NULL ); ECP_VALIDATE_RET( y != NULL ); @@ -729,14 +864,14 @@ int mbedtls_ecp_point_read_string( mbedtls_ecp_point *P, int radix, } /* - * Export a point into unsigned binary data (SEC1 2.3.3) + * Export a point into unsigned binary data (SEC1 2.3.3 and RFC7748) */ int mbedtls_ecp_point_write_binary( const mbedtls_ecp_group *grp, const mbedtls_ecp_point *P, int format, size_t *olen, unsigned char *buf, size_t buflen ) { - int ret = 0; + int ret = MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE; size_t plen; ECP_VALIDATE_RET( grp != NULL ); ECP_VALIDATE_RET( P != NULL ); @@ -745,56 +880,72 @@ int mbedtls_ecp_point_write_binary( const mbedtls_ecp_group *grp, ECP_VALIDATE_RET( format == MBEDTLS_ECP_PF_UNCOMPRESSED || format == MBEDTLS_ECP_PF_COMPRESSED ); - /* - * Common case: P == 0 - */ - if( mbedtls_mpi_cmp_int( &P->Z, 0 ) == 0 ) - { - if( buflen < 1 ) - return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL ); - - buf[0] = 0x00; - *olen = 1; - - return( 0 ); - } - plen = mbedtls_mpi_size( &grp->P ); - if( format == MBEDTLS_ECP_PF_UNCOMPRESSED ) +#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) + (void) format; /* Montgomery curves always use the same point format */ + if( mbedtls_ecp_get_type( grp ) == MBEDTLS_ECP_TYPE_MONTGOMERY ) { - *olen = 2 * plen + 1; - + *olen = plen; if( buflen < *olen ) return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL ); - buf[0] = 0x04; - MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &P->X, buf + 1, plen ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &P->Y, buf + 1 + plen, plen ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary_le( &P->X, buf, plen ) ); } - else if( format == MBEDTLS_ECP_PF_COMPRESSED ) +#endif +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) + if( mbedtls_ecp_get_type( grp ) == MBEDTLS_ECP_TYPE_SHORT_WEIERSTRASS ) { - *olen = plen + 1; + /* + * Common case: P == 0 + */ + if( mbedtls_mpi_cmp_int( &P->Z, 0 ) == 0 ) + { + if( buflen < 1 ) + return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL ); - if( buflen < *olen ) - return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL ); + buf[0] = 0x00; + *olen = 1; + + return( 0 ); + } + + if( format == MBEDTLS_ECP_PF_UNCOMPRESSED ) + { + *olen = 2 * plen + 1; + + if( buflen < *olen ) + return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL ); - buf[0] = 0x02 + mbedtls_mpi_get_bit( &P->Y, 0 ); - MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &P->X, buf + 1, plen ) ); + buf[0] = 0x04; + MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &P->X, buf + 1, plen ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &P->Y, buf + 1 + plen, plen ) ); + } + else if( format == MBEDTLS_ECP_PF_COMPRESSED ) + { + *olen = plen + 1; + + if( buflen < *olen ) + return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL ); + + buf[0] = 0x02 + mbedtls_mpi_get_bit( &P->Y, 0 ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &P->X, buf + 1, plen ) ); + } } +#endif cleanup: return( ret ); } /* - * Import a point from unsigned binary data (SEC1 2.3.4) + * Import a point from unsigned binary data (SEC1 2.3.4 and RFC7748) */ int mbedtls_ecp_point_read_binary( const mbedtls_ecp_group *grp, mbedtls_ecp_point *pt, const unsigned char *buf, size_t ilen ) { - int ret; + int ret = MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE; size_t plen; ECP_VALIDATE_RET( grp != NULL ); ECP_VALIDATE_RET( pt != NULL ); @@ -803,25 +954,47 @@ int mbedtls_ecp_point_read_binary( const mbedtls_ecp_group *grp, if( ilen < 1 ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); - if( buf[0] == 0x00 ) + plen = mbedtls_mpi_size( &grp->P ); + +#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) + if( mbedtls_ecp_get_type( grp ) == MBEDTLS_ECP_TYPE_MONTGOMERY ) { - if( ilen == 1 ) - return( mbedtls_ecp_set_zero( pt ) ); - else + if( plen != ilen ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); - } - plen = mbedtls_mpi_size( &grp->P ); + MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary_le( &pt->X, buf, plen ) ); + mbedtls_mpi_free( &pt->Y ); - if( buf[0] != 0x04 ) - return( MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE ); + if( grp->id == MBEDTLS_ECP_DP_CURVE25519 ) + /* Set most significant bit to 0 as prescribed in RFC7748 §5 */ + MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( &pt->X, plen * 8 - 1, 0 ) ); - if( ilen != 2 * plen + 1 ) - return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); + MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &pt->Z, 1 ) ); + } +#endif +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) + if( mbedtls_ecp_get_type( grp ) == MBEDTLS_ECP_TYPE_SHORT_WEIERSTRASS ) + { + if( buf[0] == 0x00 ) + { + if( ilen == 1 ) + return( mbedtls_ecp_set_zero( pt ) ); + else + return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); + } - MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &pt->X, buf + 1, plen ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &pt->Y, buf + 1 + plen, plen ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &pt->Z, 1 ) ); + if( buf[0] != 0x04 ) + return( MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE ); + + if( ilen != 2 * plen + 1 ) + return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); + + MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &pt->X, buf + 1, plen ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &pt->Y, + buf + 1 + plen, plen ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &pt->Z, 1 ) ); + } +#endif cleanup: return( ret ); @@ -873,7 +1046,7 @@ int mbedtls_ecp_tls_write_point( const mbedtls_ecp_group *grp, const mbedtls_ecp int format, size_t *olen, unsigned char *buf, size_t blen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ECP_VALIDATE_RET( grp != NULL ); ECP_VALIDATE_RET( pt != NULL ); ECP_VALIDATE_RET( olen != NULL ); @@ -906,7 +1079,7 @@ int mbedtls_ecp_tls_write_point( const mbedtls_ecp_group *grp, const mbedtls_ecp int mbedtls_ecp_tls_read_group( mbedtls_ecp_group *grp, const unsigned char **buf, size_t len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecp_group_id grp_id; ECP_VALIDATE_RET( grp != NULL ); ECP_VALIDATE_RET( buf != NULL ); @@ -987,8 +1160,7 @@ int mbedtls_ecp_tls_write_group( const mbedtls_ecp_group *grp, size_t *olen, /* * Next two bytes are the namedcurve value */ - buf[0] = curve_info->tls_id >> 8; - buf[1] = curve_info->tls_id & 0xFF; + MBEDTLS_PUT_UINT16_BE( curve_info->tls_id, buf, 0 ); return( 0 ); } @@ -1001,7 +1173,7 @@ int mbedtls_ecp_tls_write_group( const mbedtls_ecp_group *grp, size_t *olen, */ static int ecp_modp( mbedtls_mpi *N, const mbedtls_ecp_group *grp ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( grp->modp == NULL ) return( mbedtls_mpi_mod_mpi( N, N, &grp->P ) ); @@ -1046,27 +1218,91 @@ static int ecp_modp( mbedtls_mpi *N, const mbedtls_ecp_group *grp ) #define INC_MUL_COUNT #endif -#define MOD_MUL( N ) do { MBEDTLS_MPI_CHK( ecp_modp( &N, grp ) ); INC_MUL_COUNT } \ - while( 0 ) +#define MOD_MUL( N ) \ + do \ + { \ + MBEDTLS_MPI_CHK( ecp_modp( &(N), grp ) ); \ + INC_MUL_COUNT \ + } while( 0 ) + +static inline int mbedtls_mpi_mul_mod( const mbedtls_ecp_group *grp, + mbedtls_mpi *X, + const mbedtls_mpi *A, + const mbedtls_mpi *B ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( X, A, B ) ); + MOD_MUL( *X ); +cleanup: + return( ret ); +} /* * Reduce a mbedtls_mpi mod p in-place, to use after mbedtls_mpi_sub_mpi * N->s < 0 is a very fast test, which fails only if N is 0 */ -#define MOD_SUB( N ) \ - while( N.s < 0 && mbedtls_mpi_cmp_int( &N, 0 ) != 0 ) \ - MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( &N, &N, &grp->P ) ) +#define MOD_SUB( N ) \ + while( (N).s < 0 && mbedtls_mpi_cmp_int( &(N), 0 ) != 0 ) \ + MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( &(N), &(N), &grp->P ) ) + +#if ( defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) && \ + !( defined(MBEDTLS_ECP_NO_FALLBACK) && \ + defined(MBEDTLS_ECP_DOUBLE_JAC_ALT) && \ + defined(MBEDTLS_ECP_ADD_MIXED_ALT) ) ) || \ + ( defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) && \ + !( defined(MBEDTLS_ECP_NO_FALLBACK) && \ + defined(MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT) ) ) +static inline int mbedtls_mpi_sub_mod( const mbedtls_ecp_group *grp, + mbedtls_mpi *X, + const mbedtls_mpi *A, + const mbedtls_mpi *B ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( X, A, B ) ); + MOD_SUB( *X ); +cleanup: + return( ret ); +} +#endif /* All functions referencing mbedtls_mpi_sub_mod() are alt-implemented without fallback */ /* * Reduce a mbedtls_mpi mod p in-place, to use after mbedtls_mpi_add_mpi and mbedtls_mpi_mul_int. * We known P, N and the result are positive, so sub_abs is correct, and * a bit faster. */ -#define MOD_ADD( N ) \ - while( mbedtls_mpi_cmp_mpi( &N, &grp->P ) >= 0 ) \ - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_abs( &N, &N, &grp->P ) ) +#define MOD_ADD( N ) \ + while( mbedtls_mpi_cmp_mpi( &(N), &grp->P ) >= 0 ) \ + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_abs( &(N), &(N), &grp->P ) ) + +static inline int mbedtls_mpi_add_mod( const mbedtls_ecp_group *grp, + mbedtls_mpi *X, + const mbedtls_mpi *A, + const mbedtls_mpi *B ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( X, A, B ) ); + MOD_ADD( *X ); +cleanup: + return( ret ); +} -#if defined(ECP_SHORTWEIERSTRASS) +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) && \ + !( defined(MBEDTLS_ECP_NO_FALLBACK) && \ + defined(MBEDTLS_ECP_DOUBLE_JAC_ALT) && \ + defined(MBEDTLS_ECP_ADD_MIXED_ALT) ) +static inline int mbedtls_mpi_shift_l_mod( const mbedtls_ecp_group *grp, + mbedtls_mpi *X, + size_t count ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l( X, count ) ); + MOD_ADD( *X ); +cleanup: + return( ret ); +} +#endif /* All functions referencing mbedtls_mpi_shift_l_mod() are alt-implemented without fallback */ + +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) /* * For curves in short Weierstrass form, we do all the internal operations in * Jacobian coordinates. @@ -1081,9 +1317,6 @@ static int ecp_modp( mbedtls_mpi *N, const mbedtls_ecp_group *grp ) */ static int ecp_normalize_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *pt ) { - int ret; - mbedtls_mpi Zi, ZZi; - if( mbedtls_mpi_cmp_int( &pt->Z, 0 ) == 0 ) return( 0 ); @@ -1092,20 +1325,25 @@ static int ecp_normalize_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *p return( mbedtls_internal_ecp_normalize_jac( grp, pt ) ); #endif /* MBEDTLS_ECP_NORMALIZE_JAC_ALT */ +#if defined(MBEDTLS_ECP_NO_FALLBACK) && defined(MBEDTLS_ECP_NORMALIZE_JAC_ALT) + return( MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE ); +#else + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + mbedtls_mpi Zi, ZZi; mbedtls_mpi_init( &Zi ); mbedtls_mpi_init( &ZZi ); /* * X = X / Z^2 mod p */ MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( &Zi, &pt->Z, &grp->P ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &ZZi, &Zi, &Zi ) ); MOD_MUL( ZZi ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &pt->X, &pt->X, &ZZi ) ); MOD_MUL( pt->X ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &ZZi, &Zi, &Zi ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &pt->X, &pt->X, &ZZi ) ); /* * Y = Y / Z^3 mod p */ - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &pt->Y, &pt->Y, &ZZi ) ); MOD_MUL( pt->Y ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &pt->Y, &pt->Y, &Zi ) ); MOD_MUL( pt->Y ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &pt->Y, &pt->Y, &ZZi ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &pt->Y, &pt->Y, &Zi ) ); /* * Z = 1 @@ -1117,6 +1355,7 @@ static int ecp_normalize_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *p mbedtls_mpi_free( &Zi ); mbedtls_mpi_free( &ZZi ); return( ret ); +#endif /* !defined(MBEDTLS_ECP_NO_FALLBACK) || !defined(MBEDTLS_ECP_NORMALIZE_JAC_ALT) */ } /* @@ -1133,10 +1372,6 @@ static int ecp_normalize_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *p static int ecp_normalize_jac_many( const mbedtls_ecp_group *grp, mbedtls_ecp_point *T[], size_t T_size ) { - int ret; - size_t i; - mbedtls_mpi *c, u, Zi, ZZi; - if( T_size < 2 ) return( ecp_normalize_jac( grp, *T ) ); @@ -1145,6 +1380,13 @@ static int ecp_normalize_jac_many( const mbedtls_ecp_group *grp, return( mbedtls_internal_ecp_normalize_jac_many( grp, T, T_size ) ); #endif +#if defined(MBEDTLS_ECP_NO_FALLBACK) && defined(MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT) + return( MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE ); +#else + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t i; + mbedtls_mpi *c, u, Zi, ZZi; + if( ( c = mbedtls_calloc( T_size, sizeof( mbedtls_mpi ) ) ) == NULL ) return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); @@ -1159,8 +1401,7 @@ static int ecp_normalize_jac_many( const mbedtls_ecp_group *grp, MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &c[0], &T[0]->Z ) ); for( i = 1; i < T_size; i++ ) { - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &c[i], &c[i-1], &T[i]->Z ) ); - MOD_MUL( c[i] ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &c[i], &c[i-1], &T[i]->Z ) ); } /* @@ -1179,17 +1420,17 @@ static int ecp_normalize_jac_many( const mbedtls_ecp_group *grp, } else { - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &Zi, &u, &c[i-1] ) ); MOD_MUL( Zi ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &u, &u, &T[i]->Z ) ); MOD_MUL( u ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &Zi, &u, &c[i-1] ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &u, &u, &T[i]->Z ) ); } /* * proceed as in normalize() */ - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &ZZi, &Zi, &Zi ) ); MOD_MUL( ZZi ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &T[i]->X, &T[i]->X, &ZZi ) ); MOD_MUL( T[i]->X ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &T[i]->Y, &T[i]->Y, &ZZi ) ); MOD_MUL( T[i]->Y ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &T[i]->Y, &T[i]->Y, &Zi ) ); MOD_MUL( T[i]->Y ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &ZZi, &Zi, &Zi ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &T[i]->X, &T[i]->X, &ZZi ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &T[i]->Y, &T[i]->Y, &ZZi ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &T[i]->Y, &T[i]->Y, &Zi ) ); /* * Post-precessing: reclaim some memory by shrinking coordinates @@ -1213,6 +1454,7 @@ static int ecp_normalize_jac_many( const mbedtls_ecp_group *grp, mbedtls_free( c ); return( ret ); +#endif /* !defined(MBEDTLS_ECP_NO_FALLBACK) || !defined(MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT) */ } /* @@ -1223,7 +1465,7 @@ static int ecp_safe_invert_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *Q, unsigned char inv ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char nonzero; mbedtls_mpi mQY; @@ -1257,9 +1499,6 @@ static int ecp_safe_invert_jac( const mbedtls_ecp_group *grp, static int ecp_double_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_ecp_point *P ) { - int ret; - mbedtls_mpi M, S, T, U; - #if defined(MBEDTLS_SELF_TEST) dbl_count++; #endif @@ -1269,58 +1508,64 @@ static int ecp_double_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, return( mbedtls_internal_ecp_double_jac( grp, R, P ) ); #endif /* MBEDTLS_ECP_DOUBLE_JAC_ALT */ +#if defined(MBEDTLS_ECP_NO_FALLBACK) && defined(MBEDTLS_ECP_DOUBLE_JAC_ALT) + return( MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE ); +#else + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + mbedtls_mpi M, S, T, U; + mbedtls_mpi_init( &M ); mbedtls_mpi_init( &S ); mbedtls_mpi_init( &T ); mbedtls_mpi_init( &U ); /* Special case for A = -3 */ if( grp->A.p == NULL ) { /* M = 3(X + Z^2)(X - Z^2) */ - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &S, &P->Z, &P->Z ) ); MOD_MUL( S ); - MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( &T, &P->X, &S ) ); MOD_ADD( T ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &U, &P->X, &S ) ); MOD_SUB( U ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &S, &T, &U ) ); MOD_MUL( S ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &S, &P->Z, &P->Z ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_add_mod( grp, &T, &P->X, &S ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mod( grp, &U, &P->X, &S ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &S, &T, &U ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mul_int( &M, &S, 3 ) ); MOD_ADD( M ); } else { /* M = 3.X^2 */ - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &S, &P->X, &P->X ) ); MOD_MUL( S ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &S, &P->X, &P->X ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mul_int( &M, &S, 3 ) ); MOD_ADD( M ); /* Optimize away for "koblitz" curves with A = 0 */ if( mbedtls_mpi_cmp_int( &grp->A, 0 ) != 0 ) { /* M += A.Z^4 */ - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &S, &P->Z, &P->Z ) ); MOD_MUL( S ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &T, &S, &S ) ); MOD_MUL( T ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &S, &T, &grp->A ) ); MOD_MUL( S ); - MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( &M, &M, &S ) ); MOD_ADD( M ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &S, &P->Z, &P->Z ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &T, &S, &S ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &S, &T, &grp->A ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_add_mod( grp, &M, &M, &S ) ); } } /* S = 4.X.Y^2 */ - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &T, &P->Y, &P->Y ) ); MOD_MUL( T ); - MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l( &T, 1 ) ); MOD_ADD( T ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &S, &P->X, &T ) ); MOD_MUL( S ); - MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l( &S, 1 ) ); MOD_ADD( S ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &T, &P->Y, &P->Y ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l_mod( grp, &T, 1 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &S, &P->X, &T ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l_mod( grp, &S, 1 ) ); /* U = 8.Y^4 */ - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &U, &T, &T ) ); MOD_MUL( U ); - MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l( &U, 1 ) ); MOD_ADD( U ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &U, &T, &T ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l_mod( grp, &U, 1 ) ); /* T = M^2 - 2.S */ - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &T, &M, &M ) ); MOD_MUL( T ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &T, &T, &S ) ); MOD_SUB( T ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &T, &T, &S ) ); MOD_SUB( T ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &T, &M, &M ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mod( grp, &T, &T, &S ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mod( grp, &T, &T, &S ) ); /* S = M(S - T) - U */ - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &S, &S, &T ) ); MOD_SUB( S ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &S, &S, &M ) ); MOD_MUL( S ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &S, &S, &U ) ); MOD_SUB( S ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mod( grp, &S, &S, &T ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &S, &S, &M ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mod( grp, &S, &S, &U ) ); /* U = 2.Y.Z */ - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &U, &P->Y, &P->Z ) ); MOD_MUL( U ); - MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l( &U, 1 ) ); MOD_ADD( U ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &U, &P->Y, &P->Z ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l_mod( grp, &U, 1 ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &R->X, &T ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &R->Y, &S ) ); @@ -1330,6 +1575,7 @@ static int ecp_double_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, mbedtls_mpi_free( &M ); mbedtls_mpi_free( &S ); mbedtls_mpi_free( &T ); mbedtls_mpi_free( &U ); return( ret ); +#endif /* !defined(MBEDTLS_ECP_NO_FALLBACK) || !defined(MBEDTLS_ECP_DOUBLE_JAC_ALT) */ } /* @@ -1353,9 +1599,6 @@ static int ecp_double_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, static int ecp_add_mixed( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_ecp_point *P, const mbedtls_ecp_point *Q ) { - int ret; - mbedtls_mpi T1, T2, T3, T4, X, Y, Z; - #if defined(MBEDTLS_SELF_TEST) add_count++; #endif @@ -1365,6 +1608,12 @@ static int ecp_add_mixed( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, return( mbedtls_internal_ecp_add_mixed( grp, R, P, Q ) ); #endif /* MBEDTLS_ECP_ADD_MIXED_ALT */ +#if defined(MBEDTLS_ECP_NO_FALLBACK) && defined(MBEDTLS_ECP_ADD_MIXED_ALT) + return( MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE ); +#else + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + mbedtls_mpi T1, T2, T3, T4, X, Y, Z; + /* * Trivial cases: P == 0 or Q == 0 (case 1) */ @@ -1383,12 +1632,12 @@ static int ecp_add_mixed( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, mbedtls_mpi_init( &T1 ); mbedtls_mpi_init( &T2 ); mbedtls_mpi_init( &T3 ); mbedtls_mpi_init( &T4 ); mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &Z ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &T1, &P->Z, &P->Z ) ); MOD_MUL( T1 ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &T2, &T1, &P->Z ) ); MOD_MUL( T2 ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &T1, &T1, &Q->X ) ); MOD_MUL( T1 ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &T2, &T2, &Q->Y ) ); MOD_MUL( T2 ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &T1, &T1, &P->X ) ); MOD_SUB( T1 ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &T2, &T2, &P->Y ) ); MOD_SUB( T2 ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &T1, &P->Z, &P->Z ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &T2, &T1, &P->Z ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &T1, &T1, &Q->X ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &T2, &T2, &Q->Y ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mod( grp, &T1, &T1, &P->X ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mod( grp, &T2, &T2, &P->Y ) ); /* Special cases (2) and (3) */ if( mbedtls_mpi_cmp_int( &T1, 0 ) == 0 ) @@ -1405,18 +1654,19 @@ static int ecp_add_mixed( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, } } - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &Z, &P->Z, &T1 ) ); MOD_MUL( Z ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &T3, &T1, &T1 ) ); MOD_MUL( T3 ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &T4, &T3, &T1 ) ); MOD_MUL( T4 ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &T3, &T3, &P->X ) ); MOD_MUL( T3 ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_int( &T1, &T3, 2 ) ); MOD_ADD( T1 ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &X, &T2, &T2 ) ); MOD_MUL( X ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &X, &X, &T1 ) ); MOD_SUB( X ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &X, &X, &T4 ) ); MOD_SUB( X ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &T3, &T3, &X ) ); MOD_SUB( T3 ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &T3, &T3, &T2 ) ); MOD_MUL( T3 ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &T4, &T4, &P->Y ) ); MOD_MUL( T4 ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &Y, &T3, &T4 ) ); MOD_SUB( Y ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &Z, &P->Z, &T1 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &T3, &T1, &T1 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &T4, &T3, &T1 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &T3, &T3, &P->X ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &T1, &T3 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l_mod( grp, &T1, 1 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &X, &T2, &T2 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mod( grp, &X, &X, &T1 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mod( grp, &X, &X, &T4 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mod( grp, &T3, &T3, &X ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &T3, &T3, &T2 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &T4, &T4, &P->Y ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mod( grp, &Y, &T3, &T4 ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &R->X, &X ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &R->Y, &Y ) ); @@ -1428,6 +1678,7 @@ static int ecp_add_mixed( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, mbedtls_mpi_free( &X ); mbedtls_mpi_free( &Y ); mbedtls_mpi_free( &Z ); return( ret ); +#endif /* !defined(MBEDTLS_ECP_NO_FALLBACK) || !defined(MBEDTLS_ECP_ADD_MIXED_ALT) */ } /* @@ -1440,47 +1691,40 @@ static int ecp_add_mixed( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, static int ecp_randomize_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *pt, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; - mbedtls_mpi l, ll; - size_t p_size; - int count = 0; - #if defined(MBEDTLS_ECP_RANDOMIZE_JAC_ALT) if( mbedtls_internal_ecp_grp_capable( grp ) ) return( mbedtls_internal_ecp_randomize_jac( grp, pt, f_rng, p_rng ) ); #endif /* MBEDTLS_ECP_RANDOMIZE_JAC_ALT */ - p_size = ( grp->pbits + 7 ) / 8; +#if defined(MBEDTLS_ECP_NO_FALLBACK) && defined(MBEDTLS_ECP_RANDOMIZE_JAC_ALT) + return( MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE ); +#else + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + mbedtls_mpi l, ll; + mbedtls_mpi_init( &l ); mbedtls_mpi_init( &ll ); /* Generate l such that 1 < l < p */ - do - { - MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( &l, p_size, f_rng, p_rng ) ); - - while( mbedtls_mpi_cmp_mpi( &l, &grp->P ) >= 0 ) - MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &l, 1 ) ); - - if( count++ > 10 ) - return( MBEDTLS_ERR_ECP_RANDOM_FAILED ); - } - while( mbedtls_mpi_cmp_int( &l, 1 ) <= 0 ); + MBEDTLS_MPI_CHK( mbedtls_mpi_random( &l, 2, &grp->P, f_rng, p_rng ) ); /* Z = l * Z */ - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &pt->Z, &pt->Z, &l ) ); MOD_MUL( pt->Z ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &pt->Z, &pt->Z, &l ) ); /* X = l^2 * X */ - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &ll, &l, &l ) ); MOD_MUL( ll ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &pt->X, &pt->X, &ll ) ); MOD_MUL( pt->X ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &ll, &l, &l ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &pt->X, &pt->X, &ll ) ); /* Y = l^3 * Y */ - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &ll, &ll, &l ) ); MOD_MUL( ll ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &pt->Y, &pt->Y, &ll ) ); MOD_MUL( pt->Y ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &ll, &ll, &l ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &pt->Y, &pt->Y, &ll ) ); cleanup: mbedtls_mpi_free( &l ); mbedtls_mpi_free( &ll ); + if( ret == MBEDTLS_ERR_MPI_NOT_ACCEPTABLE ) + ret = MBEDTLS_ERR_ECP_RANDOM_FAILED; return( ret ); +#endif /* !defined(MBEDTLS_ECP_NO_FALLBACK) || !defined(MBEDTLS_ECP_RANDOMIZE_JAC_ALT) */ } /* @@ -1612,7 +1856,7 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, unsigned char w, size_t d, mbedtls_ecp_restart_ctx *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char i; size_t j = 0; const unsigned char T_size = 1U << ( w - 1 ); @@ -1748,7 +1992,7 @@ static int ecp_select_comb( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_ecp_point T[], unsigned char T_size, unsigned char i ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char ii, j; /* Ignore the "sign" bit and scale down */ @@ -1781,7 +2025,7 @@ static int ecp_mul_comb_core( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R void *p_rng, mbedtls_ecp_restart_ctx *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecp_point Txi; size_t i; @@ -1812,7 +2056,9 @@ static int ecp_mul_comb_core( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R i = d; MBEDTLS_MPI_CHK( ecp_select_comb( grp, R, T, T_size, x[i] ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &R->Z, 1 ) ); +#if defined(MBEDTLS_ECP_NO_INTERNAL_RNG) if( f_rng != 0 ) +#endif MBEDTLS_MPI_CHK( ecp_randomize_jac( grp, R, f_rng, p_rng ) ); } @@ -1861,7 +2107,7 @@ static int ecp_comb_recode_scalar( const mbedtls_ecp_group *grp, unsigned char w, unsigned char *parity_trick ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_mpi M, mm; mbedtls_mpi_init( &M ); @@ -1907,7 +2153,7 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, void *p_rng, mbedtls_ecp_restart_ctx *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char parity_trick; unsigned char k[COMB_MAX_D + 1]; mbedtls_ecp_point *RR = R; @@ -1933,8 +2179,24 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, rs_ctx->rsm->state = ecp_rsm_final_norm; final_norm: -#endif MBEDTLS_ECP_BUDGET( MBEDTLS_ECP_OPS_INV ); +#endif + /* + * Knowledge of the jacobian coordinates may leak the last few bits of the + * scalar [1], and since our MPI implementation isn't constant-flow, + * inversion (used for coordinate normalization) may leak the full value + * of its input via side-channels [2]. + * + * [1] https://eprint.iacr.org/2003/191 + * [2] https://eprint.iacr.org/2020/055 + * + * Avoid the leak by randomizing coordinates before we normalize them. + */ +#if defined(MBEDTLS_ECP_NO_INTERNAL_RNG) + if( f_rng != 0 ) +#endif + MBEDTLS_MPI_CHK( ecp_randomize_jac( grp, RR, f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( ecp_normalize_jac( grp, RR ) ); #if defined(MBEDTLS_ECP_RESTARTABLE) @@ -1973,8 +2235,10 @@ static unsigned char ecp_pick_window_size( const mbedtls_ecp_group *grp, * Make sure w is within bounds. * (The last test is useful only for very small curves in the test suite.) */ +#if( MBEDTLS_ECP_WINDOW_SIZE < 6 ) if( w > MBEDTLS_ECP_WINDOW_SIZE ) w = MBEDTLS_ECP_WINDOW_SIZE; +#endif if( w >= grp->nbits ) w = 2; @@ -2000,14 +2264,47 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, void *p_rng, mbedtls_ecp_restart_ctx *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char w, p_eq_g, i; size_t d; - unsigned char T_size, T_ok; - mbedtls_ecp_point *T; + unsigned char T_size = 0, T_ok = 0; + mbedtls_ecp_point *T = NULL; +#if !defined(MBEDTLS_ECP_NO_INTERNAL_RNG) + ecp_drbg_context drbg_ctx; + + ecp_drbg_init( &drbg_ctx ); +#endif ECP_RS_ENTER( rsm ); +#if !defined(MBEDTLS_ECP_NO_INTERNAL_RNG) + if( f_rng == NULL ) + { + /* Adjust pointers */ + f_rng = &ecp_drbg_random; +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + p_rng = &rs_ctx->rsm->drbg_ctx; + else +#endif + p_rng = &drbg_ctx; + + /* Initialize internal DRBG if necessary */ +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx == NULL || rs_ctx->rsm == NULL || + rs_ctx->rsm->drbg_seeded == 0 ) +#endif + { + const size_t m_len = ( grp->nbits + 7 ) / 8; + MBEDTLS_MPI_CHK( ecp_drbg_seed( p_rng, m, m_len ) ); + } +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + rs_ctx->rsm->drbg_seeded = 1; +#endif + } +#endif /* !MBEDTLS_ECP_NO_INTERNAL_RNG */ + /* Is P the base point ? */ #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1 p_eq_g = ( mbedtls_mpi_cmp_mpi( &P->Y, &grp->G.Y ) == 0 && @@ -2079,6 +2376,10 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, cleanup: +#if !defined(MBEDTLS_ECP_NO_INTERNAL_RNG) + ecp_drbg_free( &drbg_ctx ); +#endif + /* does T belong to the group? */ if( T == grp->T ) T = NULL; @@ -2115,9 +2416,9 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, return( ret ); } -#endif /* ECP_SHORTWEIERSTRASS */ +#endif /* MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED */ -#if defined(ECP_MONTGOMERY) +#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) /* * For Montgomery curves, we do all the internal arithmetic in projective * coordinates. Import/export of points uses only the x coordinates, which is @@ -2132,19 +2433,22 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, */ static int ecp_normalize_mxz( const mbedtls_ecp_group *grp, mbedtls_ecp_point *P ) { - int ret; - #if defined(MBEDTLS_ECP_NORMALIZE_MXZ_ALT) if( mbedtls_internal_ecp_grp_capable( grp ) ) return( mbedtls_internal_ecp_normalize_mxz( grp, P ) ); #endif /* MBEDTLS_ECP_NORMALIZE_MXZ_ALT */ +#if defined(MBEDTLS_ECP_NO_FALLBACK) && defined(MBEDTLS_ECP_NORMALIZE_MXZ_ALT) + return( MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE ); +#else + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( &P->Z, &P->Z, &grp->P ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &P->X, &P->X, &P->Z ) ); MOD_MUL( P->X ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &P->X, &P->X, &P->Z ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &P->Z, 1 ) ); cleanup: return( ret ); +#endif /* !defined(MBEDTLS_ECP_NO_FALLBACK) || !defined(MBEDTLS_ECP_NORMALIZE_MXZ_ALT) */ } /* @@ -2158,39 +2462,31 @@ static int ecp_normalize_mxz( const mbedtls_ecp_group *grp, mbedtls_ecp_point *P static int ecp_randomize_mxz( const mbedtls_ecp_group *grp, mbedtls_ecp_point *P, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; - mbedtls_mpi l; - size_t p_size; - int count = 0; - #if defined(MBEDTLS_ECP_RANDOMIZE_MXZ_ALT) if( mbedtls_internal_ecp_grp_capable( grp ) ) - return( mbedtls_internal_ecp_randomize_mxz( grp, P, f_rng, p_rng ); + return( mbedtls_internal_ecp_randomize_mxz( grp, P, f_rng, p_rng ) ); #endif /* MBEDTLS_ECP_RANDOMIZE_MXZ_ALT */ - p_size = ( grp->pbits + 7 ) / 8; +#if defined(MBEDTLS_ECP_NO_FALLBACK) && defined(MBEDTLS_ECP_RANDOMIZE_MXZ_ALT) + return( MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE ); +#else + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + mbedtls_mpi l; mbedtls_mpi_init( &l ); /* Generate l such that 1 < l < p */ - do - { - MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( &l, p_size, f_rng, p_rng ) ); - - while( mbedtls_mpi_cmp_mpi( &l, &grp->P ) >= 0 ) - MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &l, 1 ) ); - - if( count++ > 10 ) - return( MBEDTLS_ERR_ECP_RANDOM_FAILED ); - } - while( mbedtls_mpi_cmp_int( &l, 1 ) <= 0 ); + MBEDTLS_MPI_CHK( mbedtls_mpi_random( &l, 2, &grp->P, f_rng, p_rng ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &P->X, &P->X, &l ) ); MOD_MUL( P->X ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &P->Z, &P->Z, &l ) ); MOD_MUL( P->Z ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &P->X, &P->X, &l ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &P->Z, &P->Z, &l ) ); cleanup: mbedtls_mpi_free( &l ); + if( ret == MBEDTLS_ERR_MPI_NOT_ACCEPTABLE ) + ret = MBEDTLS_ERR_ECP_RANDOM_FAILED; return( ret ); +#endif /* !defined(MBEDTLS_ECP_NO_FALLBACK) || !defined(MBEDTLS_ECP_RANDOMIZE_MXZ_ALT) */ } /* @@ -2213,36 +2509,39 @@ static int ecp_double_add_mxz( const mbedtls_ecp_group *grp, const mbedtls_ecp_point *P, const mbedtls_ecp_point *Q, const mbedtls_mpi *d ) { - int ret; - mbedtls_mpi A, AA, B, BB, E, C, D, DA, CB; - #if defined(MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT) if( mbedtls_internal_ecp_grp_capable( grp ) ) return( mbedtls_internal_ecp_double_add_mxz( grp, R, S, P, Q, d ) ); #endif /* MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT */ +#if defined(MBEDTLS_ECP_NO_FALLBACK) && defined(MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT) + return( MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE ); +#else + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + mbedtls_mpi A, AA, B, BB, E, C, D, DA, CB; + mbedtls_mpi_init( &A ); mbedtls_mpi_init( &AA ); mbedtls_mpi_init( &B ); mbedtls_mpi_init( &BB ); mbedtls_mpi_init( &E ); mbedtls_mpi_init( &C ); mbedtls_mpi_init( &D ); mbedtls_mpi_init( &DA ); mbedtls_mpi_init( &CB ); - MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( &A, &P->X, &P->Z ) ); MOD_ADD( A ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &AA, &A, &A ) ); MOD_MUL( AA ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &B, &P->X, &P->Z ) ); MOD_SUB( B ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &BB, &B, &B ) ); MOD_MUL( BB ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &E, &AA, &BB ) ); MOD_SUB( E ); - MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( &C, &Q->X, &Q->Z ) ); MOD_ADD( C ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &D, &Q->X, &Q->Z ) ); MOD_SUB( D ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &DA, &D, &A ) ); MOD_MUL( DA ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &CB, &C, &B ) ); MOD_MUL( CB ); - MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( &S->X, &DA, &CB ) ); MOD_MUL( S->X ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &S->X, &S->X, &S->X ) ); MOD_MUL( S->X ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &S->Z, &DA, &CB ) ); MOD_SUB( S->Z ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &S->Z, &S->Z, &S->Z ) ); MOD_MUL( S->Z ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &S->Z, d, &S->Z ) ); MOD_MUL( S->Z ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &R->X, &AA, &BB ) ); MOD_MUL( R->X ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &R->Z, &grp->A, &E ) ); MOD_MUL( R->Z ); - MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( &R->Z, &BB, &R->Z ) ); MOD_ADD( R->Z ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &R->Z, &E, &R->Z ) ); MOD_MUL( R->Z ); + MBEDTLS_MPI_CHK( mbedtls_mpi_add_mod( grp, &A, &P->X, &P->Z ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &AA, &A, &A ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mod( grp, &B, &P->X, &P->Z ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &BB, &B, &B ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mod( grp, &E, &AA, &BB ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_add_mod( grp, &C, &Q->X, &Q->Z ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mod( grp, &D, &Q->X, &Q->Z ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &DA, &D, &A ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &CB, &C, &B ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_add_mod( grp, &S->X, &DA, &CB ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &S->X, &S->X, &S->X ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mod( grp, &S->Z, &DA, &CB ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &S->Z, &S->Z, &S->Z ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &S->Z, d, &S->Z ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &R->X, &AA, &BB ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &R->Z, &grp->A, &E ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_add_mod( grp, &R->Z, &BB, &R->Z ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &R->Z, &E, &R->Z ) ); cleanup: mbedtls_mpi_free( &A ); mbedtls_mpi_free( &AA ); mbedtls_mpi_free( &B ); @@ -2250,6 +2549,7 @@ static int ecp_double_add_mxz( const mbedtls_ecp_group *grp, mbedtls_mpi_free( &D ); mbedtls_mpi_free( &DA ); mbedtls_mpi_free( &CB ); return( ret ); +#endif /* !defined(MBEDTLS_ECP_NO_FALLBACK) || !defined(MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT) */ } /* @@ -2261,14 +2561,28 @@ static int ecp_mul_mxz( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i; unsigned char b; mbedtls_ecp_point RP; mbedtls_mpi PX; +#if !defined(MBEDTLS_ECP_NO_INTERNAL_RNG) + ecp_drbg_context drbg_ctx; + ecp_drbg_init( &drbg_ctx ); +#endif mbedtls_ecp_point_init( &RP ); mbedtls_mpi_init( &PX ); +#if !defined(MBEDTLS_ECP_NO_INTERNAL_RNG) + if( f_rng == NULL ) + { + const size_t m_len = ( grp->nbits + 7 ) / 8; + MBEDTLS_MPI_CHK( ecp_drbg_seed( &drbg_ctx, m, m_len ) ); + f_rng = &ecp_drbg_random; + p_rng = &drbg_ctx; + } +#endif /* !MBEDTLS_ECP_NO_INTERNAL_RNG */ + /* Save PX and read from P before writing to R, in case P == R */ MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &PX, &P->X ) ); MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &RP, P ) ); @@ -2282,7 +2596,9 @@ static int ecp_mul_mxz( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, MOD_ADD( RP.X ); /* Randomize coordinates of the starting point */ +#if defined(MBEDTLS_ECP_NO_INTERNAL_RNG) if( f_rng != NULL ) +#endif MBEDTLS_MPI_CHK( ecp_randomize_mxz( grp, &RP, f_rng, p_rng ) ); /* Loop invariant: R = result so far, RP = R + P */ @@ -2304,15 +2620,35 @@ static int ecp_mul_mxz( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, MBEDTLS_MPI_CHK( mbedtls_mpi_safe_cond_swap( &R->Z, &RP.Z, b ) ); } + /* + * Knowledge of the projective coordinates may leak the last few bits of the + * scalar [1], and since our MPI implementation isn't constant-flow, + * inversion (used for coordinate normalization) may leak the full value + * of its input via side-channels [2]. + * + * [1] https://eprint.iacr.org/2003/191 + * [2] https://eprint.iacr.org/2020/055 + * + * Avoid the leak by randomizing coordinates before we normalize them. + */ +#if defined(MBEDTLS_ECP_NO_INTERNAL_RNG) + if( f_rng != NULL ) +#endif + MBEDTLS_MPI_CHK( ecp_randomize_mxz( grp, R, f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( ecp_normalize_mxz( grp, R ) ); cleanup: +#if !defined(MBEDTLS_ECP_NO_INTERNAL_RNG) + ecp_drbg_free( &drbg_ctx ); +#endif + mbedtls_ecp_point_free( &RP ); mbedtls_mpi_free( &PX ); return( ret ); } -#endif /* ECP_MONTGOMERY */ +#endif /* MBEDTLS_ECP_MONTGOMERY_ENABLED */ /* * Restartable multiplication R = m * P @@ -2335,6 +2671,8 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, /* reset ops count for this call if top-level */ if( rs_ctx != NULL && rs_ctx->depth++ == 0 ) rs_ctx->ops_done = 0; +#else + (void) rs_ctx; #endif #if defined(MBEDTLS_ECP_INTERNAL_ALT) @@ -2356,12 +2694,12 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, } ret = MBEDTLS_ERR_ECP_BAD_INPUT_DATA; -#if defined(ECP_MONTGOMERY) - if( ecp_get_type( grp ) == ECP_TYPE_MONTGOMERY ) +#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) + if( mbedtls_ecp_get_type( grp ) == MBEDTLS_ECP_TYPE_MONTGOMERY ) MBEDTLS_MPI_CHK( ecp_mul_mxz( grp, R, m, P, f_rng, p_rng ) ); #endif -#if defined(ECP_SHORTWEIERSTRASS) - if( ecp_get_type( grp ) == ECP_TYPE_SHORT_WEIERSTRASS ) +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) + if( mbedtls_ecp_get_type( grp ) == MBEDTLS_ECP_TYPE_SHORT_WEIERSTRASS ) MBEDTLS_MPI_CHK( ecp_mul_comb( grp, R, m, P, f_rng, p_rng, rs_ctx ) ); #endif @@ -2394,14 +2732,14 @@ int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, return( mbedtls_ecp_mul_restartable( grp, R, m, P, f_rng, p_rng, NULL ) ); } -#if defined(ECP_SHORTWEIERSTRASS) +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) /* * Check that an affine point is valid as a public key, * short weierstrass curves (SEC1 3.2.3.1) */ static int ecp_check_pubkey_sw( const mbedtls_ecp_group *grp, const mbedtls_ecp_point *pt ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_mpi YY, RHS; /* pt coordinates must be normalized for our checks */ @@ -2417,8 +2755,8 @@ static int ecp_check_pubkey_sw( const mbedtls_ecp_group *grp, const mbedtls_ecp_ * YY = Y^2 * RHS = X (X^2 + A) + B = X^3 + A X + B */ - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &YY, &pt->Y, &pt->Y ) ); MOD_MUL( YY ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &RHS, &pt->X, &pt->X ) ); MOD_MUL( RHS ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &YY, &pt->Y, &pt->Y ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &RHS, &pt->X, &pt->X ) ); /* Special case for A = -3 */ if( grp->A.p == NULL ) @@ -2427,11 +2765,11 @@ static int ecp_check_pubkey_sw( const mbedtls_ecp_group *grp, const mbedtls_ecp_ } else { - MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( &RHS, &RHS, &grp->A ) ); MOD_ADD( RHS ); + MBEDTLS_MPI_CHK( mbedtls_mpi_add_mod( grp, &RHS, &RHS, &grp->A ) ); } - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &RHS, &RHS, &pt->X ) ); MOD_MUL( RHS ); - MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( &RHS, &RHS, &grp->B ) ); MOD_ADD( RHS ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mod( grp, &RHS, &RHS, &pt->X ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_add_mod( grp, &RHS, &RHS, &grp->B ) ); if( mbedtls_mpi_cmp_mpi( &YY, &RHS ) != 0 ) ret = MBEDTLS_ERR_ECP_INVALID_KEY; @@ -2442,10 +2780,11 @@ static int ecp_check_pubkey_sw( const mbedtls_ecp_group *grp, const mbedtls_ecp_ return( ret ); } -#endif /* ECP_SHORTWEIERSTRASS */ +#endif /* MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED */ +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) /* - * R = m * P with shortcuts for m == 1 and m == -1 + * R = m * P with shortcuts for m == 0, m == 1 and m == -1 * NOT constant-time - ONLY for short Weierstrass! */ static int mbedtls_ecp_mul_shortcuts( mbedtls_ecp_group *grp, @@ -2454,9 +2793,13 @@ static int mbedtls_ecp_mul_shortcuts( mbedtls_ecp_group *grp, const mbedtls_ecp_point *P, mbedtls_ecp_restart_ctx *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; - if( mbedtls_mpi_cmp_int( m, 1 ) == 0 ) + if( mbedtls_mpi_cmp_int( m, 0 ) == 0 ) + { + MBEDTLS_MPI_CHK( mbedtls_ecp_set_zero( R ) ); + } + else if( mbedtls_mpi_cmp_int( m, 1 ) == 0 ) { MBEDTLS_MPI_CHK( mbedtls_ecp_copy( R, P ) ); } @@ -2486,7 +2829,7 @@ int mbedtls_ecp_muladd_restartable( const mbedtls_mpi *n, const mbedtls_ecp_point *Q, mbedtls_ecp_restart_ctx *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecp_point mP; mbedtls_ecp_point *pmP = &mP; mbedtls_ecp_point *pR = R; @@ -2500,7 +2843,7 @@ int mbedtls_ecp_muladd_restartable( ECP_VALIDATE_RET( n != NULL ); ECP_VALIDATE_RET( Q != NULL ); - if( ecp_get_type( grp ) != ECP_TYPE_SHORT_WEIERSTRASS ) + if( mbedtls_ecp_get_type( grp ) != MBEDTLS_ECP_TYPE_SHORT_WEIERSTRASS ) return( MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE ); mbedtls_ecp_point_init( &mP ); @@ -2589,8 +2932,100 @@ int mbedtls_ecp_muladd( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, ECP_VALIDATE_RET( Q != NULL ); return( mbedtls_ecp_muladd_restartable( grp, R, m, P, n, Q, NULL ) ); } +#endif /* MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED */ + +#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) +#if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) +#define ECP_MPI_INIT(s, n, p) {s, (n), (mbedtls_mpi_uint *)(p)} +#define ECP_MPI_INIT_ARRAY(x) \ + ECP_MPI_INIT(1, sizeof(x) / sizeof(mbedtls_mpi_uint), x) +/* + * Constants for the two points other than 0, 1, -1 (mod p) in + * https://cr.yp.to/ecdh.html#validate + * See ecp_check_pubkey_x25519(). + */ +static const mbedtls_mpi_uint x25519_bad_point_1[] = { + MBEDTLS_BYTES_TO_T_UINT_8( 0xe0, 0xeb, 0x7a, 0x7c, 0x3b, 0x41, 0xb8, 0xae ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x16, 0x56, 0xe3, 0xfa, 0xf1, 0x9f, 0xc4, 0x6a ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xda, 0x09, 0x8d, 0xeb, 0x9c, 0x32, 0xb1, 0xfd ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x86, 0x62, 0x05, 0x16, 0x5f, 0x49, 0xb8, 0x00 ), +}; +static const mbedtls_mpi_uint x25519_bad_point_2[] = { + MBEDTLS_BYTES_TO_T_UINT_8( 0x5f, 0x9c, 0x95, 0xbc, 0xa3, 0x50, 0x8c, 0x24 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xb1, 0xd0, 0xb1, 0x55, 0x9c, 0x83, 0xef, 0x5b ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x04, 0x44, 0x5c, 0xc4, 0x58, 0x1c, 0x8e, 0x86 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xd8, 0x22, 0x4e, 0xdd, 0xd0, 0x9f, 0x11, 0x57 ), +}; +static const mbedtls_mpi ecp_x25519_bad_point_1 = ECP_MPI_INIT_ARRAY( + x25519_bad_point_1 ); +static const mbedtls_mpi ecp_x25519_bad_point_2 = ECP_MPI_INIT_ARRAY( + x25519_bad_point_2 ); +#endif /* MBEDTLS_ECP_DP_CURVE25519_ENABLED */ + +/* + * Check that the input point is not one of the low-order points. + * This is recommended by the "May the Fourth" paper: + * https://eprint.iacr.org/2017/806.pdf + * Those points are never sent by an honest peer. + */ +static int ecp_check_bad_points_mx( const mbedtls_mpi *X, const mbedtls_mpi *P, + const mbedtls_ecp_group_id grp_id ) +{ + int ret; + mbedtls_mpi XmP; + + mbedtls_mpi_init( &XmP ); + + /* Reduce X mod P so that we only need to check values less than P. + * We know X < 2^256 so we can proceed by subtraction. */ + MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &XmP, X ) ); + while( mbedtls_mpi_cmp_mpi( &XmP, P ) >= 0 ) + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &XmP, &XmP, P ) ); + + /* Check against the known bad values that are less than P. For Curve448 + * these are 0, 1 and -1. For Curve25519 we check the values less than P + * from the following list: https://cr.yp.to/ecdh.html#validate */ + if( mbedtls_mpi_cmp_int( &XmP, 1 ) <= 0 ) /* takes care of 0 and 1 */ + { + ret = MBEDTLS_ERR_ECP_INVALID_KEY; + goto cleanup; + } + +#if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) + if( grp_id == MBEDTLS_ECP_DP_CURVE25519 ) + { + if( mbedtls_mpi_cmp_mpi( &XmP, &ecp_x25519_bad_point_1 ) == 0 ) + { + ret = MBEDTLS_ERR_ECP_INVALID_KEY; + goto cleanup; + } + + if( mbedtls_mpi_cmp_mpi( &XmP, &ecp_x25519_bad_point_2 ) == 0 ) + { + ret = MBEDTLS_ERR_ECP_INVALID_KEY; + goto cleanup; + } + } +#else + (void) grp_id; +#endif + + /* Final check: check if XmP + 1 is P (final because it changes XmP!) */ + MBEDTLS_MPI_CHK( mbedtls_mpi_add_int( &XmP, &XmP, 1 ) ); + if( mbedtls_mpi_cmp_mpi( &XmP, P ) == 0 ) + { + ret = MBEDTLS_ERR_ECP_INVALID_KEY; + goto cleanup; + } + + ret = 0; + +cleanup: + mbedtls_mpi_free( &XmP ); + + return( ret ); +} -#if defined(ECP_MONTGOMERY) /* * Check validity of a public key for Montgomery curves with x-only schemes */ @@ -2602,9 +3037,15 @@ static int ecp_check_pubkey_mx( const mbedtls_ecp_group *grp, const mbedtls_ecp_ if( mbedtls_mpi_size( &pt->X ) > ( grp->nbits + 7 ) / 8 ) return( MBEDTLS_ERR_ECP_INVALID_KEY ); - return( 0 ); + /* Implicit in all standards (as they don't consider negative numbers): + * X must be non-negative. This is normally ensured by the way it's + * encoded for transmission, but let's be extra sure. */ + if( mbedtls_mpi_cmp_int( &pt->X, 0 ) < 0 ) + return( MBEDTLS_ERR_ECP_INVALID_KEY ); + + return( ecp_check_bad_points_mx( &pt->X, &grp->P, grp->id ) ); } -#endif /* ECP_MONTGOMERY */ +#endif /* MBEDTLS_ECP_MONTGOMERY_ENABLED */ /* * Check that a point is valid as a public key @@ -2619,12 +3060,12 @@ int mbedtls_ecp_check_pubkey( const mbedtls_ecp_group *grp, if( mbedtls_mpi_cmp_int( &pt->Z, 1 ) != 0 ) return( MBEDTLS_ERR_ECP_INVALID_KEY ); -#if defined(ECP_MONTGOMERY) - if( ecp_get_type( grp ) == ECP_TYPE_MONTGOMERY ) +#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) + if( mbedtls_ecp_get_type( grp ) == MBEDTLS_ECP_TYPE_MONTGOMERY ) return( ecp_check_pubkey_mx( grp, pt ) ); #endif -#if defined(ECP_SHORTWEIERSTRASS) - if( ecp_get_type( grp ) == ECP_TYPE_SHORT_WEIERSTRASS ) +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) + if( mbedtls_ecp_get_type( grp ) == MBEDTLS_ECP_TYPE_SHORT_WEIERSTRASS ) return( ecp_check_pubkey_sw( grp, pt ) ); #endif return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); @@ -2639,8 +3080,8 @@ int mbedtls_ecp_check_privkey( const mbedtls_ecp_group *grp, ECP_VALIDATE_RET( grp != NULL ); ECP_VALIDATE_RET( d != NULL ); -#if defined(ECP_MONTGOMERY) - if( ecp_get_type( grp ) == ECP_TYPE_MONTGOMERY ) +#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) + if( mbedtls_ecp_get_type( grp ) == MBEDTLS_ECP_TYPE_MONTGOMERY ) { /* see RFC 7748 sec. 5 para. 5 */ if( mbedtls_mpi_get_bit( d, 0 ) != 0 || @@ -2654,9 +3095,9 @@ int mbedtls_ecp_check_privkey( const mbedtls_ecp_group *grp, return( 0 ); } -#endif /* ECP_MONTGOMERY */ -#if defined(ECP_SHORTWEIERSTRASS) - if( ecp_get_type( grp ) == ECP_TYPE_SHORT_WEIERSTRASS ) +#endif /* MBEDTLS_ECP_MONTGOMERY_ENABLED */ +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) + if( mbedtls_ecp_get_type( grp ) == MBEDTLS_ECP_TYPE_SHORT_WEIERSTRASS ) { /* see SEC1 3.2 */ if( mbedtls_mpi_cmp_int( d, 1 ) < 0 || @@ -2665,11 +3106,61 @@ int mbedtls_ecp_check_privkey( const mbedtls_ecp_group *grp, else return( 0 ); } -#endif /* ECP_SHORTWEIERSTRASS */ +#endif /* MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED */ return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); } +#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) +MBEDTLS_STATIC_TESTABLE +int mbedtls_ecp_gen_privkey_mx( size_t high_bit, + mbedtls_mpi *d, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ) +{ + int ret = MBEDTLS_ERR_ECP_BAD_INPUT_DATA; + size_t n_random_bytes = high_bit / 8 + 1; + + /* [Curve25519] page 5 */ + /* Generate a (high_bit+1)-bit random number by generating just enough + * random bytes, then shifting out extra bits from the top (necessary + * when (high_bit+1) is not a multiple of 8). */ + MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( d, n_random_bytes, + f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( d, 8 * n_random_bytes - high_bit - 1 ) ); + + MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( d, high_bit, 1 ) ); + + /* Make sure the last two bits are unset for Curve448, three bits for + Curve25519 */ + MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( d, 0, 0 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( d, 1, 0 ) ); + if( high_bit == 254 ) + { + MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( d, 2, 0 ) ); + } + +cleanup: + return( ret ); +} +#endif /* MBEDTLS_ECP_MONTGOMERY_ENABLED */ + +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) +static int mbedtls_ecp_gen_privkey_sw( + const mbedtls_mpi *N, mbedtls_mpi *d, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) +{ + int ret = mbedtls_mpi_random( d, 1, N, f_rng, p_rng ); + switch( ret ) + { + case MBEDTLS_ERR_MPI_NOT_ACCEPTABLE: + return( MBEDTLS_ERR_ECP_RANDOM_FAILED ); + default: + return( ret ); + } +} +#endif /* MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED */ + /* * Generate a private key */ @@ -2678,80 +3169,21 @@ int mbedtls_ecp_gen_privkey( const mbedtls_ecp_group *grp, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret = MBEDTLS_ERR_ECP_BAD_INPUT_DATA; - size_t n_size; - ECP_VALIDATE_RET( grp != NULL ); ECP_VALIDATE_RET( d != NULL ); ECP_VALIDATE_RET( f_rng != NULL ); - n_size = ( grp->nbits + 7 ) / 8; - -#if defined(ECP_MONTGOMERY) - if( ecp_get_type( grp ) == ECP_TYPE_MONTGOMERY ) - { - /* [M225] page 5 */ - size_t b; - - do { - MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( d, n_size, f_rng, p_rng ) ); - } while( mbedtls_mpi_bitlen( d ) == 0); - - /* Make sure the most significant bit is nbits */ - b = mbedtls_mpi_bitlen( d ) - 1; /* mbedtls_mpi_bitlen is one-based */ - if( b > grp->nbits ) - MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( d, b - grp->nbits ) ); - else - MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( d, grp->nbits, 1 ) ); - - /* Make sure the last two bits are unset for Curve448, three bits for - Curve25519 */ - MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( d, 0, 0 ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( d, 1, 0 ) ); - if( grp->nbits == 254 ) - { - MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( d, 2, 0 ) ); - } - } -#endif /* ECP_MONTGOMERY */ - -#if defined(ECP_SHORTWEIERSTRASS) - if( ecp_get_type( grp ) == ECP_TYPE_SHORT_WEIERSTRASS ) - { - /* SEC1 3.2.1: Generate d such that 1 <= n < N */ - int count = 0; +#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) + if( mbedtls_ecp_get_type( grp ) == MBEDTLS_ECP_TYPE_MONTGOMERY ) + return( mbedtls_ecp_gen_privkey_mx( grp->nbits, d, f_rng, p_rng ) ); +#endif /* MBEDTLS_ECP_MONTGOMERY_ENABLED */ - /* - * Match the procedure given in RFC 6979 (deterministic ECDSA): - * - use the same byte ordering; - * - keep the leftmost nbits bits of the generated octet string; - * - try until result is in the desired range. - * This also avoids any biais, which is especially important for ECDSA. - */ - do - { - MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( d, n_size, f_rng, p_rng ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( d, 8 * n_size - grp->nbits ) ); - - /* - * Each try has at worst a probability 1/2 of failing (the msb has - * a probability 1/2 of being 0, and then the result will be < N), - * so after 30 tries failure probability is a most 2**(-30). - * - * For most curves, 1 try is enough with overwhelming probability, - * since N starts with a lot of 1s in binary, but some curves - * such as secp224k1 are actually very close to the worst case. - */ - if( ++count > 30 ) - return( MBEDTLS_ERR_ECP_RANDOM_FAILED ); - } - while( mbedtls_mpi_cmp_int( d, 1 ) < 0 || - mbedtls_mpi_cmp_mpi( d, &grp->N ) >= 0 ); - } -#endif /* ECP_SHORTWEIERSTRASS */ +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) + if( mbedtls_ecp_get_type( grp ) == MBEDTLS_ECP_TYPE_SHORT_WEIERSTRASS ) + return( mbedtls_ecp_gen_privkey_sw( &grp->N, d, f_rng, p_rng ) ); +#endif /* MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED */ -cleanup: - return( ret ); + return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); } /* @@ -2763,7 +3195,7 @@ int mbedtls_ecp_gen_keypair_base( mbedtls_ecp_group *grp, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ECP_VALIDATE_RET( grp != NULL ); ECP_VALIDATE_RET( d != NULL ); ECP_VALIDATE_RET( G != NULL ); @@ -2799,7 +3231,7 @@ int mbedtls_ecp_gen_keypair( mbedtls_ecp_group *grp, int mbedtls_ecp_gen_key( mbedtls_ecp_group_id grp_id, mbedtls_ecp_keypair *key, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ECP_VALIDATE_RET( key != NULL ); ECP_VALIDATE_RET( f_rng != NULL ); @@ -2809,12 +3241,120 @@ int mbedtls_ecp_gen_key( mbedtls_ecp_group_id grp_id, mbedtls_ecp_keypair *key, return( mbedtls_ecp_gen_keypair( &key->grp, &key->d, &key->Q, f_rng, p_rng ) ); } +#define ECP_CURVE25519_KEY_SIZE 32 +/* + * Read a private key. + */ +int mbedtls_ecp_read_key( mbedtls_ecp_group_id grp_id, mbedtls_ecp_keypair *key, + const unsigned char *buf, size_t buflen ) +{ + int ret = 0; + + ECP_VALIDATE_RET( key != NULL ); + ECP_VALIDATE_RET( buf != NULL ); + + if( ( ret = mbedtls_ecp_group_load( &key->grp, grp_id ) ) != 0 ) + return( ret ); + + ret = MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE; + +#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) + if( mbedtls_ecp_get_type( &key->grp ) == MBEDTLS_ECP_TYPE_MONTGOMERY ) + { + /* + * If it is Curve25519 curve then mask the key as mandated by RFC7748 + */ + if( grp_id == MBEDTLS_ECP_DP_CURVE25519 ) + { + if( buflen != ECP_CURVE25519_KEY_SIZE ) + return MBEDTLS_ERR_ECP_INVALID_KEY; + + MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary_le( &key->d, buf, buflen ) ); + + /* Set the three least significant bits to 0 */ + MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( &key->d, 0, 0 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( &key->d, 1, 0 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( &key->d, 2, 0 ) ); + + /* Set the most significant bit to 0 */ + MBEDTLS_MPI_CHK( + mbedtls_mpi_set_bit( &key->d, + ECP_CURVE25519_KEY_SIZE * 8 - 1, 0 ) + ); + + /* Set the second most significant bit to 1 */ + MBEDTLS_MPI_CHK( + mbedtls_mpi_set_bit( &key->d, + ECP_CURVE25519_KEY_SIZE * 8 - 2, 1 ) + ); + } + else + ret = MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE; + } + +#endif +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) + if( mbedtls_ecp_get_type( &key->grp ) == MBEDTLS_ECP_TYPE_SHORT_WEIERSTRASS ) + { + MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &key->d, buf, buflen ) ); + + MBEDTLS_MPI_CHK( mbedtls_ecp_check_privkey( &key->grp, &key->d ) ); + } + +#endif +cleanup: + + if( ret != 0 ) + mbedtls_mpi_free( &key->d ); + + return( ret ); +} + +/* + * Write a private key. + */ +int mbedtls_ecp_write_key( mbedtls_ecp_keypair *key, + unsigned char *buf, size_t buflen ) +{ + int ret = MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE; + + ECP_VALIDATE_RET( key != NULL ); + ECP_VALIDATE_RET( buf != NULL ); + +#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) + if( mbedtls_ecp_get_type( &key->grp ) == MBEDTLS_ECP_TYPE_MONTGOMERY ) + { + if( key->grp.id == MBEDTLS_ECP_DP_CURVE25519 ) + { + if( buflen < ECP_CURVE25519_KEY_SIZE ) + return MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL; + + MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary_le( &key->d, buf, buflen ) ); + } + else + ret = MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE; + } + +#endif +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) + if( mbedtls_ecp_get_type( &key->grp ) == MBEDTLS_ECP_TYPE_SHORT_WEIERSTRASS ) + { + MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &key->d, buf, buflen ) ); + } + +#endif +cleanup: + + return( ret ); +} + + /* * Check a public-private key pair */ int mbedtls_ecp_check_pub_priv( const mbedtls_ecp_keypair *pub, const mbedtls_ecp_keypair *prv ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecp_point Q; mbedtls_ecp_group grp; ECP_VALIDATE_RET( pub != NULL ); @@ -2855,33 +3395,141 @@ int mbedtls_ecp_check_pub_priv( const mbedtls_ecp_keypair *pub, const mbedtls_ec #if defined(MBEDTLS_SELF_TEST) +/* Adjust the exponent to be a valid private point for the specified curve. + * This is sometimes necessary because we use a single set of exponents + * for all curves but the validity of values depends on the curve. */ +static int self_test_adjust_exponent( const mbedtls_ecp_group *grp, + mbedtls_mpi *m ) +{ + int ret = 0; + switch( grp->id ) + { + /* If Curve25519 is available, then that's what we use for the + * Montgomery test, so we don't need the adjustment code. */ +#if ! defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) +#if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED) + case MBEDTLS_ECP_DP_CURVE448: + /* Move highest bit from 254 to N-1. Setting bit N-1 is + * necessary to enforce the highest-bit-set constraint. */ + MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( m, 254, 0 ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( m, grp->nbits, 1 ) ); + /* Copy second-highest bit from 253 to N-2. This is not + * necessary but improves the test variety a bit. */ + MBEDTLS_MPI_CHK( + mbedtls_mpi_set_bit( m, grp->nbits - 1, + mbedtls_mpi_get_bit( m, 253 ) ) ); + break; +#endif +#endif /* ! defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) */ + default: + /* Non-Montgomery curves and Curve25519 need no adjustment. */ + (void) grp; + (void) m; + goto cleanup; + } +cleanup: + return( ret ); +} + +/* Calculate R = m.P for each m in exponents. Check that the number of + * basic operations doesn't depend on the value of m. */ +static int self_test_point( int verbose, + mbedtls_ecp_group *grp, + mbedtls_ecp_point *R, + mbedtls_mpi *m, + const mbedtls_ecp_point *P, + const char *const *exponents, + size_t n_exponents ) +{ + int ret = 0; + size_t i = 0; + unsigned long add_c_prev, dbl_c_prev, mul_c_prev; + add_count = 0; + dbl_count = 0; + mul_count = 0; + + MBEDTLS_MPI_CHK( mbedtls_mpi_read_string( m, 16, exponents[0] ) ); + MBEDTLS_MPI_CHK( self_test_adjust_exponent( grp, m ) ); + MBEDTLS_MPI_CHK( mbedtls_ecp_mul( grp, R, m, P, NULL, NULL ) ); + + for( i = 1; i < n_exponents; i++ ) + { + add_c_prev = add_count; + dbl_c_prev = dbl_count; + mul_c_prev = mul_count; + add_count = 0; + dbl_count = 0; + mul_count = 0; + + MBEDTLS_MPI_CHK( mbedtls_mpi_read_string( m, 16, exponents[i] ) ); + MBEDTLS_MPI_CHK( self_test_adjust_exponent( grp, m ) ); + MBEDTLS_MPI_CHK( mbedtls_ecp_mul( grp, R, m, P, NULL, NULL ) ); + + if( add_count != add_c_prev || + dbl_count != dbl_c_prev || + mul_count != mul_c_prev ) + { + ret = 1; + break; + } + } + +cleanup: + if( verbose != 0 ) + { + if( ret != 0 ) + mbedtls_printf( "failed (%u)\n", (unsigned int) i ); + else + mbedtls_printf( "passed\n" ); + } + return( ret ); +} + /* * Checkup routine */ int mbedtls_ecp_self_test( int verbose ) { - int ret; - size_t i; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecp_group grp; mbedtls_ecp_point R, P; mbedtls_mpi m; - unsigned long add_c_prev, dbl_c_prev, mul_c_prev; - /* exponents especially adapted for secp192r1 */ - const char *exponents[] = + +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) + /* Exponents especially adapted for secp192k1, which has the lowest + * order n of all supported curves (secp192r1 is in a slightly larger + * field but the order of its base point is slightly smaller). */ + const char *sw_exponents[] = { "000000000000000000000000000000000000000000000001", /* one */ - "FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22830", /* N - 1 */ + "FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8C", /* n - 1 */ "5EA6F389A38B8BC81E767753B15AA5569E1782E30ABE7D25", /* random */ "400000000000000000000000000000000000000000000000", /* one and zeros */ "7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", /* all ones */ "555555555555555555555555555555555555555555555555", /* 101010... */ }; +#endif /* MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED */ +#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) + const char *m_exponents[] = + { + /* Valid private values for Curve25519. In a build with Curve448 + * but not Curve25519, they will be adjusted in + * self_test_adjust_exponent(). */ + "4000000000000000000000000000000000000000000000000000000000000000", + "5C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C30", + "5715ECCE24583F7A7023C24164390586842E816D7280A49EF6DF4EAE6B280BF8", + "41A2B017516F6D254E1F002BCCBADD54BE30F8CEC737A0E912B4963B6BA74460", + "5555555555555555555555555555555555555555555555555555555555555550", + "7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8", + }; +#endif /* MBEDTLS_ECP_MONTGOMERY_ENABLED */ mbedtls_ecp_group_init( &grp ); mbedtls_ecp_point_init( &R ); mbedtls_ecp_point_init( &P ); mbedtls_mpi_init( &m ); +#if defined(MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED) /* Use secp192r1 if available, or any available curve */ #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) MBEDTLS_MPI_CHK( mbedtls_ecp_group_load( &grp, MBEDTLS_ECP_DP_SECP192R1 ) ); @@ -2890,86 +3538,53 @@ int mbedtls_ecp_self_test( int verbose ) #endif if( verbose != 0 ) - mbedtls_printf( " ECP test #1 (constant op_count, base point G): " ); - + mbedtls_printf( " ECP SW test #1 (constant op_count, base point G): " ); /* Do a dummy multiplication first to trigger precomputation */ MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &m, 2 ) ); MBEDTLS_MPI_CHK( mbedtls_ecp_mul( &grp, &P, &m, &grp.G, NULL, NULL ) ); - - add_count = 0; - dbl_count = 0; - mul_count = 0; - MBEDTLS_MPI_CHK( mbedtls_mpi_read_string( &m, 16, exponents[0] ) ); - MBEDTLS_MPI_CHK( mbedtls_ecp_mul( &grp, &R, &m, &grp.G, NULL, NULL ) ); - - for( i = 1; i < sizeof( exponents ) / sizeof( exponents[0] ); i++ ) - { - add_c_prev = add_count; - dbl_c_prev = dbl_count; - mul_c_prev = mul_count; - add_count = 0; - dbl_count = 0; - mul_count = 0; - - MBEDTLS_MPI_CHK( mbedtls_mpi_read_string( &m, 16, exponents[i] ) ); - MBEDTLS_MPI_CHK( mbedtls_ecp_mul( &grp, &R, &m, &grp.G, NULL, NULL ) ); - - if( add_count != add_c_prev || - dbl_count != dbl_c_prev || - mul_count != mul_c_prev ) - { - if( verbose != 0 ) - mbedtls_printf( "failed (%u)\n", (unsigned int) i ); - - ret = 1; - goto cleanup; - } - } - - if( verbose != 0 ) - mbedtls_printf( "passed\n" ); + ret = self_test_point( verbose, + &grp, &R, &m, &grp.G, + sw_exponents, + sizeof( sw_exponents ) / sizeof( sw_exponents[0] )); + if( ret != 0 ) + goto cleanup; if( verbose != 0 ) - mbedtls_printf( " ECP test #2 (constant op_count, other point): " ); + mbedtls_printf( " ECP SW test #2 (constant op_count, other point): " ); /* We computed P = 2G last time, use it */ + ret = self_test_point( verbose, + &grp, &R, &m, &P, + sw_exponents, + sizeof( sw_exponents ) / sizeof( sw_exponents[0] )); + if( ret != 0 ) + goto cleanup; - add_count = 0; - dbl_count = 0; - mul_count = 0; - MBEDTLS_MPI_CHK( mbedtls_mpi_read_string( &m, 16, exponents[0] ) ); - MBEDTLS_MPI_CHK( mbedtls_ecp_mul( &grp, &R, &m, &P, NULL, NULL ) ); - - for( i = 1; i < sizeof( exponents ) / sizeof( exponents[0] ); i++ ) - { - add_c_prev = add_count; - dbl_c_prev = dbl_count; - mul_c_prev = mul_count; - add_count = 0; - dbl_count = 0; - mul_count = 0; - - MBEDTLS_MPI_CHK( mbedtls_mpi_read_string( &m, 16, exponents[i] ) ); - MBEDTLS_MPI_CHK( mbedtls_ecp_mul( &grp, &R, &m, &P, NULL, NULL ) ); - - if( add_count != add_c_prev || - dbl_count != dbl_c_prev || - mul_count != mul_c_prev ) - { - if( verbose != 0 ) - mbedtls_printf( "failed (%u)\n", (unsigned int) i ); - - ret = 1; - goto cleanup; - } - } + mbedtls_ecp_group_free( &grp ); + mbedtls_ecp_point_free( &R ); +#endif /* MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED */ +#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) if( verbose != 0 ) - mbedtls_printf( "passed\n" ); + mbedtls_printf( " ECP Montgomery test (constant op_count): " ); +#if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) + MBEDTLS_MPI_CHK( mbedtls_ecp_group_load( &grp, MBEDTLS_ECP_DP_CURVE25519 ) ); +#elif defined(MBEDTLS_ECP_DP_CURVE448_ENABLED) + MBEDTLS_MPI_CHK( mbedtls_ecp_group_load( &grp, MBEDTLS_ECP_DP_CURVE448 ) ); +#else +#error "MBEDTLS_ECP_MONTGOMERY_ENABLED is defined, but no curve is supported for self-test" +#endif + ret = self_test_point( verbose, + &grp, &R, &m, &grp.G, + m_exponents, + sizeof( m_exponents ) / sizeof( m_exponents[0] )); + if( ret != 0 ) + goto cleanup; +#endif /* MBEDTLS_ECP_MONTGOMERY_ENABLED */ cleanup: if( ret < 0 && verbose != 0 ) - mbedtls_printf( "Unexpected error, return code = %08X\n", ret ); + mbedtls_printf( "Unexpected error, return code = %08X\n", (unsigned int) ret ); mbedtls_ecp_group_free( &grp ); mbedtls_ecp_point_free( &R ); diff --git a/Externals/mbedtls/library/ecp_curves.c b/Externals/mbedtls/library/ecp_curves.c index 731621dc3ca0..ff26a18e8fc1 100644 --- a/Externals/mbedtls/library/ecp_curves.c +++ b/Externals/mbedtls/library/ecp_curves.c @@ -1,7 +1,7 @@ /* * Elliptic curves over GF(p): curve-specific data and functions * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,20 +15,18 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_ECP_C) #include "mbedtls/ecp.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" +#include "mbedtls/bn_mul.h" + +#include "ecp_invasive.h" #include @@ -45,44 +43,10 @@ #define inline __inline #endif -/* - * Conversion macros for embedded constants: - * build lists of mbedtls_mpi_uint's from lists of unsigned char's grouped by 8, 4 or 2 - */ -#if defined(MBEDTLS_HAVE_INT32) - -#define BYTES_TO_T_UINT_4( a, b, c, d ) \ - ( (mbedtls_mpi_uint) a << 0 ) | \ - ( (mbedtls_mpi_uint) b << 8 ) | \ - ( (mbedtls_mpi_uint) c << 16 ) | \ - ( (mbedtls_mpi_uint) d << 24 ) - -#define BYTES_TO_T_UINT_2( a, b ) \ - BYTES_TO_T_UINT_4( a, b, 0, 0 ) - -#define BYTES_TO_T_UINT_8( a, b, c, d, e, f, g, h ) \ - BYTES_TO_T_UINT_4( a, b, c, d ), \ - BYTES_TO_T_UINT_4( e, f, g, h ) +#define ECP_MPI_INIT(s, n, p) {s, (n), (mbedtls_mpi_uint *)(p)} -#else /* 64-bits */ - -#define BYTES_TO_T_UINT_8( a, b, c, d, e, f, g, h ) \ - ( (mbedtls_mpi_uint) a << 0 ) | \ - ( (mbedtls_mpi_uint) b << 8 ) | \ - ( (mbedtls_mpi_uint) c << 16 ) | \ - ( (mbedtls_mpi_uint) d << 24 ) | \ - ( (mbedtls_mpi_uint) e << 32 ) | \ - ( (mbedtls_mpi_uint) f << 40 ) | \ - ( (mbedtls_mpi_uint) g << 48 ) | \ - ( (mbedtls_mpi_uint) h << 56 ) - -#define BYTES_TO_T_UINT_4( a, b, c, d ) \ - BYTES_TO_T_UINT_8( a, b, c, d, 0, 0, 0, 0 ) - -#define BYTES_TO_T_UINT_2( a, b ) \ - BYTES_TO_T_UINT_8( a, b, 0, 0, 0, 0, 0, 0 ) - -#endif /* bits in mbedtls_mpi_uint */ +#define ECP_MPI_INIT_ARRAY(x) \ + ECP_MPI_INIT(1, sizeof(x) / sizeof(mbedtls_mpi_uint), x) /* * Note: the constants are in little-endian order @@ -94,29 +58,29 @@ */ #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) static const mbedtls_mpi_uint secp192r1_p[] = { - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), }; static const mbedtls_mpi_uint secp192r1_b[] = { - BYTES_TO_T_UINT_8( 0xB1, 0xB9, 0x46, 0xC1, 0xEC, 0xDE, 0xB8, 0xFE ), - BYTES_TO_T_UINT_8( 0x49, 0x30, 0x24, 0x72, 0xAB, 0xE9, 0xA7, 0x0F ), - BYTES_TO_T_UINT_8( 0xE7, 0x80, 0x9C, 0xE5, 0x19, 0x05, 0x21, 0x64 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xB1, 0xB9, 0x46, 0xC1, 0xEC, 0xDE, 0xB8, 0xFE ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x49, 0x30, 0x24, 0x72, 0xAB, 0xE9, 0xA7, 0x0F ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xE7, 0x80, 0x9C, 0xE5, 0x19, 0x05, 0x21, 0x64 ), }; static const mbedtls_mpi_uint secp192r1_gx[] = { - BYTES_TO_T_UINT_8( 0x12, 0x10, 0xFF, 0x82, 0xFD, 0x0A, 0xFF, 0xF4 ), - BYTES_TO_T_UINT_8( 0x00, 0x88, 0xA1, 0x43, 0xEB, 0x20, 0xBF, 0x7C ), - BYTES_TO_T_UINT_8( 0xF6, 0x90, 0x30, 0xB0, 0x0E, 0xA8, 0x8D, 0x18 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x12, 0x10, 0xFF, 0x82, 0xFD, 0x0A, 0xFF, 0xF4 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x00, 0x88, 0xA1, 0x43, 0xEB, 0x20, 0xBF, 0x7C ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xF6, 0x90, 0x30, 0xB0, 0x0E, 0xA8, 0x8D, 0x18 ), }; static const mbedtls_mpi_uint secp192r1_gy[] = { - BYTES_TO_T_UINT_8( 0x11, 0x48, 0x79, 0x1E, 0xA1, 0x77, 0xF9, 0x73 ), - BYTES_TO_T_UINT_8( 0xD5, 0xCD, 0x24, 0x6B, 0xED, 0x11, 0x10, 0x63 ), - BYTES_TO_T_UINT_8( 0x78, 0xDA, 0xC8, 0xFF, 0x95, 0x2B, 0x19, 0x07 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x11, 0x48, 0x79, 0x1E, 0xA1, 0x77, 0xF9, 0x73 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xD5, 0xCD, 0x24, 0x6B, 0xED, 0x11, 0x10, 0x63 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x78, 0xDA, 0xC8, 0xFF, 0x95, 0x2B, 0x19, 0x07 ), }; static const mbedtls_mpi_uint secp192r1_n[] = { - BYTES_TO_T_UINT_8( 0x31, 0x28, 0xD2, 0xB4, 0xB1, 0xC9, 0x6B, 0x14 ), - BYTES_TO_T_UINT_8( 0x36, 0xF8, 0xDE, 0x99, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x31, 0x28, 0xD2, 0xB4, 0xB1, 0xC9, 0x6B, 0x14 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x36, 0xF8, 0xDE, 0x99, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), }; #endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */ @@ -125,34 +89,34 @@ static const mbedtls_mpi_uint secp192r1_n[] = { */ #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) static const mbedtls_mpi_uint secp224r1_p[] = { - BYTES_TO_T_UINT_8( 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), - BYTES_TO_T_UINT_8( 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 ), }; static const mbedtls_mpi_uint secp224r1_b[] = { - BYTES_TO_T_UINT_8( 0xB4, 0xFF, 0x55, 0x23, 0x43, 0x39, 0x0B, 0x27 ), - BYTES_TO_T_UINT_8( 0xBA, 0xD8, 0xBF, 0xD7, 0xB7, 0xB0, 0x44, 0x50 ), - BYTES_TO_T_UINT_8( 0x56, 0x32, 0x41, 0xF5, 0xAB, 0xB3, 0x04, 0x0C ), - BYTES_TO_T_UINT_4( 0x85, 0x0A, 0x05, 0xB4 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xB4, 0xFF, 0x55, 0x23, 0x43, 0x39, 0x0B, 0x27 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xBA, 0xD8, 0xBF, 0xD7, 0xB7, 0xB0, 0x44, 0x50 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x56, 0x32, 0x41, 0xF5, 0xAB, 0xB3, 0x04, 0x0C ), + MBEDTLS_BYTES_TO_T_UINT_4( 0x85, 0x0A, 0x05, 0xB4 ), }; static const mbedtls_mpi_uint secp224r1_gx[] = { - BYTES_TO_T_UINT_8( 0x21, 0x1D, 0x5C, 0x11, 0xD6, 0x80, 0x32, 0x34 ), - BYTES_TO_T_UINT_8( 0x22, 0x11, 0xC2, 0x56, 0xD3, 0xC1, 0x03, 0x4A ), - BYTES_TO_T_UINT_8( 0xB9, 0x90, 0x13, 0x32, 0x7F, 0xBF, 0xB4, 0x6B ), - BYTES_TO_T_UINT_4( 0xBD, 0x0C, 0x0E, 0xB7 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x21, 0x1D, 0x5C, 0x11, 0xD6, 0x80, 0x32, 0x34 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x22, 0x11, 0xC2, 0x56, 0xD3, 0xC1, 0x03, 0x4A ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xB9, 0x90, 0x13, 0x32, 0x7F, 0xBF, 0xB4, 0x6B ), + MBEDTLS_BYTES_TO_T_UINT_4( 0xBD, 0x0C, 0x0E, 0xB7 ), }; static const mbedtls_mpi_uint secp224r1_gy[] = { - BYTES_TO_T_UINT_8( 0x34, 0x7E, 0x00, 0x85, 0x99, 0x81, 0xD5, 0x44 ), - BYTES_TO_T_UINT_8( 0x64, 0x47, 0x07, 0x5A, 0xA0, 0x75, 0x43, 0xCD ), - BYTES_TO_T_UINT_8( 0xE6, 0xDF, 0x22, 0x4C, 0xFB, 0x23, 0xF7, 0xB5 ), - BYTES_TO_T_UINT_4( 0x88, 0x63, 0x37, 0xBD ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x34, 0x7E, 0x00, 0x85, 0x99, 0x81, 0xD5, 0x44 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x64, 0x47, 0x07, 0x5A, 0xA0, 0x75, 0x43, 0xCD ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xE6, 0xDF, 0x22, 0x4C, 0xFB, 0x23, 0xF7, 0xB5 ), + MBEDTLS_BYTES_TO_T_UINT_4( 0x88, 0x63, 0x37, 0xBD ), }; static const mbedtls_mpi_uint secp224r1_n[] = { - BYTES_TO_T_UINT_8( 0x3D, 0x2A, 0x5C, 0x5C, 0x45, 0x29, 0xDD, 0x13 ), - BYTES_TO_T_UINT_8( 0x3E, 0xF0, 0xB8, 0xE0, 0xA2, 0x16, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_4( 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x3D, 0x2A, 0x5C, 0x5C, 0x45, 0x29, 0xDD, 0x13 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x3E, 0xF0, 0xB8, 0xE0, 0xA2, 0x16, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_4( 0xFF, 0xFF, 0xFF, 0xFF ), }; #endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */ @@ -161,34 +125,34 @@ static const mbedtls_mpi_uint secp224r1_n[] = { */ #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) static const mbedtls_mpi_uint secp256r1_p[] = { - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 ), - BYTES_TO_T_UINT_8( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), - BYTES_TO_T_UINT_8( 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF ), }; static const mbedtls_mpi_uint secp256r1_b[] = { - BYTES_TO_T_UINT_8( 0x4B, 0x60, 0xD2, 0x27, 0x3E, 0x3C, 0xCE, 0x3B ), - BYTES_TO_T_UINT_8( 0xF6, 0xB0, 0x53, 0xCC, 0xB0, 0x06, 0x1D, 0x65 ), - BYTES_TO_T_UINT_8( 0xBC, 0x86, 0x98, 0x76, 0x55, 0xBD, 0xEB, 0xB3 ), - BYTES_TO_T_UINT_8( 0xE7, 0x93, 0x3A, 0xAA, 0xD8, 0x35, 0xC6, 0x5A ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x4B, 0x60, 0xD2, 0x27, 0x3E, 0x3C, 0xCE, 0x3B ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xF6, 0xB0, 0x53, 0xCC, 0xB0, 0x06, 0x1D, 0x65 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xBC, 0x86, 0x98, 0x76, 0x55, 0xBD, 0xEB, 0xB3 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xE7, 0x93, 0x3A, 0xAA, 0xD8, 0x35, 0xC6, 0x5A ), }; static const mbedtls_mpi_uint secp256r1_gx[] = { - BYTES_TO_T_UINT_8( 0x96, 0xC2, 0x98, 0xD8, 0x45, 0x39, 0xA1, 0xF4 ), - BYTES_TO_T_UINT_8( 0xA0, 0x33, 0xEB, 0x2D, 0x81, 0x7D, 0x03, 0x77 ), - BYTES_TO_T_UINT_8( 0xF2, 0x40, 0xA4, 0x63, 0xE5, 0xE6, 0xBC, 0xF8 ), - BYTES_TO_T_UINT_8( 0x47, 0x42, 0x2C, 0xE1, 0xF2, 0xD1, 0x17, 0x6B ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x96, 0xC2, 0x98, 0xD8, 0x45, 0x39, 0xA1, 0xF4 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xA0, 0x33, 0xEB, 0x2D, 0x81, 0x7D, 0x03, 0x77 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xF2, 0x40, 0xA4, 0x63, 0xE5, 0xE6, 0xBC, 0xF8 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x47, 0x42, 0x2C, 0xE1, 0xF2, 0xD1, 0x17, 0x6B ), }; static const mbedtls_mpi_uint secp256r1_gy[] = { - BYTES_TO_T_UINT_8( 0xF5, 0x51, 0xBF, 0x37, 0x68, 0x40, 0xB6, 0xCB ), - BYTES_TO_T_UINT_8( 0xCE, 0x5E, 0x31, 0x6B, 0x57, 0x33, 0xCE, 0x2B ), - BYTES_TO_T_UINT_8( 0x16, 0x9E, 0x0F, 0x7C, 0x4A, 0xEB, 0xE7, 0x8E ), - BYTES_TO_T_UINT_8( 0x9B, 0x7F, 0x1A, 0xFE, 0xE2, 0x42, 0xE3, 0x4F ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xF5, 0x51, 0xBF, 0x37, 0x68, 0x40, 0xB6, 0xCB ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xCE, 0x5E, 0x31, 0x6B, 0x57, 0x33, 0xCE, 0x2B ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x16, 0x9E, 0x0F, 0x7C, 0x4A, 0xEB, 0xE7, 0x8E ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x9B, 0x7F, 0x1A, 0xFE, 0xE2, 0x42, 0xE3, 0x4F ), }; static const mbedtls_mpi_uint secp256r1_n[] = { - BYTES_TO_T_UINT_8( 0x51, 0x25, 0x63, 0xFC, 0xC2, 0xCA, 0xB9, 0xF3 ), - BYTES_TO_T_UINT_8( 0x84, 0x9E, 0x17, 0xA7, 0xAD, 0xFA, 0xE6, 0xBC ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x51, 0x25, 0x63, 0xFC, 0xC2, 0xCA, 0xB9, 0xF3 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x84, 0x9E, 0x17, 0xA7, 0xAD, 0xFA, 0xE6, 0xBC ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF ), }; #endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */ @@ -197,44 +161,44 @@ static const mbedtls_mpi_uint secp256r1_n[] = { */ #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) static const mbedtls_mpi_uint secp384r1_p[] = { - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 ), - BYTES_TO_T_UINT_8( 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), }; static const mbedtls_mpi_uint secp384r1_b[] = { - BYTES_TO_T_UINT_8( 0xEF, 0x2A, 0xEC, 0xD3, 0xED, 0xC8, 0x85, 0x2A ), - BYTES_TO_T_UINT_8( 0x9D, 0xD1, 0x2E, 0x8A, 0x8D, 0x39, 0x56, 0xC6 ), - BYTES_TO_T_UINT_8( 0x5A, 0x87, 0x13, 0x50, 0x8F, 0x08, 0x14, 0x03 ), - BYTES_TO_T_UINT_8( 0x12, 0x41, 0x81, 0xFE, 0x6E, 0x9C, 0x1D, 0x18 ), - BYTES_TO_T_UINT_8( 0x19, 0x2D, 0xF8, 0xE3, 0x6B, 0x05, 0x8E, 0x98 ), - BYTES_TO_T_UINT_8( 0xE4, 0xE7, 0x3E, 0xE2, 0xA7, 0x2F, 0x31, 0xB3 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xEF, 0x2A, 0xEC, 0xD3, 0xED, 0xC8, 0x85, 0x2A ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x9D, 0xD1, 0x2E, 0x8A, 0x8D, 0x39, 0x56, 0xC6 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x5A, 0x87, 0x13, 0x50, 0x8F, 0x08, 0x14, 0x03 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x12, 0x41, 0x81, 0xFE, 0x6E, 0x9C, 0x1D, 0x18 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x19, 0x2D, 0xF8, 0xE3, 0x6B, 0x05, 0x8E, 0x98 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xE4, 0xE7, 0x3E, 0xE2, 0xA7, 0x2F, 0x31, 0xB3 ), }; static const mbedtls_mpi_uint secp384r1_gx[] = { - BYTES_TO_T_UINT_8( 0xB7, 0x0A, 0x76, 0x72, 0x38, 0x5E, 0x54, 0x3A ), - BYTES_TO_T_UINT_8( 0x6C, 0x29, 0x55, 0xBF, 0x5D, 0xF2, 0x02, 0x55 ), - BYTES_TO_T_UINT_8( 0x38, 0x2A, 0x54, 0x82, 0xE0, 0x41, 0xF7, 0x59 ), - BYTES_TO_T_UINT_8( 0x98, 0x9B, 0xA7, 0x8B, 0x62, 0x3B, 0x1D, 0x6E ), - BYTES_TO_T_UINT_8( 0x74, 0xAD, 0x20, 0xF3, 0x1E, 0xC7, 0xB1, 0x8E ), - BYTES_TO_T_UINT_8( 0x37, 0x05, 0x8B, 0xBE, 0x22, 0xCA, 0x87, 0xAA ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xB7, 0x0A, 0x76, 0x72, 0x38, 0x5E, 0x54, 0x3A ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x6C, 0x29, 0x55, 0xBF, 0x5D, 0xF2, 0x02, 0x55 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x38, 0x2A, 0x54, 0x82, 0xE0, 0x41, 0xF7, 0x59 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x98, 0x9B, 0xA7, 0x8B, 0x62, 0x3B, 0x1D, 0x6E ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x74, 0xAD, 0x20, 0xF3, 0x1E, 0xC7, 0xB1, 0x8E ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x37, 0x05, 0x8B, 0xBE, 0x22, 0xCA, 0x87, 0xAA ), }; static const mbedtls_mpi_uint secp384r1_gy[] = { - BYTES_TO_T_UINT_8( 0x5F, 0x0E, 0xEA, 0x90, 0x7C, 0x1D, 0x43, 0x7A ), - BYTES_TO_T_UINT_8( 0x9D, 0x81, 0x7E, 0x1D, 0xCE, 0xB1, 0x60, 0x0A ), - BYTES_TO_T_UINT_8( 0xC0, 0xB8, 0xF0, 0xB5, 0x13, 0x31, 0xDA, 0xE9 ), - BYTES_TO_T_UINT_8( 0x7C, 0x14, 0x9A, 0x28, 0xBD, 0x1D, 0xF4, 0xF8 ), - BYTES_TO_T_UINT_8( 0x29, 0xDC, 0x92, 0x92, 0xBF, 0x98, 0x9E, 0x5D ), - BYTES_TO_T_UINT_8( 0x6F, 0x2C, 0x26, 0x96, 0x4A, 0xDE, 0x17, 0x36 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x5F, 0x0E, 0xEA, 0x90, 0x7C, 0x1D, 0x43, 0x7A ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x9D, 0x81, 0x7E, 0x1D, 0xCE, 0xB1, 0x60, 0x0A ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xC0, 0xB8, 0xF0, 0xB5, 0x13, 0x31, 0xDA, 0xE9 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x7C, 0x14, 0x9A, 0x28, 0xBD, 0x1D, 0xF4, 0xF8 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x29, 0xDC, 0x92, 0x92, 0xBF, 0x98, 0x9E, 0x5D ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x6F, 0x2C, 0x26, 0x96, 0x4A, 0xDE, 0x17, 0x36 ), }; static const mbedtls_mpi_uint secp384r1_n[] = { - BYTES_TO_T_UINT_8( 0x73, 0x29, 0xC5, 0xCC, 0x6A, 0x19, 0xEC, 0xEC ), - BYTES_TO_T_UINT_8( 0x7A, 0xA7, 0xB0, 0x48, 0xB2, 0x0D, 0x1A, 0x58 ), - BYTES_TO_T_UINT_8( 0xDF, 0x2D, 0x37, 0xF4, 0x81, 0x4D, 0x63, 0xC7 ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x73, 0x29, 0xC5, 0xCC, 0x6A, 0x19, 0xEC, 0xEC ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x7A, 0xA7, 0xB0, 0x48, 0xB2, 0x0D, 0x1A, 0x58 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xDF, 0x2D, 0x37, 0xF4, 0x81, 0x4D, 0x63, 0xC7 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), }; #endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */ @@ -243,154 +207,154 @@ static const mbedtls_mpi_uint secp384r1_n[] = { */ #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) static const mbedtls_mpi_uint secp521r1_p[] = { - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_2( 0xFF, 0x01 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_2( 0xFF, 0x01 ), }; static const mbedtls_mpi_uint secp521r1_b[] = { - BYTES_TO_T_UINT_8( 0x00, 0x3F, 0x50, 0x6B, 0xD4, 0x1F, 0x45, 0xEF ), - BYTES_TO_T_UINT_8( 0xF1, 0x34, 0x2C, 0x3D, 0x88, 0xDF, 0x73, 0x35 ), - BYTES_TO_T_UINT_8( 0x07, 0xBF, 0xB1, 0x3B, 0xBD, 0xC0, 0x52, 0x16 ), - BYTES_TO_T_UINT_8( 0x7B, 0x93, 0x7E, 0xEC, 0x51, 0x39, 0x19, 0x56 ), - BYTES_TO_T_UINT_8( 0xE1, 0x09, 0xF1, 0x8E, 0x91, 0x89, 0xB4, 0xB8 ), - BYTES_TO_T_UINT_8( 0xF3, 0x15, 0xB3, 0x99, 0x5B, 0x72, 0xDA, 0xA2 ), - BYTES_TO_T_UINT_8( 0xEE, 0x40, 0x85, 0xB6, 0xA0, 0x21, 0x9A, 0x92 ), - BYTES_TO_T_UINT_8( 0x1F, 0x9A, 0x1C, 0x8E, 0x61, 0xB9, 0x3E, 0x95 ), - BYTES_TO_T_UINT_2( 0x51, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x00, 0x3F, 0x50, 0x6B, 0xD4, 0x1F, 0x45, 0xEF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xF1, 0x34, 0x2C, 0x3D, 0x88, 0xDF, 0x73, 0x35 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x07, 0xBF, 0xB1, 0x3B, 0xBD, 0xC0, 0x52, 0x16 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x7B, 0x93, 0x7E, 0xEC, 0x51, 0x39, 0x19, 0x56 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xE1, 0x09, 0xF1, 0x8E, 0x91, 0x89, 0xB4, 0xB8 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xF3, 0x15, 0xB3, 0x99, 0x5B, 0x72, 0xDA, 0xA2 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xEE, 0x40, 0x85, 0xB6, 0xA0, 0x21, 0x9A, 0x92 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x1F, 0x9A, 0x1C, 0x8E, 0x61, 0xB9, 0x3E, 0x95 ), + MBEDTLS_BYTES_TO_T_UINT_2( 0x51, 0x00 ), }; static const mbedtls_mpi_uint secp521r1_gx[] = { - BYTES_TO_T_UINT_8( 0x66, 0xBD, 0xE5, 0xC2, 0x31, 0x7E, 0x7E, 0xF9 ), - BYTES_TO_T_UINT_8( 0x9B, 0x42, 0x6A, 0x85, 0xC1, 0xB3, 0x48, 0x33 ), - BYTES_TO_T_UINT_8( 0xDE, 0xA8, 0xFF, 0xA2, 0x27, 0xC1, 0x1D, 0xFE ), - BYTES_TO_T_UINT_8( 0x28, 0x59, 0xE7, 0xEF, 0x77, 0x5E, 0x4B, 0xA1 ), - BYTES_TO_T_UINT_8( 0xBA, 0x3D, 0x4D, 0x6B, 0x60, 0xAF, 0x28, 0xF8 ), - BYTES_TO_T_UINT_8( 0x21, 0xB5, 0x3F, 0x05, 0x39, 0x81, 0x64, 0x9C ), - BYTES_TO_T_UINT_8( 0x42, 0xB4, 0x95, 0x23, 0x66, 0xCB, 0x3E, 0x9E ), - BYTES_TO_T_UINT_8( 0xCD, 0xE9, 0x04, 0x04, 0xB7, 0x06, 0x8E, 0x85 ), - BYTES_TO_T_UINT_2( 0xC6, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x66, 0xBD, 0xE5, 0xC2, 0x31, 0x7E, 0x7E, 0xF9 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x9B, 0x42, 0x6A, 0x85, 0xC1, 0xB3, 0x48, 0x33 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xDE, 0xA8, 0xFF, 0xA2, 0x27, 0xC1, 0x1D, 0xFE ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x28, 0x59, 0xE7, 0xEF, 0x77, 0x5E, 0x4B, 0xA1 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xBA, 0x3D, 0x4D, 0x6B, 0x60, 0xAF, 0x28, 0xF8 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x21, 0xB5, 0x3F, 0x05, 0x39, 0x81, 0x64, 0x9C ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x42, 0xB4, 0x95, 0x23, 0x66, 0xCB, 0x3E, 0x9E ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xCD, 0xE9, 0x04, 0x04, 0xB7, 0x06, 0x8E, 0x85 ), + MBEDTLS_BYTES_TO_T_UINT_2( 0xC6, 0x00 ), }; static const mbedtls_mpi_uint secp521r1_gy[] = { - BYTES_TO_T_UINT_8( 0x50, 0x66, 0xD1, 0x9F, 0x76, 0x94, 0xBE, 0x88 ), - BYTES_TO_T_UINT_8( 0x40, 0xC2, 0x72, 0xA2, 0x86, 0x70, 0x3C, 0x35 ), - BYTES_TO_T_UINT_8( 0x61, 0x07, 0xAD, 0x3F, 0x01, 0xB9, 0x50, 0xC5 ), - BYTES_TO_T_UINT_8( 0x40, 0x26, 0xF4, 0x5E, 0x99, 0x72, 0xEE, 0x97 ), - BYTES_TO_T_UINT_8( 0x2C, 0x66, 0x3E, 0x27, 0x17, 0xBD, 0xAF, 0x17 ), - BYTES_TO_T_UINT_8( 0x68, 0x44, 0x9B, 0x57, 0x49, 0x44, 0xF5, 0x98 ), - BYTES_TO_T_UINT_8( 0xD9, 0x1B, 0x7D, 0x2C, 0xB4, 0x5F, 0x8A, 0x5C ), - BYTES_TO_T_UINT_8( 0x04, 0xC0, 0x3B, 0x9A, 0x78, 0x6A, 0x29, 0x39 ), - BYTES_TO_T_UINT_2( 0x18, 0x01 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x50, 0x66, 0xD1, 0x9F, 0x76, 0x94, 0xBE, 0x88 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x40, 0xC2, 0x72, 0xA2, 0x86, 0x70, 0x3C, 0x35 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x61, 0x07, 0xAD, 0x3F, 0x01, 0xB9, 0x50, 0xC5 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x40, 0x26, 0xF4, 0x5E, 0x99, 0x72, 0xEE, 0x97 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x2C, 0x66, 0x3E, 0x27, 0x17, 0xBD, 0xAF, 0x17 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x68, 0x44, 0x9B, 0x57, 0x49, 0x44, 0xF5, 0x98 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xD9, 0x1B, 0x7D, 0x2C, 0xB4, 0x5F, 0x8A, 0x5C ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x04, 0xC0, 0x3B, 0x9A, 0x78, 0x6A, 0x29, 0x39 ), + MBEDTLS_BYTES_TO_T_UINT_2( 0x18, 0x01 ), }; static const mbedtls_mpi_uint secp521r1_n[] = { - BYTES_TO_T_UINT_8( 0x09, 0x64, 0x38, 0x91, 0x1E, 0xB7, 0x6F, 0xBB ), - BYTES_TO_T_UINT_8( 0xAE, 0x47, 0x9C, 0x89, 0xB8, 0xC9, 0xB5, 0x3B ), - BYTES_TO_T_UINT_8( 0xD0, 0xA5, 0x09, 0xF7, 0x48, 0x01, 0xCC, 0x7F ), - BYTES_TO_T_UINT_8( 0x6B, 0x96, 0x2F, 0xBF, 0x83, 0x87, 0x86, 0x51 ), - BYTES_TO_T_UINT_8( 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_2( 0xFF, 0x01 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x09, 0x64, 0x38, 0x91, 0x1E, 0xB7, 0x6F, 0xBB ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xAE, 0x47, 0x9C, 0x89, 0xB8, 0xC9, 0xB5, 0x3B ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xD0, 0xA5, 0x09, 0xF7, 0x48, 0x01, 0xCC, 0x7F ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x6B, 0x96, 0x2F, 0xBF, 0x83, 0x87, 0x86, 0x51 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_2( 0xFF, 0x01 ), }; #endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */ #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) static const mbedtls_mpi_uint secp192k1_p[] = { - BYTES_TO_T_UINT_8( 0x37, 0xEE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x37, 0xEE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), }; static const mbedtls_mpi_uint secp192k1_a[] = { - BYTES_TO_T_UINT_2( 0x00, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_2( 0x00, 0x00 ), }; static const mbedtls_mpi_uint secp192k1_b[] = { - BYTES_TO_T_UINT_2( 0x03, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_2( 0x03, 0x00 ), }; static const mbedtls_mpi_uint secp192k1_gx[] = { - BYTES_TO_T_UINT_8( 0x7D, 0x6C, 0xE0, 0xEA, 0xB1, 0xD1, 0xA5, 0x1D ), - BYTES_TO_T_UINT_8( 0x34, 0xF4, 0xB7, 0x80, 0x02, 0x7D, 0xB0, 0x26 ), - BYTES_TO_T_UINT_8( 0xAE, 0xE9, 0x57, 0xC0, 0x0E, 0xF1, 0x4F, 0xDB ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x7D, 0x6C, 0xE0, 0xEA, 0xB1, 0xD1, 0xA5, 0x1D ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x34, 0xF4, 0xB7, 0x80, 0x02, 0x7D, 0xB0, 0x26 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xAE, 0xE9, 0x57, 0xC0, 0x0E, 0xF1, 0x4F, 0xDB ), }; static const mbedtls_mpi_uint secp192k1_gy[] = { - BYTES_TO_T_UINT_8( 0x9D, 0x2F, 0x5E, 0xD9, 0x88, 0xAA, 0x82, 0x40 ), - BYTES_TO_T_UINT_8( 0x34, 0x86, 0xBE, 0x15, 0xD0, 0x63, 0x41, 0x84 ), - BYTES_TO_T_UINT_8( 0xA7, 0x28, 0x56, 0x9C, 0x6D, 0x2F, 0x2F, 0x9B ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x9D, 0x2F, 0x5E, 0xD9, 0x88, 0xAA, 0x82, 0x40 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x34, 0x86, 0xBE, 0x15, 0xD0, 0x63, 0x41, 0x84 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xA7, 0x28, 0x56, 0x9C, 0x6D, 0x2F, 0x2F, 0x9B ), }; static const mbedtls_mpi_uint secp192k1_n[] = { - BYTES_TO_T_UINT_8( 0x8D, 0xFD, 0xDE, 0x74, 0x6A, 0x46, 0x69, 0x0F ), - BYTES_TO_T_UINT_8( 0x17, 0xFC, 0xF2, 0x26, 0xFE, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x8D, 0xFD, 0xDE, 0x74, 0x6A, 0x46, 0x69, 0x0F ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x17, 0xFC, 0xF2, 0x26, 0xFE, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), }; #endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */ #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) static const mbedtls_mpi_uint secp224k1_p[] = { - BYTES_TO_T_UINT_8( 0x6D, 0xE5, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_4( 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x6D, 0xE5, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_4( 0xFF, 0xFF, 0xFF, 0xFF ), }; static const mbedtls_mpi_uint secp224k1_a[] = { - BYTES_TO_T_UINT_2( 0x00, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_2( 0x00, 0x00 ), }; static const mbedtls_mpi_uint secp224k1_b[] = { - BYTES_TO_T_UINT_2( 0x05, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_2( 0x05, 0x00 ), }; static const mbedtls_mpi_uint secp224k1_gx[] = { - BYTES_TO_T_UINT_8( 0x5C, 0xA4, 0xB7, 0xB6, 0x0E, 0x65, 0x7E, 0x0F ), - BYTES_TO_T_UINT_8( 0xA9, 0x75, 0x70, 0xE4, 0xE9, 0x67, 0xA4, 0x69 ), - BYTES_TO_T_UINT_8( 0xA1, 0x28, 0xFC, 0x30, 0xDF, 0x99, 0xF0, 0x4D ), - BYTES_TO_T_UINT_4( 0x33, 0x5B, 0x45, 0xA1 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x5C, 0xA4, 0xB7, 0xB6, 0x0E, 0x65, 0x7E, 0x0F ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xA9, 0x75, 0x70, 0xE4, 0xE9, 0x67, 0xA4, 0x69 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xA1, 0x28, 0xFC, 0x30, 0xDF, 0x99, 0xF0, 0x4D ), + MBEDTLS_BYTES_TO_T_UINT_4( 0x33, 0x5B, 0x45, 0xA1 ), }; static const mbedtls_mpi_uint secp224k1_gy[] = { - BYTES_TO_T_UINT_8( 0xA5, 0x61, 0x6D, 0x55, 0xDB, 0x4B, 0xCA, 0xE2 ), - BYTES_TO_T_UINT_8( 0x59, 0xBD, 0xB0, 0xC0, 0xF7, 0x19, 0xE3, 0xF7 ), - BYTES_TO_T_UINT_8( 0xD6, 0xFB, 0xCA, 0x82, 0x42, 0x34, 0xBA, 0x7F ), - BYTES_TO_T_UINT_4( 0xED, 0x9F, 0x08, 0x7E ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xA5, 0x61, 0x6D, 0x55, 0xDB, 0x4B, 0xCA, 0xE2 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x59, 0xBD, 0xB0, 0xC0, 0xF7, 0x19, 0xE3, 0xF7 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xD6, 0xFB, 0xCA, 0x82, 0x42, 0x34, 0xBA, 0x7F ), + MBEDTLS_BYTES_TO_T_UINT_4( 0xED, 0x9F, 0x08, 0x7E ), }; static const mbedtls_mpi_uint secp224k1_n[] = { - BYTES_TO_T_UINT_8( 0xF7, 0xB1, 0x9F, 0x76, 0x71, 0xA9, 0xF0, 0xCA ), - BYTES_TO_T_UINT_8( 0x84, 0x61, 0xEC, 0xD2, 0xE8, 0xDC, 0x01, 0x00 ), - BYTES_TO_T_UINT_8( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), - BYTES_TO_T_UINT_8( 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xF7, 0xB1, 0x9F, 0x76, 0x71, 0xA9, 0xF0, 0xCA ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x84, 0x61, 0xEC, 0xD2, 0xE8, 0xDC, 0x01, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 ), }; #endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */ #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) static const mbedtls_mpi_uint secp256k1_p[] = { - BYTES_TO_T_UINT_8( 0x2F, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x2F, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), }; static const mbedtls_mpi_uint secp256k1_a[] = { - BYTES_TO_T_UINT_2( 0x00, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_2( 0x00, 0x00 ), }; static const mbedtls_mpi_uint secp256k1_b[] = { - BYTES_TO_T_UINT_2( 0x07, 0x00 ), + MBEDTLS_BYTES_TO_T_UINT_2( 0x07, 0x00 ), }; static const mbedtls_mpi_uint secp256k1_gx[] = { - BYTES_TO_T_UINT_8( 0x98, 0x17, 0xF8, 0x16, 0x5B, 0x81, 0xF2, 0x59 ), - BYTES_TO_T_UINT_8( 0xD9, 0x28, 0xCE, 0x2D, 0xDB, 0xFC, 0x9B, 0x02 ), - BYTES_TO_T_UINT_8( 0x07, 0x0B, 0x87, 0xCE, 0x95, 0x62, 0xA0, 0x55 ), - BYTES_TO_T_UINT_8( 0xAC, 0xBB, 0xDC, 0xF9, 0x7E, 0x66, 0xBE, 0x79 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x98, 0x17, 0xF8, 0x16, 0x5B, 0x81, 0xF2, 0x59 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xD9, 0x28, 0xCE, 0x2D, 0xDB, 0xFC, 0x9B, 0x02 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x07, 0x0B, 0x87, 0xCE, 0x95, 0x62, 0xA0, 0x55 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xAC, 0xBB, 0xDC, 0xF9, 0x7E, 0x66, 0xBE, 0x79 ), }; static const mbedtls_mpi_uint secp256k1_gy[] = { - BYTES_TO_T_UINT_8( 0xB8, 0xD4, 0x10, 0xFB, 0x8F, 0xD0, 0x47, 0x9C ), - BYTES_TO_T_UINT_8( 0x19, 0x54, 0x85, 0xA6, 0x48, 0xB4, 0x17, 0xFD ), - BYTES_TO_T_UINT_8( 0xA8, 0x08, 0x11, 0x0E, 0xFC, 0xFB, 0xA4, 0x5D ), - BYTES_TO_T_UINT_8( 0x65, 0xC4, 0xA3, 0x26, 0x77, 0xDA, 0x3A, 0x48 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xB8, 0xD4, 0x10, 0xFB, 0x8F, 0xD0, 0x47, 0x9C ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x19, 0x54, 0x85, 0xA6, 0x48, 0xB4, 0x17, 0xFD ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xA8, 0x08, 0x11, 0x0E, 0xFC, 0xFB, 0xA4, 0x5D ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x65, 0xC4, 0xA3, 0x26, 0x77, 0xDA, 0x3A, 0x48 ), }; static const mbedtls_mpi_uint secp256k1_n[] = { - BYTES_TO_T_UINT_8( 0x41, 0x41, 0x36, 0xD0, 0x8C, 0x5E, 0xD2, 0xBF ), - BYTES_TO_T_UINT_8( 0x3B, 0xA0, 0x48, 0xAF, 0xE6, 0xDC, 0xAE, 0xBA ), - BYTES_TO_T_UINT_8( 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), - BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x41, 0x41, 0x36, 0xD0, 0x8C, 0x5E, 0xD2, 0xBF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x3B, 0xA0, 0x48, 0xAF, 0xE6, 0xDC, 0xAE, 0xBA ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ), }; #endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */ @@ -399,40 +363,40 @@ static const mbedtls_mpi_uint secp256k1_n[] = { */ #if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) static const mbedtls_mpi_uint brainpoolP256r1_p[] = { - BYTES_TO_T_UINT_8( 0x77, 0x53, 0x6E, 0x1F, 0x1D, 0x48, 0x13, 0x20 ), - BYTES_TO_T_UINT_8( 0x28, 0x20, 0x26, 0xD5, 0x23, 0xF6, 0x3B, 0x6E ), - BYTES_TO_T_UINT_8( 0x72, 0x8D, 0x83, 0x9D, 0x90, 0x0A, 0x66, 0x3E ), - BYTES_TO_T_UINT_8( 0xBC, 0xA9, 0xEE, 0xA1, 0xDB, 0x57, 0xFB, 0xA9 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x77, 0x53, 0x6E, 0x1F, 0x1D, 0x48, 0x13, 0x20 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x28, 0x20, 0x26, 0xD5, 0x23, 0xF6, 0x3B, 0x6E ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x72, 0x8D, 0x83, 0x9D, 0x90, 0x0A, 0x66, 0x3E ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xBC, 0xA9, 0xEE, 0xA1, 0xDB, 0x57, 0xFB, 0xA9 ), }; static const mbedtls_mpi_uint brainpoolP256r1_a[] = { - BYTES_TO_T_UINT_8( 0xD9, 0xB5, 0x30, 0xF3, 0x44, 0x4B, 0x4A, 0xE9 ), - BYTES_TO_T_UINT_8( 0x6C, 0x5C, 0xDC, 0x26, 0xC1, 0x55, 0x80, 0xFB ), - BYTES_TO_T_UINT_8( 0xE7, 0xFF, 0x7A, 0x41, 0x30, 0x75, 0xF6, 0xEE ), - BYTES_TO_T_UINT_8( 0x57, 0x30, 0x2C, 0xFC, 0x75, 0x09, 0x5A, 0x7D ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xD9, 0xB5, 0x30, 0xF3, 0x44, 0x4B, 0x4A, 0xE9 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x6C, 0x5C, 0xDC, 0x26, 0xC1, 0x55, 0x80, 0xFB ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xE7, 0xFF, 0x7A, 0x41, 0x30, 0x75, 0xF6, 0xEE ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x57, 0x30, 0x2C, 0xFC, 0x75, 0x09, 0x5A, 0x7D ), }; static const mbedtls_mpi_uint brainpoolP256r1_b[] = { - BYTES_TO_T_UINT_8( 0xB6, 0x07, 0x8C, 0xFF, 0x18, 0xDC, 0xCC, 0x6B ), - BYTES_TO_T_UINT_8( 0xCE, 0xE1, 0xF7, 0x5C, 0x29, 0x16, 0x84, 0x95 ), - BYTES_TO_T_UINT_8( 0xBF, 0x7C, 0xD7, 0xBB, 0xD9, 0xB5, 0x30, 0xF3 ), - BYTES_TO_T_UINT_8( 0x44, 0x4B, 0x4A, 0xE9, 0x6C, 0x5C, 0xDC, 0x26 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xB6, 0x07, 0x8C, 0xFF, 0x18, 0xDC, 0xCC, 0x6B ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xCE, 0xE1, 0xF7, 0x5C, 0x29, 0x16, 0x84, 0x95 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xBF, 0x7C, 0xD7, 0xBB, 0xD9, 0xB5, 0x30, 0xF3 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x44, 0x4B, 0x4A, 0xE9, 0x6C, 0x5C, 0xDC, 0x26 ), }; static const mbedtls_mpi_uint brainpoolP256r1_gx[] = { - BYTES_TO_T_UINT_8( 0x62, 0x32, 0xCE, 0x9A, 0xBD, 0x53, 0x44, 0x3A ), - BYTES_TO_T_UINT_8( 0xC2, 0x23, 0xBD, 0xE3, 0xE1, 0x27, 0xDE, 0xB9 ), - BYTES_TO_T_UINT_8( 0xAF, 0xB7, 0x81, 0xFC, 0x2F, 0x48, 0x4B, 0x2C ), - BYTES_TO_T_UINT_8( 0xCB, 0x57, 0x7E, 0xCB, 0xB9, 0xAE, 0xD2, 0x8B ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x62, 0x32, 0xCE, 0x9A, 0xBD, 0x53, 0x44, 0x3A ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xC2, 0x23, 0xBD, 0xE3, 0xE1, 0x27, 0xDE, 0xB9 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xAF, 0xB7, 0x81, 0xFC, 0x2F, 0x48, 0x4B, 0x2C ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xCB, 0x57, 0x7E, 0xCB, 0xB9, 0xAE, 0xD2, 0x8B ), }; static const mbedtls_mpi_uint brainpoolP256r1_gy[] = { - BYTES_TO_T_UINT_8( 0x97, 0x69, 0x04, 0x2F, 0xC7, 0x54, 0x1D, 0x5C ), - BYTES_TO_T_UINT_8( 0x54, 0x8E, 0xED, 0x2D, 0x13, 0x45, 0x77, 0xC2 ), - BYTES_TO_T_UINT_8( 0xC9, 0x1D, 0x61, 0x14, 0x1A, 0x46, 0xF8, 0x97 ), - BYTES_TO_T_UINT_8( 0xFD, 0xC4, 0xDA, 0xC3, 0x35, 0xF8, 0x7E, 0x54 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x97, 0x69, 0x04, 0x2F, 0xC7, 0x54, 0x1D, 0x5C ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x54, 0x8E, 0xED, 0x2D, 0x13, 0x45, 0x77, 0xC2 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xC9, 0x1D, 0x61, 0x14, 0x1A, 0x46, 0xF8, 0x97 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFD, 0xC4, 0xDA, 0xC3, 0x35, 0xF8, 0x7E, 0x54 ), }; static const mbedtls_mpi_uint brainpoolP256r1_n[] = { - BYTES_TO_T_UINT_8( 0xA7, 0x56, 0x48, 0x97, 0x82, 0x0E, 0x1E, 0x90 ), - BYTES_TO_T_UINT_8( 0xF7, 0xA6, 0x61, 0xB5, 0xA3, 0x7A, 0x39, 0x8C ), - BYTES_TO_T_UINT_8( 0x71, 0x8D, 0x83, 0x9D, 0x90, 0x0A, 0x66, 0x3E ), - BYTES_TO_T_UINT_8( 0xBC, 0xA9, 0xEE, 0xA1, 0xDB, 0x57, 0xFB, 0xA9 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xA7, 0x56, 0x48, 0x97, 0x82, 0x0E, 0x1E, 0x90 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xF7, 0xA6, 0x61, 0xB5, 0xA3, 0x7A, 0x39, 0x8C ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x71, 0x8D, 0x83, 0x9D, 0x90, 0x0A, 0x66, 0x3E ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xBC, 0xA9, 0xEE, 0xA1, 0xDB, 0x57, 0xFB, 0xA9 ), }; #endif /* MBEDTLS_ECP_DP_BP256R1_ENABLED */ @@ -441,52 +405,52 @@ static const mbedtls_mpi_uint brainpoolP256r1_n[] = { */ #if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) static const mbedtls_mpi_uint brainpoolP384r1_p[] = { - BYTES_TO_T_UINT_8( 0x53, 0xEC, 0x07, 0x31, 0x13, 0x00, 0x47, 0x87 ), - BYTES_TO_T_UINT_8( 0x71, 0x1A, 0x1D, 0x90, 0x29, 0xA7, 0xD3, 0xAC ), - BYTES_TO_T_UINT_8( 0x23, 0x11, 0xB7, 0x7F, 0x19, 0xDA, 0xB1, 0x12 ), - BYTES_TO_T_UINT_8( 0xB4, 0x56, 0x54, 0xED, 0x09, 0x71, 0x2F, 0x15 ), - BYTES_TO_T_UINT_8( 0xDF, 0x41, 0xE6, 0x50, 0x7E, 0x6F, 0x5D, 0x0F ), - BYTES_TO_T_UINT_8( 0x28, 0x6D, 0x38, 0xA3, 0x82, 0x1E, 0xB9, 0x8C ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x53, 0xEC, 0x07, 0x31, 0x13, 0x00, 0x47, 0x87 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x71, 0x1A, 0x1D, 0x90, 0x29, 0xA7, 0xD3, 0xAC ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x23, 0x11, 0xB7, 0x7F, 0x19, 0xDA, 0xB1, 0x12 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xB4, 0x56, 0x54, 0xED, 0x09, 0x71, 0x2F, 0x15 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xDF, 0x41, 0xE6, 0x50, 0x7E, 0x6F, 0x5D, 0x0F ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x28, 0x6D, 0x38, 0xA3, 0x82, 0x1E, 0xB9, 0x8C ), }; static const mbedtls_mpi_uint brainpoolP384r1_a[] = { - BYTES_TO_T_UINT_8( 0x26, 0x28, 0xCE, 0x22, 0xDD, 0xC7, 0xA8, 0x04 ), - BYTES_TO_T_UINT_8( 0xEB, 0xD4, 0x3A, 0x50, 0x4A, 0x81, 0xA5, 0x8A ), - BYTES_TO_T_UINT_8( 0x0F, 0xF9, 0x91, 0xBA, 0xEF, 0x65, 0x91, 0x13 ), - BYTES_TO_T_UINT_8( 0x87, 0x27, 0xB2, 0x4F, 0x8E, 0xA2, 0xBE, 0xC2 ), - BYTES_TO_T_UINT_8( 0xA0, 0xAF, 0x05, 0xCE, 0x0A, 0x08, 0x72, 0x3C ), - BYTES_TO_T_UINT_8( 0x0C, 0x15, 0x8C, 0x3D, 0xC6, 0x82, 0xC3, 0x7B ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x26, 0x28, 0xCE, 0x22, 0xDD, 0xC7, 0xA8, 0x04 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xEB, 0xD4, 0x3A, 0x50, 0x4A, 0x81, 0xA5, 0x8A ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x0F, 0xF9, 0x91, 0xBA, 0xEF, 0x65, 0x91, 0x13 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x87, 0x27, 0xB2, 0x4F, 0x8E, 0xA2, 0xBE, 0xC2 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xA0, 0xAF, 0x05, 0xCE, 0x0A, 0x08, 0x72, 0x3C ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x0C, 0x15, 0x8C, 0x3D, 0xC6, 0x82, 0xC3, 0x7B ), }; static const mbedtls_mpi_uint brainpoolP384r1_b[] = { - BYTES_TO_T_UINT_8( 0x11, 0x4C, 0x50, 0xFA, 0x96, 0x86, 0xB7, 0x3A ), - BYTES_TO_T_UINT_8( 0x94, 0xC9, 0xDB, 0x95, 0x02, 0x39, 0xB4, 0x7C ), - BYTES_TO_T_UINT_8( 0xD5, 0x62, 0xEB, 0x3E, 0xA5, 0x0E, 0x88, 0x2E ), - BYTES_TO_T_UINT_8( 0xA6, 0xD2, 0xDC, 0x07, 0xE1, 0x7D, 0xB7, 0x2F ), - BYTES_TO_T_UINT_8( 0x7C, 0x44, 0xF0, 0x16, 0x54, 0xB5, 0x39, 0x8B ), - BYTES_TO_T_UINT_8( 0x26, 0x28, 0xCE, 0x22, 0xDD, 0xC7, 0xA8, 0x04 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x11, 0x4C, 0x50, 0xFA, 0x96, 0x86, 0xB7, 0x3A ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x94, 0xC9, 0xDB, 0x95, 0x02, 0x39, 0xB4, 0x7C ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xD5, 0x62, 0xEB, 0x3E, 0xA5, 0x0E, 0x88, 0x2E ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xA6, 0xD2, 0xDC, 0x07, 0xE1, 0x7D, 0xB7, 0x2F ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x7C, 0x44, 0xF0, 0x16, 0x54, 0xB5, 0x39, 0x8B ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x26, 0x28, 0xCE, 0x22, 0xDD, 0xC7, 0xA8, 0x04 ), }; static const mbedtls_mpi_uint brainpoolP384r1_gx[] = { - BYTES_TO_T_UINT_8( 0x1E, 0xAF, 0xD4, 0x47, 0xE2, 0xB2, 0x87, 0xEF ), - BYTES_TO_T_UINT_8( 0xAA, 0x46, 0xD6, 0x36, 0x34, 0xE0, 0x26, 0xE8 ), - BYTES_TO_T_UINT_8( 0xE8, 0x10, 0xBD, 0x0C, 0xFE, 0xCA, 0x7F, 0xDB ), - BYTES_TO_T_UINT_8( 0xE3, 0x4F, 0xF1, 0x7E, 0xE7, 0xA3, 0x47, 0x88 ), - BYTES_TO_T_UINT_8( 0x6B, 0x3F, 0xC1, 0xB7, 0x81, 0x3A, 0xA6, 0xA2 ), - BYTES_TO_T_UINT_8( 0xFF, 0x45, 0xCF, 0x68, 0xF0, 0x64, 0x1C, 0x1D ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x1E, 0xAF, 0xD4, 0x47, 0xE2, 0xB2, 0x87, 0xEF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xAA, 0x46, 0xD6, 0x36, 0x34, 0xE0, 0x26, 0xE8 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xE8, 0x10, 0xBD, 0x0C, 0xFE, 0xCA, 0x7F, 0xDB ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xE3, 0x4F, 0xF1, 0x7E, 0xE7, 0xA3, 0x47, 0x88 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x6B, 0x3F, 0xC1, 0xB7, 0x81, 0x3A, 0xA6, 0xA2 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFF, 0x45, 0xCF, 0x68, 0xF0, 0x64, 0x1C, 0x1D ), }; static const mbedtls_mpi_uint brainpoolP384r1_gy[] = { - BYTES_TO_T_UINT_8( 0x15, 0x53, 0x3C, 0x26, 0x41, 0x03, 0x82, 0x42 ), - BYTES_TO_T_UINT_8( 0x11, 0x81, 0x91, 0x77, 0x21, 0x46, 0x46, 0x0E ), - BYTES_TO_T_UINT_8( 0x28, 0x29, 0x91, 0xF9, 0x4F, 0x05, 0x9C, 0xE1 ), - BYTES_TO_T_UINT_8( 0x64, 0x58, 0xEC, 0xFE, 0x29, 0x0B, 0xB7, 0x62 ), - BYTES_TO_T_UINT_8( 0x52, 0xD5, 0xCF, 0x95, 0x8E, 0xEB, 0xB1, 0x5C ), - BYTES_TO_T_UINT_8( 0xA4, 0xC2, 0xF9, 0x20, 0x75, 0x1D, 0xBE, 0x8A ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x15, 0x53, 0x3C, 0x26, 0x41, 0x03, 0x82, 0x42 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x11, 0x81, 0x91, 0x77, 0x21, 0x46, 0x46, 0x0E ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x28, 0x29, 0x91, 0xF9, 0x4F, 0x05, 0x9C, 0xE1 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x64, 0x58, 0xEC, 0xFE, 0x29, 0x0B, 0xB7, 0x62 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x52, 0xD5, 0xCF, 0x95, 0x8E, 0xEB, 0xB1, 0x5C ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xA4, 0xC2, 0xF9, 0x20, 0x75, 0x1D, 0xBE, 0x8A ), }; static const mbedtls_mpi_uint brainpoolP384r1_n[] = { - BYTES_TO_T_UINT_8( 0x65, 0x65, 0x04, 0xE9, 0x02, 0x32, 0x88, 0x3B ), - BYTES_TO_T_UINT_8( 0x10, 0xC3, 0x7F, 0x6B, 0xAF, 0xB6, 0x3A, 0xCF ), - BYTES_TO_T_UINT_8( 0xA7, 0x25, 0x04, 0xAC, 0x6C, 0x6E, 0x16, 0x1F ), - BYTES_TO_T_UINT_8( 0xB3, 0x56, 0x54, 0xED, 0x09, 0x71, 0x2F, 0x15 ), - BYTES_TO_T_UINT_8( 0xDF, 0x41, 0xE6, 0x50, 0x7E, 0x6F, 0x5D, 0x0F ), - BYTES_TO_T_UINT_8( 0x28, 0x6D, 0x38, 0xA3, 0x82, 0x1E, 0xB9, 0x8C ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x65, 0x65, 0x04, 0xE9, 0x02, 0x32, 0x88, 0x3B ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x10, 0xC3, 0x7F, 0x6B, 0xAF, 0xB6, 0x3A, 0xCF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xA7, 0x25, 0x04, 0xAC, 0x6C, 0x6E, 0x16, 0x1F ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xB3, 0x56, 0x54, 0xED, 0x09, 0x71, 0x2F, 0x15 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xDF, 0x41, 0xE6, 0x50, 0x7E, 0x6F, 0x5D, 0x0F ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x28, 0x6D, 0x38, 0xA3, 0x82, 0x1E, 0xB9, 0x8C ), }; #endif /* MBEDTLS_ECP_DP_BP384R1_ENABLED */ @@ -495,67 +459,83 @@ static const mbedtls_mpi_uint brainpoolP384r1_n[] = { */ #if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) static const mbedtls_mpi_uint brainpoolP512r1_p[] = { - BYTES_TO_T_UINT_8( 0xF3, 0x48, 0x3A, 0x58, 0x56, 0x60, 0xAA, 0x28 ), - BYTES_TO_T_UINT_8( 0x85, 0xC6, 0x82, 0x2D, 0x2F, 0xFF, 0x81, 0x28 ), - BYTES_TO_T_UINT_8( 0xE6, 0x80, 0xA3, 0xE6, 0x2A, 0xA1, 0xCD, 0xAE ), - BYTES_TO_T_UINT_8( 0x42, 0x68, 0xC6, 0x9B, 0x00, 0x9B, 0x4D, 0x7D ), - BYTES_TO_T_UINT_8( 0x71, 0x08, 0x33, 0x70, 0xCA, 0x9C, 0x63, 0xD6 ), - BYTES_TO_T_UINT_8( 0x0E, 0xD2, 0xC9, 0xB3, 0xB3, 0x8D, 0x30, 0xCB ), - BYTES_TO_T_UINT_8( 0x07, 0xFC, 0xC9, 0x33, 0xAE, 0xE6, 0xD4, 0x3F ), - BYTES_TO_T_UINT_8( 0x8B, 0xC4, 0xE9, 0xDB, 0xB8, 0x9D, 0xDD, 0xAA ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xF3, 0x48, 0x3A, 0x58, 0x56, 0x60, 0xAA, 0x28 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x85, 0xC6, 0x82, 0x2D, 0x2F, 0xFF, 0x81, 0x28 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xE6, 0x80, 0xA3, 0xE6, 0x2A, 0xA1, 0xCD, 0xAE ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x42, 0x68, 0xC6, 0x9B, 0x00, 0x9B, 0x4D, 0x7D ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x71, 0x08, 0x33, 0x70, 0xCA, 0x9C, 0x63, 0xD6 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x0E, 0xD2, 0xC9, 0xB3, 0xB3, 0x8D, 0x30, 0xCB ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x07, 0xFC, 0xC9, 0x33, 0xAE, 0xE6, 0xD4, 0x3F ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x8B, 0xC4, 0xE9, 0xDB, 0xB8, 0x9D, 0xDD, 0xAA ), }; static const mbedtls_mpi_uint brainpoolP512r1_a[] = { - BYTES_TO_T_UINT_8( 0xCA, 0x94, 0xFC, 0x77, 0x4D, 0xAC, 0xC1, 0xE7 ), - BYTES_TO_T_UINT_8( 0xB9, 0xC7, 0xF2, 0x2B, 0xA7, 0x17, 0x11, 0x7F ), - BYTES_TO_T_UINT_8( 0xB5, 0xC8, 0x9A, 0x8B, 0xC9, 0xF1, 0x2E, 0x0A ), - BYTES_TO_T_UINT_8( 0xA1, 0x3A, 0x25, 0xA8, 0x5A, 0x5D, 0xED, 0x2D ), - BYTES_TO_T_UINT_8( 0xBC, 0x63, 0x98, 0xEA, 0xCA, 0x41, 0x34, 0xA8 ), - BYTES_TO_T_UINT_8( 0x10, 0x16, 0xF9, 0x3D, 0x8D, 0xDD, 0xCB, 0x94 ), - BYTES_TO_T_UINT_8( 0xC5, 0x4C, 0x23, 0xAC, 0x45, 0x71, 0x32, 0xE2 ), - BYTES_TO_T_UINT_8( 0x89, 0x3B, 0x60, 0x8B, 0x31, 0xA3, 0x30, 0x78 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xCA, 0x94, 0xFC, 0x77, 0x4D, 0xAC, 0xC1, 0xE7 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xB9, 0xC7, 0xF2, 0x2B, 0xA7, 0x17, 0x11, 0x7F ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xB5, 0xC8, 0x9A, 0x8B, 0xC9, 0xF1, 0x2E, 0x0A ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xA1, 0x3A, 0x25, 0xA8, 0x5A, 0x5D, 0xED, 0x2D ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xBC, 0x63, 0x98, 0xEA, 0xCA, 0x41, 0x34, 0xA8 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x10, 0x16, 0xF9, 0x3D, 0x8D, 0xDD, 0xCB, 0x94 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xC5, 0x4C, 0x23, 0xAC, 0x45, 0x71, 0x32, 0xE2 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x89, 0x3B, 0x60, 0x8B, 0x31, 0xA3, 0x30, 0x78 ), }; static const mbedtls_mpi_uint brainpoolP512r1_b[] = { - BYTES_TO_T_UINT_8( 0x23, 0xF7, 0x16, 0x80, 0x63, 0xBD, 0x09, 0x28 ), - BYTES_TO_T_UINT_8( 0xDD, 0xE5, 0xBA, 0x5E, 0xB7, 0x50, 0x40, 0x98 ), - BYTES_TO_T_UINT_8( 0x67, 0x3E, 0x08, 0xDC, 0xCA, 0x94, 0xFC, 0x77 ), - BYTES_TO_T_UINT_8( 0x4D, 0xAC, 0xC1, 0xE7, 0xB9, 0xC7, 0xF2, 0x2B ), - BYTES_TO_T_UINT_8( 0xA7, 0x17, 0x11, 0x7F, 0xB5, 0xC8, 0x9A, 0x8B ), - BYTES_TO_T_UINT_8( 0xC9, 0xF1, 0x2E, 0x0A, 0xA1, 0x3A, 0x25, 0xA8 ), - BYTES_TO_T_UINT_8( 0x5A, 0x5D, 0xED, 0x2D, 0xBC, 0x63, 0x98, 0xEA ), - BYTES_TO_T_UINT_8( 0xCA, 0x41, 0x34, 0xA8, 0x10, 0x16, 0xF9, 0x3D ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x23, 0xF7, 0x16, 0x80, 0x63, 0xBD, 0x09, 0x28 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xDD, 0xE5, 0xBA, 0x5E, 0xB7, 0x50, 0x40, 0x98 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x67, 0x3E, 0x08, 0xDC, 0xCA, 0x94, 0xFC, 0x77 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x4D, 0xAC, 0xC1, 0xE7, 0xB9, 0xC7, 0xF2, 0x2B ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xA7, 0x17, 0x11, 0x7F, 0xB5, 0xC8, 0x9A, 0x8B ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xC9, 0xF1, 0x2E, 0x0A, 0xA1, 0x3A, 0x25, 0xA8 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x5A, 0x5D, 0xED, 0x2D, 0xBC, 0x63, 0x98, 0xEA ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xCA, 0x41, 0x34, 0xA8, 0x10, 0x16, 0xF9, 0x3D ), }; static const mbedtls_mpi_uint brainpoolP512r1_gx[] = { - BYTES_TO_T_UINT_8( 0x22, 0xF8, 0xB9, 0xBC, 0x09, 0x22, 0x35, 0x8B ), - BYTES_TO_T_UINT_8( 0x68, 0x5E, 0x6A, 0x40, 0x47, 0x50, 0x6D, 0x7C ), - BYTES_TO_T_UINT_8( 0x5F, 0x7D, 0xB9, 0x93, 0x7B, 0x68, 0xD1, 0x50 ), - BYTES_TO_T_UINT_8( 0x8D, 0xD4, 0xD0, 0xE2, 0x78, 0x1F, 0x3B, 0xFF ), - BYTES_TO_T_UINT_8( 0x8E, 0x09, 0xD0, 0xF4, 0xEE, 0x62, 0x3B, 0xB4 ), - BYTES_TO_T_UINT_8( 0xC1, 0x16, 0xD9, 0xB5, 0x70, 0x9F, 0xED, 0x85 ), - BYTES_TO_T_UINT_8( 0x93, 0x6A, 0x4C, 0x9C, 0x2E, 0x32, 0x21, 0x5A ), - BYTES_TO_T_UINT_8( 0x64, 0xD9, 0x2E, 0xD8, 0xBD, 0xE4, 0xAE, 0x81 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x22, 0xF8, 0xB9, 0xBC, 0x09, 0x22, 0x35, 0x8B ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x68, 0x5E, 0x6A, 0x40, 0x47, 0x50, 0x6D, 0x7C ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x5F, 0x7D, 0xB9, 0x93, 0x7B, 0x68, 0xD1, 0x50 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x8D, 0xD4, 0xD0, 0xE2, 0x78, 0x1F, 0x3B, 0xFF ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x8E, 0x09, 0xD0, 0xF4, 0xEE, 0x62, 0x3B, 0xB4 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xC1, 0x16, 0xD9, 0xB5, 0x70, 0x9F, 0xED, 0x85 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x93, 0x6A, 0x4C, 0x9C, 0x2E, 0x32, 0x21, 0x5A ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x64, 0xD9, 0x2E, 0xD8, 0xBD, 0xE4, 0xAE, 0x81 ), }; static const mbedtls_mpi_uint brainpoolP512r1_gy[] = { - BYTES_TO_T_UINT_8( 0x92, 0x08, 0xD8, 0x3A, 0x0F, 0x1E, 0xCD, 0x78 ), - BYTES_TO_T_UINT_8( 0x06, 0x54, 0xF0, 0xA8, 0x2F, 0x2B, 0xCA, 0xD1 ), - BYTES_TO_T_UINT_8( 0xAE, 0x63, 0x27, 0x8A, 0xD8, 0x4B, 0xCA, 0x5B ), - BYTES_TO_T_UINT_8( 0x5E, 0x48, 0x5F, 0x4A, 0x49, 0xDE, 0xDC, 0xB2 ), - BYTES_TO_T_UINT_8( 0x11, 0x81, 0x1F, 0x88, 0x5B, 0xC5, 0x00, 0xA0 ), - BYTES_TO_T_UINT_8( 0x1A, 0x7B, 0xA5, 0x24, 0x00, 0xF7, 0x09, 0xF2 ), - BYTES_TO_T_UINT_8( 0xFD, 0x22, 0x78, 0xCF, 0xA9, 0xBF, 0xEA, 0xC0 ), - BYTES_TO_T_UINT_8( 0xEC, 0x32, 0x63, 0x56, 0x5D, 0x38, 0xDE, 0x7D ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x92, 0x08, 0xD8, 0x3A, 0x0F, 0x1E, 0xCD, 0x78 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x06, 0x54, 0xF0, 0xA8, 0x2F, 0x2B, 0xCA, 0xD1 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xAE, 0x63, 0x27, 0x8A, 0xD8, 0x4B, 0xCA, 0x5B ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x5E, 0x48, 0x5F, 0x4A, 0x49, 0xDE, 0xDC, 0xB2 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x11, 0x81, 0x1F, 0x88, 0x5B, 0xC5, 0x00, 0xA0 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x1A, 0x7B, 0xA5, 0x24, 0x00, 0xF7, 0x09, 0xF2 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xFD, 0x22, 0x78, 0xCF, 0xA9, 0xBF, 0xEA, 0xC0 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xEC, 0x32, 0x63, 0x56, 0x5D, 0x38, 0xDE, 0x7D ), }; static const mbedtls_mpi_uint brainpoolP512r1_n[] = { - BYTES_TO_T_UINT_8( 0x69, 0x00, 0xA9, 0x9C, 0x82, 0x96, 0x87, 0xB5 ), - BYTES_TO_T_UINT_8( 0xDD, 0xDA, 0x5D, 0x08, 0x81, 0xD3, 0xB1, 0x1D ), - BYTES_TO_T_UINT_8( 0x47, 0x10, 0xAC, 0x7F, 0x19, 0x61, 0x86, 0x41 ), - BYTES_TO_T_UINT_8( 0x19, 0x26, 0xA9, 0x4C, 0x41, 0x5C, 0x3E, 0x55 ), - BYTES_TO_T_UINT_8( 0x70, 0x08, 0x33, 0x70, 0xCA, 0x9C, 0x63, 0xD6 ), - BYTES_TO_T_UINT_8( 0x0E, 0xD2, 0xC9, 0xB3, 0xB3, 0x8D, 0x30, 0xCB ), - BYTES_TO_T_UINT_8( 0x07, 0xFC, 0xC9, 0x33, 0xAE, 0xE6, 0xD4, 0x3F ), - BYTES_TO_T_UINT_8( 0x8B, 0xC4, 0xE9, 0xDB, 0xB8, 0x9D, 0xDD, 0xAA ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x69, 0x00, 0xA9, 0x9C, 0x82, 0x96, 0x87, 0xB5 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0xDD, 0xDA, 0x5D, 0x08, 0x81, 0xD3, 0xB1, 0x1D ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x47, 0x10, 0xAC, 0x7F, 0x19, 0x61, 0x86, 0x41 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x19, 0x26, 0xA9, 0x4C, 0x41, 0x5C, 0x3E, 0x55 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x70, 0x08, 0x33, 0x70, 0xCA, 0x9C, 0x63, 0xD6 ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x0E, 0xD2, 0xC9, 0xB3, 0xB3, 0x8D, 0x30, 0xCB ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x07, 0xFC, 0xC9, 0x33, 0xAE, 0xE6, 0xD4, 0x3F ), + MBEDTLS_BYTES_TO_T_UINT_8( 0x8B, 0xC4, 0xE9, 0xDB, 0xB8, 0x9D, 0xDD, 0xAA ), }; #endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) +/* For these curves, we build the group parameters dynamically. */ +#define ECP_LOAD_GROUP +#endif + +#if defined(ECP_LOAD_GROUP) /* * Create an MPI from embedded constants * (assumes len is an exact multiple of sizeof mbedtls_mpi_uint) @@ -606,6 +586,7 @@ static int ecp_group_load( mbedtls_ecp_group *grp, return( 0 ); } +#endif /* ECP_LOAD_GROUP */ #if defined(MBEDTLS_ECP_NIST_OPTIM) /* Forward declarations */ @@ -647,6 +628,7 @@ static int ecp_mod_p224k1( mbedtls_mpi * ); static int ecp_mod_p256k1( mbedtls_mpi * ); #endif +#if defined(ECP_LOAD_GROUP) #define LOAD_GROUP_A( G ) ecp_group_load( grp, \ G ## _p, sizeof( G ## _p ), \ G ## _a, sizeof( G ## _a ), \ @@ -662,17 +644,25 @@ static int ecp_mod_p256k1( mbedtls_mpi * ); G ## _gx, sizeof( G ## _gx ), \ G ## _gy, sizeof( G ## _gy ), \ G ## _n, sizeof( G ## _n ) ) +#endif /* ECP_LOAD_GROUP */ #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) +/* Constants used by ecp_use_curve25519() */ +static const mbedtls_mpi_sint curve25519_a24 = 0x01DB42; +static const unsigned char curve25519_part_of_n[] = { + 0x14, 0xDE, 0xF9, 0xDE, 0xA2, 0xF7, 0x9C, 0xD6, + 0x58, 0x12, 0x63, 0x1A, 0x5C, 0xF5, 0xD3, 0xED, +}; + /* * Specialized function for creating the Curve25519 group */ static int ecp_use_curve25519( mbedtls_ecp_group *grp ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; /* Actually ( A + 2 ) / 4 */ - MBEDTLS_MPI_CHK( mbedtls_mpi_read_string( &grp->A, 16, "01DB42" ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &grp->A, curve25519_a24 ) ); /* P = 2^255 - 19 */ MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &grp->P, 1 ) ); @@ -681,8 +671,8 @@ static int ecp_use_curve25519( mbedtls_ecp_group *grp ) grp->pbits = mbedtls_mpi_bitlen( &grp->P ); /* N = 2^252 + 27742317777372353535851937790883648493 */ - MBEDTLS_MPI_CHK( mbedtls_mpi_read_string( &grp->N, 16, - "14DEF9DEA2F79CD65812631A5CF5D3ED" ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &grp->N, + curve25519_part_of_n, sizeof( curve25519_part_of_n ) ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( &grp->N, 252, 1 ) ); /* Y intentionally not set, since we use x/z coordinates. @@ -703,18 +693,27 @@ static int ecp_use_curve25519( mbedtls_ecp_group *grp ) #endif /* MBEDTLS_ECP_DP_CURVE25519_ENABLED */ #if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED) +/* Constants used by ecp_use_curve448() */ +static const mbedtls_mpi_sint curve448_a24 = 0x98AA; +static const unsigned char curve448_part_of_n[] = { + 0x83, 0x35, 0xDC, 0x16, 0x3B, 0xB1, 0x24, + 0xB6, 0x51, 0x29, 0xC9, 0x6F, 0xDE, 0x93, + 0x3D, 0x8D, 0x72, 0x3A, 0x70, 0xAA, 0xDC, + 0x87, 0x3D, 0x6D, 0x54, 0xA7, 0xBB, 0x0D, +}; + /* * Specialized function for creating the Curve448 group */ static int ecp_use_curve448( mbedtls_ecp_group *grp ) { mbedtls_mpi Ns; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_mpi_init( &Ns ); /* Actually ( A + 2 ) / 4 */ - MBEDTLS_MPI_CHK( mbedtls_mpi_read_string( &grp->A, 16, "98AA" ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &grp->A, curve448_a24 ) ); /* P = 2^448 - 2^224 - 1 */ MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &grp->P, 1 ) ); @@ -732,8 +731,8 @@ static int ecp_use_curve448( mbedtls_ecp_group *grp ) /* N = 2^446 - 13818066809895115352007386748515426880336692474882178609894547503885 */ MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( &grp->N, 446, 1 ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_read_string( &Ns, 16, - "8335DC163BB124B65129C96FDE933D8D723A70AADC873D6D54A7BB0D" ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &Ns, + curve448_part_of_n, sizeof( curve448_part_of_n ) ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &grp->N, &grp->N, &Ns ) ); /* Actually, the required msb for private keys */ @@ -836,7 +835,7 @@ int mbedtls_ecp_group_load( mbedtls_ecp_group *grp, mbedtls_ecp_group_id id ) #endif /* MBEDTLS_ECP_DP_CURVE448_ENABLED */ default: - mbedtls_ecp_group_free( grp ); + grp->id = MBEDTLS_ECP_DP_NONE; return( MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE ); } } @@ -890,7 +889,7 @@ static inline void carry64( mbedtls_mpi_uint *dst, mbedtls_mpi_uint *carry ) } #define WIDTH 8 / sizeof( mbedtls_mpi_uint ) -#define A( i ) N->p + i * WIDTH +#define A( i ) N->p + (i) * WIDTH #define ADD( i ) add64( p, A( i ), &c ) #define NEXT p += WIDTH; carry64( p, &c ) #define LAST p += WIDTH; *p = c; while( ++p < end ) *p = 0 @@ -900,7 +899,7 @@ static inline void carry64( mbedtls_mpi_uint *dst, mbedtls_mpi_uint *carry ) */ static int ecp_mod_p192( mbedtls_mpi *N ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_mpi_uint c = 0; mbedtls_mpi_uint *p, *end; @@ -955,7 +954,8 @@ static int ecp_mod_p192( mbedtls_mpi *N ) #else /* 64-bit */ #define MAX32 N->n * 2 -#define A( j ) j % 2 ? (uint32_t)( N->p[j/2] >> 32 ) : (uint32_t)( N->p[j/2] ) +#define A( j ) (j) % 2 ? (uint32_t)( N->p[(j)/2] >> 32 ) : \ + (uint32_t)( N->p[(j)/2] ) #define STORE32 \ if( i % 2 ) { \ N->p[i/2] &= 0x00000000FFFFFFFF; \ @@ -985,24 +985,20 @@ static inline void sub32( uint32_t *dst, uint32_t src, signed char *carry ) #define ADD( j ) add32( &cur, A( j ), &c ); #define SUB( j ) sub32( &cur, A( j ), &c ); +#define ciL (sizeof(mbedtls_mpi_uint)) /* chars in limb */ +#define biL (ciL << 3) /* bits in limb */ + /* * Helpers for the main 'loop' - * (see fix_negative for the motivation of C) */ -#define INIT( b ) \ - int ret; \ - signed char c = 0, cc; \ - uint32_t cur; \ - size_t i = 0, bits = b; \ - mbedtls_mpi C; \ - mbedtls_mpi_uint Cp[ b / 8 / sizeof( mbedtls_mpi_uint) + 1 ]; \ - \ - C.s = 1; \ - C.n = b / 8 / sizeof( mbedtls_mpi_uint) + 1; \ - C.p = Cp; \ - memset( Cp, 0, C.n * sizeof( mbedtls_mpi_uint ) ); \ - \ - MBEDTLS_MPI_CHK( mbedtls_mpi_grow( N, b * 2 / 8 / sizeof( mbedtls_mpi_uint ) ) ); \ +#define INIT( b ) \ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; \ + signed char c = 0, cc; \ + uint32_t cur; \ + size_t i = 0, bits = (b); \ + /* N is the size of the product of two b-bit numbers, plus one */ \ + /* limb for fix_negative */ \ + MBEDTLS_MPI_CHK( mbedtls_mpi_grow( N, ( b ) * 2 / biL + 1 ) ); \ LOAD32; #define NEXT \ @@ -1017,33 +1013,41 @@ static inline void sub32( uint32_t *dst, uint32_t src, signed char *carry ) STORE32; i++; \ cur = c > 0 ? c : 0; STORE32; \ cur = 0; while( ++i < MAX32 ) { STORE32; } \ - if( c < 0 ) fix_negative( N, c, &C, bits ); + if( c < 0 ) mbedtls_ecp_fix_negative( N, c, bits ); /* * If the result is negative, we get it in the form - * c * 2^(bits + 32) + N, with c negative and N positive shorter than 'bits' + * c * 2^bits + N, with c negative and N positive shorter than 'bits' */ -static inline int fix_negative( mbedtls_mpi *N, signed char c, mbedtls_mpi *C, size_t bits ) +MBEDTLS_STATIC_TESTABLE +void mbedtls_ecp_fix_negative( mbedtls_mpi *N, signed char c, size_t bits ) { - int ret; - - /* C = - c * 2^(bits + 32) */ -#if !defined(MBEDTLS_HAVE_INT64) - ((void) bits); -#else - if( bits == 224 ) - C->p[ C->n - 1 ] = ((mbedtls_mpi_uint) -c) << 32; - else -#endif - C->p[ C->n - 1 ] = (mbedtls_mpi_uint) -c; + size_t i; - /* N = - ( C - N ) */ - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_abs( N, C, N ) ); + /* Set N := 2^bits - 1 - N. We know that 0 <= N < 2^bits, so + * set the absolute value to 0xfff...fff - N. There is no carry + * since we're subtracting from all-bits-one. */ + for( i = 0; i <= bits / 8 / sizeof( mbedtls_mpi_uint ); i++ ) + { + N->p[i] = ~(mbedtls_mpi_uint)0 - N->p[i]; + } + /* Add 1, taking care of the carry. */ + i = 0; + do + ++N->p[i]; + while( N->p[i++] == 0 && i <= bits / 8 / sizeof( mbedtls_mpi_uint ) ); + /* Invert the sign. + * Now N = N0 - 2^bits where N0 is the initial value of N. */ N->s = -1; -cleanup: - - return( ret ); + /* Add |c| * 2^bits to the absolute value. Since c and N are + * negative, this adds c * 2^bits. */ + mbedtls_mpi_uint msw = (mbedtls_mpi_uint) -c; +#if defined(MBEDTLS_HAVE_INT64) + if( bits == 224 ) + msw <<= 32; +#endif + N->p[bits / 8 / sizeof( mbedtls_mpi_uint)] += msw; } #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) @@ -1183,7 +1187,7 @@ static int ecp_mod_p384( mbedtls_mpi *N ) */ static int ecp_mod_p521( mbedtls_mpi *N ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i; mbedtls_mpi M; mbedtls_mpi_uint Mp[P521_WIDTH + 1]; @@ -1232,7 +1236,7 @@ static int ecp_mod_p521( mbedtls_mpi *N ) */ static int ecp_mod_p255( mbedtls_mpi *N ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i; mbedtls_mpi M; mbedtls_mpi_uint Mp[P255_WIDTH + 2]; @@ -1289,7 +1293,7 @@ static int ecp_mod_p255( mbedtls_mpi *N ) */ static int ecp_mod_p448( mbedtls_mpi *N ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i; mbedtls_mpi M, Q; mbedtls_mpi_uint Mp[P448_WIDTH + 1], Qp[P448_WIDTH]; @@ -1351,7 +1355,7 @@ static int ecp_mod_p448( mbedtls_mpi *N ) static inline int ecp_mod_koblitz( mbedtls_mpi *N, mbedtls_mpi_uint *Rp, size_t p_limbs, size_t adjust, size_t shift, mbedtls_mpi_uint mask ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i; mbedtls_mpi M, R; mbedtls_mpi_uint Mp[P_KOBLITZ_MAX + P_KOBLITZ_R + 1]; @@ -1425,9 +1429,11 @@ static inline int ecp_mod_koblitz( mbedtls_mpi *N, mbedtls_mpi_uint *Rp, size_t static int ecp_mod_p192k1( mbedtls_mpi *N ) { static mbedtls_mpi_uint Rp[] = { - BYTES_TO_T_UINT_8( 0xC9, 0x11, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 ) }; + MBEDTLS_BYTES_TO_T_UINT_8( 0xC9, 0x11, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00 ) }; - return( ecp_mod_koblitz( N, Rp, 192 / 8 / sizeof( mbedtls_mpi_uint ), 0, 0, 0 ) ); + return( ecp_mod_koblitz( N, Rp, 192 / 8 / sizeof( mbedtls_mpi_uint ), 0, 0, + 0 ) ); } #endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */ @@ -1439,12 +1445,14 @@ static int ecp_mod_p192k1( mbedtls_mpi *N ) static int ecp_mod_p224k1( mbedtls_mpi *N ) { static mbedtls_mpi_uint Rp[] = { - BYTES_TO_T_UINT_8( 0x93, 0x1A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 ) }; + MBEDTLS_BYTES_TO_T_UINT_8( 0x93, 0x1A, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00 ) }; #if defined(MBEDTLS_HAVE_INT64) return( ecp_mod_koblitz( N, Rp, 4, 1, 32, 0xFFFFFFFF ) ); #else - return( ecp_mod_koblitz( N, Rp, 224 / 8 / sizeof( mbedtls_mpi_uint ), 0, 0, 0 ) ); + return( ecp_mod_koblitz( N, Rp, 224 / 8 / sizeof( mbedtls_mpi_uint ), 0, 0, + 0 ) ); #endif } @@ -1458,8 +1466,10 @@ static int ecp_mod_p224k1( mbedtls_mpi *N ) static int ecp_mod_p256k1( mbedtls_mpi *N ) { static mbedtls_mpi_uint Rp[] = { - BYTES_TO_T_UINT_8( 0xD1, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 ) }; - return( ecp_mod_koblitz( N, Rp, 256 / 8 / sizeof( mbedtls_mpi_uint ), 0, 0, 0 ) ); + MBEDTLS_BYTES_TO_T_UINT_8( 0xD1, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00 ) }; + return( ecp_mod_koblitz( N, Rp, 256 / 8 / sizeof( mbedtls_mpi_uint ), 0, 0, + 0 ) ); } #endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */ diff --git a/Externals/mbedtls/library/ecp_invasive.h b/Externals/mbedtls/library/ecp_invasive.h new file mode 100644 index 000000000000..71c77027582e --- /dev/null +++ b/Externals/mbedtls/library/ecp_invasive.h @@ -0,0 +1,81 @@ +/** + * \file ecp_invasive.h + * + * \brief ECP module: interfaces for invasive testing only. + * + * The interfaces in this file are intended for testing purposes only. + * They SHOULD NOT be made available in library integrations except when + * building the library for testing. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBEDTLS_ECP_INVASIVE_H +#define MBEDTLS_ECP_INVASIVE_H + +#include "common.h" +#include "mbedtls/bignum.h" +#include "mbedtls/ecp.h" + +#if defined(MBEDTLS_TEST_HOOKS) && defined(MBEDTLS_ECP_C) + +#if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) || \ + defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) +/* Preconditions: + * - bits is a multiple of 64 or is 224 + * - c is -1 or -2 + * - 0 <= N < 2^bits + * - N has room for bits plus one limb + * + * Behavior: + * Set N to c * 2^bits + old_value_of_N. + */ +void mbedtls_ecp_fix_negative( mbedtls_mpi *N, signed char c, size_t bits ); +#endif + +#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED) +/** Generate a private key on a Montgomery curve (Curve25519 or Curve448). + * + * This function implements key generation for the set of secret keys + * specified in [Curve25519] p. 5 and in [Curve448]. The resulting value + * has the lower bits masked but is not necessarily canonical. + * + * \note - [Curve25519] http://cr.yp.to/ecdh/curve25519-20060209.pdf + * - [RFC7748] https://tools.ietf.org/html/rfc7748 + * + * \p high_bit The position of the high-order bit of the key to generate. + * This is the bit-size of the key minus 1: + * 254 for Curve25519 or 447 for Curve448. + * \param d The randomly generated key. This is a number of size + * exactly \p n_bits + 1 bits, with the least significant bits + * masked as specified in [Curve25519] and in [RFC7748] §5. + * \param f_rng The RNG function. + * \param p_rng The RNG context to be passed to \p f_rng. + * + * \return \c 0 on success. + * \return \c MBEDTLS_ERR_ECP_xxx or MBEDTLS_ERR_MPI_xxx on failure. + */ +int mbedtls_ecp_gen_privkey_mx( size_t n_bits, + mbedtls_mpi *d, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +#endif /* MBEDTLS_ECP_MONTGOMERY_ENABLED */ + +#endif /* MBEDTLS_TEST_HOOKS && MBEDTLS_ECP_C */ + +#endif /* MBEDTLS_ECP_INVASIVE_H */ diff --git a/Externals/mbedtls/library/entropy.c b/Externals/mbedtls/library/entropy.c index f8db1a550362..12fd3b9b5fbc 100644 --- a/Externals/mbedtls/library/entropy.c +++ b/Externals/mbedtls/library/entropy.c @@ -1,7 +1,7 @@ /* * Entropy accumulator implementation * - * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,15 +15,9 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_ENTROPY_C) @@ -36,6 +30,7 @@ #include "mbedtls/entropy.h" #include "mbedtls/entropy_poll.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -121,6 +116,11 @@ void mbedtls_entropy_init( mbedtls_entropy_context *ctx ) void mbedtls_entropy_free( mbedtls_entropy_context *ctx ) { + /* If the context was already free, don't call free() again. + * This is important for mutexes which don't allow double-free. */ + if( ctx->accumulator_started == -1 ) + return; + #if defined(MBEDTLS_HAVEGE_C) mbedtls_havege_free( &ctx->havege_data ); #endif @@ -137,7 +137,7 @@ void mbedtls_entropy_free( mbedtls_entropy_context *ctx ) #endif ctx->source_count = 0; mbedtls_platform_zeroize( ctx->source, sizeof( ctx->source ) ); - ctx->accumulator_started = 0; + ctx->accumulator_started = -1; } int mbedtls_entropy_add_source( mbedtls_entropy_context *ctx, @@ -236,7 +236,7 @@ static int entropy_update( mbedtls_entropy_context *ctx, unsigned char source_id int mbedtls_entropy_update_manual( mbedtls_entropy_context *ctx, const unsigned char *data, size_t len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; #if defined(MBEDTLS_THREADING_C) if( ( ret = mbedtls_mutex_lock( &ctx->mutex ) ) != 0 ) @@ -258,7 +258,9 @@ int mbedtls_entropy_update_manual( mbedtls_entropy_context *ctx, */ static int entropy_gather_internal( mbedtls_entropy_context *ctx ) { - int ret, i, have_one_strong = 0; + int ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED; + int i; + int have_one_strong = 0; unsigned char buf[MBEDTLS_ENTROPY_MAX_GATHER]; size_t olen; @@ -306,7 +308,7 @@ static int entropy_gather_internal( mbedtls_entropy_context *ctx ) */ int mbedtls_entropy_gather( mbedtls_entropy_context *ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; #if defined(MBEDTLS_THREADING_C) if( ( ret = mbedtls_mutex_lock( &ctx->mutex ) ) != 0 ) @@ -325,7 +327,8 @@ int mbedtls_entropy_gather( mbedtls_entropy_context *ctx ) int mbedtls_entropy_func( void *data, unsigned char *output, size_t len ) { - int ret, count = 0, i, done; + int ret, count = 0, i, thresholds_reached; + size_t strong_size; mbedtls_entropy_context *ctx = (mbedtls_entropy_context *) data; unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE]; @@ -363,12 +366,17 @@ int mbedtls_entropy_func( void *data, unsigned char *output, size_t len ) if( ( ret = entropy_gather_internal( ctx ) ) != 0 ) goto exit; - done = 1; + thresholds_reached = 1; + strong_size = 0; for( i = 0; i < ctx->source_count; i++ ) + { if( ctx->source[i].size < ctx->source[i].threshold ) - done = 0; + thresholds_reached = 0; + if( ctx->source[i].strong == MBEDTLS_ENTROPY_SOURCE_STRONG ) + strong_size += ctx->source[i].size; + } } - while( ! done ); + while( ! thresholds_reached || strong_size < MBEDTLS_ENTROPY_BLOCK_SIZE ); memset( buf, 0, MBEDTLS_ENTROPY_BLOCK_SIZE ); @@ -463,15 +471,21 @@ int mbedtls_entropy_update_nv_seed( mbedtls_entropy_context *ctx ) #if defined(MBEDTLS_FS_IO) int mbedtls_entropy_write_seed_file( mbedtls_entropy_context *ctx, const char *path ) { - int ret = MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR; - FILE *f; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + FILE *f = NULL; unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE]; - if( ( f = fopen( path, "wb" ) ) == NULL ) - return( MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR ); - if( ( ret = mbedtls_entropy_func( ctx, buf, MBEDTLS_ENTROPY_BLOCK_SIZE ) ) != 0 ) + { + ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED; goto exit; + } + + if( ( f = fopen( path, "wb" ) ) == NULL ) + { + ret = MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR; + goto exit; + } if( fwrite( buf, 1, MBEDTLS_ENTROPY_BLOCK_SIZE, f ) != MBEDTLS_ENTROPY_BLOCK_SIZE ) { @@ -484,7 +498,9 @@ int mbedtls_entropy_write_seed_file( mbedtls_entropy_context *ctx, const char *p exit: mbedtls_platform_zeroize( buf, sizeof( buf ) ); - fclose( f ); + if( f != NULL ) + fclose( f ); + return( ret ); } diff --git a/Externals/mbedtls/library/entropy_poll.c b/Externals/mbedtls/library/entropy_poll.c index 4556f88a5579..2c1e0937b98c 100644 --- a/Externals/mbedtls/library/entropy_poll.c +++ b/Externals/mbedtls/library/entropy_poll.c @@ -1,7 +1,7 @@ /* * Platform-specific and custom entropy polling functions * - * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,20 +15,14 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if defined(__linux__) +#if defined(__linux__) && !defined(_GNU_SOURCE) /* Ensure that syscall() is available even when compiling with -std=c99 */ #define _GNU_SOURCE #endif -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #include @@ -36,6 +30,7 @@ #include "mbedtls/entropy.h" #include "mbedtls/entropy_poll.h" +#include "mbedtls/error.h" #if defined(MBEDTLS_TIMING_C) #include "mbedtls/timing.h" @@ -51,7 +46,7 @@ #if !defined(unix) && !defined(__unix__) && !defined(__unix) && \ !defined(__APPLE__) && !defined(_WIN32) && !defined(__QNXNTO__) && \ - !defined(__HAIKU__) + !defined(__HAIKU__) && !defined(__midipix__) #error "Platform entropy sources only work on Unix and Windows, see MBEDTLS_NO_PLATFORM_ENTROPY in config.h" #endif @@ -94,7 +89,7 @@ int mbedtls_platform_entropy_poll( void *data, unsigned char *output, size_t len * Since there is no wrapper in the libc yet, use the generic syscall wrapper * available in GNU libc and compatible libc's (eg uClibc). */ -#if defined(__linux__) && defined(__GLIBC__) +#if ((defined(__linux__) && defined(__GLIBC__)) || defined(__midipix__)) #include #include #if defined(SYS_getrandom) @@ -112,7 +107,57 @@ static int getrandom_wrapper( void *buf, size_t buflen, unsigned int flags ) return( syscall( SYS_getrandom, buf, buflen, flags ) ); } #endif /* SYS_getrandom */ -#endif /* __linux__ */ +#endif /* __linux__ || __midipix__ */ + +#if defined(__FreeBSD__) || defined(__DragonFly__) +#include +#if (defined(__FreeBSD__) && __FreeBSD_version >= 1200000) || \ + (defined(__DragonFly__) && __DragonFly_version >= 500700) +#include +#include +#define HAVE_GETRANDOM +static int getrandom_wrapper( void *buf, size_t buflen, unsigned int flags ) +{ + return getrandom( buf, buflen, flags ); +} +#endif /* (__FreeBSD__ && __FreeBSD_version >= 1200000) || + (__DragonFly__ && __DragonFly_version >= 500700) */ +#endif /* __FreeBSD__ || __DragonFly__ */ + +/* + * Some BSD systems provide KERN_ARND. + * This is equivalent to reading from /dev/urandom, only it doesn't require an + * open file descriptor, and provides up to 256 bytes per call (basically the + * same as getentropy(), but with a longer history). + * + * Documentation: https://netbsd.gw.com/cgi-bin/man-cgi?sysctl+7 + */ +#if (defined(__FreeBSD__) || defined(__NetBSD__)) && !defined(HAVE_GETRANDOM) +#include +#include +#if defined(KERN_ARND) +#define HAVE_SYSCTL_ARND + +static int sysctl_arnd_wrapper( unsigned char *buf, size_t buflen ) +{ + int name[2]; + size_t len; + + name[0] = CTL_KERN; + name[1] = KERN_ARND; + + while( buflen > 0 ) + { + len = buflen > 256 ? 256 : buflen; + if( sysctl(name, 2, buf, &len, NULL, 0) == -1 ) + return( -1 ); + buflen -= len; + buf += len; + } + return( 0 ); +} +#endif /* KERN_ARND */ +#endif /* __FreeBSD__ || __NetBSD__ */ #include @@ -121,7 +166,7 @@ int mbedtls_platform_entropy_poll( void *data, { FILE *file; size_t read_len; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ((void) data); #if defined(HAVE_GETRANDOM) @@ -138,6 +183,15 @@ int mbedtls_platform_entropy_poll( void *data, ((void) ret); #endif /* HAVE_GETRANDOM */ +#if defined(HAVE_SYSCTL_ARND) + ((void) file); + ((void) read_len); + if( sysctl_arnd_wrapper( output, len ) == -1 ) + return( MBEDTLS_ERR_ENTROPY_SOURCE_FAILED ); + *olen = len; + return( 0 ); +#else + *olen = 0; file = fopen( "/dev/urandom", "rb" ); @@ -155,6 +209,7 @@ int mbedtls_platform_entropy_poll( void *data, *olen = len; return( 0 ); +#endif /* HAVE_SYSCTL_ARND */ } #endif /* _WIN32 && !EFIX64 && !EFI32 */ #endif /* !MBEDTLS_NO_PLATFORM_ENTROPY */ @@ -165,13 +220,13 @@ int mbedtls_null_entropy_poll( void *data, { ((void) data); ((void) output); - *olen = 0; + *olen = 0; if( len < sizeof(unsigned char) ) return( 0 ); + output[0] = 0; *olen = sizeof(unsigned char); - return( 0 ); } #endif diff --git a/Externals/mbedtls/library/error.c b/Externals/mbedtls/library/error.c index 12312a05623e..afad38904ff0 100644 --- a/Externals/mbedtls/library/error.c +++ b/Externals/mbedtls/library/error.c @@ -1,7 +1,7 @@ /* * Error message information * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,31 +15,24 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" -#if defined(MBEDTLS_ERROR_C) || defined(MBEDTLS_ERROR_STRERROR_DUMMY) #include "mbedtls/error.h" -#include -#endif + +#if defined(MBEDTLS_ERROR_C) || defined(MBEDTLS_ERROR_STRERROR_DUMMY) + +#if defined(MBEDTLS_ERROR_C) #if defined(MBEDTLS_PLATFORM_C) #include "mbedtls/platform.h" #else #define mbedtls_snprintf snprintf -#define mbedtls_time_t time_t #endif -#if defined(MBEDTLS_ERROR_C) - #include +#include #if defined(MBEDTLS_AES_C) #include "mbedtls/aes.h" @@ -53,6 +46,10 @@ #include "mbedtls/aria.h" #endif +#if defined(MBEDTLS_ASN1_PARSE_C) +#include "mbedtls/asn1.h" +#endif + #if defined(MBEDTLS_BASE64_C) #include "mbedtls/base64.h" #endif @@ -109,6 +106,10 @@ #include "mbedtls/entropy.h" #endif +#if defined(MBEDTLS_ERROR_C) +#include "mbedtls/error.h" +#endif + #if defined(MBEDTLS_GCM_C) #include "mbedtls/gcm.h" #endif @@ -210,696 +211,755 @@ #endif -void mbedtls_strerror( int ret, char *buf, size_t buflen ) +const char * mbedtls_high_level_strerr( int error_code ) { - size_t len; - int use_ret; + int high_level_error_code; - if( buflen == 0 ) - return; + if( error_code < 0 ) + error_code = -error_code; - memset( buf, 0x00, buflen ); + /* Extract the high-level part from the error code. */ + high_level_error_code = error_code & 0xFF80; - if( ret < 0 ) - ret = -ret; - - if( ret & 0xFF80 ) + switch( high_level_error_code ) { - use_ret = ret & 0xFF80; - - // High level error codes - // - // BEGIN generated code + /* Begin Auto-Generated Code. */ #if defined(MBEDTLS_CIPHER_C) - if( use_ret == -(MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE) ) - mbedtls_snprintf( buf, buflen, "CIPHER - The selected feature is not available" ); - if( use_ret == -(MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "CIPHER - Bad input parameters" ); - if( use_ret == -(MBEDTLS_ERR_CIPHER_ALLOC_FAILED) ) - mbedtls_snprintf( buf, buflen, "CIPHER - Failed to allocate memory" ); - if( use_ret == -(MBEDTLS_ERR_CIPHER_INVALID_PADDING) ) - mbedtls_snprintf( buf, buflen, "CIPHER - Input data contains invalid padding and is rejected" ); - if( use_ret == -(MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED) ) - mbedtls_snprintf( buf, buflen, "CIPHER - Decryption of block requires a full block" ); - if( use_ret == -(MBEDTLS_ERR_CIPHER_AUTH_FAILED) ) - mbedtls_snprintf( buf, buflen, "CIPHER - Authentication failed (for AEAD modes)" ); - if( use_ret == -(MBEDTLS_ERR_CIPHER_INVALID_CONTEXT) ) - mbedtls_snprintf( buf, buflen, "CIPHER - The context is invalid. For example, because it was freed" ); - if( use_ret == -(MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "CIPHER - Cipher hardware accelerator failed" ); + case -(MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE): + return( "CIPHER - The selected feature is not available" ); + case -(MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA): + return( "CIPHER - Bad input parameters" ); + case -(MBEDTLS_ERR_CIPHER_ALLOC_FAILED): + return( "CIPHER - Failed to allocate memory" ); + case -(MBEDTLS_ERR_CIPHER_INVALID_PADDING): + return( "CIPHER - Input data contains invalid padding and is rejected" ); + case -(MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED): + return( "CIPHER - Decryption of block requires a full block" ); + case -(MBEDTLS_ERR_CIPHER_AUTH_FAILED): + return( "CIPHER - Authentication failed (for AEAD modes)" ); + case -(MBEDTLS_ERR_CIPHER_INVALID_CONTEXT): + return( "CIPHER - The context is invalid. For example, because it was freed" ); + case -(MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED): + return( "CIPHER - Cipher hardware accelerator failed" ); #endif /* MBEDTLS_CIPHER_C */ #if defined(MBEDTLS_DHM_C) - if( use_ret == -(MBEDTLS_ERR_DHM_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "DHM - Bad input parameters" ); - if( use_ret == -(MBEDTLS_ERR_DHM_READ_PARAMS_FAILED) ) - mbedtls_snprintf( buf, buflen, "DHM - Reading of the DHM parameters failed" ); - if( use_ret == -(MBEDTLS_ERR_DHM_MAKE_PARAMS_FAILED) ) - mbedtls_snprintf( buf, buflen, "DHM - Making of the DHM parameters failed" ); - if( use_ret == -(MBEDTLS_ERR_DHM_READ_PUBLIC_FAILED) ) - mbedtls_snprintf( buf, buflen, "DHM - Reading of the public values failed" ); - if( use_ret == -(MBEDTLS_ERR_DHM_MAKE_PUBLIC_FAILED) ) - mbedtls_snprintf( buf, buflen, "DHM - Making of the public value failed" ); - if( use_ret == -(MBEDTLS_ERR_DHM_CALC_SECRET_FAILED) ) - mbedtls_snprintf( buf, buflen, "DHM - Calculation of the DHM secret failed" ); - if( use_ret == -(MBEDTLS_ERR_DHM_INVALID_FORMAT) ) - mbedtls_snprintf( buf, buflen, "DHM - The ASN.1 data is not formatted correctly" ); - if( use_ret == -(MBEDTLS_ERR_DHM_ALLOC_FAILED) ) - mbedtls_snprintf( buf, buflen, "DHM - Allocation of memory failed" ); - if( use_ret == -(MBEDTLS_ERR_DHM_FILE_IO_ERROR) ) - mbedtls_snprintf( buf, buflen, "DHM - Read or write of file failed" ); - if( use_ret == -(MBEDTLS_ERR_DHM_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "DHM - DHM hardware accelerator failed" ); - if( use_ret == -(MBEDTLS_ERR_DHM_SET_GROUP_FAILED) ) - mbedtls_snprintf( buf, buflen, "DHM - Setting the modulus and generator failed" ); + case -(MBEDTLS_ERR_DHM_BAD_INPUT_DATA): + return( "DHM - Bad input parameters" ); + case -(MBEDTLS_ERR_DHM_READ_PARAMS_FAILED): + return( "DHM - Reading of the DHM parameters failed" ); + case -(MBEDTLS_ERR_DHM_MAKE_PARAMS_FAILED): + return( "DHM - Making of the DHM parameters failed" ); + case -(MBEDTLS_ERR_DHM_READ_PUBLIC_FAILED): + return( "DHM - Reading of the public values failed" ); + case -(MBEDTLS_ERR_DHM_MAKE_PUBLIC_FAILED): + return( "DHM - Making of the public value failed" ); + case -(MBEDTLS_ERR_DHM_CALC_SECRET_FAILED): + return( "DHM - Calculation of the DHM secret failed" ); + case -(MBEDTLS_ERR_DHM_INVALID_FORMAT): + return( "DHM - The ASN.1 data is not formatted correctly" ); + case -(MBEDTLS_ERR_DHM_ALLOC_FAILED): + return( "DHM - Allocation of memory failed" ); + case -(MBEDTLS_ERR_DHM_FILE_IO_ERROR): + return( "DHM - Read or write of file failed" ); + case -(MBEDTLS_ERR_DHM_HW_ACCEL_FAILED): + return( "DHM - DHM hardware accelerator failed" ); + case -(MBEDTLS_ERR_DHM_SET_GROUP_FAILED): + return( "DHM - Setting the modulus and generator failed" ); #endif /* MBEDTLS_DHM_C */ #if defined(MBEDTLS_ECP_C) - if( use_ret == -(MBEDTLS_ERR_ECP_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "ECP - Bad input parameters to function" ); - if( use_ret == -(MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL) ) - mbedtls_snprintf( buf, buflen, "ECP - The buffer is too small to write to" ); - if( use_ret == -(MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE) ) - mbedtls_snprintf( buf, buflen, "ECP - The requested feature is not available, for example, the requested curve is not supported" ); - if( use_ret == -(MBEDTLS_ERR_ECP_VERIFY_FAILED) ) - mbedtls_snprintf( buf, buflen, "ECP - The signature is not valid" ); - if( use_ret == -(MBEDTLS_ERR_ECP_ALLOC_FAILED) ) - mbedtls_snprintf( buf, buflen, "ECP - Memory allocation failed" ); - if( use_ret == -(MBEDTLS_ERR_ECP_RANDOM_FAILED) ) - mbedtls_snprintf( buf, buflen, "ECP - Generation of random value, such as ephemeral key, failed" ); - if( use_ret == -(MBEDTLS_ERR_ECP_INVALID_KEY) ) - mbedtls_snprintf( buf, buflen, "ECP - Invalid private or public key" ); - if( use_ret == -(MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH) ) - mbedtls_snprintf( buf, buflen, "ECP - The buffer contains a valid signature followed by more data" ); - if( use_ret == -(MBEDTLS_ERR_ECP_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "ECP - The ECP hardware accelerator failed" ); - if( use_ret == -(MBEDTLS_ERR_ECP_IN_PROGRESS) ) - mbedtls_snprintf( buf, buflen, "ECP - Operation in progress, call again with the same parameters to continue" ); + case -(MBEDTLS_ERR_ECP_BAD_INPUT_DATA): + return( "ECP - Bad input parameters to function" ); + case -(MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL): + return( "ECP - The buffer is too small to write to" ); + case -(MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE): + return( "ECP - The requested feature is not available, for example, the requested curve is not supported" ); + case -(MBEDTLS_ERR_ECP_VERIFY_FAILED): + return( "ECP - The signature is not valid" ); + case -(MBEDTLS_ERR_ECP_ALLOC_FAILED): + return( "ECP - Memory allocation failed" ); + case -(MBEDTLS_ERR_ECP_RANDOM_FAILED): + return( "ECP - Generation of random value, such as ephemeral key, failed" ); + case -(MBEDTLS_ERR_ECP_INVALID_KEY): + return( "ECP - Invalid private or public key" ); + case -(MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH): + return( "ECP - The buffer contains a valid signature followed by more data" ); + case -(MBEDTLS_ERR_ECP_HW_ACCEL_FAILED): + return( "ECP - The ECP hardware accelerator failed" ); + case -(MBEDTLS_ERR_ECP_IN_PROGRESS): + return( "ECP - Operation in progress, call again with the same parameters to continue" ); #endif /* MBEDTLS_ECP_C */ #if defined(MBEDTLS_MD_C) - if( use_ret == -(MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE) ) - mbedtls_snprintf( buf, buflen, "MD - The selected feature is not available" ); - if( use_ret == -(MBEDTLS_ERR_MD_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "MD - Bad input parameters to function" ); - if( use_ret == -(MBEDTLS_ERR_MD_ALLOC_FAILED) ) - mbedtls_snprintf( buf, buflen, "MD - Failed to allocate memory" ); - if( use_ret == -(MBEDTLS_ERR_MD_FILE_IO_ERROR) ) - mbedtls_snprintf( buf, buflen, "MD - Opening or reading of file failed" ); - if( use_ret == -(MBEDTLS_ERR_MD_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "MD - MD hardware accelerator failed" ); + case -(MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE): + return( "MD - The selected feature is not available" ); + case -(MBEDTLS_ERR_MD_BAD_INPUT_DATA): + return( "MD - Bad input parameters to function" ); + case -(MBEDTLS_ERR_MD_ALLOC_FAILED): + return( "MD - Failed to allocate memory" ); + case -(MBEDTLS_ERR_MD_FILE_IO_ERROR): + return( "MD - Opening or reading of file failed" ); + case -(MBEDTLS_ERR_MD_HW_ACCEL_FAILED): + return( "MD - MD hardware accelerator failed" ); #endif /* MBEDTLS_MD_C */ #if defined(MBEDTLS_PEM_PARSE_C) || defined(MBEDTLS_PEM_WRITE_C) - if( use_ret == -(MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT) ) - mbedtls_snprintf( buf, buflen, "PEM - No PEM header or footer found" ); - if( use_ret == -(MBEDTLS_ERR_PEM_INVALID_DATA) ) - mbedtls_snprintf( buf, buflen, "PEM - PEM string is not as expected" ); - if( use_ret == -(MBEDTLS_ERR_PEM_ALLOC_FAILED) ) - mbedtls_snprintf( buf, buflen, "PEM - Failed to allocate memory" ); - if( use_ret == -(MBEDTLS_ERR_PEM_INVALID_ENC_IV) ) - mbedtls_snprintf( buf, buflen, "PEM - RSA IV is not in hex-format" ); - if( use_ret == -(MBEDTLS_ERR_PEM_UNKNOWN_ENC_ALG) ) - mbedtls_snprintf( buf, buflen, "PEM - Unsupported key encryption algorithm" ); - if( use_ret == -(MBEDTLS_ERR_PEM_PASSWORD_REQUIRED) ) - mbedtls_snprintf( buf, buflen, "PEM - Private key password can't be empty" ); - if( use_ret == -(MBEDTLS_ERR_PEM_PASSWORD_MISMATCH) ) - mbedtls_snprintf( buf, buflen, "PEM - Given private key password does not allow for correct decryption" ); - if( use_ret == -(MBEDTLS_ERR_PEM_FEATURE_UNAVAILABLE) ) - mbedtls_snprintf( buf, buflen, "PEM - Unavailable feature, e.g. hashing/encryption combination" ); - if( use_ret == -(MBEDTLS_ERR_PEM_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "PEM - Bad input parameters to function" ); + case -(MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT): + return( "PEM - No PEM header or footer found" ); + case -(MBEDTLS_ERR_PEM_INVALID_DATA): + return( "PEM - PEM string is not as expected" ); + case -(MBEDTLS_ERR_PEM_ALLOC_FAILED): + return( "PEM - Failed to allocate memory" ); + case -(MBEDTLS_ERR_PEM_INVALID_ENC_IV): + return( "PEM - RSA IV is not in hex-format" ); + case -(MBEDTLS_ERR_PEM_UNKNOWN_ENC_ALG): + return( "PEM - Unsupported key encryption algorithm" ); + case -(MBEDTLS_ERR_PEM_PASSWORD_REQUIRED): + return( "PEM - Private key password can't be empty" ); + case -(MBEDTLS_ERR_PEM_PASSWORD_MISMATCH): + return( "PEM - Given private key password does not allow for correct decryption" ); + case -(MBEDTLS_ERR_PEM_FEATURE_UNAVAILABLE): + return( "PEM - Unavailable feature, e.g. hashing/encryption combination" ); + case -(MBEDTLS_ERR_PEM_BAD_INPUT_DATA): + return( "PEM - Bad input parameters to function" ); #endif /* MBEDTLS_PEM_PARSE_C || MBEDTLS_PEM_WRITE_C */ #if defined(MBEDTLS_PK_C) - if( use_ret == -(MBEDTLS_ERR_PK_ALLOC_FAILED) ) - mbedtls_snprintf( buf, buflen, "PK - Memory allocation failed" ); - if( use_ret == -(MBEDTLS_ERR_PK_TYPE_MISMATCH) ) - mbedtls_snprintf( buf, buflen, "PK - Type mismatch, eg attempt to encrypt with an ECDSA key" ); - if( use_ret == -(MBEDTLS_ERR_PK_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "PK - Bad input parameters to function" ); - if( use_ret == -(MBEDTLS_ERR_PK_FILE_IO_ERROR) ) - mbedtls_snprintf( buf, buflen, "PK - Read/write of file failed" ); - if( use_ret == -(MBEDTLS_ERR_PK_KEY_INVALID_VERSION) ) - mbedtls_snprintf( buf, buflen, "PK - Unsupported key version" ); - if( use_ret == -(MBEDTLS_ERR_PK_KEY_INVALID_FORMAT) ) - mbedtls_snprintf( buf, buflen, "PK - Invalid key tag or value" ); - if( use_ret == -(MBEDTLS_ERR_PK_UNKNOWN_PK_ALG) ) - mbedtls_snprintf( buf, buflen, "PK - Key algorithm is unsupported (only RSA and EC are supported)" ); - if( use_ret == -(MBEDTLS_ERR_PK_PASSWORD_REQUIRED) ) - mbedtls_snprintf( buf, buflen, "PK - Private key password can't be empty" ); - if( use_ret == -(MBEDTLS_ERR_PK_PASSWORD_MISMATCH) ) - mbedtls_snprintf( buf, buflen, "PK - Given private key password does not allow for correct decryption" ); - if( use_ret == -(MBEDTLS_ERR_PK_INVALID_PUBKEY) ) - mbedtls_snprintf( buf, buflen, "PK - The pubkey tag or value is invalid (only RSA and EC are supported)" ); - if( use_ret == -(MBEDTLS_ERR_PK_INVALID_ALG) ) - mbedtls_snprintf( buf, buflen, "PK - The algorithm tag or value is invalid" ); - if( use_ret == -(MBEDTLS_ERR_PK_UNKNOWN_NAMED_CURVE) ) - mbedtls_snprintf( buf, buflen, "PK - Elliptic curve is unsupported (only NIST curves are supported)" ); - if( use_ret == -(MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE) ) - mbedtls_snprintf( buf, buflen, "PK - Unavailable feature, e.g. RSA disabled for RSA key" ); - if( use_ret == -(MBEDTLS_ERR_PK_SIG_LEN_MISMATCH) ) - mbedtls_snprintf( buf, buflen, "PK - The buffer contains a valid signature followed by more data" ); - if( use_ret == -(MBEDTLS_ERR_PK_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "PK - PK hardware accelerator failed" ); + case -(MBEDTLS_ERR_PK_ALLOC_FAILED): + return( "PK - Memory allocation failed" ); + case -(MBEDTLS_ERR_PK_TYPE_MISMATCH): + return( "PK - Type mismatch, eg attempt to encrypt with an ECDSA key" ); + case -(MBEDTLS_ERR_PK_BAD_INPUT_DATA): + return( "PK - Bad input parameters to function" ); + case -(MBEDTLS_ERR_PK_FILE_IO_ERROR): + return( "PK - Read/write of file failed" ); + case -(MBEDTLS_ERR_PK_KEY_INVALID_VERSION): + return( "PK - Unsupported key version" ); + case -(MBEDTLS_ERR_PK_KEY_INVALID_FORMAT): + return( "PK - Invalid key tag or value" ); + case -(MBEDTLS_ERR_PK_UNKNOWN_PK_ALG): + return( "PK - Key algorithm is unsupported (only RSA and EC are supported)" ); + case -(MBEDTLS_ERR_PK_PASSWORD_REQUIRED): + return( "PK - Private key password can't be empty" ); + case -(MBEDTLS_ERR_PK_PASSWORD_MISMATCH): + return( "PK - Given private key password does not allow for correct decryption" ); + case -(MBEDTLS_ERR_PK_INVALID_PUBKEY): + return( "PK - The pubkey tag or value is invalid (only RSA and EC are supported)" ); + case -(MBEDTLS_ERR_PK_INVALID_ALG): + return( "PK - The algorithm tag or value is invalid" ); + case -(MBEDTLS_ERR_PK_UNKNOWN_NAMED_CURVE): + return( "PK - Elliptic curve is unsupported (only NIST curves are supported)" ); + case -(MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE): + return( "PK - Unavailable feature, e.g. RSA disabled for RSA key" ); + case -(MBEDTLS_ERR_PK_SIG_LEN_MISMATCH): + return( "PK - The buffer contains a valid signature followed by more data" ); + case -(MBEDTLS_ERR_PK_HW_ACCEL_FAILED): + return( "PK - PK hardware accelerator failed" ); #endif /* MBEDTLS_PK_C */ #if defined(MBEDTLS_PKCS12_C) - if( use_ret == -(MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "PKCS12 - Bad input parameters to function" ); - if( use_ret == -(MBEDTLS_ERR_PKCS12_FEATURE_UNAVAILABLE) ) - mbedtls_snprintf( buf, buflen, "PKCS12 - Feature not available, e.g. unsupported encryption scheme" ); - if( use_ret == -(MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT) ) - mbedtls_snprintf( buf, buflen, "PKCS12 - PBE ASN.1 data not as expected" ); - if( use_ret == -(MBEDTLS_ERR_PKCS12_PASSWORD_MISMATCH) ) - mbedtls_snprintf( buf, buflen, "PKCS12 - Given private key password does not allow for correct decryption" ); + case -(MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA): + return( "PKCS12 - Bad input parameters to function" ); + case -(MBEDTLS_ERR_PKCS12_FEATURE_UNAVAILABLE): + return( "PKCS12 - Feature not available, e.g. unsupported encryption scheme" ); + case -(MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT): + return( "PKCS12 - PBE ASN.1 data not as expected" ); + case -(MBEDTLS_ERR_PKCS12_PASSWORD_MISMATCH): + return( "PKCS12 - Given private key password does not allow for correct decryption" ); #endif /* MBEDTLS_PKCS12_C */ #if defined(MBEDTLS_PKCS5_C) - if( use_ret == -(MBEDTLS_ERR_PKCS5_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "PKCS5 - Bad input parameters to function" ); - if( use_ret == -(MBEDTLS_ERR_PKCS5_INVALID_FORMAT) ) - mbedtls_snprintf( buf, buflen, "PKCS5 - Unexpected ASN.1 data" ); - if( use_ret == -(MBEDTLS_ERR_PKCS5_FEATURE_UNAVAILABLE) ) - mbedtls_snprintf( buf, buflen, "PKCS5 - Requested encryption or digest alg not available" ); - if( use_ret == -(MBEDTLS_ERR_PKCS5_PASSWORD_MISMATCH) ) - mbedtls_snprintf( buf, buflen, "PKCS5 - Given private key password does not allow for correct decryption" ); + case -(MBEDTLS_ERR_PKCS5_BAD_INPUT_DATA): + return( "PKCS5 - Bad input parameters to function" ); + case -(MBEDTLS_ERR_PKCS5_INVALID_FORMAT): + return( "PKCS5 - Unexpected ASN.1 data" ); + case -(MBEDTLS_ERR_PKCS5_FEATURE_UNAVAILABLE): + return( "PKCS5 - Requested encryption or digest alg not available" ); + case -(MBEDTLS_ERR_PKCS5_PASSWORD_MISMATCH): + return( "PKCS5 - Given private key password does not allow for correct decryption" ); #endif /* MBEDTLS_PKCS5_C */ #if defined(MBEDTLS_RSA_C) - if( use_ret == -(MBEDTLS_ERR_RSA_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "RSA - Bad input parameters to function" ); - if( use_ret == -(MBEDTLS_ERR_RSA_INVALID_PADDING) ) - mbedtls_snprintf( buf, buflen, "RSA - Input data contains invalid padding and is rejected" ); - if( use_ret == -(MBEDTLS_ERR_RSA_KEY_GEN_FAILED) ) - mbedtls_snprintf( buf, buflen, "RSA - Something failed during generation of a key" ); - if( use_ret == -(MBEDTLS_ERR_RSA_KEY_CHECK_FAILED) ) - mbedtls_snprintf( buf, buflen, "RSA - Key failed to pass the validity check of the library" ); - if( use_ret == -(MBEDTLS_ERR_RSA_PUBLIC_FAILED) ) - mbedtls_snprintf( buf, buflen, "RSA - The public key operation failed" ); - if( use_ret == -(MBEDTLS_ERR_RSA_PRIVATE_FAILED) ) - mbedtls_snprintf( buf, buflen, "RSA - The private key operation failed" ); - if( use_ret == -(MBEDTLS_ERR_RSA_VERIFY_FAILED) ) - mbedtls_snprintf( buf, buflen, "RSA - The PKCS#1 verification failed" ); - if( use_ret == -(MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE) ) - mbedtls_snprintf( buf, buflen, "RSA - The output buffer for decryption is not large enough" ); - if( use_ret == -(MBEDTLS_ERR_RSA_RNG_FAILED) ) - mbedtls_snprintf( buf, buflen, "RSA - The random generator failed to generate non-zeros" ); - if( use_ret == -(MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION) ) - mbedtls_snprintf( buf, buflen, "RSA - The implementation does not offer the requested operation, for example, because of security violations or lack of functionality" ); - if( use_ret == -(MBEDTLS_ERR_RSA_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "RSA - RSA hardware accelerator failed" ); + case -(MBEDTLS_ERR_RSA_BAD_INPUT_DATA): + return( "RSA - Bad input parameters to function" ); + case -(MBEDTLS_ERR_RSA_INVALID_PADDING): + return( "RSA - Input data contains invalid padding and is rejected" ); + case -(MBEDTLS_ERR_RSA_KEY_GEN_FAILED): + return( "RSA - Something failed during generation of a key" ); + case -(MBEDTLS_ERR_RSA_KEY_CHECK_FAILED): + return( "RSA - Key failed to pass the validity check of the library" ); + case -(MBEDTLS_ERR_RSA_PUBLIC_FAILED): + return( "RSA - The public key operation failed" ); + case -(MBEDTLS_ERR_RSA_PRIVATE_FAILED): + return( "RSA - The private key operation failed" ); + case -(MBEDTLS_ERR_RSA_VERIFY_FAILED): + return( "RSA - The PKCS#1 verification failed" ); + case -(MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE): + return( "RSA - The output buffer for decryption is not large enough" ); + case -(MBEDTLS_ERR_RSA_RNG_FAILED): + return( "RSA - The random generator failed to generate non-zeros" ); + case -(MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION): + return( "RSA - The implementation does not offer the requested operation, for example, because of security violations or lack of functionality" ); + case -(MBEDTLS_ERR_RSA_HW_ACCEL_FAILED): + return( "RSA - RSA hardware accelerator failed" ); #endif /* MBEDTLS_RSA_C */ #if defined(MBEDTLS_SSL_TLS_C) - if( use_ret == -(MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE) ) - mbedtls_snprintf( buf, buflen, "SSL - The requested feature is not available" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "SSL - Bad input parameters to function" ); - if( use_ret == -(MBEDTLS_ERR_SSL_INVALID_MAC) ) - mbedtls_snprintf( buf, buflen, "SSL - Verification of the message MAC failed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_INVALID_RECORD) ) - mbedtls_snprintf( buf, buflen, "SSL - An invalid SSL record was received" ); - if( use_ret == -(MBEDTLS_ERR_SSL_CONN_EOF) ) - mbedtls_snprintf( buf, buflen, "SSL - The connection indicated an EOF" ); - if( use_ret == -(MBEDTLS_ERR_SSL_UNKNOWN_CIPHER) ) - mbedtls_snprintf( buf, buflen, "SSL - An unknown cipher was received" ); - if( use_ret == -(MBEDTLS_ERR_SSL_NO_CIPHER_CHOSEN) ) - mbedtls_snprintf( buf, buflen, "SSL - The server has no ciphersuites in common with the client" ); - if( use_ret == -(MBEDTLS_ERR_SSL_NO_RNG) ) - mbedtls_snprintf( buf, buflen, "SSL - No RNG was provided to the SSL module" ); - if( use_ret == -(MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE) ) - mbedtls_snprintf( buf, buflen, "SSL - No client certification received from the client, but required by the authentication mode" ); - if( use_ret == -(MBEDTLS_ERR_SSL_CERTIFICATE_TOO_LARGE) ) - mbedtls_snprintf( buf, buflen, "SSL - Our own certificate(s) is/are too large to send in an SSL message" ); - if( use_ret == -(MBEDTLS_ERR_SSL_CERTIFICATE_REQUIRED) ) - mbedtls_snprintf( buf, buflen, "SSL - The own certificate is not set, but needed by the server" ); - if( use_ret == -(MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED) ) - mbedtls_snprintf( buf, buflen, "SSL - The own private key or pre-shared key is not set, but needed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_CA_CHAIN_REQUIRED) ) - mbedtls_snprintf( buf, buflen, "SSL - No CA Chain is set, but required to operate" ); - if( use_ret == -(MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE) ) - mbedtls_snprintf( buf, buflen, "SSL - An unexpected message was received from our peer" ); - if( use_ret == -(MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE) ) - { - mbedtls_snprintf( buf, buflen, "SSL - A fatal alert message was received from our peer" ); - return; - } - if( use_ret == -(MBEDTLS_ERR_SSL_PEER_VERIFY_FAILED) ) - mbedtls_snprintf( buf, buflen, "SSL - Verification of our peer failed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY) ) - mbedtls_snprintf( buf, buflen, "SSL - The peer notified us that the connection is going to be closed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO) ) - mbedtls_snprintf( buf, buflen, "SSL - Processing of the ClientHello handshake message failed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO) ) - mbedtls_snprintf( buf, buflen, "SSL - Processing of the ServerHello handshake message failed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE) ) - mbedtls_snprintf( buf, buflen, "SSL - Processing of the Certificate handshake message failed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_REQUEST) ) - mbedtls_snprintf( buf, buflen, "SSL - Processing of the CertificateRequest handshake message failed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE) ) - mbedtls_snprintf( buf, buflen, "SSL - Processing of the ServerKeyExchange handshake message failed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO_DONE) ) - mbedtls_snprintf( buf, buflen, "SSL - Processing of the ServerHelloDone handshake message failed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE) ) - mbedtls_snprintf( buf, buflen, "SSL - Processing of the ClientKeyExchange handshake message failed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_RP) ) - mbedtls_snprintf( buf, buflen, "SSL - Processing of the ClientKeyExchange handshake message failed in DHM / ECDH Read Public" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_CS) ) - mbedtls_snprintf( buf, buflen, "SSL - Processing of the ClientKeyExchange handshake message failed in DHM / ECDH Calculate Secret" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_VERIFY) ) - mbedtls_snprintf( buf, buflen, "SSL - Processing of the CertificateVerify handshake message failed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BAD_HS_CHANGE_CIPHER_SPEC) ) - mbedtls_snprintf( buf, buflen, "SSL - Processing of the ChangeCipherSpec handshake message failed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BAD_HS_FINISHED) ) - mbedtls_snprintf( buf, buflen, "SSL - Processing of the Finished handshake message failed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_ALLOC_FAILED) ) - mbedtls_snprintf( buf, buflen, "SSL - Memory allocation failed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "SSL - Hardware acceleration function returned with error" ); - if( use_ret == -(MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH) ) - mbedtls_snprintf( buf, buflen, "SSL - Hardware acceleration function skipped / left alone data" ); - if( use_ret == -(MBEDTLS_ERR_SSL_COMPRESSION_FAILED) ) - mbedtls_snprintf( buf, buflen, "SSL - Processing of the compression / decompression failed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BAD_HS_PROTOCOL_VERSION) ) - mbedtls_snprintf( buf, buflen, "SSL - Handshake protocol not within min/max boundaries" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BAD_HS_NEW_SESSION_TICKET) ) - mbedtls_snprintf( buf, buflen, "SSL - Processing of the NewSessionTicket handshake message failed" ); - if( use_ret == -(MBEDTLS_ERR_SSL_SESSION_TICKET_EXPIRED) ) - mbedtls_snprintf( buf, buflen, "SSL - Session ticket has expired" ); - if( use_ret == -(MBEDTLS_ERR_SSL_PK_TYPE_MISMATCH) ) - mbedtls_snprintf( buf, buflen, "SSL - Public key type mismatch (eg, asked for RSA key exchange and presented EC key)" ); - if( use_ret == -(MBEDTLS_ERR_SSL_UNKNOWN_IDENTITY) ) - mbedtls_snprintf( buf, buflen, "SSL - Unknown identity received (eg, PSK identity)" ); - if( use_ret == -(MBEDTLS_ERR_SSL_INTERNAL_ERROR) ) - mbedtls_snprintf( buf, buflen, "SSL - Internal error (eg, unexpected failure in lower-level module)" ); - if( use_ret == -(MBEDTLS_ERR_SSL_COUNTER_WRAPPING) ) - mbedtls_snprintf( buf, buflen, "SSL - A counter would wrap (eg, too many messages exchanged)" ); - if( use_ret == -(MBEDTLS_ERR_SSL_WAITING_SERVER_HELLO_RENEGO) ) - mbedtls_snprintf( buf, buflen, "SSL - Unexpected message at ServerHello in renegotiation" ); - if( use_ret == -(MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED) ) - mbedtls_snprintf( buf, buflen, "SSL - DTLS client must retry for hello verification" ); - if( use_ret == -(MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL) ) - mbedtls_snprintf( buf, buflen, "SSL - A buffer is too small to receive or write a message" ); - if( use_ret == -(MBEDTLS_ERR_SSL_NO_USABLE_CIPHERSUITE) ) - mbedtls_snprintf( buf, buflen, "SSL - None of the common ciphersuites is usable (eg, no suitable certificate, see debug messages)" ); - if( use_ret == -(MBEDTLS_ERR_SSL_WANT_READ) ) - mbedtls_snprintf( buf, buflen, "SSL - No data of requested type currently available on underlying transport" ); - if( use_ret == -(MBEDTLS_ERR_SSL_WANT_WRITE) ) - mbedtls_snprintf( buf, buflen, "SSL - Connection requires a write call" ); - if( use_ret == -(MBEDTLS_ERR_SSL_TIMEOUT) ) - mbedtls_snprintf( buf, buflen, "SSL - The operation timed out" ); - if( use_ret == -(MBEDTLS_ERR_SSL_CLIENT_RECONNECT) ) - mbedtls_snprintf( buf, buflen, "SSL - The client initiated a reconnect from the same port" ); - if( use_ret == -(MBEDTLS_ERR_SSL_UNEXPECTED_RECORD) ) - mbedtls_snprintf( buf, buflen, "SSL - Record header looks valid but is not expected" ); - if( use_ret == -(MBEDTLS_ERR_SSL_NON_FATAL) ) - mbedtls_snprintf( buf, buflen, "SSL - The alert message received indicates a non-fatal error" ); - if( use_ret == -(MBEDTLS_ERR_SSL_INVALID_VERIFY_HASH) ) - mbedtls_snprintf( buf, buflen, "SSL - Couldn't set the hash for verifying CertificateVerify" ); - if( use_ret == -(MBEDTLS_ERR_SSL_CONTINUE_PROCESSING) ) - mbedtls_snprintf( buf, buflen, "SSL - Internal-only message signaling that further message-processing should be done" ); - if( use_ret == -(MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS) ) - mbedtls_snprintf( buf, buflen, "SSL - The asynchronous operation is not completed yet" ); - if( use_ret == -(MBEDTLS_ERR_SSL_EARLY_MESSAGE) ) - mbedtls_snprintf( buf, buflen, "SSL - Internal-only message signaling that a message arrived early" ); - if( use_ret == -(MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS) ) - mbedtls_snprintf( buf, buflen, "SSL - A cryptographic operation is in progress. Try again later" ); + case -(MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE): + return( "SSL - The requested feature is not available" ); + case -(MBEDTLS_ERR_SSL_BAD_INPUT_DATA): + return( "SSL - Bad input parameters to function" ); + case -(MBEDTLS_ERR_SSL_INVALID_MAC): + return( "SSL - Verification of the message MAC failed" ); + case -(MBEDTLS_ERR_SSL_INVALID_RECORD): + return( "SSL - An invalid SSL record was received" ); + case -(MBEDTLS_ERR_SSL_CONN_EOF): + return( "SSL - The connection indicated an EOF" ); + case -(MBEDTLS_ERR_SSL_UNKNOWN_CIPHER): + return( "SSL - An unknown cipher was received" ); + case -(MBEDTLS_ERR_SSL_NO_CIPHER_CHOSEN): + return( "SSL - The server has no ciphersuites in common with the client" ); + case -(MBEDTLS_ERR_SSL_NO_RNG): + return( "SSL - No RNG was provided to the SSL module" ); + case -(MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE): + return( "SSL - No client certification received from the client, but required by the authentication mode" ); + case -(MBEDTLS_ERR_SSL_CERTIFICATE_TOO_LARGE): + return( "SSL - Our own certificate(s) is/are too large to send in an SSL message" ); + case -(MBEDTLS_ERR_SSL_CERTIFICATE_REQUIRED): + return( "SSL - The own certificate is not set, but needed by the server" ); + case -(MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED): + return( "SSL - The own private key or pre-shared key is not set, but needed" ); + case -(MBEDTLS_ERR_SSL_CA_CHAIN_REQUIRED): + return( "SSL - No CA Chain is set, but required to operate" ); + case -(MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE): + return( "SSL - An unexpected message was received from our peer" ); + case -(MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE): + return( "SSL - A fatal alert message was received from our peer" ); + case -(MBEDTLS_ERR_SSL_PEER_VERIFY_FAILED): + return( "SSL - Verification of our peer failed" ); + case -(MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY): + return( "SSL - The peer notified us that the connection is going to be closed" ); + case -(MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO): + return( "SSL - Processing of the ClientHello handshake message failed" ); + case -(MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO): + return( "SSL - Processing of the ServerHello handshake message failed" ); + case -(MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE): + return( "SSL - Processing of the Certificate handshake message failed" ); + case -(MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_REQUEST): + return( "SSL - Processing of the CertificateRequest handshake message failed" ); + case -(MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE): + return( "SSL - Processing of the ServerKeyExchange handshake message failed" ); + case -(MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO_DONE): + return( "SSL - Processing of the ServerHelloDone handshake message failed" ); + case -(MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE): + return( "SSL - Processing of the ClientKeyExchange handshake message failed" ); + case -(MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_RP): + return( "SSL - Processing of the ClientKeyExchange handshake message failed in DHM / ECDH Read Public" ); + case -(MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_CS): + return( "SSL - Processing of the ClientKeyExchange handshake message failed in DHM / ECDH Calculate Secret" ); + case -(MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_VERIFY): + return( "SSL - Processing of the CertificateVerify handshake message failed" ); + case -(MBEDTLS_ERR_SSL_BAD_HS_CHANGE_CIPHER_SPEC): + return( "SSL - Processing of the ChangeCipherSpec handshake message failed" ); + case -(MBEDTLS_ERR_SSL_BAD_HS_FINISHED): + return( "SSL - Processing of the Finished handshake message failed" ); + case -(MBEDTLS_ERR_SSL_ALLOC_FAILED): + return( "SSL - Memory allocation failed" ); + case -(MBEDTLS_ERR_SSL_HW_ACCEL_FAILED): + return( "SSL - Hardware acceleration function returned with error" ); + case -(MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH): + return( "SSL - Hardware acceleration function skipped / left alone data" ); + case -(MBEDTLS_ERR_SSL_COMPRESSION_FAILED): + return( "SSL - Processing of the compression / decompression failed" ); + case -(MBEDTLS_ERR_SSL_BAD_HS_PROTOCOL_VERSION): + return( "SSL - Handshake protocol not within min/max boundaries" ); + case -(MBEDTLS_ERR_SSL_BAD_HS_NEW_SESSION_TICKET): + return( "SSL - Processing of the NewSessionTicket handshake message failed" ); + case -(MBEDTLS_ERR_SSL_SESSION_TICKET_EXPIRED): + return( "SSL - Session ticket has expired" ); + case -(MBEDTLS_ERR_SSL_PK_TYPE_MISMATCH): + return( "SSL - Public key type mismatch (eg, asked for RSA key exchange and presented EC key)" ); + case -(MBEDTLS_ERR_SSL_UNKNOWN_IDENTITY): + return( "SSL - Unknown identity received (eg, PSK identity)" ); + case -(MBEDTLS_ERR_SSL_INTERNAL_ERROR): + return( "SSL - Internal error (eg, unexpected failure in lower-level module)" ); + case -(MBEDTLS_ERR_SSL_COUNTER_WRAPPING): + return( "SSL - A counter would wrap (eg, too many messages exchanged)" ); + case -(MBEDTLS_ERR_SSL_WAITING_SERVER_HELLO_RENEGO): + return( "SSL - Unexpected message at ServerHello in renegotiation" ); + case -(MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED): + return( "SSL - DTLS client must retry for hello verification" ); + case -(MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL): + return( "SSL - A buffer is too small to receive or write a message" ); + case -(MBEDTLS_ERR_SSL_NO_USABLE_CIPHERSUITE): + return( "SSL - None of the common ciphersuites is usable (eg, no suitable certificate, see debug messages)" ); + case -(MBEDTLS_ERR_SSL_WANT_READ): + return( "SSL - No data of requested type currently available on underlying transport" ); + case -(MBEDTLS_ERR_SSL_WANT_WRITE): + return( "SSL - Connection requires a write call" ); + case -(MBEDTLS_ERR_SSL_TIMEOUT): + return( "SSL - The operation timed out" ); + case -(MBEDTLS_ERR_SSL_CLIENT_RECONNECT): + return( "SSL - The client initiated a reconnect from the same port" ); + case -(MBEDTLS_ERR_SSL_UNEXPECTED_RECORD): + return( "SSL - Record header looks valid but is not expected" ); + case -(MBEDTLS_ERR_SSL_NON_FATAL): + return( "SSL - The alert message received indicates a non-fatal error" ); + case -(MBEDTLS_ERR_SSL_INVALID_VERIFY_HASH): + return( "SSL - Couldn't set the hash for verifying CertificateVerify" ); + case -(MBEDTLS_ERR_SSL_CONTINUE_PROCESSING): + return( "SSL - Internal-only message signaling that further message-processing should be done" ); + case -(MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS): + return( "SSL - The asynchronous operation is not completed yet" ); + case -(MBEDTLS_ERR_SSL_EARLY_MESSAGE): + return( "SSL - Internal-only message signaling that a message arrived early" ); + case -(MBEDTLS_ERR_SSL_UNEXPECTED_CID): + return( "SSL - An encrypted DTLS-frame with an unexpected CID was received" ); + case -(MBEDTLS_ERR_SSL_VERSION_MISMATCH): + return( "SSL - An operation failed due to an unexpected version or configuration" ); + case -(MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS): + return( "SSL - A cryptographic operation is in progress. Try again later" ); + case -(MBEDTLS_ERR_SSL_BAD_CONFIG): + return( "SSL - Invalid value in SSL config" ); #endif /* MBEDTLS_SSL_TLS_C */ #if defined(MBEDTLS_X509_USE_C) || defined(MBEDTLS_X509_CREATE_C) - if( use_ret == -(MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE) ) - mbedtls_snprintf( buf, buflen, "X509 - Unavailable feature, e.g. RSA hashing/encryption combination" ); - if( use_ret == -(MBEDTLS_ERR_X509_UNKNOWN_OID) ) - mbedtls_snprintf( buf, buflen, "X509 - Requested OID is unknown" ); - if( use_ret == -(MBEDTLS_ERR_X509_INVALID_FORMAT) ) - mbedtls_snprintf( buf, buflen, "X509 - The CRT/CRL/CSR format is invalid, e.g. different type expected" ); - if( use_ret == -(MBEDTLS_ERR_X509_INVALID_VERSION) ) - mbedtls_snprintf( buf, buflen, "X509 - The CRT/CRL/CSR version element is invalid" ); - if( use_ret == -(MBEDTLS_ERR_X509_INVALID_SERIAL) ) - mbedtls_snprintf( buf, buflen, "X509 - The serial tag or value is invalid" ); - if( use_ret == -(MBEDTLS_ERR_X509_INVALID_ALG) ) - mbedtls_snprintf( buf, buflen, "X509 - The algorithm tag or value is invalid" ); - if( use_ret == -(MBEDTLS_ERR_X509_INVALID_NAME) ) - mbedtls_snprintf( buf, buflen, "X509 - The name tag or value is invalid" ); - if( use_ret == -(MBEDTLS_ERR_X509_INVALID_DATE) ) - mbedtls_snprintf( buf, buflen, "X509 - The date tag or value is invalid" ); - if( use_ret == -(MBEDTLS_ERR_X509_INVALID_SIGNATURE) ) - mbedtls_snprintf( buf, buflen, "X509 - The signature tag or value invalid" ); - if( use_ret == -(MBEDTLS_ERR_X509_INVALID_EXTENSIONS) ) - mbedtls_snprintf( buf, buflen, "X509 - The extension tag or value is invalid" ); - if( use_ret == -(MBEDTLS_ERR_X509_UNKNOWN_VERSION) ) - mbedtls_snprintf( buf, buflen, "X509 - CRT/CRL/CSR has an unsupported version number" ); - if( use_ret == -(MBEDTLS_ERR_X509_UNKNOWN_SIG_ALG) ) - mbedtls_snprintf( buf, buflen, "X509 - Signature algorithm (oid) is unsupported" ); - if( use_ret == -(MBEDTLS_ERR_X509_SIG_MISMATCH) ) - mbedtls_snprintf( buf, buflen, "X509 - Signature algorithms do not match. (see \\c ::mbedtls_x509_crt sig_oid)" ); - if( use_ret == -(MBEDTLS_ERR_X509_CERT_VERIFY_FAILED) ) - mbedtls_snprintf( buf, buflen, "X509 - Certificate verification failed, e.g. CRL, CA or signature check failed" ); - if( use_ret == -(MBEDTLS_ERR_X509_CERT_UNKNOWN_FORMAT) ) - mbedtls_snprintf( buf, buflen, "X509 - Format not recognized as DER or PEM" ); - if( use_ret == -(MBEDTLS_ERR_X509_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "X509 - Input invalid" ); - if( use_ret == -(MBEDTLS_ERR_X509_ALLOC_FAILED) ) - mbedtls_snprintf( buf, buflen, "X509 - Allocation of memory failed" ); - if( use_ret == -(MBEDTLS_ERR_X509_FILE_IO_ERROR) ) - mbedtls_snprintf( buf, buflen, "X509 - Read/write of file failed" ); - if( use_ret == -(MBEDTLS_ERR_X509_BUFFER_TOO_SMALL) ) - mbedtls_snprintf( buf, buflen, "X509 - Destination buffer is too small" ); - if( use_ret == -(MBEDTLS_ERR_X509_FATAL_ERROR) ) - mbedtls_snprintf( buf, buflen, "X509 - A fatal error occured, eg the chain is too long or the vrfy callback failed" ); + case -(MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE): + return( "X509 - Unavailable feature, e.g. RSA hashing/encryption combination" ); + case -(MBEDTLS_ERR_X509_UNKNOWN_OID): + return( "X509 - Requested OID is unknown" ); + case -(MBEDTLS_ERR_X509_INVALID_FORMAT): + return( "X509 - The CRT/CRL/CSR format is invalid, e.g. different type expected" ); + case -(MBEDTLS_ERR_X509_INVALID_VERSION): + return( "X509 - The CRT/CRL/CSR version element is invalid" ); + case -(MBEDTLS_ERR_X509_INVALID_SERIAL): + return( "X509 - The serial tag or value is invalid" ); + case -(MBEDTLS_ERR_X509_INVALID_ALG): + return( "X509 - The algorithm tag or value is invalid" ); + case -(MBEDTLS_ERR_X509_INVALID_NAME): + return( "X509 - The name tag or value is invalid" ); + case -(MBEDTLS_ERR_X509_INVALID_DATE): + return( "X509 - The date tag or value is invalid" ); + case -(MBEDTLS_ERR_X509_INVALID_SIGNATURE): + return( "X509 - The signature tag or value invalid" ); + case -(MBEDTLS_ERR_X509_INVALID_EXTENSIONS): + return( "X509 - The extension tag or value is invalid" ); + case -(MBEDTLS_ERR_X509_UNKNOWN_VERSION): + return( "X509 - CRT/CRL/CSR has an unsupported version number" ); + case -(MBEDTLS_ERR_X509_UNKNOWN_SIG_ALG): + return( "X509 - Signature algorithm (oid) is unsupported" ); + case -(MBEDTLS_ERR_X509_SIG_MISMATCH): + return( "X509 - Signature algorithms do not match. (see \\c ::mbedtls_x509_crt sig_oid)" ); + case -(MBEDTLS_ERR_X509_CERT_VERIFY_FAILED): + return( "X509 - Certificate verification failed, e.g. CRL, CA or signature check failed" ); + case -(MBEDTLS_ERR_X509_CERT_UNKNOWN_FORMAT): + return( "X509 - Format not recognized as DER or PEM" ); + case -(MBEDTLS_ERR_X509_BAD_INPUT_DATA): + return( "X509 - Input invalid" ); + case -(MBEDTLS_ERR_X509_ALLOC_FAILED): + return( "X509 - Allocation of memory failed" ); + case -(MBEDTLS_ERR_X509_FILE_IO_ERROR): + return( "X509 - Read/write of file failed" ); + case -(MBEDTLS_ERR_X509_BUFFER_TOO_SMALL): + return( "X509 - Destination buffer is too small" ); + case -(MBEDTLS_ERR_X509_FATAL_ERROR): + return( "X509 - A fatal error occurred, eg the chain is too long or the vrfy callback failed" ); #endif /* MBEDTLS_X509_USE_C || MBEDTLS_X509_CREATE_C */ - // END generated code + /* End Auto-Generated Code. */ - if( strlen( buf ) == 0 ) - mbedtls_snprintf( buf, buflen, "UNKNOWN ERROR CODE (%04X)", use_ret ); + default: + break; } - use_ret = ret & ~0xFF80; - - if( use_ret == 0 ) - return; - - // If high level code is present, make a concatenation between both - // error strings. - // - len = strlen( buf ); + return( NULL ); +} - if( len > 0 ) - { - if( buflen - len < 5 ) - return; +const char * mbedtls_low_level_strerr( int error_code ) +{ + int low_level_error_code; - mbedtls_snprintf( buf + len, buflen - len, " : " ); + if( error_code < 0 ) + error_code = -error_code; - buf += len + 3; - buflen -= len + 3; - } + /* Extract the low-level part from the error code. */ + low_level_error_code = error_code & ~0xFF80; - // Low level error codes - // - // BEGIN generated code + switch( low_level_error_code ) + { + /* Begin Auto-Generated Code. */ #if defined(MBEDTLS_AES_C) - if( use_ret == -(MBEDTLS_ERR_AES_INVALID_KEY_LENGTH) ) - mbedtls_snprintf( buf, buflen, "AES - Invalid key length" ); - if( use_ret == -(MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH) ) - mbedtls_snprintf( buf, buflen, "AES - Invalid data input length" ); - if( use_ret == -(MBEDTLS_ERR_AES_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "AES - Invalid input data" ); - if( use_ret == -(MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE) ) - mbedtls_snprintf( buf, buflen, "AES - Feature not available. For example, an unsupported AES key size" ); - if( use_ret == -(MBEDTLS_ERR_AES_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "AES - AES hardware accelerator failed" ); + case -(MBEDTLS_ERR_AES_INVALID_KEY_LENGTH): + return( "AES - Invalid key length" ); + case -(MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH): + return( "AES - Invalid data input length" ); + case -(MBEDTLS_ERR_AES_BAD_INPUT_DATA): + return( "AES - Invalid input data" ); + case -(MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE): + return( "AES - Feature not available. For example, an unsupported AES key size" ); + case -(MBEDTLS_ERR_AES_HW_ACCEL_FAILED): + return( "AES - AES hardware accelerator failed" ); #endif /* MBEDTLS_AES_C */ #if defined(MBEDTLS_ARC4_C) - if( use_ret == -(MBEDTLS_ERR_ARC4_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "ARC4 - ARC4 hardware accelerator failed" ); + case -(MBEDTLS_ERR_ARC4_HW_ACCEL_FAILED): + return( "ARC4 - ARC4 hardware accelerator failed" ); #endif /* MBEDTLS_ARC4_C */ #if defined(MBEDTLS_ARIA_C) - if( use_ret == -(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "ARIA - Bad input data" ); - if( use_ret == -(MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH) ) - mbedtls_snprintf( buf, buflen, "ARIA - Invalid data input length" ); - if( use_ret == -(MBEDTLS_ERR_ARIA_FEATURE_UNAVAILABLE) ) - mbedtls_snprintf( buf, buflen, "ARIA - Feature not available. For example, an unsupported ARIA key size" ); - if( use_ret == -(MBEDTLS_ERR_ARIA_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "ARIA - ARIA hardware accelerator failed" ); + case -(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA): + return( "ARIA - Bad input data" ); + case -(MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH): + return( "ARIA - Invalid data input length" ); + case -(MBEDTLS_ERR_ARIA_FEATURE_UNAVAILABLE): + return( "ARIA - Feature not available. For example, an unsupported ARIA key size" ); + case -(MBEDTLS_ERR_ARIA_HW_ACCEL_FAILED): + return( "ARIA - ARIA hardware accelerator failed" ); #endif /* MBEDTLS_ARIA_C */ #if defined(MBEDTLS_ASN1_PARSE_C) - if( use_ret == -(MBEDTLS_ERR_ASN1_OUT_OF_DATA) ) - mbedtls_snprintf( buf, buflen, "ASN1 - Out of data when parsing an ASN1 data structure" ); - if( use_ret == -(MBEDTLS_ERR_ASN1_UNEXPECTED_TAG) ) - mbedtls_snprintf( buf, buflen, "ASN1 - ASN1 tag was of an unexpected value" ); - if( use_ret == -(MBEDTLS_ERR_ASN1_INVALID_LENGTH) ) - mbedtls_snprintf( buf, buflen, "ASN1 - Error when trying to determine the length or invalid length" ); - if( use_ret == -(MBEDTLS_ERR_ASN1_LENGTH_MISMATCH) ) - mbedtls_snprintf( buf, buflen, "ASN1 - Actual length differs from expected length" ); - if( use_ret == -(MBEDTLS_ERR_ASN1_INVALID_DATA) ) - mbedtls_snprintf( buf, buflen, "ASN1 - Data is invalid. (not used)" ); - if( use_ret == -(MBEDTLS_ERR_ASN1_ALLOC_FAILED) ) - mbedtls_snprintf( buf, buflen, "ASN1 - Memory allocation failed" ); - if( use_ret == -(MBEDTLS_ERR_ASN1_BUF_TOO_SMALL) ) - mbedtls_snprintf( buf, buflen, "ASN1 - Buffer too small when writing ASN.1 data structure" ); + case -(MBEDTLS_ERR_ASN1_OUT_OF_DATA): + return( "ASN1 - Out of data when parsing an ASN1 data structure" ); + case -(MBEDTLS_ERR_ASN1_UNEXPECTED_TAG): + return( "ASN1 - ASN1 tag was of an unexpected value" ); + case -(MBEDTLS_ERR_ASN1_INVALID_LENGTH): + return( "ASN1 - Error when trying to determine the length or invalid length" ); + case -(MBEDTLS_ERR_ASN1_LENGTH_MISMATCH): + return( "ASN1 - Actual length differs from expected length" ); + case -(MBEDTLS_ERR_ASN1_INVALID_DATA): + return( "ASN1 - Data is invalid" ); + case -(MBEDTLS_ERR_ASN1_ALLOC_FAILED): + return( "ASN1 - Memory allocation failed" ); + case -(MBEDTLS_ERR_ASN1_BUF_TOO_SMALL): + return( "ASN1 - Buffer too small when writing ASN.1 data structure" ); #endif /* MBEDTLS_ASN1_PARSE_C */ #if defined(MBEDTLS_BASE64_C) - if( use_ret == -(MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL) ) - mbedtls_snprintf( buf, buflen, "BASE64 - Output buffer too small" ); - if( use_ret == -(MBEDTLS_ERR_BASE64_INVALID_CHARACTER) ) - mbedtls_snprintf( buf, buflen, "BASE64 - Invalid character in input" ); + case -(MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL): + return( "BASE64 - Output buffer too small" ); + case -(MBEDTLS_ERR_BASE64_INVALID_CHARACTER): + return( "BASE64 - Invalid character in input" ); #endif /* MBEDTLS_BASE64_C */ #if defined(MBEDTLS_BIGNUM_C) - if( use_ret == -(MBEDTLS_ERR_MPI_FILE_IO_ERROR) ) - mbedtls_snprintf( buf, buflen, "BIGNUM - An error occurred while reading from or writing to a file" ); - if( use_ret == -(MBEDTLS_ERR_MPI_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "BIGNUM - Bad input parameters to function" ); - if( use_ret == -(MBEDTLS_ERR_MPI_INVALID_CHARACTER) ) - mbedtls_snprintf( buf, buflen, "BIGNUM - There is an invalid character in the digit string" ); - if( use_ret == -(MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL) ) - mbedtls_snprintf( buf, buflen, "BIGNUM - The buffer is too small to write to" ); - if( use_ret == -(MBEDTLS_ERR_MPI_NEGATIVE_VALUE) ) - mbedtls_snprintf( buf, buflen, "BIGNUM - The input arguments are negative or result in illegal output" ); - if( use_ret == -(MBEDTLS_ERR_MPI_DIVISION_BY_ZERO) ) - mbedtls_snprintf( buf, buflen, "BIGNUM - The input argument for division is zero, which is not allowed" ); - if( use_ret == -(MBEDTLS_ERR_MPI_NOT_ACCEPTABLE) ) - mbedtls_snprintf( buf, buflen, "BIGNUM - The input arguments are not acceptable" ); - if( use_ret == -(MBEDTLS_ERR_MPI_ALLOC_FAILED) ) - mbedtls_snprintf( buf, buflen, "BIGNUM - Memory allocation failed" ); + case -(MBEDTLS_ERR_MPI_FILE_IO_ERROR): + return( "BIGNUM - An error occurred while reading from or writing to a file" ); + case -(MBEDTLS_ERR_MPI_BAD_INPUT_DATA): + return( "BIGNUM - Bad input parameters to function" ); + case -(MBEDTLS_ERR_MPI_INVALID_CHARACTER): + return( "BIGNUM - There is an invalid character in the digit string" ); + case -(MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL): + return( "BIGNUM - The buffer is too small to write to" ); + case -(MBEDTLS_ERR_MPI_NEGATIVE_VALUE): + return( "BIGNUM - The input arguments are negative or result in illegal output" ); + case -(MBEDTLS_ERR_MPI_DIVISION_BY_ZERO): + return( "BIGNUM - The input argument for division is zero, which is not allowed" ); + case -(MBEDTLS_ERR_MPI_NOT_ACCEPTABLE): + return( "BIGNUM - The input arguments are not acceptable" ); + case -(MBEDTLS_ERR_MPI_ALLOC_FAILED): + return( "BIGNUM - Memory allocation failed" ); #endif /* MBEDTLS_BIGNUM_C */ #if defined(MBEDTLS_BLOWFISH_C) - if( use_ret == -(MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "BLOWFISH - Bad input data" ); - if( use_ret == -(MBEDTLS_ERR_BLOWFISH_INVALID_INPUT_LENGTH) ) - mbedtls_snprintf( buf, buflen, "BLOWFISH - Invalid data input length" ); - if( use_ret == -(MBEDTLS_ERR_BLOWFISH_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "BLOWFISH - Blowfish hardware accelerator failed" ); + case -(MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA): + return( "BLOWFISH - Bad input data" ); + case -(MBEDTLS_ERR_BLOWFISH_INVALID_INPUT_LENGTH): + return( "BLOWFISH - Invalid data input length" ); + case -(MBEDTLS_ERR_BLOWFISH_HW_ACCEL_FAILED): + return( "BLOWFISH - Blowfish hardware accelerator failed" ); #endif /* MBEDTLS_BLOWFISH_C */ #if defined(MBEDTLS_CAMELLIA_C) - if( use_ret == -(MBEDTLS_ERR_CAMELLIA_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "CAMELLIA - Bad input data" ); - if( use_ret == -(MBEDTLS_ERR_CAMELLIA_INVALID_INPUT_LENGTH) ) - mbedtls_snprintf( buf, buflen, "CAMELLIA - Invalid data input length" ); - if( use_ret == -(MBEDTLS_ERR_CAMELLIA_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "CAMELLIA - Camellia hardware accelerator failed" ); + case -(MBEDTLS_ERR_CAMELLIA_BAD_INPUT_DATA): + return( "CAMELLIA - Bad input data" ); + case -(MBEDTLS_ERR_CAMELLIA_INVALID_INPUT_LENGTH): + return( "CAMELLIA - Invalid data input length" ); + case -(MBEDTLS_ERR_CAMELLIA_HW_ACCEL_FAILED): + return( "CAMELLIA - Camellia hardware accelerator failed" ); #endif /* MBEDTLS_CAMELLIA_C */ #if defined(MBEDTLS_CCM_C) - if( use_ret == -(MBEDTLS_ERR_CCM_BAD_INPUT) ) - mbedtls_snprintf( buf, buflen, "CCM - Bad input parameters to the function" ); - if( use_ret == -(MBEDTLS_ERR_CCM_AUTH_FAILED) ) - mbedtls_snprintf( buf, buflen, "CCM - Authenticated decryption failed" ); - if( use_ret == -(MBEDTLS_ERR_CCM_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "CCM - CCM hardware accelerator failed" ); + case -(MBEDTLS_ERR_CCM_BAD_INPUT): + return( "CCM - Bad input parameters to the function" ); + case -(MBEDTLS_ERR_CCM_AUTH_FAILED): + return( "CCM - Authenticated decryption failed" ); + case -(MBEDTLS_ERR_CCM_HW_ACCEL_FAILED): + return( "CCM - CCM hardware accelerator failed" ); #endif /* MBEDTLS_CCM_C */ #if defined(MBEDTLS_CHACHA20_C) - if( use_ret == -(MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "CHACHA20 - Invalid input parameter(s)" ); - if( use_ret == -(MBEDTLS_ERR_CHACHA20_FEATURE_UNAVAILABLE) ) - mbedtls_snprintf( buf, buflen, "CHACHA20 - Feature not available. For example, s part of the API is not implemented" ); - if( use_ret == -(MBEDTLS_ERR_CHACHA20_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "CHACHA20 - Chacha20 hardware accelerator failed" ); + case -(MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA): + return( "CHACHA20 - Invalid input parameter(s)" ); + case -(MBEDTLS_ERR_CHACHA20_FEATURE_UNAVAILABLE): + return( "CHACHA20 - Feature not available. For example, s part of the API is not implemented" ); + case -(MBEDTLS_ERR_CHACHA20_HW_ACCEL_FAILED): + return( "CHACHA20 - Chacha20 hardware accelerator failed" ); #endif /* MBEDTLS_CHACHA20_C */ #if defined(MBEDTLS_CHACHAPOLY_C) - if( use_ret == -(MBEDTLS_ERR_CHACHAPOLY_BAD_STATE) ) - mbedtls_snprintf( buf, buflen, "CHACHAPOLY - The requested operation is not permitted in the current state" ); - if( use_ret == -(MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED) ) - mbedtls_snprintf( buf, buflen, "CHACHAPOLY - Authenticated decryption failed: data was not authentic" ); + case -(MBEDTLS_ERR_CHACHAPOLY_BAD_STATE): + return( "CHACHAPOLY - The requested operation is not permitted in the current state" ); + case -(MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED): + return( "CHACHAPOLY - Authenticated decryption failed: data was not authentic" ); #endif /* MBEDTLS_CHACHAPOLY_C */ #if defined(MBEDTLS_CMAC_C) - if( use_ret == -(MBEDTLS_ERR_CMAC_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "CMAC - CMAC hardware accelerator failed" ); + case -(MBEDTLS_ERR_CMAC_HW_ACCEL_FAILED): + return( "CMAC - CMAC hardware accelerator failed" ); #endif /* MBEDTLS_CMAC_C */ #if defined(MBEDTLS_CTR_DRBG_C) - if( use_ret == -(MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED) ) - mbedtls_snprintf( buf, buflen, "CTR_DRBG - The entropy source failed" ); - if( use_ret == -(MBEDTLS_ERR_CTR_DRBG_REQUEST_TOO_BIG) ) - mbedtls_snprintf( buf, buflen, "CTR_DRBG - The requested random buffer length is too big" ); - if( use_ret == -(MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG) ) - mbedtls_snprintf( buf, buflen, "CTR_DRBG - The input (entropy + additional data) is too large" ); - if( use_ret == -(MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR) ) - mbedtls_snprintf( buf, buflen, "CTR_DRBG - Read or write error in file" ); + case -(MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED): + return( "CTR_DRBG - The entropy source failed" ); + case -(MBEDTLS_ERR_CTR_DRBG_REQUEST_TOO_BIG): + return( "CTR_DRBG - The requested random buffer length is too big" ); + case -(MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG): + return( "CTR_DRBG - The input (entropy + additional data) is too large" ); + case -(MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR): + return( "CTR_DRBG - Read or write error in file" ); #endif /* MBEDTLS_CTR_DRBG_C */ #if defined(MBEDTLS_DES_C) - if( use_ret == -(MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH) ) - mbedtls_snprintf( buf, buflen, "DES - The data input has an invalid length" ); - if( use_ret == -(MBEDTLS_ERR_DES_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "DES - DES hardware accelerator failed" ); + case -(MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH): + return( "DES - The data input has an invalid length" ); + case -(MBEDTLS_ERR_DES_HW_ACCEL_FAILED): + return( "DES - DES hardware accelerator failed" ); #endif /* MBEDTLS_DES_C */ #if defined(MBEDTLS_ENTROPY_C) - if( use_ret == -(MBEDTLS_ERR_ENTROPY_SOURCE_FAILED) ) - mbedtls_snprintf( buf, buflen, "ENTROPY - Critical entropy source failure" ); - if( use_ret == -(MBEDTLS_ERR_ENTROPY_MAX_SOURCES) ) - mbedtls_snprintf( buf, buflen, "ENTROPY - No more sources can be added" ); - if( use_ret == -(MBEDTLS_ERR_ENTROPY_NO_SOURCES_DEFINED) ) - mbedtls_snprintf( buf, buflen, "ENTROPY - No sources have been added to poll" ); - if( use_ret == -(MBEDTLS_ERR_ENTROPY_NO_STRONG_SOURCE) ) - mbedtls_snprintf( buf, buflen, "ENTROPY - No strong sources have been added to poll" ); - if( use_ret == -(MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR) ) - mbedtls_snprintf( buf, buflen, "ENTROPY - Read/write error in file" ); + case -(MBEDTLS_ERR_ENTROPY_SOURCE_FAILED): + return( "ENTROPY - Critical entropy source failure" ); + case -(MBEDTLS_ERR_ENTROPY_MAX_SOURCES): + return( "ENTROPY - No more sources can be added" ); + case -(MBEDTLS_ERR_ENTROPY_NO_SOURCES_DEFINED): + return( "ENTROPY - No sources have been added to poll" ); + case -(MBEDTLS_ERR_ENTROPY_NO_STRONG_SOURCE): + return( "ENTROPY - No strong sources have been added to poll" ); + case -(MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR): + return( "ENTROPY - Read/write error in file" ); #endif /* MBEDTLS_ENTROPY_C */ +#if defined(MBEDTLS_ERROR_C) + case -(MBEDTLS_ERR_ERROR_GENERIC_ERROR): + return( "ERROR - Generic error" ); + case -(MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED): + return( "ERROR - This is a bug in the library" ); +#endif /* MBEDTLS_ERROR_C */ + #if defined(MBEDTLS_GCM_C) - if( use_ret == -(MBEDTLS_ERR_GCM_AUTH_FAILED) ) - mbedtls_snprintf( buf, buflen, "GCM - Authenticated decryption failed" ); - if( use_ret == -(MBEDTLS_ERR_GCM_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "GCM - GCM hardware accelerator failed" ); - if( use_ret == -(MBEDTLS_ERR_GCM_BAD_INPUT) ) - mbedtls_snprintf( buf, buflen, "GCM - Bad input parameters to function" ); + case -(MBEDTLS_ERR_GCM_AUTH_FAILED): + return( "GCM - Authenticated decryption failed" ); + case -(MBEDTLS_ERR_GCM_HW_ACCEL_FAILED): + return( "GCM - GCM hardware accelerator failed" ); + case -(MBEDTLS_ERR_GCM_BAD_INPUT): + return( "GCM - Bad input parameters to function" ); #endif /* MBEDTLS_GCM_C */ #if defined(MBEDTLS_HKDF_C) - if( use_ret == -(MBEDTLS_ERR_HKDF_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "HKDF - Bad input parameters to function" ); + case -(MBEDTLS_ERR_HKDF_BAD_INPUT_DATA): + return( "HKDF - Bad input parameters to function" ); #endif /* MBEDTLS_HKDF_C */ #if defined(MBEDTLS_HMAC_DRBG_C) - if( use_ret == -(MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG) ) - mbedtls_snprintf( buf, buflen, "HMAC_DRBG - Too many random requested in single call" ); - if( use_ret == -(MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG) ) - mbedtls_snprintf( buf, buflen, "HMAC_DRBG - Input too large (Entropy + additional)" ); - if( use_ret == -(MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR) ) - mbedtls_snprintf( buf, buflen, "HMAC_DRBG - Read/write error in file" ); - if( use_ret == -(MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED) ) - mbedtls_snprintf( buf, buflen, "HMAC_DRBG - The entropy source failed" ); + case -(MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG): + return( "HMAC_DRBG - Too many random requested in single call" ); + case -(MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG): + return( "HMAC_DRBG - Input too large (Entropy + additional)" ); + case -(MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR): + return( "HMAC_DRBG - Read/write error in file" ); + case -(MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED): + return( "HMAC_DRBG - The entropy source failed" ); #endif /* MBEDTLS_HMAC_DRBG_C */ #if defined(MBEDTLS_MD2_C) - if( use_ret == -(MBEDTLS_ERR_MD2_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "MD2 - MD2 hardware accelerator failed" ); + case -(MBEDTLS_ERR_MD2_HW_ACCEL_FAILED): + return( "MD2 - MD2 hardware accelerator failed" ); #endif /* MBEDTLS_MD2_C */ #if defined(MBEDTLS_MD4_C) - if( use_ret == -(MBEDTLS_ERR_MD4_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "MD4 - MD4 hardware accelerator failed" ); + case -(MBEDTLS_ERR_MD4_HW_ACCEL_FAILED): + return( "MD4 - MD4 hardware accelerator failed" ); #endif /* MBEDTLS_MD4_C */ #if defined(MBEDTLS_MD5_C) - if( use_ret == -(MBEDTLS_ERR_MD5_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "MD5 - MD5 hardware accelerator failed" ); + case -(MBEDTLS_ERR_MD5_HW_ACCEL_FAILED): + return( "MD5 - MD5 hardware accelerator failed" ); #endif /* MBEDTLS_MD5_C */ #if defined(MBEDTLS_NET_C) - if( use_ret == -(MBEDTLS_ERR_NET_SOCKET_FAILED) ) - mbedtls_snprintf( buf, buflen, "NET - Failed to open a socket" ); - if( use_ret == -(MBEDTLS_ERR_NET_CONNECT_FAILED) ) - mbedtls_snprintf( buf, buflen, "NET - The connection to the given server / port failed" ); - if( use_ret == -(MBEDTLS_ERR_NET_BIND_FAILED) ) - mbedtls_snprintf( buf, buflen, "NET - Binding of the socket failed" ); - if( use_ret == -(MBEDTLS_ERR_NET_LISTEN_FAILED) ) - mbedtls_snprintf( buf, buflen, "NET - Could not listen on the socket" ); - if( use_ret == -(MBEDTLS_ERR_NET_ACCEPT_FAILED) ) - mbedtls_snprintf( buf, buflen, "NET - Could not accept the incoming connection" ); - if( use_ret == -(MBEDTLS_ERR_NET_RECV_FAILED) ) - mbedtls_snprintf( buf, buflen, "NET - Reading information from the socket failed" ); - if( use_ret == -(MBEDTLS_ERR_NET_SEND_FAILED) ) - mbedtls_snprintf( buf, buflen, "NET - Sending information through the socket failed" ); - if( use_ret == -(MBEDTLS_ERR_NET_CONN_RESET) ) - mbedtls_snprintf( buf, buflen, "NET - Connection was reset by peer" ); - if( use_ret == -(MBEDTLS_ERR_NET_UNKNOWN_HOST) ) - mbedtls_snprintf( buf, buflen, "NET - Failed to get an IP address for the given hostname" ); - if( use_ret == -(MBEDTLS_ERR_NET_BUFFER_TOO_SMALL) ) - mbedtls_snprintf( buf, buflen, "NET - Buffer is too small to hold the data" ); - if( use_ret == -(MBEDTLS_ERR_NET_INVALID_CONTEXT) ) - mbedtls_snprintf( buf, buflen, "NET - The context is invalid, eg because it was free()ed" ); - if( use_ret == -(MBEDTLS_ERR_NET_POLL_FAILED) ) - mbedtls_snprintf( buf, buflen, "NET - Polling the net context failed" ); - if( use_ret == -(MBEDTLS_ERR_NET_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "NET - Input invalid" ); + case -(MBEDTLS_ERR_NET_SOCKET_FAILED): + return( "NET - Failed to open a socket" ); + case -(MBEDTLS_ERR_NET_CONNECT_FAILED): + return( "NET - The connection to the given server / port failed" ); + case -(MBEDTLS_ERR_NET_BIND_FAILED): + return( "NET - Binding of the socket failed" ); + case -(MBEDTLS_ERR_NET_LISTEN_FAILED): + return( "NET - Could not listen on the socket" ); + case -(MBEDTLS_ERR_NET_ACCEPT_FAILED): + return( "NET - Could not accept the incoming connection" ); + case -(MBEDTLS_ERR_NET_RECV_FAILED): + return( "NET - Reading information from the socket failed" ); + case -(MBEDTLS_ERR_NET_SEND_FAILED): + return( "NET - Sending information through the socket failed" ); + case -(MBEDTLS_ERR_NET_CONN_RESET): + return( "NET - Connection was reset by peer" ); + case -(MBEDTLS_ERR_NET_UNKNOWN_HOST): + return( "NET - Failed to get an IP address for the given hostname" ); + case -(MBEDTLS_ERR_NET_BUFFER_TOO_SMALL): + return( "NET - Buffer is too small to hold the data" ); + case -(MBEDTLS_ERR_NET_INVALID_CONTEXT): + return( "NET - The context is invalid, eg because it was free()ed" ); + case -(MBEDTLS_ERR_NET_POLL_FAILED): + return( "NET - Polling the net context failed" ); + case -(MBEDTLS_ERR_NET_BAD_INPUT_DATA): + return( "NET - Input invalid" ); #endif /* MBEDTLS_NET_C */ #if defined(MBEDTLS_OID_C) - if( use_ret == -(MBEDTLS_ERR_OID_NOT_FOUND) ) - mbedtls_snprintf( buf, buflen, "OID - OID is not found" ); - if( use_ret == -(MBEDTLS_ERR_OID_BUF_TOO_SMALL) ) - mbedtls_snprintf( buf, buflen, "OID - output buffer is too small" ); + case -(MBEDTLS_ERR_OID_NOT_FOUND): + return( "OID - OID is not found" ); + case -(MBEDTLS_ERR_OID_BUF_TOO_SMALL): + return( "OID - output buffer is too small" ); #endif /* MBEDTLS_OID_C */ #if defined(MBEDTLS_PADLOCK_C) - if( use_ret == -(MBEDTLS_ERR_PADLOCK_DATA_MISALIGNED) ) - mbedtls_snprintf( buf, buflen, "PADLOCK - Input data should be aligned" ); + case -(MBEDTLS_ERR_PADLOCK_DATA_MISALIGNED): + return( "PADLOCK - Input data should be aligned" ); #endif /* MBEDTLS_PADLOCK_C */ #if defined(MBEDTLS_PLATFORM_C) - if( use_ret == -(MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "PLATFORM - Hardware accelerator failed" ); - if( use_ret == -(MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED) ) - mbedtls_snprintf( buf, buflen, "PLATFORM - The requested feature is not supported by the platform" ); + case -(MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED): + return( "PLATFORM - Hardware accelerator failed" ); + case -(MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED): + return( "PLATFORM - The requested feature is not supported by the platform" ); #endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_POLY1305_C) - if( use_ret == -(MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "POLY1305 - Invalid input parameter(s)" ); - if( use_ret == -(MBEDTLS_ERR_POLY1305_FEATURE_UNAVAILABLE) ) - mbedtls_snprintf( buf, buflen, "POLY1305 - Feature not available. For example, s part of the API is not implemented" ); - if( use_ret == -(MBEDTLS_ERR_POLY1305_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "POLY1305 - Poly1305 hardware accelerator failed" ); + case -(MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA): + return( "POLY1305 - Invalid input parameter(s)" ); + case -(MBEDTLS_ERR_POLY1305_FEATURE_UNAVAILABLE): + return( "POLY1305 - Feature not available. For example, s part of the API is not implemented" ); + case -(MBEDTLS_ERR_POLY1305_HW_ACCEL_FAILED): + return( "POLY1305 - Poly1305 hardware accelerator failed" ); #endif /* MBEDTLS_POLY1305_C */ #if defined(MBEDTLS_RIPEMD160_C) - if( use_ret == -(MBEDTLS_ERR_RIPEMD160_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "RIPEMD160 - RIPEMD160 hardware accelerator failed" ); + case -(MBEDTLS_ERR_RIPEMD160_HW_ACCEL_FAILED): + return( "RIPEMD160 - RIPEMD160 hardware accelerator failed" ); #endif /* MBEDTLS_RIPEMD160_C */ #if defined(MBEDTLS_SHA1_C) - if( use_ret == -(MBEDTLS_ERR_SHA1_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "SHA1 - SHA-1 hardware accelerator failed" ); - if( use_ret == -(MBEDTLS_ERR_SHA1_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "SHA1 - SHA-1 input data was malformed" ); + case -(MBEDTLS_ERR_SHA1_HW_ACCEL_FAILED): + return( "SHA1 - SHA-1 hardware accelerator failed" ); + case -(MBEDTLS_ERR_SHA1_BAD_INPUT_DATA): + return( "SHA1 - SHA-1 input data was malformed" ); #endif /* MBEDTLS_SHA1_C */ #if defined(MBEDTLS_SHA256_C) - if( use_ret == -(MBEDTLS_ERR_SHA256_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "SHA256 - SHA-256 hardware accelerator failed" ); - if( use_ret == -(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "SHA256 - SHA-256 input data was malformed" ); + case -(MBEDTLS_ERR_SHA256_HW_ACCEL_FAILED): + return( "SHA256 - SHA-256 hardware accelerator failed" ); + case -(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA): + return( "SHA256 - SHA-256 input data was malformed" ); #endif /* MBEDTLS_SHA256_C */ #if defined(MBEDTLS_SHA512_C) - if( use_ret == -(MBEDTLS_ERR_SHA512_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "SHA512 - SHA-512 hardware accelerator failed" ); - if( use_ret == -(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "SHA512 - SHA-512 input data was malformed" ); + case -(MBEDTLS_ERR_SHA512_HW_ACCEL_FAILED): + return( "SHA512 - SHA-512 hardware accelerator failed" ); + case -(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA): + return( "SHA512 - SHA-512 input data was malformed" ); #endif /* MBEDTLS_SHA512_C */ #if defined(MBEDTLS_THREADING_C) - if( use_ret == -(MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE) ) - mbedtls_snprintf( buf, buflen, "THREADING - The selected feature is not available" ); - if( use_ret == -(MBEDTLS_ERR_THREADING_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "THREADING - Bad input parameters to function" ); - if( use_ret == -(MBEDTLS_ERR_THREADING_MUTEX_ERROR) ) - mbedtls_snprintf( buf, buflen, "THREADING - Locking / unlocking / free failed with error code" ); + case -(MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE): + return( "THREADING - The selected feature is not available" ); + case -(MBEDTLS_ERR_THREADING_BAD_INPUT_DATA): + return( "THREADING - Bad input parameters to function" ); + case -(MBEDTLS_ERR_THREADING_MUTEX_ERROR): + return( "THREADING - Locking / unlocking / free failed with error code" ); #endif /* MBEDTLS_THREADING_C */ #if defined(MBEDTLS_XTEA_C) - if( use_ret == -(MBEDTLS_ERR_XTEA_INVALID_INPUT_LENGTH) ) - mbedtls_snprintf( buf, buflen, "XTEA - The data input has an invalid length" ); - if( use_ret == -(MBEDTLS_ERR_XTEA_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "XTEA - XTEA hardware accelerator failed" ); + case -(MBEDTLS_ERR_XTEA_INVALID_INPUT_LENGTH): + return( "XTEA - The data input has an invalid length" ); + case -(MBEDTLS_ERR_XTEA_HW_ACCEL_FAILED): + return( "XTEA - XTEA hardware accelerator failed" ); #endif /* MBEDTLS_XTEA_C */ - // END generated code + /* End Auto-Generated Code. */ + + default: + break; + } + + return( NULL ); +} + +void mbedtls_strerror( int ret, char *buf, size_t buflen ) +{ + size_t len; + int use_ret; + const char * high_level_error_description = NULL; + const char * low_level_error_description = NULL; - if( strlen( buf ) != 0 ) + if( buflen == 0 ) return; - mbedtls_snprintf( buf, buflen, "UNKNOWN ERROR CODE (%04X)", use_ret ); + memset( buf, 0x00, buflen ); + + if( ret < 0 ) + ret = -ret; + + if( ret & 0xFF80 ) + { + use_ret = ret & 0xFF80; + + // Translate high level error code. + high_level_error_description = mbedtls_high_level_strerr( ret ); + + if( high_level_error_description == NULL ) + mbedtls_snprintf( buf, buflen, "UNKNOWN ERROR CODE (%04X)", (unsigned int) use_ret ); + else + mbedtls_snprintf( buf, buflen, "%s", high_level_error_description ); + +#if defined(MBEDTLS_SSL_TLS_C) + // Early return in case of a fatal error - do not try to translate low + // level code. + if(use_ret == -(MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE)) + return; +#endif /* MBEDTLS_SSL_TLS_C */ + } + + use_ret = ret & ~0xFF80; + + if( use_ret == 0 ) + return; + + // If high level code is present, make a concatenation between both + // error strings. + // + len = strlen( buf ); + + if( len > 0 ) + { + if( buflen - len < 5 ) + return; + + mbedtls_snprintf( buf + len, buflen - len, " : " ); + + buf += len + 3; + buflen -= len + 3; + } + + // Translate low level error code. + low_level_error_description = mbedtls_low_level_strerr( ret ); + + if( low_level_error_description == NULL ) + mbedtls_snprintf( buf, buflen, "UNKNOWN ERROR CODE (%04X)", (unsigned int) use_ret ); + else + mbedtls_snprintf( buf, buflen, "%s", low_level_error_description ); } #else /* MBEDTLS_ERROR_C */ -#if defined(MBEDTLS_ERROR_STRERROR_DUMMY) - /* * Provide an non-function in case MBEDTLS_ERROR_C is not defined */ @@ -911,6 +971,10 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) buf[0] = '\0'; } -#endif /* MBEDTLS_ERROR_STRERROR_DUMMY */ - #endif /* MBEDTLS_ERROR_C */ + +#if defined(MBEDTLS_TEST_HOOKS) +void (*mbedtls_test_hook_error_add)( int, int, const char *, int ); +#endif + +#endif /* MBEDTLS_ERROR_C || MBEDTLS_ERROR_STRERROR_DUMMY */ diff --git a/Externals/mbedtls/library/gcm.c b/Externals/mbedtls/library/gcm.c index 675926a518b5..43a5e1bec68d 100644 --- a/Externals/mbedtls/library/gcm.c +++ b/Externals/mbedtls/library/gcm.c @@ -1,7 +1,7 @@ /* * NIST SP800-38D compliant GCM implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -29,16 +27,13 @@ * [MGV] 4.1, pp. 12-13, to enhance speed without using too much memory. */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_GCM_C) #include "mbedtls/gcm.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -63,29 +58,6 @@ #define GCM_VALIDATE( cond ) \ MBEDTLS_INTERNAL_VALIDATE( cond ) -/* - * 32-bit integer manipulation macros (big endian) - */ -#ifndef GET_UINT32_BE -#define GET_UINT32_BE(n,b,i) \ -{ \ - (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ - | ( (uint32_t) (b)[(i) + 1] << 16 ) \ - | ( (uint32_t) (b)[(i) + 2] << 8 ) \ - | ( (uint32_t) (b)[(i) + 3] ); \ -} -#endif - -#ifndef PUT_UINT32_BE -#define PUT_UINT32_BE(n,b,i) \ -{ \ - (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ - (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ - (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \ - (b)[(i) + 3] = (unsigned char) ( (n) ); \ -} -#endif - /* * Initialize a context */ @@ -116,12 +88,12 @@ static int gcm_gen_table( mbedtls_gcm_context *ctx ) return( ret ); /* pack h as two 64-bits ints, big-endian */ - GET_UINT32_BE( hi, h, 0 ); - GET_UINT32_BE( lo, h, 4 ); + hi = MBEDTLS_GET_UINT32_BE( h, 0 ); + lo = MBEDTLS_GET_UINT32_BE( h, 4 ); vh = (uint64_t) hi << 32 | lo; - GET_UINT32_BE( hi, h, 8 ); - GET_UINT32_BE( lo, h, 12 ); + hi = MBEDTLS_GET_UINT32_BE( h, 8 ); + lo = MBEDTLS_GET_UINT32_BE( h, 12 ); vl = (uint64_t) hi << 32 | lo; /* 8 = 1000 corresponds to 1 in GF(2^128) */ @@ -168,14 +140,15 @@ int mbedtls_gcm_setkey( mbedtls_gcm_context *ctx, const unsigned char *key, unsigned int keybits ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const mbedtls_cipher_info_t *cipher_info; GCM_VALIDATE_RET( ctx != NULL ); GCM_VALIDATE_RET( key != NULL ); GCM_VALIDATE_RET( keybits == 128 || keybits == 192 || keybits == 256 ); - cipher_info = mbedtls_cipher_info_from_values( cipher, keybits, MBEDTLS_MODE_ECB ); + cipher_info = mbedtls_cipher_info_from_values( cipher, keybits, + MBEDTLS_MODE_ECB ); if( cipher_info == NULL ) return( MBEDTLS_ERR_GCM_BAD_INPUT ); @@ -227,10 +200,10 @@ static void gcm_mult( mbedtls_gcm_context *ctx, const unsigned char x[16], if( mbedtls_aesni_has_support( MBEDTLS_AESNI_CLMUL ) ) { unsigned char h[16]; - PUT_UINT32_BE( ctx->HH[8] >> 32, h, 0 ); - PUT_UINT32_BE( ctx->HH[8], h, 4 ); - PUT_UINT32_BE( ctx->HL[8] >> 32, h, 8 ); - PUT_UINT32_BE( ctx->HL[8], h, 12 ); + MBEDTLS_PUT_UINT32_BE( ctx->HH[8] >> 32, h, 0 ); + MBEDTLS_PUT_UINT32_BE( ctx->HH[8], h, 4 ); + MBEDTLS_PUT_UINT32_BE( ctx->HL[8] >> 32, h, 8 ); + MBEDTLS_PUT_UINT32_BE( ctx->HL[8], h, 12 ); mbedtls_aesni_gcm_mult( output, x, h ); return; @@ -245,7 +218,7 @@ static void gcm_mult( mbedtls_gcm_context *ctx, const unsigned char x[16], for( i = 15; i >= 0; i-- ) { lo = x[i] & 0xf; - hi = x[i] >> 4; + hi = ( x[i] >> 4 ) & 0xf; if( i != 15 ) { @@ -266,10 +239,10 @@ static void gcm_mult( mbedtls_gcm_context *ctx, const unsigned char x[16], zl ^= ctx->HL[hi]; } - PUT_UINT32_BE( zh >> 32, output, 0 ); - PUT_UINT32_BE( zh, output, 4 ); - PUT_UINT32_BE( zl >> 32, output, 8 ); - PUT_UINT32_BE( zl, output, 12 ); + MBEDTLS_PUT_UINT32_BE( zh >> 32, output, 0 ); + MBEDTLS_PUT_UINT32_BE( zh, output, 4 ); + MBEDTLS_PUT_UINT32_BE( zl >> 32, output, 8 ); + MBEDTLS_PUT_UINT32_BE( zl, output, 12 ); } int mbedtls_gcm_starts( mbedtls_gcm_context *ctx, @@ -279,11 +252,12 @@ int mbedtls_gcm_starts( mbedtls_gcm_context *ctx, const unsigned char *add, size_t add_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char work_buf[16]; size_t i; const unsigned char *p; size_t use_len, olen = 0; + uint64_t iv_bits; GCM_VALIDATE_RET( ctx != NULL ); GCM_VALIDATE_RET( iv != NULL ); @@ -313,7 +287,8 @@ int mbedtls_gcm_starts( mbedtls_gcm_context *ctx, else { memset( work_buf, 0x00, 16 ); - PUT_UINT32_BE( iv_len * 8, work_buf, 12 ); + iv_bits = (uint64_t)iv_len * 8; + MBEDTLS_PUT_UINT64_BE( iv_bits, work_buf, 8 ); p = iv; while( iv_len > 0 ) @@ -335,8 +310,8 @@ int mbedtls_gcm_starts( mbedtls_gcm_context *ctx, gcm_mult( ctx, ctx->y, ctx->y ); } - if( ( ret = mbedtls_cipher_update( &ctx->cipher_ctx, ctx->y, 16, ctx->base_ectr, - &olen ) ) != 0 ) + if( ( ret = mbedtls_cipher_update( &ctx->cipher_ctx, ctx->y, 16, + ctx->base_ectr, &olen ) ) != 0 ) { return( ret ); } @@ -364,7 +339,7 @@ int mbedtls_gcm_update( mbedtls_gcm_context *ctx, const unsigned char *input, unsigned char *output ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char ectr[16]; size_t i; const unsigned char *p; @@ -446,10 +421,10 @@ int mbedtls_gcm_finish( mbedtls_gcm_context *ctx, { memset( work_buf, 0x00, 16 ); - PUT_UINT32_BE( ( orig_add_len >> 32 ), work_buf, 0 ); - PUT_UINT32_BE( ( orig_add_len ), work_buf, 4 ); - PUT_UINT32_BE( ( orig_len >> 32 ), work_buf, 8 ); - PUT_UINT32_BE( ( orig_len ), work_buf, 12 ); + MBEDTLS_PUT_UINT32_BE( ( orig_add_len >> 32 ), work_buf, 0 ); + MBEDTLS_PUT_UINT32_BE( ( orig_add_len ), work_buf, 4 ); + MBEDTLS_PUT_UINT32_BE( ( orig_len >> 32 ), work_buf, 8 ); + MBEDTLS_PUT_UINT32_BE( ( orig_len ), work_buf, 12 ); for( i = 0; i < 16; i++ ) ctx->buf[i] ^= work_buf[i]; @@ -475,7 +450,7 @@ int mbedtls_gcm_crypt_and_tag( mbedtls_gcm_context *ctx, size_t tag_len, unsigned char *tag ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; GCM_VALIDATE_RET( ctx != NULL ); GCM_VALIDATE_RET( iv != NULL ); @@ -507,7 +482,7 @@ int mbedtls_gcm_auth_decrypt( mbedtls_gcm_context *ctx, const unsigned char *input, unsigned char *output ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char check_tag[16]; size_t i; int diff; @@ -557,10 +532,10 @@ void mbedtls_gcm_free( mbedtls_gcm_context *ctx ) */ #define MAX_TESTS 6 -static const int key_index[MAX_TESTS] = +static const int key_index_test_data[MAX_TESTS] = { 0, 0, 1, 1, 1, 1 }; -static const unsigned char key[MAX_TESTS][32] = +static const unsigned char key_test_data[MAX_TESTS][32] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -572,13 +547,13 @@ static const unsigned char key[MAX_TESTS][32] = 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 }, }; -static const size_t iv_len[MAX_TESTS] = +static const size_t iv_len_test_data[MAX_TESTS] = { 12, 12, 12, 12, 8, 60 }; -static const int iv_index[MAX_TESTS] = +static const int iv_index_test_data[MAX_TESTS] = { 0, 0, 1, 1, 1, 2 }; -static const unsigned char iv[MAX_TESTS][64] = +static const unsigned char iv_test_data[MAX_TESTS][64] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, @@ -594,13 +569,13 @@ static const unsigned char iv[MAX_TESTS][64] = 0xa6, 0x37, 0xb3, 0x9b }, }; -static const size_t add_len[MAX_TESTS] = +static const size_t add_len_test_data[MAX_TESTS] = { 0, 0, 0, 20, 20, 20 }; -static const int add_index[MAX_TESTS] = +static const int add_index_test_data[MAX_TESTS] = { 0, 0, 0, 1, 1, 1 }; -static const unsigned char additional[MAX_TESTS][64] = +static const unsigned char additional_test_data[MAX_TESTS][64] = { { 0x00 }, { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, @@ -608,13 +583,13 @@ static const unsigned char additional[MAX_TESTS][64] = 0xab, 0xad, 0xda, 0xd2 }, }; -static const size_t pt_len[MAX_TESTS] = +static const size_t pt_len_test_data[MAX_TESTS] = { 0, 16, 64, 60, 60, 60 }; -static const int pt_index[MAX_TESTS] = +static const int pt_index_test_data[MAX_TESTS] = { 0, 0, 1, 1, 1, 1 }; -static const unsigned char pt[MAX_TESTS][64] = +static const unsigned char pt_test_data[MAX_TESTS][64] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, @@ -628,7 +603,7 @@ static const unsigned char pt[MAX_TESTS][64] = 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55 }, }; -static const unsigned char ct[MAX_TESTS * 3][64] = +static const unsigned char ct_test_data[MAX_TESTS * 3][64] = { { 0x00 }, { 0x03, 0x88, 0xda, 0xce, 0x60, 0xb6, 0xa3, 0x92, @@ -737,7 +712,7 @@ static const unsigned char ct[MAX_TESTS * 3][64] = 0x44, 0xae, 0x7e, 0x3f }, }; -static const unsigned char tag[MAX_TESTS * 3][16] = +static const unsigned char tag_test_data[MAX_TESTS * 3][16] = { { 0x58, 0xe2, 0xfc, 0xce, 0xfa, 0x7e, 0x30, 0x61, 0x36, 0x7f, 0x1d, 0x57, 0xa4, 0xe7, 0x45, 0x5a }, @@ -797,7 +772,8 @@ int mbedtls_gcm_self_test( int verbose ) mbedtls_printf( " AES-GCM-%3d #%d (%s): ", key_len, i, "enc" ); - ret = mbedtls_gcm_setkey( &ctx, cipher, key[key_index[i]], + ret = mbedtls_gcm_setkey( &ctx, cipher, + key_test_data[key_index_test_data[i]], key_len ); /* * AES-192 is an optional feature that may be unavailable when @@ -815,15 +791,28 @@ int mbedtls_gcm_self_test( int verbose ) } ret = mbedtls_gcm_crypt_and_tag( &ctx, MBEDTLS_GCM_ENCRYPT, - pt_len[i], - iv[iv_index[i]], iv_len[i], - additional[add_index[i]], add_len[i], - pt[pt_index[i]], buf, 16, tag_buf ); + pt_len_test_data[i], + iv_test_data[iv_index_test_data[i]], + iv_len_test_data[i], + additional_test_data[add_index_test_data[i]], + add_len_test_data[i], + pt_test_data[pt_index_test_data[i]], + buf, 16, tag_buf ); +#if defined(MBEDTLS_GCM_ALT) + /* Allow alternative implementations to only support 12-byte nonces. */ + if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED && + iv_len_test_data[i] != 12 ) + { + mbedtls_printf( "skipped\n" ); + break; + } +#endif /* defined(MBEDTLS_GCM_ALT) */ if( ret != 0 ) goto exit; - if ( memcmp( buf, ct[j * 6 + i], pt_len[i] ) != 0 || - memcmp( tag_buf, tag[j * 6 + i], 16 ) != 0 ) + if ( memcmp( buf, ct_test_data[j * 6 + i], + pt_len_test_data[i] ) != 0 || + memcmp( tag_buf, tag_test_data[j * 6 + i], 16 ) != 0 ) { ret = 1; goto exit; @@ -840,22 +829,26 @@ int mbedtls_gcm_self_test( int verbose ) mbedtls_printf( " AES-GCM-%3d #%d (%s): ", key_len, i, "dec" ); - ret = mbedtls_gcm_setkey( &ctx, cipher, key[key_index[i]], + ret = mbedtls_gcm_setkey( &ctx, cipher, + key_test_data[key_index_test_data[i]], key_len ); if( ret != 0 ) goto exit; ret = mbedtls_gcm_crypt_and_tag( &ctx, MBEDTLS_GCM_DECRYPT, - pt_len[i], - iv[iv_index[i]], iv_len[i], - additional[add_index[i]], add_len[i], - ct[j * 6 + i], buf, 16, tag_buf ); + pt_len_test_data[i], + iv_test_data[iv_index_test_data[i]], + iv_len_test_data[i], + additional_test_data[add_index_test_data[i]], + add_len_test_data[i], + ct_test_data[j * 6 + i], buf, 16, tag_buf ); if( ret != 0 ) goto exit; - if( memcmp( buf, pt[pt_index[i]], pt_len[i] ) != 0 || - memcmp( tag_buf, tag[j * 6 + i], 16 ) != 0 ) + if( memcmp( buf, pt_test_data[pt_index_test_data[i]], + pt_len_test_data[i] ) != 0 || + memcmp( tag_buf, tag_test_data[j * 6 + i], 16 ) != 0 ) { ret = 1; goto exit; @@ -872,32 +865,40 @@ int mbedtls_gcm_self_test( int verbose ) mbedtls_printf( " AES-GCM-%3d #%d split (%s): ", key_len, i, "enc" ); - ret = mbedtls_gcm_setkey( &ctx, cipher, key[key_index[i]], + ret = mbedtls_gcm_setkey( &ctx, cipher, + key_test_data[key_index_test_data[i]], key_len ); if( ret != 0 ) goto exit; ret = mbedtls_gcm_starts( &ctx, MBEDTLS_GCM_ENCRYPT, - iv[iv_index[i]], iv_len[i], - additional[add_index[i]], add_len[i] ); + iv_test_data[iv_index_test_data[i]], + iv_len_test_data[i], + additional_test_data[add_index_test_data[i]], + add_len_test_data[i] ); if( ret != 0 ) goto exit; - if( pt_len[i] > 32 ) + if( pt_len_test_data[i] > 32 ) { - size_t rest_len = pt_len[i] - 32; - ret = mbedtls_gcm_update( &ctx, 32, pt[pt_index[i]], buf ); + size_t rest_len = pt_len_test_data[i] - 32; + ret = mbedtls_gcm_update( &ctx, 32, + pt_test_data[pt_index_test_data[i]], + buf ); if( ret != 0 ) goto exit; - ret = mbedtls_gcm_update( &ctx, rest_len, pt[pt_index[i]] + 32, - buf + 32 ); + ret = mbedtls_gcm_update( &ctx, rest_len, + pt_test_data[pt_index_test_data[i]] + 32, + buf + 32 ); if( ret != 0 ) goto exit; } else { - ret = mbedtls_gcm_update( &ctx, pt_len[i], pt[pt_index[i]], buf ); + ret = mbedtls_gcm_update( &ctx, pt_len_test_data[i], + pt_test_data[pt_index_test_data[i]], + buf ); if( ret != 0 ) goto exit; } @@ -906,8 +907,9 @@ int mbedtls_gcm_self_test( int verbose ) if( ret != 0 ) goto exit; - if( memcmp( buf, ct[j * 6 + i], pt_len[i] ) != 0 || - memcmp( tag_buf, tag[j * 6 + i], 16 ) != 0 ) + if( memcmp( buf, ct_test_data[j * 6 + i], + pt_len_test_data[i] ) != 0 || + memcmp( tag_buf, tag_test_data[j * 6 + i], 16 ) != 0 ) { ret = 1; goto exit; @@ -924,32 +926,38 @@ int mbedtls_gcm_self_test( int verbose ) mbedtls_printf( " AES-GCM-%3d #%d split (%s): ", key_len, i, "dec" ); - ret = mbedtls_gcm_setkey( &ctx, cipher, key[key_index[i]], + ret = mbedtls_gcm_setkey( &ctx, cipher, + key_test_data[key_index_test_data[i]], key_len ); if( ret != 0 ) goto exit; ret = mbedtls_gcm_starts( &ctx, MBEDTLS_GCM_DECRYPT, - iv[iv_index[i]], iv_len[i], - additional[add_index[i]], add_len[i] ); + iv_test_data[iv_index_test_data[i]], + iv_len_test_data[i], + additional_test_data[add_index_test_data[i]], + add_len_test_data[i] ); if( ret != 0 ) goto exit; - if( pt_len[i] > 32 ) + if( pt_len_test_data[i] > 32 ) { - size_t rest_len = pt_len[i] - 32; - ret = mbedtls_gcm_update( &ctx, 32, ct[j * 6 + i], buf ); + size_t rest_len = pt_len_test_data[i] - 32; + ret = mbedtls_gcm_update( &ctx, 32, ct_test_data[j * 6 + i], + buf ); if( ret != 0 ) goto exit; - ret = mbedtls_gcm_update( &ctx, rest_len, ct[j * 6 + i] + 32, + ret = mbedtls_gcm_update( &ctx, rest_len, + ct_test_data[j * 6 + i] + 32, buf + 32 ); if( ret != 0 ) goto exit; } else { - ret = mbedtls_gcm_update( &ctx, pt_len[i], ct[j * 6 + i], + ret = mbedtls_gcm_update( &ctx, pt_len_test_data[i], + ct_test_data[j * 6 + i], buf ); if( ret != 0 ) goto exit; @@ -959,8 +967,9 @@ int mbedtls_gcm_self_test( int verbose ) if( ret != 0 ) goto exit; - if( memcmp( buf, pt[pt_index[i]], pt_len[i] ) != 0 || - memcmp( tag_buf, tag[j * 6 + i], 16 ) != 0 ) + if( memcmp( buf, pt_test_data[pt_index_test_data[i]], + pt_len_test_data[i] ) != 0 || + memcmp( tag_buf, tag_test_data[j * 6 + i], 16 ) != 0 ) { ret = 1; goto exit; diff --git a/Externals/mbedtls/library/havege.c b/Externals/mbedtls/library/havege.c index 4dcac0287551..2a360a150ce0 100644 --- a/Externals/mbedtls/library/havege.c +++ b/Externals/mbedtls/library/havege.c @@ -1,7 +1,7 @@ /** * \brief HAVEGE: HArdware Volatile Entropy Gathering and Expansion * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The HAVEGE RNG was designed by Andre Seznec in 2002. @@ -26,11 +24,7 @@ * Contact: seznec(at)irisa_dot_fr - orocheco(at)irisa_dot_fr */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_HAVEGE_C) @@ -38,6 +32,7 @@ #include "mbedtls/timing.h" #include "mbedtls/platform_util.h" +#include #include /* ------------------------------------------------------------------------ @@ -54,7 +49,7 @@ * ------------------------------------------------------------------------ */ -#define SWAP(X,Y) { int *T = X; X = Y; Y = T; } +#define SWAP(X,Y) { uint32_t *T = (X); (X) = (Y); (Y) = T; } #define TST1_ENTER if( PTEST & 1 ) { PTEST ^= 3; PTEST >>= 1; #define TST2_ENTER if( PTEST & 1 ) { PTEST ^= 3; PTEST >>= 1; @@ -77,7 +72,7 @@ PTX = (PT1 >> 18) & 7; \ PT1 &= 0x1FFF; \ PT2 &= 0x1FFF; \ - CLK = (int) mbedtls_timing_hardclock(); \ + CLK = (uint32_t) mbedtls_timing_hardclock(); \ \ i = 0; \ A = &WALK[PT1 ]; RES[i++] ^= *A; \ @@ -100,7 +95,7 @@ \ IN = (*A >> (5)) ^ (*A << (27)) ^ CLK; \ *A = (*B >> (6)) ^ (*B << (26)) ^ CLK; \ - *B = IN; CLK = (int) mbedtls_timing_hardclock(); \ + *B = IN; CLK = (uint32_t) mbedtls_timing_hardclock(); \ *C = (*C >> (7)) ^ (*C << (25)) ^ CLK; \ *D = (*D >> (8)) ^ (*D << (24)) ^ CLK; \ \ @@ -158,10 +153,11 @@ */ static void havege_fill( mbedtls_havege_state *hs ) { - int i, n = 0; - int U1, U2, *A, *B, *C, *D; - int PT1, PT2, *WALK, RES[16]; - int PTX, PTY, CLK, PTEST, IN; + size_t n = 0; + size_t i; + uint32_t U1, U2, *A, *B, *C, *D; + uint32_t PT1, PT2, *WALK, RES[16]; + uint32_t PTX, PTY, CLK, PTEST, IN; WALK = hs->WALK; PT1 = hs->PT1; @@ -212,7 +208,7 @@ void mbedtls_havege_free( mbedtls_havege_state *hs ) */ int mbedtls_havege_random( void *p_rng, unsigned char *buf, size_t len ) { - int val; + uint32_t val; size_t use_len; mbedtls_havege_state *hs = (mbedtls_havege_state *) p_rng; unsigned char *p = buf; @@ -220,8 +216,8 @@ int mbedtls_havege_random( void *p_rng, unsigned char *buf, size_t len ) while( len > 0 ) { use_len = len; - if( use_len > sizeof(int) ) - use_len = sizeof(int); + if( use_len > sizeof( val ) ) + use_len = sizeof( val ); if( hs->offset[1] >= MBEDTLS_HAVEGE_COLLECT_SIZE ) havege_fill( hs ); diff --git a/Externals/mbedtls/library/hkdf.c b/Externals/mbedtls/library/hkdf.c index 82d8a429f4f2..5013729d2a65 100644 --- a/Externals/mbedtls/library/hkdf.c +++ b/Externals/mbedtls/library/hkdf.c @@ -1,7 +1,7 @@ /* * HKDF implementation -- RFC 5869 * - * Copyright (C) 2016-2018, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,27 +15,22 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_HKDF_C) #include #include "mbedtls/hkdf.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" int mbedtls_hkdf( const mbedtls_md_info_t *md, const unsigned char *salt, size_t salt_len, const unsigned char *ikm, size_t ikm_len, const unsigned char *info, size_t info_len, unsigned char *okm, size_t okm_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char prk[MBEDTLS_MD_MAX_SIZE]; ret = mbedtls_hkdf_extract( md, salt, salt_len, ikm, ikm_len, prk ); @@ -114,7 +109,7 @@ int mbedtls_hkdf_expand( const mbedtls_md_info_t *md, const unsigned char *prk, n = okm_len / hash_len; - if( (okm_len % hash_len) != 0 ) + if( okm_len % hash_len != 0 ) { n++; } @@ -130,11 +125,13 @@ int mbedtls_hkdf_expand( const mbedtls_md_info_t *md, const unsigned char *prk, mbedtls_md_init( &ctx ); - if( (ret = mbedtls_md_setup( &ctx, md, 1) ) != 0 ) + if( ( ret = mbedtls_md_setup( &ctx, md, 1 ) ) != 0 ) { goto exit; } + memset( t, 0, hash_len ); + /* * Compute T = T(1) | T(2) | T(3) | ... | T(N) * Where T(N) is defined in RFC 5869 Section 2.3 diff --git a/Externals/mbedtls/library/hmac_drbg.c b/Externals/mbedtls/library/hmac_drbg.c index c50330e7d8b9..de9706885cab 100644 --- a/Externals/mbedtls/library/hmac_drbg.c +++ b/Externals/mbedtls/library/hmac_drbg.c @@ -1,7 +1,7 @@ /* * HMAC_DRBG implementation (NIST SP 800-90) * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -25,16 +23,13 @@ * References below are based on rev. 1 (January 2012). */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_HMAC_DRBG_C) #include "mbedtls/hmac_drbg.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -58,9 +53,7 @@ void mbedtls_hmac_drbg_init( mbedtls_hmac_drbg_context *ctx ) { memset( ctx, 0, sizeof( mbedtls_hmac_drbg_context ) ); -#if defined(MBEDTLS_THREADING_C) - mbedtls_mutex_init( &ctx->mutex ); -#endif + ctx->reseed_interval = MBEDTLS_HMAC_DRBG_RESEED_INTERVAL; } /* @@ -74,7 +67,7 @@ int mbedtls_hmac_drbg_update_ret( mbedtls_hmac_drbg_context *ctx, unsigned char rounds = ( additional != NULL && add_len != 0 ) ? 2 : 1; unsigned char sep[1]; unsigned char K[MBEDTLS_MD_MAX_SIZE]; - int ret; + int ret = MBEDTLS_ERR_MD_BAD_INPUT_DATA; for( sep[0] = 0; sep[0] < rounds; sep[0]++ ) { @@ -127,11 +120,15 @@ int mbedtls_hmac_drbg_seed_buf( mbedtls_hmac_drbg_context *ctx, const mbedtls_md_info_t * md_info, const unsigned char *data, size_t data_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ( ret = mbedtls_md_setup( &ctx->md_ctx, md_info, 1 ) ) != 0 ) return( ret ); +#if defined(MBEDTLS_THREADING_C) + mbedtls_mutex_init( &ctx->mutex ); +#endif + /* * Set initial working state. * Use the V memory location, which is currently all 0, to initialize the @@ -149,20 +146,32 @@ int mbedtls_hmac_drbg_seed_buf( mbedtls_hmac_drbg_context *ctx, } /* - * HMAC_DRBG reseeding: 10.1.2.4 (arabic) + 9.2 (Roman) + * Internal function used both for seeding and reseeding the DRBG. + * Comments starting with arabic numbers refer to section 10.1.2.4 + * of SP800-90A, while roman numbers refer to section 9.2. */ -int mbedtls_hmac_drbg_reseed( mbedtls_hmac_drbg_context *ctx, - const unsigned char *additional, size_t len ) +static int hmac_drbg_reseed_core( mbedtls_hmac_drbg_context *ctx, + const unsigned char *additional, size_t len, + int use_nonce ) { unsigned char seed[MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT]; - size_t seedlen; - int ret; + size_t seedlen = 0; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; - /* III. Check input length */ - if( len > MBEDTLS_HMAC_DRBG_MAX_INPUT || - ctx->entropy_len + len > MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT ) { - return( MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG ); + size_t total_entropy_len; + + if( use_nonce == 0 ) + total_entropy_len = ctx->entropy_len; + else + total_entropy_len = ctx->entropy_len * 3 / 2; + + /* III. Check input length */ + if( len > MBEDTLS_HMAC_DRBG_MAX_INPUT || + total_entropy_len + len > MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT ) + { + return( MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG ); + } } memset( seed, 0, MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT ); @@ -170,9 +179,32 @@ int mbedtls_hmac_drbg_reseed( mbedtls_hmac_drbg_context *ctx, /* IV. Gather entropy_len bytes of entropy for the seed */ if( ( ret = ctx->f_entropy( ctx->p_entropy, seed, ctx->entropy_len ) ) != 0 ) + { return( MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED ); + } + seedlen += ctx->entropy_len; + + /* For initial seeding, allow adding of nonce generated + * from the entropy source. See Sect 8.6.7 in SP800-90A. */ + if( use_nonce ) + { + /* Note: We don't merge the two calls to f_entropy() in order + * to avoid requesting too much entropy from f_entropy() + * at once. Specifically, if the underlying digest is not + * SHA-1, 3 / 2 * entropy_len is at least 36 Bytes, which + * is larger than the maximum of 32 Bytes that our own + * entropy source implementation can emit in a single + * call in configurations disabling SHA-512. */ + if( ( ret = ctx->f_entropy( ctx->p_entropy, + seed + seedlen, + ctx->entropy_len / 2 ) ) != 0 ) + { + return( MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED ); + } + + seedlen += ctx->entropy_len / 2; + } - seedlen = ctx->entropy_len; /* 1. Concatenate entropy and additional data if any */ if( additional != NULL && len != 0 ) @@ -194,8 +226,20 @@ int mbedtls_hmac_drbg_reseed( mbedtls_hmac_drbg_context *ctx, return( ret ); } +/* + * HMAC_DRBG reseeding: 10.1.2.4 + 9.2 + */ +int mbedtls_hmac_drbg_reseed( mbedtls_hmac_drbg_context *ctx, + const unsigned char *additional, size_t len ) +{ + return( hmac_drbg_reseed_core( ctx, additional, len, 0 ) ); +} + /* * HMAC_DRBG initialisation (10.1.2.3 + 9.1) + * + * The nonce is not passed as a separate parameter but extracted + * from the entropy source as suggested in 8.6.7. */ int mbedtls_hmac_drbg_seed( mbedtls_hmac_drbg_context *ctx, const mbedtls_md_info_t * md_info, @@ -204,12 +248,17 @@ int mbedtls_hmac_drbg_seed( mbedtls_hmac_drbg_context *ctx, const unsigned char *custom, size_t len ) { - int ret; - size_t entropy_len, md_size; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t md_size; if( ( ret = mbedtls_md_setup( &ctx->md_ctx, md_info, 1 ) ) != 0 ) return( ret ); + /* The mutex is initialized iff the md context is set up. */ +#if defined(MBEDTLS_THREADING_C) + mbedtls_mutex_init( &ctx->mutex ); +#endif + md_size = mbedtls_md_get_size( md_info ); /* @@ -224,29 +273,25 @@ int mbedtls_hmac_drbg_seed( mbedtls_hmac_drbg_context *ctx, ctx->f_entropy = f_entropy; ctx->p_entropy = p_entropy; - ctx->reseed_interval = MBEDTLS_HMAC_DRBG_RESEED_INTERVAL; - - /* - * See SP800-57 5.6.1 (p. 65-66) for the security strength provided by - * each hash function, then according to SP800-90A rev1 10.1 table 2, - * min_entropy_len (in bits) is security_strength. - * - * (This also matches the sizes used in the NIST test vectors.) - */ - entropy_len = md_size <= 20 ? 16 : /* 160-bits hash -> 128 bits */ - md_size <= 28 ? 24 : /* 224-bits hash -> 192 bits */ - 32; /* better (256+) -> 256 bits */ - - /* - * For initialisation, use more entropy to emulate a nonce - * (Again, matches test vectors.) - */ - ctx->entropy_len = entropy_len * 3 / 2; + if( ctx->entropy_len == 0 ) + { + /* + * See SP800-57 5.6.1 (p. 65-66) for the security strength provided by + * each hash function, then according to SP800-90A rev1 10.1 table 2, + * min_entropy_len (in bits) is security_strength. + * + * (This also matches the sizes used in the NIST test vectors.) + */ + ctx->entropy_len = md_size <= 20 ? 16 : /* 160-bits hash -> 128 bits */ + md_size <= 28 ? 24 : /* 224-bits hash -> 192 bits */ + 32; /* better (256+) -> 256 bits */ + } - if( ( ret = mbedtls_hmac_drbg_reseed( ctx, custom, len ) ) != 0 ) + if( ( ret = hmac_drbg_reseed_core( ctx, custom, len, + 1 /* add nonce */ ) ) != 0 ) + { return( ret ); - - ctx->entropy_len = entropy_len; + } return( 0 ); } @@ -261,7 +306,7 @@ void mbedtls_hmac_drbg_set_prediction_resistance( mbedtls_hmac_drbg_context *ctx } /* - * Set entropy length grabbed for reseeds + * Set entropy length grabbed for seeding */ void mbedtls_hmac_drbg_set_entropy_len( mbedtls_hmac_drbg_context *ctx, size_t len ) { @@ -284,7 +329,7 @@ int mbedtls_hmac_drbg_random_with_add( void *p_rng, unsigned char *output, size_t out_len, const unsigned char *additional, size_t add_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_hmac_drbg_context *ctx = (mbedtls_hmac_drbg_context *) p_rng; size_t md_len = mbedtls_md_get_size( ctx->md_ctx.md_info ); size_t left = out_len; @@ -353,7 +398,7 @@ int mbedtls_hmac_drbg_random_with_add( void *p_rng, */ int mbedtls_hmac_drbg_random( void *p_rng, unsigned char *output, size_t out_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_hmac_drbg_context *ctx = (mbedtls_hmac_drbg_context *) p_rng; #if defined(MBEDTLS_THREADING_C) @@ -372,7 +417,8 @@ int mbedtls_hmac_drbg_random( void *p_rng, unsigned char *output, size_t out_len } /* - * Free an HMAC_DRBG context + * This function resets HMAC_DRBG context to the state immediately + * after initial call of mbedtls_hmac_drbg_init(). */ void mbedtls_hmac_drbg_free( mbedtls_hmac_drbg_context *ctx ) { @@ -380,16 +426,19 @@ void mbedtls_hmac_drbg_free( mbedtls_hmac_drbg_context *ctx ) return; #if defined(MBEDTLS_THREADING_C) - mbedtls_mutex_free( &ctx->mutex ); + /* The mutex is initialized iff the md context is set up. */ + if( ctx->md_ctx.md_info != NULL ) + mbedtls_mutex_free( &ctx->mutex ); #endif mbedtls_md_free( &ctx->md_ctx ); mbedtls_platform_zeroize( ctx, sizeof( mbedtls_hmac_drbg_context ) ); + ctx->reseed_interval = MBEDTLS_HMAC_DRBG_RESEED_INTERVAL; } #if defined(MBEDTLS_FS_IO) int mbedtls_hmac_drbg_write_seed_file( mbedtls_hmac_drbg_context *ctx, const char *path ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; FILE *f; unsigned char buf[ MBEDTLS_HMAC_DRBG_MAX_INPUT ]; diff --git a/Externals/mbedtls/library/md.c b/Externals/mbedtls/library/md.c index 303cdcbeebea..a10a83563471 100644 --- a/Externals/mbedtls/library/md.c +++ b/Externals/mbedtls/library/md.c @@ -1,11 +1,11 @@ /** - * \file mbedtls_md.c + * \file md.c * * \brief Generic message digest wrapper for mbed TLS * * \author Adriaan de Jong * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -19,21 +19,24 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_MD_C) #include "mbedtls/md.h" #include "mbedtls/md_internal.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" + +#include "mbedtls/md2.h" +#include "mbedtls/md4.h" +#include "mbedtls/md5.h" +#include "mbedtls/ripemd160.h" +#include "mbedtls/sha1.h" +#include "mbedtls/sha256.h" +#include "mbedtls/sha512.h" #if defined(MBEDTLS_PLATFORM_C) #include "mbedtls/platform.h" @@ -49,6 +52,85 @@ #include #endif +#if defined(MBEDTLS_MD2_C) +const mbedtls_md_info_t mbedtls_md2_info = { + "MD2", + MBEDTLS_MD_MD2, + 16, + 16, +}; +#endif + +#if defined(MBEDTLS_MD4_C) +const mbedtls_md_info_t mbedtls_md4_info = { + "MD4", + MBEDTLS_MD_MD4, + 16, + 64, +}; +#endif + +#if defined(MBEDTLS_MD5_C) +const mbedtls_md_info_t mbedtls_md5_info = { + "MD5", + MBEDTLS_MD_MD5, + 16, + 64, +}; +#endif + +#if defined(MBEDTLS_RIPEMD160_C) +const mbedtls_md_info_t mbedtls_ripemd160_info = { + "RIPEMD160", + MBEDTLS_MD_RIPEMD160, + 20, + 64, +}; +#endif + +#if defined(MBEDTLS_SHA1_C) +const mbedtls_md_info_t mbedtls_sha1_info = { + "SHA1", + MBEDTLS_MD_SHA1, + 20, + 64, +}; +#endif + +#if defined(MBEDTLS_SHA256_C) +const mbedtls_md_info_t mbedtls_sha224_info = { + "SHA224", + MBEDTLS_MD_SHA224, + 28, + 64, +}; + +const mbedtls_md_info_t mbedtls_sha256_info = { + "SHA256", + MBEDTLS_MD_SHA256, + 32, + 64, +}; +#endif + +#if defined(MBEDTLS_SHA512_C) +#if !defined(MBEDTLS_SHA512_NO_SHA384) +const mbedtls_md_info_t mbedtls_sha384_info = { + "SHA384", + MBEDTLS_MD_SHA384, + 48, + 128, +}; +#endif + +const mbedtls_md_info_t mbedtls_sha512_info = { + "SHA512", + MBEDTLS_MD_SHA512, + 64, + 128, +}; +#endif + /* * Reminder: update profiles in x509_crt.c when adding a new hash! */ @@ -56,8 +138,10 @@ static const int supported_digests[] = { #if defined(MBEDTLS_SHA512_C) MBEDTLS_MD_SHA512, +#if !defined(MBEDTLS_SHA512_NO_SHA384) MBEDTLS_MD_SHA384, #endif +#endif #if defined(MBEDTLS_SHA256_C) MBEDTLS_MD_SHA256, @@ -125,8 +209,10 @@ const mbedtls_md_info_t *mbedtls_md_info_from_string( const char *md_name ) return mbedtls_md_info_from_type( MBEDTLS_MD_SHA256 ); #endif #if defined(MBEDTLS_SHA512_C) +#if !defined(MBEDTLS_SHA512_NO_SHA384) if( !strcmp( "SHA384", md_name ) ) return mbedtls_md_info_from_type( MBEDTLS_MD_SHA384 ); +#endif if( !strcmp( "SHA512", md_name ) ) return mbedtls_md_info_from_type( MBEDTLS_MD_SHA512 ); #endif @@ -164,8 +250,10 @@ const mbedtls_md_info_t *mbedtls_md_info_from_type( mbedtls_md_type_t md_type ) return( &mbedtls_sha256_info ); #endif #if defined(MBEDTLS_SHA512_C) +#if !defined(MBEDTLS_SHA512_NO_SHA384) case MBEDTLS_MD_SHA384: return( &mbedtls_sha384_info ); +#endif case MBEDTLS_MD_SHA512: return( &mbedtls_sha512_info ); #endif @@ -185,7 +273,54 @@ void mbedtls_md_free( mbedtls_md_context_t *ctx ) return; if( ctx->md_ctx != NULL ) - ctx->md_info->ctx_free_func( ctx->md_ctx ); + { + switch( ctx->md_info->type ) + { +#if defined(MBEDTLS_MD2_C) + case MBEDTLS_MD_MD2: + mbedtls_md2_free( ctx->md_ctx ); + break; +#endif +#if defined(MBEDTLS_MD4_C) + case MBEDTLS_MD_MD4: + mbedtls_md4_free( ctx->md_ctx ); + break; +#endif +#if defined(MBEDTLS_MD5_C) + case MBEDTLS_MD_MD5: + mbedtls_md5_free( ctx->md_ctx ); + break; +#endif +#if defined(MBEDTLS_RIPEMD160_C) + case MBEDTLS_MD_RIPEMD160: + mbedtls_ripemd160_free( ctx->md_ctx ); + break; +#endif +#if defined(MBEDTLS_SHA1_C) + case MBEDTLS_MD_SHA1: + mbedtls_sha1_free( ctx->md_ctx ); + break; +#endif +#if defined(MBEDTLS_SHA256_C) + case MBEDTLS_MD_SHA224: + case MBEDTLS_MD_SHA256: + mbedtls_sha256_free( ctx->md_ctx ); + break; +#endif +#if defined(MBEDTLS_SHA512_C) +#if !defined(MBEDTLS_SHA512_NO_SHA384) + case MBEDTLS_MD_SHA384: +#endif + case MBEDTLS_MD_SHA512: + mbedtls_sha512_free( ctx->md_ctx ); + break; +#endif + default: + /* Shouldn't happen */ + break; + } + mbedtls_free( ctx->md_ctx ); + } if( ctx->hmac_ctx != NULL ) { @@ -207,7 +342,50 @@ int mbedtls_md_clone( mbedtls_md_context_t *dst, return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); } - dst->md_info->clone_func( dst->md_ctx, src->md_ctx ); + switch( src->md_info->type ) + { +#if defined(MBEDTLS_MD2_C) + case MBEDTLS_MD_MD2: + mbedtls_md2_clone( dst->md_ctx, src->md_ctx ); + break; +#endif +#if defined(MBEDTLS_MD4_C) + case MBEDTLS_MD_MD4: + mbedtls_md4_clone( dst->md_ctx, src->md_ctx ); + break; +#endif +#if defined(MBEDTLS_MD5_C) + case MBEDTLS_MD_MD5: + mbedtls_md5_clone( dst->md_ctx, src->md_ctx ); + break; +#endif +#if defined(MBEDTLS_RIPEMD160_C) + case MBEDTLS_MD_RIPEMD160: + mbedtls_ripemd160_clone( dst->md_ctx, src->md_ctx ); + break; +#endif +#if defined(MBEDTLS_SHA1_C) + case MBEDTLS_MD_SHA1: + mbedtls_sha1_clone( dst->md_ctx, src->md_ctx ); + break; +#endif +#if defined(MBEDTLS_SHA256_C) + case MBEDTLS_MD_SHA224: + case MBEDTLS_MD_SHA256: + mbedtls_sha256_clone( dst->md_ctx, src->md_ctx ); + break; +#endif +#if defined(MBEDTLS_SHA512_C) +#if !defined(MBEDTLS_SHA512_NO_SHA384) + case MBEDTLS_MD_SHA384: +#endif + case MBEDTLS_MD_SHA512: + mbedtls_sha512_clone( dst->md_ctx, src->md_ctx ); + break; +#endif + default: + return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); + } return( 0 ); } @@ -219,35 +397,127 @@ int mbedtls_md_init_ctx( mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_ } #endif +#define ALLOC( type ) \ + do { \ + ctx->md_ctx = mbedtls_calloc( 1, sizeof( mbedtls_##type##_context ) ); \ + if( ctx->md_ctx == NULL ) \ + return( MBEDTLS_ERR_MD_ALLOC_FAILED ); \ + mbedtls_##type##_init( ctx->md_ctx ); \ + } \ + while( 0 ) + int mbedtls_md_setup( mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info, int hmac ) { if( md_info == NULL || ctx == NULL ) return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); - if( ( ctx->md_ctx = md_info->ctx_alloc_func() ) == NULL ) - return( MBEDTLS_ERR_MD_ALLOC_FAILED ); + ctx->md_info = md_info; + ctx->md_ctx = NULL; + ctx->hmac_ctx = NULL; + + switch( md_info->type ) + { +#if defined(MBEDTLS_MD2_C) + case MBEDTLS_MD_MD2: + ALLOC( md2 ); + break; +#endif +#if defined(MBEDTLS_MD4_C) + case MBEDTLS_MD_MD4: + ALLOC( md4 ); + break; +#endif +#if defined(MBEDTLS_MD5_C) + case MBEDTLS_MD_MD5: + ALLOC( md5 ); + break; +#endif +#if defined(MBEDTLS_RIPEMD160_C) + case MBEDTLS_MD_RIPEMD160: + ALLOC( ripemd160 ); + break; +#endif +#if defined(MBEDTLS_SHA1_C) + case MBEDTLS_MD_SHA1: + ALLOC( sha1 ); + break; +#endif +#if defined(MBEDTLS_SHA256_C) + case MBEDTLS_MD_SHA224: + case MBEDTLS_MD_SHA256: + ALLOC( sha256 ); + break; +#endif +#if defined(MBEDTLS_SHA512_C) +#if !defined(MBEDTLS_SHA512_NO_SHA384) + case MBEDTLS_MD_SHA384: +#endif + case MBEDTLS_MD_SHA512: + ALLOC( sha512 ); + break; +#endif + default: + return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); + } if( hmac != 0 ) { ctx->hmac_ctx = mbedtls_calloc( 2, md_info->block_size ); if( ctx->hmac_ctx == NULL ) { - md_info->ctx_free_func( ctx->md_ctx ); + mbedtls_md_free( ctx ); return( MBEDTLS_ERR_MD_ALLOC_FAILED ); } } - ctx->md_info = md_info; - return( 0 ); } +#undef ALLOC int mbedtls_md_starts( mbedtls_md_context_t *ctx ) { if( ctx == NULL || ctx->md_info == NULL ) return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); - return( ctx->md_info->starts_func( ctx->md_ctx ) ); + switch( ctx->md_info->type ) + { +#if defined(MBEDTLS_MD2_C) + case MBEDTLS_MD_MD2: + return( mbedtls_md2_starts_ret( ctx->md_ctx ) ); +#endif +#if defined(MBEDTLS_MD4_C) + case MBEDTLS_MD_MD4: + return( mbedtls_md4_starts_ret( ctx->md_ctx ) ); +#endif +#if defined(MBEDTLS_MD5_C) + case MBEDTLS_MD_MD5: + return( mbedtls_md5_starts_ret( ctx->md_ctx ) ); +#endif +#if defined(MBEDTLS_RIPEMD160_C) + case MBEDTLS_MD_RIPEMD160: + return( mbedtls_ripemd160_starts_ret( ctx->md_ctx ) ); +#endif +#if defined(MBEDTLS_SHA1_C) + case MBEDTLS_MD_SHA1: + return( mbedtls_sha1_starts_ret( ctx->md_ctx ) ); +#endif +#if defined(MBEDTLS_SHA256_C) + case MBEDTLS_MD_SHA224: + return( mbedtls_sha256_starts_ret( ctx->md_ctx, 1 ) ); + case MBEDTLS_MD_SHA256: + return( mbedtls_sha256_starts_ret( ctx->md_ctx, 0 ) ); +#endif +#if defined(MBEDTLS_SHA512_C) +#if !defined(MBEDTLS_SHA512_NO_SHA384) + case MBEDTLS_MD_SHA384: + return( mbedtls_sha512_starts_ret( ctx->md_ctx, 1 ) ); +#endif + case MBEDTLS_MD_SHA512: + return( mbedtls_sha512_starts_ret( ctx->md_ctx, 0 ) ); +#endif + default: + return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); + } } int mbedtls_md_update( mbedtls_md_context_t *ctx, const unsigned char *input, size_t ilen ) @@ -255,7 +525,43 @@ int mbedtls_md_update( mbedtls_md_context_t *ctx, const unsigned char *input, si if( ctx == NULL || ctx->md_info == NULL ) return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); - return( ctx->md_info->update_func( ctx->md_ctx, input, ilen ) ); + switch( ctx->md_info->type ) + { +#if defined(MBEDTLS_MD2_C) + case MBEDTLS_MD_MD2: + return( mbedtls_md2_update_ret( ctx->md_ctx, input, ilen ) ); +#endif +#if defined(MBEDTLS_MD4_C) + case MBEDTLS_MD_MD4: + return( mbedtls_md4_update_ret( ctx->md_ctx, input, ilen ) ); +#endif +#if defined(MBEDTLS_MD5_C) + case MBEDTLS_MD_MD5: + return( mbedtls_md5_update_ret( ctx->md_ctx, input, ilen ) ); +#endif +#if defined(MBEDTLS_RIPEMD160_C) + case MBEDTLS_MD_RIPEMD160: + return( mbedtls_ripemd160_update_ret( ctx->md_ctx, input, ilen ) ); +#endif +#if defined(MBEDTLS_SHA1_C) + case MBEDTLS_MD_SHA1: + return( mbedtls_sha1_update_ret( ctx->md_ctx, input, ilen ) ); +#endif +#if defined(MBEDTLS_SHA256_C) + case MBEDTLS_MD_SHA224: + case MBEDTLS_MD_SHA256: + return( mbedtls_sha256_update_ret( ctx->md_ctx, input, ilen ) ); +#endif +#if defined(MBEDTLS_SHA512_C) +#if !defined(MBEDTLS_SHA512_NO_SHA384) + case MBEDTLS_MD_SHA384: +#endif + case MBEDTLS_MD_SHA512: + return( mbedtls_sha512_update_ret( ctx->md_ctx, input, ilen ) ); +#endif + default: + return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); + } } int mbedtls_md_finish( mbedtls_md_context_t *ctx, unsigned char *output ) @@ -263,7 +569,43 @@ int mbedtls_md_finish( mbedtls_md_context_t *ctx, unsigned char *output ) if( ctx == NULL || ctx->md_info == NULL ) return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); - return( ctx->md_info->finish_func( ctx->md_ctx, output ) ); + switch( ctx->md_info->type ) + { +#if defined(MBEDTLS_MD2_C) + case MBEDTLS_MD_MD2: + return( mbedtls_md2_finish_ret( ctx->md_ctx, output ) ); +#endif +#if defined(MBEDTLS_MD4_C) + case MBEDTLS_MD_MD4: + return( mbedtls_md4_finish_ret( ctx->md_ctx, output ) ); +#endif +#if defined(MBEDTLS_MD5_C) + case MBEDTLS_MD_MD5: + return( mbedtls_md5_finish_ret( ctx->md_ctx, output ) ); +#endif +#if defined(MBEDTLS_RIPEMD160_C) + case MBEDTLS_MD_RIPEMD160: + return( mbedtls_ripemd160_finish_ret( ctx->md_ctx, output ) ); +#endif +#if defined(MBEDTLS_SHA1_C) + case MBEDTLS_MD_SHA1: + return( mbedtls_sha1_finish_ret( ctx->md_ctx, output ) ); +#endif +#if defined(MBEDTLS_SHA256_C) + case MBEDTLS_MD_SHA224: + case MBEDTLS_MD_SHA256: + return( mbedtls_sha256_finish_ret( ctx->md_ctx, output ) ); +#endif +#if defined(MBEDTLS_SHA512_C) +#if !defined(MBEDTLS_SHA512_NO_SHA384) + case MBEDTLS_MD_SHA384: +#endif + case MBEDTLS_MD_SHA512: + return( mbedtls_sha512_finish_ret( ctx->md_ctx, output ) ); +#endif + default: + return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); + } } int mbedtls_md( const mbedtls_md_info_t *md_info, const unsigned char *input, size_t ilen, @@ -272,13 +614,51 @@ int mbedtls_md( const mbedtls_md_info_t *md_info, const unsigned char *input, si if( md_info == NULL ) return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); - return( md_info->digest_func( input, ilen, output ) ); + switch( md_info->type ) + { +#if defined(MBEDTLS_MD2_C) + case MBEDTLS_MD_MD2: + return( mbedtls_md2_ret( input, ilen, output ) ); +#endif +#if defined(MBEDTLS_MD4_C) + case MBEDTLS_MD_MD4: + return( mbedtls_md4_ret( input, ilen, output ) ); +#endif +#if defined(MBEDTLS_MD5_C) + case MBEDTLS_MD_MD5: + return( mbedtls_md5_ret( input, ilen, output ) ); +#endif +#if defined(MBEDTLS_RIPEMD160_C) + case MBEDTLS_MD_RIPEMD160: + return( mbedtls_ripemd160_ret( input, ilen, output ) ); +#endif +#if defined(MBEDTLS_SHA1_C) + case MBEDTLS_MD_SHA1: + return( mbedtls_sha1_ret( input, ilen, output ) ); +#endif +#if defined(MBEDTLS_SHA256_C) + case MBEDTLS_MD_SHA224: + return( mbedtls_sha256_ret( input, ilen, output, 1 ) ); + case MBEDTLS_MD_SHA256: + return( mbedtls_sha256_ret( input, ilen, output, 0 ) ); +#endif +#if defined(MBEDTLS_SHA512_C) +#if !defined(MBEDTLS_SHA512_NO_SHA384) + case MBEDTLS_MD_SHA384: + return( mbedtls_sha512_ret( input, ilen, output, 1 ) ); +#endif + case MBEDTLS_MD_SHA512: + return( mbedtls_sha512_ret( input, ilen, output, 0 ) ); +#endif + default: + return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); + } } #if defined(MBEDTLS_FS_IO) int mbedtls_md_file( const mbedtls_md_info_t *md_info, const char *path, unsigned char *output ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; FILE *f; size_t n; mbedtls_md_context_t ctx; @@ -295,17 +675,17 @@ int mbedtls_md_file( const mbedtls_md_info_t *md_info, const char *path, unsigne if( ( ret = mbedtls_md_setup( &ctx, md_info, 0 ) ) != 0 ) goto cleanup; - if( ( ret = md_info->starts_func( ctx.md_ctx ) ) != 0 ) + if( ( ret = mbedtls_md_starts( &ctx ) ) != 0 ) goto cleanup; while( ( n = fread( buf, 1, sizeof( buf ), f ) ) > 0 ) - if( ( ret = md_info->update_func( ctx.md_ctx, buf, n ) ) != 0 ) + if( ( ret = mbedtls_md_update( &ctx, buf, n ) ) != 0 ) goto cleanup; if( ferror( f ) != 0 ) ret = MBEDTLS_ERR_MD_FILE_IO_ERROR; else - ret = md_info->finish_func( ctx.md_ctx, output ); + ret = mbedtls_md_finish( &ctx, output ); cleanup: mbedtls_platform_zeroize( buf, sizeof( buf ) ); @@ -318,7 +698,7 @@ int mbedtls_md_file( const mbedtls_md_info_t *md_info, const char *path, unsigne int mbedtls_md_hmac_starts( mbedtls_md_context_t *ctx, const unsigned char *key, size_t keylen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char sum[MBEDTLS_MD_MAX_SIZE]; unsigned char *ipad, *opad; size_t i; @@ -328,11 +708,11 @@ int mbedtls_md_hmac_starts( mbedtls_md_context_t *ctx, const unsigned char *key, if( keylen > (size_t) ctx->md_info->block_size ) { - if( ( ret = ctx->md_info->starts_func( ctx->md_ctx ) ) != 0 ) + if( ( ret = mbedtls_md_starts( ctx ) ) != 0 ) goto cleanup; - if( ( ret = ctx->md_info->update_func( ctx->md_ctx, key, keylen ) ) != 0 ) + if( ( ret = mbedtls_md_update( ctx, key, keylen ) ) != 0 ) goto cleanup; - if( ( ret = ctx->md_info->finish_func( ctx->md_ctx, sum ) ) != 0 ) + if( ( ret = mbedtls_md_finish( ctx, sum ) ) != 0 ) goto cleanup; keylen = ctx->md_info->size; @@ -351,10 +731,10 @@ int mbedtls_md_hmac_starts( mbedtls_md_context_t *ctx, const unsigned char *key, opad[i] = (unsigned char)( opad[i] ^ key[i] ); } - if( ( ret = ctx->md_info->starts_func( ctx->md_ctx ) ) != 0 ) + if( ( ret = mbedtls_md_starts( ctx ) ) != 0 ) goto cleanup; - if( ( ret = ctx->md_info->update_func( ctx->md_ctx, ipad, - ctx->md_info->block_size ) ) != 0 ) + if( ( ret = mbedtls_md_update( ctx, ipad, + ctx->md_info->block_size ) ) != 0 ) goto cleanup; cleanup: @@ -368,12 +748,12 @@ int mbedtls_md_hmac_update( mbedtls_md_context_t *ctx, const unsigned char *inpu if( ctx == NULL || ctx->md_info == NULL || ctx->hmac_ctx == NULL ) return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); - return( ctx->md_info->update_func( ctx->md_ctx, input, ilen ) ); + return( mbedtls_md_update( ctx, input, ilen ) ); } int mbedtls_md_hmac_finish( mbedtls_md_context_t *ctx, unsigned char *output ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char tmp[MBEDTLS_MD_MAX_SIZE]; unsigned char *opad; @@ -382,22 +762,22 @@ int mbedtls_md_hmac_finish( mbedtls_md_context_t *ctx, unsigned char *output ) opad = (unsigned char *) ctx->hmac_ctx + ctx->md_info->block_size; - if( ( ret = ctx->md_info->finish_func( ctx->md_ctx, tmp ) ) != 0 ) + if( ( ret = mbedtls_md_finish( ctx, tmp ) ) != 0 ) return( ret ); - if( ( ret = ctx->md_info->starts_func( ctx->md_ctx ) ) != 0 ) + if( ( ret = mbedtls_md_starts( ctx ) ) != 0 ) return( ret ); - if( ( ret = ctx->md_info->update_func( ctx->md_ctx, opad, - ctx->md_info->block_size ) ) != 0 ) + if( ( ret = mbedtls_md_update( ctx, opad, + ctx->md_info->block_size ) ) != 0 ) return( ret ); - if( ( ret = ctx->md_info->update_func( ctx->md_ctx, tmp, - ctx->md_info->size ) ) != 0 ) + if( ( ret = mbedtls_md_update( ctx, tmp, + ctx->md_info->size ) ) != 0 ) return( ret ); - return( ctx->md_info->finish_func( ctx->md_ctx, output ) ); + return( mbedtls_md_finish( ctx, output ) ); } int mbedtls_md_hmac_reset( mbedtls_md_context_t *ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *ipad; if( ctx == NULL || ctx->md_info == NULL || ctx->hmac_ctx == NULL ) @@ -405,10 +785,9 @@ int mbedtls_md_hmac_reset( mbedtls_md_context_t *ctx ) ipad = (unsigned char *) ctx->hmac_ctx; - if( ( ret = ctx->md_info->starts_func( ctx->md_ctx ) ) != 0 ) + if( ( ret = mbedtls_md_starts( ctx ) ) != 0 ) return( ret ); - return( ctx->md_info->update_func( ctx->md_ctx, ipad, - ctx->md_info->block_size ) ); + return( mbedtls_md_update( ctx, ipad, ctx->md_info->block_size ) ); } int mbedtls_md_hmac( const mbedtls_md_info_t *md_info, @@ -417,7 +796,7 @@ int mbedtls_md_hmac( const mbedtls_md_info_t *md_info, unsigned char *output ) { mbedtls_md_context_t ctx; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( md_info == NULL ) return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); @@ -445,7 +824,43 @@ int mbedtls_md_process( mbedtls_md_context_t *ctx, const unsigned char *data ) if( ctx == NULL || ctx->md_info == NULL ) return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); - return( ctx->md_info->process_func( ctx->md_ctx, data ) ); + switch( ctx->md_info->type ) + { +#if defined(MBEDTLS_MD2_C) + case MBEDTLS_MD_MD2: + return( mbedtls_internal_md2_process( ctx->md_ctx ) ); +#endif +#if defined(MBEDTLS_MD4_C) + case MBEDTLS_MD_MD4: + return( mbedtls_internal_md4_process( ctx->md_ctx, data ) ); +#endif +#if defined(MBEDTLS_MD5_C) + case MBEDTLS_MD_MD5: + return( mbedtls_internal_md5_process( ctx->md_ctx, data ) ); +#endif +#if defined(MBEDTLS_RIPEMD160_C) + case MBEDTLS_MD_RIPEMD160: + return( mbedtls_internal_ripemd160_process( ctx->md_ctx, data ) ); +#endif +#if defined(MBEDTLS_SHA1_C) + case MBEDTLS_MD_SHA1: + return( mbedtls_internal_sha1_process( ctx->md_ctx, data ) ); +#endif +#if defined(MBEDTLS_SHA256_C) + case MBEDTLS_MD_SHA224: + case MBEDTLS_MD_SHA256: + return( mbedtls_internal_sha256_process( ctx->md_ctx, data ) ); +#endif +#if defined(MBEDTLS_SHA512_C) +#if !defined(MBEDTLS_SHA512_NO_SHA384) + case MBEDTLS_MD_SHA384: +#endif + case MBEDTLS_MD_SHA512: + return( mbedtls_internal_sha512_process( ctx->md_ctx, data ) ); +#endif + default: + return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); + } } unsigned char mbedtls_md_get_size( const mbedtls_md_info_t *md_info ) diff --git a/Externals/mbedtls/library/md2.c b/Externals/mbedtls/library/md2.c index 1c0b3df52d3c..7264e303130a 100644 --- a/Externals/mbedtls/library/md2.c +++ b/Externals/mbedtls/library/md2.c @@ -1,7 +1,7 @@ /* * RFC 1115/1319 compliant MD2 implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The MD2 algorithm was designed by Ron Rivest in 1989. @@ -25,16 +23,13 @@ * http://www.ietf.org/rfc/rfc1319.txt */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_MD2_C) #include "mbedtls/md2.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -152,6 +147,9 @@ int mbedtls_internal_md2_process( mbedtls_md2_context *ctx ) t = ctx->cksum[i]; } + /* Zeroise variables to clear sensitive data from memory. */ + mbedtls_platform_zeroize( &t, sizeof( t ) ); + return( 0 ); } @@ -170,7 +168,7 @@ int mbedtls_md2_update_ret( mbedtls_md2_context *ctx, const unsigned char *input, size_t ilen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t fill; while( ilen > 0 ) @@ -212,7 +210,7 @@ void mbedtls_md2_update( mbedtls_md2_context *ctx, int mbedtls_md2_finish_ret( mbedtls_md2_context *ctx, unsigned char output[16] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i; unsigned char x; @@ -250,7 +248,7 @@ int mbedtls_md2_ret( const unsigned char *input, size_t ilen, unsigned char output[16] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_md2_context ctx; mbedtls_md2_init( &ctx ); @@ -292,8 +290,7 @@ static const unsigned char md2_test_str[7][81] = { "message digest" }, { "abcdefghijklmnopqrstuvwxyz" }, { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" }, - { "12345678901234567890123456789012345678901234567890123456789012" - "345678901234567890" } + { "12345678901234567890123456789012345678901234567890123456789012345678901234567890" } }; static const size_t md2_test_strlen[7] = diff --git a/Externals/mbedtls/library/md4.c b/Externals/mbedtls/library/md4.c index 3f8ddff31d4f..eaa679a0a6ee 100644 --- a/Externals/mbedtls/library/md4.c +++ b/Externals/mbedtls/library/md4.c @@ -1,7 +1,7 @@ /* * RFC 1186/1320 compliant MD4 implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The MD4 algorithm was designed by Ron Rivest in 1990. @@ -25,16 +23,13 @@ * http://www.ietf.org/rfc/rfc1320.txt */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_MD4_C) #include "mbedtls/md4.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -49,29 +44,6 @@ #if !defined(MBEDTLS_MD4_ALT) -/* - * 32-bit integer manipulation macros (little endian) - */ -#ifndef GET_UINT32_LE -#define GET_UINT32_LE(n,b,i) \ -{ \ - (n) = ( (uint32_t) (b)[(i) ] ) \ - | ( (uint32_t) (b)[(i) + 1] << 8 ) \ - | ( (uint32_t) (b)[(i) + 2] << 16 ) \ - | ( (uint32_t) (b)[(i) + 3] << 24 ); \ -} -#endif - -#ifndef PUT_UINT32_LE -#define PUT_UINT32_LE(n,b,i) \ -{ \ - (b)[(i) ] = (unsigned char) ( ( (n) ) & 0xFF ); \ - (b)[(i) + 1] = (unsigned char) ( ( (n) >> 8 ) & 0xFF ); \ - (b)[(i) + 2] = (unsigned char) ( ( (n) >> 16 ) & 0xFF ); \ - (b)[(i) + 3] = (unsigned char) ( ( (n) >> 24 ) & 0xFF ); \ -} -#endif - void mbedtls_md4_init( mbedtls_md4_context *ctx ) { memset( ctx, 0, sizeof( mbedtls_md4_context ) ); @@ -118,105 +90,127 @@ void mbedtls_md4_starts( mbedtls_md4_context *ctx ) int mbedtls_internal_md4_process( mbedtls_md4_context *ctx, const unsigned char data[64] ) { - uint32_t X[16], A, B, C, D; - - GET_UINT32_LE( X[ 0], data, 0 ); - GET_UINT32_LE( X[ 1], data, 4 ); - GET_UINT32_LE( X[ 2], data, 8 ); - GET_UINT32_LE( X[ 3], data, 12 ); - GET_UINT32_LE( X[ 4], data, 16 ); - GET_UINT32_LE( X[ 5], data, 20 ); - GET_UINT32_LE( X[ 6], data, 24 ); - GET_UINT32_LE( X[ 7], data, 28 ); - GET_UINT32_LE( X[ 8], data, 32 ); - GET_UINT32_LE( X[ 9], data, 36 ); - GET_UINT32_LE( X[10], data, 40 ); - GET_UINT32_LE( X[11], data, 44 ); - GET_UINT32_LE( X[12], data, 48 ); - GET_UINT32_LE( X[13], data, 52 ); - GET_UINT32_LE( X[14], data, 56 ); - GET_UINT32_LE( X[15], data, 60 ); - -#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) - - A = ctx->state[0]; - B = ctx->state[1]; - C = ctx->state[2]; - D = ctx->state[3]; - -#define F(x, y, z) ((x & y) | ((~x) & z)) -#define P(a,b,c,d,x,s) { a += F(b,c,d) + x; a = S(a,s); } - - P( A, B, C, D, X[ 0], 3 ); - P( D, A, B, C, X[ 1], 7 ); - P( C, D, A, B, X[ 2], 11 ); - P( B, C, D, A, X[ 3], 19 ); - P( A, B, C, D, X[ 4], 3 ); - P( D, A, B, C, X[ 5], 7 ); - P( C, D, A, B, X[ 6], 11 ); - P( B, C, D, A, X[ 7], 19 ); - P( A, B, C, D, X[ 8], 3 ); - P( D, A, B, C, X[ 9], 7 ); - P( C, D, A, B, X[10], 11 ); - P( B, C, D, A, X[11], 19 ); - P( A, B, C, D, X[12], 3 ); - P( D, A, B, C, X[13], 7 ); - P( C, D, A, B, X[14], 11 ); - P( B, C, D, A, X[15], 19 ); + struct + { + uint32_t X[16], A, B, C, D; + } local; + + local.X[ 0] = MBEDTLS_GET_UINT32_LE( data, 0 ); + local.X[ 1] = MBEDTLS_GET_UINT32_LE( data, 4 ); + local.X[ 2] = MBEDTLS_GET_UINT32_LE( data, 8 ); + local.X[ 3] = MBEDTLS_GET_UINT32_LE( data, 12 ); + local.X[ 4] = MBEDTLS_GET_UINT32_LE( data, 16 ); + local.X[ 5] = MBEDTLS_GET_UINT32_LE( data, 20 ); + local.X[ 6] = MBEDTLS_GET_UINT32_LE( data, 24 ); + local.X[ 7] = MBEDTLS_GET_UINT32_LE( data, 28 ); + local.X[ 8] = MBEDTLS_GET_UINT32_LE( data, 32 ); + local.X[ 9] = MBEDTLS_GET_UINT32_LE( data, 36 ); + local.X[10] = MBEDTLS_GET_UINT32_LE( data, 40 ); + local.X[11] = MBEDTLS_GET_UINT32_LE( data, 44 ); + local.X[12] = MBEDTLS_GET_UINT32_LE( data, 48 ); + local.X[13] = MBEDTLS_GET_UINT32_LE( data, 52 ); + local.X[14] = MBEDTLS_GET_UINT32_LE( data, 56 ); + local.X[15] = MBEDTLS_GET_UINT32_LE( data, 60 ); + +#define S(x,n) (((x) << (n)) | (((x) & 0xFFFFFFFF) >> (32 - (n)))) + + local.A = ctx->state[0]; + local.B = ctx->state[1]; + local.C = ctx->state[2]; + local.D = ctx->state[3]; + +#define F(x, y, z) (((x) & (y)) | ((~(x)) & (z))) +#define P(a,b,c,d,x,s) \ + do \ + { \ + (a) += F((b),(c),(d)) + (x); \ + (a) = S((a),(s)); \ + } while( 0 ) + + + P( local.A, local.B, local.C, local.D, local.X[ 0], 3 ); + P( local.D, local.A, local.B, local.C, local.X[ 1], 7 ); + P( local.C, local.D, local.A, local.B, local.X[ 2], 11 ); + P( local.B, local.C, local.D, local.A, local.X[ 3], 19 ); + P( local.A, local.B, local.C, local.D, local.X[ 4], 3 ); + P( local.D, local.A, local.B, local.C, local.X[ 5], 7 ); + P( local.C, local.D, local.A, local.B, local.X[ 6], 11 ); + P( local.B, local.C, local.D, local.A, local.X[ 7], 19 ); + P( local.A, local.B, local.C, local.D, local.X[ 8], 3 ); + P( local.D, local.A, local.B, local.C, local.X[ 9], 7 ); + P( local.C, local.D, local.A, local.B, local.X[10], 11 ); + P( local.B, local.C, local.D, local.A, local.X[11], 19 ); + P( local.A, local.B, local.C, local.D, local.X[12], 3 ); + P( local.D, local.A, local.B, local.C, local.X[13], 7 ); + P( local.C, local.D, local.A, local.B, local.X[14], 11 ); + P( local.B, local.C, local.D, local.A, local.X[15], 19 ); #undef P #undef F -#define F(x,y,z) ((x & y) | (x & z) | (y & z)) -#define P(a,b,c,d,x,s) { a += F(b,c,d) + x + 0x5A827999; a = S(a,s); } - - P( A, B, C, D, X[ 0], 3 ); - P( D, A, B, C, X[ 4], 5 ); - P( C, D, A, B, X[ 8], 9 ); - P( B, C, D, A, X[12], 13 ); - P( A, B, C, D, X[ 1], 3 ); - P( D, A, B, C, X[ 5], 5 ); - P( C, D, A, B, X[ 9], 9 ); - P( B, C, D, A, X[13], 13 ); - P( A, B, C, D, X[ 2], 3 ); - P( D, A, B, C, X[ 6], 5 ); - P( C, D, A, B, X[10], 9 ); - P( B, C, D, A, X[14], 13 ); - P( A, B, C, D, X[ 3], 3 ); - P( D, A, B, C, X[ 7], 5 ); - P( C, D, A, B, X[11], 9 ); - P( B, C, D, A, X[15], 13 ); +#define F(x,y,z) (((x) & (y)) | ((x) & (z)) | ((y) & (z))) +#define P(a,b,c,d,x,s) \ + do \ + { \ + (a) += F((b),(c),(d)) + (x) + 0x5A827999; \ + (a) = S((a),(s)); \ + } while( 0 ) + + P( local.A, local.B, local.C, local.D, local.X[ 0], 3 ); + P( local.D, local.A, local.B, local.C, local.X[ 4], 5 ); + P( local.C, local.D, local.A, local.B, local.X[ 8], 9 ); + P( local.B, local.C, local.D, local.A, local.X[12], 13 ); + P( local.A, local.B, local.C, local.D, local.X[ 1], 3 ); + P( local.D, local.A, local.B, local.C, local.X[ 5], 5 ); + P( local.C, local.D, local.A, local.B, local.X[ 9], 9 ); + P( local.B, local.C, local.D, local.A, local.X[13], 13 ); + P( local.A, local.B, local.C, local.D, local.X[ 2], 3 ); + P( local.D, local.A, local.B, local.C, local.X[ 6], 5 ); + P( local.C, local.D, local.A, local.B, local.X[10], 9 ); + P( local.B, local.C, local.D, local.A, local.X[14], 13 ); + P( local.A, local.B, local.C, local.D, local.X[ 3], 3 ); + P( local.D, local.A, local.B, local.C, local.X[ 7], 5 ); + P( local.C, local.D, local.A, local.B, local.X[11], 9 ); + P( local.B, local.C, local.D, local.A, local.X[15], 13 ); #undef P #undef F -#define F(x,y,z) (x ^ y ^ z) -#define P(a,b,c,d,x,s) { a += F(b,c,d) + x + 0x6ED9EBA1; a = S(a,s); } - - P( A, B, C, D, X[ 0], 3 ); - P( D, A, B, C, X[ 8], 9 ); - P( C, D, A, B, X[ 4], 11 ); - P( B, C, D, A, X[12], 15 ); - P( A, B, C, D, X[ 2], 3 ); - P( D, A, B, C, X[10], 9 ); - P( C, D, A, B, X[ 6], 11 ); - P( B, C, D, A, X[14], 15 ); - P( A, B, C, D, X[ 1], 3 ); - P( D, A, B, C, X[ 9], 9 ); - P( C, D, A, B, X[ 5], 11 ); - P( B, C, D, A, X[13], 15 ); - P( A, B, C, D, X[ 3], 3 ); - P( D, A, B, C, X[11], 9 ); - P( C, D, A, B, X[ 7], 11 ); - P( B, C, D, A, X[15], 15 ); +#define F(x,y,z) ((x) ^ (y) ^ (z)) +#define P(a,b,c,d,x,s) \ + do \ + { \ + (a) += F((b),(c),(d)) + (x) + 0x6ED9EBA1; \ + (a) = S((a),(s)); \ + } while( 0 ) + + P( local.A, local.B, local.C, local.D, local.X[ 0], 3 ); + P( local.D, local.A, local.B, local.C, local.X[ 8], 9 ); + P( local.C, local.D, local.A, local.B, local.X[ 4], 11 ); + P( local.B, local.C, local.D, local.A, local.X[12], 15 ); + P( local.A, local.B, local.C, local.D, local.X[ 2], 3 ); + P( local.D, local.A, local.B, local.C, local.X[10], 9 ); + P( local.C, local.D, local.A, local.B, local.X[ 6], 11 ); + P( local.B, local.C, local.D, local.A, local.X[14], 15 ); + P( local.A, local.B, local.C, local.D, local.X[ 1], 3 ); + P( local.D, local.A, local.B, local.C, local.X[ 9], 9 ); + P( local.C, local.D, local.A, local.B, local.X[ 5], 11 ); + P( local.B, local.C, local.D, local.A, local.X[13], 15 ); + P( local.A, local.B, local.C, local.D, local.X[ 3], 3 ); + P( local.D, local.A, local.B, local.C, local.X[11], 9 ); + P( local.C, local.D, local.A, local.B, local.X[ 7], 11 ); + P( local.B, local.C, local.D, local.A, local.X[15], 15 ); #undef F #undef P - ctx->state[0] += A; - ctx->state[1] += B; - ctx->state[2] += C; - ctx->state[3] += D; + ctx->state[0] += local.A; + ctx->state[1] += local.B; + ctx->state[2] += local.C; + ctx->state[3] += local.D; + + /* Zeroise variables to clear sensitive data from memory. */ + mbedtls_platform_zeroize( &local, sizeof( local ) ); return( 0 ); } @@ -237,7 +231,7 @@ int mbedtls_md4_update_ret( mbedtls_md4_context *ctx, const unsigned char *input, size_t ilen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t fill; uint32_t left; @@ -307,7 +301,7 @@ static const unsigned char md4_padding[64] = int mbedtls_md4_finish_ret( mbedtls_md4_context *ctx, unsigned char output[16] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; uint32_t last, padn; uint32_t high, low; unsigned char msglen[8]; @@ -316,8 +310,8 @@ int mbedtls_md4_finish_ret( mbedtls_md4_context *ctx, | ( ctx->total[1] << 3 ); low = ( ctx->total[0] << 3 ); - PUT_UINT32_LE( low, msglen, 0 ); - PUT_UINT32_LE( high, msglen, 4 ); + MBEDTLS_PUT_UINT32_LE( low, msglen, 0 ); + MBEDTLS_PUT_UINT32_LE( high, msglen, 4 ); last = ctx->total[0] & 0x3F; padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last ); @@ -330,10 +324,10 @@ int mbedtls_md4_finish_ret( mbedtls_md4_context *ctx, return( ret ); - PUT_UINT32_LE( ctx->state[0], output, 0 ); - PUT_UINT32_LE( ctx->state[1], output, 4 ); - PUT_UINT32_LE( ctx->state[2], output, 8 ); - PUT_UINT32_LE( ctx->state[3], output, 12 ); + MBEDTLS_PUT_UINT32_LE( ctx->state[0], output, 0 ); + MBEDTLS_PUT_UINT32_LE( ctx->state[1], output, 4 ); + MBEDTLS_PUT_UINT32_LE( ctx->state[2], output, 8 ); + MBEDTLS_PUT_UINT32_LE( ctx->state[3], output, 12 ); return( 0 ); } @@ -355,7 +349,7 @@ int mbedtls_md4_ret( const unsigned char *input, size_t ilen, unsigned char output[16] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_md4_context ctx; mbedtls_md4_init( &ctx ); @@ -397,8 +391,7 @@ static const unsigned char md4_test_str[7][81] = { "message digest" }, { "abcdefghijklmnopqrstuvwxyz" }, { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" }, - { "12345678901234567890123456789012345678901234567890123456789012" - "345678901234567890" } + { "12345678901234567890123456789012345678901234567890123456789012345678901234567890" } }; static const size_t md4_test_strlen[7] = diff --git a/Externals/mbedtls/library/md5.c b/Externals/mbedtls/library/md5.c index 2a740cda81ed..4b53fcf36733 100644 --- a/Externals/mbedtls/library/md5.c +++ b/Externals/mbedtls/library/md5.c @@ -1,7 +1,7 @@ /* * RFC 1321 compliant MD5 implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The MD5 algorithm was designed by Ron Rivest in 1991. @@ -24,16 +22,13 @@ * http://www.ietf.org/rfc/rfc1321.txt */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_MD5_C) #include "mbedtls/md5.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -48,29 +43,6 @@ #if !defined(MBEDTLS_MD5_ALT) -/* - * 32-bit integer manipulation macros (little endian) - */ -#ifndef GET_UINT32_LE -#define GET_UINT32_LE(n,b,i) \ -{ \ - (n) = ( (uint32_t) (b)[(i) ] ) \ - | ( (uint32_t) (b)[(i) + 1] << 8 ) \ - | ( (uint32_t) (b)[(i) + 2] << 16 ) \ - | ( (uint32_t) (b)[(i) + 3] << 24 ); \ -} -#endif - -#ifndef PUT_UINT32_LE -#define PUT_UINT32_LE(n,b,i) \ -{ \ - (b)[(i) ] = (unsigned char) ( ( (n) ) & 0xFF ); \ - (b)[(i) + 1] = (unsigned char) ( ( (n) >> 8 ) & 0xFF ); \ - (b)[(i) + 2] = (unsigned char) ( ( (n) >> 16 ) & 0xFF ); \ - (b)[(i) + 3] = (unsigned char) ( ( (n) >> 24 ) & 0xFF ); \ -} -#endif - void mbedtls_md5_init( mbedtls_md5_context *ctx ) { memset( ctx, 0, sizeof( mbedtls_md5_context ) ); @@ -117,125 +89,134 @@ void mbedtls_md5_starts( mbedtls_md5_context *ctx ) int mbedtls_internal_md5_process( mbedtls_md5_context *ctx, const unsigned char data[64] ) { - uint32_t X[16], A, B, C, D; - - GET_UINT32_LE( X[ 0], data, 0 ); - GET_UINT32_LE( X[ 1], data, 4 ); - GET_UINT32_LE( X[ 2], data, 8 ); - GET_UINT32_LE( X[ 3], data, 12 ); - GET_UINT32_LE( X[ 4], data, 16 ); - GET_UINT32_LE( X[ 5], data, 20 ); - GET_UINT32_LE( X[ 6], data, 24 ); - GET_UINT32_LE( X[ 7], data, 28 ); - GET_UINT32_LE( X[ 8], data, 32 ); - GET_UINT32_LE( X[ 9], data, 36 ); - GET_UINT32_LE( X[10], data, 40 ); - GET_UINT32_LE( X[11], data, 44 ); - GET_UINT32_LE( X[12], data, 48 ); - GET_UINT32_LE( X[13], data, 52 ); - GET_UINT32_LE( X[14], data, 56 ); - GET_UINT32_LE( X[15], data, 60 ); - -#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) - -#define P(a,b,c,d,k,s,t) \ -{ \ - a += F(b,c,d) + X[k] + t; a = S(a,s) + b; \ -} - - A = ctx->state[0]; - B = ctx->state[1]; - C = ctx->state[2]; - D = ctx->state[3]; - -#define F(x,y,z) (z ^ (x & (y ^ z))) - - P( A, B, C, D, 0, 7, 0xD76AA478 ); - P( D, A, B, C, 1, 12, 0xE8C7B756 ); - P( C, D, A, B, 2, 17, 0x242070DB ); - P( B, C, D, A, 3, 22, 0xC1BDCEEE ); - P( A, B, C, D, 4, 7, 0xF57C0FAF ); - P( D, A, B, C, 5, 12, 0x4787C62A ); - P( C, D, A, B, 6, 17, 0xA8304613 ); - P( B, C, D, A, 7, 22, 0xFD469501 ); - P( A, B, C, D, 8, 7, 0x698098D8 ); - P( D, A, B, C, 9, 12, 0x8B44F7AF ); - P( C, D, A, B, 10, 17, 0xFFFF5BB1 ); - P( B, C, D, A, 11, 22, 0x895CD7BE ); - P( A, B, C, D, 12, 7, 0x6B901122 ); - P( D, A, B, C, 13, 12, 0xFD987193 ); - P( C, D, A, B, 14, 17, 0xA679438E ); - P( B, C, D, A, 15, 22, 0x49B40821 ); + struct + { + uint32_t X[16], A, B, C, D; + } local; + + local.X[ 0] = MBEDTLS_GET_UINT32_LE( data, 0 ); + local.X[ 1] = MBEDTLS_GET_UINT32_LE( data, 4 ); + local.X[ 2] = MBEDTLS_GET_UINT32_LE( data, 8 ); + local.X[ 3] = MBEDTLS_GET_UINT32_LE( data, 12 ); + local.X[ 4] = MBEDTLS_GET_UINT32_LE( data, 16 ); + local.X[ 5] = MBEDTLS_GET_UINT32_LE( data, 20 ); + local.X[ 6] = MBEDTLS_GET_UINT32_LE( data, 24 ); + local.X[ 7] = MBEDTLS_GET_UINT32_LE( data, 28 ); + local.X[ 8] = MBEDTLS_GET_UINT32_LE( data, 32 ); + local.X[ 9] = MBEDTLS_GET_UINT32_LE( data, 36 ); + local.X[10] = MBEDTLS_GET_UINT32_LE( data, 40 ); + local.X[11] = MBEDTLS_GET_UINT32_LE( data, 44 ); + local.X[12] = MBEDTLS_GET_UINT32_LE( data, 48 ); + local.X[13] = MBEDTLS_GET_UINT32_LE( data, 52 ); + local.X[14] = MBEDTLS_GET_UINT32_LE( data, 56 ); + local.X[15] = MBEDTLS_GET_UINT32_LE( data, 60 ); + +#define S(x,n) \ + ( ( (x) << (n) ) | ( ( (x) & 0xFFFFFFFF) >> ( 32 - (n) ) ) ) + +#define P(a,b,c,d,k,s,t) \ + do \ + { \ + (a) += F((b),(c),(d)) + local.X[(k)] + (t); \ + (a) = S((a),(s)) + (b); \ + } while( 0 ) + + local.A = ctx->state[0]; + local.B = ctx->state[1]; + local.C = ctx->state[2]; + local.D = ctx->state[3]; + +#define F(x,y,z) ((z) ^ ((x) & ((y) ^ (z)))) + + P( local.A, local.B, local.C, local.D, 0, 7, 0xD76AA478 ); + P( local.D, local.A, local.B, local.C, 1, 12, 0xE8C7B756 ); + P( local.C, local.D, local.A, local.B, 2, 17, 0x242070DB ); + P( local.B, local.C, local.D, local.A, 3, 22, 0xC1BDCEEE ); + P( local.A, local.B, local.C, local.D, 4, 7, 0xF57C0FAF ); + P( local.D, local.A, local.B, local.C, 5, 12, 0x4787C62A ); + P( local.C, local.D, local.A, local.B, 6, 17, 0xA8304613 ); + P( local.B, local.C, local.D, local.A, 7, 22, 0xFD469501 ); + P( local.A, local.B, local.C, local.D, 8, 7, 0x698098D8 ); + P( local.D, local.A, local.B, local.C, 9, 12, 0x8B44F7AF ); + P( local.C, local.D, local.A, local.B, 10, 17, 0xFFFF5BB1 ); + P( local.B, local.C, local.D, local.A, 11, 22, 0x895CD7BE ); + P( local.A, local.B, local.C, local.D, 12, 7, 0x6B901122 ); + P( local.D, local.A, local.B, local.C, 13, 12, 0xFD987193 ); + P( local.C, local.D, local.A, local.B, 14, 17, 0xA679438E ); + P( local.B, local.C, local.D, local.A, 15, 22, 0x49B40821 ); #undef F -#define F(x,y,z) (y ^ (z & (x ^ y))) - - P( A, B, C, D, 1, 5, 0xF61E2562 ); - P( D, A, B, C, 6, 9, 0xC040B340 ); - P( C, D, A, B, 11, 14, 0x265E5A51 ); - P( B, C, D, A, 0, 20, 0xE9B6C7AA ); - P( A, B, C, D, 5, 5, 0xD62F105D ); - P( D, A, B, C, 10, 9, 0x02441453 ); - P( C, D, A, B, 15, 14, 0xD8A1E681 ); - P( B, C, D, A, 4, 20, 0xE7D3FBC8 ); - P( A, B, C, D, 9, 5, 0x21E1CDE6 ); - P( D, A, B, C, 14, 9, 0xC33707D6 ); - P( C, D, A, B, 3, 14, 0xF4D50D87 ); - P( B, C, D, A, 8, 20, 0x455A14ED ); - P( A, B, C, D, 13, 5, 0xA9E3E905 ); - P( D, A, B, C, 2, 9, 0xFCEFA3F8 ); - P( C, D, A, B, 7, 14, 0x676F02D9 ); - P( B, C, D, A, 12, 20, 0x8D2A4C8A ); +#define F(x,y,z) ((y) ^ ((z) & ((x) ^ (y)))) + + P( local.A, local.B, local.C, local.D, 1, 5, 0xF61E2562 ); + P( local.D, local.A, local.B, local.C, 6, 9, 0xC040B340 ); + P( local.C, local.D, local.A, local.B, 11, 14, 0x265E5A51 ); + P( local.B, local.C, local.D, local.A, 0, 20, 0xE9B6C7AA ); + P( local.A, local.B, local.C, local.D, 5, 5, 0xD62F105D ); + P( local.D, local.A, local.B, local.C, 10, 9, 0x02441453 ); + P( local.C, local.D, local.A, local.B, 15, 14, 0xD8A1E681 ); + P( local.B, local.C, local.D, local.A, 4, 20, 0xE7D3FBC8 ); + P( local.A, local.B, local.C, local.D, 9, 5, 0x21E1CDE6 ); + P( local.D, local.A, local.B, local.C, 14, 9, 0xC33707D6 ); + P( local.C, local.D, local.A, local.B, 3, 14, 0xF4D50D87 ); + P( local.B, local.C, local.D, local.A, 8, 20, 0x455A14ED ); + P( local.A, local.B, local.C, local.D, 13, 5, 0xA9E3E905 ); + P( local.D, local.A, local.B, local.C, 2, 9, 0xFCEFA3F8 ); + P( local.C, local.D, local.A, local.B, 7, 14, 0x676F02D9 ); + P( local.B, local.C, local.D, local.A, 12, 20, 0x8D2A4C8A ); #undef F -#define F(x,y,z) (x ^ y ^ z) - - P( A, B, C, D, 5, 4, 0xFFFA3942 ); - P( D, A, B, C, 8, 11, 0x8771F681 ); - P( C, D, A, B, 11, 16, 0x6D9D6122 ); - P( B, C, D, A, 14, 23, 0xFDE5380C ); - P( A, B, C, D, 1, 4, 0xA4BEEA44 ); - P( D, A, B, C, 4, 11, 0x4BDECFA9 ); - P( C, D, A, B, 7, 16, 0xF6BB4B60 ); - P( B, C, D, A, 10, 23, 0xBEBFBC70 ); - P( A, B, C, D, 13, 4, 0x289B7EC6 ); - P( D, A, B, C, 0, 11, 0xEAA127FA ); - P( C, D, A, B, 3, 16, 0xD4EF3085 ); - P( B, C, D, A, 6, 23, 0x04881D05 ); - P( A, B, C, D, 9, 4, 0xD9D4D039 ); - P( D, A, B, C, 12, 11, 0xE6DB99E5 ); - P( C, D, A, B, 15, 16, 0x1FA27CF8 ); - P( B, C, D, A, 2, 23, 0xC4AC5665 ); +#define F(x,y,z) ((x) ^ (y) ^ (z)) + + P( local.A, local.B, local.C, local.D, 5, 4, 0xFFFA3942 ); + P( local.D, local.A, local.B, local.C, 8, 11, 0x8771F681 ); + P( local.C, local.D, local.A, local.B, 11, 16, 0x6D9D6122 ); + P( local.B, local.C, local.D, local.A, 14, 23, 0xFDE5380C ); + P( local.A, local.B, local.C, local.D, 1, 4, 0xA4BEEA44 ); + P( local.D, local.A, local.B, local.C, 4, 11, 0x4BDECFA9 ); + P( local.C, local.D, local.A, local.B, 7, 16, 0xF6BB4B60 ); + P( local.B, local.C, local.D, local.A, 10, 23, 0xBEBFBC70 ); + P( local.A, local.B, local.C, local.D, 13, 4, 0x289B7EC6 ); + P( local.D, local.A, local.B, local.C, 0, 11, 0xEAA127FA ); + P( local.C, local.D, local.A, local.B, 3, 16, 0xD4EF3085 ); + P( local.B, local.C, local.D, local.A, 6, 23, 0x04881D05 ); + P( local.A, local.B, local.C, local.D, 9, 4, 0xD9D4D039 ); + P( local.D, local.A, local.B, local.C, 12, 11, 0xE6DB99E5 ); + P( local.C, local.D, local.A, local.B, 15, 16, 0x1FA27CF8 ); + P( local.B, local.C, local.D, local.A, 2, 23, 0xC4AC5665 ); #undef F -#define F(x,y,z) (y ^ (x | ~z)) - - P( A, B, C, D, 0, 6, 0xF4292244 ); - P( D, A, B, C, 7, 10, 0x432AFF97 ); - P( C, D, A, B, 14, 15, 0xAB9423A7 ); - P( B, C, D, A, 5, 21, 0xFC93A039 ); - P( A, B, C, D, 12, 6, 0x655B59C3 ); - P( D, A, B, C, 3, 10, 0x8F0CCC92 ); - P( C, D, A, B, 10, 15, 0xFFEFF47D ); - P( B, C, D, A, 1, 21, 0x85845DD1 ); - P( A, B, C, D, 8, 6, 0x6FA87E4F ); - P( D, A, B, C, 15, 10, 0xFE2CE6E0 ); - P( C, D, A, B, 6, 15, 0xA3014314 ); - P( B, C, D, A, 13, 21, 0x4E0811A1 ); - P( A, B, C, D, 4, 6, 0xF7537E82 ); - P( D, A, B, C, 11, 10, 0xBD3AF235 ); - P( C, D, A, B, 2, 15, 0x2AD7D2BB ); - P( B, C, D, A, 9, 21, 0xEB86D391 ); +#define F(x,y,z) ((y) ^ ((x) | ~(z))) + + P( local.A, local.B, local.C, local.D, 0, 6, 0xF4292244 ); + P( local.D, local.A, local.B, local.C, 7, 10, 0x432AFF97 ); + P( local.C, local.D, local.A, local.B, 14, 15, 0xAB9423A7 ); + P( local.B, local.C, local.D, local.A, 5, 21, 0xFC93A039 ); + P( local.A, local.B, local.C, local.D, 12, 6, 0x655B59C3 ); + P( local.D, local.A, local.B, local.C, 3, 10, 0x8F0CCC92 ); + P( local.C, local.D, local.A, local.B, 10, 15, 0xFFEFF47D ); + P( local.B, local.C, local.D, local.A, 1, 21, 0x85845DD1 ); + P( local.A, local.B, local.C, local.D, 8, 6, 0x6FA87E4F ); + P( local.D, local.A, local.B, local.C, 15, 10, 0xFE2CE6E0 ); + P( local.C, local.D, local.A, local.B, 6, 15, 0xA3014314 ); + P( local.B, local.C, local.D, local.A, 13, 21, 0x4E0811A1 ); + P( local.A, local.B, local.C, local.D, 4, 6, 0xF7537E82 ); + P( local.D, local.A, local.B, local.C, 11, 10, 0xBD3AF235 ); + P( local.C, local.D, local.A, local.B, 2, 15, 0x2AD7D2BB ); + P( local.B, local.C, local.D, local.A, 9, 21, 0xEB86D391 ); #undef F - ctx->state[0] += A; - ctx->state[1] += B; - ctx->state[2] += C; - ctx->state[3] += D; + ctx->state[0] += local.A; + ctx->state[1] += local.B; + ctx->state[2] += local.C; + ctx->state[3] += local.D; + + /* Zeroise variables to clear sensitive data from memory. */ + mbedtls_platform_zeroize( &local, sizeof( local ) ); return( 0 ); } @@ -256,7 +237,7 @@ int mbedtls_md5_update_ret( mbedtls_md5_context *ctx, const unsigned char *input, size_t ilen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t fill; uint32_t left; @@ -315,7 +296,7 @@ void mbedtls_md5_update( mbedtls_md5_context *ctx, int mbedtls_md5_finish_ret( mbedtls_md5_context *ctx, unsigned char output[16] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; uint32_t used; uint32_t high, low; @@ -349,8 +330,8 @@ int mbedtls_md5_finish_ret( mbedtls_md5_context *ctx, | ( ctx->total[1] << 3 ); low = ( ctx->total[0] << 3 ); - PUT_UINT32_LE( low, ctx->buffer, 56 ); - PUT_UINT32_LE( high, ctx->buffer, 60 ); + MBEDTLS_PUT_UINT32_LE( low, ctx->buffer, 56 ); + MBEDTLS_PUT_UINT32_LE( high, ctx->buffer, 60 ); if( ( ret = mbedtls_internal_md5_process( ctx, ctx->buffer ) ) != 0 ) return( ret ); @@ -358,10 +339,10 @@ int mbedtls_md5_finish_ret( mbedtls_md5_context *ctx, /* * Output final state */ - PUT_UINT32_LE( ctx->state[0], output, 0 ); - PUT_UINT32_LE( ctx->state[1], output, 4 ); - PUT_UINT32_LE( ctx->state[2], output, 8 ); - PUT_UINT32_LE( ctx->state[3], output, 12 ); + MBEDTLS_PUT_UINT32_LE( ctx->state[0], output, 0 ); + MBEDTLS_PUT_UINT32_LE( ctx->state[1], output, 4 ); + MBEDTLS_PUT_UINT32_LE( ctx->state[2], output, 8 ); + MBEDTLS_PUT_UINT32_LE( ctx->state[3], output, 12 ); return( 0 ); } @@ -383,7 +364,7 @@ int mbedtls_md5_ret( const unsigned char *input, size_t ilen, unsigned char output[16] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_md5_context ctx; mbedtls_md5_init( &ctx ); @@ -424,8 +405,7 @@ static const unsigned char md5_test_buf[7][81] = { "message digest" }, { "abcdefghijklmnopqrstuvwxyz" }, { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" }, - { "12345678901234567890123456789012345678901234567890123456789012" - "345678901234567890" } + { "12345678901234567890123456789012345678901234567890123456789012345678901234567890" } }; static const size_t md5_test_buflen[7] = diff --git a/Externals/mbedtls/library/md_wrap.c b/Externals/mbedtls/library/md_wrap.c deleted file mode 100644 index 32f087197657..000000000000 --- a/Externals/mbedtls/library/md_wrap.c +++ /dev/null @@ -1,586 +0,0 @@ -/** - * \file md_wrap.c - * - * \brief Generic message digest wrapper for mbed TLS - * - * \author Adriaan de Jong - * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) - */ - -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif - -#if defined(MBEDTLS_MD_C) - -#include "mbedtls/md_internal.h" - -#if defined(MBEDTLS_MD2_C) -#include "mbedtls/md2.h" -#endif - -#if defined(MBEDTLS_MD4_C) -#include "mbedtls/md4.h" -#endif - -#if defined(MBEDTLS_MD5_C) -#include "mbedtls/md5.h" -#endif - -#if defined(MBEDTLS_RIPEMD160_C) -#include "mbedtls/ripemd160.h" -#endif - -#if defined(MBEDTLS_SHA1_C) -#include "mbedtls/sha1.h" -#endif - -#if defined(MBEDTLS_SHA256_C) -#include "mbedtls/sha256.h" -#endif - -#if defined(MBEDTLS_SHA512_C) -#include "mbedtls/sha512.h" -#endif - -#if defined(MBEDTLS_PLATFORM_C) -#include "mbedtls/platform.h" -#else -#include -#define mbedtls_calloc calloc -#define mbedtls_free free -#endif - -#if defined(MBEDTLS_MD2_C) - -static int md2_starts_wrap( void *ctx ) -{ - return( mbedtls_md2_starts_ret( (mbedtls_md2_context *) ctx ) ); -} - -static int md2_update_wrap( void *ctx, const unsigned char *input, - size_t ilen ) -{ - return( mbedtls_md2_update_ret( (mbedtls_md2_context *) ctx, input, ilen ) ); -} - -static int md2_finish_wrap( void *ctx, unsigned char *output ) -{ - return( mbedtls_md2_finish_ret( (mbedtls_md2_context *) ctx, output ) ); -} - -static void *md2_ctx_alloc( void ) -{ - void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_md2_context ) ); - - if( ctx != NULL ) - mbedtls_md2_init( (mbedtls_md2_context *) ctx ); - - return( ctx ); -} - -static void md2_ctx_free( void *ctx ) -{ - mbedtls_md2_free( (mbedtls_md2_context *) ctx ); - mbedtls_free( ctx ); -} - -static void md2_clone_wrap( void *dst, const void *src ) -{ - mbedtls_md2_clone( (mbedtls_md2_context *) dst, - (const mbedtls_md2_context *) src ); -} - -static int md2_process_wrap( void *ctx, const unsigned char *data ) -{ - ((void) data); - - return( mbedtls_internal_md2_process( (mbedtls_md2_context *) ctx ) ); -} - -const mbedtls_md_info_t mbedtls_md2_info = { - MBEDTLS_MD_MD2, - "MD2", - 16, - 16, - md2_starts_wrap, - md2_update_wrap, - md2_finish_wrap, - mbedtls_md2_ret, - md2_ctx_alloc, - md2_ctx_free, - md2_clone_wrap, - md2_process_wrap, -}; - -#endif /* MBEDTLS_MD2_C */ - -#if defined(MBEDTLS_MD4_C) - -static int md4_starts_wrap( void *ctx ) -{ - return( mbedtls_md4_starts_ret( (mbedtls_md4_context *) ctx ) ); -} - -static int md4_update_wrap( void *ctx, const unsigned char *input, - size_t ilen ) -{ - return( mbedtls_md4_update_ret( (mbedtls_md4_context *) ctx, input, ilen ) ); -} - -static int md4_finish_wrap( void *ctx, unsigned char *output ) -{ - return( mbedtls_md4_finish_ret( (mbedtls_md4_context *) ctx, output ) ); -} - -static void *md4_ctx_alloc( void ) -{ - void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_md4_context ) ); - - if( ctx != NULL ) - mbedtls_md4_init( (mbedtls_md4_context *) ctx ); - - return( ctx ); -} - -static void md4_ctx_free( void *ctx ) -{ - mbedtls_md4_free( (mbedtls_md4_context *) ctx ); - mbedtls_free( ctx ); -} - -static void md4_clone_wrap( void *dst, const void *src ) -{ - mbedtls_md4_clone( (mbedtls_md4_context *) dst, - (const mbedtls_md4_context *) src ); -} - -static int md4_process_wrap( void *ctx, const unsigned char *data ) -{ - return( mbedtls_internal_md4_process( (mbedtls_md4_context *) ctx, data ) ); -} - -const mbedtls_md_info_t mbedtls_md4_info = { - MBEDTLS_MD_MD4, - "MD4", - 16, - 64, - md4_starts_wrap, - md4_update_wrap, - md4_finish_wrap, - mbedtls_md4_ret, - md4_ctx_alloc, - md4_ctx_free, - md4_clone_wrap, - md4_process_wrap, -}; - -#endif /* MBEDTLS_MD4_C */ - -#if defined(MBEDTLS_MD5_C) - -static int md5_starts_wrap( void *ctx ) -{ - return( mbedtls_md5_starts_ret( (mbedtls_md5_context *) ctx ) ); -} - -static int md5_update_wrap( void *ctx, const unsigned char *input, - size_t ilen ) -{ - return( mbedtls_md5_update_ret( (mbedtls_md5_context *) ctx, input, ilen ) ); -} - -static int md5_finish_wrap( void *ctx, unsigned char *output ) -{ - return( mbedtls_md5_finish_ret( (mbedtls_md5_context *) ctx, output ) ); -} - -static void *md5_ctx_alloc( void ) -{ - void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_md5_context ) ); - - if( ctx != NULL ) - mbedtls_md5_init( (mbedtls_md5_context *) ctx ); - - return( ctx ); -} - -static void md5_ctx_free( void *ctx ) -{ - mbedtls_md5_free( (mbedtls_md5_context *) ctx ); - mbedtls_free( ctx ); -} - -static void md5_clone_wrap( void *dst, const void *src ) -{ - mbedtls_md5_clone( (mbedtls_md5_context *) dst, - (const mbedtls_md5_context *) src ); -} - -static int md5_process_wrap( void *ctx, const unsigned char *data ) -{ - return( mbedtls_internal_md5_process( (mbedtls_md5_context *) ctx, data ) ); -} - -const mbedtls_md_info_t mbedtls_md5_info = { - MBEDTLS_MD_MD5, - "MD5", - 16, - 64, - md5_starts_wrap, - md5_update_wrap, - md5_finish_wrap, - mbedtls_md5_ret, - md5_ctx_alloc, - md5_ctx_free, - md5_clone_wrap, - md5_process_wrap, -}; - -#endif /* MBEDTLS_MD5_C */ - -#if defined(MBEDTLS_RIPEMD160_C) - -static int ripemd160_starts_wrap( void *ctx ) -{ - return( mbedtls_ripemd160_starts_ret( (mbedtls_ripemd160_context *) ctx ) ); -} - -static int ripemd160_update_wrap( void *ctx, const unsigned char *input, - size_t ilen ) -{ - return( mbedtls_ripemd160_update_ret( (mbedtls_ripemd160_context *) ctx, - input, ilen ) ); -} - -static int ripemd160_finish_wrap( void *ctx, unsigned char *output ) -{ - return( mbedtls_ripemd160_finish_ret( (mbedtls_ripemd160_context *) ctx, - output ) ); -} - -static void *ripemd160_ctx_alloc( void ) -{ - void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_ripemd160_context ) ); - - if( ctx != NULL ) - mbedtls_ripemd160_init( (mbedtls_ripemd160_context *) ctx ); - - return( ctx ); -} - -static void ripemd160_ctx_free( void *ctx ) -{ - mbedtls_ripemd160_free( (mbedtls_ripemd160_context *) ctx ); - mbedtls_free( ctx ); -} - -static void ripemd160_clone_wrap( void *dst, const void *src ) -{ - mbedtls_ripemd160_clone( (mbedtls_ripemd160_context *) dst, - (const mbedtls_ripemd160_context *) src ); -} - -static int ripemd160_process_wrap( void *ctx, const unsigned char *data ) -{ - return( mbedtls_internal_ripemd160_process( - (mbedtls_ripemd160_context *) ctx, data ) ); -} - -const mbedtls_md_info_t mbedtls_ripemd160_info = { - MBEDTLS_MD_RIPEMD160, - "RIPEMD160", - 20, - 64, - ripemd160_starts_wrap, - ripemd160_update_wrap, - ripemd160_finish_wrap, - mbedtls_ripemd160_ret, - ripemd160_ctx_alloc, - ripemd160_ctx_free, - ripemd160_clone_wrap, - ripemd160_process_wrap, -}; - -#endif /* MBEDTLS_RIPEMD160_C */ - -#if defined(MBEDTLS_SHA1_C) - -static int sha1_starts_wrap( void *ctx ) -{ - return( mbedtls_sha1_starts_ret( (mbedtls_sha1_context *) ctx ) ); -} - -static int sha1_update_wrap( void *ctx, const unsigned char *input, - size_t ilen ) -{ - return( mbedtls_sha1_update_ret( (mbedtls_sha1_context *) ctx, - input, ilen ) ); -} - -static int sha1_finish_wrap( void *ctx, unsigned char *output ) -{ - return( mbedtls_sha1_finish_ret( (mbedtls_sha1_context *) ctx, output ) ); -} - -static void *sha1_ctx_alloc( void ) -{ - void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_sha1_context ) ); - - if( ctx != NULL ) - mbedtls_sha1_init( (mbedtls_sha1_context *) ctx ); - - return( ctx ); -} - -static void sha1_clone_wrap( void *dst, const void *src ) -{ - mbedtls_sha1_clone( (mbedtls_sha1_context *) dst, - (const mbedtls_sha1_context *) src ); -} - -static void sha1_ctx_free( void *ctx ) -{ - mbedtls_sha1_free( (mbedtls_sha1_context *) ctx ); - mbedtls_free( ctx ); -} - -static int sha1_process_wrap( void *ctx, const unsigned char *data ) -{ - return( mbedtls_internal_sha1_process( (mbedtls_sha1_context *) ctx, - data ) ); -} - -const mbedtls_md_info_t mbedtls_sha1_info = { - MBEDTLS_MD_SHA1, - "SHA1", - 20, - 64, - sha1_starts_wrap, - sha1_update_wrap, - sha1_finish_wrap, - mbedtls_sha1_ret, - sha1_ctx_alloc, - sha1_ctx_free, - sha1_clone_wrap, - sha1_process_wrap, -}; - -#endif /* MBEDTLS_SHA1_C */ - -/* - * Wrappers for generic message digests - */ -#if defined(MBEDTLS_SHA256_C) - -static int sha224_starts_wrap( void *ctx ) -{ - return( mbedtls_sha256_starts_ret( (mbedtls_sha256_context *) ctx, 1 ) ); -} - -static int sha224_update_wrap( void *ctx, const unsigned char *input, - size_t ilen ) -{ - return( mbedtls_sha256_update_ret( (mbedtls_sha256_context *) ctx, - input, ilen ) ); -} - -static int sha224_finish_wrap( void *ctx, unsigned char *output ) -{ - return( mbedtls_sha256_finish_ret( (mbedtls_sha256_context *) ctx, - output ) ); -} - -static int sha224_wrap( const unsigned char *input, size_t ilen, - unsigned char *output ) -{ - return( mbedtls_sha256_ret( input, ilen, output, 1 ) ); -} - -static void *sha224_ctx_alloc( void ) -{ - void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_sha256_context ) ); - - if( ctx != NULL ) - mbedtls_sha256_init( (mbedtls_sha256_context *) ctx ); - - return( ctx ); -} - -static void sha224_ctx_free( void *ctx ) -{ - mbedtls_sha256_free( (mbedtls_sha256_context *) ctx ); - mbedtls_free( ctx ); -} - -static void sha224_clone_wrap( void *dst, const void *src ) -{ - mbedtls_sha256_clone( (mbedtls_sha256_context *) dst, - (const mbedtls_sha256_context *) src ); -} - -static int sha224_process_wrap( void *ctx, const unsigned char *data ) -{ - return( mbedtls_internal_sha256_process( (mbedtls_sha256_context *) ctx, - data ) ); -} - -const mbedtls_md_info_t mbedtls_sha224_info = { - MBEDTLS_MD_SHA224, - "SHA224", - 28, - 64, - sha224_starts_wrap, - sha224_update_wrap, - sha224_finish_wrap, - sha224_wrap, - sha224_ctx_alloc, - sha224_ctx_free, - sha224_clone_wrap, - sha224_process_wrap, -}; - -static int sha256_starts_wrap( void *ctx ) -{ - return( mbedtls_sha256_starts_ret( (mbedtls_sha256_context *) ctx, 0 ) ); -} - -static int sha256_wrap( const unsigned char *input, size_t ilen, - unsigned char *output ) -{ - return( mbedtls_sha256_ret( input, ilen, output, 0 ) ); -} - -const mbedtls_md_info_t mbedtls_sha256_info = { - MBEDTLS_MD_SHA256, - "SHA256", - 32, - 64, - sha256_starts_wrap, - sha224_update_wrap, - sha224_finish_wrap, - sha256_wrap, - sha224_ctx_alloc, - sha224_ctx_free, - sha224_clone_wrap, - sha224_process_wrap, -}; - -#endif /* MBEDTLS_SHA256_C */ - -#if defined(MBEDTLS_SHA512_C) - -static int sha384_starts_wrap( void *ctx ) -{ - return( mbedtls_sha512_starts_ret( (mbedtls_sha512_context *) ctx, 1 ) ); -} - -static int sha384_update_wrap( void *ctx, const unsigned char *input, - size_t ilen ) -{ - return( mbedtls_sha512_update_ret( (mbedtls_sha512_context *) ctx, - input, ilen ) ); -} - -static int sha384_finish_wrap( void *ctx, unsigned char *output ) -{ - return( mbedtls_sha512_finish_ret( (mbedtls_sha512_context *) ctx, - output ) ); -} - -static int sha384_wrap( const unsigned char *input, size_t ilen, - unsigned char *output ) -{ - return( mbedtls_sha512_ret( input, ilen, output, 1 ) ); -} - -static void *sha384_ctx_alloc( void ) -{ - void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_sha512_context ) ); - - if( ctx != NULL ) - mbedtls_sha512_init( (mbedtls_sha512_context *) ctx ); - - return( ctx ); -} - -static void sha384_ctx_free( void *ctx ) -{ - mbedtls_sha512_free( (mbedtls_sha512_context *) ctx ); - mbedtls_free( ctx ); -} - -static void sha384_clone_wrap( void *dst, const void *src ) -{ - mbedtls_sha512_clone( (mbedtls_sha512_context *) dst, - (const mbedtls_sha512_context *) src ); -} - -static int sha384_process_wrap( void *ctx, const unsigned char *data ) -{ - return( mbedtls_internal_sha512_process( (mbedtls_sha512_context *) ctx, - data ) ); -} - -const mbedtls_md_info_t mbedtls_sha384_info = { - MBEDTLS_MD_SHA384, - "SHA384", - 48, - 128, - sha384_starts_wrap, - sha384_update_wrap, - sha384_finish_wrap, - sha384_wrap, - sha384_ctx_alloc, - sha384_ctx_free, - sha384_clone_wrap, - sha384_process_wrap, -}; - -static int sha512_starts_wrap( void *ctx ) -{ - return( mbedtls_sha512_starts_ret( (mbedtls_sha512_context *) ctx, 0 ) ); -} - -static int sha512_wrap( const unsigned char *input, size_t ilen, - unsigned char *output ) -{ - return( mbedtls_sha512_ret( input, ilen, output, 0 ) ); -} - -const mbedtls_md_info_t mbedtls_sha512_info = { - MBEDTLS_MD_SHA512, - "SHA512", - 64, - 128, - sha512_starts_wrap, - sha384_update_wrap, - sha384_finish_wrap, - sha512_wrap, - sha384_ctx_alloc, - sha384_ctx_free, - sha384_clone_wrap, - sha384_process_wrap, -}; - -#endif /* MBEDTLS_SHA512_C */ - -#endif /* MBEDTLS_MD_C */ diff --git a/Externals/mbedtls/library/memory_buffer_alloc.c b/Externals/mbedtls/library/memory_buffer_alloc.c index 51ea7c41d773..0d5d27d3de60 100644 --- a/Externals/mbedtls/library/memory_buffer_alloc.c +++ b/Externals/mbedtls/library/memory_buffer_alloc.c @@ -1,7 +1,7 @@ /* * Buffer-based memory allocator * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,15 +15,9 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) #include "mbedtls/memory_buffer_alloc.h" diff --git a/Externals/mbedtls/library/mps_common.h b/Externals/mbedtls/library/mps_common.h new file mode 100644 index 000000000000..d20776f1595a --- /dev/null +++ b/Externals/mbedtls/library/mps_common.h @@ -0,0 +1,195 @@ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +/** + * \file mps_common.h + * + * \brief Common functions and macros used by MPS + */ + +#ifndef MBEDTLS_MPS_COMMON_H +#define MBEDTLS_MPS_COMMON_H + +#include "mps_error.h" + +#include + +/** + * \name SECTION: MPS Configuration + * + * \{ + */ + +/*! This flag controls whether the MPS-internal components + * (reader, writer, Layer 1-3) perform validation of the + * expected abstract state at the entry of API calls. + * + * Context: All MPS API functions impose assumptions/preconditions on the + * context on which they operate. For example, every structure has a notion of + * state integrity which is established by `xxx_init()` and preserved by any + * calls to the MPS API which satisfy their preconditions and either succeed, + * or fail with an error code which is explicitly documented to not corrupt + * structure integrity (such as WANT_READ and WANT_WRITE); + * apart from `xxx_init()` any function assumes state integrity as a + * precondition (but usually more). If any of the preconditions is violated, + * the function's behavior is entirely undefined. + * In addition to state integrity, all MPS structures have a more refined + * notion of abstract state that the API operates on. For example, all layers + * have a notion of 'abtract read state' which indicates if incoming data has + * been passed to the user, e.g. through mps_l2_read_start() for Layer 2 + * or mps_l3_read() in Layer 3. After such a call, it doesn't make sense to + * call these reading functions again until the incoming data has been + * explicitly 'consumed', e.g. through mps_l2_read_consume() for Layer 2 or + * mps_l3_read_consume() on Layer 3. However, even if it doesn't make sense, + * it's a design choice whether the API should fail gracefully on such + * non-sensical calls or not, and that's what this option is about: + * + * This option determines whether the expected abstract state + * is part of the API preconditions or not: If the option is set, + * then the abstract state is not part of the precondition and is + * thus required to be validated by the implementation. If an unexpected + * abstract state is encountered, the implementation must fail gracefully + * with error #MBEDTLS_ERR_MPS_OPERATION_UNEXPECTED. + * Conversely, if this option is not set, then the expected abstract state + * is included in the preconditions of the respective API calls, and + * an implementation's behaviour is undefined if the abstract state is + * not as expected. + * + * For example: Enabling this makes mps_l2_read_done() fail if + * no incoming record is currently open; disabling this would + * lead to undefined behavior in this case. + * + * Comment this to remove state validation. + */ +#define MBEDTLS_MPS_STATE_VALIDATION + +/*! This flag enables/disables assertions on the internal state of MPS. + * + * Assertions are sanity checks that should never trigger when MPS + * is used within the bounds of its API and preconditions. + * + * Enabling this increases security by limiting the scope of + * potential bugs, but comes at the cost of increased code size. + * + * Note: So far, there is no guiding principle as to what + * expected conditions merit an assertion, and which don't. + * + * Comment this to disable assertions. + */ +#define MBEDTLS_MPS_ENABLE_ASSERTIONS + +/*! This flag controls whether tracing for MPS should be enabled. */ +//#define MBEDTLS_MPS_ENABLE_TRACE + +#if defined(MBEDTLS_MPS_STATE_VALIDATION) + +#define MBEDTLS_MPS_STATE_VALIDATE_RAW( cond, string ) \ + do \ + { \ + if( !(cond) ) \ + { \ + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_ERROR, string ); \ + MBEDTLS_MPS_TRACE_RETURN( MBEDTLS_ERR_MPS_OPERATION_UNEXPECTED ); \ + } \ + } while( 0 ) + +#else /* MBEDTLS_MPS_STATE_VALIDATION */ + +#define MBEDTLS_MPS_STATE_VALIDATE_RAW( cond, string ) \ + do \ + { \ + ( cond ); \ + } while( 0 ) + +#endif /* MBEDTLS_MPS_STATE_VALIDATION */ + +#if defined(MBEDTLS_MPS_ENABLE_ASSERTIONS) + +#define MBEDTLS_MPS_ASSERT_RAW( cond, string ) \ + do \ + { \ + if( !(cond) ) \ + { \ + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_ERROR, string ); \ + MBEDTLS_MPS_TRACE_RETURN( MBEDTLS_ERR_MPS_INTERNAL_ERROR ); \ + } \ + } while( 0 ) + +#else /* MBEDTLS_MPS_ENABLE_ASSERTIONS */ + +#define MBEDTLS_MPS_ASSERT_RAW( cond, string ) do {} while( 0 ) + +#endif /* MBEDTLS_MPS_ENABLE_ASSERTIONS */ + + +/* \} name SECTION: MPS Configuration */ + +/** + * \name SECTION: Common types + * + * Various common types used throughout MPS. + * \{ + */ + +/** \brief The type of buffer sizes and offsets used in MPS structures. + * + * This is an unsigned integer type that should be large enough to + * hold the length of any buffer or message processed by MPS. + * + * The reason to pick a value as small as possible here is + * to reduce the size of MPS structures. + * + * \warning Care has to be taken when using a narrower type + * than ::mbedtls_mps_size_t here because of + * potential truncation during conversion. + * + * \warning Handshake messages in TLS may be up to 2^24 ~ 16Mb in size. + * If mbedtls_mps_[opt_]stored_size_t is smaller than that, the + * maximum handshake message is restricted accordingly. + * + * For now, we use the default type of size_t throughout, and the use of + * smaller types or different types for ::mbedtls_mps_size_t and + * ::mbedtls_mps_stored_size_t is not yet supported. + * + */ +typedef size_t mbedtls_mps_stored_size_t; +#define MBEDTLS_MPS_STORED_SIZE_MAX ( (mbedtls_mps_stored_size_t) -1 ) + +/** \brief The type of buffer sizes and offsets used in the MPS API + * and implementation. + * + * This must be at least as wide as ::mbedtls_stored_size_t but + * may be chosen to be strictly larger if more suitable for the + * target architecture. + * + * For example, in a test build for ARM Thumb, using uint_fast16_t + * instead of uint16_t reduced the code size from 1060 Byte to 962 Byte, + * so almost 10%. + */ +typedef size_t mbedtls_mps_size_t; +#define MBEDTLS_MPS_SIZE_MAX ( (mbedtls_mps_size_t) -1 ) + +#if MBEDTLS_MPS_STORED_SIZE_MAX > MBEDTLS_MPS_SIZE_MAX +#error "Misconfiguration of mbedtls_mps_size_t and mbedtls_mps_stored_size_t." +#endif + +/* \} SECTION: Common types */ + + +#endif /* MBEDTLS_MPS_COMMON_H */ diff --git a/Externals/mbedtls/library/mps_error.h b/Externals/mbedtls/library/mps_error.h new file mode 100644 index 000000000000..f78d9a05f15b --- /dev/null +++ b/Externals/mbedtls/library/mps_error.h @@ -0,0 +1,103 @@ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +/** + * \file mps_error.h + * + * \brief Error codes used by MPS + */ + +#ifndef MBEDTLS_MPS_ERROR_H +#define MBEDTLS_MPS_ERROR_H + + +/* TODO: The error code allocation needs to be revisited: + * + * - Should we make (some of) the MPS Reader error codes public? + * If so, we need to adjust MBEDTLS_MPS_READER_MAKE_ERROR() to hit + * a gap in the Mbed TLS public error space. + * If not, we have to make sure we don't forward those errors + * at the level of the public API -- no risk at the moment as + * long as MPS is an experimental component not accessible from + * public API. + */ + +/** + * \name SECTION: MPS general error codes + * + * \{ + */ + +#ifndef MBEDTLS_MPS_ERR_BASE +#define MBEDTLS_MPS_ERR_BASE ( 0 ) +#endif + +#define MBEDTLS_MPS_MAKE_ERROR(code) \ + ( -( MBEDTLS_MPS_ERR_BASE | (code) ) ) + +#define MBEDTLS_ERR_MPS_OPERATION_UNEXPECTED MBEDTLS_MPS_MAKE_ERROR( 0x1 ) +#define MBEDTLS_ERR_MPS_INTERNAL_ERROR MBEDTLS_MPS_MAKE_ERROR( 0x2 ) + +/* \} name SECTION: MPS general error codes */ + +/** + * \name SECTION: MPS Reader error codes + * + * \{ + */ + +#ifndef MBEDTLS_MPS_READER_ERR_BASE +#define MBEDTLS_MPS_READER_ERR_BASE ( 1 << 8 ) +#endif + +#define MBEDTLS_MPS_READER_MAKE_ERROR(code) \ + ( -( MBEDTLS_MPS_READER_ERR_BASE | (code) ) ) + +/*! An attempt to reclaim the data buffer from a reader failed because + * the user hasn't yet read and committed all of it. */ +#define MBEDTLS_ERR_MPS_READER_DATA_LEFT MBEDTLS_MPS_READER_MAKE_ERROR( 0x1 ) + +/*! An invalid argument was passed to the reader. */ +#define MBEDTLS_ERR_MPS_READER_INVALID_ARG MBEDTLS_MPS_READER_MAKE_ERROR( 0x2 ) + +/*! An attempt to move a reader to consuming mode through mbedtls_mps_reader_feed() + * after pausing failed because the provided data is not sufficient to serve the + * read requests that led to the pausing. */ +#define MBEDTLS_ERR_MPS_READER_NEED_MORE MBEDTLS_MPS_READER_MAKE_ERROR( 0x3 ) + +/*! A get request failed because not enough data is available in the reader. */ +#define MBEDTLS_ERR_MPS_READER_OUT_OF_DATA MBEDTLS_MPS_READER_MAKE_ERROR( 0x4 ) + +/*!< A get request after pausing and reactivating the reader failed because + * the request is not in line with the request made prior to pausing. The user + * must not change it's 'strategy' after pausing and reactivating a reader. */ +#define MBEDTLS_ERR_MPS_READER_INCONSISTENT_REQUESTS MBEDTLS_MPS_READER_MAKE_ERROR( 0x5 ) + +/*! An attempt to reclaim the data buffer from a reader failed because the reader + * has no accumulator it can use to backup the data that hasn't been processed. */ +#define MBEDTLS_ERR_MPS_READER_NEED_ACCUMULATOR MBEDTLS_MPS_READER_MAKE_ERROR( 0x6 ) + +/*! An attempt to reclaim the data buffer from a reader failed because the + * accumulator passed to the reader is not large enough to hold both the + * data that hasn't been processed and the excess of the last read-request. */ +#define MBEDTLS_ERR_MPS_READER_ACCUMULATOR_TOO_SMALL MBEDTLS_MPS_READER_MAKE_ERROR( 0x7 ) + +/* \} name SECTION: MPS Reader error codes */ + +#endif /* MBEDTLS_MPS_ERROR_H */ diff --git a/Externals/mbedtls/library/mps_reader.c b/Externals/mbedtls/library/mps_reader.c new file mode 100644 index 000000000000..9af5073cc904 --- /dev/null +++ b/Externals/mbedtls/library/mps_reader.c @@ -0,0 +1,564 @@ +/* + * Message Processing Stack, Reader implementation + * + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#include "common.h" + +#if defined(MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL) + +#include "mps_reader.h" +#include "mps_common.h" +#include "mps_trace.h" + +#include + +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) +#define inline __inline +#endif + +#if defined(MBEDTLS_MPS_ENABLE_TRACE) +static int mbedtls_mps_trace_id = MBEDTLS_MPS_TRACE_BIT_READER; +#endif /* MBEDTLS_MPS_ENABLE_TRACE */ + +/* + * GENERAL NOTE ON CODING STYLE + * + * The following code intentionally separates memory loads + * and stores from other operations (arithmetic or branches). + * This leads to the introduction of many local variables + * and significantly increases the C-code line count, but + * should not increase the size of generated assembly. + * + * The reason for this is twofold: + * (1) It will ease verification efforts using the VST + * (Verified Software Toolchain) + * whose program logic cannot directly reason + * about instructions containing a load or store in + * addition to other operations (e.g. *p = *q or + * tmp = *p + 42). + * (2) Operating on local variables and writing the results + * back to the target contexts on success only + * allows to maintain structure invariants even + * on failure - this in turn has two benefits: + * (2.a) If for some reason an error code is not caught + * and operation continues, functions are nonetheless + * called with sane contexts, reducing the risk + * of dangerous behavior. + * (2.b) Randomized testing is easier if structures + * remain intact even in the face of failing + * and/or non-sensical calls. + * Moreover, it might even reduce code-size because + * the compiler need not write back temporary results + * to memory in case of failure. + * + */ + +static inline int mps_reader_is_accumulating( + mbedtls_mps_reader const *rd ) +{ + mbedtls_mps_size_t acc_remaining; + if( rd->acc == NULL ) + return( 0 ); + + acc_remaining = rd->acc_share.acc_remaining; + return( acc_remaining > 0 ); +} + +static inline int mps_reader_is_producing( + mbedtls_mps_reader const *rd ) +{ + unsigned char *frag = rd->frag; + return( frag == NULL ); +} + +static inline int mps_reader_is_consuming( + mbedtls_mps_reader const *rd ) +{ + return( !mps_reader_is_producing( rd ) ); +} + +static inline mbedtls_mps_size_t mps_reader_get_fragment_offset( + mbedtls_mps_reader const *rd ) +{ + unsigned char *acc = rd->acc; + mbedtls_mps_size_t frag_offset; + + if( acc == NULL ) + return( 0 ); + + frag_offset = rd->acc_share.frag_offset; + return( frag_offset ); +} + +static inline mbedtls_mps_size_t mps_reader_serving_from_accumulator( + mbedtls_mps_reader const *rd ) +{ + mbedtls_mps_size_t frag_offset, end; + + frag_offset = mps_reader_get_fragment_offset( rd ); + end = rd->end; + + return( end < frag_offset ); +} + +static inline void mps_reader_zero( mbedtls_mps_reader *rd ) +{ + /* A plain memset() would likely be more efficient, + * but the current way of zeroing makes it harder + * to overlook fields which should not be zero-initialized. + * It's also more suitable for FV efforts since it + * doesn't require reasoning about structs being + * interpreted as unstructured binary blobs. */ + static mbedtls_mps_reader const zero = + { .frag = NULL, + .frag_len = 0, + .commit = 0, + .end = 0, + .pending = 0, + .acc = NULL, + .acc_len = 0, + .acc_available = 0, + .acc_share = { .acc_remaining = 0 } + }; + *rd = zero; +} + +int mbedtls_mps_reader_init( mbedtls_mps_reader *rd, + unsigned char *acc, + mbedtls_mps_size_t acc_len ) +{ + MBEDTLS_MPS_TRACE_INIT( "mbedtls_mps_reader_init" ); + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "* Accumulator size: %u bytes", (unsigned) acc_len ); + mps_reader_zero( rd ); + rd->acc = acc; + rd->acc_len = acc_len; + MBEDTLS_MPS_TRACE_RETURN( 0 ); +} + +int mbedtls_mps_reader_free( mbedtls_mps_reader *rd ) +{ + MBEDTLS_MPS_TRACE_INIT( "mbedtls_mps_reader_free" ); + mps_reader_zero( rd ); + MBEDTLS_MPS_TRACE_RETURN( 0 ); +} + +int mbedtls_mps_reader_feed( mbedtls_mps_reader *rd, + unsigned char *new_frag, + mbedtls_mps_size_t new_frag_len ) +{ + mbedtls_mps_size_t copy_to_acc; + MBEDTLS_MPS_TRACE_INIT( "mbedtls_mps_reader_feed" ); + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "* Fragment length: %u bytes", (unsigned) new_frag_len ); + + if( new_frag == NULL ) + MBEDTLS_MPS_TRACE_RETURN( MBEDTLS_ERR_MPS_READER_INVALID_ARG ); + + MBEDTLS_MPS_STATE_VALIDATE_RAW( mps_reader_is_producing( rd ), + "mbedtls_mps_reader_feed() requires reader to be in producing mode" ); + + if( mps_reader_is_accumulating( rd ) ) + { + unsigned char *acc = rd->acc; + mbedtls_mps_size_t acc_remaining = rd->acc_share.acc_remaining; + mbedtls_mps_size_t acc_available = rd->acc_available; + + /* Skip over parts of the accumulator that have already been filled. */ + acc += acc_available; + + copy_to_acc = acc_remaining; + if( copy_to_acc > new_frag_len ) + copy_to_acc = new_frag_len; + + /* Copy new contents to accumulator. */ + memcpy( acc, new_frag, copy_to_acc ); + + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "Copy new data of size %u of %u into accumulator at offset %u", + (unsigned) copy_to_acc, (unsigned) new_frag_len, (unsigned) acc_available ); + + /* Check if, with the new fragment, we have enough data. */ + acc_remaining -= copy_to_acc; + if( acc_remaining > 0 ) + { + /* We need to accumulate more data. Stay in producing mode. */ + acc_available += copy_to_acc; + rd->acc_share.acc_remaining = acc_remaining; + rd->acc_available = acc_available; + MBEDTLS_MPS_TRACE_RETURN( MBEDTLS_ERR_MPS_READER_NEED_MORE ); + } + + /* We have filled the accumulator: Move to consuming mode. */ + + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "Enough data available to serve user request" ); + + /* Remember overlap of accumulator and fragment. */ + rd->acc_share.frag_offset = acc_available; + acc_available += copy_to_acc; + rd->acc_available = acc_available; + } + else /* Not accumulating */ + { + rd->acc_share.frag_offset = 0; + } + + rd->frag = new_frag; + rd->frag_len = new_frag_len; + rd->commit = 0; + rd->end = 0; + MBEDTLS_MPS_TRACE_RETURN( 0 ); +} + + +int mbedtls_mps_reader_get( mbedtls_mps_reader *rd, + mbedtls_mps_size_t desired, + unsigned char **buffer, + mbedtls_mps_size_t *buflen ) +{ + unsigned char *frag; + mbedtls_mps_size_t frag_len, frag_offset, end, frag_fetched, frag_remaining; + MBEDTLS_MPS_TRACE_INIT( "mbedtls_mps_reader_get" ); + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "* Bytes requested: %u", (unsigned) desired ); + + MBEDTLS_MPS_STATE_VALIDATE_RAW( mps_reader_is_consuming( rd ), + "mbedtls_mps_reader_get() requires reader to be in consuming mode" ); + + end = rd->end; + frag_offset = mps_reader_get_fragment_offset( rd ); + + /* Check if we're still serving from the accumulator. */ + if( mps_reader_serving_from_accumulator( rd ) ) + { + /* Illustration of supported and unsupported cases: + * + * - Allowed #1 + * + * +-----------------------------------+ + * | frag | + * +-----------------------------------+ + * + * end end+desired + * | | + * +-----v-------v-------------+ + * | acc | + * +---------------------------+ + * | | + * frag_offset acc_available + * + * - Allowed #2 + * + * +-----------------------------------+ + * | frag | + * +-----------------------------------+ + * + * end end+desired + * | | + * +----------v----------------v + * | acc | + * +---------------------------+ + * | | + * frag_offset acc_available + * + * - Not allowed #1 (could be served, but we don't actually use it): + * + * +-----------------------------------+ + * | frag | + * +-----------------------------------+ + * + * end end+desired + * | | + * +------v-------------v------+ + * | acc | + * +---------------------------+ + * | | + * frag_offset acc_available + * + * + * - Not allowed #2 (can't be served with a contiguous buffer): + * + * +-----------------------------------+ + * | frag | + * +-----------------------------------+ + * + * end end + desired + * | | + * +------v--------------------+ v + * | acc | + * +---------------------------+ + * | | + * frag_offset acc_available + * + * In case of Allowed #2 we're switching to serve from + * `frag` starting from the next call to mbedtls_mps_reader_get(). + */ + + unsigned char *acc; + + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "Serve the request from the accumulator" ); + if( frag_offset - end < desired ) + { + mbedtls_mps_size_t acc_available; + acc_available = rd->acc_available; + if( acc_available - end != desired ) + { + /* It might be possible to serve some of these situations by + * making additional space in the accumulator, removing those + * parts that have already been committed. + * On the other hand, this brings additional complexity and + * enlarges the code size, while there doesn't seem to be a use + * case where we don't attempt exactly the same `get` calls when + * resuming on a reader than what we tried before pausing it. + * If we believe we adhere to this restricted usage throughout + * the library, this check is a good opportunity to + * validate this. */ + MBEDTLS_MPS_TRACE_RETURN( + MBEDTLS_ERR_MPS_READER_INCONSISTENT_REQUESTS ); + } + } + + acc = rd->acc; + acc += end; + + *buffer = acc; + if( buflen != NULL ) + *buflen = desired; + + end += desired; + rd->end = end; + rd->pending = 0; + + MBEDTLS_MPS_TRACE_RETURN( 0 ); + } + + /* Attempt to serve the request from the current fragment */ + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "Serve the request from the current fragment." ); + + frag_len = rd->frag_len; + frag_fetched = end - frag_offset; /* The amount of data from the current + * fragment that has already been passed + * to the user. */ + frag_remaining = frag_len - frag_fetched; /* Remaining data in fragment */ + + /* Check if we can serve the read request from the fragment. */ + if( frag_remaining < desired ) + { + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "There's not enough data in the current fragment " + "to serve the request." ); + /* There's not enough data in the current fragment, + * so either just RETURN what we have or fail. */ + if( buflen == NULL ) + { + if( frag_remaining > 0 ) + { + rd->pending = desired - frag_remaining; + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "Remember to collect %u bytes before re-opening", + (unsigned) rd->pending ); + } + MBEDTLS_MPS_TRACE_RETURN( MBEDTLS_ERR_MPS_READER_OUT_OF_DATA ); + } + + desired = frag_remaining; + } + + /* There's enough data in the current fragment to serve the + * (potentially modified) read request. */ + + frag = rd->frag; + frag += frag_fetched; + + *buffer = frag; + if( buflen != NULL ) + *buflen = desired; + + end += desired; + rd->end = end; + rd->pending = 0; + MBEDTLS_MPS_TRACE_RETURN( 0 ); +} + +int mbedtls_mps_reader_commit( mbedtls_mps_reader *rd ) +{ + mbedtls_mps_size_t end; + MBEDTLS_MPS_TRACE_INIT( "mbedtls_mps_reader_commit" ); + MBEDTLS_MPS_STATE_VALIDATE_RAW( mps_reader_is_consuming( rd ), + "mbedtls_mps_reader_commit() requires reader to be in consuming mode" ); + + end = rd->end; + rd->commit = end; + + MBEDTLS_MPS_TRACE_RETURN( 0 ); +} + +int mbedtls_mps_reader_reclaim( mbedtls_mps_reader *rd, + int *paused ) +{ + unsigned char *frag, *acc; + mbedtls_mps_size_t pending, commit; + mbedtls_mps_size_t acc_len, frag_offset, frag_len; + MBEDTLS_MPS_TRACE_INIT( "mbedtls_mps_reader_reclaim" ); + + if( paused != NULL ) + *paused = 0; + + MBEDTLS_MPS_STATE_VALIDATE_RAW( mps_reader_is_consuming( rd ), + "mbedtls_mps_reader_reclaim() requires reader to be in consuming mode" ); + + frag = rd->frag; + acc = rd->acc; + pending = rd->pending; + commit = rd->commit; + frag_len = rd->frag_len; + + frag_offset = mps_reader_get_fragment_offset( rd ); + + if( pending == 0 ) + { + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "No unsatisfied read-request has been logged." ); + + /* Check if there's data left to be consumed. */ + if( commit < frag_offset || commit - frag_offset < frag_len ) + { + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "There is data left to be consumed." ); + rd->end = commit; + MBEDTLS_MPS_TRACE_RETURN( MBEDTLS_ERR_MPS_READER_DATA_LEFT ); + } + + rd->acc_available = 0; + rd->acc_share.acc_remaining = 0; + + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "Fragment has been fully processed and committed." ); + } + else + { + int overflow; + + mbedtls_mps_size_t acc_backup_offset; + mbedtls_mps_size_t acc_backup_len; + mbedtls_mps_size_t frag_backup_offset; + mbedtls_mps_size_t frag_backup_len; + + mbedtls_mps_size_t backup_len; + mbedtls_mps_size_t acc_len_needed; + + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "There has been an unsatisfied read with %u bytes overhead.", + (unsigned) pending ); + + if( acc == NULL ) + { + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "No accumulator present" ); + MBEDTLS_MPS_TRACE_RETURN( + MBEDTLS_ERR_MPS_READER_NEED_ACCUMULATOR ); + } + acc_len = rd->acc_len; + + /* Check if the upper layer has already fetched + * and committed the contents of the accumulator. */ + if( commit < frag_offset ) + { + /* No, accumulator is still being processed. */ + frag_backup_offset = 0; + frag_backup_len = frag_len; + acc_backup_offset = commit; + acc_backup_len = frag_offset - commit; + } + else + { + /* Yes, the accumulator is already processed. */ + frag_backup_offset = commit - frag_offset; + frag_backup_len = frag_len - frag_backup_offset; + acc_backup_offset = 0; + acc_backup_len = 0; + } + + backup_len = acc_backup_len + frag_backup_len; + acc_len_needed = backup_len + pending; + + overflow = 0; + overflow |= ( backup_len < acc_backup_len ); + overflow |= ( acc_len_needed < backup_len ); + + if( overflow || acc_len < acc_len_needed ) + { + /* Except for the different return code, we behave as if + * there hadn't been a call to mbedtls_mps_reader_get() + * since the last commit. */ + rd->end = commit; + rd->pending = 0; + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_ERROR, + "The accumulator is too small to handle the backup." ); + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_ERROR, + "* Size: %u", (unsigned) acc_len ); + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_ERROR, + "* Needed: %u (%u + %u)", + (unsigned) acc_len_needed, + (unsigned) backup_len, (unsigned) pending ); + MBEDTLS_MPS_TRACE_RETURN( + MBEDTLS_ERR_MPS_READER_ACCUMULATOR_TOO_SMALL ); + } + + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "Fragment backup: %u", (unsigned) frag_backup_len ); + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "Accumulator backup: %u", (unsigned) acc_backup_len ); + + /* Move uncommitted parts from the accumulator to the front + * of the accumulator. */ + memmove( acc, acc + acc_backup_offset, acc_backup_len ); + + /* Copy uncmmitted parts of the current fragment to the + * accumulator. */ + memcpy( acc + acc_backup_len, + frag + frag_backup_offset, frag_backup_len ); + + rd->acc_available = backup_len; + rd->acc_share.acc_remaining = pending; + + if( paused != NULL ) + *paused = 1; + } + + rd->frag = NULL; + rd->frag_len = 0; + + rd->commit = 0; + rd->end = 0; + rd->pending = 0; + + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_COMMENT, + "Final state: aa %u, al %u, ar %u", + (unsigned) rd->acc_available, (unsigned) rd->acc_len, + (unsigned) rd->acc_share.acc_remaining ); + MBEDTLS_MPS_TRACE_RETURN( 0 ); +} + +#endif /* MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL */ diff --git a/Externals/mbedtls/library/mps_reader.h b/Externals/mbedtls/library/mps_reader.h new file mode 100644 index 000000000000..427c1bd254f9 --- /dev/null +++ b/Externals/mbedtls/library/mps_reader.h @@ -0,0 +1,382 @@ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +/** + * \file mps_reader.h + * + * \brief This file defines reader objects, which together with their + * sibling writer objects form the basis for the communication + * between the various layers of the Mbed TLS messaging stack, + * as well as the communication between the messaging stack and + * the (D)TLS handshake protocol implementation. + * + * Readers provide a means of transferring incoming data from + * a 'producer' providing it in chunks of arbitrary size, to + * a 'consumer' which fetches and processes it in chunks of + * again arbitrary, and potentially different, size. + * + * Readers can thus be seen as datagram-to-stream converters, + * and they abstract away the following two tasks from the user: + * 1. The pointer arithmetic of stepping through a producer- + * provided chunk in smaller chunks. + * 2. The merging of incoming data chunks in case the + * consumer requests data in larger chunks than what the + * producer provides. + * + * The basic abstract flow of operation is the following: + * - Initially, the reader is in 'producing mode'. + * - The producer hands an incoming data buffer to the reader, + * moving it from 'producing' to 'consuming' mode. + * - The consumer subsequently fetches and processes the buffer + * content. Once that's done -- or partially done and a consumer's + * request can't be fulfilled -- the producer revokes the reader's + * access to the incoming data buffer, putting the reader back to + * producing mode. + * - The producer subsequently gathers more incoming data and hands + * it to the reader until it switches back to consuming mode + * if enough data is available for the last consumer request to + * be satisfiable. + * - Repeat the above. + * + * The abstract states of the reader from the producer's and + * consumer's perspective are as follows: + * + * - From the perspective of the consumer, the state of the + * reader consists of the following: + * - A byte stream representing (concatenation of) the data + * received through calls to mbedtls_mps_reader_get(), + * - A marker within that byte stream indicating which data + * can be considered processed, and hence need not be retained, + * when the reader is passed back to the producer via + * mbedtls_mps_reader_reclaim(). + * The marker is set via mbedtls_mps_reader_commit() + * which places it at the end of the current byte stream. + * The consumer need not be aware of the distinction between consumer + * and producer mode, because it only interfaces with the reader + * when the latter is in consuming mode. + * + * - From the perspective of the producer, the reader's state is one of: + * - Attached: The reader is in consuming mode. + * - Unset: No incoming data buffer is currently managed by the reader, + * and all previously handed incoming data buffers have been + * fully processed. More data needs to be fed into the reader + * via mbedtls_mps_reader_feed(). + * + * - Accumulating: No incoming data buffer is currently managed by the + * reader, but some data from the previous incoming data + * buffer hasn't been processed yet and is internally + * held back. + * The Attached state belongs to consuming mode, while the Unset and + * Accumulating states belong to producing mode. + * + * Transitioning from the Unset or Accumulating state to Attached is + * done via successful calls to mbedtls_mps_reader_feed(), while + * transitioning from Attached to either Unset or Accumulating (depending + * on what has been processed) is done via mbedtls_mps_reader_reclaim(). + * + * The following diagram depicts the producer-state progression: + * + * +------------------+ reclaim + * | Unset +<-------------------------------------+ get + * +--------|---------+ | +------+ + * | | | | + * | | | | + * | feed +---------+---+--+ | + * +--------------------------------------> <---+ + * | Attached | + * +--------------------------------------> <---+ + * | feed, enough data available +---------+---+--+ | + * | to serve previous consumer request | | | + * | | | | + * +--------+---------+ | +------+ + * +----> Accumulating |<-------------------------------------+ commit + * | +---+--------------+ reclaim, previous read request + * | | couldn't be fulfilled + * | | + * +--------+ + * feed, need more data to serve + * previous consumer request + * | + * | + * producing mode | consuming mode + * | + * + */ + +#ifndef MBEDTLS_READER_H +#define MBEDTLS_READER_H + +#include + +#include "mps_common.h" +#include "mps_error.h" + +struct mbedtls_mps_reader; +typedef struct mbedtls_mps_reader mbedtls_mps_reader; + +/* + * Structure definitions + */ + +struct mbedtls_mps_reader +{ + unsigned char *frag; /*!< The fragment of incoming data managed by + * the reader; it is provided to the reader + * through mbedtls_mps_reader_feed(). The reader + * does not own the fragment and does not + * perform any allocation operations on it, + * but does have read and write access to it. + * + * The reader is in consuming mode if + * and only if \c frag is not \c NULL. */ + mbedtls_mps_stored_size_t frag_len; + /*!< The length of the current fragment. + * Must be 0 if \c frag == \c NULL. */ + mbedtls_mps_stored_size_t commit; + /*!< The offset of the last commit, relative + * to the first byte in the fragment, if + * no accumulator is present. If an accumulator + * is present, it is viewed as a prefix to the + * current fragment, and this variable contains + * an offset from the beginning of the accumulator. + * + * This is only used when the reader is in + * consuming mode, i.e. \c frag != \c NULL; + * otherwise, its value is \c 0. */ + mbedtls_mps_stored_size_t end; + /*!< The offset of the end of the last chunk + * passed to the user through a call to + * mbedtls_mps_reader_get(), relative to the first + * byte in the fragment, if no accumulator is + * present. If an accumulator is present, it is + * viewed as a prefix to the current fragment, and + * this variable contains an offset from the + * beginning of the accumulator. + * + * This is only used when the reader is in + * consuming mode, i.e. \c frag != \c NULL; + * otherwise, its value is \c 0. */ + mbedtls_mps_stored_size_t pending; + /*!< The amount of incoming data missing on the + * last call to mbedtls_mps_reader_get(). + * In particular, it is \c 0 if the last call + * was successful. + * If a reader is reclaimed after an + * unsuccessful call to mbedtls_mps_reader_get(), + * this variable is used to have the reader + * remember how much data should be accumulated + * so that the call to mbedtls_mps_reader_get() + * succeeds next time. + * This is only used when the reader is in + * consuming mode, i.e. \c frag != \c NULL; + * otherwise, its value is \c 0. */ + + /* The accumulator is only needed if we need to be able to pause + * the reader. A few bytes could be saved by moving this to a + * separate struct and using a pointer here. */ + + unsigned char *acc; /*!< The accumulator is used to gather incoming + * data if a read-request via mbedtls_mps_reader_get() + * cannot be served from the current fragment. */ + mbedtls_mps_stored_size_t acc_len; + /*!< The total size of the accumulator. */ + mbedtls_mps_stored_size_t acc_available; + /*!< The number of bytes currently gathered in + * the accumulator. This is both used in + * producing and in consuming mode: + * While producing, it is increased until + * it reaches the value of \c acc_remaining below. + * While consuming, it is used to judge if a + * get request can be served from the + * accumulator or not. + * Must not be larger than \c acc_len. */ + union + { + mbedtls_mps_stored_size_t acc_remaining; + /*!< This indicates the amount of data still + * to be gathered in the accumulator. It is + * only used in producing mode. + * Must be at most acc_len - acc_available. */ + mbedtls_mps_stored_size_t frag_offset; + /*!< If an accumulator is present and in use, this + * field indicates the offset of the current + * fragment from the beginning of the + * accumulator. If no accumulator is present + * or the accumulator is not in use, this is \c 0. + * It is only used in consuming mode. + * Must not be larger than \c acc_available. */ + } acc_share; +}; + +/* + * API organization: + * A reader object is usually prepared and maintained + * by some lower layer and passed for usage to an upper + * layer, and the API naturally splits according to which + * layer is supposed to use the respective functions. + */ + +/* + * Maintenance API (Lower layer) + */ + +/** + * \brief Initialize a reader object + * + * \param reader The reader to be initialized. + * \param acc The buffer to be used as a temporary accumulator + * in case get requests through mbedtls_mps_reader_get() + * exceed the buffer provided by mbedtls_mps_reader_feed(). + * This buffer is owned by the caller and exclusive use + * for reading and writing is given to the reader for the + * duration of the reader's lifetime. It is thus the caller's + * responsibility to maintain (and not touch) the buffer for + * the lifetime of the reader, and to properly zeroize and + * free the memory after the reader has been destroyed. + * \param acc_len The size in Bytes of \p acc. + * + * \return \c 0 on success. + * \return A negative \c MBEDTLS_ERR_READER_XXX error code on failure. + */ +int mbedtls_mps_reader_init( mbedtls_mps_reader *reader, + unsigned char *acc, + mbedtls_mps_size_t acc_len ); + +/** + * \brief Free a reader object + * + * \param reader The reader to be freed. + * + * \return \c 0 on success. + * \return A negative \c MBEDTLS_ERR_READER_XXX error code on failure. + */ +int mbedtls_mps_reader_free( mbedtls_mps_reader *reader ); + +/** + * \brief Pass chunk of data for the reader to manage. + * + * \param reader The reader context to use. The reader must be + * in producing mode. + * \param buf The buffer to be managed by the reader. + * \param buflen The size in Bytes of \p buffer. + * + * \return \c 0 on success. In this case, the reader will be + * moved to consuming mode and obtains read access + * of \p buf until mbedtls_mps_reader_reclaim() + * is called. It is the responsibility of the caller + * to ensure that the \p buf persists and is not changed + * between successful calls to mbedtls_mps_reader_feed() + * and mbedtls_mps_reader_reclaim(). + * \return \c MBEDTLS_ERR_MPS_READER_NEED_MORE if more input data is + * required to fulfill a previous request to mbedtls_mps_reader_get(). + * In this case, the reader remains in producing mode and + * takes no ownership of the provided buffer (an internal copy + * is made instead). + * \return Another negative \c MBEDTLS_ERR_READER_XXX error code on + * different kinds of failures. + */ +int mbedtls_mps_reader_feed( mbedtls_mps_reader *reader, + unsigned char *buf, + mbedtls_mps_size_t buflen ); + +/** + * \brief Reclaim reader's access to the current input buffer. + * + * \param reader The reader context to use. The reader must be + * in consuming mode. + * \param paused If not \c NULL, the integer at address \p paused will be + * modified to indicate whether the reader has been paused + * (value \c 1) or not (value \c 0). Pausing happens if there + * is uncommitted data and a previous request to + * mbedtls_mps_reader_get() has exceeded the bounds of the + * input buffer. + * + * \return \c 0 on success. + * \return A negative \c MBEDTLS_ERR_READER_XXX error code on failure. + */ +int mbedtls_mps_reader_reclaim( mbedtls_mps_reader *reader, + int *paused ); + +/* + * Usage API (Upper layer) + */ + +/** + * \brief Request data from the reader. + * + * \param reader The reader context to use. The reader must + * be in consuming mode. + * \param desired The desired amount of data to be read, in Bytes. + * \param buffer The address to store the buffer pointer in. + * This must not be \c NULL. + * \param buflen The address to store the actual buffer + * length in, or \c NULL. + * + * \return \c 0 on success. In this case, \c *buf holds the + * address of a buffer of size \c *buflen + * (if \c buflen != \c NULL) or \c desired + * (if \c buflen == \c NULL). The user has read access + * to the buffer and guarantee of stability of the data + * until the next call to mbedtls_mps_reader_reclaim(). + * \return #MBEDTLS_ERR_MPS_READER_OUT_OF_DATA if there is not enough + * data available to serve the get request. In this case, the + * reader remains intact and in consuming mode, and the consumer + * should retry the call after a successful cycle of + * mbedtls_mps_reader_reclaim() and mbedtls_mps_reader_feed(). + * If, after such a cycle, the consumer requests a different + * amount of data, the result is implementation-defined; + * progress is guaranteed only if the same amount of data + * is requested after a mbedtls_mps_reader_reclaim() and + * mbedtls_mps_reader_feed() cycle. + * \return Another negative \c MBEDTLS_ERR_READER_XXX error + * code for different kinds of failure. + * + * \note Passing \c NULL as \p buflen is a convenient way to + * indicate that fragmentation is not tolerated. + * It's functionally equivalent to passing a valid + * address as buflen and checking \c *buflen == \c desired + * afterwards. + */ +int mbedtls_mps_reader_get( mbedtls_mps_reader *reader, + mbedtls_mps_size_t desired, + unsigned char **buffer, + mbedtls_mps_size_t *buflen ); + +/** + * \brief Mark data obtained from mbedtls_mps_reader_get() as processed. + * + * This call indicates that all data received from prior calls to + * mbedtls_mps_reader_get() has been or will have been + * processed when mbedtls_mps_reader_reclaim() is called, + * and thus need not be backed up. + * + * This function has no user observable effect until + * mbedtls_mps_reader_reclaim() is called. In particular, + * buffers received from mbedtls_mps_reader_get() remain + * valid until mbedtls_mps_reader_reclaim() is called. + * + * \param reader The reader context to use. + * + * \return \c 0 on success. + * \return A negative \c MBEDTLS_ERR_READER_XXX error code on failure. + * + */ +int mbedtls_mps_reader_commit( mbedtls_mps_reader *reader ); + +#endif /* MBEDTLS_READER_H */ diff --git a/Externals/mbedtls/library/mps_trace.c b/Externals/mbedtls/library/mps_trace.c new file mode 100644 index 000000000000..6026a07163b1 --- /dev/null +++ b/Externals/mbedtls/library/mps_trace.c @@ -0,0 +1,127 @@ +/* + * Message Processing Stack, Trace module + * + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#include "common.h" + +#if defined(MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL) + +#include "mps_common.h" + +#if defined(MBEDTLS_MPS_ENABLE_TRACE) + +#include "mps_trace.h" +#include + +static int trace_depth = 0; + +#define color_default "\x1B[0m" +#define color_red "\x1B[1;31m" +#define color_green "\x1B[1;32m" +#define color_yellow "\x1B[1;33m" +#define color_blue "\x1B[1;34m" +#define color_magenta "\x1B[1;35m" +#define color_cyan "\x1B[1;36m" +#define color_white "\x1B[1;37m" + +static char const * colors[] = +{ + color_default, + color_green, + color_yellow, + color_magenta, + color_cyan, + color_blue, + color_white +}; + +#define MPS_TRACE_BUF_SIZE 100 + +void mbedtls_mps_trace_print_msg( int id, int line, const char *format, ... ) +{ + int ret; + char str[MPS_TRACE_BUF_SIZE]; + va_list argp; + va_start( argp, format ); + ret = mbedtls_vsnprintf( str, MPS_TRACE_BUF_SIZE, format, argp ); + va_end( argp ); + + if( ret >= 0 && ret < MPS_TRACE_BUF_SIZE ) + { + str[ret] = '\0'; + mbedtls_printf( "[%d|L%d]: %s\n", id, line, str ); + } +} + +int mbedtls_mps_trace_get_depth() +{ + return trace_depth; +} +void mbedtls_mps_trace_dec_depth() +{ + trace_depth--; +} +void mbedtls_mps_trace_inc_depth() +{ + trace_depth++; +} + +void mbedtls_mps_trace_color( int id ) +{ + if( id > (int) ( sizeof( colors ) / sizeof( *colors ) ) ) + return; + printf( "%s", colors[ id ] ); +} + +void mbedtls_mps_trace_indent( int level, mbedtls_mps_trace_type ty ) +{ + if( level > 0 ) + { + while( --level ) + printf( "| " ); + + printf( "| " ); + } + + switch( ty ) + { + case MBEDTLS_MPS_TRACE_TYPE_COMMENT: + mbedtls_printf( "@ " ); + break; + + case MBEDTLS_MPS_TRACE_TYPE_CALL: + mbedtls_printf( "+--> " ); + break; + + case MBEDTLS_MPS_TRACE_TYPE_ERROR: + mbedtls_printf( "E " ); + break; + + case MBEDTLS_MPS_TRACE_TYPE_RETURN: + mbedtls_printf( "< " ); + break; + + default: + break; + } +} + +#endif /* MBEDTLS_MPS_ENABLE_TRACE */ +#endif /* MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL */ diff --git a/Externals/mbedtls/library/mps_trace.h b/Externals/mbedtls/library/mps_trace.h new file mode 100644 index 000000000000..7c2360118aac --- /dev/null +++ b/Externals/mbedtls/library/mps_trace.h @@ -0,0 +1,175 @@ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +/** + * \file mps_trace.h + * + * \brief Tracing module for MPS + */ + +#ifndef MBEDTLS_MPS_MBEDTLS_MPS_TRACE_H +#define MBEDTLS_MPS_MBEDTLS_MPS_TRACE_H + +#include "common.h" +#include "mps_common.h" +#include "mps_trace.h" + +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#include +#define mbedtls_printf printf +#define mbedtls_vsnprintf vsnprintf +#endif /* MBEDTLS_PLATFORM_C */ + +#if defined(MBEDTLS_MPS_ENABLE_TRACE) + +/* + * Adapt this to enable/disable tracing output + * from the various layers of the MPS. + */ + +#define MBEDTLS_MPS_TRACE_ENABLE_LAYER_1 +#define MBEDTLS_MPS_TRACE_ENABLE_LAYER_2 +#define MBEDTLS_MPS_TRACE_ENABLE_LAYER_3 +#define MBEDTLS_MPS_TRACE_ENABLE_LAYER_4 +#define MBEDTLS_MPS_TRACE_ENABLE_READER +#define MBEDTLS_MPS_TRACE_ENABLE_WRITER + +/* + * To use the existing trace module, only change + * MBEDTLS_MPS_TRACE_ENABLE_XXX above, but don't modify the + * rest of this file. + */ + +typedef enum +{ + MBEDTLS_MPS_TRACE_TYPE_COMMENT, + MBEDTLS_MPS_TRACE_TYPE_CALL, + MBEDTLS_MPS_TRACE_TYPE_ERROR, + MBEDTLS_MPS_TRACE_TYPE_RETURN +} mbedtls_mps_trace_type; + +#define MBEDTLS_MPS_TRACE_BIT_LAYER_1 1 +#define MBEDTLS_MPS_TRACE_BIT_LAYER_2 2 +#define MBEDTLS_MPS_TRACE_BIT_LAYER_3 3 +#define MBEDTLS_MPS_TRACE_BIT_LAYER_4 4 +#define MBEDTLS_MPS_TRACE_BIT_WRITER 5 +#define MBEDTLS_MPS_TRACE_BIT_READER 6 + +#if defined(MBEDTLS_MPS_TRACE_ENABLE_LAYER_1) +#define MBEDTLS_MPS_TRACE_MASK_LAYER_1 (1u << MBEDTLS_MPS_TRACE_BIT_LAYER_1 ) +#else +#define MBEDTLS_MPS_TRACE_MASK_LAYER_1 0 +#endif + +#if defined(MBEDTLS_MPS_TRACE_ENABLE_LAYER_2) +#define MBEDTLS_MPS_TRACE_MASK_LAYER_2 (1u << MBEDTLS_MPS_TRACE_BIT_LAYER_2 ) +#else +#define MBEDTLS_MPS_TRACE_MASK_LAYER_2 0 +#endif + +#if defined(MBEDTLS_MPS_TRACE_ENABLE_LAYER_3) +#define MBEDTLS_MPS_TRACE_MASK_LAYER_3 (1u << MBEDTLS_MPS_TRACE_BIT_LAYER_3 ) +#else +#define MBEDTLS_MPS_TRACE_MASK_LAYER_3 0 +#endif + +#if defined(MBEDTLS_MPS_TRACE_ENABLE_LAYER_4) +#define MBEDTLS_MPS_TRACE_MASK_LAYER_4 (1u << MBEDTLS_MPS_TRACE_BIT_LAYER_4 ) +#else +#define MBEDTLS_MPS_TRACE_MASK_LAYER_4 0 +#endif + +#if defined(MBEDTLS_MPS_TRACE_ENABLE_READER) +#define MBEDTLS_MPS_TRACE_MASK_READER (1u << MBEDTLS_MPS_TRACE_BIT_READER ) +#else +#define MBEDTLS_MPS_TRACE_MASK_READER 0 +#endif + +#if defined(MBEDTLS_MPS_TRACE_ENABLE_WRITER) +#define MBEDTLS_MPS_TRACE_MASK_WRITER (1u << MBEDTLS_MPS_TRACE_BIT_WRITER ) +#else +#define MBEDTLS_MPS_TRACE_MASK_WRITER 0 +#endif + +#define MBEDTLS_MPS_TRACE_MASK ( MBEDTLS_MPS_TRACE_MASK_LAYER_1 | \ + MBEDTLS_MPS_TRACE_MASK_LAYER_2 | \ + MBEDTLS_MPS_TRACE_MASK_LAYER_3 | \ + MBEDTLS_MPS_TRACE_MASK_LAYER_4 | \ + MBEDTLS_MPS_TRACE_MASK_READER | \ + MBEDTLS_MPS_TRACE_MASK_WRITER ) + +/* We have to avoid globals because E-ACSL chokes on them... + * Wrap everything in stub functions. */ +int mbedtls_mps_trace_get_depth( void ); +void mbedtls_mps_trace_inc_depth( void ); +void mbedtls_mps_trace_dec_depth( void ); + +void mbedtls_mps_trace_color( int id ); +void mbedtls_mps_trace_indent( int level, mbedtls_mps_trace_type ty ); + +void mbedtls_mps_trace_print_msg( int id, int line, const char *format, ... ); + +#define MBEDTLS_MPS_TRACE( type, ... ) \ + do { \ + if( ! ( MBEDTLS_MPS_TRACE_MASK & ( 1u << mbedtls_mps_trace_id ) ) ) \ + break; \ + mbedtls_mps_trace_indent( mbedtls_mps_trace_get_depth(), type ); \ + mbedtls_mps_trace_color( mbedtls_mps_trace_id ); \ + mbedtls_mps_trace_print_msg( mbedtls_mps_trace_id, __LINE__, __VA_ARGS__ ); \ + mbedtls_mps_trace_color( 0 ); \ + } while( 0 ) + +#define MBEDTLS_MPS_TRACE_INIT( ... ) \ + do { \ + if( ! ( MBEDTLS_MPS_TRACE_MASK & ( 1u << mbedtls_mps_trace_id ) ) ) \ + break; \ + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_CALL, __VA_ARGS__ ); \ + mbedtls_mps_trace_inc_depth(); \ + } while( 0 ) + +#define MBEDTLS_MPS_TRACE_END( val ) \ + do { \ + if( ! ( MBEDTLS_MPS_TRACE_MASK & ( 1u << mbedtls_mps_trace_id ) ) ) \ + break; \ + MBEDTLS_MPS_TRACE( MBEDTLS_MPS_TRACE_TYPE_RETURN, "%d (-%#04x)", \ + (int) (val), -((unsigned)(val)) ); \ + mbedtls_mps_trace_dec_depth(); \ + } while( 0 ) + +#define MBEDTLS_MPS_TRACE_RETURN( val ) \ + do { \ + /* Breaks tail recursion. */ \ + int ret__ = val; \ + MBEDTLS_MPS_TRACE_END( ret__ ); \ + return( ret__ ); \ + } while( 0 ) + +#else /* MBEDTLS_MPS_TRACE */ + +#define MBEDTLS_MPS_TRACE( type, ... ) do { } while( 0 ) +#define MBEDTLS_MPS_TRACE_INIT( ... ) do { } while( 0 ) +#define MBEDTLS_MPS_TRACE_END do { } while( 0 ) + +#define MBEDTLS_MPS_TRACE_RETURN( val ) return( val ); + +#endif /* MBEDTLS_MPS_TRACE */ + +#endif /* MBEDTLS_MPS_MBEDTLS_MPS_TRACE_H */ diff --git a/Externals/mbedtls/library/net_sockets.c b/Externals/mbedtls/library/net_sockets.c index 816b1303dfa5..5fbe1f764a41 100644 --- a/Externals/mbedtls/library/net_sockets.c +++ b/Externals/mbedtls/library/net_sockets.c @@ -1,7 +1,7 @@ /* * TCP/IP or UDP/IP networking functions * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,26 +15,25 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* Enable definition of getaddrinfo() even when compiling with -std=c99. Must * be set before config.h, which pulls in glibc's features.h indirectly. * Harmless on other platforms. */ +#ifndef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 200112L - -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE #endif +#ifndef _XOPEN_SOURCE +#define _XOPEN_SOURCE 600 /* sockaddr_storage */ +#endif + +#include "common.h" #if defined(MBEDTLS_NET_C) #if !defined(unix) && !defined(__unix__) && !defined(__unix) && \ !defined(__APPLE__) && !defined(_WIN32) && !defined(__QNXNTO__) && \ - !defined(__HAIKU__) + !defined(__HAIKU__) && !defined(__midipix__) #error "This module only works on Unix and Windows, see MBEDTLS_NET_C in config.h" #endif @@ -45,6 +44,7 @@ #endif #include "mbedtls/net_sockets.h" +#include "mbedtls/error.h" #include @@ -53,8 +53,7 @@ #define IS_EINTR( ret ) ( ( ret ) == WSAEINTR ) -#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0501) -#undef _WIN32_WINNT +#if !defined(_WIN32_WINNT) /* Enables getaddrinfo() & Co */ #define _WIN32_WINNT 0x0501 #endif @@ -63,6 +62,9 @@ #include #include +#if (_WIN32_WINNT < 0x0501) +#include +#endif #if defined(_MSC_VER) #if defined(_WIN32_WCE) @@ -133,6 +135,31 @@ static int net_prepare( void ) return( 0 ); } +/* + * Return 0 if the file descriptor is valid, an error otherwise. + * If for_select != 0, check whether the file descriptor is within the range + * allowed for fd_set used for the FD_xxx macros and the select() function. + */ +static int check_fd( int fd, int for_select ) +{ + if( fd < 0 ) + return( MBEDTLS_ERR_NET_INVALID_CONTEXT ); + +#if (defined(_WIN32) || defined(_WIN32_WCE)) && !defined(EFIX64) && \ + !defined(EFI32) + (void) for_select; +#else + /* A limitation of select() is that it only works with file descriptors + * that are strictly less than FD_SETSIZE. This is a limitation of the + * fd_set type. Error out early, because attempting to call FD_SET on a + * large file descriptor is a buffer overflow on typical platforms. */ + if( for_select && fd >= FD_SETSIZE ) + return( MBEDTLS_ERR_NET_POLL_FAILED ); +#endif + + return( 0 ); +} + /* * Initialize a context */ @@ -147,7 +174,7 @@ void mbedtls_net_init( mbedtls_net_context *ctx ) int mbedtls_net_connect( mbedtls_net_context *ctx, const char *host, const char *port, int proto ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; struct addrinfo hints, *addr_list, *cur; if( ( ret = net_prepare() ) != 0 ) @@ -284,7 +311,7 @@ static int net_would_block( const mbedtls_net_context *ctx ) int err = errno; /* - * Never return 'WOULD BLOCK' on a non-blocking socket + * Never return 'WOULD BLOCK' on a blocking socket */ if( ( fcntl( ctx->fd, F_GETFL ) & O_NONBLOCK ) != O_NONBLOCK ) { @@ -313,13 +340,14 @@ int mbedtls_net_accept( mbedtls_net_context *bind_ctx, mbedtls_net_context *client_ctx, void *client_ip, size_t buf_size, size_t *ip_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; int type; struct sockaddr_storage client_addr; #if defined(__socklen_t_defined) || defined(_SOCKLEN_T) || \ - defined(_SOCKLEN_T_DECLARED) || defined(__DEFINED_socklen_t) + defined(_SOCKLEN_T_DECLARED) || defined(__DEFINED_socklen_t) || \ + defined(socklen_t) || (defined(_POSIX_VERSION) && _POSIX_VERSION >= 200112L) socklen_t n = (socklen_t) sizeof( client_addr ); socklen_t type_len = (socklen_t) sizeof( type ); #else @@ -455,7 +483,7 @@ int mbedtls_net_set_nonblock( mbedtls_net_context *ctx ) int mbedtls_net_poll( mbedtls_net_context *ctx, uint32_t rw, uint32_t timeout ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; struct timeval tv; fd_set read_fds; @@ -463,8 +491,9 @@ int mbedtls_net_poll( mbedtls_net_context *ctx, uint32_t rw, uint32_t timeout ) int fd = ctx->fd; - if( fd < 0 ) - return( MBEDTLS_ERR_NET_INVALID_CONTEXT ); + ret = check_fd( fd, 1 ); + if( ret != 0 ) + return( ret ); #if defined(__has_feature) #if __has_feature(memory_sanitizer) @@ -540,11 +569,12 @@ void mbedtls_net_usleep( unsigned long usec ) */ int mbedtls_net_recv( void *ctx, unsigned char *buf, size_t len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; int fd = ((mbedtls_net_context *) ctx)->fd; - if( fd < 0 ) - return( MBEDTLS_ERR_NET_INVALID_CONTEXT ); + ret = check_fd( fd, 0 ); + if( ret != 0 ) + return( ret ); ret = (int) read( fd, buf, len ); @@ -577,13 +607,14 @@ int mbedtls_net_recv( void *ctx, unsigned char *buf, size_t len ) int mbedtls_net_recv_timeout( void *ctx, unsigned char *buf, size_t len, uint32_t timeout ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; struct timeval tv; fd_set read_fds; int fd = ((mbedtls_net_context *) ctx)->fd; - if( fd < 0 ) - return( MBEDTLS_ERR_NET_INVALID_CONTEXT ); + ret = check_fd( fd, 1 ); + if( ret != 0 ) + return( ret ); FD_ZERO( &read_fds ); FD_SET( fd, &read_fds ); @@ -620,11 +651,12 @@ int mbedtls_net_recv_timeout( void *ctx, unsigned char *buf, */ int mbedtls_net_send( void *ctx, const unsigned char *buf, size_t len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; int fd = ((mbedtls_net_context *) ctx)->fd; - if( fd < 0 ) - return( MBEDTLS_ERR_NET_INVALID_CONTEXT ); + ret = check_fd( fd, 0 ); + if( ret != 0 ) + return( ret ); ret = (int) write( fd, buf, len ); @@ -651,6 +683,19 @@ int mbedtls_net_send( void *ctx, const unsigned char *buf, size_t len ) return( ret ); } +/* + * Close the connection + */ +void mbedtls_net_close( mbedtls_net_context *ctx ) +{ + if( ctx->fd == -1 ) + return; + + close( ctx->fd ); + + ctx->fd = -1; +} + /* * Gracefully close the connection */ diff --git a/Externals/mbedtls/library/nist_kw.c b/Externals/mbedtls/library/nist_kw.c index 317a2426ae71..1aea0b634575 100644 --- a/Externals/mbedtls/library/nist_kw.c +++ b/Externals/mbedtls/library/nist_kw.c @@ -2,7 +2,7 @@ * Implementation of NIST SP 800-38F key wrapping, supporting KW and KWP modes * only * - * Copyright (C) 2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -16,8 +16,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ /* * Definition of Key Wrapping: @@ -29,16 +27,14 @@ * the wrapping and unwrapping operation than the definition in NIST SP 800-38F. */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_NIST_KW_C) #include "mbedtls/nist_kw.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" +#include "mbedtls/constant_time.h" #include #include @@ -57,51 +53,11 @@ #define KW_SEMIBLOCK_LENGTH 8 #define MIN_SEMIBLOCKS_COUNT 3 -/* constant-time buffer comparison */ -static inline unsigned char mbedtls_nist_kw_safer_memcmp( const void *a, const void *b, size_t n ) -{ - size_t i; - volatile const unsigned char *A = (volatile const unsigned char *) a; - volatile const unsigned char *B = (volatile const unsigned char *) b; - volatile unsigned char diff = 0; - - for( i = 0; i < n; i++ ) - { - /* Read volatile data in order before computing diff. - * This avoids IAR compiler warning: - * 'the order of volatile accesses is undefined ..' */ - unsigned char x = A[i], y = B[i]; - diff |= x ^ y; - } - - return( diff ); -} - /*! The 64-bit default integrity check value (ICV) for KW mode. */ static const unsigned char NIST_KW_ICV1[] = {0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6}; /*! The 32-bit default integrity check value (ICV) for KWP mode. */ static const unsigned char NIST_KW_ICV2[] = {0xA6, 0x59, 0x59, 0xA6}; -#ifndef GET_UINT32_BE -#define GET_UINT32_BE(n,b,i) \ -do { \ - (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ - | ( (uint32_t) (b)[(i) + 1] << 16 ) \ - | ( (uint32_t) (b)[(i) + 2] << 8 ) \ - | ( (uint32_t) (b)[(i) + 3] ); \ -} while( 0 ) -#endif - -#ifndef PUT_UINT32_BE -#define PUT_UINT32_BE(n,b,i) \ -do { \ - (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ - (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ - (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \ - (b)[(i) + 3] = (unsigned char) ( (n) ); \ -} while( 0 ) -#endif - /* * Initialize context */ @@ -116,7 +72,7 @@ int mbedtls_nist_kw_setkey( mbedtls_nist_kw_context *ctx, unsigned int keybits, const int is_wrap ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const mbedtls_cipher_info_t *cipher_info; cipher_info = mbedtls_cipher_info_from_values( cipher, @@ -194,8 +150,6 @@ int mbedtls_nist_kw_wrap( mbedtls_nist_kw_context *ctx, uint64_t t = 0; unsigned char outbuff[KW_SEMIBLOCK_LENGTH * 2]; unsigned char inbuff[KW_SEMIBLOCK_LENGTH * 2]; - unsigned char *R2 = output + KW_SEMIBLOCK_LENGTH; - unsigned char *A = output; *out_len = 0; /* @@ -250,7 +204,7 @@ int mbedtls_nist_kw_wrap( mbedtls_nist_kw_context *ctx, } memcpy( output, NIST_KW_ICV2, KW_SEMIBLOCK_LENGTH / 2 ); - PUT_UINT32_BE( ( in_len & 0xffffffff ), output, + MBEDTLS_PUT_UINT32_BE( ( in_len & 0xffffffff ), output, KW_SEMIBLOCK_LENGTH / 2 ); memcpy( output + KW_SEMIBLOCK_LENGTH, input, in_len ); @@ -271,6 +225,9 @@ int mbedtls_nist_kw_wrap( mbedtls_nist_kw_context *ctx, } else { + unsigned char *R2 = output + KW_SEMIBLOCK_LENGTH; + unsigned char *A = output; + /* * Do the wrapping function W, as defined in RFC 3394 section 2.2.1 */ @@ -334,7 +291,7 @@ static int unwrap( mbedtls_nist_kw_context *ctx, uint64_t t = 0; unsigned char outbuff[KW_SEMIBLOCK_LENGTH * 2]; unsigned char inbuff[KW_SEMIBLOCK_LENGTH * 2]; - unsigned char *R = output + ( semiblocks - 2 ) * KW_SEMIBLOCK_LENGTH; + unsigned char *R = NULL; *out_len = 0; if( semiblocks < MIN_SEMIBLOCKS_COUNT ) @@ -344,6 +301,7 @@ static int unwrap( mbedtls_nist_kw_context *ctx, memcpy( A, input, KW_SEMIBLOCK_LENGTH ); memmove( output, input + KW_SEMIBLOCK_LENGTH, ( semiblocks - 1 ) * KW_SEMIBLOCK_LENGTH ); + R = output + ( semiblocks - 2 ) * KW_SEMIBLOCK_LENGTH; /* Calculate intermediate values */ for( t = s; t >= 1; t-- ) @@ -421,7 +379,7 @@ int mbedtls_nist_kw_unwrap( mbedtls_nist_kw_context *ctx, goto cleanup; /* Check ICV in "constant-time" */ - diff = mbedtls_nist_kw_safer_memcmp( NIST_KW_ICV1, A, KW_SEMIBLOCK_LENGTH ); + diff = mbedtls_ct_memcmp( NIST_KW_ICV1, A, KW_SEMIBLOCK_LENGTH ); if( diff != 0 ) { @@ -470,14 +428,14 @@ int mbedtls_nist_kw_unwrap( mbedtls_nist_kw_context *ctx, } /* Check ICV in "constant-time" */ - diff = mbedtls_nist_kw_safer_memcmp( NIST_KW_ICV2, A, KW_SEMIBLOCK_LENGTH / 2 ); + diff = mbedtls_ct_memcmp( NIST_KW_ICV2, A, KW_SEMIBLOCK_LENGTH / 2 ); if( diff != 0 ) { ret = MBEDTLS_ERR_CIPHER_AUTH_FAILED; } - GET_UINT32_BE( Plen, A, KW_SEMIBLOCK_LENGTH / 2 ); + Plen = MBEDTLS_GET_UINT32_BE( A, KW_SEMIBLOCK_LENGTH / 2 ); /* * Plen is the length of the plaintext, when the input is valid. diff --git a/Externals/mbedtls/library/oid.c b/Externals/mbedtls/library/oid.c index edea950f8fab..19c8ac207ce3 100644 --- a/Externals/mbedtls/library/oid.c +++ b/Externals/mbedtls/library/oid.c @@ -3,7 +3,7 @@ * * \brief Object Identifier (OID) database * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -17,20 +17,15 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_OID_C) #include "mbedtls/oid.h" #include "mbedtls/rsa.h" +#include "mbedtls/error.h" #include #include @@ -41,10 +36,6 @@ #define mbedtls_snprintf snprintf #endif -#if defined(MBEDTLS_X509_USE_C) || defined(MBEDTLS_X509_CREATE_C) -#include "mbedtls/x509.h" -#endif - /* * Macro to automatically add the size of #define'd OIDs */ @@ -54,22 +45,24 @@ * Macro to generate an internal function for oid_XXX_from_asn1() (used by * the other functions) */ -#define FN_OID_TYPED_FROM_ASN1( TYPE_T, NAME, LIST ) \ -static const TYPE_T * oid_ ## NAME ## _from_asn1( const mbedtls_asn1_buf *oid ) \ -{ \ - const TYPE_T *p = LIST; \ - const mbedtls_oid_descriptor_t *cur = (const mbedtls_oid_descriptor_t *) p; \ - if( p == NULL || oid == NULL ) return( NULL ); \ - while( cur->asn1 != NULL ) { \ - if( cur->asn1_len == oid->len && \ - memcmp( cur->asn1, oid->p, oid->len ) == 0 ) { \ - return( p ); \ - } \ - p++; \ - cur = (const mbedtls_oid_descriptor_t *) p; \ - } \ - return( NULL ); \ -} +#define FN_OID_TYPED_FROM_ASN1( TYPE_T, NAME, LIST ) \ + static const TYPE_T * oid_ ## NAME ## _from_asn1( \ + const mbedtls_asn1_buf *oid ) \ + { \ + const TYPE_T *p = (LIST); \ + const mbedtls_oid_descriptor_t *cur = \ + (const mbedtls_oid_descriptor_t *) p; \ + if( p == NULL || oid == NULL ) return( NULL ); \ + while( cur->asn1 != NULL ) { \ + if( cur->asn1_len == oid->len && \ + memcmp( cur->asn1, oid->p, oid->len ) == 0 ) { \ + return( p ); \ + } \ + p++; \ + cur = (const mbedtls_oid_descriptor_t *) p; \ + } \ + return( NULL ); \ + } /* * Macro to generate a function for retrieving a single attribute from the @@ -103,12 +96,13 @@ int FN_NAME( const mbedtls_asn1_buf *oid, ATTR1_TYPE * ATTR1 ) */ #define FN_OID_GET_ATTR2(FN_NAME, TYPE_T, TYPE_NAME, ATTR1_TYPE, ATTR1, \ ATTR2_TYPE, ATTR2) \ -int FN_NAME( const mbedtls_asn1_buf *oid, ATTR1_TYPE * ATTR1, ATTR2_TYPE * ATTR2 ) \ +int FN_NAME( const mbedtls_asn1_buf *oid, ATTR1_TYPE * ATTR1, \ + ATTR2_TYPE * ATTR2 ) \ { \ const TYPE_T *data = oid_ ## TYPE_NAME ## _from_asn1( oid ); \ - if( data == NULL ) return( MBEDTLS_ERR_OID_NOT_FOUND ); \ - *ATTR1 = data->ATTR1; \ - *ATTR2 = data->ATTR2; \ + if( data == NULL ) return( MBEDTLS_ERR_OID_NOT_FOUND ); \ + *(ATTR1) = data->ATTR1; \ + *(ATTR2) = data->ATTR2; \ return( 0 ); \ } @@ -119,16 +113,16 @@ int FN_NAME( const mbedtls_asn1_buf *oid, ATTR1_TYPE * ATTR1, ATTR2_TYPE * ATTR2 #define FN_OID_GET_OID_BY_ATTR1(FN_NAME, TYPE_T, LIST, ATTR1_TYPE, ATTR1) \ int FN_NAME( ATTR1_TYPE ATTR1, const char **oid, size_t *olen ) \ { \ - const TYPE_T *cur = LIST; \ + const TYPE_T *cur = (LIST); \ while( cur->descriptor.asn1 != NULL ) { \ - if( cur->ATTR1 == ATTR1 ) { \ + if( cur->ATTR1 == (ATTR1) ) { \ *oid = cur->descriptor.asn1; \ *olen = cur->descriptor.asn1_len; \ return( 0 ); \ } \ cur++; \ } \ - return( MBEDTLS_ERR_OID_NOT_FOUND ); \ + return( MBEDTLS_ERR_OID_NOT_FOUND ); \ } /* @@ -140,9 +134,9 @@ int FN_NAME( ATTR1_TYPE ATTR1, const char **oid, size_t *olen ) \ int FN_NAME( ATTR1_TYPE ATTR1, ATTR2_TYPE ATTR2, const char **oid , \ size_t *olen ) \ { \ - const TYPE_T *cur = LIST; \ + const TYPE_T *cur = (LIST); \ while( cur->descriptor.asn1 != NULL ) { \ - if( cur->ATTR1 == ATTR1 && cur->ATTR2 == ATTR2 ) { \ + if( cur->ATTR1 == (ATTR1) && cur->ATTR2 == (ATTR2) ) { \ *oid = cur->descriptor.asn1; \ *olen = cur->descriptor.asn1_len; \ return( 0 ); \ @@ -152,7 +146,6 @@ int FN_NAME( ATTR1_TYPE ATTR1, ATTR2_TYPE ATTR2, const char **oid , \ return( MBEDTLS_ERR_OID_NOT_FOUND ); \ } -#if defined(MBEDTLS_X509_USE_C) || defined(MBEDTLS_X509_CREATE_C) /* * For X520 attribute types */ @@ -259,24 +252,28 @@ typedef struct { static const oid_x509_ext_t oid_x509_ext[] = { { - { ADD_LEN( MBEDTLS_OID_BASIC_CONSTRAINTS ), "id-ce-basicConstraints", "Basic Constraints" }, - MBEDTLS_X509_EXT_BASIC_CONSTRAINTS, + { ADD_LEN( MBEDTLS_OID_BASIC_CONSTRAINTS ), "id-ce-basicConstraints", "Basic Constraints" }, + MBEDTLS_OID_X509_EXT_BASIC_CONSTRAINTS, + }, + { + { ADD_LEN( MBEDTLS_OID_KEY_USAGE ), "id-ce-keyUsage", "Key Usage" }, + MBEDTLS_OID_X509_EXT_KEY_USAGE, }, { - { ADD_LEN( MBEDTLS_OID_KEY_USAGE ), "id-ce-keyUsage", "Key Usage" }, - MBEDTLS_X509_EXT_KEY_USAGE, + { ADD_LEN( MBEDTLS_OID_EXTENDED_KEY_USAGE ), "id-ce-extKeyUsage", "Extended Key Usage" }, + MBEDTLS_OID_X509_EXT_EXTENDED_KEY_USAGE, }, { - { ADD_LEN( MBEDTLS_OID_EXTENDED_KEY_USAGE ), "id-ce-extKeyUsage", "Extended Key Usage" }, - MBEDTLS_X509_EXT_EXTENDED_KEY_USAGE, + { ADD_LEN( MBEDTLS_OID_SUBJECT_ALT_NAME ), "id-ce-subjectAltName", "Subject Alt Name" }, + MBEDTLS_OID_X509_EXT_SUBJECT_ALT_NAME, }, { - { ADD_LEN( MBEDTLS_OID_SUBJECT_ALT_NAME ), "id-ce-subjectAltName", "Subject Alt Name" }, - MBEDTLS_X509_EXT_SUBJECT_ALT_NAME, + { ADD_LEN( MBEDTLS_OID_NS_CERT_TYPE ), "id-netscape-certtype", "Netscape Certificate Type" }, + MBEDTLS_OID_X509_EXT_NS_CERT_TYPE, }, { - { ADD_LEN( MBEDTLS_OID_NS_CERT_TYPE ), "id-netscape-certtype", "Netscape Certificate Type" }, - MBEDTLS_X509_EXT_NS_CERT_TYPE, + { ADD_LEN( MBEDTLS_OID_CERTIFICATE_POLICIES ), "id-ce-certificatePolicies", "Certificate Policies" }, + MBEDTLS_OID_X509_EXT_CERTIFICATE_POLICIES, }, { { NULL, 0, NULL, NULL }, @@ -289,18 +286,27 @@ FN_OID_GET_ATTR1(mbedtls_oid_get_x509_ext_type, oid_x509_ext_t, x509_ext, int, e static const mbedtls_oid_descriptor_t oid_ext_key_usage[] = { - { ADD_LEN( MBEDTLS_OID_SERVER_AUTH ), "id-kp-serverAuth", "TLS Web Server Authentication" }, - { ADD_LEN( MBEDTLS_OID_CLIENT_AUTH ), "id-kp-clientAuth", "TLS Web Client Authentication" }, - { ADD_LEN( MBEDTLS_OID_CODE_SIGNING ), "id-kp-codeSigning", "Code Signing" }, - { ADD_LEN( MBEDTLS_OID_EMAIL_PROTECTION ), "id-kp-emailProtection", "E-mail Protection" }, - { ADD_LEN( MBEDTLS_OID_TIME_STAMPING ), "id-kp-timeStamping", "Time Stamping" }, - { ADD_LEN( MBEDTLS_OID_OCSP_SIGNING ), "id-kp-OCSPSigning", "OCSP Signing" }, + { ADD_LEN( MBEDTLS_OID_SERVER_AUTH ), "id-kp-serverAuth", "TLS Web Server Authentication" }, + { ADD_LEN( MBEDTLS_OID_CLIENT_AUTH ), "id-kp-clientAuth", "TLS Web Client Authentication" }, + { ADD_LEN( MBEDTLS_OID_CODE_SIGNING ), "id-kp-codeSigning", "Code Signing" }, + { ADD_LEN( MBEDTLS_OID_EMAIL_PROTECTION ), "id-kp-emailProtection", "E-mail Protection" }, + { ADD_LEN( MBEDTLS_OID_TIME_STAMPING ), "id-kp-timeStamping", "Time Stamping" }, + { ADD_LEN( MBEDTLS_OID_OCSP_SIGNING ), "id-kp-OCSPSigning", "OCSP Signing" }, + { ADD_LEN( MBEDTLS_OID_WISUN_FAN ), "id-kp-wisun-fan-device", "Wi-SUN Alliance Field Area Network (FAN)" }, { NULL, 0, NULL, NULL }, }; FN_OID_TYPED_FROM_ASN1(mbedtls_oid_descriptor_t, ext_key_usage, oid_ext_key_usage) FN_OID_GET_ATTR1(mbedtls_oid_get_extended_key_usage, mbedtls_oid_descriptor_t, ext_key_usage, const char *, description) -#endif /* MBEDTLS_X509_USE_C || MBEDTLS_X509_CREATE_C */ + +static const mbedtls_oid_descriptor_t oid_certificate_policies[] = +{ + { ADD_LEN( MBEDTLS_OID_ANY_POLICY ), "anyPolicy", "Any Policy" }, + { NULL, 0, NULL, NULL }, +}; + +FN_OID_TYPED_FROM_ASN1(mbedtls_oid_descriptor_t, certificate_policies, oid_certificate_policies) +FN_OID_GET_ATTR1(mbedtls_oid_get_certificate_policies, mbedtls_oid_descriptor_t, certificate_policies, const char *, description) #if defined(MBEDTLS_MD_C) /* @@ -616,6 +622,12 @@ static const oid_md_alg_t oid_md_alg[] = MBEDTLS_MD_SHA512, }, #endif /* MBEDTLS_SHA512_C */ +#if defined(MBEDTLS_RIPEMD160_C) + { + { ADD_LEN( MBEDTLS_OID_DIGEST_ALG_RIPEMD160 ), "id-ripemd160", "RIPEMD-160" }, + MBEDTLS_MD_RIPEMD160, + }, +#endif /* MBEDTLS_RIPEMD160_C */ { { NULL, 0, NULL, NULL }, MBEDTLS_MD_NONE, @@ -715,7 +727,7 @@ FN_OID_GET_ATTR2(mbedtls_oid_get_pkcs12_pbe_alg, oid_pkcs12_pbe_alg_t, pkcs12_pb int mbedtls_oid_get_numeric_string( char *buf, size_t size, const mbedtls_asn1_buf *oid ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i, n; unsigned int value; char *p; @@ -743,7 +755,7 @@ int mbedtls_oid_get_numeric_string( char *buf, size_t size, if( !( oid->p[i] & 0x80 ) ) { /* Last byte */ - ret = mbedtls_snprintf( p, n, ".%d", value ); + ret = mbedtls_snprintf( p, n, ".%u", value ); OID_SAFE_SNPRINTF; value = 0; } diff --git a/Externals/mbedtls/library/padlock.c b/Externals/mbedtls/library/padlock.c index b85ff9cd2c9a..837337413cf4 100644 --- a/Externals/mbedtls/library/padlock.c +++ b/Externals/mbedtls/library/padlock.c @@ -1,7 +1,7 @@ /* * VIA PadLock support functions * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * This implementation is based on the VIA PadLock Programming Guide: @@ -25,11 +23,7 @@ * programming_guide.pdf */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_PADLOCK_C) @@ -58,10 +52,10 @@ int mbedtls_padlock_has_support( int feature ) "cpuid \n\t" "cmpl $0xC0000001, %%eax \n\t" "movl $0, %%edx \n\t" - "jb unsupported \n\t" + "jb 1f \n\t" "movl $0xC0000001, %%eax \n\t" "cpuid \n\t" - "unsupported: \n\t" + "1: \n\t" "movl %%edx, %1 \n\t" "movl %2, %%ebx \n\t" : "=m" (ebx), "=m" (edx) diff --git a/Externals/mbedtls/library/pem.c b/Externals/mbedtls/library/pem.c index 897c8a0d6f7e..fcfde947999a 100644 --- a/Externals/mbedtls/library/pem.c +++ b/Externals/mbedtls/library/pem.c @@ -1,7 +1,7 @@ /* * Privacy Enhanced Mail (PEM) decoding * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,15 +15,9 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_PEM_PARSE_C) || defined(MBEDTLS_PEM_WRITE_C) @@ -34,6 +28,7 @@ #include "mbedtls/md5.h" #include "mbedtls/cipher.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -85,7 +80,7 @@ static int pem_pbkdf1( unsigned char *key, size_t keylen, mbedtls_md5_context md5_ctx; unsigned char md5sum[16]; size_t use_len; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_md5_init( &md5_ctx ); @@ -146,7 +141,7 @@ static int pem_des_decrypt( unsigned char des_iv[8], { mbedtls_des_context des_ctx; unsigned char des_key[8]; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_des_init( &des_ctx ); @@ -174,7 +169,7 @@ static int pem_des3_decrypt( unsigned char des3_iv[8], { mbedtls_des3_context des3_ctx; unsigned char des3_key[24]; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_des3_init( &des3_ctx ); @@ -204,7 +199,7 @@ static int pem_aes_decrypt( unsigned char aes_iv[16], unsigned int keylen, { mbedtls_aes_context aes_ctx; unsigned char aes_key[32]; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_aes_init( &aes_ctx ); @@ -348,7 +343,7 @@ int mbedtls_pem_read_buffer( mbedtls_pem_context *ctx, const char *header, const ret = mbedtls_base64_decode( NULL, 0, &len, s1, s2 - s1 ); if( ret == MBEDTLS_ERR_BASE64_INVALID_CHARACTER ) - return( MBEDTLS_ERR_PEM_INVALID_DATA + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PEM_INVALID_DATA, ret ) ); if( ( buf = mbedtls_calloc( 1, len ) ) == NULL ) return( MBEDTLS_ERR_PEM_ALLOC_FAILED ); @@ -357,7 +352,7 @@ int mbedtls_pem_read_buffer( mbedtls_pem_context *ctx, const char *header, const { mbedtls_platform_zeroize( buf, len ); mbedtls_free( buf ); - return( MBEDTLS_ERR_PEM_INVALID_DATA + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PEM_INVALID_DATA, ret ) ); } if( enc != 0 ) @@ -439,7 +434,7 @@ int mbedtls_pem_write_buffer( const char *header, const char *footer, const unsigned char *der_data, size_t der_len, unsigned char *buf, size_t buf_len, size_t *olen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *encode_buf = NULL, *c, *p = buf; size_t len = 0, use_len, add_len = 0; @@ -483,8 +478,12 @@ int mbedtls_pem_write_buffer( const char *header, const char *footer, *p++ = '\0'; *olen = p - buf; + /* Clean any remaining data previously written to the buffer */ + memset( buf + *olen, 0, buf_len - *olen ); + mbedtls_free( encode_buf ); return( 0 ); } #endif /* MBEDTLS_PEM_WRITE_C */ #endif /* MBEDTLS_PEM_PARSE_C || MBEDTLS_PEM_WRITE_C */ + diff --git a/Externals/mbedtls/library/pk.c b/Externals/mbedtls/library/pk.c index bac685dc1993..05cc2134f1cb 100644 --- a/Externals/mbedtls/library/pk.c +++ b/Externals/mbedtls/library/pk.c @@ -1,7 +1,7 @@ /* * Public Key abstraction layer * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,21 +15,16 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_PK_C) #include "mbedtls/pk.h" #include "mbedtls/pk_internal.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #if defined(MBEDTLS_RSA_C) #include "mbedtls/rsa.h" @@ -41,6 +36,10 @@ #include "mbedtls/ecdsa.h" #endif +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "mbedtls/psa_util.h" +#endif + #include #include @@ -147,6 +146,42 @@ int mbedtls_pk_setup( mbedtls_pk_context *ctx, const mbedtls_pk_info_t *info ) return( 0 ); } +#if defined(MBEDTLS_USE_PSA_CRYPTO) +/* + * Initialise a PSA-wrapping context + */ +int mbedtls_pk_setup_opaque( mbedtls_pk_context *ctx, + const psa_key_id_t key ) +{ + const mbedtls_pk_info_t * const info = &mbedtls_pk_opaque_info; + psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + psa_key_id_t *pk_ctx; + psa_key_type_t type; + + if( ctx == NULL || ctx->pk_info != NULL ) + return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); + + if( PSA_SUCCESS != psa_get_key_attributes( key, &attributes ) ) + return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); + type = psa_get_key_type( &attributes ); + psa_reset_key_attributes( &attributes ); + + /* Current implementation of can_do() relies on this. */ + if( ! PSA_KEY_TYPE_IS_ECC_KEY_PAIR( type ) ) + return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE) ; + + if( ( ctx->pk_ctx = info->ctx_alloc_func() ) == NULL ) + return( MBEDTLS_ERR_PK_ALLOC_FAILED ); + + ctx->pk_info = info; + + pk_ctx = (psa_key_id_t *) ctx->pk_ctx; + *pk_ctx = key; + + return( 0 ); +} +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + #if defined(MBEDTLS_PK_RSA_ALT_SUPPORT) /* * Initialize an RSA-alt context @@ -200,12 +235,15 @@ static inline int pk_hashlen_helper( mbedtls_md_type_t md_alg, size_t *hash_len { const mbedtls_md_info_t *md_info; - if( *hash_len != 0 ) + if( *hash_len != 0 && md_alg == MBEDTLS_MD_NONE ) return( 0 ); if( ( md_info = mbedtls_md_info_from_type( md_alg ) ) == NULL ) return( -1 ); + if ( *hash_len != 0 && *hash_len != mbedtls_md_get_size( md_info ) ) + return ( -1 ); + *hash_len = mbedtls_md_get_size( md_info ); return( 0 ); } @@ -258,7 +296,7 @@ int mbedtls_pk_verify_restartable( mbedtls_pk_context *ctx, mbedtls_ecp_restart_is_enabled() && ctx->pk_info->verify_rs_func != NULL ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ( ret = pk_restart_setup( rs_ctx, ctx->pk_info ) ) != 0 ) return( ret ); @@ -315,7 +353,7 @@ int mbedtls_pk_verify_ext( mbedtls_pk_type_t type, const void *options, if( type == MBEDTLS_PK_RSASSA_PSS ) { #if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_PKCS1_V21) - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const mbedtls_pk_rsassa_pss_options *pss_opts; #if SIZE_MAX > UINT_MAX @@ -381,7 +419,7 @@ int mbedtls_pk_sign_restartable( mbedtls_pk_context *ctx, mbedtls_ecp_restart_is_enabled() && ctx->pk_info->sign_rs_func != NULL ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ( ret = pk_restart_setup( rs_ctx, ctx->pk_info ) ) != 0 ) return( ret ); @@ -472,12 +510,14 @@ int mbedtls_pk_check_pair( const mbedtls_pk_context *pub, const mbedtls_pk_conte PK_VALIDATE_RET( prv != NULL ); if( pub->pk_info == NULL || - prv->pk_info == NULL || - prv->pk_info->check_pair_func == NULL ) + prv->pk_info == NULL ) { return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); } + if( prv->pk_info->check_pair_func == NULL ) + return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); + if( prv->pk_info->type == MBEDTLS_PK_RSA_ALT ) { if( pub->pk_info->type != MBEDTLS_PK_RSA ) @@ -543,4 +583,60 @@ mbedtls_pk_type_t mbedtls_pk_get_type( const mbedtls_pk_context *ctx ) return( ctx->pk_info->type ); } +#if defined(MBEDTLS_USE_PSA_CRYPTO) +/* + * Load the key to a PSA key slot, + * then turn the PK context into a wrapper for that key slot. + * + * Currently only works for EC private keys. + */ +int mbedtls_pk_wrap_as_opaque( mbedtls_pk_context *pk, + psa_key_id_t *key, + psa_algorithm_t hash_alg ) +{ +#if !defined(MBEDTLS_ECP_C) + ((void) pk); + ((void) key); + ((void) hash_alg); + return( MBEDTLS_ERR_PK_TYPE_MISMATCH ); +#else + const mbedtls_ecp_keypair *ec; + unsigned char d[MBEDTLS_ECP_MAX_BYTES]; + size_t d_len; + psa_ecc_family_t curve_id; + psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + psa_key_type_t key_type; + size_t bits; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + /* export the private key material in the format PSA wants */ + if( mbedtls_pk_get_type( pk ) != MBEDTLS_PK_ECKEY ) + return( MBEDTLS_ERR_PK_TYPE_MISMATCH ); + + ec = mbedtls_pk_ec( *pk ); + d_len = ( ec->grp.nbits + 7 ) / 8; + if( ( ret = mbedtls_mpi_write_binary( &ec->d, d, d_len ) ) != 0 ) + return( ret ); + + curve_id = mbedtls_ecc_group_to_psa( ec->grp.id, &bits ); + key_type = PSA_KEY_TYPE_ECC_KEY_PAIR( curve_id ); + + /* prepare the key attributes */ + psa_set_key_type( &attributes, key_type ); + psa_set_key_bits( &attributes, bits ); + psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN_HASH ); + psa_set_key_algorithm( &attributes, PSA_ALG_ECDSA(hash_alg) ); + + /* import private key into PSA */ + if( PSA_SUCCESS != psa_import_key( &attributes, d, d_len, key ) ) + return( MBEDTLS_ERR_PK_HW_ACCEL_FAILED ); + + /* make PK context wrap the key slot */ + mbedtls_pk_free( pk ); + mbedtls_pk_init( pk ); + + return( mbedtls_pk_setup_opaque( pk, *key ) ); +#endif /* MBEDTLS_ECP_C */ +} +#endif /* MBEDTLS_USE_PSA_CRYPTO */ #endif /* MBEDTLS_PK_C */ diff --git a/Externals/mbedtls/library/pk_wrap.c b/Externals/mbedtls/library/pk_wrap.c index 87806be337c2..107e912acee6 100644 --- a/Externals/mbedtls/library/pk_wrap.c +++ b/Externals/mbedtls/library/pk_wrap.c @@ -1,7 +1,7 @@ /* * Public Key abstraction layer: wrapper functions * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,18 +15,13 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_PK_C) #include "mbedtls/pk_internal.h" +#include "mbedtls/error.h" /* Even if RSA not activated, for the sake of RSA-alt */ #include "mbedtls/rsa.h" @@ -41,10 +36,20 @@ #include "mbedtls/ecdsa.h" #endif +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "mbedtls/asn1write.h" +#endif + #if defined(MBEDTLS_PK_RSA_ALT_SUPPORT) #include "mbedtls/platform_util.h" #endif +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "psa/crypto.h" +#include "mbedtls/psa_util.h" +#include "mbedtls/asn1.h" +#endif + #if defined(MBEDTLS_PLATFORM_C) #include "mbedtls/platform.h" #else @@ -73,7 +78,7 @@ static int rsa_verify_wrap( void *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_rsa_context * rsa = (mbedtls_rsa_context *) ctx; size_t rsa_len = mbedtls_rsa_get_len( rsa ); @@ -238,7 +243,7 @@ static int eckey_verify_wrap( void *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecdsa_context ecdsa; mbedtls_ecdsa_init( &ecdsa ); @@ -256,7 +261,7 @@ static int eckey_sign_wrap( void *ctx, mbedtls_md_type_t md_alg, unsigned char *sig, size_t *sig_len, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecdsa_context ecdsa; mbedtls_ecdsa_init( &ecdsa ); @@ -330,7 +335,7 @@ static int eckey_verify_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, const unsigned char *sig, size_t sig_len, void *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; eckey_restart_ctx *rs = rs_ctx; /* Should never happen */ @@ -355,7 +360,7 @@ static int eckey_sign_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, void *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; eckey_restart_ctx *rs = rs_ctx; /* Should never happen */ @@ -472,11 +477,153 @@ static int ecdsa_can_do( mbedtls_pk_type_t type ) return( type == MBEDTLS_PK_ECDSA ); } +#if defined(MBEDTLS_USE_PSA_CRYPTO) +/* + * An ASN.1 encoded signature is a sequence of two ASN.1 integers. Parse one of + * those integers and convert it to the fixed-length encoding expected by PSA. + */ +static int extract_ecdsa_sig_int( unsigned char **from, const unsigned char *end, + unsigned char *to, size_t to_len ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t unpadded_len, padding_len; + + if( ( ret = mbedtls_asn1_get_tag( from, end, &unpadded_len, + MBEDTLS_ASN1_INTEGER ) ) != 0 ) + { + return( ret ); + } + + while( unpadded_len > 0 && **from == 0x00 ) + { + ( *from )++; + unpadded_len--; + } + + if( unpadded_len > to_len || unpadded_len == 0 ) + return( MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + + padding_len = to_len - unpadded_len; + memset( to, 0x00, padding_len ); + memcpy( to + padding_len, *from, unpadded_len ); + ( *from ) += unpadded_len; + + return( 0 ); +} + +/* + * Convert a signature from an ASN.1 sequence of two integers + * to a raw {r,s} buffer. Note: the provided sig buffer must be at least + * twice as big as int_size. + */ +static int extract_ecdsa_sig( unsigned char **p, const unsigned char *end, + unsigned char *sig, size_t int_size ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t tmp_size; + + if( ( ret = mbedtls_asn1_get_tag( p, end, &tmp_size, + MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) + return( ret ); + + /* Extract r */ + if( ( ret = extract_ecdsa_sig_int( p, end, sig, int_size ) ) != 0 ) + return( ret ); + /* Extract s */ + if( ( ret = extract_ecdsa_sig_int( p, end, sig + int_size, int_size ) ) != 0 ) + return( ret ); + + return( 0 ); +} + +static int ecdsa_verify_wrap( void *ctx_arg, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + const unsigned char *sig, size_t sig_len ) +{ + mbedtls_ecdsa_context *ctx = ctx_arg; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + psa_key_id_t key_id = 0; + psa_status_t status; + mbedtls_pk_context key; + int key_len; + /* see ECP_PUB_DER_MAX_BYTES in pkwrite.c */ + unsigned char buf[30 + 2 * MBEDTLS_ECP_MAX_BYTES]; + unsigned char *p; + mbedtls_pk_info_t pk_info = mbedtls_eckey_info; + psa_algorithm_t psa_sig_md = PSA_ALG_ECDSA_ANY; + size_t curve_bits; + psa_ecc_family_t curve = + mbedtls_ecc_group_to_psa( ctx->grp.id, &curve_bits ); + const size_t signature_part_size = ( ctx->grp.nbits + 7 ) / 8; + ((void) md_alg); + + if( curve == 0 ) + return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); + + /* mbedtls_pk_write_pubkey() expects a full PK context; + * re-construct one to make it happy */ + key.pk_info = &pk_info; + key.pk_ctx = ctx; + p = buf + sizeof( buf ); + key_len = mbedtls_pk_write_pubkey( &p, buf, &key ); + if( key_len <= 0 ) + return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); + + psa_set_key_type( &attributes, PSA_KEY_TYPE_ECC_PUBLIC_KEY( curve ) ); + psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY_HASH ); + psa_set_key_algorithm( &attributes, psa_sig_md ); + + status = psa_import_key( &attributes, + buf + sizeof( buf ) - key_len, key_len, + &key_id ); + if( status != PSA_SUCCESS ) + { + ret = mbedtls_psa_err_translate_pk( status ); + goto cleanup; + } + + /* We don't need the exported key anymore and can + * reuse its buffer for signature extraction. */ + if( 2 * signature_part_size > sizeof( buf ) ) + { + ret = MBEDTLS_ERR_PK_BAD_INPUT_DATA; + goto cleanup; + } + + p = (unsigned char*) sig; + if( ( ret = extract_ecdsa_sig( &p, sig + sig_len, buf, + signature_part_size ) ) != 0 ) + { + goto cleanup; + } + + if( psa_verify_hash( key_id, psa_sig_md, + hash, hash_len, + buf, 2 * signature_part_size ) + != PSA_SUCCESS ) + { + ret = MBEDTLS_ERR_ECP_VERIFY_FAILED; + goto cleanup; + } + + if( p != sig + sig_len ) + { + ret = MBEDTLS_ERR_PK_SIG_LEN_MISMATCH; + goto cleanup; + } + ret = 0; + +cleanup: + psa_destroy_key( key_id ); + return( ret ); +} +#else /* MBEDTLS_USE_PSA_CRYPTO */ static int ecdsa_verify_wrap( void *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ((void) md_alg); ret = mbedtls_ecdsa_read_signature( (mbedtls_ecdsa_context *) ctx, @@ -487,6 +634,7 @@ static int ecdsa_verify_wrap( void *ctx, mbedtls_md_type_t md_alg, return( ret ); } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ static int ecdsa_sign_wrap( void *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, @@ -503,7 +651,7 @@ static int ecdsa_verify_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, const unsigned char *sig, size_t sig_len, void *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ((void) md_alg); ret = mbedtls_ecdsa_read_signature_restartable( @@ -619,6 +767,8 @@ static int rsa_alt_sign_wrap( void *ctx, mbedtls_md_type_t md_alg, #endif /* SIZE_MAX > UINT_MAX */ *sig_len = rsa_alt->key_len_func( rsa_alt->key ); + if( *sig_len > MBEDTLS_PK_SIGNATURE_MAX_SIZE ) + return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); return( rsa_alt->sign_func( rsa_alt->key, f_rng, p_rng, MBEDTLS_RSA_PRIVATE, md_alg, (unsigned int) hash_len, hash, sig ) ); @@ -647,7 +797,7 @@ static int rsa_alt_check_pair( const void *pub, const void *prv ) unsigned char sig[MBEDTLS_MPI_MAX_SIZE]; unsigned char hash[32]; size_t sig_len = 0; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( rsa_alt_get_bitlen( prv ) != rsa_get_bitlen( pub ) ) return( MBEDTLS_ERR_RSA_KEY_CHECK_FAILED ); @@ -716,4 +866,204 @@ const mbedtls_pk_info_t mbedtls_rsa_alt_info = { #endif /* MBEDTLS_PK_RSA_ALT_SUPPORT */ +#if defined(MBEDTLS_USE_PSA_CRYPTO) + +static void *pk_opaque_alloc_wrap( void ) +{ + void *ctx = mbedtls_calloc( 1, sizeof( psa_key_id_t ) ); + + /* no _init() function to call, an calloc() already zeroized */ + + return( ctx ); +} + +static void pk_opaque_free_wrap( void *ctx ) +{ + mbedtls_platform_zeroize( ctx, sizeof( psa_key_id_t ) ); + mbedtls_free( ctx ); +} + +static size_t pk_opaque_get_bitlen( const void *ctx ) +{ + const psa_key_id_t *key = (const psa_key_id_t *) ctx; + size_t bits; + psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + + if( PSA_SUCCESS != psa_get_key_attributes( *key, &attributes ) ) + return( 0 ); + + bits = psa_get_key_bits( &attributes ); + psa_reset_key_attributes( &attributes ); + return( bits ); +} + +static int pk_opaque_can_do( mbedtls_pk_type_t type ) +{ + /* For now opaque PSA keys can only wrap ECC keypairs, + * as checked by setup_psa(). + * Also, ECKEY_DH does not really make sense with the current API. */ + return( type == MBEDTLS_PK_ECKEY || + type == MBEDTLS_PK_ECDSA ); +} + +#if defined(MBEDTLS_ECDSA_C) + +/* + * Simultaneously convert and move raw MPI from the beginning of a buffer + * to an ASN.1 MPI at the end of the buffer. + * See also mbedtls_asn1_write_mpi(). + * + * p: pointer to the end of the output buffer + * start: start of the output buffer, and also of the mpi to write at the end + * n_len: length of the mpi to read from start + */ +static int asn1_write_mpibuf( unsigned char **p, unsigned char *start, + size_t n_len ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t len = 0; + + if( (size_t)( *p - start ) < n_len ) + return( MBEDTLS_ERR_ASN1_BUF_TOO_SMALL ); + + len = n_len; + *p -= len; + memmove( *p, start, len ); + + /* ASN.1 DER encoding requires minimal length, so skip leading 0s. + * Neither r nor s should be 0, but as a failsafe measure, still detect + * that rather than overflowing the buffer in case of a PSA error. */ + while( len > 0 && **p == 0x00 ) + { + ++(*p); + --len; + } + + /* this is only reached if the signature was invalid */ + if( len == 0 ) + return( MBEDTLS_ERR_PK_HW_ACCEL_FAILED ); + + /* if the msb is 1, ASN.1 requires that we prepend a 0. + * Neither r nor s can be 0, so we can assume len > 0 at all times. */ + if( **p & 0x80 ) + { + if( *p - start < 1 ) + return( MBEDTLS_ERR_ASN1_BUF_TOO_SMALL ); + + *--(*p) = 0x00; + len += 1; + } + + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( p, start, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, + MBEDTLS_ASN1_INTEGER ) ); + + return( (int) len ); +} + +/* Transcode signature from PSA format to ASN.1 sequence. + * See ecdsa_signature_to_asn1 in ecdsa.c, but with byte buffers instead of + * MPIs, and in-place. + * + * [in/out] sig: the signature pre- and post-transcoding + * [in/out] sig_len: signature length pre- and post-transcoding + * [int] buf_len: the available size the in/out buffer + */ +static int pk_ecdsa_sig_asn1_from_psa( unsigned char *sig, size_t *sig_len, + size_t buf_len ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t len = 0; + const size_t rs_len = *sig_len / 2; + unsigned char *p = sig + buf_len; + + MBEDTLS_ASN1_CHK_ADD( len, asn1_write_mpibuf( &p, sig + rs_len, rs_len ) ); + MBEDTLS_ASN1_CHK_ADD( len, asn1_write_mpibuf( &p, sig, rs_len ) ); + + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &p, sig, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &p, sig, + MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ); + + memmove( sig, p, len ); + *sig_len = len; + + return( 0 ); +} + +#endif /* MBEDTLS_ECDSA_C */ + +static int pk_opaque_sign_wrap( void *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + unsigned char *sig, size_t *sig_len, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) +{ +#if !defined(MBEDTLS_ECDSA_C) + ((void) ctx); + ((void) md_alg); + ((void) hash); + ((void) hash_len); + ((void) sig); + ((void) sig_len); + ((void) f_rng); + ((void) p_rng); + return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); +#else /* !MBEDTLS_ECDSA_C */ + const psa_key_id_t *key = (const psa_key_id_t *) ctx; + psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + psa_algorithm_t alg = PSA_ALG_ECDSA( mbedtls_psa_translate_md( md_alg ) ); + size_t buf_len; + psa_status_t status; + + /* PSA has its own RNG */ + (void) f_rng; + (void) p_rng; + + /* PSA needs an output buffer of known size, but our API doesn't provide + * that information. Assume that the buffer is large enough for a + * maximal-length signature with that key (otherwise the application is + * buggy anyway). */ + status = psa_get_key_attributes( *key, &attributes ); + if( status != PSA_SUCCESS ) + return( mbedtls_psa_err_translate_pk( status ) ); + buf_len = MBEDTLS_ECDSA_MAX_SIG_LEN( psa_get_key_bits( &attributes ) ); + psa_reset_key_attributes( &attributes ); + if( buf_len > MBEDTLS_PK_SIGNATURE_MAX_SIZE ) + return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); + + /* make the signature */ + status = psa_sign_hash( *key, alg, hash, hash_len, + sig, buf_len, sig_len ); + if( status != PSA_SUCCESS ) + return( mbedtls_psa_err_translate_pk( status ) ); + + /* transcode it to ASN.1 sequence */ + return( pk_ecdsa_sig_asn1_from_psa( sig, sig_len, buf_len ) ); +#endif /* !MBEDTLS_ECDSA_C */ +} + +const mbedtls_pk_info_t mbedtls_pk_opaque_info = { + MBEDTLS_PK_OPAQUE, + "Opaque", + pk_opaque_get_bitlen, + pk_opaque_can_do, + NULL, /* verify - will be done later */ + pk_opaque_sign_wrap, +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + NULL, /* restartable verify - not relevant */ + NULL, /* restartable sign - not relevant */ +#endif + NULL, /* decrypt - will be done later */ + NULL, /* encrypt - will be done later */ + NULL, /* check_pair - could be done later or left NULL */ + pk_opaque_alloc_wrap, + pk_opaque_free_wrap, +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + NULL, /* restart alloc - not relevant */ + NULL, /* restart free - not relevant */ +#endif + NULL, /* debug - could be done later, or even left NULL */ +}; + +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + #endif /* MBEDTLS_PK_C */ diff --git a/Externals/mbedtls/library/pkcs11.c b/Externals/mbedtls/library/pkcs11.c index 0ea64252ee4f..4deccf3f6071 100644 --- a/Externals/mbedtls/library/pkcs11.c +++ b/Externals/mbedtls/library/pkcs11.c @@ -5,7 +5,7 @@ * * \author Adriaan de Jong * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -19,8 +19,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #include "mbedtls/pkcs11.h" diff --git a/Externals/mbedtls/library/pkcs12.c b/Externals/mbedtls/library/pkcs12.c index 7edf064c1367..cacf7dba2211 100644 --- a/Externals/mbedtls/library/pkcs12.c +++ b/Externals/mbedtls/library/pkcs12.c @@ -1,7 +1,7 @@ /* * PKCS#12 Personal Information Exchange Syntax * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The PKCS #12 Personal Information Exchange Syntax Standard v1.1 @@ -25,11 +23,7 @@ * ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-12/pkcs-12v1-1.asn */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_PKCS12_C) @@ -37,6 +31,7 @@ #include "mbedtls/asn1.h" #include "mbedtls/cipher.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -53,7 +48,7 @@ static int pkcs12_parse_pbe_params( mbedtls_asn1_buf *params, mbedtls_asn1_buf *salt, int *iterations ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char **p = ¶ms->p; const unsigned char *end = params->p + params->len; @@ -65,21 +60,21 @@ static int pkcs12_parse_pbe_params( mbedtls_asn1_buf *params, * */ if( params->tag != ( MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) - return( MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ); if( ( ret = mbedtls_asn1_get_tag( p, end, &salt->len, MBEDTLS_ASN1_OCTET_STRING ) ) != 0 ) - return( MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT, ret ) ); salt->p = *p; *p += salt->len; if( ( ret = mbedtls_asn1_get_int( p, end, iterations ) ) != 0 ) - return( MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT, ret ) ); if( *p != end ) - return( MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); return( 0 ); } @@ -145,7 +140,7 @@ int mbedtls_pkcs12_pbe_sha1_rc4_128( mbedtls_asn1_buf *pbe_params, int mode, ((void) output); return( MBEDTLS_ERR_PKCS12_FEATURE_UNAVAILABLE ); #else - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char key[16]; mbedtls_arc4_context ctx; ((void) mode); @@ -184,6 +179,9 @@ int mbedtls_pkcs12_pbe( mbedtls_asn1_buf *pbe_params, int mode, mbedtls_cipher_context_t cipher_ctx; size_t olen = 0; + if( pwd == NULL && pwdlen != 0 ) + return( MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA ); + cipher_info = mbedtls_cipher_info_from_type( cipher_type ); if( cipher_info == NULL ) return( MBEDTLS_ERR_PKCS12_FEATURE_UNAVAILABLE ); @@ -236,12 +234,23 @@ static void pkcs12_fill_buffer( unsigned char *data, size_t data_len, unsigned char *p = data; size_t use_len; - while( data_len > 0 ) + if( filler != NULL && fill_len != 0 ) { - use_len = ( data_len > fill_len ) ? fill_len : data_len; - memcpy( p, filler, use_len ); - p += use_len; - data_len -= use_len; + while( data_len > 0 ) + { + use_len = ( data_len > fill_len ) ? fill_len : data_len; + memcpy( p, filler, use_len ); + p += use_len; + data_len -= use_len; + } + } + else + { + /* If either of the above are not true then clearly there is nothing + * that this function can do. The function should *not* be called + * under either of those circumstances, as you could end up with an + * incorrect output but for safety's sake, leaving the check in as + * otherwise we could end up with memory corruption.*/ } } @@ -250,7 +259,7 @@ int mbedtls_pkcs12_derivation( unsigned char *data, size_t datalen, const unsigned char *salt, size_t saltlen, mbedtls_md_type_t md_type, int id, int iterations ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned int j; unsigned char diversifier[128]; @@ -258,6 +267,8 @@ int mbedtls_pkcs12_derivation( unsigned char *data, size_t datalen, unsigned char hash_output[MBEDTLS_MD_MAX_SIZE]; unsigned char *p; unsigned char c; + int use_password = 0; + int use_salt = 0; size_t hlen, use_len, v, i; @@ -268,6 +279,15 @@ int mbedtls_pkcs12_derivation( unsigned char *data, size_t datalen, if( datalen > 128 || pwdlen > 64 || saltlen > 64 ) return( MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA ); + if( pwd == NULL && pwdlen != 0 ) + return( MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA ); + + if( salt == NULL && saltlen != 0 ) + return( MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA ); + + use_password = ( pwd && pwdlen != 0 ); + use_salt = ( salt && saltlen != 0 ); + md_info = mbedtls_md_info_from_type( md_type ); if( md_info == NULL ) return( MBEDTLS_ERR_PKCS12_FEATURE_UNAVAILABLE ); @@ -285,8 +305,15 @@ int mbedtls_pkcs12_derivation( unsigned char *data, size_t datalen, memset( diversifier, (unsigned char) id, v ); - pkcs12_fill_buffer( salt_block, v, salt, saltlen ); - pkcs12_fill_buffer( pwd_block, v, pwd, pwdlen ); + if( use_salt != 0 ) + { + pkcs12_fill_buffer( salt_block, v, salt, saltlen ); + } + + if( use_password != 0 ) + { + pkcs12_fill_buffer( pwd_block, v, pwd, pwdlen ); + } p = data; while( datalen > 0 ) @@ -298,11 +325,17 @@ int mbedtls_pkcs12_derivation( unsigned char *data, size_t datalen, if( ( ret = mbedtls_md_update( &md_ctx, diversifier, v ) ) != 0 ) goto exit; - if( ( ret = mbedtls_md_update( &md_ctx, salt_block, v ) ) != 0 ) - goto exit; + if( use_salt != 0 ) + { + if( ( ret = mbedtls_md_update( &md_ctx, salt_block, v )) != 0 ) + goto exit; + } - if( ( ret = mbedtls_md_update( &md_ctx, pwd_block, v ) ) != 0 ) - goto exit; + if( use_password != 0) + { + if( ( ret = mbedtls_md_update( &md_ctx, pwd_block, v )) != 0 ) + goto exit; + } if( ( ret = mbedtls_md_finish( &md_ctx, hash_output ) ) != 0 ) goto exit; @@ -330,22 +363,28 @@ int mbedtls_pkcs12_derivation( unsigned char *data, size_t datalen, if( ++hash_block[i - 1] != 0 ) break; - // salt_block += B - c = 0; - for( i = v; i > 0; i-- ) + if( use_salt != 0 ) { - j = salt_block[i - 1] + hash_block[i - 1] + c; - c = (unsigned char) (j >> 8); - salt_block[i - 1] = j & 0xFF; + // salt_block += B + c = 0; + for( i = v; i > 0; i-- ) + { + j = salt_block[i - 1] + hash_block[i - 1] + c; + c = MBEDTLS_BYTE_1( j ); + salt_block[i - 1] = MBEDTLS_BYTE_0( j ); + } } - // pwd_block += B - c = 0; - for( i = v; i > 0; i-- ) + if( use_password != 0 ) { - j = pwd_block[i - 1] + hash_block[i - 1] + c; - c = (unsigned char) (j >> 8); - pwd_block[i - 1] = j & 0xFF; + // pwd_block += B + c = 0; + for( i = v; i > 0; i-- ) + { + j = pwd_block[i - 1] + hash_block[i - 1] + c; + c = MBEDTLS_BYTE_1( j ); + pwd_block[i - 1] = MBEDTLS_BYTE_0( j ); + } } } diff --git a/Externals/mbedtls/library/pkcs5.c b/Externals/mbedtls/library/pkcs5.c index 50133435ceb7..2b014d91c87c 100644 --- a/Externals/mbedtls/library/pkcs5.c +++ b/Externals/mbedtls/library/pkcs5.c @@ -5,7 +5,7 @@ * * \author Mathias Olsson * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -19,8 +19,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * PKCS#5 includes PBKDF2 and more @@ -29,15 +27,12 @@ * http://tools.ietf.org/html/rfc6070 (Test vectors) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_PKCS5_C) #include "mbedtls/pkcs5.h" +#include "mbedtls/error.h" #if defined(MBEDTLS_ASN1_PARSE_C) #include "mbedtls/asn1.h" @@ -59,14 +54,14 @@ static int pkcs5_parse_pbkdf2_params( const mbedtls_asn1_buf *params, mbedtls_asn1_buf *salt, int *iterations, int *keylen, mbedtls_md_type_t *md_type ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_asn1_buf prf_alg_oid; unsigned char *p = params->p; const unsigned char *end = params->p + params->len; if( params->tag != ( MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) - return( MBEDTLS_ERR_PKCS5_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PKCS5_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ); /* * PBKDF2-params ::= SEQUENCE { * salt OCTET STRING, @@ -76,14 +71,15 @@ static int pkcs5_parse_pbkdf2_params( const mbedtls_asn1_buf *params, * } * */ - if( ( ret = mbedtls_asn1_get_tag( &p, end, &salt->len, MBEDTLS_ASN1_OCTET_STRING ) ) != 0 ) - return( MBEDTLS_ERR_PKCS5_INVALID_FORMAT + ret ); + if( ( ret = mbedtls_asn1_get_tag( &p, end, &salt->len, + MBEDTLS_ASN1_OCTET_STRING ) ) != 0 ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PKCS5_INVALID_FORMAT, ret ) ); salt->p = p; p += salt->len; if( ( ret = mbedtls_asn1_get_int( &p, end, iterations ) ) != 0 ) - return( MBEDTLS_ERR_PKCS5_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PKCS5_INVALID_FORMAT, ret ) ); if( p == end ) return( 0 ); @@ -91,21 +87,21 @@ static int pkcs5_parse_pbkdf2_params( const mbedtls_asn1_buf *params, if( ( ret = mbedtls_asn1_get_int( &p, end, keylen ) ) != 0 ) { if( ret != MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) - return( MBEDTLS_ERR_PKCS5_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PKCS5_INVALID_FORMAT, ret ) ); } if( p == end ) return( 0 ); if( ( ret = mbedtls_asn1_get_alg_null( &p, end, &prf_alg_oid ) ) != 0 ) - return( MBEDTLS_ERR_PKCS5_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PKCS5_INVALID_FORMAT, ret ) ); if( mbedtls_oid_get_md_hmac( &prf_alg_oid, md_type ) != 0 ) return( MBEDTLS_ERR_PKCS5_FEATURE_UNAVAILABLE ); if( p != end ) - return( MBEDTLS_ERR_PKCS5_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PKCS5_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); return( 0 ); } @@ -138,11 +134,12 @@ int mbedtls_pkcs5_pbes2( const mbedtls_asn1_buf *pbe_params, int mode, * } */ if( pbe_params->tag != ( MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) - return( MBEDTLS_ERR_PKCS5_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PKCS5_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ); - if( ( ret = mbedtls_asn1_get_alg( &p, end, &kdf_alg_oid, &kdf_alg_params ) ) != 0 ) - return( MBEDTLS_ERR_PKCS5_INVALID_FORMAT + ret ); + if( ( ret = mbedtls_asn1_get_alg( &p, end, &kdf_alg_oid, + &kdf_alg_params ) ) != 0 ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PKCS5_INVALID_FORMAT, ret ) ); // Only PBKDF2 supported at the moment // @@ -163,7 +160,7 @@ int mbedtls_pkcs5_pbes2( const mbedtls_asn1_buf *pbe_params, int mode, if( ( ret = mbedtls_asn1_get_alg( &p, end, &enc_scheme_oid, &enc_scheme_params ) ) != 0 ) { - return( MBEDTLS_ERR_PKCS5_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PKCS5_INVALID_FORMAT, ret ) ); } if( mbedtls_oid_get_cipher_alg( &enc_scheme_oid, &cipher_alg ) != 0 ) @@ -202,7 +199,8 @@ int mbedtls_pkcs5_pbes2( const mbedtls_asn1_buf *pbe_params, int mode, if( ( ret = mbedtls_cipher_setup( &cipher_ctx, cipher_info ) ) != 0 ) goto exit; - if( ( ret = mbedtls_cipher_setkey( &cipher_ctx, key, 8 * keylen, (mbedtls_operation_t) mode ) ) != 0 ) + if( ( ret = mbedtls_cipher_setkey( &cipher_ctx, key, 8 * keylen, + (mbedtls_operation_t) mode ) ) != 0 ) goto exit; if( ( ret = mbedtls_cipher_crypt( &cipher_ctx, iv, enc_scheme_params.len, @@ -217,12 +215,14 @@ int mbedtls_pkcs5_pbes2( const mbedtls_asn1_buf *pbe_params, int mode, } #endif /* MBEDTLS_ASN1_PARSE_C */ -int mbedtls_pkcs5_pbkdf2_hmac( mbedtls_md_context_t *ctx, const unsigned char *password, +int mbedtls_pkcs5_pbkdf2_hmac( mbedtls_md_context_t *ctx, + const unsigned char *password, size_t plen, const unsigned char *salt, size_t slen, unsigned int iteration_count, uint32_t key_length, unsigned char *output ) { - int ret, j; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + int j; unsigned int i; unsigned char md1[MBEDTLS_MD_MAX_SIZE]; unsigned char work[MBEDTLS_MD_MAX_SIZE]; @@ -239,21 +239,23 @@ int mbedtls_pkcs5_pbkdf2_hmac( mbedtls_md_context_t *ctx, const unsigned char *p return( MBEDTLS_ERR_PKCS5_BAD_INPUT_DATA ); #endif + if( ( ret = mbedtls_md_hmac_starts( ctx, password, plen ) ) != 0 ) + return( ret ); while( key_length ) { // U1 ends up in work // - if( ( ret = mbedtls_md_hmac_starts( ctx, password, plen ) ) != 0 ) - return( ret ); - if( ( ret = mbedtls_md_hmac_update( ctx, salt, slen ) ) != 0 ) - return( ret ); + goto cleanup; if( ( ret = mbedtls_md_hmac_update( ctx, counter, 4 ) ) != 0 ) - return( ret ); + goto cleanup; if( ( ret = mbedtls_md_hmac_finish( ctx, work ) ) != 0 ) - return( ret ); + goto cleanup; + + if( ( ret = mbedtls_md_hmac_reset( ctx ) ) != 0 ) + goto cleanup; memcpy( md1, work, md_size ); @@ -261,14 +263,14 @@ int mbedtls_pkcs5_pbkdf2_hmac( mbedtls_md_context_t *ctx, const unsigned char *p { // U2 ends up in md1 // - if( ( ret = mbedtls_md_hmac_starts( ctx, password, plen ) ) != 0 ) - return( ret ); - if( ( ret = mbedtls_md_hmac_update( ctx, md1, md_size ) ) != 0 ) - return( ret ); + goto cleanup; if( ( ret = mbedtls_md_hmac_finish( ctx, md1 ) ) != 0 ) - return( ret ); + goto cleanup; + + if( ( ret = mbedtls_md_hmac_reset( ctx ) ) != 0 ) + goto cleanup; // U1 xor U2 // @@ -287,7 +289,12 @@ int mbedtls_pkcs5_pbkdf2_hmac( mbedtls_md_context_t *ctx, const unsigned char *p break; } - return( 0 ); +cleanup: + /* Zeroise buffers to clear sensitive data from memory. */ + mbedtls_platform_zeroize( work, MBEDTLS_MD_MAX_SIZE ); + mbedtls_platform_zeroize( md1, MBEDTLS_MD_MAX_SIZE ); + + return( ret ); } #if defined(MBEDTLS_SELF_TEST) @@ -304,10 +311,10 @@ int mbedtls_pkcs5_self_test( int verbose ) #define MAX_TESTS 6 -static const size_t plen[MAX_TESTS] = +static const size_t plen_test_data[MAX_TESTS] = { 8, 8, 8, 24, 9 }; -static const unsigned char password[MAX_TESTS][32] = +static const unsigned char password_test_data[MAX_TESTS][32] = { "password", "password", @@ -316,10 +323,10 @@ static const unsigned char password[MAX_TESTS][32] = "pass\0word", }; -static const size_t slen[MAX_TESTS] = +static const size_t slen_test_data[MAX_TESTS] = { 4, 4, 4, 36, 5 }; -static const unsigned char salt[MAX_TESTS][40] = +static const unsigned char salt_test_data[MAX_TESTS][40] = { "salt", "salt", @@ -328,13 +335,13 @@ static const unsigned char salt[MAX_TESTS][40] = "sa\0lt", }; -static const uint32_t it_cnt[MAX_TESTS] = +static const uint32_t it_cnt_test_data[MAX_TESTS] = { 1, 2, 4096, 4096, 4096 }; -static const uint32_t key_len[MAX_TESTS] = +static const uint32_t key_len_test_data[MAX_TESTS] = { 20, 20, 20, 25, 16 }; -static const unsigned char result_key[MAX_TESTS][32] = +static const unsigned char result_key_test_data[MAX_TESTS][32] = { { 0x0c, 0x60, 0xc8, 0x0f, 0x96, 0x1f, 0x0e, 0x71, 0xf3, 0xa9, 0xb5, 0x24, 0xaf, 0x60, 0x12, 0x06, @@ -380,10 +387,12 @@ int mbedtls_pkcs5_self_test( int verbose ) if( verbose != 0 ) mbedtls_printf( " PBKDF2 (SHA1) #%d: ", i ); - ret = mbedtls_pkcs5_pbkdf2_hmac( &sha1_ctx, password[i], plen[i], salt[i], - slen[i], it_cnt[i], key_len[i], key ); + ret = mbedtls_pkcs5_pbkdf2_hmac( &sha1_ctx, password_test_data[i], + plen_test_data[i], salt_test_data[i], + slen_test_data[i], it_cnt_test_data[i], + key_len_test_data[i], key ); if( ret != 0 || - memcmp( result_key[i], key, key_len[i] ) != 0 ) + memcmp( result_key_test_data[i], key, key_len_test_data[i] ) != 0 ) { if( verbose != 0 ) mbedtls_printf( "failed\n" ); diff --git a/Externals/mbedtls/library/pkparse.c b/Externals/mbedtls/library/pkparse.c index ae210bca6a2e..535ed70eb1b9 100644 --- a/Externals/mbedtls/library/pkparse.c +++ b/Externals/mbedtls/library/pkparse.c @@ -1,7 +1,7 @@ /* * Public Key layer for parsing key files and structures * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,15 +15,9 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_PK_PARSE_C) @@ -31,6 +25,7 @@ #include "mbedtls/asn1.h" #include "mbedtls/oid.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -130,7 +125,7 @@ int mbedtls_pk_load_file( const char *path, unsigned char **buf, size_t *n ) int mbedtls_pk_parse_keyfile( mbedtls_pk_context *ctx, const char *path, const char *pwd ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n; unsigned char *buf; @@ -157,7 +152,7 @@ int mbedtls_pk_parse_keyfile( mbedtls_pk_context *ctx, */ int mbedtls_pk_parse_public_keyfile( mbedtls_pk_context *ctx, const char *path ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n; unsigned char *buf; @@ -188,11 +183,11 @@ int mbedtls_pk_parse_public_keyfile( mbedtls_pk_context *ctx, const char *path ) static int pk_get_ecparams( unsigned char **p, const unsigned char *end, mbedtls_asn1_buf *params ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if ( end - *p < 1 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_OUT_OF_DATA ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_OUT_OF_DATA ) ); /* Tag may be either OID or SEQUENCE */ params->tag = **p; @@ -202,21 +197,21 @@ static int pk_get_ecparams( unsigned char **p, const unsigned char *end, #endif ) { - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ); } if( ( ret = mbedtls_asn1_get_tag( p, end, ¶ms->len, params->tag ) ) != 0 ) { - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); } params->p = *p; *p += params->len; if( *p != end ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); return( 0 ); } @@ -243,7 +238,7 @@ static int pk_get_ecparams( unsigned char **p, const unsigned char *end, */ static int pk_group_from_specified( const mbedtls_asn1_buf *params, mbedtls_ecp_group *grp ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *p = params->p; const unsigned char * const end = params->p + params->len; const unsigned char *end_field, *end_curve; @@ -252,7 +247,7 @@ static int pk_group_from_specified( const mbedtls_asn1_buf *params, mbedtls_ecp_ /* SpecifiedECDomainVersion ::= INTEGER { 1, 2, 3 } */ if( ( ret = mbedtls_asn1_get_int( &p, end, &ver ) ) != 0 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); if( ver < 1 || ver > 3 ) return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT ); @@ -290,13 +285,13 @@ static int pk_group_from_specified( const mbedtls_asn1_buf *params, mbedtls_ecp_ /* Prime-p ::= INTEGER -- Field of size p. */ if( ( ret = mbedtls_asn1_get_mpi( &p, end_field, &grp->P ) ) != 0 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); grp->pbits = mbedtls_mpi_bitlen( &grp->P ); if( p != end_field ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); /* * Curve ::= SEQUENCE { @@ -320,7 +315,7 @@ static int pk_group_from_specified( const mbedtls_asn1_buf *params, mbedtls_ecp_ if( ( ret = mbedtls_asn1_get_tag( &p, end_curve, &len, MBEDTLS_ASN1_OCTET_STRING ) ) != 0 || ( ret = mbedtls_mpi_read_binary( &grp->A, p, len ) ) != 0 ) { - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); } p += len; @@ -328,7 +323,7 @@ static int pk_group_from_specified( const mbedtls_asn1_buf *params, mbedtls_ecp_ if( ( ret = mbedtls_asn1_get_tag( &p, end_curve, &len, MBEDTLS_ASN1_OCTET_STRING ) ) != 0 || ( ret = mbedtls_mpi_read_binary( &grp->B, p, len ) ) != 0 ) { - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); } p += len; @@ -338,14 +333,14 @@ static int pk_group_from_specified( const mbedtls_asn1_buf *params, mbedtls_ecp_ p += len; if( p != end_curve ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); /* * ECPoint ::= OCTET STRING */ if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, MBEDTLS_ASN1_OCTET_STRING ) ) != 0 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); if( ( ret = mbedtls_ecp_point_read_binary( grp, &grp->G, ( const unsigned char *) p, len ) ) != 0 ) @@ -371,7 +366,7 @@ static int pk_group_from_specified( const mbedtls_asn1_buf *params, mbedtls_ecp_ * order INTEGER */ if( ( ret = mbedtls_asn1_get_mpi( &p, end, &grp->N ) ) != 0 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); grp->nbits = mbedtls_mpi_bitlen( &grp->N ); @@ -433,7 +428,7 @@ static int pk_group_id_from_group( const mbedtls_ecp_group *grp, mbedtls_ecp_gro static int pk_group_id_from_specified( const mbedtls_asn1_buf *params, mbedtls_ecp_group_id *grp_id ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecp_group grp; mbedtls_ecp_group_init( &grp ); @@ -460,7 +455,7 @@ static int pk_group_id_from_specified( const mbedtls_asn1_buf *params, */ static int pk_use_ecparams( const mbedtls_asn1_buf *params, mbedtls_ecp_group *grp ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ecp_group_id grp_id; if( params->tag == MBEDTLS_ASN1_OID ) @@ -500,7 +495,7 @@ static int pk_use_ecparams( const mbedtls_asn1_buf *params, mbedtls_ecp_group *g static int pk_get_ecpubkey( unsigned char **p, const unsigned char *end, mbedtls_ecp_keypair *key ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ( ret = mbedtls_ecp_point_read_binary( &key->grp, &key->Q, (const unsigned char *) *p, end - *p ) ) == 0 ) @@ -528,20 +523,20 @@ static int pk_get_rsapubkey( unsigned char **p, const unsigned char *end, mbedtls_rsa_context *rsa ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) - return( MBEDTLS_ERR_PK_INVALID_PUBKEY + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_INVALID_PUBKEY, ret ) ); if( *p + len != end ) - return( MBEDTLS_ERR_PK_INVALID_PUBKEY + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_INVALID_PUBKEY, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); /* Import N */ if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_INTEGER ) ) != 0 ) - return( MBEDTLS_ERR_PK_INVALID_PUBKEY + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_INVALID_PUBKEY, ret ) ); if( ( ret = mbedtls_rsa_import_raw( rsa, *p, len, NULL, 0, NULL, 0, NULL, 0, NULL, 0 ) ) != 0 ) @@ -551,7 +546,7 @@ static int pk_get_rsapubkey( unsigned char **p, /* Import E */ if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_INTEGER ) ) != 0 ) - return( MBEDTLS_ERR_PK_INVALID_PUBKEY + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_INVALID_PUBKEY, ret ) ); if( ( ret = mbedtls_rsa_import_raw( rsa, NULL, 0, NULL, 0, NULL, 0, NULL, 0, *p, len ) ) != 0 ) @@ -566,8 +561,8 @@ static int pk_get_rsapubkey( unsigned char **p, } if( *p != end ) - return( MBEDTLS_ERR_PK_INVALID_PUBKEY + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_INVALID_PUBKEY, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); return( 0 ); } @@ -583,13 +578,13 @@ static int pk_get_pk_alg( unsigned char **p, const unsigned char *end, mbedtls_pk_type_t *pk_alg, mbedtls_asn1_buf *params ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_asn1_buf alg_oid; memset( params, 0, sizeof(mbedtls_asn1_buf) ); if( ( ret = mbedtls_asn1_get_alg( p, end, &alg_oid, params ) ) != 0 ) - return( MBEDTLS_ERR_PK_INVALID_ALG + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_INVALID_ALG, ret ) ); if( mbedtls_oid_get_pk_alg( &alg_oid, pk_alg ) != 0 ) return( MBEDTLS_ERR_PK_UNKNOWN_PK_ALG ); @@ -615,7 +610,7 @@ static int pk_get_pk_alg( unsigned char **p, int mbedtls_pk_parse_subpubkey( unsigned char **p, const unsigned char *end, mbedtls_pk_context *pk ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; mbedtls_asn1_buf alg_params; mbedtls_pk_type_t pk_alg = MBEDTLS_PK_NONE; @@ -629,7 +624,7 @@ int mbedtls_pk_parse_subpubkey( unsigned char **p, const unsigned char *end, if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) { - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); } end = *p + len; @@ -638,11 +633,11 @@ int mbedtls_pk_parse_subpubkey( unsigned char **p, const unsigned char *end, return( ret ); if( ( ret = mbedtls_asn1_get_bitstring_null( p, end, &len ) ) != 0 ) - return( MBEDTLS_ERR_PK_INVALID_PUBKEY + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_INVALID_PUBKEY, ret ) ); if( *p + len != end ) - return( MBEDTLS_ERR_PK_INVALID_PUBKEY + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_INVALID_PUBKEY, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); if( ( pk_info = mbedtls_pk_info_from_type( pk_alg ) ) == NULL ) return( MBEDTLS_ERR_PK_UNKNOWN_PK_ALG ); @@ -667,8 +662,8 @@ int mbedtls_pk_parse_subpubkey( unsigned char **p, const unsigned char *end, ret = MBEDTLS_ERR_PK_UNKNOWN_PK_ALG; if( ret == 0 && *p != end ) - ret = MBEDTLS_ERR_PK_INVALID_PUBKEY - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH; + ret = MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_INVALID_PUBKEY, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); if( ret != 0 ) mbedtls_pk_free( pk ); @@ -677,6 +672,32 @@ int mbedtls_pk_parse_subpubkey( unsigned char **p, const unsigned char *end, } #if defined(MBEDTLS_RSA_C) +/* + * Wrapper around mbedtls_asn1_get_mpi() that rejects zero. + * + * The value zero is: + * - never a valid value for an RSA parameter + * - interpreted as "omitted, please reconstruct" by mbedtls_rsa_complete(). + * + * Since values can't be omitted in PKCS#1, passing a zero value to + * rsa_complete() would be incorrect, so reject zero values early. + */ +static int asn1_get_nonzero_mpi( unsigned char **p, + const unsigned char *end, + mbedtls_mpi *X ) +{ + int ret; + + ret = mbedtls_asn1_get_mpi( p, end, X ); + if( ret != 0 ) + return( ret ); + + if( mbedtls_mpi_cmp_int( X, 0 ) == 0 ) + return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT ); + + return( 0 ); +} + /* * Parse a PKCS#1 encoded private RSA key */ @@ -713,14 +734,14 @@ static int pk_parse_key_pkcs1_der( mbedtls_rsa_context *rsa, if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) { - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); } end = p + len; if( ( ret = mbedtls_asn1_get_int( &p, end, &version ) ) != 0 ) { - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); } if( version != 0 ) @@ -729,59 +750,89 @@ static int pk_parse_key_pkcs1_der( mbedtls_rsa_context *rsa, } /* Import N */ - if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, - MBEDTLS_ASN1_INTEGER ) ) != 0 || - ( ret = mbedtls_rsa_import_raw( rsa, p, len, NULL, 0, NULL, 0, - NULL, 0, NULL, 0 ) ) != 0 ) + if( ( ret = asn1_get_nonzero_mpi( &p, end, &T ) ) != 0 || + ( ret = mbedtls_rsa_import( rsa, &T, NULL, NULL, + NULL, NULL ) ) != 0 ) goto cleanup; - p += len; /* Import E */ - if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, - MBEDTLS_ASN1_INTEGER ) ) != 0 || - ( ret = mbedtls_rsa_import_raw( rsa, NULL, 0, NULL, 0, NULL, 0, - NULL, 0, p, len ) ) != 0 ) + if( ( ret = asn1_get_nonzero_mpi( &p, end, &T ) ) != 0 || + ( ret = mbedtls_rsa_import( rsa, NULL, NULL, NULL, + NULL, &T ) ) != 0 ) goto cleanup; - p += len; /* Import D */ - if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, - MBEDTLS_ASN1_INTEGER ) ) != 0 || - ( ret = mbedtls_rsa_import_raw( rsa, NULL, 0, NULL, 0, NULL, 0, - p, len, NULL, 0 ) ) != 0 ) + if( ( ret = asn1_get_nonzero_mpi( &p, end, &T ) ) != 0 || + ( ret = mbedtls_rsa_import( rsa, NULL, NULL, NULL, + &T, NULL ) ) != 0 ) goto cleanup; - p += len; /* Import P */ - if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, - MBEDTLS_ASN1_INTEGER ) ) != 0 || - ( ret = mbedtls_rsa_import_raw( rsa, NULL, 0, p, len, NULL, 0, - NULL, 0, NULL, 0 ) ) != 0 ) + if( ( ret = asn1_get_nonzero_mpi( &p, end, &T ) ) != 0 || + ( ret = mbedtls_rsa_import( rsa, NULL, &T, NULL, + NULL, NULL ) ) != 0 ) goto cleanup; - p += len; /* Import Q */ - if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, - MBEDTLS_ASN1_INTEGER ) ) != 0 || - ( ret = mbedtls_rsa_import_raw( rsa, NULL, 0, NULL, 0, p, len, - NULL, 0, NULL, 0 ) ) != 0 ) + if( ( ret = asn1_get_nonzero_mpi( &p, end, &T ) ) != 0 || + ( ret = mbedtls_rsa_import( rsa, NULL, NULL, &T, + NULL, NULL ) ) != 0 ) goto cleanup; - p += len; - /* Complete the RSA private key */ - if( ( ret = mbedtls_rsa_complete( rsa ) ) != 0 ) - goto cleanup; +#if !defined(MBEDTLS_RSA_NO_CRT) && !defined(MBEDTLS_RSA_ALT) + /* + * The RSA CRT parameters DP, DQ and QP are nominally redundant, in + * that they can be easily recomputed from D, P and Q. However by + * parsing them from the PKCS1 structure it is possible to avoid + * recalculating them which both reduces the overhead of loading + * RSA private keys into memory and also avoids side channels which + * can arise when computing those values, since all of D, P, and Q + * are secret. See https://eprint.iacr.org/2020/055 for a + * description of one such attack. + */ + + /* Import DP */ + if( ( ret = asn1_get_nonzero_mpi( &p, end, &T ) ) != 0 || + ( ret = mbedtls_mpi_copy( &rsa->DP, &T ) ) != 0 ) + goto cleanup; + + /* Import DQ */ + if( ( ret = asn1_get_nonzero_mpi( &p, end, &T ) ) != 0 || + ( ret = mbedtls_mpi_copy( &rsa->DQ, &T ) ) != 0 ) + goto cleanup; + + /* Import QP */ + if( ( ret = asn1_get_nonzero_mpi( &p, end, &T ) ) != 0 || + ( ret = mbedtls_mpi_copy( &rsa->QP, &T ) ) != 0 ) + goto cleanup; - /* Check optional parameters */ - if( ( ret = mbedtls_asn1_get_mpi( &p, end, &T ) ) != 0 || - ( ret = mbedtls_asn1_get_mpi( &p, end, &T ) ) != 0 || - ( ret = mbedtls_asn1_get_mpi( &p, end, &T ) ) != 0 ) +#else + /* Verify existance of the CRT params */ + if( ( ret = asn1_get_nonzero_mpi( &p, end, &T ) ) != 0 || + ( ret = asn1_get_nonzero_mpi( &p, end, &T ) ) != 0 || + ( ret = asn1_get_nonzero_mpi( &p, end, &T ) ) != 0 ) + goto cleanup; +#endif + + /* rsa_complete() doesn't complete anything with the default + * implementation but is still called: + * - for the benefit of alternative implementation that may want to + * pre-compute stuff beyond what's provided (eg Montgomery factors) + * - as is also sanity-checks the key + * + * Furthermore, we also check the public part for consistency with + * mbedtls_pk_parse_pubkey(), as it includes size minima for example. + */ + if( ( ret = mbedtls_rsa_complete( rsa ) ) != 0 || + ( ret = mbedtls_rsa_check_pubkey( rsa ) ) != 0 ) + { goto cleanup; + } if( p != end ) { - ret = MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ; + ret = MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); } cleanup: @@ -792,7 +843,7 @@ static int pk_parse_key_pkcs1_der( mbedtls_rsa_context *rsa, { /* Wrap error code if it's coming from a lower level */ if( ( ret & 0xff80 ) == 0 ) - ret = MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret; + ret = MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ); else ret = MBEDTLS_ERR_PK_KEY_INVALID_FORMAT; @@ -811,7 +862,7 @@ static int pk_parse_key_sec1_der( mbedtls_ecp_keypair *eck, const unsigned char *key, size_t keylen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; int version, pubkey_done; size_t len; mbedtls_asn1_buf params; @@ -832,24 +883,24 @@ static int pk_parse_key_sec1_der( mbedtls_ecp_keypair *eck, if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) { - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); } end = p + len; if( ( ret = mbedtls_asn1_get_int( &p, end, &version ) ) != 0 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); if( version != 1 ) return( MBEDTLS_ERR_PK_KEY_INVALID_VERSION ); if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, MBEDTLS_ASN1_OCTET_STRING ) ) != 0 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); if( ( ret = mbedtls_mpi_read_binary( &eck->d, p, len ) ) != 0 ) { mbedtls_ecp_keypair_free( eck ); - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); } p += len; @@ -873,7 +924,7 @@ static int pk_parse_key_sec1_der( mbedtls_ecp_keypair *eck, else if( ret != MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) { mbedtls_ecp_keypair_free( eck ); - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); } } @@ -889,11 +940,11 @@ static int pk_parse_key_sec1_der( mbedtls_ecp_keypair *eck, end2 = p + len; if( ( ret = mbedtls_asn1_get_bitstring_null( &p, end2, &len ) ) != 0 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); if( p + len != end2 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); if( ( ret = pk_get_ecpubkey( &p, end2, eck ) ) == 0 ) pubkey_done = 1; @@ -910,7 +961,7 @@ static int pk_parse_key_sec1_der( mbedtls_ecp_keypair *eck, else if( ret != MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) { mbedtls_ecp_keypair_free( eck ); - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); } } @@ -919,7 +970,7 @@ static int pk_parse_key_sec1_der( mbedtls_ecp_keypair *eck, NULL, NULL ) ) != 0 ) { mbedtls_ecp_keypair_free( eck ); - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); } if( ( ret = mbedtls_ecp_check_privkey( &eck->grp, &eck->d ) ) != 0 ) @@ -977,26 +1028,28 @@ static int pk_parse_key_pkcs8_unencrypted_der( if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) { - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); } end = p + len; if( ( ret = mbedtls_asn1_get_int( &p, end, &version ) ) != 0 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); if( version != 0 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_VERSION + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_VERSION, ret ) ); if( ( ret = pk_get_pk_alg( &p, end, &pk_alg, ¶ms ) ) != 0 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + { + return( ret ); + } if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, MBEDTLS_ASN1_OCTET_STRING ) ) != 0 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); if( len < 1 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_OUT_OF_DATA ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_OUT_OF_DATA ) ); if( ( pk_info = mbedtls_pk_info_from_type( pk_alg ) ) == NULL ) return( MBEDTLS_ERR_PK_UNKNOWN_PK_ALG ); @@ -1079,16 +1132,16 @@ static int pk_parse_key_pkcs8_encrypted_der( if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) { - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); } end = p + len; if( ( ret = mbedtls_asn1_get_alg( &p, end, &pbe_alg_oid, &pbe_params ) ) != 0 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, MBEDTLS_ASN1_OCTET_STRING ) ) != 0 ) - return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT, ret ) ); buf = p; @@ -1164,7 +1217,7 @@ int mbedtls_pk_parse_key( mbedtls_pk_context *pk, const unsigned char *key, size_t keylen, const unsigned char *pwd, size_t pwdlen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const mbedtls_pk_info_t *pk_info; #if defined(MBEDTLS_PEM_PARSE_C) size_t len; @@ -1327,8 +1380,11 @@ int mbedtls_pk_parse_key( mbedtls_pk_context *pk, } #endif /* MBEDTLS_PKCS12_C || MBEDTLS_PKCS5_C */ - if( ( ret = pk_parse_key_pkcs8_unencrypted_der( pk, key, keylen ) ) == 0 ) + ret = pk_parse_key_pkcs8_unencrypted_der( pk, key, keylen ); + if( ret == 0 ) + { return( 0 ); + } mbedtls_pk_free( pk ); mbedtls_pk_init( pk ); @@ -1376,7 +1432,7 @@ int mbedtls_pk_parse_key( mbedtls_pk_context *pk, int mbedtls_pk_parse_public_key( mbedtls_pk_context *ctx, const unsigned char *key, size_t keylen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *p; #if defined(MBEDTLS_RSA_C) const mbedtls_pk_info_t *pk_info; @@ -1467,7 +1523,8 @@ int mbedtls_pk_parse_public_key( mbedtls_pk_context *ctx, return( ret ); } mbedtls_pk_free( ctx ); - if( ret != ( MBEDTLS_ERR_PK_INVALID_PUBKEY + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ) + if( ret != ( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_PK_INVALID_PUBKEY, + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ) ) { return( ret ); } diff --git a/Externals/mbedtls/library/pkwrite.c b/Externals/mbedtls/library/pkwrite.c index 8d1da2f757fa..566153dd9334 100644 --- a/Externals/mbedtls/library/pkwrite.c +++ b/Externals/mbedtls/library/pkwrite.c @@ -1,7 +1,7 @@ /* * Public Key layer for writing key files and structures * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,15 +15,9 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_PK_WRITE_C) @@ -31,6 +25,7 @@ #include "mbedtls/asn1write.h" #include "mbedtls/oid.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -38,7 +33,9 @@ #include "mbedtls/rsa.h" #endif #if defined(MBEDTLS_ECP_C) +#include "mbedtls/bignum.h" #include "mbedtls/ecp.h" +#include "mbedtls/platform_util.h" #endif #if defined(MBEDTLS_ECDSA_C) #include "mbedtls/ecdsa.h" @@ -47,6 +44,10 @@ #include "mbedtls/pem.h" #endif +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "psa/crypto.h" +#include "mbedtls/psa_util.h" +#endif #if defined(MBEDTLS_PLATFORM_C) #include "mbedtls/platform.h" #else @@ -71,7 +72,7 @@ static int pk_write_rsa_pubkey( unsigned char **p, unsigned char *start, mbedtls_rsa_context *rsa ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; mbedtls_mpi T; @@ -110,7 +111,7 @@ static int pk_write_rsa_pubkey( unsigned char **p, unsigned char *start, static int pk_write_ec_pubkey( unsigned char **p, unsigned char *start, mbedtls_ecp_keypair *ec ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; unsigned char buf[MBEDTLS_ECP_MAX_PT_LEN]; @@ -138,7 +139,7 @@ static int pk_write_ec_pubkey( unsigned char **p, unsigned char *start, static int pk_write_ec_param( unsigned char **p, unsigned char *start, mbedtls_ecp_keypair *ec ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; const char *oid; size_t oid_len; @@ -150,12 +151,32 @@ static int pk_write_ec_param( unsigned char **p, unsigned char *start, return( (int) len ); } + +/* + * privateKey OCTET STRING -- always of length ceil(log2(n)/8) + */ +static int pk_write_ec_private( unsigned char **p, unsigned char *start, + mbedtls_ecp_keypair *ec ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t byte_length = ( ec->grp.pbits + 7 ) / 8; + unsigned char tmp[MBEDTLS_ECP_MAX_BYTES]; + + ret = mbedtls_ecp_write_key( ec, tmp, byte_length ); + if( ret != 0 ) + goto exit; + ret = mbedtls_asn1_write_octet_string( p, start, tmp, byte_length ); + +exit: + mbedtls_platform_zeroize( tmp, byte_length ); + return( ret ); +} #endif /* MBEDTLS_ECP_C */ int mbedtls_pk_write_pubkey( unsigned char **p, unsigned char *start, const mbedtls_pk_context *key ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; PK_VALIDATE_RET( p != NULL ); @@ -173,6 +194,29 @@ int mbedtls_pk_write_pubkey( unsigned char **p, unsigned char *start, MBEDTLS_ASN1_CHK_ADD( len, pk_write_ec_pubkey( p, start, mbedtls_pk_ec( *key ) ) ); else #endif +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( mbedtls_pk_get_type( key ) == MBEDTLS_PK_OPAQUE ) + { + size_t buffer_size; + psa_key_id_t* key_id = (psa_key_id_t*) key->pk_ctx; + + if ( *p < start ) + return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); + + buffer_size = (size_t)( *p - start ); + if ( psa_export_public_key( *key_id, start, buffer_size, &len ) + != PSA_SUCCESS ) + { + return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); + } + else + { + *p -= len; + memmove( *p, start, len ); + } + } + else +#endif /* MBEDTLS_USE_PSA_CRYPTO */ return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); return( (int) len ); @@ -180,9 +224,10 @@ int mbedtls_pk_write_pubkey( unsigned char **p, unsigned char *start, int mbedtls_pk_write_pubkey_der( mbedtls_pk_context *key, unsigned char *buf, size_t size ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *c; size_t len = 0, par_len = 0, oid_len; + mbedtls_pk_type_t pk_type; const char *oid; PK_VALIDATE_RET( key != NULL ); @@ -208,18 +253,52 @@ int mbedtls_pk_write_pubkey_der( mbedtls_pk_context *key, unsigned char *buf, si MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, buf, len ) ); MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, buf, MBEDTLS_ASN1_BIT_STRING ) ); - if( ( ret = mbedtls_oid_get_oid_by_pk_alg( mbedtls_pk_get_type( key ), - &oid, &oid_len ) ) != 0 ) - { - return( ret ); - } - + pk_type = mbedtls_pk_get_type( key ); #if defined(MBEDTLS_ECP_C) - if( mbedtls_pk_get_type( key ) == MBEDTLS_PK_ECKEY ) + if( pk_type == MBEDTLS_PK_ECKEY ) { MBEDTLS_ASN1_CHK_ADD( par_len, pk_write_ec_param( &c, buf, mbedtls_pk_ec( *key ) ) ); } #endif +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( pk_type == MBEDTLS_PK_OPAQUE ) + { + psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + psa_key_type_t key_type; + psa_key_id_t key_id; + psa_ecc_family_t curve; + size_t bits; + + key_id = *((psa_key_id_t*) key->pk_ctx ); + if( PSA_SUCCESS != psa_get_key_attributes( key_id, &attributes ) ) + return( MBEDTLS_ERR_PK_HW_ACCEL_FAILED ); + key_type = psa_get_key_type( &attributes ); + bits = psa_get_key_bits( &attributes ); + psa_reset_key_attributes( &attributes ); + + curve = PSA_KEY_TYPE_ECC_GET_FAMILY( key_type ); + if( curve == 0 ) + return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); + + ret = mbedtls_psa_get_ecc_oid_from_id( curve, bits, &oid, &oid_len ); + if( ret != 0 ) + return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); + + /* Write EC algorithm parameters; that's akin + * to pk_write_ec_param() above. */ + MBEDTLS_ASN1_CHK_ADD( par_len, mbedtls_asn1_write_oid( &c, buf, + oid, oid_len ) ); + + /* The rest of the function works as for legacy EC contexts. */ + pk_type = MBEDTLS_PK_ECKEY; + } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + + if( ( ret = mbedtls_oid_get_oid_by_pk_alg( pk_type, &oid, + &oid_len ) ) != 0 ) + { + return( ret ); + } MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_algorithm_identifier( &c, buf, oid, oid_len, par_len ) ); @@ -233,7 +312,7 @@ int mbedtls_pk_write_pubkey_der( mbedtls_pk_context *key, unsigned char *buf, si int mbedtls_pk_write_key_der( mbedtls_pk_context *key, unsigned char *buf, size_t size ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *c; size_t len = 0; @@ -364,9 +443,8 @@ int mbedtls_pk_write_key_der( mbedtls_pk_context *key, unsigned char *buf, size_ MBEDTLS_ASN1_CONTEXT_SPECIFIC | MBEDTLS_ASN1_CONSTRUCTED | 0 ) ); len += par_len; - /* privateKey: write as MPI then fix tag */ - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_mpi( &c, buf, &ec->d ) ); - *c = MBEDTLS_ASN1_OCTET_STRING; + /* privateKey */ + MBEDTLS_ASN1_CHK_ADD( len, pk_write_ec_private( &c, buf, ec ) ); /* version */ MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_int( &c, buf, 1 ) ); @@ -409,7 +487,7 @@ int mbedtls_pk_write_key_der( mbedtls_pk_context *key, unsigned char *buf, size_ * publicExponent INTEGER -- e 1 + 3 + MPI_MAX + 1 * } */ -#define RSA_PUB_DER_MAX_BYTES 38 + 2 * MBEDTLS_MPI_MAX_SIZE +#define RSA_PUB_DER_MAX_BYTES ( 38 + 2 * MBEDTLS_MPI_MAX_SIZE ) /* * RSA private keys: @@ -426,10 +504,10 @@ int mbedtls_pk_write_key_der( mbedtls_pk_context *key, unsigned char *buf, size_ * otherPrimeInfos OtherPrimeInfos OPTIONAL 0 (not supported) * } */ -#define MPI_MAX_SIZE_2 MBEDTLS_MPI_MAX_SIZE / 2 + \ - MBEDTLS_MPI_MAX_SIZE % 2 -#define RSA_PRV_DER_MAX_BYTES 47 + 3 * MBEDTLS_MPI_MAX_SIZE \ - + 5 * MPI_MAX_SIZE_2 +#define MPI_MAX_SIZE_2 ( MBEDTLS_MPI_MAX_SIZE / 2 + \ + MBEDTLS_MPI_MAX_SIZE % 2 ) +#define RSA_PRV_DER_MAX_BYTES ( 47 + 3 * MBEDTLS_MPI_MAX_SIZE \ + + 5 * MPI_MAX_SIZE_2 ) #else /* MBEDTLS_RSA_C */ @@ -450,7 +528,7 @@ int mbedtls_pk_write_key_der( mbedtls_pk_context *key, unsigned char *buf, size_ * + 2 * ECP_MAX (coords) [1] * } */ -#define ECP_PUB_DER_MAX_BYTES 30 + 2 * MBEDTLS_ECP_MAX_BYTES +#define ECP_PUB_DER_MAX_BYTES ( 30 + 2 * MBEDTLS_ECP_MAX_BYTES ) /* * EC private keys: @@ -461,7 +539,7 @@ int mbedtls_pk_write_key_der( mbedtls_pk_context *key, unsigned char *buf, size_ * publicKey [1] BIT STRING OPTIONAL 1 + 2 + [1] above * } */ -#define ECP_PRV_DER_MAX_BYTES 29 + 3 * MBEDTLS_ECP_MAX_BYTES +#define ECP_PRV_DER_MAX_BYTES ( 29 + 3 * MBEDTLS_ECP_MAX_BYTES ) #else /* MBEDTLS_ECP_C */ @@ -470,14 +548,14 @@ int mbedtls_pk_write_key_der( mbedtls_pk_context *key, unsigned char *buf, size_ #endif /* MBEDTLS_ECP_C */ -#define PUB_DER_MAX_BYTES RSA_PUB_DER_MAX_BYTES > ECP_PUB_DER_MAX_BYTES ? \ - RSA_PUB_DER_MAX_BYTES : ECP_PUB_DER_MAX_BYTES -#define PRV_DER_MAX_BYTES RSA_PRV_DER_MAX_BYTES > ECP_PRV_DER_MAX_BYTES ? \ - RSA_PRV_DER_MAX_BYTES : ECP_PRV_DER_MAX_BYTES +#define PUB_DER_MAX_BYTES ( RSA_PUB_DER_MAX_BYTES > ECP_PUB_DER_MAX_BYTES ? \ + RSA_PUB_DER_MAX_BYTES : ECP_PUB_DER_MAX_BYTES ) +#define PRV_DER_MAX_BYTES ( RSA_PRV_DER_MAX_BYTES > ECP_PRV_DER_MAX_BYTES ? \ + RSA_PRV_DER_MAX_BYTES : ECP_PRV_DER_MAX_BYTES ) int mbedtls_pk_write_pubkey_pem( mbedtls_pk_context *key, unsigned char *buf, size_t size ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char output_buf[PUB_DER_MAX_BYTES]; size_t olen = 0; @@ -502,7 +580,7 @@ int mbedtls_pk_write_pubkey_pem( mbedtls_pk_context *key, unsigned char *buf, si int mbedtls_pk_write_key_pem( mbedtls_pk_context *key, unsigned char *buf, size_t size ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char output_buf[PRV_DER_MAX_BYTES]; const char *begin, *end; size_t olen = 0; diff --git a/Externals/mbedtls/library/platform.c b/Externals/mbedtls/library/platform.c index 73a6db9ebe2a..e742fde7ccc5 100644 --- a/Externals/mbedtls/library/platform.c +++ b/Externals/mbedtls/library/platform.c @@ -1,7 +1,7 @@ /* * Platform abstraction layer * - * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,20 +15,15 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_PLATFORM_C) #include "mbedtls/platform.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" /* The compile time configuration of memory allocation via the macros * MBEDTLS_PLATFORM_{FREE/CALLOC}_MACRO takes precedence over the runtime @@ -82,28 +77,15 @@ int mbedtls_platform_set_calloc_free( void * (*calloc_func)( size_t, size_t ), !( defined(MBEDTLS_PLATFORM_CALLOC_MACRO) && defined(MBEDTLS_PLATFORM_FREE_MACRO) ) */ -#if defined(_WIN32) +#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF) #include int mbedtls_platform_win32_snprintf( char *s, size_t n, const char *fmt, ... ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; va_list argp; - /* Avoid calling the invalid parameter handler by checking ourselves */ - if( s == NULL || n == 0 || fmt == NULL ) - return( -1 ); - va_start( argp, fmt ); -#if defined(_TRUNCATE) && !defined(__MINGW32__) - ret = _vsnprintf_s( s, n, _TRUNCATE, fmt, argp ); -#else - ret = _vsnprintf( s, n, fmt, argp ); - if( ret < 0 || (size_t) ret == n ) - { - s[n-1] = '\0'; - ret = -1; - } -#endif + ret = mbedtls_vsnprintf( s, n, fmt, argp ); va_end( argp ); return( ret ); @@ -140,6 +122,62 @@ int mbedtls_platform_set_snprintf( int (*snprintf_func)( char * s, size_t n, } #endif /* MBEDTLS_PLATFORM_SNPRINTF_ALT */ +#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF) +#include +int mbedtls_platform_win32_vsnprintf( char *s, size_t n, const char *fmt, va_list arg ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + /* Avoid calling the invalid parameter handler by checking ourselves */ + if( s == NULL || n == 0 || fmt == NULL ) + return( -1 ); + +#if defined(_TRUNCATE) + ret = vsnprintf_s( s, n, _TRUNCATE, fmt, arg ); +#else + ret = vsnprintf( s, n, fmt, arg ); + if( ret < 0 || (size_t) ret == n ) + { + s[n-1] = '\0'; + ret = -1; + } +#endif + + return( ret ); +} +#endif + +#if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT) +#if !defined(MBEDTLS_PLATFORM_STD_VSNPRINTF) +/* + * Make dummy function to prevent NULL pointer dereferences + */ +static int platform_vsnprintf_uninit( char * s, size_t n, + const char * format, va_list arg ) +{ + ((void) s); + ((void) n); + ((void) format); + ((void) arg); + return( -1 ); +} + +#define MBEDTLS_PLATFORM_STD_VSNPRINTF platform_vsnprintf_uninit +#endif /* !MBEDTLS_PLATFORM_STD_VSNPRINTF */ + +int (*mbedtls_vsnprintf)( char * s, size_t n, + const char * format, + va_list arg ) = MBEDTLS_PLATFORM_STD_VSNPRINTF; + +int mbedtls_platform_set_vsnprintf( int (*vsnprintf_func)( char * s, size_t n, + const char * format, + va_list arg ) ) +{ + mbedtls_vsnprintf = vsnprintf_func; + return( 0 ); +} +#endif /* MBEDTLS_PLATFORM_VSNPRINTF_ALT */ + #if defined(MBEDTLS_PLATFORM_PRINTF_ALT) #if !defined(MBEDTLS_PLATFORM_STD_PRINTF) /* diff --git a/Externals/mbedtls/library/platform_util.c b/Externals/mbedtls/library/platform_util.c index 756e22679af4..98fe5deb2de0 100644 --- a/Externals/mbedtls/library/platform_util.c +++ b/Externals/mbedtls/library/platform_util.c @@ -2,7 +2,7 @@ * Common and shared functions used by multiple modules in the Mbed TLS * library. * - * Copyright (C) 2018, Arm Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -16,8 +16,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of Mbed TLS (https://tls.mbed.org) */ /* @@ -28,11 +26,7 @@ #define _POSIX_C_SOURCE 200112L #endif -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #include "mbedtls/platform_util.h" #include "mbedtls/platform.h" @@ -72,7 +66,10 @@ static void * (* const volatile memset_func)( void *, int, size_t ) = memset; void mbedtls_platform_zeroize( void *buf, size_t len ) { - memset_func( buf, 0, len ); + MBEDTLS_INTERNAL_VALIDATE( len == 0 || buf != NULL ); + + if( len > 0 ) + memset_func( buf, 0, len ); } #endif /* MBEDTLS_PLATFORM_ZEROIZE_ALT */ @@ -87,7 +84,7 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) #if !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ - _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) + _POSIX_THREAD_SAFE_FUNCTIONS >= 200112L ) ) /* * This is a convenience shorthand macro to avoid checking the long * preprocessor conditions above. Ideally, we could expose this macro in @@ -101,7 +98,7 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) #endif /* !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ - _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) */ + _POSIX_THREAD_SAFE_FUNCTIONS >= 200112L ) ) */ struct tm *mbedtls_platform_gmtime_r( const mbedtls_time_t *tt, struct tm *tm_buf ) diff --git a/Externals/mbedtls/library/poly1305.c b/Externals/mbedtls/library/poly1305.c index b27411918110..7375a0c5728f 100644 --- a/Externals/mbedtls/library/poly1305.c +++ b/Externals/mbedtls/library/poly1305.c @@ -3,7 +3,7 @@ * * \brief Poly1305 authentication algorithm. * - * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -17,19 +17,14 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_POLY1305_C) #include "mbedtls/poly1305.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -57,13 +52,6 @@ #define POLY1305_BLOCK_SIZE_BYTES ( 16U ) -#define BYTES_TO_U32_LE( data, offset ) \ - ( (uint32_t) data[offset] \ - | (uint32_t) ( (uint32_t) data[( offset ) + 1] << 8 ) \ - | (uint32_t) ( (uint32_t) data[( offset ) + 2] << 16 ) \ - | (uint32_t) ( (uint32_t) data[( offset ) + 3] << 24 ) \ - ) - /* * Our implementation is tuned for 32-bit platforms with a 64-bit multiplier. * However we provided an alternative for platforms without such a multiplier. @@ -134,10 +122,10 @@ static void poly1305_process( mbedtls_poly1305_context *ctx, for( i = 0U; i < nblocks; i++ ) { /* The input block is treated as a 128-bit little-endian integer */ - d0 = BYTES_TO_U32_LE( input, offset + 0 ); - d1 = BYTES_TO_U32_LE( input, offset + 4 ); - d2 = BYTES_TO_U32_LE( input, offset + 8 ); - d3 = BYTES_TO_U32_LE( input, offset + 12 ); + d0 = MBEDTLS_GET_UINT32_LE( input, offset + 0 ); + d1 = MBEDTLS_GET_UINT32_LE( input, offset + 4 ); + d2 = MBEDTLS_GET_UINT32_LE( input, offset + 8 ); + d3 = MBEDTLS_GET_UINT32_LE( input, offset + 12 ); /* Compute: acc += (padded) block as a 130-bit integer */ d0 += (uint64_t) acc0; @@ -262,22 +250,10 @@ static void poly1305_compute_mac( const mbedtls_poly1305_context *ctx, acc3 += ctx->s[3] + (uint32_t) ( d >> 32U ); /* Compute MAC (128 least significant bits of the accumulator) */ - mac[ 0] = (unsigned char)( acc0 ); - mac[ 1] = (unsigned char)( acc0 >> 8 ); - mac[ 2] = (unsigned char)( acc0 >> 16 ); - mac[ 3] = (unsigned char)( acc0 >> 24 ); - mac[ 4] = (unsigned char)( acc1 ); - mac[ 5] = (unsigned char)( acc1 >> 8 ); - mac[ 6] = (unsigned char)( acc1 >> 16 ); - mac[ 7] = (unsigned char)( acc1 >> 24 ); - mac[ 8] = (unsigned char)( acc2 ); - mac[ 9] = (unsigned char)( acc2 >> 8 ); - mac[10] = (unsigned char)( acc2 >> 16 ); - mac[11] = (unsigned char)( acc2 >> 24 ); - mac[12] = (unsigned char)( acc3 ); - mac[13] = (unsigned char)( acc3 >> 8 ); - mac[14] = (unsigned char)( acc3 >> 16 ); - mac[15] = (unsigned char)( acc3 >> 24 ); + MBEDTLS_PUT_UINT32_LE( acc0, mac, 0 ); + MBEDTLS_PUT_UINT32_LE( acc1, mac, 4 ); + MBEDTLS_PUT_UINT32_LE( acc2, mac, 8 ); + MBEDTLS_PUT_UINT32_LE( acc3, mac, 12 ); } void mbedtls_poly1305_init( mbedtls_poly1305_context *ctx ) @@ -302,15 +278,15 @@ int mbedtls_poly1305_starts( mbedtls_poly1305_context *ctx, POLY1305_VALIDATE_RET( key != NULL ); /* r &= 0x0ffffffc0ffffffc0ffffffc0fffffff */ - ctx->r[0] = BYTES_TO_U32_LE( key, 0 ) & 0x0FFFFFFFU; - ctx->r[1] = BYTES_TO_U32_LE( key, 4 ) & 0x0FFFFFFCU; - ctx->r[2] = BYTES_TO_U32_LE( key, 8 ) & 0x0FFFFFFCU; - ctx->r[3] = BYTES_TO_U32_LE( key, 12 ) & 0x0FFFFFFCU; + ctx->r[0] = MBEDTLS_GET_UINT32_LE( key, 0 ) & 0x0FFFFFFFU; + ctx->r[1] = MBEDTLS_GET_UINT32_LE( key, 4 ) & 0x0FFFFFFCU; + ctx->r[2] = MBEDTLS_GET_UINT32_LE( key, 8 ) & 0x0FFFFFFCU; + ctx->r[3] = MBEDTLS_GET_UINT32_LE( key, 12 ) & 0x0FFFFFFCU; - ctx->s[0] = BYTES_TO_U32_LE( key, 16 ); - ctx->s[1] = BYTES_TO_U32_LE( key, 20 ); - ctx->s[2] = BYTES_TO_U32_LE( key, 24 ); - ctx->s[3] = BYTES_TO_U32_LE( key, 28 ); + ctx->s[0] = MBEDTLS_GET_UINT32_LE( key, 16 ); + ctx->s[1] = MBEDTLS_GET_UINT32_LE( key, 20 ); + ctx->s[2] = MBEDTLS_GET_UINT32_LE( key, 24 ); + ctx->s[3] = MBEDTLS_GET_UINT32_LE( key, 28 ); /* Initial accumulator state */ ctx->acc[0] = 0U; @@ -423,7 +399,7 @@ int mbedtls_poly1305_mac( const unsigned char key[32], unsigned char mac[16] ) { mbedtls_poly1305_context ctx; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; POLY1305_VALIDATE_RET( key != NULL ); POLY1305_VALIDATE_RET( mac != NULL ); POLY1305_VALIDATE_RET( ilen == 0 || input != NULL ); @@ -512,6 +488,9 @@ static const unsigned char test_mac[2][16] = } }; +/* Make sure no other definition is already present. */ +#undef ASSERT + #define ASSERT( cond, args ) \ do \ { \ @@ -529,7 +508,7 @@ int mbedtls_poly1305_self_test( int verbose ) { unsigned char mac[16]; unsigned i; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; for( i = 0U; i < 2U; i++ ) { diff --git a/Externals/mbedtls/library/psa_crypto.c b/Externals/mbedtls/library/psa_crypto.c new file mode 100644 index 000000000000..e6dab33c7733 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto.c @@ -0,0 +1,5441 @@ +/* + * PSA crypto layer on top of Mbed TLS crypto + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common.h" + +#if defined(MBEDTLS_PSA_CRYPTO_C) + +#if defined(MBEDTLS_PSA_CRYPTO_CONFIG) +#include "check_crypto_config.h" +#endif + +#include "psa/crypto.h" + +#include "psa_crypto_cipher.h" +#include "psa_crypto_core.h" +#include "psa_crypto_invasive.h" +#include "psa_crypto_driver_wrappers.h" +#include "psa_crypto_ecp.h" +#include "psa_crypto_hash.h" +#include "psa_crypto_mac.h" +#include "psa_crypto_rsa.h" +#include "psa_crypto_ecp.h" +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) +#include "psa_crypto_se.h" +#endif +#include "psa_crypto_slot_management.h" +/* Include internal declarations that are useful for implementing persistently + * stored keys. */ +#include "psa_crypto_storage.h" + +#include "psa_crypto_random_impl.h" + +#include +#include +#include +#include "mbedtls/platform.h" +#if !defined(MBEDTLS_PLATFORM_C) +#define mbedtls_calloc calloc +#define mbedtls_free free +#endif + +#include "mbedtls/aes.h" +#include "mbedtls/arc4.h" +#include "mbedtls/asn1.h" +#include "mbedtls/asn1write.h" +#include "mbedtls/bignum.h" +#include "mbedtls/blowfish.h" +#include "mbedtls/camellia.h" +#include "mbedtls/chacha20.h" +#include "mbedtls/chachapoly.h" +#include "mbedtls/cipher.h" +#include "mbedtls/ccm.h" +#include "mbedtls/cmac.h" +#include "mbedtls/des.h" +#include "mbedtls/ecdh.h" +#include "mbedtls/ecp.h" +#include "mbedtls/entropy.h" +#include "mbedtls/error.h" +#include "mbedtls/gcm.h" +#include "mbedtls/md2.h" +#include "mbedtls/md4.h" +#include "mbedtls/md5.h" +#include "mbedtls/md.h" +#include "mbedtls/md_internal.h" +#include "mbedtls/pk.h" +#include "mbedtls/pk_internal.h" +#include "mbedtls/platform_util.h" +#include "mbedtls/error.h" +#include "mbedtls/ripemd160.h" +#include "mbedtls/rsa.h" +#include "mbedtls/sha1.h" +#include "mbedtls/sha256.h" +#include "mbedtls/sha512.h" +#include "mbedtls/xtea.h" + +#define ARRAY_LENGTH( array ) ( sizeof( array ) / sizeof( *( array ) ) ) + +/****************************************************************/ +/* Global data, support functions and library management */ +/****************************************************************/ + +static int key_type_is_raw_bytes( psa_key_type_t type ) +{ + return( PSA_KEY_TYPE_IS_UNSTRUCTURED( type ) ); +} + +/* Values for psa_global_data_t::rng_state */ +#define RNG_NOT_INITIALIZED 0 +#define RNG_INITIALIZED 1 +#define RNG_SEEDED 2 + +typedef struct +{ + unsigned initialized : 1; + unsigned rng_state : 2; + mbedtls_psa_random_context_t rng; +} psa_global_data_t; + +static psa_global_data_t global_data; + +#if !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) +mbedtls_psa_drbg_context_t *const mbedtls_psa_random_state = + &global_data.rng.drbg; +#endif + +#define GUARD_MODULE_INITIALIZED \ + if( global_data.initialized == 0 ) \ + return( PSA_ERROR_BAD_STATE ); + +psa_status_t mbedtls_to_psa_error( int ret ) +{ + /* Mbed TLS error codes can combine a high-level error code and a + * low-level error code. The low-level error usually reflects the + * root cause better, so dispatch on that preferably. */ + int low_level_ret = - ( -ret & 0x007f ); + switch( low_level_ret != 0 ? low_level_ret : ret ) + { + case 0: + return( PSA_SUCCESS ); + + case MBEDTLS_ERR_AES_INVALID_KEY_LENGTH: + case MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH: + case MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE: + return( PSA_ERROR_NOT_SUPPORTED ); + case MBEDTLS_ERR_AES_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + + case MBEDTLS_ERR_ARC4_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + + case MBEDTLS_ERR_ASN1_OUT_OF_DATA: + case MBEDTLS_ERR_ASN1_UNEXPECTED_TAG: + case MBEDTLS_ERR_ASN1_INVALID_LENGTH: + case MBEDTLS_ERR_ASN1_LENGTH_MISMATCH: + case MBEDTLS_ERR_ASN1_INVALID_DATA: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_ASN1_ALLOC_FAILED: + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + case MBEDTLS_ERR_ASN1_BUF_TOO_SMALL: + return( PSA_ERROR_BUFFER_TOO_SMALL ); + +#if defined(MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA) + case MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA: +#elif defined(MBEDTLS_ERR_BLOWFISH_INVALID_KEY_LENGTH) + case MBEDTLS_ERR_BLOWFISH_INVALID_KEY_LENGTH: +#endif + case MBEDTLS_ERR_BLOWFISH_INVALID_INPUT_LENGTH: + return( PSA_ERROR_NOT_SUPPORTED ); + case MBEDTLS_ERR_BLOWFISH_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + +#if defined(MBEDTLS_ERR_CAMELLIA_BAD_INPUT_DATA) + case MBEDTLS_ERR_CAMELLIA_BAD_INPUT_DATA: +#elif defined(MBEDTLS_ERR_CAMELLIA_INVALID_KEY_LENGTH) + case MBEDTLS_ERR_CAMELLIA_INVALID_KEY_LENGTH: +#endif + case MBEDTLS_ERR_CAMELLIA_INVALID_INPUT_LENGTH: + return( PSA_ERROR_NOT_SUPPORTED ); + case MBEDTLS_ERR_CAMELLIA_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + + case MBEDTLS_ERR_CCM_BAD_INPUT: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_CCM_AUTH_FAILED: + return( PSA_ERROR_INVALID_SIGNATURE ); + case MBEDTLS_ERR_CCM_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + + case MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA: + return( PSA_ERROR_INVALID_ARGUMENT ); + + case MBEDTLS_ERR_CHACHAPOLY_BAD_STATE: + return( PSA_ERROR_BAD_STATE ); + case MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED: + return( PSA_ERROR_INVALID_SIGNATURE ); + + case MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE: + return( PSA_ERROR_NOT_SUPPORTED ); + case MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_CIPHER_ALLOC_FAILED: + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + case MBEDTLS_ERR_CIPHER_INVALID_PADDING: + return( PSA_ERROR_INVALID_PADDING ); + case MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_CIPHER_AUTH_FAILED: + return( PSA_ERROR_INVALID_SIGNATURE ); + case MBEDTLS_ERR_CIPHER_INVALID_CONTEXT: + return( PSA_ERROR_CORRUPTION_DETECTED ); + case MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + + case MBEDTLS_ERR_CMAC_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + +#if !( defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) || \ + defined(MBEDTLS_PSA_HMAC_DRBG_MD_TYPE) ) + /* Only check CTR_DRBG error codes if underlying mbedtls_xxx + * functions are passed a CTR_DRBG instance. */ + case MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED: + return( PSA_ERROR_INSUFFICIENT_ENTROPY ); + case MBEDTLS_ERR_CTR_DRBG_REQUEST_TOO_BIG: + case MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG: + return( PSA_ERROR_NOT_SUPPORTED ); + case MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR: + return( PSA_ERROR_INSUFFICIENT_ENTROPY ); +#endif + + case MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH: + return( PSA_ERROR_NOT_SUPPORTED ); + case MBEDTLS_ERR_DES_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + + case MBEDTLS_ERR_ENTROPY_NO_SOURCES_DEFINED: + case MBEDTLS_ERR_ENTROPY_NO_STRONG_SOURCE: + case MBEDTLS_ERR_ENTROPY_SOURCE_FAILED: + return( PSA_ERROR_INSUFFICIENT_ENTROPY ); + + case MBEDTLS_ERR_GCM_AUTH_FAILED: + return( PSA_ERROR_INVALID_SIGNATURE ); + case MBEDTLS_ERR_GCM_BAD_INPUT: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_GCM_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + +#if !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) && \ + defined(MBEDTLS_PSA_HMAC_DRBG_MD_TYPE) + /* Only check HMAC_DRBG error codes if underlying mbedtls_xxx + * functions are passed a HMAC_DRBG instance. */ + case MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED: + return( PSA_ERROR_INSUFFICIENT_ENTROPY ); + case MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG: + case MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG: + return( PSA_ERROR_NOT_SUPPORTED ); + case MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR: + return( PSA_ERROR_INSUFFICIENT_ENTROPY ); +#endif + + case MBEDTLS_ERR_MD2_HW_ACCEL_FAILED: + case MBEDTLS_ERR_MD4_HW_ACCEL_FAILED: + case MBEDTLS_ERR_MD5_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + + case MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE: + return( PSA_ERROR_NOT_SUPPORTED ); + case MBEDTLS_ERR_MD_BAD_INPUT_DATA: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_MD_ALLOC_FAILED: + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + case MBEDTLS_ERR_MD_FILE_IO_ERROR: + return( PSA_ERROR_STORAGE_FAILURE ); + case MBEDTLS_ERR_MD_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + + case MBEDTLS_ERR_MPI_FILE_IO_ERROR: + return( PSA_ERROR_STORAGE_FAILURE ); + case MBEDTLS_ERR_MPI_BAD_INPUT_DATA: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_MPI_INVALID_CHARACTER: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL: + return( PSA_ERROR_BUFFER_TOO_SMALL ); + case MBEDTLS_ERR_MPI_NEGATIVE_VALUE: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_MPI_DIVISION_BY_ZERO: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_MPI_NOT_ACCEPTABLE: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_MPI_ALLOC_FAILED: + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + + case MBEDTLS_ERR_PK_ALLOC_FAILED: + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + case MBEDTLS_ERR_PK_TYPE_MISMATCH: + case MBEDTLS_ERR_PK_BAD_INPUT_DATA: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_PK_FILE_IO_ERROR: + return( PSA_ERROR_STORAGE_FAILURE ); + case MBEDTLS_ERR_PK_KEY_INVALID_VERSION: + case MBEDTLS_ERR_PK_KEY_INVALID_FORMAT: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_PK_UNKNOWN_PK_ALG: + return( PSA_ERROR_NOT_SUPPORTED ); + case MBEDTLS_ERR_PK_PASSWORD_REQUIRED: + case MBEDTLS_ERR_PK_PASSWORD_MISMATCH: + return( PSA_ERROR_NOT_PERMITTED ); + case MBEDTLS_ERR_PK_INVALID_PUBKEY: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_PK_INVALID_ALG: + case MBEDTLS_ERR_PK_UNKNOWN_NAMED_CURVE: + case MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE: + return( PSA_ERROR_NOT_SUPPORTED ); + case MBEDTLS_ERR_PK_SIG_LEN_MISMATCH: + return( PSA_ERROR_INVALID_SIGNATURE ); + case MBEDTLS_ERR_PK_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + + case MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + case MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED: + return( PSA_ERROR_NOT_SUPPORTED ); + + case MBEDTLS_ERR_RIPEMD160_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + + case MBEDTLS_ERR_RSA_BAD_INPUT_DATA: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_RSA_INVALID_PADDING: + return( PSA_ERROR_INVALID_PADDING ); + case MBEDTLS_ERR_RSA_KEY_GEN_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + case MBEDTLS_ERR_RSA_KEY_CHECK_FAILED: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_RSA_PUBLIC_FAILED: + case MBEDTLS_ERR_RSA_PRIVATE_FAILED: + return( PSA_ERROR_CORRUPTION_DETECTED ); + case MBEDTLS_ERR_RSA_VERIFY_FAILED: + return( PSA_ERROR_INVALID_SIGNATURE ); + case MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE: + return( PSA_ERROR_BUFFER_TOO_SMALL ); + case MBEDTLS_ERR_RSA_RNG_FAILED: + return( PSA_ERROR_INSUFFICIENT_ENTROPY ); + case MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION: + return( PSA_ERROR_NOT_SUPPORTED ); + case MBEDTLS_ERR_RSA_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + + case MBEDTLS_ERR_SHA1_HW_ACCEL_FAILED: + case MBEDTLS_ERR_SHA256_HW_ACCEL_FAILED: + case MBEDTLS_ERR_SHA512_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + + case MBEDTLS_ERR_XTEA_INVALID_INPUT_LENGTH: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_XTEA_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + + case MBEDTLS_ERR_ECP_BAD_INPUT_DATA: + case MBEDTLS_ERR_ECP_INVALID_KEY: + return( PSA_ERROR_INVALID_ARGUMENT ); + case MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL: + return( PSA_ERROR_BUFFER_TOO_SMALL ); + case MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE: + return( PSA_ERROR_NOT_SUPPORTED ); + case MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH: + case MBEDTLS_ERR_ECP_VERIFY_FAILED: + return( PSA_ERROR_INVALID_SIGNATURE ); + case MBEDTLS_ERR_ECP_ALLOC_FAILED: + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + case MBEDTLS_ERR_ECP_RANDOM_FAILED: + return( PSA_ERROR_INSUFFICIENT_ENTROPY ); + case MBEDTLS_ERR_ECP_HW_ACCEL_FAILED: + return( PSA_ERROR_HARDWARE_FAILURE ); + + case MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED: + return( PSA_ERROR_CORRUPTION_DETECTED ); + + default: + return( PSA_ERROR_GENERIC_ERROR ); + } +} + + + + +/****************************************************************/ +/* Key management */ +/****************************************************************/ + +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) || \ + defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_ECDH) +mbedtls_ecp_group_id mbedtls_ecc_group_of_psa( psa_ecc_family_t curve, + size_t bits, + int bits_is_sloppy ) +{ + switch( curve ) + { + case PSA_ECC_FAMILY_SECP_R1: + switch( bits ) + { +#if defined(PSA_WANT_ECC_SECP_R1_192) + case 192: + return( MBEDTLS_ECP_DP_SECP192R1 ); +#endif +#if defined(PSA_WANT_ECC_SECP_R1_224) + case 224: + return( MBEDTLS_ECP_DP_SECP224R1 ); +#endif +#if defined(PSA_WANT_ECC_SECP_R1_256) + case 256: + return( MBEDTLS_ECP_DP_SECP256R1 ); +#endif +#if defined(PSA_WANT_ECC_SECP_R1_384) + case 384: + return( MBEDTLS_ECP_DP_SECP384R1 ); +#endif +#if defined(PSA_WANT_ECC_SECP_R1_521) + case 521: + return( MBEDTLS_ECP_DP_SECP521R1 ); + case 528: + if( bits_is_sloppy ) + return( MBEDTLS_ECP_DP_SECP521R1 ); + break; +#endif + } + break; + + case PSA_ECC_FAMILY_BRAINPOOL_P_R1: + switch( bits ) + { +#if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_256) + case 256: + return( MBEDTLS_ECP_DP_BP256R1 ); +#endif +#if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_384) + case 384: + return( MBEDTLS_ECP_DP_BP384R1 ); +#endif +#if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_512) + case 512: + return( MBEDTLS_ECP_DP_BP512R1 ); +#endif + } + break; + + case PSA_ECC_FAMILY_MONTGOMERY: + switch( bits ) + { +#if defined(PSA_WANT_ECC_MONTGOMERY_255) + case 255: + return( MBEDTLS_ECP_DP_CURVE25519 ); + case 256: + if( bits_is_sloppy ) + return( MBEDTLS_ECP_DP_CURVE25519 ); + break; +#endif +#if defined(PSA_WANT_ECC_MONTGOMERY_448) + case 448: + return( MBEDTLS_ECP_DP_CURVE448 ); +#endif + } + break; + + case PSA_ECC_FAMILY_SECP_K1: + switch( bits ) + { +#if defined(PSA_WANT_ECC_SECP_K1_192) + case 192: + return( MBEDTLS_ECP_DP_SECP192K1 ); +#endif +#if defined(PSA_WANT_ECC_SECP_K1_224) + case 224: + return( MBEDTLS_ECP_DP_SECP224K1 ); +#endif +#if defined(PSA_WANT_ECC_SECP_K1_256) + case 256: + return( MBEDTLS_ECP_DP_SECP256K1 ); +#endif + } + break; + } + + (void) bits_is_sloppy; + return( MBEDTLS_ECP_DP_NONE ); +} +#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) || + defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) || + defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || + defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) || + defined(MBEDTLS_PSA_BUILTIN_ALG_ECDH) */ + +static psa_status_t validate_unstructured_key_bit_size( psa_key_type_t type, + size_t bits ) +{ + /* Check that the bit size is acceptable for the key type */ + switch( type ) + { + case PSA_KEY_TYPE_RAW_DATA: + case PSA_KEY_TYPE_HMAC: + case PSA_KEY_TYPE_DERIVE: + break; +#if defined(PSA_WANT_KEY_TYPE_AES) + case PSA_KEY_TYPE_AES: + if( bits != 128 && bits != 192 && bits != 256 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + break; +#endif +#if defined(PSA_WANT_KEY_TYPE_ARIA) + case PSA_KEY_TYPE_ARIA: + if( bits != 128 && bits != 192 && bits != 256 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + break; +#endif +#if defined(PSA_WANT_KEY_TYPE_CAMELLIA) + case PSA_KEY_TYPE_CAMELLIA: + if( bits != 128 && bits != 192 && bits != 256 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + break; +#endif +#if defined(PSA_WANT_KEY_TYPE_DES) + case PSA_KEY_TYPE_DES: + if( bits != 64 && bits != 128 && bits != 192 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + break; +#endif +#if defined(PSA_WANT_KEY_TYPE_ARC4) + case PSA_KEY_TYPE_ARC4: + if( bits < 8 || bits > 2048 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + break; +#endif +#if defined(PSA_WANT_KEY_TYPE_CHACHA20) + case PSA_KEY_TYPE_CHACHA20: + if( bits != 256 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + break; +#endif + default: + return( PSA_ERROR_NOT_SUPPORTED ); + } + if( bits % 8 != 0 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + return( PSA_SUCCESS ); +} + +/** Check whether a given key type is valid for use with a given MAC algorithm + * + * Upon successful return of this function, the behavior of #PSA_MAC_LENGTH + * when called with the validated \p algorithm and \p key_type is well-defined. + * + * \param[in] algorithm The specific MAC algorithm (can be wildcard). + * \param[in] key_type The key type of the key to be used with the + * \p algorithm. + * + * \retval #PSA_SUCCESS + * The \p key_type is valid for use with the \p algorithm + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The \p key_type is not valid for use with the \p algorithm + */ +MBEDTLS_STATIC_TESTABLE psa_status_t psa_mac_key_can_do( + psa_algorithm_t algorithm, + psa_key_type_t key_type ) +{ + if( PSA_ALG_IS_HMAC( algorithm ) ) + { + if( key_type == PSA_KEY_TYPE_HMAC ) + return( PSA_SUCCESS ); + } + + if( PSA_ALG_IS_BLOCK_CIPHER_MAC( algorithm ) ) + { + /* Check that we're calling PSA_BLOCK_CIPHER_BLOCK_LENGTH with a cipher + * key. */ + if( ( key_type & PSA_KEY_TYPE_CATEGORY_MASK ) == + PSA_KEY_TYPE_CATEGORY_SYMMETRIC ) + { + /* PSA_BLOCK_CIPHER_BLOCK_LENGTH returns 1 for stream ciphers and + * the block length (larger than 1) for block ciphers. */ + if( PSA_BLOCK_CIPHER_BLOCK_LENGTH( key_type ) > 1 ) + return( PSA_SUCCESS ); + } + } + + return( PSA_ERROR_INVALID_ARGUMENT ); +} + +psa_status_t psa_allocate_buffer_to_slot( psa_key_slot_t *slot, + size_t buffer_length ) +{ + if( slot->key.data != NULL ) + return( PSA_ERROR_ALREADY_EXISTS ); + + slot->key.data = mbedtls_calloc( 1, buffer_length ); + if( slot->key.data == NULL ) + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + + slot->key.bytes = buffer_length; + return( PSA_SUCCESS ); +} + +psa_status_t psa_copy_key_material_into_slot( psa_key_slot_t *slot, + const uint8_t* data, + size_t data_length ) +{ + psa_status_t status = psa_allocate_buffer_to_slot( slot, + data_length ); + if( status != PSA_SUCCESS ) + return( status ); + + memcpy( slot->key.data, data, data_length ); + return( PSA_SUCCESS ); +} + +psa_status_t psa_import_key_into_slot( + const psa_key_attributes_t *attributes, + const uint8_t *data, size_t data_length, + uint8_t *key_buffer, size_t key_buffer_size, + size_t *key_buffer_length, size_t *bits ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_type_t type = attributes->core.type; + + /* zero-length keys are never supported. */ + if( data_length == 0 ) + return( PSA_ERROR_NOT_SUPPORTED ); + + if( key_type_is_raw_bytes( type ) ) + { + *bits = PSA_BYTES_TO_BITS( data_length ); + + /* Ensure that the bytes-to-bits conversion hasn't overflown. */ + if( data_length > SIZE_MAX / 8 ) + return( PSA_ERROR_NOT_SUPPORTED ); + + /* Enforce a size limit, and in particular ensure that the bit + * size fits in its representation type. */ + if( ( *bits ) > PSA_MAX_KEY_BITS ) + return( PSA_ERROR_NOT_SUPPORTED ); + + status = validate_unstructured_key_bit_size( type, *bits ); + if( status != PSA_SUCCESS ) + return( status ); + + /* Copy the key material. */ + memcpy( key_buffer, data, data_length ); + *key_buffer_length = data_length; + (void)key_buffer_size; + + return( PSA_SUCCESS ); + } + else if( PSA_KEY_TYPE_IS_ASYMMETRIC( type ) ) + { +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) || \ + defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) + if( PSA_KEY_TYPE_IS_ECC( type ) ) + { + return( mbedtls_psa_ecp_import_key( attributes, + data, data_length, + key_buffer, key_buffer_size, + key_buffer_length, + bits ) ); + } +#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) || + * defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) */ +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) || \ + defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY) + if( PSA_KEY_TYPE_IS_RSA( type ) ) + { + return( mbedtls_psa_rsa_import_key( attributes, + data, data_length, + key_buffer, key_buffer_size, + key_buffer_length, + bits ) ); + } +#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) || + * defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY) */ + } + + return( PSA_ERROR_NOT_SUPPORTED ); +} + +/** Calculate the intersection of two algorithm usage policies. + * + * Return 0 (which allows no operation) on incompatibility. + */ +static psa_algorithm_t psa_key_policy_algorithm_intersection( + psa_key_type_t key_type, + psa_algorithm_t alg1, + psa_algorithm_t alg2 ) +{ + /* Common case: both sides actually specify the same policy. */ + if( alg1 == alg2 ) + return( alg1 ); + /* If the policies are from the same hash-and-sign family, check + * if one is a wildcard. If so the other has the specific algorithm. */ + if( PSA_ALG_IS_SIGN_HASH( alg1 ) && + PSA_ALG_IS_SIGN_HASH( alg2 ) && + ( alg1 & ~PSA_ALG_HASH_MASK ) == ( alg2 & ~PSA_ALG_HASH_MASK ) ) + { + if( PSA_ALG_SIGN_GET_HASH( alg1 ) == PSA_ALG_ANY_HASH ) + return( alg2 ); + if( PSA_ALG_SIGN_GET_HASH( alg2 ) == PSA_ALG_ANY_HASH ) + return( alg1 ); + } + /* If the policies are from the same AEAD family, check whether + * one of them is a minimum-tag-length wildcard. Calculate the most + * restrictive tag length. */ + if( PSA_ALG_IS_AEAD( alg1 ) && PSA_ALG_IS_AEAD( alg2 ) && + ( PSA_ALG_AEAD_WITH_SHORTENED_TAG( alg1, 0 ) == + PSA_ALG_AEAD_WITH_SHORTENED_TAG( alg2, 0 ) ) ) + { + size_t alg1_len = PSA_ALG_AEAD_GET_TAG_LENGTH( alg1 ); + size_t alg2_len = PSA_ALG_AEAD_GET_TAG_LENGTH( alg2 ); + size_t restricted_len = alg1_len > alg2_len ? alg1_len : alg2_len; + + /* If both are wildcards, return most restrictive wildcard */ + if( ( ( alg1 & PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG ) != 0 ) && + ( ( alg2 & PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG ) != 0 ) ) + { + return( PSA_ALG_AEAD_WITH_AT_LEAST_THIS_LENGTH_TAG( + alg1, restricted_len ) ); + } + /* If only one is a wildcard, return specific algorithm if compatible. */ + if( ( ( alg1 & PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG ) != 0 ) && + ( alg1_len <= alg2_len ) ) + { + return( alg2 ); + } + if( ( ( alg2 & PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG ) != 0 ) && + ( alg2_len <= alg1_len ) ) + { + return( alg1 ); + } + } + /* If the policies are from the same MAC family, check whether one + * of them is a minimum-MAC-length policy. Calculate the most + * restrictive tag length. */ + if( PSA_ALG_IS_MAC( alg1 ) && PSA_ALG_IS_MAC( alg2 ) && + ( PSA_ALG_FULL_LENGTH_MAC( alg1 ) == + PSA_ALG_FULL_LENGTH_MAC( alg2 ) ) ) + { + /* Validate the combination of key type and algorithm. Since the base + * algorithm of alg1 and alg2 are the same, we only need this once. */ + if( PSA_SUCCESS != psa_mac_key_can_do( alg1, key_type ) ) + return( 0 ); + + /* Get the (exact or at-least) output lengths for both sides of the + * requested intersection. None of the currently supported algorithms + * have an output length dependent on the actual key size, so setting it + * to a bogus value of 0 is currently OK. + * + * Note that for at-least-this-length wildcard algorithms, the output + * length is set to the shortest allowed length, which allows us to + * calculate the most restrictive tag length for the intersection. */ + size_t alg1_len = PSA_MAC_LENGTH( key_type, 0, alg1 ); + size_t alg2_len = PSA_MAC_LENGTH( key_type, 0, alg2 ); + size_t restricted_len = alg1_len > alg2_len ? alg1_len : alg2_len; + + /* If both are wildcards, return most restrictive wildcard */ + if( ( ( alg1 & PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG ) != 0 ) && + ( ( alg2 & PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG ) != 0 ) ) + { + return( PSA_ALG_AT_LEAST_THIS_LENGTH_MAC( alg1, restricted_len ) ); + } + + /* If only one is an at-least-this-length policy, the intersection would + * be the other (fixed-length) policy as long as said fixed length is + * equal to or larger than the shortest allowed length. */ + if( ( alg1 & PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG ) != 0 ) + { + return( ( alg1_len <= alg2_len ) ? alg2 : 0 ); + } + if( ( alg2 & PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG ) != 0 ) + { + return( ( alg2_len <= alg1_len ) ? alg1 : 0 ); + } + + /* If none of them are wildcards, check whether they define the same tag + * length. This is still possible here when one is default-length and + * the other specific-length. Ensure to always return the + * specific-length version for the intersection. */ + if( alg1_len == alg2_len ) + return( PSA_ALG_TRUNCATED_MAC( alg1, alg1_len ) ); + } + /* If the policies are incompatible, allow nothing. */ + return( 0 ); +} + +static int psa_key_algorithm_permits( psa_key_type_t key_type, + psa_algorithm_t policy_alg, + psa_algorithm_t requested_alg ) +{ + /* Common case: the policy only allows requested_alg. */ + if( requested_alg == policy_alg ) + return( 1 ); + /* If policy_alg is a hash-and-sign with a wildcard for the hash, + * and requested_alg is the same hash-and-sign family with any hash, + * then requested_alg is compliant with policy_alg. */ + if( PSA_ALG_IS_SIGN_HASH( requested_alg ) && + PSA_ALG_SIGN_GET_HASH( policy_alg ) == PSA_ALG_ANY_HASH ) + { + return( ( policy_alg & ~PSA_ALG_HASH_MASK ) == + ( requested_alg & ~PSA_ALG_HASH_MASK ) ); + } + /* If policy_alg is a wildcard AEAD algorithm of the same base as + * the requested algorithm, check the requested tag length to be + * equal-length or longer than the wildcard-specified length. */ + if( PSA_ALG_IS_AEAD( policy_alg ) && + PSA_ALG_IS_AEAD( requested_alg ) && + ( PSA_ALG_AEAD_WITH_SHORTENED_TAG( policy_alg, 0 ) == + PSA_ALG_AEAD_WITH_SHORTENED_TAG( requested_alg, 0 ) ) && + ( ( policy_alg & PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG ) != 0 ) ) + { + return( PSA_ALG_AEAD_GET_TAG_LENGTH( policy_alg ) <= + PSA_ALG_AEAD_GET_TAG_LENGTH( requested_alg ) ); + } + /* If policy_alg is a MAC algorithm of the same base as the requested + * algorithm, check whether their MAC lengths are compatible. */ + if( PSA_ALG_IS_MAC( policy_alg ) && + PSA_ALG_IS_MAC( requested_alg ) && + ( PSA_ALG_FULL_LENGTH_MAC( policy_alg ) == + PSA_ALG_FULL_LENGTH_MAC( requested_alg ) ) ) + { + /* Validate the combination of key type and algorithm. Since the policy + * and requested algorithms are the same, we only need this once. */ + if( PSA_SUCCESS != psa_mac_key_can_do( policy_alg, key_type ) ) + return( 0 ); + + /* Get both the requested output length for the algorithm which is to be + * verified, and the default output length for the base algorithm. + * Note that none of the currently supported algorithms have an output + * length dependent on actual key size, so setting it to a bogus value + * of 0 is currently OK. */ + size_t requested_output_length = PSA_MAC_LENGTH( + key_type, 0, requested_alg ); + size_t default_output_length = PSA_MAC_LENGTH( + key_type, 0, + PSA_ALG_FULL_LENGTH_MAC( requested_alg ) ); + + /* If the policy is default-length, only allow an algorithm with + * a declared exact-length matching the default. */ + if( PSA_MAC_TRUNCATED_LENGTH( policy_alg ) == 0 ) + return( requested_output_length == default_output_length ); + + /* If the requested algorithm is default-length, allow it if the policy + * length exactly matches the default length. */ + if( PSA_MAC_TRUNCATED_LENGTH( requested_alg ) == 0 && + PSA_MAC_TRUNCATED_LENGTH( policy_alg ) == default_output_length ) + { + return( 1 ); + } + + /* If policy_alg is an at-least-this-length wildcard MAC algorithm, + * check for the requested MAC length to be equal to or longer than the + * minimum allowed length. */ + if( ( policy_alg & PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG ) != 0 ) + { + return( PSA_MAC_TRUNCATED_LENGTH( policy_alg ) <= + requested_output_length ); + } + } + /* If policy_alg is a generic key agreement operation, then using it for + * a key derivation with that key agreement should also be allowed. This + * behaviour is expected to be defined in a future specification version. */ + if( PSA_ALG_IS_RAW_KEY_AGREEMENT( policy_alg ) && + PSA_ALG_IS_KEY_AGREEMENT( requested_alg ) ) + { + return( PSA_ALG_KEY_AGREEMENT_GET_BASE( requested_alg ) == + policy_alg ); + } + /* If it isn't explicitly permitted, it's forbidden. */ + return( 0 ); +} + +/** Test whether a policy permits an algorithm. + * + * The caller must test usage flags separately. + * + * \note This function requires providing the key type for which the policy is + * being validated, since some algorithm policy definitions (e.g. MAC) + * have different properties depending on what kind of cipher it is + * combined with. + * + * \retval PSA_SUCCESS When \p alg is a specific algorithm + * allowed by the \p policy. + * \retval PSA_ERROR_INVALID_ARGUMENT When \p alg is not a specific algorithm + * \retval PSA_ERROR_NOT_PERMITTED When \p alg is a specific algorithm, but + * the \p policy does not allow it. + */ +static psa_status_t psa_key_policy_permits( const psa_key_policy_t *policy, + psa_key_type_t key_type, + psa_algorithm_t alg ) +{ + /* '0' is not a valid algorithm */ + if( alg == 0 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + /* A requested algorithm cannot be a wildcard. */ + if( PSA_ALG_IS_WILDCARD( alg ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + if( psa_key_algorithm_permits( key_type, policy->alg, alg ) || + psa_key_algorithm_permits( key_type, policy->alg2, alg ) ) + return( PSA_SUCCESS ); + else + return( PSA_ERROR_NOT_PERMITTED ); +} + +/** Restrict a key policy based on a constraint. + * + * \note This function requires providing the key type for which the policy is + * being restricted, since some algorithm policy definitions (e.g. MAC) + * have different properties depending on what kind of cipher it is + * combined with. + * + * \param[in] key_type The key type for which to restrict the policy + * \param[in,out] policy The policy to restrict. + * \param[in] constraint The policy constraint to apply. + * + * \retval #PSA_SUCCESS + * \c *policy contains the intersection of the original value of + * \c *policy and \c *constraint. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c key_type, \c *policy and \c *constraint are incompatible. + * \c *policy is unchanged. + */ +static psa_status_t psa_restrict_key_policy( + psa_key_type_t key_type, + psa_key_policy_t *policy, + const psa_key_policy_t *constraint ) +{ + psa_algorithm_t intersection_alg = + psa_key_policy_algorithm_intersection( key_type, policy->alg, + constraint->alg ); + psa_algorithm_t intersection_alg2 = + psa_key_policy_algorithm_intersection( key_type, policy->alg2, + constraint->alg2 ); + if( intersection_alg == 0 && policy->alg != 0 && constraint->alg != 0 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + if( intersection_alg2 == 0 && policy->alg2 != 0 && constraint->alg2 != 0 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + policy->usage &= constraint->usage; + policy->alg = intersection_alg; + policy->alg2 = intersection_alg2; + return( PSA_SUCCESS ); +} + +/** Get the description of a key given its identifier and policy constraints + * and lock it. + * + * The key must have allow all the usage flags set in \p usage. If \p alg is + * nonzero, the key must allow operations with this algorithm. If \p alg is + * zero, the algorithm is not checked. + * + * In case of a persistent key, the function loads the description of the key + * into a key slot if not already done. + * + * On success, the returned key slot is locked. It is the responsibility of + * the caller to unlock the key slot when it does not access it anymore. + */ +static psa_status_t psa_get_and_lock_key_slot_with_policy( + mbedtls_svc_key_id_t key, + psa_key_slot_t **p_slot, + psa_key_usage_t usage, + psa_algorithm_t alg ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot; + + status = psa_get_and_lock_key_slot( key, p_slot ); + if( status != PSA_SUCCESS ) + return( status ); + slot = *p_slot; + + /* Enforce that usage policy for the key slot contains all the flags + * required by the usage parameter. There is one exception: public + * keys can always be exported, so we treat public key objects as + * if they had the export flag. */ + if( PSA_KEY_TYPE_IS_PUBLIC_KEY( slot->attr.type ) ) + usage &= ~PSA_KEY_USAGE_EXPORT; + + if( ( slot->attr.policy.usage & usage ) != usage ) + { + status = PSA_ERROR_NOT_PERMITTED; + goto error; + } + + /* Enforce that the usage policy permits the requested algortihm. */ + if( alg != 0 ) + { + status = psa_key_policy_permits( &slot->attr.policy, + slot->attr.type, + alg ); + if( status != PSA_SUCCESS ) + goto error; + } + + return( PSA_SUCCESS ); + +error: + *p_slot = NULL; + psa_unlock_key_slot( slot ); + + return( status ); +} + +/** Get a key slot containing a transparent key and lock it. + * + * A transparent key is a key for which the key material is directly + * available, as opposed to a key in a secure element and/or to be used + * by a secure element. + * + * This is a temporary function that may be used instead of + * psa_get_and_lock_key_slot_with_policy() when there is no opaque key support + * for a cryptographic operation. + * + * On success, the returned key slot is locked. It is the responsibility of the + * caller to unlock the key slot when it does not access it anymore. + */ +static psa_status_t psa_get_and_lock_transparent_key_slot_with_policy( + mbedtls_svc_key_id_t key, + psa_key_slot_t **p_slot, + psa_key_usage_t usage, + psa_algorithm_t alg ) +{ + psa_status_t status = psa_get_and_lock_key_slot_with_policy( key, p_slot, + usage, alg ); + if( status != PSA_SUCCESS ) + return( status ); + + if( psa_key_lifetime_is_external( (*p_slot)->attr.lifetime ) ) + { + psa_unlock_key_slot( *p_slot ); + *p_slot = NULL; + return( PSA_ERROR_NOT_SUPPORTED ); + } + + return( PSA_SUCCESS ); +} + +psa_status_t psa_remove_key_data_from_memory( psa_key_slot_t *slot ) +{ + /* Data pointer will always be either a valid pointer or NULL in an + * initialized slot, so we can just free it. */ + if( slot->key.data != NULL ) + mbedtls_platform_zeroize( slot->key.data, slot->key.bytes); + + mbedtls_free( slot->key.data ); + slot->key.data = NULL; + slot->key.bytes = 0; + + return( PSA_SUCCESS ); +} + +/** Completely wipe a slot in memory, including its policy. + * Persistent storage is not affected. */ +psa_status_t psa_wipe_key_slot( psa_key_slot_t *slot ) +{ + psa_status_t status = psa_remove_key_data_from_memory( slot ); + + /* + * As the return error code may not be handled in case of multiple errors, + * do our best to report an unexpected lock counter: if available + * call MBEDTLS_PARAM_FAILED that may terminate execution (if called as + * part of the execution of a test suite this will stop the test suite + * execution). + */ + if( slot->lock_count != 1 ) + { +#ifdef MBEDTLS_CHECK_PARAMS + MBEDTLS_PARAM_FAILED( slot->lock_count == 1 ); +#endif + status = PSA_ERROR_CORRUPTION_DETECTED; + } + + /* Multipart operations may still be using the key. This is safe + * because all multipart operation objects are independent from + * the key slot: if they need to access the key after the setup + * phase, they have a copy of the key. Note that this means that + * key material can linger until all operations are completed. */ + /* At this point, key material and other type-specific content has + * been wiped. Clear remaining metadata. We can call memset and not + * zeroize because the metadata is not particularly sensitive. */ + memset( slot, 0, sizeof( *slot ) ); + return( status ); +} + +psa_status_t psa_destroy_key( mbedtls_svc_key_id_t key ) +{ + psa_key_slot_t *slot; + psa_status_t status; /* status of the last operation */ + psa_status_t overall_status = PSA_SUCCESS; +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + psa_se_drv_table_entry_t *driver; +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + + if( mbedtls_svc_key_id_is_null( key ) ) + return( PSA_SUCCESS ); + + /* + * Get the description of the key in a key slot. In case of a persistent + * key, this will load the key description from persistent memory if not + * done yet. We cannot avoid this loading as without it we don't know if + * the key is operated by an SE or not and this information is needed by + * the current implementation. + */ + status = psa_get_and_lock_key_slot( key, &slot ); + if( status != PSA_SUCCESS ) + return( status ); + + /* + * If the key slot containing the key description is under access by the + * library (apart from the present access), the key cannot be destroyed + * yet. For the time being, just return in error. Eventually (to be + * implemented), the key should be destroyed when all accesses have + * stopped. + */ + if( slot->lock_count > 1 ) + { + psa_unlock_key_slot( slot ); + return( PSA_ERROR_GENERIC_ERROR ); + } + + if( PSA_KEY_LIFETIME_IS_READ_ONLY( slot->attr.lifetime ) ) + { + /* Refuse the destruction of a read-only key (which may or may not work + * if we attempt it, depending on whether the key is merely read-only + * by policy or actually physically read-only). + * Just do the best we can, which is to wipe the copy in memory + * (done in this function's cleanup code). */ + overall_status = PSA_ERROR_NOT_PERMITTED; + goto exit; + } + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + driver = psa_get_se_driver_entry( slot->attr.lifetime ); + if( driver != NULL ) + { + /* For a key in a secure element, we need to do three things: + * remove the key file in internal storage, destroy the + * key inside the secure element, and update the driver's + * persistent data. Start a transaction that will encompass these + * three actions. */ + psa_crypto_prepare_transaction( PSA_CRYPTO_TRANSACTION_DESTROY_KEY ); + psa_crypto_transaction.key.lifetime = slot->attr.lifetime; + psa_crypto_transaction.key.slot = psa_key_slot_get_slot_number( slot ); + psa_crypto_transaction.key.id = slot->attr.id; + status = psa_crypto_save_transaction( ); + if( status != PSA_SUCCESS ) + { + (void) psa_crypto_stop_transaction( ); + /* We should still try to destroy the key in the secure + * element and the key metadata in storage. This is especially + * important if the error is that the storage is full. + * But how to do it exactly without risking an inconsistent + * state after a reset? + * https://github.com/ARMmbed/mbed-crypto/issues/215 + */ + overall_status = status; + goto exit; + } + + status = psa_destroy_se_key( driver, + psa_key_slot_get_slot_number( slot ) ); + if( overall_status == PSA_SUCCESS ) + overall_status = status; + } +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + +#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) + if( ! PSA_KEY_LIFETIME_IS_VOLATILE( slot->attr.lifetime ) ) + { + status = psa_destroy_persistent_key( slot->attr.id ); + if( overall_status == PSA_SUCCESS ) + overall_status = status; + + /* TODO: other slots may have a copy of the same key. We should + * invalidate them. + * https://github.com/ARMmbed/mbed-crypto/issues/214 + */ + } +#endif /* defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) */ + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + if( driver != NULL ) + { + status = psa_save_se_persistent_data( driver ); + if( overall_status == PSA_SUCCESS ) + overall_status = status; + status = psa_crypto_stop_transaction( ); + if( overall_status == PSA_SUCCESS ) + overall_status = status; + } +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + +exit: + status = psa_wipe_key_slot( slot ); + /* Prioritize CORRUPTION_DETECTED from wiping over a storage error */ + if( status != PSA_SUCCESS ) + overall_status = status; + return( overall_status ); +} + +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) || \ + defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY) +static psa_status_t psa_get_rsa_public_exponent( + const mbedtls_rsa_context *rsa, + psa_key_attributes_t *attributes ) +{ + mbedtls_mpi mpi; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + uint8_t *buffer = NULL; + size_t buflen; + mbedtls_mpi_init( &mpi ); + + ret = mbedtls_rsa_export( rsa, NULL, NULL, NULL, NULL, &mpi ); + if( ret != 0 ) + goto exit; + if( mbedtls_mpi_cmp_int( &mpi, 65537 ) == 0 ) + { + /* It's the default value, which is reported as an empty string, + * so there's nothing to do. */ + goto exit; + } + + buflen = mbedtls_mpi_size( &mpi ); + buffer = mbedtls_calloc( 1, buflen ); + if( buffer == NULL ) + { + ret = MBEDTLS_ERR_MPI_ALLOC_FAILED; + goto exit; + } + ret = mbedtls_mpi_write_binary( &mpi, buffer, buflen ); + if( ret != 0 ) + goto exit; + attributes->domain_parameters = buffer; + attributes->domain_parameters_size = buflen; + +exit: + mbedtls_mpi_free( &mpi ); + if( ret != 0 ) + mbedtls_free( buffer ); + return( mbedtls_to_psa_error( ret ) ); +} +#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) || + * defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY) */ + +/** Retrieve all the publicly-accessible attributes of a key. + */ +psa_status_t psa_get_key_attributes( mbedtls_svc_key_id_t key, + psa_key_attributes_t *attributes ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot; + + psa_reset_key_attributes( attributes ); + + status = psa_get_and_lock_key_slot_with_policy( key, &slot, 0, 0 ); + if( status != PSA_SUCCESS ) + return( status ); + + attributes->core = slot->attr; + attributes->core.flags &= ( MBEDTLS_PSA_KA_MASK_EXTERNAL_ONLY | + MBEDTLS_PSA_KA_MASK_DUAL_USE ); + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + if( psa_get_se_driver_entry( slot->attr.lifetime ) != NULL ) + psa_set_key_slot_number( attributes, + psa_key_slot_get_slot_number( slot ) ); +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + + switch( slot->attr.type ) + { +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) || \ + defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY) + case PSA_KEY_TYPE_RSA_KEY_PAIR: + case PSA_KEY_TYPE_RSA_PUBLIC_KEY: + /* TODO: reporting the public exponent for opaque keys + * is not yet implemented. + * https://github.com/ARMmbed/mbed-crypto/issues/216 + */ + if( ! psa_key_lifetime_is_external( slot->attr.lifetime ) ) + { + mbedtls_rsa_context *rsa = NULL; + + status = mbedtls_psa_rsa_load_representation( + slot->attr.type, + slot->key.data, + slot->key.bytes, + &rsa ); + if( status != PSA_SUCCESS ) + break; + + status = psa_get_rsa_public_exponent( rsa, + attributes ); + mbedtls_rsa_free( rsa ); + mbedtls_free( rsa ); + } + break; +#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) || + * defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY) */ + default: + /* Nothing else to do. */ + break; + } + + if( status != PSA_SUCCESS ) + psa_reset_key_attributes( attributes ); + + unlock_status = psa_unlock_key_slot( slot ); + + return( ( status == PSA_SUCCESS ) ? unlock_status : status ); +} + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) +psa_status_t psa_get_key_slot_number( + const psa_key_attributes_t *attributes, + psa_key_slot_number_t *slot_number ) +{ + if( attributes->core.flags & MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER ) + { + *slot_number = attributes->slot_number; + return( PSA_SUCCESS ); + } + else + return( PSA_ERROR_INVALID_ARGUMENT ); +} +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + +static psa_status_t psa_export_key_buffer_internal( const uint8_t *key_buffer, + size_t key_buffer_size, + uint8_t *data, + size_t data_size, + size_t *data_length ) +{ + if( key_buffer_size > data_size ) + return( PSA_ERROR_BUFFER_TOO_SMALL ); + memcpy( data, key_buffer, key_buffer_size ); + memset( data + key_buffer_size, 0, + data_size - key_buffer_size ); + *data_length = key_buffer_size; + return( PSA_SUCCESS ); +} + +psa_status_t psa_export_key_internal( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + uint8_t *data, size_t data_size, size_t *data_length ) +{ + psa_key_type_t type = attributes->core.type; + + if( key_type_is_raw_bytes( type ) || + PSA_KEY_TYPE_IS_RSA( type ) || + PSA_KEY_TYPE_IS_ECC( type ) ) + { + return( psa_export_key_buffer_internal( + key_buffer, key_buffer_size, + data, data_size, data_length ) ); + } + else + { + /* This shouldn't happen in the reference implementation, but + it is valid for a special-purpose implementation to omit + support for exporting certain key types. */ + return( PSA_ERROR_NOT_SUPPORTED ); + } +} + +psa_status_t psa_export_key( mbedtls_svc_key_id_t key, + uint8_t *data, + size_t data_size, + size_t *data_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot; + + /* Reject a zero-length output buffer now, since this can never be a + * valid key representation. This way we know that data must be a valid + * pointer and we can do things like memset(data, ..., data_size). */ + if( data_size == 0 ) + return( PSA_ERROR_BUFFER_TOO_SMALL ); + + /* Set the key to empty now, so that even when there are errors, we always + * set data_length to a value between 0 and data_size. On error, setting + * the key to empty is a good choice because an empty key representation is + * unlikely to be accepted anywhere. */ + *data_length = 0; + + /* Export requires the EXPORT flag. There is an exception for public keys, + * which don't require any flag, but + * psa_get_and_lock_key_slot_with_policy() takes care of this. + */ + status = psa_get_and_lock_key_slot_with_policy( key, &slot, + PSA_KEY_USAGE_EXPORT, 0 ); + if( status != PSA_SUCCESS ) + return( status ); + + psa_key_attributes_t attributes = { + .core = slot->attr + }; + status = psa_driver_wrapper_export_key( &attributes, + slot->key.data, slot->key.bytes, + data, data_size, data_length ); + + unlock_status = psa_unlock_key_slot( slot ); + + return( ( status == PSA_SUCCESS ) ? unlock_status : status ); +} + +psa_status_t psa_export_public_key_internal( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + uint8_t *data, + size_t data_size, + size_t *data_length ) +{ + psa_key_type_t type = attributes->core.type; + + if( PSA_KEY_TYPE_IS_RSA( type ) || PSA_KEY_TYPE_IS_ECC( type ) ) + { + if( PSA_KEY_TYPE_IS_PUBLIC_KEY( type ) ) + { + /* Exporting public -> public */ + return( psa_export_key_buffer_internal( + key_buffer, key_buffer_size, + data, data_size, data_length ) ); + } + + if( PSA_KEY_TYPE_IS_RSA( type ) ) + { +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) || \ + defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY) + return( mbedtls_psa_rsa_export_public_key( attributes, + key_buffer, + key_buffer_size, + data, + data_size, + data_length ) ); +#else + /* We don't know how to convert a private RSA key to public. */ + return( PSA_ERROR_NOT_SUPPORTED ); +#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) || + * defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY) */ + } + else + { +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) || \ + defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) + return( mbedtls_psa_ecp_export_public_key( attributes, + key_buffer, + key_buffer_size, + data, + data_size, + data_length ) ); +#else + /* We don't know how to convert a private ECC key to public */ + return( PSA_ERROR_NOT_SUPPORTED ); +#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) || + * defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) */ + } + } + else + { + /* This shouldn't happen in the reference implementation, but + it is valid for a special-purpose implementation to omit + support for exporting certain key types. */ + return( PSA_ERROR_NOT_SUPPORTED ); + } +} + +psa_status_t psa_export_public_key( mbedtls_svc_key_id_t key, + uint8_t *data, + size_t data_size, + size_t *data_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot; + + /* Reject a zero-length output buffer now, since this can never be a + * valid key representation. This way we know that data must be a valid + * pointer and we can do things like memset(data, ..., data_size). */ + if( data_size == 0 ) + return( PSA_ERROR_BUFFER_TOO_SMALL ); + + /* Set the key to empty now, so that even when there are errors, we always + * set data_length to a value between 0 and data_size. On error, setting + * the key to empty is a good choice because an empty key representation is + * unlikely to be accepted anywhere. */ + *data_length = 0; + + /* Exporting a public key doesn't require a usage flag. */ + status = psa_get_and_lock_key_slot_with_policy( key, &slot, 0, 0 ); + if( status != PSA_SUCCESS ) + return( status ); + + if( ! PSA_KEY_TYPE_IS_ASYMMETRIC( slot->attr.type ) ) + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + psa_key_attributes_t attributes = { + .core = slot->attr + }; + status = psa_driver_wrapper_export_public_key( + &attributes, slot->key.data, slot->key.bytes, + data, data_size, data_length ); + +exit: + unlock_status = psa_unlock_key_slot( slot ); + + return( ( status == PSA_SUCCESS ) ? unlock_status : status ); +} + +#if defined(static_assert) +static_assert( ( MBEDTLS_PSA_KA_MASK_EXTERNAL_ONLY & MBEDTLS_PSA_KA_MASK_DUAL_USE ) == 0, + "One or more key attribute flag is listed as both external-only and dual-use" ); +static_assert( ( PSA_KA_MASK_INTERNAL_ONLY & MBEDTLS_PSA_KA_MASK_DUAL_USE ) == 0, + "One or more key attribute flag is listed as both internal-only and dual-use" ); +static_assert( ( PSA_KA_MASK_INTERNAL_ONLY & MBEDTLS_PSA_KA_MASK_EXTERNAL_ONLY ) == 0, + "One or more key attribute flag is listed as both internal-only and external-only" ); +#endif + +/** Validate that a key policy is internally well-formed. + * + * This function only rejects invalid policies. It does not validate the + * consistency of the policy with respect to other attributes of the key + * such as the key type. + */ +static psa_status_t psa_validate_key_policy( const psa_key_policy_t *policy ) +{ + if( ( policy->usage & ~( PSA_KEY_USAGE_EXPORT | + PSA_KEY_USAGE_COPY | + PSA_KEY_USAGE_ENCRYPT | + PSA_KEY_USAGE_DECRYPT | + PSA_KEY_USAGE_SIGN_MESSAGE | + PSA_KEY_USAGE_VERIFY_MESSAGE | + PSA_KEY_USAGE_SIGN_HASH | + PSA_KEY_USAGE_VERIFY_HASH | + PSA_KEY_USAGE_DERIVE ) ) != 0 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + return( PSA_SUCCESS ); +} + +/** Validate the internal consistency of key attributes. + * + * This function only rejects invalid attribute values. If does not + * validate the consistency of the attributes with any key data that may + * be involved in the creation of the key. + * + * Call this function early in the key creation process. + * + * \param[in] attributes Key attributes for the new key. + * \param[out] p_drv On any return, the driver for the key, if any. + * NULL for a transparent key. + * + */ +static psa_status_t psa_validate_key_attributes( + const psa_key_attributes_t *attributes, + psa_se_drv_table_entry_t **p_drv ) +{ + psa_status_t status = PSA_ERROR_INVALID_ARGUMENT; + psa_key_lifetime_t lifetime = psa_get_key_lifetime( attributes ); + mbedtls_svc_key_id_t key = psa_get_key_id( attributes ); + + status = psa_validate_key_location( lifetime, p_drv ); + if( status != PSA_SUCCESS ) + return( status ); + + status = psa_validate_key_persistence( lifetime ); + if( status != PSA_SUCCESS ) + return( status ); + + if ( PSA_KEY_LIFETIME_IS_VOLATILE( lifetime ) ) + { + if( MBEDTLS_SVC_KEY_ID_GET_KEY_ID( key ) != 0 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + } + else + { + if( !psa_is_valid_key_id( psa_get_key_id( attributes ), 0 ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + } + + status = psa_validate_key_policy( &attributes->core.policy ); + if( status != PSA_SUCCESS ) + return( status ); + + /* Refuse to create overly large keys. + * Note that this doesn't trigger on import if the attributes don't + * explicitly specify a size (so psa_get_key_bits returns 0), so + * psa_import_key() needs its own checks. */ + if( psa_get_key_bits( attributes ) > PSA_MAX_KEY_BITS ) + return( PSA_ERROR_NOT_SUPPORTED ); + + /* Reject invalid flags. These should not be reachable through the API. */ + if( attributes->core.flags & ~ ( MBEDTLS_PSA_KA_MASK_EXTERNAL_ONLY | + MBEDTLS_PSA_KA_MASK_DUAL_USE ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + return( PSA_SUCCESS ); +} + +/** Prepare a key slot to receive key material. + * + * This function allocates a key slot and sets its metadata. + * + * If this function fails, call psa_fail_key_creation(). + * + * This function is intended to be used as follows: + * -# Call psa_start_key_creation() to allocate a key slot, prepare + * it with the specified attributes, and in case of a volatile key assign it + * a volatile key identifier. + * -# Populate the slot with the key material. + * -# Call psa_finish_key_creation() to finalize the creation of the slot. + * In case of failure at any step, stop the sequence and call + * psa_fail_key_creation(). + * + * On success, the key slot is locked. It is the responsibility of the caller + * to unlock the key slot when it does not access it anymore. + * + * \param method An identification of the calling function. + * \param[in] attributes Key attributes for the new key. + * \param[out] p_slot On success, a pointer to the prepared slot. + * \param[out] p_drv On any return, the driver for the key, if any. + * NULL for a transparent key. + * + * \retval #PSA_SUCCESS + * The key slot is ready to receive key material. + * \return If this function fails, the key slot is an invalid state. + * You must call psa_fail_key_creation() to wipe and free the slot. + */ +static psa_status_t psa_start_key_creation( + psa_key_creation_method_t method, + const psa_key_attributes_t *attributes, + psa_key_slot_t **p_slot, + psa_se_drv_table_entry_t **p_drv ) +{ + psa_status_t status; + psa_key_id_t volatile_key_id; + psa_key_slot_t *slot; + + (void) method; + *p_drv = NULL; + + status = psa_validate_key_attributes( attributes, p_drv ); + if( status != PSA_SUCCESS ) + return( status ); + + status = psa_get_empty_key_slot( &volatile_key_id, p_slot ); + if( status != PSA_SUCCESS ) + return( status ); + slot = *p_slot; + + /* We're storing the declared bit-size of the key. It's up to each + * creation mechanism to verify that this information is correct. + * It's automatically correct for mechanisms that use the bit-size as + * an input (generate, device) but not for those where the bit-size + * is optional (import, copy). In case of a volatile key, assign it the + * volatile key identifier associated to the slot returned to contain its + * definition. */ + + slot->attr = attributes->core; + if( PSA_KEY_LIFETIME_IS_VOLATILE( slot->attr.lifetime ) ) + { +#if !defined(MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER) + slot->attr.id = volatile_key_id; +#else + slot->attr.id.key_id = volatile_key_id; +#endif + } + + /* Erase external-only flags from the internal copy. To access + * external-only flags, query `attributes`. Thanks to the check + * in psa_validate_key_attributes(), this leaves the dual-use + * flags and any internal flag that psa_get_empty_key_slot() + * may have set. */ + slot->attr.flags &= ~MBEDTLS_PSA_KA_MASK_EXTERNAL_ONLY; + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + /* For a key in a secure element, we need to do three things + * when creating or registering a persistent key: + * create the key file in internal storage, create the + * key inside the secure element, and update the driver's + * persistent data. This is done by starting a transaction that will + * encompass these three actions. + * For registering a volatile key, we just need to find an appropriate + * slot number inside the SE. Since the key is designated volatile, creating + * a transaction is not required. */ + /* The first thing to do is to find a slot number for the new key. + * We save the slot number in persistent storage as part of the + * transaction data. It will be needed to recover if the power + * fails during the key creation process, to clean up on the secure + * element side after restarting. Obtaining a slot number from the + * secure element driver updates its persistent state, but we do not yet + * save the driver's persistent state, so that if the power fails, + * we can roll back to a state where the key doesn't exist. */ + if( *p_drv != NULL ) + { + psa_key_slot_number_t slot_number; + status = psa_find_se_slot_for_key( attributes, method, *p_drv, + &slot_number ); + if( status != PSA_SUCCESS ) + return( status ); + + if( ! PSA_KEY_LIFETIME_IS_VOLATILE( attributes->core.lifetime ) ) + { + psa_crypto_prepare_transaction( PSA_CRYPTO_TRANSACTION_CREATE_KEY ); + psa_crypto_transaction.key.lifetime = slot->attr.lifetime; + psa_crypto_transaction.key.slot = slot_number; + psa_crypto_transaction.key.id = slot->attr.id; + status = psa_crypto_save_transaction( ); + if( status != PSA_SUCCESS ) + { + (void) psa_crypto_stop_transaction( ); + return( status ); + } + } + + status = psa_copy_key_material_into_slot( + slot, (uint8_t *)( &slot_number ), sizeof( slot_number ) ); + } + + if( *p_drv == NULL && method == PSA_KEY_CREATION_REGISTER ) + { + /* Key registration only makes sense with a secure element. */ + return( PSA_ERROR_INVALID_ARGUMENT ); + } +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + + return( PSA_SUCCESS ); +} + +/** Finalize the creation of a key once its key material has been set. + * + * This entails writing the key to persistent storage. + * + * If this function fails, call psa_fail_key_creation(). + * See the documentation of psa_start_key_creation() for the intended use + * of this function. + * + * If the finalization succeeds, the function unlocks the key slot (it was + * locked by psa_start_key_creation()) and the key slot cannot be accessed + * anymore as part of the key creation process. + * + * \param[in,out] slot Pointer to the slot with key material. + * \param[in] driver The secure element driver for the key, + * or NULL for a transparent key. + * \param[out] key On success, identifier of the key. Note that the + * key identifier is also stored in the key slot. + * + * \retval #PSA_SUCCESS + * The key was successfully created. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_ALREADY_EXISTS + * \retval #PSA_ERROR_DATA_INVALID + * \retval #PSA_ERROR_DATA_CORRUPT + * \retval #PSA_ERROR_STORAGE_FAILURE + * + * \return If this function fails, the key slot is an invalid state. + * You must call psa_fail_key_creation() to wipe and free the slot. + */ +static psa_status_t psa_finish_key_creation( + psa_key_slot_t *slot, + psa_se_drv_table_entry_t *driver, + mbedtls_svc_key_id_t *key) +{ + psa_status_t status = PSA_SUCCESS; + (void) slot; + (void) driver; + +#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) + if( ! PSA_KEY_LIFETIME_IS_VOLATILE( slot->attr.lifetime ) ) + { +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + if( driver != NULL ) + { + psa_se_key_data_storage_t data; + psa_key_slot_number_t slot_number = + psa_key_slot_get_slot_number( slot ) ; + +#if defined(static_assert) + static_assert( sizeof( slot_number ) == + sizeof( data.slot_number ), + "Slot number size does not match psa_se_key_data_storage_t" ); +#endif + memcpy( &data.slot_number, &slot_number, sizeof( slot_number ) ); + status = psa_save_persistent_key( &slot->attr, + (uint8_t*) &data, + sizeof( data ) ); + } + else +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + { + /* Key material is saved in export representation in the slot, so + * just pass the slot buffer for storage. */ + status = psa_save_persistent_key( &slot->attr, + slot->key.data, + slot->key.bytes ); + } + } +#endif /* defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) */ + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + /* Finish the transaction for a key creation. This does not + * happen when registering an existing key. Detect this case + * by checking whether a transaction is in progress (actual + * creation of a persistent key in a secure element requires a transaction, + * but registration or volatile key creation doesn't use one). */ + if( driver != NULL && + psa_crypto_transaction.unknown.type == PSA_CRYPTO_TRANSACTION_CREATE_KEY ) + { + status = psa_save_se_persistent_data( driver ); + if( status != PSA_SUCCESS ) + { + psa_destroy_persistent_key( slot->attr.id ); + return( status ); + } + status = psa_crypto_stop_transaction( ); + } +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + + if( status == PSA_SUCCESS ) + { + *key = slot->attr.id; + status = psa_unlock_key_slot( slot ); + if( status != PSA_SUCCESS ) + *key = MBEDTLS_SVC_KEY_ID_INIT; + } + + return( status ); +} + +/** Abort the creation of a key. + * + * You may call this function after calling psa_start_key_creation(), + * or after psa_finish_key_creation() fails. In other circumstances, this + * function may not clean up persistent storage. + * See the documentation of psa_start_key_creation() for the intended use + * of this function. + * + * \param[in,out] slot Pointer to the slot with key material. + * \param[in] driver The secure element driver for the key, + * or NULL for a transparent key. + */ +static void psa_fail_key_creation( psa_key_slot_t *slot, + psa_se_drv_table_entry_t *driver ) +{ + (void) driver; + + if( slot == NULL ) + return; + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + /* TODO: If the key has already been created in the secure + * element, and the failure happened later (when saving metadata + * to internal storage), we need to destroy the key in the secure + * element. + * https://github.com/ARMmbed/mbed-crypto/issues/217 + */ + + /* Abort the ongoing transaction if any (there may not be one if + * the creation process failed before starting one, or if the + * key creation is a registration of a key in a secure element). + * Earlier functions must already have done what it takes to undo any + * partial creation. All that's left is to update the transaction data + * itself. */ + (void) psa_crypto_stop_transaction( ); +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + + psa_wipe_key_slot( slot ); +} + +/** Validate optional attributes during key creation. + * + * Some key attributes are optional during key creation. If they are + * specified in the attributes structure, check that they are consistent + * with the data in the slot. + * + * This function should be called near the end of key creation, after + * the slot in memory is fully populated but before saving persistent data. + */ +static psa_status_t psa_validate_optional_attributes( + const psa_key_slot_t *slot, + const psa_key_attributes_t *attributes ) +{ + if( attributes->core.type != 0 ) + { + if( attributes->core.type != slot->attr.type ) + return( PSA_ERROR_INVALID_ARGUMENT ); + } + + if( attributes->domain_parameters_size != 0 ) + { +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) || \ + defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY) + if( PSA_KEY_TYPE_IS_RSA( slot->attr.type ) ) + { + mbedtls_rsa_context *rsa = NULL; + mbedtls_mpi actual, required; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + psa_status_t status = mbedtls_psa_rsa_load_representation( + slot->attr.type, + slot->key.data, + slot->key.bytes, + &rsa ); + if( status != PSA_SUCCESS ) + return( status ); + + mbedtls_mpi_init( &actual ); + mbedtls_mpi_init( &required ); + ret = mbedtls_rsa_export( rsa, + NULL, NULL, NULL, NULL, &actual ); + mbedtls_rsa_free( rsa ); + mbedtls_free( rsa ); + if( ret != 0 ) + goto rsa_exit; + ret = mbedtls_mpi_read_binary( &required, + attributes->domain_parameters, + attributes->domain_parameters_size ); + if( ret != 0 ) + goto rsa_exit; + if( mbedtls_mpi_cmp_mpi( &actual, &required ) != 0 ) + ret = MBEDTLS_ERR_RSA_BAD_INPUT_DATA; + rsa_exit: + mbedtls_mpi_free( &actual ); + mbedtls_mpi_free( &required ); + if( ret != 0) + return( mbedtls_to_psa_error( ret ) ); + } + else +#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) || + * defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY) */ + { + return( PSA_ERROR_INVALID_ARGUMENT ); + } + } + + if( attributes->core.bits != 0 ) + { + if( attributes->core.bits != slot->attr.bits ) + return( PSA_ERROR_INVALID_ARGUMENT ); + } + + return( PSA_SUCCESS ); +} + +psa_status_t psa_import_key( const psa_key_attributes_t *attributes, + const uint8_t *data, + size_t data_length, + mbedtls_svc_key_id_t *key ) +{ + psa_status_t status; + psa_key_slot_t *slot = NULL; + psa_se_drv_table_entry_t *driver = NULL; + size_t bits; + + *key = MBEDTLS_SVC_KEY_ID_INIT; + + /* Reject zero-length symmetric keys (including raw data key objects). + * This also rejects any key which might be encoded as an empty string, + * which is never valid. */ + if( data_length == 0 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + status = psa_start_key_creation( PSA_KEY_CREATION_IMPORT, attributes, + &slot, &driver ); + if( status != PSA_SUCCESS ) + goto exit; + + /* In the case of a transparent key or an opaque key stored in local + * storage (thus not in the case of generating a key in a secure element + * or cryptoprocessor with storage), we have to allocate a buffer to + * hold the generated key material. */ + if( slot->key.data == NULL ) + { + status = psa_allocate_buffer_to_slot( slot, data_length ); + if( status != PSA_SUCCESS ) + goto exit; + } + + bits = slot->attr.bits; + status = psa_driver_wrapper_import_key( attributes, + data, data_length, + slot->key.data, + slot->key.bytes, + &slot->key.bytes, &bits ); + if( status != PSA_SUCCESS ) + goto exit; + + if( slot->attr.bits == 0 ) + slot->attr.bits = (psa_key_bits_t) bits; + else if( bits != slot->attr.bits ) + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + status = psa_validate_optional_attributes( slot, attributes ); + if( status != PSA_SUCCESS ) + goto exit; + + status = psa_finish_key_creation( slot, driver, key ); +exit: + if( status != PSA_SUCCESS ) + psa_fail_key_creation( slot, driver ); + + return( status ); +} + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) +psa_status_t mbedtls_psa_register_se_key( + const psa_key_attributes_t *attributes ) +{ + psa_status_t status; + psa_key_slot_t *slot = NULL; + psa_se_drv_table_entry_t *driver = NULL; + mbedtls_svc_key_id_t key = MBEDTLS_SVC_KEY_ID_INIT; + + /* Leaving attributes unspecified is not currently supported. + * It could make sense to query the key type and size from the + * secure element, but not all secure elements support this + * and the driver HAL doesn't currently support it. */ + if( psa_get_key_type( attributes ) == PSA_KEY_TYPE_NONE ) + return( PSA_ERROR_NOT_SUPPORTED ); + if( psa_get_key_bits( attributes ) == 0 ) + return( PSA_ERROR_NOT_SUPPORTED ); + + status = psa_start_key_creation( PSA_KEY_CREATION_REGISTER, attributes, + &slot, &driver ); + if( status != PSA_SUCCESS ) + goto exit; + + status = psa_finish_key_creation( slot, driver, &key ); + +exit: + if( status != PSA_SUCCESS ) + psa_fail_key_creation( slot, driver ); + + /* Registration doesn't keep the key in RAM. */ + psa_close_key( key ); + return( status ); +} +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + +static psa_status_t psa_copy_key_material( const psa_key_slot_t *source, + psa_key_slot_t *target ) +{ + psa_status_t status = psa_copy_key_material_into_slot( target, + source->key.data, + source->key.bytes ); + if( status != PSA_SUCCESS ) + return( status ); + + target->attr.type = source->attr.type; + target->attr.bits = source->attr.bits; + + return( PSA_SUCCESS ); +} + +psa_status_t psa_copy_key( mbedtls_svc_key_id_t source_key, + const psa_key_attributes_t *specified_attributes, + mbedtls_svc_key_id_t *target_key ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *source_slot = NULL; + psa_key_slot_t *target_slot = NULL; + psa_key_attributes_t actual_attributes = *specified_attributes; + psa_se_drv_table_entry_t *driver = NULL; + + *target_key = MBEDTLS_SVC_KEY_ID_INIT; + + status = psa_get_and_lock_transparent_key_slot_with_policy( + source_key, &source_slot, PSA_KEY_USAGE_COPY, 0 ); + if( status != PSA_SUCCESS ) + goto exit; + + status = psa_validate_optional_attributes( source_slot, + specified_attributes ); + if( status != PSA_SUCCESS ) + goto exit; + + status = psa_restrict_key_policy( source_slot->attr.type, + &actual_attributes.core.policy, + &source_slot->attr.policy ); + if( status != PSA_SUCCESS ) + goto exit; + + status = psa_start_key_creation( PSA_KEY_CREATION_COPY, &actual_attributes, + &target_slot, &driver ); + if( status != PSA_SUCCESS ) + goto exit; + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + if( driver != NULL ) + { + /* Copying to a secure element is not implemented yet. */ + status = PSA_ERROR_NOT_SUPPORTED; + goto exit; + } +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + + if( psa_key_lifetime_is_external( actual_attributes.core.lifetime ) ) + { + /* + * Copying through an opaque driver is not implemented yet, consider + * a lifetime with an external location as an invalid parameter for + * now. + */ + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + status = psa_copy_key_material( source_slot, target_slot ); + if( status != PSA_SUCCESS ) + goto exit; + + status = psa_finish_key_creation( target_slot, driver, target_key ); +exit: + if( status != PSA_SUCCESS ) + psa_fail_key_creation( target_slot, driver ); + + unlock_status = psa_unlock_key_slot( source_slot ); + + return( ( status == PSA_SUCCESS ) ? unlock_status : status ); +} + + + +/****************************************************************/ +/* Message digests */ +/****************************************************************/ + +psa_status_t psa_hash_abort( psa_hash_operation_t *operation ) +{ + /* Aborting a non-active operation is allowed */ + if( operation->id == 0 ) + return( PSA_SUCCESS ); + + psa_status_t status = psa_driver_wrapper_hash_abort( operation ); + operation->id = 0; + + return( status ); +} + +psa_status_t psa_hash_setup( psa_hash_operation_t *operation, + psa_algorithm_t alg ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + + /* A context must be freshly initialized before it can be set up. */ + if( operation->id != 0 ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + if( !PSA_ALG_IS_HASH( alg ) ) + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + /* Ensure all of the context is zeroized, since PSA_HASH_OPERATION_INIT only + * directly zeroes the int-sized dummy member of the context union. */ + memset( &operation->ctx, 0, sizeof( operation->ctx ) ); + + status = psa_driver_wrapper_hash_setup( operation, alg ); + +exit: + if( status != PSA_SUCCESS ) + psa_hash_abort( operation ); + + return status; +} + +psa_status_t psa_hash_update( psa_hash_operation_t *operation, + const uint8_t *input, + size_t input_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + + if( operation->id == 0 ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + /* Don't require hash implementations to behave correctly on a + * zero-length input, which may have an invalid pointer. */ + if( input_length == 0 ) + return( PSA_SUCCESS ); + + status = psa_driver_wrapper_hash_update( operation, input, input_length ); + +exit: + if( status != PSA_SUCCESS ) + psa_hash_abort( operation ); + + return( status ); +} + +psa_status_t psa_hash_finish( psa_hash_operation_t *operation, + uint8_t *hash, + size_t hash_size, + size_t *hash_length ) +{ + *hash_length = 0; + if( operation->id == 0 ) + return( PSA_ERROR_BAD_STATE ); + + psa_status_t status = psa_driver_wrapper_hash_finish( + operation, hash, hash_size, hash_length ); + psa_hash_abort( operation ); + return( status ); +} + +psa_status_t psa_hash_verify( psa_hash_operation_t *operation, + const uint8_t *hash, + size_t hash_length ) +{ + uint8_t actual_hash[PSA_HASH_MAX_SIZE]; + size_t actual_hash_length; + psa_status_t status = psa_hash_finish( + operation, + actual_hash, sizeof( actual_hash ), + &actual_hash_length ); + + if( status != PSA_SUCCESS ) + goto exit; + + if( actual_hash_length != hash_length ) + { + status = PSA_ERROR_INVALID_SIGNATURE; + goto exit; + } + + if( mbedtls_psa_safer_memcmp( hash, actual_hash, actual_hash_length ) != 0 ) + status = PSA_ERROR_INVALID_SIGNATURE; + +exit: + mbedtls_platform_zeroize( actual_hash, sizeof( actual_hash ) ); + if( status != PSA_SUCCESS ) + psa_hash_abort(operation); + + return( status ); +} + +psa_status_t psa_hash_compute( psa_algorithm_t alg, + const uint8_t *input, size_t input_length, + uint8_t *hash, size_t hash_size, + size_t *hash_length ) +{ + *hash_length = 0; + if( !PSA_ALG_IS_HASH( alg ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + return( psa_driver_wrapper_hash_compute( alg, input, input_length, + hash, hash_size, hash_length ) ); +} + +psa_status_t psa_hash_compare( psa_algorithm_t alg, + const uint8_t *input, size_t input_length, + const uint8_t *hash, size_t hash_length ) +{ + uint8_t actual_hash[PSA_HASH_MAX_SIZE]; + size_t actual_hash_length; + + if( !PSA_ALG_IS_HASH( alg ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + psa_status_t status = psa_driver_wrapper_hash_compute( + alg, input, input_length, + actual_hash, sizeof(actual_hash), + &actual_hash_length ); + if( status != PSA_SUCCESS ) + goto exit; + if( actual_hash_length != hash_length ) + { + status = PSA_ERROR_INVALID_SIGNATURE; + goto exit; + } + if( mbedtls_psa_safer_memcmp( hash, actual_hash, actual_hash_length ) != 0 ) + status = PSA_ERROR_INVALID_SIGNATURE; + +exit: + mbedtls_platform_zeroize( actual_hash, sizeof( actual_hash ) ); + return( status ); +} + +psa_status_t psa_hash_clone( const psa_hash_operation_t *source_operation, + psa_hash_operation_t *target_operation ) +{ + if( source_operation->id == 0 || + target_operation->id != 0 ) + { + return( PSA_ERROR_BAD_STATE ); + } + + psa_status_t status = psa_driver_wrapper_hash_clone( source_operation, + target_operation ); + if( status != PSA_SUCCESS ) + psa_hash_abort( target_operation ); + + return( status ); +} + + +/****************************************************************/ +/* MAC */ +/****************************************************************/ + +psa_status_t psa_mac_abort( psa_mac_operation_t *operation ) +{ + /* Aborting a non-active operation is allowed */ + if( operation->id == 0 ) + return( PSA_SUCCESS ); + + psa_status_t status = psa_driver_wrapper_mac_abort( operation ); + operation->mac_size = 0; + operation->is_sign = 0; + operation->id = 0; + + return( status ); +} + +static psa_status_t psa_mac_finalize_alg_and_key_validation( + psa_algorithm_t alg, + const psa_key_attributes_t *attributes, + uint8_t *mac_size ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_type_t key_type = psa_get_key_type( attributes ); + size_t key_bits = psa_get_key_bits( attributes ); + + if( ! PSA_ALG_IS_MAC( alg ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + /* Validate the combination of key type and algorithm */ + status = psa_mac_key_can_do( alg, key_type ); + if( status != PSA_SUCCESS ) + return( status ); + + /* Get the output length for the algorithm and key combination */ + *mac_size = PSA_MAC_LENGTH( key_type, key_bits, alg ); + + if( *mac_size < 4 ) + { + /* A very short MAC is too short for security since it can be + * brute-forced. Ancient protocols with 32-bit MACs do exist, + * so we make this our minimum, even though 32 bits is still + * too small for security. */ + return( PSA_ERROR_NOT_SUPPORTED ); + } + + if( *mac_size > PSA_MAC_LENGTH( key_type, key_bits, + PSA_ALG_FULL_LENGTH_MAC( alg ) ) ) + { + /* It's impossible to "truncate" to a larger length than the full length + * of the algorithm. */ + return( PSA_ERROR_INVALID_ARGUMENT ); + } + + return( PSA_SUCCESS ); +} + +static psa_status_t psa_mac_setup( psa_mac_operation_t *operation, + mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + int is_sign ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot = NULL; + + /* A context must be freshly initialized before it can be set up. */ + if( operation->id != 0 ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + status = psa_get_and_lock_key_slot_with_policy( + key, + &slot, + is_sign ? PSA_KEY_USAGE_SIGN_MESSAGE : PSA_KEY_USAGE_VERIFY_MESSAGE, + alg ); + if( status != PSA_SUCCESS ) + goto exit; + + psa_key_attributes_t attributes = { + .core = slot->attr + }; + + status = psa_mac_finalize_alg_and_key_validation( alg, &attributes, + &operation->mac_size ); + if( status != PSA_SUCCESS ) + goto exit; + + operation->is_sign = is_sign; + /* Dispatch the MAC setup call with validated input */ + if( is_sign ) + { + status = psa_driver_wrapper_mac_sign_setup( operation, + &attributes, + slot->key.data, + slot->key.bytes, + alg ); + } + else + { + status = psa_driver_wrapper_mac_verify_setup( operation, + &attributes, + slot->key.data, + slot->key.bytes, + alg ); + } + +exit: + if( status != PSA_SUCCESS ) + psa_mac_abort( operation ); + + unlock_status = psa_unlock_key_slot( slot ); + + return( ( status == PSA_SUCCESS ) ? unlock_status : status ); +} + +psa_status_t psa_mac_sign_setup( psa_mac_operation_t *operation, + mbedtls_svc_key_id_t key, + psa_algorithm_t alg ) +{ + return( psa_mac_setup( operation, key, alg, 1 ) ); +} + +psa_status_t psa_mac_verify_setup( psa_mac_operation_t *operation, + mbedtls_svc_key_id_t key, + psa_algorithm_t alg ) +{ + return( psa_mac_setup( operation, key, alg, 0 ) ); +} + +psa_status_t psa_mac_update( psa_mac_operation_t *operation, + const uint8_t *input, + size_t input_length ) +{ + if( operation->id == 0 ) + return( PSA_ERROR_BAD_STATE ); + + /* Don't require hash implementations to behave correctly on a + * zero-length input, which may have an invalid pointer. */ + if( input_length == 0 ) + return( PSA_SUCCESS ); + + psa_status_t status = psa_driver_wrapper_mac_update( operation, + input, input_length ); + if( status != PSA_SUCCESS ) + psa_mac_abort( operation ); + + return( status ); +} + +psa_status_t psa_mac_sign_finish( psa_mac_operation_t *operation, + uint8_t *mac, + size_t mac_size, + size_t *mac_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t abort_status = PSA_ERROR_CORRUPTION_DETECTED; + + if( operation->id == 0 ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + if( ! operation->is_sign ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + /* Sanity check. This will guarantee that mac_size != 0 (and so mac != NULL) + * once all the error checks are done. */ + if( operation->mac_size == 0 ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + if( mac_size < operation->mac_size ) + { + status = PSA_ERROR_BUFFER_TOO_SMALL; + goto exit; + } + + status = psa_driver_wrapper_mac_sign_finish( operation, + mac, operation->mac_size, + mac_length ); + +exit: + /* In case of success, set the potential excess room in the output buffer + * to an invalid value, to avoid potentially leaking a longer MAC. + * In case of error, set the output length and content to a safe default, + * such that in case the caller misses an error check, the output would be + * an unachievable MAC. + */ + if( status != PSA_SUCCESS ) + { + *mac_length = mac_size; + operation->mac_size = 0; + } + + if( mac_size > operation->mac_size ) + memset( &mac[operation->mac_size], '!', + mac_size - operation->mac_size ); + + abort_status = psa_mac_abort( operation ); + + return( status == PSA_SUCCESS ? abort_status : status ); +} + +psa_status_t psa_mac_verify_finish( psa_mac_operation_t *operation, + const uint8_t *mac, + size_t mac_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t abort_status = PSA_ERROR_CORRUPTION_DETECTED; + + if( operation->id == 0 ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + if( operation->is_sign ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + if( operation->mac_size != mac_length ) + { + status = PSA_ERROR_INVALID_SIGNATURE; + goto exit; + } + + status = psa_driver_wrapper_mac_verify_finish( operation, + mac, mac_length ); + +exit: + abort_status = psa_mac_abort( operation ); + + return( status == PSA_SUCCESS ? abort_status : status ); +} + +static psa_status_t psa_mac_compute_internal( mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *mac, + size_t mac_size, + size_t *mac_length, + int is_sign ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot; + uint8_t operation_mac_size = 0; + + status = psa_get_and_lock_key_slot_with_policy( + key, + &slot, + is_sign ? PSA_KEY_USAGE_SIGN_MESSAGE : PSA_KEY_USAGE_VERIFY_MESSAGE, + alg ); + if( status != PSA_SUCCESS ) + goto exit; + + psa_key_attributes_t attributes = { + .core = slot->attr + }; + + status = psa_mac_finalize_alg_and_key_validation( alg, &attributes, + &operation_mac_size ); + if( status != PSA_SUCCESS ) + goto exit; + + if( mac_size < operation_mac_size ) + { + status = PSA_ERROR_BUFFER_TOO_SMALL; + goto exit; + } + + status = psa_driver_wrapper_mac_compute( + &attributes, + slot->key.data, slot->key.bytes, + alg, + input, input_length, + mac, operation_mac_size, mac_length ); + +exit: + /* In case of success, set the potential excess room in the output buffer + * to an invalid value, to avoid potentially leaking a longer MAC. + * In case of error, set the output length and content to a safe default, + * such that in case the caller misses an error check, the output would be + * an unachievable MAC. + */ + if( status != PSA_SUCCESS ) + { + *mac_length = mac_size; + operation_mac_size = 0; + } + if( mac_size > operation_mac_size ) + memset( &mac[operation_mac_size], '!', mac_size - operation_mac_size ); + + unlock_status = psa_unlock_key_slot( slot ); + + return( ( status == PSA_SUCCESS ) ? unlock_status : status ); +} + +psa_status_t psa_mac_compute( mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *mac, + size_t mac_size, + size_t *mac_length) +{ + return( psa_mac_compute_internal( key, alg, + input, input_length, + mac, mac_size, mac_length, 1 ) ); +} + +psa_status_t psa_mac_verify( mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *mac, + size_t mac_length) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + uint8_t actual_mac[PSA_MAC_MAX_SIZE]; + size_t actual_mac_length; + + status = psa_mac_compute_internal( key, alg, + input, input_length, + actual_mac, sizeof( actual_mac ), + &actual_mac_length, 0 ); + if( status != PSA_SUCCESS ) + goto exit; + + if( mac_length != actual_mac_length ) + { + status = PSA_ERROR_INVALID_SIGNATURE; + goto exit; + } + if( mbedtls_psa_safer_memcmp( mac, actual_mac, actual_mac_length ) != 0 ) + { + status = PSA_ERROR_INVALID_SIGNATURE; + goto exit; + } + +exit: + mbedtls_platform_zeroize( actual_mac, sizeof( actual_mac ) ); + + return ( status ); +} + +/****************************************************************/ +/* Asymmetric cryptography */ +/****************************************************************/ + +static psa_status_t psa_sign_verify_check_alg( int input_is_message, + psa_algorithm_t alg ) +{ + if( input_is_message ) + { + if( ! PSA_ALG_IS_SIGN_MESSAGE( alg ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + if ( PSA_ALG_IS_SIGN_HASH( alg ) ) + { + if( ! PSA_ALG_IS_HASH( PSA_ALG_SIGN_GET_HASH( alg ) ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + } + } + else + { + if( ! PSA_ALG_IS_SIGN_HASH( alg ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + } + + return( PSA_SUCCESS ); +} + +static psa_status_t psa_sign_internal( mbedtls_svc_key_id_t key, + int input_is_message, + psa_algorithm_t alg, + const uint8_t * input, + size_t input_length, + uint8_t * signature, + size_t signature_size, + size_t * signature_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot; + + *signature_length = 0; + + status = psa_sign_verify_check_alg( input_is_message, alg ); + if( status != PSA_SUCCESS ) + return status; + + /* Immediately reject a zero-length signature buffer. This guarantees + * that signature must be a valid pointer. (On the other hand, the input + * buffer can in principle be empty since it doesn't actually have + * to be a hash.) */ + if( signature_size == 0 ) + return( PSA_ERROR_BUFFER_TOO_SMALL ); + + status = psa_get_and_lock_key_slot_with_policy( + key, &slot, + input_is_message ? PSA_KEY_USAGE_SIGN_MESSAGE : + PSA_KEY_USAGE_SIGN_HASH, + alg ); + + if( status != PSA_SUCCESS ) + goto exit; + + if( ! PSA_KEY_TYPE_IS_KEY_PAIR( slot->attr.type ) ) + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + psa_key_attributes_t attributes = { + .core = slot->attr + }; + + if( input_is_message ) + { + status = psa_driver_wrapper_sign_message( + &attributes, slot->key.data, slot->key.bytes, + alg, input, input_length, + signature, signature_size, signature_length ); + } + else + { + + status = psa_driver_wrapper_sign_hash( + &attributes, slot->key.data, slot->key.bytes, + alg, input, input_length, + signature, signature_size, signature_length ); + } + + +exit: + /* Fill the unused part of the output buffer (the whole buffer on error, + * the trailing part on success) with something that isn't a valid signature + * (barring an attack on the signature and deliberately-crafted input), + * in case the caller doesn't check the return status properly. */ + if( status == PSA_SUCCESS ) + memset( signature + *signature_length, '!', + signature_size - *signature_length ); + else + memset( signature, '!', signature_size ); + /* If signature_size is 0 then we have nothing to do. We must not call + * memset because signature may be NULL in this case. */ + + unlock_status = psa_unlock_key_slot( slot ); + + return( ( status == PSA_SUCCESS ) ? unlock_status : status ); +} + +static psa_status_t psa_verify_internal( mbedtls_svc_key_id_t key, + int input_is_message, + psa_algorithm_t alg, + const uint8_t * input, + size_t input_length, + const uint8_t * signature, + size_t signature_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot; + + status = psa_sign_verify_check_alg( input_is_message, alg ); + if( status != PSA_SUCCESS ) + return status; + + status = psa_get_and_lock_key_slot_with_policy( + key, &slot, + input_is_message ? PSA_KEY_USAGE_VERIFY_MESSAGE : + PSA_KEY_USAGE_VERIFY_HASH, + alg ); + + if( status != PSA_SUCCESS ) + return( status ); + + psa_key_attributes_t attributes = { + .core = slot->attr + }; + + if( input_is_message ) + { + status = psa_driver_wrapper_verify_message( + &attributes, slot->key.data, slot->key.bytes, + alg, input, input_length, + signature, signature_length ); + } + else + { + status = psa_driver_wrapper_verify_hash( + &attributes, slot->key.data, slot->key.bytes, + alg, input, input_length, + signature, signature_length ); + } + + unlock_status = psa_unlock_key_slot( slot ); + + return( ( status == PSA_SUCCESS ) ? unlock_status : status ); + +} + +psa_status_t psa_sign_message_builtin( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *signature, + size_t signature_size, + size_t *signature_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + + if ( PSA_ALG_IS_SIGN_HASH( alg ) ) + { + size_t hash_length; + uint8_t hash[PSA_HASH_MAX_SIZE]; + + status = psa_driver_wrapper_hash_compute( + PSA_ALG_SIGN_GET_HASH( alg ), + input, input_length, + hash, sizeof( hash ), &hash_length ); + + if( status != PSA_SUCCESS ) + return status; + + return psa_driver_wrapper_sign_hash( + attributes, key_buffer, key_buffer_size, + alg, hash, hash_length, + signature, signature_size, signature_length ); + } + + return( PSA_ERROR_NOT_SUPPORTED ); +} + +psa_status_t psa_sign_message( mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t * input, + size_t input_length, + uint8_t * signature, + size_t signature_size, + size_t * signature_length ) +{ + return psa_sign_internal( + key, 1, alg, input, input_length, + signature, signature_size, signature_length ); +} + +psa_status_t psa_verify_message_builtin( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *signature, + size_t signature_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + + if ( PSA_ALG_IS_SIGN_HASH( alg ) ) + { + size_t hash_length; + uint8_t hash[PSA_HASH_MAX_SIZE]; + + status = psa_driver_wrapper_hash_compute( + PSA_ALG_SIGN_GET_HASH( alg ), + input, input_length, + hash, sizeof( hash ), &hash_length ); + + if( status != PSA_SUCCESS ) + return status; + + return psa_driver_wrapper_verify_hash( + attributes, key_buffer, key_buffer_size, + alg, hash, hash_length, + signature, signature_length ); + } + + return( PSA_ERROR_NOT_SUPPORTED ); +} + +psa_status_t psa_verify_message( mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t * input, + size_t input_length, + const uint8_t * signature, + size_t signature_length ) +{ + return psa_verify_internal( + key, 1, alg, input, input_length, + signature, signature_length ); +} + +psa_status_t psa_sign_hash_builtin( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + uint8_t *signature, size_t signature_size, size_t *signature_length ) +{ + if( attributes->core.type == PSA_KEY_TYPE_RSA_KEY_PAIR ) + { + if( PSA_ALG_IS_RSA_PKCS1V15_SIGN( alg ) || + PSA_ALG_IS_RSA_PSS( alg) ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS) + return( mbedtls_psa_rsa_sign_hash( + attributes, + key_buffer, key_buffer_size, + alg, hash, hash_length, + signature, signature_size, signature_length ) ); +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS) */ + } + else + { + return( PSA_ERROR_INVALID_ARGUMENT ); + } + } + else if( PSA_KEY_TYPE_IS_ECC( attributes->core.type ) ) + { + if( PSA_ALG_IS_ECDSA( alg ) ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) + return( mbedtls_psa_ecdsa_sign_hash( + attributes, + key_buffer, key_buffer_size, + alg, hash, hash_length, + signature, signature_size, signature_length ) ); +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) */ + } + else + { + return( PSA_ERROR_INVALID_ARGUMENT ); + } + } + + (void)key_buffer; + (void)key_buffer_size; + (void)hash; + (void)hash_length; + (void)signature; + (void)signature_size; + (void)signature_length; + + return( PSA_ERROR_NOT_SUPPORTED ); +} + +psa_status_t psa_sign_hash( mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + uint8_t *signature, + size_t signature_size, + size_t *signature_length ) +{ + return psa_sign_internal( + key, 0, alg, hash, hash_length, + signature, signature_size, signature_length ); +} + +psa_status_t psa_verify_hash_builtin( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + const uint8_t *signature, size_t signature_length ) +{ + if( PSA_KEY_TYPE_IS_RSA( attributes->core.type ) ) + { + if( PSA_ALG_IS_RSA_PKCS1V15_SIGN( alg ) || + PSA_ALG_IS_RSA_PSS( alg) ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS) + return( mbedtls_psa_rsa_verify_hash( + attributes, + key_buffer, key_buffer_size, + alg, hash, hash_length, + signature, signature_length ) ); +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS) */ + } + else + { + return( PSA_ERROR_INVALID_ARGUMENT ); + } + } + else if( PSA_KEY_TYPE_IS_ECC( attributes->core.type ) ) + { + if( PSA_ALG_IS_ECDSA( alg ) ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) + return( mbedtls_psa_ecdsa_verify_hash( + attributes, + key_buffer, key_buffer_size, + alg, hash, hash_length, + signature, signature_length ) ); +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) */ + } + else + { + return( PSA_ERROR_INVALID_ARGUMENT ); + } + } + + (void)key_buffer; + (void)key_buffer_size; + (void)hash; + (void)hash_length; + (void)signature; + (void)signature_length; + + return( PSA_ERROR_NOT_SUPPORTED ); +} + +psa_status_t psa_verify_hash( mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + const uint8_t *signature, + size_t signature_length ) +{ + return psa_verify_internal( + key, 0, alg, hash, hash_length, + signature, signature_length ); +} + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) +static void psa_rsa_oaep_set_padding_mode( psa_algorithm_t alg, + mbedtls_rsa_context *rsa ) +{ + psa_algorithm_t hash_alg = PSA_ALG_RSA_OAEP_GET_HASH( alg ); + const mbedtls_md_info_t *md_info = mbedtls_md_info_from_psa( hash_alg ); + mbedtls_md_type_t md_alg = mbedtls_md_get_type( md_info ); + mbedtls_rsa_set_padding( rsa, MBEDTLS_RSA_PKCS_V21, md_alg ); +} +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) */ + +psa_status_t psa_asymmetric_encrypt( mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *salt, + size_t salt_length, + uint8_t *output, + size_t output_size, + size_t *output_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot; + + (void) input; + (void) input_length; + (void) salt; + (void) output; + (void) output_size; + + *output_length = 0; + + if( ! PSA_ALG_IS_RSA_OAEP( alg ) && salt_length != 0 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + status = psa_get_and_lock_transparent_key_slot_with_policy( + key, &slot, PSA_KEY_USAGE_ENCRYPT, alg ); + if( status != PSA_SUCCESS ) + return( status ); + if( ! ( PSA_KEY_TYPE_IS_PUBLIC_KEY( slot->attr.type ) || + PSA_KEY_TYPE_IS_KEY_PAIR( slot->attr.type ) ) ) + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + if( PSA_KEY_TYPE_IS_RSA( slot->attr.type ) ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) + mbedtls_rsa_context *rsa = NULL; + status = mbedtls_psa_rsa_load_representation( slot->attr.type, + slot->key.data, + slot->key.bytes, + &rsa ); + if( status != PSA_SUCCESS ) + goto rsa_exit; + + if( output_size < mbedtls_rsa_get_len( rsa ) ) + { + status = PSA_ERROR_BUFFER_TOO_SMALL; + goto rsa_exit; + } +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) */ + if( alg == PSA_ALG_RSA_PKCS1V15_CRYPT ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT) + status = mbedtls_to_psa_error( + mbedtls_rsa_pkcs1_encrypt( rsa, + mbedtls_psa_get_random, + MBEDTLS_PSA_RANDOM_STATE, + MBEDTLS_RSA_PUBLIC, + input_length, + input, + output ) ); +#else + status = PSA_ERROR_NOT_SUPPORTED; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT */ + } + else + if( PSA_ALG_IS_RSA_OAEP( alg ) ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) + psa_rsa_oaep_set_padding_mode( alg, rsa ); + status = mbedtls_to_psa_error( + mbedtls_rsa_rsaes_oaep_encrypt( rsa, + mbedtls_psa_get_random, + MBEDTLS_PSA_RANDOM_STATE, + MBEDTLS_RSA_PUBLIC, + salt, salt_length, + input_length, + input, + output ) ); +#else + status = PSA_ERROR_NOT_SUPPORTED; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP */ + } + else + { + status = PSA_ERROR_INVALID_ARGUMENT; + } +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) +rsa_exit: + if( status == PSA_SUCCESS ) + *output_length = mbedtls_rsa_get_len( rsa ); + + mbedtls_rsa_free( rsa ); + mbedtls_free( rsa ); +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) */ + } + else + { + status = PSA_ERROR_NOT_SUPPORTED; + } + +exit: + unlock_status = psa_unlock_key_slot( slot ); + + return( ( status == PSA_SUCCESS ) ? unlock_status : status ); +} + +psa_status_t psa_asymmetric_decrypt( mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *salt, + size_t salt_length, + uint8_t *output, + size_t output_size, + size_t *output_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot; + + (void) input; + (void) input_length; + (void) salt; + (void) output; + (void) output_size; + + *output_length = 0; + + if( ! PSA_ALG_IS_RSA_OAEP( alg ) && salt_length != 0 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + status = psa_get_and_lock_transparent_key_slot_with_policy( + key, &slot, PSA_KEY_USAGE_DECRYPT, alg ); + if( status != PSA_SUCCESS ) + return( status ); + if( ! PSA_KEY_TYPE_IS_KEY_PAIR( slot->attr.type ) ) + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + if( slot->attr.type == PSA_KEY_TYPE_RSA_KEY_PAIR ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) + mbedtls_rsa_context *rsa = NULL; + status = mbedtls_psa_rsa_load_representation( slot->attr.type, + slot->key.data, + slot->key.bytes, + &rsa ); + if( status != PSA_SUCCESS ) + goto exit; + + if( input_length != mbedtls_rsa_get_len( rsa ) ) + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto rsa_exit; + } +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) */ + + if( alg == PSA_ALG_RSA_PKCS1V15_CRYPT ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT) + status = mbedtls_to_psa_error( + mbedtls_rsa_pkcs1_decrypt( rsa, + mbedtls_psa_get_random, + MBEDTLS_PSA_RANDOM_STATE, + MBEDTLS_RSA_PRIVATE, + output_length, + input, + output, + output_size ) ); +#else + status = PSA_ERROR_NOT_SUPPORTED; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT */ + } + else + if( PSA_ALG_IS_RSA_OAEP( alg ) ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) + psa_rsa_oaep_set_padding_mode( alg, rsa ); + status = mbedtls_to_psa_error( + mbedtls_rsa_rsaes_oaep_decrypt( rsa, + mbedtls_psa_get_random, + MBEDTLS_PSA_RANDOM_STATE, + MBEDTLS_RSA_PRIVATE, + salt, salt_length, + output_length, + input, + output, + output_size ) ); +#else + status = PSA_ERROR_NOT_SUPPORTED; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP */ + } + else + { + status = PSA_ERROR_INVALID_ARGUMENT; + } + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) +rsa_exit: + mbedtls_rsa_free( rsa ); + mbedtls_free( rsa ); +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) */ + } + else + { + status = PSA_ERROR_NOT_SUPPORTED; + } + +exit: + unlock_status = psa_unlock_key_slot( slot ); + + return( ( status == PSA_SUCCESS ) ? unlock_status : status ); +} + + + +/****************************************************************/ +/* Symmetric cryptography */ +/****************************************************************/ + +static psa_status_t psa_cipher_setup( psa_cipher_operation_t *operation, + mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + mbedtls_operation_t cipher_operation ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot = NULL; + psa_key_usage_t usage = ( cipher_operation == MBEDTLS_ENCRYPT ? + PSA_KEY_USAGE_ENCRYPT : + PSA_KEY_USAGE_DECRYPT ); + + /* A context must be freshly initialized before it can be set up. */ + if( operation->id != 0 ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + if( ! PSA_ALG_IS_CIPHER( alg ) ) + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + status = psa_get_and_lock_key_slot_with_policy( key, &slot, usage, alg ); + if( status != PSA_SUCCESS ) + goto exit; + + /* Initialize the operation struct members, except for id. The id member + * is used to indicate to psa_cipher_abort that there are resources to free, + * so we only set it (in the driver wrapper) after resources have been + * allocated/initialized. */ + operation->iv_set = 0; + if( alg == PSA_ALG_ECB_NO_PADDING ) + operation->iv_required = 0; + else + operation->iv_required = 1; + operation->default_iv_length = PSA_CIPHER_IV_LENGTH( slot->attr.type, alg ); + + psa_key_attributes_t attributes = { + .core = slot->attr + }; + + /* Try doing the operation through a driver before using software fallback. */ + if( cipher_operation == MBEDTLS_ENCRYPT ) + status = psa_driver_wrapper_cipher_encrypt_setup( operation, + &attributes, + slot->key.data, + slot->key.bytes, + alg ); + else + status = psa_driver_wrapper_cipher_decrypt_setup( operation, + &attributes, + slot->key.data, + slot->key.bytes, + alg ); + +exit: + if( status != PSA_SUCCESS ) + psa_cipher_abort( operation ); + + unlock_status = psa_unlock_key_slot( slot ); + + return( ( status == PSA_SUCCESS ) ? unlock_status : status ); +} + +psa_status_t psa_cipher_encrypt_setup( psa_cipher_operation_t *operation, + mbedtls_svc_key_id_t key, + psa_algorithm_t alg ) +{ + return( psa_cipher_setup( operation, key, alg, MBEDTLS_ENCRYPT ) ); +} + +psa_status_t psa_cipher_decrypt_setup( psa_cipher_operation_t *operation, + mbedtls_svc_key_id_t key, + psa_algorithm_t alg ) +{ + return( psa_cipher_setup( operation, key, alg, MBEDTLS_DECRYPT ) ); +} + +psa_status_t psa_cipher_generate_iv( psa_cipher_operation_t *operation, + uint8_t *iv, + size_t iv_size, + size_t *iv_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + uint8_t local_iv[PSA_CIPHER_IV_MAX_SIZE]; + size_t default_iv_length; + + if( operation->id == 0 ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + if( operation->iv_set || ! operation->iv_required ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + default_iv_length = operation->default_iv_length; + if( iv_size < default_iv_length ) + { + status = PSA_ERROR_BUFFER_TOO_SMALL; + goto exit; + } + + if( default_iv_length > PSA_CIPHER_IV_MAX_SIZE ) + { + status = PSA_ERROR_GENERIC_ERROR; + goto exit; + } + + status = psa_generate_random( local_iv, default_iv_length ); + if( status != PSA_SUCCESS ) + goto exit; + + status = psa_driver_wrapper_cipher_set_iv( operation, + local_iv, default_iv_length ); + +exit: + if( status == PSA_SUCCESS ) + { + memcpy( iv, local_iv, default_iv_length ); + *iv_length = default_iv_length; + operation->iv_set = 1; + } + else + { + *iv_length = 0; + psa_cipher_abort( operation ); + } + + return( status ); +} + +psa_status_t psa_cipher_set_iv( psa_cipher_operation_t *operation, + const uint8_t *iv, + size_t iv_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + + if( operation->id == 0 ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + if( operation->iv_set || ! operation->iv_required ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + if( iv_length > PSA_CIPHER_IV_MAX_SIZE ) + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + status = psa_driver_wrapper_cipher_set_iv( operation, + iv, + iv_length ); + +exit: + if( status == PSA_SUCCESS ) + operation->iv_set = 1; + else + psa_cipher_abort( operation ); + return( status ); +} + +psa_status_t psa_cipher_update( psa_cipher_operation_t *operation, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + + if( operation->id == 0 ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + if( operation->iv_required && ! operation->iv_set ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + status = psa_driver_wrapper_cipher_update( operation, + input, + input_length, + output, + output_size, + output_length ); + +exit: + if( status != PSA_SUCCESS ) + psa_cipher_abort( operation ); + + return( status ); +} + +psa_status_t psa_cipher_finish( psa_cipher_operation_t *operation, + uint8_t *output, + size_t output_size, + size_t *output_length ) +{ + psa_status_t status = PSA_ERROR_GENERIC_ERROR; + + if( operation->id == 0 ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + if( operation->iv_required && ! operation->iv_set ) + { + status = PSA_ERROR_BAD_STATE; + goto exit; + } + + status = psa_driver_wrapper_cipher_finish( operation, + output, + output_size, + output_length ); + +exit: + if( status == PSA_SUCCESS ) + return( psa_cipher_abort( operation ) ); + else + { + *output_length = 0; + (void) psa_cipher_abort( operation ); + + return( status ); + } +} + +psa_status_t psa_cipher_abort( psa_cipher_operation_t *operation ) +{ + if( operation->id == 0 ) + { + /* The object has (apparently) been initialized but it is not (yet) + * in use. It's ok to call abort on such an object, and there's + * nothing to do. */ + return( PSA_SUCCESS ); + } + + psa_driver_wrapper_cipher_abort( operation ); + + operation->id = 0; + operation->iv_set = 0; + operation->iv_required = 0; + + return( PSA_SUCCESS ); +} + +psa_status_t psa_cipher_encrypt( mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot = NULL; + uint8_t local_iv[PSA_CIPHER_IV_MAX_SIZE]; + size_t default_iv_length = 0; + + if( ! PSA_ALG_IS_CIPHER( alg ) ) + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + status = psa_get_and_lock_key_slot_with_policy( key, &slot, + PSA_KEY_USAGE_ENCRYPT, + alg ); + if( status != PSA_SUCCESS ) + goto exit; + + psa_key_attributes_t attributes = { + .core = slot->attr + }; + + default_iv_length = PSA_CIPHER_IV_LENGTH( slot->attr.type, alg ); + if( default_iv_length > PSA_CIPHER_IV_MAX_SIZE ) + { + status = PSA_ERROR_GENERIC_ERROR; + goto exit; + } + + if( default_iv_length > 0 ) + { + if( output_size < default_iv_length ) + { + status = PSA_ERROR_BUFFER_TOO_SMALL; + goto exit; + } + + status = psa_generate_random( local_iv, default_iv_length ); + if( status != PSA_SUCCESS ) + goto exit; + } + + status = psa_driver_wrapper_cipher_encrypt( + &attributes, slot->key.data, slot->key.bytes, + alg, local_iv, default_iv_length, input, input_length, + output + default_iv_length, output_size - default_iv_length, + output_length ); + +exit: + unlock_status = psa_unlock_key_slot( slot ); + if( status == PSA_SUCCESS ) + status = unlock_status; + + if( status == PSA_SUCCESS ) + { + if( default_iv_length > 0 ) + memcpy( output, local_iv, default_iv_length ); + *output_length += default_iv_length; + } + else + *output_length = 0; + + return( status ); +} + +psa_status_t psa_cipher_decrypt( mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot = NULL; + + if( ! PSA_ALG_IS_CIPHER( alg ) ) + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + status = psa_get_and_lock_key_slot_with_policy( key, &slot, + PSA_KEY_USAGE_DECRYPT, + alg ); + if( status != PSA_SUCCESS ) + goto exit; + + psa_key_attributes_t attributes = { + .core = slot->attr + }; + + if( input_length < PSA_CIPHER_IV_LENGTH( slot->attr.type, alg ) ) + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + status = psa_driver_wrapper_cipher_decrypt( + &attributes, slot->key.data, slot->key.bytes, + alg, input, input_length, + output, output_size, output_length ); + +exit: + unlock_status = psa_unlock_key_slot( slot ); + if( status == PSA_SUCCESS ) + status = unlock_status; + + if( status != PSA_SUCCESS ) + *output_length = 0; + + return( status ); +} + + +/****************************************************************/ +/* AEAD */ +/****************************************************************/ + +psa_status_t psa_aead_encrypt( mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *plaintext, + size_t plaintext_length, + uint8_t *ciphertext, + size_t ciphertext_size, + size_t *ciphertext_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot; + + *ciphertext_length = 0; + + if( !PSA_ALG_IS_AEAD( alg ) || PSA_ALG_IS_WILDCARD( alg ) ) + return( PSA_ERROR_NOT_SUPPORTED ); + + status = psa_get_and_lock_key_slot_with_policy( + key, &slot, PSA_KEY_USAGE_ENCRYPT, alg ); + if( status != PSA_SUCCESS ) + return( status ); + + psa_key_attributes_t attributes = { + .core = slot->attr + }; + + status = psa_driver_wrapper_aead_encrypt( + &attributes, slot->key.data, slot->key.bytes, + alg, + nonce, nonce_length, + additional_data, additional_data_length, + plaintext, plaintext_length, + ciphertext, ciphertext_size, ciphertext_length ); + + if( status != PSA_SUCCESS && ciphertext_size != 0 ) + memset( ciphertext, 0, ciphertext_size ); + + psa_unlock_key_slot( slot ); + + return( status ); +} + +psa_status_t psa_aead_decrypt( mbedtls_svc_key_id_t key, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *ciphertext, + size_t ciphertext_length, + uint8_t *plaintext, + size_t plaintext_size, + size_t *plaintext_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot; + + *plaintext_length = 0; + + if( !PSA_ALG_IS_AEAD( alg ) || PSA_ALG_IS_WILDCARD( alg ) ) + return( PSA_ERROR_NOT_SUPPORTED ); + + status = psa_get_and_lock_key_slot_with_policy( + key, &slot, PSA_KEY_USAGE_DECRYPT, alg ); + if( status != PSA_SUCCESS ) + return( status ); + + psa_key_attributes_t attributes = { + .core = slot->attr + }; + + status = psa_driver_wrapper_aead_decrypt( + &attributes, slot->key.data, slot->key.bytes, + alg, + nonce, nonce_length, + additional_data, additional_data_length, + ciphertext, ciphertext_length, + plaintext, plaintext_size, plaintext_length ); + + if( status != PSA_SUCCESS && plaintext_size != 0 ) + memset( plaintext, 0, plaintext_size ); + + psa_unlock_key_slot( slot ); + + return( status ); +} + +/****************************************************************/ +/* Generators */ +/****************************************************************/ + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS) +#define AT_LEAST_ONE_BUILTIN_KDF +#endif /* At least one builtin KDF */ + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS) +static psa_status_t psa_key_derivation_start_hmac( + psa_mac_operation_t *operation, + psa_algorithm_t hash_alg, + const uint8_t *hmac_key, + size_t hmac_key_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + psa_set_key_type( &attributes, PSA_KEY_TYPE_HMAC ); + psa_set_key_bits( &attributes, PSA_BYTES_TO_BITS( hmac_key_length ) ); + psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN_HASH ); + + operation->is_sign = 1; + operation->mac_size = PSA_HASH_LENGTH( hash_alg ); + + status = psa_driver_wrapper_mac_sign_setup( operation, + &attributes, + hmac_key, hmac_key_length, + PSA_ALG_HMAC( hash_alg ) ); + + psa_reset_key_attributes( &attributes ); + return( status ); +} +#endif /* KDF algorithms reliant on HMAC */ + +#define HKDF_STATE_INIT 0 /* no input yet */ +#define HKDF_STATE_STARTED 1 /* got salt */ +#define HKDF_STATE_KEYED 2 /* got key */ +#define HKDF_STATE_OUTPUT 3 /* output started */ + +static psa_algorithm_t psa_key_derivation_get_kdf_alg( + const psa_key_derivation_operation_t *operation ) +{ + if ( PSA_ALG_IS_KEY_AGREEMENT( operation->alg ) ) + return( PSA_ALG_KEY_AGREEMENT_GET_KDF( operation->alg ) ); + else + return( operation->alg ); +} + +psa_status_t psa_key_derivation_abort( psa_key_derivation_operation_t *operation ) +{ + psa_status_t status = PSA_SUCCESS; + psa_algorithm_t kdf_alg = psa_key_derivation_get_kdf_alg( operation ); + if( kdf_alg == 0 ) + { + /* The object has (apparently) been initialized but it is not + * in use. It's ok to call abort on such an object, and there's + * nothing to do. */ + } + else +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF) + if( PSA_ALG_IS_HKDF( kdf_alg ) ) + { + mbedtls_free( operation->ctx.hkdf.info ); + status = psa_mac_abort( &operation->ctx.hkdf.hmac ); + } + else +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS) + if( PSA_ALG_IS_TLS12_PRF( kdf_alg ) || + /* TLS-1.2 PSK-to-MS KDF uses the same core as TLS-1.2 PRF */ + PSA_ALG_IS_TLS12_PSK_TO_MS( kdf_alg ) ) + { + if( operation->ctx.tls12_prf.secret != NULL ) + { + mbedtls_platform_zeroize( operation->ctx.tls12_prf.secret, + operation->ctx.tls12_prf.secret_length ); + mbedtls_free( operation->ctx.tls12_prf.secret ); + } + + if( operation->ctx.tls12_prf.seed != NULL ) + { + mbedtls_platform_zeroize( operation->ctx.tls12_prf.seed, + operation->ctx.tls12_prf.seed_length ); + mbedtls_free( operation->ctx.tls12_prf.seed ); + } + + if( operation->ctx.tls12_prf.label != NULL ) + { + mbedtls_platform_zeroize( operation->ctx.tls12_prf.label, + operation->ctx.tls12_prf.label_length ); + mbedtls_free( operation->ctx.tls12_prf.label ); + } + + status = PSA_SUCCESS; + + /* We leave the fields Ai and output_block to be erased safely by the + * mbedtls_platform_zeroize() in the end of this function. */ + } + else +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS) */ + { + status = PSA_ERROR_BAD_STATE; + } + mbedtls_platform_zeroize( operation, sizeof( *operation ) ); + return( status ); +} + +psa_status_t psa_key_derivation_get_capacity(const psa_key_derivation_operation_t *operation, + size_t *capacity) +{ + if( operation->alg == 0 ) + { + /* This is a blank key derivation operation. */ + return( PSA_ERROR_BAD_STATE ); + } + + *capacity = operation->capacity; + return( PSA_SUCCESS ); +} + +psa_status_t psa_key_derivation_set_capacity( psa_key_derivation_operation_t *operation, + size_t capacity ) +{ + if( operation->alg == 0 ) + return( PSA_ERROR_BAD_STATE ); + if( capacity > operation->capacity ) + return( PSA_ERROR_INVALID_ARGUMENT ); + operation->capacity = capacity; + return( PSA_SUCCESS ); +} + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF) +/* Read some bytes from an HKDF-based operation. This performs a chunk + * of the expand phase of the HKDF algorithm. */ +static psa_status_t psa_key_derivation_hkdf_read( psa_hkdf_key_derivation_t *hkdf, + psa_algorithm_t hash_alg, + uint8_t *output, + size_t output_length ) +{ + uint8_t hash_length = PSA_HASH_LENGTH( hash_alg ); + size_t hmac_output_length; + psa_status_t status; + + if( hkdf->state < HKDF_STATE_KEYED || ! hkdf->info_set ) + return( PSA_ERROR_BAD_STATE ); + hkdf->state = HKDF_STATE_OUTPUT; + + while( output_length != 0 ) + { + /* Copy what remains of the current block */ + uint8_t n = hash_length - hkdf->offset_in_block; + if( n > output_length ) + n = (uint8_t) output_length; + memcpy( output, hkdf->output_block + hkdf->offset_in_block, n ); + output += n; + output_length -= n; + hkdf->offset_in_block += n; + if( output_length == 0 ) + break; + /* We can't be wanting more output after block 0xff, otherwise + * the capacity check in psa_key_derivation_output_bytes() would have + * prevented this call. It could happen only if the operation + * object was corrupted or if this function is called directly + * inside the library. */ + if( hkdf->block_number == 0xff ) + return( PSA_ERROR_BAD_STATE ); + + /* We need a new block */ + ++hkdf->block_number; + hkdf->offset_in_block = 0; + + status = psa_key_derivation_start_hmac( &hkdf->hmac, + hash_alg, + hkdf->prk, + hash_length ); + if( status != PSA_SUCCESS ) + return( status ); + + if( hkdf->block_number != 1 ) + { + status = psa_mac_update( &hkdf->hmac, + hkdf->output_block, + hash_length ); + if( status != PSA_SUCCESS ) + return( status ); + } + status = psa_mac_update( &hkdf->hmac, + hkdf->info, + hkdf->info_length ); + if( status != PSA_SUCCESS ) + return( status ); + status = psa_mac_update( &hkdf->hmac, + &hkdf->block_number, 1 ); + if( status != PSA_SUCCESS ) + return( status ); + status = psa_mac_sign_finish( &hkdf->hmac, + hkdf->output_block, + sizeof( hkdf->output_block ), + &hmac_output_length ); + if( status != PSA_SUCCESS ) + return( status ); + } + + return( PSA_SUCCESS ); +} +#endif /* MBEDTLS_PSA_BUILTIN_ALG_HKDF */ + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS) +static psa_status_t psa_key_derivation_tls12_prf_generate_next_block( + psa_tls12_prf_key_derivation_t *tls12_prf, + psa_algorithm_t alg ) +{ + psa_algorithm_t hash_alg = PSA_ALG_HKDF_GET_HASH( alg ); + uint8_t hash_length = PSA_HASH_LENGTH( hash_alg ); + psa_mac_operation_t hmac = PSA_MAC_OPERATION_INIT; + size_t hmac_output_length; + psa_status_t status, cleanup_status; + + /* We can't be wanting more output after block 0xff, otherwise + * the capacity check in psa_key_derivation_output_bytes() would have + * prevented this call. It could happen only if the operation + * object was corrupted or if this function is called directly + * inside the library. */ + if( tls12_prf->block_number == 0xff ) + return( PSA_ERROR_CORRUPTION_DETECTED ); + + /* We need a new block */ + ++tls12_prf->block_number; + tls12_prf->left_in_block = hash_length; + + /* Recall the definition of the TLS-1.2-PRF from RFC 5246: + * + * PRF(secret, label, seed) = P_(secret, label + seed) + * + * P_hash(secret, seed) = HMAC_hash(secret, A(1) + seed) + + * HMAC_hash(secret, A(2) + seed) + + * HMAC_hash(secret, A(3) + seed) + ... + * + * A(0) = seed + * A(i) = HMAC_hash(secret, A(i-1)) + * + * The `psa_tls12_prf_key_derivation` structure saves the block + * `HMAC_hash(secret, A(i) + seed)` from which the output + * is currently extracted as `output_block` and where i is + * `block_number`. + */ + + status = psa_key_derivation_start_hmac( &hmac, + hash_alg, + tls12_prf->secret, + tls12_prf->secret_length ); + if( status != PSA_SUCCESS ) + goto cleanup; + + /* Calculate A(i) where i = tls12_prf->block_number. */ + if( tls12_prf->block_number == 1 ) + { + /* A(1) = HMAC_hash(secret, A(0)), where A(0) = seed. (The RFC overloads + * the variable seed and in this instance means it in the context of the + * P_hash function, where seed = label + seed.) */ + status = psa_mac_update( &hmac, + tls12_prf->label, + tls12_prf->label_length ); + if( status != PSA_SUCCESS ) + goto cleanup; + status = psa_mac_update( &hmac, + tls12_prf->seed, + tls12_prf->seed_length ); + if( status != PSA_SUCCESS ) + goto cleanup; + } + else + { + /* A(i) = HMAC_hash(secret, A(i-1)) */ + status = psa_mac_update( &hmac, tls12_prf->Ai, hash_length ); + if( status != PSA_SUCCESS ) + goto cleanup; + } + + status = psa_mac_sign_finish( &hmac, + tls12_prf->Ai, hash_length, + &hmac_output_length ); + if( hmac_output_length != hash_length ) + status = PSA_ERROR_CORRUPTION_DETECTED; + if( status != PSA_SUCCESS ) + goto cleanup; + + /* Calculate HMAC_hash(secret, A(i) + label + seed). */ + status = psa_key_derivation_start_hmac( &hmac, + hash_alg, + tls12_prf->secret, + tls12_prf->secret_length ); + if( status != PSA_SUCCESS ) + goto cleanup; + status = psa_mac_update( &hmac, tls12_prf->Ai, hash_length ); + if( status != PSA_SUCCESS ) + goto cleanup; + status = psa_mac_update( &hmac, tls12_prf->label, tls12_prf->label_length ); + if( status != PSA_SUCCESS ) + goto cleanup; + status = psa_mac_update( &hmac, tls12_prf->seed, tls12_prf->seed_length ); + if( status != PSA_SUCCESS ) + goto cleanup; + status = psa_mac_sign_finish( &hmac, + tls12_prf->output_block, hash_length, + &hmac_output_length ); + if( status != PSA_SUCCESS ) + goto cleanup; + + +cleanup: + cleanup_status = psa_mac_abort( &hmac ); + if( status == PSA_SUCCESS && cleanup_status != PSA_SUCCESS ) + status = cleanup_status; + + return( status ); +} + +static psa_status_t psa_key_derivation_tls12_prf_read( + psa_tls12_prf_key_derivation_t *tls12_prf, + psa_algorithm_t alg, + uint8_t *output, + size_t output_length ) +{ + psa_algorithm_t hash_alg = PSA_ALG_TLS12_PRF_GET_HASH( alg ); + uint8_t hash_length = PSA_HASH_LENGTH( hash_alg ); + psa_status_t status; + uint8_t offset, length; + + switch( tls12_prf->state ) + { + case PSA_TLS12_PRF_STATE_LABEL_SET: + tls12_prf->state = PSA_TLS12_PRF_STATE_OUTPUT; + break; + case PSA_TLS12_PRF_STATE_OUTPUT: + break; + default: + return( PSA_ERROR_BAD_STATE ); + } + + while( output_length != 0 ) + { + /* Check if we have fully processed the current block. */ + if( tls12_prf->left_in_block == 0 ) + { + status = psa_key_derivation_tls12_prf_generate_next_block( tls12_prf, + alg ); + if( status != PSA_SUCCESS ) + return( status ); + + continue; + } + + if( tls12_prf->left_in_block > output_length ) + length = (uint8_t) output_length; + else + length = tls12_prf->left_in_block; + + offset = hash_length - tls12_prf->left_in_block; + memcpy( output, tls12_prf->output_block + offset, length ); + output += length; + output_length -= length; + tls12_prf->left_in_block -= length; + } + + return( PSA_SUCCESS ); +} +#endif /* MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF || + * MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS */ + +psa_status_t psa_key_derivation_output_bytes( + psa_key_derivation_operation_t *operation, + uint8_t *output, + size_t output_length ) +{ + psa_status_t status; + psa_algorithm_t kdf_alg = psa_key_derivation_get_kdf_alg( operation ); + + if( operation->alg == 0 ) + { + /* This is a blank operation. */ + return( PSA_ERROR_BAD_STATE ); + } + + if( output_length > operation->capacity ) + { + operation->capacity = 0; + /* Go through the error path to wipe all confidential data now + * that the operation object is useless. */ + status = PSA_ERROR_INSUFFICIENT_DATA; + goto exit; + } + if( output_length == 0 && operation->capacity == 0 ) + { + /* Edge case: this is a finished operation, and 0 bytes + * were requested. The right error in this case could + * be either INSUFFICIENT_CAPACITY or BAD_STATE. Return + * INSUFFICIENT_CAPACITY, which is right for a finished + * operation, for consistency with the case when + * output_length > 0. */ + return( PSA_ERROR_INSUFFICIENT_DATA ); + } + operation->capacity -= output_length; + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF) + if( PSA_ALG_IS_HKDF( kdf_alg ) ) + { + psa_algorithm_t hash_alg = PSA_ALG_HKDF_GET_HASH( kdf_alg ); + status = psa_key_derivation_hkdf_read( &operation->ctx.hkdf, hash_alg, + output, output_length ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_HKDF */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS) + if( PSA_ALG_IS_TLS12_PRF( kdf_alg ) || + PSA_ALG_IS_TLS12_PSK_TO_MS( kdf_alg ) ) + { + status = psa_key_derivation_tls12_prf_read( &operation->ctx.tls12_prf, + kdf_alg, output, + output_length ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF || + * MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS */ + { + (void) kdf_alg; + return( PSA_ERROR_BAD_STATE ); + } + +exit: + if( status != PSA_SUCCESS ) + { + /* Preserve the algorithm upon errors, but clear all sensitive state. + * This allows us to differentiate between exhausted operations and + * blank operations, so we can return PSA_ERROR_BAD_STATE on blank + * operations. */ + psa_algorithm_t alg = operation->alg; + psa_key_derivation_abort( operation ); + operation->alg = alg; + memset( output, '!', output_length ); + } + return( status ); +} + +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES) +static void psa_des_set_key_parity( uint8_t *data, size_t data_size ) +{ + if( data_size >= 8 ) + mbedtls_des_key_set_parity( data ); + if( data_size >= 16 ) + mbedtls_des_key_set_parity( data + 8 ); + if( data_size >= 24 ) + mbedtls_des_key_set_parity( data + 16 ); +} +#endif /* MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES */ + +static psa_status_t psa_generate_derived_key_internal( + psa_key_slot_t *slot, + size_t bits, + psa_key_derivation_operation_t *operation ) +{ + uint8_t *data = NULL; + size_t bytes = PSA_BITS_TO_BYTES( bits ); + psa_status_t status; + + if( ! key_type_is_raw_bytes( slot->attr.type ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + if( bits % 8 != 0 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + data = mbedtls_calloc( 1, bytes ); + if( data == NULL ) + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + + status = psa_key_derivation_output_bytes( operation, data, bytes ); + if( status != PSA_SUCCESS ) + goto exit; +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES) + if( slot->attr.type == PSA_KEY_TYPE_DES ) + psa_des_set_key_parity( data, bytes ); +#endif /* MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES */ + + status = psa_allocate_buffer_to_slot( slot, bytes ); + if( status != PSA_SUCCESS ) + goto exit; + + slot->attr.bits = (psa_key_bits_t) bits; + psa_key_attributes_t attributes = { + .core = slot->attr + }; + + status = psa_driver_wrapper_import_key( &attributes, + data, bytes, + slot->key.data, + slot->key.bytes, + &slot->key.bytes, &bits ); + if( bits != slot->attr.bits ) + status = PSA_ERROR_INVALID_ARGUMENT; + +exit: + mbedtls_free( data ); + return( status ); +} + +psa_status_t psa_key_derivation_output_key( const psa_key_attributes_t *attributes, + psa_key_derivation_operation_t *operation, + mbedtls_svc_key_id_t *key ) +{ + psa_status_t status; + psa_key_slot_t *slot = NULL; + psa_se_drv_table_entry_t *driver = NULL; + + *key = MBEDTLS_SVC_KEY_ID_INIT; + + /* Reject any attempt to create a zero-length key so that we don't + * risk tripping up later, e.g. on a malloc(0) that returns NULL. */ + if( psa_get_key_bits( attributes ) == 0 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + if( operation->alg == PSA_ALG_NONE ) + return( PSA_ERROR_BAD_STATE ); + + if( ! operation->can_output_key ) + return( PSA_ERROR_NOT_PERMITTED ); + + status = psa_start_key_creation( PSA_KEY_CREATION_DERIVE, attributes, + &slot, &driver ); +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + if( driver != NULL ) + { + /* Deriving a key in a secure element is not implemented yet. */ + status = PSA_ERROR_NOT_SUPPORTED; + } +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + if( status == PSA_SUCCESS ) + { + status = psa_generate_derived_key_internal( slot, + attributes->core.bits, + operation ); + } + if( status == PSA_SUCCESS ) + status = psa_finish_key_creation( slot, driver, key ); + if( status != PSA_SUCCESS ) + psa_fail_key_creation( slot, driver ); + + return( status ); +} + + + +/****************************************************************/ +/* Key derivation */ +/****************************************************************/ + +#if defined(AT_LEAST_ONE_BUILTIN_KDF) +static psa_status_t psa_key_derivation_setup_kdf( + psa_key_derivation_operation_t *operation, + psa_algorithm_t kdf_alg ) +{ + int is_kdf_alg_supported; + + /* Make sure that operation->ctx is properly zero-initialised. (Macro + * initialisers for this union leave some bytes unspecified.) */ + memset( &operation->ctx, 0, sizeof( operation->ctx ) ); + + /* Make sure that kdf_alg is a supported key derivation algorithm. */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF) + if( PSA_ALG_IS_HKDF( kdf_alg ) ) + is_kdf_alg_supported = 1; + else +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) + if( PSA_ALG_IS_TLS12_PRF( kdf_alg ) ) + is_kdf_alg_supported = 1; + else +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS) + if( PSA_ALG_IS_TLS12_PSK_TO_MS( kdf_alg ) ) + is_kdf_alg_supported = 1; + else +#endif + is_kdf_alg_supported = 0; + + if( is_kdf_alg_supported ) + { + psa_algorithm_t hash_alg = PSA_ALG_HKDF_GET_HASH( kdf_alg ); + size_t hash_size = PSA_HASH_LENGTH( hash_alg ); + if( hash_size == 0 ) + return( PSA_ERROR_NOT_SUPPORTED ); + if( ( PSA_ALG_IS_TLS12_PRF( kdf_alg ) || + PSA_ALG_IS_TLS12_PSK_TO_MS( kdf_alg ) ) && + ! ( hash_alg == PSA_ALG_SHA_256 || hash_alg == PSA_ALG_SHA_384 ) ) + { + return( PSA_ERROR_NOT_SUPPORTED ); + } + operation->capacity = 255 * hash_size; + return( PSA_SUCCESS ); + } + + return( PSA_ERROR_NOT_SUPPORTED ); +} +#endif /* AT_LEAST_ONE_BUILTIN_KDF */ + +psa_status_t psa_key_derivation_setup( psa_key_derivation_operation_t *operation, + psa_algorithm_t alg ) +{ + psa_status_t status; + + if( operation->alg != 0 ) + return( PSA_ERROR_BAD_STATE ); + + if( PSA_ALG_IS_RAW_KEY_AGREEMENT( alg ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + else if( PSA_ALG_IS_KEY_AGREEMENT( alg ) ) + { +#if defined(AT_LEAST_ONE_BUILTIN_KDF) + psa_algorithm_t kdf_alg = PSA_ALG_KEY_AGREEMENT_GET_KDF( alg ); + status = psa_key_derivation_setup_kdf( operation, kdf_alg ); +#else + return( PSA_ERROR_NOT_SUPPORTED ); +#endif /* AT_LEAST_ONE_BUILTIN_KDF */ + } + else if( PSA_ALG_IS_KEY_DERIVATION( alg ) ) + { +#if defined(AT_LEAST_ONE_BUILTIN_KDF) + status = psa_key_derivation_setup_kdf( operation, alg ); +#else + return( PSA_ERROR_NOT_SUPPORTED ); +#endif /* AT_LEAST_ONE_BUILTIN_KDF */ + } + else + return( PSA_ERROR_INVALID_ARGUMENT ); + + if( status == PSA_SUCCESS ) + operation->alg = alg; + return( status ); +} + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF) +static psa_status_t psa_hkdf_input( psa_hkdf_key_derivation_t *hkdf, + psa_algorithm_t hash_alg, + psa_key_derivation_step_t step, + const uint8_t *data, + size_t data_length ) +{ + psa_status_t status; + switch( step ) + { + case PSA_KEY_DERIVATION_INPUT_SALT: + if( hkdf->state != HKDF_STATE_INIT ) + return( PSA_ERROR_BAD_STATE ); + else + { + status = psa_key_derivation_start_hmac( &hkdf->hmac, + hash_alg, + data, data_length ); + if( status != PSA_SUCCESS ) + return( status ); + hkdf->state = HKDF_STATE_STARTED; + return( PSA_SUCCESS ); + } + case PSA_KEY_DERIVATION_INPUT_SECRET: + /* If no salt was provided, use an empty salt. */ + if( hkdf->state == HKDF_STATE_INIT ) + { + status = psa_key_derivation_start_hmac( &hkdf->hmac, + hash_alg, + NULL, 0 ); + if( status != PSA_SUCCESS ) + return( status ); + hkdf->state = HKDF_STATE_STARTED; + } + if( hkdf->state != HKDF_STATE_STARTED ) + return( PSA_ERROR_BAD_STATE ); + status = psa_mac_update( &hkdf->hmac, + data, data_length ); + if( status != PSA_SUCCESS ) + return( status ); + status = psa_mac_sign_finish( &hkdf->hmac, + hkdf->prk, + sizeof( hkdf->prk ), + &data_length ); + if( status != PSA_SUCCESS ) + return( status ); + hkdf->offset_in_block = PSA_HASH_LENGTH( hash_alg ); + hkdf->block_number = 0; + hkdf->state = HKDF_STATE_KEYED; + return( PSA_SUCCESS ); + case PSA_KEY_DERIVATION_INPUT_INFO: + if( hkdf->state == HKDF_STATE_OUTPUT ) + return( PSA_ERROR_BAD_STATE ); + if( hkdf->info_set ) + return( PSA_ERROR_BAD_STATE ); + hkdf->info_length = data_length; + if( data_length != 0 ) + { + hkdf->info = mbedtls_calloc( 1, data_length ); + if( hkdf->info == NULL ) + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + memcpy( hkdf->info, data, data_length ); + } + hkdf->info_set = 1; + return( PSA_SUCCESS ); + default: + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} +#endif /* MBEDTLS_PSA_BUILTIN_ALG_HKDF */ + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS) +static psa_status_t psa_tls12_prf_set_seed( psa_tls12_prf_key_derivation_t *prf, + const uint8_t *data, + size_t data_length ) +{ + if( prf->state != PSA_TLS12_PRF_STATE_INIT ) + return( PSA_ERROR_BAD_STATE ); + + if( data_length != 0 ) + { + prf->seed = mbedtls_calloc( 1, data_length ); + if( prf->seed == NULL ) + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + + memcpy( prf->seed, data, data_length ); + prf->seed_length = data_length; + } + + prf->state = PSA_TLS12_PRF_STATE_SEED_SET; + + return( PSA_SUCCESS ); +} + +static psa_status_t psa_tls12_prf_set_key( psa_tls12_prf_key_derivation_t *prf, + const uint8_t *data, + size_t data_length ) +{ + if( prf->state != PSA_TLS12_PRF_STATE_SEED_SET ) + return( PSA_ERROR_BAD_STATE ); + + if( data_length != 0 ) + { + prf->secret = mbedtls_calloc( 1, data_length ); + if( prf->secret == NULL ) + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + + memcpy( prf->secret, data, data_length ); + prf->secret_length = data_length; + } + + prf->state = PSA_TLS12_PRF_STATE_KEY_SET; + + return( PSA_SUCCESS ); +} + +static psa_status_t psa_tls12_prf_set_label( psa_tls12_prf_key_derivation_t *prf, + const uint8_t *data, + size_t data_length ) +{ + if( prf->state != PSA_TLS12_PRF_STATE_KEY_SET ) + return( PSA_ERROR_BAD_STATE ); + + if( data_length != 0 ) + { + prf->label = mbedtls_calloc( 1, data_length ); + if( prf->label == NULL ) + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + + memcpy( prf->label, data, data_length ); + prf->label_length = data_length; + } + + prf->state = PSA_TLS12_PRF_STATE_LABEL_SET; + + return( PSA_SUCCESS ); +} + +static psa_status_t psa_tls12_prf_input( psa_tls12_prf_key_derivation_t *prf, + psa_key_derivation_step_t step, + const uint8_t *data, + size_t data_length ) +{ + switch( step ) + { + case PSA_KEY_DERIVATION_INPUT_SEED: + return( psa_tls12_prf_set_seed( prf, data, data_length ) ); + case PSA_KEY_DERIVATION_INPUT_SECRET: + return( psa_tls12_prf_set_key( prf, data, data_length ) ); + case PSA_KEY_DERIVATION_INPUT_LABEL: + return( psa_tls12_prf_set_label( prf, data, data_length ) ); + default: + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} +#endif /* MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) || + * MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS */ + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS) +static psa_status_t psa_tls12_prf_psk_to_ms_set_key( + psa_tls12_prf_key_derivation_t *prf, + const uint8_t *data, + size_t data_length ) +{ + psa_status_t status; + uint8_t pms[ 4 + 2 * PSA_TLS12_PSK_TO_MS_PSK_MAX_SIZE ]; + uint8_t *cur = pms; + + if( data_length > PSA_TLS12_PSK_TO_MS_PSK_MAX_SIZE ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + /* Quoting RFC 4279, Section 2: + * + * The premaster secret is formed as follows: if the PSK is N octets + * long, concatenate a uint16 with the value N, N zero octets, a second + * uint16 with the value N, and the PSK itself. + */ + + *cur++ = MBEDTLS_BYTE_1( data_length ); + *cur++ = MBEDTLS_BYTE_0( data_length ); + memset( cur, 0, data_length ); + cur += data_length; + *cur++ = pms[0]; + *cur++ = pms[1]; + memcpy( cur, data, data_length ); + cur += data_length; + + status = psa_tls12_prf_set_key( prf, pms, cur - pms ); + + mbedtls_platform_zeroize( pms, sizeof( pms ) ); + return( status ); +} + +static psa_status_t psa_tls12_prf_psk_to_ms_input( + psa_tls12_prf_key_derivation_t *prf, + psa_key_derivation_step_t step, + const uint8_t *data, + size_t data_length ) +{ + if( step == PSA_KEY_DERIVATION_INPUT_SECRET ) + { + return( psa_tls12_prf_psk_to_ms_set_key( prf, + data, data_length ) ); + } + + return( psa_tls12_prf_input( prf, step, data, data_length ) ); +} +#endif /* MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS */ + +/** Check whether the given key type is acceptable for the given + * input step of a key derivation. + * + * Secret inputs must have the type #PSA_KEY_TYPE_DERIVE. + * Non-secret inputs must have the type #PSA_KEY_TYPE_RAW_DATA. + * Both secret and non-secret inputs can alternatively have the type + * #PSA_KEY_TYPE_NONE, which is never the type of a key object, meaning + * that the input was passed as a buffer rather than via a key object. + */ +static int psa_key_derivation_check_input_type( + psa_key_derivation_step_t step, + psa_key_type_t key_type ) +{ + switch( step ) + { + case PSA_KEY_DERIVATION_INPUT_SECRET: + if( key_type == PSA_KEY_TYPE_DERIVE ) + return( PSA_SUCCESS ); + if( key_type == PSA_KEY_TYPE_NONE ) + return( PSA_SUCCESS ); + break; + case PSA_KEY_DERIVATION_INPUT_LABEL: + case PSA_KEY_DERIVATION_INPUT_SALT: + case PSA_KEY_DERIVATION_INPUT_INFO: + case PSA_KEY_DERIVATION_INPUT_SEED: + if( key_type == PSA_KEY_TYPE_RAW_DATA ) + return( PSA_SUCCESS ); + if( key_type == PSA_KEY_TYPE_NONE ) + return( PSA_SUCCESS ); + break; + } + return( PSA_ERROR_INVALID_ARGUMENT ); +} + +static psa_status_t psa_key_derivation_input_internal( + psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + psa_key_type_t key_type, + const uint8_t *data, + size_t data_length ) +{ + psa_status_t status; + psa_algorithm_t kdf_alg = psa_key_derivation_get_kdf_alg( operation ); + + status = psa_key_derivation_check_input_type( step, key_type ); + if( status != PSA_SUCCESS ) + goto exit; + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF) + if( PSA_ALG_IS_HKDF( kdf_alg ) ) + { + status = psa_hkdf_input( &operation->ctx.hkdf, + PSA_ALG_HKDF_GET_HASH( kdf_alg ), + step, data, data_length ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_HKDF */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) + if( PSA_ALG_IS_TLS12_PRF( kdf_alg ) ) + { + status = psa_tls12_prf_input( &operation->ctx.tls12_prf, + step, data, data_length ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS) + if( PSA_ALG_IS_TLS12_PSK_TO_MS( kdf_alg ) ) + { + status = psa_tls12_prf_psk_to_ms_input( &operation->ctx.tls12_prf, + step, data, data_length ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS */ + { + /* This can't happen unless the operation object was not initialized */ + (void) data; + (void) data_length; + (void) kdf_alg; + return( PSA_ERROR_BAD_STATE ); + } + +exit: + if( status != PSA_SUCCESS ) + psa_key_derivation_abort( operation ); + return( status ); +} + +psa_status_t psa_key_derivation_input_bytes( + psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + const uint8_t *data, + size_t data_length ) +{ + return( psa_key_derivation_input_internal( operation, step, + PSA_KEY_TYPE_NONE, + data, data_length ) ); +} + +psa_status_t psa_key_derivation_input_key( + psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + mbedtls_svc_key_id_t key ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot; + + status = psa_get_and_lock_transparent_key_slot_with_policy( + key, &slot, PSA_KEY_USAGE_DERIVE, operation->alg ); + if( status != PSA_SUCCESS ) + { + psa_key_derivation_abort( operation ); + return( status ); + } + + /* Passing a key object as a SECRET input unlocks the permission + * to output to a key object. */ + if( step == PSA_KEY_DERIVATION_INPUT_SECRET ) + operation->can_output_key = 1; + + status = psa_key_derivation_input_internal( operation, + step, slot->attr.type, + slot->key.data, + slot->key.bytes ); + + unlock_status = psa_unlock_key_slot( slot ); + + return( ( status == PSA_SUCCESS ) ? unlock_status : status ); +} + + + +/****************************************************************/ +/* Key agreement */ +/****************************************************************/ + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_ECDH) +static psa_status_t psa_key_agreement_ecdh( const uint8_t *peer_key, + size_t peer_key_length, + const mbedtls_ecp_keypair *our_key, + uint8_t *shared_secret, + size_t shared_secret_size, + size_t *shared_secret_length ) +{ + mbedtls_ecp_keypair *their_key = NULL; + mbedtls_ecdh_context ecdh; + psa_status_t status; + size_t bits = 0; + psa_ecc_family_t curve = mbedtls_ecc_group_to_psa( our_key->grp.id, &bits ); + mbedtls_ecdh_init( &ecdh ); + + status = mbedtls_psa_ecp_load_representation( + PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve), + bits, + peer_key, + peer_key_length, + &their_key ); + if( status != PSA_SUCCESS ) + goto exit; + + status = mbedtls_to_psa_error( + mbedtls_ecdh_get_params( &ecdh, their_key, MBEDTLS_ECDH_THEIRS ) ); + if( status != PSA_SUCCESS ) + goto exit; + status = mbedtls_to_psa_error( + mbedtls_ecdh_get_params( &ecdh, our_key, MBEDTLS_ECDH_OURS ) ); + if( status != PSA_SUCCESS ) + goto exit; + + status = mbedtls_to_psa_error( + mbedtls_ecdh_calc_secret( &ecdh, + shared_secret_length, + shared_secret, shared_secret_size, + mbedtls_psa_get_random, + MBEDTLS_PSA_RANDOM_STATE ) ); + if( status != PSA_SUCCESS ) + goto exit; + if( PSA_BITS_TO_BYTES( bits ) != *shared_secret_length ) + status = PSA_ERROR_CORRUPTION_DETECTED; + +exit: + if( status != PSA_SUCCESS ) + mbedtls_platform_zeroize( shared_secret, shared_secret_size ); + mbedtls_ecdh_free( &ecdh ); + mbedtls_ecp_keypair_free( their_key ); + mbedtls_free( their_key ); + + return( status ); +} +#endif /* MBEDTLS_PSA_BUILTIN_ALG_ECDH */ + +#define PSA_KEY_AGREEMENT_MAX_SHARED_SECRET_SIZE MBEDTLS_ECP_MAX_BYTES + +static psa_status_t psa_key_agreement_raw_internal( psa_algorithm_t alg, + psa_key_slot_t *private_key, + const uint8_t *peer_key, + size_t peer_key_length, + uint8_t *shared_secret, + size_t shared_secret_size, + size_t *shared_secret_length ) +{ + switch( alg ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_ECDH) + case PSA_ALG_ECDH: + if( ! PSA_KEY_TYPE_IS_ECC_KEY_PAIR( private_key->attr.type ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + mbedtls_ecp_keypair *ecp = NULL; + psa_status_t status = mbedtls_psa_ecp_load_representation( + private_key->attr.type, + private_key->attr.bits, + private_key->key.data, + private_key->key.bytes, + &ecp ); + if( status != PSA_SUCCESS ) + return( status ); + status = psa_key_agreement_ecdh( peer_key, peer_key_length, + ecp, + shared_secret, shared_secret_size, + shared_secret_length ); + mbedtls_ecp_keypair_free( ecp ); + mbedtls_free( ecp ); + return( status ); +#endif /* MBEDTLS_PSA_BUILTIN_ALG_ECDH */ + default: + (void) private_key; + (void) peer_key; + (void) peer_key_length; + (void) shared_secret; + (void) shared_secret_size; + (void) shared_secret_length; + return( PSA_ERROR_NOT_SUPPORTED ); + } +} + +/* Note that if this function fails, you must call psa_key_derivation_abort() + * to potentially free embedded data structures and wipe confidential data. + */ +static psa_status_t psa_key_agreement_internal( psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + psa_key_slot_t *private_key, + const uint8_t *peer_key, + size_t peer_key_length ) +{ + psa_status_t status; + uint8_t shared_secret[PSA_KEY_AGREEMENT_MAX_SHARED_SECRET_SIZE]; + size_t shared_secret_length = 0; + psa_algorithm_t ka_alg = PSA_ALG_KEY_AGREEMENT_GET_BASE( operation->alg ); + + /* Step 1: run the secret agreement algorithm to generate the shared + * secret. */ + status = psa_key_agreement_raw_internal( ka_alg, + private_key, + peer_key, peer_key_length, + shared_secret, + sizeof( shared_secret ), + &shared_secret_length ); + if( status != PSA_SUCCESS ) + goto exit; + + /* Step 2: set up the key derivation to generate key material from + * the shared secret. A shared secret is permitted wherever a key + * of type DERIVE is permitted. */ + status = psa_key_derivation_input_internal( operation, step, + PSA_KEY_TYPE_DERIVE, + shared_secret, + shared_secret_length ); +exit: + mbedtls_platform_zeroize( shared_secret, shared_secret_length ); + return( status ); +} + +psa_status_t psa_key_derivation_key_agreement( psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + mbedtls_svc_key_id_t private_key, + const uint8_t *peer_key, + size_t peer_key_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot; + + if( ! PSA_ALG_IS_KEY_AGREEMENT( operation->alg ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + status = psa_get_and_lock_transparent_key_slot_with_policy( + private_key, &slot, PSA_KEY_USAGE_DERIVE, operation->alg ); + if( status != PSA_SUCCESS ) + return( status ); + status = psa_key_agreement_internal( operation, step, + slot, + peer_key, peer_key_length ); + if( status != PSA_SUCCESS ) + psa_key_derivation_abort( operation ); + else + { + /* If a private key has been added as SECRET, we allow the derived + * key material to be used as a key in PSA Crypto. */ + if( step == PSA_KEY_DERIVATION_INPUT_SECRET ) + operation->can_output_key = 1; + } + + unlock_status = psa_unlock_key_slot( slot ); + + return( ( status == PSA_SUCCESS ) ? unlock_status : status ); +} + +psa_status_t psa_raw_key_agreement( psa_algorithm_t alg, + mbedtls_svc_key_id_t private_key, + const uint8_t *peer_key, + size_t peer_key_length, + uint8_t *output, + size_t output_size, + size_t *output_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t unlock_status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_slot_t *slot = NULL; + + if( ! PSA_ALG_IS_KEY_AGREEMENT( alg ) ) + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + status = psa_get_and_lock_transparent_key_slot_with_policy( + private_key, &slot, PSA_KEY_USAGE_DERIVE, alg ); + if( status != PSA_SUCCESS ) + goto exit; + + status = psa_key_agreement_raw_internal( alg, slot, + peer_key, peer_key_length, + output, output_size, + output_length ); + +exit: + if( status != PSA_SUCCESS ) + { + /* If an error happens and is not handled properly, the output + * may be used as a key to protect sensitive data. Arrange for such + * a key to be random, which is likely to result in decryption or + * verification errors. This is better than filling the buffer with + * some constant data such as zeros, which would result in the data + * being protected with a reproducible, easily knowable key. + */ + psa_generate_random( output, output_size ); + *output_length = output_size; + } + + unlock_status = psa_unlock_key_slot( slot ); + + return( ( status == PSA_SUCCESS ) ? unlock_status : status ); +} + + + +/****************************************************************/ +/* Random generation */ +/****************************************************************/ + +/** Initialize the PSA random generator. + */ +static void mbedtls_psa_random_init( mbedtls_psa_random_context_t *rng ) +{ +#if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) + memset( rng, 0, sizeof( *rng ) ); +#else /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */ + + /* Set default configuration if + * mbedtls_psa_crypto_configure_entropy_sources() hasn't been called. */ + if( rng->entropy_init == NULL ) + rng->entropy_init = mbedtls_entropy_init; + if( rng->entropy_free == NULL ) + rng->entropy_free = mbedtls_entropy_free; + + rng->entropy_init( &rng->entropy ); +#if defined(MBEDTLS_PSA_INJECT_ENTROPY) && \ + defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES) + /* The PSA entropy injection feature depends on using NV seed as an entropy + * source. Add NV seed as an entropy source for PSA entropy injection. */ + mbedtls_entropy_add_source( &rng->entropy, + mbedtls_nv_seed_poll, NULL, + MBEDTLS_ENTROPY_BLOCK_SIZE, + MBEDTLS_ENTROPY_SOURCE_STRONG ); +#endif + + mbedtls_psa_drbg_init( MBEDTLS_PSA_RANDOM_STATE ); +#endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */ +} + +/** Deinitialize the PSA random generator. + */ +static void mbedtls_psa_random_free( mbedtls_psa_random_context_t *rng ) +{ +#if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) + memset( rng, 0, sizeof( *rng ) ); +#else /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */ + mbedtls_psa_drbg_free( MBEDTLS_PSA_RANDOM_STATE ); + rng->entropy_free( &rng->entropy ); +#endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */ +} + +/** Seed the PSA random generator. + */ +static psa_status_t mbedtls_psa_random_seed( mbedtls_psa_random_context_t *rng ) +{ +#if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) + /* Do nothing: the external RNG seeds itself. */ + (void) rng; + return( PSA_SUCCESS ); +#else /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */ + const unsigned char drbg_seed[] = "PSA"; + int ret = mbedtls_psa_drbg_seed( &rng->entropy, + drbg_seed, sizeof( drbg_seed ) - 1 ); + return mbedtls_to_psa_error( ret ); +#endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */ +} + +psa_status_t psa_generate_random( uint8_t *output, + size_t output_size ) +{ + GUARD_MODULE_INITIALIZED; + +#if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) + + size_t output_length = 0; + psa_status_t status = mbedtls_psa_external_get_random( &global_data.rng, + output, output_size, + &output_length ); + if( status != PSA_SUCCESS ) + return( status ); + /* Breaking up a request into smaller chunks is currently not supported + * for the extrernal RNG interface. */ + if( output_length != output_size ) + return( PSA_ERROR_INSUFFICIENT_ENTROPY ); + return( PSA_SUCCESS ); + +#else /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */ + + while( output_size > 0 ) + { + size_t request_size = + ( output_size > MBEDTLS_PSA_RANDOM_MAX_REQUEST ? + MBEDTLS_PSA_RANDOM_MAX_REQUEST : + output_size ); + int ret = mbedtls_psa_get_random( MBEDTLS_PSA_RANDOM_STATE, + output, request_size ); + if( ret != 0 ) + return( mbedtls_to_psa_error( ret ) ); + output_size -= request_size; + output += request_size; + } + return( PSA_SUCCESS ); +#endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */ +} + +/* Wrapper function allowing the classic API to use the PSA RNG. + * + * `mbedtls_psa_get_random(MBEDTLS_PSA_RANDOM_STATE, ...)` calls + * `psa_generate_random(...)`. The state parameter is ignored since the + * PSA API doesn't support passing an explicit state. + * + * In the non-external case, psa_generate_random() calls an + * `mbedtls_xxx_drbg_random` function which has exactly the same signature + * and semantics as mbedtls_psa_get_random(). As an optimization, + * instead of doing this back-and-forth between the PSA API and the + * classic API, psa_crypto_random_impl.h defines `mbedtls_psa_get_random` + * as a constant function pointer to `mbedtls_xxx_drbg_random`. + */ +#if defined (MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) +int mbedtls_psa_get_random( void *p_rng, + unsigned char *output, + size_t output_size ) +{ + /* This function takes a pointer to the RNG state because that's what + * classic mbedtls functions using an RNG expect. The PSA RNG manages + * its own state internally and doesn't let the caller access that state. + * So we just ignore the state parameter, and in practice we'll pass + * NULL. */ + (void) p_rng; + psa_status_t status = psa_generate_random( output, output_size ); + if( status == PSA_SUCCESS ) + return( 0 ); + else + return( MBEDTLS_ERR_ENTROPY_SOURCE_FAILED ); +} +#endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */ + +#if defined(MBEDTLS_PSA_INJECT_ENTROPY) +#include "mbedtls/entropy_poll.h" + +psa_status_t mbedtls_psa_inject_entropy( const uint8_t *seed, + size_t seed_size ) +{ + if( global_data.initialized ) + return( PSA_ERROR_NOT_PERMITTED ); + + if( ( ( seed_size < MBEDTLS_ENTROPY_MIN_PLATFORM ) || + ( seed_size < MBEDTLS_ENTROPY_BLOCK_SIZE ) ) || + ( seed_size > MBEDTLS_ENTROPY_MAX_SEED_SIZE ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + return( mbedtls_psa_storage_inject_entropy( seed, seed_size ) ); +} +#endif /* MBEDTLS_PSA_INJECT_ENTROPY */ + +/** Validate the key type and size for key generation + * + * \param type The key type + * \param bits The number of bits of the key + * + * \retval #PSA_SUCCESS + * The key type and size are valid. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The size in bits of the key is not valid. + * \retval #PSA_ERROR_NOT_SUPPORTED + * The type and/or the size in bits of the key or the combination of + * the two is not supported. + */ +static psa_status_t psa_validate_key_type_and_size_for_key_generation( + psa_key_type_t type, size_t bits ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + + if( key_type_is_raw_bytes( type ) ) + { + status = validate_unstructured_key_bit_size( type, bits ); + if( status != PSA_SUCCESS ) + return( status ); + } + else +#if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR) + if( PSA_KEY_TYPE_IS_RSA( type ) && PSA_KEY_TYPE_IS_KEY_PAIR( type ) ) + { + if( bits > PSA_VENDOR_RSA_MAX_KEY_BITS ) + return( PSA_ERROR_NOT_SUPPORTED ); + + /* Accept only byte-aligned keys, for the same reasons as + * in psa_import_rsa_key(). */ + if( bits % 8 != 0 ) + return( PSA_ERROR_NOT_SUPPORTED ); + } + else +#endif /* defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR) */ + +#if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR) + if( PSA_KEY_TYPE_IS_ECC( type ) && PSA_KEY_TYPE_IS_KEY_PAIR( type ) ) + { + /* To avoid empty block, return successfully here. */ + return( PSA_SUCCESS ); + } + else +#endif /* defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR) */ + { + return( PSA_ERROR_NOT_SUPPORTED ); + } + + return( PSA_SUCCESS ); +} + +psa_status_t psa_generate_key_internal( + const psa_key_attributes_t *attributes, + uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_type_t type = attributes->core.type; + + if( ( attributes->domain_parameters == NULL ) && + ( attributes->domain_parameters_size != 0 ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + if( key_type_is_raw_bytes( type ) ) + { + status = psa_generate_random( key_buffer, key_buffer_size ); + if( status != PSA_SUCCESS ) + return( status ); + +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES) + if( type == PSA_KEY_TYPE_DES ) + psa_des_set_key_parity( key_buffer, key_buffer_size ); +#endif /* MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES */ + } + else + +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) && \ + defined(MBEDTLS_GENPRIME) + if ( type == PSA_KEY_TYPE_RSA_KEY_PAIR ) + { + return( mbedtls_psa_rsa_generate_key( attributes, + key_buffer, + key_buffer_size, + key_buffer_length ) ); + } + else +#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) + * defined(MBEDTLS_GENPRIME) */ + +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) + if ( PSA_KEY_TYPE_IS_ECC( type ) && PSA_KEY_TYPE_IS_KEY_PAIR( type ) ) + { + return( mbedtls_psa_ecp_generate_key( attributes, + key_buffer, + key_buffer_size, + key_buffer_length ) ); + } + else +#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) */ + { + (void)key_buffer_length; + return( PSA_ERROR_NOT_SUPPORTED ); + } + + return( PSA_SUCCESS ); +} + +psa_status_t psa_generate_key( const psa_key_attributes_t *attributes, + mbedtls_svc_key_id_t *key ) +{ + psa_status_t status; + psa_key_slot_t *slot = NULL; + psa_se_drv_table_entry_t *driver = NULL; + size_t key_buffer_size; + + *key = MBEDTLS_SVC_KEY_ID_INIT; + + /* Reject any attempt to create a zero-length key so that we don't + * risk tripping up later, e.g. on a malloc(0) that returns NULL. */ + if( psa_get_key_bits( attributes ) == 0 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + /* Reject any attempt to create a public key. */ + if( PSA_KEY_TYPE_IS_PUBLIC_KEY(attributes->core.type) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + status = psa_start_key_creation( PSA_KEY_CREATION_GENERATE, attributes, + &slot, &driver ); + if( status != PSA_SUCCESS ) + goto exit; + + /* In the case of a transparent key or an opaque key stored in local + * storage (thus not in the case of generating a key in a secure element + * or cryptoprocessor with storage), we have to allocate a buffer to + * hold the generated key material. */ + if( slot->key.data == NULL ) + { + if ( PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ) == + PSA_KEY_LOCATION_LOCAL_STORAGE ) + { + status = psa_validate_key_type_and_size_for_key_generation( + attributes->core.type, attributes->core.bits ); + if( status != PSA_SUCCESS ) + goto exit; + + key_buffer_size = PSA_EXPORT_KEY_OUTPUT_SIZE( + attributes->core.type, + attributes->core.bits ); + } + else + { + status = psa_driver_wrapper_get_key_buffer_size( + attributes, &key_buffer_size ); + if( status != PSA_SUCCESS ) + goto exit; + } + + status = psa_allocate_buffer_to_slot( slot, key_buffer_size ); + if( status != PSA_SUCCESS ) + goto exit; + } + + status = psa_driver_wrapper_generate_key( attributes, + slot->key.data, slot->key.bytes, &slot->key.bytes ); + + if( status != PSA_SUCCESS ) + psa_remove_key_data_from_memory( slot ); + +exit: + if( status == PSA_SUCCESS ) + status = psa_finish_key_creation( slot, driver, key ); + if( status != PSA_SUCCESS ) + psa_fail_key_creation( slot, driver ); + + return( status ); +} + +/****************************************************************/ +/* Module setup */ +/****************************************************************/ + +#if !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) +psa_status_t mbedtls_psa_crypto_configure_entropy_sources( + void (* entropy_init )( mbedtls_entropy_context *ctx ), + void (* entropy_free )( mbedtls_entropy_context *ctx ) ) +{ + if( global_data.rng_state != RNG_NOT_INITIALIZED ) + return( PSA_ERROR_BAD_STATE ); + global_data.rng.entropy_init = entropy_init; + global_data.rng.entropy_free = entropy_free; + return( PSA_SUCCESS ); +} +#endif /* !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) */ + +void mbedtls_psa_crypto_free( void ) +{ + psa_wipe_all_key_slots( ); + if( global_data.rng_state != RNG_NOT_INITIALIZED ) + { + mbedtls_psa_random_free( &global_data.rng ); + } + /* Wipe all remaining data, including configuration. + * In particular, this sets all state indicator to the value + * indicating "uninitialized". */ + mbedtls_platform_zeroize( &global_data, sizeof( global_data ) ); + + /* Terminate drivers */ + psa_driver_wrapper_free( ); +} + +#if defined(PSA_CRYPTO_STORAGE_HAS_TRANSACTIONS) +/** Recover a transaction that was interrupted by a power failure. + * + * This function is called during initialization, before psa_crypto_init() + * returns. If this function returns a failure status, the initialization + * fails. + */ +static psa_status_t psa_crypto_recover_transaction( + const psa_crypto_transaction_t *transaction ) +{ + switch( transaction->unknown.type ) + { + case PSA_CRYPTO_TRANSACTION_CREATE_KEY: + case PSA_CRYPTO_TRANSACTION_DESTROY_KEY: + /* TODO - fall through to the failure case until this + * is implemented. + * https://github.com/ARMmbed/mbed-crypto/issues/218 + */ + default: + /* We found an unsupported transaction in the storage. + * We don't know what state the storage is in. Give up. */ + return( PSA_ERROR_DATA_INVALID ); + } +} +#endif /* PSA_CRYPTO_STORAGE_HAS_TRANSACTIONS */ + +psa_status_t psa_crypto_init( void ) +{ + psa_status_t status; + + /* Double initialization is explicitly allowed. */ + if( global_data.initialized != 0 ) + return( PSA_SUCCESS ); + + /* Initialize and seed the random generator. */ + mbedtls_psa_random_init( &global_data.rng ); + global_data.rng_state = RNG_INITIALIZED; + status = mbedtls_psa_random_seed( &global_data.rng ); + if( status != PSA_SUCCESS ) + goto exit; + global_data.rng_state = RNG_SEEDED; + + status = psa_initialize_key_slots( ); + if( status != PSA_SUCCESS ) + goto exit; + + /* Init drivers */ + status = psa_driver_wrapper_init( ); + if( status != PSA_SUCCESS ) + goto exit; + +#if defined(PSA_CRYPTO_STORAGE_HAS_TRANSACTIONS) + status = psa_crypto_load_transaction( ); + if( status == PSA_SUCCESS ) + { + status = psa_crypto_recover_transaction( &psa_crypto_transaction ); + if( status != PSA_SUCCESS ) + goto exit; + status = psa_crypto_stop_transaction( ); + } + else if( status == PSA_ERROR_DOES_NOT_EXIST ) + { + /* There's no transaction to complete. It's all good. */ + status = PSA_SUCCESS; + } +#endif /* PSA_CRYPTO_STORAGE_HAS_TRANSACTIONS */ + + /* All done. */ + global_data.initialized = 1; + +exit: + if( status != PSA_SUCCESS ) + mbedtls_psa_crypto_free( ); + return( status ); +} + +#endif /* MBEDTLS_PSA_CRYPTO_C */ diff --git a/Externals/mbedtls/library/psa_crypto_aead.c b/Externals/mbedtls/library/psa_crypto_aead.c new file mode 100644 index 000000000000..16a3711b98f9 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_aead.c @@ -0,0 +1,397 @@ +/* + * PSA AEAD entry points + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common.h" + +#if defined(MBEDTLS_PSA_CRYPTO_C) + +#include "psa_crypto_aead.h" +#include "psa_crypto_core.h" + +#include "mbedtls/ccm.h" +#include "mbedtls/chachapoly.h" +#include "mbedtls/cipher.h" +#include "mbedtls/gcm.h" + +typedef struct +{ + psa_algorithm_t core_alg; + uint8_t tag_length; + union + { + unsigned dummy; /* Make the union non-empty even with no supported algorithms. */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM) + mbedtls_ccm_context ccm; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CCM */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM) + mbedtls_gcm_context gcm; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_GCM */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305) + mbedtls_chachapoly_context chachapoly; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 */ + } ctx; +} aead_operation_t; + +#define AEAD_OPERATION_INIT {0, 0, {0}} + +static void psa_aead_abort_internal( aead_operation_t *operation ) +{ + switch( operation->core_alg ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM) + case PSA_ALG_CCM: + mbedtls_ccm_free( &operation->ctx.ccm ); + break; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CCM */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM) + case PSA_ALG_GCM: + mbedtls_gcm_free( &operation->ctx.gcm ); + break; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_GCM */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305) + case PSA_ALG_CHACHA20_POLY1305: + mbedtls_chachapoly_free( &operation->ctx.chachapoly ); + break; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 */ + } +} + +static psa_status_t psa_aead_setup( + aead_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + psa_algorithm_t alg ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + size_t key_bits; + const mbedtls_cipher_info_t *cipher_info; + mbedtls_cipher_id_t cipher_id; + size_t full_tag_length = 0; + + key_bits = attributes->core.bits; + + cipher_info = mbedtls_cipher_info_from_psa( alg, + attributes->core.type, key_bits, + &cipher_id ); + if( cipher_info == NULL ) + return( PSA_ERROR_NOT_SUPPORTED ); + + switch( PSA_ALG_AEAD_WITH_SHORTENED_TAG( alg, 0 ) ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM) + case PSA_ALG_AEAD_WITH_SHORTENED_TAG( PSA_ALG_CCM, 0 ): + operation->core_alg = PSA_ALG_CCM; + full_tag_length = 16; + /* CCM allows the following tag lengths: 4, 6, 8, 10, 12, 14, 16. + * The call to mbedtls_ccm_encrypt_and_tag or + * mbedtls_ccm_auth_decrypt will validate the tag length. */ + if( PSA_BLOCK_CIPHER_BLOCK_LENGTH( attributes->core.type ) != 16 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + mbedtls_ccm_init( &operation->ctx.ccm ); + status = mbedtls_to_psa_error( + mbedtls_ccm_setkey( &operation->ctx.ccm, cipher_id, + key_buffer, (unsigned int) key_bits ) ); + if( status != PSA_SUCCESS ) + return( status ); + break; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CCM */ + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM) + case PSA_ALG_AEAD_WITH_SHORTENED_TAG( PSA_ALG_GCM, 0 ): + operation->core_alg = PSA_ALG_GCM; + full_tag_length = 16; + /* GCM allows the following tag lengths: 4, 8, 12, 13, 14, 15, 16. + * The call to mbedtls_gcm_crypt_and_tag or + * mbedtls_gcm_auth_decrypt will validate the tag length. */ + if( PSA_BLOCK_CIPHER_BLOCK_LENGTH( attributes->core.type ) != 16 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + mbedtls_gcm_init( &operation->ctx.gcm ); + status = mbedtls_to_psa_error( + mbedtls_gcm_setkey( &operation->ctx.gcm, cipher_id, + key_buffer, (unsigned int) key_bits ) ); + if( status != PSA_SUCCESS ) + return( status ); + break; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_GCM */ + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305) + case PSA_ALG_AEAD_WITH_SHORTENED_TAG( PSA_ALG_CHACHA20_POLY1305, 0 ): + operation->core_alg = PSA_ALG_CHACHA20_POLY1305; + full_tag_length = 16; + /* We only support the default tag length. */ + if( alg != PSA_ALG_CHACHA20_POLY1305 ) + return( PSA_ERROR_NOT_SUPPORTED ); + + mbedtls_chachapoly_init( &operation->ctx.chachapoly ); + status = mbedtls_to_psa_error( + mbedtls_chachapoly_setkey( &operation->ctx.chachapoly, + key_buffer ) ); + if( status != PSA_SUCCESS ) + return( status ); + break; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 */ + + default: + (void) status; + (void) key_buffer; + return( PSA_ERROR_NOT_SUPPORTED ); + } + + if( PSA_AEAD_TAG_LENGTH( attributes->core.type, + key_bits, alg ) + > full_tag_length ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + operation->tag_length = PSA_AEAD_TAG_LENGTH( attributes->core.type, + key_bits, + alg ); + + return( PSA_SUCCESS ); +} + +psa_status_t mbedtls_psa_aead_encrypt( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *nonce, size_t nonce_length, + const uint8_t *additional_data, size_t additional_data_length, + const uint8_t *plaintext, size_t plaintext_length, + uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + aead_operation_t operation = AEAD_OPERATION_INIT; + uint8_t *tag; + (void) key_buffer_size; + + status = psa_aead_setup( &operation, attributes, key_buffer, alg ); + if( status != PSA_SUCCESS ) + goto exit; + + /* For all currently supported modes, the tag is at the end of the + * ciphertext. */ + if( ciphertext_size < ( plaintext_length + operation.tag_length ) ) + { + status = PSA_ERROR_BUFFER_TOO_SMALL; + goto exit; + } + tag = ciphertext + plaintext_length; + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM) + if( operation.core_alg == PSA_ALG_CCM ) + { + status = mbedtls_to_psa_error( + mbedtls_ccm_encrypt_and_tag( &operation.ctx.ccm, + plaintext_length, + nonce, nonce_length, + additional_data, + additional_data_length, + plaintext, ciphertext, + tag, operation.tag_length ) ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CCM */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM) + if( operation.core_alg == PSA_ALG_GCM ) + { + status = mbedtls_to_psa_error( + mbedtls_gcm_crypt_and_tag( &operation.ctx.gcm, + MBEDTLS_GCM_ENCRYPT, + plaintext_length, + nonce, nonce_length, + additional_data, additional_data_length, + plaintext, ciphertext, + operation.tag_length, tag ) ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_GCM */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305) + if( operation.core_alg == PSA_ALG_CHACHA20_POLY1305 ) + { + if( nonce_length != 12 ) + { + if( nonce_length == 8 ) + status = PSA_ERROR_NOT_SUPPORTED; + else + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + if( operation.tag_length != 16 ) + { + status = PSA_ERROR_NOT_SUPPORTED; + goto exit; + } + status = mbedtls_to_psa_error( + mbedtls_chachapoly_encrypt_and_tag( &operation.ctx.chachapoly, + plaintext_length, + nonce, + additional_data, + additional_data_length, + plaintext, + ciphertext, + tag ) ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 */ + { + (void) tag; + (void) nonce; + (void) nonce_length; + (void) additional_data; + (void) additional_data_length; + (void) plaintext; + return( PSA_ERROR_NOT_SUPPORTED ); + } + + if( status == PSA_SUCCESS ) + *ciphertext_length = plaintext_length + operation.tag_length; + +exit: + psa_aead_abort_internal( &operation ); + + return( status ); +} + +/* Locate the tag in a ciphertext buffer containing the encrypted data + * followed by the tag. Return the length of the part preceding the tag in + * *plaintext_length. This is the size of the plaintext in modes where + * the encrypted data has the same size as the plaintext, such as + * CCM and GCM. */ +static psa_status_t psa_aead_unpadded_locate_tag( size_t tag_length, + const uint8_t *ciphertext, + size_t ciphertext_length, + size_t plaintext_size, + const uint8_t **p_tag ) +{ + size_t payload_length; + if( tag_length > ciphertext_length ) + return( PSA_ERROR_INVALID_ARGUMENT ); + payload_length = ciphertext_length - tag_length; + if( payload_length > plaintext_size ) + return( PSA_ERROR_BUFFER_TOO_SMALL ); + *p_tag = ciphertext + payload_length; + return( PSA_SUCCESS ); +} + +psa_status_t mbedtls_psa_aead_decrypt( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *nonce, size_t nonce_length, + const uint8_t *additional_data, size_t additional_data_length, + const uint8_t *ciphertext, size_t ciphertext_length, + uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + aead_operation_t operation = AEAD_OPERATION_INIT; + const uint8_t *tag = NULL; + (void) key_buffer_size; + + status = psa_aead_setup( &operation, attributes, key_buffer, alg ); + if( status != PSA_SUCCESS ) + goto exit; + + status = psa_aead_unpadded_locate_tag( operation.tag_length, + ciphertext, ciphertext_length, + plaintext_size, &tag ); + if( status != PSA_SUCCESS ) + goto exit; + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM) + if( operation.core_alg == PSA_ALG_CCM ) + { + status = mbedtls_to_psa_error( + mbedtls_ccm_auth_decrypt( &operation.ctx.ccm, + ciphertext_length - operation.tag_length, + nonce, nonce_length, + additional_data, + additional_data_length, + ciphertext, plaintext, + tag, operation.tag_length ) ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CCM */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM) + if( operation.core_alg == PSA_ALG_GCM ) + { + status = mbedtls_to_psa_error( + mbedtls_gcm_auth_decrypt( &operation.ctx.gcm, + ciphertext_length - operation.tag_length, + nonce, nonce_length, + additional_data, + additional_data_length, + tag, operation.tag_length, + ciphertext, plaintext ) ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_GCM */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305) + if( operation.core_alg == PSA_ALG_CHACHA20_POLY1305 ) + { + if( nonce_length != 12 ) + { + if( nonce_length == 8 ) + status = PSA_ERROR_NOT_SUPPORTED; + else + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + if( operation.tag_length != 16 ) + { + status = PSA_ERROR_NOT_SUPPORTED; + goto exit; + } + status = mbedtls_to_psa_error( + mbedtls_chachapoly_auth_decrypt( &operation.ctx.chachapoly, + ciphertext_length - operation.tag_length, + nonce, + additional_data, + additional_data_length, + tag, + ciphertext, + plaintext ) ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 */ + { + (void) nonce; + (void) nonce_length; + (void) additional_data; + (void) additional_data_length; + (void) plaintext; + return( PSA_ERROR_NOT_SUPPORTED ); + } + + if( status == PSA_SUCCESS ) + *plaintext_length = ciphertext_length - operation.tag_length; + +exit: + psa_aead_abort_internal( &operation ); + + if( status == PSA_SUCCESS ) + *plaintext_length = ciphertext_length - operation.tag_length; + return( status ); +} + +#endif /* MBEDTLS_PSA_CRYPTO_C */ + diff --git a/Externals/mbedtls/library/psa_crypto_aead.h b/Externals/mbedtls/library/psa_crypto_aead.h new file mode 100644 index 000000000000..aab0f835c443 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_aead.h @@ -0,0 +1,151 @@ +/* + * PSA AEAD driver entry points + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_AEAD_H +#define PSA_CRYPTO_AEAD_H + +#include + +/** + * \brief Process an authenticated encryption operation. + * + * \note The signature of this function is that of a PSA driver + * aead_encrypt entry point. This function behaves as an aead_encrypt + * entry point as defined in the PSA driver interface specification for + * transparent drivers. + * + * \param[in] attributes The attributes of the key to use for the + * operation. + * \param[in] key_buffer The buffer containing the key context. + * \param key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param alg The AEAD algorithm to compute. + * \param[in] nonce Nonce or IV to use. + * \param nonce_length Size of the nonce buffer in bytes. This must + * be appropriate for the selected algorithm. + * The default nonce size is + * PSA_AEAD_NONCE_LENGTH(key_type, alg) where + * key_type is the type of key. + * \param[in] additional_data Additional data that will be authenticated + * but not encrypted. + * \param additional_data_length Size of additional_data in bytes. + * \param[in] plaintext Data that will be authenticated and encrypted. + * \param plaintext_length Size of plaintext in bytes. + * \param[out] ciphertext Output buffer for the authenticated and + * encrypted data. The additional data is not + * part of this output. For algorithms where the + * encrypted data and the authentication tag are + * defined as separate outputs, the + * authentication tag is appended to the + * encrypted data. + * \param ciphertext_size Size of the ciphertext buffer in bytes. This + * must be appropriate for the selected algorithm + * and key: + * - A sufficient output size is + * PSA_AEAD_ENCRYPT_OUTPUT_SIZE(key_type, alg, + * plaintext_length) where key_type is the type + * of key. + * - PSA_AEAD_ENCRYPT_OUTPUT_MAX_SIZE( + * plaintext_length) evaluates to the maximum + * ciphertext size of any supported AEAD + * encryption. + * \param[out] ciphertext_length On success, the size of the output in the + * ciphertext buffer. + * + * \retval #PSA_SUCCESS Success. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * ciphertext_size is too small. + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_aead_encrypt( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *nonce, size_t nonce_length, + const uint8_t *additional_data, size_t additional_data_length, + const uint8_t *plaintext, size_t plaintext_length, + uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length ); + +/** + * \brief Process an authenticated decryption operation. + * + * \note The signature of this function is that of a PSA driver + * aead_decrypt entry point. This function behaves as an aead_decrypt + * entry point as defined in the PSA driver interface specification for + * transparent drivers. + * + * \param[in] attributes The attributes of the key to use for the + * operation. + * \param[in] key_buffer The buffer containing the key context. + * \param key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param alg The AEAD algorithm to compute. + * \param[in] nonce Nonce or IV to use. + * \param nonce_length Size of the nonce buffer in bytes. This must + * be appropriate for the selected algorithm. + * The default nonce size is + * PSA_AEAD_NONCE_LENGTH(key_type, alg) where + * key_type is the type of key. + * \param[in] additional_data Additional data that has been authenticated + * but not encrypted. + * \param additional_data_length Size of additional_data in bytes. + * \param[in] ciphertext Data that has been authenticated and + * encrypted. For algorithms where the encrypted + * data and the authentication tag are defined + * as separate inputs, the buffer contains + * encrypted data followed by the authentication + * tag. + * \param ciphertext_length Size of ciphertext in bytes. + * \param[out] plaintext Output buffer for the decrypted data. + * \param plaintext_size Size of the plaintext buffer in bytes. This + * must be appropriate for the selected algorithm + * and key: + * - A sufficient output size is + * PSA_AEAD_DECRYPT_OUTPUT_SIZE(key_type, alg, + * ciphertext_length) where key_type is the + * type of key. + * - PSA_AEAD_DECRYPT_OUTPUT_MAX_SIZE( + * ciphertext_length) evaluates to the maximum + * plaintext size of any supported AEAD + * decryption. + * \param[out] plaintext_length On success, the size of the output in the + * plaintext buffer. + * + * \retval #PSA_SUCCESS Success. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The cipher is not authentic. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * plaintext_size is too small. + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_aead_decrypt( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *nonce, size_t nonce_length, + const uint8_t *additional_data, size_t additional_data_length, + const uint8_t *ciphertext, size_t ciphertext_length, + uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length ); + +#endif /* PSA_CRYPTO_AEAD */ diff --git a/Externals/mbedtls/library/psa_crypto_cipher.c b/Externals/mbedtls/library/psa_crypto_cipher.c new file mode 100644 index 000000000000..1fb9172b7667 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_cipher.c @@ -0,0 +1,553 @@ +/* + * PSA cipher driver entry points + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common.h" + +#if defined(MBEDTLS_PSA_CRYPTO_C) + +#include +#include "psa_crypto_core.h" +#include "psa_crypto_random_impl.h" + +#include "mbedtls/cipher.h" +#include "mbedtls/error.h" + +#include + +const mbedtls_cipher_info_t *mbedtls_cipher_info_from_psa( + psa_algorithm_t alg, + psa_key_type_t key_type, + size_t key_bits, + mbedtls_cipher_id_t* cipher_id ) +{ + mbedtls_cipher_mode_t mode; + mbedtls_cipher_id_t cipher_id_tmp; + + if( PSA_ALG_IS_AEAD( alg ) ) + alg = PSA_ALG_AEAD_WITH_SHORTENED_TAG( alg, 0 ); + + if( PSA_ALG_IS_CIPHER( alg ) || PSA_ALG_IS_AEAD( alg ) ) + { + switch( alg ) + { + case PSA_ALG_STREAM_CIPHER: + mode = MBEDTLS_MODE_STREAM; + break; + case PSA_ALG_CTR: + mode = MBEDTLS_MODE_CTR; + break; + case PSA_ALG_CFB: + mode = MBEDTLS_MODE_CFB; + break; + case PSA_ALG_OFB: + mode = MBEDTLS_MODE_OFB; + break; + case PSA_ALG_ECB_NO_PADDING: + mode = MBEDTLS_MODE_ECB; + break; + case PSA_ALG_CBC_NO_PADDING: + mode = MBEDTLS_MODE_CBC; + break; + case PSA_ALG_CBC_PKCS7: + mode = MBEDTLS_MODE_CBC; + break; + case PSA_ALG_AEAD_WITH_SHORTENED_TAG( PSA_ALG_CCM, 0 ): + mode = MBEDTLS_MODE_CCM; + break; + case PSA_ALG_AEAD_WITH_SHORTENED_TAG( PSA_ALG_GCM, 0 ): + mode = MBEDTLS_MODE_GCM; + break; + case PSA_ALG_AEAD_WITH_SHORTENED_TAG( PSA_ALG_CHACHA20_POLY1305, 0 ): + mode = MBEDTLS_MODE_CHACHAPOLY; + break; + default: + return( NULL ); + } + } + else if( alg == PSA_ALG_CMAC ) + mode = MBEDTLS_MODE_ECB; + else + return( NULL ); + + switch( key_type ) + { + case PSA_KEY_TYPE_AES: + cipher_id_tmp = MBEDTLS_CIPHER_ID_AES; + break; + case PSA_KEY_TYPE_ARIA: + cipher_id_tmp = MBEDTLS_CIPHER_ID_ARIA; + break; + case PSA_KEY_TYPE_DES: + /* key_bits is 64 for Single-DES, 128 for two-key Triple-DES, + * and 192 for three-key Triple-DES. */ + if( key_bits == 64 ) + cipher_id_tmp = MBEDTLS_CIPHER_ID_DES; + else + cipher_id_tmp = MBEDTLS_CIPHER_ID_3DES; + /* mbedtls doesn't recognize two-key Triple-DES as an algorithm, + * but two-key Triple-DES is functionally three-key Triple-DES + * with K1=K3, so that's how we present it to mbedtls. */ + if( key_bits == 128 ) + key_bits = 192; + break; + case PSA_KEY_TYPE_CAMELLIA: + cipher_id_tmp = MBEDTLS_CIPHER_ID_CAMELLIA; + break; + case PSA_KEY_TYPE_ARC4: + cipher_id_tmp = MBEDTLS_CIPHER_ID_ARC4; + break; + case PSA_KEY_TYPE_CHACHA20: + cipher_id_tmp = MBEDTLS_CIPHER_ID_CHACHA20; + break; + default: + return( NULL ); + } + if( cipher_id != NULL ) + *cipher_id = cipher_id_tmp; + + return( mbedtls_cipher_info_from_values( cipher_id_tmp, + (int) key_bits, mode ) ); +} + +#if defined(MBEDTLS_PSA_BUILTIN_CIPHER) + +static psa_status_t psa_cipher_setup( + mbedtls_psa_cipher_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, + mbedtls_operation_t cipher_operation ) +{ + int ret = 0; + size_t key_bits; + const mbedtls_cipher_info_t *cipher_info = NULL; + psa_key_type_t key_type = attributes->core.type; + + (void)key_buffer_size; + + mbedtls_cipher_init( &operation->ctx.cipher ); + + operation->alg = alg; + key_bits = attributes->core.bits; + cipher_info = mbedtls_cipher_info_from_psa( alg, key_type, + key_bits, NULL ); + if( cipher_info == NULL ) + return( PSA_ERROR_NOT_SUPPORTED ); + + ret = mbedtls_cipher_setup( &operation->ctx.cipher, cipher_info ); + if( ret != 0 ) + goto exit; + +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES) + if( key_type == PSA_KEY_TYPE_DES && key_bits == 128 ) + { + /* Two-key Triple-DES is 3-key Triple-DES with K1=K3 */ + uint8_t keys[24]; + memcpy( keys, key_buffer, 16 ); + memcpy( keys + 16, key_buffer, 8 ); + ret = mbedtls_cipher_setkey( &operation->ctx.cipher, + keys, + 192, cipher_operation ); + } + else +#endif + { + ret = mbedtls_cipher_setkey( &operation->ctx.cipher, key_buffer, + (int) key_bits, cipher_operation ); + } + if( ret != 0 ) + goto exit; + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7) + switch( alg ) + { + case PSA_ALG_CBC_NO_PADDING: + ret = mbedtls_cipher_set_padding_mode( &operation->ctx.cipher, + MBEDTLS_PADDING_NONE ); + break; + case PSA_ALG_CBC_PKCS7: + ret = mbedtls_cipher_set_padding_mode( &operation->ctx.cipher, + MBEDTLS_PADDING_PKCS7 ); + break; + default: + /* The algorithm doesn't involve padding. */ + ret = 0; + break; + } + if( ret != 0 ) + goto exit; +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING || + MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7 */ + + operation->block_length = ( PSA_ALG_IS_STREAM_CIPHER( alg ) ? 1 : + PSA_BLOCK_CIPHER_BLOCK_LENGTH( key_type ) ); + operation->iv_length = PSA_CIPHER_IV_LENGTH( key_type, alg ); + +exit: + return( mbedtls_to_psa_error( ret ) ); +} + +psa_status_t mbedtls_psa_cipher_encrypt_setup( + mbedtls_psa_cipher_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg ) +{ + return( psa_cipher_setup( operation, attributes, + key_buffer, key_buffer_size, + alg, MBEDTLS_ENCRYPT ) ); +} + +psa_status_t mbedtls_psa_cipher_decrypt_setup( + mbedtls_psa_cipher_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg ) +{ + return( psa_cipher_setup( operation, attributes, + key_buffer, key_buffer_size, + alg, MBEDTLS_DECRYPT ) ); +} + +psa_status_t mbedtls_psa_cipher_set_iv( + mbedtls_psa_cipher_operation_t *operation, + const uint8_t *iv, size_t iv_length ) +{ + if( iv_length != operation->iv_length ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + return( mbedtls_to_psa_error( + mbedtls_cipher_set_iv( &operation->ctx.cipher, + iv, iv_length ) ) ); +} + +/** Process input for which the algorithm is set to ECB mode. + * + * This requires manual processing, since the PSA API is defined as being + * able to process arbitrary-length calls to psa_cipher_update() with ECB mode, + * but the underlying mbedtls_cipher_update only takes full blocks. + * + * \param ctx The mbedtls cipher context to use. It must have been + * set up for ECB. + * \param[in] input The input plaintext or ciphertext to process. + * \param input_length The number of bytes to process from \p input. + * This does not need to be aligned to a block boundary. + * If there is a partial block at the end of the input, + * it is stored in \p ctx for future processing. + * \param output The buffer where the output is written. It must be + * at least `BS * floor((p + input_length) / BS)` bytes + * long, where `p` is the number of bytes in the + * unprocessed partial block in \p ctx (with + * `0 <= p <= BS - 1`) and `BS` is the block size. + * \param output_length On success, the number of bytes written to \p output. + * \c 0 on error. + * + * \return #PSA_SUCCESS or an error from a hardware accelerator + */ +static psa_status_t psa_cipher_update_ecb( + mbedtls_cipher_context_t *ctx, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t *output_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + size_t block_size = ctx->cipher_info->block_size; + size_t internal_output_length = 0; + *output_length = 0; + + if( input_length == 0 ) + { + status = PSA_SUCCESS; + goto exit; + } + + if( ctx->unprocessed_len > 0 ) + { + /* Fill up to block size, and run the block if there's a full one. */ + size_t bytes_to_copy = block_size - ctx->unprocessed_len; + + if( input_length < bytes_to_copy ) + bytes_to_copy = input_length; + + memcpy( &( ctx->unprocessed_data[ctx->unprocessed_len] ), + input, bytes_to_copy ); + input_length -= bytes_to_copy; + input += bytes_to_copy; + ctx->unprocessed_len += bytes_to_copy; + + if( ctx->unprocessed_len == block_size ) + { + status = mbedtls_to_psa_error( + mbedtls_cipher_update( ctx, + ctx->unprocessed_data, + block_size, + output, &internal_output_length ) ); + + if( status != PSA_SUCCESS ) + goto exit; + + output += internal_output_length; + *output_length += internal_output_length; + ctx->unprocessed_len = 0; + } + } + + while( input_length >= block_size ) + { + /* Run all full blocks we have, one by one */ + status = mbedtls_to_psa_error( + mbedtls_cipher_update( ctx, input, + block_size, + output, &internal_output_length ) ); + + if( status != PSA_SUCCESS ) + goto exit; + + input_length -= block_size; + input += block_size; + + output += internal_output_length; + *output_length += internal_output_length; + } + + if( input_length > 0 ) + { + /* Save unprocessed bytes for later processing */ + memcpy( &( ctx->unprocessed_data[ctx->unprocessed_len] ), + input, input_length ); + ctx->unprocessed_len += input_length; + } + + status = PSA_SUCCESS; + +exit: + return( status ); +} + +psa_status_t mbedtls_psa_cipher_update( + mbedtls_psa_cipher_operation_t *operation, + const uint8_t *input, size_t input_length, + uint8_t *output, size_t output_size, size_t *output_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + size_t expected_output_size; + + if( ! PSA_ALG_IS_STREAM_CIPHER( operation->alg ) ) + { + /* Take the unprocessed partial block left over from previous + * update calls, if any, plus the input to this call. Remove + * the last partial block, if any. You get the data that will be + * output in this call. */ + expected_output_size = + ( operation->ctx.cipher.unprocessed_len + input_length ) + / operation->block_length * operation->block_length; + } + else + { + expected_output_size = input_length; + } + + if( output_size < expected_output_size ) + return( PSA_ERROR_BUFFER_TOO_SMALL ); + + if( operation->alg == PSA_ALG_ECB_NO_PADDING ) + { + /* mbedtls_cipher_update has an API inconsistency: it will only + * process a single block at a time in ECB mode. Abstract away that + * inconsistency here to match the PSA API behaviour. */ + status = psa_cipher_update_ecb( &operation->ctx.cipher, + input, + input_length, + output, + output_length ); + } + else + { + status = mbedtls_to_psa_error( + mbedtls_cipher_update( &operation->ctx.cipher, input, + input_length, output, output_length ) ); + + if( *output_length > output_size ) + return( PSA_ERROR_CORRUPTION_DETECTED ); + } + + return( status ); +} + +psa_status_t mbedtls_psa_cipher_finish( + mbedtls_psa_cipher_operation_t *operation, + uint8_t *output, size_t output_size, size_t *output_length ) +{ + psa_status_t status = PSA_ERROR_GENERIC_ERROR; + uint8_t temp_output_buffer[MBEDTLS_MAX_BLOCK_LENGTH]; + + if( operation->ctx.cipher.unprocessed_len != 0 ) + { + if( operation->alg == PSA_ALG_ECB_NO_PADDING || + operation->alg == PSA_ALG_CBC_NO_PADDING ) + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + } + + status = mbedtls_to_psa_error( + mbedtls_cipher_finish( &operation->ctx.cipher, + temp_output_buffer, + output_length ) ); + if( status != PSA_SUCCESS ) + goto exit; + + if( *output_length == 0 ) + ; /* Nothing to copy. Note that output may be NULL in this case. */ + else if( output_size >= *output_length ) + memcpy( output, temp_output_buffer, *output_length ); + else + status = PSA_ERROR_BUFFER_TOO_SMALL; + +exit: + mbedtls_platform_zeroize( temp_output_buffer, + sizeof( temp_output_buffer ) ); + + return( status ); +} + +psa_status_t mbedtls_psa_cipher_abort( + mbedtls_psa_cipher_operation_t *operation ) +{ + /* Sanity check (shouldn't happen: operation->alg should + * always have been initialized to a valid value). */ + if( ! PSA_ALG_IS_CIPHER( operation->alg ) ) + return( PSA_ERROR_BAD_STATE ); + + mbedtls_cipher_free( &operation->ctx.cipher ); + + return( PSA_SUCCESS ); +} + +psa_status_t mbedtls_psa_cipher_encrypt( const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *iv, + size_t iv_length, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + mbedtls_psa_cipher_operation_t operation = MBEDTLS_PSA_CIPHER_OPERATION_INIT; + size_t update_output_length, finish_output_length; + + status = mbedtls_psa_cipher_encrypt_setup( &operation, attributes, + key_buffer, key_buffer_size, + alg ); + if( status != PSA_SUCCESS ) + goto exit; + + if( iv_length > 0 ) + { + status = mbedtls_psa_cipher_set_iv( &operation, iv, iv_length ); + if( status != PSA_SUCCESS ) + goto exit; + } + + status = mbedtls_psa_cipher_update( &operation, input, input_length, + output, output_size, &update_output_length ); + if( status != PSA_SUCCESS ) + goto exit; + + status = mbedtls_psa_cipher_finish( &operation, output + update_output_length, + output_size - update_output_length, + &finish_output_length ); + if( status != PSA_SUCCESS ) + goto exit; + + *output_length = update_output_length + finish_output_length; + +exit: + if( status == PSA_SUCCESS ) + status = mbedtls_psa_cipher_abort( &operation ); + else + mbedtls_psa_cipher_abort( &operation ); + + return( status ); +} + +psa_status_t mbedtls_psa_cipher_decrypt( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + mbedtls_psa_cipher_operation_t operation = MBEDTLS_PSA_CIPHER_OPERATION_INIT; + size_t olength, accumulated_length; + + status = mbedtls_psa_cipher_decrypt_setup( &operation, attributes, + key_buffer, key_buffer_size, + alg ); + if( status != PSA_SUCCESS ) + goto exit; + + if( operation.iv_length > 0 ) + { + status = mbedtls_psa_cipher_set_iv( &operation, + input, operation.iv_length ); + if( status != PSA_SUCCESS ) + goto exit; + } + + status = mbedtls_psa_cipher_update( &operation, input + operation.iv_length, + input_length - operation.iv_length, + output, output_size, &olength ); + if( status != PSA_SUCCESS ) + goto exit; + + accumulated_length = olength; + + status = mbedtls_psa_cipher_finish( &operation, output + accumulated_length, + output_size - accumulated_length, + &olength ); + if( status != PSA_SUCCESS ) + goto exit; + + *output_length = accumulated_length + olength; + +exit: + if ( status == PSA_SUCCESS ) + status = mbedtls_psa_cipher_abort( &operation ); + else + mbedtls_psa_cipher_abort( &operation ); + + return( status ); +} +#endif /* MBEDTLS_PSA_BUILTIN_CIPHER */ + +#endif /* MBEDTLS_PSA_CRYPTO_C */ diff --git a/Externals/mbedtls/library/psa_crypto_cipher.h b/Externals/mbedtls/library/psa_crypto_cipher.h new file mode 100644 index 000000000000..fae98473c48e --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_cipher.h @@ -0,0 +1,305 @@ +/* + * PSA cipher driver entry points + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_CIPHER_H +#define PSA_CRYPTO_CIPHER_H + +#include +#include + +/** Get Mbed TLS cipher information given the cipher algorithm PSA identifier + * as well as the PSA type and size of the key to be used with the cipher + * algorithm. + * + * \param alg PSA cipher algorithm identifier + * \param key_type PSA key type + * \param key_bits Size of the key in bits + * \param[out] cipher_id Mbed TLS cipher algorithm identifier + * + * \return The Mbed TLS cipher information of the cipher algorithm. + * \c NULL if the PSA cipher algorithm is not supported. + */ +const mbedtls_cipher_info_t *mbedtls_cipher_info_from_psa( + psa_algorithm_t alg, psa_key_type_t key_type, size_t key_bits, + mbedtls_cipher_id_t *cipher_id ); + +/** + * \brief Set the key for a multipart symmetric encryption operation. + * + * \note The signature of this function is that of a PSA driver + * cipher_encrypt_setup entry point. This function behaves as a + * cipher_encrypt_setup entry point as defined in the PSA driver + * interface specification for transparent drivers. + * + * \param[in,out] operation The operation object to set up. It has been + * initialized as per the documentation for + * #psa_cipher_operation_t and not yet in use. + * \param[in] attributes The attributes of the key to use for the + * operation. + * \param[in] key_buffer The buffer containing the key context. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[in] alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_cipher_encrypt_setup( + mbedtls_psa_cipher_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg ); + +/** + * \brief Set the key for a multipart symmetric decryption operation. + * + * \note The signature of this function is that of a PSA driver + * cipher_decrypt_setup entry point. This function behaves as a + * cipher_decrypt_setup entry point as defined in the PSA driver + * interface specification for transparent drivers. + * + * \param[in,out] operation The operation object to set up. It has been + * initialized as per the documentation for + * #psa_cipher_operation_t and not yet in use. + * \param[in] attributes The attributes of the key to use for the + * operation. + * \param[in] key_buffer The buffer containing the key context. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[in] alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_cipher_decrypt_setup( + mbedtls_psa_cipher_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg ); + +/** Set the IV for a symmetric encryption or decryption operation. + * + * This function sets the IV (initialization vector), nonce + * or initial counter value for the encryption or decryption operation. + * + * \note The signature of this function is that of a PSA driver + * cipher_set_iv entry point. This function behaves as a + * cipher_set_iv entry point as defined in the PSA driver + * interface specification for transparent drivers. + * + * \param[in,out] operation Active cipher operation. + * \param[in] iv Buffer containing the IV to use. + * \param[in] iv_length Size of the IV in bytes. It is guaranteed by + * the core to be less or equal to + * PSA_CIPHER_IV_MAX_SIZE. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The size of \p iv is not acceptable for the chosen algorithm, + * or the chosen algorithm does not use an IV. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t mbedtls_psa_cipher_set_iv( + mbedtls_psa_cipher_operation_t *operation, + const uint8_t *iv, size_t iv_length ); + +/** Encrypt or decrypt a message fragment in an active cipher operation. + * + * \note The signature of this function is that of a PSA driver + * cipher_update entry point. This function behaves as a + * cipher_update entry point as defined in the PSA driver + * interface specification for transparent drivers. + * + * \param[in,out] operation Active cipher operation. + * \param[in] input Buffer containing the message fragment to + * encrypt or decrypt. + * \param[in] input_length Size of the \p input buffer in bytes. + * \param[out] output Buffer where the output is to be written. + * \param[in] output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t mbedtls_psa_cipher_update( + mbedtls_psa_cipher_operation_t *operation, + const uint8_t *input, size_t input_length, + uint8_t *output, size_t output_size, size_t *output_length ); + +/** Finish encrypting or decrypting a message in a cipher operation. + * + * \note The signature of this function is that of a PSA driver + * cipher_finish entry point. This function behaves as a + * cipher_finish entry point as defined in the PSA driver + * interface specification for transparent drivers. + * + * \param[in,out] operation Active cipher operation. + * \param[out] output Buffer where the output is to be written. + * \param[in] output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total input size passed to this operation is not valid for + * this particular algorithm. For example, the algorithm is a based + * on block cipher and requires a whole number of blocks, but the + * total input size is not a multiple of the block size. + * \retval #PSA_ERROR_INVALID_PADDING + * This is a decryption operation for an algorithm that includes + * padding, and the ciphertext does not contain valid padding. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t mbedtls_psa_cipher_finish( + mbedtls_psa_cipher_operation_t *operation, + uint8_t *output, size_t output_size, size_t *output_length ); + +/** Abort a cipher operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation. + * + * \note The signature of this function is that of a PSA driver + * cipher_abort entry point. This function behaves as a + * cipher_abort entry point as defined in the PSA driver + * interface specification for transparent drivers. + * + * \param[in,out] operation Initialized cipher operation. + * + * \retval #PSA_SUCCESS + */ +psa_status_t mbedtls_psa_cipher_abort( mbedtls_psa_cipher_operation_t *operation ); + +/** Encrypt a message using a symmetric cipher. + * + * \note The signature of this function is that of a PSA driver + * cipher_encrypt entry point. This function behaves as a + * cipher_encrypt entry point as defined in the PSA driver + * interface specification for transparent drivers. + * + * \param[in] attributes The attributes of the key to use for the + * operation. + * \param[in] key_buffer The buffer containing the key context. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[in] alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * \param[in] iv Buffer containing the IV for encryption. The + * IV has been generated by the core. + * \param[in] iv_length Size of the \p iv in bytes. + * \param[in] input Buffer containing the message to encrypt. + * \param[in] input_length Size of the \p input buffer in bytes. + * \param[in,out] output Buffer where the output is to be written. + * \param[in] output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes that make up + * the returned output. Initialized to zero + * by the core. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The size \p iv_length is not acceptable for the chosen algorithm, + * or the chosen algorithm does not use an IV. + * The total input size passed to this operation is not valid for + * this particular algorithm. For example, the algorithm is a based + * on block cipher and requires a whole number of blocks, but the + * total input size is not a multiple of the block size. + * \retval #PSA_ERROR_INVALID_PADDING + * This is a decryption operation for an algorithm that includes + * padding, and the ciphertext does not contain valid padding. + */ +psa_status_t mbedtls_psa_cipher_encrypt( const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *iv, + size_t iv_length, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length ); + +/** Decrypt a message using a symmetric cipher. + * + * \note The signature of this function is that of a PSA driver + * cipher_decrypt entry point. This function behaves as a + * cipher_decrypt entry point as defined in the PSA driver + * interface specification for transparent drivers. + * + * \param[in] attributes The attributes of the key to use for the + * operation. + * \param[in] key_buffer The buffer containing the key context. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[in] alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * \param[in] input Buffer containing the iv and the ciphertext. + * \param[in] input_length Size of the \p input buffer in bytes. + * \param[out] output Buffer where the output is to be written. + * \param[in] output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes that make up + * the returned output. Initialized to zero + * by the core. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The size of \p iv is not acceptable for the chosen algorithm, + * or the chosen algorithm does not use an IV. + * The total input size passed to this operation is not valid for + * this particular algorithm. For example, the algorithm is a based + * on block cipher and requires a whole number of blocks, but the + * total input size is not a multiple of the block size. + * \retval #PSA_ERROR_INVALID_PADDING + * This is a decryption operation for an algorithm that includes + * padding, and the ciphertext does not contain valid padding. + */ +psa_status_t mbedtls_psa_cipher_decrypt( const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length ); + +#endif /* PSA_CRYPTO_CIPHER_H */ diff --git a/Externals/mbedtls/library/psa_crypto_client.c b/Externals/mbedtls/library/psa_crypto_client.c new file mode 100644 index 000000000000..629feb7dfaf3 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_client.c @@ -0,0 +1,82 @@ +/* + * PSA crypto client code + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common.h" +#include "psa/crypto.h" + +#if defined(MBEDTLS_PSA_CRYPTO_CLIENT) + +#include +#include "mbedtls/platform.h" +#if !defined(MBEDTLS_PLATFORM_C) +#define mbedtls_calloc calloc +#define mbedtls_free free +#endif + +void psa_reset_key_attributes( psa_key_attributes_t *attributes ) +{ + mbedtls_free( attributes->domain_parameters ); + memset( attributes, 0, sizeof( *attributes ) ); +} + +psa_status_t psa_set_key_domain_parameters( psa_key_attributes_t *attributes, + psa_key_type_t type, + const uint8_t *data, + size_t data_length ) +{ + uint8_t *copy = NULL; + + if( data_length != 0 ) + { + copy = mbedtls_calloc( 1, data_length ); + if( copy == NULL ) + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + memcpy( copy, data, data_length ); + } + /* After this point, this function is guaranteed to succeed, so it + * can start modifying `*attributes`. */ + + if( attributes->domain_parameters != NULL ) + { + mbedtls_free( attributes->domain_parameters ); + attributes->domain_parameters = NULL; + attributes->domain_parameters_size = 0; + } + + attributes->domain_parameters = copy; + attributes->domain_parameters_size = data_length; + attributes->core.type = type; + return( PSA_SUCCESS ); +} + +psa_status_t psa_get_key_domain_parameters( + const psa_key_attributes_t *attributes, + uint8_t *data, size_t data_size, size_t *data_length ) +{ + if( attributes->domain_parameters_size > data_size ) + return( PSA_ERROR_BUFFER_TOO_SMALL ); + *data_length = attributes->domain_parameters_size; + if( attributes->domain_parameters_size != 0 ) + memcpy( data, attributes->domain_parameters, + attributes->domain_parameters_size ); + return( PSA_SUCCESS ); +} + +#endif /* MBEDTLS_PSA_CRYPTO_CLIENT */ diff --git a/Externals/mbedtls/library/psa_crypto_core.h b/Externals/mbedtls/library/psa_crypto_core.h new file mode 100644 index 000000000000..4420ec256986 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_core.h @@ -0,0 +1,535 @@ +/* + * PSA crypto core internal interfaces + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_CORE_H +#define PSA_CRYPTO_CORE_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "psa/crypto.h" +#include "psa/crypto_se_driver.h" + +/** Constant-time buffer comparison + * + * \param[in] a Left-hand buffer for comparison. + * \param[in] b Right-hand buffer for comparison. + * \param n Amount of bytes to compare. + * + * \return 0 if the buffer contents are equal, non-zero otherwise + */ +static inline int mbedtls_psa_safer_memcmp( + const uint8_t *a, const uint8_t *b, size_t n ) +{ + size_t i; + unsigned char diff = 0; + + for( i = 0; i < n; i++ ) + diff |= a[i] ^ b[i]; + + return( diff ); +} + +/** The data structure representing a key slot, containing key material + * and metadata for one key. + */ +typedef struct +{ + psa_core_key_attributes_t attr; + + /* + * Number of locks on the key slot held by the library. + * + * This counter is incremented by one each time a library function + * retrieves through one of the dedicated internal API a pointer to the + * key slot. + * + * This counter is decremented by one each time a library function stops + * accessing the key slot and states it by calling the + * psa_unlock_key_slot() API. + * + * This counter is used to prevent resetting the key slot while the library + * may access it. For example, such control is needed in the following + * scenarios: + * . In case of key slot starvation, all key slots contain the description + * of a key, and the library asks for the description of a persistent + * key not present in the key slots, the key slots currently accessed by + * the library cannot be reclaimed to free a key slot to load the + * persistent key. + * . In case of a multi-threaded application where one thread asks to close + * or purge or destroy a key while it is in used by the library through + * another thread. + */ + size_t lock_count; + + /* Dynamically allocated key data buffer. + * Format as specified in psa_export_key(). */ + struct key_data + { + uint8_t *data; + size_t bytes; + } key; +} psa_key_slot_t; + +/* A mask of key attribute flags used only internally. + * Currently there aren't any. */ +#define PSA_KA_MASK_INTERNAL_ONLY ( \ + 0 ) + +/** Test whether a key slot is occupied. + * + * A key slot is occupied iff the key type is nonzero. This works because + * no valid key can have 0 as its key type. + * + * \param[in] slot The key slot to test. + * + * \return 1 if the slot is occupied, 0 otherwise. + */ +static inline int psa_is_key_slot_occupied( const psa_key_slot_t *slot ) +{ + return( slot->attr.type != 0 ); +} + +/** Test whether a key slot is locked. + * + * A key slot is locked iff its lock counter is strictly greater than 0. + * + * \param[in] slot The key slot to test. + * + * \return 1 if the slot is locked, 0 otherwise. + */ +static inline int psa_is_key_slot_locked( const psa_key_slot_t *slot ) +{ + return( slot->lock_count > 0 ); +} + +/** Retrieve flags from psa_key_slot_t::attr::core::flags. + * + * \param[in] slot The key slot to query. + * \param mask The mask of bits to extract. + * + * \return The key attribute flags in the given slot, + * bitwise-anded with \p mask. + */ +static inline uint16_t psa_key_slot_get_flags( const psa_key_slot_t *slot, + uint16_t mask ) +{ + return( slot->attr.flags & mask ); +} + +/** Set flags in psa_key_slot_t::attr::core::flags. + * + * \param[in,out] slot The key slot to modify. + * \param mask The mask of bits to modify. + * \param value The new value of the selected bits. + */ +static inline void psa_key_slot_set_flags( psa_key_slot_t *slot, + uint16_t mask, + uint16_t value ) +{ + slot->attr.flags = ( ( ~mask & slot->attr.flags ) | + ( mask & value ) ); +} + +/** Turn on flags in psa_key_slot_t::attr::core::flags. + * + * \param[in,out] slot The key slot to modify. + * \param mask The mask of bits to set. + */ +static inline void psa_key_slot_set_bits_in_flags( psa_key_slot_t *slot, + uint16_t mask ) +{ + slot->attr.flags |= mask; +} + +/** Turn off flags in psa_key_slot_t::attr::core::flags. + * + * \param[in,out] slot The key slot to modify. + * \param mask The mask of bits to clear. + */ +static inline void psa_key_slot_clear_bits( psa_key_slot_t *slot, + uint16_t mask ) +{ + slot->attr.flags &= ~mask; +} + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) +/** Get the SE slot number of a key from the key slot storing its description. + * + * \param[in] slot The key slot to query. This must be a key slot storing + * the description of a key of a dynamically registered + * secure element, otherwise the behaviour is undefined. + */ +static inline psa_key_slot_number_t psa_key_slot_get_slot_number( + const psa_key_slot_t *slot ) +{ + return( *( (psa_key_slot_number_t *)( slot->key.data ) ) ); +} +#endif + +/** Completely wipe a slot in memory, including its policy. + * + * Persistent storage is not affected. + * + * \param[in,out] slot The key slot to wipe. + * + * \retval #PSA_SUCCESS + * Success. This includes the case of a key slot that was + * already fully wiped. + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t psa_wipe_key_slot( psa_key_slot_t *slot ); + +/** Try to allocate a buffer to an empty key slot. + * + * \param[in,out] slot Key slot to attach buffer to. + * \param[in] buffer_length Requested size of the buffer. + * + * \retval #PSA_SUCCESS + * The buffer has been successfully allocated. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * Not enough memory was available for allocation. + * \retval #PSA_ERROR_ALREADY_EXISTS + * Trying to allocate a buffer to a non-empty key slot. + */ +psa_status_t psa_allocate_buffer_to_slot( psa_key_slot_t *slot, + size_t buffer_length ); + +/** Wipe key data from a slot. Preserves metadata such as the policy. */ +psa_status_t psa_remove_key_data_from_memory( psa_key_slot_t *slot ); + +/** Copy key data (in export format) into an empty key slot. + * + * This function assumes that the slot does not contain + * any key material yet. On failure, the slot content is unchanged. + * + * \param[in,out] slot Key slot to copy the key into. + * \param[in] data Buffer containing the key material. + * \param data_length Size of the key buffer. + * + * \retval #PSA_SUCCESS + * The key has been copied successfully. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * Not enough memory was available for allocation of the + * copy buffer. + * \retval #PSA_ERROR_ALREADY_EXISTS + * There was other key material already present in the slot. + */ +psa_status_t psa_copy_key_material_into_slot( psa_key_slot_t *slot, + const uint8_t *data, + size_t data_length ); + +/** Convert an mbed TLS error code to a PSA error code + * + * \note This function is provided solely for the convenience of + * Mbed TLS and may be removed at any time without notice. + * + * \param ret An mbed TLS-thrown error code + * + * \return The corresponding PSA error code + */ +psa_status_t mbedtls_to_psa_error( int ret ); + +/** Get Mbed TLS cipher information given the cipher algorithm PSA identifier + * as well as the PSA type and size of the key to be used with the cipher + * algorithm. + * + * \param alg PSA cipher algorithm identifier + * \param key_type PSA key type + * \param key_bits Size of the key in bits + * \param[out] cipher_id Mbed TLS cipher algorithm identifier + * + * \return The Mbed TLS cipher information of the cipher algorithm. + * \c NULL if the PSA cipher algorithm is not supported. + */ +const mbedtls_cipher_info_t *mbedtls_cipher_info_from_psa( + psa_algorithm_t alg, psa_key_type_t key_type, size_t key_bits, + mbedtls_cipher_id_t *cipher_id ); + +/** Import a key in binary format. + * + * \note The signature of this function is that of a PSA driver + * import_key entry point. This function behaves as an import_key + * entry point as defined in the PSA driver interface specification for + * transparent drivers. + * + * \param[in] attributes The attributes for the key to import. + * \param[in] data The buffer containing the key data in import + * format. + * \param[in] data_length Size of the \p data buffer in bytes. + * \param[out] key_buffer The buffer to contain the key data in output + * format upon successful return. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. This + * size is greater or equal to \p data_length. + * \param[out] key_buffer_length The length of the data written in \p + * key_buffer in bytes. + * \param[out] bits The key size in number of bits. + * + * \retval #PSA_SUCCESS The key was imported successfully. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key data is not correctly formatted. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t psa_import_key_into_slot( + const psa_key_attributes_t *attributes, + const uint8_t *data, size_t data_length, + uint8_t *key_buffer, size_t key_buffer_size, + size_t *key_buffer_length, size_t *bits ); + +/** Export a key in binary format + * + * \note The signature of this function is that of a PSA driver export_key + * entry point. This function behaves as an export_key entry point as + * defined in the PSA driver interface specification. + * + * \param[in] attributes The attributes for the key to export. + * \param[in] key_buffer Material or context of the key to export. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[out] data Buffer where the key data is to be written. + * \param[in] data_size Size of the \p data buffer in bytes. + * \param[out] data_length On success, the number of bytes written in + * \p data + * + * \retval #PSA_SUCCESS The key was exported successfully. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t psa_export_key_internal( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + uint8_t *data, size_t data_size, size_t *data_length ); + +/** Export a public key or the public part of a key pair in binary format. + * + * \note The signature of this function is that of a PSA driver + * export_public_key entry point. This function behaves as an + * export_public_key entry point as defined in the PSA driver interface + * specification. + * + * \param[in] attributes The attributes for the key to export. + * \param[in] key_buffer Material or context of the key to export. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[out] data Buffer where the key data is to be written. + * \param[in] data_size Size of the \p data buffer in bytes. + * \param[out] data_length On success, the number of bytes written in + * \p data + * + * \retval #PSA_SUCCESS The public key was exported successfully. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t psa_export_public_key_internal( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + uint8_t *data, size_t data_size, size_t *data_length ); + +/** + * \brief Generate a key. + * + * \note The signature of the function is that of a PSA driver generate_key + * entry point. + * + * \param[in] attributes The attributes for the key to generate. + * \param[out] key_buffer Buffer where the key data is to be written. + * \param[in] key_buffer_size Size of \p key_buffer in bytes. + * \param[out] key_buffer_length On success, the number of bytes written in + * \p key_buffer. + * + * \retval #PSA_SUCCESS + * The key was generated successfully. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_NOT_SUPPORTED + * Key size in bits or type not supported. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of \p key_buffer is too small. + */ +psa_status_t psa_generate_key_internal( const psa_key_attributes_t *attributes, + uint8_t *key_buffer, + size_t key_buffer_size, + size_t *key_buffer_length ); + +/** Sign a message with a private key. For hash-and-sign algorithms, + * this includes the hashing step. + * + * \note The signature of this function is that of a PSA driver + * sign_message entry point. This function behaves as a sign_message + * entry point as defined in the PSA driver interface specification for + * transparent drivers. + * + * \note This function will call the driver for psa_sign_hash + * and go through driver dispatch again. + * + * \param[in] attributes The attributes of the key to use for the + * operation. + * \param[in] key_buffer The buffer containing the key context. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[in] alg A signature algorithm that is compatible with + * the type of the key. + * \param[in] input The input message to sign. + * \param[in] input_length Size of the \p input buffer in bytes. + * \param[out] signature Buffer where the signature is to be written. + * \param[in] signature_size Size of the \p signature buffer in bytes. + * \param[out] signature_length On success, the number of bytes + * that make up the returned signature value. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p signature buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and bit-size + * respectively of the key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + */ +psa_status_t psa_sign_message_builtin( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *input, size_t input_length, + uint8_t *signature, size_t signature_size, size_t *signature_length ); + +/** Verify the signature of a message with a public key, using + * a hash-and-sign verification algorithm. + * + * \note The signature of this function is that of a PSA driver + * verify_message entry point. This function behaves as a verify_message + * entry point as defined in the PSA driver interface specification for + * transparent drivers. + * + * \note This function will call the driver for psa_verify_hash + * and go through driver dispatch again. + * + * \param[in] attributes The attributes of the key to use for the + * operation. + * \param[in] key_buffer The buffer containing the key context. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[in] alg A signature algorithm that is compatible with + * the type of the key. + * \param[in] input The message whose signature is to be verified. + * \param[in] input_length Size of the \p input buffer in bytes. + * \param[in] signature Buffer containing the signature to verify. + * \param[in] signature_length Size of the \p signature buffer in bytes. + * + * \retval #PSA_SUCCESS + * The signature is valid. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The calculation was performed successfully, but the passed + * signature is not a valid signature. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t psa_verify_message_builtin( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *input, size_t input_length, + const uint8_t *signature, size_t signature_length ); + +/** Sign an already-calculated hash with a private key. + * + * \note The signature of this function is that of a PSA driver + * sign_hash entry point. This function behaves as a sign_hash + * entry point as defined in the PSA driver interface specification for + * transparent drivers. + * + * \param[in] attributes The attributes of the key to use for the + * operation. + * \param[in] key_buffer The buffer containing the key context. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[in] alg A signature algorithm that is compatible with + * the type of the key. + * \param[in] hash The hash or message to sign. + * \param[in] hash_length Size of the \p hash buffer in bytes. + * \param[out] signature Buffer where the signature is to be written. + * \param[in] signature_size Size of the \p signature buffer in bytes. + * \param[out] signature_length On success, the number of bytes + * that make up the returned signature value. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p signature buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and bit-size + * respectively of the key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + */ +psa_status_t psa_sign_hash_builtin( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + uint8_t *signature, size_t signature_size, size_t *signature_length ); + +/** + * \brief Verify the signature a hash or short message using a public key. + * + * \note The signature of this function is that of a PSA driver + * verify_hash entry point. This function behaves as a verify_hash + * entry point as defined in the PSA driver interface specification for + * transparent drivers. + * + * \param[in] attributes The attributes of the key to use for the + * operation. + * \param[in] key_buffer The buffer containing the key context. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[in] alg A signature algorithm that is compatible with + * the type of the key. + * \param[in] hash The hash or message whose signature is to be + * verified. + * \param[in] hash_length Size of the \p hash buffer in bytes. + * \param[in] signature Buffer containing the signature to verify. + * \param[in] signature_length Size of the \p signature buffer in bytes. + * + * \retval #PSA_SUCCESS + * The signature is valid. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The calculation was performed successfully, but the passed + * signature is not a valid signature. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t psa_verify_hash_builtin( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + const uint8_t *signature, size_t signature_length ); + +#endif /* PSA_CRYPTO_CORE_H */ diff --git a/Externals/mbedtls/library/psa_crypto_driver_wrappers.c b/Externals/mbedtls/library/psa_crypto_driver_wrappers.c new file mode 100644 index 000000000000..16166fc5a5ae --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_driver_wrappers.c @@ -0,0 +1,1863 @@ +/* + * Functions to delegate cryptographic operations to an available + * and appropriate accelerator. + * Warning: This file will be auto-generated in the future. + */ +/* Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "psa_crypto_aead.h" +#include "psa_crypto_cipher.h" +#include "psa_crypto_core.h" +#include "psa_crypto_driver_wrappers.h" +#include "psa_crypto_hash.h" +#include "psa_crypto_mac.h" + +#include "mbedtls/platform.h" + +#if defined(MBEDTLS_PSA_CRYPTO_C) + +#if defined(MBEDTLS_PSA_CRYPTO_DRIVERS) + +/* Include test driver definition when running tests */ +#if defined(PSA_CRYPTO_DRIVER_TEST) +#ifndef PSA_CRYPTO_DRIVER_PRESENT +#define PSA_CRYPTO_DRIVER_PRESENT +#endif +#ifndef PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT +#define PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT +#endif +#include "test/drivers/test_driver.h" +#endif /* PSA_CRYPTO_DRIVER_TEST */ + +/* Repeat above block for each JSON-declared driver during autogeneration */ +#endif /* MBEDTLS_PSA_CRYPTO_DRIVERS */ + +/* Auto-generated values depending on which drivers are registered. + * ID 0 is reserved for unallocated operations. + * ID 1 is reserved for the Mbed TLS software driver. */ +#define PSA_CRYPTO_MBED_TLS_DRIVER_ID (1) + +#if defined(PSA_CRYPTO_DRIVER_TEST) +#define PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID (2) +#define PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID (3) +#endif /* PSA_CRYPTO_DRIVER_TEST */ + +/* Support the 'old' SE interface when asked to */ +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) +/* PSA_CRYPTO_DRIVER_PRESENT is defined when either a new-style or old-style + * SE driver is present, to avoid unused argument errors at compile time. */ +#ifndef PSA_CRYPTO_DRIVER_PRESENT +#define PSA_CRYPTO_DRIVER_PRESENT +#endif +#include "psa_crypto_se.h" +#endif + +psa_status_t psa_driver_wrapper_init( void ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + status = psa_init_all_se_drivers( ); + if( status != PSA_SUCCESS ) + return( status ); +#endif + +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_init( ); + if( status != PSA_SUCCESS ) + return( status ); + + status = mbedtls_test_opaque_init( ); + if( status != PSA_SUCCESS ) + return( status ); +#endif + + (void) status; + return( PSA_SUCCESS ); +} + +void psa_driver_wrapper_free( void ) +{ +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + /* Unregister all secure element drivers, so that we restart from + * a pristine state. */ + psa_unregister_all_se_drivers( ); +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + +#if defined(PSA_CRYPTO_DRIVER_TEST) + mbedtls_test_transparent_free( ); + mbedtls_test_opaque_free( ); +#endif +} + +/* Start delegation functions */ +psa_status_t psa_driver_wrapper_sign_message( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *signature, + size_t signature_size, + size_t *signature_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_location_t location = + PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ); + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + /* Key is stored in the slot in export representation, so + * cycle through all known transparent accelerators */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_signature_sign_message( + attributes, + key_buffer, + key_buffer_size, + alg, + input, + input_length, + signature, + signature_size, + signature_length ); + /* Declared with fallback == true */ + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + break; + + /* Add cases for opaque driver here */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: + status = mbedtls_test_opaque_signature_sign_message( + attributes, + key_buffer, + key_buffer_size, + alg, + input, + input_length, + signature, + signature_size, + signature_length ); + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); + break; +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + default: + /* Key is declared with a lifetime not known to us */ + (void)status; + break; + } + + return( psa_sign_message_builtin( attributes, + key_buffer, + key_buffer_size, + alg, + input, + input_length, + signature, + signature_size, + signature_length ) ); +} + +psa_status_t psa_driver_wrapper_verify_message( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *signature, + size_t signature_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_location_t location = + PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ); + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + /* Key is stored in the slot in export representation, so + * cycle through all known transparent accelerators */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_signature_verify_message( + attributes, + key_buffer, + key_buffer_size, + alg, + input, + input_length, + signature, + signature_length ); + /* Declared with fallback == true */ + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + break; + + /* Add cases for opaque driver here */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: + return( mbedtls_test_opaque_signature_verify_message( + attributes, + key_buffer, + key_buffer_size, + alg, + input, + input_length, + signature, + signature_length ) ); + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); + break; +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + default: + /* Key is declared with a lifetime not known to us */ + (void)status; + break; + } + + return( psa_verify_message_builtin( attributes, + key_buffer, + key_buffer_size, + alg, + input, + input_length, + signature, + signature_length ) ); +} + +psa_status_t psa_driver_wrapper_sign_hash( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + uint8_t *signature, size_t signature_size, size_t *signature_length ) +{ + /* Try dynamically-registered SE interface first */ +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + const psa_drv_se_t *drv; + psa_drv_se_context_t *drv_context; + + if( psa_get_se_driver( attributes->core.lifetime, &drv, &drv_context ) ) + { + if( drv->asymmetric == NULL || + drv->asymmetric->p_sign == NULL ) + { + /* Key is defined in SE, but we have no way to exercise it */ + return( PSA_ERROR_NOT_SUPPORTED ); + } + return( drv->asymmetric->p_sign( + drv_context, *( (psa_key_slot_number_t *)key_buffer ), + alg, hash, hash_length, + signature, signature_size, signature_length ) ); + } +#endif /* PSA_CRYPTO_SE_C */ + + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_location_t location = + PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ); + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + /* Key is stored in the slot in export representation, so + * cycle through all known transparent accelerators */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_signature_sign_hash( attributes, + key_buffer, + key_buffer_size, + alg, + hash, + hash_length, + signature, + signature_size, + signature_length ); + /* Declared with fallback == true */ + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + /* Fell through, meaning no accelerator supports this operation */ + return( psa_sign_hash_builtin( attributes, + key_buffer, + key_buffer_size, + alg, + hash, + hash_length, + signature, + signature_size, + signature_length ) ); + + /* Add cases for opaque driver here */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: + return( mbedtls_test_opaque_signature_sign_hash( attributes, + key_buffer, + key_buffer_size, + alg, + hash, + hash_length, + signature, + signature_size, + signature_length ) ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + default: + /* Key is declared with a lifetime not known to us */ + (void)status; + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} + +psa_status_t psa_driver_wrapper_verify_hash( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + const uint8_t *signature, size_t signature_length ) +{ + /* Try dynamically-registered SE interface first */ +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + const psa_drv_se_t *drv; + psa_drv_se_context_t *drv_context; + + if( psa_get_se_driver( attributes->core.lifetime, &drv, &drv_context ) ) + { + if( drv->asymmetric == NULL || + drv->asymmetric->p_verify == NULL ) + { + /* Key is defined in SE, but we have no way to exercise it */ + return( PSA_ERROR_NOT_SUPPORTED ); + } + return( drv->asymmetric->p_verify( + drv_context, *( (psa_key_slot_number_t *)key_buffer ), + alg, hash, hash_length, + signature, signature_length ) ); + } +#endif /* PSA_CRYPTO_SE_C */ + + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_location_t location = + PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ); + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + /* Key is stored in the slot in export representation, so + * cycle through all known transparent accelerators */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_signature_verify_hash( + attributes, + key_buffer, + key_buffer_size, + alg, + hash, + hash_length, + signature, + signature_length ); + /* Declared with fallback == true */ + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + + return( psa_verify_hash_builtin( attributes, + key_buffer, + key_buffer_size, + alg, + hash, + hash_length, + signature, + signature_length ) ); + + /* Add cases for opaque driver here */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: + return( mbedtls_test_opaque_signature_verify_hash( attributes, + key_buffer, + key_buffer_size, + alg, + hash, + hash_length, + signature, + signature_length ) ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + default: + /* Key is declared with a lifetime not known to us */ + (void)status; + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} + +/** Get the key buffer size required to store the key material of a key + * associated with an opaque driver without storage. + * + * \param[in] attributes The key attributes. + * \param[out] key_buffer_size Minimum buffer size to contain the key material + * + * \retval #PSA_SUCCESS + * The minimum size for a buffer to contain the key material has been + * returned successfully. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The size in bits of the key is not valid. + * \retval #PSA_ERROR_NOT_SUPPORTED + * The type and/or the size in bits of the key or the combination of + * the two is not supported. + */ +psa_status_t psa_driver_wrapper_get_key_buffer_size( + const psa_key_attributes_t *attributes, + size_t *key_buffer_size ) +{ + psa_key_location_t location = PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ); + psa_key_type_t key_type = attributes->core.type; + size_t key_bits = attributes->core.bits; + + *key_buffer_size = 0; + switch( location ) + { +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: +#if defined(MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS) + /* Emulate property 'builtin_key_size' */ + if( psa_key_id_is_builtin( + MBEDTLS_SVC_KEY_ID_GET_KEY_ID( + psa_get_key_id( attributes ) ) ) ) + { + *key_buffer_size = sizeof( psa_drv_slot_number_t ); + return( PSA_SUCCESS ); + } +#endif /* MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */ + *key_buffer_size = mbedtls_test_size_function( key_type, key_bits ); + return( ( *key_buffer_size != 0 ) ? + PSA_SUCCESS : PSA_ERROR_NOT_SUPPORTED ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ + + default: + (void)key_type; + (void)key_bits; + return( PSA_ERROR_NOT_SUPPORTED ); + } +} + +psa_status_t psa_driver_wrapper_generate_key( + const psa_key_attributes_t *attributes, + uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_location_t location = + PSA_KEY_LIFETIME_GET_LOCATION(attributes->core.lifetime); + + /* Try dynamically-registered SE interface first */ +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + const psa_drv_se_t *drv; + psa_drv_se_context_t *drv_context; + + if( psa_get_se_driver( attributes->core.lifetime, &drv, &drv_context ) ) + { + size_t pubkey_length = 0; /* We don't support this feature yet */ + if( drv->key_management == NULL || + drv->key_management->p_generate == NULL ) + { + /* Key is defined as being in SE, but we have no way to generate it */ + return( PSA_ERROR_NOT_SUPPORTED ); + } + return( drv->key_management->p_generate( + drv_context, + *( (psa_key_slot_number_t *)key_buffer ), + attributes, NULL, 0, &pubkey_length ) ); + } +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) + /* Transparent drivers are limited to generating asymmetric keys */ + if( PSA_KEY_TYPE_IS_ASYMMETRIC( attributes->core.type ) ) + { + /* Cycle through all known transparent accelerators */ +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_generate_key( + attributes, key_buffer, key_buffer_size, + key_buffer_length ); + /* Declared with fallback == true */ + if( status != PSA_ERROR_NOT_SUPPORTED ) + break; +#endif /* PSA_CRYPTO_DRIVER_TEST */ + } +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + + /* Software fallback */ + status = psa_generate_key_internal( + attributes, key_buffer, key_buffer_size, key_buffer_length ); + break; + + /* Add cases for opaque driver here */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: + status = mbedtls_test_opaque_generate_key( + attributes, key_buffer, key_buffer_size, key_buffer_length ); + break; +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + + default: + /* Key is declared with a lifetime not known to us */ + status = PSA_ERROR_INVALID_ARGUMENT; + break; + } + + return( status ); +} + +psa_status_t psa_driver_wrapper_import_key( + const psa_key_attributes_t *attributes, + const uint8_t *data, + size_t data_length, + uint8_t *key_buffer, + size_t key_buffer_size, + size_t *key_buffer_length, + size_t *bits ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_location_t location = PSA_KEY_LIFETIME_GET_LOCATION( + psa_get_key_lifetime( attributes ) ); + + /* Try dynamically-registered SE interface first */ +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + const psa_drv_se_t *drv; + psa_drv_se_context_t *drv_context; + + if( psa_get_se_driver( attributes->core.lifetime, &drv, &drv_context ) ) + { + if( drv->key_management == NULL || + drv->key_management->p_import == NULL ) + return( PSA_ERROR_NOT_SUPPORTED ); + + /* The driver should set the number of key bits, however in + * case it doesn't, we initialize bits to an invalid value. */ + *bits = PSA_MAX_KEY_BITS + 1; + status = drv->key_management->p_import( + drv_context, + *( (psa_key_slot_number_t *)key_buffer ), + attributes, data, data_length, bits ); + + if( status != PSA_SUCCESS ) + return( status ); + + if( (*bits) > PSA_MAX_KEY_BITS ) + return( PSA_ERROR_NOT_SUPPORTED ); + + return( PSA_SUCCESS ); + } +#endif /* PSA_CRYPTO_SE_C */ + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + /* Key is stored in the slot in export representation, so + * cycle through all known transparent accelerators */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_import_key( + attributes, + data, data_length, + key_buffer, key_buffer_size, + key_buffer_length, bits ); + /* Declared with fallback == true */ + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + /* Fell through, meaning no accelerator supports this operation */ + return( psa_import_key_into_slot( attributes, + data, data_length, + key_buffer, key_buffer_size, + key_buffer_length, bits ) ); + + default: + /* Importing a key with external storage in not yet supported. + * Return in error indicating that the lifetime is not valid. */ + (void)status; + return( PSA_ERROR_INVALID_ARGUMENT ); + } + +} + +psa_status_t psa_driver_wrapper_export_key( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + uint8_t *data, size_t data_size, size_t *data_length ) + +{ + psa_status_t status = PSA_ERROR_INVALID_ARGUMENT; + psa_key_location_t location = PSA_KEY_LIFETIME_GET_LOCATION( + psa_get_key_lifetime( attributes ) ); + + /* Try dynamically-registered SE interface first */ +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + const psa_drv_se_t *drv; + psa_drv_se_context_t *drv_context; + + if( psa_get_se_driver( attributes->core.lifetime, &drv, &drv_context ) ) + { + if( ( drv->key_management == NULL ) || + ( drv->key_management->p_export == NULL ) ) + { + return( PSA_ERROR_NOT_SUPPORTED ); + } + + return( drv->key_management->p_export( + drv_context, + *( (psa_key_slot_number_t *)key_buffer ), + data, data_size, data_length ) ); + } +#endif /* PSA_CRYPTO_SE_C */ + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + return( psa_export_key_internal( attributes, + key_buffer, + key_buffer_size, + data, + data_size, + data_length ) ); + + /* Add cases for opaque driver here */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: + return( mbedtls_test_opaque_export_key( attributes, + key_buffer, + key_buffer_size, + data, + data_size, + data_length ) ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + default: + /* Key is declared with a lifetime not known to us */ + return( status ); + } +} + +psa_status_t psa_driver_wrapper_export_public_key( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + uint8_t *data, size_t data_size, size_t *data_length ) + +{ + psa_status_t status = PSA_ERROR_INVALID_ARGUMENT; + psa_key_location_t location = PSA_KEY_LIFETIME_GET_LOCATION( + psa_get_key_lifetime( attributes ) ); + + /* Try dynamically-registered SE interface first */ +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + const psa_drv_se_t *drv; + psa_drv_se_context_t *drv_context; + + if( psa_get_se_driver( attributes->core.lifetime, &drv, &drv_context ) ) + { + if( ( drv->key_management == NULL ) || + ( drv->key_management->p_export_public == NULL ) ) + { + return( PSA_ERROR_NOT_SUPPORTED ); + } + + return( drv->key_management->p_export_public( + drv_context, + *( (psa_key_slot_number_t *)key_buffer ), + data, data_size, data_length ) ); + } +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + /* Key is stored in the slot in export representation, so + * cycle through all known transparent accelerators */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_export_public_key( + attributes, + key_buffer, + key_buffer_size, + data, + data_size, + data_length ); + /* Declared with fallback == true */ + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + /* Fell through, meaning no accelerator supports this operation */ + return( psa_export_public_key_internal( attributes, + key_buffer, + key_buffer_size, + data, + data_size, + data_length ) ); + + /* Add cases for opaque driver here */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: + return( mbedtls_test_opaque_export_public_key( attributes, + key_buffer, + key_buffer_size, + data, + data_size, + data_length ) ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + default: + /* Key is declared with a lifetime not known to us */ + return( status ); + } +} + +psa_status_t psa_driver_wrapper_get_builtin_key( + psa_drv_slot_number_t slot_number, + psa_key_attributes_t *attributes, + uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length ) +{ + psa_key_location_t location = PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ); + switch( location ) + { +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: + return( mbedtls_test_opaque_get_builtin_key( + slot_number, + attributes, + key_buffer, key_buffer_size, key_buffer_length ) ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ + default: + (void) slot_number; + (void) key_buffer; + (void) key_buffer_size; + (void) key_buffer_length; + return( PSA_ERROR_DOES_NOT_EXIST ); + } +} + +/* + * Cipher functions + */ +psa_status_t psa_driver_wrapper_cipher_encrypt( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *iv, + size_t iv_length, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_location_t location = + PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ); + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + /* Key is stored in the slot in export representation, so + * cycle through all known transparent accelerators */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_cipher_encrypt( attributes, + key_buffer, + key_buffer_size, + alg, + iv, + iv_length, + input, + input_length, + output, + output_size, + output_length ); + /* Declared with fallback == true */ + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + +#if defined(MBEDTLS_PSA_BUILTIN_CIPHER) + return( mbedtls_psa_cipher_encrypt( attributes, + key_buffer, + key_buffer_size, + alg, + iv, + iv_length, + input, + input_length, + output, + output_size, + output_length ) ); +#else + return( PSA_ERROR_NOT_SUPPORTED ); +#endif /* MBEDTLS_PSA_BUILTIN_CIPHER */ + + /* Add cases for opaque driver here */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: + return( mbedtls_test_opaque_cipher_encrypt( attributes, + key_buffer, + key_buffer_size, + alg, + iv, + iv_length, + input, + input_length, + output, + output_size, + output_length ) ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + + default: + /* Key is declared with a lifetime not known to us */ + (void)status; + (void)key_buffer; + (void)key_buffer_size; + (void)alg; + (void)input; + (void)input_length; + (void)output; + (void)output_size; + (void)output_length; + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} + +psa_status_t psa_driver_wrapper_cipher_decrypt( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_location_t location = + PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ); + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + /* Key is stored in the slot in export representation, so + * cycle through all known transparent accelerators */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_cipher_decrypt( attributes, + key_buffer, + key_buffer_size, + alg, + input, + input_length, + output, + output_size, + output_length ); + /* Declared with fallback == true */ + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + +#if defined(MBEDTLS_PSA_BUILTIN_CIPHER) + return( mbedtls_psa_cipher_decrypt( attributes, + key_buffer, + key_buffer_size, + alg, + input, + input_length, + output, + output_size, + output_length ) ); +#else + return( PSA_ERROR_NOT_SUPPORTED ); +#endif /* MBEDTLS_PSA_BUILTIN_CIPHER */ + + /* Add cases for opaque driver here */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: + return( mbedtls_test_opaque_cipher_decrypt( attributes, + key_buffer, + key_buffer_size, + alg, + input, + input_length, + output, + output_size, + output_length ) ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + + default: + /* Key is declared with a lifetime not known to us */ + (void)status; + (void)key_buffer; + (void)key_buffer_size; + (void)alg; + (void)input; + (void)input_length; + (void)output; + (void)output_size; + (void)output_length; + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} + +psa_status_t psa_driver_wrapper_cipher_encrypt_setup( + psa_cipher_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_location_t location = + PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ); + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + /* Key is stored in the slot in export representation, so + * cycle through all known transparent accelerators */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_cipher_encrypt_setup( + &operation->ctx.transparent_test_driver_ctx, + attributes, + key_buffer, + key_buffer_size, + alg ); + /* Declared with fallback == true */ + if( status == PSA_SUCCESS ) + operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID; + + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ +#if defined(MBEDTLS_PSA_BUILTIN_CIPHER) + /* Fell through, meaning no accelerator supports this operation */ + status = mbedtls_psa_cipher_encrypt_setup( &operation->ctx.mbedtls_ctx, + attributes, + key_buffer, + key_buffer_size, + alg ); + if( status == PSA_SUCCESS ) + operation->id = PSA_CRYPTO_MBED_TLS_DRIVER_ID; + + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* MBEDTLS_PSA_BUILTIN_CIPHER */ + return( PSA_ERROR_NOT_SUPPORTED ); + + /* Add cases for opaque driver here */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: + status = mbedtls_test_opaque_cipher_encrypt_setup( + &operation->ctx.opaque_test_driver_ctx, + attributes, + key_buffer, key_buffer_size, + alg ); + + if( status == PSA_SUCCESS ) + operation->id = PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID; + + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + default: + /* Key is declared with a lifetime not known to us */ + (void)status; + (void)operation; + (void)key_buffer; + (void)key_buffer_size; + (void)alg; + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} + +psa_status_t psa_driver_wrapper_cipher_decrypt_setup( + psa_cipher_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg ) +{ + psa_status_t status = PSA_ERROR_INVALID_ARGUMENT; + psa_key_location_t location = + PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ); + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + /* Key is stored in the slot in export representation, so + * cycle through all known transparent accelerators */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_cipher_decrypt_setup( + &operation->ctx.transparent_test_driver_ctx, + attributes, + key_buffer, + key_buffer_size, + alg ); + /* Declared with fallback == true */ + if( status == PSA_SUCCESS ) + operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID; + + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ +#if defined(MBEDTLS_PSA_BUILTIN_CIPHER) + /* Fell through, meaning no accelerator supports this operation */ + status = mbedtls_psa_cipher_decrypt_setup( &operation->ctx.mbedtls_ctx, + attributes, + key_buffer, + key_buffer_size, + alg ); + if( status == PSA_SUCCESS ) + operation->id = PSA_CRYPTO_MBED_TLS_DRIVER_ID; + + return( status ); +#endif /* MBEDTLS_PSA_BUILTIN_CIPHER */ + return( PSA_ERROR_NOT_SUPPORTED ); + + /* Add cases for opaque driver here */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: + status = mbedtls_test_opaque_cipher_decrypt_setup( + &operation->ctx.opaque_test_driver_ctx, + attributes, + key_buffer, key_buffer_size, + alg ); + + if( status == PSA_SUCCESS ) + operation->id = PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID; + + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + default: + /* Key is declared with a lifetime not known to us */ + (void)status; + (void)operation; + (void)key_buffer; + (void)key_buffer_size; + (void)alg; + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} + +psa_status_t psa_driver_wrapper_cipher_set_iv( + psa_cipher_operation_t *operation, + const uint8_t *iv, + size_t iv_length ) +{ + switch( operation->id ) + { +#if defined(MBEDTLS_PSA_BUILTIN_CIPHER) + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: + return( mbedtls_psa_cipher_set_iv( &operation->ctx.mbedtls_ctx, + iv, + iv_length ) ); +#endif /* MBEDTLS_PSA_BUILTIN_CIPHER */ + +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID: + return( mbedtls_test_transparent_cipher_set_iv( + &operation->ctx.transparent_test_driver_ctx, + iv, iv_length ) ); + + case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID: + return( mbedtls_test_opaque_cipher_set_iv( + &operation->ctx.opaque_test_driver_ctx, + iv, iv_length ) ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + } + + (void)iv; + (void)iv_length; + + return( PSA_ERROR_INVALID_ARGUMENT ); +} + +psa_status_t psa_driver_wrapper_cipher_update( + psa_cipher_operation_t *operation, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length ) +{ + switch( operation->id ) + { +#if defined(MBEDTLS_PSA_BUILTIN_CIPHER) + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: + return( mbedtls_psa_cipher_update( &operation->ctx.mbedtls_ctx, + input, + input_length, + output, + output_size, + output_length ) ); +#endif /* MBEDTLS_PSA_BUILTIN_CIPHER */ + +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID: + return( mbedtls_test_transparent_cipher_update( + &operation->ctx.transparent_test_driver_ctx, + input, input_length, + output, output_size, output_length ) ); + + case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID: + return( mbedtls_test_opaque_cipher_update( + &operation->ctx.opaque_test_driver_ctx, + input, input_length, + output, output_size, output_length ) ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + } + + (void)input; + (void)input_length; + (void)output; + (void)output_size; + (void)output_length; + + return( PSA_ERROR_INVALID_ARGUMENT ); +} + +psa_status_t psa_driver_wrapper_cipher_finish( + psa_cipher_operation_t *operation, + uint8_t *output, + size_t output_size, + size_t *output_length ) +{ + switch( operation->id ) + { +#if defined(MBEDTLS_PSA_BUILTIN_CIPHER) + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: + return( mbedtls_psa_cipher_finish( &operation->ctx.mbedtls_ctx, + output, + output_size, + output_length ) ); +#endif /* MBEDTLS_PSA_BUILTIN_CIPHER */ + +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID: + return( mbedtls_test_transparent_cipher_finish( + &operation->ctx.transparent_test_driver_ctx, + output, output_size, output_length ) ); + + case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID: + return( mbedtls_test_opaque_cipher_finish( + &operation->ctx.opaque_test_driver_ctx, + output, output_size, output_length ) ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + } + + (void)output; + (void)output_size; + (void)output_length; + + return( PSA_ERROR_INVALID_ARGUMENT ); +} + +psa_status_t psa_driver_wrapper_cipher_abort( + psa_cipher_operation_t *operation ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + + switch( operation->id ) + { +#if defined(MBEDTLS_PSA_BUILTIN_CIPHER) + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: + return( mbedtls_psa_cipher_abort( &operation->ctx.mbedtls_ctx ) ); +#endif /* MBEDTLS_PSA_BUILTIN_CIPHER */ + +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID: + status = mbedtls_test_transparent_cipher_abort( + &operation->ctx.transparent_test_driver_ctx ); + mbedtls_platform_zeroize( + &operation->ctx.transparent_test_driver_ctx, + sizeof( operation->ctx.transparent_test_driver_ctx ) ); + return( status ); + + case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID: + status = mbedtls_test_opaque_cipher_abort( + &operation->ctx.opaque_test_driver_ctx ); + mbedtls_platform_zeroize( + &operation->ctx.opaque_test_driver_ctx, + sizeof( operation->ctx.opaque_test_driver_ctx ) ); + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + } + + (void)status; + return( PSA_ERROR_INVALID_ARGUMENT ); +} + +/* + * Hashing functions + */ +psa_status_t psa_driver_wrapper_hash_compute( + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *hash, + size_t hash_size, + size_t *hash_length) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + + /* Try accelerators first */ +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_hash_compute( + alg, input, input_length, hash, hash_size, hash_length ); + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif + + /* If software fallback is compiled in, try fallback */ +#if defined(MBEDTLS_PSA_BUILTIN_HASH) + status = mbedtls_psa_hash_compute( alg, input, input_length, + hash, hash_size, hash_length ); + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif + (void) status; + (void) alg; + (void) input; + (void) input_length; + (void) hash; + (void) hash_size; + (void) hash_length; + + return( PSA_ERROR_NOT_SUPPORTED ); +} + +psa_status_t psa_driver_wrapper_hash_setup( + psa_hash_operation_t *operation, + psa_algorithm_t alg ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + + /* Try setup on accelerators first */ +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_hash_setup( + &operation->ctx.test_driver_ctx, alg ); + if( status == PSA_SUCCESS ) + operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID; + + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif + + /* If software fallback is compiled in, try fallback */ +#if defined(MBEDTLS_PSA_BUILTIN_HASH) + status = mbedtls_psa_hash_setup( &operation->ctx.mbedtls_ctx, alg ); + if( status == PSA_SUCCESS ) + operation->id = PSA_CRYPTO_MBED_TLS_DRIVER_ID; + + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif + /* Nothing left to try if we fall through here */ + (void) status; + (void) operation; + (void) alg; + return( PSA_ERROR_NOT_SUPPORTED ); +} + +psa_status_t psa_driver_wrapper_hash_clone( + const psa_hash_operation_t *source_operation, + psa_hash_operation_t *target_operation ) +{ + switch( source_operation->id ) + { +#if defined(MBEDTLS_PSA_BUILTIN_HASH) + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: + target_operation->id = PSA_CRYPTO_MBED_TLS_DRIVER_ID; + return( mbedtls_psa_hash_clone( &source_operation->ctx.mbedtls_ctx, + &target_operation->ctx.mbedtls_ctx ) ); +#endif +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID: + target_operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID; + return( mbedtls_test_transparent_hash_clone( + &source_operation->ctx.test_driver_ctx, + &target_operation->ctx.test_driver_ctx ) ); +#endif + default: + (void) target_operation; + return( PSA_ERROR_BAD_STATE ); + } +} + +psa_status_t psa_driver_wrapper_hash_update( + psa_hash_operation_t *operation, + const uint8_t *input, + size_t input_length ) +{ + switch( operation->id ) + { +#if defined(MBEDTLS_PSA_BUILTIN_HASH) + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: + return( mbedtls_psa_hash_update( &operation->ctx.mbedtls_ctx, + input, input_length ) ); +#endif +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID: + return( mbedtls_test_transparent_hash_update( + &operation->ctx.test_driver_ctx, + input, input_length ) ); +#endif + default: + (void) input; + (void) input_length; + return( PSA_ERROR_BAD_STATE ); + } +} + +psa_status_t psa_driver_wrapper_hash_finish( + psa_hash_operation_t *operation, + uint8_t *hash, + size_t hash_size, + size_t *hash_length ) +{ + switch( operation->id ) + { +#if defined(MBEDTLS_PSA_BUILTIN_HASH) + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: + return( mbedtls_psa_hash_finish( &operation->ctx.mbedtls_ctx, + hash, hash_size, hash_length ) ); +#endif +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID: + return( mbedtls_test_transparent_hash_finish( + &operation->ctx.test_driver_ctx, + hash, hash_size, hash_length ) ); +#endif + default: + (void) hash; + (void) hash_size; + (void) hash_length; + return( PSA_ERROR_BAD_STATE ); + } +} + +psa_status_t psa_driver_wrapper_hash_abort( + psa_hash_operation_t *operation ) +{ + switch( operation->id ) + { +#if defined(MBEDTLS_PSA_BUILTIN_HASH) + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: + return( mbedtls_psa_hash_abort( &operation->ctx.mbedtls_ctx ) ); +#endif +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID: + return( mbedtls_test_transparent_hash_abort( + &operation->ctx.test_driver_ctx ) ); +#endif + default: + return( PSA_ERROR_BAD_STATE ); + } +} + +psa_status_t psa_driver_wrapper_aead_encrypt( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *nonce, size_t nonce_length, + const uint8_t *additional_data, size_t additional_data_length, + const uint8_t *plaintext, size_t plaintext_length, + uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_location_t location = + PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ); + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + /* Key is stored in the slot in export representation, so + * cycle through all known transparent accelerators */ + +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_aead_encrypt( + attributes, key_buffer, key_buffer_size, + alg, + nonce, nonce_length, + additional_data, additional_data_length, + plaintext, plaintext_length, + ciphertext, ciphertext_size, ciphertext_length ); + /* Declared with fallback == true */ + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + + /* Fell through, meaning no accelerator supports this operation */ + return( mbedtls_psa_aead_encrypt( + attributes, key_buffer, key_buffer_size, + alg, + nonce, nonce_length, + additional_data, additional_data_length, + plaintext, plaintext_length, + ciphertext, ciphertext_size, ciphertext_length ) ); + + /* Add cases for opaque driver here */ + + default: + /* Key is declared with a lifetime not known to us */ + (void)status; + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} + +psa_status_t psa_driver_wrapper_aead_decrypt( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *nonce, size_t nonce_length, + const uint8_t *additional_data, size_t additional_data_length, + const uint8_t *ciphertext, size_t ciphertext_length, + uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_location_t location = + PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ); + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + /* Key is stored in the slot in export representation, so + * cycle through all known transparent accelerators */ + +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_aead_decrypt( + attributes, key_buffer, key_buffer_size, + alg, + nonce, nonce_length, + additional_data, additional_data_length, + ciphertext, ciphertext_length, + plaintext, plaintext_size, plaintext_length ); + /* Declared with fallback == true */ + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + + /* Fell through, meaning no accelerator supports this operation */ + return( mbedtls_psa_aead_decrypt( + attributes, key_buffer, key_buffer_size, + alg, + nonce, nonce_length, + additional_data, additional_data_length, + ciphertext, ciphertext_length, + plaintext, plaintext_size, plaintext_length ) ); + + /* Add cases for opaque driver here */ + + default: + /* Key is declared with a lifetime not known to us */ + (void)status; + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} + + +/* + * MAC functions + */ +psa_status_t psa_driver_wrapper_mac_compute( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *mac, + size_t mac_size, + size_t *mac_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_location_t location = + PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ); + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + /* Key is stored in the slot in export representation, so + * cycle through all known transparent accelerators */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_mac_compute( + attributes, key_buffer, key_buffer_size, alg, + input, input_length, + mac, mac_size, mac_length ); + /* Declared with fallback == true */ + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ +#if defined(MBEDTLS_PSA_BUILTIN_MAC) + /* Fell through, meaning no accelerator supports this operation */ + status = mbedtls_psa_mac_compute( + attributes, key_buffer, key_buffer_size, alg, + input, input_length, + mac, mac_size, mac_length ); + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* MBEDTLS_PSA_BUILTIN_MAC */ + return( PSA_ERROR_NOT_SUPPORTED ); + + /* Add cases for opaque driver here */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: + status = mbedtls_test_opaque_mac_compute( + attributes, key_buffer, key_buffer_size, alg, + input, input_length, + mac, mac_size, mac_length ); + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + default: + /* Key is declared with a lifetime not known to us */ + (void) key_buffer; + (void) key_buffer_size; + (void) alg; + (void) input; + (void) input_length; + (void) mac; + (void) mac_size; + (void) mac_length; + (void) status; + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} + +psa_status_t psa_driver_wrapper_mac_sign_setup( + psa_mac_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_location_t location = + PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ); + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + /* Key is stored in the slot in export representation, so + * cycle through all known transparent accelerators */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_mac_sign_setup( + &operation->ctx.transparent_test_driver_ctx, + attributes, + key_buffer, key_buffer_size, + alg ); + /* Declared with fallback == true */ + if( status == PSA_SUCCESS ) + operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID; + + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ +#if defined(MBEDTLS_PSA_BUILTIN_MAC) + /* Fell through, meaning no accelerator supports this operation */ + status = mbedtls_psa_mac_sign_setup( &operation->ctx.mbedtls_ctx, + attributes, + key_buffer, key_buffer_size, + alg ); + if( status == PSA_SUCCESS ) + operation->id = PSA_CRYPTO_MBED_TLS_DRIVER_ID; + + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* MBEDTLS_PSA_BUILTIN_MAC */ + return( PSA_ERROR_NOT_SUPPORTED ); + + /* Add cases for opaque driver here */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: + status = mbedtls_test_opaque_mac_sign_setup( + &operation->ctx.opaque_test_driver_ctx, + attributes, + key_buffer, key_buffer_size, + alg ); + + if( status == PSA_SUCCESS ) + operation->id = PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID; + + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + default: + /* Key is declared with a lifetime not known to us */ + (void) status; + (void) operation; + (void) key_buffer; + (void) key_buffer_size; + (void) alg; + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} + +psa_status_t psa_driver_wrapper_mac_verify_setup( + psa_mac_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_location_t location = + PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime ); + + switch( location ) + { + case PSA_KEY_LOCATION_LOCAL_STORAGE: + /* Key is stored in the slot in export representation, so + * cycle through all known transparent accelerators */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + status = mbedtls_test_transparent_mac_verify_setup( + &operation->ctx.transparent_test_driver_ctx, + attributes, + key_buffer, key_buffer_size, + alg ); + /* Declared with fallback == true */ + if( status == PSA_SUCCESS ) + operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID; + + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ +#if defined(MBEDTLS_PSA_BUILTIN_MAC) + /* Fell through, meaning no accelerator supports this operation */ + status = mbedtls_psa_mac_verify_setup( &operation->ctx.mbedtls_ctx, + attributes, + key_buffer, key_buffer_size, + alg ); + if( status == PSA_SUCCESS ) + operation->id = PSA_CRYPTO_MBED_TLS_DRIVER_ID; + + if( status != PSA_ERROR_NOT_SUPPORTED ) + return( status ); +#endif /* MBEDTLS_PSA_BUILTIN_MAC */ + return( PSA_ERROR_NOT_SUPPORTED ); + + /* Add cases for opaque driver here */ +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TEST_DRIVER_LOCATION: + status = mbedtls_test_opaque_mac_verify_setup( + &operation->ctx.opaque_test_driver_ctx, + attributes, + key_buffer, key_buffer_size, + alg ); + + if( status == PSA_SUCCESS ) + operation->id = PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID; + + return( status ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + default: + /* Key is declared with a lifetime not known to us */ + (void) status; + (void) operation; + (void) key_buffer; + (void) key_buffer_size; + (void) alg; + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} + +psa_status_t psa_driver_wrapper_mac_update( + psa_mac_operation_t *operation, + const uint8_t *input, + size_t input_length ) +{ + switch( operation->id ) + { +#if defined(MBEDTLS_PSA_BUILTIN_MAC) + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: + return( mbedtls_psa_mac_update( &operation->ctx.mbedtls_ctx, + input, input_length ) ); +#endif /* MBEDTLS_PSA_BUILTIN_MAC */ + +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID: + return( mbedtls_test_transparent_mac_update( + &operation->ctx.transparent_test_driver_ctx, + input, input_length ) ); + + case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID: + return( mbedtls_test_opaque_mac_update( + &operation->ctx.opaque_test_driver_ctx, + input, input_length ) ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + default: + (void) input; + (void) input_length; + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} + +psa_status_t psa_driver_wrapper_mac_sign_finish( + psa_mac_operation_t *operation, + uint8_t *mac, + size_t mac_size, + size_t *mac_length ) +{ + switch( operation->id ) + { +#if defined(MBEDTLS_PSA_BUILTIN_MAC) + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: + return( mbedtls_psa_mac_sign_finish( &operation->ctx.mbedtls_ctx, + mac, mac_size, mac_length ) ); +#endif /* MBEDTLS_PSA_BUILTIN_MAC */ + +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID: + return( mbedtls_test_transparent_mac_sign_finish( + &operation->ctx.transparent_test_driver_ctx, + mac, mac_size, mac_length ) ); + + case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID: + return( mbedtls_test_opaque_mac_sign_finish( + &operation->ctx.opaque_test_driver_ctx, + mac, mac_size, mac_length ) ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + default: + (void) mac; + (void) mac_size; + (void) mac_length; + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} + +psa_status_t psa_driver_wrapper_mac_verify_finish( + psa_mac_operation_t *operation, + const uint8_t *mac, + size_t mac_length ) +{ + switch( operation->id ) + { +#if defined(MBEDTLS_PSA_BUILTIN_MAC) + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: + return( mbedtls_psa_mac_verify_finish( &operation->ctx.mbedtls_ctx, + mac, mac_length ) ); +#endif /* MBEDTLS_PSA_BUILTIN_MAC */ + +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID: + return( mbedtls_test_transparent_mac_verify_finish( + &operation->ctx.transparent_test_driver_ctx, + mac, mac_length ) ); + + case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID: + return( mbedtls_test_opaque_mac_verify_finish( + &operation->ctx.opaque_test_driver_ctx, + mac, mac_length ) ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + default: + (void) mac; + (void) mac_length; + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} + +psa_status_t psa_driver_wrapper_mac_abort( + psa_mac_operation_t *operation ) +{ + switch( operation->id ) + { +#if defined(MBEDTLS_PSA_BUILTIN_MAC) + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: + return( mbedtls_psa_mac_abort( &operation->ctx.mbedtls_ctx ) ); +#endif /* MBEDTLS_PSA_BUILTIN_MAC */ + +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) +#if defined(PSA_CRYPTO_DRIVER_TEST) + case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID: + return( mbedtls_test_transparent_mac_abort( + &operation->ctx.transparent_test_driver_ctx ) ); + case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID: + return( mbedtls_test_opaque_mac_abort( + &operation->ctx.opaque_test_driver_ctx ) ); +#endif /* PSA_CRYPTO_DRIVER_TEST */ +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ + default: + return( PSA_ERROR_INVALID_ARGUMENT ); + } +} + +#endif /* MBEDTLS_PSA_CRYPTO_C */ diff --git a/Externals/mbedtls/library/psa_crypto_driver_wrappers.h b/Externals/mbedtls/library/psa_crypto_driver_wrappers.h new file mode 100644 index 000000000000..7cb88a0b4ead --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_driver_wrappers.h @@ -0,0 +1,268 @@ +/* + * Function signatures for functionality that can be provided by + * cryptographic accelerators. + * Warning: This file will be auto-generated in the future. + */ +/* Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_DRIVER_WRAPPERS_H +#define PSA_CRYPTO_DRIVER_WRAPPERS_H + +#include "psa/crypto.h" +#include "psa/crypto_driver_common.h" + +/* + * Initialization and termination functions + */ +psa_status_t psa_driver_wrapper_init( void ); +void psa_driver_wrapper_free( void ); + +/* + * Signature functions + */ +psa_status_t psa_driver_wrapper_sign_message( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *signature, + size_t signature_size, + size_t *signature_length ); + +psa_status_t psa_driver_wrapper_verify_message( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *signature, + size_t signature_length ); + +psa_status_t psa_driver_wrapper_sign_hash( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + uint8_t *signature, size_t signature_size, size_t *signature_length ); + +psa_status_t psa_driver_wrapper_verify_hash( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + const uint8_t *signature, size_t signature_length ); + +/* + * Key handling functions + */ + +psa_status_t psa_driver_wrapper_import_key( + const psa_key_attributes_t *attributes, + const uint8_t *data, size_t data_length, + uint8_t *key_buffer, size_t key_buffer_size, + size_t *key_buffer_length, size_t *bits ); + +psa_status_t psa_driver_wrapper_export_key( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + uint8_t *data, size_t data_size, size_t *data_length ); + +psa_status_t psa_driver_wrapper_export_public_key( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + uint8_t *data, size_t data_size, size_t *data_length ); + +psa_status_t psa_driver_wrapper_get_key_buffer_size( + const psa_key_attributes_t *attributes, + size_t *key_buffer_size ); + +psa_status_t psa_driver_wrapper_generate_key( + const psa_key_attributes_t *attributes, + uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length ); + +psa_status_t psa_driver_wrapper_get_builtin_key( + psa_drv_slot_number_t slot_number, + psa_key_attributes_t *attributes, + uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length ); + +/* + * Cipher functions + */ +psa_status_t psa_driver_wrapper_cipher_encrypt( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *iv, + size_t iv_length, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length ); + +psa_status_t psa_driver_wrapper_cipher_decrypt( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length ); + +psa_status_t psa_driver_wrapper_cipher_encrypt_setup( + psa_cipher_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg ); + +psa_status_t psa_driver_wrapper_cipher_decrypt_setup( + psa_cipher_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg ); + +psa_status_t psa_driver_wrapper_cipher_set_iv( + psa_cipher_operation_t *operation, + const uint8_t *iv, + size_t iv_length ); + +psa_status_t psa_driver_wrapper_cipher_update( + psa_cipher_operation_t *operation, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length ); + +psa_status_t psa_driver_wrapper_cipher_finish( + psa_cipher_operation_t *operation, + uint8_t *output, + size_t output_size, + size_t *output_length ); + +psa_status_t psa_driver_wrapper_cipher_abort( + psa_cipher_operation_t *operation ); + +/* + * Hashing functions + */ +psa_status_t psa_driver_wrapper_hash_compute( + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *hash, + size_t hash_size, + size_t *hash_length); + +psa_status_t psa_driver_wrapper_hash_setup( + psa_hash_operation_t *operation, + psa_algorithm_t alg ); + +psa_status_t psa_driver_wrapper_hash_clone( + const psa_hash_operation_t *source_operation, + psa_hash_operation_t *target_operation ); + +psa_status_t psa_driver_wrapper_hash_update( + psa_hash_operation_t *operation, + const uint8_t *input, + size_t input_length ); + +psa_status_t psa_driver_wrapper_hash_finish( + psa_hash_operation_t *operation, + uint8_t *hash, + size_t hash_size, + size_t *hash_length ); + +psa_status_t psa_driver_wrapper_hash_abort( + psa_hash_operation_t *operation ); + +/* + * AEAD functions + */ + +psa_status_t psa_driver_wrapper_aead_encrypt( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *nonce, size_t nonce_length, + const uint8_t *additional_data, size_t additional_data_length, + const uint8_t *plaintext, size_t plaintext_length, + uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length ); + +psa_status_t psa_driver_wrapper_aead_decrypt( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *nonce, size_t nonce_length, + const uint8_t *additional_data, size_t additional_data_length, + const uint8_t *ciphertext, size_t ciphertext_length, + uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length ); + +/* + * MAC functions + */ +psa_status_t psa_driver_wrapper_mac_compute( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *mac, + size_t mac_size, + size_t *mac_length ); + +psa_status_t psa_driver_wrapper_mac_sign_setup( + psa_mac_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg ); + +psa_status_t psa_driver_wrapper_mac_verify_setup( + psa_mac_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg ); + +psa_status_t psa_driver_wrapper_mac_update( + psa_mac_operation_t *operation, + const uint8_t *input, + size_t input_length ); + +psa_status_t psa_driver_wrapper_mac_sign_finish( + psa_mac_operation_t *operation, + uint8_t *mac, + size_t mac_size, + size_t *mac_length ); + +psa_status_t psa_driver_wrapper_mac_verify_finish( + psa_mac_operation_t *operation, + const uint8_t *mac, + size_t mac_length ); + +psa_status_t psa_driver_wrapper_mac_abort( + psa_mac_operation_t *operation ); + +#endif /* PSA_CRYPTO_DRIVER_WRAPPERS_H */ + +/* End of automatically generated file. */ diff --git a/Externals/mbedtls/library/psa_crypto_ecp.c b/Externals/mbedtls/library/psa_crypto_ecp.c new file mode 100644 index 000000000000..db6682c6dce8 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_ecp.c @@ -0,0 +1,472 @@ +/* + * PSA ECP layer on top of Mbed TLS crypto + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common.h" + +#if defined(MBEDTLS_PSA_CRYPTO_C) + +#include +#include "psa_crypto_core.h" +#include "psa_crypto_ecp.h" +#include "psa_crypto_random_impl.h" +#include "psa_crypto_hash.h" + +#include +#include +#include "mbedtls/platform.h" +#if !defined(MBEDTLS_PLATFORM_C) +#define mbedtls_calloc calloc +#define mbedtls_free free +#endif + +#include +#include +#include + +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) || \ + defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_ECDH) +psa_status_t mbedtls_psa_ecp_load_representation( + psa_key_type_t type, size_t curve_bits, + const uint8_t *data, size_t data_length, + mbedtls_ecp_keypair **p_ecp ) +{ + mbedtls_ecp_group_id grp_id = MBEDTLS_ECP_DP_NONE; + psa_status_t status; + mbedtls_ecp_keypair *ecp = NULL; + size_t curve_bytes = data_length; + int explicit_bits = ( curve_bits != 0 ); + + if( PSA_KEY_TYPE_IS_PUBLIC_KEY( type ) && + PSA_KEY_TYPE_ECC_GET_FAMILY( type ) != PSA_ECC_FAMILY_MONTGOMERY ) + { + /* A Weierstrass public key is represented as: + * - The byte 0x04; + * - `x_P` as a `ceiling(m/8)`-byte string, big-endian; + * - `y_P` as a `ceiling(m/8)`-byte string, big-endian. + * So its data length is 2m+1 where m is the curve size in bits. + */ + if( ( data_length & 1 ) == 0 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + curve_bytes = data_length / 2; + + /* Montgomery public keys are represented in compressed format, meaning + * their curve_bytes is equal to the amount of input. */ + + /* Private keys are represented in uncompressed private random integer + * format, meaning their curve_bytes is equal to the amount of input. */ + } + + if( explicit_bits ) + { + /* With an explicit bit-size, the data must have the matching length. */ + if( curve_bytes != PSA_BITS_TO_BYTES( curve_bits ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + } + else + { + /* We need to infer the bit-size from the data. Since the only + * information we have is the length in bytes, the value of curve_bits + * at this stage is rounded up to the nearest multiple of 8. */ + curve_bits = PSA_BYTES_TO_BITS( curve_bytes ); + } + + /* Allocate and initialize a key representation. */ + ecp = mbedtls_calloc( 1, sizeof( mbedtls_ecp_keypair ) ); + if( ecp == NULL ) + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + mbedtls_ecp_keypair_init( ecp ); + + /* Load the group. */ + grp_id = mbedtls_ecc_group_of_psa( PSA_KEY_TYPE_ECC_GET_FAMILY( type ), + curve_bits, !explicit_bits ); + if( grp_id == MBEDTLS_ECP_DP_NONE ) + { + /* We can't distinguish between a nonsensical family/size combination + * (which would warrant PSA_ERROR_INVALID_ARGUMENT) and a + * well-regarded curve that Mbed TLS just doesn't know about (which + * would warrant PSA_ERROR_NOT_SUPPORTED). For uniformity with how + * curves that Mbed TLS knows about but for which support is disabled + * at build time, return NOT_SUPPORTED. */ + status = PSA_ERROR_NOT_SUPPORTED; + goto exit; + } + + status = mbedtls_to_psa_error( + mbedtls_ecp_group_load( &ecp->grp, grp_id ) ); + if( status != PSA_SUCCESS ) + goto exit; + + /* Load the key material. */ + if( PSA_KEY_TYPE_IS_PUBLIC_KEY( type ) ) + { + /* Load the public value. */ + status = mbedtls_to_psa_error( + mbedtls_ecp_point_read_binary( &ecp->grp, &ecp->Q, + data, + data_length ) ); + if( status != PSA_SUCCESS ) + goto exit; + + /* Check that the point is on the curve. */ + status = mbedtls_to_psa_error( + mbedtls_ecp_check_pubkey( &ecp->grp, &ecp->Q ) ); + if( status != PSA_SUCCESS ) + goto exit; + } + else + { + /* Load and validate the secret value. */ + status = mbedtls_to_psa_error( + mbedtls_ecp_read_key( ecp->grp.id, + ecp, + data, + data_length ) ); + if( status != PSA_SUCCESS ) + goto exit; + } + + *p_ecp = ecp; +exit: + if( status != PSA_SUCCESS ) + { + mbedtls_ecp_keypair_free( ecp ); + mbedtls_free( ecp ); + } + + return( status ); +} +#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) || + * defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_ECDH) */ + +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) || \ + defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) + +psa_status_t mbedtls_psa_ecp_import_key( + const psa_key_attributes_t *attributes, + const uint8_t *data, size_t data_length, + uint8_t *key_buffer, size_t key_buffer_size, + size_t *key_buffer_length, size_t *bits ) +{ + psa_status_t status; + mbedtls_ecp_keypair *ecp = NULL; + + /* Parse input */ + status = mbedtls_psa_ecp_load_representation( attributes->core.type, + attributes->core.bits, + data, + data_length, + &ecp ); + if( status != PSA_SUCCESS ) + goto exit; + + if( PSA_KEY_TYPE_ECC_GET_FAMILY( attributes->core.type ) == + PSA_ECC_FAMILY_MONTGOMERY ) + *bits = ecp->grp.nbits + 1; + else + *bits = ecp->grp.nbits; + + /* Re-export the data to PSA export format. There is currently no support + * for other input formats then the export format, so this is a 1-1 + * copy operation. */ + status = mbedtls_psa_ecp_export_key( attributes->core.type, + ecp, + key_buffer, + key_buffer_size, + key_buffer_length ); +exit: + /* Always free the PK object (will also free contained ECP context) */ + mbedtls_ecp_keypair_free( ecp ); + mbedtls_free( ecp ); + + return( status ); +} + +psa_status_t mbedtls_psa_ecp_export_key( psa_key_type_t type, + mbedtls_ecp_keypair *ecp, + uint8_t *data, + size_t data_size, + size_t *data_length ) +{ + psa_status_t status; + + if( PSA_KEY_TYPE_IS_PUBLIC_KEY( type ) ) + { + /* Check whether the public part is loaded */ + if( mbedtls_ecp_is_zero( &ecp->Q ) ) + { + /* Calculate the public key */ + status = mbedtls_to_psa_error( + mbedtls_ecp_mul( &ecp->grp, &ecp->Q, &ecp->d, &ecp->grp.G, + mbedtls_psa_get_random, + MBEDTLS_PSA_RANDOM_STATE ) ); + if( status != PSA_SUCCESS ) + return( status ); + } + + status = mbedtls_to_psa_error( + mbedtls_ecp_point_write_binary( &ecp->grp, &ecp->Q, + MBEDTLS_ECP_PF_UNCOMPRESSED, + data_length, + data, + data_size ) ); + if( status != PSA_SUCCESS ) + memset( data, 0, data_size ); + + return( status ); + } + else + { + if( data_size < PSA_BITS_TO_BYTES( ecp->grp.nbits ) ) + return( PSA_ERROR_BUFFER_TOO_SMALL ); + + status = mbedtls_to_psa_error( + mbedtls_ecp_write_key( ecp, + data, + PSA_BITS_TO_BYTES( ecp->grp.nbits ) ) ); + if( status == PSA_SUCCESS ) + *data_length = PSA_BITS_TO_BYTES( ecp->grp.nbits ); + else + memset( data, 0, data_size ); + + return( status ); + } +} + +psa_status_t mbedtls_psa_ecp_export_public_key( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + uint8_t *data, size_t data_size, size_t *data_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + mbedtls_ecp_keypair *ecp = NULL; + + status = mbedtls_psa_ecp_load_representation( + attributes->core.type, attributes->core.bits, + key_buffer, key_buffer_size, &ecp ); + if( status != PSA_SUCCESS ) + return( status ); + + status = mbedtls_psa_ecp_export_key( + PSA_KEY_TYPE_ECC_PUBLIC_KEY( + PSA_KEY_TYPE_ECC_GET_FAMILY( attributes->core.type ) ), + ecp, data, data_size, data_length ); + + mbedtls_ecp_keypair_free( ecp ); + mbedtls_free( ecp ); + + return( status ); +} +#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) || + * defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) */ + +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) +psa_status_t mbedtls_psa_ecp_generate_key( + const psa_key_attributes_t *attributes, + uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + psa_ecc_family_t curve = PSA_KEY_TYPE_ECC_GET_FAMILY( + attributes->core.type ); + mbedtls_ecp_group_id grp_id = + mbedtls_ecc_group_of_psa( curve, attributes->core.bits, 0 ); + + const mbedtls_ecp_curve_info *curve_info = + mbedtls_ecp_curve_info_from_grp_id( grp_id ); + mbedtls_ecp_keypair ecp; + + if( attributes->domain_parameters_size != 0 ) + return( PSA_ERROR_NOT_SUPPORTED ); + + if( grp_id == MBEDTLS_ECP_DP_NONE || curve_info == NULL ) + return( PSA_ERROR_NOT_SUPPORTED ); + + mbedtls_ecp_keypair_init( &ecp ); + ret = mbedtls_ecp_gen_key( grp_id, &ecp, + mbedtls_psa_get_random, + MBEDTLS_PSA_RANDOM_STATE ); + if( ret != 0 ) + { + mbedtls_ecp_keypair_free( &ecp ); + return( mbedtls_to_psa_error( ret ) ); + } + + status = mbedtls_to_psa_error( + mbedtls_ecp_write_key( &ecp, key_buffer, key_buffer_size ) ); + + mbedtls_ecp_keypair_free( &ecp ); + + if( status == PSA_SUCCESS ) + *key_buffer_length = key_buffer_size; + + return( status ); +} +#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) */ + +/****************************************************************/ +/* ECDSA sign/verify */ +/****************************************************************/ + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) +psa_status_t mbedtls_psa_ecdsa_sign_hash( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + uint8_t *signature, size_t signature_size, size_t *signature_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + mbedtls_ecp_keypair *ecp = NULL; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t curve_bytes; + mbedtls_mpi r, s; + + status = mbedtls_psa_ecp_load_representation( attributes->core.type, + attributes->core.bits, + key_buffer, + key_buffer_size, + &ecp ); + if( status != PSA_SUCCESS ) + return( status ); + + curve_bytes = PSA_BITS_TO_BYTES( ecp->grp.pbits ); + mbedtls_mpi_init( &r ); + mbedtls_mpi_init( &s ); + + if( signature_size < 2 * curve_bytes ) + { + ret = MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL; + goto cleanup; + } + + if( PSA_ALG_ECDSA_IS_DETERMINISTIC( alg ) ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) + psa_algorithm_t hash_alg = PSA_ALG_SIGN_GET_HASH( alg ); + const mbedtls_md_info_t *md_info = mbedtls_md_info_from_psa( hash_alg ); + mbedtls_md_type_t md_alg = mbedtls_md_get_type( md_info ); + MBEDTLS_MPI_CHK( mbedtls_ecdsa_sign_det_ext( + &ecp->grp, &r, &s, + &ecp->d, hash, + hash_length, md_alg, + mbedtls_psa_get_random, + MBEDTLS_PSA_RANDOM_STATE ) ); +#else + ret = MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE; + goto cleanup; +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) */ + } + else + { + (void) alg; + MBEDTLS_MPI_CHK( mbedtls_ecdsa_sign( &ecp->grp, &r, &s, &ecp->d, + hash, hash_length, + mbedtls_psa_get_random, + MBEDTLS_PSA_RANDOM_STATE ) ); + } + + MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &r, + signature, + curve_bytes ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &s, + signature + curve_bytes, + curve_bytes ) ); +cleanup: + mbedtls_mpi_free( &r ); + mbedtls_mpi_free( &s ); + if( ret == 0 ) + *signature_length = 2 * curve_bytes; + + mbedtls_ecp_keypair_free( ecp ); + mbedtls_free( ecp ); + + return( mbedtls_to_psa_error( ret ) ); +} + +psa_status_t mbedtls_psa_ecdsa_verify_hash( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + const uint8_t *signature, size_t signature_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + mbedtls_ecp_keypair *ecp = NULL; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t curve_bytes; + mbedtls_mpi r, s; + + (void)alg; + + status = mbedtls_psa_ecp_load_representation( attributes->core.type, + attributes->core.bits, + key_buffer, + key_buffer_size, + &ecp ); + if( status != PSA_SUCCESS ) + return( status ); + + curve_bytes = PSA_BITS_TO_BYTES( ecp->grp.pbits ); + mbedtls_mpi_init( &r ); + mbedtls_mpi_init( &s ); + + if( signature_length != 2 * curve_bytes ) + { + ret = MBEDTLS_ERR_ECP_VERIFY_FAILED; + goto cleanup; + } + + MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &r, + signature, + curve_bytes ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &s, + signature + curve_bytes, + curve_bytes ) ); + + /* Check whether the public part is loaded. If not, load it. */ + if( mbedtls_ecp_is_zero( &ecp->Q ) ) + { + MBEDTLS_MPI_CHK( + mbedtls_ecp_mul( &ecp->grp, &ecp->Q, &ecp->d, &ecp->grp.G, + mbedtls_psa_get_random, MBEDTLS_PSA_RANDOM_STATE ) ); + } + + ret = mbedtls_ecdsa_verify( &ecp->grp, hash, hash_length, + &ecp->Q, &r, &s ); + +cleanup: + mbedtls_mpi_free( &r ); + mbedtls_mpi_free( &s ); + mbedtls_ecp_keypair_free( ecp ); + mbedtls_free( ecp ); + + return( mbedtls_to_psa_error( ret ) ); +} + +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \ + * defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) */ + +#endif /* MBEDTLS_PSA_CRYPTO_C */ diff --git a/Externals/mbedtls/library/psa_crypto_ecp.h b/Externals/mbedtls/library/psa_crypto_ecp.h new file mode 100644 index 000000000000..feddd8a1ed0a --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_ecp.h @@ -0,0 +1,222 @@ +/* + * PSA ECP layer on top of Mbed TLS crypto + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_ECP_H +#define PSA_CRYPTO_ECP_H + +#include +#include + +/** Load the contents of a key buffer into an internal ECP representation + * + * \param[in] type The type of key contained in \p data. + * \param[in] curve_bits The nominal bit-size of the curve. + * It must be consistent with the representation + * passed in \p data. + * This can be 0, in which case the bit-size + * is inferred from \p data_length (which is possible + * for all key types and representation formats + * formats that are currently supported or will + * be in the foreseeable future). + * \param[in] data The buffer from which to load the representation. + * \param[in] data_length The size in bytes of \p data. + * \param[out] p_ecp Returns a pointer to an ECP context on success. + * The caller is responsible for freeing both the + * contents of the context and the context itself + * when done. + */ +psa_status_t mbedtls_psa_ecp_load_representation( psa_key_type_t type, + size_t curve_bits, + const uint8_t *data, + size_t data_length, + mbedtls_ecp_keypair **p_ecp ); + +/** Import an ECP key in binary format. + * + * \note The signature of this function is that of a PSA driver + * import_key entry point. This function behaves as an import_key + * entry point as defined in the PSA driver interface specification for + * transparent drivers. + * + * \param[in] attributes The attributes for the key to import. + * \param[in] data The buffer containing the key data in import + * format. + * \param[in] data_length Size of the \p data buffer in bytes. + * \param[out] key_buffer The buffer containing the key data in output + * format. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. This + * size is greater or equal to \p data_length. + * \param[out] key_buffer_length The length of the data written in \p + * key_buffer in bytes. + * \param[out] bits The key size in number of bits. + * + * \retval #PSA_SUCCESS The ECP key was imported successfully. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key data is not correctly formatted. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_ecp_import_key( + const psa_key_attributes_t *attributes, + const uint8_t *data, size_t data_length, + uint8_t *key_buffer, size_t key_buffer_size, + size_t *key_buffer_length, size_t *bits ); + +/** Export an ECP key to export representation + * + * \param[in] type The type of key (public/private) to export + * \param[in] ecp The internal ECP representation from which to export + * \param[out] data The buffer to export to + * \param[in] data_size The length of the buffer to export to + * \param[out] data_length The amount of bytes written to \p data + */ +psa_status_t mbedtls_psa_ecp_export_key( psa_key_type_t type, + mbedtls_ecp_keypair *ecp, + uint8_t *data, + size_t data_size, + size_t *data_length ); + +/** Export an ECP public key or the public part of an ECP key pair in binary + * format. + * + * \note The signature of this function is that of a PSA driver + * export_public_key entry point. This function behaves as an + * export_public_key entry point as defined in the PSA driver interface + * specification. + * + * \param[in] attributes The attributes for the key to export. + * \param[in] key_buffer Material or context of the key to export. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[out] data Buffer where the key data is to be written. + * \param[in] data_size Size of the \p data buffer in bytes. + * \param[out] data_length On success, the number of bytes written in + * \p data + * + * \retval #PSA_SUCCESS The ECP public key was exported successfully. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t mbedtls_psa_ecp_export_public_key( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + uint8_t *data, size_t data_size, size_t *data_length ); + +/** + * \brief Generate an ECP key. + * + * \note The signature of the function is that of a PSA driver generate_key + * entry point. + * + * \param[in] attributes The attributes for the ECP key to generate. + * \param[out] key_buffer Buffer where the key data is to be written. + * \param[in] key_buffer_size Size of \p key_buffer in bytes. + * \param[out] key_buffer_length On success, the number of bytes written in + * \p key_buffer. + * + * \retval #PSA_SUCCESS + * The key was successfully generated. + * \retval #PSA_ERROR_NOT_SUPPORTED + * Key length or type not supported. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of \p key_buffer is too small. + */ +psa_status_t mbedtls_psa_ecp_generate_key( + const psa_key_attributes_t *attributes, + uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length ); + +/** Sign an already-calculated hash with ECDSA. + * + * \note The signature of this function is that of a PSA driver + * sign_hash entry point. This function behaves as a sign_hash + * entry point as defined in the PSA driver interface specification for + * transparent drivers. + * + * \param[in] attributes The attributes of the ECC key to use for the + * operation. + * \param[in] key_buffer The buffer containing the ECC key context. + * format. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[in] alg Randomized or deterministic ECDSA algorithm. + * \param[in] hash The hash or message to sign. + * \param[in] hash_length Size of the \p hash buffer in bytes. + * \param[out] signature Buffer where the signature is to be written. + * \param[in] signature_size Size of the \p signature buffer in bytes. + * \param[out] signature_length On success, the number of bytes + * that make up the returned signature value. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p signature buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_SIGN_OUTPUT_SIZE(\c PSA_KEY_TYPE_ECC_KEY_PAIR, \c key_bits, + * \p alg) where \c key_bits is the bit-size of the ECC key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + */ +psa_status_t mbedtls_psa_ecdsa_sign_hash( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + uint8_t *signature, size_t signature_size, size_t *signature_length ); + +/** + * \brief Verify an ECDSA hash or short message signature. + * + * \note The signature of this function is that of a PSA driver + * verify_hash entry point. This function behaves as a verify_hash + * entry point as defined in the PSA driver interface specification for + * transparent drivers. + * + * \param[in] attributes The attributes of the ECC key to use for the + * operation. + * \param[in] key_buffer The buffer containing the ECC key context. + * format. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[in] alg Randomized or deterministic ECDSA algorithm. + * \param[in] hash The hash or message whose signature is to be + * verified. + * \param[in] hash_length Size of the \p hash buffer in bytes. + * \param[in] signature Buffer containing the signature to verify. + * \param[in] signature_length Size of the \p signature buffer in bytes. + * + * \retval #PSA_SUCCESS + * The signature is valid. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The calculation was performed successfully, but the passed + * signature is not a valid signature. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t mbedtls_psa_ecdsa_verify_hash( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + const uint8_t *signature, size_t signature_length ); + +#endif /* PSA_CRYPTO_ECP_H */ diff --git a/Externals/mbedtls/library/psa_crypto_hash.c b/Externals/mbedtls/library/psa_crypto_hash.c new file mode 100644 index 000000000000..337e557b078a --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_hash.c @@ -0,0 +1,489 @@ +/* + * PSA hashing layer on top of Mbed TLS software crypto + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common.h" + +#if defined(MBEDTLS_PSA_CRYPTO_C) + +#include +#include "psa_crypto_core.h" +#include "psa_crypto_hash.h" + +#include +#include + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) +const mbedtls_md_info_t *mbedtls_md_info_from_psa( psa_algorithm_t alg ) +{ + switch( alg ) + { +#if defined(MBEDTLS_MD2_C) + case PSA_ALG_MD2: + return( &mbedtls_md2_info ); +#endif +#if defined(MBEDTLS_MD4_C) + case PSA_ALG_MD4: + return( &mbedtls_md4_info ); +#endif +#if defined(MBEDTLS_MD5_C) + case PSA_ALG_MD5: + return( &mbedtls_md5_info ); +#endif +#if defined(MBEDTLS_RIPEMD160_C) + case PSA_ALG_RIPEMD160: + return( &mbedtls_ripemd160_info ); +#endif +#if defined(MBEDTLS_SHA1_C) + case PSA_ALG_SHA_1: + return( &mbedtls_sha1_info ); +#endif +#if defined(MBEDTLS_SHA256_C) + case PSA_ALG_SHA_224: + return( &mbedtls_sha224_info ); +#endif +#if defined(MBEDTLS_SHA256_C) + case PSA_ALG_SHA_256: + return( &mbedtls_sha256_info ); +#endif +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) + case PSA_ALG_SHA_384: + return( &mbedtls_sha384_info ); +#endif +#if defined(MBEDTLS_SHA512_C) + case PSA_ALG_SHA_512: + return( &mbedtls_sha512_info ); +#endif + default: + return( NULL ); + } +} +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) */ + +#if defined(MBEDTLS_PSA_BUILTIN_HASH) +psa_status_t mbedtls_psa_hash_abort( + mbedtls_psa_hash_operation_t *operation ) +{ + switch( operation->alg ) + { + case 0: + /* The object has (apparently) been initialized but it is not + * in use. It's ok to call abort on such an object, and there's + * nothing to do. */ + break; +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD2) + case PSA_ALG_MD2: + mbedtls_md2_free( &operation->ctx.md2 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD4) + case PSA_ALG_MD4: + mbedtls_md4_free( &operation->ctx.md4 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD5) + case PSA_ALG_MD5: + mbedtls_md5_free( &operation->ctx.md5 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160) + case PSA_ALG_RIPEMD160: + mbedtls_ripemd160_free( &operation->ctx.ripemd160 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_1) + case PSA_ALG_SHA_1: + mbedtls_sha1_free( &operation->ctx.sha1 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_224) + case PSA_ALG_SHA_224: + mbedtls_sha256_free( &operation->ctx.sha256 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_256) + case PSA_ALG_SHA_256: + mbedtls_sha256_free( &operation->ctx.sha256 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_384) + case PSA_ALG_SHA_384: + mbedtls_sha512_free( &operation->ctx.sha512 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_512) + case PSA_ALG_SHA_512: + mbedtls_sha512_free( &operation->ctx.sha512 ); + break; +#endif + default: + return( PSA_ERROR_BAD_STATE ); + } + operation->alg = 0; + return( PSA_SUCCESS ); +} + +psa_status_t mbedtls_psa_hash_setup( + mbedtls_psa_hash_operation_t *operation, + psa_algorithm_t alg ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + /* A context must be freshly initialized before it can be set up. */ + if( operation->alg != 0 ) + { + return( PSA_ERROR_BAD_STATE ); + } + + switch( alg ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD2) + case PSA_ALG_MD2: + mbedtls_md2_init( &operation->ctx.md2 ); + ret = mbedtls_md2_starts_ret( &operation->ctx.md2 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD4) + case PSA_ALG_MD4: + mbedtls_md4_init( &operation->ctx.md4 ); + ret = mbedtls_md4_starts_ret( &operation->ctx.md4 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD5) + case PSA_ALG_MD5: + mbedtls_md5_init( &operation->ctx.md5 ); + ret = mbedtls_md5_starts_ret( &operation->ctx.md5 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160) + case PSA_ALG_RIPEMD160: + mbedtls_ripemd160_init( &operation->ctx.ripemd160 ); + ret = mbedtls_ripemd160_starts_ret( &operation->ctx.ripemd160 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_1) + case PSA_ALG_SHA_1: + mbedtls_sha1_init( &operation->ctx.sha1 ); + ret = mbedtls_sha1_starts_ret( &operation->ctx.sha1 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_224) + case PSA_ALG_SHA_224: + mbedtls_sha256_init( &operation->ctx.sha256 ); + ret = mbedtls_sha256_starts_ret( &operation->ctx.sha256, 1 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_256) + case PSA_ALG_SHA_256: + mbedtls_sha256_init( &operation->ctx.sha256 ); + ret = mbedtls_sha256_starts_ret( &operation->ctx.sha256, 0 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_384) + case PSA_ALG_SHA_384: + mbedtls_sha512_init( &operation->ctx.sha512 ); + ret = mbedtls_sha512_starts_ret( &operation->ctx.sha512, 1 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_512) + case PSA_ALG_SHA_512: + mbedtls_sha512_init( &operation->ctx.sha512 ); + ret = mbedtls_sha512_starts_ret( &operation->ctx.sha512, 0 ); + break; +#endif + default: + return( PSA_ALG_IS_HASH( alg ) ? + PSA_ERROR_NOT_SUPPORTED : + PSA_ERROR_INVALID_ARGUMENT ); + } + if( ret == 0 ) + operation->alg = alg; + else + mbedtls_psa_hash_abort( operation ); + return( mbedtls_to_psa_error( ret ) ); +} + +psa_status_t mbedtls_psa_hash_clone( + const mbedtls_psa_hash_operation_t *source_operation, + mbedtls_psa_hash_operation_t *target_operation ) +{ + switch( source_operation->alg ) + { + case 0: + return( PSA_ERROR_BAD_STATE ); +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD2) + case PSA_ALG_MD2: + mbedtls_md2_clone( &target_operation->ctx.md2, + &source_operation->ctx.md2 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD4) + case PSA_ALG_MD4: + mbedtls_md4_clone( &target_operation->ctx.md4, + &source_operation->ctx.md4 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD5) + case PSA_ALG_MD5: + mbedtls_md5_clone( &target_operation->ctx.md5, + &source_operation->ctx.md5 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160) + case PSA_ALG_RIPEMD160: + mbedtls_ripemd160_clone( &target_operation->ctx.ripemd160, + &source_operation->ctx.ripemd160 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_1) + case PSA_ALG_SHA_1: + mbedtls_sha1_clone( &target_operation->ctx.sha1, + &source_operation->ctx.sha1 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_224) + case PSA_ALG_SHA_224: + mbedtls_sha256_clone( &target_operation->ctx.sha256, + &source_operation->ctx.sha256 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_256) + case PSA_ALG_SHA_256: + mbedtls_sha256_clone( &target_operation->ctx.sha256, + &source_operation->ctx.sha256 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_384) + case PSA_ALG_SHA_384: + mbedtls_sha512_clone( &target_operation->ctx.sha512, + &source_operation->ctx.sha512 ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_512) + case PSA_ALG_SHA_512: + mbedtls_sha512_clone( &target_operation->ctx.sha512, + &source_operation->ctx.sha512 ); + break; +#endif + default: + (void) source_operation; + (void) target_operation; + return( PSA_ERROR_NOT_SUPPORTED ); + } + + target_operation->alg = source_operation->alg; + return( PSA_SUCCESS ); +} + +psa_status_t mbedtls_psa_hash_update( + mbedtls_psa_hash_operation_t *operation, + const uint8_t *input, + size_t input_length ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + switch( operation->alg ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD2) + case PSA_ALG_MD2: + ret = mbedtls_md2_update_ret( &operation->ctx.md2, + input, input_length ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD4) + case PSA_ALG_MD4: + ret = mbedtls_md4_update_ret( &operation->ctx.md4, + input, input_length ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD5) + case PSA_ALG_MD5: + ret = mbedtls_md5_update_ret( &operation->ctx.md5, + input, input_length ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160) + case PSA_ALG_RIPEMD160: + ret = mbedtls_ripemd160_update_ret( &operation->ctx.ripemd160, + input, input_length ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_1) + case PSA_ALG_SHA_1: + ret = mbedtls_sha1_update_ret( &operation->ctx.sha1, + input, input_length ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_224) + case PSA_ALG_SHA_224: + ret = mbedtls_sha256_update_ret( &operation->ctx.sha256, + input, input_length ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_256) + case PSA_ALG_SHA_256: + ret = mbedtls_sha256_update_ret( &operation->ctx.sha256, + input, input_length ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_384) + case PSA_ALG_SHA_384: + ret = mbedtls_sha512_update_ret( &operation->ctx.sha512, + input, input_length ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_512) + case PSA_ALG_SHA_512: + ret = mbedtls_sha512_update_ret( &operation->ctx.sha512, + input, input_length ); + break; +#endif + default: + (void) input; + (void) input_length; + return( PSA_ERROR_BAD_STATE ); + } + + return( mbedtls_to_psa_error( ret ) ); +} + +psa_status_t mbedtls_psa_hash_finish( + mbedtls_psa_hash_operation_t *operation, + uint8_t *hash, + size_t hash_size, + size_t *hash_length ) +{ + psa_status_t status; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t actual_hash_length = PSA_HASH_LENGTH( operation->alg ); + + /* Fill the output buffer with something that isn't a valid hash + * (barring an attack on the hash and deliberately-crafted input), + * in case the caller doesn't check the return status properly. */ + *hash_length = hash_size; + /* If hash_size is 0 then hash may be NULL and then the + * call to memset would have undefined behavior. */ + if( hash_size != 0 ) + memset( hash, '!', hash_size ); + + if( hash_size < actual_hash_length ) + { + status = PSA_ERROR_BUFFER_TOO_SMALL; + goto exit; + } + + switch( operation->alg ) + { +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD2) + case PSA_ALG_MD2: + ret = mbedtls_md2_finish_ret( &operation->ctx.md2, hash ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD4) + case PSA_ALG_MD4: + ret = mbedtls_md4_finish_ret( &operation->ctx.md4, hash ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD5) + case PSA_ALG_MD5: + ret = mbedtls_md5_finish_ret( &operation->ctx.md5, hash ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160) + case PSA_ALG_RIPEMD160: + ret = mbedtls_ripemd160_finish_ret( &operation->ctx.ripemd160, hash ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_1) + case PSA_ALG_SHA_1: + ret = mbedtls_sha1_finish_ret( &operation->ctx.sha1, hash ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_224) + case PSA_ALG_SHA_224: + ret = mbedtls_sha256_finish_ret( &operation->ctx.sha256, hash ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_256) + case PSA_ALG_SHA_256: + ret = mbedtls_sha256_finish_ret( &operation->ctx.sha256, hash ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_384) + case PSA_ALG_SHA_384: + ret = mbedtls_sha512_finish_ret( &operation->ctx.sha512, hash ); + break; +#endif +#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_512) + case PSA_ALG_SHA_512: + ret = mbedtls_sha512_finish_ret( &operation->ctx.sha512, hash ); + break; +#endif + default: + (void) hash; + return( PSA_ERROR_BAD_STATE ); + } + status = mbedtls_to_psa_error( ret ); + +exit: + if( status == PSA_SUCCESS ) + *hash_length = actual_hash_length; + return( status ); +} + +psa_status_t mbedtls_psa_hash_compute( + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *hash, + size_t hash_size, + size_t *hash_length) +{ + mbedtls_psa_hash_operation_t operation = MBEDTLS_PSA_HASH_OPERATION_INIT; + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_status_t abort_status = PSA_ERROR_CORRUPTION_DETECTED; + + *hash_length = hash_size; + status = mbedtls_psa_hash_setup( &operation, alg ); + if( status != PSA_SUCCESS ) + goto exit; + status = mbedtls_psa_hash_update( &operation, input, input_length ); + if( status != PSA_SUCCESS ) + goto exit; + status = mbedtls_psa_hash_finish( &operation, hash, hash_size, hash_length ); + if( status != PSA_SUCCESS ) + goto exit; + +exit: + abort_status = mbedtls_psa_hash_abort( &operation ); + if( status == PSA_SUCCESS ) + return( abort_status ); + else + return( status ); + +} +#endif /* MBEDTLS_PSA_BUILTIN_HASH */ + +#endif /* MBEDTLS_PSA_CRYPTO_C */ diff --git a/Externals/mbedtls/library/psa_crypto_hash.h b/Externals/mbedtls/library/psa_crypto_hash.h new file mode 100644 index 000000000000..6b27c9b820a3 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_hash.h @@ -0,0 +1,234 @@ +/* + * PSA hashing layer on top of Mbed TLS software crypto + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_HASH_H +#define PSA_CRYPTO_HASH_H + +#include + +#include + +/** Get Mbed TLS MD information of a hash algorithm given its PSA identifier + * + * \param[in] alg PSA hash algorithm identifier + * + * \return The Mbed TLS MD information of the hash algorithm. \c NULL if the + * PSA hash algorithm is not supported. + */ +const mbedtls_md_info_t *mbedtls_md_info_from_psa( psa_algorithm_t alg ); + +/** Calculate the hash (digest) of a message using Mbed TLS routines. + * + * \note The signature of this function is that of a PSA driver hash_compute + * entry point. This function behaves as a hash_compute entry point as + * defined in the PSA driver interface specification for transparent + * drivers. + * + * \param alg The hash algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_HASH(\p alg) is true). + * \param[in] input Buffer containing the message to hash. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] hash Buffer where the hash is to be written. + * \param hash_size Size of the \p hash buffer in bytes. + * \param[out] hash_length On success, the number of bytes + * that make up the hash value. This is always + * #PSA_HASH_LENGTH(\p alg). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p hash_size is too small + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_hash_compute( + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *hash, + size_t hash_size, + size_t *hash_length); + +/** Set up a multipart hash operation using Mbed TLS routines. + * + * \note The signature of this function is that of a PSA driver hash_setup + * entry point. This function behaves as a hash_setup entry point as + * defined in the PSA driver interface specification for transparent + * drivers. + * + * If an error occurs at any step after a call to mbedtls_psa_hash_setup(), the + * operation will need to be reset by a call to mbedtls_psa_hash_abort(). The + * core may call mbedtls_psa_hash_abort() at any time after the operation + * has been initialized. + * + * After a successful call to mbedtls_psa_hash_setup(), the core must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to mbedtls_psa_hash_finish() or mbedtls_psa_hash_verify(). + * - A call to mbedtls_psa_hash_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized to all-zero and not yet be in use. + * \param alg The hash algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_HASH(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_hash_setup( + mbedtls_psa_hash_operation_t *operation, + psa_algorithm_t alg ); + +/** Clone an Mbed TLS hash operation. + * + * \note The signature of this function is that of a PSA driver hash_clone + * entry point. This function behaves as a hash_clone entry point as + * defined in the PSA driver interface specification for transparent + * drivers. + * + * This function copies the state of an ongoing hash operation to + * a new operation object. In other words, this function is equivalent + * to calling mbedtls_psa_hash_setup() on \p target_operation with the same + * algorithm that \p source_operation was set up for, then + * mbedtls_psa_hash_update() on \p target_operation with the same input that + * that was passed to \p source_operation. After this function returns, the + * two objects are independent, i.e. subsequent calls involving one of + * the objects do not affect the other object. + * + * \param[in] source_operation The active hash operation to clone. + * \param[in,out] target_operation The operation object to set up. + * It must be initialized but not active. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BAD_STATE + * The \p source_operation state is not valid (it must be active). + * \retval #PSA_ERROR_BAD_STATE + * The \p target_operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t mbedtls_psa_hash_clone( + const mbedtls_psa_hash_operation_t *source_operation, + mbedtls_psa_hash_operation_t *target_operation ); + +/** Add a message fragment to a multipart Mbed TLS hash operation. + * + * \note The signature of this function is that of a PSA driver hash_update + * entry point. This function behaves as a hash_update entry point as + * defined in the PSA driver interface specification for transparent + * drivers. + * + * The application must call mbedtls_psa_hash_setup() before calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling mbedtls_psa_hash_abort(). + * + * \param[in,out] operation Active hash operation. + * \param[in] input Buffer containing the message fragment to hash. + * \param input_length Size of the \p input buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_hash_update( + mbedtls_psa_hash_operation_t *operation, + const uint8_t *input, + size_t input_length ); + +/** Finish the calculation of the Mbed TLS-calculated hash of a message. + * + * \note The signature of this function is that of a PSA driver hash_finish + * entry point. This function behaves as a hash_finish entry point as + * defined in the PSA driver interface specification for transparent + * drivers. + * + * The application must call mbedtls_psa_hash_setup() before calling this function. + * This function calculates the hash of the message formed by concatenating + * the inputs passed to preceding calls to mbedtls_psa_hash_update(). + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling mbedtls_psa_hash_abort(). + * + * \param[in,out] operation Active hash operation. + * \param[out] hash Buffer where the hash is to be written. + * \param hash_size Size of the \p hash buffer in bytes. + * \param[out] hash_length On success, the number of bytes + * that make up the hash value. This is always + * #PSA_HASH_LENGTH(\c alg) where \c alg is the + * hash algorithm that is calculated. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p hash buffer is too small. You can determine a + * sufficient buffer size by calling #PSA_HASH_LENGTH(\c alg) + * where \c alg is the hash algorithm that is calculated. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_hash_finish( + mbedtls_psa_hash_operation_t *operation, + uint8_t *hash, + size_t hash_size, + size_t *hash_length ); + +/** Abort an Mbed TLS hash operation. + * + * \note The signature of this function is that of a PSA driver hash_abort + * entry point. This function behaves as a hash_abort entry point as + * defined in the PSA driver interface specification for transparent + * drivers. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * mbedtls_psa_hash_setup() again. + * + * You may call this function any time after the operation object has + * been initialized by one of the methods described in #psa_hash_operation_t. + * + * In particular, calling mbedtls_psa_hash_abort() after the operation has been + * terminated by a call to mbedtls_psa_hash_abort(), mbedtls_psa_hash_finish() or + * mbedtls_psa_hash_verify() is safe and has no effect. + * + * \param[in,out] operation Initialized hash operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_hash_abort( + mbedtls_psa_hash_operation_t *operation ); + +#endif /* PSA_CRYPTO_HASH_H */ diff --git a/Externals/mbedtls/library/psa_crypto_invasive.h b/Externals/mbedtls/library/psa_crypto_invasive.h new file mode 100644 index 000000000000..1e5a407118bf --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_invasive.h @@ -0,0 +1,86 @@ +/** + * \file psa_crypto_invasive.h + * + * \brief PSA cryptography module: invasive interfaces for test only. + * + * The interfaces in this file are intended for testing purposes only. + * They MUST NOT be made available to clients over IPC in integrations + * with isolation, and they SHOULD NOT be made available in library + * integrations except when building the library for testing. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_INVASIVE_H +#define PSA_CRYPTO_INVASIVE_H + +#if defined(MBEDTLS_CONFIG_FILE) +#include MBEDTLS_CONFIG_FILE +#else +#include "mbedtls/config.h" +#endif + +#include "psa/crypto.h" +#include "common.h" + +#include "mbedtls/entropy.h" + +#if !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) +/** \brief Configure entropy sources. + * + * This function may only be called before a call to psa_crypto_init(), + * or after a call to mbedtls_psa_crypto_free() and before any + * subsequent call to psa_crypto_init(). + * + * This function is only intended for test purposes. The functionality + * it provides is also useful for system integrators, but + * system integrators should configure entropy drivers instead of + * breaking through to the Mbed TLS API. + * + * \param entropy_init Function to initialize the entropy context + * and set up the desired entropy sources. + * It is called by psa_crypto_init(). + * By default this is mbedtls_entropy_init(). + * This function cannot report failures directly. + * To indicate a failure, set the entropy context + * to a state where mbedtls_entropy_func() will + * return an error. + * \param entropy_free Function to free the entropy context + * and associated resources. + * It is called by mbedtls_psa_crypto_free(). + * By default this is mbedtls_entropy_free(). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_NOT_PERMITTED + * The caller does not have the permission to configure + * entropy sources. + * \retval #PSA_ERROR_BAD_STATE + * The library has already been initialized. + */ +psa_status_t mbedtls_psa_crypto_configure_entropy_sources( + void (* entropy_init )( mbedtls_entropy_context *ctx ), + void (* entropy_free )( mbedtls_entropy_context *ctx ) ); +#endif /* !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) */ + +#if defined(MBEDTLS_TEST_HOOKS) && defined(MBEDTLS_PSA_CRYPTO_C) +psa_status_t psa_mac_key_can_do( + psa_algorithm_t algorithm, + psa_key_type_t key_type ); +#endif /* MBEDTLS_TEST_HOOKS && MBEDTLS_PSA_CRYPTO_C */ + +#endif /* PSA_CRYPTO_INVASIVE_H */ diff --git a/Externals/mbedtls/library/psa_crypto_its.h b/Externals/mbedtls/library/psa_crypto_its.h new file mode 100644 index 000000000000..3a3f49a72551 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_its.h @@ -0,0 +1,149 @@ +/** \file psa_crypto_its.h + * \brief Interface of trusted storage that crypto is built on. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_ITS_H +#define PSA_CRYPTO_ITS_H + +#include +#include + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** \brief Flags used when creating a data entry + */ +typedef uint32_t psa_storage_create_flags_t; + +/** \brief A type for UIDs used for identifying data + */ +typedef uint64_t psa_storage_uid_t; + +#define PSA_STORAGE_FLAG_NONE 0 /**< No flags to pass */ +#define PSA_STORAGE_FLAG_WRITE_ONCE (1 << 0) /**< The data associated with the uid will not be able to be modified or deleted. Intended to be used to set bits in `psa_storage_create_flags_t`*/ + +/** + * \brief A container for metadata associated with a specific uid + */ +struct psa_storage_info_t +{ + uint32_t size; /**< The size of the data associated with a uid **/ + psa_storage_create_flags_t flags; /**< The flags set when the uid was created **/ +}; + +/** Flag indicating that \ref psa_storage_create and \ref psa_storage_set_extended are supported */ +#define PSA_STORAGE_SUPPORT_SET_EXTENDED (1 << 0) + +/** \brief PSA storage specific error codes + */ +#define PSA_ERROR_INVALID_SIGNATURE ((psa_status_t)-149) +#define PSA_ERROR_DATA_CORRUPT ((psa_status_t)-152) + +#define PSA_ITS_API_VERSION_MAJOR 1 /**< The major version number of the PSA ITS API. It will be incremented on significant updates that may include breaking changes */ +#define PSA_ITS_API_VERSION_MINOR 1 /**< The minor version number of the PSA ITS API. It will be incremented in small updates that are unlikely to include breaking changes */ + +/** + * \brief create a new or modify an existing uid/value pair + * + * \param[in] uid the identifier for the data + * \param[in] data_length The size in bytes of the data in `p_data` + * \param[in] p_data A buffer containing the data + * \param[in] create_flags The flags that the data will be stored with + * + * \return A status indicating the success/failure of the operation + * + * \retval #PSA_SUCCESS The operation completed successfully + * \retval #PSA_ERROR_NOT_PERMITTED The operation failed because the provided `uid` value was already created with PSA_STORAGE_WRITE_ONCE_FLAG + * \retval #PSA_ERROR_NOT_SUPPORTED The operation failed because one or more of the flags provided in `create_flags` is not supported or is not valid + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE The operation failed because there was insufficient space on the storage medium + * \retval #PSA_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) + * \retval #PSA_ERROR_INVALID_ARGUMENT The operation failed because one of the provided pointers(`p_data`) + * is invalid, for example is `NULL` or references memory the caller cannot access + */ +psa_status_t psa_its_set(psa_storage_uid_t uid, + uint32_t data_length, + const void *p_data, + psa_storage_create_flags_t create_flags); + +/** + * \brief Retrieve the value associated with a provided uid + * + * \param[in] uid The uid value + * \param[in] data_offset The starting offset of the data requested + * \param[in] data_length the amount of data requested (and the minimum allocated size of the `p_data` buffer) + * \param[out] p_data The buffer where the data will be placed upon successful completion + * \param[out] p_data_length The amount of data returned in the p_data buffer + * + * + * \return A status indicating the success/failure of the operation + * + * \retval #PSA_SUCCESS The operation completed successfully + * \retval #PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided `uid` value was not found in the storage + * \retval #PSA_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) + * \retval #PSA_ERROR_DATA_CORRUPT The operation failed because stored data has been corrupted + * \retval #PSA_ERROR_INVALID_ARGUMENT The operation failed because one of the provided pointers(`p_data`, `p_data_length`) + * is invalid. For example is `NULL` or references memory the caller cannot access. + * In addition, this can also happen if an invalid offset was provided. + */ +psa_status_t psa_its_get(psa_storage_uid_t uid, + uint32_t data_offset, + uint32_t data_length, + void *p_data, + size_t *p_data_length ); + +/** + * \brief Retrieve the metadata about the provided uid + * + * \param[in] uid The uid value + * \param[out] p_info A pointer to the `psa_storage_info_t` struct that will be populated with the metadata + * + * \return A status indicating the success/failure of the operation + * + * \retval #PSA_SUCCESS The operation completed successfully + * \retval #PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided uid value was not found in the storage + * \retval #PSA_ERROR_DATA_CORRUPT The operation failed because stored data has been corrupted + * \retval #PSA_ERROR_INVALID_ARGUMENT The operation failed because one of the provided pointers(`p_info`) + * is invalid, for example is `NULL` or references memory the caller cannot access + */ +psa_status_t psa_its_get_info(psa_storage_uid_t uid, + struct psa_storage_info_t *p_info); + +/** + * \brief Remove the provided key and its associated data from the storage + * + * \param[in] uid The uid value + * + * \return A status indicating the success/failure of the operation + * + * \retval #PSA_SUCCESS The operation completed successfully + * \retval #PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided key value was not found in the storage + * \retval #PSA_ERROR_NOT_PERMITTED The operation failed because the provided key value was created with PSA_STORAGE_WRITE_ONCE_FLAG + * \retval #PSA_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) + */ +psa_status_t psa_its_remove(psa_storage_uid_t uid); + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_ITS_H */ diff --git a/Externals/mbedtls/library/psa_crypto_mac.c b/Externals/mbedtls/library/psa_crypto_mac.c new file mode 100644 index 000000000000..dcf065a67265 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_mac.c @@ -0,0 +1,499 @@ +/* + * PSA MAC layer on top of Mbed TLS software crypto + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common.h" + +#if defined(MBEDTLS_PSA_CRYPTO_C) + +#include +#include "psa_crypto_core.h" +#include "psa_crypto_mac.h" +#include + +#include +#include + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HMAC) +static psa_status_t psa_hmac_abort_internal( + mbedtls_psa_hmac_operation_t *hmac ) +{ + mbedtls_platform_zeroize( hmac->opad, sizeof( hmac->opad ) ); + return( psa_hash_abort( &hmac->hash_ctx ) ); +} + +static psa_status_t psa_hmac_setup_internal( + mbedtls_psa_hmac_operation_t *hmac, + const uint8_t *key, + size_t key_length, + psa_algorithm_t hash_alg ) +{ + uint8_t ipad[PSA_HMAC_MAX_HASH_BLOCK_SIZE]; + size_t i; + size_t hash_size = PSA_HASH_LENGTH( hash_alg ); + size_t block_size = PSA_HASH_BLOCK_LENGTH( hash_alg ); + psa_status_t status; + + hmac->alg = hash_alg; + + /* Sanity checks on block_size, to guarantee that there won't be a buffer + * overflow below. This should never trigger if the hash algorithm + * is implemented correctly. */ + /* The size checks against the ipad and opad buffers cannot be written + * `block_size > sizeof( ipad ) || block_size > sizeof( hmac->opad )` + * because that triggers -Wlogical-op on GCC 7.3. */ + if( block_size > sizeof( ipad ) ) + return( PSA_ERROR_NOT_SUPPORTED ); + if( block_size > sizeof( hmac->opad ) ) + return( PSA_ERROR_NOT_SUPPORTED ); + if( block_size < hash_size ) + return( PSA_ERROR_NOT_SUPPORTED ); + + if( key_length > block_size ) + { + status = psa_hash_compute( hash_alg, key, key_length, + ipad, sizeof( ipad ), &key_length ); + if( status != PSA_SUCCESS ) + goto cleanup; + } + /* A 0-length key is not commonly used in HMAC when used as a MAC, + * but it is permitted. It is common when HMAC is used in HKDF, for + * example. Don't call `memcpy` in the 0-length because `key` could be + * an invalid pointer which would make the behavior undefined. */ + else if( key_length != 0 ) + memcpy( ipad, key, key_length ); + + /* ipad contains the key followed by garbage. Xor and fill with 0x36 + * to create the ipad value. */ + for( i = 0; i < key_length; i++ ) + ipad[i] ^= 0x36; + memset( ipad + key_length, 0x36, block_size - key_length ); + + /* Copy the key material from ipad to opad, flipping the requisite bits, + * and filling the rest of opad with the requisite constant. */ + for( i = 0; i < key_length; i++ ) + hmac->opad[i] = ipad[i] ^ 0x36 ^ 0x5C; + memset( hmac->opad + key_length, 0x5C, block_size - key_length ); + + status = psa_hash_setup( &hmac->hash_ctx, hash_alg ); + if( status != PSA_SUCCESS ) + goto cleanup; + + status = psa_hash_update( &hmac->hash_ctx, ipad, block_size ); + +cleanup: + mbedtls_platform_zeroize( ipad, sizeof( ipad ) ); + + return( status ); +} + +static psa_status_t psa_hmac_update_internal( + mbedtls_psa_hmac_operation_t *hmac, + const uint8_t *data, + size_t data_length ) +{ + return( psa_hash_update( &hmac->hash_ctx, data, data_length ) ); +} + +static psa_status_t psa_hmac_finish_internal( + mbedtls_psa_hmac_operation_t *hmac, + uint8_t *mac, + size_t mac_size ) +{ + uint8_t tmp[PSA_HASH_MAX_SIZE]; + psa_algorithm_t hash_alg = hmac->alg; + size_t hash_size = 0; + size_t block_size = PSA_HASH_BLOCK_LENGTH( hash_alg ); + psa_status_t status; + + status = psa_hash_finish( &hmac->hash_ctx, tmp, sizeof( tmp ), &hash_size ); + if( status != PSA_SUCCESS ) + return( status ); + /* From here on, tmp needs to be wiped. */ + + status = psa_hash_setup( &hmac->hash_ctx, hash_alg ); + if( status != PSA_SUCCESS ) + goto exit; + + status = psa_hash_update( &hmac->hash_ctx, hmac->opad, block_size ); + if( status != PSA_SUCCESS ) + goto exit; + + status = psa_hash_update( &hmac->hash_ctx, tmp, hash_size ); + if( status != PSA_SUCCESS ) + goto exit; + + status = psa_hash_finish( &hmac->hash_ctx, tmp, sizeof( tmp ), &hash_size ); + if( status != PSA_SUCCESS ) + goto exit; + + memcpy( mac, tmp, mac_size ); + +exit: + mbedtls_platform_zeroize( tmp, hash_size ); + return( status ); +} +#endif /* MBEDTLS_PSA_BUILTIN_ALG_HMAC */ + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CMAC) +static psa_status_t cmac_setup( mbedtls_psa_mac_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + +#if defined(PSA_WANT_KEY_TYPE_DES) + /* Mbed TLS CMAC does not accept 3DES with only two keys, nor does it accept + * to do CMAC with pure DES, so return NOT_SUPPORTED here. */ + if( psa_get_key_type( attributes ) == PSA_KEY_TYPE_DES && + ( psa_get_key_bits( attributes ) == 64 || + psa_get_key_bits( attributes ) == 128 ) ) + return( PSA_ERROR_NOT_SUPPORTED ); +#endif + + const mbedtls_cipher_info_t * cipher_info = + mbedtls_cipher_info_from_psa( + PSA_ALG_CMAC, + psa_get_key_type( attributes ), + psa_get_key_bits( attributes ), + NULL ); + + if( cipher_info == NULL ) + return( PSA_ERROR_NOT_SUPPORTED ); + + ret = mbedtls_cipher_setup( &operation->ctx.cmac, cipher_info ); + if( ret != 0 ) + goto exit; + + ret = mbedtls_cipher_cmac_starts( &operation->ctx.cmac, + key_buffer, + psa_get_key_bits( attributes ) ); +exit: + return( mbedtls_to_psa_error( ret ) ); +} +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CMAC */ + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HMAC) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_CMAC) + +/* Initialize this driver's MAC operation structure. Once this function has been + * called, mbedtls_psa_mac_abort can run and will do the right thing. */ +static psa_status_t mac_init( + mbedtls_psa_mac_operation_t *operation, + psa_algorithm_t alg ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + + operation->alg = alg; + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CMAC) + if( PSA_ALG_FULL_LENGTH_MAC( operation->alg ) == PSA_ALG_CMAC ) + { + mbedtls_cipher_init( &operation->ctx.cmac ); + status = PSA_SUCCESS; + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CMAC */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HMAC) + if( PSA_ALG_IS_HMAC( operation->alg ) ) + { + /* We'll set up the hash operation later in psa_hmac_setup_internal. */ + operation->ctx.hmac.alg = 0; + status = PSA_SUCCESS; + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_HMAC */ + { + (void) operation; + status = PSA_ERROR_NOT_SUPPORTED; + } + + if( status != PSA_SUCCESS ) + memset( operation, 0, sizeof( *operation ) ); + return( status ); +} + +psa_status_t mbedtls_psa_mac_abort( mbedtls_psa_mac_operation_t *operation ) +{ + if( operation->alg == 0 ) + { + /* The object has (apparently) been initialized but it is not + * in use. It's ok to call abort on such an object, and there's + * nothing to do. */ + return( PSA_SUCCESS ); + } + else +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CMAC) + if( PSA_ALG_FULL_LENGTH_MAC( operation->alg ) == PSA_ALG_CMAC ) + { + mbedtls_cipher_free( &operation->ctx.cmac ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CMAC */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HMAC) + if( PSA_ALG_IS_HMAC( operation->alg ) ) + { + psa_hmac_abort_internal( &operation->ctx.hmac ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_HMAC */ + { + /* Sanity check (shouldn't happen: operation->alg should + * always have been initialized to a valid value). */ + goto bad_state; + } + + operation->alg = 0; + + return( PSA_SUCCESS ); + +bad_state: + /* If abort is called on an uninitialized object, we can't trust + * anything. Wipe the object in case it contains confidential data. + * This may result in a memory leak if a pointer gets overwritten, + * but it's too late to do anything about this. */ + memset( operation, 0, sizeof( *operation ) ); + return( PSA_ERROR_BAD_STATE ); +} + +static psa_status_t psa_mac_setup( mbedtls_psa_mac_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + + /* A context must be freshly initialized before it can be set up. */ + if( operation->alg != 0 ) + return( PSA_ERROR_BAD_STATE ); + + status = mac_init( operation, alg ); + if( status != PSA_SUCCESS ) + return( status ); + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CMAC) + if( PSA_ALG_FULL_LENGTH_MAC( alg ) == PSA_ALG_CMAC ) + { + /* Key buffer size for CMAC is dictated by the key bits set on the + * attributes, and previously validated by the core on key import. */ + (void) key_buffer_size; + status = cmac_setup( operation, attributes, key_buffer ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CMAC */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HMAC) + if( PSA_ALG_IS_HMAC( alg ) ) + { + status = psa_hmac_setup_internal( &operation->ctx.hmac, + key_buffer, + key_buffer_size, + PSA_ALG_HMAC_GET_HASH( alg ) ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_HMAC */ + { + (void) attributes; + (void) key_buffer; + (void) key_buffer_size; + status = PSA_ERROR_NOT_SUPPORTED; + } + + if( status != PSA_SUCCESS ) + mbedtls_psa_mac_abort( operation ); + + return( status ); +} + +psa_status_t mbedtls_psa_mac_sign_setup( + mbedtls_psa_mac_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg ) +{ + return( psa_mac_setup( operation, attributes, + key_buffer, key_buffer_size, alg ) ); +} + +psa_status_t mbedtls_psa_mac_verify_setup( + mbedtls_psa_mac_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg ) +{ + return( psa_mac_setup( operation, attributes, + key_buffer, key_buffer_size, alg ) ); +} + +psa_status_t mbedtls_psa_mac_update( + mbedtls_psa_mac_operation_t *operation, + const uint8_t *input, + size_t input_length ) +{ + if( operation->alg == 0 ) + return( PSA_ERROR_BAD_STATE ); + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CMAC) + if( PSA_ALG_FULL_LENGTH_MAC( operation->alg ) == PSA_ALG_CMAC ) + { + return( mbedtls_to_psa_error( + mbedtls_cipher_cmac_update( &operation->ctx.cmac, + input, input_length ) ) ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CMAC */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HMAC) + if( PSA_ALG_IS_HMAC( operation->alg ) ) + { + return( psa_hmac_update_internal( &operation->ctx.hmac, + input, input_length ) ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_HMAC */ + { + /* This shouldn't happen if `operation` was initialized by + * a setup function. */ + (void) input; + (void) input_length; + return( PSA_ERROR_BAD_STATE ); + } +} + +static psa_status_t psa_mac_finish_internal( + mbedtls_psa_mac_operation_t *operation, + uint8_t *mac, size_t mac_size ) +{ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_CMAC) + if( PSA_ALG_FULL_LENGTH_MAC( operation->alg ) == PSA_ALG_CMAC ) + { + uint8_t tmp[PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE]; + int ret = mbedtls_cipher_cmac_finish( &operation->ctx.cmac, tmp ); + if( ret == 0 ) + memcpy( mac, tmp, mac_size ); + mbedtls_platform_zeroize( tmp, sizeof( tmp ) ); + return( mbedtls_to_psa_error( ret ) ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_CMAC */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_HMAC) + if( PSA_ALG_IS_HMAC( operation->alg ) ) + { + return( psa_hmac_finish_internal( &operation->ctx.hmac, + mac, mac_size ) ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_HMAC */ + { + /* This shouldn't happen if `operation` was initialized by + * a setup function. */ + (void) operation; + (void) mac; + (void) mac_size; + return( PSA_ERROR_BAD_STATE ); + } +} + +psa_status_t mbedtls_psa_mac_sign_finish( + mbedtls_psa_mac_operation_t *operation, + uint8_t *mac, + size_t mac_size, + size_t *mac_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + + if( operation->alg == 0 ) + return( PSA_ERROR_BAD_STATE ); + + status = psa_mac_finish_internal( operation, mac, mac_size ); + if( status == PSA_SUCCESS ) + *mac_length = mac_size; + + return( status ); +} + +psa_status_t mbedtls_psa_mac_verify_finish( + mbedtls_psa_mac_operation_t *operation, + const uint8_t *mac, + size_t mac_length ) +{ + uint8_t actual_mac[PSA_MAC_MAX_SIZE]; + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + + if( operation->alg == 0 ) + return( PSA_ERROR_BAD_STATE ); + + /* Consistency check: requested MAC length fits our local buffer */ + if( mac_length > sizeof( actual_mac ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + status = psa_mac_finish_internal( operation, actual_mac, mac_length ); + if( status != PSA_SUCCESS ) + goto cleanup; + + if( mbedtls_psa_safer_memcmp( mac, actual_mac, mac_length ) != 0 ) + status = PSA_ERROR_INVALID_SIGNATURE; + +cleanup: + mbedtls_platform_zeroize( actual_mac, sizeof( actual_mac ) ); + + return( status ); +} + +psa_status_t mbedtls_psa_mac_compute( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *mac, + size_t mac_size, + size_t *mac_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + mbedtls_psa_mac_operation_t operation = MBEDTLS_PSA_MAC_OPERATION_INIT; + + status = psa_mac_setup( &operation, + attributes, key_buffer, key_buffer_size, + alg ); + if( status != PSA_SUCCESS ) + goto exit; + + if( input_length > 0 ) + { + status = mbedtls_psa_mac_update( &operation, input, input_length ); + if( status != PSA_SUCCESS ) + goto exit; + } + + status = psa_mac_finish_internal( &operation, mac, mac_size ); + if( status == PSA_SUCCESS ) + *mac_length = mac_size; + +exit: + mbedtls_psa_mac_abort( &operation ); + + return( status ); +} + +#endif /* MBEDTLS_PSA_BUILTIN_ALG_HMAC || MBEDTLS_PSA_BUILTIN_ALG_CMAC */ + +#endif /* MBEDTLS_PSA_CRYPTO_C */ diff --git a/Externals/mbedtls/library/psa_crypto_mac.h b/Externals/mbedtls/library/psa_crypto_mac.h new file mode 100644 index 000000000000..a821e7411642 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_mac.h @@ -0,0 +1,276 @@ +/* + * PSA MAC layer on top of Mbed TLS software crypto + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_MAC_H +#define PSA_CRYPTO_MAC_H + +#include + +/** Calculate the MAC (message authentication code) of a message using Mbed TLS. + * + * \note The signature of this function is that of a PSA driver mac_compute + * entry point. This function behaves as a mac_compute entry point as + * defined in the PSA driver interface specification for transparent + * drivers. + * + * \param[in] attributes The attributes of the key to use for the + * operation. + * \param[in] key_buffer The buffer containing the key to use for + * computing the MAC. This buffer contains the key + * in export representation as defined by + * psa_export_key() (i.e. the raw key bytes). + * \param key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param alg The MAC algorithm to use (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * \param[in] input Buffer containing the input message. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] mac Buffer where the MAC value is to be written. + * \param mac_size Size of the \p mac buffer in bytes. + * \param[out] mac_length On success, the number of bytes + * that make up the MAC value. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p mac_size is too small + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_mac_compute( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *mac, + size_t mac_size, + size_t *mac_length); + +/** Set up a multipart MAC calculation operation using Mbed TLS. + * + * \note The signature of this function is that of a PSA driver mac_sign_setup + * entry point. This function behaves as a mac_sign_setup entry point as + * defined in the PSA driver interface specification for transparent + * drivers. + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized and not yet in use. + * \param[in] attributes The attributes of the key to use for the + * operation. + * \param[in] key_buffer The buffer containing the key to use for + * computing the MAC. This buffer contains the key + * in export representation as defined by + * psa_export_key() (i.e. the raw key bytes). + * \param key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param alg The MAC algorithm to use (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + */ +psa_status_t mbedtls_psa_mac_sign_setup( + mbedtls_psa_mac_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg); + +/** Set up a multipart MAC verification operation using Mbed TLS. + * + * \note The signature of this function is that of a PSA driver mac_verify_setup + * entry point. This function behaves as a mac_verify_setup entry point as + * defined in the PSA driver interface specification for transparent + * drivers. + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized and not yet in use. + * \param[in] attributes The attributes of the key to use for the + * operation. + * \param[in] key_buffer The buffer containing the key to use for + * computing the MAC. This buffer contains the key + * in export representation as defined by + * psa_export_key() (i.e. the raw key bytes). + * \param key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param alg The MAC algorithm to use (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + */ +psa_status_t mbedtls_psa_mac_verify_setup( + mbedtls_psa_mac_operation_t *operation, + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, + size_t key_buffer_size, + psa_algorithm_t alg); + +/** Add a message fragment to a multipart MAC operation using Mbed TLS. + * + * \note The signature of this function is that of a PSA driver mac_update + * entry point. This function behaves as a mac_update entry point as + * defined in the PSA driver interface specification for transparent + * drivers. + * + * The PSA core calls mbedtls_psa_mac_sign_setup() or + * mbedtls_psa_mac_verify_setup() before calling this function. + * + * If this function returns an error status, the PSA core aborts the + * operation by calling mbedtls_psa_mac_abort(). + * + * \param[in,out] operation Active MAC operation. + * \param[in] input Buffer containing the message fragment to add to + * the MAC calculation. + * \param input_length Size of the \p input buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_mac_update( + mbedtls_psa_mac_operation_t *operation, + const uint8_t *input, + size_t input_length ); + +/** Finish the calculation of the MAC of a message using Mbed TLS. + * + * \note The signature of this function is that of a PSA driver mac_sign_finish + * entry point. This function behaves as a mac_sign_finish entry point as + * defined in the PSA driver interface specification for transparent + * drivers. + * + * The PSA core calls mbedtls_psa_mac_sign_setup() before calling this function. + * This function calculates the MAC of the message formed by concatenating + * the inputs passed to preceding calls to mbedtls_psa_mac_update(). + * + * Whether this function returns successfully or not, the PSA core subsequently + * aborts the operation by calling mbedtls_psa_mac_abort(). + * + * \param[in,out] operation Active MAC operation. + * \param[out] mac Buffer where the MAC value is to be written. + * \param mac_size Output size requested for the MAC algorithm. The PSA + * core guarantees this is a valid MAC length for the + * algorithm and key combination passed to + * mbedtls_psa_mac_sign_setup(). It also guarantees the + * \p mac buffer is large enough to contain the + * requested output size. + * \param[out] mac_length On success, the number of bytes output to buffer + * \p mac, which will be equal to the requested length + * \p mac_size. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active mac sign + * operation). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p mac buffer is too small. A sufficient buffer size + * can be determined by calling PSA_MAC_LENGTH(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_mac_sign_finish( + mbedtls_psa_mac_operation_t *operation, + uint8_t *mac, + size_t mac_size, + size_t *mac_length ); + +/** Finish the calculation of the MAC of a message and compare it with + * an expected value using Mbed TLS. + * + * \note The signature of this function is that of a PSA driver + * mac_verify_finish entry point. This function behaves as a + * mac_verify_finish entry point as defined in the PSA driver interface + * specification for transparent drivers. + * + * The PSA core calls mbedtls_psa_mac_verify_setup() before calling this + * function. This function calculates the MAC of the message formed by + * concatenating the inputs passed to preceding calls to + * mbedtls_psa_mac_update(). It then compares the calculated MAC with the + * expected MAC passed as a parameter to this function. + * + * Whether this function returns successfully or not, the PSA core subsequently + * aborts the operation by calling mbedtls_psa_mac_abort(). + * + * \param[in,out] operation Active MAC operation. + * \param[in] mac Buffer containing the expected MAC value. + * \param mac_length Length in bytes of the expected MAC value. The PSA + * core guarantees that this length is a valid MAC + * length for the algorithm and key combination passed + * to mbedtls_psa_mac_verify_setup(). + * + * \retval #PSA_SUCCESS + * The expected MAC is identical to the actual MAC of the message. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The MAC of the message was calculated successfully, but it + * differs from the expected MAC. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active mac verify + * operation). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_mac_verify_finish( + mbedtls_psa_mac_operation_t *operation, + const uint8_t *mac, + size_t mac_length ); + +/** Abort a MAC operation using Mbed TLS. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * mbedtls_psa_mac_sign_setup() or mbedtls_psa_mac_verify_setup() again. + * + * The PSA core may call this function any time after the operation object has + * been initialized by one of the methods described in + * #mbedtls_psa_mac_operation_t. + * + * In particular, calling mbedtls_psa_mac_abort() after the operation has been + * terminated by a call to mbedtls_psa_mac_abort(), + * mbedtls_psa_mac_sign_finish() or mbedtls_psa_mac_verify_finish() is safe and + * has no effect. + * + * \param[in,out] operation Initialized MAC operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_mac_abort( + mbedtls_psa_mac_operation_t *operation ); + +#endif /* PSA_CRYPTO_MAC_H */ diff --git a/Externals/mbedtls/library/psa_crypto_random_impl.h b/Externals/mbedtls/library/psa_crypto_random_impl.h new file mode 100644 index 000000000000..3c4c09a28426 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_random_impl.h @@ -0,0 +1,205 @@ +/** \file psa_crypto_random_impl.h + * + * \brief PSA crypto random generator implementation abstraction. + * + * The definitions here need to be consistent with the declarations + * in include/mbedtls/psa_util.h. This file contains some redundant + * declarations to increase the chance that a compiler will detect + * inconsistencies if one file is changed without updating the other, + * but not all potential inconsistencies can be enforced, so make sure + * to check the public declarations and contracts in + * include/mbedtls/psa_util.h if you modify this file. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_RANDOM_IMPL_H +#define PSA_CRYPTO_RANDOM_IMPL_H + +#include + +#if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) + +#include +#include // only for error codes +#include + +typedef mbedtls_psa_external_random_context_t mbedtls_psa_random_context_t; + +/* Trivial wrapper around psa_generate_random(). */ +int mbedtls_psa_get_random( void *p_rng, + unsigned char *output, + size_t output_size ); + +/* The PSA RNG API doesn't need any externally maintained state. */ +#define MBEDTLS_PSA_RANDOM_STATE NULL + +#else /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */ + +/* Choose a DRBG based on configuration and availability */ +#if defined(MBEDTLS_PSA_HMAC_DRBG_MD_TYPE) + +#include "mbedtls/hmac_drbg.h" + +#elif defined(MBEDTLS_CTR_DRBG_C) + +#include "mbedtls/ctr_drbg.h" + +#elif defined(MBEDTLS_HMAC_DRBG_C) + +#include "mbedtls/hmac_drbg.h" +#if defined(MBEDTLS_SHA512_C) && defined(MBEDTLS_SHA256_C) +#include +#if SIZE_MAX > 0xffffffff +/* Looks like a 64-bit system, so prefer SHA-512. */ +#define MBEDTLS_PSA_HMAC_DRBG_MD_TYPE MBEDTLS_MD_SHA512 +#else +/* Looks like a 32-bit system, so prefer SHA-256. */ +#define MBEDTLS_PSA_HMAC_DRBG_MD_TYPE MBEDTLS_MD_SHA256 +#endif +#elif defined(MBEDTLS_SHA512_C) +#define MBEDTLS_PSA_HMAC_DRBG_MD_TYPE MBEDTLS_MD_SHA512 +#elif defined(MBEDTLS_SHA256_C) +#define MBEDTLS_PSA_HMAC_DRBG_MD_TYPE MBEDTLS_MD_SHA256 +#else +#error "No hash algorithm available for HMAC_DBRG." +#endif + +#else +#error "No DRBG module available for the psa_crypto module." +#endif + +#include "mbedtls/entropy.h" + +/** Initialize the PSA DRBG. + * + * \param p_rng Pointer to the Mbed TLS DRBG state. + */ +static inline void mbedtls_psa_drbg_init( mbedtls_psa_drbg_context_t *p_rng ) +{ +#if defined(MBEDTLS_CTR_DRBG_C) + mbedtls_ctr_drbg_init( p_rng ); +#elif defined(MBEDTLS_HMAC_DRBG_C) + mbedtls_hmac_drbg_init( p_rng ); +#endif +} + +/** Deinitialize the PSA DRBG. + * + * \param p_rng Pointer to the Mbed TLS DRBG state. + */ +static inline void mbedtls_psa_drbg_free( mbedtls_psa_drbg_context_t *p_rng ) +{ +#if defined(MBEDTLS_CTR_DRBG_C) + mbedtls_ctr_drbg_free( p_rng ); +#elif defined(MBEDTLS_HMAC_DRBG_C) + mbedtls_hmac_drbg_free( p_rng ); +#endif +} + +/** The type of the PSA random generator context. + * + * The random generator context is composed of an entropy context and + * a DRBG context. + */ +typedef struct +{ + void (* entropy_init )( mbedtls_entropy_context *ctx ); + void (* entropy_free )( mbedtls_entropy_context *ctx ); + mbedtls_entropy_context entropy; + mbedtls_psa_drbg_context_t drbg; +} mbedtls_psa_random_context_t; + +/* Defined in include/mbedtls/psa_util.h so that it's visible to + * application code. The declaration here is redundant, but included + * as a safety net to make it more likely that a future change that + * accidentally causes the implementation to diverge from the interface + * will be noticed. */ +/* Do not include the declaration under MSVC because it doesn't accept it + * ("error C2370: 'mbedtls_psa_get_random' : redefinition; different storage class"). + * Observed with Visual Studio 2013. A known bug apparently: + * https://stackoverflow.com/questions/8146541/duplicate-external-static-declarations-not-allowed-in-visual-studio + */ +#if !defined(_MSC_VER) +static mbedtls_f_rng_t *const mbedtls_psa_get_random; +#endif + +/** The maximum number of bytes that mbedtls_psa_get_random() is expected to + * return. + */ +#if defined(MBEDTLS_CTR_DRBG_C) +#define MBEDTLS_PSA_RANDOM_MAX_REQUEST MBEDTLS_CTR_DRBG_MAX_REQUEST +#elif defined(MBEDTLS_HMAC_DRBG_C) +#define MBEDTLS_PSA_RANDOM_MAX_REQUEST MBEDTLS_HMAC_DRBG_MAX_REQUEST +#endif + +/** A pointer to the PSA DRBG state. + * + * This variable is only intended to be used through the macro + * #MBEDTLS_PSA_RANDOM_STATE. + */ +/* psa_crypto.c sets this variable to a pointer to the DRBG state in the + * global PSA crypto state. */ +/* The type `mbedtls_psa_drbg_context_t` is defined in + * include/mbedtls/psa_util.h so that `mbedtls_psa_random_state` can be + * declared there and be visible to application code. */ +extern mbedtls_psa_drbg_context_t *const mbedtls_psa_random_state; + +/** A pointer to the PSA DRBG state. + * + * This macro expands to an expression that is suitable as the \c p_rng + * parameter to pass to mbedtls_psa_get_random(). + * + * This macro exists in all configurations where the psa_crypto module is + * enabled. Its expansion depends on the configuration. + */ +#define MBEDTLS_PSA_RANDOM_STATE mbedtls_psa_random_state + +/** Seed the PSA DRBG. + * + * \param entropy An entropy context to read the seed from. + * \param custom The personalization string. + * This can be \c NULL, in which case the personalization + * string is empty regardless of the value of \p len. + * \param len The length of the personalization string. + * + * \return \c 0 on success. + * \return An Mbed TLS error code (\c MBEDTLS_ERR_xxx) on failure. + */ +static inline int mbedtls_psa_drbg_seed( + mbedtls_entropy_context *entropy, + const unsigned char *custom, size_t len ) +{ +#if defined(MBEDTLS_CTR_DRBG_C) + return( mbedtls_ctr_drbg_seed( MBEDTLS_PSA_RANDOM_STATE, + mbedtls_entropy_func, + entropy, + custom, len ) ); +#elif defined(MBEDTLS_HMAC_DRBG_C) + const mbedtls_md_info_t *md_info = + mbedtls_md_info_from_type( MBEDTLS_PSA_HMAC_DRBG_MD_TYPE ); + return( mbedtls_hmac_drbg_seed( MBEDTLS_PSA_RANDOM_STATE, + md_info, + mbedtls_entropy_func, + entropy, + custom, len ) ); +#endif +} + +#endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */ + +#endif /* PSA_CRYPTO_RANDOM_IMPL_H */ diff --git a/Externals/mbedtls/library/psa_crypto_rsa.c b/Externals/mbedtls/library/psa_crypto_rsa.c new file mode 100644 index 000000000000..bafb55c7d4f0 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_rsa.c @@ -0,0 +1,530 @@ +/* + * PSA RSA layer on top of Mbed TLS crypto + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common.h" + +#if defined(MBEDTLS_PSA_CRYPTO_C) + +#include +#include "psa_crypto_core.h" +#include "psa_crypto_random_impl.h" +#include "psa_crypto_rsa.h" +#include "psa_crypto_hash.h" + +#include +#include +#include "mbedtls/platform.h" +#if !defined(MBEDTLS_PLATFORM_C) +#define mbedtls_calloc calloc +#define mbedtls_free free +#endif + +#include +#include +#include +#include + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS) || \ + defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) || \ + defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY) + +/* Mbed TLS doesn't support non-byte-aligned key sizes (i.e. key sizes + * that are not a multiple of 8) well. For example, there is only + * mbedtls_rsa_get_len(), which returns a number of bytes, and no + * way to return the exact bit size of a key. + * To keep things simple, reject non-byte-aligned key sizes. */ +static psa_status_t psa_check_rsa_key_byte_aligned( + const mbedtls_rsa_context *rsa ) +{ + mbedtls_mpi n; + psa_status_t status; + mbedtls_mpi_init( &n ); + status = mbedtls_to_psa_error( + mbedtls_rsa_export( rsa, &n, NULL, NULL, NULL, NULL ) ); + if( status == PSA_SUCCESS ) + { + if( mbedtls_mpi_bitlen( &n ) % 8 != 0 ) + status = PSA_ERROR_NOT_SUPPORTED; + } + mbedtls_mpi_free( &n ); + return( status ); +} + +psa_status_t mbedtls_psa_rsa_load_representation( + psa_key_type_t type, const uint8_t *data, size_t data_length, + mbedtls_rsa_context **p_rsa ) +{ + psa_status_t status; + mbedtls_pk_context ctx; + size_t bits; + mbedtls_pk_init( &ctx ); + + /* Parse the data. */ + if( PSA_KEY_TYPE_IS_KEY_PAIR( type ) ) + status = mbedtls_to_psa_error( + mbedtls_pk_parse_key( &ctx, data, data_length, NULL, 0 ) ); + else + status = mbedtls_to_psa_error( + mbedtls_pk_parse_public_key( &ctx, data, data_length ) ); + if( status != PSA_SUCCESS ) + goto exit; + + /* We have something that the pkparse module recognizes. If it is a + * valid RSA key, store it. */ + if( mbedtls_pk_get_type( &ctx ) != MBEDTLS_PK_RSA ) + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + /* The size of an RSA key doesn't have to be a multiple of 8. Mbed TLS + * supports non-byte-aligned key sizes, but not well. For example, + * mbedtls_rsa_get_len() returns the key size in bytes, not in bits. */ + bits = PSA_BYTES_TO_BITS( mbedtls_rsa_get_len( mbedtls_pk_rsa( ctx ) ) ); + if( bits > PSA_VENDOR_RSA_MAX_KEY_BITS ) + { + status = PSA_ERROR_NOT_SUPPORTED; + goto exit; + } + status = psa_check_rsa_key_byte_aligned( mbedtls_pk_rsa( ctx ) ); + if( status != PSA_SUCCESS ) + goto exit; + + /* Copy out the pointer to the RSA context, and reset the PK context + * such that pk_free doesn't free the RSA context we just grabbed. */ + *p_rsa = mbedtls_pk_rsa( ctx ); + ctx.pk_info = NULL; + +exit: + mbedtls_pk_free( &ctx ); + return( status ); +} +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS) || + * defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) || + * defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY) */ + +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) || \ + defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY) + +psa_status_t mbedtls_psa_rsa_import_key( + const psa_key_attributes_t *attributes, + const uint8_t *data, size_t data_length, + uint8_t *key_buffer, size_t key_buffer_size, + size_t *key_buffer_length, size_t *bits ) +{ + psa_status_t status; + mbedtls_rsa_context *rsa = NULL; + + /* Parse input */ + status = mbedtls_psa_rsa_load_representation( attributes->core.type, + data, + data_length, + &rsa ); + if( status != PSA_SUCCESS ) + goto exit; + + *bits = (psa_key_bits_t) PSA_BYTES_TO_BITS( mbedtls_rsa_get_len( rsa ) ); + + /* Re-export the data to PSA export format, such that we can store export + * representation in the key slot. Export representation in case of RSA is + * the smallest representation that's allowed as input, so a straight-up + * allocation of the same size as the input buffer will be large enough. */ + status = mbedtls_psa_rsa_export_key( attributes->core.type, + rsa, + key_buffer, + key_buffer_size, + key_buffer_length ); +exit: + /* Always free the RSA object */ + mbedtls_rsa_free( rsa ); + mbedtls_free( rsa ); + + return( status ); +} + +psa_status_t mbedtls_psa_rsa_export_key( psa_key_type_t type, + mbedtls_rsa_context *rsa, + uint8_t *data, + size_t data_size, + size_t *data_length ) +{ +#if defined(MBEDTLS_PK_WRITE_C) + int ret; + mbedtls_pk_context pk; + uint8_t *pos = data + data_size; + + mbedtls_pk_init( &pk ); + pk.pk_info = &mbedtls_rsa_info; + pk.pk_ctx = rsa; + + /* PSA Crypto API defines the format of an RSA key as a DER-encoded + * representation of the non-encrypted PKCS#1 RSAPrivateKey for a + * private key and of the RFC3279 RSAPublicKey for a public key. */ + if( PSA_KEY_TYPE_IS_KEY_PAIR( type ) ) + ret = mbedtls_pk_write_key_der( &pk, data, data_size ); + else + ret = mbedtls_pk_write_pubkey( &pos, data, &pk ); + + if( ret < 0 ) + { + /* Clean up in case pk_write failed halfway through. */ + memset( data, 0, data_size ); + return( mbedtls_to_psa_error( ret ) ); + } + + /* The mbedtls_pk_xxx functions write to the end of the buffer. + * Move the data to the beginning and erase remaining data + * at the original location. */ + if( 2 * (size_t) ret <= data_size ) + { + memcpy( data, data + data_size - ret, ret ); + memset( data + data_size - ret, 0, ret ); + } + else if( (size_t) ret < data_size ) + { + memmove( data, data + data_size - ret, ret ); + memset( data + ret, 0, data_size - ret ); + } + + *data_length = ret; + return( PSA_SUCCESS ); +#else + (void) type; + (void) rsa; + (void) data; + (void) data_size; + (void) data_length; + return( PSA_ERROR_NOT_SUPPORTED ); +#endif /* MBEDTLS_PK_WRITE_C */ +} + +psa_status_t mbedtls_psa_rsa_export_public_key( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + uint8_t *data, size_t data_size, size_t *data_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + mbedtls_rsa_context *rsa = NULL; + + status = mbedtls_psa_rsa_load_representation( + attributes->core.type, key_buffer, key_buffer_size, &rsa ); + if( status != PSA_SUCCESS ) + return( status ); + + status = mbedtls_psa_rsa_export_key( PSA_KEY_TYPE_RSA_PUBLIC_KEY, + rsa, + data, + data_size, + data_length ); + + mbedtls_rsa_free( rsa ); + mbedtls_free( rsa ); + + return( status ); +} +#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) || + * defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY) */ + +#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) && \ + defined(MBEDTLS_GENPRIME) +static psa_status_t psa_rsa_read_exponent( const uint8_t *domain_parameters, + size_t domain_parameters_size, + int *exponent ) +{ + size_t i; + uint32_t acc = 0; + + if( domain_parameters_size == 0 ) + { + *exponent = 65537; + return( PSA_SUCCESS ); + } + + /* Mbed TLS encodes the public exponent as an int. For simplicity, only + * support values that fit in a 32-bit integer, which is larger than + * int on just about every platform anyway. */ + if( domain_parameters_size > sizeof( acc ) ) + return( PSA_ERROR_NOT_SUPPORTED ); + for( i = 0; i < domain_parameters_size; i++ ) + acc = ( acc << 8 ) | domain_parameters[i]; + if( acc > INT_MAX ) + return( PSA_ERROR_NOT_SUPPORTED ); + *exponent = acc; + return( PSA_SUCCESS ); +} + +psa_status_t mbedtls_psa_rsa_generate_key( + const psa_key_attributes_t *attributes, + uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length ) +{ + psa_status_t status; + mbedtls_rsa_context rsa; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + int exponent; + + status = psa_rsa_read_exponent( attributes->domain_parameters, + attributes->domain_parameters_size, + &exponent ); + if( status != PSA_SUCCESS ) + return( status ); + + mbedtls_rsa_init( &rsa, MBEDTLS_RSA_PKCS_V15, MBEDTLS_MD_NONE ); + ret = mbedtls_rsa_gen_key( &rsa, + mbedtls_psa_get_random, + MBEDTLS_PSA_RANDOM_STATE, + (unsigned int)attributes->core.bits, + exponent ); + if( ret != 0 ) + return( mbedtls_to_psa_error( ret ) ); + + status = mbedtls_psa_rsa_export_key( attributes->core.type, + &rsa, key_buffer, key_buffer_size, + key_buffer_length ); + mbedtls_rsa_free( &rsa ); + + return( status ); +} +#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) + * defined(MBEDTLS_GENPRIME) */ + +/****************************************************************/ +/* Sign/verify hashes */ +/****************************************************************/ + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS) + +/* Decode the hash algorithm from alg and store the mbedtls encoding in + * md_alg. Verify that the hash length is acceptable. */ +static psa_status_t psa_rsa_decode_md_type( psa_algorithm_t alg, + size_t hash_length, + mbedtls_md_type_t *md_alg ) +{ + psa_algorithm_t hash_alg = PSA_ALG_SIGN_GET_HASH( alg ); + const mbedtls_md_info_t *md_info = mbedtls_md_info_from_psa( hash_alg ); + *md_alg = mbedtls_md_get_type( md_info ); + + /* The Mbed TLS RSA module uses an unsigned int for hash length + * parameters. Validate that it fits so that we don't risk an + * overflow later. */ +#if SIZE_MAX > UINT_MAX + if( hash_length > UINT_MAX ) + return( PSA_ERROR_INVALID_ARGUMENT ); +#endif + + /* For signatures using a hash, the hash length must be correct. */ + if( alg != PSA_ALG_RSA_PKCS1V15_SIGN_RAW ) + { + if( md_info == NULL ) + return( PSA_ERROR_NOT_SUPPORTED ); + if( mbedtls_md_get_size( md_info ) != hash_length ) + return( PSA_ERROR_INVALID_ARGUMENT ); + } + + return( PSA_SUCCESS ); +} + +psa_status_t mbedtls_psa_rsa_sign_hash( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + uint8_t *signature, size_t signature_size, size_t *signature_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + mbedtls_rsa_context *rsa = NULL; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + mbedtls_md_type_t md_alg; + + status = mbedtls_psa_rsa_load_representation( attributes->core.type, + key_buffer, + key_buffer_size, + &rsa ); + if( status != PSA_SUCCESS ) + return( status ); + + status = psa_rsa_decode_md_type( alg, hash_length, &md_alg ); + if( status != PSA_SUCCESS ) + goto exit; + + if( signature_size < mbedtls_rsa_get_len( rsa ) ) + { + status = PSA_ERROR_BUFFER_TOO_SMALL; + goto exit; + } + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) + if( PSA_ALG_IS_RSA_PKCS1V15_SIGN( alg ) ) + { + mbedtls_rsa_set_padding( rsa, MBEDTLS_RSA_PKCS_V15, + MBEDTLS_MD_NONE ); + ret = mbedtls_rsa_pkcs1_sign( rsa, + mbedtls_psa_get_random, + MBEDTLS_PSA_RANDOM_STATE, + MBEDTLS_RSA_PRIVATE, + md_alg, + (unsigned int) hash_length, + hash, + signature ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS) + if( PSA_ALG_IS_RSA_PSS( alg ) ) + { + mbedtls_rsa_set_padding( rsa, MBEDTLS_RSA_PKCS_V21, md_alg ); + ret = mbedtls_rsa_rsassa_pss_sign( rsa, + mbedtls_psa_get_random, + MBEDTLS_PSA_RANDOM_STATE, + MBEDTLS_RSA_PRIVATE, + MBEDTLS_MD_NONE, + (unsigned int) hash_length, + hash, + signature ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS */ + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + if( ret == 0 ) + *signature_length = mbedtls_rsa_get_len( rsa ); + status = mbedtls_to_psa_error( ret ); + +exit: + mbedtls_rsa_free( rsa ); + mbedtls_free( rsa ); + + return( status ); +} + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS) +static int rsa_pss_expected_salt_len( psa_algorithm_t alg, + const mbedtls_rsa_context *rsa, + size_t hash_length ) +{ + if( PSA_ALG_IS_RSA_PSS_ANY_SALT( alg ) ) + return( MBEDTLS_RSA_SALT_LEN_ANY ); + /* Otherwise: standard salt length, i.e. largest possible salt length + * up to the hash length. */ + int klen = (int) mbedtls_rsa_get_len( rsa ); // known to fit + int hlen = (int) hash_length; // known to fit + int room = klen - 2 - hlen; + if( room < 0 ) + return( 0 ); // there is no valid signature in this case anyway + else if( room > hlen ) + return( hlen ); + else + return( room ); +} +#endif /* MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS */ + +psa_status_t mbedtls_psa_rsa_verify_hash( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + const uint8_t *signature, size_t signature_length ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + mbedtls_rsa_context *rsa = NULL; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + mbedtls_md_type_t md_alg; + + status = mbedtls_psa_rsa_load_representation( attributes->core.type, + key_buffer, + key_buffer_size, + &rsa ); + if( status != PSA_SUCCESS ) + goto exit; + + status = psa_rsa_decode_md_type( alg, hash_length, &md_alg ); + if( status != PSA_SUCCESS ) + goto exit; + + if( signature_length != mbedtls_rsa_get_len( rsa ) ) + { + status = PSA_ERROR_INVALID_SIGNATURE; + goto exit; + } + +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) + if( PSA_ALG_IS_RSA_PKCS1V15_SIGN( alg ) ) + { + mbedtls_rsa_set_padding( rsa, MBEDTLS_RSA_PKCS_V15, + MBEDTLS_MD_NONE ); + ret = mbedtls_rsa_pkcs1_verify( rsa, + mbedtls_psa_get_random, + MBEDTLS_PSA_RANDOM_STATE, + MBEDTLS_RSA_PUBLIC, + md_alg, + (unsigned int) hash_length, + hash, + signature ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN */ +#if defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS) + if( PSA_ALG_IS_RSA_PSS( alg ) ) + { + int slen = rsa_pss_expected_salt_len( alg, rsa, hash_length ); + mbedtls_rsa_set_padding( rsa, MBEDTLS_RSA_PKCS_V21, md_alg ); + ret = mbedtls_rsa_rsassa_pss_verify_ext( rsa, + mbedtls_psa_get_random, + MBEDTLS_PSA_RANDOM_STATE, + MBEDTLS_RSA_PUBLIC, + md_alg, + (unsigned int) hash_length, + hash, + md_alg, + slen, + signature ); + } + else +#endif /* MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS */ + { + status = PSA_ERROR_INVALID_ARGUMENT; + goto exit; + } + + /* Mbed TLS distinguishes "invalid padding" from "valid padding but + * the rest of the signature is invalid". This has little use in + * practice and PSA doesn't report this distinction. */ + status = ( ret == MBEDTLS_ERR_RSA_INVALID_PADDING ) ? + PSA_ERROR_INVALID_SIGNATURE : + mbedtls_to_psa_error( ret ); + +exit: + mbedtls_rsa_free( rsa ); + mbedtls_free( rsa ); + + return( status ); +} + +#endif /* defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || + * defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS) */ + +#endif /* MBEDTLS_PSA_CRYPTO_C */ diff --git a/Externals/mbedtls/library/psa_crypto_rsa.h b/Externals/mbedtls/library/psa_crypto_rsa.h new file mode 100644 index 000000000000..b76613e6c17f --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_rsa.h @@ -0,0 +1,215 @@ +/* + * PSA RSA layer on top of Mbed TLS crypto + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_RSA_H +#define PSA_CRYPTO_RSA_H + +#include +#include + +/** Load the contents of a key buffer into an internal RSA representation + * + * \param[in] type The type of key contained in \p data. + * \param[in] data The buffer from which to load the representation. + * \param[in] data_length The size in bytes of \p data. + * \param[out] p_rsa Returns a pointer to an RSA context on success. + * The caller is responsible for freeing both the + * contents of the context and the context itself + * when done. + */ +psa_status_t mbedtls_psa_rsa_load_representation( psa_key_type_t type, + const uint8_t *data, + size_t data_length, + mbedtls_rsa_context **p_rsa ); + +/** Import an RSA key in binary format. + * + * \note The signature of this function is that of a PSA driver + * import_key entry point. This function behaves as an import_key + * entry point as defined in the PSA driver interface specification for + * transparent drivers. + * + * \param[in] attributes The attributes for the key to import. + * \param[in] data The buffer containing the key data in import + * format. + * \param[in] data_length Size of the \p data buffer in bytes. + * \param[out] key_buffer The buffer containing the key data in output + * format. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. This + * size is greater or equal to \p data_length. + * \param[out] key_buffer_length The length of the data written in \p + * key_buffer in bytes. + * \param[out] bits The key size in number of bits. + * + * \retval #PSA_SUCCESS The RSA key was imported successfully. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key data is not correctly formatted. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t mbedtls_psa_rsa_import_key( + const psa_key_attributes_t *attributes, + const uint8_t *data, size_t data_length, + uint8_t *key_buffer, size_t key_buffer_size, + size_t *key_buffer_length, size_t *bits ); + +/** Export an RSA key to export representation + * + * \param[in] type The type of key (public/private) to export + * \param[in] rsa The internal RSA representation from which to export + * \param[out] data The buffer to export to + * \param[in] data_size The length of the buffer to export to + * \param[out] data_length The amount of bytes written to \p data + */ +psa_status_t mbedtls_psa_rsa_export_key( psa_key_type_t type, + mbedtls_rsa_context *rsa, + uint8_t *data, + size_t data_size, + size_t *data_length ); + +/** Export a public RSA key or the public part of an RSA key pair in binary + * format. + * + * \note The signature of this function is that of a PSA driver + * export_public_key entry point. This function behaves as an + * export_public_key entry point as defined in the PSA driver interface + * specification. + * + * \param[in] attributes The attributes for the key to export. + * \param[in] key_buffer Material or context of the key to export. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[out] data Buffer where the key data is to be written. + * \param[in] data_size Size of the \p data buffer in bytes. + * \param[out] data_length On success, the number of bytes written in + * \p data. + * + * \retval #PSA_SUCCESS The RSA public key was exported successfully. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t mbedtls_psa_rsa_export_public_key( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + uint8_t *data, size_t data_size, size_t *data_length ); + +/** + * \brief Generate an RSA key. + * + * \note The signature of the function is that of a PSA driver generate_key + * entry point. + * + * \param[in] attributes The attributes for the RSA key to generate. + * \param[out] key_buffer Buffer where the key data is to be written. + * \param[in] key_buffer_size Size of \p key_buffer in bytes. + * \param[out] key_buffer_length On success, the number of bytes written in + * \p key_buffer. + * + * \retval #PSA_SUCCESS + * The key was successfully generated. + * \retval #PSA_ERROR_NOT_SUPPORTED + * Key length or type not supported. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of \p key_buffer is too small. + */ +psa_status_t mbedtls_psa_rsa_generate_key( + const psa_key_attributes_t *attributes, + uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length ); + +/** Sign an already-calculated hash with an RSA private key. + * + * \note The signature of this function is that of a PSA driver + * sign_hash entry point. This function behaves as a sign_hash + * entry point as defined in the PSA driver interface specification for + * transparent drivers. + * + * \param[in] attributes The attributes of the RSA key to use for the + * operation. + * \param[in] key_buffer The buffer containing the RSA key context. + * format. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[in] alg A signature algorithm that is compatible with + * an RSA key. + * \param[in] hash The hash or message to sign. + * \param[in] hash_length Size of the \p hash buffer in bytes. + * \param[out] signature Buffer where the signature is to be written. + * \param[in] signature_size Size of the \p signature buffer in bytes. + * \param[out] signature_length On success, the number of bytes + * that make up the returned signature value. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p signature buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_SIGN_OUTPUT_SIZE(\c PSA_KEY_TYPE_RSA_KEY_PAIR, \c key_bits, + * \p alg) where \c key_bits is the bit-size of the RSA key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + */ +psa_status_t mbedtls_psa_rsa_sign_hash( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + uint8_t *signature, size_t signature_size, size_t *signature_length ); + +/** + * \brief Verify the signature a hash or short message using a public RSA key. + * + * \note The signature of this function is that of a PSA driver + * verify_hash entry point. This function behaves as a verify_hash + * entry point as defined in the PSA driver interface specification for + * transparent drivers. + * + * \param[in] attributes The attributes of the RSA key to use for the + * operation. + * \param[in] key_buffer The buffer containing the RSA key context. + * format. + * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. + * \param[in] alg A signature algorithm that is compatible with + * an RSA key. + * \param[in] hash The hash or message whose signature is to be + * verified. + * \param[in] hash_length Size of the \p hash buffer in bytes. + * \param[in] signature Buffer containing the signature to verify. + * \param[in] signature_length Size of the \p signature buffer in bytes. + * + * \retval #PSA_SUCCESS + * The signature is valid. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The calculation was performed successfully, but the passed + * signature is not a valid signature. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t mbedtls_psa_rsa_verify_hash( + const psa_key_attributes_t *attributes, + const uint8_t *key_buffer, size_t key_buffer_size, + psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, + const uint8_t *signature, size_t signature_length ); + +#endif /* PSA_CRYPTO_RSA_H */ diff --git a/Externals/mbedtls/library/psa_crypto_se.c b/Externals/mbedtls/library/psa_crypto_se.c new file mode 100644 index 000000000000..56678d6a90e5 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_se.c @@ -0,0 +1,383 @@ +/* + * PSA crypto support for secure element drivers + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common.h" + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + +#include +#include +#include + +#include "psa/crypto_se_driver.h" + +#include "psa_crypto_se.h" + +#if defined(MBEDTLS_PSA_ITS_FILE_C) +#include "psa_crypto_its.h" +#else /* Native ITS implementation */ +#include "psa/error.h" +#include "psa/internal_trusted_storage.h" +#endif + +#include "mbedtls/platform.h" +#if !defined(MBEDTLS_PLATFORM_C) +#define mbedtls_calloc calloc +#define mbedtls_free free +#endif + + + +/****************************************************************/ +/* Driver lookup */ +/****************************************************************/ + +/* This structure is identical to psa_drv_se_context_t declared in + * `crypto_se_driver.h`, except that some parts are writable here + * (non-const, or pointer to non-const). */ +typedef struct +{ + void *persistent_data; + size_t persistent_data_size; + uintptr_t transient_data; +} psa_drv_se_internal_context_t; + +struct psa_se_drv_table_entry_s +{ + psa_key_location_t location; + const psa_drv_se_t *methods; + union + { + psa_drv_se_internal_context_t internal; + psa_drv_se_context_t context; + } u; +}; + +static psa_se_drv_table_entry_t driver_table[PSA_MAX_SE_DRIVERS]; + +psa_se_drv_table_entry_t *psa_get_se_driver_entry( + psa_key_lifetime_t lifetime ) +{ + size_t i; + psa_key_location_t location = PSA_KEY_LIFETIME_GET_LOCATION( lifetime ); + /* In the driver table, location=0 means an entry that isn't used. + * No driver has a location of 0 because it's a reserved value + * (which designates transparent keys). Make sure we never return + * a driver entry for location 0. */ + if( location == 0 ) + return( NULL ); + for( i = 0; i < PSA_MAX_SE_DRIVERS; i++ ) + { + if( driver_table[i].location == location ) + return( &driver_table[i] ); + } + return( NULL ); +} + +const psa_drv_se_t *psa_get_se_driver_methods( + const psa_se_drv_table_entry_t *driver ) +{ + return( driver->methods ); +} + +psa_drv_se_context_t *psa_get_se_driver_context( + psa_se_drv_table_entry_t *driver ) +{ + return( &driver->u.context ); +} + +int psa_get_se_driver( psa_key_lifetime_t lifetime, + const psa_drv_se_t **p_methods, + psa_drv_se_context_t **p_drv_context) +{ + psa_se_drv_table_entry_t *driver = psa_get_se_driver_entry( lifetime ); + if( p_methods != NULL ) + *p_methods = ( driver ? driver->methods : NULL ); + if( p_drv_context != NULL ) + *p_drv_context = ( driver ? &driver->u.context : NULL ); + return( driver != NULL ); +} + + + +/****************************************************************/ +/* Persistent data management */ +/****************************************************************/ + +static psa_status_t psa_get_se_driver_its_file_uid( + const psa_se_drv_table_entry_t *driver, + psa_storage_uid_t *uid ) +{ + if( driver->location > PSA_MAX_SE_LOCATION ) + return( PSA_ERROR_NOT_SUPPORTED ); + +#if SIZE_MAX > UINT32_MAX + /* ITS file sizes are limited to 32 bits. */ + if( driver->u.internal.persistent_data_size > UINT32_MAX ) + return( PSA_ERROR_NOT_SUPPORTED ); +#endif + + /* See the documentation of PSA_CRYPTO_SE_DRIVER_ITS_UID_BASE. */ + *uid = PSA_CRYPTO_SE_DRIVER_ITS_UID_BASE + driver->location; + return( PSA_SUCCESS ); +} + +psa_status_t psa_load_se_persistent_data( + const psa_se_drv_table_entry_t *driver ) +{ + psa_status_t status; + psa_storage_uid_t uid; + size_t length; + + status = psa_get_se_driver_its_file_uid( driver, &uid ); + if( status != PSA_SUCCESS ) + return( status ); + + /* Read the amount of persistent data that the driver requests. + * If the data in storage is larger, it is truncated. If the data + * in storage is smaller, silently keep what is already at the end + * of the output buffer. */ + /* psa_get_se_driver_its_file_uid ensures that the size_t + * persistent_data_size is in range, but compilers don't know that, + * so cast to reassure them. */ + return( psa_its_get( uid, 0, + (uint32_t) driver->u.internal.persistent_data_size, + driver->u.internal.persistent_data, + &length ) ); +} + +psa_status_t psa_save_se_persistent_data( + const psa_se_drv_table_entry_t *driver ) +{ + psa_status_t status; + psa_storage_uid_t uid; + + status = psa_get_se_driver_its_file_uid( driver, &uid ); + if( status != PSA_SUCCESS ) + return( status ); + + /* psa_get_se_driver_its_file_uid ensures that the size_t + * persistent_data_size is in range, but compilers don't know that, + * so cast to reassure them. */ + return( psa_its_set( uid, + (uint32_t) driver->u.internal.persistent_data_size, + driver->u.internal.persistent_data, + 0 ) ); +} + +psa_status_t psa_destroy_se_persistent_data( psa_key_location_t location ) +{ + psa_storage_uid_t uid; + if( location > PSA_MAX_SE_LOCATION ) + return( PSA_ERROR_NOT_SUPPORTED ); + uid = PSA_CRYPTO_SE_DRIVER_ITS_UID_BASE + location; + return( psa_its_remove( uid ) ); +} + +psa_status_t psa_find_se_slot_for_key( + const psa_key_attributes_t *attributes, + psa_key_creation_method_t method, + psa_se_drv_table_entry_t *driver, + psa_key_slot_number_t *slot_number ) +{ + psa_status_t status; + psa_key_location_t key_location = + PSA_KEY_LIFETIME_GET_LOCATION( psa_get_key_lifetime( attributes ) ); + + /* If the location is wrong, it's a bug in the library. */ + if( driver->location != key_location ) + return( PSA_ERROR_CORRUPTION_DETECTED ); + + /* If the driver doesn't support key creation in any way, give up now. */ + if( driver->methods->key_management == NULL ) + return( PSA_ERROR_NOT_SUPPORTED ); + + if( psa_get_key_slot_number( attributes, slot_number ) == PSA_SUCCESS ) + { + /* The application wants to use a specific slot. Allow it if + * the driver supports it. On a system with isolation, + * the crypto service must check that the application is + * permitted to request this slot. */ + psa_drv_se_validate_slot_number_t p_validate_slot_number = + driver->methods->key_management->p_validate_slot_number; + if( p_validate_slot_number == NULL ) + return( PSA_ERROR_NOT_SUPPORTED ); + status = p_validate_slot_number( &driver->u.context, + driver->u.internal.persistent_data, + attributes, method, + *slot_number ); + } + else if( method == PSA_KEY_CREATION_REGISTER ) + { + /* The application didn't specify a slot number. This doesn't + * make sense when registering a slot. */ + return( PSA_ERROR_INVALID_ARGUMENT ); + } + else + { + /* The application didn't tell us which slot to use. Let the driver + * choose. This is the normal case. */ + psa_drv_se_allocate_key_t p_allocate = + driver->methods->key_management->p_allocate; + if( p_allocate == NULL ) + return( PSA_ERROR_NOT_SUPPORTED ); + status = p_allocate( &driver->u.context, + driver->u.internal.persistent_data, + attributes, method, + slot_number ); + } + return( status ); +} + +psa_status_t psa_destroy_se_key( psa_se_drv_table_entry_t *driver, + psa_key_slot_number_t slot_number ) +{ + psa_status_t status; + psa_status_t storage_status; + /* Normally a missing method would mean that the action is not + * supported. But psa_destroy_key() is not supposed to return + * PSA_ERROR_NOT_SUPPORTED: if you can create a key, you should + * be able to destroy it. The only use case for a driver that + * does not have a way to destroy keys at all is if the keys are + * locked in a read-only state: we can use the keys but not + * destroy them. Hence, if the driver doesn't support destroying + * keys, it's really a lack of permission. */ + if( driver->methods->key_management == NULL || + driver->methods->key_management->p_destroy == NULL ) + return( PSA_ERROR_NOT_PERMITTED ); + status = driver->methods->key_management->p_destroy( + &driver->u.context, + driver->u.internal.persistent_data, + slot_number ); + storage_status = psa_save_se_persistent_data( driver ); + return( status == PSA_SUCCESS ? storage_status : status ); +} + +psa_status_t psa_init_all_se_drivers( void ) +{ + size_t i; + for( i = 0; i < PSA_MAX_SE_DRIVERS; i++ ) + { + psa_se_drv_table_entry_t *driver = &driver_table[i]; + if( driver->location == 0 ) + continue; /* skipping unused entry */ + const psa_drv_se_t *methods = psa_get_se_driver_methods( driver ); + if( methods->p_init != NULL ) + { + psa_status_t status = methods->p_init( + &driver->u.context, + driver->u.internal.persistent_data, + driver->location ); + if( status != PSA_SUCCESS ) + return( status ); + status = psa_save_se_persistent_data( driver ); + if( status != PSA_SUCCESS ) + return( status ); + } + } + return( PSA_SUCCESS ); +} + + + +/****************************************************************/ +/* Driver registration */ +/****************************************************************/ + +psa_status_t psa_register_se_driver( + psa_key_location_t location, + const psa_drv_se_t *methods) +{ + size_t i; + psa_status_t status; + + if( methods->hal_version != PSA_DRV_SE_HAL_VERSION ) + return( PSA_ERROR_NOT_SUPPORTED ); + /* Driver table entries are 0-initialized. 0 is not a valid driver + * location because it means a transparent key. */ +#if defined(static_assert) + static_assert( PSA_KEY_LOCATION_LOCAL_STORAGE == 0, + "Secure element support requires 0 to mean a local key" ); +#endif + if( location == PSA_KEY_LOCATION_LOCAL_STORAGE ) + return( PSA_ERROR_INVALID_ARGUMENT ); + if( location > PSA_MAX_SE_LOCATION ) + return( PSA_ERROR_NOT_SUPPORTED ); + + for( i = 0; i < PSA_MAX_SE_DRIVERS; i++ ) + { + if( driver_table[i].location == 0 ) + break; + /* Check that location isn't already in use up to the first free + * entry. Since entries are created in order and never deleted, + * there can't be a used entry after the first free entry. */ + if( driver_table[i].location == location ) + return( PSA_ERROR_ALREADY_EXISTS ); + } + if( i == PSA_MAX_SE_DRIVERS ) + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + + driver_table[i].location = location; + driver_table[i].methods = methods; + driver_table[i].u.internal.persistent_data_size = + methods->persistent_data_size; + + if( methods->persistent_data_size != 0 ) + { + driver_table[i].u.internal.persistent_data = + mbedtls_calloc( 1, methods->persistent_data_size ); + if( driver_table[i].u.internal.persistent_data == NULL ) + { + status = PSA_ERROR_INSUFFICIENT_MEMORY; + goto error; + } + /* Load the driver's persistent data. On first use, the persistent + * data does not exist in storage, and is initialized to + * all-bits-zero by the calloc call just above. */ + status = psa_load_se_persistent_data( &driver_table[i] ); + if( status != PSA_SUCCESS && status != PSA_ERROR_DOES_NOT_EXIST ) + goto error; + } + + return( PSA_SUCCESS ); + +error: + memset( &driver_table[i], 0, sizeof( driver_table[i] ) ); + return( status ); +} + +void psa_unregister_all_se_drivers( void ) +{ + size_t i; + for( i = 0; i < PSA_MAX_SE_DRIVERS; i++ ) + { + if( driver_table[i].u.internal.persistent_data != NULL ) + mbedtls_free( driver_table[i].u.internal.persistent_data ); + } + memset( driver_table, 0, sizeof( driver_table ) ); +} + + + +/****************************************************************/ +/* The end */ +/****************************************************************/ + +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ diff --git a/Externals/mbedtls/library/psa_crypto_se.h b/Externals/mbedtls/library/psa_crypto_se.h new file mode 100644 index 000000000000..710426168d6e --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_se.h @@ -0,0 +1,202 @@ +/* + * PSA crypto support for secure element drivers + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_SE_H +#define PSA_CRYPTO_SE_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "psa/crypto.h" +#include "psa/crypto_se_driver.h" + +/** The maximum location value that this implementation supports + * for a secure element. + * + * This is not a characteristic that each PSA implementation has, but a + * limitation of the current implementation due to the constraints imposed + * by storage. See #PSA_CRYPTO_SE_DRIVER_ITS_UID_BASE. + * + * The minimum location value for a secure element is 1, like on any + * PSA implementation (0 means a transparent key). + */ +#define PSA_MAX_SE_LOCATION 255 + +/** The base of the range of ITS file identifiers for secure element + * driver persistent data. + * + * We use a slice of the implementation reserved range 0xffff0000..0xffffffff, + * specifically the range 0xfffffe00..0xfffffeff. The length of this range + * drives the value of #PSA_MAX_SE_LOCATION. The identifier 0xfffffe00 is + * actually not used since it corresponds to #PSA_KEY_LOCATION_LOCAL_STORAGE + * which doesn't have a driver. + */ +#define PSA_CRYPTO_SE_DRIVER_ITS_UID_BASE ( (psa_key_id_t) 0xfffffe00 ) + +/** The maximum number of registered secure element driver locations. */ +#define PSA_MAX_SE_DRIVERS 4 + +/** Unregister all secure element drivers. + * + * \warning Do not call this function while the library is in the initialized + * state. This function is only intended to be called at the end + * of mbedtls_psa_crypto_free(). + */ +void psa_unregister_all_se_drivers( void ); + +/** Initialize all secure element drivers. + * + * Called from psa_crypto_init(). + */ +psa_status_t psa_init_all_se_drivers( void ); + +/** A structure that describes a registered secure element driver. + * + * A secure element driver table entry contains a pointer to the + * driver's method table as well as the driver context structure. + */ +typedef struct psa_se_drv_table_entry_s psa_se_drv_table_entry_t; + +/** Return the secure element driver information for a lifetime value. + * + * \param lifetime The lifetime value to query. + * \param[out] p_methods On output, if there is a driver, + * \c *methods points to its method table. + * Otherwise \c *methods is \c NULL. + * \param[out] p_drv_context On output, if there is a driver, + * \c *drv_context points to its context + * structure. + * Otherwise \c *drv_context is \c NULL. + * + * \retval 1 + * \p lifetime corresponds to a registered driver. + * \retval 0 + * \p lifetime does not correspond to a registered driver. + */ +int psa_get_se_driver( psa_key_lifetime_t lifetime, + const psa_drv_se_t **p_methods, + psa_drv_se_context_t **p_drv_context); + +/** Return the secure element driver table entry for a lifetime value. + * + * \param lifetime The lifetime value to query. + * + * \return The driver table entry for \p lifetime, or + * \p NULL if \p lifetime does not correspond to a registered driver. + */ +psa_se_drv_table_entry_t *psa_get_se_driver_entry( + psa_key_lifetime_t lifetime ); + +/** Return the method table for a secure element driver. + * + * \param[in] driver The driver table entry to access, or \c NULL. + * + * \return The driver's method table. + * \c NULL if \p driver is \c NULL. + */ +const psa_drv_se_t *psa_get_se_driver_methods( + const psa_se_drv_table_entry_t *driver ); + +/** Return the context of a secure element driver. + * + * \param[in] driver The driver table entry to access, or \c NULL. + * + * \return A pointer to the driver context. + * \c NULL if \p driver is \c NULL. + */ +psa_drv_se_context_t *psa_get_se_driver_context( + psa_se_drv_table_entry_t *driver ); + +/** Find a free slot for a key that is to be created. + * + * This function calls the relevant method in the driver to find a suitable + * slot for a key with the given attributes. + * + * \param[in] attributes Metadata about the key that is about to be created. + * \param[in] driver The driver table entry to query. + * \param[out] slot_number On success, a slot number that is free in this + * secure element. + */ +psa_status_t psa_find_se_slot_for_key( + const psa_key_attributes_t *attributes, + psa_key_creation_method_t method, + psa_se_drv_table_entry_t *driver, + psa_key_slot_number_t *slot_number ); + +/** Destoy a key in a secure element. + * + * This function calls the relevant driver method to destroy a key + * and updates the driver's persistent data. + */ +psa_status_t psa_destroy_se_key( psa_se_drv_table_entry_t *driver, + psa_key_slot_number_t slot_number ); + +/** Load the persistent data of a secure element driver. + * + * \param driver The driver table entry containing the persistent + * data to load from storage. + * + * \return #PSA_SUCCESS + * \return #PSA_ERROR_NOT_SUPPORTED + * \return #PSA_ERROR_DOES_NOT_EXIST + * \return #PSA_ERROR_STORAGE_FAILURE + * \return #PSA_ERROR_DATA_CORRUPT + * \return #PSA_ERROR_INVALID_ARGUMENT + */ +psa_status_t psa_load_se_persistent_data( + const psa_se_drv_table_entry_t *driver ); + +/** Save the persistent data of a secure element driver. + * + * \param[in] driver The driver table entry containing the persistent + * data to save to storage. + * + * \return #PSA_SUCCESS + * \return #PSA_ERROR_NOT_SUPPORTED + * \return #PSA_ERROR_NOT_PERMITTED + * \return #PSA_ERROR_NOT_SUPPORTED + * \return #PSA_ERROR_INSUFFICIENT_STORAGE + * \return #PSA_ERROR_STORAGE_FAILURE + * \return #PSA_ERROR_INVALID_ARGUMENT + */ +psa_status_t psa_save_se_persistent_data( + const psa_se_drv_table_entry_t *driver ); + +/** Destroy the persistent data of a secure element driver. + * + * This is currently only used for testing. + * + * \param[in] location The location identifier for the driver whose + * persistent data is to be erased. + */ +psa_status_t psa_destroy_se_persistent_data( psa_key_location_t location ); + + +/** The storage representation of a key whose data is in a secure element. + */ +typedef struct +{ + uint8_t slot_number[sizeof( psa_key_slot_number_t )]; +} psa_se_key_data_storage_t; + +#endif /* PSA_CRYPTO_SE_H */ diff --git a/Externals/mbedtls/library/psa_crypto_slot_management.c b/Externals/mbedtls/library/psa_crypto_slot_management.c new file mode 100644 index 000000000000..6f69fc88381f --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_slot_management.c @@ -0,0 +1,586 @@ +/* + * PSA crypto layer on top of Mbed TLS crypto + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common.h" + +#if defined(MBEDTLS_PSA_CRYPTO_C) + +#include "psa/crypto.h" + +#include "psa_crypto_core.h" +#include "psa_crypto_driver_wrappers.h" +#include "psa_crypto_slot_management.h" +#include "psa_crypto_storage.h" +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) +#include "psa_crypto_se.h" +#endif + +#include +#include +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#define mbedtls_calloc calloc +#define mbedtls_free free +#endif + +#define ARRAY_LENGTH( array ) ( sizeof( array ) / sizeof( *( array ) ) ) + +typedef struct +{ + psa_key_slot_t key_slots[MBEDTLS_PSA_KEY_SLOT_COUNT]; + unsigned key_slots_initialized : 1; +} psa_global_data_t; + +static psa_global_data_t global_data; + +int psa_is_valid_key_id( mbedtls_svc_key_id_t key, int vendor_ok ) +{ + psa_key_id_t key_id = MBEDTLS_SVC_KEY_ID_GET_KEY_ID( key ); + + if( ( PSA_KEY_ID_USER_MIN <= key_id ) && + ( key_id <= PSA_KEY_ID_USER_MAX ) ) + return( 1 ); + + if( vendor_ok && + ( PSA_KEY_ID_VENDOR_MIN <= key_id ) && + ( key_id <= PSA_KEY_ID_VENDOR_MAX ) ) + return( 1 ); + + return( 0 ); +} + +/** Get the description in memory of a key given its identifier and lock it. + * + * The descriptions of volatile keys and loaded persistent keys are + * stored in key slots. This function returns a pointer to the key slot + * containing the description of a key given its identifier. + * + * The function searches the key slots containing the description of the key + * with \p key identifier. The function does only read accesses to the key + * slots. The function does not load any persistent key thus does not access + * any storage. + * + * For volatile key identifiers, only one key slot is queried as a volatile + * key with identifier key_id can only be stored in slot of index + * ( key_id - #PSA_KEY_ID_VOLATILE_MIN ). + * + * On success, the function locks the key slot. It is the responsibility of + * the caller to unlock the key slot when it does not access it anymore. + * + * \param key Key identifier to query. + * \param[out] p_slot On success, `*p_slot` contains a pointer to the + * key slot containing the description of the key + * identified by \p key. + * + * \retval #PSA_SUCCESS + * The pointer to the key slot containing the description of the key + * identified by \p key was returned. + * \retval #PSA_ERROR_INVALID_HANDLE + * \p key is not a valid key identifier. + * \retval #PSA_ERROR_DOES_NOT_EXIST + * There is no key with key identifier \p key in the key slots. + */ +static psa_status_t psa_get_and_lock_key_slot_in_memory( + mbedtls_svc_key_id_t key, psa_key_slot_t **p_slot ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_id_t key_id = MBEDTLS_SVC_KEY_ID_GET_KEY_ID( key ); + size_t slot_idx; + psa_key_slot_t *slot = NULL; + + if( psa_key_id_is_volatile( key_id ) ) + { + slot = &global_data.key_slots[ key_id - PSA_KEY_ID_VOLATILE_MIN ]; + + /* + * Check if both the PSA key identifier key_id and the owner + * identifier of key match those of the key slot. + * + * Note that, if the key slot is not occupied, its PSA key identifier + * is equal to zero. This is an invalid value for a PSA key identifier + * and thus cannot be equal to the valid PSA key identifier key_id. + */ + status = mbedtls_svc_key_id_equal( key, slot->attr.id ) ? + PSA_SUCCESS : PSA_ERROR_DOES_NOT_EXIST; + } + else + { + if ( !psa_is_valid_key_id( key, 1 ) ) + return( PSA_ERROR_INVALID_HANDLE ); + + for( slot_idx = 0; slot_idx < MBEDTLS_PSA_KEY_SLOT_COUNT; slot_idx++ ) + { + slot = &global_data.key_slots[ slot_idx ]; + if( mbedtls_svc_key_id_equal( key, slot->attr.id ) ) + break; + } + status = ( slot_idx < MBEDTLS_PSA_KEY_SLOT_COUNT ) ? + PSA_SUCCESS : PSA_ERROR_DOES_NOT_EXIST; + } + + if( status == PSA_SUCCESS ) + { + status = psa_lock_key_slot( slot ); + if( status == PSA_SUCCESS ) + *p_slot = slot; + } + + return( status ); +} + +psa_status_t psa_initialize_key_slots( void ) +{ + /* Nothing to do: program startup and psa_wipe_all_key_slots() both + * guarantee that the key slots are initialized to all-zero, which + * means that all the key slots are in a valid, empty state. */ + global_data.key_slots_initialized = 1; + return( PSA_SUCCESS ); +} + +void psa_wipe_all_key_slots( void ) +{ + size_t slot_idx; + + for( slot_idx = 0; slot_idx < MBEDTLS_PSA_KEY_SLOT_COUNT; slot_idx++ ) + { + psa_key_slot_t *slot = &global_data.key_slots[ slot_idx ]; + slot->lock_count = 1; + (void) psa_wipe_key_slot( slot ); + } + global_data.key_slots_initialized = 0; +} + +psa_status_t psa_get_empty_key_slot( psa_key_id_t *volatile_key_id, + psa_key_slot_t **p_slot ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + size_t slot_idx; + psa_key_slot_t *selected_slot, *unlocked_persistent_key_slot; + + if( ! global_data.key_slots_initialized ) + { + status = PSA_ERROR_BAD_STATE; + goto error; + } + + selected_slot = unlocked_persistent_key_slot = NULL; + for( slot_idx = 0; slot_idx < MBEDTLS_PSA_KEY_SLOT_COUNT; slot_idx++ ) + { + psa_key_slot_t *slot = &global_data.key_slots[ slot_idx ]; + if( ! psa_is_key_slot_occupied( slot ) ) + { + selected_slot = slot; + break; + } + + if( ( unlocked_persistent_key_slot == NULL ) && + ( ! PSA_KEY_LIFETIME_IS_VOLATILE( slot->attr.lifetime ) ) && + ( ! psa_is_key_slot_locked( slot ) ) ) + unlocked_persistent_key_slot = slot; + } + + /* + * If there is no unused key slot and there is at least one unlocked key + * slot containing the description of a persistent key, recycle the first + * such key slot we encountered. If we later need to operate on the + * persistent key we are evicting now, we will reload its description from + * storage. + */ + if( ( selected_slot == NULL ) && + ( unlocked_persistent_key_slot != NULL ) ) + { + selected_slot = unlocked_persistent_key_slot; + selected_slot->lock_count = 1; + psa_wipe_key_slot( selected_slot ); + } + + if( selected_slot != NULL ) + { + status = psa_lock_key_slot( selected_slot ); + if( status != PSA_SUCCESS ) + goto error; + + *volatile_key_id = PSA_KEY_ID_VOLATILE_MIN + + ( (psa_key_id_t)( selected_slot - global_data.key_slots ) ); + *p_slot = selected_slot; + + return( PSA_SUCCESS ); + } + status = PSA_ERROR_INSUFFICIENT_MEMORY; + +error: + *p_slot = NULL; + *volatile_key_id = 0; + + return( status ); +} + +#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) +static psa_status_t psa_load_persistent_key_into_slot( psa_key_slot_t *slot ) +{ + psa_status_t status = PSA_SUCCESS; + uint8_t *key_data = NULL; + size_t key_data_length = 0; + + status = psa_load_persistent_key( &slot->attr, + &key_data, &key_data_length ); + if( status != PSA_SUCCESS ) + goto exit; + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + /* Special handling is required for loading keys associated with a + * dynamically registered SE interface. */ + const psa_drv_se_t *drv; + psa_drv_se_context_t *drv_context; + if( psa_get_se_driver( slot->attr.lifetime, &drv, &drv_context ) ) + { + psa_se_key_data_storage_t *data; + + if( key_data_length != sizeof( *data ) ) + { + status = PSA_ERROR_DATA_INVALID; + goto exit; + } + data = (psa_se_key_data_storage_t *) key_data; + status = psa_copy_key_material_into_slot( + slot, data->slot_number, sizeof( data->slot_number ) ); + goto exit; + } +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + + status = psa_copy_key_material_into_slot( slot, key_data, key_data_length ); + +exit: + psa_free_persistent_key_data( key_data, key_data_length ); + return( status ); +} +#endif /* MBEDTLS_PSA_CRYPTO_STORAGE_C */ + +#if defined(MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS) + +static psa_status_t psa_load_builtin_key_into_slot( psa_key_slot_t *slot ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + psa_key_lifetime_t lifetime = PSA_KEY_LIFETIME_VOLATILE; + psa_drv_slot_number_t slot_number = 0; + size_t key_buffer_size = 0; + size_t key_buffer_length = 0; + + if( ! psa_key_id_is_builtin( + MBEDTLS_SVC_KEY_ID_GET_KEY_ID( slot->attr.id ) ) ) + { + return( PSA_ERROR_DOES_NOT_EXIST ); + } + + /* Check the platform function to see whether this key actually exists */ + status = mbedtls_psa_platform_get_builtin_key( + slot->attr.id, &lifetime, &slot_number ); + if( status != PSA_SUCCESS ) + return( status ); + + /* Set required key attributes to ensure get_builtin_key can retrieve the + * full attributes. */ + psa_set_key_id( &attributes, slot->attr.id ); + psa_set_key_lifetime( &attributes, lifetime ); + + /* Get the full key attributes from the driver in order to be able to + * calculate the required buffer size. */ + status = psa_driver_wrapper_get_builtin_key( + slot_number, &attributes, + NULL, 0, NULL ); + if( status != PSA_ERROR_BUFFER_TOO_SMALL ) + { + /* Builtin keys cannot be defined by the attributes alone */ + if( status == PSA_SUCCESS ) + status = PSA_ERROR_CORRUPTION_DETECTED; + return( status ); + } + + /* If the key should exist according to the platform, then ask the driver + * what its expected size is. */ + status = psa_driver_wrapper_get_key_buffer_size( &attributes, + &key_buffer_size ); + if( status != PSA_SUCCESS ) + return( status ); + + /* Allocate a buffer of the required size and load the builtin key directly + * into the (now properly sized) slot buffer. */ + status = psa_allocate_buffer_to_slot( slot, key_buffer_size ); + if( status != PSA_SUCCESS ) + return( status ); + + status = psa_driver_wrapper_get_builtin_key( + slot_number, &attributes, + slot->key.data, slot->key.bytes, &key_buffer_length ); + if( status != PSA_SUCCESS ) + goto exit; + + /* Copy actual key length and core attributes into the slot on success */ + slot->key.bytes = key_buffer_length; + slot->attr = attributes.core; + +exit: + if( status != PSA_SUCCESS ) + psa_remove_key_data_from_memory( slot ); + return( status ); +} +#endif /* MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */ + +psa_status_t psa_get_and_lock_key_slot( mbedtls_svc_key_id_t key, + psa_key_slot_t **p_slot ) +{ + psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; + + *p_slot = NULL; + if( ! global_data.key_slots_initialized ) + return( PSA_ERROR_BAD_STATE ); + + /* + * On success, the pointer to the slot is passed directly to the caller + * thus no need to unlock the key slot here. + */ + status = psa_get_and_lock_key_slot_in_memory( key, p_slot ); + if( status != PSA_ERROR_DOES_NOT_EXIST ) + return( status ); + + /* Loading keys from storage requires support for such a mechanism */ +#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) || \ + defined(MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS) + psa_key_id_t volatile_key_id; + + status = psa_get_empty_key_slot( &volatile_key_id, p_slot ); + if( status != PSA_SUCCESS ) + return( status ); + + (*p_slot)->attr.id = key; + (*p_slot)->attr.lifetime = PSA_KEY_LIFETIME_PERSISTENT; + + status = PSA_ERROR_DOES_NOT_EXIST; +#if defined(MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS) + /* Load keys in the 'builtin' range through their own interface */ + status = psa_load_builtin_key_into_slot( *p_slot ); +#endif /* MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */ + +#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) + if( status == PSA_ERROR_DOES_NOT_EXIST ) + status = psa_load_persistent_key_into_slot( *p_slot ); +#endif /* defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) */ + + if( status != PSA_SUCCESS ) + { + psa_wipe_key_slot( *p_slot ); + if( status == PSA_ERROR_DOES_NOT_EXIST ) + status = PSA_ERROR_INVALID_HANDLE; + } + else + /* Add implicit usage flags. */ + psa_extend_key_usage_flags( &(*p_slot)->attr.policy.usage ); + + return( status ); +#else /* MBEDTLS_PSA_CRYPTO_STORAGE_C || MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */ + return( PSA_ERROR_INVALID_HANDLE ); +#endif /* MBEDTLS_PSA_CRYPTO_STORAGE_C || MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */ +} + +psa_status_t psa_unlock_key_slot( psa_key_slot_t *slot ) +{ + if( slot == NULL ) + return( PSA_SUCCESS ); + + if( slot->lock_count > 0 ) + { + slot->lock_count--; + return( PSA_SUCCESS ); + } + + /* + * As the return error code may not be handled in case of multiple errors, + * do our best to report if the lock counter is equal to zero: if + * available call MBEDTLS_PARAM_FAILED that may terminate execution (if + * called as part of the execution of a unit test suite this will stop the + * test suite execution). + */ +#ifdef MBEDTLS_CHECK_PARAMS + MBEDTLS_PARAM_FAILED( slot->lock_count > 0 ); +#endif + + return( PSA_ERROR_CORRUPTION_DETECTED ); +} + +psa_status_t psa_validate_key_location( psa_key_lifetime_t lifetime, + psa_se_drv_table_entry_t **p_drv ) +{ + if ( psa_key_lifetime_is_external( lifetime ) ) + { +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + /* Check whether a driver is registered against this lifetime */ + psa_se_drv_table_entry_t *driver = psa_get_se_driver_entry( lifetime ); + if( driver != NULL ) + { + if (p_drv != NULL) + *p_drv = driver; + return( PSA_SUCCESS ); + } +#else /* MBEDTLS_PSA_CRYPTO_SE_C */ + (void) p_drv; +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + +#if defined(MBEDTLS_PSA_CRYPTO_DRIVERS) + /* Key location for external keys gets checked by the wrapper */ + return( PSA_SUCCESS ); +#else /* MBEDTLS_PSA_CRYPTO_DRIVERS */ + /* No support for external lifetimes at all, or dynamic interface + * did not find driver for requested lifetime. */ + return( PSA_ERROR_INVALID_ARGUMENT ); +#endif /* MBEDTLS_PSA_CRYPTO_DRIVERS */ + } + else + /* Local/internal keys are always valid */ + return( PSA_SUCCESS ); +} + +psa_status_t psa_validate_key_persistence( psa_key_lifetime_t lifetime ) +{ + if ( PSA_KEY_LIFETIME_IS_VOLATILE( lifetime ) ) + { + /* Volatile keys are always supported */ + return( PSA_SUCCESS ); + } + else + { + /* Persistent keys require storage support */ +#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) + if( PSA_KEY_LIFETIME_IS_READ_ONLY( lifetime ) ) + return( PSA_ERROR_INVALID_ARGUMENT ); + else + return( PSA_SUCCESS ); +#else /* MBEDTLS_PSA_CRYPTO_STORAGE_C */ + return( PSA_ERROR_NOT_SUPPORTED ); +#endif /* !MBEDTLS_PSA_CRYPTO_STORAGE_C */ + } +} + +psa_status_t psa_open_key( mbedtls_svc_key_id_t key, psa_key_handle_t *handle ) +{ +#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) || \ + defined(MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS) + psa_status_t status; + psa_key_slot_t *slot; + + status = psa_get_and_lock_key_slot( key, &slot ); + if( status != PSA_SUCCESS ) + { + *handle = PSA_KEY_HANDLE_INIT; + if( status == PSA_ERROR_INVALID_HANDLE ) + status = PSA_ERROR_DOES_NOT_EXIST; + + return( status ); + } + + *handle = key; + + return( psa_unlock_key_slot( slot ) ); + +#else /* MBEDTLS_PSA_CRYPTO_STORAGE_C || MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */ + (void) key; + *handle = PSA_KEY_HANDLE_INIT; + return( PSA_ERROR_NOT_SUPPORTED ); +#endif /* MBEDTLS_PSA_CRYPTO_STORAGE_C || MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */ +} + +psa_status_t psa_close_key( psa_key_handle_t handle ) +{ + psa_status_t status; + psa_key_slot_t *slot; + + if( psa_key_handle_is_null( handle ) ) + return( PSA_SUCCESS ); + + status = psa_get_and_lock_key_slot_in_memory( handle, &slot ); + if( status != PSA_SUCCESS ) + { + if( status == PSA_ERROR_DOES_NOT_EXIST ) + status = PSA_ERROR_INVALID_HANDLE; + + return( status ); + } + if( slot->lock_count <= 1 ) + return( psa_wipe_key_slot( slot ) ); + else + return( psa_unlock_key_slot( slot ) ); +} + +psa_status_t psa_purge_key( mbedtls_svc_key_id_t key ) +{ + psa_status_t status; + psa_key_slot_t *slot; + + status = psa_get_and_lock_key_slot_in_memory( key, &slot ); + if( status != PSA_SUCCESS ) + return( status ); + + if( ( ! PSA_KEY_LIFETIME_IS_VOLATILE( slot->attr.lifetime ) ) && + ( slot->lock_count <= 1 ) ) + return( psa_wipe_key_slot( slot ) ); + else + return( psa_unlock_key_slot( slot ) ); +} + +void mbedtls_psa_get_stats( mbedtls_psa_stats_t *stats ) +{ + size_t slot_idx; + + memset( stats, 0, sizeof( *stats ) ); + + for( slot_idx = 0; slot_idx < MBEDTLS_PSA_KEY_SLOT_COUNT; slot_idx++ ) + { + const psa_key_slot_t *slot = &global_data.key_slots[ slot_idx ]; + if( psa_is_key_slot_locked( slot ) ) + { + ++stats->locked_slots; + } + if( ! psa_is_key_slot_occupied( slot ) ) + { + ++stats->empty_slots; + continue; + } + if( PSA_KEY_LIFETIME_IS_VOLATILE( slot->attr.lifetime ) ) + ++stats->volatile_slots; + else + { + psa_key_id_t id = MBEDTLS_SVC_KEY_ID_GET_KEY_ID( slot->attr.id ); + ++stats->persistent_slots; + if( id > stats->max_open_internal_key_id ) + stats->max_open_internal_key_id = id; + } + if( PSA_KEY_LIFETIME_GET_LOCATION( slot->attr.lifetime ) != + PSA_KEY_LOCATION_LOCAL_STORAGE ) + { + psa_key_id_t id = MBEDTLS_SVC_KEY_ID_GET_KEY_ID( slot->attr.id ); + ++stats->external_slots; + if( id > stats->max_open_external_key_id ) + stats->max_open_external_key_id = id; + } + } +} + +#endif /* MBEDTLS_PSA_CRYPTO_C */ diff --git a/Externals/mbedtls/library/psa_crypto_slot_management.h b/Externals/mbedtls/library/psa_crypto_slot_management.h new file mode 100644 index 000000000000..d539bdd86613 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_slot_management.h @@ -0,0 +1,224 @@ +/* + * PSA crypto layer on top of Mbed TLS crypto + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_SLOT_MANAGEMENT_H +#define PSA_CRYPTO_SLOT_MANAGEMENT_H + +#include "psa/crypto.h" +#include "psa_crypto_core.h" +#include "psa_crypto_se.h" + +/** Range of volatile key identifiers. + * + * The last #MBEDTLS_PSA_KEY_SLOT_COUNT identifiers of the implementation + * range of key identifiers are reserved for volatile key identifiers. + * A volatile key identifier is equal to #PSA_KEY_ID_VOLATILE_MIN plus the + * index of the key slot containing the volatile key definition. + */ + +/** The minimum value for a volatile key identifier. + */ +#define PSA_KEY_ID_VOLATILE_MIN ( PSA_KEY_ID_VENDOR_MAX - \ + MBEDTLS_PSA_KEY_SLOT_COUNT + 1 ) + +/** The maximum value for a volatile key identifier. + */ +#define PSA_KEY_ID_VOLATILE_MAX PSA_KEY_ID_VENDOR_MAX + +/** Test whether a key identifier is a volatile key identifier. + * + * \param key_id Key identifier to test. + * + * \retval 1 + * The key identifier is a volatile key identifier. + * \retval 0 + * The key identifier is not a volatile key identifier. + */ +static inline int psa_key_id_is_volatile( psa_key_id_t key_id ) +{ + return( ( key_id >= PSA_KEY_ID_VOLATILE_MIN ) && + ( key_id <= PSA_KEY_ID_VOLATILE_MAX ) ); +} + +/** Get the description of a key given its identifier and lock it. + * + * The descriptions of volatile keys and loaded persistent keys are stored in + * key slots. This function returns a pointer to the key slot containing the + * description of a key given its identifier. + * + * In case of a persistent key, the function loads the description of the key + * into a key slot if not already done. + * + * On success, the returned key slot is locked. It is the responsibility of + * the caller to unlock the key slot when it does not access it anymore. + * + * \param key Key identifier to query. + * \param[out] p_slot On success, `*p_slot` contains a pointer to the + * key slot containing the description of the key + * identified by \p key. + * + * \retval #PSA_SUCCESS + * \p *p_slot contains a pointer to the key slot containing the + * description of the key identified by \p key. + * The key slot counter has been incremented. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been initialized. + * \retval #PSA_ERROR_INVALID_HANDLE + * \p key is not a valid key identifier. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \p key is a persistent key identifier. The implementation does not + * have sufficient resources to load the persistent key. This can be + * due to a lack of empty key slot, or available memory. + * \retval #PSA_ERROR_DOES_NOT_EXIST + * There is no key with key identifier \p key. + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_DATA_CORRUPT + */ +psa_status_t psa_get_and_lock_key_slot( mbedtls_svc_key_id_t key, + psa_key_slot_t **p_slot ); + +/** Initialize the key slot structures. + * + * \retval #PSA_SUCCESS + * Currently this function always succeeds. + */ +psa_status_t psa_initialize_key_slots( void ); + +/** Delete all data from key slots in memory. + * + * This does not affect persistent storage. */ +void psa_wipe_all_key_slots( void ); + +/** Find a free key slot. + * + * This function returns a key slot that is available for use and is in its + * ground state (all-bits-zero). On success, the key slot is locked. It is + * the responsibility of the caller to unlock the key slot when it does not + * access it anymore. + * + * \param[out] volatile_key_id On success, volatile key identifier + * associated to the returned slot. + * \param[out] p_slot On success, a pointer to the slot. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + */ +psa_status_t psa_get_empty_key_slot( psa_key_id_t *volatile_key_id, + psa_key_slot_t **p_slot ); + +/** Lock a key slot. + * + * This function increments the key slot lock counter by one. + * + * \param[in] slot The key slot. + * + * \retval #PSA_SUCCESS + The key slot lock counter was incremented. + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * The lock counter already reached its maximum value and was not + * increased. + */ +static inline psa_status_t psa_lock_key_slot( psa_key_slot_t *slot ) +{ + if( slot->lock_count >= SIZE_MAX ) + return( PSA_ERROR_CORRUPTION_DETECTED ); + + slot->lock_count++; + + return( PSA_SUCCESS ); +} + +/** Unlock a key slot. + * + * This function decrements the key slot lock counter by one. + * + * \note To ease the handling of errors in retrieving a key slot + * a NULL input pointer is valid, and the function returns + * successfully without doing anything in that case. + * + * \param[in] slot The key slot. + * \retval #PSA_SUCCESS + * \p slot is NULL or the key slot lock counter has been + * decremented successfully. + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * The lock counter was equal to 0. + * + */ +psa_status_t psa_unlock_key_slot( psa_key_slot_t *slot ); + +/** Test whether a lifetime designates a key in an external cryptoprocessor. + * + * \param lifetime The lifetime to test. + * + * \retval 1 + * The lifetime designates an external key. There should be a + * registered driver for this lifetime, otherwise the key cannot + * be created or manipulated. + * \retval 0 + * The lifetime designates a key that is volatile or in internal + * storage. + */ +static inline int psa_key_lifetime_is_external( psa_key_lifetime_t lifetime ) +{ + return( PSA_KEY_LIFETIME_GET_LOCATION( lifetime ) + != PSA_KEY_LOCATION_LOCAL_STORAGE ); +} + +/** Validate a key's location. + * + * This function checks whether the key's attributes point to a location that + * is known to the PSA Core, and returns the driver function table if the key + * is to be found in an external location. + * + * \param[in] lifetime The key lifetime attribute. + * \param[out] p_drv On success, when a key is located in external + * storage, returns a pointer to the driver table + * associated with the key's storage location. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_ARGUMENT + */ +psa_status_t psa_validate_key_location( psa_key_lifetime_t lifetime, + psa_se_drv_table_entry_t **p_drv ); + +/** Validate the persistence of a key. + * + * \param[in] lifetime The key lifetime attribute. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_NOT_SUPPORTED The key is persistent but persistent keys + * are not supported. + */ +psa_status_t psa_validate_key_persistence( psa_key_lifetime_t lifetime ); + +/** Validate a key identifier. + * + * \param[in] key The key identifier. + * \param[in] vendor_ok Non-zero to indicate that key identifiers in the + * vendor range are allowed, volatile key identifiers + * excepted \c 0 otherwise. + * + * \retval <> 0 if the key identifier is valid, 0 otherwise. + */ +int psa_is_valid_key_id( mbedtls_svc_key_id_t key, int vendor_ok ); + +#endif /* PSA_CRYPTO_SLOT_MANAGEMENT_H */ diff --git a/Externals/mbedtls/library/psa_crypto_storage.c b/Externals/mbedtls/library/psa_crypto_storage.c new file mode 100644 index 000000000000..b485c50c69f0 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_storage.c @@ -0,0 +1,488 @@ +/* + * PSA persistent key storage + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common.h" + +#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) + +#include +#include + +#include "psa/crypto.h" +#include "psa_crypto_storage.h" +#include "mbedtls/platform_util.h" + +#if defined(MBEDTLS_PSA_ITS_FILE_C) +#include "psa_crypto_its.h" +#else /* Native ITS implementation */ +#include "psa/error.h" +#include "psa/internal_trusted_storage.h" +#endif + +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#include +#define mbedtls_calloc calloc +#define mbedtls_free free +#endif + +/****************************************************************/ +/* Key storage */ +/****************************************************************/ + +/* Determine a file name (ITS file identifier) for the given key identifier. + * The file name must be distinct from any file that is used for a purpose + * other than storing a key. Currently, the only such file is the random seed + * file whose name is PSA_CRYPTO_ITS_RANDOM_SEED_UID and whose value is + * 0xFFFFFF52. */ +static psa_storage_uid_t psa_its_identifier_of_slot( mbedtls_svc_key_id_t key ) +{ +#if defined(MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER) + /* Encode the owner in the upper 32 bits. This means that if + * owner values are nonzero (as they are on a PSA platform), + * no key file will ever have a value less than 0x100000000, so + * the whole range 0..0xffffffff is available for non-key files. */ + uint32_t unsigned_owner_id = MBEDTLS_SVC_KEY_ID_GET_OWNER_ID( key ); + return( ( (uint64_t) unsigned_owner_id << 32 ) | + MBEDTLS_SVC_KEY_ID_GET_KEY_ID( key ) ); +#else + /* Use the key id directly as a file name. + * psa_is_key_id_valid() in psa_crypto_slot_management.c + * is responsible for ensuring that key identifiers do not have a + * value that is reserved for non-key files. */ + return( key ); +#endif +} + +/** + * \brief Load persistent data for the given key slot number. + * + * This function reads data from a storage backend and returns the data in a + * buffer. + * + * \param key Persistent identifier of the key to be loaded. This + * should be an occupied storage location. + * \param[out] data Buffer where the data is to be written. + * \param data_size Size of the \c data buffer in bytes. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_DATA_INVALID + * \retval #PSA_ERROR_DATA_CORRUPT + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_DOES_NOT_EXIST + */ +static psa_status_t psa_crypto_storage_load( + const mbedtls_svc_key_id_t key, uint8_t *data, size_t data_size ) +{ + psa_status_t status; + psa_storage_uid_t data_identifier = psa_its_identifier_of_slot( key ); + struct psa_storage_info_t data_identifier_info; + size_t data_length = 0; + + status = psa_its_get_info( data_identifier, &data_identifier_info ); + if( status != PSA_SUCCESS ) + return( status ); + + status = psa_its_get( data_identifier, 0, (uint32_t) data_size, data, &data_length ); + if( data_size != data_length ) + return( PSA_ERROR_DATA_INVALID ); + + return( status ); +} + +int psa_is_key_present_in_storage( const mbedtls_svc_key_id_t key ) +{ + psa_status_t ret; + psa_storage_uid_t data_identifier = psa_its_identifier_of_slot( key ); + struct psa_storage_info_t data_identifier_info; + + ret = psa_its_get_info( data_identifier, &data_identifier_info ); + + if( ret == PSA_ERROR_DOES_NOT_EXIST ) + return( 0 ); + return( 1 ); +} + +/** + * \brief Store persistent data for the given key slot number. + * + * This function stores the given data buffer to a persistent storage. + * + * \param key Persistent identifier of the key to be stored. This + * should be an unoccupied storage location. + * \param[in] data Buffer containing the data to be stored. + * \param data_length The number of bytes + * that make up the data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_ALREADY_EXISTS + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_DATA_INVALID + */ +static psa_status_t psa_crypto_storage_store( const mbedtls_svc_key_id_t key, + const uint8_t *data, + size_t data_length ) +{ + psa_status_t status; + psa_storage_uid_t data_identifier = psa_its_identifier_of_slot( key ); + struct psa_storage_info_t data_identifier_info; + + if( psa_is_key_present_in_storage( key ) == 1 ) + return( PSA_ERROR_ALREADY_EXISTS ); + + status = psa_its_set( data_identifier, (uint32_t) data_length, data, 0 ); + if( status != PSA_SUCCESS ) + { + return( PSA_ERROR_DATA_INVALID ); + } + + status = psa_its_get_info( data_identifier, &data_identifier_info ); + if( status != PSA_SUCCESS ) + { + goto exit; + } + + if( data_identifier_info.size != data_length ) + { + status = PSA_ERROR_DATA_INVALID; + goto exit; + } + +exit: + if( status != PSA_SUCCESS ) + { + /* Remove the file in case we managed to create it but something + * went wrong. It's ok if the file doesn't exist. If the file exists + * but the removal fails, we're already reporting an error so there's + * nothing else we can do. */ + (void) psa_its_remove( data_identifier ); + } + return( status ); +} + +psa_status_t psa_destroy_persistent_key( const mbedtls_svc_key_id_t key ) +{ + psa_status_t ret; + psa_storage_uid_t data_identifier = psa_its_identifier_of_slot( key ); + struct psa_storage_info_t data_identifier_info; + + ret = psa_its_get_info( data_identifier, &data_identifier_info ); + if( ret == PSA_ERROR_DOES_NOT_EXIST ) + return( PSA_SUCCESS ); + + if( psa_its_remove( data_identifier ) != PSA_SUCCESS ) + return( PSA_ERROR_DATA_INVALID ); + + ret = psa_its_get_info( data_identifier, &data_identifier_info ); + if( ret != PSA_ERROR_DOES_NOT_EXIST ) + return( PSA_ERROR_DATA_INVALID ); + + return( PSA_SUCCESS ); +} + +/** + * \brief Get data length for given key slot number. + * + * \param key Persistent identifier whose stored data length + * is to be obtained. + * \param[out] data_length The number of bytes that make up the data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \retval #PSA_ERROR_DATA_CORRUPT + */ +static psa_status_t psa_crypto_storage_get_data_length( + const mbedtls_svc_key_id_t key, + size_t *data_length ) +{ + psa_status_t status; + psa_storage_uid_t data_identifier = psa_its_identifier_of_slot( key ); + struct psa_storage_info_t data_identifier_info; + + status = psa_its_get_info( data_identifier, &data_identifier_info ); + if( status != PSA_SUCCESS ) + return( status ); + + *data_length = (size_t) data_identifier_info.size; + + return( PSA_SUCCESS ); +} + +/** + * Persistent key storage magic header. + */ +#define PSA_KEY_STORAGE_MAGIC_HEADER "PSA\0KEY" +#define PSA_KEY_STORAGE_MAGIC_HEADER_LENGTH ( sizeof( PSA_KEY_STORAGE_MAGIC_HEADER ) ) + +typedef struct { + uint8_t magic[PSA_KEY_STORAGE_MAGIC_HEADER_LENGTH]; + uint8_t version[4]; + uint8_t lifetime[sizeof( psa_key_lifetime_t )]; + uint8_t type[2]; + uint8_t bits[2]; + uint8_t policy[sizeof( psa_key_policy_t )]; + uint8_t data_len[4]; + uint8_t key_data[]; +} psa_persistent_key_storage_format; + +void psa_format_key_data_for_storage( const uint8_t *data, + const size_t data_length, + const psa_core_key_attributes_t *attr, + uint8_t *storage_data ) +{ + psa_persistent_key_storage_format *storage_format = + (psa_persistent_key_storage_format *) storage_data; + + memcpy( storage_format->magic, PSA_KEY_STORAGE_MAGIC_HEADER, PSA_KEY_STORAGE_MAGIC_HEADER_LENGTH ); + MBEDTLS_PUT_UINT32_LE( 0, storage_format->version, 0 ); + MBEDTLS_PUT_UINT32_LE( attr->lifetime, storage_format->lifetime, 0 ); + MBEDTLS_PUT_UINT16_LE( (uint16_t) attr->type, storage_format->type, 0 ); + MBEDTLS_PUT_UINT16_LE( (uint16_t) attr->bits, storage_format->bits, 0 ); + MBEDTLS_PUT_UINT32_LE( attr->policy.usage, storage_format->policy, 0 ); + MBEDTLS_PUT_UINT32_LE( attr->policy.alg, storage_format->policy, sizeof( uint32_t ) ); + MBEDTLS_PUT_UINT32_LE( attr->policy.alg2, storage_format->policy, 2 * sizeof( uint32_t ) ); + MBEDTLS_PUT_UINT32_LE( data_length, storage_format->data_len, 0 ); + memcpy( storage_format->key_data, data, data_length ); +} + +static psa_status_t check_magic_header( const uint8_t *data ) +{ + if( memcmp( data, PSA_KEY_STORAGE_MAGIC_HEADER, + PSA_KEY_STORAGE_MAGIC_HEADER_LENGTH ) != 0 ) + return( PSA_ERROR_DATA_INVALID ); + return( PSA_SUCCESS ); +} + +psa_status_t psa_parse_key_data_from_storage( const uint8_t *storage_data, + size_t storage_data_length, + uint8_t **key_data, + size_t *key_data_length, + psa_core_key_attributes_t *attr ) +{ + psa_status_t status; + const psa_persistent_key_storage_format *storage_format = + (const psa_persistent_key_storage_format *)storage_data; + uint32_t version; + + if( storage_data_length < sizeof(*storage_format) ) + return( PSA_ERROR_DATA_INVALID ); + + status = check_magic_header( storage_data ); + if( status != PSA_SUCCESS ) + return( status ); + + version = MBEDTLS_GET_UINT32_LE( storage_format->version, 0 ); + if( version != 0 ) + return( PSA_ERROR_DATA_INVALID ); + + *key_data_length = MBEDTLS_GET_UINT32_LE( storage_format->data_len, 0 ); + if( *key_data_length > ( storage_data_length - sizeof(*storage_format) ) || + *key_data_length > PSA_CRYPTO_MAX_STORAGE_SIZE ) + return( PSA_ERROR_DATA_INVALID ); + + if( *key_data_length == 0 ) + { + *key_data = NULL; + } + else + { + *key_data = mbedtls_calloc( 1, *key_data_length ); + if( *key_data == NULL ) + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + memcpy( *key_data, storage_format->key_data, *key_data_length ); + } + + attr->lifetime = MBEDTLS_GET_UINT32_LE( storage_format->lifetime, 0 ); + attr->type = MBEDTLS_GET_UINT16_LE( storage_format->type, 0 ); + attr->bits = MBEDTLS_GET_UINT16_LE( storage_format->bits, 0 ); + attr->policy.usage = MBEDTLS_GET_UINT32_LE( storage_format->policy, 0 ); + attr->policy.alg = MBEDTLS_GET_UINT32_LE( storage_format->policy, sizeof( uint32_t ) ); + attr->policy.alg2 = MBEDTLS_GET_UINT32_LE( storage_format->policy, 2 * sizeof( uint32_t ) ); + + return( PSA_SUCCESS ); +} + +psa_status_t psa_save_persistent_key( const psa_core_key_attributes_t *attr, + const uint8_t *data, + const size_t data_length ) +{ + size_t storage_data_length; + uint8_t *storage_data; + psa_status_t status; + + /* All keys saved to persistent storage always have a key context */ + if( data == NULL || data_length == 0 ) + return( PSA_ERROR_INVALID_ARGUMENT ); + + if( data_length > PSA_CRYPTO_MAX_STORAGE_SIZE ) + return( PSA_ERROR_INSUFFICIENT_STORAGE ); + storage_data_length = data_length + sizeof( psa_persistent_key_storage_format ); + + storage_data = mbedtls_calloc( 1, storage_data_length ); + if( storage_data == NULL ) + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + + psa_format_key_data_for_storage( data, data_length, attr, storage_data ); + + status = psa_crypto_storage_store( attr->id, + storage_data, storage_data_length ); + + mbedtls_free( storage_data ); + + return( status ); +} + +void psa_free_persistent_key_data( uint8_t *key_data, size_t key_data_length ) +{ + if( key_data != NULL ) + { + mbedtls_platform_zeroize( key_data, key_data_length ); + } + mbedtls_free( key_data ); +} + +psa_status_t psa_load_persistent_key( psa_core_key_attributes_t *attr, + uint8_t **data, + size_t *data_length ) +{ + psa_status_t status = PSA_SUCCESS; + uint8_t *loaded_data; + size_t storage_data_length = 0; + mbedtls_svc_key_id_t key = attr->id; + + status = psa_crypto_storage_get_data_length( key, &storage_data_length ); + if( status != PSA_SUCCESS ) + return( status ); + + loaded_data = mbedtls_calloc( 1, storage_data_length ); + + if( loaded_data == NULL ) + return( PSA_ERROR_INSUFFICIENT_MEMORY ); + + status = psa_crypto_storage_load( key, loaded_data, storage_data_length ); + if( status != PSA_SUCCESS ) + goto exit; + + status = psa_parse_key_data_from_storage( loaded_data, storage_data_length, + data, data_length, attr ); + + /* All keys saved to persistent storage always have a key context */ + if( status == PSA_SUCCESS && + ( *data == NULL || *data_length == 0 ) ) + status = PSA_ERROR_STORAGE_FAILURE; + +exit: + mbedtls_free( loaded_data ); + return( status ); +} + + + +/****************************************************************/ +/* Transactions */ +/****************************************************************/ + +#if defined(PSA_CRYPTO_STORAGE_HAS_TRANSACTIONS) + +psa_crypto_transaction_t psa_crypto_transaction; + +psa_status_t psa_crypto_save_transaction( void ) +{ + struct psa_storage_info_t p_info; + psa_status_t status; + status = psa_its_get_info( PSA_CRYPTO_ITS_TRANSACTION_UID, &p_info ); + if( status == PSA_SUCCESS ) + { + /* This shouldn't happen: we're trying to start a transaction while + * there is still a transaction that hasn't been replayed. */ + return( PSA_ERROR_CORRUPTION_DETECTED ); + } + else if( status != PSA_ERROR_DOES_NOT_EXIST ) + return( status ); + return( psa_its_set( PSA_CRYPTO_ITS_TRANSACTION_UID, + sizeof( psa_crypto_transaction ), + &psa_crypto_transaction, + 0 ) ); +} + +psa_status_t psa_crypto_load_transaction( void ) +{ + psa_status_t status; + size_t length; + status = psa_its_get( PSA_CRYPTO_ITS_TRANSACTION_UID, 0, + sizeof( psa_crypto_transaction ), + &psa_crypto_transaction, &length ); + if( status != PSA_SUCCESS ) + return( status ); + if( length != sizeof( psa_crypto_transaction ) ) + return( PSA_ERROR_DATA_INVALID ); + return( PSA_SUCCESS ); +} + +psa_status_t psa_crypto_stop_transaction( void ) +{ + psa_status_t status = psa_its_remove( PSA_CRYPTO_ITS_TRANSACTION_UID ); + /* Whether or not updating the storage succeeded, the transaction is + * finished now. It's too late to go back, so zero out the in-memory + * data. */ + memset( &psa_crypto_transaction, 0, sizeof( psa_crypto_transaction ) ); + return( status ); +} + +#endif /* PSA_CRYPTO_STORAGE_HAS_TRANSACTIONS */ + + + +/****************************************************************/ +/* Random generator state */ +/****************************************************************/ + +#if defined(MBEDTLS_PSA_INJECT_ENTROPY) +psa_status_t mbedtls_psa_storage_inject_entropy( const unsigned char *seed, + size_t seed_size ) +{ + psa_status_t status; + struct psa_storage_info_t p_info; + + status = psa_its_get_info( PSA_CRYPTO_ITS_RANDOM_SEED_UID, &p_info ); + + if( PSA_ERROR_DOES_NOT_EXIST == status ) /* No seed exists */ + { + status = psa_its_set( PSA_CRYPTO_ITS_RANDOM_SEED_UID, seed_size, seed, 0 ); + } + else if( PSA_SUCCESS == status ) + { + /* You should not be here. Seed needs to be injected only once */ + status = PSA_ERROR_NOT_PERMITTED; + } + return( status ); +} +#endif /* MBEDTLS_PSA_INJECT_ENTROPY */ + + + +/****************************************************************/ +/* The end */ +/****************************************************************/ + +#endif /* MBEDTLS_PSA_CRYPTO_STORAGE_C */ diff --git a/Externals/mbedtls/library/psa_crypto_storage.h b/Externals/mbedtls/library/psa_crypto_storage.h new file mode 100644 index 000000000000..970e1083a703 --- /dev/null +++ b/Externals/mbedtls/library/psa_crypto_storage.h @@ -0,0 +1,399 @@ +/** + * \file psa_crypto_storage.h + * + * \brief PSA cryptography module: Mbed TLS key storage + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PSA_CRYPTO_STORAGE_H +#define PSA_CRYPTO_STORAGE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psa/crypto.h" +#include "psa/crypto_se_driver.h" + +#include +#include + +/* Limit the maximum key size in storage. This should have no effect + * since the key size is limited in memory. */ +#define PSA_CRYPTO_MAX_STORAGE_SIZE ( PSA_BITS_TO_BYTES( PSA_MAX_KEY_BITS ) ) +/* Sanity check: a file size must fit in 32 bits. Allow a generous + * 64kB of metadata. */ +#if PSA_CRYPTO_MAX_STORAGE_SIZE > 0xffff0000 +#error PSA_CRYPTO_MAX_STORAGE_SIZE > 0xffff0000 +#endif + +/** The maximum permitted persistent slot number. + * + * In Mbed Crypto 0.1.0b: + * - Using the file backend, all key ids are ok except 0. + * - Using the ITS backend, all key ids are ok except 0xFFFFFF52 + * (#PSA_CRYPTO_ITS_RANDOM_SEED_UID) for which the file contains the + * device's random seed (if this feature is enabled). + * - Only key ids from 1 to #MBEDTLS_PSA_KEY_SLOT_COUNT are actually used. + * + * Since we need to preserve the random seed, avoid using that key slot. + * Reserve a whole range of key slots just in case something else comes up. + * + * This limitation will probably become moot when we implement client + * separation for key storage. + */ +#define PSA_MAX_PERSISTENT_KEY_IDENTIFIER PSA_KEY_ID_VENDOR_MAX + +/** + * \brief Checks if persistent data is stored for the given key slot number + * + * This function checks if any key data or metadata exists for the key slot in + * the persistent storage. + * + * \param key Persistent identifier to check. + * + * \retval 0 + * No persistent data present for slot number + * \retval 1 + * Persistent data present for slot number + */ +int psa_is_key_present_in_storage( const mbedtls_svc_key_id_t key ); + +/** + * \brief Format key data and metadata and save to a location for given key + * slot. + * + * This function formats the key data and metadata and saves it to a + * persistent storage backend. The storage location corresponding to the + * key slot must be empty, otherwise this function will fail. This function + * should be called after loading the key into an internal slot to ensure the + * persistent key is not saved into a storage location corresponding to an + * already occupied non-persistent key, as well as ensuring the key data is + * validated. + * + * Note: This function will only succeed for key buffers which are not + * empty. If passed a NULL pointer or zero-length, the function will fail + * with #PSA_ERROR_INVALID_ARGUMENT. + * + * \param[in] attr The attributes of the key to save. + * The key identifier field in the attributes + * determines the key's location. + * \param[in] data Buffer containing the key data. + * \param data_length The number of bytes that make up the key data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_ALREADY_EXISTS + * \retval #PSA_ERROR_DATA_INVALID + * \retval #PSA_ERROR_DATA_CORRUPT + */ +psa_status_t psa_save_persistent_key( const psa_core_key_attributes_t *attr, + const uint8_t *data, + const size_t data_length ); + +/** + * \brief Parses key data and metadata and load persistent key for given + * key slot number. + * + * This function reads from a storage backend, parses the key data and + * metadata and writes them to the appropriate output parameters. + * + * Note: This function allocates a buffer and returns a pointer to it through + * the data parameter. On successful return, the pointer is guaranteed to be + * valid and the buffer contains at least one byte of data. + * psa_free_persistent_key_data() must be called on the data buffer + * afterwards to zeroize and free this buffer. + * + * \param[in,out] attr On input, the key identifier field identifies + * the key to load. Other fields are ignored. + * On success, the attribute structure contains + * the key metadata that was loaded from storage. + * \param[out] data Pointer to an allocated key data buffer on return. + * \param[out] data_length The number of bytes that make up the key data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_DATA_INVALID + * \retval #PSA_ERROR_DATA_CORRUPT + * \retval #PSA_ERROR_DOES_NOT_EXIST + */ +psa_status_t psa_load_persistent_key( psa_core_key_attributes_t *attr, + uint8_t **data, + size_t *data_length ); + +/** + * \brief Remove persistent data for the given key slot number. + * + * \param key Persistent identifier of the key to remove + * from persistent storage. + * + * \retval #PSA_SUCCESS + * The key was successfully removed, + * or the key did not exist. + * \retval #PSA_ERROR_DATA_INVALID + */ +psa_status_t psa_destroy_persistent_key( const mbedtls_svc_key_id_t key ); + +/** + * \brief Free the temporary buffer allocated by psa_load_persistent_key(). + * + * This function must be called at some point after psa_load_persistent_key() + * to zeroize and free the memory allocated to the buffer in that function. + * + * \param key_data Buffer for the key data. + * \param key_data_length Size of the key data buffer. + * + */ +void psa_free_persistent_key_data( uint8_t *key_data, size_t key_data_length ); + +/** + * \brief Formats key data and metadata for persistent storage + * + * \param[in] data Buffer containing the key data. + * \param data_length Length of the key data buffer. + * \param[in] attr The core attributes of the key. + * \param[out] storage_data Output buffer for the formatted data. + * + */ +void psa_format_key_data_for_storage( const uint8_t *data, + const size_t data_length, + const psa_core_key_attributes_t *attr, + uint8_t *storage_data ); + +/** + * \brief Parses persistent storage data into key data and metadata + * + * \param[in] storage_data Buffer for the storage data. + * \param storage_data_length Length of the storage data buffer + * \param[out] key_data On output, pointer to a newly allocated buffer + * containing the key data. This must be freed + * using psa_free_persistent_key_data() + * \param[out] key_data_length Length of the key data buffer + * \param[out] attr On success, the attribute structure is filled + * with the loaded key metadata. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_DATA_INVALID + */ +psa_status_t psa_parse_key_data_from_storage( const uint8_t *storage_data, + size_t storage_data_length, + uint8_t **key_data, + size_t *key_data_length, + psa_core_key_attributes_t *attr ); + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) +/** This symbol is defined if transaction support is required. */ +#define PSA_CRYPTO_STORAGE_HAS_TRANSACTIONS +#endif + +#if defined(PSA_CRYPTO_STORAGE_HAS_TRANSACTIONS) + +/** The type of transaction that is in progress. + */ +/* This is an integer type rather than an enum for two reasons: to support + * unknown values when loading a transaction file, and to ensure that the + * type has a known size. + */ +typedef uint16_t psa_crypto_transaction_type_t; + +/** No transaction is in progress. + * + * This has the value 0, so zero-initialization sets a transaction's type to + * this value. + */ +#define PSA_CRYPTO_TRANSACTION_NONE ( (psa_crypto_transaction_type_t) 0x0000 ) + +/** A key creation transaction. + * + * This is only used for keys in an external cryptoprocessor (secure element). + * Keys in RAM or in internal storage are created atomically in storage + * (simple file creation), so they do not need a transaction mechanism. + */ +#define PSA_CRYPTO_TRANSACTION_CREATE_KEY ( (psa_crypto_transaction_type_t) 0x0001 ) + +/** A key destruction transaction. + * + * This is only used for keys in an external cryptoprocessor (secure element). + * Keys in RAM or in internal storage are destroyed atomically in storage + * (simple file deletion), so they do not need a transaction mechanism. + */ +#define PSA_CRYPTO_TRANSACTION_DESTROY_KEY ( (psa_crypto_transaction_type_t) 0x0002 ) + +/** Transaction data. + * + * This type is designed to be serialized by writing the memory representation + * and reading it back on the same device. + * + * \note The transaction mechanism is designed for a single active transaction + * at a time. The transaction object is #psa_crypto_transaction. + * + * \note If an API call starts a transaction, it must complete this transaction + * before returning to the application. + * + * The lifetime of a transaction is the following (note that only one + * transaction may be active at a time): + * + * -# Call psa_crypto_prepare_transaction() to initialize the transaction + * object in memory and declare the type of transaction that is starting. + * -# Fill in the type-specific fields of #psa_crypto_transaction. + * -# Call psa_crypto_save_transaction() to start the transaction. This + * saves the transaction data to internal storage. + * -# Perform the work of the transaction by modifying files, contacting + * external entities, or whatever needs doing. Note that the transaction + * may be interrupted by a power failure, so you need to have a way + * recover from interruptions either by undoing what has been done + * so far or by resuming where you left off. + * -# If there are intermediate stages in the transaction, update + * the fields of #psa_crypto_transaction and call + * psa_crypto_save_transaction() again when each stage is reached. + * -# When the transaction is over, call psa_crypto_stop_transaction() to + * remove the transaction data in storage and in memory. + * + * If the system crashes while a transaction is in progress, psa_crypto_init() + * calls psa_crypto_load_transaction() and takes care of completing or + * rewinding the transaction. This is done in psa_crypto_recover_transaction() + * in psa_crypto.c. If you add a new type of transaction, be + * sure to add code for it in psa_crypto_recover_transaction(). + */ +typedef union +{ + /* Each element of this union must have the following properties + * to facilitate serialization and deserialization: + * + * - The element is a struct. + * - The first field of the struct is `psa_crypto_transaction_type_t type`. + * - Elements of the struct are arranged such a way that there is + * no padding. + */ + struct psa_crypto_transaction_unknown_s + { + psa_crypto_transaction_type_t type; + uint16_t unused1; + uint32_t unused2; + uint64_t unused3; + uint64_t unused4; + } unknown; + /* ::type is #PSA_CRYPTO_TRANSACTION_CREATE_KEY or + * #PSA_CRYPTO_TRANSACTION_DESTROY_KEY. */ + struct psa_crypto_transaction_key_s + { + psa_crypto_transaction_type_t type; + uint16_t unused1; + psa_key_lifetime_t lifetime; + psa_key_slot_number_t slot; + mbedtls_svc_key_id_t id; + } key; +} psa_crypto_transaction_t; + +/** The single active transaction. + */ +extern psa_crypto_transaction_t psa_crypto_transaction; + +/** Prepare for a transaction. + * + * There must not be an ongoing transaction. + * + * \param type The type of transaction to start. + */ +static inline void psa_crypto_prepare_transaction( + psa_crypto_transaction_type_t type ) +{ + psa_crypto_transaction.unknown.type = type; +} + +/** Save the transaction data to storage. + * + * You may call this function multiple times during a transaction to + * atomically update the transaction state. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_DATA_CORRUPT + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_STORAGE_FAILURE + */ +psa_status_t psa_crypto_save_transaction( void ); + +/** Load the transaction data from storage, if any. + * + * This function is meant to be called from psa_crypto_init() to recover + * in case a transaction was interrupted by a system crash. + * + * \retval #PSA_SUCCESS + * The data about the ongoing transaction has been loaded to + * #psa_crypto_transaction. + * \retval #PSA_ERROR_DOES_NOT_EXIST + * There is no ongoing transaction. + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_DATA_INVALID + * \retval #PSA_ERROR_DATA_CORRUPT + */ +psa_status_t psa_crypto_load_transaction( void ); + +/** Indicate that the current transaction is finished. + * + * Call this function at the very end of transaction processing. + * This function does not "commit" or "abort" the transaction: the storage + * subsystem has no concept of "commit" and "abort", just saving and + * removing the transaction information in storage. + * + * This function erases the transaction data in storage (if any) and + * resets the transaction data in memory. + * + * \retval #PSA_SUCCESS + * There was transaction data in storage. + * \retval #PSA_ERROR_DOES_NOT_EXIST + * There was no transaction data in storage. + * \retval #PSA_ERROR_STORAGE_FAILURE + * It was impossible to determine whether there was transaction data + * in storage, or the transaction data could not be erased. + */ +psa_status_t psa_crypto_stop_transaction( void ); + +/** The ITS file identifier for the transaction data. + * + * 0xffffffNN = special file; 0x74 = 't' for transaction. + */ +#define PSA_CRYPTO_ITS_TRANSACTION_UID ( (psa_key_id_t) 0xffffff74 ) + +#endif /* PSA_CRYPTO_STORAGE_HAS_TRANSACTIONS */ + +#if defined(MBEDTLS_PSA_INJECT_ENTROPY) +/** Backend side of mbedtls_psa_inject_entropy(). + * + * This function stores the supplied data into the entropy seed file. + * + * \retval #PSA_SUCCESS + * Success + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_NOT_PERMITTED + * The entropy seed file already exists. + */ +psa_status_t mbedtls_psa_storage_inject_entropy( const unsigned char *seed, + size_t seed_size ); +#endif /* MBEDTLS_PSA_INJECT_ENTROPY */ + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_STORAGE_H */ diff --git a/Externals/mbedtls/library/psa_its_file.c b/Externals/mbedtls/library/psa_its_file.c new file mode 100644 index 000000000000..c4782cdba3fc --- /dev/null +++ b/Externals/mbedtls/library/psa_its_file.c @@ -0,0 +1,249 @@ +/* + * PSA ITS simulator over stdio files. + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common.h" + +#if defined(MBEDTLS_PSA_ITS_FILE_C) + +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#define mbedtls_snprintf snprintf +#endif + +#if defined(_WIN32) +#include +#endif + +#include "psa_crypto_its.h" + +#include +#include +#include +#include + +#if !defined(PSA_ITS_STORAGE_PREFIX) +#define PSA_ITS_STORAGE_PREFIX "" +#endif + +#define PSA_ITS_STORAGE_FILENAME_PATTERN "%08x%08x" +#define PSA_ITS_STORAGE_SUFFIX ".psa_its" +#define PSA_ITS_STORAGE_FILENAME_LENGTH \ + ( sizeof( PSA_ITS_STORAGE_PREFIX ) - 1 + /*prefix without terminating 0*/ \ + 16 + /*UID (64-bit number in hex)*/ \ + sizeof( PSA_ITS_STORAGE_SUFFIX ) - 1 + /*suffix without terminating 0*/ \ + 1 /*terminating null byte*/ ) +#define PSA_ITS_STORAGE_TEMP \ + PSA_ITS_STORAGE_PREFIX "tempfile" PSA_ITS_STORAGE_SUFFIX + +/* The maximum value of psa_storage_info_t.size */ +#define PSA_ITS_MAX_SIZE 0xffffffff + +#define PSA_ITS_MAGIC_STRING "PSA\0ITS\0" +#define PSA_ITS_MAGIC_LENGTH 8 + +/* As rename fails on Windows if the new filepath already exists, + * use MoveFileExA with the MOVEFILE_REPLACE_EXISTING flag instead. + * Returns 0 on success, nonzero on failure. */ +#if defined(_WIN32) +#define rename_replace_existing( oldpath, newpath ) \ + ( ! MoveFileExA( oldpath, newpath, MOVEFILE_REPLACE_EXISTING ) ) +#else +#define rename_replace_existing( oldpath, newpath ) rename( oldpath, newpath ) +#endif + +typedef struct +{ + uint8_t magic[PSA_ITS_MAGIC_LENGTH]; + uint8_t size[sizeof( uint32_t )]; + uint8_t flags[sizeof( psa_storage_create_flags_t )]; +} psa_its_file_header_t; + +static void psa_its_fill_filename( psa_storage_uid_t uid, char *filename ) +{ + /* Break up the UID into two 32-bit pieces so as not to rely on + * long long support in snprintf. */ + mbedtls_snprintf( filename, PSA_ITS_STORAGE_FILENAME_LENGTH, + "%s" PSA_ITS_STORAGE_FILENAME_PATTERN "%s", + PSA_ITS_STORAGE_PREFIX, + (unsigned) ( uid >> 32 ), + (unsigned) ( uid & 0xffffffff ), + PSA_ITS_STORAGE_SUFFIX ); +} + +static psa_status_t psa_its_read_file( psa_storage_uid_t uid, + struct psa_storage_info_t *p_info, + FILE **p_stream ) +{ + char filename[PSA_ITS_STORAGE_FILENAME_LENGTH]; + psa_its_file_header_t header; + size_t n; + + *p_stream = NULL; + psa_its_fill_filename( uid, filename ); + *p_stream = fopen( filename, "rb" ); + if( *p_stream == NULL ) + return( PSA_ERROR_DOES_NOT_EXIST ); + + n = fread( &header, 1, sizeof( header ), *p_stream ); + if( n != sizeof( header ) ) + return( PSA_ERROR_DATA_CORRUPT ); + if( memcmp( header.magic, PSA_ITS_MAGIC_STRING, + PSA_ITS_MAGIC_LENGTH ) != 0 ) + return( PSA_ERROR_DATA_CORRUPT ); + + p_info->size = ( header.size[0] | + header.size[1] << 8 | + header.size[2] << 16 | + header.size[3] << 24 ); + p_info->flags = ( header.flags[0] | + header.flags[1] << 8 | + header.flags[2] << 16 | + header.flags[3] << 24 ); + return( PSA_SUCCESS ); +} + +psa_status_t psa_its_get_info( psa_storage_uid_t uid, + struct psa_storage_info_t *p_info ) +{ + psa_status_t status; + FILE *stream = NULL; + status = psa_its_read_file( uid, p_info, &stream ); + if( stream != NULL ) + fclose( stream ); + return( status ); +} + +psa_status_t psa_its_get( psa_storage_uid_t uid, + uint32_t data_offset, + uint32_t data_length, + void *p_data, + size_t *p_data_length ) +{ + psa_status_t status; + FILE *stream = NULL; + size_t n; + struct psa_storage_info_t info; + + status = psa_its_read_file( uid, &info, &stream ); + if( status != PSA_SUCCESS ) + goto exit; + status = PSA_ERROR_INVALID_ARGUMENT; + if( data_offset + data_length < data_offset ) + goto exit; +#if SIZE_MAX < 0xffffffff + if( data_offset + data_length > SIZE_MAX ) + goto exit; +#endif + if( data_offset + data_length > info.size ) + goto exit; + + status = PSA_ERROR_STORAGE_FAILURE; +#if LONG_MAX < 0xffffffff + while( data_offset > LONG_MAX ) + { + if( fseek( stream, LONG_MAX, SEEK_CUR ) != 0 ) + goto exit; + data_offset -= LONG_MAX; + } +#endif + if( fseek( stream, data_offset, SEEK_CUR ) != 0 ) + goto exit; + n = fread( p_data, 1, data_length, stream ); + if( n != data_length ) + goto exit; + status = PSA_SUCCESS; + if( p_data_length != NULL ) + *p_data_length = n; + +exit: + if( stream != NULL ) + fclose( stream ); + return( status ); +} + +psa_status_t psa_its_set( psa_storage_uid_t uid, + uint32_t data_length, + const void *p_data, + psa_storage_create_flags_t create_flags ) +{ + psa_status_t status = PSA_ERROR_STORAGE_FAILURE; + char filename[PSA_ITS_STORAGE_FILENAME_LENGTH]; + FILE *stream = NULL; + psa_its_file_header_t header; + size_t n; + + memcpy( header.magic, PSA_ITS_MAGIC_STRING, PSA_ITS_MAGIC_LENGTH ); + MBEDTLS_PUT_UINT32_LE( data_length, header.size, 0 ); + MBEDTLS_PUT_UINT32_LE( create_flags, header.flags, 0 ); + + psa_its_fill_filename( uid, filename ); + stream = fopen( PSA_ITS_STORAGE_TEMP, "wb" ); + if( stream == NULL ) + goto exit; + + status = PSA_ERROR_INSUFFICIENT_STORAGE; + n = fwrite( &header, 1, sizeof( header ), stream ); + if( n != sizeof( header ) ) + goto exit; + if( data_length != 0 ) + { + n = fwrite( p_data, 1, data_length, stream ); + if( n != data_length ) + goto exit; + } + status = PSA_SUCCESS; + +exit: + if( stream != NULL ) + { + int ret = fclose( stream ); + if( status == PSA_SUCCESS && ret != 0 ) + status = PSA_ERROR_INSUFFICIENT_STORAGE; + } + if( status == PSA_SUCCESS ) + { + if( rename_replace_existing( PSA_ITS_STORAGE_TEMP, filename ) != 0 ) + status = PSA_ERROR_STORAGE_FAILURE; + } + /* The temporary file may still exist, but only in failure cases where + * we're already reporting an error. So there's nothing we can do on + * failure. If the function succeeded, and in some error cases, the + * temporary file doesn't exist and so remove() is expected to fail. + * Thus we just ignore the return status of remove(). */ + (void) remove( PSA_ITS_STORAGE_TEMP ); + return( status ); +} + +psa_status_t psa_its_remove( psa_storage_uid_t uid ) +{ + char filename[PSA_ITS_STORAGE_FILENAME_LENGTH]; + FILE *stream; + psa_its_fill_filename( uid, filename ); + stream = fopen( filename, "rb" ); + if( stream == NULL ) + return( PSA_ERROR_DOES_NOT_EXIST ); + fclose( stream ); + if( remove( filename ) != 0 ) + return( PSA_ERROR_STORAGE_FAILURE ); + return( PSA_SUCCESS ); +} + +#endif /* MBEDTLS_PSA_ITS_FILE_C */ diff --git a/Externals/mbedtls/library/ripemd160.c b/Externals/mbedtls/library/ripemd160.c index bd25ada62cd8..aed7322cff5b 100644 --- a/Externals/mbedtls/library/ripemd160.c +++ b/Externals/mbedtls/library/ripemd160.c @@ -1,7 +1,7 @@ /* * RIPE MD-160 implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -25,16 +23,13 @@ * http://ehash.iaik.tugraz.at/wiki/RIPEMD-160 */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_RIPEMD160_C) #include "mbedtls/ripemd160.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -49,29 +44,6 @@ #if !defined(MBEDTLS_RIPEMD160_ALT) -/* - * 32-bit integer manipulation macros (little endian) - */ -#ifndef GET_UINT32_LE -#define GET_UINT32_LE(n,b,i) \ -{ \ - (n) = ( (uint32_t) (b)[(i) ] ) \ - | ( (uint32_t) (b)[(i) + 1] << 8 ) \ - | ( (uint32_t) (b)[(i) + 2] << 16 ) \ - | ( (uint32_t) (b)[(i) + 3] << 24 ); \ -} -#endif - -#ifndef PUT_UINT32_LE -#define PUT_UINT32_LE(n,b,i) \ -{ \ - (b)[(i) ] = (unsigned char) ( ( (n) ) & 0xFF ); \ - (b)[(i) + 1] = (unsigned char) ( ( (n) >> 8 ) & 0xFF ); \ - (b)[(i) + 2] = (unsigned char) ( ( (n) >> 16 ) & 0xFF ); \ - (b)[(i) + 3] = (unsigned char) ( ( (n) >> 24 ) & 0xFF ); \ -} -#endif - void mbedtls_ripemd160_init( mbedtls_ripemd160_context *ctx ) { memset( ctx, 0, sizeof( mbedtls_ripemd160_context ) ); @@ -122,68 +94,78 @@ void mbedtls_ripemd160_starts( mbedtls_ripemd160_context *ctx ) int mbedtls_internal_ripemd160_process( mbedtls_ripemd160_context *ctx, const unsigned char data[64] ) { - uint32_t A, B, C, D, E, Ap, Bp, Cp, Dp, Ep, X[16]; - - GET_UINT32_LE( X[ 0], data, 0 ); - GET_UINT32_LE( X[ 1], data, 4 ); - GET_UINT32_LE( X[ 2], data, 8 ); - GET_UINT32_LE( X[ 3], data, 12 ); - GET_UINT32_LE( X[ 4], data, 16 ); - GET_UINT32_LE( X[ 5], data, 20 ); - GET_UINT32_LE( X[ 6], data, 24 ); - GET_UINT32_LE( X[ 7], data, 28 ); - GET_UINT32_LE( X[ 8], data, 32 ); - GET_UINT32_LE( X[ 9], data, 36 ); - GET_UINT32_LE( X[10], data, 40 ); - GET_UINT32_LE( X[11], data, 44 ); - GET_UINT32_LE( X[12], data, 48 ); - GET_UINT32_LE( X[13], data, 52 ); - GET_UINT32_LE( X[14], data, 56 ); - GET_UINT32_LE( X[15], data, 60 ); - - A = Ap = ctx->state[0]; - B = Bp = ctx->state[1]; - C = Cp = ctx->state[2]; - D = Dp = ctx->state[3]; - E = Ep = ctx->state[4]; - -#define F1( x, y, z ) ( x ^ y ^ z ) -#define F2( x, y, z ) ( ( x & y ) | ( ~x & z ) ) -#define F3( x, y, z ) ( ( x | ~y ) ^ z ) -#define F4( x, y, z ) ( ( x & z ) | ( y & ~z ) ) -#define F5( x, y, z ) ( x ^ ( y | ~z ) ) - -#define S( x, n ) ( ( x << n ) | ( x >> (32 - n) ) ) - -#define P( a, b, c, d, e, r, s, f, k ) \ - a += f( b, c, d ) + X[r] + k; \ - a = S( a, s ) + e; \ - c = S( c, 10 ); - -#define P2( a, b, c, d, e, r, s, rp, sp ) \ - P( a, b, c, d, e, r, s, F, K ); \ - P( a ## p, b ## p, c ## p, d ## p, e ## p, rp, sp, Fp, Kp ); + struct + { + uint32_t A, B, C, D, E, Ap, Bp, Cp, Dp, Ep, X[16]; + } local; + + local.X[ 0] = MBEDTLS_GET_UINT32_LE( data, 0 ); + local.X[ 1] = MBEDTLS_GET_UINT32_LE( data, 4 ); + local.X[ 2] = MBEDTLS_GET_UINT32_LE( data, 8 ); + local.X[ 3] = MBEDTLS_GET_UINT32_LE( data, 12 ); + local.X[ 4] = MBEDTLS_GET_UINT32_LE( data, 16 ); + local.X[ 5] = MBEDTLS_GET_UINT32_LE( data, 20 ); + local.X[ 6] = MBEDTLS_GET_UINT32_LE( data, 24 ); + local.X[ 7] = MBEDTLS_GET_UINT32_LE( data, 28 ); + local.X[ 8] = MBEDTLS_GET_UINT32_LE( data, 32 ); + local.X[ 9] = MBEDTLS_GET_UINT32_LE( data, 36 ); + local.X[10] = MBEDTLS_GET_UINT32_LE( data, 40 ); + local.X[11] = MBEDTLS_GET_UINT32_LE( data, 44 ); + local.X[12] = MBEDTLS_GET_UINT32_LE( data, 48 ); + local.X[13] = MBEDTLS_GET_UINT32_LE( data, 52 ); + local.X[14] = MBEDTLS_GET_UINT32_LE( data, 56 ); + local.X[15] = MBEDTLS_GET_UINT32_LE( data, 60 ); + + local.A = local.Ap = ctx->state[0]; + local.B = local.Bp = ctx->state[1]; + local.C = local.Cp = ctx->state[2]; + local.D = local.Dp = ctx->state[3]; + local.E = local.Ep = ctx->state[4]; + +#define F1( x, y, z ) ( (x) ^ (y) ^ (z) ) +#define F2( x, y, z ) ( ( (x) & (y) ) | ( ~(x) & (z) ) ) +#define F3( x, y, z ) ( ( (x) | ~(y) ) ^ (z) ) +#define F4( x, y, z ) ( ( (x) & (z) ) | ( (y) & ~(z) ) ) +#define F5( x, y, z ) ( (x) ^ ( (y) | ~(z) ) ) + +#define S( x, n ) ( ( (x) << (n) ) | ( (x) >> (32 - (n)) ) ) + +#define P( a, b, c, d, e, r, s, f, k ) \ + do \ + { \ + (a) += f( (b), (c), (d) ) + local.X[r] + (k); \ + (a) = S( (a), (s) ) + (e); \ + (c) = S( (c), 10 ); \ + } while( 0 ) + +#define P2( a, b, c, d, e, r, s, rp, sp ) \ + do \ + { \ + P( (a), (b), (c), (d), (e), (r), (s), F, K ); \ + P( a ## p, b ## p, c ## p, d ## p, e ## p, \ + (rp), (sp), Fp, Kp ); \ + } while( 0 ) #define F F1 #define K 0x00000000 #define Fp F5 #define Kp 0x50A28BE6 - P2( A, B, C, D, E, 0, 11, 5, 8 ); - P2( E, A, B, C, D, 1, 14, 14, 9 ); - P2( D, E, A, B, C, 2, 15, 7, 9 ); - P2( C, D, E, A, B, 3, 12, 0, 11 ); - P2( B, C, D, E, A, 4, 5, 9, 13 ); - P2( A, B, C, D, E, 5, 8, 2, 15 ); - P2( E, A, B, C, D, 6, 7, 11, 15 ); - P2( D, E, A, B, C, 7, 9, 4, 5 ); - P2( C, D, E, A, B, 8, 11, 13, 7 ); - P2( B, C, D, E, A, 9, 13, 6, 7 ); - P2( A, B, C, D, E, 10, 14, 15, 8 ); - P2( E, A, B, C, D, 11, 15, 8, 11 ); - P2( D, E, A, B, C, 12, 6, 1, 14 ); - P2( C, D, E, A, B, 13, 7, 10, 14 ); - P2( B, C, D, E, A, 14, 9, 3, 12 ); - P2( A, B, C, D, E, 15, 8, 12, 6 ); + P2( local.A, local.B, local.C, local.D, local.E, 0, 11, 5, 8 ); + P2( local.E, local.A, local.B, local.C, local.D, 1, 14, 14, 9 ); + P2( local.D, local.E, local.A, local.B, local.C, 2, 15, 7, 9 ); + P2( local.C, local.D, local.E, local.A, local.B, 3, 12, 0, 11 ); + P2( local.B, local.C, local.D, local.E, local.A, 4, 5, 9, 13 ); + P2( local.A, local.B, local.C, local.D, local.E, 5, 8, 2, 15 ); + P2( local.E, local.A, local.B, local.C, local.D, 6, 7, 11, 15 ); + P2( local.D, local.E, local.A, local.B, local.C, 7, 9, 4, 5 ); + P2( local.C, local.D, local.E, local.A, local.B, 8, 11, 13, 7 ); + P2( local.B, local.C, local.D, local.E, local.A, 9, 13, 6, 7 ); + P2( local.A, local.B, local.C, local.D, local.E, 10, 14, 15, 8 ); + P2( local.E, local.A, local.B, local.C, local.D, 11, 15, 8, 11 ); + P2( local.D, local.E, local.A, local.B, local.C, 12, 6, 1, 14 ); + P2( local.C, local.D, local.E, local.A, local.B, 13, 7, 10, 14 ); + P2( local.B, local.C, local.D, local.E, local.A, 14, 9, 3, 12 ); + P2( local.A, local.B, local.C, local.D, local.E, 15, 8, 12, 6 ); #undef F #undef K #undef Fp @@ -193,22 +175,22 @@ int mbedtls_internal_ripemd160_process( mbedtls_ripemd160_context *ctx, #define K 0x5A827999 #define Fp F4 #define Kp 0x5C4DD124 - P2( E, A, B, C, D, 7, 7, 6, 9 ); - P2( D, E, A, B, C, 4, 6, 11, 13 ); - P2( C, D, E, A, B, 13, 8, 3, 15 ); - P2( B, C, D, E, A, 1, 13, 7, 7 ); - P2( A, B, C, D, E, 10, 11, 0, 12 ); - P2( E, A, B, C, D, 6, 9, 13, 8 ); - P2( D, E, A, B, C, 15, 7, 5, 9 ); - P2( C, D, E, A, B, 3, 15, 10, 11 ); - P2( B, C, D, E, A, 12, 7, 14, 7 ); - P2( A, B, C, D, E, 0, 12, 15, 7 ); - P2( E, A, B, C, D, 9, 15, 8, 12 ); - P2( D, E, A, B, C, 5, 9, 12, 7 ); - P2( C, D, E, A, B, 2, 11, 4, 6 ); - P2( B, C, D, E, A, 14, 7, 9, 15 ); - P2( A, B, C, D, E, 11, 13, 1, 13 ); - P2( E, A, B, C, D, 8, 12, 2, 11 ); + P2( local.E, local.A, local.B, local.C, local.D, 7, 7, 6, 9 ); + P2( local.D, local.E, local.A, local.B, local.C, 4, 6, 11, 13 ); + P2( local.C, local.D, local.E, local.A, local.B, 13, 8, 3, 15 ); + P2( local.B, local.C, local.D, local.E, local.A, 1, 13, 7, 7 ); + P2( local.A, local.B, local.C, local.D, local.E, 10, 11, 0, 12 ); + P2( local.E, local.A, local.B, local.C, local.D, 6, 9, 13, 8 ); + P2( local.D, local.E, local.A, local.B, local.C, 15, 7, 5, 9 ); + P2( local.C, local.D, local.E, local.A, local.B, 3, 15, 10, 11 ); + P2( local.B, local.C, local.D, local.E, local.A, 12, 7, 14, 7 ); + P2( local.A, local.B, local.C, local.D, local.E, 0, 12, 15, 7 ); + P2( local.E, local.A, local.B, local.C, local.D, 9, 15, 8, 12 ); + P2( local.D, local.E, local.A, local.B, local.C, 5, 9, 12, 7 ); + P2( local.C, local.D, local.E, local.A, local.B, 2, 11, 4, 6 ); + P2( local.B, local.C, local.D, local.E, local.A, 14, 7, 9, 15 ); + P2( local.A, local.B, local.C, local.D, local.E, 11, 13, 1, 13 ); + P2( local.E, local.A, local.B, local.C, local.D, 8, 12, 2, 11 ); #undef F #undef K #undef Fp @@ -218,22 +200,22 @@ int mbedtls_internal_ripemd160_process( mbedtls_ripemd160_context *ctx, #define K 0x6ED9EBA1 #define Fp F3 #define Kp 0x6D703EF3 - P2( D, E, A, B, C, 3, 11, 15, 9 ); - P2( C, D, E, A, B, 10, 13, 5, 7 ); - P2( B, C, D, E, A, 14, 6, 1, 15 ); - P2( A, B, C, D, E, 4, 7, 3, 11 ); - P2( E, A, B, C, D, 9, 14, 7, 8 ); - P2( D, E, A, B, C, 15, 9, 14, 6 ); - P2( C, D, E, A, B, 8, 13, 6, 6 ); - P2( B, C, D, E, A, 1, 15, 9, 14 ); - P2( A, B, C, D, E, 2, 14, 11, 12 ); - P2( E, A, B, C, D, 7, 8, 8, 13 ); - P2( D, E, A, B, C, 0, 13, 12, 5 ); - P2( C, D, E, A, B, 6, 6, 2, 14 ); - P2( B, C, D, E, A, 13, 5, 10, 13 ); - P2( A, B, C, D, E, 11, 12, 0, 13 ); - P2( E, A, B, C, D, 5, 7, 4, 7 ); - P2( D, E, A, B, C, 12, 5, 13, 5 ); + P2( local.D, local.E, local.A, local.B, local.C, 3, 11, 15, 9 ); + P2( local.C, local.D, local.E, local.A, local.B, 10, 13, 5, 7 ); + P2( local.B, local.C, local.D, local.E, local.A, 14, 6, 1, 15 ); + P2( local.A, local.B, local.C, local.D, local.E, 4, 7, 3, 11 ); + P2( local.E, local.A, local.B, local.C, local.D, 9, 14, 7, 8 ); + P2( local.D, local.E, local.A, local.B, local.C, 15, 9, 14, 6 ); + P2( local.C, local.D, local.E, local.A, local.B, 8, 13, 6, 6 ); + P2( local.B, local.C, local.D, local.E, local.A, 1, 15, 9, 14 ); + P2( local.A, local.B, local.C, local.D, local.E, 2, 14, 11, 12 ); + P2( local.E, local.A, local.B, local.C, local.D, 7, 8, 8, 13 ); + P2( local.D, local.E, local.A, local.B, local.C, 0, 13, 12, 5 ); + P2( local.C, local.D, local.E, local.A, local.B, 6, 6, 2, 14 ); + P2( local.B, local.C, local.D, local.E, local.A, 13, 5, 10, 13 ); + P2( local.A, local.B, local.C, local.D, local.E, 11, 12, 0, 13 ); + P2( local.E, local.A, local.B, local.C, local.D, 5, 7, 4, 7 ); + P2( local.D, local.E, local.A, local.B, local.C, 12, 5, 13, 5 ); #undef F #undef K #undef Fp @@ -243,22 +225,22 @@ int mbedtls_internal_ripemd160_process( mbedtls_ripemd160_context *ctx, #define K 0x8F1BBCDC #define Fp F2 #define Kp 0x7A6D76E9 - P2( C, D, E, A, B, 1, 11, 8, 15 ); - P2( B, C, D, E, A, 9, 12, 6, 5 ); - P2( A, B, C, D, E, 11, 14, 4, 8 ); - P2( E, A, B, C, D, 10, 15, 1, 11 ); - P2( D, E, A, B, C, 0, 14, 3, 14 ); - P2( C, D, E, A, B, 8, 15, 11, 14 ); - P2( B, C, D, E, A, 12, 9, 15, 6 ); - P2( A, B, C, D, E, 4, 8, 0, 14 ); - P2( E, A, B, C, D, 13, 9, 5, 6 ); - P2( D, E, A, B, C, 3, 14, 12, 9 ); - P2( C, D, E, A, B, 7, 5, 2, 12 ); - P2( B, C, D, E, A, 15, 6, 13, 9 ); - P2( A, B, C, D, E, 14, 8, 9, 12 ); - P2( E, A, B, C, D, 5, 6, 7, 5 ); - P2( D, E, A, B, C, 6, 5, 10, 15 ); - P2( C, D, E, A, B, 2, 12, 14, 8 ); + P2( local.C, local.D, local.E, local.A, local.B, 1, 11, 8, 15 ); + P2( local.B, local.C, local.D, local.E, local.A, 9, 12, 6, 5 ); + P2( local.A, local.B, local.C, local.D, local.E, 11, 14, 4, 8 ); + P2( local.E, local.A, local.B, local.C, local.D, 10, 15, 1, 11 ); + P2( local.D, local.E, local.A, local.B, local.C, 0, 14, 3, 14 ); + P2( local.C, local.D, local.E, local.A, local.B, 8, 15, 11, 14 ); + P2( local.B, local.C, local.D, local.E, local.A, 12, 9, 15, 6 ); + P2( local.A, local.B, local.C, local.D, local.E, 4, 8, 0, 14 ); + P2( local.E, local.A, local.B, local.C, local.D, 13, 9, 5, 6 ); + P2( local.D, local.E, local.A, local.B, local.C, 3, 14, 12, 9 ); + P2( local.C, local.D, local.E, local.A, local.B, 7, 5, 2, 12 ); + P2( local.B, local.C, local.D, local.E, local.A, 15, 6, 13, 9 ); + P2( local.A, local.B, local.C, local.D, local.E, 14, 8, 9, 12 ); + P2( local.E, local.A, local.B, local.C, local.D, 5, 6, 7, 5 ); + P2( local.D, local.E, local.A, local.B, local.C, 6, 5, 10, 15 ); + P2( local.C, local.D, local.E, local.A, local.B, 2, 12, 14, 8 ); #undef F #undef K #undef Fp @@ -268,33 +250,36 @@ int mbedtls_internal_ripemd160_process( mbedtls_ripemd160_context *ctx, #define K 0xA953FD4E #define Fp F1 #define Kp 0x00000000 - P2( B, C, D, E, A, 4, 9, 12, 8 ); - P2( A, B, C, D, E, 0, 15, 15, 5 ); - P2( E, A, B, C, D, 5, 5, 10, 12 ); - P2( D, E, A, B, C, 9, 11, 4, 9 ); - P2( C, D, E, A, B, 7, 6, 1, 12 ); - P2( B, C, D, E, A, 12, 8, 5, 5 ); - P2( A, B, C, D, E, 2, 13, 8, 14 ); - P2( E, A, B, C, D, 10, 12, 7, 6 ); - P2( D, E, A, B, C, 14, 5, 6, 8 ); - P2( C, D, E, A, B, 1, 12, 2, 13 ); - P2( B, C, D, E, A, 3, 13, 13, 6 ); - P2( A, B, C, D, E, 8, 14, 14, 5 ); - P2( E, A, B, C, D, 11, 11, 0, 15 ); - P2( D, E, A, B, C, 6, 8, 3, 13 ); - P2( C, D, E, A, B, 15, 5, 9, 11 ); - P2( B, C, D, E, A, 13, 6, 11, 11 ); + P2( local.B, local.C, local.D, local.E, local.A, 4, 9, 12, 8 ); + P2( local.A, local.B, local.C, local.D, local.E, 0, 15, 15, 5 ); + P2( local.E, local.A, local.B, local.C, local.D, 5, 5, 10, 12 ); + P2( local.D, local.E, local.A, local.B, local.C, 9, 11, 4, 9 ); + P2( local.C, local.D, local.E, local.A, local.B, 7, 6, 1, 12 ); + P2( local.B, local.C, local.D, local.E, local.A, 12, 8, 5, 5 ); + P2( local.A, local.B, local.C, local.D, local.E, 2, 13, 8, 14 ); + P2( local.E, local.A, local.B, local.C, local.D, 10, 12, 7, 6 ); + P2( local.D, local.E, local.A, local.B, local.C, 14, 5, 6, 8 ); + P2( local.C, local.D, local.E, local.A, local.B, 1, 12, 2, 13 ); + P2( local.B, local.C, local.D, local.E, local.A, 3, 13, 13, 6 ); + P2( local.A, local.B, local.C, local.D, local.E, 8, 14, 14, 5 ); + P2( local.E, local.A, local.B, local.C, local.D, 11, 11, 0, 15 ); + P2( local.D, local.E, local.A, local.B, local.C, 6, 8, 3, 13 ); + P2( local.C, local.D, local.E, local.A, local.B, 15, 5, 9, 11 ); + P2( local.B, local.C, local.D, local.E, local.A, 13, 6, 11, 11 ); #undef F #undef K #undef Fp #undef Kp - C = ctx->state[1] + C + Dp; - ctx->state[1] = ctx->state[2] + D + Ep; - ctx->state[2] = ctx->state[3] + E + Ap; - ctx->state[3] = ctx->state[4] + A + Bp; - ctx->state[4] = ctx->state[0] + B + Cp; - ctx->state[0] = C; + local.C = ctx->state[1] + local.C + local.Dp; + ctx->state[1] = ctx->state[2] + local.D + local.Ep; + ctx->state[2] = ctx->state[3] + local.E + local.Ap; + ctx->state[3] = ctx->state[4] + local.A + local.Bp; + ctx->state[4] = ctx->state[0] + local.B + local.Cp; + ctx->state[0] = local.C; + + /* Zeroise variables to clear sensitive data from memory. */ + mbedtls_platform_zeroize( &local, sizeof( local ) ); return( 0 ); } @@ -315,7 +300,7 @@ int mbedtls_ripemd160_update_ret( mbedtls_ripemd160_context *ctx, const unsigned char *input, size_t ilen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t fill; uint32_t left; @@ -383,7 +368,7 @@ static const unsigned char ripemd160_padding[64] = int mbedtls_ripemd160_finish_ret( mbedtls_ripemd160_context *ctx, unsigned char output[20] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; uint32_t last, padn; uint32_t high, low; unsigned char msglen[8]; @@ -392,8 +377,8 @@ int mbedtls_ripemd160_finish_ret( mbedtls_ripemd160_context *ctx, | ( ctx->total[1] << 3 ); low = ( ctx->total[0] << 3 ); - PUT_UINT32_LE( low, msglen, 0 ); - PUT_UINT32_LE( high, msglen, 4 ); + MBEDTLS_PUT_UINT32_LE( low, msglen, 0 ); + MBEDTLS_PUT_UINT32_LE( high, msglen, 4 ); last = ctx->total[0] & 0x3F; padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last ); @@ -406,11 +391,11 @@ int mbedtls_ripemd160_finish_ret( mbedtls_ripemd160_context *ctx, if( ret != 0 ) return( ret ); - PUT_UINT32_LE( ctx->state[0], output, 0 ); - PUT_UINT32_LE( ctx->state[1], output, 4 ); - PUT_UINT32_LE( ctx->state[2], output, 8 ); - PUT_UINT32_LE( ctx->state[3], output, 12 ); - PUT_UINT32_LE( ctx->state[4], output, 16 ); + MBEDTLS_PUT_UINT32_LE( ctx->state[0], output, 0 ); + MBEDTLS_PUT_UINT32_LE( ctx->state[1], output, 4 ); + MBEDTLS_PUT_UINT32_LE( ctx->state[2], output, 8 ); + MBEDTLS_PUT_UINT32_LE( ctx->state[3], output, 12 ); + MBEDTLS_PUT_UINT32_LE( ctx->state[4], output, 16 ); return( 0 ); } @@ -432,7 +417,7 @@ int mbedtls_ripemd160_ret( const unsigned char *input, size_t ilen, unsigned char output[20] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ripemd160_context ctx; mbedtls_ripemd160_init( &ctx ); @@ -476,8 +461,7 @@ static const unsigned char ripemd160_test_str[TESTS][81] = { "abcdefghijklmnopqrstuvwxyz" }, { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" }, { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" }, - { "12345678901234567890123456789012345678901234567890123456789012" - "345678901234567890" }, + { "12345678901234567890123456789012345678901234567890123456789012345678901234567890" }, }; static const size_t ripemd160_test_strlen[TESTS] = diff --git a/Externals/mbedtls/library/rsa.c b/Externals/mbedtls/library/rsa.c index af1a8785991e..8a5d40ff1efb 100644 --- a/Externals/mbedtls/library/rsa.c +++ b/Externals/mbedtls/library/rsa.c @@ -1,7 +1,7 @@ /* * The RSA public-key cryptosystem * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -37,11 +35,7 @@ * */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_RSA_C) @@ -49,6 +43,9 @@ #include "mbedtls/rsa_internal.h" #include "mbedtls/oid.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" +#include "constant_time_internal.h" +#include "mbedtls/constant_time.h" #include @@ -56,7 +53,7 @@ #include "mbedtls/md.h" #endif -#if defined(MBEDTLS_PKCS1_V15) && !defined(__OpenBSD__) +#if defined(MBEDTLS_PKCS1_V15) && !defined(__OpenBSD__) && !defined(__NetBSD__) #include #endif @@ -77,28 +74,12 @@ #define RSA_VALIDATE( cond ) \ MBEDTLS_INTERNAL_VALIDATE( cond ) -#if defined(MBEDTLS_PKCS1_V15) -/* constant-time buffer comparison */ -static inline int mbedtls_safer_memcmp( const void *a, const void *b, size_t n ) -{ - size_t i; - const unsigned char *A = (const unsigned char *) a; - const unsigned char *B = (const unsigned char *) b; - unsigned char diff = 0; - - for( i = 0; i < n; i++ ) - diff |= A[i] ^ B[i]; - - return( diff ); -} -#endif /* MBEDTLS_PKCS1_V15 */ - int mbedtls_rsa_import( mbedtls_rsa_context *ctx, const mbedtls_mpi *N, const mbedtls_mpi *P, const mbedtls_mpi *Q, const mbedtls_mpi *D, const mbedtls_mpi *E ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; RSA_VALIDATE_RET( ctx != NULL ); if( ( N != NULL && ( ret = mbedtls_mpi_copy( &ctx->N, N ) ) != 0 ) || @@ -107,7 +88,7 @@ int mbedtls_rsa_import( mbedtls_rsa_context *ctx, ( D != NULL && ( ret = mbedtls_mpi_copy( &ctx->D, D ) ) != 0 ) || ( E != NULL && ( ret = mbedtls_mpi_copy( &ctx->E, E ) ) != 0 ) ) { - return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_RSA_BAD_INPUT_DATA, ret ) ); } if( N != NULL ) @@ -147,7 +128,7 @@ int mbedtls_rsa_import_raw( mbedtls_rsa_context *ctx, cleanup: if( ret != 0 ) - return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_RSA_BAD_INPUT_DATA, ret ) ); return( 0 ); } @@ -249,6 +230,9 @@ int mbedtls_rsa_complete( mbedtls_rsa_context *ctx ) { int ret = 0; int have_N, have_P, have_Q, have_D, have_E; +#if !defined(MBEDTLS_RSA_NO_CRT) + int have_DP, have_DQ, have_QP; +#endif int n_missing, pq_missing, d_missing, is_pub, is_priv; RSA_VALIDATE_RET( ctx != NULL ); @@ -259,6 +243,12 @@ int mbedtls_rsa_complete( mbedtls_rsa_context *ctx ) have_D = ( mbedtls_mpi_cmp_int( &ctx->D, 0 ) != 0 ); have_E = ( mbedtls_mpi_cmp_int( &ctx->E, 0 ) != 0 ); +#if !defined(MBEDTLS_RSA_NO_CRT) + have_DP = ( mbedtls_mpi_cmp_int( &ctx->DP, 0 ) != 0 ); + have_DQ = ( mbedtls_mpi_cmp_int( &ctx->DQ, 0 ) != 0 ); + have_QP = ( mbedtls_mpi_cmp_int( &ctx->QP, 0 ) != 0 ); +#endif + /* * Check whether provided parameters are enough * to deduce all others. The following incomplete @@ -289,7 +279,7 @@ int mbedtls_rsa_complete( mbedtls_rsa_context *ctx ) if( ( ret = mbedtls_mpi_mul_mpi( &ctx->N, &ctx->P, &ctx->Q ) ) != 0 ) { - return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_RSA_BAD_INPUT_DATA, ret ) ); } ctx->len = mbedtls_mpi_size( &ctx->N ); @@ -304,7 +294,7 @@ int mbedtls_rsa_complete( mbedtls_rsa_context *ctx ) ret = mbedtls_rsa_deduce_primes( &ctx->N, &ctx->E, &ctx->D, &ctx->P, &ctx->Q ); if( ret != 0 ) - return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_RSA_BAD_INPUT_DATA, ret ) ); } else if( d_missing ) @@ -314,7 +304,7 @@ int mbedtls_rsa_complete( mbedtls_rsa_context *ctx ) &ctx->E, &ctx->D ) ) != 0 ) { - return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_RSA_BAD_INPUT_DATA, ret ) ); } } @@ -324,12 +314,12 @@ int mbedtls_rsa_complete( mbedtls_rsa_context *ctx ) */ #if !defined(MBEDTLS_RSA_NO_CRT) - if( is_priv ) + if( is_priv && ! ( have_DP && have_DQ && have_QP ) ) { ret = mbedtls_rsa_deduce_crt( &ctx->P, &ctx->Q, &ctx->D, &ctx->DP, &ctx->DQ, &ctx->QP ); if( ret != 0 ) - return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_RSA_BAD_INPUT_DATA, ret ) ); } #endif /* MBEDTLS_RSA_NO_CRT */ @@ -392,7 +382,7 @@ int mbedtls_rsa_export( const mbedtls_rsa_context *ctx, mbedtls_mpi *N, mbedtls_mpi *P, mbedtls_mpi *Q, mbedtls_mpi *D, mbedtls_mpi *E ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; int is_priv; RSA_VALIDATE_RET( ctx != NULL ); @@ -436,7 +426,7 @@ int mbedtls_rsa_export( const mbedtls_rsa_context *ctx, int mbedtls_rsa_export_crt( const mbedtls_rsa_context *ctx, mbedtls_mpi *DP, mbedtls_mpi *DQ, mbedtls_mpi *QP ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; int is_priv; RSA_VALIDATE_RET( ctx != NULL ); @@ -457,13 +447,13 @@ int mbedtls_rsa_export_crt( const mbedtls_rsa_context *ctx, ( DQ != NULL && ( ret = mbedtls_mpi_copy( DQ, &ctx->DQ ) ) != 0 ) || ( QP != NULL && ( ret = mbedtls_mpi_copy( QP, &ctx->QP ) ) != 0 ) ) { - return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_RSA_BAD_INPUT_DATA, ret ) ); } #else if( ( ret = mbedtls_rsa_deduce_crt( &ctx->P, &ctx->Q, &ctx->D, DP, DQ, QP ) ) != 0 ) { - return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_RSA_BAD_INPUT_DATA, ret ) ); } #endif @@ -486,6 +476,9 @@ void mbedtls_rsa_init( mbedtls_rsa_context *ctx, mbedtls_rsa_set_padding( ctx, padding, hash_id ); #if defined(MBEDTLS_THREADING_C) + /* Set ctx->ver to nonzero to indicate that the mutex has been + * initialized and will need to be freed. */ + ctx->ver = 1; mbedtls_mutex_init( &ctx->mutex ); #endif } @@ -527,15 +520,12 @@ int mbedtls_rsa_gen_key( mbedtls_rsa_context *ctx, void *p_rng, unsigned int nbits, int exponent ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_mpi H, G, L; int prime_quality = 0; RSA_VALIDATE_RET( ctx != NULL ); RSA_VALIDATE_RET( f_rng != NULL ); - if( nbits < 128 || exponent < 3 || nbits % 2 != 0 ) - return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA ); - /* * If the modulus is 1024 bit long or shorter, then the security strength of * the RSA algorithm is less than or equal to 80 bits and therefore an error @@ -548,6 +538,12 @@ int mbedtls_rsa_gen_key( mbedtls_rsa_context *ctx, mbedtls_mpi_init( &G ); mbedtls_mpi_init( &L ); + if( nbits < 128 || exponent < 3 || nbits % 2 != 0 ) + { + ret = MBEDTLS_ERR_RSA_BAD_INPUT_DATA; + goto cleanup; + } + /* * find primes P and Q with Q < P so that: * 1. |P-Q| > 2^( nbits / 2 - 100 ) @@ -625,7 +621,10 @@ int mbedtls_rsa_gen_key( mbedtls_rsa_context *ctx, if( ret != 0 ) { mbedtls_rsa_free( ctx ); - return( MBEDTLS_ERR_RSA_KEY_GEN_FAILED + ret ); + + if( ( -ret & ~0x7f ) == 0 ) + ret = MBEDTLS_ERROR_ADD( MBEDTLS_ERR_RSA_KEY_GEN_FAILED, ret ); + return( ret ); } return( 0 ); @@ -719,7 +718,7 @@ int mbedtls_rsa_public( mbedtls_rsa_context *ctx, const unsigned char *input, unsigned char *output ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t olen; mbedtls_mpi T; RSA_VALIDATE_RET( ctx != NULL ); @@ -757,7 +756,7 @@ int mbedtls_rsa_public( mbedtls_rsa_context *ctx, mbedtls_mpi_free( &T ); if( ret != 0 ) - return( MBEDTLS_ERR_RSA_PUBLIC_FAILED + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_RSA_PUBLIC_FAILED, ret ) ); return( 0 ); } @@ -772,6 +771,9 @@ static int rsa_prepare_blinding( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { int ret, count = 0; + mbedtls_mpi R; + + mbedtls_mpi_init( &R ); if( ctx->Vf.p != NULL ) { @@ -787,18 +789,40 @@ static int rsa_prepare_blinding( mbedtls_rsa_context *ctx, /* Unblinding value: Vf = random number, invertible mod N */ do { if( count++ > 10 ) - return( MBEDTLS_ERR_RSA_RNG_FAILED ); + { + ret = MBEDTLS_ERR_RSA_RNG_FAILED; + goto cleanup; + } MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( &ctx->Vf, ctx->len - 1, f_rng, p_rng ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_gcd( &ctx->Vi, &ctx->Vf, &ctx->N ) ); - } while( mbedtls_mpi_cmp_int( &ctx->Vi, 1 ) != 0 ); - /* Blinding value: Vi = Vf^(-e) mod N */ - MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( &ctx->Vi, &ctx->Vf, &ctx->N ) ); + /* Compute Vf^-1 as R * (R Vf)^-1 to avoid leaks from inv_mod. */ + MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( &R, ctx->len - 1, f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &ctx->Vi, &ctx->Vf, &R ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &ctx->Vi, &ctx->Vi, &ctx->N ) ); + + /* At this point, Vi is invertible mod N if and only if both Vf and R + * are invertible mod N. If one of them isn't, we don't need to know + * which one, we just loop and choose new values for both of them. + * (Each iteration succeeds with overwhelming probability.) */ + ret = mbedtls_mpi_inv_mod( &ctx->Vi, &ctx->Vi, &ctx->N ); + if( ret != 0 && ret != MBEDTLS_ERR_MPI_NOT_ACCEPTABLE ) + goto cleanup; + + } while( ret == MBEDTLS_ERR_MPI_NOT_ACCEPTABLE ); + + /* Finish the computation of Vf^-1 = R * (R Vf)^-1 */ + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &ctx->Vi, &ctx->Vi, &R ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &ctx->Vi, &ctx->Vi, &ctx->N ) ); + + /* Blinding value: Vi = Vf^(-e) mod N + * (Vi already contains Vf^-1 at this point) */ MBEDTLS_MPI_CHK( mbedtls_mpi_exp_mod( &ctx->Vi, &ctx->Vi, &ctx->E, &ctx->N, &ctx->RN ) ); cleanup: + mbedtls_mpi_free( &R ); + return( ret ); } @@ -832,7 +856,7 @@ int mbedtls_rsa_private( mbedtls_rsa_context *ctx, const unsigned char *input, unsigned char *output ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t olen; /* Temporary holding the result */ @@ -1047,10 +1071,10 @@ int mbedtls_rsa_private( mbedtls_rsa_context *ctx, mbedtls_mpi_free( &C ); mbedtls_mpi_free( &I ); - if( ret != 0 ) - return( MBEDTLS_ERR_RSA_PRIVATE_FAILED + ret ); + if( ret != 0 && ret >= -0x007f ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_RSA_PRIVATE_FAILED, ret ) ); - return( 0 ); + return( ret ); } #if defined(MBEDTLS_PKCS1_V21) @@ -1125,7 +1149,7 @@ int mbedtls_rsa_rsaes_oaep_encrypt( mbedtls_rsa_context *ctx, unsigned char *output ) { size_t olen; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *p = output; unsigned int hlen; const mbedtls_md_info_t *md_info; @@ -1135,7 +1159,7 @@ int mbedtls_rsa_rsaes_oaep_encrypt( mbedtls_rsa_context *ctx, RSA_VALIDATE_RET( mode == MBEDTLS_RSA_PRIVATE || mode == MBEDTLS_RSA_PUBLIC ); RSA_VALIDATE_RET( output != NULL ); - RSA_VALIDATE_RET( input != NULL ); + RSA_VALIDATE_RET( ilen == 0 || input != NULL ); RSA_VALIDATE_RET( label_len == 0 || label != NULL ); if( mode == MBEDTLS_RSA_PRIVATE && ctx->padding != MBEDTLS_RSA_PKCS_V21 ) @@ -1161,7 +1185,7 @@ int mbedtls_rsa_rsaes_oaep_encrypt( mbedtls_rsa_context *ctx, /* Generate a random octet string seed */ if( ( ret = f_rng( p_rng, p, hlen ) ) != 0 ) - return( MBEDTLS_ERR_RSA_RNG_FAILED + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_RSA_RNG_FAILED, ret ) ); p += hlen; @@ -1171,7 +1195,8 @@ int mbedtls_rsa_rsaes_oaep_encrypt( mbedtls_rsa_context *ctx, p += hlen; p += olen - 2 * hlen - 2 - ilen; *p++ = 1; - memcpy( p, input, ilen ); + if( ilen != 0 ) + memcpy( p, input, ilen ); mbedtls_md_init( &md_ctx ); if( ( ret = mbedtls_md_setup( &md_ctx, md_info, 0 ) ) != 0 ) @@ -1211,14 +1236,14 @@ int mbedtls_rsa_rsaes_pkcs1_v15_encrypt( mbedtls_rsa_context *ctx, unsigned char *output ) { size_t nb_pad, olen; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *p = output; RSA_VALIDATE_RET( ctx != NULL ); RSA_VALIDATE_RET( mode == MBEDTLS_RSA_PRIVATE || mode == MBEDTLS_RSA_PUBLIC ); RSA_VALIDATE_RET( output != NULL ); - RSA_VALIDATE_RET( input != NULL ); + RSA_VALIDATE_RET( ilen == 0 || input != NULL ); if( mode == MBEDTLS_RSA_PRIVATE && ctx->padding != MBEDTLS_RSA_PKCS_V15 ) return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA ); @@ -1249,7 +1274,7 @@ int mbedtls_rsa_rsaes_pkcs1_v15_encrypt( mbedtls_rsa_context *ctx, /* Check if RNG failed to generate data */ if( rng_dl == 0 || ret != 0 ) - return( MBEDTLS_ERR_RSA_RNG_FAILED + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_RSA_RNG_FAILED, ret ) ); p++; } @@ -1263,7 +1288,8 @@ int mbedtls_rsa_rsaes_pkcs1_v15_encrypt( mbedtls_rsa_context *ctx, } *p++ = 0; - memcpy( p, input, ilen ); + if( ilen != 0 ) + memcpy( p, input, ilen ); return( ( mode == MBEDTLS_RSA_PUBLIC ) ? mbedtls_rsa_public( ctx, output, output ) @@ -1285,7 +1311,7 @@ int mbedtls_rsa_pkcs1_encrypt( mbedtls_rsa_context *ctx, RSA_VALIDATE_RET( mode == MBEDTLS_RSA_PRIVATE || mode == MBEDTLS_RSA_PUBLIC ); RSA_VALIDATE_RET( output != NULL ); - RSA_VALIDATE_RET( input != NULL ); + RSA_VALIDATE_RET( ilen == 0 || input != NULL ); switch( ctx->padding ) { @@ -1320,7 +1346,7 @@ int mbedtls_rsa_rsaes_oaep_decrypt( mbedtls_rsa_context *ctx, unsigned char *output, size_t output_max_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t ilen, i, pad_len; unsigned char *p, bad, pad_done; unsigned char buf[MBEDTLS_MPI_MAX_SIZE]; @@ -1441,7 +1467,8 @@ int mbedtls_rsa_rsaes_oaep_decrypt( mbedtls_rsa_context *ctx, } *olen = ilen - (p - buf); - memcpy( output, p, *olen ); + if( *olen != 0 ) + memcpy( output, p, *olen ); ret = 0; cleanup: @@ -1453,126 +1480,21 @@ int mbedtls_rsa_rsaes_oaep_decrypt( mbedtls_rsa_context *ctx, #endif /* MBEDTLS_PKCS1_V21 */ #if defined(MBEDTLS_PKCS1_V15) -/** Turn zero-or-nonzero into zero-or-all-bits-one, without branches. - * - * \param value The value to analyze. - * \return Zero if \p value is zero, otherwise all-bits-one. - */ -static unsigned all_or_nothing_int( unsigned value ) -{ - /* MSVC has a warning about unary minus on unsigned, but this is - * well-defined and precisely what we want to do here */ -#if defined(_MSC_VER) -#pragma warning( push ) -#pragma warning( disable : 4146 ) -#endif - return( - ( ( value | - value ) >> ( sizeof( value ) * 8 - 1 ) ) ); -#if defined(_MSC_VER) -#pragma warning( pop ) -#endif -} - -/** Check whether a size is out of bounds, without branches. - * - * This is equivalent to `size > max`, but is likely to be compiled to - * to code using bitwise operation rather than a branch. - * - * \param size Size to check. - * \param max Maximum desired value for \p size. - * \return \c 0 if `size <= max`. - * \return \c 1 if `size > max`. - */ -static unsigned size_greater_than( size_t size, size_t max ) -{ - /* Return the sign bit (1 for negative) of (max - size). */ - return( ( max - size ) >> ( sizeof( size_t ) * 8 - 1 ) ); -} - -/** Choose between two integer values, without branches. - * - * This is equivalent to `cond ? if1 : if0`, but is likely to be compiled - * to code using bitwise operation rather than a branch. - * - * \param cond Condition to test. - * \param if1 Value to use if \p cond is nonzero. - * \param if0 Value to use if \p cond is zero. - * \return \c if1 if \p cond is nonzero, otherwise \c if0. - */ -static unsigned if_int( unsigned cond, unsigned if1, unsigned if0 ) -{ - unsigned mask = all_or_nothing_int( cond ); - return( ( mask & if1 ) | (~mask & if0 ) ); -} - -/** Shift some data towards the left inside a buffer without leaking - * the length of the data through side channels. - * - * `mem_move_to_left(start, total, offset)` is functionally equivalent to - * ``` - * memmove(start, start + offset, total - offset); - * memset(start + offset, 0, total - offset); - * ``` - * but it strives to use a memory access pattern (and thus total timing) - * that does not depend on \p offset. This timing independence comes at - * the expense of performance. - * - * \param start Pointer to the start of the buffer. - * \param total Total size of the buffer. - * \param offset Offset from which to copy \p total - \p offset bytes. - */ -static void mem_move_to_left( void *start, - size_t total, - size_t offset ) -{ - volatile unsigned char *buf = start; - size_t i, n; - if( total == 0 ) - return; - for( i = 0; i < total; i++ ) - { - unsigned no_op = size_greater_than( total - offset, i ); - /* The first `total - offset` passes are a no-op. The last - * `offset` passes shift the data one byte to the left and - * zero out the last byte. */ - for( n = 0; n < total - 1; n++ ) - { - unsigned char current = buf[n]; - unsigned char next = buf[n+1]; - buf[n] = if_int( no_op, current, next ); - } - buf[total-1] = if_int( no_op, buf[total-1], 0 ); - } -} - /* * Implementation of the PKCS#1 v2.1 RSAES-PKCS1-V1_5-DECRYPT function */ int mbedtls_rsa_rsaes_pkcs1_v15_decrypt( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, - int mode, size_t *olen, + int mode, + size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len ) { - int ret; - size_t ilen, i, plaintext_max_size; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t ilen; unsigned char buf[MBEDTLS_MPI_MAX_SIZE]; - /* The following variables take sensitive values: their value must - * not leak into the observable behavior of the function other than - * the designated outputs (output, olen, return value). Otherwise - * this would open the execution of the function to - * side-channel-based variants of the Bleichenbacher padding oracle - * attack. Potential side channels include overall timing, memory - * access patterns (especially visible to an adversary who has access - * to a shared memory cache), and branches (especially visible to - * an adversary who has access to a shared code cache or to a shared - * branch predictor). */ - size_t pad_count = 0; - unsigned bad = 0; - unsigned char pad_done = 0; - size_t plaintext_size = 0; - unsigned output_too_large; RSA_VALIDATE_RET( ctx != NULL ); RSA_VALIDATE_RET( mode == MBEDTLS_RSA_PRIVATE || @@ -1582,9 +1504,6 @@ int mbedtls_rsa_rsaes_pkcs1_v15_decrypt( mbedtls_rsa_context *ctx, RSA_VALIDATE_RET( olen != NULL ); ilen = ctx->len; - plaintext_max_size = ( output_max_len > ilen - 11 ? - ilen - 11 : - output_max_len ); if( mode == MBEDTLS_RSA_PRIVATE && ctx->padding != MBEDTLS_RSA_PKCS_V15 ) return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA ); @@ -1599,109 +1518,8 @@ int mbedtls_rsa_rsaes_pkcs1_v15_decrypt( mbedtls_rsa_context *ctx, if( ret != 0 ) goto cleanup; - /* Check and get padding length in constant time and constant - * memory trace. The first byte must be 0. */ - bad |= buf[0]; - - if( mode == MBEDTLS_RSA_PRIVATE ) - { - /* Decode EME-PKCS1-v1_5 padding: 0x00 || 0x02 || PS || 0x00 - * where PS must be at least 8 nonzero bytes. */ - bad |= buf[1] ^ MBEDTLS_RSA_CRYPT; - - /* Read the whole buffer. Set pad_done to nonzero if we find - * the 0x00 byte and remember the padding length in pad_count. */ - for( i = 2; i < ilen; i++ ) - { - pad_done |= ((buf[i] | (unsigned char)-buf[i]) >> 7) ^ 1; - pad_count += ((pad_done | (unsigned char)-pad_done) >> 7) ^ 1; - } - } - else - { - /* Decode EMSA-PKCS1-v1_5 padding: 0x00 || 0x01 || PS || 0x00 - * where PS must be at least 8 bytes with the value 0xFF. */ - bad |= buf[1] ^ MBEDTLS_RSA_SIGN; - - /* Read the whole buffer. Set pad_done to nonzero if we find - * the 0x00 byte and remember the padding length in pad_count. - * If there's a non-0xff byte in the padding, the padding is bad. */ - for( i = 2; i < ilen; i++ ) - { - pad_done |= if_int( buf[i], 0, 1 ); - pad_count += if_int( pad_done, 0, 1 ); - bad |= if_int( pad_done, 0, buf[i] ^ 0xFF ); - } - } - - /* If pad_done is still zero, there's no data, only unfinished padding. */ - bad |= if_int( pad_done, 0, 1 ); - - /* There must be at least 8 bytes of padding. */ - bad |= size_greater_than( 8, pad_count ); - - /* If the padding is valid, set plaintext_size to the number of - * remaining bytes after stripping the padding. If the padding - * is invalid, avoid leaking this fact through the size of the - * output: use the maximum message size that fits in the output - * buffer. Do it without branches to avoid leaking the padding - * validity through timing. RSA keys are small enough that all the - * size_t values involved fit in unsigned int. */ - plaintext_size = if_int( bad, - (unsigned) plaintext_max_size, - (unsigned) ( ilen - pad_count - 3 ) ); - - /* Set output_too_large to 0 if the plaintext fits in the output - * buffer and to 1 otherwise. */ - output_too_large = size_greater_than( plaintext_size, - plaintext_max_size ); - - /* Set ret without branches to avoid timing attacks. Return: - * - INVALID_PADDING if the padding is bad (bad != 0). - * - OUTPUT_TOO_LARGE if the padding is good but the decrypted - * plaintext does not fit in the output buffer. - * - 0 if the padding is correct. */ - ret = - (int) if_int( bad, - MBEDTLS_ERR_RSA_INVALID_PADDING, - if_int( output_too_large, - MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE, - 0 ) ); - - /* If the padding is bad or the plaintext is too large, zero the - * data that we're about to copy to the output buffer. - * We need to copy the same amount of data - * from the same buffer whether the padding is good or not to - * avoid leaking the padding validity through overall timing or - * through memory or cache access patterns. */ - bad = all_or_nothing_int( bad | output_too_large ); - for( i = 11; i < ilen; i++ ) - buf[i] &= ~bad; - - /* If the plaintext is too large, truncate it to the buffer size. - * Copy anyway to avoid revealing the length through timing, because - * revealing the length is as bad as revealing the padding validity - * for a Bleichenbacher attack. */ - plaintext_size = if_int( output_too_large, - (unsigned) plaintext_max_size, - (unsigned) plaintext_size ); - - /* Move the plaintext to the leftmost position where it can start in - * the working buffer, i.e. make it start plaintext_max_size from - * the end of the buffer. Do this with a memory access trace that - * does not depend on the plaintext size. After this move, the - * starting location of the plaintext is no longer sensitive - * information. */ - mem_move_to_left( buf + ilen - plaintext_max_size, - plaintext_max_size, - plaintext_max_size - plaintext_size ); - - /* Finally copy the decrypted plaintext plus trailing zeros - * into the output buffer. */ - memcpy( output, buf + ilen - plaintext_max_size, plaintext_max_size ); - - /* Report the amount of data we copied to the output buffer. In case - * of errors (bad padding or output too large), the value of *olen - * when this function returns is not specified. Making it equivalent - * to the good case limits the risks of leaking the padding validity. */ - *olen = plaintext_size; + ret = mbedtls_ct_rsaes_pkcs1_v15_unpadding( mode, buf, ilen, + output, output_max_len, olen ); cleanup: mbedtls_platform_zeroize( buf, sizeof( buf ) ); @@ -1749,23 +1567,21 @@ int mbedtls_rsa_pkcs1_decrypt( mbedtls_rsa_context *ctx, } #if defined(MBEDTLS_PKCS1_V21) -/* - * Implementation of the PKCS#1 v2.1 RSASSA-PSS-SIGN function - */ -int mbedtls_rsa_rsassa_pss_sign( mbedtls_rsa_context *ctx, +static int rsa_rsassa_pss_sign( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, + int saltlen, unsigned char *sig ) { size_t olen; unsigned char *p = sig; - unsigned char salt[MBEDTLS_MD_MAX_SIZE]; + unsigned char *salt = NULL; size_t slen, min_slen, hlen, offset = 0; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t msb; const mbedtls_md_info_t *md_info; mbedtls_md_context_t md_ctx; @@ -1801,31 +1617,44 @@ int mbedtls_rsa_rsassa_pss_sign( mbedtls_rsa_context *ctx, hlen = mbedtls_md_get_size( md_info ); - /* Calculate the largest possible salt length. Normally this is the hash - * length, which is the maximum length the salt can have. If there is not - * enough room, use the maximum salt length that fits. The constraint is - * that the hash length plus the salt length plus 2 bytes must be at most - * the key length. This complies with FIPS 186-4 §5.5 (e) and RFC 8017 - * (PKCS#1 v2.2) §9.1.1 step 3. */ - min_slen = hlen - 2; - if( olen < hlen + min_slen + 2 ) + if (saltlen == MBEDTLS_RSA_SALT_LEN_ANY) + { + /* Calculate the largest possible salt length, up to the hash size. + * Normally this is the hash length, which is the maximum salt length + * according to FIPS 185-4 §5.5 (e) and common practice. If there is not + * enough room, use the maximum salt length that fits. The constraint is + * that the hash length plus the salt length plus 2 bytes must be at most + * the key length. This complies with FIPS 186-4 §5.5 (e) and RFC 8017 + * (PKCS#1 v2.2) §9.1.1 step 3. */ + min_slen = hlen - 2; + if( olen < hlen + min_slen + 2 ) + return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA ); + else if( olen >= hlen + hlen + 2 ) + slen = hlen; + else + slen = olen - hlen - 2; + } + else if ( (saltlen < 0) || (saltlen + hlen + 2 > olen) ) + { return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA ); - else if( olen >= hlen + hlen + 2 ) - slen = hlen; + } else - slen = olen - hlen - 2; + { + slen = (size_t) saltlen; + } memset( sig, 0, olen ); - /* Generate salt of length slen */ - if( ( ret = f_rng( p_rng, salt, slen ) ) != 0 ) - return( MBEDTLS_ERR_RSA_RNG_FAILED + ret ); - /* Note: EMSA-PSS encoding is over the length of N - 1 bits */ msb = mbedtls_mpi_bitlen( &ctx->N ) - 1; p += olen - hlen - slen - 2; *p++ = 0x01; - memcpy( p, salt, slen ); + + /* Generate salt of length slen in place in the encoded message */ + salt = p; + if( ( ret = f_rng( p_rng, salt, slen ) ) != 0 ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_RSA_RNG_FAILED, ret ) ); + p += slen; mbedtls_md_init( &md_ctx ); @@ -1859,8 +1688,6 @@ int mbedtls_rsa_rsassa_pss_sign( mbedtls_rsa_context *ctx, p += hlen; *p++ = 0xBC; - mbedtls_platform_zeroize( salt, sizeof( salt ) ); - exit: mbedtls_md_free( &md_ctx ); @@ -1871,6 +1698,40 @@ int mbedtls_rsa_rsassa_pss_sign( mbedtls_rsa_context *ctx, ? mbedtls_rsa_public( ctx, sig, sig ) : mbedtls_rsa_private( ctx, f_rng, p_rng, sig, sig ) ); } + +/* + * Implementation of the PKCS#1 v2.1 RSASSA-PSS-SIGN function with + * the option to pass in the salt length. + */ +int mbedtls_rsa_rsassa_pss_sign_ext( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + mbedtls_md_type_t md_alg, + unsigned int hashlen, + const unsigned char *hash, + int saltlen, + unsigned char *sig ) +{ + return rsa_rsassa_pss_sign( ctx, f_rng, p_rng, MBEDTLS_RSA_PRIVATE, md_alg, + hashlen, hash, saltlen, sig ); +} + + +/* + * Implementation of the PKCS#1 v2.1 RSASSA-PSS-SIGN function + */ +int mbedtls_rsa_rsassa_pss_sign( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + int mode, + mbedtls_md_type_t md_alg, + unsigned int hashlen, + const unsigned char *hash, + unsigned char *sig ) +{ + return rsa_rsassa_pss_sign( ctx, f_rng, p_rng, mode, md_alg, + hashlen, hash, MBEDTLS_RSA_SALT_LEN_ANY, sig ); +} #endif /* MBEDTLS_PKCS1_V21 */ #if defined(MBEDTLS_PKCS1_V15) @@ -2020,7 +1881,7 @@ int mbedtls_rsa_rsassa_pkcs1_v15_sign( mbedtls_rsa_context *ctx, const unsigned char *hash, unsigned char *sig ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *sig_try = NULL, *verif = NULL; RSA_VALIDATE_RET( ctx != NULL ); @@ -2072,7 +1933,7 @@ int mbedtls_rsa_rsassa_pkcs1_v15_sign( mbedtls_rsa_context *ctx, MBEDTLS_MPI_CHK( mbedtls_rsa_private( ctx, f_rng, p_rng, sig, sig_try ) ); MBEDTLS_MPI_CHK( mbedtls_rsa_public( ctx, sig_try, verif ) ); - if( mbedtls_safer_memcmp( verif, sig, ctx->len ) != 0 ) + if( mbedtls_ct_memcmp( verif, sig, ctx->len ) != 0 ) { ret = MBEDTLS_ERR_RSA_PRIVATE_FAILED; goto cleanup; @@ -2081,9 +1942,13 @@ int mbedtls_rsa_rsassa_pkcs1_v15_sign( mbedtls_rsa_context *ctx, memcpy( sig, sig_try, ctx->len ); cleanup: + mbedtls_platform_zeroize( sig_try, ctx->len ); + mbedtls_platform_zeroize( verif, ctx->len ); mbedtls_free( sig_try ); mbedtls_free( verif ); + if( ret != 0 ) + memset( sig, '!', ctx->len ); return( ret ); } #endif /* MBEDTLS_PKCS1_V15 */ @@ -2142,7 +2007,7 @@ int mbedtls_rsa_rsassa_pss_verify_ext( mbedtls_rsa_context *ctx, int expected_salt_len, const unsigned char *sig ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t siglen; unsigned char *p; unsigned char *hash_start; @@ -2370,8 +2235,8 @@ int mbedtls_rsa_rsassa_pkcs1_v15_verify( mbedtls_rsa_context *ctx, * Compare */ - if( ( ret = mbedtls_safer_memcmp( encoded, encoded_expected, - sig_len ) ) != 0 ) + if( ( ret = mbedtls_ct_memcmp( encoded, encoded_expected, + sig_len ) ) != 0 ) { ret = MBEDTLS_ERR_RSA_VERIFY_FAILED; goto cleanup; @@ -2439,11 +2304,10 @@ int mbedtls_rsa_pkcs1_verify( mbedtls_rsa_context *ctx, */ int mbedtls_rsa_copy( mbedtls_rsa_context *dst, const mbedtls_rsa_context *src ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; RSA_VALIDATE_RET( dst != NULL ); RSA_VALIDATE_RET( src != NULL ); - dst->ver = src->ver; dst->len = src->len; MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &dst->N, &src->N ) ); @@ -2502,7 +2366,12 @@ void mbedtls_rsa_free( mbedtls_rsa_context *ctx ) #endif /* MBEDTLS_RSA_NO_CRT */ #if defined(MBEDTLS_THREADING_C) - mbedtls_mutex_free( &ctx->mutex ); + /* Free the mutex, but only if it hasn't been freed already. */ + if( ctx->ver != 0 ) + { + mbedtls_mutex_free( &ctx->mutex ); + ctx->ver = 0; + } #endif } @@ -2554,7 +2423,7 @@ void mbedtls_rsa_free( mbedtls_rsa_context *ctx ) #if defined(MBEDTLS_PKCS1_V15) static int myrand( void *rng_state, unsigned char *output, size_t len ) { -#if !defined(__OpenBSD__) +#if !defined(__OpenBSD__) && !defined(__NetBSD__) size_t i; if( rng_state != NULL ) @@ -2567,7 +2436,7 @@ static int myrand( void *rng_state, unsigned char *output, size_t len ) rng_state = NULL; arc4random_buf( output, len ); -#endif /* !OpenBSD */ +#endif /* !OpenBSD && !NetBSD */ return( 0 ); } diff --git a/Externals/mbedtls/library/rsa_internal.c b/Externals/mbedtls/library/rsa_internal.c index 9a42d47ceba0..d6ba97a14baf 100644 --- a/Externals/mbedtls/library/rsa_internal.c +++ b/Externals/mbedtls/library/rsa_internal.c @@ -1,7 +1,7 @@ /* * Helper functions for the RSA module * - * Copyright (C) 2006-2017, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -16,15 +16,9 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * This file is part of mbed TLS (https://tls.mbed.org) - * */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_RSA_C) diff --git a/Externals/mbedtls/library/sha1.c b/Externals/mbedtls/library/sha1.c index e8d4096fbb62..0a5edafaff91 100644 --- a/Externals/mbedtls/library/sha1.c +++ b/Externals/mbedtls/library/sha1.c @@ -1,7 +1,7 @@ /* * FIPS-180-1 compliant SHA-1 implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The SHA-1 standard was published by NIST in 1993. @@ -24,16 +22,13 @@ * http://www.itl.nist.gov/fipspubs/fip180-1.htm */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_SHA1_C) #include "mbedtls/sha1.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -53,29 +48,6 @@ #if !defined(MBEDTLS_SHA1_ALT) -/* - * 32-bit integer manipulation macros (big endian) - */ -#ifndef GET_UINT32_BE -#define GET_UINT32_BE(n,b,i) \ -{ \ - (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ - | ( (uint32_t) (b)[(i) + 1] << 16 ) \ - | ( (uint32_t) (b)[(i) + 2] << 8 ) \ - | ( (uint32_t) (b)[(i) + 3] ); \ -} -#endif - -#ifndef PUT_UINT32_BE -#define PUT_UINT32_BE(n,b,i) \ -{ \ - (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ - (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ - (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \ - (b)[(i) + 3] = (unsigned char) ( (n) ); \ -} -#endif - void mbedtls_sha1_init( mbedtls_sha1_context *ctx ) { SHA1_VALIDATE( ctx != NULL ); @@ -130,161 +102,171 @@ void mbedtls_sha1_starts( mbedtls_sha1_context *ctx ) int mbedtls_internal_sha1_process( mbedtls_sha1_context *ctx, const unsigned char data[64] ) { - uint32_t temp, W[16], A, B, C, D, E; + struct + { + uint32_t temp, W[16], A, B, C, D, E; + } local; SHA1_VALIDATE_RET( ctx != NULL ); SHA1_VALIDATE_RET( (const unsigned char *)data != NULL ); - GET_UINT32_BE( W[ 0], data, 0 ); - GET_UINT32_BE( W[ 1], data, 4 ); - GET_UINT32_BE( W[ 2], data, 8 ); - GET_UINT32_BE( W[ 3], data, 12 ); - GET_UINT32_BE( W[ 4], data, 16 ); - GET_UINT32_BE( W[ 5], data, 20 ); - GET_UINT32_BE( W[ 6], data, 24 ); - GET_UINT32_BE( W[ 7], data, 28 ); - GET_UINT32_BE( W[ 8], data, 32 ); - GET_UINT32_BE( W[ 9], data, 36 ); - GET_UINT32_BE( W[10], data, 40 ); - GET_UINT32_BE( W[11], data, 44 ); - GET_UINT32_BE( W[12], data, 48 ); - GET_UINT32_BE( W[13], data, 52 ); - GET_UINT32_BE( W[14], data, 56 ); - GET_UINT32_BE( W[15], data, 60 ); - -#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) - -#define R(t) \ -( \ - temp = W[( t - 3 ) & 0x0F] ^ W[( t - 8 ) & 0x0F] ^ \ - W[( t - 14 ) & 0x0F] ^ W[ t & 0x0F], \ - ( W[t & 0x0F] = S(temp,1) ) \ -) - -#define P(a,b,c,d,e,x) \ -{ \ - e += S(a,5) + F(b,c,d) + K + x; b = S(b,30); \ -} - - A = ctx->state[0]; - B = ctx->state[1]; - C = ctx->state[2]; - D = ctx->state[3]; - E = ctx->state[4]; - -#define F(x,y,z) (z ^ (x & (y ^ z))) + local.W[ 0] = MBEDTLS_GET_UINT32_BE( data, 0 ); + local.W[ 1] = MBEDTLS_GET_UINT32_BE( data, 4 ); + local.W[ 2] = MBEDTLS_GET_UINT32_BE( data, 8 ); + local.W[ 3] = MBEDTLS_GET_UINT32_BE( data, 12 ); + local.W[ 4] = MBEDTLS_GET_UINT32_BE( data, 16 ); + local.W[ 5] = MBEDTLS_GET_UINT32_BE( data, 20 ); + local.W[ 6] = MBEDTLS_GET_UINT32_BE( data, 24 ); + local.W[ 7] = MBEDTLS_GET_UINT32_BE( data, 28 ); + local.W[ 8] = MBEDTLS_GET_UINT32_BE( data, 32 ); + local.W[ 9] = MBEDTLS_GET_UINT32_BE( data, 36 ); + local.W[10] = MBEDTLS_GET_UINT32_BE( data, 40 ); + local.W[11] = MBEDTLS_GET_UINT32_BE( data, 44 ); + local.W[12] = MBEDTLS_GET_UINT32_BE( data, 48 ); + local.W[13] = MBEDTLS_GET_UINT32_BE( data, 52 ); + local.W[14] = MBEDTLS_GET_UINT32_BE( data, 56 ); + local.W[15] = MBEDTLS_GET_UINT32_BE( data, 60 ); + +#define S(x,n) (((x) << (n)) | (((x) & 0xFFFFFFFF) >> (32 - (n)))) + +#define R(t) \ + ( \ + local.temp = local.W[( (t) - 3 ) & 0x0F] ^ \ + local.W[( (t) - 8 ) & 0x0F] ^ \ + local.W[( (t) - 14 ) & 0x0F] ^ \ + local.W[ (t) & 0x0F], \ + ( local.W[(t) & 0x0F] = S(local.temp,1) ) \ + ) + +#define P(a,b,c,d,e,x) \ + do \ + { \ + (e) += S((a),5) + F((b),(c),(d)) + K + (x); \ + (b) = S((b),30); \ + } while( 0 ) + + local.A = ctx->state[0]; + local.B = ctx->state[1]; + local.C = ctx->state[2]; + local.D = ctx->state[3]; + local.E = ctx->state[4]; + +#define F(x,y,z) ((z) ^ ((x) & ((y) ^ (z)))) #define K 0x5A827999 - P( A, B, C, D, E, W[0] ); - P( E, A, B, C, D, W[1] ); - P( D, E, A, B, C, W[2] ); - P( C, D, E, A, B, W[3] ); - P( B, C, D, E, A, W[4] ); - P( A, B, C, D, E, W[5] ); - P( E, A, B, C, D, W[6] ); - P( D, E, A, B, C, W[7] ); - P( C, D, E, A, B, W[8] ); - P( B, C, D, E, A, W[9] ); - P( A, B, C, D, E, W[10] ); - P( E, A, B, C, D, W[11] ); - P( D, E, A, B, C, W[12] ); - P( C, D, E, A, B, W[13] ); - P( B, C, D, E, A, W[14] ); - P( A, B, C, D, E, W[15] ); - P( E, A, B, C, D, R(16) ); - P( D, E, A, B, C, R(17) ); - P( C, D, E, A, B, R(18) ); - P( B, C, D, E, A, R(19) ); + P( local.A, local.B, local.C, local.D, local.E, local.W[0] ); + P( local.E, local.A, local.B, local.C, local.D, local.W[1] ); + P( local.D, local.E, local.A, local.B, local.C, local.W[2] ); + P( local.C, local.D, local.E, local.A, local.B, local.W[3] ); + P( local.B, local.C, local.D, local.E, local.A, local.W[4] ); + P( local.A, local.B, local.C, local.D, local.E, local.W[5] ); + P( local.E, local.A, local.B, local.C, local.D, local.W[6] ); + P( local.D, local.E, local.A, local.B, local.C, local.W[7] ); + P( local.C, local.D, local.E, local.A, local.B, local.W[8] ); + P( local.B, local.C, local.D, local.E, local.A, local.W[9] ); + P( local.A, local.B, local.C, local.D, local.E, local.W[10] ); + P( local.E, local.A, local.B, local.C, local.D, local.W[11] ); + P( local.D, local.E, local.A, local.B, local.C, local.W[12] ); + P( local.C, local.D, local.E, local.A, local.B, local.W[13] ); + P( local.B, local.C, local.D, local.E, local.A, local.W[14] ); + P( local.A, local.B, local.C, local.D, local.E, local.W[15] ); + P( local.E, local.A, local.B, local.C, local.D, R(16) ); + P( local.D, local.E, local.A, local.B, local.C, R(17) ); + P( local.C, local.D, local.E, local.A, local.B, R(18) ); + P( local.B, local.C, local.D, local.E, local.A, R(19) ); #undef K #undef F -#define F(x,y,z) (x ^ y ^ z) +#define F(x,y,z) ((x) ^ (y) ^ (z)) #define K 0x6ED9EBA1 - P( A, B, C, D, E, R(20) ); - P( E, A, B, C, D, R(21) ); - P( D, E, A, B, C, R(22) ); - P( C, D, E, A, B, R(23) ); - P( B, C, D, E, A, R(24) ); - P( A, B, C, D, E, R(25) ); - P( E, A, B, C, D, R(26) ); - P( D, E, A, B, C, R(27) ); - P( C, D, E, A, B, R(28) ); - P( B, C, D, E, A, R(29) ); - P( A, B, C, D, E, R(30) ); - P( E, A, B, C, D, R(31) ); - P( D, E, A, B, C, R(32) ); - P( C, D, E, A, B, R(33) ); - P( B, C, D, E, A, R(34) ); - P( A, B, C, D, E, R(35) ); - P( E, A, B, C, D, R(36) ); - P( D, E, A, B, C, R(37) ); - P( C, D, E, A, B, R(38) ); - P( B, C, D, E, A, R(39) ); + P( local.A, local.B, local.C, local.D, local.E, R(20) ); + P( local.E, local.A, local.B, local.C, local.D, R(21) ); + P( local.D, local.E, local.A, local.B, local.C, R(22) ); + P( local.C, local.D, local.E, local.A, local.B, R(23) ); + P( local.B, local.C, local.D, local.E, local.A, R(24) ); + P( local.A, local.B, local.C, local.D, local.E, R(25) ); + P( local.E, local.A, local.B, local.C, local.D, R(26) ); + P( local.D, local.E, local.A, local.B, local.C, R(27) ); + P( local.C, local.D, local.E, local.A, local.B, R(28) ); + P( local.B, local.C, local.D, local.E, local.A, R(29) ); + P( local.A, local.B, local.C, local.D, local.E, R(30) ); + P( local.E, local.A, local.B, local.C, local.D, R(31) ); + P( local.D, local.E, local.A, local.B, local.C, R(32) ); + P( local.C, local.D, local.E, local.A, local.B, R(33) ); + P( local.B, local.C, local.D, local.E, local.A, R(34) ); + P( local.A, local.B, local.C, local.D, local.E, R(35) ); + P( local.E, local.A, local.B, local.C, local.D, R(36) ); + P( local.D, local.E, local.A, local.B, local.C, R(37) ); + P( local.C, local.D, local.E, local.A, local.B, R(38) ); + P( local.B, local.C, local.D, local.E, local.A, R(39) ); #undef K #undef F -#define F(x,y,z) ((x & y) | (z & (x | y))) +#define F(x,y,z) (((x) & (y)) | ((z) & ((x) | (y)))) #define K 0x8F1BBCDC - P( A, B, C, D, E, R(40) ); - P( E, A, B, C, D, R(41) ); - P( D, E, A, B, C, R(42) ); - P( C, D, E, A, B, R(43) ); - P( B, C, D, E, A, R(44) ); - P( A, B, C, D, E, R(45) ); - P( E, A, B, C, D, R(46) ); - P( D, E, A, B, C, R(47) ); - P( C, D, E, A, B, R(48) ); - P( B, C, D, E, A, R(49) ); - P( A, B, C, D, E, R(50) ); - P( E, A, B, C, D, R(51) ); - P( D, E, A, B, C, R(52) ); - P( C, D, E, A, B, R(53) ); - P( B, C, D, E, A, R(54) ); - P( A, B, C, D, E, R(55) ); - P( E, A, B, C, D, R(56) ); - P( D, E, A, B, C, R(57) ); - P( C, D, E, A, B, R(58) ); - P( B, C, D, E, A, R(59) ); + P( local.A, local.B, local.C, local.D, local.E, R(40) ); + P( local.E, local.A, local.B, local.C, local.D, R(41) ); + P( local.D, local.E, local.A, local.B, local.C, R(42) ); + P( local.C, local.D, local.E, local.A, local.B, R(43) ); + P( local.B, local.C, local.D, local.E, local.A, R(44) ); + P( local.A, local.B, local.C, local.D, local.E, R(45) ); + P( local.E, local.A, local.B, local.C, local.D, R(46) ); + P( local.D, local.E, local.A, local.B, local.C, R(47) ); + P( local.C, local.D, local.E, local.A, local.B, R(48) ); + P( local.B, local.C, local.D, local.E, local.A, R(49) ); + P( local.A, local.B, local.C, local.D, local.E, R(50) ); + P( local.E, local.A, local.B, local.C, local.D, R(51) ); + P( local.D, local.E, local.A, local.B, local.C, R(52) ); + P( local.C, local.D, local.E, local.A, local.B, R(53) ); + P( local.B, local.C, local.D, local.E, local.A, R(54) ); + P( local.A, local.B, local.C, local.D, local.E, R(55) ); + P( local.E, local.A, local.B, local.C, local.D, R(56) ); + P( local.D, local.E, local.A, local.B, local.C, R(57) ); + P( local.C, local.D, local.E, local.A, local.B, R(58) ); + P( local.B, local.C, local.D, local.E, local.A, R(59) ); #undef K #undef F -#define F(x,y,z) (x ^ y ^ z) +#define F(x,y,z) ((x) ^ (y) ^ (z)) #define K 0xCA62C1D6 - P( A, B, C, D, E, R(60) ); - P( E, A, B, C, D, R(61) ); - P( D, E, A, B, C, R(62) ); - P( C, D, E, A, B, R(63) ); - P( B, C, D, E, A, R(64) ); - P( A, B, C, D, E, R(65) ); - P( E, A, B, C, D, R(66) ); - P( D, E, A, B, C, R(67) ); - P( C, D, E, A, B, R(68) ); - P( B, C, D, E, A, R(69) ); - P( A, B, C, D, E, R(70) ); - P( E, A, B, C, D, R(71) ); - P( D, E, A, B, C, R(72) ); - P( C, D, E, A, B, R(73) ); - P( B, C, D, E, A, R(74) ); - P( A, B, C, D, E, R(75) ); - P( E, A, B, C, D, R(76) ); - P( D, E, A, B, C, R(77) ); - P( C, D, E, A, B, R(78) ); - P( B, C, D, E, A, R(79) ); + P( local.A, local.B, local.C, local.D, local.E, R(60) ); + P( local.E, local.A, local.B, local.C, local.D, R(61) ); + P( local.D, local.E, local.A, local.B, local.C, R(62) ); + P( local.C, local.D, local.E, local.A, local.B, R(63) ); + P( local.B, local.C, local.D, local.E, local.A, R(64) ); + P( local.A, local.B, local.C, local.D, local.E, R(65) ); + P( local.E, local.A, local.B, local.C, local.D, R(66) ); + P( local.D, local.E, local.A, local.B, local.C, R(67) ); + P( local.C, local.D, local.E, local.A, local.B, R(68) ); + P( local.B, local.C, local.D, local.E, local.A, R(69) ); + P( local.A, local.B, local.C, local.D, local.E, R(70) ); + P( local.E, local.A, local.B, local.C, local.D, R(71) ); + P( local.D, local.E, local.A, local.B, local.C, R(72) ); + P( local.C, local.D, local.E, local.A, local.B, R(73) ); + P( local.B, local.C, local.D, local.E, local.A, R(74) ); + P( local.A, local.B, local.C, local.D, local.E, R(75) ); + P( local.E, local.A, local.B, local.C, local.D, R(76) ); + P( local.D, local.E, local.A, local.B, local.C, R(77) ); + P( local.C, local.D, local.E, local.A, local.B, R(78) ); + P( local.B, local.C, local.D, local.E, local.A, R(79) ); #undef K #undef F - ctx->state[0] += A; - ctx->state[1] += B; - ctx->state[2] += C; - ctx->state[3] += D; - ctx->state[4] += E; + ctx->state[0] += local.A; + ctx->state[1] += local.B; + ctx->state[2] += local.C; + ctx->state[3] += local.D; + ctx->state[4] += local.E; + + /* Zeroise buffers and variables to clear sensitive data from memory. */ + mbedtls_platform_zeroize( &local, sizeof( local ) ); return( 0 ); } @@ -305,7 +287,7 @@ int mbedtls_sha1_update_ret( mbedtls_sha1_context *ctx, const unsigned char *input, size_t ilen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t fill; uint32_t left; @@ -366,7 +348,7 @@ void mbedtls_sha1_update( mbedtls_sha1_context *ctx, int mbedtls_sha1_finish_ret( mbedtls_sha1_context *ctx, unsigned char output[20] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; uint32_t used; uint32_t high, low; @@ -403,8 +385,8 @@ int mbedtls_sha1_finish_ret( mbedtls_sha1_context *ctx, | ( ctx->total[1] << 3 ); low = ( ctx->total[0] << 3 ); - PUT_UINT32_BE( high, ctx->buffer, 56 ); - PUT_UINT32_BE( low, ctx->buffer, 60 ); + MBEDTLS_PUT_UINT32_BE( high, ctx->buffer, 56 ); + MBEDTLS_PUT_UINT32_BE( low, ctx->buffer, 60 ); if( ( ret = mbedtls_internal_sha1_process( ctx, ctx->buffer ) ) != 0 ) return( ret ); @@ -412,11 +394,11 @@ int mbedtls_sha1_finish_ret( mbedtls_sha1_context *ctx, /* * Output final state */ - PUT_UINT32_BE( ctx->state[0], output, 0 ); - PUT_UINT32_BE( ctx->state[1], output, 4 ); - PUT_UINT32_BE( ctx->state[2], output, 8 ); - PUT_UINT32_BE( ctx->state[3], output, 12 ); - PUT_UINT32_BE( ctx->state[4], output, 16 ); + MBEDTLS_PUT_UINT32_BE( ctx->state[0], output, 0 ); + MBEDTLS_PUT_UINT32_BE( ctx->state[1], output, 4 ); + MBEDTLS_PUT_UINT32_BE( ctx->state[2], output, 8 ); + MBEDTLS_PUT_UINT32_BE( ctx->state[3], output, 12 ); + MBEDTLS_PUT_UINT32_BE( ctx->state[4], output, 16 ); return( 0 ); } @@ -438,7 +420,7 @@ int mbedtls_sha1_ret( const unsigned char *input, size_t ilen, unsigned char output[20] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_sha1_context ctx; SHA1_VALIDATE_RET( ilen == 0 || input != NULL ); diff --git a/Externals/mbedtls/library/sha256.c b/Externals/mbedtls/library/sha256.c index 8a540adfbedf..db675efd1bab 100644 --- a/Externals/mbedtls/library/sha256.c +++ b/Externals/mbedtls/library/sha256.c @@ -1,7 +1,7 @@ /* * FIPS-180-2 compliant SHA-256 implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The SHA-256 Secure Hash Standard was published by NIST in 2002. @@ -24,16 +22,13 @@ * http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_SHA256_C) #include "mbedtls/sha256.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #include @@ -55,29 +50,6 @@ #if !defined(MBEDTLS_SHA256_ALT) -/* - * 32-bit integer manipulation macros (big endian) - */ -#ifndef GET_UINT32_BE -#define GET_UINT32_BE(n,b,i) \ -do { \ - (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ - | ( (uint32_t) (b)[(i) + 1] << 16 ) \ - | ( (uint32_t) (b)[(i) + 2] << 8 ) \ - | ( (uint32_t) (b)[(i) + 3] ); \ -} while( 0 ) -#endif - -#ifndef PUT_UINT32_BE -#define PUT_UINT32_BE(n,b,i) \ -do { \ - (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ - (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ - (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \ - (b)[(i) + 3] = (unsigned char) ( (n) ); \ -} while( 0 ) -#endif - void mbedtls_sha256_init( mbedtls_sha256_context *ctx ) { SHA256_VALIDATE( ctx != NULL ); @@ -172,8 +144,8 @@ static const uint32_t K[] = 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2, }; -#define SHR(x,n) ((x & 0xFFFFFFFF) >> n) -#define ROTR(x,n) (SHR(x,n) | (x << (32 - n))) +#define SHR(x,n) (((x) & 0xFFFFFFFF) >> (n)) +#define ROTR(x,n) (SHR(x,n) | ((x) << (32 - (n)))) #define S0(x) (ROTR(x, 7) ^ ROTR(x,18) ^ SHR(x, 3)) #define S1(x) (ROTR(x,17) ^ ROTR(x,19) ^ SHR(x,10)) @@ -181,79 +153,107 @@ static const uint32_t K[] = #define S2(x) (ROTR(x, 2) ^ ROTR(x,13) ^ ROTR(x,22)) #define S3(x) (ROTR(x, 6) ^ ROTR(x,11) ^ ROTR(x,25)) -#define F0(x,y,z) ((x & y) | (z & (x | y))) -#define F1(x,y,z) (z ^ (x & (y ^ z))) +#define F0(x,y,z) (((x) & (y)) | ((z) & ((x) | (y)))) +#define F1(x,y,z) ((z) ^ ((x) & ((y) ^ (z)))) -#define R(t) \ -( \ - W[t] = S1(W[t - 2]) + W[t - 7] + \ - S0(W[t - 15]) + W[t - 16] \ -) +#define R(t) \ + ( \ + local.W[t] = S1(local.W[(t) - 2]) + local.W[(t) - 7] + \ + S0(local.W[(t) - 15]) + local.W[(t) - 16] \ + ) -#define P(a,b,c,d,e,f,g,h,x,K) \ -{ \ - temp1 = h + S3(e) + F1(e,f,g) + K + x; \ - temp2 = S2(a) + F0(a,b,c); \ - d += temp1; h = temp1 + temp2; \ -} +#define P(a,b,c,d,e,f,g,h,x,K) \ + do \ + { \ + local.temp1 = (h) + S3(e) + F1((e),(f),(g)) + (K) + (x); \ + local.temp2 = S2(a) + F0((a),(b),(c)); \ + (d) += local.temp1; (h) = local.temp1 + local.temp2; \ + } while( 0 ) int mbedtls_internal_sha256_process( mbedtls_sha256_context *ctx, const unsigned char data[64] ) { - uint32_t temp1, temp2, W[64]; - uint32_t A[8]; + struct + { + uint32_t temp1, temp2, W[64]; + uint32_t A[8]; + } local; + unsigned int i; SHA256_VALIDATE_RET( ctx != NULL ); SHA256_VALIDATE_RET( (const unsigned char *)data != NULL ); for( i = 0; i < 8; i++ ) - A[i] = ctx->state[i]; + local.A[i] = ctx->state[i]; #if defined(MBEDTLS_SHA256_SMALLER) for( i = 0; i < 64; i++ ) { if( i < 16 ) - GET_UINT32_BE( W[i], data, 4 * i ); + local.W[i] = MBEDTLS_GET_UINT32_BE( data, 4 * i ); else R( i ); - P( A[0], A[1], A[2], A[3], A[4], A[5], A[6], A[7], W[i], K[i] ); + P( local.A[0], local.A[1], local.A[2], local.A[3], local.A[4], + local.A[5], local.A[6], local.A[7], local.W[i], K[i] ); - temp1 = A[7]; A[7] = A[6]; A[6] = A[5]; A[5] = A[4]; A[4] = A[3]; - A[3] = A[2]; A[2] = A[1]; A[1] = A[0]; A[0] = temp1; + local.temp1 = local.A[7]; local.A[7] = local.A[6]; + local.A[6] = local.A[5]; local.A[5] = local.A[4]; + local.A[4] = local.A[3]; local.A[3] = local.A[2]; + local.A[2] = local.A[1]; local.A[1] = local.A[0]; + local.A[0] = local.temp1; } #else /* MBEDTLS_SHA256_SMALLER */ for( i = 0; i < 16; i++ ) - GET_UINT32_BE( W[i], data, 4 * i ); + local.W[i] = MBEDTLS_GET_UINT32_BE( data, 4 * i ); for( i = 0; i < 16; i += 8 ) { - P( A[0], A[1], A[2], A[3], A[4], A[5], A[6], A[7], W[i+0], K[i+0] ); - P( A[7], A[0], A[1], A[2], A[3], A[4], A[5], A[6], W[i+1], K[i+1] ); - P( A[6], A[7], A[0], A[1], A[2], A[3], A[4], A[5], W[i+2], K[i+2] ); - P( A[5], A[6], A[7], A[0], A[1], A[2], A[3], A[4], W[i+3], K[i+3] ); - P( A[4], A[5], A[6], A[7], A[0], A[1], A[2], A[3], W[i+4], K[i+4] ); - P( A[3], A[4], A[5], A[6], A[7], A[0], A[1], A[2], W[i+5], K[i+5] ); - P( A[2], A[3], A[4], A[5], A[6], A[7], A[0], A[1], W[i+6], K[i+6] ); - P( A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[0], W[i+7], K[i+7] ); + P( local.A[0], local.A[1], local.A[2], local.A[3], local.A[4], + local.A[5], local.A[6], local.A[7], local.W[i+0], K[i+0] ); + P( local.A[7], local.A[0], local.A[1], local.A[2], local.A[3], + local.A[4], local.A[5], local.A[6], local.W[i+1], K[i+1] ); + P( local.A[6], local.A[7], local.A[0], local.A[1], local.A[2], + local.A[3], local.A[4], local.A[5], local.W[i+2], K[i+2] ); + P( local.A[5], local.A[6], local.A[7], local.A[0], local.A[1], + local.A[2], local.A[3], local.A[4], local.W[i+3], K[i+3] ); + P( local.A[4], local.A[5], local.A[6], local.A[7], local.A[0], + local.A[1], local.A[2], local.A[3], local.W[i+4], K[i+4] ); + P( local.A[3], local.A[4], local.A[5], local.A[6], local.A[7], + local.A[0], local.A[1], local.A[2], local.W[i+5], K[i+5] ); + P( local.A[2], local.A[3], local.A[4], local.A[5], local.A[6], + local.A[7], local.A[0], local.A[1], local.W[i+6], K[i+6] ); + P( local.A[1], local.A[2], local.A[3], local.A[4], local.A[5], + local.A[6], local.A[7], local.A[0], local.W[i+7], K[i+7] ); } for( i = 16; i < 64; i += 8 ) { - P( A[0], A[1], A[2], A[3], A[4], A[5], A[6], A[7], R(i+0), K[i+0] ); - P( A[7], A[0], A[1], A[2], A[3], A[4], A[5], A[6], R(i+1), K[i+1] ); - P( A[6], A[7], A[0], A[1], A[2], A[3], A[4], A[5], R(i+2), K[i+2] ); - P( A[5], A[6], A[7], A[0], A[1], A[2], A[3], A[4], R(i+3), K[i+3] ); - P( A[4], A[5], A[6], A[7], A[0], A[1], A[2], A[3], R(i+4), K[i+4] ); - P( A[3], A[4], A[5], A[6], A[7], A[0], A[1], A[2], R(i+5), K[i+5] ); - P( A[2], A[3], A[4], A[5], A[6], A[7], A[0], A[1], R(i+6), K[i+6] ); - P( A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[0], R(i+7), K[i+7] ); + P( local.A[0], local.A[1], local.A[2], local.A[3], local.A[4], + local.A[5], local.A[6], local.A[7], R(i+0), K[i+0] ); + P( local.A[7], local.A[0], local.A[1], local.A[2], local.A[3], + local.A[4], local.A[5], local.A[6], R(i+1), K[i+1] ); + P( local.A[6], local.A[7], local.A[0], local.A[1], local.A[2], + local.A[3], local.A[4], local.A[5], R(i+2), K[i+2] ); + P( local.A[5], local.A[6], local.A[7], local.A[0], local.A[1], + local.A[2], local.A[3], local.A[4], R(i+3), K[i+3] ); + P( local.A[4], local.A[5], local.A[6], local.A[7], local.A[0], + local.A[1], local.A[2], local.A[3], R(i+4), K[i+4] ); + P( local.A[3], local.A[4], local.A[5], local.A[6], local.A[7], + local.A[0], local.A[1], local.A[2], R(i+5), K[i+5] ); + P( local.A[2], local.A[3], local.A[4], local.A[5], local.A[6], + local.A[7], local.A[0], local.A[1], R(i+6), K[i+6] ); + P( local.A[1], local.A[2], local.A[3], local.A[4], local.A[5], + local.A[6], local.A[7], local.A[0], R(i+7), K[i+7] ); } #endif /* MBEDTLS_SHA256_SMALLER */ for( i = 0; i < 8; i++ ) - ctx->state[i] += A[i]; + ctx->state[i] += local.A[i]; + + /* Zeroise buffers and variables to clear sensitive data from memory. */ + mbedtls_platform_zeroize( &local, sizeof( local ) ); return( 0 ); } @@ -274,7 +274,7 @@ int mbedtls_sha256_update_ret( mbedtls_sha256_context *ctx, const unsigned char *input, size_t ilen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t fill; uint32_t left; @@ -335,7 +335,7 @@ void mbedtls_sha256_update( mbedtls_sha256_context *ctx, int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx, unsigned char output[32] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; uint32_t used; uint32_t high, low; @@ -372,8 +372,8 @@ int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx, | ( ctx->total[1] << 3 ); low = ( ctx->total[0] << 3 ); - PUT_UINT32_BE( high, ctx->buffer, 56 ); - PUT_UINT32_BE( low, ctx->buffer, 60 ); + MBEDTLS_PUT_UINT32_BE( high, ctx->buffer, 56 ); + MBEDTLS_PUT_UINT32_BE( low, ctx->buffer, 60 ); if( ( ret = mbedtls_internal_sha256_process( ctx, ctx->buffer ) ) != 0 ) return( ret ); @@ -381,16 +381,16 @@ int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx, /* * Output final state */ - PUT_UINT32_BE( ctx->state[0], output, 0 ); - PUT_UINT32_BE( ctx->state[1], output, 4 ); - PUT_UINT32_BE( ctx->state[2], output, 8 ); - PUT_UINT32_BE( ctx->state[3], output, 12 ); - PUT_UINT32_BE( ctx->state[4], output, 16 ); - PUT_UINT32_BE( ctx->state[5], output, 20 ); - PUT_UINT32_BE( ctx->state[6], output, 24 ); + MBEDTLS_PUT_UINT32_BE( ctx->state[0], output, 0 ); + MBEDTLS_PUT_UINT32_BE( ctx->state[1], output, 4 ); + MBEDTLS_PUT_UINT32_BE( ctx->state[2], output, 8 ); + MBEDTLS_PUT_UINT32_BE( ctx->state[3], output, 12 ); + MBEDTLS_PUT_UINT32_BE( ctx->state[4], output, 16 ); + MBEDTLS_PUT_UINT32_BE( ctx->state[5], output, 20 ); + MBEDTLS_PUT_UINT32_BE( ctx->state[6], output, 24 ); if( ctx->is224 == 0 ) - PUT_UINT32_BE( ctx->state[7], output, 28 ); + MBEDTLS_PUT_UINT32_BE( ctx->state[7], output, 28 ); return( 0 ); } @@ -413,7 +413,7 @@ int mbedtls_sha256_ret( const unsigned char *input, unsigned char output[32], int is224 ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_sha256_context ctx; SHA256_VALIDATE_RET( is224 == 0 || is224 == 1 ); diff --git a/Externals/mbedtls/library/sha512.c b/Externals/mbedtls/library/sha512.c index 941ecda762c7..02a135ca9265 100644 --- a/Externals/mbedtls/library/sha512.c +++ b/Externals/mbedtls/library/sha512.c @@ -1,7 +1,7 @@ /* * FIPS-180-2 compliant SHA-384/512 implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The SHA-512 Secure Hash Standard was published by NIST in 2002. @@ -24,16 +22,13 @@ * http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_SHA512_C) #include "mbedtls/sha512.h" #include "mbedtls/platform_util.h" +#include "mbedtls/error.h" #if defined(_MSC_VER) || defined(__WATCOMC__) #define UL64(x) x##ui64 @@ -61,36 +56,14 @@ #if !defined(MBEDTLS_SHA512_ALT) -/* - * 64-bit integer manipulation macros (big endian) - */ -#ifndef GET_UINT64_BE -#define GET_UINT64_BE(n,b,i) \ -{ \ - (n) = ( (uint64_t) (b)[(i) ] << 56 ) \ - | ( (uint64_t) (b)[(i) + 1] << 48 ) \ - | ( (uint64_t) (b)[(i) + 2] << 40 ) \ - | ( (uint64_t) (b)[(i) + 3] << 32 ) \ - | ( (uint64_t) (b)[(i) + 4] << 24 ) \ - | ( (uint64_t) (b)[(i) + 5] << 16 ) \ - | ( (uint64_t) (b)[(i) + 6] << 8 ) \ - | ( (uint64_t) (b)[(i) + 7] ); \ -} -#endif /* GET_UINT64_BE */ - -#ifndef PUT_UINT64_BE -#define PUT_UINT64_BE(n,b,i) \ -{ \ - (b)[(i) ] = (unsigned char) ( (n) >> 56 ); \ - (b)[(i) + 1] = (unsigned char) ( (n) >> 48 ); \ - (b)[(i) + 2] = (unsigned char) ( (n) >> 40 ); \ - (b)[(i) + 3] = (unsigned char) ( (n) >> 32 ); \ - (b)[(i) + 4] = (unsigned char) ( (n) >> 24 ); \ - (b)[(i) + 5] = (unsigned char) ( (n) >> 16 ); \ - (b)[(i) + 6] = (unsigned char) ( (n) >> 8 ); \ - (b)[(i) + 7] = (unsigned char) ( (n) ); \ +#if defined(MBEDTLS_SHA512_SMALLER) +static void sha512_put_uint64_be( uint64_t n, unsigned char *b, uint8_t i ) +{ + MBEDTLS_PUT_UINT64_BE(n, b, i); } -#endif /* PUT_UINT64_BE */ +#else +#define sha512_put_uint64_be MBEDTLS_PUT_UINT64_BE +#endif /* MBEDTLS_SHA512_SMALLER */ void mbedtls_sha512_init( mbedtls_sha512_context *ctx ) { @@ -122,7 +95,11 @@ void mbedtls_sha512_clone( mbedtls_sha512_context *dst, int mbedtls_sha512_starts_ret( mbedtls_sha512_context *ctx, int is384 ) { SHA512_VALIDATE_RET( ctx != NULL ); +#if !defined(MBEDTLS_SHA512_NO_SHA384) SHA512_VALIDATE_RET( is384 == 0 || is384 == 1 ); +#else + SHA512_VALIDATE_RET( is384 == 0 ); +#endif ctx->total[0] = 0; ctx->total[1] = 0; @@ -141,6 +118,9 @@ int mbedtls_sha512_starts_ret( mbedtls_sha512_context *ctx, int is384 ) } else { +#if defined(MBEDTLS_SHA512_NO_SHA384) + return( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA ); +#else /* SHA-384 */ ctx->state[0] = UL64(0xCBBB9D5DC1059ED8); ctx->state[1] = UL64(0x629A292A367CD507); @@ -150,9 +130,12 @@ int mbedtls_sha512_starts_ret( mbedtls_sha512_context *ctx, int is384 ) ctx->state[5] = UL64(0x8EB44A8768581511); ctx->state[6] = UL64(0xDB0C2E0D64F98FA7); ctx->state[7] = UL64(0x47B5481DBEFA4FA4); +#endif /* MBEDTLS_SHA512_NO_SHA384 */ } +#if !defined(MBEDTLS_SHA512_NO_SHA384) ctx->is384 = is384; +#endif return( 0 ); } @@ -218,14 +201,17 @@ int mbedtls_internal_sha512_process( mbedtls_sha512_context *ctx, const unsigned char data[128] ) { int i; - uint64_t temp1, temp2, W[80]; - uint64_t A, B, C, D, E, F, G, H; + struct + { + uint64_t temp1, temp2, W[80]; + uint64_t A[8]; + } local; SHA512_VALIDATE_RET( ctx != NULL ); SHA512_VALIDATE_RET( (const unsigned char *)data != NULL ); -#define SHR(x,n) (x >> n) -#define ROTR(x,n) (SHR(x,n) | (x << (64 - n))) +#define SHR(x,n) ((x) >> (n)) +#define ROTR(x,n) (SHR((x),(n)) | ((x) << (64 - (n)))) #define S0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x, 7)) #define S1(x) (ROTR(x,19) ^ ROTR(x,61) ^ SHR(x, 6)) @@ -233,58 +219,82 @@ int mbedtls_internal_sha512_process( mbedtls_sha512_context *ctx, #define S2(x) (ROTR(x,28) ^ ROTR(x,34) ^ ROTR(x,39)) #define S3(x) (ROTR(x,14) ^ ROTR(x,18) ^ ROTR(x,41)) -#define F0(x,y,z) ((x & y) | (z & (x | y))) -#define F1(x,y,z) (z ^ (x & (y ^ z))) +#define F0(x,y,z) (((x) & (y)) | ((z) & ((x) | (y)))) +#define F1(x,y,z) ((z) ^ ((x) & ((y) ^ (z)))) -#define P(a,b,c,d,e,f,g,h,x,K) \ -{ \ - temp1 = h + S3(e) + F1(e,f,g) + K + x; \ - temp2 = S2(a) + F0(a,b,c); \ - d += temp1; h = temp1 + temp2; \ -} +#define P(a,b,c,d,e,f,g,h,x,K) \ + do \ + { \ + local.temp1 = (h) + S3(e) + F1((e),(f),(g)) + (K) + (x); \ + local.temp2 = S2(a) + F0((a),(b),(c)); \ + (d) += local.temp1; (h) = local.temp1 + local.temp2; \ + } while( 0 ) + + for( i = 0; i < 8; i++ ) + local.A[i] = ctx->state[i]; + +#if defined(MBEDTLS_SHA512_SMALLER) + for( i = 0; i < 80; i++ ) + { + if( i < 16 ) + { + local.W[i] = MBEDTLS_GET_UINT64_BE( data, i << 3 ); + } + else + { + local.W[i] = S1(local.W[i - 2]) + local.W[i - 7] + + S0(local.W[i - 15]) + local.W[i - 16]; + } + P( local.A[0], local.A[1], local.A[2], local.A[3], local.A[4], + local.A[5], local.A[6], local.A[7], local.W[i], K[i] ); + + local.temp1 = local.A[7]; local.A[7] = local.A[6]; + local.A[6] = local.A[5]; local.A[5] = local.A[4]; + local.A[4] = local.A[3]; local.A[3] = local.A[2]; + local.A[2] = local.A[1]; local.A[1] = local.A[0]; + local.A[0] = local.temp1; + } +#else /* MBEDTLS_SHA512_SMALLER */ for( i = 0; i < 16; i++ ) { - GET_UINT64_BE( W[i], data, i << 3 ); + local.W[i] = MBEDTLS_GET_UINT64_BE( data, i << 3 ); } for( ; i < 80; i++ ) { - W[i] = S1(W[i - 2]) + W[i - 7] + - S0(W[i - 15]) + W[i - 16]; + local.W[i] = S1(local.W[i - 2]) + local.W[i - 7] + + S0(local.W[i - 15]) + local.W[i - 16]; } - A = ctx->state[0]; - B = ctx->state[1]; - C = ctx->state[2]; - D = ctx->state[3]; - E = ctx->state[4]; - F = ctx->state[5]; - G = ctx->state[6]; - H = ctx->state[7]; i = 0; - do { - P( A, B, C, D, E, F, G, H, W[i], K[i] ); i++; - P( H, A, B, C, D, E, F, G, W[i], K[i] ); i++; - P( G, H, A, B, C, D, E, F, W[i], K[i] ); i++; - P( F, G, H, A, B, C, D, E, W[i], K[i] ); i++; - P( E, F, G, H, A, B, C, D, W[i], K[i] ); i++; - P( D, E, F, G, H, A, B, C, W[i], K[i] ); i++; - P( C, D, E, F, G, H, A, B, W[i], K[i] ); i++; - P( B, C, D, E, F, G, H, A, W[i], K[i] ); i++; + P( local.A[0], local.A[1], local.A[2], local.A[3], local.A[4], + local.A[5], local.A[6], local.A[7], local.W[i], K[i] ); i++; + P( local.A[7], local.A[0], local.A[1], local.A[2], local.A[3], + local.A[4], local.A[5], local.A[6], local.W[i], K[i] ); i++; + P( local.A[6], local.A[7], local.A[0], local.A[1], local.A[2], + local.A[3], local.A[4], local.A[5], local.W[i], K[i] ); i++; + P( local.A[5], local.A[6], local.A[7], local.A[0], local.A[1], + local.A[2], local.A[3], local.A[4], local.W[i], K[i] ); i++; + P( local.A[4], local.A[5], local.A[6], local.A[7], local.A[0], + local.A[1], local.A[2], local.A[3], local.W[i], K[i] ); i++; + P( local.A[3], local.A[4], local.A[5], local.A[6], local.A[7], + local.A[0], local.A[1], local.A[2], local.W[i], K[i] ); i++; + P( local.A[2], local.A[3], local.A[4], local.A[5], local.A[6], + local.A[7], local.A[0], local.A[1], local.W[i], K[i] ); i++; + P( local.A[1], local.A[2], local.A[3], local.A[4], local.A[5], + local.A[6], local.A[7], local.A[0], local.W[i], K[i] ); i++; } while( i < 80 ); +#endif /* MBEDTLS_SHA512_SMALLER */ + + for( i = 0; i < 8; i++ ) + ctx->state[i] += local.A[i]; - ctx->state[0] += A; - ctx->state[1] += B; - ctx->state[2] += C; - ctx->state[3] += D; - ctx->state[4] += E; - ctx->state[5] += F; - ctx->state[6] += G; - ctx->state[7] += H; + /* Zeroise buffers and variables to clear sensitive data from memory. */ + mbedtls_platform_zeroize( &local, sizeof( local ) ); return( 0 ); } @@ -305,7 +315,7 @@ int mbedtls_sha512_update_ret( mbedtls_sha512_context *ctx, const unsigned char *input, size_t ilen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t fill; unsigned int left; @@ -365,7 +375,7 @@ void mbedtls_sha512_update( mbedtls_sha512_context *ctx, int mbedtls_sha512_finish_ret( mbedtls_sha512_context *ctx, unsigned char output[64] ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned used; uint64_t high, low; @@ -402,8 +412,8 @@ int mbedtls_sha512_finish_ret( mbedtls_sha512_context *ctx, | ( ctx->total[1] << 3 ); low = ( ctx->total[0] << 3 ); - PUT_UINT64_BE( high, ctx->buffer, 112 ); - PUT_UINT64_BE( low, ctx->buffer, 120 ); + sha512_put_uint64_be( high, ctx->buffer, 112 ); + sha512_put_uint64_be( low, ctx->buffer, 120 ); if( ( ret = mbedtls_internal_sha512_process( ctx, ctx->buffer ) ) != 0 ) return( ret ); @@ -411,17 +421,19 @@ int mbedtls_sha512_finish_ret( mbedtls_sha512_context *ctx, /* * Output final state */ - PUT_UINT64_BE( ctx->state[0], output, 0 ); - PUT_UINT64_BE( ctx->state[1], output, 8 ); - PUT_UINT64_BE( ctx->state[2], output, 16 ); - PUT_UINT64_BE( ctx->state[3], output, 24 ); - PUT_UINT64_BE( ctx->state[4], output, 32 ); - PUT_UINT64_BE( ctx->state[5], output, 40 ); - + sha512_put_uint64_be( ctx->state[0], output, 0 ); + sha512_put_uint64_be( ctx->state[1], output, 8 ); + sha512_put_uint64_be( ctx->state[2], output, 16 ); + sha512_put_uint64_be( ctx->state[3], output, 24 ); + sha512_put_uint64_be( ctx->state[4], output, 32 ); + sha512_put_uint64_be( ctx->state[5], output, 40 ); + +#if !defined(MBEDTLS_SHA512_NO_SHA384) if( ctx->is384 == 0 ) +#endif { - PUT_UINT64_BE( ctx->state[6], output, 48 ); - PUT_UINT64_BE( ctx->state[7], output, 56 ); + sha512_put_uint64_be( ctx->state[6], output, 48 ); + sha512_put_uint64_be( ctx->state[7], output, 56 ); } return( 0 ); @@ -445,10 +457,14 @@ int mbedtls_sha512_ret( const unsigned char *input, unsigned char output[64], int is384 ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_sha512_context ctx; +#if !defined(MBEDTLS_SHA512_NO_SHA384) SHA512_VALIDATE_RET( is384 == 0 || is384 == 1 ); +#else + SHA512_VALIDATE_RET( is384 == 0 ); +#endif SHA512_VALIDATE_RET( ilen == 0 || input != NULL ); SHA512_VALIDATE_RET( (unsigned char *)output != NULL ); @@ -487,8 +503,7 @@ void mbedtls_sha512( const unsigned char *input, static const unsigned char sha512_test_buf[3][113] = { { "abc" }, - { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn" - "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu" }, + { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu" }, { "" } }; @@ -497,8 +512,9 @@ static const size_t sha512_test_buflen[3] = 3, 112, 1000 }; -static const unsigned char sha512_test_sum[6][64] = +static const unsigned char sha512_test_sum[][64] = { +#if !defined(MBEDTLS_SHA512_NO_SHA384) /* * SHA-384 test vectors */ @@ -520,6 +536,7 @@ static const unsigned char sha512_test_sum[6][64] = 0x79, 0x72, 0xCE, 0xC5, 0x70, 0x4C, 0x2A, 0x5B, 0x07, 0xB8, 0xB3, 0xDC, 0x38, 0xEC, 0xC4, 0xEB, 0xAE, 0x97, 0xDD, 0xD8, 0x7F, 0x3D, 0x89, 0x85 }, +#endif /* !MBEDTLS_SHA512_NO_SHA384 */ /* * SHA-512 test vectors @@ -550,6 +567,8 @@ static const unsigned char sha512_test_sum[6][64] = 0x4E, 0xAD, 0xB2, 0x17, 0xAD, 0x8C, 0xC0, 0x9B } }; +#define ARRAY_LENGTH( a ) ( sizeof( a ) / sizeof( ( a )[0] ) ) + /* * Checkup routine */ @@ -571,10 +590,14 @@ int mbedtls_sha512_self_test( int verbose ) mbedtls_sha512_init( &ctx ); - for( i = 0; i < 6; i++ ) + for( i = 0; i < (int) ARRAY_LENGTH(sha512_test_sum); i++ ) { j = i % 3; +#if !defined(MBEDTLS_SHA512_NO_SHA384) k = i < 3; +#else + k = 0; +#endif if( verbose != 0 ) mbedtls_printf( " SHA-%d test #%d: ", 512 - k * 128, j + 1 ); @@ -630,6 +653,8 @@ int mbedtls_sha512_self_test( int verbose ) return( ret ); } +#undef ARRAY_LENGTH + #endif /* MBEDTLS_SELF_TEST */ #endif /* MBEDTLS_SHA512_C */ diff --git a/Externals/mbedtls/library/ssl_cache.c b/Externals/mbedtls/library/ssl_cache.c index 47867f132d60..32188cf3f6f1 100644 --- a/Externals/mbedtls/library/ssl_cache.c +++ b/Externals/mbedtls/library/ssl_cache.c @@ -1,7 +1,7 @@ /* * SSL session cache implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,19 +15,13 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * These session callbacks use a simple chained list * to store and retrieve the session information. */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_SSL_CACHE_C) @@ -40,6 +34,7 @@ #endif #include "mbedtls/ssl_cache.h" +#include "mbedtls/ssl_internal.h" #include @@ -83,25 +78,31 @@ int mbedtls_ssl_cache_get( void *data, mbedtls_ssl_session *session ) continue; #endif - if( session->ciphersuite != entry->session.ciphersuite || - session->compression != entry->session.compression || - session->id_len != entry->session.id_len ) - continue; - - if( memcmp( session->id, entry->session.id, + if( session->id_len != entry->session.id_len || + memcmp( session->id, entry->session.id, entry->session.id_len ) != 0 ) + { continue; + } - memcpy( session->master, entry->session.master, 48 ); - - session->verify_result = entry->session.verify_result; + ret = mbedtls_ssl_session_copy( session, &entry->session ); + if( ret != 0 ) + { + ret = 1; + goto exit; + } -#if defined(MBEDTLS_X509_CRT_PARSE_C) +#if defined(MBEDTLS_X509_CRT_PARSE_C) && \ + defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) /* * Restore peer certificate (without rest of the original chain) */ if( entry->peer_cert.p != NULL ) { + /* `session->peer_cert` is NULL after the call to + * mbedtls_ssl_session_copy(), because cache entries + * have the `peer_cert` field set to NULL. */ + if( ( session->peer_cert = mbedtls_calloc( 1, sizeof(mbedtls_x509_crt) ) ) == NULL ) { @@ -119,7 +120,7 @@ int mbedtls_ssl_cache_get( void *data, mbedtls_ssl_session *session ) goto exit; } } -#endif /* MBEDTLS_X509_CRT_PARSE_C */ +#endif /* MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ ret = 0; goto exit; @@ -239,9 +240,8 @@ int mbedtls_ssl_cache_set( void *data, const mbedtls_ssl_session *session ) #endif } - memcpy( &cur->session, session, sizeof( mbedtls_ssl_session ) ); - -#if defined(MBEDTLS_X509_CRT_PARSE_C) +#if defined(MBEDTLS_X509_CRT_PARSE_C) && \ + defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) /* * If we're reusing an entry, free its certificate first */ @@ -250,26 +250,43 @@ int mbedtls_ssl_cache_set( void *data, const mbedtls_ssl_session *session ) mbedtls_free( cur->peer_cert.p ); memset( &cur->peer_cert, 0, sizeof(mbedtls_x509_buf) ); } +#endif /* MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + + /* Copy the entire session; this temporarily makes a copy of the + * X.509 CRT structure even though we only want to store the raw CRT. + * This inefficiency will go away as soon as we implement on-demand + * parsing of CRTs, in which case there's no need for the `peer_cert` + * field anymore in the first place, and we're done after this call. */ + ret = mbedtls_ssl_session_copy( &cur->session, session ); + if( ret != 0 ) + { + ret = 1; + goto exit; + } - /* - * Store peer certificate - */ - if( session->peer_cert != NULL ) +#if defined(MBEDTLS_X509_CRT_PARSE_C) && \ + defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + /* If present, free the X.509 structure and only store the raw CRT data. */ + if( cur->session.peer_cert != NULL ) { - cur->peer_cert.p = mbedtls_calloc( 1, session->peer_cert->raw.len ); + cur->peer_cert.p = + mbedtls_calloc( 1, cur->session.peer_cert->raw.len ); if( cur->peer_cert.p == NULL ) { ret = 1; goto exit; } - memcpy( cur->peer_cert.p, session->peer_cert->raw.p, - session->peer_cert->raw.len ); + memcpy( cur->peer_cert.p, + cur->session.peer_cert->raw.p, + cur->session.peer_cert->raw.len ); cur->peer_cert.len = session->peer_cert->raw.len; + mbedtls_x509_crt_free( cur->session.peer_cert ); + mbedtls_free( cur->session.peer_cert ); cur->session.peer_cert = NULL; } -#endif /* MBEDTLS_X509_CRT_PARSE_C */ +#endif /* MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ ret = 0; @@ -311,9 +328,10 @@ void mbedtls_ssl_cache_free( mbedtls_ssl_cache_context *cache ) mbedtls_ssl_session_free( &prv->session ); -#if defined(MBEDTLS_X509_CRT_PARSE_C) +#if defined(MBEDTLS_X509_CRT_PARSE_C) && \ + defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) mbedtls_free( prv->peer_cert.p ); -#endif /* MBEDTLS_X509_CRT_PARSE_C */ +#endif /* MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ mbedtls_free( prv ); } diff --git a/Externals/mbedtls/library/ssl_ciphersuites.c b/Externals/mbedtls/library/ssl_ciphersuites.c index 518f7dde00f0..3826ad27fab0 100644 --- a/Externals/mbedtls/library/ssl_ciphersuites.c +++ b/Externals/mbedtls/library/ssl_ciphersuites.c @@ -3,7 +3,7 @@ * * \brief SSL ciphersuites for mbed TLS * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -17,15 +17,9 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_SSL_TLS_C) @@ -40,6 +34,11 @@ #include +#undef HAVE_SHA384 +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) +#define HAVE_SHA384 +#endif + /* * Ordered from most preferred to least preferred in terms of security. * @@ -417,7 +416,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_GCM_C */ #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) #if defined(MBEDTLS_CIPHER_MODE_CBC) { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384", MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA, @@ -432,7 +431,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif /* MBEDTLS_GCM_C */ -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #if defined(MBEDTLS_CCM_C) { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM, "TLS-ECDHE-ECDSA-WITH-AES-256-CCM", MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA, @@ -466,13 +465,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-CBC-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_CIPHER_MODE_CBC */ #if defined(MBEDTLS_GCM_C) @@ -483,13 +482,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-GCM-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_GCM_C */ #endif /* MBEDTLS_CAMELLIA_C */ @@ -558,7 +557,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_GCM_C */ #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) #if defined(MBEDTLS_CIPHER_MODE_CBC) { MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384", MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA, @@ -573,7 +572,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif /* MBEDTLS_GCM_C */ -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_AES_C */ #if defined(MBEDTLS_CAMELLIA_C) @@ -585,13 +584,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-CBC-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_CIPHER_MODE_CBC */ #if defined(MBEDTLS_GCM_C) @@ -602,13 +601,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-GCM-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_GCM_C */ #endif /* MBEDTLS_CAMELLIA_C */ @@ -647,13 +646,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) #if defined(MBEDTLS_AES_C) -#if defined(MBEDTLS_SHA512_C) && defined(MBEDTLS_GCM_C) +#if defined(HAVE_SHA384) && defined(MBEDTLS_GCM_C) { MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384", MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_RSA, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C && MBEDTLS_GCM_C */ +#endif /* HAVE_SHA384 && MBEDTLS_GCM_C */ #if defined(MBEDTLS_SHA256_C) #if defined(MBEDTLS_GCM_C) @@ -757,13 +756,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-RSA-WITH-CAMELLIA-256-GCM-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_RSA, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_GCM_C */ #endif /* MBEDTLS_CAMELLIA_C */ @@ -782,13 +781,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) #if defined(MBEDTLS_AES_C) -#if defined(MBEDTLS_SHA512_C) && defined(MBEDTLS_GCM_C) +#if defined(HAVE_SHA384) && defined(MBEDTLS_GCM_C) { MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384, "TLS-RSA-WITH-AES-256-GCM-SHA384", MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C && MBEDTLS_GCM_C */ +#endif /* HAVE_SHA384 && MBEDTLS_GCM_C */ #if defined(MBEDTLS_SHA256_C) #if defined(MBEDTLS_GCM_C) @@ -893,13 +892,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA1_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-WITH-CAMELLIA-256-GCM-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA1_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_GCM_C */ #endif /* MBEDTLS_CAMELLIA_C */ @@ -966,7 +965,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_GCM_C */ #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) #if defined(MBEDTLS_CIPHER_MODE_CBC) { MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDH-RSA-WITH-AES-256-CBC-SHA384", MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA, @@ -981,7 +980,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif /* MBEDTLS_GCM_C */ -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_AES_C */ #if defined(MBEDTLS_CAMELLIA_C) @@ -993,13 +992,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDH-RSA-WITH-CAMELLIA-256-CBC-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_CIPHER_MODE_CBC */ #if defined(MBEDTLS_GCM_C) @@ -1010,13 +1009,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDH-RSA-WITH-CAMELLIA-256-GCM-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_GCM_C */ #endif /* MBEDTLS_CAMELLIA_C */ @@ -1085,7 +1084,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_GCM_C */ #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) #if defined(MBEDTLS_CIPHER_MODE_CBC) { MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDH-ECDSA-WITH-AES-256-CBC-SHA384", MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA, @@ -1100,7 +1099,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif /* MBEDTLS_GCM_C */ -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_AES_C */ #if defined(MBEDTLS_CAMELLIA_C) @@ -1112,13 +1111,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDH-ECDSA-WITH-CAMELLIA-256-CBC-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_CIPHER_MODE_CBC */ #if defined(MBEDTLS_GCM_C) @@ -1129,13 +1128,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDH-ECDSA-WITH-CAMELLIA-256-GCM-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_GCM_C */ #endif /* MBEDTLS_CAMELLIA_C */ @@ -1183,13 +1182,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384, "TLS-PSK-WITH-AES-256-GCM-SHA384", MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_GCM_C */ #if defined(MBEDTLS_CIPHER_MODE_CBC) @@ -1201,13 +1200,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384, "TLS-PSK-WITH-AES-256-CBC-SHA384", MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #if defined(MBEDTLS_SHA1_C) { MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA, "TLS-PSK-WITH-AES-128-CBC-SHA", @@ -1257,13 +1256,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-PSK-WITH-CAMELLIA-256-CBC-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_CIPHER_MODE_CBC */ #if defined(MBEDTLS_GCM_C) @@ -1275,13 +1274,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-PSK-WITH-CAMELLIA-256-GCM-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_GCM_C */ #endif /* MBEDTLS_CAMELLIA_C */ @@ -1319,13 +1318,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, "TLS-DHE-PSK-WITH-AES-256-GCM-SHA384", MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_GCM_C */ #if defined(MBEDTLS_CIPHER_MODE_CBC) @@ -1337,13 +1336,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA384", MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #if defined(MBEDTLS_SHA1_C) { MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA", @@ -1393,13 +1392,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-CBC-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_CIPHER_MODE_CBC */ #if defined(MBEDTLS_GCM_C) @@ -1411,13 +1410,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-GCM-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_GCM_C */ #endif /* MBEDTLS_CAMELLIA_C */ @@ -1456,13 +1455,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384", MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #if defined(MBEDTLS_SHA1_C) { MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA", @@ -1490,13 +1489,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-CAMELLIA-256-CBC-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_CIPHER_MODE_CBC */ #endif /* MBEDTLS_CAMELLIA_C */ @@ -1534,13 +1533,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, "TLS-RSA-PSK-WITH-AES-256-GCM-SHA384", MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_GCM_C */ #if defined(MBEDTLS_CIPHER_MODE_CBC) @@ -1552,13 +1551,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384", MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #if defined(MBEDTLS_SHA1_C) { MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA", @@ -1586,13 +1585,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-CBC-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_CIPHER_MODE_CBC */ #if defined(MBEDTLS_GCM_C) @@ -1604,13 +1603,13 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = 0 }, #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-GCM-SHA384", MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, -#endif /* MBEDTLS_SHA512_C */ +#endif /* HAVE_SHA384 */ #endif /* MBEDTLS_GCM_C */ #endif /* MBEDTLS_CAMELLIA_C */ @@ -1694,7 +1693,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_CIPHERSUITE_WEAK }, #endif -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_PSK_WITH_NULL_SHA384, "TLS-PSK-WITH-NULL-SHA384", MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, @@ -1720,7 +1719,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_CIPHERSUITE_WEAK }, #endif -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384, "TLS-DHE-PSK-WITH-NULL-SHA384", MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, @@ -1746,7 +1745,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_CIPHERSUITE_WEAK }, #endif -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384, "TLS-ECDHE-PSK-WITH-NULL-SHA384", MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, @@ -1772,7 +1771,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_CIPHERSUITE_WEAK }, #endif -#if defined(MBEDTLS_SHA512_C) +#if defined(HAVE_SHA384) { MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384, "TLS-RSA-PSK-WITH-NULL-SHA384", MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1, @@ -1811,7 +1810,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) -#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_GCM_C) && defined(HAVE_SHA384)) { MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384, "TLS-RSA-WITH-ARIA-256-GCM-SHA384", MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA, @@ -1819,7 +1818,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif -#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(HAVE_SHA384)) { MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384, "TLS-RSA-WITH-ARIA-256-CBC-SHA384", MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA, @@ -1848,7 +1847,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) -#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_GCM_C) && defined(HAVE_SHA384)) { MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384, "TLS-RSA-PSK-WITH-ARIA-256-GCM-SHA384", MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK, @@ -1856,7 +1855,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif -#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(HAVE_SHA384)) { MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384, "TLS-RSA-PSK-WITH-ARIA-256-CBC-SHA384", MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK, @@ -1885,7 +1884,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) -#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_GCM_C) && defined(HAVE_SHA384)) { MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384, "TLS-PSK-WITH-ARIA-256-GCM-SHA384", MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384,MBEDTLS_KEY_EXCHANGE_PSK, @@ -1893,7 +1892,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif -#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(HAVE_SHA384)) { MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384, "TLS-PSK-WITH-ARIA-256-CBC-SHA384", MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK, @@ -1922,7 +1921,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) -#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_GCM_C) && defined(HAVE_SHA384)) { MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384, "TLS-ECDH-RSA-WITH-ARIA-256-GCM-SHA384", MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA, @@ -1930,7 +1929,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif -#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(HAVE_SHA384)) { MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384, "TLS-ECDH-RSA-WITH-ARIA-256-CBC-SHA384", MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA, @@ -1959,7 +1958,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) -#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_GCM_C) && defined(HAVE_SHA384)) { MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-ARIA-256-GCM-SHA384", MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA, @@ -1967,7 +1966,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif -#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(HAVE_SHA384)) { MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-ARIA-256-CBC-SHA384", MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA, @@ -1996,7 +1995,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) -#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(HAVE_SHA384)) { MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-ARIA-256-CBC-SHA384", MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK, @@ -2017,7 +2016,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) -#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_GCM_C) && defined(HAVE_SHA384)) { MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-ARIA-256-GCM-SHA384", MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA, @@ -2025,7 +2024,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif -#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(HAVE_SHA384)) { MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-ARIA-256-CBC-SHA384", MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA, @@ -2054,7 +2053,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) -#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_GCM_C) && defined(HAVE_SHA384)) { MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384, "TLS-ECDH-ECDSA-WITH-ARIA-256-GCM-SHA384", MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA, @@ -2062,7 +2061,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif -#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(HAVE_SHA384)) { MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384, "TLS-ECDH-ECDSA-WITH-ARIA-256-CBC-SHA384", MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA, @@ -2091,7 +2090,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) -#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_GCM_C) && defined(HAVE_SHA384)) { MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384, "TLS-DHE-RSA-WITH-ARIA-256-GCM-SHA384", MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_RSA, @@ -2099,7 +2098,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif -#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(HAVE_SHA384)) { MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384, "TLS-DHE-RSA-WITH-ARIA-256-CBC-SHA384", MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_RSA, @@ -2128,7 +2127,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = #if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) -#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_GCM_C) && defined(HAVE_SHA384)) { MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384, "TLS-DHE-PSK-WITH-ARIA-256-GCM-SHA384", MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK, @@ -2136,7 +2135,7 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, 0 }, #endif -#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(HAVE_SHA384)) { MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384, "TLS-DHE-PSK-WITH-ARIA-256-CBC-SHA384", MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK, @@ -2353,7 +2352,7 @@ int mbedtls_ssl_ciphersuite_uses_ec( const mbedtls_ssl_ciphersuite_t *info ) } #endif /* MBEDTLS_ECDH_C || MBEDTLS_ECDSA_C || MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED*/ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) int mbedtls_ssl_ciphersuite_uses_psk( const mbedtls_ssl_ciphersuite_t *info ) { switch( info->key_exchange ) @@ -2368,6 +2367,6 @@ int mbedtls_ssl_ciphersuite_uses_psk( const mbedtls_ssl_ciphersuite_t *info ) return( 0 ); } } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ #endif /* MBEDTLS_SSL_TLS_C */ diff --git a/Externals/mbedtls/library/ssl_cli.c b/Externals/mbedtls/library/ssl_cli.c index afced7a99cb6..b87879ce6a66 100644 --- a/Externals/mbedtls/library/ssl_cli.c +++ b/Externals/mbedtls/library/ssl_cli.c @@ -1,7 +1,7 @@ /* * SSLv3/TLSv1 client-side functions * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,15 +15,9 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_SSL_CLI_C) @@ -35,9 +29,16 @@ #define mbedtls_free free #endif -#include "mbedtls/debug.h" #include "mbedtls/ssl.h" #include "mbedtls/ssl_internal.h" +#include "mbedtls/debug.h" +#include "mbedtls/error.h" +#include "mbedtls/constant_time.h" + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "mbedtls/psa_util.h" +#include "psa/crypto.h" +#endif /* MBEDTLS_USE_PSA_CRYPTO */ #include @@ -51,30 +52,65 @@ #include "mbedtls/platform_util.h" #endif +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) +static int ssl_conf_has_static_psk( mbedtls_ssl_config const *conf ) +{ + if( conf->psk_identity == NULL || + conf->psk_identity_len == 0 ) + { + return( 0 ); + } + + if( conf->psk != NULL && conf->psk_len != 0 ) + return( 1 ); + +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ! mbedtls_svc_key_id_is_null( conf->psk_opaque ) ) + return( 1 ); +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + + return( 0 ); +} + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +static int ssl_conf_has_static_raw_psk( mbedtls_ssl_config const *conf ) +{ + if( conf->psk_identity == NULL || + conf->psk_identity_len == 0 ) + { + return( 0 ); + } + + if( conf->psk != NULL && conf->psk_len != 0 ) + return( 1 ); + + return( 0 ); +} +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ + #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) -static void ssl_write_hostname_ext( mbedtls_ssl_context *ssl, - unsigned char *buf, - size_t *olen ) +static int ssl_write_hostname_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; size_t hostname_len; *olen = 0; if( ssl->hostname == NULL ) - return; + return( 0 ); - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, adding server name extension: %s", - ssl->hostname ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "client hello, adding server name extension: %s", + ssl->hostname ) ); hostname_len = strlen( ssl->hostname ); - if( end < p || (size_t)( end - p ) < hostname_len + 9 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small" ) ); - return; - } + MBEDTLS_SSL_CHK_BUF_PTR( p, end, hostname_len + 9 ); /* * Sect. 3, RFC 6066 (TLS Extensions Definitions) @@ -102,32 +138,35 @@ static void ssl_write_hostname_ext( mbedtls_ssl_context *ssl, * } ServerNameList; * */ - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_SERVERNAME >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_SERVERNAME ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_SERVERNAME, p, 0 ); + p += 2; + + MBEDTLS_PUT_UINT16_BE( hostname_len + 5, p, 0 ); + p += 2; - *p++ = (unsigned char)( ( (hostname_len + 5) >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( (hostname_len + 5) ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( hostname_len + 3, p, 0 ); + p += 2; - *p++ = (unsigned char)( ( (hostname_len + 3) >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( (hostname_len + 3) ) & 0xFF ); + *p++ = MBEDTLS_BYTE_0( MBEDTLS_TLS_EXT_SERVERNAME_HOSTNAME ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_SERVERNAME_HOSTNAME ) & 0xFF ); - *p++ = (unsigned char)( ( hostname_len >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( hostname_len ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( hostname_len, p, 0 ); + p += 2; memcpy( p, ssl->hostname, hostname_len ); *olen = hostname_len + 9; + + return( 0 ); } #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ #if defined(MBEDTLS_SSL_RENEGOTIATION) -static void ssl_write_renegotiation_ext( mbedtls_ssl_context *ssl, - unsigned char *buf, - size_t *olen ) +static int ssl_write_renegotiation_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; *olen = 0; @@ -135,29 +174,28 @@ static void ssl_write_renegotiation_ext( mbedtls_ssl_context *ssl, * initial ClientHello, in which case also adding the renegotiation * info extension is NOT RECOMMENDED as per RFC 5746 Section 3.4. */ if( ssl->renego_status != MBEDTLS_SSL_RENEGOTIATION_IN_PROGRESS ) - return; + return( 0 ); - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, adding renegotiation extension" ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "client hello, adding renegotiation extension" ) ); - if( end < p || (size_t)( end - p ) < 5 + ssl->verify_data_len ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small" ) ); - return; - } + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 5 + ssl->verify_data_len ); /* * Secure renegotiation */ - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_RENEGOTIATION_INFO >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_RENEGOTIATION_INFO ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_RENEGOTIATION_INFO, p, 0 ); + p += 2; *p++ = 0x00; - *p++ = ( ssl->verify_data_len + 1 ) & 0xFF; - *p++ = ssl->verify_data_len & 0xFF; + *p++ = MBEDTLS_BYTE_0( ssl->verify_data_len + 1 ); + *p++ = MBEDTLS_BYTE_0( ssl->verify_data_len ); memcpy( p, ssl->own_verify_data, ssl->verify_data_len ); *olen = 5 + ssl->verify_data_len; + + return( 0 ); } #endif /* MBEDTLS_SSL_RENEGOTIATION */ @@ -165,15 +203,16 @@ static void ssl_write_renegotiation_ext( mbedtls_ssl_context *ssl, * Only if we handle at least one key exchange that needs signatures. */ #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) -static void ssl_write_signature_algorithms_ext( mbedtls_ssl_context *ssl, - unsigned char *buf, - size_t *olen ) + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) +static int ssl_write_signature_algorithms_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; size_t sig_alg_len = 0; const int *md; + #if defined(MBEDTLS_RSA_C) || defined(MBEDTLS_ECDSA_C) unsigned char *sig_alg_list = buf + 6; #endif @@ -181,9 +220,13 @@ static void ssl_write_signature_algorithms_ext( mbedtls_ssl_context *ssl, *olen = 0; if( ssl->conf->max_minor_ver != MBEDTLS_SSL_MINOR_VERSION_3 ) - return; + return( 0 ); - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, adding signature_algorithms extension" ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "client hello, adding signature_algorithms extension" ) ); + + if( ssl->conf->sig_hashes == NULL ) + return( MBEDTLS_ERR_SSL_BAD_CONFIG ); for( md = ssl->conf->sig_hashes; *md != MBEDTLS_MD_NONE; md++ ) { @@ -193,13 +236,19 @@ static void ssl_write_signature_algorithms_ext( mbedtls_ssl_context *ssl, #if defined(MBEDTLS_RSA_C) sig_alg_len += 2; #endif + if( sig_alg_len > MBEDTLS_SSL_MAX_SIG_HASH_ALG_LIST_LEN ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "length in bytes of sig-hash-alg extension too big" ) ); + return( MBEDTLS_ERR_SSL_BAD_CONFIG ); + } } - if( end < p || (size_t)( end - p ) < sig_alg_len + 6 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small" ) ); - return; - } + /* Empty signature algorithms list, this is a configuration error. */ + if( sig_alg_len == 0 ) + return( MBEDTLS_ERR_SSL_BAD_CONFIG ); + + MBEDTLS_SSL_CHK_BUF_PTR( p, end, sig_alg_len + 6 ); /* * Prepare signature_algorithms extension (TLS 1.2) @@ -235,114 +284,111 @@ static void ssl_write_signature_algorithms_ext( mbedtls_ssl_context *ssl, * SignatureAndHashAlgorithm * supported_signature_algorithms<2..2^16-2>; */ - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_SIG_ALG >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_SIG_ALG ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_SIG_ALG, p, 0 ); + p += 2; - *p++ = (unsigned char)( ( ( sig_alg_len + 2 ) >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( ( sig_alg_len + 2 ) ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( sig_alg_len + 2, p, 0 ); + p += 2; - *p++ = (unsigned char)( ( sig_alg_len >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( sig_alg_len ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( sig_alg_len, p, 0 ); + p += 2; *olen = 6 + sig_alg_len; + + return( 0 ); } #endif /* MBEDTLS_SSL_PROTO_TLS1_2 && - MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ + MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) -static void ssl_write_supported_elliptic_curves_ext( mbedtls_ssl_context *ssl, - unsigned char *buf, - size_t *olen ) +static int ssl_write_supported_elliptic_curves_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; unsigned char *elliptic_curve_list = p + 6; size_t elliptic_curve_len = 0; const mbedtls_ecp_curve_info *info; -#if defined(MBEDTLS_ECP_C) const mbedtls_ecp_group_id *grp_id; -#else - ((void) ssl); -#endif *olen = 0; - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, adding supported_elliptic_curves extension" ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "client hello, adding supported_elliptic_curves extension" ) ); -#if defined(MBEDTLS_ECP_C) - for( grp_id = ssl->conf->curve_list; *grp_id != MBEDTLS_ECP_DP_NONE; grp_id++ ) -#else - for( info = mbedtls_ecp_curve_list(); info->grp_id != MBEDTLS_ECP_DP_NONE; info++ ) -#endif + if( ssl->conf->curve_list == NULL ) + return( MBEDTLS_ERR_SSL_BAD_CONFIG ); + + for( grp_id = ssl->conf->curve_list; + *grp_id != MBEDTLS_ECP_DP_NONE; + grp_id++ ) { -#if defined(MBEDTLS_ECP_C) info = mbedtls_ecp_curve_info_from_grp_id( *grp_id ); -#endif if( info == NULL ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid curve in ssl configuration" ) ); - return; + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "invalid curve in ssl configuration" ) ); + return( MBEDTLS_ERR_SSL_BAD_CONFIG ); } - elliptic_curve_len += 2; - } - if( end < p || (size_t)( end - p ) < 6 + elliptic_curve_len ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small" ) ); - return; + if( elliptic_curve_len > MBEDTLS_SSL_MAX_CURVE_LIST_LEN ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "malformed supported_elliptic_curves extension in config" ) ); + return( MBEDTLS_ERR_SSL_BAD_CONFIG ); + } } + /* Empty elliptic curve list, this is a configuration error. */ + if( elliptic_curve_len == 0 ) + return( MBEDTLS_ERR_SSL_BAD_CONFIG ); + + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 6 + elliptic_curve_len ); + elliptic_curve_len = 0; -#if defined(MBEDTLS_ECP_C) - for( grp_id = ssl->conf->curve_list; *grp_id != MBEDTLS_ECP_DP_NONE; grp_id++ ) -#else - for( info = mbedtls_ecp_curve_list(); info->grp_id != MBEDTLS_ECP_DP_NONE; info++ ) -#endif + for( grp_id = ssl->conf->curve_list; + *grp_id != MBEDTLS_ECP_DP_NONE; + grp_id++ ) { -#if defined(MBEDTLS_ECP_C) info = mbedtls_ecp_curve_info_from_grp_id( *grp_id ); -#endif - elliptic_curve_list[elliptic_curve_len++] = info->tls_id >> 8; - elliptic_curve_list[elliptic_curve_len++] = info->tls_id & 0xFF; + elliptic_curve_list[elliptic_curve_len++] = MBEDTLS_BYTE_1( info->tls_id ); + elliptic_curve_list[elliptic_curve_len++] = MBEDTLS_BYTE_0( info->tls_id ); } - if( elliptic_curve_len == 0 ) - return; - - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_SUPPORTED_ELLIPTIC_CURVES >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_SUPPORTED_ELLIPTIC_CURVES ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_SUPPORTED_ELLIPTIC_CURVES, p, 0 ); + p += 2; - *p++ = (unsigned char)( ( ( elliptic_curve_len + 2 ) >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( ( elliptic_curve_len + 2 ) ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( elliptic_curve_len + 2, p, 0 ); + p += 2; - *p++ = (unsigned char)( ( ( elliptic_curve_len ) >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( ( elliptic_curve_len ) ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( elliptic_curve_len, p, 0 ); + p += 2; *olen = 6 + elliptic_curve_len; + + return( 0 ); } -static void ssl_write_supported_point_formats_ext( mbedtls_ssl_context *ssl, - unsigned char *buf, - size_t *olen ) +static int ssl_write_supported_point_formats_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; + (void) ssl; /* ssl used for debugging only */ *olen = 0; - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, adding supported_point_formats extension" ) ); - - if( end < p || (size_t)( end - p ) < 6 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small" ) ); - return; - } + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "client hello, adding supported_point_formats extension" ) ); + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 6 ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_SUPPORTED_POINT_FORMATS >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_SUPPORTED_POINT_FORMATS ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_SUPPORTED_POINT_FORMATS, p, 0 ); + p += 2; *p++ = 0x00; *p++ = 2; @@ -351,36 +397,35 @@ static void ssl_write_supported_point_formats_ext( mbedtls_ssl_context *ssl, *p++ = MBEDTLS_ECP_PF_UNCOMPRESSED; *olen = 6; + + return( 0 ); } #endif /* MBEDTLS_ECDH_C || MBEDTLS_ECDSA_C || MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED */ #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) -static void ssl_write_ecjpake_kkpp_ext( mbedtls_ssl_context *ssl, - unsigned char *buf, - size_t *olen ) +static int ssl_write_ecjpake_kkpp_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; size_t kkpp_len; *olen = 0; /* Skip costly extension if we can't use EC J-PAKE anyway */ if( mbedtls_ecjpake_check( &ssl->handshake->ecjpake_ctx ) != 0 ) - return; + return( 0 ); - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, adding ecjpake_kkpp extension" ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "client hello, adding ecjpake_kkpp extension" ) ); - if( end - p < 4 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small" ) ); - return; - } + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 4 ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_ECJPAKE_KKPP >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_ECJPAKE_KKPP ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_ECJPAKE_KKPP, p, 0 ); + p += 2; /* * We may need to send ClientHello multiple times for Hello verification. @@ -393,19 +438,20 @@ static void ssl_write_ecjpake_kkpp_ext( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_MSG( 3, ( "generating new ecjpake parameters" ) ); ret = mbedtls_ecjpake_write_round_one( &ssl->handshake->ecjpake_ctx, - p + 2, end - p - 2, &kkpp_len, - ssl->conf->f_rng, ssl->conf->p_rng ); + p + 2, end - p - 2, &kkpp_len, + ssl->conf->f_rng, ssl->conf->p_rng ); if( ret != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1 , "mbedtls_ecjpake_write_round_one", ret ); - return; + MBEDTLS_SSL_DEBUG_RET( 1 , + "mbedtls_ecjpake_write_round_one", ret ); + return( ret ); } ssl->handshake->ecjpake_cache = mbedtls_calloc( 1, kkpp_len ); if( ssl->handshake->ecjpake_cache == NULL ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "allocation failed" ) ); - return; + return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); } memcpy( ssl->handshake->ecjpake_cache, p + 2, kkpp_len ); @@ -416,47 +462,86 @@ static void ssl_write_ecjpake_kkpp_ext( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_MSG( 3, ( "re-using cached ecjpake parameters" ) ); kkpp_len = ssl->handshake->ecjpake_cache_len; - - if( (size_t)( end - p - 2 ) < kkpp_len ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small" ) ); - return; - } + MBEDTLS_SSL_CHK_BUF_PTR( p + 2, end, kkpp_len ); memcpy( p + 2, ssl->handshake->ecjpake_cache, kkpp_len ); } - *p++ = (unsigned char)( ( kkpp_len >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( kkpp_len ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( kkpp_len, p, 0 ); + p += 2; *olen = kkpp_len + 4; + + return( 0 ); } #endif /* MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED */ +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) +static int ssl_write_cid_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ) +{ + unsigned char *p = buf; + size_t ext_len; + + /* + * Quoting draft-ietf-tls-dtls-connection-id-05 + * https://tools.ietf.org/html/draft-ietf-tls-dtls-connection-id-05 + * + * struct { + * opaque cid<0..2^8-1>; + * } ConnectionId; + */ + + *olen = 0; + if( ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM || + ssl->negotiate_cid == MBEDTLS_SSL_CID_DISABLED ) + { + return( 0 ); + } + MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, adding CID extension" ) ); + + /* ssl->own_cid_len is at most MBEDTLS_SSL_CID_IN_LEN_MAX + * which is at most 255, so the increment cannot overflow. */ + MBEDTLS_SSL_CHK_BUF_PTR( p, end, (unsigned)( ssl->own_cid_len + 5 ) ); + + /* Add extension ID + size */ + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_CID, p, 0 ); + p += 2; + ext_len = (size_t) ssl->own_cid_len + 1; + MBEDTLS_PUT_UINT16_BE( ext_len, p, 0 ); + p += 2; + + *p++ = (uint8_t) ssl->own_cid_len; + memcpy( p, ssl->own_cid, ssl->own_cid_len ); + + *olen = ssl->own_cid_len + 5; + + return( 0 ); +} +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) -static void ssl_write_max_fragment_length_ext( mbedtls_ssl_context *ssl, - unsigned char *buf, - size_t *olen ) +static int ssl_write_max_fragment_length_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; *olen = 0; - if( ssl->conf->mfl_code == MBEDTLS_SSL_MAX_FRAG_LEN_NONE ) { - return; - } + if( ssl->conf->mfl_code == MBEDTLS_SSL_MAX_FRAG_LEN_NONE ) + return( 0 ); - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, adding max_fragment_length extension" ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "client hello, adding max_fragment_length extension" ) ); - if( end < p || (size_t)( end - p ) < 5 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small" ) ); - return; - } + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 5 ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_MAX_FRAGMENT_LENGTH >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_MAX_FRAGMENT_LENGTH ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_MAX_FRAGMENT_LENGTH, p, 0 ); + p += 2; *p++ = 0x00; *p++ = 1; @@ -464,182 +549,169 @@ static void ssl_write_max_fragment_length_ext( mbedtls_ssl_context *ssl, *p++ = ssl->conf->mfl_code; *olen = 5; + + return( 0 ); } #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ #if defined(MBEDTLS_SSL_TRUNCATED_HMAC) -static void ssl_write_truncated_hmac_ext( mbedtls_ssl_context *ssl, - unsigned char *buf, size_t *olen ) +static int ssl_write_truncated_hmac_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; *olen = 0; if( ssl->conf->trunc_hmac == MBEDTLS_SSL_TRUNC_HMAC_DISABLED ) - { - return; - } + return( 0 ); - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, adding truncated_hmac extension" ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "client hello, adding truncated_hmac extension" ) ); - if( end < p || (size_t)( end - p ) < 4 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small" ) ); - return; - } + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 4 ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_TRUNCATED_HMAC >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_TRUNCATED_HMAC ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_TRUNCATED_HMAC, p, 0 ); + p += 2; *p++ = 0x00; *p++ = 0x00; *olen = 4; + + return( 0 ); } #endif /* MBEDTLS_SSL_TRUNCATED_HMAC */ #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) -static void ssl_write_encrypt_then_mac_ext( mbedtls_ssl_context *ssl, - unsigned char *buf, size_t *olen ) +static int ssl_write_encrypt_then_mac_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; *olen = 0; if( ssl->conf->encrypt_then_mac == MBEDTLS_SSL_ETM_DISABLED || ssl->conf->max_minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) - { - return; - } + return( 0 ); - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, adding encrypt_then_mac " - "extension" ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "client hello, adding encrypt_then_mac extension" ) ); - if( end < p || (size_t)( end - p ) < 4 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small" ) ); - return; - } + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 4 ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_ENCRYPT_THEN_MAC >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_ENCRYPT_THEN_MAC ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_ENCRYPT_THEN_MAC, p, 0 ); + p += 2; *p++ = 0x00; *p++ = 0x00; *olen = 4; + + return( 0 ); } #endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */ #if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) -static void ssl_write_extended_ms_ext( mbedtls_ssl_context *ssl, - unsigned char *buf, size_t *olen ) +static int ssl_write_extended_ms_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; *olen = 0; if( ssl->conf->extended_ms == MBEDTLS_SSL_EXTENDED_MS_DISABLED || ssl->conf->max_minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) - { - return; - } + return( 0 ); - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, adding extended_master_secret " - "extension" ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "client hello, adding extended_master_secret extension" ) ); - if( end < p || (size_t)( end - p ) < 4 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small" ) ); - return; - } + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 4 ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_EXTENDED_MASTER_SECRET >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_EXTENDED_MASTER_SECRET ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_EXTENDED_MASTER_SECRET, p, 0 ); + p += 2; *p++ = 0x00; *p++ = 0x00; *olen = 4; + + return( 0 ); } #endif /* MBEDTLS_SSL_EXTENDED_MASTER_SECRET */ #if defined(MBEDTLS_SSL_SESSION_TICKETS) -static void ssl_write_session_ticket_ext( mbedtls_ssl_context *ssl, - unsigned char *buf, size_t *olen ) +static int ssl_write_session_ticket_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; size_t tlen = ssl->session_negotiate->ticket_len; *olen = 0; if( ssl->conf->session_tickets == MBEDTLS_SSL_SESSION_TICKETS_DISABLED ) - { - return; - } + return( 0 ); - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, adding session ticket extension" ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "client hello, adding session ticket extension" ) ); - if( end < p || (size_t)( end - p ) < 4 + tlen ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small" ) ); - return; - } + /* The addition is safe here since the ticket length is 16 bit. */ + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 4 + tlen ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_SESSION_TICKET >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_SESSION_TICKET ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_SESSION_TICKET, p, 0 ); + p += 2; - *p++ = (unsigned char)( ( tlen >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( tlen ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( tlen, p, 0 ); + p += 2; *olen = 4; if( ssl->session_negotiate->ticket == NULL || tlen == 0 ) - { - return; - } + return( 0 ); - MBEDTLS_SSL_DEBUG_MSG( 3, ( "sending session ticket of length %d", tlen ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "sending session ticket of length %" MBEDTLS_PRINTF_SIZET, tlen ) ); memcpy( p, ssl->session_negotiate->ticket, tlen ); *olen += tlen; + + return( 0 ); } #endif /* MBEDTLS_SSL_SESSION_TICKETS */ #if defined(MBEDTLS_SSL_ALPN) -static void ssl_write_alpn_ext( mbedtls_ssl_context *ssl, - unsigned char *buf, size_t *olen ) +static int ssl_write_alpn_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; size_t alpnlen = 0; const char **cur; *olen = 0; if( ssl->conf->alpn_list == NULL ) - { - return; - } + return( 0 ); MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, adding alpn extension" ) ); for( cur = ssl->conf->alpn_list; *cur != NULL; cur++ ) - alpnlen += (unsigned char)( strlen( *cur ) & 0xFF ) + 1; + alpnlen += strlen( *cur ) + 1; - if( end < p || (size_t)( end - p ) < 6 + alpnlen ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small" ) ); - return; - } + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 6 + alpnlen ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_ALPN >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_ALPN ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_ALPN, p, 0 ); + p += 2; /* * opaque ProtocolName<1..2^8-1>; @@ -654,7 +726,11 @@ static void ssl_write_alpn_ext( mbedtls_ssl_context *ssl, for( cur = ssl->conf->alpn_list; *cur != NULL; cur++ ) { - *p = (unsigned char)( strlen( *cur ) & 0xFF ); + /* + * mbedtls_ssl_conf_set_alpn_protocols() checked that the length of + * protocol names is less than 255. + */ + *p = (unsigned char)strlen( *cur ); memcpy( p + 1, *cur, *p ); p += 1 + *p; } @@ -662,21 +738,139 @@ static void ssl_write_alpn_ext( mbedtls_ssl_context *ssl, *olen = p - buf; /* List length = olen - 2 (ext_type) - 2 (ext_len) - 2 (list_len) */ - buf[4] = (unsigned char)( ( ( *olen - 6 ) >> 8 ) & 0xFF ); - buf[5] = (unsigned char)( ( ( *olen - 6 ) ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( *olen - 6, buf, 4 ); /* Extension length = olen - 2 (ext_type) - 2 (ext_len) */ - buf[2] = (unsigned char)( ( ( *olen - 4 ) >> 8 ) & 0xFF ); - buf[3] = (unsigned char)( ( ( *olen - 4 ) ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( *olen - 4, buf, 2 ); + + return( 0 ); } #endif /* MBEDTLS_SSL_ALPN */ +#if defined(MBEDTLS_SSL_DTLS_SRTP) +static int ssl_write_use_srtp_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ) +{ + unsigned char *p = buf; + size_t protection_profiles_index = 0, ext_len = 0; + uint16_t mki_len = 0, profile_value = 0; + + *olen = 0; + + if( ( ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM ) || + ( ssl->conf->dtls_srtp_profile_list == NULL ) || + ( ssl->conf->dtls_srtp_profile_list_len == 0 ) ) + { + return( 0 ); + } + + /* RFC 5764 section 4.1.1 + * uint8 SRTPProtectionProfile[2]; + * + * struct { + * SRTPProtectionProfiles SRTPProtectionProfiles; + * opaque srtp_mki<0..255>; + * } UseSRTPData; + * SRTPProtectionProfile SRTPProtectionProfiles<2..2^16-1>; + */ + if( ssl->conf->dtls_srtp_mki_support == MBEDTLS_SSL_DTLS_SRTP_MKI_SUPPORTED ) + { + mki_len = ssl->dtls_srtp_info.mki_len; + } + /* Extension length = 2 bytes for profiles length, + * ssl->conf->dtls_srtp_profile_list_len * 2 (each profile is 2 bytes length ), + * 1 byte for srtp_mki vector length and the mki_len value + */ + ext_len = 2 + 2 * ( ssl->conf->dtls_srtp_profile_list_len ) + 1 + mki_len; + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, adding use_srtp extension" ) ); + + /* Check there is room in the buffer for the extension + 4 bytes + * - the extension tag (2 bytes) + * - the extension length (2 bytes) + */ + MBEDTLS_SSL_CHK_BUF_PTR( p, end, ext_len + 4 ); + + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_USE_SRTP, p, 0 ); + p += 2; + + MBEDTLS_PUT_UINT16_BE( ext_len, p, 0 ); + p += 2; + + /* protection profile length: 2*(ssl->conf->dtls_srtp_profile_list_len) */ + /* micro-optimization: + * the list size is limited to MBEDTLS_TLS_SRTP_MAX_PROFILE_LIST_LENGTH + * which is lower than 127, so the upper byte of the length is always 0 + * For the documentation, the more generic code is left in comments + * *p++ = (unsigned char)( ( ( 2 * ssl->conf->dtls_srtp_profile_list_len ) + * >> 8 ) & 0xFF ); + */ + *p++ = 0; + *p++ = MBEDTLS_BYTE_0( 2 * ssl->conf->dtls_srtp_profile_list_len ); + + for( protection_profiles_index=0; + protection_profiles_index < ssl->conf->dtls_srtp_profile_list_len; + protection_profiles_index++ ) + { + profile_value = mbedtls_ssl_check_srtp_profile_value + ( ssl->conf->dtls_srtp_profile_list[protection_profiles_index] ); + if( profile_value != MBEDTLS_TLS_SRTP_UNSET ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "ssl_write_use_srtp_ext, add profile: %04x", + profile_value ) ); + MBEDTLS_PUT_UINT16_BE( profile_value, p, 0 ); + p += 2; + } + else + { + /* + * Note: we shall never arrive here as protection profiles + * is checked by mbedtls_ssl_conf_dtls_srtp_protection_profiles function + */ + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "client hello, " + "illegal DTLS-SRTP protection profile %d", + ssl->conf->dtls_srtp_profile_list[protection_profiles_index] + ) ); + return( MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED ); + } + } + + *p++ = mki_len & 0xFF; + + if( mki_len != 0 ) + { + memcpy( p, ssl->dtls_srtp_info.mki_value, mki_len ); + /* + * Increment p to point to the current position. + */ + p += mki_len; + MBEDTLS_SSL_DEBUG_BUF( 3, "sending mki", ssl->dtls_srtp_info.mki_value, + ssl->dtls_srtp_info.mki_len ); + } + + /* + * total extension length: extension type (2 bytes) + * + extension length (2 bytes) + * + protection profile length (2 bytes) + * + 2 * number of protection profiles + * + srtp_mki vector length(1 byte) + * + mki value + */ + *olen = p - buf; + + return( 0 ); +} +#endif /* MBEDTLS_SSL_DTLS_SRTP */ + /* * Generate random bytes for ClientHello */ static int ssl_generate_random( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *p = ssl->handshake->randbytes; #if defined(MBEDTLS_HAVE_TIME) mbedtls_time_t t; @@ -695,12 +889,11 @@ static int ssl_generate_random( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_HAVE_TIME) t = mbedtls_time( NULL ); - *p++ = (unsigned char)( t >> 24 ); - *p++ = (unsigned char)( t >> 16 ); - *p++ = (unsigned char)( t >> 8 ); - *p++ = (unsigned char)( t ); + MBEDTLS_PUT_UINT32_BE( t, p, 0 ); + p += 4; - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, current time: %lu", t ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, current time: %" MBEDTLS_PRINTF_LONGLONG, + (long long) t ) ); #else if( ( ret = ssl->conf->f_rng( ssl->conf->p_rng, p, 4 ) ) != 0 ) return( ret ); @@ -724,9 +917,10 @@ static int ssl_generate_random( mbedtls_ssl_context *ssl ) * * \return 0 if valid, else 1 */ -static int ssl_validate_ciphersuite( const mbedtls_ssl_ciphersuite_t * suite_info, - const mbedtls_ssl_context * ssl, - int min_minor_ver, int max_minor_ver ) +static int ssl_validate_ciphersuite( + const mbedtls_ssl_ciphersuite_t * suite_info, + const mbedtls_ssl_context * ssl, + int min_minor_ver, int max_minor_ver ) { (void) ssl; if( suite_info == NULL ) @@ -754,15 +948,27 @@ static int ssl_validate_ciphersuite( const mbedtls_ssl_ciphersuite_t * suite_inf return( 1 ); #endif + /* Don't suggest PSK-based ciphersuite if no PSK is available. */ +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) + if( mbedtls_ssl_ciphersuite_uses_psk( suite_info ) && + ssl_conf_has_static_psk( ssl->conf ) == 0 ) + { + return( 1 ); + } +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ + return( 0 ); } static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i, n, olen, ext_len = 0; + unsigned char *buf; unsigned char *p, *q; + const unsigned char *end; + unsigned char offer_compress; const int *ciphersuites; const mbedtls_ssl_ciphersuite_t *ciphersuite_info; @@ -789,23 +995,41 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) if( ssl->conf->max_major_ver == 0 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "configured max major version is invalid, " - "consider using mbedtls_ssl_config_defaults()" ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "configured max major version is invalid, consider using mbedtls_ssl_config_defaults()" ) ); return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } + buf = ssl->out_msg; + end = buf + MBEDTLS_SSL_OUT_CONTENT_LEN; + + /* + * Check if there's enough space for the first part of the ClientHello + * consisting of the 38 bytes described below, the session identifier (at + * most 32 bytes) and its length (1 byte). + * + * Use static upper bounds instead of the actual values + * to allow the compiler to optimize this away. + */ + MBEDTLS_SSL_CHK_BUF_PTR( buf, end, 38 + 1 + 32 ); + /* - * 0 . 0 handshake type - * 1 . 3 handshake length + * The 38 first bytes of the ClientHello: + * 0 . 0 handshake type (written later) + * 1 . 3 handshake length (written later) * 4 . 5 highest version supported * 6 . 9 current UNIX time * 10 . 37 random bytes + * + * The current UNIX time (4 bytes) and following 28 random bytes are written + * by ssl_generate_random() into ssl->handshake->randbytes buffer and then + * copied from there into the output buffer. */ - buf = ssl->out_msg; - p = buf + 4; - mbedtls_ssl_write_version( ssl->conf->max_major_ver, ssl->conf->max_minor_ver, - ssl->conf->transport, p ); + p = buf + 4; + mbedtls_ssl_write_version( ssl->conf->max_major_ver, + ssl->conf->max_minor_ver, + ssl->conf->transport, p ); p += 2; MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, max version: [%d:%d]", @@ -825,7 +1049,7 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) * 38 . 38 session id length * 39 . 39+n session id * 39+n . 39+n DTLS only: cookie length (1 byte) - * 40+n . .. DTSL only: cookie + * 40+n . .. DTLS only: cookie * .. . .. ciphersuitelist length (2 bytes) * .. . .. ciphersuitelist * .. . .. compression methods length (1 byte) @@ -856,7 +1080,8 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) if( ssl->session_negotiate->ticket != NULL && ssl->session_negotiate->ticket_len != 0 ) { - ret = ssl->conf->f_rng( ssl->conf->p_rng, ssl->session_negotiate->id, 32 ); + ret = ssl->conf->f_rng( ssl->conf->p_rng, + ssl->session_negotiate->id, 32 ); if( ret != 0 ) return( ret ); @@ -866,20 +1091,41 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) } #endif /* MBEDTLS_SSL_SESSION_TICKETS */ + /* + * The first check of the output buffer size above ( + * MBEDTLS_SSL_CHK_BUF_PTR( buf, end, 38 + 1 + 32 );) + * has checked that there is enough space in the output buffer for the + * session identifier length byte and the session identifier (n <= 32). + */ *p++ = (unsigned char) n; for( i = 0; i < n; i++ ) *p++ = ssl->session_negotiate->id[i]; - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, session id len.: %d", n ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, session id len.: %" MBEDTLS_PRINTF_SIZET, n ) ); MBEDTLS_SSL_DEBUG_BUF( 3, "client hello, session id", buf + 39, n ); + /* + * With 'n' being the length of the session identifier + * + * 39+n . 39+n DTLS only: cookie length (1 byte) + * 40+n . .. DTLS only: cookie + * .. . .. ciphersuitelist length (2 bytes) + * .. . .. ciphersuitelist + * .. . .. compression methods length (1 byte) + * .. . .. compression methods + * .. . .. extensions length (2 bytes) + * .. . .. extensions + */ + /* * DTLS cookie */ #if defined(MBEDTLS_SSL_PROTO_DTLS) if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) { + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 1 ); + if( ssl->handshake->verify_cookie == NULL ) { MBEDTLS_SSL_DEBUG_MSG( 3, ( "no verify cookie to send" ) ); @@ -892,6 +1138,9 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) ssl->handshake->verify_cookie_len ); *p++ = ssl->handshake->verify_cookie_len; + + MBEDTLS_SSL_CHK_BUF_PTR( p, end, + ssl->handshake->verify_cookie_len ); memcpy( p, ssl->handshake->verify_cookie, ssl->handshake->verify_cookie_len ); p += ssl->handshake->verify_cookie_len; @@ -907,6 +1156,8 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) /* Skip writing ciphersuite length for now */ n = 0; q = p; + + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 2 ); p += 2; for( i = 0; ciphersuites[i] != 0; i++ ) @@ -918,20 +1169,23 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) ssl->conf->max_minor_ver ) != 0 ) continue; - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, add ciphersuite: %04x", - ciphersuites[i] ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, add ciphersuite: %#04x (%s)", + (unsigned int)ciphersuites[i], ciphersuite_info->name ) ); #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) uses_ec |= mbedtls_ssl_ciphersuite_uses_ec( ciphersuite_info ); #endif + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 2 ); + n++; - *p++ = (unsigned char)( ciphersuites[i] >> 8 ); - *p++ = (unsigned char)( ciphersuites[i] ); + MBEDTLS_PUT_UINT16_BE( ciphersuites[i], p, 0 ); + p += 2; } - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, got %d ciphersuites (excluding SCSVs)", n ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "client hello, got %" MBEDTLS_PRINTF_SIZET " ciphersuites (excluding SCSVs)", n ) ); /* * Add TLS_EMPTY_RENEGOTIATION_INFO_SCSV @@ -941,8 +1195,9 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) #endif { MBEDTLS_SSL_DEBUG_MSG( 3, ( "adding EMPTY_RENEGOTIATION_INFO_SCSV" ) ); - *p++ = (unsigned char)( MBEDTLS_SSL_EMPTY_RENEGOTIATION_INFO >> 8 ); - *p++ = (unsigned char)( MBEDTLS_SSL_EMPTY_RENEGOTIATION_INFO ); + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 2 ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_SSL_EMPTY_RENEGOTIATION_INFO, p, 0 ); + p += 2; n++; } @@ -951,8 +1206,10 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) if( ssl->conf->fallback == MBEDTLS_SSL_IS_FALLBACK ) { MBEDTLS_SSL_DEBUG_MSG( 3, ( "adding FALLBACK_SCSV" ) ); - *p++ = (unsigned char)( MBEDTLS_SSL_FALLBACK_SCSV_VALUE >> 8 ); - *p++ = (unsigned char)( MBEDTLS_SSL_FALLBACK_SCSV_VALUE ); + + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 2 ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_SSL_FALLBACK_SCSV_VALUE, p, 0 ); + p += 2; n++; } #endif @@ -981,8 +1238,10 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) { MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, compress len.: %d", 2 ) ); MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, compress alg.: %d %d", - MBEDTLS_SSL_COMPRESS_DEFLATE, MBEDTLS_SSL_COMPRESS_NULL ) ); + MBEDTLS_SSL_COMPRESS_DEFLATE, + MBEDTLS_SSL_COMPRESS_NULL ) ); + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 3 ); *p++ = 2; *p++ = MBEDTLS_SSL_COMPRESS_DEFLATE; *p++ = MBEDTLS_SSL_COMPRESS_NULL; @@ -993,27 +1252,45 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, compress alg.: %d", MBEDTLS_SSL_COMPRESS_NULL ) ); + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 2 ); *p++ = 1; *p++ = MBEDTLS_SSL_COMPRESS_NULL; } - // First write extensions, then the total length - // + /* First write extensions, then the total length */ + + MBEDTLS_SSL_CHK_BUF_PTR( p, end, 2 ); + #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) - ssl_write_hostname_ext( ssl, p + 2 + ext_len, &olen ); + if( ( ret = ssl_write_hostname_ext( ssl, p + 2 + ext_len, + end, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_hostname_ext", ret ); + return( ret ); + } ext_len += olen; #endif /* Note that TLS_EMPTY_RENEGOTIATION_INFO_SCSV is always added * even if MBEDTLS_SSL_RENEGOTIATION is not defined. */ #if defined(MBEDTLS_SSL_RENEGOTIATION) - ssl_write_renegotiation_ext( ssl, p + 2 + ext_len, &olen ); + if( ( ret = ssl_write_renegotiation_ext( ssl, p + 2 + ext_len, + end, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_renegotiation_ext", ret ); + return( ret ); + } ext_len += olen; #endif #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) - ssl_write_signature_algorithms_ext( ssl, p + 2 + ext_len, &olen ); + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) + if( ( ret = ssl_write_signature_algorithms_ext( ssl, p + 2 + ext_len, + end, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_signature_algorithms_ext", ret ); + return( ret ); + } ext_len += olen; #endif @@ -1021,60 +1298,125 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) if( uses_ec ) { - ssl_write_supported_elliptic_curves_ext( ssl, p + 2 + ext_len, &olen ); + if( ( ret = ssl_write_supported_elliptic_curves_ext( ssl, p + 2 + ext_len, + end, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_supported_elliptic_curves_ext", ret ); + return( ret ); + } ext_len += olen; - ssl_write_supported_point_formats_ext( ssl, p + 2 + ext_len, &olen ); + if( ( ret = ssl_write_supported_point_formats_ext( ssl, p + 2 + ext_len, + end, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_supported_point_formats_ext", ret ); + return( ret ); + } ext_len += olen; } #endif #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) - ssl_write_ecjpake_kkpp_ext( ssl, p + 2 + ext_len, &olen ); + if( ( ret = ssl_write_ecjpake_kkpp_ext( ssl, p + 2 + ext_len, + end, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_ecjpake_kkpp_ext", ret ); + return( ret ); + } ext_len += olen; #endif +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + if( ( ret = ssl_write_cid_ext( ssl, p + 2 + ext_len, end, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_cid_ext", ret ); + return( ret ); + } + ext_len += olen; +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) - ssl_write_max_fragment_length_ext( ssl, p + 2 + ext_len, &olen ); + if( ( ret = ssl_write_max_fragment_length_ext( ssl, p + 2 + ext_len, + end, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_max_fragment_length_ext", ret ); + return( ret ); + } ext_len += olen; #endif #if defined(MBEDTLS_SSL_TRUNCATED_HMAC) - ssl_write_truncated_hmac_ext( ssl, p + 2 + ext_len, &olen ); + if( ( ret = ssl_write_truncated_hmac_ext( ssl, p + 2 + ext_len, + end, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_truncated_hmac_ext", ret ); + return( ret ); + } ext_len += olen; #endif #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) - ssl_write_encrypt_then_mac_ext( ssl, p + 2 + ext_len, &olen ); + if( ( ret = ssl_write_encrypt_then_mac_ext( ssl, p + 2 + ext_len, + end, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_encrypt_then_mac_ext", ret ); + return( ret ); + } + ext_len += olen; +#endif + +#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) + if( ( ret = ssl_write_extended_ms_ext( ssl, p + 2 + ext_len, + end, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_extended_ms_ext", ret ); + return( ret ); + } ext_len += olen; #endif -#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) - ssl_write_extended_ms_ext( ssl, p + 2 + ext_len, &olen ); +#if defined(MBEDTLS_SSL_ALPN) + if( ( ret = ssl_write_alpn_ext( ssl, p + 2 + ext_len, + end, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_alpn_ext", ret ); + return( ret ); + } ext_len += olen; #endif -#if defined(MBEDTLS_SSL_ALPN) - ssl_write_alpn_ext( ssl, p + 2 + ext_len, &olen ); +#if defined(MBEDTLS_SSL_DTLS_SRTP) + if( ( ret = ssl_write_use_srtp_ext( ssl, p + 2 + ext_len, + end, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_use_srtp_ext", ret ); + return( ret ); + } ext_len += olen; #endif #if defined(MBEDTLS_SSL_SESSION_TICKETS) - ssl_write_session_ticket_ext( ssl, p + 2 + ext_len, &olen ); + if( ( ret = ssl_write_session_ticket_ext( ssl, p + 2 + ext_len, + end, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_session_ticket_ext", ret ); + return( ret ); + } ext_len += olen; #endif /* olen unused if all extensions are disabled */ ((void) olen); - MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, total extension length: %d", - ext_len ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, total extension length: %" MBEDTLS_PRINTF_SIZET, + ext_len ) ); if( ext_len > 0 ) { - *p++ = (unsigned char)( ( ext_len >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( ext_len ) & 0xFF ); - p += ext_len; + /* No need to check for space here, because the extension + * writing functions already took care of that. */ + MBEDTLS_PUT_UINT16_BE( ext_len, p, 0 ); + p += 2 + ext_len; } ssl->out_msglen = p - buf; @@ -1118,14 +1460,16 @@ static int ssl_parse_renegotiation_info( mbedtls_ssl_context *ssl, /* Check verify-data in constant-time. The length OTOH is no secret */ if( len != 1 + ssl->verify_data_len * 2 || buf[0] != ssl->verify_data_len * 2 || - mbedtls_ssl_safer_memcmp( buf + 1, + mbedtls_ct_memcmp( buf + 1, ssl->own_verify_data, ssl->verify_data_len ) != 0 || - mbedtls_ssl_safer_memcmp( buf + 1 + ssl->verify_data_len, + mbedtls_ct_memcmp( buf + 1 + ssl->verify_data_len, ssl->peer_verify_data, ssl->verify_data_len ) != 0 ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "non-matching renegotiation info" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } } @@ -1134,9 +1478,12 @@ static int ssl_parse_renegotiation_info( mbedtls_ssl_context *ssl, { if( len != 1 || buf[0] != 0x00 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "non-zero length renegotiation info" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "non-zero length renegotiation info" ) ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } @@ -1159,9 +1506,12 @@ static int ssl_parse_max_fragment_length_ext( mbedtls_ssl_context *ssl, len != 1 || buf[0] != ssl->conf->mfl_code ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "non-matching max fragment length extension" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "non-matching max fragment length extension" ) ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } @@ -1177,9 +1527,12 @@ static int ssl_parse_truncated_hmac_ext( mbedtls_ssl_context *ssl, if( ssl->conf->trunc_hmac == MBEDTLS_SSL_TRUNC_HMAC_DISABLED || len != 0 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "non-matching truncated HMAC extension" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "non-matching truncated HMAC extension" ) ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } @@ -1191,6 +1544,62 @@ static int ssl_parse_truncated_hmac_ext( mbedtls_ssl_context *ssl, } #endif /* MBEDTLS_SSL_TRUNCATED_HMAC */ +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) +static int ssl_parse_cid_ext( mbedtls_ssl_context *ssl, + const unsigned char *buf, + size_t len ) +{ + size_t peer_cid_len; + + if( /* CID extension only makes sense in DTLS */ + ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM || + /* The server must only send the CID extension if we have offered it. */ + ssl->negotiate_cid == MBEDTLS_SSL_CID_DISABLED ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "CID extension unexpected" ) ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_EXT ); + return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); + } + + if( len == 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "CID extension invalid" ) ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); + } + + peer_cid_len = *buf++; + len--; + + if( peer_cid_len > MBEDTLS_SSL_CID_OUT_LEN_MAX ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "CID extension invalid" ) ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); + } + + if( len != peer_cid_len ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "CID extension invalid" ) ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); + } + + ssl->handshake->cid_in_use = MBEDTLS_SSL_CID_ENABLED; + ssl->handshake->peer_cid_len = (uint8_t) peer_cid_len; + memcpy( ssl->handshake->peer_cid, buf, peer_cid_len ); + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "Use of CID extension negotiated" ) ); + MBEDTLS_SSL_DEBUG_BUF( 3, "Server CID", buf, peer_cid_len ); + + return( 0 ); +} +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) static int ssl_parse_encrypt_then_mac_ext( mbedtls_ssl_context *ssl, const unsigned char *buf, @@ -1200,9 +1609,12 @@ static int ssl_parse_encrypt_then_mac_ext( mbedtls_ssl_context *ssl, ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 || len != 0 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "non-matching encrypt-then-MAC extension" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "non-matching encrypt-then-MAC extension" ) ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_EXT ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } @@ -1223,9 +1635,12 @@ static int ssl_parse_extended_ms_ext( mbedtls_ssl_context *ssl, ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 || len != 0 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "non-matching extended master secret extension" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "non-matching extended master secret extension" ) ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_EXT ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } @@ -1245,9 +1660,12 @@ static int ssl_parse_session_ticket_ext( mbedtls_ssl_context *ssl, if( ssl->conf->session_tickets == MBEDTLS_SSL_SESSION_TICKETS_DISABLED || len != 0 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "non-matching session ticket extension" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "non-matching session ticket extension" ) ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_EXT ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } @@ -1310,9 +1728,9 @@ static int ssl_parse_ecjpake_kkpp( mbedtls_ssl_context *ssl, const unsigned char *buf, size_t len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; - if( ssl->transform_negotiate->ciphersuite_info->key_exchange != + if( ssl->handshake->ciphersuite_info->key_exchange != MBEDTLS_KEY_EXCHANGE_ECJPAKE ) { MBEDTLS_SSL_DEBUG_MSG( 3, ( "skip ecjpake kkpp extension" ) ); @@ -1328,8 +1746,10 @@ static int ssl_parse_ecjpake_kkpp( mbedtls_ssl_context *ssl, buf, len ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ecjpake_read_round_one", ret ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); return( ret ); } @@ -1348,8 +1768,10 @@ static int ssl_parse_alpn_ext( mbedtls_ssl_context *ssl, if( ssl->conf->alpn_list == NULL ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "non-matching ALPN extension" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_EXT ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } @@ -1405,6 +1827,123 @@ static int ssl_parse_alpn_ext( mbedtls_ssl_context *ssl, } #endif /* MBEDTLS_SSL_ALPN */ +#if defined(MBEDTLS_SSL_DTLS_SRTP) +static int ssl_parse_use_srtp_ext( mbedtls_ssl_context *ssl, + const unsigned char *buf, + size_t len ) +{ + mbedtls_ssl_srtp_profile server_protection = MBEDTLS_TLS_SRTP_UNSET; + size_t i, mki_len = 0; + uint16_t server_protection_profile_value = 0; + + /* If use_srtp is not configured, just ignore the extension */ + if( ( ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM ) || + ( ssl->conf->dtls_srtp_profile_list == NULL ) || + ( ssl->conf->dtls_srtp_profile_list_len == 0 ) ) + return( 0 ); + + /* RFC 5764 section 4.1.1 + * uint8 SRTPProtectionProfile[2]; + * + * struct { + * SRTPProtectionProfiles SRTPProtectionProfiles; + * opaque srtp_mki<0..255>; + * } UseSRTPData; + + * SRTPProtectionProfile SRTPProtectionProfiles<2..2^16-1>; + * + */ + if( ssl->conf->dtls_srtp_mki_support == MBEDTLS_SSL_DTLS_SRTP_MKI_SUPPORTED ) + { + mki_len = ssl->dtls_srtp_info.mki_len; + } + + /* + * Length is 5 + optional mki_value : one protection profile length (2 bytes) + * + protection profile (2 bytes) + * + mki_len(1 byte) + * and optional srtp_mki + */ + if( ( len < 5 ) || ( len != ( buf[4] + 5u ) ) ) + return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); + + /* + * get the server protection profile + */ + + /* + * protection profile length must be 0x0002 as we must have only + * one protection profile in server Hello + */ + if( ( buf[0] != 0 ) || ( buf[1] != 2 ) ) + return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); + + server_protection_profile_value = ( buf[2] << 8 ) | buf[3]; + server_protection = mbedtls_ssl_check_srtp_profile_value( + server_protection_profile_value ); + if( server_protection != MBEDTLS_TLS_SRTP_UNSET ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "found srtp profile: %s", + mbedtls_ssl_get_srtp_profile_as_string( + server_protection ) ) ); + } + + ssl->dtls_srtp_info.chosen_dtls_srtp_profile = MBEDTLS_TLS_SRTP_UNSET; + + /* + * Check we have the server profile in our list + */ + for( i=0; i < ssl->conf->dtls_srtp_profile_list_len; i++) + { + if( server_protection == ssl->conf->dtls_srtp_profile_list[i] ) + { + ssl->dtls_srtp_info.chosen_dtls_srtp_profile = ssl->conf->dtls_srtp_profile_list[i]; + MBEDTLS_SSL_DEBUG_MSG( 3, ( "selected srtp profile: %s", + mbedtls_ssl_get_srtp_profile_as_string( + server_protection ) ) ); + break; + } + } + + /* If no match was found : server problem, it shall never answer with incompatible profile */ + if( ssl->dtls_srtp_info.chosen_dtls_srtp_profile == MBEDTLS_TLS_SRTP_UNSET ) + { + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); + } + + /* If server does not use mki in its reply, make sure the client won't keep + * one as negotiated */ + if( len == 5 ) + { + ssl->dtls_srtp_info.mki_len = 0; + } + + /* + * RFC5764: + * If the client detects a nonzero-length MKI in the server's response + * that is different than the one the client offered, then the client + * MUST abort the handshake and SHOULD send an invalid_parameter alert. + */ + if( len > 5 && ( buf[4] != mki_len || + ( memcmp( ssl->dtls_srtp_info.mki_value, &buf[5], mki_len ) ) ) ) + { + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); + } +#if defined (MBEDTLS_DEBUG_C) + if( len > 5 ) + { + MBEDTLS_SSL_DEBUG_BUF( 3, "received mki", ssl->dtls_srtp_info.mki_value, + ssl->dtls_srtp_info.mki_len ); + } +#endif + return( 0 ); +} +#endif /* MBEDTLS_SSL_DTLS_SRTP */ + /* * Parse HelloVerifyRequest. Only called after verifying the HS type. */ @@ -1417,6 +1956,19 @@ static int ssl_parse_hello_verify_request( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse hello verify request" ) ); + /* Check that there is enough room for: + * - 2 bytes of version + * - 1 byte of cookie_len + */ + if( mbedtls_ssl_hs_hdr_len( ssl ) + 3 > ssl->in_msglen ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "incoming HelloVerifyRequest message is too short" ) ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); + return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); + } + /* * struct { * ProtocolVersion server_version; @@ -1445,8 +1997,6 @@ static int ssl_parse_hello_verify_request( mbedtls_ssl_context *ssl ) } cookie_len = *p++; - MBEDTLS_SSL_DEBUG_BUF( 3, "cookie", p, cookie_len ); - if( ( ssl->in_msg + ssl->in_msglen ) - p < cookie_len ) { MBEDTLS_SSL_DEBUG_MSG( 1, @@ -1455,6 +2005,7 @@ static int ssl_parse_hello_verify_request( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } + MBEDTLS_SSL_DEBUG_BUF( 3, "cookie", p, cookie_len ); mbedtls_free( ssl->handshake->verify_cookie ); @@ -1498,8 +2049,6 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse server hello" ) ); - buf = ssl->in_msg; - if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) { /* No alert on a read error. */ @@ -1507,6 +2056,8 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) return( ret ); } + buf = ssl->in_msg; + if( ssl->in_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE ) { #if defined(MBEDTLS_SSL_RENEGOTIATION) @@ -1517,12 +2068,13 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) if( ssl->conf->renego_max_records >= 0 && ssl->renego_records_seen > ssl->conf->renego_max_records ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "renegotiation requested, " - "but not honored by server" ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "renegotiation requested, but not honored by server" ) ); return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); } - MBEDTLS_SSL_DEBUG_MSG( 1, ( "non-handshake message during renego" ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "non-handshake message during renegotiation" ) ); ssl->keep_current_message = 1; return( MBEDTLS_ERR_SSL_WAITING_SERVER_HELLO_RENEGO ); @@ -1530,8 +2082,10 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_SSL_RENEGOTIATION */ MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server hello message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); } @@ -1585,11 +2139,13 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) ssl->major_ver > ssl->conf->max_major_ver || ssl->minor_ver > ssl->conf->max_minor_ver ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "server version out of bounds - " - " min: [%d:%d], server: [%d:%d], max: [%d:%d]", - ssl->conf->min_major_ver, ssl->conf->min_minor_ver, - ssl->major_ver, ssl->minor_ver, - ssl->conf->max_major_ver, ssl->conf->max_minor_ver ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "server version out of bounds - min: [%d:%d], server: [%d:%d], max: [%d:%d]", + ssl->conf->min_major_ver, + ssl->conf->min_minor_ver, + ssl->major_ver, ssl->minor_ver, + ssl->conf->max_major_ver, + ssl->conf->max_minor_ver ) ); mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, MBEDTLS_SSL_ALERT_MSG_PROTOCOL_VERSION ); @@ -1598,10 +2154,10 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) } MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, current time: %lu", - ( (uint32_t) buf[2] << 24 ) | - ( (uint32_t) buf[3] << 16 ) | - ( (uint32_t) buf[4] << 8 ) | - ( (uint32_t) buf[5] ) ) ); + ( (unsigned long) buf[2] << 24 ) | + ( (unsigned long) buf[3] << 16 ) | + ( (unsigned long) buf[4] << 8 ) | + ( (unsigned long) buf[5] ) ) ); memcpy( ssl->handshake->randbytes + 32, buf + 2, 32 ); @@ -1626,8 +2182,10 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) ssl->in_hslen != mbedtls_ssl_hs_hdr_len( ssl ) + 40 + n + ext_len ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server hello message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } } @@ -1666,28 +2224,31 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) if( comp != MBEDTLS_SSL_COMPRESS_NULL ) #endif/* MBEDTLS_ZLIB_SUPPORT */ { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "server hello, bad compression: %d", comp ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "server hello, bad compression: %d", comp ) ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); } /* * Initialize update checksum functions */ - ssl->transform_negotiate->ciphersuite_info = mbedtls_ssl_ciphersuite_from_id( i ); - - if( ssl->transform_negotiate->ciphersuite_info == NULL ) + ssl->handshake->ciphersuite_info = mbedtls_ssl_ciphersuite_from_id( i ); + if( ssl->handshake->ciphersuite_info == NULL ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "ciphersuite info for %04x not found", i ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "ciphersuite info for %04x not found", (unsigned int)i ) ); mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, MBEDTLS_SSL_ALERT_MSG_INTERNAL_ERROR ); return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } - mbedtls_ssl_optimize_checksum( ssl, ssl->transform_negotiate->ciphersuite_info ); + mbedtls_ssl_optimize_checksum( ssl, ssl->handshake->ciphersuite_info ); - MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, session id len.: %d", n ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, session id len.: %" MBEDTLS_PRINTF_SIZET, n ) ); MBEDTLS_SSL_DEBUG_BUF( 3, "server hello, session id", buf + 35, n ); /* @@ -1719,8 +2280,10 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) if( ( ret = mbedtls_ssl_derive_keys( ssl ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_derive_keys", ret ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_INTERNAL_ERROR ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_INTERNAL_ERROR ); return( ret ); } } @@ -1728,8 +2291,9 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 3, ( "%s session has been resumed", ssl->handshake->resume ? "a" : "no" ) ); - MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, chosen ciphersuite: %04x", i ) ); - MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, compress alg.: %d", buf[37 + n] ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, chosen ciphersuite: %04x", (unsigned) i ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, compress alg.: %d", + buf[37 + n] ) ); /* * Perform cipher suite validation in same way as in ssl_write_client_hello. @@ -1740,8 +2304,10 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) if( ssl->conf->ciphersuite_list[ssl->minor_ver][i] == 0 ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server hello message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } @@ -1752,18 +2318,23 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) } } - suite_info = mbedtls_ssl_ciphersuite_from_id( ssl->session_negotiate->ciphersuite ); - if( ssl_validate_ciphersuite( suite_info, ssl, ssl->minor_ver, ssl->minor_ver ) != 0 ) + suite_info = mbedtls_ssl_ciphersuite_from_id( + ssl->session_negotiate->ciphersuite ); + if( ssl_validate_ciphersuite( suite_info, ssl, ssl->minor_ver, + ssl->minor_ver ) != 0 ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server hello message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } - MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, chosen ciphersuite: %s", suite_info->name ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "server hello, chosen ciphersuite: %s", suite_info->name ) ); -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) if( suite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA && ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) { @@ -1778,15 +2349,18 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server hello message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } ssl->session_negotiate->compression = comp; ext = buf + 40 + n; - MBEDTLS_SSL_DEBUG_MSG( 2, ( "server hello, total extension length: %d", ext_len ) ); + MBEDTLS_SSL_DEBUG_MSG( 2, + ( "server hello, total extension length: %" MBEDTLS_PRINTF_SIZET, ext_len ) ); while( ext_len ) { @@ -1798,8 +2372,9 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) if( ext_size + 4 > ext_len ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server hello message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); + mbedtls_ssl_send_alert_message( + ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } @@ -1819,7 +2394,8 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) case MBEDTLS_TLS_EXT_MAX_FRAGMENT_LENGTH: - MBEDTLS_SSL_DEBUG_MSG( 3, ( "found max_fragment_length extension" ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "found max_fragment_length extension" ) ); if( ( ret = ssl_parse_max_fragment_length_ext( ssl, ext + 4, ext_size ) ) != 0 ) @@ -1843,6 +2419,20 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) break; #endif /* MBEDTLS_SSL_TRUNCATED_HMAC */ +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + case MBEDTLS_TLS_EXT_CID: + MBEDTLS_SSL_DEBUG_MSG( 3, ( "found CID extension" ) ); + + if( ( ret = ssl_parse_cid_ext( ssl, + ext + 4, + ext_size ) ) != 0 ) + { + return( ret ); + } + + break; +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) case MBEDTLS_TLS_EXT_ENCRYPT_THEN_MAC: MBEDTLS_SSL_DEBUG_MSG( 3, ( "found encrypt_then_mac extension" ) ); @@ -1858,7 +2448,8 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) case MBEDTLS_TLS_EXT_EXTENDED_MASTER_SECRET: - MBEDTLS_SSL_DEBUG_MSG( 3, ( "found extended_master_secret extension" ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "found extended_master_secret extension" ) ); if( ( ret = ssl_parse_extended_ms_ext( ssl, ext + 4, ext_size ) ) != 0 ) @@ -1885,7 +2476,8 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) case MBEDTLS_TLS_EXT_SUPPORTED_POINT_FORMATS: - MBEDTLS_SSL_DEBUG_MSG( 3, ( "found supported_point_formats extension" ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "found supported_point_formats extension" ) ); if( ( ret = ssl_parse_supported_point_formats_ext( ssl, ext + 4, ext_size ) ) != 0 ) @@ -1920,9 +2512,19 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) break; #endif /* MBEDTLS_SSL_ALPN */ +#if defined(MBEDTLS_SSL_DTLS_SRTP) + case MBEDTLS_TLS_EXT_USE_SRTP: + MBEDTLS_SSL_DEBUG_MSG( 3, ( "found use_srtp extension" ) ); + + if( ( ret = ssl_parse_use_srtp_ext( ssl, ext + 4, ext_size ) ) != 0 ) + return( ret ); + + break; +#endif /* MBEDTLS_SSL_DTLS_SRTP */ + default: - MBEDTLS_SSL_DEBUG_MSG( 3, ( "unknown extension found: %d (ignoring)", - ext_id ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "unknown extension found: %u (ignoring)", ext_id ) ); } ext_len -= 4 + ext_size; @@ -1939,9 +2541,11 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) * Renegotiation security checks */ if( ssl->secure_renegotiation == MBEDTLS_SSL_LEGACY_RENEGOTIATION && - ssl->conf->allow_legacy_renegotiation == MBEDTLS_SSL_LEGACY_BREAK_HANDSHAKE ) + ssl->conf->allow_legacy_renegotiation == + MBEDTLS_SSL_LEGACY_BREAK_HANDSHAKE ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "legacy renegotiation, breaking off handshake" ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "legacy renegotiation, breaking off handshake" ) ); handshake_failure = 1; } #if defined(MBEDTLS_SSL_RENEGOTIATION) @@ -1949,12 +2553,14 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) ssl->secure_renegotiation == MBEDTLS_SSL_SECURE_RENEGOTIATION && renegotiation_info_seen == 0 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "renegotiation_info extension missing (secure)" ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "renegotiation_info extension missing (secure)" ) ); handshake_failure = 1; } else if( ssl->renego_status == MBEDTLS_SSL_RENEGOTIATION_IN_PROGRESS && ssl->secure_renegotiation == MBEDTLS_SSL_LEGACY_RENEGOTIATION && - ssl->conf->allow_legacy_renegotiation == MBEDTLS_SSL_LEGACY_NO_RENEGOTIATION ) + ssl->conf->allow_legacy_renegotiation == + MBEDTLS_SSL_LEGACY_NO_RENEGOTIATION ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "legacy renegotiation not allowed" ) ); handshake_failure = 1; @@ -1963,15 +2569,18 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) ssl->secure_renegotiation == MBEDTLS_SSL_LEGACY_RENEGOTIATION && renegotiation_info_seen == 1 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "renegotiation_info extension present (legacy)" ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "renegotiation_info extension present (legacy)" ) ); handshake_failure = 1; } #endif /* MBEDTLS_SSL_RENEGOTIATION */ if( handshake_failure == 1 ) { - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } @@ -1982,10 +2591,12 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) -static int ssl_parse_server_dh_params( mbedtls_ssl_context *ssl, unsigned char **p, +static int ssl_parse_server_dh_params( mbedtls_ssl_context *ssl, + unsigned char **p, unsigned char *end ) { int ret = MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE; + size_t dhm_actual_bitlen; /* * Ephemeral DH parameters: @@ -1996,16 +2607,18 @@ static int ssl_parse_server_dh_params( mbedtls_ssl_context *ssl, unsigned char * * opaque dh_Ys<1..2^16-1>; * } ServerDHParams; */ - if( ( ret = mbedtls_dhm_read_params( &ssl->handshake->dhm_ctx, p, end ) ) != 0 ) + if( ( ret = mbedtls_dhm_read_params( &ssl->handshake->dhm_ctx, + p, end ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 2, ( "mbedtls_dhm_read_params" ), ret ); return( ret ); } - if( ssl->handshake->dhm_ctx.len * 8 < ssl->conf->dhm_min_bitlen ) + dhm_actual_bitlen = mbedtls_mpi_bitlen( &ssl->handshake->dhm_ctx.P ); + if( dhm_actual_bitlen < ssl->conf->dhm_min_bitlen ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "DHM prime too short: %d < %d", - ssl->handshake->dhm_ctx.len * 8, + MBEDTLS_SSL_DEBUG_MSG( 1, ( "DHM prime too short: %" MBEDTLS_PRINTF_SIZET " < %u", + dhm_actual_bitlen, ssl->conf->dhm_min_bitlen ) ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); } @@ -2062,6 +2675,68 @@ static int ssl_check_server_ecdh_params( const mbedtls_ssl_context *ssl ) MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED || MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */ +#if defined(MBEDTLS_USE_PSA_CRYPTO) && \ + ( defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) ) +static int ssl_parse_server_ecdh_params_psa( mbedtls_ssl_context *ssl, + unsigned char **p, + unsigned char *end ) +{ + uint16_t tls_id; + size_t ecdh_bits = 0; + uint8_t ecpoint_len; + mbedtls_ssl_handshake_params *handshake = ssl->handshake; + + /* + * Parse ECC group + */ + + if( end - *p < 4 ) + return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); + + /* First byte is curve_type; only named_curve is handled */ + if( *(*p)++ != MBEDTLS_ECP_TLS_NAMED_CURVE ) + return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); + + /* Next two bytes are the namedcurve value */ + tls_id = *(*p)++; + tls_id <<= 8; + tls_id |= *(*p)++; + + /* Convert EC group to PSA key type. */ + if( ( handshake->ecdh_psa_type = + mbedtls_psa_parse_tls_ecc_group( tls_id, &ecdh_bits ) ) == 0 ) + { + return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); + } + if( ecdh_bits > 0xffff ) + return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); + handshake->ecdh_bits = (uint16_t) ecdh_bits; + + /* + * Put peer's ECDH public key in the format understood by PSA. + */ + + ecpoint_len = *(*p)++; + if( (size_t)( end - *p ) < ecpoint_len ) + return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); + + if( mbedtls_psa_tls_ecpoint_to_psa_ec( + *p, ecpoint_len, + handshake->ecdh_psa_peerkey, + sizeof( handshake->ecdh_psa_peerkey ), + &handshake->ecdh_psa_peerkey_len ) != 0 ) + { + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + } + + *p += ecpoint_len; + return( 0 ); +} +#endif /* MBEDTLS_USE_PSA_CRYPTO && + ( MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED || + MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED ) */ + #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) @@ -2083,7 +2758,7 @@ static int ssl_parse_server_ecdh_params( mbedtls_ssl_context *ssl, (const unsigned char **) p, end ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, ( "mbedtls_ecdh_read_params" ), ret ); -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) ret = MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS; #endif @@ -2092,7 +2767,8 @@ static int ssl_parse_server_ecdh_params( mbedtls_ssl_context *ssl, if( ssl_check_server_ecdh_params( ssl ) != 0 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server key exchange message (ECDHE curve)" ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "bad server key exchange message (ECDHE curve)" ) ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); } @@ -2102,13 +2778,13 @@ static int ssl_parse_server_ecdh_params( mbedtls_ssl_context *ssl, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED || MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) static int ssl_parse_server_psk_hint( mbedtls_ssl_context *ssl, unsigned char **p, unsigned char *end ) { int ret = MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE; - size_t len; + uint16_t len; ((void) ssl); /* @@ -2118,17 +2794,17 @@ static int ssl_parse_server_psk_hint( mbedtls_ssl_context *ssl, */ if( end - (*p) < 2 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server key exchange message " - "(psk_identity_hint length)" ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "bad server key exchange message (psk_identity_hint length)" ) ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); } len = (*p)[0] << 8 | (*p)[1]; *p += 2; - if( end - (*p) < (int) len ) + if( end - (*p) < len ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server key exchange message " - "(psk_identity_hint length)" ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "bad server key exchange message (psk_identity_hint length)" ) ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); } @@ -2142,7 +2818,7 @@ static int ssl_parse_server_psk_hint( mbedtls_ssl_context *ssl, return( ret ); } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) @@ -2153,9 +2829,10 @@ static int ssl_write_encrypted_pms( mbedtls_ssl_context *ssl, size_t offset, size_t *olen, size_t pms_offset ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len_bytes = ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ? 0 : 2; unsigned char *p = ssl->handshake->premaster + pms_offset; + mbedtls_pk_context * peer_pk; if( offset + len_bytes > MBEDTLS_SSL_OUT_CONTENT_LEN ) { @@ -2170,8 +2847,9 @@ static int ssl_write_encrypted_pms( mbedtls_ssl_context *ssl, * opaque random[46]; * } PreMasterSecret; */ - mbedtls_ssl_write_version( ssl->conf->max_major_ver, ssl->conf->max_minor_ver, - ssl->conf->transport, p ); + mbedtls_ssl_write_version( ssl->conf->max_major_ver, + ssl->conf->max_minor_ver, + ssl->conf->transport, p ); if( ( ret = ssl->conf->f_rng( ssl->conf->p_rng, p + 2, 46 ) ) != 0 ) { @@ -2181,23 +2859,28 @@ static int ssl_write_encrypted_pms( mbedtls_ssl_context *ssl, ssl->handshake->pmslen = 48; +#if !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + peer_pk = &ssl->handshake->peer_pubkey; +#else /* !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ if( ssl->session_negotiate->peer_cert == NULL ) { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "certificate required" ) ); - return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); + /* Should never happen */ + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } + peer_pk = &ssl->session_negotiate->peer_cert->pk; +#endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ /* * Now write it out, encrypted */ - if( ! mbedtls_pk_can_do( &ssl->session_negotiate->peer_cert->pk, - MBEDTLS_PK_RSA ) ) + if( ! mbedtls_pk_can_do( peer_pk, MBEDTLS_PK_RSA ) ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "certificate key type mismatch" ) ); return( MBEDTLS_ERR_SSL_PK_TYPE_MISMATCH ); } - if( ( ret = mbedtls_pk_encrypt( &ssl->session_negotiate->peer_cert->pk, + if( ( ret = mbedtls_pk_encrypt( peer_pk, p, ssl->handshake->pmslen, ssl->out_msg + offset + len_bytes, olen, MBEDTLS_SSL_OUT_CONTENT_LEN - offset - len_bytes, @@ -2211,12 +2894,15 @@ static int ssl_write_encrypted_pms( mbedtls_ssl_context *ssl, defined(MBEDTLS_SSL_PROTO_TLS1_2) if( len_bytes == 2 ) { - ssl->out_msg[offset+0] = (unsigned char)( *olen >> 8 ); - ssl->out_msg[offset+1] = (unsigned char)( *olen ); + MBEDTLS_PUT_UINT16_BE( *olen, ssl->out_msg, offset ); *olen += 2; } #endif +#if !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + /* We don't need the peer's public key anymore. Free it. */ + mbedtls_pk_free( peer_pk ); +#endif /* !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ return( 0 ); } #endif /* MBEDTLS_KEY_EXCHANGE_RSA_ENABLED || @@ -2248,20 +2934,22 @@ static int ssl_parse_signature_algorithm( mbedtls_ssl_context *ssl, /* * Get hash algorithm */ - if( ( *md_alg = mbedtls_ssl_md_alg_from_hash( (*p)[0] ) ) == MBEDTLS_MD_NONE ) + if( ( *md_alg = mbedtls_ssl_md_alg_from_hash( (*p)[0] ) ) + == MBEDTLS_MD_NONE ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "Server used unsupported " - "HashAlgorithm %d", *(p)[0] ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "Server used unsupported HashAlgorithm %d", *(p)[0] ) ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); } /* * Get signature algorithm */ - if( ( *pk_alg = mbedtls_ssl_pk_alg_from_sig( (*p)[1] ) ) == MBEDTLS_PK_NONE ) + if( ( *pk_alg = mbedtls_ssl_pk_alg_from_sig( (*p)[1] ) ) + == MBEDTLS_PK_NONE ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "server used unsupported " - "SignatureAlgorithm %d", (*p)[1] ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "server used unsupported SignatureAlgorithm %d", (*p)[1] ) ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); } @@ -2270,13 +2958,15 @@ static int ssl_parse_signature_algorithm( mbedtls_ssl_context *ssl, */ if( mbedtls_ssl_check_sig_hash( ssl, *md_alg ) != 0 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "server used HashAlgorithm %d that was not offered", - *(p)[0] ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "server used HashAlgorithm %d that was not offered", *(p)[0] ) ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); } - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Server used SignatureAlgorithm %d", (*p)[1] ) ); - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Server used HashAlgorithm %d", (*p)[0] ) ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Server used SignatureAlgorithm %d", + (*p)[1] ) ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Server used HashAlgorithm %d", + (*p)[0] ) ); *p += 2; return( 0 ); @@ -2290,23 +2980,29 @@ static int ssl_parse_signature_algorithm( mbedtls_ssl_context *ssl, defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) static int ssl_get_ecdh_params_from_cert( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const mbedtls_ecp_keypair *peer_key; + mbedtls_pk_context * peer_pk; +#if !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + peer_pk = &ssl->handshake->peer_pubkey; +#else /* !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ if( ssl->session_negotiate->peer_cert == NULL ) { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "certificate required" ) ); - return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); + /* Should never happen */ + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } + peer_pk = &ssl->session_negotiate->peer_cert->pk; +#endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ - if( ! mbedtls_pk_can_do( &ssl->session_negotiate->peer_cert->pk, - MBEDTLS_PK_ECKEY ) ) + if( ! mbedtls_pk_can_do( peer_pk, MBEDTLS_PK_ECKEY ) ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "server key not ECDH capable" ) ); return( MBEDTLS_ERR_SSL_PK_TYPE_MISMATCH ); } - peer_key = mbedtls_pk_ec( ssl->session_negotiate->peer_cert->pk ); + peer_key = mbedtls_pk_ec( *peer_pk ); if( ( ret = mbedtls_ecdh_get_params( &ssl->handshake->ecdh_ctx, peer_key, MBEDTLS_ECDH_THEIRS ) ) != 0 ) @@ -2321,6 +3017,13 @@ static int ssl_get_ecdh_params_from_cert( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE ); } +#if !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + /* We don't need the peer's public key anymore. Free it, + * so that more RAM is available for upcoming expensive + * operations like ECDHE. */ + mbedtls_pk_free( peer_pk ); +#endif /* !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + return( ret ); } #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || @@ -2328,9 +3031,9 @@ static int ssl_get_ecdh_params_from_cert( mbedtls_ssl_context *ssl ) static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const mbedtls_ssl_ciphersuite_t *ciphersuite_info = - ssl->transform_negotiate->ciphersuite_info; + ssl->handshake->ciphersuite_info; unsigned char *p = NULL, *end = NULL; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse server key exchange" ) ); @@ -2354,8 +3057,10 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) if( ( ret = ssl_get_ecdh_params_from_cert( ssl ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "ssl_get_ecdh_params_from_cert", ret ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); return( ret ); } @@ -2368,7 +3073,7 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED || MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */ -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) if( ssl->handshake->ecrs_enabled && ssl->handshake->ecrs_state == ssl_ecrs_ske_start_processing ) { @@ -2385,8 +3090,10 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) if( ssl->in_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server key exchange message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); } @@ -2405,15 +3112,17 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) goto exit; } - MBEDTLS_SSL_DEBUG_MSG( 1, ( "server key exchange message must " - "not be skipped" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "server key exchange message must not be skipped" ) ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); } -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) if( ssl->handshake->ecrs_enabled ) ssl->handshake->ecrs_state = ssl_ecrs_ske_start_processing; @@ -2423,7 +3132,7 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) end = ssl->in_msg + ssl->in_hslen; MBEDTLS_SSL_DEBUG_BUF( 3, "server key exchange", p, end - p ); -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK || ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK || ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_DHE_PSK || @@ -2432,12 +3141,14 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) if( ssl_parse_server_psk_hint( ssl, &p, end ) != 0 ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server key exchange message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); } } /* FALLTROUGH */ -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) @@ -2455,14 +3166,36 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) if( ssl_parse_server_dh_params( ssl, &p, end ) != 0 ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server key exchange message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); } } else #endif /* MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED || MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED */ +#if defined(MBEDTLS_USE_PSA_CRYPTO) && \ + ( defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) ) + if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_RSA || + ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA ) + { + if( ssl_parse_server_ecdh_params_psa( ssl, &p, end ) != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server key exchange message" ) ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); + } + } + else +#endif /* MBEDTLS_USE_PSA_CRYPTO && + ( MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED || + MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED ) */ #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) @@ -2473,8 +3206,10 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) if( ssl_parse_server_ecdh_params( ssl, &p, end ) != 0 ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server key exchange message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); } } @@ -2490,8 +3225,10 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) if( ret != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ecjpake_read_round_two", ret ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); } } @@ -2502,17 +3239,23 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED) if( mbedtls_ssl_ciphersuite_uses_server_signature( ciphersuite_info ) ) { size_t sig_len, hashlen; - unsigned char hash[64]; +#if defined(MBEDTLS_USE_PSA_CRYPTO) + unsigned char hash[PSA_HASH_MAX_SIZE]; +#else + unsigned char hash[MBEDTLS_MD_MAX_SIZE]; +#endif mbedtls_md_type_t md_alg = MBEDTLS_MD_NONE; mbedtls_pk_type_t pk_alg = MBEDTLS_PK_NONE; unsigned char *params = ssl->in_msg + mbedtls_ssl_hs_hdr_len( ssl ); size_t params_len = p - params; void *rs_ctx = NULL; + mbedtls_pk_context * peer_pk; + /* * Handle the digitally-signed structure */ @@ -2522,17 +3265,24 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) if( ssl_parse_signature_algorithm( ssl, &p, end, &md_alg, &pk_alg ) != 0 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server key exchange message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "bad server key exchange message" ) ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); } - if( pk_alg != mbedtls_ssl_get_ciphersuite_sig_pk_alg( ciphersuite_info ) ) + if( pk_alg != + mbedtls_ssl_get_ciphersuite_sig_pk_alg( ciphersuite_info ) ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server key exchange message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "bad server key exchange message" ) ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); } } @@ -2562,8 +3312,10 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) if( p > end - 2 ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server key exchange message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); } sig_len = ( p[0] << 8 ) | p[1]; @@ -2572,8 +3324,10 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) if( p != end - sig_len ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server key exchange message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE ); } @@ -2615,48 +3369,62 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_BUF( 3, "parameters hash", hash, hashlen ); +#if !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + peer_pk = &ssl->handshake->peer_pubkey; +#else /* !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ if( ssl->session_negotiate->peer_cert == NULL ) { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "certificate required" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); - return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); + /* Should never happen */ + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } + peer_pk = &ssl->session_negotiate->peer_cert->pk; +#endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ /* * Verify signature */ - if( ! mbedtls_pk_can_do( &ssl->session_negotiate->peer_cert->pk, pk_alg ) ) + if( !mbedtls_pk_can_do( peer_pk, pk_alg ) ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server key exchange message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); return( MBEDTLS_ERR_SSL_PK_TYPE_MISMATCH ); } -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) if( ssl->handshake->ecrs_enabled ) rs_ctx = &ssl->handshake->ecrs_ctx.pk; #endif - if( ( ret = mbedtls_pk_verify_restartable( - &ssl->session_negotiate->peer_cert->pk, + if( ( ret = mbedtls_pk_verify_restartable( peer_pk, md_alg, hash, hashlen, p, sig_len, rs_ctx ) ) != 0 ) { -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) if( ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) #endif - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_DECRYPT_ERROR ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECRYPT_ERROR ); MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_pk_verify", ret ); -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) ret = MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS; #endif return( ret ); } + +#if !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + /* We don't need the peer's public key anymore. Free it, + * so that more RAM is available for upcoming expensive + * operations like ECDHE. */ + mbedtls_pk_free( peer_pk ); +#endif /* !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ } -#endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED */ exit: ssl->state++; @@ -2666,11 +3434,11 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) return( 0 ); } -#if ! defined(MBEDTLS_KEY_EXCHANGE__CERT_REQ_ALLOWED__ENABLED) +#if ! defined(MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED) static int ssl_parse_certificate_request( mbedtls_ssl_context *ssl ) { const mbedtls_ssl_ciphersuite_t *ciphersuite_info = - ssl->transform_negotiate->ciphersuite_info; + ssl->handshake->ciphersuite_info; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse certificate request" ) ); @@ -2684,15 +3452,15 @@ static int ssl_parse_certificate_request( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } -#else /* MBEDTLS_KEY_EXCHANGE__CERT_REQ_ALLOWED__ENABLED */ +#else /* MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED */ static int ssl_parse_certificate_request( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *buf; size_t n = 0; size_t cert_type_len = 0, dn_len = 0; const mbedtls_ssl_ciphersuite_t *ciphersuite_info = - ssl->transform_negotiate->ciphersuite_info; + ssl->handshake->ciphersuite_info; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse certificate request" ) ); @@ -2712,8 +3480,10 @@ static int ssl_parse_certificate_request( mbedtls_ssl_context *ssl ) if( ssl->in_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad certificate request message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); } @@ -2789,8 +3559,9 @@ static int ssl_parse_certificate_request( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_SSL_PROTO_TLS1_2) if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) { - size_t sig_alg_len = ( ( buf[mbedtls_ssl_hs_hdr_len( ssl ) + 1 + n] << 8 ) - | ( buf[mbedtls_ssl_hs_hdr_len( ssl ) + 2 + n] ) ); + size_t sig_alg_len = + ( ( buf[mbedtls_ssl_hs_hdr_len( ssl ) + 1 + n] << 8 ) + | ( buf[mbedtls_ssl_hs_hdr_len( ssl ) + 2 + n] ) ); #if defined(MBEDTLS_DEBUG_C) unsigned char* sig_alg; size_t i; @@ -2808,11 +3579,14 @@ static int ssl_parse_certificate_request( mbedtls_ssl_context *ssl ) * buf[...hdr_len + 3 + n + sig_alg_len], * which is one less than we need the buf to be. */ - if( ssl->in_hslen <= mbedtls_ssl_hs_hdr_len( ssl ) + 3 + n + sig_alg_len ) + if( ssl->in_hslen <= mbedtls_ssl_hs_hdr_len( ssl ) + + 3 + n + sig_alg_len ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad certificate request message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); return( MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_REQUEST ); } @@ -2820,8 +3594,9 @@ static int ssl_parse_certificate_request( mbedtls_ssl_context *ssl ) sig_alg = buf + mbedtls_ssl_hs_hdr_len( ssl ) + 3 + n; for( i = 0; i < sig_alg_len; i += 2 ) { - MBEDTLS_SSL_DEBUG_MSG( 3, ( "Supported Signature Algorithm found: %d" - ",%d", sig_alg[i], sig_alg[i + 1] ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, + ( "Supported Signature Algorithm found: %d,%d", + sig_alg[i], sig_alg[i + 1] ) ); } #endif @@ -2847,11 +3622,11 @@ static int ssl_parse_certificate_request( mbedtls_ssl_context *ssl ) return( 0 ); } -#endif /* MBEDTLS_KEY_EXCHANGE__CERT_REQ_ALLOWED__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED */ static int ssl_parse_server_hello_done( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse server hello done" ) ); @@ -2890,10 +3665,12 @@ static int ssl_parse_server_hello_done( mbedtls_ssl_context *ssl ) static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) { - int ret; - size_t i, n; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + size_t header_len; + size_t content_len; const mbedtls_ssl_ciphersuite_t *ciphersuite_info = - ssl->transform_negotiate->ciphersuite_info; + ssl->handshake->ciphersuite_info; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write client key exchange" ) ); @@ -2903,16 +3680,15 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) /* * DHM key exchange -- send G^X mod P */ - n = ssl->handshake->dhm_ctx.len; + content_len = ssl->handshake->dhm_ctx.len; - ssl->out_msg[4] = (unsigned char)( n >> 8 ); - ssl->out_msg[5] = (unsigned char)( n ); - i = 6; + MBEDTLS_PUT_UINT16_BE( content_len, ssl->out_msg, 4 ); + header_len = 6; ret = mbedtls_dhm_make_public( &ssl->handshake->dhm_ctx, - (int) mbedtls_mpi_size( &ssl->handshake->dhm_ctx.P ), - &ssl->out_msg[i], n, - ssl->conf->f_rng, ssl->conf->p_rng ); + (int) mbedtls_mpi_size( &ssl->handshake->dhm_ctx.P ), + &ssl->out_msg[header_len], content_len, + ssl->conf->f_rng, ssl->conf->p_rng ); if( ret != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_dhm_make_public", ret ); @@ -2923,10 +3699,10 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MPI( 3, "DHM: GX", &ssl->handshake->dhm_ctx.GX ); if( ( ret = mbedtls_dhm_calc_secret( &ssl->handshake->dhm_ctx, - ssl->handshake->premaster, - MBEDTLS_PREMASTER_SIZE, - &ssl->handshake->pmslen, - ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) + ssl->handshake->premaster, + MBEDTLS_PREMASTER_SIZE, + &ssl->handshake->pmslen, + ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_dhm_calc_secret", ret ); return( ret ); @@ -2936,6 +3712,93 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) } else #endif /* MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED */ +#if defined(MBEDTLS_USE_PSA_CRYPTO) && \ + ( defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) ) + if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_RSA || + ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA ) + { + psa_status_t status; + psa_key_attributes_t key_attributes; + + mbedtls_ssl_handshake_params *handshake = ssl->handshake; + + unsigned char own_pubkey[MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH]; + size_t own_pubkey_len; + unsigned char *own_pubkey_ecpoint; + size_t own_pubkey_ecpoint_len; + + header_len = 4; + + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Perform PSA-based ECDH computation." ) ); + + /* + * Generate EC private key for ECDHE exchange. + */ + + /* The master secret is obtained from the shared ECDH secret by + * applying the TLS 1.2 PRF with a specific salt and label. While + * the PSA Crypto API encourages combining key agreement schemes + * such as ECDH with fixed KDFs such as TLS 1.2 PRF, it does not + * yet support the provisioning of salt + label to the KDF. + * For the time being, we therefore need to split the computation + * of the ECDH secret and the application of the TLS 1.2 PRF. */ + key_attributes = psa_key_attributes_init(); + psa_set_key_usage_flags( &key_attributes, PSA_KEY_USAGE_DERIVE ); + psa_set_key_algorithm( &key_attributes, PSA_ALG_ECDH ); + psa_set_key_type( &key_attributes, handshake->ecdh_psa_type ); + psa_set_key_bits( &key_attributes, handshake->ecdh_bits ); + + /* Generate ECDH private key. */ + status = psa_generate_key( &key_attributes, + &handshake->ecdh_psa_privkey ); + if( status != PSA_SUCCESS ) + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + + /* Export the public part of the ECDH private key from PSA + * and convert it to ECPoint format used in ClientKeyExchange. */ + status = psa_export_public_key( handshake->ecdh_psa_privkey, + own_pubkey, sizeof( own_pubkey ), + &own_pubkey_len ); + if( status != PSA_SUCCESS ) + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + + if( mbedtls_psa_tls_psa_ec_to_ecpoint( own_pubkey, + own_pubkey_len, + &own_pubkey_ecpoint, + &own_pubkey_ecpoint_len ) != 0 ) + { + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + } + + /* Copy ECPoint structure to outgoing message buffer. */ + ssl->out_msg[header_len] = (unsigned char) own_pubkey_ecpoint_len; + memcpy( ssl->out_msg + header_len + 1, + own_pubkey_ecpoint, own_pubkey_ecpoint_len ); + content_len = own_pubkey_ecpoint_len + 1; + + /* The ECDH secret is the premaster secret used for key derivation. */ + + /* Compute ECDH shared secret. */ + status = psa_raw_key_agreement( PSA_ALG_ECDH, + handshake->ecdh_psa_privkey, + handshake->ecdh_psa_peerkey, + handshake->ecdh_psa_peerkey_len, + ssl->handshake->premaster, + sizeof( ssl->handshake->premaster ), + &ssl->handshake->pmslen ); + if( status != PSA_SUCCESS ) + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + + status = psa_destroy_key( handshake->ecdh_psa_privkey ); + if( status != PSA_SUCCESS ) + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + handshake->ecdh_psa_privkey = MBEDTLS_SVC_KEY_ID_INIT; + } + else +#endif /* MBEDTLS_USE_PSA_CRYPTO && + ( MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED || + MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED ) */ #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ @@ -2948,9 +3811,9 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) /* * ECDH key exchange -- send client public value */ - i = 4; + header_len = 4; -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) if( ssl->handshake->ecrs_enabled ) { if( ssl->handshake->ecrs_state == ssl_ecrs_cke_ecdh_calc_secret ) @@ -2961,13 +3824,13 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) #endif ret = mbedtls_ecdh_make_public( &ssl->handshake->ecdh_ctx, - &n, - &ssl->out_msg[i], 1000, + &content_len, + &ssl->out_msg[header_len], 1000, ssl->conf->f_rng, ssl->conf->p_rng ); if( ret != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ecdh_make_public", ret ); -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) ret = MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS; #endif @@ -2977,25 +3840,25 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_ECDH( 3, &ssl->handshake->ecdh_ctx, MBEDTLS_DEBUG_ECDH_Q ); -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) if( ssl->handshake->ecrs_enabled ) { - ssl->handshake->ecrs_n = n; + ssl->handshake->ecrs_n = content_len; ssl->handshake->ecrs_state = ssl_ecrs_cke_ecdh_calc_secret; } ecdh_calc_secret: if( ssl->handshake->ecrs_enabled ) - n = ssl->handshake->ecrs_n; + content_len = ssl->handshake->ecrs_n; #endif if( ( ret = mbedtls_ecdh_calc_secret( &ssl->handshake->ecdh_ctx, - &ssl->handshake->pmslen, - ssl->handshake->premaster, - MBEDTLS_MPI_MAX_SIZE, - ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) + &ssl->handshake->pmslen, + ssl->handshake->premaster, + MBEDTLS_MPI_MAX_SIZE, + ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ecdh_calc_secret", ret ); -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) ret = MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS; #endif @@ -3010,45 +3873,56 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED || MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED || MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) if( mbedtls_ssl_ciphersuite_uses_psk( ciphersuite_info ) ) { /* * opaque psk_identity<0..2^16-1>; */ - if( ssl->conf->psk == NULL || ssl->conf->psk_identity == NULL ) + if( ssl_conf_has_static_psk( ssl->conf ) == 0 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "got no private key for PSK" ) ); - return( MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED ); + /* We don't offer PSK suites if we don't have a PSK, + * and we check that the server's choice is among the + * ciphersuites we offered, so this should never happen. */ + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } - i = 4; - n = ssl->conf->psk_identity_len; + header_len = 4; + content_len = ssl->conf->psk_identity_len; - if( i + 2 + n > MBEDTLS_SSL_OUT_CONTENT_LEN ) + if( header_len + 2 + content_len > MBEDTLS_SSL_OUT_CONTENT_LEN ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "psk identity too long or " - "SSL buffer too short" ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "psk identity too long or SSL buffer too short" ) ); return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); } - ssl->out_msg[i++] = (unsigned char)( n >> 8 ); - ssl->out_msg[i++] = (unsigned char)( n ); + ssl->out_msg[header_len++] = MBEDTLS_BYTE_1( content_len ); + ssl->out_msg[header_len++] = MBEDTLS_BYTE_0( content_len ); - memcpy( ssl->out_msg + i, ssl->conf->psk_identity, ssl->conf->psk_identity_len ); - i += ssl->conf->psk_identity_len; + memcpy( ssl->out_msg + header_len, + ssl->conf->psk_identity, + ssl->conf->psk_identity_len ); + header_len += ssl->conf->psk_identity_len; #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK ) { - n = 0; + content_len = 0; } else #endif #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK ) { - if( ( ret = ssl_write_encrypted_pms( ssl, i, &n, 2 ) ) != 0 ) +#if defined(MBEDTLS_USE_PSA_CRYPTO) + /* Opaque PSKs are currently only supported for PSK-only suites. */ + if( ssl_conf_has_static_raw_psk( ssl->conf ) == 0 ) + return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + + if( ( ret = ssl_write_encrypted_pms( ssl, header_len, + &content_len, 2 ) ) != 0 ) return( ret ); } else @@ -3056,24 +3930,31 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_DHE_PSK ) { +#if defined(MBEDTLS_USE_PSA_CRYPTO) + /* Opaque PSKs are currently only supported for PSK-only suites. */ + if( ssl_conf_has_static_raw_psk( ssl->conf ) == 0 ) + return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + /* * ClientDiffieHellmanPublic public (DHM send G^X mod P) */ - n = ssl->handshake->dhm_ctx.len; + content_len = ssl->handshake->dhm_ctx.len; - if( i + 2 + n > MBEDTLS_SSL_OUT_CONTENT_LEN ) + if( header_len + 2 + content_len > + MBEDTLS_SSL_OUT_CONTENT_LEN ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "psk identity or DHM size too long" - " or SSL buffer too short" ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "psk identity or DHM size too long or SSL buffer too short" ) ); return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); } - ssl->out_msg[i++] = (unsigned char)( n >> 8 ); - ssl->out_msg[i++] = (unsigned char)( n ); + ssl->out_msg[header_len++] = MBEDTLS_BYTE_1( content_len ); + ssl->out_msg[header_len++] = MBEDTLS_BYTE_0( content_len ); ret = mbedtls_dhm_make_public( &ssl->handshake->dhm_ctx, (int) mbedtls_mpi_size( &ssl->handshake->dhm_ctx.P ), - &ssl->out_msg[i], n, + &ssl->out_msg[header_len], content_len, ssl->conf->f_rng, ssl->conf->p_rng ); if( ret != 0 ) { @@ -3086,11 +3967,19 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK ) { +#if defined(MBEDTLS_USE_PSA_CRYPTO) + /* Opaque PSKs are currently only supported for PSK-only suites. */ + if( ssl_conf_has_static_raw_psk( ssl->conf ) == 0 ) + return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + /* * ClientECDiffieHellmanPublic public; */ - ret = mbedtls_ecdh_make_public( &ssl->handshake->ecdh_ctx, &n, - &ssl->out_msg[i], MBEDTLS_SSL_OUT_CONTENT_LEN - i, + ret = mbedtls_ecdh_make_public( &ssl->handshake->ecdh_ctx, + &content_len, + &ssl->out_msg[header_len], + MBEDTLS_SSL_OUT_CONTENT_LEN - header_len, ssl->conf->f_rng, ssl->conf->p_rng ); if( ret != 0 ) { @@ -3108,20 +3997,34 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } +#if defined(MBEDTLS_USE_PSA_CRYPTO) && \ + defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) + if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK && + ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 && + ssl_conf_has_static_raw_psk( ssl->conf ) == 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "skip PMS generation for opaque PSK" ) ); + } + else +#endif /* MBEDTLS_USE_PSA_CRYPTO && + MBEDTLS_KEY_EXCHANGE_PSK_ENABLED */ if( ( ret = mbedtls_ssl_psk_derive_premaster( ssl, ciphersuite_info->key_exchange ) ) != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_psk_derive_premaster", ret ); + MBEDTLS_SSL_DEBUG_RET( 1, + "mbedtls_ssl_psk_derive_premaster", ret ); return( ret ); } } else -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA ) { - i = 4; - if( ( ret = ssl_write_encrypted_pms( ssl, i, &n, 0 ) ) != 0 ) + header_len = 4; + if( ( ret = ssl_write_encrypted_pms( ssl, header_len, + &content_len, 0 ) ) != 0 ) return( ret ); } else @@ -3129,10 +4032,12 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE ) { - i = 4; + header_len = 4; ret = mbedtls_ecjpake_write_round_two( &ssl->handshake->ecjpake_ctx, - ssl->out_msg + i, MBEDTLS_SSL_OUT_CONTENT_LEN - i, &n, + ssl->out_msg + header_len, + MBEDTLS_SSL_OUT_CONTENT_LEN - header_len, + &content_len, ssl->conf->f_rng, ssl->conf->p_rng ); if( ret != 0 ) { @@ -3157,7 +4062,7 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } - ssl->out_msglen = i + n; + ssl->out_msglen = header_len + content_len; ssl->out_msgtype = MBEDTLS_SSL_MSG_HANDSHAKE; ssl->out_msg[0] = MBEDTLS_SSL_HS_CLIENT_KEY_EXCHANGE; @@ -3174,17 +4079,12 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) return( 0 ); } -#if !defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)&& \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) +#if !defined(MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED) static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) { const mbedtls_ssl_ciphersuite_t *ciphersuite_info = - ssl->transform_negotiate->ciphersuite_info; - int ret; + ssl->handshake->ciphersuite_info; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write certificate verify" ) ); @@ -3194,11 +4094,7 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) return( ret ); } - if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_DHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE ) + if( !mbedtls_ssl_ciphersuite_cert_req_allowed( ciphersuite_info ) ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip write certificate verify" ) ); ssl->state++; @@ -3208,22 +4104,22 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } -#else +#else /* !MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED */ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) { int ret = MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE; const mbedtls_ssl_ciphersuite_t *ciphersuite_info = - ssl->transform_negotiate->ciphersuite_info; + ssl->handshake->ciphersuite_info; size_t n = 0, offset = 0; unsigned char hash[48]; unsigned char *hash_start = hash; mbedtls_md_type_t md_alg = MBEDTLS_MD_NONE; - unsigned int hashlen; + size_t hashlen; void *rs_ctx = NULL; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write certificate verify" ) ); -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) if( ssl->handshake->ecrs_enabled && ssl->handshake->ecrs_state == ssl_ecrs_crt_vrfy_sign ) { @@ -3237,11 +4133,7 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) return( ret ); } - if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_DHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE ) + if( !mbedtls_ssl_ciphersuite_cert_req_allowed( ciphersuite_info ) ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip write certificate verify" ) ); ssl->state++; @@ -3264,14 +4156,14 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) /* * Make a signature of the handshake digests */ -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) if( ssl->handshake->ecrs_enabled ) ssl->handshake->ecrs_state = ssl_ecrs_crt_vrfy_sign; sign: #endif - ssl->handshake->calc_verify( ssl, hash ); + ssl->handshake->calc_verify( ssl, hash, &hashlen ); #if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \ defined(MBEDTLS_SSL_PROTO_TLS1_1) @@ -3289,7 +4181,6 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) * sha_hash * SHA(handshake_messages); */ - hashlen = 36; md_alg = MBEDTLS_MD_NONE; /* @@ -3320,11 +4211,11 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) * Until we encounter a server that does not, we will take this * shortcut. * - * Reason: Otherwise we should have running hashes for SHA512 and SHA224 - * in order to satisfy 'weird' needs from the server side. + * Reason: Otherwise we should have running hashes for SHA512 and + * SHA224 in order to satisfy 'weird' needs from the server + * side. */ - if( ssl->transform_negotiate->ciphersuite_info->mac == - MBEDTLS_MD_SHA384 ) + if( ssl->handshake->ciphersuite_info->mac == MBEDTLS_MD_SHA384 ) { md_alg = MBEDTLS_MD_SHA384; ssl->out_msg[4] = MBEDTLS_SSL_HASH_SHA384; @@ -3347,7 +4238,7 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) if( ssl->handshake->ecrs_enabled ) rs_ctx = &ssl->handshake->ecrs_ctx.pk; #endif @@ -3358,15 +4249,14 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) ssl->conf->f_rng, ssl->conf->p_rng, rs_ctx ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_pk_sign", ret ); -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) ret = MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS; #endif return( ret ); } - ssl->out_msg[4 + offset] = (unsigned char)( n >> 8 ); - ssl->out_msg[5 + offset] = (unsigned char)( n ); + MBEDTLS_PUT_UINT16_BE( n, ssl->out_msg, offset + 4 ); ssl->out_msglen = 6 + n + offset; ssl->out_msgtype = MBEDTLS_SSL_MSG_HANDSHAKE; @@ -3384,17 +4274,12 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) return( ret ); } -#endif /* !MBEDTLS_KEY_EXCHANGE_RSA_ENABLED && - !MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED && - !MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED && - !MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED && - !MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED && - !MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED */ #if defined(MBEDTLS_SSL_SESSION_TICKETS) static int ssl_parse_new_session_ticket( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; uint32_t lifetime; size_t ticket_len; unsigned char *ticket; @@ -3411,8 +4296,10 @@ static int ssl_parse_new_session_ticket( mbedtls_ssl_context *ssl ) if( ssl->in_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad new session ticket message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); + mbedtls_ssl_send_alert_message( + ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); } @@ -3450,7 +4337,7 @@ static int ssl_parse_new_session_ticket( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_BAD_HS_NEW_SESSION_TICKET ); } - MBEDTLS_SSL_DEBUG_MSG( 3, ( "ticket length: %d", ticket_len ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "ticket length: %" MBEDTLS_PRINTF_SIZET, ticket_len ) ); /* We're not waiting for a NewSessionTicket message any more */ ssl->handshake->new_session_ticket = 0; @@ -3463,6 +4350,15 @@ static int ssl_parse_new_session_ticket( mbedtls_ssl_context *ssl ) if( ticket_len == 0 ) return( 0 ); + if( ssl->session != NULL && ssl->session->ticket != NULL ) + { + mbedtls_platform_zeroize( ssl->session->ticket, + ssl->session->ticket_len ); + mbedtls_free( ssl->session->ticket ); + ssl->session->ticket = NULL; + ssl->session->ticket_len = 0; + } + mbedtls_platform_zeroize( ssl->session_negotiate->ticket, ssl->session_negotiate->ticket_len ); mbedtls_free( ssl->session_negotiate->ticket ); diff --git a/Externals/mbedtls/library/ssl_cookie.c b/Externals/mbedtls/library/ssl_cookie.c index 56e9bdd2bf44..abf29ae717ef 100644 --- a/Externals/mbedtls/library/ssl_cookie.c +++ b/Externals/mbedtls/library/ssl_cookie.c @@ -1,7 +1,7 @@ /* * DTLS cookie callbacks implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,19 +15,13 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * These session callbacks use a simple chained list * to store and retrieve the session information. */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_SSL_COOKIE_C) @@ -40,7 +34,9 @@ #include "mbedtls/ssl_cookie.h" #include "mbedtls/ssl_internal.h" +#include "mbedtls/error.h" #include "mbedtls/platform_util.h" +#include "mbedtls/constant_time.h" #include @@ -104,7 +100,7 @@ int mbedtls_ssl_cookie_setup( mbedtls_ssl_cookie_ctx *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char key[COOKIE_MD_OUTLEN]; if( ( ret = f_rng( p_rng, key, sizeof( key ) ) ) != 0 ) @@ -133,8 +129,7 @@ static int ssl_cookie_hmac( mbedtls_md_context_t *hmac_ctx, { unsigned char hmac_out[COOKIE_MD_OUTLEN]; - if( (size_t)( end - *p ) < COOKIE_HMAC_LEN ) - return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); + MBEDTLS_SSL_CHK_BUF_PTR( *p, end, COOKIE_HMAC_LEN ); if( mbedtls_md_hmac_reset( hmac_ctx ) != 0 || mbedtls_md_hmac_update( hmac_ctx, time, 4 ) != 0 || @@ -157,15 +152,14 @@ int mbedtls_ssl_cookie_write( void *p_ctx, unsigned char **p, unsigned char *end, const unsigned char *cli_id, size_t cli_id_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ssl_cookie_ctx *ctx = (mbedtls_ssl_cookie_ctx *) p_ctx; unsigned long t; if( ctx == NULL || cli_id == NULL ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - if( (size_t)( end - *p ) < COOKIE_LEN ) - return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); + MBEDTLS_SSL_CHK_BUF_PTR( *p, end, COOKIE_LEN ); #if defined(MBEDTLS_HAVE_TIME) t = (unsigned long) mbedtls_time( NULL ); @@ -173,15 +167,12 @@ int mbedtls_ssl_cookie_write( void *p_ctx, t = ctx->serial++; #endif - (*p)[0] = (unsigned char)( t >> 24 ); - (*p)[1] = (unsigned char)( t >> 16 ); - (*p)[2] = (unsigned char)( t >> 8 ); - (*p)[3] = (unsigned char)( t ); + MBEDTLS_PUT_UINT32_BE(t, *p, 0); *p += 4; #if defined(MBEDTLS_THREADING_C) if( ( ret = mbedtls_mutex_lock( &ctx->mutex ) ) != 0 ) - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_SSL_INTERNAL_ERROR, ret ) ); #endif ret = ssl_cookie_hmac( &ctx->hmac_ctx, *p - 4, @@ -189,8 +180,8 @@ int mbedtls_ssl_cookie_write( void *p_ctx, #if defined(MBEDTLS_THREADING_C) if( mbedtls_mutex_unlock( &ctx->mutex ) != 0 ) - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR + - MBEDTLS_ERR_THREADING_MUTEX_ERROR ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_SSL_INTERNAL_ERROR, + MBEDTLS_ERR_THREADING_MUTEX_ERROR ) ); #endif return( ret ); @@ -217,7 +208,7 @@ int mbedtls_ssl_cookie_check( void *p_ctx, #if defined(MBEDTLS_THREADING_C) if( ( ret = mbedtls_mutex_lock( &ctx->mutex ) ) != 0 ) - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_SSL_INTERNAL_ERROR, ret ) ); #endif if( ssl_cookie_hmac( &ctx->hmac_ctx, cookie, @@ -227,15 +218,20 @@ int mbedtls_ssl_cookie_check( void *p_ctx, #if defined(MBEDTLS_THREADING_C) if( mbedtls_mutex_unlock( &ctx->mutex ) != 0 ) - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR + - MBEDTLS_ERR_THREADING_MUTEX_ERROR ); + { + ret = MBEDTLS_ERROR_ADD( MBEDTLS_ERR_SSL_INTERNAL_ERROR, + MBEDTLS_ERR_THREADING_MUTEX_ERROR ); + } #endif if( ret != 0 ) - return( ret ); + goto exit; - if( mbedtls_ssl_safer_memcmp( cookie + 4, ref_hmac, sizeof( ref_hmac ) ) != 0 ) - return( -1 ); + if( mbedtls_ct_memcmp( cookie + 4, ref_hmac, sizeof( ref_hmac ) ) != 0 ) + { + ret = -1; + goto exit; + } #if defined(MBEDTLS_HAVE_TIME) cur_time = (unsigned long) mbedtls_time( NULL ); @@ -249,8 +245,13 @@ int mbedtls_ssl_cookie_check( void *p_ctx, ( (unsigned long) cookie[3] ); if( ctx->timeout != 0 && cur_time - cookie_time > ctx->timeout ) - return( -1 ); + { + ret = -1; + goto exit; + } - return( 0 ); +exit: + mbedtls_platform_zeroize( ref_hmac, sizeof( ref_hmac ) ); + return( ret ); } #endif /* MBEDTLS_SSL_COOKIE_C */ diff --git a/Externals/mbedtls/library/ssl_msg.c b/Externals/mbedtls/library/ssl_msg.c new file mode 100644 index 000000000000..0b696dd56120 --- /dev/null +++ b/Externals/mbedtls/library/ssl_msg.c @@ -0,0 +1,5922 @@ +/* + * Generic SSL/TLS messaging layer functions + * (record layer + retransmission state machine) + * + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * The SSL 3.0 specification was drafted by Netscape in 1996, + * and became an IETF standard in 1999. + * + * http://wp.netscape.com/eng/ssl3/ + * http://www.ietf.org/rfc/rfc2246.txt + * http://www.ietf.org/rfc/rfc4346.txt + */ + +#include "common.h" + +#if defined(MBEDTLS_SSL_TLS_C) + +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#include +#define mbedtls_calloc calloc +#define mbedtls_free free +#endif + +#include "mbedtls/ssl.h" +#include "mbedtls/ssl_internal.h" +#include "mbedtls/debug.h" +#include "mbedtls/error.h" +#include "mbedtls/platform_util.h" +#include "mbedtls/version.h" +#include "constant_time_internal.h" +#include "mbedtls/constant_time.h" + +#include + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "mbedtls/psa_util.h" +#include "psa/crypto.h" +#endif + +#if defined(MBEDTLS_X509_CRT_PARSE_C) +#include "mbedtls/oid.h" +#endif + +static uint32_t ssl_get_hs_total_len( mbedtls_ssl_context const *ssl ); + +/* + * Start a timer. + * Passing millisecs = 0 cancels a running timer. + */ +void mbedtls_ssl_set_timer( mbedtls_ssl_context *ssl, uint32_t millisecs ) +{ + if( ssl->f_set_timer == NULL ) + return; + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "set_timer to %d ms", (int) millisecs ) ); + ssl->f_set_timer( ssl->p_timer, millisecs / 4, millisecs ); +} + +/* + * Return -1 is timer is expired, 0 if it isn't. + */ +int mbedtls_ssl_check_timer( mbedtls_ssl_context *ssl ) +{ + if( ssl->f_get_timer == NULL ) + return( 0 ); + + if( ssl->f_get_timer( ssl->p_timer ) == 2 ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "timer expired" ) ); + return( -1 ); + } + + return( 0 ); +} + +#if defined(MBEDTLS_SSL_RECORD_CHECKING) +static int ssl_parse_record_header( mbedtls_ssl_context const *ssl, + unsigned char *buf, + size_t len, + mbedtls_record *rec ); + +int mbedtls_ssl_check_record( mbedtls_ssl_context const *ssl, + unsigned char *buf, + size_t buflen ) +{ + int ret = 0; + MBEDTLS_SSL_DEBUG_MSG( 1, ( "=> mbedtls_ssl_check_record" ) ); + MBEDTLS_SSL_DEBUG_BUF( 3, "record buffer", buf, buflen ); + + /* We don't support record checking in TLS because + * (a) there doesn't seem to be a usecase for it, and + * (b) In SSLv3 and TLS 1.0, CBC record decryption has state + * and we'd need to backup the transform here. + */ + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_STREAM ) + { + ret = MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE; + goto exit; + } +#if defined(MBEDTLS_SSL_PROTO_DTLS) + else + { + mbedtls_record rec; + + ret = ssl_parse_record_header( ssl, buf, buflen, &rec ); + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 3, "ssl_parse_record_header", ret ); + goto exit; + } + + if( ssl->transform_in != NULL ) + { + ret = mbedtls_ssl_decrypt_buf( ssl, ssl->transform_in, &rec ); + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 3, "mbedtls_ssl_decrypt_buf", ret ); + goto exit; + } + } + } +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + +exit: + /* On success, we have decrypted the buffer in-place, so make + * sure we don't leak any plaintext data. */ + mbedtls_platform_zeroize( buf, buflen ); + + /* For the purpose of this API, treat messages with unexpected CID + * as well as such from future epochs as unexpected. */ + if( ret == MBEDTLS_ERR_SSL_UNEXPECTED_CID || + ret == MBEDTLS_ERR_SSL_EARLY_MESSAGE ) + { + ret = MBEDTLS_ERR_SSL_UNEXPECTED_RECORD; + } + + MBEDTLS_SSL_DEBUG_MSG( 1, ( "<= mbedtls_ssl_check_record" ) ); + return( ret ); +} +#endif /* MBEDTLS_SSL_RECORD_CHECKING */ + +#define SSL_DONT_FORCE_FLUSH 0 +#define SSL_FORCE_FLUSH 1 + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + +/* Forward declarations for functions related to message buffering. */ +static void ssl_buffering_free_slot( mbedtls_ssl_context *ssl, + uint8_t slot ); +static void ssl_free_buffered_record( mbedtls_ssl_context *ssl ); +static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ); +static int ssl_load_buffered_record( mbedtls_ssl_context *ssl ); +static int ssl_buffer_message( mbedtls_ssl_context *ssl ); +static int ssl_buffer_future_record( mbedtls_ssl_context *ssl, + mbedtls_record const *rec ); +static int ssl_next_record_is_in_datagram( mbedtls_ssl_context *ssl ); + +static size_t ssl_get_maximum_datagram_size( mbedtls_ssl_context const *ssl ) +{ + size_t mtu = mbedtls_ssl_get_current_mtu( ssl ); +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + size_t out_buf_len = ssl->out_buf_len; +#else + size_t out_buf_len = MBEDTLS_SSL_OUT_BUFFER_LEN; +#endif + + if( mtu != 0 && mtu < out_buf_len ) + return( mtu ); + + return( out_buf_len ); +} + +static int ssl_get_remaining_space_in_datagram( mbedtls_ssl_context const *ssl ) +{ + size_t const bytes_written = ssl->out_left; + size_t const mtu = ssl_get_maximum_datagram_size( ssl ); + + /* Double-check that the write-index hasn't gone + * past what we can transmit in a single datagram. */ + if( bytes_written > mtu ) + { + /* Should never happen... */ + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + return( (int) ( mtu - bytes_written ) ); +} + +static int ssl_get_remaining_payload_in_datagram( mbedtls_ssl_context const *ssl ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t remaining, expansion; + size_t max_len = MBEDTLS_SSL_OUT_CONTENT_LEN; + +#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) + const size_t mfl = mbedtls_ssl_get_output_max_frag_len( ssl ); + + if( max_len > mfl ) + max_len = mfl; + + /* By the standard (RFC 6066 Sect. 4), the MFL extension + * only limits the maximum record payload size, so in theory + * we would be allowed to pack multiple records of payload size + * MFL into a single datagram. However, this would mean that there's + * no way to explicitly communicate MTU restrictions to the peer. + * + * The following reduction of max_len makes sure that we never + * write datagrams larger than MFL + Record Expansion Overhead. + */ + if( max_len <= ssl->out_left ) + return( 0 ); + + max_len -= ssl->out_left; +#endif + + ret = ssl_get_remaining_space_in_datagram( ssl ); + if( ret < 0 ) + return( ret ); + remaining = (size_t) ret; + + ret = mbedtls_ssl_get_record_expansion( ssl ); + if( ret < 0 ) + return( ret ); + expansion = (size_t) ret; + + if( remaining <= expansion ) + return( 0 ); + + remaining -= expansion; + if( remaining >= max_len ) + remaining = max_len; + + return( (int) remaining ); +} + +/* + * Double the retransmit timeout value, within the allowed range, + * returning -1 if the maximum value has already been reached. + */ +static int ssl_double_retransmit_timeout( mbedtls_ssl_context *ssl ) +{ + uint32_t new_timeout; + + if( ssl->handshake->retransmit_timeout >= ssl->conf->hs_timeout_max ) + return( -1 ); + + /* Implement the final paragraph of RFC 6347 section 4.1.1.1 + * in the following way: after the initial transmission and a first + * retransmission, back off to a temporary estimated MTU of 508 bytes. + * This value is guaranteed to be deliverable (if not guaranteed to be + * delivered) of any compliant IPv4 (and IPv6) network, and should work + * on most non-IP stacks too. */ + if( ssl->handshake->retransmit_timeout != ssl->conf->hs_timeout_min ) + { + ssl->handshake->mtu = 508; + MBEDTLS_SSL_DEBUG_MSG( 2, ( "mtu autoreduction to %d bytes", ssl->handshake->mtu ) ); + } + + new_timeout = 2 * ssl->handshake->retransmit_timeout; + + /* Avoid arithmetic overflow and range overflow */ + if( new_timeout < ssl->handshake->retransmit_timeout || + new_timeout > ssl->conf->hs_timeout_max ) + { + new_timeout = ssl->conf->hs_timeout_max; + } + + ssl->handshake->retransmit_timeout = new_timeout; + MBEDTLS_SSL_DEBUG_MSG( 3, ( "update timeout value to %lu millisecs", + (unsigned long) ssl->handshake->retransmit_timeout ) ); + + return( 0 ); +} + +static void ssl_reset_retransmit_timeout( mbedtls_ssl_context *ssl ) +{ + ssl->handshake->retransmit_timeout = ssl->conf->hs_timeout_min; + MBEDTLS_SSL_DEBUG_MSG( 3, ( "update timeout value to %lu millisecs", + (unsigned long) ssl->handshake->retransmit_timeout ) ); +} +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + +#if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) +int (*mbedtls_ssl_hw_record_init)( mbedtls_ssl_context *ssl, + const unsigned char *key_enc, const unsigned char *key_dec, + size_t keylen, + const unsigned char *iv_enc, const unsigned char *iv_dec, + size_t ivlen, + const unsigned char *mac_enc, const unsigned char *mac_dec, + size_t maclen ) = NULL; +int (*mbedtls_ssl_hw_record_activate)( mbedtls_ssl_context *ssl, int direction) = NULL; +int (*mbedtls_ssl_hw_record_reset)( mbedtls_ssl_context *ssl ) = NULL; +int (*mbedtls_ssl_hw_record_write)( mbedtls_ssl_context *ssl ) = NULL; +int (*mbedtls_ssl_hw_record_read)( mbedtls_ssl_context *ssl ) = NULL; +int (*mbedtls_ssl_hw_record_finish)( mbedtls_ssl_context *ssl ) = NULL; +#endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ + +/* + * Encryption/decryption functions + */ + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) || \ + defined(MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL) + +static size_t ssl_compute_padding_length( size_t len, + size_t granularity ) +{ + return( ( granularity - ( len + 1 ) % granularity ) % granularity ); +} + +/* This functions transforms a (D)TLS plaintext fragment and a record content + * type into an instance of the (D)TLSInnerPlaintext structure. This is used + * in DTLS 1.2 + CID and within TLS 1.3 to allow flexible padding and to protect + * a record's content type. + * + * struct { + * opaque content[DTLSPlaintext.length]; + * ContentType real_type; + * uint8 zeros[length_of_padding]; + * } (D)TLSInnerPlaintext; + * + * Input: + * - `content`: The beginning of the buffer holding the + * plaintext to be wrapped. + * - `*content_size`: The length of the plaintext in Bytes. + * - `max_len`: The number of Bytes available starting from + * `content`. This must be `>= *content_size`. + * - `rec_type`: The desired record content type. + * + * Output: + * - `content`: The beginning of the resulting (D)TLSInnerPlaintext structure. + * - `*content_size`: The length of the resulting (D)TLSInnerPlaintext structure. + * + * Returns: + * - `0` on success. + * - A negative error code if `max_len` didn't offer enough space + * for the expansion. + */ +static int ssl_build_inner_plaintext( unsigned char *content, + size_t *content_size, + size_t remaining, + uint8_t rec_type, + size_t pad ) +{ + size_t len = *content_size; + + /* Write real content type */ + if( remaining == 0 ) + return( -1 ); + content[ len ] = rec_type; + len++; + remaining--; + + if( remaining < pad ) + return( -1 ); + memset( content + len, 0, pad ); + len += pad; + remaining -= pad; + + *content_size = len; + return( 0 ); +} + +/* This function parses a (D)TLSInnerPlaintext structure. + * See ssl_build_inner_plaintext() for details. */ +static int ssl_parse_inner_plaintext( unsigned char const *content, + size_t *content_size, + uint8_t *rec_type ) +{ + size_t remaining = *content_size; + + /* Determine length of padding by skipping zeroes from the back. */ + do + { + if( remaining == 0 ) + return( -1 ); + remaining--; + } while( content[ remaining ] == 0 ); + + *content_size = remaining; + *rec_type = content[ remaining ]; + + return( 0 ); +} +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID || + MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL */ + +/* `add_data` must have size 13 Bytes if the CID extension is disabled, + * and 13 + 1 + CID-length Bytes if the CID extension is enabled. */ +static void ssl_extract_add_data_from_record( unsigned char* add_data, + size_t *add_data_len, + mbedtls_record *rec, + unsigned minor_ver ) +{ + /* Quoting RFC 5246 (TLS 1.2): + * + * additional_data = seq_num + TLSCompressed.type + + * TLSCompressed.version + TLSCompressed.length; + * + * For the CID extension, this is extended as follows + * (quoting draft-ietf-tls-dtls-connection-id-05, + * https://tools.ietf.org/html/draft-ietf-tls-dtls-connection-id-05): + * + * additional_data = seq_num + DTLSPlaintext.type + + * DTLSPlaintext.version + + * cid + + * cid_length + + * length_of_DTLSInnerPlaintext; + * + * For TLS 1.3, the record sequence number is dropped from the AAD + * and encoded within the nonce of the AEAD operation instead. + */ + + unsigned char *cur = add_data; + +#if defined(MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL) + if( minor_ver != MBEDTLS_SSL_MINOR_VERSION_4 ) +#endif /* MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL */ + { + ((void) minor_ver); + memcpy( cur, rec->ctr, sizeof( rec->ctr ) ); + cur += sizeof( rec->ctr ); + } + + *cur = rec->type; + cur++; + + memcpy( cur, rec->ver, sizeof( rec->ver ) ); + cur += sizeof( rec->ver ); + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + if( rec->cid_len != 0 ) + { + memcpy( cur, rec->cid, rec->cid_len ); + cur += rec->cid_len; + + *cur = rec->cid_len; + cur++; + + MBEDTLS_PUT_UINT16_BE( rec->data_len, cur, 0 ); + cur += 2; + } + else +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + { + MBEDTLS_PUT_UINT16_BE( rec->data_len, cur, 0 ); + cur += 2; + } + + *add_data_len = cur - add_data; +} + +#if defined(MBEDTLS_SSL_PROTO_SSL3) + +#define SSL3_MAC_MAX_BYTES 20 /* MD-5 or SHA-1 */ + +/* + * SSLv3.0 MAC functions + */ +static int ssl_mac( mbedtls_md_context_t *md_ctx, + const unsigned char *secret, + const unsigned char *buf, size_t len, + const unsigned char *ctr, int type, + unsigned char out[SSL3_MAC_MAX_BYTES] ) +{ + unsigned char header[11]; + unsigned char padding[48]; + int padlen; + int md_size = mbedtls_md_get_size( md_ctx->md_info ); + int md_type = mbedtls_md_get_type( md_ctx->md_info ); + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + /* Only MD5 and SHA-1 supported */ + if( md_type == MBEDTLS_MD_MD5 ) + padlen = 48; + else + padlen = 40; + + memcpy( header, ctr, 8 ); + header[8] = (unsigned char) type; + MBEDTLS_PUT_UINT16_BE( len, header, 9); + + memset( padding, 0x36, padlen ); + ret = mbedtls_md_starts( md_ctx ); + if( ret != 0 ) + return( ret ); + ret = mbedtls_md_update( md_ctx, secret, md_size ); + if( ret != 0 ) + return( ret ); + ret = mbedtls_md_update( md_ctx, padding, padlen ); + if( ret != 0 ) + return( ret ); + ret = mbedtls_md_update( md_ctx, header, 11 ); + if( ret != 0 ) + return( ret ); + ret = mbedtls_md_update( md_ctx, buf, len ); + if( ret != 0 ) + return( ret ); + ret = mbedtls_md_finish( md_ctx, out ); + if( ret != 0 ) + return( ret ); + + memset( padding, 0x5C, padlen ); + ret = mbedtls_md_starts( md_ctx ); + if( ret != 0 ) + return( ret ); + ret = mbedtls_md_update( md_ctx, secret, md_size ); + if( ret != 0 ) + return( ret ); + ret = mbedtls_md_update( md_ctx, padding, padlen ); + if( ret != 0 ) + return( ret ); + ret = mbedtls_md_update( md_ctx, out, md_size ); + if( ret != 0 ) + return( ret ); + ret = mbedtls_md_finish( md_ctx, out ); + if( ret != 0 ) + return( ret ); + + return( 0 ); +} +#endif /* MBEDTLS_SSL_PROTO_SSL3 */ + +#if defined(MBEDTLS_GCM_C) || \ + defined(MBEDTLS_CCM_C) || \ + defined(MBEDTLS_CHACHAPOLY_C) +static int ssl_transform_aead_dynamic_iv_is_explicit( + mbedtls_ssl_transform const *transform ) +{ + return( transform->ivlen != transform->fixed_ivlen ); +} + +/* Compute IV := ( fixed_iv || 0 ) XOR ( 0 || dynamic_IV ) + * + * Concretely, this occurs in two variants: + * + * a) Fixed and dynamic IV lengths add up to total IV length, giving + * IV = fixed_iv || dynamic_iv + * + * This variant is used in TLS 1.2 when used with GCM or CCM. + * + * b) Fixed IV lengths matches total IV length, giving + * IV = fixed_iv XOR ( 0 || dynamic_iv ) + * + * This variant occurs in TLS 1.3 and for TLS 1.2 when using ChaChaPoly. + * + * See also the documentation of mbedtls_ssl_transform. + * + * This function has the precondition that + * + * dst_iv_len >= max( fixed_iv_len, dynamic_iv_len ) + * + * which has to be ensured by the caller. If this precondition + * violated, the behavior of this function is undefined. + */ +static void ssl_build_record_nonce( unsigned char *dst_iv, + size_t dst_iv_len, + unsigned char const *fixed_iv, + size_t fixed_iv_len, + unsigned char const *dynamic_iv, + size_t dynamic_iv_len ) +{ + size_t i; + + /* Start with Fixed IV || 0 */ + memset( dst_iv, 0, dst_iv_len ); + memcpy( dst_iv, fixed_iv, fixed_iv_len ); + + dst_iv += dst_iv_len - dynamic_iv_len; + for( i = 0; i < dynamic_iv_len; i++ ) + dst_iv[i] ^= dynamic_iv[i]; +} +#endif /* MBEDTLS_GCM_C || MBEDTLS_CCM_C || MBEDTLS_CHACHAPOLY_C */ + +int mbedtls_ssl_encrypt_buf( mbedtls_ssl_context *ssl, + mbedtls_ssl_transform *transform, + mbedtls_record *rec, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ) +{ + mbedtls_cipher_mode_t mode; + int auth_done = 0; + unsigned char * data; + unsigned char add_data[13 + 1 + MBEDTLS_SSL_CID_OUT_LEN_MAX ]; + size_t add_data_len; + size_t post_avail; + + /* The SSL context is only used for debugging purposes! */ +#if !defined(MBEDTLS_DEBUG_C) + ssl = NULL; /* make sure we don't use it except for debug */ + ((void) ssl); +#endif + + /* The PRNG is used for dynamic IV generation that's used + * for CBC transformations in TLS 1.1 and TLS 1.2. */ +#if !( defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC) && \ + ( defined(MBEDTLS_SSL_PROTO_TLS1_1) || defined(MBEDTLS_SSL_PROTO_TLS1_2) ) ) + ((void) f_rng); + ((void) p_rng); +#endif + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> encrypt buf" ) ); + + if( transform == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "no transform provided to encrypt_buf" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + if( rec == NULL + || rec->buf == NULL + || rec->buf_len < rec->data_offset + || rec->buf_len - rec->data_offset < rec->data_len +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + || rec->cid_len != 0 +#endif + ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad record structure provided to encrypt_buf" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + data = rec->buf + rec->data_offset; + post_avail = rec->buf_len - ( rec->data_len + rec->data_offset ); + MBEDTLS_SSL_DEBUG_BUF( 4, "before encrypt: output payload", + data, rec->data_len ); + + mode = mbedtls_cipher_get_cipher_mode( &transform->cipher_ctx_enc ); + + if( rec->data_len > MBEDTLS_SSL_OUT_CONTENT_LEN ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Record content %" MBEDTLS_PRINTF_SIZET + " too large, maximum %" MBEDTLS_PRINTF_SIZET, + rec->data_len, + (size_t) MBEDTLS_SSL_OUT_CONTENT_LEN ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + + /* The following two code paths implement the (D)TLSInnerPlaintext + * structure present in TLS 1.3 and DTLS 1.2 + CID. + * + * See ssl_build_inner_plaintext() for more information. + * + * Note that this changes `rec->data_len`, and hence + * `post_avail` needs to be recalculated afterwards. + * + * Note also that the two code paths cannot occur simultaneously + * since they apply to different versions of the protocol. There + * is hence no risk of double-addition of the inner plaintext. + */ +#if defined(MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL) + if( transform->minor_ver == MBEDTLS_SSL_MINOR_VERSION_4 ) + { + size_t padding = + ssl_compute_padding_length( rec->data_len, + MBEDTLS_SSL_TLS1_3_PADDING_GRANULARITY ); + if( ssl_build_inner_plaintext( data, + &rec->data_len, + post_avail, + rec->type, + padding ) != 0 ) + { + return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); + } + + rec->type = MBEDTLS_SSL_MSG_APPLICATION_DATA; + } +#endif /* MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL */ + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + /* + * Add CID information + */ + rec->cid_len = transform->out_cid_len; + memcpy( rec->cid, transform->out_cid, transform->out_cid_len ); + MBEDTLS_SSL_DEBUG_BUF( 3, "CID", rec->cid, rec->cid_len ); + + if( rec->cid_len != 0 ) + { + size_t padding = + ssl_compute_padding_length( rec->data_len, + MBEDTLS_SSL_CID_PADDING_GRANULARITY ); + /* + * Wrap plaintext into DTLSInnerPlaintext structure. + * See ssl_build_inner_plaintext() for more information. + * + * Note that this changes `rec->data_len`, and hence + * `post_avail` needs to be recalculated afterwards. + */ + if( ssl_build_inner_plaintext( data, + &rec->data_len, + post_avail, + rec->type, + padding ) != 0 ) + { + return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); + } + + rec->type = MBEDTLS_SSL_MSG_CID; + } +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + + post_avail = rec->buf_len - ( rec->data_len + rec->data_offset ); + + /* + * Add MAC before if needed + */ +#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC) + if( mode == MBEDTLS_MODE_STREAM || + ( mode == MBEDTLS_MODE_CBC +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) + && transform->encrypt_then_mac == MBEDTLS_SSL_ETM_DISABLED +#endif + ) ) + { + if( post_avail < transform->maclen ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Buffer provided for encrypted record not large enough" ) ); + return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); + } + +#if defined(MBEDTLS_SSL_PROTO_SSL3) + if( transform->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) + { + unsigned char mac[SSL3_MAC_MAX_BYTES]; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + ret = ssl_mac( &transform->md_ctx_enc, transform->mac_enc, + data, rec->data_len, rec->ctr, rec->type, mac ); + if( ret == 0 ) + memcpy( data + rec->data_len, mac, transform->maclen ); + mbedtls_platform_zeroize( mac, transform->maclen ); + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_mac", ret ); + return( ret ); + } + } + else +#endif +#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ + defined(MBEDTLS_SSL_PROTO_TLS1_2) + if( transform->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_1 ) + { + unsigned char mac[MBEDTLS_SSL_MAC_ADD]; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + ssl_extract_add_data_from_record( add_data, &add_data_len, rec, + transform->minor_ver ); + + ret = mbedtls_md_hmac_update( &transform->md_ctx_enc, + add_data, add_data_len ); + if( ret != 0 ) + goto hmac_failed_etm_disabled; + ret = mbedtls_md_hmac_update( &transform->md_ctx_enc, + data, rec->data_len ); + if( ret != 0 ) + goto hmac_failed_etm_disabled; + ret = mbedtls_md_hmac_finish( &transform->md_ctx_enc, mac ); + if( ret != 0 ) + goto hmac_failed_etm_disabled; + ret = mbedtls_md_hmac_reset( &transform->md_ctx_enc ); + if( ret != 0 ) + goto hmac_failed_etm_disabled; + + memcpy( data + rec->data_len, mac, transform->maclen ); + + hmac_failed_etm_disabled: + mbedtls_platform_zeroize( mac, transform->maclen ); + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_md_hmac_xxx", ret ); + return( ret ); + } + } + else +#endif + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + MBEDTLS_SSL_DEBUG_BUF( 4, "computed mac", data + rec->data_len, + transform->maclen ); + + rec->data_len += transform->maclen; + post_avail -= transform->maclen; + auth_done++; + } +#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */ + + /* + * Encrypt + */ +#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) + if( mode == MBEDTLS_MODE_STREAM ) + { + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t olen; + MBEDTLS_SSL_DEBUG_MSG( 3, ( "before encrypt: msglen = %" MBEDTLS_PRINTF_SIZET ", " + "including %d bytes of padding", + rec->data_len, 0 ) ); + + if( ( ret = mbedtls_cipher_crypt( &transform->cipher_ctx_enc, + transform->iv_enc, transform->ivlen, + data, rec->data_len, + data, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_crypt", ret ); + return( ret ); + } + + if( rec->data_len != olen ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + } + else +#endif /* MBEDTLS_ARC4_C || MBEDTLS_CIPHER_NULL_CIPHER */ + +#if defined(MBEDTLS_GCM_C) || \ + defined(MBEDTLS_CCM_C) || \ + defined(MBEDTLS_CHACHAPOLY_C) + if( mode == MBEDTLS_MODE_GCM || + mode == MBEDTLS_MODE_CCM || + mode == MBEDTLS_MODE_CHACHAPOLY ) + { + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + unsigned char iv[12]; + unsigned char *dynamic_iv; + size_t dynamic_iv_len; + int dynamic_iv_is_explicit = + ssl_transform_aead_dynamic_iv_is_explicit( transform ); + + /* Check that there's space for the authentication tag. */ + if( post_avail < transform->taglen ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Buffer provided for encrypted record not large enough" ) ); + return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); + } + + /* + * Build nonce for AEAD encryption. + * + * Note: In the case of CCM and GCM in TLS 1.2, the dynamic + * part of the IV is prepended to the ciphertext and + * can be chosen freely - in particular, it need not + * agree with the record sequence number. + * However, since ChaChaPoly as well as all AEAD modes + * in TLS 1.3 use the record sequence number as the + * dynamic part of the nonce, we uniformly use the + * record sequence number here in all cases. + */ + dynamic_iv = rec->ctr; + dynamic_iv_len = sizeof( rec->ctr ); + + ssl_build_record_nonce( iv, sizeof( iv ), + transform->iv_enc, + transform->fixed_ivlen, + dynamic_iv, + dynamic_iv_len ); + + /* + * Build additional data for AEAD encryption. + * This depends on the TLS version. + */ + ssl_extract_add_data_from_record( add_data, &add_data_len, rec, + transform->minor_ver ); + + MBEDTLS_SSL_DEBUG_BUF( 4, "IV used (internal)", + iv, transform->ivlen ); + MBEDTLS_SSL_DEBUG_BUF( 4, "IV used (transmitted)", + dynamic_iv, + dynamic_iv_is_explicit ? dynamic_iv_len : 0 ); + MBEDTLS_SSL_DEBUG_BUF( 4, "additional data used for AEAD", + add_data, add_data_len ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "before encrypt: msglen = %" MBEDTLS_PRINTF_SIZET ", " + "including 0 bytes of padding", + rec->data_len ) ); + + /* + * Encrypt and authenticate + */ + + if( ( ret = mbedtls_cipher_auth_encrypt_ext( &transform->cipher_ctx_enc, + iv, transform->ivlen, + add_data, add_data_len, + data, rec->data_len, /* src */ + data, rec->buf_len - (data - rec->buf), /* dst */ + &rec->data_len, + transform->taglen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_auth_encrypt", ret ); + return( ret ); + } + MBEDTLS_SSL_DEBUG_BUF( 4, "after encrypt: tag", + data + rec->data_len - transform->taglen, + transform->taglen ); + /* Account for authentication tag. */ + post_avail -= transform->taglen; + + /* + * Prefix record content with dynamic IV in case it is explicit. + */ + if( dynamic_iv_is_explicit != 0 ) + { + if( rec->data_offset < dynamic_iv_len ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Buffer provided for encrypted record not large enough" ) ); + return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); + } + + memcpy( data - dynamic_iv_len, dynamic_iv, dynamic_iv_len ); + rec->data_offset -= dynamic_iv_len; + rec->data_len += dynamic_iv_len; + } + + auth_done++; + } + else +#endif /* MBEDTLS_GCM_C || MBEDTLS_CCM_C || MBEDTLS_CHACHAPOLY_C */ +#if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC) + if( mode == MBEDTLS_MODE_CBC ) + { + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t padlen, i; + size_t olen; + + /* Currently we're always using minimal padding + * (up to 255 bytes would be allowed). */ + padlen = transform->ivlen - ( rec->data_len + 1 ) % transform->ivlen; + if( padlen == transform->ivlen ) + padlen = 0; + + /* Check there's enough space in the buffer for the padding. */ + if( post_avail < padlen + 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Buffer provided for encrypted record not large enough" ) ); + return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); + } + + for( i = 0; i <= padlen; i++ ) + data[rec->data_len + i] = (unsigned char) padlen; + + rec->data_len += padlen + 1; + post_avail -= padlen + 1; + +#if defined(MBEDTLS_SSL_PROTO_TLS1_1) || defined(MBEDTLS_SSL_PROTO_TLS1_2) + /* + * Prepend per-record IV for block cipher in TLS v1.1 and up as per + * Method 1 (6.2.3.2. in RFC4346 and RFC5246) + */ + if( transform->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) + { + if( f_rng == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "No PRNG provided to encrypt_record routine" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + if( rec->data_offset < transform->ivlen ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Buffer provided for encrypted record not large enough" ) ); + return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); + } + + /* + * Generate IV + */ + ret = f_rng( p_rng, transform->iv_enc, transform->ivlen ); + if( ret != 0 ) + return( ret ); + + memcpy( data - transform->ivlen, transform->iv_enc, + transform->ivlen ); + + } +#endif /* MBEDTLS_SSL_PROTO_TLS1_1 || MBEDTLS_SSL_PROTO_TLS1_2 */ + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "before encrypt: msglen = %" MBEDTLS_PRINTF_SIZET ", " + "including %" MBEDTLS_PRINTF_SIZET + " bytes of IV and %" MBEDTLS_PRINTF_SIZET " bytes of padding", + rec->data_len, transform->ivlen, + padlen + 1 ) ); + + if( ( ret = mbedtls_cipher_crypt( &transform->cipher_ctx_enc, + transform->iv_enc, + transform->ivlen, + data, rec->data_len, + data, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_crypt", ret ); + return( ret ); + } + + if( rec->data_len != olen ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + +#if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) + if( transform->minor_ver < MBEDTLS_SSL_MINOR_VERSION_2 ) + { + /* + * Save IV in SSL3 and TLS1 + */ + memcpy( transform->iv_enc, transform->cipher_ctx_enc.iv, + transform->ivlen ); + } + else +#endif + { + data -= transform->ivlen; + rec->data_offset -= transform->ivlen; + rec->data_len += transform->ivlen; + } + +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) + if( auth_done == 0 ) + { + unsigned char mac[MBEDTLS_SSL_MAC_ADD]; + + /* + * MAC(MAC_write_key, seq_num + + * TLSCipherText.type + + * TLSCipherText.version + + * length_of( (IV +) ENC(...) ) + + * IV + // except for TLS 1.0 + * ENC(content + padding + padding_length)); + */ + + if( post_avail < transform->maclen) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Buffer provided for encrypted record not large enough" ) ); + return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); + } + + ssl_extract_add_data_from_record( add_data, &add_data_len, + rec, transform->minor_ver ); + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "using encrypt then mac" ) ); + MBEDTLS_SSL_DEBUG_BUF( 4, "MAC'd meta-data", add_data, + add_data_len ); + + ret = mbedtls_md_hmac_update( &transform->md_ctx_enc, add_data, + add_data_len ); + if( ret != 0 ) + goto hmac_failed_etm_enabled; + ret = mbedtls_md_hmac_update( &transform->md_ctx_enc, + data, rec->data_len ); + if( ret != 0 ) + goto hmac_failed_etm_enabled; + ret = mbedtls_md_hmac_finish( &transform->md_ctx_enc, mac ); + if( ret != 0 ) + goto hmac_failed_etm_enabled; + ret = mbedtls_md_hmac_reset( &transform->md_ctx_enc ); + if( ret != 0 ) + goto hmac_failed_etm_enabled; + + memcpy( data + rec->data_len, mac, transform->maclen ); + + rec->data_len += transform->maclen; + post_avail -= transform->maclen; + auth_done++; + + hmac_failed_etm_enabled: + mbedtls_platform_zeroize( mac, transform->maclen ); + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "HMAC calculation failed", ret ); + return( ret ); + } + } +#endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */ + } + else +#endif /* MBEDTLS_SSL_SOME_SUITES_USE_CBC) */ + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + /* Make extra sure authentication was performed, exactly once */ + if( auth_done != 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= encrypt buf" ) ); + + return( 0 ); +} + +int mbedtls_ssl_decrypt_buf( mbedtls_ssl_context const *ssl, + mbedtls_ssl_transform *transform, + mbedtls_record *rec ) +{ + size_t olen; + mbedtls_cipher_mode_t mode; + int ret, auth_done = 0; +#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC) + size_t padlen = 0, correct = 1; +#endif + unsigned char* data; + unsigned char add_data[13 + 1 + MBEDTLS_SSL_CID_IN_LEN_MAX ]; + size_t add_data_len; + +#if !defined(MBEDTLS_DEBUG_C) + ssl = NULL; /* make sure we don't use it except for debug */ + ((void) ssl); +#endif + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> decrypt buf" ) ); + if( rec == NULL || + rec->buf == NULL || + rec->buf_len < rec->data_offset || + rec->buf_len - rec->data_offset < rec->data_len ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad record structure provided to decrypt_buf" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + data = rec->buf + rec->data_offset; + mode = mbedtls_cipher_get_cipher_mode( &transform->cipher_ctx_dec ); + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + /* + * Match record's CID with incoming CID. + */ + if( rec->cid_len != transform->in_cid_len || + memcmp( rec->cid, transform->in_cid, rec->cid_len ) != 0 ) + { + return( MBEDTLS_ERR_SSL_UNEXPECTED_CID ); + } +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + +#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) + if( mode == MBEDTLS_MODE_STREAM ) + { + padlen = 0; + if( ( ret = mbedtls_cipher_crypt( &transform->cipher_ctx_dec, + transform->iv_dec, + transform->ivlen, + data, rec->data_len, + data, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_crypt", ret ); + return( ret ); + } + + if( rec->data_len != olen ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + } + else +#endif /* MBEDTLS_ARC4_C || MBEDTLS_CIPHER_NULL_CIPHER */ +#if defined(MBEDTLS_GCM_C) || \ + defined(MBEDTLS_CCM_C) || \ + defined(MBEDTLS_CHACHAPOLY_C) + if( mode == MBEDTLS_MODE_GCM || + mode == MBEDTLS_MODE_CCM || + mode == MBEDTLS_MODE_CHACHAPOLY ) + { + unsigned char iv[12]; + unsigned char *dynamic_iv; + size_t dynamic_iv_len; + + /* + * Extract dynamic part of nonce for AEAD decryption. + * + * Note: In the case of CCM and GCM in TLS 1.2, the dynamic + * part of the IV is prepended to the ciphertext and + * can be chosen freely - in particular, it need not + * agree with the record sequence number. + */ + dynamic_iv_len = sizeof( rec->ctr ); + if( ssl_transform_aead_dynamic_iv_is_explicit( transform ) == 1 ) + { + if( rec->data_len < dynamic_iv_len ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "msglen (%" MBEDTLS_PRINTF_SIZET + " ) < explicit_iv_len (%" MBEDTLS_PRINTF_SIZET ") ", + rec->data_len, + dynamic_iv_len ) ); + return( MBEDTLS_ERR_SSL_INVALID_MAC ); + } + dynamic_iv = data; + + data += dynamic_iv_len; + rec->data_offset += dynamic_iv_len; + rec->data_len -= dynamic_iv_len; + } + else + { + dynamic_iv = rec->ctr; + } + + /* Check that there's space for the authentication tag. */ + if( rec->data_len < transform->taglen ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "msglen (%" MBEDTLS_PRINTF_SIZET + ") < taglen (%" MBEDTLS_PRINTF_SIZET ") ", + rec->data_len, + transform->taglen ) ); + return( MBEDTLS_ERR_SSL_INVALID_MAC ); + } + rec->data_len -= transform->taglen; + + /* + * Prepare nonce from dynamic and static parts. + */ + ssl_build_record_nonce( iv, sizeof( iv ), + transform->iv_dec, + transform->fixed_ivlen, + dynamic_iv, + dynamic_iv_len ); + + /* + * Build additional data for AEAD encryption. + * This depends on the TLS version. + */ + ssl_extract_add_data_from_record( add_data, &add_data_len, rec, + transform->minor_ver ); + MBEDTLS_SSL_DEBUG_BUF( 4, "additional data used for AEAD", + add_data, add_data_len ); + + /* Because of the check above, we know that there are + * explicit_iv_len Bytes preceeding data, and taglen + * bytes following data + data_len. This justifies + * the debug message and the invocation of + * mbedtls_cipher_auth_decrypt() below. */ + + MBEDTLS_SSL_DEBUG_BUF( 4, "IV used", iv, transform->ivlen ); + MBEDTLS_SSL_DEBUG_BUF( 4, "TAG used", data + rec->data_len, + transform->taglen ); + + /* + * Decrypt and authenticate + */ + if( ( ret = mbedtls_cipher_auth_decrypt_ext( &transform->cipher_ctx_dec, + iv, transform->ivlen, + add_data, add_data_len, + data, rec->data_len + transform->taglen, /* src */ + data, rec->buf_len - (data - rec->buf), &olen, /* dst */ + transform->taglen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_auth_decrypt", ret ); + + if( ret == MBEDTLS_ERR_CIPHER_AUTH_FAILED ) + return( MBEDTLS_ERR_SSL_INVALID_MAC ); + + return( ret ); + } + auth_done++; + + /* Double-check that AEAD decryption doesn't change content length. */ + if( olen != rec->data_len ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + } + else +#endif /* MBEDTLS_GCM_C || MBEDTLS_CCM_C */ +#if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC) + if( mode == MBEDTLS_MODE_CBC ) + { + size_t minlen = 0; + + /* + * Check immediate ciphertext sanity + */ +#if defined(MBEDTLS_SSL_PROTO_TLS1_1) || defined(MBEDTLS_SSL_PROTO_TLS1_2) + if( transform->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) + { + /* The ciphertext is prefixed with the CBC IV. */ + minlen += transform->ivlen; + } +#endif + + /* Size considerations: + * + * - The CBC cipher text must not be empty and hence + * at least of size transform->ivlen. + * + * Together with the potential IV-prefix, this explains + * the first of the two checks below. + * + * - The record must contain a MAC, either in plain or + * encrypted, depending on whether Encrypt-then-MAC + * is used or not. + * - If it is, the message contains the IV-prefix, + * the CBC ciphertext, and the MAC. + * - If it is not, the padded plaintext, and hence + * the CBC ciphertext, has at least length maclen + 1 + * because there is at least the padding length byte. + * + * As the CBC ciphertext is not empty, both cases give the + * lower bound minlen + maclen + 1 on the record size, which + * we test for in the second check below. + */ + if( rec->data_len < minlen + transform->ivlen || + rec->data_len < minlen + transform->maclen + 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "msglen (%" MBEDTLS_PRINTF_SIZET + ") < max( ivlen(%" MBEDTLS_PRINTF_SIZET + "), maclen (%" MBEDTLS_PRINTF_SIZET ") " + "+ 1 ) ( + expl IV )", rec->data_len, + transform->ivlen, + transform->maclen ) ); + return( MBEDTLS_ERR_SSL_INVALID_MAC ); + } + + /* + * Authenticate before decrypt if enabled + */ +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) + if( transform->encrypt_then_mac == MBEDTLS_SSL_ETM_ENABLED ) + { + unsigned char mac_expect[MBEDTLS_SSL_MAC_ADD]; + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "using encrypt then mac" ) ); + + /* Update data_len in tandem with add_data. + * + * The subtraction is safe because of the previous check + * data_len >= minlen + maclen + 1. + * + * Afterwards, we know that data + data_len is followed by at + * least maclen Bytes, which justifies the call to + * mbedtls_ct_memcmp() below. + * + * Further, we still know that data_len > minlen */ + rec->data_len -= transform->maclen; + ssl_extract_add_data_from_record( add_data, &add_data_len, rec, + transform->minor_ver ); + + /* Calculate expected MAC. */ + MBEDTLS_SSL_DEBUG_BUF( 4, "MAC'd meta-data", add_data, + add_data_len ); + ret = mbedtls_md_hmac_update( &transform->md_ctx_dec, add_data, + add_data_len ); + if( ret != 0 ) + goto hmac_failed_etm_enabled; + ret = mbedtls_md_hmac_update( &transform->md_ctx_dec, + data, rec->data_len ); + if( ret != 0 ) + goto hmac_failed_etm_enabled; + ret = mbedtls_md_hmac_finish( &transform->md_ctx_dec, mac_expect ); + if( ret != 0 ) + goto hmac_failed_etm_enabled; + ret = mbedtls_md_hmac_reset( &transform->md_ctx_dec ); + if( ret != 0 ) + goto hmac_failed_etm_enabled; + + MBEDTLS_SSL_DEBUG_BUF( 4, "message mac", data + rec->data_len, + transform->maclen ); + MBEDTLS_SSL_DEBUG_BUF( 4, "expected mac", mac_expect, + transform->maclen ); + + /* Compare expected MAC with MAC at the end of the record. */ + if( mbedtls_ct_memcmp( data + rec->data_len, mac_expect, + transform->maclen ) != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "message mac does not match" ) ); + ret = MBEDTLS_ERR_SSL_INVALID_MAC; + goto hmac_failed_etm_enabled; + } + auth_done++; + + hmac_failed_etm_enabled: + mbedtls_platform_zeroize( mac_expect, transform->maclen ); + if( ret != 0 ) + { + if( ret != MBEDTLS_ERR_SSL_INVALID_MAC ) + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_hmac_xxx", ret ); + return( ret ); + } + } +#endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */ + + /* + * Check length sanity + */ + + /* We know from above that data_len > minlen >= 0, + * so the following check in particular implies that + * data_len >= minlen + ivlen ( = minlen or 2 * minlen ). */ + if( rec->data_len % transform->ivlen != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "msglen (%" MBEDTLS_PRINTF_SIZET + ") %% ivlen (%" MBEDTLS_PRINTF_SIZET ") != 0", + rec->data_len, transform->ivlen ) ); + return( MBEDTLS_ERR_SSL_INVALID_MAC ); + } + +#if defined(MBEDTLS_SSL_PROTO_TLS1_1) || defined(MBEDTLS_SSL_PROTO_TLS1_2) + /* + * Initialize for prepended IV for block cipher in TLS v1.1 and up + */ + if( transform->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) + { + /* Safe because data_len >= minlen + ivlen = 2 * ivlen. */ + memcpy( transform->iv_dec, data, transform->ivlen ); + + data += transform->ivlen; + rec->data_offset += transform->ivlen; + rec->data_len -= transform->ivlen; + } +#endif /* MBEDTLS_SSL_PROTO_TLS1_1 || MBEDTLS_SSL_PROTO_TLS1_2 */ + + /* We still have data_len % ivlen == 0 and data_len >= ivlen here. */ + + if( ( ret = mbedtls_cipher_crypt( &transform->cipher_ctx_dec, + transform->iv_dec, transform->ivlen, + data, rec->data_len, data, &olen ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_crypt", ret ); + return( ret ); + } + + /* Double-check that length hasn't changed during decryption. */ + if( rec->data_len != olen ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + +#if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) + if( transform->minor_ver < MBEDTLS_SSL_MINOR_VERSION_2 ) + { + /* + * Save IV in SSL3 and TLS1, where CBC decryption of consecutive + * records is equivalent to CBC decryption of the concatenation + * of the records; in other words, IVs are maintained across + * record decryptions. + */ + memcpy( transform->iv_dec, transform->cipher_ctx_dec.iv, + transform->ivlen ); + } +#endif + + /* Safe since data_len >= minlen + maclen + 1, so after having + * subtracted at most minlen and maclen up to this point, + * data_len > 0 (because of data_len % ivlen == 0, it's actually + * >= ivlen ). */ + padlen = data[rec->data_len - 1]; + + if( auth_done == 1 ) + { + const size_t mask = mbedtls_ct_size_mask_ge( + rec->data_len, + padlen + 1 ); + correct &= mask; + padlen &= mask; + } + else + { +#if defined(MBEDTLS_SSL_DEBUG_ALL) + if( rec->data_len < transform->maclen + padlen + 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "msglen (%" MBEDTLS_PRINTF_SIZET + ") < maclen (%" MBEDTLS_PRINTF_SIZET + ") + padlen (%" MBEDTLS_PRINTF_SIZET ")", + rec->data_len, + transform->maclen, + padlen + 1 ) ); + } +#endif + + const size_t mask = mbedtls_ct_size_mask_ge( + rec->data_len, + transform->maclen + padlen + 1 ); + correct &= mask; + padlen &= mask; + } + + padlen++; + + /* Regardless of the validity of the padding, + * we have data_len >= padlen here. */ + +#if defined(MBEDTLS_SSL_PROTO_SSL3) + if( transform->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) + { + /* This is the SSL 3.0 path, we don't have to worry about Lucky + * 13, because there's a strictly worse padding attack built in + * the protocol (known as part of POODLE), so we don't care if the + * code is not constant-time, in particular branches are OK. */ + if( padlen > transform->ivlen ) + { +#if defined(MBEDTLS_SSL_DEBUG_ALL) + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad padding length: is %" MBEDTLS_PRINTF_SIZET ", " + "should be no more than %" MBEDTLS_PRINTF_SIZET, + padlen, transform->ivlen ) ); +#endif + correct = 0; + } + } + else +#endif /* MBEDTLS_SSL_PROTO_SSL3 */ +#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ + defined(MBEDTLS_SSL_PROTO_TLS1_2) + if( transform->minor_ver > MBEDTLS_SSL_MINOR_VERSION_0 ) + { + /* The padding check involves a series of up to 256 + * consecutive memory reads at the end of the record + * plaintext buffer. In order to hide the length and + * validity of the padding, always perform exactly + * `min(256,plaintext_len)` reads (but take into account + * only the last `padlen` bytes for the padding check). */ + size_t pad_count = 0; + volatile unsigned char* const check = data; + + /* Index of first padding byte; it has been ensured above + * that the subtraction is safe. */ + size_t const padding_idx = rec->data_len - padlen; + size_t const num_checks = rec->data_len <= 256 ? rec->data_len : 256; + size_t const start_idx = rec->data_len - num_checks; + size_t idx; + + for( idx = start_idx; idx < rec->data_len; idx++ ) + { + /* pad_count += (idx >= padding_idx) && + * (check[idx] == padlen - 1); + */ + const size_t mask = mbedtls_ct_size_mask_ge( idx, padding_idx ); + const size_t equal = mbedtls_ct_size_bool_eq( check[idx], + padlen - 1 ); + pad_count += mask & equal; + } + correct &= mbedtls_ct_size_bool_eq( pad_count, padlen ); + +#if defined(MBEDTLS_SSL_DEBUG_ALL) + if( padlen > 0 && correct == 0 ) + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad padding byte detected" ) ); +#endif + padlen &= mbedtls_ct_size_mask( correct ); + } + else +#endif /* MBEDTLS_SSL_PROTO_TLS1 || MBEDTLS_SSL_PROTO_TLS1_1 || \ + MBEDTLS_SSL_PROTO_TLS1_2 */ + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + /* If the padding was found to be invalid, padlen == 0 + * and the subtraction is safe. If the padding was found valid, + * padlen hasn't been changed and the previous assertion + * data_len >= padlen still holds. */ + rec->data_len -= padlen; + } + else +#endif /* MBEDTLS_SSL_SOME_SUITES_USE_CBC */ + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + +#if defined(MBEDTLS_SSL_DEBUG_ALL) + MBEDTLS_SSL_DEBUG_BUF( 4, "raw buffer after decryption", + data, rec->data_len ); +#endif + + /* + * Authenticate if not done yet. + * Compute the MAC regardless of the padding result (RFC4346, CBCTIME). + */ +#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC) + if( auth_done == 0 ) + { + unsigned char mac_expect[MBEDTLS_SSL_MAC_ADD]; + unsigned char mac_peer[MBEDTLS_SSL_MAC_ADD]; + + /* If the initial value of padlen was such that + * data_len < maclen + padlen + 1, then padlen + * got reset to 1, and the initial check + * data_len >= minlen + maclen + 1 + * guarantees that at this point we still + * have at least data_len >= maclen. + * + * If the initial value of padlen was such that + * data_len >= maclen + padlen + 1, then we have + * subtracted either padlen + 1 (if the padding was correct) + * or 0 (if the padding was incorrect) since then, + * hence data_len >= maclen in any case. + */ + rec->data_len -= transform->maclen; + ssl_extract_add_data_from_record( add_data, &add_data_len, rec, + transform->minor_ver ); + +#if defined(MBEDTLS_SSL_PROTO_SSL3) + if( transform->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) + { + ret = ssl_mac( &transform->md_ctx_dec, + transform->mac_dec, + data, rec->data_len, + rec->ctr, rec->type, + mac_expect ); + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_mac", ret ); + goto hmac_failed_etm_disabled; + } + memcpy( mac_peer, data + rec->data_len, transform->maclen ); + } + else +#endif /* MBEDTLS_SSL_PROTO_SSL3 */ +#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ + defined(MBEDTLS_SSL_PROTO_TLS1_2) + if( transform->minor_ver > MBEDTLS_SSL_MINOR_VERSION_0 ) + { + /* + * The next two sizes are the minimum and maximum values of + * data_len over all padlen values. + * + * They're independent of padlen, since we previously did + * data_len -= padlen. + * + * Note that max_len + maclen is never more than the buffer + * length, as we previously did in_msglen -= maclen too. + */ + const size_t max_len = rec->data_len + padlen; + const size_t min_len = ( max_len > 256 ) ? max_len - 256 : 0; + + ret = mbedtls_ct_hmac( &transform->md_ctx_dec, + add_data, add_data_len, + data, rec->data_len, min_len, max_len, + mac_expect ); + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ct_hmac", ret ); + goto hmac_failed_etm_disabled; + } + + mbedtls_ct_memcpy_offset( mac_peer, data, + rec->data_len, + min_len, max_len, + transform->maclen ); + } + else +#endif /* MBEDTLS_SSL_PROTO_TLS1 || MBEDTLS_SSL_PROTO_TLS1_1 || \ + MBEDTLS_SSL_PROTO_TLS1_2 */ + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + +#if defined(MBEDTLS_SSL_DEBUG_ALL) + MBEDTLS_SSL_DEBUG_BUF( 4, "expected mac", mac_expect, transform->maclen ); + MBEDTLS_SSL_DEBUG_BUF( 4, "message mac", mac_peer, transform->maclen ); +#endif + + if( mbedtls_ct_memcmp( mac_peer, mac_expect, + transform->maclen ) != 0 ) + { +#if defined(MBEDTLS_SSL_DEBUG_ALL) + MBEDTLS_SSL_DEBUG_MSG( 1, ( "message mac does not match" ) ); +#endif + correct = 0; + } + auth_done++; + + hmac_failed_etm_disabled: + mbedtls_platform_zeroize( mac_peer, transform->maclen ); + mbedtls_platform_zeroize( mac_expect, transform->maclen ); + if( ret != 0 ) + return( ret ); + } + + /* + * Finally check the correct flag + */ + if( correct == 0 ) + return( MBEDTLS_ERR_SSL_INVALID_MAC ); +#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */ + + /* Make extra sure authentication was performed, exactly once */ + if( auth_done != 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + +#if defined(MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL) + if( transform->minor_ver == MBEDTLS_SSL_MINOR_VERSION_4 ) + { + /* Remove inner padding and infer true content type. */ + ret = ssl_parse_inner_plaintext( data, &rec->data_len, + &rec->type ); + + if( ret != 0 ) + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } +#endif /* MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL */ + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + if( rec->cid_len != 0 ) + { + ret = ssl_parse_inner_plaintext( data, &rec->data_len, + &rec->type ); + if( ret != 0 ) + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= decrypt buf" ) ); + + return( 0 ); +} + +#undef MAC_NONE +#undef MAC_PLAINTEXT +#undef MAC_CIPHERTEXT + +#if defined(MBEDTLS_ZLIB_SUPPORT) +/* + * Compression/decompression functions + */ +static int ssl_compress_buf( mbedtls_ssl_context *ssl ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + unsigned char *msg_post = ssl->out_msg; + ptrdiff_t bytes_written = ssl->out_msg - ssl->out_buf; + size_t len_pre = ssl->out_msglen; + unsigned char *msg_pre = ssl->compress_buf; +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + size_t out_buf_len = ssl->out_buf_len; +#else + size_t out_buf_len = MBEDTLS_SSL_OUT_BUFFER_LEN; +#endif + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> compress buf" ) ); + + if( len_pre == 0 ) + return( 0 ); + + memcpy( msg_pre, ssl->out_msg, len_pre ); + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "before compression: msglen = %" MBEDTLS_PRINTF_SIZET ", ", + ssl->out_msglen ) ); + + MBEDTLS_SSL_DEBUG_BUF( 4, "before compression: output payload", + ssl->out_msg, ssl->out_msglen ); + + ssl->transform_out->ctx_deflate.next_in = msg_pre; + ssl->transform_out->ctx_deflate.avail_in = len_pre; + ssl->transform_out->ctx_deflate.next_out = msg_post; + ssl->transform_out->ctx_deflate.avail_out = out_buf_len - bytes_written; + + ret = deflate( &ssl->transform_out->ctx_deflate, Z_SYNC_FLUSH ); + if( ret != Z_OK ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "failed to perform compression (%d)", ret ) ); + return( MBEDTLS_ERR_SSL_COMPRESSION_FAILED ); + } + + ssl->out_msglen = out_buf_len - + ssl->transform_out->ctx_deflate.avail_out - bytes_written; + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "after compression: msglen = %" MBEDTLS_PRINTF_SIZET ", ", + ssl->out_msglen ) ); + + MBEDTLS_SSL_DEBUG_BUF( 4, "after compression: output payload", + ssl->out_msg, ssl->out_msglen ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= compress buf" ) ); + + return( 0 ); +} + +static int ssl_decompress_buf( mbedtls_ssl_context *ssl ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + unsigned char *msg_post = ssl->in_msg; + ptrdiff_t header_bytes = ssl->in_msg - ssl->in_buf; + size_t len_pre = ssl->in_msglen; + unsigned char *msg_pre = ssl->compress_buf; +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + size_t in_buf_len = ssl->in_buf_len; +#else + size_t in_buf_len = MBEDTLS_SSL_IN_BUFFER_LEN; +#endif + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> decompress buf" ) ); + + if( len_pre == 0 ) + return( 0 ); + + memcpy( msg_pre, ssl->in_msg, len_pre ); + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "before decompression: msglen = %" MBEDTLS_PRINTF_SIZET ", ", + ssl->in_msglen ) ); + + MBEDTLS_SSL_DEBUG_BUF( 4, "before decompression: input payload", + ssl->in_msg, ssl->in_msglen ); + + ssl->transform_in->ctx_inflate.next_in = msg_pre; + ssl->transform_in->ctx_inflate.avail_in = len_pre; + ssl->transform_in->ctx_inflate.next_out = msg_post; + ssl->transform_in->ctx_inflate.avail_out = in_buf_len - header_bytes; + + ret = inflate( &ssl->transform_in->ctx_inflate, Z_SYNC_FLUSH ); + if( ret != Z_OK ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "failed to perform decompression (%d)", ret ) ); + return( MBEDTLS_ERR_SSL_COMPRESSION_FAILED ); + } + + ssl->in_msglen = in_buf_len - + ssl->transform_in->ctx_inflate.avail_out - header_bytes; + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "after decompression: msglen = %" MBEDTLS_PRINTF_SIZET ", ", + ssl->in_msglen ) ); + + MBEDTLS_SSL_DEBUG_BUF( 4, "after decompression: input payload", + ssl->in_msg, ssl->in_msglen ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= decompress buf" ) ); + + return( 0 ); +} +#endif /* MBEDTLS_ZLIB_SUPPORT */ + +/* + * Fill the input message buffer by appending data to it. + * The amount of data already fetched is in ssl->in_left. + * + * If we return 0, is it guaranteed that (at least) nb_want bytes are + * available (from this read and/or a previous one). Otherwise, an error code + * is returned (possibly EOF or WANT_READ). + * + * With stream transport (TLS) on success ssl->in_left == nb_want, but + * with datagram transport (DTLS) on success ssl->in_left >= nb_want, + * since we always read a whole datagram at once. + * + * For DTLS, it is up to the caller to set ssl->next_record_offset when + * they're done reading a record. + */ +int mbedtls_ssl_fetch_input( mbedtls_ssl_context *ssl, size_t nb_want ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t len; +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + size_t in_buf_len = ssl->in_buf_len; +#else + size_t in_buf_len = MBEDTLS_SSL_IN_BUFFER_LEN; +#endif + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> fetch input" ) ); + + if( ssl->f_recv == NULL && ssl->f_recv_timeout == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Bad usage of mbedtls_ssl_set_bio() " + "or mbedtls_ssl_set_bio()" ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + + if( nb_want > in_buf_len - (size_t)( ssl->in_hdr - ssl->in_buf ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "requesting more data than fits" ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + uint32_t timeout; + + /* + * The point is, we need to always read a full datagram at once, so we + * sometimes read more then requested, and handle the additional data. + * It could be the rest of the current record (while fetching the + * header) and/or some other records in the same datagram. + */ + + /* + * Move to the next record in the already read datagram if applicable + */ + if( ssl->next_record_offset != 0 ) + { + if( ssl->in_left < ssl->next_record_offset ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + ssl->in_left -= ssl->next_record_offset; + + if( ssl->in_left != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "next record in same datagram, offset: %" + MBEDTLS_PRINTF_SIZET, + ssl->next_record_offset ) ); + memmove( ssl->in_hdr, + ssl->in_hdr + ssl->next_record_offset, + ssl->in_left ); + } + + ssl->next_record_offset = 0; + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "in_left: %" MBEDTLS_PRINTF_SIZET + ", nb_want: %" MBEDTLS_PRINTF_SIZET, + ssl->in_left, nb_want ) ); + + /* + * Done if we already have enough data. + */ + if( nb_want <= ssl->in_left) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= fetch input" ) ); + return( 0 ); + } + + /* + * A record can't be split across datagrams. If we need to read but + * are not at the beginning of a new record, the caller did something + * wrong. + */ + if( ssl->in_left != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + /* + * Don't even try to read if time's out already. + * This avoids by-passing the timer when repeatedly receiving messages + * that will end up being dropped. + */ + if( mbedtls_ssl_check_timer( ssl ) != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "timer has expired" ) ); + ret = MBEDTLS_ERR_SSL_TIMEOUT; + } + else + { + len = in_buf_len - ( ssl->in_hdr - ssl->in_buf ); + + if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER ) + timeout = ssl->handshake->retransmit_timeout; + else + timeout = ssl->conf->read_timeout; + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "f_recv_timeout: %lu ms", (unsigned long) timeout ) ); + + if( ssl->f_recv_timeout != NULL ) + ret = ssl->f_recv_timeout( ssl->p_bio, ssl->in_hdr, len, + timeout ); + else + ret = ssl->f_recv( ssl->p_bio, ssl->in_hdr, len ); + + MBEDTLS_SSL_DEBUG_RET( 2, "ssl->f_recv(_timeout)", ret ); + + if( ret == 0 ) + return( MBEDTLS_ERR_SSL_CONN_EOF ); + } + + if( ret == MBEDTLS_ERR_SSL_TIMEOUT ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "timeout" ) ); + mbedtls_ssl_set_timer( ssl, 0 ); + + if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER ) + { + if( ssl_double_retransmit_timeout( ssl ) != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "handshake timeout" ) ); + return( MBEDTLS_ERR_SSL_TIMEOUT ); + } + + if( ( ret = mbedtls_ssl_resend( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_resend", ret ); + return( ret ); + } + + return( MBEDTLS_ERR_SSL_WANT_READ ); + } +#if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_RENEGOTIATION) + else if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && + ssl->renego_status == MBEDTLS_SSL_RENEGOTIATION_PENDING ) + { + if( ( ret = mbedtls_ssl_resend_hello_request( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_resend_hello_request", + ret ); + return( ret ); + } + + return( MBEDTLS_ERR_SSL_WANT_READ ); + } +#endif /* MBEDTLS_SSL_SRV_C && MBEDTLS_SSL_RENEGOTIATION */ + } + + if( ret < 0 ) + return( ret ); + + ssl->in_left = ret; + } + else +#endif + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "in_left: %" MBEDTLS_PRINTF_SIZET + ", nb_want: %" MBEDTLS_PRINTF_SIZET, + ssl->in_left, nb_want ) ); + + while( ssl->in_left < nb_want ) + { + len = nb_want - ssl->in_left; + + if( mbedtls_ssl_check_timer( ssl ) != 0 ) + ret = MBEDTLS_ERR_SSL_TIMEOUT; + else + { + if( ssl->f_recv_timeout != NULL ) + { + ret = ssl->f_recv_timeout( ssl->p_bio, + ssl->in_hdr + ssl->in_left, len, + ssl->conf->read_timeout ); + } + else + { + ret = ssl->f_recv( ssl->p_bio, + ssl->in_hdr + ssl->in_left, len ); + } + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "in_left: %" MBEDTLS_PRINTF_SIZET + ", nb_want: %" MBEDTLS_PRINTF_SIZET, + ssl->in_left, nb_want ) ); + MBEDTLS_SSL_DEBUG_RET( 2, "ssl->f_recv(_timeout)", ret ); + + if( ret == 0 ) + return( MBEDTLS_ERR_SSL_CONN_EOF ); + + if( ret < 0 ) + return( ret ); + + if ( (size_t)ret > len || ( INT_MAX > SIZE_MAX && ret > (int)SIZE_MAX ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "f_recv returned %d bytes but only %" MBEDTLS_PRINTF_SIZET " were requested", + ret, len ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + ssl->in_left += ret; + } + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= fetch input" ) ); + + return( 0 ); +} + +/* + * Flush any data not yet written + */ +int mbedtls_ssl_flush_output( mbedtls_ssl_context *ssl ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + unsigned char *buf; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> flush output" ) ); + + if( ssl->f_send == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Bad usage of mbedtls_ssl_set_bio() " + "or mbedtls_ssl_set_bio()" ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + + /* Avoid incrementing counter if data is flushed */ + if( ssl->out_left == 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= flush output" ) ); + return( 0 ); + } + + while( ssl->out_left > 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "message length: %" MBEDTLS_PRINTF_SIZET + ", out_left: %" MBEDTLS_PRINTF_SIZET, + mbedtls_ssl_out_hdr_len( ssl ) + ssl->out_msglen, ssl->out_left ) ); + + buf = ssl->out_hdr - ssl->out_left; + ret = ssl->f_send( ssl->p_bio, buf, ssl->out_left ); + + MBEDTLS_SSL_DEBUG_RET( 2, "ssl->f_send", ret ); + + if( ret <= 0 ) + return( ret ); + + if( (size_t)ret > ssl->out_left || ( INT_MAX > SIZE_MAX && ret > (int)SIZE_MAX ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, + ( "f_send returned %d bytes but only %" MBEDTLS_PRINTF_SIZET " bytes were sent", + ret, ssl->out_left ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + ssl->out_left -= ret; + } + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + ssl->out_hdr = ssl->out_buf; + } + else +#endif + { + ssl->out_hdr = ssl->out_buf + 8; + } + mbedtls_ssl_update_out_pointers( ssl, ssl->transform_out ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= flush output" ) ); + + return( 0 ); +} + +/* + * Functions to handle the DTLS retransmission state machine + */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) +/* + * Append current handshake message to current outgoing flight + */ +static int ssl_flight_append( mbedtls_ssl_context *ssl ) +{ + mbedtls_ssl_flight_item *msg; + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_flight_append" ) ); + MBEDTLS_SSL_DEBUG_BUF( 4, "message appended to flight", + ssl->out_msg, ssl->out_msglen ); + + /* Allocate space for current message */ + if( ( msg = mbedtls_calloc( 1, sizeof( mbedtls_ssl_flight_item ) ) ) == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc %" MBEDTLS_PRINTF_SIZET " bytes failed", + sizeof( mbedtls_ssl_flight_item ) ) ); + return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); + } + + if( ( msg->p = mbedtls_calloc( 1, ssl->out_msglen ) ) == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc %" MBEDTLS_PRINTF_SIZET " bytes failed", + ssl->out_msglen ) ); + mbedtls_free( msg ); + return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); + } + + /* Copy current handshake message with headers */ + memcpy( msg->p, ssl->out_msg, ssl->out_msglen ); + msg->len = ssl->out_msglen; + msg->type = ssl->out_msgtype; + msg->next = NULL; + + /* Append to the current flight */ + if( ssl->handshake->flight == NULL ) + ssl->handshake->flight = msg; + else + { + mbedtls_ssl_flight_item *cur = ssl->handshake->flight; + while( cur->next != NULL ) + cur = cur->next; + cur->next = msg; + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= ssl_flight_append" ) ); + return( 0 ); +} + +/* + * Free the current flight of handshake messages + */ +void mbedtls_ssl_flight_free( mbedtls_ssl_flight_item *flight ) +{ + mbedtls_ssl_flight_item *cur = flight; + mbedtls_ssl_flight_item *next; + + while( cur != NULL ) + { + next = cur->next; + + mbedtls_free( cur->p ); + mbedtls_free( cur ); + + cur = next; + } +} + +/* + * Swap transform_out and out_ctr with the alternative ones + */ +static int ssl_swap_epochs( mbedtls_ssl_context *ssl ) +{ + mbedtls_ssl_transform *tmp_transform; + unsigned char tmp_out_ctr[8]; + + if( ssl->transform_out == ssl->handshake->alt_transform_out ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "skip swap epochs" ) ); + return( 0 ); + } + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "swap epochs" ) ); + + /* Swap transforms */ + tmp_transform = ssl->transform_out; + ssl->transform_out = ssl->handshake->alt_transform_out; + ssl->handshake->alt_transform_out = tmp_transform; + + /* Swap epoch + sequence_number */ + memcpy( tmp_out_ctr, ssl->cur_out_ctr, 8 ); + memcpy( ssl->cur_out_ctr, ssl->handshake->alt_out_ctr, 8 ); + memcpy( ssl->handshake->alt_out_ctr, tmp_out_ctr, 8 ); + + /* Adjust to the newly activated transform */ + mbedtls_ssl_update_out_pointers( ssl, ssl->transform_out ); + +#if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) + if( mbedtls_ssl_hw_record_activate != NULL ) + { + int ret = mbedtls_ssl_hw_record_activate( ssl, MBEDTLS_SSL_CHANNEL_OUTBOUND ); + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_hw_record_activate", ret ); + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + } + } +#endif + + return( 0 ); +} + +/* + * Retransmit the current flight of messages. + */ +int mbedtls_ssl_resend( mbedtls_ssl_context *ssl ) +{ + int ret = 0; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> mbedtls_ssl_resend" ) ); + + ret = mbedtls_ssl_flight_transmit( ssl ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= mbedtls_ssl_resend" ) ); + + return( ret ); +} + +/* + * Transmit or retransmit the current flight of messages. + * + * Need to remember the current message in case flush_output returns + * WANT_WRITE, causing us to exit this function and come back later. + * This function must be called until state is no longer SENDING. + */ +int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> mbedtls_ssl_flight_transmit" ) ); + + if( ssl->handshake->retransmit_state != MBEDTLS_SSL_RETRANS_SENDING ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialise flight transmission" ) ); + + ssl->handshake->cur_msg = ssl->handshake->flight; + ssl->handshake->cur_msg_p = ssl->handshake->flight->p + 12; + ret = ssl_swap_epochs( ssl ); + if( ret != 0 ) + return( ret ); + + ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_SENDING; + } + + while( ssl->handshake->cur_msg != NULL ) + { + size_t max_frag_len; + const mbedtls_ssl_flight_item * const cur = ssl->handshake->cur_msg; + + int const is_finished = + ( cur->type == MBEDTLS_SSL_MSG_HANDSHAKE && + cur->p[0] == MBEDTLS_SSL_HS_FINISHED ); + + uint8_t const force_flush = ssl->disable_datagram_packing == 1 ? + SSL_FORCE_FLUSH : SSL_DONT_FORCE_FLUSH; + + /* Swap epochs before sending Finished: we can't do it after + * sending ChangeCipherSpec, in case write returns WANT_READ. + * Must be done before copying, may change out_msg pointer */ + if( is_finished && ssl->handshake->cur_msg_p == ( cur->p + 12 ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "swap epochs to send finished message" ) ); + ret = ssl_swap_epochs( ssl ); + if( ret != 0 ) + return( ret ); + } + + ret = ssl_get_remaining_payload_in_datagram( ssl ); + if( ret < 0 ) + return( ret ); + max_frag_len = (size_t) ret; + + /* CCS is copied as is, while HS messages may need fragmentation */ + if( cur->type == MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC ) + { + if( max_frag_len == 0 ) + { + if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) + return( ret ); + + continue; + } + + memcpy( ssl->out_msg, cur->p, cur->len ); + ssl->out_msglen = cur->len; + ssl->out_msgtype = cur->type; + + /* Update position inside current message */ + ssl->handshake->cur_msg_p += cur->len; + } + else + { + const unsigned char * const p = ssl->handshake->cur_msg_p; + const size_t hs_len = cur->len - 12; + const size_t frag_off = p - ( cur->p + 12 ); + const size_t rem_len = hs_len - frag_off; + size_t cur_hs_frag_len, max_hs_frag_len; + + if( ( max_frag_len < 12 ) || ( max_frag_len == 12 && hs_len != 0 ) ) + { + if( is_finished ) + { + ret = ssl_swap_epochs( ssl ); + if( ret != 0 ) + return( ret ); + } + + if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) + return( ret ); + + continue; + } + max_hs_frag_len = max_frag_len - 12; + + cur_hs_frag_len = rem_len > max_hs_frag_len ? + max_hs_frag_len : rem_len; + + if( frag_off == 0 && cur_hs_frag_len != hs_len ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "fragmenting handshake message (%u > %u)", + (unsigned) cur_hs_frag_len, + (unsigned) max_hs_frag_len ) ); + } + + /* Messages are stored with handshake headers as if not fragmented, + * copy beginning of headers then fill fragmentation fields. + * Handshake headers: type(1) len(3) seq(2) f_off(3) f_len(3) */ + memcpy( ssl->out_msg, cur->p, 6 ); + + ssl->out_msg[6] = MBEDTLS_BYTE_2( frag_off ); + ssl->out_msg[7] = MBEDTLS_BYTE_1( frag_off ); + ssl->out_msg[8] = MBEDTLS_BYTE_0( frag_off ); + + ssl->out_msg[ 9] = MBEDTLS_BYTE_2( cur_hs_frag_len ); + ssl->out_msg[10] = MBEDTLS_BYTE_1( cur_hs_frag_len ); + ssl->out_msg[11] = MBEDTLS_BYTE_0( cur_hs_frag_len ); + + MBEDTLS_SSL_DEBUG_BUF( 3, "handshake header", ssl->out_msg, 12 ); + + /* Copy the handshake message content and set records fields */ + memcpy( ssl->out_msg + 12, p, cur_hs_frag_len ); + ssl->out_msglen = cur_hs_frag_len + 12; + ssl->out_msgtype = cur->type; + + /* Update position inside current message */ + ssl->handshake->cur_msg_p += cur_hs_frag_len; + } + + /* If done with the current message move to the next one if any */ + if( ssl->handshake->cur_msg_p >= cur->p + cur->len ) + { + if( cur->next != NULL ) + { + ssl->handshake->cur_msg = cur->next; + ssl->handshake->cur_msg_p = cur->next->p + 12; + } + else + { + ssl->handshake->cur_msg = NULL; + ssl->handshake->cur_msg_p = NULL; + } + } + + /* Actually send the message out */ + if( ( ret = mbedtls_ssl_write_record( ssl, force_flush ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); + return( ret ); + } + } + + if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) + return( ret ); + + /* Update state and set timer */ + if( ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER ) + ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_FINISHED; + else + { + ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_WAITING; + mbedtls_ssl_set_timer( ssl, ssl->handshake->retransmit_timeout ); + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= mbedtls_ssl_flight_transmit" ) ); + + return( 0 ); +} + +/* + * To be called when the last message of an incoming flight is received. + */ +void mbedtls_ssl_recv_flight_completed( mbedtls_ssl_context *ssl ) +{ + /* We won't need to resend that one any more */ + mbedtls_ssl_flight_free( ssl->handshake->flight ); + ssl->handshake->flight = NULL; + ssl->handshake->cur_msg = NULL; + + /* The next incoming flight will start with this msg_seq */ + ssl->handshake->in_flight_start_seq = ssl->handshake->in_msg_seq; + + /* We don't want to remember CCS's across flight boundaries. */ + ssl->handshake->buffering.seen_ccs = 0; + + /* Clear future message buffering structure. */ + mbedtls_ssl_buffering_free( ssl ); + + /* Cancel timer */ + mbedtls_ssl_set_timer( ssl, 0 ); + + if( ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && + ssl->in_msg[0] == MBEDTLS_SSL_HS_FINISHED ) + { + ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_FINISHED; + } + else + ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_PREPARING; +} + +/* + * To be called when the last message of an outgoing flight is send. + */ +void mbedtls_ssl_send_flight_completed( mbedtls_ssl_context *ssl ) +{ + ssl_reset_retransmit_timeout( ssl ); + mbedtls_ssl_set_timer( ssl, ssl->handshake->retransmit_timeout ); + + if( ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && + ssl->in_msg[0] == MBEDTLS_SSL_HS_FINISHED ) + { + ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_FINISHED; + } + else + ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_WAITING; +} +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + +/* + * Handshake layer functions + */ + +/* + * Write (DTLS: or queue) current handshake (including CCS) message. + * + * - fill in handshake headers + * - update handshake checksum + * - DTLS: save message for resending + * - then pass to the record layer + * + * DTLS: except for HelloRequest, messages are only queued, and will only be + * actually sent when calling flight_transmit() or resend(). + * + * Inputs: + * - ssl->out_msglen: 4 + actual handshake message len + * (4 is the size of handshake headers for TLS) + * - ssl->out_msg[0]: the handshake type (ClientHello, ServerHello, etc) + * - ssl->out_msg + 4: the handshake message body + * + * Outputs, ie state before passing to flight_append() or write_record(): + * - ssl->out_msglen: the length of the record contents + * (including handshake headers but excluding record headers) + * - ssl->out_msg: the record contents (handshake headers + content) + */ +int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + const size_t hs_len = ssl->out_msglen - 4; + const unsigned char hs_type = ssl->out_msg[0]; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write handshake message" ) ); + + /* + * Sanity checks + */ + if( ssl->out_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE && + ssl->out_msgtype != MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC ) + { + /* In SSLv3, the client might send a NoCertificate alert. */ +#if defined(MBEDTLS_SSL_PROTO_SSL3) && defined(MBEDTLS_SSL_CLI_C) + if( ! ( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 && + ssl->out_msgtype == MBEDTLS_SSL_MSG_ALERT && + ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT ) ) +#endif /* MBEDTLS_SSL_PROTO_SSL3 && MBEDTLS_SSL_SRV_C */ + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + } + + /* Whenever we send anything different from a + * HelloRequest we should be in a handshake - double check. */ + if( ! ( ssl->out_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && + hs_type == MBEDTLS_SSL_HS_HELLO_REQUEST ) && + ssl->handshake == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ssl->handshake != NULL && + ssl->handshake->retransmit_state == MBEDTLS_SSL_RETRANS_SENDING ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } +#endif + + /* Double-check that we did not exceed the bounds + * of the outgoing record buffer. + * This should never fail as the various message + * writing functions must obey the bounds of the + * outgoing record buffer, but better be safe. + * + * Note: We deliberately do not check for the MTU or MFL here. + */ + if( ssl->out_msglen > MBEDTLS_SSL_OUT_CONTENT_LEN ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Record too large: " + "size %" MBEDTLS_PRINTF_SIZET + ", maximum %" MBEDTLS_PRINTF_SIZET, + ssl->out_msglen, + (size_t) MBEDTLS_SSL_OUT_CONTENT_LEN ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + /* + * Fill handshake headers + */ + if( ssl->out_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE ) + { + ssl->out_msg[1] = MBEDTLS_BYTE_2( hs_len ); + ssl->out_msg[2] = MBEDTLS_BYTE_1( hs_len ); + ssl->out_msg[3] = MBEDTLS_BYTE_0( hs_len ); + + /* + * DTLS has additional fields in the Handshake layer, + * between the length field and the actual payload: + * uint16 message_seq; + * uint24 fragment_offset; + * uint24 fragment_length; + */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + /* Make room for the additional DTLS fields */ + if( MBEDTLS_SSL_OUT_CONTENT_LEN - ssl->out_msglen < 8 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "DTLS handshake message too large: " + "size %" MBEDTLS_PRINTF_SIZET ", maximum %" MBEDTLS_PRINTF_SIZET, + hs_len, + (size_t) ( MBEDTLS_SSL_OUT_CONTENT_LEN - 12 ) ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + + memmove( ssl->out_msg + 12, ssl->out_msg + 4, hs_len ); + ssl->out_msglen += 8; + + /* Write message_seq and update it, except for HelloRequest */ + if( hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) + { + MBEDTLS_PUT_UINT16_BE( ssl->handshake->out_msg_seq, ssl->out_msg, 4 ); + ++( ssl->handshake->out_msg_seq ); + } + else + { + ssl->out_msg[4] = 0; + ssl->out_msg[5] = 0; + } + + /* Handshake hashes are computed without fragmentation, + * so set frag_offset = 0 and frag_len = hs_len for now */ + memset( ssl->out_msg + 6, 0x00, 3 ); + memcpy( ssl->out_msg + 9, ssl->out_msg + 1, 3 ); + } +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + + /* Update running hashes of handshake messages seen */ + if( hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) + ssl->handshake->update_checksum( ssl, ssl->out_msg, ssl->out_msglen ); + } + + /* Either send now, or just save to be sent (and resent) later */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ! ( ssl->out_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && + hs_type == MBEDTLS_SSL_HS_HELLO_REQUEST ) ) + { + if( ( ret = ssl_flight_append( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_flight_append", ret ); + return( ret ); + } + } + else +#endif + { + if( ( ret = mbedtls_ssl_write_record( ssl, SSL_FORCE_FLUSH ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_record", ret ); + return( ret ); + } + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write handshake message" ) ); + + return( 0 ); +} + +/* + * Record layer functions + */ + +/* + * Write current record. + * + * Uses: + * - ssl->out_msgtype: type of the message (AppData, Handshake, Alert, CCS) + * - ssl->out_msglen: length of the record content (excl headers) + * - ssl->out_msg: record content + */ +int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl, uint8_t force_flush ) +{ + int ret, done = 0; + size_t len = ssl->out_msglen; + uint8_t flush = force_flush; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write record" ) ); + +#if defined(MBEDTLS_ZLIB_SUPPORT) + if( ssl->transform_out != NULL && + ssl->session_out->compression == MBEDTLS_SSL_COMPRESS_DEFLATE ) + { + if( ( ret = ssl_compress_buf( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_compress_buf", ret ); + return( ret ); + } + + len = ssl->out_msglen; + } +#endif /*MBEDTLS_ZLIB_SUPPORT */ + +#if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) + if( mbedtls_ssl_hw_record_write != NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "going for mbedtls_ssl_hw_record_write()" ) ); + + ret = mbedtls_ssl_hw_record_write( ssl ); + if( ret != 0 && ret != MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_hw_record_write", ret ); + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + } + + if( ret == 0 ) + done = 1; + } +#endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ + if( !done ) + { + unsigned i; + size_t protected_record_size; +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + size_t out_buf_len = ssl->out_buf_len; +#else + size_t out_buf_len = MBEDTLS_SSL_OUT_BUFFER_LEN; +#endif + /* Skip writing the record content type to after the encryption, + * as it may change when using the CID extension. */ + + mbedtls_ssl_write_version( ssl->major_ver, ssl->minor_ver, + ssl->conf->transport, ssl->out_hdr + 1 ); + + memcpy( ssl->out_ctr, ssl->cur_out_ctr, 8 ); + MBEDTLS_PUT_UINT16_BE( len, ssl->out_len, 0); + + if( ssl->transform_out != NULL ) + { + mbedtls_record rec; + + rec.buf = ssl->out_iv; + rec.buf_len = out_buf_len - ( ssl->out_iv - ssl->out_buf ); + rec.data_len = ssl->out_msglen; + rec.data_offset = ssl->out_msg - rec.buf; + + memcpy( &rec.ctr[0], ssl->out_ctr, 8 ); + mbedtls_ssl_write_version( ssl->major_ver, ssl->minor_ver, + ssl->conf->transport, rec.ver ); + rec.type = ssl->out_msgtype; + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + /* The CID is set by mbedtls_ssl_encrypt_buf(). */ + rec.cid_len = 0; +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + + if( ( ret = mbedtls_ssl_encrypt_buf( ssl, ssl->transform_out, &rec, + ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_encrypt_buf", ret ); + return( ret ); + } + + if( rec.data_offset != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + /* Update the record content type and CID. */ + ssl->out_msgtype = rec.type; +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID ) + memcpy( ssl->out_cid, rec.cid, rec.cid_len ); +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + ssl->out_msglen = len = rec.data_len; + MBEDTLS_PUT_UINT16_BE( rec.data_len, ssl->out_len, 0 ); + } + + protected_record_size = len + mbedtls_ssl_out_hdr_len( ssl ); + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + /* In case of DTLS, double-check that we don't exceed + * the remaining space in the datagram. */ + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + ret = ssl_get_remaining_space_in_datagram( ssl ); + if( ret < 0 ) + return( ret ); + + if( protected_record_size > (size_t) ret ) + { + /* Should never happen */ + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + } +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + + /* Now write the potentially updated record content type. */ + ssl->out_hdr[0] = (unsigned char) ssl->out_msgtype; + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "output record: msgtype = %u, " + "version = [%u:%u], msglen = %" MBEDTLS_PRINTF_SIZET, + ssl->out_hdr[0], ssl->out_hdr[1], + ssl->out_hdr[2], len ) ); + + MBEDTLS_SSL_DEBUG_BUF( 4, "output record sent to network", + ssl->out_hdr, protected_record_size ); + + ssl->out_left += protected_record_size; + ssl->out_hdr += protected_record_size; + mbedtls_ssl_update_out_pointers( ssl, ssl->transform_out ); + + for( i = 8; i > mbedtls_ssl_ep_len( ssl ); i-- ) + if( ++ssl->cur_out_ctr[i - 1] != 0 ) + break; + + /* The loop goes to its end iff the counter is wrapping */ + if( i == mbedtls_ssl_ep_len( ssl ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "outgoing message counter would wrap" ) ); + return( MBEDTLS_ERR_SSL_COUNTER_WRAPPING ); + } + } + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + flush == SSL_DONT_FORCE_FLUSH ) + { + size_t remaining; + ret = ssl_get_remaining_payload_in_datagram( ssl ); + if( ret < 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_get_remaining_payload_in_datagram", + ret ); + return( ret ); + } + + remaining = (size_t) ret; + if( remaining == 0 ) + { + flush = SSL_FORCE_FLUSH; + } + else + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Still %u bytes available in current datagram", (unsigned) remaining ) ); + } + } +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + + if( ( flush == SSL_FORCE_FLUSH ) && + ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flush_output", ret ); + return( ret ); + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write record" ) ); + + return( 0 ); +} + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + +static int ssl_hs_is_proper_fragment( mbedtls_ssl_context *ssl ) +{ + if( ssl->in_msglen < ssl->in_hslen || + memcmp( ssl->in_msg + 6, "\0\0\0", 3 ) != 0 || + memcmp( ssl->in_msg + 9, ssl->in_msg + 1, 3 ) != 0 ) + { + return( 1 ); + } + return( 0 ); +} + +static uint32_t ssl_get_hs_frag_len( mbedtls_ssl_context const *ssl ) +{ + return( ( ssl->in_msg[9] << 16 ) | + ( ssl->in_msg[10] << 8 ) | + ssl->in_msg[11] ); +} + +static uint32_t ssl_get_hs_frag_off( mbedtls_ssl_context const *ssl ) +{ + return( ( ssl->in_msg[6] << 16 ) | + ( ssl->in_msg[7] << 8 ) | + ssl->in_msg[8] ); +} + +static int ssl_check_hs_header( mbedtls_ssl_context const *ssl ) +{ + uint32_t msg_len, frag_off, frag_len; + + msg_len = ssl_get_hs_total_len( ssl ); + frag_off = ssl_get_hs_frag_off( ssl ); + frag_len = ssl_get_hs_frag_len( ssl ); + + if( frag_off > msg_len ) + return( -1 ); + + if( frag_len > msg_len - frag_off ) + return( -1 ); + + if( frag_len + 12 > ssl->in_msglen ) + return( -1 ); + + return( 0 ); +} + +/* + * Mark bits in bitmask (used for DTLS HS reassembly) + */ +static void ssl_bitmask_set( unsigned char *mask, size_t offset, size_t len ) +{ + unsigned int start_bits, end_bits; + + start_bits = 8 - ( offset % 8 ); + if( start_bits != 8 ) + { + size_t first_byte_idx = offset / 8; + + /* Special case */ + if( len <= start_bits ) + { + for( ; len != 0; len-- ) + mask[first_byte_idx] |= 1 << ( start_bits - len ); + + /* Avoid potential issues with offset or len becoming invalid */ + return; + } + + offset += start_bits; /* Now offset % 8 == 0 */ + len -= start_bits; + + for( ; start_bits != 0; start_bits-- ) + mask[first_byte_idx] |= 1 << ( start_bits - 1 ); + } + + end_bits = len % 8; + if( end_bits != 0 ) + { + size_t last_byte_idx = ( offset + len ) / 8; + + len -= end_bits; /* Now len % 8 == 0 */ + + for( ; end_bits != 0; end_bits-- ) + mask[last_byte_idx] |= 1 << ( 8 - end_bits ); + } + + memset( mask + offset / 8, 0xFF, len / 8 ); +} + +/* + * Check that bitmask is full + */ +static int ssl_bitmask_check( unsigned char *mask, size_t len ) +{ + size_t i; + + for( i = 0; i < len / 8; i++ ) + if( mask[i] != 0xFF ) + return( -1 ); + + for( i = 0; i < len % 8; i++ ) + if( ( mask[len / 8] & ( 1 << ( 7 - i ) ) ) == 0 ) + return( -1 ); + + return( 0 ); +} + +/* msg_len does not include the handshake header */ +static size_t ssl_get_reassembly_buffer_size( size_t msg_len, + unsigned add_bitmap ) +{ + size_t alloc_len; + + alloc_len = 12; /* Handshake header */ + alloc_len += msg_len; /* Content buffer */ + + if( add_bitmap ) + alloc_len += msg_len / 8 + ( msg_len % 8 != 0 ); /* Bitmap */ + + return( alloc_len ); +} + +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + +static uint32_t ssl_get_hs_total_len( mbedtls_ssl_context const *ssl ) +{ + return( ( ssl->in_msg[1] << 16 ) | + ( ssl->in_msg[2] << 8 ) | + ssl->in_msg[3] ); +} + +int mbedtls_ssl_prepare_handshake_record( mbedtls_ssl_context *ssl ) +{ + if( ssl->in_msglen < mbedtls_ssl_hs_hdr_len( ssl ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "handshake message too short: %" MBEDTLS_PRINTF_SIZET, + ssl->in_msglen ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + + ssl->in_hslen = mbedtls_ssl_hs_hdr_len( ssl ) + ssl_get_hs_total_len( ssl ); + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "handshake message: msglen =" + " %" MBEDTLS_PRINTF_SIZET ", type = %u, hslen = %" MBEDTLS_PRINTF_SIZET, + ssl->in_msglen, ssl->in_msg[0], ssl->in_hslen ) ); + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + unsigned int recv_msg_seq = ( ssl->in_msg[4] << 8 ) | ssl->in_msg[5]; + + if( ssl_check_hs_header( ssl ) != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid handshake header" ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + + if( ssl->handshake != NULL && + ( ( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER && + recv_msg_seq != ssl->handshake->in_msg_seq ) || + ( ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER && + ssl->in_msg[0] != MBEDTLS_SSL_HS_CLIENT_HELLO ) ) ) + { + if( recv_msg_seq > ssl->handshake->in_msg_seq ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "received future handshake message of sequence number %u (next %u)", + recv_msg_seq, + ssl->handshake->in_msg_seq ) ); + return( MBEDTLS_ERR_SSL_EARLY_MESSAGE ); + } + + /* Retransmit only on last message from previous flight, to avoid + * too many retransmissions. + * Besides, No sane server ever retransmits HelloVerifyRequest */ + if( recv_msg_seq == ssl->handshake->in_flight_start_seq - 1 && + ssl->in_msg[0] != MBEDTLS_SSL_HS_HELLO_VERIFY_REQUEST ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "received message from last flight, " + "message_seq = %u, start_of_flight = %u", + recv_msg_seq, + ssl->handshake->in_flight_start_seq ) ); + + if( ( ret = mbedtls_ssl_resend( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_resend", ret ); + return( ret ); + } + } + else + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "dropping out-of-sequence message: " + "message_seq = %u, expected = %u", + recv_msg_seq, + ssl->handshake->in_msg_seq ) ); + } + + return( MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ); + } + /* Wait until message completion to increment in_msg_seq */ + + /* Message reassembly is handled alongside buffering of future + * messages; the commonality is that both handshake fragments and + * future messages cannot be forwarded immediately to the + * handshake logic layer. */ + if( ssl_hs_is_proper_fragment( ssl ) == 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "found fragmented DTLS handshake message" ) ); + return( MBEDTLS_ERR_SSL_EARLY_MESSAGE ); + } + } + else +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + /* With TLS we don't handle fragmentation (for now) */ + if( ssl->in_msglen < ssl->in_hslen ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "TLS handshake fragmentation not supported" ) ); + return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); + } + + return( 0 ); +} + +void mbedtls_ssl_update_handshake_status( mbedtls_ssl_context *ssl ) +{ + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + + if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER && hs != NULL ) + { + ssl->handshake->update_checksum( ssl, ssl->in_msg, ssl->in_hslen ); + } + + /* Handshake message is complete, increment counter */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ssl->handshake != NULL ) + { + unsigned offset; + mbedtls_ssl_hs_buffer *hs_buf; + + /* Increment handshake sequence number */ + hs->in_msg_seq++; + + /* + * Clear up handshake buffering and reassembly structure. + */ + + /* Free first entry */ + ssl_buffering_free_slot( ssl, 0 ); + + /* Shift all other entries */ + for( offset = 0, hs_buf = &hs->buffering.hs[0]; + offset + 1 < MBEDTLS_SSL_MAX_BUFFERED_HS; + offset++, hs_buf++ ) + { + *hs_buf = *(hs_buf + 1); + } + + /* Create a fresh last entry */ + memset( hs_buf, 0, sizeof( mbedtls_ssl_hs_buffer ) ); + } +#endif +} + +/* + * DTLS anti-replay: RFC 6347 4.1.2.6 + * + * in_window is a field of bits numbered from 0 (lsb) to 63 (msb). + * Bit n is set iff record number in_window_top - n has been seen. + * + * Usually, in_window_top is the last record number seen and the lsb of + * in_window is set. The only exception is the initial state (record number 0 + * not seen yet). + */ +#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) +void mbedtls_ssl_dtls_replay_reset( mbedtls_ssl_context *ssl ) +{ + ssl->in_window_top = 0; + ssl->in_window = 0; +} + +static inline uint64_t ssl_load_six_bytes( unsigned char *buf ) +{ + return( ( (uint64_t) buf[0] << 40 ) | + ( (uint64_t) buf[1] << 32 ) | + ( (uint64_t) buf[2] << 24 ) | + ( (uint64_t) buf[3] << 16 ) | + ( (uint64_t) buf[4] << 8 ) | + ( (uint64_t) buf[5] ) ); +} + +static int mbedtls_ssl_dtls_record_replay_check( mbedtls_ssl_context *ssl, uint8_t *record_in_ctr ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + unsigned char *original_in_ctr; + + // save original in_ctr + original_in_ctr = ssl->in_ctr; + + // use counter from record + ssl->in_ctr = record_in_ctr; + + ret = mbedtls_ssl_dtls_replay_check( (mbedtls_ssl_context const *) ssl ); + + // restore the counter + ssl->in_ctr = original_in_ctr; + + return ret; +} + +/* + * Return 0 if sequence number is acceptable, -1 otherwise + */ +int mbedtls_ssl_dtls_replay_check( mbedtls_ssl_context const *ssl ) +{ + uint64_t rec_seqnum = ssl_load_six_bytes( ssl->in_ctr + 2 ); + uint64_t bit; + + if( ssl->conf->anti_replay == MBEDTLS_SSL_ANTI_REPLAY_DISABLED ) + return( 0 ); + + if( rec_seqnum > ssl->in_window_top ) + return( 0 ); + + bit = ssl->in_window_top - rec_seqnum; + + if( bit >= 64 ) + return( -1 ); + + if( ( ssl->in_window & ( (uint64_t) 1 << bit ) ) != 0 ) + return( -1 ); + + return( 0 ); +} + +/* + * Update replay window on new validated record + */ +void mbedtls_ssl_dtls_replay_update( mbedtls_ssl_context *ssl ) +{ + uint64_t rec_seqnum = ssl_load_six_bytes( ssl->in_ctr + 2 ); + + if( ssl->conf->anti_replay == MBEDTLS_SSL_ANTI_REPLAY_DISABLED ) + return; + + if( rec_seqnum > ssl->in_window_top ) + { + /* Update window_top and the contents of the window */ + uint64_t shift = rec_seqnum - ssl->in_window_top; + + if( shift >= 64 ) + ssl->in_window = 1; + else + { + ssl->in_window <<= shift; + ssl->in_window |= 1; + } + + ssl->in_window_top = rec_seqnum; + } + else + { + /* Mark that number as seen in the current window */ + uint64_t bit = ssl->in_window_top - rec_seqnum; + + if( bit < 64 ) /* Always true, but be extra sure */ + ssl->in_window |= (uint64_t) 1 << bit; + } +} +#endif /* MBEDTLS_SSL_DTLS_ANTI_REPLAY */ + +#if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) && defined(MBEDTLS_SSL_SRV_C) +/* + * Without any SSL context, check if a datagram looks like a ClientHello with + * a valid cookie, and if it doesn't, generate a HelloVerifyRequest message. + * Both input and output include full DTLS headers. + * + * - if cookie is valid, return 0 + * - if ClientHello looks superficially valid but cookie is not, + * fill obuf and set olen, then + * return MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED + * - otherwise return a specific error code + */ +static int ssl_check_dtls_clihlo_cookie( + mbedtls_ssl_cookie_write_t *f_cookie_write, + mbedtls_ssl_cookie_check_t *f_cookie_check, + void *p_cookie, + const unsigned char *cli_id, size_t cli_id_len, + const unsigned char *in, size_t in_len, + unsigned char *obuf, size_t buf_len, size_t *olen ) +{ + size_t sid_len, cookie_len; + unsigned char *p; + + /* + * Structure of ClientHello with record and handshake headers, + * and expected values. We don't need to check a lot, more checks will be + * done when actually parsing the ClientHello - skipping those checks + * avoids code duplication and does not make cookie forging any easier. + * + * 0-0 ContentType type; copied, must be handshake + * 1-2 ProtocolVersion version; copied + * 3-4 uint16 epoch; copied, must be 0 + * 5-10 uint48 sequence_number; copied + * 11-12 uint16 length; (ignored) + * + * 13-13 HandshakeType msg_type; (ignored) + * 14-16 uint24 length; (ignored) + * 17-18 uint16 message_seq; copied + * 19-21 uint24 fragment_offset; copied, must be 0 + * 22-24 uint24 fragment_length; (ignored) + * + * 25-26 ProtocolVersion client_version; (ignored) + * 27-58 Random random; (ignored) + * 59-xx SessionID session_id; 1 byte len + sid_len content + * 60+ opaque cookie<0..2^8-1>; 1 byte len + content + * ... + * + * Minimum length is 61 bytes. + */ + if( in_len < 61 || + in[0] != MBEDTLS_SSL_MSG_HANDSHAKE || + in[3] != 0 || in[4] != 0 || + in[19] != 0 || in[20] != 0 || in[21] != 0 ) + { + return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); + } + + sid_len = in[59]; + if( sid_len > in_len - 61 ) + return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); + + cookie_len = in[60 + sid_len]; + if( cookie_len > in_len - 60 ) + return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); + + if( f_cookie_check( p_cookie, in + sid_len + 61, cookie_len, + cli_id, cli_id_len ) == 0 ) + { + /* Valid cookie */ + return( 0 ); + } + + /* + * If we get here, we've got an invalid cookie, let's prepare HVR. + * + * 0-0 ContentType type; copied + * 1-2 ProtocolVersion version; copied + * 3-4 uint16 epoch; copied + * 5-10 uint48 sequence_number; copied + * 11-12 uint16 length; olen - 13 + * + * 13-13 HandshakeType msg_type; hello_verify_request + * 14-16 uint24 length; olen - 25 + * 17-18 uint16 message_seq; copied + * 19-21 uint24 fragment_offset; copied + * 22-24 uint24 fragment_length; olen - 25 + * + * 25-26 ProtocolVersion server_version; 0xfe 0xff + * 27-27 opaque cookie<0..2^8-1>; cookie_len = olen - 27, cookie + * + * Minimum length is 28. + */ + if( buf_len < 28 ) + return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); + + /* Copy most fields and adapt others */ + memcpy( obuf, in, 25 ); + obuf[13] = MBEDTLS_SSL_HS_HELLO_VERIFY_REQUEST; + obuf[25] = 0xfe; + obuf[26] = 0xff; + + /* Generate and write actual cookie */ + p = obuf + 28; + if( f_cookie_write( p_cookie, + &p, obuf + buf_len, cli_id, cli_id_len ) != 0 ) + { + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + *olen = p - obuf; + + /* Go back and fill length fields */ + obuf[27] = (unsigned char)( *olen - 28 ); + + obuf[14] = obuf[22] = MBEDTLS_BYTE_2( *olen - 25 ); + obuf[15] = obuf[23] = MBEDTLS_BYTE_1( *olen - 25 ); + obuf[16] = obuf[24] = MBEDTLS_BYTE_0( *olen - 25 ); + + MBEDTLS_PUT_UINT16_BE( *olen - 13, obuf, 11 ); + + return( MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED ); +} + +/* + * Handle possible client reconnect with the same UDP quadruplet + * (RFC 6347 Section 4.2.8). + * + * Called by ssl_parse_record_header() in case we receive an epoch 0 record + * that looks like a ClientHello. + * + * - if the input looks like a ClientHello without cookies, + * send back HelloVerifyRequest, then return 0 + * - if the input looks like a ClientHello with a valid cookie, + * reset the session of the current context, and + * return MBEDTLS_ERR_SSL_CLIENT_RECONNECT + * - if anything goes wrong, return a specific error code + * + * This function is called (through ssl_check_client_reconnect()) when an + * unexpected record is found in ssl_get_next_record(), which will discard the + * record if we return 0, and bubble up the return value otherwise (this + * includes the case of MBEDTLS_ERR_SSL_CLIENT_RECONNECT and of unexpected + * errors, and is the right thing to do in both cases). + */ +static int ssl_handle_possible_reconnect( mbedtls_ssl_context *ssl ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t len; + + if( ssl->conf->f_cookie_write == NULL || + ssl->conf->f_cookie_check == NULL ) + { + /* If we can't use cookies to verify reachability of the peer, + * drop the record. */ + MBEDTLS_SSL_DEBUG_MSG( 1, ( "no cookie callbacks, " + "can't check reconnect validity" ) ); + return( 0 ); + } + + ret = ssl_check_dtls_clihlo_cookie( + ssl->conf->f_cookie_write, + ssl->conf->f_cookie_check, + ssl->conf->p_cookie, + ssl->cli_id, ssl->cli_id_len, + ssl->in_buf, ssl->in_left, + ssl->out_buf, MBEDTLS_SSL_OUT_CONTENT_LEN, &len ); + + MBEDTLS_SSL_DEBUG_RET( 2, "ssl_check_dtls_clihlo_cookie", ret ); + + if( ret == MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED ) + { + int send_ret; + MBEDTLS_SSL_DEBUG_MSG( 1, ( "sending HelloVerifyRequest" ) ); + MBEDTLS_SSL_DEBUG_BUF( 4, "output record sent to network", + ssl->out_buf, len ); + /* Don't check write errors as we can't do anything here. + * If the error is permanent we'll catch it later, + * if it's not, then hopefully it'll work next time. */ + send_ret = ssl->f_send( ssl->p_bio, ssl->out_buf, len ); + MBEDTLS_SSL_DEBUG_RET( 2, "ssl->f_send", send_ret ); + (void) send_ret; + + return( 0 ); + } + + if( ret == 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "cookie is valid, resetting context" ) ); + if( ( ret = mbedtls_ssl_session_reset_int( ssl, 1 ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "reset", ret ); + return( ret ); + } + + return( MBEDTLS_ERR_SSL_CLIENT_RECONNECT ); + } + + return( ret ); +} +#endif /* MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE && MBEDTLS_SSL_SRV_C */ + +static int ssl_check_record_type( uint8_t record_type ) +{ + if( record_type != MBEDTLS_SSL_MSG_HANDSHAKE && + record_type != MBEDTLS_SSL_MSG_ALERT && + record_type != MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC && + record_type != MBEDTLS_SSL_MSG_APPLICATION_DATA ) + { + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + + return( 0 ); +} + +/* + * ContentType type; + * ProtocolVersion version; + * uint16 epoch; // DTLS only + * uint48 sequence_number; // DTLS only + * uint16 length; + * + * Return 0 if header looks sane (and, for DTLS, the record is expected) + * MBEDTLS_ERR_SSL_INVALID_RECORD if the header looks bad, + * MBEDTLS_ERR_SSL_UNEXPECTED_RECORD (DTLS only) if sane but unexpected. + * + * With DTLS, mbedtls_ssl_read_record() will: + * 1. proceed with the record if this function returns 0 + * 2. drop only the current record if this function returns UNEXPECTED_RECORD + * 3. return CLIENT_RECONNECT if this function return that value + * 4. drop the whole datagram if this function returns anything else. + * Point 2 is needed when the peer is resending, and we have already received + * the first record from a datagram but are still waiting for the others. + */ +static int ssl_parse_record_header( mbedtls_ssl_context const *ssl, + unsigned char *buf, + size_t len, + mbedtls_record *rec ) +{ + int major_ver, minor_ver; + + size_t const rec_hdr_type_offset = 0; + size_t const rec_hdr_type_len = 1; + + size_t const rec_hdr_version_offset = rec_hdr_type_offset + + rec_hdr_type_len; + size_t const rec_hdr_version_len = 2; + + size_t const rec_hdr_ctr_len = 8; +#if defined(MBEDTLS_SSL_PROTO_DTLS) + uint32_t rec_epoch; + size_t const rec_hdr_ctr_offset = rec_hdr_version_offset + + rec_hdr_version_len; + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + size_t const rec_hdr_cid_offset = rec_hdr_ctr_offset + + rec_hdr_ctr_len; + size_t rec_hdr_cid_len = 0; +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + + size_t rec_hdr_len_offset; /* To be determined */ + size_t const rec_hdr_len_len = 2; + + /* + * Check minimum lengths for record header. + */ + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + rec_hdr_len_offset = rec_hdr_ctr_offset + rec_hdr_ctr_len; + } + else +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + { + rec_hdr_len_offset = rec_hdr_version_offset + rec_hdr_version_len; + } + + if( len < rec_hdr_len_offset + rec_hdr_len_len ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "datagram of length %u too small to hold DTLS record header of length %u", + (unsigned) len, + (unsigned)( rec_hdr_len_len + rec_hdr_len_len ) ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + + /* + * Parse and validate record content type + */ + + rec->type = buf[ rec_hdr_type_offset ]; + + /* Check record content type */ +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + rec->cid_len = 0; + + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ssl->conf->cid_len != 0 && + rec->type == MBEDTLS_SSL_MSG_CID ) + { + /* Shift pointers to account for record header including CID + * struct { + * ContentType special_type = tls12_cid; + * ProtocolVersion version; + * uint16 epoch; + * uint48 sequence_number; + * opaque cid[cid_length]; // Additional field compared to + * // default DTLS record format + * uint16 length; + * opaque enc_content[DTLSCiphertext.length]; + * } DTLSCiphertext; + */ + + /* So far, we only support static CID lengths + * fixed in the configuration. */ + rec_hdr_cid_len = ssl->conf->cid_len; + rec_hdr_len_offset += rec_hdr_cid_len; + + if( len < rec_hdr_len_offset + rec_hdr_len_len ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "datagram of length %u too small to hold DTLS record header including CID, length %u", + (unsigned) len, + (unsigned)( rec_hdr_len_offset + rec_hdr_len_len ) ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + + /* configured CID len is guaranteed at most 255, see + * MBEDTLS_SSL_CID_OUT_LEN_MAX in check_config.h */ + rec->cid_len = (uint8_t) rec_hdr_cid_len; + memcpy( rec->cid, buf + rec_hdr_cid_offset, rec_hdr_cid_len ); + } + else +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + { + if( ssl_check_record_type( rec->type ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "unknown record type %u", + (unsigned) rec->type ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + } + + /* + * Parse and validate record version + */ + + rec->ver[0] = buf[ rec_hdr_version_offset + 0 ]; + rec->ver[1] = buf[ rec_hdr_version_offset + 1 ]; + mbedtls_ssl_read_version( &major_ver, &minor_ver, + ssl->conf->transport, + &rec->ver[0] ); + + if( major_ver != ssl->major_ver ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "major version mismatch" ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + + if( minor_ver > ssl->conf->max_minor_ver ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "minor version mismatch" ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + + /* + * Parse/Copy record sequence number. + */ + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + /* Copy explicit record sequence number from input buffer. */ + memcpy( &rec->ctr[0], buf + rec_hdr_ctr_offset, + rec_hdr_ctr_len ); + } + else +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + { + /* Copy implicit record sequence number from SSL context structure. */ + memcpy( &rec->ctr[0], ssl->in_ctr, rec_hdr_ctr_len ); + } + + /* + * Parse record length. + */ + + rec->data_offset = rec_hdr_len_offset + rec_hdr_len_len; + rec->data_len = ( (size_t) buf[ rec_hdr_len_offset + 0 ] << 8 ) | + ( (size_t) buf[ rec_hdr_len_offset + 1 ] << 0 ); + MBEDTLS_SSL_DEBUG_BUF( 4, "input record header", buf, rec->data_offset ); + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "input record: msgtype = %u, " + "version = [%d:%d], msglen = %" MBEDTLS_PRINTF_SIZET, + rec->type, + major_ver, minor_ver, rec->data_len ) ); + + rec->buf = buf; + rec->buf_len = rec->data_offset + rec->data_len; + + if( rec->data_len == 0 ) + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + + /* + * DTLS-related tests. + * Check epoch before checking length constraint because + * the latter varies with the epoch. E.g., if a ChangeCipherSpec + * message gets duplicated before the corresponding Finished message, + * the second ChangeCipherSpec should be discarded because it belongs + * to an old epoch, but not because its length is shorter than + * the minimum record length for packets using the new record transform. + * Note that these two kinds of failures are handled differently, + * as an unexpected record is silently skipped but an invalid + * record leads to the entire datagram being dropped. + */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + rec_epoch = ( rec->ctr[0] << 8 ) | rec->ctr[1]; + + /* Check that the datagram is large enough to contain a record + * of the advertised length. */ + if( len < rec->data_offset + rec->data_len ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Datagram of length %u too small to contain record of advertised length %u.", + (unsigned) len, + (unsigned)( rec->data_offset + rec->data_len ) ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + + /* Records from other, non-matching epochs are silently discarded. + * (The case of same-port Client reconnects must be considered in + * the caller). */ + if( rec_epoch != ssl->in_epoch ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "record from another epoch: " + "expected %u, received %lu", + ssl->in_epoch, (unsigned long) rec_epoch ) ); + + /* Records from the next epoch are considered for buffering + * (concretely: early Finished messages). */ + if( rec_epoch == (unsigned) ssl->in_epoch + 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Consider record for buffering" ) ); + return( MBEDTLS_ERR_SSL_EARLY_MESSAGE ); + } + + return( MBEDTLS_ERR_SSL_UNEXPECTED_RECORD ); + } +#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) + /* For records from the correct epoch, check whether their + * sequence number has been seen before. */ + else if( mbedtls_ssl_dtls_record_replay_check( (mbedtls_ssl_context *) ssl, + &rec->ctr[0] ) != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "replayed record" ) ); + return( MBEDTLS_ERR_SSL_UNEXPECTED_RECORD ); + } +#endif + } +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + + return( 0 ); +} + + +#if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) && defined(MBEDTLS_SSL_SRV_C) +static int ssl_check_client_reconnect( mbedtls_ssl_context *ssl ) +{ + unsigned int rec_epoch = ( ssl->in_ctr[0] << 8 ) | ssl->in_ctr[1]; + + /* + * Check for an epoch 0 ClientHello. We can't use in_msg here to + * access the first byte of record content (handshake type), as we + * have an active transform (possibly iv_len != 0), so use the + * fact that the record header len is 13 instead. + */ + if( rec_epoch == 0 && + ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && + ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER && + ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && + ssl->in_left > 13 && + ssl->in_buf[13] == MBEDTLS_SSL_HS_CLIENT_HELLO ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "possible client reconnect " + "from the same port" ) ); + return( ssl_handle_possible_reconnect( ssl ) ); + } + + return( 0 ); +} +#endif /* MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE && MBEDTLS_SSL_SRV_C */ + +/* + * If applicable, decrypt record content + */ +static int ssl_prepare_record_content( mbedtls_ssl_context *ssl, + mbedtls_record *rec ) +{ + int ret, done = 0; + + MBEDTLS_SSL_DEBUG_BUF( 4, "input record from network", + rec->buf, rec->buf_len ); + +#if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) + if( mbedtls_ssl_hw_record_read != NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "going for mbedtls_ssl_hw_record_read()" ) ); + + ret = mbedtls_ssl_hw_record_read( ssl ); + if( ret != 0 && ret != MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_hw_record_read", ret ); + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + } + + if( ret == 0 ) + done = 1; + } +#endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ + if( !done && ssl->transform_in != NULL ) + { + unsigned char const old_msg_type = rec->type; + + if( ( ret = mbedtls_ssl_decrypt_buf( ssl, ssl->transform_in, + rec ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_decrypt_buf", ret ); + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + if( ret == MBEDTLS_ERR_SSL_UNEXPECTED_CID && + ssl->conf->ignore_unexpected_cid + == MBEDTLS_SSL_UNEXPECTED_CID_IGNORE ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "ignoring unexpected CID" ) ); + ret = MBEDTLS_ERR_SSL_CONTINUE_PROCESSING; + } +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + + return( ret ); + } + + if( old_msg_type != rec->type ) + { + MBEDTLS_SSL_DEBUG_MSG( 4, ( "record type after decrypt (before %d): %d", + old_msg_type, rec->type ) ); + } + + MBEDTLS_SSL_DEBUG_BUF( 4, "input payload after decrypt", + rec->buf + rec->data_offset, rec->data_len ); + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + /* We have already checked the record content type + * in ssl_parse_record_header(), failing or silently + * dropping the record in the case of an unknown type. + * + * Since with the use of CIDs, the record content type + * might change during decryption, re-check the record + * content type, but treat a failure as fatal this time. */ + if( ssl_check_record_type( rec->type ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "unknown record type" ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + + if( rec->data_len == 0 ) + { +#if defined(MBEDTLS_SSL_PROTO_TLS1_2) + if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 + && rec->type != MBEDTLS_SSL_MSG_APPLICATION_DATA ) + { + /* TLS v1.2 explicitly disallows zero-length messages which are not application data */ + MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid zero-length message type: %d", ssl->in_msgtype ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } +#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ + + ssl->nb_zero++; + + /* + * Three or more empty messages may be a DoS attack + * (excessive CPU consumption). + */ + if( ssl->nb_zero > 3 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "received four consecutive empty " + "messages, possible DoS attack" ) ); + /* Treat the records as if they were not properly authenticated, + * thereby failing the connection if we see more than allowed + * by the configured bad MAC threshold. */ + return( MBEDTLS_ERR_SSL_INVALID_MAC ); + } + } + else + ssl->nb_zero = 0; + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + ; /* in_ctr read from peer, not maintained internally */ + } + else +#endif + { + unsigned i; + for( i = 8; i > mbedtls_ssl_ep_len( ssl ); i-- ) + if( ++ssl->in_ctr[i - 1] != 0 ) + break; + + /* The loop goes to its end iff the counter is wrapping */ + if( i == mbedtls_ssl_ep_len( ssl ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "incoming message counter would wrap" ) ); + return( MBEDTLS_ERR_SSL_COUNTER_WRAPPING ); + } + } + + } + +#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + mbedtls_ssl_dtls_replay_update( ssl ); + } +#endif + + /* Check actual (decrypted) record content length against + * configured maximum. */ + if( ssl->in_msglen > MBEDTLS_SSL_IN_CONTENT_LEN ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad message length" ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + + return( 0 ); +} + +/* + * Read a record. + * + * Silently ignore non-fatal alert (and for DTLS, invalid records as well, + * RFC 6347 4.1.2.7) and continue reading until a valid record is found. + * + */ + +/* Helper functions for mbedtls_ssl_read_record(). */ +static int ssl_consume_current_message( mbedtls_ssl_context *ssl ); +static int ssl_get_next_record( mbedtls_ssl_context *ssl ); +static int ssl_record_is_in_progress( mbedtls_ssl_context *ssl ); + +int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, + unsigned update_hs_digest ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> read record" ) ); + + if( ssl->keep_current_message == 0 ) + { + do { + + ret = ssl_consume_current_message( ssl ); + if( ret != 0 ) + return( ret ); + + if( ssl_record_is_in_progress( ssl ) == 0 ) + { +#if defined(MBEDTLS_SSL_PROTO_DTLS) + int have_buffered = 0; + + /* We only check for buffered messages if the + * current datagram is fully consumed. */ + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ssl_next_record_is_in_datagram( ssl ) == 0 ) + { + if( ssl_load_buffered_message( ssl ) == 0 ) + have_buffered = 1; + } + + if( have_buffered == 0 ) +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + { + ret = ssl_get_next_record( ssl ); + if( ret == MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ) + continue; + + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, ( "ssl_get_next_record" ), ret ); + return( ret ); + } + } + } + + ret = mbedtls_ssl_handle_message_type( ssl ); + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ret == MBEDTLS_ERR_SSL_EARLY_MESSAGE ) + { + /* Buffer future message */ + ret = ssl_buffer_message( ssl ); + if( ret != 0 ) + return( ret ); + + ret = MBEDTLS_ERR_SSL_CONTINUE_PROCESSING; + } +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + + } while( MBEDTLS_ERR_SSL_NON_FATAL == ret || + MBEDTLS_ERR_SSL_CONTINUE_PROCESSING == ret ); + + if( 0 != ret ) + { + MBEDTLS_SSL_DEBUG_RET( 1, ( "mbedtls_ssl_handle_message_type" ), ret ); + return( ret ); + } + + if( ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && + update_hs_digest == 1 ) + { + mbedtls_ssl_update_handshake_status( ssl ); + } + } + else + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "reuse previously read message" ) ); + ssl->keep_current_message = 0; + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= read record" ) ); + + return( 0 ); +} + +#if defined(MBEDTLS_SSL_PROTO_DTLS) +static int ssl_next_record_is_in_datagram( mbedtls_ssl_context *ssl ) +{ + if( ssl->in_left > ssl->next_record_offset ) + return( 1 ); + + return( 0 ); +} + +static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ) +{ + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + mbedtls_ssl_hs_buffer * hs_buf; + int ret = 0; + + if( hs == NULL ) + return( -1 ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_load_buffered_messsage" ) ); + + if( ssl->state == MBEDTLS_SSL_CLIENT_CHANGE_CIPHER_SPEC || + ssl->state == MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC ) + { + /* Check if we have seen a ChangeCipherSpec before. + * If yes, synthesize a CCS record. */ + if( !hs->buffering.seen_ccs ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "CCS not seen in the current flight" ) ); + ret = -1; + goto exit; + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Injecting buffered CCS message" ) ); + ssl->in_msgtype = MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC; + ssl->in_msglen = 1; + ssl->in_msg[0] = 1; + + /* As long as they are equal, the exact value doesn't matter. */ + ssl->in_left = 0; + ssl->next_record_offset = 0; + + hs->buffering.seen_ccs = 0; + goto exit; + } + +#if defined(MBEDTLS_DEBUG_C) + /* Debug only */ + { + unsigned offset; + for( offset = 1; offset < MBEDTLS_SSL_MAX_BUFFERED_HS; offset++ ) + { + hs_buf = &hs->buffering.hs[offset]; + if( hs_buf->is_valid == 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Future message with sequence number %u %s buffered.", + hs->in_msg_seq + offset, + hs_buf->is_complete ? "fully" : "partially" ) ); + } + } + } +#endif /* MBEDTLS_DEBUG_C */ + + /* Check if we have buffered and/or fully reassembled the + * next handshake message. */ + hs_buf = &hs->buffering.hs[0]; + if( ( hs_buf->is_valid == 1 ) && ( hs_buf->is_complete == 1 ) ) + { + /* Synthesize a record containing the buffered HS message. */ + size_t msg_len = ( hs_buf->data[1] << 16 ) | + ( hs_buf->data[2] << 8 ) | + hs_buf->data[3]; + + /* Double-check that we haven't accidentally buffered + * a message that doesn't fit into the input buffer. */ + if( msg_len + 12 > MBEDTLS_SSL_IN_CONTENT_LEN ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Next handshake message has been buffered - load" ) ); + MBEDTLS_SSL_DEBUG_BUF( 3, "Buffered handshake message (incl. header)", + hs_buf->data, msg_len + 12 ); + + ssl->in_msgtype = MBEDTLS_SSL_MSG_HANDSHAKE; + ssl->in_hslen = msg_len + 12; + ssl->in_msglen = msg_len + 12; + memcpy( ssl->in_msg, hs_buf->data, ssl->in_hslen ); + + ret = 0; + goto exit; + } + else + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Next handshake message %u not or only partially bufffered", + hs->in_msg_seq ) ); + } + + ret = -1; + +exit: + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= ssl_load_buffered_message" ) ); + return( ret ); +} + +static int ssl_buffer_make_space( mbedtls_ssl_context *ssl, + size_t desired ) +{ + int offset; + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Attempt to free buffered messages to have %u bytes available", + (unsigned) desired ) ); + + /* Get rid of future records epoch first, if such exist. */ + ssl_free_buffered_record( ssl ); + + /* Check if we have enough space available now. */ + if( desired <= ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - + hs->buffering.total_bytes_buffered ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Enough space available after freeing future epoch record" ) ); + return( 0 ); + } + + /* We don't have enough space to buffer the next expected handshake + * message. Remove buffers used for future messages to gain space, + * starting with the most distant one. */ + for( offset = MBEDTLS_SSL_MAX_BUFFERED_HS - 1; + offset >= 0; offset-- ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Free buffering slot %d to make space for reassembly of next handshake message", + offset ) ); + + ssl_buffering_free_slot( ssl, (uint8_t) offset ); + + /* Check if we have enough space available now. */ + if( desired <= ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - + hs->buffering.total_bytes_buffered ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Enough space available after freeing buffered HS messages" ) ); + return( 0 ); + } + } + + return( -1 ); +} + +static int ssl_buffer_message( mbedtls_ssl_context *ssl ) +{ + int ret = 0; + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + + if( hs == NULL ) + return( 0 ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_buffer_message" ) ); + + switch( ssl->in_msgtype ) + { + case MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC: + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Remember CCS message" ) ); + + hs->buffering.seen_ccs = 1; + break; + + case MBEDTLS_SSL_MSG_HANDSHAKE: + { + unsigned recv_msg_seq_offset; + unsigned recv_msg_seq = ( ssl->in_msg[4] << 8 ) | ssl->in_msg[5]; + mbedtls_ssl_hs_buffer *hs_buf; + size_t msg_len = ssl->in_hslen - 12; + + /* We should never receive an old handshake + * message - double-check nonetheless. */ + if( recv_msg_seq < ssl->handshake->in_msg_seq ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + recv_msg_seq_offset = recv_msg_seq - ssl->handshake->in_msg_seq; + if( recv_msg_seq_offset >= MBEDTLS_SSL_MAX_BUFFERED_HS ) + { + /* Silently ignore -- message too far in the future */ + MBEDTLS_SSL_DEBUG_MSG( 2, + ( "Ignore future HS message with sequence number %u, " + "buffering window %u - %u", + recv_msg_seq, ssl->handshake->in_msg_seq, + ssl->handshake->in_msg_seq + MBEDTLS_SSL_MAX_BUFFERED_HS - 1 ) ); + + goto exit; + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffering HS message with sequence number %u, offset %u ", + recv_msg_seq, recv_msg_seq_offset ) ); + + hs_buf = &hs->buffering.hs[ recv_msg_seq_offset ]; + + /* Check if the buffering for this seq nr has already commenced. */ + if( !hs_buf->is_valid ) + { + size_t reassembly_buf_sz; + + hs_buf->is_fragmented = + ( ssl_hs_is_proper_fragment( ssl ) == 1 ); + + /* We copy the message back into the input buffer + * after reassembly, so check that it's not too large. + * This is an implementation-specific limitation + * and not one from the standard, hence it is not + * checked in ssl_check_hs_header(). */ + if( msg_len + 12 > MBEDTLS_SSL_IN_CONTENT_LEN ) + { + /* Ignore message */ + goto exit; + } + + /* Check if we have enough space to buffer the message. */ + if( hs->buffering.total_bytes_buffered > + MBEDTLS_SSL_DTLS_MAX_BUFFERING ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + reassembly_buf_sz = ssl_get_reassembly_buffer_size( msg_len, + hs_buf->is_fragmented ); + + if( reassembly_buf_sz > ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - + hs->buffering.total_bytes_buffered ) ) + { + if( recv_msg_seq_offset > 0 ) + { + /* If we can't buffer a future message because + * of space limitations -- ignore. */ + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffering of future message of size %" MBEDTLS_PRINTF_SIZET + " would exceed the compile-time limit %" MBEDTLS_PRINTF_SIZET + " (already %" MBEDTLS_PRINTF_SIZET + " bytes buffered) -- ignore\n", + msg_len, (size_t) MBEDTLS_SSL_DTLS_MAX_BUFFERING, + hs->buffering.total_bytes_buffered ) ); + goto exit; + } + else + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffering of future message of size %" MBEDTLS_PRINTF_SIZET + " would exceed the compile-time limit %" MBEDTLS_PRINTF_SIZET + " (already %" MBEDTLS_PRINTF_SIZET + " bytes buffered) -- attempt to make space by freeing buffered future messages\n", + msg_len, (size_t) MBEDTLS_SSL_DTLS_MAX_BUFFERING, + hs->buffering.total_bytes_buffered ) ); + } + + if( ssl_buffer_make_space( ssl, reassembly_buf_sz ) != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Reassembly of next message of size %" MBEDTLS_PRINTF_SIZET + " (%" MBEDTLS_PRINTF_SIZET " with bitmap) would exceed" + " the compile-time limit %" MBEDTLS_PRINTF_SIZET + " (already %" MBEDTLS_PRINTF_SIZET + " bytes buffered) -- fail\n", + msg_len, + reassembly_buf_sz, + (size_t) MBEDTLS_SSL_DTLS_MAX_BUFFERING, + hs->buffering.total_bytes_buffered ) ); + ret = MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL; + goto exit; + } + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialize reassembly, total length = %" MBEDTLS_PRINTF_SIZET, + msg_len ) ); + + hs_buf->data = mbedtls_calloc( 1, reassembly_buf_sz ); + if( hs_buf->data == NULL ) + { + ret = MBEDTLS_ERR_SSL_ALLOC_FAILED; + goto exit; + } + hs_buf->data_len = reassembly_buf_sz; + + /* Prepare final header: copy msg_type, length and message_seq, + * then add standardised fragment_offset and fragment_length */ + memcpy( hs_buf->data, ssl->in_msg, 6 ); + memset( hs_buf->data + 6, 0, 3 ); + memcpy( hs_buf->data + 9, hs_buf->data + 1, 3 ); + + hs_buf->is_valid = 1; + + hs->buffering.total_bytes_buffered += reassembly_buf_sz; + } + else + { + /* Make sure msg_type and length are consistent */ + if( memcmp( hs_buf->data, ssl->in_msg, 4 ) != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Fragment header mismatch - ignore" ) ); + /* Ignore */ + goto exit; + } + } + + if( !hs_buf->is_complete ) + { + size_t frag_len, frag_off; + unsigned char * const msg = hs_buf->data + 12; + + /* + * Check and copy current fragment + */ + + /* Validation of header fields already done in + * mbedtls_ssl_prepare_handshake_record(). */ + frag_off = ssl_get_hs_frag_off( ssl ); + frag_len = ssl_get_hs_frag_len( ssl ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "adding fragment, offset = %" MBEDTLS_PRINTF_SIZET + ", length = %" MBEDTLS_PRINTF_SIZET, + frag_off, frag_len ) ); + memcpy( msg + frag_off, ssl->in_msg + 12, frag_len ); + + if( hs_buf->is_fragmented ) + { + unsigned char * const bitmask = msg + msg_len; + ssl_bitmask_set( bitmask, frag_off, frag_len ); + hs_buf->is_complete = ( ssl_bitmask_check( bitmask, + msg_len ) == 0 ); + } + else + { + hs_buf->is_complete = 1; + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "message %scomplete", + hs_buf->is_complete ? "" : "not yet " ) ); + } + + break; + } + + default: + /* We don't buffer other types of messages. */ + break; + } + +exit: + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= ssl_buffer_message" ) ); + return( ret ); +} +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + +static int ssl_consume_current_message( mbedtls_ssl_context *ssl ) +{ + /* + * Consume last content-layer message and potentially + * update in_msglen which keeps track of the contents' + * consumption state. + * + * (1) Handshake messages: + * Remove last handshake message, move content + * and adapt in_msglen. + * + * (2) Alert messages: + * Consume whole record content, in_msglen = 0. + * + * (3) Change cipher spec: + * Consume whole record content, in_msglen = 0. + * + * (4) Application data: + * Don't do anything - the record layer provides + * the application data as a stream transport + * and consumes through mbedtls_ssl_read only. + * + */ + + /* Case (1): Handshake messages */ + if( ssl->in_hslen != 0 ) + { + /* Hard assertion to be sure that no application data + * is in flight, as corrupting ssl->in_msglen during + * ssl->in_offt != NULL is fatal. */ + if( ssl->in_offt != NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + /* + * Get next Handshake message in the current record + */ + + /* Notes: + * (1) in_hslen is not necessarily the size of the + * current handshake content: If DTLS handshake + * fragmentation is used, that's the fragment + * size instead. Using the total handshake message + * size here is faulty and should be changed at + * some point. + * (2) While it doesn't seem to cause problems, one + * has to be very careful not to assume that in_hslen + * is always <= in_msglen in a sensible communication. + * Again, it's wrong for DTLS handshake fragmentation. + * The following check is therefore mandatory, and + * should not be treated as a silently corrected assertion. + * Additionally, ssl->in_hslen might be arbitrarily out of + * bounds after handling a DTLS message with an unexpected + * sequence number, see mbedtls_ssl_prepare_handshake_record. + */ + if( ssl->in_hslen < ssl->in_msglen ) + { + ssl->in_msglen -= ssl->in_hslen; + memmove( ssl->in_msg, ssl->in_msg + ssl->in_hslen, + ssl->in_msglen ); + + MBEDTLS_SSL_DEBUG_BUF( 4, "remaining content in record", + ssl->in_msg, ssl->in_msglen ); + } + else + { + ssl->in_msglen = 0; + } + + ssl->in_hslen = 0; + } + /* Case (4): Application data */ + else if( ssl->in_offt != NULL ) + { + return( 0 ); + } + /* Everything else (CCS & Alerts) */ + else + { + ssl->in_msglen = 0; + } + + return( 0 ); +} + +static int ssl_record_is_in_progress( mbedtls_ssl_context *ssl ) +{ + if( ssl->in_msglen > 0 ) + return( 1 ); + + return( 0 ); +} + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + +static void ssl_free_buffered_record( mbedtls_ssl_context *ssl ) +{ + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + if( hs == NULL ) + return; + + if( hs->buffering.future_record.data != NULL ) + { + hs->buffering.total_bytes_buffered -= + hs->buffering.future_record.len; + + mbedtls_free( hs->buffering.future_record.data ); + hs->buffering.future_record.data = NULL; + } +} + +static int ssl_load_buffered_record( mbedtls_ssl_context *ssl ) +{ + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + unsigned char * rec; + size_t rec_len; + unsigned rec_epoch; +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + size_t in_buf_len = ssl->in_buf_len; +#else + size_t in_buf_len = MBEDTLS_SSL_IN_BUFFER_LEN; +#endif + if( ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + return( 0 ); + + if( hs == NULL ) + return( 0 ); + + rec = hs->buffering.future_record.data; + rec_len = hs->buffering.future_record.len; + rec_epoch = hs->buffering.future_record.epoch; + + if( rec == NULL ) + return( 0 ); + + /* Only consider loading future records if the + * input buffer is empty. */ + if( ssl_next_record_is_in_datagram( ssl ) == 1 ) + return( 0 ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_load_buffered_record" ) ); + + if( rec_epoch != ssl->in_epoch ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffered record not from current epoch." ) ); + goto exit; + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Found buffered record from current epoch - load" ) ); + + /* Double-check that the record is not too large */ + if( rec_len > in_buf_len - (size_t)( ssl->in_hdr - ssl->in_buf ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + memcpy( ssl->in_hdr, rec, rec_len ); + ssl->in_left = rec_len; + ssl->next_record_offset = 0; + + ssl_free_buffered_record( ssl ); + +exit: + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= ssl_load_buffered_record" ) ); + return( 0 ); +} + +static int ssl_buffer_future_record( mbedtls_ssl_context *ssl, + mbedtls_record const *rec ) +{ + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + + /* Don't buffer future records outside handshakes. */ + if( hs == NULL ) + return( 0 ); + + /* Only buffer handshake records (we are only interested + * in Finished messages). */ + if( rec->type != MBEDTLS_SSL_MSG_HANDSHAKE ) + return( 0 ); + + /* Don't buffer more than one future epoch record. */ + if( hs->buffering.future_record.data != NULL ) + return( 0 ); + + /* Don't buffer record if there's not enough buffering space remaining. */ + if( rec->buf_len > ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - + hs->buffering.total_bytes_buffered ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffering of future epoch record of size %" MBEDTLS_PRINTF_SIZET + " would exceed the compile-time limit %" MBEDTLS_PRINTF_SIZET + " (already %" MBEDTLS_PRINTF_SIZET + " bytes buffered) -- ignore\n", + rec->buf_len, (size_t) MBEDTLS_SSL_DTLS_MAX_BUFFERING, + hs->buffering.total_bytes_buffered ) ); + return( 0 ); + } + + /* Buffer record */ + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffer record from epoch %u", + ssl->in_epoch + 1U ) ); + MBEDTLS_SSL_DEBUG_BUF( 3, "Buffered record", rec->buf, rec->buf_len ); + + /* ssl_parse_record_header() only considers records + * of the next epoch as candidates for buffering. */ + hs->buffering.future_record.epoch = ssl->in_epoch + 1; + hs->buffering.future_record.len = rec->buf_len; + + hs->buffering.future_record.data = + mbedtls_calloc( 1, hs->buffering.future_record.len ); + if( hs->buffering.future_record.data == NULL ) + { + /* If we run out of RAM trying to buffer a + * record from the next epoch, just ignore. */ + return( 0 ); + } + + memcpy( hs->buffering.future_record.data, rec->buf, rec->buf_len ); + + hs->buffering.total_bytes_buffered += rec->buf_len; + return( 0 ); +} + +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + +static int ssl_get_next_record( mbedtls_ssl_context *ssl ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + mbedtls_record rec; + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + /* We might have buffered a future record; if so, + * and if the epoch matches now, load it. + * On success, this call will set ssl->in_left to + * the length of the buffered record, so that + * the calls to ssl_fetch_input() below will + * essentially be no-ops. */ + ret = ssl_load_buffered_record( ssl ); + if( ret != 0 ) + return( ret ); +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + + /* Ensure that we have enough space available for the default form + * of TLS / DTLS record headers (5 Bytes for TLS, 13 Bytes for DTLS, + * with no space for CIDs counted in). */ + ret = mbedtls_ssl_fetch_input( ssl, mbedtls_ssl_in_hdr_len( ssl ) ); + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_fetch_input", ret ); + return( ret ); + } + + ret = ssl_parse_record_header( ssl, ssl->in_hdr, ssl->in_left, &rec ); + if( ret != 0 ) + { +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + if( ret == MBEDTLS_ERR_SSL_EARLY_MESSAGE ) + { + ret = ssl_buffer_future_record( ssl, &rec ); + if( ret != 0 ) + return( ret ); + + /* Fall through to handling of unexpected records */ + ret = MBEDTLS_ERR_SSL_UNEXPECTED_RECORD; + } + + if( ret == MBEDTLS_ERR_SSL_UNEXPECTED_RECORD ) + { +#if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) && defined(MBEDTLS_SSL_SRV_C) + /* Reset in pointers to default state for TLS/DTLS records, + * assuming no CID and no offset between record content and + * record plaintext. */ + mbedtls_ssl_update_in_pointers( ssl ); + + /* Setup internal message pointers from record structure. */ + ssl->in_msgtype = rec.type; +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + ssl->in_len = ssl->in_cid + rec.cid_len; +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + ssl->in_iv = ssl->in_msg = ssl->in_len + 2; + ssl->in_msglen = rec.data_len; + + ret = ssl_check_client_reconnect( ssl ); + MBEDTLS_SSL_DEBUG_RET( 2, "ssl_check_client_reconnect", ret ); + if( ret != 0 ) + return( ret ); +#endif + + /* Skip unexpected record (but not whole datagram) */ + ssl->next_record_offset = rec.buf_len; + + MBEDTLS_SSL_DEBUG_MSG( 1, ( "discarding unexpected record " + "(header)" ) ); + } + else + { + /* Skip invalid record and the rest of the datagram */ + ssl->next_record_offset = 0; + ssl->in_left = 0; + + MBEDTLS_SSL_DEBUG_MSG( 1, ( "discarding invalid record " + "(header)" ) ); + } + + /* Get next record */ + return( MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ); + } + else +#endif + { + return( ret ); + } + } + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + /* Remember offset of next record within datagram. */ + ssl->next_record_offset = rec.buf_len; + if( ssl->next_record_offset < ssl->in_left ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "more than one record within datagram" ) ); + } + } + else +#endif + { + /* + * Fetch record contents from underlying transport. + */ + ret = mbedtls_ssl_fetch_input( ssl, rec.buf_len ); + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_fetch_input", ret ); + return( ret ); + } + + ssl->in_left = 0; + } + + /* + * Decrypt record contents. + */ + + if( ( ret = ssl_prepare_record_content( ssl, &rec ) ) != 0 ) + { +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + /* Silently discard invalid records */ + if( ret == MBEDTLS_ERR_SSL_INVALID_MAC ) + { + /* Except when waiting for Finished as a bad mac here + * probably means something went wrong in the handshake + * (eg wrong psk used, mitm downgrade attempt, etc.) */ + if( ssl->state == MBEDTLS_SSL_CLIENT_FINISHED || + ssl->state == MBEDTLS_SSL_SERVER_FINISHED ) + { +#if defined(MBEDTLS_SSL_ALL_ALERT_MESSAGES) + if( ret == MBEDTLS_ERR_SSL_INVALID_MAC ) + { + mbedtls_ssl_send_alert_message( ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_BAD_RECORD_MAC ); + } +#endif + return( ret ); + } + +#if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) + if( ssl->conf->badmac_limit != 0 && + ++ssl->badmac_seen >= ssl->conf->badmac_limit ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "too many records with bad MAC" ) ); + return( MBEDTLS_ERR_SSL_INVALID_MAC ); + } +#endif + + /* As above, invalid records cause + * dismissal of the whole datagram. */ + + ssl->next_record_offset = 0; + ssl->in_left = 0; + + MBEDTLS_SSL_DEBUG_MSG( 1, ( "discarding invalid record (mac)" ) ); + return( MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ); + } + + return( ret ); + } + else +#endif + { + /* Error out (and send alert) on invalid records */ +#if defined(MBEDTLS_SSL_ALL_ALERT_MESSAGES) + if( ret == MBEDTLS_ERR_SSL_INVALID_MAC ) + { + mbedtls_ssl_send_alert_message( ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_BAD_RECORD_MAC ); + } +#endif + return( ret ); + } + } + + + /* Reset in pointers to default state for TLS/DTLS records, + * assuming no CID and no offset between record content and + * record plaintext. */ + mbedtls_ssl_update_in_pointers( ssl ); +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + ssl->in_len = ssl->in_cid + rec.cid_len; +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + ssl->in_iv = ssl->in_len + 2; + + /* The record content type may change during decryption, + * so re-read it. */ + ssl->in_msgtype = rec.type; + /* Also update the input buffer, because unfortunately + * the server-side ssl_parse_client_hello() reparses the + * record header when receiving a ClientHello initiating + * a renegotiation. */ + ssl->in_hdr[0] = rec.type; + ssl->in_msg = rec.buf + rec.data_offset; + ssl->in_msglen = rec.data_len; + MBEDTLS_PUT_UINT16_BE( rec.data_len, ssl->in_len, 0 ); + +#if defined(MBEDTLS_ZLIB_SUPPORT) + if( ssl->transform_in != NULL && + ssl->session_in->compression == MBEDTLS_SSL_COMPRESS_DEFLATE ) + { + if( ( ret = ssl_decompress_buf( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_decompress_buf", ret ); + return( ret ); + } + + /* Check actual (decompress) record content length against + * configured maximum. */ + if( ssl->in_msglen > MBEDTLS_SSL_IN_CONTENT_LEN ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad message length" ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + } +#endif /* MBEDTLS_ZLIB_SUPPORT */ + + return( 0 ); +} + +int mbedtls_ssl_handle_message_type( mbedtls_ssl_context *ssl ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + /* + * Handle particular types of records + */ + if( ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE ) + { + if( ( ret = mbedtls_ssl_prepare_handshake_record( ssl ) ) != 0 ) + { + return( ret ); + } + } + + if( ssl->in_msgtype == MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC ) + { + if( ssl->in_msglen != 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid CCS message, len: %" MBEDTLS_PRINTF_SIZET, + ssl->in_msglen ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + + if( ssl->in_msg[0] != 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid CCS message, content: %02x", + ssl->in_msg[0] ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ssl->state != MBEDTLS_SSL_CLIENT_CHANGE_CIPHER_SPEC && + ssl->state != MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC ) + { + if( ssl->handshake == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "dropping ChangeCipherSpec outside handshake" ) ); + return( MBEDTLS_ERR_SSL_UNEXPECTED_RECORD ); + } + + MBEDTLS_SSL_DEBUG_MSG( 1, ( "received out-of-order ChangeCipherSpec - remember" ) ); + return( MBEDTLS_ERR_SSL_EARLY_MESSAGE ); + } +#endif + } + + if( ssl->in_msgtype == MBEDTLS_SSL_MSG_ALERT ) + { + if( ssl->in_msglen != 2 ) + { + /* Note: Standard allows for more than one 2 byte alert + to be packed in a single message, but Mbed TLS doesn't + currently support this. */ + MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid alert message, len: %" MBEDTLS_PRINTF_SIZET, + ssl->in_msglen ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "got an alert message, type: [%u:%u]", + ssl->in_msg[0], ssl->in_msg[1] ) ); + + /* + * Ignore non-fatal alerts, except close_notify and no_renegotiation + */ + if( ssl->in_msg[0] == MBEDTLS_SSL_ALERT_LEVEL_FATAL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "is a fatal alert message (msg %d)", + ssl->in_msg[1] ) ); + return( MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE ); + } + + if( ssl->in_msg[0] == MBEDTLS_SSL_ALERT_LEVEL_WARNING && + ssl->in_msg[1] == MBEDTLS_SSL_ALERT_MSG_CLOSE_NOTIFY ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "is a close notify message" ) ); + return( MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY ); + } + +#if defined(MBEDTLS_SSL_RENEGOTIATION_ENABLED) + if( ssl->in_msg[0] == MBEDTLS_SSL_ALERT_LEVEL_WARNING && + ssl->in_msg[1] == MBEDTLS_SSL_ALERT_MSG_NO_RENEGOTIATION ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "is a SSLv3 no renegotiation alert" ) ); + /* Will be handled when trying to parse ServerHello */ + return( 0 ); + } +#endif + +#if defined(MBEDTLS_SSL_PROTO_SSL3) && defined(MBEDTLS_SSL_SRV_C) + if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 && + ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && + ssl->in_msg[0] == MBEDTLS_SSL_ALERT_LEVEL_WARNING && + ssl->in_msg[1] == MBEDTLS_SSL_ALERT_MSG_NO_CERT ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "is a SSLv3 no_cert" ) ); + /* Will be handled in mbedtls_ssl_parse_certificate() */ + return( 0 ); + } +#endif /* MBEDTLS_SSL_PROTO_SSL3 && MBEDTLS_SSL_SRV_C */ + + /* Silently ignore: fetch new message */ + return MBEDTLS_ERR_SSL_NON_FATAL; + } + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + /* Drop unexpected ApplicationData records, + * except at the beginning of renegotiations */ + if( ssl->in_msgtype == MBEDTLS_SSL_MSG_APPLICATION_DATA && + ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER +#if defined(MBEDTLS_SSL_RENEGOTIATION) + && ! ( ssl->renego_status == MBEDTLS_SSL_RENEGOTIATION_IN_PROGRESS && + ssl->state == MBEDTLS_SSL_SERVER_HELLO ) +#endif + ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "dropping unexpected ApplicationData" ) ); + return( MBEDTLS_ERR_SSL_NON_FATAL ); + } + + if( ssl->handshake != NULL && + ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER ) + { + mbedtls_ssl_handshake_wrapup_free_hs_transform( ssl ); + } + } +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + + return( 0 ); +} + +int mbedtls_ssl_send_fatal_handshake_failure( mbedtls_ssl_context *ssl ) +{ + return( mbedtls_ssl_send_alert_message( ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ) ); +} + +int mbedtls_ssl_send_alert_message( mbedtls_ssl_context *ssl, + unsigned char level, + unsigned char message ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + if( ssl == NULL || ssl->conf == NULL ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> send alert message" ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "send alert level=%u message=%u", level, message )); + + ssl->out_msgtype = MBEDTLS_SSL_MSG_ALERT; + ssl->out_msglen = 2; + ssl->out_msg[0] = level; + ssl->out_msg[1] = message; + + if( ( ret = mbedtls_ssl_write_record( ssl, SSL_FORCE_FLUSH ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); + return( ret ); + } + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= send alert message" ) ); + + return( 0 ); +} + +int mbedtls_ssl_write_change_cipher_spec( mbedtls_ssl_context *ssl ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write change cipher spec" ) ); + + ssl->out_msgtype = MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC; + ssl->out_msglen = 1; + ssl->out_msg[0] = 1; + + ssl->state++; + + if( ( ret = mbedtls_ssl_write_handshake_msg( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_handshake_msg", ret ); + return( ret ); + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write change cipher spec" ) ); + + return( 0 ); +} + +int mbedtls_ssl_parse_change_cipher_spec( mbedtls_ssl_context *ssl ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse change cipher spec" ) ); + + if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); + return( ret ); + } + + if( ssl->in_msgtype != MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad change cipher spec message" ) ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); + return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); + } + + /* CCS records are only accepted if they have length 1 and content '1', + * so we don't need to check this here. */ + + /* + * Switch to our negotiated transform and session parameters for inbound + * data. + */ + MBEDTLS_SSL_DEBUG_MSG( 3, ( "switching to new transform spec for inbound data" ) ); + ssl->transform_in = ssl->transform_negotiate; + ssl->session_in = ssl->session_negotiate; + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { +#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) + mbedtls_ssl_dtls_replay_reset( ssl ); +#endif + + /* Increment epoch */ + if( ++ssl->in_epoch == 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "DTLS epoch would wrap" ) ); + /* This is highly unlikely to happen for legitimate reasons, so + treat it as an attack and don't send an alert. */ + return( MBEDTLS_ERR_SSL_COUNTER_WRAPPING ); + } + } + else +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + memset( ssl->in_ctr, 0, 8 ); + + mbedtls_ssl_update_in_pointers( ssl ); + +#if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) + if( mbedtls_ssl_hw_record_activate != NULL ) + { + if( ( ret = mbedtls_ssl_hw_record_activate( ssl, MBEDTLS_SSL_CHANNEL_INBOUND ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_hw_record_activate", ret ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_INTERNAL_ERROR ); + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + } + } +#endif + + ssl->state++; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= parse change cipher spec" ) ); + + return( 0 ); +} + +/* Once ssl->out_hdr as the address of the beginning of the + * next outgoing record is set, deduce the other pointers. + * + * Note: For TLS, we save the implicit record sequence number + * (entering MAC computation) in the 8 bytes before ssl->out_hdr, + * and the caller has to make sure there's space for this. + */ + +static size_t ssl_transform_get_explicit_iv_len( + mbedtls_ssl_transform const *transform ) +{ + if( transform->minor_ver < MBEDTLS_SSL_MINOR_VERSION_2 ) + return( 0 ); + + return( transform->ivlen - transform->fixed_ivlen ); +} + +void mbedtls_ssl_update_out_pointers( mbedtls_ssl_context *ssl, + mbedtls_ssl_transform *transform ) +{ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + ssl->out_ctr = ssl->out_hdr + 3; +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + ssl->out_cid = ssl->out_ctr + 8; + ssl->out_len = ssl->out_cid; + if( transform != NULL ) + ssl->out_len += transform->out_cid_len; +#else /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + ssl->out_len = ssl->out_ctr + 8; +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + ssl->out_iv = ssl->out_len + 2; + } + else +#endif + { + ssl->out_ctr = ssl->out_hdr - 8; + ssl->out_len = ssl->out_hdr + 3; +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + ssl->out_cid = ssl->out_len; +#endif + ssl->out_iv = ssl->out_hdr + 5; + } + + ssl->out_msg = ssl->out_iv; + /* Adjust out_msg to make space for explicit IV, if used. */ + if( transform != NULL ) + ssl->out_msg += ssl_transform_get_explicit_iv_len( transform ); +} + +/* Once ssl->in_hdr as the address of the beginning of the + * next incoming record is set, deduce the other pointers. + * + * Note: For TLS, we save the implicit record sequence number + * (entering MAC computation) in the 8 bytes before ssl->in_hdr, + * and the caller has to make sure there's space for this. + */ + +void mbedtls_ssl_update_in_pointers( mbedtls_ssl_context *ssl ) +{ + /* This function sets the pointers to match the case + * of unprotected TLS/DTLS records, with both ssl->in_iv + * and ssl->in_msg pointing to the beginning of the record + * content. + * + * When decrypting a protected record, ssl->in_msg + * will be shifted to point to the beginning of the + * record plaintext. + */ + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + /* This sets the header pointers to match records + * without CID. When we receive a record containing + * a CID, the fields are shifted accordingly in + * ssl_parse_record_header(). */ + ssl->in_ctr = ssl->in_hdr + 3; +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + ssl->in_cid = ssl->in_ctr + 8; + ssl->in_len = ssl->in_cid; /* Default: no CID */ +#else /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + ssl->in_len = ssl->in_ctr + 8; +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + ssl->in_iv = ssl->in_len + 2; + } + else +#endif + { + ssl->in_ctr = ssl->in_hdr - 8; + ssl->in_len = ssl->in_hdr + 3; +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + ssl->in_cid = ssl->in_len; +#endif + ssl->in_iv = ssl->in_hdr + 5; + } + + /* This will be adjusted at record decryption time. */ + ssl->in_msg = ssl->in_iv; +} + +/* + * Setup an SSL context + */ + +void mbedtls_ssl_reset_in_out_pointers( mbedtls_ssl_context *ssl ) +{ + /* Set the incoming and outgoing record pointers. */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + ssl->out_hdr = ssl->out_buf; + ssl->in_hdr = ssl->in_buf; + } + else +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + { + ssl->out_hdr = ssl->out_buf + 8; + ssl->in_hdr = ssl->in_buf + 8; + } + + /* Derive other internal pointers. */ + mbedtls_ssl_update_out_pointers( ssl, NULL /* no transform enabled */ ); + mbedtls_ssl_update_in_pointers ( ssl ); +} + +/* + * SSL get accessors + */ +size_t mbedtls_ssl_get_bytes_avail( const mbedtls_ssl_context *ssl ) +{ + return( ssl->in_offt == NULL ? 0 : ssl->in_msglen ); +} + +int mbedtls_ssl_check_pending( const mbedtls_ssl_context *ssl ) +{ + /* + * Case A: We're currently holding back + * a message for further processing. + */ + + if( ssl->keep_current_message == 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "ssl_check_pending: record held back for processing" ) ); + return( 1 ); + } + + /* + * Case B: Further records are pending in the current datagram. + */ + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ssl->in_left > ssl->next_record_offset ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "ssl_check_pending: more records within current datagram" ) ); + return( 1 ); + } +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + + /* + * Case C: A handshake message is being processed. + */ + + if( ssl->in_hslen > 0 && ssl->in_hslen < ssl->in_msglen ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "ssl_check_pending: more handshake messages within current record" ) ); + return( 1 ); + } + + /* + * Case D: An application data message is being processed + */ + if( ssl->in_offt != NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "ssl_check_pending: application data record is being processed" ) ); + return( 1 ); + } + + /* + * In all other cases, the rest of the message can be dropped. + * As in ssl_get_next_record, this needs to be adapted if + * we implement support for multiple alerts in single records. + */ + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "ssl_check_pending: nothing pending" ) ); + return( 0 ); +} + + +int mbedtls_ssl_get_record_expansion( const mbedtls_ssl_context *ssl ) +{ + size_t transform_expansion = 0; + const mbedtls_ssl_transform *transform = ssl->transform_out; + unsigned block_size; + + size_t out_hdr_len = mbedtls_ssl_out_hdr_len( ssl ); + + if( transform == NULL ) + return( (int) out_hdr_len ); + +#if defined(MBEDTLS_ZLIB_SUPPORT) + if( ssl->session_out->compression != MBEDTLS_SSL_COMPRESS_NULL ) + return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); +#endif + + switch( mbedtls_cipher_get_cipher_mode( &transform->cipher_ctx_enc ) ) + { + case MBEDTLS_MODE_GCM: + case MBEDTLS_MODE_CCM: + case MBEDTLS_MODE_CHACHAPOLY: + case MBEDTLS_MODE_STREAM: + transform_expansion = transform->minlen; + break; + + case MBEDTLS_MODE_CBC: + + block_size = mbedtls_cipher_get_block_size( + &transform->cipher_ctx_enc ); + + /* Expansion due to the addition of the MAC. */ + transform_expansion += transform->maclen; + + /* Expansion due to the addition of CBC padding; + * Theoretically up to 256 bytes, but we never use + * more than the block size of the underlying cipher. */ + transform_expansion += block_size; + + /* For TLS 1.1 or higher, an explicit IV is added + * after the record header. */ +#if defined(MBEDTLS_SSL_PROTO_TLS1_1) || defined(MBEDTLS_SSL_PROTO_TLS1_2) + if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) + transform_expansion += block_size; +#endif /* MBEDTLS_SSL_PROTO_TLS1_1 || MBEDTLS_SSL_PROTO_TLS1_2 */ + + break; + + default: + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + if( transform->out_cid_len != 0 ) + transform_expansion += MBEDTLS_SSL_MAX_CID_EXPANSION; +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + + return( (int)( out_hdr_len + transform_expansion ) ); +} + +#if defined(MBEDTLS_SSL_RENEGOTIATION) +/* + * Check record counters and renegotiate if they're above the limit. + */ +static int ssl_check_ctr_renegotiate( mbedtls_ssl_context *ssl ) +{ + size_t ep_len = mbedtls_ssl_ep_len( ssl ); + int in_ctr_cmp; + int out_ctr_cmp; + + if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER || + ssl->renego_status == MBEDTLS_SSL_RENEGOTIATION_PENDING || + ssl->conf->disable_renegotiation == MBEDTLS_SSL_RENEGOTIATION_DISABLED ) + { + return( 0 ); + } + + in_ctr_cmp = memcmp( ssl->in_ctr + ep_len, + ssl->conf->renego_period + ep_len, 8 - ep_len ); + out_ctr_cmp = memcmp( ssl->cur_out_ctr + ep_len, + ssl->conf->renego_period + ep_len, 8 - ep_len ); + + if( in_ctr_cmp <= 0 && out_ctr_cmp <= 0 ) + { + return( 0 ); + } + + MBEDTLS_SSL_DEBUG_MSG( 1, ( "record counter limit reached: renegotiate" ) ); + return( mbedtls_ssl_renegotiate( ssl ) ); +} +#endif /* MBEDTLS_SSL_RENEGOTIATION */ + +/* + * Receive application data decrypted from the SSL layer + */ +int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t n; + + if( ssl == NULL || ssl->conf == NULL ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> read" ) ); + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) + return( ret ); + + if( ssl->handshake != NULL && + ssl->handshake->retransmit_state == MBEDTLS_SSL_RETRANS_SENDING ) + { + if( ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 ) + return( ret ); + } + } +#endif + + /* + * Check if renegotiation is necessary and/or handshake is + * in process. If yes, perform/continue, and fall through + * if an unexpected packet is received while the client + * is waiting for the ServerHello. + * + * (There is no equivalent to the last condition on + * the server-side as it is not treated as within + * a handshake while waiting for the ClientHello + * after a renegotiation request.) + */ + +#if defined(MBEDTLS_SSL_RENEGOTIATION) + ret = ssl_check_ctr_renegotiate( ssl ); + if( ret != MBEDTLS_ERR_SSL_WAITING_SERVER_HELLO_RENEGO && + ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_check_ctr_renegotiate", ret ); + return( ret ); + } +#endif + + if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER ) + { + ret = mbedtls_ssl_handshake( ssl ); + if( ret != MBEDTLS_ERR_SSL_WAITING_SERVER_HELLO_RENEGO && + ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_handshake", ret ); + return( ret ); + } + } + + /* Loop as long as no application data record is available */ + while( ssl->in_offt == NULL ) + { + /* Start timer if not already running */ + if( ssl->f_get_timer != NULL && + ssl->f_get_timer( ssl->p_timer ) == -1 ) + { + mbedtls_ssl_set_timer( ssl, ssl->conf->read_timeout ); + } + + if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) + { + if( ret == MBEDTLS_ERR_SSL_CONN_EOF ) + return( 0 ); + + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); + return( ret ); + } + + if( ssl->in_msglen == 0 && + ssl->in_msgtype == MBEDTLS_SSL_MSG_APPLICATION_DATA ) + { + /* + * OpenSSL sends empty messages to randomize the IV + */ + if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) + { + if( ret == MBEDTLS_ERR_SSL_CONN_EOF ) + return( 0 ); + + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); + return( ret ); + } + } + + if( ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "received handshake message" ) ); + + /* + * - For client-side, expect SERVER_HELLO_REQUEST. + * - For server-side, expect CLIENT_HELLO. + * - Fail (TLS) or silently drop record (DTLS) in other cases. + */ + +#if defined(MBEDTLS_SSL_CLI_C) + if( ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT && + ( ssl->in_msg[0] != MBEDTLS_SSL_HS_HELLO_REQUEST || + ssl->in_hslen != mbedtls_ssl_hs_hdr_len( ssl ) ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "handshake received (not HelloRequest)" ) ); + + /* With DTLS, drop the packet (probably from last handshake) */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + continue; + } +#endif + return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); + } +#endif /* MBEDTLS_SSL_CLI_C */ + +#if defined(MBEDTLS_SSL_SRV_C) + if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && + ssl->in_msg[0] != MBEDTLS_SSL_HS_CLIENT_HELLO ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "handshake received (not ClientHello)" ) ); + + /* With DTLS, drop the packet (probably from last handshake) */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + continue; + } +#endif + return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); + } +#endif /* MBEDTLS_SSL_SRV_C */ + +#if defined(MBEDTLS_SSL_RENEGOTIATION) + /* Determine whether renegotiation attempt should be accepted */ + if( ! ( ssl->conf->disable_renegotiation == MBEDTLS_SSL_RENEGOTIATION_DISABLED || + ( ssl->secure_renegotiation == MBEDTLS_SSL_LEGACY_RENEGOTIATION && + ssl->conf->allow_legacy_renegotiation == + MBEDTLS_SSL_LEGACY_NO_RENEGOTIATION ) ) ) + { + /* + * Accept renegotiation request + */ + + /* DTLS clients need to know renego is server-initiated */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT ) + { + ssl->renego_status = MBEDTLS_SSL_RENEGOTIATION_PENDING; + } +#endif + ret = mbedtls_ssl_start_renegotiation( ssl ); + if( ret != MBEDTLS_ERR_SSL_WAITING_SERVER_HELLO_RENEGO && + ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_start_renegotiation", + ret ); + return( ret ); + } + } + else +#endif /* MBEDTLS_SSL_RENEGOTIATION */ + { + /* + * Refuse renegotiation + */ + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "refusing renegotiation, sending alert" ) ); + +#if defined(MBEDTLS_SSL_PROTO_SSL3) + if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) + { + /* SSLv3 does not have a "no_renegotiation" warning, so + we send a fatal alert and abort the connection. */ + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); + return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); + } + else +#endif /* MBEDTLS_SSL_PROTO_SSL3 */ +#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ + defined(MBEDTLS_SSL_PROTO_TLS1_2) + if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_1 ) + { + if( ( ret = mbedtls_ssl_send_alert_message( ssl, + MBEDTLS_SSL_ALERT_LEVEL_WARNING, + MBEDTLS_SSL_ALERT_MSG_NO_RENEGOTIATION ) ) != 0 ) + { + return( ret ); + } + } + else +#endif /* MBEDTLS_SSL_PROTO_TLS1 || MBEDTLS_SSL_PROTO_TLS1_1 || + MBEDTLS_SSL_PROTO_TLS1_2 */ + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + } + + /* At this point, we don't know whether the renegotiation has been + * completed or not. The cases to consider are the following: + * 1) The renegotiation is complete. In this case, no new record + * has been read yet. + * 2) The renegotiation is incomplete because the client received + * an application data record while awaiting the ServerHello. + * 3) The renegotiation is incomplete because the client received + * a non-handshake, non-application data message while awaiting + * the ServerHello. + * In each of these case, looping will be the proper action: + * - For 1), the next iteration will read a new record and check + * if it's application data. + * - For 2), the loop condition isn't satisfied as application data + * is present, hence continue is the same as break + * - For 3), the loop condition is satisfied and read_record + * will re-deliver the message that was held back by the client + * when expecting the ServerHello. + */ + continue; + } +#if defined(MBEDTLS_SSL_RENEGOTIATION) + else if( ssl->renego_status == MBEDTLS_SSL_RENEGOTIATION_PENDING ) + { + if( ssl->conf->renego_max_records >= 0 ) + { + if( ++ssl->renego_records_seen > ssl->conf->renego_max_records ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "renegotiation requested, " + "but not honored by client" ) ); + return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); + } + } + } +#endif /* MBEDTLS_SSL_RENEGOTIATION */ + + /* Fatal and closure alerts handled by mbedtls_ssl_read_record() */ + if( ssl->in_msgtype == MBEDTLS_SSL_MSG_ALERT ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "ignoring non-fatal non-closure alert" ) ); + return( MBEDTLS_ERR_SSL_WANT_READ ); + } + + if( ssl->in_msgtype != MBEDTLS_SSL_MSG_APPLICATION_DATA ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad application data message" ) ); + return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); + } + + ssl->in_offt = ssl->in_msg; + + /* We're going to return something now, cancel timer, + * except if handshake (renegotiation) is in progress */ + if( ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER ) + mbedtls_ssl_set_timer( ssl, 0 ); + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + /* If we requested renego but received AppData, resend HelloRequest. + * Do it now, after setting in_offt, to avoid taking this branch + * again if ssl_write_hello_request() returns WANT_WRITE */ +#if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_RENEGOTIATION) + if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && + ssl->renego_status == MBEDTLS_SSL_RENEGOTIATION_PENDING ) + { + if( ( ret = mbedtls_ssl_resend_hello_request( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_resend_hello_request", + ret ); + return( ret ); + } + } +#endif /* MBEDTLS_SSL_SRV_C && MBEDTLS_SSL_RENEGOTIATION */ +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + } + + n = ( len < ssl->in_msglen ) + ? len : ssl->in_msglen; + + memcpy( buf, ssl->in_offt, n ); + ssl->in_msglen -= n; + + /* Zeroising the plaintext buffer to erase unused application data + from the memory. */ + mbedtls_platform_zeroize( ssl->in_offt, n ); + + if( ssl->in_msglen == 0 ) + { + /* all bytes consumed */ + ssl->in_offt = NULL; + ssl->keep_current_message = 0; + } + else + { + /* more data available */ + ssl->in_offt += n; + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= read" ) ); + + return( (int) n ); +} + +/* + * Send application data to be encrypted by the SSL layer, taking care of max + * fragment length and buffer size. + * + * According to RFC 5246 Section 6.2.1: + * + * Zero-length fragments of Application data MAY be sent as they are + * potentially useful as a traffic analysis countermeasure. + * + * Therefore, it is possible that the input message length is 0 and the + * corresponding return code is 0 on success. + */ +static int ssl_write_real( mbedtls_ssl_context *ssl, + const unsigned char *buf, size_t len ) +{ + int ret = mbedtls_ssl_get_max_out_record_payload( ssl ); + const size_t max_len = (size_t) ret; + + if( ret < 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_get_max_out_record_payload", ret ); + return( ret ); + } + + if( len > max_len ) + { +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "fragment larger than the (negotiated) " + "maximum fragment length: %" MBEDTLS_PRINTF_SIZET + " > %" MBEDTLS_PRINTF_SIZET, + len, max_len ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + else +#endif + len = max_len; + } + + if( ssl->out_left != 0 ) + { + /* + * The user has previously tried to send the data and + * MBEDTLS_ERR_SSL_WANT_WRITE or the message was only partially + * written. In this case, we expect the high-level write function + * (e.g. mbedtls_ssl_write()) to be called with the same parameters + */ + if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flush_output", ret ); + return( ret ); + } + } + else + { + /* + * The user is trying to send a message the first time, so we need to + * copy the data into the internal buffers and setup the data structure + * to keep track of partial writes + */ + ssl->out_msglen = len; + ssl->out_msgtype = MBEDTLS_SSL_MSG_APPLICATION_DATA; + memcpy( ssl->out_msg, buf, len ); + + if( ( ret = mbedtls_ssl_write_record( ssl, SSL_FORCE_FLUSH ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); + return( ret ); + } + } + + return( (int) len ); +} + +/* + * Write application data, doing 1/n-1 splitting if necessary. + * + * With non-blocking I/O, ssl_write_real() may return WANT_WRITE, + * then the caller will call us again with the same arguments, so + * remember whether we already did the split or not. + */ +#if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING) +static int ssl_write_split( mbedtls_ssl_context *ssl, + const unsigned char *buf, size_t len ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + if( ssl->conf->cbc_record_splitting == + MBEDTLS_SSL_CBC_RECORD_SPLITTING_DISABLED || + len <= 1 || + ssl->minor_ver > MBEDTLS_SSL_MINOR_VERSION_1 || + mbedtls_cipher_get_cipher_mode( &ssl->transform_out->cipher_ctx_enc ) + != MBEDTLS_MODE_CBC ) + { + return( ssl_write_real( ssl, buf, len ) ); + } + + if( ssl->split_done == 0 ) + { + if( ( ret = ssl_write_real( ssl, buf, 1 ) ) <= 0 ) + return( ret ); + ssl->split_done = 1; + } + + if( ( ret = ssl_write_real( ssl, buf + 1, len - 1 ) ) <= 0 ) + return( ret ); + ssl->split_done = 0; + + return( ret + 1 ); +} +#endif /* MBEDTLS_SSL_CBC_RECORD_SPLITTING */ + +/* + * Write application data (public-facing wrapper) + */ +int mbedtls_ssl_write( mbedtls_ssl_context *ssl, const unsigned char *buf, size_t len ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write" ) ); + + if( ssl == NULL || ssl->conf == NULL ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + +#if defined(MBEDTLS_SSL_RENEGOTIATION) + if( ( ret = ssl_check_ctr_renegotiate( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_check_ctr_renegotiate", ret ); + return( ret ); + } +#endif + + if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER ) + { + if( ( ret = mbedtls_ssl_handshake( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_handshake", ret ); + return( ret ); + } + } + +#if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING) + ret = ssl_write_split( ssl, buf, len ); +#else + ret = ssl_write_real( ssl, buf, len ); +#endif + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write" ) ); + + return( ret ); +} + +/* + * Notify the peer that the connection is being closed + */ +int mbedtls_ssl_close_notify( mbedtls_ssl_context *ssl ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + if( ssl == NULL || ssl->conf == NULL ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write close notify" ) ); + + if( ssl->out_left != 0 ) + return( mbedtls_ssl_flush_output( ssl ) ); + + if( ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER ) + { + if( ( ret = mbedtls_ssl_send_alert_message( ssl, + MBEDTLS_SSL_ALERT_LEVEL_WARNING, + MBEDTLS_SSL_ALERT_MSG_CLOSE_NOTIFY ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_send_alert_message", ret ); + return( ret ); + } + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write close notify" ) ); + + return( 0 ); +} + +void mbedtls_ssl_transform_free( mbedtls_ssl_transform *transform ) +{ + if( transform == NULL ) + return; + +#if defined(MBEDTLS_ZLIB_SUPPORT) + deflateEnd( &transform->ctx_deflate ); + inflateEnd( &transform->ctx_inflate ); +#endif + + mbedtls_cipher_free( &transform->cipher_ctx_enc ); + mbedtls_cipher_free( &transform->cipher_ctx_dec ); + +#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC) + mbedtls_md_free( &transform->md_ctx_enc ); + mbedtls_md_free( &transform->md_ctx_dec ); +#endif + + mbedtls_platform_zeroize( transform, sizeof( mbedtls_ssl_transform ) ); +} + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + +void mbedtls_ssl_buffering_free( mbedtls_ssl_context *ssl ) +{ + unsigned offset; + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + + if( hs == NULL ) + return; + + ssl_free_buffered_record( ssl ); + + for( offset = 0; offset < MBEDTLS_SSL_MAX_BUFFERED_HS; offset++ ) + ssl_buffering_free_slot( ssl, offset ); +} + +static void ssl_buffering_free_slot( mbedtls_ssl_context *ssl, + uint8_t slot ) +{ + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + mbedtls_ssl_hs_buffer * const hs_buf = &hs->buffering.hs[slot]; + + if( slot >= MBEDTLS_SSL_MAX_BUFFERED_HS ) + return; + + if( hs_buf->is_valid == 1 ) + { + hs->buffering.total_bytes_buffered -= hs_buf->data_len; + mbedtls_platform_zeroize( hs_buf->data, hs_buf->data_len ); + mbedtls_free( hs_buf->data ); + memset( hs_buf, 0, sizeof( mbedtls_ssl_hs_buffer ) ); + } +} + +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + +/* + * Convert version numbers to/from wire format + * and, for DTLS, to/from TLS equivalent. + * + * For TLS this is the identity. + * For DTLS, use 1's complement (v -> 255 - v, and then map as follows: + * 1.0 <-> 3.2 (DTLS 1.0 is based on TLS 1.1) + * 1.x <-> 3.x+1 for x != 0 (DTLS 1.2 based on TLS 1.2) + */ +void mbedtls_ssl_write_version( int major, int minor, int transport, + unsigned char ver[2] ) +{ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + if( minor == MBEDTLS_SSL_MINOR_VERSION_2 ) + --minor; /* DTLS 1.0 stored as TLS 1.1 internally */ + + ver[0] = (unsigned char)( 255 - ( major - 2 ) ); + ver[1] = (unsigned char)( 255 - ( minor - 1 ) ); + } + else +#else + ((void) transport); +#endif + { + ver[0] = (unsigned char) major; + ver[1] = (unsigned char) minor; + } +} + +void mbedtls_ssl_read_version( int *major, int *minor, int transport, + const unsigned char ver[2] ) +{ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + *major = 255 - ver[0] + 2; + *minor = 255 - ver[1] + 1; + + if( *minor == MBEDTLS_SSL_MINOR_VERSION_1 ) + ++*minor; /* DTLS 1.0 stored as TLS 1.1 internally */ + } + else +#else + ((void) transport); +#endif + { + *major = ver[0]; + *minor = ver[1]; + } +} + +#endif /* MBEDTLS_SSL_TLS_C */ diff --git a/Externals/mbedtls/library/ssl_srv.c b/Externals/mbedtls/library/ssl_srv.c index bc77f8020342..1a63173204f6 100644 --- a/Externals/mbedtls/library/ssl_srv.c +++ b/Externals/mbedtls/library/ssl_srv.c @@ -1,7 +1,7 @@ /* * SSLv3/TLSv1 server-side functions * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,15 +15,9 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_SSL_SRV_C) @@ -35,10 +29,13 @@ #define mbedtls_free free #endif -#include "mbedtls/debug.h" #include "mbedtls/ssl.h" #include "mbedtls/ssl_internal.h" +#include "mbedtls/debug.h" +#include "mbedtls/error.h" #include "mbedtls/platform_util.h" +#include "constant_time_internal.h" +#include "mbedtls/constant_time.h" #include @@ -85,7 +82,7 @@ static int ssl_parse_servername_ext( mbedtls_ssl_context *ssl, const unsigned char *buf, size_t len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t servername_list_size, hostname_len; const unsigned char *p; @@ -149,6 +146,48 @@ static int ssl_parse_servername_ext( mbedtls_ssl_context *ssl, } #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) +static int ssl_conf_has_psk_or_cb( mbedtls_ssl_config const *conf ) +{ + if( conf->f_psk != NULL ) + return( 1 ); + + if( conf->psk_identity_len == 0 || conf->psk_identity == NULL ) + return( 0 ); + + if( conf->psk != NULL && conf->psk_len != 0 ) + return( 1 ); + +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ! mbedtls_svc_key_id_is_null( conf->psk_opaque ) ) + return( 1 ); +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + + return( 0 ); +} + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +static int ssl_use_opaque_psk( mbedtls_ssl_context const *ssl ) +{ + if( ssl->conf->f_psk != NULL ) + { + /* If we've used a callback to select the PSK, + * the static configuration is irrelevant. */ + + if( ! mbedtls_svc_key_id_is_null( ssl->handshake->psk_opaque ) ) + return( 1 ); + + return( 0 ); + } + + if( ! mbedtls_svc_key_id_is_null( ssl->conf->psk_opaque ) ) + return( 1 ); + + return( 0 ); +} +#endif /* MBEDTLS_USE_PSA_CRYPTO */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ + static int ssl_parse_renegotiation_info( mbedtls_ssl_context *ssl, const unsigned char *buf, size_t len ) @@ -159,7 +198,7 @@ static int ssl_parse_renegotiation_info( mbedtls_ssl_context *ssl, /* Check verify-data in constant-time. The length OTOH is no secret */ if( len != 1 + ssl->verify_data_len || buf[0] != ssl->verify_data_len || - mbedtls_ssl_safer_memcmp( buf + 1, ssl->peer_verify_data, + mbedtls_ct_memcmp( buf + 1, ssl->peer_verify_data, ssl->verify_data_len ) != 0 ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "non-matching renegotiation info" ) ); @@ -186,7 +225,7 @@ static int ssl_parse_renegotiation_info( mbedtls_ssl_context *ssl, } #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) /* * Status of the implementation of signature-algorithms extension: @@ -261,20 +300,20 @@ static int ssl_parse_signature_algorithms_ext( mbedtls_ssl_context *ssl, { mbedtls_ssl_sig_hash_set_add( &ssl->handshake->hash_algs, sig_cur, md_cur ); MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello v3, signature_algorithm ext:" - " match sig %d and hash %d", - sig_cur, md_cur ) ); + " match sig %u and hash %u", + (unsigned) sig_cur, (unsigned) md_cur ) ); } else { MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello v3, signature_algorithm ext: " - "hash alg %d not supported", md_cur ) ); + "hash alg %u not supported", (unsigned) md_cur ) ); } } return( 0 ); } #endif /* MBEDTLS_SSL_PROTO_TLS1_2 && - MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ + MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) @@ -390,7 +429,7 @@ static int ssl_parse_ecjpake_kkpp( mbedtls_ssl_context *ssl, const unsigned char *buf, size_t len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( mbedtls_ecjpake_check( &ssl->handshake->ecjpake_ctx ) != 0 ) { @@ -433,6 +472,78 @@ static int ssl_parse_max_fragment_length_ext( mbedtls_ssl_context *ssl, } #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) +static int ssl_parse_cid_ext( mbedtls_ssl_context *ssl, + const unsigned char *buf, + size_t len ) +{ + size_t peer_cid_len; + + /* CID extension only makes sense in DTLS */ + if( ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client hello message" ) ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); + } + + /* + * Quoting draft-ietf-tls-dtls-connection-id-05 + * https://tools.ietf.org/html/draft-ietf-tls-dtls-connection-id-05 + * + * struct { + * opaque cid<0..2^8-1>; + * } ConnectionId; + */ + + if( len < 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client hello message" ) ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); + } + + peer_cid_len = *buf++; + len--; + + if( len != peer_cid_len ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client hello message" ) ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); + } + + /* Ignore CID if the user has disabled its use. */ + if( ssl->negotiate_cid == MBEDTLS_SSL_CID_DISABLED ) + { + /* Leave ssl->handshake->cid_in_use in its default + * value of MBEDTLS_SSL_CID_DISABLED. */ + MBEDTLS_SSL_DEBUG_MSG( 3, ( "Client sent CID extension, but CID disabled" ) ); + return( 0 ); + } + + if( peer_cid_len > MBEDTLS_SSL_CID_OUT_LEN_MAX ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client hello message" ) ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER ); + return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); + } + + ssl->handshake->cid_in_use = MBEDTLS_SSL_CID_ENABLED; + ssl->handshake->peer_cid_len = (uint8_t) peer_cid_len; + memcpy( ssl->handshake->peer_cid, buf, peer_cid_len ); + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "Use of CID extension negotiated" ) ); + MBEDTLS_SSL_DEBUG_BUF( 3, "Client CID", buf, peer_cid_len ); + + return( 0 ); +} +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + #if defined(MBEDTLS_SSL_TRUNCATED_HMAC) static int ssl_parse_truncated_hmac_ext( mbedtls_ssl_context *ssl, const unsigned char *buf, @@ -510,7 +621,7 @@ static int ssl_parse_session_ticket_ext( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ssl_session session; mbedtls_ssl_session_init( &session ); @@ -524,7 +635,7 @@ static int ssl_parse_session_ticket_ext( mbedtls_ssl_context *ssl, /* Remember the client asked us to send a new ticket */ ssl->handshake->new_session_ticket = 1; - MBEDTLS_SSL_DEBUG_MSG( 3, ( "ticket length: %d", len ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "ticket length: %" MBEDTLS_PRINTF_SIZET, len ) ); if( len == 0 ) return( 0 ); @@ -667,6 +778,126 @@ static int ssl_parse_alpn_ext( mbedtls_ssl_context *ssl, } #endif /* MBEDTLS_SSL_ALPN */ +#if defined(MBEDTLS_SSL_DTLS_SRTP) +static int ssl_parse_use_srtp_ext( mbedtls_ssl_context *ssl, + const unsigned char *buf, + size_t len ) +{ + mbedtls_ssl_srtp_profile client_protection = MBEDTLS_TLS_SRTP_UNSET; + size_t i,j; + size_t profile_length; + uint16_t mki_length; + /*! 2 bytes for profile length and 1 byte for mki len */ + const size_t size_of_lengths = 3; + + /* If use_srtp is not configured, just ignore the extension */ + if( ( ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM ) || + ( ssl->conf->dtls_srtp_profile_list == NULL ) || + ( ssl->conf->dtls_srtp_profile_list_len == 0 ) ) + { + return( 0 ); + } + + /* RFC5764 section 4.1.1 + * uint8 SRTPProtectionProfile[2]; + * + * struct { + * SRTPProtectionProfiles SRTPProtectionProfiles; + * opaque srtp_mki<0..255>; + * } UseSRTPData; + + * SRTPProtectionProfile SRTPProtectionProfiles<2..2^16-1>; + */ + + /* + * Min length is 5: at least one protection profile(2 bytes) + * and length(2 bytes) + srtp_mki length(1 byte) + * Check here that we have at least 2 bytes of protection profiles length + * and one of srtp_mki length + */ + if( len < size_of_lengths ) + { + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); + } + + ssl->dtls_srtp_info.chosen_dtls_srtp_profile = MBEDTLS_TLS_SRTP_UNSET; + + /* first 2 bytes are protection profile length(in bytes) */ + profile_length = ( buf[0] << 8 ) | buf[1]; + buf += 2; + + /* The profile length cannot be bigger than input buffer size - lengths fields */ + if( profile_length > len - size_of_lengths || + profile_length % 2 != 0 ) /* profiles are 2 bytes long, so the length must be even */ + { + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); + } + /* + * parse the extension list values are defined in + * http://www.iana.org/assignments/srtp-protection/srtp-protection.xhtml + */ + for( j = 0; j < profile_length; j += 2 ) + { + uint16_t protection_profile_value = buf[j] << 8 | buf[j + 1]; + client_protection = mbedtls_ssl_check_srtp_profile_value( protection_profile_value ); + + if( client_protection != MBEDTLS_TLS_SRTP_UNSET ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "found srtp profile: %s", + mbedtls_ssl_get_srtp_profile_as_string( + client_protection ) ) ); + } + else + { + continue; + } + /* check if suggested profile is in our list */ + for( i = 0; i < ssl->conf->dtls_srtp_profile_list_len; i++) + { + if( client_protection == ssl->conf->dtls_srtp_profile_list[i] ) + { + ssl->dtls_srtp_info.chosen_dtls_srtp_profile = ssl->conf->dtls_srtp_profile_list[i]; + MBEDTLS_SSL_DEBUG_MSG( 3, ( "selected srtp profile: %s", + mbedtls_ssl_get_srtp_profile_as_string( + client_protection ) ) ); + break; + } + } + if( ssl->dtls_srtp_info.chosen_dtls_srtp_profile != MBEDTLS_TLS_SRTP_UNSET ) + break; + } + buf += profile_length; /* buf points to the mki length */ + mki_length = *buf; + buf++; + + if( mki_length > MBEDTLS_TLS_SRTP_MAX_MKI_LENGTH || + mki_length + profile_length + size_of_lengths != len ) + { + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ); + return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); + } + + /* Parse the mki only if present and mki is supported locally */ + if( ssl->conf->dtls_srtp_mki_support == MBEDTLS_SSL_DTLS_SRTP_MKI_SUPPORTED && + mki_length > 0 ) + { + ssl->dtls_srtp_info.mki_len = mki_length; + + memcpy( ssl->dtls_srtp_info.mki_value, buf, mki_length ); + + MBEDTLS_SSL_DEBUG_BUF( 3, "using mki", ssl->dtls_srtp_info.mki_value, + ssl->dtls_srtp_info.mki_len ); + } + + return( 0 ); +} +#endif /* MBEDTLS_SSL_DTLS_SRTP */ + /* * Auxiliary functions for ServerHello parsing and related actions */ @@ -725,6 +956,7 @@ static int ssl_pick_cert( mbedtls_ssl_context *ssl, for( cur = list; cur != NULL; cur = cur->next ) { + flags = 0; MBEDTLS_SSL_DEBUG_CRT( 3, "candidate certificate chain, certificate", cur->cert ); @@ -806,7 +1038,7 @@ static int ssl_ciphersuite_match( mbedtls_ssl_context *ssl, int suite_id, const mbedtls_ssl_ciphersuite_t *suite_info; #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) mbedtls_pk_type_t sig_type; #endif @@ -817,7 +1049,8 @@ static int ssl_ciphersuite_match( mbedtls_ssl_context *ssl, int suite_id, return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } - MBEDTLS_SSL_DEBUG_MSG( 3, ( "trying ciphersuite: %s", suite_info->name ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "trying ciphersuite: %#04x (%s)", + (unsigned int) suite_id, suite_info->name ) ); if( suite_info->min_minor_ver > ssl->minor_ver || suite_info->max_minor_ver < ssl->minor_ver ) @@ -863,13 +1096,11 @@ static int ssl_ciphersuite_match( mbedtls_ssl_context *ssl, int suite_id, } #endif -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) /* If the ciphersuite requires a pre-shared key and we don't * have one, skip it now rather than failing later */ if( mbedtls_ssl_ciphersuite_uses_psk( suite_info ) && - ssl->conf->f_psk == NULL && - ( ssl->conf->psk == NULL || ssl->conf->psk_identity == NULL || - ssl->conf->psk_identity_len == 0 || ssl->conf->psk_len == 0 ) ) + ssl_conf_has_psk_or_cb( ssl->conf ) == 0 ) { MBEDTLS_SSL_DEBUG_MSG( 3, ( "ciphersuite mismatch: no pre-shared key" ) ); return( 0 ); @@ -877,7 +1108,7 @@ static int ssl_ciphersuite_match( mbedtls_ssl_context *ssl, int suite_id, #endif #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) /* If the ciphersuite requires signing, check whether * a suitable hash algorithm is present. */ if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) @@ -887,13 +1118,13 @@ static int ssl_ciphersuite_match( mbedtls_ssl_context *ssl, int suite_id, mbedtls_ssl_sig_hash_set_find( &ssl->handshake->hash_algs, sig_type ) == MBEDTLS_MD_NONE ) { MBEDTLS_SSL_DEBUG_MSG( 3, ( "ciphersuite mismatch: no suitable hash algorithm " - "for signature algorithm %d", sig_type ) ); + "for signature algorithm %u", (unsigned) sig_type ) ); return( 0 ); } } #endif /* MBEDTLS_SSL_PROTO_TLS1_2 && - MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ + MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ #if defined(MBEDTLS_X509_CRT_PARSE_C) /* @@ -1018,7 +1249,7 @@ static int ssl_parse_client_hello_v2( mbedtls_ssl_context *ssl ) sess_len = ( buf[2] << 8 ) | buf[3]; chal_len = ( buf[4] << 8 ) | buf[5]; - MBEDTLS_SSL_DEBUG_MSG( 3, ( "ciph_len: %d, sess_len: %d, chal_len: %d", + MBEDTLS_SSL_DEBUG_MSG( 3, ( "ciph_len: %u, sess_len: %u, chal_len: %u", ciph_len, sess_len, chal_len ) ); /* @@ -1093,8 +1324,7 @@ static int ssl_parse_client_hello_v2( mbedtls_ssl_context *ssl ) for( i = 0, p = buf + 6; i < ciph_len; i += 3, p += 3 ) { if( p[0] == 0 && - p[1] == (unsigned char)( ( MBEDTLS_SSL_FALLBACK_SCSV_VALUE >> 8 ) & 0xff ) && - p[2] == (unsigned char)( ( MBEDTLS_SSL_FALLBACK_SCSV_VALUE ) & 0xff ) ) + MBEDTLS_GET_UINT16_BE(p, 1) != MBEDTLS_SSL_FALLBACK_SCSV_VALUE ) { MBEDTLS_SSL_DEBUG_MSG( 3, ( "received FALLBACK_SCSV" ) ); @@ -1125,8 +1355,7 @@ static int ssl_parse_client_hello_v2( mbedtls_ssl_context *ssl ) #endif { if( p[0] != 0 || - p[1] != ( ( ciphersuites[i] >> 8 ) & 0xFF ) || - p[2] != ( ( ciphersuites[i] ) & 0xFF ) ) + MBEDTLS_GET_UINT16_BE(p, 1) != ciphersuites[i] ) continue; got_common_suite = 1; @@ -1155,7 +1384,7 @@ static int ssl_parse_client_hello_v2( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "selected ciphersuite: %s", ciphersuite_info->name ) ); ssl->session_negotiate->ciphersuite = ciphersuites[i]; - ssl->transform_negotiate->ciphersuite_info = ciphersuite_info; + ssl->handshake->ciphersuite_info = ciphersuite_info; /* * SSLv2 Client Hello relevant renegotiation security checks @@ -1203,10 +1432,10 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) * we need to fall back to the default values for allowed * signature-hash pairs. */ #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) int sig_hash_alg_ext_present = 0; #endif /* MBEDTLS_SSL_PROTO_TLS1_2 && - MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ + MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse client hello" ) ); @@ -1240,7 +1469,7 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) return( ssl_parse_client_hello_v2( ssl ) ); #endif - MBEDTLS_SSL_DEBUG_BUF( 4, "record header", buf, mbedtls_ssl_hdr_len( ssl ) ); + MBEDTLS_SSL_DEBUG_BUF( 4, "record header", buf, mbedtls_ssl_in_hdr_len( ssl ) ); /* * SSLv3/TLS Client Hello @@ -1329,7 +1558,7 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) } if( ( ret = mbedtls_ssl_fetch_input( ssl, - mbedtls_ssl_hdr_len( ssl ) + msg_len ) ) != 0 ) + mbedtls_ssl_in_hdr_len( ssl ) + msg_len ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_fetch_input", ret ); return( ret ); @@ -1338,7 +1567,7 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) /* Done reading this record, get ready for the next one */ #if defined(MBEDTLS_SSL_PROTO_DTLS) if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - ssl->next_record_offset = msg_len + mbedtls_ssl_hdr_len( ssl ); + ssl->next_record_offset = msg_len + mbedtls_ssl_in_hdr_len( ssl ); else #endif ssl->in_left = 0; @@ -1400,7 +1629,7 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) if( cli_msg_seq != ssl->handshake->in_msg_seq ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client hello message_seq: " - "%d (expected %d)", cli_msg_seq, + "%u (expected %u)", cli_msg_seq, ssl->handshake->in_msg_seq ) ); return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); } @@ -1449,7 +1678,7 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) */ /* - * Minimal length (with everything empty and extensions ommitted) is + * Minimal length (with everything empty and extensions omitted) is * 2 + 32 + 1 + 2 + 1 = 38 bytes. Check that first, so that we can * read at least up to session id length without worrying. */ @@ -1658,8 +1887,7 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) ext_len = ( buf[ext_offset + 0] << 8 ) | ( buf[ext_offset + 1] ); - if( ( ext_len > 0 && ext_len < 4 ) || - msg_len != ext_offset + 2 + ext_len ) + if( msg_len != ext_offset + 2 + ext_len ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client hello message" ) ); mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, @@ -1719,7 +1947,7 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) break; #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) case MBEDTLS_TLS_EXT_SIG_ALG: MBEDTLS_SSL_DEBUG_MSG( 3, ( "found signature_algorithms extension" ) ); @@ -1730,7 +1958,7 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) sig_hash_alg_ext_present = 1; break; #endif /* MBEDTLS_SSL_PROTO_TLS1_2 && - MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ + MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) @@ -1783,6 +2011,16 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) break; #endif /* MBEDTLS_SSL_TRUNCATED_HMAC */ +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + case MBEDTLS_TLS_EXT_CID: + MBEDTLS_SSL_DEBUG_MSG( 3, ( "found CID extension" ) ); + + ret = ssl_parse_cid_ext( ssl, ext + 4, ext_size ); + if( ret != 0 ) + return( ret ); + break; +#endif /* MBEDTLS_SSL_TRUNCATED_HMAC */ + #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) case MBEDTLS_TLS_EXT_ENCRYPT_THEN_MAC: MBEDTLS_SSL_DEBUG_MSG( 3, ( "found encrypt then mac extension" ) ); @@ -1823,21 +2061,23 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) break; #endif /* MBEDTLS_SSL_SESSION_TICKETS */ +#if defined(MBEDTLS_SSL_DTLS_SRTP) + case MBEDTLS_TLS_EXT_USE_SRTP: + MBEDTLS_SSL_DEBUG_MSG( 3, ( "found use_srtp extension" ) ); + + ret = ssl_parse_use_srtp_ext( ssl, ext + 4, ext_size ); + if( ret != 0 ) + return( ret ); + break; +#endif /* MBEDTLS_SSL_DTLS_SRTP */ + default: - MBEDTLS_SSL_DEBUG_MSG( 3, ( "unknown extension found: %d (ignoring)", + MBEDTLS_SSL_DEBUG_MSG( 3, ( "unknown extension found: %u (ignoring)", ext_id ) ); } ext_len -= 4 + ext_size; ext += 4 + ext_size; - - if( ext_len > 0 && ext_len < 4 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client hello message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); - return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); - } } #if defined(MBEDTLS_SSL_PROTO_SSL3) } @@ -1846,8 +2086,7 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_SSL_FALLBACK_SCSV) for( i = 0, p = buf + ciph_offset + 2; i < ciph_len; i += 2, p += 2 ) { - if( p[0] == (unsigned char)( ( MBEDTLS_SSL_FALLBACK_SCSV_VALUE >> 8 ) & 0xff ) && - p[1] == (unsigned char)( ( MBEDTLS_SSL_FALLBACK_SCSV_VALUE ) & 0xff ) ) + if( MBEDTLS_GET_UINT16_BE( p, 0 ) == MBEDTLS_SSL_FALLBACK_SCSV_VALUE ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "received FALLBACK_SCSV" ) ); @@ -1867,7 +2106,7 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_SSL_FALLBACK_SCSV */ #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) /* * Try to fall back to default hash SHA1 if the client @@ -1884,7 +2123,7 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) } #endif /* MBEDTLS_SSL_PROTO_TLS1_2 && - MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ + MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ /* * Check for TLS_EMPTY_RENEGOTIATION_INFO_SCSV @@ -1965,8 +2204,7 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) for( j = 0, p = buf + ciph_offset + 2; j < ciph_len; j += 2, p += 2 ) #endif { - if( p[0] != ( ( ciphersuites[i] >> 8 ) & 0xFF ) || - p[1] != ( ( ciphersuites[i] ) & 0xFF ) ) + if( MBEDTLS_GET_UINT16_BE(p, 0) != ciphersuites[i] ) continue; got_common_suite = 1; @@ -1999,7 +2237,7 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "selected ciphersuite: %s", ciphersuite_info->name ) ); ssl->session_negotiate->ciphersuite = ciphersuites[i]; - ssl->transform_negotiate->ciphersuite_info = ciphersuite_info; + ssl->handshake->ciphersuite_info = ciphersuite_info; ssl->state++; @@ -2011,7 +2249,7 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) /* Debugging-only output for testsuite */ #if defined(MBEDTLS_DEBUG_C) && \ defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) { mbedtls_pk_type_t sig_alg = mbedtls_ssl_get_ciphersuite_sig_alg( ciphersuite_info ); @@ -2025,7 +2263,7 @@ static int ssl_parse_client_hello( mbedtls_ssl_context *ssl ) else { MBEDTLS_SSL_DEBUG_MSG( 3, ( "no hash algorithm for signature algorithm " - "%d - should not happen", sig_alg ) ); + "%u - should not happen", (unsigned) sig_alg ) ); } } #endif @@ -2050,8 +2288,8 @@ static void ssl_write_truncated_hmac_ext( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, adding truncated hmac extension" ) ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_TRUNCATED_HMAC >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_TRUNCATED_HMAC ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_TRUNCATED_HMAC, p, 0 ); + p += 2; *p++ = 0x00; *p++ = 0x00; @@ -2060,6 +2298,53 @@ static void ssl_write_truncated_hmac_ext( mbedtls_ssl_context *ssl, } #endif /* MBEDTLS_SSL_TRUNCATED_HMAC */ +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) +static void ssl_write_cid_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + size_t *olen ) +{ + unsigned char *p = buf; + size_t ext_len; + const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; + + *olen = 0; + + /* Skip writing the extension if we don't want to use it or if + * the client hasn't offered it. */ + if( ssl->handshake->cid_in_use == MBEDTLS_SSL_CID_DISABLED ) + return; + + /* ssl->own_cid_len is at most MBEDTLS_SSL_CID_IN_LEN_MAX + * which is at most 255, so the increment cannot overflow. */ + if( end < p || (size_t)( end - p ) < (unsigned)( ssl->own_cid_len + 5 ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small" ) ); + return; + } + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, adding CID extension" ) ); + + /* + * Quoting draft-ietf-tls-dtls-connection-id-05 + * https://tools.ietf.org/html/draft-ietf-tls-dtls-connection-id-05 + * + * struct { + * opaque cid<0..2^8-1>; + * } ConnectionId; + */ + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_CID, p, 0 ); + p += 2; + ext_len = (size_t) ssl->own_cid_len + 1; + MBEDTLS_PUT_UINT16_BE( ext_len, p, 0 ); + p += 2; + + *p++ = (uint8_t) ssl->own_cid_len; + memcpy( p, ssl->own_cid, ssl->own_cid_len ); + + *olen = ssl->own_cid_len + 5; +} +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) static void ssl_write_encrypt_then_mac_ext( mbedtls_ssl_context *ssl, unsigned char *buf, @@ -2093,8 +2378,8 @@ static void ssl_write_encrypt_then_mac_ext( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, adding encrypt then mac extension" ) ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_ENCRYPT_THEN_MAC >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_ENCRYPT_THEN_MAC ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_ENCRYPT_THEN_MAC, p, 0 ); + p += 2; *p++ = 0x00; *p++ = 0x00; @@ -2120,8 +2405,8 @@ static void ssl_write_extended_ms_ext( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, adding extended master secret " "extension" ) ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_EXTENDED_MASTER_SECRET >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_EXTENDED_MASTER_SECRET ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_EXTENDED_MASTER_SECRET, p, 0 ); + p += 2; *p++ = 0x00; *p++ = 0x00; @@ -2145,8 +2430,8 @@ static void ssl_write_session_ticket_ext( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, adding session ticket extension" ) ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_SESSION_TICKET >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_SESSION_TICKET ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_SESSION_TICKET, p, 0 ); + p += 2; *p++ = 0x00; *p++ = 0x00; @@ -2169,8 +2454,8 @@ static void ssl_write_renegotiation_ext( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, secure renegotiation extension" ) ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_RENEGOTIATION_INFO >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_RENEGOTIATION_INFO ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_RENEGOTIATION_INFO, p, 0 ); + p += 2; #if defined(MBEDTLS_SSL_RENEGOTIATION) if( ssl->renego_status != MBEDTLS_SSL_INITIAL_HANDSHAKE ) @@ -2210,8 +2495,8 @@ static void ssl_write_max_fragment_length_ext( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, max_fragment_length extension" ) ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_MAX_FRAGMENT_LENGTH >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_MAX_FRAGMENT_LENGTH ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_MAX_FRAGMENT_LENGTH, p, 0 ); + p += 2; *p++ = 0x00; *p++ = 1; @@ -2240,8 +2525,8 @@ static void ssl_write_supported_point_formats_ext( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, supported_point_formats extension" ) ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_SUPPORTED_POINT_FORMATS >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_SUPPORTED_POINT_FORMATS ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_SUPPORTED_POINT_FORMATS, p, 0 ); + p += 2; *p++ = 0x00; *p++ = 2; @@ -2258,7 +2543,7 @@ static void ssl_write_ecjpake_kkpp_ext( mbedtls_ssl_context *ssl, unsigned char *buf, size_t *olen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *p = buf; const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; size_t kkpp_len; @@ -2266,7 +2551,7 @@ static void ssl_write_ecjpake_kkpp_ext( mbedtls_ssl_context *ssl, *olen = 0; /* Skip costly computation if not needed */ - if( ssl->transform_negotiate->ciphersuite_info->key_exchange != + if( ssl->handshake->ciphersuite_info->key_exchange != MBEDTLS_KEY_EXCHANGE_ECJPAKE ) return; @@ -2278,8 +2563,8 @@ static void ssl_write_ecjpake_kkpp_ext( mbedtls_ssl_context *ssl, return; } - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_ECJPAKE_KKPP >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( MBEDTLS_TLS_EXT_ECJPAKE_KKPP ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_ECJPAKE_KKPP, p, 0 ); + p += 2; ret = mbedtls_ecjpake_write_round_one( &ssl->handshake->ecjpake_ctx, p + 2, end - p - 2, &kkpp_len, @@ -2290,8 +2575,8 @@ static void ssl_write_ecjpake_kkpp_ext( mbedtls_ssl_context *ssl, return; } - *p++ = (unsigned char)( ( kkpp_len >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( kkpp_len ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( kkpp_len, p, 0 ); + p += 2; *olen = kkpp_len + 4; } @@ -2316,27 +2601,93 @@ static void ssl_write_alpn_ext( mbedtls_ssl_context *ssl, * 6 . 6 protocol name length * 7 . 7+n protocol name */ - buf[0] = (unsigned char)( ( MBEDTLS_TLS_EXT_ALPN >> 8 ) & 0xFF ); - buf[1] = (unsigned char)( ( MBEDTLS_TLS_EXT_ALPN ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_ALPN, buf, 0); *olen = 7 + strlen( ssl->alpn_chosen ); - buf[2] = (unsigned char)( ( ( *olen - 4 ) >> 8 ) & 0xFF ); - buf[3] = (unsigned char)( ( ( *olen - 4 ) ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( *olen - 4, buf, 2 ); - buf[4] = (unsigned char)( ( ( *olen - 6 ) >> 8 ) & 0xFF ); - buf[5] = (unsigned char)( ( ( *olen - 6 ) ) & 0xFF ); + MBEDTLS_PUT_UINT16_BE( *olen - 6, buf, 4 ); - buf[6] = (unsigned char)( ( ( *olen - 7 ) ) & 0xFF ); + buf[6] = MBEDTLS_BYTE_0( *olen - 7 ); memcpy( buf + 7, ssl->alpn_chosen, *olen - 7 ); } #endif /* MBEDTLS_ECDH_C || MBEDTLS_ECDSA_C */ +#if defined(MBEDTLS_SSL_DTLS_SRTP ) && defined(MBEDTLS_SSL_PROTO_DTLS) +static void ssl_write_use_srtp_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + size_t *olen ) +{ + size_t mki_len = 0, ext_len = 0; + uint16_t profile_value = 0; + const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; + + *olen = 0; + + if( ( ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM ) || + ( ssl->dtls_srtp_info.chosen_dtls_srtp_profile == MBEDTLS_TLS_SRTP_UNSET ) ) + { + return; + } + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, adding use_srtp extension" ) ); + + if( ssl->conf->dtls_srtp_mki_support == MBEDTLS_SSL_DTLS_SRTP_MKI_SUPPORTED ) + { + mki_len = ssl->dtls_srtp_info.mki_len; + } + + /* The extension total size is 9 bytes : + * - 2 bytes for the extension tag + * - 2 bytes for the total size + * - 2 bytes for the protection profile length + * - 2 bytes for the protection profile + * - 1 byte for the mki length + * + the actual mki length + * Check we have enough room in the output buffer */ + if( (size_t)( end - buf ) < mki_len + 9 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small" ) ); + return; + } + + /* extension */ + MBEDTLS_PUT_UINT16_BE(MBEDTLS_TLS_EXT_USE_SRTP, buf, 0 ); + /* + * total length 5 and mki value: only one profile(2 bytes) + * and length(2 bytes) and srtp_mki ) + */ + ext_len = 5 + mki_len; + MBEDTLS_PUT_UINT16_BE( ext_len, buf, 2 ); + + /* protection profile length: 2 */ + buf[4] = 0x00; + buf[5] = 0x02; + profile_value = mbedtls_ssl_check_srtp_profile_value( + ssl->dtls_srtp_info.chosen_dtls_srtp_profile ); + if( profile_value != MBEDTLS_TLS_SRTP_UNSET ) + { + MBEDTLS_PUT_UINT16_BE( profile_value, buf, 6 ); + } + else + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "use_srtp extension invalid profile" ) ); + return; + } + + buf[8] = mki_len & 0xFF; + memcpy( &buf[9], ssl->dtls_srtp_info.mki_value, mki_len ); + + *olen = 9 + mki_len; +} +#endif /* MBEDTLS_SSL_DTLS_SRTP */ + #if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) static int ssl_write_hello_verify_request( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *p = ssl->out_msg + 4; unsigned char *cookie_len_byte; @@ -2405,12 +2756,61 @@ static int ssl_write_hello_verify_request( mbedtls_ssl_context *ssl ) } #endif /* MBEDTLS_SSL_DTLS_HELLO_VERIFY */ +static void ssl_handle_id_based_session_resumption( mbedtls_ssl_context *ssl ) +{ + int ret; + mbedtls_ssl_session session_tmp; + mbedtls_ssl_session * const session = ssl->session_negotiate; + + /* Resume is 0 by default, see ssl_handshake_init(). + * It may be already set to 1 by ssl_parse_session_ticket_ext(). */ + if( ssl->handshake->resume == 1 ) + return; + if( session->id_len == 0 ) + return; + if( ssl->conf->f_get_cache == NULL ) + return; +#if defined(MBEDTLS_SSL_RENEGOTIATION) + if( ssl->renego_status != MBEDTLS_SSL_INITIAL_HANDSHAKE ) + return; +#endif + + mbedtls_ssl_session_init( &session_tmp ); + + session_tmp.id_len = session->id_len; + memcpy( session_tmp.id, session->id, session->id_len ); + + ret = ssl->conf->f_get_cache( ssl->conf->p_cache, + &session_tmp ); + if( ret != 0 ) + goto exit; + + if( session->ciphersuite != session_tmp.ciphersuite || + session->compression != session_tmp.compression ) + { + /* Mismatch between cached and negotiated session */ + goto exit; + } + + /* Move semantics */ + mbedtls_ssl_session_free( session ); + *session = session_tmp; + memset( &session_tmp, 0, sizeof( session_tmp ) ); + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "session successfully restored from cache" ) ); + ssl->handshake->resume = 1; + +exit: + + mbedtls_ssl_session_free( &session_tmp ); +} + static int ssl_write_server_hello( mbedtls_ssl_context *ssl ) { #if defined(MBEDTLS_HAVE_TIME) mbedtls_time_t t; #endif - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t olen, ext_len = 0, n; unsigned char *buf, *p; @@ -2452,12 +2852,11 @@ static int ssl_write_server_hello( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_HAVE_TIME) t = mbedtls_time( NULL ); - *p++ = (unsigned char)( t >> 24 ); - *p++ = (unsigned char)( t >> 16 ); - *p++ = (unsigned char)( t >> 8 ); - *p++ = (unsigned char)( t ); + MBEDTLS_PUT_UINT32_BE( t, p, 0 ); + p += 4; - MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, current time: %lu", t ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, current time: %" MBEDTLS_PRINTF_LONGLONG, + (long long) t ) ); #else if( ( ret = ssl->conf->f_rng( ssl->conf->p_rng, p, 4 ) ) != 0 ) return( ret ); @@ -2474,22 +2873,7 @@ static int ssl_write_server_hello( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_BUF( 3, "server hello, random bytes", buf + 6, 32 ); - /* - * Resume is 0 by default, see ssl_handshake_init(). - * It may be already set to 1 by ssl_parse_session_ticket_ext(). - * If not, try looking up session ID in our cache. - */ - if( ssl->handshake->resume == 0 && -#if defined(MBEDTLS_SSL_RENEGOTIATION) - ssl->renego_status == MBEDTLS_SSL_INITIAL_HANDSHAKE && -#endif - ssl->session_negotiate->id_len != 0 && - ssl->conf->f_get_cache != NULL && - ssl->conf->f_get_cache( ssl->conf->p_cache, ssl->session_negotiate ) == 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 3, ( "session successfully restored from cache" ) ); - ssl->handshake->resume = 1; - } + ssl_handle_id_based_session_resumption( ssl ); if( ssl->handshake->resume == 0 ) { @@ -2545,19 +2929,19 @@ static int ssl_write_server_hello( mbedtls_ssl_context *ssl ) memcpy( p, ssl->session_negotiate->id, ssl->session_negotiate->id_len ); p += ssl->session_negotiate->id_len; - MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, session id len.: %d", n ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, session id len.: %" MBEDTLS_PRINTF_SIZET, n ) ); MBEDTLS_SSL_DEBUG_BUF( 3, "server hello, session id", buf + 39, n ); MBEDTLS_SSL_DEBUG_MSG( 3, ( "%s session has been resumed", ssl->handshake->resume ? "a" : "no" ) ); - *p++ = (unsigned char)( ssl->session_negotiate->ciphersuite >> 8 ); - *p++ = (unsigned char)( ssl->session_negotiate->ciphersuite ); - *p++ = (unsigned char)( ssl->session_negotiate->compression ); + MBEDTLS_PUT_UINT16_BE( ssl->session_negotiate->ciphersuite, p, 0 ); + p += 2; + *p++ = MBEDTLS_BYTE_0( ssl->session_negotiate->compression ); MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, chosen ciphersuite: %s", mbedtls_ssl_get_ciphersuite_name( ssl->session_negotiate->ciphersuite ) ) ); MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, compress alg.: 0x%02X", - ssl->session_negotiate->compression ) ); + (unsigned int) ssl->session_negotiate->compression ) ); /* Do not write the extensions if the protocol is SSLv3 */ #if defined(MBEDTLS_SSL_PROTO_SSL3) @@ -2581,6 +2965,11 @@ static int ssl_write_server_hello( mbedtls_ssl_context *ssl ) ext_len += olen; #endif +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + ssl_write_cid_ext( ssl, p + 2 + ext_len, &olen ); + ext_len += olen; +#endif + #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) ssl_write_encrypt_then_mac_ext( ssl, p + 2 + ext_len, &olen ); ext_len += olen; @@ -2616,13 +3005,18 @@ static int ssl_write_server_hello( mbedtls_ssl_context *ssl ) ext_len += olen; #endif - MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, total extension length: %d", ext_len ) ); +#if defined(MBEDTLS_SSL_DTLS_SRTP) + ssl_write_use_srtp_ext( ssl, p + 2 + ext_len, &olen ); + ext_len += olen; +#endif + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, total extension length: %" MBEDTLS_PRINTF_SIZET, + ext_len ) ); if( ext_len > 0 ) { - *p++ = (unsigned char)( ( ext_len >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( ext_len ) & 0xFF ); - p += ext_len; + MBEDTLS_PUT_UINT16_BE( ext_len, p, 0 ); + p += 2 + ext_len; } #if defined(MBEDTLS_SSL_PROTO_SSL3) @@ -2640,24 +3034,15 @@ static int ssl_write_server_hello( mbedtls_ssl_context *ssl ) return( ret ); } -#if !defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)&& \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) +#if !defined(MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED) static int ssl_write_certificate_request( mbedtls_ssl_context *ssl ) { const mbedtls_ssl_ciphersuite_t *ciphersuite_info = - ssl->transform_negotiate->ciphersuite_info; + ssl->handshake->ciphersuite_info; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write certificate request" ) ); - if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_DHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE ) + if( !mbedtls_ssl_ciphersuite_cert_req_allowed( ciphersuite_info ) ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip write certificate request" ) ); ssl->state++; @@ -2667,13 +3052,13 @@ static int ssl_write_certificate_request( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } -#else +#else /* !MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED */ static int ssl_write_certificate_request( mbedtls_ssl_context *ssl ) { int ret = MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE; const mbedtls_ssl_ciphersuite_t *ciphersuite_info = - ssl->transform_negotiate->ciphersuite_info; - size_t dn_size, total_dn_size; /* excluding length bytes */ + ssl->handshake->ciphersuite_info; + uint16_t dn_size, total_dn_size; /* excluding length bytes */ size_t ct_len, sa_len; /* including length bytes */ unsigned char *buf, *p; const unsigned char * const end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; @@ -2691,11 +3076,7 @@ static int ssl_write_certificate_request( mbedtls_ssl_context *ssl ) #endif authmode = ssl->conf->authmode; - if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_DHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE || + if( !mbedtls_ssl_ciphersuite_cert_req_allowed( ciphersuite_info ) || authmode == MBEDTLS_SSL_VERIFY_NONE ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip write certificate request" ) ); @@ -2774,8 +3155,7 @@ static int ssl_write_certificate_request( mbedtls_ssl_context *ssl ) #endif } - p[0] = (unsigned char)( sa_len >> 8 ); - p[1] = (unsigned char)( sa_len ); + MBEDTLS_PUT_UINT16_BE( sa_len, p, 0 ); sa_len += 2; p += sa_len; } @@ -2791,6 +3171,11 @@ static int ssl_write_certificate_request( mbedtls_ssl_context *ssl ) if( ssl->conf->cert_req_ca_list == MBEDTLS_SSL_CERT_REQ_CA_LIST_ENABLED ) { + /* NOTE: If trusted certificates are provisioned + * via a CA callback (configured through + * `mbedtls_ssl_conf_ca_cb()`, then the + * CertificateRequest is currently left empty. */ + #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) if( ssl->handshake->sni_ca_chain != NULL ) crt = ssl->handshake->sni_ca_chain; @@ -2800,18 +3185,18 @@ static int ssl_write_certificate_request( mbedtls_ssl_context *ssl ) while( crt != NULL && crt->version != 0 ) { - dn_size = crt->subject_raw.len; + /* It follows from RFC 5280 A.1 that this length + * can be represented in at most 11 bits. */ + dn_size = (uint16_t) crt->subject_raw.len; - if( end < p || - (size_t)( end - p ) < dn_size || - (size_t)( end - p ) < 2 + dn_size ) + if( end < p || (size_t)( end - p ) < 2 + (size_t) dn_size ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "skipping CAs: buffer too short" ) ); break; } - *p++ = (unsigned char)( dn_size >> 8 ); - *p++ = (unsigned char)( dn_size ); + MBEDTLS_PUT_UINT16_BE( dn_size, p, 0 ); + p += 2; memcpy( p, crt->subject_raw.p, dn_size ); p += dn_size; @@ -2825,8 +3210,7 @@ static int ssl_write_certificate_request( mbedtls_ssl_context *ssl ) ssl->out_msglen = p - buf; ssl->out_msgtype = MBEDTLS_SSL_MSG_HANDSHAKE; ssl->out_msg[0] = MBEDTLS_SSL_HS_CERTIFICATE_REQUEST; - ssl->out_msg[4 + ct_len + sa_len] = (unsigned char)( total_dn_size >> 8 ); - ssl->out_msg[5 + ct_len + sa_len] = (unsigned char)( total_dn_size ); + MBEDTLS_PUT_UINT16_BE( total_dn_size, ssl->out_msg, 4 + ct_len + sa_len ); ret = mbedtls_ssl_write_handshake_msg( ssl ); @@ -2834,18 +3218,13 @@ static int ssl_write_certificate_request( mbedtls_ssl_context *ssl ) return( ret ); } -#endif /* !MBEDTLS_KEY_EXCHANGE_RSA_ENABLED && - !MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED && - !MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED && - !MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED && - !MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED && - !MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED */ #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) static int ssl_get_ecdh_params_from_cert( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ! mbedtls_pk_can_do( mbedtls_ssl_own_key( ssl ), MBEDTLS_PK_ECKEY ) ) { @@ -2866,7 +3245,7 @@ static int ssl_get_ecdh_params_from_cert( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */ -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && \ +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED) && \ defined(MBEDTLS_SSL_ASYNC_PRIVATE) static int ssl_resume_server_key_exchange( mbedtls_ssl_context *ssl, size_t *signature_len ) @@ -2889,7 +3268,7 @@ static int ssl_resume_server_key_exchange( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_RET( 2, "ssl_resume_server_key_exchange", ret ); return( ret ); } -#endif /* defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && +#endif /* defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED) && defined(MBEDTLS_SSL_ASYNC_PRIVATE) */ /* Prepare the ServerKeyExchange message, up to and including @@ -2899,17 +3278,18 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, size_t *signature_len ) { const mbedtls_ssl_ciphersuite_t *ciphersuite_info = - ssl->transform_negotiate->ciphersuite_info; -#if defined(MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED) -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) + ssl->handshake->ciphersuite_info; + +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED) unsigned char *dig_signed = NULL; -#endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ -#endif /* MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED */ (void) ciphersuite_info; /* unused in some configurations */ -#if !defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) +#if !defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED) (void) signature_len; -#endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED */ ssl->out_msglen = 4; /* header (type:1, length:3) to be written later */ @@ -2925,7 +3305,7 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; ret = mbedtls_ecjpake_write_round_two( @@ -2962,10 +3342,10 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, /* * - DHE key exchanges */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__DHE_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED) if( mbedtls_ssl_ciphersuite_uses_dhe( ciphersuite_info ) ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; if( ssl->conf->dhm_P.p == NULL || ssl->conf->dhm_G.p == NULL ) @@ -3001,7 +3381,7 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, return( ret ); } -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED) dig_signed = ssl->out_msg + ssl->out_msglen; #endif @@ -3012,12 +3392,12 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_MPI( 3, "DHM: G ", &ssl->handshake->dhm_ctx.G ); MBEDTLS_SSL_DEBUG_MPI( 3, "DHM: GX", &ssl->handshake->dhm_ctx.GX ); } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__DHE_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED */ /* * - ECDHE key exchanges */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED) if( mbedtls_ssl_ciphersuite_uses_ecdhe( ciphersuite_info ) ) { /* @@ -3030,7 +3410,7 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, */ const mbedtls_ecp_curve_info **curve = NULL; const mbedtls_ecp_group_id *gid; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; /* Match our preference list against the offered curves */ @@ -3065,7 +3445,7 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, return( ret ); } -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED) dig_signed = ssl->out_msg + ssl->out_msglen; #endif @@ -3074,7 +3454,7 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_ECDH( 3, &ssl->handshake->ecdh_ctx, MBEDTLS_DEBUG_ECDH_Q ); } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED */ /* * @@ -3082,13 +3462,17 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, * exchange parameters, compute and add the signature here. * */ -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED) if( mbedtls_ssl_ciphersuite_uses_server_signature( ciphersuite_info ) ) { size_t dig_signed_len = ssl->out_msg + ssl->out_msglen - dig_signed; size_t hashlen = 0; +#if defined(MBEDTLS_USE_PSA_CRYPTO) + unsigned char hash[PSA_HASH_MAX_SIZE]; +#else unsigned char hash[MBEDTLS_MD_MAX_SIZE]; - int ret; +#endif + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; /* * 2.1: Choose hash algorithm: @@ -3135,7 +3519,7 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, md_alg = MBEDTLS_MD_NONE; } - MBEDTLS_SSL_DEBUG_MSG( 3, ( "pick hash algorithm %d for signing", md_alg ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "pick hash algorithm %u for signing", (unsigned) md_alg ) ); /* * 2.2: Compute the hash to be signed @@ -3250,7 +3634,7 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, return( ret ); } } -#endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED */ return( 0 ); } @@ -3261,28 +3645,28 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, * machine. */ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t signature_len = 0; -#if defined(MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED) const mbedtls_ssl_ciphersuite_t *ciphersuite_info = - ssl->transform_negotiate->ciphersuite_info; -#endif /* MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED */ + ssl->handshake->ciphersuite_info; +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED */ MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write server key exchange" ) ); -#if defined(MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED) /* Extract static ECDH parameters and abort if ServerKeyExchange * is not needed. */ if( mbedtls_ssl_ciphersuite_no_pfs( ciphersuite_info ) ) { /* For suites involving ECDH, extract DH parameters * from certificate at this point. */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED) if( mbedtls_ssl_ciphersuite_uses_ecdh( ciphersuite_info ) ) { ssl_get_ecdh_params_from_cert( ssl ); } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED */ /* Key exchanges not involving ephemeral keys don't use * ServerKeyExchange, so end here. */ @@ -3290,9 +3674,9 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) ssl->state++; return( 0 ); } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED */ -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && \ +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED) && \ defined(MBEDTLS_SSL_ASYNC_PRIVATE) /* If we have already prepared the message and there is an ongoing * signature operation, resume signing. */ @@ -3302,7 +3686,7 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) ret = ssl_resume_server_key_exchange( ssl, &signature_len ); } else -#endif /* defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && +#endif /* defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED) && defined(MBEDTLS_SSL_ASYNC_PRIVATE) */ { /* ServerKeyExchange is needed. Prepare the message. */ @@ -3325,11 +3709,11 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) /* If there is a signature, write its length. * ssl_prepare_server_key_exchange already wrote the signature * itself at its proper place in the output buffer. */ -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED) if( signature_len != 0 ) { - ssl->out_msg[ssl->out_msglen++] = (unsigned char)( signature_len >> 8 ); - ssl->out_msg[ssl->out_msglen++] = (unsigned char)( signature_len ); + ssl->out_msg[ssl->out_msglen++] = MBEDTLS_BYTE_1( signature_len ); + ssl->out_msg[ssl->out_msglen++] = MBEDTLS_BYTE_0( signature_len ); MBEDTLS_SSL_DEBUG_BUF( 3, "my signature", ssl->out_msg + ssl->out_msglen, @@ -3338,7 +3722,7 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) /* Skip over the already-written signature */ ssl->out_msglen += signature_len; } -#endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED */ /* Add header and send. */ ssl->out_msgtype = MBEDTLS_SSL_MSG_HANDSHAKE; @@ -3358,7 +3742,7 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) static int ssl_write_server_hello_done( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write server hello done" ) ); @@ -3462,7 +3846,7 @@ static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, size_t *peer_pmslen, size_t peer_pmssize ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_pk_context *private_key = mbedtls_ssl_own_key( ssl ); mbedtls_pk_context *public_key = &mbedtls_ssl_own_cert( ssl )->pk; size_t len = mbedtls_pk_get_len( public_key ); @@ -3485,12 +3869,13 @@ static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, defined(MBEDTLS_SSL_PROTO_TLS1_2) if( ssl->minor_ver != MBEDTLS_SSL_MINOR_VERSION_0 ) { - if ( p + 2 > end ) { + if ( p + 2 > end ) + { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client key exchange message" ) ); return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE ); } - if( *p++ != ( ( len >> 8 ) & 0xFF ) || - *p++ != ( ( len ) & 0xFF ) ) + if( *p++ != MBEDTLS_BYTE_1( len ) || + *p++ != MBEDTLS_BYTE_0( len ) ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client key exchange message" ) ); return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE ); @@ -3551,7 +3936,7 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, const unsigned char *end, size_t pms_offset ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *pms = ssl->handshake->premaster + pms_offset; unsigned char ver[2]; unsigned char fake_pms[48], peer_pms[48]; @@ -3562,11 +3947,12 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, /* In case of a failure in decryption, the decryption may write less than * 2 bytes of output, but we always read the first two bytes. It doesn't * matter in the end because diff will be nonzero in that case due to - * peer_pmslen being less than 48, and we only care whether diff is 0. - * But do initialize peer_pms for robustness anyway. This also makes - * memory analyzers happy (don't access uninitialized memory, even - * if it's an unsigned char). */ + * ret being nonzero, and we only care whether diff is 0. + * But do initialize peer_pms and peer_pmslen for robustness anyway. This + * also makes memory analyzers happy (don't access uninitialized memory, + * even if it's an unsigned char). */ peer_pms[0] = peer_pms[1] = ~0; + peer_pmslen = 0; ret = ssl_decrypt_encrypted_pms( ssl, p, end, peer_pms, @@ -3591,16 +3977,7 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, diff |= peer_pms[1] ^ ver[1]; /* mask = diff ? 0xff : 0x00 using bit operations to avoid branches */ - /* MSVC has a warning about unary minus on unsigned, but this is - * well-defined and precisely what we want to do here */ -#if defined(_MSC_VER) -#pragma warning( push ) -#pragma warning( disable : 4146 ) -#endif - mask = - ( ( diff | - diff ) >> ( sizeof( unsigned int ) * 8 - 1 ) ); -#if defined(_MSC_VER) -#pragma warning( pop ) -#endif + mask = mbedtls_ct_uint_mask( diff ); /* * Protection against Bleichenbacher's attack: invalid PKCS#1 v1.5 padding @@ -3642,16 +4019,14 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, #endif /* MBEDTLS_KEY_EXCHANGE_RSA_ENABLED || MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) static int ssl_parse_client_psk_identity( mbedtls_ssl_context *ssl, unsigned char **p, const unsigned char *end ) { int ret = 0; - size_t n; + uint16_t n; - if( ssl->conf->f_psk == NULL && - ( ssl->conf->psk == NULL || ssl->conf->psk_identity == NULL || - ssl->conf->psk_identity_len == 0 || ssl->conf->psk_len == 0 ) ) + if( ssl_conf_has_psk_or_cb( ssl->conf ) == 0 ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "got no pre-shared key" ) ); return( MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED ); @@ -3669,7 +4044,7 @@ static int ssl_parse_client_psk_identity( mbedtls_ssl_context *ssl, unsigned cha n = ( (*p)[0] << 8 ) | (*p)[1]; *p += 2; - if( n < 1 || n > 65535 || n > (size_t) ( end - *p ) ) + if( n == 0 || n > end - *p ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client key exchange message" ) ); return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE ); @@ -3685,7 +4060,7 @@ static int ssl_parse_client_psk_identity( mbedtls_ssl_context *ssl, unsigned cha /* Identity is not a big secret since clients send it in the clear, * but treat it carefully anyway, just in case */ if( n != ssl->conf->psk_identity_len || - mbedtls_ssl_safer_memcmp( ssl->conf->psk_identity, *p, n ) != 0 ) + mbedtls_ct_memcmp( ssl->conf->psk_identity, *p, n ) != 0 ) { ret = MBEDTLS_ERR_SSL_UNKNOWN_IDENTITY; } @@ -3703,15 +4078,15 @@ static int ssl_parse_client_psk_identity( mbedtls_ssl_context *ssl, unsigned cha return( 0 ); } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ static int ssl_parse_client_key_exchange( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const mbedtls_ssl_ciphersuite_t *ciphersuite_info; unsigned char *p, *end; - ciphersuite_info = ssl->transform_negotiate->ciphersuite_info; + ciphersuite_info = ssl->handshake->ciphersuite_info; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse client key exchange" ) ); @@ -3831,6 +4206,13 @@ static int ssl_parse_client_key_exchange( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE ); } +#if defined(MBEDTLS_USE_PSA_CRYPTO) + /* For opaque PSKs, we perform the PSK-to-MS derivation atomatically + * and skip the intermediate PMS. */ + if( ssl_use_opaque_psk( ssl ) == 1 ) + MBEDTLS_SSL_DEBUG_MSG( 1, ( "skip PMS generation for opaque PSK" ) ); + else +#endif /* MBEDTLS_USE_PSA_CRYPTO */ if( ( ret = mbedtls_ssl_psk_derive_premaster( ssl, ciphersuite_info->key_exchange ) ) != 0 ) { @@ -3862,6 +4244,12 @@ static int ssl_parse_client_key_exchange( mbedtls_ssl_context *ssl ) return( ret ); } +#if defined(MBEDTLS_USE_PSA_CRYPTO) + /* Opaque PSKs are currently only supported for PSK-only. */ + if( ssl_use_opaque_psk( ssl ) == 1 ) + return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); +#endif + if( ( ret = ssl_parse_encrypted_pms( ssl, p, end, 2 ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, ( "ssl_parse_encrypted_pms" ), ret ); @@ -3891,6 +4279,12 @@ static int ssl_parse_client_key_exchange( mbedtls_ssl_context *ssl ) return( ret ); } +#if defined(MBEDTLS_USE_PSA_CRYPTO) + /* Opaque PSKs are currently only supported for PSK-only. */ + if( ssl_use_opaque_psk( ssl ) == 1 ) + return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); +#endif + if( p != end ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client key exchange" ) ); @@ -3922,6 +4316,12 @@ static int ssl_parse_client_key_exchange( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_RP ); } +#if defined(MBEDTLS_USE_PSA_CRYPTO) + /* Opaque PSKs are currently only supported for PSK-only. */ + if( ssl_use_opaque_psk( ssl ) == 1 ) + return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); +#endif + MBEDTLS_SSL_DEBUG_ECDH( 3, &ssl->handshake->ecdh_ctx, MBEDTLS_DEBUG_ECDH_QP ); @@ -3985,24 +4385,15 @@ static int ssl_parse_client_key_exchange( mbedtls_ssl_context *ssl ) return( 0 ); } -#if !defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)&& \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) +#if !defined(MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED) static int ssl_parse_certificate_verify( mbedtls_ssl_context *ssl ) { const mbedtls_ssl_ciphersuite_t *ciphersuite_info = - ssl->transform_negotiate->ciphersuite_info; + ssl->handshake->ciphersuite_info; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse certificate verify" ) ); - if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_DHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE ) + if( !mbedtls_ssl_ciphersuite_cert_req_allowed( ciphersuite_info ) ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate verify" ) ); ssl->state++; @@ -4012,7 +4403,7 @@ static int ssl_parse_certificate_verify( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } -#else +#else /* !MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED */ static int ssl_parse_certificate_verify( mbedtls_ssl_context *ssl ) { int ret = MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE; @@ -4025,22 +4416,34 @@ static int ssl_parse_certificate_verify( mbedtls_ssl_context *ssl ) #endif mbedtls_md_type_t md_alg; const mbedtls_ssl_ciphersuite_t *ciphersuite_info = - ssl->transform_negotiate->ciphersuite_info; + ssl->handshake->ciphersuite_info; + mbedtls_pk_context * peer_pk; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse certificate verify" ) ); - if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_DHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE || - ssl->session_negotiate->peer_cert == NULL ) + if( !mbedtls_ssl_ciphersuite_cert_req_allowed( ciphersuite_info ) ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate verify" ) ); ssl->state++; return( 0 ); } +#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + if( ssl->session_negotiate->peer_cert == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate verify" ) ); + ssl->state++; + return( 0 ); + } +#else /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + if( ssl->session_negotiate->peer_cert_digest == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate verify" ) ); + ssl->state++; + return( 0 ); + } +#endif /* !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + /* Read the message without adding it to the checksum */ ret = mbedtls_ssl_read_record( ssl, 0 /* no checksum update */ ); if( 0 != ret ) @@ -4061,6 +4464,17 @@ static int ssl_parse_certificate_verify( mbedtls_ssl_context *ssl ) i = mbedtls_ssl_hs_hdr_len( ssl ); +#if !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + peer_pk = &ssl->handshake->peer_pubkey; +#else /* !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + if( ssl->session_negotiate->peer_cert == NULL ) + { + /* Should never happen */ + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + peer_pk = &ssl->session_negotiate->peer_cert->pk; +#endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + /* * struct { * SignatureAndHashAlgorithm algorithm; -- TLS 1.2 only @@ -4075,8 +4489,7 @@ static int ssl_parse_certificate_verify( mbedtls_ssl_context *ssl ) hashlen = 36; /* For ECDSA, use SHA-1, not MD-5 + SHA-1 */ - if( mbedtls_pk_can_do( &ssl->session_negotiate->peer_cert->pk, - MBEDTLS_PK_ECDSA ) ) + if( mbedtls_pk_can_do( peer_pk, MBEDTLS_PK_ECDSA ) ) { hash_start += 16; hashlen -= 16; @@ -4131,7 +4544,7 @@ static int ssl_parse_certificate_verify( mbedtls_ssl_context *ssl ) /* * Check the certificate's key type matches the signature alg */ - if( ! mbedtls_pk_can_do( &ssl->session_negotiate->peer_cert->pk, pk_alg ) ) + if( !mbedtls_pk_can_do( peer_pk, pk_alg ) ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "sig_alg doesn't match cert key" ) ); return( MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_VERIFY ); @@ -4162,9 +4575,12 @@ static int ssl_parse_certificate_verify( mbedtls_ssl_context *ssl ) } /* Calculate hash and verify signature */ - ssl->handshake->calc_verify( ssl, hash ); + { + size_t dummy_hlen; + ssl->handshake->calc_verify( ssl, hash, &dummy_hlen ); + } - if( ( ret = mbedtls_pk_verify( &ssl->session_negotiate->peer_cert->pk, + if( ( ret = mbedtls_pk_verify( peer_pk, md_alg, hash_start, hashlen, ssl->in_msg + i, sig_len ) ) != 0 ) { @@ -4178,17 +4594,12 @@ static int ssl_parse_certificate_verify( mbedtls_ssl_context *ssl ) return( ret ); } -#endif /* !MBEDTLS_KEY_EXCHANGE_RSA_ENABLED && - !MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED && - !MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED && - !MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED && - !MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED && - !MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED */ #if defined(MBEDTLS_SSL_SESSION_TICKETS) static int ssl_write_new_session_ticket( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t tlen; uint32_t lifetime; @@ -4218,14 +4629,8 @@ static int ssl_write_new_session_ticket( mbedtls_ssl_context *ssl ) tlen = 0; } - ssl->out_msg[4] = ( lifetime >> 24 ) & 0xFF; - ssl->out_msg[5] = ( lifetime >> 16 ) & 0xFF; - ssl->out_msg[6] = ( lifetime >> 8 ) & 0xFF; - ssl->out_msg[7] = ( lifetime ) & 0xFF; - - ssl->out_msg[8] = (unsigned char)( ( tlen >> 8 ) & 0xFF ); - ssl->out_msg[9] = (unsigned char)( ( tlen ) & 0xFF ); - + MBEDTLS_PUT_UINT32_BE( lifetime, ssl->out_msg, 4 ); + MBEDTLS_PUT_UINT16_BE( tlen, ssl->out_msg, 8 ); ssl->out_msglen = 10 + tlen; /* diff --git a/Externals/mbedtls/library/ssl_ticket.c b/Externals/mbedtls/library/ssl_ticket.c index 8492c19a8cba..046ed1b2ff7b 100644 --- a/Externals/mbedtls/library/ssl_ticket.c +++ b/Externals/mbedtls/library/ssl_ticket.c @@ -1,7 +1,7 @@ /* * TLS server tickets callbacks implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,15 +15,9 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_SSL_TICKET_C) @@ -35,7 +29,9 @@ #define mbedtls_free free #endif +#include "mbedtls/ssl_internal.h" #include "mbedtls/ssl_ticket.h" +#include "mbedtls/error.h" #include "mbedtls/platform_util.h" #include @@ -54,13 +50,26 @@ void mbedtls_ssl_ticket_init( mbedtls_ssl_ticket_context *ctx ) #define MAX_KEY_BYTES 32 /* 256 bits */ +#define TICKET_KEY_NAME_BYTES 4 +#define TICKET_IV_BYTES 12 +#define TICKET_CRYPT_LEN_BYTES 2 +#define TICKET_AUTH_TAG_BYTES 16 + +#define TICKET_MIN_LEN ( TICKET_KEY_NAME_BYTES + \ + TICKET_IV_BYTES + \ + TICKET_CRYPT_LEN_BYTES + \ + TICKET_AUTH_TAG_BYTES ) +#define TICKET_ADD_DATA_LEN ( TICKET_KEY_NAME_BYTES + \ + TICKET_IV_BYTES + \ + TICKET_CRYPT_LEN_BYTES ) + /* * Generate/update a key */ static int ssl_ticket_gen_key( mbedtls_ssl_ticket_context *ctx, unsigned char index ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char buf[MAX_KEY_BYTES]; mbedtls_ssl_ticket_key *key = ctx->keys + index; @@ -120,7 +129,7 @@ int mbedtls_ssl_ticket_setup( mbedtls_ssl_ticket_context *ctx, mbedtls_cipher_type_t cipher, uint32_t lifetime ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const mbedtls_cipher_info_t *cipher_info; ctx->f_rng = f_rng; @@ -141,11 +150,27 @@ int mbedtls_ssl_ticket_setup( mbedtls_ssl_ticket_context *ctx, if( cipher_info->key_bitlen > 8 * MAX_KEY_BYTES ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - if( ( ret = mbedtls_cipher_setup( &ctx->keys[0].ctx, cipher_info ) ) != 0 || - ( ret = mbedtls_cipher_setup( &ctx->keys[1].ctx, cipher_info ) ) != 0 ) - { +#if defined(MBEDTLS_USE_PSA_CRYPTO) + ret = mbedtls_cipher_setup_psa( &ctx->keys[0].ctx, + cipher_info, TICKET_AUTH_TAG_BYTES ); + if( ret != 0 && ret != MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ) + return( ret ); + /* We don't yet expect to support all ciphers through PSA, + * so allow fallback to ordinary mbedtls_cipher_setup(). */ + if( ret == MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ) +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + if( ( ret = mbedtls_cipher_setup( &ctx->keys[0].ctx, cipher_info ) ) != 0 ) + return( ret ); + +#if defined(MBEDTLS_USE_PSA_CRYPTO) + ret = mbedtls_cipher_setup_psa( &ctx->keys[1].ctx, + cipher_info, TICKET_AUTH_TAG_BYTES ); + if( ret != 0 && ret != MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ) + return( ret ); + if( ret == MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ) +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + if( ( ret = mbedtls_cipher_setup( &ctx->keys[1].ctx, cipher_info ) ) != 0 ) return( ret ); - } if( ( ret = ssl_ticket_gen_key( ctx, 0 ) ) != 0 || ( ret = ssl_ticket_gen_key( ctx, 1 ) ) != 0 ) @@ -156,115 +181,6 @@ int mbedtls_ssl_ticket_setup( mbedtls_ssl_ticket_context *ctx, return( 0 ); } -/* - * Serialize a session in the following format: - * 0 . n-1 session structure, n = sizeof(mbedtls_ssl_session) - * n . n+2 peer_cert length = m (0 if no certificate) - * n+3 . n+2+m peer cert ASN.1 - */ -static int ssl_save_session( const mbedtls_ssl_session *session, - unsigned char *buf, size_t buf_len, - size_t *olen ) -{ - unsigned char *p = buf; - size_t left = buf_len; -#if defined(MBEDTLS_X509_CRT_PARSE_C) - size_t cert_len; -#endif /* MBEDTLS_X509_CRT_PARSE_C */ - - if( left < sizeof( mbedtls_ssl_session ) ) - return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); - - memcpy( p, session, sizeof( mbedtls_ssl_session ) ); - p += sizeof( mbedtls_ssl_session ); - left -= sizeof( mbedtls_ssl_session ); - -#if defined(MBEDTLS_X509_CRT_PARSE_C) - if( session->peer_cert == NULL ) - cert_len = 0; - else - cert_len = session->peer_cert->raw.len; - - if( left < 3 + cert_len ) - return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); - - *p++ = (unsigned char)( ( cert_len >> 16 ) & 0xFF ); - *p++ = (unsigned char)( ( cert_len >> 8 ) & 0xFF ); - *p++ = (unsigned char)( ( cert_len ) & 0xFF ); - - if( session->peer_cert != NULL ) - memcpy( p, session->peer_cert->raw.p, cert_len ); - - p += cert_len; -#endif /* MBEDTLS_X509_CRT_PARSE_C */ - - *olen = p - buf; - - return( 0 ); -} - -/* - * Unserialise session, see ssl_save_session() - */ -static int ssl_load_session( mbedtls_ssl_session *session, - const unsigned char *buf, size_t len ) -{ - const unsigned char *p = buf; - const unsigned char * const end = buf + len; -#if defined(MBEDTLS_X509_CRT_PARSE_C) - size_t cert_len; -#endif /* MBEDTLS_X509_CRT_PARSE_C */ - - if( sizeof( mbedtls_ssl_session ) > (size_t)( end - p ) ) - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - - memcpy( session, p, sizeof( mbedtls_ssl_session ) ); - p += sizeof( mbedtls_ssl_session ); - -#if defined(MBEDTLS_X509_CRT_PARSE_C) - if( 3 > (size_t)( end - p ) ) - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - - cert_len = ( p[0] << 16 ) | ( p[1] << 8 ) | p[2]; - p += 3; - - if( cert_len == 0 ) - { - session->peer_cert = NULL; - } - else - { - int ret; - - if( cert_len > (size_t)( end - p ) ) - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - - session->peer_cert = mbedtls_calloc( 1, sizeof( mbedtls_x509_crt ) ); - - if( session->peer_cert == NULL ) - return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); - - mbedtls_x509_crt_init( session->peer_cert ); - - if( ( ret = mbedtls_x509_crt_parse_der( session->peer_cert, - p, cert_len ) ) != 0 ) - { - mbedtls_x509_crt_free( session->peer_cert ); - mbedtls_free( session->peer_cert ); - session->peer_cert = NULL; - return( ret ); - } - - p += cert_len; - } -#endif /* MBEDTLS_X509_CRT_PARSE_C */ - - if( p != end ) - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - - return( 0 ); -} - /* * Create session ticket, with the following structure: * @@ -278,6 +194,7 @@ static int ssl_load_session( mbedtls_ssl_session *session, * The key_name, iv, and length of encrypted_state are the additional * authenticated data. */ + int mbedtls_ssl_ticket_write( void *p_ticket, const mbedtls_ssl_session *session, unsigned char *start, @@ -285,14 +202,13 @@ int mbedtls_ssl_ticket_write( void *p_ticket, size_t *tlen, uint32_t *ticket_lifetime ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ssl_ticket_context *ctx = p_ticket; mbedtls_ssl_ticket_key *key; unsigned char *key_name = start; - unsigned char *iv = start + 4; - unsigned char *state_len_bytes = iv + 12; - unsigned char *state = state_len_bytes + 2; - unsigned char *tag; + unsigned char *iv = start + TICKET_KEY_NAME_BYTES; + unsigned char *state_len_bytes = iv + TICKET_IV_BYTES; + unsigned char *state = state_len_bytes + TICKET_CRYPT_LEN_BYTES; size_t clear_len, ciph_len; *tlen = 0; @@ -302,8 +218,7 @@ int mbedtls_ssl_ticket_write( void *p_ticket, /* We need at least 4 bytes for key_name, 12 for IV, 2 for len 16 for tag, * in addition to session itself, that will be checked when writing it. */ - if( end - start < 4 + 12 + 2 + 16 ) - return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); + MBEDTLS_SSL_CHK_BUF_PTR( start, end, TICKET_MIN_LEN ); #if defined(MBEDTLS_THREADING_C) if( ( ret = mbedtls_mutex_lock( &ctx->mutex ) ) != 0 ) @@ -317,36 +232,39 @@ int mbedtls_ssl_ticket_write( void *p_ticket, *ticket_lifetime = ctx->ticket_lifetime; - memcpy( key_name, key->name, 4 ); + memcpy( key_name, key->name, TICKET_KEY_NAME_BYTES ); - if( ( ret = ctx->f_rng( ctx->p_rng, iv, 12 ) ) != 0 ) + if( ( ret = ctx->f_rng( ctx->p_rng, iv, TICKET_IV_BYTES ) ) != 0 ) goto cleanup; /* Dump session state */ - if( ( ret = ssl_save_session( session, - state, end - state, &clear_len ) ) != 0 || + if( ( ret = mbedtls_ssl_session_save( session, + state, end - state, + &clear_len ) ) != 0 || (unsigned long) clear_len > 65535 ) { goto cleanup; } - state_len_bytes[0] = ( clear_len >> 8 ) & 0xff; - state_len_bytes[1] = ( clear_len ) & 0xff; + MBEDTLS_PUT_UINT16_BE( clear_len, state_len_bytes, 0 ); /* Encrypt and authenticate */ - tag = state + clear_len; - if( ( ret = mbedtls_cipher_auth_encrypt( &key->ctx, - iv, 12, key_name, 4 + 12 + 2, - state, clear_len, state, &ciph_len, tag, 16 ) ) != 0 ) + if( ( ret = mbedtls_cipher_auth_encrypt_ext( &key->ctx, + iv, TICKET_IV_BYTES, + /* Additional data: key name, IV and length */ + key_name, TICKET_ADD_DATA_LEN, + state, clear_len, + state, end - state, &ciph_len, + TICKET_AUTH_TAG_BYTES ) ) != 0 ) { goto cleanup; } - if( ciph_len != clear_len ) + if( ciph_len != clear_len + TICKET_AUTH_TAG_BYTES ) { ret = MBEDTLS_ERR_SSL_INTERNAL_ERROR; goto cleanup; } - *tlen = 4 + 12 + 2 + 16 + ciph_len; + *tlen = TICKET_MIN_LEN + ciph_len - TICKET_AUTH_TAG_BYTES; cleanup: #if defined(MBEDTLS_THREADING_C) @@ -381,21 +299,19 @@ int mbedtls_ssl_ticket_parse( void *p_ticket, unsigned char *buf, size_t len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_ssl_ticket_context *ctx = p_ticket; mbedtls_ssl_ticket_key *key; unsigned char *key_name = buf; - unsigned char *iv = buf + 4; - unsigned char *enc_len_p = iv + 12; - unsigned char *ticket = enc_len_p + 2; - unsigned char *tag; + unsigned char *iv = buf + TICKET_KEY_NAME_BYTES; + unsigned char *enc_len_p = iv + TICKET_IV_BYTES; + unsigned char *ticket = enc_len_p + TICKET_CRYPT_LEN_BYTES; size_t enc_len, clear_len; if( ctx == NULL || ctx->f_rng == NULL ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - /* See mbedtls_ssl_ticket_write() */ - if( len < 4 + 12 + 2 + 16 ) + if( len < TICKET_MIN_LEN ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); #if defined(MBEDTLS_THREADING_C) @@ -407,9 +323,8 @@ int mbedtls_ssl_ticket_parse( void *p_ticket, goto cleanup; enc_len = ( enc_len_p[0] << 8 ) | enc_len_p[1]; - tag = ticket + enc_len; - if( len != 4 + 12 + 2 + enc_len + 16 ) + if( len != TICKET_MIN_LEN + enc_len ) { ret = MBEDTLS_ERR_SSL_BAD_INPUT_DATA; goto cleanup; @@ -425,9 +340,13 @@ int mbedtls_ssl_ticket_parse( void *p_ticket, } /* Decrypt and authenticate */ - if( ( ret = mbedtls_cipher_auth_decrypt( &key->ctx, iv, 12, - key_name, 4 + 12 + 2, ticket, enc_len, - ticket, &clear_len, tag, 16 ) ) != 0 ) + if( ( ret = mbedtls_cipher_auth_decrypt_ext( &key->ctx, + iv, TICKET_IV_BYTES, + /* Additional data: key name, IV and length */ + key_name, TICKET_ADD_DATA_LEN, + ticket, enc_len + TICKET_AUTH_TAG_BYTES, + ticket, enc_len, &clear_len, + TICKET_AUTH_TAG_BYTES ) ) != 0 ) { if( ret == MBEDTLS_ERR_CIPHER_AUTH_FAILED ) ret = MBEDTLS_ERR_SSL_INVALID_MAC; @@ -441,7 +360,7 @@ int mbedtls_ssl_ticket_parse( void *p_ticket, } /* Actually load session */ - if( ( ret = ssl_load_session( session, ticket, clear_len ) ) != 0 ) + if( ( ret = mbedtls_ssl_session_load( session, ticket, clear_len ) ) != 0 ) goto cleanup; #if defined(MBEDTLS_HAVE_TIME) diff --git a/Externals/mbedtls/library/ssl_tls.c b/Externals/mbedtls/library/ssl_tls.c index 38690fa66438..2e6469de839d 100644 --- a/Externals/mbedtls/library/ssl_tls.c +++ b/Externals/mbedtls/library/ssl_tls.c @@ -1,7 +1,7 @@ /* * SSLv3/TLSv1 shared functions * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The SSL 3.0 specification was drafted by Netscape in 1996, @@ -27,11 +25,7 @@ * http://www.ietf.org/rfc/rfc4346.txt */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_SSL_TLS_C) @@ -43,202 +37,120 @@ #define mbedtls_free free #endif -#include "mbedtls/debug.h" #include "mbedtls/ssl.h" #include "mbedtls/ssl_internal.h" +#include "mbedtls/debug.h" +#include "mbedtls/error.h" #include "mbedtls/platform_util.h" +#include "mbedtls/version.h" +#include "mbedtls/constant_time.h" #include +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "mbedtls/psa_util.h" +#include "psa/crypto.h" +#endif + #if defined(MBEDTLS_X509_CRT_PARSE_C) #include "mbedtls/oid.h" #endif -static void ssl_reset_in_out_pointers( mbedtls_ssl_context *ssl ); -static uint32_t ssl_get_hs_total_len( mbedtls_ssl_context const *ssl ); - -/* Length of the "epoch" field in the record header */ -static inline size_t ssl_ep_len( const mbedtls_ssl_context *ssl ) -{ #if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - return( 2 ); -#else - ((void) ssl); -#endif - return( 0 ); -} - -/* - * Start a timer. - * Passing millisecs = 0 cancels a running timer. - */ -static void ssl_set_timer( mbedtls_ssl_context *ssl, uint32_t millisecs ) -{ - if( ssl->f_set_timer == NULL ) - return; - MBEDTLS_SSL_DEBUG_MSG( 3, ( "set_timer to %d ms", (int) millisecs ) ); - ssl->f_set_timer( ssl->p_timer, millisecs / 4, millisecs ); -} +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) +/* Top-level Connection ID API */ -/* - * Return -1 is timer is expired, 0 if it isn't. - */ -static int ssl_check_timer( mbedtls_ssl_context *ssl ) +int mbedtls_ssl_conf_cid( mbedtls_ssl_config *conf, + size_t len, + int ignore_other_cid ) { - if( ssl->f_get_timer == NULL ) - return( 0 ); + if( len > MBEDTLS_SSL_CID_IN_LEN_MAX ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - if( ssl->f_get_timer( ssl->p_timer ) == 2 ) + if( ignore_other_cid != MBEDTLS_SSL_UNEXPECTED_CID_FAIL && + ignore_other_cid != MBEDTLS_SSL_UNEXPECTED_CID_IGNORE ) { - MBEDTLS_SSL_DEBUG_MSG( 3, ( "timer expired" ) ); - return( -1 ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } + conf->ignore_unexpected_cid = ignore_other_cid; + conf->cid_len = len; return( 0 ); } -static void ssl_update_out_pointers( mbedtls_ssl_context *ssl, - mbedtls_ssl_transform *transform ); -static void ssl_update_in_pointers( mbedtls_ssl_context *ssl, - mbedtls_ssl_transform *transform ); - -#define SSL_DONT_FORCE_FLUSH 0 -#define SSL_FORCE_FLUSH 1 - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - -/* Forward declarations for functions related to message buffering. */ -static void ssl_buffering_free( mbedtls_ssl_context *ssl ); -static void ssl_buffering_free_slot( mbedtls_ssl_context *ssl, - uint8_t slot ); -static void ssl_free_buffered_record( mbedtls_ssl_context *ssl ); -static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ); -static int ssl_load_buffered_record( mbedtls_ssl_context *ssl ); -static int ssl_buffer_message( mbedtls_ssl_context *ssl ); -static int ssl_buffer_future_record( mbedtls_ssl_context *ssl ); -static int ssl_next_record_is_in_datagram( mbedtls_ssl_context *ssl ); - -static size_t ssl_get_current_mtu( const mbedtls_ssl_context *ssl ); -static size_t ssl_get_maximum_datagram_size( mbedtls_ssl_context const *ssl ) -{ - size_t mtu = ssl_get_current_mtu( ssl ); - - if( mtu != 0 && mtu < MBEDTLS_SSL_OUT_BUFFER_LEN ) - return( mtu ); - - return( MBEDTLS_SSL_OUT_BUFFER_LEN ); -} - -static int ssl_get_remaining_space_in_datagram( mbedtls_ssl_context const *ssl ) +int mbedtls_ssl_set_cid( mbedtls_ssl_context *ssl, + int enable, + unsigned char const *own_cid, + size_t own_cid_len ) { - size_t const bytes_written = ssl->out_left; - size_t const mtu = ssl_get_maximum_datagram_size( ssl ); + if( ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - /* Double-check that the write-index hasn't gone - * past what we can transmit in a single datagram. */ - if( bytes_written > mtu ) + ssl->negotiate_cid = enable; + if( enable == MBEDTLS_SSL_CID_DISABLED ) { - /* Should never happen... */ - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - return( (int) ( mtu - bytes_written ) ); -} - -static int ssl_get_remaining_payload_in_datagram( mbedtls_ssl_context const *ssl ) -{ - int ret; - size_t remaining, expansion; - size_t max_len = MBEDTLS_SSL_OUT_CONTENT_LEN; - -#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) - const size_t mfl = mbedtls_ssl_get_max_frag_len( ssl ); - - if( max_len > mfl ) - max_len = mfl; - - /* By the standard (RFC 6066 Sect. 4), the MFL extension - * only limits the maximum record payload size, so in theory - * we would be allowed to pack multiple records of payload size - * MFL into a single datagram. However, this would mean that there's - * no way to explicitly communicate MTU restrictions to the peer. - * - * The following reduction of max_len makes sure that we never - * write datagrams larger than MFL + Record Expansion Overhead. - */ - if( max_len <= ssl->out_left ) + MBEDTLS_SSL_DEBUG_MSG( 3, ( "Disable use of CID extension." ) ); return( 0 ); + } + MBEDTLS_SSL_DEBUG_MSG( 3, ( "Enable use of CID extension." ) ); + MBEDTLS_SSL_DEBUG_BUF( 3, "Own CID", own_cid, own_cid_len ); - max_len -= ssl->out_left; -#endif - - ret = ssl_get_remaining_space_in_datagram( ssl ); - if( ret < 0 ) - return( ret ); - remaining = (size_t) ret; - - ret = mbedtls_ssl_get_record_expansion( ssl ); - if( ret < 0 ) - return( ret ); - expansion = (size_t) ret; - - if( remaining <= expansion ) - return( 0 ); + if( own_cid_len != ssl->conf->cid_len ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "CID length %u does not match CID length %u in config", + (unsigned) own_cid_len, + (unsigned) ssl->conf->cid_len ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } - remaining -= expansion; - if( remaining >= max_len ) - remaining = max_len; + memcpy( ssl->own_cid, own_cid, own_cid_len ); + /* Truncation is not an issue here because + * MBEDTLS_SSL_CID_IN_LEN_MAX at most 255. */ + ssl->own_cid_len = (uint8_t) own_cid_len; - return( (int) remaining ); + return( 0 ); } -/* - * Double the retransmit timeout value, within the allowed range, - * returning -1 if the maximum value has already been reached. - */ -static int ssl_double_retransmit_timeout( mbedtls_ssl_context *ssl ) +int mbedtls_ssl_get_peer_cid( mbedtls_ssl_context *ssl, + int *enabled, + unsigned char peer_cid[ MBEDTLS_SSL_CID_OUT_LEN_MAX ], + size_t *peer_cid_len ) { - uint32_t new_timeout; + *enabled = MBEDTLS_SSL_CID_DISABLED; - if( ssl->handshake->retransmit_timeout >= ssl->conf->hs_timeout_max ) - return( -1 ); - - /* Implement the final paragraph of RFC 6347 section 4.1.1.1 - * in the following way: after the initial transmission and a first - * retransmission, back off to a temporary estimated MTU of 508 bytes. - * This value is guaranteed to be deliverable (if not guaranteed to be - * delivered) of any compliant IPv4 (and IPv6) network, and should work - * on most non-IP stacks too. */ - if( ssl->handshake->retransmit_timeout != ssl->conf->hs_timeout_min ) + if( ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM || + ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER ) { - ssl->handshake->mtu = 508; - MBEDTLS_SSL_DEBUG_MSG( 2, ( "mtu autoreduction to %d bytes", ssl->handshake->mtu ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } - new_timeout = 2 * ssl->handshake->retransmit_timeout; + /* We report MBEDTLS_SSL_CID_DISABLED in case the CID extensions + * were used, but client and server requested the empty CID. + * This is indistinguishable from not using the CID extension + * in the first place. */ + if( ssl->transform_in->in_cid_len == 0 && + ssl->transform_in->out_cid_len == 0 ) + { + return( 0 ); + } - /* Avoid arithmetic overflow and range overflow */ - if( new_timeout < ssl->handshake->retransmit_timeout || - new_timeout > ssl->conf->hs_timeout_max ) + if( peer_cid_len != NULL ) { - new_timeout = ssl->conf->hs_timeout_max; + *peer_cid_len = ssl->transform_in->out_cid_len; + if( peer_cid != NULL ) + { + memcpy( peer_cid, ssl->transform_in->out_cid, + ssl->transform_in->out_cid_len ); + } } - ssl->handshake->retransmit_timeout = new_timeout; - MBEDTLS_SSL_DEBUG_MSG( 3, ( "update timeout value to %d millisecs", - ssl->handshake->retransmit_timeout ) ); + *enabled = MBEDTLS_SSL_CID_ENABLED; return( 0 ); } +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ -static void ssl_reset_retransmit_timeout( mbedtls_ssl_context *ssl ) -{ - ssl->handshake->retransmit_timeout = ssl->conf->hs_timeout_min; - MBEDTLS_SSL_DEBUG_MSG( 3, ( "update timeout value to %d millisecs", - ssl->handshake->retransmit_timeout ) ); -} #endif /* MBEDTLS_SSL_PROTO_DTLS */ #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) @@ -270,16 +182,22 @@ static unsigned int ssl_mfl_code_to_length( int mfl ) } #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ -#if defined(MBEDTLS_SSL_CLI_C) -static int ssl_session_copy( mbedtls_ssl_session *dst, const mbedtls_ssl_session *src ) +int mbedtls_ssl_session_copy( mbedtls_ssl_session *dst, + const mbedtls_ssl_session *src ) { mbedtls_ssl_session_free( dst ); memcpy( dst, src, sizeof( mbedtls_ssl_session ) ); +#if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C) + dst->ticket = NULL; +#endif + #if defined(MBEDTLS_X509_CRT_PARSE_C) + +#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) if( src->peer_cert != NULL ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; dst->peer_cert = mbedtls_calloc( 1, sizeof(mbedtls_x509_crt) ); if( dst->peer_cert == NULL ) @@ -295,6 +213,21 @@ static int ssl_session_copy( mbedtls_ssl_session *dst, const mbedtls_ssl_session return( ret ); } } +#else /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + if( src->peer_cert_digest != NULL ) + { + dst->peer_cert_digest = + mbedtls_calloc( 1, src->peer_cert_digest_len ); + if( dst->peer_cert_digest == NULL ) + return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); + + memcpy( dst->peer_cert_digest, src->peer_cert_digest, + src->peer_cert_digest_len ); + dst->peer_cert_digest_type = src->peer_cert_digest_type; + dst->peer_cert_digest_len = src->peer_cert_digest_len; + } +#endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + #endif /* MBEDTLS_X509_CRT_PARSE_C */ #if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C) @@ -310,22 +243,95 @@ static int ssl_session_copy( mbedtls_ssl_session *dst, const mbedtls_ssl_session return( 0 ); } -#endif /* MBEDTLS_SSL_CLI_C */ -#if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) -int (*mbedtls_ssl_hw_record_init)( mbedtls_ssl_context *ssl, - const unsigned char *key_enc, const unsigned char *key_dec, - size_t keylen, - const unsigned char *iv_enc, const unsigned char *iv_dec, - size_t ivlen, - const unsigned char *mac_enc, const unsigned char *mac_dec, - size_t maclen ) = NULL; -int (*mbedtls_ssl_hw_record_activate)( mbedtls_ssl_context *ssl, int direction) = NULL; -int (*mbedtls_ssl_hw_record_reset)( mbedtls_ssl_context *ssl ) = NULL; -int (*mbedtls_ssl_hw_record_write)( mbedtls_ssl_context *ssl ) = NULL; -int (*mbedtls_ssl_hw_record_read)( mbedtls_ssl_context *ssl ) = NULL; -int (*mbedtls_ssl_hw_record_finish)( mbedtls_ssl_context *ssl ) = NULL; -#endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) +static int resize_buffer( unsigned char **buffer, size_t len_new, size_t *len_old ) +{ + unsigned char* resized_buffer = mbedtls_calloc( 1, len_new ); + if( resized_buffer == NULL ) + return -1; + + /* We want to copy len_new bytes when downsizing the buffer, and + * len_old bytes when upsizing, so we choose the smaller of two sizes, + * to fit one buffer into another. Size checks, ensuring that no data is + * lost, are done outside of this function. */ + memcpy( resized_buffer, *buffer, + ( len_new < *len_old ) ? len_new : *len_old ); + mbedtls_platform_zeroize( *buffer, *len_old ); + mbedtls_free( *buffer ); + + *buffer = resized_buffer; + *len_old = len_new; + + return 0; +} + +static void handle_buffer_resizing( mbedtls_ssl_context *ssl, int downsizing, + size_t in_buf_new_len, + size_t out_buf_new_len ) +{ + int modified = 0; + size_t written_in = 0, iv_offset_in = 0, len_offset_in = 0; + size_t written_out = 0, iv_offset_out = 0, len_offset_out = 0; + if( ssl->in_buf != NULL ) + { + written_in = ssl->in_msg - ssl->in_buf; + iv_offset_in = ssl->in_iv - ssl->in_buf; + len_offset_in = ssl->in_len - ssl->in_buf; + if( downsizing ? + ssl->in_buf_len > in_buf_new_len && ssl->in_left < in_buf_new_len : + ssl->in_buf_len < in_buf_new_len ) + { + if( resize_buffer( &ssl->in_buf, in_buf_new_len, &ssl->in_buf_len ) != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "input buffer resizing failed - out of memory" ) ); + } + else + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Reallocating in_buf to %" MBEDTLS_PRINTF_SIZET, + in_buf_new_len ) ); + modified = 1; + } + } + } + + if( ssl->out_buf != NULL ) + { + written_out = ssl->out_msg - ssl->out_buf; + iv_offset_out = ssl->out_iv - ssl->out_buf; + len_offset_out = ssl->out_len - ssl->out_buf; + if( downsizing ? + ssl->out_buf_len > out_buf_new_len && ssl->out_left < out_buf_new_len : + ssl->out_buf_len < out_buf_new_len ) + { + if( resize_buffer( &ssl->out_buf, out_buf_new_len, &ssl->out_buf_len ) != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "output buffer resizing failed - out of memory" ) ); + } + else + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Reallocating out_buf to %" MBEDTLS_PRINTF_SIZET, + out_buf_new_len ) ); + modified = 1; + } + } + } + if( modified ) + { + /* Update pointers here to avoid doing it twice. */ + mbedtls_ssl_reset_in_out_pointers( ssl ); + /* Fields below might not be properly updated with record + * splitting or with CID, so they are manually updated here. */ + ssl->out_msg = ssl->out_buf + written_out; + ssl->out_len = ssl->out_buf + len_offset_out; + ssl->out_iv = ssl->out_buf + iv_offset_out; + + ssl->in_msg = ssl->in_buf + written_in; + ssl->in_len = ssl->in_buf + len_offset_in; + ssl->in_iv = ssl->in_buf + iv_offset_in; + } +} +#endif /* MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH */ /* * Key material generation @@ -400,16 +406,22 @@ static int tls1_prf( const unsigned char *secret, size_t slen, size_t nb, hs; size_t i, j, k; const unsigned char *S1, *S2; - unsigned char tmp[128]; + unsigned char *tmp; + size_t tmp_len = 0; unsigned char h_i[20]; const mbedtls_md_info_t *md_info; mbedtls_md_context_t md_ctx; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_md_init( &md_ctx ); - if( sizeof( tmp ) < 20 + strlen( label ) + rlen ) - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + tmp_len = 20 + strlen( label ) + rlen; + tmp = mbedtls_calloc( 1, tmp_len ); + if( tmp == NULL ) + { + ret = MBEDTLS_ERR_SSL_ALLOC_FAILED; + goto exit; + } hs = ( slen + 1 ) / 2; S1 = secret; @@ -424,24 +436,47 @@ static int tls1_prf( const unsigned char *secret, size_t slen, * First compute P_md5(secret,label+random)[0..dlen] */ if( ( md_info = mbedtls_md_info_from_type( MBEDTLS_MD_MD5 ) ) == NULL ) - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + { + ret = MBEDTLS_ERR_SSL_INTERNAL_ERROR; + goto exit; + } if( ( ret = mbedtls_md_setup( &md_ctx, md_info, 1 ) ) != 0 ) - return( ret ); + { + goto exit; + } - mbedtls_md_hmac_starts( &md_ctx, S1, hs ); - mbedtls_md_hmac_update( &md_ctx, tmp + 20, nb ); - mbedtls_md_hmac_finish( &md_ctx, 4 + tmp ); + ret = mbedtls_md_hmac_starts( &md_ctx, S1, hs ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_update( &md_ctx, tmp + 20, nb ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_finish( &md_ctx, 4 + tmp ); + if( ret != 0 ) + goto exit; for( i = 0; i < dlen; i += 16 ) { - mbedtls_md_hmac_reset ( &md_ctx ); - mbedtls_md_hmac_update( &md_ctx, 4 + tmp, 16 + nb ); - mbedtls_md_hmac_finish( &md_ctx, h_i ); + ret = mbedtls_md_hmac_reset ( &md_ctx ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_update( &md_ctx, 4 + tmp, 16 + nb ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_finish( &md_ctx, h_i ); + if( ret != 0 ) + goto exit; - mbedtls_md_hmac_reset ( &md_ctx ); - mbedtls_md_hmac_update( &md_ctx, 4 + tmp, 16 ); - mbedtls_md_hmac_finish( &md_ctx, 4 + tmp ); + ret = mbedtls_md_hmac_reset ( &md_ctx ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_update( &md_ctx, 4 + tmp, 16 ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_finish( &md_ctx, 4 + tmp ); + if( ret != 0 ) + goto exit; k = ( i + 16 > dlen ) ? dlen % 16 : 16; @@ -455,24 +490,47 @@ static int tls1_prf( const unsigned char *secret, size_t slen, * XOR out with P_sha1(secret,label+random)[0..dlen] */ if( ( md_info = mbedtls_md_info_from_type( MBEDTLS_MD_SHA1 ) ) == NULL ) - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + { + ret = MBEDTLS_ERR_SSL_INTERNAL_ERROR; + goto exit; + } if( ( ret = mbedtls_md_setup( &md_ctx, md_info, 1 ) ) != 0 ) - return( ret ); + { + goto exit; + } - mbedtls_md_hmac_starts( &md_ctx, S2, hs ); - mbedtls_md_hmac_update( &md_ctx, tmp + 20, nb ); - mbedtls_md_hmac_finish( &md_ctx, tmp ); + ret = mbedtls_md_hmac_starts( &md_ctx, S2, hs ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_update( &md_ctx, tmp + 20, nb ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_finish( &md_ctx, tmp ); + if( ret != 0 ) + goto exit; for( i = 0; i < dlen; i += 20 ) { - mbedtls_md_hmac_reset ( &md_ctx ); - mbedtls_md_hmac_update( &md_ctx, tmp, 20 + nb ); - mbedtls_md_hmac_finish( &md_ctx, h_i ); + ret = mbedtls_md_hmac_reset ( &md_ctx ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_update( &md_ctx, tmp, 20 + nb ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_finish( &md_ctx, h_i ); + if( ret != 0 ) + goto exit; - mbedtls_md_hmac_reset ( &md_ctx ); - mbedtls_md_hmac_update( &md_ctx, tmp, 20 ); - mbedtls_md_hmac_finish( &md_ctx, tmp ); + ret = mbedtls_md_hmac_reset ( &md_ctx ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_update( &md_ctx, tmp, 20 ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_finish( &md_ctx, tmp ); + if( ret != 0 ) + goto exit; k = ( i + 20 > dlen ) ? dlen % 20 : 20; @@ -480,16 +538,147 @@ static int tls1_prf( const unsigned char *secret, size_t slen, dstbuf[i + j] = (unsigned char)( dstbuf[i + j] ^ h_i[j] ); } +exit: mbedtls_md_free( &md_ctx ); - mbedtls_platform_zeroize( tmp, sizeof( tmp ) ); + mbedtls_platform_zeroize( tmp, tmp_len ); mbedtls_platform_zeroize( h_i, sizeof( h_i ) ); - return( 0 ); + mbedtls_free( tmp ); + return( ret ); } #endif /* MBEDTLS_SSL_PROTO_TLS1) || MBEDTLS_SSL_PROTO_TLS1_1 */ #if defined(MBEDTLS_SSL_PROTO_TLS1_2) +#if defined(MBEDTLS_USE_PSA_CRYPTO) + +static psa_status_t setup_psa_key_derivation( psa_key_derivation_operation_t* derivation, + psa_key_id_t key, + psa_algorithm_t alg, + const unsigned char* seed, size_t seed_length, + const unsigned char* label, size_t label_length, + size_t capacity ) +{ + psa_status_t status; + + status = psa_key_derivation_setup( derivation, alg ); + if( status != PSA_SUCCESS ) + return( status ); + + if( PSA_ALG_IS_TLS12_PRF( alg ) || PSA_ALG_IS_TLS12_PSK_TO_MS( alg ) ) + { + status = psa_key_derivation_input_bytes( derivation, + PSA_KEY_DERIVATION_INPUT_SEED, + seed, seed_length ); + if( status != PSA_SUCCESS ) + return( status ); + + if( mbedtls_svc_key_id_is_null( key ) ) + { + status = psa_key_derivation_input_bytes( + derivation, PSA_KEY_DERIVATION_INPUT_SECRET, + NULL, 0 ); + } + else + { + status = psa_key_derivation_input_key( + derivation, PSA_KEY_DERIVATION_INPUT_SECRET, key ); + } + if( status != PSA_SUCCESS ) + return( status ); + + status = psa_key_derivation_input_bytes( derivation, + PSA_KEY_DERIVATION_INPUT_LABEL, + label, label_length ); + if( status != PSA_SUCCESS ) + return( status ); + } + else + { + return( PSA_ERROR_NOT_SUPPORTED ); + } + + status = psa_key_derivation_set_capacity( derivation, capacity ); + if( status != PSA_SUCCESS ) + return( status ); + + return( PSA_SUCCESS ); +} + +static int tls_prf_generic( mbedtls_md_type_t md_type, + const unsigned char *secret, size_t slen, + const char *label, + const unsigned char *random, size_t rlen, + unsigned char *dstbuf, size_t dlen ) +{ + psa_status_t status; + psa_algorithm_t alg; + psa_key_id_t master_key = MBEDTLS_SVC_KEY_ID_INIT; + psa_key_derivation_operation_t derivation = + PSA_KEY_DERIVATION_OPERATION_INIT; + + if( md_type == MBEDTLS_MD_SHA384 ) + alg = PSA_ALG_TLS12_PRF(PSA_ALG_SHA_384); + else + alg = PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256); + + /* Normally a "secret" should be long enough to be impossible to + * find by brute force, and in particular should not be empty. But + * this PRF is also used to derive an IV, in particular in EAP-TLS, + * and for this use case it makes sense to have a 0-length "secret". + * Since the key API doesn't allow importing a key of length 0, + * keep master_key=0, which setup_psa_key_derivation() understands + * to mean a 0-length "secret" input. */ + if( slen != 0 ) + { + psa_key_attributes_t key_attributes = psa_key_attributes_init(); + psa_set_key_usage_flags( &key_attributes, PSA_KEY_USAGE_DERIVE ); + psa_set_key_algorithm( &key_attributes, alg ); + psa_set_key_type( &key_attributes, PSA_KEY_TYPE_DERIVE ); + + status = psa_import_key( &key_attributes, secret, slen, &master_key ); + if( status != PSA_SUCCESS ) + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + } + + status = setup_psa_key_derivation( &derivation, + master_key, alg, + random, rlen, + (unsigned char const *) label, + (size_t) strlen( label ), + dlen ); + if( status != PSA_SUCCESS ) + { + psa_key_derivation_abort( &derivation ); + psa_destroy_key( master_key ); + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + } + + status = psa_key_derivation_output_bytes( &derivation, dstbuf, dlen ); + if( status != PSA_SUCCESS ) + { + psa_key_derivation_abort( &derivation ); + psa_destroy_key( master_key ); + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + } + + status = psa_key_derivation_abort( &derivation ); + if( status != PSA_SUCCESS ) + { + psa_destroy_key( master_key ); + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + } + + if( ! mbedtls_svc_key_id_is_null( master_key ) ) + status = psa_destroy_key( master_key ); + if( status != PSA_SUCCESS ) + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + + return( 0 ); +} + +#else /* MBEDTLS_USE_PSA_CRYPTO */ + static int tls_prf_generic( mbedtls_md_type_t md_type, const unsigned char *secret, size_t slen, const char *label, @@ -498,11 +687,12 @@ static int tls_prf_generic( mbedtls_md_type_t md_type, { size_t nb; size_t i, j, k, md_len; - unsigned char tmp[128]; + unsigned char *tmp; + size_t tmp_len = 0; unsigned char h_i[MBEDTLS_MD_MAX_SIZE]; const mbedtls_md_info_t *md_info; mbedtls_md_context_t md_ctx; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_md_init( &md_ctx ); @@ -511,8 +701,13 @@ static int tls_prf_generic( mbedtls_md_type_t md_type, md_len = mbedtls_md_get_size( md_info ); - if( sizeof( tmp ) < md_len + strlen( label ) + rlen ) - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + tmp_len = md_len + strlen( label ) + rlen; + tmp = mbedtls_calloc( 1, tmp_len ); + if( tmp == NULL ) + { + ret = MBEDTLS_ERR_SSL_ALLOC_FAILED; + goto exit; + } nb = strlen( label ); memcpy( tmp + md_len, label, nb ); @@ -523,21 +718,39 @@ static int tls_prf_generic( mbedtls_md_type_t md_type, * Compute P_(secret, label + random)[0..dlen] */ if ( ( ret = mbedtls_md_setup( &md_ctx, md_info, 1 ) ) != 0 ) - return( ret ); + goto exit; - mbedtls_md_hmac_starts( &md_ctx, secret, slen ); - mbedtls_md_hmac_update( &md_ctx, tmp + md_len, nb ); - mbedtls_md_hmac_finish( &md_ctx, tmp ); + ret = mbedtls_md_hmac_starts( &md_ctx, secret, slen ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_update( &md_ctx, tmp + md_len, nb ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_finish( &md_ctx, tmp ); + if( ret != 0 ) + goto exit; for( i = 0; i < dlen; i += md_len ) { - mbedtls_md_hmac_reset ( &md_ctx ); - mbedtls_md_hmac_update( &md_ctx, tmp, md_len + nb ); - mbedtls_md_hmac_finish( &md_ctx, h_i ); + ret = mbedtls_md_hmac_reset ( &md_ctx ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_update( &md_ctx, tmp, md_len + nb ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_finish( &md_ctx, h_i ); + if( ret != 0 ) + goto exit; - mbedtls_md_hmac_reset ( &md_ctx ); - mbedtls_md_hmac_update( &md_ctx, tmp, md_len ); - mbedtls_md_hmac_finish( &md_ctx, tmp ); + ret = mbedtls_md_hmac_reset ( &md_ctx ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_update( &md_ctx, tmp, md_len ); + if( ret != 0 ) + goto exit; + ret = mbedtls_md_hmac_finish( &md_ctx, tmp ); + if( ret != 0 ) + goto exit; k = ( i + md_len > dlen ) ? dlen % md_len : md_len; @@ -545,14 +758,17 @@ static int tls_prf_generic( mbedtls_md_type_t md_type, dstbuf[i + j] = h_i[j]; } +exit: mbedtls_md_free( &md_ctx ); - mbedtls_platform_zeroize( tmp, sizeof( tmp ) ); + mbedtls_platform_zeroize( tmp, tmp_len ); mbedtls_platform_zeroize( h_i, sizeof( h_i ) ); - return( 0 ); -} + mbedtls_free( tmp ); + return( ret ); +} +#endif /* MBEDTLS_USE_PSA_CRYPTO */ #if defined(MBEDTLS_SHA256_C) static int tls_prf_sha256( const unsigned char *secret, size_t slen, const char *label, @@ -564,7 +780,7 @@ static int tls_prf_sha256( const unsigned char *secret, size_t slen, } #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) static int tls_prf_sha384( const unsigned char *secret, size_t slen, const char *label, const unsigned char *random, size_t rlen, @@ -573,7 +789,7 @@ static int tls_prf_sha384( const unsigned char *secret, size_t slen, return( tls_prf_generic( MBEDTLS_MD_SHA384, secret, slen, label, random, rlen, dstbuf, dlen ) ); } -#endif /* MBEDTLS_SHA512_C */ +#endif /* MBEDTLS_SHA512_C && !MBEDTLS_SHA512_NO_SHA384 */ #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ static void ssl_update_checksum_start( mbedtls_ssl_context *, const unsigned char *, size_t ); @@ -584,207 +800,265 @@ static void ssl_update_checksum_md5sha1( mbedtls_ssl_context *, const unsigned c #endif #if defined(MBEDTLS_SSL_PROTO_SSL3) -static void ssl_calc_verify_ssl( mbedtls_ssl_context *, unsigned char * ); +static void ssl_calc_verify_ssl( const mbedtls_ssl_context *, unsigned char *, size_t * ); static void ssl_calc_finished_ssl( mbedtls_ssl_context *, unsigned char *, int ); #endif #if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) -static void ssl_calc_verify_tls( mbedtls_ssl_context *, unsigned char * ); +static void ssl_calc_verify_tls( const mbedtls_ssl_context *, unsigned char*, size_t * ); static void ssl_calc_finished_tls( mbedtls_ssl_context *, unsigned char *, int ); #endif #if defined(MBEDTLS_SSL_PROTO_TLS1_2) #if defined(MBEDTLS_SHA256_C) static void ssl_update_checksum_sha256( mbedtls_ssl_context *, const unsigned char *, size_t ); -static void ssl_calc_verify_tls_sha256( mbedtls_ssl_context *,unsigned char * ); +static void ssl_calc_verify_tls_sha256( const mbedtls_ssl_context *,unsigned char*, size_t * ); static void ssl_calc_finished_tls_sha256( mbedtls_ssl_context *,unsigned char *, int ); #endif -#if defined(MBEDTLS_SHA512_C) +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) static void ssl_update_checksum_sha384( mbedtls_ssl_context *, const unsigned char *, size_t ); -static void ssl_calc_verify_tls_sha384( mbedtls_ssl_context *, unsigned char * ); +static void ssl_calc_verify_tls_sha384( const mbedtls_ssl_context *, unsigned char*, size_t * ); static void ssl_calc_finished_tls_sha384( mbedtls_ssl_context *, unsigned char *, int ); #endif #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ -int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) +#if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) && \ + defined(MBEDTLS_USE_PSA_CRYPTO) +static int ssl_use_opaque_psk( mbedtls_ssl_context const *ssl ) { - int ret = 0; - unsigned char tmp[64]; - unsigned char keyblk[256]; - unsigned char *key1; - unsigned char *key2; - unsigned char *mac_enc; - unsigned char *mac_dec; - size_t mac_key_len; - size_t iv_copy_len; - const mbedtls_cipher_info_t *cipher_info; - const mbedtls_md_info_t *md_info; - - mbedtls_ssl_session *session = ssl->session_negotiate; - mbedtls_ssl_transform *transform = ssl->transform_negotiate; - mbedtls_ssl_handshake_params *handshake = ssl->handshake; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> derive keys" ) ); - - cipher_info = mbedtls_cipher_info_from_type( transform->ciphersuite_info->cipher ); - if( cipher_info == NULL ) + if( ssl->conf->f_psk != NULL ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "cipher info for %d not found", - transform->ciphersuite_info->cipher ) ); - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - } + /* If we've used a callback to select the PSK, + * the static configuration is irrelevant. */ + if( ! mbedtls_svc_key_id_is_null( ssl->handshake->psk_opaque ) ) + return( 1 ); - md_info = mbedtls_md_info_from_type( transform->ciphersuite_info->mac ); - if( md_info == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "mbedtls_md info for %d not found", - transform->ciphersuite_info->mac ) ); - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + return( 0 ); } - /* - * Set appropriate PRF function and other SSL / TLS / TLS1.2 functions - */ + if( ! mbedtls_svc_key_id_is_null( ssl->conf->psk_opaque ) ) + return( 1 ); + + return( 0 ); +} +#endif /* MBEDTLS_USE_PSA_CRYPTO && + MBEDTLS_KEY_EXCHANGE_PSK_ENABLED */ + +#if defined(MBEDTLS_SSL_EXPORT_KEYS) +static mbedtls_tls_prf_types tls_prf_get_type( mbedtls_ssl_tls_prf_cb *tls_prf ) +{ #if defined(MBEDTLS_SSL_PROTO_SSL3) - if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) + if( tls_prf == ssl3_prf ) { - handshake->tls_prf = ssl3_prf; - handshake->calc_verify = ssl_calc_verify_ssl; - handshake->calc_finished = ssl_calc_finished_ssl; + return( MBEDTLS_SSL_TLS_PRF_SSL3 ); } else #endif #if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) - if( ssl->minor_ver < MBEDTLS_SSL_MINOR_VERSION_3 ) + if( tls_prf == tls1_prf ) { - handshake->tls_prf = tls1_prf; - handshake->calc_verify = ssl_calc_verify_tls; - handshake->calc_finished = ssl_calc_finished_tls; + return( MBEDTLS_SSL_TLS_PRF_TLS1 ); } else #endif #if defined(MBEDTLS_SSL_PROTO_TLS1_2) -#if defined(MBEDTLS_SHA512_C) - if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 && - transform->ciphersuite_info->mac == MBEDTLS_MD_SHA384 ) +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) + if( tls_prf == tls_prf_sha384 ) { - handshake->tls_prf = tls_prf_sha384; - handshake->calc_verify = ssl_calc_verify_tls_sha384; - handshake->calc_finished = ssl_calc_finished_tls_sha384; + return( MBEDTLS_SSL_TLS_PRF_SHA384 ); } else #endif #if defined(MBEDTLS_SHA256_C) - if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) + if( tls_prf == tls_prf_sha256 ) { - handshake->tls_prf = tls_prf_sha256; - handshake->calc_verify = ssl_calc_verify_tls_sha256; - handshake->calc_finished = ssl_calc_finished_tls_sha256; + return( MBEDTLS_SSL_TLS_PRF_SHA256 ); } else #endif #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } + return( MBEDTLS_SSL_TLS_PRF_NONE ); +} +#endif /* MBEDTLS_SSL_EXPORT_KEYS */ - /* - * SSLv3: - * master = - * MD5( premaster + SHA1( 'A' + premaster + randbytes ) ) + - * MD5( premaster + SHA1( 'BB' + premaster + randbytes ) ) + - * MD5( premaster + SHA1( 'CCC' + premaster + randbytes ) ) - * - * TLSv1+: - * master = PRF( premaster, "master secret", randbytes )[0..47] - */ - if( handshake->resume == 0 ) +int mbedtls_ssl_tls_prf( const mbedtls_tls_prf_types prf, + const unsigned char *secret, size_t slen, + const char *label, + const unsigned char *random, size_t rlen, + unsigned char *dstbuf, size_t dlen ) +{ + mbedtls_ssl_tls_prf_cb *tls_prf = NULL; + + switch( prf ) { - MBEDTLS_SSL_DEBUG_BUF( 3, "premaster secret", handshake->premaster, - handshake->pmslen ); +#if defined(MBEDTLS_SSL_PROTO_SSL3) + case MBEDTLS_SSL_TLS_PRF_SSL3: + tls_prf = ssl3_prf; + break; +#endif /* MBEDTLS_SSL_PROTO_SSL3 */ +#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) + case MBEDTLS_SSL_TLS_PRF_TLS1: + tls_prf = tls1_prf; + break; +#endif /* MBEDTLS_SSL_PROTO_TLS1 || MBEDTLS_SSL_PROTO_TLS1_1 */ -#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) - if( ssl->handshake->extended_ms == MBEDTLS_SSL_EXTENDED_MS_ENABLED ) - { - unsigned char session_hash[48]; - size_t hash_len; +#if defined(MBEDTLS_SSL_PROTO_TLS1_2) +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) + case MBEDTLS_SSL_TLS_PRF_SHA384: + tls_prf = tls_prf_sha384; + break; +#endif /* MBEDTLS_SHA512_C && !MBEDTLS_SHA512_NO_SHA384 */ +#if defined(MBEDTLS_SHA256_C) + case MBEDTLS_SSL_TLS_PRF_SHA256: + tls_prf = tls_prf_sha256; + break; +#endif /* MBEDTLS_SHA256_C */ +#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ + default: + return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); + } - MBEDTLS_SSL_DEBUG_MSG( 3, ( "using extended master secret" ) ); + return( tls_prf( secret, slen, label, random, rlen, dstbuf, dlen ) ); +} - ssl->handshake->calc_verify( ssl, session_hash ); +/* Type for the TLS PRF */ +typedef int ssl_tls_prf_t(const unsigned char *, size_t, const char *, + const unsigned char *, size_t, + unsigned char *, size_t); -#if defined(MBEDTLS_SSL_PROTO_TLS1_2) - if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) - { -#if defined(MBEDTLS_SHA512_C) - if( ssl->transform_negotiate->ciphersuite_info->mac == - MBEDTLS_MD_SHA384 ) - { - hash_len = 48; - } - else +/* + * Populate a transform structure with session keys and all the other + * necessary information. + * + * Parameters: + * - [in/out]: transform: structure to populate + * [in] must be just initialised with mbedtls_ssl_transform_init() + * [out] fully populated, ready for use by mbedtls_ssl_{en,de}crypt_buf() + * - [in] ciphersuite + * - [in] master + * - [in] encrypt_then_mac + * - [in] trunc_hmac + * - [in] compression + * - [in] tls_prf: pointer to PRF to use for key derivation + * - [in] randbytes: buffer holding ServerHello.random + ClientHello.random + * - [in] minor_ver: SSL/TLS minor version + * - [in] endpoint: client or server + * - [in] ssl: optionally used for: + * - MBEDTLS_SSL_HW_RECORD_ACCEL: whole context (non-const) + * - MBEDTLS_SSL_EXPORT_KEYS: ssl->conf->{f,p}_export_keys + * - MBEDTLS_DEBUG_C: ssl->conf->{f,p}_dbg + */ +static int ssl_populate_transform( mbedtls_ssl_transform *transform, + int ciphersuite, + const unsigned char master[48], +#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC) +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) + int encrypt_then_mac, +#endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */ +#if defined(MBEDTLS_SSL_TRUNCATED_HMAC) + int trunc_hmac, +#endif /* MBEDTLS_SSL_TRUNCATED_HMAC */ +#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */ +#if defined(MBEDTLS_ZLIB_SUPPORT) + int compression, #endif - hash_len = 32; - } - else -#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ - hash_len = 36; - - MBEDTLS_SSL_DEBUG_BUF( 3, "session hash", session_hash, hash_len ); + ssl_tls_prf_t tls_prf, + const unsigned char randbytes[64], + int minor_ver, + unsigned endpoint, +#if !defined(MBEDTLS_SSL_HW_RECORD_ACCEL) + const +#endif + mbedtls_ssl_context *ssl ) +{ + int ret = 0; +#if defined(MBEDTLS_USE_PSA_CRYPTO) + int psa_fallthrough; +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + unsigned char keyblk[256]; + unsigned char *key1; + unsigned char *key2; + unsigned char *mac_enc; + unsigned char *mac_dec; + size_t mac_key_len = 0; + size_t iv_copy_len; + unsigned keylen; + const mbedtls_ssl_ciphersuite_t *ciphersuite_info; + const mbedtls_cipher_info_t *cipher_info; + const mbedtls_md_info_t *md_info; - ret = handshake->tls_prf( handshake->premaster, handshake->pmslen, - "extended master secret", - session_hash, hash_len, - session->master, 48 ); - if( ret != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "prf", ret ); - return( ret ); - } +#if !defined(MBEDTLS_SSL_HW_RECORD_ACCEL) && \ + !defined(MBEDTLS_SSL_EXPORT_KEYS) && \ + !defined(MBEDTLS_DEBUG_C) + ssl = NULL; /* make sure we don't use it except for those cases */ + (void) ssl; +#endif - } - else + /* + * Some data just needs copying into the structure + */ +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) && \ + defined(MBEDTLS_SSL_SOME_MODES_USE_MAC) + transform->encrypt_then_mac = encrypt_then_mac; #endif - ret = handshake->tls_prf( handshake->premaster, handshake->pmslen, - "master secret", - handshake->randbytes, 64, - session->master, 48 ); - if( ret != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "prf", ret ); - return( ret ); - } + transform->minor_ver = minor_ver; - mbedtls_platform_zeroize( handshake->premaster, - sizeof(handshake->premaster) ); - } - else - MBEDTLS_SSL_DEBUG_MSG( 3, ( "no premaster (session resumed)" ) ); +#if defined(MBEDTLS_SSL_CONTEXT_SERIALIZATION) + memcpy( transform->randbytes, randbytes, sizeof( transform->randbytes ) ); +#endif /* - * Swap the client and server random values. + * Get various info structures */ - memcpy( tmp, handshake->randbytes, 64 ); - memcpy( handshake->randbytes, tmp + 32, 32 ); - memcpy( handshake->randbytes + 32, tmp, 32 ); - mbedtls_platform_zeroize( tmp, sizeof( tmp ) ); + ciphersuite_info = mbedtls_ssl_ciphersuite_from_id( ciphersuite ); + if( ciphersuite_info == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "ciphersuite info for %d not found", + ciphersuite ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + + cipher_info = mbedtls_cipher_info_from_type( ciphersuite_info->cipher ); + if( cipher_info == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "cipher info for %u not found", + ciphersuite_info->cipher ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + + md_info = mbedtls_md_info_from_type( ciphersuite_info->mac ); + if( md_info == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "mbedtls_md info for %u not found", + (unsigned) ciphersuite_info->mac ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + /* Copy own and peer's CID if the use of the CID + * extension has been negotiated. */ + if( ssl->handshake->cid_in_use == MBEDTLS_SSL_CID_ENABLED ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "Copy CIDs into SSL transform" ) ); + + transform->in_cid_len = ssl->own_cid_len; + memcpy( transform->in_cid, ssl->own_cid, ssl->own_cid_len ); + MBEDTLS_SSL_DEBUG_BUF( 3, "Incoming CID", transform->in_cid, + transform->in_cid_len ); + + transform->out_cid_len = ssl->handshake->peer_cid_len; + memcpy( transform->out_cid, ssl->handshake->peer_cid, + ssl->handshake->peer_cid_len ); + MBEDTLS_SSL_DEBUG_BUF( 3, "Outgoing CID", transform->out_cid, + transform->out_cid_len ); + } +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ /* - * SSLv3: - * key block = - * MD5( master + SHA1( 'A' + master + randbytes ) ) + - * MD5( master + SHA1( 'BB' + master + randbytes ) ) + - * MD5( master + SHA1( 'CCC' + master + randbytes ) ) + - * MD5( master + SHA1( 'DDDD' + master + randbytes ) ) + - * ... - * - * TLSv1: - * key block = PRF( master, "key expansion", randbytes ) + * Compute key block using the PRF */ - ret = handshake->tls_prf( session->master, 48, "key expansion", - handshake->randbytes, 64, keyblk, 256 ); + ret = tls_prf( master, 48, "key expansion", randbytes, 64, keyblk, 256 ); if( ret != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "prf", ret ); @@ -792,56 +1066,70 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) } MBEDTLS_SSL_DEBUG_MSG( 3, ( "ciphersuite = %s", - mbedtls_ssl_get_ciphersuite_name( session->ciphersuite ) ) ); - MBEDTLS_SSL_DEBUG_BUF( 3, "master secret", session->master, 48 ); - MBEDTLS_SSL_DEBUG_BUF( 4, "random bytes", handshake->randbytes, 64 ); + mbedtls_ssl_get_ciphersuite_name( ciphersuite ) ) ); + MBEDTLS_SSL_DEBUG_BUF( 3, "master secret", master, 48 ); + MBEDTLS_SSL_DEBUG_BUF( 4, "random bytes", randbytes, 64 ); MBEDTLS_SSL_DEBUG_BUF( 4, "key block", keyblk, 256 ); - mbedtls_platform_zeroize( handshake->randbytes, - sizeof( handshake->randbytes ) ); - /* * Determine the appropriate key, IV and MAC length. */ - transform->keylen = cipher_info->key_bitlen / 8; + keylen = cipher_info->key_bitlen / 8; +#if defined(MBEDTLS_GCM_C) || \ + defined(MBEDTLS_CCM_C) || \ + defined(MBEDTLS_CHACHAPOLY_C) if( cipher_info->mode == MBEDTLS_MODE_GCM || cipher_info->mode == MBEDTLS_MODE_CCM || cipher_info->mode == MBEDTLS_MODE_CHACHAPOLY ) { - size_t taglen, explicit_ivlen; + size_t explicit_ivlen; transform->maclen = 0; mac_key_len = 0; - - /* All modes haves 96-bit IVs; - * GCM and CCM has 4 implicit and 8 explicit bytes - * ChachaPoly has all 12 bytes implicit + transform->taglen = + ciphersuite_info->flags & MBEDTLS_CIPHERSUITE_SHORT_TAG ? 8 : 16; + + /* All modes haves 96-bit IVs, but the length of the static parts vary + * with mode and version: + * - For GCM and CCM in TLS 1.2, there's a static IV of 4 Bytes + * (to be concatenated with a dynamically chosen IV of 8 Bytes) + * - For ChaChaPoly in TLS 1.2, and all modes in TLS 1.3, there's + * a static IV of 12 Bytes (to be XOR'ed with the 8 Byte record + * sequence number). */ transform->ivlen = 12; - if( cipher_info->mode == MBEDTLS_MODE_CHACHAPOLY ) +#if defined(MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL) + if( minor_ver == MBEDTLS_SSL_MINOR_VERSION_4 ) + { transform->fixed_ivlen = 12; + } else - transform->fixed_ivlen = 4; - - /* All modes have 128-bit tags, except CCM_8 (ciphersuite flag) */ - taglen = transform->ciphersuite_info->flags & - MBEDTLS_CIPHERSUITE_SHORT_TAG ? 8 : 16; - +#endif /* MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL */ + { + if( cipher_info->mode == MBEDTLS_MODE_CHACHAPOLY ) + transform->fixed_ivlen = 12; + else + transform->fixed_ivlen = 4; + } /* Minimum length of encrypted record */ explicit_ivlen = transform->ivlen - transform->fixed_ivlen; - transform->minlen = explicit_ivlen + taglen; + transform->minlen = explicit_ivlen + transform->taglen; } else +#endif /* MBEDTLS_GCM_C || MBEDTLS_CCM_C || MBEDTLS_CHACHAPOLY_C */ +#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC) + if( cipher_info->mode == MBEDTLS_MODE_STREAM || + cipher_info->mode == MBEDTLS_MODE_CBC ) { /* Initialize HMAC contexts */ if( ( ret = mbedtls_md_setup( &transform->md_ctx_enc, md_info, 1 ) ) != 0 || ( ret = mbedtls_md_setup( &transform->md_ctx_dec, md_info, 1 ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_md_setup", ret ); - return( ret ); + goto end; } /* Get MAC length */ @@ -854,7 +1142,7 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) * (rfc 6066 page 13 or rfc 2104 section 4), * so we only need to adjust the length here. */ - if( session->trunc_hmac == MBEDTLS_SSL_TRUNC_HMAC_ENABLED ) + if( trunc_hmac == MBEDTLS_SSL_TRUNC_HMAC_ENABLED ) { transform->maclen = MBEDTLS_SSL_TRUNCATED_HMAC_LEN; @@ -882,7 +1170,7 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) * 2. IV except for SSL3 and TLS 1.0 */ #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) - if( session->encrypt_then_mac == MBEDTLS_SSL_ETM_ENABLED ) + if( encrypt_then_mac == MBEDTLS_SSL_ETM_ENABLED ) { transform->minlen = transform->maclen + cipher_info->block_size; @@ -896,14 +1184,14 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) } #if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) - if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 || - ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_1 ) + if( minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 || + minor_ver == MBEDTLS_SSL_MINOR_VERSION_1 ) ; /* No need to adjust minlen */ else #endif #if defined(MBEDTLS_SSL_PROTO_TLS1_1) || defined(MBEDTLS_SSL_PROTO_TLS1_2) - if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_2 || - ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) + if( minor_ver == MBEDTLS_SSL_MINOR_VERSION_2 || + minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) { transform->minlen += transform->ivlen; } @@ -911,23 +1199,32 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) #endif { MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + ret = MBEDTLS_ERR_SSL_INTERNAL_ERROR; + goto end; } } } + else +#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */ + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } - MBEDTLS_SSL_DEBUG_MSG( 3, ( "keylen: %d, minlen: %d, ivlen: %d, maclen: %d", - transform->keylen, transform->minlen, transform->ivlen, - transform->maclen ) ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "keylen: %u, minlen: %u, ivlen: %u, maclen: %u", + (unsigned) keylen, + (unsigned) transform->minlen, + (unsigned) transform->ivlen, + (unsigned) transform->maclen ) ); /* * Finally setup the cipher contexts, IVs and MAC secrets. */ #if defined(MBEDTLS_SSL_CLI_C) - if( ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT ) + if( endpoint == MBEDTLS_SSL_IS_CLIENT ) { key1 = keyblk + mac_key_len * 2; - key2 = keyblk + mac_key_len * 2 + transform->keylen; + key2 = keyblk + mac_key_len * 2 + keylen; mac_enc = keyblk; mac_dec = keyblk + mac_key_len; @@ -937,16 +1234,16 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) */ iv_copy_len = ( transform->fixed_ivlen ) ? transform->fixed_ivlen : transform->ivlen; - memcpy( transform->iv_enc, key2 + transform->keylen, iv_copy_len ); - memcpy( transform->iv_dec, key2 + transform->keylen + iv_copy_len, + memcpy( transform->iv_enc, key2 + keylen, iv_copy_len ); + memcpy( transform->iv_dec, key2 + keylen + iv_copy_len, iv_copy_len ); } else #endif /* MBEDTLS_SSL_CLI_C */ #if defined(MBEDTLS_SSL_SRV_C) - if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER ) + if( endpoint == MBEDTLS_SSL_IS_SERVER ) { - key1 = keyblk + mac_key_len * 2 + transform->keylen; + key1 = keyblk + mac_key_len * 2 + keylen; key2 = keyblk + mac_key_len * 2; mac_enc = keyblk + mac_key_len; @@ -957,24 +1254,27 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) */ iv_copy_len = ( transform->fixed_ivlen ) ? transform->fixed_ivlen : transform->ivlen; - memcpy( transform->iv_dec, key1 + transform->keylen, iv_copy_len ); - memcpy( transform->iv_enc, key1 + transform->keylen + iv_copy_len, + memcpy( transform->iv_dec, key1 + keylen, iv_copy_len ); + memcpy( transform->iv_enc, key1 + keylen + iv_copy_len, iv_copy_len ); } else #endif /* MBEDTLS_SSL_SRV_C */ { MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + ret = MBEDTLS_ERR_SSL_INTERNAL_ERROR; + goto end; } +#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC) #if defined(MBEDTLS_SSL_PROTO_SSL3) - if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) + if( minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) { - if( mac_key_len > sizeof transform->mac_enc ) + if( mac_key_len > sizeof( transform->mac_enc ) ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + ret = MBEDTLS_ERR_SSL_INTERNAL_ERROR; + goto end; } memcpy( transform->mac_enc, mac_enc, mac_key_len ); @@ -984,64 +1284,160 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_SSL_PROTO_SSL3 */ #if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ defined(MBEDTLS_SSL_PROTO_TLS1_2) - if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_1 ) + if( minor_ver >= MBEDTLS_SSL_MINOR_VERSION_1 ) { /* For HMAC-based ciphersuites, initialize the HMAC transforms. For AEAD-based ciphersuites, there is nothing to do here. */ if( mac_key_len != 0 ) { - mbedtls_md_hmac_starts( &transform->md_ctx_enc, mac_enc, mac_key_len ); - mbedtls_md_hmac_starts( &transform->md_ctx_dec, mac_dec, mac_key_len ); + ret = mbedtls_md_hmac_starts( &transform->md_ctx_enc, + mac_enc, mac_key_len ); + if( ret != 0 ) + goto end; + ret = mbedtls_md_hmac_starts( &transform->md_ctx_dec, + mac_dec, mac_key_len ); + if( ret != 0 ) + goto end; } } else #endif { MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + ret = MBEDTLS_ERR_SSL_INTERNAL_ERROR; + goto end; } +#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */ #if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) if( mbedtls_ssl_hw_record_init != NULL ) { - int ret = 0; + ret = 0; MBEDTLS_SSL_DEBUG_MSG( 2, ( "going for mbedtls_ssl_hw_record_init()" ) ); - if( ( ret = mbedtls_ssl_hw_record_init( ssl, key1, key2, transform->keylen, + if( ( ret = mbedtls_ssl_hw_record_init( ssl, key1, key2, keylen, transform->iv_enc, transform->iv_dec, iv_copy_len, mac_enc, mac_dec, mac_key_len ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_hw_record_init", ret ); - return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + ret = MBEDTLS_ERR_SSL_HW_ACCEL_FAILED; + goto end; } } +#else + ((void) mac_dec); + ((void) mac_enc); #endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ #if defined(MBEDTLS_SSL_EXPORT_KEYS) if( ssl->conf->f_export_keys != NULL ) { ssl->conf->f_export_keys( ssl->conf->p_export_keys, - session->master, keyblk, - mac_key_len, transform->keylen, + master, keyblk, + mac_key_len, keylen, iv_copy_len ); } + + if( ssl->conf->f_export_keys_ext != NULL ) + { + ssl->conf->f_export_keys_ext( ssl->conf->p_export_keys, + master, keyblk, + mac_key_len, keylen, + iv_copy_len, + randbytes + 32, + randbytes, + tls_prf_get_type( tls_prf ) ); + } #endif +#if defined(MBEDTLS_USE_PSA_CRYPTO) + + /* Only use PSA-based ciphers for TLS-1.2. + * That's relevant at least for TLS-1.0, where + * we assume that mbedtls_cipher_crypt() updates + * the structure field for the IV, which the PSA-based + * implementation currently doesn't. */ +#if defined(MBEDTLS_SSL_PROTO_TLS1_2) + if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) + { + ret = mbedtls_cipher_setup_psa( &transform->cipher_ctx_enc, + cipher_info, transform->taglen ); + if( ret != 0 && ret != MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_setup_psa", ret ); + goto end; + } + + if( ret == 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "Successfully setup PSA-based encryption cipher context" ) ); + psa_fallthrough = 0; + } + else + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Failed to setup PSA-based cipher context for record encryption - fall through to default setup." ) ); + psa_fallthrough = 1; + } + } + else + psa_fallthrough = 1; +#else + psa_fallthrough = 1; +#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ + + if( psa_fallthrough == 1 ) +#endif /* MBEDTLS_USE_PSA_CRYPTO */ if( ( ret = mbedtls_cipher_setup( &transform->cipher_ctx_enc, cipher_info ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_setup", ret ); - return( ret ); + goto end; + } + +#if defined(MBEDTLS_USE_PSA_CRYPTO) + /* Only use PSA-based ciphers for TLS-1.2. + * That's relevant at least for TLS-1.0, where + * we assume that mbedtls_cipher_crypt() updates + * the structure field for the IV, which the PSA-based + * implementation currently doesn't. */ +#if defined(MBEDTLS_SSL_PROTO_TLS1_2) + if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) + { + ret = mbedtls_cipher_setup_psa( &transform->cipher_ctx_dec, + cipher_info, transform->taglen ); + if( ret != 0 && ret != MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_setup_psa", ret ); + goto end; + } + + if( ret == 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "Successfully setup PSA-based decryption cipher context" ) ); + psa_fallthrough = 0; + } + else + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Failed to setup PSA-based cipher context for record decryption - fall through to default setup." ) ); + psa_fallthrough = 1; + } } + else + psa_fallthrough = 1; +#else + psa_fallthrough = 1; +#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ + if( psa_fallthrough == 1 ) +#endif /* MBEDTLS_USE_PSA_CRYPTO */ if( ( ret = mbedtls_cipher_setup( &transform->cipher_ctx_dec, cipher_info ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_setup", ret ); - return( ret ); + goto end; } if( ( ret = mbedtls_cipher_setkey( &transform->cipher_ctx_enc, key1, @@ -1049,7 +1445,7 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) MBEDTLS_ENCRYPT ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_setkey", ret ); - return( ret ); + goto end; } if( ( ret = mbedtls_cipher_setkey( &transform->cipher_ctx_dec, key2, @@ -1057,7 +1453,7 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) MBEDTLS_DECRYPT ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_setkey", ret ); - return( ret ); + goto end; } #if defined(MBEDTLS_CIPHER_MODE_CBC) @@ -1067,37 +1463,23 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) MBEDTLS_PADDING_NONE ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_set_padding_mode", ret ); - return( ret ); + goto end; } if( ( ret = mbedtls_cipher_set_padding_mode( &transform->cipher_ctx_dec, MBEDTLS_PADDING_NONE ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_set_padding_mode", ret ); - return( ret ); + goto end; } } #endif /* MBEDTLS_CIPHER_MODE_CBC */ - mbedtls_platform_zeroize( keyblk, sizeof( keyblk ) ); + /* Initialize Zlib contexts */ #if defined(MBEDTLS_ZLIB_SUPPORT) - // Initialize compression - // - if( session->compression == MBEDTLS_SSL_COMPRESS_DEFLATE ) + if( compression == MBEDTLS_SSL_COMPRESS_DEFLATE ) { - if( ssl->compress_buf == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 3, ( "Allocating compression buffer" ) ); - ssl->compress_buf = mbedtls_calloc( 1, MBEDTLS_SSL_COMPRESS_BUFFER_LEN ); - if( ssl->compress_buf == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", - MBEDTLS_SSL_COMPRESS_BUFFER_LEN ) ); - return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); - } - } - MBEDTLS_SSL_DEBUG_MSG( 3, ( "Initializing zlib states" ) ); memset( &transform->ctx_deflate, 0, sizeof( transform->ctx_deflate ) ); @@ -1108,37 +1490,336 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) inflateInit( &transform->ctx_inflate ) != Z_OK ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "Failed to initialize compression" ) ); - return( MBEDTLS_ERR_SSL_COMPRESSION_FAILED ); + ret = MBEDTLS_ERR_SSL_COMPRESSION_FAILED; + goto end; } } #endif /* MBEDTLS_ZLIB_SUPPORT */ - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= derive keys" ) ); - - return( 0 ); +end: + mbedtls_platform_zeroize( keyblk, sizeof( keyblk ) ); + return( ret ); } -#if defined(MBEDTLS_SSL_PROTO_SSL3) -void ssl_calc_verify_ssl( mbedtls_ssl_context *ssl, unsigned char hash[36] ) +/* + * Set appropriate PRF function and other SSL / TLS 1.0/1.1 / TLS1.2 functions + * + * Inputs: + * - SSL/TLS minor version + * - hash associated with the ciphersuite (only used by TLS 1.2) + * + * Outputs: + * - the tls_prf, calc_verify and calc_finished members of handshake structure + */ +static int ssl_set_handshake_prfs( mbedtls_ssl_handshake_params *handshake, + int minor_ver, + mbedtls_md_type_t hash ) { - mbedtls_md5_context md5; - mbedtls_sha1_context sha1; - unsigned char pad_1[48]; - unsigned char pad_2[48]; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> calc verify ssl" ) ); - - mbedtls_md5_init( &md5 ); - mbedtls_sha1_init( &sha1 ); - - mbedtls_md5_clone( &md5, &ssl->handshake->fin_md5 ); - mbedtls_sha1_clone( &sha1, &ssl->handshake->fin_sha1 ); - - memset( pad_1, 0x36, 48 ); - memset( pad_2, 0x5C, 48 ); +#if !defined(MBEDTLS_SSL_PROTO_TLS1_2) || \ + !( defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) ) + (void) hash; +#endif - mbedtls_md5_update_ret( &md5, ssl->session_negotiate->master, 48 ); - mbedtls_md5_update_ret( &md5, pad_1, 48 ); +#if defined(MBEDTLS_SSL_PROTO_SSL3) + if( minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) + { + handshake->tls_prf = ssl3_prf; + handshake->calc_verify = ssl_calc_verify_ssl; + handshake->calc_finished = ssl_calc_finished_ssl; + } + else +#endif +#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) + if( minor_ver < MBEDTLS_SSL_MINOR_VERSION_3 ) + { + handshake->tls_prf = tls1_prf; + handshake->calc_verify = ssl_calc_verify_tls; + handshake->calc_finished = ssl_calc_finished_tls; + } + else +#endif +#if defined(MBEDTLS_SSL_PROTO_TLS1_2) +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) + if( minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 && + hash == MBEDTLS_MD_SHA384 ) + { + handshake->tls_prf = tls_prf_sha384; + handshake->calc_verify = ssl_calc_verify_tls_sha384; + handshake->calc_finished = ssl_calc_finished_tls_sha384; + } + else +#endif +#if defined(MBEDTLS_SHA256_C) + if( minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) + { + handshake->tls_prf = tls_prf_sha256; + handshake->calc_verify = ssl_calc_verify_tls_sha256; + handshake->calc_finished = ssl_calc_finished_tls_sha256; + } + else +#endif +#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ + { + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + return( 0 ); +} + +/* + * Compute master secret if needed + * + * Parameters: + * [in/out] handshake + * [in] resume, premaster, extended_ms, calc_verify, tls_prf + * (PSA-PSK) ciphersuite_info, psk_opaque + * [out] premaster (cleared) + * [out] master + * [in] ssl: optionally used for debugging, EMS and PSA-PSK + * debug: conf->f_dbg, conf->p_dbg + * EMS: passed to calc_verify (debug + (SSL3) session_negotiate) + * PSA-PSA: minor_ver, conf + */ +static int ssl_compute_master( mbedtls_ssl_handshake_params *handshake, + unsigned char *master, + const mbedtls_ssl_context *ssl ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + /* cf. RFC 5246, Section 8.1: + * "The master secret is always exactly 48 bytes in length." */ + size_t const master_secret_len = 48; + +#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) + unsigned char session_hash[48]; +#endif /* MBEDTLS_SSL_EXTENDED_MASTER_SECRET */ + + /* The label for the KDF used for key expansion. + * This is either "master secret" or "extended master secret" + * depending on whether the Extended Master Secret extension + * is used. */ + char const *lbl = "master secret"; + + /* The salt for the KDF used for key expansion. + * - If the Extended Master Secret extension is not used, + * this is ClientHello.Random + ServerHello.Random + * (see Sect. 8.1 in RFC 5246). + * - If the Extended Master Secret extension is used, + * this is the transcript of the handshake so far. + * (see Sect. 4 in RFC 7627). */ + unsigned char const *salt = handshake->randbytes; + size_t salt_len = 64; + +#if !defined(MBEDTLS_DEBUG_C) && \ + !defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) && \ + !(defined(MBEDTLS_USE_PSA_CRYPTO) && \ + defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED)) + ssl = NULL; /* make sure we don't use it except for those cases */ + (void) ssl; +#endif + + if( handshake->resume != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "no premaster (session resumed)" ) ); + return( 0 ); + } + +#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) + if( handshake->extended_ms == MBEDTLS_SSL_EXTENDED_MS_ENABLED ) + { + lbl = "extended master secret"; + salt = session_hash; + handshake->calc_verify( ssl, session_hash, &salt_len ); + + MBEDTLS_SSL_DEBUG_BUF( 3, "session hash for extended master secret", + session_hash, salt_len ); + } +#endif /* MBEDTLS_SSL_EXTENDED_MS_ENABLED */ + +#if defined(MBEDTLS_USE_PSA_CRYPTO) && \ + defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) + if( handshake->ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK && + ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 && + ssl_use_opaque_psk( ssl ) == 1 ) + { + /* Perform PSK-to-MS expansion in a single step. */ + psa_status_t status; + psa_algorithm_t alg; + psa_key_id_t psk; + psa_key_derivation_operation_t derivation = + PSA_KEY_DERIVATION_OPERATION_INIT; + mbedtls_md_type_t hash_alg = handshake->ciphersuite_info->mac; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "perform PSA-based PSK-to-MS expansion" ) ); + + psk = mbedtls_ssl_get_opaque_psk( ssl ); + + if( hash_alg == MBEDTLS_MD_SHA384 ) + alg = PSA_ALG_TLS12_PSK_TO_MS(PSA_ALG_SHA_384); + else + alg = PSA_ALG_TLS12_PSK_TO_MS(PSA_ALG_SHA_256); + + status = setup_psa_key_derivation( &derivation, psk, alg, + salt, salt_len, + (unsigned char const *) lbl, + (size_t) strlen( lbl ), + master_secret_len ); + if( status != PSA_SUCCESS ) + { + psa_key_derivation_abort( &derivation ); + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + } + + status = psa_key_derivation_output_bytes( &derivation, + master, + master_secret_len ); + if( status != PSA_SUCCESS ) + { + psa_key_derivation_abort( &derivation ); + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + } + + status = psa_key_derivation_abort( &derivation ); + if( status != PSA_SUCCESS ) + return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); + } + else +#endif + { + ret = handshake->tls_prf( handshake->premaster, handshake->pmslen, + lbl, salt, salt_len, + master, + master_secret_len ); + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "prf", ret ); + return( ret ); + } + + MBEDTLS_SSL_DEBUG_BUF( 3, "premaster secret", + handshake->premaster, + handshake->pmslen ); + + mbedtls_platform_zeroize( handshake->premaster, + sizeof(handshake->premaster) ); + } + + return( 0 ); +} + +int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + const mbedtls_ssl_ciphersuite_t * const ciphersuite_info = + ssl->handshake->ciphersuite_info; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> derive keys" ) ); + + /* Set PRF, calc_verify and calc_finished function pointers */ + ret = ssl_set_handshake_prfs( ssl->handshake, + ssl->minor_ver, + ciphersuite_info->mac ); + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_set_handshake_prfs", ret ); + return( ret ); + } + + /* Compute master secret if needed */ + ret = ssl_compute_master( ssl->handshake, + ssl->session_negotiate->master, + ssl ); + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_compute_master", ret ); + return( ret ); + } + + /* Swap the client and server random values: + * - MS derivation wanted client+server (RFC 5246 8.1) + * - key derivation wants server+client (RFC 5246 6.3) */ + { + unsigned char tmp[64]; + memcpy( tmp, ssl->handshake->randbytes, 64 ); + memcpy( ssl->handshake->randbytes, tmp + 32, 32 ); + memcpy( ssl->handshake->randbytes + 32, tmp, 32 ); + mbedtls_platform_zeroize( tmp, sizeof( tmp ) ); + } + + /* Populate transform structure */ + ret = ssl_populate_transform( ssl->transform_negotiate, + ssl->session_negotiate->ciphersuite, + ssl->session_negotiate->master, +#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC) +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) + ssl->session_negotiate->encrypt_then_mac, +#endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */ +#if defined(MBEDTLS_SSL_TRUNCATED_HMAC) + ssl->session_negotiate->trunc_hmac, +#endif /* MBEDTLS_SSL_TRUNCATED_HMAC */ +#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */ +#if defined(MBEDTLS_ZLIB_SUPPORT) + ssl->session_negotiate->compression, +#endif + ssl->handshake->tls_prf, + ssl->handshake->randbytes, + ssl->minor_ver, + ssl->conf->endpoint, + ssl ); + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_populate_transform", ret ); + return( ret ); + } + + /* We no longer need Server/ClientHello.random values */ + mbedtls_platform_zeroize( ssl->handshake->randbytes, + sizeof( ssl->handshake->randbytes ) ); + + /* Allocate compression buffer */ +#if defined(MBEDTLS_ZLIB_SUPPORT) + if( ssl->session_negotiate->compression == MBEDTLS_SSL_COMPRESS_DEFLATE && + ssl->compress_buf == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "Allocating compression buffer" ) ); + ssl->compress_buf = mbedtls_calloc( 1, MBEDTLS_SSL_COMPRESS_BUFFER_LEN ); + if( ssl->compress_buf == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", + MBEDTLS_SSL_COMPRESS_BUFFER_LEN ) ); + return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); + } + } +#endif + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= derive keys" ) ); + + return( 0 ); +} + +#if defined(MBEDTLS_SSL_PROTO_SSL3) +void ssl_calc_verify_ssl( const mbedtls_ssl_context *ssl, + unsigned char *hash, + size_t *hlen ) +{ + mbedtls_md5_context md5; + mbedtls_sha1_context sha1; + unsigned char pad_1[48]; + unsigned char pad_2[48]; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> calc verify ssl" ) ); + + mbedtls_md5_init( &md5 ); + mbedtls_sha1_init( &sha1 ); + + mbedtls_md5_clone( &md5, &ssl->handshake->fin_md5 ); + mbedtls_sha1_clone( &sha1, &ssl->handshake->fin_sha1 ); + + memset( pad_1, 0x36, 48 ); + memset( pad_2, 0x5C, 48 ); + + mbedtls_md5_update_ret( &md5, ssl->session_negotiate->master, 48 ); + mbedtls_md5_update_ret( &md5, pad_1, 48 ); mbedtls_md5_finish_ret( &md5, hash ); mbedtls_md5_starts_ret( &md5 ); @@ -1157,7 +1838,9 @@ void ssl_calc_verify_ssl( mbedtls_ssl_context *ssl, unsigned char hash[36] ) mbedtls_sha1_update_ret( &sha1, hash + 16, 20 ); mbedtls_sha1_finish_ret( &sha1, hash + 16 ); - MBEDTLS_SSL_DEBUG_BUF( 3, "calculated verify result", hash, 36 ); + *hlen = 36; + + MBEDTLS_SSL_DEBUG_BUF( 3, "calculated verify result", hash, *hlen ); MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= calc verify" ) ); mbedtls_md5_free( &md5 ); @@ -1168,7 +1851,9 @@ void ssl_calc_verify_ssl( mbedtls_ssl_context *ssl, unsigned char hash[36] ) #endif /* MBEDTLS_SSL_PROTO_SSL3 */ #if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) -void ssl_calc_verify_tls( mbedtls_ssl_context *ssl, unsigned char hash[36] ) +void ssl_calc_verify_tls( const mbedtls_ssl_context *ssl, + unsigned char *hash, + size_t *hlen ) { mbedtls_md5_context md5; mbedtls_sha1_context sha1; @@ -1181,10 +1866,12 @@ void ssl_calc_verify_tls( mbedtls_ssl_context *ssl, unsigned char hash[36] ) mbedtls_md5_clone( &md5, &ssl->handshake->fin_md5 ); mbedtls_sha1_clone( &sha1, &ssl->handshake->fin_sha1 ); - mbedtls_md5_finish_ret( &md5, hash ); + mbedtls_md5_finish_ret( &md5, hash ); mbedtls_sha1_finish_ret( &sha1, hash + 16 ); - MBEDTLS_SSL_DEBUG_BUF( 3, "calculated verify result", hash, 36 ); + *hlen = 36; + + MBEDTLS_SSL_DEBUG_BUF( 3, "calculated verify result", hash, *hlen ); MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= calc verify" ) ); mbedtls_md5_free( &md5 ); @@ -1196,8 +1883,34 @@ void ssl_calc_verify_tls( mbedtls_ssl_context *ssl, unsigned char hash[36] ) #if defined(MBEDTLS_SSL_PROTO_TLS1_2) #if defined(MBEDTLS_SHA256_C) -void ssl_calc_verify_tls_sha256( mbedtls_ssl_context *ssl, unsigned char hash[32] ) +void ssl_calc_verify_tls_sha256( const mbedtls_ssl_context *ssl, + unsigned char *hash, + size_t *hlen ) { +#if defined(MBEDTLS_USE_PSA_CRYPTO) + size_t hash_size; + psa_status_t status; + psa_hash_operation_t sha256_psa = psa_hash_operation_init(); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> PSA calc verify sha256" ) ); + status = psa_hash_clone( &ssl->handshake->fin_sha256_psa, &sha256_psa ); + if( status != PSA_SUCCESS ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "PSA hash clone failed" ) ); + return; + } + + status = psa_hash_finish( &sha256_psa, hash, 32, &hash_size ); + if( status != PSA_SUCCESS ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "PSA hash finish failed" ) ); + return; + } + + *hlen = 32; + MBEDTLS_SSL_DEBUG_BUF( 3, "PSA calculated verify result", hash, *hlen ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= PSA calc verify" ) ); +#else mbedtls_sha256_context sha256; mbedtls_sha256_init( &sha256 ); @@ -1207,18 +1920,46 @@ void ssl_calc_verify_tls_sha256( mbedtls_ssl_context *ssl, unsigned char hash[32 mbedtls_sha256_clone( &sha256, &ssl->handshake->fin_sha256 ); mbedtls_sha256_finish_ret( &sha256, hash ); - MBEDTLS_SSL_DEBUG_BUF( 3, "calculated verify result", hash, 32 ); + *hlen = 32; + + MBEDTLS_SSL_DEBUG_BUF( 3, "calculated verify result", hash, *hlen ); MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= calc verify" ) ); mbedtls_sha256_free( &sha256 ); - +#endif /* MBEDTLS_USE_PSA_CRYPTO */ return; } #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) -void ssl_calc_verify_tls_sha384( mbedtls_ssl_context *ssl, unsigned char hash[48] ) +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) +void ssl_calc_verify_tls_sha384( const mbedtls_ssl_context *ssl, + unsigned char *hash, + size_t *hlen ) { +#if defined(MBEDTLS_USE_PSA_CRYPTO) + size_t hash_size; + psa_status_t status; + psa_hash_operation_t sha384_psa = psa_hash_operation_init(); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> PSA calc verify sha384" ) ); + status = psa_hash_clone( &ssl->handshake->fin_sha384_psa, &sha384_psa ); + if( status != PSA_SUCCESS ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "PSA hash clone failed" ) ); + return; + } + + status = psa_hash_finish( &sha384_psa, hash, 48, &hash_size ); + if( status != PSA_SUCCESS ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "PSA hash finish failed" ) ); + return; + } + + *hlen = 48; + MBEDTLS_SSL_DEBUG_BUF( 3, "PSA calculated verify result", hash, *hlen ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= PSA calc verify" ) ); +#else mbedtls_sha512_context sha512; mbedtls_sha512_init( &sha512 ); @@ -1228,29 +1969,35 @@ void ssl_calc_verify_tls_sha384( mbedtls_ssl_context *ssl, unsigned char hash[48 mbedtls_sha512_clone( &sha512, &ssl->handshake->fin_sha512 ); mbedtls_sha512_finish_ret( &sha512, hash ); - MBEDTLS_SSL_DEBUG_BUF( 3, "calculated verify result", hash, 48 ); + *hlen = 48; + + MBEDTLS_SSL_DEBUG_BUF( 3, "calculated verify result", hash, *hlen ); MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= calc verify" ) ); mbedtls_sha512_free( &sha512 ); - +#endif /* MBEDTLS_USE_PSA_CRYPTO */ return; } -#endif /* MBEDTLS_SHA512_C */ +#endif /* MBEDTLS_SHA512_C && !MBEDTLS_SHA512_NO_SHA384 */ #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) int mbedtls_ssl_psk_derive_premaster( mbedtls_ssl_context *ssl, mbedtls_key_exchange_type_t key_ex ) { unsigned char *p = ssl->handshake->premaster; unsigned char *end = p + sizeof( ssl->handshake->premaster ); - const unsigned char *psk = ssl->conf->psk; - size_t psk_len = ssl->conf->psk_len; + const unsigned char *psk = NULL; + size_t psk_len = 0; - /* If the psk callback was called, use its result */ - if( ssl->handshake->psk != NULL ) + if( mbedtls_ssl_get_psk( ssl, &psk, &psk_len ) + == MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED ) { - psk = ssl->handshake->psk; - psk_len = ssl->handshake->psk_len; + /* + * This should never happen because the existence of a PSK is always + * checked before calling this function + */ + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } /* @@ -1266,8 +2013,8 @@ int mbedtls_ssl_psk_derive_premaster( mbedtls_ssl_context *ssl, mbedtls_key_exch if( end - p < 2 ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - *(p++) = (unsigned char)( psk_len >> 8 ); - *(p++) = (unsigned char)( psk_len ); + MBEDTLS_PUT_UINT16_BE( psk_len, p, 0 ); + p += 2; if( end < p || (size_t)( end - p ) < psk_len ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); @@ -1296,7 +2043,7 @@ int mbedtls_ssl_psk_derive_premaster( mbedtls_ssl_context *ssl, mbedtls_key_exch #if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) if( key_ex == MBEDTLS_KEY_EXCHANGE_DHE_PSK ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; /* Write length only when we know the actual value */ @@ -1307,9 +2054,8 @@ int mbedtls_ssl_psk_derive_premaster( mbedtls_ssl_context *ssl, mbedtls_key_exch MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_dhm_calc_secret", ret ); return( ret ); } - *(p++) = (unsigned char)( len >> 8 ); - *(p++) = (unsigned char)( len ); - p += len; + MBEDTLS_PUT_UINT16_BE( len, p, 0 ); + p += 2 + len; MBEDTLS_SSL_DEBUG_MPI( 3, "DHM: K ", &ssl->handshake->dhm_ctx.K ); } @@ -1318,7 +2064,7 @@ int mbedtls_ssl_psk_derive_premaster( mbedtls_ssl_context *ssl, mbedtls_key_exch #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) if( key_ex == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t zlen; if( ( ret = mbedtls_ecdh_calc_secret( &ssl->handshake->ecdh_ctx, &zlen, @@ -1329,9 +2075,8 @@ int mbedtls_ssl_psk_derive_premaster( mbedtls_ssl_context *ssl, mbedtls_key_exch return( ret ); } - *(p++) = (unsigned char)( zlen >> 8 ); - *(p++) = (unsigned char)( zlen ); - p += zlen; + MBEDTLS_PUT_UINT16_BE( zlen, p, 0 ); + p += 2 + zlen; MBEDTLS_SSL_DEBUG_ECDH( 3, &ssl->handshake->ecdh_ctx, MBEDTLS_DEBUG_ECDH_Z ); @@ -1347,8 +2092,8 @@ int mbedtls_ssl_psk_derive_premaster( mbedtls_ssl_context *ssl, mbedtls_key_exch if( end - p < 2 ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - *(p++) = (unsigned char)( psk_len >> 8 ); - *(p++) = (unsigned char)( psk_len ); + MBEDTLS_PUT_UINT16_BE( psk_len, p, 0 ); + p += 2; if( end < p || (size_t)( end - p ) < psk_len ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); @@ -1360,3952 +2105,93 @@ int mbedtls_ssl_psk_derive_premaster( mbedtls_ssl_context *ssl, mbedtls_key_exch return( 0 ); } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */ - -#if defined(MBEDTLS_SSL_PROTO_SSL3) -/* - * SSLv3.0 MAC functions - */ -#define SSL_MAC_MAX_BYTES 20 /* MD-5 or SHA-1 */ -static void ssl_mac( mbedtls_md_context_t *md_ctx, - const unsigned char *secret, - const unsigned char *buf, size_t len, - const unsigned char *ctr, int type, - unsigned char out[SSL_MAC_MAX_BYTES] ) -{ - unsigned char header[11]; - unsigned char padding[48]; - int padlen; - int md_size = mbedtls_md_get_size( md_ctx->md_info ); - int md_type = mbedtls_md_get_type( md_ctx->md_info ); - - /* Only MD5 and SHA-1 supported */ - if( md_type == MBEDTLS_MD_MD5 ) - padlen = 48; - else - padlen = 40; - - memcpy( header, ctr, 8 ); - header[ 8] = (unsigned char) type; - header[ 9] = (unsigned char)( len >> 8 ); - header[10] = (unsigned char)( len ); - - memset( padding, 0x36, padlen ); - mbedtls_md_starts( md_ctx ); - mbedtls_md_update( md_ctx, secret, md_size ); - mbedtls_md_update( md_ctx, padding, padlen ); - mbedtls_md_update( md_ctx, header, 11 ); - mbedtls_md_update( md_ctx, buf, len ); - mbedtls_md_finish( md_ctx, out ); - - memset( padding, 0x5C, padlen ); - mbedtls_md_starts( md_ctx ); - mbedtls_md_update( md_ctx, secret, md_size ); - mbedtls_md_update( md_ctx, padding, padlen ); - mbedtls_md_update( md_ctx, out, md_size ); - mbedtls_md_finish( md_ctx, out ); -} -#endif /* MBEDTLS_SSL_PROTO_SSL3 */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ -#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) || \ - ( defined(MBEDTLS_CIPHER_MODE_CBC) && \ - ( defined(MBEDTLS_AES_C) || defined(MBEDTLS_CAMELLIA_C) || defined(MBEDTLS_ARIA_C)) ) -#define SSL_SOME_MODES_USE_MAC -#endif +#if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_RENEGOTIATION) +static int ssl_write_hello_request( mbedtls_ssl_context *ssl ); -/* The function below is only used in the Lucky 13 counter-measure in - * ssl_decrypt_buf(). These are the defines that guard the call site. */ -#if defined(SSL_SOME_MODES_USE_MAC) && \ - ( defined(MBEDTLS_SSL_PROTO_TLS1) || \ - defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ - defined(MBEDTLS_SSL_PROTO_TLS1_2) ) -/* This function makes sure every byte in the memory region is accessed - * (in ascending addresses order) */ -static void ssl_read_memory( unsigned char *p, size_t len ) +#if defined(MBEDTLS_SSL_PROTO_DTLS) +int mbedtls_ssl_resend_hello_request( mbedtls_ssl_context *ssl ) { - unsigned char acc = 0; - volatile unsigned char force; + /* If renegotiation is not enforced, retransmit until we would reach max + * timeout if we were using the usual handshake doubling scheme */ + if( ssl->conf->renego_max_records < 0 ) + { + uint32_t ratio = ssl->conf->hs_timeout_max / ssl->conf->hs_timeout_min + 1; + unsigned char doublings = 1; - for( ; len != 0; p++, len-- ) - acc ^= *p; + while( ratio != 0 ) + { + ++doublings; + ratio >>= 1; + } + + if( ++ssl->renego_records_seen > doublings ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "no longer retransmitting hello request" ) ); + return( 0 ); + } + } + + return( ssl_write_hello_request( ssl ) ); +} +#endif +#endif /* MBEDTLS_SSL_SRV_C && MBEDTLS_SSL_RENEGOTIATION */ - force = acc; - (void) force; +#if defined(MBEDTLS_X509_CRT_PARSE_C) +static void ssl_clear_peer_cert( mbedtls_ssl_session *session ) +{ +#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + if( session->peer_cert != NULL ) + { + mbedtls_x509_crt_free( session->peer_cert ); + mbedtls_free( session->peer_cert ); + session->peer_cert = NULL; + } +#else /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + if( session->peer_cert_digest != NULL ) + { + /* Zeroization is not necessary. */ + mbedtls_free( session->peer_cert_digest ); + session->peer_cert_digest = NULL; + session->peer_cert_digest_type = MBEDTLS_MD_NONE; + session->peer_cert_digest_len = 0; + } +#endif /* !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ } -#endif /* SSL_SOME_MODES_USE_MAC && ( TLS1 || TLS1_1 || TLS1_2 ) */ +#endif /* MBEDTLS_X509_CRT_PARSE_C */ /* - * Encryption/decryption functions + * Handshake functions */ -static int ssl_encrypt_buf( mbedtls_ssl_context *ssl ) +#if !defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) +/* No certificate support -> dummy functions */ +int mbedtls_ssl_write_certificate( mbedtls_ssl_context *ssl ) { - mbedtls_cipher_mode_t mode; - int auth_done = 0; + const mbedtls_ssl_ciphersuite_t *ciphersuite_info = + ssl->handshake->ciphersuite_info; - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> encrypt buf" ) ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write certificate" ) ); - if( ssl->session_out == NULL || ssl->transform_out == NULL ) + if( !mbedtls_ssl_ciphersuite_uses_srv_cert( ciphersuite_info ) ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip write certificate" ) ); + ssl->state++; + return( 0 ); } - mode = mbedtls_cipher_get_cipher_mode( &ssl->transform_out->cipher_ctx_enc ); + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); +} + +int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) +{ + const mbedtls_ssl_ciphersuite_t *ciphersuite_info = + ssl->handshake->ciphersuite_info; - MBEDTLS_SSL_DEBUG_BUF( 4, "before encrypt: output payload", - ssl->out_msg, ssl->out_msglen ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse certificate" ) ); - /* - * Add MAC before if needed - */ -#if defined(SSL_SOME_MODES_USE_MAC) - if( mode == MBEDTLS_MODE_STREAM || - ( mode == MBEDTLS_MODE_CBC -#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) - && ssl->session_out->encrypt_then_mac == MBEDTLS_SSL_ETM_DISABLED -#endif - ) ) - { -#if defined(MBEDTLS_SSL_PROTO_SSL3) - if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) - { - unsigned char mac[SSL_MAC_MAX_BYTES]; - - ssl_mac( &ssl->transform_out->md_ctx_enc, - ssl->transform_out->mac_enc, - ssl->out_msg, ssl->out_msglen, - ssl->out_ctr, ssl->out_msgtype, - mac ); - - memcpy( ssl->out_msg + ssl->out_msglen, mac, ssl->transform_out->maclen ); - } - else -#endif -#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ - defined(MBEDTLS_SSL_PROTO_TLS1_2) - if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_1 ) - { - unsigned char mac[MBEDTLS_SSL_MAC_ADD]; - - mbedtls_md_hmac_update( &ssl->transform_out->md_ctx_enc, ssl->out_ctr, 8 ); - mbedtls_md_hmac_update( &ssl->transform_out->md_ctx_enc, ssl->out_hdr, 3 ); - mbedtls_md_hmac_update( &ssl->transform_out->md_ctx_enc, ssl->out_len, 2 ); - mbedtls_md_hmac_update( &ssl->transform_out->md_ctx_enc, - ssl->out_msg, ssl->out_msglen ); - mbedtls_md_hmac_finish( &ssl->transform_out->md_ctx_enc, mac ); - mbedtls_md_hmac_reset( &ssl->transform_out->md_ctx_enc ); - - memcpy( ssl->out_msg + ssl->out_msglen, mac, ssl->transform_out->maclen ); - } - else -#endif - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - MBEDTLS_SSL_DEBUG_BUF( 4, "computed mac", - ssl->out_msg + ssl->out_msglen, - ssl->transform_out->maclen ); - - ssl->out_msglen += ssl->transform_out->maclen; - auth_done++; - } -#endif /* AEAD not the only option */ - - /* - * Encrypt - */ -#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) - if( mode == MBEDTLS_MODE_STREAM ) - { - int ret; - size_t olen = 0; - - MBEDTLS_SSL_DEBUG_MSG( 3, ( "before encrypt: msglen = %d, " - "including %d bytes of padding", - ssl->out_msglen, 0 ) ); - - if( ( ret = mbedtls_cipher_crypt( &ssl->transform_out->cipher_ctx_enc, - ssl->transform_out->iv_enc, - ssl->transform_out->ivlen, - ssl->out_msg, ssl->out_msglen, - ssl->out_msg, &olen ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_crypt", ret ); - return( ret ); - } - - if( ssl->out_msglen != olen ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - } - else -#endif /* MBEDTLS_ARC4_C || MBEDTLS_CIPHER_NULL_CIPHER */ -#if defined(MBEDTLS_GCM_C) || \ - defined(MBEDTLS_CCM_C) || \ - defined(MBEDTLS_CHACHAPOLY_C) - if( mode == MBEDTLS_MODE_GCM || - mode == MBEDTLS_MODE_CCM || - mode == MBEDTLS_MODE_CHACHAPOLY ) - { - int ret; - size_t enc_msglen, olen; - unsigned char *enc_msg; - unsigned char add_data[13]; - unsigned char iv[12]; - mbedtls_ssl_transform *transform = ssl->transform_out; - unsigned char taglen = transform->ciphersuite_info->flags & - MBEDTLS_CIPHERSUITE_SHORT_TAG ? 8 : 16; - size_t explicit_ivlen = transform->ivlen - transform->fixed_ivlen; - - /* - * Prepare additional authenticated data - */ - memcpy( add_data, ssl->out_ctr, 8 ); - add_data[8] = ssl->out_msgtype; - mbedtls_ssl_write_version( ssl->major_ver, ssl->minor_ver, - ssl->conf->transport, add_data + 9 ); - add_data[11] = ( ssl->out_msglen >> 8 ) & 0xFF; - add_data[12] = ssl->out_msglen & 0xFF; - - MBEDTLS_SSL_DEBUG_BUF( 4, "additional data for AEAD", add_data, 13 ); - - /* - * Generate IV - */ - if( transform->ivlen == 12 && transform->fixed_ivlen == 4 ) - { - /* GCM and CCM: fixed || explicit (=seqnum) */ - memcpy( iv, transform->iv_enc, transform->fixed_ivlen ); - memcpy( iv + transform->fixed_ivlen, ssl->out_ctr, 8 ); - memcpy( ssl->out_iv, ssl->out_ctr, 8 ); - - } - else if( transform->ivlen == 12 && transform->fixed_ivlen == 12 ) - { - /* ChachaPoly: fixed XOR sequence number */ - unsigned char i; - - memcpy( iv, transform->iv_enc, transform->fixed_ivlen ); - - for( i = 0; i < 8; i++ ) - iv[i+4] ^= ssl->out_ctr[i]; - } - else - { - /* Reminder if we ever add an AEAD mode with a different size */ - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - MBEDTLS_SSL_DEBUG_BUF( 4, "IV used (internal)", - iv, transform->ivlen ); - MBEDTLS_SSL_DEBUG_BUF( 4, "IV used (transmitted)", - ssl->out_iv, explicit_ivlen ); - - /* - * Fix message length with added IV - */ - enc_msg = ssl->out_msg; - enc_msglen = ssl->out_msglen; - ssl->out_msglen += explicit_ivlen; - - MBEDTLS_SSL_DEBUG_MSG( 3, ( "before encrypt: msglen = %d, " - "including 0 bytes of padding", - ssl->out_msglen ) ); - - /* - * Encrypt and authenticate - */ - if( ( ret = mbedtls_cipher_auth_encrypt( &transform->cipher_ctx_enc, - iv, transform->ivlen, - add_data, 13, - enc_msg, enc_msglen, - enc_msg, &olen, - enc_msg + enc_msglen, taglen ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_auth_encrypt", ret ); - return( ret ); - } - - if( olen != enc_msglen ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - ssl->out_msglen += taglen; - auth_done++; - - MBEDTLS_SSL_DEBUG_BUF( 4, "after encrypt: tag", enc_msg + enc_msglen, taglen ); - } - else -#endif /* MBEDTLS_GCM_C || MBEDTLS_CCM_C */ -#if defined(MBEDTLS_CIPHER_MODE_CBC) && \ - ( defined(MBEDTLS_AES_C) || defined(MBEDTLS_CAMELLIA_C) || defined(MBEDTLS_ARIA_C) ) - if( mode == MBEDTLS_MODE_CBC ) - { - int ret; - unsigned char *enc_msg; - size_t enc_msglen, padlen, olen = 0, i; - - padlen = ssl->transform_out->ivlen - ( ssl->out_msglen + 1 ) % - ssl->transform_out->ivlen; - if( padlen == ssl->transform_out->ivlen ) - padlen = 0; - - for( i = 0; i <= padlen; i++ ) - ssl->out_msg[ssl->out_msglen + i] = (unsigned char) padlen; - - ssl->out_msglen += padlen + 1; - - enc_msglen = ssl->out_msglen; - enc_msg = ssl->out_msg; - -#if defined(MBEDTLS_SSL_PROTO_TLS1_1) || defined(MBEDTLS_SSL_PROTO_TLS1_2) - /* - * Prepend per-record IV for block cipher in TLS v1.1 and up as per - * Method 1 (6.2.3.2. in RFC4346 and RFC5246) - */ - if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) - { - /* - * Generate IV - */ - ret = ssl->conf->f_rng( ssl->conf->p_rng, ssl->transform_out->iv_enc, - ssl->transform_out->ivlen ); - if( ret != 0 ) - return( ret ); - - memcpy( ssl->out_iv, ssl->transform_out->iv_enc, - ssl->transform_out->ivlen ); - - /* - * Fix pointer positions and message length with added IV - */ - enc_msg = ssl->out_msg; - enc_msglen = ssl->out_msglen; - ssl->out_msglen += ssl->transform_out->ivlen; - } -#endif /* MBEDTLS_SSL_PROTO_TLS1_1 || MBEDTLS_SSL_PROTO_TLS1_2 */ - - MBEDTLS_SSL_DEBUG_MSG( 3, ( "before encrypt: msglen = %d, " - "including %d bytes of IV and %d bytes of padding", - ssl->out_msglen, ssl->transform_out->ivlen, - padlen + 1 ) ); - - if( ( ret = mbedtls_cipher_crypt( &ssl->transform_out->cipher_ctx_enc, - ssl->transform_out->iv_enc, - ssl->transform_out->ivlen, - enc_msg, enc_msglen, - enc_msg, &olen ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_crypt", ret ); - return( ret ); - } - - if( enc_msglen != olen ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - -#if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) - if( ssl->minor_ver < MBEDTLS_SSL_MINOR_VERSION_2 ) - { - /* - * Save IV in SSL3 and TLS1 - */ - memcpy( ssl->transform_out->iv_enc, - ssl->transform_out->cipher_ctx_enc.iv, - ssl->transform_out->ivlen ); - } -#endif - -#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) - if( auth_done == 0 ) - { - unsigned char mac[MBEDTLS_SSL_MAC_ADD]; - - /* - * MAC(MAC_write_key, seq_num + - * TLSCipherText.type + - * TLSCipherText.version + - * length_of( (IV +) ENC(...) ) + - * IV + // except for TLS 1.0 - * ENC(content + padding + padding_length)); - */ - unsigned char pseudo_hdr[13]; - - MBEDTLS_SSL_DEBUG_MSG( 3, ( "using encrypt then mac" ) ); - - memcpy( pseudo_hdr + 0, ssl->out_ctr, 8 ); - memcpy( pseudo_hdr + 8, ssl->out_hdr, 3 ); - pseudo_hdr[11] = (unsigned char)( ( ssl->out_msglen >> 8 ) & 0xFF ); - pseudo_hdr[12] = (unsigned char)( ( ssl->out_msglen ) & 0xFF ); - - MBEDTLS_SSL_DEBUG_BUF( 4, "MAC'd meta-data", pseudo_hdr, 13 ); - - mbedtls_md_hmac_update( &ssl->transform_out->md_ctx_enc, pseudo_hdr, 13 ); - mbedtls_md_hmac_update( &ssl->transform_out->md_ctx_enc, - ssl->out_iv, ssl->out_msglen ); - mbedtls_md_hmac_finish( &ssl->transform_out->md_ctx_enc, mac ); - mbedtls_md_hmac_reset( &ssl->transform_out->md_ctx_enc ); - - memcpy( ssl->out_iv + ssl->out_msglen, mac, - ssl->transform_out->maclen ); - - ssl->out_msglen += ssl->transform_out->maclen; - auth_done++; - } -#endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */ - } - else -#endif /* MBEDTLS_CIPHER_MODE_CBC && - ( MBEDTLS_AES_C || MBEDTLS_CAMELLIA_C || MBEDTLS_ARIA_C ) */ - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - /* Make extra sure authentication was performed, exactly once */ - if( auth_done != 1 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= encrypt buf" ) ); - - return( 0 ); -} - -static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) -{ - mbedtls_cipher_mode_t mode; - int auth_done = 0; -#if defined(SSL_SOME_MODES_USE_MAC) - size_t padlen = 0, correct = 1; -#endif - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> decrypt buf" ) ); - - if( ssl->session_in == NULL || ssl->transform_in == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - mode = mbedtls_cipher_get_cipher_mode( &ssl->transform_in->cipher_ctx_dec ); - - if( ssl->in_msglen < ssl->transform_in->minlen ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "in_msglen (%d) < minlen (%d)", - ssl->in_msglen, ssl->transform_in->minlen ) ); - return( MBEDTLS_ERR_SSL_INVALID_MAC ); - } - -#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) - if( mode == MBEDTLS_MODE_STREAM ) - { - int ret; - size_t olen = 0; - - padlen = 0; - - if( ( ret = mbedtls_cipher_crypt( &ssl->transform_in->cipher_ctx_dec, - ssl->transform_in->iv_dec, - ssl->transform_in->ivlen, - ssl->in_msg, ssl->in_msglen, - ssl->in_msg, &olen ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_crypt", ret ); - return( ret ); - } - - if( ssl->in_msglen != olen ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - } - else -#endif /* MBEDTLS_ARC4_C || MBEDTLS_CIPHER_NULL_CIPHER */ -#if defined(MBEDTLS_GCM_C) || \ - defined(MBEDTLS_CCM_C) || \ - defined(MBEDTLS_CHACHAPOLY_C) - if( mode == MBEDTLS_MODE_GCM || - mode == MBEDTLS_MODE_CCM || - mode == MBEDTLS_MODE_CHACHAPOLY ) - { - int ret; - size_t dec_msglen, olen; - unsigned char *dec_msg; - unsigned char *dec_msg_result; - unsigned char add_data[13]; - unsigned char iv[12]; - mbedtls_ssl_transform *transform = ssl->transform_in; - unsigned char taglen = transform->ciphersuite_info->flags & - MBEDTLS_CIPHERSUITE_SHORT_TAG ? 8 : 16; - size_t explicit_iv_len = transform->ivlen - transform->fixed_ivlen; - - /* - * Compute and update sizes - */ - if( ssl->in_msglen < explicit_iv_len + taglen ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "msglen (%d) < explicit_iv_len (%d) " - "+ taglen (%d)", ssl->in_msglen, - explicit_iv_len, taglen ) ); - return( MBEDTLS_ERR_SSL_INVALID_MAC ); - } - dec_msglen = ssl->in_msglen - explicit_iv_len - taglen; - - dec_msg = ssl->in_msg; - dec_msg_result = ssl->in_msg; - ssl->in_msglen = dec_msglen; - - /* - * Prepare additional authenticated data - */ - memcpy( add_data, ssl->in_ctr, 8 ); - add_data[8] = ssl->in_msgtype; - mbedtls_ssl_write_version( ssl->major_ver, ssl->minor_ver, - ssl->conf->transport, add_data + 9 ); - add_data[11] = ( ssl->in_msglen >> 8 ) & 0xFF; - add_data[12] = ssl->in_msglen & 0xFF; - - MBEDTLS_SSL_DEBUG_BUF( 4, "additional data for AEAD", add_data, 13 ); - - /* - * Prepare IV - */ - if( transform->ivlen == 12 && transform->fixed_ivlen == 4 ) - { - /* GCM and CCM: fixed || explicit (transmitted) */ - memcpy( iv, transform->iv_dec, transform->fixed_ivlen ); - memcpy( iv + transform->fixed_ivlen, ssl->in_iv, 8 ); - - } - else if( transform->ivlen == 12 && transform->fixed_ivlen == 12 ) - { - /* ChachaPoly: fixed XOR sequence number */ - unsigned char i; - - memcpy( iv, transform->iv_dec, transform->fixed_ivlen ); - - for( i = 0; i < 8; i++ ) - iv[i+4] ^= ssl->in_ctr[i]; - } - else - { - /* Reminder if we ever add an AEAD mode with a different size */ - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - MBEDTLS_SSL_DEBUG_BUF( 4, "IV used", iv, transform->ivlen ); - MBEDTLS_SSL_DEBUG_BUF( 4, "TAG used", dec_msg + dec_msglen, taglen ); - - /* - * Decrypt and authenticate - */ - if( ( ret = mbedtls_cipher_auth_decrypt( &ssl->transform_in->cipher_ctx_dec, - iv, transform->ivlen, - add_data, 13, - dec_msg, dec_msglen, - dec_msg_result, &olen, - dec_msg + dec_msglen, taglen ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_auth_decrypt", ret ); - - if( ret == MBEDTLS_ERR_CIPHER_AUTH_FAILED ) - return( MBEDTLS_ERR_SSL_INVALID_MAC ); - - return( ret ); - } - auth_done++; - - if( olen != dec_msglen ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - } - else -#endif /* MBEDTLS_GCM_C || MBEDTLS_CCM_C */ -#if defined(MBEDTLS_CIPHER_MODE_CBC) && \ - ( defined(MBEDTLS_AES_C) || defined(MBEDTLS_CAMELLIA_C) || defined(MBEDTLS_ARIA_C) ) - if( mode == MBEDTLS_MODE_CBC ) - { - /* - * Decrypt and check the padding - */ - int ret; - unsigned char *dec_msg; - unsigned char *dec_msg_result; - size_t dec_msglen; - size_t minlen = 0; - size_t olen = 0; - - /* - * Check immediate ciphertext sanity - */ -#if defined(MBEDTLS_SSL_PROTO_TLS1_1) || defined(MBEDTLS_SSL_PROTO_TLS1_2) - if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) - minlen += ssl->transform_in->ivlen; -#endif - - if( ssl->in_msglen < minlen + ssl->transform_in->ivlen || - ssl->in_msglen < minlen + ssl->transform_in->maclen + 1 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "msglen (%d) < max( ivlen(%d), maclen (%d) " - "+ 1 ) ( + expl IV )", ssl->in_msglen, - ssl->transform_in->ivlen, - ssl->transform_in->maclen ) ); - return( MBEDTLS_ERR_SSL_INVALID_MAC ); - } - - dec_msglen = ssl->in_msglen; - dec_msg = ssl->in_msg; - dec_msg_result = ssl->in_msg; - - /* - * Authenticate before decrypt if enabled - */ -#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) - if( ssl->session_in->encrypt_then_mac == MBEDTLS_SSL_ETM_ENABLED ) - { - unsigned char mac_expect[MBEDTLS_SSL_MAC_ADD]; - unsigned char pseudo_hdr[13]; - - MBEDTLS_SSL_DEBUG_MSG( 3, ( "using encrypt then mac" ) ); - - dec_msglen -= ssl->transform_in->maclen; - ssl->in_msglen -= ssl->transform_in->maclen; - - memcpy( pseudo_hdr + 0, ssl->in_ctr, 8 ); - memcpy( pseudo_hdr + 8, ssl->in_hdr, 3 ); - pseudo_hdr[11] = (unsigned char)( ( ssl->in_msglen >> 8 ) & 0xFF ); - pseudo_hdr[12] = (unsigned char)( ( ssl->in_msglen ) & 0xFF ); - - MBEDTLS_SSL_DEBUG_BUF( 4, "MAC'd meta-data", pseudo_hdr, 13 ); - - mbedtls_md_hmac_update( &ssl->transform_in->md_ctx_dec, pseudo_hdr, 13 ); - mbedtls_md_hmac_update( &ssl->transform_in->md_ctx_dec, - ssl->in_iv, ssl->in_msglen ); - mbedtls_md_hmac_finish( &ssl->transform_in->md_ctx_dec, mac_expect ); - mbedtls_md_hmac_reset( &ssl->transform_in->md_ctx_dec ); - - MBEDTLS_SSL_DEBUG_BUF( 4, "message mac", ssl->in_iv + ssl->in_msglen, - ssl->transform_in->maclen ); - MBEDTLS_SSL_DEBUG_BUF( 4, "expected mac", mac_expect, - ssl->transform_in->maclen ); - - if( mbedtls_ssl_safer_memcmp( ssl->in_iv + ssl->in_msglen, mac_expect, - ssl->transform_in->maclen ) != 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "message mac does not match" ) ); - - return( MBEDTLS_ERR_SSL_INVALID_MAC ); - } - auth_done++; - } -#endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */ - - /* - * Check length sanity - */ - if( ssl->in_msglen % ssl->transform_in->ivlen != 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "msglen (%d) %% ivlen (%d) != 0", - ssl->in_msglen, ssl->transform_in->ivlen ) ); - return( MBEDTLS_ERR_SSL_INVALID_MAC ); - } - -#if defined(MBEDTLS_SSL_PROTO_TLS1_1) || defined(MBEDTLS_SSL_PROTO_TLS1_2) - /* - * Initialize for prepended IV for block cipher in TLS v1.1 and up - */ - if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) - { - unsigned char i; - dec_msglen -= ssl->transform_in->ivlen; - ssl->in_msglen -= ssl->transform_in->ivlen; - - for( i = 0; i < ssl->transform_in->ivlen; i++ ) - ssl->transform_in->iv_dec[i] = ssl->in_iv[i]; - } -#endif /* MBEDTLS_SSL_PROTO_TLS1_1 || MBEDTLS_SSL_PROTO_TLS1_2 */ - - if( ( ret = mbedtls_cipher_crypt( &ssl->transform_in->cipher_ctx_dec, - ssl->transform_in->iv_dec, - ssl->transform_in->ivlen, - dec_msg, dec_msglen, - dec_msg_result, &olen ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_cipher_crypt", ret ); - return( ret ); - } - - if( dec_msglen != olen ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - -#if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) - if( ssl->minor_ver < MBEDTLS_SSL_MINOR_VERSION_2 ) - { - /* - * Save IV in SSL3 and TLS1 - */ - memcpy( ssl->transform_in->iv_dec, - ssl->transform_in->cipher_ctx_dec.iv, - ssl->transform_in->ivlen ); - } -#endif - - padlen = 1 + ssl->in_msg[ssl->in_msglen - 1]; - - if( ssl->in_msglen < ssl->transform_in->maclen + padlen && - auth_done == 0 ) - { -#if defined(MBEDTLS_SSL_DEBUG_ALL) - MBEDTLS_SSL_DEBUG_MSG( 1, ( "msglen (%d) < maclen (%d) + padlen (%d)", - ssl->in_msglen, ssl->transform_in->maclen, padlen ) ); -#endif - padlen = 0; - correct = 0; - } - -#if defined(MBEDTLS_SSL_PROTO_SSL3) - if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) - { - if( padlen > ssl->transform_in->ivlen ) - { -#if defined(MBEDTLS_SSL_DEBUG_ALL) - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad padding length: is %d, " - "should be no more than %d", - padlen, ssl->transform_in->ivlen ) ); -#endif - correct = 0; - } - } - else -#endif /* MBEDTLS_SSL_PROTO_SSL3 */ -#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ - defined(MBEDTLS_SSL_PROTO_TLS1_2) - if( ssl->minor_ver > MBEDTLS_SSL_MINOR_VERSION_0 ) - { - /* - * TLSv1+: always check the padding up to the first failure - * and fake check up to 256 bytes of padding - */ - size_t pad_count = 0, real_count = 1; - size_t padding_idx = ssl->in_msglen - padlen; - size_t i; - - /* - * Padding is guaranteed to be incorrect if: - * 1. padlen > ssl->in_msglen - * - * 2. padding_idx > MBEDTLS_SSL_IN_CONTENT_LEN + - * ssl->transform_in->maclen - * - * In both cases we reset padding_idx to a safe value (0) to - * prevent out-of-buffer reads. - */ - correct &= ( padlen <= ssl->in_msglen ); - correct &= ( padding_idx <= MBEDTLS_SSL_IN_CONTENT_LEN + - ssl->transform_in->maclen ); - - padding_idx *= correct; - - for( i = 0; i < 256; i++ ) - { - real_count &= ( i < padlen ); - pad_count += real_count * - ( ssl->in_msg[padding_idx + i] == padlen - 1 ); - } - - correct &= ( pad_count == padlen ); /* Only 1 on correct padding */ - -#if defined(MBEDTLS_SSL_DEBUG_ALL) - if( padlen > 0 && correct == 0 ) - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad padding byte detected" ) ); -#endif - padlen &= correct * 0x1FF; - } - else -#endif /* MBEDTLS_SSL_PROTO_TLS1 || MBEDTLS_SSL_PROTO_TLS1_1 || \ - MBEDTLS_SSL_PROTO_TLS1_2 */ - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - ssl->in_msglen -= padlen; - } - else -#endif /* MBEDTLS_CIPHER_MODE_CBC && - ( MBEDTLS_AES_C || MBEDTLS_CAMELLIA_C || MBEDTLS_ARIA_C ) */ - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - -#if defined(MBEDTLS_SSL_DEBUG_ALL) - MBEDTLS_SSL_DEBUG_BUF( 4, "raw buffer after decryption", - ssl->in_msg, ssl->in_msglen ); -#endif - - /* - * Authenticate if not done yet. - * Compute the MAC regardless of the padding result (RFC4346, CBCTIME). - */ -#if defined(SSL_SOME_MODES_USE_MAC) - if( auth_done == 0 ) - { - unsigned char mac_expect[MBEDTLS_SSL_MAC_ADD]; - - ssl->in_msglen -= ssl->transform_in->maclen; - - ssl->in_len[0] = (unsigned char)( ssl->in_msglen >> 8 ); - ssl->in_len[1] = (unsigned char)( ssl->in_msglen ); - -#if defined(MBEDTLS_SSL_PROTO_SSL3) - if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) - { - ssl_mac( &ssl->transform_in->md_ctx_dec, - ssl->transform_in->mac_dec, - ssl->in_msg, ssl->in_msglen, - ssl->in_ctr, ssl->in_msgtype, - mac_expect ); - } - else -#endif /* MBEDTLS_SSL_PROTO_SSL3 */ -#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ - defined(MBEDTLS_SSL_PROTO_TLS1_2) - if( ssl->minor_ver > MBEDTLS_SSL_MINOR_VERSION_0 ) - { - /* - * Process MAC and always update for padlen afterwards to make - * total time independent of padlen. - * - * Known timing attacks: - * - Lucky Thirteen (http://www.isg.rhul.ac.uk/tls/TLStiming.pdf) - * - * To compensate for different timings for the MAC calculation - * depending on how much padding was removed (which is determined - * by padlen), process extra_run more blocks through the hash - * function. - * - * The formula in the paper is - * extra_run = ceil( (L1-55) / 64 ) - ceil( (L2-55) / 64 ) - * where L1 is the size of the header plus the decrypted message - * plus CBC padding and L2 is the size of the header plus the - * decrypted message. This is for an underlying hash function - * with 64-byte blocks. - * We use ( (Lx+8) / 64 ) to handle 'negative Lx' values - * correctly. We round down instead of up, so -56 is the correct - * value for our calculations instead of -55. - * - * Repeat the formula rather than defining a block_size variable. - * This avoids requiring division by a variable at runtime - * (which would be marginally less efficient and would require - * linking an extra division function in some builds). - */ - size_t j, extra_run = 0; - - /* - * The next two sizes are the minimum and maximum values of - * in_msglen over all padlen values. - * - * They're independent of padlen, since we previously did - * in_msglen -= padlen. - * - * Note that max_len + maclen is never more than the buffer - * length, as we previously did in_msglen -= maclen too. - */ - const size_t max_len = ssl->in_msglen + padlen; - const size_t min_len = ( max_len > 256 ) ? max_len - 256 : 0; - - switch( ssl->transform_in->ciphersuite_info->mac ) - { -#if defined(MBEDTLS_MD5_C) || defined(MBEDTLS_SHA1_C) || \ - defined(MBEDTLS_SHA256_C) - case MBEDTLS_MD_MD5: - case MBEDTLS_MD_SHA1: - case MBEDTLS_MD_SHA256: - /* 8 bytes of message size, 64-byte compression blocks */ - extra_run = ( 13 + ssl->in_msglen + padlen + 8 ) / 64 - - ( 13 + ssl->in_msglen + 8 ) / 64; - break; -#endif -#if defined(MBEDTLS_SHA512_C) - case MBEDTLS_MD_SHA384: - /* 16 bytes of message size, 128-byte compression blocks */ - extra_run = ( 13 + ssl->in_msglen + padlen + 16 ) / 128 - - ( 13 + ssl->in_msglen + 16 ) / 128; - break; -#endif - default: - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - extra_run &= correct * 0xFF; - - mbedtls_md_hmac_update( &ssl->transform_in->md_ctx_dec, ssl->in_ctr, 8 ); - mbedtls_md_hmac_update( &ssl->transform_in->md_ctx_dec, ssl->in_hdr, 3 ); - mbedtls_md_hmac_update( &ssl->transform_in->md_ctx_dec, ssl->in_len, 2 ); - mbedtls_md_hmac_update( &ssl->transform_in->md_ctx_dec, ssl->in_msg, - ssl->in_msglen ); - /* Make sure we access everything even when padlen > 0. This - * makes the synchronisation requirements for just-in-time - * Prime+Probe attacks much tighter and hopefully impractical. */ - ssl_read_memory( ssl->in_msg + ssl->in_msglen, padlen ); - mbedtls_md_hmac_finish( &ssl->transform_in->md_ctx_dec, mac_expect ); - - /* Call mbedtls_md_process at least once due to cache attacks - * that observe whether md_process() was called of not */ - for( j = 0; j < extra_run + 1; j++ ) - mbedtls_md_process( &ssl->transform_in->md_ctx_dec, ssl->in_msg ); - - mbedtls_md_hmac_reset( &ssl->transform_in->md_ctx_dec ); - - /* Make sure we access all the memory that could contain the MAC, - * before we check it in the next code block. This makes the - * synchronisation requirements for just-in-time Prime+Probe - * attacks much tighter and hopefully impractical. */ - ssl_read_memory( ssl->in_msg + min_len, - max_len - min_len + ssl->transform_in->maclen ); - } - else -#endif /* MBEDTLS_SSL_PROTO_TLS1 || MBEDTLS_SSL_PROTO_TLS1_1 || \ - MBEDTLS_SSL_PROTO_TLS1_2 */ - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - -#if defined(MBEDTLS_SSL_DEBUG_ALL) - MBEDTLS_SSL_DEBUG_BUF( 4, "expected mac", mac_expect, ssl->transform_in->maclen ); - MBEDTLS_SSL_DEBUG_BUF( 4, "message mac", ssl->in_msg + ssl->in_msglen, - ssl->transform_in->maclen ); -#endif - - if( mbedtls_ssl_safer_memcmp( ssl->in_msg + ssl->in_msglen, mac_expect, - ssl->transform_in->maclen ) != 0 ) - { -#if defined(MBEDTLS_SSL_DEBUG_ALL) - MBEDTLS_SSL_DEBUG_MSG( 1, ( "message mac does not match" ) ); -#endif - correct = 0; - } - auth_done++; - } - - /* - * Finally check the correct flag - */ - if( correct == 0 ) - return( MBEDTLS_ERR_SSL_INVALID_MAC ); -#endif /* SSL_SOME_MODES_USE_MAC */ - - /* Make extra sure authentication was performed, exactly once */ - if( auth_done != 1 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - if( ssl->in_msglen == 0 ) - { -#if defined(MBEDTLS_SSL_PROTO_TLS1_2) - if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 - && ssl->in_msgtype != MBEDTLS_SSL_MSG_APPLICATION_DATA ) - { - /* TLS v1.2 explicitly disallows zero-length messages which are not application data */ - MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid zero-length message type: %d", ssl->in_msgtype ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } -#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ - - ssl->nb_zero++; - - /* - * Three or more empty messages may be a DoS attack - * (excessive CPU consumption). - */ - if( ssl->nb_zero > 3 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "received four consecutive empty " - "messages, possible DoS attack" ) ); - return( MBEDTLS_ERR_SSL_INVALID_MAC ); - } - } - else - ssl->nb_zero = 0; - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - ; /* in_ctr read from peer, not maintained internally */ - } - else -#endif - { - unsigned char i; - for( i = 8; i > ssl_ep_len( ssl ); i-- ) - if( ++ssl->in_ctr[i - 1] != 0 ) - break; - - /* The loop goes to its end iff the counter is wrapping */ - if( i == ssl_ep_len( ssl ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "incoming message counter would wrap" ) ); - return( MBEDTLS_ERR_SSL_COUNTER_WRAPPING ); - } - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= decrypt buf" ) ); - - return( 0 ); -} - -#undef MAC_NONE -#undef MAC_PLAINTEXT -#undef MAC_CIPHERTEXT - -#if defined(MBEDTLS_ZLIB_SUPPORT) -/* - * Compression/decompression functions - */ -static int ssl_compress_buf( mbedtls_ssl_context *ssl ) -{ - int ret; - unsigned char *msg_post = ssl->out_msg; - ptrdiff_t bytes_written = ssl->out_msg - ssl->out_buf; - size_t len_pre = ssl->out_msglen; - unsigned char *msg_pre = ssl->compress_buf; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> compress buf" ) ); - - if( len_pre == 0 ) - return( 0 ); - - memcpy( msg_pre, ssl->out_msg, len_pre ); - - MBEDTLS_SSL_DEBUG_MSG( 3, ( "before compression: msglen = %d, ", - ssl->out_msglen ) ); - - MBEDTLS_SSL_DEBUG_BUF( 4, "before compression: output payload", - ssl->out_msg, ssl->out_msglen ); - - ssl->transform_out->ctx_deflate.next_in = msg_pre; - ssl->transform_out->ctx_deflate.avail_in = len_pre; - ssl->transform_out->ctx_deflate.next_out = msg_post; - ssl->transform_out->ctx_deflate.avail_out = MBEDTLS_SSL_OUT_BUFFER_LEN - bytes_written; - - ret = deflate( &ssl->transform_out->ctx_deflate, Z_SYNC_FLUSH ); - if( ret != Z_OK ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "failed to perform compression (%d)", ret ) ); - return( MBEDTLS_ERR_SSL_COMPRESSION_FAILED ); - } - - ssl->out_msglen = MBEDTLS_SSL_OUT_BUFFER_LEN - - ssl->transform_out->ctx_deflate.avail_out - bytes_written; - - MBEDTLS_SSL_DEBUG_MSG( 3, ( "after compression: msglen = %d, ", - ssl->out_msglen ) ); - - MBEDTLS_SSL_DEBUG_BUF( 4, "after compression: output payload", - ssl->out_msg, ssl->out_msglen ); - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= compress buf" ) ); - - return( 0 ); -} - -static int ssl_decompress_buf( mbedtls_ssl_context *ssl ) -{ - int ret; - unsigned char *msg_post = ssl->in_msg; - ptrdiff_t header_bytes = ssl->in_msg - ssl->in_buf; - size_t len_pre = ssl->in_msglen; - unsigned char *msg_pre = ssl->compress_buf; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> decompress buf" ) ); - - if( len_pre == 0 ) - return( 0 ); - - memcpy( msg_pre, ssl->in_msg, len_pre ); - - MBEDTLS_SSL_DEBUG_MSG( 3, ( "before decompression: msglen = %d, ", - ssl->in_msglen ) ); - - MBEDTLS_SSL_DEBUG_BUF( 4, "before decompression: input payload", - ssl->in_msg, ssl->in_msglen ); - - ssl->transform_in->ctx_inflate.next_in = msg_pre; - ssl->transform_in->ctx_inflate.avail_in = len_pre; - ssl->transform_in->ctx_inflate.next_out = msg_post; - ssl->transform_in->ctx_inflate.avail_out = MBEDTLS_SSL_IN_BUFFER_LEN - - header_bytes; - - ret = inflate( &ssl->transform_in->ctx_inflate, Z_SYNC_FLUSH ); - if( ret != Z_OK ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "failed to perform decompression (%d)", ret ) ); - return( MBEDTLS_ERR_SSL_COMPRESSION_FAILED ); - } - - ssl->in_msglen = MBEDTLS_SSL_IN_BUFFER_LEN - - ssl->transform_in->ctx_inflate.avail_out - header_bytes; - - MBEDTLS_SSL_DEBUG_MSG( 3, ( "after decompression: msglen = %d, ", - ssl->in_msglen ) ); - - MBEDTLS_SSL_DEBUG_BUF( 4, "after decompression: input payload", - ssl->in_msg, ssl->in_msglen ); - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= decompress buf" ) ); - - return( 0 ); -} -#endif /* MBEDTLS_ZLIB_SUPPORT */ - -#if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_RENEGOTIATION) -static int ssl_write_hello_request( mbedtls_ssl_context *ssl ); - -#if defined(MBEDTLS_SSL_PROTO_DTLS) -static int ssl_resend_hello_request( mbedtls_ssl_context *ssl ) -{ - /* If renegotiation is not enforced, retransmit until we would reach max - * timeout if we were using the usual handshake doubling scheme */ - if( ssl->conf->renego_max_records < 0 ) - { - uint32_t ratio = ssl->conf->hs_timeout_max / ssl->conf->hs_timeout_min + 1; - unsigned char doublings = 1; - - while( ratio != 0 ) - { - ++doublings; - ratio >>= 1; - } - - if( ++ssl->renego_records_seen > doublings ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "no longer retransmitting hello request" ) ); - return( 0 ); - } - } - - return( ssl_write_hello_request( ssl ) ); -} -#endif -#endif /* MBEDTLS_SSL_SRV_C && MBEDTLS_SSL_RENEGOTIATION */ - -/* - * Fill the input message buffer by appending data to it. - * The amount of data already fetched is in ssl->in_left. - * - * If we return 0, is it guaranteed that (at least) nb_want bytes are - * available (from this read and/or a previous one). Otherwise, an error code - * is returned (possibly EOF or WANT_READ). - * - * With stream transport (TLS) on success ssl->in_left == nb_want, but - * with datagram transport (DTLS) on success ssl->in_left >= nb_want, - * since we always read a whole datagram at once. - * - * For DTLS, it is up to the caller to set ssl->next_record_offset when - * they're done reading a record. - */ -int mbedtls_ssl_fetch_input( mbedtls_ssl_context *ssl, size_t nb_want ) -{ - int ret; - size_t len; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> fetch input" ) ); - - if( ssl->f_recv == NULL && ssl->f_recv_timeout == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "Bad usage of mbedtls_ssl_set_bio() " - "or mbedtls_ssl_set_bio()" ) ); - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - } - - if( nb_want > MBEDTLS_SSL_IN_BUFFER_LEN - (size_t)( ssl->in_hdr - ssl->in_buf ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "requesting more data than fits" ) ); - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - } - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - uint32_t timeout; - - /* Just to be sure */ - if( ssl->f_set_timer == NULL || ssl->f_get_timer == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "You must use " - "mbedtls_ssl_set_timer_cb() for DTLS" ) ); - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - } - - /* - * The point is, we need to always read a full datagram at once, so we - * sometimes read more then requested, and handle the additional data. - * It could be the rest of the current record (while fetching the - * header) and/or some other records in the same datagram. - */ - - /* - * Move to the next record in the already read datagram if applicable - */ - if( ssl->next_record_offset != 0 ) - { - if( ssl->in_left < ssl->next_record_offset ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - ssl->in_left -= ssl->next_record_offset; - - if( ssl->in_left != 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "next record in same datagram, offset: %d", - ssl->next_record_offset ) ); - memmove( ssl->in_hdr, - ssl->in_hdr + ssl->next_record_offset, - ssl->in_left ); - } - - ssl->next_record_offset = 0; - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "in_left: %d, nb_want: %d", - ssl->in_left, nb_want ) ); - - /* - * Done if we already have enough data. - */ - if( nb_want <= ssl->in_left) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= fetch input" ) ); - return( 0 ); - } - - /* - * A record can't be split accross datagrams. If we need to read but - * are not at the beginning of a new record, the caller did something - * wrong. - */ - if( ssl->in_left != 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - /* - * Don't even try to read if time's out already. - * This avoids by-passing the timer when repeatedly receiving messages - * that will end up being dropped. - */ - if( ssl_check_timer( ssl ) != 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "timer has expired" ) ); - ret = MBEDTLS_ERR_SSL_TIMEOUT; - } - else - { - len = MBEDTLS_SSL_IN_BUFFER_LEN - ( ssl->in_hdr - ssl->in_buf ); - - if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER ) - timeout = ssl->handshake->retransmit_timeout; - else - timeout = ssl->conf->read_timeout; - - MBEDTLS_SSL_DEBUG_MSG( 3, ( "f_recv_timeout: %u ms", timeout ) ); - - if( ssl->f_recv_timeout != NULL ) - ret = ssl->f_recv_timeout( ssl->p_bio, ssl->in_hdr, len, - timeout ); - else - ret = ssl->f_recv( ssl->p_bio, ssl->in_hdr, len ); - - MBEDTLS_SSL_DEBUG_RET( 2, "ssl->f_recv(_timeout)", ret ); - - if( ret == 0 ) - return( MBEDTLS_ERR_SSL_CONN_EOF ); - } - - if( ret == MBEDTLS_ERR_SSL_TIMEOUT ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "timeout" ) ); - ssl_set_timer( ssl, 0 ); - - if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER ) - { - if( ssl_double_retransmit_timeout( ssl ) != 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "handshake timeout" ) ); - return( MBEDTLS_ERR_SSL_TIMEOUT ); - } - - if( ( ret = mbedtls_ssl_resend( ssl ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_resend", ret ); - return( ret ); - } - - return( MBEDTLS_ERR_SSL_WANT_READ ); - } -#if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_RENEGOTIATION) - else if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && - ssl->renego_status == MBEDTLS_SSL_RENEGOTIATION_PENDING ) - { - if( ( ret = ssl_resend_hello_request( ssl ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "ssl_resend_hello_request", ret ); - return( ret ); - } - - return( MBEDTLS_ERR_SSL_WANT_READ ); - } -#endif /* MBEDTLS_SSL_SRV_C && MBEDTLS_SSL_RENEGOTIATION */ - } - - if( ret < 0 ) - return( ret ); - - ssl->in_left = ret; - } - else -#endif - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "in_left: %d, nb_want: %d", - ssl->in_left, nb_want ) ); - - while( ssl->in_left < nb_want ) - { - len = nb_want - ssl->in_left; - - if( ssl_check_timer( ssl ) != 0 ) - ret = MBEDTLS_ERR_SSL_TIMEOUT; - else - { - if( ssl->f_recv_timeout != NULL ) - { - ret = ssl->f_recv_timeout( ssl->p_bio, - ssl->in_hdr + ssl->in_left, len, - ssl->conf->read_timeout ); - } - else - { - ret = ssl->f_recv( ssl->p_bio, - ssl->in_hdr + ssl->in_left, len ); - } - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "in_left: %d, nb_want: %d", - ssl->in_left, nb_want ) ); - MBEDTLS_SSL_DEBUG_RET( 2, "ssl->f_recv(_timeout)", ret ); - - if( ret == 0 ) - return( MBEDTLS_ERR_SSL_CONN_EOF ); - - if( ret < 0 ) - return( ret ); - - if ( (size_t)ret > len || ( INT_MAX > SIZE_MAX && ret > SIZE_MAX ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, - ( "f_recv returned %d bytes but only %lu were requested", - ret, (unsigned long)len ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - ssl->in_left += ret; - } - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= fetch input" ) ); - - return( 0 ); -} - -/* - * Flush any data not yet written - */ -int mbedtls_ssl_flush_output( mbedtls_ssl_context *ssl ) -{ - int ret; - unsigned char *buf; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> flush output" ) ); - - if( ssl->f_send == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "Bad usage of mbedtls_ssl_set_bio() " - "or mbedtls_ssl_set_bio()" ) ); - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - } - - /* Avoid incrementing counter if data is flushed */ - if( ssl->out_left == 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= flush output" ) ); - return( 0 ); - } - - while( ssl->out_left > 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "message length: %d, out_left: %d", - mbedtls_ssl_hdr_len( ssl ) + ssl->out_msglen, ssl->out_left ) ); - - buf = ssl->out_hdr - ssl->out_left; - ret = ssl->f_send( ssl->p_bio, buf, ssl->out_left ); - - MBEDTLS_SSL_DEBUG_RET( 2, "ssl->f_send", ret ); - - if( ret <= 0 ) - return( ret ); - - if( (size_t)ret > ssl->out_left || ( INT_MAX > SIZE_MAX && ret > SIZE_MAX ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, - ( "f_send returned %d bytes but only %lu bytes were sent", - ret, (unsigned long)ssl->out_left ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - ssl->out_left -= ret; - } - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - ssl->out_hdr = ssl->out_buf; - } - else -#endif - { - ssl->out_hdr = ssl->out_buf + 8; - } - ssl_update_out_pointers( ssl, ssl->transform_out ); - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= flush output" ) ); - - return( 0 ); -} - -/* - * Functions to handle the DTLS retransmission state machine - */ -#if defined(MBEDTLS_SSL_PROTO_DTLS) -/* - * Append current handshake message to current outgoing flight - */ -static int ssl_flight_append( mbedtls_ssl_context *ssl ) -{ - mbedtls_ssl_flight_item *msg; - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_flight_append" ) ); - MBEDTLS_SSL_DEBUG_BUF( 4, "message appended to flight", - ssl->out_msg, ssl->out_msglen ); - - /* Allocate space for current message */ - if( ( msg = mbedtls_calloc( 1, sizeof( mbedtls_ssl_flight_item ) ) ) == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc %d bytes failed", - sizeof( mbedtls_ssl_flight_item ) ) ); - return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); - } - - if( ( msg->p = mbedtls_calloc( 1, ssl->out_msglen ) ) == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc %d bytes failed", ssl->out_msglen ) ); - mbedtls_free( msg ); - return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); - } - - /* Copy current handshake message with headers */ - memcpy( msg->p, ssl->out_msg, ssl->out_msglen ); - msg->len = ssl->out_msglen; - msg->type = ssl->out_msgtype; - msg->next = NULL; - - /* Append to the current flight */ - if( ssl->handshake->flight == NULL ) - ssl->handshake->flight = msg; - else - { - mbedtls_ssl_flight_item *cur = ssl->handshake->flight; - while( cur->next != NULL ) - cur = cur->next; - cur->next = msg; - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= ssl_flight_append" ) ); - return( 0 ); -} - -/* - * Free the current flight of handshake messages - */ -static void ssl_flight_free( mbedtls_ssl_flight_item *flight ) -{ - mbedtls_ssl_flight_item *cur = flight; - mbedtls_ssl_flight_item *next; - - while( cur != NULL ) - { - next = cur->next; - - mbedtls_free( cur->p ); - mbedtls_free( cur ); - - cur = next; - } -} - -#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) -static void ssl_dtls_replay_reset( mbedtls_ssl_context *ssl ); -#endif - -/* - * Swap transform_out and out_ctr with the alternative ones - */ -static void ssl_swap_epochs( mbedtls_ssl_context *ssl ) -{ - mbedtls_ssl_transform *tmp_transform; - unsigned char tmp_out_ctr[8]; - - if( ssl->transform_out == ssl->handshake->alt_transform_out ) - { - MBEDTLS_SSL_DEBUG_MSG( 3, ( "skip swap epochs" ) ); - return; - } - - MBEDTLS_SSL_DEBUG_MSG( 3, ( "swap epochs" ) ); - - /* Swap transforms */ - tmp_transform = ssl->transform_out; - ssl->transform_out = ssl->handshake->alt_transform_out; - ssl->handshake->alt_transform_out = tmp_transform; - - /* Swap epoch + sequence_number */ - memcpy( tmp_out_ctr, ssl->cur_out_ctr, 8 ); - memcpy( ssl->cur_out_ctr, ssl->handshake->alt_out_ctr, 8 ); - memcpy( ssl->handshake->alt_out_ctr, tmp_out_ctr, 8 ); - - /* Adjust to the newly activated transform */ - ssl_update_out_pointers( ssl, ssl->transform_out ); - -#if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) - if( mbedtls_ssl_hw_record_activate != NULL ) - { - if( ( ret = mbedtls_ssl_hw_record_activate( ssl, MBEDTLS_SSL_CHANNEL_OUTBOUND ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_hw_record_activate", ret ); - return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); - } - } -#endif -} - -/* - * Retransmit the current flight of messages. - */ -int mbedtls_ssl_resend( mbedtls_ssl_context *ssl ) -{ - int ret = 0; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> mbedtls_ssl_resend" ) ); - - ret = mbedtls_ssl_flight_transmit( ssl ); - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= mbedtls_ssl_resend" ) ); - - return( ret ); -} - -/* - * Transmit or retransmit the current flight of messages. - * - * Need to remember the current message in case flush_output returns - * WANT_WRITE, causing us to exit this function and come back later. - * This function must be called until state is no longer SENDING. - */ -int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) -{ - int ret; - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> mbedtls_ssl_flight_transmit" ) ); - - if( ssl->handshake->retransmit_state != MBEDTLS_SSL_RETRANS_SENDING ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialise flight transmission" ) ); - - ssl->handshake->cur_msg = ssl->handshake->flight; - ssl->handshake->cur_msg_p = ssl->handshake->flight->p + 12; - ssl_swap_epochs( ssl ); - - ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_SENDING; - } - - while( ssl->handshake->cur_msg != NULL ) - { - size_t max_frag_len; - const mbedtls_ssl_flight_item * const cur = ssl->handshake->cur_msg; - - int const is_finished = - ( cur->type == MBEDTLS_SSL_MSG_HANDSHAKE && - cur->p[0] == MBEDTLS_SSL_HS_FINISHED ); - - uint8_t const force_flush = ssl->disable_datagram_packing == 1 ? - SSL_FORCE_FLUSH : SSL_DONT_FORCE_FLUSH; - - /* Swap epochs before sending Finished: we can't do it after - * sending ChangeCipherSpec, in case write returns WANT_READ. - * Must be done before copying, may change out_msg pointer */ - if( is_finished && ssl->handshake->cur_msg_p == ( cur->p + 12 ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "swap epochs to send finished message" ) ); - ssl_swap_epochs( ssl ); - } - - ret = ssl_get_remaining_payload_in_datagram( ssl ); - if( ret < 0 ) - return( ret ); - max_frag_len = (size_t) ret; - - /* CCS is copied as is, while HS messages may need fragmentation */ - if( cur->type == MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC ) - { - if( max_frag_len == 0 ) - { - if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) - return( ret ); - - continue; - } - - memcpy( ssl->out_msg, cur->p, cur->len ); - ssl->out_msglen = cur->len; - ssl->out_msgtype = cur->type; - - /* Update position inside current message */ - ssl->handshake->cur_msg_p += cur->len; - } - else - { - const unsigned char * const p = ssl->handshake->cur_msg_p; - const size_t hs_len = cur->len - 12; - const size_t frag_off = p - ( cur->p + 12 ); - const size_t rem_len = hs_len - frag_off; - size_t cur_hs_frag_len, max_hs_frag_len; - - if( ( max_frag_len < 12 ) || ( max_frag_len == 12 && hs_len != 0 ) ) - { - if( is_finished ) - ssl_swap_epochs( ssl ); - - if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) - return( ret ); - - continue; - } - max_hs_frag_len = max_frag_len - 12; - - cur_hs_frag_len = rem_len > max_hs_frag_len ? - max_hs_frag_len : rem_len; - - if( frag_off == 0 && cur_hs_frag_len != hs_len ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "fragmenting handshake message (%u > %u)", - (unsigned) cur_hs_frag_len, - (unsigned) max_hs_frag_len ) ); - } - - /* Messages are stored with handshake headers as if not fragmented, - * copy beginning of headers then fill fragmentation fields. - * Handshake headers: type(1) len(3) seq(2) f_off(3) f_len(3) */ - memcpy( ssl->out_msg, cur->p, 6 ); - - ssl->out_msg[6] = ( ( frag_off >> 16 ) & 0xff ); - ssl->out_msg[7] = ( ( frag_off >> 8 ) & 0xff ); - ssl->out_msg[8] = ( ( frag_off ) & 0xff ); - - ssl->out_msg[ 9] = ( ( cur_hs_frag_len >> 16 ) & 0xff ); - ssl->out_msg[10] = ( ( cur_hs_frag_len >> 8 ) & 0xff ); - ssl->out_msg[11] = ( ( cur_hs_frag_len ) & 0xff ); - - MBEDTLS_SSL_DEBUG_BUF( 3, "handshake header", ssl->out_msg, 12 ); - - /* Copy the handshake message content and set records fields */ - memcpy( ssl->out_msg + 12, p, cur_hs_frag_len ); - ssl->out_msglen = cur_hs_frag_len + 12; - ssl->out_msgtype = cur->type; - - /* Update position inside current message */ - ssl->handshake->cur_msg_p += cur_hs_frag_len; - } - - /* If done with the current message move to the next one if any */ - if( ssl->handshake->cur_msg_p >= cur->p + cur->len ) - { - if( cur->next != NULL ) - { - ssl->handshake->cur_msg = cur->next; - ssl->handshake->cur_msg_p = cur->next->p + 12; - } - else - { - ssl->handshake->cur_msg = NULL; - ssl->handshake->cur_msg_p = NULL; - } - } - - /* Actually send the message out */ - if( ( ret = mbedtls_ssl_write_record( ssl, force_flush ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); - return( ret ); - } - } - - if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) - return( ret ); - - /* Update state and set timer */ - if( ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER ) - ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_FINISHED; - else - { - ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_WAITING; - ssl_set_timer( ssl, ssl->handshake->retransmit_timeout ); - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= mbedtls_ssl_flight_transmit" ) ); - - return( 0 ); -} - -/* - * To be called when the last message of an incoming flight is received. - */ -void mbedtls_ssl_recv_flight_completed( mbedtls_ssl_context *ssl ) -{ - /* We won't need to resend that one any more */ - ssl_flight_free( ssl->handshake->flight ); - ssl->handshake->flight = NULL; - ssl->handshake->cur_msg = NULL; - - /* The next incoming flight will start with this msg_seq */ - ssl->handshake->in_flight_start_seq = ssl->handshake->in_msg_seq; - - /* We don't want to remember CCS's across flight boundaries. */ - ssl->handshake->buffering.seen_ccs = 0; - - /* Clear future message buffering structure. */ - ssl_buffering_free( ssl ); - - /* Cancel timer */ - ssl_set_timer( ssl, 0 ); - - if( ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && - ssl->in_msg[0] == MBEDTLS_SSL_HS_FINISHED ) - { - ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_FINISHED; - } - else - ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_PREPARING; -} - -/* - * To be called when the last message of an outgoing flight is send. - */ -void mbedtls_ssl_send_flight_completed( mbedtls_ssl_context *ssl ) -{ - ssl_reset_retransmit_timeout( ssl ); - ssl_set_timer( ssl, ssl->handshake->retransmit_timeout ); - - if( ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && - ssl->in_msg[0] == MBEDTLS_SSL_HS_FINISHED ) - { - ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_FINISHED; - } - else - ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_WAITING; -} -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - -/* - * Handshake layer functions - */ - -/* - * Write (DTLS: or queue) current handshake (including CCS) message. - * - * - fill in handshake headers - * - update handshake checksum - * - DTLS: save message for resending - * - then pass to the record layer - * - * DTLS: except for HelloRequest, messages are only queued, and will only be - * actually sent when calling flight_transmit() or resend(). - * - * Inputs: - * - ssl->out_msglen: 4 + actual handshake message len - * (4 is the size of handshake headers for TLS) - * - ssl->out_msg[0]: the handshake type (ClientHello, ServerHello, etc) - * - ssl->out_msg + 4: the handshake message body - * - * Outputs, ie state before passing to flight_append() or write_record(): - * - ssl->out_msglen: the length of the record contents - * (including handshake headers but excluding record headers) - * - ssl->out_msg: the record contents (handshake headers + content) - */ -int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) -{ - int ret; - const size_t hs_len = ssl->out_msglen - 4; - const unsigned char hs_type = ssl->out_msg[0]; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write handshake message" ) ); - - /* - * Sanity checks - */ - if( ssl->out_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE && - ssl->out_msgtype != MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC ) - { - /* In SSLv3, the client might send a NoCertificate alert. */ -#if defined(MBEDTLS_SSL_PROTO_SSL3) && defined(MBEDTLS_SSL_CLI_C) - if( ! ( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 && - ssl->out_msgtype == MBEDTLS_SSL_MSG_ALERT && - ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT ) ) -#endif /* MBEDTLS_SSL_PROTO_SSL3 && MBEDTLS_SSL_SRV_C */ - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - } - - /* Whenever we send anything different from a - * HelloRequest we should be in a handshake - double check. */ - if( ! ( ssl->out_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && - hs_type == MBEDTLS_SSL_HS_HELLO_REQUEST ) && - ssl->handshake == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && - ssl->handshake != NULL && - ssl->handshake->retransmit_state == MBEDTLS_SSL_RETRANS_SENDING ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } -#endif - - /* Double-check that we did not exceed the bounds - * of the outgoing record buffer. - * This should never fail as the various message - * writing functions must obey the bounds of the - * outgoing record buffer, but better be safe. - * - * Note: We deliberately do not check for the MTU or MFL here. - */ - if( ssl->out_msglen > MBEDTLS_SSL_OUT_CONTENT_LEN ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "Record too large: " - "size %u, maximum %u", - (unsigned) ssl->out_msglen, - (unsigned) MBEDTLS_SSL_OUT_CONTENT_LEN ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - /* - * Fill handshake headers - */ - if( ssl->out_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE ) - { - ssl->out_msg[1] = (unsigned char)( hs_len >> 16 ); - ssl->out_msg[2] = (unsigned char)( hs_len >> 8 ); - ssl->out_msg[3] = (unsigned char)( hs_len ); - - /* - * DTLS has additional fields in the Handshake layer, - * between the length field and the actual payload: - * uint16 message_seq; - * uint24 fragment_offset; - * uint24 fragment_length; - */ -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - /* Make room for the additional DTLS fields */ - if( MBEDTLS_SSL_OUT_CONTENT_LEN - ssl->out_msglen < 8 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "DTLS handshake message too large: " - "size %u, maximum %u", - (unsigned) ( hs_len ), - (unsigned) ( MBEDTLS_SSL_OUT_CONTENT_LEN - 12 ) ) ); - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - } - - memmove( ssl->out_msg + 12, ssl->out_msg + 4, hs_len ); - ssl->out_msglen += 8; - - /* Write message_seq and update it, except for HelloRequest */ - if( hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) - { - ssl->out_msg[4] = ( ssl->handshake->out_msg_seq >> 8 ) & 0xFF; - ssl->out_msg[5] = ( ssl->handshake->out_msg_seq ) & 0xFF; - ++( ssl->handshake->out_msg_seq ); - } - else - { - ssl->out_msg[4] = 0; - ssl->out_msg[5] = 0; - } - - /* Handshake hashes are computed without fragmentation, - * so set frag_offset = 0 and frag_len = hs_len for now */ - memset( ssl->out_msg + 6, 0x00, 3 ); - memcpy( ssl->out_msg + 9, ssl->out_msg + 1, 3 ); - } -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - - /* Update running hashes of handshake messages seen */ - if( hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) - ssl->handshake->update_checksum( ssl, ssl->out_msg, ssl->out_msglen ); - } - - /* Either send now, or just save to be sent (and resent) later */ -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && - ! ( ssl->out_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && - hs_type == MBEDTLS_SSL_HS_HELLO_REQUEST ) ) - { - if( ( ret = ssl_flight_append( ssl ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "ssl_flight_append", ret ); - return( ret ); - } - } - else -#endif - { - if( ( ret = mbedtls_ssl_write_record( ssl, SSL_FORCE_FLUSH ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_record", ret ); - return( ret ); - } - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write handshake message" ) ); - - return( 0 ); -} - -/* - * Record layer functions - */ - -/* - * Write current record. - * - * Uses: - * - ssl->out_msgtype: type of the message (AppData, Handshake, Alert, CCS) - * - ssl->out_msglen: length of the record content (excl headers) - * - ssl->out_msg: record content - */ -int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl, uint8_t force_flush ) -{ - int ret, done = 0; - size_t len = ssl->out_msglen; - uint8_t flush = force_flush; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write record" ) ); - -#if defined(MBEDTLS_ZLIB_SUPPORT) - if( ssl->transform_out != NULL && - ssl->session_out->compression == MBEDTLS_SSL_COMPRESS_DEFLATE ) - { - if( ( ret = ssl_compress_buf( ssl ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "ssl_compress_buf", ret ); - return( ret ); - } - - len = ssl->out_msglen; - } -#endif /*MBEDTLS_ZLIB_SUPPORT */ - -#if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) - if( mbedtls_ssl_hw_record_write != NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "going for mbedtls_ssl_hw_record_write()" ) ); - - ret = mbedtls_ssl_hw_record_write( ssl ); - if( ret != 0 && ret != MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_hw_record_write", ret ); - return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); - } - - if( ret == 0 ) - done = 1; - } -#endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ - if( !done ) - { - unsigned i; - size_t protected_record_size; - - ssl->out_hdr[0] = (unsigned char) ssl->out_msgtype; - mbedtls_ssl_write_version( ssl->major_ver, ssl->minor_ver, - ssl->conf->transport, ssl->out_hdr + 1 ); - - memcpy( ssl->out_ctr, ssl->cur_out_ctr, 8 ); - ssl->out_len[0] = (unsigned char)( len >> 8 ); - ssl->out_len[1] = (unsigned char)( len ); - - if( ssl->transform_out != NULL ) - { - if( ( ret = ssl_encrypt_buf( ssl ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "ssl_encrypt_buf", ret ); - return( ret ); - } - - len = ssl->out_msglen; - ssl->out_len[0] = (unsigned char)( len >> 8 ); - ssl->out_len[1] = (unsigned char)( len ); - } - - protected_record_size = len + mbedtls_ssl_hdr_len( ssl ); - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - /* In case of DTLS, double-check that we don't exceed - * the remaining space in the datagram. */ - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - ret = ssl_get_remaining_space_in_datagram( ssl ); - if( ret < 0 ) - return( ret ); - - if( protected_record_size > (size_t) ret ) - { - /* Should never happen */ - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - } -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - - MBEDTLS_SSL_DEBUG_MSG( 3, ( "output record: msgtype = %d, " - "version = [%d:%d], msglen = %d", - ssl->out_hdr[0], ssl->out_hdr[1], - ssl->out_hdr[2], len ) ); - - MBEDTLS_SSL_DEBUG_BUF( 4, "output record sent to network", - ssl->out_hdr, protected_record_size ); - - ssl->out_left += protected_record_size; - ssl->out_hdr += protected_record_size; - ssl_update_out_pointers( ssl, ssl->transform_out ); - - for( i = 8; i > ssl_ep_len( ssl ); i-- ) - if( ++ssl->cur_out_ctr[i - 1] != 0 ) - break; - - /* The loop goes to its end iff the counter is wrapping */ - if( i == ssl_ep_len( ssl ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "outgoing message counter would wrap" ) ); - return( MBEDTLS_ERR_SSL_COUNTER_WRAPPING ); - } - } - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && - flush == SSL_DONT_FORCE_FLUSH ) - { - size_t remaining; - ret = ssl_get_remaining_payload_in_datagram( ssl ); - if( ret < 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "ssl_get_remaining_payload_in_datagram", - ret ); - return( ret ); - } - - remaining = (size_t) ret; - if( remaining == 0 ) - { - flush = SSL_FORCE_FLUSH; - } - else - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Still %u bytes available in current datagram", (unsigned) remaining ) ); - } - } -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - - if( ( flush == SSL_FORCE_FLUSH ) && - ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flush_output", ret ); - return( ret ); - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write record" ) ); - - return( 0 ); -} - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - -static int ssl_hs_is_proper_fragment( mbedtls_ssl_context *ssl ) -{ - if( ssl->in_msglen < ssl->in_hslen || - memcmp( ssl->in_msg + 6, "\0\0\0", 3 ) != 0 || - memcmp( ssl->in_msg + 9, ssl->in_msg + 1, 3 ) != 0 ) - { - return( 1 ); - } - return( 0 ); -} - -static uint32_t ssl_get_hs_frag_len( mbedtls_ssl_context const *ssl ) -{ - return( ( ssl->in_msg[9] << 16 ) | - ( ssl->in_msg[10] << 8 ) | - ssl->in_msg[11] ); -} - -static uint32_t ssl_get_hs_frag_off( mbedtls_ssl_context const *ssl ) -{ - return( ( ssl->in_msg[6] << 16 ) | - ( ssl->in_msg[7] << 8 ) | - ssl->in_msg[8] ); -} - -static int ssl_check_hs_header( mbedtls_ssl_context const *ssl ) -{ - uint32_t msg_len, frag_off, frag_len; - - msg_len = ssl_get_hs_total_len( ssl ); - frag_off = ssl_get_hs_frag_off( ssl ); - frag_len = ssl_get_hs_frag_len( ssl ); - - if( frag_off > msg_len ) - return( -1 ); - - if( frag_len > msg_len - frag_off ) - return( -1 ); - - if( frag_len + 12 > ssl->in_msglen ) - return( -1 ); - - return( 0 ); -} - -/* - * Mark bits in bitmask (used for DTLS HS reassembly) - */ -static void ssl_bitmask_set( unsigned char *mask, size_t offset, size_t len ) -{ - unsigned int start_bits, end_bits; - - start_bits = 8 - ( offset % 8 ); - if( start_bits != 8 ) - { - size_t first_byte_idx = offset / 8; - - /* Special case */ - if( len <= start_bits ) - { - for( ; len != 0; len-- ) - mask[first_byte_idx] |= 1 << ( start_bits - len ); - - /* Avoid potential issues with offset or len becoming invalid */ - return; - } - - offset += start_bits; /* Now offset % 8 == 0 */ - len -= start_bits; - - for( ; start_bits != 0; start_bits-- ) - mask[first_byte_idx] |= 1 << ( start_bits - 1 ); - } - - end_bits = len % 8; - if( end_bits != 0 ) - { - size_t last_byte_idx = ( offset + len ) / 8; - - len -= end_bits; /* Now len % 8 == 0 */ - - for( ; end_bits != 0; end_bits-- ) - mask[last_byte_idx] |= 1 << ( 8 - end_bits ); - } - - memset( mask + offset / 8, 0xFF, len / 8 ); -} - -/* - * Check that bitmask is full - */ -static int ssl_bitmask_check( unsigned char *mask, size_t len ) -{ - size_t i; - - for( i = 0; i < len / 8; i++ ) - if( mask[i] != 0xFF ) - return( -1 ); - - for( i = 0; i < len % 8; i++ ) - if( ( mask[len / 8] & ( 1 << ( 7 - i ) ) ) == 0 ) - return( -1 ); - - return( 0 ); -} - -/* msg_len does not include the handshake header */ -static size_t ssl_get_reassembly_buffer_size( size_t msg_len, - unsigned add_bitmap ) -{ - size_t alloc_len; - - alloc_len = 12; /* Handshake header */ - alloc_len += msg_len; /* Content buffer */ - - if( add_bitmap ) - alloc_len += msg_len / 8 + ( msg_len % 8 != 0 ); /* Bitmap */ - - return( alloc_len ); -} - -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - -static uint32_t ssl_get_hs_total_len( mbedtls_ssl_context const *ssl ) -{ - return( ( ssl->in_msg[1] << 16 ) | - ( ssl->in_msg[2] << 8 ) | - ssl->in_msg[3] ); -} - -int mbedtls_ssl_prepare_handshake_record( mbedtls_ssl_context *ssl ) -{ - if( ssl->in_msglen < mbedtls_ssl_hs_hdr_len( ssl ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "handshake message too short: %d", - ssl->in_msglen ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } - - ssl->in_hslen = mbedtls_ssl_hs_hdr_len( ssl ) + ssl_get_hs_total_len( ssl ); - - MBEDTLS_SSL_DEBUG_MSG( 3, ( "handshake message: msglen =" - " %d, type = %d, hslen = %d", - ssl->in_msglen, ssl->in_msg[0], ssl->in_hslen ) ); - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - int ret; - unsigned int recv_msg_seq = ( ssl->in_msg[4] << 8 ) | ssl->in_msg[5]; - - if( ssl_check_hs_header( ssl ) != 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid handshake header" ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } - - if( ssl->handshake != NULL && - ( ( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER && - recv_msg_seq != ssl->handshake->in_msg_seq ) || - ( ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER && - ssl->in_msg[0] != MBEDTLS_SSL_HS_CLIENT_HELLO ) ) ) - { - if( recv_msg_seq > ssl->handshake->in_msg_seq ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "received future handshake message of sequence number %u (next %u)", - recv_msg_seq, - ssl->handshake->in_msg_seq ) ); - return( MBEDTLS_ERR_SSL_EARLY_MESSAGE ); - } - - /* Retransmit only on last message from previous flight, to avoid - * too many retransmissions. - * Besides, No sane server ever retransmits HelloVerifyRequest */ - if( recv_msg_seq == ssl->handshake->in_flight_start_seq - 1 && - ssl->in_msg[0] != MBEDTLS_SSL_HS_HELLO_VERIFY_REQUEST ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "received message from last flight, " - "message_seq = %d, start_of_flight = %d", - recv_msg_seq, - ssl->handshake->in_flight_start_seq ) ); - - if( ( ret = mbedtls_ssl_resend( ssl ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_resend", ret ); - return( ret ); - } - } - else - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "dropping out-of-sequence message: " - "message_seq = %d, expected = %d", - recv_msg_seq, - ssl->handshake->in_msg_seq ) ); - } - - return( MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ); - } - /* Wait until message completion to increment in_msg_seq */ - - /* Message reassembly is handled alongside buffering of future - * messages; the commonality is that both handshake fragments and - * future messages cannot be forwarded immediately to the - * handshake logic layer. */ - if( ssl_hs_is_proper_fragment( ssl ) == 1 ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "found fragmented DTLS handshake message" ) ); - return( MBEDTLS_ERR_SSL_EARLY_MESSAGE ); - } - } - else -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - /* With TLS we don't handle fragmentation (for now) */ - if( ssl->in_msglen < ssl->in_hslen ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "TLS handshake fragmentation not supported" ) ); - return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); - } - - return( 0 ); -} - -void mbedtls_ssl_update_handshake_status( mbedtls_ssl_context *ssl ) -{ - mbedtls_ssl_handshake_params * const hs = ssl->handshake; - - if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER && hs != NULL ) - { - ssl->handshake->update_checksum( ssl, ssl->in_msg, ssl->in_hslen ); - } - - /* Handshake message is complete, increment counter */ -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && - ssl->handshake != NULL ) - { - unsigned offset; - mbedtls_ssl_hs_buffer *hs_buf; - - /* Increment handshake sequence number */ - hs->in_msg_seq++; - - /* - * Clear up handshake buffering and reassembly structure. - */ - - /* Free first entry */ - ssl_buffering_free_slot( ssl, 0 ); - - /* Shift all other entries */ - for( offset = 0, hs_buf = &hs->buffering.hs[0]; - offset + 1 < MBEDTLS_SSL_MAX_BUFFERED_HS; - offset++, hs_buf++ ) - { - *hs_buf = *(hs_buf + 1); - } - - /* Create a fresh last entry */ - memset( hs_buf, 0, sizeof( mbedtls_ssl_hs_buffer ) ); - } -#endif -} - -/* - * DTLS anti-replay: RFC 6347 4.1.2.6 - * - * in_window is a field of bits numbered from 0 (lsb) to 63 (msb). - * Bit n is set iff record number in_window_top - n has been seen. - * - * Usually, in_window_top is the last record number seen and the lsb of - * in_window is set. The only exception is the initial state (record number 0 - * not seen yet). - */ -#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) -static void ssl_dtls_replay_reset( mbedtls_ssl_context *ssl ) -{ - ssl->in_window_top = 0; - ssl->in_window = 0; -} - -static inline uint64_t ssl_load_six_bytes( unsigned char *buf ) -{ - return( ( (uint64_t) buf[0] << 40 ) | - ( (uint64_t) buf[1] << 32 ) | - ( (uint64_t) buf[2] << 24 ) | - ( (uint64_t) buf[3] << 16 ) | - ( (uint64_t) buf[4] << 8 ) | - ( (uint64_t) buf[5] ) ); -} - -/* - * Return 0 if sequence number is acceptable, -1 otherwise - */ -int mbedtls_ssl_dtls_replay_check( mbedtls_ssl_context *ssl ) -{ - uint64_t rec_seqnum = ssl_load_six_bytes( ssl->in_ctr + 2 ); - uint64_t bit; - - if( ssl->conf->anti_replay == MBEDTLS_SSL_ANTI_REPLAY_DISABLED ) - return( 0 ); - - if( rec_seqnum > ssl->in_window_top ) - return( 0 ); - - bit = ssl->in_window_top - rec_seqnum; - - if( bit >= 64 ) - return( -1 ); - - if( ( ssl->in_window & ( (uint64_t) 1 << bit ) ) != 0 ) - return( -1 ); - - return( 0 ); -} - -/* - * Update replay window on new validated record - */ -void mbedtls_ssl_dtls_replay_update( mbedtls_ssl_context *ssl ) -{ - uint64_t rec_seqnum = ssl_load_six_bytes( ssl->in_ctr + 2 ); - - if( ssl->conf->anti_replay == MBEDTLS_SSL_ANTI_REPLAY_DISABLED ) - return; - - if( rec_seqnum > ssl->in_window_top ) - { - /* Update window_top and the contents of the window */ - uint64_t shift = rec_seqnum - ssl->in_window_top; - - if( shift >= 64 ) - ssl->in_window = 1; - else - { - ssl->in_window <<= shift; - ssl->in_window |= 1; - } - - ssl->in_window_top = rec_seqnum; - } - else - { - /* Mark that number as seen in the current window */ - uint64_t bit = ssl->in_window_top - rec_seqnum; - - if( bit < 64 ) /* Always true, but be extra sure */ - ssl->in_window |= (uint64_t) 1 << bit; - } -} -#endif /* MBEDTLS_SSL_DTLS_ANTI_REPLAY */ - -#if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) && defined(MBEDTLS_SSL_SRV_C) -/* Forward declaration */ -static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ); - -/* - * Without any SSL context, check if a datagram looks like a ClientHello with - * a valid cookie, and if it doesn't, generate a HelloVerifyRequest message. - * Both input and output include full DTLS headers. - * - * - if cookie is valid, return 0 - * - if ClientHello looks superficially valid but cookie is not, - * fill obuf and set olen, then - * return MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED - * - otherwise return a specific error code - */ -static int ssl_check_dtls_clihlo_cookie( - mbedtls_ssl_cookie_write_t *f_cookie_write, - mbedtls_ssl_cookie_check_t *f_cookie_check, - void *p_cookie, - const unsigned char *cli_id, size_t cli_id_len, - const unsigned char *in, size_t in_len, - unsigned char *obuf, size_t buf_len, size_t *olen ) -{ - size_t sid_len, cookie_len; - unsigned char *p; - - if( f_cookie_write == NULL || f_cookie_check == NULL ) - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - - /* - * Structure of ClientHello with record and handshake headers, - * and expected values. We don't need to check a lot, more checks will be - * done when actually parsing the ClientHello - skipping those checks - * avoids code duplication and does not make cookie forging any easier. - * - * 0-0 ContentType type; copied, must be handshake - * 1-2 ProtocolVersion version; copied - * 3-4 uint16 epoch; copied, must be 0 - * 5-10 uint48 sequence_number; copied - * 11-12 uint16 length; (ignored) - * - * 13-13 HandshakeType msg_type; (ignored) - * 14-16 uint24 length; (ignored) - * 17-18 uint16 message_seq; copied - * 19-21 uint24 fragment_offset; copied, must be 0 - * 22-24 uint24 fragment_length; (ignored) - * - * 25-26 ProtocolVersion client_version; (ignored) - * 27-58 Random random; (ignored) - * 59-xx SessionID session_id; 1 byte len + sid_len content - * 60+ opaque cookie<0..2^8-1>; 1 byte len + content - * ... - * - * Minimum length is 61 bytes. - */ - if( in_len < 61 || - in[0] != MBEDTLS_SSL_MSG_HANDSHAKE || - in[3] != 0 || in[4] != 0 || - in[19] != 0 || in[20] != 0 || in[21] != 0 ) - { - return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); - } - - sid_len = in[59]; - if( sid_len > in_len - 61 ) - return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); - - cookie_len = in[60 + sid_len]; - if( cookie_len > in_len - 60 ) - return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); - - if( f_cookie_check( p_cookie, in + sid_len + 61, cookie_len, - cli_id, cli_id_len ) == 0 ) - { - /* Valid cookie */ - return( 0 ); - } - - /* - * If we get here, we've got an invalid cookie, let's prepare HVR. - * - * 0-0 ContentType type; copied - * 1-2 ProtocolVersion version; copied - * 3-4 uint16 epoch; copied - * 5-10 uint48 sequence_number; copied - * 11-12 uint16 length; olen - 13 - * - * 13-13 HandshakeType msg_type; hello_verify_request - * 14-16 uint24 length; olen - 25 - * 17-18 uint16 message_seq; copied - * 19-21 uint24 fragment_offset; copied - * 22-24 uint24 fragment_length; olen - 25 - * - * 25-26 ProtocolVersion server_version; 0xfe 0xff - * 27-27 opaque cookie<0..2^8-1>; cookie_len = olen - 27, cookie - * - * Minimum length is 28. - */ - if( buf_len < 28 ) - return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); - - /* Copy most fields and adapt others */ - memcpy( obuf, in, 25 ); - obuf[13] = MBEDTLS_SSL_HS_HELLO_VERIFY_REQUEST; - obuf[25] = 0xfe; - obuf[26] = 0xff; - - /* Generate and write actual cookie */ - p = obuf + 28; - if( f_cookie_write( p_cookie, - &p, obuf + buf_len, cli_id, cli_id_len ) != 0 ) - { - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - *olen = p - obuf; - - /* Go back and fill length fields */ - obuf[27] = (unsigned char)( *olen - 28 ); - - obuf[14] = obuf[22] = (unsigned char)( ( *olen - 25 ) >> 16 ); - obuf[15] = obuf[23] = (unsigned char)( ( *olen - 25 ) >> 8 ); - obuf[16] = obuf[24] = (unsigned char)( ( *olen - 25 ) ); - - obuf[11] = (unsigned char)( ( *olen - 13 ) >> 8 ); - obuf[12] = (unsigned char)( ( *olen - 13 ) ); - - return( MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED ); -} - -/* - * Handle possible client reconnect with the same UDP quadruplet - * (RFC 6347 Section 4.2.8). - * - * Called by ssl_parse_record_header() in case we receive an epoch 0 record - * that looks like a ClientHello. - * - * - if the input looks like a ClientHello without cookies, - * send back HelloVerifyRequest, then - * return MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED - * - if the input looks like a ClientHello with a valid cookie, - * reset the session of the current context, and - * return MBEDTLS_ERR_SSL_CLIENT_RECONNECT - * - if anything goes wrong, return a specific error code - * - * mbedtls_ssl_read_record() will ignore the record if anything else than - * MBEDTLS_ERR_SSL_CLIENT_RECONNECT or 0 is returned, although this function - * cannot not return 0. - */ -static int ssl_handle_possible_reconnect( mbedtls_ssl_context *ssl ) -{ - int ret; - size_t len; - - ret = ssl_check_dtls_clihlo_cookie( - ssl->conf->f_cookie_write, - ssl->conf->f_cookie_check, - ssl->conf->p_cookie, - ssl->cli_id, ssl->cli_id_len, - ssl->in_buf, ssl->in_left, - ssl->out_buf, MBEDTLS_SSL_OUT_CONTENT_LEN, &len ); - - MBEDTLS_SSL_DEBUG_RET( 2, "ssl_check_dtls_clihlo_cookie", ret ); - - if( ret == MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED ) - { - /* Don't check write errors as we can't do anything here. - * If the error is permanent we'll catch it later, - * if it's not, then hopefully it'll work next time. */ - (void) ssl->f_send( ssl->p_bio, ssl->out_buf, len ); - - return( MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED ); - } - - if( ret == 0 ) - { - /* Got a valid cookie, partially reset context */ - if( ( ret = ssl_session_reset_int( ssl, 1 ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "reset", ret ); - return( ret ); - } - - return( MBEDTLS_ERR_SSL_CLIENT_RECONNECT ); - } - - return( ret ); -} -#endif /* MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE && MBEDTLS_SSL_SRV_C */ - -/* - * ContentType type; - * ProtocolVersion version; - * uint16 epoch; // DTLS only - * uint48 sequence_number; // DTLS only - * uint16 length; - * - * Return 0 if header looks sane (and, for DTLS, the record is expected) - * MBEDTLS_ERR_SSL_INVALID_RECORD if the header looks bad, - * MBEDTLS_ERR_SSL_UNEXPECTED_RECORD (DTLS only) if sane but unexpected. - * - * With DTLS, mbedtls_ssl_read_record() will: - * 1. proceed with the record if this function returns 0 - * 2. drop only the current record if this function returns UNEXPECTED_RECORD - * 3. return CLIENT_RECONNECT if this function return that value - * 4. drop the whole datagram if this function returns anything else. - * Point 2 is needed when the peer is resending, and we have already received - * the first record from a datagram but are still waiting for the others. - */ -static int ssl_parse_record_header( mbedtls_ssl_context *ssl ) -{ - int major_ver, minor_ver; - - MBEDTLS_SSL_DEBUG_BUF( 4, "input record header", ssl->in_hdr, mbedtls_ssl_hdr_len( ssl ) ); - - ssl->in_msgtype = ssl->in_hdr[0]; - ssl->in_msglen = ( ssl->in_len[0] << 8 ) | ssl->in_len[1]; - mbedtls_ssl_read_version( &major_ver, &minor_ver, ssl->conf->transport, ssl->in_hdr + 1 ); - - MBEDTLS_SSL_DEBUG_MSG( 3, ( "input record: msgtype = %d, " - "version = [%d:%d], msglen = %d", - ssl->in_msgtype, - major_ver, minor_ver, ssl->in_msglen ) ); - - /* Check record type */ - if( ssl->in_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE && - ssl->in_msgtype != MBEDTLS_SSL_MSG_ALERT && - ssl->in_msgtype != MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC && - ssl->in_msgtype != MBEDTLS_SSL_MSG_APPLICATION_DATA ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "unknown record type" ) ); - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - /* Silently ignore invalid DTLS records as recommended by RFC 6347 - * Section 4.1.2.7 */ - if( ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM ) -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); - - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } - - /* Check version */ - if( major_ver != ssl->major_ver ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "major version mismatch" ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } - - if( minor_ver > ssl->conf->max_minor_ver ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "minor version mismatch" ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } - - /* Check length against the size of our buffer */ - if( ssl->in_msglen > MBEDTLS_SSL_IN_BUFFER_LEN - - (size_t)( ssl->in_msg - ssl->in_buf ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad message length" ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } - - /* - * DTLS-related tests. - * Check epoch before checking length constraint because - * the latter varies with the epoch. E.g., if a ChangeCipherSpec - * message gets duplicated before the corresponding Finished message, - * the second ChangeCipherSpec should be discarded because it belongs - * to an old epoch, but not because its length is shorter than - * the minimum record length for packets using the new record transform. - * Note that these two kinds of failures are handled differently, - * as an unexpected record is silently skipped but an invalid - * record leads to the entire datagram being dropped. - */ -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - unsigned int rec_epoch = ( ssl->in_ctr[0] << 8 ) | ssl->in_ctr[1]; - - /* Check epoch (and sequence number) with DTLS */ - if( rec_epoch != ssl->in_epoch ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "record from another epoch: " - "expected %d, received %d", - ssl->in_epoch, rec_epoch ) ); - -#if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) && defined(MBEDTLS_SSL_SRV_C) - /* - * Check for an epoch 0 ClientHello. We can't use in_msg here to - * access the first byte of record content (handshake type), as we - * have an active transform (possibly iv_len != 0), so use the - * fact that the record header len is 13 instead. - */ - if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && - ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER && - rec_epoch == 0 && - ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && - ssl->in_left > 13 && - ssl->in_buf[13] == MBEDTLS_SSL_HS_CLIENT_HELLO ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "possible client reconnect " - "from the same port" ) ); - return( ssl_handle_possible_reconnect( ssl ) ); - } - else -#endif /* MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE && MBEDTLS_SSL_SRV_C */ - { - /* Consider buffering the record. */ - if( rec_epoch == (unsigned int) ssl->in_epoch + 1 ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Consider record for buffering" ) ); - return( MBEDTLS_ERR_SSL_EARLY_MESSAGE ); - } - - return( MBEDTLS_ERR_SSL_UNEXPECTED_RECORD ); - } - } - -#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) - /* Replay detection only works for the current epoch */ - if( rec_epoch == ssl->in_epoch && - mbedtls_ssl_dtls_replay_check( ssl ) != 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "replayed record" ) ); - return( MBEDTLS_ERR_SSL_UNEXPECTED_RECORD ); - } -#endif - - /* Drop unexpected ApplicationData records, - * except at the beginning of renegotiations */ - if( ssl->in_msgtype == MBEDTLS_SSL_MSG_APPLICATION_DATA && - ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER -#if defined(MBEDTLS_SSL_RENEGOTIATION) - && ! ( ssl->renego_status == MBEDTLS_SSL_RENEGOTIATION_IN_PROGRESS && - ssl->state == MBEDTLS_SSL_SERVER_HELLO ) -#endif - ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "dropping unexpected ApplicationData" ) ); - return( MBEDTLS_ERR_SSL_UNEXPECTED_RECORD ); - } - } -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - - - /* Check length against bounds of the current transform and version */ - if( ssl->transform_in == NULL ) - { - if( ssl->in_msglen < 1 || - ssl->in_msglen > MBEDTLS_SSL_IN_CONTENT_LEN ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad message length" ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } - } - else - { - if( ssl->in_msglen < ssl->transform_in->minlen ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad message length" ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } - -#if defined(MBEDTLS_SSL_PROTO_SSL3) - if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 && - ssl->in_msglen > ssl->transform_in->minlen + MBEDTLS_SSL_IN_CONTENT_LEN ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad message length" ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } -#endif -#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ - defined(MBEDTLS_SSL_PROTO_TLS1_2) - /* - * TLS encrypted messages can have up to 256 bytes of padding - */ - if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_1 && - ssl->in_msglen > ssl->transform_in->minlen + - MBEDTLS_SSL_IN_CONTENT_LEN + 256 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad message length" ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } -#endif - } - - return( 0 ); -} - -/* - * If applicable, decrypt (and decompress) record content - */ -static int ssl_prepare_record_content( mbedtls_ssl_context *ssl ) -{ - int ret, done = 0; - - MBEDTLS_SSL_DEBUG_BUF( 4, "input record from network", - ssl->in_hdr, mbedtls_ssl_hdr_len( ssl ) + ssl->in_msglen ); - -#if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) - if( mbedtls_ssl_hw_record_read != NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "going for mbedtls_ssl_hw_record_read()" ) ); - - ret = mbedtls_ssl_hw_record_read( ssl ); - if( ret != 0 && ret != MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_hw_record_read", ret ); - return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); - } - - if( ret == 0 ) - done = 1; - } -#endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ - if( !done && ssl->transform_in != NULL ) - { - if( ( ret = ssl_decrypt_buf( ssl ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "ssl_decrypt_buf", ret ); - return( ret ); - } - - MBEDTLS_SSL_DEBUG_BUF( 4, "input payload after decrypt", - ssl->in_msg, ssl->in_msglen ); - - if( ssl->in_msglen > MBEDTLS_SSL_IN_CONTENT_LEN ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad message length" ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } - } - -#if defined(MBEDTLS_ZLIB_SUPPORT) - if( ssl->transform_in != NULL && - ssl->session_in->compression == MBEDTLS_SSL_COMPRESS_DEFLATE ) - { - if( ( ret = ssl_decompress_buf( ssl ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "ssl_decompress_buf", ret ); - return( ret ); - } - } -#endif /* MBEDTLS_ZLIB_SUPPORT */ - -#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - mbedtls_ssl_dtls_replay_update( ssl ); - } -#endif - - return( 0 ); -} - -static void ssl_handshake_wrapup_free_hs_transform( mbedtls_ssl_context *ssl ); - -/* - * Read a record. - * - * Silently ignore non-fatal alert (and for DTLS, invalid records as well, - * RFC 6347 4.1.2.7) and continue reading until a valid record is found. - * - */ - -/* Helper functions for mbedtls_ssl_read_record(). */ -static int ssl_consume_current_message( mbedtls_ssl_context *ssl ); -static int ssl_get_next_record( mbedtls_ssl_context *ssl ); -static int ssl_record_is_in_progress( mbedtls_ssl_context *ssl ); - -int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, - unsigned update_hs_digest ) -{ - int ret; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> read record" ) ); - - if( ssl->keep_current_message == 0 ) - { - do { - - ret = ssl_consume_current_message( ssl ); - if( ret != 0 ) - return( ret ); - - if( ssl_record_is_in_progress( ssl ) == 0 ) - { -#if defined(MBEDTLS_SSL_PROTO_DTLS) - int have_buffered = 0; - - /* We only check for buffered messages if the - * current datagram is fully consumed. */ - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && - ssl_next_record_is_in_datagram( ssl ) == 0 ) - { - if( ssl_load_buffered_message( ssl ) == 0 ) - have_buffered = 1; - } - - if( have_buffered == 0 ) -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - { - ret = ssl_get_next_record( ssl ); - if( ret == MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ) - continue; - - if( ret != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, ( "ssl_get_next_record" ), ret ); - return( ret ); - } - } - } - - ret = mbedtls_ssl_handle_message_type( ssl ); - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ret == MBEDTLS_ERR_SSL_EARLY_MESSAGE ) - { - /* Buffer future message */ - ret = ssl_buffer_message( ssl ); - if( ret != 0 ) - return( ret ); - - ret = MBEDTLS_ERR_SSL_CONTINUE_PROCESSING; - } -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - - } while( MBEDTLS_ERR_SSL_NON_FATAL == ret || - MBEDTLS_ERR_SSL_CONTINUE_PROCESSING == ret ); - - if( 0 != ret ) - { - MBEDTLS_SSL_DEBUG_RET( 1, ( "mbedtls_ssl_handle_message_type" ), ret ); - return( ret ); - } - - if( ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && - update_hs_digest == 1 ) - { - mbedtls_ssl_update_handshake_status( ssl ); - } - } - else - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "reuse previously read message" ) ); - ssl->keep_current_message = 0; - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= read record" ) ); - - return( 0 ); -} - -#if defined(MBEDTLS_SSL_PROTO_DTLS) -static int ssl_next_record_is_in_datagram( mbedtls_ssl_context *ssl ) -{ - if( ssl->in_left > ssl->next_record_offset ) - return( 1 ); - - return( 0 ); -} - -static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ) -{ - mbedtls_ssl_handshake_params * const hs = ssl->handshake; - mbedtls_ssl_hs_buffer * hs_buf; - int ret = 0; - - if( hs == NULL ) - return( -1 ); - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_load_buffered_messsage" ) ); - - if( ssl->state == MBEDTLS_SSL_CLIENT_CHANGE_CIPHER_SPEC || - ssl->state == MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC ) - { - /* Check if we have seen a ChangeCipherSpec before. - * If yes, synthesize a CCS record. */ - if( !hs->buffering.seen_ccs ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "CCS not seen in the current flight" ) ); - ret = -1; - goto exit; - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Injecting buffered CCS message" ) ); - ssl->in_msgtype = MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC; - ssl->in_msglen = 1; - ssl->in_msg[0] = 1; - - /* As long as they are equal, the exact value doesn't matter. */ - ssl->in_left = 0; - ssl->next_record_offset = 0; - - hs->buffering.seen_ccs = 0; - goto exit; - } - -#if defined(MBEDTLS_DEBUG_C) - /* Debug only */ - { - unsigned offset; - for( offset = 1; offset < MBEDTLS_SSL_MAX_BUFFERED_HS; offset++ ) - { - hs_buf = &hs->buffering.hs[offset]; - if( hs_buf->is_valid == 1 ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Future message with sequence number %u %s buffered.", - hs->in_msg_seq + offset, - hs_buf->is_complete ? "fully" : "partially" ) ); - } - } - } -#endif /* MBEDTLS_DEBUG_C */ - - /* Check if we have buffered and/or fully reassembled the - * next handshake message. */ - hs_buf = &hs->buffering.hs[0]; - if( ( hs_buf->is_valid == 1 ) && ( hs_buf->is_complete == 1 ) ) - { - /* Synthesize a record containing the buffered HS message. */ - size_t msg_len = ( hs_buf->data[1] << 16 ) | - ( hs_buf->data[2] << 8 ) | - hs_buf->data[3]; - - /* Double-check that we haven't accidentally buffered - * a message that doesn't fit into the input buffer. */ - if( msg_len + 12 > MBEDTLS_SSL_IN_CONTENT_LEN ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Next handshake message has been buffered - load" ) ); - MBEDTLS_SSL_DEBUG_BUF( 3, "Buffered handshake message (incl. header)", - hs_buf->data, msg_len + 12 ); - - ssl->in_msgtype = MBEDTLS_SSL_MSG_HANDSHAKE; - ssl->in_hslen = msg_len + 12; - ssl->in_msglen = msg_len + 12; - memcpy( ssl->in_msg, hs_buf->data, ssl->in_hslen ); - - ret = 0; - goto exit; - } - else - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Next handshake message %u not or only partially bufffered", - hs->in_msg_seq ) ); - } - - ret = -1; - -exit: - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= ssl_load_buffered_message" ) ); - return( ret ); -} - -static int ssl_buffer_make_space( mbedtls_ssl_context *ssl, - size_t desired ) -{ - int offset; - mbedtls_ssl_handshake_params * const hs = ssl->handshake; - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Attempt to free buffered messages to have %u bytes available", - (unsigned) desired ) ); - - /* Get rid of future records epoch first, if such exist. */ - ssl_free_buffered_record( ssl ); - - /* Check if we have enough space available now. */ - if( desired <= ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - - hs->buffering.total_bytes_buffered ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Enough space available after freeing future epoch record" ) ); - return( 0 ); - } - - /* We don't have enough space to buffer the next expected handshake - * message. Remove buffers used for future messages to gain space, - * starting with the most distant one. */ - for( offset = MBEDTLS_SSL_MAX_BUFFERED_HS - 1; - offset >= 0; offset-- ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Free buffering slot %d to make space for reassembly of next handshake message", - offset ) ); - - ssl_buffering_free_slot( ssl, (uint8_t) offset ); - - /* Check if we have enough space available now. */ - if( desired <= ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - - hs->buffering.total_bytes_buffered ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Enough space available after freeing buffered HS messages" ) ); - return( 0 ); - } - } - - return( -1 ); -} - -static int ssl_buffer_message( mbedtls_ssl_context *ssl ) -{ - int ret = 0; - mbedtls_ssl_handshake_params * const hs = ssl->handshake; - - if( hs == NULL ) - return( 0 ); - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_buffer_message" ) ); - - switch( ssl->in_msgtype ) - { - case MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC: - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Remember CCS message" ) ); - - hs->buffering.seen_ccs = 1; - break; - - case MBEDTLS_SSL_MSG_HANDSHAKE: - { - unsigned recv_msg_seq_offset; - unsigned recv_msg_seq = ( ssl->in_msg[4] << 8 ) | ssl->in_msg[5]; - mbedtls_ssl_hs_buffer *hs_buf; - size_t msg_len = ssl->in_hslen - 12; - - /* We should never receive an old handshake - * message - double-check nonetheless. */ - if( recv_msg_seq < ssl->handshake->in_msg_seq ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - recv_msg_seq_offset = recv_msg_seq - ssl->handshake->in_msg_seq; - if( recv_msg_seq_offset >= MBEDTLS_SSL_MAX_BUFFERED_HS ) - { - /* Silently ignore -- message too far in the future */ - MBEDTLS_SSL_DEBUG_MSG( 2, - ( "Ignore future HS message with sequence number %u, " - "buffering window %u - %u", - recv_msg_seq, ssl->handshake->in_msg_seq, - ssl->handshake->in_msg_seq + MBEDTLS_SSL_MAX_BUFFERED_HS - 1 ) ); - - goto exit; - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffering HS message with sequence number %u, offset %u ", - recv_msg_seq, recv_msg_seq_offset ) ); - - hs_buf = &hs->buffering.hs[ recv_msg_seq_offset ]; - - /* Check if the buffering for this seq nr has already commenced. */ - if( !hs_buf->is_valid ) - { - size_t reassembly_buf_sz; - - hs_buf->is_fragmented = - ( ssl_hs_is_proper_fragment( ssl ) == 1 ); - - /* We copy the message back into the input buffer - * after reassembly, so check that it's not too large. - * This is an implementation-specific limitation - * and not one from the standard, hence it is not - * checked in ssl_check_hs_header(). */ - if( msg_len + 12 > MBEDTLS_SSL_IN_CONTENT_LEN ) - { - /* Ignore message */ - goto exit; - } - - /* Check if we have enough space to buffer the message. */ - if( hs->buffering.total_bytes_buffered > - MBEDTLS_SSL_DTLS_MAX_BUFFERING ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - reassembly_buf_sz = ssl_get_reassembly_buffer_size( msg_len, - hs_buf->is_fragmented ); - - if( reassembly_buf_sz > ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - - hs->buffering.total_bytes_buffered ) ) - { - if( recv_msg_seq_offset > 0 ) - { - /* If we can't buffer a future message because - * of space limitations -- ignore. */ - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffering of future message of size %u would exceed the compile-time limit %u (already %u bytes buffered) -- ignore\n", - (unsigned) msg_len, MBEDTLS_SSL_DTLS_MAX_BUFFERING, - (unsigned) hs->buffering.total_bytes_buffered ) ); - goto exit; - } - else - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffering of future message of size %u would exceed the compile-time limit %u (already %u bytes buffered) -- attempt to make space by freeing buffered future messages\n", - (unsigned) msg_len, MBEDTLS_SSL_DTLS_MAX_BUFFERING, - (unsigned) hs->buffering.total_bytes_buffered ) ); - } - - if( ssl_buffer_make_space( ssl, reassembly_buf_sz ) != 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Reassembly of next message of size %u (%u with bitmap) would exceed the compile-time limit %u (already %u bytes buffered) -- fail\n", - (unsigned) msg_len, - (unsigned) reassembly_buf_sz, - MBEDTLS_SSL_DTLS_MAX_BUFFERING, - (unsigned) hs->buffering.total_bytes_buffered ) ); - ret = MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL; - goto exit; - } - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialize reassembly, total length = %d", - msg_len ) ); - - hs_buf->data = mbedtls_calloc( 1, reassembly_buf_sz ); - if( hs_buf->data == NULL ) - { - ret = MBEDTLS_ERR_SSL_ALLOC_FAILED; - goto exit; - } - hs_buf->data_len = reassembly_buf_sz; - - /* Prepare final header: copy msg_type, length and message_seq, - * then add standardised fragment_offset and fragment_length */ - memcpy( hs_buf->data, ssl->in_msg, 6 ); - memset( hs_buf->data + 6, 0, 3 ); - memcpy( hs_buf->data + 9, hs_buf->data + 1, 3 ); - - hs_buf->is_valid = 1; - - hs->buffering.total_bytes_buffered += reassembly_buf_sz; - } - else - { - /* Make sure msg_type and length are consistent */ - if( memcmp( hs_buf->data, ssl->in_msg, 4 ) != 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "Fragment header mismatch - ignore" ) ); - /* Ignore */ - goto exit; - } - } - - if( !hs_buf->is_complete ) - { - size_t frag_len, frag_off; - unsigned char * const msg = hs_buf->data + 12; - - /* - * Check and copy current fragment - */ - - /* Validation of header fields already done in - * mbedtls_ssl_prepare_handshake_record(). */ - frag_off = ssl_get_hs_frag_off( ssl ); - frag_len = ssl_get_hs_frag_len( ssl ); - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "adding fragment, offset = %d, length = %d", - frag_off, frag_len ) ); - memcpy( msg + frag_off, ssl->in_msg + 12, frag_len ); - - if( hs_buf->is_fragmented ) - { - unsigned char * const bitmask = msg + msg_len; - ssl_bitmask_set( bitmask, frag_off, frag_len ); - hs_buf->is_complete = ( ssl_bitmask_check( bitmask, - msg_len ) == 0 ); - } - else - { - hs_buf->is_complete = 1; - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "message %scomplete", - hs_buf->is_complete ? "" : "not yet " ) ); - } - - break; - } - - default: - /* We don't buffer other types of messages. */ - break; - } - -exit: - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= ssl_buffer_message" ) ); - return( ret ); -} -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - -static int ssl_consume_current_message( mbedtls_ssl_context *ssl ) -{ - /* - * Consume last content-layer message and potentially - * update in_msglen which keeps track of the contents' - * consumption state. - * - * (1) Handshake messages: - * Remove last handshake message, move content - * and adapt in_msglen. - * - * (2) Alert messages: - * Consume whole record content, in_msglen = 0. - * - * (3) Change cipher spec: - * Consume whole record content, in_msglen = 0. - * - * (4) Application data: - * Don't do anything - the record layer provides - * the application data as a stream transport - * and consumes through mbedtls_ssl_read only. - * - */ - - /* Case (1): Handshake messages */ - if( ssl->in_hslen != 0 ) - { - /* Hard assertion to be sure that no application data - * is in flight, as corrupting ssl->in_msglen during - * ssl->in_offt != NULL is fatal. */ - if( ssl->in_offt != NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - /* - * Get next Handshake message in the current record - */ - - /* Notes: - * (1) in_hslen is not necessarily the size of the - * current handshake content: If DTLS handshake - * fragmentation is used, that's the fragment - * size instead. Using the total handshake message - * size here is faulty and should be changed at - * some point. - * (2) While it doesn't seem to cause problems, one - * has to be very careful not to assume that in_hslen - * is always <= in_msglen in a sensible communication. - * Again, it's wrong for DTLS handshake fragmentation. - * The following check is therefore mandatory, and - * should not be treated as a silently corrected assertion. - * Additionally, ssl->in_hslen might be arbitrarily out of - * bounds after handling a DTLS message with an unexpected - * sequence number, see mbedtls_ssl_prepare_handshake_record. - */ - if( ssl->in_hslen < ssl->in_msglen ) - { - ssl->in_msglen -= ssl->in_hslen; - memmove( ssl->in_msg, ssl->in_msg + ssl->in_hslen, - ssl->in_msglen ); - - MBEDTLS_SSL_DEBUG_BUF( 4, "remaining content in record", - ssl->in_msg, ssl->in_msglen ); - } - else - { - ssl->in_msglen = 0; - } - - ssl->in_hslen = 0; - } - /* Case (4): Application data */ - else if( ssl->in_offt != NULL ) - { - return( 0 ); - } - /* Everything else (CCS & Alerts) */ - else - { - ssl->in_msglen = 0; - } - - return( 0 ); -} - -static int ssl_record_is_in_progress( mbedtls_ssl_context *ssl ) -{ - if( ssl->in_msglen > 0 ) - return( 1 ); - - return( 0 ); -} - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - -static void ssl_free_buffered_record( mbedtls_ssl_context *ssl ) -{ - mbedtls_ssl_handshake_params * const hs = ssl->handshake; - if( hs == NULL ) - return; - - if( hs->buffering.future_record.data != NULL ) - { - hs->buffering.total_bytes_buffered -= - hs->buffering.future_record.len; - - mbedtls_free( hs->buffering.future_record.data ); - hs->buffering.future_record.data = NULL; - } -} - -static int ssl_load_buffered_record( mbedtls_ssl_context *ssl ) -{ - mbedtls_ssl_handshake_params * const hs = ssl->handshake; - unsigned char * rec; - size_t rec_len; - unsigned rec_epoch; - - if( ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - return( 0 ); - - if( hs == NULL ) - return( 0 ); - - rec = hs->buffering.future_record.data; - rec_len = hs->buffering.future_record.len; - rec_epoch = hs->buffering.future_record.epoch; - - if( rec == NULL ) - return( 0 ); - - /* Only consider loading future records if the - * input buffer is empty. */ - if( ssl_next_record_is_in_datagram( ssl ) == 1 ) - return( 0 ); - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_load_buffered_record" ) ); - - if( rec_epoch != ssl->in_epoch ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffered record not from current epoch." ) ); - goto exit; - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Found buffered record from current epoch - load" ) ); - - /* Double-check that the record is not too large */ - if( rec_len > MBEDTLS_SSL_IN_BUFFER_LEN - - (size_t)( ssl->in_hdr - ssl->in_buf ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - memcpy( ssl->in_hdr, rec, rec_len ); - ssl->in_left = rec_len; - ssl->next_record_offset = 0; - - ssl_free_buffered_record( ssl ); - -exit: - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= ssl_load_buffered_record" ) ); - return( 0 ); -} - -static int ssl_buffer_future_record( mbedtls_ssl_context *ssl ) -{ - mbedtls_ssl_handshake_params * const hs = ssl->handshake; - size_t const rec_hdr_len = 13; - size_t const total_buf_sz = rec_hdr_len + ssl->in_msglen; - - /* Don't buffer future records outside handshakes. */ - if( hs == NULL ) - return( 0 ); - - /* Only buffer handshake records (we are only interested - * in Finished messages). */ - if( ssl->in_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE ) - return( 0 ); - - /* Don't buffer more than one future epoch record. */ - if( hs->buffering.future_record.data != NULL ) - return( 0 ); - - /* Don't buffer record if there's not enough buffering space remaining. */ - if( total_buf_sz > ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - - hs->buffering.total_bytes_buffered ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffering of future epoch record of size %u would exceed the compile-time limit %u (already %u bytes buffered) -- ignore\n", - (unsigned) total_buf_sz, MBEDTLS_SSL_DTLS_MAX_BUFFERING, - (unsigned) hs->buffering.total_bytes_buffered ) ); - return( 0 ); - } - - /* Buffer record */ - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffer record from epoch %u", - ssl->in_epoch + 1 ) ); - MBEDTLS_SSL_DEBUG_BUF( 3, "Buffered record", ssl->in_hdr, - rec_hdr_len + ssl->in_msglen ); - - /* ssl_parse_record_header() only considers records - * of the next epoch as candidates for buffering. */ - hs->buffering.future_record.epoch = ssl->in_epoch + 1; - hs->buffering.future_record.len = total_buf_sz; - - hs->buffering.future_record.data = - mbedtls_calloc( 1, hs->buffering.future_record.len ); - if( hs->buffering.future_record.data == NULL ) - { - /* If we run out of RAM trying to buffer a - * record from the next epoch, just ignore. */ - return( 0 ); - } - - memcpy( hs->buffering.future_record.data, ssl->in_hdr, total_buf_sz ); - - hs->buffering.total_bytes_buffered += total_buf_sz; - return( 0 ); -} - -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - -static int ssl_get_next_record( mbedtls_ssl_context *ssl ) -{ - int ret; - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - /* We might have buffered a future record; if so, - * and if the epoch matches now, load it. - * On success, this call will set ssl->in_left to - * the length of the buffered record, so that - * the calls to ssl_fetch_input() below will - * essentially be no-ops. */ - ret = ssl_load_buffered_record( ssl ); - if( ret != 0 ) - return( ret ); -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - - if( ( ret = mbedtls_ssl_fetch_input( ssl, mbedtls_ssl_hdr_len( ssl ) ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_fetch_input", ret ); - return( ret ); - } - - if( ( ret = ssl_parse_record_header( ssl ) ) != 0 ) - { -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && - ret != MBEDTLS_ERR_SSL_CLIENT_RECONNECT ) - { - if( ret == MBEDTLS_ERR_SSL_EARLY_MESSAGE ) - { - ret = ssl_buffer_future_record( ssl ); - if( ret != 0 ) - return( ret ); - - /* Fall through to handling of unexpected records */ - ret = MBEDTLS_ERR_SSL_UNEXPECTED_RECORD; - } - - if( ret == MBEDTLS_ERR_SSL_UNEXPECTED_RECORD ) - { - /* Skip unexpected record (but not whole datagram) */ - ssl->next_record_offset = ssl->in_msglen - + mbedtls_ssl_hdr_len( ssl ); - - MBEDTLS_SSL_DEBUG_MSG( 1, ( "discarding unexpected record " - "(header)" ) ); - } - else - { - /* Skip invalid record and the rest of the datagram */ - ssl->next_record_offset = 0; - ssl->in_left = 0; - - MBEDTLS_SSL_DEBUG_MSG( 1, ( "discarding invalid record " - "(header)" ) ); - } - - /* Get next record */ - return( MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ); - } -#endif - return( ret ); - } - - /* - * Read and optionally decrypt the message contents - */ - if( ( ret = mbedtls_ssl_fetch_input( ssl, - mbedtls_ssl_hdr_len( ssl ) + ssl->in_msglen ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_fetch_input", ret ); - return( ret ); - } - - /* Done reading this record, get ready for the next one */ -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - ssl->next_record_offset = ssl->in_msglen + mbedtls_ssl_hdr_len( ssl ); - if( ssl->next_record_offset < ssl->in_left ) - { - MBEDTLS_SSL_DEBUG_MSG( 3, ( "more than one record within datagram" ) ); - } - } - else -#endif - ssl->in_left = 0; - - if( ( ret = ssl_prepare_record_content( ssl ) ) != 0 ) - { -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - /* Silently discard invalid records */ - if( ret == MBEDTLS_ERR_SSL_INVALID_RECORD || - ret == MBEDTLS_ERR_SSL_INVALID_MAC ) - { - /* Except when waiting for Finished as a bad mac here - * probably means something went wrong in the handshake - * (eg wrong psk used, mitm downgrade attempt, etc.) */ - if( ssl->state == MBEDTLS_SSL_CLIENT_FINISHED || - ssl->state == MBEDTLS_SSL_SERVER_FINISHED ) - { -#if defined(MBEDTLS_SSL_ALL_ALERT_MESSAGES) - if( ret == MBEDTLS_ERR_SSL_INVALID_MAC ) - { - mbedtls_ssl_send_alert_message( ssl, - MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_BAD_RECORD_MAC ); - } -#endif - return( ret ); - } - -#if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) - if( ssl->conf->badmac_limit != 0 && - ++ssl->badmac_seen >= ssl->conf->badmac_limit ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "too many records with bad MAC" ) ); - return( MBEDTLS_ERR_SSL_INVALID_MAC ); - } -#endif - - /* As above, invalid records cause - * dismissal of the whole datagram. */ - - ssl->next_record_offset = 0; - ssl->in_left = 0; - - MBEDTLS_SSL_DEBUG_MSG( 1, ( "discarding invalid record (mac)" ) ); - return( MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ); - } - - return( ret ); - } - else -#endif - { - /* Error out (and send alert) on invalid records */ -#if defined(MBEDTLS_SSL_ALL_ALERT_MESSAGES) - if( ret == MBEDTLS_ERR_SSL_INVALID_MAC ) - { - mbedtls_ssl_send_alert_message( ssl, - MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_BAD_RECORD_MAC ); - } -#endif - return( ret ); - } - } - - return( 0 ); -} - -int mbedtls_ssl_handle_message_type( mbedtls_ssl_context *ssl ) -{ - int ret; - - /* - * Handle particular types of records - */ - if( ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE ) - { - if( ( ret = mbedtls_ssl_prepare_handshake_record( ssl ) ) != 0 ) - { - return( ret ); - } - } - - if( ssl->in_msgtype == MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC ) - { - if( ssl->in_msglen != 1 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid CCS message, len: %d", - ssl->in_msglen ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } - - if( ssl->in_msg[0] != 1 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid CCS message, content: %02x", - ssl->in_msg[0] ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && - ssl->state != MBEDTLS_SSL_CLIENT_CHANGE_CIPHER_SPEC && - ssl->state != MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC ) - { - if( ssl->handshake == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "dropping ChangeCipherSpec outside handshake" ) ); - return( MBEDTLS_ERR_SSL_UNEXPECTED_RECORD ); - } - - MBEDTLS_SSL_DEBUG_MSG( 1, ( "received out-of-order ChangeCipherSpec - remember" ) ); - return( MBEDTLS_ERR_SSL_EARLY_MESSAGE ); - } -#endif - } - - if( ssl->in_msgtype == MBEDTLS_SSL_MSG_ALERT ) - { - if( ssl->in_msglen != 2 ) - { - /* Note: Standard allows for more than one 2 byte alert - to be packed in a single message, but Mbed TLS doesn't - currently support this. */ - MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid alert message, len: %d", - ssl->in_msglen ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "got an alert message, type: [%d:%d]", - ssl->in_msg[0], ssl->in_msg[1] ) ); - - /* - * Ignore non-fatal alerts, except close_notify and no_renegotiation - */ - if( ssl->in_msg[0] == MBEDTLS_SSL_ALERT_LEVEL_FATAL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "is a fatal alert message (msg %d)", - ssl->in_msg[1] ) ); - return( MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE ); - } - - if( ssl->in_msg[0] == MBEDTLS_SSL_ALERT_LEVEL_WARNING && - ssl->in_msg[1] == MBEDTLS_SSL_ALERT_MSG_CLOSE_NOTIFY ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "is a close notify message" ) ); - return( MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY ); - } - -#if defined(MBEDTLS_SSL_RENEGOTIATION_ENABLED) - if( ssl->in_msg[0] == MBEDTLS_SSL_ALERT_LEVEL_WARNING && - ssl->in_msg[1] == MBEDTLS_SSL_ALERT_MSG_NO_RENEGOTIATION ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "is a SSLv3 no renegotiation alert" ) ); - /* Will be handled when trying to parse ServerHello */ - return( 0 ); - } -#endif - -#if defined(MBEDTLS_SSL_PROTO_SSL3) && defined(MBEDTLS_SSL_SRV_C) - if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 && - ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && - ssl->in_msg[0] == MBEDTLS_SSL_ALERT_LEVEL_WARNING && - ssl->in_msg[1] == MBEDTLS_SSL_ALERT_MSG_NO_CERT ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "is a SSLv3 no_cert" ) ); - /* Will be handled in mbedtls_ssl_parse_certificate() */ - return( 0 ); - } -#endif /* MBEDTLS_SSL_PROTO_SSL3 && MBEDTLS_SSL_SRV_C */ - - /* Silently ignore: fetch new message */ - return MBEDTLS_ERR_SSL_NON_FATAL; - } - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && - ssl->handshake != NULL && - ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER ) - { - ssl_handshake_wrapup_free_hs_transform( ssl ); - } -#endif - - return( 0 ); -} - -int mbedtls_ssl_send_fatal_handshake_failure( mbedtls_ssl_context *ssl ) -{ - int ret; - - if( ( ret = mbedtls_ssl_send_alert_message( ssl, - MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE ) ) != 0 ) - { - return( ret ); - } - - return( 0 ); -} - -int mbedtls_ssl_send_alert_message( mbedtls_ssl_context *ssl, - unsigned char level, - unsigned char message ) -{ - int ret; - - if( ssl == NULL || ssl->conf == NULL ) - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> send alert message" ) ); - MBEDTLS_SSL_DEBUG_MSG( 3, ( "send alert level=%u message=%u", level, message )); - - ssl->out_msgtype = MBEDTLS_SSL_MSG_ALERT; - ssl->out_msglen = 2; - ssl->out_msg[0] = level; - ssl->out_msg[1] = message; - - if( ( ret = mbedtls_ssl_write_record( ssl, SSL_FORCE_FLUSH ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); - return( ret ); - } - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= send alert message" ) ); - - return( 0 ); -} - -/* - * Handshake functions - */ -#if !defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) && \ - !defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) -/* No certificate support -> dummy functions */ -int mbedtls_ssl_write_certificate( mbedtls_ssl_context *ssl ) -{ - const mbedtls_ssl_ciphersuite_t *ciphersuite_info = ssl->transform_negotiate->ciphersuite_info; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write certificate" ) ); - - if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_DHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip write certificate" ) ); - ssl->state++; - return( 0 ); - } - - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); -} - -int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) -{ - const mbedtls_ssl_ciphersuite_t *ciphersuite_info = ssl->transform_negotiate->ciphersuite_info; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse certificate" ) ); - - if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_DHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE ) + if( !mbedtls_ssl_ciphersuite_uses_srv_cert( ciphersuite_info ) ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate" ) ); ssl->state++; @@ -5316,7 +2202,7 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } -#else +#else /* MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ /* Some certificate support -> implement write and parse */ int mbedtls_ssl_write_certificate( mbedtls_ssl_context *ssl ) @@ -5324,14 +2210,12 @@ int mbedtls_ssl_write_certificate( mbedtls_ssl_context *ssl ) int ret = MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE; size_t i, n; const mbedtls_x509_crt *crt; - const mbedtls_ssl_ciphersuite_t *ciphersuite_info = ssl->transform_negotiate->ciphersuite_info; + const mbedtls_ssl_ciphersuite_t *ciphersuite_info = + ssl->handshake->ciphersuite_info; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write certificate" ) ); - if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_DHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE ) + if( !mbedtls_ssl_ciphersuite_uses_srv_cert( ciphersuite_info ) ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip write certificate" ) ); ssl->state++; @@ -5397,22 +2281,23 @@ int mbedtls_ssl_write_certificate( mbedtls_ssl_context *ssl ) n = crt->raw.len; if( n > MBEDTLS_SSL_OUT_CONTENT_LEN - 3 - i ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "certificate too large, %d > %d", - i + 3 + n, MBEDTLS_SSL_OUT_CONTENT_LEN ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, ( "certificate too large, %" MBEDTLS_PRINTF_SIZET + " > %" MBEDTLS_PRINTF_SIZET, + i + 3 + n, (size_t) MBEDTLS_SSL_OUT_CONTENT_LEN ) ); return( MBEDTLS_ERR_SSL_CERTIFICATE_TOO_LARGE ); } - ssl->out_msg[i ] = (unsigned char)( n >> 16 ); - ssl->out_msg[i + 1] = (unsigned char)( n >> 8 ); - ssl->out_msg[i + 2] = (unsigned char)( n ); + ssl->out_msg[i ] = MBEDTLS_BYTE_2( n ); + ssl->out_msg[i + 1] = MBEDTLS_BYTE_1( n ); + ssl->out_msg[i + 2] = MBEDTLS_BYTE_0( n ); i += 3; memcpy( ssl->out_msg + i, crt->raw.p, n ); i += n; crt = crt->next; } - ssl->out_msg[4] = (unsigned char)( ( i - 7 ) >> 16 ); - ssl->out_msg[5] = (unsigned char)( ( i - 7 ) >> 8 ); - ssl->out_msg[6] = (unsigned char)( ( i - 7 ) ); + ssl->out_msg[4] = MBEDTLS_BYTE_2( i - 7 ); + ssl->out_msg[5] = MBEDTLS_BYTE_1( i - 7 ); + ssl->out_msg[6] = MBEDTLS_BYTE_0( i - 7 ); ssl->out_msglen = i; ssl->out_msgtype = MBEDTLS_SSL_MSG_HANDSHAKE; @@ -5435,63 +2320,68 @@ int mbedtls_ssl_write_certificate( mbedtls_ssl_context *ssl ) return( ret ); } +#if defined(MBEDTLS_SSL_RENEGOTIATION) && defined(MBEDTLS_SSL_CLI_C) + +#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) +static int ssl_check_peer_crt_unchanged( mbedtls_ssl_context *ssl, + unsigned char *crt_buf, + size_t crt_buf_len ) +{ + mbedtls_x509_crt const * const peer_crt = ssl->session->peer_cert; + + if( peer_crt == NULL ) + return( -1 ); + + if( peer_crt->raw.len != crt_buf_len ) + return( -1 ); + + return( memcmp( peer_crt->raw.p, crt_buf, peer_crt->raw.len ) ); +} +#else /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ +static int ssl_check_peer_crt_unchanged( mbedtls_ssl_context *ssl, + unsigned char *crt_buf, + size_t crt_buf_len ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + unsigned char const * const peer_cert_digest = + ssl->session->peer_cert_digest; + mbedtls_md_type_t const peer_cert_digest_type = + ssl->session->peer_cert_digest_type; + mbedtls_md_info_t const * const digest_info = + mbedtls_md_info_from_type( peer_cert_digest_type ); + unsigned char tmp_digest[MBEDTLS_SSL_PEER_CERT_DIGEST_MAX_LEN]; + size_t digest_len; + + if( peer_cert_digest == NULL || digest_info == NULL ) + return( -1 ); + + digest_len = mbedtls_md_get_size( digest_info ); + if( digest_len > MBEDTLS_SSL_PEER_CERT_DIGEST_MAX_LEN ) + return( -1 ); + + ret = mbedtls_md( digest_info, crt_buf, crt_buf_len, tmp_digest ); + if( ret != 0 ) + return( -1 ); + + return( memcmp( tmp_digest, peer_cert_digest, digest_len ) ); +} +#endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ +#endif /* MBEDTLS_SSL_RENEGOTIATION && MBEDTLS_SSL_CLI_C */ + /* * Once the certificate message is read, parse it into a cert chain and * perform basic checks, but leave actual verification to the caller */ -static int ssl_parse_certificate_chain( mbedtls_ssl_context *ssl ) +static int ssl_parse_certificate_chain( mbedtls_ssl_context *ssl, + mbedtls_x509_crt *chain ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; +#if defined(MBEDTLS_SSL_RENEGOTIATION) && defined(MBEDTLS_SSL_CLI_C) + int crt_cnt=0; +#endif size_t i, n; uint8_t alert; -#if defined(MBEDTLS_SSL_SRV_C) -#if defined(MBEDTLS_SSL_PROTO_SSL3) - /* - * Check if the client sent an empty certificate - */ - if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && - ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) - { - if( ssl->in_msglen == 2 && - ssl->in_msgtype == MBEDTLS_SSL_MSG_ALERT && - ssl->in_msg[0] == MBEDTLS_SSL_ALERT_LEVEL_WARNING && - ssl->in_msg[1] == MBEDTLS_SSL_ALERT_MSG_NO_CERT ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "SSLv3 client has no certificate" ) ); - - /* The client was asked for a certificate but didn't send - one. The client should know what's going on, so we - don't send an alert. */ - ssl->session_negotiate->verify_result = MBEDTLS_X509_BADCERT_MISSING; - return( MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE ); - } - } -#endif /* MBEDTLS_SSL_PROTO_SSL3 */ - -#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ - defined(MBEDTLS_SSL_PROTO_TLS1_2) - if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && - ssl->minor_ver != MBEDTLS_SSL_MINOR_VERSION_0 ) - { - if( ssl->in_hslen == 3 + mbedtls_ssl_hs_hdr_len( ssl ) && - ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && - ssl->in_msg[0] == MBEDTLS_SSL_HS_CERTIFICATE && - memcmp( ssl->in_msg + mbedtls_ssl_hs_hdr_len( ssl ), "\0\0\0", 3 ) == 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "TLSv1 client has no certificate" ) ); - - /* The client was asked for a certificate but didn't send - one. The client should know what's going on, so we - don't send an alert. */ - ssl->session_negotiate->verify_result = MBEDTLS_X509_BADCERT_MISSING; - return( MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE ); - } - } -#endif /* MBEDTLS_SSL_PROTO_TLS1 || MBEDTLS_SSL_PROTO_TLS1_1 || \ - MBEDTLS_SSL_PROTO_TLS1_2 */ -#endif /* MBEDTLS_SSL_SRV_C */ - if( ssl->in_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad certificate message" ) ); @@ -5525,43 +2415,32 @@ static int ssl_parse_certificate_chain( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE ); } - /* In case we tried to reuse a session but it failed */ - if( ssl->session_negotiate->peer_cert != NULL ) - { - mbedtls_x509_crt_free( ssl->session_negotiate->peer_cert ); - mbedtls_free( ssl->session_negotiate->peer_cert ); - } - - if( ( ssl->session_negotiate->peer_cert = mbedtls_calloc( 1, - sizeof( mbedtls_x509_crt ) ) ) == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", - sizeof( mbedtls_x509_crt ) ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_INTERNAL_ERROR ); - return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); - } - - mbedtls_x509_crt_init( ssl->session_negotiate->peer_cert ); - + /* Make &ssl->in_msg[i] point to the beginning of the CRT chain. */ i += 3; + /* Iterate through and parse the CRTs in the provided chain. */ while( i < ssl->in_hslen ) { + /* Check that there's room for the next CRT's length fields. */ if ( i + 3 > ssl->in_hslen ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad certificate message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); + mbedtls_ssl_send_alert_message( ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); return( MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE ); } + /* In theory, the CRT can be up to 2**24 Bytes, but we don't support + * anything beyond 2**16 ~ 64K. */ if( ssl->in_msg[i] != 0 ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad certificate message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); + mbedtls_ssl_send_alert_message( ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); return( MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE ); } + /* Read length of the next CRT in the chain. */ n = ( (unsigned int) ssl->in_msg[i + 1] << 8 ) | (unsigned int) ssl->in_msg[i + 2]; i += 3; @@ -5569,161 +2448,207 @@ static int ssl_parse_certificate_chain( mbedtls_ssl_context *ssl ) if( n < 128 || i + n > ssl->in_hslen ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad certificate message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); + mbedtls_ssl_send_alert_message( ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); return( MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE ); } - ret = mbedtls_x509_crt_parse_der( ssl->session_negotiate->peer_cert, - ssl->in_msg + i, n ); + /* Check if we're handling the first CRT in the chain. */ +#if defined(MBEDTLS_SSL_RENEGOTIATION) && defined(MBEDTLS_SSL_CLI_C) + if( crt_cnt++ == 0 && + ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT && + ssl->renego_status == MBEDTLS_SSL_RENEGOTIATION_IN_PROGRESS ) + { + /* During client-side renegotiation, check that the server's + * end-CRTs hasn't changed compared to the initial handshake, + * mitigating the triple handshake attack. On success, reuse + * the original end-CRT instead of parsing it again. */ + MBEDTLS_SSL_DEBUG_MSG( 3, ( "Check that peer CRT hasn't changed during renegotiation" ) ); + if( ssl_check_peer_crt_unchanged( ssl, + &ssl->in_msg[i], + n ) != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "new server cert during renegotiation" ) ); + mbedtls_ssl_send_alert_message( ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_ACCESS_DENIED ); + return( MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE ); + } + + /* Now we can safely free the original chain. */ + ssl_clear_peer_cert( ssl->session ); + } +#endif /* MBEDTLS_SSL_RENEGOTIATION && MBEDTLS_SSL_CLI_C */ + + /* Parse the next certificate in the chain. */ +#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + ret = mbedtls_x509_crt_parse_der( chain, ssl->in_msg + i, n ); +#else + /* If we don't need to store the CRT chain permanently, parse + * it in-place from the input buffer instead of making a copy. */ + ret = mbedtls_x509_crt_parse_der_nocopy( chain, ssl->in_msg + i, n ); +#endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ switch( ret ) { - case 0: /*ok*/ - case MBEDTLS_ERR_X509_UNKNOWN_SIG_ALG + MBEDTLS_ERR_OID_NOT_FOUND: - /* Ignore certificate with an unknown algorithm: maybe a - prior certificate was already trusted. */ - break; + case 0: /*ok*/ + case MBEDTLS_ERR_X509_UNKNOWN_SIG_ALG + MBEDTLS_ERR_OID_NOT_FOUND: + /* Ignore certificate with an unknown algorithm: maybe a + prior certificate was already trusted. */ + break; - case MBEDTLS_ERR_X509_ALLOC_FAILED: - alert = MBEDTLS_SSL_ALERT_MSG_INTERNAL_ERROR; - goto crt_parse_der_failed; + case MBEDTLS_ERR_X509_ALLOC_FAILED: + alert = MBEDTLS_SSL_ALERT_MSG_INTERNAL_ERROR; + goto crt_parse_der_failed; - case MBEDTLS_ERR_X509_UNKNOWN_VERSION: - alert = MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT; - goto crt_parse_der_failed; + case MBEDTLS_ERR_X509_UNKNOWN_VERSION: + alert = MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT; + goto crt_parse_der_failed; - default: - alert = MBEDTLS_SSL_ALERT_MSG_BAD_CERT; - crt_parse_der_failed: - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, alert ); - MBEDTLS_SSL_DEBUG_RET( 1, " mbedtls_x509_crt_parse_der", ret ); - return( ret ); + default: + alert = MBEDTLS_SSL_ALERT_MSG_BAD_CERT; + crt_parse_der_failed: + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, alert ); + MBEDTLS_SSL_DEBUG_RET( 1, " mbedtls_x509_crt_parse_der", ret ); + return( ret ); } i += n; } - MBEDTLS_SSL_DEBUG_CRT( 3, "peer certificate", ssl->session_negotiate->peer_cert ); + MBEDTLS_SSL_DEBUG_CRT( 3, "peer certificate", chain ); + return( 0 ); +} + +#if defined(MBEDTLS_SSL_SRV_C) +static int ssl_srv_check_client_no_crt_notification( mbedtls_ssl_context *ssl ) +{ + if( ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT ) + return( -1 ); +#if defined(MBEDTLS_SSL_PROTO_SSL3) /* - * On client, make sure the server cert doesn't change during renego to - * avoid "triple handshake" attack: https://secure-resumption.com/ + * Check if the client sent an empty certificate */ -#if defined(MBEDTLS_SSL_RENEGOTIATION) && defined(MBEDTLS_SSL_CLI_C) - if( ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT && - ssl->renego_status == MBEDTLS_SSL_RENEGOTIATION_IN_PROGRESS ) + if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) { - if( ssl->session->peer_cert == NULL ) + if( ssl->in_msglen == 2 && + ssl->in_msgtype == MBEDTLS_SSL_MSG_ALERT && + ssl->in_msg[0] == MBEDTLS_SSL_ALERT_LEVEL_WARNING && + ssl->in_msg[1] == MBEDTLS_SSL_ALERT_MSG_NO_CERT ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "new server cert during renegotiation" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_ACCESS_DENIED ); - return( MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE ); + MBEDTLS_SSL_DEBUG_MSG( 1, ( "SSLv3 client has no certificate" ) ); + return( 0 ); } - if( ssl->session->peer_cert->raw.len != - ssl->session_negotiate->peer_cert->raw.len || - memcmp( ssl->session->peer_cert->raw.p, - ssl->session_negotiate->peer_cert->raw.p, - ssl->session->peer_cert->raw.len ) != 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "server cert changed during renegotiation" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_ACCESS_DENIED ); - return( MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE ); - } + return( -1 ); } -#endif /* MBEDTLS_SSL_RENEGOTIATION && MBEDTLS_SSL_CLI_C */ +#endif /* MBEDTLS_SSL_PROTO_SSL3 */ - return( 0 ); +#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ + defined(MBEDTLS_SSL_PROTO_TLS1_2) + if( ssl->in_hslen == 3 + mbedtls_ssl_hs_hdr_len( ssl ) && + ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && + ssl->in_msg[0] == MBEDTLS_SSL_HS_CERTIFICATE && + memcmp( ssl->in_msg + mbedtls_ssl_hs_hdr_len( ssl ), "\0\0\0", 3 ) == 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "TLSv1 client has no certificate" ) ); + return( 0 ); + } + + return( -1 ); +#endif /* MBEDTLS_SSL_PROTO_TLS1 || MBEDTLS_SSL_PROTO_TLS1_1 || \ + MBEDTLS_SSL_PROTO_TLS1_2 */ } +#endif /* MBEDTLS_SSL_SRV_C */ -int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) +/* Check if a certificate message is expected. + * Return either + * - SSL_CERTIFICATE_EXPECTED, or + * - SSL_CERTIFICATE_SKIP + * indicating whether a Certificate message is expected or not. + */ +#define SSL_CERTIFICATE_EXPECTED 0 +#define SSL_CERTIFICATE_SKIP 1 +static int ssl_parse_certificate_coordinate( mbedtls_ssl_context *ssl, + int authmode ) { - int ret; - const mbedtls_ssl_ciphersuite_t * const ciphersuite_info = - ssl->transform_negotiate->ciphersuite_info; -#if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) - const int authmode = ssl->handshake->sni_authmode != MBEDTLS_SSL_VERIFY_UNSET - ? ssl->handshake->sni_authmode - : ssl->conf->authmode; -#else - const int authmode = ssl->conf->authmode; -#endif - void *rs_ctx = NULL; + const mbedtls_ssl_ciphersuite_t *ciphersuite_info = + ssl->handshake->ciphersuite_info; - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse certificate" ) ); - - if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_DHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate" ) ); - ssl->state++; - return( 0 ); - } + if( !mbedtls_ssl_ciphersuite_uses_srv_cert( ciphersuite_info ) ) + return( SSL_CERTIFICATE_SKIP ); #if defined(MBEDTLS_SSL_SRV_C) - if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK ) + if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER ) { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate" ) ); - ssl->state++; - return( 0 ); + if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK ) + return( SSL_CERTIFICATE_SKIP ); + + if( authmode == MBEDTLS_SSL_VERIFY_NONE ) + { + ssl->session_negotiate->verify_result = + MBEDTLS_X509_BADCERT_SKIP_VERIFY; + return( SSL_CERTIFICATE_SKIP ); + } } +#else + ((void) authmode); +#endif /* MBEDTLS_SSL_SRV_C */ - if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && - authmode == MBEDTLS_SSL_VERIFY_NONE ) - { - ssl->session_negotiate->verify_result = MBEDTLS_X509_BADCERT_SKIP_VERIFY; - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate" ) ); + return( SSL_CERTIFICATE_EXPECTED ); +} - ssl->state++; - return( 0 ); - } -#endif +static int ssl_parse_certificate_verify( mbedtls_ssl_context *ssl, + int authmode, + mbedtls_x509_crt *chain, + void *rs_ctx ) +{ + int ret = 0; + const mbedtls_ssl_ciphersuite_t *ciphersuite_info = + ssl->handshake->ciphersuite_info; + int have_ca_chain = 0; -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( ssl->handshake->ecrs_enabled && - ssl->handshake->ecrs_state == ssl_ecrs_crt_verify ) - { - goto crt_verify; - } -#endif + int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *); + void *p_vrfy; + + if( authmode == MBEDTLS_SSL_VERIFY_NONE ) + return( 0 ); - if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) + if( ssl->f_vrfy != NULL ) { - /* mbedtls_ssl_read_record may have sent an alert already. We - let it decide whether to alert. */ - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); - return( ret ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "Use context-specific verification callback" ) ); + f_vrfy = ssl->f_vrfy; + p_vrfy = ssl->p_vrfy; } - - if( ( ret = ssl_parse_certificate_chain( ssl ) ) != 0 ) + else { -#if defined(MBEDTLS_SSL_SRV_C) - if( ret == MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE && - authmode == MBEDTLS_SSL_VERIFY_OPTIONAL ) - { - ret = 0; - } -#endif - - ssl->state++; - return( ret ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "Use configuration-specific verification callback" ) ); + f_vrfy = ssl->conf->f_vrfy; + p_vrfy = ssl->conf->p_vrfy; } -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( ssl->handshake->ecrs_enabled) - ssl->handshake->ecrs_state = ssl_ecrs_crt_verify; - -crt_verify: - if( ssl->handshake->ecrs_enabled) - rs_ctx = &ssl->handshake->ecrs_ctx; -#endif - - if( authmode != MBEDTLS_SSL_VERIFY_NONE ) + /* + * Main check: verify certificate + */ +#if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK) + if( ssl->conf->f_ca_cb != NULL ) + { + ((void) rs_ctx); + have_ca_chain = 1; + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "use CA callback for X.509 CRT verification" ) ); + ret = mbedtls_x509_crt_verify_with_ca_cb( + chain, + ssl->conf->f_ca_cb, + ssl->conf->p_ca_cb, + ssl->conf->cert_profile, + ssl->hostname, + &ssl->session_negotiate->verify_result, + f_vrfy, p_vrfy ); + } + else +#endif /* MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK */ { mbedtls_x509_crt *ca_chain; mbedtls_x509_crl *ca_crl; @@ -5741,232 +2666,327 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) ca_crl = ssl->conf->ca_crl; } - /* - * Main check: verify certificate - */ + if( ca_chain != NULL ) + have_ca_chain = 1; + ret = mbedtls_x509_crt_verify_restartable( - ssl->session_negotiate->peer_cert, - ca_chain, ca_crl, - ssl->conf->cert_profile, - ssl->hostname, - &ssl->session_negotiate->verify_result, - ssl->conf->f_vrfy, ssl->conf->p_vrfy, rs_ctx ); + chain, + ca_chain, ca_crl, + ssl->conf->cert_profile, + ssl->hostname, + &ssl->session_negotiate->verify_result, + f_vrfy, p_vrfy, rs_ctx ); + } - if( ret != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "x509_verify_cert", ret ); - } + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "x509_verify_cert", ret ); + } -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) - return( MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ); +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + return( MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ); #endif - /* - * Secondary checks: always done, but change 'ret' only if it was 0 - */ + /* + * Secondary checks: always done, but change 'ret' only if it was 0 + */ #if defined(MBEDTLS_ECP_C) - { - const mbedtls_pk_context *pk = &ssl->session_negotiate->peer_cert->pk; - - /* If certificate uses an EC key, make sure the curve is OK */ - if( mbedtls_pk_can_do( pk, MBEDTLS_PK_ECKEY ) && - mbedtls_ssl_check_curve( ssl, mbedtls_pk_ec( *pk )->grp.id ) != 0 ) - { - ssl->session_negotiate->verify_result |= MBEDTLS_X509_BADCERT_BAD_KEY; - - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad certificate (EC key curve)" ) ); - if( ret == 0 ) - ret = MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE; - } - } -#endif /* MBEDTLS_ECP_C */ + { + const mbedtls_pk_context *pk = &chain->pk; - if( mbedtls_ssl_check_cert_usage( ssl->session_negotiate->peer_cert, - ciphersuite_info, - ! ssl->conf->endpoint, - &ssl->session_negotiate->verify_result ) != 0 ) + /* If certificate uses an EC key, make sure the curve is OK */ + if( mbedtls_pk_can_do( pk, MBEDTLS_PK_ECKEY ) && + mbedtls_ssl_check_curve( ssl, mbedtls_pk_ec( *pk )->grp.id ) != 0 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad certificate (usage extensions)" ) ); + ssl->session_negotiate->verify_result |= MBEDTLS_X509_BADCERT_BAD_KEY; + + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad certificate (EC key curve)" ) ); if( ret == 0 ) ret = MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE; } + } +#endif /* MBEDTLS_ECP_C */ - /* mbedtls_x509_crt_verify_with_profile is supposed to report a - * verification failure through MBEDTLS_ERR_X509_CERT_VERIFY_FAILED, - * with details encoded in the verification flags. All other kinds - * of error codes, including those from the user provided f_vrfy - * functions, are treated as fatal and lead to a failure of - * ssl_parse_certificate even if verification was optional. */ - if( authmode == MBEDTLS_SSL_VERIFY_OPTIONAL && - ( ret == MBEDTLS_ERR_X509_CERT_VERIFY_FAILED || - ret == MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE ) ) - { - ret = 0; - } + if( mbedtls_ssl_check_cert_usage( chain, + ciphersuite_info, + ! ssl->conf->endpoint, + &ssl->session_negotiate->verify_result ) != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad certificate (usage extensions)" ) ); + if( ret == 0 ) + ret = MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE; + } - if( ca_chain == NULL && authmode == MBEDTLS_SSL_VERIFY_REQUIRED ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "got no CA chain" ) ); - ret = MBEDTLS_ERR_SSL_CA_CHAIN_REQUIRED; - } + /* mbedtls_x509_crt_verify_with_profile is supposed to report a + * verification failure through MBEDTLS_ERR_X509_CERT_VERIFY_FAILED, + * with details encoded in the verification flags. All other kinds + * of error codes, including those from the user provided f_vrfy + * functions, are treated as fatal and lead to a failure of + * ssl_parse_certificate even if verification was optional. */ + if( authmode == MBEDTLS_SSL_VERIFY_OPTIONAL && + ( ret == MBEDTLS_ERR_X509_CERT_VERIFY_FAILED || + ret == MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE ) ) + { + ret = 0; + } - if( ret != 0 ) - { - uint8_t alert; - - /* The certificate may have been rejected for several reasons. - Pick one and send the corresponding alert. Which alert to send - may be a subject of debate in some cases. */ - if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_OTHER ) - alert = MBEDTLS_SSL_ALERT_MSG_ACCESS_DENIED; - else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_CN_MISMATCH ) - alert = MBEDTLS_SSL_ALERT_MSG_BAD_CERT; - else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_KEY_USAGE ) - alert = MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT; - else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_EXT_KEY_USAGE ) - alert = MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT; - else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_NS_CERT_TYPE ) - alert = MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT; - else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_BAD_PK ) - alert = MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT; - else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_BAD_KEY ) - alert = MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT; - else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_EXPIRED ) - alert = MBEDTLS_SSL_ALERT_MSG_CERT_EXPIRED; - else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_REVOKED ) - alert = MBEDTLS_SSL_ALERT_MSG_CERT_REVOKED; - else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_NOT_TRUSTED ) - alert = MBEDTLS_SSL_ALERT_MSG_UNKNOWN_CA; - else - alert = MBEDTLS_SSL_ALERT_MSG_CERT_UNKNOWN; - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - alert ); - } + if( have_ca_chain == 0 && authmode == MBEDTLS_SSL_VERIFY_REQUIRED ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "got no CA chain" ) ); + ret = MBEDTLS_ERR_SSL_CA_CHAIN_REQUIRED; + } -#if defined(MBEDTLS_DEBUG_C) - if( ssl->session_negotiate->verify_result != 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 3, ( "! Certificate verification flags %x", - ssl->session_negotiate->verify_result ) ); - } + if( ret != 0 ) + { + uint8_t alert; + + /* The certificate may have been rejected for several reasons. + Pick one and send the corresponding alert. Which alert to send + may be a subject of debate in some cases. */ + if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_OTHER ) + alert = MBEDTLS_SSL_ALERT_MSG_ACCESS_DENIED; + else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_CN_MISMATCH ) + alert = MBEDTLS_SSL_ALERT_MSG_BAD_CERT; + else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_KEY_USAGE ) + alert = MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT; + else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_EXT_KEY_USAGE ) + alert = MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT; + else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_NS_CERT_TYPE ) + alert = MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT; + else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_BAD_PK ) + alert = MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT; + else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_BAD_KEY ) + alert = MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT; + else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_EXPIRED ) + alert = MBEDTLS_SSL_ALERT_MSG_CERT_EXPIRED; + else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_REVOKED ) + alert = MBEDTLS_SSL_ALERT_MSG_CERT_REVOKED; + else if( ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_NOT_TRUSTED ) + alert = MBEDTLS_SSL_ALERT_MSG_UNKNOWN_CA; else - { - MBEDTLS_SSL_DEBUG_MSG( 3, ( "Certificate verification flags clear" ) ); - } -#endif /* MBEDTLS_DEBUG_C */ + alert = MBEDTLS_SSL_ALERT_MSG_CERT_UNKNOWN; + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + alert ); } - ssl->state++; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= parse certificate" ) ); +#if defined(MBEDTLS_DEBUG_C) + if( ssl->session_negotiate->verify_result != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "! Certificate verification flags %08x", + (unsigned int) ssl->session_negotiate->verify_result ) ); + } + else + { + MBEDTLS_SSL_DEBUG_MSG( 3, ( "Certificate verification flags clear" ) ); + } +#endif /* MBEDTLS_DEBUG_C */ return( ret ); } -#endif /* !MBEDTLS_KEY_EXCHANGE_RSA_ENABLED - !MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED - !MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED - !MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED - !MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED - !MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED - !MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */ -int mbedtls_ssl_write_change_cipher_spec( mbedtls_ssl_context *ssl ) +#if !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) +static int ssl_remember_peer_crt_digest( mbedtls_ssl_context *ssl, + unsigned char *start, size_t len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + /* Remember digest of the peer's end-CRT. */ + ssl->session_negotiate->peer_cert_digest = + mbedtls_calloc( 1, MBEDTLS_SSL_PEER_CERT_DIGEST_DFL_LEN ); + if( ssl->session_negotiate->peer_cert_digest == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", + MBEDTLS_SSL_PEER_CERT_DIGEST_DFL_LEN ) ); + mbedtls_ssl_send_alert_message( ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_INTERNAL_ERROR ); + + return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); + } - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write change cipher spec" ) ); + ret = mbedtls_md( mbedtls_md_info_from_type( + MBEDTLS_SSL_PEER_CERT_DIGEST_DFL_TYPE ), + start, len, + ssl->session_negotiate->peer_cert_digest ); - ssl->out_msgtype = MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC; - ssl->out_msglen = 1; - ssl->out_msg[0] = 1; + ssl->session_negotiate->peer_cert_digest_type = + MBEDTLS_SSL_PEER_CERT_DIGEST_DFL_TYPE; + ssl->session_negotiate->peer_cert_digest_len = + MBEDTLS_SSL_PEER_CERT_DIGEST_DFL_LEN; - ssl->state++; + return( ret ); +} - if( ( ret = mbedtls_ssl_write_handshake_msg( ssl ) ) != 0 ) +static int ssl_remember_peer_pubkey( mbedtls_ssl_context *ssl, + unsigned char *start, size_t len ) +{ + unsigned char *end = start + len; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + /* Make a copy of the peer's raw public key. */ + mbedtls_pk_init( &ssl->handshake->peer_pubkey ); + ret = mbedtls_pk_parse_subpubkey( &start, end, + &ssl->handshake->peer_pubkey ); + if( ret != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_handshake_msg", ret ); - return( ret ); + /* We should have parsed the public key before. */ + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write change cipher spec" ) ); - return( 0 ); } +#endif /* !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ -int mbedtls_ssl_parse_change_cipher_spec( mbedtls_ssl_context *ssl ) +int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) { - int ret; + int ret = 0; + int crt_expected; +#if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) + const int authmode = ssl->handshake->sni_authmode != MBEDTLS_SSL_VERIFY_UNSET + ? ssl->handshake->sni_authmode + : ssl->conf->authmode; +#else + const int authmode = ssl->conf->authmode; +#endif + void *rs_ctx = NULL; + mbedtls_x509_crt *chain = NULL; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse certificate" ) ); + + crt_expected = ssl_parse_certificate_coordinate( ssl, authmode ); + if( crt_expected == SSL_CERTIFICATE_SKIP ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate" ) ); + goto exit; + } - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse change cipher spec" ) ); +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) + if( ssl->handshake->ecrs_enabled && + ssl->handshake->ecrs_state == ssl_ecrs_crt_verify ) + { + chain = ssl->handshake->ecrs_peer_cert; + ssl->handshake->ecrs_peer_cert = NULL; + goto crt_verify; + } +#endif if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) { + /* mbedtls_ssl_read_record may have sent an alert already. We + let it decide whether to alert. */ MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); - return( ret ); + goto exit; } - if( ssl->in_msgtype != MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC ) +#if defined(MBEDTLS_SSL_SRV_C) + if( ssl_srv_check_client_no_crt_notification( ssl ) == 0 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad change cipher spec message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); - return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); - } + ssl->session_negotiate->verify_result = MBEDTLS_X509_BADCERT_MISSING; - /* CCS records are only accepted if they have length 1 and content '1', - * so we don't need to check this here. */ + if( authmode != MBEDTLS_SSL_VERIFY_OPTIONAL ) + ret = MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE; - /* - * Switch to our negotiated transform and session parameters for inbound - * data. - */ - MBEDTLS_SSL_DEBUG_MSG( 3, ( "switching to new transform spec for inbound data" ) ); - ssl->transform_in = ssl->transform_negotiate; - ssl->session_in = ssl->session_negotiate; + goto exit; + } +#endif /* MBEDTLS_SSL_SRV_C */ -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + /* Clear existing peer CRT structure in case we tried to + * reuse a session but it failed, and allocate a new one. */ + ssl_clear_peer_cert( ssl->session_negotiate ); + + chain = mbedtls_calloc( 1, sizeof( mbedtls_x509_crt ) ); + if( chain == NULL ) { -#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) - ssl_dtls_replay_reset( ssl ); + MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%" MBEDTLS_PRINTF_SIZET " bytes) failed", + sizeof( mbedtls_x509_crt ) ) ); + mbedtls_ssl_send_alert_message( ssl, + MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_INTERNAL_ERROR ); + + ret = MBEDTLS_ERR_SSL_ALLOC_FAILED; + goto exit; + } + mbedtls_x509_crt_init( chain ); + + ret = ssl_parse_certificate_chain( ssl, chain ); + if( ret != 0 ) + goto exit; + +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) + if( ssl->handshake->ecrs_enabled) + ssl->handshake->ecrs_state = ssl_ecrs_crt_verify; + +crt_verify: + if( ssl->handshake->ecrs_enabled) + rs_ctx = &ssl->handshake->ecrs_ctx; #endif - /* Increment epoch */ - if( ++ssl->in_epoch == 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "DTLS epoch would wrap" ) ); - /* This is highly unlikely to happen for legitimate reasons, so - treat it as an attack and don't send an alert. */ - return( MBEDTLS_ERR_SSL_COUNTER_WRAPPING ); - } + ret = ssl_parse_certificate_verify( ssl, authmode, + chain, rs_ctx ); + if( ret != 0 ) + goto exit; + +#if !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + { + unsigned char *crt_start, *pk_start; + size_t crt_len, pk_len; + + /* We parse the CRT chain without copying, so + * these pointers point into the input buffer, + * and are hence still valid after freeing the + * CRT chain. */ + + crt_start = chain->raw.p; + crt_len = chain->raw.len; + + pk_start = chain->pk_raw.p; + pk_len = chain->pk_raw.len; + + /* Free the CRT structures before computing + * digest and copying the peer's public key. */ + mbedtls_x509_crt_free( chain ); + mbedtls_free( chain ); + chain = NULL; + + ret = ssl_remember_peer_crt_digest( ssl, crt_start, crt_len ); + if( ret != 0 ) + goto exit; + + ret = ssl_remember_peer_pubkey( ssl, pk_start, pk_len ); + if( ret != 0 ) + goto exit; } - else -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - memset( ssl->in_ctr, 0, 8 ); +#else /* !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + /* Pass ownership to session structure. */ + ssl->session_negotiate->peer_cert = chain; + chain = NULL; +#endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= parse certificate" ) ); - ssl_update_in_pointers( ssl, ssl->transform_negotiate ); +exit: -#if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) - if( mbedtls_ssl_hw_record_activate != NULL ) + if( ret == 0 ) + ssl->state++; + +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) + if( ret == MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ) { - if( ( ret = mbedtls_ssl_hw_record_activate( ssl, MBEDTLS_SSL_CHANNEL_INBOUND ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_hw_record_activate", ret ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_INTERNAL_ERROR ); - return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED ); - } + ssl->handshake->ecrs_peer_cert = chain; + chain = NULL; } #endif - ssl->state++; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= parse change cipher spec" ) ); + if( chain != NULL ) + { + mbedtls_x509_crt_free( chain ); + mbedtls_free( chain ); + } - return( 0 ); + return( ret ); } +#endif /* MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ void mbedtls_ssl_optimize_checksum( mbedtls_ssl_context *ssl, const mbedtls_ssl_ciphersuite_t *ciphersuite_info ) @@ -5980,7 +3000,7 @@ void mbedtls_ssl_optimize_checksum( mbedtls_ssl_context *ssl, else #endif #if defined(MBEDTLS_SSL_PROTO_TLS1_2) -#if defined(MBEDTLS_SHA512_C) +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) if( ciphersuite_info->mac == MBEDTLS_MD_SHA384 ) ssl->handshake->update_checksum = ssl_update_checksum_sha384; else @@ -6006,11 +3026,21 @@ void mbedtls_ssl_reset_checksum( mbedtls_ssl_context *ssl ) #endif #if defined(MBEDTLS_SSL_PROTO_TLS1_2) #if defined(MBEDTLS_SHA256_C) +#if defined(MBEDTLS_USE_PSA_CRYPTO) + psa_hash_abort( &ssl->handshake->fin_sha256_psa ); + psa_hash_setup( &ssl->handshake->fin_sha256_psa, PSA_ALG_SHA_256 ); +#else mbedtls_sha256_starts_ret( &ssl->handshake->fin_sha256, 0 ); #endif -#if defined(MBEDTLS_SHA512_C) +#endif +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) +#if defined(MBEDTLS_USE_PSA_CRYPTO) + psa_hash_abort( &ssl->handshake->fin_sha384_psa ); + psa_hash_setup( &ssl->handshake->fin_sha384_psa, PSA_ALG_SHA_384 ); +#else mbedtls_sha512_starts_ret( &ssl->handshake->fin_sha512, 1 ); #endif +#endif #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ } @@ -6024,11 +3054,19 @@ static void ssl_update_checksum_start( mbedtls_ssl_context *ssl, #endif #if defined(MBEDTLS_SSL_PROTO_TLS1_2) #if defined(MBEDTLS_SHA256_C) +#if defined(MBEDTLS_USE_PSA_CRYPTO) + psa_hash_update( &ssl->handshake->fin_sha256_psa, buf, len ); +#else mbedtls_sha256_update_ret( &ssl->handshake->fin_sha256, buf, len ); #endif -#if defined(MBEDTLS_SHA512_C) +#endif +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) +#if defined(MBEDTLS_USE_PSA_CRYPTO) + psa_hash_update( &ssl->handshake->fin_sha384_psa, buf, len ); +#else mbedtls_sha512_update_ret( &ssl->handshake->fin_sha512, buf, len ); #endif +#endif #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ } @@ -6047,15 +3085,23 @@ static void ssl_update_checksum_md5sha1( mbedtls_ssl_context *ssl, static void ssl_update_checksum_sha256( mbedtls_ssl_context *ssl, const unsigned char *buf, size_t len ) { +#if defined(MBEDTLS_USE_PSA_CRYPTO) + psa_hash_update( &ssl->handshake->fin_sha256_psa, buf, len ); +#else mbedtls_sha256_update_ret( &ssl->handshake->fin_sha256, buf, len ); +#endif } #endif -#if defined(MBEDTLS_SHA512_C) +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) static void ssl_update_checksum_sha384( mbedtls_ssl_context *ssl, const unsigned char *buf, size_t len ) { +#if defined(MBEDTLS_USE_PSA_CRYPTO) + psa_hash_update( &ssl->handshake->fin_sha384_psa, buf, len ); +#else mbedtls_sha512_update_ret( &ssl->handshake->fin_sha512, buf, len ); +#endif } #endif #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ @@ -6211,13 +3257,44 @@ static void ssl_calc_finished_tls_sha256( { int len = 12; const char *sender; - mbedtls_sha256_context sha256; unsigned char padbuf[32]; +#if defined(MBEDTLS_USE_PSA_CRYPTO) + size_t hash_size; + psa_hash_operation_t sha256_psa = PSA_HASH_OPERATION_INIT; + psa_status_t status; +#else + mbedtls_sha256_context sha256; +#endif mbedtls_ssl_session *session = ssl->session_negotiate; if( !session ) session = ssl->session; + sender = ( from == MBEDTLS_SSL_IS_CLIENT ) + ? "client finished" + : "server finished"; + +#if defined(MBEDTLS_USE_PSA_CRYPTO) + sha256_psa = psa_hash_operation_init(); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> calc PSA finished tls sha256" ) ); + + status = psa_hash_clone( &ssl->handshake->fin_sha256_psa, &sha256_psa ); + if( status != PSA_SUCCESS ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "PSA hash clone failed" ) ); + return; + } + + status = psa_hash_finish( &sha256_psa, padbuf, sizeof( padbuf ), &hash_size ); + if( status != PSA_SUCCESS ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "PSA hash finish failed" ) ); + return; + } + MBEDTLS_SSL_DEBUG_BUF( 3, "PSA calculated padbuf", padbuf, 32 ); +#else + mbedtls_sha256_init( &sha256 ); MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> calc finished tls sha256" ) ); @@ -6235,18 +3312,14 @@ static void ssl_calc_finished_tls_sha256( sha256.state, sizeof( sha256.state ) ); #endif - sender = ( from == MBEDTLS_SSL_IS_CLIENT ) - ? "client finished" - : "server finished"; - mbedtls_sha256_finish_ret( &sha256, padbuf ); + mbedtls_sha256_free( &sha256 ); +#endif /* MBEDTLS_USE_PSA_CRYPTO */ ssl->handshake->tls_prf( session->master, 48, sender, padbuf, 32, buf, len ); - MBEDTLS_SSL_DEBUG_BUF( 3, "calc finished result", buf, len ); - - mbedtls_sha256_free( &sha256 ); + MBEDTLS_SSL_DEBUG_BUF( 3, "calc finished result", buf, len ); mbedtls_platform_zeroize( padbuf, sizeof( padbuf ) ); @@ -6254,19 +3327,50 @@ static void ssl_calc_finished_tls_sha256( } #endif /* MBEDTLS_SHA256_C */ -#if defined(MBEDTLS_SHA512_C) +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) + static void ssl_calc_finished_tls_sha384( mbedtls_ssl_context *ssl, unsigned char *buf, int from ) { int len = 12; const char *sender; - mbedtls_sha512_context sha512; unsigned char padbuf[48]; +#if defined(MBEDTLS_USE_PSA_CRYPTO) + size_t hash_size; + psa_hash_operation_t sha384_psa = PSA_HASH_OPERATION_INIT; + psa_status_t status; +#else + mbedtls_sha512_context sha512; +#endif mbedtls_ssl_session *session = ssl->session_negotiate; if( !session ) session = ssl->session; + sender = ( from == MBEDTLS_SSL_IS_CLIENT ) + ? "client finished" + : "server finished"; + +#if defined(MBEDTLS_USE_PSA_CRYPTO) + sha384_psa = psa_hash_operation_init(); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> calc PSA finished tls sha384" ) ); + + status = psa_hash_clone( &ssl->handshake->fin_sha384_psa, &sha384_psa ); + if( status != PSA_SUCCESS ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "PSA hash clone failed" ) ); + return; + } + + status = psa_hash_finish( &sha384_psa, padbuf, sizeof( padbuf ), &hash_size ); + if( status != PSA_SUCCESS ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "PSA hash finish failed" ) ); + return; + } + MBEDTLS_SSL_DEBUG_BUF( 3, "PSA calculated padbuf", padbuf, 48 ); +#else mbedtls_sha512_init( &sha512 ); MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> calc finished tls sha384" ) ); @@ -6283,28 +3387,36 @@ static void ssl_calc_finished_tls_sha384( MBEDTLS_SSL_DEBUG_BUF( 4, "finished sha512 state", (unsigned char *) sha512.state, sizeof( sha512.state ) ); #endif - - sender = ( from == MBEDTLS_SSL_IS_CLIENT ) - ? "client finished" - : "server finished"; - + /* mbedtls_sha512_finish_ret's output parameter is declared as a + * 64-byte buffer, but sice we're using SHA-384, we know that the + * output fits in 48 bytes. This is correct C, but GCC 11.1 warns + * about it. + */ +#if defined(__GNUC__) && __GNUC__ >= 11 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstringop-overflow" +#endif mbedtls_sha512_finish_ret( &sha512, padbuf ); +#if defined(__GNUC__) && __GNUC__ >= 11 +#pragma GCC diagnostic pop +#endif + + mbedtls_sha512_free( &sha512 ); +#endif ssl->handshake->tls_prf( session->master, 48, sender, padbuf, 48, buf, len ); MBEDTLS_SSL_DEBUG_BUF( 3, "calc finished result", buf, len ); - mbedtls_sha512_free( &sha512 ); - mbedtls_platform_zeroize( padbuf, sizeof( padbuf ) ); MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= calc finished" ) ); } -#endif /* MBEDTLS_SHA512_C */ +#endif /* MBEDTLS_SHA512_C && !MBEDTLS_SHA512_NO_SHA384 */ #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ -static void ssl_handshake_wrapup_free_hs_transform( mbedtls_ssl_context *ssl ) +void mbedtls_ssl_handshake_wrapup_free_hs_transform( mbedtls_ssl_context *ssl ) { MBEDTLS_SSL_DEBUG_MSG( 3, ( "=> handshake wrapup: final free" ) ); @@ -6376,7 +3488,7 @@ void mbedtls_ssl_handshake_wrapup( mbedtls_ssl_context *ssl ) ssl->handshake->flight != NULL ) { /* Cancel handshake timer */ - ssl_set_timer( ssl, 0 ); + mbedtls_ssl_set_timer( ssl, 0 ); /* Keep last flight around in case we need to resend it: * we need the handshake and transform structures for that */ @@ -6384,7 +3496,7 @@ void mbedtls_ssl_handshake_wrapup( mbedtls_ssl_context *ssl ) } else #endif - ssl_handshake_wrapup_free_hs_transform( ssl ); + mbedtls_ssl_handshake_wrapup_free_hs_transform( ssl ); ssl->state++; @@ -6397,7 +3509,7 @@ int mbedtls_ssl_write_finished( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write finished" ) ); - ssl_update_out_pointers( ssl, ssl->transform_negotiate ); + mbedtls_ssl_update_out_pointers( ssl, ssl->transform_negotiate ); ssl->handshake->calc_finished( ssl, ssl->out_msg + 4, ssl->conf->endpoint ); @@ -6517,18 +3629,26 @@ int mbedtls_ssl_write_finished( mbedtls_ssl_context *ssl ) int mbedtls_ssl_parse_finished( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned int hash_len; unsigned char buf[SSL_MAX_HASH_LEN]; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse finished" ) ); + /* There is currently no ciphersuite using another length with TLS 1.2 */ +#if defined(MBEDTLS_SSL_PROTO_SSL3) + if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) + hash_len = 36; + else +#endif + hash_len = 12; + ssl->handshake->calc_finished( ssl, buf, ssl->conf->endpoint ^ 1 ); if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); - return( ret ); + goto exit; } if( ssl->in_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE ) @@ -6536,33 +3656,28 @@ int mbedtls_ssl_parse_finished( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad finished message" ) ); mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); - return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); + ret = MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE; + goto exit; } - /* There is currently no ciphersuite using another length with TLS 1.2 */ -#if defined(MBEDTLS_SSL_PROTO_SSL3) - if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) - hash_len = 36; - else -#endif - hash_len = 12; - if( ssl->in_msg[0] != MBEDTLS_SSL_HS_FINISHED || ssl->in_hslen != mbedtls_ssl_hs_hdr_len( ssl ) + hash_len ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad finished message" ) ); mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); - return( MBEDTLS_ERR_SSL_BAD_HS_FINISHED ); + ret = MBEDTLS_ERR_SSL_BAD_HS_FINISHED; + goto exit; } - if( mbedtls_ssl_safer_memcmp( ssl->in_msg + mbedtls_ssl_hs_hdr_len( ssl ), + if( mbedtls_ct_memcmp( ssl->in_msg + mbedtls_ssl_hs_hdr_len( ssl ), buf, hash_len ) != 0 ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad finished message" ) ); mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); - return( MBEDTLS_ERR_SSL_BAD_HS_FINISHED ); + MBEDTLS_SSL_ALERT_MSG_DECRYPT_ERROR ); + ret = MBEDTLS_ERR_SSL_BAD_HS_FINISHED; + goto exit; } #if defined(MBEDTLS_SSL_RENEGOTIATION) @@ -6591,7 +3706,9 @@ int mbedtls_ssl_parse_finished( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= parse finished" ) ); - return( 0 ); +exit: + mbedtls_platform_zeroize( buf, hash_len ); + return( ret ); } static void ssl_handshake_params_init( mbedtls_ssl_handshake_params *handshake ) @@ -6607,19 +3724,29 @@ static void ssl_handshake_params_init( mbedtls_ssl_handshake_params *handshake ) #endif #if defined(MBEDTLS_SSL_PROTO_TLS1_2) #if defined(MBEDTLS_SHA256_C) +#if defined(MBEDTLS_USE_PSA_CRYPTO) + handshake->fin_sha256_psa = psa_hash_operation_init(); + psa_hash_setup( &handshake->fin_sha256_psa, PSA_ALG_SHA_256 ); +#else mbedtls_sha256_init( &handshake->fin_sha256 ); mbedtls_sha256_starts_ret( &handshake->fin_sha256, 0 ); #endif -#if defined(MBEDTLS_SHA512_C) +#endif +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) +#if defined(MBEDTLS_USE_PSA_CRYPTO) + handshake->fin_sha384_psa = psa_hash_operation_init(); + psa_hash_setup( &handshake->fin_sha384_psa, PSA_ALG_SHA_384 ); +#else mbedtls_sha512_init( &handshake->fin_sha512 ); mbedtls_sha512_starts_ret( &handshake->fin_sha512, 1 ); #endif +#endif #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ handshake->update_checksum = ssl_update_checksum_start; #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) mbedtls_ssl_sig_hash_set_init( &handshake->hash_algs ); #endif @@ -6637,24 +3764,31 @@ static void ssl_handshake_params_init( mbedtls_ssl_handshake_params *handshake ) #endif #endif -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) mbedtls_x509_crt_restart_init( &handshake->ecrs_ctx ); #endif #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) handshake->sni_authmode = MBEDTLS_SSL_VERIFY_UNSET; #endif + +#if defined(MBEDTLS_X509_CRT_PARSE_C) && \ + !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + mbedtls_pk_init( &handshake->peer_pubkey ); +#endif } -static void ssl_transform_init( mbedtls_ssl_transform *transform ) +void mbedtls_ssl_transform_init( mbedtls_ssl_transform *transform ) { memset( transform, 0, sizeof(mbedtls_ssl_transform) ); mbedtls_cipher_init( &transform->cipher_ctx_enc ); mbedtls_cipher_init( &transform->cipher_ctx_dec ); +#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC) mbedtls_md_init( &transform->md_ctx_enc ); mbedtls_md_init( &transform->md_ctx_dec ); +#endif } void mbedtls_ssl_session_init( mbedtls_ssl_session *session ) @@ -6690,6 +3824,12 @@ static int ssl_handshake_init( mbedtls_ssl_context *ssl ) { ssl->handshake = mbedtls_calloc( 1, sizeof(mbedtls_ssl_handshake_params) ); } +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + /* If the buffers are too small - reallocate */ + + handle_buffer_resizing( ssl, 0, MBEDTLS_SSL_IN_BUFFER_LEN, + MBEDTLS_SSL_OUT_BUFFER_LEN ); +#endif /* All pointers should exist and can be directly freed without issue */ if( ssl->handshake == NULL || @@ -6711,7 +3851,7 @@ static int ssl_handshake_init( mbedtls_ssl_context *ssl ) /* Initialize structures */ mbedtls_ssl_session_init( ssl->session_negotiate ); - ssl_transform_init( ssl->transform_negotiate ); + mbedtls_ssl_transform_init( ssl->transform_negotiate ); ssl_handshake_params_init( ssl->handshake ); #if defined(MBEDTLS_SSL_PROTO_DTLS) @@ -6724,7 +3864,7 @@ static int ssl_handshake_init( mbedtls_ssl_context *ssl ) else ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_WAITING; - ssl_set_timer( ssl, 0 ); + mbedtls_ssl_set_timer( ssl, 0 ); } #endif @@ -6760,78 +3900,6 @@ static int ssl_cookie_check_dummy( void *ctx, } #endif /* MBEDTLS_SSL_DTLS_HELLO_VERIFY && MBEDTLS_SSL_SRV_C */ -/* Once ssl->out_hdr as the address of the beginning of the - * next outgoing record is set, deduce the other pointers. - * - * Note: For TLS, we save the implicit record sequence number - * (entering MAC computation) in the 8 bytes before ssl->out_hdr, - * and the caller has to make sure there's space for this. - */ - -static void ssl_update_out_pointers( mbedtls_ssl_context *ssl, - mbedtls_ssl_transform *transform ) -{ -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - ssl->out_ctr = ssl->out_hdr + 3; - ssl->out_len = ssl->out_hdr + 11; - ssl->out_iv = ssl->out_hdr + 13; - } - else -#endif - { - ssl->out_ctr = ssl->out_hdr - 8; - ssl->out_len = ssl->out_hdr + 3; - ssl->out_iv = ssl->out_hdr + 5; - } - - /* Adjust out_msg to make space for explicit IV, if used. */ - if( transform != NULL && - ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) - { - ssl->out_msg = ssl->out_iv + transform->ivlen - transform->fixed_ivlen; - } - else - ssl->out_msg = ssl->out_iv; -} - -/* Once ssl->in_hdr as the address of the beginning of the - * next incoming record is set, deduce the other pointers. - * - * Note: For TLS, we save the implicit record sequence number - * (entering MAC computation) in the 8 bytes before ssl->in_hdr, - * and the caller has to make sure there's space for this. - */ - -static void ssl_update_in_pointers( mbedtls_ssl_context *ssl, - mbedtls_ssl_transform *transform ) -{ -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - ssl->in_ctr = ssl->in_hdr + 3; - ssl->in_len = ssl->in_hdr + 11; - ssl->in_iv = ssl->in_hdr + 13; - } - else -#endif - { - ssl->in_ctr = ssl->in_hdr - 8; - ssl->in_len = ssl->in_hdr + 3; - ssl->in_iv = ssl->in_hdr + 5; - } - - /* Offset in_msg from in_iv to allow space for explicit IV, if used. */ - if( transform != NULL && - ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) - { - ssl->in_msg = ssl->in_iv + transform->ivlen - transform->fixed_ivlen; - } - else - ssl->in_msg = ssl->in_iv; -} - /* * Initialize an SSL context */ @@ -6844,31 +3912,12 @@ void mbedtls_ssl_init( mbedtls_ssl_context *ssl ) * Setup an SSL context */ -static void ssl_reset_in_out_pointers( mbedtls_ssl_context *ssl ) -{ - /* Set the incoming and outgoing record pointers. */ -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - ssl->out_hdr = ssl->out_buf; - ssl->in_hdr = ssl->in_buf; - } - else -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - { - ssl->out_hdr = ssl->out_buf + 8; - ssl->in_hdr = ssl->in_buf + 8; - } - - /* Derive other internal pointers. */ - ssl_update_out_pointers( ssl, NULL /* no transform enabled */ ); - ssl_update_in_pointers ( ssl, NULL /* no transform enabled */ ); -} - int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, const mbedtls_ssl_config *conf ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t in_buf_len = MBEDTLS_SSL_IN_BUFFER_LEN; + size_t out_buf_len = MBEDTLS_SSL_OUT_BUFFER_LEN; ssl->conf = conf; @@ -6879,23 +3928,33 @@ int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, /* Set to NULL in case of an error condition */ ssl->out_buf = NULL; - ssl->in_buf = mbedtls_calloc( 1, MBEDTLS_SSL_IN_BUFFER_LEN ); +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + ssl->in_buf_len = in_buf_len; +#endif + ssl->in_buf = mbedtls_calloc( 1, in_buf_len ); if( ssl->in_buf == NULL ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", MBEDTLS_SSL_IN_BUFFER_LEN) ); + MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%" MBEDTLS_PRINTF_SIZET " bytes) failed", in_buf_len ) ); ret = MBEDTLS_ERR_SSL_ALLOC_FAILED; goto error; } - ssl->out_buf = mbedtls_calloc( 1, MBEDTLS_SSL_OUT_BUFFER_LEN ); +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + ssl->out_buf_len = out_buf_len; +#endif + ssl->out_buf = mbedtls_calloc( 1, out_buf_len ); if( ssl->out_buf == NULL ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", MBEDTLS_SSL_OUT_BUFFER_LEN) ); + MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%" MBEDTLS_PRINTF_SIZET " bytes) failed", out_buf_len ) ); ret = MBEDTLS_ERR_SSL_ALLOC_FAILED; goto error; } - ssl_reset_in_out_pointers( ssl ); + mbedtls_ssl_reset_in_out_pointers( ssl ); + +#if defined(MBEDTLS_SSL_DTLS_SRTP) + memset( &ssl->dtls_srtp_info, 0, sizeof(ssl->dtls_srtp_info) ); +#endif if( ( ret = ssl_handshake_init( ssl ) ) != 0 ) goto error; @@ -6908,6 +3967,10 @@ int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, ssl->conf = NULL; +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + ssl->in_buf_len = 0; + ssl->out_buf_len = 0; +#endif ssl->in_buf = NULL; ssl->out_buf = NULL; @@ -6933,9 +3996,16 @@ int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, * If partial is non-zero, keep data in the input buffer and client ID. * (Use when a DTLS client reconnects from the same port.) */ -static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) +int mbedtls_ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + size_t in_buf_len = ssl->in_buf_len; + size_t out_buf_len = ssl->out_buf_len; +#else + size_t in_buf_len = MBEDTLS_SSL_IN_BUFFER_LEN; + size_t out_buf_len = MBEDTLS_SSL_OUT_BUFFER_LEN; +#endif #if !defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) || \ !defined(MBEDTLS_SSL_SRV_C) @@ -6945,7 +4015,7 @@ static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) ssl->state = MBEDTLS_SSL_HELLO_REQUEST; /* Cancel any possibly running timer */ - ssl_set_timer( ssl, 0 ); + mbedtls_ssl_set_timer( ssl, 0 ); #if defined(MBEDTLS_SSL_RENEGOTIATION) ssl->renego_status = MBEDTLS_SSL_INITIAL_HANDSHAKE; @@ -6958,7 +4028,7 @@ static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) ssl->secure_renegotiation = MBEDTLS_SSL_LEGACY_RENEGOTIATION; ssl->in_offt = NULL; - ssl_reset_in_out_pointers( ssl ); + mbedtls_ssl_reset_in_out_pointers( ssl ); ssl->in_msgtype = 0; ssl->in_msglen = 0; @@ -6967,7 +4037,7 @@ static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) ssl->in_epoch = 0; #endif #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) - ssl_dtls_replay_reset( ssl ); + mbedtls_ssl_dtls_replay_reset( ssl ); #endif ssl->in_hslen = 0; @@ -6991,14 +4061,14 @@ static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) ssl->session_in = NULL; ssl->session_out = NULL; - memset( ssl->out_buf, 0, MBEDTLS_SSL_OUT_BUFFER_LEN ); + memset( ssl->out_buf, 0, out_buf_len ); #if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) && defined(MBEDTLS_SSL_SRV_C) if( partial == 0 ) #endif /* MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE && MBEDTLS_SSL_SRV_C */ { ssl->in_left = 0; - memset( ssl->in_buf, 0, MBEDTLS_SSL_IN_BUFFER_LEN ); + memset( ssl->in_buf, 0, in_buf_len ); } #if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) @@ -7054,7 +4124,7 @@ static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) */ int mbedtls_ssl_session_reset( mbedtls_ssl_context *ssl ) { - return( ssl_session_reset_int( ssl, 0 ) ); + return( mbedtls_ssl_session_reset_int( ssl, 0 ) ); } /* @@ -7165,7 +4235,7 @@ void mbedtls_ssl_set_timer_cb( mbedtls_ssl_context *ssl, ssl->f_get_timer = f_get_timer; /* Make sure we start with no timer running */ - ssl_set_timer( ssl, 0 ); + mbedtls_ssl_set_timer( ssl, 0 ); } #if defined(MBEDTLS_SSL_SRV_C) @@ -7183,7 +4253,7 @@ void mbedtls_ssl_conf_session_cache( mbedtls_ssl_config *conf, #if defined(MBEDTLS_SSL_CLI_C) int mbedtls_ssl_set_session( mbedtls_ssl_context *ssl, const mbedtls_ssl_session *session ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ssl == NULL || session == NULL || @@ -7193,7 +4263,8 @@ int mbedtls_ssl_set_session( mbedtls_ssl_context *ssl, const mbedtls_ssl_session return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } - if( ( ret = ssl_session_copy( ssl->session_negotiate, session ) ) != 0 ) + if( ( ret = mbedtls_ssl_session_copy( ssl->session_negotiate, + session ) ) != 0 ) return( ret ); ssl->handshake->resume = 1; @@ -7275,7 +4346,29 @@ void mbedtls_ssl_conf_ca_chain( mbedtls_ssl_config *conf, { conf->ca_chain = ca_chain; conf->ca_crl = ca_crl; + +#if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK) + /* mbedtls_ssl_conf_ca_chain() and mbedtls_ssl_conf_ca_cb() + * cannot be used together. */ + conf->f_ca_cb = NULL; + conf->p_ca_cb = NULL; +#endif /* MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK */ +} + +#if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK) +void mbedtls_ssl_conf_ca_cb( mbedtls_ssl_config *conf, + mbedtls_x509_crt_ca_cb_t f_ca_cb, + void *p_ca_cb ) +{ + conf->f_ca_cb = f_ca_cb; + conf->p_ca_cb = p_ca_cb; + + /* mbedtls_ssl_conf_ca_chain() and mbedtls_ssl_conf_ca_cb() + * cannot be used together. */ + conf->ca_chain = NULL; + conf->ca_crl = NULL; } +#endif /* MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) @@ -7302,6 +4395,16 @@ void mbedtls_ssl_set_hs_authmode( mbedtls_ssl_context *ssl, } #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ +#if defined(MBEDTLS_X509_CRT_PARSE_C) +void mbedtls_ssl_set_verify( mbedtls_ssl_context *ssl, + int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), + void *p_vrfy ) +{ + ssl->f_vrfy = f_vrfy; + ssl->p_vrfy = p_vrfy; +} +#endif + #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) /* * Set EC J-PAKE password for current handshake @@ -7328,24 +4431,24 @@ int mbedtls_ssl_set_hs_ecjpake_password( mbedtls_ssl_context *ssl, } #endif /* MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) -int mbedtls_ssl_conf_psk( mbedtls_ssl_config *conf, - const unsigned char *psk, size_t psk_len, - const unsigned char *psk_identity, size_t psk_identity_len ) -{ - if( psk == NULL || psk_identity == NULL ) - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - - if( psk_len > MBEDTLS_PSK_MAX_LEN ) - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) - /* Identity len will be encoded on two bytes */ - if( ( psk_identity_len >> 16 ) != 0 || - psk_identity_len > MBEDTLS_SSL_OUT_CONTENT_LEN ) +static void ssl_conf_remove_psk( mbedtls_ssl_config *conf ) +{ + /* Remove reference to existing PSK, if any. */ +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ! mbedtls_svc_key_id_is_null( conf->psk_opaque ) ) { - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + /* The maintenance of the PSK key slot is the + * user's responsibility. */ + conf->psk_opaque = MBEDTLS_SVC_KEY_ID_INIT; } - + /* This and the following branch should never + * be taken simultaenously as we maintain the + * invariant that raw and opaque PSKs are never + * configured simultaneously. As a safeguard, + * though, `else` is omitted here. */ +#endif /* MBEDTLS_USE_PSA_CRYPTO */ if( conf->psk != NULL ) { mbedtls_platform_zeroize( conf->psk, conf->psk_len ); @@ -7354,41 +4457,80 @@ int mbedtls_ssl_conf_psk( mbedtls_ssl_config *conf, conf->psk = NULL; conf->psk_len = 0; } + + /* Remove reference to PSK identity, if any. */ if( conf->psk_identity != NULL ) { mbedtls_free( conf->psk_identity ); conf->psk_identity = NULL; conf->psk_identity_len = 0; } +} - if( ( conf->psk = mbedtls_calloc( 1, psk_len ) ) == NULL || - ( conf->psk_identity = mbedtls_calloc( 1, psk_identity_len ) ) == NULL ) +/* This function assumes that PSK identity in the SSL config is unset. + * It checks that the provided identity is well-formed and attempts + * to make a copy of it in the SSL config. + * On failure, the PSK identity in the config remains unset. */ +static int ssl_conf_set_psk_identity( mbedtls_ssl_config *conf, + unsigned char const *psk_identity, + size_t psk_identity_len ) +{ + /* Identity len will be encoded on two bytes */ + if( psk_identity == NULL || + ( psk_identity_len >> 16 ) != 0 || + psk_identity_len > MBEDTLS_SSL_OUT_CONTENT_LEN ) { - mbedtls_free( conf->psk ); - mbedtls_free( conf->psk_identity ); - conf->psk = NULL; - conf->psk_identity = NULL; - return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } - conf->psk_len = psk_len; - conf->psk_identity_len = psk_identity_len; + conf->psk_identity = mbedtls_calloc( 1, psk_identity_len ); + if( conf->psk_identity == NULL ) + return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); - memcpy( conf->psk, psk, conf->psk_len ); + conf->psk_identity_len = psk_identity_len; memcpy( conf->psk_identity, psk_identity, conf->psk_identity_len ); return( 0 ); } -int mbedtls_ssl_set_hs_psk( mbedtls_ssl_context *ssl, - const unsigned char *psk, size_t psk_len ) +int mbedtls_ssl_conf_psk( mbedtls_ssl_config *conf, + const unsigned char *psk, size_t psk_len, + const unsigned char *psk_identity, size_t psk_identity_len ) { - if( psk == NULL || ssl->handshake == NULL ) - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + /* Remove opaque/raw PSK + PSK Identity */ + ssl_conf_remove_psk( conf ); + /* Check and set raw PSK */ + if( psk == NULL ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + if( psk_len == 0 ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); if( psk_len > MBEDTLS_PSK_MAX_LEN ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + if( ( conf->psk = mbedtls_calloc( 1, psk_len ) ) == NULL ) + return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); + conf->psk_len = psk_len; + memcpy( conf->psk, psk, conf->psk_len ); + + /* Check and set PSK Identity */ + ret = ssl_conf_set_psk_identity( conf, psk_identity, psk_identity_len ); + if( ret != 0 ) + ssl_conf_remove_psk( conf ); + + return( ret ); +} + +static void ssl_remove_psk( mbedtls_ssl_context *ssl ) +{ +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( ! mbedtls_svc_key_id_is_null( ssl->handshake->psk_opaque ) ) + { + ssl->handshake->psk_opaque = MBEDTLS_SVC_KEY_ID_INIT; + } + else +#endif /* MBEDTLS_USE_PSA_CRYPTO */ if( ssl->handshake->psk != NULL ) { mbedtls_platform_zeroize( ssl->handshake->psk, @@ -7396,6 +4538,18 @@ int mbedtls_ssl_set_hs_psk( mbedtls_ssl_context *ssl, mbedtls_free( ssl->handshake->psk ); ssl->handshake->psk_len = 0; } +} + +int mbedtls_ssl_set_hs_psk( mbedtls_ssl_context *ssl, + const unsigned char *psk, size_t psk_len ) +{ + if( psk == NULL || ssl->handshake == NULL ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + + if( psk_len > MBEDTLS_PSK_MAX_LEN ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + + ssl_remove_psk( ssl ); if( ( ssl->handshake->psk = mbedtls_calloc( 1, psk_len ) ) == NULL ) return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); @@ -7406,6 +4560,43 @@ int mbedtls_ssl_set_hs_psk( mbedtls_ssl_context *ssl, return( 0 ); } +#if defined(MBEDTLS_USE_PSA_CRYPTO) +int mbedtls_ssl_conf_psk_opaque( mbedtls_ssl_config *conf, + psa_key_id_t psk, + const unsigned char *psk_identity, + size_t psk_identity_len ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + /* Clear opaque/raw PSK + PSK Identity, if present. */ + ssl_conf_remove_psk( conf ); + + /* Check and set opaque PSK */ + if( mbedtls_svc_key_id_is_null( psk ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + conf->psk_opaque = psk; + + /* Check and set PSK Identity */ + ret = ssl_conf_set_psk_identity( conf, psk_identity, + psk_identity_len ); + if( ret != 0 ) + ssl_conf_remove_psk( conf ); + + return( ret ); +} + +int mbedtls_ssl_set_hs_psk_opaque( mbedtls_ssl_context *ssl, + psa_key_id_t psk ) +{ + if( ( mbedtls_svc_key_id_is_null( psk ) ) || + ( ssl->handshake == NULL ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + + ssl_remove_psk( ssl ); + ssl->handshake->psk_opaque = psk; + return( 0 ); +} +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + void mbedtls_ssl_conf_psk_cb( mbedtls_ssl_config *conf, int (*f_psk)(void *, mbedtls_ssl_context *, const unsigned char *, size_t), @@ -7414,14 +4605,14 @@ void mbedtls_ssl_conf_psk_cb( mbedtls_ssl_config *conf, conf->f_psk = f_psk; conf->p_psk = p_psk; } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_SRV_C) #if !defined(MBEDTLS_DEPRECATED_REMOVED) int mbedtls_ssl_conf_dh_param( mbedtls_ssl_config *conf, const char *dhm_P, const char *dhm_G ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ( ret = mbedtls_mpi_read_string( &conf->dhm_P, 16, dhm_P ) ) != 0 || ( ret = mbedtls_mpi_read_string( &conf->dhm_G, 16, dhm_G ) ) != 0 ) @@ -7439,7 +4630,7 @@ int mbedtls_ssl_conf_dh_param_bin( mbedtls_ssl_config *conf, const unsigned char *dhm_P, size_t P_len, const unsigned char *dhm_G, size_t G_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ( ret = mbedtls_mpi_read_binary( &conf->dhm_P, dhm_P, P_len ) ) != 0 || ( ret = mbedtls_mpi_read_binary( &conf->dhm_G, dhm_G, G_len ) ) != 0 ) @@ -7454,7 +4645,7 @@ int mbedtls_ssl_conf_dh_param_bin( mbedtls_ssl_config *conf, int mbedtls_ssl_conf_dh_param_ctx( mbedtls_ssl_config *conf, mbedtls_dhm_context *dhm_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ( ret = mbedtls_mpi_copy( &conf->dhm_P, &dhm_ctx->P ) ) != 0 || ( ret = mbedtls_mpi_copy( &conf->dhm_G, &dhm_ctx->G ) ) != 0 ) @@ -7479,7 +4670,7 @@ void mbedtls_ssl_conf_dhm_min_bitlen( mbedtls_ssl_config *conf, } #endif /* MBEDTLS_DHM_C && MBEDTLS_SSL_CLI_C */ -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) /* * Set allowed/preferred hashes for handshake signatures */ @@ -7488,7 +4679,7 @@ void mbedtls_ssl_conf_sig_hashes( mbedtls_ssl_config *conf, { conf->sig_hashes = hashes; } -#endif /* MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ #if defined(MBEDTLS_ECP_C) /* @@ -7556,39 +4747,121 @@ void mbedtls_ssl_conf_sni( mbedtls_ssl_config *conf, conf->f_sni = f_sni; conf->p_sni = p_sni; } -#endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ +#endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ + +#if defined(MBEDTLS_SSL_ALPN) +int mbedtls_ssl_conf_alpn_protocols( mbedtls_ssl_config *conf, const char **protos ) +{ + size_t cur_len, tot_len; + const char **p; + + /* + * RFC 7301 3.1: "Empty strings MUST NOT be included and byte strings + * MUST NOT be truncated." + * We check lengths now rather than later. + */ + tot_len = 0; + for( p = protos; *p != NULL; p++ ) + { + cur_len = strlen( *p ); + tot_len += cur_len; + + if( ( cur_len == 0 ) || + ( cur_len > MBEDTLS_SSL_MAX_ALPN_NAME_LEN ) || + ( tot_len > MBEDTLS_SSL_MAX_ALPN_LIST_LEN ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + + conf->alpn_list = protos; + + return( 0 ); +} + +const char *mbedtls_ssl_get_alpn_protocol( const mbedtls_ssl_context *ssl ) +{ + return( ssl->alpn_chosen ); +} +#endif /* MBEDTLS_SSL_ALPN */ + +#if defined(MBEDTLS_SSL_DTLS_SRTP) +void mbedtls_ssl_conf_srtp_mki_value_supported( mbedtls_ssl_config *conf, + int support_mki_value ) +{ + conf->dtls_srtp_mki_support = support_mki_value; +} + +int mbedtls_ssl_dtls_srtp_set_mki_value( mbedtls_ssl_context *ssl, + unsigned char *mki_value, + uint16_t mki_len ) +{ + if( mki_len > MBEDTLS_TLS_SRTP_MAX_MKI_LENGTH ) + { + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + + if( ssl->conf->dtls_srtp_mki_support == MBEDTLS_SSL_DTLS_SRTP_MKI_UNSUPPORTED ) + { + return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); + } + + memcpy( ssl->dtls_srtp_info.mki_value, mki_value, mki_len ); + ssl->dtls_srtp_info.mki_len = mki_len; + return( 0 ); +} -#if defined(MBEDTLS_SSL_ALPN) -int mbedtls_ssl_conf_alpn_protocols( mbedtls_ssl_config *conf, const char **protos ) +int mbedtls_ssl_conf_dtls_srtp_protection_profiles( mbedtls_ssl_config *conf, + const mbedtls_ssl_srtp_profile *profiles ) { - size_t cur_len, tot_len; - const char **p; + const mbedtls_ssl_srtp_profile *p; + size_t list_size = 0; - /* - * RFC 7301 3.1: "Empty strings MUST NOT be included and byte strings - * MUST NOT be truncated." - * We check lengths now rather than later. - */ - tot_len = 0; - for( p = protos; *p != NULL; p++ ) + /* check the profiles list: all entry must be valid, + * its size cannot be more than the total number of supported profiles, currently 4 */ + for( p = profiles; *p != MBEDTLS_TLS_SRTP_UNSET && + list_size <= MBEDTLS_TLS_SRTP_MAX_PROFILE_LIST_LENGTH; + p++ ) { - cur_len = strlen( *p ); - tot_len += cur_len; + if( mbedtls_ssl_check_srtp_profile_value( *p ) != MBEDTLS_TLS_SRTP_UNSET ) + { + list_size++; + } + else + { + /* unsupported value, stop parsing and set the size to an error value */ + list_size = MBEDTLS_TLS_SRTP_MAX_PROFILE_LIST_LENGTH + 1; + } + } - if( cur_len == 0 || cur_len > 255 || tot_len > 65535 ) - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + if( list_size > MBEDTLS_TLS_SRTP_MAX_PROFILE_LIST_LENGTH ) + { + conf->dtls_srtp_profile_list = NULL; + conf->dtls_srtp_profile_list_len = 0; + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } - conf->alpn_list = protos; + conf->dtls_srtp_profile_list = profiles; + conf->dtls_srtp_profile_list_len = list_size; return( 0 ); } -const char *mbedtls_ssl_get_alpn_protocol( const mbedtls_ssl_context *ssl ) +void mbedtls_ssl_get_dtls_srtp_negotiation_result( const mbedtls_ssl_context *ssl, + mbedtls_dtls_srtp_info *dtls_srtp_info ) { - return( ssl->alpn_chosen ); + dtls_srtp_info->chosen_dtls_srtp_profile = ssl->dtls_srtp_info.chosen_dtls_srtp_profile; + /* do not copy the mki value if there is no chosen profile */ + if( dtls_srtp_info->chosen_dtls_srtp_profile == MBEDTLS_TLS_SRTP_UNSET ) + { + dtls_srtp_info->mki_len = 0; + } + else + { + dtls_srtp_info->mki_len = ssl->dtls_srtp_info.mki_len; + memcpy( dtls_srtp_info->mki_value, ssl->dtls_srtp_info.mki_value, + ssl->dtls_srtp_info.mki_len ); + } } -#endif /* MBEDTLS_SSL_ALPN */ +#endif /* MBEDTLS_SSL_DTLS_SRTP */ void mbedtls_ssl_conf_max_version( mbedtls_ssl_config *conf, int major, int minor ) { @@ -7719,6 +4992,14 @@ void mbedtls_ssl_conf_export_keys_cb( mbedtls_ssl_config *conf, conf->f_export_keys = f_export_keys; conf->p_export_keys = p_export_keys; } + +void mbedtls_ssl_conf_export_keys_ext_cb( mbedtls_ssl_config *conf, + mbedtls_ssl_export_keys_ext_t *f_export_keys_ext, + void *p_export_keys ) +{ + conf->f_export_keys_ext = f_export_keys_ext; + conf->p_export_keys = p_export_keys; +} #endif #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) @@ -7737,317 +5018,808 @@ void mbedtls_ssl_conf_async_private_cb( conf->p_async_config_data = async_config_data; } -void *mbedtls_ssl_conf_get_async_config_data( const mbedtls_ssl_config *conf ) -{ - return( conf->p_async_config_data ); +void *mbedtls_ssl_conf_get_async_config_data( const mbedtls_ssl_config *conf ) +{ + return( conf->p_async_config_data ); +} + +void *mbedtls_ssl_get_async_operation_data( const mbedtls_ssl_context *ssl ) +{ + if( ssl->handshake == NULL ) + return( NULL ); + else + return( ssl->handshake->user_async_ctx ); +} + +void mbedtls_ssl_set_async_operation_data( mbedtls_ssl_context *ssl, + void *ctx ) +{ + if( ssl->handshake != NULL ) + ssl->handshake->user_async_ctx = ctx; +} +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ + +/* + * SSL get accessors + */ +uint32_t mbedtls_ssl_get_verify_result( const mbedtls_ssl_context *ssl ) +{ + if( ssl->session != NULL ) + return( ssl->session->verify_result ); + + if( ssl->session_negotiate != NULL ) + return( ssl->session_negotiate->verify_result ); + + return( 0xFFFFFFFF ); +} + +const char *mbedtls_ssl_get_ciphersuite( const mbedtls_ssl_context *ssl ) +{ + if( ssl == NULL || ssl->session == NULL ) + return( NULL ); + + return mbedtls_ssl_get_ciphersuite_name( ssl->session->ciphersuite ); +} + +const char *mbedtls_ssl_get_version( const mbedtls_ssl_context *ssl ) +{ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + switch( ssl->minor_ver ) + { + case MBEDTLS_SSL_MINOR_VERSION_2: + return( "DTLSv1.0" ); + + case MBEDTLS_SSL_MINOR_VERSION_3: + return( "DTLSv1.2" ); + + default: + return( "unknown (DTLS)" ); + } + } +#endif + + switch( ssl->minor_ver ) + { + case MBEDTLS_SSL_MINOR_VERSION_0: + return( "SSLv3.0" ); + + case MBEDTLS_SSL_MINOR_VERSION_1: + return( "TLSv1.0" ); + + case MBEDTLS_SSL_MINOR_VERSION_2: + return( "TLSv1.1" ); + + case MBEDTLS_SSL_MINOR_VERSION_3: + return( "TLSv1.2" ); + + default: + return( "unknown" ); + } +} + +#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) +size_t mbedtls_ssl_get_input_max_frag_len( const mbedtls_ssl_context *ssl ) +{ + size_t max_len = MBEDTLS_SSL_MAX_CONTENT_LEN; + size_t read_mfl; + + /* Use the configured MFL for the client if we're past SERVER_HELLO_DONE */ + if( ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT && + ssl->state >= MBEDTLS_SSL_SERVER_HELLO_DONE ) + { + return ssl_mfl_code_to_length( ssl->conf->mfl_code ); + } + + /* Check if a smaller max length was negotiated */ + if( ssl->session_out != NULL ) + { + read_mfl = ssl_mfl_code_to_length( ssl->session_out->mfl_code ); + if( read_mfl < max_len ) + { + max_len = read_mfl; + } + } + + // During a handshake, use the value being negotiated + if( ssl->session_negotiate != NULL ) + { + read_mfl = ssl_mfl_code_to_length( ssl->session_negotiate->mfl_code ); + if( read_mfl < max_len ) + { + max_len = read_mfl; + } + } + + return( max_len ); +} + +size_t mbedtls_ssl_get_output_max_frag_len( const mbedtls_ssl_context *ssl ) +{ + size_t max_len; + + /* + * Assume mfl_code is correct since it was checked when set + */ + max_len = ssl_mfl_code_to_length( ssl->conf->mfl_code ); + + /* Check if a smaller max length was negotiated */ + if( ssl->session_out != NULL && + ssl_mfl_code_to_length( ssl->session_out->mfl_code ) < max_len ) + { + max_len = ssl_mfl_code_to_length( ssl->session_out->mfl_code ); + } + + /* During a handshake, use the value being negotiated */ + if( ssl->session_negotiate != NULL && + ssl_mfl_code_to_length( ssl->session_negotiate->mfl_code ) < max_len ) + { + max_len = ssl_mfl_code_to_length( ssl->session_negotiate->mfl_code ); + } + + return( max_len ); +} + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +size_t mbedtls_ssl_get_max_frag_len( const mbedtls_ssl_context *ssl ) +{ + return mbedtls_ssl_get_output_max_frag_len( ssl ); +} +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ +#endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ + +#if defined(MBEDTLS_SSL_PROTO_DTLS) +size_t mbedtls_ssl_get_current_mtu( const mbedtls_ssl_context *ssl ) +{ + /* Return unlimited mtu for client hello messages to avoid fragmentation. */ + if( ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT && + ( ssl->state == MBEDTLS_SSL_CLIENT_HELLO || + ssl->state == MBEDTLS_SSL_SERVER_HELLO ) ) + return ( 0 ); + + if( ssl->handshake == NULL || ssl->handshake->mtu == 0 ) + return( ssl->mtu ); + + if( ssl->mtu == 0 ) + return( ssl->handshake->mtu ); + + return( ssl->mtu < ssl->handshake->mtu ? + ssl->mtu : ssl->handshake->mtu ); +} +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + +int mbedtls_ssl_get_max_out_record_payload( const mbedtls_ssl_context *ssl ) +{ + size_t max_len = MBEDTLS_SSL_OUT_CONTENT_LEN; + +#if !defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) && \ + !defined(MBEDTLS_SSL_PROTO_DTLS) + (void) ssl; +#endif + +#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) + const size_t mfl = mbedtls_ssl_get_output_max_frag_len( ssl ); + + if( max_len > mfl ) + max_len = mfl; +#endif + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( mbedtls_ssl_get_current_mtu( ssl ) != 0 ) + { + const size_t mtu = mbedtls_ssl_get_current_mtu( ssl ); + const int ret = mbedtls_ssl_get_record_expansion( ssl ); + const size_t overhead = (size_t) ret; + + if( ret < 0 ) + return( ret ); + + if( mtu <= overhead ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "MTU too low for record expansion" ) ); + return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); + } + + if( max_len > mtu - overhead ) + max_len = mtu - overhead; + } +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + +#if !defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) && \ + !defined(MBEDTLS_SSL_PROTO_DTLS) + ((void) ssl); +#endif + + return( (int) max_len ); +} + +#if defined(MBEDTLS_X509_CRT_PARSE_C) +const mbedtls_x509_crt *mbedtls_ssl_get_peer_cert( const mbedtls_ssl_context *ssl ) +{ + if( ssl == NULL || ssl->session == NULL ) + return( NULL ); + +#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + return( ssl->session->peer_cert ); +#else + return( NULL ); +#endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ +} +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + +#if defined(MBEDTLS_SSL_CLI_C) +int mbedtls_ssl_get_session( const mbedtls_ssl_context *ssl, + mbedtls_ssl_session *dst ) +{ + if( ssl == NULL || + dst == NULL || + ssl->session == NULL || + ssl->conf->endpoint != MBEDTLS_SSL_IS_CLIENT ) + { + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + + return( mbedtls_ssl_session_copy( dst, ssl->session ) ); } +#endif /* MBEDTLS_SSL_CLI_C */ -void *mbedtls_ssl_get_async_operation_data( const mbedtls_ssl_context *ssl ) +const mbedtls_ssl_session *mbedtls_ssl_get_session_pointer( const mbedtls_ssl_context *ssl ) { - if( ssl->handshake == NULL ) + if( ssl == NULL ) return( NULL ); - else - return( ssl->handshake->user_async_ctx ); -} -void mbedtls_ssl_set_async_operation_data( mbedtls_ssl_context *ssl, - void *ctx ) -{ - if( ssl->handshake != NULL ) - ssl->handshake->user_async_ctx = ctx; + return( ssl->session ); } -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ /* - * SSL get accessors + * Define ticket header determining Mbed TLS version + * and structure of the ticket. */ -size_t mbedtls_ssl_get_bytes_avail( const mbedtls_ssl_context *ssl ) -{ - return( ssl->in_offt == NULL ? 0 : ssl->in_msglen ); -} -int mbedtls_ssl_check_pending( const mbedtls_ssl_context *ssl ) +/* + * Define bitflag determining compile-time settings influencing + * structure of serialized SSL sessions. + */ + +#if defined(MBEDTLS_HAVE_TIME) +#define SSL_SERIALIZED_SESSION_CONFIG_TIME 1 +#else +#define SSL_SERIALIZED_SESSION_CONFIG_TIME 0 +#endif /* MBEDTLS_HAVE_TIME */ + +#if defined(MBEDTLS_X509_CRT_PARSE_C) +#define SSL_SERIALIZED_SESSION_CONFIG_CRT 1 +#else +#define SSL_SERIALIZED_SESSION_CONFIG_CRT 0 +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + +#if defined(MBEDTLS_SSL_CLI_C) && defined(MBEDTLS_SSL_SESSION_TICKETS) +#define SSL_SERIALIZED_SESSION_CONFIG_CLIENT_TICKET 1 +#else +#define SSL_SERIALIZED_SESSION_CONFIG_CLIENT_TICKET 0 +#endif /* MBEDTLS_SSL_CLI_C && MBEDTLS_SSL_SESSION_TICKETS */ + +#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) +#define SSL_SERIALIZED_SESSION_CONFIG_MFL 1 +#else +#define SSL_SERIALIZED_SESSION_CONFIG_MFL 0 +#endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ + +#if defined(MBEDTLS_SSL_TRUNCATED_HMAC) +#define SSL_SERIALIZED_SESSION_CONFIG_TRUNC_HMAC 1 +#else +#define SSL_SERIALIZED_SESSION_CONFIG_TRUNC_HMAC 0 +#endif /* MBEDTLS_SSL_TRUNCATED_HMAC */ + +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) +#define SSL_SERIALIZED_SESSION_CONFIG_ETM 1 +#else +#define SSL_SERIALIZED_SESSION_CONFIG_ETM 0 +#endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */ + +#if defined(MBEDTLS_SSL_SESSION_TICKETS) +#define SSL_SERIALIZED_SESSION_CONFIG_TICKET 1 +#else +#define SSL_SERIALIZED_SESSION_CONFIG_TICKET 0 +#endif /* MBEDTLS_SSL_SESSION_TICKETS */ + +#define SSL_SERIALIZED_SESSION_CONFIG_TIME_BIT 0 +#define SSL_SERIALIZED_SESSION_CONFIG_CRT_BIT 1 +#define SSL_SERIALIZED_SESSION_CONFIG_CLIENT_TICKET_BIT 2 +#define SSL_SERIALIZED_SESSION_CONFIG_MFL_BIT 3 +#define SSL_SERIALIZED_SESSION_CONFIG_TRUNC_HMAC_BIT 4 +#define SSL_SERIALIZED_SESSION_CONFIG_ETM_BIT 5 +#define SSL_SERIALIZED_SESSION_CONFIG_TICKET_BIT 6 + +#define SSL_SERIALIZED_SESSION_CONFIG_BITFLAG \ + ( (uint16_t) ( \ + ( SSL_SERIALIZED_SESSION_CONFIG_TIME << SSL_SERIALIZED_SESSION_CONFIG_TIME_BIT ) | \ + ( SSL_SERIALIZED_SESSION_CONFIG_CRT << SSL_SERIALIZED_SESSION_CONFIG_CRT_BIT ) | \ + ( SSL_SERIALIZED_SESSION_CONFIG_CLIENT_TICKET << SSL_SERIALIZED_SESSION_CONFIG_CLIENT_TICKET_BIT ) | \ + ( SSL_SERIALIZED_SESSION_CONFIG_MFL << SSL_SERIALIZED_SESSION_CONFIG_MFL_BIT ) | \ + ( SSL_SERIALIZED_SESSION_CONFIG_TRUNC_HMAC << SSL_SERIALIZED_SESSION_CONFIG_TRUNC_HMAC_BIT ) | \ + ( SSL_SERIALIZED_SESSION_CONFIG_ETM << SSL_SERIALIZED_SESSION_CONFIG_ETM_BIT ) | \ + ( SSL_SERIALIZED_SESSION_CONFIG_TICKET << SSL_SERIALIZED_SESSION_CONFIG_TICKET_BIT ) ) ) + +static unsigned char ssl_serialized_session_header[] = { + MBEDTLS_VERSION_MAJOR, + MBEDTLS_VERSION_MINOR, + MBEDTLS_VERSION_PATCH, + MBEDTLS_BYTE_1( SSL_SERIALIZED_SESSION_CONFIG_BITFLAG ), + MBEDTLS_BYTE_0( SSL_SERIALIZED_SESSION_CONFIG_BITFLAG ), +}; + +/* + * Serialize a session in the following format: + * (in the presentation language of TLS, RFC 8446 section 3) + * + * opaque mbedtls_version[3]; // major, minor, patch + * opaque session_format[2]; // version-specific 16-bit field determining + * // the format of the remaining + * // serialized data. + * + * Note: When updating the format, remember to keep + * these version+format bytes. + * + * // In this version, `session_format` determines + * // the setting of those compile-time + * // configuration options which influence + * // the structure of mbedtls_ssl_session. + * uint64 start_time; + * uint8 ciphersuite[2]; // defined by the standard + * uint8 compression; // 0 or 1 + * uint8 session_id_len; // at most 32 + * opaque session_id[32]; + * opaque master[48]; // fixed length in the standard + * uint32 verify_result; + * opaque peer_cert<0..2^24-1>; // length 0 means no peer cert + * opaque ticket<0..2^24-1>; // length 0 means no ticket + * uint32 ticket_lifetime; + * uint8 mfl_code; // up to 255 according to standard + * uint8 trunc_hmac; // 0 or 1 + * uint8 encrypt_then_mac; // 0 or 1 + * + * The order is the same as in the definition of the structure, except + * verify_result is put before peer_cert so that all mandatory fields come + * together in one block. + */ +static int ssl_session_save( const mbedtls_ssl_session *session, + unsigned char omit_header, + unsigned char *buf, + size_t buf_len, + size_t *olen ) { + unsigned char *p = buf; + size_t used = 0; +#if defined(MBEDTLS_HAVE_TIME) + uint64_t start; +#endif +#if defined(MBEDTLS_X509_CRT_PARSE_C) +#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + size_t cert_len; +#endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + + + if( !omit_header ) + { + /* + * Add version identifier + */ + + used += sizeof( ssl_serialized_session_header ); + + if( used <= buf_len ) + { + memcpy( p, ssl_serialized_session_header, + sizeof( ssl_serialized_session_header ) ); + p += sizeof( ssl_serialized_session_header ); + } + } + /* - * Case A: We're currently holding back - * a message for further processing. + * Time */ +#if defined(MBEDTLS_HAVE_TIME) + used += 8; - if( ssl->keep_current_message == 1 ) + if( used <= buf_len ) { - MBEDTLS_SSL_DEBUG_MSG( 3, ( "ssl_check_pending: record held back for processing" ) ); - return( 1 ); + start = (uint64_t) session->start; + + MBEDTLS_PUT_UINT64_BE( start, p, 0 ); + p += 8; } +#endif /* MBEDTLS_HAVE_TIME */ /* - * Case B: Further records are pending in the current datagram. + * Basic mandatory fields */ + used += 2 /* ciphersuite */ + + 1 /* compression */ + + 1 /* id_len */ + + sizeof( session->id ) + + sizeof( session->master ) + + 4; /* verify_result */ -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && - ssl->in_left > ssl->next_record_offset ) + if( used <= buf_len ) { - MBEDTLS_SSL_DEBUG_MSG( 3, ( "ssl_check_pending: more records within current datagram" ) ); - return( 1 ); + MBEDTLS_PUT_UINT16_BE( session->ciphersuite, p, 0 ); + p += 2; + + *p++ = MBEDTLS_BYTE_0( session->compression ); + + *p++ = MBEDTLS_BYTE_0( session->id_len ); + memcpy( p, session->id, 32 ); + p += 32; + + memcpy( p, session->master, 48 ); + p += 48; + + MBEDTLS_PUT_UINT32_BE( session->verify_result, p, 0 ); + p += 4; } -#endif /* MBEDTLS_SSL_PROTO_DTLS */ /* - * Case C: A handshake message is being processed. + * Peer's end-entity certificate */ +#if defined(MBEDTLS_X509_CRT_PARSE_C) +#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + if( session->peer_cert == NULL ) + cert_len = 0; + else + cert_len = session->peer_cert->raw.len; - if( ssl->in_hslen > 0 && ssl->in_hslen < ssl->in_msglen ) + used += 3 + cert_len; + + if( used <= buf_len ) { - MBEDTLS_SSL_DEBUG_MSG( 3, ( "ssl_check_pending: more handshake messages within current record" ) ); - return( 1 ); + *p++ = MBEDTLS_BYTE_2( cert_len ); + *p++ = MBEDTLS_BYTE_1( cert_len ); + *p++ = MBEDTLS_BYTE_0( cert_len ); + + if( session->peer_cert != NULL ) + { + memcpy( p, session->peer_cert->raw.p, cert_len ); + p += cert_len; + } + } +#else /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + if( session->peer_cert_digest != NULL ) + { + used += 1 /* type */ + 1 /* length */ + session->peer_cert_digest_len; + if( used <= buf_len ) + { + *p++ = (unsigned char) session->peer_cert_digest_type; + *p++ = (unsigned char) session->peer_cert_digest_len; + memcpy( p, session->peer_cert_digest, + session->peer_cert_digest_len ); + p += session->peer_cert_digest_len; + } + } + else + { + used += 2; + if( used <= buf_len ) + { + *p++ = (unsigned char) MBEDTLS_MD_NONE; + *p++ = 0; + } } +#endif /* !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ +#endif /* MBEDTLS_X509_CRT_PARSE_C */ /* - * Case D: An application data message is being processed + * Session ticket if any, plus associated data */ - if( ssl->in_offt != NULL ) +#if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C) + used += 3 + session->ticket_len + 4; /* len + ticket + lifetime */ + + if( used <= buf_len ) { - MBEDTLS_SSL_DEBUG_MSG( 3, ( "ssl_check_pending: application data record is being processed" ) ); - return( 1 ); + *p++ = MBEDTLS_BYTE_2( session->ticket_len ); + *p++ = MBEDTLS_BYTE_1( session->ticket_len ); + *p++ = MBEDTLS_BYTE_0( session->ticket_len ); + + if( session->ticket != NULL ) + { + memcpy( p, session->ticket, session->ticket_len ); + p += session->ticket_len; + } + + MBEDTLS_PUT_UINT32_BE( session->ticket_lifetime, p, 0 ); + p += 4; } +#endif /* MBEDTLS_SSL_SESSION_TICKETS && MBEDTLS_SSL_CLI_C */ /* - * In all other cases, the rest of the message can be dropped. - * As in ssl_get_next_record, this needs to be adapted if - * we implement support for multiple alerts in single records. + * Misc extension-related info */ +#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) + used += 1; - MBEDTLS_SSL_DEBUG_MSG( 3, ( "ssl_check_pending: nothing pending" ) ); - return( 0 ); -} + if( used <= buf_len ) + *p++ = session->mfl_code; +#endif -uint32_t mbedtls_ssl_get_verify_result( const mbedtls_ssl_context *ssl ) -{ - if( ssl->session != NULL ) - return( ssl->session->verify_result ); +#if defined(MBEDTLS_SSL_TRUNCATED_HMAC) + used += 1; - if( ssl->session_negotiate != NULL ) - return( ssl->session_negotiate->verify_result ); + if( used <= buf_len ) + *p++ = (unsigned char)( ( session->trunc_hmac ) & 0xFF ); +#endif - return( 0xFFFFFFFF ); +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) + used += 1; + + if( used <= buf_len ) + *p++ = MBEDTLS_BYTE_0( session->encrypt_then_mac ); +#endif + + /* Done */ + *olen = used; + + if( used > buf_len ) + return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); + + return( 0 ); } -const char *mbedtls_ssl_get_ciphersuite( const mbedtls_ssl_context *ssl ) +/* + * Public wrapper for ssl_session_save() + */ +int mbedtls_ssl_session_save( const mbedtls_ssl_session *session, + unsigned char *buf, + size_t buf_len, + size_t *olen ) { - if( ssl == NULL || ssl->session == NULL ) - return( NULL ); - - return mbedtls_ssl_get_ciphersuite_name( ssl->session->ciphersuite ); + return( ssl_session_save( session, 0, buf, buf_len, olen ) ); } -const char *mbedtls_ssl_get_version( const mbedtls_ssl_context *ssl ) +/* + * Deserialize session, see mbedtls_ssl_session_save() for format. + * + * This internal version is wrapped by a public function that cleans up in + * case of error, and has an extra option omit_header. + */ +static int ssl_session_load( mbedtls_ssl_session *session, + unsigned char omit_header, + const unsigned char *buf, + size_t len ) { -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + const unsigned char *p = buf; + const unsigned char * const end = buf + len; +#if defined(MBEDTLS_HAVE_TIME) + uint64_t start; +#endif +#if defined(MBEDTLS_X509_CRT_PARSE_C) +#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + size_t cert_len; +#endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + + if( !omit_header ) { - switch( ssl->minor_ver ) - { - case MBEDTLS_SSL_MINOR_VERSION_2: - return( "DTLSv1.0" ); + /* + * Check version identifier + */ - case MBEDTLS_SSL_MINOR_VERSION_3: - return( "DTLSv1.2" ); + if( (size_t)( end - p ) < sizeof( ssl_serialized_session_header ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - default: - return( "unknown (DTLS)" ); + if( memcmp( p, ssl_serialized_session_header, + sizeof( ssl_serialized_session_header ) ) != 0 ) + { + return( MBEDTLS_ERR_SSL_VERSION_MISMATCH ); } + p += sizeof( ssl_serialized_session_header ); } -#endif - - switch( ssl->minor_ver ) - { - case MBEDTLS_SSL_MINOR_VERSION_0: - return( "SSLv3.0" ); - case MBEDTLS_SSL_MINOR_VERSION_1: - return( "TLSv1.0" ); + /* + * Time + */ +#if defined(MBEDTLS_HAVE_TIME) + if( 8 > (size_t)( end - p ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - case MBEDTLS_SSL_MINOR_VERSION_2: - return( "TLSv1.1" ); + start = ( (uint64_t) p[0] << 56 ) | + ( (uint64_t) p[1] << 48 ) | + ( (uint64_t) p[2] << 40 ) | + ( (uint64_t) p[3] << 32 ) | + ( (uint64_t) p[4] << 24 ) | + ( (uint64_t) p[5] << 16 ) | + ( (uint64_t) p[6] << 8 ) | + ( (uint64_t) p[7] ); + p += 8; - case MBEDTLS_SSL_MINOR_VERSION_3: - return( "TLSv1.2" ); + session->start = (time_t) start; +#endif /* MBEDTLS_HAVE_TIME */ - default: - return( "unknown" ); - } -} + /* + * Basic mandatory fields + */ + if( 2 + 1 + 1 + 32 + 48 + 4 > (size_t)( end - p ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); -int mbedtls_ssl_get_record_expansion( const mbedtls_ssl_context *ssl ) -{ - size_t transform_expansion = 0; - const mbedtls_ssl_transform *transform = ssl->transform_out; - unsigned block_size; + session->ciphersuite = ( p[0] << 8 ) | p[1]; + p += 2; - if( transform == NULL ) - return( (int) mbedtls_ssl_hdr_len( ssl ) ); + session->compression = *p++; -#if defined(MBEDTLS_ZLIB_SUPPORT) - if( ssl->session_out->compression != MBEDTLS_SSL_COMPRESS_NULL ) - return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); -#endif + session->id_len = *p++; + memcpy( session->id, p, 32 ); + p += 32; - switch( mbedtls_cipher_get_cipher_mode( &transform->cipher_ctx_enc ) ) - { - case MBEDTLS_MODE_GCM: - case MBEDTLS_MODE_CCM: - case MBEDTLS_MODE_CHACHAPOLY: - case MBEDTLS_MODE_STREAM: - transform_expansion = transform->minlen; - break; + memcpy( session->master, p, 48 ); + p += 48; - case MBEDTLS_MODE_CBC: + session->verify_result = ( (uint32_t) p[0] << 24 ) | + ( (uint32_t) p[1] << 16 ) | + ( (uint32_t) p[2] << 8 ) | + ( (uint32_t) p[3] ); + p += 4; - block_size = mbedtls_cipher_get_block_size( - &transform->cipher_ctx_enc ); + /* Immediately clear invalid pointer values that have been read, in case + * we exit early before we replaced them with valid ones. */ +#if defined(MBEDTLS_X509_CRT_PARSE_C) +#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + session->peer_cert = NULL; +#else + session->peer_cert_digest = NULL; +#endif /* !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ +#endif /* MBEDTLS_X509_CRT_PARSE_C */ +#if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C) + session->ticket = NULL; +#endif /* MBEDTLS_SSL_SESSION_TICKETS && MBEDTLS_SSL_CLI_C */ - /* Expansion due to the addition of the MAC. */ - transform_expansion += transform->maclen; + /* + * Peer certificate + */ +#if defined(MBEDTLS_X509_CRT_PARSE_C) +#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + /* Deserialize CRT from the end of the ticket. */ + if( 3 > (size_t)( end - p ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - /* Expansion due to the addition of CBC padding; - * Theoretically up to 256 bytes, but we never use - * more than the block size of the underlying cipher. */ - transform_expansion += block_size; + cert_len = ( p[0] << 16 ) | ( p[1] << 8 ) | p[2]; + p += 3; - /* For TLS 1.1 or higher, an explicit IV is added - * after the record header. */ -#if defined(MBEDTLS_SSL_PROTO_TLS1_1) || defined(MBEDTLS_SSL_PROTO_TLS1_2) - if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) - transform_expansion += block_size; -#endif /* MBEDTLS_SSL_PROTO_TLS1_1 || MBEDTLS_SSL_PROTO_TLS1_2 */ + if( cert_len != 0 ) + { + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; - break; + if( cert_len > (size_t)( end - p ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - default: - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } + session->peer_cert = mbedtls_calloc( 1, sizeof( mbedtls_x509_crt ) ); - return( (int)( mbedtls_ssl_hdr_len( ssl ) + transform_expansion ) ); -} + if( session->peer_cert == NULL ) + return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); -#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) -size_t mbedtls_ssl_get_max_frag_len( const mbedtls_ssl_context *ssl ) -{ - size_t max_len; + mbedtls_x509_crt_init( session->peer_cert ); - /* - * Assume mfl_code is correct since it was checked when set - */ - max_len = ssl_mfl_code_to_length( ssl->conf->mfl_code ); + if( ( ret = mbedtls_x509_crt_parse_der( session->peer_cert, + p, cert_len ) ) != 0 ) + { + mbedtls_x509_crt_free( session->peer_cert ); + mbedtls_free( session->peer_cert ); + session->peer_cert = NULL; + return( ret ); + } - /* Check if a smaller max length was negotiated */ - if( ssl->session_out != NULL && - ssl_mfl_code_to_length( ssl->session_out->mfl_code ) < max_len ) - { - max_len = ssl_mfl_code_to_length( ssl->session_out->mfl_code ); + p += cert_len; } +#else /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + /* Deserialize CRT digest from the end of the ticket. */ + if( 2 > (size_t)( end - p ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - /* During a handshake, use the value being negotiated */ - if( ssl->session_negotiate != NULL && - ssl_mfl_code_to_length( ssl->session_negotiate->mfl_code ) < max_len ) + session->peer_cert_digest_type = (mbedtls_md_type_t) *p++; + session->peer_cert_digest_len = (size_t) *p++; + + if( session->peer_cert_digest_len != 0 ) { - max_len = ssl_mfl_code_to_length( ssl->session_negotiate->mfl_code ); - } + const mbedtls_md_info_t *md_info = + mbedtls_md_info_from_type( session->peer_cert_digest_type ); + if( md_info == NULL ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + if( session->peer_cert_digest_len != mbedtls_md_get_size( md_info ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - return( max_len ); -} -#endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ + if( session->peer_cert_digest_len > (size_t)( end - p ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); -#if defined(MBEDTLS_SSL_PROTO_DTLS) -static size_t ssl_get_current_mtu( const mbedtls_ssl_context *ssl ) -{ - /* Return unlimited mtu for client hello messages to avoid fragmentation. */ - if( ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT && - ( ssl->state == MBEDTLS_SSL_CLIENT_HELLO || - ssl->state == MBEDTLS_SSL_SERVER_HELLO ) ) - return ( 0 ); + session->peer_cert_digest = + mbedtls_calloc( 1, session->peer_cert_digest_len ); + if( session->peer_cert_digest == NULL ) + return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); - if( ssl->handshake == NULL || ssl->handshake->mtu == 0 ) - return( ssl->mtu ); + memcpy( session->peer_cert_digest, p, + session->peer_cert_digest_len ); + p += session->peer_cert_digest_len; + } +#endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ +#endif /* MBEDTLS_X509_CRT_PARSE_C */ - if( ssl->mtu == 0 ) - return( ssl->handshake->mtu ); + /* + * Session ticket and associated data + */ +#if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C) + if( 3 > (size_t)( end - p ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - return( ssl->mtu < ssl->handshake->mtu ? - ssl->mtu : ssl->handshake->mtu ); -} -#endif /* MBEDTLS_SSL_PROTO_DTLS */ + session->ticket_len = ( p[0] << 16 ) | ( p[1] << 8 ) | p[2]; + p += 3; + + if( session->ticket_len != 0 ) + { + if( session->ticket_len > (size_t)( end - p ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + + session->ticket = mbedtls_calloc( 1, session->ticket_len ); + if( session->ticket == NULL ) + return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); -int mbedtls_ssl_get_max_out_record_payload( const mbedtls_ssl_context *ssl ) -{ - size_t max_len = MBEDTLS_SSL_OUT_CONTENT_LEN; + memcpy( session->ticket, p, session->ticket_len ); + p += session->ticket_len; + } -#if !defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) && \ - !defined(MBEDTLS_SSL_PROTO_DTLS) - (void) ssl; -#endif + if( 4 > (size_t)( end - p ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + + session->ticket_lifetime = ( (uint32_t) p[0] << 24 ) | + ( (uint32_t) p[1] << 16 ) | + ( (uint32_t) p[2] << 8 ) | + ( (uint32_t) p[3] ); + p += 4; +#endif /* MBEDTLS_SSL_SESSION_TICKETS && MBEDTLS_SSL_CLI_C */ + /* + * Misc extension-related info + */ #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) - const size_t mfl = mbedtls_ssl_get_max_frag_len( ssl ); + if( 1 > (size_t)( end - p ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - if( max_len > mfl ) - max_len = mfl; + session->mfl_code = *p++; #endif -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl_get_current_mtu( ssl ) != 0 ) - { - const size_t mtu = ssl_get_current_mtu( ssl ); - const int ret = mbedtls_ssl_get_record_expansion( ssl ); - const size_t overhead = (size_t) ret; - - if( ret < 0 ) - return( ret ); +#if defined(MBEDTLS_SSL_TRUNCATED_HMAC) + if( 1 > (size_t)( end - p ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - if( mtu <= overhead ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "MTU too low for record expansion" ) ); - return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); - } + session->trunc_hmac = *p++; +#endif - if( max_len > mtu - overhead ) - max_len = mtu - overhead; - } -#endif /* MBEDTLS_SSL_PROTO_DTLS */ +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) + if( 1 > (size_t)( end - p ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); -#if !defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) && \ - !defined(MBEDTLS_SSL_PROTO_DTLS) - ((void) ssl); + session->encrypt_then_mac = *p++; #endif - return( (int) max_len ); -} - -#if defined(MBEDTLS_X509_CRT_PARSE_C) -const mbedtls_x509_crt *mbedtls_ssl_get_peer_cert( const mbedtls_ssl_context *ssl ) -{ - if( ssl == NULL || ssl->session == NULL ) - return( NULL ); + /* Done, should have consumed entire buffer */ + if( p != end ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - return( ssl->session->peer_cert ); + return( 0 ); } -#endif /* MBEDTLS_X509_CRT_PARSE_C */ -#if defined(MBEDTLS_SSL_CLI_C) -int mbedtls_ssl_get_session( const mbedtls_ssl_context *ssl, mbedtls_ssl_session *dst ) +/* + * Deserialize session: public wrapper for error cleaning + */ +int mbedtls_ssl_session_load( mbedtls_ssl_session *session, + const unsigned char *buf, + size_t len ) { - if( ssl == NULL || - dst == NULL || - ssl->session == NULL || - ssl->conf->endpoint != MBEDTLS_SSL_IS_CLIENT ) - { - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - } + int ret = ssl_session_load( session, 0, buf, len ); + + if( ret != 0 ) + mbedtls_ssl_session_free( session ); - return( ssl_session_copy( dst, ssl->session ) ); + return( ret ); } -#endif /* MBEDTLS_SSL_CLI_C */ /* * Perform a single step of the SSL handshake @@ -8078,11 +5850,24 @@ int mbedtls_ssl_handshake( mbedtls_ssl_context *ssl ) { int ret = 0; + /* Sanity checks */ + if( ssl == NULL || ssl->conf == NULL ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ( ssl->f_set_timer == NULL || ssl->f_get_timer == NULL ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "You must use " + "mbedtls_ssl_set_timer_cb() for DTLS" ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> handshake" ) ); + /* Main handshake loop */ while( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER ) { ret = mbedtls_ssl_handshake_step( ssl ); @@ -8103,7 +5888,7 @@ int mbedtls_ssl_handshake( mbedtls_ssl_context *ssl ) */ static int ssl_write_hello_request( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write hello request" ) ); @@ -8132,9 +5917,9 @@ static int ssl_write_hello_request( mbedtls_ssl_context *ssl ) * If the handshake doesn't complete due to waiting for I/O, it will continue * during the next calls to mbedtls_ssl_renegotiate() or mbedtls_ssl_read() respectively. */ -static int ssl_start_renegotiation( mbedtls_ssl_context *ssl ) +int mbedtls_ssl_start_renegotiation( mbedtls_ssl_context *ssl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> renegotiate" ) ); @@ -8206,9 +5991,9 @@ int mbedtls_ssl_renegotiate( mbedtls_ssl_context *ssl ) if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - if( ( ret = ssl_start_renegotiation( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_start_renegotiation( ssl ) ) != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, "ssl_start_renegotiation", ret ); + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_start_renegotiation", ret ); return( ret ); } } @@ -8220,708 +6005,789 @@ int mbedtls_ssl_renegotiate( mbedtls_ssl_context *ssl ) return( ret ); } } -#endif /* MBEDTLS_SSL_CLI_C */ - - return( ret ); -} - -/* - * Check record counters and renegotiate if they're above the limit. - */ -static int ssl_check_ctr_renegotiate( mbedtls_ssl_context *ssl ) -{ - size_t ep_len = ssl_ep_len( ssl ); - int in_ctr_cmp; - int out_ctr_cmp; - - if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER || - ssl->renego_status == MBEDTLS_SSL_RENEGOTIATION_PENDING || - ssl->conf->disable_renegotiation == MBEDTLS_SSL_RENEGOTIATION_DISABLED ) +#endif /* MBEDTLS_SSL_CLI_C */ + + return( ret ); +} +#endif /* MBEDTLS_SSL_RENEGOTIATION */ + +#if defined(MBEDTLS_X509_CRT_PARSE_C) +static void ssl_key_cert_free( mbedtls_ssl_key_cert *key_cert ) +{ + mbedtls_ssl_key_cert *cur = key_cert, *next; + + while( cur != NULL ) + { + next = cur->next; + mbedtls_free( cur ); + cur = next; + } +} +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + +void mbedtls_ssl_handshake_free( mbedtls_ssl_context *ssl ) +{ + mbedtls_ssl_handshake_params *handshake = ssl->handshake; + + if( handshake == NULL ) + return; + +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) + if( ssl->conf->f_async_cancel != NULL && handshake->async_in_progress != 0 ) + { + ssl->conf->f_async_cancel( ssl ); + handshake->async_in_progress = 0; + } +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ + +#if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \ + defined(MBEDTLS_SSL_PROTO_TLS1_1) + mbedtls_md5_free( &handshake->fin_md5 ); + mbedtls_sha1_free( &handshake->fin_sha1 ); +#endif +#if defined(MBEDTLS_SSL_PROTO_TLS1_2) +#if defined(MBEDTLS_SHA256_C) +#if defined(MBEDTLS_USE_PSA_CRYPTO) + psa_hash_abort( &handshake->fin_sha256_psa ); +#else + mbedtls_sha256_free( &handshake->fin_sha256 ); +#endif +#endif +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) +#if defined(MBEDTLS_USE_PSA_CRYPTO) + psa_hash_abort( &handshake->fin_sha384_psa ); +#else + mbedtls_sha512_free( &handshake->fin_sha512 ); +#endif +#endif +#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ + +#if defined(MBEDTLS_DHM_C) + mbedtls_dhm_free( &handshake->dhm_ctx ); +#endif +#if defined(MBEDTLS_ECDH_C) + mbedtls_ecdh_free( &handshake->ecdh_ctx ); +#endif +#if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) + mbedtls_ecjpake_free( &handshake->ecjpake_ctx ); +#if defined(MBEDTLS_SSL_CLI_C) + mbedtls_free( handshake->ecjpake_cache ); + handshake->ecjpake_cache = NULL; + handshake->ecjpake_cache_len = 0; +#endif +#endif + +#if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) + /* explicit void pointer cast for buggy MS compiler */ + mbedtls_free( (void *) handshake->curves ); +#endif + +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) + if( handshake->psk != NULL ) + { + mbedtls_platform_zeroize( handshake->psk, handshake->psk_len ); + mbedtls_free( handshake->psk ); + } +#endif + +#if defined(MBEDTLS_X509_CRT_PARSE_C) && \ + defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) + /* + * Free only the linked list wrapper, not the keys themselves + * since the belong to the SNI callback + */ + if( handshake->sni_key_cert != NULL ) + { + mbedtls_ssl_key_cert *cur = handshake->sni_key_cert, *next; + + while( cur != NULL ) + { + next = cur->next; + mbedtls_free( cur ); + cur = next; + } + } +#endif /* MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_SSL_SERVER_NAME_INDICATION */ + +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) + mbedtls_x509_crt_restart_free( &handshake->ecrs_ctx ); + if( handshake->ecrs_peer_cert != NULL ) + { + mbedtls_x509_crt_free( handshake->ecrs_peer_cert ); + mbedtls_free( handshake->ecrs_peer_cert ); + } +#endif + +#if defined(MBEDTLS_X509_CRT_PARSE_C) && \ + !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + mbedtls_pk_free( &handshake->peer_pubkey ); +#endif /* MBEDTLS_X509_CRT_PARSE_C && !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + mbedtls_free( handshake->verify_cookie ); + mbedtls_ssl_flight_free( handshake->flight ); + mbedtls_ssl_buffering_free( ssl ); +#endif + +#if defined(MBEDTLS_ECDH_C) && \ + defined(MBEDTLS_USE_PSA_CRYPTO) + psa_destroy_key( handshake->ecdh_psa_privkey ); +#endif /* MBEDTLS_ECDH_C && MBEDTLS_USE_PSA_CRYPTO */ + + mbedtls_platform_zeroize( handshake, + sizeof( mbedtls_ssl_handshake_params ) ); + +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + /* If the buffers are too big - reallocate. Because of the way Mbed TLS + * processes datagrams and the fact that a datagram is allowed to have + * several records in it, it is possible that the I/O buffers are not + * empty at this stage */ + handle_buffer_resizing( ssl, 1, mbedtls_ssl_get_input_buflen( ssl ), + mbedtls_ssl_get_output_buflen( ssl ) ); +#endif +} + +void mbedtls_ssl_session_free( mbedtls_ssl_session *session ) +{ + if( session == NULL ) + return; + +#if defined(MBEDTLS_X509_CRT_PARSE_C) + ssl_clear_peer_cert( session ); +#endif + +#if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C) + mbedtls_free( session->ticket ); +#endif + + mbedtls_platform_zeroize( session, sizeof( mbedtls_ssl_session ) ); +} + +#if defined(MBEDTLS_SSL_CONTEXT_SERIALIZATION) + +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) +#define SSL_SERIALIZED_CONTEXT_CONFIG_DTLS_CONNECTION_ID 1u +#else +#define SSL_SERIALIZED_CONTEXT_CONFIG_DTLS_CONNECTION_ID 0u +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ + +#if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) +#define SSL_SERIALIZED_CONTEXT_CONFIG_DTLS_BADMAC_LIMIT 1u +#else +#define SSL_SERIALIZED_CONTEXT_CONFIG_DTLS_BADMAC_LIMIT 0u +#endif /* MBEDTLS_SSL_DTLS_BADMAC_LIMIT */ + +#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) +#define SSL_SERIALIZED_CONTEXT_CONFIG_DTLS_ANTI_REPLAY 1u +#else +#define SSL_SERIALIZED_CONTEXT_CONFIG_DTLS_ANTI_REPLAY 0u +#endif /* MBEDTLS_SSL_DTLS_ANTI_REPLAY */ + +#if defined(MBEDTLS_SSL_ALPN) +#define SSL_SERIALIZED_CONTEXT_CONFIG_ALPN 1u +#else +#define SSL_SERIALIZED_CONTEXT_CONFIG_ALPN 0u +#endif /* MBEDTLS_SSL_ALPN */ + +#define SSL_SERIALIZED_CONTEXT_CONFIG_DTLS_CONNECTION_ID_BIT 0 +#define SSL_SERIALIZED_CONTEXT_CONFIG_DTLS_BADMAC_LIMIT_BIT 1 +#define SSL_SERIALIZED_CONTEXT_CONFIG_DTLS_ANTI_REPLAY_BIT 2 +#define SSL_SERIALIZED_CONTEXT_CONFIG_ALPN_BIT 3 + +#define SSL_SERIALIZED_CONTEXT_CONFIG_BITFLAG \ + ( (uint32_t) ( \ + ( SSL_SERIALIZED_CONTEXT_CONFIG_DTLS_CONNECTION_ID << SSL_SERIALIZED_CONTEXT_CONFIG_DTLS_CONNECTION_ID_BIT ) | \ + ( SSL_SERIALIZED_CONTEXT_CONFIG_DTLS_BADMAC_LIMIT << SSL_SERIALIZED_CONTEXT_CONFIG_DTLS_BADMAC_LIMIT_BIT ) | \ + ( SSL_SERIALIZED_CONTEXT_CONFIG_DTLS_ANTI_REPLAY << SSL_SERIALIZED_CONTEXT_CONFIG_DTLS_ANTI_REPLAY_BIT ) | \ + ( SSL_SERIALIZED_CONTEXT_CONFIG_ALPN << SSL_SERIALIZED_CONTEXT_CONFIG_ALPN_BIT ) | \ + 0u ) ) + +static unsigned char ssl_serialized_context_header[] = { + MBEDTLS_VERSION_MAJOR, + MBEDTLS_VERSION_MINOR, + MBEDTLS_VERSION_PATCH, + MBEDTLS_BYTE_1( SSL_SERIALIZED_SESSION_CONFIG_BITFLAG ), + MBEDTLS_BYTE_0( SSL_SERIALIZED_SESSION_CONFIG_BITFLAG ), + MBEDTLS_BYTE_2( SSL_SERIALIZED_CONTEXT_CONFIG_BITFLAG ), + MBEDTLS_BYTE_1( SSL_SERIALIZED_CONTEXT_CONFIG_BITFLAG ), + MBEDTLS_BYTE_0( SSL_SERIALIZED_CONTEXT_CONFIG_BITFLAG ), +}; + +/* + * Serialize a full SSL context + * + * The format of the serialized data is: + * (in the presentation language of TLS, RFC 8446 section 3) + * + * // header + * opaque mbedtls_version[3]; // major, minor, patch + * opaque context_format[5]; // version-specific field determining + * // the format of the remaining + * // serialized data. + * Note: When updating the format, remember to keep these + * version+format bytes. (We may make their size part of the API.) + * + * // session sub-structure + * opaque session<1..2^32-1>; // see mbedtls_ssl_session_save() + * // transform sub-structure + * uint8 random[64]; // ServerHello.random+ClientHello.random + * uint8 in_cid<0..2^8-1> // Connection ID: expected incoming value + * uint8 out_cid<0..2^8-1> // Connection ID: outgoing value to use + * // fields from ssl_context + * uint32 badmac_seen; // DTLS: number of records with failing MAC + * uint64 in_window_top; // DTLS: last validated record seq_num + * uint64 in_window; // DTLS: bitmask for replay protection + * uint8 disable_datagram_packing; // DTLS: only one record per datagram + * uint64 cur_out_ctr; // Record layer: outgoing sequence number + * uint16 mtu; // DTLS: path mtu (max outgoing fragment size) + * uint8 alpn_chosen<0..2^8-1> // ALPN: negotiated application protocol + * + * Note that many fields of the ssl_context or sub-structures are not + * serialized, as they fall in one of the following categories: + * + * 1. forced value (eg in_left must be 0) + * 2. pointer to dynamically-allocated memory (eg session, transform) + * 3. value can be re-derived from other data (eg session keys from MS) + * 4. value was temporary (eg content of input buffer) + * 5. value will be provided by the user again (eg I/O callbacks and context) + */ +int mbedtls_ssl_context_save( mbedtls_ssl_context *ssl, + unsigned char *buf, + size_t buf_len, + size_t *olen ) +{ + unsigned char *p = buf; + size_t used = 0; + size_t session_len; + int ret = 0; + + /* + * Enforce usage restrictions, see "return BAD_INPUT_DATA" in + * this function's documentation. + * + * These are due to assumptions/limitations in the implementation. Some of + * them are likely to stay (no handshake in progress) some might go away + * (only DTLS) but are currently used to simplify the implementation. + */ + /* The initial handshake must be over */ + if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Initial handshake isn't over" ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + if( ssl->handshake != NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Handshake isn't completed" ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + /* Double-check that sub-structures are indeed ready */ + if( ssl->transform == NULL || ssl->session == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Serialised structures aren't ready" ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + /* There must be no pending incoming or outgoing data */ + if( mbedtls_ssl_check_pending( ssl ) != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "There is pending incoming data" ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + if( ssl->out_left != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "There is pending outgoing data" ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + /* Protocol must be DLTS, not TLS */ + if( ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Only DTLS is supported" ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + } + /* Version must be 1.2 */ + if( ssl->major_ver != MBEDTLS_SSL_MAJOR_VERSION_3 ) { - return( 0 ); + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Only version 1.2 supported" ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } - - in_ctr_cmp = memcmp( ssl->in_ctr + ep_len, - ssl->conf->renego_period + ep_len, 8 - ep_len ); - out_ctr_cmp = memcmp( ssl->cur_out_ctr + ep_len, - ssl->conf->renego_period + ep_len, 8 - ep_len ); - - if( in_ctr_cmp <= 0 && out_ctr_cmp <= 0 ) + if( ssl->minor_ver != MBEDTLS_SSL_MINOR_VERSION_3 ) { - return( 0 ); + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Only version 1.2 supported" ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } - - MBEDTLS_SSL_DEBUG_MSG( 1, ( "record counter limit reached: renegotiate" ) ); - return( mbedtls_ssl_renegotiate( ssl ) ); -} -#endif /* MBEDTLS_SSL_RENEGOTIATION */ - -/* - * Receive application data decrypted from the SSL layer - */ -int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) -{ - int ret; - size_t n; - - if( ssl == NULL || ssl->conf == NULL ) + /* We must be using an AEAD ciphersuite */ + if( mbedtls_ssl_transform_uses_aead( ssl->transform ) != 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Only AEAD ciphersuites supported" ) ); return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> read" ) ); - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + } + /* Renegotiation must not be enabled */ +#if defined(MBEDTLS_SSL_RENEGOTIATION) + if( ssl->conf->disable_renegotiation != MBEDTLS_SSL_RENEGOTIATION_DISABLED ) { - if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) - return( ret ); - - if( ssl->handshake != NULL && - ssl->handshake->retransmit_state == MBEDTLS_SSL_RETRANS_SENDING ) - { - if( ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 ) - return( ret ); - } + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Renegotiation must not be enabled" ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } #endif /* - * Check if renegotiation is necessary and/or handshake is - * in process. If yes, perform/continue, and fall through - * if an unexpected packet is received while the client - * is waiting for the ServerHello. - * - * (There is no equivalent to the last condition on - * the server-side as it is not treated as within - * a handshake while waiting for the ClientHello - * after a renegotiation request.) + * Version and format identifier */ + used += sizeof( ssl_serialized_context_header ); -#if defined(MBEDTLS_SSL_RENEGOTIATION) - ret = ssl_check_ctr_renegotiate( ssl ); - if( ret != MBEDTLS_ERR_SSL_WAITING_SERVER_HELLO_RENEGO && - ret != 0 ) + if( used <= buf_len ) { - MBEDTLS_SSL_DEBUG_RET( 1, "ssl_check_ctr_renegotiate", ret ); - return( ret ); + memcpy( p, ssl_serialized_context_header, + sizeof( ssl_serialized_context_header ) ); + p += sizeof( ssl_serialized_context_header ); } -#endif - if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER ) - { - ret = mbedtls_ssl_handshake( ssl ); - if( ret != MBEDTLS_ERR_SSL_WAITING_SERVER_HELLO_RENEGO && - ret != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_handshake", ret ); - return( ret ); - } - } + /* + * Session (length + data) + */ + ret = ssl_session_save( ssl->session, 1, NULL, 0, &session_len ); + if( ret != MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ) + return( ret ); - /* Loop as long as no application data record is available */ - while( ssl->in_offt == NULL ) + used += 4 + session_len; + if( used <= buf_len ) { - /* Start timer if not already running */ - if( ssl->f_get_timer != NULL && - ssl->f_get_timer( ssl->p_timer ) == -1 ) - { - ssl_set_timer( ssl, ssl->conf->read_timeout ); - } - - if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) - { - if( ret == MBEDTLS_ERR_SSL_CONN_EOF ) - return( 0 ); + MBEDTLS_PUT_UINT32_BE( session_len, p, 0 ); + p += 4; - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); + ret = ssl_session_save( ssl->session, 1, + p, session_len, &session_len ); + if( ret != 0 ) return( ret ); - } - if( ssl->in_msglen == 0 && - ssl->in_msgtype == MBEDTLS_SSL_MSG_APPLICATION_DATA ) - { - /* - * OpenSSL sends empty messages to randomize the IV - */ - if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) - { - if( ret == MBEDTLS_ERR_SSL_CONN_EOF ) - return( 0 ); + p += session_len; + } - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); - return( ret ); - } - } + /* + * Transform + */ + used += sizeof( ssl->transform->randbytes ); + if( used <= buf_len ) + { + memcpy( p, ssl->transform->randbytes, + sizeof( ssl->transform->randbytes ) ); + p += sizeof( ssl->transform->randbytes ); + } - if( ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "received handshake message" ) ); +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + used += 2 + ssl->transform->in_cid_len + ssl->transform->out_cid_len; + if( used <= buf_len ) + { + *p++ = ssl->transform->in_cid_len; + memcpy( p, ssl->transform->in_cid, ssl->transform->in_cid_len ); + p += ssl->transform->in_cid_len; - /* - * - For client-side, expect SERVER_HELLO_REQUEST. - * - For server-side, expect CLIENT_HELLO. - * - Fail (TLS) or silently drop record (DTLS) in other cases. - */ + *p++ = ssl->transform->out_cid_len; + memcpy( p, ssl->transform->out_cid, ssl->transform->out_cid_len ); + p += ssl->transform->out_cid_len; + } +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ -#if defined(MBEDTLS_SSL_CLI_C) - if( ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT && - ( ssl->in_msg[0] != MBEDTLS_SSL_HS_HELLO_REQUEST || - ssl->in_hslen != mbedtls_ssl_hs_hdr_len( ssl ) ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "handshake received (not HelloRequest)" ) ); + /* + * Saved fields from top-level ssl_context structure + */ +#if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) + used += 4; + if( used <= buf_len ) + { + MBEDTLS_PUT_UINT32_BE( ssl->badmac_seen, p, 0 ); + p += 4; + } +#endif /* MBEDTLS_SSL_DTLS_BADMAC_LIMIT */ - /* With DTLS, drop the packet (probably from last handshake) */ -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - continue; - } -#endif - return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); - } -#endif /* MBEDTLS_SSL_CLI_C */ +#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) + used += 16; + if( used <= buf_len ) + { + MBEDTLS_PUT_UINT64_BE( ssl->in_window_top, p, 0 ); + p += 8; -#if defined(MBEDTLS_SSL_SRV_C) - if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && - ssl->in_msg[0] != MBEDTLS_SSL_HS_CLIENT_HELLO ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "handshake received (not ClientHello)" ) ); + MBEDTLS_PUT_UINT64_BE( ssl->in_window, p, 0 ); + p += 8; + } +#endif /* MBEDTLS_SSL_DTLS_ANTI_REPLAY */ - /* With DTLS, drop the packet (probably from last handshake) */ #if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - continue; - } -#endif - return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); - } -#endif /* MBEDTLS_SSL_SRV_C */ + used += 1; + if( used <= buf_len ) + { + *p++ = ssl->disable_datagram_packing; + } +#endif /* MBEDTLS_SSL_PROTO_DTLS */ -#if defined(MBEDTLS_SSL_RENEGOTIATION) - /* Determine whether renegotiation attempt should be accepted */ - if( ! ( ssl->conf->disable_renegotiation == MBEDTLS_SSL_RENEGOTIATION_DISABLED || - ( ssl->secure_renegotiation == MBEDTLS_SSL_LEGACY_RENEGOTIATION && - ssl->conf->allow_legacy_renegotiation == - MBEDTLS_SSL_LEGACY_NO_RENEGOTIATION ) ) ) - { - /* - * Accept renegotiation request - */ + used += 8; + if( used <= buf_len ) + { + memcpy( p, ssl->cur_out_ctr, 8 ); + p += 8; + } - /* DTLS clients need to know renego is server-initiated */ #if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && - ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT ) - { - ssl->renego_status = MBEDTLS_SSL_RENEGOTIATION_PENDING; - } -#endif - ret = ssl_start_renegotiation( ssl ); - if( ret != MBEDTLS_ERR_SSL_WAITING_SERVER_HELLO_RENEGO && - ret != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "ssl_start_renegotiation", ret ); - return( ret ); - } - } - else -#endif /* MBEDTLS_SSL_RENEGOTIATION */ - { - /* - * Refuse renegotiation - */ - - MBEDTLS_SSL_DEBUG_MSG( 3, ( "refusing renegotiation, sending alert" ) ); - -#if defined(MBEDTLS_SSL_PROTO_SSL3) - if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ) - { - /* SSLv3 does not have a "no_renegotiation" warning, so - we send a fatal alert and abort the connection. */ - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE ); - return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); - } - else -#endif /* MBEDTLS_SSL_PROTO_SSL3 */ -#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ - defined(MBEDTLS_SSL_PROTO_TLS1_2) - if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_1 ) - { - if( ( ret = mbedtls_ssl_send_alert_message( ssl, - MBEDTLS_SSL_ALERT_LEVEL_WARNING, - MBEDTLS_SSL_ALERT_MSG_NO_RENEGOTIATION ) ) != 0 ) - { - return( ret ); - } - } - else -#endif /* MBEDTLS_SSL_PROTO_TLS1 || MBEDTLS_SSL_PROTO_TLS1_1 || - MBEDTLS_SSL_PROTO_TLS1_2 */ - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - } - - /* At this point, we don't know whether the renegotiation has been - * completed or not. The cases to consider are the following: - * 1) The renegotiation is complete. In this case, no new record - * has been read yet. - * 2) The renegotiation is incomplete because the client received - * an application data record while awaiting the ServerHello. - * 3) The renegotiation is incomplete because the client received - * a non-handshake, non-application data message while awaiting - * the ServerHello. - * In each of these case, looping will be the proper action: - * - For 1), the next iteration will read a new record and check - * if it's application data. - * - For 2), the loop condition isn't satisfied as application data - * is present, hence continue is the same as break - * - For 3), the loop condition is satisfied and read_record - * will re-deliver the message that was held back by the client - * when expecting the ServerHello. - */ - continue; - } -#if defined(MBEDTLS_SSL_RENEGOTIATION) - else if( ssl->renego_status == MBEDTLS_SSL_RENEGOTIATION_PENDING ) - { - if( ssl->conf->renego_max_records >= 0 ) - { - if( ++ssl->renego_records_seen > ssl->conf->renego_max_records ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "renegotiation requested, " - "but not honored by client" ) ); - return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); - } - } - } -#endif /* MBEDTLS_SSL_RENEGOTIATION */ + used += 2; + if( used <= buf_len ) + { + MBEDTLS_PUT_UINT16_BE( ssl->mtu, p, 0 ); + p += 2; + } +#endif /* MBEDTLS_SSL_PROTO_DTLS */ - /* Fatal and closure alerts handled by mbedtls_ssl_read_record() */ - if( ssl->in_msgtype == MBEDTLS_SSL_MSG_ALERT ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "ignoring non-fatal non-closure alert" ) ); - return( MBEDTLS_ERR_SSL_WANT_READ ); - } +#if defined(MBEDTLS_SSL_ALPN) + { + const uint8_t alpn_len = ssl->alpn_chosen + ? (uint8_t) strlen( ssl->alpn_chosen ) + : 0; - if( ssl->in_msgtype != MBEDTLS_SSL_MSG_APPLICATION_DATA ) + used += 1 + alpn_len; + if( used <= buf_len ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad application data message" ) ); - return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); - } - - ssl->in_offt = ssl->in_msg; + *p++ = alpn_len; - /* We're going to return something now, cancel timer, - * except if handshake (renegotiation) is in progress */ - if( ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER ) - ssl_set_timer( ssl, 0 ); - -#if defined(MBEDTLS_SSL_PROTO_DTLS) - /* If we requested renego but received AppData, resend HelloRequest. - * Do it now, after setting in_offt, to avoid taking this branch - * again if ssl_write_hello_request() returns WANT_WRITE */ -#if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_RENEGOTIATION) - if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && - ssl->renego_status == MBEDTLS_SSL_RENEGOTIATION_PENDING ) - { - if( ( ret = ssl_resend_hello_request( ssl ) ) != 0 ) + if( ssl->alpn_chosen != NULL ) { - MBEDTLS_SSL_DEBUG_RET( 1, "ssl_resend_hello_request", ret ); - return( ret ); + memcpy( p, ssl->alpn_chosen, alpn_len ); + p += alpn_len; } } -#endif /* MBEDTLS_SSL_SRV_C && MBEDTLS_SSL_RENEGOTIATION */ -#endif /* MBEDTLS_SSL_PROTO_DTLS */ } +#endif /* MBEDTLS_SSL_ALPN */ - n = ( len < ssl->in_msglen ) - ? len : ssl->in_msglen; - - memcpy( buf, ssl->in_offt, n ); - ssl->in_msglen -= n; + /* + * Done + */ + *olen = used; - if( ssl->in_msglen == 0 ) - { - /* all bytes consumed */ - ssl->in_offt = NULL; - ssl->keep_current_message = 0; - } - else - { - /* more data available */ - ssl->in_offt += n; - } + if( used > buf_len ) + return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= read" ) ); + MBEDTLS_SSL_DEBUG_BUF( 4, "saved context", buf, used ); - return( (int) n ); + return( mbedtls_ssl_session_reset_int( ssl, 0 ) ); } /* - * Send application data to be encrypted by the SSL layer, taking care of max - * fragment length and buffer size. - * - * According to RFC 5246 Section 6.2.1: - * - * Zero-length fragments of Application data MAY be sent as they are - * potentially useful as a traffic analysis countermeasure. - * - * Therefore, it is possible that the input message length is 0 and the - * corresponding return code is 0 on success. + * Helper to get TLS 1.2 PRF from ciphersuite + * (Duplicates bits of logic from ssl_set_handshake_prfs().) */ -static int ssl_write_real( mbedtls_ssl_context *ssl, - const unsigned char *buf, size_t len ) +typedef int (*tls_prf_fn)( const unsigned char *secret, size_t slen, + const char *label, + const unsigned char *random, size_t rlen, + unsigned char *dstbuf, size_t dlen ); +static tls_prf_fn ssl_tls12prf_from_cs( int ciphersuite_id ) { - int ret = mbedtls_ssl_get_max_out_record_payload( ssl ); - const size_t max_len = (size_t) ret; - - if( ret < 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_get_max_out_record_payload", ret ); - return( ret ); - } +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) + const mbedtls_ssl_ciphersuite_t * const ciphersuite_info = + mbedtls_ssl_ciphersuite_from_id( ciphersuite_id ); - if( len > max_len ) - { -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "fragment larger than the (negotiated) " - "maximum fragment length: %d > %d", - len, max_len ) ); - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - } - else + if( ciphersuite_info->mac == MBEDTLS_MD_SHA384 ) + return( tls_prf_sha384 ); +#else + (void) ciphersuite_id; #endif - len = max_len; - } - - if( ssl->out_left != 0 ) - { - /* - * The user has previously tried to send the data and - * MBEDTLS_ERR_SSL_WANT_WRITE or the message was only partially - * written. In this case, we expect the high-level write function - * (e.g. mbedtls_ssl_write()) to be called with the same parameters - */ - if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flush_output", ret ); - return( ret ); - } - } - else - { - /* - * The user is trying to send a message the first time, so we need to - * copy the data into the internal buffers and setup the data structure - * to keep track of partial writes - */ - ssl->out_msglen = len; - ssl->out_msgtype = MBEDTLS_SSL_MSG_APPLICATION_DATA; - memcpy( ssl->out_msg, buf, len ); - - if( ( ret = mbedtls_ssl_write_record( ssl, SSL_FORCE_FLUSH ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); - return( ret ); - } - } - - return( (int) len ); + return( tls_prf_sha256 ); } /* - * Write application data, doing 1/n-1 splitting if necessary. + * Deserialize context, see mbedtls_ssl_context_save() for format. * - * With non-blocking I/O, ssl_write_real() may return WANT_WRITE, - * then the caller will call us again with the same arguments, so - * remember whether we already did the split or not. + * This internal version is wrapped by a public function that cleans up in + * case of error. */ -#if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING) -static int ssl_write_split( mbedtls_ssl_context *ssl, - const unsigned char *buf, size_t len ) +static int ssl_context_load( mbedtls_ssl_context *ssl, + const unsigned char *buf, + size_t len ) { - int ret; + const unsigned char *p = buf; + const unsigned char * const end = buf + len; + size_t session_len; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; - if( ssl->conf->cbc_record_splitting == - MBEDTLS_SSL_CBC_RECORD_SPLITTING_DISABLED || - len <= 1 || - ssl->minor_ver > MBEDTLS_SSL_MINOR_VERSION_1 || - mbedtls_cipher_get_cipher_mode( &ssl->transform_out->cipher_ctx_enc ) - != MBEDTLS_MODE_CBC ) + /* + * The context should have been freshly setup or reset. + * Give the user an error in case of obvious misuse. + * (Checking session is useful because it won't be NULL if we're + * renegotiating, or if the user mistakenly loaded a session first.) + */ + if( ssl->state != MBEDTLS_SSL_HELLO_REQUEST || + ssl->session != NULL ) { - return( ssl_write_real( ssl, buf, len ) ); + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } - if( ssl->split_done == 0 ) + /* + * We can't check that the config matches the initial one, but we can at + * least check it matches the requirements for serializing. + */ + if( ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM || + ssl->conf->max_major_ver < MBEDTLS_SSL_MAJOR_VERSION_3 || + ssl->conf->min_major_ver > MBEDTLS_SSL_MAJOR_VERSION_3 || + ssl->conf->max_minor_ver < MBEDTLS_SSL_MINOR_VERSION_3 || + ssl->conf->min_minor_ver > MBEDTLS_SSL_MINOR_VERSION_3 || +#if defined(MBEDTLS_SSL_RENEGOTIATION) + ssl->conf->disable_renegotiation != MBEDTLS_SSL_RENEGOTIATION_DISABLED || +#endif + 0 ) { - if( ( ret = ssl_write_real( ssl, buf, 1 ) ) <= 0 ) - return( ret ); - ssl->split_done = 1; + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } - if( ( ret = ssl_write_real( ssl, buf + 1, len - 1 ) ) <= 0 ) - return( ret ); - ssl->split_done = 0; - - return( ret + 1 ); -} -#endif /* MBEDTLS_SSL_CBC_RECORD_SPLITTING */ - -/* - * Write application data (public-facing wrapper) - */ -int mbedtls_ssl_write( mbedtls_ssl_context *ssl, const unsigned char *buf, size_t len ) -{ - int ret; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write" ) ); + MBEDTLS_SSL_DEBUG_BUF( 4, "context to load", buf, len ); - if( ssl == NULL || ssl->conf == NULL ) + /* + * Check version identifier + */ + if( (size_t)( end - p ) < sizeof( ssl_serialized_context_header ) ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); -#if defined(MBEDTLS_SSL_RENEGOTIATION) - if( ( ret = ssl_check_ctr_renegotiate( ssl ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "ssl_check_ctr_renegotiate", ret ); - return( ret ); - } -#endif - - if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER ) + if( memcmp( p, ssl_serialized_context_header, + sizeof( ssl_serialized_context_header ) ) != 0 ) { - if( ( ret = mbedtls_ssl_handshake( ssl ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_handshake", ret ); - return( ret ); - } + return( MBEDTLS_ERR_SSL_VERSION_MISMATCH ); } + p += sizeof( ssl_serialized_context_header ); -#if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING) - ret = ssl_write_split( ssl, buf, len ); -#else - ret = ssl_write_real( ssl, buf, len ); -#endif - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write" ) ); - - return( ret ); -} - -/* - * Notify the peer that the connection is being closed - */ -int mbedtls_ssl_close_notify( mbedtls_ssl_context *ssl ) -{ - int ret; - - if( ssl == NULL || ssl->conf == NULL ) + /* + * Session + */ + if( (size_t)( end - p ) < 4 ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write close notify" ) ); + session_len = ( (size_t) p[0] << 24 ) | + ( (size_t) p[1] << 16 ) | + ( (size_t) p[2] << 8 ) | + ( (size_t) p[3] ); + p += 4; + + /* This has been allocated by ssl_handshake_init(), called by + * by either mbedtls_ssl_session_reset_int() or mbedtls_ssl_setup(). */ + ssl->session = ssl->session_negotiate; + ssl->session_in = ssl->session; + ssl->session_out = ssl->session; + ssl->session_negotiate = NULL; - if( ssl->out_left != 0 ) - return( mbedtls_ssl_flush_output( ssl ) ); + if( (size_t)( end - p ) < session_len ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - if( ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER ) + ret = ssl_session_load( ssl->session, 1, p, session_len ); + if( ret != 0 ) { - if( ( ret = mbedtls_ssl_send_alert_message( ssl, - MBEDTLS_SSL_ALERT_LEVEL_WARNING, - MBEDTLS_SSL_ALERT_MSG_CLOSE_NOTIFY ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_send_alert_message", ret ); - return( ret ); - } + mbedtls_ssl_session_free( ssl->session ); + return( ret ); } - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write close notify" ) ); + p += session_len; - return( 0 ); -} + /* + * Transform + */ -void mbedtls_ssl_transform_free( mbedtls_ssl_transform *transform ) -{ - if( transform == NULL ) - return; + /* This has been allocated by ssl_handshake_init(), called by + * by either mbedtls_ssl_session_reset_int() or mbedtls_ssl_setup(). */ + ssl->transform = ssl->transform_negotiate; + ssl->transform_in = ssl->transform; + ssl->transform_out = ssl->transform; + ssl->transform_negotiate = NULL; + /* Read random bytes and populate structure */ + if( (size_t)( end - p ) < sizeof( ssl->transform->randbytes ) ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + + ret = ssl_populate_transform( ssl->transform, + ssl->session->ciphersuite, + ssl->session->master, +#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC) +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) + ssl->session->encrypt_then_mac, +#endif +#if defined(MBEDTLS_SSL_TRUNCATED_HMAC) + ssl->session->trunc_hmac, +#endif +#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */ #if defined(MBEDTLS_ZLIB_SUPPORT) - deflateEnd( &transform->ctx_deflate ); - inflateEnd( &transform->ctx_inflate ); + ssl->session->compression, #endif + ssl_tls12prf_from_cs( ssl->session->ciphersuite ), + p, /* currently pointing to randbytes */ + MBEDTLS_SSL_MINOR_VERSION_3, /* (D)TLS 1.2 is forced */ + ssl->conf->endpoint, + ssl ); + if( ret != 0 ) + return( ret ); - mbedtls_cipher_free( &transform->cipher_ctx_enc ); - mbedtls_cipher_free( &transform->cipher_ctx_dec ); + p += sizeof( ssl->transform->randbytes ); - mbedtls_md_free( &transform->md_ctx_enc ); - mbedtls_md_free( &transform->md_ctx_dec ); +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + /* Read connection IDs and store them */ + if( (size_t)( end - p ) < 1 ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - mbedtls_platform_zeroize( transform, sizeof( mbedtls_ssl_transform ) ); -} + ssl->transform->in_cid_len = *p++; -#if defined(MBEDTLS_X509_CRT_PARSE_C) -static void ssl_key_cert_free( mbedtls_ssl_key_cert *key_cert ) -{ - mbedtls_ssl_key_cert *cur = key_cert, *next; + if( (size_t)( end - p ) < ssl->transform->in_cid_len + 1u ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - while( cur != NULL ) - { - next = cur->next; - mbedtls_free( cur ); - cur = next; - } -} -#endif /* MBEDTLS_X509_CRT_PARSE_C */ + memcpy( ssl->transform->in_cid, p, ssl->transform->in_cid_len ); + p += ssl->transform->in_cid_len; -#if defined(MBEDTLS_SSL_PROTO_DTLS) + ssl->transform->out_cid_len = *p++; -static void ssl_buffering_free( mbedtls_ssl_context *ssl ) -{ - unsigned offset; - mbedtls_ssl_handshake_params * const hs = ssl->handshake; + if( (size_t)( end - p ) < ssl->transform->out_cid_len ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - if( hs == NULL ) - return; + memcpy( ssl->transform->out_cid, p, ssl->transform->out_cid_len ); + p += ssl->transform->out_cid_len; +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ - ssl_free_buffered_record( ssl ); + /* + * Saved fields from top-level ssl_context structure + */ +#if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) + if( (size_t)( end - p ) < 4 ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - for( offset = 0; offset < MBEDTLS_SSL_MAX_BUFFERED_HS; offset++ ) - ssl_buffering_free_slot( ssl, offset ); -} + ssl->badmac_seen = ( (uint32_t) p[0] << 24 ) | + ( (uint32_t) p[1] << 16 ) | + ( (uint32_t) p[2] << 8 ) | + ( (uint32_t) p[3] ); + p += 4; +#endif /* MBEDTLS_SSL_DTLS_BADMAC_LIMIT */ -static void ssl_buffering_free_slot( mbedtls_ssl_context *ssl, - uint8_t slot ) -{ - mbedtls_ssl_handshake_params * const hs = ssl->handshake; - mbedtls_ssl_hs_buffer * const hs_buf = &hs->buffering.hs[slot]; +#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) + if( (size_t)( end - p ) < 16 ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - if( slot >= MBEDTLS_SSL_MAX_BUFFERED_HS ) - return; + ssl->in_window_top = ( (uint64_t) p[0] << 56 ) | + ( (uint64_t) p[1] << 48 ) | + ( (uint64_t) p[2] << 40 ) | + ( (uint64_t) p[3] << 32 ) | + ( (uint64_t) p[4] << 24 ) | + ( (uint64_t) p[5] << 16 ) | + ( (uint64_t) p[6] << 8 ) | + ( (uint64_t) p[7] ); + p += 8; + + ssl->in_window = ( (uint64_t) p[0] << 56 ) | + ( (uint64_t) p[1] << 48 ) | + ( (uint64_t) p[2] << 40 ) | + ( (uint64_t) p[3] << 32 ) | + ( (uint64_t) p[4] << 24 ) | + ( (uint64_t) p[5] << 16 ) | + ( (uint64_t) p[6] << 8 ) | + ( (uint64_t) p[7] ); + p += 8; +#endif /* MBEDTLS_SSL_DTLS_ANTI_REPLAY */ - if( hs_buf->is_valid == 1 ) - { - hs->buffering.total_bytes_buffered -= hs_buf->data_len; - mbedtls_platform_zeroize( hs_buf->data, hs_buf->data_len ); - mbedtls_free( hs_buf->data ); - memset( hs_buf, 0, sizeof( mbedtls_ssl_hs_buffer ) ); - } -} +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( (size_t)( end - p ) < 1 ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + ssl->disable_datagram_packing = *p++; #endif /* MBEDTLS_SSL_PROTO_DTLS */ -void mbedtls_ssl_handshake_free( mbedtls_ssl_context *ssl ) -{ - mbedtls_ssl_handshake_params *handshake = ssl->handshake; + if( (size_t)( end - p ) < 8 ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - if( handshake == NULL ) - return; + memcpy( ssl->cur_out_ctr, p, 8 ); + p += 8; -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) - if( ssl->conf->f_async_cancel != NULL && handshake->async_in_progress != 0 ) +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( (size_t)( end - p ) < 2 ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + + ssl->mtu = ( p[0] << 8 ) | p[1]; + p += 2; +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + +#if defined(MBEDTLS_SSL_ALPN) { - ssl->conf->f_async_cancel( ssl ); - handshake->async_in_progress = 0; - } -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ + uint8_t alpn_len; + const char **cur; -#if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \ - defined(MBEDTLS_SSL_PROTO_TLS1_1) - mbedtls_md5_free( &handshake->fin_md5 ); - mbedtls_sha1_free( &handshake->fin_sha1 ); -#endif -#if defined(MBEDTLS_SSL_PROTO_TLS1_2) -#if defined(MBEDTLS_SHA256_C) - mbedtls_sha256_free( &handshake->fin_sha256 ); -#endif -#if defined(MBEDTLS_SHA512_C) - mbedtls_sha512_free( &handshake->fin_sha512 ); -#endif -#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ + if( (size_t)( end - p ) < 1 ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); -#if defined(MBEDTLS_DHM_C) - mbedtls_dhm_free( &handshake->dhm_ctx ); -#endif -#if defined(MBEDTLS_ECDH_C) - mbedtls_ecdh_free( &handshake->ecdh_ctx ); -#endif -#if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) - mbedtls_ecjpake_free( &handshake->ecjpake_ctx ); -#if defined(MBEDTLS_SSL_CLI_C) - mbedtls_free( handshake->ecjpake_cache ); - handshake->ecjpake_cache = NULL; - handshake->ecjpake_cache_len = 0; -#endif -#endif + alpn_len = *p++; -#if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ - defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) - /* explicit void pointer cast for buggy MS compiler */ - mbedtls_free( (void *) handshake->curves ); -#endif + if( alpn_len != 0 && ssl->conf->alpn_list != NULL ) + { + /* alpn_chosen should point to an item in the configured list */ + for( cur = ssl->conf->alpn_list; *cur != NULL; cur++ ) + { + if( strlen( *cur ) == alpn_len && + memcmp( p, cur, alpn_len ) == 0 ) + { + ssl->alpn_chosen = *cur; + break; + } + } + } -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) - if( handshake->psk != NULL ) - { - mbedtls_platform_zeroize( handshake->psk, handshake->psk_len ); - mbedtls_free( handshake->psk ); + /* can only happen on conf mismatch */ + if( alpn_len != 0 && ssl->alpn_chosen == NULL ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + + p += alpn_len; } -#endif +#endif /* MBEDTLS_SSL_ALPN */ -#if defined(MBEDTLS_X509_CRT_PARSE_C) && \ - defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) /* - * Free only the linked list wrapper, not the keys themselves - * since the belong to the SNI callback + * Forced fields from top-level ssl_context structure + * + * Most of them already set to the correct value by mbedtls_ssl_init() and + * mbedtls_ssl_reset(), so we only need to set the remaining ones. */ - if( handshake->sni_key_cert != NULL ) - { - mbedtls_ssl_key_cert *cur = handshake->sni_key_cert, *next; + ssl->state = MBEDTLS_SSL_HANDSHAKE_OVER; - while( cur != NULL ) - { - next = cur->next; - mbedtls_free( cur ); - cur = next; - } - } -#endif /* MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_SSL_SERVER_NAME_INDICATION */ + ssl->major_ver = MBEDTLS_SSL_MAJOR_VERSION_3; + ssl->minor_ver = MBEDTLS_SSL_MINOR_VERSION_3; -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - mbedtls_x509_crt_restart_free( &handshake->ecrs_ctx ); -#endif + /* Adjust pointers for header fields of outgoing records to + * the given transform, accounting for explicit IV and CID. */ + mbedtls_ssl_update_out_pointers( ssl, ssl->transform ); #if defined(MBEDTLS_SSL_PROTO_DTLS) - mbedtls_free( handshake->verify_cookie ); - ssl_flight_free( handshake->flight ); - ssl_buffering_free( ssl ); + ssl->in_epoch = 1; #endif - mbedtls_platform_zeroize( handshake, - sizeof( mbedtls_ssl_handshake_params ) ); + /* mbedtls_ssl_reset() leaves the handshake sub-structure allocated, + * which we don't want - otherwise we'd end up freeing the wrong transform + * by calling mbedtls_ssl_handshake_wrapup_free_hs_transform() + * inappropriately. */ + if( ssl->handshake != NULL ) + { + mbedtls_ssl_handshake_free( ssl ); + mbedtls_free( ssl->handshake ); + ssl->handshake = NULL; + } + + /* + * Done - should have consumed entire buffer + */ + if( p != end ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + + return( 0 ); } -void mbedtls_ssl_session_free( mbedtls_ssl_session *session ) +/* + * Deserialize context: public wrapper for error cleaning + */ +int mbedtls_ssl_context_load( mbedtls_ssl_context *context, + const unsigned char *buf, + size_t len ) { - if( session == NULL ) - return; - -#if defined(MBEDTLS_X509_CRT_PARSE_C) - if( session->peer_cert != NULL ) - { - mbedtls_x509_crt_free( session->peer_cert ); - mbedtls_free( session->peer_cert ); - } -#endif + int ret = ssl_context_load( context, buf, len ); -#if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C) - mbedtls_free( session->ticket ); -#endif + if( ret != 0 ) + mbedtls_ssl_free( context ); - mbedtls_platform_zeroize( session, sizeof( mbedtls_ssl_session ) ); + return( ret ); } +#endif /* MBEDTLS_SSL_CONTEXT_SERIALIZATION */ /* * Free an SSL context @@ -8935,14 +6801,28 @@ void mbedtls_ssl_free( mbedtls_ssl_context *ssl ) if( ssl->out_buf != NULL ) { - mbedtls_platform_zeroize( ssl->out_buf, MBEDTLS_SSL_OUT_BUFFER_LEN ); +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + size_t out_buf_len = ssl->out_buf_len; +#else + size_t out_buf_len = MBEDTLS_SSL_OUT_BUFFER_LEN; +#endif + + mbedtls_platform_zeroize( ssl->out_buf, out_buf_len ); mbedtls_free( ssl->out_buf ); + ssl->out_buf = NULL; } if( ssl->in_buf != NULL ) { - mbedtls_platform_zeroize( ssl->in_buf, MBEDTLS_SSL_IN_BUFFER_LEN ); +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + size_t in_buf_len = ssl->in_buf_len; +#else + size_t in_buf_len = MBEDTLS_SSL_IN_BUFFER_LEN; +#endif + + mbedtls_platform_zeroize( ssl->in_buf, in_buf_len ); mbedtls_free( ssl->in_buf ); + ssl->in_buf = NULL; } #if defined(MBEDTLS_ZLIB_SUPPORT) @@ -9010,10 +6890,12 @@ void mbedtls_ssl_config_init( mbedtls_ssl_config *conf ) memset( conf, 0, sizeof( mbedtls_ssl_config ) ); } -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) static int ssl_preset_default_hashes[] = { #if defined(MBEDTLS_SHA512_C) MBEDTLS_MD_SHA512, +#endif +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) MBEDTLS_MD_SHA384, #endif #if defined(MBEDTLS_SHA256_C) @@ -9033,7 +6915,7 @@ static int ssl_preset_suiteb_ciphersuites[] = { 0 }; -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) static int ssl_preset_suiteb_hashes[] = { MBEDTLS_MD_SHA256, MBEDTLS_MD_SHA384, @@ -9043,8 +6925,12 @@ static int ssl_preset_suiteb_hashes[] = { #if defined(MBEDTLS_ECP_C) static mbedtls_ecp_group_id ssl_preset_suiteb_curves[] = { +#if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) MBEDTLS_ECP_DP_SECP256R1, +#endif +#if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) MBEDTLS_ECP_DP_SECP384R1, +#endif MBEDTLS_ECP_DP_NONE }; #endif @@ -9056,7 +6942,7 @@ int mbedtls_ssl_config_defaults( mbedtls_ssl_config *conf, int endpoint, int transport, int preset ) { #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_SRV_C) - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; #endif /* Use the functions here so that they are covered in tests, @@ -9158,7 +7044,7 @@ int mbedtls_ssl_config_defaults( mbedtls_ssl_config *conf, conf->cert_profile = &mbedtls_x509_crt_profile_suiteb; #endif -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) conf->sig_hashes = ssl_preset_suiteb_hashes; #endif @@ -9197,7 +7083,7 @@ int mbedtls_ssl_config_defaults( mbedtls_ssl_config *conf, conf->cert_profile = &mbedtls_x509_crt_profile_default; #endif -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) conf->sig_hashes = ssl_preset_default_hashes; #endif @@ -9223,7 +7109,7 @@ void mbedtls_ssl_config_free( mbedtls_ssl_config *conf ) mbedtls_mpi_free( &conf->dhm_G ); #endif -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) if( conf->psk != NULL ) { mbedtls_platform_zeroize( conf->psk, conf->psk_len ); @@ -9298,7 +7184,7 @@ mbedtls_pk_type_t mbedtls_ssl_pk_alg_from_sig( unsigned char sig ) #endif /* MBEDTLS_PK_C && ( MBEDTLS_RSA_C || MBEDTLS_ECDSA_C ) */ #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) /* Find an entry in a signature-hash set matching a given hash algorithm. */ mbedtls_md_type_t mbedtls_ssl_sig_hash_set_find( mbedtls_ssl_sig_hash_set_t *set, @@ -9346,7 +7232,7 @@ void mbedtls_ssl_sig_hash_set_const_hash( mbedtls_ssl_sig_hash_set_t *set, } #endif /* MBEDTLS_SSL_PROTO_TLS1_2) && - MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ + MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ /* * Convert from MBEDTLS_SSL_HASH_XXX to MBEDTLS_MD_XXX @@ -9369,9 +7255,11 @@ mbedtls_md_type_t mbedtls_ssl_md_alg_from_hash( unsigned char hash ) case MBEDTLS_SSL_HASH_SHA256: return( MBEDTLS_MD_SHA256 ); #endif -#if defined(MBEDTLS_SHA512_C) +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) case MBEDTLS_SSL_HASH_SHA384: return( MBEDTLS_MD_SHA384 ); +#endif +#if defined(MBEDTLS_SHA512_C) case MBEDTLS_SSL_HASH_SHA512: return( MBEDTLS_MD_SHA512 ); #endif @@ -9401,9 +7289,11 @@ unsigned char mbedtls_ssl_hash_from_md_alg( int md ) case MBEDTLS_MD_SHA256: return( MBEDTLS_SSL_HASH_SHA256 ); #endif -#if defined(MBEDTLS_SHA512_C) +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) case MBEDTLS_MD_SHA384: return( MBEDTLS_SSL_HASH_SHA384 ); +#endif +#if defined(MBEDTLS_SHA512_C) case MBEDTLS_MD_SHA512: return( MBEDTLS_SSL_HASH_SHA512 ); #endif @@ -9432,7 +7322,7 @@ int mbedtls_ssl_check_curve( const mbedtls_ssl_context *ssl, mbedtls_ecp_group_i } #endif /* MBEDTLS_ECP_C */ -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) /* * Check if a hash proposed by the peer is in our list. * Return 0 if we're willing to use it, -1 otherwise. @@ -9451,7 +7341,7 @@ int mbedtls_ssl_check_sig_hash( const mbedtls_ssl_context *ssl, return( -1 ); } -#endif /* MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ #if defined(MBEDTLS_X509_CRT_PARSE_C) int mbedtls_ssl_check_cert_usage( const mbedtls_x509_crt *cert, @@ -9544,59 +7434,6 @@ int mbedtls_ssl_check_cert_usage( const mbedtls_x509_crt *cert, } #endif /* MBEDTLS_X509_CRT_PARSE_C */ -/* - * Convert version numbers to/from wire format - * and, for DTLS, to/from TLS equivalent. - * - * For TLS this is the identity. - * For DTLS, use 1's complement (v -> 255 - v, and then map as follows: - * 1.0 <-> 3.2 (DTLS 1.0 is based on TLS 1.1) - * 1.x <-> 3.x+1 for x != 0 (DTLS 1.2 based on TLS 1.2) - */ -void mbedtls_ssl_write_version( int major, int minor, int transport, - unsigned char ver[2] ) -{ -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - if( minor == MBEDTLS_SSL_MINOR_VERSION_2 ) - --minor; /* DTLS 1.0 stored as TLS 1.1 internally */ - - ver[0] = (unsigned char)( 255 - ( major - 2 ) ); - ver[1] = (unsigned char)( 255 - ( minor - 1 ) ); - } - else -#else - ((void) transport); -#endif - { - ver[0] = (unsigned char) major; - ver[1] = (unsigned char) minor; - } -} - -void mbedtls_ssl_read_version( int *major, int *minor, int transport, - const unsigned char ver[2] ) -{ -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - *major = 255 - ver[0] + 2; - *minor = 255 - ver[1] + 1; - - if( *minor == MBEDTLS_SSL_MINOR_VERSION_1 ) - ++*minor; /* DTLS 1.0 stored as TLS 1.1 internally */ - } - else -#else - ((void) transport); -#endif - { - *major = ver[0]; - *minor = ver[1]; - } -} - int mbedtls_ssl_set_calc_verify_md( mbedtls_ssl_context *ssl, int md ) { #if defined(MBEDTLS_SSL_PROTO_TLS1_2) @@ -9616,7 +7453,7 @@ int mbedtls_ssl_set_calc_verify_md( mbedtls_ssl_context *ssl, int md ) break; #endif #endif /* MBEDTLS_SSL_PROTO_TLS1 || MBEDTLS_SSL_PROTO_TLS1_1 */ -#if defined(MBEDTLS_SHA512_C) +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_SHA512_NO_SHA384) case MBEDTLS_SSL_HASH_SHA384: ssl->handshake->calc_verify = ssl_calc_verify_tls_sha384; break; @@ -9727,6 +7564,70 @@ int mbedtls_ssl_get_key_exchange_md_ssl_tls( mbedtls_ssl_context *ssl, #if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ defined(MBEDTLS_SSL_PROTO_TLS1_2) + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +int mbedtls_ssl_get_key_exchange_md_tls1_2( mbedtls_ssl_context *ssl, + unsigned char *hash, size_t *hashlen, + unsigned char *data, size_t data_len, + mbedtls_md_type_t md_alg ) +{ + psa_status_t status; + psa_hash_operation_t hash_operation = PSA_HASH_OPERATION_INIT; + psa_algorithm_t hash_alg = mbedtls_psa_translate_md( md_alg ); + + MBEDTLS_SSL_DEBUG_MSG( 3, ( "Perform PSA-based computation of digest of ServerKeyExchange" ) ); + + if( ( status = psa_hash_setup( &hash_operation, + hash_alg ) ) != PSA_SUCCESS ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "psa_hash_setup", status ); + goto exit; + } + + if( ( status = psa_hash_update( &hash_operation, ssl->handshake->randbytes, + 64 ) ) != PSA_SUCCESS ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "psa_hash_update", status ); + goto exit; + } + + if( ( status = psa_hash_update( &hash_operation, + data, data_len ) ) != PSA_SUCCESS ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "psa_hash_update", status ); + goto exit; + } + + if( ( status = psa_hash_finish( &hash_operation, hash, PSA_HASH_MAX_SIZE, + hashlen ) ) != PSA_SUCCESS ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "psa_hash_finish", status ); + goto exit; + } + +exit: + if( status != PSA_SUCCESS ) + { + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_INTERNAL_ERROR ); + switch( status ) + { + case PSA_ERROR_NOT_SUPPORTED: + return( MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE ); + case PSA_ERROR_BAD_STATE: /* Intentional fallthrough */ + case PSA_ERROR_BUFFER_TOO_SMALL: + return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); + case PSA_ERROR_INSUFFICIENT_MEMORY: + return( MBEDTLS_ERR_MD_ALLOC_FAILED ); + default: + return( MBEDTLS_ERR_MD_HW_ACCEL_FAILED ); + } + } + return( 0 ); +} + +#else + int mbedtls_ssl_get_key_exchange_md_tls1_2( mbedtls_ssl_context *ssl, unsigned char *hash, size_t *hashlen, unsigned char *data, size_t data_len, @@ -9737,6 +7638,8 @@ int mbedtls_ssl_get_key_exchange_md_tls1_2( mbedtls_ssl_context *ssl, const mbedtls_md_info_t *md_info = mbedtls_md_info_from_type( md_alg ); *hashlen = mbedtls_md_get_size( md_info ); + MBEDTLS_SSL_DEBUG_MSG( 3, ( "Perform mbedtls-based computation of digest of ServerKeyExchange" ) ); + mbedtls_md_init( &ctx ); /* @@ -9781,6 +7684,8 @@ int mbedtls_ssl_get_key_exchange_md_tls1_2( mbedtls_ssl_context *ssl, return( ret ); } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + #endif /* MBEDTLS_SSL_PROTO_TLS1 || MBEDTLS_SSL_PROTO_TLS1_1 || \ MBEDTLS_SSL_PROTO_TLS1_2 */ diff --git a/Externals/mbedtls/library/ssl_tls13_keys.c b/Externals/mbedtls/library/ssl_tls13_keys.c new file mode 100644 index 000000000000..3de6f03fb8aa --- /dev/null +++ b/Externals/mbedtls/library/ssl_tls13_keys.c @@ -0,0 +1,349 @@ +/* + * TLS 1.3 key schedule + * + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 ( the "License" ); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common.h" + +#if defined(MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL) + +#include "mbedtls/hkdf.h" +#include "mbedtls/ssl_internal.h" +#include "ssl_tls13_keys.h" + +#include +#include + +#define MBEDTLS_SSL_TLS1_3_LABEL( name, string ) \ + .name = string, + +struct mbedtls_ssl_tls1_3_labels_struct const mbedtls_ssl_tls1_3_labels = +{ + /* This seems to work in C, despite the string literal being one + * character too long due to the 0-termination. */ + MBEDTLS_SSL_TLS1_3_LABEL_LIST +}; + +#undef MBEDTLS_SSL_TLS1_3_LABEL + +/* + * This function creates a HkdfLabel structure used in the TLS 1.3 key schedule. + * + * The HkdfLabel is specified in RFC 8446 as follows: + * + * struct HkdfLabel { + * uint16 length; // Length of expanded key material + * opaque label<7..255>; // Always prefixed by "tls13 " + * opaque context<0..255>; // Usually a communication transcript hash + * }; + * + * Parameters: + * - desired_length: Length of expanded key material + * Even though the standard allows expansion to up to + * 2**16 Bytes, TLS 1.3 never uses expansion to more than + * 255 Bytes, so we require `desired_length` to be at most + * 255. This allows us to save a few Bytes of code by + * hardcoding the writing of the high bytes. + * - (label, llen): label + label length, without "tls13 " prefix + * The label length MUST be less than or equal to + * MBEDTLS_SSL_TLS1_3_KEY_SCHEDULE_MAX_LABEL_LEN + * It is the caller's responsibility to ensure this. + * All (label, label length) pairs used in TLS 1.3 + * can be obtained via MBEDTLS_SSL_TLS1_3_LBL_WITH_LEN(). + * - (ctx, clen): context + context length + * The context length MUST be less than or equal to + * MBEDTLS_SSL_TLS1_3_KEY_SCHEDULE_MAX_CONTEXT_LEN + * It is the caller's responsibility to ensure this. + * - dst: Target buffer for HkdfLabel structure, + * This MUST be a writable buffer of size + * at least SSL_TLS1_3_KEY_SCHEDULE_MAX_HKDF_LABEL_LEN Bytes. + * - dlen: Pointer at which to store the actual length of + * the HkdfLabel structure on success. + */ + +static const char tls1_3_label_prefix[6] = "tls13 "; + +#define SSL_TLS1_3_KEY_SCHEDULE_HKDF_LABEL_LEN( label_len, context_len ) \ + ( 2 /* expansion length */ \ + + 1 /* label length */ \ + + label_len \ + + 1 /* context length */ \ + + context_len ) + +#define SSL_TLS1_3_KEY_SCHEDULE_MAX_HKDF_LABEL_LEN \ + SSL_TLS1_3_KEY_SCHEDULE_HKDF_LABEL_LEN( \ + sizeof(tls1_3_label_prefix) + \ + MBEDTLS_SSL_TLS1_3_KEY_SCHEDULE_MAX_LABEL_LEN, \ + MBEDTLS_SSL_TLS1_3_KEY_SCHEDULE_MAX_CONTEXT_LEN ) + +static void ssl_tls1_3_hkdf_encode_label( + size_t desired_length, + const unsigned char *label, size_t llen, + const unsigned char *ctx, size_t clen, + unsigned char *dst, size_t *dlen ) +{ + size_t total_label_len = + sizeof(tls1_3_label_prefix) + llen; + size_t total_hkdf_lbl_len = + SSL_TLS1_3_KEY_SCHEDULE_HKDF_LABEL_LEN( total_label_len, clen ); + + unsigned char *p = dst; + + /* Add the size of the expanded key material. + * We're hardcoding the high byte to 0 here assuming that we never use + * TLS 1.3 HKDF key expansion to more than 255 Bytes. */ +#if MBEDTLS_SSL_TLS1_3_KEY_SCHEDULE_MAX_EXPANSION_LEN > 255 +#error "The implementation of ssl_tls1_3_hkdf_encode_label() is not fit for the \ + value of MBEDTLS_SSL_TLS1_3_KEY_SCHEDULE_MAX_EXPANSION_LEN" +#endif + + *p++ = 0; + *p++ = MBEDTLS_BYTE_0( desired_length ); + + /* Add label incl. prefix */ + *p++ = MBEDTLS_BYTE_0( total_label_len ); + memcpy( p, tls1_3_label_prefix, sizeof(tls1_3_label_prefix) ); + p += sizeof(tls1_3_label_prefix); + memcpy( p, label, llen ); + p += llen; + + /* Add context value */ + *p++ = MBEDTLS_BYTE_0( clen ); + if( clen != 0 ) + memcpy( p, ctx, clen ); + + /* Return total length to the caller. */ + *dlen = total_hkdf_lbl_len; +} + +int mbedtls_ssl_tls1_3_hkdf_expand_label( + mbedtls_md_type_t hash_alg, + const unsigned char *secret, size_t slen, + const unsigned char *label, size_t llen, + const unsigned char *ctx, size_t clen, + unsigned char *buf, size_t blen ) +{ + const mbedtls_md_info_t *md; + unsigned char hkdf_label[ SSL_TLS1_3_KEY_SCHEDULE_MAX_HKDF_LABEL_LEN ]; + size_t hkdf_label_len; + + if( llen > MBEDTLS_SSL_TLS1_3_KEY_SCHEDULE_MAX_LABEL_LEN ) + { + /* Should never happen since this is an internal + * function, and we know statically which labels + * are allowed. */ + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + if( clen > MBEDTLS_SSL_TLS1_3_KEY_SCHEDULE_MAX_CONTEXT_LEN ) + { + /* Should not happen, as above. */ + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + if( blen > MBEDTLS_SSL_TLS1_3_KEY_SCHEDULE_MAX_EXPANSION_LEN ) + { + /* Should not happen, as above. */ + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + md = mbedtls_md_info_from_type( hash_alg ); + if( md == NULL ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + + ssl_tls1_3_hkdf_encode_label( blen, + label, llen, + ctx, clen, + hkdf_label, + &hkdf_label_len ); + + return( mbedtls_hkdf_expand( md, + secret, slen, + hkdf_label, hkdf_label_len, + buf, blen ) ); +} + +/* + * The traffic keying material is generated from the following inputs: + * + * - One secret value per sender. + * - A purpose value indicating the specific value being generated + * - The desired lengths of key and IV. + * + * The expansion itself is based on HKDF: + * + * [sender]_write_key = HKDF-Expand-Label( Secret, "key", "", key_length ) + * [sender]_write_iv = HKDF-Expand-Label( Secret, "iv" , "", iv_length ) + * + * [sender] denotes the sending side and the Secret value is provided + * by the function caller. Note that we generate server and client side + * keys in a single function call. + */ +int mbedtls_ssl_tls1_3_make_traffic_keys( + mbedtls_md_type_t hash_alg, + const unsigned char *client_secret, + const unsigned char *server_secret, + size_t slen, size_t key_len, size_t iv_len, + mbedtls_ssl_key_set *keys ) +{ + int ret = 0; + + ret = mbedtls_ssl_tls1_3_hkdf_expand_label( hash_alg, + client_secret, slen, + MBEDTLS_SSL_TLS1_3_LBL_WITH_LEN( key ), + NULL, 0, + keys->client_write_key, key_len ); + if( ret != 0 ) + return( ret ); + + ret = mbedtls_ssl_tls1_3_hkdf_expand_label( hash_alg, + server_secret, slen, + MBEDTLS_SSL_TLS1_3_LBL_WITH_LEN( key ), + NULL, 0, + keys->server_write_key, key_len ); + if( ret != 0 ) + return( ret ); + + ret = mbedtls_ssl_tls1_3_hkdf_expand_label( hash_alg, + client_secret, slen, + MBEDTLS_SSL_TLS1_3_LBL_WITH_LEN( iv ), + NULL, 0, + keys->client_write_iv, iv_len ); + if( ret != 0 ) + return( ret ); + + ret = mbedtls_ssl_tls1_3_hkdf_expand_label( hash_alg, + server_secret, slen, + MBEDTLS_SSL_TLS1_3_LBL_WITH_LEN( iv ), + NULL, 0, + keys->server_write_iv, iv_len ); + if( ret != 0 ) + return( ret ); + + keys->key_len = key_len; + keys->iv_len = iv_len; + + return( 0 ); +} + +int mbedtls_ssl_tls1_3_derive_secret( + mbedtls_md_type_t hash_alg, + const unsigned char *secret, size_t slen, + const unsigned char *label, size_t llen, + const unsigned char *ctx, size_t clen, + int ctx_hashed, + unsigned char *dstbuf, size_t buflen ) +{ + int ret; + unsigned char hashed_context[ MBEDTLS_MD_MAX_SIZE ]; + + const mbedtls_md_info_t *md; + md = mbedtls_md_info_from_type( hash_alg ); + if( md == NULL ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + + if( ctx_hashed == MBEDTLS_SSL_TLS1_3_CONTEXT_UNHASHED ) + { + ret = mbedtls_md( md, ctx, clen, hashed_context ); + if( ret != 0 ) + return( ret ); + clen = mbedtls_md_get_size( md ); + } + else + { + if( clen > sizeof(hashed_context) ) + { + /* This should never happen since this function is internal + * and the code sets `ctx_hashed` correctly. + * Let's double-check nonetheless to not run at the risk + * of getting a stack overflow. */ + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + memcpy( hashed_context, ctx, clen ); + } + + return( mbedtls_ssl_tls1_3_hkdf_expand_label( hash_alg, + secret, slen, + label, llen, + hashed_context, clen, + dstbuf, buflen ) ); +} + +int mbedtls_ssl_tls1_3_evolve_secret( + mbedtls_md_type_t hash_alg, + const unsigned char *secret_old, + const unsigned char *input, size_t input_len, + unsigned char *secret_new ) +{ + int ret = MBEDTLS_ERR_SSL_INTERNAL_ERROR; + size_t hlen, ilen; + unsigned char tmp_secret[ MBEDTLS_MD_MAX_SIZE ] = { 0 }; + unsigned char tmp_input [ MBEDTLS_MD_MAX_SIZE ] = { 0 }; + + const mbedtls_md_info_t *md; + md = mbedtls_md_info_from_type( hash_alg ); + if( md == NULL ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + + hlen = mbedtls_md_get_size( md ); + + /* For non-initial runs, call Derive-Secret( ., "derived", "") + * on the old secret. */ + if( secret_old != NULL ) + { + ret = mbedtls_ssl_tls1_3_derive_secret( + hash_alg, + secret_old, hlen, + MBEDTLS_SSL_TLS1_3_LBL_WITH_LEN( derived ), + NULL, 0, /* context */ + MBEDTLS_SSL_TLS1_3_CONTEXT_UNHASHED, + tmp_secret, hlen ); + if( ret != 0 ) + goto cleanup; + } + + if( input != NULL ) + { + memcpy( tmp_input, input, input_len ); + ilen = input_len; + } + else + { + ilen = hlen; + } + + /* HKDF-Extract takes a salt and input key material. + * The salt is the old secret, and the input key material + * is the input secret (PSK / ECDHE). */ + ret = mbedtls_hkdf_extract( md, + tmp_secret, hlen, + tmp_input, ilen, + secret_new ); + if( ret != 0 ) + goto cleanup; + + ret = 0; + + cleanup: + + mbedtls_platform_zeroize( tmp_secret, sizeof(tmp_secret) ); + mbedtls_platform_zeroize( tmp_input, sizeof(tmp_input) ); + return( ret ); +} + +#endif /* MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL */ diff --git a/Externals/mbedtls/library/ssl_tls13_keys.h b/Externals/mbedtls/library/ssl_tls13_keys.h new file mode 100644 index 000000000000..7089049ce2c6 --- /dev/null +++ b/Externals/mbedtls/library/ssl_tls13_keys.h @@ -0,0 +1,274 @@ +/* + * TLS 1.3 key schedule + * + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 ( the "License" ); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#if !defined(MBEDTLS_SSL_TLS1_3_KEYS_H) +#define MBEDTLS_SSL_TLS1_3_KEYS_H + +/* This requires MBEDTLS_SSL_TLS1_3_LABEL( idx, name, string ) to be defined at + * the point of use. See e.g. the definition of mbedtls_ssl_tls1_3_labels_union + * below. */ +#define MBEDTLS_SSL_TLS1_3_LABEL_LIST \ + MBEDTLS_SSL_TLS1_3_LABEL( finished , "finished" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( resumption , "resumption" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( traffic_upd , "traffic upd" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( exporter , "exporter" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( key , "key" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( iv , "iv" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( c_hs_traffic, "c hs traffic" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( c_ap_traffic, "c ap traffic" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( c_e_traffic , "c e traffic" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( s_hs_traffic, "s hs traffic" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( s_ap_traffic, "s ap traffic" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( s_e_traffic , "s e traffic" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( e_exp_master, "e exp master" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( res_master , "res master" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( exp_master , "exp master" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( ext_binder , "ext binder" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( res_binder , "res binder" ) \ + MBEDTLS_SSL_TLS1_3_LABEL( derived , "derived" ) + +#define MBEDTLS_SSL_TLS1_3_LABEL( name, string ) \ + const unsigned char name [ sizeof(string) - 1 ]; + +union mbedtls_ssl_tls1_3_labels_union +{ + MBEDTLS_SSL_TLS1_3_LABEL_LIST +}; +struct mbedtls_ssl_tls1_3_labels_struct +{ + MBEDTLS_SSL_TLS1_3_LABEL_LIST +}; +#undef MBEDTLS_SSL_TLS1_3_LABEL + +extern const struct mbedtls_ssl_tls1_3_labels_struct mbedtls_ssl_tls1_3_labels; + +#define MBEDTLS_SSL_TLS1_3_LBL_WITH_LEN( LABEL ) \ + mbedtls_ssl_tls1_3_labels.LABEL, \ + sizeof(mbedtls_ssl_tls1_3_labels.LABEL) + +#define MBEDTLS_SSL_TLS1_3_KEY_SCHEDULE_MAX_LABEL_LEN \ + sizeof( union mbedtls_ssl_tls1_3_labels_union ) + +/* The maximum length of HKDF contexts used in the TLS 1.3 standard. + * Since contexts are always hashes of message transcripts, this can + * be approximated from above by the maximum hash size. */ +#define MBEDTLS_SSL_TLS1_3_KEY_SCHEDULE_MAX_CONTEXT_LEN \ + MBEDTLS_MD_MAX_SIZE + +/* Maximum desired length for expanded key material generated + * by HKDF-Expand-Label. + * + * Warning: If this ever needs to be increased, the implementation + * ssl_tls1_3_hkdf_encode_label() in ssl_tls13_keys.c needs to be + * adjusted since it currently assumes that HKDF key expansion + * is never used with more than 255 Bytes of output. */ +#define MBEDTLS_SSL_TLS1_3_KEY_SCHEDULE_MAX_EXPANSION_LEN 255 + +/** + * \brief The \c HKDF-Expand-Label function from + * the TLS 1.3 standard RFC 8446. + * + * + * HKDF-Expand-Label( Secret, Label, Context, Length ) = + * HKDF-Expand( Secret, HkdfLabel, Length ) + * + * + * \param hash_alg The identifier for the hash algorithm to use. + * \param secret The \c Secret argument to \c HKDF-Expand-Label. + * This must be a readable buffer of length \p slen Bytes. + * \param slen The length of \p secret in Bytes. + * \param label The \c Label argument to \c HKDF-Expand-Label. + * This must be a readable buffer of length \p llen Bytes. + * \param llen The length of \p label in Bytes. + * \param ctx The \c Context argument to \c HKDF-Expand-Label. + * This must be a readable buffer of length \p clen Bytes. + * \param clen The length of \p context in Bytes. + * \param buf The destination buffer to hold the expanded secret. + * This must be a writable buffer of length \p blen Bytes. + * \param blen The desired size of the expanded secret in Bytes. + * + * \returns \c 0 on success. + * \return A negative error code on failure. + */ + +int mbedtls_ssl_tls1_3_hkdf_expand_label( + mbedtls_md_type_t hash_alg, + const unsigned char *secret, size_t slen, + const unsigned char *label, size_t llen, + const unsigned char *ctx, size_t clen, + unsigned char *buf, size_t blen ); + +/** + * \brief This function is part of the TLS 1.3 key schedule. + * It extracts key and IV for the actual client/server traffic + * from the client/server traffic secrets. + * + * From RFC 8446: + * + * + * [sender]_write_key = HKDF-Expand-Label(Secret, "key", "", key_length) + * [sender]_write_iv = HKDF-Expand-Label(Secret, "iv", "", iv_length)* + * + * + * \param hash_alg The identifier for the hash algorithm to be used + * for the HKDF-based expansion of the secret. + * \param client_secret The client traffic secret. + * This must be a readable buffer of size \p slen Bytes + * \param server_secret The server traffic secret. + * This must be a readable buffer of size \p slen Bytes + * \param slen Length of the secrets \p client_secret and + * \p server_secret in Bytes. + * \param key_len The desired length of the key to be extracted in Bytes. + * \param iv_len The desired length of the IV to be extracted in Bytes. + * \param keys The address of the structure holding the generated + * keys and IVs. + * + * \returns \c 0 on success. + * \returns A negative error code on failure. + */ + +int mbedtls_ssl_tls1_3_make_traffic_keys( + mbedtls_md_type_t hash_alg, + const unsigned char *client_secret, + const unsigned char *server_secret, + size_t slen, size_t key_len, size_t iv_len, + mbedtls_ssl_key_set *keys ); + + +#define MBEDTLS_SSL_TLS1_3_CONTEXT_UNHASHED 0 +#define MBEDTLS_SSL_TLS1_3_CONTEXT_HASHED 1 + +/** + * \brief The \c Derive-Secret function from the TLS 1.3 standard RFC 8446. + * + * + * Derive-Secret( Secret, Label, Messages ) = + * HKDF-Expand-Label( Secret, Label, + * Hash( Messages ), + * Hash.Length ) ) + * + * + * \param hash_alg The identifier for the hash function used for the + * applications of HKDF. + * \param secret The \c Secret argument to the \c Derive-Secret function. + * This must be a readable buffer of length \p slen Bytes. + * \param slen The length of \p secret in Bytes. + * \param label The \c Label argument to the \c Derive-Secret function. + * This must be a readable buffer of length \p llen Bytes. + * \param llen The length of \p label in Bytes. + * \param ctx The hash of the \c Messages argument to the + * \c Derive-Secret function, or the \c Messages argument + * itself, depending on \p context_already_hashed. + * \param clen The length of \p hash. + * \param ctx_hashed This indicates whether the \p ctx contains the hash of + * the \c Messages argument in the application of the + * \c Derive-Secret function + * (value MBEDTLS_SSL_TLS1_3_CONTEXT_HASHED), or whether + * it is the content of \c Messages itself, in which case + * the function takes care of the hashing + * (value MBEDTLS_SSL_TLS1_3_CONTEXT_UNHASHED). + * \param dstbuf The target buffer to write the output of + * \c Derive-Secret to. This must be a writable buffer of + * size \p buflen Bytes. + * \param buflen The length of \p dstbuf in Bytes. + * + * \returns \c 0 on success. + * \returns A negative error code on failure. + */ +int mbedtls_ssl_tls1_3_derive_secret( + mbedtls_md_type_t hash_alg, + const unsigned char *secret, size_t slen, + const unsigned char *label, size_t llen, + const unsigned char *ctx, size_t clen, + int ctx_hashed, + unsigned char *dstbuf, size_t buflen ); + +/** + * \brief Compute the next secret in the TLS 1.3 key schedule + * + * The TLS 1.3 key schedule proceeds as follows to compute + * the three main secrets during the handshake: The early + * secret for early data, the handshake secret for all + * other encrypted handshake messages, and the master + * secret for all application traffic. + * + * + * 0 + * | + * v + * PSK -> HKDF-Extract = Early Secret + * | + * v + * Derive-Secret( ., "derived", "" ) + * | + * v + * (EC)DHE -> HKDF-Extract = Handshake Secret + * | + * v + * Derive-Secret( ., "derived", "" ) + * | + * v + * 0 -> HKDF-Extract = Master Secret + * + * + * Each of the three secrets in turn is the basis for further + * key derivations, such as the derivation of traffic keys and IVs; + * see e.g. mbedtls_ssl_tls1_3_make_traffic_keys(). + * + * This function implements one step in this evolution of secrets: + * + * + * old_secret + * | + * v + * Derive-Secret( ., "derived", "" ) + * | + * v + * input -> HKDF-Extract = new_secret + * + * + * \param hash_alg The identifier for the hash function used for the + * applications of HKDF. + * \param secret_old The address of the buffer holding the old secret + * on function entry. If not \c NULL, this must be a + * readable buffer whose size matches the output size + * of the hash function represented by \p hash_alg. + * If \c NULL, an all \c 0 array will be used instead. + * \param input The address of the buffer holding the additional + * input for the key derivation (e.g., the PSK or the + * ephemeral (EC)DH secret). If not \c NULL, this must be + * a readable buffer whose size \p input_len Bytes. + * If \c NULL, an all \c 0 array will be used instead. + * \param input_len The length of \p input in Bytes. + * \param secret_new The address of the buffer holding the new secret + * on function exit. This must be a writable buffer + * whose size matches the output size of the hash + * function represented by \p hash_alg. + * This may be the same as \p secret_old. + * + * \returns \c 0 on success. + * \returns A negative error code on failure. + */ + +int mbedtls_ssl_tls1_3_evolve_secret( + mbedtls_md_type_t hash_alg, + const unsigned char *secret_old, + const unsigned char *input, size_t input_len, + unsigned char *secret_new ); + +#endif /* MBEDTLS_SSL_TLS1_3_KEYS_H */ diff --git a/Externals/mbedtls/library/threading.c b/Externals/mbedtls/library/threading.c index 7c90c7c5951d..2de117f52a30 100644 --- a/Externals/mbedtls/library/threading.c +++ b/Externals/mbedtls/library/threading.c @@ -1,7 +1,7 @@ /* * Threading abstraction layer * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* @@ -27,11 +25,7 @@ #define _POSIX_C_SOURCE 200112L #endif -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_THREADING_C) @@ -48,7 +42,7 @@ #if !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ - _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) + _POSIX_THREAD_SAFE_FUNCTIONS >= 200112L ) ) /* * This is a convenience shorthand macro to avoid checking the long * preprocessor conditions above. Ideally, we could expose this macro in @@ -63,7 +57,7 @@ #endif /* !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ - _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) */ + _POSIX_THREAD_SAFE_FUNCTIONS >= 200112L ) ) */ #endif /* MBEDTLS_HAVE_TIME_DATE && !MBEDTLS_PLATFORM_GMTIME_R_ALT */ @@ -73,6 +67,12 @@ static void threading_mutex_init_pthread( mbedtls_threading_mutex_t *mutex ) if( mutex == NULL ) return; + /* A nonzero value of is_valid indicates a successfully initialized + * mutex. This is a workaround for not being able to return an error + * code for this function. The lock/unlock functions return an error + * if is_valid is nonzero. The Mbed TLS unit test code uses this field + * to distinguish more states of the mutex; see + * tests/src/threading_helpers for details. */ mutex->is_valid = pthread_mutex_init( &mutex->mutex, NULL ) == 0; } diff --git a/Externals/mbedtls/library/timing.c b/Externals/mbedtls/library/timing.c index 413d133fb6d5..eb41461320be 100644 --- a/Externals/mbedtls/library/timing.c +++ b/Externals/mbedtls/library/timing.c @@ -1,7 +1,7 @@ /* * Portable interface to the CPU cycle counter * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,15 +15,9 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_PLATFORM_C) #include "mbedtls/platform.h" @@ -40,7 +34,7 @@ #if !defined(unix) && !defined(__unix__) && !defined(__unix) && \ !defined(__APPLE__) && !defined(_WIN32) && !defined(__QNXNTO__) && \ - !defined(__HAIKU__) + !defined(__HAIKU__) && !defined(__midipix__) #error "This module only works on Unix and Windows, see MBEDTLS_TIMING_C in config.h" #endif @@ -51,7 +45,6 @@ #if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) #include -#include #include struct _hr_time diff --git a/Externals/mbedtls/library/version.c b/Externals/mbedtls/library/version.c index fd967508850b..32a0d7d584f0 100644 --- a/Externals/mbedtls/library/version.c +++ b/Externals/mbedtls/library/version.c @@ -1,7 +1,7 @@ /* * Version information * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,15 +15,9 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_VERSION_C) diff --git a/Externals/mbedtls/library/version_features.c b/Externals/mbedtls/library/version_features.c index 24143d052c36..40c95201bc24 100644 --- a/Externals/mbedtls/library/version_features.c +++ b/Externals/mbedtls/library/version_features.c @@ -1,7 +1,7 @@ /* * Version feature information * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,15 +15,9 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_VERSION_C) @@ -31,7 +25,7 @@ #include -static const char *features[] = { +static const char * const features[] = { #if defined(MBEDTLS_VERSION_FEATURES) #if defined(MBEDTLS_HAVE_ASM) "MBEDTLS_HAVE_ASM", @@ -72,6 +66,9 @@ static const char *features[] = { #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) "MBEDTLS_PLATFORM_SNPRINTF_ALT", #endif /* MBEDTLS_PLATFORM_SNPRINTF_ALT */ +#if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT) + "MBEDTLS_PLATFORM_VSNPRINTF_ALT", +#endif /* MBEDTLS_PLATFORM_VSNPRINTF_ALT */ #if defined(MBEDTLS_PLATFORM_NV_SEED_ALT) "MBEDTLS_PLATFORM_NV_SEED_ALT", #endif /* MBEDTLS_PLATFORM_NV_SEED_ALT */ @@ -87,6 +84,9 @@ static const char *features[] = { #if defined(MBEDTLS_CHECK_PARAMS) "MBEDTLS_CHECK_PARAMS", #endif /* MBEDTLS_CHECK_PARAMS */ +#if defined(MBEDTLS_CHECK_PARAMS_ASSERT) + "MBEDTLS_CHECK_PARAMS_ASSERT", +#endif /* MBEDTLS_CHECK_PARAMS_ASSERT */ #if defined(MBEDTLS_TIMING_ALT) "MBEDTLS_TIMING_ALT", #endif /* MBEDTLS_TIMING_ALT */ @@ -225,6 +225,9 @@ static const char *features[] = { #if defined(MBEDTLS_ECP_INTERNAL_ALT) "MBEDTLS_ECP_INTERNAL_ALT", #endif /* MBEDTLS_ECP_INTERNAL_ALT */ +#if defined(MBEDTLS_ECP_NO_FALLBACK) + "MBEDTLS_ECP_NO_FALLBACK", +#endif /* MBEDTLS_ECP_NO_FALLBACK */ #if defined(MBEDTLS_ECP_RANDOMIZE_JAC_ALT) "MBEDTLS_ECP_RANDOMIZE_JAC_ALT", #endif /* MBEDTLS_ECP_RANDOMIZE_JAC_ALT */ @@ -264,6 +267,9 @@ static const char *features[] = { #if defined(MBEDTLS_CAMELLIA_SMALL_MEMORY) "MBEDTLS_CAMELLIA_SMALL_MEMORY", #endif /* MBEDTLS_CAMELLIA_SMALL_MEMORY */ +#if defined(MBEDTLS_CHECK_RETURN_WARNING) + "MBEDTLS_CHECK_RETURN_WARNING", +#endif /* MBEDTLS_CHECK_RETURN_WARNING */ #if defined(MBEDTLS_CIPHER_MODE_CBC) "MBEDTLS_CIPHER_MODE_CBC", #endif /* MBEDTLS_CIPHER_MODE_CBC */ @@ -294,6 +300,9 @@ static const char *features[] = { #if defined(MBEDTLS_CIPHER_PADDING_ZEROS) "MBEDTLS_CIPHER_PADDING_ZEROS", #endif /* MBEDTLS_CIPHER_PADDING_ZEROS */ +#if defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY) + "MBEDTLS_CTR_DRBG_USE_128_BIT_KEY", +#endif /* MBEDTLS_CTR_DRBG_USE_128_BIT_KEY */ #if defined(MBEDTLS_ENABLE_WEAK_CIPHERSUITES) "MBEDTLS_ENABLE_WEAK_CIPHERSUITES", #endif /* MBEDTLS_ENABLE_WEAK_CIPHERSUITES */ @@ -345,9 +354,15 @@ static const char *features[] = { #if defined(MBEDTLS_ECP_NIST_OPTIM) "MBEDTLS_ECP_NIST_OPTIM", #endif /* MBEDTLS_ECP_NIST_OPTIM */ +#if defined(MBEDTLS_ECP_NO_INTERNAL_RNG) + "MBEDTLS_ECP_NO_INTERNAL_RNG", +#endif /* MBEDTLS_ECP_NO_INTERNAL_RNG */ #if defined(MBEDTLS_ECP_RESTARTABLE) "MBEDTLS_ECP_RESTARTABLE", #endif /* MBEDTLS_ECP_RESTARTABLE */ +#if defined(MBEDTLS_ECDH_LEGACY_CONTEXT) + "MBEDTLS_ECDH_LEGACY_CONTEXT", +#endif /* MBEDTLS_ECDH_LEGACY_CONTEXT */ #if defined(MBEDTLS_ECDSA_DETERMINISTIC) "MBEDTLS_ECDSA_DETERMINISTIC", #endif /* MBEDTLS_ECDSA_DETERMINISTIC */ @@ -408,6 +423,9 @@ static const char *features[] = { #if defined(MBEDTLS_ENTROPY_NV_SEED) "MBEDTLS_ENTROPY_NV_SEED", #endif /* MBEDTLS_ENTROPY_NV_SEED */ +#if defined(MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER) + "MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER", +#endif /* MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER */ #if defined(MBEDTLS_MEMORY_DEBUG) "MBEDTLS_MEMORY_DEBUG", #endif /* MBEDTLS_MEMORY_DEBUG */ @@ -423,6 +441,24 @@ static const char *features[] = { #if defined(MBEDTLS_PKCS1_V21) "MBEDTLS_PKCS1_V21", #endif /* MBEDTLS_PKCS1_V21 */ +#if defined(MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS) + "MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS", +#endif /* MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */ +#if defined(MBEDTLS_PSA_CRYPTO_CLIENT) + "MBEDTLS_PSA_CRYPTO_CLIENT", +#endif /* MBEDTLS_PSA_CRYPTO_CLIENT */ +#if defined(MBEDTLS_PSA_CRYPTO_DRIVERS) + "MBEDTLS_PSA_CRYPTO_DRIVERS", +#endif /* MBEDTLS_PSA_CRYPTO_DRIVERS */ +#if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) + "MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG", +#endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */ +#if defined(MBEDTLS_PSA_CRYPTO_SPM) + "MBEDTLS_PSA_CRYPTO_SPM", +#endif /* MBEDTLS_PSA_CRYPTO_SPM */ +#if defined(MBEDTLS_PSA_INJECT_ENTROPY) + "MBEDTLS_PSA_INJECT_ENTROPY", +#endif /* MBEDTLS_PSA_INJECT_ENTROPY */ #if defined(MBEDTLS_RSA_NO_CRT) "MBEDTLS_RSA_NO_CRT", #endif /* MBEDTLS_RSA_NO_CRT */ @@ -432,12 +468,27 @@ static const char *features[] = { #if defined(MBEDTLS_SHA256_SMALLER) "MBEDTLS_SHA256_SMALLER", #endif /* MBEDTLS_SHA256_SMALLER */ +#if defined(MBEDTLS_SHA512_SMALLER) + "MBEDTLS_SHA512_SMALLER", +#endif /* MBEDTLS_SHA512_SMALLER */ +#if defined(MBEDTLS_SHA512_NO_SHA384) + "MBEDTLS_SHA512_NO_SHA384", +#endif /* MBEDTLS_SHA512_NO_SHA384 */ #if defined(MBEDTLS_SSL_ALL_ALERT_MESSAGES) "MBEDTLS_SSL_ALL_ALERT_MESSAGES", #endif /* MBEDTLS_SSL_ALL_ALERT_MESSAGES */ +#if defined(MBEDTLS_SSL_RECORD_CHECKING) + "MBEDTLS_SSL_RECORD_CHECKING", +#endif /* MBEDTLS_SSL_RECORD_CHECKING */ +#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) + "MBEDTLS_SSL_DTLS_CONNECTION_ID", +#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */ #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) "MBEDTLS_SSL_ASYNC_PRIVATE", #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ +#if defined(MBEDTLS_SSL_CONTEXT_SERIALIZATION) + "MBEDTLS_SSL_CONTEXT_SERIALIZATION", +#endif /* MBEDTLS_SSL_CONTEXT_SERIALIZATION */ #if defined(MBEDTLS_SSL_DEBUG_ALL) "MBEDTLS_SSL_DEBUG_ALL", #endif /* MBEDTLS_SSL_DEBUG_ALL */ @@ -450,6 +501,9 @@ static const char *features[] = { #if defined(MBEDTLS_SSL_FALLBACK_SCSV) "MBEDTLS_SSL_FALLBACK_SCSV", #endif /* MBEDTLS_SSL_FALLBACK_SCSV */ +#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) + "MBEDTLS_SSL_KEEP_PEER_CERTIFICATE", +#endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ #if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) "MBEDTLS_SSL_HW_RECORD_ACCEL", #endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ @@ -480,6 +534,9 @@ static const char *features[] = { #if defined(MBEDTLS_SSL_PROTO_TLS1_2) "MBEDTLS_SSL_PROTO_TLS1_2", #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ +#if defined(MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL) + "MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL", +#endif /* MBEDTLS_SSL_PROTO_TLS1_3_EXPERIMENTAL */ #if defined(MBEDTLS_SSL_PROTO_DTLS) "MBEDTLS_SSL_PROTO_DTLS", #endif /* MBEDTLS_SSL_PROTO_DTLS */ @@ -492,6 +549,9 @@ static const char *features[] = { #if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) "MBEDTLS_SSL_DTLS_HELLO_VERIFY", #endif /* MBEDTLS_SSL_DTLS_HELLO_VERIFY */ +#if defined(MBEDTLS_SSL_DTLS_SRTP) + "MBEDTLS_SSL_DTLS_SRTP", +#endif /* MBEDTLS_SSL_DTLS_SRTP */ #if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) "MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE", #endif /* MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE */ @@ -513,12 +573,30 @@ static const char *features[] = { #if defined(MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT) "MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT", #endif /* MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT */ +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + "MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH", +#endif /* MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH */ +#if defined(MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN) + "MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN", +#endif /* MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN */ +#if defined(MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND) + "MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND", +#endif /* MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND */ +#if defined(MBEDTLS_TEST_HOOKS) + "MBEDTLS_TEST_HOOKS", +#endif /* MBEDTLS_TEST_HOOKS */ #if defined(MBEDTLS_THREADING_ALT) "MBEDTLS_THREADING_ALT", #endif /* MBEDTLS_THREADING_ALT */ #if defined(MBEDTLS_THREADING_PTHREAD) "MBEDTLS_THREADING_PTHREAD", #endif /* MBEDTLS_THREADING_PTHREAD */ +#if defined(MBEDTLS_USE_PSA_CRYPTO) + "MBEDTLS_USE_PSA_CRYPTO", +#endif /* MBEDTLS_USE_PSA_CRYPTO */ +#if defined(MBEDTLS_PSA_CRYPTO_CONFIG) + "MBEDTLS_PSA_CRYPTO_CONFIG", +#endif /* MBEDTLS_PSA_CRYPTO_CONFIG */ #if defined(MBEDTLS_VERSION_FEATURES) "MBEDTLS_VERSION_FEATURES", #endif /* MBEDTLS_VERSION_FEATURES */ @@ -528,6 +606,9 @@ static const char *features[] = { #if defined(MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION) "MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION", #endif /* MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION */ +#if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK) + "MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK", +#endif /* MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK */ #if defined(MBEDTLS_X509_CHECK_KEY_USAGE) "MBEDTLS_X509_CHECK_KEY_USAGE", #endif /* MBEDTLS_X509_CHECK_KEY_USAGE */ @@ -687,6 +768,18 @@ static const char *features[] = { #if defined(MBEDTLS_POLY1305_C) "MBEDTLS_POLY1305_C", #endif /* MBEDTLS_POLY1305_C */ +#if defined(MBEDTLS_PSA_CRYPTO_C) + "MBEDTLS_PSA_CRYPTO_C", +#endif /* MBEDTLS_PSA_CRYPTO_C */ +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + "MBEDTLS_PSA_CRYPTO_SE_C", +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ +#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) + "MBEDTLS_PSA_CRYPTO_STORAGE_C", +#endif /* MBEDTLS_PSA_CRYPTO_STORAGE_C */ +#if defined(MBEDTLS_PSA_ITS_FILE_C) + "MBEDTLS_PSA_ITS_FILE_C", +#endif /* MBEDTLS_PSA_ITS_FILE_C */ #if defined(MBEDTLS_RIPEMD160_C) "MBEDTLS_RIPEMD160_C", #endif /* MBEDTLS_RIPEMD160_C */ @@ -759,7 +852,7 @@ static const char *features[] = { int mbedtls_version_check_feature( const char *feature ) { - const char **idx = features; + const char * const *idx = features; if( *idx == NULL ) return( -2 ); diff --git a/Externals/mbedtls/library/x509.c b/Externals/mbedtls/library/x509.c index 52b5b649f704..f21e9e694438 100644 --- a/Externals/mbedtls/library/x509.c +++ b/Externals/mbedtls/library/x509.c @@ -1,7 +1,7 @@ /* * X.509 common functions for parsing and verification * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The ITU-T X.509 standard defines a certificate format for PKI. @@ -29,16 +27,13 @@ * http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_X509_USE_C) #include "mbedtls/x509.h" #include "mbedtls/asn1.h" +#include "mbedtls/error.h" #include "mbedtls/oid.h" #include @@ -67,8 +62,15 @@ #include #endif -#define CHECK(code) if( ( ret = code ) != 0 ){ return( ret ); } -#define CHECK_RANGE(min, max, val) if( val < min || val > max ){ return( ret ); } +#define CHECK(code) if( ( ret = ( code ) ) != 0 ){ return( ret ); } +#define CHECK_RANGE(min, max, val) \ + do \ + { \ + if( ( val ) < ( min ) || ( val ) > ( max ) ) \ + { \ + return( ret ); \ + } \ + } while( 0 ) /* * CertificateSerialNumber ::= INTEGER @@ -76,21 +78,21 @@ int mbedtls_x509_get_serial( unsigned char **p, const unsigned char *end, mbedtls_x509_buf *serial ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ( end - *p ) < 1 ) - return( MBEDTLS_ERR_X509_INVALID_SERIAL + - MBEDTLS_ERR_ASN1_OUT_OF_DATA ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_SERIAL, + MBEDTLS_ERR_ASN1_OUT_OF_DATA ) ); if( **p != ( MBEDTLS_ASN1_CONTEXT_SPECIFIC | MBEDTLS_ASN1_PRIMITIVE | 2 ) && **p != MBEDTLS_ASN1_INTEGER ) - return( MBEDTLS_ERR_X509_INVALID_SERIAL + - MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_SERIAL, + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ); serial->tag = *(*p)++; if( ( ret = mbedtls_asn1_get_len( p, end, &serial->len ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_SERIAL + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_SERIAL, ret ) ); serial->p = *p; *p += serial->len; @@ -107,24 +109,24 @@ int mbedtls_x509_get_serial( unsigned char **p, const unsigned char *end, int mbedtls_x509_get_alg_null( unsigned char **p, const unsigned char *end, mbedtls_x509_buf *alg ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ( ret = mbedtls_asn1_get_alg_null( p, end, alg ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_ALG + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, ret ) ); return( 0 ); } /* - * Parse an algorithm identifier with (optional) paramaters + * Parse an algorithm identifier with (optional) parameters */ int mbedtls_x509_get_alg( unsigned char **p, const unsigned char *end, mbedtls_x509_buf *alg, mbedtls_x509_buf *params ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ( ret = mbedtls_asn1_get_alg( p, end, alg, params ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_ALG + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, ret ) ); return( 0 ); } @@ -141,7 +143,7 @@ int mbedtls_x509_get_alg( unsigned char **p, const unsigned char *end, */ static int x509_get_hash_alg( const mbedtls_x509_buf *alg, mbedtls_md_type_t *md_alg ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *p; const unsigned char *end; mbedtls_x509_buf md_oid; @@ -149,39 +151,39 @@ static int x509_get_hash_alg( const mbedtls_x509_buf *alg, mbedtls_md_type_t *md /* Make sure we got a SEQUENCE and setup bounds */ if( alg->tag != ( MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) - return( MBEDTLS_ERR_X509_INVALID_ALG + - MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ); - p = (unsigned char *) alg->p; + p = alg->p; end = p + alg->len; if( p >= end ) - return( MBEDTLS_ERR_X509_INVALID_ALG + - MBEDTLS_ERR_ASN1_OUT_OF_DATA ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, + MBEDTLS_ERR_ASN1_OUT_OF_DATA ) ); /* Parse md_oid */ md_oid.tag = *p; if( ( ret = mbedtls_asn1_get_tag( &p, end, &md_oid.len, MBEDTLS_ASN1_OID ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_ALG + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, ret ) ); md_oid.p = p; p += md_oid.len; /* Get md_alg from md_oid */ if( ( ret = mbedtls_oid_get_md_alg( &md_oid, md_alg ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_ALG + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, ret ) ); /* Make sure params is absent of NULL */ if( p == end ) return( 0 ); if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, MBEDTLS_ASN1_NULL ) ) != 0 || len != 0 ) - return( MBEDTLS_ERR_X509_INVALID_ALG + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, ret ) ); if( p != end ) - return( MBEDTLS_ERR_X509_INVALID_ALG + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); return( 0 ); } @@ -202,7 +204,7 @@ int mbedtls_x509_get_rsassa_pss_params( const mbedtls_x509_buf *params, mbedtls_md_type_t *md_alg, mbedtls_md_type_t *mgf_md, int *salt_len ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char *p; const unsigned char *end, *end2; size_t len; @@ -215,8 +217,8 @@ int mbedtls_x509_get_rsassa_pss_params( const mbedtls_x509_buf *params, /* Make sure params is a SEQUENCE and setup bounds */ if( params->tag != ( MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) - return( MBEDTLS_ERR_X509_INVALID_ALG + - MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ); p = (unsigned char *) params->p; end = p + params->len; @@ -237,14 +239,14 @@ int mbedtls_x509_get_rsassa_pss_params( const mbedtls_x509_buf *params, return( ret ); if( ( ret = mbedtls_oid_get_md_alg( &alg_id, md_alg ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_ALG + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, ret ) ); if( p != end2 ) - return( MBEDTLS_ERR_X509_INVALID_ALG + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); } else if( ret != MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) - return( MBEDTLS_ERR_X509_INVALID_ALG + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, ret ) ); if( p == end ) return( 0 ); @@ -263,19 +265,19 @@ int mbedtls_x509_get_rsassa_pss_params( const mbedtls_x509_buf *params, /* Only MFG1 is recognised for now */ if( MBEDTLS_OID_CMP( MBEDTLS_OID_MGF1, &alg_id ) != 0 ) - return( MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE + - MBEDTLS_ERR_OID_NOT_FOUND ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE, + MBEDTLS_ERR_OID_NOT_FOUND ) ); /* Parse HashAlgorithm */ if( ( ret = x509_get_hash_alg( &alg_params, mgf_md ) ) != 0 ) return( ret ); if( p != end2 ) - return( MBEDTLS_ERR_X509_INVALID_ALG + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); } else if( ret != MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) - return( MBEDTLS_ERR_X509_INVALID_ALG + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, ret ) ); if( p == end ) return( 0 ); @@ -289,14 +291,14 @@ int mbedtls_x509_get_rsassa_pss_params( const mbedtls_x509_buf *params, end2 = p + len; if( ( ret = mbedtls_asn1_get_int( &p, end2, salt_len ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_ALG + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, ret ) ); if( p != end2 ) - return( MBEDTLS_ERR_X509_INVALID_ALG + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); } else if( ret != MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) - return( MBEDTLS_ERR_X509_INVALID_ALG + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, ret ) ); if( p == end ) return( 0 ); @@ -312,21 +314,21 @@ int mbedtls_x509_get_rsassa_pss_params( const mbedtls_x509_buf *params, end2 = p + len; if( ( ret = mbedtls_asn1_get_int( &p, end2, &trailer_field ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_ALG + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, ret ) ); if( p != end2 ) - return( MBEDTLS_ERR_X509_INVALID_ALG + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); if( trailer_field != 1 ) return( MBEDTLS_ERR_X509_INVALID_ALG ); } else if( ret != MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) - return( MBEDTLS_ERR_X509_INVALID_ALG + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, ret ) ); if( p != end ) - return( MBEDTLS_ERR_X509_INVALID_ALG + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_ALG, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); return( 0 ); } @@ -345,48 +347,56 @@ static int x509_get_attr_type_value( unsigned char **p, const unsigned char *end, mbedtls_x509_name *cur ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; mbedtls_x509_buf *oid; mbedtls_x509_buf *val; if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_NAME + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_NAME, ret ) ); + + end = *p + len; if( ( end - *p ) < 1 ) - return( MBEDTLS_ERR_X509_INVALID_NAME + - MBEDTLS_ERR_ASN1_OUT_OF_DATA ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_NAME, + MBEDTLS_ERR_ASN1_OUT_OF_DATA ) ); oid = &cur->oid; oid->tag = **p; if( ( ret = mbedtls_asn1_get_tag( p, end, &oid->len, MBEDTLS_ASN1_OID ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_NAME + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_NAME, ret ) ); oid->p = *p; *p += oid->len; if( ( end - *p ) < 1 ) - return( MBEDTLS_ERR_X509_INVALID_NAME + - MBEDTLS_ERR_ASN1_OUT_OF_DATA ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_NAME, + MBEDTLS_ERR_ASN1_OUT_OF_DATA ) ); if( **p != MBEDTLS_ASN1_BMP_STRING && **p != MBEDTLS_ASN1_UTF8_STRING && **p != MBEDTLS_ASN1_T61_STRING && **p != MBEDTLS_ASN1_PRINTABLE_STRING && **p != MBEDTLS_ASN1_IA5_STRING && **p != MBEDTLS_ASN1_UNIVERSAL_STRING && **p != MBEDTLS_ASN1_BIT_STRING ) - return( MBEDTLS_ERR_X509_INVALID_NAME + - MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_NAME, + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ); val = &cur->val; val->tag = *(*p)++; if( ( ret = mbedtls_asn1_get_len( p, end, &val->len ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_NAME + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_NAME, ret ) ); val->p = *p; *p += val->len; + if( *p != end ) + { + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_NAME, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); + } + cur->next = NULL; return( 0 ); @@ -418,7 +428,7 @@ static int x509_get_attr_type_value( unsigned char **p, int mbedtls_x509_get_name( unsigned char **p, const unsigned char *end, mbedtls_x509_name *cur ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t set_len; const unsigned char *end_set; @@ -430,7 +440,7 @@ int mbedtls_x509_get_name( unsigned char **p, const unsigned char *end, */ if( ( ret = mbedtls_asn1_get_tag( p, end, &set_len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SET ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_NAME + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_NAME, ret ) ); end_set = *p + set_len; @@ -524,7 +534,7 @@ static int x509_date_is_valid(const mbedtls_x509_time *t ) static int x509_parse_time( unsigned char **p, size_t len, size_t yearlen, mbedtls_x509_time *tm ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; /* * Minimum length is 10 or 12 depending on yearlen @@ -589,13 +599,13 @@ static int x509_parse_time( unsigned char **p, size_t len, size_t yearlen, int mbedtls_x509_get_time( unsigned char **p, const unsigned char *end, mbedtls_x509_time *tm ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len, year_len; unsigned char tag; if( ( end - *p ) < 1 ) - return( MBEDTLS_ERR_X509_INVALID_DATE + - MBEDTLS_ERR_ASN1_OUT_OF_DATA ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_DATE, + MBEDTLS_ERR_ASN1_OUT_OF_DATA ) ); tag = **p; @@ -604,32 +614,32 @@ int mbedtls_x509_get_time( unsigned char **p, const unsigned char *end, else if( tag == MBEDTLS_ASN1_GENERALIZED_TIME ) year_len = 4; else - return( MBEDTLS_ERR_X509_INVALID_DATE + - MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_DATE, + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ); (*p)++; ret = mbedtls_asn1_get_len( p, end, &len ); if( ret != 0 ) - return( MBEDTLS_ERR_X509_INVALID_DATE + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_DATE, ret ) ); return x509_parse_time( p, len, year_len, tm ); } int mbedtls_x509_get_sig( unsigned char **p, const unsigned char *end, mbedtls_x509_buf *sig ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; int tag_type; if( ( end - *p ) < 1 ) - return( MBEDTLS_ERR_X509_INVALID_SIGNATURE + - MBEDTLS_ERR_ASN1_OUT_OF_DATA ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_SIGNATURE, + MBEDTLS_ERR_ASN1_OUT_OF_DATA ) ); tag_type = **p; if( ( ret = mbedtls_asn1_get_bitstring_null( p, end, &len ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_SIGNATURE + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_SIGNATURE, ret ) ); sig->tag = tag_type; sig->len = len; @@ -647,13 +657,13 @@ int mbedtls_x509_get_sig_alg( const mbedtls_x509_buf *sig_oid, const mbedtls_x50 mbedtls_md_type_t *md_alg, mbedtls_pk_type_t *pk_alg, void **sig_opts ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( *sig_opts != NULL ) return( MBEDTLS_ERR_X509_BAD_INPUT_DATA ); if( ( ret = mbedtls_oid_get_sig_alg( sig_oid, md_alg, pk_alg ) ) != 0 ) - return( MBEDTLS_ERR_X509_UNKNOWN_SIG_ALG + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_UNKNOWN_SIG_ALG, ret ) ); #if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT) if( *pk_alg == MBEDTLS_PK_RSASSA_PSS ) @@ -693,38 +703,33 @@ int mbedtls_x509_get_sig_alg( const mbedtls_x509_buf *sig_oid, const mbedtls_x50 * be either manually updated or extensions should be parsed!) */ int mbedtls_x509_get_ext( unsigned char **p, const unsigned char *end, - mbedtls_x509_buf *ext, int tag ) + mbedtls_x509_buf *ext, int tag ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; - if( *p == end ) - return( 0 ); - - ext->tag = **p; - - if( ( ret = mbedtls_asn1_get_tag( p, end, &ext->len, - MBEDTLS_ASN1_CONTEXT_SPECIFIC | MBEDTLS_ASN1_CONSTRUCTED | tag ) ) != 0 ) - return( ret ); + /* Extension structure use EXPLICIT tagging. That is, the actual + * `Extensions` structure is wrapped by a tag-length pair using + * the respective context-specific tag. */ + ret = mbedtls_asn1_get_tag( p, end, &ext->len, + MBEDTLS_ASN1_CONTEXT_SPECIFIC | MBEDTLS_ASN1_CONSTRUCTED | tag ); + if( ret != 0 ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); - ext->p = *p; - end = *p + ext->len; + ext->tag = MBEDTLS_ASN1_CONTEXT_SPECIFIC | MBEDTLS_ASN1_CONSTRUCTED | tag; + ext->p = *p; + end = *p + ext->len; /* * Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension - * - * Extension ::= SEQUENCE { - * extnID OBJECT IDENTIFIER, - * critical BOOLEAN DEFAULT FALSE, - * extnValue OCTET STRING } */ if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); if( end != *p + len ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); return( 0 ); } @@ -735,7 +740,7 @@ int mbedtls_x509_get_ext( unsigned char **p, const unsigned char *end, */ int mbedtls_x509_dn_gets( char *buf, size_t size, const mbedtls_x509_name *dn ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i, n; unsigned char c, merge = 0; const mbedtls_x509_name *name; @@ -776,7 +781,7 @@ int mbedtls_x509_dn_gets( char *buf, size_t size, const mbedtls_x509_name *dn ) break; c = name->val.p[i]; - if( c < 32 || c == 127 || ( c > 128 && c < 160 ) ) + if( c < 32 || c >= 127 ) s[i] = '?'; else s[i] = c; } @@ -797,7 +802,7 @@ int mbedtls_x509_dn_gets( char *buf, size_t size, const mbedtls_x509_name *dn ) */ int mbedtls_x509_serial_gets( char *buf, size_t size, const mbedtls_x509_buf *serial ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i, n, nr; char *p; @@ -833,7 +838,7 @@ int mbedtls_x509_sig_alg_gets( char *buf, size_t size, const mbedtls_x509_buf *s mbedtls_pk_type_t pk_alg, mbedtls_md_type_t md_alg, const void *sig_opts ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; char *p = buf; size_t n = size; const char *desc = NULL; @@ -859,7 +864,7 @@ int mbedtls_x509_sig_alg_gets( char *buf, size_t size, const mbedtls_x509_buf *s ret = mbedtls_snprintf( p, n, " (%s, MGF1-%s, 0x%02X)", md_info ? mbedtls_md_get_name( md_info ) : "???", mgf_md_info ? mbedtls_md_get_name( mgf_md_info ) : "???", - pss_opts->expected_salt_len ); + (unsigned int) pss_opts->expected_salt_len ); MBEDTLS_X509_SAFE_SNPRINTF; } #else @@ -878,7 +883,7 @@ int mbedtls_x509_key_size_helper( char *buf, size_t buf_size, const char *name ) { char *p = buf; size_t n = buf_size; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; ret = mbedtls_snprintf( p, n, "%s key size", name ); MBEDTLS_X509_SAFE_SNPRINTF; @@ -1001,8 +1006,8 @@ int mbedtls_x509_time_is_future( const mbedtls_x509_time *from ) */ int mbedtls_x509_self_test( int verbose ) { + int ret = 0; #if defined(MBEDTLS_CERTS_C) && defined(MBEDTLS_SHA256_C) - int ret; uint32_t flags; mbedtls_x509_crt cacert; mbedtls_x509_crt clicert; @@ -1010,6 +1015,7 @@ int mbedtls_x509_self_test( int verbose ) if( verbose != 0 ) mbedtls_printf( " X.509 certificate load: " ); + mbedtls_x509_crt_init( &cacert ); mbedtls_x509_crt_init( &clicert ); ret = mbedtls_x509_crt_parse( &clicert, (const unsigned char *) mbedtls_test_cli_crt, @@ -1019,11 +1025,9 @@ int mbedtls_x509_self_test( int verbose ) if( verbose != 0 ) mbedtls_printf( "failed\n" ); - return( ret ); + goto cleanup; } - mbedtls_x509_crt_init( &cacert ); - ret = mbedtls_x509_crt_parse( &cacert, (const unsigned char *) mbedtls_test_ca_crt, mbedtls_test_ca_crt_len ); if( ret != 0 ) @@ -1031,7 +1035,7 @@ int mbedtls_x509_self_test( int verbose ) if( verbose != 0 ) mbedtls_printf( "failed\n" ); - return( ret ); + goto cleanup; } if( verbose != 0 ) @@ -1043,20 +1047,19 @@ int mbedtls_x509_self_test( int verbose ) if( verbose != 0 ) mbedtls_printf( "failed\n" ); - return( ret ); + goto cleanup; } if( verbose != 0 ) mbedtls_printf( "passed\n\n"); +cleanup: mbedtls_x509_crt_free( &cacert ); mbedtls_x509_crt_free( &clicert ); - - return( 0 ); #else ((void) verbose); - return( 0 ); -#endif /* MBEDTLS_CERTS_C && MBEDTLS_SHA1_C */ +#endif /* MBEDTLS_CERTS_C && MBEDTLS_SHA256_C */ + return( ret ); } #endif /* MBEDTLS_SELF_TEST */ diff --git a/Externals/mbedtls/library/x509_create.c b/Externals/mbedtls/library/x509_create.c index 546e8fa1a99e..056bbaa78634 100644 --- a/Externals/mbedtls/library/x509_create.c +++ b/Externals/mbedtls/library/x509_create.c @@ -1,7 +1,7 @@ /* * X.509 base functions for creating certificates / CSRs * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,20 +15,15 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_X509_CREATE_C) #include "mbedtls/x509.h" #include "mbedtls/asn1write.h" +#include "mbedtls/error.h" #include "mbedtls/oid.h" #include @@ -241,7 +236,7 @@ int mbedtls_x509_set_extension( mbedtls_asn1_named_data **head, const char *oid, */ static int x509_write_name( unsigned char **p, unsigned char *start, mbedtls_asn1_named_data* cur_name) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; const char *oid = (const char*)cur_name->oid.p; size_t oid_len = cur_name->oid.len; @@ -274,7 +269,7 @@ static int x509_write_name( unsigned char **p, unsigned char *start, mbedtls_asn int mbedtls_x509_write_names( unsigned char **p, unsigned char *start, mbedtls_asn1_named_data *first ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; mbedtls_asn1_named_data *cur = first; @@ -295,7 +290,7 @@ int mbedtls_x509_write_sig( unsigned char **p, unsigned char *start, const char *oid, size_t oid_len, unsigned char *sig, size_t size ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; if( *p < start || (size_t)( *p - start ) < size ) @@ -325,7 +320,7 @@ int mbedtls_x509_write_sig( unsigned char **p, unsigned char *start, static int x509_write_extension( unsigned char **p, unsigned char *start, mbedtls_asn1_named_data *ext ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_raw_buffer( p, start, ext->val.p + 1, @@ -363,7 +358,7 @@ static int x509_write_extension( unsigned char **p, unsigned char *start, int mbedtls_x509_write_extensions( unsigned char **p, unsigned char *start, mbedtls_asn1_named_data *first ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; mbedtls_asn1_named_data *cur_ext = first; diff --git a/Externals/mbedtls/library/x509_crl.c b/Externals/mbedtls/library/x509_crl.c index 8450f87e033d..ac4fc75de384 100644 --- a/Externals/mbedtls/library/x509_crl.c +++ b/Externals/mbedtls/library/x509_crl.c @@ -1,7 +1,7 @@ /* * X.509 Certidicate Revocation List (CRL) parsing * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The ITU-T X.509 standard defines a certificate format for PKI. @@ -29,15 +27,12 @@ * http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_X509_CRL_PARSE_C) #include "mbedtls/x509_crl.h" +#include "mbedtls/error.h" #include "mbedtls/oid.h" #include "mbedtls/platform_util.h" @@ -74,7 +69,7 @@ static int x509_crl_get_version( unsigned char **p, const unsigned char *end, int *ver ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ( ret = mbedtls_asn1_get_int( p, end, ver ) ) != 0 ) { @@ -84,7 +79,7 @@ static int x509_crl_get_version( unsigned char **p, return( 0 ); } - return( MBEDTLS_ERR_X509_INVALID_VERSION + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_VERSION, ret ) ); } return( 0 ); @@ -101,19 +96,19 @@ static int x509_get_crl_ext( unsigned char **p, const unsigned char *end, mbedtls_x509_buf *ext ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + + if( *p == end ) + return( 0 ); /* * crlExtensions [0] EXPLICIT Extensions OPTIONAL * -- if present, version MUST be v2 */ if( ( ret = mbedtls_x509_get_ext( p, end, ext, 0 ) ) != 0 ) - { - if( ret == MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) - return( 0 ); - return( ret ); - } + + end = ext->p + ext->len; while( *p < end ) { @@ -130,7 +125,7 @@ static int x509_get_crl_ext( unsigned char **p, /* Get enclosing sequence tag */ if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); end_ext_data = *p + len; @@ -138,7 +133,7 @@ static int x509_get_crl_ext( unsigned char **p, if( ( ret = mbedtls_asn1_get_tag( p, end_ext_data, &len, MBEDTLS_ASN1_OID ) ) != 0 ) { - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); } *p += len; @@ -147,29 +142,29 @@ static int x509_get_crl_ext( unsigned char **p, &is_critical ) ) != 0 && ( ret != MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ) { - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); } /* Data should be octet string type */ if( ( ret = mbedtls_asn1_get_tag( p, end_ext_data, &len, MBEDTLS_ASN1_OCTET_STRING ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); /* Ignore data so far and just check its length */ *p += len; if( *p != end_ext_data ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); /* Abort on (unsupported) critical extensions */ if( is_critical ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ); } if( *p != end ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); return( 0 ); } @@ -181,7 +176,7 @@ static int x509_get_crl_entry_ext( unsigned char **p, const unsigned char *end, mbedtls_x509_buf *ext ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; /* OPTIONAL */ @@ -203,27 +198,27 @@ static int x509_get_crl_entry_ext( unsigned char **p, ext->p = NULL; return( 0 ); } - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); } end = *p + ext->len; if( end != *p + ext->len ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); while( *p < end ) { if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); *p += len; } if( *p != end ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); return( 0 ); } @@ -235,7 +230,7 @@ static int x509_get_entries( unsigned char **p, const unsigned char *end, mbedtls_x509_crl_entry *entry ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t entry_len; mbedtls_x509_crl_entry *cur_entry = entry; @@ -258,13 +253,13 @@ static int x509_get_entries( unsigned char **p, size_t len2; const unsigned char *end2; + cur_entry->raw.tag = **p; if( ( ret = mbedtls_asn1_get_tag( p, end, &len2, MBEDTLS_ASN1_SEQUENCE | MBEDTLS_ASN1_CONSTRUCTED ) ) != 0 ) { return( ret ); } - cur_entry->raw.tag = **p; cur_entry->raw.p = *p; cur_entry->raw.len = len2; end2 = *p + len2; @@ -300,7 +295,7 @@ static int x509_get_entries( unsigned char **p, int mbedtls_x509_crl_parse_der( mbedtls_x509_crl *chain, const unsigned char *buf, size_t buflen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; unsigned char *p = NULL, *end = NULL; mbedtls_x509_buf sig_params1, sig_params2, sig_oid2; @@ -369,8 +364,8 @@ int mbedtls_x509_crl_parse_der( mbedtls_x509_crl *chain, if( len != (size_t) ( end - p ) ) { mbedtls_x509_crl_free( crl ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); } /* @@ -382,7 +377,7 @@ int mbedtls_x509_crl_parse_der( mbedtls_x509_crl *chain, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) { mbedtls_x509_crl_free( crl ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, ret ) ); } end = p + len; @@ -426,7 +421,7 @@ int mbedtls_x509_crl_parse_der( mbedtls_x509_crl *chain, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) { mbedtls_x509_crl_free( crl ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, ret ) ); } if( ( ret = mbedtls_x509_get_name( &p, p + len, &crl->issuer ) ) != 0 ) @@ -449,10 +444,10 @@ int mbedtls_x509_crl_parse_der( mbedtls_x509_crl *chain, if( ( ret = mbedtls_x509_get_time( &p, end, &crl->next_update ) ) != 0 ) { - if( ret != ( MBEDTLS_ERR_X509_INVALID_DATE + - MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) && - ret != ( MBEDTLS_ERR_X509_INVALID_DATE + - MBEDTLS_ERR_ASN1_OUT_OF_DATA ) ) + if( ret != ( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_DATE, + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ) && + ret != ( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_DATE, + MBEDTLS_ERR_ASN1_OUT_OF_DATA ) ) ) { mbedtls_x509_crl_free( crl ); return( ret ); @@ -491,8 +486,8 @@ int mbedtls_x509_crl_parse_der( mbedtls_x509_crl *chain, if( p != end ) { mbedtls_x509_crl_free( crl ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); } end = crl->raw.p + crl->raw.len; @@ -526,8 +521,8 @@ int mbedtls_x509_crl_parse_der( mbedtls_x509_crl *chain, if( p != end ) { mbedtls_x509_crl_free( crl ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); } return( 0 ); @@ -539,8 +534,8 @@ int mbedtls_x509_crl_parse_der( mbedtls_x509_crl *chain, int mbedtls_x509_crl_parse( mbedtls_x509_crl *chain, const unsigned char *buf, size_t buflen ) { #if defined(MBEDTLS_PEM_PARSE_C) - int ret; - size_t use_len; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t use_len = 0; mbedtls_pem_context pem; int is_pem = 0; @@ -603,7 +598,7 @@ int mbedtls_x509_crl_parse( mbedtls_x509_crl *chain, const unsigned char *buf, s */ int mbedtls_x509_crl_parse_file( mbedtls_x509_crl *chain, const char *path ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n; unsigned char *buf; @@ -630,7 +625,7 @@ int mbedtls_x509_crl_parse_file( mbedtls_x509_crl *chain, const char *path ) int mbedtls_x509_crl_info( char *buf, size_t size, const char *prefix, const mbedtls_x509_crl *crl ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n; char *p; const mbedtls_x509_crl_entry *entry; diff --git a/Externals/mbedtls/library/x509_crt.c b/Externals/mbedtls/library/x509_crt.c index 325bbc0b1034..a6cccf81445d 100644 --- a/Externals/mbedtls/library/x509_crt.c +++ b/Externals/mbedtls/library/x509_crt.c @@ -1,7 +1,7 @@ /* * X.509 certificate parsing and verification * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The ITU-T X.509 standard defines a certificate format for PKI. @@ -31,15 +29,12 @@ * [SIRO] https://cabforum.org/wp-content/uploads/Chunghwatelecom201503cabforumV4.pdf */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_X509_CRT_PARSE_C) #include "mbedtls/x509_crt.h" +#include "mbedtls/error.h" #include "mbedtls/oid.h" #include "mbedtls/platform_util.h" @@ -49,6 +44,11 @@ #include "mbedtls/pem.h" #endif +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "psa/crypto.h" +#include "mbedtls/psa_util.h" +#endif + #if defined(MBEDTLS_PLATFORM_C) #include "mbedtls/platform.h" #else @@ -91,15 +91,10 @@ typedef struct { */ #define X509_MAX_VERIFY_CHAIN_SIZE ( MBEDTLS_X509_MAX_INTERMEDIATE_CA + 2 ) -/* - * Default profile - */ +/* Default profile. Do not remove items unless there are serious security + * concerns. */ const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_default = { -#if defined(MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES) - /* Allow SHA-1 (weak, but still safe in controlled environments) */ - MBEDTLS_X509_ID_FLAG( MBEDTLS_MD_SHA1 ) | -#endif /* Only SHA-2 hashes */ MBEDTLS_X509_ID_FLAG( MBEDTLS_MD_SHA224 ) | MBEDTLS_X509_ID_FLAG( MBEDTLS_MD_SHA256 ) | @@ -372,6 +367,10 @@ static void x509_crt_verify_chain_reset( } ver_chain->len = 0; + +#if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK) + ver_chain->trust_ca_cb_result = NULL; +#endif /* MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK */ } /* @@ -381,7 +380,7 @@ static int x509_get_version( unsigned char **p, const unsigned char *end, int *ver ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; if( ( ret = mbedtls_asn1_get_tag( p, end, &len, @@ -393,17 +392,17 @@ static int x509_get_version( unsigned char **p, return( 0 ); } - return( ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, ret ) ); } end = *p + len; if( ( ret = mbedtls_asn1_get_int( p, end, ver ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_VERSION + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_VERSION, ret ) ); if( *p != end ) - return( MBEDTLS_ERR_X509_INVALID_VERSION + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_VERSION, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); return( 0 ); } @@ -418,12 +417,12 @@ static int x509_get_dates( unsigned char **p, mbedtls_x509_time *from, mbedtls_x509_time *to ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_DATE + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_DATE, ret ) ); end = *p + len; @@ -434,8 +433,8 @@ static int x509_get_dates( unsigned char **p, return( ret ); if( *p != end ) - return( MBEDTLS_ERR_X509_INVALID_DATE + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_DATE, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); return( 0 ); } @@ -447,7 +446,7 @@ static int x509_get_uid( unsigned char **p, const unsigned char *end, mbedtls_x509_buf *uid, int n ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( *p == end ) return( 0 ); @@ -460,7 +459,7 @@ static int x509_get_uid( unsigned char **p, if( ret == MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) return( 0 ); - return( ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, ret ) ); } uid->p = *p; @@ -474,7 +473,7 @@ static int x509_get_basic_constraints( unsigned char **p, int *ca_istrue, int *max_pathlen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; /* @@ -487,7 +486,7 @@ static int x509_get_basic_constraints( unsigned char **p, if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); if( *p == end ) return( 0 ); @@ -498,7 +497,7 @@ static int x509_get_basic_constraints( unsigned char **p, ret = mbedtls_asn1_get_int( p, end, ca_istrue ); if( ret != 0 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); if( *ca_istrue != 0 ) *ca_istrue = 1; @@ -508,11 +507,17 @@ static int x509_get_basic_constraints( unsigned char **p, return( 0 ); if( ( ret = mbedtls_asn1_get_int( p, end, max_pathlen ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); if( *p != end ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); + + /* Do not accept max_pathlen equal to INT_MAX to avoid a signed integer + * overflow, which is an undefined behavior. */ + if( *max_pathlen == INT_MAX ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_INVALID_LENGTH ) ); (*max_pathlen)++; @@ -523,15 +528,15 @@ static int x509_get_ns_cert_type( unsigned char **p, const unsigned char *end, unsigned char *ns_cert_type) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_x509_bitstring bs = { 0, 0, NULL }; if( ( ret = mbedtls_asn1_get_bitstring( p, end, &bs ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); if( bs.len != 1 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_INVALID_LENGTH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_INVALID_LENGTH ) ); /* Get actual bitstring */ *ns_cert_type = *bs.p; @@ -542,16 +547,16 @@ static int x509_get_key_usage( unsigned char **p, const unsigned char *end, unsigned int *key_usage) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t i; mbedtls_x509_bitstring bs = { 0, 0, NULL }; if( ( ret = mbedtls_asn1_get_bitstring( p, end, &bs ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); if( bs.len < 1 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_INVALID_LENGTH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_INVALID_LENGTH ) ); /* Get actual bitstring */ *key_usage = 0; @@ -572,15 +577,15 @@ static int x509_get_ext_key_usage( unsigned char **p, const unsigned char *end, mbedtls_x509_sequence *ext_key_usage) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ( ret = mbedtls_asn1_get_sequence_of( p, end, ext_key_usage, MBEDTLS_ASN1_OID ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); /* Sequence length must be >= 1 */ if( ext_key_usage->buf.p == NULL ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_INVALID_LENGTH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_INVALID_LENGTH ) ); return( 0 ); } @@ -609,13 +614,14 @@ static int x509_get_ext_key_usage( unsigned char **p, * nameAssigner [0] DirectoryString OPTIONAL, * partyName [1] DirectoryString } * - * NOTE: we only parse and use dNSName at this point. + * NOTE: we list all types, but only use dNSName and otherName + * of type HwModuleName, as defined in RFC 4108, at this point. */ static int x509_get_subject_alt_name( unsigned char **p, const unsigned char *end, mbedtls_x509_sequence *subject_alt_name ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len, tag_len; mbedtls_asn1_buf *buf; unsigned char tag; @@ -624,35 +630,51 @@ static int x509_get_subject_alt_name( unsigned char **p, /* Get main sequence tag */ if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); if( *p + len != end ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); while( *p < end ) { - if( ( end - *p ) < 1 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_OUT_OF_DATA ); + mbedtls_x509_subject_alternative_name dummy_san_buf; + memset( &dummy_san_buf, 0, sizeof( dummy_san_buf ) ); tag = **p; (*p)++; if( ( ret = mbedtls_asn1_get_len( p, end, &tag_len ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); if( ( tag & MBEDTLS_ASN1_TAG_CLASS_MASK ) != MBEDTLS_ASN1_CONTEXT_SPECIFIC ) { - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ); } - /* Skip everything but DNS name */ - if( tag != ( MBEDTLS_ASN1_CONTEXT_SPECIFIC | 2 ) ) + /* + * Check that the SAN is structured correctly. + */ + ret = mbedtls_x509_parse_subject_alt_name( &(cur->buf), &dummy_san_buf ); + /* + * In case the extension is malformed, return an error, + * and clear the allocated sequences. + */ + if( ret != 0 && ret != MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE ) { - *p += tag_len; - continue; + mbedtls_x509_sequence *seq_cur = subject_alt_name->next; + mbedtls_x509_sequence *seq_prv; + while( seq_cur != NULL ) + { + seq_prv = seq_cur; + seq_cur = seq_cur->next; + mbedtls_platform_zeroize( seq_prv, + sizeof( mbedtls_x509_sequence ) ); + mbedtls_free( seq_prv ); + } + subject_alt_name->next = NULL; + return( ret ); } /* Allocate and assign next pointer */ @@ -664,8 +686,8 @@ static int x509_get_subject_alt_name( unsigned char **p, cur->next = mbedtls_calloc( 1, sizeof( mbedtls_asn1_sequence ) ); if( cur->next == NULL ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_ALLOC_FAILED ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_ALLOC_FAILED ) ); cur = cur->next; } @@ -681,32 +703,195 @@ static int x509_get_subject_alt_name( unsigned char **p, cur->next = NULL; if( *p != end ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); return( 0 ); } +/* + * id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 } + * + * anyPolicy OBJECT IDENTIFIER ::= { id-ce-certificatePolicies 0 } + * + * certificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation + * + * PolicyInformation ::= SEQUENCE { + * policyIdentifier CertPolicyId, + * policyQualifiers SEQUENCE SIZE (1..MAX) OF + * PolicyQualifierInfo OPTIONAL } + * + * CertPolicyId ::= OBJECT IDENTIFIER + * + * PolicyQualifierInfo ::= SEQUENCE { + * policyQualifierId PolicyQualifierId, + * qualifier ANY DEFINED BY policyQualifierId } + * + * -- policyQualifierIds for Internet policy qualifiers + * + * id-qt OBJECT IDENTIFIER ::= { id-pkix 2 } + * id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 } + * id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 } + * + * PolicyQualifierId ::= OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice ) + * + * Qualifier ::= CHOICE { + * cPSuri CPSuri, + * userNotice UserNotice } + * + * CPSuri ::= IA5String + * + * UserNotice ::= SEQUENCE { + * noticeRef NoticeReference OPTIONAL, + * explicitText DisplayText OPTIONAL } + * + * NoticeReference ::= SEQUENCE { + * organization DisplayText, + * noticeNumbers SEQUENCE OF INTEGER } + * + * DisplayText ::= CHOICE { + * ia5String IA5String (SIZE (1..200)), + * visibleString VisibleString (SIZE (1..200)), + * bmpString BMPString (SIZE (1..200)), + * utf8String UTF8String (SIZE (1..200)) } + * + * NOTE: we only parse and use anyPolicy without qualifiers at this point + * as defined in RFC 5280. + */ +static int x509_get_certificate_policies( unsigned char **p, + const unsigned char *end, + mbedtls_x509_sequence *certificate_policies ) +{ + int ret, parse_ret = 0; + size_t len; + mbedtls_asn1_buf *buf; + mbedtls_asn1_sequence *cur = certificate_policies; + + /* Get main sequence tag */ + ret = mbedtls_asn1_get_tag( p, end, &len, + MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ); + if( ret != 0 ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); + + if( *p + len != end ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); + + /* + * Cannot be an empty sequence. + */ + if( len == 0 ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); + + while( *p < end ) + { + mbedtls_x509_buf policy_oid; + const unsigned char *policy_end; + + /* + * Get the policy sequence + */ + if( ( ret = mbedtls_asn1_get_tag( p, end, &len, + MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); + + policy_end = *p + len; + + if( ( ret = mbedtls_asn1_get_tag( p, policy_end, &len, + MBEDTLS_ASN1_OID ) ) != 0 ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); + + policy_oid.tag = MBEDTLS_ASN1_OID; + policy_oid.len = len; + policy_oid.p = *p; + + /* + * Only AnyPolicy is currently supported when enforcing policy. + */ + if( MBEDTLS_OID_CMP( MBEDTLS_OID_ANY_POLICY, &policy_oid ) != 0 ) + { + /* + * Set the parsing return code but continue parsing, in case this + * extension is critical and MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION + * is configured. + */ + parse_ret = MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE; + } + + /* Allocate and assign next pointer */ + if( cur->buf.p != NULL ) + { + if( cur->next != NULL ) + return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS ); + + cur->next = mbedtls_calloc( 1, sizeof( mbedtls_asn1_sequence ) ); + + if( cur->next == NULL ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_ALLOC_FAILED ) ); + + cur = cur->next; + } + + buf = &( cur->buf ); + buf->tag = policy_oid.tag; + buf->p = policy_oid.p; + buf->len = policy_oid.len; + + *p += len; + + /* + * If there is an optional qualifier, then *p < policy_end + * Check the Qualifier len to verify it doesn't exceed policy_end. + */ + if( *p < policy_end ) + { + if( ( ret = mbedtls_asn1_get_tag( p, policy_end, &len, + MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); + /* + * Skip the optional policy qualifiers. + */ + *p += len; + } + + if( *p != policy_end ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); + } + + /* Set final sequence entry's next pointer to NULL */ + cur->next = NULL; + + if( *p != end ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); + + return( parse_ret ); +} + /* * X.509 v3 extensions * */ static int x509_get_crt_ext( unsigned char **p, const unsigned char *end, - mbedtls_x509_crt *crt ) + mbedtls_x509_crt *crt, + mbedtls_x509_crt_ext_cb_t cb, + void *p_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; - unsigned char *end_ext_data, *end_ext_octet; + unsigned char *end_ext_data, *start_ext_octet, *end_ext_octet; - if( ( ret = mbedtls_x509_get_ext( p, end, &crt->v3_ext, 3 ) ) != 0 ) - { - if( ret == MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) - return( 0 ); + if( *p == end ) + return( 0 ); + if( ( ret = mbedtls_x509_get_ext( p, end, &crt->v3_ext, 3 ) ) != 0 ) return( ret ); - } + end = crt->v3_ext.p + crt->v3_ext.len; while( *p < end ) { /* @@ -721,14 +906,14 @@ static int x509_get_crt_ext( unsigned char **p, if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); end_ext_data = *p + len; /* Get extension ID */ if( ( ret = mbedtls_asn1_get_tag( p, end_ext_data, &extn_oid.len, MBEDTLS_ASN1_OID ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); extn_oid.tag = MBEDTLS_ASN1_OID; extn_oid.p = *p; @@ -737,18 +922,19 @@ static int x509_get_crt_ext( unsigned char **p, /* Get optional critical */ if( ( ret = mbedtls_asn1_get_bool( p, end_ext_data, &is_critical ) ) != 0 && ( ret != MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); /* Data should be octet string type */ if( ( ret = mbedtls_asn1_get_tag( p, end_ext_data, &len, MBEDTLS_ASN1_OCTET_STRING ) ) != 0 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); + start_ext_octet = *p; end_ext_octet = *p + len; if( end_ext_octet != end_ext_data ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); /* * Detect supported extensions @@ -757,6 +943,16 @@ static int x509_get_crt_ext( unsigned char **p, if( ret != 0 ) { + /* Give the callback (if any) a chance to handle the extension */ + if( cb != NULL ) + { + ret = cb( p_ctx, crt, &extn_oid, is_critical, *p, end_ext_octet ); + if( ret != 0 && is_critical ) + return( ret ); + *p = end_ext_octet; + continue; + } + /* No parser found, skip extension */ *p = end_ext_octet; @@ -764,8 +960,8 @@ static int x509_get_crt_ext( unsigned char **p, if( is_critical ) { /* Data is marked as critical: fail */ - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ); } #endif continue; @@ -814,14 +1010,52 @@ static int x509_get_crt_ext( unsigned char **p, return( ret ); break; + case MBEDTLS_OID_X509_EXT_CERTIFICATE_POLICIES: + /* Parse certificate policies type */ + if( ( ret = x509_get_certificate_policies( p, end_ext_octet, + &crt->certificate_policies ) ) != 0 ) + { + /* Give the callback (if any) a chance to handle the extension + * if it contains unsupported policies */ + if( ret == MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE && cb != NULL && + cb( p_ctx, crt, &extn_oid, is_critical, + start_ext_octet, end_ext_octet ) == 0 ) + break; + +#if !defined(MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION) + if( is_critical ) + return( ret ); + else +#endif + /* + * If MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE is returned, then we + * cannot interpret or enforce the policy. However, it is up to + * the user to choose how to enforce the policies, + * unless the extension is critical. + */ + if( ret != MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE ) + return( ret ); + } + break; + default: - return( MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE ); + /* + * If this is a non-critical extension, which the oid layer + * supports, but there isn't an x509 parser for it, + * skip the extension. + */ +#if !defined(MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION) + if( is_critical ) + return( MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE ); + else +#endif + *p = end_ext_octet; } } if( *p != end ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); return( 0 ); } @@ -829,10 +1063,14 @@ static int x509_get_crt_ext( unsigned char **p, /* * Parse and fill a single X.509 certificate in DER format */ -static int x509_crt_parse_der_core( mbedtls_x509_crt *crt, const unsigned char *buf, - size_t buflen ) +static int x509_crt_parse_der_core( mbedtls_x509_crt *crt, + const unsigned char *buf, + size_t buflen, + int make_copy, + mbedtls_x509_crt_ext_cb_t cb, + void *p_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; unsigned char *p, *end, *crt_end; mbedtls_x509_buf sig_params1, sig_params2, sig_oid2; @@ -847,7 +1085,7 @@ static int x509_crt_parse_der_core( mbedtls_x509_crt *crt, const unsigned char * if( crt == NULL || buf == NULL ) return( MBEDTLS_ERR_X509_BAD_INPUT_DATA ); - // Use the original buffer until we figure out actual length + /* Use the original buffer until we figure out actual length. */ p = (unsigned char*) buf; len = buflen; end = p + len; @@ -865,25 +1103,26 @@ static int x509_crt_parse_der_core( mbedtls_x509_crt *crt, const unsigned char * return( MBEDTLS_ERR_X509_INVALID_FORMAT ); } - if( len > (size_t) ( end - p ) ) - { - mbedtls_x509_crt_free( crt ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); - } - crt_end = p + len; - - // Create and populate a new buffer for the raw field + end = crt_end = p + len; crt->raw.len = crt_end - buf; - crt->raw.p = p = mbedtls_calloc( 1, crt->raw.len ); - if( p == NULL ) - return( MBEDTLS_ERR_X509_ALLOC_FAILED ); + if( make_copy != 0 ) + { + /* Create and populate a new buffer for the raw field. */ + crt->raw.p = p = mbedtls_calloc( 1, crt->raw.len ); + if( crt->raw.p == NULL ) + return( MBEDTLS_ERR_X509_ALLOC_FAILED ); - memcpy( p, buf, crt->raw.len ); + memcpy( crt->raw.p, buf, crt->raw.len ); + crt->own_buffer = 1; - // Direct pointers to the new buffer - p += crt->raw.len - len; - end = crt_end = p + len; + p += crt->raw.len - len; + end = crt_end = p + len; + } + else + { + crt->raw.p = (unsigned char*) buf; + crt->own_buffer = 0; + } /* * TBSCertificate ::= SEQUENCE { @@ -894,7 +1133,7 @@ static int x509_crt_parse_der_core( mbedtls_x509_crt *crt, const unsigned char * MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) { mbedtls_x509_crt_free( crt ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, ret ) ); } end = p + len; @@ -941,7 +1180,7 @@ static int x509_crt_parse_der_core( mbedtls_x509_crt *crt, const unsigned char * MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) { mbedtls_x509_crt_free( crt ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, ret ) ); } if( ( ret = mbedtls_x509_get_name( &p, p + len, &crt->issuer ) ) != 0 ) @@ -974,7 +1213,7 @@ static int x509_crt_parse_der_core( mbedtls_x509_crt *crt, const unsigned char * MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) { mbedtls_x509_crt_free( crt ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, ret ) ); } if( len && ( ret = mbedtls_x509_get_name( &p, p + len, &crt->subject ) ) != 0 ) @@ -988,11 +1227,13 @@ static int x509_crt_parse_der_core( mbedtls_x509_crt *crt, const unsigned char * /* * SubjectPublicKeyInfo */ + crt->pk_raw.p = p; if( ( ret = mbedtls_pk_parse_subpubkey( &p, end, &crt->pk ) ) != 0 ) { mbedtls_x509_crt_free( crt ); return( ret ); } + crt->pk_raw.len = p - crt->pk_raw.p; /* * issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, @@ -1026,7 +1267,7 @@ static int x509_crt_parse_der_core( mbedtls_x509_crt *crt, const unsigned char * if( crt->version == 3 ) #endif { - ret = x509_get_crt_ext( &p, end, crt ); + ret = x509_get_crt_ext( &p, end, crt, cb, p_ctx ); if( ret != 0 ) { mbedtls_x509_crt_free( crt ); @@ -1037,8 +1278,8 @@ static int x509_crt_parse_der_core( mbedtls_x509_crt *crt, const unsigned char * if( p != end ) { mbedtls_x509_crt_free( crt ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); } end = crt_end; @@ -1058,6 +1299,7 @@ static int x509_crt_parse_der_core( mbedtls_x509_crt *crt, const unsigned char * if( crt->sig_oid.len != sig_oid2.len || memcmp( crt->sig_oid.p, sig_oid2.p, crt->sig_oid.len ) != 0 || + sig_params1.tag != sig_params2.tag || sig_params1.len != sig_params2.len || ( sig_params1.len != 0 && memcmp( sig_params1.p, sig_params2.p, sig_params1.len ) != 0 ) ) @@ -1075,8 +1317,8 @@ static int x509_crt_parse_der_core( mbedtls_x509_crt *crt, const unsigned char * if( p != end ) { mbedtls_x509_crt_free( crt ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); } return( 0 ); @@ -1086,10 +1328,14 @@ static int x509_crt_parse_der_core( mbedtls_x509_crt *crt, const unsigned char * * Parse one X.509 certificate in DER format from a buffer and add them to a * chained list */ -int mbedtls_x509_crt_parse_der( mbedtls_x509_crt *chain, const unsigned char *buf, - size_t buflen ) +static int mbedtls_x509_crt_parse_der_internal( mbedtls_x509_crt *chain, + const unsigned char *buf, + size_t buflen, + int make_copy, + mbedtls_x509_crt_ext_cb_t cb, + void *p_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_x509_crt *crt = chain, *prev = NULL; /* @@ -1119,7 +1365,8 @@ int mbedtls_x509_crt_parse_der( mbedtls_x509_crt *chain, const unsigned char *bu crt = crt->next; } - if( ( ret = x509_crt_parse_der_core( crt, buf, buflen ) ) != 0 ) + ret = x509_crt_parse_der_core( crt, buf, buflen, make_copy, cb, p_ctx ); + if( ret != 0 ) { if( prev ) prev->next = NULL; @@ -1133,11 +1380,37 @@ int mbedtls_x509_crt_parse_der( mbedtls_x509_crt *chain, const unsigned char *bu return( 0 ); } +int mbedtls_x509_crt_parse_der_nocopy( mbedtls_x509_crt *chain, + const unsigned char *buf, + size_t buflen ) +{ + return( mbedtls_x509_crt_parse_der_internal( chain, buf, buflen, 0, NULL, NULL ) ); +} + +int mbedtls_x509_crt_parse_der_with_ext_cb( mbedtls_x509_crt *chain, + const unsigned char *buf, + size_t buflen, + int make_copy, + mbedtls_x509_crt_ext_cb_t cb, + void *p_ctx ) +{ + return( mbedtls_x509_crt_parse_der_internal( chain, buf, buflen, make_copy, cb, p_ctx ) ); +} + +int mbedtls_x509_crt_parse_der( mbedtls_x509_crt *chain, + const unsigned char *buf, + size_t buflen ) +{ + return( mbedtls_x509_crt_parse_der_internal( chain, buf, buflen, 1, NULL, NULL ) ); +} + /* * Parse one or more PEM certificates from a buffer and add them to the chained * list */ -int mbedtls_x509_crt_parse( mbedtls_x509_crt *chain, const unsigned char *buf, size_t buflen ) +int mbedtls_x509_crt_parse( mbedtls_x509_crt *chain, + const unsigned char *buf, + size_t buflen ) { #if defined(MBEDTLS_PEM_PARSE_C) int success = 0, first_error = 0, total_failed = 0; @@ -1170,7 +1443,7 @@ int mbedtls_x509_crt_parse( mbedtls_x509_crt *chain, const unsigned char *buf, s #if defined(MBEDTLS_PEM_PARSE_C) if( buf_format == MBEDTLS_X509_FORMAT_PEM ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_pem_context pem; /* 1 rather than 0 since the terminating NULL byte is counted in */ @@ -1254,7 +1527,7 @@ int mbedtls_x509_crt_parse( mbedtls_x509_crt *chain, const unsigned char *buf, s */ int mbedtls_x509_crt_parse_file( mbedtls_x509_crt *chain, const char *path ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n; unsigned char *buf; @@ -1351,6 +1624,8 @@ int mbedtls_x509_crt_parse_path( mbedtls_x509_crt *chain, const char *path ) } #endif /* MBEDTLS_THREADING_C */ + memset( &sb, 0, sizeof( sb ) ); + while( ( entry = readdir( dir ) ) != NULL ) { snp_ret = mbedtls_snprintf( entry_name, sizeof entry_name, @@ -1393,32 +1668,201 @@ int mbedtls_x509_crt_parse_path( mbedtls_x509_crt *chain, const char *path ) } #endif /* MBEDTLS_FS_IO */ +/* + * OtherName ::= SEQUENCE { + * type-id OBJECT IDENTIFIER, + * value [0] EXPLICIT ANY DEFINED BY type-id } + * + * HardwareModuleName ::= SEQUENCE { + * hwType OBJECT IDENTIFIER, + * hwSerialNum OCTET STRING } + * + * NOTE: we currently only parse and use otherName of type HwModuleName, + * as defined in RFC 4108. + */ +static int x509_get_other_name( const mbedtls_x509_buf *subject_alt_name, + mbedtls_x509_san_other_name *other_name ) +{ + int ret = 0; + size_t len; + unsigned char *p = subject_alt_name->p; + const unsigned char *end = p + subject_alt_name->len; + mbedtls_x509_buf cur_oid; + + if( ( subject_alt_name->tag & + ( MBEDTLS_ASN1_TAG_CLASS_MASK | MBEDTLS_ASN1_TAG_VALUE_MASK ) ) != + ( MBEDTLS_ASN1_CONTEXT_SPECIFIC | MBEDTLS_X509_SAN_OTHER_NAME ) ) + { + /* + * The given subject alternative name is not of type "othername". + */ + return( MBEDTLS_ERR_X509_BAD_INPUT_DATA ); + } + + if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, + MBEDTLS_ASN1_OID ) ) != 0 ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); + + cur_oid.tag = MBEDTLS_ASN1_OID; + cur_oid.p = p; + cur_oid.len = len; + + /* + * Only HwModuleName is currently supported. + */ + if( MBEDTLS_OID_CMP( MBEDTLS_OID_ON_HW_MODULE_NAME, &cur_oid ) != 0 ) + { + return( MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE ); + } + + if( p + len >= end ) + { + mbedtls_platform_zeroize( other_name, sizeof( *other_name ) ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); + } + p += len; + if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, + MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_CONTEXT_SPECIFIC ) ) != 0 ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); + + if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, + MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); + + if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, MBEDTLS_ASN1_OID ) ) != 0 ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); + + other_name->value.hardware_module_name.oid.tag = MBEDTLS_ASN1_OID; + other_name->value.hardware_module_name.oid.p = p; + other_name->value.hardware_module_name.oid.len = len; + + if( p + len >= end ) + { + mbedtls_platform_zeroize( other_name, sizeof( *other_name ) ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); + } + p += len; + if( ( ret = mbedtls_asn1_get_tag( &p, end, &len, + MBEDTLS_ASN1_OCTET_STRING ) ) != 0 ) + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, ret ) ); + + other_name->value.hardware_module_name.val.tag = MBEDTLS_ASN1_OCTET_STRING; + other_name->value.hardware_module_name.val.p = p; + other_name->value.hardware_module_name.val.len = len; + p += len; + if( p != end ) + { + mbedtls_platform_zeroize( other_name, + sizeof( *other_name ) ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_EXTENSIONS, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); + } + return( 0 ); +} + static int x509_info_subject_alt_name( char **buf, size_t *size, - const mbedtls_x509_sequence *subject_alt_name ) + const mbedtls_x509_sequence + *subject_alt_name, + const char *prefix ) { - size_t i; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n = *size; char *p = *buf; const mbedtls_x509_sequence *cur = subject_alt_name; - const char *sep = ""; - size_t sep_len = 0; + mbedtls_x509_subject_alternative_name san; + int parse_ret; while( cur != NULL ) { - if( cur->buf.len + sep_len >= n ) + memset( &san, 0, sizeof( san ) ); + parse_ret = mbedtls_x509_parse_subject_alt_name( &cur->buf, &san ); + if( parse_ret != 0 ) { - *p = '\0'; - return( MBEDTLS_ERR_X509_BUFFER_TOO_SMALL ); + if( parse_ret == MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE ) + { + ret = mbedtls_snprintf( p, n, "\n%s ", prefix ); + MBEDTLS_X509_SAFE_SNPRINTF; + } + else + { + ret = mbedtls_snprintf( p, n, "\n%s ", prefix ); + MBEDTLS_X509_SAFE_SNPRINTF; + } + cur = cur->next; + continue; } - n -= cur->buf.len + sep_len; - for( i = 0; i < sep_len; i++ ) - *p++ = sep[i]; - for( i = 0; i < cur->buf.len; i++ ) - *p++ = cur->buf.p[i]; + switch( san.type ) + { + /* + * otherName + */ + case MBEDTLS_X509_SAN_OTHER_NAME: + { + mbedtls_x509_san_other_name *other_name = &san.san.other_name; - sep = ", "; - sep_len = 2; + ret = mbedtls_snprintf( p, n, "\n%s otherName :", prefix ); + MBEDTLS_X509_SAFE_SNPRINTF; + + if( MBEDTLS_OID_CMP( MBEDTLS_OID_ON_HW_MODULE_NAME, + &other_name->value.hardware_module_name.oid ) != 0 ) + { + ret = mbedtls_snprintf( p, n, "\n%s hardware module name :", prefix ); + MBEDTLS_X509_SAFE_SNPRINTF; + ret = mbedtls_snprintf( p, n, "\n%s hardware type : ", prefix ); + MBEDTLS_X509_SAFE_SNPRINTF; + + ret = mbedtls_oid_get_numeric_string( p, n, &other_name->value.hardware_module_name.oid ); + MBEDTLS_X509_SAFE_SNPRINTF; + + ret = mbedtls_snprintf( p, n, "\n%s hardware serial number : ", prefix ); + MBEDTLS_X509_SAFE_SNPRINTF; + + if( other_name->value.hardware_module_name.val.len >= n ) + { + *p = '\0'; + return( MBEDTLS_ERR_X509_BUFFER_TOO_SMALL ); + } + + memcpy( p, other_name->value.hardware_module_name.val.p, + other_name->value.hardware_module_name.val.len ); + p += other_name->value.hardware_module_name.val.len; + + n -= other_name->value.hardware_module_name.val.len; + + }/* MBEDTLS_OID_ON_HW_MODULE_NAME */ + } + break; + + /* + * dNSName + */ + case MBEDTLS_X509_SAN_DNS_NAME: + { + ret = mbedtls_snprintf( p, n, "\n%s dNSName : ", prefix ); + MBEDTLS_X509_SAFE_SNPRINTF; + if( san.san.unstructured_name.len >= n ) + { + *p = '\0'; + return( MBEDTLS_ERR_X509_BUFFER_TOO_SMALL ); + } + + memcpy( p, san.san.unstructured_name.p, san.san.unstructured_name.len ); + p += san.san.unstructured_name.len; + n -= san.san.unstructured_name.len; + } + break; + + /* + * Type not supported, skip item. + */ + default: + ret = mbedtls_snprintf( p, n, "\n%s ", prefix ); + MBEDTLS_X509_SAFE_SNPRINTF; + break; + } cur = cur->next; } @@ -1431,6 +1875,56 @@ static int x509_info_subject_alt_name( char **buf, size_t *size, return( 0 ); } +int mbedtls_x509_parse_subject_alt_name( const mbedtls_x509_buf *san_buf, + mbedtls_x509_subject_alternative_name *san ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + switch( san_buf->tag & + ( MBEDTLS_ASN1_TAG_CLASS_MASK | + MBEDTLS_ASN1_TAG_VALUE_MASK ) ) + { + /* + * otherName + */ + case( MBEDTLS_ASN1_CONTEXT_SPECIFIC | MBEDTLS_X509_SAN_OTHER_NAME ): + { + mbedtls_x509_san_other_name other_name; + + ret = x509_get_other_name( san_buf, &other_name ); + if( ret != 0 ) + return( ret ); + + memset( san, 0, sizeof( mbedtls_x509_subject_alternative_name ) ); + san->type = MBEDTLS_X509_SAN_OTHER_NAME; + memcpy( &san->san.other_name, + &other_name, sizeof( other_name ) ); + + } + break; + + /* + * dNSName + */ + case( MBEDTLS_ASN1_CONTEXT_SPECIFIC | MBEDTLS_X509_SAN_DNS_NAME ): + { + memset( san, 0, sizeof( mbedtls_x509_subject_alternative_name ) ); + san->type = MBEDTLS_X509_SAN_DNS_NAME; + + memcpy( &san->san.unstructured_name, + san_buf, sizeof( *san_buf ) ); + + } + break; + + /* + * Type not supported + */ + default: + return( MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE ); + } + return( 0 ); +} + #define PRINT_ITEM(i) \ { \ ret = mbedtls_snprintf( p, n, "%s" i, sep ); \ @@ -1439,13 +1933,13 @@ static int x509_info_subject_alt_name( char **buf, size_t *size, } #define CERT_TYPE(type,name) \ - if( ns_cert_type & type ) \ + if( ns_cert_type & (type) ) \ PRINT_ITEM( name ); static int x509_info_cert_type( char **buf, size_t *size, unsigned char ns_cert_type ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n = *size; char *p = *buf; const char *sep = ""; @@ -1466,13 +1960,13 @@ static int x509_info_cert_type( char **buf, size_t *size, } #define KEY_USAGE(code,name) \ - if( key_usage & code ) \ + if( key_usage & (code) ) \ PRINT_ITEM( name ); static int x509_info_key_usage( char **buf, size_t *size, unsigned int key_usage ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n = *size; char *p = *buf; const char *sep = ""; @@ -1496,7 +1990,7 @@ static int x509_info_key_usage( char **buf, size_t *size, static int x509_info_ext_key_usage( char **buf, size_t *size, const mbedtls_x509_sequence *extended_key_usage ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const char *desc; size_t n = *size; char *p = *buf; @@ -1522,6 +2016,35 @@ static int x509_info_ext_key_usage( char **buf, size_t *size, return( 0 ); } +static int x509_info_cert_policies( char **buf, size_t *size, + const mbedtls_x509_sequence *certificate_policies ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + const char *desc; + size_t n = *size; + char *p = *buf; + const mbedtls_x509_sequence *cur = certificate_policies; + const char *sep = ""; + + while( cur != NULL ) + { + if( mbedtls_oid_get_certificate_policies( &cur->buf, &desc ) != 0 ) + desc = "???"; + + ret = mbedtls_snprintf( p, n, "%s%s", sep, desc ); + MBEDTLS_X509_SAFE_SNPRINTF; + + sep = ", "; + + cur = cur->next; + } + + *size = n; + *buf = p; + + return( 0 ); +} + /* * Return an informational string about the certificate. */ @@ -1530,7 +2053,7 @@ static int x509_info_ext_key_usage( char **buf, size_t *size, int mbedtls_x509_crt_info( char *buf, size_t size, const char *prefix, const mbedtls_x509_crt *crt ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n; char *p; char key_size_str[BEFORE_COLON]; @@ -1617,11 +2140,12 @@ int mbedtls_x509_crt_info( char *buf, size_t size, const char *prefix, if( crt->ext_types & MBEDTLS_X509_EXT_SUBJECT_ALT_NAME ) { - ret = mbedtls_snprintf( p, n, "\n%ssubject alt name : ", prefix ); + ret = mbedtls_snprintf( p, n, "\n%ssubject alt name :", prefix ); MBEDTLS_X509_SAFE_SNPRINTF; if( ( ret = x509_info_subject_alt_name( &p, &n, - &crt->subject_alt_names ) ) != 0 ) + &crt->subject_alt_names, + prefix ) ) != 0 ) return( ret ); } @@ -1653,6 +2177,16 @@ int mbedtls_x509_crt_info( char *buf, size_t size, const char *prefix, return( ret ); } + if( crt->ext_types & MBEDTLS_OID_X509_EXT_CERTIFICATE_POLICIES ) + { + ret = mbedtls_snprintf( p, n, "\n%scertificate policies : ", prefix ); + MBEDTLS_X509_SAFE_SNPRINTF; + + if( ( ret = x509_info_cert_policies( &p, &n, + &crt->certificate_policies ) ) != 0 ) + return( ret ); + } + ret = mbedtls_snprintf( p, n, "\n" ); MBEDTLS_X509_SAFE_SNPRINTF; @@ -1691,7 +2225,7 @@ static const struct x509_crt_verify_string x509_crt_verify_strings[] = { int mbedtls_x509_crt_verify_info( char *buf, size_t size, const char *prefix, uint32_t flags ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const struct x509_crt_verify_string *cur; char *p = buf; size_t n = size; @@ -1786,8 +2320,7 @@ int mbedtls_x509_crt_is_revoked( const mbedtls_x509_crt *crt, const mbedtls_x509 if( crt->serial.len == cur->serial.len && memcmp( crt->serial.p, cur->serial.p, crt->serial.len ) == 0 ) { - if( mbedtls_x509_time_is_past( &cur->revocation_date ) ) - return( 1 ); + return( 1 ); } cur = cur->next; @@ -1892,16 +2425,35 @@ static int x509_crt_check_signature( const mbedtls_x509_crt *child, mbedtls_x509_crt *parent, mbedtls_x509_crt_restart_ctx *rs_ctx ) { - const mbedtls_md_info_t *md_info; unsigned char hash[MBEDTLS_MD_MAX_SIZE]; - + size_t hash_len; +#if !defined(MBEDTLS_USE_PSA_CRYPTO) + const mbedtls_md_info_t *md_info; md_info = mbedtls_md_info_from_type( child->sig_md ); + hash_len = mbedtls_md_get_size( md_info ); + + /* Note: hash errors can happen only after an internal error */ if( mbedtls_md( md_info, child->tbs.p, child->tbs.len, hash ) != 0 ) + return( -1 ); +#else + psa_hash_operation_t hash_operation = PSA_HASH_OPERATION_INIT; + psa_algorithm_t hash_alg = mbedtls_psa_translate_md( child->sig_md ); + + if( psa_hash_setup( &hash_operation, hash_alg ) != PSA_SUCCESS ) + return( -1 ); + + if( psa_hash_update( &hash_operation, child->tbs.p, child->tbs.len ) + != PSA_SUCCESS ) { - /* Note: this can't happen except after an internal error */ return( -1 ); } + if( psa_hash_finish( &hash_operation, hash, sizeof( hash ), &hash_len ) + != PSA_SUCCESS ) + { + return( -1 ); + } +#endif /* MBEDTLS_USE_PSA_CRYPTO */ /* Skip expensive computation on obvious mismatch */ if( ! mbedtls_pk_can_do( &parent->pk, child->sig_pk ) ) return( -1 ); @@ -1910,7 +2462,7 @@ static int x509_crt_check_signature( const mbedtls_x509_crt *child, if( rs_ctx != NULL && child->sig_pk == MBEDTLS_PK_ECDSA ) { return( mbedtls_pk_verify_restartable( &parent->pk, - child->sig_md, hash, mbedtls_md_get_size( md_info ), + child->sig_md, hash, hash_len, child->sig.p, child->sig.len, &rs_ctx->pk ) ); } #else @@ -1918,7 +2470,7 @@ static int x509_crt_check_signature( const mbedtls_x509_crt *child, #endif return( mbedtls_pk_verify_ext( child->sig_pk, child->sig_opts, &parent->pk, - child->sig_md, hash, mbedtls_md_get_size( md_info ), + child->sig_md, hash, hash_len, child->sig.p, child->sig.len ) ); } @@ -2012,9 +2564,9 @@ static int x509_crt_find_parent_in( unsigned self_cnt, mbedtls_x509_crt_restart_ctx *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_x509_crt *parent, *fallback_parent; - int signature_is_good, fallback_signature_is_good; + int signature_is_good = 0, fallback_signature_is_good; #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) /* did we have something in progress? */ @@ -2088,15 +2640,13 @@ static int x509_crt_find_parent_in( continue; } - break; - } - - if( parent != NULL ) - { *r_parent = parent; *r_signature_is_good = signature_is_good; + + break; } - else + + if( parent == NULL ) { *r_parent = fallback_parent; *r_signature_is_good = fallback_signature_is_good; @@ -2137,7 +2687,7 @@ static int x509_crt_find_parent( unsigned self_cnt, mbedtls_x509_crt_restart_ctx *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_x509_crt *search_list; *parent_is_trusted = 1; @@ -2237,7 +2787,7 @@ static int x509_crt_check_ee_locally_trusted( * Tests for (aspects of) this function should include at least: * - trusted EE * - EE -> trusted root - * - EE -> intermedate CA -> trusted root + * - EE -> intermediate CA -> trusted root * - if relevant: EE untrusted * - if relevant: EE -> intermediate, untrusted * with the aspect under test checked at each relevant level (EE, int, root). @@ -2262,13 +2812,15 @@ static int x509_crt_verify_chain( mbedtls_x509_crt *crt, mbedtls_x509_crt *trust_ca, mbedtls_x509_crl *ca_crl, + mbedtls_x509_crt_ca_cb_t f_ca_cb, + void *p_ca_cb, const mbedtls_x509_crt_profile *profile, mbedtls_x509_crt_verify_chain *ver_chain, mbedtls_x509_crt_restart_ctx *rs_ctx ) { /* Don't initialize any of those variables here, so that the compiler can * catch potential issues with jumping ahead when restarting */ - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; uint32_t *flags; mbedtls_x509_crt_verify_chain_item *cur; mbedtls_x509_crt *child; @@ -2277,6 +2829,7 @@ static int x509_crt_verify_chain( int child_is_trusted; int signature_is_good; unsigned self_cnt; + mbedtls_x509_crt *cur_trust_ca = NULL; #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) /* resume if we had an operation in progress */ @@ -2336,8 +2889,32 @@ static int x509_crt_verify_chain( #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) find_parent: #endif + + /* Obtain list of potential trusted signers from CA callback, + * or use statically provided list. */ +#if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK) + if( f_ca_cb != NULL ) + { + mbedtls_x509_crt_free( ver_chain->trust_ca_cb_result ); + mbedtls_free( ver_chain->trust_ca_cb_result ); + ver_chain->trust_ca_cb_result = NULL; + + ret = f_ca_cb( p_ca_cb, child, &ver_chain->trust_ca_cb_result ); + if( ret != 0 ) + return( MBEDTLS_ERR_X509_FATAL_ERROR ); + + cur_trust_ca = ver_chain->trust_ca_cb_result; + } + else +#endif /* MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK */ + { + ((void) f_ca_cb); + ((void) p_ca_cb); + cur_trust_ca = trust_ca; + } + /* Look for a parent in trusted CAs or up the chain */ - ret = x509_crt_find_parent( child, trust_ca, &parent, + ret = x509_crt_find_parent( child, cur_trust_ca, &parent, &parent_is_trusted, &signature_is_good, ver_chain->len - 1, self_cnt, rs_ctx ); @@ -2425,6 +3002,25 @@ static int x509_crt_check_cn( const mbedtls_x509_buf *name, return( -1 ); } +/* + * Check for SAN match, see RFC 5280 Section 4.2.1.6 + */ +static int x509_crt_check_san( const mbedtls_x509_buf *name, + const char *cn, size_t cn_len ) +{ + const unsigned char san_type = (unsigned char) name->tag & + MBEDTLS_ASN1_TAG_VALUE_MASK; + + /* dNSName */ + if( san_type == MBEDTLS_X509_SAN_DNS_NAME ) + return( x509_crt_check_cn( name, cn, cn_len ) ); + + /* (We may handle other types here later.) */ + + /* Unrecognized type */ + return( -1 ); +} + /* * Verify the requested CN - only call this if cn is not NULL! */ @@ -2440,7 +3036,7 @@ static void x509_crt_verify_name( const mbedtls_x509_crt *crt, { for( cur = &crt->subject_alt_names; cur != NULL; cur = cur->next ) { - if( x509_crt_check_cn( &cur->buf, cn, cn_len ) == 0 ) + if( x509_crt_check_san( &cur->buf, cn, cn_len ) == 0 ) break; } @@ -2472,7 +3068,7 @@ static int x509_crt_merge_flags_with_cb( int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), void *p_vrfy ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned i; uint32_t cur_flags; const mbedtls_x509_crt_verify_chain_item *cur; @@ -2492,36 +3088,6 @@ static int x509_crt_merge_flags_with_cb( return( 0 ); } -/* - * Verify the certificate validity (default profile, not restartable) - */ -int mbedtls_x509_crt_verify( mbedtls_x509_crt *crt, - mbedtls_x509_crt *trust_ca, - mbedtls_x509_crl *ca_crl, - const char *cn, uint32_t *flags, - int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), - void *p_vrfy ) -{ - return( mbedtls_x509_crt_verify_restartable( crt, trust_ca, ca_crl, - &mbedtls_x509_crt_profile_default, cn, flags, - f_vrfy, p_vrfy, NULL ) ); -} - -/* - * Verify the certificate validity (user-chosen profile, not restartable) - */ -int mbedtls_x509_crt_verify_with_profile( mbedtls_x509_crt *crt, - mbedtls_x509_crt *trust_ca, - mbedtls_x509_crl *ca_crl, - const mbedtls_x509_crt_profile *profile, - const char *cn, uint32_t *flags, - int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), - void *p_vrfy ) -{ - return( mbedtls_x509_crt_verify_restartable( crt, trust_ca, ca_crl, - profile, cn, flags, f_vrfy, p_vrfy, NULL ) ); -} - /* * Verify the certificate validity, with profile, restartable version * @@ -2531,17 +3097,26 @@ int mbedtls_x509_crt_verify_with_profile( mbedtls_x509_crt *crt, * as that isn't done as part of chain building/verification currently * - builds and verifies the chain * - then calls the callback and merges the flags + * + * The parameters pairs `trust_ca`, `ca_crl` and `f_ca_cb`, `p_ca_cb` + * are mutually exclusive: If `f_ca_cb != NULL`, it will be used by the + * verification routine to search for trusted signers, and CRLs will + * be disabled. Otherwise, `trust_ca` will be used as the static list + * of trusted signers, and `ca_crl` will be use as the static list + * of CRLs. */ -int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, +static int x509_crt_verify_restartable_ca_cb( mbedtls_x509_crt *crt, mbedtls_x509_crt *trust_ca, mbedtls_x509_crl *ca_crl, + mbedtls_x509_crt_ca_cb_t f_ca_cb, + void *p_ca_cb, const mbedtls_x509_crt_profile *profile, const char *cn, uint32_t *flags, int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), void *p_vrfy, mbedtls_x509_crt_restart_ctx *rs_ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; mbedtls_pk_type_t pk_type; mbedtls_x509_crt_verify_chain ver_chain; uint32_t ee_flags; @@ -2570,7 +3145,8 @@ int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, ee_flags |= MBEDTLS_X509_BADCERT_BAD_KEY; /* Check the chain */ - ret = x509_crt_verify_chain( crt, trust_ca, ca_crl, profile, + ret = x509_crt_verify_chain( crt, trust_ca, ca_crl, + f_ca_cb, p_ca_cb, profile, &ver_chain, rs_ctx ); if( ret != 0 ) @@ -2583,6 +3159,13 @@ int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, ret = x509_crt_merge_flags_with_cb( flags, &ver_chain, f_vrfy, p_vrfy ); exit: + +#if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK) + mbedtls_x509_crt_free( ver_chain.trust_ca_cb_result ); + mbedtls_free( ver_chain.trust_ca_cb_result ); + ver_chain.trust_ca_cb_result = NULL; +#endif /* MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK */ + #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) mbedtls_x509_crt_restart_free( rs_ctx ); @@ -2606,6 +3189,77 @@ int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, return( 0 ); } + +/* + * Verify the certificate validity (default profile, not restartable) + */ +int mbedtls_x509_crt_verify( mbedtls_x509_crt *crt, + mbedtls_x509_crt *trust_ca, + mbedtls_x509_crl *ca_crl, + const char *cn, uint32_t *flags, + int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), + void *p_vrfy ) +{ + return( x509_crt_verify_restartable_ca_cb( crt, trust_ca, ca_crl, + NULL, NULL, + &mbedtls_x509_crt_profile_default, + cn, flags, + f_vrfy, p_vrfy, NULL ) ); +} + +/* + * Verify the certificate validity (user-chosen profile, not restartable) + */ +int mbedtls_x509_crt_verify_with_profile( mbedtls_x509_crt *crt, + mbedtls_x509_crt *trust_ca, + mbedtls_x509_crl *ca_crl, + const mbedtls_x509_crt_profile *profile, + const char *cn, uint32_t *flags, + int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), + void *p_vrfy ) +{ + return( x509_crt_verify_restartable_ca_cb( crt, trust_ca, ca_crl, + NULL, NULL, + profile, cn, flags, + f_vrfy, p_vrfy, NULL ) ); +} + +#if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK) +/* + * Verify the certificate validity (user-chosen profile, CA callback, + * not restartable). + */ +int mbedtls_x509_crt_verify_with_ca_cb( mbedtls_x509_crt *crt, + mbedtls_x509_crt_ca_cb_t f_ca_cb, + void *p_ca_cb, + const mbedtls_x509_crt_profile *profile, + const char *cn, uint32_t *flags, + int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), + void *p_vrfy ) +{ + return( x509_crt_verify_restartable_ca_cb( crt, NULL, NULL, + f_ca_cb, p_ca_cb, + profile, cn, flags, + f_vrfy, p_vrfy, NULL ) ); +} +#endif /* MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK */ + +int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, + mbedtls_x509_crt *trust_ca, + mbedtls_x509_crl *ca_crl, + const mbedtls_x509_crt_profile *profile, + const char *cn, uint32_t *flags, + int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), + void *p_vrfy, + mbedtls_x509_crt_restart_ctx *rs_ctx ) +{ + return( x509_crt_verify_restartable_ca_cb( crt, trust_ca, ca_crl, + NULL, NULL, + profile, cn, flags, + f_vrfy, p_vrfy, rs_ctx ) ); +} + + /* * Initialize a certificate chain */ @@ -2675,7 +3329,17 @@ void mbedtls_x509_crt_free( mbedtls_x509_crt *crt ) mbedtls_free( seq_prv ); } - if( cert_cur->raw.p != NULL ) + seq_cur = cert_cur->certificate_policies.next; + while( seq_cur != NULL ) + { + seq_prv = seq_cur; + seq_cur = seq_cur->next; + mbedtls_platform_zeroize( seq_prv, + sizeof( mbedtls_x509_sequence ) ); + mbedtls_free( seq_prv ); + } + + if( cert_cur->raw.p != NULL && cert_cur->own_buffer ) { mbedtls_platform_zeroize( cert_cur->raw.p, cert_cur->raw.len ); mbedtls_free( cert_cur->raw.p ); diff --git a/Externals/mbedtls/library/x509_csr.c b/Externals/mbedtls/library/x509_csr.c index c8c08c87b230..e259410d071b 100644 --- a/Externals/mbedtls/library/x509_csr.c +++ b/Externals/mbedtls/library/x509_csr.c @@ -1,7 +1,7 @@ /* * X.509 Certificate Signing Request (CSR) parsing * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * The ITU-T X.509 standard defines a certificate format for PKI. @@ -29,15 +27,12 @@ * http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_X509_CSR_PARSE_C) #include "mbedtls/x509_csr.h" +#include "mbedtls/error.h" #include "mbedtls/oid.h" #include "mbedtls/platform_util.h" @@ -68,7 +63,7 @@ static int x509_csr_get_version( unsigned char **p, const unsigned char *end, int *ver ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ( ret = mbedtls_asn1_get_int( p, end, ver ) ) != 0 ) { @@ -78,7 +73,7 @@ static int x509_csr_get_version( unsigned char **p, return( 0 ); } - return( MBEDTLS_ERR_X509_INVALID_VERSION + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_VERSION, ret ) ); } return( 0 ); @@ -90,7 +85,7 @@ static int x509_csr_get_version( unsigned char **p, int mbedtls_x509_csr_parse_der( mbedtls_x509_csr *csr, const unsigned char *buf, size_t buflen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len; unsigned char *p, *end; mbedtls_x509_buf sig_params; @@ -136,8 +131,8 @@ int mbedtls_x509_csr_parse_der( mbedtls_x509_csr *csr, if( len != (size_t) ( end - p ) ) { mbedtls_x509_csr_free( csr ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); } /* @@ -149,7 +144,7 @@ int mbedtls_x509_csr_parse_der( mbedtls_x509_csr *csr, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) { mbedtls_x509_csr_free( csr ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, ret ) ); } end = p + len; @@ -181,7 +176,7 @@ int mbedtls_x509_csr_parse_der( mbedtls_x509_csr *csr, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ) != 0 ) { mbedtls_x509_csr_free( csr ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, ret ) ); } if( ( ret = mbedtls_x509_get_name( &p, p + len, &csr->subject ) ) != 0 ) @@ -215,7 +210,7 @@ int mbedtls_x509_csr_parse_der( mbedtls_x509_csr *csr, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_CONTEXT_SPECIFIC ) ) != 0 ) { mbedtls_x509_csr_free( csr ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + ret ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, ret ) ); } p += len; @@ -249,8 +244,8 @@ int mbedtls_x509_csr_parse_der( mbedtls_x509_csr *csr, if( p != end ) { mbedtls_x509_csr_free( csr ); - return( MBEDTLS_ERR_X509_INVALID_FORMAT + - MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ); + return( MBEDTLS_ERROR_ADD( MBEDTLS_ERR_X509_INVALID_FORMAT, + MBEDTLS_ERR_ASN1_LENGTH_MISMATCH ) ); } return( 0 ); @@ -262,7 +257,7 @@ int mbedtls_x509_csr_parse_der( mbedtls_x509_csr *csr, int mbedtls_x509_csr_parse( mbedtls_x509_csr *csr, const unsigned char *buf, size_t buflen ) { #if defined(MBEDTLS_PEM_PARSE_C) - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t use_len; mbedtls_pem_context pem; #endif @@ -312,7 +307,7 @@ int mbedtls_x509_csr_parse( mbedtls_x509_csr *csr, const unsigned char *buf, siz */ int mbedtls_x509_csr_parse_file( mbedtls_x509_csr *csr, const char *path ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n; unsigned char *buf; @@ -336,7 +331,7 @@ int mbedtls_x509_csr_parse_file( mbedtls_x509_csr *csr, const char *path ) int mbedtls_x509_csr_info( char *buf, size_t size, const char *prefix, const mbedtls_x509_csr *csr ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t n; char *p; char key_size_str[BEFORE_COLON]; diff --git a/Externals/mbedtls/library/x509write_crt.c b/Externals/mbedtls/library/x509write_crt.c index 10497e752bbf..184c90cd33dc 100644 --- a/Externals/mbedtls/library/x509write_crt.c +++ b/Externals/mbedtls/library/x509write_crt.c @@ -1,7 +1,7 @@ /* * X.509 certificate writing * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * References: @@ -25,19 +23,16 @@ * - attributes: PKCS#9 v2.0 aka RFC 2985 */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_X509_CRT_WRITE_C) #include "mbedtls/x509_crt.h" -#include "mbedtls/oid.h" #include "mbedtls/asn1write.h" -#include "mbedtls/sha1.h" +#include "mbedtls/error.h" +#include "mbedtls/oid.h" #include "mbedtls/platform_util.h" +#include "mbedtls/sha1.h" #include @@ -64,41 +59,46 @@ void mbedtls_x509write_crt_free( mbedtls_x509write_cert *ctx ) mbedtls_platform_zeroize( ctx, sizeof( mbedtls_x509write_cert ) ); } -void mbedtls_x509write_crt_set_version( mbedtls_x509write_cert *ctx, int version ) +void mbedtls_x509write_crt_set_version( mbedtls_x509write_cert *ctx, + int version ) { ctx->version = version; } -void mbedtls_x509write_crt_set_md_alg( mbedtls_x509write_cert *ctx, mbedtls_md_type_t md_alg ) +void mbedtls_x509write_crt_set_md_alg( mbedtls_x509write_cert *ctx, + mbedtls_md_type_t md_alg ) { ctx->md_alg = md_alg; } -void mbedtls_x509write_crt_set_subject_key( mbedtls_x509write_cert *ctx, mbedtls_pk_context *key ) +void mbedtls_x509write_crt_set_subject_key( mbedtls_x509write_cert *ctx, + mbedtls_pk_context *key ) { ctx->subject_key = key; } -void mbedtls_x509write_crt_set_issuer_key( mbedtls_x509write_cert *ctx, mbedtls_pk_context *key ) +void mbedtls_x509write_crt_set_issuer_key( mbedtls_x509write_cert *ctx, + mbedtls_pk_context *key ) { ctx->issuer_key = key; } int mbedtls_x509write_crt_set_subject_name( mbedtls_x509write_cert *ctx, - const char *subject_name ) + const char *subject_name ) { return mbedtls_x509_string_to_names( &ctx->subject, subject_name ); } int mbedtls_x509write_crt_set_issuer_name( mbedtls_x509write_cert *ctx, - const char *issuer_name ) + const char *issuer_name ) { return mbedtls_x509_string_to_names( &ctx->issuer, issuer_name ); } -int mbedtls_x509write_crt_set_serial( mbedtls_x509write_cert *ctx, const mbedtls_mpi *serial ) +int mbedtls_x509write_crt_set_serial( mbedtls_x509write_cert *ctx, + const mbedtls_mpi *serial ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; if( ( ret = mbedtls_mpi_copy( &ctx->serial, serial ) ) != 0 ) return( ret ); @@ -106,8 +106,9 @@ int mbedtls_x509write_crt_set_serial( mbedtls_x509write_cert *ctx, const mbedtls return( 0 ); } -int mbedtls_x509write_crt_set_validity( mbedtls_x509write_cert *ctx, const char *not_before, - const char *not_after ) +int mbedtls_x509write_crt_set_validity( mbedtls_x509write_cert *ctx, + const char *not_before, + const char *not_after ) { if( strlen( not_before ) != MBEDTLS_X509_RFC5280_UTC_TIME_LEN - 1 || strlen( not_after ) != MBEDTLS_X509_RFC5280_UTC_TIME_LEN - 1 ) @@ -127,14 +128,14 @@ int mbedtls_x509write_crt_set_extension( mbedtls_x509write_cert *ctx, int critical, const unsigned char *val, size_t val_len ) { - return mbedtls_x509_set_extension( &ctx->extensions, oid, oid_len, - critical, val, val_len ); + return( mbedtls_x509_set_extension( &ctx->extensions, oid, oid_len, + critical, val, val_len ) ); } int mbedtls_x509write_crt_set_basic_constraints( mbedtls_x509write_cert *ctx, - int is_ca, int max_pathlen ) + int is_ca, int max_pathlen ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char buf[9]; unsigned char *c = buf + sizeof(buf); size_t len = 0; @@ -148,30 +149,34 @@ int mbedtls_x509write_crt_set_basic_constraints( mbedtls_x509write_cert *ctx, { if( max_pathlen >= 0 ) { - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_int( &c, buf, max_pathlen ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_int( &c, buf, + max_pathlen ) ); } MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_bool( &c, buf, 1 ) ); } MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, buf, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, buf, MBEDTLS_ASN1_CONSTRUCTED | + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, buf, + MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ); - return mbedtls_x509write_crt_set_extension( ctx, MBEDTLS_OID_BASIC_CONSTRAINTS, - MBEDTLS_OID_SIZE( MBEDTLS_OID_BASIC_CONSTRAINTS ), - 0, buf + sizeof(buf) - len, len ); + return( + mbedtls_x509write_crt_set_extension( ctx, MBEDTLS_OID_BASIC_CONSTRAINTS, + MBEDTLS_OID_SIZE( MBEDTLS_OID_BASIC_CONSTRAINTS ), + is_ca, buf + sizeof(buf) - len, len ) ); } #if defined(MBEDTLS_SHA1_C) int mbedtls_x509write_crt_set_subject_key_identifier( mbedtls_x509write_cert *ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char buf[MBEDTLS_MPI_MAX_SIZE * 2 + 20]; /* tag, length + 2xMPI */ unsigned char *c = buf + sizeof(buf); size_t len = 0; memset( buf, 0, sizeof(buf) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_pk_write_pubkey( &c, buf, ctx->subject_key ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_pk_write_pubkey( &c, buf, ctx->subject_key ) ); ret = mbedtls_sha1_ret( buf + sizeof( buf ) - len, len, buf + sizeof( buf ) - 20 ); @@ -181,22 +186,25 @@ int mbedtls_x509write_crt_set_subject_key_identifier( mbedtls_x509write_cert *ct len = 20; MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, buf, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, buf, MBEDTLS_ASN1_OCTET_STRING ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_tag( &c, buf, MBEDTLS_ASN1_OCTET_STRING ) ); - return mbedtls_x509write_crt_set_extension( ctx, MBEDTLS_OID_SUBJECT_KEY_IDENTIFIER, - MBEDTLS_OID_SIZE( MBEDTLS_OID_SUBJECT_KEY_IDENTIFIER ), - 0, buf + sizeof(buf) - len, len ); + return mbedtls_x509write_crt_set_extension( ctx, + MBEDTLS_OID_SUBJECT_KEY_IDENTIFIER, + MBEDTLS_OID_SIZE( MBEDTLS_OID_SUBJECT_KEY_IDENTIFIER ), + 0, buf + sizeof(buf) - len, len ); } int mbedtls_x509write_crt_set_authority_key_identifier( mbedtls_x509write_cert *ctx ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; unsigned char buf[MBEDTLS_MPI_MAX_SIZE * 2 + 20]; /* tag, length + 2xMPI */ unsigned char *c = buf + sizeof( buf ); size_t len = 0; memset( buf, 0, sizeof(buf) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_pk_write_pubkey( &c, buf, ctx->issuer_key ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_pk_write_pubkey( &c, buf, ctx->issuer_key ) ); ret = mbedtls_sha1_ret( buf + sizeof( buf ) - len, len, buf + sizeof( buf ) - 20 ); @@ -206,63 +214,54 @@ int mbedtls_x509write_crt_set_authority_key_identifier( mbedtls_x509write_cert * len = 20; MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, buf, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, buf, MBEDTLS_ASN1_CONTEXT_SPECIFIC | 0 ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_tag( &c, buf, MBEDTLS_ASN1_CONTEXT_SPECIFIC | 0 ) ); MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, buf, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, buf, MBEDTLS_ASN1_CONSTRUCTED | - MBEDTLS_ASN1_SEQUENCE ) ); - - return mbedtls_x509write_crt_set_extension( ctx, MBEDTLS_OID_AUTHORITY_KEY_IDENTIFIER, - MBEDTLS_OID_SIZE( MBEDTLS_OID_AUTHORITY_KEY_IDENTIFIER ), - 0, buf + sizeof( buf ) - len, len ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_tag( &c, buf, + MBEDTLS_ASN1_CONSTRUCTED | + MBEDTLS_ASN1_SEQUENCE ) ); + + return mbedtls_x509write_crt_set_extension( + ctx, MBEDTLS_OID_AUTHORITY_KEY_IDENTIFIER, + MBEDTLS_OID_SIZE( MBEDTLS_OID_AUTHORITY_KEY_IDENTIFIER ), + 0, buf + sizeof( buf ) - len, len ); } #endif /* MBEDTLS_SHA1_C */ -static size_t crt_get_unused_bits_for_named_bitstring( unsigned char bitstring, - size_t bit_offset ) -{ - size_t unused_bits; - - /* Count the unused bits removing trailing 0s */ - for( unused_bits = bit_offset; unused_bits < 8; unused_bits++ ) - if( ( ( bitstring >> unused_bits ) & 0x1 ) != 0 ) - break; - - return( unused_bits ); -} - int mbedtls_x509write_crt_set_key_usage( mbedtls_x509write_cert *ctx, unsigned int key_usage ) { - unsigned char buf[4], ku; + unsigned char buf[5] = {0}, ku[2] = {0}; unsigned char *c; - int ret; - size_t unused_bits; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const unsigned int allowed_bits = MBEDTLS_X509_KU_DIGITAL_SIGNATURE | MBEDTLS_X509_KU_NON_REPUDIATION | MBEDTLS_X509_KU_KEY_ENCIPHERMENT | MBEDTLS_X509_KU_DATA_ENCIPHERMENT | MBEDTLS_X509_KU_KEY_AGREEMENT | MBEDTLS_X509_KU_KEY_CERT_SIGN | - MBEDTLS_X509_KU_CRL_SIGN; + MBEDTLS_X509_KU_CRL_SIGN | + MBEDTLS_X509_KU_ENCIPHER_ONLY | + MBEDTLS_X509_KU_DECIPHER_ONLY; /* Check that nothing other than the allowed flags is set */ if( ( key_usage & ~allowed_bits ) != 0 ) return( MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE ); - c = buf + 4; - ku = (unsigned char)key_usage; - unused_bits = crt_get_unused_bits_for_named_bitstring( ku, 1 ); - ret = mbedtls_asn1_write_bitstring( &c, buf, &ku, 8 - unused_bits ); + c = buf + 5; + MBEDTLS_PUT_UINT16_LE( key_usage, ku, 0 ); + ret = mbedtls_asn1_write_named_bitstring( &c, buf, ku, 9 ); if( ret < 0 ) return( ret ); - else if( ret < 3 || ret > 4 ) + else if( ret < 3 || ret > 5 ) return( MBEDTLS_ERR_X509_INVALID_FORMAT ); ret = mbedtls_x509write_crt_set_extension( ctx, MBEDTLS_OID_KEY_USAGE, - MBEDTLS_OID_SIZE( MBEDTLS_OID_KEY_USAGE ), - 1, c, (size_t)ret ); + MBEDTLS_OID_SIZE( MBEDTLS_OID_KEY_USAGE ), + 1, c, (size_t)ret ); if( ret != 0 ) return( ret ); @@ -272,24 +271,19 @@ int mbedtls_x509write_crt_set_key_usage( mbedtls_x509write_cert *ctx, int mbedtls_x509write_crt_set_ns_cert_type( mbedtls_x509write_cert *ctx, unsigned char ns_cert_type ) { - unsigned char buf[4]; + unsigned char buf[4] = {0}; unsigned char *c; - size_t unused_bits; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; c = buf + 4; - unused_bits = crt_get_unused_bits_for_named_bitstring( ns_cert_type, 0 ); - ret = mbedtls_asn1_write_bitstring( &c, - buf, - &ns_cert_type, - 8 - unused_bits ); + ret = mbedtls_asn1_write_named_bitstring( &c, buf, &ns_cert_type, 8 ); if( ret < 3 || ret > 4 ) return( ret ); ret = mbedtls_x509write_crt_set_extension( ctx, MBEDTLS_OID_NS_CERT_TYPE, - MBEDTLS_OID_SIZE( MBEDTLS_OID_NS_CERT_TYPE ), - 0, c, (size_t)ret ); + MBEDTLS_OID_SIZE( MBEDTLS_OID_NS_CERT_TYPE ), + 0, c, (size_t)ret ); if( ret != 0 ) return( ret ); @@ -299,7 +293,7 @@ int mbedtls_x509write_crt_set_ns_cert_type( mbedtls_x509write_cert *ctx, static int x509_write_time( unsigned char **p, unsigned char *start, const char *t, size_t size ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t len = 0; /* @@ -311,7 +305,8 @@ static int x509_write_time( unsigned char **p, unsigned char *start, (const unsigned char *) t + 2, size - 2 ) ); MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( p, start, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, MBEDTLS_ASN1_UTC_TIME ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, + MBEDTLS_ASN1_UTC_TIME ) ); } else { @@ -319,31 +314,32 @@ static int x509_write_time( unsigned char **p, unsigned char *start, (const unsigned char *) t, size ) ); MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( p, start, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, MBEDTLS_ASN1_GENERALIZED_TIME ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, + MBEDTLS_ASN1_GENERALIZED_TIME ) ); } return( (int) len ); } -int mbedtls_x509write_crt_der( mbedtls_x509write_cert *ctx, unsigned char *buf, size_t size, - int (*f_rng)(void *, unsigned char *, size_t), - void *p_rng ) +int mbedtls_x509write_crt_der( mbedtls_x509write_cert *ctx, + unsigned char *buf, size_t size, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const char *sig_oid; size_t sig_oid_len = 0; unsigned char *c, *c2; unsigned char hash[64]; - unsigned char sig[MBEDTLS_MPI_MAX_SIZE]; - unsigned char tmp_buf[2048]; + unsigned char sig[MBEDTLS_PK_SIGNATURE_MAX_SIZE]; size_t sub_len = 0, pub_len = 0, sig_and_oid_len = 0, sig_len; size_t len = 0; mbedtls_pk_type_t pk_alg; /* - * Prepare data to be signed in tmp_buf + * Prepare data to be signed at the end of the target buffer */ - c = tmp_buf + sizeof( tmp_buf ); + c = buf + size; /* Signature algorithm needed in TBS, and later for actual signature */ @@ -369,27 +365,36 @@ int mbedtls_x509write_crt_der( mbedtls_x509write_cert *ctx, unsigned char *buf, /* Only for v3 */ if( ctx->version == MBEDTLS_X509_CRT_VERSION_3 ) { - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_x509_write_extensions( &c, tmp_buf, ctx->extensions ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, tmp_buf, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, tmp_buf, MBEDTLS_ASN1_CONSTRUCTED | - MBEDTLS_ASN1_SEQUENCE ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, tmp_buf, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, tmp_buf, MBEDTLS_ASN1_CONTEXT_SPECIFIC | - MBEDTLS_ASN1_CONSTRUCTED | 3 ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_x509_write_extensions( &c, + buf, ctx->extensions ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, buf, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_tag( &c, buf, + MBEDTLS_ASN1_CONSTRUCTED | + MBEDTLS_ASN1_SEQUENCE ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, buf, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_tag( &c, buf, + MBEDTLS_ASN1_CONTEXT_SPECIFIC | + MBEDTLS_ASN1_CONSTRUCTED | 3 ) ); } /* * SubjectPublicKeyInfo */ - MBEDTLS_ASN1_CHK_ADD( pub_len, mbedtls_pk_write_pubkey_der( ctx->subject_key, - tmp_buf, c - tmp_buf ) ); + MBEDTLS_ASN1_CHK_ADD( pub_len, + mbedtls_pk_write_pubkey_der( ctx->subject_key, + buf, c - buf ) ); c -= pub_len; len += pub_len; /* * Subject ::= Name */ - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_x509_write_names( &c, tmp_buf, ctx->subject ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_x509_write_names( &c, buf, + ctx->subject ) ); /* * Validity ::= SEQUENCE { @@ -398,32 +403,39 @@ int mbedtls_x509write_crt_der( mbedtls_x509write_cert *ctx, unsigned char *buf, */ sub_len = 0; - MBEDTLS_ASN1_CHK_ADD( sub_len, x509_write_time( &c, tmp_buf, ctx->not_after, - MBEDTLS_X509_RFC5280_UTC_TIME_LEN ) ); + MBEDTLS_ASN1_CHK_ADD( sub_len, + x509_write_time( &c, buf, ctx->not_after, + MBEDTLS_X509_RFC5280_UTC_TIME_LEN ) ); - MBEDTLS_ASN1_CHK_ADD( sub_len, x509_write_time( &c, tmp_buf, ctx->not_before, - MBEDTLS_X509_RFC5280_UTC_TIME_LEN ) ); + MBEDTLS_ASN1_CHK_ADD( sub_len, + x509_write_time( &c, buf, ctx->not_before, + MBEDTLS_X509_RFC5280_UTC_TIME_LEN ) ); len += sub_len; - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, tmp_buf, sub_len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, tmp_buf, MBEDTLS_ASN1_CONSTRUCTED | - MBEDTLS_ASN1_SEQUENCE ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, buf, sub_len ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_tag( &c, buf, + MBEDTLS_ASN1_CONSTRUCTED | + MBEDTLS_ASN1_SEQUENCE ) ); /* * Issuer ::= Name */ - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_x509_write_names( &c, tmp_buf, ctx->issuer ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_x509_write_names( &c, buf, + ctx->issuer ) ); /* * Signature ::= AlgorithmIdentifier */ - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_algorithm_identifier( &c, tmp_buf, - sig_oid, strlen( sig_oid ), 0 ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_algorithm_identifier( &c, buf, + sig_oid, strlen( sig_oid ), 0 ) ); /* * Serial ::= INTEGER */ - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_mpi( &c, tmp_buf, &ctx->serial ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_mpi( &c, buf, + &ctx->serial ) ); /* * Version ::= INTEGER { v1(0), v2(1), v3(2) } @@ -433,48 +445,67 @@ int mbedtls_x509write_crt_der( mbedtls_x509write_cert *ctx, unsigned char *buf, if( ctx->version != MBEDTLS_X509_CRT_VERSION_1 ) { sub_len = 0; - MBEDTLS_ASN1_CHK_ADD( sub_len, mbedtls_asn1_write_int( &c, tmp_buf, ctx->version ) ); + MBEDTLS_ASN1_CHK_ADD( sub_len, + mbedtls_asn1_write_int( &c, buf, ctx->version ) ); len += sub_len; - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, tmp_buf, sub_len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, tmp_buf, MBEDTLS_ASN1_CONTEXT_SPECIFIC | - MBEDTLS_ASN1_CONSTRUCTED | 0 ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_len( &c, buf, sub_len ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_tag( &c, buf, + MBEDTLS_ASN1_CONTEXT_SPECIFIC | + MBEDTLS_ASN1_CONSTRUCTED | 0 ) ); } - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, tmp_buf, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, tmp_buf, MBEDTLS_ASN1_CONSTRUCTED | - MBEDTLS_ASN1_SEQUENCE ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, buf, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_tag( &c, buf, MBEDTLS_ASN1_CONSTRUCTED | + MBEDTLS_ASN1_SEQUENCE ) ); /* * Make signature */ + + /* Compute hash of CRT. */ if( ( ret = mbedtls_md( mbedtls_md_info_from_type( ctx->md_alg ), c, len, hash ) ) != 0 ) { return( ret ); } - if( ( ret = mbedtls_pk_sign( ctx->issuer_key, ctx->md_alg, hash, 0, sig, &sig_len, - f_rng, p_rng ) ) != 0 ) + if( ( ret = mbedtls_pk_sign( ctx->issuer_key, ctx->md_alg, + hash, 0, sig, &sig_len, + f_rng, p_rng ) ) != 0 ) { return( ret ); } - /* - * Write data to output buffer - */ + /* Move CRT to the front of the buffer to have space + * for the signature. */ + memmove( buf, c, len ); + c = buf + len; + + /* Add signature at the end of the buffer, + * making sure that it doesn't underflow + * into the CRT buffer. */ c2 = buf + size; - MBEDTLS_ASN1_CHK_ADD( sig_and_oid_len, mbedtls_x509_write_sig( &c2, buf, + MBEDTLS_ASN1_CHK_ADD( sig_and_oid_len, mbedtls_x509_write_sig( &c2, c, sig_oid, sig_oid_len, sig, sig_len ) ); - if( len > (size_t)( c2 - buf ) ) - return( MBEDTLS_ERR_ASN1_BUF_TOO_SMALL ); + /* + * Memory layout after this step: + * + * buf c=buf+len c2 buf+size + * [CRT0,...,CRTn, UNUSED, ..., UNUSED, SIG0, ..., SIGm] + */ - c2 -= len; - memcpy( c2, c, len ); + /* Move raw CRT to just before the signature. */ + c = c2 - len; + memmove( c, buf, len ); len += sig_and_oid_len; - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c2, buf, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c2, buf, MBEDTLS_ASN1_CONSTRUCTED | + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, buf, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, buf, + MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ); return( (int) len ); @@ -484,23 +515,23 @@ int mbedtls_x509write_crt_der( mbedtls_x509write_cert *ctx, unsigned char *buf, #define PEM_END_CRT "-----END CERTIFICATE-----\n" #if defined(MBEDTLS_PEM_WRITE_C) -int mbedtls_x509write_crt_pem( mbedtls_x509write_cert *crt, unsigned char *buf, size_t size, - int (*f_rng)(void *, unsigned char *, size_t), - void *p_rng ) +int mbedtls_x509write_crt_pem( mbedtls_x509write_cert *crt, + unsigned char *buf, size_t size, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ) { - int ret; - unsigned char output_buf[4096]; - size_t olen = 0; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t olen; - if( ( ret = mbedtls_x509write_crt_der( crt, output_buf, sizeof(output_buf), + if( ( ret = mbedtls_x509write_crt_der( crt, buf, size, f_rng, p_rng ) ) < 0 ) { return( ret ); } if( ( ret = mbedtls_pem_write_buffer( PEM_BEGIN_CRT, PEM_END_CRT, - output_buf + sizeof(output_buf) - ret, - ret, buf, size, &olen ) ) != 0 ) + buf + size - ret, ret, + buf, size, &olen ) ) != 0 ) { return( ret ); } diff --git a/Externals/mbedtls/library/x509write_csr.c b/Externals/mbedtls/library/x509write_csr.c index d70ba0ed9277..afda9503412d 100644 --- a/Externals/mbedtls/library/x509write_csr.c +++ b/Externals/mbedtls/library/x509write_csr.c @@ -1,7 +1,7 @@ /* * X.509 Certificate Signing Request writing * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,8 +15,6 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ /* * References: @@ -24,19 +22,21 @@ * - attributes: PKCS#9 v2.0 aka RFC 2985 */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_X509_CSR_WRITE_C) #include "mbedtls/x509_csr.h" -#include "mbedtls/oid.h" #include "mbedtls/asn1write.h" +#include "mbedtls/error.h" +#include "mbedtls/oid.h" #include "mbedtls/platform_util.h" +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "psa/crypto.h" +#include "mbedtls/psa_util.h" +#endif + #include #include @@ -44,6 +44,14 @@ #include "mbedtls/pem.h" #endif +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#include +#define mbedtls_calloc calloc +#define mbedtls_free free +#endif + void mbedtls_x509write_csr_init( mbedtls_x509write_csr *ctx ) { memset( ctx, 0, sizeof( mbedtls_x509write_csr ) ); @@ -81,35 +89,17 @@ int mbedtls_x509write_csr_set_extension( mbedtls_x509write_csr *ctx, 0, val, val_len ); } -static size_t csr_get_unused_bits_for_named_bitstring( unsigned char bitstring, - size_t bit_offset ) -{ - size_t unused_bits; - - /* Count the unused bits removing trailing 0s */ - for( unused_bits = bit_offset; unused_bits < 8; unused_bits++ ) - if( ( ( bitstring >> unused_bits ) & 0x1 ) != 0 ) - break; - - return( unused_bits ); -} - int mbedtls_x509write_csr_set_key_usage( mbedtls_x509write_csr *ctx, unsigned char key_usage ) { - unsigned char buf[4]; + unsigned char buf[4] = {0}; unsigned char *c; - size_t unused_bits; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; c = buf + 4; - unused_bits = csr_get_unused_bits_for_named_bitstring( key_usage, 0 ); - ret = mbedtls_asn1_write_bitstring( &c, buf, &key_usage, 8 - unused_bits ); - - if( ret < 0 ) + ret = mbedtls_asn1_write_named_bitstring( &c, buf, &key_usage, 8 ); + if( ret < 3 || ret > 4 ) return( ret ); - else if( ret < 3 || ret > 4 ) - return( MBEDTLS_ERR_X509_INVALID_FORMAT ); ret = mbedtls_x509write_csr_set_extension( ctx, MBEDTLS_OID_KEY_USAGE, MBEDTLS_OID_SIZE( MBEDTLS_OID_KEY_USAGE ), @@ -123,22 +113,14 @@ int mbedtls_x509write_csr_set_key_usage( mbedtls_x509write_csr *ctx, unsigned ch int mbedtls_x509write_csr_set_ns_cert_type( mbedtls_x509write_csr *ctx, unsigned char ns_cert_type ) { - unsigned char buf[4]; + unsigned char buf[4] = {0}; unsigned char *c; - size_t unused_bits; - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; c = buf + 4; - unused_bits = csr_get_unused_bits_for_named_bitstring( ns_cert_type, 0 ); - ret = mbedtls_asn1_write_bitstring( &c, - buf, - &ns_cert_type, - 8 - unused_bits ); - - if( ret < 0 ) - return( ret ); - else if( ret < 3 || ret > 4 ) + ret = mbedtls_asn1_write_named_bitstring( &c, buf, &ns_cert_type, 8 ); + if( ret < 3 || ret > 4 ) return( ret ); ret = mbedtls_x509write_csr_set_extension( ctx, MBEDTLS_OID_NS_CERT_TYPE, @@ -150,74 +132,108 @@ int mbedtls_x509write_csr_set_ns_cert_type( mbedtls_x509write_csr *ctx, return( 0 ); } -int mbedtls_x509write_csr_der( mbedtls_x509write_csr *ctx, unsigned char *buf, size_t size, - int (*f_rng)(void *, unsigned char *, size_t), - void *p_rng ) +static int x509write_csr_der_internal( mbedtls_x509write_csr *ctx, + unsigned char *buf, + size_t size, + unsigned char *sig, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; const char *sig_oid; size_t sig_oid_len = 0; unsigned char *c, *c2; unsigned char hash[64]; - unsigned char sig[MBEDTLS_MPI_MAX_SIZE]; - unsigned char tmp_buf[2048]; size_t pub_len = 0, sig_and_oid_len = 0, sig_len; size_t len = 0; mbedtls_pk_type_t pk_alg; +#if defined(MBEDTLS_USE_PSA_CRYPTO) + psa_hash_operation_t hash_operation = PSA_HASH_OPERATION_INIT; + size_t hash_len; + psa_algorithm_t hash_alg = mbedtls_psa_translate_md( ctx->md_alg ); +#endif /* MBEDTLS_USE_PSA_CRYPTO */ - /* - * Prepare data to be signed in tmp_buf - */ - c = tmp_buf + sizeof( tmp_buf ); + /* Write the CSR backwards starting from the end of buf */ + c = buf + size; - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_x509_write_extensions( &c, tmp_buf, ctx->extensions ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_x509_write_extensions( &c, buf, + ctx->extensions ) ); if( len ) { - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, tmp_buf, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, tmp_buf, MBEDTLS_ASN1_CONSTRUCTED | - MBEDTLS_ASN1_SEQUENCE ) ); - - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, tmp_buf, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, tmp_buf, MBEDTLS_ASN1_CONSTRUCTED | - MBEDTLS_ASN1_SET ) ); - - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_oid( &c, tmp_buf, MBEDTLS_OID_PKCS9_CSR_EXT_REQ, - MBEDTLS_OID_SIZE( MBEDTLS_OID_PKCS9_CSR_EXT_REQ ) ) ); - - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, tmp_buf, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, tmp_buf, MBEDTLS_ASN1_CONSTRUCTED | - MBEDTLS_ASN1_SEQUENCE ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, buf, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_tag( + &c, buf, + MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ); + + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, buf, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_tag( + &c, buf, + MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SET ) ); + + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_oid( + &c, buf, MBEDTLS_OID_PKCS9_CSR_EXT_REQ, + MBEDTLS_OID_SIZE( MBEDTLS_OID_PKCS9_CSR_EXT_REQ ) ) ); + + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, buf, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_tag( + &c, buf, + MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ); } - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, tmp_buf, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, tmp_buf, MBEDTLS_ASN1_CONSTRUCTED | - MBEDTLS_ASN1_CONTEXT_SPECIFIC ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, buf, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_tag( + &c, buf, + MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_CONTEXT_SPECIFIC ) ); MBEDTLS_ASN1_CHK_ADD( pub_len, mbedtls_pk_write_pubkey_der( ctx->key, - tmp_buf, c - tmp_buf ) ); + buf, c - buf ) ); c -= pub_len; len += pub_len; /* * Subject ::= Name */ - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_x509_write_names( &c, tmp_buf, ctx->subject ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_x509_write_names( &c, buf, + ctx->subject ) ); /* * Version ::= INTEGER { v1(0), v2(1), v3(2) } */ - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_int( &c, tmp_buf, 0 ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_int( &c, buf, 0 ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, tmp_buf, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c, tmp_buf, MBEDTLS_ASN1_CONSTRUCTED | - MBEDTLS_ASN1_SEQUENCE ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c, buf, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_tag( + &c, buf, + MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ); /* - * Prepare signature + * Sign the written CSR data into the sig buffer + * Note: hash errors can happen only after an internal error */ - mbedtls_md( mbedtls_md_info_from_type( ctx->md_alg ), c, len, hash ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) + if( psa_hash_setup( &hash_operation, hash_alg ) != PSA_SUCCESS ) + return( MBEDTLS_ERR_X509_FATAL_ERROR ); + if( psa_hash_update( &hash_operation, c, len ) != PSA_SUCCESS ) + return( MBEDTLS_ERR_X509_FATAL_ERROR ); + + if( psa_hash_finish( &hash_operation, hash, sizeof( hash ), &hash_len ) + != PSA_SUCCESS ) + { + return( MBEDTLS_ERR_X509_FATAL_ERROR ); + } +#else /* MBEDTLS_USE_PSA_CRYPTO */ + ret = mbedtls_md( mbedtls_md_info_from_type( ctx->md_alg ), c, len, hash ); + if( ret != 0 ) + return( ret ); +#endif if( ( ret = mbedtls_pk_sign( ctx->key, ctx->md_alg, hash, 0, sig, &sig_len, f_rng, p_rng ) ) != 0 ) { @@ -232,32 +248,68 @@ int mbedtls_x509write_csr_der( mbedtls_x509write_csr *ctx, unsigned char *buf, s return( MBEDTLS_ERR_X509_INVALID_ALG ); if( ( ret = mbedtls_oid_get_oid_by_sig_alg( pk_alg, ctx->md_alg, - &sig_oid, &sig_oid_len ) ) != 0 ) + &sig_oid, &sig_oid_len ) ) != 0 ) { return( ret ); } /* - * Write data to output buffer + * Move the written CSR data to the start of buf to create space for + * writing the signature into buf. */ - c2 = buf + size; - MBEDTLS_ASN1_CHK_ADD( sig_and_oid_len, mbedtls_x509_write_sig( &c2, buf, - sig_oid, sig_oid_len, sig, sig_len ) ); + memmove( buf, c, len ); - if( len > (size_t)( c2 - buf ) ) - return( MBEDTLS_ERR_ASN1_BUF_TOO_SMALL ); + /* + * Write sig and its OID into buf backwards from the end of buf. + * Note: mbedtls_x509_write_sig will check for c2 - ( buf + len ) < sig_len + * and return MBEDTLS_ERR_ASN1_BUF_TOO_SMALL if needed. + */ + c2 = buf + size; + MBEDTLS_ASN1_CHK_ADD( sig_and_oid_len, + mbedtls_x509_write_sig( &c2, buf + len, sig_oid, sig_oid_len, + sig, sig_len ) ); + /* + * Compact the space between the CSR data and signature by moving the + * CSR data to the start of the signature. + */ c2 -= len; - memcpy( c2, c, len ); + memmove( c2, buf, len ); + /* ASN encode the total size and tag the CSR data with it. */ len += sig_and_oid_len; MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( &c2, buf, len ) ); - MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( &c2, buf, MBEDTLS_ASN1_CONSTRUCTED | - MBEDTLS_ASN1_SEQUENCE ) ); + MBEDTLS_ASN1_CHK_ADD( len, + mbedtls_asn1_write_tag( + &c2, buf, + MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE ) ); + + /* Zero the unused bytes at the start of buf */ + memset( buf, 0, c2 - buf); return( (int) len ); } +int mbedtls_x509write_csr_der( mbedtls_x509write_csr *ctx, unsigned char *buf, + size_t size, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ) +{ + int ret; + unsigned char *sig; + + if( ( sig = mbedtls_calloc( 1, MBEDTLS_PK_SIGNATURE_MAX_SIZE ) ) == NULL ) + { + return( MBEDTLS_ERR_X509_ALLOC_FAILED ); + } + + ret = x509write_csr_der_internal( ctx, buf, size, sig, f_rng, p_rng ); + + mbedtls_free( sig ); + + return( ret ); +} + #define PEM_BEGIN_CSR "-----BEGIN CERTIFICATE REQUEST-----\n" #define PEM_END_CSR "-----END CERTIFICATE REQUEST-----\n" @@ -266,18 +318,17 @@ int mbedtls_x509write_csr_pem( mbedtls_x509write_csr *ctx, unsigned char *buf, s int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; - unsigned char output_buf[4096]; + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; size_t olen = 0; - if( ( ret = mbedtls_x509write_csr_der( ctx, output_buf, sizeof(output_buf), + if( ( ret = mbedtls_x509write_csr_der( ctx, buf, size, f_rng, p_rng ) ) < 0 ) { return( ret ); } if( ( ret = mbedtls_pem_write_buffer( PEM_BEGIN_CSR, PEM_END_CSR, - output_buf + sizeof(output_buf) - ret, + buf + size - ret, ret, buf, size, &olen ) ) != 0 ) { return( ret ); diff --git a/Externals/mbedtls/library/xtea.c b/Externals/mbedtls/library/xtea.c index a33707bc175a..77f6cb6f677c 100644 --- a/Externals/mbedtls/library/xtea.c +++ b/Externals/mbedtls/library/xtea.c @@ -1,7 +1,7 @@ /* * An 32-bit implementation of the XTEA algorithm * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright The Mbed TLS Contributors * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -15,15 +15,9 @@ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif +#include "common.h" #if defined(MBEDTLS_XTEA_C) @@ -43,29 +37,6 @@ #if !defined(MBEDTLS_XTEA_ALT) -/* - * 32-bit integer manipulation macros (big endian) - */ -#ifndef GET_UINT32_BE -#define GET_UINT32_BE(n,b,i) \ -{ \ - (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ - | ( (uint32_t) (b)[(i) + 1] << 16 ) \ - | ( (uint32_t) (b)[(i) + 2] << 8 ) \ - | ( (uint32_t) (b)[(i) + 3] ); \ -} -#endif - -#ifndef PUT_UINT32_BE -#define PUT_UINT32_BE(n,b,i) \ -{ \ - (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ - (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ - (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \ - (b)[(i) + 3] = (unsigned char) ( (n) ); \ -} -#endif - void mbedtls_xtea_init( mbedtls_xtea_context *ctx ) { memset( ctx, 0, sizeof( mbedtls_xtea_context ) ); @@ -90,7 +61,7 @@ void mbedtls_xtea_setup( mbedtls_xtea_context *ctx, const unsigned char key[16] for( i = 0; i < 4; i++ ) { - GET_UINT32_BE( ctx->k[i], key, i << 2 ); + ctx->k[i] = MBEDTLS_GET_UINT32_BE( key, i << 2 ); } } @@ -104,8 +75,8 @@ int mbedtls_xtea_crypt_ecb( mbedtls_xtea_context *ctx, int mode, k = ctx->k; - GET_UINT32_BE( v0, input, 0 ); - GET_UINT32_BE( v1, input, 4 ); + v0 = MBEDTLS_GET_UINT32_BE( input, 0 ); + v1 = MBEDTLS_GET_UINT32_BE( input, 4 ); if( mode == MBEDTLS_XTEA_ENCRYPT ) { @@ -130,8 +101,8 @@ int mbedtls_xtea_crypt_ecb( mbedtls_xtea_context *ctx, int mode, } } - PUT_UINT32_BE( v0, output, 0 ); - PUT_UINT32_BE( v1, output, 4 ); + MBEDTLS_PUT_UINT32_BE( v0, output, 0 ); + MBEDTLS_PUT_UINT32_BE( v1, output, 4 ); return( 0 ); } diff --git a/Externals/mbedtls/mbedTLS.vcxproj b/Externals/mbedtls/mbedTLS.vcxproj index aedf6d434e36..6cb098c0add1 100644 --- a/Externals/mbedtls/mbedTLS.vcxproj +++ b/Externals/mbedtls/mbedTLS.vcxproj @@ -1,5 +1,5 @@  - + @@ -15,6 +15,11 @@
+ + + .\library;%(AdditionalIncludeDirectories) + + @@ -32,9 +37,10 @@ - + + @@ -42,10 +48,10 @@ - - + + @@ -55,8 +61,9 @@ - + + @@ -64,19 +71,32 @@ true - + - + + + + + + + + + + + + + + - + @@ -84,18 +104,20 @@ + + - - + + diff --git a/Externals/mbedtls/scripts/config.py b/Externals/mbedtls/scripts/config.py new file mode 100644 index 000000000000..01f570e17787 --- /dev/null +++ b/Externals/mbedtls/scripts/config.py @@ -0,0 +1,536 @@ +#!/usr/bin/env python3 + +"""Mbed TLS configuration file manipulation library and tool + +Basic usage, to read the Mbed TLS or Mbed Crypto configuration: + config = ConfigFile() + if 'MBEDTLS_RSA_C' in config: print('RSA is enabled') +""" + +## Copyright The Mbed TLS Contributors +## SPDX-License-Identifier: Apache-2.0 +## +## Licensed under the Apache License, Version 2.0 (the "License"); you may +## not use this file except in compliance with the License. +## You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +## WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. + +import os +import re + +class Setting: + """Representation of one Mbed TLS config.h setting. + + Fields: + * name: the symbol name ('MBEDTLS_xxx'). + * value: the value of the macro. The empty string for a plain #define + with no value. + * active: True if name is defined, False if a #define for name is + present in config.h but commented out. + * section: the name of the section that contains this symbol. + """ + # pylint: disable=too-few-public-methods + def __init__(self, active, name, value='', section=None): + self.active = active + self.name = name + self.value = value + self.section = section + +class Config: + """Representation of the Mbed TLS configuration. + + In the documentation of this class, a symbol is said to be *active* + if there is a #define for it that is not commented out, and *known* + if there is a #define for it whether commented out or not. + + This class supports the following protocols: + * `name in config` is `True` if the symbol `name` is active, `False` + otherwise (whether `name` is inactive or not known). + * `config[name]` is the value of the macro `name`. If `name` is inactive, + raise `KeyError` (even if `name` is known). + * `config[name] = value` sets the value associated to `name`. `name` + must be known, but does not need to be set. This does not cause + name to become set. + """ + + def __init__(self): + self.settings = {} + + def __contains__(self, name): + """True if the given symbol is active (i.e. set). + + False if the given symbol is not set, even if a definition + is present but commented out. + """ + return name in self.settings and self.settings[name].active + + def all(self, *names): + """True if all the elements of names are active (i.e. set).""" + return all(self.__contains__(name) for name in names) + + def any(self, *names): + """True if at least one symbol in names are active (i.e. set).""" + return any(self.__contains__(name) for name in names) + + def known(self, name): + """True if a #define for name is present, whether it's commented out or not.""" + return name in self.settings + + def __getitem__(self, name): + """Get the value of name, i.e. what the preprocessor symbol expands to. + + If name is not known, raise KeyError. name does not need to be active. + """ + return self.settings[name].value + + def get(self, name, default=None): + """Get the value of name. If name is inactive (not set), return default. + + If a #define for name is present and not commented out, return + its expansion, even if this is the empty string. + + If a #define for name is present but commented out, return default. + """ + if name in self.settings: + return self.settings[name].value + else: + return default + + def __setitem__(self, name, value): + """If name is known, set its value. + + If name is not known, raise KeyError. + """ + self.settings[name].value = value + + def set(self, name, value=None): + """Set name to the given value and make it active. + + If value is None and name is already known, don't change its value. + If value is None and name is not known, set its value to the empty + string. + """ + if name in self.settings: + if value is not None: + self.settings[name].value = value + self.settings[name].active = True + else: + self.settings[name] = Setting(True, name, value=value) + + def unset(self, name): + """Make name unset (inactive). + + name remains known if it was known before. + """ + if name not in self.settings: + return + self.settings[name].active = False + + def adapt(self, adapter): + """Run adapter on each known symbol and (de)activate it accordingly. + + `adapter` must be a function that returns a boolean. It is called as + `adapter(name, active, section)` for each setting, where `active` is + `True` if `name` is set and `False` if `name` is known but unset, + and `section` is the name of the section containing `name`. If + `adapter` returns `True`, then set `name` (i.e. make it active), + otherwise unset `name` (i.e. make it known but inactive). + """ + for setting in self.settings.values(): + setting.active = adapter(setting.name, setting.active, + setting.section) + +def is_full_section(section): + """Is this section affected by "config.py full" and friends?""" + return section.endswith('support') or section.endswith('modules') + +def realfull_adapter(_name, active, section): + """Activate all symbols found in the system and feature sections.""" + if not is_full_section(section): + return active + return True + +# The goal of the full configuration is to have everything that can be tested +# together. This includes deprecated or insecure options. It excludes: +# * Options that require additional build dependencies or unusual hardware. +# * Options that make testing less effective. +# * Options that are incompatible with other options, or more generally that +# interact with other parts of the code in such a way that a bulk enabling +# is not a good way to test them. +# * Options that remove features. +EXCLUDE_FROM_FULL = frozenset([ + #pylint: disable=line-too-long + 'MBEDTLS_CTR_DRBG_USE_128_BIT_KEY', # interacts with ENTROPY_FORCE_SHA256 + 'MBEDTLS_DEPRECATED_REMOVED', # conflicts with deprecated options + 'MBEDTLS_DEPRECATED_WARNING', # conflicts with deprecated options + 'MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED', # influences the use of ECDH in TLS + 'MBEDTLS_ECP_NO_FALLBACK', # removes internal ECP implementation + 'MBEDTLS_ECP_NO_INTERNAL_RNG', # removes a feature + 'MBEDTLS_ECP_RESTARTABLE', # incompatible with USE_PSA_CRYPTO + 'MBEDTLS_ENTROPY_FORCE_SHA256', # interacts with CTR_DRBG_128_BIT_KEY + 'MBEDTLS_HAVE_SSE2', # hardware dependency + 'MBEDTLS_MEMORY_BACKTRACE', # depends on MEMORY_BUFFER_ALLOC_C + 'MBEDTLS_MEMORY_BUFFER_ALLOC_C', # makes sanitizers (e.g. ASan) less effective + 'MBEDTLS_MEMORY_DEBUG', # depends on MEMORY_BUFFER_ALLOC_C + 'MBEDTLS_NO_64BIT_MULTIPLICATION', # influences anything that uses bignum + 'MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES', # removes a feature + 'MBEDTLS_NO_PLATFORM_ENTROPY', # removes a feature + 'MBEDTLS_NO_UDBL_DIVISION', # influences anything that uses bignum + 'MBEDTLS_PKCS11_C', # build dependency (libpkcs11-helper) + 'MBEDTLS_PLATFORM_NO_STD_FUNCTIONS', # removes a feature + 'MBEDTLS_PSA_CRYPTO_CONFIG', # toggles old/new style PSA config + 'MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG', # behavior change + build dependency + 'MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER', # incompatible with USE_PSA_CRYPTO + 'MBEDTLS_PSA_CRYPTO_SPM', # platform dependency (PSA SPM) + 'MBEDTLS_PSA_INJECT_ENTROPY', # build dependency (hook functions) + 'MBEDTLS_REMOVE_3DES_CIPHERSUITES', # removes a feature + 'MBEDTLS_REMOVE_ARC4_CIPHERSUITES', # removes a feature + 'MBEDTLS_RSA_NO_CRT', # influences the use of RSA in X.509 and TLS + 'MBEDTLS_SHA512_NO_SHA384', # removes a feature + 'MBEDTLS_SSL_HW_RECORD_ACCEL', # build dependency (hook functions) + 'MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN', # build dependency (clang+memsan) + 'MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND', # build dependency (valgrind headers) + 'MBEDTLS_TEST_NULL_ENTROPY', # removes a feature + 'MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION', # influences the use of X.509 in TLS + 'MBEDTLS_ZLIB_SUPPORT', # build dependency (libz) +]) + +def is_seamless_alt(name): + """Whether the xxx_ALT symbol should be included in the full configuration. + + Include alternative implementations of platform functions, which are + configurable function pointers that default to the built-in function. + This way we test that the function pointers exist and build correctly + without changing the behavior, and tests can verify that the function + pointers are used by modifying those pointers. + + Exclude alternative implementations of library functions since they require + an implementation of the relevant functions and an xxx_alt.h header. + """ + if name == 'MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT': + # Similar to non-platform xxx_ALT, requires platform_alt.h + return False + return name.startswith('MBEDTLS_PLATFORM_') + +def include_in_full(name): + """Rules for symbols in the "full" configuration.""" + if name in EXCLUDE_FROM_FULL: + return False + if name.endswith('_ALT'): + return is_seamless_alt(name) + return True + +def full_adapter(name, active, section): + """Config adapter for "full".""" + if not is_full_section(section): + return active + return include_in_full(name) + +# The baremetal configuration excludes options that require a library or +# operating system feature that is typically not present on bare metal +# systems. Features that are excluded from "full" won't be in "baremetal" +# either (unless explicitly turned on in baremetal_adapter) so they don't +# need to be repeated here. +EXCLUDE_FROM_BAREMETAL = frozenset([ + #pylint: disable=line-too-long + 'MBEDTLS_ENTROPY_NV_SEED', # requires a filesystem and FS_IO or alternate NV seed hooks + 'MBEDTLS_FS_IO', # requires a filesystem + 'MBEDTLS_HAVEGE_C', # requires a clock + 'MBEDTLS_HAVE_TIME', # requires a clock + 'MBEDTLS_HAVE_TIME_DATE', # requires a clock + 'MBEDTLS_NET_C', # requires POSIX-like networking + 'MBEDTLS_PLATFORM_FPRINTF_ALT', # requires FILE* from stdio.h + 'MBEDTLS_PLATFORM_NV_SEED_ALT', # requires a filesystem and ENTROPY_NV_SEED + 'MBEDTLS_PLATFORM_TIME_ALT', # requires a clock and HAVE_TIME + 'MBEDTLS_PSA_CRYPTO_SE_C', # requires a filesystem and PSA_CRYPTO_STORAGE_C + 'MBEDTLS_PSA_CRYPTO_STORAGE_C', # requires a filesystem + 'MBEDTLS_PSA_ITS_FILE_C', # requires a filesystem + 'MBEDTLS_THREADING_C', # requires a threading interface + 'MBEDTLS_THREADING_PTHREAD', # requires pthread + 'MBEDTLS_TIMING_C', # requires a clock +]) + +def keep_in_baremetal(name): + """Rules for symbols in the "baremetal" configuration.""" + if name in EXCLUDE_FROM_BAREMETAL: + return False + return True + +def baremetal_adapter(name, active, section): + """Config adapter for "baremetal".""" + if not is_full_section(section): + return active + if name == 'MBEDTLS_NO_PLATFORM_ENTROPY': + # No OS-provided entropy source + return True + return include_in_full(name) and keep_in_baremetal(name) + +def include_in_crypto(name): + """Rules for symbols in a crypto configuration.""" + if name.startswith('MBEDTLS_X509_') or \ + name.startswith('MBEDTLS_SSL_') or \ + name.startswith('MBEDTLS_KEY_EXCHANGE_'): + return False + if name in [ + 'MBEDTLS_CERTS_C', # part of libmbedx509 + 'MBEDTLS_DEBUG_C', # part of libmbedtls + 'MBEDTLS_NET_C', # part of libmbedtls + 'MBEDTLS_PKCS11_C', # part of libmbedx509 + ]: + return False + return True + +def crypto_adapter(adapter): + """Modify an adapter to disable non-crypto symbols. + + ``crypto_adapter(adapter)(name, active, section)`` is like + ``adapter(name, active, section)``, but unsets all X.509 and TLS symbols. + """ + def continuation(name, active, section): + if not include_in_crypto(name): + return False + if adapter is None: + return active + return adapter(name, active, section) + return continuation + +DEPRECATED = frozenset([ + 'MBEDTLS_SSL_PROTO_SSL3', + 'MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO', +]) + +def no_deprecated_adapter(adapter): + """Modify an adapter to disable deprecated symbols. + + ``no_deprecated_adapter(adapter)(name, active, section)`` is like + ``adapter(name, active, section)``, but unsets all deprecated symbols + and sets ``MBEDTLS_DEPRECATED_REMOVED``. + """ + def continuation(name, active, section): + if name == 'MBEDTLS_DEPRECATED_REMOVED': + return True + if name in DEPRECATED: + return False + if adapter is None: + return active + return adapter(name, active, section) + return continuation + +class ConfigFile(Config): + """Representation of the Mbed TLS configuration read for a file. + + See the documentation of the `Config` class for methods to query + and modify the configuration. + """ + + _path_in_tree = 'include/mbedtls/config.h' + default_path = [_path_in_tree, + os.path.join(os.path.dirname(__file__), + os.pardir, + _path_in_tree), + os.path.join(os.path.dirname(os.path.abspath(os.path.dirname(__file__))), + _path_in_tree)] + + def __init__(self, filename=None): + """Read the Mbed TLS configuration file.""" + if filename is None: + for candidate in self.default_path: + if os.path.lexists(candidate): + filename = candidate + break + else: + raise Exception('Mbed TLS configuration file not found', + self.default_path) + super().__init__() + self.filename = filename + self.current_section = 'header' + with open(filename, 'r', encoding='utf-8') as file: + self.templates = [self._parse_line(line) for line in file] + self.current_section = None + + def set(self, name, value=None): + if name not in self.settings: + self.templates.append((name, '', '#define ' + name + ' ')) + super().set(name, value) + + _define_line_regexp = (r'(?P\s*)' + + r'(?P(//\s*)?)' + + r'(?P#\s*define\s+)' + + r'(?P\w+)' + + r'(?P(?:\((?:\w|\s|,)*\))?)' + + r'(?P\s*)' + + r'(?P.*)') + _section_line_regexp = (r'\s*/?\*+\s*[\\@]name\s+SECTION:\s*' + + r'(?P
.*)[ */]*') + _config_line_regexp = re.compile(r'|'.join([_define_line_regexp, + _section_line_regexp])) + def _parse_line(self, line): + """Parse a line in config.h and return the corresponding template.""" + line = line.rstrip('\r\n') + m = re.match(self._config_line_regexp, line) + if m is None: + return line + elif m.group('section'): + self.current_section = m.group('section') + return line + else: + active = not m.group('commented_out') + name = m.group('name') + value = m.group('value') + template = (name, + m.group('indentation'), + m.group('define') + name + + m.group('arguments') + m.group('separator')) + self.settings[name] = Setting(active, name, value, + self.current_section) + return template + + def _format_template(self, name, indent, middle): + """Build a line for config.h for the given setting. + + The line has the form "#define " + where is "#define ". + """ + setting = self.settings[name] + value = setting.value + if value is None: + value = '' + # Normally the whitespace to separte the symbol name from the + # value is part of middle, and there's no whitespace for a symbol + # with no value. But if a symbol has been changed from having a + # value to not having one, the whitespace is wrong, so fix it. + if value: + if middle[-1] not in '\t ': + middle += ' ' + else: + middle = middle.rstrip() + return ''.join([indent, + '' if setting.active else '//', + middle, + value]).rstrip() + + def write_to_stream(self, output): + """Write the whole configuration to output.""" + for template in self.templates: + if isinstance(template, str): + line = template + else: + line = self._format_template(*template) + output.write(line + '\n') + + def write(self, filename=None): + """Write the whole configuration to the file it was read from. + + If filename is specified, write to this file instead. + """ + if filename is None: + filename = self.filename + with open(filename, 'w', encoding='utf-8') as output: + self.write_to_stream(output) + +if __name__ == '__main__': + def main(): + """Command line config.h manipulation tool.""" + parser = argparse.ArgumentParser(description=""" + Mbed TLS and Mbed Crypto configuration file manipulation tool. + """) + parser.add_argument('--file', '-f', + help="""File to read (and modify if requested). + Default: {}. + """.format(ConfigFile.default_path)) + parser.add_argument('--force', '-o', + action='store_true', + help="""For the set command, if SYMBOL is not + present, add a definition for it.""") + parser.add_argument('--write', '-w', metavar='FILE', + help="""File to write to instead of the input file.""") + subparsers = parser.add_subparsers(dest='command', + title='Commands') + parser_get = subparsers.add_parser('get', + help="""Find the value of SYMBOL + and print it. Exit with + status 0 if a #define for SYMBOL is + found, 1 otherwise. + """) + parser_get.add_argument('symbol', metavar='SYMBOL') + parser_set = subparsers.add_parser('set', + help="""Set SYMBOL to VALUE. + If VALUE is omitted, just uncomment + the #define for SYMBOL. + Error out of a line defining + SYMBOL (commented or not) is not + found, unless --force is passed. + """) + parser_set.add_argument('symbol', metavar='SYMBOL') + parser_set.add_argument('value', metavar='VALUE', nargs='?', + default='') + parser_unset = subparsers.add_parser('unset', + help="""Comment out the #define + for SYMBOL. Do nothing if none + is present.""") + parser_unset.add_argument('symbol', metavar='SYMBOL') + + def add_adapter(name, function, description): + subparser = subparsers.add_parser(name, help=description) + subparser.set_defaults(adapter=function) + add_adapter('baremetal', baremetal_adapter, + """Like full, but exclude features that require platform + features such as file input-output.""") + add_adapter('full', full_adapter, + """Uncomment most features. + Exclude alternative implementations and platform support + options, as well as some options that are awkward to test. + """) + add_adapter('full_no_deprecated', no_deprecated_adapter(full_adapter), + """Uncomment most non-deprecated features. + Like "full", but without deprecated features. + """) + add_adapter('realfull', realfull_adapter, + """Uncomment all boolean #defines. + Suitable for generating documentation, but not for building.""") + add_adapter('crypto', crypto_adapter(None), + """Only include crypto features. Exclude X.509 and TLS.""") + add_adapter('crypto_baremetal', crypto_adapter(baremetal_adapter), + """Like baremetal, but with only crypto features, + excluding X.509 and TLS.""") + add_adapter('crypto_full', crypto_adapter(full_adapter), + """Like full, but with only crypto features, + excluding X.509 and TLS.""") + + args = parser.parse_args() + config = ConfigFile(args.file) + if args.command is None: + parser.print_help() + return 1 + elif args.command == 'get': + if args.symbol in config: + value = config[args.symbol] + if value: + sys.stdout.write(value + '\n') + return 0 if args.symbol in config else 1 + elif args.command == 'set': + if not args.force and args.symbol not in config.settings: + sys.stderr.write("A #define for the symbol {} " + "was not found in {}\n" + .format(args.symbol, config.filename)) + return 1 + config.set(args.symbol, value=args.value) + elif args.command == 'unset': + config.unset(args.symbol) + else: + config.adapt(args.adapter) + config.write(args.write) + return 0 + + # Import modules only used by main only if main is defined and called. + # pylint: disable=wrong-import-position + import argparse + import sys + sys.exit(main()) diff --git a/Externals/miniupnpc/miniupnpc.vcxproj b/Externals/miniupnpc/miniupnpc.vcxproj index fa89c4477efb..44cd1b3c4569 100644 --- a/Externals/miniupnpc/miniupnpc.vcxproj +++ b/Externals/miniupnpc/miniupnpc.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/minizip/CMakeLists.txt b/Externals/minizip/CMakeLists.txt index e9111242966f..b28e136681c9 100644 --- a/Externals/minizip/CMakeLists.txt +++ b/Externals/minizip/CMakeLists.txt @@ -1,18 +1,69 @@ project(minizip C) -set(SRCS ioapi.c unzip.c) - -add_definitions(-DNOUNCRYPT) -if(UNIX) - add_definitions(-D__USE_FILE_OFFSET64) - add_definitions(-D__USE_LARGEFILE64) - add_definitions(-D_LARGEFILE64_SOURCE) - add_definitions(-D_FILE_OFFSET_BIT=64) +add_library(minizip STATIC + mz.h + mz_compat.c + mz_compat.h + mz_crypt.c + mz_crypt.h + mz_os.c + mz_os.h + mz_strm.c + mz_strm.h + mz_strm_buf.c + mz_strm_buf.h + mz_strm_mem.c + mz_strm_mem.h + mz_strm_os.h + mz_strm_split.c + mz_strm_split.h + mz_strm_zlib.c + mz_strm_zlib.h + mz_zip.c + mz_zip.h + mz_zip_rw.c + mz_zip_rw.h + unzip.h + zip.h +) + +if (UNIX) + target_sources(minizip PRIVATE + mz_os_posix.c + mz_strm_os_posix.c + ) +endif() + +if (WIN32) + target_sources(minizip PRIVATE + mz_os_win32.c + mz_strm_os_win32.c + ) endif() -add_library(minizip STATIC ${SRCS}) target_include_directories(minizip PUBLIC .) +target_compile_definitions(minizip PRIVATE HAVE_ZLIB ZLIB_COMPAT MZ_ZIP_NO_CRYPTO MZ_ZIP_NO_ENCRYPTION) +if (UNIX) + target_compile_definitions(minizip PRIVATE _POSIX_C_SOURCE=200112L) + target_compile_definitions(minizip PRIVATE __USE_LARGEFILE64 _LARGEFILE64_SOURCE) +endif() + +check_include_file(stdint.h HAVE_STDINT_H) +if (HAVE_STDINT_H) + target_compile_definitions(minizip PRIVATE HAVE_STDINT_H) +endif() + +check_include_file(inttypes.h HAVE_INTTYPES_H) +if (HAVE_INTTYPES_H) + target_compile_definitions(minizip PRIVATE HAVE_INTTYPES_H) +endif() + +check_function_exists(fseeko HAVE_FSEEKO) +if (NOT HAVE_FSEEKO) + target_compile_definitions(minizip PRIVATE NO_FSEEKO) +endif() + target_link_libraries(minizip PUBLIC ZLIB::ZLIB) add_library(MiniZip::minizip ALIAS minizip) diff --git a/Externals/minizip/CMakeLists.txt.original b/Externals/minizip/CMakeLists.txt.original new file mode 100644 index 000000000000..38bbf82bbb5c --- /dev/null +++ b/Externals/minizip/CMakeLists.txt.original @@ -0,0 +1,1015 @@ +#*************************************************************************** +# Copyright (C) 2017-2020 Nathan Moinvaziri +# https://github.com/zlib-ng/minizip-ng +# Copyright (C) 2016 Matthias Schmieder +# schmieder.matthias@gmail.com +#*************************************************************************** + +cmake_minimum_required(VERSION 3.13) + +message(STATUS "Using CMake version ${CMAKE_VERSION}") + +# Compatibility options +option(MZ_COMPAT "Enables compatibility layer" ON) +# Compression library options +option(MZ_ZLIB "Enables ZLIB compression" ON) +option(MZ_BZIP2 "Enables BZIP2 compression" ON) +option(MZ_LZMA "Enables LZMA & XZ compression" ON) +option(MZ_ZSTD "Enables ZSTD compression" ON) +option(MZ_LIBCOMP "Enables Apple compression" ${APPLE}) +option(MZ_FETCH_LIBS "Enables fetching third-party libraries if not found" ${WIN32}) +option(MZ_FORCE_FETCH_LIBS "Enables fetching third-party libraries always" OFF) +# Encryption support options +option(MZ_PKCRYPT "Enables PKWARE traditional encryption" ON) +option(MZ_WZAES "Enables WinZIP AES encryption" ON) +option(MZ_OPENSSL "Enables OpenSSL for encryption" ${UNIX}) +option(MZ_LIBBSD "Enable libbsd crypto random" ${UNIX}) +option(MZ_SIGNING "Enables zip signing support" ON) +# Character conversion options +option(MZ_ICONV "Enables iconv for string encoding conversion" ON) +# Code generation options +option(MZ_COMPRESS_ONLY "Only support compression" OFF) +option(MZ_DECOMPRESS_ONLY "Only support decompression" OFF) +option(MZ_FILE32_API "Builds using posix 32-bit file api" OFF) +# Build and continuous integration options +option(MZ_BUILD_TESTS "Builds minizip test executable" OFF) +option(MZ_BUILD_UNIT_TESTS "Builds minizip unit test project" OFF) +option(MZ_BUILD_FUZZ_TESTS "Builds minizip fuzzer executables" OFF) +option(MZ_CODE_COVERAGE "Builds with code coverage flags" OFF) +# Package management options +set(MZ_PROJECT_SUFFIX "" CACHE STRING "Project name suffix for package managers") + +mark_as_advanced(MZ_FILE32_API MZ_PROJECT_SUFFIX) + +# Backwards compatibility +if(DEFINED MZ_BUILD_TEST) + set(MZ_BUILD_TESTS ${MZ_BUILD_TEST}) +endif() +if(DEFINED MZ_BUILD_UNIT_TEST) + set(MZ_BUILD_UNIT_TESTS ${MZ_BUILD_UNIT_TEST}) +endif() +if(DEFINED MZ_BUILD_FUZZ_TEST) + set(MZ_BUILD_FUZZ_TESTS ${MZ_BUILD_FUZZ_TEST}) +endif() + +if(POLICY CMP0074) + cmake_policy(SET CMP0074 OLD) +endif() +if(POLICY CMP0054) + cmake_policy(SET CMP0054 NEW) +endif() + +# ZLIB_ROOT - Parent directory of zlib installation +# BZIP2_ROOT - Parent directory of BZip2 installation +# OPENSSL_ROOT - Parent directory of OpenSSL installation + +enable_language(C) + +# Library version +set(VERSION "3.0.4") + +# API version +set(SOVERSION "3") + +include(CheckLibraryExists) +include(CheckSymbolExists) +include(CheckFunctionExists) +include(CheckIncludeFile) +include(CheckTypeSize) +include(GNUInstallDirs) +include(FeatureSummary) + +set(INSTALL_BIN_DIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Installation directory for executables") +set(INSTALL_LIB_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Installation directory for libraries") +set(INSTALL_INC_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Installation directory for headers") +set(INSTALL_MAN_DIR ${CMAKE_INSTALL_MANDIR} CACHE PATH "Installation directory for manual pages") + +set(STDLIB_DEF) +set(MINIZIP_DEF) +set(MINIZIP_INC) +set(MINIZIP_LIB) +set(MINIZIP_LBD) +set(MINIZIP_DEP) +set(MINIZIP_DEP_PKG) +set(MINIZIP_LFG) + +# Initial source files +set(MINIZIP_SRC + mz_crypt.c + mz_os.c + mz_strm.c + mz_strm_buf.c + mz_strm_mem.c + mz_strm_split.c + mz_zip.c + mz_zip_rw.c) + +# Initial header files +set(MINIZIP_HDR + mz.h + mz_os.h + mz_crypt.h + mz_strm.h + mz_strm_buf.h + mz_strm_mem.h + mz_strm_split.h + mz_strm_os.h + mz_zip.h + mz_zip_rw.h) + +set(PC_PRIVATE_LIBS) + +# Check for system includes +check_include_file(stdint.h HAVE_STDINT_H) +check_include_file(inttypes.h HAVE_INTTYPES_H) + +if(HAVE_STDINT_H) + list(APPEND STDLIB_DEF -DHAVE_STDINT_H) +endif() +if(HAVE_INTTYPES_H) + list(APPEND STDLIB_DEF -DHAVE_INTTYPES_H) +endif() + +# Check for large file support +check_type_size(off64_t OFF64_T) +if(HAVE_OFF64_T) + list(APPEND STDLIB_DEF -D__USE_LARGEFILE64) + list(APPEND STDLIB_DEF -D_LARGEFILE64_SOURCE) +endif() +# Check for fseeko support +check_function_exists(fseeko HAVE_FSEEKO) +if(NOT HAVE_FSEEKO) + list(APPEND STDLIB_DEF -DNO_FSEEKO) +endif() + +# Checkout remote repository +macro(clone_repo name url) + if(NOT ${name}_REPOSITORY) + set(${name}_REPOSITORY ${url}) + endif() + if(NOT ${name}_TAG) + set(${name}_TAG master) + endif() + + message(STATUS "Fetching ${name} ${${name}_REPOSITORY} ${${name}_TAG}") + + # Check for FetchContent cmake support + if(${CMAKE_VERSION} VERSION_LESS "3.11") + message(FATAL_ERROR "CMake 3.11 required to fetch ${name}") + else() + include(FetchContent) + + string(TOLOWER ${name} name_lower) + string(TOUPPER ${name} name_upper) + + FetchContent_Declare(${name} + GIT_REPOSITORY ${${name}_REPOSITORY} + GIT_TAG ${${name}_TAG} + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/${name_lower}) + + FetchContent_GetProperties(${name} POPULATED ${name_lower}_POPULATED) + + if(NOT ${name_lower}_POPULATED) + FetchContent_Populate(${name}) + endif() + + set(${name_upper}_SOURCE_DIR ${${name_lower}_SOURCE_DIR}) + set(${name_upper}_BINARY_DIR ${${name_lower}_BINARY_DIR}) + endif() +endmacro() + +if(MZ_LIBCOMP) + if(APPLE) + # Use Apple libcompression + list(APPEND MINIZIP_DEF -DHAVE_LIBCOMP) + list(APPEND MINIZIP_SRC mz_strm_libcomp.c) + list(APPEND MINIZIP_HDR mz_strm_libcomp.h) + list(APPEND MINIZIP_LIB compression) + + # Disable zlib as libcompression is preferred + set(MZ_ZLIB OFF) + else() + message(STATUS "LibCompression not supported on the current platform") + + set(MZ_LIBCOMP OFF) + endif() +endif() + +if(MZ_ZLIB) + # Check if zlib is present + if(NOT MZ_FORCE_FETCH_LIBS) + find_package(ZLIB QUIET) + set(ZLIB_VERSION ${ZLIB_VERSION_STRING}) + endif() + + if(ZLIB_FOUND AND NOT MZ_FORCE_FETCH_LIBS) + message(STATUS "Using ZLIB ${ZLIB_VERSION}") + + list(APPEND MINIZIP_INC ${ZLIB_INCLUDE_DIRS}) + list(APPEND MINIZIP_LIB ${ZLIB_LIBRARIES}) + list(APPEND MINIZIP_LBD ${ZLIB_LIBRARY_DIRS}) + + set(PC_PRIVATE_LIBS " -lz") + elseif(MZ_FETCH_LIBS) + clone_repo(zlib https://github.com/madler/zlib) + + # Don't automatically add all targets to the solution + add_subdirectory(${ZLIB_SOURCE_DIR} ${ZLIB_BINARY_DIR} EXCLUDE_FROM_ALL) + + list(APPEND MINIZIP_INC ${ZLIB_SOURCE_DIR}) + list(APPEND MINIZIP_INC ${ZLIB_BINARY_DIR}) + + # Have to add zlib to install targets + if(NOT DEFINED BUILD_SHARED_LIBS OR NOT ${BUILD_SHARED_LIBS}) + list(APPEND MINIZIP_DEP zlibstatic) + else() + list(APPEND MINIZIP_DEP zlib) + endif() + else() + message(STATUS "ZLIB library not found") + + set(MZ_ZLIB OFF) + endif() + + if(MZ_ZLIB) + list(APPEND MINIZIP_DEP_PKG ZLIB) + list(APPEND MINIZIP_DEF -DHAVE_ZLIB) + if(ZLIB_COMPAT) + list(APPEND MINIZIP_DEF -DZLIB_COMPAT) + endif() + list(APPEND MINIZIP_SRC mz_strm_zlib.c) + list(APPEND MINIZIP_HDR mz_strm_zlib.h) + endif() +endif() + +if(MZ_BZIP2) + # Check if bzip2 is present + if(NOT MZ_FORCE_FETCH_LIBS) + find_package(BZip2 QUIET) + endif() + + if(BZIP2_FOUND AND NOT MZ_FORCE_FETCH_LIBS) + message(STATUS "Using BZIP2 ${BZIP2_VERSION_STRING}") + + list(APPEND MINIZIP_INC ${BZIP2_INCLUDE_DIRS}) + list(APPEND MINIZIP_LIB ${BZIP2_LIBRARIES}) + list(APPEND MINIZIP_LBD ${BZIP2_LIBRARY_DIRS}) + + set(PC_PRIVATE_LIBS "${PC_PRIVATE_LIBS} -lbzip2") + elseif(MZ_FETCH_LIBS) + clone_repo(bzip2 https://sourceware.org/git/bzip2.git) + + # BZip2 repository does not support cmake so we have to create + # the bzip2 library ourselves + set(BZIP2_SRC + ${BZIP2_SOURCE_DIR}/blocksort.c + ${BZIP2_SOURCE_DIR}/bzlib.c + ${BZIP2_SOURCE_DIR}/compress.c + ${BZIP2_SOURCE_DIR}/crctable.c + ${BZIP2_SOURCE_DIR}/decompress.c + ${BZIP2_SOURCE_DIR}/huffman.c + ${BZIP2_SOURCE_DIR}/randtable.c) + + set(BZIP2_HDR + ${BZIP2_SOURCE_DIR}/bzlib.h + ${BZIP2_SOURCE_DIR}/bzlib_private.h) + + add_library(bzip2 STATIC ${BZIP2_SRC} ${BZIP2_HDR}) + + target_compile_definitions(bzip2 PRIVATE -DBZ_NO_STDIO) + + list(APPEND MINIZIP_DEP bzip2) + list(APPEND MINIZIP_INC ${BZIP2_SOURCE_DIR}) + else() + message(STATUS "BZip2 library not found") + + set(MZ_BZIP2 OFF) + endif() + + if(MZ_BZIP2) + list(APPEND MINIZIP_DEP_PKG BZip2) + list(APPEND MINIZIP_DEF -DHAVE_BZIP2) + list(APPEND MINIZIP_SRC mz_strm_bzip.c) + list(APPEND MINIZIP_HDR mz_strm_bzip.h) + endif() +endif() + +if(MZ_LZMA) + # Check if liblzma is present + if(NOT MZ_FORCE_FETCH_LIBS) + find_package(PkgConfig QUIET) + if(PKGCONFIG_FOUND) + pkg_check_modules(LIBLZMA liblzma) + endif() + if(NOT LIBLZMA_FOUND) + find_package(LibLZMA QUIET) + set(LIBLZMA_VERSION ${LIBLZMA_VERSION_STRING}) + endif() + endif() + + if(LIBLZMA_FOUND AND NOT MZ_FORCE_FETCH_LIBS) + message(STATUS "Using LZMA ${LIBLZMA_VERSION}") + + list(APPEND MINIZIP_INC ${LIBLZMA_INCLUDE_DIRS}) + list(APPEND MINIZIP_LIB ${LIBLZMA_LIBRARIES}) + + set(PC_PRIVATE_LIBS "${PC_PRIVATE_LIBS} -lliblzma") + elseif(MZ_FETCH_LIBS) + clone_repo(liblzma https://git.tukaani.org/xz.git) + + # Don't automatically add all targets to the solution + add_subdirectory(${LIBLZMA_SOURCE_DIR} ${LIBLZMA_BINARY_DIR} EXCLUDE_FROM_ALL) + + list(APPEND MINIZIP_INC ${LIBLZMA_SOURCE_DIR}/src/liblzma/api) + list(APPEND MINIZIP_DEP liblzma) + list(APPEND MINIZIP_LIB ${LIBLZMA_TARGET}) + else() + message(STATUS "LibLZMA library not found") + + set(MZ_LZMA OFF) + endif() + + if(MZ_LZMA) + list(APPEND MINIZIP_DEP_PKG LibLZMA) + list(APPEND MINIZIP_DEF -DHAVE_LZMA -DLZMA_API_STATIC) + list(APPEND MINIZIP_SRC mz_strm_lzma.c) + list(APPEND MINIZIP_HDR mz_strm_lzma.h) + endif() +endif() + +if(MZ_ZSTD) + # Check if zstd is present + if(NOT MZ_FORCE_FETCH_LIBS) + find_package(PkgConfig QUIET) + if(PKGCONFIG_FOUND) + pkg_check_modules(ZSTD libzstd) + endif() + if(NOT ZSTD_FOUND) + find_package(ZSTD QUIET) + if(ZSTD_FOUND) + if(TARGET zstd::libzstd_static) + list(APPEND ZSTD_LIBRARIES zstd::libzstd_static) + else() + list(APPEND ZSTD_LIBRARIES zstd::libzstd_shared) + endif() + endif() + endif() + endif() + + if(ZSTD_FOUND AND NOT MZ_FORCE_FETCH_LIBS) + message(STATUS "Using ZSTD ${ZSTD_VERSION}") + + list(APPEND MINIZIP_INC ${ZSTD_INCLUDE_DIRS}) + list(APPEND MINIZIP_LIB ${ZSTD_LIBRARIES}) + list(APPEND MINIZIP_LBD ${ZSTD_LIBRARY_DIRS}) + + set(PC_PRIVATE_LIBS "${PC_PRIVATE_LIBS} -lzstd") + elseif(MZ_FETCH_LIBS) + clone_repo(zstd https://github.com/facebook/zstd) + + # Don't automatically add all targets to the solution + add_subdirectory(${ZSTD_SOURCE_DIR}/build/cmake ${ZSTD_BINARY_DIR} EXCLUDE_FROM_ALL) + + list(APPEND MINIZIP_INC ${ZSTD_SOURCE_DIR}/lib) + if(NOT DEFINED BUILD_SHARED_LIBS OR NOT ${BUILD_SHARED_LIBS}) + list(APPEND MINIZIP_DEP libzstd_static) + else() + list(APPEND MINIZIP_DEP libzstd_shared) + endif() + else() + message(STATUS "ZSTD library not found") + + set(MZ_ZSTD OFF) + endif() + + if(MZ_ZSTD) + list(APPEND MINIZIP_DEP_PKG zstd) + list(APPEND MINIZIP_DEF -DHAVE_ZSTD) + list(APPEND MINIZIP_SRC mz_strm_zstd.c) + list(APPEND MINIZIP_HDR mz_strm_zstd.h) + endif() +endif() + +if(NOT MZ_LIBCOMP AND NOT MZ_ZLIB AND NOT MZ_ZSTD AND NOT MZ_BZIP2 AND NOT MZ_LZMA) + message(STATUS "Compression not supported due to missing libraries") + + list(APPEND MINIZIP_DEF -DMZ_ZIP_NO_DECOMPRESSION) + list(APPEND MINIZIP_DEF -DMZ_ZIP_NO_COMPRESSION) +endif() + +if(MZ_OPENSSL) + # Check to see if openssl installation is present + find_package(PkgConfig) + if(PKGCONFIG_FOUND) + pkg_check_modules(OPENSSL openssl) + endif() + if(NOT OPENSSL_FOUND) + find_package(OpenSSL) + endif() + + if(OPENSSL_FOUND) + message(STATUS "Using OpenSSL ${OPENSSL_VERSION}") + + list(APPEND MINIZIP_SRC mz_crypt_openssl.c) + list(APPEND MINIZIP_LIB ${OPENSSL_LIBRARIES}) + list(APPEND MINIZIP_LBD ${OPENSSL_LIBRARY_DIRS}) + list(APPEND MINIZIP_INC ${OPENSSL_INCLUDE_DIR}) + + if(OPENSSL_INCLUDE_DIRS) + list(APPEND MINIZIP_INC ${OPENSSL_INCLUDE_DIRS}) + endif() + else() + message(STATUS "OpenSSL library not found") + + set(MZ_OPENSSL OFF) + endif() +endif() + +# Windows specific +if(WIN32) + list(APPEND MINIZIP_DEF -D_CRT_SECURE_NO_DEPRECATE) + list(APPEND MINIZIP_SRC mz_os_win32.c mz_strm_os_win32.c) + + if(MZ_PKCRYPT OR MZ_WZAES OR MZ_SIGNING) + if(MZ_OPENSSL) + list(APPEND MINIZIP_DEP_PKG OpenSSL) + else() + message(STATUS "Using CryptoAPI") + + list(APPEND MINIZIP_SRC mz_crypt_win32.c) + list(APPEND MINIZIP_LIB crypt32.lib) + endif() + else() + list(APPEND MINIZIP_DEF -DMZ_ZIP_NO_CRYPTO) + endif() +endif() +if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + list(APPEND MINIZIP_DEF -DMZ_WINRT_API) +endif() + +# Unix specific +if(UNIX) + list(APPEND STDLIB_DEF -D_POSIX_C_SOURCE=200112L) + list(APPEND MINIZIP_SRC mz_os_posix.c mz_strm_os_posix.c) + + if(MZ_PKCRYPT OR MZ_WZAES OR MZ_SIGNING) + if(MZ_OPENSSL) + list(APPEND MINIZIP_DEP_PKG OpenSSL) + else() + if(APPLE) + message(STATUS "Using CoreFoundation Framework") + find_library(COREFOUNDATION_LIBRARY CoreFoundation) + + list(APPEND MINIZIP_LIB ${COREFOUNDATION_LIBRARY}) + + message(STATUS "Using Security Framework") + find_library(SECURITY_LIBRARY Security) + + list(APPEND MINIZIP_LIB ${SECURITY_LIBRARY}) + list(APPEND MINIZIP_LFG "-Wl,-F/Library/Frameworks") + + check_include_file(CommonCrypto/CommonCrypto.h COMMONCRYPTO_FOUND) + if(COMMONCRYPTO_FOUND) + message(STATUS "Using CommonCrypto") + + list(APPEND MINIZIP_SRC mz_crypt_apple.c) + + set(MZ_LIBBSD OFF) + else() + message(STATUS "CommonCrypto library not found") + + list(APPEND MINIZIP_DEF -DMZ_ZIP_NO_CRYPTO) + + if(MZ_WZAES) + message(STATUS "WinZIP AES support requires CommonCrypto or OpenSSL") + + set(MZ_WZAES OFF) + endif() + if(MZ_SIGNING) + message(STATUS "Signing support requires CommonCrypto or OpenSSL") + + set(MZ_SIGNING OFF) + endif() + endif() + else() + list(APPEND MINIZIP_DEF -DMZ_ZIP_NO_CRYPTO) + + if(MZ_WZAES) + message(STATUS "WinZIP AES support requires OpenSSL") + + set(MZ_WZAES OFF) + endif() + if(MZ_SIGNING) + message(STATUS "Signing support requires OpenSSL") + + set(MZ_SIGNING OFF) + endif() + endif() + + if(MZ_PKCRYPT AND NOT MZ_WZAES) + # Check to see which random generation functions we have + check_symbol_exists("getrandom" "sys/random.h" HAVE_GETRANDOM) + if(HAVE_GETRANDOM) + list(APPEND MINIZIP_DEF -DHAVE_GETRANDOM) + endif() + check_symbol_exists("arc4random_buf" "stdlib.h" HAVE_ARC4RANDOM_BUF) + if(HAVE_ARC4RANDOM_BUF) + list(APPEND MINIZIP_DEF -DHAVE_ARC4RANDOM_BUF) + else() + check_symbol_exists("arc4random" "stdlib.h" HAVE_ARC4RANDOM) + if(HAVE_ARC4RANDOM) + list(APPEND MINIZIP_DEF -DHAVE_ARC4RANDOM) + endif() + endif() + + if(APPLE) + # Requires _DARWIN_C_SOURCE for arcrandom functions + list(APPEND MINIZIP_DEF -D_DARWIN_C_SOURCE) + endif() + + if(MZ_LIBBSD AND NOT HAVE_ARC4RANDOM_BUF) + find_package(PkgConfig REQUIRED) + + pkg_check_modules(LIBBSD libbsd) + if(LIBBSD_FOUND) + check_library_exists("${LIBBSD_LIBRARIES}" "arc4random_buf" + "${LIBBSD_LIBRARY_DIRS}" HAVE_LIBBSD_ARC4RANDOM_BUF) + + if(HAVE_LIBBSD_ARC4RANDOM_BUF) + list(APPEND MINIZIP_DEF -DHAVE_LIBBSD -DHAVE_ARC4RANDOM_BUF) + list(APPEND MINIZIP_INC ${LIBBSD_INCLUDE_DIRS}) + list(APPEND MINIZIP_LIB ${LIBBSD_LIBRARIES}) + list(APPEND MINIZIP_LBD ${LIBBSD_LIBRARY_DIRS}) + + link_directories(${LIBBSD_LIBRARY_DIRS}) + endif() + else() + set(MZ_LIBBSD OFF) + endif() + else() + set(MZ_LIBBSD OFF) + endif() + + if(NOT MZ_LIBBSD AND NOT HAVE_GETRANDOM AND NOT HAVE_ARC4RANDOM_BUF AND NOT HAVE_ARC4RANDOM) + message(WARNING "Low quality entropy function used for encryption") + endif() + endif() + endif() + else() + list(APPEND MINIZIP_DEF -DMZ_ZIP_NO_CRYPTO) + endif() + + # Iconv is only necessary when it is not already built-in + # FindIconv requires cmake 3.11 or higher + if (MZ_ICONV) + find_package(Iconv QUIET) + endif() + + if(Iconv_FOUND) + message(STATUS "Using Iconv") + + list(APPEND MINIZIP_DEF -DHAVE_ICONV) + list(APPEND MINIZIP_INC ${Iconv_INCLUDE_DIRS}) + list(APPEND MINIZIP_DEP_PKG Iconv) + if(NOT Iconv_IS_BUILT_IN) + list(APPEND MINIZIP_LIB ${Iconv_LIBRARIES}) + list(APPEND MINIZIP_LBD ${Iconv_LIBRARY_DIRS}) + endif() + + set(PC_PRIVATE_LIBS "${PC_PRIVATE_LIBS} -liconv") + else() + message(STATUS "Character encoding support requires iconv") + + set(MZ_ICONV OFF) + endif() +else() + set(MZ_LIBBSD OFF) + set(MZ_ICONV OFF) +endif() + +# Setup predefined macros +if(MZ_COMPRESS_ONLY) + list(APPEND MINIZIP_DEF -DMZ_ZIP_NO_DECOMPRESSION) +endif() +if(MZ_DECOMPRESS_ONLY) + list(APPEND MINIZIP_DEF -DMZ_ZIP_NO_COMPRESSION) +endif() +if(NOT MZ_PKCRYPT AND NOT MZ_WZAES) + list(APPEND MINIZIP_DEF -DMZ_ZIP_NO_ENCRYPTION) +endif() +if(MZ_SIGNING) + list(APPEND MINIZIP_DEF -DMZ_ZIP_SIGNING) +endif() +if(MZ_FILE32_API) + list(APPEND MINIZIP_DEF -DMZ_FILE32_API) +endif() + +# Include traditional PKWare encryption +if(MZ_PKCRYPT) + list(APPEND MINIZIP_DEF -DHAVE_PKCRYPT) + list(APPEND MINIZIP_SRC mz_strm_pkcrypt.c) + list(APPEND MINIZIP_HDR mz_strm_pkcrypt.h) +endif() + +# Include WinZIP AES encryption +if(MZ_WZAES) + list(APPEND MINIZIP_DEF -DHAVE_WZAES) + list(APPEND MINIZIP_SRC mz_strm_wzaes.c) + list(APPEND MINIZIP_HDR mz_strm_wzaes.h) +endif() + +# Include compatibility layer +if(MZ_COMPAT) + set(COMPAT_HEADER "\ +/* file.h -- Compatibility layer shim\n\ + part of the minizip-ng project\n\n\ + This program is distributed under the terms of the same license as zlib.\n\ + See the accompanying LICENSE file for the full text of the license.\n\ +*/\n\n\ +#ifndef MZ_COMPAT_FILE\n\ +#define MZ_COMPAT_FILE\n\n\ +#include \"mz_compat.h\"\n\n\ +#endif\n") + + string(REPLACE "file.h" "zip.h" ZIP_COMPAT_HEADER ${COMPAT_HEADER}) + string(REPLACE "MZ_COMPAT_FILE" "MZ_COMPAT_ZIP" ZIP_COMPAT_HEADER ${ZIP_COMPAT_HEADER}) + file(WRITE "zip.h" ${ZIP_COMPAT_HEADER}) + + string(REPLACE "file.h" "unzip.h" UNZIP_COMPAT_HEADER ${COMPAT_HEADER}) + string(REPLACE "MZ_COMPAT_FILE" "MZ_COMPAT_UNZIP" UNZIP_COMPAT_HEADER ${UNZIP_COMPAT_HEADER}) + file(WRITE "unzip.h" ${UNZIP_COMPAT_HEADER}) + + if(MZ_COMPAT_VERSION) + list(APPEND MINIZIP_DEF -DMZ_COMPAT_VERSION=${MZ_COMPAT_VERSION}) + endif() + list(APPEND MINIZIP_SRC mz_compat.c) + list(APPEND MINIZIP_HDR mz_compat.h zip.h unzip.h) +endif() + +# Set compiler options +if(MZ_CODE_COVERAGE) + if(NOT MSVC) + message(STATUS "Code coverage enabled") + add_compile_options(-O0 -g -fprofile-arcs -ftest-coverage) + if(CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage") + elseif(CMAKE_C_COMPILER_ID MATCHES "GNU") + link_libraries(gcov) + endif() + set_property(DIRECTORY PROPERTY + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS YES + GCC_GENERATE_TEST_COVERAGE_FILES YES) + else() + set(MZ_CODE_COVERAGE OFF) + endif() +else() + if(MSVC) + add_compile_options( + $<$:/Zi> + $<$:/Od> + $<$:/W3> + $<$:/Ox> + $<$:/Os>) + else() + add_compile_options( + $<$:-g> + $<$:-Wall> + $<$:-Os>) + endif() +endif() + +list(APPEND MINIZIP_INC ${CMAKE_CURRENT_SOURCE_DIR}) + +# Create minizip library +project(minizip${MZ_PROJECT_SUFFIX} VERSION ${VERSION}) + +if(NOT ${MZ_PROJECT_SUFFIX} STREQUAL "") + message(STATUS "Project configured as ${PROJECT_NAME}") +endif() + +set(MINIZIP_PC ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc) +configure_file(minizip.pc.cmakein ${MINIZIP_PC} @ONLY) + +set(INSTALL_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" + CACHE PATH "Installation directory for cmake files.") +set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig" + CACHE PATH "Installation directory for pkgconfig (.pc) files") + +add_library(${PROJECT_NAME} ${MINIZIP_SRC} ${MINIZIP_HDR}) + +set_target_properties(${PROJECT_NAME} PROPERTIES + VERSION ${VERSION} + SOVERSION ${SOVERSION} + LINKER_LANGUAGE C + DEFINE_SYMBOL "MZ_EXPORTS") + +if(MINIZIP_LFG) + set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS ${MINIZIP_LFG}) +endif() +if(MSVC) + # VS debugger has problems when executable and static library are named the same + set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME lib${PROJECT_NAME}) +endif() +if(NOT RISCOS) + set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE 1) +endif() +if(MZ_LZMA) + set_target_properties(${PROJECT_NAME} PROPERTIES C_STANDARD 99) +endif() + +target_link_libraries(${PROJECT_NAME} PUBLIC ${MINIZIP_LIB} ${MINIZIP_DEP}) +target_link_directories(${PROJECT_NAME} PUBLIC ${MINIZIP_LBD}) +target_compile_definitions(${PROJECT_NAME} PRIVATE ${STDLIB_DEF} ${MINIZIP_DEF}) +target_include_directories(${PROJECT_NAME} PRIVATE ${MINIZIP_INC}) +target_include_directories(${PROJECT_NAME} PUBLIC + $ + $) + +# Create minizip alias +add_library(MINIZIP::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) + +# Install files +if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) + install(TARGETS ${PROJECT_NAME} ${MINIZIP_DEP} + EXPORT ${PROJECT_NAME} + INCLUDES DESTINATION "${INSTALL_INC_DIR}" + RUNTIME DESTINATION "${INSTALL_BIN_DIR}" + ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" + LIBRARY DESTINATION "${INSTALL_LIB_DIR}") + install(EXPORT ${PROJECT_NAME} + DESTINATION "${INSTALL_CMAKE_DIR}" + NAMESPACE "MINIZIP::") + + # Create and install CMake package config version file to allow find_package() + include(CMakePackageConfigHelpers) + write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake + COMPATIBILITY SameMajorVersion) + set(MINIZIP_CONFIG_CONTENT "@PACKAGE_INIT@\n") + if(MINIZIP_DEP_PKG) + string(APPEND MINIZIP_CONFIG_CONTENT "include(CMakeFindDependencyMacro)\n") + foreach(PKG_NAME ${MINIZIP_DEP_PKG}) + string(APPEND MINIZIP_CONFIG_CONTENT "find_dependency(${PKG_NAME} REQUIRED)\n") + endforeach() + endif() + string(APPEND MINIZIP_CONFIG_CONTENT "include(\"\${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}.cmake\")") + file(WRITE minizip-config.cmake.in ${MINIZIP_CONFIG_CONTENT}) + + # Create config for find_package() + configure_package_config_file(minizip-config.cmake.in ${PROJECT_NAME}-config.cmake + INSTALL_DESTINATION "${INSTALL_CMAKE_DIR}") + + file(REMOVE minizip-config.cmake.in) + + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake + DESTINATION "${INSTALL_CMAKE_DIR}") +endif() +if(NOT SKIP_INSTALL_HDR AND NOT SKIP_INSTALL_ALL) + install(FILES ${MINIZIP_HDR} DESTINATION "${INSTALL_INC_DIR}") +endif() +if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL) + install(FILES ${MINIZIP_PC} DESTINATION "${INSTALL_PKGCONFIG_DIR}") +endif() + +# Build test executables +if(MZ_BUILD_TESTS) + if(MZ_ZLIB AND NOT MZ_LIBCOMP) + add_executable(minigzip_cmd minigzip.c) + set_target_properties(minigzip_cmd PROPERTIES OUTPUT_NAME minigzip) + target_compile_definitions(minigzip_cmd PRIVATE ${STDLIB_DEF} ${MINIZIP_DEF}) + target_include_directories(minigzip_cmd PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) + target_link_libraries(minigzip_cmd ${PROJECT_NAME}) + + if(NOT SKIP_INSTALL_BINARIES AND NOT SKIP_INSTALL_ALL) + install(TARGETS minigzip_cmd RUNTIME DESTINATION "bin") + endif() + endif() + + add_executable(minizip_cmd minizip.c) + set_target_properties(minizip_cmd PROPERTIES OUTPUT_NAME ${PROJECT_NAME}) + target_compile_definitions(minizip_cmd PRIVATE ${STDLIB_DEF} ${MINIZIP_DEF}) + target_include_directories(minizip_cmd PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) + target_link_libraries(minizip_cmd ${PROJECT_NAME}) + + if(NOT SKIP_INSTALL_BINARIES AND NOT SKIP_INSTALL_ALL) + install(TARGETS minizip_cmd RUNTIME DESTINATION "bin") + endif() + + add_executable(test_cmd test/test.c test/test.h) + target_compile_definitions(test_cmd PRIVATE ${STDLIB_DEF} ${MINIZIP_DEF}) + if(MZ_COMPAT) + target_compile_definitions(test_cmd PRIVATE -DHAVE_COMPAT) + endif() + target_include_directories(test_cmd PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) + target_link_libraries(test_cmd ${PROJECT_NAME}) +endif() + +if(MZ_BUILD_TESTS AND MZ_BUILD_UNIT_TESTS) + enable_testing() + + # Can't disable zlib testing so ctest tries to run zlib example app + if(MZ_ZLIB AND NOT MZ_LIBCOMP AND NOT ZLIB_FOUND) + add_dependencies(${PROJECT_NAME} example) + if(HAVE_OFF64_T) + add_dependencies(${PROJECT_NAME} example64) + endif() + endif() + + add_test(NAME test_cmd COMMAND test_cmd WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + + function(create_compress_tests EXTRA_NAME EXTRA_ARGS) + if(MZ_DECOMPRESS_ONLY) + return() + endif() + list(FIND EXTRA_ARGS "-z" ZIPCD_IDX) + if(${ZIPCD_IDX} EQUAL -1) + set(COMPRESS_METHOD_NAMES "raw") + set(COMPRESS_METHOD_ARGS "-0") + endif() + if(MZ_ZLIB OR MZ_LIBCOMP) + list(APPEND COMPRESS_METHOD_NAMES "deflate") + list(APPEND COMPRESS_METHOD_ARGS "-9") + endif() + if(MZ_BZIP2) + list(APPEND COMPRESS_METHOD_NAMES "bzip2") + list(APPEND COMPRESS_METHOD_ARGS "-b") + endif() + if(MZ_LZMA) + list(APPEND COMPRESS_METHOD_NAMES "lzma") + list(APPEND COMPRESS_METHOD_ARGS "-m") + endif() + if(MZ_LZMA OR MZ_LIBCOMP) + list(APPEND COMPRESS_METHOD_NAMES "xz") + list(APPEND COMPRESS_METHOD_ARGS "-n") + endif() + if(MZ_ZSTD) + list(APPEND COMPRESS_METHOD_NAMES "zstd") + list(APPEND COMPRESS_METHOD_ARGS "-t") + endif() + list(LENGTH COMPRESS_METHOD_NAMES COMPRESS_METHOD_COUNT) + math(EXPR COMPRESS_METHOD_COUNT "${COMPRESS_METHOD_COUNT}-1") + foreach(INDEX RANGE ${COMPRESS_METHOD_COUNT}) + list(GET COMPRESS_METHOD_NAMES ${INDEX} COMPRESS_METHOD_NAME) + list(GET COMPRESS_METHOD_ARGS ${INDEX} COMPRESS_METHOD_ARG) + add_test(NAME ${COMPRESS_METHOD_NAME}-zip-${EXTRA_NAME} + COMMAND minizip_cmd ${COMPRESS_METHOD_ARG} -o ${EXTRA_ARGS} + result.zip test.c test.h empty.txt random.bin uniform.bin fuzz + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + add_test(NAME ${COMPRESS_METHOD_NAME}-list-${EXTRA_NAME} + COMMAND minizip_cmd -l ${EXTRA_ARGS} result.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + if(NOT MZ_COMPRESS_ONLY) + add_test(NAME ${COMPRESS_METHOD_NAME}-unzip-${EXTRA_NAME} + COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out result.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + add_test(NAME ${COMPRESS_METHOD_NAME}-append-${EXTRA_NAME} + COMMAND minizip_cmd ${COMPRESS_METHOD_ARG} -a ${EXTRA_ARGS} + result.zip single.txt + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + if(NOT MZ_COMPRESS_ONLY) + add_test(NAME ${COMPRESS_METHOD_NAME}-append-unzip-${EXTRA_NAME} + COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out result.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + add_test(NAME ${COMPRESS_METHOD_NAME}-erase-${EXTRA_NAME} + COMMAND minizip_cmd -o -e result.zip test.c test.h + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + if(NOT MZ_COMPRESS_ONLY) + add_test(NAME ${COMPRESS_METHOD_NAME}-erase-unzip-${EXTRA_NAME} + COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out result.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + endforeach() + endfunction() + + # Perform tests against ourself + create_compress_tests("generic" "") + create_compress_tests("span" "-k;1024") + create_compress_tests("zipcd" "-z") + if(MZ_PKCRYPT) + create_compress_tests("pkcrypt" "-p;test123") + endif() + if(MZ_WZAES) + create_compress_tests("wzaes" "-s;-p;test123") + endif() + if(MZ_SIGNING) + create_compress_tests("signed" "-h;test.p12;-w;test") + create_compress_tests("secure" "-z;-h;test.p12;-w;test") + endif() + + # Perform tests on others + if(NOT MZ_COMPRESS_ONLY) + if(MZ_ZLIB OR MZ_LIBCOMP) + add_test(NAME unzip-tiny + COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out + fuzz/unzip_fuzzer_seed_corpus/tiny.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + if(MZ_BZIP2) + add_test(NAME unzip-bzip2 + COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out + fuzz/unzip_fuzzer_seed_corpus/bzip2.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + if(MZ_LZMA) + add_test(NAME unzip-lzma + COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out + fuzz/unzip_fuzzer_seed_corpus/lzma.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + if(MZ_PKCRYPT) + add_test(NAME unzip-pkcrypt + COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out -p test123 + fuzz/unzip_fuzzer_seed_corpus/encrypted_pkcrypt.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + if(MZ_WZAES) + add_test(NAME unzip-wzaes + COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out -p test123 + fuzz/unzip_fuzzer_seed_corpus/encrypted_wzaes.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + endif() + if(NOT MZ_COMPRESS_ONLY AND NOT MZ_DECOMPRESS_ONLY) + if(MZ_ZLIB AND NOT MZ_LIBCOMP) + add_test(NAME gz + COMMAND minigzip_cmd random.bin + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + add_test(NAME ungz + COMMAND minigzip_cmd -x -d out random.bin.gz + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + endif() +endif() + +#Build fuzzer executables +if(MZ_BUILD_FUZZ_TESTS) + if(CMAKE_C_COMPILER_ID MATCHES "Clang") + enable_language(CXX) + + if(DEFINED ENV{LIB_FUZZING_ENGINE}) + set(FUZZING_ENGINE $ENV{LIB_FUZZING_ENGINE}) + set(FUZZING_ENGINE_FOUND TRUE) + else() + find_library(FUZZING_ENGINE "FuzzingEngine") + endif() + endif() + + if(NOT FUZZING_ENGINE_FOUND) + set(FUZZER_SRC "test/fuzz/standalone.c") + else() + set(FUZZER_SRC) + endif() + + macro(configure_fuzz_test target) + add_executable(${target} "test/fuzz/${target}.c" ${FUZZER_SRC}) + set_target_properties(${target} PROPERTIES LINKER_LANGUAGE CXX) + target_compile_definitions(${target} PRIVATE ${STDLIB_DEF}) + target_include_directories(${target} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) + target_link_libraries(${target} ${PROJECT_NAME}) + + add_dependencies(${target} ${PROJECT_NAME}) + if(FUZZING_ENGINE_FOUND) + target_link_libraries(${target} ${FUZZING_ENGINE}) + endif() + endmacro() + + configure_fuzz_test(zip_fuzzer) + configure_fuzz_test(unzip_fuzzer) + + if(NOT SKIP_INSTALL_BINARIES AND NOT SKIP_INSTALL_ALL) + install(TARGETS zip_fuzzer RUNTIME DESTINATION "bin") + install(TARGETS unzip_fuzzer RUNTIME DESTINATION "bin") + endif() +endif() + +# Compatibility options +add_feature_info(MZ_COMPAT MZ_COMPAT "Enables compatibility layer") +# Compression library options +add_feature_info(MZ_ZLIB MZ_ZLIB "Enables ZLIB compression") +add_feature_info(MZ_BZIP2 MZ_BZIP2 "Enables BZIP2 compression") +add_feature_info(MZ_LZMA MZ_LZMA "Enables LZMA & XZ compression") +add_feature_info(MZ_ZSTD MZ_ZSTD "Enables ZSTD compression") +add_feature_info(MZ_LIBCOMP MZ_LIBCOMP "Enables Apple compression") +add_feature_info(MZ_FETCH_LIBS MZ_FETCH_LIBS "Enables fetching third-party libraries if not found") +add_feature_info(MZ_FORCE_FETCH_LIBS MZ_FORCE_FETCH_LIBS "Enables fetching third-party libraries always") +# Encryption support options +add_feature_info(MZ_PKCRYPT MZ_PKCRYPT "Enables PKWARE traditional encryption") +add_feature_info(MZ_WZAES MZ_WZAES "Enables WinZIP AES encryption") +add_feature_info(MZ_OPENSSL MZ_OPENSSL "Enables OpenSSL for encryption") +add_feature_info(MZ_LIBBSD MZ_LIBBSD "Build with libbsd for crypto random") +add_feature_info(MZ_SIGNING MZ_SIGNING "Enables zip signing support") +# Character conversion options +add_feature_info(MZ_ICONV MZ_ICONV "Enables iconv string encoding conversion library") +# Code generation options +add_feature_info(MZ_COMPRESS_ONLY MZ_COMPRESS_ONLY "Only support compression") +add_feature_info(MZ_DECOMPRESS_ONLY MZ_DECOMPRESS_ONLY "Only support decompression") +add_feature_info(MZ_FILE32_API MZ_FILE32_API "Builds using posix 32-bit file api") +# Build and continuous integration options +add_feature_info(MZ_BUILD_TESTS MZ_BUILD_TESTS "Builds minizip test executable") +add_feature_info(MZ_BUILD_UNIT_TESTS MZ_BUILD_UNIT_TESTS "Builds minizip unit test project") +add_feature_info(MZ_BUILD_FUZZ_TESTS MZ_BUILD_FUZZ_TESTS "Builds minizip fuzzer executables") +add_feature_info(MZ_CODE_COVERAGE MZ_CODE_COVERAGE "Builds with code coverage flags") + +feature_summary(WHAT ENABLED_FEATURES DISABLED_FEATURES INCLUDE_QUIET_PACKAGES) diff --git a/Externals/minizip/LICENSE b/Externals/minizip/LICENSE index 086295a2b2af..3b6c4e142ebb 100644 --- a/Externals/minizip/LICENSE +++ b/Externals/minizip/LICENSE @@ -14,4 +14,4 @@ freely, subject to the following restrictions: appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. \ No newline at end of file +3. This notice may not be removed or altered from any source distribution. diff --git a/Externals/minizip/README b/Externals/minizip/README index 8d311e116dd5..4b929d1504f3 100644 --- a/Externals/minizip/README +++ b/Externals/minizip/README @@ -1,2 +1,3 @@ -Partial import from https://github.com/nmoinvaz/minizip -Revision: b3713abe7722f1b779e7cdbd527c6208abbe1121 +minizip-ng, Version 3.0.4 (2021-11-29) +https://github.com/zlib-ng/minizip-ng +Revision: 95987e98b4862c055b8cf91d6e7ce5f9153ddc24 diff --git a/Externals/minizip/ioapi.c b/Externals/minizip/ioapi.c deleted file mode 100644 index bba26334dc9e..000000000000 --- a/Externals/minizip/ioapi.c +++ /dev/null @@ -1,351 +0,0 @@ -/* ioapi.c -- IO base function header for compress/uncompress .zip - part of the MiniZip project - - Copyright (C) 1998-2010 Gilles Vollant - http://www.winimage.com/zLibDll/minizip.html - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson - http://result42.com - - This program is distributed under the terms of the same license as zlib. - See the accompanying LICENSE file for the full text of the license. -*/ - -#include -#include - -#if defined unix || defined __APPLE__ -#include -#include -#endif - -#include "ioapi.h" - -#if defined(_WIN32) -# define snprintf _snprintf -#endif - -voidpf call_zopen64(const zlib_filefunc64_32_def *pfilefunc, const void *filename, int mode) -{ - if (pfilefunc->zfile_func64.zopen64_file != NULL) - return (*(pfilefunc->zfile_func64.zopen64_file)) (pfilefunc->zfile_func64.opaque, filename, mode); - return (*(pfilefunc->zopen32_file))(pfilefunc->zfile_func64.opaque, (const char*)filename, mode); -} - -voidpf call_zopendisk64(const zlib_filefunc64_32_def *pfilefunc, voidpf filestream, uint32_t number_disk, int mode) -{ - if (pfilefunc->zfile_func64.zopendisk64_file != NULL) - return (*(pfilefunc->zfile_func64.zopendisk64_file)) (pfilefunc->zfile_func64.opaque, filestream, number_disk, mode); - return (*(pfilefunc->zopendisk32_file))(pfilefunc->zfile_func64.opaque, filestream, number_disk, mode); -} - -long call_zseek64(const zlib_filefunc64_32_def *pfilefunc, voidpf filestream, uint64_t offset, int origin) -{ - uint32_t offset_truncated = 0; - if (pfilefunc->zfile_func64.zseek64_file != NULL) - return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin); - offset_truncated = (uint32_t)offset; - if (offset_truncated != offset) - return -1; - return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream, offset_truncated, origin); -} - -uint64_t call_ztell64(const zlib_filefunc64_32_def *pfilefunc, voidpf filestream) -{ - uint64_t position; - if (pfilefunc->zfile_func64.zseek64_file != NULL) - return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque, filestream); - position = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque, filestream); - if ((position) == UINT32_MAX) - return (uint64_t)-1; - return position; -} - -void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def *p_filefunc64_32, const zlib_filefunc_def *p_filefunc32) -{ - p_filefunc64_32->zfile_func64.zopen64_file = NULL; - p_filefunc64_32->zfile_func64.zopendisk64_file = NULL; - p_filefunc64_32->zopen32_file = p_filefunc32->zopen_file; - p_filefunc64_32->zopendisk32_file = p_filefunc32->zopendisk_file; - p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file; - p_filefunc64_32->zfile_func64.zread_file = p_filefunc32->zread_file; - p_filefunc64_32->zfile_func64.zwrite_file = p_filefunc32->zwrite_file; - p_filefunc64_32->zfile_func64.ztell64_file = NULL; - p_filefunc64_32->zfile_func64.zseek64_file = NULL; - p_filefunc64_32->zfile_func64.zclose_file = p_filefunc32->zclose_file; - p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file; - p_filefunc64_32->zfile_func64.opaque = p_filefunc32->opaque; - p_filefunc64_32->zseek32_file = p_filefunc32->zseek_file; - p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file; -} - -static voidpf ZCALLBACK fopen_file_func(voidpf opaque, const char *filename, int mode); -static uint32_t ZCALLBACK fread_file_func(voidpf opaque, voidpf stream, void* buf, uint32_t size); -static uint32_t ZCALLBACK fwrite_file_func(voidpf opaque, voidpf stream, const void *buf, uint32_t size); -static uint64_t ZCALLBACK ftell64_file_func(voidpf opaque, voidpf stream); -static long ZCALLBACK fseek64_file_func(voidpf opaque, voidpf stream, uint64_t offset, int origin); -static int ZCALLBACK fclose_file_func(voidpf opaque, voidpf stream); -static int ZCALLBACK ferror_file_func(voidpf opaque, voidpf stream); - -typedef struct -{ - FILE *file; - int filenameLength; - void *filename; -} FILE_IOPOSIX; - -static voidpf file_build_ioposix(FILE *file, const char *filename) -{ - FILE_IOPOSIX *ioposix = NULL; - if (file == NULL) - return NULL; - ioposix = (FILE_IOPOSIX*)malloc(sizeof(FILE_IOPOSIX)); - ioposix->file = file; - ioposix->filenameLength = (int)strlen(filename) + 1; - ioposix->filename = (char*)malloc(ioposix->filenameLength * sizeof(char)); - strncpy((char*)ioposix->filename, filename, ioposix->filenameLength); - return (voidpf)ioposix; -} - -static voidpf ZCALLBACK fopen_file_func(voidpf opaque, const char *filename, int mode) -{ - FILE* file = NULL; - const char *mode_fopen = NULL; - if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER) == ZLIB_FILEFUNC_MODE_READ) - mode_fopen = "rb"; - else if (mode & ZLIB_FILEFUNC_MODE_EXISTING) - mode_fopen = "r+b"; - else if (mode & ZLIB_FILEFUNC_MODE_CREATE) - mode_fopen = "wb"; - - if ((filename != NULL) && (mode_fopen != NULL)) - { - file = fopen(filename, mode_fopen); - return file_build_ioposix(file, filename); - } - return file; -} - -static voidpf ZCALLBACK fopen64_file_func(voidpf opaque, const void *filename, int mode) -{ - FILE* file = NULL; - const char *mode_fopen = NULL; - if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER) == ZLIB_FILEFUNC_MODE_READ) - mode_fopen = "rb"; - else if (mode & ZLIB_FILEFUNC_MODE_EXISTING) - mode_fopen = "r+b"; - else if (mode & ZLIB_FILEFUNC_MODE_CREATE) - mode_fopen = "wb"; - - if ((filename != NULL) && (mode_fopen != NULL)) - { - file = fopen64((const char*)filename, mode_fopen); - return file_build_ioposix(file, (const char*)filename); - } - return file; -} - -static voidpf ZCALLBACK fopendisk64_file_func(voidpf opaque, voidpf stream, uint32_t number_disk, int mode) -{ - FILE_IOPOSIX *ioposix = NULL; - char *diskFilename = NULL; - voidpf ret = NULL; - int i = 0; - - if (stream == NULL) - return NULL; - ioposix = (FILE_IOPOSIX*)stream; - diskFilename = (char*)malloc(ioposix->filenameLength * sizeof(char)); - strncpy(diskFilename, (const char*)ioposix->filename, ioposix->filenameLength); - for (i = ioposix->filenameLength - 1; i >= 0; i -= 1) - { - if (diskFilename[i] != '.') - continue; - snprintf(&diskFilename[i], ioposix->filenameLength - i, ".z%02u", number_disk + 1); - break; - } - if (i >= 0) - ret = fopen64_file_func(opaque, diskFilename, mode); - free(diskFilename); - return ret; -} - -static voidpf ZCALLBACK fopendisk_file_func(voidpf opaque, voidpf stream, uint32_t number_disk, int mode) -{ - FILE_IOPOSIX *ioposix = NULL; - char *diskFilename = NULL; - voidpf ret = NULL; - int i = 0; - - if (stream == NULL) - return NULL; - ioposix = (FILE_IOPOSIX*)stream; - diskFilename = (char*)malloc(ioposix->filenameLength * sizeof(char)); - strncpy(diskFilename, (const char*)ioposix->filename, ioposix->filenameLength); - for (i = ioposix->filenameLength - 1; i >= 0; i -= 1) - { - if (diskFilename[i] != '.') - continue; - snprintf(&diskFilename[i], ioposix->filenameLength - i, ".z%02u", number_disk + 1); - break; - } - if (i >= 0) - ret = fopen_file_func(opaque, diskFilename, mode); - free(diskFilename); - return ret; -} - -static uint32_t ZCALLBACK fread_file_func(voidpf opaque, voidpf stream, void* buf, uint32_t size) -{ - FILE_IOPOSIX *ioposix = NULL; - uint32_t read = (uint32_t)-1; - if (stream == NULL) - return read; - ioposix = (FILE_IOPOSIX*)stream; - read = (uint32_t)fread(buf, 1, (size_t)size, ioposix->file); - return read; -} - -static uint32_t ZCALLBACK fwrite_file_func(voidpf opaque, voidpf stream, const void *buf, uint32_t size) -{ - FILE_IOPOSIX *ioposix = NULL; - uint32_t written = (uint32_t)-1; - if (stream == NULL) - return written; - ioposix = (FILE_IOPOSIX*)stream; - written = (uint32_t)fwrite(buf, 1, (size_t)size, ioposix->file); - return written; -} - -static long ZCALLBACK ftell_file_func(voidpf opaque, voidpf stream) -{ - FILE_IOPOSIX *ioposix = NULL; - long ret = -1; - if (stream == NULL) - return ret; - ioposix = (FILE_IOPOSIX*)stream; - ret = ftell(ioposix->file); - return ret; -} - -static uint64_t ZCALLBACK ftell64_file_func(voidpf opaque, voidpf stream) -{ - FILE_IOPOSIX *ioposix = NULL; - uint64_t ret = (uint64_t)-1; - if (stream == NULL) - return ret; - ioposix = (FILE_IOPOSIX*)stream; - ret = ftello64(ioposix->file); - return ret; -} - -static long ZCALLBACK fseek_file_func(voidpf opaque, voidpf stream, uint32_t offset, int origin) -{ - FILE_IOPOSIX *ioposix = NULL; - int fseek_origin = 0; - long ret = 0; - - if (stream == NULL) - return -1; - ioposix = (FILE_IOPOSIX*)stream; - - switch (origin) - { - case ZLIB_FILEFUNC_SEEK_CUR: - fseek_origin = SEEK_CUR; - break; - case ZLIB_FILEFUNC_SEEK_END: - fseek_origin = SEEK_END; - break; - case ZLIB_FILEFUNC_SEEK_SET: - fseek_origin = SEEK_SET; - break; - default: - return -1; - } - if (fseek(ioposix->file, offset, fseek_origin) != 0) - ret = -1; - return ret; -} - -static long ZCALLBACK fseek64_file_func(voidpf opaque, voidpf stream, uint64_t offset, int origin) -{ - FILE_IOPOSIX *ioposix = NULL; - int fseek_origin = 0; - long ret = 0; - - if (stream == NULL) - return -1; - ioposix = (FILE_IOPOSIX*)stream; - - switch (origin) - { - case ZLIB_FILEFUNC_SEEK_CUR: - fseek_origin = SEEK_CUR; - break; - case ZLIB_FILEFUNC_SEEK_END: - fseek_origin = SEEK_END; - break; - case ZLIB_FILEFUNC_SEEK_SET: - fseek_origin = SEEK_SET; - break; - default: - return -1; - } - - if (fseeko64(ioposix->file, offset, fseek_origin) != 0) - ret = -1; - - return ret; -} - -static int ZCALLBACK fclose_file_func(voidpf opaque, voidpf stream) -{ - FILE_IOPOSIX *ioposix = NULL; - int ret = -1; - if (stream == NULL) - return ret; - ioposix = (FILE_IOPOSIX*)stream; - if (ioposix->filename != NULL) - free(ioposix->filename); - ret = fclose(ioposix->file); - free(ioposix); - return ret; -} - -static int ZCALLBACK ferror_file_func(voidpf opaque, voidpf stream) -{ - FILE_IOPOSIX *ioposix = NULL; - int ret = -1; - if (stream == NULL) - return ret; - ioposix = (FILE_IOPOSIX*)stream; - ret = ferror(ioposix->file); - return ret; -} - -void fill_fopen_filefunc(zlib_filefunc_def *pzlib_filefunc_def) -{ - pzlib_filefunc_def->zopen_file = fopen_file_func; - pzlib_filefunc_def->zopendisk_file = fopendisk_file_func; - pzlib_filefunc_def->zread_file = fread_file_func; - pzlib_filefunc_def->zwrite_file = fwrite_file_func; - pzlib_filefunc_def->ztell_file = ftell_file_func; - pzlib_filefunc_def->zseek_file = fseek_file_func; - pzlib_filefunc_def->zclose_file = fclose_file_func; - pzlib_filefunc_def->zerror_file = ferror_file_func; - pzlib_filefunc_def->opaque = NULL; -} - -void fill_fopen64_filefunc(zlib_filefunc64_def *pzlib_filefunc_def) -{ - pzlib_filefunc_def->zopen64_file = fopen64_file_func; - pzlib_filefunc_def->zopendisk64_file = fopendisk64_file_func; - pzlib_filefunc_def->zread_file = fread_file_func; - pzlib_filefunc_def->zwrite_file = fwrite_file_func; - pzlib_filefunc_def->ztell64_file = ftell64_file_func; - pzlib_filefunc_def->zseek64_file = fseek64_file_func; - pzlib_filefunc_def->zclose_file = fclose_file_func; - pzlib_filefunc_def->zerror_file = ferror_file_func; - pzlib_filefunc_def->opaque = NULL; -} diff --git a/Externals/minizip/ioapi.h b/Externals/minizip/ioapi.h deleted file mode 100644 index efb94a445791..000000000000 --- a/Externals/minizip/ioapi.h +++ /dev/null @@ -1,146 +0,0 @@ -/* ioapi.h -- IO base function header for compress/uncompress .zip - part of the MiniZip project - - Copyright (C) 1998-2010 Gilles Vollant - http://www.winimage.com/zLibDll/minizip.html - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson - http://result42.com - - This program is distributed under the terms of the same license as zlib. - See the accompanying LICENSE file for the full text of the license. -*/ - -#ifndef _ZLIBIOAPI64_H -#define _ZLIBIOAPI64_H - -#include -#include -#include - -#include "zlib.h" - -#if defined(USE_FILE32API) -# define fopen64 fopen -# define ftello64 ftell -# define fseeko64 fseek -#else -# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) || defined(__APPLE__) -# define fopen64 fopen -# define ftello64 ftello -# define fseeko64 fseeko -# endif -# ifdef _MSC_VER -# define fopen64 fopen -# if (_MSC_VER >= 1400) && (!(defined(NO_MSCVER_FILE64_FUNC))) -# define ftello64 _ftelli64 -# define fseeko64 _fseeki64 -# else /* old MSC */ -# define ftello64 ftell -# define fseeko64 fseek -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define ZLIB_FILEFUNC_SEEK_CUR (1) -#define ZLIB_FILEFUNC_SEEK_END (2) -#define ZLIB_FILEFUNC_SEEK_SET (0) - -#define ZLIB_FILEFUNC_MODE_READ (1) -#define ZLIB_FILEFUNC_MODE_WRITE (2) -#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3) -#define ZLIB_FILEFUNC_MODE_EXISTING (4) -#define ZLIB_FILEFUNC_MODE_CREATE (8) - -#ifndef ZCALLBACK -# if (defined(WIN32) || defined(_WIN32) || defined (WINDOWS) || \ - defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) -# define ZCALLBACK CALLBACK -# else -# define ZCALLBACK -# endif -#endif - -typedef voidpf (ZCALLBACK *open_file_func) (voidpf opaque, const char *filename, int mode); -typedef voidpf (ZCALLBACK *opendisk_file_func) (voidpf opaque, voidpf stream, uint32_t number_disk, int mode); -typedef uint32_t (ZCALLBACK *read_file_func) (voidpf opaque, voidpf stream, void* buf, uint32_t size); -typedef uint32_t (ZCALLBACK *write_file_func) (voidpf opaque, voidpf stream, const void *buf, uint32_t size); -typedef int (ZCALLBACK *close_file_func) (voidpf opaque, voidpf stream); -typedef int (ZCALLBACK *error_file_func) (voidpf opaque, voidpf stream); - -typedef long (ZCALLBACK *tell_file_func) (voidpf opaque, voidpf stream); -typedef long (ZCALLBACK *seek_file_func) (voidpf opaque, voidpf stream, uint32_t offset, int origin); - -/* here is the "old" 32 bits structure structure */ -typedef struct zlib_filefunc_def_s -{ - open_file_func zopen_file; - opendisk_file_func zopendisk_file; - read_file_func zread_file; - write_file_func zwrite_file; - tell_file_func ztell_file; - seek_file_func zseek_file; - close_file_func zclose_file; - error_file_func zerror_file; - voidpf opaque; -} zlib_filefunc_def; - -typedef uint64_t (ZCALLBACK *tell64_file_func) (voidpf opaque, voidpf stream); -typedef long (ZCALLBACK *seek64_file_func) (voidpf opaque, voidpf stream, uint64_t offset, int origin); -typedef voidpf (ZCALLBACK *open64_file_func) (voidpf opaque, const void *filename, int mode); -typedef voidpf (ZCALLBACK *opendisk64_file_func)(voidpf opaque, voidpf stream, uint32_t number_disk, int mode); - -typedef struct zlib_filefunc64_def_s -{ - open64_file_func zopen64_file; - opendisk64_file_func zopendisk64_file; - read_file_func zread_file; - write_file_func zwrite_file; - tell64_file_func ztell64_file; - seek64_file_func zseek64_file; - close_file_func zclose_file; - error_file_func zerror_file; - voidpf opaque; -} zlib_filefunc64_def; - -void fill_fopen_filefunc(zlib_filefunc_def *pzlib_filefunc_def); -void fill_fopen64_filefunc(zlib_filefunc64_def *pzlib_filefunc_def); - -/* now internal definition, only for zip.c and unzip.h */ -typedef struct zlib_filefunc64_32_def_s -{ - zlib_filefunc64_def zfile_func64; - open_file_func zopen32_file; - opendisk_file_func zopendisk32_file; - tell_file_func ztell32_file; - seek_file_func zseek32_file; -} zlib_filefunc64_32_def; - -#define ZREAD64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zread_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size)) -#define ZWRITE64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zwrite_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size)) -/*#define ZTELL64(filefunc,filestream) ((*((filefunc).ztell64_file)) ((filefunc).opaque,filestream))*/ -/*#define ZSEEK64(filefunc,filestream,pos,mode) ((*((filefunc).zseek64_file)) ((filefunc).opaque,filestream,pos,mode))*/ -#define ZCLOSE64(filefunc,filestream) ((*((filefunc).zfile_func64.zclose_file)) ((filefunc).zfile_func64.opaque,filestream)) -#define ZERROR64(filefunc,filestream) ((*((filefunc).zfile_func64.zerror_file)) ((filefunc).zfile_func64.opaque,filestream)) - -voidpf call_zopen64(const zlib_filefunc64_32_def *pfilefunc,const void*filename, int mode); -voidpf call_zopendisk64(const zlib_filefunc64_32_def *pfilefunc, voidpf filestream, uint32_t number_disk, int mode); -long call_zseek64(const zlib_filefunc64_32_def *pfilefunc, voidpf filestream, uint64_t offset, int origin); -uint64_t call_ztell64(const zlib_filefunc64_32_def *pfilefunc, voidpf filestream); - -void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def *p_filefunc64_32, const zlib_filefunc_def *p_filefunc32); - -#define ZOPEN64(filefunc,filename,mode) (call_zopen64((&(filefunc)),(filename),(mode))) -#define ZOPENDISK64(filefunc,filestream,diskn,mode) (call_zopendisk64((&(filefunc)),(filestream),(diskn),(mode))) -#define ZTELL64(filefunc,filestream) (call_ztell64((&(filefunc)),(filestream))) -#define ZSEEK64(filefunc,filestream,pos,mode) (call_zseek64((&(filefunc)),(filestream),(pos),(mode))) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Externals/minizip/minigzip.c b/Externals/minizip/minigzip.c new file mode 100644 index 000000000000..0bd8c7989572 --- /dev/null +++ b/Externals/minizip/minigzip.c @@ -0,0 +1,182 @@ +/* minigzip.c + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" +#include "mz_os.h" +#include "mz_strm.h" +#include "mz_strm_os.h" +#include "mz_strm_zlib.h" + +#include /* printf */ + +/***************************************************************************/ + +#define MZ_GZIP_COMPRESS (1) +#define MZ_GZIP_DECOMPRESS (2) + +int32_t minigzip_banner(void); +int32_t minigzip_help(void); + +/***************************************************************************/ + +int32_t minigzip_banner(void) { + printf("Minigzip %s - https://github.com/zlib-ng/minizip-ng\n", MZ_VERSION); + printf("---------------------------------------------------\n"); + return MZ_OK; +} + +int32_t minigzip_help(void) { + printf("Usage: minigzip [-x] [-d] [-0 to -9] [files]\n\n" \ + " -x Extract file\n" \ + " -d Destination directory\n" \ + " -0 Store only\n" \ + " -1 Compress faster\n" \ + " -9 Compress better\n\n"); + return MZ_OK; +} + +/***************************************************************************/ + +int32_t minigzip_copy(const char *path, const char *destination, int16_t operation, int16_t level) { + void *target_stream = NULL; + void *source_stream = NULL; + void *zlib_stream = NULL; + const char *filename = NULL; + char target_path[1024]; + int32_t err = 0; + + + memset(target_path, 0, sizeof(target_path)); + + if (destination != NULL) { + if (mz_os_file_exists(destination) != MZ_OK) + mz_dir_make(destination); + } + + if (operation == MZ_GZIP_COMPRESS) { + mz_path_combine(target_path, path, sizeof(target_path)); + strncat(target_path, ".gz", sizeof(target_path) - strlen(target_path) - 1); + printf("Compressing to %s\n", target_path); + } else if (operation == MZ_GZIP_DECOMPRESS) { + if (destination != NULL) + mz_path_combine(target_path, destination, sizeof(target_path)); + + if (mz_path_get_filename(path, &filename) != MZ_OK) + filename = path; + + mz_path_combine(target_path, filename, sizeof(target_path)); + mz_path_remove_extension(target_path); + printf("Decompressing to %s\n", target_path); + } + + mz_stream_zlib_create(&zlib_stream); + mz_stream_zlib_set_prop_int64(zlib_stream, MZ_STREAM_PROP_COMPRESS_WINDOW, 15 + 16); + + mz_stream_os_create(&source_stream); + err = mz_stream_os_open(source_stream, path, MZ_OPEN_MODE_READ); + + if (err == MZ_OK) { + mz_stream_os_create(&target_stream); + err = mz_stream_os_open(target_stream, target_path, MZ_OPEN_MODE_CREATE | MZ_OPEN_MODE_WRITE); + + if (err == MZ_OK) { + if (operation == MZ_GZIP_COMPRESS) { + mz_stream_zlib_set_prop_int64(zlib_stream, MZ_STREAM_PROP_COMPRESS_LEVEL, level); + mz_stream_zlib_open(zlib_stream, target_path, MZ_OPEN_MODE_WRITE); + mz_stream_set_base(zlib_stream, target_stream); + err = mz_stream_copy_to_end(zlib_stream, source_stream); + } else if (operation == MZ_GZIP_DECOMPRESS) { + mz_stream_zlib_open(zlib_stream, path, MZ_OPEN_MODE_READ); + mz_stream_set_base(zlib_stream, source_stream); + err = mz_stream_copy_to_end(target_stream, zlib_stream); + } + + if (err != MZ_OK) + printf("Error %d in zlib stream (%d)\n", err, mz_stream_zlib_error(zlib_stream)); + else + printf("Operation completed successfully\n"); + + mz_stream_zlib_close(zlib_stream); + } else { + printf("Error %d opening target path %s\n", err, target_path); + } + + mz_stream_os_close(target_stream); + mz_stream_os_delete(&target_stream); + } else { + printf("Error %d opening source path %s\n", err, path); + } + + mz_stream_os_close(source_stream); + mz_stream_os_delete(&source_stream); + + mz_stream_zlib_delete(&zlib_stream); + return err; +} + +/***************************************************************************/ + +#if !defined(MZ_ZIP_NO_MAIN) +int main(int argc, const char *argv[]) { + int16_t operation_level = MZ_COMPRESS_LEVEL_DEFAULT; + int32_t path_arg = 0; + int32_t err = 0; + int32_t i = 0; + uint8_t operation = MZ_GZIP_COMPRESS; + const char *path = NULL; + const char *destination = NULL; + + + minigzip_banner(); + if (argc == 1) { + minigzip_help(); + return 0; + } + + /* Parse command line options */ + for (i = 1; i < argc; i += 1) { + printf("%s ", argv[i]); + if (argv[i][0] == '-') { + char c = argv[i][1]; + if ((c == 'x') || (c == 'X')) + operation = MZ_GZIP_DECOMPRESS; + else if ((c >= '0') && (c <= '9')) + operation_level = (c - '0'); + else if (((c == 'd') || (c == 'D')) && (i + 1 < argc)) { + destination = argv[i + 1]; + printf("%s ", argv[i + 1]); + i += 1; + } else { + err = MZ_SUPPORT_ERROR; + } + } else if (path_arg == 0) { + path_arg = i; + break; + } + } + printf("\n"); + + if (err == MZ_SUPPORT_ERROR) { + printf("Feature not supported\n"); + return err; + } + + if (path_arg == 0) { + minigzip_help(); + return 0; + } + + path = argv[path_arg]; + err = minigzip_copy(path, destination, operation, operation_level); + + return err; +} +#endif diff --git a/Externals/minizip/minizip.c b/Externals/minizip/minizip.c new file mode 100644 index 000000000000..01bb559eb8cb --- /dev/null +++ b/Externals/minizip/minizip.c @@ -0,0 +1,671 @@ +/* minizip.c + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + Copyright (C) 1998-2010 Gilles Vollant + https://www.winimage.com/zLibDll/minizip.html + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" +#include "mz_os.h" +#include "mz_strm.h" +#include "mz_strm_buf.h" +#include "mz_strm_split.h" +#include "mz_zip.h" +#include "mz_zip_rw.h" + +#include /* printf */ + +/***************************************************************************/ + +typedef struct minizip_opt_s { + uint8_t include_path; + int16_t compress_level; + uint8_t compress_method; + uint8_t overwrite; + uint8_t append; + int64_t disk_size; + uint8_t follow_links; + uint8_t store_links; + uint8_t zip_cd; + int32_t encoding; + uint8_t verbose; + uint8_t aes; + const char *cert_path; + const char *cert_pwd; +} minizip_opt; + +/***************************************************************************/ + +int32_t minizip_banner(void); +int32_t minizip_help(void); + +int32_t minizip_list(const char *path); + +int32_t minizip_add_entry_cb(void *handle, void *userdata, mz_zip_file *file_info); +int32_t minizip_add_progress_cb(void *handle, void *userdata, mz_zip_file *file_info, int64_t position); +int32_t minizip_add_overwrite_cb(void *handle, void *userdata, const char *path); +int32_t minizip_add(const char *path, const char *password, minizip_opt *options, int32_t arg_count, const char **args); + +int32_t minizip_extract_entry_cb(void *handle, void *userdata, mz_zip_file *file_info, const char *path); +int32_t minizip_extract_progress_cb(void *handle, void *userdata, mz_zip_file *file_info, int64_t position); +int32_t minizip_extract_overwrite_cb(void *handle, void *userdata, mz_zip_file *file_info, const char *path); +int32_t minizip_extract(const char *path, const char *pattern, const char *destination, const char *password, minizip_opt *options); + +int32_t minizip_erase(const char *src_path, const char *target_path, int32_t arg_count, const char **args); + +/***************************************************************************/ + +int32_t minizip_banner(void) { + printf("minizip-ng %s - https://github.com/zlib-ng/minizip-ng\n", MZ_VERSION); + printf("---------------------------------------------------\n"); + return MZ_OK; +} + +int32_t minizip_help(void) { + printf("Usage: minizip [-x][-d dir|-l|-e][-o][-f][-y][-c cp][-a][-0 to -9][-b|-m|-t][-k 512][-p pwd][-s] file.zip [files]\n\n" \ + " -x Extract files\n" \ + " -l List files\n" \ + " -d Destination directory\n" \ + " -e Erase files\n" \ + " -o Overwrite existing files\n" \ + " -c File names use cp437 encoding (or specified codepage)\n" \ + " -a Append to existing zip file\n" \ + " -i Include full path of files\n" \ + " -f Follow symbolic links\n" \ + " -y Store symbolic links\n" \ + " -v Verbose info\n" \ + " -0 Store only\n" \ + " -1 Compress faster\n" \ + " -9 Compress better\n" \ + " -k Disk size in KB\n" \ + " -z Zip central directory\n" \ + " -p Encryption password\n" \ + " -s AES encryption\n" \ + " -h PKCS12 certificate path\n" \ + " -w PKCS12 certificate password\n" \ + " -b BZIP2 compression\n" \ + " -m LZMA compression\n" \ + " -n XZ compression\n" \ + " -t ZSTD compression\n\n"); + return MZ_OK; +} + +/***************************************************************************/ + +int32_t minizip_list(const char *path) { + mz_zip_file *file_info = NULL; + uint32_t ratio = 0; + int32_t err = MZ_OK; + struct tm tmu_date; + const char *method = NULL; + char crypt = ' '; + void *reader = NULL; + + + mz_zip_reader_create(&reader); + err = mz_zip_reader_open_file(reader, path); + if (err != MZ_OK) { + printf("Error %" PRId32 " opening archive %s\n", err, path); + mz_zip_reader_delete(&reader); + return err; + } + + err = mz_zip_reader_goto_first_entry(reader); + + if (err != MZ_OK && err != MZ_END_OF_LIST) { + printf("Error %" PRId32 " going to first entry in archive\n", err); + mz_zip_reader_delete(&reader); + return err; + } + + printf(" Packed Unpacked Ratio Method Attribs Date Time CRC-32 Name\n"); + printf(" ------ -------- ----- ------ ------- ---- ---- ------ ----\n"); + + /* Enumerate all entries in the archive */ + do { + err = mz_zip_reader_entry_get_info(reader, &file_info); + + if (err != MZ_OK) { + printf("Error %" PRId32 " getting entry info in archive\n", err); + break; + } + + ratio = 0; + if (file_info->uncompressed_size > 0) + ratio = (uint32_t)((file_info->compressed_size * 100) / file_info->uncompressed_size); + + /* Display a '*' if the file is encrypted */ + if (file_info->flag & MZ_ZIP_FLAG_ENCRYPTED) + crypt = '*'; + else + crypt = ' '; + + method = mz_zip_get_compression_method_string(file_info->compression_method); + mz_zip_time_t_to_tm(file_info->modified_date, &tmu_date); + + /* Print entry information */ + printf("%12" PRId64 " %12" PRId64 " %3" PRIu32 "%% %6s%c %8" PRIx32 " %2.2" PRIu32 \ + "-%2.2" PRIu32 "-%2.2" PRIu32 " %2.2" PRIu32 ":%2.2" PRIu32 " %8.8" PRIx32 " %s\n", + file_info->compressed_size, file_info->uncompressed_size, ratio, + method, crypt, file_info->external_fa, + (uint32_t)tmu_date.tm_mon + 1, (uint32_t)tmu_date.tm_mday, + (uint32_t)tmu_date.tm_year % 100, + (uint32_t)tmu_date.tm_hour, (uint32_t)tmu_date.tm_min, + file_info->crc, file_info->filename); + + err = mz_zip_reader_goto_next_entry(reader); + + if (err != MZ_OK && err != MZ_END_OF_LIST) { + printf("Error %" PRId32 " going to next entry in archive\n", err); + break; + } + } while (err == MZ_OK); + + mz_zip_reader_delete(&reader); + + if (err == MZ_END_OF_LIST) + return MZ_OK; + + return err; +} + +/***************************************************************************/ + +int32_t minizip_add_entry_cb(void *handle, void *userdata, mz_zip_file *file_info) { + MZ_UNUSED(handle); + MZ_UNUSED(userdata); + + /* Print the current file we are trying to compress */ + printf("Adding %s\n", file_info->filename); + return MZ_OK; +} + +int32_t minizip_add_progress_cb(void *handle, void *userdata, mz_zip_file *file_info, int64_t position) { + minizip_opt *options = (minizip_opt *)userdata; + double progress = 0; + uint8_t raw = 0; + + MZ_UNUSED(userdata); + + mz_zip_writer_get_raw(handle, &raw); + + if (raw && file_info->compressed_size > 0) + progress = ((double)position / file_info->compressed_size) * 100; + else if (!raw && file_info->uncompressed_size > 0) + progress = ((double)position / file_info->uncompressed_size) * 100; + + /* Print the progress of the current compress operation */ + if (options->verbose) + printf("%s - %" PRId64 " / %" PRId64 " (%.02f%%)\n", file_info->filename, position, + file_info->uncompressed_size, progress); + return MZ_OK; +} + +int32_t minizip_add_overwrite_cb(void *handle, void *userdata, const char *path) { + minizip_opt *options = (minizip_opt *)userdata; + + MZ_UNUSED(handle); + + if (options->overwrite == 0) { + /* If ask the user what to do because append and overwrite args not set */ + char rep = 0; + do { + char answer[128]; + printf("The file %s exists. Overwrite ? [y]es, [n]o, [a]ppend : ", path); + if (scanf("%1s", answer) != 1) + exit(EXIT_FAILURE); + rep = answer[0]; + + if ((rep >= 'a') && (rep <= 'z')) + rep -= 0x20; + } while ((rep != 'Y') && (rep != 'N') && (rep != 'A')); + + if (rep == 'A') { + return MZ_EXIST_ERROR; + } else if (rep == 'N') { + return MZ_INTERNAL_ERROR; + } + } + + return MZ_OK; +} + +int32_t minizip_add(const char *path, const char *password, minizip_opt *options, int32_t arg_count, const char **args) { + void *writer = NULL; + int32_t err = MZ_OK; + int32_t err_close = MZ_OK; + int32_t i = 0; + const char *filename_in_zip = NULL; + + + printf("Archive %s\n", path); + + /* Create zip writer */ + mz_zip_writer_create(&writer); + mz_zip_writer_set_password(writer, password); + mz_zip_writer_set_aes(writer, options->aes); + mz_zip_writer_set_compress_method(writer, options->compress_method); + mz_zip_writer_set_compress_level(writer, options->compress_level); + mz_zip_writer_set_follow_links(writer, options->follow_links); + mz_zip_writer_set_store_links(writer, options->store_links); + mz_zip_writer_set_overwrite_cb(writer, options, minizip_add_overwrite_cb); + mz_zip_writer_set_progress_cb(writer, options, minizip_add_progress_cb); + mz_zip_writer_set_entry_cb(writer, options, minizip_add_entry_cb); + mz_zip_writer_set_zip_cd(writer, options->zip_cd); + if (options->cert_path != NULL) + mz_zip_writer_set_certificate(writer, options->cert_path, options->cert_pwd); + + err = mz_zip_writer_open_file(writer, path, options->disk_size, options->append); + + if (err == MZ_OK) { + for (i = 0; i < arg_count; i += 1) { + filename_in_zip = args[i]; + + /* Add file system path to archive */ + err = mz_zip_writer_add_path(writer, filename_in_zip, NULL, options->include_path, 1); + if (err != MZ_OK) + printf("Error %" PRId32 " adding path to archive %s\n", err, filename_in_zip); + } + } else { + printf("Error %" PRId32 " opening archive for writing\n", err); + } + + err_close = mz_zip_writer_close(writer); + if (err_close != MZ_OK) { + printf("Error %" PRId32 " closing archive for writing %s\n", err_close, path); + err = err_close; + } + + mz_zip_writer_delete(&writer); + return err; +} + +/***************************************************************************/ + +int32_t minizip_extract_entry_cb(void *handle, void *userdata, mz_zip_file *file_info, const char *path) { + MZ_UNUSED(handle); + MZ_UNUSED(userdata); + MZ_UNUSED(path); + + /* Print the current entry extracting */ + printf("Extracting %s\n", file_info->filename); + return MZ_OK; +} + +int32_t minizip_extract_progress_cb(void *handle, void *userdata, mz_zip_file *file_info, int64_t position) { + minizip_opt *options = (minizip_opt *)userdata; + double progress = 0; + uint8_t raw = 0; + + MZ_UNUSED(userdata); + + mz_zip_reader_get_raw(handle, &raw); + + if (raw && file_info->compressed_size > 0) + progress = ((double)position / file_info->compressed_size) * 100; + else if (!raw && file_info->uncompressed_size > 0) + progress = ((double)position / file_info->uncompressed_size) * 100; + + /* Print the progress of the current extraction */ + if (options->verbose) + printf("%s - %" PRId64 " / %" PRId64 " (%.02f%%)\n", file_info->filename, position, + file_info->uncompressed_size, progress); + + return MZ_OK; +} + +int32_t minizip_extract_overwrite_cb(void *handle, void *userdata, mz_zip_file *file_info, const char *path) { + minizip_opt *options = (minizip_opt *)userdata; + + MZ_UNUSED(handle); + MZ_UNUSED(file_info); + + /* Verify if we want to overwrite current entry on disk */ + if (options->overwrite == 0) { + char rep = 0; + do { + char answer[128]; + printf("The file %s exists. Overwrite ? [y]es, [n]o, [A]ll: ", path); + if (scanf("%1s", answer) != 1) + exit(EXIT_FAILURE); + rep = answer[0]; + if ((rep >= 'a') && (rep <= 'z')) + rep -= 0x20; + } while ((rep != 'Y') && (rep != 'N') && (rep != 'A')); + + if (rep == 'N') + return MZ_EXIST_ERROR; + if (rep == 'A') + options->overwrite = 1; + } + + return MZ_OK; +} + +int32_t minizip_extract(const char *path, const char *pattern, const char *destination, const char *password, minizip_opt *options) { + void *reader = NULL; + int32_t err = MZ_OK; + int32_t err_close = MZ_OK; + + + printf("Archive %s\n", path); + + /* Create zip reader */ + mz_zip_reader_create(&reader); + mz_zip_reader_set_pattern(reader, pattern, 1); + mz_zip_reader_set_password(reader, password); + mz_zip_reader_set_encoding(reader, options->encoding); + mz_zip_reader_set_entry_cb(reader, options, minizip_extract_entry_cb); + mz_zip_reader_set_progress_cb(reader, options, minizip_extract_progress_cb); + mz_zip_reader_set_overwrite_cb(reader, options, minizip_extract_overwrite_cb); + + err = mz_zip_reader_open_file(reader, path); + + if (err != MZ_OK) { + printf("Error %" PRId32 " opening archive %s\n", err, path); + } else { + /* Save all entries in archive to destination directory */ + err = mz_zip_reader_save_all(reader, destination); + + if (err == MZ_END_OF_LIST) { + if (pattern != NULL) { + printf("Files matching %s not found in archive\n", pattern); + } else { + printf("No files in archive\n"); + err = MZ_OK; + } + } else if (err != MZ_OK) { + printf("Error %" PRId32 " saving entries to disk %s\n", err, path); + } + } + + err_close = mz_zip_reader_close(reader); + if (err_close != MZ_OK) { + printf("Error %" PRId32 " closing archive for reading\n", err_close); + err = err_close; + } + + mz_zip_reader_delete(&reader); + return err; +} + +/***************************************************************************/ + +int32_t minizip_erase(const char *src_path, const char *target_path, int32_t arg_count, const char **args) { + mz_zip_file *file_info = NULL; + const char *filename_in_zip = NULL; + const char *target_path_ptr = target_path; + void *reader = NULL; + void *writer = NULL; + int32_t skip = 0; + int32_t err = MZ_OK; + int32_t i = 0; + uint8_t zip_cd = 0; + char bak_path[256]; + char tmp_path[256]; + + if (target_path == NULL) { + /* Construct temporary zip name */ + strncpy(tmp_path, src_path, sizeof(tmp_path) - 1); + tmp_path[sizeof(tmp_path) - 1] = 0; + strncat(tmp_path, ".tmp.zip", sizeof(tmp_path) - strlen(tmp_path) - 1); + target_path_ptr = tmp_path; + } + + mz_zip_reader_create(&reader); + mz_zip_writer_create(&writer); + + /* Open original archive we want to erase an entry in */ + err = mz_zip_reader_open_file(reader, src_path); + if (err != MZ_OK) { + printf("Error %" PRId32 " opening archive for reading %s\n", err, src_path); + mz_zip_reader_delete(&reader); + return err; + } + + /* Open temporary archive */ + err = mz_zip_writer_open_file(writer, target_path_ptr, 0, 0); + if (err != MZ_OK) { + printf("Error %" PRId32 " opening archive for writing %s\n", err, target_path_ptr); + mz_zip_reader_delete(&reader); + mz_zip_writer_delete(&writer); + return err; + } + + err = mz_zip_reader_goto_first_entry(reader); + + if (err != MZ_OK && err != MZ_END_OF_LIST) + printf("Error %" PRId32 " going to first entry in archive\n", err); + + while (err == MZ_OK) { + err = mz_zip_reader_entry_get_info(reader, &file_info); + if (err != MZ_OK) { + printf("Error %" PRId32 " getting info from archive\n", err); + break; + } + + /* Copy all entries from original archive to temporary archive + except the ones we don't want */ + for (i = 0, skip = 0; i < arg_count; i += 1) { + filename_in_zip = args[i]; + + if (mz_path_compare_wc(file_info->filename, filename_in_zip, 1) == MZ_OK) + skip = 1; + } + + if (skip) { + printf("Skipping %s\n", file_info->filename); + } else { + printf("Copying %s\n", file_info->filename); + err = mz_zip_writer_copy_from_reader(writer, reader); + } + + if (err != MZ_OK) { + printf("Error %" PRId32 " copying entry into new zip\n", err); + break; + } + + err = mz_zip_reader_goto_next_entry(reader); + + if (err != MZ_OK && err != MZ_END_OF_LIST) + printf("Error %" PRId32 " going to next entry in archive\n", err); + } + + mz_zip_reader_get_zip_cd(reader, &zip_cd); + mz_zip_writer_set_zip_cd(writer, zip_cd); + + mz_zip_reader_close(reader); + mz_zip_reader_delete(&reader); + + mz_zip_writer_close(writer); + mz_zip_writer_delete(&writer); + + if (err == MZ_END_OF_LIST) { + if (target_path == NULL) { + /* Swap original archive with temporary archive, backup old archive if possible */ + strncpy(bak_path, src_path, sizeof(bak_path) - 1); + bak_path[sizeof(bak_path) - 1] = 0; + strncat(bak_path, ".bak", sizeof(bak_path) - strlen(bak_path) - 1); + + if (mz_os_file_exists(bak_path) == MZ_OK) + mz_os_unlink(bak_path); + + if (mz_os_rename(src_path, bak_path) != MZ_OK) + printf("Error backing up archive before replacing %s\n", bak_path); + + if (mz_os_rename(tmp_path, src_path) != MZ_OK) + printf("Error replacing archive with temp %s\n", tmp_path); + } + + return MZ_OK; + } + + return err; +} + +/***************************************************************************/ + +#if !defined(MZ_ZIP_NO_MAIN) +int main(int argc, const char *argv[]) { + minizip_opt options; + int32_t path_arg = 0; + int32_t err = 0; + int32_t i = 0; + uint8_t do_list = 0; + uint8_t do_extract = 0; + uint8_t do_erase = 0; + const char *path = NULL; + const char *password = NULL; + const char *destination = NULL; + const char *filename_to_extract = NULL; + + + minizip_banner(); + if (argc == 1) { + minizip_help(); + return 0; + } + + memset(&options, 0, sizeof(options)); + + options.compress_method = MZ_COMPRESS_METHOD_DEFLATE; + options.compress_level = MZ_COMPRESS_LEVEL_DEFAULT; + + /* Parse command line options */ + for (i = 1; i < argc; i += 1) { + printf("%s ", argv[i]); + if (argv[i][0] == '-') { + char c = argv[i][1]; + if ((c == 'l') || (c == 'L')) + do_list = 1; + else if ((c == 'x') || (c == 'X')) + do_extract = 1; + else if ((c == 'e') || (c == 'E')) + do_erase = 1; + else if ((c == 'a') || (c == 'A')) + options.append = 1; + else if ((c == 'o') || (c == 'O')) + options.overwrite = 1; + else if ((c == 'f') || (c == 'F')) + options.follow_links = 1; + else if ((c == 'y') || (c == 'Y')) + options.store_links = 1; + else if ((c == 'i') || (c == 'I')) + options.include_path = 1; + else if ((c == 'z') || (c == 'Z')) + options.zip_cd = 1; + else if ((c == 'v') || (c == 'V')) + options.verbose = 1; + else if ((c >= '0') && (c <= '9')) { + options.compress_level = (c - '0'); + if (options.compress_level == 0) + options.compress_method = MZ_COMPRESS_METHOD_STORE; + } else if ((c == 'b') || (c == 'B')) +#ifdef HAVE_BZIP2 + options.compress_method = MZ_COMPRESS_METHOD_BZIP2; +#else + err = MZ_SUPPORT_ERROR; +#endif + else if ((c == 'm') || (c == 'M')) +#ifdef HAVE_LZMA + options.compress_method = MZ_COMPRESS_METHOD_LZMA; +#else + err = MZ_SUPPORT_ERROR; +#endif + else if ((c == 'n') || (c == 'N')) +#if defined(HAVE_LZMA) || defined(HAVE_LIBCOMP) + options.compress_method = MZ_COMPRESS_METHOD_XZ; +#else + err = MZ_SUPPORT_ERROR; +#endif + else if ((c == 't') || (c == 'T')) +#ifdef HAVE_ZSTD + options.compress_method = MZ_COMPRESS_METHOD_ZSTD; +#else + err = MZ_SUPPORT_ERROR; +#endif + else if ((c == 's') || (c == 'S')) +#ifdef HAVE_WZAES + options.aes = 1; +#else + err = MZ_SUPPORT_ERROR; +#endif + else if (((c == 'h') || (c == 'H')) && (i + 1 < argc)) { +#ifdef MZ_ZIP_SIGNING + options.cert_path = argv[i + 1]; + printf("%s ", argv[i + 1]); +#else + err = MZ_SUPPORT_ERROR; +#endif + i += 1; + } else if (((c == 'w') || (c == 'W')) && (i + 1 < argc)) { +#ifdef MZ_ZIP_SIGNING + options.cert_pwd = argv[i + 1]; + printf("%s ", argv[i + 1]); +#else + err = MZ_SUPPORT_ERROR; +#endif + i += 1; + } else if (((c == 'c') || (c == 'C')) && (i + 1 < argc)) { + options.encoding = (int32_t)atoi(argv[i + 1]); + i += 1; + } else if (((c == 'k') || (c == 'K')) && (i + 1 < argc)) { + options.disk_size = (int64_t)atoi(argv[i + 1]) * 1024; + printf("%s ", argv[i + 1]); + i += 1; + } else if (((c == 'd') || (c == 'D')) && (i + 1 < argc)) { + destination = argv[i + 1]; + printf("%s ", argv[i + 1]); + i += 1; + } else if (((c == 'p') || (c == 'P')) && (i + 1 < argc)) { +#ifndef MZ_ZIP_NO_ENCRYPTION + password = argv[i + 1]; + printf("*** "); +#else + err = MZ_SUPPORT_ERROR; +#endif + i += 1; + } + } else if (path_arg == 0) + path_arg = i; + } + printf("\n"); + + if (err == MZ_SUPPORT_ERROR) { + printf("Feature not supported\n"); + return err; + } + + if (path_arg == 0) { + minizip_help(); + return 0; + } + + path = argv[path_arg]; + + if (do_list) { + /* List archive contents */ + err = minizip_list(path); + } else if (do_extract) { + if (argc > path_arg + 1) + filename_to_extract = argv[path_arg + 1]; + + /* Extract archive */ + err = minizip_extract(path, filename_to_extract, destination, password, &options); + } else if (do_erase) { + /* Erase file in archive */ + err = minizip_erase(path, NULL, argc - (path_arg + 1), &argv[path_arg + 1]); + } else { + /* Add files to archive */ + err = minizip_add(path, password, &options, argc - (path_arg + 1), &argv[path_arg + 1]); + } + + return err; +} +#endif diff --git a/Externals/minizip/minizip.pc.cmakein b/Externals/minizip/minizip.pc.cmakein new file mode 100644 index 000000000000..d965a346c590 --- /dev/null +++ b/Externals/minizip/minizip.pc.cmakein @@ -0,0 +1,14 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=@CMAKE_INSTALL_PREFIX@ +libdir=@CMAKE_INSTALL_FULL_LIBDIR@ +sharedlibdir=@CMAKE_INSTALL_FULL_LIBDIR@ +includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + +Name: @PROJECT_NAME@ +Description: Minizip zip file manipulation library +Version: @VERSION@ + +Requires: zlib +Libs: -L${libdir} -L${sharedlibdir} -l@PROJECT_NAME@ +Libs.private:@PC_PRIVATE_LIBS@ +Cflags: -I${includedir} diff --git a/Externals/minizip/minizip.vcxproj b/Externals/minizip/minizip.vcxproj index fe499a08251e..d08bafbe571e 100644 --- a/Externals/minizip/minizip.vcxproj +++ b/Externals/minizip/minizip.vcxproj @@ -1,5 +1,5 @@  - + @@ -17,19 +17,41 @@ - NOUNCRYPT;%(PreprocessorDefinitions) + HAVE_ZLIB;ZLIB_COMPAT;MZ_ZIP_NO_CRYPTO;MZ_ZIP_NO_ENCRYPTION;HAVE_STDINT_H;HAVE_INTTYPES_H;NO_FSEEKO;%(PreprocessorDefinitions) - - + + + + + + + + + + + + - + + + + + + + + + + + + + diff --git a/Externals/minizip/mz.h b/Externals/minizip/mz.h new file mode 100644 index 000000000000..82a14a23e0e2 --- /dev/null +++ b/Externals/minizip/mz.h @@ -0,0 +1,274 @@ +/* mz.h -- Errors codes, zip flags and magic + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_H +#define MZ_H + +/***************************************************************************/ + +/* MZ_VERSION */ +#define MZ_VERSION ("3.0.4") +#define MZ_VERSION_BUILD (030004) + +/* MZ_ERROR */ +#define MZ_OK (0) /* zlib */ +#define MZ_STREAM_ERROR (-1) /* zlib */ +#define MZ_DATA_ERROR (-3) /* zlib */ +#define MZ_MEM_ERROR (-4) /* zlib */ +#define MZ_BUF_ERROR (-5) /* zlib */ +#define MZ_VERSION_ERROR (-6) /* zlib */ + +#define MZ_END_OF_LIST (-100) +#define MZ_END_OF_STREAM (-101) + +#define MZ_PARAM_ERROR (-102) +#define MZ_FORMAT_ERROR (-103) +#define MZ_INTERNAL_ERROR (-104) +#define MZ_CRC_ERROR (-105) +#define MZ_CRYPT_ERROR (-106) +#define MZ_EXIST_ERROR (-107) +#define MZ_PASSWORD_ERROR (-108) +#define MZ_SUPPORT_ERROR (-109) +#define MZ_HASH_ERROR (-110) +#define MZ_OPEN_ERROR (-111) +#define MZ_CLOSE_ERROR (-112) +#define MZ_SEEK_ERROR (-113) +#define MZ_TELL_ERROR (-114) +#define MZ_READ_ERROR (-115) +#define MZ_WRITE_ERROR (-116) +#define MZ_SIGN_ERROR (-117) +#define MZ_SYMLINK_ERROR (-118) + +/* MZ_OPEN */ +#define MZ_OPEN_MODE_READ (0x01) +#define MZ_OPEN_MODE_WRITE (0x02) +#define MZ_OPEN_MODE_READWRITE (MZ_OPEN_MODE_READ | MZ_OPEN_MODE_WRITE) +#define MZ_OPEN_MODE_APPEND (0x04) +#define MZ_OPEN_MODE_CREATE (0x08) +#define MZ_OPEN_MODE_EXISTING (0x10) + +/* MZ_SEEK */ +#define MZ_SEEK_SET (0) +#define MZ_SEEK_CUR (1) +#define MZ_SEEK_END (2) + +/* MZ_COMPRESS */ +#define MZ_COMPRESS_METHOD_STORE (0) +#define MZ_COMPRESS_METHOD_DEFLATE (8) +#define MZ_COMPRESS_METHOD_BZIP2 (12) +#define MZ_COMPRESS_METHOD_LZMA (14) +#define MZ_COMPRESS_METHOD_ZSTD (93) +#define MZ_COMPRESS_METHOD_XZ (95) +#define MZ_COMPRESS_METHOD_AES (99) + +#define MZ_COMPRESS_LEVEL_DEFAULT (-1) +#define MZ_COMPRESS_LEVEL_FAST (2) +#define MZ_COMPRESS_LEVEL_NORMAL (6) +#define MZ_COMPRESS_LEVEL_BEST (9) + +/* MZ_ZIP_FLAG */ +#define MZ_ZIP_FLAG_ENCRYPTED (1 << 0) +#define MZ_ZIP_FLAG_LZMA_EOS_MARKER (1 << 1) +#define MZ_ZIP_FLAG_DEFLATE_MAX (1 << 1) +#define MZ_ZIP_FLAG_DEFLATE_NORMAL (0) +#define MZ_ZIP_FLAG_DEFLATE_FAST (1 << 2) +#define MZ_ZIP_FLAG_DEFLATE_SUPER_FAST (MZ_ZIP_FLAG_DEFLATE_FAST | \ + MZ_ZIP_FLAG_DEFLATE_MAX) +#define MZ_ZIP_FLAG_DATA_DESCRIPTOR (1 << 3) +#define MZ_ZIP_FLAG_UTF8 (1 << 11) +#define MZ_ZIP_FLAG_MASK_LOCAL_INFO (1 << 13) + +/* MZ_ZIP_EXTENSION */ +#define MZ_ZIP_EXTENSION_ZIP64 (0x0001) +#define MZ_ZIP_EXTENSION_NTFS (0x000a) +#define MZ_ZIP_EXTENSION_AES (0x9901) +#define MZ_ZIP_EXTENSION_UNIX1 (0x000d) +#define MZ_ZIP_EXTENSION_SIGN (0x10c5) +#define MZ_ZIP_EXTENSION_HASH (0x1a51) +#define MZ_ZIP_EXTENSION_CDCD (0xcdcd) + +/* MZ_ZIP64 */ +#define MZ_ZIP64_AUTO (0) +#define MZ_ZIP64_FORCE (1) +#define MZ_ZIP64_DISABLE (2) + +/* MZ_HOST_SYSTEM */ +#define MZ_HOST_SYSTEM(VERSION_MADEBY) ((uint8_t)(VERSION_MADEBY >> 8)) +#define MZ_HOST_SYSTEM_MSDOS (0) +#define MZ_HOST_SYSTEM_UNIX (3) +#define MZ_HOST_SYSTEM_WINDOWS_NTFS (10) +#define MZ_HOST_SYSTEM_RISCOS (13) +#define MZ_HOST_SYSTEM_OSX_DARWIN (19) + +/* MZ_PKCRYPT */ +#define MZ_PKCRYPT_HEADER_SIZE (12) + +/* MZ_AES */ +#define MZ_AES_VERSION (1) +#define MZ_AES_ENCRYPTION_MODE_128 (0x01) +#define MZ_AES_ENCRYPTION_MODE_192 (0x02) +#define MZ_AES_ENCRYPTION_MODE_256 (0x03) +#define MZ_AES_KEY_LENGTH(MODE) (8 * (MODE & 3) + 8) +#define MZ_AES_KEY_LENGTH_MAX (32) +#define MZ_AES_BLOCK_SIZE (16) +#define MZ_AES_HEADER_SIZE(MODE) ((4 * (MODE & 3) + 4) + 2) +#define MZ_AES_FOOTER_SIZE (10) + +/* MZ_HASH */ +#define MZ_HASH_MD5 (10) +#define MZ_HASH_MD5_SIZE (16) +#define MZ_HASH_SHA1 (20) +#define MZ_HASH_SHA1_SIZE (20) +#define MZ_HASH_SHA256 (23) +#define MZ_HASH_SHA256_SIZE (32) +#define MZ_HASH_MAX_SIZE (256) + +/* MZ_ENCODING */ +#define MZ_ENCODING_CODEPAGE_437 (437) +#define MZ_ENCODING_CODEPAGE_932 (932) +#define MZ_ENCODING_CODEPAGE_936 (936) +#define MZ_ENCODING_CODEPAGE_950 (950) +#define MZ_ENCODING_UTF8 (65001) + +/* MZ_UTILITY */ +#define MZ_UNUSED(SYMBOL) ((void)SYMBOL) + +#ifndef MZ_CUSTOM_ALLOC +#define MZ_ALLOC(SIZE) (malloc((SIZE))) +#endif +#ifndef MZ_CUSTOM_FREE +#define MZ_FREE(PTR) (free(PTR)) +#endif + +#if defined(_WIN32) && defined(MZ_EXPORTS) +#define MZ_EXPORT __declspec(dllexport) +#else +#define MZ_EXPORT +#endif + +/***************************************************************************/ + +#include /* size_t, NULL, malloc */ +#include /* time_t, time() */ +#include /* memset, strncpy, strlen */ +#include + +#if defined(HAVE_STDINT_H) +# include +#elif defined(__has_include) +# if __has_include() +# include +# endif +#endif + +#ifndef INT8_MAX +typedef signed char int8_t; +#endif +#ifndef INT16_MAX +typedef short int16_t; +#endif +#ifndef INT32_MAX +typedef int int32_t; +#endif +#ifndef INT64_MAX +typedef long long int64_t; +#endif +#ifndef UINT8_MAX +typedef unsigned char uint8_t; +#endif +#ifndef UINT16_MAX +typedef unsigned short uint16_t; +#endif +#ifndef UINT32_MAX +typedef unsigned int uint32_t; +#endif +#ifndef UINT64_MAX +typedef unsigned long long uint64_t; +#endif + +#if defined(HAVE_INTTYPES_H) +# include +#elif defined(__has_include) +# if __has_include() +# include +# endif +#endif + +#ifndef PRId8 +# define PRId8 "hhd" +#endif +#ifndef PRIu8 +# define PRIu8 "hhu" +#endif +#ifndef PRIx8 +# define PRIx8 "hhx" +#endif +#ifndef PRId16 +# define PRId16 "hd" +#endif +#ifndef PRIu16 +# define PRIu16 "hu" +#endif +#ifndef PRIx16 +# define PRIx16 "hx" +#endif +#ifndef PRId32 +# define PRId32 "d" +#endif +#ifndef PRIu32 +# define PRIu32 "u" +#endif +#ifndef PRIx32 +# define PRIx32 "x" +#endif +#if ULONG_MAX == 0xfffffffful +# ifndef PRId64 +# define PRId64 "ld" +# endif +# ifndef PRIu64 +# define PRIu64 "lu" +# endif +# ifndef PRIx64 +# define PRIx64 "lx" +# endif +#else +# ifndef PRId64 +# define PRId64 "lld" +# endif +# ifndef PRIu64 +# define PRIu64 "llu" +# endif +# ifndef PRIx64 +# define PRIx64 "llx" +# endif +#endif + +#ifndef INT16_MAX +# define INT16_MAX 32767 +#endif +#ifndef INT32_MAX +# define INT32_MAX 2147483647L +#endif +#ifndef INT64_MAX +# define INT64_MAX 9223372036854775807LL +#endif +#ifndef UINT16_MAX +# define UINT16_MAX 65535U +#endif +#ifndef UINT32_MAX +# define UINT32_MAX 4294967295UL +#endif +#ifndef UINT64_MAX +# define UINT64_MAX 18446744073709551615ULL +#endif + +/***************************************************************************/ + +#endif diff --git a/Externals/minizip/mz_compat.c b/Externals/minizip/mz_compat.c new file mode 100644 index 000000000000..5a08046a7f7c --- /dev/null +++ b/Externals/minizip/mz_compat.c @@ -0,0 +1,1303 @@ +/* mz_compat.c -- Backwards compatible interface for older versions + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + Copyright (C) 1998-2010 Gilles Vollant + https://www.winimage.com/zLibDll/minizip.html + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" +#include "mz_os.h" +#include "mz_strm.h" +#include "mz_strm_mem.h" +#include "mz_strm_os.h" +#include "mz_strm_zlib.h" +#include "mz_zip.h" + +#include /* SEEK */ + +#include "mz_compat.h" + +/***************************************************************************/ + +typedef struct mz_compat_s { + void *stream; + void *handle; + uint64_t entry_index; + int64_t entry_pos; + int64_t total_out; +} mz_compat; + +/***************************************************************************/ + +typedef struct mz_stream_ioapi_s { + mz_stream stream; + void *handle; + zlib_filefunc_def filefunc; + zlib_filefunc64_def filefunc64; +} mz_stream_ioapi; + +/***************************************************************************/ + +static int32_t mz_stream_ioapi_open(void *stream, const char *path, int32_t mode); +static int32_t mz_stream_ioapi_is_open(void *stream); +static int32_t mz_stream_ioapi_read(void *stream, void *buf, int32_t size); +static int32_t mz_stream_ioapi_write(void *stream, const void *buf, int32_t size); +static int64_t mz_stream_ioapi_tell(void *stream); +static int32_t mz_stream_ioapi_seek(void *stream, int64_t offset, int32_t origin); +static int32_t mz_stream_ioapi_close(void *stream); +static int32_t mz_stream_ioapi_error(void *stream); +static void *mz_stream_ioapi_create(void **stream); +static void mz_stream_ioapi_delete(void **stream); + +/***************************************************************************/ + +static mz_stream_vtbl mz_stream_ioapi_vtbl = { + mz_stream_ioapi_open, + mz_stream_ioapi_is_open, + mz_stream_ioapi_read, + mz_stream_ioapi_write, + mz_stream_ioapi_tell, + mz_stream_ioapi_seek, + mz_stream_ioapi_close, + mz_stream_ioapi_error, + mz_stream_ioapi_create, + mz_stream_ioapi_delete, + NULL, + NULL +}; + +/***************************************************************************/ + +static int32_t mz_stream_ioapi_open(void *stream, const char *path, int32_t mode) { + mz_stream_ioapi *ioapi = (mz_stream_ioapi *)stream; + int32_t ioapi_mode = 0; + + if ((mode & MZ_OPEN_MODE_READWRITE) == MZ_OPEN_MODE_READ) + ioapi_mode = ZLIB_FILEFUNC_MODE_READ; + else if (mode & MZ_OPEN_MODE_APPEND) + ioapi_mode = ZLIB_FILEFUNC_MODE_EXISTING; + else if (mode & MZ_OPEN_MODE_CREATE) + ioapi_mode = ZLIB_FILEFUNC_MODE_CREATE; + else + return MZ_OPEN_ERROR; + + if (ioapi->filefunc64.zopen64_file != NULL) + ioapi->handle = ioapi->filefunc64.zopen64_file(ioapi->filefunc64.opaque, path, ioapi_mode); + else if (ioapi->filefunc.zopen_file != NULL) + ioapi->handle = ioapi->filefunc.zopen_file(ioapi->filefunc.opaque, path, ioapi_mode); + + if (ioapi->handle == NULL) + return MZ_PARAM_ERROR; + + return MZ_OK; +} + +static int32_t mz_stream_ioapi_is_open(void *stream) { + mz_stream_ioapi *ioapi = (mz_stream_ioapi *)stream; + if (ioapi->handle == NULL) + return MZ_OPEN_ERROR; + return MZ_OK; +} + +static int32_t mz_stream_ioapi_read(void *stream, void *buf, int32_t size) { + mz_stream_ioapi *ioapi = (mz_stream_ioapi *)stream; + read_file_func zread = NULL; + void *opaque = NULL; + + if (mz_stream_ioapi_is_open(stream) != MZ_OK) + return MZ_OPEN_ERROR; + + if (ioapi->filefunc64.zread_file != NULL) { + zread = ioapi->filefunc64.zread_file; + opaque = ioapi->filefunc64.opaque; + } else if (ioapi->filefunc.zread_file != NULL) { + zread = ioapi->filefunc.zread_file; + opaque = ioapi->filefunc.opaque; + } else + return MZ_PARAM_ERROR; + + return zread(opaque, ioapi->handle, buf, size); +} + +static int32_t mz_stream_ioapi_write(void *stream, const void *buf, int32_t size) { + mz_stream_ioapi *ioapi = (mz_stream_ioapi *)stream; + write_file_func zwrite = NULL; + int32_t written = 0; + void *opaque = NULL; + + if (mz_stream_ioapi_is_open(stream) != MZ_OK) + return MZ_OPEN_ERROR; + + if (ioapi->filefunc64.zwrite_file != NULL) { + zwrite = ioapi->filefunc64.zwrite_file; + opaque = ioapi->filefunc64.opaque; + } else if (ioapi->filefunc.zwrite_file != NULL) { + zwrite = ioapi->filefunc.zwrite_file; + opaque = ioapi->filefunc.opaque; + } else + return MZ_PARAM_ERROR; + + written = zwrite(opaque, ioapi->handle, buf, size); + return written; +} + +static int64_t mz_stream_ioapi_tell(void *stream) { + mz_stream_ioapi *ioapi = (mz_stream_ioapi *)stream; + + if (mz_stream_ioapi_is_open(stream) != MZ_OK) + return MZ_OPEN_ERROR; + + if (ioapi->filefunc64.ztell64_file != NULL) + return ioapi->filefunc64.ztell64_file(ioapi->filefunc64.opaque, ioapi->handle); + else if (ioapi->filefunc.ztell_file != NULL) + return ioapi->filefunc.ztell_file(ioapi->filefunc.opaque, ioapi->handle); + + return MZ_INTERNAL_ERROR; +} + +static int32_t mz_stream_ioapi_seek(void *stream, int64_t offset, int32_t origin) { + mz_stream_ioapi *ioapi = (mz_stream_ioapi *)stream; + int32_t written = 0; + void *opaque = NULL; + + if (mz_stream_ioapi_is_open(stream) != MZ_OK) + return MZ_OPEN_ERROR; + + if (ioapi->filefunc64.zseek64_file != NULL) { + if (ioapi->filefunc64.zseek64_file(ioapi->filefunc64.opaque, ioapi->handle, offset, origin) != 0) + return MZ_INTERNAL_ERROR; + } else if (ioapi->filefunc.zseek_file != NULL) { + if (ioapi->filefunc.zseek_file(ioapi->filefunc.opaque, ioapi->handle, (int32_t)offset, origin) != 0) + return MZ_INTERNAL_ERROR; + } else + return MZ_PARAM_ERROR; + + return MZ_OK; +} + +static int32_t mz_stream_ioapi_close(void *stream) { + mz_stream_ioapi *ioapi = (mz_stream_ioapi *)stream; + close_file_func zclose = NULL; + void *opaque = NULL; + + if (mz_stream_ioapi_is_open(stream) != MZ_OK) + return MZ_OPEN_ERROR; + + if (ioapi->filefunc.zclose_file != NULL) { + zclose = ioapi->filefunc.zclose_file; + opaque = ioapi->filefunc.opaque; + } else if (ioapi->filefunc64.zclose_file != NULL) { + zclose = ioapi->filefunc64.zclose_file; + opaque = ioapi->filefunc64.opaque; + } else + return MZ_PARAM_ERROR; + + if (zclose(opaque, ioapi->handle) != 0) + return MZ_CLOSE_ERROR; + ioapi->handle = NULL; + return MZ_OK; +} + +static int32_t mz_stream_ioapi_error(void *stream) { + mz_stream_ioapi *ioapi = (mz_stream_ioapi *)stream; + testerror_file_func zerror = NULL; + void *opaque = NULL; + + if (mz_stream_ioapi_is_open(stream) != MZ_OK) + return MZ_OPEN_ERROR; + + if (ioapi->filefunc.zerror_file != NULL) { + zerror = ioapi->filefunc.zerror_file; + opaque = ioapi->filefunc.opaque; + } else if (ioapi->filefunc64.zerror_file != NULL) { + zerror = ioapi->filefunc64.zerror_file; + opaque = ioapi->filefunc64.opaque; + } else + return MZ_PARAM_ERROR; + + return zerror(opaque, ioapi->handle); +} + +static int32_t mz_stream_ioapi_set_filefunc(void *stream, zlib_filefunc_def *filefunc) { + mz_stream_ioapi *ioapi = (mz_stream_ioapi *)stream; + memcpy(&ioapi->filefunc, filefunc, sizeof(zlib_filefunc_def)); + return MZ_OK; +} + +static int32_t mz_stream_ioapi_set_filefunc64(void *stream, zlib_filefunc64_def *filefunc) { + mz_stream_ioapi *ioapi = (mz_stream_ioapi *)stream; + memcpy(&ioapi->filefunc64, filefunc, sizeof(zlib_filefunc64_def)); + return MZ_OK; +} + +static void *mz_stream_ioapi_create(void **stream) { + mz_stream_ioapi *ioapi = NULL; + + ioapi = (mz_stream_ioapi *)MZ_ALLOC(sizeof(mz_stream_ioapi)); + if (ioapi != NULL) { + memset(ioapi, 0, sizeof(mz_stream_ioapi)); + ioapi->stream.vtbl = &mz_stream_ioapi_vtbl; + } + if (stream != NULL) + *stream = ioapi; + + return ioapi; +} + +static void mz_stream_ioapi_delete(void **stream) { + mz_stream_ioapi *ioapi = NULL; + if (stream == NULL) + return; + ioapi = (mz_stream_ioapi *)*stream; + if (ioapi != NULL) + MZ_FREE(ioapi); + *stream = NULL; +} + +/***************************************************************************/ + +void fill_fopen_filefunc(zlib_filefunc_def *pzlib_filefunc_def) { + /* For 32-bit file support only, compile with MZ_FILE32_API */ + if (pzlib_filefunc_def != NULL) + memset(pzlib_filefunc_def, 0, sizeof(zlib_filefunc_def)); +} + +void fill_fopen64_filefunc(zlib_filefunc64_def *pzlib_filefunc_def) { + /* All mz_stream_os_* support large files if compilation supports it */ + if (pzlib_filefunc_def != NULL) + memset(pzlib_filefunc_def, 0, sizeof(zlib_filefunc64_def)); +} + +void fill_win32_filefunc(zlib_filefunc_def *pzlib_filefunc_def) { + /* Handled by mz_stream_os_win32 */ + if (pzlib_filefunc_def != NULL) + memset(pzlib_filefunc_def, 0, sizeof(zlib_filefunc_def)); +} + +void fill_win32_filefunc64(zlib_filefunc64_def *pzlib_filefunc_def) { + /* Automatically supported in mz_stream_os_win32 */ + if (pzlib_filefunc_def != NULL) + memset(pzlib_filefunc_def, 0, sizeof(zlib_filefunc64_def)); +} + +void fill_win32_filefunc64A(zlib_filefunc64_def *pzlib_filefunc_def) { + /* Automatically supported in mz_stream_os_win32 */ + if (pzlib_filefunc_def != NULL) + memset(pzlib_filefunc_def, 0, sizeof(zlib_filefunc64_def)); +} + +/* NOTE: fill_win32_filefunc64W is no longer necessary since wide-character + support is automatically handled by the underlying os stream. Do not + pass wide-characters to zipOpen or unzOpen. */ + +void fill_memory_filefunc(zlib_filefunc_def *pzlib_filefunc_def) { + /* Use opaque to indicate which stream interface to create */ + if (pzlib_filefunc_def != NULL) { + memset(pzlib_filefunc_def, 0, sizeof(zlib_filefunc_def)); + pzlib_filefunc_def->opaque = mz_stream_mem_get_interface(); + } +} + +/***************************************************************************/ + +static int32_t zipConvertAppendToStreamMode(int append) { + int32_t mode = MZ_OPEN_MODE_WRITE; + switch (append) { + case APPEND_STATUS_CREATE: + mode |= MZ_OPEN_MODE_CREATE; + break; + case APPEND_STATUS_CREATEAFTER: + mode |= MZ_OPEN_MODE_CREATE | MZ_OPEN_MODE_APPEND; + break; + case APPEND_STATUS_ADDINZIP: + mode |= MZ_OPEN_MODE_READ | MZ_OPEN_MODE_APPEND; + break; + } + return mode; +} + +zipFile zipOpen(const char *path, int append) { + return zipOpen2(path, append, NULL, NULL); +} + +zipFile zipOpen64(const void *path, int append) { + return zipOpen2(path, append, NULL, NULL); +} + +zipFile zipOpen2(const char *path, int append, const char **globalcomment, + zlib_filefunc_def *pzlib_filefunc_def) { + zipFile zip = NULL; + int32_t mode = zipConvertAppendToStreamMode(append); + void *stream = NULL; + + if (pzlib_filefunc_def) { + if (pzlib_filefunc_def->zopen_file != NULL) { + if (mz_stream_ioapi_create(&stream) == NULL) + return NULL; + mz_stream_ioapi_set_filefunc(stream, pzlib_filefunc_def); + } else if (pzlib_filefunc_def->opaque != NULL) { + if (mz_stream_create(&stream, (mz_stream_vtbl *)pzlib_filefunc_def->opaque) == NULL) + return NULL; + } + } + + if (stream == NULL) { + if (mz_stream_os_create(&stream) == NULL) + return NULL; + } + + if (mz_stream_open(stream, path, mode) != MZ_OK) { + mz_stream_delete(&stream); + return NULL; + } + + zip = zipOpen_MZ(stream, append, globalcomment); + + if (zip == NULL) { + mz_stream_delete(&stream); + return NULL; + } + + return zip; +} + +zipFile zipOpen2_64(const void *path, int append, const char **globalcomment, + zlib_filefunc64_def *pzlib_filefunc_def) { + zipFile zip = NULL; + int32_t mode = zipConvertAppendToStreamMode(append); + void *stream = NULL; + + if (pzlib_filefunc_def) { + if (pzlib_filefunc_def->zopen64_file != NULL) { + if (mz_stream_ioapi_create(&stream) == NULL) + return NULL; + mz_stream_ioapi_set_filefunc64(stream, pzlib_filefunc_def); + } else if (pzlib_filefunc_def->opaque != NULL) { + if (mz_stream_create(&stream, (mz_stream_vtbl *)pzlib_filefunc_def->opaque) == NULL) + return NULL; + } + } + + if (stream == NULL) { + if (mz_stream_os_create(&stream) == NULL) + return NULL; + } + + if (mz_stream_open(stream, path, mode) != MZ_OK) { + mz_stream_delete(&stream); + return NULL; + } + + zip = zipOpen_MZ(stream, append, globalcomment); + + if (zip == NULL) { + mz_stream_delete(&stream); + return NULL; + } + + return zip; +} + +zipFile zipOpen_MZ(void *stream, int append, const char **globalcomment) { + mz_compat *compat = NULL; + int32_t err = MZ_OK; + int32_t mode = zipConvertAppendToStreamMode(append); + void *handle = NULL; + + mz_zip_create(&handle); + err = mz_zip_open(handle, stream, mode); + + if (err != MZ_OK) { + mz_zip_delete(&handle); + return NULL; + } + + if (globalcomment != NULL) + mz_zip_get_comment(handle, globalcomment); + + compat = (mz_compat *)MZ_ALLOC(sizeof(mz_compat)); + if (compat != NULL) { + compat->handle = handle; + compat->stream = stream; + } else { + mz_zip_delete(&handle); + } + + return (zipFile)compat; +} + +void* zipGetHandle_MZ(zipFile file) { + mz_compat *compat = (mz_compat *)file; + if (compat == NULL) + return NULL; + return compat->handle; +} + +void* zipGetStream_MZ(zipFile file) { + mz_compat *compat = (mz_compat *)file; + if (compat == NULL) + return NULL; + return (void *)compat->stream; +} + +int zipOpenNewFileInZip5(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int raw, int windowBits, int memLevel, int strategy, const char *password, + unsigned long crc_for_crypting, unsigned long version_madeby, unsigned long flag_base, int zip64) { + mz_compat *compat = (mz_compat *)file; + mz_zip_file file_info; + + MZ_UNUSED(strategy); + MZ_UNUSED(memLevel); + MZ_UNUSED(windowBits); + MZ_UNUSED(size_extrafield_local); + MZ_UNUSED(extrafield_local); + MZ_UNUSED(crc_for_crypting); + + if (compat == NULL) + return ZIP_PARAMERROR; + + memset(&file_info, 0, sizeof(file_info)); + + if (zipfi != NULL) { + uint64_t dos_date = 0; + + if (zipfi->mz_dos_date != 0) + dos_date = zipfi->mz_dos_date; + else + dos_date = mz_zip_tm_to_dosdate(&zipfi->tmz_date); + + file_info.modified_date = mz_zip_dosdate_to_time_t(dos_date); + file_info.external_fa = zipfi->external_fa; + file_info.internal_fa = zipfi->internal_fa; + } + + if (filename == NULL) + filename = "-"; + + file_info.compression_method = (uint16_t)compression_method; + file_info.filename = filename; + /* file_info.extrafield_local = extrafield_local; */ + /* file_info.extrafield_local_size = size_extrafield_local; */ + file_info.extrafield = extrafield_global; + file_info.extrafield_size = size_extrafield_global; + file_info.version_madeby = (uint16_t)version_madeby; + file_info.comment = comment; + if (file_info.comment != NULL) + file_info.comment_size = (uint16_t)strlen(file_info.comment); + file_info.flag = (uint16_t)flag_base; + if (zip64) + file_info.zip64 = MZ_ZIP64_FORCE; + else + file_info.zip64 = MZ_ZIP64_DISABLE; +#ifdef HAVE_WZAES + if ((password != NULL) || (raw && (file_info.flag & MZ_ZIP_FLAG_ENCRYPTED))) + file_info.aes_version = MZ_AES_VERSION; +#endif + + return mz_zip_entry_write_open(compat->handle, &file_info, (int16_t)level, (uint8_t)raw, password); +} + +int zipOpenNewFileInZip4_64(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int raw, int windowBits, int memLevel, int strategy, const char *password, + unsigned long crc_for_crypting, unsigned long version_madeby, unsigned long flag_base, int zip64) { + return zipOpenNewFileInZip5(file, filename, zipfi, extrafield_local, size_extrafield_local, + extrafield_global, size_extrafield_global, comment, compression_method, level, raw, windowBits, + memLevel, strategy, password, crc_for_crypting, version_madeby, flag_base, zip64); +} + +int zipOpenNewFileInZip4(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int raw, int windowBits, int memLevel, int strategy, const char *password, + unsigned long crc_for_crypting, unsigned long version_madeby, unsigned long flag_base) { + return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, + extrafield_global, size_extrafield_global, comment, compression_method, level, raw, windowBits, + memLevel, strategy, password, crc_for_crypting, version_madeby, flag_base, 0); +} + +int zipOpenNewFileInZip3(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int raw, int windowBits, int memLevel, int strategy, const char *password, + unsigned long crc_for_crypting) { + return zipOpenNewFileInZip3_64(file, filename, zipfi, extrafield_local, size_extrafield_local, + extrafield_global, size_extrafield_global, comment, compression_method, level, raw, windowBits, + memLevel, strategy, password, crc_for_crypting, 0); +} + +int zipOpenNewFileInZip3_64(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int raw, int windowBits, int memLevel, int strategy, const char *password, + uint32_t crc_for_crypting, int zip64) { + return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, + extrafield_global, size_extrafield_global, comment, compression_method, level, raw, windowBits, + memLevel, strategy, password, crc_for_crypting, MZ_VERSION_MADEBY, 0, zip64); +} + +int zipOpenNewFileInZip2(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int raw) { + return zipOpenNewFileInZip3_64(file, filename, zipfi, extrafield_local, size_extrafield_local, + extrafield_global, size_extrafield_global, comment, compression_method, level, raw, + 0, 0, 0, NULL, 0, 0); +} + +int zipOpenNewFileInZip2_64(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int raw, int zip64) { + return zipOpenNewFileInZip3_64(file, filename, zipfi, extrafield_local, size_extrafield_local, + extrafield_global, size_extrafield_global, comment, compression_method, level, raw, 0, + 0, 0, NULL, 0, zip64); +} + +int zipOpenNewFileInZip(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level) { + return zipOpenNewFileInZip_64(file, filename, zipfi, extrafield_local, size_extrafield_local, + extrafield_global, size_extrafield_global, comment, compression_method, level, 0); +} + +int zipOpenNewFileInZip_64(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int zip64) { + return zipOpenNewFileInZip2_64(file, filename, zipfi, extrafield_local, size_extrafield_local, + extrafield_global, size_extrafield_global, comment, compression_method, level, 0, zip64); +} + +int zipWriteInFileInZip(zipFile file, const void *buf, uint32_t len) { + mz_compat *compat = (mz_compat *)file; + int32_t written = 0; + if (compat == NULL || len >= INT32_MAX) + return ZIP_PARAMERROR; + written = mz_zip_entry_write(compat->handle, buf, (int32_t)len); + if ((written < 0) || ((uint32_t)written != len)) + return ZIP_ERRNO; + return ZIP_OK; +} + +int zipCloseFileInZipRaw(zipFile file, unsigned long uncompressed_size, unsigned long crc32) { + return zipCloseFileInZipRaw64(file, uncompressed_size, crc32); +} + +int zipCloseFileInZipRaw64(zipFile file, uint64_t uncompressed_size, unsigned long crc32) { + mz_compat *compat = (mz_compat *)file; + if (compat == NULL) + return ZIP_PARAMERROR; + return mz_zip_entry_close_raw(compat->handle, (int64_t)uncompressed_size, crc32); +} + +int zipCloseFileInZip(zipFile file) { + return zipCloseFileInZip64(file); +} + +int zipCloseFileInZip64(zipFile file) { + mz_compat *compat = (mz_compat *)file; + if (compat == NULL) + return ZIP_PARAMERROR; + return mz_zip_entry_close(compat->handle); +} + +int zipClose(zipFile file, const char *global_comment) { + return zipClose_64(file, global_comment); +} + +int zipClose_64(zipFile file, const char *global_comment) { + return zipClose2_64(file, global_comment, MZ_VERSION_MADEBY); +} + +int zipClose2_64(zipFile file, const char *global_comment, uint16_t version_madeby) { + mz_compat *compat = (mz_compat *)file; + int32_t err = MZ_OK; + + if (compat->handle != NULL) + err = zipClose2_MZ(file, global_comment, version_madeby); + + if (compat->stream != NULL) { + mz_stream_close(compat->stream); + mz_stream_delete(&compat->stream); + } + + MZ_FREE(compat); + + return err; +} + +/* Only closes the zip handle, does not close the stream */ +int zipClose_MZ(zipFile file, const char *global_comment) { + return zipClose2_MZ(file, global_comment, MZ_VERSION_MADEBY); +} + +/* Only closes the zip handle, does not close the stream */ +int zipClose2_MZ(zipFile file, const char *global_comment, uint16_t version_madeby) { + mz_compat *compat = (mz_compat *)file; + int32_t err = MZ_OK; + + if (compat == NULL) + return ZIP_PARAMERROR; + if (compat->handle == NULL) + return err; + + if (global_comment != NULL) + mz_zip_set_comment(compat->handle, global_comment); + + mz_zip_set_version_madeby(compat->handle, version_madeby); + err = mz_zip_close(compat->handle); + mz_zip_delete(&compat->handle); + + return err; +} + +/***************************************************************************/ + +unzFile unzOpen(const char *path) { + return unzOpen64(path); +} + +unzFile unzOpen64(const void *path) { + return unzOpen2(path, NULL); +} + +unzFile unzOpen2(const char *path, zlib_filefunc_def *pzlib_filefunc_def) { + unzFile unz = NULL; + void *stream = NULL; + + if (pzlib_filefunc_def) { + if (pzlib_filefunc_def->zopen_file != NULL) { + if (mz_stream_ioapi_create(&stream) == NULL) + return NULL; + mz_stream_ioapi_set_filefunc(stream, pzlib_filefunc_def); + } else if (pzlib_filefunc_def->opaque != NULL) { + if (mz_stream_create(&stream, (mz_stream_vtbl *)pzlib_filefunc_def->opaque) == NULL) + return NULL; + } + } + + if (stream == NULL) { + if (mz_stream_os_create(&stream) == NULL) + return NULL; + } + + if (mz_stream_open(stream, path, MZ_OPEN_MODE_READ) != MZ_OK) { + mz_stream_delete(&stream); + return NULL; + } + + unz = unzOpen_MZ(stream); + if (unz == NULL) { + mz_stream_close(stream); + mz_stream_delete(&stream); + return NULL; + } + return unz; +} + +unzFile unzOpen2_64(const void *path, zlib_filefunc64_def *pzlib_filefunc_def) { + unzFile unz = NULL; + void *stream = NULL; + + if (pzlib_filefunc_def) { + if (pzlib_filefunc_def->zopen64_file != NULL) { + if (mz_stream_ioapi_create(&stream) == NULL) + return NULL; + mz_stream_ioapi_set_filefunc64(stream, pzlib_filefunc_def); + } else if (pzlib_filefunc_def->opaque != NULL) { + if (mz_stream_create(&stream, (mz_stream_vtbl *)pzlib_filefunc_def->opaque) == NULL) + return NULL; + } + } + + if (stream == NULL) { + if (mz_stream_os_create(&stream) == NULL) + return NULL; + } + + if (mz_stream_open(stream, path, MZ_OPEN_MODE_READ) != MZ_OK) { + mz_stream_delete(&stream); + return NULL; + } + + unz = unzOpen_MZ(stream); + if (unz == NULL) { + mz_stream_close(stream); + mz_stream_delete(&stream); + return NULL; + } + return unz; +} + +void* unzGetHandle_MZ(unzFile file) { + mz_compat *compat = (mz_compat *)file; + if (compat == NULL) + return NULL; + return compat->handle; +} + +void* unzGetStream_MZ(unzFile file) { + mz_compat *compat = (mz_compat *)file; + if (compat == NULL) + return NULL; + return compat->stream; +} + +unzFile unzOpen_MZ(void *stream) { + mz_compat *compat = NULL; + int32_t err = MZ_OK; + void *handle = NULL; + + mz_zip_create(&handle); + err = mz_zip_open(handle, stream, MZ_OPEN_MODE_READ); + + if (err != MZ_OK) { + mz_zip_delete(&handle); + return NULL; + } + + compat = (mz_compat *)MZ_ALLOC(sizeof(mz_compat)); + if (compat != NULL) { + compat->handle = handle; + compat->stream = stream; + + mz_zip_goto_first_entry(compat->handle); + } else { + mz_zip_delete(&handle); + } + + return (unzFile)compat; +} + +int unzClose(unzFile file) { + mz_compat *compat = (mz_compat *)file; + int32_t err = MZ_OK; + + if (compat == NULL) + return UNZ_PARAMERROR; + + if (compat->handle != NULL) + err = unzClose_MZ(file); + + if (compat->stream != NULL) { + mz_stream_close(compat->stream); + mz_stream_delete(&compat->stream); + } + + MZ_FREE(compat); + + return err; +} + +/* Only closes the zip handle, does not close the stream */ +int unzClose_MZ(unzFile file) { + mz_compat *compat = (mz_compat *)file; + int32_t err = MZ_OK; + + if (compat == NULL) + return UNZ_PARAMERROR; + + err = mz_zip_close(compat->handle); + mz_zip_delete(&compat->handle); + + return err; +} + +int unzGetGlobalInfo(unzFile file, unz_global_info* pglobal_info32) { + mz_compat *compat = (mz_compat *)file; + unz_global_info64 global_info64; + int32_t err = MZ_OK; + + memset(pglobal_info32, 0, sizeof(unz_global_info)); + if (compat == NULL) + return UNZ_PARAMERROR; + + err = unzGetGlobalInfo64(file, &global_info64); + if (err == MZ_OK) { + pglobal_info32->number_entry = (uint32_t)global_info64.number_entry; + pglobal_info32->size_comment = global_info64.size_comment; + pglobal_info32->number_disk_with_CD = global_info64.number_disk_with_CD; + } + return err; +} + +int unzGetGlobalInfo64(unzFile file, unz_global_info64 *pglobal_info) { + mz_compat *compat = (mz_compat *)file; + const char *comment_ptr = NULL; + int32_t err = MZ_OK; + + memset(pglobal_info, 0, sizeof(unz_global_info64)); + if (compat == NULL) + return UNZ_PARAMERROR; + err = mz_zip_get_comment(compat->handle, &comment_ptr); + if (err == MZ_OK) + pglobal_info->size_comment = (uint16_t)strlen(comment_ptr); + if ((err == MZ_OK) || (err == MZ_EXIST_ERROR)) + err = mz_zip_get_number_entry(compat->handle, &pglobal_info->number_entry); + if (err == MZ_OK) + err = mz_zip_get_disk_number_with_cd(compat->handle, &pglobal_info->number_disk_with_CD); + return err; +} + +int unzGetGlobalComment(unzFile file, char *comment, unsigned long comment_size) { + mz_compat *compat = (mz_compat *)file; + const char *comment_ptr = NULL; + int32_t err = MZ_OK; + + if (comment == NULL || comment_size == 0) + return UNZ_PARAMERROR; + err = mz_zip_get_comment(compat->handle, &comment_ptr); + if (err == MZ_OK) { + strncpy(comment, comment_ptr, comment_size - 1); + comment[comment_size - 1] = 0; + } + return err; +} + +int unzOpenCurrentFile3(unzFile file, int *method, int *level, int raw, const char *password) { + mz_compat *compat = (mz_compat *)file; + mz_zip_file *file_info = NULL; + int32_t err = MZ_OK; + void *stream = NULL; + + if (compat == NULL) + return UNZ_PARAMERROR; + if (method != NULL) + *method = 0; + if (level != NULL) + *level = 0; + + compat->total_out = 0; + err = mz_zip_entry_read_open(compat->handle, (uint8_t)raw, password); + if (err == MZ_OK) + err = mz_zip_entry_get_info(compat->handle, &file_info); + if (err == MZ_OK) { + if (method != NULL) { + *method = file_info->compression_method; + } + + if (level != NULL) { + *level = 6; + switch (file_info->flag & 0x06) { + case MZ_ZIP_FLAG_DEFLATE_SUPER_FAST: + *level = 1; + break; + case MZ_ZIP_FLAG_DEFLATE_FAST: + *level = 2; + break; + case MZ_ZIP_FLAG_DEFLATE_MAX: + *level = 9; + break; + } + } + } + if (err == MZ_OK) + err = mz_zip_get_stream(compat->handle, &stream); + if (err == MZ_OK) + compat->entry_pos = mz_stream_tell(stream); + return err; +} + +int unzOpenCurrentFile(unzFile file) { + return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL); +} + +int unzOpenCurrentFilePassword(unzFile file, const char *password) { + return unzOpenCurrentFile3(file, NULL, NULL, 0, password); +} + +int unzOpenCurrentFile2(unzFile file, int *method, int *level, int raw) { + return unzOpenCurrentFile3(file, method, level, raw, NULL); +} + +int unzReadCurrentFile(unzFile file, void *buf, uint32_t len) { + mz_compat *compat = (mz_compat *)file; + int32_t err = MZ_OK; + if (compat == NULL || len >= INT32_MAX) + return UNZ_PARAMERROR; + err = mz_zip_entry_read(compat->handle, buf, (int32_t)len); + if (err > 0) + compat->total_out += (uint32_t)err; + return err; +} + +int unzCloseCurrentFile(unzFile file) { + mz_compat *compat = (mz_compat *)file; + int32_t err = MZ_OK; + if (compat == NULL) + return UNZ_PARAMERROR; + err = mz_zip_entry_close(compat->handle); + return err; +} + +int unzGetCurrentFileInfo(unzFile file, unz_file_info *pfile_info, char *filename, + unsigned long filename_size, void *extrafield, unsigned long extrafield_size, char *comment, + unsigned long comment_size) { + mz_compat *compat = (mz_compat *)file; + mz_zip_file *file_info = NULL; + uint16_t bytes_to_copy = 0; + int32_t err = MZ_OK; + + if (compat == NULL) + return UNZ_PARAMERROR; + + err = mz_zip_entry_get_info(compat->handle, &file_info); + if (err != MZ_OK) + return err; + + if (pfile_info != NULL) { + pfile_info->version = file_info->version_madeby; + pfile_info->version_needed = file_info->version_needed; + pfile_info->flag = file_info->flag; + pfile_info->compression_method = file_info->compression_method; + pfile_info->mz_dos_date = mz_zip_time_t_to_dos_date(file_info->modified_date); + mz_zip_time_t_to_tm(file_info->modified_date, &pfile_info->tmu_date); + pfile_info->tmu_date.tm_year += 1900; + pfile_info->crc = file_info->crc; + + pfile_info->size_filename = file_info->filename_size; + pfile_info->size_file_extra = file_info->extrafield_size; + pfile_info->size_file_comment = file_info->comment_size; + + pfile_info->disk_num_start = (uint16_t)file_info->disk_number; + pfile_info->internal_fa = file_info->internal_fa; + pfile_info->external_fa = file_info->external_fa; + + pfile_info->compressed_size = (uint32_t)file_info->compressed_size; + pfile_info->uncompressed_size = (uint32_t)file_info->uncompressed_size; + } + if (filename_size > 0 && filename != NULL && file_info->filename != NULL) { + bytes_to_copy = (uint16_t)filename_size; + if (bytes_to_copy > file_info->filename_size) + bytes_to_copy = file_info->filename_size; + memcpy(filename, file_info->filename, bytes_to_copy); + if (bytes_to_copy < filename_size) + filename[bytes_to_copy] = 0; + } + if (extrafield_size > 0 && extrafield != NULL) { + bytes_to_copy = (uint16_t)extrafield_size; + if (bytes_to_copy > file_info->extrafield_size) + bytes_to_copy = file_info->extrafield_size; + memcpy(extrafield, file_info->extrafield, bytes_to_copy); + } + if (comment_size > 0 && comment != NULL && file_info->comment != NULL) { + bytes_to_copy = (uint16_t)comment_size; + if (bytes_to_copy > file_info->comment_size) + bytes_to_copy = file_info->comment_size; + memcpy(comment, file_info->comment, bytes_to_copy); + if (bytes_to_copy < comment_size) + comment[bytes_to_copy] = 0; + } + return err; +} + +int unzGetCurrentFileInfo64(unzFile file, unz_file_info64 * pfile_info, char *filename, + unsigned long filename_size, void *extrafield, unsigned long extrafield_size, char *comment, + unsigned long comment_size) { + mz_compat *compat = (mz_compat *)file; + mz_zip_file *file_info = NULL; + uint16_t bytes_to_copy = 0; + int32_t err = MZ_OK; + + if (compat == NULL) + return UNZ_PARAMERROR; + + err = mz_zip_entry_get_info(compat->handle, &file_info); + if (err != MZ_OK) + return err; + + if (pfile_info != NULL) { + pfile_info->version = file_info->version_madeby; + pfile_info->version_needed = file_info->version_needed; + pfile_info->flag = file_info->flag; + pfile_info->compression_method = file_info->compression_method; + pfile_info->mz_dos_date = mz_zip_time_t_to_dos_date(file_info->modified_date); + mz_zip_time_t_to_tm(file_info->modified_date, &pfile_info->tmu_date); + pfile_info->tmu_date.tm_year += 1900; + pfile_info->crc = file_info->crc; + + pfile_info->size_filename = file_info->filename_size; + pfile_info->size_file_extra = file_info->extrafield_size; + pfile_info->size_file_comment = file_info->comment_size; + + pfile_info->disk_num_start = file_info->disk_number; + pfile_info->internal_fa = file_info->internal_fa; + pfile_info->external_fa = file_info->external_fa; + + pfile_info->compressed_size = (uint64_t)file_info->compressed_size; + pfile_info->uncompressed_size = (uint64_t)file_info->uncompressed_size; + } + if (filename_size > 0 && filename != NULL && file_info->filename != NULL) { + bytes_to_copy = (uint16_t)filename_size; + if (bytes_to_copy > file_info->filename_size) + bytes_to_copy = file_info->filename_size; + memcpy(filename, file_info->filename, bytes_to_copy); + if (bytes_to_copy < filename_size) + filename[bytes_to_copy] = 0; + } + if (extrafield_size > 0 && extrafield != NULL) { + bytes_to_copy = (uint16_t)extrafield_size; + if (bytes_to_copy > file_info->extrafield_size) + bytes_to_copy = file_info->extrafield_size; + memcpy(extrafield, file_info->extrafield, bytes_to_copy); + } + if (comment_size > 0 && comment != NULL && file_info->comment != NULL) { + bytes_to_copy = (uint16_t)comment_size; + if (bytes_to_copy > file_info->comment_size) + bytes_to_copy = file_info->comment_size; + memcpy(comment, file_info->comment, bytes_to_copy); + if (bytes_to_copy < comment_size) + comment[bytes_to_copy] = 0; + } + return err; +} + +int unzGoToFirstFile(unzFile file) { + mz_compat *compat = (mz_compat *)file; + if (compat == NULL) + return UNZ_PARAMERROR; + compat->entry_index = 0; + return mz_zip_goto_first_entry(compat->handle); +} + +int unzGoToNextFile(unzFile file) { + mz_compat *compat = (mz_compat *)file; + int32_t err = MZ_OK; + if (compat == NULL) + return UNZ_PARAMERROR; + err = mz_zip_goto_next_entry(compat->handle); + if (err != MZ_END_OF_LIST) + compat->entry_index += 1; + return err; +} + +int unzLocateFile(unzFile file, const char *filename, unzFileNameComparer filename_compare_func) { + mz_compat *compat = (mz_compat *)file; + mz_zip_file *file_info = NULL; + uint64_t preserve_index = 0; + int32_t err = MZ_OK; + int32_t result = 0; + + if (compat == NULL) + return UNZ_PARAMERROR; + + preserve_index = compat->entry_index; + + err = mz_zip_goto_first_entry(compat->handle); + while (err == MZ_OK) { + err = mz_zip_entry_get_info(compat->handle, &file_info); + if (err != MZ_OK) + break; + + if ((intptr_t)filename_compare_func > 2) { + result = filename_compare_func(file, filename, file_info->filename); + } else { + int32_t case_sensitive = (int32_t)(intptr_t)filename_compare_func; + result = mz_path_compare_wc(filename, file_info->filename, !case_sensitive); + } + + if (result == 0) + return MZ_OK; + + err = mz_zip_goto_next_entry(compat->handle); + } + + compat->entry_index = preserve_index; + return err; +} + +/***************************************************************************/ + +int unzGetFilePos(unzFile file, unz_file_pos *file_pos) { + unz64_file_pos file_pos64; + int32_t err = 0; + + err = unzGetFilePos64(file, &file_pos64); + if (err < 0) + return err; + + file_pos->pos_in_zip_directory = (uint32_t)file_pos64.pos_in_zip_directory; + file_pos->num_of_file = (uint32_t)file_pos64.num_of_file; + return err; +} + +int unzGoToFilePos(unzFile file, unz_file_pos *file_pos) { + mz_compat *compat = (mz_compat *)file; + unz64_file_pos file_pos64; + + if (compat == NULL || file_pos == NULL) + return UNZ_PARAMERROR; + + file_pos64.pos_in_zip_directory = file_pos->pos_in_zip_directory; + file_pos64.num_of_file = file_pos->num_of_file; + + return unzGoToFilePos64(file, &file_pos64); +} + +int unzGetFilePos64(unzFile file, unz64_file_pos *file_pos) { + mz_compat *compat = (mz_compat *)file; + int64_t offset = 0; + + if (compat == NULL || file_pos == NULL) + return UNZ_PARAMERROR; + + offset = unzGetOffset64(file); + if (offset < 0) + return (int)offset; + + file_pos->pos_in_zip_directory = offset; + file_pos->num_of_file = compat->entry_index; + return UNZ_OK; +} + +int unzGoToFilePos64(unzFile file, const unz64_file_pos *file_pos) { + mz_compat *compat = (mz_compat *)file; + int32_t err = MZ_OK; + + if (compat == NULL || file_pos == NULL) + return UNZ_PARAMERROR; + + err = mz_zip_goto_entry(compat->handle, file_pos->pos_in_zip_directory); + if (err == MZ_OK) + compat->entry_index = file_pos->num_of_file; + return err; +} + +unsigned long unzGetOffset(unzFile file) { + return (uint32_t)unzGetOffset64(file); +} + +int64_t unzGetOffset64(unzFile file) { + mz_compat *compat = (mz_compat *)file; + if (compat == NULL) + return UNZ_PARAMERROR; + return mz_zip_get_entry(compat->handle); +} + +int unzSetOffset(unzFile file, unsigned long pos) { + return unzSetOffset64(file, pos); +} + +int unzSetOffset64(unzFile file, int64_t pos) { + mz_compat *compat = (mz_compat *)file; + if (compat == NULL) + return UNZ_PARAMERROR; + return (int)mz_zip_goto_entry(compat->handle, pos); +} + +int unzGetLocalExtrafield(unzFile file, void *buf, unsigned int len) { + mz_compat *compat = (mz_compat *)file; + mz_zip_file *file_info = NULL; + int32_t err = MZ_OK; + int32_t bytes_to_copy = 0; + + if (compat == NULL || buf == NULL || len >= INT32_MAX) + return UNZ_PARAMERROR; + + err = mz_zip_entry_get_local_info(compat->handle, &file_info); + if (err != MZ_OK) + return err; + + bytes_to_copy = (int32_t)len; + if (bytes_to_copy > file_info->extrafield_size) + bytes_to_copy = file_info->extrafield_size; + + memcpy(buf, file_info->extrafield, bytes_to_copy); + return MZ_OK; +} + +int32_t unzTell(unzFile file) { + return unztell(file); +} + +int32_t unztell(unzFile file) { + return (int32_t)unztell64(file); +} + +uint64_t unzTell64(unzFile file) { + return unztell64(file); +} + +uint64_t unztell64(unzFile file) { + mz_compat *compat = (mz_compat *)file; + if (compat == NULL) + return UNZ_PARAMERROR; + return compat->total_out; +} + +int unzSeek(unzFile file, int32_t offset, int origin) { + return unzSeek64(file, offset, origin); +} + +int unzSeek64(unzFile file, int64_t offset, int origin) { + mz_compat *compat = (mz_compat *)file; + mz_zip_file *file_info = NULL; + int64_t position = 0; + int32_t err = MZ_OK; + void *stream = NULL; + + if (compat == NULL) + return UNZ_PARAMERROR; + err = mz_zip_entry_get_info(compat->handle, &file_info); + if (err != MZ_OK) + return err; + if (file_info->compression_method != MZ_COMPRESS_METHOD_STORE) + return UNZ_ERRNO; + + if (origin == SEEK_SET) + position = offset; + else if (origin == SEEK_CUR) + position = compat->total_out + offset; + else if (origin == SEEK_END) + position = (int64_t)file_info->compressed_size + offset; + else + return UNZ_PARAMERROR; + + if (position > (int64_t)file_info->compressed_size) + return UNZ_PARAMERROR; + + err = mz_zip_get_stream(compat->handle, &stream); + if (err == MZ_OK) + err = mz_stream_seek(stream, compat->entry_pos + position, MZ_SEEK_SET); + if (err == MZ_OK) + compat->total_out = position; + return err; +} + +int unzEndOfFile(unzFile file) { + return unzeof(file); +} + +int unzeof(unzFile file) { + mz_compat *compat = (mz_compat *)file; + mz_zip_file *file_info = NULL; + int32_t err = MZ_OK; + + if (compat == NULL) + return UNZ_PARAMERROR; + err = mz_zip_entry_get_info(compat->handle, &file_info); + if (err != MZ_OK) + return err; + if (compat->total_out == (int64_t)file_info->uncompressed_size) + return 1; + return 0; +} + +void* unzGetStream(unzFile file) { + mz_compat *compat = (mz_compat *)file; + if (compat == NULL) + return NULL; + return (void *)compat->stream; +} + +/***************************************************************************/ diff --git a/Externals/minizip/mz_compat.h b/Externals/minizip/mz_compat.h new file mode 100644 index 000000000000..808cc74e1f08 --- /dev/null +++ b/Externals/minizip/mz_compat.h @@ -0,0 +1,396 @@ +/* mz_compat.h -- Backwards compatible interface for older versions + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + Copyright (C) 1998-2010 Gilles Vollant + https://www.winimage.com/zLibDll/minizip.html + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_COMPAT_H +#define MZ_COMPAT_H + +#include "mz.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +#if defined(HAVE_ZLIB) && defined(MAX_MEM_LEVEL) +#ifndef DEF_MEM_LEVEL +# if MAX_MEM_LEVEL >= 8 +# define DEF_MEM_LEVEL 8 +# else +# define DEF_MEM_LEVEL MAX_MEM_LEVEL +# endif +#endif +#endif +#ifndef MAX_WBITS +#define MAX_WBITS (15) +#endif +#ifndef DEF_MEM_LEVEL +#define DEF_MEM_LEVEL (8) +#endif + +#ifndef ZEXPORT +# define ZEXPORT MZ_EXPORT +#endif + +/***************************************************************************/ + +#if defined(STRICTZIP) || defined(STRICTZIPUNZIP) +/* like the STRICT of WIN32, we define a pointer that cannot be converted + from (void*) without cast */ +typedef struct TagzipFile__ { int unused; } zip_file__; +typedef zip_file__ *zipFile; +#else +typedef void *zipFile; +#endif + +/***************************************************************************/ + +typedef uint64_t ZPOS64_T; + +#ifndef ZCALLBACK +#define ZCALLBACK +#endif + +typedef void* (ZCALLBACK *open_file_func) (void *opaque, const char *filename, int mode); +typedef void* (ZCALLBACK *open64_file_func) (void *opaque, const void *filename, int mode); +typedef unsigned long (ZCALLBACK *read_file_func) (void *opaque, void *stream, void* buf, unsigned long size); +typedef unsigned long (ZCALLBACK *write_file_func) (void *opaque, void *stream, const void* buf, + unsigned long size); +typedef int (ZCALLBACK *close_file_func) (void *opaque, void *stream); +typedef int (ZCALLBACK *testerror_file_func)(void *opaque, void *stream); +typedef long (ZCALLBACK *tell_file_func) (void *opaque, void *stream); +typedef ZPOS64_T (ZCALLBACK *tell64_file_func) (void *opaque, void *stream); +typedef long (ZCALLBACK *seek_file_func) (void *opaque, void *stream, unsigned long offset, int origin); +typedef long (ZCALLBACK *seek64_file_func) (void *opaque, void *stream, ZPOS64_T offset, int origin); + +typedef struct zlib_filefunc_def_s +{ + open_file_func zopen_file; + read_file_func zread_file; + write_file_func zwrite_file; + tell_file_func ztell_file; + seek_file_func zseek_file; + close_file_func zclose_file; + testerror_file_func zerror_file; + void* opaque; +} zlib_filefunc_def; + +typedef struct zlib_filefunc64_def_s +{ + open64_file_func zopen64_file; + read_file_func zread_file; + write_file_func zwrite_file; + tell64_file_func ztell64_file; + seek64_file_func zseek64_file; + close_file_func zclose_file; + testerror_file_func zerror_file; + void* opaque; +} zlib_filefunc64_def; + +/***************************************************************************/ + +#define ZLIB_FILEFUNC_SEEK_SET (0) +#define ZLIB_FILEFUNC_SEEK_CUR (1) +#define ZLIB_FILEFUNC_SEEK_END (2) + +#define ZLIB_FILEFUNC_MODE_READ (1) +#define ZLIB_FILEFUNC_MODE_WRITE (2) +#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3) + +#define ZLIB_FILEFUNC_MODE_EXISTING (4) +#define ZLIB_FILEFUNC_MODE_CREATE (8) + +/***************************************************************************/ + +ZEXPORT void fill_fopen_filefunc(zlib_filefunc_def *pzlib_filefunc_def); +ZEXPORT void fill_fopen64_filefunc(zlib_filefunc64_def *pzlib_filefunc_def); +ZEXPORT void fill_win32_filefunc(zlib_filefunc_def *pzlib_filefunc_def); +ZEXPORT void fill_win32_filefunc64(zlib_filefunc64_def *pzlib_filefunc_def); +ZEXPORT void fill_win32_filefunc64A(zlib_filefunc64_def *pzlib_filefunc_def); +ZEXPORT void fill_memory_filefunc(zlib_filefunc_def *pzlib_filefunc_def); + +/***************************************************************************/ + +#if MZ_COMPAT_VERSION <= 110 +#define mz_dos_date dosDate +#else +#define mz_dos_date dos_date +#endif + +typedef struct tm tm_unz; +typedef struct tm tm_zip; + +typedef struct { + uint32_t mz_dos_date; + struct tm tmz_date; + uint16_t internal_fa; /* internal file attributes 2 bytes */ + uint32_t external_fa; /* external file attributes 4 bytes */ +} zip_fileinfo; + +typedef const char *zipcharpc; + +/***************************************************************************/ + +#define ZIP_OK (0) +#define ZIP_EOF (0) +#define ZIP_ERRNO (-1) +#define ZIP_PARAMERROR (-102) +#define ZIP_BADZIPFILE (-103) +#define ZIP_INTERNALERROR (-104) + +#ifndef Z_DEFLATED +#define Z_DEFLATED (8) +#endif +#define Z_BZIP2ED (12) + +#define APPEND_STATUS_CREATE (0) +#define APPEND_STATUS_CREATEAFTER (1) +#define APPEND_STATUS_ADDINZIP (2) + +/***************************************************************************/ +/* Writing a zip file */ + +ZEXPORT zipFile zipOpen(const char *path, int append); +ZEXPORT zipFile zipOpen64(const void *path, int append); +ZEXPORT zipFile zipOpen2(const char *path, int append, const char **globalcomment, + zlib_filefunc_def *pzlib_filefunc_def); + +ZEXPORT zipFile zipOpen2_64(const void *path, int append, const char **globalcomment, + zlib_filefunc64_def *pzlib_filefunc_def); +ZEXPORT zipFile zipOpen_MZ(void *stream, int append, const char **globalcomment); + +ZEXPORT void* zipGetHandle_MZ(zipFile); +ZEXPORT void* zipGetStream_MZ(zipFile file); + +ZEXPORT int zipOpenNewFileInZip(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level); +ZEXPORT int zipOpenNewFileInZip_64(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int zip64); +ZEXPORT int zipOpenNewFileInZip2(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int raw); +ZEXPORT int zipOpenNewFileInZip2_64(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int raw, int zip64); +ZEXPORT int zipOpenNewFileInZip3(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int raw, int windowBits, int memLevel, int strategy, const char *password, + unsigned long crc_for_crypting); +ZEXPORT int zipOpenNewFileInZip3_64(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int raw, int windowBits, int memLevel, int strategy, const char *password, + uint32_t crc_for_crypting, int zip64); +ZEXPORT int zipOpenNewFileInZip4(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int raw, int windowBits, int memLevel, int strategy, const char *password, + unsigned long crc_for_crypting, unsigned long version_madeby, unsigned long flag_base); +ZEXPORT int zipOpenNewFileInZip4_64(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int raw, int windowBits, int memLevel, int strategy, const char *password, + unsigned long crc_for_crypting, unsigned long version_madeby, unsigned long flag_base, int zip64); +ZEXPORT int zipOpenNewFileInZip5(zipFile file, const char *filename, const zip_fileinfo *zipfi, + const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global, + uint16_t size_extrafield_global, const char *comment, int compression_method, int level, + int raw, int windowBits, int memLevel, int strategy, const char *password, + unsigned long crc_for_crypting, unsigned long version_madeby, unsigned long flag_base, int zip64); + +ZEXPORT int zipWriteInFileInZip(zipFile file, const void *buf, uint32_t len); + +ZEXPORT int zipCloseFileInZipRaw(zipFile file, unsigned long uncompressed_size, unsigned long crc32); +ZEXPORT int zipCloseFileInZipRaw64(zipFile file, uint64_t uncompressed_size, unsigned long crc32); +ZEXPORT int zipCloseFileInZip(zipFile file); +ZEXPORT int zipCloseFileInZip64(zipFile file); + +ZEXPORT int zipClose(zipFile file, const char *global_comment); +ZEXPORT int zipClose_64(zipFile file, const char *global_comment); +ZEXPORT int zipClose2_64(zipFile file, const char *global_comment, uint16_t version_madeby); + int zipClose_MZ(zipFile file, const char *global_comment); + int zipClose2_MZ(zipFile file, const char *global_comment, uint16_t version_madeby); + +/***************************************************************************/ + +#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) +/* like the STRICT of WIN32, we define a pointer that cannot be converted + from (void*) without cast */ +typedef struct TagunzFile__ { int unused; } unz_file__; +typedef unz_file__ *unzFile; +#else +typedef void *unzFile; +#endif + +/***************************************************************************/ + +#define UNZ_OK (0) +#define UNZ_END_OF_LIST_OF_FILE (-100) +#define UNZ_ERRNO (-1) +#define UNZ_EOF (0) +#define UNZ_PARAMERROR (-102) +#define UNZ_BADZIPFILE (-103) +#define UNZ_INTERNALERROR (-104) +#define UNZ_CRCERROR (-105) +#define UNZ_BADPASSWORD (-106) + +/***************************************************************************/ + +typedef struct unz_global_info64_s { + uint64_t number_entry; /* total number of entries in the central dir on this disk */ + uint32_t number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP */ + uint16_t size_comment; /* size of the global comment of the zipfile */ +} unz_global_info64; + +typedef struct unz_global_info_s { + uint32_t number_entry; /* total number of entries in the central dir on this disk */ + uint32_t number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP */ + uint16_t size_comment; /* size of the global comment of the zipfile */ +} unz_global_info; + +typedef struct unz_file_info64_s { + uint16_t version; /* version made by 2 bytes */ + uint16_t version_needed; /* version needed to extract 2 bytes */ + uint16_t flag; /* general purpose bit flag 2 bytes */ + uint16_t compression_method; /* compression method 2 bytes */ + uint32_t mz_dos_date; /* last mod file date in Dos fmt 4 bytes */ + struct tm tmu_date; + uint32_t crc; /* crc-32 4 bytes */ + uint64_t compressed_size; /* compressed size 8 bytes */ + uint64_t uncompressed_size; /* uncompressed size 8 bytes */ + uint16_t size_filename; /* filename length 2 bytes */ + uint16_t size_file_extra; /* extra field length 2 bytes */ + uint16_t size_file_comment; /* file comment length 2 bytes */ + + uint32_t disk_num_start; /* disk number start 4 bytes */ + uint16_t internal_fa; /* internal file attributes 2 bytes */ + uint32_t external_fa; /* external file attributes 4 bytes */ + + uint64_t disk_offset; + + uint16_t size_file_extra_internal; +} unz_file_info64; + +typedef struct unz_file_info_s { + uint16_t version; /* version made by 2 bytes */ + uint16_t version_needed; /* version needed to extract 2 bytes */ + uint16_t flag; /* general purpose bit flag 2 bytes */ + uint16_t compression_method; /* compression method 2 bytes */ + uint32_t mz_dos_date; /* last mod file date in Dos fmt 4 bytes */ + struct tm tmu_date; + uint32_t crc; /* crc-32 4 bytes */ + uint32_t compressed_size; /* compressed size 4 bytes */ + uint32_t uncompressed_size; /* uncompressed size 4 bytes */ + uint16_t size_filename; /* filename length 2 bytes */ + uint16_t size_file_extra; /* extra field length 2 bytes */ + uint16_t size_file_comment; /* file comment length 2 bytes */ + + uint16_t disk_num_start; /* disk number start 2 bytes */ + uint16_t internal_fa; /* internal file attributes 2 bytes */ + uint32_t external_fa; /* external file attributes 4 bytes */ + + uint64_t disk_offset; +} unz_file_info; + +/***************************************************************************/ + +typedef int (*unzFileNameComparer)(unzFile file, const char *filename1, const char *filename2); +typedef int (*unzIteratorFunction)(unzFile file); +typedef int (*unzIteratorFunction2)(unzFile file, unz_file_info64 *pfile_info, char *filename, + uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, + uint16_t comment_size); + +/***************************************************************************/ +/* Reading a zip file */ + +ZEXPORT unzFile unzOpen(const char *path); +ZEXPORT unzFile unzOpen64(const void *path); +ZEXPORT unzFile unzOpen2(const char *path, zlib_filefunc_def *pzlib_filefunc_def); +ZEXPORT unzFile unzOpen2_64(const void *path, zlib_filefunc64_def *pzlib_filefunc_def); + unzFile unzOpen_MZ(void *stream); + +ZEXPORT int unzClose(unzFile file); +ZEXPORT int unzClose_MZ(unzFile file); + +ZEXPORT void* unzGetHandle_MZ(unzFile file); +ZEXPORT void* unzGetStream_MZ(zipFile file); + +ZEXPORT int unzGetGlobalInfo(unzFile file, unz_global_info* pglobal_info32); +ZEXPORT int unzGetGlobalInfo64(unzFile file, unz_global_info64 *pglobal_info); +ZEXPORT int unzGetGlobalComment(unzFile file, char *comment, unsigned long comment_size); + +ZEXPORT int unzOpenCurrentFile(unzFile file); +ZEXPORT int unzOpenCurrentFilePassword(unzFile file, const char *password); +ZEXPORT int unzOpenCurrentFile2(unzFile file, int *method, int *level, int raw); +ZEXPORT int unzOpenCurrentFile3(unzFile file, int *method, int *level, int raw, const char *password); +ZEXPORT int unzReadCurrentFile(unzFile file, void *buf, uint32_t len); +ZEXPORT int unzCloseCurrentFile(unzFile file); + +ZEXPORT int unzGetCurrentFileInfo(unzFile file, unz_file_info *pfile_info, char *filename, + unsigned long filename_size, void *extrafield, unsigned long extrafield_size, char *comment, + unsigned long comment_size); +ZEXPORT int unzGetCurrentFileInfo64(unzFile file, unz_file_info64 * pfile_info, char *filename, + unsigned long filename_size, void *extrafield, unsigned long extrafield_size, char *comment, + unsigned long comment_size); + +ZEXPORT int unzGoToFirstFile(unzFile file); +ZEXPORT int unzGoToNextFile(unzFile file); +ZEXPORT int unzLocateFile(unzFile file, const char *filename, unzFileNameComparer filename_compare_func); + +ZEXPORT int unzGetLocalExtrafield(unzFile file, void *buf, unsigned int len); + +/***************************************************************************/ +/* Raw access to zip file */ + +typedef struct unz_file_pos_s { + uint32_t pos_in_zip_directory; /* offset in zip file directory */ + uint32_t num_of_file; /* # of file */ +} unz_file_pos; + +ZEXPORT int unzGetFilePos(unzFile file, unz_file_pos *file_pos); +ZEXPORT int unzGoToFilePos(unzFile file, unz_file_pos *file_pos); + +typedef struct unz64_file_pos_s { + int64_t pos_in_zip_directory; /* offset in zip file directory */ + uint64_t num_of_file; /* # of file */ +} unz64_file_pos; + +ZEXPORT int unzGetFilePos64(unzFile file, unz64_file_pos *file_pos); +ZEXPORT int unzGoToFilePos64(unzFile file, const unz64_file_pos *file_pos); + +ZEXPORT int64_t unzGetOffset64(unzFile file); +ZEXPORT unsigned long + unzGetOffset(unzFile file); +ZEXPORT int unzSetOffset64(unzFile file, int64_t pos); +ZEXPORT int unzSetOffset(unzFile file, unsigned long pos); +ZEXPORT int32_t unztell(unzFile file); +ZEXPORT int32_t unzTell(unzFile file); +ZEXPORT uint64_t unztell64(unzFile file); +ZEXPORT uint64_t unzTell64(unzFile file); +ZEXPORT int unzSeek(unzFile file, int32_t offset, int origin); +ZEXPORT int unzSeek64(unzFile file, int64_t offset, int origin); +ZEXPORT int unzEndOfFile(unzFile file); +ZEXPORT int unzeof(unzFile file); +ZEXPORT void* unzGetStream(unzFile file); + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/mz_crypt.c b/Externals/minizip/mz_crypt.c new file mode 100644 index 000000000000..dd2cd427c86c --- /dev/null +++ b/Externals/minizip/mz_crypt.c @@ -0,0 +1,196 @@ +/* mz_crypt.c -- Crypto/hash functions + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" +#include "mz_os.h" +#include "mz_crypt.h" + +#if defined(HAVE_ZLIB) +# include "zlib.h" +# if defined(ZLIBNG_VERNUM) && !defined(ZLIB_COMPAT) +# include "zlib-ng.h" +# endif +#elif defined(HAVE_LZMA) +# include "lzma.h" +#endif + +/***************************************************************************/ +/* Define z_crc_t in zlib 1.2.5 and less or if using zlib-ng */ + +#if defined(HAVE_ZLIB) && defined(ZLIBNG_VERNUM) +# if defined(ZLIB_COMPAT) +# define ZLIB_PREFIX(x) x +# else +# define ZLIB_PREFIX(x) zng_ ## x +# endif + typedef uint32_t z_crc_t; +#elif defined(HAVE_ZLIB) +# define ZLIB_PREFIX(x) x +# if (ZLIB_VERNUM < 0x1270) + typedef unsigned long z_crc_t; +# endif +#endif + +/***************************************************************************/ + +#if defined(MZ_ZIP_NO_CRYPTO) +int32_t mz_crypt_rand(uint8_t *buf, int32_t size) { + return mz_os_rand(buf, size); +} +#endif + +uint32_t mz_crypt_crc32_update(uint32_t value, const uint8_t *buf, int32_t size) { +#if defined(HAVE_ZLIB) + return (uint32_t)ZLIB_PREFIX(crc32)((z_crc_t)value, buf, (uInt)size); +#elif defined(HAVE_LZMA) + return (uint32_t)lzma_crc32(buf, (size_t)size, (uint32_t)value); +#else + static uint32_t crc32_table[256] = { + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, + 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, + 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, + 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, + 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, + 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, + 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, + 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, + 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, + 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, + 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, + 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, + 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, + 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, + 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, + 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, + 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, + 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, + 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, + 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, + 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, + 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, + 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, + 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, + 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, + 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, + 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, + 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, + 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, + 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, + 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, + 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, + 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, + 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, + 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d + }; + value = ~value; + + while (size > 0) { + value = (value >> 8) ^ crc32_table[(value ^ *buf) & 0xFF]; + + buf += 1; + size -= 1; + } + + return ~value; +#endif +} + +#if defined(HAVE_WZAES) +int32_t mz_crypt_pbkdf2(uint8_t *password, int32_t password_length, uint8_t *salt, + int32_t salt_length, int32_t iteration_count, uint8_t *key, int32_t key_length) { + void *hmac1 = NULL; + void *hmac2 = NULL; + void *hmac3 = NULL; + int32_t err = MZ_OK; + uint16_t i = 0; + uint16_t j = 0; + uint16_t k = 0; + uint16_t block_count = 0; + uint8_t uu[MZ_HASH_SHA1_SIZE]; + uint8_t ux[MZ_HASH_SHA1_SIZE]; + + if (password == NULL || salt == NULL || key == NULL) + return MZ_PARAM_ERROR; + + memset(key, 0, key_length); + + mz_crypt_hmac_create(&hmac1); + mz_crypt_hmac_create(&hmac2); + mz_crypt_hmac_create(&hmac3); + + mz_crypt_hmac_set_algorithm(hmac1, MZ_HASH_SHA1); + mz_crypt_hmac_set_algorithm(hmac2, MZ_HASH_SHA1); + mz_crypt_hmac_set_algorithm(hmac3, MZ_HASH_SHA1); + + err = mz_crypt_hmac_init(hmac1, password, password_length); + if (err == MZ_OK) + err = mz_crypt_hmac_init(hmac2, password, password_length); + if (err == MZ_OK) + err = mz_crypt_hmac_update(hmac2, salt, salt_length); + + block_count = 1 + ((uint16_t)key_length - 1) / MZ_HASH_SHA1_SIZE; + + for (i = 0; (err == MZ_OK) && (i < block_count); i += 1) { + memset(ux, 0, sizeof(ux)); + + err = mz_crypt_hmac_copy(hmac2, hmac3); + if (err != MZ_OK) + break; + + uu[0] = (uint8_t)((i + 1) >> 24); + uu[1] = (uint8_t)((i + 1) >> 16); + uu[2] = (uint8_t)((i + 1) >> 8); + uu[3] = (uint8_t)(i + 1); + + for (j = 0, k = 4; j < iteration_count; j += 1) { + err = mz_crypt_hmac_update(hmac3, uu, k); + if (err == MZ_OK) + err = mz_crypt_hmac_end(hmac3, uu, sizeof(uu)); + if (err != MZ_OK) + break; + + for(k = 0; k < MZ_HASH_SHA1_SIZE; k += 1) + ux[k] ^= uu[k]; + + err = mz_crypt_hmac_copy(hmac1, hmac3); + if (err != MZ_OK) + break; + } + + if (err != MZ_OK) + break; + + j = 0; + k = i * MZ_HASH_SHA1_SIZE; + + while (j < MZ_HASH_SHA1_SIZE && k < key_length) + key[k++] = ux[j++]; + } + + /* hmac3 uses the same provider as hmac2, so it must be deleted + before the context is destroyed. */ + mz_crypt_hmac_delete(&hmac3); + mz_crypt_hmac_delete(&hmac1); + mz_crypt_hmac_delete(&hmac2); + + return err; +} +#endif + +/***************************************************************************/ diff --git a/Externals/minizip/mz_crypt.h b/Externals/minizip/mz_crypt.h new file mode 100644 index 000000000000..59a193c02b79 --- /dev/null +++ b/Externals/minizip/mz_crypt.h @@ -0,0 +1,65 @@ +/* mz_crypt.h -- Crypto/hash functions + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_CRYPT_H +#define MZ_CRYPT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +uint32_t mz_crypt_crc32_update(uint32_t value, const uint8_t *buf, int32_t size); + +int32_t mz_crypt_pbkdf2(uint8_t *password, int32_t password_length, uint8_t *salt, + int32_t salt_length, int32_t iteration_count, uint8_t *key, int32_t key_length); + +/***************************************************************************/ + +int32_t mz_crypt_rand(uint8_t *buf, int32_t size); + +void mz_crypt_sha_reset(void *handle); +int32_t mz_crypt_sha_begin(void *handle); +int32_t mz_crypt_sha_update(void *handle, const void *buf, int32_t size); +int32_t mz_crypt_sha_end(void *handle, uint8_t *digest, int32_t digest_size); +void mz_crypt_sha_set_algorithm(void *handle, uint16_t algorithm); +void* mz_crypt_sha_create(void **handle); +void mz_crypt_sha_delete(void **handle); + +void mz_crypt_aes_reset(void *handle); +int32_t mz_crypt_aes_encrypt(void *handle, uint8_t *buf, int32_t size); +int32_t mz_crypt_aes_decrypt(void *handle, uint8_t *buf, int32_t size); +int32_t mz_crypt_aes_set_encrypt_key(void *handle, const void *key, int32_t key_length); +int32_t mz_crypt_aes_set_decrypt_key(void *handle, const void *key, int32_t key_length); +void mz_crypt_aes_set_mode(void *handle, int32_t mode); +void* mz_crypt_aes_create(void **handle); +void mz_crypt_aes_delete(void **handle); + +void mz_crypt_hmac_reset(void *handle); +int32_t mz_crypt_hmac_init(void *handle, const void *key, int32_t key_length); +int32_t mz_crypt_hmac_update(void *handle, const void *buf, int32_t size); +int32_t mz_crypt_hmac_end(void *handle, uint8_t *digest, int32_t digest_size); +int32_t mz_crypt_hmac_copy(void *src_handle, void *target_handle); +void mz_crypt_hmac_set_algorithm(void *handle, uint16_t algorithm); +void* mz_crypt_hmac_create(void **handle); +void mz_crypt_hmac_delete(void **handle); + +int32_t mz_crypt_sign(uint8_t *message, int32_t message_size, uint8_t *cert_data, int32_t cert_data_size, + const char *cert_pwd, uint8_t **signature, int32_t *signature_size); +int32_t mz_crypt_sign_verify(uint8_t *message, int32_t message_size, uint8_t *signature, int32_t signature_size); + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/mz_crypt_apple.c b/Externals/minizip/mz_crypt_apple.c new file mode 100644 index 000000000000..4519753fa4b8 --- /dev/null +++ b/Externals/minizip/mz_crypt_apple.c @@ -0,0 +1,487 @@ +/* mz_crypt_apple.c -- Crypto/hash functions for Apple + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" + +#include +#include +#include +#include +#include +#include + +/***************************************************************************/ + +int32_t mz_crypt_rand(uint8_t *buf, int32_t size) { + if (SecRandomCopyBytes(kSecRandomDefault, size, buf) != errSecSuccess) + return 0; + return size; +} + +/***************************************************************************/ + +typedef struct mz_crypt_sha_s { + CC_SHA1_CTX ctx1; + CC_SHA256_CTX ctx256; + int32_t error; + int32_t initialized; + uint16_t algorithm; +} mz_crypt_sha; + +/***************************************************************************/ + +void mz_crypt_sha_reset(void *handle) { + mz_crypt_sha *sha = (mz_crypt_sha *)handle; + + sha->error = 0; + sha->initialized = 0; +} + +int32_t mz_crypt_sha_begin(void *handle) { + mz_crypt_sha *sha = (mz_crypt_sha *)handle; + + if (sha == NULL) + return MZ_PARAM_ERROR; + + mz_crypt_sha_reset(handle); + + if (sha->algorithm == MZ_HASH_SHA1) + sha->error = CC_SHA1_Init(&sha->ctx1); + else if (sha->algorithm == MZ_HASH_SHA256) + sha->error = CC_SHA256_Init(&sha->ctx256); + else + return MZ_PARAM_ERROR; + + if (!sha->error) + return MZ_HASH_ERROR; + + sha->initialized = 1; + return MZ_OK; +} + +int32_t mz_crypt_sha_update(void *handle, const void *buf, int32_t size) { + mz_crypt_sha *sha = (mz_crypt_sha *)handle; + + if (sha == NULL || buf == NULL || !sha->initialized) + return MZ_PARAM_ERROR; + + if (sha->algorithm == MZ_HASH_SHA1) + sha->error = CC_SHA1_Update(&sha->ctx1, buf, size); + else + sha->error = CC_SHA256_Update(&sha->ctx256, buf, size); + + if (!sha->error) + return MZ_HASH_ERROR; + + return size; +} + +int32_t mz_crypt_sha_end(void *handle, uint8_t *digest, int32_t digest_size) { + mz_crypt_sha *sha = (mz_crypt_sha *)handle; + + if (sha == NULL || digest == NULL || !sha->initialized) + return MZ_PARAM_ERROR; + + if (sha->algorithm == MZ_HASH_SHA1) { + if (digest_size < MZ_HASH_SHA1_SIZE) + return MZ_BUF_ERROR; + sha->error = CC_SHA1_Final(digest, &sha->ctx1); + } else { + if (digest_size < MZ_HASH_SHA256_SIZE) + return MZ_BUF_ERROR; + sha->error = CC_SHA256_Final(digest, &sha->ctx256); + } + + if (!sha->error) + return MZ_HASH_ERROR; + + return MZ_OK; +} + +void mz_crypt_sha_set_algorithm(void *handle, uint16_t algorithm) { + mz_crypt_sha *sha = (mz_crypt_sha *)handle; + sha->algorithm = algorithm; +} + +void *mz_crypt_sha_create(void **handle) { + mz_crypt_sha *sha = NULL; + + sha = (mz_crypt_sha *)MZ_ALLOC(sizeof(mz_crypt_sha)); + if (sha != NULL) { + memset(sha, 0, sizeof(mz_crypt_sha)); + sha->algorithm = MZ_HASH_SHA256; + } + if (handle != NULL) + *handle = sha; + + return sha; +} + +void mz_crypt_sha_delete(void **handle) { + mz_crypt_sha *sha = NULL; + if (handle == NULL) + return; + sha = (mz_crypt_sha *)*handle; + if (sha != NULL) { + mz_crypt_sha_reset(*handle); + MZ_FREE(sha); + } + *handle = NULL; +} + +/***************************************************************************/ + +typedef struct mz_crypt_aes_s { + CCCryptorRef crypt; + int32_t mode; + int32_t error; +} mz_crypt_aes; + +/***************************************************************************/ + +void mz_crypt_aes_reset(void *handle) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + + if (aes->crypt != NULL) + CCCryptorRelease(aes->crypt); + aes->crypt = NULL; +} + +int32_t mz_crypt_aes_encrypt(void *handle, uint8_t *buf, int32_t size) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + size_t data_moved = 0; + + if (aes == NULL || buf == NULL) + return MZ_PARAM_ERROR; + if (size != MZ_AES_BLOCK_SIZE) + return MZ_PARAM_ERROR; + + aes->error = CCCryptorUpdate(aes->crypt, buf, size, buf, size, &data_moved); + + if (aes->error != kCCSuccess) + return MZ_HASH_ERROR; + + return size; +} + +int32_t mz_crypt_aes_decrypt(void *handle, uint8_t *buf, int32_t size) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + size_t data_moved = 0; + + if (aes == NULL || buf == NULL) + return MZ_PARAM_ERROR; + if (size != MZ_AES_BLOCK_SIZE) + return MZ_PARAM_ERROR; + + aes->error = CCCryptorUpdate(aes->crypt, buf, size, buf, size, &data_moved); + + if (aes->error != kCCSuccess) + return MZ_HASH_ERROR; + + return size; +} + +int32_t mz_crypt_aes_set_encrypt_key(void *handle, const void *key, int32_t key_length) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + + + if (aes == NULL || key == NULL || key_length == 0) + return MZ_PARAM_ERROR; + + mz_crypt_aes_reset(handle); + + aes->error = CCCryptorCreate(kCCEncrypt, kCCAlgorithmAES, kCCOptionECBMode, + key, key_length, NULL, &aes->crypt); + + if (aes->error != kCCSuccess) + return MZ_HASH_ERROR; + + return MZ_OK; +} + +int32_t mz_crypt_aes_set_decrypt_key(void *handle, const void *key, int32_t key_length) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + + + if (aes == NULL || key == NULL || key_length == 0) + return MZ_PARAM_ERROR; + + mz_crypt_aes_reset(handle); + + aes->error = CCCryptorCreate(kCCDecrypt, kCCAlgorithmAES, kCCOptionECBMode, + key, key_length, NULL, &aes->crypt); + + if (aes->error != kCCSuccess) + return MZ_HASH_ERROR; + + return MZ_OK; +} + +void mz_crypt_aes_set_mode(void *handle, int32_t mode) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + aes->mode = mode; +} + +void *mz_crypt_aes_create(void **handle) { + mz_crypt_aes *aes = NULL; + + aes = (mz_crypt_aes *)MZ_ALLOC(sizeof(mz_crypt_aes)); + if (aes != NULL) + memset(aes, 0, sizeof(mz_crypt_aes)); + if (handle != NULL) + *handle = aes; + + return aes; +} + +void mz_crypt_aes_delete(void **handle) { + mz_crypt_aes *aes = NULL; + if (handle == NULL) + return; + aes = (mz_crypt_aes *)*handle; + if (aes != NULL) { + mz_crypt_aes_reset(*handle); + MZ_FREE(aes); + } + *handle = NULL; +} + +/***************************************************************************/ + +typedef struct mz_crypt_hmac_s { + CCHmacContext ctx; + int32_t initialized; + int32_t error; + uint16_t algorithm; +} mz_crypt_hmac; + +/***************************************************************************/ + +static void mz_crypt_hmac_free(void *handle) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + memset(&hmac->ctx, 0, sizeof(hmac->ctx)); +} + +void mz_crypt_hmac_reset(void *handle) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + mz_crypt_hmac_free(handle); + hmac->error = 0; +} + +int32_t mz_crypt_hmac_init(void *handle, const void *key, int32_t key_length) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + CCHmacAlgorithm algorithm = 0; + + if (hmac == NULL || key == NULL) + return MZ_PARAM_ERROR; + + mz_crypt_hmac_reset(handle); + + if (hmac->algorithm == MZ_HASH_SHA1) + algorithm = kCCHmacAlgSHA1; + else if (hmac->algorithm == MZ_HASH_SHA256) + algorithm = kCCHmacAlgSHA256; + else + return MZ_PARAM_ERROR; + + CCHmacInit(&hmac->ctx, algorithm, key, key_length); + return MZ_OK; +} + +int32_t mz_crypt_hmac_update(void *handle, const void *buf, int32_t size) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + + if (hmac == NULL || buf == NULL) + return MZ_PARAM_ERROR; + + CCHmacUpdate(&hmac->ctx, buf, size); + return MZ_OK; +} + +int32_t mz_crypt_hmac_end(void *handle, uint8_t *digest, int32_t digest_size) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + + if (hmac == NULL || digest == NULL) + return MZ_PARAM_ERROR; + + if (hmac->algorithm == MZ_HASH_SHA1) { + if (digest_size < MZ_HASH_SHA1_SIZE) + return MZ_BUF_ERROR; + CCHmacFinal(&hmac->ctx, digest); + } else { + if (digest_size < MZ_HASH_SHA256_SIZE) + return MZ_BUF_ERROR; + CCHmacFinal(&hmac->ctx, digest); + } + + return MZ_OK; +} + +void mz_crypt_hmac_set_algorithm(void *handle, uint16_t algorithm) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + hmac->algorithm = algorithm; +} + +int32_t mz_crypt_hmac_copy(void *src_handle, void *target_handle) { + mz_crypt_hmac *source = (mz_crypt_hmac *)src_handle; + mz_crypt_hmac *target = (mz_crypt_hmac *)target_handle; + + if (source == NULL || target == NULL) + return MZ_PARAM_ERROR; + + memcpy(&target->ctx, &source->ctx, sizeof(CCHmacContext)); + return MZ_OK; +} + +void *mz_crypt_hmac_create(void **handle) { + mz_crypt_hmac *hmac = NULL; + + hmac = (mz_crypt_hmac *)MZ_ALLOC(sizeof(mz_crypt_hmac)); + if (hmac != NULL) { + memset(hmac, 0, sizeof(mz_crypt_hmac)); + hmac->algorithm = MZ_HASH_SHA256; + } + if (handle != NULL) + *handle = hmac; + + return hmac; +} + +void mz_crypt_hmac_delete(void **handle) { + mz_crypt_hmac *hmac = NULL; + if (handle == NULL) + return; + hmac = (mz_crypt_hmac *)*handle; + if (hmac != NULL) { + mz_crypt_hmac_free(*handle); + MZ_FREE(hmac); + } + *handle = NULL; +} + +/***************************************************************************/ + +#if defined(MZ_ZIP_SIGNING) +int32_t mz_crypt_sign(uint8_t *message, int32_t message_size, uint8_t *cert_data, int32_t cert_data_size, + const char *cert_pwd, uint8_t **signature, int32_t *signature_size) { + CFStringRef password_ref = NULL; + CFDictionaryRef options_dict = NULL; + CFDictionaryRef identity_trust = NULL; + CFDataRef signature_out = NULL; + CFDataRef pkcs12_data = NULL; + CFArrayRef items = 0; + SecIdentityRef identity = NULL; + SecTrustRef trust = NULL; + OSStatus status = noErr; + const void *options_key[2] = { kSecImportExportPassphrase, kSecReturnRef }; + const void *options_values[2] = { 0, kCFBooleanTrue }; + int32_t err = MZ_SIGN_ERROR; + + + if (message == NULL || cert_data == NULL || signature == NULL || signature_size == NULL) + return MZ_PARAM_ERROR; + + *signature = NULL; + *signature_size = 0; + + password_ref = CFStringCreateWithCString(0, cert_pwd, kCFStringEncodingUTF8); + options_values[0] = password_ref; + + options_dict = CFDictionaryCreate(0, options_key, options_values, 2, 0, 0); + if (options_dict) + pkcs12_data = CFDataCreate(0, cert_data, cert_data_size); + if (pkcs12_data) + status = SecPKCS12Import(pkcs12_data, options_dict, &items); + if (status == noErr) + identity_trust = CFArrayGetValueAtIndex(items, 0); + if (identity_trust) + identity = (SecIdentityRef)CFDictionaryGetValue(identity_trust, kSecImportItemIdentity); + if (identity) + trust = (SecTrustRef)CFDictionaryGetValue(identity_trust, kSecImportItemTrust); + if (trust) { + status = CMSEncodeContent(identity, NULL, NULL, FALSE, 0, message, message_size, &signature_out); + + if (status == errSecSuccess) { + *signature_size = CFDataGetLength(signature_out); + *signature = (uint8_t *)MZ_ALLOC(*signature_size); + + memcpy(*signature, CFDataGetBytePtr(signature_out), *signature_size); + + err = MZ_OK; + } + } + + if (signature_out) + CFRelease(signature_out); + if (items) + CFRelease(items); + if (pkcs12_data) + CFRelease(pkcs12_data); + if (options_dict) + CFRelease(options_dict); + if (password_ref) + CFRelease(password_ref); + + return err; +} + +int32_t mz_crypt_sign_verify(uint8_t *message, int32_t message_size, uint8_t *signature, int32_t signature_size) { + CMSDecoderRef decoder = NULL; + CMSSignerStatus signer_status = 0; + CFDataRef message_out = NULL; + SecPolicyRef trust_policy = NULL; + OSStatus status = noErr; + OSStatus verify_status = noErr; + size_t signer_count = 0; + size_t i = 0; + int32_t err = MZ_SIGN_ERROR; + + if (message == NULL || signature == NULL) + return MZ_PARAM_ERROR; + + status = CMSDecoderCreate(&decoder); + if (status == errSecSuccess) + status = CMSDecoderUpdateMessage(decoder, signature, signature_size); + if (status == errSecSuccess) + status = CMSDecoderFinalizeMessage(decoder); + if (status == errSecSuccess) + trust_policy = SecPolicyCreateBasicX509(); + + if (status == errSecSuccess && trust_policy) { + CMSDecoderGetNumSigners(decoder, &signer_count); + if (signer_count > 0) + err = MZ_OK; + for (i = 0; i < signer_count; i += 1) { + status = CMSDecoderCopySignerStatus(decoder, i, trust_policy, TRUE, &signer_status, NULL, &verify_status); + if (status != errSecSuccess || verify_status != 0 || signer_status != kCMSSignerValid) { + err = MZ_SIGN_ERROR; + break; + } + } + } + + if (err == MZ_OK) { + status = CMSDecoderCopyContent(decoder, &message_out); + if ((status != errSecSuccess) || + (CFDataGetLength(message_out) != message_size) || + (memcmp(message, CFDataGetBytePtr(message_out), message_size) != 0)) + err = MZ_SIGN_ERROR; + } + + if (trust_policy) + CFRelease(trust_policy); + if (decoder) + CFRelease(decoder); + + return err; +} + +#endif diff --git a/Externals/minizip/mz_crypt_openssl.c b/Externals/minizip/mz_crypt_openssl.c new file mode 100644 index 000000000000..2a6a4ac8750f --- /dev/null +++ b/Externals/minizip/mz_crypt_openssl.c @@ -0,0 +1,638 @@ +/* mz_crypt_openssl.c -- Crypto/hash functions for OpenSSL + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(MZ_ZIP_SIGNING) +/* Note: https://www.imperialviolet.org/2015/10/17/boringssl.html says that + BoringSSL does not support CMS. "#include " will fail. See + https://bugs.chromium.org/p/boringssl/issues/detail?id=421 +*/ +#include +#include +#include +#endif + +/***************************************************************************/ + +static void mz_crypt_init(void) { + static int32_t openssl_initialized = 0; + if (openssl_initialized == 0) { + OpenSSL_add_all_algorithms(); + + ERR_load_BIO_strings(); + ERR_load_crypto_strings(); + + ENGINE_load_builtin_engines(); + ENGINE_register_all_complete(); + + openssl_initialized = 1; + } +} + +int32_t mz_crypt_rand(uint8_t *buf, int32_t size) { + int32_t result = 0; + + result = RAND_bytes(buf, size); + + if (!result) + return MZ_CRYPT_ERROR; + + return size; +} + +/***************************************************************************/ + +typedef struct mz_crypt_sha_s { + SHA256_CTX ctx256; + SHA_CTX ctx1; + int32_t initialized; + int32_t error; + uint16_t algorithm; +} mz_crypt_sha; + +/***************************************************************************/ + +void mz_crypt_sha_reset(void *handle) { + mz_crypt_sha *sha = (mz_crypt_sha *)handle; + + sha->error = 0; + sha->initialized = 0; + + mz_crypt_init(); +} + +int32_t mz_crypt_sha_begin(void *handle) { + mz_crypt_sha *sha = (mz_crypt_sha *)handle; + int32_t result = 0; + + + if (sha == NULL) + return MZ_PARAM_ERROR; + + mz_crypt_sha_reset(handle); + + if (sha->algorithm == MZ_HASH_SHA1) + result = SHA1_Init(&sha->ctx1); + else + result = SHA256_Init(&sha->ctx256); + + if (!result) { + sha->error = ERR_get_error(); + return MZ_HASH_ERROR; + } + + sha->initialized = 1; + return MZ_OK; +} + +int32_t mz_crypt_sha_update(void *handle, const void *buf, int32_t size) { + mz_crypt_sha *sha = (mz_crypt_sha *)handle; + int32_t result = 0; + + if (sha == NULL || buf == NULL || !sha->initialized) + return MZ_PARAM_ERROR; + + if (sha->algorithm == MZ_HASH_SHA1) + result = SHA1_Update(&sha->ctx1, buf, size); + else + result = SHA256_Update(&sha->ctx256, buf, size); + + if (!result) { + sha->error = ERR_get_error(); + return MZ_HASH_ERROR; + } + + return size; +} + +int32_t mz_crypt_sha_end(void *handle, uint8_t *digest, int32_t digest_size) { + mz_crypt_sha *sha = (mz_crypt_sha *)handle; + int32_t result = 0; + + if (sha == NULL || digest == NULL || !sha->initialized) + return MZ_PARAM_ERROR; + + if (sha->algorithm == MZ_HASH_SHA1) { + if (digest_size < MZ_HASH_SHA1_SIZE) + return MZ_BUF_ERROR; + result = SHA1_Final(digest, &sha->ctx1); + } else { + if (digest_size < MZ_HASH_SHA256_SIZE) + return MZ_BUF_ERROR; + result = SHA256_Final(digest, &sha->ctx256); + } + + if (!result) { + sha->error = ERR_get_error(); + return MZ_HASH_ERROR; + } + + return MZ_OK; +} + +void mz_crypt_sha_set_algorithm(void *handle, uint16_t algorithm) { + mz_crypt_sha *sha = (mz_crypt_sha *)handle; + sha->algorithm = algorithm; +} + +void *mz_crypt_sha_create(void **handle) { + mz_crypt_sha *sha = NULL; + + sha = (mz_crypt_sha *)MZ_ALLOC(sizeof(mz_crypt_sha)); + if (sha != NULL) { + memset(sha, 0, sizeof(mz_crypt_sha)); + sha->algorithm = MZ_HASH_SHA256; + } + if (handle != NULL) + *handle = sha; + + return sha; +} + +void mz_crypt_sha_delete(void **handle) { + mz_crypt_sha *sha = NULL; + if (handle == NULL) + return; + sha = (mz_crypt_sha *)*handle; + if (sha != NULL) { + mz_crypt_sha_reset(*handle); + MZ_FREE(sha); + } + *handle = NULL; +} + +/***************************************************************************/ + +typedef struct mz_crypt_aes_s { + AES_KEY key; + int32_t mode; + int32_t error; + uint8_t *key_copy; + int32_t key_length; +} mz_crypt_aes; + +/***************************************************************************/ + +void mz_crypt_aes_reset(void *handle) { + MZ_UNUSED(handle); + + mz_crypt_init(); +} + +int32_t mz_crypt_aes_encrypt(void *handle, uint8_t *buf, int32_t size) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + + if (aes == NULL || buf == NULL) + return MZ_PARAM_ERROR; + if (size != MZ_AES_BLOCK_SIZE) + return MZ_PARAM_ERROR; + + AES_encrypt(buf, buf, &aes->key); + /* Equivalent to AES_ecb_encrypt with AES_ENCRYPT */ + return size; +} + +int32_t mz_crypt_aes_decrypt(void *handle, uint8_t *buf, int32_t size) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + if (aes == NULL || buf == NULL) + return MZ_PARAM_ERROR; + if (size != MZ_AES_BLOCK_SIZE) + return MZ_PARAM_ERROR; + + AES_decrypt(buf, buf, &aes->key); + /* Equivalent to AES_ecb_encrypt with AES_DECRYPT */ + return size; +} + +int32_t mz_crypt_aes_set_encrypt_key(void *handle, const void *key, int32_t key_length) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + int32_t result = 0; + int32_t key_bits = 0; + + + if (aes == NULL || key == NULL) + return MZ_PARAM_ERROR; + + mz_crypt_aes_reset(handle); + + key_bits = key_length * 8; + result = AES_set_encrypt_key(key, key_bits, &aes->key); + if (result) { + aes->error = ERR_get_error(); + return MZ_HASH_ERROR; + } + + return MZ_OK; +} + +int32_t mz_crypt_aes_set_decrypt_key(void *handle, const void *key, int32_t key_length) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + int32_t result = 0; + int32_t key_bits = 0; + + + if (aes == NULL || key == NULL) + return MZ_PARAM_ERROR; + + mz_crypt_aes_reset(handle); + + key_bits = key_length * 8; + result = AES_set_decrypt_key(key, key_bits, &aes->key); + if (result) { + aes->error = ERR_get_error(); + return MZ_HASH_ERROR; + } + + return MZ_OK; +} + +void mz_crypt_aes_set_mode(void *handle, int32_t mode) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + aes->mode = mode; +} + +void *mz_crypt_aes_create(void **handle) { + mz_crypt_aes *aes = NULL; + + aes = (mz_crypt_aes *)MZ_ALLOC(sizeof(mz_crypt_aes)); + if (aes != NULL) + memset(aes, 0, sizeof(mz_crypt_aes)); + if (handle != NULL) + *handle = aes; + + return aes; +} + +void mz_crypt_aes_delete(void **handle) { + mz_crypt_aes *aes = NULL; + if (handle == NULL) + return; + aes = (mz_crypt_aes *)*handle; + if (aes != NULL) + MZ_FREE(aes); + *handle = NULL; +} + +/***************************************************************************/ + +typedef struct mz_crypt_hmac_s { + HMAC_CTX *ctx; + int32_t initialized; + int32_t error; + uint16_t algorithm; +} mz_crypt_hmac; + +/***************************************************************************/ + +#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || (defined(LIBRESSL_VERSION_NUMBER) && (LIBRESSL_VERSION_NUMBER < 0x2070000fL)) +static HMAC_CTX *HMAC_CTX_new(void) { + HMAC_CTX *ctx = OPENSSL_malloc(sizeof(HMAC_CTX)); + if (ctx != NULL) + HMAC_CTX_init(ctx); + return ctx; +} + +static void HMAC_CTX_free(HMAC_CTX *ctx) { + if (ctx != NULL) { + HMAC_CTX_cleanup(ctx); + OPENSSL_free(ctx); + } +} +#endif + +/***************************************************************************/ + +void mz_crypt_hmac_reset(void *handle) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + + HMAC_CTX_free(hmac->ctx); + + hmac->ctx = NULL; + hmac->error = 0; + + mz_crypt_init(); +} + +int32_t mz_crypt_hmac_init(void *handle, const void *key, int32_t key_length) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + int32_t result = 0; + const EVP_MD *evp_md = NULL; + + if (hmac == NULL || key == NULL) + return MZ_PARAM_ERROR; + + mz_crypt_hmac_reset(handle); + + hmac->ctx = HMAC_CTX_new(); + + if (hmac->algorithm == MZ_HASH_SHA1) + evp_md = EVP_sha1(); + else + evp_md = EVP_sha256(); + + result = HMAC_Init_ex(hmac->ctx, key, key_length, evp_md, NULL); + if (!result) { + hmac->error = ERR_get_error(); + return MZ_HASH_ERROR; + } + + return MZ_OK; +} + +int32_t mz_crypt_hmac_update(void *handle, const void *buf, int32_t size) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + int32_t result = 0; + + if (hmac == NULL || buf == NULL) + return MZ_PARAM_ERROR; + + result = HMAC_Update(hmac->ctx, buf, size); + if (!result) { + hmac->error = ERR_get_error(); + return MZ_HASH_ERROR; + } + + return MZ_OK; +} + +int32_t mz_crypt_hmac_end(void *handle, uint8_t *digest, int32_t digest_size) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + int32_t result = 0; + + if (hmac == NULL || digest == NULL) + return MZ_PARAM_ERROR; + + if (hmac->algorithm == MZ_HASH_SHA1) { + if (digest_size < MZ_HASH_SHA1_SIZE) + return MZ_BUF_ERROR; + + result = HMAC_Final(hmac->ctx, digest, (uint32_t *)&digest_size); + } else { + if (digest_size < MZ_HASH_SHA256_SIZE) + return MZ_BUF_ERROR; + result = HMAC_Final(hmac->ctx, digest, (uint32_t *)&digest_size); + } + + if (!result) { + hmac->error = ERR_get_error(); + return MZ_HASH_ERROR; + } + + return MZ_OK; +} + +void mz_crypt_hmac_set_algorithm(void *handle, uint16_t algorithm) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + hmac->algorithm = algorithm; +} + +int32_t mz_crypt_hmac_copy(void *src_handle, void *target_handle) { + mz_crypt_hmac *source = (mz_crypt_hmac *)src_handle; + mz_crypt_hmac *target = (mz_crypt_hmac *)target_handle; + int32_t result = 0; + + if (source == NULL || target == NULL) + return MZ_PARAM_ERROR; + + mz_crypt_hmac_reset(target_handle); + + if (target->ctx == NULL) + target->ctx = HMAC_CTX_new(); + + result = HMAC_CTX_copy(target->ctx, source->ctx); + if (!result) { + target->error = ERR_get_error(); + return MZ_HASH_ERROR; + } + + return MZ_OK; +} + +void *mz_crypt_hmac_create(void **handle) { + mz_crypt_hmac *hmac = NULL; + + hmac = (mz_crypt_hmac *)MZ_ALLOC(sizeof(mz_crypt_hmac)); + if (hmac != NULL) { + memset(hmac, 0, sizeof(mz_crypt_hmac)); + hmac->algorithm = MZ_HASH_SHA256; + } + if (handle != NULL) + *handle = hmac; + + return hmac; +} + +void mz_crypt_hmac_delete(void **handle) { + mz_crypt_hmac *hmac = NULL; + if (handle == NULL) + return; + hmac = (mz_crypt_hmac *)*handle; + if (hmac != NULL) { + mz_crypt_hmac_reset(*handle); + MZ_FREE(hmac); + } + *handle = NULL; +} + +/***************************************************************************/ + +#if defined(MZ_ZIP_SIGNING) +int32_t mz_crypt_sign(uint8_t *message, int32_t message_size, uint8_t *cert_data, int32_t cert_data_size, + const char *cert_pwd, uint8_t **signature, int32_t *signature_size) { + PKCS12 *p12 = NULL; + EVP_PKEY *evp_pkey = NULL; + BUF_MEM *buf_mem = NULL; + BIO *cert_bio = NULL; + BIO *message_bio = NULL; + BIO *signature_bio = NULL; + CMS_ContentInfo *cms = NULL; + CMS_SignerInfo *signer_info = NULL; + STACK_OF(X509) *ca_stack = NULL; + X509 *cert = NULL; + int32_t result = 0; + int32_t err = MZ_OK; + + + if (message == NULL || cert_data == NULL || signature == NULL || signature_size == NULL) + return MZ_PARAM_ERROR; + + mz_crypt_init(); + + *signature = NULL; + *signature_size = 0; + + cert_bio = BIO_new_mem_buf(cert_data, cert_data_size); + + if (d2i_PKCS12_bio(cert_bio, &p12) == NULL) + err = MZ_SIGN_ERROR; + if (err == MZ_OK) + result = PKCS12_parse(p12, cert_pwd, &evp_pkey, &cert, &ca_stack); + if (result) { + cms = CMS_sign(NULL, NULL, ca_stack, NULL, CMS_BINARY | CMS_PARTIAL); + if (cms) + signer_info = CMS_add1_signer(cms, cert, evp_pkey, EVP_sha256(), 0); + if (signer_info == NULL) { + err = MZ_SIGN_ERROR; + } else { + message_bio = BIO_new_mem_buf(message, message_size); + signature_bio = BIO_new(BIO_s_mem()); + + result = CMS_final(cms, message_bio, NULL, CMS_BINARY); + if (result) + result = i2d_CMS_bio(signature_bio, cms); + if (result) { + BIO_flush(signature_bio); + BIO_get_mem_ptr(signature_bio, &buf_mem); + + *signature_size = buf_mem->length; + *signature = MZ_ALLOC(buf_mem->length); + + memcpy(*signature, buf_mem->data, buf_mem->length); + } +#if 0 + BIO *yy = BIO_new_file("xyz", "wb"); + BIO_write(yy, *signature, *signature_size); + BIO_flush(yy); + BIO_free(yy); +#endif + } + } + + if (!result) + err = MZ_SIGN_ERROR; + + if (cms) + CMS_ContentInfo_free(cms); + if (signature_bio) + BIO_free(signature_bio); + if (cert_bio) + BIO_free(cert_bio); + if (message_bio) + BIO_free(message_bio); + if (p12) + PKCS12_free(p12); + + if (err != MZ_OK && *signature != NULL) { + MZ_FREE(*signature); + *signature = NULL; + *signature_size = 0; + } + + return err; +} + +int32_t mz_crypt_sign_verify(uint8_t *message, int32_t message_size, uint8_t *signature, int32_t signature_size) { + CMS_ContentInfo *cms = NULL; + STACK_OF(X509) *signers = NULL; + STACK_OF(X509) *intercerts = NULL; + X509_STORE *cert_store = NULL; + X509_LOOKUP *lookup = NULL; + X509_STORE_CTX *store_ctx = NULL; + BIO *message_bio = NULL; + BIO *signature_bio = NULL; + BUF_MEM *buf_mem = NULL; + int32_t signer_count = 0; + int32_t result = 0; + int32_t i = 0; + int32_t err = MZ_SIGN_ERROR; + + + if (message == NULL || message_size == 0 || signature == NULL || signature_size == 0) + return MZ_PARAM_ERROR; + + mz_crypt_init(); + + cert_store = X509_STORE_new(); + + X509_STORE_load_locations(cert_store, "cacert.pem", NULL); + X509_STORE_set_default_paths(cert_store); + +#if 0 + BIO *yy = BIO_new_file("xyz", "wb"); + BIO_write(yy, signature, signature_size); + BIO_flush(yy); + BIO_free(yy); +#endif + + lookup = X509_STORE_add_lookup(cert_store, X509_LOOKUP_file()); + if (lookup != NULL) + X509_LOOKUP_load_file(lookup, "cacert.pem", X509_FILETYPE_PEM); + lookup = X509_STORE_add_lookup(cert_store, X509_LOOKUP_hash_dir()); + if (lookup != NULL) + X509_LOOKUP_add_dir(lookup, NULL, X509_FILETYPE_DEFAULT); + + signature_bio = BIO_new_mem_buf(signature, signature_size); + message_bio = BIO_new(BIO_s_mem()); + + cms = d2i_CMS_bio(signature_bio, NULL); + if (cms) { + result = CMS_verify(cms, NULL, cert_store, NULL, message_bio, CMS_NO_SIGNER_CERT_VERIFY | CMS_BINARY); + if (result) + signers = CMS_get0_signers(cms); + if (signers) + intercerts = CMS_get1_certs(cms); + if (intercerts) { + /* Verify signer certificates */ + signer_count = sk_X509_num(signers); + if (signer_count > 0) + err = MZ_OK; + + for (i = 0; i < signer_count; i++) { + store_ctx = X509_STORE_CTX_new(); + X509_STORE_CTX_init(store_ctx, cert_store, sk_X509_value(signers, i), intercerts); + result = X509_verify_cert(store_ctx); + if (store_ctx) + X509_STORE_CTX_free(store_ctx); + + if (!result) { + err = MZ_SIGN_ERROR; + break; + } + } + } + + BIO_get_mem_ptr(message_bio, &buf_mem); + + if (err == MZ_OK) { + /* Verify the message */ + if (((int32_t)buf_mem->length != message_size) || + (memcmp(buf_mem->data, message, message_size) != 0)) + err = MZ_SIGN_ERROR; + } + } + +#if 0 + if (!result) + printf(ERR_error_string(ERR_get_error(), NULL)); +#endif + + if (cms) + CMS_ContentInfo_free(cms); + if (message_bio) + BIO_free(message_bio); + if (signature_bio) + BIO_free(signature_bio); + if (cert_store) + X509_STORE_free(cert_store); + + return err; +} +#endif diff --git a/Externals/minizip/mz_crypt_win32.c b/Externals/minizip/mz_crypt_win32.c new file mode 100644 index 000000000000..6ec6a848d02c --- /dev/null +++ b/Externals/minizip/mz_crypt_win32.c @@ -0,0 +1,739 @@ +/* mz_crypt_win32.c -- Crypto/hash functions for Windows + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#include "mz.h" +#include "mz_os.h" +#include "mz_crypt.h" + +#include +#include + +/***************************************************************************/ + +int32_t mz_crypt_rand(uint8_t *buf, int32_t size) { + HCRYPTPROV provider; + int32_t result = 0; + + + result = CryptAcquireContext(&provider, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT); + if (result) { + result = CryptGenRandom(provider, size, buf); + CryptReleaseContext(provider, 0); + if (result) + return size; + } + + return mz_os_rand(buf, size); +} + +/***************************************************************************/ + +typedef struct mz_crypt_sha_s { + HCRYPTPROV provider; + HCRYPTHASH hash; + int32_t error; + uint16_t algorithm; +} mz_crypt_sha; + +/***************************************************************************/ + +void mz_crypt_sha_reset(void *handle) { + mz_crypt_sha *sha = (mz_crypt_sha *)handle; + if (sha->hash) + CryptDestroyHash(sha->hash); + sha->hash = 0; + if (sha->provider) + CryptReleaseContext(sha->provider, 0); + sha->provider = 0; + sha->error = 0; +} + +int32_t mz_crypt_sha_begin(void *handle) { + mz_crypt_sha *sha = (mz_crypt_sha *)handle; + ALG_ID alg_id = 0; + int32_t result = 0; + int32_t err = MZ_OK; + + + if (sha == NULL) + return MZ_PARAM_ERROR; + + if (sha->algorithm == MZ_HASH_SHA1) + alg_id = CALG_SHA1; + else + alg_id = CALG_SHA_256; + + result = CryptAcquireContext(&sha->provider, NULL, NULL, PROV_RSA_AES, CRYPT_VERIFYCONTEXT | CRYPT_SILENT); + if (!result) { + sha->error = GetLastError(); + err = MZ_CRYPT_ERROR; + } + + if (result) { + result = CryptCreateHash(sha->provider, alg_id, 0, 0, &sha->hash); + if (!result) { + sha->error = GetLastError(); + err = MZ_HASH_ERROR; + } + } + + return err; +} + +int32_t mz_crypt_sha_update(void *handle, const void *buf, int32_t size) { + mz_crypt_sha *sha = (mz_crypt_sha *)handle; + int32_t result = 0; + + if (sha == NULL || buf == NULL || sha->hash == 0) + return MZ_PARAM_ERROR; + result = CryptHashData(sha->hash, buf, size, 0); + if (!result) { + sha->error = GetLastError(); + return MZ_HASH_ERROR; + } + return size; +} + +int32_t mz_crypt_sha_end(void *handle, uint8_t *digest, int32_t digest_size) { + mz_crypt_sha *sha = (mz_crypt_sha *)handle; + int32_t result = 0; + int32_t expected_size = 0; + + if (sha == NULL || digest == NULL || sha->hash == 0) + return MZ_PARAM_ERROR; + result = CryptGetHashParam(sha->hash, HP_HASHVAL, NULL, (DWORD *)&expected_size, 0); + if (expected_size > digest_size) + return MZ_BUF_ERROR; + if (!result) + return MZ_HASH_ERROR; + result = CryptGetHashParam(sha->hash, HP_HASHVAL, digest, (DWORD *)&digest_size, 0); + if (!result) { + sha->error = GetLastError(); + return MZ_HASH_ERROR; + } + return MZ_OK; +} + +void mz_crypt_sha_set_algorithm(void *handle, uint16_t algorithm) { + mz_crypt_sha *sha = (mz_crypt_sha *)handle; + sha->algorithm = algorithm; +} + +void *mz_crypt_sha_create(void **handle) { + mz_crypt_sha *sha = NULL; + + sha = (mz_crypt_sha *)MZ_ALLOC(sizeof(mz_crypt_sha)); + if (sha != NULL) { + memset(sha, 0, sizeof(mz_crypt_sha)); + sha->algorithm = MZ_HASH_SHA256; + } + if (handle != NULL) + *handle = sha; + + return sha; +} + +void mz_crypt_sha_delete(void **handle) { + mz_crypt_sha *sha = NULL; + if (handle == NULL) + return; + sha = (mz_crypt_sha *)*handle; + if (sha != NULL) { + mz_crypt_sha_reset(*handle); + MZ_FREE(sha); + } + *handle = NULL; +} + +/***************************************************************************/ + +typedef struct mz_crypt_aes_s { + HCRYPTPROV provider; + HCRYPTKEY key; + int32_t mode; + int32_t error; +} mz_crypt_aes; + +/***************************************************************************/ + +static void mz_crypt_aes_free(void *handle) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + if (aes->key) + CryptDestroyKey(aes->key); + aes->key = 0; + if (aes->provider) + CryptReleaseContext(aes->provider, 0); + aes->provider = 0; +} + +void mz_crypt_aes_reset(void *handle) { + mz_crypt_aes_free(handle); +} + +int32_t mz_crypt_aes_encrypt(void *handle, uint8_t *buf, int32_t size) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + int32_t result = 0; + + if (aes == NULL || buf == NULL) + return MZ_PARAM_ERROR; + if (size != MZ_AES_BLOCK_SIZE) + return MZ_PARAM_ERROR; + result = CryptEncrypt(aes->key, 0, 0, 0, buf, (DWORD *)&size, size); + if (!result) { + aes->error = GetLastError(); + return MZ_CRYPT_ERROR; + } + return size; +} + +int32_t mz_crypt_aes_decrypt(void *handle, uint8_t *buf, int32_t size) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + int32_t result = 0; + if (aes == NULL || buf == NULL) + return MZ_PARAM_ERROR; + if (size != MZ_AES_BLOCK_SIZE) + return MZ_PARAM_ERROR; + result = CryptDecrypt(aes->key, 0, 0, 0, buf, (DWORD *)&size); + if (!result) { + aes->error = GetLastError(); + return MZ_CRYPT_ERROR; + } + return size; +} + +static int32_t mz_crypt_aes_set_key(void *handle, const void *key, int32_t key_length) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + HCRYPTHASH hash = 0; + ALG_ID alg_id = 0; + typedef struct key_blob_header_s { + BLOBHEADER hdr; + uint32_t key_length; + } key_blob_header_s; + key_blob_header_s *key_blob_s = NULL; + uint32_t mode = CRYPT_MODE_ECB; + uint8_t *key_blob = NULL; + int32_t key_blob_size = 0; + int32_t result = 0; + int32_t err = MZ_OK; + + + if (aes == NULL || key == NULL) + return MZ_PARAM_ERROR; + + mz_crypt_aes_reset(handle); + + if (key_length == MZ_AES_KEY_LENGTH(MZ_AES_ENCRYPTION_MODE_128)) + alg_id = CALG_AES_128; + else if (key_length == MZ_AES_KEY_LENGTH(MZ_AES_ENCRYPTION_MODE_192)) + alg_id = CALG_AES_192; + else if (key_length == MZ_AES_KEY_LENGTH(MZ_AES_ENCRYPTION_MODE_256)) + alg_id = CALG_AES_256; + else + return MZ_PARAM_ERROR; + + result = CryptAcquireContext(&aes->provider, NULL, MS_ENH_RSA_AES_PROV, PROV_RSA_AES, CRYPT_VERIFYCONTEXT | CRYPT_SILENT); + if (result) { + key_blob_size = sizeof(key_blob_header_s) + key_length; + key_blob = (uint8_t *)MZ_ALLOC(key_blob_size); + if (key_blob) { + key_blob_s = (key_blob_header_s *)key_blob; + key_blob_s->hdr.bType = PLAINTEXTKEYBLOB; + key_blob_s->hdr.bVersion = CUR_BLOB_VERSION; + key_blob_s->hdr.aiKeyAlg = alg_id; + key_blob_s->hdr.reserved = 0; + key_blob_s->key_length = key_length; + + memcpy(key_blob + sizeof(key_blob_header_s), key, key_length); + + result = CryptImportKey(aes->provider, key_blob, key_blob_size, 0, 0, &aes->key); + + SecureZeroMemory(key_blob, key_blob_size); + MZ_FREE(key_blob); + } else { + err = MZ_MEM_ERROR; + } + } + + if (result && err == MZ_OK) + result = CryptSetKeyParam(aes->key, KP_MODE, (const uint8_t *)&mode, 0); + + if (!result && err == MZ_OK) { + aes->error = GetLastError(); + err = MZ_CRYPT_ERROR; + } + + if (hash) + CryptDestroyHash(hash); + + return err; +} + +int32_t mz_crypt_aes_set_encrypt_key(void *handle, const void *key, int32_t key_length) { + return mz_crypt_aes_set_key(handle, key, key_length); +} + +int32_t mz_crypt_aes_set_decrypt_key(void *handle, const void *key, int32_t key_length) { + return mz_crypt_aes_set_key(handle, key, key_length); +} + +void mz_crypt_aes_set_mode(void *handle, int32_t mode) { + mz_crypt_aes *aes = (mz_crypt_aes *)handle; + aes->mode = mode; +} + +void *mz_crypt_aes_create(void **handle) { + mz_crypt_aes *aes = NULL; + + aes = (mz_crypt_aes *)MZ_ALLOC(sizeof(mz_crypt_aes)); + if (aes != NULL) + memset(aes, 0, sizeof(mz_crypt_aes)); + if (handle != NULL) + *handle = aes; + + return aes; +} + +void mz_crypt_aes_delete(void **handle) { + mz_crypt_aes *aes = NULL; + if (handle == NULL) + return; + aes = (mz_crypt_aes *)*handle; + if (aes != NULL) { + mz_crypt_aes_free(*handle); + MZ_FREE(aes); + } + *handle = NULL; +} + +/***************************************************************************/ + +typedef struct mz_crypt_hmac_s { + HCRYPTPROV provider; + HCRYPTHASH hash; + HCRYPTKEY key; + HMAC_INFO info; + int32_t mode; + int32_t error; + uint16_t algorithm; +} mz_crypt_hmac; + +/***************************************************************************/ + +static void mz_crypt_hmac_free(void *handle) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + if (hmac->key) + CryptDestroyKey(hmac->key); + hmac->key = 0; + if (hmac->hash) + CryptDestroyHash(hmac->hash); + hmac->hash = 0; + if (hmac->provider) + CryptReleaseContext(hmac->provider, 0); + hmac->provider = 0; + memset(&hmac->info, 0, sizeof(hmac->info)); +} + +void mz_crypt_hmac_reset(void *handle) { + mz_crypt_hmac_free(handle); +} + +int32_t mz_crypt_hmac_init(void *handle, const void *key, int32_t key_length) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + ALG_ID alg_id = 0; + typedef struct key_blob_header_s { + BLOBHEADER hdr; + uint32_t key_length; + } key_blob_header_s; + key_blob_header_s *key_blob_s = NULL; + uint8_t *key_blob = NULL; + int32_t key_blob_size = 0; + int32_t result = 0; + int32_t err = MZ_OK; + + + if (hmac == NULL || key == NULL) + return MZ_PARAM_ERROR; + + mz_crypt_hmac_reset(handle); + + if (hmac->algorithm == MZ_HASH_SHA1) + alg_id = CALG_SHA1; + else + alg_id = CALG_SHA_256; + + hmac->info.HashAlgid = alg_id; + + result = CryptAcquireContext(&hmac->provider, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, + CRYPT_VERIFYCONTEXT | CRYPT_SILENT); + + if (!result) { + hmac->error = GetLastError(); + err = MZ_CRYPT_ERROR; + } else { + /* Zero-pad odd key lengths */ + if (key_length % 2 == 1) + key_length += 1; + key_blob_size = sizeof(key_blob_header_s) + key_length; + key_blob = (uint8_t *)MZ_ALLOC(key_blob_size); + } + + if (key_blob) { + memset(key_blob, 0, key_blob_size); + key_blob_s = (key_blob_header_s *)key_blob; + key_blob_s->hdr.bType = PLAINTEXTKEYBLOB; + key_blob_s->hdr.bVersion = CUR_BLOB_VERSION; + key_blob_s->hdr.aiKeyAlg = CALG_RC2; + key_blob_s->hdr.reserved = 0; + key_blob_s->key_length = key_length; + + memcpy(key_blob + sizeof(key_blob_header_s), key, key_length); + + result = CryptImportKey(hmac->provider, key_blob, key_blob_size, 0, CRYPT_IPSEC_HMAC_KEY, &hmac->key); + if (result) + result = CryptCreateHash(hmac->provider, CALG_HMAC, hmac->key, 0, &hmac->hash); + if (result) + result = CryptSetHashParam(hmac->hash, HP_HMAC_INFO, (uint8_t *)&hmac->info, 0); + + SecureZeroMemory(key_blob, key_blob_size); + MZ_FREE(key_blob); + } else if (err == MZ_OK) { + err = MZ_MEM_ERROR; + } + + if (!result) { + hmac->error = GetLastError(); + err = MZ_CRYPT_ERROR; + } + + if (err != MZ_OK) + mz_crypt_hmac_free(handle); + + return err; +} + +int32_t mz_crypt_hmac_update(void *handle, const void *buf, int32_t size) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + int32_t result = 0; + + if (hmac == NULL || buf == NULL || hmac->hash == 0) + return MZ_PARAM_ERROR; + + result = CryptHashData(hmac->hash, buf, size, 0); + if (!result) { + hmac->error = GetLastError(); + return MZ_HASH_ERROR; + } + return MZ_OK; +} + +int32_t mz_crypt_hmac_end(void *handle, uint8_t *digest, int32_t digest_size) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + int32_t result = 0; + int32_t expected_size = 0; + + if (hmac == NULL || digest == NULL || hmac->hash == 0) + return MZ_PARAM_ERROR; + result = CryptGetHashParam(hmac->hash, HP_HASHVAL, NULL, (DWORD *)&expected_size, 0); + if (expected_size > digest_size) + return MZ_BUF_ERROR; + if (!result) + return MZ_HASH_ERROR; + result = CryptGetHashParam(hmac->hash, HP_HASHVAL, digest, (DWORD *)&digest_size, 0); + if (!result) { + hmac->error = GetLastError(); + return MZ_HASH_ERROR; + } + return MZ_OK; +} + +void mz_crypt_hmac_set_algorithm(void *handle, uint16_t algorithm) { + mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle; + hmac->algorithm = algorithm; +} + +int32_t mz_crypt_hmac_copy(void *src_handle, void *target_handle) { + mz_crypt_hmac *source = (mz_crypt_hmac *)src_handle; + mz_crypt_hmac *target = (mz_crypt_hmac *)target_handle; + int32_t result = 0; + int32_t err = MZ_OK; + + if (target->hash) { + CryptDestroyHash(target->hash); + target->hash = 0; + } + + result = CryptDuplicateHash(source->hash, NULL, 0, &target->hash); + + if (!result) { + target->error = GetLastError(); + err = MZ_HASH_ERROR; + } + return err; +} + +void *mz_crypt_hmac_create(void **handle) { + mz_crypt_hmac *hmac = NULL; + + hmac = (mz_crypt_hmac *)MZ_ALLOC(sizeof(mz_crypt_hmac)); + if (hmac != NULL) { + memset(hmac, 0, sizeof(mz_crypt_hmac)); + hmac->algorithm = MZ_HASH_SHA256; + } + if (handle != NULL) + *handle = hmac; + + return hmac; +} + +void mz_crypt_hmac_delete(void **handle) { + mz_crypt_hmac *hmac = NULL; + if (handle == NULL) + return; + hmac = (mz_crypt_hmac *)*handle; + if (hmac != NULL) { + mz_crypt_hmac_free(*handle); + MZ_FREE(hmac); + } + *handle = NULL; +} + +/***************************************************************************/ + +#if defined(MZ_ZIP_SIGNING) +int32_t mz_crypt_sign(uint8_t *message, int32_t message_size, uint8_t *cert_data, int32_t cert_data_size, + const char *cert_pwd, uint8_t **signature, int32_t *signature_size) { + CRYPT_SIGN_MESSAGE_PARA sign_params; + CRYPT_DATA_BLOB cert_data_blob; + PCCERT_CONTEXT cert_context = NULL; + HCERTSTORE cert_store = 0; + wchar_t *password_wide = NULL; + int32_t result = 0; + int32_t err = MZ_OK; + uint32_t messages_sizes[1]; + uint8_t *messages[1]; + + + if (message == NULL || cert_data == NULL || signature == NULL || signature_size == NULL) + return MZ_PARAM_ERROR; + + *signature = NULL; + *signature_size = 0; + + cert_data_blob.pbData = cert_data; + cert_data_blob.cbData = cert_data_size; + + password_wide = mz_os_unicode_string_create(cert_pwd, MZ_ENCODING_UTF8); + if (password_wide) { + cert_store = PFXImportCertStore(&cert_data_blob, password_wide, 0); + mz_os_unicode_string_delete(&password_wide); + } + + if (cert_store == NULL) + cert_store = PFXImportCertStore(&cert_data_blob, L"", 0); + if (cert_store == NULL) + cert_store = PFXImportCertStore(&cert_data_blob, NULL, 0); + if (cert_store == NULL) + return MZ_PARAM_ERROR; + + if (err == MZ_OK) { + cert_context = CertFindCertificateInStore(cert_store, + X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0, CERT_FIND_HAS_PRIVATE_KEY, NULL, NULL); + if (cert_context == NULL) + err = MZ_PARAM_ERROR; + } + if (err == MZ_OK) { + memset(&sign_params, 0, sizeof(sign_params)); + + sign_params.cbSize = sizeof(sign_params); + sign_params.dwMsgEncodingType = PKCS_7_ASN_ENCODING | X509_ASN_ENCODING; + sign_params.pSigningCert = cert_context; + sign_params.HashAlgorithm.pszObjId = szOID_NIST_sha256; + sign_params.cMsgCert = 1; + sign_params.rgpMsgCert = &cert_context; + + messages[0] = message; + messages_sizes[0] = message_size; + +#if 0 /* Timestamp support */ + CRYPT_ATTR_BLOB crypt_blob; + CRYPT_TIMESTAMP_CONTEXT *ts_context = NULL; + CRYPT_ATTRIBUTE unauth_attribs[1]; + wchar_t *timestamp_url_wide = NULL; + const char *timestamp_url = NULL; + + if (timestamp_url != NULL) + timestamp_url_wide = mz_os_unicode_string_create(timestamp_url); + if (timestamp_url_wide != NULL) { + result = CryptRetrieveTimeStamp(timestamp_url_wide, + TIMESTAMP_NO_AUTH_RETRIEVAL | TIMESTAMP_VERIFY_CONTEXT_SIGNATURE, 0, szOID_NIST_sha256, + NULL, message, message_size, &ts_context, NULL, NULL); + + mz_os_unicode_string_delete(×tamp_url_wide); + + if ((result) && (ts_context != NULL)) { + crypt_blob.cbData = ts_context->cbEncoded; + crypt_blob.pbData = ts_context->pbEncoded; + + unauth_attribs[0].pszObjId = "1.2.840.113549.1.9.16.2.14"; //id-smime-aa-timeStampToken + unauth_attribs[0].cValue = 1; + unauth_attribs[0].rgValue = &crypt_blob; + + sign_params.rgUnauthAttr = &unauth_attribs[0]; + sign_params.cUnauthAttr = 1; + } + } + + if (ts_context != NULL) + CryptMemFree(ts_context); + + if (result) +#endif + + result = CryptSignMessage(&sign_params, FALSE, 1, (const BYTE **)messages, (DWORD *)messages_sizes, + NULL, (DWORD *)signature_size); + + if (result && *signature_size > 0) + *signature = (uint8_t *)MZ_ALLOC(*signature_size); + + if (result && *signature != NULL) + result = CryptSignMessage(&sign_params, FALSE, 1, (const BYTE **)messages, (DWORD *)messages_sizes, + *signature, (DWORD *)signature_size); + + if (!result) + err = MZ_SIGN_ERROR; + } + + if (cert_context != NULL) + CertFreeCertificateContext(cert_context); + if (cert_store != NULL) + CertCloseStore(cert_store, 0); + + return err; +} + +int32_t mz_crypt_sign_verify(uint8_t *message, int32_t message_size, uint8_t *signature, int32_t signature_size) { + CRYPT_VERIFY_MESSAGE_PARA verify_params; + CERT_CONTEXT *signer_cert = NULL; + CERT_CHAIN_PARA chain_para; + CERT_CHAIN_CONTEXT *chain_context = NULL; + CERT_CHAIN_POLICY_PARA chain_policy; + CERT_CHAIN_POLICY_STATUS chain_policy_status; + HCRYPTMSG crypt_msg = 0; + int32_t result = 0; + int32_t err = MZ_SIGN_ERROR; + uint8_t *decoded = NULL; + int32_t decoded_size = 0; + + + memset(&verify_params, 0, sizeof(verify_params)); + + verify_params.cbSize = sizeof(verify_params); + verify_params.dwMsgAndCertEncodingType = PKCS_7_ASN_ENCODING | X509_ASN_ENCODING; + + result = CryptVerifyMessageSignature(&verify_params, 0, signature, signature_size, + NULL, (DWORD *)&decoded_size, NULL); + + if (result && decoded_size > 0) + decoded = (uint8_t *)MZ_ALLOC(decoded_size); + + if (result && decoded != NULL) + result = CryptVerifyMessageSignature(&verify_params, 0, signature, signature_size, + decoded, (DWORD *)&decoded_size, (const CERT_CONTEXT **)&signer_cert); + + /* Get and validate certificate chain */ + memset(&chain_para, 0, sizeof(chain_para)); + + if (result && signer_cert != NULL) + result = CertGetCertificateChain(NULL, signer_cert, NULL, NULL, &chain_para, + CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT, NULL, (const CERT_CHAIN_CONTEXT **)&chain_context); + + memset(&chain_policy, 0, sizeof(chain_policy)); + chain_policy.cbSize = sizeof(CERT_CHAIN_POLICY_PARA); + + memset(&chain_policy_status, 0, sizeof(chain_policy_status)); + chain_policy_status.cbSize = sizeof(CERT_CHAIN_POLICY_STATUS); + + if (result && chain_context != NULL) + result = CertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_BASE, chain_context, + &chain_policy, &chain_policy_status); + + if (chain_policy_status.dwError != S_OK) + result = 0; + +#if 0 + crypt_msg = CryptMsgOpenToDecode(PKCS_7_ASN_ENCODING | X509_ASN_ENCODING, 0, 0, 0, NULL, NULL); + if (crypt_msg != NULL) { + /* Timestamp support */ + PCRYPT_ATTRIBUTES unauth_attribs = NULL; + HCRYPTMSG ts_msg = 0; + uint8_t *ts_content = NULL; + int32_t ts_content_size = 0; + uint8_t *ts_signature = NULL; + int32_t ts_signature_size = 0; + + result = CryptMsgUpdate(crypt_msg, signature, signature_size, 1); + + if (result) + CryptMsgGetParam(crypt_msg, CMSG_SIGNER_UNAUTH_ATTR_PARAM, 0, NULL, &ts_signature_size); + + if ((result) && (ts_signature_size > 0)) + ts_signature = (uint8_t *)MZ_ALLOC(ts_signature_size); + + if ((result) && (ts_signature != NULL)) { + result = CryptMsgGetParam(crypt_msg, CMSG_SIGNER_UNAUTH_ATTR_PARAM, 0, ts_signature, + &ts_signature_size); + if (result) + { + unauth_attribs = (PCRYPT_ATTRIBUTES)ts_signature; + + if ((unauth_attribs->cAttr > 0) && (unauth_attribs->rgAttr[0].cValue > 0)) + { + ts_content = unauth_attribs->rgAttr[0].rgValue->pbData; + ts_content_size = unauth_attribs->rgAttr[0].rgValue->cbData; + } + } + + if ((result) && (ts_content != NULL)) + result = CryptVerifyTimeStampSignature(ts_content, ts_content_size, decoded, + decoded_size, 0, &crypt_context, NULL, NULL); + + if (result) + err = MZ_OK; + } + + if (ts_signature != NULL) + MZ_FREE(ts_signature); + + if (crypt_context != NULL) + CryptMemFree(crypt_context); + } else { + result = 0; + } +#endif + + if ((result) && (decoded != NULL) && (decoded_size == message_size)) { + /* Verify cms message with our stored message */ + if (memcmp(decoded, message, message_size) == 0) + err = MZ_OK; + } + + if (chain_context != NULL) + CertFreeCertificateChain(chain_context); + if (signer_cert != NULL) + CertFreeCertificateContext(signer_cert); + if (crypt_msg != NULL) + CryptMsgClose(crypt_msg); + + if (decoded != NULL) + MZ_FREE(decoded); + + return err; +} +#endif diff --git a/Externals/minizip/mz_os.c b/Externals/minizip/mz_os.c new file mode 100644 index 000000000000..f96befe64c1b --- /dev/null +++ b/Externals/minizip/mz_os.c @@ -0,0 +1,354 @@ +/* mz_os.c -- System functions + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + Copyright (C) 1998-2010 Gilles Vollant + https://www.winimage.com/zLibDll/minizip.html + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#include "mz.h" +#include "mz_crypt.h" +#include "mz_os.h" +#include "mz_strm.h" +#include "mz_strm_os.h" + +#include /* tolower */ + +/***************************************************************************/ + +int32_t mz_path_combine(char *path, const char *join, int32_t max_path) { + int32_t path_len = 0; + + if (path == NULL || join == NULL || max_path == 0) + return MZ_PARAM_ERROR; + + path_len = (int32_t)strlen(path); + + if (path_len == 0) { + strncpy(path, join, max_path - 1); + path[max_path - 1] = 0; + } else { + mz_path_append_slash(path, max_path, MZ_PATH_SLASH_PLATFORM); + strncat(path, join, max_path - path_len); + } + + return MZ_OK; +} + +int32_t mz_path_append_slash(char *path, int32_t max_path, char slash) { + int32_t path_len = (int32_t)strlen(path); + if ((path_len + 2) >= max_path) + return MZ_BUF_ERROR; + if (path[path_len - 1] != '\\' && path[path_len - 1] != '/') { + path[path_len] = slash; + path[path_len + 1] = 0; + } + return MZ_OK; +} + +int32_t mz_path_remove_slash(char *path) { + int32_t path_len = (int32_t)strlen(path); + while (path_len > 0) { + if (path[path_len - 1] == '\\' || path[path_len - 1] == '/') + path[path_len - 1] = 0; + else + break; + + path_len -= 1; + } + return MZ_OK; +} + +int32_t mz_path_has_slash(const char *path) { + int32_t path_len = (int32_t)strlen(path); + if (path[path_len - 1] != '\\' && path[path_len - 1] != '/') + return MZ_EXIST_ERROR; + return MZ_OK; +} + +int32_t mz_path_convert_slashes(char *path, char slash) { + int32_t i = 0; + + for (i = 0; i < (int32_t)strlen(path); i += 1) { + if (path[i] == '\\' || path[i] == '/') + path[i] = slash; + } + return MZ_OK; +} + +int32_t mz_path_compare_wc(const char *path, const char *wildcard, uint8_t ignore_case) { + while (*path != 0) { + switch (*wildcard) { + case '*': + + if (*(wildcard + 1) == 0) + return MZ_OK; + + while (*path != 0) { + if (mz_path_compare_wc(path, (wildcard + 1), ignore_case) == MZ_OK) + return MZ_OK; + + path += 1; + } + + return MZ_EXIST_ERROR; + + default: + /* Ignore differences in path slashes on platforms */ + if ((*path == '\\' && *wildcard == '/') || (*path == '/' && *wildcard == '\\')) + break; + + if (ignore_case) { + if (tolower(*path) != tolower(*wildcard)) + return MZ_EXIST_ERROR; + } else { + if (*path != *wildcard) + return MZ_EXIST_ERROR; + } + + break; + } + + path += 1; + wildcard += 1; + } + + if ((*wildcard != 0) && (*wildcard != '*')) + return MZ_EXIST_ERROR; + + return MZ_OK; +} + +int32_t mz_path_resolve(const char *path, char *output, int32_t max_output) { + const char *source = path; + const char *check = output; + char *target = output; + + + if (max_output <= 0) + return MZ_PARAM_ERROR; + + while (*source != 0 && max_output > 1) { + check = source; + if ((*check == '\\') || (*check == '/')) + check += 1; + + if ((source == path) || (target == output) || (check != source)) { + /* Skip double paths */ + if ((*check == '\\') || (*check == '/')) { + source += 1; + continue; + } + if (*check == '.') { + check += 1; + + /* Remove . if at end of string and not at the beginning */ + if ((*check == 0) && (source != path && target != output)) { + /* Copy last slash */ + *target = *source; + target += 1; + max_output -= 1; + source += (check - source); + continue; + } + /* Remove . if not at end of string */ + else if ((*check == '\\') || (*check == '/')) { + source += (check - source); + /* Skip slash if at beginning of string */ + if (target == output && *source != 0) + source += 1; + continue; + } + /* Go to parent directory .. */ + else if (*check == '.') { + check += 1; + if ((*check == 0) || (*check == '\\' || *check == '/')) { + source += (check - source); + + /* Search backwards for previous slash */ + if (target != output) { + target -= 1; + do { + if ((*target == '\\') || (*target == '/')) + break; + + target -= 1; + max_output += 1; + } while (target > output); + } + + if ((target == output) && (*source != 0)) + source += 1; + if ((*target == '\\' || *target == '/') && (*source == 0)) + target += 1; + + *target = 0; + continue; + } + } + } + } + + *target = *source; + + source += 1; + target += 1; + max_output -= 1; + } + + *target = 0; + + if (*path == 0) + return MZ_INTERNAL_ERROR; + + return MZ_OK; +} + +int32_t mz_path_remove_filename(char *path) { + char *path_ptr = NULL; + + if (path == NULL) + return MZ_PARAM_ERROR; + + path_ptr = path + strlen(path) - 1; + + while (path_ptr > path) { + if ((*path_ptr == '/') || (*path_ptr == '\\')) { + *path_ptr = 0; + break; + } + + path_ptr -= 1; + } + + if (path_ptr == path) + *path_ptr = 0; + + return MZ_OK; +} + +int32_t mz_path_remove_extension(char *path) { + char *path_ptr = NULL; + + if (path == NULL) + return MZ_PARAM_ERROR; + + path_ptr = path + strlen(path) - 1; + + while (path_ptr > path) { + if ((*path_ptr == '/') || (*path_ptr == '\\')) + break; + if (*path_ptr == '.') { + *path_ptr = 0; + break; + } + + path_ptr -= 1; + } + + if (path_ptr == path) + *path_ptr = 0; + + return MZ_OK; +} + +int32_t mz_path_get_filename(const char *path, const char **filename) { + const char *match = NULL; + + if (path == NULL || filename == NULL) + return MZ_PARAM_ERROR; + + *filename = NULL; + + for (match = path; *match != 0; match += 1) { + if ((*match == '\\') || (*match == '/')) + *filename = match + 1; + } + + if (*filename == NULL) + return MZ_EXIST_ERROR; + + return MZ_OK; +} + +int32_t mz_dir_make(const char *path) { + int32_t err = MZ_OK; + int16_t len = 0; + char *current_dir = NULL; + char *match = NULL; + char hold = 0; + + + len = (int16_t)strlen(path); + if (len <= 0) + return 0; + + current_dir = (char *)MZ_ALLOC((uint16_t)len + 1); + if (current_dir == NULL) + return MZ_MEM_ERROR; + + strcpy(current_dir, path); + mz_path_remove_slash(current_dir); + + err = mz_os_make_dir(current_dir); + if (err != MZ_OK) { + match = current_dir + 1; + while (1) { + while (*match != 0 && *match != '\\' && *match != '/') + match += 1; + hold = *match; + *match = 0; + + err = mz_os_make_dir(current_dir); + if (err != MZ_OK) + break; + if (hold == 0) + break; + + *match = hold; + match += 1; + } + } + + MZ_FREE(current_dir); + return err; +} + +int32_t mz_file_get_crc(const char *path, uint32_t *result_crc) { + void *stream = NULL; + uint32_t crc32 = 0; + int32_t read = 0; + int32_t err = MZ_OK; + uint8_t buf[16384]; + + mz_stream_os_create(&stream); + + err = mz_stream_os_open(stream, path, MZ_OPEN_MODE_READ); + + if (err == MZ_OK) { + do { + read = mz_stream_os_read(stream, buf, sizeof(buf)); + + if (read < 0) { + err = read; + break; + } + + crc32 = mz_crypt_crc32_update(crc32, buf, read); + } while ((err == MZ_OK) && (read > 0)); + + mz_stream_os_close(stream); + } + + *result_crc = crc32; + + mz_stream_os_delete(&stream); + + return err; +} + +/***************************************************************************/ diff --git a/Externals/minizip/mz_os.h b/Externals/minizip/mz_os.h new file mode 100644 index 000000000000..b3e2a58c1966 --- /dev/null +++ b/Externals/minizip/mz_os.h @@ -0,0 +1,175 @@ +/* mz_os.h -- System functions + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_OS_H +#define MZ_OS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +#if defined(__APPLE__) +# define MZ_VERSION_MADEBY_HOST_SYSTEM (MZ_HOST_SYSTEM_OSX_DARWIN) +#elif defined(__riscos__) +# define MZ_VERSION_MADEBY_HOST_SYSTEM (MZ_HOST_SYSTEM_RISCOS) +#elif defined(_WIN32) +# define MZ_VERSION_MADEBY_HOST_SYSTEM (MZ_HOST_SYSTEM_WINDOWS_NTFS) +#else +# define MZ_VERSION_MADEBY_HOST_SYSTEM (MZ_HOST_SYSTEM_UNIX) +#endif + +#if defined(HAVE_LZMA) || defined(HAVE_LIBCOMP) +# define MZ_VERSION_MADEBY_ZIP_VERSION (63) +#elif defined(HAVE_WZAES) +# define MZ_VERSION_MADEBY_ZIP_VERSION (51) +#elif defined(HAVE_BZIP2) +# define MZ_VERSION_MADEBY_ZIP_VERSION (46) +#else +# define MZ_VERSION_MADEBY_ZIP_VERSION (45) +#endif + +#define MZ_VERSION_MADEBY ((MZ_VERSION_MADEBY_HOST_SYSTEM << 8) | \ + (MZ_VERSION_MADEBY_ZIP_VERSION)) + +#define MZ_PATH_SLASH_UNIX ('/') +#if defined(_WIN32) +# define MZ_PATH_SLASH_PLATFORM ('\\') +#else +# define MZ_PATH_SLASH_PLATFORM (MZ_PATH_SLASH_UNIX) +#endif + +/***************************************************************************/ + +#if defined(_WIN32) +struct dirent { + char d_name[256]; +}; +typedef void* DIR; +#else +#include +#endif + +/***************************************************************************/ +/* Shared functions */ + +int32_t mz_path_combine(char *path, const char *join, int32_t max_path); +/* Combines two paths */ + +int32_t mz_path_append_slash(char *path, int32_t max_path, char slash); +/* Appends a path slash on to the end of the path */ + +int32_t mz_path_remove_slash(char *path); +/* Removes a path slash from the end of the path */ + +int32_t mz_path_has_slash(const char *path); +/* Returns whether or not the path ends with slash */ + +int32_t mz_path_convert_slashes(char *path, char slash); +/* Converts the slashes in a path */ + +int32_t mz_path_compare_wc(const char *path, const char *wildcard, uint8_t ignore_case); +/* Compare two paths with wildcard */ + +int32_t mz_path_resolve(const char *path, char *target, int32_t max_target); +/* Resolves path */ + +int32_t mz_path_remove_filename(char *path); +/* Remove the filename from a path */ + +int32_t mz_path_remove_extension(char *path); +/* Remove the extension from a path */ + +int32_t mz_path_get_filename(const char *path, const char **filename); +/* Get the filename from a path */ + +int32_t mz_dir_make(const char *path); +/* Creates a directory recursively */ + +int32_t mz_file_get_crc(const char *path, uint32_t *result_crc); +/* Gets the crc32 hash of a file */ + +/***************************************************************************/ +/* Platform specific functions */ + +wchar_t *mz_os_unicode_string_create(const char *string, int32_t encoding); +/* Create unicode string from a utf8 string */ + +void mz_os_unicode_string_delete(wchar_t **string); +/* Delete a unicode string that was created */ + +uint8_t *mz_os_utf8_string_create(const char *string, int32_t encoding); +/* Create a utf8 string from a string with another encoding */ + +void mz_os_utf8_string_delete(uint8_t **string); +/* Delete a utf8 string that was created */ + +int32_t mz_os_rand(uint8_t *buf, int32_t size); +/* Random number generator (not cryptographically secure) */ + +int32_t mz_os_rename(const char *source_path, const char *target_path); +/* Rename a file */ + +int32_t mz_os_unlink(const char *path); +/* Delete an existing file */ + +int32_t mz_os_file_exists(const char *path); +/* Check to see if a file exists */ + +int64_t mz_os_get_file_size(const char *path); +/* Gets the length of a file */ + +int32_t mz_os_get_file_date(const char *path, time_t *modified_date, time_t *accessed_date, time_t *creation_date); +/* Gets a file's modified, access, and creation dates if supported */ + +int32_t mz_os_set_file_date(const char *path, time_t modified_date, time_t accessed_date, time_t creation_date); +/* Sets a file's modified, access, and creation dates if supported */ + +int32_t mz_os_get_file_attribs(const char *path, uint32_t *attributes); +/* Gets a file's attributes */ + +int32_t mz_os_set_file_attribs(const char *path, uint32_t attributes); +/* Sets a file's attributes */ + +int32_t mz_os_make_dir(const char *path); +/* Recursively creates a directory */ + +DIR* mz_os_open_dir(const char *path); +/* Opens a directory for listing */ +struct +dirent* mz_os_read_dir(DIR *dir); +/* Reads a directory listing entry */ + +int32_t mz_os_close_dir(DIR *dir); +/* Closes a directory that has been opened for listing */ + +int32_t mz_os_is_dir(const char *path); +/* Checks to see if path is a directory */ + +int32_t mz_os_is_symlink(const char *path); +/* Checks to see if path is a symbolic link */ + +int32_t mz_os_make_symlink(const char *path, const char *target_path); +/* Creates a symbolic link pointing to a target */ + +int32_t mz_os_read_symlink(const char *path, char *target_path, int32_t max_target_path); +/* Gets the target path for a symbolic link */ + +uint64_t mz_os_ms_time(void); +/* Gets the time in milliseconds */ + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/mz_os_posix.c b/Externals/minizip/mz_os_posix.c new file mode 100644 index 000000000000..576943d16206 --- /dev/null +++ b/Externals/minizip/mz_os_posix.c @@ -0,0 +1,367 @@ +/* mz_os_posix.c -- System functions for posix + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#include "mz.h" +#include "mz_strm.h" +#include "mz_os.h" + +#include /* rename */ +#include +#if defined(HAVE_ICONV) +#include +#endif + +#include +#include + +#ifndef _WIN32 +# include +# include +#endif +#if defined(__APPLE__) +# include +# include +#endif + +#if defined(HAVE_GETRANDOM) +# include +#endif +#if defined(HAVE_LIBBSD) +# include +# ifndef __u_char_defined + typedef unsigned char u_char; +# endif +# include /* arc4random_buf */ +#endif + +/***************************************************************************/ + +#if defined(HAVE_ICONV) +uint8_t *mz_os_utf8_string_create(const char *string, int32_t encoding) { + iconv_t cd; + const char *from_encoding = NULL; + size_t result = 0; + size_t string_length = 0; + size_t string_utf8_size = 0; + uint8_t *string_utf8 = NULL; + uint8_t *string_utf8_ptr = NULL; + + if (string == NULL) + return NULL; + + if (encoding == MZ_ENCODING_CODEPAGE_437) + from_encoding = "CP437"; + else if (encoding == MZ_ENCODING_CODEPAGE_932) + from_encoding = "CP932"; + else if (encoding == MZ_ENCODING_CODEPAGE_936) + from_encoding = "CP936"; + else if (encoding == MZ_ENCODING_CODEPAGE_950) + from_encoding = "CP950"; + else if (encoding == MZ_ENCODING_UTF8) + from_encoding = "UTF-8"; + else + return NULL; + + cd = iconv_open("UTF-8", from_encoding); + if (cd == (iconv_t)-1) + return NULL; + + string_length = strlen(string); + string_utf8_size = string_length * 2; + string_utf8 = (uint8_t *)MZ_ALLOC((int32_t)(string_utf8_size + 1)); + string_utf8_ptr = string_utf8; + + if (string_utf8) { + memset(string_utf8, 0, string_utf8_size + 1); + + result = iconv(cd, (char **)&string, &string_length, + (char **)&string_utf8_ptr, &string_utf8_size); + } + + iconv_close(cd); + + if (result == (size_t)-1) { + MZ_FREE(string_utf8); + string_utf8 = NULL; + } + + return string_utf8; +} +#else +uint8_t *mz_os_utf8_string_create(const char *string, int32_t encoding) { + size_t string_length = 0; + uint8_t *string_copy = NULL; + + string_length = strlen(string); + string_copy = (uint8_t *)MZ_ALLOC((int32_t)(string_length + 1)); + strncpy((char *)string_copy, string, string_length); + string_copy[string_length] = 0; + + return string_copy; +} +#endif + +void mz_os_utf8_string_delete(uint8_t **string) { + if (string != NULL) { + MZ_FREE(*string); + *string = NULL; + } +} + +/***************************************************************************/ + +#if defined(HAVE_ARC4RANDOM_BUF) +int32_t mz_os_rand(uint8_t *buf, int32_t size) { + if (size < 0) + return 0; + arc4random_buf(buf, (uint32_t)size); + return size; +} +#elif defined(HAVE_ARC4RANDOM) +int32_t mz_os_rand(uint8_t *buf, int32_t size) { + int32_t left = size; + for (; left > 2; left -= 3, buf += 3) { + uint32_t val = arc4random(); + + buf[0] = (val) & 0xFF; + buf[1] = (val >> 8) & 0xFF; + buf[2] = (val >> 16) & 0xFF; + } + for (; left > 0; left--, buf++) { + *buf = arc4random() & 0xFF; + } + return size - left; +} +#elif defined(HAVE_GETRANDOM) +int32_t mz_os_rand(uint8_t *buf, int32_t size) { + int32_t left = size; + int32_t written = 0; + + while (left > 0) { + written = getrandom(buf, left, 0); + if (written < 0) + return MZ_INTERNAL_ERROR; + + buf += written; + left -= written; + } + return size - left; +} +#else +int32_t mz_os_rand(uint8_t *buf, int32_t size) { + static unsigned calls = 0; + int32_t i = 0; + + /* Ensure different random header each time */ + if (++calls == 1) { + #define PI_SEED 3141592654UL + srand((unsigned)(time(NULL) ^ PI_SEED)); + } + + while (i < size) + buf[i++] = (rand() >> 7) & 0xff; + + return size; +} +#endif + +int32_t mz_os_rename(const char *source_path, const char *target_path) { + if (rename(source_path, target_path) == -1) + return MZ_EXIST_ERROR; + + return MZ_OK; +} + +int32_t mz_os_unlink(const char *path) { + if (unlink(path) == -1) + return MZ_EXIST_ERROR; + + return MZ_OK; +} + +int32_t mz_os_file_exists(const char *path) { + struct stat path_stat; + + memset(&path_stat, 0, sizeof(path_stat)); + if (stat(path, &path_stat) == 0) + return MZ_OK; + return MZ_EXIST_ERROR; +} + +int64_t mz_os_get_file_size(const char *path) { + struct stat path_stat; + + memset(&path_stat, 0, sizeof(path_stat)); + if (stat(path, &path_stat) == 0) { + /* Stat returns size taken up by directory entry, so return 0 */ + if (S_ISDIR(path_stat.st_mode)) + return 0; + + return path_stat.st_size; + } + + return 0; +} + +int32_t mz_os_get_file_date(const char *path, time_t *modified_date, time_t *accessed_date, time_t *creation_date) { + struct stat path_stat; + char *name = NULL; + size_t len = 0; + int32_t err = MZ_INTERNAL_ERROR; + + memset(&path_stat, 0, sizeof(path_stat)); + + if (strcmp(path, "-") != 0) { + /* Not all systems allow stat'ing a file with / appended */ + len = strlen(path); + name = (char *)malloc(len + 1); + strncpy(name, path, len + 1); + mz_path_remove_slash(name); + + if (stat(name, &path_stat) == 0) { + if (modified_date != NULL) + *modified_date = path_stat.st_mtime; + if (accessed_date != NULL) + *accessed_date = path_stat.st_atime; + /* Creation date not supported */ + if (creation_date != NULL) + *creation_date = 0; + + err = MZ_OK; + } + + free(name); + } + + return err; +} + +int32_t mz_os_set_file_date(const char *path, time_t modified_date, time_t accessed_date, time_t creation_date) { + struct utimbuf ut; + + ut.actime = accessed_date; + ut.modtime = modified_date; + + /* Creation date not supported */ + MZ_UNUSED(creation_date); + + if (utime(path, &ut) != 0) + return MZ_INTERNAL_ERROR; + + return MZ_OK; +} + +int32_t mz_os_get_file_attribs(const char *path, uint32_t *attributes) { + struct stat path_stat; + int32_t err = MZ_OK; + + memset(&path_stat, 0, sizeof(path_stat)); + if (lstat(path, &path_stat) == -1) + err = MZ_INTERNAL_ERROR; + *attributes = path_stat.st_mode; + return err; +} + +int32_t mz_os_set_file_attribs(const char *path, uint32_t attributes) { + int32_t err = MZ_OK; + + if (chmod(path, (mode_t)attributes) == -1) + err = MZ_INTERNAL_ERROR; + + return err; +} + +int32_t mz_os_make_dir(const char *path) { + int32_t err = 0; + + err = mkdir(path, 0755); + + if (err != 0 && errno != EEXIST) + return MZ_INTERNAL_ERROR; + + return MZ_OK; +} + +DIR* mz_os_open_dir(const char *path) { + return opendir(path); +} + +struct dirent* mz_os_read_dir(DIR *dir) { + if (dir == NULL) + return NULL; + return readdir(dir); +} + +int32_t mz_os_close_dir(DIR *dir) { + if (dir == NULL) + return MZ_PARAM_ERROR; + if (closedir(dir) == -1) + return MZ_INTERNAL_ERROR; + return MZ_OK; +} + +int32_t mz_os_is_dir(const char *path) { + struct stat path_stat; + + memset(&path_stat, 0, sizeof(path_stat)); + stat(path, &path_stat); + if (S_ISDIR(path_stat.st_mode)) + return MZ_OK; + + return MZ_EXIST_ERROR; +} + +int32_t mz_os_is_symlink(const char *path) { + struct stat path_stat; + + memset(&path_stat, 0, sizeof(path_stat)); + lstat(path, &path_stat); + if (S_ISLNK(path_stat.st_mode)) + return MZ_OK; + + return MZ_EXIST_ERROR; +} + +int32_t mz_os_make_symlink(const char *path, const char *target_path) { + if (symlink(target_path, path) != 0) + return MZ_INTERNAL_ERROR; + return MZ_OK; +} + +int32_t mz_os_read_symlink(const char *path, char *target_path, int32_t max_target_path) { + size_t length = 0; + + length = (size_t)readlink(path, target_path, max_target_path - 1); + if (length == (size_t)-1) + return MZ_EXIST_ERROR; + + target_path[length] = 0; + return MZ_OK; +} + +uint64_t mz_os_ms_time(void) { + struct timespec ts; + +#if defined(__APPLE__) + clock_serv_t cclock; + mach_timespec_t mts; + + host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock); + clock_get_time(cclock, &mts); + mach_port_deallocate(mach_task_self(), cclock); + + ts.tv_sec = mts.tv_sec; + ts.tv_nsec = mts.tv_nsec; +#else + clock_gettime(CLOCK_MONOTONIC, &ts); +#endif + + return ((uint64_t)ts.tv_sec * 1000) + ((uint64_t)ts.tv_nsec / 1000000); +} diff --git a/Externals/minizip/mz_os_win32.c b/Externals/minizip/mz_os_win32.c new file mode 100644 index 000000000000..182bdbb84030 --- /dev/null +++ b/Externals/minizip/mz_os_win32.c @@ -0,0 +1,659 @@ +/* mz_os_win32.c -- System functions for Windows + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" +#include "mz_os.h" +#include "mz_strm_os.h" + +#include +#include + +/***************************************************************************/ + +#if defined(WINAPI_FAMILY_PARTITION) && (!(defined(MZ_WINRT_API))) +# if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) +# define MZ_WINRT_API 1 +# endif +#endif + +#ifndef SYMBOLIC_LINK_FLAG_DIRECTORY +# define SYMBOLIC_LINK_FLAG_DIRECTORY 0x1 +#endif + +/***************************************************************************/ + +typedef struct DIR_int_s { + void *find_handle; + WIN32_FIND_DATAW find_data; + struct dirent entry; + uint8_t end; +} DIR_int; + +/***************************************************************************/ + +wchar_t *mz_os_unicode_string_create(const char *string, int32_t encoding) { + wchar_t *string_wide = NULL; + uint32_t string_wide_size = 0; + + string_wide_size = MultiByteToWideChar(encoding, 0, string, -1, NULL, 0); + if (string_wide_size == 0) + return NULL; + string_wide = (wchar_t *)MZ_ALLOC((string_wide_size + 1) * sizeof(wchar_t)); + if (string_wide == NULL) + return NULL; + + memset(string_wide, 0, sizeof(wchar_t) * (string_wide_size + 1)); + MultiByteToWideChar(encoding, 0, string, -1, string_wide, string_wide_size); + + return string_wide; +} + +void mz_os_unicode_string_delete(wchar_t **string) { + if (string != NULL) { + MZ_FREE(*string); + *string = NULL; + } +} + +uint8_t *mz_os_utf8_string_create(const char *string, int32_t encoding) { + wchar_t *string_wide = NULL; + uint8_t *string_utf8 = NULL; + uint32_t string_utf8_size = 0; + + string_wide = mz_os_unicode_string_create(string, encoding); + if (string_wide) { + string_utf8_size = WideCharToMultiByte(CP_UTF8, 0, string_wide, -1, NULL, 0, NULL, NULL); + string_utf8 = (uint8_t *)MZ_ALLOC((string_utf8_size + 1) * sizeof(wchar_t)); + + if (string_utf8) { + memset(string_utf8, 0, string_utf8_size + 1); + WideCharToMultiByte(CP_UTF8, 0, string_wide, -1, (char *)string_utf8, string_utf8_size, NULL, NULL); + } + + mz_os_unicode_string_delete(&string_wide); + } + + return string_utf8; +} + +uint8_t *mz_os_utf8_string_create_from_unicode(const wchar_t *string, int32_t encoding) { + uint8_t *string_utf8 = NULL; + uint32_t string_utf8_size = 0; + + MZ_UNUSED(encoding); + + string_utf8_size = WideCharToMultiByte(CP_UTF8, 0, string, -1, NULL, 0, NULL, NULL); + string_utf8 = (uint8_t *)MZ_ALLOC((string_utf8_size + 1) * sizeof(wchar_t)); + + if (string_utf8) { + memset(string_utf8, 0, string_utf8_size + 1); + WideCharToMultiByte(CP_UTF8, 0, string, -1, (char *)string_utf8, string_utf8_size, NULL, NULL); + } + + return string_utf8; +} + +void mz_os_utf8_string_delete(uint8_t **string) { + if (string != NULL) { + MZ_FREE(*string); + *string = NULL; + } +} + +/***************************************************************************/ + +int32_t mz_os_rand(uint8_t *buf, int32_t size) { + unsigned __int64 pentium_tsc[1]; + int32_t len = 0; + + for (len = 0; len < (int)size; len += 1) { + if (len % 8 == 0) + QueryPerformanceCounter((LARGE_INTEGER *)pentium_tsc); + buf[len] = ((unsigned char*)pentium_tsc)[len % 8]; + } + + return len; +} + +int32_t mz_os_rename(const char *source_path, const char *target_path) { + wchar_t *source_path_wide = NULL; + wchar_t *target_path_wide = NULL; + int32_t result = 0; + int32_t err = MZ_OK; + + if (source_path == NULL || target_path == NULL) + return MZ_PARAM_ERROR; + + source_path_wide = mz_os_unicode_string_create(source_path, MZ_ENCODING_UTF8); + if (source_path_wide == NULL) { + err = MZ_PARAM_ERROR; + } else { + target_path_wide = mz_os_unicode_string_create(target_path, MZ_ENCODING_UTF8); + if (target_path_wide == NULL) + err = MZ_PARAM_ERROR; + } + + if (err == MZ_OK) { +#ifdef MZ_WINRT_API + result = MoveFileExW(source_path_wide, target_path_wide, MOVEFILE_WRITE_THROUGH); +#else + result = MoveFileW(source_path_wide, target_path_wide); +#endif + if (result == 0) + err = MZ_EXIST_ERROR; + } + + if (target_path_wide) + mz_os_unicode_string_delete(&target_path_wide); + if (source_path_wide) + mz_os_unicode_string_delete(&source_path_wide); + + return err; +} + +int32_t mz_os_unlink(const char *path) { + wchar_t *path_wide = NULL; + int32_t result = 0; + + if (path == NULL) + return MZ_PARAM_ERROR; + path_wide = mz_os_unicode_string_create(path, MZ_ENCODING_UTF8); + if (path_wide == NULL) + return MZ_PARAM_ERROR; + + if (mz_os_is_dir(path) == MZ_OK) + result = RemoveDirectoryW(path_wide); + else + result = DeleteFileW(path_wide); + + mz_os_unicode_string_delete(&path_wide); + + if (result == 0) + return MZ_EXIST_ERROR; + + return MZ_OK; +} + +int32_t mz_os_file_exists(const char *path) { + wchar_t *path_wide = NULL; + DWORD attribs = 0; + + if (path == NULL) + return MZ_PARAM_ERROR; + path_wide = mz_os_unicode_string_create(path, MZ_ENCODING_UTF8); + if (path_wide == NULL) + return MZ_PARAM_ERROR; + + attribs = GetFileAttributesW(path_wide); + mz_os_unicode_string_delete(&path_wide); + + if (attribs == 0xFFFFFFFF) + return MZ_EXIST_ERROR; + + return MZ_OK; +} + +int64_t mz_os_get_file_size(const char *path) { + HANDLE handle = NULL; + LARGE_INTEGER large_size; + wchar_t *path_wide = NULL; + + if (path == NULL) + return MZ_PARAM_ERROR; + path_wide = mz_os_unicode_string_create(path, MZ_ENCODING_UTF8); + if (path_wide == NULL) + return MZ_PARAM_ERROR; +#ifdef MZ_WINRT_API + handle = CreateFile2(path_wide, GENERIC_READ, 0, OPEN_EXISTING, NULL); +#else + handle = CreateFileW(path_wide, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); +#endif + mz_os_unicode_string_delete(&path_wide); + + large_size.QuadPart = 0; + + if (handle != INVALID_HANDLE_VALUE) { + GetFileSizeEx(handle, &large_size); + CloseHandle(handle); + } + + return large_size.QuadPart; +} + +static void mz_os_file_to_unix_time(FILETIME file_time, time_t *unix_time) { + uint64_t quad_file_time = 0; + quad_file_time = file_time.dwLowDateTime; + quad_file_time |= ((uint64_t)file_time.dwHighDateTime << 32); + *unix_time = (time_t)((quad_file_time - 116444736000000000LL) / 10000000); +} + +static void mz_os_unix_to_file_time(time_t unix_time, FILETIME *file_time) { + uint64_t quad_file_time = 0; + quad_file_time = ((uint64_t)unix_time * 10000000) + 116444736000000000LL; + file_time->dwHighDateTime = (quad_file_time >> 32); + file_time->dwLowDateTime = (uint32_t)(quad_file_time); +} + +int32_t mz_os_get_file_date(const char *path, time_t *modified_date, time_t *accessed_date, time_t *creation_date) { + WIN32_FIND_DATAW ff32; + HANDLE handle = NULL; + wchar_t *path_wide = NULL; + int32_t err = MZ_INTERNAL_ERROR; + + if (path == NULL) + return MZ_PARAM_ERROR; + path_wide = mz_os_unicode_string_create(path, MZ_ENCODING_UTF8); + if (path_wide == NULL) + return MZ_PARAM_ERROR; + + handle = FindFirstFileW(path_wide, &ff32); + MZ_FREE(path_wide); + + if (handle != INVALID_HANDLE_VALUE) { + if (modified_date != NULL) + mz_os_file_to_unix_time(ff32.ftLastWriteTime, modified_date); + if (accessed_date != NULL) + mz_os_file_to_unix_time(ff32.ftLastAccessTime, accessed_date); + if (creation_date != NULL) + mz_os_file_to_unix_time(ff32.ftCreationTime, creation_date); + + FindClose(handle); + err = MZ_OK; + } + + return err; +} + +int32_t mz_os_set_file_date(const char *path, time_t modified_date, time_t accessed_date, time_t creation_date) { + HANDLE handle = NULL; + FILETIME ftm_creation, ftm_accessed, ftm_modified; + wchar_t *path_wide = NULL; + int32_t err = MZ_OK; + + if (path == NULL) + return MZ_PARAM_ERROR; + path_wide = mz_os_unicode_string_create(path, MZ_ENCODING_UTF8); + if (path_wide == NULL) + return MZ_PARAM_ERROR; + +#ifdef MZ_WINRT_API + handle = CreateFile2(path_wide, GENERIC_READ | GENERIC_WRITE, 0, OPEN_EXISTING, NULL); +#else + handle = CreateFileW(path_wide, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); +#endif + mz_os_unicode_string_delete(&path_wide); + + if (handle != INVALID_HANDLE_VALUE) { + GetFileTime(handle, &ftm_creation, &ftm_accessed, &ftm_modified); + + if (modified_date != 0) + mz_os_unix_to_file_time(modified_date, &ftm_modified); + if (accessed_date != 0) + mz_os_unix_to_file_time(accessed_date, &ftm_accessed); + if (creation_date != 0) + mz_os_unix_to_file_time(creation_date, &ftm_creation); + + if (SetFileTime(handle, &ftm_creation, &ftm_accessed, &ftm_modified) == 0) + err = MZ_INTERNAL_ERROR; + + CloseHandle(handle); + } + + return err; +} + +int32_t mz_os_get_file_attribs(const char *path, uint32_t *attributes) { + wchar_t *path_wide = NULL; + int32_t err = MZ_OK; + + if (path == NULL || attributes == NULL) + return MZ_PARAM_ERROR; + path_wide = mz_os_unicode_string_create(path, MZ_ENCODING_UTF8); + if (path_wide == NULL) + return MZ_PARAM_ERROR; + + *attributes = GetFileAttributesW(path_wide); + mz_os_unicode_string_delete(&path_wide); + + if (*attributes == INVALID_FILE_ATTRIBUTES) + err = MZ_INTERNAL_ERROR; + + return err; +} + +int32_t mz_os_set_file_attribs(const char *path, uint32_t attributes) { + wchar_t *path_wide = NULL; + int32_t err = MZ_OK; + + if (path == NULL) + return MZ_PARAM_ERROR; + path_wide = mz_os_unicode_string_create(path, MZ_ENCODING_UTF8); + if (path_wide == NULL) + return MZ_PARAM_ERROR; + + if (SetFileAttributesW(path_wide, attributes) == 0) + err = MZ_INTERNAL_ERROR; + mz_os_unicode_string_delete(&path_wide); + + return err; +} + +int32_t mz_os_make_dir(const char *path) { + wchar_t *path_wide = NULL; + int32_t err = MZ_OK; + + if (path == NULL) + return MZ_PARAM_ERROR; + + /* Don't try to create a drive letter */ + if ((path[0] != 0) && (strlen(path) <= 3) && (path[1] == ':')) + return mz_os_is_dir(path); + + path_wide = mz_os_unicode_string_create(path, MZ_ENCODING_UTF8); + if (path_wide == NULL) + return MZ_PARAM_ERROR; + + if (CreateDirectoryW(path_wide, NULL) == 0) { + if (GetLastError() != ERROR_ALREADY_EXISTS) + err = MZ_INTERNAL_ERROR; + } + + mz_os_unicode_string_delete(&path_wide); + + return err; +} + +DIR *mz_os_open_dir(const char *path) { + WIN32_FIND_DATAW find_data; + DIR_int *dir_int = NULL; + wchar_t *path_wide = NULL; + char fixed_path[320]; + void *handle = NULL; + + + if (path == NULL) + return NULL; + + strncpy(fixed_path, path, sizeof(fixed_path) - 1); + fixed_path[sizeof(fixed_path) - 1] = 0; + + mz_path_append_slash(fixed_path, sizeof(fixed_path), MZ_PATH_SLASH_PLATFORM); + mz_path_combine(fixed_path, "*", sizeof(fixed_path)); + + path_wide = mz_os_unicode_string_create(fixed_path, MZ_ENCODING_UTF8); + if (path_wide == NULL) + return NULL; + + handle = FindFirstFileW(path_wide, &find_data); + mz_os_unicode_string_delete(&path_wide); + + if (handle == INVALID_HANDLE_VALUE) + return NULL; + + dir_int = (DIR_int *)MZ_ALLOC(sizeof(DIR_int)); + if (dir_int == NULL) + return NULL; + dir_int->find_handle = handle; + dir_int->end = 0; + + memcpy(&dir_int->find_data, &find_data, sizeof(dir_int->find_data)); + + return (DIR *)dir_int; +} + +struct dirent* mz_os_read_dir(DIR *dir) { + DIR_int *dir_int; + + if (dir == NULL) + return NULL; + + dir_int = (DIR_int *)dir; + if (dir_int->end) + return NULL; + + WideCharToMultiByte(CP_UTF8, 0, dir_int->find_data.cFileName, -1, + dir_int->entry.d_name, sizeof(dir_int->entry.d_name), NULL, NULL); + + if (FindNextFileW(dir_int->find_handle, &dir_int->find_data) == 0) { + if (GetLastError() != ERROR_NO_MORE_FILES) + return NULL; + + dir_int->end = 1; + } + + return &dir_int->entry; +} + +int32_t mz_os_close_dir(DIR *dir) { + DIR_int *dir_int; + + if (dir == NULL) + return MZ_PARAM_ERROR; + + dir_int = (DIR_int *)dir; + if (dir_int->find_handle != INVALID_HANDLE_VALUE) + FindClose(dir_int->find_handle); + MZ_FREE(dir_int); + return MZ_OK; +} + +int32_t mz_os_is_dir(const char *path) { + wchar_t *path_wide = NULL; + uint32_t attribs = 0; + + if (path == NULL) + return MZ_PARAM_ERROR; + path_wide = mz_os_unicode_string_create(path, MZ_ENCODING_UTF8); + if (path_wide == NULL) + return MZ_PARAM_ERROR; + + attribs = GetFileAttributesW(path_wide); + mz_os_unicode_string_delete(&path_wide); + + if (attribs != 0xFFFFFFFF) { + if (attribs & FILE_ATTRIBUTE_DIRECTORY) + return MZ_OK; + } + + return MZ_EXIST_ERROR; +} + +int32_t mz_os_is_symlink(const char *path) { + wchar_t *path_wide = NULL; + uint32_t attribs = 0; + + if (path == NULL) + return MZ_PARAM_ERROR; + path_wide = mz_os_unicode_string_create(path, MZ_ENCODING_UTF8); + if (path_wide == NULL) + return MZ_PARAM_ERROR; + + attribs = GetFileAttributesW(path_wide); + mz_os_unicode_string_delete(&path_wide); + + if (attribs != 0xFFFFFFFF) { + if (attribs & FILE_ATTRIBUTE_REPARSE_POINT) + return MZ_OK; + } + + return MZ_EXIST_ERROR; +} + +int32_t mz_os_make_symlink(const char *path, const char *target_path) { + typedef BOOLEAN (WINAPI *LPCREATESYMBOLICLINKW)(LPCWSTR, LPCWSTR, DWORD); + LPCREATESYMBOLICLINKW create_symbolic_link_w = NULL; + HMODULE kernel32_mod = NULL; + wchar_t *path_wide = NULL; + wchar_t *target_path_wide = NULL; + int32_t err = MZ_OK; + int32_t flags = 0; + + if (path == NULL) + return MZ_PARAM_ERROR; + +#ifdef MZ_WINRT_API + MEMORY_BASIC_INFORMATION mbi; + memset(&mbi, 0, sizeof(mbi)); + VirtualQuery(VirtualQuery, &mbi, sizeof(mbi)); + kernel32_mod = (HMODULE)mbi.AllocationBase; +#else + kernel32_mod = GetModuleHandleW(L"kernel32.dll"); +#endif + + if (kernel32_mod == NULL) + return MZ_SUPPORT_ERROR; + + create_symbolic_link_w = (LPCREATESYMBOLICLINKW)GetProcAddress(kernel32_mod, "CreateSymbolicLinkW"); + if (create_symbolic_link_w == NULL) { + return MZ_SUPPORT_ERROR; + } + + path_wide = mz_os_unicode_string_create(path, MZ_ENCODING_UTF8); + if (path_wide == NULL) { + return MZ_PARAM_ERROR; + } + + target_path_wide = mz_os_unicode_string_create(target_path, MZ_ENCODING_UTF8); + if (target_path_wide != NULL) { + if (mz_path_has_slash(target_path) == MZ_OK) + flags |= SYMBOLIC_LINK_FLAG_DIRECTORY; + + if (create_symbolic_link_w(path_wide, target_path_wide, flags) == FALSE) + err = MZ_SYMLINK_ERROR; + + mz_os_unicode_string_delete(&target_path_wide); + } else { + err = MZ_PARAM_ERROR; + } + + mz_os_unicode_string_delete(&path_wide); + + return err; +} + +int32_t mz_os_read_symlink(const char *path, char *target_path, int32_t max_target_path) { + typedef struct _REPARSE_DATA_BUFFER { + ULONG ReparseTag; + USHORT ReparseDataLength; + USHORT Reserved; + union { + struct { + USHORT SubstituteNameOffset; + USHORT SubstituteNameLength; + USHORT PrintNameOffset; + USHORT PrintNameLength; + ULONG Flags; + WCHAR PathBuffer[1]; + } SymbolicLinkReparseBuffer; + struct { + USHORT SubstituteNameOffset; + USHORT SubstituteNameLength; + USHORT PrintNameOffset; + USHORT PrintNameLength; + WCHAR PathBuffer[1]; + } MountPointReparseBuffer; + struct { + UCHAR DataBuffer[1]; + } GenericReparseBuffer; + }; + } REPARSE_DATA_BUFFER; + REPARSE_DATA_BUFFER *reparse_data = NULL; + DWORD length = 0; + HANDLE handle = NULL; + wchar_t *path_wide = NULL; + wchar_t *target_path_wide = NULL; + uint8_t buffer[MAXIMUM_REPARSE_DATA_BUFFER_SIZE]; + int32_t target_path_len = 0; + int32_t target_path_idx = 0; + int32_t err = MZ_OK; + uint8_t *target_path_utf8 = NULL; + + if (path == NULL) + return MZ_PARAM_ERROR; + path_wide = mz_os_unicode_string_create(path, MZ_ENCODING_UTF8); + if (path_wide == NULL) + return MZ_PARAM_ERROR; + +#ifdef MZ_WINRT_API + CREATEFILE2_EXTENDED_PARAMETERS extended_params; + memset(&extended_params, 0, sizeof(extended_params)); + extended_params.dwSize = sizeof(extended_params); + extended_params.dwFileAttributes = FILE_ATTRIBUTE_NORMAL; + extended_params.dwFileFlags = FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT; + extended_params.dwSecurityQosFlags = SECURITY_ANONYMOUS; + extended_params.lpSecurityAttributes = NULL; + extended_params.hTemplateFile = NULL; + handle = CreateFile2(path_wide, FILE_READ_EA, FILE_SHARE_READ | FILE_SHARE_WRITE, OPEN_EXISTING, &extended_params); +#else + handle = CreateFileW(path_wide, FILE_READ_EA, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, NULL); +#endif + + if (handle == INVALID_HANDLE_VALUE) { + mz_os_unicode_string_delete(&path_wide); + return MZ_OPEN_ERROR; + } + + if (DeviceIoControl(handle, FSCTL_GET_REPARSE_POINT, NULL, 0, buffer, sizeof(buffer), &length, NULL) == TRUE) { + reparse_data = (REPARSE_DATA_BUFFER *)buffer; + if ((IsReparseTagMicrosoft(reparse_data->ReparseTag)) && + (reparse_data->ReparseTag == IO_REPARSE_TAG_SYMLINK)) { + target_path_len = max_target_path * sizeof(wchar_t); + if (target_path_len > reparse_data->SymbolicLinkReparseBuffer.PrintNameLength) + target_path_len = reparse_data->SymbolicLinkReparseBuffer.PrintNameLength; + + target_path_wide = (wchar_t *)MZ_ALLOC(target_path_len + sizeof(wchar_t)); + if (target_path_wide) { + target_path_idx = reparse_data->SymbolicLinkReparseBuffer.PrintNameOffset / sizeof(wchar_t); + memcpy(target_path_wide, &reparse_data->SymbolicLinkReparseBuffer.PathBuffer[target_path_idx], + target_path_len); + + target_path_wide[target_path_len / sizeof(wchar_t)] = 0; + target_path_utf8 = mz_os_utf8_string_create_from_unicode(target_path_wide, MZ_ENCODING_UTF8); + + if (target_path_utf8) { + strncpy(target_path, (const char *)target_path_utf8, max_target_path - 1); + target_path[max_target_path - 1] = 0; + /* Ensure directories have slash at the end so we can recreate them later */ + if (mz_os_is_dir((const char *)target_path_utf8) == MZ_OK) + mz_path_append_slash(target_path, max_target_path, MZ_PATH_SLASH_PLATFORM); + mz_os_utf8_string_delete(&target_path_utf8); + } else { + err = MZ_MEM_ERROR; + } + + MZ_FREE(target_path_wide); + } else { + err = MZ_MEM_ERROR; + } + } + } else { + err = MZ_INTERNAL_ERROR; + } + + CloseHandle(handle); + mz_os_unicode_string_delete(&path_wide); + return err; +} + +uint64_t mz_os_ms_time(void) { + SYSTEMTIME system_time; + FILETIME file_time; + uint64_t quad_file_time = 0; + + GetSystemTime(&system_time); + SystemTimeToFileTime(&system_time, &file_time); + + quad_file_time = file_time.dwLowDateTime; + quad_file_time |= ((uint64_t)file_time.dwHighDateTime << 32); + + return quad_file_time / 10000 - 11644473600000LL; +} diff --git a/Externals/minizip/mz_strm.c b/Externals/minizip/mz_strm.c new file mode 100644 index 000000000000..da7d5872d61a --- /dev/null +++ b/Externals/minizip/mz_strm.c @@ -0,0 +1,560 @@ +/* mz_strm.c -- Stream interface + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#include "mz.h" +#include "mz_strm.h" + +/***************************************************************************/ + +#define MZ_STREAM_FIND_SIZE (1024) + +/***************************************************************************/ + +int32_t mz_stream_open(void *stream, const char *path, int32_t mode) { + mz_stream *strm = (mz_stream *)stream; + if (strm == NULL || strm->vtbl == NULL || strm->vtbl->open == NULL) + return MZ_STREAM_ERROR; + return strm->vtbl->open(strm, path, mode); +} + +int32_t mz_stream_is_open(void *stream) { + mz_stream *strm = (mz_stream *)stream; + if (strm == NULL || strm->vtbl == NULL || strm->vtbl->is_open == NULL) + return MZ_STREAM_ERROR; + return strm->vtbl->is_open(strm); +} + +int32_t mz_stream_read(void *stream, void *buf, int32_t size) { + mz_stream *strm = (mz_stream *)stream; + if (strm == NULL || strm->vtbl == NULL || strm->vtbl->read == NULL) + return MZ_PARAM_ERROR; + if (mz_stream_is_open(stream) != MZ_OK) + return MZ_STREAM_ERROR; + return strm->vtbl->read(strm, buf, size); +} + +static int32_t mz_stream_read_value(void *stream, uint64_t *value, int32_t len) { + uint8_t buf[8]; + int32_t n = 0; + int32_t i = 0; + + *value = 0; + if (mz_stream_read(stream, buf, len) == len) { + for (n = 0; n < len; n += 1, i += 8) + *value += ((uint64_t)buf[n]) << i; + } else if (mz_stream_error(stream)) + return MZ_STREAM_ERROR; + else + return MZ_END_OF_STREAM; + + return MZ_OK; +} + +int32_t mz_stream_read_uint8(void *stream, uint8_t *value) { + int32_t err = MZ_OK; + uint64_t value64 = 0; + + *value = 0; + err = mz_stream_read_value(stream, &value64, sizeof(uint8_t)); + if (err == MZ_OK) + *value = (uint8_t)value64; + return err; +} + +int32_t mz_stream_read_uint16(void *stream, uint16_t *value) { + int32_t err = MZ_OK; + uint64_t value64 = 0; + + *value = 0; + err = mz_stream_read_value(stream, &value64, sizeof(uint16_t)); + if (err == MZ_OK) + *value = (uint16_t)value64; + return err; +} + +int32_t mz_stream_read_uint32(void *stream, uint32_t *value) { + int32_t err = MZ_OK; + uint64_t value64 = 0; + + *value = 0; + err = mz_stream_read_value(stream, &value64, sizeof(uint32_t)); + if (err == MZ_OK) + *value = (uint32_t)value64; + return err; +} + +int32_t mz_stream_read_int64(void *stream, int64_t *value) { + return mz_stream_read_value(stream, (uint64_t *)value, sizeof(uint64_t)); +} + +int32_t mz_stream_read_uint64(void *stream, uint64_t *value) { + return mz_stream_read_value(stream, value, sizeof(uint64_t)); +} + +int32_t mz_stream_write(void *stream, const void *buf, int32_t size) { + mz_stream *strm = (mz_stream *)stream; + if (size == 0) + return size; + if (strm == NULL || strm->vtbl == NULL || strm->vtbl->write == NULL) + return MZ_PARAM_ERROR; + if (mz_stream_is_open(stream) != MZ_OK) + return MZ_STREAM_ERROR; + return strm->vtbl->write(strm, buf, size); +} + +static int32_t mz_stream_write_value(void *stream, uint64_t value, int32_t len) { + uint8_t buf[8]; + int32_t n = 0; + + for (n = 0; n < len; n += 1) { + buf[n] = (uint8_t)(value & 0xff); + value >>= 8; + } + + if (value != 0) { + /* Data overflow - hack for ZIP64 (X Roche) */ + for (n = 0; n < len; n += 1) + buf[n] = 0xff; + } + + if (mz_stream_write(stream, buf, len) != len) + return MZ_STREAM_ERROR; + + return MZ_OK; +} + +int32_t mz_stream_write_uint8(void *stream, uint8_t value) { + return mz_stream_write_value(stream, value, sizeof(uint8_t)); +} + +int32_t mz_stream_write_uint16(void *stream, uint16_t value) { + return mz_stream_write_value(stream, value, sizeof(uint16_t)); +} + +int32_t mz_stream_write_uint32(void *stream, uint32_t value) { + return mz_stream_write_value(stream, value, sizeof(uint32_t)); +} + +int32_t mz_stream_write_int64(void *stream, int64_t value) { + return mz_stream_write_value(stream, (uint64_t)value, sizeof(uint64_t)); +} + +int32_t mz_stream_write_uint64(void *stream, uint64_t value) { + return mz_stream_write_value(stream, value, sizeof(uint64_t)); +} + +int32_t mz_stream_copy(void *target, void *source, int32_t len) { + return mz_stream_copy_stream(target, NULL, source, NULL, len); +} + +int32_t mz_stream_copy_to_end(void *target, void *source) { + return mz_stream_copy_stream_to_end(target, NULL, source, NULL); +} + +int32_t mz_stream_copy_stream(void *target, mz_stream_write_cb write_cb, void *source, + mz_stream_read_cb read_cb, int32_t len) { + uint8_t buf[16384]; + int32_t bytes_to_copy = 0; + int32_t read = 0; + int32_t written = 0; + + if (write_cb == NULL) + write_cb = mz_stream_write; + if (read_cb == NULL) + read_cb = mz_stream_read; + + while (len > 0) { + bytes_to_copy = len; + if (bytes_to_copy > (int32_t)sizeof(buf)) + bytes_to_copy = sizeof(buf); + read = read_cb(source, buf, bytes_to_copy); + if (read <= 0) + return MZ_STREAM_ERROR; + written = write_cb(target, buf, read); + if (written != read) + return MZ_STREAM_ERROR; + len -= read; + } + + return MZ_OK; +} + +int32_t mz_stream_copy_stream_to_end(void *target, mz_stream_write_cb write_cb, void *source, + mz_stream_read_cb read_cb) { + uint8_t buf[16384]; + int32_t read = 0; + int32_t written = 0; + + if (write_cb == NULL) + write_cb = mz_stream_write; + if (read_cb == NULL) + read_cb = mz_stream_read; + + read = read_cb(source, buf, sizeof(buf)); + while (read > 0) { + written = write_cb(target, buf, read); + if (written != read) + return MZ_STREAM_ERROR; + read = read_cb(source, buf, sizeof(buf)); + } + + if (read < 0) + return MZ_STREAM_ERROR; + + return MZ_OK; +} + +int64_t mz_stream_tell(void *stream) { + mz_stream *strm = (mz_stream *)stream; + if (strm == NULL || strm->vtbl == NULL || strm->vtbl->tell == NULL) + return MZ_PARAM_ERROR; + if (mz_stream_is_open(stream) != MZ_OK) + return MZ_STREAM_ERROR; + return strm->vtbl->tell(strm); +} + +int32_t mz_stream_seek(void *stream, int64_t offset, int32_t origin) { + mz_stream *strm = (mz_stream *)stream; + if (strm == NULL || strm->vtbl == NULL || strm->vtbl->seek == NULL) + return MZ_PARAM_ERROR; + if (mz_stream_is_open(stream) != MZ_OK) + return MZ_STREAM_ERROR; + if (origin == MZ_SEEK_SET && offset < 0) + return MZ_SEEK_ERROR; + return strm->vtbl->seek(strm, offset, origin); +} + +int32_t mz_stream_find(void *stream, const void *find, int32_t find_size, int64_t max_seek, int64_t *position) { + uint8_t buf[MZ_STREAM_FIND_SIZE]; + int32_t buf_pos = 0; + int32_t read_size = sizeof(buf); + int32_t read = 0; + int64_t read_pos = 0; + int64_t start_pos = 0; + int64_t disk_pos = 0; + int32_t i = 0; + uint8_t first = 1; + int32_t err = MZ_OK; + + if (stream == NULL || find == NULL || position == NULL) + return MZ_PARAM_ERROR; + if (find_size < 0 || find_size >= (int32_t)sizeof(buf)) + return MZ_PARAM_ERROR; + + *position = -1; + + start_pos = mz_stream_tell(stream); + + while (read_pos < max_seek) { + if (read_size > (int32_t)(max_seek - read_pos - buf_pos) && (max_seek - read_pos - buf_pos) < (int64_t)sizeof(buf)) + read_size = (int32_t)(max_seek - read_pos - buf_pos); + + read = mz_stream_read(stream, buf + buf_pos, read_size); + if ((read <= 0) || (read + buf_pos < find_size)) + break; + + for (i = 0; i <= read + buf_pos - find_size; i += 1) { + if (memcmp(&buf[i], find, find_size) != 0) + continue; + + disk_pos = mz_stream_tell(stream); + + /* Seek to position on disk where the data was found */ + err = mz_stream_seek(stream, disk_pos - ((int64_t)read + buf_pos - i), MZ_SEEK_SET); + if (err != MZ_OK) + return MZ_EXIST_ERROR; + + *position = start_pos + read_pos + i; + return MZ_OK; + } + + if (first) { + read -= find_size; + read_size -= find_size; + buf_pos = find_size; + first = 0; + } + + memmove(buf, buf + read, find_size); + read_pos += read; + } + + return MZ_EXIST_ERROR; +} + +int32_t mz_stream_find_reverse(void *stream, const void *find, int32_t find_size, int64_t max_seek, int64_t *position) { + uint8_t buf[MZ_STREAM_FIND_SIZE]; + int32_t buf_pos = 0; + int32_t read_size = MZ_STREAM_FIND_SIZE; + int64_t read_pos = 0; + int32_t read = 0; + int64_t start_pos = 0; + int64_t disk_pos = 0; + uint8_t first = 1; + int32_t i = 0; + int32_t err = MZ_OK; + + if (stream == NULL || find == NULL || position == NULL) + return MZ_PARAM_ERROR; + if (find_size < 0 || find_size >= (int32_t)sizeof(buf)) + return MZ_PARAM_ERROR; + + *position = -1; + + start_pos = mz_stream_tell(stream); + + while (read_pos < max_seek) { + if (read_size > (int32_t)(max_seek - read_pos) && (max_seek - read_pos) < (int64_t)sizeof(buf)) + read_size = (int32_t)(max_seek - read_pos); + + if (mz_stream_seek(stream, start_pos - (read_pos + read_size), MZ_SEEK_SET) != MZ_OK) + break; + read = mz_stream_read(stream, buf, read_size); + if ((read <= 0) || (read + buf_pos < find_size)) + break; + if (read + buf_pos < MZ_STREAM_FIND_SIZE) + memmove(buf + MZ_STREAM_FIND_SIZE - (read + buf_pos), buf, read); + + for (i = find_size; i <= (read + buf_pos); i += 1) { + if (memcmp(&buf[MZ_STREAM_FIND_SIZE - i], find, find_size) != 0) + continue; + + disk_pos = mz_stream_tell(stream); + + /* Seek to position on disk where the data was found */ + err = mz_stream_seek(stream, disk_pos + buf_pos - i, MZ_SEEK_SET); + if (err != MZ_OK) + return MZ_EXIST_ERROR; + + *position = start_pos - (read_pos - buf_pos + i); + return MZ_OK; + } + + if (first) { + read -= find_size; + read_size -= find_size; + buf_pos = find_size; + first = 0; + } + + if (read == 0) + break; + + memmove(buf + read_size, buf, find_size); + read_pos += read; + } + + return MZ_EXIST_ERROR; +} + +int32_t mz_stream_close(void *stream) { + mz_stream *strm = (mz_stream *)stream; + if (strm == NULL || strm->vtbl == NULL || strm->vtbl->close == NULL) + return MZ_PARAM_ERROR; + if (mz_stream_is_open(stream) != MZ_OK) + return MZ_STREAM_ERROR; + return strm->vtbl->close(strm); +} + +int32_t mz_stream_error(void *stream) { + mz_stream *strm = (mz_stream *)stream; + if (strm == NULL || strm->vtbl == NULL || strm->vtbl->error == NULL) + return MZ_PARAM_ERROR; + return strm->vtbl->error(strm); +} + +int32_t mz_stream_set_base(void *stream, void *base) { + mz_stream *strm = (mz_stream *)stream; + strm->base = (mz_stream *)base; + return MZ_OK; +} + +void* mz_stream_get_interface(void *stream) { + mz_stream *strm = (mz_stream *)stream; + if (strm == NULL || strm->vtbl == NULL) + return NULL; + return (void *)strm->vtbl; +} + +int32_t mz_stream_get_prop_int64(void *stream, int32_t prop, int64_t *value) { + mz_stream *strm = (mz_stream *)stream; + if (strm == NULL || strm->vtbl == NULL || strm->vtbl->get_prop_int64 == NULL) + return MZ_PARAM_ERROR; + return strm->vtbl->get_prop_int64(stream, prop, value); +} + +int32_t mz_stream_set_prop_int64(void *stream, int32_t prop, int64_t value) { + mz_stream *strm = (mz_stream *)stream; + if (strm == NULL || strm->vtbl == NULL || strm->vtbl->set_prop_int64 == NULL) + return MZ_PARAM_ERROR; + return strm->vtbl->set_prop_int64(stream, prop, value); +} + +void *mz_stream_create(void **stream, mz_stream_vtbl *vtbl) { + if (stream == NULL) + return NULL; + if (vtbl == NULL || vtbl->create == NULL) + return NULL; + return vtbl->create(stream); +} + +void mz_stream_delete(void **stream) { + mz_stream *strm = NULL; + if (stream == NULL) + return; + strm = (mz_stream *)*stream; + if (strm != NULL && strm->vtbl != NULL && strm->vtbl->destroy != NULL) + strm->vtbl->destroy(stream); + *stream = NULL; +} + +/***************************************************************************/ + +typedef struct mz_stream_raw_s { + mz_stream stream; + int64_t total_in; + int64_t total_out; + int64_t max_total_in; +} mz_stream_raw; + +/***************************************************************************/ + +int32_t mz_stream_raw_open(void *stream, const char *path, int32_t mode) { + MZ_UNUSED(stream); + MZ_UNUSED(path); + MZ_UNUSED(mode); + + return MZ_OK; +} + +int32_t mz_stream_raw_is_open(void *stream) { + mz_stream_raw *raw = (mz_stream_raw *)stream; + return mz_stream_is_open(raw->stream.base); +} + +int32_t mz_stream_raw_read(void *stream, void *buf, int32_t size) { + mz_stream_raw *raw = (mz_stream_raw *)stream; + int32_t bytes_to_read = size; + int32_t read = 0; + + if (raw->max_total_in > 0) { + if ((int64_t)bytes_to_read > (raw->max_total_in - raw->total_in)) + bytes_to_read = (int32_t)(raw->max_total_in - raw->total_in); + } + + read = mz_stream_read(raw->stream.base, buf, bytes_to_read); + + if (read > 0) { + raw->total_in += read; + raw->total_out += read; + } + + return read; +} + +int32_t mz_stream_raw_write(void *stream, const void *buf, int32_t size) { + mz_stream_raw *raw = (mz_stream_raw *)stream; + int32_t written = 0; + + written = mz_stream_write(raw->stream.base, buf, size); + + if (written > 0) { + raw->total_out += written; + raw->total_in += written; + } + + return written; +} + +int64_t mz_stream_raw_tell(void *stream) { + mz_stream_raw *raw = (mz_stream_raw *)stream; + return mz_stream_tell(raw->stream.base); +} + +int32_t mz_stream_raw_seek(void *stream, int64_t offset, int32_t origin) { + mz_stream_raw *raw = (mz_stream_raw *)stream; + return mz_stream_seek(raw->stream.base, offset, origin); +} + +int32_t mz_stream_raw_close(void *stream) { + MZ_UNUSED(stream); + return MZ_OK; +} + +int32_t mz_stream_raw_error(void *stream) { + mz_stream_raw *raw = (mz_stream_raw *)stream; + return mz_stream_error(raw->stream.base); +} + +int32_t mz_stream_raw_get_prop_int64(void *stream, int32_t prop, int64_t *value) { + mz_stream_raw *raw = (mz_stream_raw *)stream; + switch (prop) { + case MZ_STREAM_PROP_TOTAL_IN: + *value = raw->total_in; + return MZ_OK; + case MZ_STREAM_PROP_TOTAL_OUT: + *value = raw->total_out; + return MZ_OK; + } + return MZ_EXIST_ERROR; +} + +int32_t mz_stream_raw_set_prop_int64(void *stream, int32_t prop, int64_t value) { + mz_stream_raw *raw = (mz_stream_raw *)stream; + switch (prop) { + case MZ_STREAM_PROP_TOTAL_IN_MAX: + raw->max_total_in = value; + return MZ_OK; + } + return MZ_EXIST_ERROR; +} + +/***************************************************************************/ + +static mz_stream_vtbl mz_stream_raw_vtbl = { + mz_stream_raw_open, + mz_stream_raw_is_open, + mz_stream_raw_read, + mz_stream_raw_write, + mz_stream_raw_tell, + mz_stream_raw_seek, + mz_stream_raw_close, + mz_stream_raw_error, + mz_stream_raw_create, + mz_stream_raw_delete, + mz_stream_raw_get_prop_int64, + mz_stream_raw_set_prop_int64 +}; + +/***************************************************************************/ + +void *mz_stream_raw_create(void **stream) { + mz_stream_raw *raw = NULL; + + raw = (mz_stream_raw *)MZ_ALLOC(sizeof(mz_stream_raw)); + if (raw != NULL) { + memset(raw, 0, sizeof(mz_stream_raw)); + raw->stream.vtbl = &mz_stream_raw_vtbl; + } + if (stream != NULL) + *stream = raw; + + return raw; +} + +void mz_stream_raw_delete(void **stream) { + mz_stream_raw *raw = NULL; + if (stream == NULL) + return; + raw = (mz_stream_raw *)*stream; + if (raw != NULL) + MZ_FREE(raw); + *stream = NULL; +} diff --git a/Externals/minizip/mz_strm.h b/Externals/minizip/mz_strm.h new file mode 100644 index 000000000000..8b0027cf5038 --- /dev/null +++ b/Externals/minizip/mz_strm.h @@ -0,0 +1,132 @@ +/* mz_strm.h -- Stream interface + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_STREAM_H +#define MZ_STREAM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +#define MZ_STREAM_PROP_TOTAL_IN (1) +#define MZ_STREAM_PROP_TOTAL_IN_MAX (2) +#define MZ_STREAM_PROP_TOTAL_OUT (3) +#define MZ_STREAM_PROP_TOTAL_OUT_MAX (4) +#define MZ_STREAM_PROP_HEADER_SIZE (5) +#define MZ_STREAM_PROP_FOOTER_SIZE (6) +#define MZ_STREAM_PROP_DISK_SIZE (7) +#define MZ_STREAM_PROP_DISK_NUMBER (8) +#define MZ_STREAM_PROP_COMPRESS_LEVEL (9) +#define MZ_STREAM_PROP_COMPRESS_METHOD (10) +#define MZ_STREAM_PROP_COMPRESS_WINDOW (11) + +/***************************************************************************/ + +typedef int32_t (*mz_stream_open_cb) (void *stream, const char *path, int32_t mode); +typedef int32_t (*mz_stream_is_open_cb) (void *stream); +typedef int32_t (*mz_stream_read_cb) (void *stream, void *buf, int32_t size); +typedef int32_t (*mz_stream_write_cb) (void *stream, const void *buf, int32_t size); +typedef int64_t (*mz_stream_tell_cb) (void *stream); +typedef int32_t (*mz_stream_seek_cb) (void *stream, int64_t offset, int32_t origin); +typedef int32_t (*mz_stream_close_cb) (void *stream); +typedef int32_t (*mz_stream_error_cb) (void *stream); +typedef void* (*mz_stream_create_cb) (void **stream); +typedef void (*mz_stream_destroy_cb) (void **stream); + +typedef int32_t (*mz_stream_get_prop_int64_cb) (void *stream, int32_t prop, int64_t *value); +typedef int32_t (*mz_stream_set_prop_int64_cb) (void *stream, int32_t prop, int64_t value); + +typedef int32_t (*mz_stream_find_cb) (void *stream, const void *find, int32_t find_size, + int64_t max_seek, int64_t *position); + +/***************************************************************************/ + +typedef struct mz_stream_vtbl_s { + mz_stream_open_cb open; + mz_stream_is_open_cb is_open; + mz_stream_read_cb read; + mz_stream_write_cb write; + mz_stream_tell_cb tell; + mz_stream_seek_cb seek; + mz_stream_close_cb close; + mz_stream_error_cb error; + mz_stream_create_cb create; + mz_stream_destroy_cb destroy; + + mz_stream_get_prop_int64_cb get_prop_int64; + mz_stream_set_prop_int64_cb set_prop_int64; +} mz_stream_vtbl; + +typedef struct mz_stream_s { + mz_stream_vtbl *vtbl; + struct mz_stream_s *base; +} mz_stream; + +/***************************************************************************/ + +int32_t mz_stream_open(void *stream, const char *path, int32_t mode); +int32_t mz_stream_is_open(void *stream); +int32_t mz_stream_read(void *stream, void *buf, int32_t size); +int32_t mz_stream_read_uint8(void *stream, uint8_t *value); +int32_t mz_stream_read_uint16(void *stream, uint16_t *value); +int32_t mz_stream_read_uint32(void *stream, uint32_t *value); +int32_t mz_stream_read_int64(void *stream, int64_t *value); +int32_t mz_stream_read_uint64(void *stream, uint64_t *value); +int32_t mz_stream_write(void *stream, const void *buf, int32_t size); +int32_t mz_stream_write_uint8(void *stream, uint8_t value); +int32_t mz_stream_write_uint16(void *stream, uint16_t value); +int32_t mz_stream_write_uint32(void *stream, uint32_t value); +int32_t mz_stream_write_int64(void *stream, int64_t value); +int32_t mz_stream_write_uint64(void *stream, uint64_t value); +int32_t mz_stream_copy(void *target, void *source, int32_t len); +int32_t mz_stream_copy_to_end(void *target, void *source); +int32_t mz_stream_copy_stream(void *target, mz_stream_write_cb write_cb, void *source, mz_stream_read_cb read_cb, int32_t len); +int32_t mz_stream_copy_stream_to_end(void *target, mz_stream_write_cb write_cb, void *source, mz_stream_read_cb read_cb); +int64_t mz_stream_tell(void *stream); +int32_t mz_stream_seek(void *stream, int64_t offset, int32_t origin); +int32_t mz_stream_find(void *stream, const void *find, int32_t find_size, int64_t max_seek, int64_t *position); +int32_t mz_stream_find_reverse(void *stream, const void *find, int32_t find_size, int64_t max_seek, int64_t *position); +int32_t mz_stream_close(void *stream); +int32_t mz_stream_error(void *stream); + +int32_t mz_stream_set_base(void *stream, void *base); +void* mz_stream_get_interface(void *stream); +int32_t mz_stream_get_prop_int64(void *stream, int32_t prop, int64_t *value); +int32_t mz_stream_set_prop_int64(void *stream, int32_t prop, int64_t value); + +void* mz_stream_create(void **stream, mz_stream_vtbl *vtbl); +void mz_stream_delete(void **stream); + +/***************************************************************************/ + +int32_t mz_stream_raw_open(void *stream, const char *filename, int32_t mode); +int32_t mz_stream_raw_is_open(void *stream); +int32_t mz_stream_raw_read(void *stream, void *buf, int32_t size); +int32_t mz_stream_raw_write(void *stream, const void *buf, int32_t size); +int64_t mz_stream_raw_tell(void *stream); +int32_t mz_stream_raw_seek(void *stream, int64_t offset, int32_t origin); +int32_t mz_stream_raw_close(void *stream); +int32_t mz_stream_raw_error(void *stream); + +int32_t mz_stream_raw_get_prop_int64(void *stream, int32_t prop, int64_t *value); +int32_t mz_stream_raw_set_prop_int64(void *stream, int32_t prop, int64_t value); + +void* mz_stream_raw_create(void **stream); +void mz_stream_raw_delete(void **stream); + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/mz_strm_buf.c b/Externals/minizip/mz_strm_buf.c new file mode 100644 index 000000000000..1dfdfdf5fd8c --- /dev/null +++ b/Externals/minizip/mz_strm_buf.c @@ -0,0 +1,385 @@ +/* mz_strm_buf.c -- Stream for buffering reads/writes + part of the minizip-ng project + + This version of ioapi is designed to buffer IO. + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#include "mz.h" +#include "mz_strm.h" +#include "mz_strm_buf.h" + +/***************************************************************************/ + +static mz_stream_vtbl mz_stream_buffered_vtbl = { + mz_stream_buffered_open, + mz_stream_buffered_is_open, + mz_stream_buffered_read, + mz_stream_buffered_write, + mz_stream_buffered_tell, + mz_stream_buffered_seek, + mz_stream_buffered_close, + mz_stream_buffered_error, + mz_stream_buffered_create, + mz_stream_buffered_delete, + NULL, + NULL +}; + +/***************************************************************************/ + +typedef struct mz_stream_buffered_s { + mz_stream stream; + int32_t error; + char readbuf[INT16_MAX]; + int32_t readbuf_len; + int32_t readbuf_pos; + int32_t readbuf_hits; + int32_t readbuf_misses; + char writebuf[INT16_MAX]; + int32_t writebuf_len; + int32_t writebuf_pos; + int32_t writebuf_hits; + int32_t writebuf_misses; + int64_t position; +} mz_stream_buffered; + +/***************************************************************************/ + +#if 0 +# define mz_stream_buffered_print printf +#else +# define mz_stream_buffered_print(fmt,...) +#endif + +/***************************************************************************/ + +static int32_t mz_stream_buffered_reset(void *stream) { + mz_stream_buffered *buffered = (mz_stream_buffered *)stream; + + buffered->readbuf_len = 0; + buffered->readbuf_pos = 0; + buffered->writebuf_len = 0; + buffered->writebuf_pos = 0; + buffered->position = 0; + + return MZ_OK; +} + +int32_t mz_stream_buffered_open(void *stream, const char *path, int32_t mode) { + mz_stream_buffered *buffered = (mz_stream_buffered *)stream; + mz_stream_buffered_print("Buffered - Open (mode %" PRId32 ")\n", mode); + mz_stream_buffered_reset(buffered); + return mz_stream_open(buffered->stream.base, path, mode); +} + +int32_t mz_stream_buffered_is_open(void *stream) { + mz_stream_buffered *buffered = (mz_stream_buffered *)stream; + return mz_stream_is_open(buffered->stream.base); +} + +static int32_t mz_stream_buffered_flush(void *stream, int32_t *written) { + mz_stream_buffered *buffered = (mz_stream_buffered *)stream; + int32_t total_bytes_written = 0; + int32_t bytes_to_write = buffered->writebuf_len; + int32_t bytes_left_to_write = buffered->writebuf_len; + int32_t bytes_written = 0; + + *written = 0; + + while (bytes_left_to_write > 0) { + bytes_written = mz_stream_write(buffered->stream.base, + buffered->writebuf + (bytes_to_write - bytes_left_to_write), bytes_left_to_write); + + if (bytes_written != bytes_left_to_write) + return MZ_WRITE_ERROR; + + buffered->writebuf_misses += 1; + + mz_stream_buffered_print("Buffered - Write flush (%" PRId32 ":%" PRId32 " len %" PRId32 ")\n", + bytes_to_write, bytes_left_to_write, buffered->writebuf_len); + + total_bytes_written += bytes_written; + bytes_left_to_write -= bytes_written; + buffered->position += bytes_written; + } + + buffered->writebuf_len = 0; + buffered->writebuf_pos = 0; + + *written = total_bytes_written; + return MZ_OK; +} + +int32_t mz_stream_buffered_read(void *stream, void *buf, int32_t size) { + mz_stream_buffered *buffered = (mz_stream_buffered *)stream; + int32_t buf_len = 0; + int32_t bytes_to_read = 0; + int32_t bytes_to_copy = 0; + int32_t bytes_left_to_read = size; + int32_t bytes_read = 0; + int32_t bytes_flushed = 0; + + mz_stream_buffered_print("Buffered - Read (size %" PRId32 " pos %" PRId64 ")\n", size, buffered->position); + + if (buffered->writebuf_len > 0) { + int64_t position = buffered->position + buffered->writebuf_pos + + mz_stream_buffered_print("Buffered - Switch from write to read, flushing (pos %" PRId64 ")\n", position); + + mz_stream_buffered_flush(stream, &bytes_flushed); + mz_stream_buffered_seek(stream, position, MZ_SEEK_SET); + } + + while (bytes_left_to_read > 0) { + if ((buffered->readbuf_len == 0) || (buffered->readbuf_pos == buffered->readbuf_len)) { + if (buffered->readbuf_len == sizeof(buffered->readbuf)) { + buffered->readbuf_pos = 0; + buffered->readbuf_len = 0; + } + + bytes_to_read = (int32_t)sizeof(buffered->readbuf) - (buffered->readbuf_len - buffered->readbuf_pos); + bytes_read = mz_stream_read(buffered->stream.base, buffered->readbuf + buffered->readbuf_pos, bytes_to_read); + if (bytes_read < 0) + return bytes_read; + + buffered->readbuf_misses += 1; + buffered->readbuf_len += bytes_read; + buffered->position += bytes_read; + + mz_stream_buffered_print("Buffered - Filled (read %" PRId32 "/%" PRId32 " buf %" PRId32 ":%" PRId32 " pos %" PRId64 ")\n", + bytes_read, bytes_to_read, buffered->readbuf_pos, buffered->readbuf_len, buffered->position); + + if (bytes_read == 0) + break; + } + + if ((buffered->readbuf_len - buffered->readbuf_pos) > 0) { + bytes_to_copy = buffered->readbuf_len - buffered->readbuf_pos; + if (bytes_to_copy > bytes_left_to_read) + bytes_to_copy = bytes_left_to_read; + + memcpy((char *)buf + buf_len, buffered->readbuf + buffered->readbuf_pos, bytes_to_copy); + + buf_len += bytes_to_copy; + bytes_left_to_read -= bytes_to_copy; + + buffered->readbuf_hits += 1; + buffered->readbuf_pos += bytes_to_copy; + + mz_stream_buffered_print("Buffered - Emptied (copied %" PRId32 " remaining %" PRId32 " buf %" PRId32 ":%" PRId32 " pos %" PRId64 ")\n", + bytes_to_copy, bytes_left_to_read, buffered->readbuf_pos, buffered->readbuf_len, buffered->position); + } + } + + return size - bytes_left_to_read; +} + +int32_t mz_stream_buffered_write(void *stream, const void *buf, int32_t size) { + mz_stream_buffered *buffered = (mz_stream_buffered *)stream; + int32_t bytes_to_write = size; + int32_t bytes_left_to_write = size; + int32_t bytes_to_copy = 0; + int32_t bytes_used = 0; + int32_t bytes_flushed = 0; + int32_t err = MZ_OK; + + + mz_stream_buffered_print("Buffered - Write (size %" PRId32 " len %" PRId32 " pos %" PRId64 ")\n", + size, buffered->writebuf_len, buffered->position); + + if (buffered->readbuf_len > 0) { + buffered->position -= buffered->readbuf_len; + buffered->position += buffered->readbuf_pos; + + buffered->readbuf_len = 0; + buffered->readbuf_pos = 0; + + mz_stream_buffered_print("Buffered - Switch from read to write (pos %" PRId64 ")\n", buffered->position); + + err = mz_stream_seek(buffered->stream.base, buffered->position, MZ_SEEK_SET); + if (err != MZ_OK) + return err; + } + + while (bytes_left_to_write > 0) { + bytes_used = buffered->writebuf_len; + if (bytes_used > buffered->writebuf_pos) + bytes_used = buffered->writebuf_pos; + bytes_to_copy = (int32_t)sizeof(buffered->writebuf) - bytes_used; + if (bytes_to_copy > bytes_left_to_write) + bytes_to_copy = bytes_left_to_write; + + if (bytes_to_copy == 0) { + err = mz_stream_buffered_flush(stream, &bytes_flushed); + if (err != MZ_OK) + return err; + if (bytes_flushed == 0) + return 0; + + continue; + } + + memcpy(buffered->writebuf + buffered->writebuf_pos, + (const char *)buf + (bytes_to_write - bytes_left_to_write), bytes_to_copy); + + mz_stream_buffered_print("Buffered - Write copy (remaining %" PRId32 " write %" PRId32 ":%" PRId32 " len %" PRId32 ")\n", + bytes_to_copy, bytes_to_write, bytes_left_to_write, buffered->writebuf_len); + + bytes_left_to_write -= bytes_to_copy; + + buffered->writebuf_pos += bytes_to_copy; + buffered->writebuf_hits += 1; + if (buffered->writebuf_pos > buffered->writebuf_len) + buffered->writebuf_len += buffered->writebuf_pos - buffered->writebuf_len; + } + + return size - bytes_left_to_write; +} + +int64_t mz_stream_buffered_tell(void *stream) { + mz_stream_buffered *buffered = (mz_stream_buffered *)stream; + int64_t position = mz_stream_tell(buffered->stream.base); + + buffered->position = position; + + mz_stream_buffered_print("Buffered - Tell (pos %" PRId64 " readpos %" PRId32 " writepos %" PRId32 ")\n", + buffered->position, buffered->readbuf_pos, buffered->writebuf_pos); + + if (buffered->readbuf_len > 0) + position -= ((int64_t)buffered->readbuf_len - buffered->readbuf_pos); + if (buffered->writebuf_len > 0) + position += buffered->writebuf_pos; + return position; +} + +int32_t mz_stream_buffered_seek(void *stream, int64_t offset, int32_t origin) { + mz_stream_buffered *buffered = (mz_stream_buffered *)stream; + int32_t bytes_flushed = 0; + int32_t err = MZ_OK; + + mz_stream_buffered_print("Buffered - Seek (origin %" PRId32 " offset %" PRId64 " pos %" PRId64 ")\n", + origin, offset, buffered->position); + + switch (origin) { + case MZ_SEEK_SET: + + if ((buffered->readbuf_len > 0) && (offset < buffered->position) && + (offset >= buffered->position - buffered->readbuf_len)) { + buffered->readbuf_pos = (int32_t)(offset - (buffered->position - buffered->readbuf_len)); + return MZ_OK; + } + if (buffered->writebuf_len > 0) { + if ((offset >= buffered->position) && (offset <= buffered->position + buffered->writebuf_len)) { + buffered->writebuf_pos = (int32_t)(offset - buffered->position); + return MZ_OK; + } + } + + err = mz_stream_buffered_flush(stream, &bytes_flushed); + if (err != MZ_OK) + return err; + + buffered->position = offset; + break; + + case MZ_SEEK_CUR: + + if (buffered->readbuf_len > 0) { + if (offset <= ((int64_t)buffered->readbuf_len - buffered->readbuf_pos)) { + buffered->readbuf_pos += (uint32_t)offset; + return MZ_OK; + } + offset -= ((int64_t)buffered->readbuf_len - buffered->readbuf_pos); + buffered->position += offset; + } + if (buffered->writebuf_len > 0) { + if (offset <= ((int64_t)buffered->writebuf_len - buffered->writebuf_pos)) { + buffered->writebuf_pos += (uint32_t)offset; + return MZ_OK; + } + /* offset -= (buffered->writebuf_len - buffered->writebuf_pos); */ + } + + err = mz_stream_buffered_flush(stream, &bytes_flushed); + if (err != MZ_OK) + return err; + + break; + + case MZ_SEEK_END: + + if (buffered->writebuf_len > 0) { + buffered->writebuf_pos = buffered->writebuf_len; + return MZ_OK; + } + break; + } + + buffered->readbuf_len = 0; + buffered->readbuf_pos = 0; + buffered->writebuf_len = 0; + buffered->writebuf_pos = 0; + + return mz_stream_seek(buffered->stream.base, offset, origin); +} + +int32_t mz_stream_buffered_close(void *stream) { + mz_stream_buffered *buffered = (mz_stream_buffered *)stream; + int32_t bytes_flushed = 0; + + mz_stream_buffered_flush(stream, &bytes_flushed); + mz_stream_buffered_print("Buffered - Close (flushed %" PRId32 ")\n", bytes_flushed); + + if (buffered->readbuf_hits + buffered->readbuf_misses > 0) { + mz_stream_buffered_print("Buffered - Read efficiency %.02f%%\n", + (buffered->readbuf_hits / ((float)buffered->readbuf_hits + buffered->readbuf_misses)) * 100); + } + + if (buffered->writebuf_hits + buffered->writebuf_misses > 0) { + mz_stream_buffered_print("Buffered - Write efficiency %.02f%%\n", + (buffered->writebuf_hits / ((float)buffered->writebuf_hits + buffered->writebuf_misses)) * 100); + } + + mz_stream_buffered_reset(buffered); + + return mz_stream_close(buffered->stream.base); +} + +int32_t mz_stream_buffered_error(void *stream) { + mz_stream_buffered *buffered = (mz_stream_buffered *)stream; + return mz_stream_error(buffered->stream.base); +} + +void *mz_stream_buffered_create(void **stream) { + mz_stream_buffered *buffered = NULL; + + buffered = (mz_stream_buffered *)MZ_ALLOC(sizeof(mz_stream_buffered)); + if (buffered != NULL) { + memset(buffered, 0, sizeof(mz_stream_buffered)); + buffered->stream.vtbl = &mz_stream_buffered_vtbl; + } + if (stream != NULL) + *stream = buffered; + + return buffered; +} + +void mz_stream_buffered_delete(void **stream) { + mz_stream_buffered *buffered = NULL; + if (stream == NULL) + return; + buffered = (mz_stream_buffered *)*stream; + if (buffered != NULL) + MZ_FREE(buffered); + *stream = NULL; +} + +void *mz_stream_buffered_get_interface(void) { + return (void *)&mz_stream_buffered_vtbl; +} diff --git a/Externals/minizip/mz_strm_buf.h b/Externals/minizip/mz_strm_buf.h new file mode 100644 index 000000000000..b71e6e4e9200 --- /dev/null +++ b/Externals/minizip/mz_strm_buf.h @@ -0,0 +1,42 @@ +/* mz_strm_buf.h -- Stream for buffering reads/writes + part of the minizip-ng project + + This version of ioapi is designed to buffer IO. + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_STREAM_BUFFERED_H +#define MZ_STREAM_BUFFERED_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +int32_t mz_stream_buffered_open(void *stream, const char *path, int32_t mode); +int32_t mz_stream_buffered_is_open(void *stream); +int32_t mz_stream_buffered_read(void *stream, void *buf, int32_t size); +int32_t mz_stream_buffered_write(void *stream, const void *buf, int32_t size); +int64_t mz_stream_buffered_tell(void *stream); +int32_t mz_stream_buffered_seek(void *stream, int64_t offset, int32_t origin); +int32_t mz_stream_buffered_close(void *stream); +int32_t mz_stream_buffered_error(void *stream); + +void* mz_stream_buffered_create(void **stream); +void mz_stream_buffered_delete(void **stream); + +void* mz_stream_buffered_get_interface(void); + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/mz_strm_bzip.c b/Externals/minizip/mz_strm_bzip.c new file mode 100644 index 000000000000..31d8bf9a5e65 --- /dev/null +++ b/Externals/minizip/mz_strm_bzip.c @@ -0,0 +1,374 @@ +/* mz_strm_bzip.c -- Stream for bzip inflate/deflate + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" +#include "mz_strm.h" +#include "mz_strm_bzip.h" + +#include "bzlib.h" + +/***************************************************************************/ + +static mz_stream_vtbl mz_stream_bzip_vtbl = { + mz_stream_bzip_open, + mz_stream_bzip_is_open, + mz_stream_bzip_read, + mz_stream_bzip_write, + mz_stream_bzip_tell, + mz_stream_bzip_seek, + mz_stream_bzip_close, + mz_stream_bzip_error, + mz_stream_bzip_create, + mz_stream_bzip_delete, + mz_stream_bzip_get_prop_int64, + mz_stream_bzip_set_prop_int64 +}; + +/***************************************************************************/ + +typedef struct mz_stream_bzip_s { + mz_stream stream; + bz_stream bzstream; + int32_t mode; + int32_t error; + uint8_t buffer[INT16_MAX]; + int32_t buffer_len; + int16_t stream_end; + int64_t total_in; + int64_t total_out; + int64_t max_total_in; + int8_t initialized; + int16_t level; +} mz_stream_bzip; + +/***************************************************************************/ + +int32_t mz_stream_bzip_open(void *stream, const char *path, int32_t mode) { + mz_stream_bzip *bzip = (mz_stream_bzip *)stream; + + MZ_UNUSED(path); + + bzip->bzstream.bzalloc = 0; + bzip->bzstream.bzfree = 0; + bzip->bzstream.opaque = 0; + bzip->bzstream.total_in_lo32 = 0; + bzip->bzstream.total_in_hi32 = 0; + bzip->bzstream.total_out_lo32 = 0; + bzip->bzstream.total_out_hi32 = 0; + + bzip->total_in = 0; + bzip->total_out = 0; + + if (mode & MZ_OPEN_MODE_WRITE) { +#ifdef MZ_ZIP_NO_COMPRESSION + return MZ_SUPPORT_ERROR; +#else + bzip->bzstream.next_out = (char *)bzip->buffer; + bzip->bzstream.avail_out = sizeof(bzip->buffer); + + bzip->error = BZ2_bzCompressInit(&bzip->bzstream, bzip->level, 0, 0); +#endif + } else if (mode & MZ_OPEN_MODE_READ) { +#ifdef MZ_ZIP_NO_DECOMPRESSION + return MZ_SUPPORT_ERROR; +#else + bzip->bzstream.next_in = (char *)bzip->buffer; + bzip->bzstream.avail_in = 0; + + bzip->error = BZ2_bzDecompressInit(&bzip->bzstream, 0, 0); +#endif + } + + if (bzip->error != BZ_OK) + return MZ_OPEN_ERROR; + + bzip->initialized = 1; + bzip->stream_end = 0; + bzip->mode = mode; + return MZ_OK; +} + +int32_t mz_stream_bzip_is_open(void *stream) { + mz_stream_bzip *bzip = (mz_stream_bzip *)stream; + if (bzip->initialized != 1) + return MZ_OPEN_ERROR; + return MZ_OK; +} + +int32_t mz_stream_bzip_read(void *stream, void *buf, int32_t size) { +#ifdef MZ_ZIP_NO_DECOMPRESSION + MZ_UNUSED(stream); + MZ_UNUSED(buf); + MZ_UNUSED(size); + return MZ_SUPPORT_ERROR; +#else + mz_stream_bzip *bzip = (mz_stream_bzip *)stream; + uint64_t total_in_before = 0; + uint64_t total_out_before = 0; + uint64_t total_in_after = 0; + uint64_t total_out_after = 0; + int32_t total_in = 0; + int32_t total_out = 0; + int32_t in_bytes = 0; + int32_t out_bytes = 0; + int32_t bytes_to_read = sizeof(bzip->buffer); + int32_t read = 0; + int32_t err = BZ_OK; + + + if (bzip->stream_end) + return 0; + + bzip->bzstream.next_out = (char *)buf; + bzip->bzstream.avail_out = (unsigned int)size; + + do { + if (bzip->bzstream.avail_in == 0) { + if (bzip->max_total_in > 0) { + if ((int64_t)bytes_to_read > (bzip->max_total_in - bzip->total_in)) + bytes_to_read = (int32_t)(bzip->max_total_in - bzip->total_in); + } + + read = mz_stream_read(bzip->stream.base, bzip->buffer, bytes_to_read); + + if (read < 0) + return read; + + bzip->bzstream.next_in = (char *)bzip->buffer; + bzip->bzstream.avail_in = (uint32_t)read; + } + + total_in_before = bzip->bzstream.avail_in; + total_out_before = bzip->bzstream.total_out_lo32 + + (((uint64_t)bzip->bzstream.total_out_hi32) << 32); + + err = BZ2_bzDecompress(&bzip->bzstream); + + total_in_after = bzip->bzstream.avail_in; + total_out_after = bzip->bzstream.total_out_lo32 + + (((uint64_t)bzip->bzstream.total_out_hi32) << 32); + + in_bytes = (int32_t)(total_in_before - total_in_after); + out_bytes = (int32_t)(total_out_after - total_out_before); + + total_in += in_bytes; + total_out += out_bytes; + + bzip->total_in += in_bytes; + bzip->total_out += out_bytes; + + if (err == BZ_STREAM_END) { + bzip->stream_end = 1; + break; + } + if (err != BZ_OK && err != BZ_RUN_OK) { + bzip->error = err; + break; + } + } while (bzip->bzstream.avail_out > 0); + + if (bzip->error != 0) + return MZ_DATA_ERROR; + + return total_out; +#endif +} + +#ifndef MZ_ZIP_NO_COMPRESSION +static int32_t mz_stream_bzip_flush(void *stream) { + mz_stream_bzip *bzip = (mz_stream_bzip *)stream; + if (mz_stream_write(bzip->stream.base, bzip->buffer, bzip->buffer_len) != bzip->buffer_len) + return MZ_WRITE_ERROR; + return MZ_OK; +} + +static int32_t mz_stream_bzip_compress(void *stream, int flush) { + mz_stream_bzip *bzip = (mz_stream_bzip *)stream; + uint64_t total_out_before = 0; + uint64_t total_out_after = 0; + uint32_t out_bytes = 0; + int32_t err = BZ_OK; + + do { + if (bzip->bzstream.avail_out == 0) { + err = mz_stream_bzip_flush(bzip); + if (err != MZ_OK) + return err; + + bzip->bzstream.avail_out = sizeof(bzip->buffer); + bzip->bzstream.next_out = (char *)bzip->buffer; + + bzip->buffer_len = 0; + } + + total_out_before = bzip->bzstream.total_out_lo32 + + (((uint64_t)bzip->bzstream.total_out_hi32) << 32); + + err = BZ2_bzCompress(&bzip->bzstream, flush); + + total_out_after = bzip->bzstream.total_out_lo32 + + (((uint64_t)bzip->bzstream.total_out_hi32) << 32); + + out_bytes = (uint32_t)(total_out_after - total_out_before); + + bzip->buffer_len += out_bytes; + bzip->total_out += out_bytes; + + if (err == BZ_STREAM_END) + break; + if (err < 0) { + bzip->error = err; + return MZ_DATA_ERROR; + } + } while ((bzip->bzstream.avail_in > 0) || (flush == BZ_FINISH && err == BZ_FINISH_OK)); + + return MZ_OK; +} +#endif + +int32_t mz_stream_bzip_write(void *stream, const void *buf, int32_t size) { +#ifdef MZ_ZIP_NO_COMPRESSION + MZ_UNUSED(stream); + MZ_UNUSED(buf); + MZ_UNUSED(size); + return MZ_SUPPORT_ERROR; +#else + mz_stream_bzip *bzip = (mz_stream_bzip *)stream; + int32_t err = MZ_OK; + + bzip->bzstream.next_in = (char *)(intptr_t)buf; + bzip->bzstream.avail_in = (unsigned int)size; + + err = mz_stream_bzip_compress(stream, BZ_RUN); + if (err != MZ_OK) { + return err; + } + + bzip->total_in += size; + return size; +#endif +} + +int64_t mz_stream_bzip_tell(void *stream) { + MZ_UNUSED(stream); + + return MZ_TELL_ERROR; +} + +int32_t mz_stream_bzip_seek(void *stream, int64_t offset, int32_t origin) { + MZ_UNUSED(stream); + MZ_UNUSED(offset); + MZ_UNUSED(origin); + + return MZ_SEEK_ERROR; +} + +int32_t mz_stream_bzip_close(void *stream) { + mz_stream_bzip *bzip = (mz_stream_bzip *)stream; + + if (bzip->mode & MZ_OPEN_MODE_WRITE) { +#ifdef MZ_ZIP_NO_COMPRESSION + return MZ_SUPPORT_ERROR; +#else + mz_stream_bzip_compress(stream, BZ_FINISH); + mz_stream_bzip_flush(stream); + + BZ2_bzCompressEnd(&bzip->bzstream); +#endif + } else if (bzip->mode & MZ_OPEN_MODE_READ) { +#ifdef MZ_ZIP_NO_DECOMPRESSION + return MZ_SUPPORT_ERROR; +#else + BZ2_bzDecompressEnd(&bzip->bzstream); +#endif + } + + bzip->initialized = 0; + + if (bzip->error != BZ_OK) + return MZ_CLOSE_ERROR; + return MZ_OK; +} + +int32_t mz_stream_bzip_error(void *stream) { + mz_stream_bzip *bzip = (mz_stream_bzip *)stream; + return bzip->error; +} + +int32_t mz_stream_bzip_get_prop_int64(void *stream, int32_t prop, int64_t *value) { + mz_stream_bzip *bzip = (mz_stream_bzip *)stream; + switch (prop) { + case MZ_STREAM_PROP_TOTAL_IN: + *value = bzip->total_in; + break; + case MZ_STREAM_PROP_TOTAL_IN_MAX: + *value = bzip->max_total_in; + break; + case MZ_STREAM_PROP_TOTAL_OUT: + *value = bzip->total_out; + break; + case MZ_STREAM_PROP_HEADER_SIZE: + *value = 0; + break; + default: + return MZ_EXIST_ERROR; + } + return MZ_OK; +} + +int32_t mz_stream_bzip_set_prop_int64(void *stream, int32_t prop, int64_t value) { + mz_stream_bzip *bzip = (mz_stream_bzip *)stream; + switch (prop) { + case MZ_STREAM_PROP_COMPRESS_LEVEL: + if (value < 0) + bzip->level = 6; + else + bzip->level = (int16_t)value; + return MZ_OK; + case MZ_STREAM_PROP_TOTAL_IN_MAX: + bzip->max_total_in = value; + return MZ_OK; + } + return MZ_EXIST_ERROR; +} + +void *mz_stream_bzip_create(void **stream) { + mz_stream_bzip *bzip = NULL; + + bzip = (mz_stream_bzip *)MZ_ALLOC(sizeof(mz_stream_bzip)); + if (bzip != NULL) { + memset(bzip, 0, sizeof(mz_stream_bzip)); + bzip->stream.vtbl = &mz_stream_bzip_vtbl; + bzip->level = 6; + } + if (stream != NULL) + *stream = bzip; + + return bzip; +} + +void mz_stream_bzip_delete(void **stream) { + mz_stream_bzip *bzip = NULL; + if (stream == NULL) + return; + bzip = (mz_stream_bzip *)*stream; + if (bzip != NULL) + MZ_FREE(bzip); + *stream = NULL; +} + +void *mz_stream_bzip_get_interface(void) { + return (void *)&mz_stream_bzip_vtbl; +} + +extern void bz_internal_error(int errcode) { + MZ_UNUSED(errcode); +} diff --git a/Externals/minizip/mz_strm_bzip.h b/Externals/minizip/mz_strm_bzip.h new file mode 100644 index 000000000000..71b2b380baa7 --- /dev/null +++ b/Externals/minizip/mz_strm_bzip.h @@ -0,0 +1,45 @@ +/* mz_strm_bzip.h -- Stream for bzip inflate/deflate + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_STREAM_BZIP_H +#define MZ_STREAM_BZIP_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +int32_t mz_stream_bzip_open(void *stream, const char *filename, int32_t mode); +int32_t mz_stream_bzip_is_open(void *stream); +int32_t mz_stream_bzip_read(void *stream, void *buf, int32_t size); +int32_t mz_stream_bzip_write(void *stream, const void *buf, int32_t size); +int64_t mz_stream_bzip_tell(void *stream); +int32_t mz_stream_bzip_seek(void *stream, int64_t offset, int32_t origin); +int32_t mz_stream_bzip_close(void *stream); +int32_t mz_stream_bzip_error(void *stream); + +int32_t mz_stream_bzip_get_prop_int64(void *stream, int32_t prop, int64_t *value); +int32_t mz_stream_bzip_set_prop_int64(void *stream, int32_t prop, int64_t value); + +void* mz_stream_bzip_create(void **stream); +void mz_stream_bzip_delete(void **stream); + +void* mz_stream_bzip_get_interface(void); + +void bz_internal_error(int errcode); + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/mz_strm_libcomp.c b/Externals/minizip/mz_strm_libcomp.c new file mode 100644 index 000000000000..27eb93345384 --- /dev/null +++ b/Externals/minizip/mz_strm_libcomp.c @@ -0,0 +1,356 @@ +/* mz_strm_libcomp.c -- Stream for apple compression + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" +#include "mz_strm.h" +#include "mz_strm_libcomp.h" + +#include + +/***************************************************************************/ + +static mz_stream_vtbl mz_stream_libcomp_vtbl = { + mz_stream_libcomp_open, + mz_stream_libcomp_is_open, + mz_stream_libcomp_read, + mz_stream_libcomp_write, + mz_stream_libcomp_tell, + mz_stream_libcomp_seek, + mz_stream_libcomp_close, + mz_stream_libcomp_error, + mz_stream_libcomp_create, + mz_stream_libcomp_delete, + mz_stream_libcomp_get_prop_int64, + mz_stream_libcomp_set_prop_int64 +}; + +/***************************************************************************/ + +typedef struct mz_stream_libcomp_s { + mz_stream stream; + compression_stream + cstream; + uint8_t buffer[INT16_MAX]; + int32_t buffer_len; + int64_t total_in; + int64_t total_out; + int64_t max_total_in; + int8_t initialized; + int32_t mode; + int32_t error; + int16_t method; +} mz_stream_libcomp; + +/***************************************************************************/ + +int32_t mz_stream_libcomp_open(void *stream, const char *path, int32_t mode) { + mz_stream_libcomp *libcomp = (mz_stream_libcomp *)stream; + int32_t err = 0; + int16_t operation = 0; + compression_algorithm algorithm = 0; + + MZ_UNUSED(path); + + if (libcomp->method == 0) + return MZ_PARAM_ERROR; + + libcomp->total_in = 0; + libcomp->total_out = 0; + + if (mode & MZ_OPEN_MODE_WRITE) { +#ifdef MZ_ZIP_NO_COMPRESSION + return MZ_SUPPORT_ERROR; +#else + operation = COMPRESSION_STREAM_ENCODE; +#endif + } else if (mode & MZ_OPEN_MODE_READ) { +#ifdef MZ_ZIP_NO_DECOMPRESSION + return MZ_SUPPORT_ERROR; +#else + operation = COMPRESSION_STREAM_DECODE; +#endif + } + + if (libcomp->method == MZ_COMPRESS_METHOD_DEFLATE) + algorithm = COMPRESSION_ZLIB; + else if (libcomp->method == MZ_COMPRESS_METHOD_XZ) + algorithm = COMPRESSION_LZMA; + else + return MZ_SUPPORT_ERROR; + + err = compression_stream_init(&libcomp->cstream, (compression_stream_operation)operation, algorithm); + + if (err == COMPRESSION_STATUS_ERROR) { + libcomp->error = err; + return MZ_OPEN_ERROR; + } + + libcomp->initialized = 1; + libcomp->mode = mode; + return MZ_OK; +} + +int32_t mz_stream_libcomp_is_open(void *stream) { + mz_stream_libcomp *libcomp = (mz_stream_libcomp *)stream; + if (libcomp->initialized != 1) + return MZ_OPEN_ERROR; + return MZ_OK; +} + +int32_t mz_stream_libcomp_read(void *stream, void *buf, int32_t size) { +#ifdef MZ_ZIP_NO_DECOMPRESSION + MZ_UNUSED(stream); + MZ_UNUSED(buf); + MZ_UNUSED(size); + return MZ_SUPPORT_ERROR; +#else + mz_stream_libcomp *libcomp = (mz_stream_libcomp *)stream; + uint64_t total_in_before = 0; + uint64_t total_in_after = 0; + uint64_t total_out_before = 0; + uint64_t total_out_after = 0; + int32_t total_in = 0; + int32_t total_out = 0; + int32_t in_bytes = 0; + int32_t out_bytes = 0; + int32_t bytes_to_read = sizeof(libcomp->buffer); + int32_t read = 0; + int32_t err = MZ_OK; + int16_t flags = 0; + + libcomp->cstream.dst_ptr = buf; + libcomp->cstream.dst_size = (size_t)size; + + do { + if (libcomp->cstream.src_size == 0) { + if (libcomp->max_total_in > 0) { + if ((int64_t)bytes_to_read > (libcomp->max_total_in - libcomp->total_in)) + bytes_to_read = (int32_t)(libcomp->max_total_in - libcomp->total_in); + } + + read = mz_stream_read(libcomp->stream.base, libcomp->buffer, bytes_to_read); + + if (read < 0) + return read; + if (read == 0) + flags = COMPRESSION_STREAM_FINALIZE; + + libcomp->cstream.src_ptr = libcomp->buffer; + libcomp->cstream.src_size = (size_t)read; + } + + total_in_before = libcomp->cstream.src_size; + total_out_before = libcomp->cstream.dst_size; + + err = compression_stream_process(&libcomp->cstream, flags); + if (err == COMPRESSION_STATUS_ERROR) { + libcomp->error = err; + break; + } + + total_in_after = libcomp->cstream.src_size; + total_out_after = libcomp->cstream.dst_size; + + in_bytes = (int32_t)(total_in_before - total_in_after); + out_bytes = (int32_t)(total_out_before - total_out_after); + + total_in += in_bytes; + total_out += out_bytes; + + libcomp->total_in += in_bytes; + libcomp->total_out += out_bytes; + + if (err == COMPRESSION_STATUS_END) + break; + if (err != COMPRESSION_STATUS_OK) { + libcomp->error = err; + break; + } + } while (libcomp->cstream.dst_size > 0); + + if (libcomp->error != 0) + return MZ_DATA_ERROR; + + return total_out; +#endif +} + +static int32_t mz_stream_libcomp_flush(void *stream) { + mz_stream_libcomp *libcomp = (mz_stream_libcomp *)stream; + if (mz_stream_write(libcomp->stream.base, libcomp->buffer, libcomp->buffer_len) != libcomp->buffer_len) + return MZ_WRITE_ERROR; + return MZ_OK; +} + +static int32_t mz_stream_libcomp_deflate(void *stream, int flush) { + mz_stream_libcomp *libcomp = (mz_stream_libcomp *)stream; + uint64_t total_out_before = 0; + uint64_t total_out_after = 0; + uint32_t out_bytes = 0; + int32_t err = MZ_OK; + + + do { + if (libcomp->cstream.dst_size == 0) { + err = mz_stream_libcomp_flush(libcomp); + if (err != MZ_OK) { + libcomp->error = err; + return err; + } + + libcomp->cstream.dst_size = sizeof(libcomp->buffer); + libcomp->cstream.dst_ptr = libcomp->buffer; + + libcomp->buffer_len = 0; + } + + total_out_before = libcomp->cstream.dst_size; + err = compression_stream_process(&libcomp->cstream, flush); + total_out_after = libcomp->cstream.dst_size; + + out_bytes = (uint32_t)(total_out_before - total_out_after); + + libcomp->buffer_len += out_bytes; + libcomp->total_out += out_bytes; + + if (err == COMPRESSION_STATUS_END) + break; + if (err != COMPRESSION_STATUS_OK) { + libcomp->error = err; + return MZ_DATA_ERROR; + } + } while ((libcomp->cstream.src_size > 0) || (flush == COMPRESSION_STREAM_FINALIZE && err == COMPRESSION_STATUS_OK)); + + return MZ_OK; +} + +int32_t mz_stream_libcomp_write(void *stream, const void *buf, int32_t size) { + mz_stream_libcomp *libcomp = (mz_stream_libcomp *)stream; + int32_t err = size; + +#ifdef MZ_ZIP_NO_COMPRESSION + MZ_UNUSED(libcomp); + err = MZ_SUPPORT_ERROR; +#else + libcomp->cstream.src_ptr = buf; + libcomp->cstream.src_size = (size_t)size; + + mz_stream_libcomp_deflate(stream, 0); + + libcomp->total_in += size; +#endif + return err; +} + +int64_t mz_stream_libcomp_tell(void *stream) { + MZ_UNUSED(stream); + + return MZ_TELL_ERROR; +} + +int32_t mz_stream_libcomp_seek(void *stream, int64_t offset, int32_t origin) { + MZ_UNUSED(stream); + MZ_UNUSED(offset); + MZ_UNUSED(origin); + + return MZ_SEEK_ERROR; +} + +int32_t mz_stream_libcomp_close(void *stream) { + mz_stream_libcomp *libcomp = (mz_stream_libcomp *)stream; + + + if (libcomp->mode & MZ_OPEN_MODE_WRITE) { +#ifdef MZ_ZIP_NO_COMPRESSION + return MZ_SUPPORT_ERROR; +#else + mz_stream_libcomp_deflate(stream, COMPRESSION_STREAM_FINALIZE); + mz_stream_libcomp_flush(stream); +#endif + } else if (libcomp->mode & MZ_OPEN_MODE_READ) { +#ifdef MZ_ZIP_NO_DECOMPRESSION + return MZ_SUPPORT_ERROR; +#endif + } + + compression_stream_destroy(&libcomp->cstream); + + libcomp->initialized = 0; + + if (libcomp->error != MZ_OK) + return MZ_CLOSE_ERROR; + return MZ_OK; +} + +int32_t mz_stream_libcomp_error(void *stream) { + mz_stream_libcomp *libcomp = (mz_stream_libcomp *)stream; + return libcomp->error; +} + +int32_t mz_stream_libcomp_get_prop_int64(void *stream, int32_t prop, int64_t *value) { + mz_stream_libcomp *libcomp = (mz_stream_libcomp *)stream; + switch (prop) { + case MZ_STREAM_PROP_TOTAL_IN: + *value = libcomp->total_in; + break; + case MZ_STREAM_PROP_TOTAL_IN_MAX: + *value = libcomp->max_total_in; + break; + case MZ_STREAM_PROP_TOTAL_OUT: + *value = libcomp->total_out; + break; + case MZ_STREAM_PROP_HEADER_SIZE: + *value = 0; + break; + default: + return MZ_EXIST_ERROR; + } + return MZ_OK; +} + +int32_t mz_stream_libcomp_set_prop_int64(void *stream, int32_t prop, int64_t value) { + mz_stream_libcomp *libcomp = (mz_stream_libcomp *)stream; + switch (prop) { + case MZ_STREAM_PROP_COMPRESS_METHOD: + libcomp->method = (int16_t)value; + break; + case MZ_STREAM_PROP_TOTAL_IN_MAX: + libcomp->max_total_in = value; + break; + default: + return MZ_EXIST_ERROR; + } + return MZ_OK; +} + +void *mz_stream_libcomp_create(void **stream) { + mz_stream_libcomp *libcomp = NULL; + + libcomp = (mz_stream_libcomp *)MZ_ALLOC(sizeof(mz_stream_libcomp)); + if (libcomp != NULL) { + memset(libcomp, 0, sizeof(mz_stream_libcomp)); + libcomp->stream.vtbl = &mz_stream_libcomp_vtbl; + } + if (stream != NULL) + *stream = libcomp; + + return libcomp; +} + +void mz_stream_libcomp_delete(void **stream) { + mz_stream_libcomp *libcomp = NULL; + if (stream == NULL) + return; + libcomp = (mz_stream_libcomp *)*stream; + if (libcomp != NULL) + MZ_FREE(libcomp); + *stream = NULL; +} diff --git a/Externals/minizip/mz_strm_libcomp.h b/Externals/minizip/mz_strm_libcomp.h new file mode 100644 index 000000000000..5c3fee8df94f --- /dev/null +++ b/Externals/minizip/mz_strm_libcomp.h @@ -0,0 +1,45 @@ +/* mz_strm_libcomp.h -- Stream for apple compression + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_STREAM_LIBCOMP_H +#define MZ_STREAM_LIBCOMP_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +int32_t mz_stream_libcomp_open(void *stream, const char *filename, int32_t mode); +int32_t mz_stream_libcomp_is_open(void *stream); +int32_t mz_stream_libcomp_read(void *stream, void *buf, int32_t size); +int32_t mz_stream_libcomp_write(void *stream, const void *buf, int32_t size); +int64_t mz_stream_libcomp_tell(void *stream); +int32_t mz_stream_libcomp_seek(void *stream, int64_t offset, int32_t origin); +int32_t mz_stream_libcomp_close(void *stream); +int32_t mz_stream_libcomp_error(void *stream); + +int32_t mz_stream_libcomp_get_prop_int64(void *stream, int32_t prop, int64_t *value); +int32_t mz_stream_libcomp_set_prop_int64(void *stream, int32_t prop, int64_t value); + +void* mz_stream_libcomp_create(void **stream); +void mz_stream_libcomp_delete(void **stream); + +void* mz_stream_libcomp_get_interface(void); + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/mz_strm_lzma.c b/Externals/minizip/mz_strm_lzma.c new file mode 100644 index 000000000000..22fb972ef3bd --- /dev/null +++ b/Externals/minizip/mz_strm_lzma.c @@ -0,0 +1,470 @@ +/* mz_strm_lzma.c -- Stream for lzma inflate/deflate + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" +#include "mz_strm.h" +#include "mz_strm_lzma.h" + +#include "lzma.h" + +/***************************************************************************/ + +#define MZ_LZMA_MAGIC_SIZE (4) +#define MZ_LZMA_ZIP_HEADER_SIZE (5) +#define MZ_LZMA_ALONE_HEADER_SIZE (MZ_LZMA_ZIP_HEADER_SIZE + 8) + +/***************************************************************************/ + +static mz_stream_vtbl mz_stream_lzma_vtbl = { + mz_stream_lzma_open, + mz_stream_lzma_is_open, + mz_stream_lzma_read, + mz_stream_lzma_write, + mz_stream_lzma_tell, + mz_stream_lzma_seek, + mz_stream_lzma_close, + mz_stream_lzma_error, + mz_stream_lzma_create, + mz_stream_lzma_delete, + mz_stream_lzma_get_prop_int64, + mz_stream_lzma_set_prop_int64 +}; + +/***************************************************************************/ + +typedef struct mz_stream_lzma_s { + mz_stream stream; + lzma_stream lstream; + int32_t mode; + int32_t error; + uint8_t buffer[INT16_MAX]; + int32_t buffer_len; + int64_t total_in; + int64_t total_out; + int64_t max_total_in; + int64_t max_total_out; + int8_t initialized; + int8_t header; + int32_t header_size; + uint32_t preset; + int16_t method; +} mz_stream_lzma; + +/***************************************************************************/ + +int32_t mz_stream_lzma_open(void *stream, const char *path, int32_t mode) { + mz_stream_lzma *lzma = (mz_stream_lzma *)stream; + lzma_filter filters[LZMA_FILTERS_MAX + 1]; + lzma_options_lzma opt_lzma; + uint32_t size = 0; + uint8_t major = 0; + uint8_t minor = 0; + + MZ_UNUSED(path); + + memset(&opt_lzma, 0, sizeof(opt_lzma)); + + lzma->lstream.total_in = 0; + lzma->lstream.total_out = 0; + + lzma->total_in = 0; + lzma->total_out = 0; + lzma->header = 0; + + if (mode & MZ_OPEN_MODE_WRITE) { +#ifdef MZ_ZIP_NO_COMPRESSION + MZ_UNUSED(filters); + MZ_UNUSED(major); + MZ_UNUSED(minor); + return MZ_SUPPORT_ERROR; +#else + lzma->lstream.next_out = lzma->buffer; + lzma->lstream.avail_out = sizeof(lzma->buffer); + + if (lzma_lzma_preset(&opt_lzma, lzma->preset)) + return MZ_OPEN_ERROR; + + memset(&filters, 0, sizeof(filters)); + + if (lzma->method == MZ_COMPRESS_METHOD_LZMA) + filters[0].id = LZMA_FILTER_LZMA1; + else if (lzma->method == MZ_COMPRESS_METHOD_XZ) + filters[0].id = LZMA_FILTER_LZMA2; + + filters[0].options = &opt_lzma; + filters[1].id = LZMA_VLI_UNKNOWN; + + lzma_properties_size(&size, (lzma_filter *)&filters); + + if (lzma->method == MZ_COMPRESS_METHOD_LZMA) { + mz_stream_write_uint8(lzma->stream.base, LZMA_VERSION_MAJOR); + mz_stream_write_uint8(lzma->stream.base, LZMA_VERSION_MINOR); + mz_stream_write_uint16(lzma->stream.base, (uint16_t)size); + + lzma->header = 1; + lzma->total_out += MZ_LZMA_MAGIC_SIZE; + + lzma->error = lzma_alone_encoder(&lzma->lstream, &opt_lzma); + } else if (lzma->method == MZ_COMPRESS_METHOD_XZ) + lzma->error = lzma_stream_encoder(&lzma->lstream, filters, LZMA_CHECK_CRC64); +#endif + } else if (mode & MZ_OPEN_MODE_READ) { +#ifdef MZ_ZIP_NO_DECOMPRESSION + MZ_UNUSED(filters); + MZ_UNUSED(major); + MZ_UNUSED(minor); + return MZ_SUPPORT_ERROR; +#else + lzma->lstream.next_in = lzma->buffer; + lzma->lstream.avail_in = 0; + + if (lzma->method == MZ_COMPRESS_METHOD_LZMA) { + mz_stream_read_uint8(lzma->stream.base, &major); + mz_stream_read_uint8(lzma->stream.base, &minor); + mz_stream_read_uint16(lzma->stream.base, (uint16_t *)&size); + + lzma->header = 1; + lzma->total_in += MZ_LZMA_MAGIC_SIZE; + + lzma->error = lzma_alone_decoder(&lzma->lstream, UINT64_MAX); + } else if (lzma->method == MZ_COMPRESS_METHOD_XZ) + lzma->error = lzma_stream_decoder(&lzma->lstream, UINT64_MAX, 0); +#endif + } + + if (lzma->error != LZMA_OK) + return MZ_OPEN_ERROR; + + lzma->initialized = 1; + lzma->mode = mode; + return MZ_OK; +} + +int32_t mz_stream_lzma_is_open(void *stream) { + mz_stream_lzma *lzma = (mz_stream_lzma *)stream; + if (lzma->initialized != 1) + return MZ_OPEN_ERROR; + return MZ_OK; +} + +int32_t mz_stream_lzma_read(void *stream, void *buf, int32_t size) { +#ifdef MZ_ZIP_NO_DECOMPRESSION + MZ_UNUSED(stream); + MZ_UNUSED(buf); + MZ_UNUSED(size); + return MZ_SUPPORT_ERROR; +#else + mz_stream_lzma *lzma = (mz_stream_lzma *)stream; + uint64_t total_in_before = 0; + uint64_t total_out_before = 0; + uint64_t total_in_after = 0; + uint64_t total_out_after = 0; + int32_t total_in = 0; + int32_t total_out = 0; + int32_t in_bytes = 0; + int32_t out_bytes = 0; + int32_t bytes_to_read = sizeof(lzma->buffer); + int32_t read = 0; + int32_t err = LZMA_OK; + + + lzma->lstream.next_out = (uint8_t*)buf; + lzma->lstream.avail_out = (size_t)size; + + do { + if (lzma->lstream.avail_in == 0) { + if (lzma->max_total_in > 0) { + if ((int64_t)bytes_to_read > (lzma->max_total_in - lzma->total_in)) + bytes_to_read = (int32_t)(lzma->max_total_in - lzma->total_in); + } + + if (lzma->header) { + bytes_to_read = MZ_LZMA_ZIP_HEADER_SIZE - lzma->header_size; + } + + read = mz_stream_read(lzma->stream.base, lzma->buffer, bytes_to_read); + + if (read < 0) + return read; + + /* Write uncompressed size for lzma alone header not in zip format */ + if (lzma->header) { + lzma->header_size += read; + + if (lzma->header_size == MZ_LZMA_ZIP_HEADER_SIZE) { + uint64_t uncompressed_size = UINT64_MAX; + + memcpy(lzma->buffer + MZ_LZMA_ZIP_HEADER_SIZE, &uncompressed_size, sizeof(uncompressed_size)); + + read += sizeof(uncompressed_size); + bytes_to_read = sizeof(lzma->buffer); + + lzma->total_in -= sizeof(uncompressed_size); + lzma->header = 0; + } + } + + lzma->lstream.next_in = lzma->buffer; + lzma->lstream.avail_in = (size_t)read; + } + + total_in_before = lzma->lstream.avail_in; + total_out_before = lzma->lstream.total_out; + + err = lzma_code(&lzma->lstream, LZMA_RUN); + + total_in_after = lzma->lstream.avail_in; + total_out_after = lzma->lstream.total_out; + if ((lzma->max_total_out != -1) && (int64_t)total_out_after > lzma->max_total_out) + total_out_after = (uint64_t)lzma->max_total_out; + + in_bytes = (int32_t)(total_in_before - total_in_after); + out_bytes = (int32_t)(total_out_after - total_out_before); + + total_in += in_bytes; + total_out += out_bytes; + + lzma->total_in += in_bytes; + lzma->total_out += out_bytes; + + if (err == LZMA_STREAM_END) + break; + if (err != LZMA_OK) { + lzma->error = err; + break; + } + } while (lzma->lstream.avail_out > 0); + + if (lzma->error != 0) + return MZ_DATA_ERROR; + + return total_out; +#endif +} + +#ifndef MZ_ZIP_NO_COMPRESSION +static int32_t mz_stream_lzma_flush(void *stream) { + mz_stream_lzma *lzma = (mz_stream_lzma *)stream; + int32_t buffer_len = lzma->buffer_len; + uint8_t *buffer = lzma->buffer; + + /* Skip writing lzma_alone header uncompressed size for zip format */ + if (lzma->header) { + uint64_t uncompressed_size = 0; + + if (lzma->buffer_len < MZ_LZMA_ALONE_HEADER_SIZE) + return MZ_OK; + + if (mz_stream_write(lzma->stream.base, buffer, MZ_LZMA_ZIP_HEADER_SIZE) != MZ_LZMA_ZIP_HEADER_SIZE) + return MZ_WRITE_ERROR; + + buffer += MZ_LZMA_ALONE_HEADER_SIZE; + buffer_len -= MZ_LZMA_ALONE_HEADER_SIZE; + + lzma->buffer_len -= sizeof(uncompressed_size); + lzma->total_out -= sizeof(uncompressed_size); + lzma->header = 0; + } + + if (mz_stream_write(lzma->stream.base, buffer, buffer_len) != buffer_len) + return MZ_WRITE_ERROR; + + return MZ_OK; +} + +static int32_t mz_stream_lzma_code(void *stream, int32_t flush) { + mz_stream_lzma *lzma = (mz_stream_lzma *)stream; + uint64_t total_out_before = 0; + uint64_t total_out_after = 0; + uint32_t out_bytes = 0; + int32_t err = LZMA_OK; + + + do { + if (lzma->lstream.avail_out == 0) { + err = mz_stream_lzma_flush(lzma); + if (err != MZ_OK) + return err; + + lzma->lstream.avail_out = sizeof(lzma->buffer); + lzma->lstream.next_out = lzma->buffer; + + lzma->buffer_len = 0; + } + + total_out_before = lzma->lstream.total_out; + err = lzma_code(&lzma->lstream, (lzma_action)flush); + total_out_after = lzma->lstream.total_out; + + out_bytes = (uint32_t)(total_out_after - total_out_before); + + if (err != LZMA_OK && err != LZMA_STREAM_END) { + lzma->error = err; + return MZ_DATA_ERROR; + } + + lzma->buffer_len += out_bytes; + lzma->total_out += out_bytes; + } while ((lzma->lstream.avail_in > 0) || (flush == LZMA_FINISH && err == LZMA_OK)); + + return MZ_OK; +} +#endif + +int32_t mz_stream_lzma_write(void *stream, const void *buf, int32_t size) { +#ifdef MZ_ZIP_NO_COMPRESSION + MZ_UNUSED(stream); + MZ_UNUSED(buf); + MZ_UNUSED(size); + return MZ_SUPPORT_ERROR; +#else + mz_stream_lzma *lzma = (mz_stream_lzma *)stream; + int32_t err = MZ_OK; + + lzma->lstream.next_in = (uint8_t*)(intptr_t)buf; + lzma->lstream.avail_in = (size_t)size; + + err = mz_stream_lzma_code(stream, LZMA_RUN); + if (err != MZ_OK) { + return err; + } + + lzma->total_in += size; + return size; +#endif +} + +int64_t mz_stream_lzma_tell(void *stream) { + MZ_UNUSED(stream); + + return MZ_TELL_ERROR; +} + +int32_t mz_stream_lzma_seek(void *stream, int64_t offset, int32_t origin) { + MZ_UNUSED(stream); + MZ_UNUSED(offset); + MZ_UNUSED(origin); + + return MZ_SEEK_ERROR; +} + +int32_t mz_stream_lzma_close(void *stream) { + mz_stream_lzma *lzma = (mz_stream_lzma *)stream; + + if (lzma->mode & MZ_OPEN_MODE_WRITE) { +#ifdef MZ_ZIP_NO_COMPRESSION + return MZ_SUPPORT_ERROR; +#else + mz_stream_lzma_code(stream, LZMA_FINISH); + mz_stream_lzma_flush(stream); + + lzma_end(&lzma->lstream); +#endif + } else if (lzma->mode & MZ_OPEN_MODE_READ) { +#ifdef MZ_ZIP_NO_DECOMPRESSION + return MZ_SUPPORT_ERROR; +#else + lzma_end(&lzma->lstream); +#endif + } + + lzma->initialized = 0; + + if (lzma->error != LZMA_OK) + return MZ_CLOSE_ERROR; + return MZ_OK; +} + +int32_t mz_stream_lzma_error(void *stream) { + mz_stream_lzma *lzma = (mz_stream_lzma *)stream; + return lzma->error; +} + +int32_t mz_stream_lzma_get_prop_int64(void *stream, int32_t prop, int64_t *value) { + mz_stream_lzma *lzma = (mz_stream_lzma *)stream; + switch (prop) { + case MZ_STREAM_PROP_TOTAL_IN: + *value = lzma->total_in; + break; + case MZ_STREAM_PROP_TOTAL_IN_MAX: + *value = lzma->max_total_in; + break; + case MZ_STREAM_PROP_TOTAL_OUT: + *value = lzma->total_out; + break; + case MZ_STREAM_PROP_TOTAL_OUT_MAX: + *value = lzma->max_total_out; + break; + case MZ_STREAM_PROP_HEADER_SIZE: + *value = MZ_LZMA_MAGIC_SIZE; + break; + default: + return MZ_EXIST_ERROR; + } + return MZ_OK; +} + +int32_t mz_stream_lzma_set_prop_int64(void *stream, int32_t prop, int64_t value) { + mz_stream_lzma *lzma = (mz_stream_lzma *)stream; + switch (prop) { + case MZ_STREAM_PROP_COMPRESS_LEVEL: + if (value >= 9) + lzma->preset = LZMA_PRESET_EXTREME; + else + lzma->preset = LZMA_PRESET_DEFAULT; + break; + case MZ_STREAM_PROP_COMPRESS_METHOD: + lzma->method = (int16_t)value; + break; + case MZ_STREAM_PROP_TOTAL_IN_MAX: + lzma->max_total_in = value; + break; + case MZ_STREAM_PROP_TOTAL_OUT_MAX: + if (value < -1) + return MZ_PARAM_ERROR; + lzma->max_total_out = value; + break; + default: + return MZ_EXIST_ERROR; + } + return MZ_OK; +} + +void *mz_stream_lzma_create(void **stream) { + mz_stream_lzma *lzma = NULL; + + lzma = (mz_stream_lzma *)MZ_ALLOC(sizeof(mz_stream_lzma)); + if (lzma != NULL) { + memset(lzma, 0, sizeof(mz_stream_lzma)); + lzma->stream.vtbl = &mz_stream_lzma_vtbl; + lzma->method = MZ_COMPRESS_METHOD_LZMA; + lzma->preset = LZMA_PRESET_DEFAULT; + lzma->max_total_out = -1; + } + if (stream != NULL) + *stream = lzma; + + return lzma; +} + +void mz_stream_lzma_delete(void **stream) { + mz_stream_lzma *lzma = NULL; + if (stream == NULL) + return; + lzma = (mz_stream_lzma *)*stream; + if (lzma != NULL) + MZ_FREE(lzma); + *stream = NULL; +} + +void *mz_stream_lzma_get_interface(void) { + return (void *)&mz_stream_lzma_vtbl; +} diff --git a/Externals/minizip/mz_strm_lzma.h b/Externals/minizip/mz_strm_lzma.h new file mode 100644 index 000000000000..f447baa65c9b --- /dev/null +++ b/Externals/minizip/mz_strm_lzma.h @@ -0,0 +1,43 @@ +/* mz_strm_lzma.h -- Stream for lzma inflate/deflate + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as lzma. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_STREAM_LZMA_H +#define MZ_STREAM_LZMA_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +int32_t mz_stream_lzma_open(void *stream, const char *filename, int32_t mode); +int32_t mz_stream_lzma_is_open(void *stream); +int32_t mz_stream_lzma_read(void *stream, void *buf, int32_t size); +int32_t mz_stream_lzma_write(void *stream, const void *buf, int32_t size); +int64_t mz_stream_lzma_tell(void *stream); +int32_t mz_stream_lzma_seek(void *stream, int64_t offset, int32_t origin); +int32_t mz_stream_lzma_close(void *stream); +int32_t mz_stream_lzma_error(void *stream); + +int32_t mz_stream_lzma_get_prop_int64(void *stream, int32_t prop, int64_t *value); +int32_t mz_stream_lzma_set_prop_int64(void *stream, int32_t prop, int64_t value); + +void* mz_stream_lzma_create(void **stream); +void mz_stream_lzma_delete(void **stream); + +void* mz_stream_lzma_get_interface(void); + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/mz_strm_mem.c b/Externals/minizip/mz_strm_mem.c new file mode 100644 index 000000000000..f4a882d928b9 --- /dev/null +++ b/Externals/minizip/mz_strm_mem.c @@ -0,0 +1,272 @@ +/* mz_strm_mem.c -- Stream for memory access + part of the minizip-ng project + + This interface is designed to access memory rather than files. + We do use a region of memory to put data in to and take it out of. + + Based on Unzip ioapi.c version 0.22, May 19th, 2003 + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + Copyright (C) 2003 Justin Fletcher + Copyright (C) 1998-2003 Gilles Vollant + https://www.winimage.com/zLibDll/minizip.html + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" +#include "mz_strm.h" +#include "mz_strm_mem.h" + +/***************************************************************************/ + +static mz_stream_vtbl mz_stream_mem_vtbl = { + mz_stream_mem_open, + mz_stream_mem_is_open, + mz_stream_mem_read, + mz_stream_mem_write, + mz_stream_mem_tell, + mz_stream_mem_seek, + mz_stream_mem_close, + mz_stream_mem_error, + mz_stream_mem_create, + mz_stream_mem_delete, + NULL, + NULL +}; + +/***************************************************************************/ + +typedef struct mz_stream_mem_s { + mz_stream stream; + int32_t mode; + uint8_t *buffer; /* Memory buffer pointer */ + int32_t size; /* Size of the memory buffer */ + int32_t limit; /* Furthest we've written */ + int32_t position; /* Current position in the memory */ + int32_t grow_size; /* Size to grow when full */ +} mz_stream_mem; + +/***************************************************************************/ + +static int32_t mz_stream_mem_set_size(void *stream, int32_t size) { + mz_stream_mem *mem = (mz_stream_mem *)stream; + int32_t new_size = size; + uint8_t *new_buf = NULL; + + + new_buf = (uint8_t *)MZ_ALLOC((uint32_t)new_size); + if (new_buf == NULL) + return MZ_BUF_ERROR; + + if (mem->buffer) { + memcpy(new_buf, mem->buffer, mem->size); + MZ_FREE(mem->buffer); + } + + mem->buffer = new_buf; + mem->size = new_size; + return MZ_OK; +} + +int32_t mz_stream_mem_open(void *stream, const char *path, int32_t mode) { + mz_stream_mem *mem = (mz_stream_mem *)stream; + int32_t err = MZ_OK; + + MZ_UNUSED(path); + + mem->mode = mode; + mem->limit = 0; + mem->position = 0; + + if (mem->mode & MZ_OPEN_MODE_CREATE) + err = mz_stream_mem_set_size(stream, mem->grow_size); + else + mem->limit = mem->size; + + return err; +} + +int32_t mz_stream_mem_is_open(void *stream) { + mz_stream_mem *mem = (mz_stream_mem *)stream; + if (mem->buffer == NULL) + return MZ_OPEN_ERROR; + return MZ_OK; +} + +int32_t mz_stream_mem_read(void *stream, void *buf, int32_t size) { + mz_stream_mem *mem = (mz_stream_mem *)stream; + + if (size > mem->size - mem->position) + size = mem->size - mem->position; + if (mem->position + size > mem->limit) + size = mem->limit - mem->position; + + if (size <= 0) + return 0; + + memcpy(buf, mem->buffer + mem->position, size); + mem->position += size; + + return size; +} + +int32_t mz_stream_mem_write(void *stream, const void *buf, int32_t size) { + mz_stream_mem *mem = (mz_stream_mem *)stream; + int32_t new_size = 0; + int32_t err = MZ_OK; + + if (size == 0) + return size; + + if (size > mem->size - mem->position) { + if (mem->mode & MZ_OPEN_MODE_CREATE) { + new_size = mem->size; + if (size < mem->grow_size) + new_size += mem->grow_size; + else + new_size += size; + + err = mz_stream_mem_set_size(stream, new_size); + if (err != MZ_OK) + return err; + } else { + size = mem->size - mem->position; + } + } + + memcpy(mem->buffer + mem->position, buf, size); + + mem->position += size; + if (mem->position > mem->limit) + mem->limit = mem->position; + + return size; +} + +int64_t mz_stream_mem_tell(void *stream) { + mz_stream_mem *mem = (mz_stream_mem *)stream; + return mem->position; +} + +int32_t mz_stream_mem_seek(void *stream, int64_t offset, int32_t origin) { + mz_stream_mem *mem = (mz_stream_mem *)stream; + int64_t new_pos = 0; + int32_t err = MZ_OK; + + switch (origin) { + case MZ_SEEK_CUR: + new_pos = mem->position + offset; + break; + case MZ_SEEK_END: + new_pos = mem->limit + offset; + break; + case MZ_SEEK_SET: + new_pos = offset; + break; + default: + return MZ_SEEK_ERROR; + } + + if (new_pos > mem->size) { + if ((mem->mode & MZ_OPEN_MODE_CREATE) == 0) + return MZ_SEEK_ERROR; + + err = mz_stream_mem_set_size(stream, (int32_t)new_pos); + if (err != MZ_OK) + return err; + } else if (new_pos < 0) { + return MZ_SEEK_ERROR; + } + + mem->position = (int32_t)new_pos; + return MZ_OK; +} + +int32_t mz_stream_mem_close(void *stream) { + MZ_UNUSED(stream); + + /* We never return errors */ + return MZ_OK; +} + +int32_t mz_stream_mem_error(void *stream) { + MZ_UNUSED(stream); + + /* We never return errors */ + return MZ_OK; +} + +void mz_stream_mem_set_buffer(void *stream, void *buf, int32_t size) { + mz_stream_mem *mem = (mz_stream_mem *)stream; + mem->buffer = (uint8_t *)buf; + mem->size = size; + mem->limit = size; +} + +int32_t mz_stream_mem_get_buffer(void *stream, const void **buf) { + return mz_stream_mem_get_buffer_at(stream, 0, buf); +} + +int32_t mz_stream_mem_get_buffer_at(void *stream, int64_t position, const void **buf) { + mz_stream_mem *mem = (mz_stream_mem *)stream; + if (buf == NULL || position < 0 || mem->size < position || mem->buffer == NULL) + return MZ_SEEK_ERROR; + *buf = mem->buffer + position; + return MZ_OK; +} + +int32_t mz_stream_mem_get_buffer_at_current(void *stream, const void **buf) { + mz_stream_mem *mem = (mz_stream_mem *)stream; + return mz_stream_mem_get_buffer_at(stream, mem->position, buf); +} + +void mz_stream_mem_get_buffer_length(void *stream, int32_t *length) { + mz_stream_mem *mem = (mz_stream_mem *)stream; + *length = mem->limit; +} + +void mz_stream_mem_set_buffer_limit(void *stream, int32_t limit) { + mz_stream_mem *mem = (mz_stream_mem *)stream; + mem->limit = limit; +} + +void mz_stream_mem_set_grow_size(void *stream, int32_t grow_size) { + mz_stream_mem *mem = (mz_stream_mem *)stream; + mem->grow_size = grow_size; +} + +void *mz_stream_mem_create(void **stream) { + mz_stream_mem *mem = NULL; + + mem = (mz_stream_mem *)MZ_ALLOC(sizeof(mz_stream_mem)); + if (mem != NULL) { + memset(mem, 0, sizeof(mz_stream_mem)); + mem->stream.vtbl = &mz_stream_mem_vtbl; + mem->grow_size = 4096; + } + if (stream != NULL) + *stream = mem; + + return mem; +} + +void mz_stream_mem_delete(void **stream) { + mz_stream_mem *mem = NULL; + if (stream == NULL) + return; + mem = (mz_stream_mem *)*stream; + if (mem != NULL) { + if ((mem->mode & MZ_OPEN_MODE_CREATE) && (mem->buffer != NULL)) + MZ_FREE(mem->buffer); + MZ_FREE(mem); + } + *stream = NULL; +} + +void *mz_stream_mem_get_interface(void) { + return (void *)&mz_stream_mem_vtbl; +} diff --git a/Externals/minizip/mz_strm_mem.h b/Externals/minizip/mz_strm_mem.h new file mode 100644 index 000000000000..5bfa13d8a652 --- /dev/null +++ b/Externals/minizip/mz_strm_mem.h @@ -0,0 +1,48 @@ +/* mz_strm_mem.h -- Stream for memory access + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_STREAM_MEM_H +#define MZ_STREAM_MEM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +int32_t mz_stream_mem_open(void *stream, const char *filename, int32_t mode); +int32_t mz_stream_mem_is_open(void *stream); +int32_t mz_stream_mem_read(void *stream, void *buf, int32_t size); +int32_t mz_stream_mem_write(void *stream, const void *buf, int32_t size); +int64_t mz_stream_mem_tell(void *stream); +int32_t mz_stream_mem_seek(void *stream, int64_t offset, int32_t origin); +int32_t mz_stream_mem_close(void *stream); +int32_t mz_stream_mem_error(void *stream); + +void mz_stream_mem_set_buffer(void *stream, void *buf, int32_t size); +int32_t mz_stream_mem_get_buffer(void *stream, const void **buf); +int32_t mz_stream_mem_get_buffer_at(void *stream, int64_t position, const void **buf); +int32_t mz_stream_mem_get_buffer_at_current(void *stream, const void **buf); +void mz_stream_mem_get_buffer_length(void *stream, int32_t *length); +void mz_stream_mem_set_buffer_limit(void *stream, int32_t limit); +void mz_stream_mem_set_grow_size(void *stream, int32_t grow_size); + +void* mz_stream_mem_create(void **stream); +void mz_stream_mem_delete(void **stream); + +void* mz_stream_mem_get_interface(void); + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/mz_strm_os.h b/Externals/minizip/mz_strm_os.h new file mode 100644 index 000000000000..614e2552074f --- /dev/null +++ b/Externals/minizip/mz_strm_os.h @@ -0,0 +1,40 @@ +/* mz_sstrm_os.h -- Stream for filesystem access + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_STREAM_OS_H +#define MZ_STREAM_OS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +int32_t mz_stream_os_open(void *stream, const char *path, int32_t mode); +int32_t mz_stream_os_is_open(void *stream); +int32_t mz_stream_os_read(void *stream, void *buf, int32_t size); +int32_t mz_stream_os_write(void *stream, const void *buf, int32_t size); +int64_t mz_stream_os_tell(void *stream); +int32_t mz_stream_os_seek(void *stream, int64_t offset, int32_t origin); +int32_t mz_stream_os_close(void *stream); +int32_t mz_stream_os_error(void *stream); + +void* mz_stream_os_create(void **stream); +void mz_stream_os_delete(void **stream); + +void* mz_stream_os_get_interface(void); + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/mz_strm_os_posix.c b/Externals/minizip/mz_strm_os_posix.c new file mode 100644 index 000000000000..f0b5bd335179 --- /dev/null +++ b/Externals/minizip/mz_strm_os_posix.c @@ -0,0 +1,206 @@ +/* mz_strm_posix.c -- Stream for filesystem access for posix/linux + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + Modifications for Zip64 support + Copyright (C) 2009-2010 Mathias Svensson + http://result42.com + Copyright (C) 1998-2010 Gilles Vollant + https://www.winimage.com/zLibDll/minizip.html + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" +#include "mz_strm.h" +#include "mz_strm_os.h" + +#include /* fopen, fread.. */ +#include + +/***************************************************************************/ + +#define fopen64 fopen +#ifndef MZ_FILE32_API +# ifndef NO_FSEEKO +# define ftello64 ftello +# define fseeko64 fseeko +# elif defined(_MSC_VER) && (_MSC_VER >= 1400) +# define ftello64 _ftelli64 +# define fseeko64 _fseeki64 +# endif +#endif +#ifndef ftello64 +# define ftello64 ftell +#endif +#ifndef fseeko64 +# define fseeko64 fseek +#endif + +/***************************************************************************/ + +static mz_stream_vtbl mz_stream_os_vtbl = { + mz_stream_os_open, + mz_stream_os_is_open, + mz_stream_os_read, + mz_stream_os_write, + mz_stream_os_tell, + mz_stream_os_seek, + mz_stream_os_close, + mz_stream_os_error, + mz_stream_os_create, + mz_stream_os_delete, + NULL, + NULL +}; + +/***************************************************************************/ + +typedef struct mz_stream_posix_s { + mz_stream stream; + int32_t error; + FILE *handle; +} mz_stream_posix; + +/***************************************************************************/ + +int32_t mz_stream_os_open(void *stream, const char *path, int32_t mode) { + mz_stream_posix *posix = (mz_stream_posix *)stream; + const char *mode_fopen = NULL; + + if (path == NULL) + return MZ_PARAM_ERROR; + + if ((mode & MZ_OPEN_MODE_READWRITE) == MZ_OPEN_MODE_READ) + mode_fopen = "rb"; + else if (mode & MZ_OPEN_MODE_APPEND) + mode_fopen = "r+b"; + else if (mode & MZ_OPEN_MODE_CREATE) + mode_fopen = "wb"; + else + return MZ_OPEN_ERROR; + + posix->handle = fopen64(path, mode_fopen); + if (posix->handle == NULL) { + posix->error = errno; + return MZ_OPEN_ERROR; + } + + if (mode & MZ_OPEN_MODE_APPEND) + return mz_stream_os_seek(stream, 0, MZ_SEEK_END); + + return MZ_OK; +} + +int32_t mz_stream_os_is_open(void *stream) { + mz_stream_posix *posix = (mz_stream_posix*)stream; + if (posix->handle == NULL) + return MZ_OPEN_ERROR; + return MZ_OK; +} + +int32_t mz_stream_os_read(void *stream, void *buf, int32_t size) { + mz_stream_posix *posix = (mz_stream_posix*)stream; + int32_t read = (int32_t)fread(buf, 1, (size_t)size, posix->handle); + if (read < size && ferror(posix->handle)) { + posix->error = errno; + return MZ_READ_ERROR; + } + return read; +} + +int32_t mz_stream_os_write(void *stream, const void *buf, int32_t size) { + mz_stream_posix *posix = (mz_stream_posix*)stream; + int32_t written = (int32_t)fwrite(buf, 1, (size_t)size, posix->handle); + if (written < size && ferror(posix->handle)) { + posix->error = errno; + return MZ_WRITE_ERROR; + } + return written; +} + +int64_t mz_stream_os_tell(void *stream) { + mz_stream_posix *posix = (mz_stream_posix*)stream; + int64_t position = ftello64(posix->handle); + if (position == -1) { + posix->error = errno; + return MZ_TELL_ERROR; + } + return position; +} + +int32_t mz_stream_os_seek(void *stream, int64_t offset, int32_t origin) { + mz_stream_posix *posix = (mz_stream_posix*)stream; + int32_t fseek_origin = 0; + + switch (origin) { + case MZ_SEEK_CUR: + fseek_origin = SEEK_CUR; + break; + case MZ_SEEK_END: + fseek_origin = SEEK_END; + break; + case MZ_SEEK_SET: + fseek_origin = SEEK_SET; + break; + default: + return MZ_SEEK_ERROR; + } + + if (fseeko64(posix->handle, offset, fseek_origin) != 0) { + posix->error = errno; + return MZ_SEEK_ERROR; + } + + return MZ_OK; +} + +int32_t mz_stream_os_close(void *stream) { + mz_stream_posix *posix = (mz_stream_posix*)stream; + int32_t closed = 0; + if (posix->handle != NULL) { + closed = fclose(posix->handle); + posix->handle = NULL; + } + if (closed != 0) { + posix->error = errno; + return MZ_CLOSE_ERROR; + } + return MZ_OK; +} + +int32_t mz_stream_os_error(void *stream) { + mz_stream_posix *posix = (mz_stream_posix*)stream; + return posix->error; +} + +void *mz_stream_os_create(void **stream) { + mz_stream_posix *posix = NULL; + + posix = (mz_stream_posix *)MZ_ALLOC(sizeof(mz_stream_posix)); + if (posix != NULL) { + memset(posix, 0, sizeof(mz_stream_posix)); + posix->stream.vtbl = &mz_stream_os_vtbl; + } + if (stream != NULL) + *stream = posix; + + return posix; +} + +void mz_stream_os_delete(void **stream) { + mz_stream_posix *posix = NULL; + if (stream == NULL) + return; + posix = (mz_stream_posix *)*stream; + if (posix != NULL) + MZ_FREE(posix); + *stream = NULL; +} + +void *mz_stream_os_get_interface(void) { + return (void *)&mz_stream_os_vtbl; +} diff --git a/Externals/minizip/mz_strm_os_win32.c b/Externals/minizip/mz_strm_os_win32.c new file mode 100644 index 000000000000..893df541837a --- /dev/null +++ b/Externals/minizip/mz_strm_os_win32.c @@ -0,0 +1,296 @@ +/* mz_strm_win32.c -- Stream for filesystem access for windows + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + Copyright (C) 2009-2010 Mathias Svensson + Modifications for Zip64 support + http://result42.com + Copyright (C) 1998-2010 Gilles Vollant + https://www.winimage.com/zLibDll/minizip.html + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" +#include "mz_os.h" +#include "mz_strm.h" +#include "mz_strm_os.h" + +#include + +/***************************************************************************/ + +#ifndef INVALID_HANDLE_VALUE +# define INVALID_HANDLE_VALUE (0xFFFFFFFF) +#endif + +#ifndef INVALID_SET_FILE_POINTER +# define INVALID_SET_FILE_POINTER ((DWORD)-1) +#endif + +#if defined(WINAPI_FAMILY_ONE_PARTITION) && !defined(MZ_WINRT_API) +# if WINAPI_FAMILY_ONE_PARTITION(WINAPI_FAMILY, WINAPI_PARTITION_APP) +# define MZ_WINRT_API 1 +# endif +#endif + +/***************************************************************************/ + +static mz_stream_vtbl mz_stream_os_vtbl = { + mz_stream_os_open, + mz_stream_os_is_open, + mz_stream_os_read, + mz_stream_os_write, + mz_stream_os_tell, + mz_stream_os_seek, + mz_stream_os_close, + mz_stream_os_error, + mz_stream_os_create, + mz_stream_os_delete, + NULL, + NULL +}; + +/***************************************************************************/ + +typedef struct mz_stream_win32_s { + mz_stream stream; + HANDLE handle; + int32_t error; +} mz_stream_win32; + +/***************************************************************************/ + +#if 0 +# define mz_stream_os_print printf +#else +# define mz_stream_os_print(fmt,...) +#endif + +/***************************************************************************/ + +int32_t mz_stream_os_open(void *stream, const char *path, int32_t mode) { + mz_stream_win32 *win32 = (mz_stream_win32 *)stream; + uint32_t desired_access = 0; + uint32_t creation_disposition = 0; + uint32_t share_mode = FILE_SHARE_READ; + uint32_t flags_attribs = FILE_ATTRIBUTE_NORMAL; + wchar_t *path_wide = NULL; + + + if (path == NULL) + return MZ_PARAM_ERROR; + + /* Some use cases require write sharing as well */ + share_mode |= FILE_SHARE_WRITE; + + if ((mode & MZ_OPEN_MODE_READWRITE) == MZ_OPEN_MODE_READ) { + desired_access = GENERIC_READ; + creation_disposition = OPEN_EXISTING; + } else if (mode & MZ_OPEN_MODE_APPEND) { + desired_access = GENERIC_WRITE | GENERIC_READ; + creation_disposition = OPEN_EXISTING; + } else if (mode & MZ_OPEN_MODE_CREATE) { + desired_access = GENERIC_WRITE | GENERIC_READ; + creation_disposition = CREATE_ALWAYS; + } else { + return MZ_PARAM_ERROR; + } + + mz_stream_os_print("Win32 - Open - %s (mode %" PRId32 ")\n", path); + + path_wide = mz_os_unicode_string_create(path, MZ_ENCODING_UTF8); + if (path_wide == NULL) + return MZ_PARAM_ERROR; + +#ifdef MZ_WINRT_API + win32->handle = CreateFile2(path_wide, desired_access, share_mode, + creation_disposition, NULL); +#else + win32->handle = CreateFileW(path_wide, desired_access, share_mode, NULL, + creation_disposition, flags_attribs, NULL); +#endif + + mz_os_unicode_string_delete(&path_wide); + + if (mz_stream_os_is_open(stream) != MZ_OK) { + win32->error = GetLastError(); + return MZ_OPEN_ERROR; + } + + if (mode & MZ_OPEN_MODE_APPEND) + return mz_stream_os_seek(stream, 0, MZ_SEEK_END); + + return MZ_OK; +} + +int32_t mz_stream_os_is_open(void *stream) { + mz_stream_win32 *win32 = (mz_stream_win32 *)stream; + if (win32->handle == NULL || win32->handle == INVALID_HANDLE_VALUE) + return MZ_OPEN_ERROR; + return MZ_OK; +} + +int32_t mz_stream_os_read(void *stream, void *buf, int32_t size) { + mz_stream_win32 *win32 = (mz_stream_win32 *)stream; + uint32_t read = 0; + + if (mz_stream_os_is_open(stream) != MZ_OK) + return MZ_OPEN_ERROR; + + if (!ReadFile(win32->handle, buf, size, (DWORD *)&read, NULL)) { + win32->error = GetLastError(); + if (win32->error == ERROR_HANDLE_EOF) + win32->error = 0; + } + + mz_stream_os_print("Win32 - Read - %" PRId32 "\n", read); + + return read; +} + +int32_t mz_stream_os_write(void *stream, const void *buf, int32_t size) { + mz_stream_win32 *win32 = (mz_stream_win32 *)stream; + int32_t written = 0; + + if (mz_stream_os_is_open(stream) != MZ_OK) + return MZ_OPEN_ERROR; + + if (!WriteFile(win32->handle, buf, size, (DWORD *)&written, NULL)) { + win32->error = GetLastError(); + if (win32->error == ERROR_HANDLE_EOF) + win32->error = 0; + } + + mz_stream_os_print("Win32 - Write - %" PRId32 "\n", written); + + return written; +} + +static int32_t mz_stream_os_seekinternal(HANDLE handle, LARGE_INTEGER large_pos, + LARGE_INTEGER *new_pos, uint32_t move_method) { +#ifdef MZ_WINRT_API + BOOL success = FALSE; + success = SetFilePointerEx(handle, large_pos, new_pos, move_method); + if ((success == FALSE) && (GetLastError() != NO_ERROR)) + return MZ_SEEK_ERROR; + + return MZ_OK; +#else + LONG high_part = 0; + uint32_t pos = 0; + + high_part = large_pos.HighPart; + pos = SetFilePointer(handle, large_pos.LowPart, &high_part, move_method); + + if ((pos == INVALID_SET_FILE_POINTER) && (GetLastError() != NO_ERROR)) + return MZ_SEEK_ERROR; + + if (new_pos != NULL) { + new_pos->LowPart = pos; + new_pos->HighPart = high_part; + } + + return MZ_OK; +#endif +} + +int64_t mz_stream_os_tell(void *stream) { + mz_stream_win32 *win32 = (mz_stream_win32 *)stream; + LARGE_INTEGER large_pos; + + if (mz_stream_os_is_open(stream) != MZ_OK) + return MZ_OPEN_ERROR; + + large_pos.QuadPart = 0; + + if (mz_stream_os_seekinternal(win32->handle, large_pos, &large_pos, FILE_CURRENT) != MZ_OK) + win32->error = GetLastError(); + + mz_stream_os_print("Win32 - Tell - %" PRId64 "\n", large_pos.QuadPart); + + return large_pos.QuadPart; +} + +int32_t mz_stream_os_seek(void *stream, int64_t offset, int32_t origin) { + mz_stream_win32 *win32 = (mz_stream_win32 *)stream; + uint32_t move_method = 0xFFFFFFFF; + int32_t err = MZ_OK; + LARGE_INTEGER large_pos; + + + if (mz_stream_os_is_open(stream) != MZ_OK) + return MZ_OPEN_ERROR; + + switch (origin) { + case MZ_SEEK_CUR: + move_method = FILE_CURRENT; + break; + case MZ_SEEK_END: + move_method = FILE_END; + break; + case MZ_SEEK_SET: + move_method = FILE_BEGIN; + break; + default: + return MZ_SEEK_ERROR; + } + + mz_stream_os_print("Win32 - Seek - %" PRId64 " (origin %" PRId32 ")\n", offset, origin); + + large_pos.QuadPart = offset; + + err = mz_stream_os_seekinternal(win32->handle, large_pos, NULL, move_method); + if (err != MZ_OK) { + win32->error = GetLastError(); + return err; + } + + return MZ_OK; +} + +int32_t mz_stream_os_close(void *stream) { + mz_stream_win32 *win32 = (mz_stream_win32 *)stream; + + if (win32->handle != NULL) + CloseHandle(win32->handle); + mz_stream_os_print("Win32 - Close\n"); + win32->handle = NULL; + return MZ_OK; +} + +int32_t mz_stream_os_error(void *stream) { + mz_stream_win32 *win32 = (mz_stream_win32 *)stream; + return win32->error; +} + +void *mz_stream_os_create(void **stream) { + mz_stream_win32 *win32 = NULL; + + win32 = (mz_stream_win32 *)MZ_ALLOC(sizeof(mz_stream_win32)); + if (win32 != NULL) { + memset(win32, 0, sizeof(mz_stream_win32)); + win32->stream.vtbl = &mz_stream_os_vtbl; + } + if (stream != NULL) + *stream = win32; + + return win32; +} + +void mz_stream_os_delete(void **stream) { + mz_stream_win32 *win32 = NULL; + if (stream == NULL) + return; + win32 = (mz_stream_win32 *)*stream; + if (win32 != NULL) + MZ_FREE(win32); + *stream = NULL; +} + +void *mz_stream_os_get_interface(void) { + return (void *)&mz_stream_os_vtbl; +} diff --git a/Externals/minizip/mz_strm_pkcrypt.c b/Externals/minizip/mz_strm_pkcrypt.c new file mode 100644 index 000000000000..41c762f9c0f6 --- /dev/null +++ b/Externals/minizip/mz_strm_pkcrypt.c @@ -0,0 +1,338 @@ +/* mz_strm_pkcrypt.c -- Code for traditional PKWARE encryption + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + Copyright (C) 1998-2005 Gilles Vollant + Modifications for Info-ZIP crypting + https://www.winimage.com/zLibDll/minizip.html + Copyright (C) 2003 Terry Thorsen + + This code is a modified version of crypting code in Info-ZIP distribution + + Copyright (C) 1990-2000 Info-ZIP. All rights reserved. + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. + + This encryption code is a direct transcription of the algorithm from + Roger Schlafly, described by Phil Katz in the file appnote.txt. This + file (appnote.txt) is distributed with the PKZIP program (even in the + version without encryption capabilities). +*/ + + +#include "mz.h" +#include "mz_crypt.h" +#include "mz_strm.h" +#include "mz_strm_pkcrypt.h" + +/***************************************************************************/ + +static mz_stream_vtbl mz_stream_pkcrypt_vtbl = { + mz_stream_pkcrypt_open, + mz_stream_pkcrypt_is_open, + mz_stream_pkcrypt_read, + mz_stream_pkcrypt_write, + mz_stream_pkcrypt_tell, + mz_stream_pkcrypt_seek, + mz_stream_pkcrypt_close, + mz_stream_pkcrypt_error, + mz_stream_pkcrypt_create, + mz_stream_pkcrypt_delete, + mz_stream_pkcrypt_get_prop_int64, + mz_stream_pkcrypt_set_prop_int64 +}; + +/***************************************************************************/ + +typedef struct mz_stream_pkcrypt_s { + mz_stream stream; + int32_t error; + int16_t initialized; + uint8_t buffer[UINT16_MAX]; + int64_t total_in; + int64_t max_total_in; + int64_t total_out; + uint32_t keys[3]; /* keys defining the pseudo-random sequence */ + uint8_t verify1; + uint8_t verify2; + const char *password; +} mz_stream_pkcrypt; + +/***************************************************************************/ + +#define mz_stream_pkcrypt_decode(strm, c) \ + (mz_stream_pkcrypt_update_keys(strm, \ + c ^= mz_stream_pkcrypt_decrypt_byte(strm))) + +#define mz_stream_pkcrypt_encode(strm, c, t) \ + (t = mz_stream_pkcrypt_decrypt_byte(strm), \ + mz_stream_pkcrypt_update_keys(strm, (uint8_t)c), (uint8_t)(t^(c))) + +/***************************************************************************/ + +static uint8_t mz_stream_pkcrypt_decrypt_byte(void *stream) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + + unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an */ + /* unpredictable manner on 16-bit systems; not a problem */ + /* with any known compiler so far, though. */ + + temp = pkcrypt->keys[2] | 2; + return (uint8_t)(((temp * (temp ^ 1)) >> 8) & 0xff); +} + +static uint8_t mz_stream_pkcrypt_update_keys(void *stream, uint8_t c) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + uint8_t buf = c; + + pkcrypt->keys[0] = (uint32_t)~mz_crypt_crc32_update(~pkcrypt->keys[0], &buf, 1); + + pkcrypt->keys[1] += pkcrypt->keys[0] & 0xff; + pkcrypt->keys[1] *= 134775813L; + pkcrypt->keys[1] += 1; + + buf = (uint8_t)(pkcrypt->keys[1] >> 24); + pkcrypt->keys[2] = (uint32_t)~mz_crypt_crc32_update(~pkcrypt->keys[2], &buf, 1); + + return (uint8_t)c; +} + +static void mz_stream_pkcrypt_init_keys(void *stream, const char *password) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + + pkcrypt->keys[0] = 305419896L; + pkcrypt->keys[1] = 591751049L; + pkcrypt->keys[2] = 878082192L; + + while (*password != 0) { + mz_stream_pkcrypt_update_keys(stream, (uint8_t)*password); + password += 1; + } +} + +/***************************************************************************/ + +int32_t mz_stream_pkcrypt_open(void *stream, const char *path, int32_t mode) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + uint16_t t = 0; + int16_t i = 0; + uint8_t verify1 = 0; + uint8_t verify2 = 0; + uint8_t header[MZ_PKCRYPT_HEADER_SIZE]; + const char *password = path; + + pkcrypt->total_in = 0; + pkcrypt->total_out = 0; + pkcrypt->initialized = 0; + + if (mz_stream_is_open(pkcrypt->stream.base) != MZ_OK) + return MZ_OPEN_ERROR; + + if (password == NULL) + password = pkcrypt->password; + if (password == NULL) + return MZ_PARAM_ERROR; + + mz_stream_pkcrypt_init_keys(stream, password); + + if (mode & MZ_OPEN_MODE_WRITE) { + /* First generate RAND_HEAD_LEN - 2 random bytes. */ + mz_crypt_rand(header, MZ_PKCRYPT_HEADER_SIZE - 2); + + /* Encrypt random header (last two bytes is high word of crc) */ + for (i = 0; i < MZ_PKCRYPT_HEADER_SIZE - 2; i++) + header[i] = mz_stream_pkcrypt_encode(stream, header[i], t); + + header[i++] = mz_stream_pkcrypt_encode(stream, pkcrypt->verify1, t); + header[i++] = mz_stream_pkcrypt_encode(stream, pkcrypt->verify2, t); + + if (mz_stream_write(pkcrypt->stream.base, header, sizeof(header)) != sizeof(header)) + return MZ_WRITE_ERROR; + + pkcrypt->total_out += MZ_PKCRYPT_HEADER_SIZE; + } else if (mode & MZ_OPEN_MODE_READ) { + if (mz_stream_read(pkcrypt->stream.base, header, sizeof(header)) != sizeof(header)) + return MZ_READ_ERROR; + + for (i = 0; i < MZ_PKCRYPT_HEADER_SIZE - 2; i++) + header[i] = mz_stream_pkcrypt_decode(stream, header[i]); + + verify1 = mz_stream_pkcrypt_decode(stream, header[i++]); + verify2 = mz_stream_pkcrypt_decode(stream, header[i++]); + + /* Older versions used 2 byte check, newer versions use 1 byte check. */ + MZ_UNUSED(verify1); + if ((verify2 != 0) && (verify2 != pkcrypt->verify2)) + return MZ_PASSWORD_ERROR; + + pkcrypt->total_in += MZ_PKCRYPT_HEADER_SIZE; + } + + pkcrypt->initialized = 1; + return MZ_OK; +} + +int32_t mz_stream_pkcrypt_is_open(void *stream) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + if (pkcrypt->initialized == 0) + return MZ_OPEN_ERROR; + return MZ_OK; +} + +int32_t mz_stream_pkcrypt_read(void *stream, void *buf, int32_t size) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + uint8_t *buf_ptr = (uint8_t *)buf; + int32_t bytes_to_read = size; + int32_t read = 0; + int32_t i = 0; + + + if ((int64_t)bytes_to_read > (pkcrypt->max_total_in - pkcrypt->total_in)) + bytes_to_read = (int32_t)(pkcrypt->max_total_in - pkcrypt->total_in); + + read = mz_stream_read(pkcrypt->stream.base, buf, bytes_to_read); + + for (i = 0; i < read; i++) + buf_ptr[i] = mz_stream_pkcrypt_decode(stream, buf_ptr[i]); + + if (read > 0) + pkcrypt->total_in += read; + + return read; +} + +int32_t mz_stream_pkcrypt_write(void *stream, const void *buf, int32_t size) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + const uint8_t *buf_ptr = (const uint8_t *)buf; + int32_t bytes_to_write = sizeof(pkcrypt->buffer); + int32_t total_written = 0; + int32_t written = 0; + int32_t i = 0; + uint16_t t = 0; + + if (size < 0) + return MZ_PARAM_ERROR; + + do { + if (bytes_to_write > (size - total_written)) + bytes_to_write = (size - total_written); + + for (i = 0; i < bytes_to_write; i += 1) { + pkcrypt->buffer[i] = mz_stream_pkcrypt_encode(stream, *buf_ptr, t); + buf_ptr += 1; + } + + written = mz_stream_write(pkcrypt->stream.base, pkcrypt->buffer, bytes_to_write); + if (written < 0) + return written; + + total_written += written; + } while (total_written < size && written > 0); + + pkcrypt->total_out += total_written; + return total_written; +} + +int64_t mz_stream_pkcrypt_tell(void *stream) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + return mz_stream_tell(pkcrypt->stream.base); +} + +int32_t mz_stream_pkcrypt_seek(void *stream, int64_t offset, int32_t origin) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + return mz_stream_seek(pkcrypt->stream.base, offset, origin); +} + +int32_t mz_stream_pkcrypt_close(void *stream) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + pkcrypt->initialized = 0; + return MZ_OK; +} + +int32_t mz_stream_pkcrypt_error(void *stream) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + return pkcrypt->error; +} + +void mz_stream_pkcrypt_set_password(void *stream, const char *password) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + pkcrypt->password = password; +} + +void mz_stream_pkcrypt_set_verify(void *stream, uint8_t verify1, uint8_t verify2) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + pkcrypt->verify1 = verify1; + pkcrypt->verify2 = verify2; +} + +void mz_stream_pkcrypt_get_verify(void *stream, uint8_t *verify1, uint8_t *verify2) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + *verify1 = pkcrypt->verify1; + *verify2 = pkcrypt->verify2; +} + +int32_t mz_stream_pkcrypt_get_prop_int64(void *stream, int32_t prop, int64_t *value) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + switch (prop) { + case MZ_STREAM_PROP_TOTAL_IN: + *value = pkcrypt->total_in; + break; + case MZ_STREAM_PROP_TOTAL_OUT: + *value = pkcrypt->total_out; + break; + case MZ_STREAM_PROP_TOTAL_IN_MAX: + *value = pkcrypt->max_total_in; + break; + case MZ_STREAM_PROP_HEADER_SIZE: + *value = MZ_PKCRYPT_HEADER_SIZE; + break; + case MZ_STREAM_PROP_FOOTER_SIZE: + *value = 0; + break; + default: + return MZ_EXIST_ERROR; + } + return MZ_OK; +} + +int32_t mz_stream_pkcrypt_set_prop_int64(void *stream, int32_t prop, int64_t value) { + mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream; + switch (prop) { + case MZ_STREAM_PROP_TOTAL_IN_MAX: + pkcrypt->max_total_in = value; + break; + default: + return MZ_EXIST_ERROR; + } + return MZ_OK; +} + +void *mz_stream_pkcrypt_create(void **stream) { + mz_stream_pkcrypt *pkcrypt = NULL; + + pkcrypt = (mz_stream_pkcrypt *)MZ_ALLOC(sizeof(mz_stream_pkcrypt)); + if (pkcrypt != NULL) { + memset(pkcrypt, 0, sizeof(mz_stream_pkcrypt)); + pkcrypt->stream.vtbl = &mz_stream_pkcrypt_vtbl; + } + + if (stream != NULL) + *stream = pkcrypt; + return pkcrypt; +} + +void mz_stream_pkcrypt_delete(void **stream) { + mz_stream_pkcrypt *pkcrypt = NULL; + if (stream == NULL) + return; + pkcrypt = (mz_stream_pkcrypt *)*stream; + if (pkcrypt != NULL) + MZ_FREE(pkcrypt); + *stream = NULL; +} + +void *mz_stream_pkcrypt_get_interface(void) { + return (void *)&mz_stream_pkcrypt_vtbl; +} diff --git a/Externals/minizip/mz_strm_pkcrypt.h b/Externals/minizip/mz_strm_pkcrypt.h new file mode 100644 index 000000000000..453f1f994851 --- /dev/null +++ b/Externals/minizip/mz_strm_pkcrypt.h @@ -0,0 +1,46 @@ +/* mz_strm_pkcrypt.h -- Code for traditional PKWARE encryption + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_STREAM_PKCRYPT_H +#define MZ_STREAM_PKCRYPT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +int32_t mz_stream_pkcrypt_open(void *stream, const char *filename, int32_t mode); +int32_t mz_stream_pkcrypt_is_open(void *stream); +int32_t mz_stream_pkcrypt_read(void *stream, void *buf, int32_t size); +int32_t mz_stream_pkcrypt_write(void *stream, const void *buf, int32_t size); +int64_t mz_stream_pkcrypt_tell(void *stream); +int32_t mz_stream_pkcrypt_seek(void *stream, int64_t offset, int32_t origin); +int32_t mz_stream_pkcrypt_close(void *stream); +int32_t mz_stream_pkcrypt_error(void *stream); + +void mz_stream_pkcrypt_set_password(void *stream, const char *password); +void mz_stream_pkcrypt_set_verify(void *stream, uint8_t verify1, uint8_t verify2); +void mz_stream_pkcrypt_get_verify(void *stream, uint8_t *verify1, uint8_t *verify2); +int32_t mz_stream_pkcrypt_get_prop_int64(void *stream, int32_t prop, int64_t *value); +int32_t mz_stream_pkcrypt_set_prop_int64(void *stream, int32_t prop, int64_t value); + +void* mz_stream_pkcrypt_create(void **stream); +void mz_stream_pkcrypt_delete(void **stream); + +void* mz_stream_pkcrypt_get_interface(void); + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/mz_strm_split.c b/Externals/minizip/mz_strm_split.c new file mode 100644 index 000000000000..12c8bda30396 --- /dev/null +++ b/Externals/minizip/mz_strm_split.c @@ -0,0 +1,438 @@ +/* mz_strm_split.c -- Stream for split files + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" +#include "mz_os.h" +#include "mz_strm.h" +#include "mz_strm_split.h" + +#include /* snprintf */ + +#if defined(_MSC_VER) && (_MSC_VER < 1900) +# define snprintf _snprintf +#endif + +/***************************************************************************/ + +#define MZ_ZIP_MAGIC_DISKHEADER (0x08074b50) + +/***************************************************************************/ + +static mz_stream_vtbl mz_stream_split_vtbl = { + mz_stream_split_open, + mz_stream_split_is_open, + mz_stream_split_read, + mz_stream_split_write, + mz_stream_split_tell, + mz_stream_split_seek, + mz_stream_split_close, + mz_stream_split_error, + mz_stream_split_create, + mz_stream_split_delete, + mz_stream_split_get_prop_int64, + mz_stream_split_set_prop_int64 +}; + +/***************************************************************************/ + +typedef struct mz_stream_split_s { + mz_stream stream; + int32_t is_open; + int64_t disk_size; + int64_t total_in; + int64_t total_in_disk; + int64_t total_out; + int64_t total_out_disk; + int32_t mode; + char *path_cd; + uint32_t path_cd_size; + char *path_disk; + uint32_t path_disk_size; + int32_t number_disk; + int32_t current_disk; + int64_t current_disk_size; + int32_t reached_end; +} mz_stream_split; + +/***************************************************************************/ + +#if 0 +# define mz_stream_split_print printf +#else +# define mz_stream_split_print(fmt,...) +#endif + +/***************************************************************************/ + +static int32_t mz_stream_split_open_disk(void *stream, int32_t number_disk) { + mz_stream_split *split = (mz_stream_split *)stream; + uint32_t magic = 0; + int64_t position = 0; + int32_t i = 0; + int32_t err = MZ_OK; + int16_t disk_part = 0; + + + /* Check if we are reading or writing a disk part or the cd disk */ + if (number_disk >= 0) { + if ((split->mode & MZ_OPEN_MODE_WRITE) == 0) + disk_part = MZ_OPEN_MODE_READ; + else if (split->disk_size > 0) + disk_part = MZ_OPEN_MODE_WRITE; + } + + /* Construct disk path */ + if (disk_part > 0) { + for (i = (int32_t)strlen(split->path_disk) - 1; i >= 0; i -= 1) { + if (split->path_disk[i] != '.') + continue; + snprintf(&split->path_disk[i], split->path_disk_size - (uint32_t)i, + ".z%02" PRId32, number_disk + 1); + break; + } + } else { + strncpy(split->path_disk, split->path_cd, split->path_disk_size - 1); + split->path_disk[split->path_disk_size - 1] = 0; + } + + mz_stream_split_print("Split - Goto disk - %s (disk %" PRId32 ")\n", split->path_disk, number_disk); + + /* If disk part doesn't exist during reading then return MZ_EXIST_ERROR */ + if (disk_part == MZ_OPEN_MODE_READ) + err = mz_os_file_exists(split->path_disk); + + if (err == MZ_OK) + err = mz_stream_open(split->stream.base, split->path_disk, split->mode); + + if (err == MZ_OK) { + split->total_in_disk = 0; + split->total_out_disk = 0; + split->current_disk = number_disk; + + if (split->mode & MZ_OPEN_MODE_WRITE) { + if ((split->current_disk == 0) && (split->disk_size > 0)) { + err = mz_stream_write_uint32(split->stream.base, MZ_ZIP_MAGIC_DISKHEADER); + + split->total_out_disk += 4; + split->total_out += split->total_out_disk; + } + } else if (split->mode & MZ_OPEN_MODE_READ) { + if (split->current_disk == 0) { + err = mz_stream_read_uint32(split->stream.base, &magic); + if (magic != MZ_ZIP_MAGIC_DISKHEADER) + err = MZ_FORMAT_ERROR; + } + } + } + + if (err == MZ_OK) { + /* Get the size of the current disk we are on */ + position = mz_stream_tell(split->stream.base); + mz_stream_seek(split->stream.base, 0, MZ_SEEK_END); + split->current_disk_size = mz_stream_tell(split->stream.base); + mz_stream_seek(split->stream.base, position, MZ_SEEK_SET); + + split->is_open = 1; + } + + return err; +} + +static int32_t mz_stream_split_close_disk(void *stream) { + mz_stream_split *split = (mz_stream_split *)stream; + + if (mz_stream_is_open(split->stream.base) != MZ_OK) + return MZ_OK; + + mz_stream_split_print("Split - Close disk\n"); + return mz_stream_close(split->stream.base); +} + +static int32_t mz_stream_split_goto_disk(void *stream, int32_t number_disk) { + mz_stream_split *split = (mz_stream_split *)stream; + int32_t err = MZ_OK; + int32_t err_is_open = MZ_OK; + + err_is_open = mz_stream_is_open(split->stream.base); + + if ((split->disk_size == 0) && (split->mode & MZ_OPEN_MODE_WRITE)) { + if (err_is_open != MZ_OK) + err = mz_stream_split_open_disk(stream, number_disk); + } else if ((number_disk != split->current_disk) || (err_is_open != MZ_OK)) { + err = mz_stream_split_close_disk(stream); + if (err == MZ_OK) { + err = mz_stream_split_open_disk(stream, number_disk); + if (err == MZ_OK) + split->number_disk = number_disk; + } + } + + return err; +} + +int32_t mz_stream_split_open(void *stream, const char *path, int32_t mode) { + mz_stream_split *split = (mz_stream_split *)stream; + int32_t number_disk = 0; + + split->mode = mode; + + split->path_cd_size = (uint32_t)strlen(path) + 1; + split->path_cd = (char *)MZ_ALLOC(split->path_cd_size); + + if (split->path_cd == NULL) + return MZ_MEM_ERROR; + + strncpy(split->path_cd, path, split->path_cd_size - 1); + split->path_cd[split->path_cd_size - 1] = 0; + + mz_stream_split_print("Split - Open - %s (disk %" PRId32 ")\n", split->path_cd, number_disk); + + split->path_disk_size = (uint32_t)strlen(path) + 10; + split->path_disk = (char *)MZ_ALLOC(split->path_disk_size); + + if (split->path_disk == NULL) { + MZ_FREE(split->path_cd); + return MZ_MEM_ERROR; + } + + strncpy(split->path_disk, path, split->path_disk_size - 1); + split->path_disk[split->path_disk_size - 1] = 0; + + if ((mode & MZ_OPEN_MODE_WRITE) && ((mode & MZ_OPEN_MODE_APPEND) == 0)) { + number_disk = 0; + split->current_disk = -1; + } else { + number_disk = -1; + split->current_disk = 0; + } + + return mz_stream_split_goto_disk(stream, number_disk); +} + +int32_t mz_stream_split_is_open(void *stream) { + mz_stream_split *split = (mz_stream_split *)stream; + if (split->is_open != 1) + return MZ_OPEN_ERROR; + return MZ_OK; +} + +int32_t mz_stream_split_read(void *stream, void *buf, int32_t size) { + mz_stream_split *split = (mz_stream_split *)stream; + int32_t bytes_left = size; + int32_t read = 0; + int32_t err = MZ_OK; + uint8_t *buf_ptr = (uint8_t *)buf; + + err = mz_stream_split_goto_disk(stream, split->number_disk); + if (err != MZ_OK) + return err; + + while (bytes_left > 0) { + read = mz_stream_read(split->stream.base, buf_ptr, bytes_left); + + mz_stream_split_print("Split - Read disk - %" PRId32 "\n", read); + + if (read < 0) + return read; + if (read == 0) { + if (split->current_disk < 0) /* No more disks to goto */ + break; + err = mz_stream_split_goto_disk(stream, split->current_disk + 1); + if (err == MZ_EXIST_ERROR) { + split->current_disk = -1; + break; + } + if (err != MZ_OK) + return err; + } + + bytes_left -= read; + buf_ptr += read; + split->total_in += read; + split->total_in_disk += read; + } + return size - bytes_left; +} + +int32_t mz_stream_split_write(void *stream, const void *buf, int32_t size) { + mz_stream_split *split = (mz_stream_split *)stream; + int64_t position = 0; + int32_t written = 0; + int32_t bytes_left = size; + int32_t bytes_to_write = 0; + int32_t bytes_avail = 0; + int32_t number_disk = -1; + int32_t err = MZ_OK; + const uint8_t *buf_ptr = (const uint8_t *)buf; + + position = mz_stream_tell(split->stream.base); + + while (bytes_left > 0) { + bytes_to_write = bytes_left; + + if (split->disk_size > 0) { + if ((split->total_out_disk == split->disk_size && split->total_out > 0) || + (split->number_disk == -1 && split->number_disk != split->current_disk)) { + if (split->number_disk != -1) + number_disk = split->current_disk + 1; + + err = mz_stream_split_goto_disk(stream, number_disk); + if (err != MZ_OK) + return err; + } + + if (split->number_disk != -1) { + bytes_avail = (int32_t)(split->disk_size - split->total_out_disk); + if (bytes_to_write > bytes_avail) + bytes_to_write = bytes_avail; + } + } + + written = mz_stream_write(split->stream.base, buf_ptr, bytes_to_write); + if (written != bytes_to_write) + return MZ_WRITE_ERROR; + + mz_stream_split_print("Split - Write disk - %" PRId32 "\n", written); + + bytes_left -= written; + buf_ptr += written; + + split->total_out += written; + split->total_out_disk += written; + + if (position == split->current_disk_size) { + split->current_disk_size += written; + position = split->current_disk_size; + } + } + + return size - bytes_left; +} + +int64_t mz_stream_split_tell(void *stream) { + mz_stream_split *split = (mz_stream_split *)stream; + int32_t err = MZ_OK; + err = mz_stream_split_goto_disk(stream, split->number_disk); + if (err != MZ_OK) + return err; + return mz_stream_tell(split->stream.base); +} + +int32_t mz_stream_split_seek(void *stream, int64_t offset, int32_t origin) { + mz_stream_split *split = (mz_stream_split *)stream; + int64_t disk_left = 0; + int64_t position = 0; + int32_t err = MZ_OK; + + err = mz_stream_split_goto_disk(stream, split->number_disk); + + if (err != MZ_OK) + return err; + + mz_stream_split_print("Split - Seek disk - %" PRId64 " (origin %" PRId32 ")\n", offset, origin); + + if ((origin == MZ_SEEK_CUR) && (split->number_disk != -1)) { + position = mz_stream_tell(split->stream.base); + disk_left = split->current_disk_size - position; + + while (offset > disk_left) { + err = mz_stream_split_goto_disk(stream, split->current_disk + 1); + if (err != MZ_OK) + return err; + + offset -= disk_left; + disk_left = split->current_disk_size; + } + } + + return mz_stream_seek(split->stream.base, offset, origin); +} + +int32_t mz_stream_split_close(void *stream) { + mz_stream_split *split = (mz_stream_split *)stream; + int32_t err = MZ_OK; + + err = mz_stream_split_close_disk(stream); + split->is_open = 0; + return err; +} + +int32_t mz_stream_split_error(void *stream) { + mz_stream_split *split = (mz_stream_split *)stream; + return mz_stream_error(split->stream.base); +} + +int32_t mz_stream_split_get_prop_int64(void *stream, int32_t prop, int64_t *value) { + mz_stream_split *split = (mz_stream_split *)stream; + switch (prop) { + case MZ_STREAM_PROP_TOTAL_OUT: + *value = split->total_out; + break; + case MZ_STREAM_PROP_DISK_NUMBER: + *value = split->number_disk; + break; + case MZ_STREAM_PROP_DISK_SIZE: + *value = split->disk_size; + break; + default: + return MZ_EXIST_ERROR; + } + return MZ_OK; +} + +int32_t mz_stream_split_set_prop_int64(void *stream, int32_t prop, int64_t value) { + mz_stream_split *split = (mz_stream_split *)stream; + switch (prop) { + case MZ_STREAM_PROP_DISK_NUMBER: + split->number_disk = (int32_t)value; + break; + case MZ_STREAM_PROP_DISK_SIZE: + split->disk_size = value; + break; + default: + return MZ_EXIST_ERROR; + } + return MZ_OK; +} + +void *mz_stream_split_create(void **stream) { + mz_stream_split *split = NULL; + + split = (mz_stream_split *)MZ_ALLOC(sizeof(mz_stream_split)); + if (split != NULL) { + memset(split, 0, sizeof(mz_stream_split)); + split->stream.vtbl = &mz_stream_split_vtbl; + } + if (stream != NULL) + *stream = split; + + return split; +} + +void mz_stream_split_delete(void **stream) { + mz_stream_split *split = NULL; + if (stream == NULL) + return; + split = (mz_stream_split *)*stream; + if (split != NULL) { + if (split->path_cd) + MZ_FREE(split->path_cd); + if (split->path_disk) + MZ_FREE(split->path_disk); + + MZ_FREE(split); + } + *stream = NULL; +} + +void *mz_stream_split_get_interface(void) { + return (void *)&mz_stream_split_vtbl; +} diff --git a/Externals/minizip/mz_strm_split.h b/Externals/minizip/mz_strm_split.h new file mode 100644 index 000000000000..da404dae2aaa --- /dev/null +++ b/Externals/minizip/mz_strm_split.h @@ -0,0 +1,43 @@ +/* mz_strm_split.h -- Stream for split files + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_STREAM_SPLIT_H +#define MZ_STREAM_SPLIT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +int32_t mz_stream_split_open(void *stream, const char *filename, int32_t mode); +int32_t mz_stream_split_is_open(void *stream); +int32_t mz_stream_split_read(void *stream, void *buf, int32_t size); +int32_t mz_stream_split_write(void *stream, const void *buf, int32_t size); +int64_t mz_stream_split_tell(void *stream); +int32_t mz_stream_split_seek(void *stream, int64_t offset, int32_t origin); +int32_t mz_stream_split_close(void *stream); +int32_t mz_stream_split_error(void *stream); + +int32_t mz_stream_split_get_prop_int64(void *stream, int32_t prop, int64_t *value); +int32_t mz_stream_split_set_prop_int64(void *stream, int32_t prop, int64_t value); + +void* mz_stream_split_create(void **stream); +void mz_stream_split_delete(void **stream); + +void* mz_stream_split_get_interface(void); + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/mz_strm_wzaes.c b/Externals/minizip/mz_strm_wzaes.c new file mode 100644 index 000000000000..fd0119991a9b --- /dev/null +++ b/Externals/minizip/mz_strm_wzaes.c @@ -0,0 +1,362 @@ +/* mz_strm_wzaes.c -- Stream for WinZip AES encryption + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + Copyright (C) 1998-2010 Brian Gladman, Worcester, UK + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" +#include "mz_crypt.h" +#include "mz_strm.h" +#include "mz_strm_wzaes.h" + +/***************************************************************************/ + +#define MZ_AES_KEYING_ITERATIONS (1000) +#define MZ_AES_SALT_LENGTH(MODE) (4 * (MODE & 3) + 4) +#define MZ_AES_SALT_LENGTH_MAX (16) +#define MZ_AES_PW_LENGTH_MAX (128) +#define MZ_AES_PW_VERIFY_SIZE (2) +#define MZ_AES_AUTHCODE_SIZE (10) + +/***************************************************************************/ + +static mz_stream_vtbl mz_stream_wzaes_vtbl = { + mz_stream_wzaes_open, + mz_stream_wzaes_is_open, + mz_stream_wzaes_read, + mz_stream_wzaes_write, + mz_stream_wzaes_tell, + mz_stream_wzaes_seek, + mz_stream_wzaes_close, + mz_stream_wzaes_error, + mz_stream_wzaes_create, + mz_stream_wzaes_delete, + mz_stream_wzaes_get_prop_int64, + mz_stream_wzaes_set_prop_int64 +}; + +/***************************************************************************/ + +typedef struct mz_stream_wzaes_s { + mz_stream stream; + int32_t mode; + int32_t error; + int16_t initialized; + uint8_t buffer[UINT16_MAX]; + int64_t total_in; + int64_t max_total_in; + int64_t total_out; + int16_t encryption_mode; + const char *password; + void *aes; + uint32_t crypt_pos; + uint8_t crypt_block[MZ_AES_BLOCK_SIZE]; + void *hmac; + uint8_t nonce[MZ_AES_BLOCK_SIZE]; +} mz_stream_wzaes; + +/***************************************************************************/ + +int32_t mz_stream_wzaes_open(void *stream, const char *path, int32_t mode) { + mz_stream_wzaes *wzaes = (mz_stream_wzaes *)stream; + uint16_t salt_length = 0; + uint16_t password_length = 0; + uint16_t key_length = 0; + uint8_t kbuf[2 * MZ_AES_KEY_LENGTH_MAX + MZ_AES_PW_VERIFY_SIZE]; + uint8_t verify[MZ_AES_PW_VERIFY_SIZE]; + uint8_t verify_expected[MZ_AES_PW_VERIFY_SIZE]; + uint8_t salt_value[MZ_AES_SALT_LENGTH_MAX]; + const char *password = path; + + wzaes->total_in = 0; + wzaes->total_out = 0; + wzaes->initialized = 0; + + if (mz_stream_is_open(wzaes->stream.base) != MZ_OK) + return MZ_OPEN_ERROR; + + if (password == NULL) + password = wzaes->password; + if (password == NULL) + return MZ_PARAM_ERROR; + password_length = (uint16_t)strlen(password); + if (password_length > MZ_AES_PW_LENGTH_MAX) + return MZ_PARAM_ERROR; + + if (wzaes->encryption_mode < 1 || wzaes->encryption_mode > 3) + return MZ_PARAM_ERROR; + + salt_length = MZ_AES_SALT_LENGTH(wzaes->encryption_mode); + + if (mode & MZ_OPEN_MODE_WRITE) { + mz_crypt_rand(salt_value, salt_length); + } else if (mode & MZ_OPEN_MODE_READ) { + if (mz_stream_read(wzaes->stream.base, salt_value, salt_length) != salt_length) + return MZ_READ_ERROR; + } + + key_length = MZ_AES_KEY_LENGTH(wzaes->encryption_mode); + + /* Derive the encryption and authentication keys and the password verifier */ + mz_crypt_pbkdf2((uint8_t *)password, password_length, salt_value, salt_length, + MZ_AES_KEYING_ITERATIONS, kbuf, 2 * key_length + MZ_AES_PW_VERIFY_SIZE); + + /* Initialize the encryption nonce and buffer pos */ + wzaes->crypt_pos = MZ_AES_BLOCK_SIZE; + memset(wzaes->nonce, 0, sizeof(wzaes->nonce)); + + /* Initialize for encryption using key 1 */ + mz_crypt_aes_reset(wzaes->aes); + mz_crypt_aes_set_mode(wzaes->aes, wzaes->encryption_mode); + mz_crypt_aes_set_encrypt_key(wzaes->aes, kbuf, key_length); + + /* Initialize for authentication using key 2 */ + mz_crypt_hmac_reset(wzaes->hmac); + mz_crypt_hmac_set_algorithm(wzaes->hmac, MZ_HASH_SHA1); + mz_crypt_hmac_init(wzaes->hmac, kbuf + key_length, key_length); + + memcpy(verify, kbuf + (2 * key_length), MZ_AES_PW_VERIFY_SIZE); + + if (mode & MZ_OPEN_MODE_WRITE) { + if (mz_stream_write(wzaes->stream.base, salt_value, salt_length) != salt_length) + return MZ_WRITE_ERROR; + + wzaes->total_out += salt_length; + + if (mz_stream_write(wzaes->stream.base, verify, MZ_AES_PW_VERIFY_SIZE) != MZ_AES_PW_VERIFY_SIZE) + return MZ_WRITE_ERROR; + + wzaes->total_out += MZ_AES_PW_VERIFY_SIZE; + } else if (mode & MZ_OPEN_MODE_READ) { + wzaes->total_in += salt_length; + + if (mz_stream_read(wzaes->stream.base, verify_expected, MZ_AES_PW_VERIFY_SIZE) != MZ_AES_PW_VERIFY_SIZE) + return MZ_READ_ERROR; + + wzaes->total_in += MZ_AES_PW_VERIFY_SIZE; + + if (memcmp(verify_expected, verify, MZ_AES_PW_VERIFY_SIZE) != 0) + return MZ_PASSWORD_ERROR; + } + + wzaes->mode = mode; + wzaes->initialized = 1; + + return MZ_OK; +} + +int32_t mz_stream_wzaes_is_open(void *stream) { + mz_stream_wzaes *wzaes = (mz_stream_wzaes *)stream; + if (wzaes->initialized == 0) + return MZ_OPEN_ERROR; + return MZ_OK; +} + +static int32_t mz_stream_wzaes_ctr_encrypt(void *stream, uint8_t *buf, int32_t size) { + mz_stream_wzaes *wzaes = (mz_stream_wzaes *)stream; + uint32_t pos = wzaes->crypt_pos; + uint32_t i = 0; + int32_t err = MZ_OK; + + while (i < (uint32_t)size) { + if (pos == MZ_AES_BLOCK_SIZE) { + uint32_t j = 0; + + /* Increment encryption nonce */ + while (j < 8 && !++wzaes->nonce[j]) + j += 1; + + /* Encrypt the nonce to form next xor buffer */ + memcpy(wzaes->crypt_block, wzaes->nonce, MZ_AES_BLOCK_SIZE); + mz_crypt_aes_encrypt(wzaes->aes, wzaes->crypt_block, sizeof(wzaes->crypt_block)); + pos = 0; + } + + buf[i++] ^= wzaes->crypt_block[pos++]; + } + + wzaes->crypt_pos = pos; + return err; +} + +int32_t mz_stream_wzaes_read(void *stream, void *buf, int32_t size) { + mz_stream_wzaes *wzaes = (mz_stream_wzaes *)stream; + int64_t max_total_in = 0; + int32_t bytes_to_read = size; + int32_t read = 0; + + max_total_in = wzaes->max_total_in - MZ_AES_FOOTER_SIZE; + if ((int64_t)bytes_to_read > (max_total_in - wzaes->total_in)) + bytes_to_read = (int32_t)(max_total_in - wzaes->total_in); + + read = mz_stream_read(wzaes->stream.base, buf, bytes_to_read); + + if (read > 0) { + mz_crypt_hmac_update(wzaes->hmac, (uint8_t *)buf, read); + mz_stream_wzaes_ctr_encrypt(stream, (uint8_t *)buf, read); + + wzaes->total_in += read; + } + + return read; +} + +int32_t mz_stream_wzaes_write(void *stream, const void *buf, int32_t size) { + mz_stream_wzaes *wzaes = (mz_stream_wzaes *)stream; + const uint8_t *buf_ptr = (const uint8_t *)buf; + int32_t bytes_to_write = sizeof(wzaes->buffer); + int32_t total_written = 0; + int32_t written = 0; + + if (size < 0) + return MZ_PARAM_ERROR; + + do { + if (bytes_to_write > (size - total_written)) + bytes_to_write = (size - total_written); + + memcpy(wzaes->buffer, buf_ptr, bytes_to_write); + buf_ptr += bytes_to_write; + + mz_stream_wzaes_ctr_encrypt(stream, (uint8_t *)wzaes->buffer, bytes_to_write); + mz_crypt_hmac_update(wzaes->hmac, wzaes->buffer, bytes_to_write); + + written = mz_stream_write(wzaes->stream.base, wzaes->buffer, bytes_to_write); + if (written < 0) + return written; + + total_written += written; + } while (total_written < size && written > 0); + + wzaes->total_out += total_written; + return total_written; +} + +int64_t mz_stream_wzaes_tell(void *stream) { + mz_stream_wzaes *wzaes = (mz_stream_wzaes *)stream; + return mz_stream_tell(wzaes->stream.base); +} + +int32_t mz_stream_wzaes_seek(void *stream, int64_t offset, int32_t origin) { + mz_stream_wzaes *wzaes = (mz_stream_wzaes *)stream; + return mz_stream_seek(wzaes->stream.base, offset, origin); +} + +int32_t mz_stream_wzaes_close(void *stream) { + mz_stream_wzaes *wzaes = (mz_stream_wzaes *)stream; + uint8_t expected_hash[MZ_AES_AUTHCODE_SIZE]; + uint8_t computed_hash[MZ_HASH_SHA1_SIZE]; + + mz_crypt_hmac_end(wzaes->hmac, computed_hash, sizeof(computed_hash)); + + if (wzaes->mode & MZ_OPEN_MODE_WRITE) { + if (mz_stream_write(wzaes->stream.base, computed_hash, MZ_AES_AUTHCODE_SIZE) != MZ_AES_AUTHCODE_SIZE) + return MZ_WRITE_ERROR; + + wzaes->total_out += MZ_AES_AUTHCODE_SIZE; + } else if (wzaes->mode & MZ_OPEN_MODE_READ) { + if (mz_stream_read(wzaes->stream.base, expected_hash, MZ_AES_AUTHCODE_SIZE) != MZ_AES_AUTHCODE_SIZE) + return MZ_READ_ERROR; + + wzaes->total_in += MZ_AES_AUTHCODE_SIZE; + + /* If entire entry was not read this will fail */ + if (memcmp(computed_hash, expected_hash, MZ_AES_AUTHCODE_SIZE) != 0) + return MZ_CRC_ERROR; + } + + wzaes->initialized = 0; + return MZ_OK; +} + +int32_t mz_stream_wzaes_error(void *stream) { + mz_stream_wzaes *wzaes = (mz_stream_wzaes *)stream; + return wzaes->error; +} + +void mz_stream_wzaes_set_password(void *stream, const char *password) { + mz_stream_wzaes *wzaes = (mz_stream_wzaes *)stream; + wzaes->password = password; +} + +void mz_stream_wzaes_set_encryption_mode(void *stream, int16_t encryption_mode) { + mz_stream_wzaes *wzaes = (mz_stream_wzaes *)stream; + wzaes->encryption_mode = encryption_mode; +} + +int32_t mz_stream_wzaes_get_prop_int64(void *stream, int32_t prop, int64_t *value) { + mz_stream_wzaes *wzaes = (mz_stream_wzaes *)stream; + switch (prop) { + case MZ_STREAM_PROP_TOTAL_IN: + *value = wzaes->total_in; + break; + case MZ_STREAM_PROP_TOTAL_OUT: + *value = wzaes->total_out; + break; + case MZ_STREAM_PROP_TOTAL_IN_MAX: + *value = wzaes->max_total_in; + break; + case MZ_STREAM_PROP_HEADER_SIZE: + *value = MZ_AES_SALT_LENGTH((int64_t)wzaes->encryption_mode) + MZ_AES_PW_VERIFY_SIZE; + break; + case MZ_STREAM_PROP_FOOTER_SIZE: + *value = MZ_AES_AUTHCODE_SIZE; + break; + default: + return MZ_EXIST_ERROR; + } + return MZ_OK; +} + +int32_t mz_stream_wzaes_set_prop_int64(void *stream, int32_t prop, int64_t value) { + mz_stream_wzaes *wzaes = (mz_stream_wzaes *)stream; + switch (prop) { + case MZ_STREAM_PROP_TOTAL_IN_MAX: + wzaes->max_total_in = value; + break; + default: + return MZ_EXIST_ERROR; + } + return MZ_OK; +} + +void *mz_stream_wzaes_create(void **stream) { + mz_stream_wzaes *wzaes = NULL; + + wzaes = (mz_stream_wzaes *)MZ_ALLOC(sizeof(mz_stream_wzaes)); + if (wzaes != NULL) { + memset(wzaes, 0, sizeof(mz_stream_wzaes)); + wzaes->stream.vtbl = &mz_stream_wzaes_vtbl; + wzaes->encryption_mode = MZ_AES_ENCRYPTION_MODE_256; + + mz_crypt_hmac_create(&wzaes->hmac); + mz_crypt_aes_create(&wzaes->aes); + } + if (stream != NULL) + *stream = wzaes; + + return wzaes; +} + +void mz_stream_wzaes_delete(void **stream) { + mz_stream_wzaes *wzaes = NULL; + if (stream == NULL) + return; + wzaes = (mz_stream_wzaes *)*stream; + if (wzaes != NULL) { + mz_crypt_aes_delete(&wzaes->aes); + mz_crypt_hmac_delete(&wzaes->hmac); + MZ_FREE(wzaes); + } + *stream = NULL; +} + +void *mz_stream_wzaes_get_interface(void) { + return (void *)&mz_stream_wzaes_vtbl; +} diff --git a/Externals/minizip/mz_strm_wzaes.h b/Externals/minizip/mz_strm_wzaes.h new file mode 100644 index 000000000000..e27f11203f0e --- /dev/null +++ b/Externals/minizip/mz_strm_wzaes.h @@ -0,0 +1,46 @@ +/* mz_strm_wzaes.h -- Stream for WinZIP AES encryption + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_STREAM_WZAES_SHA1_H +#define MZ_STREAM_WZAES_SHA1_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +int32_t mz_stream_wzaes_open(void *stream, const char *filename, int32_t mode); +int32_t mz_stream_wzaes_is_open(void *stream); +int32_t mz_stream_wzaes_read(void *stream, void *buf, int32_t size); +int32_t mz_stream_wzaes_write(void *stream, const void *buf, int32_t size); +int64_t mz_stream_wzaes_tell(void *stream); +int32_t mz_stream_wzaes_seek(void *stream, int64_t offset, int32_t origin); +int32_t mz_stream_wzaes_close(void *stream); +int32_t mz_stream_wzaes_error(void *stream); + +void mz_stream_wzaes_set_password(void *stream, const char *password); +void mz_stream_wzaes_set_encryption_mode(void *stream, int16_t encryption_mode); + +int32_t mz_stream_wzaes_get_prop_int64(void *stream, int32_t prop, int64_t *value); +int32_t mz_stream_wzaes_set_prop_int64(void *stream, int32_t prop, int64_t value); + +void* mz_stream_wzaes_create(void **stream); +void mz_stream_wzaes_delete(void **stream); + +void* mz_stream_wzaes_get_interface(void); + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/mz_strm_zlib.c b/Externals/minizip/mz_strm_zlib.c new file mode 100644 index 000000000000..e83bbac91a6f --- /dev/null +++ b/Externals/minizip/mz_strm_zlib.c @@ -0,0 +1,393 @@ +/* mz_strm_zlib.c -- Stream for zlib inflate/deflate + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" +#include "mz_strm.h" +#include "mz_strm_zlib.h" + +#include "zlib.h" +#if defined(ZLIBNG_VERNUM) && !defined(ZLIB_COMPAT) +# include "zlib-ng.h" +#endif + +/***************************************************************************/ + +#if defined(ZLIBNG_VERNUM) && !defined(ZLIB_COMPAT) +# define ZLIB_PREFIX(x) zng_ ## x + typedef zng_stream zlib_stream; +#else +# define ZLIB_PREFIX(x) x + typedef z_stream zlib_stream; +#endif + +#if !defined(DEF_MEM_LEVEL) +# if MAX_MEM_LEVEL >= 8 +# define DEF_MEM_LEVEL 8 +# else +# define DEF_MEM_LEVEL MAX_MEM_LEVEL +# endif +#endif + +/***************************************************************************/ + +static mz_stream_vtbl mz_stream_zlib_vtbl = { + mz_stream_zlib_open, + mz_stream_zlib_is_open, + mz_stream_zlib_read, + mz_stream_zlib_write, + mz_stream_zlib_tell, + mz_stream_zlib_seek, + mz_stream_zlib_close, + mz_stream_zlib_error, + mz_stream_zlib_create, + mz_stream_zlib_delete, + mz_stream_zlib_get_prop_int64, + mz_stream_zlib_set_prop_int64 +}; + +/***************************************************************************/ + +typedef struct mz_stream_zlib_s { + mz_stream stream; + zlib_stream zstream; + uint8_t buffer[INT16_MAX]; + int32_t buffer_len; + int64_t total_in; + int64_t total_out; + int64_t max_total_in; + int8_t initialized; + int16_t level; + int32_t window_bits; + int32_t mode; + int32_t error; +} mz_stream_zlib; + +/***************************************************************************/ + +int32_t mz_stream_zlib_open(void *stream, const char *path, int32_t mode) { + mz_stream_zlib *zlib = (mz_stream_zlib *)stream; + + MZ_UNUSED(path); + + zlib->zstream.data_type = Z_BINARY; + zlib->zstream.zalloc = Z_NULL; + zlib->zstream.zfree = Z_NULL; + zlib->zstream.opaque = Z_NULL; + zlib->zstream.total_in = 0; + zlib->zstream.total_out = 0; + + zlib->total_in = 0; + zlib->total_out = 0; + + if (mode & MZ_OPEN_MODE_WRITE) { +#ifdef MZ_ZIP_NO_COMPRESSION + return MZ_SUPPORT_ERROR; +#else + zlib->zstream.next_out = zlib->buffer; + zlib->zstream.avail_out = sizeof(zlib->buffer); + + zlib->error = ZLIB_PREFIX(deflateInit2)(&zlib->zstream, (int8_t)zlib->level, Z_DEFLATED, + zlib->window_bits, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY); +#endif + } else if (mode & MZ_OPEN_MODE_READ) { +#ifdef MZ_ZIP_NO_DECOMPRESSION + return MZ_SUPPORT_ERROR; +#else + zlib->zstream.next_in = zlib->buffer; + zlib->zstream.avail_in = 0; + + zlib->error = ZLIB_PREFIX(inflateInit2)(&zlib->zstream, zlib->window_bits); +#endif + } + + if (zlib->error != Z_OK) + return MZ_OPEN_ERROR; + + zlib->initialized = 1; + zlib->mode = mode; + return MZ_OK; +} + +int32_t mz_stream_zlib_is_open(void *stream) { + mz_stream_zlib *zlib = (mz_stream_zlib *)stream; + if (zlib->initialized != 1) + return MZ_OPEN_ERROR; + return MZ_OK; +} + +int32_t mz_stream_zlib_read(void *stream, void *buf, int32_t size) { +#ifdef MZ_ZIP_NO_DECOMPRESSION + MZ_UNUSED(stream); + MZ_UNUSED(buf); + MZ_UNUSED(size); + return MZ_SUPPORT_ERROR; +#else + mz_stream_zlib *zlib = (mz_stream_zlib *)stream; + uint64_t total_in_before = 0; + uint64_t total_in_after = 0; + uint64_t total_out_before = 0; + uint64_t total_out_after = 0; + uint32_t total_in = 0; + uint32_t total_out = 0; + uint32_t in_bytes = 0; + uint32_t out_bytes = 0; + int32_t bytes_to_read = sizeof(zlib->buffer); + int32_t read = 0; + int32_t err = Z_OK; + + + zlib->zstream.next_out = (Bytef*)buf; + zlib->zstream.avail_out = (uInt)size; + + do { + if (zlib->zstream.avail_in == 0) { + if (zlib->max_total_in > 0) { + if ((int64_t)bytes_to_read > (zlib->max_total_in - zlib->total_in)) + bytes_to_read = (int32_t)(zlib->max_total_in - zlib->total_in); + } + + read = mz_stream_read(zlib->stream.base, zlib->buffer, bytes_to_read); + + if (read < 0) + return read; + + zlib->zstream.next_in = zlib->buffer; + zlib->zstream.avail_in = read; + } + + total_in_before = zlib->zstream.avail_in; + total_out_before = zlib->zstream.total_out; + + err = ZLIB_PREFIX(inflate)(&zlib->zstream, Z_SYNC_FLUSH); + if ((err >= Z_OK) && (zlib->zstream.msg != NULL)) { + zlib->error = Z_DATA_ERROR; + break; + } + + total_in_after = zlib->zstream.avail_in; + total_out_after = zlib->zstream.total_out; + + in_bytes = (uint32_t)(total_in_before - total_in_after); + out_bytes = (uint32_t)(total_out_after - total_out_before); + + total_in += in_bytes; + total_out += out_bytes; + + zlib->total_in += in_bytes; + zlib->total_out += out_bytes; + + if (err == Z_STREAM_END) + break; + if (err != Z_OK) { + zlib->error = err; + break; + } + } while (zlib->zstream.avail_out > 0); + + if (zlib->error != 0) { + /* Zlib errors are compatible with MZ */ + return zlib->error; + } + + return total_out; +#endif +} + +#ifndef MZ_ZIP_NO_COMPRESSION +static int32_t mz_stream_zlib_flush(void *stream) { + mz_stream_zlib *zlib = (mz_stream_zlib *)stream; + if (mz_stream_write(zlib->stream.base, zlib->buffer, zlib->buffer_len) != zlib->buffer_len) + return MZ_WRITE_ERROR; + return MZ_OK; +} + +static int32_t mz_stream_zlib_deflate(void *stream, int flush) { + mz_stream_zlib *zlib = (mz_stream_zlib *)stream; + uint64_t total_out_before = 0; + uint64_t total_out_after = 0; + int32_t out_bytes = 0; + int32_t err = Z_OK; + + + do { + if (zlib->zstream.avail_out == 0) { + err = mz_stream_zlib_flush(zlib); + if (err != MZ_OK) + return err; + + zlib->zstream.avail_out = sizeof(zlib->buffer); + zlib->zstream.next_out = zlib->buffer; + + zlib->buffer_len = 0; + } + + total_out_before = zlib->zstream.total_out; + err = ZLIB_PREFIX(deflate)(&zlib->zstream, flush); + total_out_after = zlib->zstream.total_out; + + out_bytes = (uint32_t)(total_out_after - total_out_before); + + zlib->buffer_len += out_bytes; + zlib->total_out += out_bytes; + + if (err == Z_STREAM_END) + break; + if (err != Z_OK) { + zlib->error = err; + return MZ_DATA_ERROR; + } + } while ((zlib->zstream.avail_in > 0) || (flush == Z_FINISH && err == Z_OK)); + + return MZ_OK; +} +#endif + +int32_t mz_stream_zlib_write(void *stream, const void *buf, int32_t size) { +#ifdef MZ_ZIP_NO_COMPRESSION + MZ_UNUSED(stream); + MZ_UNUSED(buf); + MZ_UNUSED(size); + return MZ_SUPPORT_ERROR; +#else + mz_stream_zlib *zlib = (mz_stream_zlib *)stream; + int32_t err = MZ_OK; + + zlib->zstream.next_in = (Bytef*)(intptr_t)buf; + zlib->zstream.avail_in = (uInt)size; + + err = mz_stream_zlib_deflate(stream, Z_NO_FLUSH); + if (err != MZ_OK) { + return err; + } + + zlib->total_in += size; + return size; +#endif +} + +int64_t mz_stream_zlib_tell(void *stream) { + MZ_UNUSED(stream); + + return MZ_TELL_ERROR; +} + +int32_t mz_stream_zlib_seek(void *stream, int64_t offset, int32_t origin) { + MZ_UNUSED(stream); + MZ_UNUSED(offset); + MZ_UNUSED(origin); + + return MZ_SEEK_ERROR; +} + +int32_t mz_stream_zlib_close(void *stream) { + mz_stream_zlib *zlib = (mz_stream_zlib *)stream; + + + if (zlib->mode & MZ_OPEN_MODE_WRITE) { +#ifdef MZ_ZIP_NO_COMPRESSION + return MZ_SUPPORT_ERROR; +#else + mz_stream_zlib_deflate(stream, Z_FINISH); + mz_stream_zlib_flush(stream); + + ZLIB_PREFIX(deflateEnd)(&zlib->zstream); +#endif + } else if (zlib->mode & MZ_OPEN_MODE_READ) { +#ifdef MZ_ZIP_NO_DECOMPRESSION + return MZ_SUPPORT_ERROR; +#else + ZLIB_PREFIX(inflateEnd)(&zlib->zstream); +#endif + } + + zlib->initialized = 0; + + if (zlib->error != Z_OK) + return MZ_CLOSE_ERROR; + return MZ_OK; +} + +int32_t mz_stream_zlib_error(void *stream) { + mz_stream_zlib *zlib = (mz_stream_zlib *)stream; + return zlib->error; +} + +int32_t mz_stream_zlib_get_prop_int64(void *stream, int32_t prop, int64_t *value) { + mz_stream_zlib *zlib = (mz_stream_zlib *)stream; + switch (prop) { + case MZ_STREAM_PROP_TOTAL_IN: + *value = zlib->total_in; + break; + case MZ_STREAM_PROP_TOTAL_IN_MAX: + *value = zlib->max_total_in; + break; + case MZ_STREAM_PROP_TOTAL_OUT: + *value = zlib->total_out; + break; + case MZ_STREAM_PROP_HEADER_SIZE: + *value = 0; + break; + case MZ_STREAM_PROP_COMPRESS_WINDOW: + *value = zlib->window_bits; + break; + default: + return MZ_EXIST_ERROR; + } + return MZ_OK; +} + +int32_t mz_stream_zlib_set_prop_int64(void *stream, int32_t prop, int64_t value) { + mz_stream_zlib *zlib = (mz_stream_zlib *)stream; + switch (prop) { + case MZ_STREAM_PROP_COMPRESS_LEVEL: + zlib->level = (int16_t)value; + break; + case MZ_STREAM_PROP_TOTAL_IN_MAX: + zlib->max_total_in = value; + break; + case MZ_STREAM_PROP_COMPRESS_WINDOW: + zlib->window_bits = (int32_t)value; + break; + default: + return MZ_EXIST_ERROR; + } + return MZ_OK; +} + +void *mz_stream_zlib_create(void **stream) { + mz_stream_zlib *zlib = NULL; + + zlib = (mz_stream_zlib *)MZ_ALLOC(sizeof(mz_stream_zlib)); + if (zlib != NULL) { + memset(zlib, 0, sizeof(mz_stream_zlib)); + zlib->stream.vtbl = &mz_stream_zlib_vtbl; + zlib->level = Z_DEFAULT_COMPRESSION; + zlib->window_bits = -MAX_WBITS; + } + if (stream != NULL) + *stream = zlib; + + return zlib; +} + +void mz_stream_zlib_delete(void **stream) { + mz_stream_zlib *zlib = NULL; + if (stream == NULL) + return; + zlib = (mz_stream_zlib *)*stream; + if (zlib != NULL) + MZ_FREE(zlib); + *stream = NULL; +} + +void *mz_stream_zlib_get_interface(void) { + return (void *)&mz_stream_zlib_vtbl; +} diff --git a/Externals/minizip/mz_strm_zlib.h b/Externals/minizip/mz_strm_zlib.h new file mode 100644 index 000000000000..47f74804fb45 --- /dev/null +++ b/Externals/minizip/mz_strm_zlib.h @@ -0,0 +1,43 @@ +/* mz_strm_zlib.h -- Stream for zlib inflate/deflate + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_STREAM_ZLIB_H +#define MZ_STREAM_ZLIB_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +int32_t mz_stream_zlib_open(void *stream, const char *filename, int32_t mode); +int32_t mz_stream_zlib_is_open(void *stream); +int32_t mz_stream_zlib_read(void *stream, void *buf, int32_t size); +int32_t mz_stream_zlib_write(void *stream, const void *buf, int32_t size); +int64_t mz_stream_zlib_tell(void *stream); +int32_t mz_stream_zlib_seek(void *stream, int64_t offset, int32_t origin); +int32_t mz_stream_zlib_close(void *stream); +int32_t mz_stream_zlib_error(void *stream); + +int32_t mz_stream_zlib_get_prop_int64(void *stream, int32_t prop, int64_t *value); +int32_t mz_stream_zlib_set_prop_int64(void *stream, int32_t prop, int64_t value); + +void* mz_stream_zlib_create(void **stream); +void mz_stream_zlib_delete(void **stream); + +void* mz_stream_zlib_get_interface(void); + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/mz_strm_zstd.c b/Externals/minizip/mz_strm_zstd.c new file mode 100644 index 000000000000..4c9c33561819 --- /dev/null +++ b/Externals/minizip/mz_strm_zstd.c @@ -0,0 +1,351 @@ +/* mz_strm_zstd.c -- Stream for zstd compress/decompress + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + Authors: Force Charlie + https://github.com/fcharlie + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#include "mz.h" +#include "mz_strm.h" +#include "mz_strm_zstd.h" + +#include + +/***************************************************************************/ + +static mz_stream_vtbl mz_stream_zstd_vtbl = { + mz_stream_zstd_open, + mz_stream_zstd_is_open, + mz_stream_zstd_read, + mz_stream_zstd_write, + mz_stream_zstd_tell, + mz_stream_zstd_seek, + mz_stream_zstd_close, + mz_stream_zstd_error, + mz_stream_zstd_create, + mz_stream_zstd_delete, + mz_stream_zstd_get_prop_int64, + mz_stream_zstd_set_prop_int64 +}; + +/***************************************************************************/ + +typedef struct mz_stream_zstd_s { + mz_stream stream; + ZSTD_CStream *zcstream; + ZSTD_DStream *zdstream; + ZSTD_outBuffer out; + ZSTD_inBuffer in; + int32_t mode; + int32_t error; + uint8_t buffer[INT16_MAX]; + int32_t buffer_len; + int64_t total_in; + int64_t total_out; + int64_t max_total_in; + int64_t max_total_out; + int8_t initialized; + uint32_t preset; +} mz_stream_zstd; + +/***************************************************************************/ + +int32_t mz_stream_zstd_open(void *stream, const char *path, int32_t mode) { + mz_stream_zstd *zstd = (mz_stream_zstd *)stream; + + MZ_UNUSED(path); + + if (mode & MZ_OPEN_MODE_WRITE) { +#ifdef MZ_ZIP_NO_COMPRESSION + return MZ_SUPPORT_ERROR; +#else + zstd->zcstream = ZSTD_createCStream(); + zstd->out.dst = zstd->buffer; + zstd->out.size = sizeof(zstd->buffer); + zstd->out.pos = 0; +#endif + } else if (mode & MZ_OPEN_MODE_READ) { +#ifdef MZ_ZIP_NO_DECOMPRESSION + return MZ_SUPPORT_ERROR; +#else + zstd->zdstream = ZSTD_createDStream(); + memset(&zstd->out, 0, sizeof(ZSTD_outBuffer)); +#endif + } + + memset(&zstd->in, 0, sizeof(ZSTD_inBuffer)); + + zstd->initialized = 1; + zstd->mode = mode; + zstd->error = MZ_OK; + + return MZ_OK; +} + +int32_t mz_stream_zstd_is_open(void *stream) { + mz_stream_zstd *zstd = (mz_stream_zstd *)stream; + if (zstd->initialized != 1) + return MZ_OPEN_ERROR; + return MZ_OK; +} + +int32_t mz_stream_zstd_read(void *stream, void *buf, int32_t size) { +#ifdef MZ_ZIP_NO_DECOMPRESSION + MZ_UNUSED(stream); + MZ_UNUSED(buf); + MZ_UNUSED(size); + return MZ_SUPPORT_ERROR; +#else + mz_stream_zstd *zstd = (mz_stream_zstd *)stream; + uint64_t total_in_before = 0; + uint64_t total_in_after = 0; + uint64_t total_out_before = 0; + uint64_t total_out_after = 0; + int32_t total_in = 0; + int32_t total_out = 0; + int32_t in_bytes = 0; + int32_t out_bytes = 0; + int32_t bytes_to_read = sizeof(zstd->buffer); + int32_t read = 0; + size_t result = 0; + + zstd->out.dst = (void*)buf; + zstd->out.size = (size_t)size; + zstd->out.pos = 0; + + do { + if (zstd->in.pos == zstd->in.size) { + if (zstd->max_total_in > 0) { + if ((int64_t)bytes_to_read > (zstd->max_total_in - zstd->total_in)) + bytes_to_read = (int32_t)(zstd->max_total_in - zstd->total_in); + } + + read = mz_stream_read(zstd->stream.base, zstd->buffer, bytes_to_read); + + if (read < 0) + return read; + + zstd->in.src = (const void*)zstd->buffer; + zstd->in.pos = 0; + zstd->in.size = (size_t)read; + } + + total_in_before = zstd->in.pos; + total_out_before = zstd->out.pos; + + result = ZSTD_decompressStream(zstd->zdstream, &zstd->out, &zstd->in); + + if (ZSTD_isError(result)) { + zstd->error = (int32_t)result; + return MZ_DATA_ERROR; + } + + total_in_after = zstd->in.pos; + total_out_after = zstd->out.pos; + if ((zstd->max_total_out != -1) && (int64_t)total_out_after > zstd->max_total_out) + total_out_after = (uint64_t)zstd->max_total_out; + + in_bytes = (int32_t)(total_in_after - total_in_before); + out_bytes = (int32_t)(total_out_after - total_out_before); + + total_in += in_bytes; + total_out += out_bytes; + + zstd->total_in += in_bytes; + zstd->total_out += out_bytes; + + } while ((zstd->in.size > 0 || out_bytes > 0) && (zstd->out.pos < zstd->out.size)); + + return total_out; +#endif +} + +#ifndef MZ_ZIP_NO_COMPRESSION +static int32_t mz_stream_zstd_flush(void *stream) { + mz_stream_zstd *zstd = (mz_stream_zstd *)stream; + if (mz_stream_write(zstd->stream.base, zstd->buffer, zstd->buffer_len) != zstd->buffer_len) + return MZ_WRITE_ERROR; + return MZ_OK; +} + +static int32_t mz_stream_zstd_compress(void *stream, ZSTD_EndDirective flush) { + mz_stream_zstd *zstd = (mz_stream_zstd *)stream; + uint64_t total_out_before = 0; + uint64_t total_out_after = 0; + int32_t out_bytes = 0; + size_t result = 0; + int32_t err = 0; + + do { + if (zstd->out.pos == zstd->out.size) { + err = mz_stream_zstd_flush(zstd); + if (err != MZ_OK) + return err; + + zstd->out.dst = zstd->buffer; + zstd->out.size = sizeof(zstd->buffer); + zstd->out.pos = 0; + + zstd->buffer_len = 0; + } + + total_out_before = zstd->out.pos; + + result = ZSTD_compressStream2(zstd->zcstream, &zstd->out, &zstd->in, flush); + + total_out_after = zstd->out.pos; + + out_bytes = (uint32_t)(total_out_after - total_out_before); + + zstd->buffer_len += out_bytes; + zstd->total_out += out_bytes; + + if (ZSTD_isError(result)) { + zstd->error = (int32_t)result; + return MZ_DATA_ERROR; + } + } while ((zstd->in.pos < zstd->in.size) || (flush == ZSTD_e_end && result != 0)); + + return MZ_OK; +} +#endif + +int32_t mz_stream_zstd_write(void *stream, const void *buf, int32_t size) { +#ifdef MZ_ZIP_NO_COMPRESSION + MZ_UNUSED(stream); + MZ_UNUSED(buf); + MZ_UNUSED(size); + return MZ_SUPPORT_ERROR; +#else + mz_stream_zstd *zstd = (mz_stream_zstd *)stream; + int32_t err = MZ_OK; + + zstd->in.src = buf; + zstd->in.pos = 0; + zstd->in.size = size; + + err = mz_stream_zstd_compress(stream, ZSTD_e_continue); + if (err != MZ_OK) { + return err; + } + + zstd->total_in += size; + return size; +#endif +} + +int64_t mz_stream_zstd_tell(void *stream) { + MZ_UNUSED(stream); + + return MZ_TELL_ERROR; +} + +int32_t mz_stream_zstd_seek(void *stream, int64_t offset, int32_t origin) { + MZ_UNUSED(stream); + MZ_UNUSED(offset); + MZ_UNUSED(origin); + + return MZ_SEEK_ERROR; +} + +int32_t mz_stream_zstd_close(void *stream) { + mz_stream_zstd *zstd = (mz_stream_zstd *)stream; + + if (zstd->mode & MZ_OPEN_MODE_WRITE) { +#ifdef MZ_ZIP_NO_COMPRESSION + return MZ_SUPPORT_ERROR; +#else + mz_stream_zstd_compress(stream, ZSTD_e_end); + mz_stream_zstd_flush(stream); + + ZSTD_freeCStream(zstd->zcstream); + zstd->zcstream = NULL; +#endif + } else if (zstd->mode & MZ_OPEN_MODE_READ) { +#ifdef MZ_ZIP_NO_DECOMPRESSION + return MZ_SUPPORT_ERROR; +#else + ZSTD_freeDStream(zstd->zdstream); + zstd->zdstream = NULL; +#endif + } + zstd->initialized = 0; + return MZ_OK; +} + +int32_t mz_stream_zstd_error(void *stream) { + mz_stream_zstd *zstd = (mz_stream_zstd *)stream; + return zstd->error; +} + +int32_t mz_stream_zstd_get_prop_int64(void *stream, int32_t prop, int64_t *value) { + mz_stream_zstd *zstd = (mz_stream_zstd *)stream; + switch (prop) { + case MZ_STREAM_PROP_TOTAL_IN: + *value = zstd->total_in; + break; + case MZ_STREAM_PROP_TOTAL_IN_MAX: + *value = zstd->max_total_in; + break; + case MZ_STREAM_PROP_TOTAL_OUT: + *value = zstd->total_out; + break; + case MZ_STREAM_PROP_TOTAL_OUT_MAX: + *value = zstd->max_total_out; + break; + case MZ_STREAM_PROP_HEADER_SIZE: + *value = 0; + break; + default: + return MZ_EXIST_ERROR; + } + return MZ_OK; +} + +int32_t mz_stream_zstd_set_prop_int64(void *stream, int32_t prop, int64_t value) { + mz_stream_zstd *zstd = (mz_stream_zstd *)stream; + switch (prop) { + case MZ_STREAM_PROP_COMPRESS_LEVEL: + if (value < 0) + zstd->preset = 6; + else + zstd->preset = (int16_t)value; + return MZ_OK; + case MZ_STREAM_PROP_TOTAL_IN_MAX: + zstd->max_total_in = value; + return MZ_OK; + } + return MZ_EXIST_ERROR; +} + +void *mz_stream_zstd_create(void **stream) { + mz_stream_zstd *zstd = NULL; + zstd = (mz_stream_zstd *)MZ_ALLOC(sizeof(mz_stream_zstd)); + if (zstd != NULL) { + memset(zstd, 0, sizeof(mz_stream_zstd)); + zstd->stream.vtbl = &mz_stream_zstd_vtbl; + zstd->max_total_out = -1; + } + if (stream != NULL) + *stream = zstd; + return zstd; +} + +void mz_stream_zstd_delete(void **stream) { + mz_stream_zstd *zstd = NULL; + if (stream == NULL) + return; + zstd = (mz_stream_zstd *)*stream; + if (zstd != NULL) + MZ_FREE(zstd); + *stream = NULL; +} + +void *mz_stream_zstd_get_interface(void) { + return (void *)&mz_stream_zstd_vtbl; +} diff --git a/Externals/minizip/mz_strm_zstd.h b/Externals/minizip/mz_strm_zstd.h new file mode 100644 index 000000000000..35870835485e --- /dev/null +++ b/Externals/minizip/mz_strm_zstd.h @@ -0,0 +1,44 @@ +/* mz_strm_zlib.h -- Stream for zlib inflate/deflate + Version 2.9.2, February 12, 2020 + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_STREAM_ZSTD_H +#define MZ_STREAM_ZSTD_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +int32_t mz_stream_zstd_open(void *stream, const char *filename, int32_t mode); +int32_t mz_stream_zstd_is_open(void *stream); +int32_t mz_stream_zstd_read(void *stream, void *buf, int32_t size); +int32_t mz_stream_zstd_write(void *stream, const void *buf, int32_t size); +int64_t mz_stream_zstd_tell(void *stream); +int32_t mz_stream_zstd_seek(void *stream, int64_t offset, int32_t origin); +int32_t mz_stream_zstd_close(void *stream); +int32_t mz_stream_zstd_error(void *stream); + +int32_t mz_stream_zstd_get_prop_int64(void *stream, int32_t prop, int64_t *value); +int32_t mz_stream_zstd_set_prop_int64(void *stream, int32_t prop, int64_t value); + +void* mz_stream_zstd_create(void **stream); +void mz_stream_zstd_delete(void **stream); + +void* mz_stream_zstd_get_interface(void); + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/mz_zip.c b/Externals/minizip/mz_zip.c new file mode 100644 index 000000000000..cc4f57d0b38c --- /dev/null +++ b/Externals/minizip/mz_zip.c @@ -0,0 +1,2771 @@ +/* zip.c -- Zip manipulation + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + Copyright (C) 2009-2010 Mathias Svensson + Modifications for Zip64 support + http://result42.com + Copyright (C) 2007-2008 Even Rouault + Modifications of Unzip for Zip64 + Copyright (C) 1998-2010 Gilles Vollant + https://www.winimage.com/zLibDll/minizip.html + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + + +#include "mz.h" +#include "mz_crypt.h" +#include "mz_strm.h" +#ifdef HAVE_BZIP2 +# include "mz_strm_bzip.h" +#endif +#ifdef HAVE_LIBCOMP +# include "mz_strm_libcomp.h" +#endif +#ifdef HAVE_LZMA +# include "mz_strm_lzma.h" +#endif +#include "mz_strm_mem.h" +#ifdef HAVE_PKCRYPT +# include "mz_strm_pkcrypt.h" +#endif +#ifdef HAVE_WZAES +# include "mz_strm_wzaes.h" +#endif +#ifdef HAVE_ZLIB +# include "mz_strm_zlib.h" +#endif +#ifdef HAVE_ZSTD +# include "mz_strm_zstd.h" +#endif + +#include "mz_zip.h" + +#include /* tolower */ +#include /* snprintf */ + +#if defined(_MSC_VER) || defined(__MINGW32__) +# define localtime_r(t1,t2) (localtime_s(t2,t1) == 0 ? t1 : NULL) +#endif +#if defined(_MSC_VER) && (_MSC_VER < 1900) +# define snprintf _snprintf +#endif + +/***************************************************************************/ + +#define MZ_ZIP_MAGIC_LOCALHEADER (0x04034b50) +#define MZ_ZIP_MAGIC_LOCALHEADERU8 { 0x50, 0x4b, 0x03, 0x04 } +#define MZ_ZIP_MAGIC_CENTRALHEADER (0x02014b50) +#define MZ_ZIP_MAGIC_CENTRALHEADERU8 { 0x50, 0x4b, 0x01, 0x02 } +#define MZ_ZIP_MAGIC_ENDHEADER (0x06054b50) +#define MZ_ZIP_MAGIC_ENDHEADERU8 { 0x50, 0x4b, 0x05, 0x06 } +#define MZ_ZIP_MAGIC_ENDHEADER64 (0x06064b50) +#define MZ_ZIP_MAGIC_ENDLOCHEADER64 (0x07064b50) +#define MZ_ZIP_MAGIC_DATADESCRIPTOR (0x08074b50) +#define MZ_ZIP_MAGIC_DATADESCRIPTORU8 { 0x50, 0x4b, 0x07, 0x08 } + +#define MZ_ZIP_SIZE_LD_ITEM (30) +#define MZ_ZIP_SIZE_CD_ITEM (46) +#define MZ_ZIP_SIZE_CD_LOCATOR64 (20) +#define MZ_ZIP_SIZE_MAX_DATA_DESCRIPTOR (24) + +#define MZ_ZIP_OFFSET_CRC_SIZES (14) +#define MZ_ZIP_UNCOMPR_SIZE64_CUSHION (2 * 1024 * 1024) + +#ifndef MZ_ZIP_EOCD_MAX_BACK +#define MZ_ZIP_EOCD_MAX_BACK (1 << 20) +#endif + +/***************************************************************************/ + +typedef struct mz_zip_s { + mz_zip_file file_info; + mz_zip_file local_file_info; + + void *stream; /* main stream */ + void *cd_stream; /* pointer to the stream with the cd */ + void *cd_mem_stream; /* memory stream for central directory */ + void *compress_stream; /* compression stream */ + void *crypt_stream; /* encryption stream */ + void *file_info_stream; /* memory stream for storing file info */ + void *local_file_info_stream; /* memory stream for storing local file info */ + + int32_t open_mode; + uint8_t recover; + uint8_t data_descriptor; + + uint32_t disk_number_with_cd; /* number of the disk with the central dir */ + int64_t disk_offset_shift; /* correction for zips that have wrong offset start of cd */ + + int64_t cd_start_pos; /* pos of the first file in the central dir stream */ + int64_t cd_current_pos; /* pos of the current file in the central dir */ + int64_t cd_offset; /* offset of start of central directory */ + int64_t cd_size; /* size of the central directory */ + uint32_t cd_signature; /* signature of central directory */ + + uint8_t entry_scanned; /* entry header information read ok */ + uint8_t entry_opened; /* entry is open for read/write */ + uint8_t entry_raw; /* entry opened with raw mode */ + uint32_t entry_crc32; /* entry crc32 */ + + uint64_t number_entry; + + uint16_t version_madeby; + char *comment; +} mz_zip; + +/***************************************************************************/ + +#if 0 +# define mz_zip_print printf +#else +# define mz_zip_print(fmt,...) +#endif + +/***************************************************************************/ + +/* Locate the end of central directory */ +static int32_t mz_zip_search_eocd(void *stream, int64_t *central_pos) { + int64_t file_size = 0; + int64_t max_back = MZ_ZIP_EOCD_MAX_BACK; + uint8_t find[4] = MZ_ZIP_MAGIC_ENDHEADERU8; + int32_t err = MZ_OK; + + err = mz_stream_seek(stream, 0, MZ_SEEK_END); + if (err != MZ_OK) + return err; + + file_size = mz_stream_tell(stream); + + if (max_back <= 0 || max_back > file_size) + max_back = file_size; + + return mz_stream_find_reverse(stream, (const void *)find, sizeof(find), max_back, central_pos); +} + +/* Locate the end of central directory 64 of a zip file */ +static int32_t mz_zip_search_zip64_eocd(void *stream, const int64_t end_central_offset, int64_t *central_pos) { + int64_t offset = 0; + uint32_t value32 = 0; + int32_t err = MZ_OK; + + + *central_pos = 0; + + /* Zip64 end of central directory locator */ + err = mz_stream_seek(stream, end_central_offset - MZ_ZIP_SIZE_CD_LOCATOR64, MZ_SEEK_SET); + /* Read locator signature */ + if (err == MZ_OK) { + err = mz_stream_read_uint32(stream, &value32); + if (value32 != MZ_ZIP_MAGIC_ENDLOCHEADER64) + err = MZ_FORMAT_ERROR; + } + /* Number of the disk with the start of the zip64 end of central directory */ + if (err == MZ_OK) + err = mz_stream_read_uint32(stream, &value32); + /* Relative offset of the zip64 end of central directory record8 */ + if (err == MZ_OK) + err = mz_stream_read_uint64(stream, (uint64_t *)&offset); + /* Total number of disks */ + if (err == MZ_OK) + err = mz_stream_read_uint32(stream, &value32); + /* Goto end of central directory record */ + if (err == MZ_OK) + err = mz_stream_seek(stream, (int64_t)offset, MZ_SEEK_SET); + /* The signature */ + if (err == MZ_OK) { + err = mz_stream_read_uint32(stream, &value32); + if (value32 != MZ_ZIP_MAGIC_ENDHEADER64) + err = MZ_FORMAT_ERROR; + } + + if (err == MZ_OK) + *central_pos = offset; + + return err; +} + +/* Get PKWARE traditional encryption verifier */ +static uint16_t mz_zip_get_pk_verify(uint32_t dos_date, uint64_t crc, uint16_t flag) +{ + /* Info-ZIP modification to ZipCrypto format: if bit 3 of the general + * purpose bit flag is set, it uses high byte of 16-bit File Time. */ + if (flag & MZ_ZIP_FLAG_DATA_DESCRIPTOR) + return ((dos_date >> 16) & 0xff) << 8 | ((dos_date >> 8) & 0xff); + return ((crc >> 16) & 0xff) << 8 | ((crc >> 24) & 0xff); +} + +/* Get info about the current file in the zip file */ +static int32_t mz_zip_entry_read_header(void *stream, uint8_t local, mz_zip_file *file_info, void *file_extra_stream) { + uint64_t ntfs_time = 0; + uint32_t reserved = 0; + uint32_t magic = 0; + uint32_t dos_date = 0; + uint32_t field_pos = 0; + uint16_t field_type = 0; + uint16_t field_length = 0; + uint32_t field_length_read = 0; + uint16_t ntfs_attrib_id = 0; + uint16_t ntfs_attrib_size = 0; + uint16_t linkname_size; + uint16_t value16 = 0; + uint32_t value32 = 0; + int64_t extrafield_pos = 0; + int64_t comment_pos = 0; + int64_t linkname_pos = 0; + int64_t saved_pos = 0; + int32_t err = MZ_OK; + char *linkname = NULL; + + + memset(file_info, 0, sizeof(mz_zip_file)); + + /* Check the magic */ + err = mz_stream_read_uint32(stream, &magic); + if (err == MZ_END_OF_STREAM) + err = MZ_END_OF_LIST; + else if (magic == MZ_ZIP_MAGIC_ENDHEADER || magic == MZ_ZIP_MAGIC_ENDHEADER64) + err = MZ_END_OF_LIST; + else if ((local) && (magic != MZ_ZIP_MAGIC_LOCALHEADER)) + err = MZ_FORMAT_ERROR; + else if ((!local) && (magic != MZ_ZIP_MAGIC_CENTRALHEADER)) + err = MZ_FORMAT_ERROR; + + /* Read header fields */ + if (err == MZ_OK) { + if (!local) + err = mz_stream_read_uint16(stream, &file_info->version_madeby); + if (err == MZ_OK) + err = mz_stream_read_uint16(stream, &file_info->version_needed); + if (err == MZ_OK) + err = mz_stream_read_uint16(stream, &file_info->flag); + if (err == MZ_OK) + err = mz_stream_read_uint16(stream, &file_info->compression_method); + if (err == MZ_OK) { + err = mz_stream_read_uint32(stream, &dos_date); + file_info->modified_date = mz_zip_dosdate_to_time_t(dos_date); + } + if (err == MZ_OK) + err = mz_stream_read_uint32(stream, &file_info->crc); +#ifdef HAVE_PKCRYPT + if (err == MZ_OK && file_info->flag & MZ_ZIP_FLAG_ENCRYPTED) { + /* Use dos_date from header instead of derived from time in zip extensions */ + file_info->pk_verify = mz_zip_get_pk_verify(dos_date, file_info->crc, file_info->flag); + } +#endif + if (err == MZ_OK) { + err = mz_stream_read_uint32(stream, &value32); + file_info->compressed_size = value32; + } + if (err == MZ_OK) { + err = mz_stream_read_uint32(stream, &value32); + file_info->uncompressed_size = value32; + } + if (err == MZ_OK) + err = mz_stream_read_uint16(stream, &file_info->filename_size); + if (err == MZ_OK) + err = mz_stream_read_uint16(stream, &file_info->extrafield_size); + if (!local) { + if (err == MZ_OK) + err = mz_stream_read_uint16(stream, &file_info->comment_size); + if (err == MZ_OK) { + err = mz_stream_read_uint16(stream, &value16); + file_info->disk_number = value16; + } + if (err == MZ_OK) + err = mz_stream_read_uint16(stream, &file_info->internal_fa); + if (err == MZ_OK) + err = mz_stream_read_uint32(stream, &file_info->external_fa); + if (err == MZ_OK) { + err = mz_stream_read_uint32(stream, &value32); + file_info->disk_offset = value32; + } + } + } + + if (err == MZ_OK) + err = mz_stream_seek(file_extra_stream, 0, MZ_SEEK_SET); + + /* Copy variable length data to memory stream for later retrieval */ + if ((err == MZ_OK) && (file_info->filename_size > 0)) + err = mz_stream_copy(file_extra_stream, stream, file_info->filename_size); + mz_stream_write_uint8(file_extra_stream, 0); + extrafield_pos = mz_stream_tell(file_extra_stream); + + if ((err == MZ_OK) && (file_info->extrafield_size > 0)) + err = mz_stream_copy(file_extra_stream, stream, file_info->extrafield_size); + mz_stream_write_uint8(file_extra_stream, 0); + + comment_pos = mz_stream_tell(file_extra_stream); + if ((err == MZ_OK) && (file_info->comment_size > 0)) + err = mz_stream_copy(file_extra_stream, stream, file_info->comment_size); + mz_stream_write_uint8(file_extra_stream, 0); + + linkname_pos = mz_stream_tell(file_extra_stream); + /* Overwrite if we encounter UNIX1 extra block */ + mz_stream_write_uint8(file_extra_stream, 0); + + if ((err == MZ_OK) && (file_info->extrafield_size > 0)) { + /* Seek to and parse the extra field */ + err = mz_stream_seek(file_extra_stream, extrafield_pos, MZ_SEEK_SET); + + while ((err == MZ_OK) && (field_pos + 4 <= file_info->extrafield_size)) { + err = mz_zip_extrafield_read(file_extra_stream, &field_type, &field_length); + if (err != MZ_OK) + break; + field_pos += 4; + + /* Don't allow field length to exceed size of remaining extrafield */ + if (field_length > (file_info->extrafield_size - field_pos)) + field_length = (uint16_t)(file_info->extrafield_size - field_pos); + + /* Read ZIP64 extra field */ + if ((field_type == MZ_ZIP_EXTENSION_ZIP64) && (field_length >= 8)) { + if ((err == MZ_OK) && (file_info->uncompressed_size == UINT32_MAX)) { + err = mz_stream_read_int64(file_extra_stream, &file_info->uncompressed_size); + if (file_info->uncompressed_size < 0) + err = MZ_FORMAT_ERROR; + } + if ((err == MZ_OK) && (file_info->compressed_size == UINT32_MAX)) { + err = mz_stream_read_int64(file_extra_stream, &file_info->compressed_size); + if (file_info->compressed_size < 0) + err = MZ_FORMAT_ERROR; + } + if ((err == MZ_OK) && (file_info->disk_offset == UINT32_MAX)) { + err = mz_stream_read_int64(file_extra_stream, &file_info->disk_offset); + if (file_info->disk_offset < 0) + err = MZ_FORMAT_ERROR; + } + if ((err == MZ_OK) && (file_info->disk_number == UINT16_MAX)) + err = mz_stream_read_uint32(file_extra_stream, &file_info->disk_number); + } + /* Read NTFS extra field */ + else if ((field_type == MZ_ZIP_EXTENSION_NTFS) && (field_length > 4)) { + if (err == MZ_OK) + err = mz_stream_read_uint32(file_extra_stream, &reserved); + field_length_read = 4; + + while ((err == MZ_OK) && (field_length_read + 4 <= field_length)) { + err = mz_stream_read_uint16(file_extra_stream, &ntfs_attrib_id); + if (err == MZ_OK) + err = mz_stream_read_uint16(file_extra_stream, &ntfs_attrib_size); + field_length_read += 4; + + if ((err == MZ_OK) && (ntfs_attrib_id == 0x01) && (ntfs_attrib_size == 24)) { + err = mz_stream_read_uint64(file_extra_stream, &ntfs_time); + mz_zip_ntfs_to_unix_time(ntfs_time, &file_info->modified_date); + + if (err == MZ_OK) { + err = mz_stream_read_uint64(file_extra_stream, &ntfs_time); + mz_zip_ntfs_to_unix_time(ntfs_time, &file_info->accessed_date); + } + if (err == MZ_OK) { + err = mz_stream_read_uint64(file_extra_stream, &ntfs_time); + mz_zip_ntfs_to_unix_time(ntfs_time, &file_info->creation_date); + } + } else if ((err == MZ_OK) && (field_length_read + ntfs_attrib_size <= field_length)) { + err = mz_stream_seek(file_extra_stream, ntfs_attrib_size, MZ_SEEK_CUR); + } + + field_length_read += ntfs_attrib_size; + } + } + /* Read UNIX1 extra field */ + else if ((field_type == MZ_ZIP_EXTENSION_UNIX1) && (field_length >= 12)) { + if (err == MZ_OK) { + err = mz_stream_read_uint32(file_extra_stream, &value32); + if (err == MZ_OK && file_info->accessed_date == 0) + file_info->accessed_date = value32; + } + if (err == MZ_OK) { + err = mz_stream_read_uint32(file_extra_stream, &value32); + if (err == MZ_OK && file_info->modified_date == 0) + file_info->modified_date = value32; + } + if (err == MZ_OK) + err = mz_stream_read_uint16(file_extra_stream, &value16); /* User id */ + if (err == MZ_OK) + err = mz_stream_read_uint16(file_extra_stream, &value16); /* Group id */ + + /* Copy linkname to end of file extra stream so we can return null + terminated string */ + linkname_size = field_length - 12; + if ((err == MZ_OK) && (linkname_size > 0)) { + linkname = (char *)MZ_ALLOC(linkname_size); + if (linkname != NULL) { + if (mz_stream_read(file_extra_stream, linkname, linkname_size) != linkname_size) + err = MZ_READ_ERROR; + if (err == MZ_OK) { + saved_pos = mz_stream_tell(file_extra_stream); + + mz_stream_seek(file_extra_stream, linkname_pos, MZ_SEEK_SET); + mz_stream_write(file_extra_stream, linkname, linkname_size); + mz_stream_write_uint8(file_extra_stream, 0); + + mz_stream_seek(file_extra_stream, saved_pos, MZ_SEEK_SET); + } + MZ_FREE(linkname); + } + } + } +#ifdef HAVE_WZAES + /* Read AES extra field */ + else if ((field_type == MZ_ZIP_EXTENSION_AES) && (field_length == 7)) { + uint8_t value8 = 0; + /* Verify version info */ + err = mz_stream_read_uint16(file_extra_stream, &value16); + /* Support AE-1 and AE-2 */ + if (value16 != 1 && value16 != 2) + err = MZ_FORMAT_ERROR; + file_info->aes_version = value16; + if (err == MZ_OK) + err = mz_stream_read_uint8(file_extra_stream, &value8); + if ((char)value8 != 'A') + err = MZ_FORMAT_ERROR; + if (err == MZ_OK) + err = mz_stream_read_uint8(file_extra_stream, &value8); + if ((char)value8 != 'E') + err = MZ_FORMAT_ERROR; + /* Get AES encryption strength and actual compression method */ + if (err == MZ_OK) { + err = mz_stream_read_uint8(file_extra_stream, &value8); + file_info->aes_encryption_mode = value8; + } + if (err == MZ_OK) { + err = mz_stream_read_uint16(file_extra_stream, &value16); + file_info->compression_method = value16; + } + } +#endif + else if (field_length > 0) { + err = mz_stream_seek(file_extra_stream, field_length, MZ_SEEK_CUR); + } + + field_pos += field_length; + } + } + + /* Get pointers to variable length data */ + mz_stream_mem_get_buffer(file_extra_stream, (const void **)&file_info->filename); + mz_stream_mem_get_buffer_at(file_extra_stream, extrafield_pos, (const void **)&file_info->extrafield); + mz_stream_mem_get_buffer_at(file_extra_stream, comment_pos, (const void **)&file_info->comment); + mz_stream_mem_get_buffer_at(file_extra_stream, linkname_pos, (const void **)&file_info->linkname); + + /* Set to empty string just in-case */ + if (file_info->filename == NULL) + file_info->filename = ""; + if (file_info->extrafield == NULL) + file_info->extrafield_size = 0; + if (file_info->comment == NULL) + file_info->comment = ""; + if (file_info->linkname == NULL) + file_info->linkname = ""; + + if (err == MZ_OK) { + mz_zip_print("Zip - Entry - Read header - %s (local %" PRId8 ")\n", + file_info->filename, local); + mz_zip_print("Zip - Entry - Read header compress (ucs %" PRId64 " cs %" PRId64 " crc 0x%08" PRIx32 ")\n", + file_info->uncompressed_size, file_info->compressed_size, file_info->crc); + if (!local) { + mz_zip_print("Zip - Entry - Read header disk (disk %" PRIu32 " offset %" PRId64 ")\n", + file_info->disk_number, file_info->disk_offset); + } + mz_zip_print("Zip - Entry - Read header variable (fnl %" PRId32 " efs %" PRId32 " cms %" PRId32 ")\n", + file_info->filename_size, file_info->extrafield_size, file_info->comment_size); + } + + return err; +} + +static int32_t mz_zip_entry_read_descriptor(void *stream, uint8_t zip64, uint32_t *crc32, int64_t *compressed_size, int64_t *uncompressed_size) { + uint32_t value32 = 0; + int64_t value64 = 0; + int32_t err = MZ_OK; + + + err = mz_stream_read_uint32(stream, &value32); + if (value32 != MZ_ZIP_MAGIC_DATADESCRIPTOR) + err = MZ_FORMAT_ERROR; + if (err == MZ_OK) + err = mz_stream_read_uint32(stream, &value32); + if ((err == MZ_OK) && (crc32 != NULL)) + *crc32 = value32; + if (err == MZ_OK) { + /* If zip 64 extension is enabled then read as 8 byte */ + if (!zip64) { + err = mz_stream_read_uint32(stream, &value32); + value64 = value32; + } else { + err = mz_stream_read_int64(stream, &value64); + if (value64 < 0) + err = MZ_FORMAT_ERROR; + } + if ((err == MZ_OK) && (compressed_size != NULL)) + *compressed_size = value64; + } + if (err == MZ_OK) { + if (!zip64) { + err = mz_stream_read_uint32(stream, &value32); + value64 = value32; + } else { + err = mz_stream_read_int64(stream, &value64); + if (value64 < 0) + err = MZ_FORMAT_ERROR; + } + if ((err == MZ_OK) && (uncompressed_size != NULL)) + *uncompressed_size = value64; + } + + return err; +} + +static int32_t mz_zip_entry_write_crc_sizes(void *stream, uint8_t zip64, uint8_t mask, mz_zip_file *file_info) { + int32_t err = MZ_OK; + + if (mask) + err = mz_stream_write_uint32(stream, 0); + else + err = mz_stream_write_uint32(stream, file_info->crc); /* crc */ + + /* For backwards-compatibility with older zip applications we set all sizes to UINT32_MAX + * when zip64 is needed, instead of only setting sizes larger than UINT32_MAX. */ + + if (err == MZ_OK) { + if (zip64) /* compr size */ + err = mz_stream_write_uint32(stream, UINT32_MAX); + else + err = mz_stream_write_uint32(stream, (uint32_t)file_info->compressed_size); + } + if (err == MZ_OK) { + if (mask) /* uncompr size */ + err = mz_stream_write_uint32(stream, 0); + else if (zip64) + err = mz_stream_write_uint32(stream, UINT32_MAX); + else + err = mz_stream_write_uint32(stream, (uint32_t)file_info->uncompressed_size); + } + return err; +} + +static int32_t mz_zip_entry_needs_zip64(mz_zip_file *file_info, uint8_t local, uint8_t *zip64) { + uint32_t max_uncompressed_size = UINT32_MAX; + uint8_t needs_zip64 = 0; + + if (zip64 == NULL) + return MZ_PARAM_ERROR; + + *zip64 = 0; + + if (local) { + /* At local header we might not know yet whether compressed size will overflow unsigned + 32-bit integer which might happen for high entropy data so we give it some cushion */ + + max_uncompressed_size -= MZ_ZIP_UNCOMPR_SIZE64_CUSHION; + } + + needs_zip64 = (file_info->uncompressed_size >= max_uncompressed_size) || + (file_info->compressed_size >= UINT32_MAX); + + if (!local) { + /* Disk offset and number only used in central directory header */ + needs_zip64 |= (file_info->disk_offset >= UINT32_MAX) || + (file_info->disk_number >= UINT16_MAX); + } + + if (file_info->zip64 == MZ_ZIP64_AUTO) { + /* If uncompressed size is unknown, assume zip64 for 64-bit data descriptors */ + if (local && file_info->uncompressed_size == 0) { + /* Don't use zip64 for local header directory entries */ + if (mz_zip_attrib_is_dir(file_info->external_fa, file_info->version_madeby) != MZ_OK) { + *zip64 = 1; + } + } + *zip64 |= needs_zip64; + } else if (file_info->zip64 == MZ_ZIP64_FORCE) { + *zip64 = 1; + } else if (file_info->zip64 == MZ_ZIP64_DISABLE) { + /* Zip64 extension is required to zip file */ + if (needs_zip64) + return MZ_PARAM_ERROR; + } + + return MZ_OK; +} + +static int32_t mz_zip_entry_write_header(void *stream, uint8_t local, mz_zip_file *file_info) { + uint64_t ntfs_time = 0; + uint32_t reserved = 0; + uint32_t dos_date = 0; + uint16_t extrafield_size = 0; + uint16_t field_type = 0; + uint16_t field_length = 0; + uint16_t field_length_zip64 = 0; + uint16_t field_length_ntfs = 0; + uint16_t field_length_aes = 0; + uint16_t field_length_unix1 = 0; + uint16_t filename_size = 0; + uint16_t filename_length = 0; + uint16_t linkname_size = 0; + uint16_t version_needed = 0; + int32_t comment_size = 0; + int32_t err = MZ_OK; + int32_t err_mem = MZ_OK; + uint8_t zip64 = 0; + uint8_t skip_aes = 0; + uint8_t mask = 0; + uint8_t write_end_slash = 0; + const char *filename = NULL; + char masked_name[64]; + void *file_extra_stream = NULL; + + if (file_info == NULL) + return MZ_PARAM_ERROR; + + if ((local) && (file_info->flag & MZ_ZIP_FLAG_MASK_LOCAL_INFO)) + mask = 1; + + /* Determine if zip64 extra field is necessary */ + err = mz_zip_entry_needs_zip64(file_info, local, &zip64); + if (err != MZ_OK) + return err; + + /* Start calculating extra field sizes */ + if (zip64) { + /* Both compressed and uncompressed sizes must be included (at least in local header) */ + field_length_zip64 = 8 + 8; + if ((!local) && (file_info->disk_offset >= UINT32_MAX)) + field_length_zip64 += 8; + + extrafield_size += 4; + extrafield_size += field_length_zip64; + } + + /* Calculate extra field size and check for duplicates */ + if (file_info->extrafield_size > 0) { + mz_stream_mem_create(&file_extra_stream); + mz_stream_mem_set_buffer(file_extra_stream, (void *)file_info->extrafield, + file_info->extrafield_size); + + do { + err_mem = mz_stream_read_uint16(file_extra_stream, &field_type); + if (err_mem == MZ_OK) + err_mem = mz_stream_read_uint16(file_extra_stream, &field_length); + if (err_mem != MZ_OK) + break; + + /* Prefer incoming aes extensions over ours */ + if (field_type == MZ_ZIP_EXTENSION_AES) + skip_aes = 1; + + /* Prefer our zip64, ntfs, unix1 extension over incoming */ + if (field_type != MZ_ZIP_EXTENSION_ZIP64 && field_type != MZ_ZIP_EXTENSION_NTFS && + field_type != MZ_ZIP_EXTENSION_UNIX1) + extrafield_size += 4 + field_length; + + if (err_mem == MZ_OK) + err_mem = mz_stream_seek(file_extra_stream, field_length, MZ_SEEK_CUR); + } while (err_mem == MZ_OK); + } + +#ifdef HAVE_WZAES + if (!skip_aes) { + if ((file_info->flag & MZ_ZIP_FLAG_ENCRYPTED) && (file_info->aes_version)) { + field_length_aes = 1 + 1 + 1 + 2 + 2; + extrafield_size += 4 + field_length_aes; + } + } +#else + MZ_UNUSED(field_length_aes); + MZ_UNUSED(skip_aes); +#endif + /* NTFS timestamps */ + if ((file_info->modified_date != 0) && + (file_info->accessed_date != 0) && + (file_info->creation_date != 0) && (!mask)) { + field_length_ntfs = 8 + 8 + 8 + 4 + 2 + 2; + extrafield_size += 4 + field_length_ntfs; + } + + /* Unix1 symbolic links */ + if (file_info->linkname != NULL && *file_info->linkname != 0) { + linkname_size = (uint16_t)strlen(file_info->linkname); + field_length_unix1 = 12 + linkname_size; + extrafield_size += 4 + field_length_unix1; + } + + if (local) + err = mz_stream_write_uint32(stream, MZ_ZIP_MAGIC_LOCALHEADER); + else { + err = mz_stream_write_uint32(stream, MZ_ZIP_MAGIC_CENTRALHEADER); + if (err == MZ_OK) + err = mz_stream_write_uint16(stream, file_info->version_madeby); + } + + /* Calculate version needed to extract */ + if (err == MZ_OK) { + version_needed = file_info->version_needed; + if (version_needed == 0) { + version_needed = 20; + if (zip64) + version_needed = 45; +#ifdef HAVE_WZAES + if ((file_info->flag & MZ_ZIP_FLAG_ENCRYPTED) && (file_info->aes_version)) + version_needed = 51; +#endif +#if defined(HAVE_LZMA) || defined(HAVE_LIBCOMP) + if ((file_info->compression_method == MZ_COMPRESS_METHOD_LZMA) || + (file_info->compression_method == MZ_COMPRESS_METHOD_XZ)) + version_needed = 63; +#endif + } + err = mz_stream_write_uint16(stream, version_needed); + } + if (err == MZ_OK) + err = mz_stream_write_uint16(stream, file_info->flag); + if (err == MZ_OK) { +#ifdef HAVE_WZAES + if ((file_info->flag & MZ_ZIP_FLAG_ENCRYPTED) && (file_info->aes_version)) + err = mz_stream_write_uint16(stream, MZ_COMPRESS_METHOD_AES); + else +#endif + err = mz_stream_write_uint16(stream, file_info->compression_method); + } + if (err == MZ_OK) { + if (file_info->modified_date != 0 && !mask) + dos_date = mz_zip_time_t_to_dos_date(file_info->modified_date); + err = mz_stream_write_uint32(stream, dos_date); + } + + if (err == MZ_OK) + err = mz_zip_entry_write_crc_sizes(stream, zip64, mask, file_info); + + if (mask) { + snprintf(masked_name, sizeof(masked_name), "%" PRIx32 "_%" PRIx64, + file_info->disk_number, file_info->disk_offset); + filename = masked_name; + } else { + filename = file_info->filename; + } + + filename_length = (uint16_t)strlen(filename); + filename_size += filename_length; + + if ((mz_zip_attrib_is_dir(file_info->external_fa, file_info->version_madeby) == MZ_OK) && + ((filename[filename_length - 1] != '/') && (filename[filename_length - 1] != '\\'))) { + filename_size += 1; + write_end_slash = 1; + } + + if (err == MZ_OK) + err = mz_stream_write_uint16(stream, filename_size); + if (err == MZ_OK) + err = mz_stream_write_uint16(stream, extrafield_size); + + if (!local) { + if (file_info->comment != NULL) { + comment_size = (int32_t)strlen(file_info->comment); + if (comment_size > UINT16_MAX) + comment_size = UINT16_MAX; + } + if (err == MZ_OK) + err = mz_stream_write_uint16(stream, (uint16_t)comment_size); + if (err == MZ_OK) + err = mz_stream_write_uint16(stream, (uint16_t)file_info->disk_number); + if (err == MZ_OK) + err = mz_stream_write_uint16(stream, file_info->internal_fa); + if (err == MZ_OK) + err = mz_stream_write_uint32(stream, file_info->external_fa); + if (err == MZ_OK) { + if (file_info->disk_offset >= UINT32_MAX) + err = mz_stream_write_uint32(stream, UINT32_MAX); + else + err = mz_stream_write_uint32(stream, (uint32_t)file_info->disk_offset); + } + } + + if (err == MZ_OK) { + if (mz_stream_write(stream, filename, filename_length) != filename_length) + err = MZ_WRITE_ERROR; + + /* Ensure that directories have a slash appended to them for compatibility */ + if (err == MZ_OK && write_end_slash) + err = mz_stream_write_uint8(stream, '/'); + } + + /* Write ZIP64 extra field first so we can update sizes later if data descriptor not used */ + if ((err == MZ_OK) && (zip64)) { + err = mz_zip_extrafield_write(stream, MZ_ZIP_EXTENSION_ZIP64, field_length_zip64); + if (err == MZ_OK) { + if (mask) + err = mz_stream_write_int64(stream, 0); + else + err = mz_stream_write_int64(stream, file_info->uncompressed_size); + } + if (err == MZ_OK) + err = mz_stream_write_int64(stream, file_info->compressed_size); + if ((err == MZ_OK) && (!local) && (file_info->disk_offset >= UINT32_MAX)) + err = mz_stream_write_int64(stream, file_info->disk_offset); + if ((err == MZ_OK) && (!local) && (file_info->disk_number >= UINT16_MAX)) + err = mz_stream_write_uint32(stream, file_info->disk_number); + } + /* Write NTFS extra field */ + if ((err == MZ_OK) && (field_length_ntfs > 0)) { + err = mz_zip_extrafield_write(stream, MZ_ZIP_EXTENSION_NTFS, field_length_ntfs); + if (err == MZ_OK) + err = mz_stream_write_uint32(stream, reserved); + if (err == MZ_OK) + err = mz_stream_write_uint16(stream, 0x01); + if (err == MZ_OK) + err = mz_stream_write_uint16(stream, field_length_ntfs - 8); + if (err == MZ_OK) { + mz_zip_unix_to_ntfs_time(file_info->modified_date, &ntfs_time); + err = mz_stream_write_uint64(stream, ntfs_time); + } + if (err == MZ_OK) { + mz_zip_unix_to_ntfs_time(file_info->accessed_date, &ntfs_time); + err = mz_stream_write_uint64(stream, ntfs_time); + } + if (err == MZ_OK) { + mz_zip_unix_to_ntfs_time(file_info->creation_date, &ntfs_time); + err = mz_stream_write_uint64(stream, ntfs_time); + } + } + /* Write UNIX extra block extra field */ + if ((err == MZ_OK) && (field_length_unix1 > 0)) { + err = mz_zip_extrafield_write(stream, MZ_ZIP_EXTENSION_UNIX1, field_length_unix1); + if (err == MZ_OK) + err = mz_stream_write_uint32(stream, (uint32_t)file_info->accessed_date); + if (err == MZ_OK) + err = mz_stream_write_uint32(stream, (uint32_t)file_info->modified_date); + if (err == MZ_OK) /* User id */ + err = mz_stream_write_uint16(stream, 0); + if (err == MZ_OK) /* Group id */ + err = mz_stream_write_uint16(stream, 0); + if (err == MZ_OK && linkname_size > 0) { + if (mz_stream_write(stream, file_info->linkname, linkname_size) != linkname_size) + err = MZ_WRITE_ERROR; + } + } +#ifdef HAVE_WZAES + /* Write AES extra field */ + if ((err == MZ_OK) && (!skip_aes) && (file_info->flag & MZ_ZIP_FLAG_ENCRYPTED) && (file_info->aes_version)) { + err = mz_zip_extrafield_write(stream, MZ_ZIP_EXTENSION_AES, field_length_aes); + if (err == MZ_OK) + err = mz_stream_write_uint16(stream, file_info->aes_version); + if (err == MZ_OK) + err = mz_stream_write_uint8(stream, 'A'); + if (err == MZ_OK) + err = mz_stream_write_uint8(stream, 'E'); + if (err == MZ_OK) + err = mz_stream_write_uint8(stream, file_info->aes_encryption_mode); + if (err == MZ_OK) + err = mz_stream_write_uint16(stream, file_info->compression_method); + } +#endif + + if (file_info->extrafield_size > 0) { + err_mem = mz_stream_mem_seek(file_extra_stream, 0, MZ_SEEK_SET); + while (err == MZ_OK && err_mem == MZ_OK) { + err_mem = mz_stream_read_uint16(file_extra_stream, &field_type); + if (err_mem == MZ_OK) + err_mem = mz_stream_read_uint16(file_extra_stream, &field_length); + if (err_mem != MZ_OK) + break; + + /* Prefer our zip 64, ntfs, unix1 extensions over incoming */ + if (field_type == MZ_ZIP_EXTENSION_ZIP64 || field_type == MZ_ZIP_EXTENSION_NTFS || + field_type == MZ_ZIP_EXTENSION_UNIX1) { + err_mem = mz_stream_seek(file_extra_stream, field_length, MZ_SEEK_CUR); + continue; + } + + err = mz_stream_write_uint16(stream, field_type); + if (err == MZ_OK) + err = mz_stream_write_uint16(stream, field_length); + if (err == MZ_OK) + err = mz_stream_copy(stream, file_extra_stream, field_length); + } + + mz_stream_mem_delete(&file_extra_stream); + } + + if ((err == MZ_OK) && (!local) && (file_info->comment != NULL)) { + if (mz_stream_write(stream, file_info->comment, file_info->comment_size) != file_info->comment_size) + err = MZ_WRITE_ERROR; + } + + return err; +} + +static int32_t mz_zip_entry_write_descriptor(void *stream, uint8_t zip64, uint32_t crc32, int64_t compressed_size, int64_t uncompressed_size) { + int32_t err = MZ_OK; + + err = mz_stream_write_uint32(stream, MZ_ZIP_MAGIC_DATADESCRIPTOR); + if (err == MZ_OK) + err = mz_stream_write_uint32(stream, crc32); + + /* Store data descriptor as 8 bytes if zip 64 extension enabled */ + if (err == MZ_OK) { + /* Zip 64 extension is enabled when uncompressed size is > UINT32_MAX */ + if (!zip64) + err = mz_stream_write_uint32(stream, (uint32_t)compressed_size); + else + err = mz_stream_write_int64(stream, compressed_size); + } + if (err == MZ_OK) { + if (!zip64) + err = mz_stream_write_uint32(stream, (uint32_t)uncompressed_size); + else + err = mz_stream_write_int64(stream, uncompressed_size); + } + + return err; +} + +static int32_t mz_zip_read_cd(void *handle) { + mz_zip *zip = (mz_zip *)handle; + uint64_t number_entry_cd64 = 0; + uint64_t number_entry_cd = 0; + int64_t eocd_pos = 0; + int64_t eocd_pos64 = 0; + int64_t value64i = 0; + uint16_t value16 = 0; + uint32_t value32 = 0; + uint64_t value64 = 0; + uint16_t comment_size = 0; + int32_t comment_read = 0; + int32_t err = MZ_OK; + + + if (zip == NULL) + return MZ_PARAM_ERROR; + + /* Read and cache central directory records */ + err = mz_zip_search_eocd(zip->stream, &eocd_pos); + if (err == MZ_OK) { + /* The signature, already checked */ + err = mz_stream_read_uint32(zip->stream, &value32); + /* Number of this disk */ + if (err == MZ_OK) + err = mz_stream_read_uint16(zip->stream, &value16); + /* Number of the disk with the start of the central directory */ + if (err == MZ_OK) + err = mz_stream_read_uint16(zip->stream, &value16); + zip->disk_number_with_cd = value16; + /* Total number of entries in the central dir on this disk */ + if (err == MZ_OK) + err = mz_stream_read_uint16(zip->stream, &value16); + zip->number_entry = value16; + /* Total number of entries in the central dir */ + if (err == MZ_OK) + err = mz_stream_read_uint16(zip->stream, &value16); + number_entry_cd = value16; + if (number_entry_cd != zip->number_entry) + err = MZ_FORMAT_ERROR; + /* Size of the central directory */ + if (err == MZ_OK) + err = mz_stream_read_uint32(zip->stream, &value32); + if (err == MZ_OK) + zip->cd_size = value32; + /* Offset of start of central directory with respect to the starting disk number */ + if (err == MZ_OK) + err = mz_stream_read_uint32(zip->stream, &value32); + if (err == MZ_OK) + zip->cd_offset = value32; + /* Zip file global comment length */ + if (err == MZ_OK) + err = mz_stream_read_uint16(zip->stream, &comment_size); + if ((err == MZ_OK) && (comment_size > 0)) { + zip->comment = (char *)MZ_ALLOC(comment_size + 1); + if (zip->comment != NULL) { + comment_read = mz_stream_read(zip->stream, zip->comment, comment_size); + /* Don't fail if incorrect comment length read, not critical */ + if (comment_read < 0) + comment_read = 0; + zip->comment[comment_read] = 0; + } + } + + if ((err == MZ_OK) && ((number_entry_cd == UINT16_MAX) || (zip->cd_offset == UINT32_MAX))) { + /* Format should be Zip64, as the central directory or file size is too large */ + if (mz_zip_search_zip64_eocd(zip->stream, eocd_pos, &eocd_pos64) == MZ_OK) { + eocd_pos = eocd_pos64; + + err = mz_stream_seek(zip->stream, eocd_pos, MZ_SEEK_SET); + /* The signature, already checked */ + if (err == MZ_OK) + err = mz_stream_read_uint32(zip->stream, &value32); + /* Size of zip64 end of central directory record */ + if (err == MZ_OK) + err = mz_stream_read_uint64(zip->stream, &value64); + /* Version made by */ + if (err == MZ_OK) + err = mz_stream_read_uint16(zip->stream, &zip->version_madeby); + /* Version needed to extract */ + if (err == MZ_OK) + err = mz_stream_read_uint16(zip->stream, &value16); + /* Number of this disk */ + if (err == MZ_OK) + err = mz_stream_read_uint32(zip->stream, &value32); + /* Number of the disk with the start of the central directory */ + if (err == MZ_OK) + err = mz_stream_read_uint32(zip->stream, &zip->disk_number_with_cd); + /* Total number of entries in the central directory on this disk */ + if (err == MZ_OK) + err = mz_stream_read_uint64(zip->stream, &zip->number_entry); + /* Total number of entries in the central directory */ + if (err == MZ_OK) + err = mz_stream_read_uint64(zip->stream, &number_entry_cd64); + if (zip->number_entry != number_entry_cd64) + err = MZ_FORMAT_ERROR; + /* Size of the central directory */ + if (err == MZ_OK) { + err = mz_stream_read_int64(zip->stream, &zip->cd_size); + if (zip->cd_size < 0) + err = MZ_FORMAT_ERROR; + } + /* Offset of start of central directory with respect to the starting disk number */ + if (err == MZ_OK) { + err = mz_stream_read_int64(zip->stream, &zip->cd_offset); + if (zip->cd_offset < 0) + err = MZ_FORMAT_ERROR; + } + } else if ((zip->number_entry == UINT16_MAX) || (number_entry_cd != zip->number_entry) || + (zip->cd_size == UINT16_MAX) || (zip->cd_offset == UINT32_MAX)) { + err = MZ_FORMAT_ERROR; + } + } + } + + if (err == MZ_OK) { + mz_zip_print("Zip - Read cd (disk %" PRId32 " entries %" PRId64 " offset %" PRId64 " size %" PRId64 ")\n", + zip->disk_number_with_cd, zip->number_entry, zip->cd_offset, zip->cd_size); + + /* Verify central directory signature exists at offset */ + err = mz_stream_seek(zip->stream, zip->cd_offset, MZ_SEEK_SET); + if (err == MZ_OK) + err = mz_stream_read_uint32(zip->stream, &zip->cd_signature); + if ((err == MZ_OK) && (zip->cd_signature != MZ_ZIP_MAGIC_CENTRALHEADER)) { + /* If cd exists in large file and no zip-64 support, error for recover */ + if (eocd_pos > UINT32_MAX && eocd_pos64 == 0) + err = MZ_FORMAT_ERROR; + /* If cd not found attempt to seek backward to find it */ + if (err == MZ_OK) + err = mz_stream_seek(zip->stream, eocd_pos - zip->cd_size, MZ_SEEK_SET); + if (err == MZ_OK) + err = mz_stream_read_uint32(zip->stream, &zip->cd_signature); + if ((err == MZ_OK) && (zip->cd_signature == MZ_ZIP_MAGIC_CENTRALHEADER)) { + + /* If found compensate for incorrect locations */ + value64i = zip->cd_offset; + zip->cd_offset = eocd_pos - zip->cd_size; + /* Assume disk has prepended data */ + zip->disk_offset_shift = zip->cd_offset - value64i; + } + } + } + + if (err == MZ_OK) { + if (eocd_pos < zip->cd_offset) { + /* End of central dir should always come after central dir */ + err = MZ_FORMAT_ERROR; + } else if ((uint64_t)eocd_pos < (uint64_t)zip->cd_offset + zip->cd_size) { + /* Truncate size of cd if incorrect size or offset provided */ + zip->cd_size = eocd_pos - zip->cd_offset; + } + } + + return err; +} + +static int32_t mz_zip_write_cd(void *handle) { + mz_zip *zip = (mz_zip *)handle; + int64_t zip64_eocd_pos_inzip = 0; + int64_t disk_number = 0; + int64_t disk_size = 0; + int32_t comment_size = 0; + int32_t err = MZ_OK; + + + if (zip == NULL) + return MZ_PARAM_ERROR; + + if (mz_stream_get_prop_int64(zip->stream, MZ_STREAM_PROP_DISK_NUMBER, &disk_number) == MZ_OK) + zip->disk_number_with_cd = (uint32_t)disk_number; + if (mz_stream_get_prop_int64(zip->stream, MZ_STREAM_PROP_DISK_SIZE, &disk_size) == MZ_OK && disk_size > 0) + zip->disk_number_with_cd += 1; + mz_stream_set_prop_int64(zip->stream, MZ_STREAM_PROP_DISK_NUMBER, -1); + if ((zip->disk_number_with_cd > 0) && (zip->open_mode & MZ_OPEN_MODE_APPEND)) { + // Overwrite existing central directory if using split disks + mz_stream_seek(zip->stream, 0, MZ_SEEK_SET); + } + + zip->cd_offset = mz_stream_tell(zip->stream); + mz_stream_seek(zip->cd_mem_stream, 0, MZ_SEEK_END); + zip->cd_size = (uint32_t)mz_stream_tell(zip->cd_mem_stream); + mz_stream_seek(zip->cd_mem_stream, 0, MZ_SEEK_SET); + + err = mz_stream_copy(zip->stream, zip->cd_mem_stream, (int32_t)zip->cd_size); + + mz_zip_print("Zip - Write cd (disk %" PRId32 " entries %" PRId64 " offset %" PRId64 " size %" PRId64 ")\n", + zip->disk_number_with_cd, zip->number_entry, zip->cd_offset, zip->cd_size); + + if (zip->cd_size == 0 && zip->number_entry > 0) { + // Zip does not contain central directory, open with recovery option + return MZ_FORMAT_ERROR; + } + + /* Write the ZIP64 central directory header */ + if (zip->cd_offset >= UINT32_MAX || zip->number_entry >= UINT16_MAX) { + zip64_eocd_pos_inzip = mz_stream_tell(zip->stream); + + err = mz_stream_write_uint32(zip->stream, MZ_ZIP_MAGIC_ENDHEADER64); + + /* Size of this 'zip64 end of central directory' */ + if (err == MZ_OK) + err = mz_stream_write_uint64(zip->stream, (uint64_t)44); + /* Version made by */ + if (err == MZ_OK) + err = mz_stream_write_uint16(zip->stream, zip->version_madeby); + /* Version needed */ + if (err == MZ_OK) + err = mz_stream_write_uint16(zip->stream, (uint16_t)45); + /* Number of this disk */ + if (err == MZ_OK) + err = mz_stream_write_uint32(zip->stream, zip->disk_number_with_cd); + /* Number of the disk with the start of the central directory */ + if (err == MZ_OK) + err = mz_stream_write_uint32(zip->stream, zip->disk_number_with_cd); + /* Total number of entries in the central dir on this disk */ + if (err == MZ_OK) + err = mz_stream_write_uint64(zip->stream, zip->number_entry); + /* Total number of entries in the central dir */ + if (err == MZ_OK) + err = mz_stream_write_uint64(zip->stream, zip->number_entry); + /* Size of the central directory */ + if (err == MZ_OK) + err = mz_stream_write_int64(zip->stream, zip->cd_size); + /* Offset of start of central directory with respect to the starting disk number */ + if (err == MZ_OK) + err = mz_stream_write_int64(zip->stream, zip->cd_offset); + if (err == MZ_OK) + err = mz_stream_write_uint32(zip->stream, MZ_ZIP_MAGIC_ENDLOCHEADER64); + + /* Number of the disk with the start of the central directory */ + if (err == MZ_OK) + err = mz_stream_write_uint32(zip->stream, zip->disk_number_with_cd); + /* Relative offset to the end of zip64 central directory */ + if (err == MZ_OK) + err = mz_stream_write_int64(zip->stream, zip64_eocd_pos_inzip); + /* Number of the disk with the start of the central directory */ + if (err == MZ_OK) + err = mz_stream_write_uint32(zip->stream, zip->disk_number_with_cd + 1); + } + + /* Write the central directory header */ + + /* Signature */ + if (err == MZ_OK) + err = mz_stream_write_uint32(zip->stream, MZ_ZIP_MAGIC_ENDHEADER); + /* Number of this disk */ + if (err == MZ_OK) + err = mz_stream_write_uint16(zip->stream, (uint16_t)zip->disk_number_with_cd); + /* Number of the disk with the start of the central directory */ + if (err == MZ_OK) + err = mz_stream_write_uint16(zip->stream, (uint16_t)zip->disk_number_with_cd); + /* Total number of entries in the central dir on this disk */ + if (err == MZ_OK) { + if (zip->number_entry >= UINT16_MAX) + err = mz_stream_write_uint16(zip->stream, UINT16_MAX); + else + err = mz_stream_write_uint16(zip->stream, (uint16_t)zip->number_entry); + } + /* Total number of entries in the central dir */ + if (err == MZ_OK) { + if (zip->number_entry >= UINT16_MAX) + err = mz_stream_write_uint16(zip->stream, UINT16_MAX); + else + err = mz_stream_write_uint16(zip->stream, (uint16_t)zip->number_entry); + } + /* Size of the central directory */ + if (err == MZ_OK) + err = mz_stream_write_uint32(zip->stream, (uint32_t)zip->cd_size); + /* Offset of start of central directory with respect to the starting disk number */ + if (err == MZ_OK) { + if (zip->cd_offset >= UINT32_MAX) + err = mz_stream_write_uint32(zip->stream, UINT32_MAX); + else + err = mz_stream_write_uint32(zip->stream, (uint32_t)zip->cd_offset); + } + + /* Write global comment */ + if (zip->comment != NULL) { + comment_size = (int32_t)strlen(zip->comment); + if (comment_size > UINT16_MAX) + comment_size = UINT16_MAX; + } + if (err == MZ_OK) + err = mz_stream_write_uint16(zip->stream, (uint16_t)comment_size); + if (err == MZ_OK) { + if (mz_stream_write(zip->stream, zip->comment, comment_size) != comment_size) + err = MZ_READ_ERROR; + } + return err; +} + +static int32_t mz_zip_recover_cd(void *handle) { + mz_zip *zip = (mz_zip *)handle; + mz_zip_file local_file_info; + void *local_file_info_stream = NULL; + void *cd_mem_stream = NULL; + uint64_t number_entry = 0; + int64_t descriptor_pos = 0; + int64_t next_header_pos = 0; + int64_t disk_offset = 0; + int64_t disk_number = 0; + int64_t compressed_pos = 0; + int64_t compressed_end_pos = 0; + int64_t compressed_size = 0; + int64_t uncompressed_size = 0; + uint8_t descriptor_magic[4] = MZ_ZIP_MAGIC_DATADESCRIPTORU8; + uint8_t local_header_magic[4] = MZ_ZIP_MAGIC_LOCALHEADERU8; + uint8_t central_header_magic[4] = MZ_ZIP_MAGIC_CENTRALHEADERU8; + uint32_t crc32 = 0; + int32_t disk_number_with_cd = 0; + int32_t err = MZ_OK; + uint8_t zip64 = 0; + uint8_t eof = 0; + + + mz_zip_print("Zip - Recover - Start\n"); + + mz_zip_get_cd_mem_stream(handle, &cd_mem_stream); + + /* Determine if we are on a split disk or not */ + mz_stream_set_prop_int64(zip->stream, MZ_STREAM_PROP_DISK_NUMBER, 0); + if (mz_stream_tell(zip->stream) < 0) { + mz_stream_set_prop_int64(zip->stream, MZ_STREAM_PROP_DISK_NUMBER, -1); + mz_stream_seek(zip->stream, 0, MZ_SEEK_SET); + } else + disk_number_with_cd = 1; + + if (mz_stream_is_open(cd_mem_stream) != MZ_OK) + err = mz_stream_mem_open(cd_mem_stream, NULL, MZ_OPEN_MODE_CREATE); + + mz_stream_mem_create(&local_file_info_stream); + mz_stream_mem_open(local_file_info_stream, NULL, MZ_OPEN_MODE_CREATE); + + if (err == MZ_OK) { + err = mz_stream_find(zip->stream, (const void *)local_header_magic, sizeof(local_header_magic), + INT64_MAX, &next_header_pos); + } + + while (err == MZ_OK && !eof) { + /* Get current offset and disk number for central dir record */ + disk_offset = mz_stream_tell(zip->stream); + mz_stream_get_prop_int64(zip->stream, MZ_STREAM_PROP_DISK_NUMBER, &disk_number); + + /* Read local headers */ + memset(&local_file_info, 0, sizeof(local_file_info)); + err = mz_zip_entry_read_header(zip->stream, 1, &local_file_info, local_file_info_stream); + if (err != MZ_OK) + break; + + local_file_info.disk_offset = disk_offset; + if (disk_number < 0) + disk_number = 0; + local_file_info.disk_number = (uint32_t)disk_number; + + compressed_pos = mz_stream_tell(zip->stream); + + if ((err == MZ_OK) && (local_file_info.compressed_size > 0)) { + mz_stream_seek(zip->stream, local_file_info.compressed_size, MZ_SEEK_CUR); + } + + for (;;) { + /* Search for the next local header */ + err = mz_stream_find(zip->stream, (const void *)local_header_magic, sizeof(local_header_magic), + INT64_MAX, &next_header_pos); + + if (err == MZ_EXIST_ERROR) { + mz_stream_seek(zip->stream, compressed_pos, MZ_SEEK_SET); + + /* Search for central dir if no local header found */ + err = mz_stream_find(zip->stream, (const void *)central_header_magic, sizeof(central_header_magic), + INT64_MAX, &next_header_pos); + + if (err == MZ_EXIST_ERROR) { + /* Get end of stream if no central header found */ + mz_stream_seek(zip->stream, 0, MZ_SEEK_END); + next_header_pos = mz_stream_tell(zip->stream); + } + + eof = 1; + } + + if (local_file_info.flag & MZ_ZIP_FLAG_DATA_DESCRIPTOR || local_file_info.compressed_size == 0) { + /* Search backwards for the descriptor, seeking too far back will be incorrect if compressed size is small */ + err = mz_stream_find_reverse(zip->stream, (const void *)descriptor_magic, sizeof(descriptor_magic), + MZ_ZIP_SIZE_MAX_DATA_DESCRIPTOR, &descriptor_pos); + if (err == MZ_OK) { + if (mz_zip_extrafield_contains(local_file_info.extrafield, + local_file_info.extrafield_size, MZ_ZIP_EXTENSION_ZIP64, NULL) == MZ_OK) + zip64 = 1; + + err = mz_zip_entry_read_descriptor(zip->stream, zip64, &crc32, + &compressed_size, &uncompressed_size); + + if (err == MZ_OK) { + if (local_file_info.crc == 0) + local_file_info.crc = crc32; + if (local_file_info.compressed_size == 0) + local_file_info.compressed_size = compressed_size; + if (local_file_info.uncompressed_size == 0) + local_file_info.uncompressed_size = uncompressed_size; + } + + compressed_end_pos = descriptor_pos; + } else if (eof) { + compressed_end_pos = next_header_pos; + } else if (local_file_info.flag & MZ_ZIP_FLAG_DATA_DESCRIPTOR) { + /* Wrong local file entry found, keep searching */ + next_header_pos += 1; + mz_stream_seek(zip->stream, next_header_pos, MZ_SEEK_SET); + continue; + } + } else { + compressed_end_pos = next_header_pos; + } + + break; + } + + compressed_size = compressed_end_pos - compressed_pos; + + if (compressed_size > UINT32_MAX) { + /* Update sizes if 4GB file is written with no ZIP64 support */ + if (local_file_info.uncompressed_size < UINT32_MAX) { + local_file_info.compressed_size = compressed_size; + local_file_info.uncompressed_size = 0; + } + } + + mz_zip_print("Zip - Recover - Entry %s (csize %" PRId64 " usize %" PRId64 " flags 0x%" PRIx16 ")\n", + local_file_info.filename, local_file_info.compressed_size, local_file_info.uncompressed_size, + local_file_info.flag); + + /* Rewrite central dir with local headers and offsets */ + err = mz_zip_entry_write_header(cd_mem_stream, 0, &local_file_info); + if (err == MZ_OK) + number_entry += 1; + + err = mz_stream_seek(zip->stream, next_header_pos, MZ_SEEK_SET); + } + + mz_stream_mem_delete(&local_file_info_stream); + + mz_zip_print("Zip - Recover - Complete (cddisk %" PRId32 " entries %" PRId64 ")\n", + disk_number_with_cd, number_entry); + + if (number_entry == 0) + return err; + + /* Set new upper seek boundary for central dir mem stream */ + disk_offset = mz_stream_tell(cd_mem_stream); + mz_stream_mem_set_buffer_limit(cd_mem_stream, (int32_t)disk_offset); + + /* Set new central directory info */ + mz_zip_set_cd_stream(handle, 0, cd_mem_stream); + mz_zip_set_number_entry(handle, number_entry); + mz_zip_set_disk_number_with_cd(handle, disk_number_with_cd); + + return MZ_OK; +} + +void *mz_zip_create(void **handle) { + mz_zip *zip = NULL; + + zip = (mz_zip *)MZ_ALLOC(sizeof(mz_zip)); + if (zip != NULL) { + memset(zip, 0, sizeof(mz_zip)); + zip->data_descriptor = 1; + } + if (handle != NULL) + *handle = zip; + + return zip; +} + +void mz_zip_delete(void **handle) { + mz_zip *zip = NULL; + if (handle == NULL) + return; + zip = (mz_zip *)*handle; + if (zip != NULL) { + MZ_FREE(zip); + } + *handle = NULL; +} + +int32_t mz_zip_open(void *handle, void *stream, int32_t mode) { + mz_zip *zip = (mz_zip *)handle; + int32_t err = MZ_OK; + + + if (zip == NULL) + return MZ_PARAM_ERROR; + + mz_zip_print("Zip - Open\n"); + + zip->stream = stream; + + mz_stream_mem_create(&zip->cd_mem_stream); + + if (mode & MZ_OPEN_MODE_WRITE) { + mz_stream_mem_open(zip->cd_mem_stream, NULL, MZ_OPEN_MODE_CREATE); + zip->cd_stream = zip->cd_mem_stream; + } else { + zip->cd_stream = stream; + } + + if ((mode & MZ_OPEN_MODE_READ) || (mode & MZ_OPEN_MODE_APPEND)) { + if ((mode & MZ_OPEN_MODE_CREATE) == 0) { + err = mz_zip_read_cd(zip); + if (err != MZ_OK) { + mz_zip_print("Zip - Error detected reading cd (%" PRId32 ")\n", err); + if (zip->recover && mz_zip_recover_cd(zip) == MZ_OK) + err = MZ_OK; + } + } + + if ((err == MZ_OK) && (mode & MZ_OPEN_MODE_APPEND)) { + if (zip->cd_size > 0) { + /* Store central directory in memory */ + err = mz_stream_seek(zip->stream, zip->cd_offset, MZ_SEEK_SET); + if (err == MZ_OK) + err = mz_stream_copy(zip->cd_mem_stream, zip->stream, (int32_t)zip->cd_size); + if (err == MZ_OK) + err = mz_stream_seek(zip->stream, zip->cd_offset, MZ_SEEK_SET); + } else { + if (zip->cd_signature == MZ_ZIP_MAGIC_ENDHEADER) { + /* If tiny zip then overwrite end header */ + err = mz_stream_seek(zip->stream, zip->cd_offset, MZ_SEEK_SET); + } else { + /* If no central directory, append new zip to end of file */ + err = mz_stream_seek(zip->stream, 0, MZ_SEEK_END); + } + } + + if (zip->disk_number_with_cd > 0) { + /* Move to last disk to begin appending */ + mz_stream_set_prop_int64(zip->stream, MZ_STREAM_PROP_DISK_NUMBER, zip->disk_number_with_cd - 1); + } + } else { + zip->cd_start_pos = zip->cd_offset; + } + } + + if (err != MZ_OK) { + mz_zip_close(zip); + return err; + } + + /* Memory streams used to store variable length file info data */ + mz_stream_mem_create(&zip->file_info_stream); + mz_stream_mem_open(zip->file_info_stream, NULL, MZ_OPEN_MODE_CREATE); + + mz_stream_mem_create(&zip->local_file_info_stream); + mz_stream_mem_open(zip->local_file_info_stream, NULL, MZ_OPEN_MODE_CREATE); + + zip->open_mode = mode; + + return err; +} + +int32_t mz_zip_close(void *handle) { + mz_zip *zip = (mz_zip *)handle; + int32_t err = MZ_OK; + + if (zip == NULL) + return MZ_PARAM_ERROR; + + mz_zip_print("Zip - Close\n"); + + if (mz_zip_entry_is_open(handle) == MZ_OK) + err = mz_zip_entry_close(handle); + + if ((err == MZ_OK) && (zip->open_mode & MZ_OPEN_MODE_WRITE)) + err = mz_zip_write_cd(handle); + + if (zip->cd_mem_stream != NULL) { + mz_stream_close(zip->cd_mem_stream); + mz_stream_delete(&zip->cd_mem_stream); + } + + if (zip->file_info_stream != NULL) { + mz_stream_mem_close(zip->file_info_stream); + mz_stream_mem_delete(&zip->file_info_stream); + } + if (zip->local_file_info_stream != NULL) { + mz_stream_mem_close(zip->local_file_info_stream); + mz_stream_mem_delete(&zip->local_file_info_stream); + } + + if (zip->comment) { + MZ_FREE(zip->comment); + zip->comment = NULL; + } + + zip->stream = NULL; + zip->cd_stream = NULL; + + return err; +} + +int32_t mz_zip_get_comment(void *handle, const char **comment) { + mz_zip *zip = (mz_zip *)handle; + if (zip == NULL || comment == NULL) + return MZ_PARAM_ERROR; + if (zip->comment == NULL) + return MZ_EXIST_ERROR; + *comment = zip->comment; + return MZ_OK; +} + +int32_t mz_zip_set_comment(void *handle, const char *comment) { + mz_zip *zip = (mz_zip *)handle; + int32_t comment_size = 0; + if (zip == NULL || comment == NULL) + return MZ_PARAM_ERROR; + if (zip->comment != NULL) + MZ_FREE(zip->comment); + comment_size = (int32_t)strlen(comment); + if (comment_size > UINT16_MAX) + return MZ_PARAM_ERROR; + zip->comment = (char *)MZ_ALLOC(comment_size+1); + if (zip->comment == NULL) + return MZ_MEM_ERROR; + memset(zip->comment, 0, comment_size+1); + strncpy(zip->comment, comment, comment_size); + return MZ_OK; +} + +int32_t mz_zip_get_version_madeby(void *handle, uint16_t *version_madeby) { + mz_zip *zip = (mz_zip *)handle; + if (zip == NULL || version_madeby == NULL) + return MZ_PARAM_ERROR; + *version_madeby = zip->version_madeby; + return MZ_OK; +} + +int32_t mz_zip_set_version_madeby(void *handle, uint16_t version_madeby) { + mz_zip *zip = (mz_zip *)handle; + if (zip == NULL) + return MZ_PARAM_ERROR; + zip->version_madeby = version_madeby; + return MZ_OK; +} + +int32_t mz_zip_set_recover(void *handle, uint8_t recover) { + mz_zip *zip = (mz_zip *)handle; + if (zip == NULL) + return MZ_PARAM_ERROR; + zip->recover = recover; + return MZ_OK; +} + +int32_t mz_zip_set_data_descriptor(void *handle, uint8_t data_descriptor) { + mz_zip *zip = (mz_zip *)handle; + if (zip == NULL) + return MZ_PARAM_ERROR; + zip->data_descriptor = data_descriptor; + return MZ_OK; +} + +int32_t mz_zip_get_stream(void *handle, void **stream) { + mz_zip *zip = (mz_zip *)handle; + if (zip == NULL || stream == NULL) + return MZ_PARAM_ERROR; + *stream = zip->stream; + if (*stream == NULL) + return MZ_EXIST_ERROR; + return MZ_OK; +} + +int32_t mz_zip_set_cd_stream(void *handle, int64_t cd_start_pos, void *cd_stream) { + mz_zip *zip = (mz_zip *)handle; + if (zip == NULL || cd_stream == NULL) + return MZ_PARAM_ERROR; + zip->cd_offset = 0; + zip->cd_stream = cd_stream; + zip->cd_start_pos = cd_start_pos; + return MZ_OK; +} + +int32_t mz_zip_get_cd_mem_stream(void *handle, void **cd_mem_stream) { + mz_zip *zip = (mz_zip *)handle; + if (zip == NULL || cd_mem_stream == NULL) + return MZ_PARAM_ERROR; + *cd_mem_stream = zip->cd_mem_stream; + if (*cd_mem_stream == NULL) + return MZ_EXIST_ERROR; + return MZ_OK; +} + +int32_t mz_zip_set_number_entry(void *handle, uint64_t number_entry) { + mz_zip *zip = (mz_zip *)handle; + if (zip == NULL) + return MZ_PARAM_ERROR; + zip->number_entry = number_entry; + return MZ_OK; +} + +int32_t mz_zip_get_number_entry(void *handle, uint64_t *number_entry) { + mz_zip *zip = (mz_zip *)handle; + if (zip == NULL || number_entry == NULL) + return MZ_PARAM_ERROR; + *number_entry = zip->number_entry; + return MZ_OK; +} + +int32_t mz_zip_set_disk_number_with_cd(void *handle, uint32_t disk_number_with_cd) { + mz_zip *zip = (mz_zip *)handle; + if (zip == NULL) + return MZ_PARAM_ERROR; + zip->disk_number_with_cd = disk_number_with_cd; + return MZ_OK; +} + +int32_t mz_zip_get_disk_number_with_cd(void *handle, uint32_t *disk_number_with_cd) { + mz_zip *zip = (mz_zip *)handle; + if (zip == NULL || disk_number_with_cd == NULL) + return MZ_PARAM_ERROR; + *disk_number_with_cd = zip->disk_number_with_cd; + return MZ_OK; +} + +static int32_t mz_zip_entry_close_int(void *handle) { + mz_zip *zip = (mz_zip *)handle; + + if (zip->crypt_stream != NULL) + mz_stream_delete(&zip->crypt_stream); + zip->crypt_stream = NULL; + if (zip->compress_stream != NULL) + mz_stream_delete(&zip->compress_stream); + zip->compress_stream = NULL; + + zip->entry_opened = 0; + + return MZ_OK; +} + +static int32_t mz_zip_entry_open_int(void *handle, uint8_t raw, int16_t compress_level, const char *password) { + mz_zip *zip = (mz_zip *)handle; + int64_t max_total_in = 0; + int64_t header_size = 0; + int64_t footer_size = 0; + int32_t err = MZ_OK; + uint8_t use_crypt = 0; + + if (zip == NULL) + return MZ_PARAM_ERROR; + + switch (zip->file_info.compression_method) { + case MZ_COMPRESS_METHOD_STORE: + case MZ_COMPRESS_METHOD_DEFLATE: +#ifdef HAVE_BZIP2 + case MZ_COMPRESS_METHOD_BZIP2: +#endif +#ifdef HAVE_LZMA + case MZ_COMPRESS_METHOD_LZMA: +#endif +#if defined(HAVE_LZMA) || defined(HAVE_LIBCOMP) + case MZ_COMPRESS_METHOD_XZ: +#endif +#ifdef HAVE_ZSTD + case MZ_COMPRESS_METHOD_ZSTD: +#endif + err = MZ_OK; + break; + default: + return MZ_SUPPORT_ERROR; + } + +#ifndef HAVE_WZAES + if (zip->file_info.aes_version) + return MZ_SUPPORT_ERROR; +#endif + + zip->entry_raw = raw; + + if ((zip->file_info.flag & MZ_ZIP_FLAG_ENCRYPTED) && (password != NULL)) { + if (zip->open_mode & MZ_OPEN_MODE_WRITE) { + /* Encrypt only when we are not trying to write raw and password is supplied. */ + if (!zip->entry_raw) + use_crypt = 1; + } else if (zip->open_mode & MZ_OPEN_MODE_READ) { + /* Decrypt only when password is supplied. Don't error when password */ + /* is not supplied as we may want to read the raw encrypted data. */ + use_crypt = 1; + } + } + + if ((err == MZ_OK) && (use_crypt)) { +#ifdef HAVE_WZAES + if (zip->file_info.aes_version) { + mz_stream_wzaes_create(&zip->crypt_stream); + mz_stream_wzaes_set_password(zip->crypt_stream, password); + mz_stream_wzaes_set_encryption_mode(zip->crypt_stream, zip->file_info.aes_encryption_mode); + } else +#endif + { +#ifdef HAVE_PKCRYPT + uint8_t verify1 = (uint8_t)((zip->file_info.pk_verify >> 8) & 0xff); + uint8_t verify2 = (uint8_t)((zip->file_info.pk_verify) & 0xff); + + mz_stream_pkcrypt_create(&zip->crypt_stream); + mz_stream_pkcrypt_set_password(zip->crypt_stream, password); + mz_stream_pkcrypt_set_verify(zip->crypt_stream, verify1, verify2); +#endif + } + } + + if (err == MZ_OK) { + if (zip->crypt_stream == NULL) + mz_stream_raw_create(&zip->crypt_stream); + + mz_stream_set_base(zip->crypt_stream, zip->stream); + + err = mz_stream_open(zip->crypt_stream, NULL, zip->open_mode); + } + + if (err == MZ_OK) { + if (zip->entry_raw || zip->file_info.compression_method == MZ_COMPRESS_METHOD_STORE) + mz_stream_raw_create(&zip->compress_stream); +#ifdef HAVE_ZLIB + else if (zip->file_info.compression_method == MZ_COMPRESS_METHOD_DEFLATE) + mz_stream_zlib_create(&zip->compress_stream); +#endif +#ifdef HAVE_BZIP2 + else if (zip->file_info.compression_method == MZ_COMPRESS_METHOD_BZIP2) + mz_stream_bzip_create(&zip->compress_stream); +#endif +#ifdef HAVE_LIBCOMP + else if (zip->file_info.compression_method == MZ_COMPRESS_METHOD_DEFLATE || + zip->file_info.compression_method == MZ_COMPRESS_METHOD_XZ) { + mz_stream_libcomp_create(&zip->compress_stream); + mz_stream_set_prop_int64(zip->compress_stream, MZ_STREAM_PROP_COMPRESS_METHOD, + zip->file_info.compression_method); + } +#endif +#ifdef HAVE_LZMA + else if (zip->file_info.compression_method == MZ_COMPRESS_METHOD_LZMA || + zip->file_info.compression_method == MZ_COMPRESS_METHOD_XZ) { + mz_stream_lzma_create(&zip->compress_stream); + mz_stream_set_prop_int64(zip->compress_stream, MZ_STREAM_PROP_COMPRESS_METHOD, + zip->file_info.compression_method); + } +#endif +#ifdef HAVE_ZSTD + else if (zip->file_info.compression_method == MZ_COMPRESS_METHOD_ZSTD) + mz_stream_zstd_create(&zip->compress_stream); +#endif + else + err = MZ_PARAM_ERROR; + } + + if (err == MZ_OK) { + if (zip->open_mode & MZ_OPEN_MODE_WRITE) { + mz_stream_set_prop_int64(zip->compress_stream, MZ_STREAM_PROP_COMPRESS_LEVEL, compress_level); + } else { + int32_t set_end_of_stream = 0; + +#ifndef HAVE_LIBCOMP + if (zip->entry_raw || + zip->file_info.compression_method == MZ_COMPRESS_METHOD_STORE || + zip->file_info.flag & MZ_ZIP_FLAG_ENCRYPTED) +#endif + { + max_total_in = zip->file_info.compressed_size; + mz_stream_set_prop_int64(zip->crypt_stream, MZ_STREAM_PROP_TOTAL_IN_MAX, max_total_in); + + if (mz_stream_get_prop_int64(zip->crypt_stream, MZ_STREAM_PROP_HEADER_SIZE, &header_size) == MZ_OK) + max_total_in -= header_size; + if (mz_stream_get_prop_int64(zip->crypt_stream, MZ_STREAM_PROP_FOOTER_SIZE, &footer_size) == MZ_OK) + max_total_in -= footer_size; + + mz_stream_set_prop_int64(zip->compress_stream, MZ_STREAM_PROP_TOTAL_IN_MAX, max_total_in); + } + + switch (zip->file_info.compression_method) { + case MZ_COMPRESS_METHOD_LZMA: + case MZ_COMPRESS_METHOD_XZ: + set_end_of_stream = (zip->file_info.flag & MZ_ZIP_FLAG_LZMA_EOS_MARKER); + break; + case MZ_COMPRESS_METHOD_ZSTD: + set_end_of_stream = 1; + break; + } + + if (set_end_of_stream) { + mz_stream_set_prop_int64(zip->compress_stream, MZ_STREAM_PROP_TOTAL_IN_MAX, zip->file_info.compressed_size); + mz_stream_set_prop_int64(zip->compress_stream, MZ_STREAM_PROP_TOTAL_OUT_MAX, zip->file_info.uncompressed_size); + } + } + + mz_stream_set_base(zip->compress_stream, zip->crypt_stream); + + err = mz_stream_open(zip->compress_stream, NULL, zip->open_mode); + } + + if (err == MZ_OK) { + zip->entry_opened = 1; + zip->entry_crc32 = 0; + } else { + mz_zip_entry_close_int(handle); + } + + return err; +} + +int32_t mz_zip_entry_is_open(void *handle) { + mz_zip *zip = (mz_zip *)handle; + if (zip == NULL) + return MZ_PARAM_ERROR; + if (zip->entry_opened == 0) + return MZ_EXIST_ERROR; + return MZ_OK; +} + +int32_t mz_zip_entry_read_open(void *handle, uint8_t raw, const char *password) { + mz_zip *zip = (mz_zip *)handle; + int32_t err = MZ_OK; + int32_t err_shift = MZ_OK; + +#if defined(MZ_ZIP_NO_ENCRYPTION) + if (password != NULL) + return MZ_SUPPORT_ERROR; +#endif + if (zip == NULL) + return MZ_PARAM_ERROR; + if ((zip->open_mode & MZ_OPEN_MODE_READ) == 0) + return MZ_PARAM_ERROR; + if (zip->entry_scanned == 0) + return MZ_PARAM_ERROR; + + mz_zip_print("Zip - Entry - Read open (raw %" PRId32 ")\n", raw); + + err = mz_zip_entry_seek_local_header(handle); + if (err == MZ_OK) + err = mz_zip_entry_read_header(zip->stream, 1, &zip->local_file_info, zip->local_file_info_stream); + + if (err == MZ_FORMAT_ERROR && zip->disk_offset_shift > 0) { + /* Perhaps we didn't compensated correctly for incorrect cd offset */ + err_shift = mz_stream_seek(zip->stream, zip->file_info.disk_offset, MZ_SEEK_SET); + if (err_shift == MZ_OK) + err_shift = mz_zip_entry_read_header(zip->stream, 1, &zip->local_file_info, zip->local_file_info_stream); + if (err_shift == MZ_OK) { + zip->disk_offset_shift = 0; + err = err_shift; + } + } + +#ifdef MZ_ZIP_NO_DECOMPRESSION + if (!raw && zip->file_info.compression_method != MZ_COMPRESS_METHOD_STORE) + err = MZ_SUPPORT_ERROR; +#endif + if (err == MZ_OK) + err = mz_zip_entry_open_int(handle, raw, 0, password); + + return err; +} + +int32_t mz_zip_entry_write_open(void *handle, const mz_zip_file *file_info, int16_t compress_level, uint8_t raw, const char *password) { + mz_zip *zip = (mz_zip *)handle; + int64_t filename_pos = -1; + int64_t extrafield_pos = 0; + int64_t comment_pos = 0; + int64_t linkname_pos = 0; + int64_t disk_number = 0; + uint8_t is_dir = 0; + int32_t err = MZ_OK; + +#if defined(MZ_ZIP_NO_ENCRYPTION) + if (password != NULL) + return MZ_SUPPORT_ERROR; +#endif + if (zip == NULL || file_info == NULL || file_info->filename == NULL) + return MZ_PARAM_ERROR; + + if (mz_zip_entry_is_open(handle) == MZ_OK) { + err = mz_zip_entry_close(handle); + if (err != MZ_OK) + return err; + } + + memcpy(&zip->file_info, file_info, sizeof(mz_zip_file)); + + mz_zip_print("Zip - Entry - Write open - %s (level %" PRId16 " raw %" PRId8 ")\n", + zip->file_info.filename, compress_level, raw); + + mz_stream_seek(zip->file_info_stream, 0, MZ_SEEK_SET); + mz_stream_write(zip->file_info_stream, file_info, sizeof(mz_zip_file)); + + /* Copy filename, extrafield, and comment internally */ + filename_pos = mz_stream_tell(zip->file_info_stream); + if (file_info->filename != NULL) + mz_stream_write(zip->file_info_stream, file_info->filename, (int32_t)strlen(file_info->filename)); + mz_stream_write_uint8(zip->file_info_stream, 0); + + extrafield_pos = mz_stream_tell(zip->file_info_stream); + if (file_info->extrafield != NULL) + mz_stream_write(zip->file_info_stream, file_info->extrafield, file_info->extrafield_size); + mz_stream_write_uint8(zip->file_info_stream, 0); + + comment_pos = mz_stream_tell(zip->file_info_stream); + if (file_info->comment != NULL) + mz_stream_write(zip->file_info_stream, file_info->comment, file_info->comment_size); + mz_stream_write_uint8(zip->file_info_stream, 0); + + linkname_pos = mz_stream_tell(zip->file_info_stream); + if (file_info->linkname != NULL) + mz_stream_write(zip->file_info_stream, file_info->linkname, (int32_t)strlen(file_info->linkname)); + mz_stream_write_uint8(zip->file_info_stream, 0); + + mz_stream_mem_get_buffer_at(zip->file_info_stream, filename_pos, (const void **)&zip->file_info.filename); + mz_stream_mem_get_buffer_at(zip->file_info_stream, extrafield_pos, (const void **)&zip->file_info.extrafield); + mz_stream_mem_get_buffer_at(zip->file_info_stream, comment_pos, (const void **)&zip->file_info.comment); + mz_stream_mem_get_buffer_at(zip->file_info_stream, linkname_pos, (const void **)&zip->file_info.linkname); + + if (zip->file_info.compression_method == MZ_COMPRESS_METHOD_DEFLATE) { + if ((compress_level == 8) || (compress_level == 9)) + zip->file_info.flag |= MZ_ZIP_FLAG_DEFLATE_MAX; + if (compress_level == 2) + zip->file_info.flag |= MZ_ZIP_FLAG_DEFLATE_FAST; + if (compress_level == 1) + zip->file_info.flag |= MZ_ZIP_FLAG_DEFLATE_SUPER_FAST; + } +#if defined(HAVE_LZMA) || defined(HAVE_LIBCOMP) + else if (zip->file_info.compression_method == MZ_COMPRESS_METHOD_LZMA || + zip->file_info.compression_method == MZ_COMPRESS_METHOD_XZ) + zip->file_info.flag |= MZ_ZIP_FLAG_LZMA_EOS_MARKER; +#endif + + if (mz_zip_attrib_is_dir(zip->file_info.external_fa, zip->file_info.version_madeby) == MZ_OK) + is_dir = 1; + + if (!is_dir) { + if (zip->data_descriptor) + zip->file_info.flag |= MZ_ZIP_FLAG_DATA_DESCRIPTOR; + if (password != NULL) + zip->file_info.flag |= MZ_ZIP_FLAG_ENCRYPTED; + } + + mz_stream_get_prop_int64(zip->stream, MZ_STREAM_PROP_DISK_NUMBER, &disk_number); + zip->file_info.disk_number = (uint32_t)disk_number; + zip->file_info.disk_offset = mz_stream_tell(zip->stream); + + if (zip->file_info.flag & MZ_ZIP_FLAG_ENCRYPTED) { +#ifdef HAVE_PKCRYPT + /* Pre-calculated CRC value is required for PKWARE traditional encryption */ + uint32_t dos_date = mz_zip_time_t_to_dos_date(zip->file_info.modified_date); + zip->file_info.pk_verify = mz_zip_get_pk_verify(dos_date, zip->file_info.crc, zip->file_info.flag); +#endif +#ifdef HAVE_WZAES + if (zip->file_info.aes_version && zip->file_info.aes_encryption_mode == 0) + zip->file_info.aes_encryption_mode = MZ_AES_ENCRYPTION_MODE_256; +#endif + } + + zip->file_info.crc = 0; + zip->file_info.compressed_size = 0; + + if ((compress_level == 0) || (is_dir)) + zip->file_info.compression_method = MZ_COMPRESS_METHOD_STORE; + +#ifdef MZ_ZIP_NO_COMPRESSION + if (zip->file_info.compression_method != MZ_COMPRESS_METHOD_STORE) + err = MZ_SUPPORT_ERROR; +#endif + if (err == MZ_OK) + err = mz_zip_entry_write_header(zip->stream, 1, &zip->file_info); + if (err == MZ_OK) + err = mz_zip_entry_open_int(handle, raw, compress_level, password); + + return err; +} + +int32_t mz_zip_entry_read(void *handle, void *buf, int32_t len) { + mz_zip *zip = (mz_zip *)handle; + int32_t read = 0; + + if (zip == NULL || mz_zip_entry_is_open(handle) != MZ_OK) + return MZ_PARAM_ERROR; + if (UINT_MAX == UINT16_MAX && len > UINT16_MAX) /* zlib limitation */ + return MZ_PARAM_ERROR; + if (len == 0) + return MZ_PARAM_ERROR; + + if (zip->file_info.compressed_size == 0) + return 0; + + /* Read entire entry even if uncompressed_size = 0, otherwise */ + /* aes encryption validation will fail if compressed_size > 0 */ + read = mz_stream_read(zip->compress_stream, buf, len); + if (read > 0) + zip->entry_crc32 = mz_crypt_crc32_update(zip->entry_crc32, buf, read); + + mz_zip_print("Zip - Entry - Read - %" PRId32 " (max %" PRId32 ")\n", read, len); + + return read; +} + +int32_t mz_zip_entry_write(void *handle, const void *buf, int32_t len) { + mz_zip *zip = (mz_zip *)handle; + int32_t written = 0; + + if (zip == NULL || mz_zip_entry_is_open(handle) != MZ_OK) + return MZ_PARAM_ERROR; + written = mz_stream_write(zip->compress_stream, buf, len); + if (written > 0) + zip->entry_crc32 = mz_crypt_crc32_update(zip->entry_crc32, buf, written); + + mz_zip_print("Zip - Entry - Write - %" PRId32 " (max %" PRId32 ")\n", written, len); + + return written; +} + +int32_t mz_zip_entry_read_close(void *handle, uint32_t *crc32, int64_t *compressed_size, + int64_t *uncompressed_size) { + mz_zip *zip = (mz_zip *)handle; + int64_t total_in = 0; + int32_t err = MZ_OK; + uint8_t zip64 = 0; + + if (zip == NULL || mz_zip_entry_is_open(handle) != MZ_OK) + return MZ_PARAM_ERROR; + + mz_stream_close(zip->compress_stream); + + mz_zip_print("Zip - Entry - Read Close\n"); + + if (crc32 != NULL) + *crc32 = zip->file_info.crc; + if (compressed_size != NULL) + *compressed_size = zip->file_info.compressed_size; + if (uncompressed_size != NULL) + *uncompressed_size = zip->file_info.uncompressed_size; + + mz_stream_get_prop_int64(zip->compress_stream, MZ_STREAM_PROP_TOTAL_IN, &total_in); + + if ((zip->file_info.flag & MZ_ZIP_FLAG_DATA_DESCRIPTOR) && + ((zip->file_info.flag & MZ_ZIP_FLAG_MASK_LOCAL_INFO) == 0) && + (crc32 != NULL || compressed_size != NULL || uncompressed_size != NULL)) { + /* Check to see if data descriptor is zip64 bit format or not */ + if (mz_zip_extrafield_contains(zip->local_file_info.extrafield, + zip->local_file_info.extrafield_size, MZ_ZIP_EXTENSION_ZIP64, NULL) == MZ_OK) + zip64 = 1; + + err = mz_zip_entry_seek_local_header(handle); + + /* Seek to end of compressed stream since we might have over-read during compression */ + if (err == MZ_OK) + err = mz_stream_seek(zip->stream, MZ_ZIP_SIZE_LD_ITEM + + (int64_t)zip->local_file_info.filename_size + + (int64_t)zip->local_file_info.extrafield_size + + total_in, MZ_SEEK_CUR); + + /* Read data descriptor */ + if (err == MZ_OK) + err = mz_zip_entry_read_descriptor(zip->stream, zip64, + crc32, compressed_size, uncompressed_size); + } + + /* If entire entry was not read verification will fail */ + if ((err == MZ_OK) && (total_in > 0) && (!zip->entry_raw)) { +#ifdef HAVE_WZAES + /* AES zip version AE-1 will expect a valid crc as well */ + if (zip->file_info.aes_version <= 0x0001) +#endif + { + if (zip->entry_crc32 != zip->file_info.crc) { + mz_zip_print("Zip - Entry - Crc failed (actual 0x%08" PRIx32 " expected 0x%08" PRIx32 ")\n", + zip->entry_crc32, zip->file_info.crc); + + err = MZ_CRC_ERROR; + } + } + } + + mz_zip_entry_close_int(handle); + + return err; +} + +int32_t mz_zip_entry_write_close(void *handle, uint32_t crc32, int64_t compressed_size, + int64_t uncompressed_size) { + mz_zip *zip = (mz_zip *)handle; + int64_t end_disk_number = 0; + int32_t err = MZ_OK; + uint8_t zip64 = 0; + + if (zip == NULL || mz_zip_entry_is_open(handle) != MZ_OK) + return MZ_PARAM_ERROR; + + mz_stream_close(zip->compress_stream); + + if (!zip->entry_raw) + crc32 = zip->entry_crc32; + + mz_zip_print("Zip - Entry - Write Close (crc 0x%08" PRIx32 " cs %" PRId64 " ucs %" PRId64 ")\n", + crc32, compressed_size, uncompressed_size); + + /* If sizes are not set, then read them from the compression stream */ + if (compressed_size < 0) + mz_stream_get_prop_int64(zip->compress_stream, MZ_STREAM_PROP_TOTAL_OUT, &compressed_size); + if (uncompressed_size < 0) + mz_stream_get_prop_int64(zip->compress_stream, MZ_STREAM_PROP_TOTAL_IN, &uncompressed_size); + + if (zip->file_info.flag & MZ_ZIP_FLAG_ENCRYPTED) { + mz_stream_set_base(zip->crypt_stream, zip->stream); + err = mz_stream_close(zip->crypt_stream); + + mz_stream_get_prop_int64(zip->crypt_stream, MZ_STREAM_PROP_TOTAL_OUT, &compressed_size); + } + + mz_zip_entry_needs_zip64(&zip->file_info, 1, &zip64); + + if ((err == MZ_OK) && (zip->file_info.flag & MZ_ZIP_FLAG_DATA_DESCRIPTOR)) { + /* Determine if we need to write data descriptor in zip64 format, + if local extrafield was saved with zip64 extrafield */ + + if (zip->file_info.flag & MZ_ZIP_FLAG_MASK_LOCAL_INFO) + err = mz_zip_entry_write_descriptor(zip->stream, + zip64, 0, compressed_size, 0); + else + err = mz_zip_entry_write_descriptor(zip->stream, + zip64, crc32, compressed_size, uncompressed_size); + } + + /* Write file info to central directory */ + + mz_zip_print("Zip - Entry - Write cd (ucs %" PRId64 " cs %" PRId64 " crc 0x%08" PRIx32 ")\n", + uncompressed_size, compressed_size, crc32); + + zip->file_info.crc = crc32; + zip->file_info.compressed_size = compressed_size; + zip->file_info.uncompressed_size = uncompressed_size; + + if (err == MZ_OK) + err = mz_zip_entry_write_header(zip->cd_mem_stream, 0, &zip->file_info); + + /* Update local header with crc32 and sizes */ + if ((err == MZ_OK) && ((zip->file_info.flag & MZ_ZIP_FLAG_DATA_DESCRIPTOR) == 0) && + ((zip->file_info.flag & MZ_ZIP_FLAG_MASK_LOCAL_INFO) == 0)) { + /* Save the disk number and position we are to seek back after updating local header */ + int64_t end_pos = mz_stream_tell(zip->stream); + mz_stream_get_prop_int64(zip->stream, MZ_STREAM_PROP_DISK_NUMBER, &end_disk_number); + + err = mz_zip_entry_seek_local_header(handle); + + if (err == MZ_OK) { + /* Seek to crc32 and sizes offset in local header */ + err = mz_stream_seek(zip->stream, MZ_ZIP_OFFSET_CRC_SIZES, MZ_SEEK_CUR); + } + + if (err == MZ_OK) + err = mz_zip_entry_write_crc_sizes(zip->stream, zip64, 0, &zip->file_info); + + /* Seek to and update zip64 extension sizes */ + if ((err == MZ_OK) && (zip64)) { + int64_t filename_size = zip->file_info.filename_size; + + if (filename_size == 0) + filename_size = strlen(zip->file_info.filename); + + /* Since we write zip64 extension first we know its offset */ + err = mz_stream_seek(zip->stream, 2 + 2 + filename_size + 4, MZ_SEEK_CUR); + + if (err == MZ_OK) + err = mz_stream_write_uint64(zip->stream, zip->file_info.uncompressed_size); + if (err == MZ_OK) + err = mz_stream_write_uint64(zip->stream, zip->file_info.compressed_size); + } + + mz_stream_set_prop_int64(zip->stream, MZ_STREAM_PROP_DISK_NUMBER, end_disk_number); + mz_stream_seek(zip->stream, end_pos, MZ_SEEK_SET); + } + + zip->number_entry += 1; + + mz_zip_entry_close_int(handle); + + return err; +} + +int32_t mz_zip_entry_seek_local_header(void *handle) { + mz_zip *zip = (mz_zip *)handle; + int64_t disk_size = 0; + uint32_t disk_number = zip->file_info.disk_number; + + if (disk_number == zip->disk_number_with_cd) { + mz_stream_get_prop_int64(zip->stream, MZ_STREAM_PROP_DISK_SIZE, &disk_size); + if ((disk_size == 0) || ((zip->open_mode & MZ_OPEN_MODE_WRITE) == 0)) + disk_number = (uint32_t)-1; + } + + mz_stream_set_prop_int64(zip->stream, MZ_STREAM_PROP_DISK_NUMBER, disk_number); + + mz_zip_print("Zip - Entry - Seek local (disk %" PRId32 " offset %" PRId64 ")\n", + disk_number, zip->file_info.disk_offset); + + /* Guard against seek overflows */ + if ((zip->disk_offset_shift > 0) && + (zip->file_info.disk_offset > (INT64_MAX - zip->disk_offset_shift))) + return MZ_FORMAT_ERROR; + + return mz_stream_seek(zip->stream, zip->file_info.disk_offset + zip->disk_offset_shift, MZ_SEEK_SET); +} + +int32_t mz_zip_entry_close(void *handle) { + return mz_zip_entry_close_raw(handle, UINT64_MAX, 0); +} + +int32_t mz_zip_entry_close_raw(void *handle, int64_t uncompressed_size, uint32_t crc32) { + mz_zip *zip = (mz_zip *)handle; + int32_t err = MZ_OK; + + if (zip == NULL || mz_zip_entry_is_open(handle) != MZ_OK) + return MZ_PARAM_ERROR; + + if (zip->open_mode & MZ_OPEN_MODE_WRITE) + err = mz_zip_entry_write_close(handle, crc32, UINT64_MAX, uncompressed_size); + else + err = mz_zip_entry_read_close(handle, NULL, NULL, NULL); + + return err; +} + +int32_t mz_zip_entry_is_dir(void *handle) { + mz_zip *zip = (mz_zip *)handle; + int32_t filename_length = 0; + + if (zip == NULL) + return MZ_PARAM_ERROR; + if (zip->entry_scanned == 0) + return MZ_PARAM_ERROR; + if (mz_zip_attrib_is_dir(zip->file_info.external_fa, zip->file_info.version_madeby) == MZ_OK) + return MZ_OK; + + filename_length = (int32_t)strlen(zip->file_info.filename); + if (filename_length > 0) { + if ((zip->file_info.filename[filename_length - 1] == '/') || + (zip->file_info.filename[filename_length - 1] == '\\')) + return MZ_OK; + } + return MZ_EXIST_ERROR; +} + +int32_t mz_zip_entry_is_symlink(void *handle) { + mz_zip *zip = (mz_zip *)handle; + + if (zip == NULL) + return MZ_PARAM_ERROR; + if (zip->entry_scanned == 0) + return MZ_PARAM_ERROR; + if (mz_zip_attrib_is_symlink(zip->file_info.external_fa, zip->file_info.version_madeby) != MZ_OK) + return MZ_EXIST_ERROR; + if (zip->file_info.linkname == NULL || *zip->file_info.linkname == 0) + return MZ_EXIST_ERROR; + + return MZ_OK; +} + +int32_t mz_zip_entry_get_info(void *handle, mz_zip_file **file_info) { + mz_zip *zip = (mz_zip *)handle; + + if (zip == NULL) + return MZ_PARAM_ERROR; + + if ((zip->open_mode & MZ_OPEN_MODE_WRITE) == 0) { + if (!zip->entry_scanned) + return MZ_PARAM_ERROR; + } + + *file_info = &zip->file_info; + return MZ_OK; +} + +int32_t mz_zip_entry_get_local_info(void *handle, mz_zip_file **local_file_info) { + mz_zip *zip = (mz_zip *)handle; + if (zip == NULL || mz_zip_entry_is_open(handle) != MZ_OK) + return MZ_PARAM_ERROR; + *local_file_info = &zip->local_file_info; + return MZ_OK; +} + +int32_t mz_zip_entry_set_extrafield(void *handle, const uint8_t *extrafield, uint16_t extrafield_size) { + mz_zip *zip = (mz_zip *)handle; + + if (zip == NULL || mz_zip_entry_is_open(handle) != MZ_OK) + return MZ_PARAM_ERROR; + + zip->file_info.extrafield = extrafield; + zip->file_info.extrafield_size = extrafield_size; + return MZ_OK; +} + +static int32_t mz_zip_goto_next_entry_int(void *handle) { + mz_zip *zip = (mz_zip *)handle; + int32_t err = MZ_OK; + + if (zip == NULL) + return MZ_PARAM_ERROR; + + zip->entry_scanned = 0; + + mz_stream_set_prop_int64(zip->cd_stream, MZ_STREAM_PROP_DISK_NUMBER, -1); + + err = mz_stream_seek(zip->cd_stream, zip->cd_current_pos, MZ_SEEK_SET); + if (err == MZ_OK) + err = mz_zip_entry_read_header(zip->cd_stream, 0, &zip->file_info, zip->file_info_stream); + if (err == MZ_OK) + zip->entry_scanned = 1; + return err; +} + +int64_t mz_zip_get_entry(void *handle) { + mz_zip *zip = (mz_zip *)handle; + + if (zip == NULL) + return MZ_PARAM_ERROR; + + return zip->cd_current_pos; +} + +int32_t mz_zip_goto_entry(void *handle, int64_t cd_pos) { + mz_zip *zip = (mz_zip *)handle; + + if (zip == NULL) + return MZ_PARAM_ERROR; + + if (cd_pos < zip->cd_start_pos || cd_pos > zip->cd_start_pos + zip->cd_size) + return MZ_PARAM_ERROR; + + zip->cd_current_pos = cd_pos; + + return mz_zip_goto_next_entry_int(handle); +} + +int32_t mz_zip_goto_first_entry(void *handle) { + mz_zip *zip = (mz_zip *)handle; + + if (zip == NULL) + return MZ_PARAM_ERROR; + + zip->cd_current_pos = zip->cd_start_pos; + + return mz_zip_goto_next_entry_int(handle); +} + +int32_t mz_zip_goto_next_entry(void *handle) { + mz_zip *zip = (mz_zip *)handle; + + if (zip == NULL) + return MZ_PARAM_ERROR; + + zip->cd_current_pos += (int64_t)MZ_ZIP_SIZE_CD_ITEM + zip->file_info.filename_size + + zip->file_info.extrafield_size + zip->file_info.comment_size; + + return mz_zip_goto_next_entry_int(handle); +} + +int32_t mz_zip_locate_entry(void *handle, const char *filename, uint8_t ignore_case) { + mz_zip *zip = (mz_zip *)handle; + int32_t err = MZ_OK; + int32_t result = 0; + + if (zip == NULL || filename == NULL) + return MZ_PARAM_ERROR; + + /* If we are already on the current entry, no need to search */ + if ((zip->entry_scanned) && (zip->file_info.filename != NULL)) { + result = mz_zip_path_compare(zip->file_info.filename, filename, ignore_case); + if (result == 0) + return MZ_OK; + } + + /* Search all entries starting at the first */ + err = mz_zip_goto_first_entry(handle); + while (err == MZ_OK) { + result = mz_zip_path_compare(zip->file_info.filename, filename, ignore_case); + if (result == 0) + return MZ_OK; + + err = mz_zip_goto_next_entry(handle); + } + + return err; +} + +int32_t mz_zip_locate_first_entry(void *handle, void *userdata, mz_zip_locate_entry_cb cb) { + mz_zip *zip = (mz_zip *)handle; + int32_t err = MZ_OK; + int32_t result = 0; + + /* Search first entry looking for match */ + err = mz_zip_goto_first_entry(handle); + if (err != MZ_OK) + return err; + + result = cb(handle, userdata, &zip->file_info); + if (result == 0) + return MZ_OK; + + return mz_zip_locate_next_entry(handle, userdata, cb); +} + +int32_t mz_zip_locate_next_entry(void *handle, void *userdata, mz_zip_locate_entry_cb cb) { + mz_zip *zip = (mz_zip *)handle; + int32_t err = MZ_OK; + int32_t result = 0; + + /* Search next entries looking for match */ + err = mz_zip_goto_next_entry(handle); + while (err == MZ_OK) { + result = cb(handle, userdata, &zip->file_info); + if (result == 0) + return MZ_OK; + + err = mz_zip_goto_next_entry(handle); + } + + return err; +} + +/***************************************************************************/ + +int32_t mz_zip_attrib_is_dir(uint32_t attrib, int32_t version_madeby) { + uint32_t posix_attrib = 0; + uint8_t system = MZ_HOST_SYSTEM(version_madeby); + int32_t err = MZ_OK; + + err = mz_zip_attrib_convert(system, attrib, MZ_HOST_SYSTEM_UNIX, &posix_attrib); + if (err == MZ_OK) { + if ((posix_attrib & 0170000) == 0040000) /* S_ISDIR */ + return MZ_OK; + } + + return MZ_EXIST_ERROR; +} + +int32_t mz_zip_attrib_is_symlink(uint32_t attrib, int32_t version_madeby) { + uint32_t posix_attrib = 0; + uint8_t system = MZ_HOST_SYSTEM(version_madeby); + int32_t err = MZ_OK; + + err = mz_zip_attrib_convert(system, attrib, MZ_HOST_SYSTEM_UNIX, &posix_attrib); + if (err == MZ_OK) { + if ((posix_attrib & 0170000) == 0120000) /* S_ISLNK */ + return MZ_OK; + } + + return MZ_EXIST_ERROR; +} + +int32_t mz_zip_attrib_convert(uint8_t src_sys, uint32_t src_attrib, uint8_t target_sys, uint32_t *target_attrib) { + if (target_attrib == NULL) + return MZ_PARAM_ERROR; + + *target_attrib = 0; + + if ((src_sys == MZ_HOST_SYSTEM_MSDOS) || (src_sys == MZ_HOST_SYSTEM_WINDOWS_NTFS)) { + if ((target_sys == MZ_HOST_SYSTEM_MSDOS) || (target_sys == MZ_HOST_SYSTEM_WINDOWS_NTFS)) { + *target_attrib = src_attrib; + return MZ_OK; + } + if ((target_sys == MZ_HOST_SYSTEM_UNIX) || (target_sys == MZ_HOST_SYSTEM_OSX_DARWIN) || (target_sys == MZ_HOST_SYSTEM_RISCOS)) + return mz_zip_attrib_win32_to_posix(src_attrib, target_attrib); + } else if ((src_sys == MZ_HOST_SYSTEM_UNIX) || (src_sys == MZ_HOST_SYSTEM_OSX_DARWIN) || (src_sys == MZ_HOST_SYSTEM_RISCOS)) { + if ((target_sys == MZ_HOST_SYSTEM_UNIX) || (target_sys == MZ_HOST_SYSTEM_OSX_DARWIN) || (target_sys == MZ_HOST_SYSTEM_RISCOS)) { + /* If high bytes are set, it contains unix specific attributes */ + if ((src_attrib >> 16) != 0) + src_attrib >>= 16; + + *target_attrib = src_attrib; + return MZ_OK; + } + if ((target_sys == MZ_HOST_SYSTEM_MSDOS) || (target_sys == MZ_HOST_SYSTEM_WINDOWS_NTFS)) + return mz_zip_attrib_posix_to_win32(src_attrib, target_attrib); + } + + return MZ_SUPPORT_ERROR; +} + +int32_t mz_zip_attrib_posix_to_win32(uint32_t posix_attrib, uint32_t *win32_attrib) { + if (win32_attrib == NULL) + return MZ_PARAM_ERROR; + + *win32_attrib = 0; + + /* S_IWUSR | S_IWGRP | S_IWOTH | S_IXUSR | S_IXGRP | S_IXOTH */ + if ((posix_attrib & 0000333) == 0 && (posix_attrib & 0000444) != 0) + *win32_attrib |= 0x01; /* FILE_ATTRIBUTE_READONLY */ + /* S_IFLNK */ + if ((posix_attrib & 0170000) == 0120000) + *win32_attrib |= 0x400; /* FILE_ATTRIBUTE_REPARSE_POINT */ + /* S_IFDIR */ + else if ((posix_attrib & 0170000) == 0040000) + *win32_attrib |= 0x10; /* FILE_ATTRIBUTE_DIRECTORY */ + /* S_IFREG */ + else + *win32_attrib |= 0x80; /* FILE_ATTRIBUTE_NORMAL */ + + return MZ_OK; +} + +int32_t mz_zip_attrib_win32_to_posix(uint32_t win32_attrib, uint32_t *posix_attrib) { + if (posix_attrib == NULL) + return MZ_PARAM_ERROR; + + *posix_attrib = 0000444; /* S_IRUSR | S_IRGRP | S_IROTH */ + /* FILE_ATTRIBUTE_READONLY */ + if ((win32_attrib & 0x01) == 0) + *posix_attrib |= 0000222; /* S_IWUSR | S_IWGRP | S_IWOTH */ + /* FILE_ATTRIBUTE_REPARSE_POINT */ + if ((win32_attrib & 0x400) == 0x400) + *posix_attrib |= 0120000; /* S_IFLNK */ + /* FILE_ATTRIBUTE_DIRECTORY */ + else if ((win32_attrib & 0x10) == 0x10) + *posix_attrib |= 0040111; /* S_IFDIR | S_IXUSR | S_IXGRP | S_IXOTH */ + else + *posix_attrib |= 0100000; /* S_IFREG */ + + return MZ_OK; +} + +/***************************************************************************/ + +int32_t mz_zip_extrafield_find(void *stream, uint16_t type, int32_t max_seek, uint16_t *length) { + int32_t err = MZ_OK; + uint16_t field_type = 0; + uint16_t field_length = 0; + + + if (max_seek < 4) + return MZ_EXIST_ERROR; + + do { + err = mz_stream_read_uint16(stream, &field_type); + if (err == MZ_OK) + err = mz_stream_read_uint16(stream, &field_length); + if (err != MZ_OK) + break; + + if (type == field_type) { + if (length != NULL) + *length = field_length; + return MZ_OK; + } + + max_seek -= field_length - 4; + if (max_seek < 0) + return MZ_EXIST_ERROR; + + err = mz_stream_seek(stream, field_length, MZ_SEEK_CUR); + } while (err == MZ_OK); + + return MZ_EXIST_ERROR; +} + +int32_t mz_zip_extrafield_contains(const uint8_t *extrafield, int32_t extrafield_size, + uint16_t type, uint16_t *length) { + void *file_extra_stream = NULL; + int32_t err = MZ_OK; + + if (extrafield == NULL || extrafield_size == 0) + return MZ_PARAM_ERROR; + + mz_stream_mem_create(&file_extra_stream); + mz_stream_mem_set_buffer(file_extra_stream, (void *)extrafield, extrafield_size); + + err = mz_zip_extrafield_find(file_extra_stream, type, extrafield_size, length); + + mz_stream_mem_delete(&file_extra_stream); + + return err; +} + +int32_t mz_zip_extrafield_read(void *stream, uint16_t *type, uint16_t *length) { + int32_t err = MZ_OK; + if (type == NULL || length == NULL) + return MZ_PARAM_ERROR; + err = mz_stream_read_uint16(stream, type); + if (err == MZ_OK) + err = mz_stream_read_uint16(stream, length); + return err; +} + +int32_t mz_zip_extrafield_write(void *stream, uint16_t type, uint16_t length) { + int32_t err = MZ_OK; + err = mz_stream_write_uint16(stream, type); + if (err == MZ_OK) + err = mz_stream_write_uint16(stream, length); + return err; +} + +/***************************************************************************/ + +static int32_t mz_zip_invalid_date(const struct tm *ptm) { +#define datevalue_in_range(min, max, value) ((min) <= (value) && (value) <= (max)) + return (!datevalue_in_range(0, 127 + 80, ptm->tm_year) || /* 1980-based year, allow 80 extra */ + !datevalue_in_range(0, 11, ptm->tm_mon) || + !datevalue_in_range(1, 31, ptm->tm_mday) || + !datevalue_in_range(0, 23, ptm->tm_hour) || + !datevalue_in_range(0, 59, ptm->tm_min) || + !datevalue_in_range(0, 59, ptm->tm_sec)); +#undef datevalue_in_range +} + +static void mz_zip_dosdate_to_raw_tm(uint64_t dos_date, struct tm *ptm) { + uint64_t date = (uint64_t)(dos_date >> 16); + + ptm->tm_mday = (uint16_t)(date & 0x1f); + ptm->tm_mon = (uint16_t)(((date & 0x1E0) / 0x20) - 1); + ptm->tm_year = (uint16_t)(((date & 0x0FE00) / 0x0200) + 80); + ptm->tm_hour = (uint16_t)((dos_date & 0xF800) / 0x800); + ptm->tm_min = (uint16_t)((dos_date & 0x7E0) / 0x20); + ptm->tm_sec = (uint16_t)(2 * (dos_date & 0x1f)); + ptm->tm_isdst = -1; +} + +int32_t mz_zip_dosdate_to_tm(uint64_t dos_date, struct tm *ptm) { + if (ptm == NULL) + return MZ_PARAM_ERROR; + + mz_zip_dosdate_to_raw_tm(dos_date, ptm); + + if (mz_zip_invalid_date(ptm)) { + /* Invalid date stored, so don't return it */ + memset(ptm, 0, sizeof(struct tm)); + return MZ_FORMAT_ERROR; + } + return MZ_OK; +} + +time_t mz_zip_dosdate_to_time_t(uint64_t dos_date) { + struct tm ptm; + mz_zip_dosdate_to_raw_tm(dos_date, &ptm); + return mktime(&ptm); +} + +int32_t mz_zip_time_t_to_tm(time_t unix_time, struct tm *ptm) { + struct tm ltm; + if (ptm == NULL) + return MZ_PARAM_ERROR; + if (localtime_r(&unix_time, <m) == NULL) { /* Returns a 1900-based year */ + /* Invalid date stored, so don't return it */ + memset(ptm, 0, sizeof(struct tm)); + return MZ_INTERNAL_ERROR; + } + memcpy(ptm, <m, sizeof(struct tm)); + return MZ_OK; +} + +uint32_t mz_zip_time_t_to_dos_date(time_t unix_time) { + struct tm ptm; + mz_zip_time_t_to_tm(unix_time, &ptm); + return mz_zip_tm_to_dosdate((const struct tm *)&ptm); +} + +uint32_t mz_zip_tm_to_dosdate(const struct tm *ptm) { + struct tm fixed_tm; + + /* Years supported: */ + + /* [00, 79] (assumed to be between 2000 and 2079) */ + /* [80, 207] (assumed to be between 1980 and 2107, typical output of old */ + /* software that does 'year-1900' to get a double digit year) */ + /* [1980, 2107] (due to format limitations, only years 1980-2107 can be stored.) */ + + memcpy(&fixed_tm, ptm, sizeof(struct tm)); + if (fixed_tm.tm_year >= 1980) /* range [1980, 2107] */ + fixed_tm.tm_year -= 1980; + else if (fixed_tm.tm_year >= 80) /* range [80, 207] */ + fixed_tm.tm_year -= 80; + else /* range [00, 79] */ + fixed_tm.tm_year += 20; + + if (mz_zip_invalid_date(&fixed_tm)) + return 0; + + return (((uint32_t)fixed_tm.tm_mday + (32 * ((uint32_t)fixed_tm.tm_mon + 1)) + (512 * (uint32_t)fixed_tm.tm_year)) << 16) | + (((uint32_t)fixed_tm.tm_sec / 2) + (32 * (uint32_t)fixed_tm.tm_min) + (2048 * (uint32_t)fixed_tm.tm_hour)); +} + +int32_t mz_zip_ntfs_to_unix_time(uint64_t ntfs_time, time_t *unix_time) { + *unix_time = (time_t)((ntfs_time - 116444736000000000LL) / 10000000); + return MZ_OK; +} + +int32_t mz_zip_unix_to_ntfs_time(time_t unix_time, uint64_t *ntfs_time) { + *ntfs_time = ((uint64_t)unix_time * 10000000) + 116444736000000000LL; + return MZ_OK; +} + +/***************************************************************************/ + +int32_t mz_zip_path_compare(const char *path1, const char *path2, uint8_t ignore_case) { + do { + if ((*path1 == '\\' && *path2 == '/') || + (*path2 == '\\' && *path1 == '/')) { + /* Ignore comparison of path slashes */ + } else if (ignore_case) { + if (tolower(*path1) != tolower(*path2)) + break; + } else if (*path1 != *path2) { + break; + } + + path1 += 1; + path2 += 1; + } while (*path1 != 0 && *path2 != 0); + + if (ignore_case) + return (int32_t)(tolower(*path1) - tolower(*path2)); + + return (int32_t)(*path1 - *path2); +} + +/***************************************************************************/ + +const char* mz_zip_get_compression_method_string(int32_t compression_method) +{ + const char *method = "?"; + switch (compression_method) { + case MZ_COMPRESS_METHOD_STORE: + method = "stored"; + break; + case MZ_COMPRESS_METHOD_DEFLATE: + method = "deflate"; + break; + case MZ_COMPRESS_METHOD_BZIP2: + method = "bzip2"; + break; + case MZ_COMPRESS_METHOD_LZMA: + method = "lzma"; + break; + case MZ_COMPRESS_METHOD_XZ: + method = "xz"; + break; + case MZ_COMPRESS_METHOD_ZSTD: + method = "zstd"; + break; + } + return method; +} + +/***************************************************************************/ diff --git a/Externals/minizip/mz_zip.h b/Externals/minizip/mz_zip.h new file mode 100644 index 000000000000..e3d1fbd52347 --- /dev/null +++ b/Externals/minizip/mz_zip.h @@ -0,0 +1,259 @@ +/* mz_zip.h -- Zip manipulation + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + Copyright (C) 2009-2010 Mathias Svensson + Modifications for Zip64 support + http://result42.com + Copyright (C) 1998-2010 Gilles Vollant + https://www.winimage.com/zLibDll/minizip.html + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_ZIP_H +#define MZ_ZIP_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +typedef struct mz_zip_file_s { + uint16_t version_madeby; /* version made by */ + uint16_t version_needed; /* version needed to extract */ + uint16_t flag; /* general purpose bit flag */ + uint16_t compression_method; /* compression method */ + time_t modified_date; /* last modified date in unix time */ + time_t accessed_date; /* last accessed date in unix time */ + time_t creation_date; /* creation date in unix time */ + uint32_t crc; /* crc-32 */ + int64_t compressed_size; /* compressed size */ + int64_t uncompressed_size; /* uncompressed size */ + uint16_t filename_size; /* filename length */ + uint16_t extrafield_size; /* extra field length */ + uint16_t comment_size; /* file comment length */ + uint32_t disk_number; /* disk number start */ + int64_t disk_offset; /* relative offset of local header */ + uint16_t internal_fa; /* internal file attributes */ + uint32_t external_fa; /* external file attributes */ + + const char *filename; /* filename utf8 null-terminated string */ + const uint8_t *extrafield; /* extrafield data */ + const char *comment; /* comment utf8 null-terminated string */ + const char *linkname; /* sym-link filename utf8 null-terminated string */ + + uint16_t zip64; /* zip64 extension mode */ + uint16_t aes_version; /* winzip aes extension if not 0 */ + uint8_t aes_encryption_mode; /* winzip aes encryption mode */ + uint16_t pk_verify; /* pkware encryption verifier */ + +} mz_zip_file, mz_zip_entry; + +/***************************************************************************/ + +typedef int32_t (*mz_zip_locate_entry_cb)(void *handle, void *userdata, mz_zip_file *file_info); + +/***************************************************************************/ + +void * mz_zip_create(void **handle); +/* Create zip instance for opening */ + +void mz_zip_delete(void **handle); +/* Delete zip object */ + +int32_t mz_zip_open(void *handle, void *stream, int32_t mode); +/* Create a zip file, no delete file in zip functionality */ + +int32_t mz_zip_close(void *handle); +/* Close the zip file */ + +int32_t mz_zip_get_comment(void *handle, const char **comment); +/* Get a pointer to the global comment */ + +int32_t mz_zip_set_comment(void *handle, const char *comment); +/* Sets the global comment used for writing zip file */ + +int32_t mz_zip_get_version_madeby(void *handle, uint16_t *version_madeby); +/* Get the version made by */ + +int32_t mz_zip_set_version_madeby(void *handle, uint16_t version_madeby); +/* Sets the version made by used for writing zip file */ + +int32_t mz_zip_set_recover(void *handle, uint8_t recover); +/* Sets the ability to recover the central dir by reading local file headers */ + +int32_t mz_zip_set_data_descriptor(void *handle, uint8_t data_descriptor); +/* Sets the use of data descriptor flag when writing zip entries */ + +int32_t mz_zip_get_stream(void *handle, void **stream); +/* Get a pointer to the stream used to open */ + +int32_t mz_zip_set_cd_stream(void *handle, int64_t cd_start_pos, void *cd_stream); +/* Sets the stream to use for reading the central dir */ + +int32_t mz_zip_get_cd_mem_stream(void *handle, void **cd_mem_stream); +/* Get a pointer to the stream used to store the central dir in memory */ + +int32_t mz_zip_set_number_entry(void *handle, uint64_t number_entry); +/* Sets the total number of entries */ + +int32_t mz_zip_get_number_entry(void *handle, uint64_t *number_entry); +/* Get the total number of entries */ + +int32_t mz_zip_set_disk_number_with_cd(void *handle, uint32_t disk_number_with_cd); +/* Sets the disk number containing the central directory record */ + +int32_t mz_zip_get_disk_number_with_cd(void *handle, uint32_t *disk_number_with_cd); +/* Get the disk number containing the central directory record */ + +/***************************************************************************/ + +int32_t mz_zip_entry_is_open(void *handle); +/* Check to see if entry is open for read/write */ + +int32_t mz_zip_entry_read_open(void *handle, uint8_t raw, const char *password); +/* Open for reading the current file in the zip file */ + +int32_t mz_zip_entry_read(void *handle, void *buf, int32_t len); +/* Read bytes from the current file in the zip file */ + +int32_t mz_zip_entry_read_close(void *handle, uint32_t *crc32, int64_t *compressed_size, + int64_t *uncompressed_size); +/* Close the current file for reading and get data descriptor values */ + +int32_t mz_zip_entry_write_open(void *handle, const mz_zip_file *file_info, + int16_t compress_level, uint8_t raw, const char *password); +/* Open for writing the current file in the zip file */ + +int32_t mz_zip_entry_write(void *handle, const void *buf, int32_t len); +/* Write bytes from the current file in the zip file */ + +int32_t mz_zip_entry_write_close(void *handle, uint32_t crc32, int64_t compressed_size, + int64_t uncompressed_size); +/* Close the current file for writing and set data descriptor values */ + +int32_t mz_zip_entry_seek_local_header(void *handle); +/* Seeks to the local header for the entry */ + +int32_t mz_zip_entry_close_raw(void *handle, int64_t uncompressed_size, uint32_t crc32); +/* Close the current file in the zip file where raw is compressed data */ + +int32_t mz_zip_entry_close(void *handle); +/* Close the current file in the zip file */ + +/***************************************************************************/ + +int32_t mz_zip_entry_is_dir(void *handle); +/* Checks to see if the entry is a directory */ + +int32_t mz_zip_entry_is_symlink(void *handle); +/* Checks to see if the entry is a symbolic link */ + +int32_t mz_zip_entry_get_info(void *handle, mz_zip_file **file_info); +/* Get info about the current file, only valid while current entry is open */ + +int32_t mz_zip_entry_get_local_info(void *handle, mz_zip_file **local_file_info); +/* Get local info about the current file, only valid while current entry is being read */ + +int32_t mz_zip_entry_set_extrafield(void *handle, const uint8_t *extrafield, uint16_t extrafield_size); +/* Sets or updates the extra field for the entry to be used before writing cd */ + +int64_t mz_zip_get_entry(void *handle); +/* Return offset of the current entry in the zip file */ + +int32_t mz_zip_goto_entry(void *handle, int64_t cd_pos); +/* Go to specified entry in the zip file */ + +int32_t mz_zip_goto_first_entry(void *handle); +/* Go to the first entry in the zip file */ + +int32_t mz_zip_goto_next_entry(void *handle); +/* Go to the next entry in the zip file or MZ_END_OF_LIST if reaching the end */ + +int32_t mz_zip_locate_entry(void *handle, const char *filename, uint8_t ignore_case); +/* Locate the file with the specified name in the zip file or MZ_END_LIST if not found */ + +int32_t mz_zip_locate_first_entry(void *handle, void *userdata, mz_zip_locate_entry_cb cb); +/* Locate the first matching entry based on a match callback */ + +int32_t mz_zip_locate_next_entry(void *handle, void *userdata, mz_zip_locate_entry_cb cb); +/* Locate the next matching entry based on a match callback */ + +/***************************************************************************/ + +int32_t mz_zip_attrib_is_dir(uint32_t attrib, int32_t version_madeby); +/* Checks to see if the attribute is a directory based on platform */ + +int32_t mz_zip_attrib_is_symlink(uint32_t attrib, int32_t version_madeby); +/* Checks to see if the attribute is a symbolic link based on platform */ + +int32_t mz_zip_attrib_convert(uint8_t src_sys, uint32_t src_attrib, uint8_t target_sys, + uint32_t *target_attrib); +/* Converts file attributes from one host system to another */ + +int32_t mz_zip_attrib_posix_to_win32(uint32_t posix_attrib, uint32_t *win32_attrib); +/* Converts posix file attributes to win32 file attributes */ + +int32_t mz_zip_attrib_win32_to_posix(uint32_t win32_attrib, uint32_t *posix_attrib); +/* Converts win32 file attributes to posix file attributes */ + +/***************************************************************************/ + +int32_t mz_zip_extrafield_find(void *stream, uint16_t type, int32_t max_seek, uint16_t *length); +/* Seeks to extra field by its type and returns its length */ + +int32_t mz_zip_extrafield_contains(const uint8_t *extrafield, int32_t extrafield_size, + uint16_t type, uint16_t *length); +/* Gets whether an extrafield exists and its size */ + +int32_t mz_zip_extrafield_read(void *stream, uint16_t *type, uint16_t *length); +/* Reads an extrafield header from a stream */ + +int32_t mz_zip_extrafield_write(void *stream, uint16_t type, uint16_t length); +/* Writes an extrafield header to a stream */ + +/***************************************************************************/ + +int32_t mz_zip_dosdate_to_tm(uint64_t dos_date, struct tm *ptm); +/* Convert dos date/time format to struct tm */ + +time_t mz_zip_dosdate_to_time_t(uint64_t dos_date); +/* Convert dos date/time format to time_t */ + +int32_t mz_zip_time_t_to_tm(time_t unix_time, struct tm *ptm); +/* Convert time_t to time struct */ + +uint32_t mz_zip_time_t_to_dos_date(time_t unix_time); +/* Convert time_t to dos date/time format */ + +uint32_t mz_zip_tm_to_dosdate(const struct tm *ptm); +/* Convert struct tm to dos date/time format */ + +int32_t mz_zip_ntfs_to_unix_time(uint64_t ntfs_time, time_t *unix_time); +/* Convert ntfs time to unix time */ + +int32_t mz_zip_unix_to_ntfs_time(time_t unix_time, uint64_t *ntfs_time); +/* Convert unix time to ntfs time */ + +/***************************************************************************/ + +int32_t mz_zip_path_compare(const char *path1, const char *path2, uint8_t ignore_case); +/* Compare two paths without regard to slashes */ + +/***************************************************************************/ + +const +char* mz_zip_get_compression_method_string(int32_t compression_method); +/* Gets a string representing the compression method */ + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif /* _ZIP_H */ diff --git a/Externals/minizip/mz_zip_rw.c b/Externals/minizip/mz_zip_rw.c new file mode 100644 index 000000000000..464e55905700 --- /dev/null +++ b/Externals/minizip/mz_zip_rw.c @@ -0,0 +1,1943 @@ +/* mz_zip_rw.c -- Zip reader/writer + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#include "mz.h" +#include "mz_crypt.h" +#include "mz_os.h" +#include "mz_strm.h" +#include "mz_strm_buf.h" +#include "mz_strm_mem.h" +#include "mz_strm_os.h" +#include "mz_strm_split.h" +#include "mz_strm_wzaes.h" +#include "mz_zip.h" + +#include "mz_zip_rw.h" + +/***************************************************************************/ + +#define MZ_DEFAULT_PROGRESS_INTERVAL (1000u) + +#define MZ_ZIP_CD_FILENAME ("__cdcd__") + +/***************************************************************************/ + +typedef struct mz_zip_reader_s { + void *zip_handle; + void *file_stream; + void *buffered_stream; + void *split_stream; + void *mem_stream; + void *hash; + uint16_t hash_algorithm; + uint16_t hash_digest_size; + mz_zip_file *file_info; + const char *pattern; + uint8_t pattern_ignore_case; + const char *password; + void *overwrite_userdata; + mz_zip_reader_overwrite_cb + overwrite_cb; + void *password_userdata; + mz_zip_reader_password_cb + password_cb; + void *progress_userdata; + mz_zip_reader_progress_cb + progress_cb; + uint32_t progress_cb_interval_ms; + void *entry_userdata; + mz_zip_reader_entry_cb + entry_cb; + uint8_t raw; + uint8_t buffer[UINT16_MAX]; + int32_t encoding; + uint8_t sign_required; + uint8_t cd_verified; + uint8_t cd_zipped; + uint8_t entry_verified; + uint8_t recover; +} mz_zip_reader; + +/***************************************************************************/ + +int32_t mz_zip_reader_is_open(void *handle) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + if (reader == NULL) + return MZ_PARAM_ERROR; + if (reader->zip_handle == NULL) + return MZ_PARAM_ERROR; + return MZ_OK; +} + +int32_t mz_zip_reader_open(void *handle, void *stream) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + int32_t err = MZ_OK; + + reader->cd_verified = 0; + reader->cd_zipped = 0; + + mz_zip_create(&reader->zip_handle); + mz_zip_set_recover(reader->zip_handle, reader->recover); + + err = mz_zip_open(reader->zip_handle, stream, MZ_OPEN_MODE_READ); + + if (err != MZ_OK) { + mz_zip_reader_close(handle); + return err; + } + + mz_zip_reader_unzip_cd(reader); + return MZ_OK; +} + +int32_t mz_zip_reader_open_file(void *handle, const char *path) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + int32_t err = MZ_OK; + + + mz_zip_reader_close(handle); + + mz_stream_os_create(&reader->file_stream); + mz_stream_buffered_create(&reader->buffered_stream); + mz_stream_split_create(&reader->split_stream); + + mz_stream_set_base(reader->buffered_stream, reader->file_stream); + mz_stream_set_base(reader->split_stream, reader->buffered_stream); + + err = mz_stream_open(reader->split_stream, path, MZ_OPEN_MODE_READ); + if (err == MZ_OK) + err = mz_zip_reader_open(handle, reader->split_stream); + return err; +} + +int32_t mz_zip_reader_open_file_in_memory(void *handle, const char *path) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + void *file_stream = NULL; + int64_t file_size = 0; + int32_t err = 0; + + + mz_zip_reader_close(handle); + + mz_stream_os_create(&file_stream); + + err = mz_stream_os_open(file_stream, path, MZ_OPEN_MODE_READ); + + if (err != MZ_OK) { + mz_stream_os_delete(&file_stream); + mz_zip_reader_close(handle); + return err; + } + + mz_stream_os_seek(file_stream, 0, MZ_SEEK_END); + file_size = mz_stream_os_tell(file_stream); + mz_stream_os_seek(file_stream, 0, MZ_SEEK_SET); + + if ((file_size <= 0) || (file_size > UINT32_MAX)) { + /* Memory size is too large or too small */ + + mz_stream_os_close(file_stream); + mz_stream_os_delete(&file_stream); + mz_zip_reader_close(handle); + return MZ_MEM_ERROR; + } + + mz_stream_mem_create(&reader->mem_stream); + mz_stream_mem_set_grow_size(reader->mem_stream, (int32_t)file_size); + mz_stream_mem_open(reader->mem_stream, NULL, MZ_OPEN_MODE_CREATE); + + err = mz_stream_copy(reader->mem_stream, file_stream, (int32_t)file_size); + + mz_stream_os_close(file_stream); + mz_stream_os_delete(&file_stream); + + if (err == MZ_OK) + err = mz_zip_reader_open(handle, reader->mem_stream); + if (err != MZ_OK) + mz_zip_reader_close(handle); + + return err; +} + +int32_t mz_zip_reader_open_buffer(void *handle, uint8_t *buf, int32_t len, uint8_t copy) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + int32_t err = MZ_OK; + + mz_zip_reader_close(handle); + + mz_stream_mem_create(&reader->mem_stream); + + if (copy) { + mz_stream_mem_set_grow_size(reader->mem_stream, len); + mz_stream_mem_open(reader->mem_stream, NULL, MZ_OPEN_MODE_CREATE); + mz_stream_mem_write(reader->mem_stream, buf, len); + mz_stream_mem_seek(reader->mem_stream, 0, MZ_SEEK_SET); + } else { + mz_stream_mem_open(reader->mem_stream, NULL, MZ_OPEN_MODE_READ); + mz_stream_mem_set_buffer(reader->mem_stream, buf, len); + } + + if (err == MZ_OK) + err = mz_zip_reader_open(handle, reader->mem_stream); + + return err; +} + +int32_t mz_zip_reader_close(void *handle) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + int32_t err = MZ_OK; + + if (reader->zip_handle != NULL) { + err = mz_zip_close(reader->zip_handle); + mz_zip_delete(&reader->zip_handle); + } + + if (reader->split_stream != NULL) { + mz_stream_split_close(reader->split_stream); + mz_stream_split_delete(&reader->split_stream); + } + + if (reader->buffered_stream != NULL) + mz_stream_buffered_delete(&reader->buffered_stream); + + if (reader->file_stream != NULL) + mz_stream_os_delete(&reader->file_stream); + + if (reader->mem_stream != NULL) { + mz_stream_mem_close(reader->mem_stream); + mz_stream_mem_delete(&reader->mem_stream); + } + + return err; +} + +/***************************************************************************/ + +int32_t mz_zip_reader_unzip_cd(void *handle) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + mz_zip_file *cd_info = NULL; + void *cd_mem_stream = NULL; + void *new_cd_stream = NULL; + void *file_extra_stream = NULL; + uint64_t number_entry = 0; + int32_t err = MZ_OK; + + + err = mz_zip_reader_goto_first_entry(handle); + if (err != MZ_OK) + return err; + err = mz_zip_reader_entry_get_info(handle, &cd_info); + if (err != MZ_OK) + return err; + + if (strcmp(cd_info->filename, MZ_ZIP_CD_FILENAME) != 0) + return mz_zip_reader_goto_first_entry(handle); + + err = mz_zip_reader_entry_open(handle); + if (err != MZ_OK) + return err; + + mz_stream_mem_create(&file_extra_stream); + mz_stream_mem_set_buffer(file_extra_stream, (void *)cd_info->extrafield, cd_info->extrafield_size); + + err = mz_zip_extrafield_find(file_extra_stream, MZ_ZIP_EXTENSION_CDCD, INT32_MAX, NULL); + if (err == MZ_OK) + err = mz_stream_read_uint64(file_extra_stream, &number_entry); + + mz_stream_mem_delete(&file_extra_stream); + + if (err != MZ_OK) + return err; + + mz_zip_get_cd_mem_stream(reader->zip_handle, &cd_mem_stream); + if (mz_stream_mem_is_open(cd_mem_stream) != MZ_OK) + mz_stream_mem_open(cd_mem_stream, NULL, MZ_OPEN_MODE_CREATE); + + err = mz_stream_seek(cd_mem_stream, 0, MZ_SEEK_SET); + if (err == MZ_OK) + err = mz_stream_copy_stream(cd_mem_stream, NULL, handle, mz_zip_reader_entry_read, + (int32_t)cd_info->uncompressed_size); + + if (err == MZ_OK) { + reader->cd_zipped = 1; + + mz_zip_set_cd_stream(reader->zip_handle, 0, cd_mem_stream); + mz_zip_set_number_entry(reader->zip_handle, number_entry); + + err = mz_zip_reader_goto_first_entry(handle); + } + + reader->cd_verified = reader->entry_verified; + + mz_stream_mem_delete(&new_cd_stream); + return err; +} + +/***************************************************************************/ + +static int32_t mz_zip_reader_locate_entry_cb(void *handle, void *userdata, mz_zip_file *file_info) { + mz_zip_reader *reader = (mz_zip_reader *)userdata; + int32_t result = 0; + MZ_UNUSED(handle); + result = mz_path_compare_wc(file_info->filename, reader->pattern, reader->pattern_ignore_case); + return result; +} + +int32_t mz_zip_reader_goto_first_entry(void *handle) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + int32_t err = MZ_OK; + + if (mz_zip_reader_is_open(handle) != MZ_OK) + return MZ_PARAM_ERROR; + + if (mz_zip_entry_is_open(reader->zip_handle) == MZ_OK) + mz_zip_reader_entry_close(handle); + + if (reader->pattern == NULL) + err = mz_zip_goto_first_entry(reader->zip_handle); + else + err = mz_zip_locate_first_entry(reader->zip_handle, reader, mz_zip_reader_locate_entry_cb); + + reader->file_info = NULL; + if (err == MZ_OK) + err = mz_zip_entry_get_info(reader->zip_handle, &reader->file_info); + + return err; +} + +int32_t mz_zip_reader_goto_next_entry(void *handle) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + int32_t err = MZ_OK; + + if (mz_zip_reader_is_open(handle) != MZ_OK) + return MZ_PARAM_ERROR; + + if (mz_zip_entry_is_open(reader->zip_handle) == MZ_OK) + mz_zip_reader_entry_close(handle); + + if (reader->pattern == NULL) + err = mz_zip_goto_next_entry(reader->zip_handle); + else + err = mz_zip_locate_next_entry(reader->zip_handle, reader, mz_zip_reader_locate_entry_cb); + + reader->file_info = NULL; + if (err == MZ_OK) + err = mz_zip_entry_get_info(reader->zip_handle, &reader->file_info); + + return err; +} + +int32_t mz_zip_reader_locate_entry(void *handle, const char *filename, uint8_t ignore_case) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + int32_t err = MZ_OK; + + if (mz_zip_entry_is_open(reader->zip_handle) == MZ_OK) + mz_zip_reader_entry_close(handle); + + err = mz_zip_locate_entry(reader->zip_handle, filename, ignore_case); + + reader->file_info = NULL; + if (err == MZ_OK) + err = mz_zip_entry_get_info(reader->zip_handle, &reader->file_info); + + return err; +} + +/***************************************************************************/ + +int32_t mz_zip_reader_entry_open(void *handle) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + int32_t err = MZ_OK; + const char *password = NULL; + char password_buf[120]; + + + reader->entry_verified = 0; + + if (mz_zip_reader_is_open(reader) != MZ_OK) + return MZ_PARAM_ERROR; + if (reader->file_info == NULL) + return MZ_PARAM_ERROR; + + /* If the entry isn't open for reading, open it */ + if (mz_zip_entry_is_open(reader->zip_handle) == MZ_OK) + return MZ_OK; + + password = reader->password; + + /* Check if we need a password and ask for it if we need to */ + if ((reader->file_info->flag & MZ_ZIP_FLAG_ENCRYPTED) && (password == NULL) && + (reader->password_cb != NULL)) { + reader->password_cb(handle, reader->password_userdata, reader->file_info, + password_buf, sizeof(password_buf)); + + password = password_buf; + } + + err = mz_zip_entry_read_open(reader->zip_handle, reader->raw, password); +#ifndef MZ_ZIP_NO_CRYPTO + if (err != MZ_OK) + return err; + + if (mz_zip_reader_entry_get_first_hash(handle, &reader->hash_algorithm, &reader->hash_digest_size) == MZ_OK) { + mz_crypt_sha_create(&reader->hash); + if (reader->hash_algorithm == MZ_HASH_SHA1) + mz_crypt_sha_set_algorithm(reader->hash, MZ_HASH_SHA1); + else if (reader->hash_algorithm == MZ_HASH_SHA256) + mz_crypt_sha_set_algorithm(reader->hash, MZ_HASH_SHA256); + else + err = MZ_SUPPORT_ERROR; + + if (err == MZ_OK) + mz_crypt_sha_begin(reader->hash); +#ifdef MZ_ZIP_SIGNING + if (err == MZ_OK) { + if (mz_zip_reader_entry_has_sign(handle) == MZ_OK) { + err = mz_zip_reader_entry_sign_verify(handle); + if (err == MZ_OK) + reader->entry_verified = 1; + } else if (reader->sign_required && !reader->cd_verified) + err = MZ_SIGN_ERROR; + } +#endif + } else if (reader->sign_required && !reader->cd_verified) + err = MZ_SIGN_ERROR; +#endif + + return err; +} + +int32_t mz_zip_reader_entry_close(void *handle) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + int32_t err = MZ_OK; + int32_t err_close = MZ_OK; +#ifndef MZ_ZIP_NO_CRYPTO + int32_t err_hash = MZ_OK; + uint8_t computed_hash[MZ_HASH_MAX_SIZE]; + uint8_t expected_hash[MZ_HASH_MAX_SIZE]; + + if (reader->hash != NULL) { + mz_crypt_sha_end(reader->hash, computed_hash, sizeof(computed_hash)); + mz_crypt_sha_delete(&reader->hash); + + err_hash = mz_zip_reader_entry_get_hash(handle, reader->hash_algorithm, expected_hash, + reader->hash_digest_size); + + if (err_hash == MZ_OK) { + /* Verify expected hash against computed hash */ + if (memcmp(computed_hash, expected_hash, reader->hash_digest_size) != 0) + err = MZ_CRC_ERROR; + } + } +#endif + + err_close = mz_zip_entry_close(reader->zip_handle); + if (err == MZ_OK) + err = err_close; + return err; +} + +int32_t mz_zip_reader_entry_read(void *handle, void *buf, int32_t len) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + int32_t read = 0; + read = mz_zip_entry_read(reader->zip_handle, buf, len); +#ifndef MZ_ZIP_NO_CRYPTO + if ((read > 0) && (reader->hash != NULL)) + mz_crypt_sha_update(reader->hash, buf, read); +#endif + return read; +} + +int32_t mz_zip_reader_entry_has_sign(void *handle) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + + if (reader == NULL || mz_zip_entry_is_open(reader->zip_handle) != MZ_OK) + return MZ_PARAM_ERROR; + + return mz_zip_extrafield_contains(reader->file_info->extrafield, + reader->file_info->extrafield_size, MZ_ZIP_EXTENSION_SIGN, NULL); +} + +#if !defined(MZ_ZIP_NO_CRYPTO) && defined(MZ_ZIP_SIGNING) +int32_t mz_zip_reader_entry_sign_verify(void *handle) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + void *file_extra_stream = NULL; + int32_t err = MZ_OK; + uint8_t *signature = NULL; + uint16_t signature_size = 0; + uint8_t hash[MZ_HASH_MAX_SIZE]; + + if (reader == NULL || mz_zip_entry_is_open(reader->zip_handle) != MZ_OK) + return MZ_PARAM_ERROR; + + mz_stream_mem_create(&file_extra_stream); + mz_stream_mem_set_buffer(file_extra_stream, (void *)reader->file_info->extrafield, + reader->file_info->extrafield_size); + + err = mz_zip_extrafield_find(file_extra_stream, MZ_ZIP_EXTENSION_SIGN, INT32_MAX, &signature_size); + if ((err == MZ_OK) && (signature_size > 0)) { + signature = (uint8_t *)MZ_ALLOC(signature_size); + if (mz_stream_read(file_extra_stream, signature, signature_size) != signature_size) + err = MZ_READ_ERROR; + } + + mz_stream_mem_delete(&file_extra_stream); + + if (err == MZ_OK) { + /* Get most secure hash to verify signature against */ + err = mz_zip_reader_entry_get_hash(handle, reader->hash_algorithm, hash, reader->hash_digest_size); + } + + if (err == MZ_OK) { + /* Verify the pkcs signature */ + err = mz_crypt_sign_verify(hash, reader->hash_digest_size, signature, signature_size); + } + + if (signature != NULL) + MZ_FREE(signature); + + return err; +} +#endif + +int32_t mz_zip_reader_entry_get_hash(void *handle, uint16_t algorithm, uint8_t *digest, int32_t digest_size) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + void *file_extra_stream = NULL; + int32_t err = MZ_OK; + int32_t return_err = MZ_EXIST_ERROR; + uint16_t cur_algorithm = 0; + uint16_t cur_digest_size = 0; + + mz_stream_mem_create(&file_extra_stream); + mz_stream_mem_set_buffer(file_extra_stream, (void *)reader->file_info->extrafield, + reader->file_info->extrafield_size); + + do { + err = mz_zip_extrafield_find(file_extra_stream, MZ_ZIP_EXTENSION_HASH, INT32_MAX, NULL); + if (err != MZ_OK) + break; + + err = mz_stream_read_uint16(file_extra_stream, &cur_algorithm); + if (err == MZ_OK) + err = mz_stream_read_uint16(file_extra_stream, &cur_digest_size); + if ((err == MZ_OK) && (cur_algorithm == algorithm) && (cur_digest_size <= digest_size) && + (cur_digest_size <= MZ_HASH_MAX_SIZE)) { + /* Read hash digest */ + if (mz_stream_read(file_extra_stream, digest, digest_size) == cur_digest_size) + return_err = MZ_OK; + break; + } else { + err = mz_stream_seek(file_extra_stream, cur_digest_size, MZ_SEEK_CUR); + } + } while (err == MZ_OK); + + mz_stream_mem_delete(&file_extra_stream); + + return return_err; +} + +int32_t mz_zip_reader_entry_get_first_hash(void *handle, uint16_t *algorithm, uint16_t *digest_size) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + void *file_extra_stream = NULL; + int32_t err = MZ_OK; + uint16_t cur_algorithm = 0; + uint16_t cur_digest_size = 0; + + if (reader == NULL || algorithm == NULL) + return MZ_PARAM_ERROR; + + mz_stream_mem_create(&file_extra_stream); + mz_stream_mem_set_buffer(file_extra_stream, (void *)reader->file_info->extrafield, + reader->file_info->extrafield_size); + + err = mz_zip_extrafield_find(file_extra_stream, MZ_ZIP_EXTENSION_HASH, INT32_MAX, NULL); + if (err == MZ_OK) + err = mz_stream_read_uint16(file_extra_stream, &cur_algorithm); + if (err == MZ_OK) + err = mz_stream_read_uint16(file_extra_stream, &cur_digest_size); + + if (algorithm != NULL) + *algorithm = cur_algorithm; + if (digest_size != NULL) + *digest_size = cur_digest_size; + + mz_stream_mem_delete(&file_extra_stream); + + return err; +} + +int32_t mz_zip_reader_entry_get_info(void *handle, mz_zip_file **file_info) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + int32_t err = MZ_OK; + if (file_info == NULL || mz_zip_reader_is_open(handle) != MZ_OK) + return MZ_PARAM_ERROR; + *file_info = reader->file_info; + if (*file_info == NULL) + return MZ_EXIST_ERROR; + return err; +} + +int32_t mz_zip_reader_entry_is_dir(void *handle) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + if (mz_zip_reader_is_open(handle) != MZ_OK) + return MZ_PARAM_ERROR; + return mz_zip_entry_is_dir(reader->zip_handle); +} + +int32_t mz_zip_reader_entry_save_process(void *handle, void *stream, mz_stream_write_cb write_cb) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + int32_t err = MZ_OK; + int32_t read = 0; + int32_t written = 0; + + + if (mz_zip_reader_is_open(reader) != MZ_OK) + return MZ_PARAM_ERROR; + if (reader->file_info == NULL) + return MZ_PARAM_ERROR; + if (write_cb == NULL) + return MZ_PARAM_ERROR; + + /* If the entry isn't open for reading, open it */ + if (mz_zip_entry_is_open(reader->zip_handle) != MZ_OK) + err = mz_zip_reader_entry_open(handle); + + if (err != MZ_OK) + return err; + + /* Unzip entry in zip file */ + read = mz_zip_reader_entry_read(handle, reader->buffer, sizeof(reader->buffer)); + + if (read == 0) { + /* If we are done close the entry */ + err = mz_zip_reader_entry_close(handle); + if (err != MZ_OK) + return err; + + return MZ_END_OF_STREAM; + } + + if (read > 0) { + /* Write the data to the specified stream */ + written = write_cb(stream, reader->buffer, read); + if (written != read) + return MZ_WRITE_ERROR; + } + + return read; +} + +int32_t mz_zip_reader_entry_save(void *handle, void *stream, mz_stream_write_cb write_cb) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + uint64_t current_time = 0; + uint64_t update_time = 0; + int64_t current_pos = 0; + int64_t update_pos = 0; + int32_t err = MZ_OK; + int32_t written = 0; + + if (mz_zip_reader_is_open(reader) != MZ_OK) + return MZ_PARAM_ERROR; + if (reader->file_info == NULL) + return MZ_PARAM_ERROR; + + /* Update the progress at the beginning */ + if (reader->progress_cb != NULL) + reader->progress_cb(handle, reader->progress_userdata, reader->file_info, current_pos); + + /* Write data to stream until done */ + while (err == MZ_OK) { + written = mz_zip_reader_entry_save_process(handle, stream, write_cb); + if (written == MZ_END_OF_STREAM) + break; + if (written > 0) + current_pos += written; + if (written < 0) + err = written; + + /* Update progress if enough time have passed */ + current_time = mz_os_ms_time(); + if ((current_time - update_time) > reader->progress_cb_interval_ms) { + if (reader->progress_cb != NULL) + reader->progress_cb(handle, reader->progress_userdata, reader->file_info, current_pos); + + update_pos = current_pos; + update_time = current_time; + } + } + + /* Update the progress at the end */ + if (reader->progress_cb != NULL && update_pos != current_pos) + reader->progress_cb(handle, reader->progress_userdata, reader->file_info, current_pos); + + return err; +} + +int32_t mz_zip_reader_entry_save_file(void *handle, const char *path) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + void *stream = NULL; + uint32_t target_attrib = 0; + int32_t err_attrib = 0; + int32_t err = MZ_OK; + int32_t err_cb = MZ_OK; + char pathwfs[512]; + char directory[512]; + + if (mz_zip_reader_is_open(reader) != MZ_OK) + return MZ_PARAM_ERROR; + if (reader->file_info == NULL || path == NULL) + return MZ_PARAM_ERROR; + + /* Convert to forward slashes for unix which doesn't like backslashes */ + strncpy(pathwfs, path, sizeof(pathwfs) - 1); + pathwfs[sizeof(pathwfs) - 1] = 0; + mz_path_convert_slashes(pathwfs, MZ_PATH_SLASH_UNIX); + + if (reader->entry_cb != NULL) + reader->entry_cb(handle, reader->entry_userdata, reader->file_info, pathwfs); + + strncpy(directory, pathwfs, sizeof(directory) - 1); + directory[sizeof(directory) - 1] = 0; + mz_path_remove_filename(directory); + + /* If it is a directory entry then create a directory instead of writing file */ + if ((mz_zip_entry_is_dir(reader->zip_handle) == MZ_OK) && + (mz_zip_entry_is_symlink(reader->zip_handle) != MZ_OK)) { + err = mz_dir_make(directory); + return err; + } + + /* Check if file exists and ask if we want to overwrite */ + if ((mz_os_file_exists(pathwfs) == MZ_OK) && (reader->overwrite_cb != NULL)) { + err_cb = reader->overwrite_cb(handle, reader->overwrite_userdata, reader->file_info, pathwfs); + if (err_cb != MZ_OK) + return err; + /* We want to overwrite the file so we delete the existing one */ + mz_os_unlink(pathwfs); + } + + /* If symbolic link then properly construct destination path and link path */ + if (mz_zip_entry_is_symlink(reader->zip_handle) == MZ_OK) { + mz_path_remove_slash(pathwfs); + mz_path_remove_filename(directory); + } + + /* Create the output directory if it doesn't already exist */ + if (mz_os_is_dir(directory) != MZ_OK) { + err = mz_dir_make(directory); + if (err != MZ_OK) + return err; + } + + /* If it is a symbolic link then create symbolic link instead of writing file */ + if (mz_zip_entry_is_symlink(reader->zip_handle) == MZ_OK) { + mz_os_make_symlink(pathwfs, reader->file_info->linkname); + /* Don't check return value because we aren't validating symbolic link target */ + return err; + } + + /* Create the file on disk so we can save to it */ + mz_stream_os_create(&stream); + err = mz_stream_os_open(stream, pathwfs, MZ_OPEN_MODE_CREATE); + + if (err == MZ_OK) + err = mz_zip_reader_entry_save(handle, stream, mz_stream_write); + + mz_stream_close(stream); + mz_stream_delete(&stream); + + if (err == MZ_OK) { + /* Set the time of the file that has been created */ + mz_os_set_file_date(pathwfs, reader->file_info->modified_date, + reader->file_info->accessed_date, reader->file_info->creation_date); + } + + if (err == MZ_OK) { + /* Set file attributes for the correct system */ + err_attrib = mz_zip_attrib_convert(MZ_HOST_SYSTEM(reader->file_info->version_madeby), + reader->file_info->external_fa, MZ_VERSION_MADEBY_HOST_SYSTEM, &target_attrib); + + if (err_attrib == MZ_OK) + mz_os_set_file_attribs(pathwfs, target_attrib); + } + + return err; +} + +int32_t mz_zip_reader_entry_save_buffer(void *handle, void *buf, int32_t len) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + void *mem_stream = NULL; + int32_t err = MZ_OK; + + if (mz_zip_reader_is_open(reader) != MZ_OK) + return MZ_PARAM_ERROR; + if (reader->file_info == NULL) + return MZ_PARAM_ERROR; + if (reader->file_info->uncompressed_size > INT32_MAX) + return MZ_PARAM_ERROR; + if (len != (int32_t)reader->file_info->uncompressed_size) + return MZ_BUF_ERROR; + + /* Create a memory stream backed by our buffer and save to it */ + mz_stream_mem_create(&mem_stream); + mz_stream_mem_set_buffer(mem_stream, buf, len); + + err = mz_stream_mem_open(mem_stream, NULL, MZ_OPEN_MODE_READ); + if (err == MZ_OK) + err = mz_zip_reader_entry_save(handle, mem_stream, mz_stream_mem_write); + + mz_stream_mem_delete(&mem_stream); + return err; +} + +int32_t mz_zip_reader_entry_save_buffer_length(void *handle) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + + if (mz_zip_reader_is_open(reader) != MZ_OK) + return MZ_PARAM_ERROR; + if (reader->file_info == NULL) + return MZ_PARAM_ERROR; + if (reader->file_info->uncompressed_size > INT32_MAX) + return MZ_PARAM_ERROR; + + /* Get the maximum size required for the save buffer */ + return (int32_t)reader->file_info->uncompressed_size; +} + +/***************************************************************************/ + +int32_t mz_zip_reader_save_all(void *handle, const char *destination_dir) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + int32_t err = MZ_OK; + uint8_t *utf8_string = NULL; + char path[512]; + char utf8_name[256]; + char resolved_name[256]; + + err = mz_zip_reader_goto_first_entry(handle); + + if (err == MZ_END_OF_LIST) + return err; + + while (err == MZ_OK) { + /* Construct output path */ + path[0] = 0; + + strncpy(utf8_name, reader->file_info->filename, sizeof(utf8_name) - 1); + utf8_name[sizeof(utf8_name) - 1] = 0; + + if ((reader->encoding > 0) && (reader->file_info->flag & MZ_ZIP_FLAG_UTF8) == 0) { + utf8_string = mz_os_utf8_string_create(reader->file_info->filename, reader->encoding); + if (utf8_string) { + strncpy(utf8_name, (char *)utf8_string, sizeof(utf8_name) - 1); + utf8_name[sizeof(utf8_name) - 1] = 0; + mz_os_utf8_string_delete(&utf8_string); + } + } + + err = mz_path_resolve(utf8_name, resolved_name, sizeof(resolved_name)); + if (err != MZ_OK) + break; + + if (destination_dir != NULL) + mz_path_combine(path, destination_dir, sizeof(path)); + + mz_path_combine(path, resolved_name, sizeof(path)); + + /* Save file to disk */ + err = mz_zip_reader_entry_save_file(handle, path); + + if (err == MZ_OK) + err = mz_zip_reader_goto_next_entry(handle); + } + + if (err == MZ_END_OF_LIST) + return MZ_OK; + + return err; +} + +/***************************************************************************/ + +void mz_zip_reader_set_pattern(void *handle, const char *pattern, uint8_t ignore_case) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + reader->pattern = pattern; + reader->pattern_ignore_case = ignore_case; +} + +void mz_zip_reader_set_password(void *handle, const char *password) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + reader->password = password; +} + +void mz_zip_reader_set_raw(void *handle, uint8_t raw) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + reader->raw = raw; +} + +int32_t mz_zip_reader_get_raw(void *handle, uint8_t *raw) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + if (raw == NULL) + return MZ_PARAM_ERROR; + *raw = reader->raw; + return MZ_OK; +} + +int32_t mz_zip_reader_get_zip_cd(void *handle, uint8_t *zip_cd) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + if (zip_cd == NULL) + return MZ_PARAM_ERROR; + *zip_cd = reader->cd_zipped; + return MZ_OK; +} + +int32_t mz_zip_reader_get_comment(void *handle, const char **comment) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + if (mz_zip_reader_is_open(reader) != MZ_OK) + return MZ_PARAM_ERROR; + if (comment == NULL) + return MZ_PARAM_ERROR; + return mz_zip_get_comment(reader->zip_handle, comment); +} + +int32_t mz_zip_reader_set_recover(void *handle, uint8_t recover) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + if (reader == NULL) + return MZ_PARAM_ERROR; + reader->recover = recover; + return MZ_OK; +} + +void mz_zip_reader_set_encoding(void *handle, int32_t encoding) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + reader->encoding = encoding; +} + +void mz_zip_reader_set_sign_required(void *handle, uint8_t sign_required) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + reader->sign_required = sign_required; +} + +void mz_zip_reader_set_overwrite_cb(void *handle, void *userdata, mz_zip_reader_overwrite_cb cb) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + reader->overwrite_cb = cb; + reader->overwrite_userdata = userdata; +} + +void mz_zip_reader_set_password_cb(void *handle, void *userdata, mz_zip_reader_password_cb cb) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + reader->password_cb = cb; + reader->password_userdata = userdata; +} + +void mz_zip_reader_set_progress_cb(void *handle, void *userdata, mz_zip_reader_progress_cb cb) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + reader->progress_cb = cb; + reader->progress_userdata = userdata; +} + +void mz_zip_reader_set_progress_interval(void *handle, uint32_t milliseconds) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + reader->progress_cb_interval_ms = milliseconds; +} + +void mz_zip_reader_set_entry_cb(void *handle, void *userdata, mz_zip_reader_entry_cb cb) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + reader->entry_cb = cb; + reader->entry_userdata = userdata; +} + +int32_t mz_zip_reader_get_zip_handle(void *handle, void **zip_handle) { + mz_zip_reader *reader = (mz_zip_reader *)handle; + if (zip_handle == NULL) + return MZ_PARAM_ERROR; + *zip_handle = reader->zip_handle; + if (*zip_handle == NULL) + return MZ_EXIST_ERROR; + return MZ_OK; +} + +/***************************************************************************/ + +void *mz_zip_reader_create(void **handle) { + mz_zip_reader *reader = NULL; + + reader = (mz_zip_reader *)MZ_ALLOC(sizeof(mz_zip_reader)); + if (reader != NULL) { + memset(reader, 0, sizeof(mz_zip_reader)); + reader->recover = 1; + reader->progress_cb_interval_ms = MZ_DEFAULT_PROGRESS_INTERVAL; + } + if (handle != NULL) + *handle = reader; + + return reader; +} + +void mz_zip_reader_delete(void **handle) { + mz_zip_reader *reader = NULL; + if (handle == NULL) + return; + reader = (mz_zip_reader *)*handle; + if (reader != NULL) { + mz_zip_reader_close(reader); + MZ_FREE(reader); + } + *handle = NULL; +} + +/***************************************************************************/ + +typedef struct mz_zip_writer_s { + void *zip_handle; + void *file_stream; + void *buffered_stream; + void *split_stream; + void *sha256; + void *mem_stream; + void *file_extra_stream; + mz_zip_file file_info; + void *overwrite_userdata; + mz_zip_writer_overwrite_cb + overwrite_cb; + void *password_userdata; + mz_zip_writer_password_cb + password_cb; + void *progress_userdata; + mz_zip_writer_progress_cb + progress_cb; + uint32_t progress_cb_interval_ms; + void *entry_userdata; + mz_zip_writer_entry_cb + entry_cb; + const char *password; + const char *comment; + uint8_t *cert_data; + int32_t cert_data_size; + const char *cert_pwd; + uint16_t compress_method; + int16_t compress_level; + uint8_t follow_links; + uint8_t store_links; + uint8_t zip_cd; + uint8_t aes; + uint8_t raw; + uint8_t buffer[UINT16_MAX]; +} mz_zip_writer; + +/***************************************************************************/ + +int32_t mz_zip_writer_zip_cd(void *handle) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + mz_zip_file cd_file; + uint64_t number_entry = 0; + int64_t cd_mem_length = 0; + int32_t err = MZ_OK; + int32_t extrafield_size = 0; + void *file_extra_stream = NULL; + void *cd_mem_stream = NULL; + + + memset(&cd_file, 0, sizeof(cd_file)); + + mz_zip_get_number_entry(writer->zip_handle, &number_entry); + mz_zip_get_cd_mem_stream(writer->zip_handle, &cd_mem_stream); + mz_stream_seek(cd_mem_stream, 0, MZ_SEEK_END); + cd_mem_length = (uint32_t)mz_stream_tell(cd_mem_stream); + mz_stream_seek(cd_mem_stream, 0, MZ_SEEK_SET); + + cd_file.filename = MZ_ZIP_CD_FILENAME; + cd_file.modified_date = time(NULL); + cd_file.version_madeby = MZ_VERSION_MADEBY; + cd_file.compression_method = writer->compress_method; + cd_file.uncompressed_size = (int32_t)cd_mem_length; + cd_file.flag = MZ_ZIP_FLAG_UTF8; + + if (writer->password != NULL) + cd_file.flag |= MZ_ZIP_FLAG_ENCRYPTED; + + mz_stream_mem_create(&file_extra_stream); + mz_stream_mem_open(file_extra_stream, NULL, MZ_OPEN_MODE_CREATE); + + mz_zip_extrafield_write(file_extra_stream, MZ_ZIP_EXTENSION_CDCD, 8); + + mz_stream_write_uint64(file_extra_stream, number_entry); + + mz_stream_mem_get_buffer(file_extra_stream, (const void **)&cd_file.extrafield); + mz_stream_mem_get_buffer_length(file_extra_stream, &extrafield_size); + cd_file.extrafield_size = (uint16_t)extrafield_size; + + err = mz_zip_writer_entry_open(handle, &cd_file); + if (err == MZ_OK) { + mz_stream_copy_stream(handle, mz_zip_writer_entry_write, cd_mem_stream, + NULL, (int32_t)cd_mem_length); + + mz_stream_seek(cd_mem_stream, 0, MZ_SEEK_SET); + mz_stream_mem_set_buffer_limit(cd_mem_stream, 0); + + err = mz_zip_writer_entry_close(writer); + } + + mz_stream_mem_delete(&file_extra_stream); + + return err; +} + +/***************************************************************************/ + +int32_t mz_zip_writer_is_open(void *handle) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + if (writer == NULL) + return MZ_PARAM_ERROR; + if (writer->zip_handle == NULL) + return MZ_PARAM_ERROR; + return MZ_OK; +} + +static int32_t mz_zip_writer_open_int(void *handle, void *stream, int32_t mode) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + int32_t err = MZ_OK; + + mz_zip_create(&writer->zip_handle); + err = mz_zip_open(writer->zip_handle, stream, mode); + + if (err != MZ_OK) { + mz_zip_writer_close(handle); + return err; + } + + return MZ_OK; +} + +int32_t mz_zip_writer_open(void *handle, void *stream, uint8_t append) { + int32_t mode = MZ_OPEN_MODE_WRITE; + + if (append) { + mode |= MZ_OPEN_MODE_APPEND; + } else { + mode |= MZ_OPEN_MODE_CREATE; + } + + return mz_zip_writer_open_int(handle, stream, mode); +} + +int32_t mz_zip_writer_open_file(void *handle, const char *path, int64_t disk_size, uint8_t append) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + int32_t mode = MZ_OPEN_MODE_READWRITE; + int32_t err = MZ_OK; + int32_t err_cb = 0; + char directory[320]; + + mz_zip_writer_close(handle); + + if (mz_os_file_exists(path) != MZ_OK) { + /* If the file doesn't exist, we don't append file */ + mode |= MZ_OPEN_MODE_CREATE; + + /* Create destination directory if it doesn't already exist */ + if (strchr(path, '/') != NULL || strrchr(path, '\\') != NULL) { + strncpy(directory, path, sizeof(directory)); + mz_path_remove_filename(directory); + if (mz_os_file_exists(directory) != MZ_OK) + mz_dir_make(directory); + } + } else if (append) { + mode |= MZ_OPEN_MODE_APPEND; + } else { + if (writer->overwrite_cb != NULL) + err_cb = writer->overwrite_cb(handle, writer->overwrite_userdata, path); + + if (err_cb == MZ_INTERNAL_ERROR) + return err; + + if (err_cb == MZ_OK) + mode |= MZ_OPEN_MODE_CREATE; + else + mode |= MZ_OPEN_MODE_APPEND; + } + + mz_stream_os_create(&writer->file_stream); + mz_stream_buffered_create(&writer->buffered_stream); + mz_stream_split_create(&writer->split_stream); + + mz_stream_set_base(writer->buffered_stream, writer->file_stream); + mz_stream_set_base(writer->split_stream, writer->buffered_stream); + + mz_stream_split_set_prop_int64(writer->split_stream, MZ_STREAM_PROP_DISK_SIZE, disk_size); + + err = mz_stream_open(writer->split_stream, path, mode); + if (err == MZ_OK) + err = mz_zip_writer_open_int(handle, writer->split_stream, mode); + + return err; +} + +int32_t mz_zip_writer_open_file_in_memory(void *handle, const char *path) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + void *file_stream = NULL; + int64_t file_size = 0; + int32_t err = 0; + + + mz_zip_writer_close(handle); + + mz_stream_os_create(&file_stream); + + err = mz_stream_os_open(file_stream, path, MZ_OPEN_MODE_READ); + + if (err != MZ_OK) { + mz_stream_os_delete(&file_stream); + mz_zip_writer_close(handle); + return err; + } + + mz_stream_os_seek(file_stream, 0, MZ_SEEK_END); + file_size = mz_stream_os_tell(file_stream); + mz_stream_os_seek(file_stream, 0, MZ_SEEK_SET); + + if ((file_size <= 0) || (file_size > UINT32_MAX)) { + /* Memory size is too large or too small */ + + mz_stream_os_close(file_stream); + mz_stream_os_delete(&file_stream); + mz_zip_writer_close(handle); + return MZ_MEM_ERROR; + } + + mz_stream_mem_create(&writer->mem_stream); + mz_stream_mem_set_grow_size(writer->mem_stream, (int32_t)file_size); + mz_stream_mem_open(writer->mem_stream, NULL, MZ_OPEN_MODE_CREATE); + + err = mz_stream_copy(writer->mem_stream, file_stream, (int32_t)file_size); + + mz_stream_os_close(file_stream); + mz_stream_os_delete(&file_stream); + + if (err == MZ_OK) + err = mz_zip_writer_open(handle, writer->mem_stream, 1); + if (err != MZ_OK) + mz_zip_writer_close(handle); + + return err; +} + +int32_t mz_zip_writer_close(void *handle) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + int32_t err = MZ_OK; + + + if (writer->zip_handle != NULL) { + mz_zip_set_version_madeby(writer->zip_handle, MZ_VERSION_MADEBY); + if (writer->comment) + mz_zip_set_comment(writer->zip_handle, writer->comment); + if (writer->zip_cd) + mz_zip_writer_zip_cd(writer); + + err = mz_zip_close(writer->zip_handle); + mz_zip_delete(&writer->zip_handle); + } + + if (writer->split_stream != NULL) { + mz_stream_split_close(writer->split_stream); + mz_stream_split_delete(&writer->split_stream); + } + + if (writer->buffered_stream != NULL) + mz_stream_buffered_delete(&writer->buffered_stream); + + if (writer->file_stream != NULL) + mz_stream_os_delete(&writer->file_stream); + + if (writer->mem_stream != NULL) { + mz_stream_mem_close(writer->mem_stream); + mz_stream_mem_delete(&writer->mem_stream); + } + + return err; +} + +/***************************************************************************/ + +int32_t mz_zip_writer_entry_open(void *handle, mz_zip_file *file_info) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + int32_t err = MZ_OK; + const char *password = NULL; + char password_buf[120]; + + /* Copy file info to access data upon close */ + memcpy(&writer->file_info, file_info, sizeof(mz_zip_file)); + + if (writer->entry_cb != NULL) + writer->entry_cb(handle, writer->entry_userdata, &writer->file_info); + + password = writer->password; + + /* Check if we need a password and ask for it if we need to */ + if ((writer->file_info.flag & MZ_ZIP_FLAG_ENCRYPTED) && (password == NULL) && + (writer->password_cb != NULL)) { + writer->password_cb(handle, writer->password_userdata, &writer->file_info, + password_buf, sizeof(password_buf)); + password = password_buf; + } + +#ifndef MZ_ZIP_NO_CRYPTO + if (mz_zip_attrib_is_dir(writer->file_info.external_fa, writer->file_info.version_madeby) != MZ_OK) { + /* Start calculating sha256 */ + mz_crypt_sha_create(&writer->sha256); + mz_crypt_sha_set_algorithm(writer->sha256, MZ_HASH_SHA256); + mz_crypt_sha_begin(writer->sha256); + } +#endif + + /* Open entry in zip */ + err = mz_zip_entry_write_open(writer->zip_handle, &writer->file_info, writer->compress_level, + writer->raw, password); + + return err; +} + +#if !defined(MZ_ZIP_NO_CRYPTO) && defined(MZ_ZIP_SIGNING) +int32_t mz_zip_writer_entry_sign(void *handle, uint8_t *message, int32_t message_size, + uint8_t *cert_data, int32_t cert_data_size, const char *cert_pwd) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + int32_t err = MZ_OK; + int32_t signature_size = 0; + uint8_t *signature = NULL; + + + if (writer == NULL || cert_data == NULL || cert_data_size <= 0) + return MZ_PARAM_ERROR; + if (mz_zip_entry_is_open(writer->zip_handle) != MZ_OK) + return MZ_PARAM_ERROR; + + /* Sign message with certificate */ + err = mz_crypt_sign(message, message_size, cert_data, cert_data_size, cert_pwd, + &signature, &signature_size); + + if ((err == MZ_OK) && (signature != NULL)) { + /* Write signature zip extra field */ + err = mz_zip_extrafield_write(writer->file_extra_stream, MZ_ZIP_EXTENSION_SIGN, + (uint16_t)signature_size); + + if (err == MZ_OK) { + if (mz_stream_write(writer->file_extra_stream, signature, signature_size) != signature_size) + err = MZ_WRITE_ERROR; + } + + MZ_FREE(signature); + } + + return err; +} +#endif + +int32_t mz_zip_writer_entry_close(void *handle) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + int32_t err = MZ_OK; +#ifndef MZ_ZIP_NO_CRYPTO + const uint8_t *extrafield = NULL; + int32_t extrafield_size = 0; + int16_t field_length_hash = 0; + uint8_t sha256[MZ_HASH_SHA256_SIZE]; + + + if (writer->sha256 != NULL) { + mz_crypt_sha_end(writer->sha256, sha256, sizeof(sha256)); + mz_crypt_sha_delete(&writer->sha256); + + /* Copy extrafield so we can append our own fields before close */ + mz_stream_mem_create(&writer->file_extra_stream); + mz_stream_mem_open(writer->file_extra_stream, NULL, MZ_OPEN_MODE_CREATE); + + /* Write sha256 hash to extrafield */ + field_length_hash = 4 + MZ_HASH_SHA256_SIZE; + err = mz_zip_extrafield_write(writer->file_extra_stream, MZ_ZIP_EXTENSION_HASH, field_length_hash); + if (err == MZ_OK) + err = mz_stream_write_uint16(writer->file_extra_stream, MZ_HASH_SHA256); + if (err == MZ_OK) + err = mz_stream_write_uint16(writer->file_extra_stream, MZ_HASH_SHA256_SIZE); + if (err == MZ_OK) { + if (mz_stream_write(writer->file_extra_stream, sha256, sizeof(sha256)) != MZ_HASH_SHA256_SIZE) + err = MZ_WRITE_ERROR; + } + +#ifdef MZ_ZIP_SIGNING + if ((err == MZ_OK) && (writer->cert_data != NULL) && (writer->cert_data_size > 0)) { + /* Sign entry if not zipping cd or if it is cd being zipped */ + if (!writer->zip_cd || strcmp(writer->file_info.filename, MZ_ZIP_CD_FILENAME) == 0) { + err = mz_zip_writer_entry_sign(handle, sha256, sizeof(sha256), + writer->cert_data, writer->cert_data_size, writer->cert_pwd); + } + } +#endif + + if ((writer->file_info.extrafield != NULL) && (writer->file_info.extrafield_size > 0)) + mz_stream_mem_write(writer->file_extra_stream, writer->file_info.extrafield, + writer->file_info.extrafield_size); + + /* Update extra field for central directory after adding extra fields */ + mz_stream_mem_get_buffer(writer->file_extra_stream, (const void **)&extrafield); + mz_stream_mem_get_buffer_length(writer->file_extra_stream, &extrafield_size); + + mz_zip_entry_set_extrafield(writer->zip_handle, extrafield, (uint16_t)extrafield_size); + } +#endif + + if (err == MZ_OK) { + if (writer->raw) + err = mz_zip_entry_close_raw(writer->zip_handle, writer->file_info.uncompressed_size, + writer->file_info.crc); + else + err = mz_zip_entry_close(writer->zip_handle); + } + + if (writer->file_extra_stream != NULL) + mz_stream_mem_delete(&writer->file_extra_stream); + + return err; +} + +int32_t mz_zip_writer_entry_write(void *handle, const void *buf, int32_t len) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + int32_t written = 0; + written = mz_zip_entry_write(writer->zip_handle, buf, len); +#ifndef MZ_ZIP_NO_CRYPTO + if ((written > 0) && (writer->sha256 != NULL)) + mz_crypt_sha_update(writer->sha256, buf, written); +#endif + return written; +} +/***************************************************************************/ + +int32_t mz_zip_writer_add_process(void *handle, void *stream, mz_stream_read_cb read_cb) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + int32_t read = 0; + int32_t written = 0; + int32_t err = MZ_OK; + + if (mz_zip_writer_is_open(writer) != MZ_OK) + return MZ_PARAM_ERROR; + /* If the entry isn't open for writing, open it */ + if (mz_zip_entry_is_open(writer->zip_handle) != MZ_OK) + return MZ_PARAM_ERROR; + if (read_cb == NULL) + return MZ_PARAM_ERROR; + + read = read_cb(stream, writer->buffer, sizeof(writer->buffer)); + if (read == 0) + return MZ_END_OF_STREAM; + if (read < 0) { + err = read; + return err; + } + + written = mz_zip_writer_entry_write(handle, writer->buffer, read); + if (written != read) + return MZ_WRITE_ERROR; + + return written; +} + +int32_t mz_zip_writer_add(void *handle, void *stream, mz_stream_read_cb read_cb) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + uint64_t current_time = 0; + uint64_t update_time = 0; + int64_t current_pos = 0; + int64_t update_pos = 0; + int32_t err = MZ_OK; + int32_t written = 0; + + /* Update the progress at the beginning */ + if (writer->progress_cb != NULL) + writer->progress_cb(handle, writer->progress_userdata, &writer->file_info, current_pos); + + /* Write data to stream until done */ + while (err == MZ_OK) { + written = mz_zip_writer_add_process(handle, stream, read_cb); + if (written == MZ_END_OF_STREAM) + break; + if (written > 0) + current_pos += written; + if (written < 0) + err = written; + + /* Update progress if enough time have passed */ + current_time = mz_os_ms_time(); + if ((current_time - update_time) > writer->progress_cb_interval_ms) { + if (writer->progress_cb != NULL) + writer->progress_cb(handle, writer->progress_userdata, &writer->file_info, current_pos); + + update_pos = current_pos; + update_time = current_time; + } + } + + /* Update the progress at the end */ + if (writer->progress_cb != NULL && update_pos != current_pos) + writer->progress_cb(handle, writer->progress_userdata, &writer->file_info, current_pos); + + return err; +} + +int32_t mz_zip_writer_add_info(void *handle, void *stream, mz_stream_read_cb read_cb, mz_zip_file *file_info) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + int32_t err = MZ_OK; + + + if (mz_zip_writer_is_open(handle) != MZ_OK) + return MZ_PARAM_ERROR; + if (file_info == NULL) + return MZ_PARAM_ERROR; + + /* Add to zip */ + err = mz_zip_writer_entry_open(handle, file_info); + if (err != MZ_OK) + return err; + + if (stream != NULL) { + if (mz_zip_attrib_is_dir(writer->file_info.external_fa, writer->file_info.version_madeby) != MZ_OK) { + err = mz_zip_writer_add(handle, stream, read_cb); + if (err != MZ_OK) + return err; + } + } + + err = mz_zip_writer_entry_close(handle); + + return err; +} + +int32_t mz_zip_writer_add_buffer(void *handle, void *buf, int32_t len, mz_zip_file *file_info) { + void *mem_stream = NULL; + int32_t err = MZ_OK; + + if (mz_zip_writer_is_open(handle) != MZ_OK) + return MZ_PARAM_ERROR; + if (buf == NULL) + return MZ_PARAM_ERROR; + + /* Create a memory stream backed by our buffer and add from it */ + mz_stream_mem_create(&mem_stream); + mz_stream_mem_set_buffer(mem_stream, buf, len); + + err = mz_stream_mem_open(mem_stream, NULL, MZ_OPEN_MODE_READ); + if (err == MZ_OK) + err = mz_zip_writer_add_info(handle, mem_stream, mz_stream_mem_read, file_info); + + mz_stream_mem_delete(&mem_stream); + return err; +} + +int32_t mz_zip_writer_add_file(void *handle, const char *path, const char *filename_in_zip) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + mz_zip_file file_info; + uint32_t target_attrib = 0; + uint32_t src_attrib = 0; + int32_t err = MZ_OK; + uint8_t src_sys = 0; + void *stream = NULL; + char link_path[1024]; + const char *filename = filename_in_zip; + + + if (mz_zip_writer_is_open(handle) != MZ_OK) + return MZ_PARAM_ERROR; + if (path == NULL) + return MZ_PARAM_ERROR; + + if (filename == NULL) { + err = mz_path_get_filename(path, &filename); + if (err != MZ_OK) + return err; + } + + memset(&file_info, 0, sizeof(file_info)); + + /* The path name saved, should not include a leading slash. */ + /* If it did, windows/xp and dynazip couldn't read the zip file. */ + + while (filename[0] == '\\' || filename[0] == '/') + filename += 1; + + /* Get information about the file on disk so we can store it in zip */ + + file_info.version_madeby = MZ_VERSION_MADEBY; + file_info.compression_method = writer->compress_method; + file_info.filename = filename; + file_info.uncompressed_size = mz_os_get_file_size(path); + file_info.flag = MZ_ZIP_FLAG_UTF8; + + if (writer->zip_cd) + file_info.flag |= MZ_ZIP_FLAG_MASK_LOCAL_INFO; + if (writer->aes) + file_info.aes_version = MZ_AES_VERSION; + + mz_os_get_file_date(path, &file_info.modified_date, &file_info.accessed_date, + &file_info.creation_date); + mz_os_get_file_attribs(path, &src_attrib); + + src_sys = MZ_HOST_SYSTEM(file_info.version_madeby); + + if ((src_sys != MZ_HOST_SYSTEM_MSDOS) && (src_sys != MZ_HOST_SYSTEM_WINDOWS_NTFS)) { + /* High bytes are OS specific attributes, low byte is always DOS attributes */ + if (mz_zip_attrib_convert(src_sys, src_attrib, MZ_HOST_SYSTEM_MSDOS, &target_attrib) == MZ_OK) + file_info.external_fa = target_attrib; + file_info.external_fa |= (src_attrib << 16); + } else { + file_info.external_fa = src_attrib; + } + + if (writer->store_links && mz_os_is_symlink(path) == MZ_OK) { + err = mz_os_read_symlink(path, link_path, sizeof(link_path)); + if (err == MZ_OK) + file_info.linkname = link_path; + } else if (mz_os_is_dir(path) != MZ_OK) { + mz_stream_os_create(&stream); + err = mz_stream_os_open(stream, path, MZ_OPEN_MODE_READ); + } + + if (err == MZ_OK) + err = mz_zip_writer_add_info(handle, stream, mz_stream_read, &file_info); + + if (stream != NULL) { + mz_stream_close(stream); + mz_stream_delete(&stream); + } + + return err; +} + +int32_t mz_zip_writer_add_path(void *handle, const char *path, const char *root_path, + uint8_t include_path, uint8_t recursive) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + DIR *dir = NULL; + struct dirent *entry = NULL; + int32_t err = MZ_OK; + int16_t is_dir = 0; + const char *filename = NULL; + const char *filenameinzip = path; + char *wildcard_ptr = NULL; + char full_path[1024]; + char path_dir[1024]; + + + if (strrchr(path, '*') != NULL) { + strncpy(path_dir, path, sizeof(path_dir) - 1); + path_dir[sizeof(path_dir) - 1] = 0; + mz_path_remove_filename(path_dir); + wildcard_ptr = path_dir + strlen(path_dir) + 1; + root_path = path = path_dir; + } else { + if (mz_os_is_dir(path) == MZ_OK) + is_dir = 1; + + /* Construct the filename that our file will be stored in the zip as */ + if (root_path == NULL) + root_path = path; + + /* Should the file be stored with any path info at all? */ + if (!include_path) { + if (!is_dir && root_path == path) { + if (mz_path_get_filename(filenameinzip, &filename) == MZ_OK) + filenameinzip = filename; + } else { + filenameinzip += strlen(root_path); + } + } + + if (!writer->store_links && !writer->follow_links) { + if (mz_os_is_symlink(path) == MZ_OK) + return err; + } + + if (*filenameinzip != 0) + err = mz_zip_writer_add_file(handle, path, filenameinzip); + + if (!is_dir) + return err; + + if (writer->store_links) { + if (mz_os_is_symlink(path) == MZ_OK) + return err; + } + } + + dir = mz_os_open_dir(path); + + if (dir == NULL) + return MZ_EXIST_ERROR; + + while ((entry = mz_os_read_dir(dir)) != NULL) { + if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) + continue; + + full_path[0] = 0; + mz_path_combine(full_path, path, sizeof(full_path)); + mz_path_combine(full_path, entry->d_name, sizeof(full_path)); + + if (!recursive && mz_os_is_dir(full_path) == MZ_OK) + continue; + + if ((wildcard_ptr != NULL) && (mz_path_compare_wc(entry->d_name, wildcard_ptr, 1) != MZ_OK)) + continue; + + err = mz_zip_writer_add_path(handle, full_path, root_path, include_path, recursive); + if (err != MZ_OK) + break; + } + + mz_os_close_dir(dir); + return err; +} + +int32_t mz_zip_writer_copy_from_reader(void *handle, void *reader) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + mz_zip_file *file_info = NULL; + int64_t compressed_size = 0; + int64_t uncompressed_size = 0; + uint32_t crc32 = 0; + int32_t err = MZ_OK; + uint8_t original_raw = 0; + void *reader_zip_handle = NULL; + void *writer_zip_handle = NULL; + + + if (mz_zip_reader_is_open(reader) != MZ_OK) + return MZ_PARAM_ERROR; + if (mz_zip_writer_is_open(writer) != MZ_OK) + return MZ_PARAM_ERROR; + + err = mz_zip_reader_entry_get_info(reader, &file_info); + + if (err != MZ_OK) + return err; + + mz_zip_reader_get_zip_handle(reader, &reader_zip_handle); + mz_zip_writer_get_zip_handle(writer, &writer_zip_handle); + + /* Open entry for raw reading */ + err = mz_zip_entry_read_open(reader_zip_handle, 1, NULL); + + if (err == MZ_OK) { + /* Write entry raw, save original raw value */ + original_raw = writer->raw; + writer->raw = 1; + + err = mz_zip_writer_entry_open(writer, file_info); + + if ((err == MZ_OK) && + (mz_zip_attrib_is_dir(writer->file_info.external_fa, writer->file_info.version_madeby) != MZ_OK)) { + err = mz_zip_writer_add(writer, reader_zip_handle, mz_zip_entry_read); + } + + if (err == MZ_OK) { + err = mz_zip_entry_read_close(reader_zip_handle, &crc32, &compressed_size, &uncompressed_size); + if (err == MZ_OK) + err = mz_zip_entry_write_close(writer_zip_handle, crc32, compressed_size, uncompressed_size); + } + + if (mz_zip_entry_is_open(reader_zip_handle) == MZ_OK) + mz_zip_entry_close(reader_zip_handle); + + if (mz_zip_entry_is_open(writer_zip_handle) == MZ_OK) + mz_zip_entry_close(writer_zip_handle); + + writer->raw = original_raw; + } + + return err; +} + +/***************************************************************************/ + +void mz_zip_writer_set_password(void *handle, const char *password) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + writer->password = password; +} + +void mz_zip_writer_set_comment(void *handle, const char *comment) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + writer->comment = comment; +} + +void mz_zip_writer_set_raw(void *handle, uint8_t raw) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + writer->raw = raw; +} + +int32_t mz_zip_writer_get_raw(void *handle, uint8_t *raw) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + if (raw == NULL) + return MZ_PARAM_ERROR; + *raw = writer->raw; + return MZ_OK; +} + +void mz_zip_writer_set_aes(void *handle, uint8_t aes) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + writer->aes = aes; +} + +void mz_zip_writer_set_compress_method(void *handle, uint16_t compress_method) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + writer->compress_method = compress_method; +} + +void mz_zip_writer_set_compress_level(void *handle, int16_t compress_level) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + writer->compress_level = compress_level; +} + +void mz_zip_writer_set_follow_links(void *handle, uint8_t follow_links) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + writer->follow_links = follow_links; +} + +void mz_zip_writer_set_store_links(void *handle, uint8_t store_links) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + writer->store_links = store_links; +} + +void mz_zip_writer_set_zip_cd(void *handle, uint8_t zip_cd) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + writer->zip_cd = zip_cd; +} + +int32_t mz_zip_writer_set_certificate(void *handle, const char *cert_path, const char *cert_pwd) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + void *cert_stream = NULL; + uint8_t *cert_data = NULL; + int32_t cert_data_size = 0; + int32_t err = MZ_OK; + + if (cert_path == NULL) + return MZ_PARAM_ERROR; + + cert_data_size = (int32_t)mz_os_get_file_size(cert_path); + + if (cert_data_size == 0) + return MZ_PARAM_ERROR; + + if (writer->cert_data != NULL) { + MZ_FREE(writer->cert_data); + writer->cert_data = NULL; + } + + cert_data = (uint8_t *)MZ_ALLOC(cert_data_size); + + /* Read pkcs12 certificate from disk */ + mz_stream_os_create(&cert_stream); + err = mz_stream_os_open(cert_stream, cert_path, MZ_OPEN_MODE_READ); + if (err == MZ_OK) { + if (mz_stream_os_read(cert_stream, cert_data, cert_data_size) != cert_data_size) + err = MZ_READ_ERROR; + mz_stream_os_close(cert_stream); + } + mz_stream_os_delete(&cert_stream); + + if (err == MZ_OK) { + writer->cert_data = cert_data; + writer->cert_data_size = cert_data_size; + writer->cert_pwd = cert_pwd; + } else { + MZ_FREE(cert_data); + } + + return err; +} + +void mz_zip_writer_set_overwrite_cb(void *handle, void *userdata, mz_zip_writer_overwrite_cb cb) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + writer->overwrite_cb = cb; + writer->overwrite_userdata = userdata; +} + +void mz_zip_writer_set_password_cb(void *handle, void *userdata, mz_zip_writer_password_cb cb) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + writer->password_cb = cb; + writer->password_userdata = userdata; +} + +void mz_zip_writer_set_progress_cb(void *handle, void *userdata, mz_zip_writer_progress_cb cb) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + writer->progress_cb = cb; + writer->progress_userdata = userdata; +} + +void mz_zip_writer_set_progress_interval(void *handle, uint32_t milliseconds) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + writer->progress_cb_interval_ms = milliseconds; +} + +void mz_zip_writer_set_entry_cb(void *handle, void *userdata, mz_zip_writer_entry_cb cb) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + writer->entry_cb = cb; + writer->entry_userdata = userdata; +} + +int32_t mz_zip_writer_get_zip_handle(void *handle, void **zip_handle) { + mz_zip_writer *writer = (mz_zip_writer *)handle; + if (zip_handle == NULL) + return MZ_PARAM_ERROR; + *zip_handle = writer->zip_handle; + if (*zip_handle == NULL) + return MZ_EXIST_ERROR; + return MZ_OK; +} + +/***************************************************************************/ + +void *mz_zip_writer_create(void **handle) { + mz_zip_writer *writer = NULL; + + writer = (mz_zip_writer *)MZ_ALLOC(sizeof(mz_zip_writer)); + if (writer != NULL) { + memset(writer, 0, sizeof(mz_zip_writer)); +#if defined(HAVE_WZAES) + writer->aes = 1; +#endif +#if defined(HAVE_ZLIB) || defined(HAVE_LIBCOMP) + writer->compress_method = MZ_COMPRESS_METHOD_DEFLATE; +#elif defined(HAVE_BZIP2) + writer->compress_method = MZ_COMPRESS_METHOD_BZIP2; +#elif defined(HAVE_LZMA) + writer->compress_method = MZ_COMPRESS_METHOD_LZMA; +#else + writer->compress_method = MZ_COMPRESS_METHOD_STORE; +#endif + writer->compress_level = MZ_COMPRESS_LEVEL_BEST; + writer->progress_cb_interval_ms = MZ_DEFAULT_PROGRESS_INTERVAL; + } + if (handle != NULL) + *handle = writer; + + return writer; +} + +void mz_zip_writer_delete(void **handle) { + mz_zip_writer *writer = NULL; + if (handle == NULL) + return; + writer = (mz_zip_writer *)*handle; + if (writer != NULL) { + mz_zip_writer_close(writer); + + if (writer->cert_data != NULL) + MZ_FREE(writer->cert_data); + + writer->cert_data = NULL; + writer->cert_data_size = 0; + + MZ_FREE(writer); + } + *handle = NULL; +} + +/***************************************************************************/ diff --git a/Externals/minizip/mz_zip_rw.h b/Externals/minizip/mz_zip_rw.h new file mode 100644 index 000000000000..e507f94a5a5f --- /dev/null +++ b/Externals/minizip/mz_zip_rw.h @@ -0,0 +1,285 @@ +/* mz_zip_rw.h -- Zip reader/writer + part of the minizip-ng project + + Copyright (C) 2010-2021 Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_ZIP_RW_H +#define MZ_ZIP_RW_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************************************/ + +typedef int32_t (*mz_zip_reader_overwrite_cb)(void *handle, void *userdata, mz_zip_file *file_info, const char *path); +typedef int32_t (*mz_zip_reader_password_cb)(void *handle, void *userdata, mz_zip_file *file_info, char *password, int32_t max_password); +typedef int32_t (*mz_zip_reader_progress_cb)(void *handle, void *userdata, mz_zip_file *file_info, int64_t position); +typedef int32_t (*mz_zip_reader_entry_cb)(void *handle, void *userdata, mz_zip_file *file_info, const char *path); + +/***************************************************************************/ + +int32_t mz_zip_reader_is_open(void *handle); +/* Checks to see if the zip file is open */ + +int32_t mz_zip_reader_open(void *handle, void *stream); +/* Opens zip file from stream */ + +int32_t mz_zip_reader_open_file(void *handle, const char *path); +/* Opens zip file from a file path */ + +int32_t mz_zip_reader_open_file_in_memory(void *handle, const char *path); +/* Opens zip file from a file path into memory for faster access */ + +int32_t mz_zip_reader_open_buffer(void *handle, uint8_t *buf, int32_t len, uint8_t copy); +/* Opens zip file from memory buffer */ + +int32_t mz_zip_reader_close(void *handle); +/* Closes the zip file */ + +/***************************************************************************/ + +int32_t mz_zip_reader_unzip_cd(void *handle); +/* Unzip the central directory */ + +/***************************************************************************/ + +int32_t mz_zip_reader_goto_first_entry(void *handle); +/* Goto the first entry in the zip file that matches the pattern */ + +int32_t mz_zip_reader_goto_next_entry(void *handle); +/* Goto the next entry in the zip file that matches the pattern */ + +int32_t mz_zip_reader_locate_entry(void *handle, const char *filename, uint8_t ignore_case); +/* Locates an entry by filename */ + +int32_t mz_zip_reader_entry_open(void *handle); +/* Opens an entry for reading */ + +int32_t mz_zip_reader_entry_close(void *handle); +/* Closes an entry */ + +int32_t mz_zip_reader_entry_read(void *handle, void *buf, int32_t len); +/* Reads and entry after being opened */ + +int32_t mz_zip_reader_entry_has_sign(void *handle); +/* Checks to see if the entry has a signature */ + +int32_t mz_zip_reader_entry_sign_verify(void *handle); +/* Verifies a signature stored with the entry */ + +int32_t mz_zip_reader_entry_get_hash(void *handle, uint16_t algorithm, uint8_t *digest, int32_t digest_size); +/* Gets a hash algorithm from the entry's extra field */ + +int32_t mz_zip_reader_entry_get_first_hash(void *handle, uint16_t *algorithm, uint16_t *digest_size); +/* Gets the most secure hash algorithm from the entry's extra field */ + +int32_t mz_zip_reader_entry_get_info(void *handle, mz_zip_file **file_info); +/* Gets the current entry file info */ + +int32_t mz_zip_reader_entry_is_dir(void *handle); +/* Gets the current entry is a directory */ + +int32_t mz_zip_reader_entry_save(void *handle, void *stream, mz_stream_write_cb write_cb); +/* Save the current entry to a stream */ + +int32_t mz_zip_reader_entry_save_process(void *handle, void *stream, mz_stream_write_cb write_cb); +/* Saves a portion of the current entry to a stream callback */ + +int32_t mz_zip_reader_entry_save_file(void *handle, const char *path); +/* Save the current entry to a file */ + +int32_t mz_zip_reader_entry_save_buffer(void *handle, void *buf, int32_t len); +/* Save the current entry to a memory buffer */ + +int32_t mz_zip_reader_entry_save_buffer_length(void *handle); +/* Gets the length of the buffer required to save */ + +/***************************************************************************/ + +int32_t mz_zip_reader_save_all(void *handle, const char *destination_dir); +/* Save all files into a directory */ + +/***************************************************************************/ + +void mz_zip_reader_set_pattern(void *handle, const char *pattern, uint8_t ignore_case); +/* Sets the match pattern for entries in the zip file, if null all entries are matched */ + +void mz_zip_reader_set_password(void *handle, const char *password); +/* Sets the password required for extraction */ + +void mz_zip_reader_set_raw(void *handle, uint8_t raw); +/* Sets whether or not it should save the entry raw */ + +int32_t mz_zip_reader_get_raw(void *handle, uint8_t *raw); +/* Gets whether or not it should save the entry raw */ + +int32_t mz_zip_reader_get_zip_cd(void *handle, uint8_t *zip_cd); +/* Gets whether or not the archive has a zipped central directory */ + +int32_t mz_zip_reader_get_comment(void *handle, const char **comment); +/* Gets the comment for the central directory */ + +int32_t mz_zip_reader_set_recover(void *handle, uint8_t recover); +/* Sets the ability to recover the central dir by reading local file headers */ + +void mz_zip_reader_set_encoding(void *handle, int32_t encoding); +/* Sets whether or not it should support a special character encoding in zip file names. */ + +void mz_zip_reader_set_sign_required(void *handle, uint8_t sign_required); +/* Sets whether or not it a signature is required */ + +void mz_zip_reader_set_overwrite_cb(void *handle, void *userdata, mz_zip_reader_overwrite_cb cb); +/* Callback for what to do when a file is being overwritten */ + +void mz_zip_reader_set_password_cb(void *handle, void *userdata, mz_zip_reader_password_cb cb); +/* Callback for when a password is required and hasn't been set */ + +void mz_zip_reader_set_progress_cb(void *handle, void *userdata, mz_zip_reader_progress_cb cb); +/* Callback for extraction progress */ + +void mz_zip_reader_set_progress_interval(void *handle, uint32_t milliseconds); +/* Let at least milliseconds pass between calls to progress callback */ + +void mz_zip_reader_set_entry_cb(void *handle, void *userdata, mz_zip_reader_entry_cb cb); +/* Callback for zip file entries */ + +int32_t mz_zip_reader_get_zip_handle(void *handle, void **zip_handle); +/* Gets the underlying zip instance handle */ + +void* mz_zip_reader_create(void **handle); +/* Create new instance of zip reader */ + +void mz_zip_reader_delete(void **handle); +/* Delete instance of zip reader */ + +/***************************************************************************/ + +typedef int32_t (*mz_zip_writer_overwrite_cb)(void *handle, void *userdata, const char *path); +typedef int32_t (*mz_zip_writer_password_cb)(void *handle, void *userdata, mz_zip_file *file_info, char *password, int32_t max_password); +typedef int32_t (*mz_zip_writer_progress_cb)(void *handle, void *userdata, mz_zip_file *file_info, int64_t position); +typedef int32_t (*mz_zip_writer_entry_cb)(void *handle, void *userdata, mz_zip_file *file_info); + +/***************************************************************************/ + +int32_t mz_zip_writer_is_open(void *handle); +/* Checks to see if the zip file is open */ + +int32_t mz_zip_writer_open(void *handle, void *stream, uint8_t append); +/* Opens zip file from stream */ + +int32_t mz_zip_writer_open_file(void *handle, const char *path, int64_t disk_size, uint8_t append); +/* Opens zip file from a file path */ + +int32_t mz_zip_writer_open_file_in_memory(void *handle, const char *path); +/* Opens zip file from a file path into memory for faster access */ + +int32_t mz_zip_writer_close(void *handle); +/* Closes the zip file */ + +/***************************************************************************/ + +int32_t mz_zip_writer_entry_open(void *handle, mz_zip_file *file_info); +/* Opens an entry in the zip file for writing */ + +int32_t mz_zip_writer_entry_close(void *handle); +/* Closes entry in zip file */ + +int32_t mz_zip_writer_entry_write(void *handle, const void *buf, int32_t len); +/* Writes data into entry for zip */ + +/***************************************************************************/ + +int32_t mz_zip_writer_add(void *handle, void *stream, mz_stream_read_cb read_cb); +/* Writes all data to the currently open entry in the zip */ + +int32_t mz_zip_writer_add_process(void *handle, void *stream, mz_stream_read_cb read_cb); +/* Writes a portion of data to the currently open entry in the zip */ + +int32_t mz_zip_writer_add_info(void *handle, void *stream, mz_stream_read_cb read_cb, mz_zip_file *file_info); +/* Adds an entry to the zip based on the info */ + +int32_t mz_zip_writer_add_buffer(void *handle, void *buf, int32_t len, mz_zip_file *file_info); +/* Adds an entry to the zip with a memory buffer */ + +int32_t mz_zip_writer_add_file(void *handle, const char *path, const char *filename_in_zip); +/* Adds an entry to the zip from a file */ + +int32_t mz_zip_writer_add_path(void *handle, const char *path, const char *root_path, uint8_t include_path, + uint8_t recursive); +/* Enumerates a directory or pattern and adds entries to the zip */ + +int32_t mz_zip_writer_copy_from_reader(void *handle, void *reader); +/* Adds an entry from a zip reader instance */ + +/***************************************************************************/ + +void mz_zip_writer_set_password(void *handle, const char *password); +/* Password to use for encrypting files in the zip */ + +void mz_zip_writer_set_comment(void *handle, const char *comment); +/* Comment to use for the archive */ + +void mz_zip_writer_set_raw(void *handle, uint8_t raw); +/* Sets whether or not we should write the entry raw */ + +int32_t mz_zip_writer_get_raw(void *handle, uint8_t *raw); +/* Gets whether or not we should write the entry raw */ + +void mz_zip_writer_set_aes(void *handle, uint8_t aes); +/* Use aes encryption when adding files in zip */ + +void mz_zip_writer_set_compress_method(void *handle, uint16_t compress_method); +/* Sets the compression method when adding files in zip */ + +void mz_zip_writer_set_compress_level(void *handle, int16_t compress_level); +/* Sets the compression level when adding files in zip */ + +void mz_zip_writer_set_follow_links(void *handle, uint8_t follow_links); +/* Follow symbolic links when traversing directories and files to add */ + +void mz_zip_writer_set_store_links(void *handle, uint8_t store_links); +/* Store symbolic links in zip file */ + +void mz_zip_writer_set_zip_cd(void *handle, uint8_t zip_cd); +/* Sets whether or not central directory should be zipped */ + +int32_t mz_zip_writer_set_certificate(void *handle, const char *cert_path, const char *cert_pwd); +/* Sets the certificate and timestamp url to use for signing when adding files in zip */ + +void mz_zip_writer_set_overwrite_cb(void *handle, void *userdata, mz_zip_writer_overwrite_cb cb); +/* Callback for what to do when zip file already exists */ + +void mz_zip_writer_set_password_cb(void *handle, void *userdata, mz_zip_writer_password_cb cb); +/* Callback for ask if a password is required for adding */ + +void mz_zip_writer_set_progress_cb(void *handle, void *userdata, mz_zip_writer_progress_cb cb); +/* Callback for compression progress */ + +void mz_zip_writer_set_progress_interval(void *handle, uint32_t milliseconds); +/* Let at least milliseconds pass between calls to progress callback */ + +void mz_zip_writer_set_entry_cb(void *handle, void *userdata, mz_zip_writer_entry_cb cb); +/* Callback for zip file entries */ + +int32_t mz_zip_writer_get_zip_handle(void *handle, void **zip_handle); +/* Gets the underlying zip handle */ + +void* mz_zip_writer_create(void **handle); +/* Create new instance of zip writer */ + +void mz_zip_writer_delete(void **handle); +/* Delete instance of zip writer */ + +/***************************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Externals/minizip/unzip.c b/Externals/minizip/unzip.c deleted file mode 100644 index 145fe5fbf8d0..000000000000 --- a/Externals/minizip/unzip.c +++ /dev/null @@ -1,1991 +0,0 @@ -/* unzip.c -- IO for uncompress .zip files using zlib - Version 1.1, February 14h, 2010 - part of the MiniZip project - - Copyright (C) 1998-2010 Gilles Vollant - http://www.winimage.com/zLibDll/minizip.html - Modifications of Unzip for Zip64 - Copyright (C) 2007-2008 Even Rouault - Modifications for Zip64 support on both zip and unzip - Copyright (C) 2009-2010 Mathias Svensson - http://result42.com - Modifications for AES, PKWARE disk spanning - Copyright (C) 2010-2014 Nathan Moinvaziri - - This program is distributed under the terms of the same license as zlib. - See the accompanying LICENSE file for the full text of the license. -*/ - -#include -#include -#include -#include -#include - -#include "zlib.h" -#include "unzip.h" - -#ifdef HAVE_AES -# define AES_METHOD (99) -# define AES_PWVERIFYSIZE (2) -# define AES_MAXSALTLENGTH (16) -# define AES_AUTHCODESIZE (10) -# define AES_HEADERSIZE (11) -# define AES_KEYSIZE(mode) (64 + (mode * 64)) - -# include "aes/aes.h" -# include "aes/fileenc.h" -#endif -#ifdef HAVE_APPLE_COMPRESSION -# include -#endif - -#ifndef NOUNCRYPT -# include "crypt.h" -#endif - -#define DISKHEADERMAGIC (0x08074b50) -#define LOCALHEADERMAGIC (0x04034b50) -#define CENTRALHEADERMAGIC (0x02014b50) -#define ENDHEADERMAGIC (0x06054b50) -#define ZIP64ENDHEADERMAGIC (0x06064b50) -#define ZIP64ENDLOCHEADERMAGIC (0x07064b50) - -#define SIZECENTRALDIRITEM (0x2e) -#define SIZECENTRALHEADERLOCATOR (0x14) -#define SIZEZIPLOCALHEADER (0x1e) - -#ifndef BUFREADCOMMENT -# define BUFREADCOMMENT (0x400) -#endif - -#ifndef UNZ_BUFSIZE -# define UNZ_BUFSIZE (UINT16_MAX) -#endif -#ifndef UNZ_MAXFILENAMEINZIP -# define UNZ_MAXFILENAMEINZIP (256) -#endif - -#ifndef ALLOC -# define ALLOC(size) (malloc(size)) -#endif -#ifndef TRYFREE -# define TRYFREE(p) {if (p) free(p);} -#endif - -const char unz_copyright[] = - " unzip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; - -/* unz_file_info_internal contain internal info about a file in zipfile*/ -typedef struct unz_file_info64_internal_s -{ - uint64_t offset_curfile; /* relative offset of local header 8 bytes */ - uint64_t byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx) */ -#ifdef HAVE_AES - uint8_t aes_encryption_mode; - uint16_t aes_compression_method; - uint16_t aes_version; -#endif -} unz_file_info64_internal; - -/* file_in_zip_read_info_s contain internal information about a file in zipfile */ -typedef struct -{ - uint8_t *read_buffer; /* internal buffer for compressed data */ - z_stream stream; /* zLib stream structure for inflate */ -#ifdef HAVE_BZIP2 - bz_stream bstream; /* bzLib stream structure for bziped */ -#endif -#ifdef HAVE_APPLE_COMPRESSION - compression_stream astream; /* libcompression stream structure */ -#endif -#ifdef HAVE_AES - fcrypt_ctx aes_ctx; -#endif - uint64_t pos_in_zipfile; /* position in byte on the zipfile, for fseek */ - uint8_t stream_initialised; /* flag set if stream structure is initialised */ - - uint64_t offset_local_extrafield; /* offset of the local extra field */ - uint16_t size_local_extrafield; /* size of the local extra field */ - uint64_t pos_local_extrafield; /* position in the local extra field in read */ - uint64_t total_out_64; - - uint32_t crc32; /* crc32 of all data uncompressed */ - uint32_t crc32_wait; /* crc32 we must obtain after decompress all */ - uint64_t rest_read_compressed; /* number of byte to be decompressed */ - uint64_t rest_read_uncompressed; /* number of byte to be obtained after decomp */ - - zlib_filefunc64_32_def z_filefunc; - - voidpf filestream; /* io structore of the zipfile */ - uint16_t compression_method; /* compression method (0==store) */ - uint64_t byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx) */ - int raw; -} file_in_zip64_read_info_s; - -/* unz64_s contain internal information about the zipfile */ -typedef struct -{ - zlib_filefunc64_32_def z_filefunc; - - voidpf filestream; /* io structure of the current zipfile */ - voidpf filestream_with_CD; /* io structure of the disk with the central directory */ - - unz_global_info64 gi; /* public global information */ - - uint64_t byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx) */ - uint64_t num_file; /* number of the current file in the zipfile */ - uint64_t pos_in_central_dir; /* pos of the current file in the central dir */ - uint64_t current_file_ok; /* flag about the usability of the current file */ - uint64_t central_pos; /* position of the beginning of the central dir */ - uint32_t number_disk; /* number of the current disk, used for spanning ZIP */ - uint64_t size_central_dir; /* size of the central directory */ - uint64_t offset_central_dir; /* offset of start of central directory with - respect to the starting disk number */ - - unz_file_info64 cur_file_info; /* public info about the current file in zip*/ - unz_file_info64_internal cur_file_info_internal; - /* private info about it*/ - file_in_zip64_read_info_s *pfile_in_zip_read; - /* structure about the current file if we are decompressing it */ - int is_zip64; /* is the current file zip64 */ -#ifndef NOUNCRYPT - uint32_t keys[3]; /* keys defining the pseudo-random sequence */ - const z_crc_t *pcrc_32_tab; -#endif -} unz64_s; - -/* Read a byte from a gz_stream; Return EOF for end of file. */ -static int unzReadUInt8(const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, uint8_t *value) -{ - uint8_t c = 0; - if (ZREAD64(*pzlib_filefunc_def, filestream, &c, 1) == 1) - { - *value = (uint8_t)c; - return UNZ_OK; - } - *value = 0; - if (ZERROR64(*pzlib_filefunc_def, filestream)) - return UNZ_ERRNO; - return UNZ_EOF; -} - -static int unzReadUInt16(const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, uint16_t *value) -{ - uint16_t x; - uint8_t c = 0; - int err = UNZ_OK; - - err = unzReadUInt8(pzlib_filefunc_def, filestream, &c); - x = (uint16_t)c; - if (err == UNZ_OK) - err = unzReadUInt8(pzlib_filefunc_def, filestream, &c); - x |= ((uint16_t)c) << 8; - - if (err == UNZ_OK) - *value = x; - else - *value = 0; - return err; -} - -static int unzReadUInt32(const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, uint32_t *value) -{ - uint32_t x = 0; - uint8_t c = 0; - int err = UNZ_OK; - - err = unzReadUInt8(pzlib_filefunc_def, filestream, &c); - x = (uint32_t)c; - if (err == UNZ_OK) - err = unzReadUInt8(pzlib_filefunc_def, filestream, &c); - x |= ((uint32_t)c) << 8; - if (err == UNZ_OK) - err = unzReadUInt8(pzlib_filefunc_def, filestream, &c); - x |= ((uint32_t)c) << 16; - if (err == UNZ_OK) - err = unzReadUInt8(pzlib_filefunc_def, filestream, &c); - x += ((uint32_t)c) << 24; - - if (err == UNZ_OK) - *value = x; - else - *value = 0; - return err; -} - -static int unzReadUInt64(const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, uint64_t *value) -{ - uint64_t x = 0; - uint8_t i = 0; - int err = UNZ_OK; - - err = unzReadUInt8(pzlib_filefunc_def, filestream, &i); - x = (uint64_t)i; - if (err == UNZ_OK) - err = unzReadUInt8(pzlib_filefunc_def, filestream, &i); - x |= ((uint64_t)i) << 8; - if (err == UNZ_OK) - err = unzReadUInt8(pzlib_filefunc_def, filestream, &i); - x |= ((uint64_t)i) << 16; - if (err == UNZ_OK) - err = unzReadUInt8(pzlib_filefunc_def, filestream, &i); - x |= ((uint64_t)i) << 24; - if (err == UNZ_OK) - err = unzReadUInt8(pzlib_filefunc_def, filestream, &i); - x |= ((uint64_t)i) << 32; - if (err == UNZ_OK) - err = unzReadUInt8(pzlib_filefunc_def, filestream, &i); - x |= ((uint64_t)i) << 40; - if (err == UNZ_OK) - err = unzReadUInt8(pzlib_filefunc_def, filestream, &i); - x |= ((uint64_t)i) << 48; - if (err == UNZ_OK) - err = unzReadUInt8(pzlib_filefunc_def, filestream, &i); - x |= ((uint64_t)i) << 56; - - if (err == UNZ_OK) - *value = x; - else - *value = 0; - return err; -} - -/* Locate the Central directory of a zip file (at the end, just before the global comment) */ -static uint64_t unzSearchCentralDir(const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream) -{ - uint8_t buf[BUFREADCOMMENT + 4]; - uint64_t file_size = 0; - uint64_t back_read = 4; - uint64_t max_back = UINT16_MAX; /* maximum size of global comment */ - uint64_t pos_found = 0; - uint32_t read_size = 0; - uint64_t read_pos = 0; - uint32_t i = 0; - - if (ZSEEK64(*pzlib_filefunc_def, filestream, 0, ZLIB_FILEFUNC_SEEK_END) != 0) - return 0; - - file_size = ZTELL64(*pzlib_filefunc_def, filestream); - - if (max_back > file_size) - max_back = file_size; - - while (back_read < max_back) - { - if (back_read + BUFREADCOMMENT > max_back) - back_read = max_back; - else - back_read += BUFREADCOMMENT; - - read_pos = file_size - back_read; - read_size = ((BUFREADCOMMENT + 4) < (file_size - read_pos)) ? - (BUFREADCOMMENT + 4) : (uint32_t)(file_size - read_pos); - - if (ZSEEK64(*pzlib_filefunc_def, filestream, read_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) - break; - if (ZREAD64(*pzlib_filefunc_def, filestream, buf, read_size) != read_size) - break; - - for (i = read_size - 3; (i--) > 0;) - if (((*(buf+i)) == (ENDHEADERMAGIC & 0xff)) && - ((*(buf+i+1)) == (ENDHEADERMAGIC >> 8 & 0xff)) && - ((*(buf+i+2)) == (ENDHEADERMAGIC >> 16 & 0xff)) && - ((*(buf+i+3)) == (ENDHEADERMAGIC >> 24 & 0xff))) - { - pos_found = read_pos+i; - break; - } - - if (pos_found != 0) - break; - } - - return pos_found; -} - -/* Locate the Central directory 64 of a zipfile (at the end, just before the global comment) */ -static uint64_t unzSearchCentralDir64(const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, - const uint64_t endcentraloffset) -{ - uint64_t offset = 0; - uint32_t value32 = 0; - - /* Zip64 end of central directory locator */ - if (ZSEEK64(*pzlib_filefunc_def, filestream, endcentraloffset - SIZECENTRALHEADERLOCATOR, ZLIB_FILEFUNC_SEEK_SET) != 0) - return 0; - - /* Read locator signature */ - if (unzReadUInt32(pzlib_filefunc_def, filestream, &value32) != UNZ_OK) - return 0; - if (value32 != ZIP64ENDLOCHEADERMAGIC) - return 0; - /* Number of the disk with the start of the zip64 end of central directory */ - if (unzReadUInt32(pzlib_filefunc_def, filestream, &value32) != UNZ_OK) - return 0; - /* Relative offset of the zip64 end of central directory record */ - if (unzReadUInt64(pzlib_filefunc_def, filestream, &offset) != UNZ_OK) - return 0; - /* Total number of disks */ - if (unzReadUInt32(pzlib_filefunc_def, filestream, &value32) != UNZ_OK) - return 0; - /* Goto end of central directory record */ - if (ZSEEK64(*pzlib_filefunc_def, filestream, offset, ZLIB_FILEFUNC_SEEK_SET) != 0) - return 0; - /* The signature */ - if (unzReadUInt32(pzlib_filefunc_def, filestream, &value32) != UNZ_OK) - return 0; - if (value32 != ZIP64ENDHEADERMAGIC) - return 0; - - return offset; -} - -static unzFile unzOpenInternal(const void *path, zlib_filefunc64_32_def *pzlib_filefunc64_32_def) -{ - unz64_s us; - unz64_s *s = NULL; - uint64_t central_pos = 0; - uint64_t central_pos64 = 0; - uint64_t number_entry_CD = 0; - uint16_t value16 = 0; - uint32_t value32 = 0; - uint64_t value64 = 0; - voidpf filestream = NULL; - int err = UNZ_OK; - - if (unz_copyright[0] != ' ') - return NULL; - - us.filestream = NULL; - us.filestream_with_CD = NULL; - us.z_filefunc.zseek32_file = NULL; - us.z_filefunc.ztell32_file = NULL; - - if (pzlib_filefunc64_32_def == NULL) - fill_fopen64_filefunc(&us.z_filefunc.zfile_func64); - else - us.z_filefunc = *pzlib_filefunc64_32_def; - - us.filestream = ZOPEN64(us.z_filefunc, path, ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_EXISTING); - - if (us.filestream == NULL) - return NULL; - - us.filestream_with_CD = us.filestream; - us.is_zip64 = 0; - - /* Search for end of central directory header */ - central_pos = unzSearchCentralDir(&us.z_filefunc, us.filestream); - if (central_pos) - { - if (ZSEEK64(us.z_filefunc, us.filestream, central_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) - err = UNZ_ERRNO; - - /* The signature, already checked */ - if (unzReadUInt32(&us.z_filefunc, us.filestream, &value32) != UNZ_OK) - err = UNZ_ERRNO; - /* Number of this disk */ - if (unzReadUInt16(&us.z_filefunc, us.filestream, &value16) != UNZ_OK) - err = UNZ_ERRNO; - us.number_disk = value16; - /* Number of the disk with the start of the central directory */ - if (unzReadUInt16(&us.z_filefunc, us.filestream, &value16) != UNZ_OK) - err = UNZ_ERRNO; - us.gi.number_disk_with_CD = value16; - /* Total number of entries in the central directory on this disk */ - if (unzReadUInt16(&us.z_filefunc, us.filestream, &value16) != UNZ_OK) - err = UNZ_ERRNO; - us.gi.number_entry = value16; - /* Total number of entries in the central directory */ - if (unzReadUInt16(&us.z_filefunc, us.filestream, &value16) != UNZ_OK) - err = UNZ_ERRNO; - number_entry_CD = value16; - if (number_entry_CD != us.gi.number_entry) - err = UNZ_BADZIPFILE; - /* Size of the central directory */ - if (unzReadUInt32(&us.z_filefunc, us.filestream, &value32) != UNZ_OK) - err = UNZ_ERRNO; - us.size_central_dir = value32; - /* Offset of start of central directory with respect to the starting disk number */ - if (unzReadUInt32(&us.z_filefunc, us.filestream, &value32) != UNZ_OK) - err = UNZ_ERRNO; - us.offset_central_dir = value32; - /* Zipfile comment length */ - if (unzReadUInt16(&us.z_filefunc, us.filestream, &us.gi.size_comment) != UNZ_OK) - err = UNZ_ERRNO; - - if (err == UNZ_OK) - { - /* Search for Zip64 end of central directory header */ - central_pos64 = unzSearchCentralDir64(&us.z_filefunc, us.filestream, central_pos); - if (central_pos64) - { - central_pos = central_pos64; - us.is_zip64 = 1; - - if (ZSEEK64(us.z_filefunc, us.filestream, central_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) - err = UNZ_ERRNO; - - /* the signature, already checked */ - if (unzReadUInt32(&us.z_filefunc, us.filestream, &value32) != UNZ_OK) - err = UNZ_ERRNO; - /* size of zip64 end of central directory record */ - if (unzReadUInt64(&us.z_filefunc, us.filestream, &value64) != UNZ_OK) - err = UNZ_ERRNO; - /* version made by */ - if (unzReadUInt16(&us.z_filefunc, us.filestream, &value16) != UNZ_OK) - err = UNZ_ERRNO; - /* version needed to extract */ - if (unzReadUInt16(&us.z_filefunc, us.filestream, &value16) != UNZ_OK) - err = UNZ_ERRNO; - /* number of this disk */ - if (unzReadUInt32(&us.z_filefunc, us.filestream, &us.number_disk) != UNZ_OK) - err = UNZ_ERRNO; - /* number of the disk with the start of the central directory */ - if (unzReadUInt32(&us.z_filefunc, us.filestream, &us.gi.number_disk_with_CD) != UNZ_OK) - err = UNZ_ERRNO; - /* total number of entries in the central directory on this disk */ - if (unzReadUInt64(&us.z_filefunc, us.filestream, &us.gi.number_entry) != UNZ_OK) - err = UNZ_ERRNO; - /* total number of entries in the central directory */ - if (unzReadUInt64(&us.z_filefunc, us.filestream, &number_entry_CD) != UNZ_OK) - err = UNZ_ERRNO; - if (number_entry_CD != us.gi.number_entry) - err = UNZ_BADZIPFILE; - /* size of the central directory */ - if (unzReadUInt64(&us.z_filefunc, us.filestream, &us.size_central_dir) != UNZ_OK) - err = UNZ_ERRNO; - /* offset of start of central directory with respect to the starting disk number */ - if (unzReadUInt64(&us.z_filefunc, us.filestream, &us.offset_central_dir) != UNZ_OK) - err = UNZ_ERRNO; - } - else if ((us.gi.number_entry == UINT16_MAX) || (us.size_central_dir == UINT16_MAX) || (us.offset_central_dir == UINT32_MAX)) - err = UNZ_BADZIPFILE; - } - } - else - err = UNZ_ERRNO; - - if ((err == UNZ_OK) && (central_pos < us.offset_central_dir + us.size_central_dir)) - err = UNZ_BADZIPFILE; - - if (err != UNZ_OK) - { - ZCLOSE64(us.z_filefunc, us.filestream); - return NULL; - } - - if (us.gi.number_disk_with_CD == 0) - { - /* If there is only one disk open another stream so we don't have to seek between the CD - and the file headers constantly */ - filestream = ZOPEN64(us.z_filefunc, path, ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_EXISTING); - if (filestream != NULL) - us.filestream = filestream; - } - - /* Hack for zip files that have no respect for zip64 - if ((central_pos > 0xffffffff) && (us.offset_central_dir < 0xffffffff)) - us.offset_central_dir = central_pos - us.size_central_dir;*/ - - us.byte_before_the_zipfile = central_pos - (us.offset_central_dir + us.size_central_dir); - us.central_pos = central_pos; - us.pfile_in_zip_read = NULL; - - s = (unz64_s*)ALLOC(sizeof(unz64_s)); - if (s != NULL) - { - *s = us; - unzGoToFirstFile((unzFile)s); - } - return (unzFile)s; -} - -extern unzFile ZEXPORT unzOpen2(const char *path, zlib_filefunc_def *pzlib_filefunc32_def) -{ - if (pzlib_filefunc32_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - fill_zlib_filefunc64_32_def_from_filefunc32(&zlib_filefunc64_32_def_fill, pzlib_filefunc32_def); - return unzOpenInternal(path, &zlib_filefunc64_32_def_fill); - } - return unzOpenInternal(path, NULL); -} - -extern unzFile ZEXPORT unzOpen2_64(const void *path, zlib_filefunc64_def *pzlib_filefunc_def) -{ - if (pzlib_filefunc_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - zlib_filefunc64_32_def_fill.zfile_func64 = *pzlib_filefunc_def; - zlib_filefunc64_32_def_fill.ztell32_file = NULL; - zlib_filefunc64_32_def_fill.zseek32_file = NULL; - return unzOpenInternal(path, &zlib_filefunc64_32_def_fill); - } - return unzOpenInternal(path, NULL); -} - -extern unzFile ZEXPORT unzOpen(const char *path) -{ - return unzOpenInternal(path, NULL); -} - -extern unzFile ZEXPORT unzOpen64(const void *path) -{ - return unzOpenInternal(path, NULL); -} - -extern int ZEXPORT unzClose(unzFile file) -{ - unz64_s *s; - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - - if (s->pfile_in_zip_read != NULL) - unzCloseCurrentFile(file); - - if ((s->filestream != NULL) && (s->filestream != s->filestream_with_CD)) - ZCLOSE64(s->z_filefunc, s->filestream); - if (s->filestream_with_CD != NULL) - ZCLOSE64(s->z_filefunc, s->filestream_with_CD); - - s->filestream = NULL; - s->filestream_with_CD = NULL; - TRYFREE(s); - return UNZ_OK; -} - -/* Goto to the next available disk for spanned archives */ -static int unzGoToNextDisk(unzFile file) -{ - unz64_s *s; - uint32_t number_disk_next = 0; - - s = (unz64_s*)file; - if (s == NULL) - return UNZ_PARAMERROR; - number_disk_next = s->number_disk; - - if ((s->pfile_in_zip_read != NULL) && (s->pfile_in_zip_read->rest_read_uncompressed > 0)) - /* We are currently reading a file and we need the next sequential disk */ - number_disk_next += 1; - else - /* Goto the disk for the current file */ - number_disk_next = s->cur_file_info.disk_num_start; - - if (number_disk_next != s->number_disk) - { - /* Switch disks */ - if ((s->filestream != NULL) && (s->filestream != s->filestream_with_CD)) - ZCLOSE64(s->z_filefunc, s->filestream); - - if (number_disk_next == s->gi.number_disk_with_CD) - { - s->filestream = s->filestream_with_CD; - } - else - { - s->filestream = ZOPENDISK64(s->z_filefunc, s->filestream_with_CD, number_disk_next, - ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_EXISTING); - } - - if (s->filestream == NULL) - return UNZ_ERRNO; - - s->number_disk = number_disk_next; - } - - return UNZ_OK; -} - -extern int ZEXPORT unzGetGlobalInfo(unzFile file, unz_global_info* pglobal_info32) -{ - unz64_s *s = NULL; - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - - pglobal_info32->number_entry = (uint32_t)s->gi.number_entry; - pglobal_info32->size_comment = s->gi.size_comment; - pglobal_info32->number_disk_with_CD = s->gi.number_disk_with_CD; - return UNZ_OK; -} - -extern int ZEXPORT unzGetGlobalInfo64(unzFile file, unz_global_info64 *pglobal_info) -{ - unz64_s *s = NULL; - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - *pglobal_info = s->gi; - return UNZ_OK; -} - -extern int ZEXPORT unzGetGlobalComment(unzFile file, char *comment, uint16_t comment_size) -{ - unz64_s *s = NULL; - uint16_t bytes_to_read = comment_size; - if (file == NULL) - return (int)UNZ_PARAMERROR; - s = (unz64_s*)file; - - if (bytes_to_read > s->gi.size_comment) - bytes_to_read = s->gi.size_comment; - - if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, s->central_pos + 22, ZLIB_FILEFUNC_SEEK_SET) != 0) - return UNZ_ERRNO; - - if (bytes_to_read > 0) - { - *comment = 0; - if (ZREAD64(s->z_filefunc, s->filestream_with_CD, comment, bytes_to_read) != bytes_to_read) - return UNZ_ERRNO; - } - - if ((comment != NULL) && (comment_size > s->gi.size_comment)) - *(comment + s->gi.size_comment) = 0; - - return (int)bytes_to_read; -} - -static int unzGetCurrentFileInfoField(unzFile file, uint32_t *seek, void *field, uint16_t field_size, uint16_t size_file_field, int null_terminated_field) -{ - unz64_s *s = NULL; - uint32_t bytes_to_read = 0; - int err = UNZ_OK; - - if (file == NULL) - return (int)UNZ_PARAMERROR; - s = (unz64_s*)file; - - /* Read field */ - if (field != NULL) - { - if (size_file_field < field_size) - { - if (null_terminated_field) - *((char *)field+size_file_field) = 0; - - bytes_to_read = size_file_field; - } - else - bytes_to_read = field_size; - - if (*seek != 0) - { - if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, *seek, ZLIB_FILEFUNC_SEEK_CUR) == 0) - *seek = 0; - else - err = UNZ_ERRNO; - } - - if ((size_file_field > 0) && (field_size > 0)) - { - if (ZREAD64(s->z_filefunc, s->filestream_with_CD, field, bytes_to_read) != bytes_to_read) - err = UNZ_ERRNO; - } - *seek += size_file_field - bytes_to_read; - } - else - { - *seek += size_file_field; - } - - return err; -} - -/* Get info about the current file in the zipfile, with internal only info */ -static int unzGetCurrentFileInfoInternal(unzFile file, unz_file_info64 *pfile_info, - unz_file_info64_internal *pfile_info_internal, char *filename, uint16_t filename_size, void *extrafield, - uint16_t extrafield_size, char *comment, uint16_t comment_size) -{ - unz64_s *s = NULL; - unz_file_info64 file_info; - unz_file_info64_internal file_info_internal; - uint32_t magic = 0; - uint64_t current_pos = 0; - uint32_t seek = 0; - uint32_t extra_pos = 0; - uint16_t extra_header_id = 0; - uint16_t extra_data_size = 0; - uint16_t value16 = 0; - uint32_t value32 = 0; - uint64_t value64 = 0; - int err = UNZ_OK; - - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - - if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, - s->pos_in_central_dir + s->byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) - err = UNZ_ERRNO; - - /* Check the magic */ - if (err == UNZ_OK) - { - if (unzReadUInt32(&s->z_filefunc, s->filestream_with_CD, &magic) != UNZ_OK) - err = UNZ_ERRNO; - else if (magic != CENTRALHEADERMAGIC) - err = UNZ_BADZIPFILE; - } - - /* Read central directory header */ - if (unzReadUInt16(&s->z_filefunc, s->filestream_with_CD, &file_info.version) != UNZ_OK) - err = UNZ_ERRNO; - if (unzReadUInt16(&s->z_filefunc, s->filestream_with_CD, &file_info.version_needed) != UNZ_OK) - err = UNZ_ERRNO; - if (unzReadUInt16(&s->z_filefunc, s->filestream_with_CD, &file_info.flag) != UNZ_OK) - err = UNZ_ERRNO; - if (unzReadUInt16(&s->z_filefunc, s->filestream_with_CD, &file_info.compression_method) != UNZ_OK) - err = UNZ_ERRNO; - if (unzReadUInt32(&s->z_filefunc, s->filestream_with_CD, &file_info.dos_date) != UNZ_OK) - err = UNZ_ERRNO; - if (unzReadUInt32(&s->z_filefunc, s->filestream_with_CD, &file_info.crc) != UNZ_OK) - err = UNZ_ERRNO; - if (unzReadUInt32(&s->z_filefunc, s->filestream_with_CD, &value32) != UNZ_OK) - err = UNZ_ERRNO; - file_info.compressed_size = value32; - if (unzReadUInt32(&s->z_filefunc, s->filestream_with_CD, &value32) != UNZ_OK) - err = UNZ_ERRNO; - file_info.uncompressed_size = value32; - if (unzReadUInt16(&s->z_filefunc, s->filestream_with_CD, &file_info.size_filename) != UNZ_OK) - err = UNZ_ERRNO; - if (unzReadUInt16(&s->z_filefunc, s->filestream_with_CD, &file_info.size_file_extra) != UNZ_OK) - err = UNZ_ERRNO; - if (unzReadUInt16(&s->z_filefunc, s->filestream_with_CD, &file_info.size_file_comment) != UNZ_OK) - err = UNZ_ERRNO; - if (unzReadUInt16(&s->z_filefunc, s->filestream_with_CD, &value16) != UNZ_OK) - err = UNZ_ERRNO; - file_info.disk_num_start = value16; - if (unzReadUInt16(&s->z_filefunc, s->filestream_with_CD, &file_info.internal_fa) != UNZ_OK) - err = UNZ_ERRNO; - if (unzReadUInt32(&s->z_filefunc, s->filestream_with_CD, &file_info.external_fa) != UNZ_OK) - err = UNZ_ERRNO; - /* Relative offset of local header */ - if (unzReadUInt32(&s->z_filefunc, s->filestream_with_CD, &value32) != UNZ_OK) - err = UNZ_ERRNO; - - file_info.size_file_extra_internal = 0; - file_info.disk_offset = value32; - file_info_internal.offset_curfile = value32; -#ifdef HAVE_AES - file_info_internal.aes_compression_method = 0; - file_info_internal.aes_encryption_mode = 0; - file_info_internal.aes_version = 0; -#endif - - if (err == UNZ_OK) - err = unzGetCurrentFileInfoField(file, &seek, filename, filename_size, file_info.size_filename, 1); - - /* Read extrafield */ - if (err == UNZ_OK) - err = unzGetCurrentFileInfoField(file, &seek, extrafield, extrafield_size, file_info.size_file_extra, 0); - - if ((err == UNZ_OK) && (file_info.size_file_extra != 0)) - { - if (seek != 0) - { - if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, seek, ZLIB_FILEFUNC_SEEK_CUR) == 0) - seek = 0; - else - err = UNZ_ERRNO; - } - - /* We are going to parse the extra field so we need to move back */ - current_pos = ZTELL64(s->z_filefunc, s->filestream_with_CD); - if (current_pos < file_info.size_file_extra) - err = UNZ_ERRNO; - current_pos -= file_info.size_file_extra; - if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, current_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) - err = UNZ_ERRNO; - - while ((err != UNZ_ERRNO) && (extra_pos < file_info.size_file_extra)) - { - if (unzReadUInt16(&s->z_filefunc, s->filestream_with_CD, &extra_header_id) != UNZ_OK) - err = UNZ_ERRNO; - if (unzReadUInt16(&s->z_filefunc, s->filestream_with_CD, &extra_data_size) != UNZ_OK) - err = UNZ_ERRNO; - - /* ZIP64 extra fields */ - if (extra_header_id == 0x0001) - { - /* Subtract size of ZIP64 field, since ZIP64 is handled internally */ - file_info.size_file_extra_internal += 2 + 2 + extra_data_size; - - if (file_info.uncompressed_size == UINT32_MAX) - { - if (unzReadUInt64(&s->z_filefunc, s->filestream_with_CD, &file_info.uncompressed_size) != UNZ_OK) - err = UNZ_ERRNO; - } - if (file_info.compressed_size == UINT32_MAX) - { - if (unzReadUInt64(&s->z_filefunc, s->filestream_with_CD, &file_info.compressed_size) != UNZ_OK) - err = UNZ_ERRNO; - } - if (file_info_internal.offset_curfile == UINT32_MAX) - { - /* Relative Header offset */ - if (unzReadUInt64(&s->z_filefunc, s->filestream_with_CD, &value64) != UNZ_OK) - err = UNZ_ERRNO; - file_info_internal.offset_curfile = value64; - file_info.disk_offset = value64; - } - if (file_info.disk_num_start == UINT32_MAX) - { - /* Disk Start Number */ - if (unzReadUInt32(&s->z_filefunc, s->filestream_with_CD, &file_info.disk_num_start) != UNZ_OK) - err = UNZ_ERRNO; - } - } -#ifdef HAVE_AES - /* AES header */ - else if (extra_header_id == 0x9901) - { - uint8_t value8 = 0; - - /* Subtract size of AES field, since AES is handled internally */ - file_info.size_file_extra_internal += 2 + 2 + extra_data_size; - - /* Verify version info */ - if (unzReadUInt16(&s->z_filefunc, s->filestream_with_CD, &value16) != UNZ_OK) - err = UNZ_ERRNO; - /* Support AE-1 and AE-2 */ - if (value16 != 1 && value16 != 2) - err = UNZ_ERRNO; - file_info_internal.aes_version = value16; - if (unzReadUInt8(&s->z_filefunc, s->filestream_with_CD, &value8) != UNZ_OK) - err = UNZ_ERRNO; - if ((char)value8 != 'A') - err = UNZ_ERRNO; - if (unzReadUInt8(&s->z_filefunc, s->filestream_with_CD, &value8) != UNZ_OK) - err = UNZ_ERRNO; - if ((char)value8 != 'E') - err = UNZ_ERRNO; - /* Get AES encryption strength and actual compression method */ - if (unzReadUInt8(&s->z_filefunc, s->filestream_with_CD, &value8) != UNZ_OK) - err = UNZ_ERRNO; - file_info_internal.aes_encryption_mode = value8; - if (unzReadUInt16(&s->z_filefunc, s->filestream_with_CD, &value16) != UNZ_OK) - err = UNZ_ERRNO; - file_info_internal.aes_compression_method = value16; - } -#endif - else - { - if (ZSEEK64(s->z_filefunc, s->filestream_with_CD,extra_data_size, ZLIB_FILEFUNC_SEEK_CUR) != 0) - err = UNZ_ERRNO; - } - - extra_pos += 2 + 2 + extra_data_size; - } - } - - if (file_info.disk_num_start == s->gi.number_disk_with_CD) - file_info_internal.byte_before_the_zipfile = s->byte_before_the_zipfile; - else - file_info_internal.byte_before_the_zipfile = 0; - - if (err == UNZ_OK) - err = unzGetCurrentFileInfoField(file, &seek, comment, comment_size, file_info.size_file_comment, 1); - - if ((err == UNZ_OK) && (pfile_info != NULL)) - *pfile_info = file_info; - if ((err == UNZ_OK) && (pfile_info_internal != NULL)) - *pfile_info_internal = file_info_internal; - - return err; -} - -extern int ZEXPORT unzGetCurrentFileInfo(unzFile file, unz_file_info *pfile_info, char *filename, - uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size) -{ - unz_file_info64 file_info64; - int err = UNZ_OK; - - err = unzGetCurrentFileInfoInternal(file, &file_info64, NULL, filename, filename_size, - extrafield, extrafield_size, comment, comment_size); - - if ((err == UNZ_OK) && (pfile_info != NULL)) - { - pfile_info->version = file_info64.version; - pfile_info->version_needed = file_info64.version_needed; - pfile_info->flag = file_info64.flag; - pfile_info->compression_method = file_info64.compression_method; - pfile_info->dos_date = file_info64.dos_date; - pfile_info->crc = file_info64.crc; - - pfile_info->size_filename = file_info64.size_filename; - pfile_info->size_file_extra = file_info64.size_file_extra - file_info64.size_file_extra_internal; - pfile_info->size_file_comment = file_info64.size_file_comment; - - pfile_info->disk_num_start = (uint16_t)file_info64.disk_num_start; - pfile_info->internal_fa = file_info64.internal_fa; - pfile_info->external_fa = file_info64.external_fa; - - pfile_info->compressed_size = (uint32_t)file_info64.compressed_size; - pfile_info->uncompressed_size = (uint32_t)file_info64.uncompressed_size; - } - return err; -} - -extern int ZEXPORT unzGetCurrentFileInfo64(unzFile file, unz_file_info64 * pfile_info, char *filename, - uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size) -{ - return unzGetCurrentFileInfoInternal(file, pfile_info, NULL, filename, filename_size, - extrafield, extrafield_size, comment,comment_size); -} - -/* Read the local header of the current zipfile. Check the coherency of the local header and info in the - end of central directory about this file store in *piSizeVar the size of extra info in local header - (filename and size of extra field data) */ -static int unzCheckCurrentFileCoherencyHeader(unz64_s *s, uint32_t *psize_variable, uint64_t *poffset_local_extrafield, - uint16_t *psize_local_extrafield) -{ - uint32_t magic = 0; - uint16_t value16 = 0; - uint32_t value32 = 0; - uint32_t flags = 0; - uint16_t size_filename = 0; - uint16_t size_extra_field = 0; - uint16_t compression_method = 0; - int err = UNZ_OK; - - if (psize_variable == NULL) - return UNZ_PARAMERROR; - *psize_variable = 0; - if (poffset_local_extrafield == NULL) - return UNZ_PARAMERROR; - *poffset_local_extrafield = 0; - if (psize_local_extrafield == NULL) - return UNZ_PARAMERROR; - *psize_local_extrafield = 0; - - err = unzGoToNextDisk((unzFile)s); - if (err != UNZ_OK) - return err; - - if (ZSEEK64(s->z_filefunc, s->filestream, s->cur_file_info_internal.offset_curfile + - s->cur_file_info_internal.byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) - return UNZ_ERRNO; - - if (err == UNZ_OK) - { - if (unzReadUInt32(&s->z_filefunc, s->filestream, &magic) != UNZ_OK) - err = UNZ_ERRNO; - else if (magic != LOCALHEADERMAGIC) - err = UNZ_BADZIPFILE; - } - - if (unzReadUInt16(&s->z_filefunc, s->filestream, &value16) != UNZ_OK) - err = UNZ_ERRNO; - if (unzReadUInt16(&s->z_filefunc, s->filestream, &value16) != UNZ_OK) - err = UNZ_ERRNO; - flags = value16; - if (unzReadUInt16(&s->z_filefunc, s->filestream, &value16) != UNZ_OK) - err = UNZ_ERRNO; - else if ((err == UNZ_OK) && (value16 != s->cur_file_info.compression_method)) - err = UNZ_BADZIPFILE; - - compression_method = s->cur_file_info.compression_method; -#ifdef HAVE_AES - if (compression_method == AES_METHOD) - compression_method = s->cur_file_info_internal.aes_compression_method; -#endif - - if ((err == UNZ_OK) && (compression_method != 0) && (compression_method != Z_DEFLATED)) - { -#ifdef HAVE_BZIP2 - if (compression_method != Z_BZIP2ED) -#endif - err = UNZ_BADZIPFILE; - } - - if (unzReadUInt32(&s->z_filefunc, s->filestream, &value32) != UNZ_OK) /* date/time */ - err = UNZ_ERRNO; - if (unzReadUInt32(&s->z_filefunc, s->filestream, &value32) != UNZ_OK) /* crc */ - err = UNZ_ERRNO; - else if ((err == UNZ_OK) && (value32 != s->cur_file_info.crc) && ((flags & 8) == 0)) - err = UNZ_BADZIPFILE; - if (unzReadUInt32(&s->z_filefunc, s->filestream, &value32) != UNZ_OK) /* size compr */ - err = UNZ_ERRNO; - else if ((value32 != UINT32_MAX) && (err == UNZ_OK) && (value32 != s->cur_file_info.compressed_size) && ((flags & 8) == 0)) - err = UNZ_BADZIPFILE; - if (unzReadUInt32(&s->z_filefunc, s->filestream, &value32) != UNZ_OK) /* size uncompr */ - err = UNZ_ERRNO; - else if ((value32 != UINT32_MAX) && (err == UNZ_OK) && (value32 != s->cur_file_info.uncompressed_size) && ((flags & 8) == 0)) - err = UNZ_BADZIPFILE; - if (unzReadUInt16(&s->z_filefunc, s->filestream, &size_filename) != UNZ_OK) - err = UNZ_ERRNO; - else if ((err == UNZ_OK) && (size_filename != s->cur_file_info.size_filename)) - err = UNZ_BADZIPFILE; - - *psize_variable += size_filename; - - if (unzReadUInt16(&s->z_filefunc, s->filestream, &size_extra_field) != UNZ_OK) - err = UNZ_ERRNO; - - *poffset_local_extrafield = s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + size_filename; - *psize_local_extrafield = size_extra_field; - *psize_variable += size_extra_field; - - return err; -} - -/* - Open for reading data the current file in the zipfile. - If there is no error and the file is opened, the return value is UNZ_OK. -*/ -extern int ZEXPORT unzOpenCurrentFile3(unzFile file, int *method, int *level, int raw, const char *password) -{ - unz64_s *s = NULL; - file_in_zip64_read_info_s *pfile_in_zip_read_info = NULL; - uint16_t compression_method = 0; - uint64_t offset_local_extrafield = 0; - uint16_t size_local_extrafield = 0; - uint32_t size_variable = 0; - int err = UNZ_OK; -#ifndef NOUNCRYPT - char source[12]; -#else - if (password != NULL) - return UNZ_PARAMERROR; -#endif - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - if (!s->current_file_ok) - return UNZ_PARAMERROR; - - if (s->pfile_in_zip_read != NULL) - unzCloseCurrentFile(file); - - if (unzCheckCurrentFileCoherencyHeader(s, &size_variable, &offset_local_extrafield, &size_local_extrafield) != UNZ_OK) - return UNZ_BADZIPFILE; - - pfile_in_zip_read_info = (file_in_zip64_read_info_s*)ALLOC(sizeof(file_in_zip64_read_info_s)); - if (pfile_in_zip_read_info == NULL) - return UNZ_INTERNALERROR; - - pfile_in_zip_read_info->read_buffer = (uint8_t*)ALLOC(UNZ_BUFSIZE); - pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; - pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; - pfile_in_zip_read_info->pos_local_extrafield = 0; - pfile_in_zip_read_info->raw = raw; - - if (pfile_in_zip_read_info->read_buffer == NULL) - { - TRYFREE(pfile_in_zip_read_info); - return UNZ_INTERNALERROR; - } - - pfile_in_zip_read_info->stream_initialised = 0; - - compression_method = s->cur_file_info.compression_method; -#ifdef HAVE_AES - if (compression_method == AES_METHOD) - { - compression_method = s->cur_file_info_internal.aes_compression_method; - if (password == NULL) - { - TRYFREE(pfile_in_zip_read_info); - return UNZ_PARAMERROR; - } - } -#endif - - if (method != NULL) - *method = compression_method; - - if (level != NULL) - { - *level = 6; - switch (s->cur_file_info.flag & 0x06) - { - case 6 : *level = 1; break; - case 4 : *level = 2; break; - case 2 : *level = 9; break; - } - } - - if ((compression_method != 0) && (compression_method != Z_DEFLATED)) - { -#ifdef HAVE_BZIP2 - if (compression_method != Z_BZIP2ED) -#endif - { - TRYFREE(pfile_in_zip_read_info); - return UNZ_BADZIPFILE; - } - } - - pfile_in_zip_read_info->crc32_wait = s->cur_file_info.crc; - pfile_in_zip_read_info->crc32 = 0; - pfile_in_zip_read_info->total_out_64 = 0; - pfile_in_zip_read_info->compression_method = compression_method; - pfile_in_zip_read_info->filestream = s->filestream; - pfile_in_zip_read_info->z_filefunc = s->z_filefunc; - if (s->number_disk == s->gi.number_disk_with_CD) - pfile_in_zip_read_info->byte_before_the_zipfile = s->byte_before_the_zipfile; - else - pfile_in_zip_read_info->byte_before_the_zipfile = 0; - pfile_in_zip_read_info->stream.total_out = 0; - pfile_in_zip_read_info->stream.total_in = 0; - pfile_in_zip_read_info->stream.next_in = NULL; - - if (!raw) - { - if (compression_method == Z_BZIP2ED) - { -#ifdef HAVE_BZIP2 - pfile_in_zip_read_info->bstream.bzalloc = (void *(*) (void *, int, int))0; - pfile_in_zip_read_info->bstream.bzfree = (free_func)0; - pfile_in_zip_read_info->bstream.opaque = (voidpf)0; - pfile_in_zip_read_info->bstream.state = (voidpf)0; - - pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; - pfile_in_zip_read_info->stream.zfree = (free_func)0; - pfile_in_zip_read_info->stream.opaque = (voidpf)0; - pfile_in_zip_read_info->stream.next_in = (voidpf)0; - pfile_in_zip_read_info->stream.avail_in = 0; - - err = BZ2_bzDecompressInit(&pfile_in_zip_read_info->bstream, 0, 0); - if (err == Z_OK) - { - pfile_in_zip_read_info->stream_initialised = Z_BZIP2ED; - } - else - { - TRYFREE(pfile_in_zip_read_info); - return err; - } -#else - pfile_in_zip_read_info->raw = 1; -#endif - } - else if (compression_method == Z_DEFLATED) - { - pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; - pfile_in_zip_read_info->stream.zfree = (free_func)0; - pfile_in_zip_read_info->stream.opaque = (voidpf)s; - pfile_in_zip_read_info->stream.next_in = 0; - pfile_in_zip_read_info->stream.avail_in = 0; - -#ifdef HAVE_APPLE_COMPRESSION - err = compression_stream_init(&pfile_in_zip_read_info->astream, COMPRESSION_STREAM_DECODE, COMPRESSION_ZLIB); - if (err == COMPRESSION_STATUS_ERROR) - err = UNZ_INTERNALERROR; - else - err = Z_OK; -#else - err = inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); -#endif - if (err == Z_OK) - { - pfile_in_zip_read_info->stream_initialised = Z_DEFLATED; - } - else - { - TRYFREE(pfile_in_zip_read_info); - return err; - } - /* windowBits is passed < 0 to tell that there is no zlib header. - * Note that in this case inflate *requires* an extra "dummy" byte - * after the compressed stream in order to complete decompression and - * return Z_STREAM_END. - * In unzip, i don't wait absolutely Z_STREAM_END because I known the - * size of both compressed and uncompressed data - */ - } - } - - pfile_in_zip_read_info->rest_read_compressed = s->cur_file_info.compressed_size; - pfile_in_zip_read_info->rest_read_uncompressed = s->cur_file_info.uncompressed_size; - pfile_in_zip_read_info->pos_in_zipfile = s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + size_variable; - pfile_in_zip_read_info->stream.avail_in = 0; - - s->pfile_in_zip_read = pfile_in_zip_read_info; - -#ifndef NOUNCRYPT - s->pcrc_32_tab = NULL; - - if ((password != NULL) && ((s->cur_file_info.flag & 1) != 0)) - { - if (ZSEEK64(s->z_filefunc, s->filestream, - s->pfile_in_zip_read->pos_in_zipfile + s->pfile_in_zip_read->byte_before_the_zipfile, - ZLIB_FILEFUNC_SEEK_SET) != 0) - return UNZ_INTERNALERROR; -#ifdef HAVE_AES - if (s->cur_file_info.compression_method == AES_METHOD) - { - unsigned char passverify_archive[AES_PWVERIFYSIZE]; - unsigned char passverify_password[AES_PWVERIFYSIZE]; - unsigned char salt_value[AES_MAXSALTLENGTH]; - uint32_t salt_length = 0; - - if ((s->cur_file_info_internal.aes_encryption_mode < 1) || - (s->cur_file_info_internal.aes_encryption_mode > 3)) - return UNZ_INTERNALERROR; - - salt_length = SALT_LENGTH(s->cur_file_info_internal.aes_encryption_mode); - - if (ZREAD64(s->z_filefunc, s->filestream, salt_value, salt_length) != salt_length) - return UNZ_INTERNALERROR; - if (ZREAD64(s->z_filefunc, s->filestream, passverify_archive, AES_PWVERIFYSIZE) != AES_PWVERIFYSIZE) - return UNZ_INTERNALERROR; - - fcrypt_init(s->cur_file_info_internal.aes_encryption_mode, (uint8_t *)password, - (uint32_t)strlen(password), salt_value, passverify_password, &s->pfile_in_zip_read->aes_ctx); - - if (memcmp(passverify_archive, passverify_password, AES_PWVERIFYSIZE) != 0) - return UNZ_BADPASSWORD; - - s->pfile_in_zip_read->rest_read_compressed -= salt_length + AES_PWVERIFYSIZE; - s->pfile_in_zip_read->rest_read_compressed -= AES_AUTHCODESIZE; - - s->pfile_in_zip_read->pos_in_zipfile += salt_length + AES_PWVERIFYSIZE; - } - else -#endif - { - int i; - s->pcrc_32_tab = (const z_crc_t*)get_crc_table(); - init_keys(password, s->keys, s->pcrc_32_tab); - - if (ZREAD64(s->z_filefunc, s->filestream, source, 12) < 12) - return UNZ_INTERNALERROR; - - for (i = 0; i < 12; i++) - zdecode(s->keys, s->pcrc_32_tab, source[i]); - - s->pfile_in_zip_read->rest_read_compressed -= 12; - s->pfile_in_zip_read->pos_in_zipfile += 12; - } - } -#endif - - return UNZ_OK; -} - -extern int ZEXPORT unzOpenCurrentFile(unzFile file) -{ - return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL); -} - -extern int ZEXPORT unzOpenCurrentFilePassword(unzFile file, const char *password) -{ - return unzOpenCurrentFile3(file, NULL, NULL, 0, password); -} - -extern int ZEXPORT unzOpenCurrentFile2(unzFile file, int *method, int *level, int raw) -{ - return unzOpenCurrentFile3(file, method, level, raw, NULL); -} - -/* Read bytes from the current file. - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if some bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error (UNZ_ERRNO for IO error, or zLib error for uncompress error) */ -extern int ZEXPORT unzReadCurrentFile(unzFile file, voidp buf, uint32_t len) -{ - unz64_s *s = NULL; - uint32_t read = 0; - int err = UNZ_OK; - - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - - if (s->pfile_in_zip_read == NULL) - return UNZ_PARAMERROR; - if (s->pfile_in_zip_read->read_buffer == NULL) - return UNZ_END_OF_LIST_OF_FILE; - if (len == 0) - return 0; - if (len > UINT16_MAX) - return UNZ_PARAMERROR; - - s->pfile_in_zip_read->stream.next_out = (uint8_t*)buf; - s->pfile_in_zip_read->stream.avail_out = (uint16_t)len; - - if (s->pfile_in_zip_read->raw) - { - if (len > s->pfile_in_zip_read->rest_read_compressed + s->pfile_in_zip_read->stream.avail_in) - s->pfile_in_zip_read->stream.avail_out = (uint16_t)s->pfile_in_zip_read->rest_read_compressed + - s->pfile_in_zip_read->stream.avail_in; - } - else - { - if (len > s->pfile_in_zip_read->rest_read_uncompressed) - s->pfile_in_zip_read->stream.avail_out = (uint16_t)s->pfile_in_zip_read->rest_read_uncompressed; - } - - while (s->pfile_in_zip_read->stream.avail_out > 0) - { - if (s->pfile_in_zip_read->stream.avail_in == 0) - { - uint32_t bytes_to_read = UNZ_BUFSIZE; - uint32_t bytes_not_read = 0; - uint32_t bytes_read = 0; - uint32_t total_bytes_read = 0; - - if (s->pfile_in_zip_read->stream.next_in != NULL) - bytes_not_read = (uint32_t)(s->pfile_in_zip_read->read_buffer + UNZ_BUFSIZE - - s->pfile_in_zip_read->stream.next_in); - bytes_to_read -= bytes_not_read; - if (bytes_not_read > 0) - memcpy(s->pfile_in_zip_read->read_buffer, s->pfile_in_zip_read->stream.next_in, bytes_not_read); - if (s->pfile_in_zip_read->rest_read_compressed < bytes_to_read) - bytes_to_read = (uint16_t)s->pfile_in_zip_read->rest_read_compressed; - - while (total_bytes_read != bytes_to_read) - { - if (ZSEEK64(s->pfile_in_zip_read->z_filefunc, s->pfile_in_zip_read->filestream, - s->pfile_in_zip_read->pos_in_zipfile + s->pfile_in_zip_read->byte_before_the_zipfile, - ZLIB_FILEFUNC_SEEK_SET) != 0) - return UNZ_ERRNO; - - bytes_read = ZREAD64(s->pfile_in_zip_read->z_filefunc, s->pfile_in_zip_read->filestream, - s->pfile_in_zip_read->read_buffer + bytes_not_read + total_bytes_read, - bytes_to_read - total_bytes_read); - - total_bytes_read += bytes_read; - s->pfile_in_zip_read->pos_in_zipfile += bytes_read; - - if (bytes_read == 0) - { - if (ZERROR64(s->pfile_in_zip_read->z_filefunc, s->pfile_in_zip_read->filestream)) - return UNZ_ERRNO; - - err = unzGoToNextDisk(file); - if (err != UNZ_OK) - return err; - - s->pfile_in_zip_read->pos_in_zipfile = 0; - s->pfile_in_zip_read->filestream = s->filestream; - } - } - -#ifndef NOUNCRYPT - if ((s->cur_file_info.flag & 1) != 0) - { -#ifdef HAVE_AES - if (s->cur_file_info.compression_method == AES_METHOD) - { - fcrypt_decrypt(s->pfile_in_zip_read->read_buffer, bytes_to_read, &s->pfile_in_zip_read->aes_ctx); - } - else -#endif - if (s->pcrc_32_tab != NULL) - { - uint32_t i = 0; - - for (i = 0; i < total_bytes_read; i++) - s->pfile_in_zip_read->read_buffer[i] = - zdecode(s->keys, s->pcrc_32_tab, s->pfile_in_zip_read->read_buffer[i]); - } - } -#endif - - s->pfile_in_zip_read->rest_read_compressed -= total_bytes_read; - s->pfile_in_zip_read->stream.next_in = (uint8_t*)s->pfile_in_zip_read->read_buffer; - s->pfile_in_zip_read->stream.avail_in = (uint16_t)(bytes_not_read + total_bytes_read); - } - - if ((s->pfile_in_zip_read->compression_method == 0) || (s->pfile_in_zip_read->raw)) - { - uint32_t i = 0; - uint32_t copy = 0; - - if ((s->pfile_in_zip_read->stream.avail_in == 0) && - (s->pfile_in_zip_read->rest_read_compressed == 0)) - return (read == 0) ? UNZ_EOF : read; - - if (s->pfile_in_zip_read->stream.avail_out < s->pfile_in_zip_read->stream.avail_in) - copy = s->pfile_in_zip_read->stream.avail_out; - else - copy = s->pfile_in_zip_read->stream.avail_in; - - for (i = 0; i < copy; i++) - *(s->pfile_in_zip_read->stream.next_out + i) = - *(s->pfile_in_zip_read->stream.next_in + i); - - s->pfile_in_zip_read->total_out_64 = s->pfile_in_zip_read->total_out_64 + copy; - s->pfile_in_zip_read->rest_read_uncompressed -= copy; - s->pfile_in_zip_read->crc32 = (uint32_t)crc32(s->pfile_in_zip_read->crc32, - s->pfile_in_zip_read->stream.next_out, copy); - - s->pfile_in_zip_read->stream.avail_in -= copy; - s->pfile_in_zip_read->stream.avail_out -= copy; - s->pfile_in_zip_read->stream.next_out += copy; - s->pfile_in_zip_read->stream.next_in += copy; - s->pfile_in_zip_read->stream.total_out += copy; - - read += copy; - } - else if (s->pfile_in_zip_read->compression_method == Z_BZIP2ED) - { -#ifdef HAVE_BZIP2 - uint64_t total_out_before = 0; - uint64_t total_out_after = 0; - uint64_t out_bytes = 0; - const uint8_t *buf_before = NULL; - - s->pfile_in_zip_read->bstream.next_in = (char*)s->pfile_in_zip_read->stream.next_in; - s->pfile_in_zip_read->bstream.avail_in = s->pfile_in_zip_read->stream.avail_in; - s->pfile_in_zip_read->bstream.total_in_lo32 = (uint32_t)s->pfile_in_zip_read->stream.total_in; - s->pfile_in_zip_read->bstream.total_in_hi32 = s->pfile_in_zip_read->stream.total_in >> 32; - - s->pfile_in_zip_read->bstream.next_out = (char*)s->pfile_in_zip_read->stream.next_out; - s->pfile_in_zip_read->bstream.avail_out = s->pfile_in_zip_read->stream.avail_out; - s->pfile_in_zip_read->bstream.total_out_lo32 = (uint32_t)s->pfile_in_zip_read->stream.total_out; - s->pfile_in_zip_read->bstream.total_out_hi32 = s->pfile_in_zip_read->stream.total_out >> 32; - - total_out_before = s->pfile_in_zip_read->bstream.total_out_lo32 + - (((uint32_t)s->pfile_in_zip_read->bstream.total_out_hi32) << 32); - buf_before = (const uint8_t*)s->pfile_in_zip_read->bstream.next_out; - - err = BZ2_bzDecompress(&s->pfile_in_zip_read->bstream); - - total_out_after = s->pfile_in_zip_read->bstream.total_out_lo32 + - (((uint32_t)s->pfile_in_zip_read->bstream.total_out_hi32) << 32); - - out_bytes = total_out_after - total_out_before; - - s->pfile_in_zip_read->total_out_64 = s->pfile_in_zip_read->total_out_64 + out_bytes; - s->pfile_in_zip_read->rest_read_uncompressed -= out_bytes; - s->pfile_in_zip_read->crc32 = crc32(s->pfile_in_zip_read->crc32, buf_before, (uint32_t)out_bytes); - - read += (uint32_t)out_bytes; - - s->pfile_in_zip_read->stream.next_in = (uint8_t*)s->pfile_in_zip_read->bstream.next_in; - s->pfile_in_zip_read->stream.avail_in = s->pfile_in_zip_read->bstream.avail_in; - s->pfile_in_zip_read->stream.total_in = s->pfile_in_zip_read->bstream.total_in_lo32; - s->pfile_in_zip_read->stream.next_out = (uint8_t*)s->pfile_in_zip_read->bstream.next_out; - s->pfile_in_zip_read->stream.avail_out = s->pfile_in_zip_read->bstream.avail_out; - s->pfile_in_zip_read->stream.total_out = s->pfile_in_zip_read->bstream.total_out_lo32; - - if (err == BZ_STREAM_END) - return (read == 0) ? UNZ_EOF : read; - if (err != BZ_OK) - break; -#endif - } -#ifdef HAVE_APPLE_COMPRESSION - else - { - uint64_t total_out_before = 0; - uint64_t total_out_after = 0; - uint64_t out_bytes = 0; - const uint8_t *buf_before = NULL; - - s->pfile_in_zip_read->astream.src_ptr = s->pfile_in_zip_read->stream.next_in; - s->pfile_in_zip_read->astream.src_size = s->pfile_in_zip_read->stream.avail_in; - s->pfile_in_zip_read->astream.dst_ptr = s->pfile_in_zip_read->stream.next_out; - s->pfile_in_zip_read->astream.dst_size = len; - - total_out_before = s->pfile_in_zip_read->stream.total_out; - buf_before = s->pfile_in_zip_read->stream.next_out; - - compression_status status; - compression_stream_flags flags; - - if (s->pfile_in_zip_read->stream.avail_in == 0) - { - flags = COMPRESSION_STREAM_FINALIZE; - } - - status = compression_stream_process(&s->pfile_in_zip_read->astream, flags); - - total_out_after = len - s->pfile_in_zip_read->astream.dst_size; - out_bytes = total_out_after - total_out_before; - - s->pfile_in_zip_read->total_out_64 += out_bytes; - s->pfile_in_zip_read->rest_read_uncompressed -= out_bytes; - s->pfile_in_zip_read->crc32 = - crc32(s->pfile_in_zip_read->crc32, buf_before, (uint32_t)out_bytes); - - read += (uint32_t)out_bytes; - - s->pfile_in_zip_read->stream.next_in = s->pfile_in_zip_read->astream.src_ptr; - s->pfile_in_zip_read->stream.avail_in = s->pfile_in_zip_read->astream.src_size; - s->pfile_in_zip_read->stream.next_out = s->pfile_in_zip_read->astream.dst_ptr; - s->pfile_in_zip_read->stream.avail_out = s->pfile_in_zip_read->astream.dst_size; - - if (status == COMPRESSION_STATUS_END) - return (read == 0) ? UNZ_EOF : read; - if (status == COMPRESSION_STATUS_ERROR) - return Z_DATA_ERROR; - return read; - } -#else - else - { - - uint64_t total_out_before = 0; - uint64_t total_out_after = 0; - uint64_t out_bytes = 0; - const uint8_t *buf_before = NULL; - int flush = Z_SYNC_FLUSH; - - total_out_before = s->pfile_in_zip_read->stream.total_out; - buf_before = s->pfile_in_zip_read->stream.next_out; - - /* - if ((pfile_in_zip_read_info->rest_read_uncompressed == - pfile_in_zip_read_info->stream.avail_out) && - (pfile_in_zip_read_info->rest_read_compressed == 0)) - flush = Z_FINISH; - */ - err = inflate(&s->pfile_in_zip_read->stream, flush); - - if ((err >= 0) && (s->pfile_in_zip_read->stream.msg != NULL)) - err = Z_DATA_ERROR; - - total_out_after = s->pfile_in_zip_read->stream.total_out; - out_bytes = total_out_after - total_out_before; - - s->pfile_in_zip_read->total_out_64 += out_bytes; - s->pfile_in_zip_read->rest_read_uncompressed -= out_bytes; - s->pfile_in_zip_read->crc32 = - (uint32_t)crc32(s->pfile_in_zip_read->crc32,buf_before, (uint32_t)out_bytes); - - read += (uint32_t)out_bytes; - - if (err == Z_STREAM_END) - return (read == 0) ? UNZ_EOF : read; - if (err != Z_OK) - break; - } -#endif - } - - if (err == Z_OK) - return read; - return err; -} - -extern int ZEXPORT unzGetLocalExtrafield(unzFile file, voidp buf, uint32_t len) -{ - unz64_s *s = NULL; - uint64_t size_to_read = 0; - uint32_t read_now = 0; - - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - if (s->pfile_in_zip_read == NULL) - return UNZ_PARAMERROR; - - size_to_read = s->pfile_in_zip_read->size_local_extrafield - s->pfile_in_zip_read->pos_local_extrafield; - - if (buf == NULL) - return (int)size_to_read; - - if (len > size_to_read) - read_now = (uint32_t)size_to_read; - else - read_now = len; - - if (read_now == 0) - return 0; - - if (ZSEEK64(s->pfile_in_zip_read->z_filefunc, s->pfile_in_zip_read->filestream, - s->pfile_in_zip_read->offset_local_extrafield + s->pfile_in_zip_read->pos_local_extrafield, - ZLIB_FILEFUNC_SEEK_SET) != 0) - return UNZ_ERRNO; - - if (ZREAD64(s->pfile_in_zip_read->z_filefunc, s->pfile_in_zip_read->filestream, buf, read_now) != read_now) - return UNZ_ERRNO; - - return (int)read_now; -} - -extern int ZEXPORT unzCloseCurrentFile(unzFile file) -{ - unz64_s *s = NULL; - file_in_zip64_read_info_s *pfile_in_zip_read_info = NULL; - int err = UNZ_OK; - - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - pfile_in_zip_read_info = s->pfile_in_zip_read; - if (pfile_in_zip_read_info == NULL) - return UNZ_PARAMERROR; - -#ifdef HAVE_AES - if (s->cur_file_info.compression_method == AES_METHOD) - { - unsigned char authcode[AES_AUTHCODESIZE]; - unsigned char rauthcode[AES_AUTHCODESIZE]; - - if (ZREAD64(s->z_filefunc, s->filestream, authcode, AES_AUTHCODESIZE) != AES_AUTHCODESIZE) - return UNZ_ERRNO; - - if (fcrypt_end(rauthcode, &s->pfile_in_zip_read->aes_ctx) != AES_AUTHCODESIZE) - err = UNZ_CRCERROR; - if (memcmp(authcode, rauthcode, AES_AUTHCODESIZE) != 0) - err = UNZ_CRCERROR; - } - /* AES zip version AE-1 will expect a valid crc as well */ - if ((s->cur_file_info.compression_method != AES_METHOD) || - (s->cur_file_info_internal.aes_version == 0x0001)) -#endif - { - if ((pfile_in_zip_read_info->rest_read_uncompressed == 0) && - (!pfile_in_zip_read_info->raw)) - { - if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) - err = UNZ_CRCERROR; - } - } - - TRYFREE(pfile_in_zip_read_info->read_buffer); - pfile_in_zip_read_info->read_buffer = NULL; - if (pfile_in_zip_read_info->stream_initialised == Z_DEFLATED) - { -#ifdef HAVE_APPLE_COMPRESSION - if (compression_stream_destroy) - compression_stream_destroy(&pfile_in_zip_read_info->astream); -#else - inflateEnd(&pfile_in_zip_read_info->stream); -#endif - - } -#ifdef HAVE_BZIP2 - else if (pfile_in_zip_read_info->stream_initialised == Z_BZIP2ED) - BZ2_bzDecompressEnd(&pfile_in_zip_read_info->bstream); -#endif - - pfile_in_zip_read_info->stream_initialised = 0; - TRYFREE(pfile_in_zip_read_info); - - s->pfile_in_zip_read = NULL; - - return err; -} - -extern int ZEXPORT unzGoToFirstFile2(unzFile file, unz_file_info64 *pfile_info, char *filename, - uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size) -{ - unz64_s *s = NULL; - int err = UNZ_OK; - - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - - s->pos_in_central_dir = s->offset_central_dir; - s->num_file = 0; - - err = unzGetCurrentFileInfoInternal(file, &s->cur_file_info, &s->cur_file_info_internal, - filename, filename_size, extrafield, extrafield_size, comment,comment_size); - - s->current_file_ok = (err == UNZ_OK); - if ((err == UNZ_OK) && (pfile_info != NULL)) - memcpy(pfile_info, &s->cur_file_info, sizeof(unz_file_info64)); - - return err; -} - -extern int ZEXPORT unzGoToFirstFile(unzFile file) -{ - return unzGoToFirstFile2(file, NULL, NULL, 0, NULL, 0, NULL, 0); -} - -extern int ZEXPORT unzGoToNextFile2(unzFile file, unz_file_info64 *pfile_info, char *filename, - uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size) -{ - unz64_s *s = NULL; - int err = UNZ_OK; - - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - if (s->gi.number_entry != UINT16_MAX) /* 2^16 files overflow hack */ - { - if (s->num_file+1 == s->gi.number_entry) - return UNZ_END_OF_LIST_OF_FILE; - } - - s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + - s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment; - s->num_file += 1; - - err = unzGetCurrentFileInfoInternal(file, &s->cur_file_info, &s->cur_file_info_internal, - filename, filename_size, extrafield,extrafield_size, comment, comment_size); - - s->current_file_ok = (err == UNZ_OK); - if ((err == UNZ_OK) && (pfile_info != NULL)) - memcpy(pfile_info, &s->cur_file_info, sizeof(unz_file_info64)); - - return err; -} - -extern int ZEXPORT unzGoToNextFile(unzFile file) -{ - return unzGoToNextFile2(file, NULL, NULL, 0, NULL, 0, NULL, 0); -} - -extern int ZEXPORT unzLocateFile(unzFile file, const char *filename, unzFileNameComparer filename_compare_func) -{ - unz64_s *s = NULL; - unz_file_info64 cur_file_info_saved; - unz_file_info64_internal cur_file_info_internal_saved; - uint64_t num_file_saved = 0; - uint64_t pos_in_central_dir_saved = 0; - char current_filename[UNZ_MAXFILENAMEINZIP+1]; - int err = UNZ_OK; - - if (file == NULL) - return UNZ_PARAMERROR; - if (strlen(filename) >= UNZ_MAXFILENAMEINZIP) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - /* Save the current state */ - num_file_saved = s->num_file; - pos_in_central_dir_saved = s->pos_in_central_dir; - cur_file_info_saved = s->cur_file_info; - cur_file_info_internal_saved = s->cur_file_info_internal; - - err = unzGoToFirstFile2(file, NULL, current_filename, sizeof(current_filename)-1, NULL, 0, NULL, 0); - - while (err == UNZ_OK) - { - if (filename_compare_func != NULL) - err = filename_compare_func(file, current_filename, filename); - else - err = strcmp(current_filename, filename); - if (err == 0) - return UNZ_OK; - err = unzGoToNextFile2(file, NULL, current_filename, sizeof(current_filename)-1, NULL, 0, NULL, 0); - } - - /* We failed, so restore the state of the 'current file' to where we were. */ - s->num_file = num_file_saved; - s->pos_in_central_dir = pos_in_central_dir_saved; - s->cur_file_info = cur_file_info_saved; - s->cur_file_info_internal = cur_file_info_internal_saved; - return err; -} - -extern int ZEXPORT unzGetFilePos(unzFile file, unz_file_pos *file_pos) -{ - unz64_file_pos file_pos64; - int err = unzGetFilePos64(file, &file_pos64); - if (err == UNZ_OK) - { - file_pos->pos_in_zip_directory = (uint32_t)file_pos64.pos_in_zip_directory; - file_pos->num_of_file = (uint32_t)file_pos64.num_of_file; - } - return err; -} - -extern int ZEXPORT unzGoToFilePos(unzFile file, unz_file_pos *file_pos) -{ - unz64_file_pos file_pos64; - if (file_pos == NULL) - return UNZ_PARAMERROR; - file_pos64.pos_in_zip_directory = file_pos->pos_in_zip_directory; - file_pos64.num_of_file = file_pos->num_of_file; - return unzGoToFilePos64(file, &file_pos64); -} - -extern int ZEXPORT unzGetFilePos64(unzFile file, unz64_file_pos *file_pos) -{ - unz64_s *s = NULL; - - if (file == NULL || file_pos == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - file_pos->pos_in_zip_directory = s->pos_in_central_dir; - file_pos->num_of_file = s->num_file; - return UNZ_OK; -} - -extern int ZEXPORT unzGoToFilePos64(unzFile file, const unz64_file_pos *file_pos) -{ - unz64_s *s = NULL; - int err = UNZ_OK; - - if (file == NULL || file_pos == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - - /* Jump to the right spot */ - s->pos_in_central_dir = file_pos->pos_in_zip_directory; - s->num_file = file_pos->num_of_file; - - /* Set the current file */ - err = unzGetCurrentFileInfoInternal(file, &s->cur_file_info, &s->cur_file_info_internal, NULL, 0, NULL, 0, NULL, 0); - /* Return results */ - s->current_file_ok = (err == UNZ_OK); - return err; -} - -extern int32_t ZEXPORT unzGetOffset(unzFile file) -{ - uint64_t offset64 = 0; - - if (file == NULL) - return UNZ_PARAMERROR; - offset64 = unzGetOffset64(file); - return (int32_t)offset64; -} - -extern int64_t ZEXPORT unzGetOffset64(unzFile file) -{ - unz64_s *s = NULL; - - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - if (!s->current_file_ok) - return 0; - if (s->gi.number_entry != 0 && s->gi.number_entry != UINT16_MAX) - { - if (s->num_file == s->gi.number_entry) - return 0; - } - return s->pos_in_central_dir; -} - -extern int ZEXPORT unzSetOffset(unzFile file, uint32_t pos) -{ - return unzSetOffset64(file, pos); -} - -extern int ZEXPORT unzSetOffset64(unzFile file, uint64_t pos) -{ - unz64_s *s = NULL; - int err = UNZ_OK; - - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - s->pos_in_central_dir = pos; - s->num_file = s->gi.number_entry; /* hack */ - - err = unzGetCurrentFileInfoInternal(file, &s->cur_file_info, &s->cur_file_info_internal, NULL, 0, NULL, 0, NULL, 0); - - s->current_file_ok = (err == UNZ_OK); - return err; -} - -extern int32_t ZEXPORT unzTell(unzFile file) -{ - unz64_s *s = NULL; - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - if (s->pfile_in_zip_read == NULL) - return UNZ_PARAMERROR; - return (int32_t)s->pfile_in_zip_read->stream.total_out; -} - -extern int64_t ZEXPORT unzTell64(unzFile file) -{ - unz64_s *s = NULL; - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - if (s->pfile_in_zip_read == NULL) - return UNZ_PARAMERROR; - return s->pfile_in_zip_read->total_out_64; -} - -extern int ZEXPORT unzSeek(unzFile file, uint32_t offset, int origin) -{ - return unzSeek64(file, offset, origin); -} - -extern int ZEXPORT unzSeek64(unzFile file, uint64_t offset, int origin) -{ - unz64_s *s = NULL; - uint64_t stream_pos_begin = 0; - uint64_t stream_pos_end = 0; - uint64_t position = 0; - int is_within_buffer = 0; - - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - - if (s->pfile_in_zip_read == NULL) - return UNZ_ERRNO; - if (s->pfile_in_zip_read->compression_method != 0) - return UNZ_ERRNO; - - if (origin == SEEK_SET) - position = offset; - else if (origin == SEEK_CUR) - position = s->pfile_in_zip_read->total_out_64 + offset; - else if (origin == SEEK_END) - position = s->cur_file_info.compressed_size + offset; - else - return UNZ_PARAMERROR; - - if (position > s->cur_file_info.compressed_size) - return UNZ_PARAMERROR; - - stream_pos_end = s->pfile_in_zip_read->pos_in_zipfile; - stream_pos_begin = stream_pos_end; - - if (stream_pos_begin > UNZ_BUFSIZE) - stream_pos_begin -= UNZ_BUFSIZE; - else - stream_pos_begin = 0; - - is_within_buffer = - (s->pfile_in_zip_read->stream.avail_in != 0) && - (s->pfile_in_zip_read->rest_read_compressed != 0 || s->cur_file_info.compressed_size < UNZ_BUFSIZE) && - (position >= stream_pos_begin && position < stream_pos_end); - - if (is_within_buffer) - { - s->pfile_in_zip_read->stream.next_in += position - s->pfile_in_zip_read->total_out_64; - s->pfile_in_zip_read->stream.avail_in = (uInt)(stream_pos_end - position); - } - else - { - s->pfile_in_zip_read->stream.avail_in = 0; - s->pfile_in_zip_read->stream.next_in = 0; - - s->pfile_in_zip_read->pos_in_zipfile = s->pfile_in_zip_read->offset_local_extrafield + position; - s->pfile_in_zip_read->rest_read_compressed = s->cur_file_info.compressed_size - position; - } - - s->pfile_in_zip_read->rest_read_uncompressed -= (position - s->pfile_in_zip_read->total_out_64); - s->pfile_in_zip_read->stream.total_out = (uint32_t)position; - s->pfile_in_zip_read->total_out_64 = position; - - return UNZ_OK; -} - -extern int ZEXPORT unzEndOfFile(unzFile file) -{ - unz64_s *s = NULL; - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - if (s->pfile_in_zip_read == NULL) - return UNZ_PARAMERROR; - if (s->pfile_in_zip_read->rest_read_uncompressed == 0) - return 1; - return 0; -} diff --git a/Externals/minizip/unzip.h b/Externals/minizip/unzip.h index ea4c90a4ddcd..61cbd974e31f 100644 --- a/Externals/minizip/unzip.h +++ b/Externals/minizip/unzip.h @@ -1,306 +1,13 @@ -/* unzip.h -- IO for uncompress .zip files using zlib - Version 1.1, February 14h, 2010 - part of the MiniZip project - - Copyright (C) 1998-2010 Gilles Vollant - http://www.winimage.com/zLibDll/minizip.html - Modifications of Unzip for Zip64 - Copyright (C) 2007-2008 Even Rouault - Modifications for Zip64 support on both zip and unzip - Copyright (C) 2009-2010 Mathias Svensson - http://result42.com +/* unzip.h -- Compatibility layer shim + part of the minizip-ng project This program is distributed under the terms of the same license as zlib. See the accompanying LICENSE file for the full text of the license. */ -#ifndef _UNZ_H -#define _UNZ_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#ifndef _ZLIBIOAPI_H -#include "ioapi.h" -#endif +#ifndef MZ_COMPAT_UNZIP +#define MZ_COMPAT_UNZIP -#ifdef HAVE_BZIP2 -#include "bzlib.h" -#endif +#include "mz_compat.h" -#define Z_BZIP2ED 12 - -#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) -/* like the STRICT of WIN32, we define a pointer that cannot be converted - from (void*) without cast */ -typedef struct TagunzFile__ { int unused; } unz_file__; -typedef unz_file__ *unzFile; -#else -typedef voidp unzFile; #endif - -#define UNZ_OK (0) -#define UNZ_END_OF_LIST_OF_FILE (-100) -#define UNZ_ERRNO (Z_ERRNO) -#define UNZ_EOF (0) -#define UNZ_PARAMERROR (-102) -#define UNZ_BADZIPFILE (-103) -#define UNZ_INTERNALERROR (-104) -#define UNZ_CRCERROR (-105) -#define UNZ_BADPASSWORD (-106) - -/* unz_global_info structure contain global data about the ZIPfile - These data comes from the end of central dir */ -typedef struct unz_global_info64_s -{ - uint64_t number_entry; /* total number of entries in the central dir on this disk */ - uint32_t number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP*/ - uint16_t size_comment; /* size of the global comment of the zipfile */ -} unz_global_info64; - -typedef struct unz_global_info_s -{ - uint32_t number_entry; /* total number of entries in the central dir on this disk */ - uint32_t number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP*/ - uint16_t size_comment; /* size of the global comment of the zipfile */ -} unz_global_info; - -/* unz_file_info contain information about a file in the zipfile */ -typedef struct unz_file_info64_s -{ - uint16_t version; /* version made by 2 bytes */ - uint16_t version_needed; /* version needed to extract 2 bytes */ - uint16_t flag; /* general purpose bit flag 2 bytes */ - uint16_t compression_method; /* compression method 2 bytes */ - uint32_t dos_date; /* last mod file date in Dos fmt 4 bytes */ - uint32_t crc; /* crc-32 4 bytes */ - uint64_t compressed_size; /* compressed size 8 bytes */ - uint64_t uncompressed_size; /* uncompressed size 8 bytes */ - uint16_t size_filename; /* filename length 2 bytes */ - uint16_t size_file_extra; /* extra field length 2 bytes */ - uint16_t size_file_comment; /* file comment length 2 bytes */ - - uint32_t disk_num_start; /* disk number start 4 bytes */ - uint16_t internal_fa; /* internal file attributes 2 bytes */ - uint32_t external_fa; /* external file attributes 4 bytes */ - - uint64_t disk_offset; - - uint16_t size_file_extra_internal; -} unz_file_info64; - -typedef struct unz_file_info_s -{ - uint16_t version; /* version made by 2 bytes */ - uint16_t version_needed; /* version needed to extract 2 bytes */ - uint16_t flag; /* general purpose bit flag 2 bytes */ - uint16_t compression_method; /* compression method 2 bytes */ - uint32_t dos_date; /* last mod file date in Dos fmt 4 bytes */ - uint32_t crc; /* crc-32 4 bytes */ - uint32_t compressed_size; /* compressed size 4 bytes */ - uint32_t uncompressed_size; /* uncompressed size 4 bytes */ - uint16_t size_filename; /* filename length 2 bytes */ - uint16_t size_file_extra; /* extra field length 2 bytes */ - uint16_t size_file_comment; /* file comment length 2 bytes */ - - uint16_t disk_num_start; /* disk number start 2 bytes */ - uint16_t internal_fa; /* internal file attributes 2 bytes */ - uint32_t external_fa; /* external file attributes 4 bytes */ - - uint64_t disk_offset; -} unz_file_info; - -/***************************************************************************/ -/* Opening and close a zip file */ - -extern unzFile ZEXPORT unzOpen(const char *path); -extern unzFile ZEXPORT unzOpen64(const void *path); -/* Open a Zip file. - - path should contain the full path (by example, on a Windows XP computer - "c:\\zlib\\zlib113.zip" or on an Unix computer "zlib/zlib113.zip". - return NULL if zipfile cannot be opened or doesn't exist - return unzFile handle if no error - - NOTE: The "64" function take a const void *pointer, because the path is just the value passed to the - open64_file_func callback. Under Windows, if UNICODE is defined, using fill_fopen64_filefunc, the path - is a pointer to a wide unicode string (LPCTSTR is LPCWSTR), so const char *does not describe the reality */ - -extern unzFile ZEXPORT unzOpen2(const char *path, zlib_filefunc_def *pzlib_filefunc_def); -/* Open a Zip file, like unzOpen, but provide a set of file low level API for read/write operations */ -extern unzFile ZEXPORT unzOpen2_64(const void *path, zlib_filefunc64_def *pzlib_filefunc_def); -/* Open a Zip file, like unz64Open, but provide a set of file low level API for read/write 64-bit operations */ - -extern int ZEXPORT unzClose(unzFile file); -/* Close a ZipFile opened with unzOpen. If there is files inside the .Zip opened with unzOpenCurrentFile, - these files MUST be closed with unzipCloseCurrentFile before call unzipClose. - - return UNZ_OK if there is no error */ - -extern int ZEXPORT unzGetGlobalInfo(unzFile file, unz_global_info *pglobal_info); -extern int ZEXPORT unzGetGlobalInfo64(unzFile file, unz_global_info64 *pglobal_info); -/* Write info about the ZipFile in the *pglobal_info structure. - - return UNZ_OK if no error */ - -extern int ZEXPORT unzGetGlobalComment(unzFile file, char *comment, uint16_t comment_size); -/* Get the global comment string of the ZipFile, in the comment buffer. - - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 */ - -/***************************************************************************/ -/* Reading the content of the current zipfile, you can open it, read data from it, and close it - (you can close it before reading all the file) */ - -extern int ZEXPORT unzOpenCurrentFile(unzFile file); -/* Open for reading data the current file in the zipfile. - - return UNZ_OK if no error */ - -extern int ZEXPORT unzOpenCurrentFilePassword(unzFile file, const char *password); -/* Open for reading data the current file in the zipfile. - password is a crypting password - - return UNZ_OK if no error */ - -extern int ZEXPORT unzOpenCurrentFile2(unzFile file, int *method, int *level, int raw); -/* Same as unzOpenCurrentFile, but open for read raw the file (not uncompress) - if raw==1 *method will receive method of compression, *level will receive level of compression - - NOTE: you can set level parameter as NULL (if you did not want known level, - but you CANNOT set method parameter as NULL */ - -extern int ZEXPORT unzOpenCurrentFile3(unzFile file, int *method, int *level, int raw, const char *password); -/* Same as unzOpenCurrentFile, but takes extra parameter password for encrypted files */ - -extern int ZEXPORT unzReadCurrentFile(unzFile file, voidp buf, uint32_t len); -/* Read bytes from the current file (opened by unzOpenCurrentFile) - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error (UNZ_ERRNO for IO error, or zLib error for uncompress error) */ - -extern int ZEXPORT unzGetCurrentFileInfo(unzFile file, unz_file_info *pfile_info, char *filename, - uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size); -extern int ZEXPORT unzGetCurrentFileInfo64(unzFile file, unz_file_info64 *pfile_info, char *filename, - uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size); -/* Get Info about the current file - - pfile_info if != NULL, the *pfile_info structure will contain somes info about the current file - filename if != NULL, the file name string will be copied in filename - filename_size is the size of the filename buffer - extrafield if != NULL, the extra field information from the central header will be copied in to - extrafield_size is the size of the extraField buffer - comment if != NULL, the comment string of the file will be copied in to - comment_size is the size of the comment buffer */ - -extern int ZEXPORT unzGetLocalExtrafield(unzFile file, voidp buf, uint32_t len); -/* Read extra field from the current file (opened by unzOpenCurrentFile) - This is the local-header version of the extra field (sometimes, there is - more info in the local-header version than in the central-header) - - if buf == NULL, it return the size of the local extra field - if buf != NULL, len is the size of the buffer, the extra header is copied in buf. - - return number of bytes copied in buf, or (if <0) the error code */ - -extern int ZEXPORT unzCloseCurrentFile(unzFile file); -/* Close the file in zip opened with unzOpenCurrentFile - - return UNZ_CRCERROR if all the file was read but the CRC is not good */ - -/***************************************************************************/ -/* Browse the directory of the zipfile */ - -typedef int (*unzFileNameComparer)(unzFile file, const char *filename1, const char *filename2); -typedef int (*unzIteratorFunction)(unzFile file); -typedef int (*unzIteratorFunction2)(unzFile file, unz_file_info64 *pfile_info, char *filename, - uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size); - -extern int ZEXPORT unzGoToFirstFile(unzFile file); -/* Set the current file of the zipfile to the first file. - - return UNZ_OK if no error */ - -extern int ZEXPORT unzGoToFirstFile2(unzFile file, unz_file_info64 *pfile_info, char *filename, - uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size); -/* Set the current file of the zipfile to the first file and retrieves the current info on success. - Not as seek intensive as unzGoToFirstFile + unzGetCurrentFileInfo. - - return UNZ_OK if no error */ - -extern int ZEXPORT unzGoToNextFile(unzFile file); -/* Set the current file of the zipfile to the next file. - - return UNZ_OK if no error - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest */ - -extern int ZEXPORT unzGoToNextFile2(unzFile file, unz_file_info64 *pfile_info, char *filename, - uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size); -/* Set the current file of the zipfile to the next file and retrieves the current - info on success. Does less seeking around than unzGotoNextFile + unzGetCurrentFileInfo. - - return UNZ_OK if no error - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest */ - -extern int ZEXPORT unzLocateFile(unzFile file, const char *filename, unzFileNameComparer filename_compare_func); -/* Try locate the file szFileName in the zipfile. For custom filename comparison pass in comparison function. - - return UNZ_OK if the file is found (it becomes the current file) - return UNZ_END_OF_LIST_OF_FILE if the file is not found */ - -/***************************************************************************/ -/* Raw access to zip file */ - -typedef struct unz_file_pos_s -{ - uint32_t pos_in_zip_directory; /* offset in zip file directory */ - uint32_t num_of_file; /* # of file */ -} unz_file_pos; - -extern int ZEXPORT unzGetFilePos(unzFile file, unz_file_pos *file_pos); -extern int ZEXPORT unzGoToFilePos(unzFile file, unz_file_pos *file_pos); - -typedef struct unz64_file_pos_s -{ - uint64_t pos_in_zip_directory; /* offset in zip file directory */ - uint64_t num_of_file; /* # of file */ -} unz64_file_pos; - -extern int ZEXPORT unzGetFilePos64(unzFile file, unz64_file_pos *file_pos); -extern int ZEXPORT unzGoToFilePos64(unzFile file, const unz64_file_pos *file_pos); - -extern int32_t ZEXPORT unzGetOffset(unzFile file); -extern int64_t ZEXPORT unzGetOffset64(unzFile file); -/* Get the current file offset */ - -extern int ZEXPORT unzSetOffset(unzFile file, uint32_t pos); -extern int ZEXPORT unzSetOffset64(unzFile file, uint64_t pos); -/* Set the current file offset */ - -extern int32_t ZEXPORT unzTell(unzFile file); -extern int64_t ZEXPORT unzTell64(unzFile file); -/* return current position in uncompressed data */ - -extern int ZEXPORT unzSeek(unzFile file, uint32_t offset, int origin); -extern int ZEXPORT unzSeek64(unzFile file, uint64_t offset, int origin); -/* Seek within the uncompressed data if compression method is storage */ - -extern int ZEXPORT unzEndOfFile(unzFile file); -/* return 1 if the end of file was reached, 0 elsewhere */ - -/***************************************************************************/ - -#ifdef __cplusplus -} -#endif - -#endif /* _UNZ_H */ diff --git a/Externals/minizip/zip.h b/Externals/minizip/zip.h new file mode 100644 index 000000000000..cf38ac91a04f --- /dev/null +++ b/Externals/minizip/zip.h @@ -0,0 +1,13 @@ +/* zip.h -- Compatibility layer shim + part of the minizip-ng project + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#ifndef MZ_COMPAT_ZIP +#define MZ_COMPAT_ZIP + +#include "mz_compat.h" + +#endif diff --git a/Externals/picojson/picojson.vcxproj b/Externals/picojson/picojson.vcxproj index bec09f759522..ae446bd54a03 100644 --- a/Externals/picojson/picojson.vcxproj +++ b/Externals/picojson/picojson.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/picojson/picojson.vcxproj.filters b/Externals/picojson/picojson.vcxproj.filters index 2f138abf89c4..4abcb2be8f2e 100644 --- a/Externals/picojson/picojson.vcxproj.filters +++ b/Externals/picojson/picojson.vcxproj.filters @@ -1,5 +1,5 @@  - + diff --git a/Externals/pugixml/pugixml.vcxproj b/Externals/pugixml/pugixml.vcxproj index acab84d8edc4..ee37612163f5 100644 --- a/Externals/pugixml/pugixml.vcxproj +++ b/Externals/pugixml/pugixml.vcxproj @@ -1,5 +1,5 @@ - + diff --git a/Externals/soundtouch/STTypes.h b/Externals/soundtouch/STTypes.h index a07bc3dcea23..375a0a3789dd 100644 --- a/Externals/soundtouch/STTypes.h +++ b/Externals/soundtouch/STTypes.h @@ -39,21 +39,6 @@ #ifndef STTypes_H #define STTypes_H -typedef unsigned int uint; -typedef unsigned long ulong; - -// Patch for MinGW: on Win64 long is 32-bit -#ifdef _WIN64 - typedef unsigned long long ulongptr; -#else - typedef ulong ulongptr; -#endif - - -// Helper macro for aligning pointer up to next 16-byte boundary -#define SOUNDTOUCH_ALIGN_POINTER_16(x) ( ( (ulongptr)(x) + 15 ) & ~(ulongptr)15 ) - - #if (defined(__GNUC__) && !defined(ANDROID)) // In GCC, include soundtouch_config.h made by config scritps. // Skip this in Android compilation that uses GCC but without configure scripts. @@ -63,6 +48,20 @@ typedef unsigned long ulong; namespace soundtouch { + typedef unsigned int uint; + typedef unsigned long ulong; + + // Patch for MinGW: on Win64 long is 32-bit + #ifdef _WIN64 + typedef unsigned long long ulongptr; + #else + typedef ulong ulongptr; + #endif + + + // Helper macro for aligning pointer up to next 16-byte boundary + #define SOUNDTOUCH_ALIGN_POINTER_16(x) ( ( (ulongptr)(x) + 15 ) & ~(ulongptr)15 ) + /// Activate these undef's to overrule the possible sampletype /// setting inherited from some other header file: #undef SOUNDTOUCH_INTEGER_SAMPLES diff --git a/Externals/soundtouch/SoundTouch.vcxproj b/Externals/soundtouch/SoundTouch.vcxproj index c29234fada99..cd4da6e480e1 100644 --- a/Externals/soundtouch/SoundTouch.vcxproj +++ b/Externals/soundtouch/SoundTouch.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/soundtouch/cpu_detect.h b/Externals/soundtouch/cpu_detect.h index 025781dae1cd..79d51272040c 100644 --- a/Externals/soundtouch/cpu_detect.h +++ b/Externals/soundtouch/cpu_detect.h @@ -51,6 +51,8 @@ #define SUPPORT_SSE 0x0008 #define SUPPORT_SSE2 0x0010 +using namespace soundtouch; + /// Checks which instruction set extensions are supported by the CPU. /// /// \return A bitmask of supported extensions, see SUPPORT_... defines. diff --git a/Externals/xxhash/xxhash.vcxproj b/Externals/xxhash/xxhash.vcxproj index 838bf3802079..80c7bb56544c 100644 --- a/Externals/xxhash/xxhash.vcxproj +++ b/Externals/xxhash/xxhash.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/zlib/zlib.vcxproj b/Externals/zlib/zlib.vcxproj index 258c80ff6b73..5c0d1944e4e0 100644 --- a/Externals/zlib/zlib.vcxproj +++ b/Externals/zlib/zlib.vcxproj @@ -1,5 +1,5 @@  - + diff --git a/Externals/zstd/zstd.vcxproj b/Externals/zstd/zstd.vcxproj index c2a3d2f775b4..8ea103a3c256 100644 --- a/Externals/zstd/zstd.vcxproj +++ b/Externals/zstd/zstd.vcxproj @@ -1,5 +1,5 @@ - + diff --git a/Externals/zstd/zstd.vcxproj.filters b/Externals/zstd/zstd.vcxproj.filters index 08f15a69d5fd..0cb53813df8d 100644 --- a/Externals/zstd/zstd.vcxproj.filters +++ b/Externals/zstd/zstd.vcxproj.filters @@ -1,5 +1,5 @@ - + common diff --git a/Languages/Languages.vcxproj b/Languages/Languages.vcxproj index 2c3ec97cb572..925884ea0435 100644 --- a/Languages/Languages.vcxproj +++ b/Languages/Languages.vcxproj @@ -1,5 +1,5 @@  - + @@ -8,52 +8,26 @@ - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + ..\Externals\gettext\msgfmt + - + + + - - + + + + + \ No newline at end of file diff --git a/Languages/Languages.vcxproj.user b/Languages/Languages.vcxproj.user new file mode 100644 index 000000000000..0f3d71122842 --- /dev/null +++ b/Languages/Languages.vcxproj.user @@ -0,0 +1,6 @@ + + + + true + + \ No newline at end of file diff --git a/Languages/po.props b/Languages/po.props deleted file mode 100644 index e7970c02e7d8..000000000000 --- a/Languages/po.props +++ /dev/null @@ -1,21 +0,0 @@ - - - - Midl - CustomBuild - - - _SelectedFiles;$(msgfmtDependsOn) - - - - False - $(OutDir)Languages\%(Filename)\dolphin-emu.mo - ..\Externals\gettext\msgfmt [AllOptions] [AdditionalOptions] [inputs] - %(OutputName) - Compiling %(Filename) locale - - - \ No newline at end of file diff --git a/Languages/po.rules b/Languages/po.rules deleted file mode 100644 index 9d70b9ee3065..000000000000 --- a/Languages/po.rules +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - diff --git a/Languages/po.targets b/Languages/po.targets deleted file mode 100644 index 550e63ef9b02..000000000000 --- a/Languages/po.targets +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - _msgfmt - - - - $(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml - - - - - - - - @(msgfmt, '|') - - - - - - - - - $(ComputeLinkInputsTargets); - ComputemsgfmtOutput; - - - $(ComputeLibInputsTargets); - ComputemsgfmtOutput; - - - - - - - - - - - - \ No newline at end of file diff --git a/Languages/po.xml b/Languages/po.xml deleted file mode 100644 index 303572a5329f..000000000000 --- a/Languages/po.xml +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - - - General - - - - - Command Line - - - - - - - - - - - - - - Execute Before - - - Specifies the targets for the build customization to run before. - - - - - - - - - - - Execute After - - - Specifies the targets for the build customization to run after. - - - - - - - - - - - - - - Additional Options - - - Additional Options - - - - - - - \ No newline at end of file diff --git a/Languages/po/ar.po b/Languages/po/ar.po index 798789fa9d64..387495b7c37c 100644 --- a/Languages/po/ar.po +++ b/Languages/po/ar.po @@ -4,15 +4,15 @@ # # Translators: # mansoor, 2011 -# mansoor , 2013,2015-2021 +# mansoor , 2013,2015-2022 # Mosaab Alzoubi , 2013 msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: mansoor , 2013,2015-2022\n" "Language-Team: Arabic (http://www.transifex.com/delroth/dolphin-emu/language/" "ar/)\n" "Language: ar\n" @@ -22,7 +22,7 @@ msgstr "" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -34,7 +34,7 @@ msgstr "" "نظرًا لأن صور أقراص جيم كيوب تحتوي على القليل من بيانات التحقق ، فقد تكون " "هناك مشكلات يتعذر على دولفين اكتشافها." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -46,7 +46,7 @@ msgstr "" "لان هذا العنوان ليس لوحدات التحكم وي التجزئة ، دولفين لا يمكن التحقق من انه " "لم يتم العبث بها." -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -70,7 +70,7 @@ msgstr "" msgid " (Disc %1)" msgstr "(%1 القرص)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "! ليس" @@ -78,7 +78,7 @@ msgstr "! ليس" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "متغير المستخدم $" @@ -92,7 +92,7 @@ msgstr "متغير المستخدم $" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "% Modulo" @@ -108,17 +108,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "%1 %2" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "%1 %2 %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -137,7 +137,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (%3 إصدار)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "%1 (المخزون)" @@ -163,7 +163,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:88 msgid "%1 Graphics Configuration" -msgstr "%1 إعدادات الرسومات" +msgstr "%1 تكوين الرسومات" #: Source/Core/DolphinQt/Settings/AdvancedPane.cpp:284 msgid "%1 MB (MEM1)" @@ -177,7 +177,7 @@ msgstr "%1 MB (MEM2)" msgid "%1 doesn't support this feature on your system." msgstr "%1 لا يدعم هذه الميزة علي النظام الخاص بك" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "%1 لا يدعم هذه الميزة." @@ -191,23 +191,23 @@ msgstr "" "%2 موضوع(s)\n" "%3 الإطار الحالي" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "%1 قد انضم" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "%1 لقد غادر" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "%1 القرص غير صالح" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "%1 is now golfing" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "نطاقات الذاكرة %1" @@ -216,11 +216,11 @@ msgstr "نطاقات الذاكرة %1" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "%1 وجدت جلسة" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "%1 العثور على جلسات" @@ -232,15 +232,15 @@ msgstr "%1%" msgid "%1% (%2 MHz)" msgstr "%1% (%2 MHz)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (السرعة القياسية)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "%1, %2, %3, %4" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "%1: %2" @@ -256,30 +256,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2]: %3/%4 ميغابايت" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "%1x Native (%2x%3)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "& و" @@ -299,7 +299,7 @@ msgstr "&3x" msgid "&4x" msgstr "&4x" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&حول" @@ -308,11 +308,11 @@ msgid "&Add Memory Breakpoint" msgstr "&إضافة نقطة توقف الذاكرة" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "&إضافة رمز جديد" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "&إضافة وظيفة" @@ -320,19 +320,19 @@ msgstr "&إضافة وظيفة" msgid "&Add..." msgstr "&إضافة" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "&إعدادات الصوت" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "&التحديث التلقائي" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" -msgstr "&البدء التلقائي" +msgstr "&بدء تلقائي" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "&تشغيل من القرص" @@ -340,11 +340,11 @@ msgstr "&تشغيل من القرص" msgid "&Borderless Window" msgstr "&نافذة بلا حدود" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&نقاط التوقف" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "&تتبع اخطاء المحاكي" @@ -352,15 +352,15 @@ msgstr "&تتبع اخطاء المحاكي" msgid "&Cancel" msgstr "&إلغاء" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "&مدير الأسرار" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "&التحقق من التحديثات" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "&مسح الرموز" @@ -368,7 +368,7 @@ msgstr "&مسح الرموز" msgid "&Clone..." msgstr "&استنساخ" -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "&رمز" @@ -376,19 +376,20 @@ msgstr "&رمز" msgid "&Connected" msgstr "&متصل" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "&إعدادات وحدة التحكم" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "&نسخ العنوان" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "&إنشاء..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "&حذف" @@ -400,7 +401,7 @@ msgstr "&حذف المشاهدة" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "&تحرير الرمز" @@ -408,75 +409,79 @@ msgstr "&تحرير الرمز" msgid "&Edit..." msgstr "&تحرير" -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "&إخراج القرص" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&محاكاة" #: Source/Core/DolphinQt/GBAWidget.cpp:409 msgid "&Export Save Game..." -msgstr "" +msgstr "&تصدير حفظ اللعبة" #: Source/Core/DolphinQt/GBAWidget.cpp:417 msgid "&Export State..." msgstr "&تصدير الحالة" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&ملف" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&الخط" -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "&الإطار المسبق" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "&إعدادات المظهر الحر" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "&إنشاء رموز من" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "&GitHub مستودع " -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "&إعدادات الرسومات" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&مساعدة" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "&إعدادات مفاتيح الاختصار" #: Source/Core/DolphinQt/GBAWidget.cpp:406 msgid "&Import Save Game..." -msgstr "" +msgstr "&استيراد حفظ اللعبة" #: Source/Core/DolphinQt/GBAWidget.cpp:414 msgid "&Import State..." msgstr "&استيراد الحالة" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "&استيراد" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "&blr إدراج" @@ -484,7 +489,7 @@ msgstr "&blr إدراج" msgid "&Interframe Blending" msgstr "&مزج الإطارات" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -492,23 +497,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "&اللغة" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&تحميل الحالة" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "&Load Symbol Map" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "&تأمين المصغرات في القائمة" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&الذاكرة" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "&فيلم" @@ -516,7 +521,7 @@ msgstr "&فيلم" msgid "&Mute" msgstr "&صامت" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "&شبكة الاتصال" @@ -524,24 +529,24 @@ msgstr "&شبكة الاتصال" msgid "&No" msgstr "&لا" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&فتح" -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&خيارات" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "&HLE وظائف تصحيح" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&إيقاف مؤقت" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&تشغيل" @@ -549,11 +554,11 @@ msgstr "&تشغيل" msgid "&Properties" msgstr "&خصائص" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "&وضع للقراءة فقط" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&تسجل" @@ -562,24 +567,24 @@ msgid "&Remove" msgstr "&إزالة" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "&إزالة الرمز" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "&إعادة تسمية الرمز" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&إعادة" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "&أدارة حزمة الموارد" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "&Save Symbol Map" @@ -587,11 +592,11 @@ msgstr "&Save Symbol Map" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "&حد السرعة" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&إيقاف " @@ -599,11 +604,11 @@ msgstr "&إيقاف " msgid "&Theme:" msgstr "&المظهر" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "&المواضيع" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&أدوات" @@ -611,17 +616,17 @@ msgstr "&أدوات" msgid "&Unload ROM" msgstr "&إلغاء تحميل القرص" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&عرض" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&مشاهدة" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&الموقع" @@ -633,11 +638,11 @@ msgstr "&معلومات عن اللعبة" msgid "&Yes" msgstr "&نعم" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "'%1' لم يتم العثور على أي أسماء رموز تم إنشاؤها" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "'%1' لم يتم العثور على المسح بحثًا عن الوظائف الشائعة بدلاً من ذلك" @@ -649,7 +654,7 @@ msgstr "(لا شيء)" msgid "(host)" msgstr "(مضيف)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(ايقاف)" @@ -657,34 +662,34 @@ msgstr "(ايقاف)" msgid "(ppc)" msgstr "(ppc)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "* ضرب" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "+ إضافة" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr ", فاصلة" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "- طرح" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "--> %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "/ تقسيم" @@ -692,6 +697,10 @@ msgstr "/ تقسيم" msgid "128 Mbit (2043 blocks)" msgstr "128 Mbit (2043 blocks)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "16 Mbit (251 blocks)" @@ -700,35 +709,35 @@ msgstr "16 Mbit (251 blocks)" msgid "16-bit" msgstr "16-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "16-bit عدد صحيح موقع" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "16-bit عدد صحيح غير موقع" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x Native (1280x1056) for 720p" @@ -740,25 +749,25 @@ msgstr "32 Mbit (507 blocks)" msgid "32-bit" msgstr "32-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "32-bit عدد صحيح موقع" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "32-bit عدد صحيح غير موقع" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -772,28 +781,32 @@ msgstr "3D عمق" msgid "3x" msgstr "3x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x Native (1920x1584) for 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Mbit (59 blocks)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x Native (2560x2112) for 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x Native (3200x2640)" @@ -801,29 +814,33 @@ msgstr "5x Native (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Mbit (1019 blocks)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "64-bit عدد صحيح موقع" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "64-bit عدد صحيح غير موقع" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x Native (3840x3168) for 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x Native (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Mbit (123 blocks)" @@ -832,25 +849,25 @@ msgstr "8 Mbit (123 blocks)" msgid "8-bit" msgstr "8-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "8-bit عدد صحيح موقع" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "8-bit عدد صحيح غير موقع" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x Native (5120x4224) for 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "< أقل-من" @@ -871,12 +888,12 @@ msgstr "" "

يتوفر إصدار جديد من دولفين !

دولفين %1 متاح للتنزيل. تقوم بتشغيل %2." "
هل ترغب في التحديث؟

ملاحظات الإصدار:

" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "> أكثر-من" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "جلسة لعب الشبكة جارية بالفعل!" @@ -901,11 +918,11 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "القرص بالفعل على وشك أن يتم إدراجه." -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "لا يمكن تحميل حالة الحفظ دون تحديد لعبة لتشغيلها" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -913,16 +930,16 @@ msgstr "" "إيقاف التشغيل بالفعل قيد التقدم. قد يتم فقد البيانات غير المحفوظة في حالة " "إيقاف المحاكاة الحالية قبل اكتمالها. توقف إجباري؟" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "لا يمكن تشغيل المزامنة إلا عند تشغيل لعبة وي." #. i18n: A mysterious debugging/diagnostics peripheral for the GameCube. #: Source/Core/Core/HW/EXI/EXI_Device.h:89 msgid "AD16" -msgstr "" +msgstr "AD16" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -958,15 +975,15 @@ msgstr "AR رموز" msgid "AR Codes" msgstr "AR رموز" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" #: Source/Core/DolphinQt/ConvertDialog.cpp:413 #: qtbase/src/gui/kernel/qplatformtheme.cpp:724 msgid "Abort" -msgstr "إحباط" +msgstr "إلغاء" #: Source/Core/DolphinQt/AboutDialog.cpp:17 msgid "About Dolphin" @@ -982,7 +999,7 @@ msgstr "التسارع" msgid "Accuracy:" msgstr "ضبط" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "عمل" @@ -1078,9 +1095,9 @@ msgstr "كشف عن محول" msgid "Adapter:" msgstr "محول" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "أضف" @@ -1088,11 +1105,11 @@ msgstr "أضف" msgid "Add &breakpoint" msgstr "إضافة نقطة توقف" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "DSU إضافة خادم جديد" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "إضافة جهاز يو إس بي جديد" @@ -1124,46 +1141,49 @@ msgstr "إضافة نقطة توقف للذاكرة" msgid "Add to &watch" msgstr "اضف إليه &تنبية" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "إضافة للمشاهدة" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "أضف" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "عنوان" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "مساحة العنوان" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "مساحة العنوان حسب حالة وحدة المعالجة المركزية" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "عنوان" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1220,39 +1240,43 @@ msgstr "خيارات متقدمة" msgid "Africa" msgstr "أفريقيا" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "محاذاة لطول نوع البيانات" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "كل الملفات" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "(*) كل الملفات" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" -msgstr "" +msgstr "GC/Wii جميع ملفات" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "جميع حالات الحفظ (*.sav *.s##);; كل الملفات (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "جميع أدوات التحكم" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "جميع رموز اللاعبين متزامنة." @@ -1261,25 +1285,25 @@ msgstr "جميع رموز اللاعبين متزامنة." msgid "All players' saves synchronized." msgstr "حفظ جميع اللاعبين متزامنة." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "السماح بإعدادات المنطقة الغير متطابقة" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "السماح بالإبلاغ عن إحصائيات الاستخدام" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "SD السماح للكتابة على بطاقة" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1305,7 +1329,7 @@ msgstr "دائما على الأعلى" msgid "An inserted disc was expected but not found." msgstr "كان من المتوقع وجود قرص مدرج ولكن لم يتم العثور عليه." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Anaglyph" @@ -1323,39 +1347,39 @@ msgstr "الزاوية" msgid "Angular velocity to ignore and remap." msgstr "السرعة الزاوية للتجاهل وإعادة التخطيط" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "تصفية متباينة الخواص " -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "تصفية متباينة الخواص " -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" -msgstr "مضاد للتعرج" +msgstr "التنعيم" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" -msgstr "مضاد للتعرج" +msgstr "التنعيم" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "أي منطقة" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "إلحاق التوقيع ل" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "إلحاق ب & ملف التوقيع الموجود" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "تطبيق ملف التوقيع" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1369,15 +1393,15 @@ msgstr "تاريخ الإصدار" msgid "Apply" msgstr "تطبيق" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "تطبيق ملف التوقيع" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "Arbitrary Mipmap Detection" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "هل أنت متأكد من أنك تريد حذفها '%1'?" @@ -1385,11 +1409,11 @@ msgstr "هل أنت متأكد من أنك تريد حذفها '%1'?" msgid "Are you sure you want to delete this file?" msgstr "هل أنت متأكد من أنك تريد حذف هذا الملف؟" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "هل أنت متأكد من أنك تريد حذف هذه الحزمة؟" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "هل أنت متأكد من أنك تريد إنهاء اللعب عبر الشبكة؟" @@ -1399,14 +1423,14 @@ msgstr "هل أنت واثق؟" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:275 msgid "Aspect Ratio" -msgstr "نسبة العرض" +msgstr "تناسب الأبعاد" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" -msgstr "نسبة العرض" +msgstr "تناسب الأبعاد" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "تعيين منافذ وحدة التحكم" @@ -1414,7 +1438,7 @@ msgstr "تعيين منافذ وحدة التحكم" msgid "Assign Controllers" msgstr "تعيين وحدات تحكم" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "اثنان على الأقل من ملفات الحفظ المحددة لهما نفس اسم الملف الداخلي" @@ -1439,7 +1463,7 @@ msgstr "إعدادات امتداد الصوت" msgid "Australia" msgstr "أستراليا" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "الكاتب" @@ -1451,15 +1475,15 @@ msgstr "الكتاب" msgid "Auto" msgstr "تلقائي" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "تلقائي (Multiple of 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "إعدادات التحديث التلقائي" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1479,7 +1503,7 @@ msgstr "ضبط حجم الإطار تلقائيا" msgid "Auto-Hide" msgstr "إخفاء تلقائي" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "RSO الكشف التلقائي عن وحدات" @@ -1490,12 +1514,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "مساعدة" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "B" @@ -1510,11 +1534,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "BIOS:" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "BP تسجل" @@ -1540,7 +1564,7 @@ msgstr "إعدادات الخلفية" msgid "Backend:" msgstr "الخلفية" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "خلفية الإدخال" @@ -1551,7 +1575,13 @@ msgstr "خلفية الإدخال" msgid "Backward" msgstr "الى الوراء" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "تم توفير عنوان غير صحيح." @@ -1559,19 +1589,20 @@ msgstr "تم توفير عنوان غير صحيح." msgid "Bad dump" msgstr "تفريغ سيئ" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." -msgstr "تم توفير تعويض غير صالح" +msgstr "تم توفير إزاحة غير صالحة" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." -msgstr "قيمة سيئة المقدمة." +msgstr "قيمة غير صالحة المقدمة" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "الشعار" @@ -1595,7 +1626,7 @@ msgstr "الأولوية الأساسية" msgid "Basic" msgstr "الأساسية" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "الإعدادات الأساسية" @@ -1603,7 +1634,7 @@ msgstr "الإعدادات الأساسية" msgid "Bass" msgstr "صوت عميق" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "لا يمكن استخدام وضع الدُفعات دون تحديد لعبة لإطلاقها" @@ -1611,11 +1642,11 @@ msgstr "لا يمكن استخدام وضع الدُفعات دون تحديد msgid "Battery" msgstr "بطارية" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "Beta (مرة في الشهر)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1637,7 +1668,7 @@ msgstr "(kbps) معدل البت" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "حجم الكتلة" @@ -1650,7 +1681,7 @@ msgstr "حجم الكتلة" msgid "Blocking" msgstr "حظر" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "كتل" @@ -1675,15 +1706,15 @@ msgstr "" "libusb تم تمكين وضع عبور البلوتوث ولكن تم تصميم دولفين بدون\n" "لا يمكن استخدام وضع العبور" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "التمهيد لإيقاف مؤقت" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "BootMii NAND backup file (*.bin);;All Files (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "BootMii keys file (*.bin);;All Files (*)" @@ -1691,7 +1722,7 @@ msgstr "BootMii keys file (*.bin);;All Files (*)" msgid "Borderless Fullscreen" msgstr "ملء الشاشة بلا حدود" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "اسفل" @@ -1705,7 +1736,7 @@ msgid "Branches" msgstr "الفروع" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "كسر" @@ -1714,9 +1745,9 @@ msgstr "كسر" msgid "Breakpoint" msgstr "توقف" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." -msgstr "واجه نقطة توقف! خطوة خارج إحباط" +msgstr "تمت مصادفة نقطة توقف! إلغاء للخروج" #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:37 msgid "Breakpoints" @@ -1744,7 +1775,7 @@ msgstr "خطأ محول النطاق العريض" msgid "Broadband Adapter MAC Address" msgstr "عنوان ماك لمحول النطاق العريض" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "مستعرض جلسات اللعب عبر الشبكة" @@ -1752,12 +1783,12 @@ msgstr "مستعرض جلسات اللعب عبر الشبكة" msgid "Buffer Size:" msgstr "حجم المخزن المؤقت" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "تم تغيير حجم المخزن المؤقت إلى %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "المخزن المؤقت" @@ -1799,11 +1830,11 @@ msgstr "الأزرار" msgid "C Stick" msgstr "C عصا" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "إنشاء ملف التوقيع" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "CP تسجيل" @@ -1834,7 +1865,7 @@ msgstr "" msgid "Calculate" msgstr "حساب" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1854,15 +1885,15 @@ msgstr "المعايرة" msgid "Calibration Period" msgstr "فترة المعايرة" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "Callstack" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "كاميرا 1" @@ -1872,7 +1903,7 @@ msgstr "كاميرا 1" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1880,16 +1911,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "{0:02x} لا يمكن العثور على ريموت وي من خلال مقبض الاتصال" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "لا يمكن بدء جلسة اللعب عبر الشبكة بينما لا تزال اللعبة قيد التشغيل! " -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "إلغاء" @@ -1908,23 +1939,23 @@ msgstr "" "WAD لا يمكن تشغيل هذا\n" "NAND لأنه لا يمكن تثبيته على" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "لا يمكن مقارنة القيمة الأخيرة في البحث الأول" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "Cannot find the GC IPL." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "لا يمكن التحديث بدون نتائج" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "Cannot start the game, because the GC IPL could not be found." @@ -1946,7 +1977,7 @@ msgstr "المركز و المعايرة" msgid "Change &Disc" msgstr "تغيير &القرص" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "تغيير &القرص" @@ -1954,15 +1985,15 @@ msgstr "تغيير &القرص" msgid "Change Disc" msgstr "تغيير القرص" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "تغيير الأقراص تلقائيا" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "{0} قم بتغيير القرص إلى" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1982,7 +2013,7 @@ msgstr "سيحدث تغيير الاسرار فقط عند إعادة تشغيل msgid "Channel Partition (%1)" msgstr "(%1) قسم القناة" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "محادثه" @@ -1998,13 +2029,13 @@ msgstr "بحث عن اسرار" msgid "Cheats Manager" msgstr "مدير الأسرار" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "NAND تحقق من" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" -msgstr "التحقق من وجود تغييرات في قائمة الألعاب في الخلفية" +msgstr "التحقق من وجود تغييرات قائمة الألعاب في الخلفية" #: Source/Core/DolphinQt/AboutDialog.cpp:58 msgid "Check for updates" @@ -2018,7 +2049,7 @@ msgstr "" "تحقق مما إذا كان لديك الأذونات المطلوبة لحذف الملف أو ما إذا كان لا يزال قيد " "الاستخدام." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "اختباري" @@ -2026,16 +2057,16 @@ msgstr "اختباري" msgid "China" msgstr "الصين" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "اختيار ملف لفتح" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "اختيار ملف الإدخال ذي الأولوية" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "اختر ملف الإدخال الثانوي" @@ -2058,14 +2089,14 @@ msgid "Classic Controller" msgstr "Classic Controller" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "مسح" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "مسح ذاكرة التخزين المؤقت" @@ -2082,28 +2113,47 @@ msgstr "استنساخ و &تحرير الرمز" msgid "Close" msgstr "إغلاق" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "الإعدادات العامة" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "رمز" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "تم تنفيذ التعليمات البرمجية" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "رمز" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "الرموز الواردة!" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "دمج اثنين من ملفات التوقيع" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "عام" @@ -2121,9 +2171,9 @@ msgstr "تجميع التظليل" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" -msgstr "ضغط" +msgstr "نوع الضغط" #: Source/Core/DolphinQt/ConvertDialog.cpp:69 msgid "Compression Level:" @@ -2132,9 +2182,9 @@ msgstr "مستوى الضغط" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:70 #: Source/Core/DolphinQt/ConvertDialog.cpp:65 msgid "Compression:" -msgstr "ضغط" +msgstr "نوع الضغط" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "شرط" @@ -2146,13 +2196,13 @@ msgstr "الشرط" msgid "Config" msgstr "إعدادات" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "إعدادات" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "إعدادات وحدة تحكم" @@ -2160,21 +2210,21 @@ msgstr "إعدادات وحدة تحكم" msgid "Configure Dolphin" msgstr "إعدادات دولفين" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "تكوين الإدخال" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "تكوين الإخراج" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "تأكيد " @@ -2187,26 +2237,26 @@ msgstr "تأكيد تغيير الخلفية" msgid "Confirm on Stop" msgstr "تأكيد على التوقف" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "التأكيد" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "اتصال" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "ربط لوح الميزان" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "ربط لوحة مفاتيح يو إس بي" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "%1 ربط ريموت وي" @@ -2226,11 +2276,11 @@ msgstr "ربط ريموت وي 3" msgid "Connect Wii Remote 4" msgstr "ربط ريموت وي 4" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "ربط ريموت وي " -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "ربط ريموت وي لمحاكاة التحكم" @@ -2242,15 +2292,19 @@ msgstr "الاتصال بالإنترنت وإجراء تحديث للنظام msgid "Connected" msgstr "متصل" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "الاتصال" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "نوع الاتصال" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "{0:08x} المحتوى تالف" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "البحث المستمر" @@ -2263,7 +2317,7 @@ msgstr "Control NetPlay Golf Mode" msgid "Control Stick" msgstr "عصا التحكم" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "ملف تعريف وحدة التحكم" @@ -2291,15 +2345,18 @@ msgstr "إعدادات وحدة التحكم" msgid "Controllers" msgstr "وحدات التحكم" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " "higher value creates stronger out-of-screen effects while a lower value is " "more comfortable." msgstr "" +"يتحكم في مسافة مستوى التقارب. هذه هي المسافة التي ستظهر عندها الكائنات " +"الافتراضية أمام الشاشة.

تؤدي القيمة الأعلى إلى إنشاء تأثيرات أقوى " +"خارج الشاشة بينما تكون القيمة الأقل أكثر راحة." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2308,12 +2365,14 @@ msgid "" "Native." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " "comfortable." msgstr "" +"يتحكم في المسافة الفاصلة بين الكاميرات الافتراضية.

القيمة الأعلى " +"تخلق إحساسًا أقوى بالعمق بينما القيمة الأقل تكون أكثر راحة." #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:36 msgid "" @@ -2339,12 +2398,12 @@ msgstr "" "Controls whether to use high or low-level DSP emulation. Defaults to " "True" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "التقارب" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "التقارب" @@ -2387,33 +2446,38 @@ msgstr "" "تحويل...\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "نسخ" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "نسخ &الوظيفة" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "Copy &hex" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "نسخ العنوان" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "فشل النسخ" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "Copy Hex" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "Copy code &line" @@ -2421,11 +2485,15 @@ msgstr "Copy code &line" msgid "Copy failed" msgstr "فشل النسخ" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "A نسخ إلى" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "B نسخ إلى" @@ -2440,16 +2508,16 @@ msgstr "النواة" msgid "Cost" msgstr "كلفة" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "تعذر الاتصال بالمضيف." -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "تعذر إنشاء عميل." -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "تعذر إنشاء نظير." @@ -2487,6 +2555,11 @@ msgid "" "\n" "The emulated console will now stop." msgstr "" +"تعذر العثور على أي محول بلوتوث يو إس بي قابل للاستخدام لـ مرور البلوتوث.\n" +"حدث الخطأ التالي عندما حاول دولفين استخدام محول:\n" +"{0}\n" +"\n" +"ستتوقف وحدة التحكم التي تمت مضاهاتها الآن." #: Source/Core/DolphinQt/WiiUpdate.cpp:52 msgid "" @@ -2538,21 +2611,21 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "تعذر البحث عن الخادم المركزي" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "لا يمكن فتح الملف" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "لا يمكن قراءة الملف" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:123 msgid "Country:" -msgstr "البلد" +msgstr "الدولة" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:62 #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:74 @@ -2573,7 +2646,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "المنتج" @@ -2599,11 +2672,11 @@ msgstr "" msgid "Crossfade" msgstr "الإبهات المتداخل" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "المنطقة الحالية" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "القيمة الحالية" @@ -2611,7 +2684,7 @@ msgstr "القيمة الحالية" msgid "Current context" msgstr "السياق الحالي" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "لعبة الحالية" @@ -2619,7 +2692,7 @@ msgstr "لعبة الحالية" msgid "Current thread" msgstr "الموضوع الحالي" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "مساحة العنوان المخصصة" @@ -2650,7 +2723,7 @@ msgstr "" msgid "DJ Turntable" msgstr "DJ Turntable" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "الطبول" @@ -2678,7 +2751,7 @@ msgstr "DSP LLE Recompiler (بطيء)" msgid "DSU Client" msgstr "DSU عميل" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2691,11 +2764,11 @@ msgstr "" "\"https://wiki.dolphin-emu.org/index.php?title=DSU_Client\">راجع هذه الصفحة." -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "بساط الرقص" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "البيانات" @@ -2707,29 +2780,28 @@ msgstr "(%1) قسم البيانات" msgid "Data Transfer" msgstr "نقل البيانات" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "نوع البيانات" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "البيانات في منطقة الملف التي يجب أن تكون غير مستخدمة" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "البيانات بتنسيق غير معروف أو تالفة" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -"عدم تناسق البيانات في بطاقة ذاكرة جيم كيوب ، مما يؤدي إلى إحباط الإجراء." +"عدم تناسق البيانات في بطاقة ذاكرة جيم كيوب ، مما يؤدي إلى إلغاء الإجراء" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "البيانات المتلقية!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2747,7 +2819,7 @@ msgid "Debug Only" msgstr "التصحيح فقط" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "التصحيح" @@ -2789,7 +2861,7 @@ msgstr "X تخفيض" msgid "Decrease Y" msgstr "Y تخفيض" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "افتراضي" @@ -2805,7 +2877,7 @@ msgstr "الجهاز الافتراضي" msgid "Default Font" msgstr "الخط الافتراضي" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "صورة القرص الافتراضية" @@ -2830,7 +2902,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2845,11 +2917,11 @@ msgid "Delete Selected Files..." msgstr "حذف الملفات المحددة" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "'{0}' احذف الملف الموجود" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "العمق" @@ -2857,21 +2929,21 @@ msgstr "العمق" msgid "Depth Percentage:" msgstr "نسبة العمق" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "العمق" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "الوصف" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "الوصف" @@ -2880,11 +2952,11 @@ msgstr "الوصف" msgid "Detached" msgstr "منفصل" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "كشف" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2892,25 +2964,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "تحديد النواة المزدوجة" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "Dev (عدة مرات في اليوم)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "أداة" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "Device PID (e.g., 0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "إعدادات الجهاز" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "Device VID (e.g., 057e)" @@ -2922,11 +2994,15 @@ msgstr "جهاز" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "تقوم بتعتيم الشاشة بعد خمس دقائق من الخمول ." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "اتصال مباشر" @@ -2963,7 +3039,7 @@ msgstr "تعطيل" msgid "Disable Bounding Box" msgstr "تعطيل المربع المحيط" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "Disable Copy Filter" @@ -2975,15 +3051,15 @@ msgstr "Disable EFB VRAM Copies" msgid "Disable Emulation Speed Limit" msgstr "تعطيل محاكاة الحد الأقصى للسرعة" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "Fastmem تعطيل" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "تعطيل الضباب" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "Disable JIT Cache" @@ -2991,7 +3067,7 @@ msgstr "Disable JIT Cache" msgid "Disabled" msgstr "تعطيل" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -3005,7 +3081,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -3022,11 +3098,15 @@ msgstr "القرص" msgid "Discard" msgstr "تجاهل" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "Hex عرض القيم في" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -3044,25 +3124,25 @@ msgstr "مسافة" msgid "Distance of travel from neutral position." msgstr "Distance of travel from neutral position." -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "هل تسمح لشركة دولفين بالإبلاغ عن معلومات لمطوري دولفين؟" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "هل تريد إضافة \"%1\" إلى قائمة مسارات الألعاب؟" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "هل تريد مسح قائمه أسماء الرموز ؟" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "هل تريد إيقاف المحاكاة الحالية؟" @@ -3079,9 +3159,9 @@ msgstr "Dolphin FIFO Log (*.dff)" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "Dolphin Map File (*.map)" @@ -3093,8 +3173,8 @@ msgstr "CSV توقيع دولفين ملف" msgid "Dolphin Signature File" msgstr "دولفين توقيع الملف" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Dolphin TAS Movies (*.dtm)" @@ -3129,11 +3209,11 @@ msgstr "فشل دولفين في إكمال الإجراء المطلوب." msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "محاكي دولفين مفتوح المصدر لجهاز جيم كيوب و وي" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "دولفين قديم جدا لجتياز الخادم " -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." @@ -3141,11 +3221,11 @@ msgstr "" "يتعذر على دولفين التحقق من ملفات النموذجية بشكل صحيح ، نظرًا لعدم تفريغها من " "الأقراص الفعلية" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "دولفين غير قادر على التحقق من الأقراص غير المرخصة." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3160,7 +3240,7 @@ msgstr "تم تعطيل نظام الاسرار حاليا." msgid "Domain" msgstr "نطاق" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "عدم التحديث" @@ -3173,24 +3253,26 @@ msgid "Done compressing disc image." msgstr "تم ضغط صوره القرص." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "مزدوج" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "تحت" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "تحميل الرموز" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "WiiRD تحميل رموز من قاعدة بيانات" @@ -3198,11 +3280,11 @@ msgstr "WiiRD تحميل رموز من قاعدة بيانات" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "للإستخدام في وضع الشبكة GameTDB.com تحميل أغلفة الألعاب من" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "تم التحميل" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "تم تحميل %1 رموز. (وأضاف %2)" @@ -3225,27 +3307,35 @@ msgstr "Drum Kit" msgid "Dual Core" msgstr "ثنائي النواة" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "وهمي" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "Dump &ARAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "Dump &ExRAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "Dump &FakeVMEM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "Dump &MRAM" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "تفريغ الصوت" @@ -3257,7 +3347,7 @@ msgstr "تفريغ القوام الأساسي" msgid "Dump EFB Target" msgstr "EFB هدف التفريغ" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "تفريغ الإطارات" @@ -3269,7 +3359,7 @@ msgstr "" msgid "Dump Objects" msgstr "Dump Objects" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "مسار التفريغ" @@ -3366,16 +3456,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "الهولندية" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "خروج" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3387,7 +3477,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3419,7 +3509,7 @@ msgstr "تأثير" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "فعال" @@ -3427,7 +3517,7 @@ msgstr "فعال" msgid "Effective priority" msgstr "الأولوية الفعالة" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "إكسابايت" @@ -3439,7 +3529,7 @@ msgstr "إخراج القرص" msgid "Embedded Frame Buffer (EFB)" msgstr "(EFB) مخزن مؤقت للإطار المضمن" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "فارغة" @@ -3447,11 +3537,11 @@ msgstr "فارغة" msgid "Emu Thread already running" msgstr "المحاكي قيد التشغيل بالفعل" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "محاكاة محول بلوتوث وي" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "محاكاة ريموت وي" @@ -3470,8 +3560,12 @@ msgstr "" msgid "Emulation Speed" msgstr "سرعة المحاكاة " -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "يجب البدء في المحاكاة للتسجيل." + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3487,7 +3581,7 @@ msgstr "تمكين طبقات التحقق من واجهة برمجة التطب msgid "Enable Audio Stretching" msgstr "تمكين تمديد الصوت " -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "تمكين الأسرار" @@ -3499,7 +3593,7 @@ msgstr "تمكين وقت مخصص" msgid "Enable Dual Core" msgstr "تمكين ثنائي النواة" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Enable Dual Core (لزيادة السرعة)" @@ -3525,19 +3619,19 @@ msgid "Enable Progressive Scan" msgstr "تمكين المسح التدريجي" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "تمكين الهزاز" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "تمكين شاشة التوقف" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "تمكين بيانات مكبر صوت" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "تمكين تقارير إحصائيات الاستخدام " @@ -3567,7 +3661,7 @@ msgstr "" "Enables Floating Point Result Flag calculation, needed for a few games. (ON " "= Compatible, OFF = Fast)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3575,7 +3669,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3605,7 +3699,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "لتمكين تمديد الصوت لتتناسب مع سرعة المحاكاة." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3640,25 +3734,29 @@ msgstr "" msgid "Encoding" msgstr "الترميز" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" "\n" "Aborting import." msgstr "" +"واجهت الأخطاء التالية أثناء فتح ملفات الحفظ:\n" +"%1\n" +"\n" +"ألغى الاستيراد." #: Source/Core/Core/NetPlayServer.cpp:124 msgid "Enet Didn't Initialize" msgstr "لم يتم تهيئة الشبكة" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "الإنجليزية" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3668,7 +3766,7 @@ msgstr "تحسينات" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "أدخل معرف جهاز يو إس بي " @@ -3682,11 +3780,11 @@ msgstr "أدخل عنوانًا لمشاهدته" msgid "Enter new Broadband Adapter MAC address:" msgstr "أدخل عنوان الماك ادرس لمحول البرودباند الجديد" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "أدخل كلمة المرور" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "Enter the RSO module address:" @@ -3695,65 +3793,68 @@ msgstr "Enter the RSO module address:" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "خطأ" @@ -3766,19 +3867,19 @@ msgstr "%1 : خطأ في فتح المحول" msgid "Error loading selected language. Falling back to system default." msgstr "خطأ في تحميل اللغة المحددة. العودة إلى النظام الافتراضي." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "خطأ في الحصول على قائمة الجلسة: 1%" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "حدث خطأ أثناء تحميل بعض حزم النسيج" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "خطأ معالجة الرموز" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "خطأ في معالجة البيانات." @@ -3798,7 +3899,7 @@ msgstr "حدث خطا اثناء مزامنة حفظ البيانات!" msgid "Error writing file: {0}" msgstr "{0} خطأ في كتابة الملف" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3852,11 +3953,11 @@ msgstr "" "Error: Trying to access Windows-1252 fonts but they are not loaded. Games " "may not show fonts correctly, or crash." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3865,11 +3966,39 @@ msgstr "" msgid "Euphoria" msgstr "Euphoria" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "أوروبا" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "مستثني: %1" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "مستثني: 0" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3918,14 +4047,14 @@ msgstr "اسم المتغير المتوقع" msgid "Experimental" msgstr "تجريبي" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "تصدير جميع حفظ وي" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "فشل التصدير" @@ -3933,15 +4062,15 @@ msgstr "فشل التصدير" msgid "Export Recording" msgstr "تصدير تسجيل" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "تصدير تسجيل" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "تصدير حفظ الملف" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "تصدير حفظ الملفات" @@ -3953,22 +4082,22 @@ msgstr "تصدير حفظ وي" msgid "Export Wii Saves" msgstr "تصدير حفظ وي" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "تم التصدير %n الحفظ (الكل)" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "ملحق" @@ -3981,7 +4110,7 @@ msgstr "ملحق إدخال الحركة" msgid "Extension Motion Simulation" msgstr "ملحق محاكاة الحركة" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "خارجي" @@ -3989,7 +4118,7 @@ msgstr "خارجي" msgid "External Frame Buffer (XFB)" msgstr "(XFB) مخزن مؤقت للإطار الخارجي" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "NAND استخراج الشهادات من" @@ -4027,7 +4156,7 @@ msgid "FD" msgstr "FD" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "FIFO Player" @@ -4035,7 +4164,7 @@ msgstr "FIFO Player" msgid "Failed loading XML." msgstr "XML فشل تحميل" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" @@ -4043,11 +4172,11 @@ msgstr "" "فشل فتح بطاقة الذاكرة:\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "فشل في إضافة هذه الجلسة إلى فهرس اللعب عبر الشبكة: 1%" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "Failed to append to signature file '%1'" @@ -4059,7 +4188,7 @@ msgstr "Failed to claim interface for BT passthrough" msgid "Failed to connect to Redump.org" msgstr "Redump.org فشل الاتصال بـ" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "%1 فشل الاتصال بالخادم" @@ -4080,12 +4209,12 @@ msgstr "D3D12 فشل إنشاء موارد عمومية" msgid "Failed to create DXGI factory" msgstr "Failed to create DXGI factory" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" "فشل حذف بطاقة الذاكرة في لعب عبر الشبكة تحقق من أذونات الكتابة الخاصة بك." @@ -4098,19 +4227,19 @@ msgstr "فشل حذف الملف المحدد." msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "فشل تحميل الرموز." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "فشل تفريغ٪ 1: لا يمكن فتح الملف" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "فشل تفريغ٪ 1: فشل في الكتابة إلى الملف" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -4119,7 +4248,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "فشل تصدير ملفات الحفظ التالية:" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "NAND فشل استخراج شهادات من" @@ -4145,31 +4274,31 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "D3D فشل في العثور على واحد أو أكثر من رموز" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "\"%1\" فشل الاستيراد" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" "فشل استيراد ملف الحفظ. الرجاء تشغيل اللعبة مرة واحدة ، ثم المحاولة مرة أخرى" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" "فشل استيراد ملف الحفظ. يبدو أن الملف المحدد تالف أو أنه ليس حفظ وي صالحًا" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "فشل في التهيئة الأساسية" @@ -4185,16 +4314,16 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "فشل في تهيئة فئات العارض" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "%1 :فشل تثبيت الحزمة" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "NAND فشل تثبيت هذا العنوان على" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" @@ -4202,8 +4331,8 @@ msgstr "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "Failed to load RSO module at %1" @@ -4215,11 +4344,11 @@ msgstr "d3d11.dll فشل تحميل" msgid "Failed to load dxgi.dll" msgstr "dxgi.dll فشل تحميل" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "Failed to load map file '%1'" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "فشل تحميل الملف القابل للتنفيذ إلى الذاكرة." @@ -4230,7 +4359,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "'%1' فشل في الفتح" @@ -4259,11 +4388,11 @@ msgstr "" "فشل في فتح ملف في محرر خارجي\n" "تأكد من وجود تطبيق معين لفتح الملفات" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "فشل فتح ملف" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "فشل في فتح الخادم" @@ -4272,7 +4401,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "\"%1\" فشل في فتح ملف الإدخال" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4284,7 +4413,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "Redump.org فشل تحليل بيانات" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4292,25 +4421,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "DFF فشل في قراءة ملف" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "فشلت القراءة من الملف" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "\"{0}\" فشلت القراءة من ملف الإدخال" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "{0} فشلت القراءة" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "فشل إزالة الملف" @@ -4328,39 +4457,41 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "NAND فشل في إزالة هذا العنوان من" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "Failed to reset NetPlay GCI folder. Verify your write permissions." -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "Failed to reset NetPlay NAND folder. Verify your write permissions." -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" +"فشل في إعادة تعيين مجلد إعادة توجيه اللعب عبر الشبكة. تحقق من أذونات الكتابة " +"الخاصة بك" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 msgid "Failed to save FIFO log." msgstr "Failed to save FIFO log." -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "Failed to save code map to path '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "Failed to save signature file '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "Failed to save symbol map to path '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "Failed to save to signature file '%1'" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "%1 فشل في إلغاء تثبيت الحزمة" @@ -4368,11 +4499,11 @@ msgstr "%1 فشل في إلغاء تثبيت الحزمة" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Failed to write BT.DINF to SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "Mii فشل في كتابة بيانات" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "فشل في كتابة حفظ وي." @@ -4380,22 +4511,22 @@ msgstr "فشل في كتابة حفظ وي." msgid "Failed to write config file!" msgstr "فشل في كتابه ملف التكوين" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "فشل في كتابة بطاقة الذاكرة المعدلة إلى القرص" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." -msgstr "" +msgstr "فشل في كتابة إعادة توجيه الحفظ" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "فشل في كتابة ملف الحفظ على القرص" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4406,19 +4537,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "فشل" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "تأخير الإدخال العادل" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "المنطقة الاحتياطية" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "المنطقة الاحتياطية" @@ -4431,7 +4562,7 @@ msgstr "سريع" msgid "Fast Depth Calculation" msgstr "سرعة حساب العمق" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4448,7 +4579,7 @@ msgstr "تفاصيل الملف" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "تنسيق الملف" @@ -4462,18 +4593,18 @@ msgstr "معلومات الملف" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "اسم الملف" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "مسار الملف" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "حجم الملف" @@ -4481,11 +4612,11 @@ msgstr "حجم الملف" msgid "File Size:" msgstr "حجم الملف" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "الملف لا يحتوي على رموز." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "اسم الملف" @@ -4499,11 +4630,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "لا يتوافق حجم الملف مع أي حجم معروف لبطاقة ذاكرة جيم كيوب" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "حجم الملف في عدم تطابق حجم البطاقة الفعلي." @@ -4511,15 +4642,15 @@ msgstr "حجم الملف في عدم تطابق حجم البطاقة الفع msgid "Filesystem" msgstr "نظام الملفات" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "تصفية الرموز" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "تصفية" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4527,11 +4658,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "بحث عن التالي" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "بحث عن السابق" @@ -4547,18 +4678,22 @@ msgstr "" "الانتهاء من التحديث...\n" "سوف يأخذ هذا بعض الوقت." -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "أول شخص " -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "إصلاح المجاميع الاختبارية" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "فشل إصلاح المجموع الاختباري" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4568,13 +4703,14 @@ msgstr "الأعلام" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "عدد عشري" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "Follow &branch" @@ -4597,25 +4733,25 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:59 msgid "Force 16:9" -msgstr "فرض 16:9" +msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "24-Bit فرض اللون" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:59 msgid "Force 4:3" -msgstr "فرض 4:3" +msgstr "4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "فرض الاستماع منفذ" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "قوة تصفية النسيج" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4625,7 +4761,7 @@ msgid "" "" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4644,21 +4780,21 @@ msgstr "تنسيق" msgid "Forward" msgstr "إلى الأمام" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Forward port (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "Found %1 results for \"%2\"" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "%1 الإطار" @@ -4687,7 +4823,7 @@ msgstr "تفريغ الإطار" msgid "Frame Range" msgstr "مجموعة الإطار " -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4699,19 +4835,19 @@ msgstr "إطارات للتسجيل" msgid "France" msgstr "فرنسا" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "%1 الكتل الحرة" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "%1 ملفات حرة" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "نوع التحكم في المظهر الحر" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "%1 تحكم في المظهر الحر" @@ -4719,7 +4855,7 @@ msgstr "%1 تحكم في المظهر الحر" msgid "Free Look Settings" msgstr "إعدادات المظهر الحر" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -5131,7 +5267,7 @@ msgstr "اليسار أخضر" msgid "Green Right" msgstr "اليمين أخضر" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "شبكة" @@ -5144,7 +5280,7 @@ msgstr "Guitar" msgid "Gyroscope" msgstr "جيروسكوب" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5157,12 +5293,29 @@ msgstr "هاك" msgid "Head" msgstr "رأس" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "مساعدة" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5174,19 +5327,19 @@ msgstr "ست عشرية" msgid "Hide" msgstr "إخفاء" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "إخفاء الكل" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "إخفاء الجلسات داخل اللعبة" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "إخفاء جلسات العمل غير المتوافقة" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5204,21 +5357,27 @@ msgstr "الأعلى" msgid "Hit Strength" msgstr "ضرب بقوة" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "مجال الرؤية أفقي" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "هوست" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "رمز المضيف" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "سلطة إدخال المضيف" @@ -5226,7 +5385,7 @@ msgstr "سلطة إدخال المضيف" msgid "Host Size" msgstr "حجم المضيف" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5238,11 +5397,11 @@ msgstr "" "مناسب للألعاب غير الرسمية مع أكثر من 3 لاعبين ، وربما على اتصالات غير مستقرة " "أو عالية وقت الإستجابة." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "تم تعطيل سلطة إدخال المضيف" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "تمكين سلطة إدخال المضيف" @@ -5254,7 +5413,7 @@ msgstr "استضافة لعب عبر الشبكة" msgid "Hostname" msgstr "اسم المضيف" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "إعدادات مفاتيح الاختصار" @@ -5305,11 +5464,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "IP عنوان " -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "إعدادات" @@ -5318,7 +5477,7 @@ msgid "IR" msgstr "الأشعة تحت الحمراء" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "حساسية الأشعة تحت الحمراء" @@ -5339,12 +5498,25 @@ msgid "" "5.0-12188 and later. It can efficiently compress both junk data and " "encrypted Wii data." msgstr "" +"ISO: تنسيق بسيط وقوي تدعمه العديد من البرامج. يشغل مساحة أكبر من أي تنسيق " +"آخر\n" +"\n" +"GCZ: تنسيق أساسي مضغوط متوافق مع معظم إصدارات دولفين وبعض البرامج الأخرى. لا " +"يمكنه ضغط البيانات غير المرغوب فيها بكفاءة (ما لم تتم إزالتها) أو بيانات وي " +"المشفرة\n" +"\n" +"WIA: تنسيق مضغوط متقدم متوافق مع دولفين 5.0-12188 والإصدارات الأحدث وبعض " +"البرامج الأخرى. يمكنه ضغط بيانات وي المشفرة بكفاءة ، ولكن ليس البيانات غير " +"المرغوب فيها (ما لم تتم إزالتها)\n" +"\n" +"RVZ: تنسيق مضغوط متقدم متوافق مع دولفين 5.0-12188 والإصدارات الأحدث. يمكنه " +"ضغط البيانات غير المرغوب فيها وبيانات وي المشفرة بكفاءة" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr " أيقونة" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" @@ -5355,11 +5527,11 @@ msgstr "" "مناسب للألعاب القائمة على الدوران مع عناصر تحكم حساسة للتوقيت ، مثل لعبة " "الجولف." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "إنشاء هوية " -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5414,7 +5586,7 @@ msgstr "تجاهل تنسيق التغييرات " msgid "Ignore for this session" msgstr "تجاهل" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5422,7 +5594,7 @@ msgid "" "checked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5443,30 +5615,30 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "النسخة الاحتياطية BootMii NAND استيراد" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "فشل الاستيراد" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "استيراد حفظ وي" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr " NAND استيراد النسخ الاحتياطي" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" @@ -5475,11 +5647,20 @@ msgstr "" "NAND استيراد النسخ الاحتياطي\n" "%1s الوقت المنقضي" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "في اللعبة؟" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "متضمن: %1" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "متضمن: 0" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5532,8 +5713,8 @@ msgstr "معلومات" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "المعلومات" @@ -5542,10 +5723,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "منع شاشة التوقف أثناء المحاكاة" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "إدخال" @@ -5559,16 +5740,22 @@ msgstr "قوة الإدخال المطلوبة للتفعيل." msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "Insert &nop" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "SD Card ادرج" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "مفحوصه" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "تثبيت" @@ -5580,7 +5767,7 @@ msgstr "(%1) تثبيت القسم" msgid "Install Update" msgstr "تثبيت التحديث" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "WAD تثبيت" @@ -5596,11 +5783,11 @@ msgstr "Instr." msgid "Instruction" msgstr "تعليمات" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "نقطة توقف التعليمات" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "التعليمات" @@ -5618,7 +5805,7 @@ msgid "Interface" msgstr "الواجهة" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Internal LZO Error - compression failed" @@ -5627,27 +5814,27 @@ msgstr "Internal LZO Error - compression failed" msgid "Internal LZO Error - decompression failed" msgstr "Internal LZO Error - decompression failed" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Internal LZO Error - lzo_init() failed" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "الدقة الداخلية" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "الدقة الداخلية" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5655,11 +5842,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "Interpreter (بطيء)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "Interpreter Core" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "تعبير غير صالح" @@ -5667,7 +5854,7 @@ msgstr "تعبير غير صالح" msgid "Invalid Mixed Code" msgstr "رمز مختلط غير صالح" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "حزمة غير صالحة 1% مقدمة :2%" @@ -5676,15 +5863,15 @@ msgstr "حزمة غير صالحة 1% مقدمة :2%" msgid "Invalid Player ID" msgstr "معرف لاعب غير صالح" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "Invalid RSO module address: %1" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "مكدس استدعاء غير صالح" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "المجموع الاختباري غير صالح." @@ -5692,11 +5879,11 @@ msgstr "المجموع الاختباري غير صالح." msgid "Invalid game." msgstr "لعبة غير صالحة" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "المضيف غير صالح" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "إدخال غير صالح للحقل \"%1\"" @@ -5709,31 +5896,31 @@ msgstr "إدخال غير صالح المقدمة" msgid "Invalid literal." msgstr "قيمة حرفية غير صحيحة" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "تم إعطاء معلمات غير صالحة للبحث" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "كلمة مرور المقدمة غير صالحة." -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "تسجيل الملف غير صالح" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "معلمات البحث غير صالحة ( أي كائن مختارة)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "سلسلة البحث غير صالحة ( لا يمكن تحويل إلى رقم )" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "سلسلة البحث غير صالحة ( فقط حتى أطوال سلسلة مدعومة)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "معرف عنوان غير صالح." @@ -5742,8 +5929,8 @@ msgid "Invalid watch address: %1" msgstr "%1 عنوان الساعة غير صالح" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "الإيطالية" @@ -5751,11 +5938,11 @@ msgstr "الإيطالية" msgid "Italy" msgstr "إيطاليا" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "JIT Block Linking Off" @@ -5763,63 +5950,63 @@ msgstr "JIT Block Linking Off" msgid "JIT Blocks" msgstr "JIT Blocks" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "JIT Branch Off" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "JIT FloatingPoint Off" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "JIT Integer Off" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "JIT LoadStore Floating Off" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "JIT LoadStore Off" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "JIT LoadStore Paired Off" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "JIT LoadStore lXz Off" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "JIT LoadStore lbzx Off" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "JIT LoadStore lwz Off" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "JIT Off (JIT Core)" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "JIT Paired Off" #: Source/Core/DolphinQt/Settings/AdvancedPane.cpp:31 msgid "JIT Recompiler for ARM64 (recommended)" -msgstr "" +msgstr "JIT Recompiler for ARM64 (موصى به)" #: Source/Core/DolphinQt/Settings/AdvancedPane.cpp:30 msgid "JIT Recompiler for x86-64 (recommended)" -msgstr "" +msgstr "JIT Recompiler for x86-64 (موصى به)" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "JIT Register Cache Off" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "JIT SystemRegisters Off" @@ -5830,12 +6017,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "اليابان" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "اليابانية" @@ -5855,12 +6042,12 @@ msgstr "الاحتفاظ بالإطار في الأعلى" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "احتفظ بالعناوين حيث القيمة في الذاكرة" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "لوحة المفاتيح" @@ -5873,20 +6060,20 @@ msgstr "لوحة المفاتيح" msgid "Keys" msgstr "مفاتيح" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "كيلوبايت" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "طرد لاعب" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "كوريا" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "الكورية" @@ -5914,7 +6101,7 @@ msgstr "LR حفظ" msgid "Label" msgstr "ضع الكلمة المناسبة" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "آخر قيمة" @@ -5924,19 +6111,19 @@ msgstr "وقت الإستجابة" #: Source/Core/DolphinQt/Settings/AudioPane.cpp:434 msgid "Latency: ~10 ms" -msgstr "" +msgstr "~10ms :وقت الإستجابة" #: Source/Core/DolphinQt/Settings/AudioPane.cpp:436 msgid "Latency: ~20 ms" -msgstr "" +msgstr "~20ms :وقت الإستجابة" #: Source/Core/DolphinQt/Settings/AudioPane.cpp:440 msgid "Latency: ~40 ms" -msgstr "" +msgstr "~40ms :وقت الإستجابة" #: Source/Core/DolphinQt/Settings/AudioPane.cpp:438 msgid "Latency: ~80 ms" -msgstr "" +msgstr "~80ms :وقت الإستجابة" #: Source/Core/Core/FreeLookManager.cpp:84 #: Source/Core/Core/HW/WiimoteEmu/Extension/TaTaCon.cpp:33 @@ -6000,15 +6187,15 @@ msgstr "" msgid "License" msgstr "ترخيص" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "الحد من سرعة الرفع المقسم:" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "قائمة الأعمدة" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "قائمة" @@ -6017,17 +6204,17 @@ msgid "Listening" msgstr "الاستماع" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "تحميل" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "Load &Bad Map File..." -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "Load &Other Map File..." @@ -6035,7 +6222,7 @@ msgstr "Load &Other Map File..." msgid "Load Custom Textures" msgstr "تحميل النسيج المخصص" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "تحميل قائمة جيم كيوب الرئيسية " @@ -6044,7 +6231,7 @@ msgstr "تحميل قائمة جيم كيوب الرئيسية " msgid "Load Last State" msgstr "تحميل الحالة الاخيرة " -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "مسار التحميل" @@ -6137,23 +6324,23 @@ msgstr "تحميل الحالة فتحة 8" msgid "Load State Slot 9" msgstr "تحميل الحالة فتحة 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "تحميل الحالة من ملف" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "تحميل الحالة من الفتحة المحددة" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "تحميل الحالة من فتحة" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "تحميل حفظ وي" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "%1 تحميل قائمة نظام وي" @@ -6161,12 +6348,12 @@ msgstr "%1 تحميل قائمة نظام وي" msgid "Load from Selected Slot" msgstr "التحميل من الفتحة المحددة" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "تحميل من الفتحة %1 - %2" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "Load map file" @@ -6174,7 +6361,7 @@ msgstr "Load map file" msgid "Load..." msgstr "تحميل" -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "الرموز المحملة من '%1'" @@ -6185,7 +6372,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "محلي" @@ -6194,7 +6381,7 @@ msgid "Lock Mouse Cursor" msgstr "قفل مؤشر الماوس" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "سجل" @@ -6202,7 +6389,7 @@ msgstr "سجل" msgid "Log Configuration" msgstr "تكوين السجل" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "Log JIT Instruction Coverage" @@ -6227,9 +6414,9 @@ msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:123 msgid "Loop" -msgstr "" +msgstr "التكرار الحلقي" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "فقد الاتصال بالخادم" @@ -6258,7 +6445,7 @@ msgstr "MMU" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "ملفات MadCatz Gameshark" @@ -6268,16 +6455,16 @@ msgstr "العصا الرئيسية" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" -msgstr "المنتج" +msgstr "المطور" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:124 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:157 msgid "Maker:" -msgstr "المنتج" +msgstr "المطور" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6285,15 +6472,15 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "NAND إدارة" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:146 msgid "Manual Texture Sampling" -msgstr "" +msgstr "أخذ عينات النسيج يدويا" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "تعيين" @@ -6301,15 +6488,15 @@ msgstr "تعيين" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "وجد تطابق" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "المخزن المؤقت الأقصى" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "%1 تم تغيير حجم المخزن المؤقت الأقصى إلى" @@ -6318,7 +6505,7 @@ msgstr "%1 تم تغيير حجم المخزن المؤقت الأقصى إلى msgid "Maximum tilt angle." msgstr "أقصى زاوية الميل." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "قد يسبب تباطؤ في قائمة وي وبعض الألعاب." @@ -6327,11 +6514,11 @@ msgstr "قد يسبب تباطؤ في قائمة وي وبعض الألعاب." msgid "Medium" msgstr "متوسطة" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "ذاكرة" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "نقطة توقف الذاكرة" @@ -6339,7 +6526,7 @@ msgstr "نقطة توقف الذاكرة" msgid "Memory Card" msgstr "بطاقة الذاكرة" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "مدير بطاقة الذاكرة" @@ -6357,7 +6544,7 @@ msgstr "" msgid "Memory Override" msgstr "تجاوز الذاكرة" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "خيارات نقطة توقف الذاكرة" @@ -6373,7 +6560,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6385,13 +6572,13 @@ msgstr "" "so it is recommended that you keep backups of both NANDs. Are you sure you " "want to continue?" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "ميغابايت" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "ميكروفون" @@ -6399,21 +6586,21 @@ msgstr "ميكروفون" msgid "Misc" msgstr "متنوعة" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "إعدادات متنوعة" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" " \n" "عدم التطابق بين عدد الكتل الحرة في الرأس والكتل غير المستخدمة فعليًا." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "عدم تطابق بين هياكل البيانات الداخلية." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6436,12 +6623,12 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "%1 تم العثور على وحدات" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "احادي" @@ -6453,11 +6640,11 @@ msgstr "أحادي الظلال" msgid "Monospaced Font" msgstr "خط أحادي المسافة" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "إدخال الحركة" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "محاكاة الحركة" @@ -6497,10 +6684,10 @@ msgstr "فيلم" msgid "N&o to All" msgstr "لا للكل" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "NAND تحقق" @@ -6508,26 +6695,26 @@ msgstr "NAND تحقق" msgid "NKit Warning" msgstr "NKit تحذير" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "NTSC-K" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "الاسم" @@ -6539,37 +6726,37 @@ msgstr "الاسم لعلامة جديدة:" msgid "Name of the tag to remove:" msgstr "اسم العلامة المراد إزالتها:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "اسم الجلسة الخاصة بك هو مبين في متصفح الخادم" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "الاسم" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Native (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "لعب عبر الشبكة" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "مستعرض جلسات اللعب عبر الشبكة" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "اعدادات لعب عبر الشبكة" @@ -6577,16 +6764,16 @@ msgstr "اعدادات لعب عبر الشبكة" msgid "Netherlands" msgstr "هولندا" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "Netplay has desynced in NetPlay_GetButtonPress()" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "Netplay has desynced. There is no way to recover from this." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "شبكة الاتصال" @@ -6607,11 +6794,11 @@ msgstr "عدم التحديث التلقائي" msgid "New" msgstr "جديد" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "نقطة توقف جديدة" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "بحث جديد" @@ -6619,7 +6806,7 @@ msgstr "بحث جديد" msgid "New Tag..." msgstr "علامة جديدة" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "تم إنشاء هوية جديدة ." @@ -6636,7 +6823,7 @@ msgstr "علامة جديدة" msgid "Next Game Profile" msgstr "ملف تعريف اللعبة التالية" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "التالية" @@ -6645,17 +6832,17 @@ msgstr "التالية" msgid "Next Profile" msgstr "ملف التعريف التالي" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "اللقب طويل جدًا" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "الاسم" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "لا" @@ -6663,6 +6850,10 @@ msgstr "لا" msgid "No Adapter Detected" msgstr "لم يتم اكتشاف محول" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "لا يوجد إخراج الصوت" @@ -6673,24 +6864,20 @@ msgstr "لا يوجد إخراج الصوت" msgid "No Compression" msgstr "لا يوجد ضغط" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "لا تطابق" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "لا قيمة مقيمة" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "لا يوجد وصف متاح" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "لا اخطاء" @@ -6702,15 +6889,15 @@ msgstr "لم يتم تحديد ملحق" msgid "No file loaded / recorded." msgstr "لا يوجد ملف تحميل / مسجل." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "لا توجد لعبة قيد التشغيل" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "لا توجد لعبة قيد التشغيل" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "لم يتم اكتشاف أية مشكلات." @@ -6718,11 +6905,15 @@ msgstr "لم يتم اكتشاف أية مشكلات." msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "لا توجد وظائف ممكنة متبقية. إعادة ضبط" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "لا توجد مشاكل." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6736,7 +6927,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "'{0}' لم يتم العثور على ملفات تعريف لإعداد اللعبة" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "لم يتم تحميل التسجيل" @@ -6744,17 +6935,13 @@ msgstr "لم يتم تحميل التسجيل" msgid "No save data found." msgstr "لم يتم العثور على حفظ البيانات" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "No undo.dtm found, aborting undo load state to prevent movie desyncs" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "لا قيمة مقدمة." - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6764,7 +6951,7 @@ msgstr "لا شيء" msgid "North America" msgstr "أمريكا الشمالية" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "لم يتم العثور" @@ -6772,11 +6959,11 @@ msgstr "لم يتم العثور" msgid "Not Set" msgstr "غير مجموعة" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "ليس كل اللاعبين لديهم اللعبة. هل تريد حقا أن تبدأ؟" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6784,7 +6971,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6844,13 +7031,13 @@ msgstr " توجه نونشوك " msgid "Nunchuk Stick" msgstr "عصا نونشوك" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "موافق" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "%1 موضوع" @@ -6863,11 +7050,11 @@ msgid "Oceania" msgstr "أوقيانوسيا" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "إيقاف" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6879,11 +7066,11 @@ msgstr "تمكين" msgid "On Movement" msgstr "عند الحركة" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "وثائق على الانترنت" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" @@ -6891,7 +7078,7 @@ msgstr "" "إلحاق رموز فقط بالبادية:\n" "(فارغ لكل الرموز)" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6908,7 +7095,7 @@ msgstr "فتح" msgid "Open &Containing Folder" msgstr "فتح موقع الملف" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "فتح" @@ -6922,7 +7109,7 @@ msgstr "فتح مجلد حفظ جيم كيوب" #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:60 msgid "Open Riivolution XML..." -msgstr "" +msgstr "Riivolution XML فتح" #: Source/Core/DolphinQt/GameList/GameList.cpp:427 msgid "Open Wii &Save Folder" @@ -6956,7 +7143,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "مشغل" @@ -6974,7 +7161,7 @@ msgstr "خيارات" msgid "Orange" msgstr "البرتقالي" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "Orbital" @@ -6982,7 +7169,7 @@ msgstr "Orbital" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "أخرى" @@ -6995,11 +7182,11 @@ msgstr "(%1) قسم آخر" msgid "Other State Hotkeys" msgstr "حالة أخرى مفاتيح الاختصار" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "إدارة الحالة الأخرى" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "لعبة أخرى" @@ -7007,12 +7194,12 @@ msgstr "لعبة أخرى" msgid "Overlay Information" msgstr "تراكب المعلومات" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "تشغيل تسجيل الإدخال" -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -7023,11 +7210,11 @@ msgstr "PCAP" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:115 msgid "PNG Compression Level" -msgstr "" +msgstr "PNG مستوى ضغط" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:114 msgid "PNG Compression Level:" -msgstr "" +msgstr "PNG مستوى ضغط" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:195 msgid "PNG image file (*.png);; All Files (*)" @@ -7037,7 +7224,7 @@ msgstr "PNG image file (*.png);; All Files (*)" msgid "PPC Size" msgstr "PPC حجم" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "PPC vs Host" @@ -7054,7 +7241,7 @@ msgstr "منصات" msgid "Parameters" msgstr "المعلمات" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -7063,23 +7250,23 @@ msgstr "" msgid "Parsing Error" msgstr "تحليل خاطئ" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "Passive" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "المرور عبر محول بلوتوث" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "كلمة المرور" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "(leave empty for none) كلمه المرور للانضمام إلى لعبتك" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "كلمة المرور؟" @@ -7100,7 +7287,7 @@ msgid "Path:" msgstr "مسار" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "مسارات" @@ -7108,7 +7295,7 @@ msgstr "مسارات" msgid "Pause" msgstr "إيقاف مؤقت" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "وقفة في نهاية الفيلم" @@ -7131,11 +7318,11 @@ msgstr "ذروة سرعة الحركات إلى موقف محايد." msgid "Peak velocity of outward swing movements." msgstr "سرعة الذروة لحركات التأرجح الخارجية." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "لكل بكسل إضاءة" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "تحديث النظام عبر الإنترنت" @@ -7145,23 +7332,23 @@ msgstr "تحديث النظام" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "فيزيائي" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "مساحة العنوان الفعلي" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "بيتابايت" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "debug اختر خط" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "Ping" @@ -7174,9 +7361,9 @@ msgid "Pitch Up" msgstr "Pitch Up" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" -msgstr "منصة" +msgstr "المنصة" #: Source/Core/DolphinQt/ToolBar.cpp:122 Source/Core/DolphinQt/ToolBar.cpp:167 msgid "Play" @@ -7194,19 +7381,19 @@ msgstr "تشغيل التسجيل" msgid "Playback Options" msgstr "خيارات التشغيل" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "لاعب" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "اللاعبين" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." -msgstr "" +msgstr "يرجى بدء لعبة قبل بدء البحث باستخدام مناطق الذاكرة القياسية" #. i18n: "Point" refers to the action of pointing a Wii Remote. #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:208 @@ -7214,29 +7401,29 @@ msgstr "" msgid "Point" msgstr "مؤشر" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "منفذ %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "منفذ" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "تم اكتشاف مزامنة محتملة: %1 قد تمت مزامنتها في الإطار %2" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "تأثير ما بعد المعالجة" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "بعد معالجة التأثير" @@ -7248,15 +7435,15 @@ msgstr "التكوين بعد تظليل" msgid "Prefetch Custom Textures" msgstr "جلب النسيج المخصص المسبق " -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7295,7 +7482,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "ملف تعريف اللعبة السابقة" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "السابقة" @@ -7306,15 +7493,15 @@ msgstr "ملف التعريف السابق" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "خاصة" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "خاصة و عامة" @@ -7322,7 +7509,7 @@ msgstr "خاصة و عامة" msgid "Problem" msgstr "المشكلة" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." @@ -7330,7 +7517,7 @@ msgstr "" "تم العثور علي مشاكل ذات خطورة عالية. فان اللعبة علي الأرجح لا تعمل علي " "الإطلاق" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." @@ -7338,7 +7525,7 @@ msgstr "" "تم العثور علي مشاكل ذات خطورة منخفضة. فإنها علي الأرجح لا تمنع اللعبة من " "التشغيل" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." @@ -7346,7 +7533,7 @@ msgstr "" "تم العثور علي مشاكل ذات خطورة متوسطة. قد لا تعمل اللعبة بأكملها أو أجزاء " "معينه من اللعبة بشكل صحيح" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "الملف الشخصي" @@ -7360,15 +7547,15 @@ msgstr "عداد البرنامج" msgid "Progress" msgstr "التقدم" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "عامة" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "أزالة ذاكره التخزين المؤقت لقائمة الألعاب" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7380,11 +7567,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "QT_LAYOUT_DIRECTION" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "(QoS) تعذر تمكين جوده الخدمة ." -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "تم تمكين جودة الخدمة (QoS) بنجاح." @@ -7396,12 +7583,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "مشكلة" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "خروج" @@ -7421,11 +7608,11 @@ msgstr "R-قوة ضغطة" msgid "READY" msgstr "جاهز" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "RSO Modules" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "RSO الكشف التلقائي" @@ -7438,44 +7625,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "نطاق" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "نهاية النطاق:" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "بداية النطاق:" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "إعادة&مكان التعليمات" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "اقرأ" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "القراءة والكتابة" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "يقرأ فقط" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "قراءة أو كتابة" @@ -7483,11 +7670,11 @@ msgstr "قراءة أو كتابة" msgid "Read-Only Mode" msgstr "وضع القراءة فقط" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "لوح الميزان حقيقي" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "ريموت وي الحقيقي" @@ -7500,11 +7687,11 @@ msgstr "إعادة المركز" msgid "Record" msgstr "تسجيل" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "سجل المدخلات" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "تسجيل" @@ -7529,7 +7716,7 @@ msgstr "اليسار أحمر" msgid "Red Right" msgstr "اليمين أحمر" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7545,16 +7732,16 @@ msgstr "Redump.org حالة" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "تحديث" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "تحديث القيم الحالية" @@ -7562,26 +7749,26 @@ msgstr "تحديث القيم الحالية" msgid "Refresh Game List" msgstr "تحديث قائمة اللعبة" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "فشل التحديث. الرجاء تشغيل اللعبة قليلاً وحاول مرة أخرى" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "تحديث القيم الحالية" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "تحديث..." #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "المنطقة" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "المنطقة" @@ -7601,16 +7788,16 @@ msgstr "إدخال الإدخال النسبي" msgid "Remind Me Later" msgstr "ذكرني لاحقا" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "إزالة" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "فشل الإزالة" @@ -7636,8 +7823,8 @@ msgstr "" "(إلا إذا قمت بحزم ملف ISO بتنسيق مضغوط مثل ZIP بعد ذلك)\n" "هل تريد المتابعة على أية حال؟" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "إعادة تسمية الرمز" @@ -7670,29 +7857,37 @@ msgstr "طلب الانضمام إلى المجموعة" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "إعادة تعيين" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "إعادة تعيين الكل" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "إعادة النتائج" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "إعادة تعيين خادم Traversal" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "%1:%2 أعاده تعيين خادم الاجتياز إلى" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "أعاده تعيين إعدادات الاجتياز" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "إعادة تعيين القيم" @@ -7700,15 +7895,15 @@ msgstr "إعادة تعيين القيم" msgid "Reset View" msgstr "إعادة تعيين طريقة العرض" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "إعادة تعيين كافة اقتران ريموت وي المحفوظة" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "أدارة حزمة الموارد" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "مسار حزمة الموارد" @@ -7720,11 +7915,11 @@ msgstr "مطلوب إعادة تشغيل" msgid "Restore Defaults" msgstr "استعادة الضبط الافتراضي" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "استعادة التعليمات" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "إعادة المحاولة" @@ -7733,7 +7928,7 @@ msgstr "إعادة المحاولة" msgid "Return Speed" msgstr "عودة السرعة" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "إصدار" @@ -7791,11 +7986,11 @@ msgstr "Roll Left" msgid "Roll Right" msgstr "Roll Right" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "معرف الغرفة" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "دوران" @@ -7804,12 +7999,13 @@ msgstr "دوران" msgid "Rotation applied at extremities of swing." msgstr "تطبيق التناوب في أطراف التمايل." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7819,11 +8015,11 @@ msgstr "" msgid "Rumble" msgstr "هزاز" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "Run &To Here" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "تشغيل جيم بوي أدفانس في خيوط مخصصة" @@ -7831,15 +8027,15 @@ msgstr "تشغيل جيم بوي أدفانس في خيوط مخصصة" msgid "Russia" msgstr "روسيا" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "SD Card" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "SD Card Image (*.raw);;All Files (*)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "SD Card مسار" @@ -7855,7 +8051,7 @@ msgstr "SELECT" msgid "SHA-1:" msgstr "SHA-1:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "SP1:" @@ -7869,11 +8065,11 @@ msgstr "SSL سياق" msgid "START" msgstr "START" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "حفظ الرموز" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "حفظ الحالة" @@ -7883,7 +8079,7 @@ msgid "Safe" msgstr "آمنة" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7896,7 +8092,7 @@ msgstr "حفظ الكل" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "حفظ التصدير" @@ -7911,17 +8107,17 @@ msgstr "احفظ الملف إلى" #. i18n: Noun (i.e. the data saved by the game) #: Source/Core/DolphinQt/GBAWidget.cpp:405 msgid "Save Game" -msgstr "" +msgstr "حفظ اللعبة" #: Source/Core/DolphinQt/GBAWidget.cpp:242 msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "حفظ الاستيراد" @@ -7931,9 +8127,9 @@ msgstr "حفظ الحالة القديمة" #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:325 msgid "Save Preset" -msgstr "" +msgstr "حفظ الإعداد المسبق" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "حفظ ملف التسجيل باسم" @@ -7983,23 +8179,23 @@ msgstr "حفظ الحالة فتحة 8" msgid "Save State Slot 9" msgstr "حفظ الحالة فتحة 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "حفظ الحالة في ملف" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "حفظ الحالة إلى الفتحة الأقدم" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "حفظ الحالة إلى الفتحة المحددة" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "حفظ الحالة إلى فتحة" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "Save Symbol Map &As..." @@ -8007,23 +8203,23 @@ msgstr "Save Symbol Map &As..." msgid "Save Texture Cache to State" msgstr "حفظ النسيج في ذاكرة التخزين المؤقت إلى الحالة" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "حفظ و تحميل الحالة" #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:63 msgid "Save as Preset..." -msgstr "" +msgstr "حفظ كإعداد مسبق" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:183 msgid "Save as..." msgstr "حفظ بأسم" -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "حفظ ملف الإخراج المجمع بأسم" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" @@ -8033,15 +8229,15 @@ msgstr "" "النظر في النسخ الاحتياطي للبيانات الحالية قبل الكتابة.\n" "الكتابة الآن؟" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "احفظ في نفس الدليل مثل ملف القرص" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "Save map file" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "احفظ ملف التوقيع" @@ -8049,7 +8245,7 @@ msgstr "احفظ ملف التوقيع" msgid "Save to Selected Slot" msgstr "الحفظ إلى الفتحة المحددة" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "حفظ إلى الفتحة %1 - %2" @@ -8057,23 +8253,23 @@ msgstr "حفظ إلى الفتحة %1 - %2" msgid "Save..." msgstr "حفظ" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "لا يمكن إعادة تعيين اقتران ريموت وي المحفوظة إلا عند تشغيل لعبة وي." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "حفظ" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "EFB تحجيم نسخة" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "Scan succeeded" @@ -8081,36 +8277,36 @@ msgstr "Scan succeeded" msgid "ScrShot" msgstr "لقطة للشاشة" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "بحث" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "البحث عن عنوان" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "بحث في الكائن الحالي" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "البحث في المجلدات الفرعية" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "البحث والتصفية" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "ابحث عن تعليمات" @@ -8118,7 +8314,7 @@ msgstr "ابحث عن تعليمات" msgid "Search games..." msgstr "بحث عن الالعاب" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "تعليمات البحث" @@ -8142,28 +8338,28 @@ msgstr "القسم الذي يحتوي على معظم الإعدادات الم msgid "Security options" msgstr "خيارات الأمان" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "حدد" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "تحديد مسار التفريغ" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "حدد تصدير الدليل" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "حدد جيم بوي أدفانس BIOS" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "حدد قرص جيم بوي أدفانس" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "حدد مسار الحفظ جيم بوي أدفانس" @@ -8171,11 +8367,11 @@ msgstr "حدد مسار الحفظ جيم بوي أدفانس" msgid "Select Last State" msgstr "حدد الحالة الأخيرة" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "حدد مسار التحميل" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "حدد مسار حزمة الموارد" @@ -8183,7 +8379,7 @@ msgstr "حدد مسار حزمة الموارد" msgid "Select Riivolution XML file" msgstr "Riivolution XML حدد ملف" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "%1 - %2 حدد الفتحة" @@ -8191,7 +8387,7 @@ msgstr "%1 - %2 حدد الفتحة" msgid "Select State" msgstr "اختر الحالة" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "تحديد فتحة الحالة" @@ -8235,41 +8431,45 @@ msgstr "حفظ حالة 8" msgid "Select State Slot 9" msgstr "حفظ حالة 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" -msgstr "" +msgstr "WFS حدد مسار" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "NAND حدد جذر وي " #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "اختر دليل" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "حدد ملف" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "اختر لعبة" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "SD Card حدد صورة" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "اختر لعبة" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "NAND حدد عنوانًا لتثبيته إلى" @@ -8277,11 +8477,11 @@ msgstr "NAND حدد عنوانًا لتثبيته إلى" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "RSO حدد عنوان وحدة" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "حدد ملف التسجيل للتشغيل" @@ -8289,12 +8489,12 @@ msgstr "حدد ملف التسجيل للتشغيل" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "(OTP/SEEPROM dump) حدد ملف المفاتيح" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "حدد حفظ الملف" @@ -8310,15 +8510,15 @@ msgstr "حدد المكان الذي تريد حفظ الصور المحولة msgid "Selected Font" msgstr "الخط المحدد" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "اختيار الملف التحكم الشخصي غير موجود " #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "اللعبة المختارة غير موجودة في قائمة الألعاب!" @@ -8342,7 +8542,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8382,11 +8582,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "إرسال" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "موضع الاستشعار" @@ -8398,56 +8598,64 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "IP عنوان" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "منفذ الخادم" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "الخادم رفض محاولة الاجتياز" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "تعيين القيمة" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "تعيين الكمبيوتر" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "تعيين القرص افتراضي " -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "اضبط ملف بطاقة الذاكرة على الفتحة A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "اضبط ملف بطاقة الذاكرة على الفتحة B" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "Set symbol &end address" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "Set symbol &size" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "تعيين عنوان نهاية الرمز" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "تعيين حجم الرمز (%1):" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8457,7 +8665,7 @@ msgstr "" "games.\n" "قد لا تعمل لجميع الألعاب." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "تحدد لغة نظام وي " @@ -8466,8 +8674,10 @@ msgid "" "Sets the latency in milliseconds. Higher values may reduce audio crackling. " "Certain backends only." msgstr "" +"يضبط وقت الاستجابة بالمللي ثانية. قد تقلل القيم الأعلى طقطقة الصوت. خلفيات " +"معينة فقط." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8504,11 +8714,11 @@ msgstr "" " Falseتقصير أوقات التحميل ولكن قد يكسر بعض الألعاب. يمكن أن يكون لها " "آثار سلبية على الأداء. افتراضيات إلى " -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "السجل" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "شريط الأدوات" @@ -8516,15 +8726,15 @@ msgstr "شريط الأدوات" msgid "Show Active Title in Window Title" msgstr "إظهار العنوان النشط في عنوان الإطار" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "عرض الكل" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "أستراليا" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "عرض اللعبة الحالية على الخلاف" @@ -8532,7 +8742,7 @@ msgstr "عرض اللعبة الحالية على الخلاف" msgid "Show Debugging UI" msgstr "عرض تصحيح واجهة المستخدم" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "ELF/DOL" @@ -8540,43 +8750,43 @@ msgstr "ELF/DOL" msgid "Show FPS" msgstr "عرض عدد الاطارات" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "عرض عداد الإطار" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "فرنسا" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "جيم كيوب" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "ألمانيا" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "Show Golf Mode Overlay" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "عرض مدخلات العرض" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "ايطاليا" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" -msgstr "" +msgstr "اليابان" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "كوريا" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "عرض عداد التأخر" @@ -8584,7 +8794,7 @@ msgstr "عرض عداد التأخر" msgid "Show Language:" msgstr "عرض اللغة" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "تكوين السجل" @@ -8596,7 +8806,7 @@ msgstr "عرض رسائل اللعب عبر الشبكة" msgid "Show NetPlay Ping" msgstr "في اللعب عبر الشبكة Ping عرض الـ" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "هولندا" @@ -8604,7 +8814,7 @@ msgstr "هولندا" msgid "Show On-Screen Display Messages" msgstr "عرض الرسائل التي تظهر على الشاشة " -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "أوروبا" @@ -8613,23 +8823,23 @@ msgstr "أوروبا" msgid "Show PC" msgstr "عرض الكمبيوتر" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "عرض المنصات" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "عرض المناطق" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" -msgstr "" +msgstr "إظهار عداد إعادة التسجيل" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "روسيا" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "اسبانيا" @@ -8638,46 +8848,50 @@ msgstr "اسبانيا" msgid "Show Statistics" msgstr "عرض الإحصاءات" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "عرض ساعة النظام" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "تايوان" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "امريكا" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "غير معروف" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "وي" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "العالم" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "تظهر في الذاكرة" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "إظهار في الرموز" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "إظهار في مستعرض الخادم" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "أظهر الهدف في الذاكرة" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8709,7 +8923,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Side-by-Side" @@ -8725,16 +8939,31 @@ msgstr "تبديل جانبية" msgid "Sideways Wii Remote" msgstr "انحراف ريموت وي" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "قاعدة بيانات التوقيع" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "موقع 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "موقع 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "موقع 8" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "عدد صحيح موقّع" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "الصينية المبسطة" @@ -8742,7 +8971,7 @@ msgstr "الصينية المبسطة" msgid "Simulate DK Bongos" msgstr "محاكاة الطبول" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "Six Axis" @@ -8771,7 +9000,7 @@ msgstr "تخطي الرسم" msgid "Skip EFB Access from CPU" msgstr "من المعالج EFB تخطي الوصول " -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "تخطي القائمة الرئيسية" @@ -8779,7 +9008,7 @@ msgstr "تخطي القائمة الرئيسية" msgid "Skip Presenting Duplicate Frames" msgstr "تخطي تقديم إطارات مكررة" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8793,19 +9022,19 @@ msgstr "" msgid "Slider Bar" msgstr "شريط التمرير" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "A فتحة" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "A فتحة" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "B فتحة" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "B فتحة" @@ -8823,7 +9052,7 @@ msgstr "Socket table" msgid "Software Renderer" msgstr "Software Renderer" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "لا يمكن قراءة بعض البيانات." @@ -8844,11 +9073,11 @@ msgstr "" "يرجى التحقق من القيم المميزة." #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "رتب ترتيب أبجدي" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "الصوت" @@ -8861,8 +9090,8 @@ msgid "Spain" msgstr "اسبانيا" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "الأسبانية" @@ -8870,7 +9099,7 @@ msgstr "الأسبانية" msgid "Speaker Pan" msgstr "مكبر الصوت" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "مستوى الصوت" @@ -8905,7 +9134,7 @@ msgstr "سرعة" msgid "Speed up Disc Transfer Rate" msgstr "تسريع معدل نقل القرص" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "Stable (مرة كل سنة)" @@ -8917,44 +9146,46 @@ msgstr "نهاية المكدس" msgid "Stack start" msgstr "بداية المكدس" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "وحدة تحكم القياسية" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "تشغيل" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "بدء &اللعب عبر الشبكة" #: Source/Core/DolphinQt/CheatsManager.cpp:106 msgid "Start New Cheat Search" -msgstr "ابدأ بحث أسرار جديد" +msgstr "بدء بحث أسرار جديدة" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "بدء التسجيل" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "بدء التسجيل" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:63 msgid "Start in Fullscreen" -msgstr "ابدأ بملء الشاشة" +msgstr "بدء بملء الشاشة" #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:47 msgid "Start with Riivolution Patches" -msgstr "Riivolution ابدأ مع تصحيحات" +msgstr "Riivolution بدء مع تصحيحات" #: Source/Core/DolphinQt/GameList/GameList.cpp:367 msgid "Start with Riivolution Patches..." -msgstr "Riivolution ابدأ مع تصحيحات" +msgstr "Riivolution بدء مع تصحيحات" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "بدأت اللعبة" @@ -8965,7 +9196,7 @@ msgstr "بدأت اللعبة" msgid "State" msgstr "الحالة" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "عجلة القيادة" @@ -8993,19 +9224,19 @@ msgstr "خطوة لخارج" msgid "Step Over" msgstr "خطوة أكثر" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "الخروج ناجح!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "مهلة الخروج !" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "خطوة أكثر في التقدم" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "خطوة ناجحة!" @@ -9014,20 +9245,20 @@ msgstr "خطوة ناجحة!" msgid "Stepping" msgstr "التنقل" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "استريو" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "3D وضع ثلاثي الأبعاد" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "3D وضع" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "التنظير المجسم" @@ -9048,11 +9279,15 @@ msgstr "عصا" msgid "Stop" msgstr "إيقاف" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "إيقاف تشغيل / تسجيل الإدخال" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "إيقاف التسجيل" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "توقفت اللعبة" @@ -9066,7 +9301,7 @@ msgstr "نسخ إلى النسيج فقط EFB تخزين " msgid "Store XFB Copies to Texture Only" msgstr "نسخ إلى نسيج فقط XFB تخزين" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -9075,7 +9310,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -9088,7 +9323,7 @@ msgstr "" msgid "Stretch to Window" msgstr "تمتد إلى النافذة" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "مزامنة الإعدادات الصارمة" @@ -9111,16 +9346,16 @@ msgstr "مرقم" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "ناجح" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "تمت إضافته بنجاح إلى فهرس اللعب عبر الشبكة" @@ -9130,11 +9365,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "تم تحويل%n صورة القرص (اقراص) بنجاح" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "'%1'. تم الحذف بنجاح" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -9143,7 +9378,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "تم تصدير ملفات الحفظ بنجاح" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "تم استخراج الشهادات بنجاح من NAND" @@ -9155,12 +9390,12 @@ msgstr "تم استخراج الملف بنجاح." msgid "Successfully extracted system data." msgstr "استخرجت بنجاح بيانات النظام." -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "تم استيراد ملف الحفظ بنجاح" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "تم بنجاح تثبيت هذا العنوان على NAND." @@ -9172,16 +9407,16 @@ msgstr "تمت إزالة هذا العنوان بنجاح من NAND." msgid "Support" msgstr "الدعم" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "تنسيقات الملفات المدعومة" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "Supports SD and SDHC. Default size is 128 MB." #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "محيطي" @@ -9189,11 +9424,11 @@ msgstr "محيطي" msgid "Suspended" msgstr "معلق" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Swap Eyes" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9205,50 +9440,62 @@ msgstr "" msgid "Swing" msgstr "تمايل" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "A التبديل إلى" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "B التبديل إلى" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "رمز" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "رمز (1%) عنوان النهاية:" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "اسم الرمز" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "رموز" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "مزامنة" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "AR/Gecko مزامنة رموز" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "مزامنة جميع حفظ وي" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "مزامنة الحفظ" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "مزامنة ريموت وي الحقيقية و اقترانها" @@ -9264,37 +9511,37 @@ msgstr "" "Synchronizes the GPU and CPU threads to help prevent random freezes in Dual " "core mode. (ON = Compatible, OFF = Fast)" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "جارٍ مزامنة الرموز" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "جارٍ مزامنة الرموز" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "جارٍ مزامنة حفظ البيانات" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "لغة النظام" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "الإدخال" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "TAS أدوات" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "العلامات" @@ -9312,11 +9559,11 @@ msgstr "" msgid "Taiwan" msgstr "تايوان" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "لقطة للشاشة" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "اختبار" @@ -9325,7 +9572,7 @@ msgstr "اختبار" msgid "Texture Cache" msgstr "النسيج من ذاكره التخزين المؤقت" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "دقة ذاكرة التخزين المؤقت للنسيج" @@ -9347,7 +9594,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9361,7 +9608,7 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "أقسام نادرة مفقودة." -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." @@ -9369,7 +9616,7 @@ msgstr "" "NAND لا يمكن إصلاح\n" "يوصى بعمل نسخة احتياطية من بياناتك الحالية والبدء من جديد" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "NAND تم اصلاح" @@ -9408,7 +9655,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9422,7 +9669,7 @@ msgstr "(at {0:#x} - {1:#x}) تعذر قراءة القرص" msgid "The disc that was about to be inserted couldn't be found." msgstr "تعذر العثور على القرص الذي كان على وشك أن يتم إدراجه" -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9448,19 +9695,19 @@ msgstr "وحدة تحكم وي التي تمت محاكاتها محدثة با msgid "The entered MAC address is invalid." msgstr "عنوان ماك الذي تم إدخاله غير صالح" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "The entered PID is invalid." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "The entered VID is invalid." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "يحتوي التعبير على خطأ في بناء الجملة" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9516,7 +9763,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "لا يحتوي قرص اللعبة على أي معلومات تحديث قابلة للاستخدام." -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "اللعبة قيد التشغيل حاليا." @@ -9529,7 +9776,7 @@ msgstr "" "منطقة اللعبة لا تتطابق مع وحدة التحكم الخاصة بك. لتجنب حدوث مشكلات في قائمة " "النظام ، لا يمكن تحديث وحدة التحكم التي تمت محاكاتها باستخدام هذا القرص." -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9546,7 +9793,7 @@ msgstr "لا تتطابق التجزئة!" msgid "The hashes match!" msgstr "تطابق التجزئة" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9570,12 +9817,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "الملف الشخصي '1%' غير موجود" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9593,20 +9840,21 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "The resulting decrypted AR code doesn't contain any lines." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" +"%1 لا يمكن استخدام نفس الملف في فتحات متعددة؛ يتم استخدامه بالفعل من قبل " -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "إصدارات لعب عبر الشبكة الخاصة بالخادم والعميل غير متوافقة." -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "الخادم ممتلئ." -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "أرسل الخادم رسالة خطأ غير معروفة." @@ -9631,7 +9879,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "\"%1\" تحتوي بطاقة الذاكرة الهدف بالفعل على ملف" @@ -9683,7 +9931,7 @@ msgstr "لم تتم محاذاة القسم {0} بشكل صحيح" msgid "There are too many partitions in the first partition table." msgstr "هناك الكثير من الأقسام في جدول القسم الأول." -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "لا يوجد شيء للتراجع !" @@ -9726,7 +9974,7 @@ msgstr "" "يتم تعيين هذا العنوان الكوري لاستخدام نظام التشغيل الذي عاده لا يتم استخدامه " "علي وحدات التحكم الكورية. هذا من المحتمل ان يؤدي إلى خطا #002." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "جهاز يو إس بي مدرج بالفعل في القائمة المسموح لها" @@ -9746,7 +9994,7 @@ msgstr "" "This action replay simulator does not support codes that modify Action " "Replay itself." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "هذا لا يمكن التراجع عنه" @@ -9797,7 +10045,11 @@ msgstr "" "صورة القرص هذه صغيرة جدًا وتفتقر إلى بعض البيانات. المشكلة على الأرجح أن هذا " "قرص مزدوج الطبقة تم إلقاؤه كقرص أحادي الطبقة." -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "لا يحتوي هذا الملف على نظام ملفات وي صالح" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "BootMii NAND لا يبدو هذا الملف نسخة احتياطية لـ " @@ -9821,17 +10073,17 @@ msgstr "" "برامج التشغيل الخاصة بها لا تدعمها. ونتيجة لذلك سوف تواجه الخلل أو يتجمد " "أثناء تشغيل هذه اللعبة." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "هذا تفريغ سيء" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "هذا تفريغ سيء. هذا لا يعني بالضرورة أن اللعبة لن تعمل بشكل صحيح" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." @@ -9839,11 +10091,11 @@ msgstr "" "Redump.org هذا تفريغ جيد وفقًا لموقع\n" "لكن دولفين وجد مشاكل. قد يكون هذا خطأ في دولفين" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "هذا تفريغ جيد" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "تتطلب هذه الجلسة كلمة مرور:" @@ -9903,14 +10155,14 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "يتم ضرب هذه القيمة مع عمق المنصوص عليها في ضبط الرسومات." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" "سيحد ذلك من سرعة التحميل المتراكم لكل عميل ، والذي يستخدم لحفظ المزامنة." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9934,7 +10186,7 @@ msgstr "المواضيع" msgid "Threshold" msgstr "بداية" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "تيرابايت" @@ -9951,22 +10203,22 @@ msgstr "الفترة الزمنية للإدخال المستقر لتشغيل #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "العنوان" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "إلى" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "إلى" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "ملء الشاشة" @@ -9988,10 +10240,10 @@ msgstr "تبديل كافة أنواع السجلات" #: Source/Core/Core/HotkeyManager.cpp:106 msgid "Toggle Aspect Ratio" -msgstr "تبديل نسبة العرض إلى الارتفاع" +msgstr "تبديل تناسب الأبعاد" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "تبديل نقطة التوقف" @@ -10051,14 +10303,20 @@ msgstr "Tokenizing فشل" msgid "Toolbar" msgstr "شريط الأدوات" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "اعلى" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Top-and-Bottom" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -10093,20 +10351,20 @@ msgid "Touch" msgstr "لمس" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "الصينية التقليدية" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "خطأ الاجتياز" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "اجتياز الخادم" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "انتهت مهلة خادم الاجتياز للاتصال بالمضيف" @@ -10138,21 +10396,13 @@ msgstr "أزرار الكتف" msgid "Type" msgstr "اكتب" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "مساحة عنوان جيم كيوب / وي النموذجية" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" -msgstr "U&16" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "U&32" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" +msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" -msgstr "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" +msgstr "مساحة عنوان جيم كيوب/وي النموذجية" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 msgid "UNKNOWN" @@ -10168,9 +10418,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "USB خطأ في القائمة البيضاء لـ " @@ -10198,10 +10448,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "RSO تعذر الكشف التلقائي عن وحدة" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10226,7 +10480,11 @@ msgstr "" "\n" "هل تريد تجاهل هذا السطر ومتابعه التحليل ؟" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "{0} غير قادر على الكتابة إلى الملف" @@ -10238,15 +10496,15 @@ msgstr "غير منضم" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "غير مضغوطة GC/Wii صورة (*.iso *.gcm)" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "التراجع عن تحميل الحالة" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "التراجع عن حفظ الحالة" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "إلغاء التثبيت" @@ -10263,18 +10521,18 @@ msgstr "" "NAND إلى إزالة الإصدار المثبت حاليًا من هذا العنوان من\n" "دون حذف بيانات الحفظ الخاصة به. استمر؟" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "امريكا" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "غير معروف" @@ -10282,7 +10540,7 @@ msgstr "غير معروف" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10292,7 +10550,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10302,15 +10560,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "مساحة عنوان غير معروفة" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "مؤلف غير معروف" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "نوع بيانات غير معروف" @@ -10318,19 +10576,19 @@ msgstr "نوع بيانات غير معروف" msgid "Unknown disc" msgstr "قرص غير معروف" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "حدث خطأ غير معروف" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "{0:x} خطأ غير معروف" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "خطأ غير معروف" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "{0} تم استلام رسالة غير معروفة بالمعرف" @@ -10338,7 +10596,7 @@ msgstr "{0} تم استلام رسالة غير معروفة بالمعرف" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "غير محدود" @@ -10354,13 +10612,28 @@ msgstr "فتح المؤشر" msgid "Unpacking" msgstr "تفريغ" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "غير موقع 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "غير موقع 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "غير موقع 8" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "عدد صحيح غير موقعة" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10369,7 +10642,7 @@ msgstr "فوق" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "التحديث" @@ -10426,7 +10699,7 @@ msgstr "تبديل عمودي" msgid "Upright Wii Remote" msgstr "ريموت وي وضع عمودي" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "إعدادات تقارير إحصائيات الاستخدام " @@ -10442,7 +10715,7 @@ msgstr "استخدم نمط المستخدم المخصص" msgid "Use Lossless Codec (FFV1)" msgstr "Use Lossless Codec (FFV1)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "(EuRGB60) PAL60 استخدام وضع " @@ -10469,18 +10742,40 @@ msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" "استخدام منطقة عازلة بعمق واحد لكلتا العينين. هناك حاجة لعدد قليل من الألعاب ." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "استخدم تكوين مخطط الذاكرة في وقت المسح" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "استخدام العناوين الفعلية" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "استخدم العناوين الافتراضية عندما يكون ذلك ممكنًا" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "تكوين المستخدم" @@ -10493,18 +10788,18 @@ msgstr "واجهة المستخدم" msgid "User Style:" msgstr "نمط المستخدم" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "متغيرات المستخدم" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10525,28 +10820,31 @@ msgid "" "window.

If unsure, leave this unchecked." msgstr "" +"يستخدم نافذة دولفين الرئيسية للعرض بدلاً من نافذة عرض منفصلة." +"

إذا لم تكن متأكدا، اترك هذا دون رادع " #: Source/Core/DolphinQt/AboutDialog.cpp:57 msgid "Using Qt %1" msgstr "%1 تستخدم كيو تي" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "تستخدم عادة للأشياء الخفيفة" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "تستخدم للمصفوفات العادية" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "تستخدم لمصفوفات الموضع" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "tex تستخدم لمصفوفات تنسيق" @@ -10557,9 +10855,9 @@ msgstr "خدمات" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:62 msgid "V-Sync" -msgstr "مزامنة عدد الاطارات " +msgstr "V-Sync مزامنة عدد الإطارات" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "القيمة" @@ -10592,8 +10890,8 @@ msgstr "التحقق من الشهادات" msgid "Verifying" msgstr "يتحقق" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "الإصدار" @@ -10629,7 +10927,7 @@ msgstr "عرض &الذكرة" msgid "Virtual Notches" msgstr "الشقوق الافتراضية" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "مساحة العنوان الافتراضية" @@ -10656,13 +10954,13 @@ msgstr "رفع مستوى الصوت" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "(*.wad) ملفات" #: Source/Core/Core/WiiUtils.cpp:136 msgid "WAD installation failed: Could not create Wii Shop log files." -msgstr "" +msgstr "WAD فشل تثبيت : تعذر إنشاء ملفات سجل متجر وي" #: Source/Core/Core/WiiUtils.cpp:104 msgid "WAD installation failed: Could not finalise title import." @@ -10672,11 +10970,11 @@ msgstr "" #: Source/Core/Core/WiiUtils.cpp:94 msgid "WAD installation failed: Could not import content {0:08x}." -msgstr "" +msgstr "WAD فشل تثبيت : تعذر استيراد المحتوى {0:08x}" #: Source/Core/Core/WiiUtils.cpp:78 msgid "WAD installation failed: Could not initialise title import (error {0})." -msgstr "" +msgstr "WAD فشل تثبيت : تعذر تهيئة استيراد العنوان (خطأ {0})" #: Source/Core/Core/WiiUtils.cpp:56 msgid "WAD installation failed: The selected file is not a valid WAD." @@ -10714,16 +11012,16 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "WASAPI (الوضع الحصري)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" -msgstr "" +msgstr "مسار WFS" #: Source/Core/DolphinQt/ConvertDialog.cpp:350 msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "في انتظار المسح الضوئي الأول" @@ -10745,7 +11043,7 @@ msgid "" "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10758,10 +11056,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "تحذير" @@ -10779,28 +11077,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10826,7 +11124,7 @@ msgstr "" msgid "Watch" msgstr "راقب" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "الموقع" @@ -10855,11 +11153,11 @@ msgid "" "unsure, leave this checked.
" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "الاجهزة المسموح لها المرور خلال منفذ يو إس بي " -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "شاشة عريضة" @@ -10875,11 +11173,11 @@ msgstr "وي" msgid "Wii Menu" msgstr "قائمة وي" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Wii NAND Root" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "ريموت وي" @@ -10887,8 +11185,8 @@ msgstr "ريموت وي" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "%1 ريموت وي" @@ -10901,11 +11199,11 @@ msgstr "أزرار ريموت وي" msgid "Wii Remote Orientation" msgstr "اتجاه ريموت وي" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "إعدادات ريموت وي" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "ريموت وي" @@ -10921,7 +11219,7 @@ msgstr "Wii TAS Input %1 - ريموت وي" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "Wii TAS Input %1 - ريموت وي + نونشوك" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "وي و ريموت وي" @@ -10929,7 +11227,7 @@ msgstr "وي و ريموت وي" msgid "Wii data is not public yet" msgstr "بيانات وي ليست عامة بعد" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "ملفات حفظ وي (*.bin);;كل الملفات (*)" @@ -10959,18 +11257,18 @@ msgid "World" msgstr "عالم" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "كتابة" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "كتابة حفظ البيانات" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "كتابه فقط" @@ -10983,12 +11281,12 @@ msgid "Write to File" msgstr "الكتابة على الملف" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "الكتابة إلى السجل" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "Write to Log and Break" @@ -10996,7 +11294,7 @@ msgstr "Write to Log and Break" msgid "Write to Window" msgstr "الكتابة إلى النافذة" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "إصدار خاطئ" @@ -11007,7 +11305,7 @@ msgstr "إصدار خاطئ" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "XF تسجيل" @@ -11036,8 +11334,8 @@ msgid "Yellow" msgstr "أصفر" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "نعم" @@ -11076,7 +11374,7 @@ msgstr "" "10.14 (Mojave) or newer. Please do not report any issues encountered unless " "they also occur on 10.14+." -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "تقوم بتشغيل أحدث إصدار متوفر على مسار التحديث هذا" @@ -11109,11 +11407,11 @@ msgstr "" msgid "You have to enter a name." msgstr "يجب عليك إدخال اسم." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "يجب تقديم اسم لجلستك!" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "يجب عليك توفير منطقة لجلستك!" @@ -11121,7 +11419,7 @@ msgstr "يجب عليك توفير منطقة لجلستك!" msgid "You must restart Dolphin in order for the change to take effect." msgstr "يجب إعادة تشغيل دولفين حتى يسري التغيير." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "يجب عليك اختيار لعبة لاستضافة!" @@ -11152,23 +11450,23 @@ msgstr "رمز 3 أصفار غير مدعوم" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "{0:08x} رمز صفر غير معروف لدولفين" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "[%1, %2]" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "[%1, %2] and [%3, %4]" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "^ Xor" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "محاذاة" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "اي قيمة" @@ -11187,13 +11485,13 @@ msgstr "cm" msgid "d3d12.dll could not be loaded." msgstr "d3d12.dll تعذر تحميل" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "إفتراضي" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "غير متصل" @@ -11209,31 +11507,31 @@ msgstr "تخطئ" msgid "fake-completion" msgstr "إكمال زائف " -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "يساوي" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "أكبر من" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "أكبر من أو يساوي" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "أقل من" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "أقل من أو يساوي" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "لا يساوي" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "آخر قيمة" @@ -11256,14 +11554,14 @@ msgstr "لا شيء" #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:178 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:213 msgid "off" -msgstr "" +msgstr "إيقاف" #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:178 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:213 msgid "on" msgstr "على" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "او حدد الجهاز" @@ -11272,7 +11570,7 @@ msgstr "او حدد الجهاز" msgid "s" msgstr "s" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "هذه القيمة " @@ -11281,7 +11579,7 @@ msgstr "هذه القيمة " msgid "uDraw GameTablet" msgstr "uDraw GameTablet" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "غير محاذي" @@ -11300,7 +11598,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "{0} (NKit)" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -11321,7 +11619,7 @@ msgstr "" "تحقق من أذونات الكتابة أو نقل الملف خارج دولفين" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11329,7 +11627,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "{0} لم يتم نقل دليل إلى الأصل" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "| أو" diff --git a/Languages/po/ca.po b/Languages/po/ca.po index 643b09253c8a..576aac07fe8a 100644 --- a/Languages/po/ca.po +++ b/Languages/po/ca.po @@ -14,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Gerard Nesta , 2021\n" "Language-Team: Catalan (http://www.transifex.com/delroth/dolphin-emu/" "language/ca/)\n" "Language: ca\n" @@ -25,7 +25,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -33,7 +33,7 @@ msgid "" "problems that Dolphin is unable to detect." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -41,7 +41,7 @@ msgid "" "that it hasn't been tampered with." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -57,7 +57,7 @@ msgstr "" msgid " (Disc %1)" msgstr " (Disc %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "! No" @@ -65,7 +65,7 @@ msgstr "! No" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -79,7 +79,7 @@ msgstr "" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -93,17 +93,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -122,7 +122,7 @@ msgid "%1 (Revision %3)" msgstr "" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -159,7 +159,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "" @@ -170,23 +170,23 @@ msgid "" "Current Frame: %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "%1 s'ha unit" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "%1 s'ha marxat" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "%1 esta jugant al golf" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -195,11 +195,11 @@ msgstr "" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "" @@ -211,15 +211,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -235,30 +235,30 @@ msgstr "" msgid "%1[%2]: %3/%4 MiB" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "" @@ -278,7 +278,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&Sobre" @@ -287,11 +287,11 @@ msgid "&Add Memory Breakpoint" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "" @@ -299,19 +299,19 @@ msgstr "" msgid "&Add..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "&Paràmetres d'àudio" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "&Actualització automàtica:" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "&Inici automàtic" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "" @@ -319,11 +319,11 @@ msgstr "" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Punts d'interrupció" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "" @@ -333,15 +333,15 @@ msgstr "" " \n" "&Cancel·lar" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "" @@ -349,7 +349,7 @@ msgstr "" msgid "&Clone..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "&Codi" @@ -357,19 +357,20 @@ msgstr "&Codi" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "&Configuració del controlador" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "" @@ -381,7 +382,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "" @@ -389,11 +390,11 @@ msgstr "" msgid "&Edit..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulació" @@ -405,43 +406,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Arxiu" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&Font..." -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "&Avança imatge" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "&Repositori GitHub" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "Configuració de &gràfics" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Ajuda" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "Configuració de &tecles d'accés" @@ -453,11 +458,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "&Importar..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "" @@ -465,7 +470,7 @@ msgstr "" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -473,23 +478,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "&Idioma:" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&Càrrega estat" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Memòria" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "&Pel·lícula" @@ -497,7 +502,7 @@ msgstr "&Pel·lícula" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "" @@ -505,24 +510,24 @@ msgstr "" msgid "&No" msgstr "&No" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Obrir..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Opcions" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Pausa" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Executar" @@ -530,11 +535,11 @@ msgstr "&Executar" msgid "&Properties" msgstr "&Propietats" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Registres" @@ -543,24 +548,24 @@ msgid "&Remove" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Reiniciar" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "" @@ -568,11 +573,11 @@ msgstr "" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Aturar" @@ -580,11 +585,11 @@ msgstr "&Aturar" msgid "&Theme:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Eines" @@ -592,17 +597,17 @@ msgstr "&Eines" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Visualitzar" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&Veure" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Pàgina web" @@ -614,11 +619,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "&Sí" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" @@ -630,7 +635,7 @@ msgstr "" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(Deshabilitat)" @@ -638,34 +643,34 @@ msgstr "(Deshabilitat)" msgid "(ppc)" msgstr "(ppc)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "--> %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" @@ -673,6 +678,10 @@ msgstr "" msgid "128 Mbit (2043 blocks)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "" @@ -681,35 +690,35 @@ msgstr "" msgid "16-bit" msgstr "16 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x Natiu (1280x1056) per 720p" @@ -721,25 +730,25 @@ msgstr "32 Mbit (507 blocs)" msgid "32-bit" msgstr "32 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -753,28 +762,32 @@ msgstr "Profunditat 3D" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x Natiu (1920x1584) per 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Mbit (59 blocs)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x Natiu (2560x2112) per 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x Natiu (3200x2640)" @@ -782,29 +795,33 @@ msgstr "5x Natiu (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Mbit (1019 blocs)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x Natiu (3840x3168) per 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x Natiu (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Mbit (123 blocs)" @@ -813,25 +830,25 @@ msgstr "8 Mbit (123 blocs)" msgid "8-bit" msgstr "8 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x Natiu (5120x4224) per 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "< Menys que" @@ -850,12 +867,12 @@ msgid "" "Notes:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "> Més gran que" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "Ja hi ha una sessió NetPlay en curs!" @@ -873,17 +890,17 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" @@ -892,7 +909,7 @@ msgstr "" msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -916,8 +933,8 @@ msgstr "Codi AR" msgid "AR Codes" msgstr "Codis AR" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -940,7 +957,7 @@ msgstr "" msgid "Accuracy:" msgstr "Precisió:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "Acció" @@ -1036,9 +1053,9 @@ msgstr "Adaptador detectat" msgid "Adapter:" msgstr "Adaptador:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Afegeix" @@ -1046,11 +1063,11 @@ msgstr "Afegeix" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "" @@ -1082,46 +1099,49 @@ msgstr "" msgid "Add to &watch" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Afegir..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Adreça" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1165,39 +1185,43 @@ msgstr "Avançat" msgid "Africa" msgstr "Àfrica" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "Tots els fitxers (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "Tots els dispositius" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "" @@ -1206,25 +1230,25 @@ msgstr "" msgid "All players' saves synchronized." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1250,7 +1274,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "" @@ -1268,39 +1292,39 @@ msgstr "Angle" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Filtrat anisotròpic:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Anti-Aliasing:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1314,15 +1338,15 @@ msgstr "Data Apploader:" msgid "Apply" msgstr "Aplicar" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "" @@ -1330,11 +1354,11 @@ msgstr "" msgid "Are you sure you want to delete this file?" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "" @@ -1347,11 +1371,11 @@ msgid "Aspect Ratio" msgstr "Relació d'aspecte" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Relació d'aspecte:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "" @@ -1359,7 +1383,7 @@ msgstr "" msgid "Assign Controllers" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1384,7 +1408,7 @@ msgstr "" msgid "Australia" msgstr "Austràlia" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "Autor" @@ -1396,15 +1420,15 @@ msgstr "Autors" msgid "Auto" msgstr "Auto" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Auto (Múltiple de 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1420,7 +1444,7 @@ msgstr "" msgid "Auto-Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1431,12 +1455,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "B" @@ -1451,11 +1475,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "Registre BP" @@ -1481,7 +1505,7 @@ msgstr "Configuració del motor" msgid "Backend:" msgstr "Motor:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Suport d'entrada" @@ -1492,7 +1516,13 @@ msgstr "Suport d'entrada" msgid "Backward" msgstr "Cap enrere" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1500,19 +1530,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Pancarta" @@ -1536,7 +1567,7 @@ msgstr "" msgid "Basic" msgstr "Bàsic" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Configuració bàsica" @@ -1544,7 +1575,7 @@ msgstr "Configuració bàsica" msgid "Bass" msgstr "Baix" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1552,11 +1583,11 @@ msgstr "" msgid "Battery" msgstr "Bateria" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "Beta (una vegada al mes)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1578,7 +1609,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "" @@ -1591,7 +1622,7 @@ msgstr "" msgid "Blocking" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Blocs" @@ -1614,15 +1645,15 @@ msgid "" "Passthrough mode cannot be used." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "" @@ -1630,7 +1661,7 @@ msgstr "" msgid "Borderless Fullscreen" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Abaix" @@ -1644,7 +1675,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "" @@ -1653,7 +1684,7 @@ msgstr "" msgid "Breakpoint" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" @@ -1683,7 +1714,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1691,12 +1722,12 @@ msgstr "" msgid "Buffer Size:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Buffer:" @@ -1738,11 +1769,11 @@ msgstr "Botons" msgid "C Stick" msgstr "Palanca C" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "Registre CP" @@ -1773,7 +1804,7 @@ msgstr "" msgid "Calculate" msgstr "Calcular" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1793,15 +1824,15 @@ msgstr "" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1811,7 +1842,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1819,16 +1850,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "" @@ -1845,23 +1876,23 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "" @@ -1883,7 +1914,7 @@ msgstr "" msgid "Change &Disc" msgstr "Canviar &Disc" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Canviar &Disc..." @@ -1891,15 +1922,15 @@ msgstr "Canviar &Disc..." msgid "Change Disc" msgstr "Canviar Disc" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1919,7 +1950,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Xat" @@ -1935,11 +1966,11 @@ msgstr "Cerca trucs" msgid "Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "" @@ -1953,7 +1984,7 @@ msgid "" "whether it's still in use." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "" @@ -1961,16 +1992,16 @@ msgstr "" msgid "China" msgstr "Xina" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Trieu un arxiu per obrir" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -1993,14 +2024,14 @@ msgid "Classic Controller" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Esborrar" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "" @@ -2017,28 +2048,47 @@ msgstr "" msgid "Close" msgstr "Tancar" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Codi" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Codi:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2056,7 +2106,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "" @@ -2069,7 +2119,7 @@ msgstr "" msgid "Compression:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "" @@ -2081,13 +2131,13 @@ msgstr "" msgid "Config" msgstr "Configuració" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Configuració" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2095,21 +2145,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "" @@ -2122,26 +2172,26 @@ msgstr "" msgid "Confirm on Stop" msgstr "Confirmar a l'aturar" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Connectar" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Connectar la Balance Board" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Connectar el teclat USB" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "" @@ -2161,11 +2211,11 @@ msgstr "" msgid "Connect Wii Remote 4" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" @@ -2177,15 +2227,19 @@ msgstr "" msgid "Connected" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Tipus de connexió:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Escaneig continu" @@ -2198,7 +2252,7 @@ msgstr "" msgid "Control Stick" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "" @@ -2226,7 +2280,7 @@ msgstr "" msgid "Controllers" msgstr "Controladors" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2234,7 +2288,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2243,7 +2297,7 @@ msgid "" "Native." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2268,12 +2322,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Convergència:" @@ -2310,33 +2364,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Copiar" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "" @@ -2344,11 +2403,15 @@ msgstr "" msgid "Copy failed" msgstr "Copia fallada" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "" @@ -2363,16 +2426,16 @@ msgstr "Nucli" msgid "Cost" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "" @@ -2451,15 +2514,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2486,7 +2549,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "" @@ -2509,11 +2572,11 @@ msgstr "" msgid "Crossfade" msgstr "Atenuar" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2521,7 +2584,7 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "" @@ -2529,7 +2592,7 @@ msgstr "" msgid "Current thread" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2560,7 +2623,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "" @@ -2588,7 +2651,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2596,11 +2659,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Estora de ball" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "" @@ -2612,28 +2675,27 @@ msgstr "" msgid "Data Transfer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2651,7 +2713,7 @@ msgid "Debug Only" msgstr "Només depuració" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Depuració" @@ -2693,7 +2755,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Per defecte" @@ -2709,7 +2771,7 @@ msgstr "" msgid "Default Font" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "ISO per defecte:" @@ -2734,7 +2796,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2749,11 +2811,11 @@ msgid "Delete Selected Files..." msgstr "" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2761,21 +2823,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Profunditat:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Descripció" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Descripció:" @@ -2784,11 +2846,11 @@ msgstr "Descripció:" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Detectar" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2796,25 +2858,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Dispositiu" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Configuració del dispositiu" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "" @@ -2826,11 +2888,15 @@ msgstr "" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "" @@ -2861,7 +2927,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "" @@ -2873,15 +2939,15 @@ msgstr "" msgid "Disable Emulation Speed Limit" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Deshabilitar boira" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "" @@ -2889,7 +2955,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2903,7 +2969,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2920,11 +2986,15 @@ msgstr "Disc" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2942,25 +3012,25 @@ msgstr "" msgid "Distance of travel from neutral position." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Voleu aturar l'emulació actual?" @@ -2977,9 +3047,9 @@ msgstr "" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "" @@ -2991,8 +3061,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Dolphin Pel·lícules TAS (*.dtm)" @@ -3025,21 +3095,21 @@ msgstr "" msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3054,7 +3124,7 @@ msgstr "" msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "" @@ -3067,24 +3137,26 @@ msgid "Done compressing disc image." msgstr "" #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Avall" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "" @@ -3092,11 +3164,11 @@ msgstr "" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "" @@ -3119,27 +3191,35 @@ msgstr "" msgid "Dual Core" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Maniquí" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Bolcat d'àudio" @@ -3151,7 +3231,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "Bolcat de destinació EFB" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Bolcat de fotogrames" @@ -3163,7 +3243,7 @@ msgstr "" msgid "Dump Objects" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "" @@ -3260,16 +3340,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Holandès" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "&Sortir" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3281,7 +3361,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3309,7 +3389,7 @@ msgstr "Efecte" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3317,7 +3397,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "" @@ -3329,7 +3409,7 @@ msgstr "" msgid "Embedded Frame Buffer (EFB)" msgstr "" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Buit" @@ -3337,11 +3417,11 @@ msgstr "Buit" msgid "Emu Thread already running" msgstr "El fil de l'emulador ja s'està executant" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "" @@ -3357,8 +3437,12 @@ msgstr "" msgid "Emulation Speed" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3374,7 +3458,7 @@ msgstr "" msgid "Enable Audio Stretching" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Activar Trucs" @@ -3386,7 +3470,7 @@ msgstr "" msgid "Enable Dual Core" msgstr "Habilitar Doble nucli" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Habilitar Doble nucli (acceleració)" @@ -3412,19 +3496,19 @@ msgid "Enable Progressive Scan" msgstr "Habilitar Exploració &Progressiva" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Habilitar l'Estalvi de Pantalla" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Activar Altaveu de Dades" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "" @@ -3450,7 +3534,7 @@ msgid "" "= Compatible, OFF = Fast)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3458,7 +3542,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3488,7 +3572,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3524,7 +3608,7 @@ msgstr "" msgid "Encoding" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3537,12 +3621,12 @@ msgid "Enet Didn't Initialize" msgstr "" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Anglès" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3552,7 +3636,7 @@ msgstr "Millores" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "" @@ -3566,11 +3650,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "" @@ -3579,65 +3663,68 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Error" @@ -3652,19 +3739,19 @@ msgstr "" "Error en carregar l'idioma seleccionat. Es retorna a l'idioma per defecte " "del sistema." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3684,7 +3771,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3734,11 +3821,11 @@ msgid "" "may not show fonts correctly, or crash." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3747,11 +3834,39 @@ msgstr "" msgid "Euphoria" msgstr "Eufòria" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Europa" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3800,14 +3915,14 @@ msgstr "" msgid "Experimental" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Exportar totes les partides guardades de Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3815,15 +3930,15 @@ msgstr "" msgid "Export Recording" msgstr "Exportar gravació" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Exportar gravació..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3835,22 +3950,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Extensió" @@ -3863,7 +3978,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3871,7 +3986,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "" @@ -3909,7 +4024,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "Jugador FIFO" @@ -3917,17 +4032,17 @@ msgstr "Jugador FIFO" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -3939,7 +4054,7 @@ msgstr "" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -3960,12 +4075,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -3977,19 +4092,19 @@ msgstr "" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Error al descarregar codis." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -3998,7 +4113,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "" @@ -4021,29 +4136,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "" @@ -4059,23 +4174,23 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "" @@ -4087,11 +4202,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "" @@ -4102,7 +4217,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "" @@ -4129,11 +4244,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "" @@ -4142,7 +4257,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4154,7 +4269,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4162,25 +4277,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4195,15 +4310,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4211,23 +4326,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4235,11 +4350,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "No s'ha pogut escriure BT.DINF a SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4247,22 +4362,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4271,19 +4386,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4296,7 +4411,7 @@ msgstr "Ràpid" msgid "Fast Depth Calculation" msgstr "" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4313,7 +4428,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "" @@ -4327,18 +4442,18 @@ msgstr "informació del fitxer" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Nom de l'arxiu" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Mida del fitxer" @@ -4346,11 +4461,11 @@ msgstr "Mida del fitxer" msgid "File Size:" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "L'arxiu no conté codis." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4364,11 +4479,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4376,15 +4491,15 @@ msgstr "" msgid "Filesystem" msgstr "Sistema d'arxius" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4392,11 +4507,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "" @@ -4410,18 +4525,22 @@ msgid "" "This can take a while." msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Arregla les sumes de comprovació" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4431,13 +4550,14 @@ msgstr "" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "" @@ -4461,7 +4581,7 @@ msgstr "" msgid "Force 16:9" msgstr "Forçar 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "" @@ -4469,15 +4589,15 @@ msgstr "" msgid "Force 4:3" msgstr "Forçar 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Forçar Filtrat de textura" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4487,7 +4607,7 @@ msgid "" "" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4506,21 +4626,21 @@ msgstr "" msgid "Forward" msgstr "Endavant" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Reenviar port (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "" @@ -4549,7 +4669,7 @@ msgstr "" msgid "Frame Range" msgstr "Rang de Fotogrames" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4561,19 +4681,19 @@ msgstr "" msgid "France" msgstr "França" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4581,7 +4701,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -4989,7 +5109,7 @@ msgstr "Verd Esquerra" msgid "Green Right" msgstr "Verd Dret" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "" @@ -5002,7 +5122,7 @@ msgstr "Guitarra" msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "" @@ -5015,12 +5135,29 @@ msgstr "Modificacions" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5032,19 +5169,19 @@ msgstr "" msgid "Hide" msgstr "Oculta" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5062,21 +5199,27 @@ msgstr "" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Amfitrió" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5084,7 +5227,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5092,11 +5235,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "" @@ -5108,7 +5251,7 @@ msgstr "" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "" @@ -5159,11 +5302,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "Configuració de IPL" @@ -5172,7 +5315,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "Sensibilitat d'IR:" @@ -5194,22 +5337,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Icona" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5256,7 +5399,7 @@ msgstr "Ignora els canvis de format" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5264,7 +5407,7 @@ msgid "" "checked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5285,41 +5428,50 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" " Time elapsed: %1s" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5372,8 +5524,8 @@ msgstr "Info" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Informació" @@ -5382,10 +5534,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Entrada" @@ -5399,16 +5551,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Inserir la targeta SD" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "" @@ -5420,7 +5578,7 @@ msgstr "" msgid "Install Update" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "" @@ -5436,11 +5594,11 @@ msgstr "" msgid "Instruction" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "" @@ -5458,7 +5616,7 @@ msgid "Interface" msgstr "Interfície" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Error intern LZO - la compressió ha fallat" @@ -5467,27 +5625,27 @@ msgstr "Error intern LZO - la compressió ha fallat" msgid "Internal LZO Error - decompression failed" msgstr "" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Error intern LZO - lzo_init () ha fallat" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Resolució Interna:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5495,11 +5653,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5507,7 +5665,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5516,15 +5674,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5532,11 +5690,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "" @@ -5549,32 +5707,32 @@ msgstr "" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Fitxer d'enregistrament invàlid" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Paràmetres de búsqueda invàlids (cap objecte seleccionat)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Cadena de cerca invàlida (no s'ha pogut convertir a número)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "" "Cadena de cerca invàlida (només es soporten longituds de la cadena parelles)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "" @@ -5583,8 +5741,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Italià" @@ -5592,11 +5750,11 @@ msgstr "Italià" msgid "Italy" msgstr "Itàlia" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "" @@ -5604,47 +5762,47 @@ msgstr "" msgid "JIT Blocks" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5656,11 +5814,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5671,12 +5829,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Japó" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japonès" @@ -5696,12 +5854,12 @@ msgstr "" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Teclat" @@ -5714,20 +5872,20 @@ msgstr "Teclat" msgid "Keys" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Expulsar jugador" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Corea" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Coreà" @@ -5755,7 +5913,7 @@ msgstr "" msgid "Label" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5835,15 +5993,15 @@ msgstr "" msgid "License" msgstr "Llicència" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "" @@ -5852,17 +6010,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Carregar" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "" @@ -5870,7 +6028,7 @@ msgstr "" msgid "Load Custom Textures" msgstr "Carrega textures personalitzades" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "" @@ -5879,7 +6037,7 @@ msgstr "" msgid "Load Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -5972,23 +6130,23 @@ msgstr "Carregar ranura d'estat 8" msgid "Load State Slot 9" msgstr "Carregar estat 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "" @@ -5996,12 +6154,12 @@ msgstr "" msgid "Load from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "" @@ -6009,7 +6167,7 @@ msgstr "" msgid "Load..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "" @@ -6020,7 +6178,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "" @@ -6029,7 +6187,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Registre" @@ -6037,7 +6195,7 @@ msgstr "Registre" msgid "Log Configuration" msgstr "Configuració del registre" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6064,7 +6222,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "" @@ -6093,7 +6251,7 @@ msgstr "" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6103,7 +6261,7 @@ msgstr "Palanca principal" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Fabricant" @@ -6112,7 +6270,7 @@ msgstr "Fabricant" msgid "Maker:" msgstr "Fabricant:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6120,7 +6278,7 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "" @@ -6128,7 +6286,7 @@ msgstr "" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6136,15 +6294,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6153,7 +6311,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "" @@ -6162,11 +6320,11 @@ msgstr "" msgid "Medium" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "" @@ -6174,7 +6332,7 @@ msgstr "" msgid "Memory Card" msgstr "Targeta de memòria" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "" @@ -6192,7 +6350,7 @@ msgstr "" msgid "Memory Override" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "" @@ -6208,7 +6366,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6216,13 +6374,13 @@ msgid "" "want to continue?" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Micròfon" @@ -6230,19 +6388,19 @@ msgstr "Micròfon" msgid "Misc" msgstr "Miscel·làni" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Configuracions Miscel·lànies" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6265,12 +6423,12 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6282,11 +6440,11 @@ msgstr "" msgid "Monospaced Font" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6326,10 +6484,10 @@ msgstr "" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "" @@ -6337,26 +6495,26 @@ msgstr "" msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "" @@ -6368,37 +6526,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Nom:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Natiu (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6406,16 +6564,16 @@ msgstr "" msgid "Netherlands" msgstr "Països Baixos" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "" @@ -6436,11 +6594,11 @@ msgstr "" msgid "New" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "" @@ -6448,7 +6606,7 @@ msgstr "" msgid "New Tag..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "" @@ -6465,7 +6623,7 @@ msgstr "" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6474,17 +6632,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "" @@ -6492,6 +6650,10 @@ msgstr "" msgid "No Adapter Detected" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "" @@ -6502,24 +6664,20 @@ msgstr "" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "No hi ha descripció disponible" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6531,15 +6689,15 @@ msgstr "" msgid "No file loaded / recorded." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "" @@ -6547,11 +6705,15 @@ msgstr "" msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6562,7 +6724,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6570,17 +6732,13 @@ msgstr "" msgid "No save data found." msgstr "" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6590,7 +6748,7 @@ msgstr "Cap" msgid "North America" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "" @@ -6598,11 +6756,11 @@ msgstr "" msgid "Not Set" msgstr "Sense establir" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6610,7 +6768,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6670,13 +6828,13 @@ msgstr "" msgid "Nunchuk Stick" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6689,11 +6847,11 @@ msgid "Oceania" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Apagar" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6705,17 +6863,17 @@ msgstr "" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "&Documentació en línia" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6730,7 +6888,7 @@ msgstr "Obrir" msgid "Open &Containing Folder" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "" @@ -6778,7 +6936,7 @@ msgstr "" msgid "OpenGL ES" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6796,7 +6954,7 @@ msgstr "Opcions" msgid "Orange" msgstr "Taronja" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6804,7 +6962,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Altres" @@ -6817,11 +6975,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "" @@ -6829,12 +6987,12 @@ msgstr "" msgid "Overlay Information" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "" @@ -6859,7 +7017,7 @@ msgstr "" msgid "PPC Size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6876,7 +7034,7 @@ msgstr "Pads" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6885,23 +7043,23 @@ msgstr "" msgid "Parsing Error" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "" @@ -6922,7 +7080,7 @@ msgid "Path:" msgstr "" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Camins" @@ -6930,7 +7088,7 @@ msgstr "Camins" msgid "Pause" msgstr "Pausa" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "" @@ -6953,11 +7111,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Il·luminació per píxel" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "" @@ -6967,23 +7125,23 @@ msgstr "" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "" @@ -6996,7 +7154,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Plataforma" @@ -7016,16 +7174,16 @@ msgstr "Reproduir enregistrament" msgid "Playback Options" msgstr "Opcions de reproducció" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Jugadors" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7036,29 +7194,29 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Efecte de post-processament:" @@ -7070,15 +7228,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7115,7 +7273,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7126,15 +7284,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7142,25 +7300,25 @@ msgstr "" msgid "Problem" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Perfil" @@ -7174,15 +7332,15 @@ msgstr "" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7194,11 +7352,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "" @@ -7208,12 +7366,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Pregunta" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Sortir" @@ -7233,11 +7391,11 @@ msgstr "R-Analògic" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7250,44 +7408,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Rang" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "" @@ -7295,11 +7453,11 @@ msgstr "" msgid "Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Balance Board real" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "" @@ -7312,11 +7470,11 @@ msgstr "" msgid "Record" msgstr "Enregistrar" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7341,7 +7499,7 @@ msgstr "Vermell Esquerra" msgid "Red Right" msgstr "Vermell Dret" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7357,16 +7515,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Actualitzar" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7374,26 +7532,26 @@ msgstr "" msgid "Refresh Game List" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Regió" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "" @@ -7413,16 +7571,16 @@ msgstr "" msgid "Remind Me Later" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Eliminar" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7445,8 +7603,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "" @@ -7479,29 +7637,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Reiniciar" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7509,15 +7675,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7529,11 +7695,11 @@ msgstr "" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Tornar a intentar" @@ -7542,7 +7708,7 @@ msgstr "Tornar a intentar" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7600,11 +7766,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7613,12 +7779,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7628,11 +7795,11 @@ msgstr "" msgid "Rumble" msgstr "Vibració" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7640,15 +7807,15 @@ msgstr "" msgid "Russia" msgstr "Rússia" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "" @@ -7664,7 +7831,7 @@ msgstr "" msgid "SHA-1:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "" @@ -7678,11 +7845,11 @@ msgstr "" msgid "START" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "&Desa l'Estat" @@ -7692,7 +7859,7 @@ msgid "Safe" msgstr "Segur" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7705,7 +7872,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7726,11 +7893,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7742,7 +7909,7 @@ msgstr "Desar l'Estat Més Antic" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7792,23 +7959,23 @@ msgstr "Desar Ranura d'Estat 8" msgid "Save State Slot 9" msgstr "Desar Ranura d'Estat 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "" @@ -7816,7 +7983,7 @@ msgstr "" msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "" @@ -7828,26 +7995,26 @@ msgstr "" msgid "Save as..." msgstr "Desar com..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "" @@ -7855,7 +8022,7 @@ msgstr "" msgid "Save to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "" @@ -7863,23 +8030,23 @@ msgstr "" msgid "Save..." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Copia EFB escalada" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7887,36 +8054,36 @@ msgstr "" msgid "ScrShot" msgstr "Capturar Pantalla" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Buscar" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Cercar en Subcarpetes" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "" @@ -7924,7 +8091,7 @@ msgstr "" msgid "Search games..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "" @@ -7948,28 +8115,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Seleccionar" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -7977,11 +8144,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -7989,7 +8156,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "" @@ -7997,7 +8164,7 @@ msgstr "" msgid "Select State" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "" @@ -8041,41 +8208,45 @@ msgstr "" msgid "Select State Slot 9" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "" @@ -8083,11 +8254,11 @@ msgstr "" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8095,12 +8266,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Seleccioni el fitxer de partida guardada" @@ -8116,15 +8287,15 @@ msgstr "" msgid "Selected Font" msgstr "" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "El perfil del controlador seleccionat no existeix" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8148,7 +8319,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8188,11 +8359,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Enviar" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Posició Barra de Sensors" @@ -8204,63 +8375,71 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" "May not work for all games." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "" @@ -8270,7 +8449,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8305,11 +8484,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Mostrar &Registre" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Mostrar Barra d'&Eines" @@ -8317,15 +8496,15 @@ msgstr "Mostrar Barra d'&Eines" msgid "Show Active Title in Window Title" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Mostrar Austràlia" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "" @@ -8333,7 +8512,7 @@ msgstr "" msgid "Show Debugging UI" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "" @@ -8341,43 +8520,43 @@ msgstr "" msgid "Show FPS" msgstr "Mostra FPS" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Mostrar França" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "Mostrar GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Mostrar Alemanya" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Mostrar la pantalla d'entrada" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Mostrar Itàlia" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Mostrar Corea" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "" @@ -8385,7 +8564,7 @@ msgstr "" msgid "Show Language:" msgstr "Mostrar Idioma:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Mostrar la &Configuració del Registre" @@ -8397,7 +8576,7 @@ msgstr "" msgid "Show NetPlay Ping" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "" @@ -8405,7 +8584,7 @@ msgstr "" msgid "Show On-Screen Display Messages" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Mostrar PAL" @@ -8414,23 +8593,23 @@ msgstr "Mostrar PAL" msgid "Show PC" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Mostrar Plataformes" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Mostrar Regions" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "" @@ -8439,46 +8618,50 @@ msgstr "" msgid "Show Statistics" msgstr "Mostrar Estadístiques" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Mostrar Taiwan" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Mostrar EUA" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Mostrar Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8510,7 +8693,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "" @@ -8526,16 +8709,31 @@ msgstr "" msgid "Sideways Wii Remote" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Xinès Simplificat" @@ -8543,7 +8741,7 @@ msgstr "Xinès Simplificat" msgid "Simulate DK Bongos" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8570,7 +8768,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "Salta l'accés d'EFB des de la CPU" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "" @@ -8578,7 +8776,7 @@ msgstr "" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8592,19 +8790,19 @@ msgstr "" msgid "Slider Bar" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Ranura A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Ranura B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "" @@ -8622,7 +8820,7 @@ msgstr "" msgid "Software Renderer" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8639,11 +8837,11 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "" @@ -8656,8 +8854,8 @@ msgid "Spain" msgstr "Espanya" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Espanyol" @@ -8665,7 +8863,7 @@ msgstr "Espanyol" msgid "Speaker Pan" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Volum de l'altaveu:" @@ -8700,7 +8898,7 @@ msgstr "" msgid "Speed up Disc Transfer Rate" msgstr "Accelerar la Tassa de Transferència de Disc" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "" @@ -8712,16 +8910,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Controlador Estàndard" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Començar" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "" @@ -8729,11 +8927,13 @@ msgstr "" msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Iniciar Gravació" @@ -8749,7 +8949,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "" @@ -8760,7 +8960,7 @@ msgstr "" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Volant" @@ -8788,19 +8988,19 @@ msgstr "" msgid "Step Over" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "" @@ -8809,20 +9009,20 @@ msgstr "" msgid "Stepping" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "" @@ -8843,11 +9043,15 @@ msgstr "Palanca" msgid "Stop" msgstr "Aturar" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "" @@ -8861,7 +9065,7 @@ msgstr "" msgid "Store XFB Copies to Texture Only" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8870,7 +9074,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8883,7 +9087,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Ajustar a la Finestra" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "" @@ -8906,16 +9110,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -8925,11 +9129,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -8938,7 +9142,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "" @@ -8950,12 +9154,12 @@ msgstr "" msgid "Successfully extracted system data." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "" @@ -8967,16 +9171,16 @@ msgstr "" msgid "Support" msgstr "Suport" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -8984,11 +9188,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9000,50 +9204,62 @@ msgstr "" msgid "Swing" msgstr "Swing" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "" @@ -9057,37 +9273,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Idioma del sistema:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "Entrada TAS" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "" @@ -9105,11 +9321,11 @@ msgstr "" msgid "Taiwan" msgstr "Taiwan" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Capturar pantalla" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Prova" @@ -9118,7 +9334,7 @@ msgstr "Prova" msgid "Texture Cache" msgstr "Cache de textures" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9140,7 +9356,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9154,13 +9370,13 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "" @@ -9196,7 +9412,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9210,7 +9426,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9232,19 +9448,19 @@ msgstr "" msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9294,7 +9510,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9305,7 +9521,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9322,7 +9538,7 @@ msgstr "" msgid "The hashes match!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9344,12 +9560,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9364,20 +9580,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "El codi AR desxifrat resultant no conté cap línia." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9398,7 +9614,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9449,7 +9665,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "" @@ -9485,7 +9701,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "" @@ -9505,7 +9721,7 @@ msgstr "" "Aquest simulador d'Action Replay no és compatible amb els codis que " "modifiquen el mateix Action Replay." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "" @@ -9545,7 +9761,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "" @@ -9563,27 +9783,27 @@ msgid "" "or freezes while running this game." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9639,13 +9859,13 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9665,7 +9885,7 @@ msgstr "" msgid "Threshold" msgstr "Llindar" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "" @@ -9682,22 +9902,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Títol" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "A" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "" @@ -9722,7 +9942,7 @@ msgid "Toggle Aspect Ratio" msgstr "Commutar Relació d'Aspecte" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "" @@ -9782,14 +10002,20 @@ msgstr "" msgid "Toolbar" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Superior" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9824,20 +10050,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Xinès Tradicional" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "" @@ -9867,20 +10093,12 @@ msgstr "Gatells" msgid "Type" msgstr "Tipus" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9897,9 +10115,9 @@ msgstr "" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -9927,10 +10145,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -9947,7 +10169,11 @@ msgid "" "Would you like to ignore this line and continue parsing?" msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -9959,15 +10185,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Desfer la Càrrega de l'Estat" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Desfer Estat Guardat" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "" @@ -9981,18 +10207,18 @@ msgid "" "title from the NAND without deleting its save data. Continue?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Desconegut" @@ -10000,7 +10226,7 @@ msgstr "Desconegut" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10010,7 +10236,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10020,15 +10246,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10036,19 +10262,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10056,7 +10282,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Il·limitat" @@ -10072,13 +10298,28 @@ msgstr "" msgid "Unpacking" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10087,7 +10328,7 @@ msgstr "Amunt" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Actualitzar" @@ -10142,7 +10383,7 @@ msgstr "" msgid "Upright Wii Remote" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "" @@ -10158,7 +10399,7 @@ msgstr "" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "" @@ -10184,18 +10425,40 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "" @@ -10208,18 +10471,18 @@ msgstr "" msgid "User Style:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10245,23 +10508,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10274,7 +10537,7 @@ msgstr "Utilitat" msgid "V-Sync" msgstr "Sincronització Vertical" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Valor" @@ -10307,8 +10570,8 @@ msgstr "" msgid "Verifying" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "" @@ -10344,7 +10607,7 @@ msgstr "" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10371,7 +10634,7 @@ msgstr "Pujar el volum" msgid "Vulkan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "" @@ -10419,7 +10682,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10427,8 +10690,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10450,7 +10713,7 @@ msgid "" "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10463,10 +10726,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Advertència" @@ -10482,28 +10745,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10529,7 +10792,7 @@ msgstr "" msgid "Watch" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "" @@ -10558,11 +10821,11 @@ msgid "" "unsure, leave this checked." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Modificació de Pantalla Panoràmica" @@ -10578,11 +10841,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Arrel de la NAND:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "" @@ -10590,8 +10853,8 @@ msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "" @@ -10604,11 +10867,11 @@ msgstr "" msgid "Wii Remote Orientation" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "" @@ -10624,7 +10887,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "" @@ -10632,7 +10895,7 @@ msgstr "" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "" @@ -10660,18 +10923,18 @@ msgid "World" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "" @@ -10684,12 +10947,12 @@ msgid "Write to File" msgstr "Escriu a Fitxer" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "" @@ -10697,7 +10960,7 @@ msgstr "" msgid "Write to Window" msgstr "Escriu a Finestra" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10708,7 +10971,7 @@ msgstr "" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "Registre XF" @@ -10737,8 +11000,8 @@ msgid "Yellow" msgstr "Groc" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "" @@ -10773,7 +11036,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10802,11 +11065,11 @@ msgstr "" msgid "You have to enter a name." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10814,7 +11077,7 @@ msgstr "" msgid "You must restart Dolphin in order for the change to take effect." msgstr "Ha de reiniciar Dolphin perquè el canvi faci efecte." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "" @@ -10845,23 +11108,23 @@ msgstr "Codi Zero 3 no està suportat" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10880,13 +11143,13 @@ msgstr "" msgid "d3d12.dll could not be loaded." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -10902,31 +11165,31 @@ msgstr "errno" msgid "fake-completion" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -10956,7 +11219,7 @@ msgstr "" msgid "on" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "" @@ -10965,7 +11228,7 @@ msgstr "" msgid "s" msgstr "s" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -10974,7 +11237,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -10993,7 +11256,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -11012,7 +11275,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11020,7 +11283,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Languages/po/cs.po b/Languages/po/cs.po index 6b9901938899..6da87b6646d5 100644 --- a/Languages/po/cs.po +++ b/Languages/po/cs.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Zbyněk Schwarz , 2011-2016\n" "Language-Team: Czech (http://www.transifex.com/delroth/dolphin-emu/language/" "cs/)\n" "Language: cs\n" @@ -20,7 +20,7 @@ msgstr "" "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n " "<= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -28,7 +28,7 @@ msgid "" "problems that Dolphin is unable to detect." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -36,7 +36,7 @@ msgid "" "that it hasn't been tampered with." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -52,7 +52,7 @@ msgstr "" msgid " (Disc %1)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "" @@ -60,7 +60,7 @@ msgstr "" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -74,7 +74,7 @@ msgstr "" msgid "%" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -88,17 +88,17 @@ msgstr "" msgid "%1 %" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "" @@ -117,7 +117,7 @@ msgid "%1 (Revision %3)" msgstr "" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -154,7 +154,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "" @@ -165,23 +165,23 @@ msgid "" "Current Frame: %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -190,11 +190,11 @@ msgstr "" msgid "%1 ms" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "" @@ -206,15 +206,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -230,30 +230,30 @@ msgstr "" msgid "%1[%2]: %3/%4 MiB" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "" @@ -273,7 +273,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "" @@ -282,11 +282,11 @@ msgid "&Add Memory Breakpoint" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "" @@ -294,19 +294,19 @@ msgstr "" msgid "&Add..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "Nastavení &zvuku" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "" @@ -314,11 +314,11 @@ msgstr "" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Body přerušení" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "" @@ -326,15 +326,15 @@ msgstr "" msgid "&Cancel" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "" @@ -342,7 +342,7 @@ msgstr "" msgid "&Clone..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "" @@ -350,19 +350,20 @@ msgstr "" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "&Nastavení ovladače" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "" @@ -374,7 +375,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "" @@ -382,11 +383,11 @@ msgstr "" msgid "&Edit..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulace" @@ -398,43 +399,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Soubor" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "&Postup snímkem" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "Ú&ložiště Github" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "&Grafická nastavení" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Nápověda" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "Nastavení &klávesových zkratek" @@ -446,11 +451,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "" @@ -458,7 +463,7 @@ msgstr "" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -466,23 +471,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&Nahrát Stav" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "Pa&měť" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "&Video" @@ -490,7 +495,7 @@ msgstr "&Video" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "" @@ -498,24 +503,24 @@ msgstr "" msgid "&No" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Otevřít..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "V&olby" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Pauza" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Přehrát" @@ -523,11 +528,11 @@ msgstr "&Přehrát" msgid "&Properties" msgstr "&Vlastnosti" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "&Režim pouze pro čtení" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Registry" @@ -536,24 +541,24 @@ msgid "&Remove" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Resetovat" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "" @@ -561,11 +566,11 @@ msgstr "" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "Za&stavit" @@ -573,11 +578,11 @@ msgstr "Za&stavit" msgid "&Theme:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "Nás&troje" @@ -585,17 +590,17 @@ msgstr "Nás&troje" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Zobrazit" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&Sledování" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Internetová stránka" @@ -607,11 +612,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" @@ -623,7 +628,7 @@ msgstr "" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(vypnuto)" @@ -631,34 +636,34 @@ msgstr "(vypnuto)" msgid "(ppc)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" @@ -666,6 +671,10 @@ msgstr "" msgid "128 Mbit (2043 blocks)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "" @@ -674,35 +683,35 @@ msgstr "" msgid "16-bit" msgstr "16-bitové" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x původní (1280x1056) pro 720p" @@ -714,25 +723,25 @@ msgstr "" msgid "32-bit" msgstr "32-bitové" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "" @@ -746,28 +755,32 @@ msgstr "" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x původní (1920x1584) pro 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x původní (2560x2112) pro 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x původní (3200x2640)" @@ -775,29 +788,33 @@ msgstr "5x původní (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x původní (3840x3168) pro 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x původní (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "" @@ -806,25 +823,25 @@ msgstr "" msgid "8-bit" msgstr "8-bitové" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x původní (5120x4224) pro 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "" @@ -843,12 +860,12 @@ msgid "" "Notes:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "" @@ -866,17 +883,17 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" @@ -885,7 +902,7 @@ msgstr "" msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -909,8 +926,8 @@ msgstr "" msgid "AR Codes" msgstr "Kódy AR" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "" @@ -933,7 +950,7 @@ msgstr "" msgid "Accuracy:" msgstr "Přesnost:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "" @@ -1029,9 +1046,9 @@ msgstr "Zjištěn adaptér" msgid "Adapter:" msgstr "Adaptér:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Přidat" @@ -1039,11 +1056,11 @@ msgstr "Přidat" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "" @@ -1075,46 +1092,49 @@ msgstr "" msgid "Add to &watch" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Přidat..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Adresa" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1158,39 +1178,43 @@ msgstr "Pokročilé" msgid "Africa" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "" @@ -1199,25 +1223,25 @@ msgstr "" msgid "All players' saves synchronized." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1243,7 +1267,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Anaglyf" @@ -1261,39 +1285,39 @@ msgstr "Úhel" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Anizotropní Filtrování:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Vyhlazení okrajů" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1307,15 +1331,15 @@ msgstr "Datum zavaděče aplikace:" msgid "Apply" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "" @@ -1323,11 +1347,11 @@ msgstr "" msgid "Are you sure you want to delete this file?" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "" @@ -1340,11 +1364,11 @@ msgid "Aspect Ratio" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Poměr Stran:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Přidělit porty ovladače" @@ -1352,7 +1376,7 @@ msgstr "Přidělit porty ovladače" msgid "Assign Controllers" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1377,7 +1401,7 @@ msgstr "" msgid "Australia" msgstr "Austrálie" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "" @@ -1389,15 +1413,15 @@ msgstr "Autoři" msgid "Auto" msgstr "Auto" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Auto (Násobek 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1413,7 +1437,7 @@ msgstr "" msgid "Auto-Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1424,12 +1448,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "" @@ -1444,11 +1468,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "Registr BP" @@ -1474,7 +1498,7 @@ msgstr "Nastavení podpůrné vrstvy" msgid "Backend:" msgstr "Podpůrná vrstva:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Zadní Vstup" @@ -1485,7 +1509,13 @@ msgstr "Zadní Vstup" msgid "Backward" msgstr "Dozadu" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1493,19 +1523,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Plakát" @@ -1529,7 +1560,7 @@ msgstr "" msgid "Basic" msgstr "Základní" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Základní nastavení" @@ -1537,7 +1568,7 @@ msgstr "Základní nastavení" msgid "Bass" msgstr "Basy" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1545,11 +1576,11 @@ msgstr "" msgid "Battery" msgstr "Baterie" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1571,7 +1602,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "" @@ -1584,7 +1615,7 @@ msgstr "" msgid "Blocking" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Bloky" @@ -1607,15 +1638,15 @@ msgid "" "Passthrough mode cannot be used." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "" @@ -1623,7 +1654,7 @@ msgstr "" msgid "Borderless Fullscreen" msgstr "Celá obrazovka bez okrajů" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Dole" @@ -1637,7 +1668,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "" @@ -1646,7 +1677,7 @@ msgstr "" msgid "Breakpoint" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" @@ -1676,7 +1707,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1684,12 +1715,12 @@ msgstr "" msgid "Buffer Size:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Vyrovnávací paměť:" @@ -1731,11 +1762,11 @@ msgstr "Tlačítka" msgid "C Stick" msgstr "Kruhová páčka" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "Registr CP" @@ -1766,7 +1797,7 @@ msgstr "" msgid "Calculate" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1786,15 +1817,15 @@ msgstr "" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1804,7 +1835,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1812,16 +1843,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "" @@ -1838,23 +1869,23 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "" @@ -1876,7 +1907,7 @@ msgstr "" msgid "Change &Disc" msgstr "Vyměnit &disk" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Vyměnit &Disk..." @@ -1884,15 +1915,15 @@ msgstr "Vyměnit &Disk..." msgid "Change Disc" msgstr "Vyměnit Disk" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1912,7 +1943,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Chat" @@ -1928,11 +1959,11 @@ msgstr "Hledání Cheatů" msgid "Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "" @@ -1946,7 +1977,7 @@ msgid "" "whether it's still in use." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "" @@ -1954,16 +1985,16 @@ msgstr "" msgid "China" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Zvolte soubor k otevření" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -1986,14 +2017,14 @@ msgid "Classic Controller" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Vyčistit" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "" @@ -2010,28 +2041,47 @@ msgstr "" msgid "Close" msgstr "Zavřít" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Kód:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2049,7 +2099,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "" @@ -2062,7 +2112,7 @@ msgstr "" msgid "Compression:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "" @@ -2074,13 +2124,13 @@ msgstr "" msgid "Config" msgstr "Nastavení" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Nastavit" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2088,21 +2138,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "" @@ -2115,26 +2165,26 @@ msgstr "" msgid "Confirm on Stop" msgstr "Při zastavení Potvrdit" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Připojit" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Připojit Rola-Bola" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Připojit USB Klávesnici" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "" @@ -2154,11 +2204,11 @@ msgstr "" msgid "Connect Wii Remote 4" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" @@ -2170,15 +2220,19 @@ msgstr "" msgid "Connected" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Typ připojení:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Průběžné skenování" @@ -2191,7 +2245,7 @@ msgstr "" msgid "Control Stick" msgstr "Ovládací páčka" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "" @@ -2219,7 +2273,7 @@ msgstr "" msgid "Controllers" msgstr "Ovladače" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2227,7 +2281,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2236,7 +2290,7 @@ msgid "" "Native." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2261,12 +2315,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Sblížení:" @@ -2303,33 +2357,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Kopírovat" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "" @@ -2337,11 +2396,15 @@ msgstr "" msgid "Copy failed" msgstr "Kopírování selhalo" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "" @@ -2356,16 +2419,16 @@ msgstr "Jádro" msgid "Cost" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "" @@ -2444,15 +2507,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2479,7 +2542,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "" @@ -2502,11 +2565,11 @@ msgstr "" msgid "Crossfade" msgstr "Crossfade" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2514,7 +2577,7 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "" @@ -2522,7 +2585,7 @@ msgstr "" msgid "Current thread" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2553,7 +2616,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "DK Bongos" @@ -2581,7 +2644,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2589,11 +2652,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Taneční podložka" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "" @@ -2605,28 +2668,27 @@ msgstr "" msgid "Data Transfer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2644,7 +2706,7 @@ msgid "Debug Only" msgstr "Pouze ladění" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Ladění" @@ -2686,7 +2748,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Výchozí" @@ -2702,7 +2764,7 @@ msgstr "" msgid "Default Font" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "Výchozí ISO:" @@ -2727,7 +2789,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2742,11 +2804,11 @@ msgid "Delete Selected Files..." msgstr "" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2754,21 +2816,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Hloubka:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Popis" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Popis:" @@ -2777,11 +2839,11 @@ msgstr "Popis:" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Zjistit" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2789,25 +2851,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Zařízení" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Nastavení Zařízení" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "" @@ -2819,11 +2881,15 @@ msgstr "" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "Ztmaví obrazovku po pěti minutách nečinnosti." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "Přímé spojení" @@ -2854,7 +2920,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "Zakázat ohraničující rámeček" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "" @@ -2866,15 +2932,15 @@ msgstr "" msgid "Disable Emulation Speed Limit" msgstr "Zakázat limit rychlosti emulace" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Zakázat Mlhu" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "" @@ -2882,7 +2948,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2896,7 +2962,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2913,11 +2979,15 @@ msgstr "Disk" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2935,25 +3005,25 @@ msgstr "" msgid "Distance of travel from neutral position." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Chcete současnou emulaci zastavit?" @@ -2970,9 +3040,9 @@ msgstr "" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "" @@ -2984,8 +3054,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Doplhin Filmy TAS (*.dtm)" @@ -3018,21 +3088,21 @@ msgstr "" msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3047,7 +3117,7 @@ msgstr "" msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "" @@ -3060,24 +3130,26 @@ msgid "Done compressing disc image." msgstr "Komprimace obrazu disku dokončena." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Dolů" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "" @@ -3085,11 +3157,11 @@ msgstr "" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "" @@ -3112,27 +3184,35 @@ msgstr "" msgid "Dual Core" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Atrapa" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Vypsat Zvuk" @@ -3144,7 +3224,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "Vypsat Cíl EFB" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Vypsat Snímky" @@ -3156,7 +3236,7 @@ msgstr "" msgid "Dump Objects" msgstr "Vypsat objekty" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "" @@ -3253,16 +3333,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Nizozemština" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "O&dejít" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3274,7 +3354,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3302,7 +3382,7 @@ msgstr "Efekt" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3310,7 +3390,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "" @@ -3322,7 +3402,7 @@ msgstr "" msgid "Embedded Frame Buffer (EFB)" msgstr "Vestavěná vyrovnávací paměť snímků (EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Prázdné" @@ -3330,11 +3410,11 @@ msgstr "Prázdné" msgid "Emu Thread already running" msgstr "Vlákno Emulace již běží" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "" @@ -3350,8 +3430,12 @@ msgstr "" msgid "Emulation Speed" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3367,7 +3451,7 @@ msgstr "" msgid "Enable Audio Stretching" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Povolit Cheaty" @@ -3379,7 +3463,7 @@ msgstr "" msgid "Enable Dual Core" msgstr "Povolit dvojité jádro" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Zapnout dvojité jádro (zrychlení)" @@ -3405,19 +3489,19 @@ msgid "Enable Progressive Scan" msgstr "Povolit Progresivní Skenování" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Povolit Spořič Obrazovky" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Povolit data reproduktorů" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "Povolit hlášení statistik o užívání" @@ -3447,7 +3531,7 @@ msgstr "" "Povolí výpočet příznaku výsledku plovoucí řadové čárky, nutné u některých " "her (ZAPNUTO = Kompatibilní, VYPNUTO = Rychlé)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3455,7 +3539,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3485,7 +3569,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3521,7 +3605,7 @@ msgstr "" msgid "Encoding" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3534,12 +3618,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet nebyl uaveden" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Angličtina" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3549,7 +3633,7 @@ msgstr "Vylepšení" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "" @@ -3563,11 +3647,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "" @@ -3576,65 +3660,68 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Chyba" @@ -3648,19 +3735,19 @@ msgid "Error loading selected language. Falling back to system default." msgstr "" "Chyba při nahrávání zvoleného jazyka. Vracím se na výchozí jazyk systému." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3680,7 +3767,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3730,11 +3817,11 @@ msgid "" "may not show fonts correctly, or crash." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3743,11 +3830,39 @@ msgstr "" msgid "Euphoria" msgstr "Euforie" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Evropa" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3796,14 +3911,14 @@ msgstr "" msgid "Experimental" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Exportovat všechny uložené hry Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3811,15 +3926,15 @@ msgstr "" msgid "Export Recording" msgstr "Exportovat Nahrávku" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Exportovat Nahrávku..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3831,22 +3946,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Rozšíření" @@ -3859,7 +3974,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3867,7 +3982,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "Externí vyrovnávací paměť snímků (XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "" @@ -3905,7 +4020,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "Přehrávač FIFO" @@ -3913,17 +4028,17 @@ msgstr "Přehrávač FIFO" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -3935,7 +4050,7 @@ msgstr "" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -3956,12 +4071,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -3973,19 +4088,19 @@ msgstr "" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Stahování kódů selhalo." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -3994,7 +4109,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "" @@ -4017,29 +4132,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "" @@ -4055,23 +4170,23 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "" @@ -4083,11 +4198,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "" @@ -4098,7 +4213,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "" @@ -4125,11 +4240,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "" @@ -4138,7 +4253,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4150,7 +4265,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4158,25 +4273,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4191,15 +4306,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4207,23 +4322,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4231,11 +4346,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Selhal zápis BT.DINF do SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4243,22 +4358,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4267,19 +4382,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4292,7 +4407,7 @@ msgstr "Rychlá" msgid "Fast Depth Calculation" msgstr "Rychlý výpočet hloubky" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4309,7 +4424,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "" @@ -4323,18 +4438,18 @@ msgstr "Informace o souboru" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Název souboru" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Velikost souboru" @@ -4342,11 +4457,11 @@ msgstr "Velikost souboru" msgid "File Size:" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "Soubor neobsahoval žádné kódy" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4360,11 +4475,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4372,15 +4487,15 @@ msgstr "" msgid "Filesystem" msgstr "Souborový systém" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4388,11 +4503,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "" @@ -4406,18 +4521,22 @@ msgid "" "This can take a while." msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Spravit Kontrolní Součty" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4427,13 +4546,14 @@ msgstr "" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "" @@ -4457,7 +4577,7 @@ msgstr "" msgid "Force 16:9" msgstr "Vynutit 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "" @@ -4465,15 +4585,15 @@ msgstr "" msgid "Force 4:3" msgstr "Vynutit 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Vynutit Filtrování Textur" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4483,7 +4603,7 @@ msgid "" "" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4502,21 +4622,21 @@ msgstr "" msgid "Forward" msgstr "Dopředu" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Přesměrování portu (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "" @@ -4545,7 +4665,7 @@ msgstr "" msgid "Frame Range" msgstr "Rozsah Snímku" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4557,19 +4677,19 @@ msgstr "" msgid "France" msgstr "Francie" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4577,7 +4697,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -4985,7 +5105,7 @@ msgstr "Zelená vlevo" msgid "Green Right" msgstr "Zelená vpravo" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "" @@ -4998,7 +5118,7 @@ msgstr "Kytara" msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "" @@ -5011,12 +5131,29 @@ msgstr "Hacky" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5028,19 +5165,19 @@ msgstr "" msgid "Hide" msgstr "Skrýt" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5058,21 +5195,27 @@ msgstr "" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Hostovat" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5080,7 +5223,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5088,11 +5231,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "" @@ -5104,7 +5247,7 @@ msgstr "" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "" @@ -5155,11 +5298,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "Nastavení IPL" @@ -5168,7 +5311,7 @@ msgid "IR" msgstr "Infrč." #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "Citlivost Infračer.:" @@ -5190,22 +5333,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Ikona" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5252,7 +5395,7 @@ msgstr "Ignorovat Změny Formátu" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5260,7 +5403,7 @@ msgid "" "checked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5281,41 +5424,50 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" " Time elapsed: %1s" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5368,8 +5520,8 @@ msgstr "Info" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Informace" @@ -5378,10 +5530,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Vstup" @@ -5395,16 +5547,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Vložit SD Kartu" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "" @@ -5416,7 +5574,7 @@ msgstr "" msgid "Install Update" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "" @@ -5432,11 +5590,11 @@ msgstr "" msgid "Instruction" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "" @@ -5454,7 +5612,7 @@ msgid "Interface" msgstr "Rozhraní" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Vnitřní chyba LZO - komprimace selhala" @@ -5463,27 +5621,27 @@ msgstr "Vnitřní chyba LZO - komprimace selhala" msgid "Internal LZO Error - decompression failed" msgstr "" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Vnitřní chyba LZO - lzo_init() selhalo" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Vnitřní Rozlišení:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5491,11 +5649,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "Převaděč (nejpomalejší)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5503,7 +5661,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5512,15 +5670,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5528,11 +5686,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "Neplatný hostitel" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "" @@ -5545,31 +5703,31 @@ msgstr "" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Neplatný soubor s nahrávkou" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Neplatné parametry hledání (není vybrán žádný objekt)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Neplatný řetězec hledání (nelze převést na číslo)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "Neplatný řetězec hledání (jsou podporovány pouze sudé délky řetězce)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "" @@ -5578,8 +5736,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Italština" @@ -5587,11 +5745,11 @@ msgstr "Italština" msgid "Italy" msgstr "Itálie" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "" @@ -5599,47 +5757,47 @@ msgstr "" msgid "JIT Blocks" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5651,11 +5809,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5666,12 +5824,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Japonsko" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japonština" @@ -5691,12 +5849,12 @@ msgstr "Okno vždy navrchu" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Klávesnice" @@ -5709,20 +5867,20 @@ msgstr "Klávesnice" msgid "Keys" msgstr "Klávesy" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Vykopnout hráče" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Korea" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Korejština" @@ -5750,7 +5908,7 @@ msgstr "" msgid "Label" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5830,15 +5988,15 @@ msgstr "" msgid "License" msgstr "Licence" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "" @@ -5847,17 +6005,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Nahrát" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "" @@ -5865,7 +6023,7 @@ msgstr "" msgid "Load Custom Textures" msgstr "Nahrát Vlastní Textury" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "" @@ -5874,7 +6032,7 @@ msgstr "" msgid "Load Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -5967,23 +6125,23 @@ msgstr "Nahrát stav v pozici 8" msgid "Load State Slot 9" msgstr "Načíst stav v pozici 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "" @@ -5991,12 +6149,12 @@ msgstr "" msgid "Load from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "" @@ -6004,7 +6162,7 @@ msgstr "" msgid "Load..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "" @@ -6015,7 +6173,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "" @@ -6024,7 +6182,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Záznam" @@ -6032,7 +6190,7 @@ msgstr "Záznam" msgid "Log Configuration" msgstr "Nastavení Záznamu" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6059,7 +6217,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "" @@ -6088,7 +6246,7 @@ msgstr "" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6098,7 +6256,7 @@ msgstr "Hlavní páčka" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Tvůrce" @@ -6107,7 +6265,7 @@ msgstr "Tvůrce" msgid "Maker:" msgstr "Výrobce:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6115,7 +6273,7 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "" @@ -6123,7 +6281,7 @@ msgstr "" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6131,15 +6289,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6148,7 +6306,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "Může způsobit zpomalování v nabídce Wii a u některých her." @@ -6157,11 +6315,11 @@ msgstr "Může způsobit zpomalování v nabídce Wii a u některých her." msgid "Medium" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "" @@ -6169,7 +6327,7 @@ msgstr "" msgid "Memory Card" msgstr "Paměťová karta" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "" @@ -6187,7 +6345,7 @@ msgstr "" msgid "Memory Override" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "" @@ -6203,7 +6361,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6211,13 +6369,13 @@ msgid "" "want to continue?" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Mikrofon" @@ -6225,19 +6383,19 @@ msgstr "Mikrofon" msgid "Misc" msgstr "Ostatní" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Ostatní Nastavení" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6260,12 +6418,12 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6277,11 +6435,11 @@ msgstr "Monoskopické stíny" msgid "Monospaced Font" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6321,10 +6479,10 @@ msgstr "" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "" @@ -6332,26 +6490,26 @@ msgstr "" msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "" @@ -6363,37 +6521,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Jméno:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Původní (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6401,18 +6559,18 @@ msgstr "" msgid "Netherlands" msgstr "Nizozemí" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" "V Netplay došlo ke ztrátě synchronizace. Není znám žádný způsob, jak toto " "napravit." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "" @@ -6433,11 +6591,11 @@ msgstr "" msgid "New" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "" @@ -6445,7 +6603,7 @@ msgstr "" msgid "New Tag..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "Nová identita vytvořena." @@ -6462,7 +6620,7 @@ msgstr "" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6471,17 +6629,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Přezdívka:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "" @@ -6489,6 +6647,10 @@ msgstr "" msgid "No Adapter Detected" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "" @@ -6499,24 +6661,20 @@ msgstr "" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Žádný popis není dostupný" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6528,15 +6686,15 @@ msgstr "" msgid "No file loaded / recorded." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "" @@ -6544,11 +6702,15 @@ msgstr "" msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6559,7 +6721,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6567,18 +6729,14 @@ msgstr "" msgid "No save data found." msgstr "" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" "Žádné undo.dtm nenalezeno, aby se zabránilo desynchronizaci videa, bude " -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6588,7 +6746,7 @@ msgstr "Žádné" msgid "North America" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "" @@ -6596,11 +6754,11 @@ msgstr "" msgid "Not Set" msgstr "Nenastaven" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6608,7 +6766,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6668,13 +6826,13 @@ msgstr "" msgid "Nunchuk Stick" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6687,11 +6845,11 @@ msgid "Oceania" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Vypnuto" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6703,17 +6861,17 @@ msgstr "" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "Online &dokumentace" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6728,7 +6886,7 @@ msgstr "Otevřít" msgid "Open &Containing Folder" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "" @@ -6776,7 +6934,7 @@ msgstr "" msgid "OpenGL ES" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6794,7 +6952,7 @@ msgstr "Volby" msgid "Orange" msgstr "Oranžová" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6802,7 +6960,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Jiné" @@ -6815,11 +6973,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "" @@ -6827,12 +6985,12 @@ msgstr "" msgid "Overlay Information" msgstr "Překryvné informace" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "&Spustit vstupní nahrávku..." -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "" @@ -6857,7 +7015,7 @@ msgstr "" msgid "PPC Size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6874,7 +7032,7 @@ msgstr "Pady" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6883,23 +7041,23 @@ msgstr "" msgid "Parsing Error" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "" @@ -6920,7 +7078,7 @@ msgid "Path:" msgstr "" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Cesty" @@ -6928,7 +7086,7 @@ msgstr "Cesty" msgid "Pause" msgstr "Pozastavit" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "Pozastavit na konci videa" @@ -6951,11 +7109,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Osvětlení Podle Pixelu" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "" @@ -6965,23 +7123,23 @@ msgstr "" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "" @@ -6994,7 +7152,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Platforma" @@ -7014,16 +7172,16 @@ msgstr "Přehrát nahrávku" msgid "Playback Options" msgstr "Možnosti Přehrávání" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Hráči" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7034,29 +7192,29 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Efekt Následného Zpracování:" @@ -7068,15 +7226,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "Předzískat vlastní textury" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7113,7 +7271,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7124,15 +7282,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7140,25 +7298,25 @@ msgstr "" msgid "Problem" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Profil" @@ -7172,15 +7330,15 @@ msgstr "" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7192,11 +7350,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "" @@ -7206,12 +7364,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Otázka" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Ukončit" @@ -7231,11 +7389,11 @@ msgstr "Pravý Analog" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7248,44 +7406,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Rozsah" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "" @@ -7293,11 +7451,11 @@ msgstr "" msgid "Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Opravdové Rola-Bola" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "" @@ -7310,11 +7468,11 @@ msgstr "" msgid "Record" msgstr "Nahrávat" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7339,7 +7497,7 @@ msgstr "Červená vlevo" msgid "Red Right" msgstr "Červená vpravo" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7355,16 +7513,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Obnovit" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7372,26 +7530,26 @@ msgstr "" msgid "Refresh Game List" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Oblast" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "" @@ -7411,16 +7569,16 @@ msgstr "" msgid "Remind Me Later" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Odstranit" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7443,8 +7601,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "" @@ -7477,29 +7635,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Resetovat" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "Resetovat nastavení průchod" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7507,15 +7673,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7527,11 +7693,11 @@ msgstr "" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Zkusit znovu" @@ -7540,7 +7706,7 @@ msgstr "Zkusit znovu" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7598,11 +7764,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7611,12 +7777,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7626,11 +7793,11 @@ msgstr "" msgid "Rumble" msgstr "Vibrace" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7638,15 +7805,15 @@ msgstr "" msgid "Russia" msgstr "Rusko" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "" @@ -7662,7 +7829,7 @@ msgstr "" msgid "SHA-1:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "" @@ -7676,11 +7843,11 @@ msgstr "" msgid "START" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "Uložit Sta&v" @@ -7690,7 +7857,7 @@ msgid "Safe" msgstr "Bezpečná" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7703,7 +7870,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7724,11 +7891,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7740,7 +7907,7 @@ msgstr "Načíst nejstarší stav" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7790,23 +7957,23 @@ msgstr "Uložit stav do pozice 8" msgid "Save State Slot 9" msgstr "Uložit stav do pozice 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "" @@ -7814,7 +7981,7 @@ msgstr "" msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "" @@ -7826,26 +7993,26 @@ msgstr "" msgid "Save as..." msgstr "Uložit jako" -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "" @@ -7853,7 +8020,7 @@ msgstr "" msgid "Save to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "" @@ -7861,23 +8028,23 @@ msgstr "" msgid "Save..." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "EFB Kopie Změněné Velikosti" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7885,36 +8052,36 @@ msgstr "" msgid "ScrShot" msgstr "SnímkObrz" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Hledat" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Hledat Podadresáře" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "" @@ -7922,7 +8089,7 @@ msgstr "" msgid "Search games..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "" @@ -7946,28 +8113,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Vybrat" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -7975,11 +8142,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -7987,7 +8154,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "" @@ -7995,7 +8162,7 @@ msgstr "" msgid "Select State" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Vybrat pozici stavu" @@ -8039,41 +8206,45 @@ msgstr "Vybrat stav na pozici 8" msgid "Select State Slot 9" msgstr "Vybrat stav na pozici 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "" @@ -8081,11 +8252,11 @@ msgstr "" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8093,12 +8264,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Vyberte soubor s uloženou hrou" @@ -8114,15 +8285,15 @@ msgstr "" msgid "Selected Font" msgstr "" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "Vybraný profil ovladače neexistuje" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8146,7 +8317,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8186,11 +8357,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Poslat" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Umístění Senzorové Tyče:" @@ -8202,56 +8373,64 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "Server zamítl pokus o průchod" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8260,7 +8439,7 @@ msgstr "" "Nastaví režim zobrazení Wii na 60Hz (480i) místo 50Hz (576i) pro hry PAL.\n" "Nemusí fungovat ve všech hrách." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Nastaví jazyk systému Wii" @@ -8270,7 +8449,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8305,11 +8484,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Zobrazit Záznam" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Zobrazit Panel Nás&trojů" @@ -8317,15 +8496,15 @@ msgstr "Zobrazit Panel Nás&trojů" msgid "Show Active Title in Window Title" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Zobrazit Autrálii" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "" @@ -8333,7 +8512,7 @@ msgstr "" msgid "Show Debugging UI" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "Zobrazit ELF/DOL" @@ -8341,43 +8520,43 @@ msgstr "Zobrazit ELF/DOL" msgid "Show FPS" msgstr "Zobrazit Snímky za Sekundu" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Zobrazit počítadlo snímků" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Zobrazit Francii" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "Zobrazit GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Zobrazit Německo" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Zobrazit Obrazovku Vstupu" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Zobrazit Itálii" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Zobrazit Koreu" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Zobrazit počítadlo zpoždění" @@ -8385,7 +8564,7 @@ msgstr "Zobrazit počítadlo zpoždění" msgid "Show Language:" msgstr "Jazyk Zobrazení:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Zobrazit Nastavení &Záznamu" @@ -8397,7 +8576,7 @@ msgstr "" msgid "Show NetPlay Ping" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Zobrazit Nizozemí" @@ -8405,7 +8584,7 @@ msgstr "Zobrazit Nizozemí" msgid "Show On-Screen Display Messages" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Zobrazit PAL" @@ -8414,23 +8593,23 @@ msgstr "Zobrazit PAL" msgid "Show PC" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Zobrazit Platformy" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Zobrazit Regiony" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Zobrazit Rusko" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "Zobrazit Španělsko" @@ -8439,46 +8618,50 @@ msgstr "Zobrazit Španělsko" msgid "Show Statistics" msgstr "Zobrazit Statistiky" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Zobrazit Tchaj-wan" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Zobrazit USA" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Zobrazit neznámé" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "Zobrazit WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Zobrazit Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Zobrazit svět" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8510,7 +8693,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Vedle sebe" @@ -8526,16 +8709,31 @@ msgstr "" msgid "Sideways Wii Remote" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Zjednodušená čínština" @@ -8543,7 +8741,7 @@ msgstr "Zjednodušená čínština" msgid "Simulate DK Bongos" msgstr "Simulovat Bongos DK" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8570,7 +8768,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "Přeskočit EFB Přístup z Procesoru" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "" @@ -8578,7 +8776,7 @@ msgstr "" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8592,19 +8790,19 @@ msgstr "" msgid "Slider Bar" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Pozice A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Pozice B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "" @@ -8622,7 +8820,7 @@ msgstr "" msgid "Software Renderer" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8639,11 +8837,11 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "" @@ -8656,8 +8854,8 @@ msgid "Spain" msgstr "Španělsko" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Španělština" @@ -8665,7 +8863,7 @@ msgstr "Španělština" msgid "Speaker Pan" msgstr "Posun reproduktoru" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Hlasitost Reproduktoru:" @@ -8700,7 +8898,7 @@ msgstr "" msgid "Speed up Disc Transfer Rate" msgstr "Zvýšit rychlost přenosu Disku" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "" @@ -8712,16 +8910,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Standardní Ovladač" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Start" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "" @@ -8729,11 +8927,13 @@ msgstr "" msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "&Začít nahrávat vstup" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Začít Nahrávat" @@ -8749,7 +8949,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "" @@ -8760,7 +8960,7 @@ msgstr "" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Volant" @@ -8788,19 +8988,19 @@ msgstr "" msgid "Step Over" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "" @@ -8809,20 +9009,20 @@ msgstr "" msgid "Stepping" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Režim 3D stereoskopie:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Stereoskopie" @@ -8843,11 +9043,15 @@ msgstr "Páčka" msgid "Stop" msgstr "Zastavit" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "" @@ -8861,7 +9065,7 @@ msgstr "Ukládat kopie EFB pouze do textury" msgid "Store XFB Copies to Texture Only" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8870,7 +9074,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8883,7 +9087,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Roztáhnout do Okna" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "" @@ -8906,16 +9110,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -8925,11 +9129,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -8938,7 +9142,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "" @@ -8950,12 +9154,12 @@ msgstr "" msgid "Successfully extracted system data." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "" @@ -8967,16 +9171,16 @@ msgstr "" msgid "Support" msgstr "Podpora" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -8984,11 +9188,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Prohodit oči" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9000,50 +9204,62 @@ msgstr "" msgid "Swing" msgstr "Švihnutí" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "" @@ -9057,37 +9273,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Jazyk Systému:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "TAS Vstup" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "" @@ -9105,11 +9321,11 @@ msgstr "" msgid "Taiwan" msgstr "Tchaj-wan" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Vytvořit Snímek Obrazovky" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Test" @@ -9118,7 +9334,7 @@ msgstr "Test" msgid "Texture Cache" msgstr "Vyrovnávací Paměť Textur" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9140,7 +9356,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9154,13 +9370,13 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "" @@ -9196,7 +9412,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9210,7 +9426,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9232,19 +9448,19 @@ msgstr "" msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9294,7 +9510,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9305,7 +9521,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9322,7 +9538,7 @@ msgstr "" msgid "The hashes match!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9344,12 +9560,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9364,20 +9580,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "Výsledný rozšifrovaný kód AR neobsahuje žádné řádky." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9398,7 +9614,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9449,7 +9665,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "Není co vrátit zpět!" @@ -9485,7 +9701,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "" @@ -9505,7 +9721,7 @@ msgstr "" "Tento simulátor action replay nepodporuje kód, který mění samotný Action " "Replay." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "" @@ -9545,7 +9761,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "" @@ -9563,27 +9783,27 @@ msgid "" "or freezes while running this game." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9640,13 +9860,13 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "Tato hodnota je vynásobena hloubkou zadanou v grafickém nastavení." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9666,7 +9886,7 @@ msgstr "" msgid "Threshold" msgstr "Práh" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "" @@ -9683,22 +9903,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Název" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "Do" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "" @@ -9723,7 +9943,7 @@ msgid "Toggle Aspect Ratio" msgstr "Přepínat poměr stran" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "" @@ -9783,14 +10003,20 @@ msgstr "" msgid "Toolbar" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Nahoře" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Nad sebou" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9825,20 +10051,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Tradiční Čínština" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "Server pro průchod" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "Při připojování průchozího serveru k hostiteli vršek časový limit." @@ -9868,20 +10094,12 @@ msgstr "Spínače" msgid "Type" msgstr "Typ" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9898,9 +10116,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -9928,10 +10146,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -9948,7 +10170,11 @@ msgid "" "Would you like to ignore this line and continue parsing?" msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -9960,15 +10186,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Vrátit zpět Nahrání Stavu" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Vrátit zpět Uložení Stavu" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "" @@ -9982,18 +10208,18 @@ msgid "" "title from the NAND without deleting its save data. Continue?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Neznámé" @@ -10001,7 +10227,7 @@ msgstr "Neznámé" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10011,7 +10237,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10021,15 +10247,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10037,19 +10263,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10057,7 +10283,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Neomezeno" @@ -10073,13 +10299,28 @@ msgstr "" msgid "Unpacking" msgstr "Rozbalování" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10088,7 +10329,7 @@ msgstr "Nahoru" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Aktualizovat" @@ -10143,7 +10384,7 @@ msgstr "" msgid "Upright Wii Remote" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "Nastavení hlášení statistik o užívání" @@ -10159,7 +10400,7 @@ msgstr "" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "Použít režim PAL60 (EuRGB60)" @@ -10185,18 +10426,40 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "Použít jednu mezipaměť hloubky pro obě oči. Potřebné pro pár her." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "" @@ -10209,18 +10472,18 @@ msgstr "" msgid "User Style:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10246,23 +10509,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10275,7 +10538,7 @@ msgstr "Pomůcky" msgid "V-Sync" msgstr "V-Synch" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Hodnota" @@ -10308,8 +10571,8 @@ msgstr "" msgid "Verifying" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "" @@ -10345,7 +10608,7 @@ msgstr "" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10372,7 +10635,7 @@ msgstr "Zvýšit hlasitost" msgid "Vulkan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "" @@ -10420,7 +10683,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10428,8 +10691,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10451,7 +10714,7 @@ msgid "" "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10464,10 +10727,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Varování" @@ -10483,28 +10746,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10530,7 +10793,7 @@ msgstr "" msgid "Watch" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "" @@ -10559,11 +10822,11 @@ msgid "" "unsure, leave this checked." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Hack Širokoúhlého obrazu" @@ -10579,11 +10842,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Wii Kořen NAND:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "" @@ -10591,8 +10854,8 @@ msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "" @@ -10605,11 +10868,11 @@ msgstr "" msgid "Wii Remote Orientation" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "" @@ -10625,7 +10888,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "" @@ -10633,7 +10896,7 @@ msgstr "" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "" @@ -10661,18 +10924,18 @@ msgid "World" msgstr "Světové" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "" @@ -10685,12 +10948,12 @@ msgid "Write to File" msgstr "Zapsat do Souboru" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "" @@ -10698,7 +10961,7 @@ msgstr "" msgid "Write to Window" msgstr "Zapsat do Okna" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10709,7 +10972,7 @@ msgstr "" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "Registr XF" @@ -10738,8 +11001,8 @@ msgid "Yellow" msgstr "Žlutá" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "" @@ -10774,7 +11037,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10803,11 +11066,11 @@ msgstr "" msgid "You have to enter a name." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10815,7 +11078,7 @@ msgstr "" msgid "You must restart Dolphin in order for the change to take effect." msgstr "Pro uplatnění změn musíte Dolphin restartovat." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "" @@ -10846,23 +11109,23 @@ msgstr "Kód Zero 3 není podporován" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10881,13 +11144,13 @@ msgstr "" msgid "d3d12.dll could not be loaded." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -10903,31 +11166,31 @@ msgstr "" msgid "fake-completion" msgstr "předstírat dokončení" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -10957,7 +11220,7 @@ msgstr "" msgid "on" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "" @@ -10966,7 +11229,7 @@ msgstr "" msgid "s" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -10975,7 +11238,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -10994,7 +11257,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -11013,7 +11276,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11021,7 +11284,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Languages/po/da.po b/Languages/po/da.po index e04c695e30c0..28eadffa0fdf 100644 --- a/Languages/po/da.po +++ b/Languages/po/da.po @@ -15,9 +15,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Lars Lyngby , 2020-2021\n" "Language-Team: Danish (http://www.transifex.com/delroth/dolphin-emu/language/" "da/)\n" "Language: da\n" @@ -26,7 +26,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -38,7 +38,7 @@ msgstr "" "Da GameCube diskimages har få verifikationsdata, kan der være problemer, som " "Dolphin ikke kan se." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -50,7 +50,7 @@ msgstr "" "Da titlen ikke er fremstillet til solgte Wii-konsoller, kan Dolphin ikke " "verificere, om der er pillet ved den." -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -74,7 +74,7 @@ msgstr "" msgid " (Disc %1)" msgstr "(Disk %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "" @@ -82,7 +82,7 @@ msgstr "" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -96,7 +96,7 @@ msgstr "" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -110,17 +110,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -139,7 +139,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (Udgave %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -179,7 +179,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "" @@ -190,23 +190,23 @@ msgid "" "Current Frame: %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -215,11 +215,11 @@ msgstr "" msgid "%1 ms" msgstr "%1 ms." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "" @@ -231,15 +231,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (Normal hastighed)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -255,30 +255,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2]: %3/%4 MiB" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "" @@ -298,7 +298,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&Om" @@ -307,11 +307,11 @@ msgid "&Add Memory Breakpoint" msgstr "&Tilføj Hukommelsesbreakpoint" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "&Tilføj ny kode..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "&Tilføj funktion" @@ -319,19 +319,19 @@ msgstr "&Tilføj funktion" msgid "&Add..." msgstr "&Tilføj..." -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "&Lydindstillinger" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "&Automatisk start" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "&Boot fra DVD backup" @@ -339,11 +339,11 @@ msgstr "&Boot fra DVD backup" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Breakpoints" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "" @@ -351,15 +351,15 @@ msgstr "" msgid "&Cancel" msgstr "&Annuller" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "&Snydemanager" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "&Tjek for opdateringer..." -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "&Ryd symboler" @@ -367,7 +367,7 @@ msgstr "&Ryd symboler" msgid "&Clone..." msgstr "&Klon..." -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "&Kode" @@ -375,19 +375,20 @@ msgstr "&Kode" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "&Kontrollerindstillinger" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "&Kopiér adresse" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "&Slet" @@ -399,7 +400,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "&Rediger kode..." @@ -407,11 +408,11 @@ msgstr "&Rediger kode..." msgid "&Edit..." msgstr "&Rediger..." -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "&Skub disk ud" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulation" @@ -423,43 +424,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Fil" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&Skrifttype..." -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "&Billedfremskydning" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "&GitHub-repertoire" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "&Grafikindstillinger" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Hjælp" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "&Genvejstastindstillinger" @@ -471,11 +476,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "&Importér..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "" @@ -483,7 +488,7 @@ msgstr "" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -491,23 +496,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "&Sprog:" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&Indlæs Tilstand" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Hukommelse" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "&Film" @@ -515,7 +520,7 @@ msgstr "&Film" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "" @@ -523,24 +528,24 @@ msgstr "" msgid "&No" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Åbn..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Indstillinger" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Pause" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Afspil" @@ -548,11 +553,11 @@ msgstr "&Afspil" msgid "&Properties" msgstr "&Indstillinger" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "&Read-Only Tilstand" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Registre" @@ -561,24 +566,24 @@ msgid "&Remove" msgstr "&Fjern" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "&Fjern kode" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Nulstil" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "" @@ -586,11 +591,11 @@ msgstr "" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "&Hastighedsgrænse:" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Stop" @@ -598,11 +603,11 @@ msgstr "&Stop" msgid "&Theme:" msgstr "&Tema:" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Værktøjer" @@ -610,17 +615,17 @@ msgstr "&Værktøjer" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Vis" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&Betragt" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Website" @@ -632,11 +637,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" @@ -648,7 +653,7 @@ msgstr "(Ingen)" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(fra)" @@ -656,34 +661,34 @@ msgstr "(fra)" msgid "(ppc)" msgstr "(ppc)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "--> %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" @@ -691,6 +696,10 @@ msgstr "" msgid "128 Mbit (2043 blocks)" msgstr "128 Mbit (2043 blokke)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "16 Mbit (251 blokke)" @@ -699,35 +708,35 @@ msgstr "16 Mbit (251 blokke)" msgid "16-bit" msgstr "16-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x Oprindelig (1280x1056) for 720p" @@ -739,25 +748,25 @@ msgstr "32 Mbit (507 blokke)" msgid "32-bit" msgstr "32-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -771,28 +780,32 @@ msgstr "3D-dybde" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x Oprindelig (1920x1584) for 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Mbit (59 blokke)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x Oprindelig (2560x2112) for 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x Oprindelig (3200x2640)" @@ -800,29 +813,33 @@ msgstr "5x Oprindelig (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Mbit (1019 blokke)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x Oprindelig (3840x3168) for 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x Oprindelig (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Mbit (123 blokke)" @@ -831,25 +848,25 @@ msgstr "8 Mbit (123 blokke)" msgid "8-bit" msgstr "8-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x Oprindelig (5120x4224) for 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "" @@ -868,12 +885,12 @@ msgid "" "Notes:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "" @@ -891,11 +908,11 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "En disk er allerede ved at blive sat ind" -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -903,7 +920,7 @@ msgstr "" "Nedlukning er allerede igang. Ikke gemt data kan blive mistet, hvis du " "stopper den kørende emulering, før den er færdig. Gennemtving stop?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "Sync kan kun udføres, når et Wii-spil kører." @@ -912,7 +929,7 @@ msgstr "Sync kan kun udføres, når et Wii-spil kører." msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -948,8 +965,8 @@ msgstr "AR-kode" msgid "AR Codes" msgstr "AR-koder" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -972,7 +989,7 @@ msgstr "" msgid "Accuracy:" msgstr "Nøjagtighed:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "Handling" @@ -1068,9 +1085,9 @@ msgstr "Adapter Opfanget" msgid "Adapter:" msgstr "Adapter:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Tilføj" @@ -1078,11 +1095,11 @@ msgstr "Tilføj" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "Leg til ny USB enhed" @@ -1114,46 +1131,49 @@ msgstr "" msgid "Add to &watch" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Tilføj..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Adresse" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "Adresse:" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1197,39 +1217,43 @@ msgstr "Avanceret" msgid "Africa" msgstr "Afrika" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "Alle gemte tilstande (*.sav *.s##);; All Files (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "Alle enheder" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "" @@ -1238,25 +1262,25 @@ msgstr "" msgid "All players' saves synchronized." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1282,7 +1306,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "En indsat disk var forventet men ikke fundet" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Anaglyph" @@ -1300,39 +1324,39 @@ msgstr "Vinkel" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Anisotropicfiltrering:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Anti-Aliasing:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "Alle regioner" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1346,15 +1370,15 @@ msgstr "Apploader Dato:" msgid "Apply" msgstr "Anvend" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "Er du sikker på, at du vil slette '%1'?" @@ -1362,11 +1386,11 @@ msgstr "Er du sikker på, at du vil slette '%1'?" msgid "Are you sure you want to delete this file?" msgstr "Er du sikker på, at du vil slette denne fil?" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "Er du sikker på, at du vil afslutte NetPlay?" @@ -1379,11 +1403,11 @@ msgid "Aspect Ratio" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Formatforhold:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Tildel Kontrollerporte" @@ -1391,7 +1415,7 @@ msgstr "Tildel Kontrollerporte" msgid "Assign Controllers" msgstr "Tildel kontrollere" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1416,7 +1440,7 @@ msgstr "" msgid "Australia" msgstr "Australien" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "Forfatter" @@ -1428,15 +1452,15 @@ msgstr "Skabere" msgid "Auto" msgstr "Auto" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Auto (Multiplum af 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1452,7 +1476,7 @@ msgstr "" msgid "Auto-Hide" msgstr "Auto-skjul" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1463,12 +1487,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "B" @@ -1483,11 +1507,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "BP register" @@ -1513,7 +1537,7 @@ msgstr "Backend Indstillinger" msgid "Backend:" msgstr "Backend:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Baggrundsinput" @@ -1524,7 +1548,13 @@ msgstr "Baggrundsinput" msgid "Backward" msgstr "Bagud" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1532,19 +1562,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Banner" @@ -1568,7 +1599,7 @@ msgstr "" msgid "Basic" msgstr "Basis" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Basisindstillinger" @@ -1576,7 +1607,7 @@ msgstr "Basisindstillinger" msgid "Bass" msgstr "Bas" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "Batchtilstand kan ikke anvendes uden valg af spil." @@ -1584,11 +1615,11 @@ msgstr "Batchtilstand kan ikke anvendes uden valg af spil." msgid "Battery" msgstr "Batteri" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "Beta(en gang i måneden)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1610,7 +1641,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "Blokstørrelse" @@ -1623,7 +1654,7 @@ msgstr "Blokstørrelse:" msgid "Blocking" msgstr "Blokering" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Blokke" @@ -1648,15 +1679,15 @@ msgstr "" "Bluetooth gennemgangstilstand er aktiveret, men Dolphin blev bygget uden " "libusb. Gennemgangstilstand kan ikke bruges." -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "BootMii NAND backup-fil (*.bin);;Alle filer (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "" @@ -1664,7 +1695,7 @@ msgstr "" msgid "Borderless Fullscreen" msgstr "Kantløs Fuldskærm" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Bund" @@ -1678,7 +1709,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "" @@ -1687,7 +1718,7 @@ msgstr "" msgid "Breakpoint" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" @@ -1717,7 +1748,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1725,12 +1756,12 @@ msgstr "" msgid "Buffer Size:" msgstr "Bufferstørrelse:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "Bufferstørrelse ændret til %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Buffer:" @@ -1772,11 +1803,11 @@ msgstr "Knapper" msgid "C Stick" msgstr "C-Stick" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "CP register" @@ -1807,7 +1838,7 @@ msgstr "" msgid "Calculate" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1827,15 +1858,15 @@ msgstr "Kalibrering" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1845,7 +1876,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1853,16 +1884,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "Annuller" @@ -1879,23 +1910,23 @@ msgstr "Kan ikke køre FIFO enkelttrin. Anvend 'Næste frame' i stedet for." msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "" @@ -1917,7 +1948,7 @@ msgstr "" msgid "Change &Disc" msgstr "Skift &Disk" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Skift &Disk..." @@ -1925,15 +1956,15 @@ msgstr "Skift &Disk..." msgid "Change Disc" msgstr "Skift Disk" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1953,7 +1984,7 @@ msgstr "Ændrede snydekoder får først effekt efter genstart af spillet." msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Chat" @@ -1969,11 +2000,11 @@ msgstr "Snydesøgning" msgid "Cheats Manager" msgstr "Snydemanager" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "Tjek NAND..." -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "" @@ -1987,7 +2018,7 @@ msgid "" "whether it's still in use." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "Tjeksum" @@ -1995,16 +2026,16 @@ msgstr "Tjeksum" msgid "China" msgstr "Kina" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Angiv en fil at åbne" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -2027,14 +2058,14 @@ msgid "Classic Controller" msgstr "Klassisk kontroller" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Ryd" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "Ryd cache" @@ -2051,28 +2082,47 @@ msgstr "Klon og &Rediger kode..." msgid "Close" msgstr "Luk" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "&Konfiguration" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Kode" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Kode:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "Koder modtaget!" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2090,7 +2140,7 @@ msgstr "Kompilerer shaders" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "" @@ -2103,7 +2153,7 @@ msgstr "" msgid "Compression:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "Betingelse" @@ -2115,13 +2165,13 @@ msgstr "" msgid "Config" msgstr "Konfig" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Konfigurér" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2129,21 +2179,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "Konfigurer Dolphin" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "Konfigurer input" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "Konfigurer output" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "Bekræft" @@ -2156,26 +2206,26 @@ msgstr "" msgid "Confirm on Stop" msgstr "Bekræft ved Stop" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "Bekræftelse" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Tilslut" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Forbind Balanceboard" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Forbind USB Tastatur" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "Tilslut Wii Remote %1" @@ -2195,11 +2245,11 @@ msgstr "Tilslut Wii Remote 3" msgid "Connect Wii Remote 4" msgstr "Tilslut Wii Remote 4" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "Tilslut Wii Remotes" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" @@ -2211,15 +2261,19 @@ msgstr "" msgid "Connected" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Forbindelsestype:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Kontinuerlig Skanning" @@ -2232,7 +2286,7 @@ msgstr "" msgid "Control Stick" msgstr "Kontrol-Stick" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "Kontrollerprofil" @@ -2260,7 +2314,7 @@ msgstr "Kontrollerindstillinger" msgid "Controllers" msgstr "Kontrollere" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2268,7 +2322,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2277,7 +2331,7 @@ msgid "" "Native." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2304,12 +2358,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Konvergens:" @@ -2346,33 +2400,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Kopiér" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "Kopiér &funktion" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "Kopier adresse" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "Kopiér Hex" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "" @@ -2380,11 +2439,15 @@ msgstr "" msgid "Copy failed" msgstr "Kopiering mislykkedes" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "Kopiér til A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "Kopiér til B" @@ -2399,16 +2462,16 @@ msgstr "Kerne" msgid "Cost" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "Kunne ikke skabe peer." @@ -2489,15 +2552,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "Kan ikke slå den centrale server op" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2524,7 +2587,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "Skaber:" @@ -2550,11 +2613,11 @@ msgstr "" msgid "Crossfade" msgstr "Crossfade" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2562,7 +2625,7 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "" @@ -2570,7 +2633,7 @@ msgstr "" msgid "Current thread" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2601,7 +2664,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "DK bongotrommer" @@ -2629,7 +2692,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2637,11 +2700,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Dansemåtte" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "Data" @@ -2653,28 +2716,27 @@ msgstr "" msgid "Data Transfer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "Datatype" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "Data modtaget!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2692,7 +2754,7 @@ msgid "Debug Only" msgstr "Debug Kun" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Debugging" @@ -2734,7 +2796,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Standard" @@ -2750,7 +2812,7 @@ msgstr "Standard enhed" msgid "Default Font" msgstr "Standardskrifttype" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "Standard ISO:" @@ -2775,7 +2837,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2790,11 +2852,11 @@ msgid "Delete Selected Files..." msgstr "Slet valgte filer..." #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2802,21 +2864,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Dybde:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Beskrivelse" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Beskrivelse:" @@ -2825,11 +2887,11 @@ msgstr "Beskrivelse:" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Opfang" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2837,25 +2899,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Enhed" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Enhedsindstillinger" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "" @@ -2867,11 +2929,15 @@ msgstr "Enhed:" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "Nedtoner lysstyrken efter 5 minutters inaktivitet." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "Direkte forbindelse" @@ -2902,7 +2968,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "Deaktivér Afgrænsningsramme" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "" @@ -2914,15 +2980,15 @@ msgstr "Deaktiver EFB VRAM kopier" msgid "Disable Emulation Speed Limit" msgstr "Deaktiver begrænsning af emulationshastighed" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Deaktivér tåge" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "Deaktiver JIT Cache" @@ -2930,7 +2996,7 @@ msgstr "Deaktiver JIT Cache" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2944,7 +3010,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2961,11 +3027,15 @@ msgstr "Disk" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2983,25 +3053,25 @@ msgstr "Afstand" msgid "Distance of travel from neutral position." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Ønsker du at stoppe den igangværende emulation?" @@ -3018,9 +3088,9 @@ msgstr "" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "" @@ -3032,8 +3102,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Dolphin TAS-film (*.dtm)" @@ -3066,21 +3136,21 @@ msgstr "" msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "Dolphin er en gratis og åben source GameCube- og Wii-emulator." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "Dolphin er for gammel til en gennemløbsserver" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3095,7 +3165,7 @@ msgstr "Dolphins snydesystem er slået fra." msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "Opdater ikke" @@ -3108,24 +3178,26 @@ msgid "Done compressing disc image." msgstr "Komprimering af diskaftryk fuldført." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Ned" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "Download koder" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "" @@ -3133,11 +3205,11 @@ msgstr "" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "" @@ -3160,27 +3232,35 @@ msgstr "" msgid "Dual Core" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Dukke" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Dump Lyd" @@ -3192,7 +3272,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "Drop EFB Mål" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Dump Billeder" @@ -3204,7 +3284,7 @@ msgstr "" msgid "Dump Objects" msgstr "Dump Objekter" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "Dump sti:" @@ -3301,16 +3381,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Hollandsk" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "F&orlad" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3322,7 +3402,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3350,7 +3430,7 @@ msgstr "Effekt" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3358,7 +3438,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "EiB" @@ -3370,7 +3450,7 @@ msgstr "Skub ud disken" msgid "Embedded Frame Buffer (EFB)" msgstr "Indlejret framebuffer (EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Tom" @@ -3378,11 +3458,11 @@ msgstr "Tom" msgid "Emu Thread already running" msgstr "Emulatortråd kører i forvejen" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "Emulér Wii's adapter til bluetooth" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "Emuleret Wii Remote" @@ -3398,8 +3478,12 @@ msgstr "" msgid "Emulation Speed" msgstr "Emulationshastighed" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3415,7 +3499,7 @@ msgstr "Aktivér API Valideringslag" msgid "Enable Audio Stretching" msgstr "Aktivér lydtrækning" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Aktivér snydekoder" @@ -3427,7 +3511,7 @@ msgstr "Aktivér tilpasset RTC" msgid "Enable Dual Core" msgstr "Aktivér dualcore" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Aktivér dualcore (højere hastighed)" @@ -3453,19 +3537,19 @@ msgid "Enable Progressive Scan" msgstr "Aktivér Progressiv Skanning" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "Aktivér vibration" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Aktivér Pauseskærm" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Aktivér højttalerdata" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "Aktivér rapportering af brugsstatistik" @@ -3497,7 +3581,7 @@ msgstr "" "Aktivér beregning af Floating Point resultatflag anvendt i enkelte spil. " "(TIL = Kompatibel, FRA = Hurtig)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3505,7 +3589,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3536,7 +3620,7 @@ msgid "Enables stretching of the audio to match emulation speed." msgstr "" "Aktivér strækning af lyden, så lyden afstemmes med emulationshastigheden." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3572,7 +3656,7 @@ msgstr "" msgid "Encoding" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3585,12 +3669,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet blev ikke initialiseret" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Engelsk" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3600,7 +3684,7 @@ msgstr "Forbedringer" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "Indtast USB enhets-ID" @@ -3614,11 +3698,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "Indtast kodeord" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "" @@ -3627,65 +3711,68 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Fejl" @@ -3700,19 +3787,19 @@ msgstr "" "Fejl ved indlæsning af det valgte sprog. Vender tilbage til systemets " "standard." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3732,7 +3819,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3782,11 +3869,11 @@ msgid "" "may not show fonts correctly, or crash." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "Fejl fundet i {0} blokke i {1} partitionen." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "Fejl fundet i {0} ubrugte blokke i {1} partitionen." @@ -3795,11 +3882,39 @@ msgstr "Fejl fundet i {0} ubrugte blokke i {1} partitionen." msgid "Euphoria" msgstr "Eufori" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Europa" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3848,14 +3963,14 @@ msgstr "" msgid "Experimental" msgstr "Eksperimentel" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Eksporter alle Wii-saves" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3863,15 +3978,15 @@ msgstr "" msgid "Export Recording" msgstr "Eksporter optagelse" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Eksporter optagelse..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3883,22 +3998,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Udvidelse" @@ -3911,7 +4026,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3919,7 +4034,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "Ekstern framebuffer (XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "" @@ -3957,7 +4072,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "FIFO-afspiller" @@ -3965,17 +4080,17 @@ msgstr "FIFO-afspiller" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -3987,7 +4102,7 @@ msgstr "" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -4008,12 +4123,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -4025,19 +4140,19 @@ msgstr "" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Kunne ikke downloade koder." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -4046,7 +4161,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "" @@ -4069,29 +4184,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "" @@ -4107,23 +4222,23 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "" @@ -4135,11 +4250,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "Fejl ved indlæsning af programmet til hukommelsen" @@ -4150,7 +4265,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "" @@ -4177,11 +4292,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "" @@ -4190,7 +4305,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4202,7 +4317,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "Fejl under oversættelse af Redump.org-data" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4210,25 +4325,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4243,15 +4358,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4259,23 +4374,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4283,11 +4398,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Kunne ikke skrive BT.DINF til SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4295,22 +4410,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4319,19 +4434,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4344,7 +4459,7 @@ msgstr "Hurtig" msgid "Fast Depth Calculation" msgstr "Hurtig udregning af dybte" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4361,7 +4476,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "" @@ -4375,18 +4490,18 @@ msgstr "Filinfo" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Filnavn" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Filstørrelse" @@ -4394,11 +4509,11 @@ msgstr "Filstørrelse" msgid "File Size:" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "Filen indholdte ingen koder." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4412,11 +4527,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4424,15 +4539,15 @@ msgstr "" msgid "Filesystem" msgstr "Filsystem" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "Filtersymboler" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "Filtre" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4440,11 +4555,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "Find &næste" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "Find &forrige" @@ -4458,18 +4573,22 @@ msgid "" "This can take a while." msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Ret tjeksumme" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4479,13 +4598,14 @@ msgstr "Flag" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "" @@ -4509,7 +4629,7 @@ msgstr "" msgid "Force 16:9" msgstr "Tving 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "Tvunget 24-bit farve " @@ -4517,15 +4637,15 @@ msgstr "Tvunget 24-bit farve " msgid "Force 4:3" msgstr "Tving 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Håndhæv teksturfiltrering" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4535,7 +4655,7 @@ msgid "" "" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4554,21 +4674,21 @@ msgstr "" msgid "Forward" msgstr "Fremad" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Forwardport (UPnp)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "Billede %1" @@ -4597,7 +4717,7 @@ msgstr "" msgid "Frame Range" msgstr "Billedvidde" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4609,19 +4729,19 @@ msgstr "" msgid "France" msgstr "Frankrig" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4629,7 +4749,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -5037,7 +5157,7 @@ msgstr "Grøn venstre" msgid "Green Right" msgstr "Grøn højre" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "" @@ -5050,7 +5170,7 @@ msgstr "Guitar" msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5063,12 +5183,29 @@ msgstr "Hacks" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5080,19 +5217,19 @@ msgstr "Heksadecimal" msgid "Hide" msgstr "Skjul" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5110,21 +5247,27 @@ msgstr "" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Vært" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5132,7 +5275,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5140,11 +5283,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "Vært inputautoritet aktiveret" @@ -5156,7 +5299,7 @@ msgstr "" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "Genvejstastindstillinger" @@ -5207,11 +5350,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "IP-adresse:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "IPL-indstillinger" @@ -5220,7 +5363,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "IR-sensitivitet:" @@ -5242,22 +5385,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Ikon" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5312,7 +5455,7 @@ msgstr "Ignorer skift af formater" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5320,7 +5463,7 @@ msgid "" "checked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5341,41 +5484,50 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Importer Wii-save..." -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "Importerer NAND-backup" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" " Time elapsed: %1s" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5428,8 +5580,8 @@ msgstr "Info" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Information" @@ -5438,10 +5590,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Input" @@ -5455,16 +5607,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Indsæt SD-kort" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "Installere" @@ -5476,7 +5634,7 @@ msgstr "" msgid "Install Update" msgstr "Installer opdatering" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "Installere WAD..." @@ -5492,11 +5650,11 @@ msgstr "" msgid "Instruction" msgstr "Instruktion" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "Instruktion:" @@ -5514,7 +5672,7 @@ msgid "Interface" msgstr "Grænseflade" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Intern LZO-fjel - komprimering mislykkedes" @@ -5523,27 +5681,27 @@ msgstr "Intern LZO-fjel - komprimering mislykkedes" msgid "Internal LZO Error - decompression failed" msgstr "" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Intern LZO-fejl - lzo_init() mislykkedes" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Intern opløsning:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5551,11 +5709,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "Interpreter (langsomst)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5563,7 +5721,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "Ugyldig mix-kode" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5572,15 +5730,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5588,11 +5746,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "Forkert vært" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "" @@ -5605,31 +5763,31 @@ msgstr "" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "Forkert kodeord indtastet." -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Forkert optagelsesfil" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Forkerte søgeparametre (intet objekt valgt)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Forkert søgetekst (kunne ikke konvertere til tal)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "Forkert søgetekst (kun lige længder er understøttet)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "" @@ -5638,8 +5796,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Italiensk" @@ -5647,11 +5805,11 @@ msgstr "Italiensk" msgid "Italy" msgstr "Italien" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "JIT blok sammenkædning slået fra" @@ -5659,47 +5817,47 @@ msgstr "JIT blok sammenkædning slået fra" msgid "JIT Blocks" msgstr "JIT blokke" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5711,11 +5869,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5726,12 +5884,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Japan" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japansk" @@ -5751,12 +5909,12 @@ msgstr "Hold vinduet øverst" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Tastatur" @@ -5769,20 +5927,20 @@ msgstr "Tastatur" msgid "Keys" msgstr "Taster" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "KiB" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Smid spiller ud" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Korea" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Koreansk" @@ -5810,7 +5968,7 @@ msgstr "" msgid "Label" msgstr "Mærkat" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5890,15 +6048,15 @@ msgstr "" msgid "License" msgstr "Licens" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "" @@ -5907,17 +6065,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Indlæs" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "" @@ -5925,7 +6083,7 @@ msgstr "" msgid "Load Custom Textures" msgstr "Indlæs tilpassede teksturer" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "" @@ -5934,7 +6092,7 @@ msgstr "" msgid "Load Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -6027,23 +6185,23 @@ msgstr "Indlæs tilstand plads 8" msgid "Load State Slot 9" msgstr "Indlæs tilstand plads 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "Indlæs tilstand fra valgte plads" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "Indlæs tilstand fra plads" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "Last Wii-save" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "" @@ -6051,12 +6209,12 @@ msgstr "" msgid "Load from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "Indlæs fra plads %1 - %2" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "" @@ -6064,7 +6222,7 @@ msgstr "" msgid "Load..." msgstr "Indlæs..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "" @@ -6075,7 +6233,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "Lokal" @@ -6084,7 +6242,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Log" @@ -6092,7 +6250,7 @@ msgstr "Log" msgid "Log Configuration" msgstr "Konfiguration af log" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6119,7 +6277,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "" @@ -6148,7 +6306,7 @@ msgstr "MMU" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6158,7 +6316,7 @@ msgstr "Primært stik" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Udgiver" @@ -6167,7 +6325,7 @@ msgstr "Udgiver" msgid "Maker:" msgstr "Udgiver:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6175,7 +6333,7 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "" @@ -6183,7 +6341,7 @@ msgstr "" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6191,15 +6349,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6208,7 +6366,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "Kan sænke hastigheden i Wii-menuen og nogle spil." @@ -6217,11 +6375,11 @@ msgstr "Kan sænke hastigheden i Wii-menuen og nogle spil." msgid "Medium" msgstr "Medium" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "Hukommelse" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "Hukommelsesbreakpoint" @@ -6229,7 +6387,7 @@ msgstr "Hukommelsesbreakpoint" msgid "Memory Card" msgstr "Hukommelseskort" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "" @@ -6247,7 +6405,7 @@ msgstr "" msgid "Memory Override" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "Hukommelsesbreakpointindstillinger" @@ -6263,7 +6421,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6271,13 +6429,13 @@ msgid "" "want to continue?" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "MiB" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Mikrofon" @@ -6285,21 +6443,21 @@ msgstr "Mikrofon" msgid "Misc" msgstr "Diverse" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Diverse indstillinger" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" "Misforhold mellem antal ubrugte blokke fra header og faktisk antal ubrugte " "blokke." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6322,12 +6480,12 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6339,11 +6497,11 @@ msgstr "Monoskopiske skygger" msgid "Monospaced Font" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6383,10 +6541,10 @@ msgstr "Video" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "NAND tjek" @@ -6394,26 +6552,26 @@ msgstr "NAND tjek" msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "Navn" @@ -6425,37 +6583,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Navn:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Oprindelig (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "NetPlay" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6463,16 +6621,16 @@ msgstr "" msgid "Netherlands" msgstr "Holland" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "Netplay ude af sync. Denne situation kan ikke afhjælpes." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "Netværk " @@ -6493,11 +6651,11 @@ msgstr "" msgid "New" msgstr "Ny" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "" @@ -6505,7 +6663,7 @@ msgstr "" msgid "New Tag..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "Ny identitet genereret." @@ -6522,7 +6680,7 @@ msgstr "" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6531,17 +6689,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Kaldenavn:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "Nej" @@ -6549,6 +6707,10 @@ msgstr "Nej" msgid "No Adapter Detected" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "" @@ -6559,24 +6721,20 @@ msgstr "" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "Ingen træf" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Ingen beskrivelse tilgængelig" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6588,15 +6746,15 @@ msgstr "" msgid "No file loaded / recorded." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "" @@ -6604,11 +6762,15 @@ msgstr "" msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6619,7 +6781,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6627,19 +6789,15 @@ msgstr "" msgid "No save data found." msgstr "" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" "'undo.dtm' ikke fundet. Afbryder 'Fortryd' starttilstand for at undgå film " "desync" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6649,7 +6807,7 @@ msgstr "Ingen" msgid "North America" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "Ikke fundet" @@ -6657,11 +6815,11 @@ msgstr "Ikke fundet" msgid "Not Set" msgstr "Ikke sat" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "Det er ikke alle spillere, der har dette spil. Vil du virkelig starte?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6669,7 +6827,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6729,13 +6887,13 @@ msgstr "" msgid "Nunchuk Stick" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "Ok" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6748,11 +6906,11 @@ msgid "Oceania" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Fra" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6764,17 +6922,17 @@ msgstr "På" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "Online&dokumentation" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6789,7 +6947,7 @@ msgstr "Åbn" msgid "Open &Containing Folder" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "" @@ -6837,7 +6995,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6855,7 +7013,7 @@ msgstr "Indstillinger" msgid "Orange" msgstr "Orange" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6863,7 +7021,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Andre" @@ -6876,11 +7034,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "Anden tilstand genvejstaster" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "Andet spil..." @@ -6888,12 +7046,12 @@ msgstr "Andet spil..." msgid "Overlay Information" msgstr "Overlæg information" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "Spi&l inputoptagelse..." -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -6918,7 +7076,7 @@ msgstr "" msgid "PPC Size" msgstr "PPC-størrelse" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6935,7 +7093,7 @@ msgstr "Pads" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6944,23 +7102,23 @@ msgstr "" msgid "Parsing Error" msgstr "Oversættelsesfejl" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "Kodeord" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "Kodeord?" @@ -6981,7 +7139,7 @@ msgid "Path:" msgstr "" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Stier" @@ -6989,7 +7147,7 @@ msgstr "Stier" msgid "Pause" msgstr "Pause" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "Pause ved slutning på film" @@ -7012,11 +7170,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Per-pixel belysning" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "" @@ -7026,23 +7184,23 @@ msgstr "" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "PiB" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "Ping" @@ -7055,7 +7213,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Platform" @@ -7075,16 +7233,16 @@ msgstr "Afspil optagelse" msgid "Playback Options" msgstr "Playback-indstillinger" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "Spiller" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Spillere" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7095,29 +7253,29 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "Port %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Postprocessing-effekt" @@ -7129,15 +7287,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "Indlæs først tilpassede teksturer" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7174,7 +7332,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7185,15 +7343,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "Privat" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7201,25 +7359,25 @@ msgstr "" msgid "Problem" msgstr "Problem" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Profil" @@ -7233,15 +7391,15 @@ msgstr "" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "Offentlig" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7253,11 +7411,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "Servicekvalitet (QoS) kunne ikke aktiveres." -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "Servicekvalitet (QoS) aktiveret." @@ -7267,12 +7425,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Spørgsmål" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Afslut" @@ -7292,11 +7450,11 @@ msgstr "R-analog" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7309,44 +7467,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Rækkevidde" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "Læs og skriv" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "" @@ -7354,11 +7512,11 @@ msgstr "" msgid "Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Ægte Balance Board" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "" @@ -7371,11 +7529,11 @@ msgstr "" msgid "Record" msgstr "Optag" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7400,7 +7558,7 @@ msgstr "Rød venstre" msgid "Red Right" msgstr "Rød højre" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7416,16 +7574,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Genindlæs" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7433,26 +7591,26 @@ msgstr "" msgid "Refresh Game List" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "Genindlæser..." #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Region" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "Region:" @@ -7472,16 +7630,16 @@ msgstr "" msgid "Remind Me Later" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Fjern" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7504,8 +7662,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "" @@ -7538,29 +7696,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Nulstil" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "Nulstil traversal-indstillinger" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7568,15 +7734,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7588,11 +7754,11 @@ msgstr "Genstart nødvendig" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Prøv igen" @@ -7601,7 +7767,7 @@ msgstr "Prøv igen" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7659,11 +7825,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7672,12 +7838,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7687,11 +7854,11 @@ msgstr "" msgid "Rumble" msgstr "Vibration" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7699,15 +7866,15 @@ msgstr "" msgid "Russia" msgstr "Rusland" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "SD-kort" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "SD-kort sti:" @@ -7723,7 +7890,7 @@ msgstr "" msgid "SHA-1:" msgstr "SHA-1:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "SP1:" @@ -7737,11 +7904,11 @@ msgstr "" msgid "START" msgstr "START" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "Ge&m tilstand" @@ -7751,7 +7918,7 @@ msgid "Safe" msgstr "Sikker" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7764,7 +7931,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7785,11 +7952,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7801,7 +7968,7 @@ msgstr "Gem ældste tilstand" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7851,23 +8018,23 @@ msgstr "Gem tilstand plads 8" msgid "Save State Slot 9" msgstr "Gem tilstand plads 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "Gem tilstand til ældste plads" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "Gem tilstand til valgte plads" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "Gem tilstand til plads" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "" @@ -7875,7 +8042,7 @@ msgstr "" msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "" @@ -7887,26 +8054,26 @@ msgstr "" msgid "Save as..." msgstr "Gem som..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "" @@ -7914,7 +8081,7 @@ msgstr "" msgid "Save to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "Gem til plads %1 - %2" @@ -7922,23 +8089,23 @@ msgstr "Gem til plads %1 - %2" msgid "Save..." msgstr "Gem..." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Skaleret EFB-kopier" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7946,36 +8113,36 @@ msgstr "" msgid "ScrShot" msgstr "Skærmdump" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Søg" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "Søgeadresse" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Søg i undermapper" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "" @@ -7983,7 +8150,7 @@ msgstr "" msgid "Search games..." msgstr "Søg spil..." -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "Søg instruktion" @@ -8007,28 +8174,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Vælg" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -8036,11 +8203,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -8048,7 +8215,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "Vælg plads %1 - %2" @@ -8056,7 +8223,7 @@ msgstr "Vælg plads %1 - %2" msgid "Select State" msgstr "Vælg tilstand" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Vælg tilstand plads" @@ -8100,41 +8267,45 @@ msgstr "Vælg tilstand plads 8" msgid "Select State Slot 9" msgstr "Vælg tilstand plads 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "Vælg Wii NAND-rod" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "Vælg en mappe" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "Vælg en fil" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "Vælg et spil" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "Vælg et spil" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "" @@ -8142,11 +8313,11 @@ msgstr "" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8154,12 +8325,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Vælg savefilen" @@ -8175,15 +8346,15 @@ msgstr "" msgid "Selected Font" msgstr "Valgt skrifttype" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "Valgte kontrollerprofil eksisterer ikke" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8207,7 +8378,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8247,11 +8418,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Send" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Sensorbarens position:" @@ -8263,56 +8434,64 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "Serveren nægtede forsøget på traversal" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "Indstil PC" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8322,7 +8501,7 @@ msgstr "" "(576i) for PAL-spil.\n" "Virker måske ikke med alle spil." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Indstiller Wii-systemets sprog." @@ -8332,7 +8511,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8367,11 +8546,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Vis &log" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Vis &værktøjslinje" @@ -8379,15 +8558,15 @@ msgstr "Vis &værktøjslinje" msgid "Show Active Title in Window Title" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Vis Australien" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "" @@ -8395,7 +8574,7 @@ msgstr "" msgid "Show Debugging UI" msgstr "Vis debuggingskærmflade" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "Vis ELF/DOL" @@ -8403,43 +8582,43 @@ msgstr "Vis ELF/DOL" msgid "Show FPS" msgstr "Vis FPS" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Vis billedtæller" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Vis Frankrig" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "Vis GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Vis Tyskland" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Vis input" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Vis Italien" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Vis Korea" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Vis lag-tæller" @@ -8447,7 +8626,7 @@ msgstr "Vis lag-tæller" msgid "Show Language:" msgstr "Vis sprog:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Vis log&konfiguration" @@ -8459,7 +8638,7 @@ msgstr "Vis NetPlay meddelelser" msgid "Show NetPlay Ping" msgstr "Vis NetPlay ping" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Vis Holland" @@ -8467,7 +8646,7 @@ msgstr "Vis Holland" msgid "Show On-Screen Display Messages" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Vis PAL" @@ -8476,23 +8655,23 @@ msgstr "Vis PAL" msgid "Show PC" msgstr "Vis PC" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Vis platforme" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Vis regioner" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Vis Rusland" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "Vis Spanien" @@ -8501,46 +8680,50 @@ msgstr "Vis Spanien" msgid "Show Statistics" msgstr "Vis statistikker" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "Vis systemur" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Vis Taiwan" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Vis USA" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Vis ukendte" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "Vis WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Vis Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Vis verden" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8572,7 +8755,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Side om side" @@ -8588,16 +8771,31 @@ msgstr "Sidelæns skift" msgid "Sideways Wii Remote" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Simpel kinesisk" @@ -8605,7 +8803,7 @@ msgstr "Simpel kinesisk" msgid "Simulate DK Bongos" msgstr "Simuler DK-Bongotrommer" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8632,7 +8830,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "Spring EFB-adgang fra CPU over" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "" @@ -8640,7 +8838,7 @@ msgstr "" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8654,19 +8852,19 @@ msgstr "" msgid "Slider Bar" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Plads A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "Plads A:" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Plads B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "Plads B:" @@ -8684,7 +8882,7 @@ msgstr "" msgid "Software Renderer" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8701,11 +8899,11 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "" @@ -8718,8 +8916,8 @@ msgid "Spain" msgstr "Spanien" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Spansk" @@ -8727,7 +8925,7 @@ msgstr "Spansk" msgid "Speaker Pan" msgstr "Højttalerpanorering" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Lydstyrke for højtaler" @@ -8762,7 +8960,7 @@ msgstr "Fart" msgid "Speed up Disc Transfer Rate" msgstr "Hurtigere diskoverførselshastighed" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "" @@ -8774,16 +8972,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Standardkontroller" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Start" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "Start &NetPlay..." @@ -8791,11 +8989,13 @@ msgstr "Start &NetPlay..." msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "Start med at &optage input" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Start optagelse" @@ -8811,7 +9011,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "" @@ -8822,7 +9022,7 @@ msgstr "" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Rat" @@ -8850,19 +9050,19 @@ msgstr "Hop ud" msgid "Step Over" msgstr "Hop over" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "Hop ud succes!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "Hop ud timeout!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "Hop over udføres..." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "Hop succes!" @@ -8871,20 +9071,20 @@ msgstr "Hop succes!" msgid "Stepping" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Tilstand for stereoskopisk 3D:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Stereoskopi" @@ -8905,11 +9105,15 @@ msgstr "Stik" msgid "Stop" msgstr "Stop" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "" @@ -8923,7 +9127,7 @@ msgstr "Gem kun EFB-kopier til tekstur" msgid "Store XFB Copies to Texture Only" msgstr "Gem kun XFB-kopier i tekstur" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8932,7 +9136,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8945,7 +9149,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Stræk til vindue" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "" @@ -8968,16 +9172,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "Succes" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -8987,11 +9191,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -9000,7 +9204,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "" @@ -9012,12 +9216,12 @@ msgstr "" msgid "Successfully extracted system data." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "" @@ -9029,16 +9233,16 @@ msgstr "" msgid "Support" msgstr "Support" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -9046,11 +9250,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Byt om på øjne" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9062,50 +9266,62 @@ msgstr "" msgid "Swing" msgstr "Sving" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "Byt til A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "Byt til B" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "Symbol" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "Symboler" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "Synkronisér" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "" @@ -9119,37 +9335,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Systemsprog:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "TAS-input" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "" @@ -9167,11 +9383,11 @@ msgstr "" msgid "Taiwan" msgstr "Taiwan" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Tag skærmbillede" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Test" @@ -9180,7 +9396,7 @@ msgstr "Test" msgid "Texture Cache" msgstr "Tekstur-cache" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9202,7 +9418,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9216,13 +9432,13 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "" @@ -9258,7 +9474,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9272,7 +9488,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "Disken, der var ved at blive sat ind, kunne ikke ses" -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9294,19 +9510,19 @@ msgstr "" msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "Indtastet PID er ugyldig" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "Indtastet VID er ugyldig" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9356,7 +9572,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9367,7 +9583,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9384,7 +9600,7 @@ msgstr "" msgid "The hashes match!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9406,12 +9622,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9426,20 +9642,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "Den resulterende dekrypterede AR-kode indeholder ikke nogen linjer." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9460,7 +9676,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9511,7 +9727,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "Der er intet af fortryde!" @@ -9547,7 +9763,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "" @@ -9567,7 +9783,7 @@ msgstr "" "Action Replay-simulatoren understøtter ikke koder, der modificerer selve " "Action Replay'en." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "Kan ikke gøres om!" @@ -9607,7 +9823,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "" @@ -9625,27 +9845,27 @@ msgid "" "or freezes while running this game." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9705,13 +9925,13 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "Værdien ganges med grafikindstillingernes dybdeindstilling" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9731,7 +9951,7 @@ msgstr "" msgid "Threshold" msgstr "Tærskel" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "TiB" @@ -9748,22 +9968,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Titel" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "Til" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "Til:" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "Aktiver &fuldskærm" @@ -9788,7 +10008,7 @@ msgid "Toggle Aspect Ratio" msgstr "Skift forholdstal" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "" @@ -9848,14 +10068,20 @@ msgstr "" msgid "Toolbar" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Top" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Top og bund" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9890,20 +10116,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Traditionel kinesisk" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "Traversal-server" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "Traversal-server fik timeout ved forbindelse til vært" @@ -9933,20 +10159,12 @@ msgstr "Triggers" msgid "Type" msgstr "Type" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9963,9 +10181,9 @@ msgstr "USB-Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -9993,10 +10211,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10022,7 +10244,11 @@ msgstr "" "\n" "Vil du ignorere denne linje og fortsætte oversættelsen?" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -10034,15 +10260,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Fortryd indlæsning af tilstand" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Fortræd lagring af tilstand" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "Afinstaller" @@ -10056,18 +10282,18 @@ msgid "" "title from the NAND without deleting its save data. Continue?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Ukendt" @@ -10075,7 +10301,7 @@ msgstr "Ukendt" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10085,7 +10311,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10095,15 +10321,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10111,19 +10337,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10131,7 +10357,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Ubegrænset" @@ -10147,13 +10373,28 @@ msgstr "" msgid "Unpacking" msgstr "Udpakker" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10162,7 +10403,7 @@ msgstr "Op" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Opdater" @@ -10217,7 +10458,7 @@ msgstr "Oprejst skift" msgid "Upright Wii Remote" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "Indstillinger for brugsstatistik" @@ -10233,7 +10474,7 @@ msgstr "Anvend tilpasset brugerlayout" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "Brug PAL60-tilstand (EURGB60)" @@ -10259,18 +10500,40 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "Brug en enkelt dybte-buffer til begge øjne. Nødvendig til nogle spil." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "Brugerindstillinger" @@ -10283,18 +10546,18 @@ msgstr "Brugergrænseflade" msgid "User Style:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10320,23 +10583,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10349,7 +10612,7 @@ msgstr "Værktøj" msgid "V-Sync" msgstr "V-sync" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Værdi" @@ -10382,8 +10645,8 @@ msgstr "" msgid "Verifying" msgstr "Verificerer" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "Version" @@ -10419,7 +10682,7 @@ msgstr "Se &hukommelse" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10446,7 +10709,7 @@ msgstr "Skru lyde op" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "WAD-filer (*.wad)" @@ -10494,7 +10757,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10502,8 +10765,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10525,7 +10788,7 @@ msgid "" "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10538,10 +10801,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Advarsel" @@ -10559,28 +10822,28 @@ msgstr "" "Advarsel: Antal blokke markeret af BAT ({0}) passer ikke med indlæst " "filheader ({1})" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10606,7 +10869,7 @@ msgstr "" msgid "Watch" msgstr "Se" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "Webside" @@ -10635,11 +10898,11 @@ msgid "" "unsure, leave this checked." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Widescreen-hack" @@ -10655,11 +10918,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Wii-Menu" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Wii NAND-rod" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Wii Remote" @@ -10667,8 +10930,8 @@ msgstr "Wii Remote" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "Wii Remote %1" @@ -10681,11 +10944,11 @@ msgstr "Wii Remote-knapper" msgid "Wii Remote Orientation" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Wii Remote-indstillinger" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Wii Remotes" @@ -10701,7 +10964,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "Wii og Wii Remote" @@ -10709,7 +10972,7 @@ msgstr "Wii og Wii Remote" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "" @@ -10739,18 +11002,18 @@ msgid "World" msgstr "Verden" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "" @@ -10763,12 +11026,12 @@ msgid "Write to File" msgstr "Skriv til fil" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "" @@ -10776,7 +11039,7 @@ msgstr "" msgid "Write to Window" msgstr "Skriv til vindue" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10787,7 +11050,7 @@ msgstr "" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "XF-register" @@ -10816,8 +11079,8 @@ msgid "Yellow" msgstr "Gul" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "Ja" @@ -10852,7 +11115,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10881,11 +11144,11 @@ msgstr "" msgid "You have to enter a name." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10894,7 +11157,7 @@ msgid "You must restart Dolphin in order for the change to take effect." msgstr "" "Du bliver nødt til at genstarte Dolhin før end at ændringen træder i kraft." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "" @@ -10925,23 +11188,23 @@ msgstr "Nul 3 kode ikke understøttet" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10960,13 +11223,13 @@ msgstr "cm" msgid "d3d12.dll could not be loaded." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -10982,31 +11245,31 @@ msgstr "" msgid "fake-completion" msgstr "falsk-udførsel" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -11036,7 +11299,7 @@ msgstr "" msgid "on" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "eller vælg en enhed" @@ -11045,7 +11308,7 @@ msgstr "eller vælg en enhed" msgid "s" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -11054,7 +11317,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -11073,7 +11336,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -11092,7 +11355,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "{0} af {1} blokke. Komprimeringsforhold {2}%" @@ -11100,7 +11363,7 @@ msgstr "{0} af {1} blokke. Komprimeringsforhold {2}%" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Languages/po/de.po b/Languages/po/de.po index 66eb885cc12c..da4574acf22a 100644 --- a/Languages/po/de.po +++ b/Languages/po/de.po @@ -33,9 +33,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Marc Godhusen , 2016-2021\n" "Language-Team: German (http://www.transifex.com/delroth/dolphin-emu/language/" "de/)\n" "Language: de\n" @@ -44,7 +44,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -56,7 +56,7 @@ msgstr "" "Da GameCube-Disc-Abbilder nur wenige Überprüfungsdaten enthalten, könnten " "Probleme auftreten, die Dolphin nicht erkennen kann." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -68,7 +68,7 @@ msgstr "" "Da dieser Titel nicht für Retail-Wii-Konsolen bestimmt ist, kann Dolphin " "nicht nachweisen, dass er nicht modifiziert wurde." -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -93,7 +93,7 @@ msgstr "" msgid " (Disc %1)" msgstr "(Disc %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "! Nicht" @@ -101,7 +101,7 @@ msgstr "! Nicht" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "\"{0}\" ist keine gültige GCM/ISO-Datei, oder kein GC/Wii-Image." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -115,7 +115,7 @@ msgstr "" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "% Modulo" @@ -131,17 +131,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -160,7 +160,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (Revision %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "%1 (Bestand)" @@ -200,7 +200,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "%1 unterstützt diese Funktion auf Ihrem System nicht." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "%1 unterstützt diese Funktion nicht." @@ -214,23 +214,23 @@ msgstr "" "%2 Objekt(e)\n" "Derzeitiger Frame: %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "%1 ist beigetreten" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "%1 ist gegangen" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "%1 golft jetzt" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -239,11 +239,11 @@ msgstr "" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "%1 Sitzung gefunden" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "%1 Sitzungen gefunden" @@ -255,15 +255,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (Normale Geschwindigkeit)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -279,30 +279,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2]: %3/%4 MiB" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "%1x Nativ (%2x%3)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "& Und" @@ -322,7 +322,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&Über" @@ -331,11 +331,11 @@ msgid "&Add Memory Breakpoint" msgstr "&Speicherhaltepunkt hinzufügen" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "Neuen Code &hinzufügen..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "Funktion &hinzufügen" @@ -343,19 +343,19 @@ msgstr "Funktion &hinzufügen" msgid "&Add..." msgstr "&Hinzufügen..." -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "&Audioeinstellungen" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "&Automatisches Update" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "&Automatischer Start" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "Von &DVD-Sicherung starten" @@ -363,11 +363,11 @@ msgstr "Von &DVD-Sicherung starten" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Haltepunkte" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "&Bug Tracker" @@ -375,15 +375,15 @@ msgstr "&Bug Tracker" msgid "&Cancel" msgstr "&Abbrechen" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "&Cheats-Manager" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "&Auf Updates prüfen..." -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "Symbole lös&chen" @@ -391,7 +391,7 @@ msgstr "Symbole lös&chen" msgid "&Clone..." msgstr "&Klonen..." -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "&Code" @@ -399,19 +399,20 @@ msgstr "&Code" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "&Controller-Einstellungen" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "Adresse &kopieren" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "&Erstellen..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "&Löschen" @@ -423,7 +424,7 @@ msgstr "&Überwachung löschen" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "Code b&earbeiten..." @@ -431,11 +432,11 @@ msgstr "Code b&earbeiten..." msgid "&Edit..." msgstr "B&earbeiten..." -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "&Disc auswerfen" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulation" @@ -447,43 +448,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Datei" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "Schri&ftart..." -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "&Einzelbildwiedergabe" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "&Freies Umsehen-Einstellungen" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "Symbole erzeu&gen aus" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "&GitHub-Repositorium" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "&Grafikeinstellungen" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Hilfe" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "&Tastenkürzel-Einstellungen" @@ -495,11 +500,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "&Importieren..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "blr &einfügen" @@ -507,7 +512,7 @@ msgstr "blr &einfügen" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -515,23 +520,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "&Sprache:" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "Spielstand &laden" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "Symbolkarte &laden" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "Widgets an Ort und Stelle &sperren" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Arbeitsspeicher" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "Fil&m" @@ -539,7 +544,7 @@ msgstr "Fil&m" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "&Netzwerk" @@ -547,24 +552,24 @@ msgstr "&Netzwerk" msgid "&No" msgstr "&Nein" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "Ö&ffnen..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Optionen" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "&HLE-Funktionen patchen" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "Pau&se" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Start" @@ -572,11 +577,11 @@ msgstr "&Start" msgid "&Properties" msgstr "&Eigenschaften" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "Nu&r-Lese-Modus" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Register" @@ -585,24 +590,24 @@ msgid "&Remove" msgstr "Entfe&rnen" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "Code entfe&rnen" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "Symbol &umbenennen" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Reset" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "&Ressourcenpaketverwaltung" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "Symbolkarte &speichern" @@ -610,11 +615,11 @@ msgstr "Symbolkarte &speichern" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "&Geschwindigkeitsbegrenzung:" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "Sto&pp" @@ -622,11 +627,11 @@ msgstr "Sto&pp" msgid "&Theme:" msgstr "&Design:" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "&Threads" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "E&xtras" @@ -634,17 +639,17 @@ msgstr "E&xtras" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Ansicht" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&Überwachungsfenster" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Webseite" @@ -656,11 +661,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "&Ja" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "Konnte '%1' nicht finden, es wurden keine Symbolnamen generiert" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" "'%1' konnte nicht gefunden werden, es wird stattdessen nach gemeinsamen " @@ -674,7 +679,7 @@ msgstr "(Keine)" msgid "(host)" msgstr "(Host)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(aus)" @@ -682,34 +687,34 @@ msgstr "(aus)" msgid "(ppc)" msgstr "(ppc)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "* Multiplizieren" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "+ Addieren" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr ", Komma" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "- Subtrahieren" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "--> %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "/ Dividieren" @@ -717,6 +722,10 @@ msgstr "/ Dividieren" msgid "128 Mbit (2043 blocks)" msgstr "128 Mbit (2043 Blöcke)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "16 Mbit (251 Blöcke)" @@ -725,35 +734,35 @@ msgstr "16 Mbit (251 Blöcke)" msgid "16-bit" msgstr "16 Bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x Nativ (1280x1056) für 720p" @@ -765,25 +774,25 @@ msgstr "32 Mbit (507 Blöcke)" msgid "32-bit" msgstr "32 Bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -797,28 +806,32 @@ msgstr "3D-Tiefe" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x Nativ (1920x1584) für 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Mbit (59 Blöcke)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x Nativ (2560x2112) für 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x Nativ (3200x2640)" @@ -826,29 +839,33 @@ msgstr "5x Nativ (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Mbit (1019 Blöcke)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x Nativ (3840x3168) für 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x Nativ (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Mbit (123 Blöcke)" @@ -857,25 +874,25 @@ msgstr "8 Mbit (123 Blöcke)" msgid "8-bit" msgstr "8 Bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x Nativ (5120x4224) für 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "< Kleiner als" @@ -897,12 +914,12 @@ msgstr "" "Download verfügbar. Deine Version ist %2.
Möchtest du updaten?" "

Release-Notizen:

" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "> Größer als" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "Eine NetPlay-Sitzung läuft bereits!" @@ -926,13 +943,13 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "Eine Disc wird momentan bereits eingelesen." -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" "Ein Spielstand kann nicht geladen werden, wenn kein zu startendes Spiel " "angegeben wurde." -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -941,7 +958,7 @@ msgstr "" "verloren gehen, wenn du die aktuelle Emulation stoppst, bevor sie " "abgeschlossen ist. Stopp erzwingen?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" "Eine Synchronisierung kann nur ausgelöst werden, wenn ein Wii-Spiel läuft." @@ -951,7 +968,7 @@ msgstr "" msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -989,8 +1006,8 @@ msgstr "AR-Code" msgid "AR Codes" msgstr "AR Codes" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -1013,7 +1030,7 @@ msgstr "Beschleunigungssensor" msgid "Accuracy:" msgstr "Genauigkeit:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "Aktion" @@ -1125,9 +1142,9 @@ msgstr "Adapter erkannt" msgid "Adapter:" msgstr "Grafikkarte:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Hinzufügen" @@ -1135,11 +1152,11 @@ msgstr "Hinzufügen" msgid "Add &breakpoint" msgstr "&Haltepunkt hinzufügen" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "Neuen DSU-Server hinzufügen" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "Neues USB-Gerät hinzufügen" @@ -1171,46 +1188,49 @@ msgstr "Speicherhaltepunkt hinzufügen" msgid "Add to &watch" msgstr "Zur Über&wachung hinzufügen" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "Zur Überwachung hinzufügen" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Hinzufügen..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Adresse" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "Adressraum" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "Adresse:" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1275,39 +1295,43 @@ msgstr "Erweitert" msgid "Africa" msgstr "Afrika" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "Alle Dateien (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "Alle Speicherstände (*.sav *.s##);; Alle Dateien (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "Alle Geräte" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "Alle Codes der Spieler synchronisiert." @@ -1316,19 +1340,19 @@ msgstr "Alle Codes der Spieler synchronisiert." msgid "All players' saves synchronized." msgstr "Alle Spielstände der Spieler synchronisiert." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "Nicht übereinstimmende Regionseinstellungen zulassen" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "Berichterstattung für Nutzungsdaten erlauben" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "Schreiben auf SD-Karte zulassen" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." @@ -1336,7 +1360,7 @@ msgstr "" "Erlaubt es, die Kamera im Spiel frei zu bewegen.

Im " "Zweifel deaktiviert lassen." -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1363,7 +1387,7 @@ msgid "An inserted disc was expected but not found." msgstr "" "Eine eingelesene Disc wurde erwartet, konnte aber nicht gefunden werden." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Anaglyph" @@ -1381,39 +1405,39 @@ msgstr "Winkel" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "Anisotropische Filterung" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Anisotropische Filterung:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "Anti-Aliasing" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Anti-Aliasing:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "Beliebige Region" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "Signatur anfügen an" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "An &vorhandene Signaturdatei anfügen..." -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "Signaturdatei an&wenden..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1429,15 +1453,15 @@ msgstr "Apploader Datum:" msgid "Apply" msgstr "Übernehmen" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "Signaturdatei anwenden" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "Willkürliche Mipmaps erkennen" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "Möchtest du '%1' wirklich löschen? " @@ -1445,11 +1469,11 @@ msgstr "Möchtest du '%1' wirklich löschen? " msgid "Are you sure you want to delete this file?" msgstr "Möchtest du diese Datei wirklich löschen? " -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "Möchtest du dieses Paket wirklich löschen? " -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "Bist du dir sicher, dass du NetPlay beenden möchtest?" @@ -1462,11 +1486,11 @@ msgid "Aspect Ratio" msgstr "Seitenverhältnis" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Seitenverhältnis:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Controller-Ports zuweisen" @@ -1474,7 +1498,7 @@ msgstr "Controller-Ports zuweisen" msgid "Assign Controllers" msgstr "Controller zuweisen" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1499,7 +1523,7 @@ msgstr "Audiodehnungseinstellungen" msgid "Australia" msgstr "Australien" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "Autor" @@ -1511,15 +1535,15 @@ msgstr "Autoren" msgid "Auto" msgstr "Automatisch" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Automatisch (Vielfaches von 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "Einstellungen automatisch updaten" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1539,7 +1563,7 @@ msgstr "Fenstergröße automatisch anpassen" msgid "Auto-Hide" msgstr "Automatisch verbergen" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "RSO-Module automatisch erkennen?" @@ -1552,12 +1576,12 @@ msgstr "" "

Im Zweifel deaktiviert lassen." #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "Hilfs" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "B" @@ -1575,11 +1599,11 @@ msgstr "" "Nintendo GameCube MAC-Adresse verwendet werden. Generiere eine neue MAC-" "Adresse beginnend mit 00:09:bf oder 00:17:ab." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "BP-Register" @@ -1605,7 +1629,7 @@ msgstr "Backend-Einstellungen" msgid "Backend:" msgstr "Backend:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Hintergrundeingabe" @@ -1616,7 +1640,13 @@ msgstr "Hintergrundeingabe" msgid "Backward" msgstr "Rückwärts" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "Unzulässige Adresse angegeben." @@ -1624,19 +1654,20 @@ msgstr "Unzulässige Adresse angegeben." msgid "Bad dump" msgstr "Schlechter Dump" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "Unzulässigen Wert angegeben." #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Banner" @@ -1660,7 +1691,7 @@ msgstr "Basispriorität" msgid "Basic" msgstr "Standard" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Grundeinstellungen" @@ -1668,7 +1699,7 @@ msgstr "Grundeinstellungen" msgid "Bass" msgstr "Bass" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" "Der Batchmodus kann nicht verwendet werden, ween kein zu startendes Spiel " @@ -1678,11 +1709,11 @@ msgstr "" msgid "Battery" msgstr "Batterie" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "Beta (einmal im Monat)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "BetterJoy, DS4Windows usw." @@ -1704,7 +1735,7 @@ msgstr "Bitrate (kbit/s):" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "Blockgröße" @@ -1717,7 +1748,7 @@ msgstr "Blockgröße:" msgid "Blocking" msgstr "Blockierung" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Blöcke" @@ -1742,15 +1773,15 @@ msgstr "" "Bluetooth-Durchleitungsmodus ist aktiviert, aber Dolphin wurde ohne libusb " "gebaut. Durchleitungsmodus kann nicht verwendet werden." -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "Pausieren nach Boot" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "BootMii-NAND-Sicherungsdatei (*.bin);;Alle Dateien (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "BootMii Schlüsseldatei (*.bin);;Alle Dateien (*)" @@ -1758,7 +1789,7 @@ msgstr "BootMii Schlüsseldatei (*.bin);;Alle Dateien (*)" msgid "Borderless Fullscreen" msgstr "Randloses Vollbild" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Unten" @@ -1772,7 +1803,7 @@ msgid "Branches" msgstr "Zweige" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "Unterbrechen" @@ -1781,7 +1812,7 @@ msgstr "Unterbrechen" msgid "Breakpoint" msgstr "Haltepunkt" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "Haltepunkt gefunden! Schritt heraus abgebrochen." @@ -1811,7 +1842,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "&NetPlay-Sitzungen durchsuchen...." @@ -1819,12 +1850,12 @@ msgstr "&NetPlay-Sitzungen durchsuchen...." msgid "Buffer Size:" msgstr "Puffergröße:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "Puffergröße auf %1 geändert" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Puffer:" @@ -1869,11 +1900,11 @@ msgstr "Tasten" msgid "C Stick" msgstr "C-Stick" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "Signatu&rdatei erstellen..." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "CP-Register " @@ -1907,7 +1938,7 @@ msgstr "" msgid "Calculate" msgstr "Berechnen" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1932,15 +1963,15 @@ msgstr "Kalibrierung" msgid "Calibration Period" msgstr "Kalibrierungszeitraum" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "Aufrufstapel" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "Kamera 1" @@ -1950,7 +1981,7 @@ msgstr "Kamera 1" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "Sichtfeld der Kamera (beeinflusst die Empfindlichkeit des Zeigens)." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1958,16 +1989,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "Kann Wiimote bei Verbindungs-Handle {0:02x} nicht finden" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "Du kannst keine NetPlay-Session starten, während ein Spiel noch läuft!" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "Abbrechen" @@ -1987,23 +2018,23 @@ msgstr "" "Kann dieses WAD nicht booten, da es nicht auf dem NAND installiert werden " "konnte." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "Kann die GC IPL nicht finden." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "" "Kann das Spiel nicht starten, da die GC IPL nicht gefunden werden konnte." @@ -2026,7 +2057,7 @@ msgstr "Zentrieren und Kalibrieren" msgid "Change &Disc" msgstr "Disc &wechseln" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Disc &wechseln..." @@ -2034,15 +2065,15 @@ msgstr "Disc &wechseln..." msgid "Change Disc" msgstr "Disc wechseln" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "Discs automatisch wechseln" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "Wechsle die Disc zu {0}" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -2073,7 +2104,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Chat" @@ -2089,11 +2120,11 @@ msgstr "Cheatsuche" msgid "Cheats Manager" msgstr "Cheat-Verwaltung" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "NAND prüfen..." -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "Veränderungen der Spieleliste im Hintergrund prüfen" @@ -2109,7 +2140,7 @@ msgstr "" "Überprüfe, ob du entweder die nötigen Berechtigungen besitzt, um die Datei " "zu löschen, oder ob die Datei noch in Verwendung ist." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "Prüfsumme" @@ -2117,16 +2148,16 @@ msgstr "Prüfsumme" msgid "China" msgstr "China" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Datei zum Öffnen auswählen" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "Vorrangige Eingabedatei auswählen" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "Sekundäre Eingabedatei auswählen" @@ -2149,14 +2180,14 @@ msgid "Classic Controller" msgstr "Klassischer Controller" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Leeren" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "Cache leeren" @@ -2173,28 +2204,47 @@ msgstr "Code b&earbeiten und klonen..." msgid "Close" msgstr "Schließen" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "Ko&nfiguration" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Code" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Code:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "Codes empfangen!" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "&Zwei Signaturdateien kombinieren..." #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "Gemeinsam" @@ -2212,7 +2262,7 @@ msgstr "Kompiliere Shader" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "Komprimierung" @@ -2225,7 +2275,7 @@ msgstr "Komprimierungsstufe:" msgid "Compression:" msgstr "Komprimierung:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "Bedingung" @@ -2237,13 +2287,13 @@ msgstr "Bedingt" msgid "Config" msgstr "Einstellungen" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Einstellungen" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "Controller konfigurieren" @@ -2251,21 +2301,21 @@ msgstr "Controller konfigurieren" msgid "Configure Dolphin" msgstr "Dolphin konfigurieren" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "Eingabe konfigurieren" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "Ausgabe konfigurieren" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "Bestätigen" @@ -2278,26 +2328,26 @@ msgstr "Ändern des Backends bestätigen" msgid "Confirm on Stop" msgstr "Beim Beenden bestätigen" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "Bestätigung" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Verbinden" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Balance Bord anschließen" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "USB-Tastatur verbunden" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "Wiimote %1 verbinden" @@ -2317,11 +2367,11 @@ msgstr "Wiimote 3 verbinden" msgid "Connect Wii Remote 4" msgstr "Wiimote 4 verbinden" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "Wiimotes verbinden" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "Wiimotes für emulierte Controller verbinden" @@ -2334,15 +2384,19 @@ msgstr "" msgid "Connected" msgstr "Verbunden" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Verbindungstyp:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "Inhalt {0:08x} ist beschädigt." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Durchgehendes Suchen" @@ -2355,7 +2409,7 @@ msgstr "NetPlay Golf-Modus steuern" msgid "Control Stick" msgstr "Control Stick" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "Controller-Profil" @@ -2383,7 +2437,7 @@ msgstr "Controller-Einstellungen" msgid "Controllers" msgstr "Controller" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2395,7 +2449,7 @@ msgstr "" "

Ein höherer Wert sorgt für stärkere Außen-Effekte, während ein " "niedrigerer Wert angenehmer ist." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2409,7 +2463,7 @@ msgstr "" "geringer die interne Auflösung, desto besser die Performance." "

Im Zweifel, wähle Nativ." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2443,12 +2497,12 @@ msgstr "" "Kontroliiert, ob High- oder Low-Level-DSP Emulation verwendet werden soll. " "Standardwert True" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "Konvergenz" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Konvergenz:" @@ -2488,33 +2542,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Kopieren" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "&Funktion kopieren" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "&Hex kopieren" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "Adresse kopieren" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "Hex kopieren" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "Codezei&le kopieren" @@ -2522,11 +2581,15 @@ msgstr "Codezei&le kopieren" msgid "Copy failed" msgstr "Kopieren fehlgeschlagen" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "Nach A kopieren" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "Nach B kopieren" @@ -2541,16 +2604,16 @@ msgstr "Kern" msgid "Cost" msgstr "Einbußen" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "Konnte mit Host nicht kommunizieren." -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "Client konnte nicht erstellt werden." -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "Peer konnte nicht erstellt werden." @@ -2663,15 +2726,15 @@ msgstr "" "Wenn ja, dann musst du möglicherweise deinen Speicherort für die " "Speicherkarte in den Optionen neu angeben." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "Konnte den zentralen Server nicht ermitteln" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "Konnte Datei nicht öffnen." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "Konnte Datei nicht lesen." @@ -2698,7 +2761,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "Ersteller:" @@ -2724,11 +2787,11 @@ msgstr "" msgid "Crossfade" msgstr "Überblendung" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "Aktuelle Region" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2736,7 +2799,7 @@ msgstr "" msgid "Current context" msgstr "Aktueller Kontext" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "Aktuelles Spiel" @@ -2744,7 +2807,7 @@ msgstr "Aktuelles Spiel" msgid "Current thread" msgstr "Aktueller Thread" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2775,7 +2838,7 @@ msgstr "" msgid "DJ Turntable" msgstr "DJ-Plattenspieler" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "DK-Bongos" @@ -2803,7 +2866,7 @@ msgstr "" msgid "DSU Client" msgstr "DSU-Client" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2815,11 +2878,11 @@ msgstr "" "Controllern.

Anweisungen zur Einrichtung
findest du auf dieser Seite." -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Tanzmatte" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "Daten" @@ -2831,28 +2894,27 @@ msgstr "" msgid "Data Transfer" msgstr "Datentransfer" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "Datentyp" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "Daten im Bereich der Datei, die nicht verwendet werden sollten." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "Daten empfangen!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2870,7 +2932,7 @@ msgid "Debug Only" msgstr "Nur Fehlersuche" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Debug" @@ -2912,7 +2974,7 @@ msgstr "Reduziere X" msgid "Decrease Y" msgstr "Reduziere Y" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Standard" @@ -2928,7 +2990,7 @@ msgstr "Standardgerät" msgid "Default Font" msgstr "Standardschriftart" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "Standard-ISO:" @@ -2959,7 +3021,7 @@ msgstr "" "angewiesen sind.

Im Zweifel deaktiviert lassen." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2974,11 +3036,11 @@ msgid "Delete Selected Files..." msgstr "Ausgewählte Dateien löschen..." #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "Vorhandende Datei '{0}' löschen?" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "Tiefe" @@ -2986,21 +3048,21 @@ msgstr "Tiefe" msgid "Depth Percentage:" msgstr "Tiefe in Prozent:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Tiefe:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Beschreibung" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Beschreibung:" @@ -3009,11 +3071,11 @@ msgstr "Beschreibung:" msgid "Detached" msgstr "Gelöst" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Erkenne" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -3021,25 +3083,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "Deterministischer Doppelkern: " -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "Entwickler (mehrmals am Tag)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Gerät" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "Geräte PID (z.b., 0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Geräteeinstellungen" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "Geräte VID (z.b., 057e)" @@ -3051,11 +3113,15 @@ msgstr "Gerät:" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "Verdunkelt den Bildschirm nach fünf Minuten Inaktivität." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "Direktverbindung" @@ -3092,7 +3158,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "Bounding Box deaktivieren" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "Kopierfilter deaktivieren" @@ -3104,15 +3170,15 @@ msgstr "EFB VRAM-Kopien deaktivieren" msgid "Disable Emulation Speed Limit" msgstr "Geschwindigkeitsbegrenzung ausschalten" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "Fastmem deaktivieren" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Nebel deaktivieren" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "JIT-Zwischenspeicher deaktivieren" @@ -3120,7 +3186,7 @@ msgstr "JIT-Zwischenspeicher deaktivieren" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -3141,7 +3207,7 @@ msgstr "" "zu erzwingen. Sperrt jede Hochskalierung.

Im " "Zweifel deaktiviert lassen." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -3164,11 +3230,15 @@ msgstr "Disc" msgid "Discard" msgstr "Verwerfen" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -3191,25 +3261,25 @@ msgstr "Distanz" msgid "Distance of travel from neutral position." msgstr "Weite der Bewegung von der neutralen Position." -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "Dolphin autorisieren, Informationen an das Entwicklerteam zu senden?" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "Möchtest du \"%1\" zur Liste der Spielverzeichnisse hinzufügen?" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "Möchtest du die Liste der Symbolnamen löschen?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Laufende Emulation stoppen?" @@ -3226,9 +3296,9 @@ msgstr "Dolphin FIFO-Log (*.dff)" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "Dolphin-Kartendatei (*.map)" @@ -3240,8 +3310,8 @@ msgstr "Dolphin-Signatur-CSV-Datei" msgid "Dolphin Signature File" msgstr "Dolphin-Signaturdatei" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Dolphin TAS-Filme (*.dtm)" @@ -3276,11 +3346,11 @@ msgstr "Dolphin konnte die gewünschte Aktion nicht ausführen." msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "Dolphin ist ein freier und quelloffener Gamecube- und Wii-Emulator." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "Dolphin ist zu alt für den Übergangsserver" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." @@ -3288,11 +3358,11 @@ msgstr "" "Dolphin kann typische TGC-Dateien nicht ordnungsgemäß überprüfen, da sie " "sich nicht um Dumps der tatsächlichen Discs handeln." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "Dolphin kann nicht lizenzierte Discs nicht überprüfen." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3309,7 +3379,7 @@ msgstr "Dolphins Cheatsystem ist momentan deaktiviert." msgid "Domain" msgstr "Domain" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "Nicht updaten" @@ -3322,24 +3392,26 @@ msgid "Done compressing disc image." msgstr "Disc-Abbild wurde erfolgreich komprimiert." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "Double" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Unten" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "Codes herunterladen" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "Codes von der WiiRD-Datenbank herunterladen" @@ -3347,11 +3419,11 @@ msgstr "Codes von der WiiRD-Datenbank herunterladen" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "Spiele-Covers von GameTDB.com für die Tabellenansicht herunterladen" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "Herunterladen abgeschlossen" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "%1 Codes heruntergeladen. (%2 hinzugefügt)" @@ -3374,27 +3446,35 @@ msgstr "Schlagzeug" msgid "Dual Core" msgstr "Doppelkern" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Dummy" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "&ARAM dumpen" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "&ExRAM dumpen" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "&FakeVMEM dumpen" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "&MRAM dumpen" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Audio dumpen" @@ -3406,7 +3486,7 @@ msgstr "Basistexturen dumpen" msgid "Dump EFB Target" msgstr "EFB-Target dumpen" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Frames dumpen" @@ -3418,7 +3498,7 @@ msgstr "Mipmaps dumpen" msgid "Dump Objects" msgstr "Objektauszüge speichern" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "Dump-Pfad:" @@ -3524,16 +3604,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "Freigabedauer der Turbo-Taste (Frames):" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Holländisch" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "&Beenden" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3548,7 +3628,7 @@ msgstr "" "mindestens Version {0}.{1} -- Wenn du Dolphin kürzlich aktualisiert hast, " "ist eventuell ein Neustart nötig, damit Windows den neuen Treiber erkennt." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3580,7 +3660,7 @@ msgstr "Effekt" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "Effektiv" @@ -3588,7 +3668,7 @@ msgstr "Effektiv" msgid "Effective priority" msgstr "Effektive Priorität" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "EiB" @@ -3600,7 +3680,7 @@ msgstr "Disc auswerfen" msgid "Embedded Frame Buffer (EFB)" msgstr "Eingebetteter Bildspeicher (EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Leer" @@ -3608,11 +3688,11 @@ msgstr "Leer" msgid "Emu Thread already running" msgstr "Emu-Thread läuft bereits." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "Wiis Bluetooth-Adapter emulieren" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "Emulierte Wiimote" @@ -3631,8 +3711,12 @@ msgstr "" msgid "Emulation Speed" msgstr "Emulationsgeschwindigkeit" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3648,7 +3732,7 @@ msgstr "API-Validierungsschichten aktivieren" msgid "Enable Audio Stretching" msgstr "Audiodehnung aktivieren" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Cheats aktivieren" @@ -3660,7 +3744,7 @@ msgstr "Benutzerdefinierte Echtzeituhr aktivieren" msgid "Enable Dual Core" msgstr "Dual Core aktivieren" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Dual Core aktivieren (Beschleunigung)" @@ -3686,19 +3770,19 @@ msgid "Enable Progressive Scan" msgstr "Progressiven Scan aktivieren" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "Rumble aktivieren" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Bildschirmschoner aktivieren" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Lautsprecherdaten aktivieren" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "Berichterstattung für Nutzungsdaten aktivieren" @@ -3730,7 +3814,7 @@ msgstr "" "Aktiviert die Fließkomma-Ergebnis-Bitschalter-Berechnung, wird von einigen " "Spielen benötigt. (EIN = Kompatibilität, AUS = Geschwindigkeit)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3742,7 +3826,7 @@ msgstr "" "Fehler verursachen.

Im Zweifel, wähle 1x." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3785,7 +3869,7 @@ msgstr "" "Ermöglicht die Dehnung des Audiosignals, um die Emulationsgeschwindigkeit " "anzupassen." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3827,7 +3911,7 @@ msgstr "" msgid "Encoding" msgstr "Kodierung" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3840,12 +3924,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet konnte nicht initialisiert werden" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Englisch" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3855,7 +3939,7 @@ msgstr "Verbesserungen" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "USB-Geräte ID eingeben" @@ -3869,11 +3953,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "Neue Breitband-Adapter MAC-Adresse eingeben:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "Passwort eingeben" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "Geben Sie die RSO-Moduladresse ein:" @@ -3882,65 +3966,68 @@ msgstr "Geben Sie die RSO-Moduladresse ein:" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Fehler" @@ -3955,19 +4042,19 @@ msgstr "" "Fehler beim Laden der ausgewählten Sprache. Kehre nun zum Systemstandard " "zurück." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "Fehler beim Abrufen der Sitzungsliste: %1" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "Fehler beim Verarbeiten der Codes." -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "Fehler beim Verarbeiten der Daten." @@ -3987,7 +4074,7 @@ msgstr "Fehler beim Synchronisieren der Spielstände!" msgid "Error writing file: {0}" msgstr "Fehler beim Schreiben der Datei: {0}" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -4045,11 +4132,11 @@ msgstr "" "nicht geladen. Das Spiel wird die Schriftarten vielleicht nicht anzeigen, " "oder abstürzen." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "Es wurden Fehler gefunden in den Blöcken {0} der Partition {1}." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" "Es wurden Fehler gefunden in den unbenutzten Blöcken {0} der Partition {1}." @@ -4059,11 +4146,39 @@ msgstr "" msgid "Euphoria" msgstr "Euphoria" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Europa" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -4112,14 +4227,14 @@ msgstr "" msgid "Experimental" msgstr "Experimentell" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Alle Wii-Spielstände exportieren" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -4127,15 +4242,15 @@ msgstr "" msgid "Export Recording" msgstr "Aufnahme exportieren" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Aufnahme exportieren..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "Spielstanddatei exportieren" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -4147,22 +4262,22 @@ msgstr "Wii-Spielstand exportieren" msgid "Export Wii Saves" msgstr "Wii-Spielstände exportieren" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "%n Spielstand/stände exportiert" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Erweiterung" @@ -4175,7 +4290,7 @@ msgstr "Erweiterung - Bewegungseingabe" msgid "Extension Motion Simulation" msgstr "Erweiterung - Bewegungssimulation" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "Extern" @@ -4183,7 +4298,7 @@ msgstr "Extern" msgid "External Frame Buffer (XFB)" msgstr "Externer Bildspeicher (XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "Zertifikate aus NAND extrahieren" @@ -4221,7 +4336,7 @@ msgid "FD" msgstr "FD" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "FIFO-Player" @@ -4229,7 +4344,7 @@ msgstr "FIFO-Player" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" @@ -4237,11 +4352,11 @@ msgstr "" "Konnte Speicherkarte nicht öffnen:\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "Konnte diese Sitzung nicht zum NetPlay Index hinzufügen: %1" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "Konnte nicht an Signaturdatei '%1' anfügen." @@ -4253,7 +4368,7 @@ msgstr "Fehler beim Einfordern der Schnittstelle für BT-Durchleitung" msgid "Failed to connect to Redump.org" msgstr "Konnte nicht mit Redump.org verbinden" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "Konnte nicht mit Server %1 verbinden" @@ -4274,12 +4389,12 @@ msgstr "Fehler beim Erstellen der globalen D3D12-Ressourcen" msgid "Failed to create DXGI factory" msgstr "Fehler beim Erstellen der DXGI-Factory" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" "Konnte NetPlay-Speicherkarte nicht löschen. Überprüfe deine " @@ -4293,19 +4408,19 @@ msgstr "Konnte die ausgewählte Datei nicht löschen." msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "Fehler beim Lösen des Kernel-Treibers für BT-Durchleitung: {0}" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Download der Codes fehlgeschlagen." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "Konnte %1 nicht dumpen: Fehler beim Öffnen der Datei" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "Konnte %1 nicht dumpen: Fehler beim Schreiben in Datei" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -4314,7 +4429,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "Konnte folgende Spielstände nicht exportieren:" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "Konnte Zertifikate aus NAND nicht extrahieren" @@ -4340,18 +4455,18 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "Ein oder mehrere D3D-Symbole konnten nicht gefunden werden" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "Konnte \"%1\" nicht importieren." -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" "Konnte Spielstand nicht importieren. Bitte starte das Spiel einmal und " "versuche es danach erneut." -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." @@ -4359,7 +4474,7 @@ msgstr "" "Konnte Spielstand nicht importieren. Die gegebene Datei scheint beschädigt " "zu sein oder ist kein gültiger Wii-Spielstand." -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " @@ -4370,7 +4485,7 @@ msgstr "" "dein NAND zu reparieren (Extras -> NAND verwalten -> NAND prüfen...) und " "versuche anschließend, den Spielstand erneut zu importieren." -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "Konnte Kern nicht initiieren" @@ -4386,16 +4501,16 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "Renderer-Klassen konnten nicht initialisiert werden" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "Konnte Paket: %1 nicht installieren" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "Konnte diesen Titel nicht in den NAND installieren." -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" @@ -4403,8 +4518,8 @@ msgstr "" "Fehler beim Lauschen auf Port %1. Wird eine andere Instanz des NetPlay-" "Servers ausgeführt?" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "Konnte RSO-Modul an %1 nicht laden" @@ -4416,11 +4531,11 @@ msgstr "Fehler beim Laden der Datei d3d11.dll" msgid "Failed to load dxgi.dll" msgstr "Fehler beim Laden der Datei dxgi.dll" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "Konnte Kartendatei '%1' nicht laden" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "Konnte die ausführbare Datei nicht in den Speicher laden." @@ -4433,7 +4548,7 @@ msgstr "" "Updatepaket KB4019990 zu installieren." #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "Konnte '&1' nicht öffnen" @@ -4464,11 +4579,11 @@ msgstr "" "Stellen Sie sicher, dass eine Anwendung zum Öffnen von INI-Dateien " "zugewiesen ist." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "Konnte Server nicht öffnen" @@ -4477,7 +4592,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "Konnte Eingabedatei \"%1\" nicht öffnen." #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4492,7 +4607,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "Konnte Daten von Redump.org nicht parsen" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4500,25 +4615,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "Konnte nicht aus der Eingabedatei \"{0}\" lesen." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "Konnte {0} nicht lesen" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4536,19 +4651,19 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "Dieser Titel konnte nicht aus dem NAND entfernt werden." -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" "Konnte NetPlay GCI-Ordner nicht löschen. Überprüfe deine " "Schreibberechtigungen." -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" "Konnte NetPlay NAND-Ordner nicht zurücksetzen. Überprüfe deine " "Schreibberechtigungen." -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4556,23 +4671,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "Konnte FIFO-Log nicht speichern." -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "Konnte Codekarte nicht in Pfad '%1' speichern" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "Konnte Signaturdatei '%1' nicht speichern" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "Konnte Symbolkarte nicht in Pfad '%1' speichern" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "Konnte nicht an Signaturdatei '%1' speichern." -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "Konnte Paket: %1 nicht deinstallieren" @@ -4580,11 +4695,11 @@ msgstr "Konnte Paket: %1 nicht deinstallieren" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Fehler beim Schreiben von BT.DINF nach SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "Konnte Mii-Daten nicht schreiben." -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "Konnte Wii-Spielstand nicht schreiben." @@ -4592,22 +4707,22 @@ msgstr "Konnte Wii-Spielstand nicht schreiben." msgid "Failed to write config file!" msgstr "Konnte Einstellungsdatei nicht schreiben!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4618,19 +4733,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "Fehler" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "Faire Eingangsverzögerung" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "Zurückgreifende Region" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "Zurückgreifende Region:" @@ -4643,7 +4758,7 @@ msgstr "Schnell" msgid "Fast Depth Calculation" msgstr "Schnelle Tiefenberechnung" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4662,7 +4777,7 @@ msgstr "Dateidetails" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "Dateiformat" @@ -4676,18 +4791,18 @@ msgstr "Datei-Informationen" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Dateiname" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "Dateipfad" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Dateigröße" @@ -4695,11 +4810,11 @@ msgstr "Dateigröße" msgid "File Size:" msgstr "Dateigröße:" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "Datei enthielt keine Codes." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4715,12 +4830,12 @@ msgstr "" "Vorgegebene Dateien in der M3U-Datei \"{0}\" wurden nicht gefunden:\n" "{1}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" "Die Dateigröße entspricht keiner bekannten GameCube-Speicherkartengröße." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" "Dateigröße im Header stimmt nicht mit der tatsächlichen Kartengröße überein." @@ -4729,15 +4844,15 @@ msgstr "" msgid "Filesystem" msgstr "Dateisystem" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "Symbole filtern" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "Filter" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4749,11 +4864,11 @@ msgstr "" "verbessern, aber wird Probleme in anderen verursachen." "

Im Zweifel deaktiviert lassen." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "&Nächste finden" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "&Vorherige finden" @@ -4769,18 +4884,22 @@ msgstr "" "Update wird fertiggestellt...\n" "Dies kann eine Weile dauern." -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "First-Person" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Prüfsummen korrigieren" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4790,13 +4909,14 @@ msgstr "Bitschalter" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "Float" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "&Zweig folgen" @@ -4822,7 +4942,7 @@ msgstr "" msgid "Force 16:9" msgstr "16:9 erzwingen" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "24-Bit Farbtiefe erzwingen" @@ -4830,15 +4950,15 @@ msgstr "24-Bit Farbtiefe erzwingen" msgid "Force 4:3" msgstr "4:3 erzwingen" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "Lauschport erzwingen:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Texturfilterung erzwingen" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4855,7 +4975,7 @@ msgstr "" "Fehler verursachen).

Im Zweifel deaktiviert lassen." "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4878,21 +4998,21 @@ msgstr "Format:" msgid "Forward" msgstr "Vorwärts" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Port öffnen (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "%1 Ergebnisse gefunden für \"%2\"" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "Bild %1" @@ -4921,7 +5041,7 @@ msgstr "Frame-Dump" msgid "Frame Range" msgstr "Bildbereich" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "Frame-Dump Bild(er) '{0}' existiert bereits. Überschreiben?" @@ -4933,19 +5053,19 @@ msgstr "Bilder zum Aufzeichnen:" msgid "France" msgstr "Frankreich" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "Freies Umsehen-Steuerungstyp" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "Freies Umsehen-Controller %1" @@ -4953,7 +5073,7 @@ msgstr "Freies Umsehen-Controller %1" msgid "Free Look Settings" msgstr "Freies Umsehen-Einstellungen" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -5389,7 +5509,7 @@ msgstr "Grün links" msgid "Green Right" msgstr "Grün rechts" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "Tabellenansicht" @@ -5402,7 +5522,7 @@ msgstr "Gitarre" msgid "Gyroscope" msgstr "Gyroskop" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5415,12 +5535,29 @@ msgstr "Hacks" msgid "Head" msgstr "Kopf" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "Hilfe" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5432,19 +5569,19 @@ msgstr "Hexadezimal" msgid "Hide" msgstr "Verbergen" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "Alles verbergen" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "In-Game-Sitzungen ausblenden" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "Inkompatible Sitzungen ausblenden" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5462,21 +5599,27 @@ msgstr "Höchste" msgid "Hit Strength" msgstr "Schlagstärke" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "Horizontales Sichtfeld" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Host" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "Hostcode:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "Host-Eingabeautorität" @@ -5484,7 +5627,7 @@ msgstr "Host-Eingabeautorität" msgid "Host Size" msgstr "Hostgröße" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5497,11 +5640,11 @@ msgstr "" "Geeignet für Gelegenheitsspiele mit 3+ Spielern, möglicherweise bei " "instabilen Verbindungen oder Verbindungen mit hoher Latenz." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "Host-Eingabeautorität deaktiviert" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "Host-Eingabeautorität aktiviert" @@ -5513,7 +5656,7 @@ msgstr "Mit NetPlay ausrichten" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "Tastenkürzel-Einstellungen" @@ -5570,11 +5713,11 @@ msgstr "" "gelesen werden. Weitere Informationen zum Einrichten von Wii-Netzwerken " "findest du unter https://dolphin-emu.org/docs/guides/wii-network-guide/." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "IP-Adresse:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "IPL-Einstellungen" @@ -5583,7 +5726,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "IR-Empfindlichkeit:" @@ -5621,11 +5764,11 @@ msgstr "" "höher kompatibel ist. Es kann sowohl Junk-Daten als auch verschlüsselte Wii-" "Daten effizient komprimieren." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Symbol" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" @@ -5636,11 +5779,11 @@ msgstr "" "Geeignet für rundenbasierte Spiele mit zeitabhängiger Steuerung, zum " "Beispiel Golf." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "Indentitätserzeugung" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5697,7 +5840,7 @@ msgstr "Formatänderungen ignorieren" msgid "Ignore for this session" msgstr "In dieser Sitzung ignorieren" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5709,7 +5852,7 @@ msgstr "" "allerdings Grafikfehler.

Im Zweifel aktiviert " "lassen." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5740,30 +5883,30 @@ msgstr "" "Performance etwas.

Im Zweifel deaktiviert lassen." -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "BootMii-NAND-Sicherung importieren..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Wii-Spielstand importieren..." -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "NAND-Sicherung wird importiert" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" @@ -5772,11 +5915,20 @@ msgstr "" "NAND-Sicherung wird importiert\n" "Verstrichene Zeit: %1s" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "In-Game?" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5834,8 +5986,8 @@ msgstr "Info" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Information" @@ -5844,10 +5996,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "Bildschirmschoner während der Emulation sperren" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Eingabe" @@ -5861,16 +6013,22 @@ msgstr "Eingabefestigkeit, die zur Aktivierung benötigt wird." msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "&nop einfügen" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "SD-Karte einfügen" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "Installieren" @@ -5882,7 +6040,7 @@ msgstr "" msgid "Install Update" msgstr "Update installieren" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "WAD installieren..." @@ -5898,11 +6056,11 @@ msgstr "Instr." msgid "Instruction" msgstr "Anweisung" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "Anweisungshaltepunkt" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "Anweisung:" @@ -5920,7 +6078,7 @@ msgid "Interface" msgstr "Benutzeroberfläche" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Interner LZO-Fehler - Komprimierung fehlgeschlagen" @@ -5929,7 +6087,7 @@ msgstr "Interner LZO-Fehler - Komprimierung fehlgeschlagen" msgid "Internal LZO Error - decompression failed" msgstr "Interner LZO-Fehler - Dekomprimierung fehlgeschlagen" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" @@ -5937,21 +6095,21 @@ msgstr "" "Interner LZO-Fehler - Dekomprimierung fehlgeschlagen ({0}) ({1}, {2})\n" "Versuche, diesen Spielstand nochmal zu laden" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Interner LZO-Fehler - lzo_init() fehlgeschlagen" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "Interne Auflösung" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Interne Auflösung:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5959,11 +6117,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "Interpreter (am langsamsten)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "Interpreterkern" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "Ungültiger Ausdruck." @@ -5971,7 +6129,7 @@ msgstr "Ungültiger Ausdruck." msgid "Invalid Mixed Code" msgstr "Ungültiger gemischter Code" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "Ungültiges Paket %1 angegeben: &2" @@ -5980,15 +6138,15 @@ msgstr "Ungültiges Paket %1 angegeben: &2" msgid "Invalid Player ID" msgstr "Ungültige Spieler-ID" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "Ungültige RSO-Moduladresse: %1" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "Ungültiger Aufrufstapel" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "Ungültige Prüfsummen." @@ -5996,11 +6154,11 @@ msgstr "Ungültige Prüfsummen." msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "Ungültiger Host" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "Ungültige Eingabe für das Feld \"%1\"" @@ -6013,31 +6171,31 @@ msgstr "Ungültige Eingabe eingegeben" msgid "Invalid literal." msgstr "Ungültig" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "Ungültiges Passwort angegeben." -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Ungültige Aufnahmedatei" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Ungültige Suchparameter (kein Objekt ausgewählt)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Ungültiger Suchbegriff (konnte nicht zu Zahl konvertieren)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "Ungültiger Suchbegriff (nur gerade Zeichenlängen werden unterstützt)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "Ungültige Titelkennung" @@ -6046,8 +6204,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Italienisch" @@ -6055,11 +6213,11 @@ msgstr "Italienisch" msgid "Italy" msgstr "Italien" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "JIT-Blockverbindung Aus" @@ -6067,47 +6225,47 @@ msgstr "JIT-Blockverbindung Aus" msgid "JIT Blocks" msgstr "JIT-Blöcke" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "JIT Zweig Aus" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "JIT FließKomma Aus" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "JIT Ganzahl Aus" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "JIT LadenSpeichern Fließkomma Aus" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "JIT LadenSpeichern Aus" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "JIT LadenSpeichern Gekoppelt Aus" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "JIT LadenSpeichern lXz Aus" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "JIT LadenSpeichern lbzx Aus" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "JIT LadenSpeichern lwz Aus" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "JIT Aus (JIT-Kern)" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "JIT Gekoppelt Aus" @@ -6119,11 +6277,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "JIT-Register-Cache Aus" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "JIT-SystemRegister Aus" @@ -6137,12 +6295,12 @@ msgstr "" "niemals passieren. Melde bitte diesen Vorfall im Bug-Tracker. Dolphin wird " "jetzt beendet." -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Japan" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japanisch" @@ -6162,12 +6320,12 @@ msgstr "Fenster immer im Vordergrund" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Tastatur" @@ -6180,20 +6338,20 @@ msgstr "Tastatur" msgid "Keys" msgstr "Tasten" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "KiB" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Spieler hinauswerfen" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Korea" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Koreanisch" @@ -6221,7 +6379,7 @@ msgstr "LR-Sicherung" msgid "Label" msgstr "Bezeichnung" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -6307,15 +6465,15 @@ msgstr "" msgid "License" msgstr "Lizenz" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "Uploadblock-Geschwindigkeit begrenzen:" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "Listen-Spalten" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "Listenansicht" @@ -6324,17 +6482,17 @@ msgid "Listening" msgstr "Lauscht" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Laden" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "&Ungültige Kartendatei laden..." -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "&Andere Kartendatei laden..." @@ -6342,7 +6500,7 @@ msgstr "&Andere Kartendatei laden..." msgid "Load Custom Textures" msgstr "Lade benutzerdefinierte Texturen" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "GameCube-Hauptmenü laden" @@ -6351,7 +6509,7 @@ msgstr "GameCube-Hauptmenü laden" msgid "Load Last State" msgstr "Letzten Spielstand laden" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "Ladepfad:" @@ -6444,23 +6602,23 @@ msgstr "Spielstand in Slot 8 laden" msgid "Load State Slot 9" msgstr "Spielstand in Slot 9 laden" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "Spielstand von Datei laden" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "Spielstand vom ausgewählten Slot laden" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "Spielstand von Slot laden" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "Wii-Spielstand laden" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "Wii-Systemmenü laden %1" @@ -6468,12 +6626,12 @@ msgstr "Wii-Systemmenü laden %1" msgid "Load from Selected Slot" msgstr "Spielstand vom ausgewählten Slot laden" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "Lade von Slot %1 - %2" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "Kartendatei laden" @@ -6481,7 +6639,7 @@ msgstr "Kartendatei laden" msgid "Load..." msgstr "Laden..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "Geladene Symbole von '%1'" @@ -6495,7 +6653,7 @@ msgstr "" "User/Load/DynamicInputTextures/<game_id>/.

Im " "Zweifel deaktiviert lassen." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "Lokal" @@ -6504,7 +6662,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Log" @@ -6512,7 +6670,7 @@ msgstr "Log" msgid "Log Configuration" msgstr "Protokollkonfiguration" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "JIT-Anweisungsabdeckung protokollieren" @@ -6539,7 +6697,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "Die Verbindung zum NetPlay-Server wurde getrennt..." @@ -6568,7 +6726,7 @@ msgstr "MMU" msgid "MORIBUND" msgstr "MORIBUND" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6578,7 +6736,7 @@ msgstr "Main Stick" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Hersteller" @@ -6587,7 +6745,7 @@ msgstr "Hersteller" msgid "Maker:" msgstr "Hersteller:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6599,7 +6757,7 @@ msgstr "" "machen, die die korrekte Nebelemulation benötigen." "

Im Zweifel deaktiviert lassen." -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "NAND verwalten" @@ -6607,7 +6765,7 @@ msgstr "NAND verwalten" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "Mapping" @@ -6615,15 +6773,15 @@ msgstr "Mapping" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "Übereinstimmung gefunden" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "Maximaler Puffer:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "Maximale Puffergröße auf %1 geändert" @@ -6632,7 +6790,7 @@ msgstr "Maximale Puffergröße auf %1 geändert" msgid "Maximum tilt angle." msgstr "Maximaler Neigungswinkel." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "Kann zu Verlangsamung im Wii-Menü und einigen Spielen führen." @@ -6641,11 +6799,11 @@ msgstr "Kann zu Verlangsamung im Wii-Menü und einigen Spielen führen." msgid "Medium" msgstr "Mittel" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "Speicher" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "Speicherhaltepunkt" @@ -6653,7 +6811,7 @@ msgstr "Speicherhaltepunkt" msgid "Memory Card" msgstr "Speicherkarte" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "Speicherkartenverwaltung" @@ -6677,7 +6835,7 @@ msgstr "" msgid "Memory Override" msgstr "Speicherüberschreibung" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "Speicherhaltepunktoptionen" @@ -6695,7 +6853,7 @@ msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" "MemoryCard: Schreibvorgang mit ungültiger Zieladresse aufgerufen ({0:#x})" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6707,13 +6865,13 @@ msgstr "" "Vorgang ist nicht umkehrbar, daher wird empfohlen, dass du Sicherungen " "beider NANDs behälst. Bist du sicher, dass du fortfahren möchtest?" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "MiB" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Mikrofon" @@ -6721,21 +6879,21 @@ msgstr "Mikrofon" msgid "Misc" msgstr "Sonstiges" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Sonstige Einstellungen" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" "Nichtübereinstimmung zwischen der Anzahl der freien Blöcke im Header und den " "tatsächlich nicht verwendeten Blöcken." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "Nichtübereinstimmung zwischen internen Datenstrukturen." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6761,12 +6919,12 @@ msgstr "" "

Benötigt in den meisten Fällen einen Reset der Emulation." "

Im Zweifel deaktiviert lassen." -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "Mono" @@ -6778,11 +6936,11 @@ msgstr "Monoskopische Schatten" msgid "Monospaced Font" msgstr "Proportionale Schriftart" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "Bewegungseingabe" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "Bewegungssimulation" @@ -6822,10 +6980,10 @@ msgstr "Film" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "NAND-Prüfung" @@ -6833,26 +6991,26 @@ msgstr "NAND-Prüfung" msgid "NKit Warning" msgstr "NKit-Warnung" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "NTSC-K" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "Name" @@ -6864,37 +7022,37 @@ msgstr "Name für ein neues Tag:" msgid "Name of the tag to remove:" msgstr "Name des Tag, das entfernt werden soll:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "Name deiner Sitzung im Server-Browser" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Name:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Nativ (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "NetPlay" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "NetPlay-Sitzungs-Browser" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "NetPlay-Einrichtung" @@ -6902,17 +7060,17 @@ msgstr "NetPlay-Einrichtung" msgid "Netherlands" msgstr "Niederlande" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "NetPlay wurde desynchronisiert in NetPlay_GetButtonPress()" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" "Netplay ist desynchronisiert. Es gibt keine Möglichkeit dies zu beheben." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "Netzwerk" @@ -6933,11 +7091,11 @@ msgstr "Niemals automatisch updaten" msgid "New" msgstr "Neu" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "Neuer Haltepunkt" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "Neue Suche" @@ -6945,7 +7103,7 @@ msgstr "Neue Suche" msgid "New Tag..." msgstr "Neues Tag..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "Neue identität erzeugt." @@ -6962,7 +7120,7 @@ msgstr "Neues Tag" msgid "Next Game Profile" msgstr "Nächstes Spielprofil" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "Nächste Übereinstimmung" @@ -6971,17 +7129,17 @@ msgstr "Nächste Übereinstimmung" msgid "Next Profile" msgstr "Nächstes Profil" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "Nickname is too long." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Spitzname:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "Nein" @@ -6989,6 +7147,10 @@ msgstr "Nein" msgid "No Adapter Detected" msgstr "Kein Adapter erkannt" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "Keine Audioausgabe" @@ -6999,24 +7161,20 @@ msgstr "Keine Audioausgabe" msgid "No Compression" msgstr "Keine Komprimierung" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "Keine Übereinstimmung" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "Kein Wert angegeben" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Keine Beschreibung vorhanden" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "Keine Fehler." @@ -7028,15 +7186,15 @@ msgstr "Keine Erweiterung ausgewählt." msgid "No file loaded / recorded." msgstr "Keine Datei geladen / aufgezeichnet." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "Es wurden keine Probleme festgestellt." @@ -7044,11 +7202,15 @@ msgstr "Es wurden keine Probleme festgestellt." msgid "No paths found in the M3U file \"{0}\"" msgstr "Keine Pfade in der M3U-Datei \"{0}\" gefunden." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "Es wurden keine Probleme gefunden." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -7063,7 +7225,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "Keine Profile für Spieleinstellung '{0}' gefunden" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "Keine Aufnahme geladen." @@ -7071,19 +7233,15 @@ msgstr "Keine Aufnahme geladen." msgid "No save data found." msgstr "Keine gespeicherten Daten gefunden." -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" "Keine undo.dtm gefunden, undo load state ab wird abgebrochen, um Film-" "Desynchronisationen zu vermeiden" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "Kein Wert angegeben." - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -7093,7 +7251,7 @@ msgstr "Keine" msgid "North America" msgstr "Nordamerika" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "Nicht gefunden" @@ -7101,11 +7259,11 @@ msgstr "Nicht gefunden" msgid "Not Set" msgstr "Nicht Festgelegt" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "Nicht alle Spieler besitzen das Spiel. Möchten Sie trotzdem starten?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -7113,7 +7271,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -7173,13 +7331,13 @@ msgstr "Nunchuck-Ausrichtung" msgid "Nunchuk Stick" msgstr "Nunchuck-Stick" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "OK" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "Objekt %1" @@ -7192,11 +7350,11 @@ msgid "Oceania" msgstr "Ozeanien" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Aus" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -7208,11 +7366,11 @@ msgstr "Ein" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "Online-&Dokumentation" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" @@ -7220,7 +7378,7 @@ msgstr "" "Nur Symbole anhängen mit dem Präfix:\n" "(Leer für alle Symbole)" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -7237,7 +7395,7 @@ msgstr "Öffnen" msgid "Open &Containing Folder" msgstr "Über&geordneten Ordner öffnen" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "Verzeichnis öffnen..." @@ -7285,7 +7443,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "Operatoren" @@ -7303,7 +7461,7 @@ msgstr "Einstellungen" msgid "Orange" msgstr "Orange" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "Orbital" @@ -7311,7 +7469,7 @@ msgstr "Orbital" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Andere" @@ -7324,11 +7482,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "Tastenkürzel anderer Spielstand" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "Verwaltung anderer Spielstand" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "Anderes Spiel..." @@ -7336,12 +7494,12 @@ msgstr "Anderes Spiel..." msgid "Overlay Information" msgstr "Information einblenden" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "Eingabeau&fzeichnung wiedergeben..." -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -7366,7 +7524,7 @@ msgstr "PNG-Bilddatei (*.png);; Alle Dateien (*)" msgid "PPC Size" msgstr "PPC-Größe" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "PPC vs Host" @@ -7383,7 +7541,7 @@ msgstr "Pads" msgid "Parameters" msgstr "Parameter" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -7392,23 +7550,23 @@ msgstr "" msgid "Parsing Error" msgstr "Auslesefehler" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "Passiv" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "Bluetooth-Adapter durchleiten" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "Passwort" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "Passwort für die Teilnahme an Ihrem Spiel (leer lassen für keines)" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "Passwort?" @@ -7429,7 +7587,7 @@ msgid "Path:" msgstr "Pfad:" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Pfade" @@ -7437,7 +7595,7 @@ msgstr "Pfade" msgid "Pause" msgstr "Pause" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "Pause am Filmende" @@ -7460,11 +7618,11 @@ msgstr "Spitzengeschwindigkeit von Bewegungen in die neutrale Position." msgid "Peak velocity of outward swing movements." msgstr "Spitzengeschwindigkeit von nach außen gerichteten Schwenkbewegungen." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Per-Pixel Lighting" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "Online-Systemaktualisierung durchführen" @@ -7474,23 +7632,23 @@ msgstr "Systemaktualisierung durchführen" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "Physikalisch" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "PiB" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "Wähle eine Debug-Schriftart" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "Ping" @@ -7503,7 +7661,7 @@ msgid "Pitch Up" msgstr "Nicken aufwärts" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Plattform" @@ -7523,16 +7681,16 @@ msgstr "Aufnahme abspielen" msgid "Playback Options" msgstr "Wiedergabeoptionen" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "Spieler" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Spieler" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7543,31 +7701,31 @@ msgstr "" msgid "Point" msgstr "Zeige" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "Port %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "Port:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" "Mögliche Desynchronisation erkannt: %1 wurde wahrscheinlich auf Frame %2 " "desynchronisiert" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "Nachbearbeitungseffekt" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Nachbearbeitungseffekt:" @@ -7579,15 +7737,15 @@ msgstr "Shader-Konfiguration nach der Verarbeitung" msgid "Prefetch Custom Textures" msgstr "Benutzerdefinierte Texturen vorladen" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "Vorzeitiges Filmende in PlayController. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "Vorzeitiges Filmende in PlayWiimote. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "Vorzeitiges Filmende in PlayWiimote. {0} > {1}" @@ -7631,7 +7789,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "Vorheriges Spielprofil" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "Vorherige Übereinstimmung" @@ -7642,15 +7800,15 @@ msgstr "Vorheriges Profil" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "Privat" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "Privat und öffentlich" @@ -7658,7 +7816,7 @@ msgstr "Privat und öffentlich" msgid "Problem" msgstr "Problem" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." @@ -7666,7 +7824,7 @@ msgstr "" "Es wurden Probleme mit hohem Schweregrad gefunden. Das Spiel wird " "höchstwahrscheinlich überhaupt nicht funktionieren." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." @@ -7674,7 +7832,7 @@ msgstr "" "Es wurden Probleme mit geringem Schweregrad gefunden. Jedoch werden sie das " "Spiel wahrscheinlich nicht am Starten hindern." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." @@ -7682,7 +7840,7 @@ msgstr "" "Probleme mit mittlerem Schweregrad wurden gefunden. Das ganze Spiel oder " "bestimmte Teile des Spiels funktionieren möglicherweise nicht richtig." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Profil" @@ -7696,15 +7854,15 @@ msgstr "Programmzähler" msgid "Progress" msgstr "Fortschritt" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "Öffentlich" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "Spielelisten Cache leeren" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7716,11 +7874,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "QT_LAYOUT_DIRECTION" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "Quality of Service (QoS) konnte nicht aktiviert werden." -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "Quality of Service (QoS) wurde erfolgreich aktiviert." @@ -7730,12 +7888,12 @@ msgstr "Qualität des DPLII-Decoders. Audiolatenz steigt mit Qualität." #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Frage" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Beenden" @@ -7755,11 +7913,11 @@ msgstr "R-Analog" msgid "READY" msgstr "BEREIT" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "RSO-Module" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "Automatische RSO-Erkennung" @@ -7772,44 +7930,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "RVZ GC/Wii-Abbilder (*.rvz)" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Reichweite" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "Anweisung er&setzen" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "Lesen" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "Lesen und schreiben" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "Nur Lesen" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "Lesen oder Schreiben" @@ -7817,11 +7975,11 @@ msgstr "Lesen oder Schreiben" msgid "Read-Only Mode" msgstr "Nur-Lese-Modus" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Echtes Balance Board" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "Reale Wiimote" @@ -7834,11 +7992,11 @@ msgstr "Nachzentrieren" msgid "Record" msgstr "Aufnahme" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "Eingaben aufzeichnen" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "Aufzeichnung" @@ -7863,7 +8021,7 @@ msgstr "Rot links" msgid "Red Right" msgstr "Rot rechts" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7885,16 +8043,16 @@ msgstr "Redump.org Status:" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Aktualisieren" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7902,26 +8060,26 @@ msgstr "" msgid "Refresh Game List" msgstr "Spieleliste aktualisieren" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "Aktualisiere..." #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Region" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "Region:" @@ -7941,16 +8099,16 @@ msgstr "Relative Eingabe halten" msgid "Remind Me Later" msgstr "Erinnere mich später" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Entfernen" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7976,8 +8134,8 @@ msgstr "" "Speicherplatz gespart (es sei denn, du packst die ISO-Datei anschließend in " "ein komprimiertes Dateiformat wie ZIP). Möchtest du trotzdem fortfahren?" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "Symbol umbenennen" @@ -8012,29 +8170,37 @@ msgstr "Anfrage deiner Gruppe beizutreten" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Zurücksetzen" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "Setze Übergangsserver zurück" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "Setze Übergangsserver zurück zu %1:%2" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "Übergangseinstellungen zurücksetzen." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -8042,15 +8208,15 @@ msgstr "" msgid "Reset View" msgstr "Sichtfeld zurücksetzen" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "Alle gespeicherten Wiimote-Kopplungen zurücksetzen" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "Ressourcenpaketverwaltung" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "Ressourcenpaket-Pfad:" @@ -8062,11 +8228,11 @@ msgstr "Neustart erforderlich" msgid "Restore Defaults" msgstr "Standard wiederherstellen" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "Anweisung wiederherstellen" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Erneut versuchen" @@ -8075,7 +8241,7 @@ msgstr "Erneut versuchen" msgid "Return Speed" msgstr "Rücklaufgeschwindigkeit" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "Revision" @@ -8133,11 +8299,11 @@ msgstr "Rollen links" msgid "Roll Right" msgstr "Rollen rechts" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "Raum-ID" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -8146,17 +8312,14 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "Rotation am Ende des Schwungs." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" -"Rundet 2D-Vertices zu ganzen Pixeln.

Dies behebt Grafikprobleme in " -"einigen Spielen bei höheren internen Auflösungen. Diese Einstellung hat " -"keinen Effekt, wenn die native Auflösung genutzt wird." -"

Im Zweifel deaktiviert lassen." #: Source/Core/Core/HW/GCPadEmu.cpp:79 #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:254 @@ -8165,11 +8328,11 @@ msgstr "" msgid "Rumble" msgstr "Rumble" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "Bis &hier ausführen" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -8177,15 +8340,15 @@ msgstr "" msgid "Russia" msgstr "Russland" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "SD-Karte" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "SD-Kartenabbild (*.raw);;Alle Dateien (*)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "SD-Karten-Pfad:" @@ -8201,7 +8364,7 @@ msgstr "" msgid "SHA-1:" msgstr "SHA-1:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "SP1:" @@ -8215,11 +8378,11 @@ msgstr "SSL-Kontext" msgid "START" msgstr "START" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "Code speich&ern" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "S&pielstand speichern" @@ -8229,7 +8392,7 @@ msgid "Safe" msgstr "Sicher" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -8242,7 +8405,7 @@ msgstr "Alle speichern" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "Export speichern" @@ -8263,11 +8426,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "Import speichern" @@ -8279,7 +8442,7 @@ msgstr "Ältesten Spielstand überschreiben" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -8329,23 +8492,23 @@ msgstr "In Slot 8 speichern" msgid "Save State Slot 9" msgstr "In Slot 9 speichern" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "Spielstand in Datei speichern" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "Spielstand in ältesten Slot speichern" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "Spielstand im ausgewählten Slot speichern" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "Spielstand in Slot speichern" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "Symbolkarte speichern &als..." @@ -8353,7 +8516,7 @@ msgstr "Symbolkarte speichern &als..." msgid "Save Texture Cache to State" msgstr "Texturen-Cache in Spielstand speichern" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "Spielstand speichern und laden" @@ -8365,11 +8528,11 @@ msgstr "" msgid "Save as..." msgstr "Speichern unter..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "Kombinierte Ausgabedatei speichern als" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" @@ -8379,15 +8542,15 @@ msgstr "" "eine Sicherung der aktuellen Spielstände zu erstellen.\n" "Jetzt überschreiben?" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "Kartendatei speichern" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "Signaturdatei speichern" @@ -8395,7 +8558,7 @@ msgstr "Signaturdatei speichern" msgid "Save to Selected Slot" msgstr "Spielstand im ausgewählten Slot speichern" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "Spielstand in Slot %1 - %2 speichern" @@ -8403,25 +8566,25 @@ msgstr "Spielstand in Slot %1 - %2 speichern" msgid "Save..." msgstr "Speichern..." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" "Gespeicherte Wiimote-Kopplungen können nur zurückgesetzt werden, wenn ein " "Wii-Spiel läuft." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "Spielstandfilm {0} ist fehlerhaft, breche die Filmaufnahme ab..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Skalierte EFB-Kopie" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -8429,36 +8592,36 @@ msgstr "" msgid "ScrShot" msgstr "ScrShot" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Suche" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "Adresse suchen" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "Derzeitiges Objekt suchen" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Unterordner durchsuchen" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "Suche nach einer Anweisung" @@ -8466,7 +8629,7 @@ msgstr "Suche nach einer Anweisung" msgid "Search games..." msgstr "Suche Spiele..." -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "Suchanweisung" @@ -8491,28 +8654,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Auswählen" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "Dump-Pfad auswählen" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "Export-Verzeichnis auswählen" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -8520,11 +8683,11 @@ msgstr "" msgid "Select Last State" msgstr "Letzten Spielstand auswählen" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "Ladepfad auswählen" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "Ressourcenpaket-Pfad auswählen" @@ -8532,7 +8695,7 @@ msgstr "Ressourcenpaket-Pfad auswählen" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "Slot %1 - %2 auswählen" @@ -8540,7 +8703,7 @@ msgstr "Slot %1 - %2 auswählen" msgid "Select State" msgstr "Spielstand auswählen" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Spielstand-Slot auswählen" @@ -8584,41 +8747,45 @@ msgstr "Slot 8 auswählen" msgid "Select State Slot 9" msgstr "Slot 9 auswählen" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "Wii-NAND-Root auswählen" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "Verzeichnis auswählen" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "Datei auswählen" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "Spiel auswählen" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "SD-Kartenabbild auswählen" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "Spiel auswählen" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "Wähle einen Titel zum Installieren in den NAND aus." @@ -8626,11 +8793,11 @@ msgstr "Wähle einen Titel zum Installieren in den NAND aus." msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "Wählen Sie die RSO-Moduladresse aus:" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8638,12 +8805,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "Wähle die Schlüsseldateien (OTP/SEEPROM Dump)" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Wii-Spielstand auswählen" @@ -8659,15 +8826,15 @@ msgstr "Wähle aus, wo die konvertierten Abbilder gespeichert werden sollen" msgid "Selected Font" msgstr "Ausgewählte Schriftart" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "Ausgewähltes Controller-Profil existiert nicht" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "Das gewählte Spiel existiert nicht in der Spieleliste!" @@ -8693,7 +8860,7 @@ msgstr "" "Wählt ein Anzeigegerät aus.

Im Zweifel, wähle das " "Erste." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8755,11 +8922,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Senden" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Position der Sensorleiste:" @@ -8773,56 +8940,64 @@ msgstr "" "Serien- und/oder Versionsdaten fehlen in {0}. Bitte füge beim Herunterladen " "\"{1}\" (ohne Anführungszeichen) an die URL der .dat-Datei an. Beispiel: {2}" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "Server-IP-Adresse" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "Server-Port" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "Server hat Übergangsversuch abgelehnt." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "&Wert zuweisen" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "PC zuweisen" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "Als &Standard-ISO festlegen" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "Lege eine Speicherkarten-Datei für Slot A fest" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "Lege eine Speicherkarten-Datei für Slot B fest" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "Symbol-&Endadresse festlegen" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "&Symbolgröße festlegen" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "Symbol-Endadresse festlegen" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "Symbolgröße festlegen (%1):" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8832,7 +9007,7 @@ msgstr "" "Spiele.\n" "Funktioniert nicht bei allen Spielen." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Stellt die Wii Systemsprache ein." @@ -8842,7 +9017,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8879,11 +9054,11 @@ msgstr "" "Verkürzt Ladezeiten, kann aber einige Spiele stoppen. Kann negative Effekte " "auf die Performance haben. Standardwert False" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "&Log anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "&Werkzeugleiste anzeigen" @@ -8891,15 +9066,15 @@ msgstr "&Werkzeugleiste anzeigen" msgid "Show Active Title in Window Title" msgstr "Aktiven Titel in Fenstertitel anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "Alles anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Australien anzeigen" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "Zeige momentanes Spiel auf Discord" @@ -8907,7 +9082,7 @@ msgstr "Zeige momentanes Spiel auf Discord" msgid "Show Debugging UI" msgstr "Zeige Debugging UI" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "ELF/DOL anzeigen" @@ -8915,43 +9090,43 @@ msgstr "ELF/DOL anzeigen" msgid "Show FPS" msgstr "FPS anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Bildzähler anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Frankreich anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "GameCube anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Deutschland anzeigen" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "Golf-Modus-Überlagerung anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Eingabebildschirm anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Italien anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Korea anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Lag-Zähler anzeigen" @@ -8959,7 +9134,7 @@ msgstr "Lag-Zähler anzeigen" msgid "Show Language:" msgstr "Anzeigesprache:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Protokoll&konfiguration anzeigen" @@ -8971,7 +9146,7 @@ msgstr "NetPlay-Nachrichten anzeigen" msgid "Show NetPlay Ping" msgstr "NetPlay-Ping anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Niederlande anzeigen" @@ -8979,7 +9154,7 @@ msgstr "Niederlande anzeigen" msgid "Show On-Screen Display Messages" msgstr "Bildschirmnachrichten zeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "PAL anzeigen" @@ -8988,23 +9163,23 @@ msgstr "PAL anzeigen" msgid "Show PC" msgstr "PC anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Plattformen anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Regionen anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Russland anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "Spanien anzeigen" @@ -9013,46 +9188,50 @@ msgstr "Spanien anzeigen" msgid "Show Statistics" msgstr "Statistiken anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "Systemuhr anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Taiwan anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "USA anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Unbekannte anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "WAD anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Wii anzeigen" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Welt anzeigen" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "Im &Speicher anzeigen" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "Im Code anzeigen" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "Im Server-Browser anzeigen" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -9096,7 +9275,7 @@ msgstr "" "Zeigt verschiedene Rendering-Statistiken an.

Im " "Zweifel deaktiviert lassen." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Nebeneinander" @@ -9112,16 +9291,31 @@ msgstr "Seitwärts umschalten" msgid "Sideways Wii Remote" msgstr "Wiimote seitwärts" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "Signaturendatenbank" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "Signiertes Integer" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Chinesisch (Vereinfacht)" @@ -9129,7 +9323,7 @@ msgstr "Chinesisch (Vereinfacht)" msgid "Simulate DK Bongos" msgstr "DK-Bongos simulieren" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "Sechs Achsen" @@ -9158,7 +9352,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "EFB-Zugang von CPU überspringen" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "Hauptmenü überspringen" @@ -9166,7 +9360,7 @@ msgstr "Hauptmenü überspringen" msgid "Skip Presenting Duplicate Frames" msgstr "Präsentation von doppelten Frames überspringen" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -9185,19 +9379,19 @@ msgstr "" msgid "Slider Bar" msgstr "Schieberleiste" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Slot A:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "Slot A:" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Slot B:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "Slot B:" @@ -9215,7 +9409,7 @@ msgstr "Sockel Tabelle" msgid "Software Renderer" msgstr "Software-Renderer" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "Einige der Daten konnten nicht gelesen werden." @@ -9236,11 +9430,11 @@ msgstr "" "Bitte überprüfe die markierten Werte." #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "Alphabetisch sortieren" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "Klang:" @@ -9253,8 +9447,8 @@ msgid "Spain" msgstr "Spanien" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Spanisch" @@ -9262,7 +9456,7 @@ msgstr "Spanisch" msgid "Speaker Pan" msgstr "Lautsprecherregler" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Lautsprecher-Lautstärke" @@ -9297,7 +9491,7 @@ msgstr "Geschwindigkeit" msgid "Speed up Disc Transfer Rate" msgstr "Disc-Übertragungsrate beschleunigen" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "Stabil (einmal im Jahr)" @@ -9309,16 +9503,16 @@ msgstr "Stapelende" msgid "Stack start" msgstr "Stapelstart" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Standard-Controller" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Start" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "&NetPlay starten..." @@ -9326,11 +9520,13 @@ msgstr "&NetPlay starten..." msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "&Aufzeichnung der Eingabe starten" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Aufnahme starten" @@ -9346,7 +9542,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "Spiel gestartet" @@ -9357,7 +9553,7 @@ msgstr "Spiel gestartet" msgid "State" msgstr "Status" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Lenkrad" @@ -9385,19 +9581,19 @@ msgstr "Schritt heraus" msgid "Step Over" msgstr "Schritt über" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "Schritt heraus erfolgreich!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "Zeitüberschreitung bei Schritt heraus!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "Schritt über in Bearbeitung..." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "Schritt erfolgreich!" @@ -9406,20 +9602,20 @@ msgstr "Schritt erfolgreich!" msgid "Stepping" msgstr "Schrittweite" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "Stereo" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "Stereoskopischer 3D-Modus" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Stereoskopischer 3D-Modus:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Stereoskopie" @@ -9440,11 +9636,15 @@ msgstr "Stick" msgid "Stop" msgstr "Stopp" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "Wiedergabe/Aufzeichnung der Eingabe stoppen" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "Spiel gestoppt" @@ -9458,7 +9658,7 @@ msgstr "EFB-Kopien nur in Texturen ablegen" msgid "Store XFB Copies to Texture Only" msgstr "XFB-Kopien nur in Texturen ablegen" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -9472,7 +9672,7 @@ msgstr "" "Texturen) ablegen

Im Zweifel aktiviert lassen." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -9490,7 +9690,7 @@ msgstr "" msgid "Stretch to Window" msgstr "An Fenstergröße anpassen" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "Strikte Einstellungs-Synchronisation" @@ -9513,16 +9713,16 @@ msgstr "Eingabestift" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "Erfolg" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "Erfolgreich zum NetPlay-Index hinzugefügt" @@ -9532,11 +9732,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "%n Abbild(er) erfolgreich konvertiert." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "'%1' wurde erfolgreich gelöscht." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -9545,7 +9745,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "Spielstände wurden erfolgreich exportiert" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "Zertifikate aus NAND erfolgreich extrahiert" @@ -9557,12 +9757,12 @@ msgstr "Datei erfolgreich extrahiert." msgid "Successfully extracted system data." msgstr "Systemdaten erfolgreich extrahiert." -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "Spielstand wurde erfolgreich importiert." #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "Der Titel wurde erfolgreich in den NAND installiert." @@ -9574,16 +9774,16 @@ msgstr "Der Titel wurde erfolgreich aus dem NAND gelöscht." msgid "Support" msgstr "Unterstützung" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "Unterstützt SD und SDHC. Standardgröße ist 128 MB." #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "Surround" @@ -9591,11 +9791,11 @@ msgstr "Surround" msgid "Suspended" msgstr "Ausgesetzt" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Augen vertauschen" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9610,50 +9810,62 @@ msgstr "" msgid "Swing" msgstr "Schwingen" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "Zu A wechseln" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "Zu B wechseln" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "Symbol" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "Symbol (%1) Endadresse:" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "Symbolname:" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "Symbole" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "Synchronisieren" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "AR/Gecko-Codes synchronisieren" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "Alle Wii-Spielstände synchronisieren" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "Spielstände synchronisieren" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "Reale Wiimotes synchronisieren und diese koppeln" @@ -9669,37 +9881,37 @@ msgstr "" "Synchronisiert die GPU- und CPU-Threads, um zufällige Abstürze im Doppelkern-" "Modus zu vermeiden. (EIN = Kompatibel, AUS = Schnell)" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "AR-Codes synchronisieren..." -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "Gecko-Codes synchronisieren..." -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "Synchronisiere Spielstände..." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Systemsprache:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "TAS-Eingabe" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "TAS-Werkzeuge" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "Tags" @@ -9717,11 +9929,11 @@ msgstr "Schweif" msgid "Taiwan" msgstr "Taiwan" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Screenshot erstellen" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Testen" @@ -9730,7 +9942,7 @@ msgstr "Testen" msgid "Texture Cache" msgstr "Texturen-Cache" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "Texturen-Cache-Genauigkeit" @@ -9754,7 +9966,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "Die H3-Hash-Tabelle für die {0} Partition ist nicht korrekt." -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "Die IPL-Datei ist kein bekannter guter Dump. (CRC32: {0:x})" @@ -9768,7 +9980,7 @@ msgstr "Die IPL-Datei ist kein bekannter guter Dump. (CRC32: {0:x})" msgid "The Masterpiece partitions are missing." msgstr "Die Partitionen der Meisterstücke fehlen." -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." @@ -9776,7 +9988,7 @@ msgstr "" "Das NAND konnte nicht repariert werden. Es wird empfohlen, deine aktuellen " "Daten zu sichern und mit einem frischen NAND neu anzufangen." -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "Das NAND wurde repariert." @@ -9816,7 +10028,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9833,7 +10045,7 @@ msgstr "Die Disc konnte nicht gelesen werden (bei {0:#x} - {1:#x})." msgid "The disc that was about to be inserted couldn't be found." msgstr "Die Disc, die eingelesen werden sollte, konnte nicht gefunden werden." -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9859,19 +10071,19 @@ msgstr "Die emulierte Wii-Konsole ist bereits auf dem neuesten Stand." msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "Die eingegebene PID ist ungültig." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "Die eingegebene VID ist ungültig." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "Der Ausdruck enthält einen Syntaxfehler." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9933,7 +10145,7 @@ msgstr "Die Spiel-ID ist {0}, sollte aber {1} sein." msgid "The game disc does not contain any usable update information." msgstr "Die Spieldisc enthält keine verwendbaren Updateinformationen." -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "Das Spiel läuft gerade." @@ -9947,7 +10159,7 @@ msgstr "" "Probleme mit dem Hauptmenü zu vermeiden, sind Updates der emulierten Konsole " "mit dieser Disc nicht möglich." -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9969,7 +10181,7 @@ msgstr "Die Hashes stimmen nicht überein!" msgid "The hashes match!" msgstr "Die Hashes stimmen überein!" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9993,12 +10205,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "Das Profil '%1' existiert nicht" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" "Das aufgenommene Spiel ({0}) ist nicht das gleiche gewählte Spiel ({1})" @@ -10019,21 +10231,21 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "Der resultierende entschlüsselte AR-Code enthält keine Zeilen." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" "Die NetPlay-Versionen des Servers und des Clients sind nicht kompatibel." -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "Der Server ist voll." -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "Der Server sendete einen unbekannten Fehler." @@ -10060,7 +10272,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "Die ausgewählte Datei \"{0}\" existiert nicht" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -10114,7 +10326,7 @@ msgstr "Die {0} Partition ist nicht richtig ausgerichtet." msgid "There are too many partitions in the first partition table." msgstr "Es gibt zu viele Partitionen in der ersten Partitionstabelle." -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "Es gibt nichts zum rückgängig machen!" @@ -10159,7 +10371,7 @@ msgstr "" "koreanischen Konsolen verwendet wird. Dies führt wahrscheinlich zu ERROR " "#002." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "Dieses USB-Gerät ist bereits freigegeben." @@ -10179,7 +10391,7 @@ msgstr "" "Dieser Action-Replay-Simulator unterstützt keine Codes, die Action Replay " "selbst verändern können." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "Dies kann nicht ruckgängig gemacht werden!" @@ -10233,7 +10445,11 @@ msgstr "" "höchstwahrscheinlich, dass es sich um eine Dual-Layer-Disc handelt, die als " "Single-Layer-Disc gedumpt wurde." -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "Diese Datei sieht nicht aus wie eine BootMii-NAND-Sicherung." @@ -10258,11 +10474,11 @@ msgstr "" "funktionieren, aber deine Grafikkarte oder deine Treiber unterstützen dies " "nicht. Es kann zu Fehlern oder Abstürzen kommen, während dieses Spiel läuft." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "Dies ist ein schlechter Dump." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." @@ -10270,7 +10486,7 @@ msgstr "" "Dies ist ein schlechter Dump. Das bedeutet nicht unbedingt, dass das Spiel " "nicht richtig läuft." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." @@ -10278,11 +10494,11 @@ msgstr "" "Laut Redump.org ist dies ein guter Dump, aber Dolphin hat Probleme gefunden. " "Dies könnte ein Fehler in Dolphin sein." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "Dies ist ein guter Dump." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "Diese Sitzung erfordert ein Passwort:" @@ -10355,7 +10571,7 @@ msgstr "" "Dieser Wert wird mit der in den Grafikeinstellungen festgelegten Farbtiefe " "multipliziert." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." @@ -10363,7 +10579,7 @@ msgstr "" "Dies wird die Geschwindigkeit von Uploadblöcken pro Klient begrenzen, die " "für die Speichersynchronisation benutzt werden." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -10387,7 +10603,7 @@ msgstr "Threads" msgid "Threshold" msgstr "Schwelle" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "TiB" @@ -10406,22 +10622,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Titel" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "Zu" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "Zu:" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "&Vollbildmodus umschalten" @@ -10446,7 +10662,7 @@ msgid "Toggle Aspect Ratio" msgstr "Seitenverhältnis umschalten" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "Haltepunkt umschalten" @@ -10506,14 +10722,20 @@ msgstr "Tokenisierung fehlgeschlagen." msgid "Toolbar" msgstr "Werkzeugleiste" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Oben" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Übereinander" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -10548,20 +10770,20 @@ msgid "Touch" msgstr "Touch" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Chinesisch (Traditionell)" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "Übergangsfehler" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "Übergangsserver" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "Zeitüberschreitung bei der Verbindung vom Übergangsserver zum Host." @@ -10593,21 +10815,13 @@ msgstr "Schultertasten" msgid "Type" msgstr "Typ" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" -msgstr "U&16" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "U&32" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" -msgstr "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" +msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 msgid "UNKNOWN" @@ -10623,9 +10837,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "USB-Whitelist-Fehler" @@ -10662,10 +10876,14 @@ msgstr "" "Kompilierung beseitigt, während die Leistung nur minimal beeinflusst wird. " "Die Ergebnisse hängen jedoch vom Verhalten des Grafiktreibers ab." -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "Konnte RSO-Module nicht automatisch erkennen" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10689,7 +10907,11 @@ msgstr "" "\n" "Möchtest du diese Zeile ignorieren und mit dem Parsen fortfahren?" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "Datei {0} kann nicht geschrieben werden" @@ -10701,15 +10923,15 @@ msgstr "Ungebunden" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "Unkomprimierte GC/Wii-Abbilder (*.iso *.gcm)" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Spielstand Laden rückgängig machen" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Spielstand Speichern rückgängig machen" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "Deinstallieren" @@ -10726,18 +10948,18 @@ msgstr "" "Titels aus dem NAND entfernt, ohne die gespeicherten Daten zu löschen. " "Fortsetzen?" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "Vereinigte Staaten" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Unbekannt" @@ -10745,7 +10967,7 @@ msgstr "Unbekannt" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "Unbekannter DVD-Befehl {0:08x} - fataler Fehler" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10757,7 +10979,7 @@ msgstr "" "Unbekannte SYNC_GECKO_CODES Meldung mit ID:{0} von Spieler:{1} erhalten. " "Spieler wird herausgeworfen!" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "Unbekannte SYNC_SAVE_DATA Meldung erhalten mit ID: {0}" @@ -10769,15 +10991,15 @@ msgstr "" "Unbekannte SYNC_SAVE_DATA Meldung mit ID:{0} von Spieler:{1} erhalten. " "Spieler wird herausgeworfen!" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10785,19 +11007,19 @@ msgstr "" msgid "Unknown disc" msgstr "Unbekannte Disc" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "Unbekannter Fehler {0:x}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "Unbekannte Meldung mit ID:{0}" @@ -10807,7 +11029,7 @@ msgstr "" "Unbekannte Meldung mit ID:{0} von Spieler:{1} erhalten. Spieler wird " "herausgeworfen!" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Unbegrenzt" @@ -10823,13 +11045,28 @@ msgstr "" msgid "Unpacking" msgstr "Auspacken" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "Unsigniertes Integer" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10838,7 +11075,7 @@ msgstr "Hoch" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Update" @@ -10895,7 +11132,7 @@ msgstr "Aufrecht umschalten" msgid "Upright Wii Remote" msgstr "Wiimote aufrecht" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "Einstellungen zur Berichterstattung von Nutzungsdaten" @@ -10911,7 +11148,7 @@ msgstr "Benutzerdefiniertes Design verwenden" msgid "Use Lossless Codec (FFV1)" msgstr "Benutze verlustfreien Codec (FFV1)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "PAL60-Modus (EuRGB60) verwenden" @@ -10939,18 +11176,40 @@ msgstr "" "Verwende einen einzigen Tiefenpuffer für beide Augen. Wird von einigen " "Spielen benötigt." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "Benutzereinstellungen" @@ -10963,18 +11222,18 @@ msgstr "Benutzeroberfläche" msgid "User Style:" msgstr "Benutzerdefiniertes Design:" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -11010,23 +11269,23 @@ msgstr "" msgid "Using Qt %1" msgstr "Benutzt Qt %1" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -11039,7 +11298,7 @@ msgstr "Hilfsmittel" msgid "V-Sync" msgstr "V-Sync" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Wert" @@ -11072,8 +11331,8 @@ msgstr "Zertifikate verifizieren" msgid "Verifying" msgstr "Prüfe" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "Version" @@ -11109,7 +11368,7 @@ msgstr "&Speicher ansehen" msgid "Virtual Notches" msgstr "Virtuelle Kerben" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -11136,7 +11395,7 @@ msgstr "Lautstärke erhöhen" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "WAD-Dateien (*.wad)" @@ -11201,7 +11460,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "WASAPI (Exklusivmodus)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -11209,8 +11468,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "WIA GC/Wii-Abbilder (*.wia)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -11243,7 +11502,7 @@ msgstr "" "100% liegt.

Im Zweifel deaktiviert lassen." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -11262,10 +11521,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Warnungen" @@ -11285,7 +11544,7 @@ msgstr "" "Warnung: Anzahl der von der BAT ({0}) angegebenen Blöcke stimmt nicht mit " "der aus dem geladenen Dateiheader ({1}) überein" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " @@ -11296,7 +11555,7 @@ msgstr "" "Fortfahren einen anderen Spielstand laden, oder diesen Spielstand, wenn der " "Nur-Lese-Modus ausgeschaltet ist." -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " @@ -11306,7 +11565,7 @@ msgstr "" "Frame im Spielstand endet (Byte {0} < {1}) (Frame {2} < {3}). Du solltest " "vor dem Fortfahren einen anderen Spielstand laden." -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" @@ -11317,7 +11576,7 @@ msgstr "" "laden, oder diesen Spielstand, wenn der Nur-Lese-Modus ausgeschaltet ist. " "Andernfalls könnte eine Desynchronisierung auftreten." -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -11360,7 +11619,7 @@ msgstr "" msgid "Watch" msgstr "Überwachungsfenster" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "Website" @@ -11397,11 +11656,11 @@ msgstr "" "\"Willkürliche Mipmaps erkennen\" in \"Verbesserungen\" aktiviert ist." "

Im Zweifel aktiviert lassen." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "Freigegebene USB-Durchleitungsgeräte" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Breitbild-Hack" @@ -11417,11 +11676,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Wii-Menü" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Wii-NAND-Root:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Wiimote" @@ -11429,8 +11688,8 @@ msgstr "Wiimote" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "Wiimote %1" @@ -11443,11 +11702,11 @@ msgstr "Wiimote-Tasten" msgid "Wii Remote Orientation" msgstr "Wiimote-Ausrichtung" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Wiimote-Einstellungen" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Wiimotes" @@ -11463,7 +11722,7 @@ msgstr "Wii TAS-Eingabe %1 - Wiimote" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "Wii TAS-Eingabe %1 - Wiimote + Nunchuk" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "Wii und Wiimote" @@ -11471,7 +11730,7 @@ msgstr "Wii und Wiimote" msgid "Wii data is not public yet" msgstr "Wii-Daten sind noch nicht öffentlich" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "Wii-Spielstände (*.bin);;Alle Dateien (*)" @@ -11499,18 +11758,18 @@ msgid "World" msgstr "Weltweit" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "Schreiben" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "Nur Schreiben" @@ -11523,12 +11782,12 @@ msgid "Write to File" msgstr "In Datei ausgeben" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "Im Log ausgeben" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "Schreibe ins Log und brich ab" @@ -11536,7 +11795,7 @@ msgstr "Schreibe ins Log und brich ab" msgid "Write to Window" msgstr "In Fenster ausgeben" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "Falsche Version" @@ -11547,7 +11806,7 @@ msgstr "Falsche Version" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "XF-Register" @@ -11576,8 +11835,8 @@ msgid "Yellow" msgstr "Gelb" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "Ja" @@ -11632,7 +11891,7 @@ msgstr "" "du macOS 10.14 (Mojave) oder neuer verwenden. Bitte melde keine " "aufgetretenen Probleme, es sei denn, sie treten auch ab 10.14 auf." -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "Du führst die neueste verfügbare Version auf dieser Update-Spur aus." @@ -11665,11 +11924,11 @@ msgstr "" msgid "You have to enter a name." msgstr "Sie müssen einen Namen eingeben." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "Sie müssen einen Namen für Ihre Sitzung angeben!" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "Sie müssen eine Region für Ihre Sitzung angeben!" @@ -11677,7 +11936,7 @@ msgstr "Sie müssen eine Region für Ihre Sitzung angeben!" msgid "You must restart Dolphin in order for the change to take effect." msgstr "Sie müssen Dolphin neu starten, damit die Änderungen wirksam werden." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "Sie müssen ein Spiel zum Ausrichten auswählen!" @@ -11708,23 +11967,23 @@ msgstr "Zero 3-Code wird nicht unterstützt" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "Der Zero-Code ist Dolphin unbekannt: {0:08x}" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "^ Xor" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -11743,13 +12002,13 @@ msgstr "cm" msgid "d3d12.dll could not be loaded." msgstr "d3d12.dll konnte nicht geladen werden." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "getrennt" @@ -11765,31 +12024,31 @@ msgstr "errno" msgid "fake-completion" msgstr "fake-completion" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -11819,7 +12078,7 @@ msgstr "" msgid "on" msgstr "am" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "oder wähle ein Gerät" @@ -11828,7 +12087,7 @@ msgstr "oder wähle ein Gerät" msgid "s" msgstr "s" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -11837,7 +12096,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "uDraw GameTablet" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -11856,7 +12115,7 @@ msgstr "{0} (Meisterstück)" msgid "{0} (NKit)" msgstr "{0} (NKit)" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" "{0} IPL im {1} Verzeichnis gefunden. Die Disc wird möglicherweise nicht " @@ -11880,7 +12139,7 @@ msgstr "" "von Dolphin" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "{0} von {1} Blöcken. Komprimierungsrate {2}%" @@ -11888,7 +12147,7 @@ msgstr "{0} von {1} Blöcken. Komprimierungsrate {2}%" msgid "{0} was not a directory, moved to *.original" msgstr "{0} war kein Verzeichnis, verschoben nach *.original" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "| Oder" diff --git a/Languages/po/dolphin-emu.pot b/Languages/po/dolphin-emu.pot index c6223e153dcc..73ee65c55beb 100644 --- a/Languages/po/dolphin-emu.pot +++ b/Languages/po/dolphin-emu.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -25,7 +25,7 @@ msgid "" "problems that Dolphin is unable to detect." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -33,7 +33,7 @@ msgid "" "that it hasn't been tampered with." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -49,7 +49,7 @@ msgstr "" msgid " (Disc %1)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "" @@ -57,7 +57,7 @@ msgstr "" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -71,7 +71,7 @@ msgstr "" msgid "%" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -85,17 +85,17 @@ msgstr "" msgid "%1 %" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "" @@ -114,7 +114,7 @@ msgid "%1 (Revision %3)" msgstr "" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -151,7 +151,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "" @@ -162,23 +162,23 @@ msgid "" "Current Frame: %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -187,11 +187,11 @@ msgstr "" msgid "%1 ms" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "" @@ -203,15 +203,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -227,30 +227,30 @@ msgstr "" msgid "%1[%2]: %3/%4 MiB" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "" @@ -270,7 +270,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "" @@ -279,11 +279,11 @@ msgid "&Add Memory Breakpoint" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "" @@ -291,19 +291,19 @@ msgstr "" msgid "&Add..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "" @@ -311,11 +311,11 @@ msgstr "" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "" @@ -323,15 +323,15 @@ msgstr "" msgid "&Cancel" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "" @@ -339,7 +339,7 @@ msgstr "" msgid "&Clone..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "" @@ -347,19 +347,20 @@ msgstr "" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "" @@ -371,7 +372,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "" @@ -379,11 +380,11 @@ msgstr "" msgid "&Edit..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "" @@ -395,43 +396,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "" @@ -443,11 +448,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "" @@ -455,7 +460,7 @@ msgstr "" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "" @@ -463,23 +468,23 @@ msgstr "" msgid "&Language:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "" @@ -487,7 +492,7 @@ msgstr "" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "" @@ -495,24 +500,24 @@ msgstr "" msgid "&No" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "" @@ -520,11 +525,11 @@ msgstr "" msgid "&Properties" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "" @@ -533,24 +538,24 @@ msgid "&Remove" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "" @@ -558,11 +563,11 @@ msgstr "" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "" @@ -570,11 +575,11 @@ msgstr "" msgid "&Theme:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "" @@ -582,17 +587,17 @@ msgstr "" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "" @@ -604,11 +609,11 @@ msgstr "" msgid "&Yes" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" @@ -620,7 +625,7 @@ msgstr "" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "" @@ -628,34 +633,34 @@ msgstr "" msgid "(ppc)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" @@ -663,6 +668,10 @@ msgstr "" msgid "128 Mbit (2043 blocks)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "" @@ -671,35 +680,35 @@ msgstr "" msgid "16-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "" @@ -711,25 +720,25 @@ msgstr "" msgid "32-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "" @@ -743,28 +752,32 @@ msgstr "" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "" @@ -772,29 +785,33 @@ msgstr "" msgid "64 Mbit (1019 blocks)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "" @@ -803,25 +820,25 @@ msgstr "" msgid "8-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "" @@ -840,12 +857,12 @@ msgid "" "Notes:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "" @@ -863,17 +880,17 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" @@ -882,7 +899,7 @@ msgstr "" msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -906,8 +923,8 @@ msgstr "" msgid "AR Codes" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "" @@ -930,7 +947,7 @@ msgstr "" msgid "Accuracy:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "" @@ -1026,9 +1043,9 @@ msgstr "" msgid "Adapter:" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "" @@ -1036,11 +1053,11 @@ msgstr "" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "" @@ -1072,46 +1089,49 @@ msgstr "" msgid "Add to &watch" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1155,39 +1175,43 @@ msgstr "" msgid "Africa" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "" @@ -1196,25 +1220,25 @@ msgstr "" msgid "All players' saves synchronized." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1240,7 +1264,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "" @@ -1258,39 +1282,39 @@ msgstr "" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1304,15 +1328,15 @@ msgstr "" msgid "Apply" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "" @@ -1320,11 +1344,11 @@ msgstr "" msgid "Are you sure you want to delete this file?" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "" @@ -1337,11 +1361,11 @@ msgid "Aspect Ratio" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "" @@ -1349,7 +1373,7 @@ msgstr "" msgid "Assign Controllers" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1374,7 +1398,7 @@ msgstr "" msgid "Australia" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "" @@ -1386,15 +1410,15 @@ msgstr "" msgid "Auto" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1410,7 +1434,7 @@ msgstr "" msgid "Auto-Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1421,12 +1445,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "" @@ -1441,11 +1465,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "" @@ -1471,7 +1495,7 @@ msgstr "" msgid "Backend:" msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "" @@ -1482,7 +1506,13 @@ msgstr "" msgid "Backward" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1490,19 +1520,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "" @@ -1526,7 +1557,7 @@ msgstr "" msgid "Basic" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "" @@ -1534,7 +1565,7 @@ msgstr "" msgid "Bass" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1542,11 +1573,11 @@ msgstr "" msgid "Battery" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1568,7 +1599,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "" @@ -1581,7 +1612,7 @@ msgstr "" msgid "Blocking" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "" @@ -1604,15 +1635,15 @@ msgid "" "Passthrough mode cannot be used." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "" @@ -1620,7 +1651,7 @@ msgstr "" msgid "Borderless Fullscreen" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "" @@ -1634,7 +1665,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "" @@ -1643,7 +1674,7 @@ msgstr "" msgid "Breakpoint" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" @@ -1673,7 +1704,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1681,12 +1712,12 @@ msgstr "" msgid "Buffer Size:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "" @@ -1728,11 +1759,11 @@ msgstr "" msgid "C Stick" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "" @@ -1763,7 +1794,7 @@ msgstr "" msgid "Calculate" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1783,15 +1814,15 @@ msgstr "" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1801,7 +1832,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1809,16 +1840,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "" @@ -1835,23 +1866,23 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "" @@ -1873,7 +1904,7 @@ msgstr "" msgid "Change &Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "" @@ -1881,15 +1912,15 @@ msgstr "" msgid "Change Disc" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1909,7 +1940,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "" @@ -1925,11 +1956,11 @@ msgstr "" msgid "Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "" @@ -1943,7 +1974,7 @@ msgid "" "whether it's still in use." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "" @@ -1951,16 +1982,16 @@ msgstr "" msgid "China" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -1983,14 +2014,14 @@ msgid "Classic Controller" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "" @@ -2007,28 +2038,47 @@ msgstr "" msgid "Close" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2046,7 +2096,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "" @@ -2059,7 +2109,7 @@ msgstr "" msgid "Compression:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "" @@ -2071,13 +2121,13 @@ msgstr "" msgid "Config" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2085,21 +2135,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "" @@ -2112,26 +2162,26 @@ msgstr "" msgid "Confirm on Stop" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "" @@ -2151,11 +2201,11 @@ msgstr "" msgid "Connect Wii Remote 4" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" @@ -2167,15 +2217,19 @@ msgstr "" msgid "Connected" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "" @@ -2188,7 +2242,7 @@ msgstr "" msgid "Control Stick" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "" @@ -2216,7 +2270,7 @@ msgstr "" msgid "Controllers" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2224,7 +2278,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2233,7 +2287,7 @@ msgid "" "Native.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2258,12 +2312,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "" @@ -2300,33 +2354,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "" @@ -2334,11 +2393,15 @@ msgstr "" msgid "Copy failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "" @@ -2353,16 +2416,16 @@ msgstr "" msgid "Cost" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "" @@ -2441,15 +2504,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2476,7 +2539,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "" @@ -2499,11 +2562,11 @@ msgstr "" msgid "Crossfade" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2511,7 +2574,7 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "" @@ -2519,7 +2582,7 @@ msgstr "" msgid "Current thread" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2550,7 +2613,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "" @@ -2578,7 +2641,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2586,11 +2649,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "" @@ -2602,28 +2665,27 @@ msgstr "" msgid "Data Transfer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2641,7 +2703,7 @@ msgid "Debug Only" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "" @@ -2683,7 +2745,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "" @@ -2699,7 +2761,7 @@ msgstr "" msgid "Default Font" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "" @@ -2724,7 +2786,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2739,11 +2801,11 @@ msgid "Delete Selected Files..." msgstr "" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2751,21 +2813,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "" @@ -2774,11 +2836,11 @@ msgstr "" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2786,25 +2848,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "" @@ -2816,11 +2878,15 @@ msgstr "" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "" @@ -2851,7 +2917,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "" @@ -2863,15 +2929,15 @@ msgstr "" msgid "Disable Emulation Speed Limit" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "" @@ -2879,7 +2945,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2893,7 +2959,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2910,11 +2976,15 @@ msgstr "" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2932,25 +3002,25 @@ msgstr "" msgid "Distance of travel from neutral position." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "" @@ -2967,9 +3037,9 @@ msgstr "" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "" @@ -2981,8 +3051,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "" @@ -3015,21 +3085,21 @@ msgstr "" msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3044,7 +3114,7 @@ msgstr "" msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "" @@ -3057,24 +3127,26 @@ msgid "Done compressing disc image." msgstr "" #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "" @@ -3082,11 +3154,11 @@ msgstr "" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "" @@ -3109,27 +3181,35 @@ msgstr "" msgid "Dual Core" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "" @@ -3141,7 +3221,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "" @@ -3153,7 +3233,7 @@ msgstr "" msgid "Dump Objects" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "" @@ -3250,16 +3330,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3271,7 +3351,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3299,7 +3379,7 @@ msgstr "" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3307,7 +3387,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "" @@ -3319,7 +3399,7 @@ msgstr "" msgid "Embedded Frame Buffer (EFB)" msgstr "" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "" @@ -3327,11 +3407,11 @@ msgstr "" msgid "Emu Thread already running" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "" @@ -3347,8 +3427,12 @@ msgstr "" msgid "Emulation Speed" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3364,7 +3448,7 @@ msgstr "" msgid "Enable Audio Stretching" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "" @@ -3376,7 +3460,7 @@ msgstr "" msgid "Enable Dual Core" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "" @@ -3402,19 +3486,19 @@ msgid "Enable Progressive Scan" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "" @@ -3440,7 +3524,7 @@ msgid "" "= Compatible, OFF = Fast)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3448,7 +3532,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3478,7 +3562,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3512,7 +3596,7 @@ msgstr "" msgid "Encoding" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3525,12 +3609,12 @@ msgid "Enet Didn't Initialize" msgstr "" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3540,7 +3624,7 @@ msgstr "" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "" @@ -3554,11 +3638,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "" @@ -3567,65 +3651,68 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "" @@ -3638,19 +3725,19 @@ msgstr "" msgid "Error loading selected language. Falling back to system default." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3670,7 +3757,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3720,11 +3807,11 @@ msgid "" "may not show fonts correctly, or crash." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3733,11 +3820,39 @@ msgstr "" msgid "Euphoria" msgstr "" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3786,14 +3901,14 @@ msgstr "" msgid "Experimental" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3801,15 +3916,15 @@ msgstr "" msgid "Export Recording" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3821,22 +3936,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "" @@ -3849,7 +3964,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3857,7 +3972,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "" @@ -3895,7 +4010,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "" @@ -3903,17 +4018,17 @@ msgstr "" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -3925,7 +4040,7 @@ msgstr "" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -3946,12 +4061,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -3963,19 +4078,19 @@ msgstr "" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -3984,7 +4099,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "" @@ -4007,29 +4122,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "" @@ -4045,23 +4160,23 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "" @@ -4073,11 +4188,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "" @@ -4088,7 +4203,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "" @@ -4115,11 +4230,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "" @@ -4128,7 +4243,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4140,7 +4255,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4148,25 +4263,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4181,15 +4296,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4197,23 +4312,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4221,11 +4336,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4233,22 +4348,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4257,19 +4372,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4282,7 +4397,7 @@ msgstr "" msgid "Fast Depth Calculation" msgstr "" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4299,7 +4414,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "" @@ -4313,18 +4428,18 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "" @@ -4332,11 +4447,11 @@ msgstr "" msgid "File Size:" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4350,11 +4465,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4362,15 +4477,15 @@ msgstr "" msgid "Filesystem" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4378,11 +4493,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "" @@ -4396,18 +4511,22 @@ msgid "" "This can take a while." msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4417,13 +4536,14 @@ msgstr "" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "" @@ -4447,7 +4567,7 @@ msgstr "" msgid "Force 16:9" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "" @@ -4455,15 +4575,15 @@ msgstr "" msgid "Force 4:3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4473,7 +4593,7 @@ msgid "" "
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4492,21 +4612,21 @@ msgstr "" msgid "Forward" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "" @@ -4535,7 +4655,7 @@ msgstr "" msgid "Frame Range" msgstr "" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4547,19 +4667,19 @@ msgstr "" msgid "France" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4567,7 +4687,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -4975,7 +5095,7 @@ msgstr "" msgid "Green Right" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "" @@ -4988,7 +5108,7 @@ msgstr "" msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "" @@ -5001,12 +5121,29 @@ msgstr "" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5018,19 +5155,19 @@ msgstr "" msgid "Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5048,21 +5185,27 @@ msgstr "" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5070,7 +5213,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5078,11 +5221,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "" @@ -5094,7 +5237,7 @@ msgstr "" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "" @@ -5145,11 +5288,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "" @@ -5158,7 +5301,7 @@ msgid "IR" msgstr "" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "" @@ -5180,22 +5323,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5242,7 +5385,7 @@ msgstr "" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5250,7 +5393,7 @@ msgid "" "checked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5271,41 +5414,50 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" " Time elapsed: %1s" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5358,8 +5510,8 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "" @@ -5368,10 +5520,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "" @@ -5385,16 +5537,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "" @@ -5406,7 +5564,7 @@ msgstr "" msgid "Install Update" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "" @@ -5422,11 +5580,11 @@ msgstr "" msgid "Instruction" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "" @@ -5444,7 +5602,7 @@ msgid "Interface" msgstr "" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "" @@ -5453,27 +5611,27 @@ msgstr "" msgid "Internal LZO Error - decompression failed" msgstr "" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5481,11 +5639,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5493,7 +5651,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5502,15 +5660,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5518,11 +5676,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "" @@ -5535,31 +5693,31 @@ msgstr "" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "" @@ -5568,8 +5726,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "" @@ -5577,11 +5735,11 @@ msgstr "" msgid "Italy" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "" @@ -5589,47 +5747,47 @@ msgstr "" msgid "JIT Blocks" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5641,11 +5799,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5656,12 +5814,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "" @@ -5681,12 +5839,12 @@ msgstr "" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "" @@ -5699,20 +5857,20 @@ msgstr "" msgid "Keys" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "" @@ -5740,7 +5898,7 @@ msgstr "" msgid "Label" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5817,15 +5975,15 @@ msgstr "" msgid "License" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "" @@ -5834,17 +5992,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "" @@ -5852,7 +6010,7 @@ msgstr "" msgid "Load Custom Textures" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "" @@ -5861,7 +6019,7 @@ msgstr "" msgid "Load Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -5954,23 +6112,23 @@ msgstr "" msgid "Load State Slot 9" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "" @@ -5978,12 +6136,12 @@ msgstr "" msgid "Load from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "" @@ -5991,7 +6149,7 @@ msgstr "" msgid "Load..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "" @@ -6002,7 +6160,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "" @@ -6011,7 +6169,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "" @@ -6019,7 +6177,7 @@ msgstr "" msgid "Log Configuration" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6046,7 +6204,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "" @@ -6075,7 +6233,7 @@ msgstr "" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6085,7 +6243,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "" @@ -6094,7 +6252,7 @@ msgstr "" msgid "Maker:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6102,7 +6260,7 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "" @@ -6110,7 +6268,7 @@ msgstr "" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6118,15 +6276,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6135,7 +6293,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "" @@ -6144,11 +6302,11 @@ msgstr "" msgid "Medium" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "" @@ -6156,7 +6314,7 @@ msgstr "" msgid "Memory Card" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "" @@ -6174,7 +6332,7 @@ msgstr "" msgid "Memory Override" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "" @@ -6190,7 +6348,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6198,13 +6356,13 @@ msgid "" "want to continue?" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "" @@ -6212,19 +6370,19 @@ msgstr "" msgid "Misc" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6247,12 +6405,12 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6264,11 +6422,11 @@ msgstr "" msgid "Monospaced Font" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6308,10 +6466,10 @@ msgstr "" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "" @@ -6319,26 +6477,26 @@ msgstr "" msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "" @@ -6350,37 +6508,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6388,16 +6546,16 @@ msgstr "" msgid "Netherlands" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "" @@ -6418,11 +6576,11 @@ msgstr "" msgid "New" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "" @@ -6430,7 +6588,7 @@ msgstr "" msgid "New Tag..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "" @@ -6447,7 +6605,7 @@ msgstr "" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6456,17 +6614,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "" @@ -6474,6 +6632,10 @@ msgstr "" msgid "No Adapter Detected" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "" @@ -6484,24 +6646,20 @@ msgstr "" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6513,15 +6671,15 @@ msgstr "" msgid "No file loaded / recorded." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "" @@ -6529,11 +6687,15 @@ msgstr "" msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6544,7 +6706,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6552,17 +6714,13 @@ msgstr "" msgid "No save data found." msgstr "" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6572,7 +6730,7 @@ msgstr "" msgid "North America" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "" @@ -6580,11 +6738,11 @@ msgstr "" msgid "Not Set" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6592,7 +6750,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6652,13 +6810,13 @@ msgstr "" msgid "Nunchuk Stick" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6671,11 +6829,11 @@ msgid "Oceania" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6687,17 +6845,17 @@ msgstr "" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6712,7 +6870,7 @@ msgstr "" msgid "Open &Containing Folder" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "" @@ -6760,7 +6918,7 @@ msgstr "" msgid "OpenGL ES" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6778,7 +6936,7 @@ msgstr "" msgid "Orange" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6786,7 +6944,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "" @@ -6799,11 +6957,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "" @@ -6811,12 +6969,12 @@ msgstr "" msgid "Overlay Information" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "" @@ -6841,7 +6999,7 @@ msgstr "" msgid "PPC Size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6858,7 +7016,7 @@ msgstr "" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6867,23 +7025,23 @@ msgstr "" msgid "Parsing Error" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "" @@ -6904,7 +7062,7 @@ msgid "Path:" msgstr "" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "" @@ -6912,7 +7070,7 @@ msgstr "" msgid "Pause" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "" @@ -6935,11 +7093,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "" @@ -6949,23 +7107,23 @@ msgstr "" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "" @@ -6978,7 +7136,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "" @@ -6998,16 +7156,16 @@ msgstr "" msgid "Playback Options" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7018,29 +7176,29 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "" @@ -7052,15 +7210,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7097,7 +7255,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7108,15 +7266,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7124,25 +7282,25 @@ msgstr "" msgid "Problem" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "" @@ -7156,15 +7314,15 @@ msgstr "" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7176,11 +7334,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "" @@ -7190,12 +7348,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "" @@ -7215,11 +7373,11 @@ msgstr "" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7232,44 +7390,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "" @@ -7277,11 +7435,11 @@ msgstr "" msgid "Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "" @@ -7294,11 +7452,11 @@ msgstr "" msgid "Record" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7323,7 +7481,7 @@ msgstr "" msgid "Red Right" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7339,16 +7497,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7356,26 +7514,26 @@ msgstr "" msgid "Refresh Game List" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "" @@ -7395,16 +7553,16 @@ msgstr "" msgid "Remind Me Later" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7427,8 +7585,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "" @@ -7461,29 +7619,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7491,15 +7657,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7511,11 +7677,11 @@ msgstr "" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "" @@ -7524,7 +7690,7 @@ msgstr "" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7582,11 +7748,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7595,12 +7761,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7610,11 +7777,11 @@ msgstr "" msgid "Rumble" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7622,15 +7789,15 @@ msgstr "" msgid "Russia" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "" @@ -7646,7 +7813,7 @@ msgstr "" msgid "SHA-1:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "" @@ -7660,11 +7827,11 @@ msgstr "" msgid "START" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "" @@ -7674,7 +7841,7 @@ msgid "Safe" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7687,7 +7854,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7708,11 +7875,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7724,7 +7891,7 @@ msgstr "" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7774,23 +7941,23 @@ msgstr "" msgid "Save State Slot 9" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "" @@ -7798,7 +7965,7 @@ msgstr "" msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "" @@ -7810,26 +7977,26 @@ msgstr "" msgid "Save as..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "" @@ -7837,7 +8004,7 @@ msgstr "" msgid "Save to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "" @@ -7845,23 +8012,23 @@ msgstr "" msgid "Save..." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7869,36 +8036,36 @@ msgstr "" msgid "ScrShot" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "" @@ -7906,7 +8073,7 @@ msgstr "" msgid "Search games..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "" @@ -7930,28 +8097,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -7959,11 +8126,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -7971,7 +8138,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "" @@ -7979,7 +8146,7 @@ msgstr "" msgid "Select State" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "" @@ -8023,41 +8190,45 @@ msgstr "" msgid "Select State Slot 9" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "" @@ -8065,11 +8236,11 @@ msgstr "" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8077,12 +8248,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "" @@ -8098,15 +8269,15 @@ msgstr "" msgid "Selected Font" msgstr "" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8130,7 +8301,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8170,11 +8341,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "" @@ -8186,63 +8357,71 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" "May not work for all games." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "" @@ -8252,7 +8431,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8287,11 +8466,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "" @@ -8299,15 +8478,15 @@ msgstr "" msgid "Show Active Title in Window Title" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "" @@ -8315,7 +8494,7 @@ msgstr "" msgid "Show Debugging UI" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "" @@ -8323,43 +8502,43 @@ msgstr "" msgid "Show FPS" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "" @@ -8367,7 +8546,7 @@ msgstr "" msgid "Show Language:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "" @@ -8379,7 +8558,7 @@ msgstr "" msgid "Show NetPlay Ping" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "" @@ -8387,7 +8566,7 @@ msgstr "" msgid "Show On-Screen Display Messages" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "" @@ -8396,23 +8575,23 @@ msgstr "" msgid "Show PC" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "" @@ -8421,46 +8600,50 @@ msgstr "" msgid "Show Statistics" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8492,7 +8675,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "" @@ -8508,16 +8691,31 @@ msgstr "" msgid "Sideways Wii Remote" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "" @@ -8525,7 +8723,7 @@ msgstr "" msgid "Simulate DK Bongos" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8552,7 +8750,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "" @@ -8560,7 +8758,7 @@ msgstr "" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8574,19 +8772,19 @@ msgstr "" msgid "Slider Bar" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "" @@ -8604,7 +8802,7 @@ msgstr "" msgid "Software Renderer" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8621,11 +8819,11 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "" @@ -8638,8 +8836,8 @@ msgid "Spain" msgstr "" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "" @@ -8647,7 +8845,7 @@ msgstr "" msgid "Speaker Pan" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "" @@ -8682,7 +8880,7 @@ msgstr "" msgid "Speed up Disc Transfer Rate" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "" @@ -8694,16 +8892,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "" @@ -8711,11 +8909,13 @@ msgstr "" msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "" @@ -8731,7 +8931,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "" @@ -8742,7 +8942,7 @@ msgstr "" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "" @@ -8770,19 +8970,19 @@ msgstr "" msgid "Step Over" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "" @@ -8791,20 +8991,20 @@ msgstr "" msgid "Stepping" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "" @@ -8825,11 +9025,15 @@ msgstr "" msgid "Stop" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "" @@ -8843,7 +9047,7 @@ msgstr "" msgid "Store XFB Copies to Texture Only" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8852,7 +9056,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8865,7 +9069,7 @@ msgstr "" msgid "Stretch to Window" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "" @@ -8888,16 +9092,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -8907,11 +9111,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -8920,7 +9124,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "" @@ -8932,12 +9136,12 @@ msgstr "" msgid "Successfully extracted system data." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "" @@ -8949,16 +9153,16 @@ msgstr "" msgid "Support" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -8966,11 +9170,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -8982,50 +9186,62 @@ msgstr "" msgid "Swing" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "" @@ -9039,37 +9255,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "" @@ -9087,11 +9303,11 @@ msgstr "" msgid "Taiwan" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "" @@ -9100,7 +9316,7 @@ msgstr "" msgid "Texture Cache" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9122,7 +9338,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9136,13 +9352,13 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "" @@ -9178,7 +9394,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9192,7 +9408,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9214,19 +9430,19 @@ msgstr "" msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9276,7 +9492,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9287,7 +9503,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9304,7 +9520,7 @@ msgstr "" msgid "The hashes match!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9326,12 +9542,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9346,20 +9562,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9380,7 +9596,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9431,7 +9647,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "" @@ -9465,7 +9681,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "" @@ -9483,7 +9699,7 @@ msgid "" "Replay itself." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "" @@ -9523,7 +9739,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "" @@ -9541,27 +9761,27 @@ msgid "" "or freezes while running this game." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9617,13 +9837,13 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9643,7 +9863,7 @@ msgstr "" msgid "Threshold" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "" @@ -9660,22 +9880,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "" @@ -9700,7 +9920,7 @@ msgid "Toggle Aspect Ratio" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "" @@ -9760,14 +9980,20 @@ msgstr "" msgid "Toolbar" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9802,20 +10028,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "" @@ -9845,20 +10071,12 @@ msgstr "" msgid "Type" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9875,9 +10093,9 @@ msgstr "" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -9905,10 +10123,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -9925,7 +10147,11 @@ msgid "" "Would you like to ignore this line and continue parsing?" msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -9937,15 +10163,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "" @@ -9959,18 +10185,18 @@ msgid "" "title from the NAND without deleting its save data. Continue?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "" @@ -9978,7 +10204,7 @@ msgstr "" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -9988,7 +10214,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -9998,15 +10224,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10014,19 +10240,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10034,7 +10260,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "" @@ -10050,13 +10276,28 @@ msgstr "" msgid "Unpacking" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10065,7 +10306,7 @@ msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "" @@ -10120,7 +10361,7 @@ msgstr "" msgid "Upright Wii Remote" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "" @@ -10136,7 +10377,7 @@ msgstr "" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "" @@ -10162,18 +10403,40 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "" @@ -10186,18 +10449,18 @@ msgstr "" msgid "User Style:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10223,23 +10486,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10252,7 +10515,7 @@ msgstr "" msgid "V-Sync" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "" @@ -10285,8 +10548,8 @@ msgstr "" msgid "Verifying" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "" @@ -10322,7 +10585,7 @@ msgstr "" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10349,7 +10612,7 @@ msgstr "" msgid "Vulkan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "" @@ -10397,7 +10660,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10405,8 +10668,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10428,7 +10691,7 @@ msgid "" "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10441,10 +10704,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "" @@ -10460,28 +10723,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10507,7 +10770,7 @@ msgstr "" msgid "Watch" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "" @@ -10536,11 +10799,11 @@ msgid "" "unsure, leave this checked." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "" @@ -10556,11 +10819,11 @@ msgstr "" msgid "Wii Menu" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "" @@ -10568,8 +10831,8 @@ msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "" @@ -10582,11 +10845,11 @@ msgstr "" msgid "Wii Remote Orientation" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "" @@ -10602,7 +10865,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "" @@ -10610,7 +10873,7 @@ msgstr "" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "" @@ -10638,18 +10901,18 @@ msgid "World" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "" @@ -10662,12 +10925,12 @@ msgid "Write to File" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "" @@ -10675,7 +10938,7 @@ msgstr "" msgid "Write to Window" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10686,7 +10949,7 @@ msgstr "" msgid "X" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "" @@ -10715,8 +10978,8 @@ msgid "Yellow" msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "" @@ -10751,7 +11014,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10780,11 +11043,11 @@ msgstr "" msgid "You have to enter a name." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10792,7 +11055,7 @@ msgstr "" msgid "You must restart Dolphin in order for the change to take effect." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "" @@ -10823,23 +11086,23 @@ msgstr "" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10858,13 +11121,13 @@ msgstr "" msgid "d3d12.dll could not be loaded." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -10880,31 +11143,31 @@ msgstr "" msgid "fake-completion" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -10934,7 +11197,7 @@ msgstr "" msgid "on" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "" @@ -10943,7 +11206,7 @@ msgstr "" msgid "s" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -10952,7 +11215,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -10971,7 +11234,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -10990,7 +11253,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -10998,7 +11261,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Languages/po/el.po b/Languages/po/el.po index 8afb1de3b870..2553f21365b2 100644 --- a/Languages/po/el.po +++ b/Languages/po/el.po @@ -5,15 +5,16 @@ # Translators: # firespin, 2014-2015,2018,2020 # Gpower2 , 2011 -# link_to_the_past , 2013-2018,2020 +# link_to_the_past , 2013-2018,2020,2022 # Panos , 2013 msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: link_to_the_past , " +"2013-2018,2020,2022\n" "Language-Team: Greek (http://www.transifex.com/delroth/dolphin-emu/language/" "el/)\n" "Language: el\n" @@ -22,7 +23,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -30,7 +31,7 @@ msgid "" "problems that Dolphin is unable to detect." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -38,7 +39,7 @@ msgid "" "that it hasn't been tampered with." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -54,7 +55,7 @@ msgstr "" msgid " (Disc %1)" msgstr " (Δίσκος %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "" @@ -62,7 +63,7 @@ msgstr "" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -76,7 +77,7 @@ msgstr "" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -90,19 +91,19 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" -msgstr "" +msgstr "%1 %2" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" -msgstr "" +msgstr "%1 (%2)" #. i18n: If there is a pre-defined patch with the name %1 and the user wants to edit it, #. a copy of it gets created with this name @@ -119,19 +120,19 @@ msgid "%1 (Revision %3)" msgstr "%1 (Αναθεώρηση %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" #. i18n: %1 is the name of a compression method (e.g. Zstandard) #: Source/Core/DolphinQt/ConvertDialog.cpp:231 msgid "%1 (recommended)" -msgstr "" +msgstr "%1 (συνιστάται)" #. i18n: %1 is the name of a compression method (e.g. LZMA) #: Source/Core/DolphinQt/ConvertDialog.cpp:213 msgid "%1 (slow)" -msgstr "" +msgstr "%1 (αργή)" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:317 msgid "" @@ -156,7 +157,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "" @@ -167,23 +168,23 @@ msgid "" "Current Frame: %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" -msgstr "" +msgstr "%1 έχει φύγει" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -192,11 +193,11 @@ msgstr "" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "" @@ -208,17 +209,17 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (Κανονική Ταχύτητα)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" -msgstr "" +msgstr "%1, %2, %3, %4" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" -msgstr "" +msgstr "%1: %2" #: Source/Core/DolphinQt/NetPlay/MD5Dialog.cpp:141 msgid "%1[%2]: %3" @@ -232,50 +233,50 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:428 msgid "&1x" -msgstr "" +msgstr "&1x" #: Source/Core/DolphinQt/GBAWidget.cpp:430 msgid "&2x" -msgstr "" +msgstr "&2x" #: Source/Core/DolphinQt/GBAWidget.cpp:432 msgid "&3x" -msgstr "" +msgstr "&3x" #: Source/Core/DolphinQt/GBAWidget.cpp:434 msgid "&4x" -msgstr "" +msgstr "&4x" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&Περί" @@ -284,11 +285,11 @@ msgid "&Add Memory Breakpoint" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "" @@ -296,19 +297,19 @@ msgstr "" msgid "&Add..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "&Ρυθμίσεις Ήχου" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "&Αυτόματη Ενημέρωση:" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "&Αυτόματη Εκκίνηση" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "&Εκκίνηση από DVD Αντίγραφο Ασφαλείας" @@ -316,27 +317,27 @@ msgstr "&Εκκίνηση από DVD Αντίγραφο Ασφαλείας" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Σημεία Διακοπής" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "&Ιχνηλάτης Σφαλμάτων" #: Source/Core/DolphinQt/WiiUpdate.cpp:100 msgid "&Cancel" -msgstr "" +msgstr "&Ακύρωση" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "&Διαχειριστής Cheats" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "&Έλεγχος για Ενημερώσεις..." -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "" @@ -344,7 +345,7 @@ msgstr "" msgid "&Clone..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "" @@ -352,19 +353,20 @@ msgstr "" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "&Ρυθμίσεις Χειριστηρίων" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "&Δημιουργία..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "&Διαγραφή" @@ -376,7 +378,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "" @@ -384,11 +386,11 @@ msgstr "" msgid "&Edit..." msgstr "&Επεξεργασία..." -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "&Εξαγωγή Δίσκου" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Εξομοίωση" @@ -400,43 +402,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Αρχείο" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&Γραμματοσειρά..." -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "&Προώθηση ανά Καρέ" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "&Ρυθμίσεις Γραφικών" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Βοήθεια" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "&Ρυθμίσεις Πλήκτρων Συντόμευσης" @@ -448,11 +454,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "" @@ -460,7 +466,7 @@ msgstr "" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -468,23 +474,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "&Γλώσσα:" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&Φόρτωση Σημείου Αποθήκευσης" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Μνήμη" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "&Ταινία" @@ -492,7 +498,7 @@ msgstr "&Ταινία" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "&Δίκτυο" @@ -500,24 +506,24 @@ msgstr "&Δίκτυο" msgid "&No" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Άνοιγμα..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Ρυθμίσεις" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Παύση" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Αναπαραγωγή" @@ -525,11 +531,11 @@ msgstr "&Αναπαραγωγή" msgid "&Properties" msgstr "&Ιδιότητες" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "&Μόνο Για Ανάγνωση" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Καταχωρητές" @@ -538,24 +544,24 @@ msgid "&Remove" msgstr "&Αφαίρεση" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Επανεκκίνηση" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "" @@ -563,11 +569,11 @@ msgstr "" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "&Όριο Ταχύτητας:" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Διακοπή" @@ -575,11 +581,11 @@ msgstr "&Διακοπή" msgid "&Theme:" msgstr "&Θέμα:" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Εργαλεία" @@ -587,17 +593,17 @@ msgstr "&Εργαλεία" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Προβολή" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Ιστοσελίδα" @@ -607,13 +613,13 @@ msgstr "&Wiki" #: qtbase/src/gui/kernel/qplatformtheme.cpp:716 msgid "&Yes" -msgstr "" +msgstr "&Ναι" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" @@ -625,7 +631,7 @@ msgstr "" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(ανενεργό)" @@ -633,78 +639,82 @@ msgstr "(ανενεργό)" msgid "(ppc)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:31 msgid "128 Mbit (2043 blocks)" +msgstr "128 Mbit (2043 blocks)" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" -msgstr "" +msgstr "16 Mbit (251 blocks)" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:132 msgid "16-bit" msgstr "16-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x Αρχική (1280x1056) για 720p" @@ -716,25 +726,25 @@ msgstr "" msgid "32-bit" msgstr "32-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -746,89 +756,97 @@ msgstr "3D Βάθος" #: Source/Core/Core/HotkeyManager.cpp:192 msgid "3x" -msgstr "" +msgstr "3x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x Αρχική (1920x1584) για 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" -msgstr "" +msgstr "4 Mbit (59 blocks)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x Αρχική (2560x2112) για 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x Αρχική (3200x2640)" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:30 msgid "64 Mbit (1019 blocks)" -msgstr "" +msgstr "64 Mbit (1019 blocks)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x Αρχική (3840x3168) για 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x Αρχική (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" -msgstr "" +msgstr "8 Mbit (123 blocks)" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:131 msgid "8-bit" msgstr "8-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x Αρχική (5120x4224) για 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" -msgstr "" +msgstr "< Λιγότερο-από" #: Source/Core/Core/HW/EXI/EXI_Device.h:121 msgid "" @@ -848,12 +866,12 @@ msgstr "" "διαθέσιμο για κατέβασμα. Αυτή την στιγμή εκτελείται το %2.
Θα θέλατε να " "γίνει αναβάθμιση;

Σημειώσεις Έκδοσης:

" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" -msgstr "" +msgstr "> Περισσότερο-από" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "" @@ -871,17 +889,17 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" @@ -890,7 +908,7 @@ msgstr "" msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -914,8 +932,8 @@ msgstr "Κωδικός AR" msgid "AR Codes" msgstr "Κωδικοί AR" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -938,7 +956,7 @@ msgstr "Επιταχυνσιόμετρο" msgid "Accuracy:" msgstr "Ακρίβεια:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "" @@ -1020,7 +1038,7 @@ msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:175 msgid "Active threads" -msgstr "" +msgstr "Ενεργά νήματα" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:273 msgid "Adapter" @@ -1034,9 +1052,9 @@ msgstr "Προσαρμογέας Εντοπίστηκε" msgid "Adapter:" msgstr "Προσαρμογέας:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Προσθήκη" @@ -1044,11 +1062,11 @@ msgstr "Προσθήκη" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "Προσθήκη Νέας USB Συσκευής" @@ -1080,46 +1098,49 @@ msgstr "" msgid "Add to &watch" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Προσθήκη..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Διεύθυνση" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1163,39 +1184,43 @@ msgstr "Για προχωρημένους" msgid "Africa" msgstr "Αφρική" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" -msgstr "" +msgstr "Όλα τα Αρχεία" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "Όλα τα Αρχεία (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" -msgstr "" +msgstr "Όλα τα GC/Wii αρχεία" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "Όλες οι συσκευές" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "" @@ -1204,25 +1229,25 @@ msgstr "" msgid "All players' saves synchronized." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "Να Επιτρέπονται Ασύμφωνες Ρυθμίσεις Περιοχών" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "Άδεια Μετάδοσης Στατιστικών Χρήσης " -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1232,7 +1257,7 @@ msgstr "" #: Source/Core/DolphinQt/Settings/InterfacePane.cpp:183 msgid "Always" -msgstr "" +msgstr "Πάντοτε" #. i18n: Treat a controller as always being connected regardless of what #. devices the user actually has plugged in @@ -1248,7 +1273,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Ανάγλυφο" @@ -1266,39 +1291,39 @@ msgstr "Γωνεία" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" -msgstr "" +msgstr "Ανισοτροπικό Φιλτράρισμα" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Ανισοτροπικό Φιλτράρισμα:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" -msgstr "" +msgstr "Εξομάλυνση Ορίων" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Εξομάλυνση Ορίων:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "Οποιαδήποτε Περιοχή" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1312,15 +1337,15 @@ msgstr "Apploader Ημερομηνία:" msgid "Apply" msgstr "Εφαρμογή" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε το '%1';" @@ -1328,11 +1353,11 @@ msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετ msgid "Are you sure you want to delete this file?" msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το αρχείο;" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το pack;" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "Είστε σίγουροι ότι θέλετε να εγκαταλείψετε το NetPlay;" @@ -1342,14 +1367,14 @@ msgstr "Είστε σίγουροι;" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:275 msgid "Aspect Ratio" -msgstr "" +msgstr "Αναλογία Οθόνης" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Αναλογία Οθόνης:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Ορισμός Θυρών Χειριστηρίων" @@ -1357,7 +1382,7 @@ msgstr "Ορισμός Θυρών Χειριστηρίων" msgid "Assign Controllers" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1382,7 +1407,7 @@ msgstr "Ρυθμίσεις Ελαστικότητας Ήχου" msgid "Australia" msgstr "Αυστραλία" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "Συγγραφέας" @@ -1394,15 +1419,15 @@ msgstr "Συγγραφείς" msgid "Auto" msgstr "Αυτόματα" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Αυτόματα (Πολλαπλάσιο του 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "Ρυθμίσεις Αυτόματης Ενημέρωσης" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1418,7 +1443,7 @@ msgstr "Αυτόματη Προσαρμογή Μεγέθους Παραθύρο msgid "Auto-Hide" msgstr "Αυτόματη Απόκρυψη" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1429,12 +1454,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "" @@ -1449,11 +1474,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" -msgstr "" +msgstr "BIOS:" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "BP Καταχωρητές" @@ -1479,7 +1504,7 @@ msgstr "Backend Ρυθμίσεις" msgid "Backend:" msgstr "Backend:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Χειρισμός με Ανεστίαστο Παραθ." @@ -1490,7 +1515,13 @@ msgstr "Χειρισμός με Ανεστίαστο Παραθ." msgid "Backward" msgstr "Πίσω" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1498,19 +1529,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Εικονίδιο" @@ -1534,7 +1566,7 @@ msgstr "" msgid "Basic" msgstr "Βασικές" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Βασικές Ρυθμίσεις" @@ -1542,7 +1574,7 @@ msgstr "Βασικές Ρυθμίσεις" msgid "Bass" msgstr "Μπάσο" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1550,11 +1582,11 @@ msgstr "" msgid "Battery" msgstr "Μπαταρία" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "Beta (μια φορά τον μήνα)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1576,7 +1608,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "" @@ -1589,7 +1621,7 @@ msgstr "" msgid "Blocking" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Μπλοκ" @@ -1612,15 +1644,15 @@ msgid "" "Passthrough mode cannot be used." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "" @@ -1628,7 +1660,7 @@ msgstr "" msgid "Borderless Fullscreen" msgstr "Πλήρης Οθόνη Χωρίς Περιθώρια " -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Βάση" @@ -1642,7 +1674,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "" @@ -1651,7 +1683,7 @@ msgstr "" msgid "Breakpoint" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" @@ -1681,7 +1713,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1689,12 +1721,12 @@ msgstr "" msgid "Buffer Size:" msgstr "Μέγεθος Buffer:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Buffer:" @@ -1736,11 +1768,11 @@ msgstr "Κουμπιά" msgid "C Stick" msgstr "Stick Κάμερας " -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "CP Καταχωρητές" @@ -1771,7 +1803,7 @@ msgstr "" msgid "Calculate" msgstr "Υπολογισμός" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1791,17 +1823,17 @@ msgstr "" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" -msgstr "" +msgstr "Κάμερα 1" #. i18n: Refers to emulated wii remote camera properties. #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:227 @@ -1809,7 +1841,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1817,16 +1849,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "Άκυρο" @@ -1843,23 +1875,23 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "Δεν μπορεί να βρεθεί το GC IPL." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "Δεν μπορεί να ξεκινήσει το παιχνίδι, γιατί το GC IPL δεν βρέθηκε." @@ -1881,7 +1913,7 @@ msgstr "" msgid "Change &Disc" msgstr "Αλλαγή &Δίσκου" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Αλλαγή &Δίσκου..." @@ -1889,15 +1921,15 @@ msgstr "Αλλαγή &Δίσκου..." msgid "Change Disc" msgstr "Αλλαγή Δίσκου" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "Αυτόματη Αλλαγή Δίσκων" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1917,7 +1949,7 @@ msgstr "Η αλλαγή cheats θα τεθεί σε ισχύ μόνο όταν msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Συνομιλία" @@ -1933,11 +1965,11 @@ msgstr "Αναζήτηση Cheat" msgid "Cheats Manager" msgstr "Διαχειριστής Cheats" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "Έλεγχος NAND..." -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "Έλεγχος Αλλαγών στην Λίστα Παιχνιδιών στο Παρασκήνιο" @@ -1951,7 +1983,7 @@ msgid "" "whether it's still in use." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "" @@ -1959,16 +1991,16 @@ msgstr "" msgid "China" msgstr "Κίνα" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Επιλέξτε ένα αρχείο για άνοιγμα" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -1991,14 +2023,14 @@ msgid "Classic Controller" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Καθάρισ." -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "" @@ -2015,28 +2047,47 @@ msgstr "" msgid "Close" msgstr "Κλείσιμο" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "Ρυ&θμίσεις" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Κώδικας" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Κωδικός:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2054,20 +2105,20 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" -msgstr "" +msgstr "Συμπίεση" #: Source/Core/DolphinQt/ConvertDialog.cpp:69 msgid "Compression Level:" -msgstr "" +msgstr "Επίπεδο Συμπίεσης:" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:70 #: Source/Core/DolphinQt/ConvertDialog.cpp:65 msgid "Compression:" -msgstr "" +msgstr "Συμπίεση:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "" @@ -2079,13 +2130,13 @@ msgstr "" msgid "Config" msgstr "Ρυθμίσεις" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Ρυθμίσεις" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2093,21 +2144,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "Ρύθμιση Dolphin" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "Επιβεβαίωση" @@ -2120,26 +2171,26 @@ msgstr "Επιβεβαίωση αλλαγής backend " msgid "Confirm on Stop" msgstr "Επιβεβαίωση Διακοπής" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "Επιβεβαίωση" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Σύνδεση" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Σύνδεση Σανίδας Ισορροπίας" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Σύνδεση Πληκτρολογίου USB" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "Σύνδεση Wii Remote %1" @@ -2159,31 +2210,35 @@ msgstr "Σύνδεση Wii Remote 3" msgid "Connect Wii Remote 4" msgstr "Σύνδεση Wii Remote 4" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" -msgstr "" +msgstr "Σύνδεση Wii Remotes" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" #: Source/Core/DolphinQt/WiiUpdate.cpp:137 msgid "Connect to the Internet and perform an online system update?" -msgstr "" +msgstr "Σύνδεση στο Internet και εκτέλεση ενημέρωσης συστήματος;" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:87 msgid "Connected" msgstr "Συνδεδεμένο" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Συνεχής Ανίχνευση" @@ -2196,7 +2251,7 @@ msgstr "" msgid "Control Stick" msgstr "Stick Ελέγχου " -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "" @@ -2224,7 +2279,7 @@ msgstr "Ρυθμίσεις Χειριστηρίων" msgid "Controllers" msgstr "Χειριστήρια" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2232,7 +2287,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2241,7 +2296,7 @@ msgid "" "Native." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2266,12 +2321,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Σύγκλιση:" @@ -2307,34 +2362,41 @@ msgid "" "Converting...\n" "%1" msgstr "" +"Μετατροπή\n" +"%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Αντιγραφή" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "" @@ -2342,11 +2404,15 @@ msgstr "" msgid "Copy failed" msgstr "Η αντιγραφή απέτυχε" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "" @@ -2361,16 +2427,16 @@ msgstr "Πυρήνας" msgid "Cost" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "" @@ -2449,15 +2515,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "Αδυναμία ανοίγματος του αρχείου." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "Αδυναμία ανάγνωσης αρχείου." @@ -2484,7 +2550,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "Δημιουργός:" @@ -2507,11 +2573,11 @@ msgstr "" msgid "Crossfade" msgstr "Crossfade" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "Τρέχουσα Περιοχή" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2519,15 +2585,15 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "Τρέχων παιχνίδι" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:148 msgid "Current thread" -msgstr "" +msgstr "Τρέχων νήμα" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2558,7 +2624,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "DK Bongos" @@ -2586,7 +2652,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2594,11 +2660,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Χαλάκι Χορού" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "" @@ -2610,28 +2676,27 @@ msgstr "" msgid "Data Transfer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2649,7 +2714,7 @@ msgid "Debug Only" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Debugging" @@ -2676,7 +2741,7 @@ msgstr "Μείωση Βάθους" #: Source/Core/Core/HotkeyManager.cpp:45 msgid "Decrease Emulation Speed" -msgstr "" +msgstr "Μείωση Ταχύτητας Εξομοίωσης" #. i18n: IR stands for internal resolution #: Source/Core/Core/HotkeyManager.cpp:118 @@ -2691,7 +2756,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Προεπιλ." @@ -2707,7 +2772,7 @@ msgstr "Προεπιλεγμένη Συσκευή" msgid "Default Font" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "Προεπιλεγμένο ISO:" @@ -2732,7 +2797,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2747,33 +2812,33 @@ msgid "Delete Selected Files..." msgstr "Διαγραφή Επιλεγμένων Αρχείων..." #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" -msgstr "" +msgstr "Βάθος" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:139 msgid "Depth Percentage:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Βάθος:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Περιγραφή" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Περιγραφή:" @@ -2782,11 +2847,11 @@ msgstr "Περιγραφή:" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Ανίχνευση" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2794,25 +2859,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "Dev (πολλαπλές φορές την ημέρα)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Συσκευή" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Ρυθμίσεις Συσκευής" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "" @@ -2824,12 +2889,16 @@ msgstr "Συσκευή:" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "" "Σκοτεινιάζει την οθόνη μετά από έλλειψη δραστηριότητας για πέντε λεπτά." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "" @@ -2860,7 +2929,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "Απενεργοποίηση Bounding Box" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "Απενεργοποίηση Φίλτρου Αντιγραφής " @@ -2872,15 +2941,15 @@ msgstr "Απενεργοποίηση EFB VRAM Αντίγραφα" msgid "Disable Emulation Speed Limit" msgstr "Απενεργοποίηση Ορίου Ταχύτητας Εξομοίωσης" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Απενεργοποίηση Ομίχλης" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "Απενεργοποίηση JIT Cache" @@ -2888,7 +2957,7 @@ msgstr "Απενεργοποίηση JIT Cache" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2902,7 +2971,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2919,11 +2988,15 @@ msgstr "Δίσκος" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2941,27 +3014,27 @@ msgstr "Απόσταση" msgid "Distance of travel from neutral position." msgstr "Απόσταση μετακίνησης από ουδέτερη θέση." -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" "Εξουσιοδοτείτε το Dolphin να αναφέρει πληροφορίες στους προγραμματιστές του " "Dolphin;" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Θέλετε να σταματήσετε την τρέχουσα εξομοίωση;" @@ -2978,9 +3051,9 @@ msgstr "" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "" @@ -2992,8 +3065,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Dolphin TAS Ταινίες (*.dtm)" @@ -3028,21 +3101,21 @@ msgstr "" "Το Dolphin είναι ένας ελεύθερος και ανοικτού κώδικα εξομοιωτής για GameCube " "και Wii." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3057,37 +3130,39 @@ msgstr "Το σύστημα cheat του Dolphin είναι επί του παρ msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "Να Μην Γίνει Ενημέρωση" #: Source/Core/DolphinQt/NKitWarningDialog.cpp:53 msgid "Don't show this again" -msgstr "" +msgstr "Να μην εμφανιστεί ξανά" #: Source/Core/DiscIO/CompressedBlob.cpp:369 msgid "Done compressing disc image." msgstr "Συμπιέστηκε η εικόνα του δίσκου." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Κάτω" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "Λήψη Κωδικών" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "Λήψη Κωδικών από την WiiRD Database" @@ -3096,11 +3171,11 @@ msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" "Λήψη Εξώφυλλων Παιχνιδιών από GameTDB.com για Χρήση σε Προβολή Πλέγματος" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "Η λήψη ολοκληρώθηκε" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "Ελήφθησαν %1 κωδικοί. (προστέθηκαν %2)" @@ -3123,27 +3198,35 @@ msgstr "" msgid "Dual Core" msgstr "Διπλός Πυρήνας" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Dummy" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Εξαγωγή Ήχου" @@ -3155,7 +3238,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "Εξαγωγή EFB Target" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Εξαγωγή Καρέ" @@ -3167,7 +3250,7 @@ msgstr "" msgid "Dump Objects" msgstr "Εξαγωγή Αντικειμένων" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "" @@ -3264,16 +3347,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Ολλανδικά" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "Έ&ξοδος" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3285,7 +3368,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3313,7 +3396,7 @@ msgstr "Εφέ" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3321,7 +3404,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "" @@ -3333,7 +3416,7 @@ msgstr "Εξαγωγή Δίσκου" msgid "Embedded Frame Buffer (EFB)" msgstr "" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Κενή" @@ -3341,11 +3424,11 @@ msgstr "Κενή" msgid "Emu Thread already running" msgstr "Το νήμα εξομοίωσης εκτελείται ήδη" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "Εξομοίωση Wii Remote" @@ -3361,8 +3444,12 @@ msgstr "" msgid "Emulation Speed" msgstr "Ταχύτητα Εξομοίωσης" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3378,7 +3465,7 @@ msgstr "" msgid "Enable Audio Stretching" msgstr "Ενεργοποίηση Ελαστικότητας Ήχου" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Ενεργοποίηση Cheat" @@ -3390,7 +3477,7 @@ msgstr "" msgid "Enable Dual Core" msgstr "Ενεργοποίηση Διπλού Πυρήνα" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Ενεργοποίηση Διπλού Πυρήνα (επιτάχυνση)" @@ -3416,19 +3503,19 @@ msgid "Enable Progressive Scan" msgstr "Ενεργοποίηση Προοδευτικής Σάρωσης" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "Ενεργοποίηση Δόνησης" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Ενεργοποίηση Προφύλαξης Οθόνης" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Ενεργοποίηση Δεδομένων Ηχείου" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "" @@ -3459,7 +3546,7 @@ msgstr "" "Ενεργοποιεί το Floating Point Result Flag υπολογισμό, απαραίτητο για μερικά " "παιχνίδια. (Ενεργό = Συμβατότητα, Ανενεργό = Ταχύτητα)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3467,7 +3554,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3497,7 +3584,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3533,7 +3620,7 @@ msgstr "" msgid "Encoding" msgstr "Κωδικοποίηση" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3546,12 +3633,12 @@ msgid "Enet Didn't Initialize" msgstr "" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Αγγλικά" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3561,7 +3648,7 @@ msgstr "Βελτιώσεις" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "" @@ -3575,11 +3662,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "Εισαγωγή κωδικού" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "" @@ -3588,65 +3675,68 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Σφάλμα" @@ -3661,19 +3751,19 @@ msgstr "" "Αποτυχία φόρτωσης της επιλεγμένης γλώσσας. Επαναφορά στην προεπιλογή " "συστήματος." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3693,7 +3783,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3743,11 +3833,11 @@ msgid "" "may not show fonts correctly, or crash." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3756,11 +3846,39 @@ msgstr "" msgid "Euphoria" msgstr "Euphoria" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Ευρώπη" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3809,30 +3927,30 @@ msgstr "" msgid "Experimental" msgstr "Πειραματικός" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Εξαγωγή Όλων Των Αποθηκεύσεων Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" -msgstr "" +msgstr "Η Εξαγωγή Απέτυχε" #: Source/Core/Core/HotkeyManager.cpp:56 msgid "Export Recording" msgstr "Εξαγωγή Εγγραφής" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Εξαγωγή Εγγραφής..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3844,22 +3962,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Επέκταση" @@ -3872,7 +3990,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3880,7 +3998,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "" @@ -3918,7 +4036,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "Αναπαραγωγή FIFO" @@ -3926,17 +4044,17 @@ msgstr "Αναπαραγωγή FIFO" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -3948,7 +4066,7 @@ msgstr "" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -3969,12 +4087,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -3986,19 +4104,19 @@ msgstr "" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Αποτυχία μεταφόρτωσης κωδικών." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -4007,7 +4125,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "" @@ -4030,29 +4148,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "" @@ -4068,23 +4186,23 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "" @@ -4096,11 +4214,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "" @@ -4111,7 +4229,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "" @@ -4138,11 +4256,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "" @@ -4151,7 +4269,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4163,7 +4281,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4171,25 +4289,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4204,15 +4322,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4220,23 +4338,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4244,11 +4362,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Αποτυχία εγγραφής του BT.DINF στο SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4256,22 +4374,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4280,19 +4398,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "Αποτυχία" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4305,7 +4423,7 @@ msgstr "Γρήγορη" msgid "Fast Depth Calculation" msgstr "Γρήγορος Υπολογισμός Βάθους" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4318,11 +4436,11 @@ msgstr "" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:46 msgid "File Details" -msgstr "" +msgstr "Πληροφορίες Αρχείου" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "" @@ -4336,30 +4454,30 @@ msgstr "Πληροφορίες Αρχείου" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Όνομα Αρχείου" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "Διαδρομή Αρχείου" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Μέγεθος Αρχείου" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:58 msgid "File Size:" -msgstr "" +msgstr "Μέγεθος Αρχείου:" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "Το αρχείο δεν περιείχε κωδικούς." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4373,11 +4491,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4385,15 +4503,15 @@ msgstr "" msgid "Filesystem" msgstr "Αρχεία δίσκου" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" -msgstr "" +msgstr "Φίλτρα" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4401,11 +4519,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "" @@ -4419,18 +4537,22 @@ msgid "" "This can take a while." msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Επιδιόρθωση Checksum" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4440,13 +4562,14 @@ msgstr "" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "" @@ -4470,7 +4593,7 @@ msgstr "" msgid "Force 16:9" msgstr "Επιβολή 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "Επιβολή Χρώματος 24-Bit" @@ -4478,15 +4601,15 @@ msgstr "Επιβολή Χρώματος 24-Bit" msgid "Force 4:3" msgstr "Επιβολή 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Επιβολή Φιλτραρίσματος Υφών" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4496,7 +4619,7 @@ msgid "" "" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4515,21 +4638,21 @@ msgstr "" msgid "Forward" msgstr "Μπροστά" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Προώθηση θύρας (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "" @@ -4558,7 +4681,7 @@ msgstr "" msgid "Frame Range" msgstr "Εύρος Καρέ" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4570,19 +4693,19 @@ msgstr "Καρέ για Εγγραφή:" msgid "France" msgstr "Γαλλία" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4590,7 +4713,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -4998,7 +5121,7 @@ msgstr "Αριστερό Πράσινο" msgid "Green Right" msgstr "Δεξί Πράσινο" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "Προβολή Πλέγματος" @@ -5011,7 +5134,7 @@ msgstr "Κιθάρα" msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5024,12 +5147,29 @@ msgstr "Hacks" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5041,19 +5181,19 @@ msgstr "" msgid "Hide" msgstr "Απόκρυψη" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5071,21 +5211,27 @@ msgstr "Μέγιστη" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Host" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5093,7 +5239,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5101,11 +5247,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "" @@ -5117,7 +5263,7 @@ msgstr "" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "" @@ -5168,11 +5314,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "Ρυθμίσεις IPL" @@ -5181,7 +5327,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "Ευαισθησία IR:" @@ -5203,22 +5349,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Εικονίδιο" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5265,7 +5411,7 @@ msgstr "Αγνόηση Αλλαγών Format" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5273,7 +5419,7 @@ msgid "" "checked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5294,41 +5440,50 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" " Time elapsed: %1s" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5381,8 +5536,8 @@ msgstr "Πληροφορίες" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Πληροφορίες" @@ -5391,10 +5546,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Είσοδος" @@ -5408,16 +5563,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Εισαγωγή Κάρτας SD" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "Εγκατάσταση" @@ -5429,7 +5590,7 @@ msgstr "" msgid "Install Update" msgstr "Εγκατάσταση Ενημέρωσης" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "Εγκατάσταση WAD..." @@ -5445,11 +5606,11 @@ msgstr "" msgid "Instruction" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "" @@ -5467,7 +5628,7 @@ msgid "Interface" msgstr "Διεπαφή" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Εσωτερικό Σφάλμα LZO - αποτυχία συμπίεσης" @@ -5476,27 +5637,27 @@ msgstr "Εσωτερικό Σφάλμα LZO - αποτυχία συμπίεση msgid "Internal LZO Error - decompression failed" msgstr "" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Εσωτερικό Σφάλμα LZO - αποτυχία lzo_init()" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "Εσωτερική Ανάλυση" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Εσωτερική Ανάλυση:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5504,11 +5665,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "Interpreter (πιο αργή απ' όλες)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5516,7 +5677,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5525,15 +5686,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5541,11 +5702,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "Μη έγκυρος host" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "" @@ -5558,31 +5719,31 @@ msgstr "" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Μη έγκυρο αρχείο εγγραφής" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Μη έγκυρες παράμετροι αναζήτησης (δεν επιλέχθηκε αντικείμενο)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Μη έγκυρο string αναζήτησης (δεν μπορεί να γίνει μετατροπή σε νούμερο)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "Μη έγκυρο string αναζήτησης (μόνο ζυγά μήκη string υποστηρίζονται)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "" @@ -5591,8 +5752,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Ιταλικά" @@ -5600,11 +5761,11 @@ msgstr "Ιταλικά" msgid "Italy" msgstr "Ιταλία" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "" @@ -5612,47 +5773,47 @@ msgstr "" msgid "JIT Blocks" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5664,11 +5825,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5679,12 +5840,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Ιαπωνία" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Ιαπωνικά" @@ -5704,12 +5865,12 @@ msgstr "Διατήρηση Παραθύρου στην Κορυφή" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Πληκτρολόγιο" @@ -5722,20 +5883,20 @@ msgstr "Πληκτρολόγιο" msgid "Keys" msgstr "Πλήκτρα" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Διώξιμο Παίκτη" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Κορέα" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Κορεάτικα" @@ -5763,7 +5924,7 @@ msgstr "" msgid "Label" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5843,15 +6004,15 @@ msgstr "" msgid "License" msgstr "Άδεια" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "Λίστα Στηλών" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "Προβολή Λίστας" @@ -5860,17 +6021,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Φόρτωσ." -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "" @@ -5878,7 +6039,7 @@ msgstr "" msgid "Load Custom Textures" msgstr "Φόρτωση Τροποποιημένων Υφών" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "Φόρτωση Κυρίως Μενού GameCube" @@ -5887,7 +6048,7 @@ msgstr "Φόρτωση Κυρίως Μενού GameCube" msgid "Load Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -5980,23 +6141,23 @@ msgstr "Φόρτωση Σημείου Αποθήκευσης 8" msgid "Load State Slot 9" msgstr "Φόρτωση Σημείου Αποθήκευσης 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "" @@ -6004,12 +6165,12 @@ msgstr "" msgid "Load from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "" @@ -6017,7 +6178,7 @@ msgstr "" msgid "Load..." msgstr "Φόρτωση..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "" @@ -6028,7 +6189,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "" @@ -6037,7 +6198,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Καταγραφή" @@ -6045,7 +6206,7 @@ msgstr "Καταγραφή" msgid "Log Configuration" msgstr "Ρυθμίσεις Καταγραφής" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6072,7 +6233,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "" @@ -6101,7 +6262,7 @@ msgstr "MMU" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6111,7 +6272,7 @@ msgstr "Κύριο Stick" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Δημιουργός" @@ -6120,7 +6281,7 @@ msgstr "Δημιουργός" msgid "Maker:" msgstr "Δημιουργός:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6128,7 +6289,7 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "Διαχείριση NAND" @@ -6136,7 +6297,7 @@ msgstr "Διαχείριση NAND" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6144,15 +6305,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6161,7 +6322,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "" "Μπορεί να προκαλέσει καθυστερήσεις στο Μενού του Wii και σε ορισμένα " @@ -6172,11 +6333,11 @@ msgstr "" msgid "Medium" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "Μνήμη" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "" @@ -6184,7 +6345,7 @@ msgstr "" msgid "Memory Card" msgstr "Κάρτα Μνήμης" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "Διαχειριστής Καρτών Μνήμης" @@ -6202,7 +6363,7 @@ msgstr "" msgid "Memory Override" msgstr "Παράκαμψη Μνήμης" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "" @@ -6218,7 +6379,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6226,13 +6387,13 @@ msgid "" "want to continue?" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "MiB" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Μικρόφωνο" @@ -6240,19 +6401,19 @@ msgstr "Μικρόφωνο" msgid "Misc" msgstr "Διάφορα" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Διάφορες Ρυθμίσεις" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6275,12 +6436,12 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6292,11 +6453,11 @@ msgstr "" msgid "Monospaced Font" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6336,10 +6497,10 @@ msgstr "Ταινία" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "Έλεγχος NAND " @@ -6347,26 +6508,26 @@ msgstr "Έλεγχος NAND " msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "Όνομα" @@ -6378,37 +6539,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Όνομα:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Αρχική (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6416,18 +6577,18 @@ msgstr "" msgid "Netherlands" msgstr "Ολλανδία" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" "Το NetPlay έχει αποσυγχρονιστεί. Δεν υπάρχει κανένας τρόπος για να " "επανέλθετε από αυτό." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "" @@ -6448,11 +6609,11 @@ msgstr "" msgid "New" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "Νέα Αναζήτηση" @@ -6460,7 +6621,7 @@ msgstr "Νέα Αναζήτηση" msgid "New Tag..." msgstr "Νέα Ετικέτα..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "" @@ -6477,7 +6638,7 @@ msgstr "" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6486,17 +6647,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Ψευδώνυμο:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "Όχι" @@ -6504,6 +6665,10 @@ msgstr "Όχι" msgid "No Adapter Detected" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "Καμία Έξοδος Ήχου" @@ -6514,24 +6679,20 @@ msgstr "Καμία Έξοδος Ήχου" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Μη διαθέσιμη περιγραφή" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "Κανένα σφάλμα." @@ -6543,15 +6704,15 @@ msgstr "" msgid "No file loaded / recorded." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "Δεν εντοπίστηκαν προβλήματα." @@ -6559,11 +6720,15 @@ msgstr "Δεν εντοπίστηκαν προβλήματα." msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "Δεν βρέθηκαν προβλήματα." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6574,7 +6739,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6582,17 +6747,13 @@ msgstr "" msgid "No save data found." msgstr "Δεν βρέθηκαν δεδομένα αποθήκευσης." -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6602,7 +6763,7 @@ msgstr "Καμία" msgid "North America" msgstr "Βόρεια Αμερική" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "Δεν Βρέθηκε" @@ -6610,11 +6771,11 @@ msgstr "Δεν Βρέθηκε" msgid "Not Set" msgstr "Μη Ορισμένο" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6622,7 +6783,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6682,13 +6843,13 @@ msgstr "" msgid "Nunchuk Stick" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6701,11 +6862,11 @@ msgid "Oceania" msgstr "Ωκεανία" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Ανενεργός" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6717,17 +6878,17 @@ msgstr "" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "Online &Εγχειρίδια " -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6742,7 +6903,7 @@ msgstr "Άνοιγμα" msgid "Open &Containing Folder" msgstr "Άνοιγμα &Περιεχόμενου Φακέλου" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "" @@ -6790,7 +6951,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6808,7 +6969,7 @@ msgstr "Ρυθμίσεις" msgid "Orange" msgstr "Πορτοκαλί" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6816,7 +6977,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Άλλα" @@ -6829,11 +6990,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "" @@ -6841,12 +7002,12 @@ msgstr "" msgid "Overlay Information" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "Α&ναπαραγωγή Εγγραφής Χειρισμών..." -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -6871,7 +7032,7 @@ msgstr "" msgid "PPC Size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6888,7 +7049,7 @@ msgstr "Χειριστήρια" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6897,23 +7058,23 @@ msgstr "" msgid "Parsing Error" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "Παθητική" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "Κωδικός" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "Κωδικός;" @@ -6934,7 +7095,7 @@ msgid "Path:" msgstr "" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Φάκελοι" @@ -6942,7 +7103,7 @@ msgstr "Φάκελοι" msgid "Pause" msgstr "Παύση" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "Παύση στο Τέλος της Ταινίας" @@ -6965,11 +7126,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Φωτισμός ανά Pixel" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "Εκτελέστε Διαδικτυακή Ενημέρωση Συστήματος" @@ -6979,23 +7140,23 @@ msgstr "Εκτέλεση Ενημέρωσης Συστήματος" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "PiB" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "Ping" @@ -7008,7 +7169,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Πλατφόρμα" @@ -7028,16 +7189,16 @@ msgstr "Αναπαραγωγή Εγγραφής" msgid "Playback Options" msgstr "Ρυθμίσεις Αναπαραγωγής" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Παίχτες" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7048,29 +7209,29 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "Θύρα:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Post-Processing Εφέ:" @@ -7082,15 +7243,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "Προφόρτωση Τροποποιημένων Υφών" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7127,7 +7288,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7138,15 +7299,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7154,25 +7315,25 @@ msgstr "" msgid "Problem" msgstr "Πρόβλημα" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Προφίλ" @@ -7186,15 +7347,15 @@ msgstr "" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "Δημόσιος" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "Εκκαθάριση Μνήμης Cache Λίστας Παιχνιδιών " -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7206,11 +7367,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "" @@ -7220,12 +7381,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Ερώτηση" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Έξοδος" @@ -7245,11 +7406,11 @@ msgstr "R-Αναλογική" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7262,44 +7423,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Εύρος" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "" @@ -7307,11 +7468,11 @@ msgstr "" msgid "Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Πραγματική Σανίδα Ισορροπίας" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "Πραγματικό Wii Remote" @@ -7324,11 +7485,11 @@ msgstr "" msgid "Record" msgstr "Εγγραφή" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7353,7 +7514,7 @@ msgstr "Αριστερό Κόκκινο" msgid "Red Right" msgstr "Δεξί Κόκκινο" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7369,16 +7530,16 @@ msgstr "Redump.org Κατάσταση:" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Ανανέωση" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7386,26 +7547,26 @@ msgstr "" msgid "Refresh Game List" msgstr "Ανανέωση Λίστας Παιχνιδιών" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "Ανανέωση..." #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Περιοχή" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "Περιοχή:" @@ -7425,16 +7586,16 @@ msgstr "" msgid "Remind Me Later" msgstr "Υπενθύμιση Αργότερα" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Αφαίρεση" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7457,8 +7618,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "" @@ -7491,29 +7652,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Επανεκκίνηση" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7521,15 +7690,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7541,11 +7710,11 @@ msgstr "Απαιτείται Επανεκκίνηση" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Επανάληψη" @@ -7554,7 +7723,7 @@ msgstr "Επανάληψη" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7612,11 +7781,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7625,12 +7794,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7640,11 +7810,11 @@ msgstr "" msgid "Rumble" msgstr "Δόνηση" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7652,15 +7822,15 @@ msgstr "" msgid "Russia" msgstr "Ρωσία" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "SD Κάρτα" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "" @@ -7676,7 +7846,7 @@ msgstr "" msgid "SHA-1:" msgstr "SHA-1:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "SP1:" @@ -7690,11 +7860,11 @@ msgstr "" msgid "START" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "Απ&οθήκευση Σημείου Αποθήκευσης" @@ -7704,7 +7874,7 @@ msgid "Safe" msgstr "Ασφαλής" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7717,7 +7887,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7738,11 +7908,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7754,7 +7924,7 @@ msgstr "Αποθήκευση Παλαιότερου Σημείου" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7804,23 +7974,23 @@ msgstr "Αποθήκευση Σημείου Αποθήκευσης 8" msgid "Save State Slot 9" msgstr "Αποθήκευση Σημείου Αποθήκευσης 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "" @@ -7828,7 +7998,7 @@ msgstr "" msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "" @@ -7840,26 +8010,26 @@ msgstr "" msgid "Save as..." msgstr "Αποθήκευση ως..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "" @@ -7867,7 +8037,7 @@ msgstr "" msgid "Save to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "" @@ -7875,23 +8045,23 @@ msgstr "" msgid "Save..." msgstr "Αποθήκευση..." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Κλιμακούμενα EFB Αντίγραφα" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7899,36 +8069,36 @@ msgstr "" msgid "ScrShot" msgstr "Στιγμιότυπο" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Αναζήτηση" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Αναζήτηση σε Υποφακέλους" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "" @@ -7936,7 +8106,7 @@ msgstr "" msgid "Search games..." msgstr "Αναζήτηση παιχνιδιών..." -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "" @@ -7960,28 +8130,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Επιλογή" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -7989,11 +8159,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -8001,7 +8171,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "Επιλογή Θέσης %1 - %2" @@ -8009,7 +8179,7 @@ msgstr "Επιλογή Θέσης %1 - %2" msgid "Select State" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Επιλογή Θέσης Αποθήκευσης" @@ -8053,41 +8223,45 @@ msgstr "Επιλέξτε Θέση 8" msgid "Select State Slot 9" msgstr "Επιλέξτε Θέση 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "Επιλέξτε ένα Φάκελο" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "Επιλέξτε ένα Αρχείο" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "Επιλέξτε ένα Παιχνίδι" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "Επιλέξτε ένα παιχνίδι" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "Επιλέξτε ένα αρχείο για εγκατάσταση στην NAND" @@ -8095,11 +8269,11 @@ msgstr "Επιλέξτε ένα αρχείο για εγκατάσταση στ msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8107,12 +8281,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Επιλέξτε αρχείο αποθήκευσης" @@ -8128,15 +8302,15 @@ msgstr "" msgid "Selected Font" msgstr "Επιλεγμένη Γραμματοσειρά" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "Το επιλεγμένο προφίλ χειρισμού δεν υπάρχει" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8160,7 +8334,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8200,11 +8374,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Αποστολή" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Θέση Sensor Bar:" @@ -8216,56 +8390,64 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "Ορισμός ως &Προεπιλεγμένου ISO" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8275,7 +8457,7 @@ msgstr "" "(576i) για τα PAL παιχνίδια.\n" "Μπορεί να μην λειτουργεί για όλα τα παιχνίδια." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Ορίζει την γλώσσα συστήματος του Wii." @@ -8285,7 +8467,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8320,11 +8502,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Εμφάνιση Παραθύρου Κατα&γραφής " -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Εμφάνιση Γραμμής &Εργαλείων" @@ -8332,15 +8514,15 @@ msgstr "Εμφάνιση Γραμμής &Εργαλείων" msgid "Show Active Title in Window Title" msgstr "Εμφάνιση Ενεργού Τίτλου στον Τίτλο Παραθύρου" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Εμφάνιση Αυστραλίας" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "Εμφάνιση Τρέχοντος Παιχνιδιού σε Discord" @@ -8348,7 +8530,7 @@ msgstr "Εμφάνιση Τρέχοντος Παιχνιδιού σε Discord" msgid "Show Debugging UI" msgstr "Εμφάνιση Διεπαφής Αποσφαλμάτωσης" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "Εμφάνιση ELF/DOL" @@ -8356,43 +8538,43 @@ msgstr "Εμφάνιση ELF/DOL" msgid "Show FPS" msgstr "Εμφάνιση FPS" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Εμφάνιση Μετρητή Καρέ" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Εμφάνιση Γαλλίας" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "Εμφάνιση GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Εμφάνιση Γερμανίας" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Εμφάνιση Προβολής Χειρισμών" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Εμφάνιση Ιταλίας" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Εμφάνιση Κορέας" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Εμφάνιση Μετρητή Καθυστέρησης " @@ -8400,7 +8582,7 @@ msgstr "Εμφάνιση Μετρητή Καθυστέρησης " msgid "Show Language:" msgstr "Εμφάνιση Γλώσσας:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Εμφάνιση Ρυθμίσεων &Καταγραφέα" @@ -8412,7 +8594,7 @@ msgstr "Εμφάνιση Μηνυμάτων NetPlay" msgid "Show NetPlay Ping" msgstr "Εμφάνιση NetPlay Ping" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Εμφάνιση Ολλανδίας" @@ -8420,7 +8602,7 @@ msgstr "Εμφάνιση Ολλανδίας" msgid "Show On-Screen Display Messages" msgstr "Εμφάνιση Μηνυμάτων στην Οθόνη " -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Εμφάνιση PAL" @@ -8429,23 +8611,23 @@ msgstr "Εμφάνιση PAL" msgid "Show PC" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Εμφάνιση Πλατφόρμας" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Εμφάνιση Περιοχών" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Εμφάνιση Ρωσίας" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "Εμφάνιση Ισπανίας" @@ -8454,46 +8636,50 @@ msgstr "Εμφάνιση Ισπανίας" msgid "Show Statistics" msgstr "Εμφάνιση Στατιστικών" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "Εμφάνιση Ώρας Συστήματος" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Εμφάνιση Ταϊβάν" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Εμφάνιση USA" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Εμφάνιση Αγνώστων" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "Εμφάνιση WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Εμφάνιση Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Εμφάνιση Κόσμου" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8525,7 +8711,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Δίπλα - Δίπλα" @@ -8541,16 +8727,31 @@ msgstr "" msgid "Sideways Wii Remote" msgstr "Πλαγιαστό Wii Remote" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Κινέζικα Απλοποιημένα" @@ -8558,7 +8759,7 @@ msgstr "Κινέζικα Απλοποιημένα" msgid "Simulate DK Bongos" msgstr "Προσομοίωση DK Bongos" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8585,7 +8786,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "Παράλειψη EFB Πρόσβασης από τη CPU" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "Παράλειψη Κύριου Μενού" @@ -8593,7 +8794,7 @@ msgstr "Παράλειψη Κύριου Μενού" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8607,19 +8808,19 @@ msgstr "" msgid "Slider Bar" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Θέση Α" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "Θέση Α:" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Θέση Β" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "Θέση Β:" @@ -8637,7 +8838,7 @@ msgstr "" msgid "Software Renderer" msgstr "Απεικόνιση Λογισμικού" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8654,11 +8855,11 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "" @@ -8671,8 +8872,8 @@ msgid "Spain" msgstr "Ισπανία" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Ισπανικά" @@ -8680,7 +8881,7 @@ msgstr "Ισπανικά" msgid "Speaker Pan" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Ένταση Ηχείου:" @@ -8715,7 +8916,7 @@ msgstr "Ταχύτητα" msgid "Speed up Disc Transfer Rate" msgstr "Επιτάχυνση του Ρυθμού Μεταφοράς από τον Δίσκο" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "Stable (μια φορά τον χρόνο)" @@ -8727,16 +8928,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Τυπικός Controller" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Εκκίνηση" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "Έναρξη &NetPlay..." @@ -8744,11 +8945,13 @@ msgstr "Έναρξη &NetPlay..." msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "Εκκίνηση Ε&γγραφής Χειρισμών" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Εκκίνηση Εγγραφής" @@ -8764,7 +8967,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "Εκκίνηση παιχνιδιού" @@ -8775,7 +8978,7 @@ msgstr "Εκκίνηση παιχνιδιού" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Τιμόνι" @@ -8803,19 +9006,19 @@ msgstr "" msgid "Step Over" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "" @@ -8824,20 +9027,20 @@ msgstr "" msgid "Stepping" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Στερεοσκοπική 3D Λειτουργία:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Στερεοσκοπία" @@ -8858,11 +9061,15 @@ msgstr "Stick" msgid "Stop" msgstr "Διακοπή" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "Διακοπή παιχνιδιού" @@ -8876,7 +9083,7 @@ msgstr "Αποθήκευση EFB Αντιγράφων Μόνο σε Υφή" msgid "Store XFB Copies to Texture Only" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8885,7 +9092,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8898,7 +9105,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Προσαρμογή στο Παράθυρο" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "" @@ -8921,16 +9128,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "Επιτυχία" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -8940,11 +9147,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "Επιτυχής διαγραφή '%1'." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -8953,7 +9160,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "" @@ -8965,12 +9172,12 @@ msgstr "" msgid "Successfully extracted system data." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "" @@ -8982,16 +9189,16 @@ msgstr "" msgid "Support" msgstr "Υποστήριξη" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -8999,11 +9206,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Εναλλαγή Ματιών" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9015,50 +9222,62 @@ msgstr "" msgid "Swing" msgstr "Swing" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "Συγχρονισμός" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "" @@ -9072,37 +9291,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Γλώσσα Συστήματος:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "TAS Είσοδος" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "Ετικέτες" @@ -9120,11 +9339,11 @@ msgstr "" msgid "Taiwan" msgstr "Ταϊβάν" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Δημιουργία Στιγμιότυπου" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Τέστ" @@ -9133,7 +9352,7 @@ msgstr "Τέστ" msgid "Texture Cache" msgstr "Cache Υφών" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9155,7 +9374,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9169,13 +9388,13 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "" @@ -9211,7 +9430,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9225,7 +9444,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9247,19 +9466,19 @@ msgstr "" msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9309,7 +9528,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9320,7 +9539,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9337,7 +9556,7 @@ msgstr "" msgid "The hashes match!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9359,12 +9578,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9380,20 +9599,20 @@ msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "" "Το αποτέλεσμα αποκρυπτογράφησης του κωδικού AR δεν περιέχει καθόλου γραμμές." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9414,7 +9633,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9465,7 +9684,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "Δεν υπάρχει τίποτα προς αναίρεση!" @@ -9502,7 +9721,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "" @@ -9522,7 +9741,7 @@ msgstr "" "Αυτός ο προσομοιωτής action replay δεν υποστηρίζει κωδικούς που αλλάζουν το " "ίδιο το Action Replay." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "" @@ -9562,7 +9781,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr " Αυτό το αρχείο δεν δείχνει για αντίγραφο ασφαλείας BootMii NAND." @@ -9580,27 +9803,27 @@ msgid "" "or freezes while running this game." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9658,13 +9881,13 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9684,7 +9907,7 @@ msgstr "" msgid "Threshold" msgstr "Κατώφλι" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "" @@ -9701,22 +9924,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Τίτλος" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "Εώς" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "Εναλλαγή &Πλήρους Οθόνης" @@ -9741,7 +9964,7 @@ msgid "Toggle Aspect Ratio" msgstr "Εναλλαγή Αναλογίας Οθόνης" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "" @@ -9801,14 +10024,20 @@ msgstr "" msgid "Toolbar" msgstr "Γραμμή εργαλείων" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Κορυφή" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Πάνω - Κάτω" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9843,20 +10072,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Κινέζικα Παραδοσιακά " -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "" @@ -9886,20 +10115,12 @@ msgstr "Σκανδάλες" msgid "Type" msgstr "Τύπος" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9916,9 +10137,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -9946,10 +10167,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -9966,7 +10191,11 @@ msgid "" "Would you like to ignore this line and continue parsing?" msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -9978,15 +10207,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Αναίρεση Φόρτωσης Σημείου Αποθ. " -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Αναίρεση Αποθήκευσης Σημείου Αποθ. " -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "" @@ -10000,18 +10229,18 @@ msgid "" "title from the NAND without deleting its save data. Continue?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "Ηνωμένες Πολιτείες" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Άγνωστο" @@ -10019,7 +10248,7 @@ msgstr "Άγνωστο" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10029,7 +10258,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10039,15 +10268,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10055,19 +10284,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10075,7 +10304,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Απεριόριστη" @@ -10091,13 +10320,28 @@ msgstr "" msgid "Unpacking" msgstr "Αποσυμπίεση" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10106,7 +10350,7 @@ msgstr "Πάνω" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Ενημέρωση" @@ -10163,7 +10407,7 @@ msgstr "" msgid "Upright Wii Remote" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "" @@ -10179,7 +10423,7 @@ msgstr "" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "Χρήση Λειτουργίας PAL60 (EuRGB60)" @@ -10205,18 +10449,40 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "Ρυθμίσεις Χρήστη" @@ -10229,18 +10495,18 @@ msgstr "Διεπαφή Χρήστη" msgid "User Style:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10266,23 +10532,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10295,7 +10561,7 @@ msgstr "Εργαλεία" msgid "V-Sync" msgstr "Κάθετος Συγχρονισμός" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Τιμή" @@ -10328,8 +10594,8 @@ msgstr "" msgid "Verifying" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "Έκδοση" @@ -10365,7 +10631,7 @@ msgstr "" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10392,7 +10658,7 @@ msgstr "Αύξηση Έντασης" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "WAD αρχεία (*.wad)" @@ -10440,7 +10706,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10448,8 +10714,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10471,7 +10737,7 @@ msgid "" "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10484,10 +10750,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Προειδοποίηση" @@ -10503,28 +10769,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10550,7 +10816,7 @@ msgstr "" msgid "Watch" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "Ιστοσελίδα" @@ -10579,11 +10845,11 @@ msgid "" "unsure, leave this checked." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Hack Ευρείας Οθόνης" @@ -10599,11 +10865,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Wii Μενού" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Wii NAND Ρίζα:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "" @@ -10611,8 +10877,8 @@ msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "" @@ -10625,11 +10891,11 @@ msgstr "Wii Remote Κουμπιά" msgid "Wii Remote Orientation" msgstr "Wii Remote Προσανατολισμός" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Wii Remote Ρυθμίσεις" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "" @@ -10645,7 +10911,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "" @@ -10653,7 +10919,7 @@ msgstr "" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "" @@ -10681,18 +10947,18 @@ msgid "World" msgstr "Κόσμος" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "" @@ -10705,12 +10971,12 @@ msgid "Write to File" msgstr "Εγγραφή σε Αρχείο" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "" @@ -10718,7 +10984,7 @@ msgstr "" msgid "Write to Window" msgstr "Εγγραφή στο Παράθυρο" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10729,7 +10995,7 @@ msgstr "" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "XF Καταχωρητές" @@ -10758,8 +11024,8 @@ msgid "Yellow" msgstr "Κίτρινο" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "Ναι" @@ -10794,7 +11060,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10823,11 +11089,11 @@ msgstr "" msgid "You have to enter a name." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10836,7 +11102,7 @@ msgid "You must restart Dolphin in order for the change to take effect." msgstr "" "Πρέπει να κάνετε επανεκκίνηση του Dolphin για να έχει επίπτωση αυτή η αλλαγή." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "" @@ -10867,23 +11133,23 @@ msgstr "Δεν υποστηρίζεται ο Zero 3 code" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10902,13 +11168,13 @@ msgstr "" msgid "d3d12.dll could not be loaded." msgstr "d3d12.dll δεν μπόρεσε να φορτώσει." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "αποσύνδεση" @@ -10924,31 +11190,31 @@ msgstr "" msgid "fake-completion" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -10978,7 +11244,7 @@ msgstr "" msgid "on" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "" @@ -10987,7 +11253,7 @@ msgstr "" msgid "s" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -10996,7 +11262,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -11015,7 +11281,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -11034,7 +11300,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11042,7 +11308,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Languages/po/en.po b/Languages/po/en.po index 3e47ffd5026f..f9ee3dfff1be 100644 --- a/Languages/po/en.po +++ b/Languages/po/en.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emu\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" "PO-Revision-Date: 2011-01-06 14:53+0100\n" "Last-Translator: BhaaL \n" "Language-Team: \n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -24,7 +24,7 @@ msgid "" "problems that Dolphin is unable to detect." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -32,7 +32,7 @@ msgid "" "that it hasn't been tampered with." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -48,7 +48,7 @@ msgstr "" msgid " (Disc %1)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "" @@ -56,7 +56,7 @@ msgstr "" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -70,7 +70,7 @@ msgstr "" msgid "%" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -84,17 +84,17 @@ msgstr "" msgid "%1 %" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "" @@ -113,7 +113,7 @@ msgid "%1 (Revision %3)" msgstr "" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -150,7 +150,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "" @@ -161,23 +161,23 @@ msgid "" "Current Frame: %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -186,11 +186,11 @@ msgstr "" msgid "%1 ms" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "" @@ -202,15 +202,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -226,30 +226,30 @@ msgstr "" msgid "%1[%2]: %3/%4 MiB" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "" @@ -269,7 +269,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "" @@ -278,11 +278,11 @@ msgid "&Add Memory Breakpoint" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "" @@ -290,19 +290,19 @@ msgstr "" msgid "&Add..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "" @@ -310,11 +310,11 @@ msgstr "" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "" @@ -322,15 +322,15 @@ msgstr "" msgid "&Cancel" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "" @@ -338,7 +338,7 @@ msgstr "" msgid "&Clone..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "" @@ -346,19 +346,20 @@ msgstr "" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "" @@ -370,7 +371,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "" @@ -378,11 +379,11 @@ msgstr "" msgid "&Edit..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "" @@ -394,43 +395,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "" @@ -442,11 +447,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "" @@ -454,7 +459,7 @@ msgstr "" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "" @@ -462,23 +467,23 @@ msgstr "" msgid "&Language:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "" @@ -486,7 +491,7 @@ msgstr "" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "" @@ -494,24 +499,24 @@ msgstr "" msgid "&No" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "" @@ -519,11 +524,11 @@ msgstr "" msgid "&Properties" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "" @@ -532,24 +537,24 @@ msgid "&Remove" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "" @@ -557,11 +562,11 @@ msgstr "" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "" @@ -569,11 +574,11 @@ msgstr "" msgid "&Theme:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "" @@ -581,17 +586,17 @@ msgstr "" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "" @@ -603,11 +608,11 @@ msgstr "" msgid "&Yes" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" @@ -619,7 +624,7 @@ msgstr "" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "" @@ -627,34 +632,34 @@ msgstr "" msgid "(ppc)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" @@ -662,6 +667,10 @@ msgstr "" msgid "128 Mbit (2043 blocks)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "" @@ -670,35 +679,35 @@ msgstr "" msgid "16-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "" @@ -710,25 +719,25 @@ msgstr "" msgid "32-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "" @@ -742,28 +751,32 @@ msgstr "" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "" @@ -771,29 +784,33 @@ msgstr "" msgid "64 Mbit (1019 blocks)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "" @@ -802,25 +819,25 @@ msgstr "" msgid "8-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "" @@ -839,12 +856,12 @@ msgid "" "Notes:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "" @@ -862,17 +879,17 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" @@ -881,7 +898,7 @@ msgstr "" msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -905,8 +922,8 @@ msgstr "" msgid "AR Codes" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "" @@ -929,7 +946,7 @@ msgstr "" msgid "Accuracy:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "" @@ -1025,9 +1042,9 @@ msgstr "" msgid "Adapter:" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "" @@ -1035,11 +1052,11 @@ msgstr "" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "" @@ -1071,46 +1088,49 @@ msgstr "" msgid "Add to &watch" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1154,39 +1174,43 @@ msgstr "" msgid "Africa" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "" @@ -1195,25 +1219,25 @@ msgstr "" msgid "All players' saves synchronized." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1239,7 +1263,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "" @@ -1257,39 +1281,39 @@ msgstr "" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1303,15 +1327,15 @@ msgstr "" msgid "Apply" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "" @@ -1319,11 +1343,11 @@ msgstr "" msgid "Are you sure you want to delete this file?" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "" @@ -1336,11 +1360,11 @@ msgid "Aspect Ratio" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "" @@ -1348,7 +1372,7 @@ msgstr "" msgid "Assign Controllers" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1373,7 +1397,7 @@ msgstr "" msgid "Australia" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "" @@ -1385,15 +1409,15 @@ msgstr "" msgid "Auto" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1409,7 +1433,7 @@ msgstr "" msgid "Auto-Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1420,12 +1444,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "" @@ -1440,11 +1464,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "" @@ -1470,7 +1494,7 @@ msgstr "" msgid "Backend:" msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "" @@ -1481,7 +1505,13 @@ msgstr "" msgid "Backward" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1489,19 +1519,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "" @@ -1525,7 +1556,7 @@ msgstr "" msgid "Basic" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "" @@ -1533,7 +1564,7 @@ msgstr "" msgid "Bass" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1541,11 +1572,11 @@ msgstr "" msgid "Battery" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1567,7 +1598,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "" @@ -1580,7 +1611,7 @@ msgstr "" msgid "Blocking" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "" @@ -1603,15 +1634,15 @@ msgid "" "Passthrough mode cannot be used." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "" @@ -1619,7 +1650,7 @@ msgstr "" msgid "Borderless Fullscreen" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "" @@ -1633,7 +1664,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "" @@ -1642,7 +1673,7 @@ msgstr "" msgid "Breakpoint" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" @@ -1672,7 +1703,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1680,12 +1711,12 @@ msgstr "" msgid "Buffer Size:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "" @@ -1727,11 +1758,11 @@ msgstr "" msgid "C Stick" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "" @@ -1762,7 +1793,7 @@ msgstr "" msgid "Calculate" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1782,15 +1813,15 @@ msgstr "" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1800,7 +1831,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1808,16 +1839,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "" @@ -1834,23 +1865,23 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "" @@ -1872,7 +1903,7 @@ msgstr "" msgid "Change &Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "" @@ -1880,15 +1911,15 @@ msgstr "" msgid "Change Disc" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1908,7 +1939,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "" @@ -1924,11 +1955,11 @@ msgstr "" msgid "Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "" @@ -1942,7 +1973,7 @@ msgid "" "whether it's still in use." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "" @@ -1950,16 +1981,16 @@ msgstr "" msgid "China" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -1982,14 +2013,14 @@ msgid "Classic Controller" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "" @@ -2006,28 +2037,47 @@ msgstr "" msgid "Close" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2045,7 +2095,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "" @@ -2058,7 +2108,7 @@ msgstr "" msgid "Compression:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "" @@ -2070,13 +2120,13 @@ msgstr "" msgid "Config" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2084,21 +2134,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "" @@ -2111,26 +2161,26 @@ msgstr "" msgid "Confirm on Stop" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "" @@ -2150,11 +2200,11 @@ msgstr "" msgid "Connect Wii Remote 4" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" @@ -2166,15 +2216,19 @@ msgstr "" msgid "Connected" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "" @@ -2187,7 +2241,7 @@ msgstr "" msgid "Control Stick" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "" @@ -2215,7 +2269,7 @@ msgstr "" msgid "Controllers" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2223,7 +2277,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2232,7 +2286,7 @@ msgid "" "Native." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2257,12 +2311,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "" @@ -2299,33 +2353,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "" @@ -2333,11 +2392,15 @@ msgstr "" msgid "Copy failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "" @@ -2352,16 +2415,16 @@ msgstr "" msgid "Cost" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "" @@ -2440,15 +2503,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2475,7 +2538,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "" @@ -2498,11 +2561,11 @@ msgstr "" msgid "Crossfade" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2510,7 +2573,7 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "" @@ -2518,7 +2581,7 @@ msgstr "" msgid "Current thread" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2549,7 +2612,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "" @@ -2577,7 +2640,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2585,11 +2648,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "" @@ -2601,28 +2664,27 @@ msgstr "" msgid "Data Transfer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2640,7 +2702,7 @@ msgid "Debug Only" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "" @@ -2682,7 +2744,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "" @@ -2698,7 +2760,7 @@ msgstr "" msgid "Default Font" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "" @@ -2723,7 +2785,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2738,11 +2800,11 @@ msgid "Delete Selected Files..." msgstr "" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2750,21 +2812,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "" @@ -2773,11 +2835,11 @@ msgstr "" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2785,25 +2847,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "" @@ -2815,11 +2877,15 @@ msgstr "" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "" @@ -2850,7 +2916,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "" @@ -2862,15 +2928,15 @@ msgstr "" msgid "Disable Emulation Speed Limit" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "" @@ -2878,7 +2944,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2892,7 +2958,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2909,11 +2975,15 @@ msgstr "" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2931,25 +3001,25 @@ msgstr "" msgid "Distance of travel from neutral position." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "" @@ -2966,9 +3036,9 @@ msgstr "" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "" @@ -2980,8 +3050,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "" @@ -3014,21 +3084,21 @@ msgstr "" msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3043,7 +3113,7 @@ msgstr "" msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "" @@ -3056,24 +3126,26 @@ msgid "Done compressing disc image." msgstr "" #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "" @@ -3081,11 +3153,11 @@ msgstr "" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "" @@ -3108,27 +3180,35 @@ msgstr "" msgid "Dual Core" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "" @@ -3140,7 +3220,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "" @@ -3152,7 +3232,7 @@ msgstr "" msgid "Dump Objects" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "" @@ -3249,16 +3329,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3270,7 +3350,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3298,7 +3378,7 @@ msgstr "" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3306,7 +3386,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "" @@ -3318,7 +3398,7 @@ msgstr "" msgid "Embedded Frame Buffer (EFB)" msgstr "" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "" @@ -3326,11 +3406,11 @@ msgstr "" msgid "Emu Thread already running" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "" @@ -3346,8 +3426,12 @@ msgstr "" msgid "Emulation Speed" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3363,7 +3447,7 @@ msgstr "" msgid "Enable Audio Stretching" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "" @@ -3375,7 +3459,7 @@ msgstr "" msgid "Enable Dual Core" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "" @@ -3401,19 +3485,19 @@ msgid "Enable Progressive Scan" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "" @@ -3439,7 +3523,7 @@ msgid "" "= Compatible, OFF = Fast)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3447,7 +3531,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3477,7 +3561,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3511,7 +3595,7 @@ msgstr "" msgid "Encoding" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3524,12 +3608,12 @@ msgid "Enet Didn't Initialize" msgstr "" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3539,7 +3623,7 @@ msgstr "" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "" @@ -3553,11 +3637,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "" @@ -3566,65 +3650,68 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "" @@ -3637,19 +3724,19 @@ msgstr "" msgid "Error loading selected language. Falling back to system default." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3669,7 +3756,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3719,11 +3806,11 @@ msgid "" "may not show fonts correctly, or crash." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3732,11 +3819,39 @@ msgstr "" msgid "Euphoria" msgstr "" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3785,14 +3900,14 @@ msgstr "" msgid "Experimental" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3800,15 +3915,15 @@ msgstr "" msgid "Export Recording" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3820,22 +3935,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "" @@ -3848,7 +3963,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3856,7 +3971,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "" @@ -3894,7 +4009,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "" @@ -3902,17 +4017,17 @@ msgstr "" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -3924,7 +4039,7 @@ msgstr "" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -3945,12 +4060,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -3962,19 +4077,19 @@ msgstr "" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -3983,7 +4098,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "" @@ -4006,29 +4121,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "" @@ -4044,23 +4159,23 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "" @@ -4072,11 +4187,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "" @@ -4087,7 +4202,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "" @@ -4114,11 +4229,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "" @@ -4127,7 +4242,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4139,7 +4254,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4147,25 +4262,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4180,15 +4295,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4196,23 +4311,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4220,11 +4335,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4232,22 +4347,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4256,19 +4371,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4281,7 +4396,7 @@ msgstr "" msgid "Fast Depth Calculation" msgstr "" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4298,7 +4413,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "" @@ -4312,18 +4427,18 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "" @@ -4331,11 +4446,11 @@ msgstr "" msgid "File Size:" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4349,11 +4464,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4361,15 +4476,15 @@ msgstr "" msgid "Filesystem" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4377,11 +4492,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "" @@ -4395,18 +4510,22 @@ msgid "" "This can take a while." msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4416,13 +4535,14 @@ msgstr "" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "" @@ -4446,7 +4566,7 @@ msgstr "" msgid "Force 16:9" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "" @@ -4454,15 +4574,15 @@ msgstr "" msgid "Force 4:3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4472,7 +4592,7 @@ msgid "" "" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4491,21 +4611,21 @@ msgstr "" msgid "Forward" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "" @@ -4534,7 +4654,7 @@ msgstr "" msgid "Frame Range" msgstr "" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4546,19 +4666,19 @@ msgstr "" msgid "France" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4566,7 +4686,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -4974,7 +5094,7 @@ msgstr "" msgid "Green Right" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "" @@ -4987,7 +5107,7 @@ msgstr "" msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "" @@ -5000,12 +5120,29 @@ msgstr "" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5017,19 +5154,19 @@ msgstr "" msgid "Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5047,21 +5184,27 @@ msgstr "" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5069,7 +5212,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5077,11 +5220,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "" @@ -5093,7 +5236,7 @@ msgstr "" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "" @@ -5144,11 +5287,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "" @@ -5157,7 +5300,7 @@ msgid "IR" msgstr "" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "" @@ -5179,22 +5322,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5241,7 +5384,7 @@ msgstr "" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5249,7 +5392,7 @@ msgid "" "checked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5270,41 +5413,50 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" " Time elapsed: %1s" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5357,8 +5509,8 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "" @@ -5367,10 +5519,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "" @@ -5384,16 +5536,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "" @@ -5405,7 +5563,7 @@ msgstr "" msgid "Install Update" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "" @@ -5421,11 +5579,11 @@ msgstr "" msgid "Instruction" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "" @@ -5443,7 +5601,7 @@ msgid "Interface" msgstr "" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "" @@ -5452,27 +5610,27 @@ msgstr "" msgid "Internal LZO Error - decompression failed" msgstr "" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5480,11 +5638,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5492,7 +5650,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5501,15 +5659,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5517,11 +5675,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "" @@ -5534,31 +5692,31 @@ msgstr "" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "" @@ -5567,8 +5725,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "" @@ -5576,11 +5734,11 @@ msgstr "" msgid "Italy" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "" @@ -5588,47 +5746,47 @@ msgstr "" msgid "JIT Blocks" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5640,11 +5798,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5655,12 +5813,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "" @@ -5680,12 +5838,12 @@ msgstr "" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "" @@ -5698,20 +5856,20 @@ msgstr "" msgid "Keys" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "" @@ -5739,7 +5897,7 @@ msgstr "" msgid "Label" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5816,15 +5974,15 @@ msgstr "" msgid "License" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "" @@ -5833,17 +5991,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "" @@ -5851,7 +6009,7 @@ msgstr "" msgid "Load Custom Textures" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "" @@ -5860,7 +6018,7 @@ msgstr "" msgid "Load Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -5953,23 +6111,23 @@ msgstr "" msgid "Load State Slot 9" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "" @@ -5977,12 +6135,12 @@ msgstr "" msgid "Load from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "" @@ -5990,7 +6148,7 @@ msgstr "" msgid "Load..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "" @@ -6001,7 +6159,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "" @@ -6010,7 +6168,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "" @@ -6018,7 +6176,7 @@ msgstr "" msgid "Log Configuration" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6045,7 +6203,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "" @@ -6074,7 +6232,7 @@ msgstr "" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6084,7 +6242,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "" @@ -6093,7 +6251,7 @@ msgstr "" msgid "Maker:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6101,7 +6259,7 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "" @@ -6109,7 +6267,7 @@ msgstr "" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6117,15 +6275,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6134,7 +6292,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "" @@ -6143,11 +6301,11 @@ msgstr "" msgid "Medium" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "" @@ -6155,7 +6313,7 @@ msgstr "" msgid "Memory Card" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "" @@ -6173,7 +6331,7 @@ msgstr "" msgid "Memory Override" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "" @@ -6189,7 +6347,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6197,13 +6355,13 @@ msgid "" "want to continue?" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "" @@ -6211,19 +6369,19 @@ msgstr "" msgid "Misc" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6246,12 +6404,12 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6263,11 +6421,11 @@ msgstr "" msgid "Monospaced Font" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6307,10 +6465,10 @@ msgstr "" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "" @@ -6318,26 +6476,26 @@ msgstr "" msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "" @@ -6349,37 +6507,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6387,16 +6545,16 @@ msgstr "" msgid "Netherlands" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "" @@ -6417,11 +6575,11 @@ msgstr "" msgid "New" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "" @@ -6429,7 +6587,7 @@ msgstr "" msgid "New Tag..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "" @@ -6446,7 +6604,7 @@ msgstr "" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6455,17 +6613,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "" @@ -6473,6 +6631,10 @@ msgstr "" msgid "No Adapter Detected" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "" @@ -6483,24 +6645,20 @@ msgstr "" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6512,15 +6670,15 @@ msgstr "" msgid "No file loaded / recorded." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "" @@ -6528,11 +6686,15 @@ msgstr "" msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6543,7 +6705,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6551,17 +6713,13 @@ msgstr "" msgid "No save data found." msgstr "" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6571,7 +6729,7 @@ msgstr "" msgid "North America" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "" @@ -6579,11 +6737,11 @@ msgstr "" msgid "Not Set" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6591,7 +6749,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6651,13 +6809,13 @@ msgstr "" msgid "Nunchuk Stick" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6670,11 +6828,11 @@ msgid "Oceania" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6686,17 +6844,17 @@ msgstr "" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6711,7 +6869,7 @@ msgstr "" msgid "Open &Containing Folder" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "" @@ -6759,7 +6917,7 @@ msgstr "" msgid "OpenGL ES" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6777,7 +6935,7 @@ msgstr "" msgid "Orange" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6785,7 +6943,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "" @@ -6798,11 +6956,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "" @@ -6810,12 +6968,12 @@ msgstr "" msgid "Overlay Information" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "" @@ -6840,7 +6998,7 @@ msgstr "" msgid "PPC Size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6857,7 +7015,7 @@ msgstr "" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6866,23 +7024,23 @@ msgstr "" msgid "Parsing Error" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "" @@ -6903,7 +7061,7 @@ msgid "Path:" msgstr "" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "" @@ -6911,7 +7069,7 @@ msgstr "" msgid "Pause" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "" @@ -6934,11 +7092,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "" @@ -6948,23 +7106,23 @@ msgstr "" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "" @@ -6977,7 +7135,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "" @@ -6997,16 +7155,16 @@ msgstr "" msgid "Playback Options" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7017,29 +7175,29 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "" @@ -7051,15 +7209,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7096,7 +7254,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7107,15 +7265,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7123,25 +7281,25 @@ msgstr "" msgid "Problem" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "" @@ -7155,15 +7313,15 @@ msgstr "" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7175,11 +7333,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "" @@ -7189,12 +7347,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "" @@ -7214,11 +7372,11 @@ msgstr "" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7231,44 +7389,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "" @@ -7276,11 +7434,11 @@ msgstr "" msgid "Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "" @@ -7293,11 +7451,11 @@ msgstr "" msgid "Record" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7322,7 +7480,7 @@ msgstr "" msgid "Red Right" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7338,16 +7496,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7355,26 +7513,26 @@ msgstr "" msgid "Refresh Game List" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "" @@ -7394,16 +7552,16 @@ msgstr "" msgid "Remind Me Later" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7426,8 +7584,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "" @@ -7460,29 +7618,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7490,15 +7656,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7510,11 +7676,11 @@ msgstr "" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "" @@ -7523,7 +7689,7 @@ msgstr "" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7581,11 +7747,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7594,12 +7760,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7609,11 +7776,11 @@ msgstr "" msgid "Rumble" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7621,15 +7788,15 @@ msgstr "" msgid "Russia" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "" @@ -7645,7 +7812,7 @@ msgstr "" msgid "SHA-1:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "" @@ -7659,11 +7826,11 @@ msgstr "" msgid "START" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "" @@ -7673,7 +7840,7 @@ msgid "Safe" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7686,7 +7853,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7707,11 +7874,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7723,7 +7890,7 @@ msgstr "" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7773,23 +7940,23 @@ msgstr "" msgid "Save State Slot 9" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "" @@ -7797,7 +7964,7 @@ msgstr "" msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "" @@ -7809,26 +7976,26 @@ msgstr "" msgid "Save as..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "" @@ -7836,7 +8003,7 @@ msgstr "" msgid "Save to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "" @@ -7844,23 +8011,23 @@ msgstr "" msgid "Save..." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7868,36 +8035,36 @@ msgstr "" msgid "ScrShot" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "" @@ -7905,7 +8072,7 @@ msgstr "" msgid "Search games..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "" @@ -7929,28 +8096,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -7958,11 +8125,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -7970,7 +8137,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "" @@ -7978,7 +8145,7 @@ msgstr "" msgid "Select State" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "" @@ -8022,41 +8189,45 @@ msgstr "" msgid "Select State Slot 9" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "" @@ -8064,11 +8235,11 @@ msgstr "" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8076,12 +8247,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "" @@ -8097,15 +8268,15 @@ msgstr "" msgid "Selected Font" msgstr "" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8129,7 +8300,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8169,11 +8340,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "" @@ -8185,63 +8356,71 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" "May not work for all games." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "" @@ -8251,7 +8430,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8286,11 +8465,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "" @@ -8298,15 +8477,15 @@ msgstr "" msgid "Show Active Title in Window Title" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "" @@ -8314,7 +8493,7 @@ msgstr "" msgid "Show Debugging UI" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "" @@ -8322,43 +8501,43 @@ msgstr "" msgid "Show FPS" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "" @@ -8366,7 +8545,7 @@ msgstr "" msgid "Show Language:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "" @@ -8378,7 +8557,7 @@ msgstr "" msgid "Show NetPlay Ping" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "" @@ -8386,7 +8565,7 @@ msgstr "" msgid "Show On-Screen Display Messages" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "" @@ -8395,23 +8574,23 @@ msgstr "" msgid "Show PC" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "" @@ -8420,46 +8599,50 @@ msgstr "" msgid "Show Statistics" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8491,7 +8674,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "" @@ -8507,16 +8690,31 @@ msgstr "" msgid "Sideways Wii Remote" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "" @@ -8524,7 +8722,7 @@ msgstr "" msgid "Simulate DK Bongos" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8551,7 +8749,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "" @@ -8559,7 +8757,7 @@ msgstr "" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8573,19 +8771,19 @@ msgstr "" msgid "Slider Bar" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "" @@ -8603,7 +8801,7 @@ msgstr "" msgid "Software Renderer" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8620,11 +8818,11 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "" @@ -8637,8 +8835,8 @@ msgid "Spain" msgstr "" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "" @@ -8646,7 +8844,7 @@ msgstr "" msgid "Speaker Pan" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "" @@ -8681,7 +8879,7 @@ msgstr "" msgid "Speed up Disc Transfer Rate" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "" @@ -8693,16 +8891,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "" @@ -8710,11 +8908,13 @@ msgstr "" msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "" @@ -8730,7 +8930,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "" @@ -8741,7 +8941,7 @@ msgstr "" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "" @@ -8769,19 +8969,19 @@ msgstr "" msgid "Step Over" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "" @@ -8790,20 +8990,20 @@ msgstr "" msgid "Stepping" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "" @@ -8824,11 +9024,15 @@ msgstr "" msgid "Stop" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "" @@ -8842,7 +9046,7 @@ msgstr "" msgid "Store XFB Copies to Texture Only" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8851,7 +9055,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8864,7 +9068,7 @@ msgstr "" msgid "Stretch to Window" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "" @@ -8887,16 +9091,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -8906,11 +9110,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -8919,7 +9123,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "" @@ -8931,12 +9135,12 @@ msgstr "" msgid "Successfully extracted system data." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "" @@ -8948,16 +9152,16 @@ msgstr "" msgid "Support" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -8965,11 +9169,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -8981,50 +9185,62 @@ msgstr "" msgid "Swing" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "" @@ -9038,37 +9254,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "" @@ -9086,11 +9302,11 @@ msgstr "" msgid "Taiwan" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "" @@ -9099,7 +9315,7 @@ msgstr "" msgid "Texture Cache" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9121,7 +9337,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9135,13 +9351,13 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "" @@ -9177,7 +9393,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9191,7 +9407,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9213,19 +9429,19 @@ msgstr "" msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9275,7 +9491,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9286,7 +9502,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9303,7 +9519,7 @@ msgstr "" msgid "The hashes match!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9325,12 +9541,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9345,20 +9561,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9379,7 +9595,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9430,7 +9646,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "" @@ -9464,7 +9680,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "" @@ -9482,7 +9698,7 @@ msgid "" "Replay itself." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "" @@ -9522,7 +9738,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "" @@ -9540,27 +9760,27 @@ msgid "" "or freezes while running this game." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9616,13 +9836,13 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9642,7 +9862,7 @@ msgstr "" msgid "Threshold" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "" @@ -9659,22 +9879,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "" @@ -9699,7 +9919,7 @@ msgid "Toggle Aspect Ratio" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "" @@ -9759,14 +9979,20 @@ msgstr "" msgid "Toolbar" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9801,20 +10027,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "" @@ -9844,20 +10070,12 @@ msgstr "" msgid "Type" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9874,9 +10092,9 @@ msgstr "" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -9904,10 +10122,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -9924,7 +10146,11 @@ msgid "" "Would you like to ignore this line and continue parsing?" msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -9936,15 +10162,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "" @@ -9958,18 +10184,18 @@ msgid "" "title from the NAND without deleting its save data. Continue?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "" @@ -9977,7 +10203,7 @@ msgstr "" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -9987,7 +10213,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -9997,15 +10223,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10013,19 +10239,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10033,7 +10259,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "" @@ -10049,13 +10275,28 @@ msgstr "" msgid "Unpacking" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10064,7 +10305,7 @@ msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "" @@ -10119,7 +10360,7 @@ msgstr "" msgid "Upright Wii Remote" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "" @@ -10135,7 +10376,7 @@ msgstr "" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "" @@ -10161,18 +10402,40 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "" @@ -10185,18 +10448,18 @@ msgstr "" msgid "User Style:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10222,23 +10485,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10251,7 +10514,7 @@ msgstr "" msgid "V-Sync" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "" @@ -10284,8 +10547,8 @@ msgstr "" msgid "Verifying" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "" @@ -10321,7 +10584,7 @@ msgstr "" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10348,7 +10611,7 @@ msgstr "" msgid "Vulkan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "" @@ -10396,7 +10659,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10404,8 +10667,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10427,7 +10690,7 @@ msgid "" "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10440,10 +10703,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "" @@ -10459,28 +10722,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10506,7 +10769,7 @@ msgstr "" msgid "Watch" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "" @@ -10535,11 +10798,11 @@ msgid "" "unsure, leave this checked." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "" @@ -10555,11 +10818,11 @@ msgstr "" msgid "Wii Menu" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "" @@ -10567,8 +10830,8 @@ msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "" @@ -10581,11 +10844,11 @@ msgstr "" msgid "Wii Remote Orientation" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "" @@ -10601,7 +10864,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "" @@ -10609,7 +10872,7 @@ msgstr "" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "" @@ -10637,18 +10900,18 @@ msgid "World" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "" @@ -10661,12 +10924,12 @@ msgid "Write to File" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "" @@ -10674,7 +10937,7 @@ msgstr "" msgid "Write to Window" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10685,7 +10948,7 @@ msgstr "" msgid "X" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "" @@ -10714,8 +10977,8 @@ msgid "Yellow" msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "" @@ -10750,7 +11013,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10779,11 +11042,11 @@ msgstr "" msgid "You have to enter a name." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10791,7 +11054,7 @@ msgstr "" msgid "You must restart Dolphin in order for the change to take effect." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "" @@ -10822,23 +11085,23 @@ msgstr "" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10857,13 +11120,13 @@ msgstr "" msgid "d3d12.dll could not be loaded." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -10879,31 +11142,31 @@ msgstr "" msgid "fake-completion" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -10933,7 +11196,7 @@ msgstr "" msgid "on" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "" @@ -10942,7 +11205,7 @@ msgstr "" msgid "s" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -10951,7 +11214,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -10970,7 +11233,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -10989,7 +11252,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -10997,7 +11260,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Languages/po/es.po b/Languages/po/es.po index 282f1b29043a..cfd0a367437e 100644 --- a/Languages/po/es.po +++ b/Languages/po/es.po @@ -31,9 +31,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-26 10:20+0000\n" -"Last-Translator: Petiso_Carambanal \n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Víctor González, 2021-2022\n" "Language-Team: Spanish (http://www.transifex.com/delroth/dolphin-emu/" "language/es/)\n" "Language: es\n" @@ -42,7 +42,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -51,10 +51,10 @@ msgid "" msgstr "" "\n" "\n" -"Es posible que haya problemas que Dolphin no pueda detectar ya que las " +"Es posible que haya problemas que Dolphin no pueda detectar, ya que las " "imágenes de disco de GameCube contienen muy pocos datos de verificación." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -67,7 +67,7 @@ msgstr "" "manipulados porque no está hecho para consolas Wii de cara al público. Es " "para consolas de desarrollo." -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -91,7 +91,7 @@ msgstr "" msgid " (Disc %1)" msgstr " (Disco %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "! No" @@ -99,7 +99,7 @@ msgstr "! No" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "«{0}» no es un archivo GCM/ISO válido, o no es una ISO GC/Wii." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "$ Variable del usuario" @@ -113,7 +113,7 @@ msgstr "$ Variable del usuario" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "% Módulo" @@ -129,17 +129,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "%1 %2" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "%1 %2 %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -151,14 +151,14 @@ msgstr "%1 (Copia)" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:98 msgid "%1 (Disc %2, Revision %3)" -msgstr "%1 (Disco %2, Revisión %3)" +msgstr "%1 (Disco %2, revisión %3)" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:102 msgid "%1 (Revision %3)" msgstr "%1 (Revisión %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "%1 (Predeterminado)" @@ -188,17 +188,17 @@ msgstr "Configuración gráfica para «%1»" #: Source/Core/DolphinQt/Settings/AdvancedPane.cpp:284 msgid "%1 MB (MEM1)" -msgstr "%1 MB (MEM1)" +msgstr "%1 MB (MEM1)" #: Source/Core/DolphinQt/Settings/AdvancedPane.cpp:298 msgid "%1 MB (MEM2)" -msgstr "%1 MB (MEM2)" +msgstr "%1 MB (MEM2)" #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:135 msgid "%1 doesn't support this feature on your system." msgstr "%1 no soporta esta característica en tu sistema." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "%1 no soporta esta característica." @@ -212,23 +212,23 @@ msgstr "" "%2 objetos\n" "Fotograma actual: %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "%1 se ha unido" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "%1 se ha salido" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "%1 no es una ROM válida" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "%1 ahora está jugando al golf" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "%1 rango(s) de memoria" @@ -237,11 +237,11 @@ msgstr "%1 rango(s) de memoria" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "%1 sesión encontrada" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "%1 sesiones encontradas" @@ -253,15 +253,15 @@ msgstr "%1%" msgid "%1% (%2 MHz)" msgstr "%1% (%2 MHz)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (velocidad normal)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "%1, %2, %3, %4" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "%1: %2" @@ -277,30 +277,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2]: %3/%4 MiB" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "%1x Nativo (%2x%3)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "No se pudo acceder a %n dirección(ones) de la memoria emulada." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "Queda(n) %n dirección(ones)." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "Se quitaron %n dirección(ones)." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "& Y" @@ -320,7 +320,7 @@ msgstr "&3x" msgid "&4x" msgstr "&4x" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&Acerca de" @@ -329,11 +329,11 @@ msgid "&Add Memory Breakpoint" msgstr "&Añadir punto de interrupción en memoria" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "&Añadir nuevo código..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "&Añadir función" @@ -341,19 +341,19 @@ msgstr "&Añadir función" msgid "&Add..." msgstr "&Añadir..." -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "Ajustes de &audio" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "Actualización automática:" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "Comienzo &automático" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "&Iniciar desde copia de seguridad en DVD" @@ -361,11 +361,11 @@ msgstr "&Iniciar desde copia de seguridad en DVD" msgid "&Borderless Window" msgstr "Ventana sin &bordes" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Puntos de interrupción" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "&Rastreador de errores" @@ -373,15 +373,15 @@ msgstr "&Rastreador de errores" msgid "&Cancel" msgstr "&Cancelar" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "Administrador de &trucos" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "&Buscar actualizaciones..." -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "&Borrar símbolos" @@ -389,7 +389,7 @@ msgstr "&Borrar símbolos" msgid "&Clone..." msgstr "&Clonar..." -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "&Código" @@ -397,19 +397,20 @@ msgstr "&Código" msgid "&Connected" msgstr "&Conectado" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" -msgstr "&Configuración de mandos" +msgstr "Ajustes de &mandos" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "&Copiar dirección:" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "&Crear..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "&Borrar" @@ -421,7 +422,7 @@ msgstr "Borrar variables &vigiladas" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "&Editar código..." @@ -429,11 +430,11 @@ msgstr "&Editar código..." msgid "&Edit..." msgstr "&Editar..." -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "&Expulsar disco" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulación" @@ -445,43 +446,47 @@ msgstr "&Exportar guardado de juego..." msgid "&Export State..." msgstr "&Exportar estado" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "&Exportar como .gci..." -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Archivo" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&Tipo de letra..." -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" -msgstr "Avanzar &cuadro" +msgstr "Avanzar &fotograma" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" -msgstr "&Opciones de vista libre" +msgstr "Ajustes de &cámara libre" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "&Generar el mapa de símbolos a partir de..." -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "&Repositorio en GitHub" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "&Ir al principio de la función" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" -msgstr "Ajustes &gráficos" +msgstr "Ajustes de &gráficos" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" -msgstr "&Ayuda" +msgstr "A&yuda" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "Ajustes de a&tajos" @@ -493,11 +498,11 @@ msgstr "&Importar guardado de juego..." msgid "&Import State..." msgstr "&Importar estado" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "&Importar..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "&Insertar blr" @@ -505,7 +510,7 @@ msgstr "&Insertar blr" msgid "&Interframe Blending" msgstr "&Fusión de fotogramas" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -513,31 +518,31 @@ msgstr "&JIT" msgid "&Language:" msgstr "&Idioma:" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&Cargar estado" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "Cargar mapa de símbo&los" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "B&loquear posición de ventanas" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Memoria" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" -msgstr "G&rabación" +msgstr "&Grabación" #: Source/Core/DolphinQt/GBAWidget.cpp:420 msgid "&Mute" msgstr "&Silenciar" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "&Red" @@ -545,24 +550,24 @@ msgstr "&Red" msgid "&No" msgstr "&No" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Abrir..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Opciones" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "&Parchear funciones HLE" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Pausa" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Jugar" @@ -570,11 +575,11 @@ msgstr "&Jugar" msgid "&Properties" msgstr "&Propiedades" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "&Modo de solo lectura" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Registros" @@ -583,24 +588,24 @@ msgid "&Remove" msgstr "&Borrar" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "&Quitar código" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "&Renombrar símbolo" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" -msgstr "&Restablecer" +msgstr "&Reiniciar" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "&Administrador de paquetes de recursos" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "&Guardar mapa de símbolos" @@ -608,11 +613,11 @@ msgstr "&Guardar mapa de símbolos" msgid "&Scan e-Reader Card(s)..." msgstr "E%scanear tarjeta(s) de e-Reader..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "&Límite de velocidad:" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Detener" @@ -620,11 +625,11 @@ msgstr "&Detener" msgid "&Theme:" msgstr "&Tema visual:" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "&Hilos" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Herramientas" @@ -632,17 +637,17 @@ msgstr "&Herramientas" msgid "&Unload ROM" msgstr "&Quitar ROM" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Vista" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&Vigilar" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Página web" @@ -654,11 +659,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "&Sí" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "No se encontró «%1», no se han generado nombres de símbolos" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "No se encontró «%1», probando con la búsqueda de funciones comunes" @@ -670,7 +675,7 @@ msgstr "(Ninguno)" msgid "(host)" msgstr "(host)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(desactivado)" @@ -678,34 +683,34 @@ msgstr "(desactivado)" msgid "(ppc)" msgstr "(ppc)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "* Multiplicar" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "+ Añadir" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr ", Coma" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "- Restar" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "--> %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "/ Dividir" @@ -713,6 +718,10 @@ msgstr "/ Dividir" msgid "128 Mbit (2043 blocks)" msgstr "128 Mbit (2043 bloques)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "16 bytes" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "16 Mbit (251 bloques)" @@ -721,35 +730,35 @@ msgstr "16 Mbit (251 bloques)" msgid "16-bit" msgstr "16 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "Entero con signo de 16 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "Entero sin signo de 16 bits" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "x16" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "x1" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "x2" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "Nativa x2 (1280x1056) a 720p" @@ -761,25 +770,25 @@ msgstr "32 Mbit (507 bloques)" msgid "32-bit" msgstr "32 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "Valor en coma flotante de 32 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "Entero con signo de 32 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "Entero sin signo de 32 bits" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -793,28 +802,32 @@ msgstr "Profundidad 3D" msgid "3x" msgstr "3x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "Nativa x3 (1920x1584) a 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "4 bytes" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Mbit (59 bloques)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "x4" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "Nativa x4 (2560x2112) a 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "Nativa x5 (3200x2640)" @@ -822,29 +835,33 @@ msgstr "Nativa x5 (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Mbit (1019 bloques)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "Valor en coma flotante de 64 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "Entero con signo de 64 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "Entero sin signo de 64 bits" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "Nativa x6 (3840x3168) a 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "Nativa x7 (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "8 bytes" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Mbit (123 bloques)" @@ -853,25 +870,25 @@ msgstr "8 Mbit (123 bloques)" msgid "8-bit" msgstr "8 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "Entero con signo de 8 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "Entero sin signo de 8 bits" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "x8" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "Nativa x8 (5120x4224) a 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "< Menor que" @@ -893,12 +910,12 @@ msgstr "" "Dolphin %1. La versión actual es la %2.
¿Quieres actualizar?" "

Incluye los siguientes cambios:

" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "> Mayor que" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "Ya hay una sesión de juego en red en marcha." @@ -916,19 +933,19 @@ msgstr "" "Versión instalada: {0}\n" "Versión del WAD: {1}\n" "\n" -"Instalarlo sobrescribirá el WAD de forma irreversible. ¿Quieres continuar?" +"Instalar este WAD lo reemplazará de forma irreversible. ¿Quieres continuar?" #: Source/Core/Core/HW/DVD/DVDInterface.cpp:546 msgid "A disc is already about to be inserted." msgstr "Ya hay un disco en proceso de inserción." -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" "Un estado de guardado no puede ser cargado sin especificar el juego a " "ejecutar." -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -936,7 +953,7 @@ msgstr "" "Ya se está deteniendo el juego. Puede que se pierdan los datos sin guardar " "si detienes la emulación antes de tiempo. ¿Quieres forzar la salida?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "Solo se puede sincronizar el mando de Wii en mitad de la partida." @@ -945,7 +962,7 @@ msgstr "Solo se puede sincronizar el mando de Wii en mitad de la partida." msgid "AD16" msgstr "AD16" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -963,7 +980,7 @@ msgstr "" "ATENCIÓN:\n" "\n" "Todos los jugadores deben usar la misma versión de Dolphin.\n" -"Si está habilitado, las memorias SD deben ser idénticas entre los " +"Si está habilitado, las tarjetas SD deben ser idénticas entre los " "jugadores.\n" "Si se usa DSP LLE, las ROM de DSP deben ser idénticas entre los jugadores.\n" "Si un juego se cuelga en el arranque, puede que no sea compatible con el " @@ -973,7 +990,7 @@ msgstr "" "\n" "El soporte para mando de Wii en juego en red es experimental y puede que no " "funcione correctamente.\n" -"Úselo bajo su propio riesgo.\n" +"Úsalo bajo tu propio riesgo.\n" #: Source/Core/DolphinQt/CheatsManager.cpp:90 msgid "AR Code" @@ -983,8 +1000,8 @@ msgstr "Código AR" msgid "AR Codes" msgstr "Códigos AR" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -1007,7 +1024,7 @@ msgstr "Acelerómetro" msgid "Accuracy:" msgstr "Exactitud:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "Acción" @@ -1120,9 +1137,9 @@ msgstr "Adaptador detectado" msgid "Adapter:" msgstr "Adaptador:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Añadir" @@ -1130,11 +1147,11 @@ msgstr "Añadir" msgid "Add &breakpoint" msgstr "Añadir &punto de interrupción" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "Añadir nuevo servidor DSU" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "Añadir dispositivo USB" @@ -1166,46 +1183,49 @@ msgstr "Añadir punto de interrupción de memoria" msgid "Add to &watch" msgstr "Añadir a &variables vigiladas" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "Añadir a variables vigiladas" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Añadir..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Dirección:" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "Espacio de dirección" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "Espacio de dirección según el estado de la CPU" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "Dirección:" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1213,12 +1233,12 @@ msgid "" "garbled in certain games.

If unsure, select the " "rightmost value." msgstr "" -"Ajusta la precisión con la que la GPU recibe las actualizaciones de textura " -"de la RAM.

La opción «Seguro» elimina la posibilidad de que a la GPU " -"le falten las actualizaciones de texturas de la RAM. Las precisiones más " -"bajas provocan que el texto en algunos juegos se vea borroso. " -"

Si tienes dudas, elige el valor más a la derecha." +"Ajusta la precisión con la que la GPU recibirá las actualizaciones de " +"textura de la RAM.

La opción «Segura» eliminará la posibilidad de que " +"a la GPU le falten las actualizaciones de texturas de la RAM. Una precisión " +"más baja provocará que el texto de algunos juegos se vea borroso." +"

Si tienes dudas, selecciona el valor a la derecha " +"del todo." #: Source/Core/DolphinQt/Settings/AdvancedPane.cpp:132 msgid "" @@ -1227,11 +1247,10 @@ msgid "" "WARNING: Enabling this will completely break many games. Only a small number " "of games can benefit from this." msgstr "" -"Ajusta la cantidad de RAM en la consola emulada.\n" +"Ajusta la cantidad de RAM que tendrá la consola emulada.\n" "\n" -"ADVERTENCIA: Activar esta opción causa problemas graves en muchos juegos; " -"solo hay una pequeña minoría que se benefician de ello y utilizan de verdad " -"la RAM extra." +"ADVERTENCIA: Esta opción provocará problemas graves en muchos juegos; solo " +"hay una pequeña minoría que se beneficiará." #: Source/Core/DolphinQt/Settings/AdvancedPane.cpp:91 msgid "" @@ -1247,11 +1266,11 @@ msgid "" msgstr "" "Ajusta la velocidad de la CPU emulada.\n" "\n" -"Valores altos pueden hacer que los juegos con una tasa de refresco variable " +"Un valor alto podría hacer que los juegos con una tasa de refresco variable " "funcionen a una velocidad de fotogramas mayor, a expensas del rendimiento " -"del procesador. Valores bajos pueden hacer que juegos con tasa de refresco " -"variable funcionen a una velocidad de fotogramas más baja, ahorrando " -"recursos del procesador.\n" +"del procesador. Un valor bajo podría hacer que los juegos con tasa de " +"refresco variable funcionen a una velocidad de fotogramas más baja, " +"ahorrando recursos del procesador.\n" "\n" "ADVERTENCIA: Cambiar el valor predeterminado (100%) puede causar fallos y " "dar problemas durante el juego. Hazlo solo por tu propia cuenta y riesgo. No " @@ -1272,39 +1291,43 @@ msgstr "Avanzado" msgid "Africa" msgstr "África" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "Alineación a la longitud del tipo de datos" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "Todos los archivos" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "Todos los archivos (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "Todos los archivos GC/Wii" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "Todos los estados guardados (*.sav *.s##);; Todos los archivos (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "Todos los dispositivos" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "Todos los archivos (*)" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "Todos los códigos de los jugadores sincronizados." @@ -1313,19 +1336,19 @@ msgstr "Todos los códigos de los jugadores sincronizados." msgid "All players' saves synchronized." msgstr "Todos las partidas guardadas de los jugadores sincronizados." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" -msgstr "Permitir configuración de región independiente." +msgstr "Permitir configuración de región independiente" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "Permitir informes de estadísticas de uso" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" -msgstr "Permitir escribir en la tarjeta SD" +msgstr "Permitir acciones de escritura en la tarjeta SD" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." @@ -1333,13 +1356,13 @@ msgstr "" "Permite la manipulación de la cámara del juego

Si " "tienes dudas, deja esta opción desactivada." -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuMotionControlIMU.cpp:36 msgid "Alternate Input Sources" -msgstr "Fuentes de entrada alternativa" +msgstr "Fuentes de entrada alternativas" #: Source/Core/DolphinQt/Settings/InterfacePane.cpp:183 msgid "Always" @@ -1359,9 +1382,9 @@ msgstr "Siempre &arriba" msgid "An inserted disc was expected but not found." msgstr "Se esperaba la inserción de un disco pero no se encontró ninguno." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" -msgstr "Anaglifos" +msgstr "Anaglifo" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:166 msgid "Analyze" @@ -1377,39 +1400,39 @@ msgstr "Ángulo" msgid "Angular velocity to ignore and remap." msgstr "Velocidad angular a ignorar y reasignar." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "Filtrado anisotrópico" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Filtrado anisotrópico:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" -msgstr "Antialias" +msgstr "Suavizado de bordes" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" -msgstr "Antialias:" +msgstr "Suavizado de bordes:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "Cualquier región" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "Añadir firma a" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "Añadir al archivo de firma existente..." -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "Aplicar archivo de firma..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1426,15 +1449,15 @@ msgstr "Fecha del «apploader»:" msgid "Apply" msgstr "Aplicar" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "Aplicar archivo de firma" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" -msgstr "Detección arbitraria de Mipmap" +msgstr "Detección arbitraria de mipmaps" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "¿Seguro que quieres borrar «%1»?" @@ -1442,11 +1465,11 @@ msgstr "¿Seguro que quieres borrar «%1»?" msgid "Are you sure you want to delete this file?" msgstr "¿Seguro que quieres borrar este archivo?" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "¿Seguro que quieres borrar este paquete?" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "¿Seguro que quieres salir del juego en red?" @@ -1459,11 +1482,11 @@ msgid "Aspect Ratio" msgstr "Relación de aspecto" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Relación de aspecto:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Asignar números de puerto para mandos" @@ -1471,12 +1494,12 @@ msgstr "Asignar números de puerto para mandos" msgid "Assign Controllers" msgstr "Asignar mandos" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" -"Al menos dos de los archivos guardados seleccionados tienen el mismo nombre " -"de archivo interno." +"Al menos dos de los archivos de guardado seleccionados tienen el mismo " +"nombre de archivo interno." #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:251 msgid "Attach MotionPlus" @@ -1492,13 +1515,13 @@ msgstr "Motor de audio:" #: Source/Core/DolphinQt/Settings/AudioPane.cpp:138 msgid "Audio Stretching Settings" -msgstr "Ajustes de latencia de audio" +msgstr "Ajustes de expansión de audio" #: Source/Core/DiscIO/Enums.cpp:33 msgid "Australia" msgstr "Australia" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "Autor" @@ -1510,15 +1533,15 @@ msgstr "Autores" msgid "Auto" msgstr "Automática" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" -msgstr "Autom. (múltiplo de 640x528)" +msgstr "Automática (múltiplo de 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" -msgstr "Ajustes de actualización autom.:" +msgstr "Ajustes de actualización automática" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1538,7 +1561,7 @@ msgstr "Autoajustar tamaño de ventana" msgid "Auto-Hide" msgstr "Ocultar automáticamente" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "¿Autodetectar módulos RSO?" @@ -1552,12 +1575,12 @@ msgstr "" "dolphin_emphasis>" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "Auxiliar" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "B" @@ -1575,11 +1598,11 @@ msgstr "" "Se debe usar una dirección MAC válida. Genera una nueva empezando con 00:09:" "bf o 00:17:ab." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "BIOS:" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "Registro BP" @@ -1598,16 +1621,16 @@ msgstr "Motor multihilo" #: Source/Core/DolphinQt/Settings/AudioPane.cpp:76 msgid "Backend Settings" -msgstr "Configuración del motor" +msgstr "Ajustes del motor" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:73 #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:51 msgid "Backend:" msgstr "Motor:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" -msgstr "Func. en segundo plano" +msgstr "Funcionar en segundo plano" #: Source/Core/Core/FreeLookManager.cpp:87 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:25 @@ -1616,7 +1639,13 @@ msgstr "Func. en segundo plano" msgid "Backward" msgstr "Atrás" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "Se ha proporcionado un valor incorrecto" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "La dirección elegida no existe." @@ -1624,19 +1653,20 @@ msgstr "La dirección elegida no existe." msgid "Bad dump" msgstr "Volcado malo" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "Ajuste proporcionado incorrecto." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "El valor elegido no es correcto." #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Imagen" @@ -1660,15 +1690,15 @@ msgstr "Prioridad base" msgid "Basic" msgstr "Básico" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" -msgstr "Configuración básica" +msgstr "Ajustes básicos" #: Source/Core/Core/HW/WiimoteEmu/Extension/Drums.cpp:37 msgid "Bass" msgstr "Bajo" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "Modo Lote no puede ser usado sin especificar un juego para ejecutar." @@ -1676,11 +1706,11 @@ msgstr "Modo Lote no puede ser usado sin especificar un juego para ejecutar." msgid "Battery" msgstr "Batería" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "Beta (una vez al mes)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "BetterJoy, DS4Windows, etc" @@ -1702,7 +1732,7 @@ msgstr "Bitrate (kbps):" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "Tamaño del bloque" @@ -1715,7 +1745,7 @@ msgstr "Tamaño del bloque:" msgid "Blocking" msgstr "Bloqueando" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Bloques" @@ -1737,18 +1767,18 @@ msgid "" "Bluetooth passthrough mode is enabled, but Dolphin was built without libusb. " "Passthrough mode cannot be used." msgstr "" -"Se ha activado el modo de cesión de Bluetooth real, pero como Dolphin se ha " -"compilado sin «libusb» no funciona." +"Se ha activado el modo de acceso directo a Bluetooth, pero no se puede " +"utilizar porque Dolphin se ha compilado sin la biblioteca libusb." -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "Arrancar pausado" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "Archivo de respaldo BootMii NAND (*.bin);;Todos los archivos (*) " -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "Archivo de claves BootMii (*.bin);;Todos los archivos (*)" @@ -1756,7 +1786,7 @@ msgstr "Archivo de claves BootMii (*.bin);;Todos los archivos (*)" msgid "Borderless Fullscreen" msgstr "Pantalla completa sin bordes" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Inferior" @@ -1770,7 +1800,7 @@ msgid "Branches" msgstr "Ramas" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "Pausa" @@ -1779,7 +1809,7 @@ msgstr "Pausa" msgid "Breakpoint" msgstr "Punto de interrupción" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" "Se ha encontrado un punto de interrupción. Salto de instrucciones cancelado." @@ -1810,7 +1840,7 @@ msgstr "Error del adaptador para banda ancha" msgid "Broadband Adapter MAC Address" msgstr "Dirección MAC del adaptador para banda ancha" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "Buscar sesiones de juego en red..." @@ -1818,12 +1848,12 @@ msgstr "Buscar sesiones de juego en red..." msgid "Buffer Size:" msgstr "Tamaño de búfer:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "El tamaño del búfer ha cambiado a %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Búfer:" @@ -1833,8 +1863,8 @@ msgid "" "Please either install the closed-source GPU driver or update your Mesa 3D " "version." msgstr "" -"Driver de la GPU defectuoso. Instala la versión propietaria o actualiza tu " -"versión de Mesa 3D" +"Driver de la GPU defectuoso.\n" +"Instala la versión propietaria o actualiza tu versión de Mesa 3D." #: Source/Core/Core/HW/GCPadEmu.cpp:84 msgid "Button" @@ -1865,13 +1895,13 @@ msgstr "Botones" #: Source/Core/DolphinQt/Config/Mapping/GCPadEmu.cpp:31 #: Source/Core/DolphinQt/TAS/GCTASInputWindow.cpp:26 msgid "C Stick" -msgstr "Palanca C" +msgstr "Stick C" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "C&rear archivo de firma..." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "Registro CP" @@ -1898,7 +1928,7 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" "Almacena en caché texturas personalizadas en la RAM del sistema al inicio." -"

Esto puede requerir exponencialmente más RAM pero corrige posibles " +"

Esto puede requerir exponencialmente más RAM, pero corrige posibles " "parones.

Si tienes dudas, deja esta opción " "desactivada." @@ -1906,18 +1936,18 @@ msgstr "" msgid "Calculate" msgstr "Calcular" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " "less noticeable.

Rarely causes slowdowns or graphical issues." "

If unsure, leave this unchecked." msgstr "" -"Calcular la iluminación de los objectos 3D por píxel en lugar de por " -"vértice. Disminuye de forma imperceptible la velocidad de emulación, " -"mejorando considerablemente el aspecto de los polígonos iluminados.

Raramente causa problemas.

Si tienes dudas, deja " -"esta opción desactivada." +"Calcula la iluminación de los objetos 3D por píxeles en lugar de por " +"vértices, suavizando el aspecto de los polígonos iluminados y reduciendo la " +"visibilidad de sus triángulos.

No suele provocar ralentizaciones o " +"fallos gráficos.

Si tienes dudas, deja esta opción " +"desactivada." #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:897 msgid "Calibrate" @@ -1931,15 +1961,15 @@ msgstr "Calibración" msgid "Calibration Period" msgstr "Tiempo de calibración" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" -msgstr "" +msgstr "Llamada de lista de visualización en %1 con tamaño %2" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "Pila de llamadas" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "Cámara 1" @@ -1949,7 +1979,7 @@ msgstr "Cámara 1" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "Campo de visión de la cámara (afecta a la sensibilidad del apuntado)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" "Solo se puede generar un código AR para aquellos valores que se encuentren " @@ -1961,16 +1991,16 @@ msgstr "" "No se puede encontrar ningún mando de Wii con el identificador de conexión " "{0:02x}" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "No puedes empezar el juego en red con un juego en ejecución." -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "Cancelar" @@ -1988,25 +2018,25 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "El juego no puede iniciar el WAD al no poder instalarlo en la NAND." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "No se puede comparar con el último valor en la primera búsqueda." -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "No se puede encontrar el IPL de GC" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "No se puede generar el código AR para esta dirección." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "No se puede actualizar si no hay resultados." -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." -msgstr "El juego no puede empezar porque el IPL de GC no se ha encontrado." +msgstr "No se puede ejecutar el juego porque no se ha encontrado el IPL de GC." #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:41 msgid "Card Size" @@ -2026,7 +2056,7 @@ msgstr "Centrar y calibrar" msgid "Change &Disc" msgstr "Cambiar &disco" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Cambiar &disco..." @@ -2034,15 +2064,15 @@ msgstr "Cambiar &disco..." msgid "Change Disc" msgstr "Cambiar disco" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "Cambiar discos automáticamente" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "Cambiar al disco {0}" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -2053,14 +2083,16 @@ msgid "" "camera around the original camera. Has no lateral movement, only rotation " "and you may zoom up to the camera's origin point." msgstr "" -"Cambia el tipo de cámara del juego con cámara libre.

Six Axis: Ofrece " -"control total de la cámara en todos los ejes, similar a mover una nave " -"espacial en gravedad cero. Esta es la opción de cámara libre más completa, " -"pero es la más difícil de usar.

Primera persona: controla la cámara " -"libre de forma similar a un videojuego en primera persona. La cámara puede " -"girar y viajar, pero no rodar. Fácil de usar, pero limitado.

Orbital: " -"gira la cámara libre alrededor de la cámara original. No tiene movimiento " -"lateral, solo rotación y puede hacer zoom al punto de origen de la cámara." +"Cambia el tipo de cámara del juego con cámara libre.

Seis ejes: " +"Ofrece control total de la cámara en todos sus ejes, como cuando se mueve " +"una nave espacial en gravedad cero. Esta es la opción de cámara libre más " +"completa, pero también la más difícil de usar.

Primera persona: " +"controla la cámara libre de forma similar a un videojuego en primera " +"persona. La cámara puede rotar y moverse hacia delante y hacia atrás, pero " +"no balancearse (girar sobre sí misma). Fácil de usar, pero limitado." +"

Orbital: gira la cámara libre alrededor de la cámara original. No " +"tiene movimiento lateral, solo rotación, y puedes acercarte al punto de " +"origen de la cámara." #: Source/Core/DolphinQt/Config/CheatWarningWidget.cpp:66 msgid "Changing cheats will only take effect when the game is restarted." @@ -2070,7 +2102,7 @@ msgstr "Los trucos surtirán efecto la próxima vez que se reinicie el juego." msgid "Channel Partition (%1)" msgstr "Partición del canal (%1)" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Conversación" @@ -2086,13 +2118,13 @@ msgstr "Buscar trucos" msgid "Cheats Manager" msgstr "Administrador de trucos" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "Comprobar NAND..." -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" -msgstr "Comprobar si hay cambios en la lista de juegos en segundo plano" +msgstr "Comprobar en segundo plano si hay cambios en la lista de juegos" #: Source/Core/DolphinQt/AboutDialog.cpp:58 msgid "Check for updates" @@ -2106,7 +2138,7 @@ msgstr "" "Asegúrate de tener los permisos adecuados para borrar el archivo y que " "ningún otro programa lo esté usando." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "Suma de verificación" @@ -2114,16 +2146,16 @@ msgstr "Suma de verificación" msgid "China" msgstr "China" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Escoge un archivo para abrir" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "Escoger archivo de entrada principal" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "Escoger archivo de entrada secundario" @@ -2134,7 +2166,7 @@ msgstr "Escoge la carpeta de destino" #. i18n: Refers to emulated wii remote movements. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUCursor.cpp:39 msgid "Clamping of rotation about the yaw axis." -msgstr "Sujeción de rotación sobre el eje vertical." +msgstr "Fija la rotación del eje de guiñada." #: Source/Core/DolphinQt/TAS/WiiTASInputWindow.cpp:235 msgid "Classic Buttons" @@ -2146,20 +2178,20 @@ msgid "Classic Controller" msgstr "Mando clásico" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Borrar" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "Borrar caché" #: Source/Core/DolphinQt/Settings/AdvancedPane.cpp:71 msgid "Clock Override" -msgstr "Anulación de reloj" +msgstr "Control manual del reloj de la CPU" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 msgid "Clone and &Edit Code..." @@ -2170,28 +2202,47 @@ msgstr "Clonar y &editar código..." msgid "Close" msgstr "Cerrar" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "Co&nfiguración" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Código" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "Herramienta de comparación de código" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "Ayuda de la herramienta de comparación de código" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "El código no ha sido ejecutado" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "El código ha sido ejecutado" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Código:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "¡Códigos recibidos!" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "Combinar dos archivos de firmas..." #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "Común" @@ -2205,11 +2256,11 @@ msgstr "Compilar sombreadores antes de jugar" #: Source/Core/VideoCommon/ShaderCache.cpp:171 msgid "Compiling Shaders" -msgstr "Compilando sombreadores" +msgstr "Compilación de sombreadores" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "Compresión" @@ -2222,7 +2273,7 @@ msgstr "Nivel de compresión:" msgid "Compression:" msgstr "Compresión:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "Condición" @@ -2234,13 +2285,13 @@ msgstr "Condicional" msgid "Config" msgstr "Configuración" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Configurar" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "Configurar mando" @@ -2248,21 +2299,21 @@ msgstr "Configurar mando" msgid "Configure Dolphin" msgstr "Configurar Dolphin" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "Configurar entrada" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "Configurar salida" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "Confirmar" @@ -2275,26 +2326,26 @@ msgstr "Confirmar cambio de motor" msgid "Confirm on Stop" msgstr "Confirmar detención" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "Confirmar" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Conectar" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" -msgstr "Conectar la «Balance Board»" +msgstr "Conectar la Balance Board" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Conectar teclado USB" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "Conectar mando de Wii %1" @@ -2314,11 +2365,11 @@ msgstr "Conectar mando de Wii 3" msgid "Connect Wii Remote 4" msgstr "Conectar mando de Wii 4" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "Conectar mandos de Wii" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "Conectar los mandos de Wii para controles emulados" @@ -2331,15 +2382,19 @@ msgstr "" msgid "Connected" msgstr "Conectado" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "Conectando" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Tipo de conexión:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "El contenido {0:08x} está corrupto." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Escaneo continuo" @@ -2350,9 +2405,9 @@ msgstr "Controlar el modo golf del juego en red" #: Source/Core/Core/HW/GCPadEmu.cpp:67 #: Source/Core/DolphinQt/Config/Mapping/GCPadEmu.cpp:29 msgid "Control Stick" -msgstr "Palanca analógica" +msgstr "Stick de control" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "Perfil del mando" @@ -2374,25 +2429,25 @@ msgstr "Perfil del mando 4" #: Source/Core/DolphinQt/Config/ControllersWindow.cpp:16 msgid "Controller Settings" -msgstr "Ajustes de control" +msgstr "Ajustes del mando" #: Source/Core/DolphinQt/ToolBar.cpp:132 msgid "Controllers" msgstr "Mandos" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " "higher value creates stronger out-of-screen effects while a lower value is " "more comfortable." msgstr "" -"Controla la distancia del plano de convergencia. Esta es la distancia desde " -"la que objetos virtuales parecerán salirse del plano visual de la pantalla." -"

Un valor alto crea fuertes efectos fuera de pantalla, mientras que " -"un valor pequeño es más agradable." +"Controla la distancia del plano de convergencia. Esta es la distancia a " +"partir de la cual los objetos virtuales parecerán salirse del plano visual " +"de la pantalla.

Un valor alto creará fuertes efectos fuera de " +"pantalla, mientras que un valor pequeño es más agradable." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2400,13 +2455,13 @@ msgid "" "better performance will be.

If unsure, select " "Native." msgstr "" -"Controla la resolución del método de dibujado.

Una resolución alta " -"mejora en gran medida la calidad visual, pero también aumenta mucho la carga " -"de GPU y puede causar problemas en ciertos juegos. En general, cuanto menor " -"sea la resolución interna, mejor será el rendimiento." -"

Si no ests seguro, elige Nativo." +"Ajusta la resolución de dibujado.

Una resolución alta mejorará en " +"gran medida la calidad visual, pero aumentará igualmente la carga gráfica y " +"puede causar problemas en ciertos juegos. En general, cuanto menor sea la " +"resolución interna, mejor será el rendimiento.

Si " +"tienes dudas, selecciona Nativa." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2441,12 +2496,12 @@ msgstr "" "Controla si se utiliza la emulación DSP de alto o bajo nivel. Predeterminado " "en True" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "Convergencia" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Convergencia:" @@ -2488,33 +2543,38 @@ msgstr "" "Convirtiendo...\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Copiar" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "Copiar &función" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "Copiar código &hexadecimal" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "Copiar dirección" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "Se produjo un fallo al copiar" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "Copiar en hexadecimal" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "Copiar código de &línea" @@ -2522,11 +2582,15 @@ msgstr "Copiar código de &línea" msgid "Copy failed" msgstr "Se produjo un fallo al copiar" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "Copiar dirección ob&jetivo" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "Copiar a A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "Copia a B" @@ -2541,16 +2605,16 @@ msgstr "Núcleo" msgid "Cost" msgstr "Coste" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "No se pudo comunicar con el host." -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "No se pudo crear el cliente." -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "No se pudo crear el par." @@ -2576,8 +2640,8 @@ msgid "" "\n" "The emulated console will now stop." msgstr "" -"No se pudo encontrar ningún adaptador USB Bluetooth utilizable para " -"Bluetooth Passthrough.\n" +"No se pudo encontrar ningún adaptador USB Bluetooth utilizable para el " +"acceso directo a Bluetooth.\n" "\n" "La consola emulada se detendrá ahora." @@ -2589,9 +2653,9 @@ msgid "" "\n" "The emulated console will now stop." msgstr "" -"No se pudo encontrar ningún adaptador USB Bluetooth utilizable para " -"Bluetooth Passthrough.\n" -"El siguiente error ocurre cuando Dolphin intenta usar un adaptador:\n" +"No se pudo encontrar ningún adaptador de Bluetooth USB compatible con el " +"acceso directo a Bluetooth.\n" +"Ha ocurrido el siguiente error cuando Dolphin intentó usar un adaptador:\n" "{0}\n" "\n" "La consola emulada se detendrá ahora." @@ -2658,19 +2722,19 @@ msgstr "" "¿Estás ejecutando Dolphin desde un CD/DVD, o el archivo de guardado está " "protegido contra escritura?\n" "\n" -"¿Estás recibiendo esto después de mover el directorio de emulador?\n" +"¿Te aparece este mensaje después de mover el directorio del emulador?\n" "Si es así, entonces es posible que tengas que volver a especificar la " "ubicación de la tarjeta de memoria en las opciones." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "No se pudo encontrar el servidor central" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "No se pudo abrir el archivo." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "No se pudo leer el archivo." @@ -2703,7 +2767,7 @@ msgstr "" "dolphin_emphasis>" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "Creador:" @@ -2713,27 +2777,27 @@ msgstr "Crítico" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:123 msgid "Crop" -msgstr "Recortar" +msgstr "Recortar imagen" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:269 msgid "" "Crops the picture from its native aspect ratio to 4:3 or 16:9." "

If unsure, leave this unchecked." msgstr "" -"Recorta la imagen de su relación de aspecto original de 4:3 o " -"16:9

Si tienes dudas, deja esta opción desactivada." -"" +"Recorta la imagen a partir de su relación de aspecto original de 4:3 o 16:9." +"

Si tienes dudas, deja esta opción desactivada." #: Source/Core/Core/HW/WiimoteEmu/Extension/Turntable.cpp:78 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtension.cpp:173 msgid "Crossfade" msgstr "Deslizador del mezclador" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "Región actual" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "Valor actual" @@ -2741,7 +2805,7 @@ msgstr "Valor actual" msgid "Current context" msgstr "Contexto actual" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "Juego actual" @@ -2749,13 +2813,13 @@ msgstr "Juego actual" msgid "Current thread" msgstr "Hilo actual" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "Espacio de dirección personalizado" #: Source/Core/DolphinQt/Settings/AdvancedPane.cpp:139 msgid "Custom RTC Options" -msgstr "Opciones de reloj (RTC)" +msgstr "Opciones de fecha en tiempo real personalizada (RTC)" #: Source/Core/Core/HW/GBAPadEmu.cpp:35 Source/Core/Core/HW/GCPadEmu.cpp:87 #: Source/Core/Core/HW/WiimoteEmu/Extension/Classic.cpp:101 @@ -2780,15 +2844,15 @@ msgstr "El tamaño del archivo DFF es 0, ¿el archivo está dañado o incompleto #: Source/Core/Core/HW/WiimoteEmu/Extension/Turntable.cpp:47 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtension.cpp:147 msgid "DJ Turntable" -msgstr "Mesa de mezcla DJ" +msgstr "Mesa de mezclas DJ" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "Bongos de DK" #: Source/Core/DolphinQt/Settings/AudioPane.cpp:46 msgid "DSP Emulation Engine" -msgstr "Método de emulación DSP" +msgstr "Motor de emulación del DSP" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:92 msgid "DSP HLE (fast)" @@ -2810,7 +2874,7 @@ msgstr "Recompilador DSP LLE (lento)" msgid "DSU Client" msgstr "Cliente DSU" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2822,11 +2886,11 @@ msgstr "" "

Para instrucciones de configuración,
consulte esta página." -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Alfombra de baile" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "Datos" @@ -2838,28 +2902,27 @@ msgstr "Partición de datos (%1)" msgid "Data Transfer" msgstr "Transferencia de datos" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "Tipo de datos" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "Datos en área de archivo que deberian ser sin uso" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "Los datos están en un formato no reconocido o está corruptos" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "Inconsistencia de datos en GCMemcardManager, cancelando acción." -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "¡Datos recibidos!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "Archivos Datel MaxDrive/Pro" @@ -2877,7 +2940,7 @@ msgid "Debug Only" msgstr "Opciones de depuración" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Depuración" @@ -2919,7 +2982,7 @@ msgstr "Disminuir X" msgid "Decrease Y" msgstr "Disminuir Y" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Predeterminado" @@ -2935,7 +2998,7 @@ msgstr "Dispositivo predeterminado" msgid "Default Font" msgstr "Tipografía predeterminada" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "ISO predeterminado:" @@ -2945,11 +3008,11 @@ msgstr "Hilo predeterminado" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:144 msgid "Defer EFB Cache Invalidation" -msgstr "Retrasar invalidación de caché EFB" +msgstr "Retrasar invalidación de caché del EFB" #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:51 msgid "Defer EFB Copies to RAM" -msgstr "Retrasar copias de EFB a la RAM" +msgstr "Retrasar copias del EFB a la RAM" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:281 msgid "" @@ -2959,14 +3022,14 @@ msgid "" "EFB Access at the cost of stability.

If unsure, " "leave this unchecked." msgstr "" -"Retrasa la invalidación de la caché de acceso EFB hasta que se ejecute un " -"comando de sincronización de la GPU. Si se desactiva, la caché se invalidará " -"con cada llamada de dibujo.

Puede mejorar el rendimiento en algunos " -"juegos que dependen del acceso EFB CPU a costa de la estabilidad." -"

Si tienes dudas, deja esta opción desactivada." +"Retrasa la invalidación de la caché de acceso del EFB hasta que se ejecute " +"un comando de sincronización de la GPU. Si se desactiva, la caché se " +"invalidará con cada llamada de dibujo.

Puede mejorar el rendimiento " +"en algunos juegos que dependen del acceso del EFB a la CPU a costa de la " +"estabilidad.

Si tienes dudas, deja esta opción " +"desactivada." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2981,11 +3044,11 @@ msgid "Delete Selected Files..." msgstr "Borrar archivos seleccionados..." #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "¿Borrar el archivo «{0}»?" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "Profundidad" @@ -2993,21 +3056,21 @@ msgstr "Profundidad" msgid "Depth Percentage:" msgstr "Porcentaje de profundidad:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Profundidad:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Descripción" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Descripción:" @@ -3016,11 +3079,11 @@ msgstr "Descripción:" msgid "Detached" msgstr "Separado" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Detectar" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "Detección de módulos RSO" @@ -3028,25 +3091,25 @@ msgstr "Detección de módulos RSO" msgid "Deterministic dual core:" msgstr "Doble núcleo determinista:" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "Dev (varias veces al día)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Dispositivo" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "PID del dispositivo (por ejemplo: 0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" -msgstr "Configuración del dispositivo" +msgstr "Ajustes de dispositivos" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "VID del dispositivo (por ejemplo: 057e)" @@ -3058,11 +3121,15 @@ msgstr "Dispositivo:" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "El archivo %1 no ha sido reconocido como un XML de Riivolution válido." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "Comparación" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." -msgstr "Oscurecer la pantalla después de cinco minutos de inactividad." +msgstr "Oscurece la pantalla después de cinco minutos de inactividad." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "Conexión directa" @@ -3099,27 +3166,27 @@ msgstr "Desactivar" msgid "Disable Bounding Box" msgstr "Desactivar delimitado rectangular" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "Desactivar filtrado de copia" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:74 msgid "Disable EFB VRAM Copies" -msgstr "Activar copias de EFB VRAM" +msgstr "Desactivar copias del EFB a la VRAM" #: Source/Core/Core/HotkeyManager.cpp:47 msgid "Disable Emulation Speed Limit" msgstr "Desactivar límite de velocidad de emulación" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "Desactivar FastMem" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Desactivar niebla" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "Desactivar caché JIT" @@ -3127,13 +3194,13 @@ msgstr "Desactivar caché JIT" msgid "Disabled" msgstr "Desactivado" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " "unsure, leave this checked." msgstr "" -"Desactiva la emulación del cuadro delimitador.

Esto puede mejorar " +"Desactiva la emulación del delimitado rectangular.

Puede mejorar " "significativamente el rendimiento de la GPU, pero algunos juegos se romperán." "

Si tienes dudas, deja esta opción activada." @@ -3144,11 +3211,11 @@ msgid "" "upscaling.

If unsure, leave this unchecked." msgstr "" -"Desactiva la copia de VRAM de la EFB, forzando un viaje de ida y vuelta a la " -"RAM. Inhibe todo aumento de escala.

Si tienes " -"dudas, deja esta opción desactivada." +"Desactiva la copia que tiene la VRAM del EFB, forzando un viaje de ida y " +"vuelta a la RAM. Inhibe todo aumento de escala.

Si " +"tienes dudas, deja esta opción desactivada." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -3156,12 +3223,12 @@ msgid "" "Causes few graphical issues.

If unsure, leave this " "checked." msgstr "" -"Desactiva la combinación de filas adyacentes al copiar el EFB. Esto se " -"conoce en algunos juegos como \"parpadeo\" o \"suavizado\"." -"

Deshabilitar el filtro no tiene ningún efecto en el rendimiento, " -"pero puede dar como resultado una imagen más nítida. Causa pocos problemas " -"gráficos.

Si tienes dudas, deja esta opción " -"activada." +"Desactiva la fusión de filas adyacentes al copiar el EFB. Esto se conoce en " +"algunos juegos como «efecto antiparpadeo (deflickering)» o «suavizado " +"(smoothing)».
Deshabilitar el filtro no afectará al rendimiento, pero " +"puede producir una imagen más nítida. Causa pocos problemas gráficos." +"

Si tienes dudas, deja esta opción activada." #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:95 msgid "Disc" @@ -3171,11 +3238,15 @@ msgstr "Disco" msgid "Discard" msgstr "Descartar" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "Tipo de visualización" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "Mostrar valores en hexadecimal" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -3198,26 +3269,26 @@ msgstr "Distancia" msgid "Distance of travel from neutral position." msgstr "Distancia de desplazamiento desde la posición neutral." -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" "¿Nos permites compartir estadísticas con los desarrolladores de Dolphin?" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "¿Quieres añadir «%1» a la lista de carpetas de juegos?" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "¿Seguro que quieres borrar la lista de nombres simbólicos?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" -msgstr "¿Quieres eliminar los %n archivos de guardado elegidos?" +msgstr "¿Quieres borrar el(los) %n archivo(s) de guardado elegido(s)?" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "¿Quieres detener la emulación?" @@ -3234,9 +3305,9 @@ msgstr "Registro FIFO de Dolphin (*.dff)" msgid "Dolphin Game Mod Preset" msgstr "Preajuste de modificación de juego para Dolphin" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "Archivo de mapa de Dolphin (*.map)" @@ -3248,8 +3319,8 @@ msgstr "Archivo de firma CSV de Dolphin" msgid "Dolphin Signature File" msgstr "Archivo de firma de Dolphin" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Grabación TAS de Dolphin (*.dtm)" @@ -3293,12 +3364,12 @@ msgstr "Dolphin no ha podido completar la acción solicitada." msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "Dolphin es un emulador de GameCube y Wii de código abierto." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "" "La versión de Dolphin es demasiado antigua para utilizar el servidor de paso" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." @@ -3306,17 +3377,17 @@ msgstr "" "Dolphin no puede verificar correctamente los archivos típicos TGC, ya que no " "son volcados de discos reales." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "Dolphin no puede verificar los discos sin licencia." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." msgstr "" -"Dolphin usará esto para los títulos que no pueda determinar la región " -"automáticamente." +"Dolphin usará este ajuste para aquellos títulos en los que no pueda " +"determinar la región automáticamente." #: Source/Core/DolphinQt/Config/CheatWarningWidget.cpp:73 msgid "Dolphin's cheat system is currently disabled." @@ -3327,7 +3398,7 @@ msgstr "El sistema de trucos de Dolphin está desactivado." msgid "Domain" msgstr "Dominio" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "No quiero actualizar" @@ -3340,37 +3411,38 @@ msgid "Done compressing disc image." msgstr "Imagen de disco comprimida correctamente." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "Coma flotante doble" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Abajo" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "Descargar códigos" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "Descargar códigos desde la base de datos de WiiRD" #: Source/Core/DolphinQt/Settings/InterfacePane.cpp:146 msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" -msgstr "" -"Descargar las cubiertas de juegos de GameTDB.com para su uso en modo rejilla" +msgstr "Descargar las carátulas de GameTDB.com para el modo cuadrícula" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "Descarga completada" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "Se descargaron %1 códigos. (%2 de ellos nuevos)" @@ -3387,33 +3459,41 @@ msgstr "Tableta Drawsome" #: Source/Core/Core/HW/WiimoteEmu/Extension/Drums.cpp:54 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtension.cpp:71 msgid "Drum Kit" -msgstr "Kit de Tambor" +msgstr "Batería" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:210 msgid "Dual Core" msgstr "Doble núcleo" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "Vista doble" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" -msgstr "Falso" +msgstr "Dispositivo falso" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "Volcar" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "Volcar &ARAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "Volcar &ExRAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "Volcar &FakeVMEM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "Volcar &MRAM" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Volcar audio" @@ -3423,23 +3503,23 @@ msgstr "Volcar texturas base" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:71 msgid "Dump EFB Target" -msgstr "Volcar superficie EFB" +msgstr "Volcar superficie del EFB" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" -msgstr "Volcar cuadros" +msgstr "Volcar fotogramas" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:90 msgid "Dump Mip Maps" -msgstr "Volcar Mip Maps" +msgstr "Volcar mipmaps" #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:67 msgid "Dump Objects" msgstr "Volcar objetos" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" -msgstr "Ruta de volcado:" +msgstr "Ruta de volcados:" #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:75 msgid "Dump TEV Stages" @@ -3450,8 +3530,8 @@ msgid "" "Dump TEV Stages to User/Dump/Objects/.

If unsure, " "leave this unchecked." msgstr "" -"Vuelca las etapas de TEV en User/Dump/Objects/.

En " -"caso de duda, no actives esta opción." +"Vuelca las etapas de TEV en User/Dump/Objects/.

Si " +"tienes dudas, deja esta opción desactivada." #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:77 msgid "Dump Texture Fetches" @@ -3483,8 +3563,8 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" "Vuelca las texturas descifradas del juego en User/Dump/Textures/<" -"game_id>/.

En caso de duda, no actives esta " -"opción." +"game_id>/.

Si tienes dudas, deja esta opción " +"desactivada." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:350 msgid "Dump decrypted SSL reads" @@ -3531,8 +3611,8 @@ msgid "" "Dumps the contents of EFB copies to User/Dump/Textures/." "

If unsure, leave this unchecked." msgstr "" -"Vuelca el contenido de las copias de EFB en User/Dump/Textures/.

En caso de duda, no actives esta opción.
Si tienes dudas, deja esta opción desactivada." #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:242 @@ -3540,31 +3620,31 @@ msgid "" "Dumps the contents of XFB copies to User/Dump/Textures/." "

If unsure, leave this unchecked." msgstr "" -"Vuelca el contenido de las copias de XFB en User/Dump/Textures/.

En caso de duda, no actives esta opción.
Si tienes dudas, deja esta opción desactivada." #: Source/Core/DolphinQt/TAS/TASInputWindow.cpp:40 msgid "Duration of Turbo Button Press (frames):" -msgstr "Duracion de presion del boton turbo (fotogramas)" +msgstr "Duración de presión del botón turbo (fotogramas)" #: Source/Core/DolphinQt/TAS/TASInputWindow.cpp:46 msgid "Duration of Turbo Button Release (frames):" msgstr "Duración de liberación del botón turbo (fotogramas)" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Holandés" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "&Salir" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" -msgstr "" +msgstr "Copia del EFB %1" #: Source/Core/Core/HW/EXI/BBA/TAP_Win32.cpp:216 msgid "" @@ -3578,7 +3658,7 @@ msgstr "" "Dolphin, un reinicio vendrá bien en este momento para que Windows vea el " "nuevo driver" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3610,7 +3690,7 @@ msgstr "Efectos" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "Efectivo" @@ -3618,7 +3698,7 @@ msgstr "Efectivo" msgid "Effective priority" msgstr "Prioridad efectiva" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "EiB" @@ -3628,9 +3708,9 @@ msgstr "Expulsar disco" #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:41 msgid "Embedded Frame Buffer (EFB)" -msgstr "Búfer de fotogramas empotrado (EFB)" +msgstr "Búfer de imagen integrado (EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Vacía" @@ -3638,11 +3718,11 @@ msgstr "Vacía" msgid "Emu Thread already running" msgstr "El hilo de emulación ya está ejecutándose" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "Emular el adaptador Bluetooth de la Wii" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "Mando Wii emulado" @@ -3661,8 +3741,12 @@ msgstr "" msgid "Emulation Speed" msgstr "Velocidad de emulación" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "Es necesario empezar la emulación para poder grabar." + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3676,21 +3760,21 @@ msgstr "Activar capas de validación de la API" #: Source/Core/DolphinQt/Settings/AudioPane.cpp:140 msgid "Enable Audio Stretching" -msgstr "Forzar sincronía de audio" +msgstr "Activar expansión de audio" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Activar trucos" #: Source/Core/DolphinQt/Settings/AdvancedPane.cpp:143 msgid "Enable Custom RTC" -msgstr "Activar RTC personalizado" +msgstr "RTC personalizado" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:87 msgid "Enable Dual Core" msgstr "Activar doble núcleo" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Activar doble núcleo (más rápido)" @@ -3700,7 +3784,7 @@ msgstr "Forzar ciclos de reloj de CPU" #: Source/Core/DolphinQt/Settings/AdvancedPane.cpp:106 msgid "Enable Emulated Memory Size Override" -msgstr "Activar emulado de la sobrescritura del tamaño de la memoria" +msgstr "Forzar tamaño de la memoria emulada" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:89 msgid "Enable FPRF" @@ -3716,41 +3800,42 @@ msgid "Enable Progressive Scan" msgstr "Activar escaneo progresivo" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "Activar vibración" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Activar salvapantallas" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Activar envío de datos al altavoz" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "Informar de estadísticas de uso" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:51 msgid "Enable Wireframe" -msgstr "Ver alambrado de polígonos" +msgstr "Ver mallas de polígonos" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:105 msgid "" "Enable fast disc access. This can cause crashes and other problems in some " "games. (ON = Fast, OFF = Compatible)" msgstr "" -"Habilitar acceso rápido a disco puede causarte cuelgues y otros problemas en " -"algunos juegos. (Sí = Rápido, No = Máxima compatibilidad)" +"El acceso rápido a disco puede provocar cuelgues y otros problemas en " +"algunos juegos (Activado: el ajuste más rápido; Desactivado: el ajuste más " +"compatible)." #: Source/Core/DolphinQt/Settings/AudioPane.cpp:95 msgid "" "Enables Dolby Pro Logic II emulation using 5.1 surround. Certain backends " "only." msgstr "" -"Permite la emulación de Dolby Pro Logic II utilizando sonido envolvente 5.1. " -"Funciona solo en algunos motores de sonido." +"Emula el sistema Dolby Pro Logic II con un sonido envolvente 5.1. Funciona " +"solo en algunos motores de sonido." #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:101 msgid "" @@ -3759,22 +3844,22 @@ msgid "" msgstr "" "Activa la devolución de resultados de operación durante el cálculo de " "números de coma flotante («Floating Point Result Flag» en inglés), que es " -"necesario para algunos juegos. Activarlo aumenta la compatibilidad, al " -"desactivarlo las operaciones son más rápidas." +"necesaria para algunos juegos (Activado: el ajuste más compatible; " +"Desactivado: el ajuste más rápido)." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " "number of games.

If unsure, select 1x." msgstr "" -"Habilita el filtrado anisotrópico, lo que mejora la calidad visual de las " +"Activa el filtrado anisotrópico, lo que mejorará la calidad visual de las " "texturas que se encuentran en ángulos de visión oblicuos.

Puede " "causar problemas en un pequeño número de juegos.

Si " "tienes dudas, selecciona 1x." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3784,14 +3869,15 @@ msgid "" "Texture Decoding.

If unsure, leave this checked." msgstr "" -"Permite la detección de mipmaps arbitrarios, que algunos juegos utilizan " -"para efectos especiales basados en la distancia.

Puede tener falsos " -"positivos que resulta en texturas borrosas con una mayor resolución interna, " -"como en los juegos que utilizan mipmaps de muy baja resolución. Desactivando " -"esto también puede reducir los parones en juegos que frecuentemente cargan " -"nuevas texturas. Esta función no es compatible con la función de " -"decodificación de texturas de la GPU.

Si tienes " -"dudas, deja esta opción activada." +"Permite la detección de «mipmaps» arbitrarios, usados por algunos juegos " +"para renderizar efectos especiales basados en la distancia.

Puede " +"tener falsos positivos y provocar texturas borrosas con una mayor resolución " +"interna, por ejemplo, en aquellos juegos que usen «mipmaps» de muy baja " +"resolución. Al desactivar esta opción también se pueden reducir los parones " +"en juegos que carguen texturas nuevas con frecuencia. Esta función no es " +"compatible con la función de decodificación de texturas de la GPU." +"

Si tienes dudas, deja esta opción activada." #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:276 msgid "" @@ -3803,7 +3889,7 @@ msgstr "" "Permite el envío de comandos multihilo en aquellos motores que lo permitan. " "Esta opción puede mejorar del rendimiento en sistemas cuyas CPU tengan más " "de dos núcleos. Esta opción está actualmente limitada al motor de Vulkan." -"

En caso de duda, no actives esta opción.
Si tienes dudas, deja esta opción activada." #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:272 @@ -3818,9 +3904,10 @@ msgstr "" #: Source/Core/DolphinQt/Settings/AudioPane.cpp:149 msgid "Enables stretching of the audio to match emulation speed." -msgstr "Sincroniza el audio con la velocidad de emulación." +msgstr "" +"«Estira» el audio para que vaya sincronizado a la velocidad de emulación." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3828,9 +3915,10 @@ msgid "" "
" msgstr "" "Permite decodificar las texturas con la GPU en vez de la CPU.

Puede " -"mejorar el rendimiento en algunas situaciones en las que la CPU es peor que " -"tu tarjeta gráfica.

Si tienes dudas, deja esta " -"opción desactivada." +"mejorar el rendimiento en algunas situaciones puntuales o en aquellos " +"sistemas donde la CPU sea peor que la tarjeta gráfica." +"

Si tienes dudas, deja esta opción desactivada." #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:99 #: Source/Core/DolphinQt/Settings/AdvancedPane.cpp:68 @@ -3838,8 +3926,9 @@ msgid "" "Enables the Memory Management Unit, needed for some games. (ON = Compatible, " "OFF = Fast)" msgstr "" -"Habilita la Unidad de Manejo de Memoria, necesario para algunos juegos. (ON " -"= Compatible, OFF = Rápido)" +"Activa la Memory Management Unit (unidad de gestión de memoria), que es " +"necesaria para algunos juegos. (Activado: el ajuste más compatible; " +"Desactivado: el ajuste más rápido)." #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:212 msgid "" @@ -3848,18 +3937,18 @@ msgid "" "enables debug symbols for the compiled shaders.

If " "unsure, leave this unchecked." msgstr "" -"Habilita las llamadas de validación de la API usada por el motor de " -"dibujado, que podrían ser de ayuda para diagnosticar errores gráficos. En el " -"caso de los motores Vulkan y D3D, también se activarán los símbolos de " -"depuración en los sombreadores compilados.

Si " -"tienes dudas, deja esta opción desactivada." +"Activa la validación de las llamadas de la API usada por el motor de vídeo, " +"que podrían ser de ayuda para diagnosticar errores gráficos. En el caso de " +"los motores Vulkan y D3D, también se activarán los símbolos de depuración en " +"los sombreadores compilados.

Si tienes dudas, deja " +"esta opción desactivada." #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:255 msgid "" "Encodes frame dumps using the FFV1 codec.

If " "unsure, leave this unchecked." msgstr "" -"Codificar el volcado de fotogramas usando el códec FFV1." +"Codifica el volcado de fotogramas usando el códec FFV1." "

Si tienes dudas, deja esta opción desactivada." @@ -3868,7 +3957,7 @@ msgstr "" msgid "Encoding" msgstr "Codificando..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3886,12 +3975,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet no se inició" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Inglés" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3903,7 +3992,7 @@ msgstr "" "Introduce la dirección IP del dispositivo que esté ejecutando el cliente de " "XLink Kai:" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "Escribe un ID de dispositivo USB" @@ -3917,11 +4006,11 @@ msgstr "Introduce dirección para supervisar:" msgid "Enter new Broadband Adapter MAC address:" msgstr "Ingrese la nueva dirección MAC del adaptador de banda ancha:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "Introduce la contraseña" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "Escribe la dirección del módulo RSO:" @@ -3930,65 +4019,68 @@ msgstr "Escribe la dirección del módulo RSO:" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Error" @@ -4003,19 +4095,19 @@ msgstr "" "Hubo un error al cargar el idioma seleccionado. Se seguirá utilizando el " "idioma actual del sistema." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "Error al obtener la lista de sesiones: %1" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "Error al cargar algunos packs de texturas" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "Error al procesar los códigos." -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "Error en el procesamiento de datos." @@ -4035,33 +4127,33 @@ msgstr "¡Error al sincronizar los datos guardados!" msgid "Error writing file: {0}" msgstr "Error escribiendo el archivo: {0}" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." msgstr "" "Error: Tras «{0}» se ha encontrado {1} ({2:#x}) en vez de la marca de " -"guardado {3} ({4:#x}). Cancelando carga de la partida guardada..." +"guardado {3} ({4:#x}). Cancelando carga del estado de guardado..." #: Source/Core/Core/HW/GBACore.cpp:192 msgid "Error: GBA{0} failed to create core" -msgstr "Error: GBA{0} falló al crear el núcleo" +msgstr "Error: GBA{0} no se ha podido crear el núcleo" #: Source/Core/Core/HW/GBACore.cpp:347 msgid "Error: GBA{0} failed to load the BIOS in {1}" -msgstr "Error: GBA{0} falló al cargar la BIOS en {1}" +msgstr "Error: GBA{0} no se ha podido cargar la BIOS en {1}" #: Source/Core/Core/HW/GBACore.cpp:212 msgid "Error: GBA{0} failed to load the ROM in {1}" -msgstr "Error: GBA{0} falló al cargar la ROM en {1}" +msgstr "Error: GBA{0} no se ha podido cargar la ROM en {1}" #: Source/Core/Core/HW/GBACore.cpp:366 msgid "Error: GBA{0} failed to load the save in {1}" -msgstr "Error: GBA{0} falló al cargar el guardado en {1}" +msgstr "Error: GBA{0} no se ha podido cargar el guardado en {1}" #: Source/Core/Core/HW/GBACore.cpp:341 msgid "Error: GBA{0} failed to open the BIOS in {1}" -msgstr "Error: GBA{0} falló al abrir la BIOS en {1}" +msgstr "Error: GBA{0} no se ha podido abrir la BIOS en {1}" #: Source/Core/Core/HW/GBACore.cpp:182 msgid "Error: GBA{0} failed to open the ROM in {1}" @@ -4081,8 +4173,7 @@ msgid "" "not show fonts correctly, or crash." msgstr "" "Error: No ha sido posible cargar las tipografías de tipo «Shift JIS». Puede " -"que las letras de algunos juegos no se vean correctamente o que den " -"problemas." +"que los juegos se cuelguen o no muestren sus textos correctamente." #: Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:331 msgid "" @@ -4090,14 +4181,13 @@ msgid "" "may not show fonts correctly, or crash." msgstr "" "Error: No ha sido posible cargar las tipografías de tipo «Windows-1252». " -"Puede que las letras de algunos juegos no se vean correctamente o que den " -"problemas." +"Puede que los juegos se cuelguen o no muestren sus textos correctamente." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "Se encontraron errores en {0} bloques en la partición {1}." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "Se encontraron errores en {0} bloques sin uso en la partición {1}." @@ -4106,11 +4196,58 @@ msgstr "Se encontraron errores en {0} bloques sin uso en la partición {1}." msgid "Euphoria" msgstr "Euforia" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Europa" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" +"Ejemplo:\n" +"Deseas encontrar una función que se ejecuta al modificarse los puntos de " +"salud (o PS).\n" +"1. Empieza a grabar y juega sin dejar que se modifiquen los PS, después " +"pulsa el botón «El código no ha sido ejecutado».\n" +"2. Inmediatamente después, gana o pierde PS y pulsa «El código ha sido " +"ejecutado».\n" +"3. Repite los puntos 1 o 2 para acotar los resultados.\n" +"Las inclusiones («El código ha sido ejecutado») deberían contener " +"grabaciones breves que se centren en lo que te interese.\n" +"\n" +"Al pulsar el botón «El código ha sido ejecutado» dos veces, solo mantendrás " +"aquellas funciones que se hayan ejecutado durante las dos grabaciones. La " +"sección «Aciertos» se actualizará para reflejar el recuento de aciertos de " +"la última grabación. La sección «Aciertos totales» reflejará el número total " +"de veces en las que se ha ejecutado una función hasta que se borren ambas " +"listas pulsando Reiniciar.\n" +"\n" +"Clic derecho -> «Poner blr» pondrá un blr sobre el símbolo.\n" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "Excluido: %1" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "Excluido: 0" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "Ubershaders exclusivos" @@ -4159,14 +4296,14 @@ msgstr "Nombre de variable previsto." msgid "Experimental" msgstr "Experimental" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Exportar todas las partidas guardadas de Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "Hubo un fallo al exportar" @@ -4174,15 +4311,15 @@ msgstr "Hubo un fallo al exportar" msgid "Export Recording" msgstr "Exportar grabación" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Exportar grabación..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "Exportar partida guardada" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "Exportar archivos de guardado" @@ -4194,43 +4331,43 @@ msgstr "Exportar guardado de Wii" msgid "Export Wii Saves" msgstr "Exportar guardados de Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "Exportar como .&gcs..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "Exportar como .&sav..." -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "Exportados %n guardado(s)" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Extensión" #: Source/Core/DolphinQt/Config/Mapping/MappingWindow.h:120 msgid "Extension Motion Input" -msgstr "Entrada de Movimiento de Extensión" +msgstr "Entrada de movimiento de extensión" #: Source/Core/DolphinQt/Config/Mapping/MappingWindow.h:121 msgid "Extension Motion Simulation" -msgstr "Simulación de Movimiento de Extensión" +msgstr "Simulación de movimiento de extensión" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "Externo" #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:83 msgid "External Frame Buffer (XFB)" -msgstr "Superficie de dibujado externo (XFB)" +msgstr "Búfer de imagen externo (XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "Extraer certificados de la NAND" @@ -4268,7 +4405,7 @@ msgid "FD" msgstr "FD" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "Reproductor FIFO" @@ -4276,7 +4413,7 @@ msgstr "Reproductor FIFO" msgid "Failed loading XML." msgstr "No se ha podido cargar el archivo XML." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" @@ -4284,23 +4421,23 @@ msgstr "" "Error al abrir la tarjeta de memoria:\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "No se ha podido añadir esta sesión al índice de juego en red: %1" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" -msgstr "No se ha podido añadir al archivo de firma '%1'" +msgstr "No se ha podido añadir al archivo de firma «%1»" #: Source/Core/Core/IOS/USB/Bluetooth/BTReal.cpp:593 msgid "Failed to claim interface for BT passthrough" -msgstr "No se ha podido controlar la interfaz para la cesión de BT real" +msgstr "No se ha podido controlar la interfaz para el acceso directo a BT" #: Source/Core/DiscIO/VolumeVerifier.cpp:107 msgid "Failed to connect to Redump.org" msgstr "No se ha podido conectar con redump.org" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "No se ha podido conectar al servidor: %1" @@ -4315,20 +4452,20 @@ msgstr "No se ha podido crear el contexto D312" #: Source/Core/VideoBackends/D3D12/VideoBackend.cpp:115 msgid "Failed to create D3D12 global resources" -msgstr "No se han podido crear los recursos globales de D3D12" +msgstr "No se ha podido crear los recursos globales de D3D12" #: Source/Core/VideoBackends/D3D/D3DBase.cpp:59 msgid "Failed to create DXGI factory" msgstr "No se ha podido crear el almacén de DXGI" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -"No se ha podido eliminar el guardado {0} de juego en red de GBA. Comprueba " -"tus permisos de escritura." +"No se ha podido borrar el guardado {0} de juego en red de GBA. Comprueba tus " +"permisos de escritura." -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" "No se ha podido borrar la tarjeta de memoria del juego en red. Comprueba tus " @@ -4341,34 +4478,34 @@ msgstr "No se ha podido borrar el archivo seleccionado." #: Source/Core/Core/IOS/USB/Bluetooth/BTReal.cpp:586 msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -"No se ha podido desvincular el controlador del kernel para realizar el " -"«passthrough» de BT: [0]" +"No se ha podido desvincular el controlador del kernel para ejecutar el " +"acceso directo a BT: {0}" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." -msgstr "No se han podido descargar los códigos." +msgstr "No se ha podido descargar los códigos." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "No se ha podido volcar %1: Hubo un fallo al abrir el archivo" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -"No se ha podido volcar %1: Hubo un fallo al escribir los datos en el archivo" +"No se ha podido volcar %1: no se han podido escribir los datos en el archivo" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." -msgstr "No se han podido exportar %n de %1 archivos de guardado" +msgstr "No se ha(n) podido exportar %n de %1 archivo(s) de guardado." #: Source/Core/DolphinQt/GameList/GameList.cpp:532 msgid "Failed to export the following save files:" -msgstr "No se han podido exportar los siguientes archivos de guardado:" +msgstr "No se ha podido exportar los siguientes archivos de guardado:" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" -msgstr "No se han podido extraer los certificados de la NAND." +msgstr "No se ha podido extraer los certificados de la NAND." #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 msgid "Failed to extract file." @@ -4376,7 +4513,7 @@ msgstr "No se ha podido extraer el archivo." #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 msgid "Failed to extract system data." -msgstr "No se han podido extraer los datos del sistema." +msgstr "No se ha podido extraer los datos del sistema." #: Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp:629 msgid "" @@ -4384,34 +4521,34 @@ msgid "" "{0}\n" " will be overwritten" msgstr "" -"No se encontró un nuevo nombre para el archivo:\n" +"No se ha podido encontrar un nuevo nombre para el archivo.\n" "{0}\n" -"por lo que se sobrescribirá." +"será sobreescrito." #: Source/Core/VideoBackends/D3DCommon/D3DCommon.cpp:55 msgid "Failed to find one or more D3D symbols" msgstr "No se ha podido encontrar uno o más símbolos D3D" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." -msgstr "No se ha podido importar \"%1\"." +msgstr "No se ha podido importar «%1»." -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -"No se ha podido importar archivo de guardado. Por favor, lanza el juego otra " -"vez, e inténtalo de nuevo." +"No se ha podido importar el archivo de guardado. Por favor, lanza el juego " +"otra vez, e inténtalo de nuevo." -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -"No se ha podido importar archivo de guardado. El archivo parece estar " +"No se ha podido importar el archivo de guardado. El archivo parece estar " "corrupto o no es un archivo válido de Wii." -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " @@ -4419,10 +4556,10 @@ msgid "" msgstr "" "No se ha podido importar la partida guardada. Tu memoria NAND puede estar " "corrupta, o a lo mejor hay algo que previene el acceso a los archivos que " -"contiene. Prueba a reparar tu NAND y a importar los datos de guardado otra " -"vez." +"contiene. Prueba a reparar tu NAND (Herramientas -> Administrar NAND -> " +"Comprobar NAND...) y a importar los datos de guardado otra vez." -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "No se ha podido iniciar el núcleo" @@ -4432,22 +4569,25 @@ msgid "" "Make sure your video card supports at least D3D 10.0\n" "{0}" msgstr "" +"No se ha podido iniciar Direct3D.\n" +"Asegúrate de que tu tarjeta de vídeo soporta al menos D3D 10.0\n" +"{0} " #: Source/Core/VideoBackends/D3D12/VideoBackend.cpp:142 #: Source/Core/VideoBackends/OGL/OGLMain.cpp:197 msgid "Failed to initialize renderer classes" msgstr "No se han podido iniciar las clases de renderizado" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "No se ha podido instalar el paquete: %1" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "No se ha podido instalar el juego en la NAND." -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" @@ -4455,8 +4595,8 @@ msgstr "" "No se ha podido recibir conexiones en el puerto %1. ¿Hay otra instancia del " "servidor de juego en red funcionando?" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "No se ha podido cargar el módulo RSO en %1" @@ -4468,11 +4608,11 @@ msgstr "No se ha podido cargar d3d11.dll" msgid "Failed to load dxgi.dll" msgstr "No se ha podido cargar dxgi.dll" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" -msgstr "No se ha podido cargar el archivo de mapa '%1'" +msgstr "No se ha podido cargar el archivo de mapa «%1»" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "No se ha podido cargar el ejecutable en memoria." @@ -4481,11 +4621,11 @@ msgid "" "Failed to load {0}. If you are using Windows 7, try installing the KB4019990 " "update package." msgstr "" -"No se ha podido cargar {0}. Si utilizas Windows 7 prueba instalando el " +"No se ha podido cargar {0}. Si utilizas Windows 7, prueba a instalar el " "paquete de actualización KB4019990." #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "No se ha podido abrir «%1»" @@ -4513,13 +4653,13 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" "No se ha podido abrir el archivo en el editor externo.\n" -"Asegúrese de que haya una aplicación asignada para abrir archivos INI." +"Asegúrate de que haya una aplicación asignada para abrir archivos INI." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "No se ha podido abrir el archivo." -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "No se ha podido contactar con el servidor" @@ -4528,7 +4668,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "No se ha podido abrir el archivo de entrada \"%1\"." #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4543,7 +4683,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "No se han podido analizar los datos de redump.org" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" "No se ha podido convertir el valor asignado en el tipo de datos indicado." @@ -4552,26 +4692,26 @@ msgstr "" msgid "Failed to read DFF file." msgstr "No se ha podido leer el archivo DFF." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "No se ha podido leer desde el archivo." #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "No se ha podido leer el archivo de entrada «{0}»." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -"No se ha podido leer los archivos seleccionados de la tarjeta de memoria." +"No se han podido leer los archivos seleccionados de la tarjeta de memoria." -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "No se ha podido leer {0}." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "No se ha podido eliminar el archivo" @@ -4589,19 +4729,19 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "No se ha podido desinstalar el juego de la NAND." -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" "No se ha podido restablecer el juego en red y la carpeta GCI. Comprueba tus " "permisos de escritura." -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" "No se ha podido restablecer el juego en red en la carpeta NAND. Comprueba " "tus permisos de escritura." -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" "No se ha podido reiniciar la carpeta de redireccionamiento del juego en red. " @@ -4611,23 +4751,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "No se ha podido guardar el registro FIFO." -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "No se ha podido guardar el mapa de código en la ruta '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "No se ha podido guardar el archivo de firma '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "No se ha podido guardar el mapa de símbolos en la ruta '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "No se ha podido guardar en el archivo de firma '%1'" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "No se ha podido desinstalar el paquete: %1" @@ -4635,11 +4775,11 @@ msgstr "No se ha podido desinstalar el paquete: %1" msgid "Failed to write BT.DINF to SYSCONF" msgstr "No se ha podido escribir BT.DINF a SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." -msgstr "No se han podido escribir los datos de Miis" +msgstr "No se ha podido escribir los datos de Miis" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "No se ha podido escribir el guardado de Wii." @@ -4647,22 +4787,22 @@ msgstr "No se ha podido escribir el guardado de Wii." msgid "Failed to write config file!" msgstr "¡No se ha podido escribir el archivo de configuración!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "No se ha podido escribir la tarjeta de memoria modificada en el disco." -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "No se ha podido escribir la partida guardada redirigida." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "No se ha podido escribir el guardado en el disco" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4673,32 +4813,32 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "Fallido" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "Retraso de entrada justo" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "Región de respaldo" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "Región de respaldo:" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:232 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:79 msgid "Fast" -msgstr "Rápido" +msgstr "Rápida" #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:103 msgid "Fast Depth Calculation" msgstr "Cálculo de profundidad rápido" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4717,7 +4857,7 @@ msgstr "Detalles del archivo" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "Formato del archivo" @@ -4731,18 +4871,18 @@ msgstr "Información del archivo" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Nombre del archivo" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "Ruta del archivo" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Tamaño del archivo" @@ -4750,13 +4890,13 @@ msgstr "Tamaño del archivo" msgid "File Size:" msgstr "Tamaño del archivo:" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "El archivo no contenía códigos." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" -msgstr "Nombre de archivo" +msgstr "Nombre del archivo" #: Source/Core/DiscIO/CompressedBlob.cpp:289 msgid "Files opened, ready to compress." @@ -4770,13 +4910,13 @@ msgstr "" "Archivos especificados en el archivo M3U «{0}» no fueron encontrados:\n" "{1}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -"El tamaño del archivo no empareja con ningún conocido tamaño de tarjeta de " -"memoria de GameCube" +"El tamaño del archivo no coincide con ningún tamaño conocido de tarjetas de " +"memoria de GameCube." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" "El tamaño del archivo en el encabezado no coincide con el tamaño de la " @@ -4786,32 +4926,32 @@ msgstr "" msgid "Filesystem" msgstr "Sistema de archivos" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "Filtrar símbolos" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "Filtros" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " "but will cause issues in others.

If unsure, leave " "this unchecked." msgstr "" -"Filtra todas las texturas, incluyendo las que el juego establece " -"explícitamente como no filtradas.

Puede mejorar la calidad de ciertas " +"Filtra todas las texturas, incluyendo aquellas que establezca explícitamente " +"el juego como no filtradas.

Puede mejorar la calidad de ciertas " "texturas en algunos juegos, pero puede causar problemas en otros." "

Si tienes dudas, deja esta opción desactivada." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "Buscar &siguiente" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "Buscar &anterior" @@ -4827,18 +4967,22 @@ msgstr "" "Terminando de actualizar...\n" "Puede tardar un poco." -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "Primera persona" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Reparar sumas de verificación" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "Error al reparar las sumas de verificación" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "Alineación fija" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4848,21 +4992,22 @@ msgstr "Indicadores" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "Coma flotante" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "Seguir &rama" #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:890 msgid "For best results please slowly move your input to all possible regions." msgstr "" -"Para obtener los mejores resultados, mueva lentamente su entrada a todas las " -"regiones posibles." +"Para obtener los mejores resultados, mueve lentamente la entrada hacia todas " +"las regiones posibles." #: Source/Core/DolphinQt/Settings/BroadbandAdapterSettingsDialog.cpp:42 msgid "" @@ -4884,7 +5029,7 @@ msgstr "" msgid "Force 16:9" msgstr "Forzar 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "Forzar color de 24 bits" @@ -4892,15 +5037,15 @@ msgstr "Forzar color de 24 bits" msgid "Force 4:3" msgstr "Forzar 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "Forzar escucha en puerto:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Forzar filtrado de texturas" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4909,26 +5054,27 @@ msgid "" "widescreen patches.

If unsure, leave this unchecked." "" msgstr "" -"Fuerza al juego a mostrar los gráficos en cierta relación de aspecto o " -"formato panorámico.Utilízalo junto con «relación de aspecto» configurada en " -"«forzar 16:9» para hacer que juegos 4:3 aparezcan en 16:9.

Raramente " -"produce resultados satisfactorios, a menudo oscureciendo o o mostrando de " -"forma incorrecta interfaces y efectos varios.Innecesario (e incluso " -"perjudicial) al usar cualquier tipo de parche panorámico utilizando códigos " -"AR ó Gecko.

Si tienes dudas, deja esta opción " -"desactivada." +"Fuerza al juego a mostrar los gráficos en una relación de aspecto que no sea " +"la original. Cambia también el ajuste «Relación de aspecto» a «Forzar 16:9» " +"para que los juegos que solo se muestren en formato 4:3 lo hagan en 16:9." +"

No suele producir resultados satisfactorios y a menudo muestra de " +"forma incorrecta los gráficos o la interfaz de los juegos. Es una opción " +"innecesaria (e incluso perjudicial) si se utilizan parches AR o Gecko para " +"forzar una imagen panorámica.

Si tienes dudas, deja " +"esta opción desactivada." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " "performance and causes few graphical issues.

If " "unsure, leave this checked." msgstr "" -"Fuerza al juego a renderizar los canales de color RGB en 24 bits, aumentando " -"la calidad reduciendo las bandas de color

No tiene impacto en el " -"rendimiento y provoca pocos fallos gráficos

Si " -"tienes dudas, deja esta opción activada." +"Fuerza al juego a renderizar los canales de color RGB en 24 bits, lo que " +"reducirá el efecto de bandas de colores y aumentará la calidad.

No " +"afecta al rendimiento y provoca pocos fallos gráficos." +"

Si tienes dudas, deja esta opción activada." #: Source/Core/DolphinQt/ConvertDialog.cpp:57 msgid "Format:" @@ -4941,21 +5087,21 @@ msgstr "Formato:" msgid "Forward" msgstr "Adelante" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Reenviar puerto (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "Encontrados %1 resultados para \"%2\"" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "Se ha(n) encontrado %n dirección(ones)." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "Fotograma %1" @@ -4978,13 +5124,13 @@ msgstr "Avanzar fotogramas a la veloc. original" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:98 msgid "Frame Dumping" -msgstr "Volcado de Fotogramas" +msgstr "Volcado de fotogramas" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:105 msgid "Frame Range" msgstr "Información de la grabación" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" "Ya existe un volcado de imagen(es) llamado «{0}». ¿Quieres sustituirlo?" @@ -4997,37 +5143,37 @@ msgstr "Fotogramas a grabar:" msgid "France" msgstr "Francia" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "Bloques libres: %1" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "Archivos libres: %1" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" -msgstr "Tipo de control de la vista libre" +msgstr "Tipo de control de la cámara libre" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" -msgstr "Mando %1 de la vista libre" +msgstr "Mando %1 de la cámara libre" #: Source/Core/DolphinQt/Config/FreeLookWindow.cpp:17 msgid "Free Look Settings" -msgstr "Opciones de Vista libre:" +msgstr "Ajustes de cámara libre" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions, refer to " "this page." msgstr "" -"Vista libre permite manipular la cámara del juego. Diferentes tipos de " -"cámara estan dsiponibles en el listado.

Para instrucciones detalladas," -"consulta " -"está página" +"La cámara libre permite manipular la cámara del juego. En el listado " +"encontrarás varios tipos de cámara.

Para más información,consulta esta " +"página." #: Source/Core/Core/FreeLookManager.cpp:297 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:25 @@ -5040,11 +5186,11 @@ msgstr "Cámara libre" #: Source/Core/Core/HotkeyManager.cpp:120 msgid "Freelook Toggle" -msgstr "Interruptor de Cámara libre" +msgstr "Interruptor de cámara libre" #: Source/Core/DiscIO/Enums.cpp:86 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:124 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 msgid "French" msgstr "Francés" @@ -5058,11 +5204,11 @@ msgstr "Frecuencia" msgid "Frets" msgstr "Trastes" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 msgid "From" msgstr "Desde" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:94 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:109 msgid "From:" @@ -5076,23 +5222,23 @@ msgstr "Pant. completa" msgid "Function" msgstr "Función" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:128 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:130 msgid "Function callers" msgstr "Llamadas a función" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:120 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:122 msgid "Function calls" msgstr "Llamadas de función" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:285 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:286 msgid "Functions" msgstr "Funciones" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:36 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:37 msgid "GBA (Integrated)" msgstr "GBA (Integrado)" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:38 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 msgid "GBA (TCP)" msgstr "GBA (TCP)" @@ -5104,7 +5250,7 @@ msgstr "Núcleo de GBA" msgid "GBA Port %1" msgstr "Puerto %1 GBA" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:139 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:140 msgid "GBA Settings" msgstr "Ajustes de GBA" @@ -5116,11 +5262,11 @@ msgstr "Volumen de GBA" msgid "GBA Window Size" msgstr "Tamaño de la ventana de GBA" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:754 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:793 msgid "GBA%1 ROM changed to \"%2\"" msgstr "ROM GBA%1 cambiada a \"%2\"" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:759 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:798 msgid "GBA%1 ROM disabled" msgstr "ROM GBA%1 desactivada" @@ -5141,7 +5287,7 @@ msgstr "" msgid "GCZ GC/Wii images (*.gcz)" msgstr "Archivos GCZ de GC/Wii (*.gcz)" -#: Source/Core/VideoCommon/CommandProcessor.cpp:628 +#: Source/Core/VideoCommon/CommandProcessor.cpp:658 msgid "" "GFX FIFO: Unknown Opcode ({0:#04x} @ {1}, preprocess={2}).\n" "This means one of the following:\n" @@ -5153,6 +5299,17 @@ msgid "" "Further errors will be sent to the Video Backend log and\n" "Dolphin will now likely crash or hang. Enjoy." msgstr "" +"GFX FIFO: código de operación desconocido ({0:#04x} en {1}, " +"preproceso={2}).\n" +"Puede significar una de las siguientes cosas:\n" +"* La GPU emulada se ha desincronizado, desactivar el doble núcleo puede " +"ayudar.\n" +"* Se ha corrompido el «command stream» por culpa de algún fallo de memoria.\n" +"* Se ha encontrado un «opcode» nunca visto (poco probable).\n" +"* Otro tipo de problema, fallo o error.\n" +"\n" +"Se enviará más información de los errores al registro del motor de vídeo y " +"es probable que Dolphin se cuelgue en breve. ¡Buena suerte!" #: Source/Core/VideoBackends/OGL/OGLMain.cpp:164 msgid "GL_MAX_TEXTURE_SIZE is {0} - must be at least 1024." @@ -5167,86 +5324,86 @@ msgid "" "GPU: ERROR: Need GL_ARB_framebuffer_object for multiple render targets.\n" "GPU: Does your video card support OpenGL 3.0?" msgstr "" -"GPU: ERROR: Necesario GL_ARB_framebuffer_object para el renderizado de " -"objetivos múltiples.\n" -"GPU: ¿Soporta tu tarjeta gráfica OpenGL 3.0?" +"GPU: ERROR: Es necesaria la función GL_ARB_framebuffer_object para " +"renderizar objetivos múltiples.\n" +"GPU: ¿Tu tarjeta gráfica es compatible con OpenGL 3.0?" #: Source/Core/VideoBackends/OGL/OGLMain.cpp:128 msgid "GPU: OGL ERROR: Does your video card support OpenGL 2.0?" -msgstr "GPU: OGL ERROR: ¿Soporta tu tarjeta gráfica OpenGL 2.0?" +msgstr "GPU: ERROR DE OGL: ¿Tu tarjeta gráfica es compatible con OpenGL 2.0?" #: Source/Core/VideoBackends/OGL/OGLRender.cpp:375 msgid "" "GPU: OGL ERROR: Need GL_ARB_map_buffer_range.\n" "GPU: Does your video card support OpenGL 3.0?" msgstr "" -"GPU: OGL ERROR: Necesario GL_ARB_map_buffer_range.\n" -"GPU: ¿Soporta tu tarjeta gráfica OpenGL 3.0?" +"GPU: ERROR DE OGL: Es necesaria la función GL_ARB_map_buffer_range.\n" +"GPU: ¿Tu tarjeta gráfica es compatible con OpenGL 3.0?" #: Source/Core/VideoBackends/OGL/OGLRender.cpp:400 msgid "" "GPU: OGL ERROR: Need GL_ARB_sampler_objects.\n" "GPU: Does your video card support OpenGL 3.3?" msgstr "" -"GPU: OGL ERROR: Necesario GL_ARB_sampler_objects.\n" -"GPU: ¿Soporta tu tarjeta gráfica OpenGL 3.3?" +"GPU: ERROR DE OGL: Es necesaria la función GL_ARB_sampler_objects.\n" +"GPU: ¿Tu tarjeta gráfica es compatible con OpenGL 3.3?" #: Source/Core/VideoBackends/OGL/OGLRender.cpp:384 msgid "" "GPU: OGL ERROR: Need GL_ARB_uniform_buffer_object.\n" "GPU: Does your video card support OpenGL 3.1?" msgstr "" -"GPU: OGL ERROR: Necesario GL_ARB_uniform_buffer_object.\n" -"GPU: ¿Soporta tu tarjeta gráfica OpenGL 3.1?" +"GPU: ERROR DE OGL: Es necesaria la función GL_ARB_uniform_buffer_object.\n" +"GPU: ¿Tu tarjeta gráfica es compatible con OpenGL 3.1?" #: Source/Core/VideoBackends/OGL/OGLRender.cpp:366 msgid "" "GPU: OGL ERROR: Need GL_ARB_vertex_array_object.\n" "GPU: Does your video card support OpenGL 3.0?" msgstr "" -"GPU: OGL ERROR: Necesario GL_ARB_vertex_array_object.\n" -"GPU: ¿Soporta tu tarjeta gráfica OpenGL 3.0?" +"GPU: ERROR DE OGL: Es necesaria la función GL_ARB_vertex_array_object.\n" +"GPU: ¿Tu tarjeta gráfica es compatible con OpenGL 3.0?" #: Source/Core/VideoBackends/OGL/OGLMain.cpp:135 msgid "" "GPU: OGL ERROR: Need OpenGL version 3.\n" "GPU: Does your video card support OpenGL 3?" msgstr "" -"GPU: OGL ERROR: Necesario OpenGL version 3.\n" -"GPU: ¿Soporta tu tarjeta gráfica OpenGL 3?" +"GPU: ERROR DE OGL: Es necesario un soporte de OpenGL 3.\n" +"GPU: ¿Tu tarjeta gráfica es compatible con OpenGL 3?" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:592 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:593 msgid "" "GPU: OGL ERROR: Need at least GLSL 1.30\n" "GPU: Does your video card support OpenGL 3.0?\n" "GPU: Your driver supports GLSL {0}" msgstr "" -"GPU: OGL ERROR: Necesario al menos GLSL 1.30\n" -"GPU: ¿Soporta tu tarjeta gráfica OpenGL 3.0?\n" -"GPU: Tus drivers soportan GLSL {0}" +"GPU: ERROR DE OGL: Es necesario un soporte mínimo de, al menos, GLSL 1.30\n" +"GPU: ¿Tu tarjeta gráfica es compatible con OpenGL 3.0?\n" +"GPU: Tus drivers admiten GLSL {0}" #: Source/Core/VideoBackends/OGL/OGLMain.cpp:152 msgid "" "GPU: OGL ERROR: Number of attributes {0} not enough.\n" "GPU: Does your video card support OpenGL 2.x?" msgstr "" -"GPU: OGL ERROR: {0} no son suficientes atributos.\n" -"GPU: ¿Soporta tu tarjeta gráfica OpenGL 2.x?" +"GPU: ERROR DE OGL: {0} no son suficientes atributos.\n" +"GPU: ¿Tu tarjeta gráfica es compatible con OpenGL 2.x?" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "Game" msgstr "Juego" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:392 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:393 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 msgid "Game Boy Advance" msgstr "Game Boy Advance" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:374 msgid "Game Boy Advance Carts (*.gba)" msgstr "Cartuchos de Game Boy Advance (*.gba)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:539 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:540 msgid "" "Game Boy Advance ROMs (*.gba *.gbc *.gb *.7z *.zip *.agb *.mb *.rom *.bin);;" "All Files (*)" @@ -5254,7 +5411,7 @@ msgstr "" "ROMs de Game Boy Advance (*.gba *.gbc *.gb *.7z *.zip *.agb *.mb *.rom *." "bin);;Todos los archivos (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:391 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:392 msgid "Game Boy Advance at Port %1" msgstr "Game Boy Advance en el puerto %1" @@ -5266,29 +5423,29 @@ msgstr "Ajustes de juego" msgid "Game Details" msgstr "Detalles del juego:" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:137 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:138 msgid "Game Folders" msgstr "Carpetas de juego" #: Source/Core/DolphinQt/GameList/GameList.cpp:941 -#: Source/Core/DolphinQt/MenuBar.cpp:627 +#: Source/Core/DolphinQt/MenuBar.cpp:637 msgid "Game ID" msgstr "Id. de juego" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:122 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:110 msgid "Game ID:" msgstr "Id. de juego:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Game Status" msgstr "Estado del juego" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:746 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:785 msgid "Game changed to \"%1\"" msgstr "Juego cambiado a «%1»" -#: Source/Core/Core/NetPlayClient.cpp:1707 +#: Source/Core/Core/NetPlayClient.cpp:1712 msgid "Game is already running!" msgstr "¡El juego ya está ejecutándose!" @@ -5301,13 +5458,13 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:145 msgid "Game-Specific Settings" -msgstr "Configuración específica del juego" +msgstr "Ajustes específicos del juego " #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:41 msgid "GameCube" msgstr "GameCube" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 msgid "GameCube Adapter for Wii U" msgstr "Adaptador de GameCube para Wii U" @@ -5315,40 +5472,40 @@ msgstr "Adaptador de GameCube para Wii U" msgid "GameCube Adapter for Wii U at Port %1" msgstr "Adaptador de GameCube para Wii U en el puerto %1" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:405 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:406 msgid "GameCube Controller" msgstr "Mando de GameCube" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:404 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:405 msgid "GameCube Controller at Port %1" msgstr "Mando de GameCube en el puerto %1" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:70 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:71 msgid "GameCube Controllers" msgstr "Mandos de GameCube" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:397 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:398 msgid "GameCube Keyboard" -msgstr "Teclado GameCube" +msgstr "Teclado de GameCube" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:396 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:397 msgid "GameCube Keyboard at Port %1" msgstr "Configuración del teclado GameCube en el puerto %1" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:98 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:99 msgid "GameCube Memory Card Manager" msgstr "Administrar tarjetas de memoria de GameCube" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 msgid "GameCube Memory Cards" msgstr "Tarjetas de memoria de GameCube" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:307 msgid "GameCube Memory Cards (*.raw *.gcp)" -msgstr "Tarjetas de memoria GameCube (*.raw *.gcp)" +msgstr "Tarjetas de memoria de GameCube (*.raw *.gcp)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:409 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:410 msgid "GameCube Microphone Slot %1" msgstr "Ranura de micrófono de GameCube %1" @@ -5367,35 +5524,35 @@ msgstr "Códigos Gecko" #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:98 #: Source/Core/DolphinQt/Config/Graphics/PostProcessingConfigWindow.cpp:115 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGeneral.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:435 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:456 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:436 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:37 msgid "General" msgstr "General" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 msgid "General and Options" msgstr "Ajustes generales" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:430 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:453 msgid "Generate Action Replay Code" msgstr "Generar código «ActionReplay»" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:228 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:234 msgid "Generate a New Statistics Identity" msgstr "Generar un nuevo identificador para estadísticas" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:466 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:489 msgid "Generated AR code." msgstr "Se ha generado el código AR." -#: Source/Core/DolphinQt/MenuBar.cpp:1249 +#: Source/Core/DolphinQt/MenuBar.cpp:1259 msgid "Generated symbol names from '%1'" msgstr "Nombres de símbolos generados desde «%1»" #: Source/Core/DiscIO/Enums.cpp:83 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:124 msgid "German" msgstr "Alemán" @@ -5403,7 +5560,7 @@ msgstr "Alemán" msgid "Germany" msgstr "Alemania" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "GiB" msgstr "GiB" @@ -5411,7 +5568,7 @@ msgstr "GiB" msgid "Go to" msgstr "Ir a" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 msgid "Golf Mode" msgstr "Modo golf" @@ -5420,7 +5577,7 @@ msgid "Good dump" msgstr "Volcado bueno" #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:33 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:445 #: Source/Core/DolphinQt/ToolBar.cpp:131 msgid "Graphics" msgstr "Gráficos" @@ -5430,7 +5587,7 @@ msgstr "Gráficos" msgid "Graphics Toggles" msgstr "Ajustes gráficos" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:310 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:311 msgid "" "Greatly increases the quality of textures generated using render-to-texture " "effects.

Slightly increases GPU load and causes relatively few " @@ -5440,7 +5597,7 @@ msgid "" msgstr "" "Aumenta en gran medida la calidad de las texturas generadas usando efectos " "de renderizar a textura.

El aumento de la resolución interna mejorará " -"el efecto de este ajuste.Aumenta ligeramente la carga de GPU y causa " +"el efecto de este ajuste. Aumenta ligeramente la carga de GPU y causa " "relativamente pocos problemas gráficos.

Si tienes " "dudas, deja esta opción activada." @@ -5457,7 +5614,7 @@ msgstr "Verde izquierda" msgid "Green Right" msgstr "Verde derecha" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "Vista en cuadrícula" @@ -5468,9 +5625,9 @@ msgstr "Guitarra" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:215 msgid "Gyroscope" -msgstr "Giróscopio" +msgstr "Giroscopio" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5483,13 +5640,30 @@ msgstr "Arreglos temporales" msgid "Head" msgstr "Inicio" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "Ayuda" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" -msgstr "Cadena hexadecimal" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "Hexadecimal" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "16 (hexad.)" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "32 (hexad.)" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "8 (hexad.)" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" +msgstr "Cadena hexadecimal en bytes" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 @@ -5500,19 +5674,19 @@ msgstr "Hexadecimal" msgid "Hide" msgstr "Esconder" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "Ocultar todo" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "Ocultar sesiones en curso" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "Ocultar sesiones no compatibles" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "Ocultar GBAs remotas" @@ -5530,21 +5704,27 @@ msgstr "Más alto" msgid "Hit Strength" msgstr "Fuerza de golpe" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "Aciertos" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "FOV horizontal" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Alojar partida" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "Código del anfitrión:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "Autoridad de entrada del host" @@ -5552,7 +5732,7 @@ msgstr "Autoridad de entrada del host" msgid "Host Size" msgstr "Tamaño de host" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5565,13 +5745,13 @@ msgstr "" "Adecuado para juegos casuales con más de 3 jugadores, posiblemente en " "conexiones inestables o de alta latencia." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "Autorización de entrada del host deshabilitada" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" -msgstr "Autorización de entrada del host habilitada" +msgstr "Autorización de entrada del host activada" #: Source/Core/DolphinQt/GameList/GameList.cpp:477 msgid "Host with NetPlay" @@ -5581,7 +5761,7 @@ msgstr "Anfitrión con juego en red" msgid "Hostname" msgstr "Nombre del anfitrión" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "Ajustes de atajos" @@ -5593,7 +5773,8 @@ msgstr "Atajos del teclado" #: Source/Core/DolphinQt/Settings/InterfacePane.cpp:148 msgid "Hotkeys Require Window Focus" -msgstr "Las teclas de acceso rápido requieren el foco de la ventana" +msgstr "" +"Reconocer los atajos de teclado solo cuando la ventana esté en primer plano" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:117 msgid "Hybrid Ubershaders" @@ -5624,8 +5805,8 @@ msgid "" "https://dolphin-emu.org/docs/guides/wii-network-guide/ for instructions on " "setting up Wii networking." msgstr "" -"IOS: Uno de los archivos necesarios para utilizar los servicios SSL ({0}) no " -"vale. Ve a https://dolphin-emu.org/docs/guides/wii-network-guide/ para " +"IOS: Un archivo necesario para utilizar los servicios SSL ({0}) no es " +"válido. Ve a https://dolphin-emu.org/docs/guides/wii-network-guide/ para " "aprender a configurar la red de tu Wii virtual." #: Source/Core/Core/IOS/Network/SSL.cpp:158 @@ -5638,20 +5819,20 @@ msgstr "" "se pudo leer. Ve a https://dolphin-emu.org/docs/guides/wii-network-guide/ " "para aprender a configurar la red de tu Wii virtual." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "Dirección IP:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" -msgstr "Ajustes de IPL" +msgstr "Ajustes del IPL" #: Source/Core/DolphinQt/TAS/WiiTASInputWindow.cpp:47 msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "Sensibilidad IR:" @@ -5673,25 +5854,26 @@ msgid "" "encrypted Wii data." msgstr "" "ISO: Un formato simple y robusto que es soportado por multitud de programas. " -"Necesita más espacio que cualquier otro formato\n" +"Ocupa más espacio que cualquier otro formato.\n" "\n" -"GCZ: Un formato de compresión básico que es compatible con la mayoría de " +"GCZ: Un formato con compresión básica que es compatible con la mayoría de " "versiones de Dolphin y algunos programas. No puede comprimir eficientemente " "los datos basura (a menos que se eliminen) o los datos encriptados de Wii.\n" "\n" -"WIA: Un formato de compresión avanzado que es compatible con Dolphin " -"5.0-12188 y posteriores y unos pocos programas. Puede eficientemente " -"comprimir los datos encriptados de Wii pero no los datos basura.\n" +"WIA: Un formato con compresión avanzada que es compatible con las versiones " +"5.0-12188 y posteriores de Dolphin y unos pocos programas. Puede comprimir " +"los datos encriptados de Wii eficientemente, pero no los datos basura (a " +"menos que se eliminen).\n" "\n" -"RVZ: Un formato de compresión avanzado que es compatible con Dolphin " -"5.0-12188 y posteriores. Puede comprimir eficientemente los datos cifrados " -"de Wii y los datos basura" +"RVZ: Un formato con compresión avanzada que es compatible con las versiones " +"5.0-12188 y posteriores de Dolphin. Puede comprimir eficientemente los datos " +"cifrados de Wii y los datos basura." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Icono" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" @@ -5702,11 +5884,11 @@ msgstr "" "Recomendado para juegos por turnos con controles sensibles al tiempo, como " "Golf" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "Generación de identidad" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5726,7 +5908,6 @@ msgstr "" "qué es lo que más se usa y a tener las prioridades claras. También nos ayuda " "a detectar configuraciones extrañas que estén causando problemas, así como " "fallos de rendimiento y estabilidad.\n" -"\n" "Puedes desactivarlo en cualquier momento en los ajustes de Dolphin." #: Source/Core/Core/HW/GCPadEmu.cpp:100 @@ -5745,6 +5926,11 @@ msgid "" "

Causes issues with many fifologs, but can be useful for testing." "

If unsure, leave this unchecked." msgstr "" +"Al activar esta opción, todas las actualizaciones de memoria ocurrirán al " +"mismo tiempo, antes de que se renderice el primer fotograma.

Da " +"problemas con muchos «fifologs», pero puede ser útil para testeos." +"

Si tienes dudas, deja esta opción desactivada." #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:208 msgid "" @@ -5752,6 +5938,10 @@ msgid "" "

This is generally only useful when a frame-dumping option is enabled." "

If unsure, leave this checked." msgstr "" +"Si esta opción está desactivada, la reproducción del «fifolog» se detendrá " +"tras llegar al último fotograma.

Solo suele ser de utilidad cuando se " +"ha activado una opción de volcado de fotogramas.

Si " +"tienes dudas, deja esta opción activada." #: Source/Core/DolphinQt/DiscordJoinRequestDialog.cpp:55 #: qtbase/src/gui/kernel/qplatformtheme.cpp:728 @@ -5764,30 +5954,30 @@ msgstr "Ignorar cambios de formato" #: Source/Core/DolphinQt/Main.cpp:66 msgid "Ignore for this session" -msgstr "Ahora no, mejor luego" +msgstr "Ignorar por esta vez" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " "number of other games.

If unsure, leave this " "checked." msgstr "" -"Ignora cualquier cambio en el formato EFB.

Mejora el rendimiento en " -"muchos juegos sin ningún efecto negativo. Causa defectos gráficos en unos " -"pocos juegos.

Si tienes dudas, deja esta opción " -"activada." +"Ignora cualquier cambio en el formato del EFB.

Mejorará el " +"rendimiento de muchos juegos sin ningún efecto negativo. Causará defectos " +"gráficos en unos pocos juegos.

Si tienes dudas, " +"deja esta opción activada." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " "graphical effects or gameplay-related features.

If " "unsure, leave this unchecked." msgstr "" -"Ignorar cualquier petición de la CPU para leer o escribir en la EFB." -"

Mejora el rendimiento en algunos juegos, pero podría desactivar " -"algunas funciones relacionadas con el juego o sus efectos gráficos." +"Ignora cualquier petición de la CPU para leer o escribir el EFB." +"

Mejorará el rendimiento de algunos juegos, pero podría desactivar " +"aquellas funciones relacionadas con el juego o sus efectos gráficos." "

Si tienes dudas, deja esta opción desactivada." @@ -5810,30 +6000,30 @@ msgstr "" "disminuye ligeramente el rendimiento.

Si tienes " "dudas, deja esta opción desactivada." -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "Importar copia BootMii NAND de respaldo..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "Se produjo un fallo al importar" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "Importar archivo(s) de guardado" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Importar partidas guardadas de Wii..." -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "Se está importando la copia de respaldo NAND" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" @@ -5842,21 +6032,30 @@ msgstr "" "Se está importando la copia de respaldo NAND\n" "Tiempo transcurrido: %1s" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "¿En el juego?" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "Incluido: %1" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "Incluido: 0" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " "when loading states at the cost of additional save/load time." "

If unsure, leave this checked." msgstr "" -"Incluye el contenido del búfer de marco incrustado (EFB) y las copias de EFB " -"mejoradas en los estados de guardado. Corrige texturas / objetos faltantes " -"y / o no escalados al cargar estados a costa de un tiempo adicional de " -"guardar / cargar.

Si tienes dudas, deja esta opción " +"Incluye el contenido del búfer de imagen integrado (EFB) y las copias " +"mejoradas del EFB en los estados de guardado. Corregirá texturas/objetos " +"faltantes o no escalados al cargar estados a costa de tardar más tiempo en " +"guardar/cargar.

Si tienes dudas, deja esta opción " "activada." #: Source/Core/Core/FreeLookManager.cpp:92 @@ -5890,11 +6089,11 @@ msgstr "Aumentar Y" #: Source/Core/Core/FreeLookManager.cpp:107 msgid "Incremental Rotation" -msgstr "Rotación incremental" +msgstr "Rotación incremental (IR)" #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:41 msgid "Incremental Rotation (rad/sec)" -msgstr "Rotación incremental (rad/seg)" +msgstr "Rotación incremental (rad/seg) (IR)" #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:48 #: Source/Core/DolphinQt/Config/PropertiesDialog.cpp:60 @@ -5904,8 +6103,8 @@ msgstr "Información" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Información" @@ -5914,10 +6113,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "Desactivar salvapantallas durante la emulación" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Entrada" @@ -5931,16 +6130,22 @@ msgstr "Fuerza de entrada requerida para activación" msgid "Input strength to ignore and remap." msgstr "Fuerza de entrada a ignorar y reasignar." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "Insertar &nop" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Insertar tarjeta SD" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "Inspeccionado" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "Instalar" @@ -5952,7 +6157,7 @@ msgstr "Partición de instalación (%1)" msgid "Install Update" msgstr "Instalar actualización" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "Instalar WAD..." @@ -5968,11 +6173,11 @@ msgstr "Instr." msgid "Instruction" msgstr "Instrucción" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "Punto de interrupción de instrucción" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "Instrucción:" @@ -5990,7 +6195,7 @@ msgid "Interface" msgstr "Interfaz" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Error Interno de LZO - Fallo al comprimir" @@ -5999,7 +6204,7 @@ msgstr "Error Interno de LZO - Fallo al comprimir" msgid "Internal LZO Error - decompression failed" msgstr "Error interno de LZO - fallo de descompresión" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" @@ -6007,21 +6212,21 @@ msgstr "" "Error interno de LZO - fallo al descomprimir ({0}) ({1}, {2}) \n" "Intenta cargar el estado de nuevo" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Error Interno de LZO - lzo_init() falló" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "Resolución interna" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Resolución interna:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "Error interno al generar el código AR." @@ -6029,11 +6234,11 @@ msgstr "Error interno al generar el código AR." msgid "Interpreter (slowest)" msgstr "Intérprete (muy lento)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "Intérprete de núcleo" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "Expresión incorrecta." @@ -6041,7 +6246,7 @@ msgstr "Expresión incorrecta." msgid "Invalid Mixed Code" msgstr "Código mixto incorrecto" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "Paquete %1 no válido proporcionado: %2" @@ -6050,27 +6255,27 @@ msgstr "Paquete %1 no válido proporcionado: %2" msgid "Invalid Player ID" msgstr "Id. de jugador incorrecto" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "Dirección de módulo RSO incorrecta: %1" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "La pila de llamadas («callstack») no es válida" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." -msgstr "Sumas de verificación inválidas." +msgstr "Sumas de verificación incorrectas." #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:140 msgid "Invalid game." msgstr "El juego no es válido." -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "Host no válido" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "Los datos introducidos en «%1» no son válidos" @@ -6083,32 +6288,32 @@ msgstr "Los datos introducidos no son válidos" msgid "Invalid literal." msgstr "Literal no válido." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "No se han introducido unos parámetros de búsqueda válidos." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." -msgstr "Contraseña proporcionada inválida." +msgstr "Contraseña proporcionada incorrecta." -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Archivo de grabación erróneo" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Los parámetros de búsqueda no valen (no has seleccionado nada)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "La cadena de búsqueda no vale (no se pudo convertir en un número)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "" -"La cadena de búsqueda no vale (solo se permiten tamaños de texto pares)" +"La cadena de búsqueda no es válida (solo se permiten tamaños de texto pares)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "ID. de juego incorrecto." @@ -6117,8 +6322,8 @@ msgid "Invalid watch address: %1" msgstr "Dirección inválida: 1%" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Italiano" @@ -6126,11 +6331,11 @@ msgstr "Italiano" msgid "Italy" msgstr "Italia" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "Sin enlazado de bloques JIT" @@ -6138,49 +6343,49 @@ msgstr "Sin enlazado de bloques JIT" msgid "JIT Blocks" msgstr "Bloques JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" -msgstr "Rama JIT apagada" +msgstr "Sin rama JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "Sin coma flotante JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "Sin números enteros JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "Sin LoadStore de coma flotante JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "Sin LoadStore JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "Sin LoadStore con parejas JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "Sin LoadStore lXz JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "Sin LoadStore lbzx JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "Sin LoadStore lwz JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "Sin JIT (núcleo JIT)" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" -msgstr "JIT emparejado apagado" +msgstr "Sin emparejamiento JIT" #: Source/Core/DolphinQt/Settings/AdvancedPane.cpp:31 msgid "JIT Recompiler for ARM64 (recommended)" @@ -6190,13 +6395,13 @@ msgstr "Recompilador JIT para ARM64 (recomendado)" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "Recompilador JIT para x86-64 (recomendado)" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" -msgstr "Registro de caché de JIT deshabilitado" +msgstr "Sin registro de caché de JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" -msgstr "JIT SystemRegisters apagado" +msgstr "Sin SystemRegisters JIT" #: Source/Core/Core/PowerPC/Jit64/Jit.cpp:879 #: Source/Core/Core/PowerPC/JitArm64/Jit.cpp:719 @@ -6204,16 +6409,16 @@ msgid "" "JIT failed to find code space after a cache clear. This should never happen. " "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -"JIT no pudo encontrar el espacio de código después de borrar la memoria " +"JIT no ha podido encontrar el espacio de código después de borrar la memoria " "caché. Esto nunca debería ocurrir. Por favor reporta este fallo en el bug " "tracker. Dolphin se cerrará ahora." -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Japón" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japonés" @@ -6233,12 +6438,12 @@ msgstr "Mantener siempre en primer plano" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "Conservar direcciones cuyo valor en memoria" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Teclado" @@ -6251,20 +6456,20 @@ msgstr "Teclado" msgid "Keys" msgstr "Teclas" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "KiB" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Echar al jugador" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Corea" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Coreano" @@ -6292,7 +6497,7 @@ msgstr "Guardar LR" msgid "Label" msgstr "Etiqueta" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "Último valor" @@ -6338,7 +6543,7 @@ msgstr "Palanca izquierda" #: Source/Core/Core/HW/WiimoteEmu/Extension/Turntable.cpp:64 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtension.cpp:164 msgid "Left Table" -msgstr "Mezclador" +msgstr "Plato izquierdo" #: Source/Core/DolphinQt/TAS/IRWidget.cpp:19 msgid "" @@ -6362,31 +6567,31 @@ msgid "" "Middle-click to clear.\n" "Right-click for more options." msgstr "" -"Clic izq. para detectar la entrada.\n" -"Clic medio para borrar.\n" -"Clic der. para más opciones." +"Clic izquierdo para detectar la entrada.\n" +"Clic medio para borrar la asignación.\n" +"Clic derecho para ver más opciones." #: Source/Core/DolphinQt/Config/Mapping/MappingButton.cpp:93 msgid "" "Left/Right-click to configure output.\n" "Middle-click to clear." msgstr "" -"Clic izquierdo/derecho para configurar salida\n" -"Click medio para borrar." +"Clic izquierdo/derecho para configurar la salida.\n" +"Clic medio para borrar." #: Source/Core/DolphinQt/AboutDialog.cpp:67 msgid "License" msgstr "Licencia" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "Limite la velocidad de subida de datos:" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "Columnas en la lista" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "Vista en lista" @@ -6395,17 +6600,17 @@ msgid "Listening" msgstr "Escuchando" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Cargar" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "Cargar archiv&o de mapa incorrecto..." -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "Cargar archiv&o de mapa adicional..." @@ -6413,7 +6618,7 @@ msgstr "Cargar archiv&o de mapa adicional..." msgid "Load Custom Textures" msgstr "Cargar texturas personalizadas" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "Cargar menú principal de GameCube" @@ -6422,7 +6627,7 @@ msgstr "Cargar menú principal de GameCube" msgid "Load Last State" msgstr "Cargar último estado" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "Ruta de carga:" @@ -6515,23 +6720,23 @@ msgstr "Cargar estado 8" msgid "Load State Slot 9" msgstr "Cargar estado 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "Cargar estado desde un archivo" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "Cargar estado desde la ranura seleccionada" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "Cargar estado desde una ranura" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "Cargar partida de Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "Cargar menú del sistema Wii %1" @@ -6539,12 +6744,12 @@ msgstr "Cargar menú del sistema Wii %1" msgid "Load from Selected Slot" msgstr "Cargar desde la ranura seleccionada" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "Cargar desde la ranura %1 - %2" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "Cargar archivo de mapa" @@ -6552,7 +6757,7 @@ msgstr "Cargar archivo de mapa" msgid "Load..." msgstr "Cargar..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "Símbolos cargados desde «%1»" @@ -6567,7 +6772,7 @@ msgstr "" "

Si tienes dudas, deja esta opción desactivada." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "Local" @@ -6576,15 +6781,15 @@ msgid "Lock Mouse Cursor" msgstr "Bloquear cursor del ratón" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" -msgstr "Registrar" +msgstr "Registro" #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:22 msgid "Log Configuration" msgstr "Configuración de registro" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "Registros de cobertura de instrucciones JIT" @@ -6607,17 +6812,17 @@ msgid "" "unsure, leave this unchecked." msgstr "" "Registra el tiempo de renderizado de cada fotograma en «User/Logs/" -"render_time.txt».

Utiliza esta función si quieres medir el " -"rendimiento de Dolphin.

En caso de duda, no actives " -"esta opción." +"render_time.txt».

Utiliza esta característica si quieres medir el " +"rendimiento de Dolphin.

Si tienes dudas, deja esta " +"opción desactivada." #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:123 msgid "Loop" -msgstr "" +msgstr "Bucle" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." -msgstr "¡Se perdió la conexión con el servidor!" +msgstr "Se ha perdido la conexión con el servidor de juego en red..." #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:194 #: Source/Core/DolphinQt/Settings/AudioPane.cpp:421 @@ -6642,9 +6847,9 @@ msgstr "MMU" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:285 msgid "MORIBUND" -msgstr "Terminando" +msgstr "TERMINANDO" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "Archivos Gameshark de MadCatz" @@ -6654,7 +6859,7 @@ msgstr "Palanca principal" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Creador" @@ -6663,7 +6868,7 @@ msgstr "Creador" msgid "Maker:" msgstr "Creador:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6672,11 +6877,11 @@ msgid "" msgstr "" "Visibiliza los objetos más distantes que estén ocultos por la niebla, " "aumentando el detalle en general.

Desactivar la niebla provocará " -"defectos gráficos en algunos juegos que dependan por jugabilidad de una " -"correcta emulación del efecto.

Si tienes dudas, " -"deja esta opción desactivada." +"defectos gráficos en aquellos juegos que dependan de una correcta emulación " +"del efecto.

Si tienes dudas, deja esta opción " +"desactivada." -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "Administrar NAND" @@ -6684,23 +6889,23 @@ msgstr "Administrar NAND" msgid "Manual Texture Sampling" msgstr "Muestreo manual de texturas" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "Mapeando" #: Source/Core/Core/HW/EXI/EXI_Device.h:87 msgid "Mask ROM" -msgstr "" +msgstr "Enmascarar ROM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "Se han encontrado coincidencias" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "Búfer máximo:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "El tamaño máximo del búfer ha cambiado a %1" @@ -6709,21 +6914,20 @@ msgstr "El tamaño máximo del búfer ha cambiado a %1" msgid "Maximum tilt angle." msgstr "Ángulo de inclinación máximo." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." -msgstr "" -"Puede empeorar el rendimiento del Menú principal de Wii y de algunos juegos" +msgstr "Puede empeorar el rendimiento del menú de Wii y de algunos juegos." #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:228 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:197 msgid "Medium" msgstr "Medio" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "Memoria" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "Punto de interrupción en memoria" @@ -6731,7 +6935,7 @@ msgstr "Punto de interrupción en memoria" msgid "Memory Card" msgstr "Tarjeta de memoria" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "Administrador de tarjetas de memoria" @@ -6754,16 +6958,15 @@ msgstr "" #: Source/Core/DolphinQt/Settings/AdvancedPane.cpp:101 msgid "Memory Override" -msgstr "Sobrescribir memoria" +msgstr "Control manual de la memoria" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "Opciones de punto de interrupción en memoria" #: Source/Core/Core/HW/GCMemcard/GCMemcardRaw.cpp:251 msgid "MemoryCard: ClearBlock called on invalid address ({0:#x})" -msgstr "" -"Tarjeta de Memoria: Borrado de bloque en dirección incorrecta ({0:#x})" +msgstr "MemoryCard: Borrado de bloque en dirección incorrecta ({0:#x})" #: Source/Core/Core/HW/GCMemcard/GCMemcardRaw.cpp:222 msgid "MemoryCard: Read called with invalid source address ({0:#x})" @@ -6773,7 +6976,7 @@ msgstr "MemoryCard: Lectura en dirección de destino incorrecta ({0:#x})" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "MemoryCard: Escritura en dirección de destino incorrecta ({0:#x})" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6784,13 +6987,13 @@ msgstr "" "guardada que ya tengas. Es un proceso irreversible, por lo que te " "recomendamos que hagas copias de ambas NANDs. ¿Seguro que quieres continuar?" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "MiB" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Micrófono" @@ -6798,21 +7001,21 @@ msgstr "Micrófono" msgid "Misc" msgstr "Varios" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Otros ajustes" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" "Discrepancia entre el conteo de bloques libres en encabezado y los bloques " "actualmente no usados." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "No coinciden las estructuras de datos internas." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6846,12 +7049,12 @@ msgstr "" "

Si tienes dudas, deja esta opción desactivada." -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "Módulos encontrados: %1" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "Mono" @@ -6863,11 +7066,11 @@ msgstr "Sombras monoscópicas" msgid "Monospaced Font" msgstr "Tipografía monoespaciada" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" -msgstr "Movimiento de entrada" +msgstr "Entrada por movimiento" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "Simulación de movimiento" @@ -6910,10 +7113,10 @@ msgstr "Grabación" msgid "N&o to All" msgstr "N&o a todo" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "Verificar NAND" @@ -6921,26 +7124,26 @@ msgstr "Verificar NAND" msgid "NKit Warning" msgstr "Advertencia NKit" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "NTSC-K" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "Nombre" @@ -6952,60 +7155,60 @@ msgstr "Nombre para una nueva etiqueta:" msgid "Name of the tag to remove:" msgstr "Nombre de la etiqueta a eliminar:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "El nombre de su sesión se muestra en el navegador del servidor" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Nombre:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Nativa (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "Archivo GCI nativo" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "Juego en red" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "Buscador de sesiones de juego en red" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "Configuración de juego en red" #: Source/Core/DiscIO/Enums.cpp:48 msgid "Netherlands" -msgstr "Holanda" +msgstr "Países Bajos" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" -msgstr "Desincronización en «NetPlay_GetButtonPress()»" +msgstr "El juego en red se ha desincronizado en «NetPlay_GetButtonPress()»" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "Juego en red desincronizado. No hay forma de recuperarlo." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "Red" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:358 msgid "Network dump format:" -msgstr "Formato del volcado de la red:" +msgstr "Formato del volcado de red:" #: Source/Core/DolphinQt/Settings/InterfacePane.cpp:180 msgid "Never" @@ -7020,11 +7223,11 @@ msgstr "Sin actualizaciones automáticas" msgid "New" msgstr "Nuevo" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "Añadir punto de interrupción" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "Nueva búsqueda" @@ -7032,7 +7235,7 @@ msgstr "Nueva búsqueda" msgid "New Tag..." msgstr "Nueva etiqueta..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "Se ha generado un identificador nuevo." @@ -7049,7 +7252,7 @@ msgstr "Nueva etiqueta" msgid "Next Game Profile" msgstr "Siguiente perfil de juego" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "Siguiente coincidencia" @@ -7058,17 +7261,17 @@ msgstr "Siguiente coincidencia" msgid "Next Profile" msgstr "Siguiente perfil" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "El apodo es demasiado largo." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Apodo:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "No" @@ -7076,6 +7279,10 @@ msgstr "No" msgid "No Adapter Detected" msgstr "No se ha detectado ningún adaptador" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "Sin alineación" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "Sin salida de audio" @@ -7086,24 +7293,20 @@ msgstr "Sin salida de audio" msgid "No Compression" msgstr "Sin compresión" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "Sin coincidencias" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "No se ha proporcionado ningún valor" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Sin descripción" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "Sin errores" @@ -7115,15 +7318,15 @@ msgstr "No has elegido ninguna extensión." msgid "No file loaded / recorded." msgstr "No se ha cargado o grabado ningún archivo" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "No hay ningún juego en ejecución." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "No hay ningún juego en ejecución." -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "No se ha detectado ningún problema." @@ -7131,11 +7334,15 @@ msgstr "No se ha detectado ningún problema." msgid "No paths found in the M3U file \"{0}\"" msgstr "No se encontraron rutas en el archivo M3U «{0}»" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "No quedan funciones posibles. Debes reiniciar." + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "No se encontraron problemas." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -7150,7 +7357,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "No se han encontrado perfiles para la configuración del juego «{0}»" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "No hay grabación cargada." @@ -7158,19 +7365,15 @@ msgstr "No hay grabación cargada." msgid "No save data found." msgstr "No se encontraron datos de guardado." -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" "No se ha encontrado el archivo undo.dtm, abortando deshacer estado cargado " "para evitar desincronizaciones en la grabación" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "No se ha proporcionado ningún valor." - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -7180,7 +7383,7 @@ msgstr "Ninguno" msgid "North America" msgstr "Norteamérica" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "No se ha encontrado" @@ -7188,11 +7391,11 @@ msgstr "No se ha encontrado" msgid "Not Set" msgstr "No definido" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "Algunos jugadores no tienen el juego. ¿Seguro que quieres continuar?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -7200,9 +7403,9 @@ msgid "" "required." msgstr "" "No hay suficientes bloques libres en la tarjeta de memoria elegida. Se " -"requieren al menos %n bloques libres." +"requiere(n) al menos %n bloque(s) libre(s)." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -7210,15 +7413,15 @@ msgid "" "required." msgstr "" "No hay suficientes archivos libres en la tarjeta de memoria elegida. Se " -"requieren al menos %n archivos libres" +"requiere(n) al menos %n archivo(s) libre(s)." #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:27 msgid "" "Note: motion input may require configuring alternate input sources before " "use." msgstr "" -"Nota: la entrada de movimiento puede requerir la configuración de fuentes de " -"entrada alternativas antes de su uso." +"Nota: la entrada por movimiento puede requerir la configuración de fuentes " +"de entrada alternativas antes de su uso." #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:83 msgid "Notes:" @@ -7245,7 +7448,7 @@ msgstr "NumExec" #. i18n: Refering to emulated wii remote movement. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:155 msgid "Number of shakes per second." -msgstr "Numero de sacudidas por segundo" +msgstr "Número de sacudidas por segundo." #: Source/Core/Core/HW/WiimoteEmu/Extension/Nunchuk.cpp:35 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtension.cpp:102 @@ -7266,13 +7469,13 @@ msgstr "Orientación del Nunchuk" msgid "Nunchuk Stick" msgstr "Palanca del Nunchuk" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "Aceptar" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "Objeto %1" @@ -7285,11 +7488,11 @@ msgid "Oceania" msgstr "Oceanía" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "No" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "Ajuste" @@ -7301,19 +7504,19 @@ msgstr "Encendido" msgid "On Movement" msgstr "Al moverlo" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "&Documentación en línea" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" "Solo añadir símbolos con prefijo:\n" -"(blanco para todos los símbolos)" +"(Dejar en blanco para añadir todos los símbolos)" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -7330,7 +7533,7 @@ msgstr "Abrir" msgid "Open &Containing Folder" msgstr "Abrir &carpeta contenedora" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "Abrir directorio..." @@ -7378,7 +7581,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "Operadores" @@ -7396,7 +7599,7 @@ msgstr "Opciones" msgid "Orange" msgstr "Naranja" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "Orbitar" @@ -7404,7 +7607,7 @@ msgstr "Orbitar" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Otros" @@ -7417,11 +7620,11 @@ msgstr "Otra partición (%1)" msgid "Other State Hotkeys" msgstr "Otros atajos de guardado" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "Otros elementos de guardado" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "Otro juego..." @@ -7429,12 +7632,12 @@ msgstr "Otro juego..." msgid "Overlay Information" msgstr "Superponer información" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "Reproducir pu&lsaciones grabadas..." -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -7459,7 +7662,7 @@ msgstr "Archivo de imagen PNG (*.png);; Todos los archivos (*)" msgid "PPC Size" msgstr "Tamaño de PPC" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "PPC vs Host" @@ -7476,7 +7679,7 @@ msgstr "Cruceta" msgid "Parameters" msgstr "Parámetros" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "Analizar como hexadecimal" @@ -7485,23 +7688,23 @@ msgstr "Analizar como hexadecimal" msgid "Parsing Error" msgstr "No se entiende el formato" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "Pasivo" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" -msgstr "Ceder el control de un adaptador Bluetooth real" +msgstr "Acceder directamente a un adaptador de Bluetooth" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "Contraseña" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "Contraseña para unirse a tu juego (dejar vacío para ninguno)" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "¿Contraseña?" @@ -7522,7 +7725,7 @@ msgid "Path:" msgstr "Ruta:" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Rutas" @@ -7530,7 +7733,7 @@ msgstr "Rutas" msgid "Pause" msgstr "Pausa" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "Pausar al terminar la grabación" @@ -7553,11 +7756,11 @@ msgstr "Velocidad máxima de movimientos a la posición neutral." msgid "Peak velocity of outward swing movements." msgstr "Velocidad máxima de los movimientos de balanceo hacia afuera." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Iluminación por píxel" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "Actualizar la consola por Internet" @@ -7567,36 +7770,36 @@ msgstr "Actualizar la consola" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "Físico" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "Espacio de la dirección física" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "PiB" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "Elige una tipografía de depuración" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "Ping" #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp:30 msgid "Pitch Down" -msgstr "Ángulo abajo" +msgstr "Cabeceo hacia arriba" #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp:29 msgid "Pitch Up" -msgstr "Ángulo arriba" +msgstr "Cabeceo hacia abajo" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Plataforma" @@ -7616,16 +7819,16 @@ msgstr "Reproducir grabación" msgid "Playback Options" msgstr "Opciones de reproducción" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "Jugador" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Jugadores" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7636,32 +7839,32 @@ msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:208 #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:216 msgid "Point" -msgstr "Punto" +msgstr "Puntero" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "Puerto %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "ROM del puerto %1:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "Puerto:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" "Posible desincronización: podemos haber perdido a %1 en el fotograma %2" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "Efecto de posprocesado:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Efecto de posprocesado:" @@ -7673,15 +7876,15 @@ msgstr "Configuración del sombreador de posprocesado" msgid "Prefetch Custom Textures" msgstr "Precargar texturas personalizadas" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "Final prematuro de la grabación en PlayController. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "Final prematuro de la grabación en PlayWiimote. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "Final prematuro de la grabación en PlayWiimote. {0} > {1} " @@ -7714,18 +7917,18 @@ msgid "" "recommended, only use if the other options give poor results." msgstr "" -"Previene los parones en la compilación de sombreadores al no renderizar " -"objetos en espera. Puede funcionar en escenarios donde los ubershaders no lo " -"hacen, a costa de introducir errores visuales y efectos rotos." -"

No se recomienda, usar solo si las otras opciones " -"dan malos resultados." +"Previene los parones producidos por la compilación de sombreadores al no " +"renderizar los elementos que estén en espera. Puede funcionar en casos donde " +"los ubershaders no lo hagan a costa de introducir errores visuales y efectos " +"rotos.

No se recomienda, usar solo si el resto de " +"opciones dan malos resultados." #: Source/Core/Core/HotkeyManager.cpp:91 Source/Core/Core/HotkeyManager.cpp:95 #: Source/Core/Core/HotkeyManager.cpp:99 Source/Core/Core/HotkeyManager.cpp:103 msgid "Previous Game Profile" msgstr "Perfil anterior de juego" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "Coincidencia anterior" @@ -7736,15 +7939,15 @@ msgstr "Perfil anterior" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "Primitiva %1:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "Privado" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "Privado y público" @@ -7752,7 +7955,7 @@ msgstr "Privado y público" msgid "Problem" msgstr "Problema" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." @@ -7760,7 +7963,7 @@ msgstr "" "Se encontraron problemas de gravedad alta. Lo más probable es que el juego " "no funcione en absoluto." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." @@ -7768,7 +7971,7 @@ msgstr "" "Se encontraron problemas de gravedad baja. Lo más probable es que no impidan " "que el juego se ejecute." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." @@ -7776,7 +7979,7 @@ msgstr "" "Se encontraron problemas de gravedad media. Es posible que todo el juego o " "ciertas partes del mismo no funcionen correctamente." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Perfil" @@ -7790,17 +7993,17 @@ msgstr "Contador del programa (PC)" msgid "Progress" msgstr "Progreso" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "Público" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "Vaciar la caché de la lista de juegos" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." -msgstr "Guardar roms del IPL en User/GC/." +msgstr "Debes guardar tus ROMs del IPL en User/GC/." #: qtbase/src/gui/kernel/qguiapplication.cpp:234 msgctxt "" @@ -7810,11 +8013,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "QT_LAYOUT_DIRECTION" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "No se pudo activar la calidad de servicio (QoS)." -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "La calidad de servicio (QoS) se ha activado correctamente." @@ -7825,12 +8028,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Pregunta" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Salir" @@ -7850,11 +8053,11 @@ msgstr "R-Analógico" msgid "READY" msgstr "Listo" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "Módulos RSO" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "Autodetección RSO" @@ -7867,44 +8070,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "Archivos RVZ de GC/Wii (*.rvz)" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Rango" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "Fin del rango:" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "Inicio del rango:" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "Reemplazar instrucción" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "Leer" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "Leer y escribir" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "Solo lectura" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "Leer o escribir" @@ -7912,11 +8115,11 @@ msgstr "Leer o escribir" msgid "Read-Only Mode" msgstr "Modo de solo lectura" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" -msgstr "«Balance Board» real" +msgstr "Balance Board real" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "Mando Wii real" @@ -7929,11 +8132,11 @@ msgstr "Centrar" msgid "Record" msgstr "Grabar" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "Grabar entradas" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "Grabando" @@ -7958,7 +8161,7 @@ msgstr "Rojo izquierda" msgid "Red Right" msgstr "Rojo derecha" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7967,12 +8170,12 @@ msgid "" "to lighting, shader effects, and textures.

If " "unsure, select None." msgstr "" -"Reduce la cantidad de alias provocada por la rasterización de gráficos 3D, " -"lo que da como resultado bordes más suaves en los objetos. Aumenta la carga " -"de GPU y en ocasiones causa problemas gráficos.

SSAA es " -"significativamente más exigente que la MSAA, pero proporciona suavizado de " -"geometría de la mejor calidad y también aplica suavizado a la iluminación, " -"efectos de los sombreadores y texturas.

Si tienes " +"Reduce los bordes con dientes de sierra provocados por la rasterización de " +"gráficos 3D, produciendo unos bordes más suaves en los objetos. Aumentará la " +"carga de GPU y provocará en ocasiones problemas gráficos.

Los métodos " +"SSAA necesitan de bastantes más recursos que los métodos MSAA, pero su " +"suavizado es de mayor calidad y también suaviza la iluminación, los efectos " +"de los sombreadores y las texturas.

Si tienes " "dudas, selecciona Ninguno." #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:81 @@ -7981,16 +8184,16 @@ msgstr "Estado de redump.org:" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Actualizar" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "Actualizar valores actuales" @@ -7998,28 +8201,28 @@ msgstr "Actualizar valores actuales" msgid "Refresh Game List" msgstr "Actualizar lista de juegos" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" "La actualización ha fallado. Ejecuta el juego durante unos minutos y vuelve " "a intentarlo." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "Se han actualizado los valores actuales." #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "Actualizando..." #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Región" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "Región:" @@ -8033,22 +8236,22 @@ msgstr "Entrada relativa" #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:33 msgid "Relative Input Hold" -msgstr "Entrada relativa de sujetar" +msgstr "Parar entrada relativa" #: Source/Core/DolphinQt/Updater.cpp:75 msgid "Remind Me Later" msgstr "Recordar más tarde" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Eliminar" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "Eliminación fallida" @@ -8074,8 +8277,8 @@ msgstr "" "que meta después el archivo ISO en un formato de archivo comprimido, como " "ZIP). ¿Quieres continuar de todos modos?" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "Renombrar símbolo" @@ -8112,29 +8315,37 @@ msgstr "Solicitud para unirse a tu partida." #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Restablecer" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "Reiniciar todo" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "Reiniciar el ignorado de errores y advertencias" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "Reiniciar resultados" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" -msgstr "Restablecer servidor de paso" +msgstr "Restablecer servidor transversal" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" -msgstr "Restablecer servidor de paso a %1:%2" +msgstr "Restablecer servidor transversal a %1:%2" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "Restablecer ajustes de paso" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "Reiniciar valores" @@ -8142,17 +8353,17 @@ msgstr "Reiniciar valores" msgid "Reset View" msgstr "Restablecer vista" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "Revierte todas las vinculaciones de mandos de Wii existentes." -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "Administrador de paquetes de recursos" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" -msgstr "Ruta de paquetes de recursos" +msgstr "Ruta de paquetes de recursos:" #: Source/Core/DolphinQt/Settings/InterfacePane.cpp:309 msgid "Restart Required" @@ -8162,11 +8373,11 @@ msgstr "Es necesario reiniciar." msgid "Restore Defaults" msgstr "Restaurar valores predeterminados" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "Restaurar instrucción" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Reintentar" @@ -8175,7 +8386,7 @@ msgstr "Reintentar" msgid "Return Speed" msgstr "Velocidad de retorno" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "Revisión" @@ -8205,7 +8416,7 @@ msgstr "Palanca derecha" #: Source/Core/Core/HW/WiimoteEmu/Extension/Turntable.cpp:67 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtension.cpp:169 msgid "Right Table" -msgstr "Plato" +msgstr "Plato derecho" #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 msgid "Riivolution XML files" @@ -8227,17 +8438,17 @@ msgstr "Balanceo Arriba" #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp:31 msgid "Roll Left" -msgstr "Rodar a la Izquierda" +msgstr "Balanceo a la izquierda" #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp:32 msgid "Roll Right" -msgstr "Rodar a la Derecha" +msgstr "Balanceo a la derecha" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "Id. de sala" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "Rotación" @@ -8246,16 +8457,18 @@ msgstr "Rotación" msgid "Rotation applied at extremities of swing." msgstr "Rotación aplicada a las extremidades del balanceo" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" -"Redondea los vértices 2D a píxeles enteros.

Arregla ciertos " -"problemas gráficos al utilizar resoluciones internas muy grandes. No sirve " -"de nada cuando se emplea la resolución original de la consola." +"Redondea los vértices 2D a píxeles enteros y redondea el tamaño del área de " +"visualización a un múltiplo entero.

Arregla problemas gráficos en " +"algunos juegos al utilizar resoluciones internas muy grandes. No sirve de " +"nada cuando se emplea la resolución original de la consola." "

Si tienes dudas, deja esta opción desactivada." @@ -8266,11 +8479,11 @@ msgstr "" msgid "Rumble" msgstr "Vibración" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "Ejecutar has&ta aquí" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "Ejecutar los núcleos de GBA en hilos dedicados" @@ -8278,15 +8491,15 @@ msgstr "Ejecutar los núcleos de GBA en hilos dedicados" msgid "Russia" msgstr "Rusia" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" -msgstr "Memoria SD" +msgstr "Tarjeta SD" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" -msgstr "Imagen de memoria SD (*.raw);;Todos los archivos (*)" +msgstr "Imagen de tarjeta SD (*.raw);;Todos los archivos (*)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "Ruta de la tarjeta SD:" @@ -8302,7 +8515,7 @@ msgstr "SELECT" msgid "SHA-1:" msgstr "SHA-1:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "SP1:" @@ -8316,21 +8529,21 @@ msgstr "Entorno SSL" msgid "START" msgstr "START" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" -msgstr "Guardar código" +msgstr "Gua&rdar código" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" -msgstr "Guardar estado" +msgstr "Gua&rdar estado" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:224 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:71 msgid "Safe" -msgstr "Seguro" +msgstr "Segura" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -8343,7 +8556,7 @@ msgstr "Guardar todo" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "Exportar guardado" @@ -8364,11 +8577,11 @@ msgstr "Guardado de juego" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "Archivos de guardado de juegos (*.sav);; Todos los archivos (*)" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "Importar guardado" @@ -8380,7 +8593,7 @@ msgstr "Guardar el estado más antiguo" msgid "Save Preset" msgstr "Guardar preajuste" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "Guardar archivo de grabación como" @@ -8430,23 +8643,23 @@ msgstr "Ranura de guardado 8" msgid "Save State Slot 9" msgstr "Ranura de guardado 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "Guardar Estado en Archivo" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "Guardar estado en la ranura más antigua" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "Guardar estado en la ranura seleccionada" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "Guardar estado en ranura" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "Guardar map&a de símbolos como..." @@ -8454,7 +8667,7 @@ msgstr "Guardar map&a de símbolos como..." msgid "Save Texture Cache to State" msgstr "Guardar caché de texturas en estado" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "Guardar y cargar estado" @@ -8466,11 +8679,11 @@ msgstr "Guardar como preajuste..." msgid "Save as..." msgstr "Guardar como..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "Guardar archivo de salida combinado como" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" @@ -8481,15 +8694,15 @@ msgstr "" "de sobrescribirlos.\n" "¿Sobreescribir ahora?" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "Guardar en el mismo directorio que la ROM" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "Guardar archivo de mapa" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "Guardar archivo de firmas" @@ -8497,7 +8710,7 @@ msgstr "Guardar archivo de firmas" msgid "Save to Selected Slot" msgstr "Guardar en la ranura seleccionada" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "Guardar en la ranura %1 - %2" @@ -8505,24 +8718,25 @@ msgstr "Guardar en la ranura %1 - %2" msgid "Save..." msgstr "Guardar..." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." -msgstr "Solo es posible reemparejar los mandos de Wii en mitad de la partida." +msgstr "" +"Solo se pueden reemparejar los mandos de Wii en mitad de una partida con un " +"juego para Wii." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" -msgstr "Guardados" +msgstr "Guardados:" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." -msgstr "" -"El estado de la grabación {0} está corrupto, deteniendo la grabación..." +msgstr "El estado de la grabación {0} está dañado, deteniendo la grabación..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" -msgstr "Copia de EFB a escala" +msgstr "Copia del EFB a escala" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "El escaneo ha finalizado." @@ -8530,30 +8744,30 @@ msgstr "El escaneo ha finalizado." msgid "ScrShot" msgstr "Pantallazo" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Buscar" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "Buscar dirección" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "Buscar objeto actual" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Buscar en subcarpetas" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "Buscar y filtrar" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." @@ -8561,7 +8775,7 @@ msgstr "" "Actualmente no se puede buscar en el espacio de la memoria virtual. Ejecuta " "el juego durante unos minutos y vuelve a intentarlo." -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "Buscar una instrucción" @@ -8569,7 +8783,7 @@ msgstr "Buscar una instrucción" msgid "Search games..." msgstr "Buscar juegos..." -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "Búsqueda de instrucciones" @@ -8583,41 +8797,40 @@ msgstr "Sección que contiene todos los códigos de trucos de Gecko." #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:62 msgid "Section that contains all graphics related settings." -msgstr "" -"Sección que contiene todos las configuraciones relacionados con gráficos." +msgstr "Sección que contiene todos los ajustes relacionados con gráficos." #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:34 msgid "Section that contains most CPU and Hardware related settings." msgstr "" -"Sección que contiene la mayoría de las configuraciones relacionadas con la " -"CPU y el hardware." +"Sección que contiene la mayoría de los ajustes relacionados con la CPU y el " +"hardware." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:381 msgid "Security options" msgstr "Opciones de seguridad" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Seleccionar" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "Seleccionar ruta de volcado" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "Elige un directorio de exportación" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "Elige la BIOS de GBA" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "Elige la ROM de GBA" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "Elige la ruta de los guardados de GBA" @@ -8625,11 +8838,11 @@ msgstr "Elige la ruta de los guardados de GBA" msgid "Select Last State" msgstr "Seleccione el último estado" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "Seleccionar ruta de carga" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "Seleccionar ruta de paquetes de recursos" @@ -8637,7 +8850,7 @@ msgstr "Seleccionar ruta de paquetes de recursos" msgid "Select Riivolution XML file" msgstr "Selecciona un archivo XML de Riivolution" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "Ranura de guardado %1 - %2" @@ -8645,7 +8858,7 @@ msgstr "Ranura de guardado %1 - %2" msgid "Select State" msgstr "Cargar ranura de guardado" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Seleccionar ranura de guardado" @@ -8689,41 +8902,45 @@ msgstr "Seleccionar ranura de guardado 8" msgid "Select State Slot 9" msgstr "Seleccionar ranura de guardado 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "Elige ruta WFS" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "Elige la carpeta raíz de la NAND de Wii" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "Elige un directorio" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "Elige un archivo" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "Elige un juego" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "Elige una imagen de tarjeta SD" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "Elige un archivo" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "Elige un juego" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "Elige un juego para instalar en la NAND" @@ -8731,11 +8948,11 @@ msgstr "Elige un juego para instalar en la NAND" msgid "Select e-Reader Cards" msgstr "Elegir tarjetas e-Reader" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "Elige la dirección del módulo RSO:" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "Elige el archivo de grabación a reproducir" @@ -8743,12 +8960,12 @@ msgstr "Elige el archivo de grabación a reproducir" msgid "Select the Virtual SD Card Root" msgstr "Elige la carpeta raíz de la tarjeta SD virtual" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "Elige el archivo de claves (volcado OTP/SEEPROM)" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Selecciona el archivo de guardado" @@ -8764,15 +8981,15 @@ msgstr "Elige dónde quieres guardar las imágenes convertidas" msgid "Selected Font" msgstr "Tipografía seleccionada" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "El perfil del mando seleccionado no existe" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "¡El juego seleccionado no existe en la lista de juegos!" @@ -8789,18 +9006,20 @@ msgid "" "Selects a hardware adapter to use.

%1 doesn't " "support this feature." msgstr "" -"Elige un adaptador de hardware para usar

%1 no " -"soporta esta característica." +"Selecciona el adaptador de hardware que quieras usar." +"

%1 no soporta esta característica." #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:324 msgid "" "Selects a hardware adapter to use.

If unsure, " "select the first one." msgstr "" -"Elige el adaptador de hardware que quieras usar.

Si " -"tienes dudas, selecciona la primera opción." +"Selecciona el adaptador de hardware que quieras usar." +"

Si tienes dudas, selecciona la primera opción." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8810,14 +9029,15 @@ msgid "" "
Passive is another type of 3D used by some TVs." "

If unsure, select Off." msgstr "" -"Selecciona el modo estereoscópico 3D. La estereoscopia permite un mejor " -"sensación de profundidad si el hardware necesario esta presente. Reduce la " -"velocidad de emulación en gran medida y algunas veces causa problemas." -"

Lado a Lado y Arriba y Abajo son usados en la mayoría de " -"televisiones 3D.
Anaglifo es usado para lentes 3D Rojo-Azul
HDMI 3D es " -"usado cuando el monitor soporta resoluciones de pantalla 3D.
Pasivo es " -"otro tipo de 3D usado por otras TVs.

Si no estas " -"seguro, elige Desactivado" +"Selecciona el modo 3D estereoscópico. La estereoscopia mejora la sensación " +"de profundidad si el hardware necesario está presente. Reducirá la velocidad " +"de emulación en gran medida y algunas veces causará problemas.

Los " +"modos en paralelo («Side-by-Side») y por encima/por debajo («Top-and-" +"Bottom») se utilizan en la mayoría de televisiones 3D.
Anaglifo sirve " +"para su uso con gafas 3D rojo-azul.
HDMI 3D sirve para aquellos monitores " +"compatibles con resoluciones de pantalla en 3D.
Pasivo es otro tipo de 3D " +"usado por ciertos televisores.

Si tienes dudas, " +"selecciona «No»." #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:158 msgid "" @@ -8844,12 +9064,12 @@ msgid "" "Window: Stretches the picture to the window size." "

If unsure, select Auto." msgstr "" -"Selecciona que relación de aspecto se usa al renderizar:

Automático: " -"Usar la relación de aspecto nativa.
Forzar 16:9: Estira la imagen a una " -"relación de aspecto de 16:9.
Forzar 4:3: Estira la imagen a una relación " -"de aspecto de 4:3.
Estirar a ventana: Estira la imagen al tamaño de la " -"ventana.

Si tienes dudas, selecciona Automático." +"Selecciona la relación de aspecto que se usará al renderizar:" +"

Automática: Usar la relación de aspecto nativa.
Forzar 16:9: " +"Estira la imagen a una relación de aspecto de 16:9.
Forzar 4:3: Estira la " +"imagen a una relación de aspecto de 4:3.
Estirar a la ventana: Estira la " +"imagen al tamaño de la ventana.

Si tienes dudas, " +"selecciona Automática." #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:200 msgid "" @@ -8866,14 +9086,14 @@ msgstr "" "cada tarjeta gráfica se comportarán de una manera distinta con cada motor, " "por lo que si buscas la mejor experiencia de emulación, se recomienda que " "pruebes todos los renderizadores y selecciones el que mejor se adapte a tus " -"necesidades.

En caso de duda, selecciona OpenGL.
Si tienes dudas, selecciona OpenGL. " -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Enviar" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Posición de la barra sensora:" @@ -8889,68 +9109,76 @@ msgstr "" "cuando lo descargues\n" "Ejemplo: {2}" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "Dirección IP del servidor" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "Puerto del servidor" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "El servidor de paso rechazó el intento de conexión" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "Establecer &valor" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "Poner &blr" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "Establecer PC" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "Establecer valor a partir de archivo" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" -msgstr "Establecer como ISO predeterminado" +msgstr "Establecer como ISO pred&eterminado" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "Elige el archivo de la ranura A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "Elige el archivo de la ranura B" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "Especifica la direción final del &símbolo" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "Ajustar tamaño del &símbolo " -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "Escribe la dirección final del símbolo" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "Ajustar tamaño del símbolo (%1):" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" "May not work for all games." msgstr "" -"Configura el modo de pantalla de Wii a 60Hz (480i) en vez de 50Hz (576i) " -"para juego PAL.\n" -"Puede no funcionar en todos los juegos." +"Establece el modo de vídeo de Wii a 60Hz (480i) en vez de 50Hz (576i) para " +"los juegos PAL.\n" +"Podría no funcionar con todos los juegos." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." -msgstr "Establece el idioma del sistema Wii." +msgstr "Establece el idioma del sistema de Wii." #: Source/Core/DolphinQt/Settings/AudioPane.cpp:90 msgid "" @@ -8960,7 +9188,7 @@ msgstr "" "Establece la latencia en milisegundos. Los valores más altos pueden reducir " "la crepitación de audio. Solo funciona con algunos motores de sonido." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8984,13 +9212,13 @@ msgstr "Gravedad" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:111 msgid "Shader Compilation" -msgstr "Compilar sombreadores" +msgstr "Compilación de sombreadores" #: Source/Core/Core/HW/WiimoteEmu/Extension/Nunchuk.cpp:56 #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:211 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionSimulation.cpp:29 msgid "Shake" -msgstr "Sacudir" +msgstr "Sacudidas" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:41 msgid "" @@ -9000,27 +9228,27 @@ msgstr "" "Acorta los tiempos de carga pero puede romper algunos juegos. Puede tener " "efectos negativos en el rendimiento. Predeterminado en False" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Mostrar ®istro" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Mostrar barra de herramien&tas" #: Source/Core/DolphinQt/Settings/InterfacePane.cpp:170 msgid "Show Active Title in Window Title" -msgstr "Mostrar juego actual en el título de la ventana" +msgstr "Mostrar nombre del juego actual en el título de la ventana" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "Mostrar todo" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Australianos" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "Mostrar el juego actual en Discord" @@ -9028,7 +9256,7 @@ msgstr "Mostrar el juego actual en Discord" msgid "Show Debugging UI" msgstr "Ver opciones de depuración" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "Mostrar ELF/DOL" @@ -9036,43 +9264,43 @@ msgstr "Mostrar ELF/DOL" msgid "Show FPS" msgstr "Mostrar FPS" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Mostrar fotogramas por segundo (FPS)" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Franceses" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "Mostrar GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Alemanes" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "Mostrar superposición de modo de golf" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Mostrar registro de teclas" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Italianos" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "Mostrar JPN" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Coreanos" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Mostrar indicador de retardo" @@ -9080,7 +9308,7 @@ msgstr "Mostrar indicador de retardo" msgid "Show Language:" msgstr "Mostrar idioma:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Mostrar configuración de ®istro" @@ -9090,17 +9318,17 @@ msgstr "Mostrar mensajes de juego en red" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:90 msgid "Show NetPlay Ping" -msgstr "Mostrar «pings» de juego en red" +msgstr "Mostrar latencia de juego en red" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Holandeses" #: Source/Core/DolphinQt/Settings/InterfacePane.cpp:169 msgid "Show On-Screen Display Messages" -msgstr "Mensajes en pantalla" +msgstr "Mostrar mensajes en pantalla" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Región PAL" @@ -9109,23 +9337,23 @@ msgstr "Región PAL" msgid "Show PC" msgstr "Mostrar PC" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Mostrar plataformas" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Mostrar regiones" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "Mostrar contador de regrabaciones" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Rusos" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "Españoles" @@ -9134,46 +9362,50 @@ msgstr "Españoles" msgid "Show Statistics" msgstr "Mostrar estadísticas" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "Mostrar reloj del sistema" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Taiwaneses" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Región USA" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Otros" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "Mostrar WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Mostrar Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Mostrar juegos internacionales" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "Mostrar en &memoria" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "Mostrar en código" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "Mostrar en el navegador del servidor" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "Mostrar objetivo en &memoria" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -9189,7 +9421,7 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" "Muestra mensajes de chat, cambios de búfer y alertas de desincronización " -"mientras se reproduce el juego en red.

Si tienes " +"durante una partida de juego en red.

Si tienes " "dudas, deja esta opción desactivada." #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:228 @@ -9198,18 +9430,18 @@ msgid "" "speed.

If unsure, leave this unchecked." msgstr "" -"Mostrar el número de fotogramas por segundo como medida de la velocidad de " -"emulación.

Si tienes dudas, deja esta opción " -"desactivada." +"Muestra el número de fotogramas renderizados por segundo como medida de la " +"velocidad de emulación.

Si tienes dudas, deja esta " +"opción desactivada." #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:232 msgid "" "Shows the player's maximum ping while playing on NetPlay." "

If unsure, leave this unchecked." msgstr "" -"Muestra el ping máximo del jugador mientras juega en red." -"

Si tienes dudas, deja esta opción desactivada." +"Muestra la latencia (o «ping») máxima del jugador durante una partida de " +"juego en red.

Si tienes dudas, deja esta opción " +"desactivada." #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:205 msgid "" @@ -9220,7 +9452,7 @@ msgstr "" "

Si tienes dudas, deja esta opción desactivada." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "En paralelo" @@ -9236,16 +9468,31 @@ msgstr "Cambiar de/a horizontal" msgid "Sideways Wii Remote" msgstr "Mando de Wii en horizontal" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "Base de datos de firmas" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "Con signo de 16 bits" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "Con signo de 32 bits" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "Con signo de 8 bits" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "Entero con signo" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Chino simplificado" @@ -9253,9 +9500,9 @@ msgstr "Chino simplificado" msgid "Simulate DK Bongos" msgstr "Simular Bongos de DK" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" -msgstr "Six Axis" +msgstr "Seis ejes" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:227 @@ -9267,30 +9514,30 @@ msgid "" "Size of stretch buffer in milliseconds. Values too low may cause audio " "crackling." msgstr "" -"Tamaño del búfer de latencia en milisegundos. Si es demasiado pequeño el " -"sonido puede entrecortarse." +"Tamaño del búfer de expansión de audio en milisegundos. Un valor muy bajo " +"puede provocar crepitación de audio." #: Source/Core/Core/HotkeyManager.cpp:68 Source/Core/DolphinQt/ToolBar.cpp:110 msgid "Skip" -msgstr "Saltar" +msgstr "Omitir" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:118 msgid "Skip Drawing" -msgstr "Saltar dibujado" +msgstr "Omitir dibujado" #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:45 msgid "Skip EFB Access from CPU" -msgstr "Saltar el acceso al EFB desde la CPU" +msgstr "Omitir el acceso al EFB desde la CPU" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" -msgstr "Saltar menú principal" +msgstr "Omitir menú principal" #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:90 msgid "Skip Presenting Duplicate Frames" msgstr "Omitir la presentación de fotogramas duplicados" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -9298,38 +9545,37 @@ msgid "" "optimal frame pacing.

If unsure, leave this checked." "" msgstr "" -"Salta la presentación de fotogramas duplicados (copias de XFB) en juegos a " -"25fps/30fps. Puede mejorar el rendimiento en equipos de bajos recursos, " -"causando un paso de fotogramas menos consistente.

Deshabilita esta " -"opción mientras V-Sync esté activado para obtener un paso de fotogramas " -"óptimo.

Si tienes dudas, deja esta opción activada." -"" +"Omite la presentación de fotogramas duplicados (copias del XFB) en juegos a " +"25 fps/30 fps. Puede mejorar el rendimiento en equipos de gama baja, pero la " +"duración de cada fotograma en pantalla será menos consistente.

Desactiva esta opción y activa también la sincronización vertical para que " +"la duración de cada fotograma sea la óptima.

Si " +"tienes dudas, deja esta opción activada." #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:93 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtension.cpp:138 msgid "Slider Bar" msgstr "Barra de desplazamiento" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Ranura A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "Ranura A:" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Ranura B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "Ranura B:" #: Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.cpp:35 msgid "Snap the thumbstick position to the nearest octagonal axis." -msgstr "" -"Mueva el joystick a una posición lo más cercana posible al eje octogonal." +msgstr "Limita la posición del joystick a la más cercana al eje octogonal." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:299 msgid "Socket table" @@ -9341,7 +9587,7 @@ msgstr "Panel de conexiones" msgid "Software Renderer" msgstr "Dibujado por software" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "No se han podido leer algunos datos." @@ -9362,11 +9608,11 @@ msgstr "" "Comprueba todos los campos seleccionados." #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "Ordenar alfabéticamente" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "Sonido:" @@ -9379,8 +9625,8 @@ msgid "Spain" msgstr "España" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Español" @@ -9388,13 +9634,13 @@ msgstr "Español" msgid "Speaker Pan" msgstr "Altavoz estéreo" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Volumen del altavoz:" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:115 msgid "Specialized (Default)" -msgstr "Especializado (Predeterminado)" +msgstr "Especializados (Predeterminado)" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:187 msgid "Specific" @@ -9434,7 +9680,7 @@ msgstr "Velocidad" msgid "Speed up Disc Transfer Rate" msgstr "Acelerar la transferencia de disco" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "Estable (una vez al año)" @@ -9446,16 +9692,16 @@ msgstr "Final de la pila" msgid "Stack start" msgstr "Inicio de la pila" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Mando de juego estándar" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Start" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "Comenzar &juego en red..." @@ -9463,11 +9709,13 @@ msgstr "Comenzar &juego en red..." msgid "Start New Cheat Search" msgstr "Iniciar una nueva búsqueda de trucos" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "&Grabar pulsaciones" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Comenzar grabación" @@ -9483,7 +9731,7 @@ msgstr "Comenzar con parches de Riivolution" msgid "Start with Riivolution Patches..." msgstr "Comenzar con parches de Riivolution..." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "Juego en ejecución" @@ -9494,7 +9742,7 @@ msgstr "Juego en ejecución" msgid "State" msgstr "Estado" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Volante" @@ -9522,19 +9770,19 @@ msgstr "Saltar una" msgid "Step Over" msgstr "Salir de" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "Se ha saltado la instrucción." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "Se ha cancelado el salto de instrucciones por tardar demasiado tiempo." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "Saltando instrucciones..." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "Se han saltado las instrucciones." @@ -9543,20 +9791,20 @@ msgstr "Se han saltado las instrucciones." msgid "Stepping" msgstr "Avanzar" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "Estéreo" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "Modo 3D estereoscópico" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Modo 3D estereoscópico:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Estereoscopia" @@ -9577,25 +9825,29 @@ msgstr "Palanca" msgid "Stop" msgstr "Detener" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "Detener la reproducción o grabación de pulsaciones" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "Detener grabación" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "Juego detenido" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:216 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:48 msgid "Store EFB Copies to Texture Only" -msgstr "Almacenar copias de EFB como de solo lectura" +msgstr "Almacenar copias del EFB como de solo lectura" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:219 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:87 msgid "Store XFB Copies to Texture Only" msgstr "Almacenar copias de XFB como de solo lectura" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -9603,13 +9855,14 @@ msgid "" "Texture)

If unsure, leave this checked." msgstr "" -"Almacena copias EFB exclusivamente en la GPU, sin pasar por la memoria del " -"sistema. Causa defectos gráficos en un pequeño número de juegos." -"

Habilitado = Copias de EFB a la textura
Deshabilitado = Copias de " -"EFB a la RAM (y textura)

Si tienes dudas, deja esta " -"opción activada." +"Almacena las copias del EFB exclusivamente en la GPU, sin pasar por la " +"memoria del sistema. Causará defectos gráficos en un pequeño número de " +"juegos.

Habilitado = El EFB pasará sus copias a la textura." +"
Deshabilitado = El EFB pasará sus copias a la RAM (y a las texturas)." +"

Si tienes dudas, deja esta opción activada." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -9617,8 +9870,8 @@ msgid "" "Texture)

If unsure, leave this checked." msgstr "" -"Almacena copias XFB exclusivamente en la GPU, sin pasar por la memoria del " -"sistema. Causa defectos gráficos en un pequeño número de juegos." +"Almacena copias del XFB exclusivamente en la GPU, sin pasar por la memoria " +"del sistema. Causa defectos gráficos en un pequeño número de juegos." "

Habilitado = Copias de XFB a la textura
Deshabilitado = Copias de " "XFB a la RAM (y textura)

Si tienes dudas, deja esta " "opción activada." @@ -9627,7 +9880,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Estirar a la ventana" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "Configuración de sincronización estricta" @@ -9650,16 +9903,16 @@ msgstr "Stylus" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "Todo correcto" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "Añadido correctamente al índice de juego en red" @@ -9669,11 +9922,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "Convertidas %n imágene(s)." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "«%1» se ha borrado correctamente." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "Exportados satisfactoriamente %n de %1 archivo(s) de guardado." @@ -9682,9 +9935,9 @@ msgstr "Exportados satisfactoriamente %n de %1 archivo(s) de guardado." msgid "Successfully exported save files" msgstr "Las partidas guardadas se han exportado correctamente." -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" -msgstr "Los certificados se han instalado correctamente en la NAND." +msgstr "Se han extraído satisfactoriamente los certificados de la NAND" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 msgid "Successfully extracted file." @@ -9694,12 +9947,12 @@ msgstr "El archivo se ha extraído correctamente." msgid "Successfully extracted system data." msgstr "Los datos del sistema se han extraído correctamente." -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "Archivo de guardado importado correctamente." #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "El juego se ha instalado correctamente en la NAND." @@ -9711,16 +9964,16 @@ msgstr "Se ha desinstalado el juego de la NAND. " msgid "Support" msgstr "Ayuda" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "Formatos de archivo soportados" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." -msgstr "Soporta SD y SDHC. El tamaño por defecto es 128MB." +msgstr "Compatible con tarjetas SD y SDHC. El tamaño por defecto es de 128 MB." #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "Envolvente" @@ -9728,69 +9981,86 @@ msgstr "Envolvente" msgid "Suspended" msgstr "Suspendido" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Invertir ojos" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." msgstr "" -"Intercambia el ojo izquierdo y el derecho. Más útil en el modo de " -"estereoscopia lado a lado.

Si tienes dudas, deja " -"esta opción desactivada." +"Intercambia las imágenes para los ojos izquierdo y derecho. Más útil con el " +"modo de estereoscopia en paralelo.

Si tienes dudas, " +"deja esta opción desactivada." #: Source/Core/Core/HW/WiimoteEmu/Extension/Nunchuk.cpp:48 #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:209 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionSimulation.cpp:35 msgid "Swing" -msgstr "Oscilar" +msgstr "Oscilación" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "Cambiar a A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "Cambiar a B" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "Símbolo" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" -msgstr "Dirección final del símbolo (%s):" +msgstr "Dirección final del símbolo (%1):" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" +"No se ha encontrado el mapa de símbolos.\n" +"\n" +"En caso de no existir, puedes generar uno desde la barra del menú:\n" +"Símbolos -> Generar el mapa a partir de... ->\n" +"\tDirección | Base de datos de firmas | Módulos RSO" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "Nombre de símbolo:" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "Símbolos" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "Sincronizar" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "Sincronizar códigos AR/Gecko" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "Sincronizar todas las partidas guardadas de Wii" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "Sincronizar guardados" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "Sincroniza y empareja mandos de Wii reales." @@ -9804,40 +10074,40 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" "Sincroniza los procesos de la GPU y la CPU para ayudar a prevenir parones " -"puntuales al utilizar dos o más núcleos. (activarlo hace que la emulación " -"sea más segura y compatible, desactivarlo hace que sea más rápida)" +"puntuales al utilizar dos o más núcleos (Activado: el ajuste más compatible; " +"Desactivado: el ajuste más rápido)." -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "Sincronizando códigos AR..." -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "Sincronizando códigos Gecko..." -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "Sincronizando datos guardados..." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Idioma del sistema:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "Entrada TAS" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "Herramientas TAS" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "Etiquetas" @@ -9855,11 +10125,11 @@ msgstr "Cola" msgid "Taiwan" msgstr "Taiwán" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Capturar pantalla" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Probar" @@ -9868,7 +10138,7 @@ msgstr "Probar" msgid "Texture Cache" msgstr "Caché de texturas" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "Precisión de la caché de texturas" @@ -9892,9 +10162,9 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "La tabla hash H3 para la partición {0} no es correcta." -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" -msgstr "El archivo IPL no es conocido como un buen volcado. (CRC32: {0:x})" +msgstr "El archivo IPL no es un volcado correcto conocido. (CRC32: {0:x})" #. i18n: This string is referring to a game mode in Super Smash Bros. Brawl called Masterpieces #. where you play demos of NES/SNES/N64 games. Official translations: @@ -9906,7 +10176,7 @@ msgstr "El archivo IPL no es conocido como un buen volcado. (CRC32: {0:x})" msgid "The Masterpiece partitions are missing." msgstr "Faltan las particiones de los Clásicos" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." @@ -9914,7 +10184,7 @@ msgstr "" "No se ha podido reparar la NAND. Recomendamos que vuelvas a volcar los datos " "de la consola original y pruebes otra vez desde cero." -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "NAND arreglada sin problemas." @@ -9943,8 +10213,8 @@ msgid "" "NetPlay with anyone who is using a good dump." msgstr "" "La partición de datos no está en su posición normal. Esto afectará a los " -"tiempos de carga emulados. No podrás compartir las grabaciones de entrada y " -"usar juego en red con nadie que esté usando un buen volcado." +"tiempos de carga emulados. No podrás compartir las grabaciones de entrada ni " +"jugar en red con nadie que esté usando un buen volcado." #: Source/Core/DiscIO/VolumeVerifier.cpp:593 msgid "" @@ -9960,7 +10230,7 @@ msgstr "" "Es necesario añadir las claves de descifrado al archivo de respaldo de la " "NAND." -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9977,7 +10247,7 @@ msgstr "No se pudo leer el disco (en {0:#x} - {1:#x})." msgid "The disc that was about to be inserted couldn't be found." msgstr "No se encontró el disco que se iba a insertar." -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -10003,19 +10273,19 @@ msgstr "La consola virtual ya está actualizada." msgid "The entered MAC address is invalid." msgstr "La dirección MAC que has puesto no es correcta." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "El PID que has puesto no es correcto." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "El VID que has puesto no es correcto." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "La expresión contiene un error de sintaxis" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -10024,7 +10294,7 @@ msgid "" msgstr "" "El archivo\n" "%1\n" -"esta o corrupto o no es un archivo de tarjeta de memoria de GameCube\n" +"está dañado o no es un archivo de tarjeta de memoria de GameCube.\n" "%2" #: Source/Core/DolphinQt/ConvertDialog.cpp:403 @@ -10076,7 +10346,7 @@ msgstr "El ID del juego es {0}, pero debería ser {1}." msgid "The game disc does not contain any usable update information." msgstr "El disco del juego no contiene ninguna actualización relevante." -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "El juego se está ejecutando actualmente." @@ -10090,7 +10360,7 @@ msgstr "" "con el menú del sistema no podrás actualizar la consola emulada con este " "disco." -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -10098,9 +10368,9 @@ msgid "" "\n" "(MSAA with {0} samples found on default framebuffer)" msgstr "" -"El controlador de gráficos está forzando a Dolphin a habilitar el anti-" -"aliasing. Debes desactivar este forzado en la configuración del controlador " -"de gráficos para que Dolphin funcione correctamente.\n" +"El controlador de gráficos está forzando a Dolphin a usar el suavizado de " +"bordes. Debes desactivar este forzado en los ajustes del controlador de " +"gráficos para que Dolphin funcione correctamente.\n" "\n" "(Se ha identificado MSAA con {0} muestras en el búfer de marco " "predeterminado)" @@ -10113,7 +10383,7 @@ msgstr "Las sumas de verificación no coinciden." msgid "The hashes match!" msgstr "¡Sumas de verificación correctas!" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -10132,6 +10402,11 @@ msgid "" "sync properly, please change the selected device to Memory Card or GCI " "Folder." msgstr "" +"La grabación tiene indicada que debería haber una tarjeta de memoria " +"introducida en {0:n}, pero actualmente no hay ninguna (en su lugar se ha " +"conectado: {1}). Si quieres que la grabación se sincronice correctamente, " +"debes cambiar el dispositivo seleccionado a una tarjeta de memoria o una " +"carpeta GCI." #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:141 msgid "The patches in %1 are not for the selected game or game revision." @@ -10139,12 +10414,12 @@ msgstr "" "Los parches de %1 no sirven para el juego seleccionado o para esta revisión " "del mismo." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" -msgstr "El perfil elegido («%1») no existe" +msgstr "El perfil elegido '%1' no existe" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "El juego grabado ({0}) no es el mismo que el juego elegido ({1})" @@ -10154,8 +10429,8 @@ msgid "" "code has been modified, the game might run at the wrong speed, graphical " "elements might be offset, or the game might not run at all." msgstr "" -"El código de región no coincide con el ID del juego. Esto se debe a que el " -"código de región ha sido modificado, es posible que el juego se ejecute a " +"El código de región no coincide con el ID del juego. Si esto se debe a que " +"el código de región ha sido modificado, es posible que el juego se ejecute a " "una velocidad incorrecta, que los elementos gráficos se desplacen o que el " "juego no se ejecute en absoluto." @@ -10163,21 +10438,23 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "El código AR descifrado que se ha obtenido no contiene ninguna línea." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" +"El mismo archivo no puede ser usado en múltiples ranuras; Ya está en uso por " +"%1." -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" "Las versiones de juego en red del servidor y del cliente son incompatibles." -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "El servidor está lleno." -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "El servidor envió un mensaje de error desconocido." @@ -10188,11 +10465,11 @@ msgid "" "\n" "Do you really want to enable software rendering? If unsure, select 'No'." msgstr "" -"El software renderizador es significativamente más lento que otros motores y " -"solo se recomienda para propósitos de depuración.\n" +"El renderizado por software es significativamente más lento que otros " +"motores y solo se recomienda para propósitos de depuración.\n" "\n" -"¿Realmente quieres habilitar el renderizado de software? Si no está seguro, " -"seleccione 'No'." +"¿Realmente quieres habilitar el renderizado de software? Si tienes dudas, " +"selecciona 'No'." #. i18n: This is "common" as in "shared", not the opposite of "uncommon" #: Source/Core/DiscIO/VolumeVerifier.cpp:951 @@ -10204,7 +10481,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "El archivo especificado «{0}» no existe" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "La tarjeta de memoria elegida ya contiene un archivo \"%1\"." @@ -10258,20 +10535,20 @@ msgstr "La partición {0} no está alineada correctamente." msgid "There are too many partitions in the first partition table." msgstr "Hay demasiadas particiones en la primera tabla de particiones." -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "¡No hay nada que deshacer!" #: Source/Core/DolphinQt/GameList/GameList.cpp:445 msgid "There was an issue adding a shortcut to the desktop" -msgstr "Hubo un problema al añadir el acceso directo al escritorio" +msgstr "Ha habido un problema al añadir el acceso directo al escritorio" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:150 msgid "" "These settings override core Dolphin settings.\n" "Undetermined means the game uses Dolphin's setting." msgstr "" -"Estas opciones remplazan a las opciones de núcleo de Dolphin.\n" +"Estos ajustes remplazan a los ajustes de núcleo de Dolphin.\n" "Sin determinar significa que el juego usa la configuración de Dolphin." #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:167 @@ -10301,7 +10578,7 @@ msgstr "" "se utiliza en las consolas coreanas. Es probable que esto conduzca a un " "ERROR #002." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "Este dispositivo USB ya está en la lista." @@ -10321,7 +10598,7 @@ msgstr "" "El simulador de Action Replay no soporta códigos que modifiquen al Action " "Replay." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "No puede deshacerse." @@ -10377,7 +10654,11 @@ msgstr "" "problema es más probable es que se trate de un disco de doble capa que ha " "sido descargado como un disco de una sola capa." -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "Este archivo no contiene ningún sistema de Wii válido" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "" "Este archivo no tiene el formato de una copia de respaldo NAND de BootMii.%zx" @@ -10388,10 +10669,10 @@ msgid "" "pre-rendered videos, extra languages or entire game modes will be broken. " "This problem generally only exists in illegal copies of games." msgstr "" -"Este juego ha sido hackeado para que quepa en un DVD de una sola capa. " -"Algunos contenidos, como los vídeos pre-procesados, los idiomas adicionales " -"o los modos de juego completos, se romperán. Este problema habitualmente " -"solo existe en las copias ilegales de juegos." +"Este juego ha sido manipulado para que quepa en un DVD de una sola capa. " +"Algunos contenidos, como los vídeos prerenderizados, los idiomas ajenos al " +"inglés o japonés o incluso modos de juego completos darán problemas. Este " +"problema únicamente suele ocurrir en las copias ilegales de juegos." #: Source/Core/VideoCommon/VideoBackendBase.cpp:178 msgid "" @@ -10403,31 +10684,31 @@ msgstr "" "(«bounding box»), pero tu tarjeta gráfica o controladores no la soportan, " "por lo que tendrás problemas y cuelgues durante la partida." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." -msgstr "Esto es un mal volcado." +msgstr "Este es un mal volcado." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -"Esto es un mal volcado. Esto no significa necesariamente que el juego no " -"funcione correctamente" +"Este es un mal volcado. No significa necesariamente que el juego no funcione " +"correctamente" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -"Esto es un buen volcado de acuerdo con Redump.org, pero Dolphin ha " -"encontrado problemas. Esto podría ser un bug en Dolphin." +"Este es un buen volcado de acuerdo con Redump.org, pero Dolphin ha " +"encontrado problemas. Puede ser un bug en Dolphin." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." -msgstr "Esto es un buen volcado." +msgstr "Este es un buen volcado." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "Esta sesión requiere una contraseña:" @@ -10438,8 +10719,8 @@ msgid "" "\n" "If unsure, leave this unchecked." msgstr "" -"Esta configuración le permite establecer un reloj en tiempo real (RTC) " -"personalizado separado de la hora actual del sistema.\n" +"Este ajuste permite establecer un reloj en tiempo real (RTC) personalizado " +"independiente a la hora de tu sistema.\n" "\n" "Si tienes dudas, deja esta opción desactivada." @@ -10499,7 +10780,7 @@ msgstr "" "Este valor se multiplica con la profundidad establecida en la configuración " "de gráficos." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." @@ -10507,17 +10788,17 @@ msgstr "" "Esto limitará la velocidad de carga por cliente, que se utiliza para guardar " "la sincronización." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" "May prevent desync in some games that use EFB reads. Please ensure everyone " "uses the same video backend." msgstr "" -"Esto sincronizará la configuración de gráficos adicionales y forzará a todos " -"a la misma resolución interna.\n" -"Puede impedir la desincronización en algunos juegos que utilizan lecturas " -"EFB. Por favor asegúrese de que todos usen el mismo motor de vídeo." +"Sincronizará la configuración adicional de gráficos y forzará a todos a la " +"misma resolución interna.\n" +"Puede impedir la desincronización en algunos juegos que utilizan lecturas al " +"EFB. Asegúrate de que todos los jugadores utilizan el mismo motor de vídeo." #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:142 msgid "Thread context" @@ -10531,7 +10812,7 @@ msgstr "Hilos" msgid "Threshold" msgstr "Límite" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "TiB" @@ -10539,7 +10820,7 @@ msgstr "TiB" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:210 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionSimulation.cpp:32 msgid "Tilt" -msgstr "Inclinar" +msgstr "Inclinación" #. i18n: Refers to the "Calibration" setting of gyroscope input. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp:49 @@ -10550,36 +10831,36 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Título" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "A" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "A:" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" -msgstr "Des/activar pantalla &completa" +msgstr "Alternar &pantalla completa" #: Source/Core/Core/HotkeyManager.cpp:124 msgid "Toggle 3D Anaglyph" -msgstr "Des/activar anaglifos 3D" +msgstr "Alternar anaglifos 3D" #: Source/Core/Core/HotkeyManager.cpp:122 msgid "Toggle 3D Side-by-Side" -msgstr "Des/activar 3D paralelo" +msgstr "Alternar 3D de imágenes paralelas (SBS)" #: Source/Core/Core/HotkeyManager.cpp:123 msgid "Toggle 3D Top-Bottom" -msgstr "Des/activar 3D vertical" +msgstr "Alternar 3D de imágenes verticales (T/B)" #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:61 msgid "Toggle All Log Types" @@ -10587,40 +10868,40 @@ msgstr "Alternar todos los tipos de registro" #: Source/Core/Core/HotkeyManager.cpp:106 msgid "Toggle Aspect Ratio" -msgstr "Activar relación de aspecto" +msgstr "Alternar relación de aspecto" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" -msgstr "Des/activar punto de interrupción" +msgstr "Alternar punto de interrupción" #: Source/Core/Core/HotkeyManager.cpp:105 msgid "Toggle Crop" -msgstr "Recortar imagen" +msgstr "Alternar recorte de imagen" #: Source/Core/Core/HotkeyManager.cpp:113 msgid "Toggle Custom Textures" -msgstr "Ver/ocultar texturas personalizadas" +msgstr "Alternar texturas personalizadas" #: Source/Core/Core/HotkeyManager.cpp:108 msgid "Toggle EFB Copies" -msgstr "Activar copias de EFB" +msgstr "Copias del EFB" #: Source/Core/Core/HotkeyManager.cpp:111 msgid "Toggle Fog" -msgstr "Activar niebla" +msgstr "Niebla" #: Source/Core/Core/HotkeyManager.cpp:34 msgid "Toggle Fullscreen" -msgstr "Cambiar a pantalla completa" +msgstr "Pantalla completa" #: Source/Core/Core/HotkeyManager.cpp:31 msgid "Toggle Pause" -msgstr "Des/pausar" +msgstr "Pausa" #: Source/Core/Core/HotkeyManager.cpp:85 msgid "Toggle SD Card" -msgstr "Cambiar tarjeta de memoria SD" +msgstr "Alternar tarjeta de memoria SD" #: Source/Core/Core/HotkeyManager.cpp:107 msgid "Toggle Skip EFB Access" @@ -10628,7 +10909,7 @@ msgstr "Omitir acceso al EFB" #: Source/Core/Core/HotkeyManager.cpp:112 msgid "Toggle Texture Dumping" -msgstr "Des/activar volcado de texturas" +msgstr "Alternar volcado de texturas" #: Source/Core/Core/HotkeyManager.cpp:86 msgid "Toggle USB Keyboard" @@ -10636,11 +10917,11 @@ msgstr "Alternar teclado USB" #: Source/Core/Core/HotkeyManager.cpp:109 msgid "Toggle XFB Copies" -msgstr "Activar copias de XFB" +msgstr "Alternar copias de XFB" #: Source/Core/Core/HotkeyManager.cpp:110 msgid "Toggle XFB Immediate Mode" -msgstr "Activar el modo inmediato de XFB" +msgstr "Alternar el modo inmediato de XFB" #: Source/Core/InputCommon/ControlReference/ExpressionParser.cpp:956 msgid "Tokenizing failed." @@ -10650,34 +10931,40 @@ msgstr "La tokenización falló." msgid "Toolbar" msgstr "Barra de herramientas" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Superior" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" -msgstr "En vertical" +msgstr "Por encima/Por debajo" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "Aciertos totales" #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" -msgstr "Pitch total" +msgstr "Cabeceo total" #. i18n: Refers to an amount of rotational movement about the "yaw" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:46 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUCursor.cpp:35 msgid "Total Yaw" -msgstr "Yaw total" +msgstr "Guiñada total" #. i18n: Refers to emulated wii remote movements. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:59 msgid "Total rotation about the pitch axis." -msgstr "Rotación total acerca del eje Pitch" +msgstr "La rotación total alrededor del eje de cabeceo." #. i18n: Refers to emulated wii remote movements. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:50 msgid "Total rotation about the yaw axis." -msgstr "Rotación total acerca del eje yaw." +msgstr "La rotación total alrededor del eje de guiñada." #. i18n: Refering to emulated wii remote movement. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:145 @@ -10692,20 +10979,20 @@ msgid "Touch" msgstr "Tocar" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Chino tradicional" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "Error del servidor de paso" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "Servidor de paso" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "" "Se agotó el tiempo para que el servidor de paso se conecte con el anfitrión " @@ -10721,7 +11008,7 @@ msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:92 msgid "Triforce AM Baseboard" -msgstr "" +msgstr "Placa AM Triforce" #: Source/Core/Core/HW/GCPadEmu.cpp:72 #: Source/Core/Core/HW/WiimoteEmu/Extension/Classic.cpp:94 @@ -10739,22 +11026,14 @@ msgstr "Gatillos" msgid "Type" msgstr "Tipo" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" +msgstr "Alineación según tipo" + +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 msgid "Typical GameCube/Wii Address Space" msgstr "Espacio de dirección habitual de GameCube/Wii" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" -msgstr "U&16" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "U&32" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" -msgstr "U&8" - #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 msgid "UNKNOWN" msgstr "Desconocido" @@ -10765,13 +11044,13 @@ msgstr "EE. UU." #: Source/Core/Core/HW/EXI/EXI_Device.h:93 msgid "USB Gecko" -msgstr "Gecko USB" +msgstr "USB de Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "Error en la lista de dispositivos USB permitidos" @@ -10781,10 +11060,10 @@ msgid "" "but GPU demands are low.

Recommended for low-end hardware. " "

If unsure, select this mode." msgstr "" -"Los ubershaders no se utilizarán. Habrá parones mientras los sombreadores se " +"No se utilizarán los ubershaders. Habrá parones mientras los sombreadores se " "compilan, pero los requisitos gráficos serán bajos.

Recomendado para " -"equipos de gama baja.

Si dudas, elige este modo." +"equipos de gama baja.

Si tienes dudas, selecciona " +"este modo." #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:248 msgid "" @@ -10794,10 +11073,10 @@ msgid "" "with Hybrid Ubershaders and have a very powerful GPU.
" msgstr "" "Los ubershaders se utilizarán siempre. Proporciona una experiencia de juego " -"sin apenas tirones, pero, a cambio, necesita una tarjeta gráfica potente." -"

No utilizar a menos que hayas tenido tirones en " -"la imagen con los ubershaders híbridos y tengas una tarjeta gráfica muy " -"potente." +"sin apenas parones, pero, a cambio, necesita una tarjeta gráfica potente." +"

No utilizar a menos que hayas tenido parones en la " +"imagen con los ubershaders híbridos y tengas una tarjeta gráfica muy potente." +"" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:253 msgid "" @@ -10813,10 +11092,14 @@ msgstr "" "afectando mínimamente al rendimiento, pero los resultados dependerán del " "controlador de vídeo." -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "No se puede detectar el módulo RSO" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "No se ha podido abrir el archivo." + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10841,7 +11124,11 @@ msgstr "" "\n" "¿Te gustaría hacer caso omiso de esta línea y continuar el análisis?" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "No se ha podido leer el archivo." + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "Hubo un fallo al escribir los datos en el archivo {0}" @@ -10853,15 +11140,15 @@ msgstr "Sin consolidar" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "Archivos ISO de GC/Wii sin comprimir (*.iso *.gcm)" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Deshacer estado cargado" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Deshacer estado guardado" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "Desinstalar" @@ -10877,18 +11164,18 @@ msgstr "" "Desinstalar el archivo WAD quitará la versión actual del juego de la NAND " "sin borrar las partidas guardadas. ¿Quieres continuar?" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "Estados Unidos" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Desconocido" @@ -10896,7 +11183,7 @@ msgstr "Desconocido" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "Comando desconocido de DVD {0:08x} - error fatal" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "Mensaje SYNC_CODES desconocido recibido con id: {0}" @@ -10908,7 +11195,7 @@ msgstr "" "Mensaje desconocido SYNC_GECKO_CODES con id:{0} recibido del jugador:{1} " "¡Expulsando jugador!" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "Mensaje SYNC_SAVE_DATA desconocido recibido con id: {0}" @@ -10920,15 +11207,15 @@ msgstr "" "Mensaje desconocido SYNC_SAVE_DATA con id: {0} recibido del jugador: {1} " "¡Echando al jugador!" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "Espacio de dirección desconocido" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "Autor desconocido" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "Tipo de datos desconocido" @@ -10936,19 +11223,19 @@ msgstr "Tipo de datos desconocido" msgid "Unknown disc" msgstr "Disco desconocido" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "Se ha producido un error desconocido." -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "Error desconocido {0:x}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "Error desconocido." -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "Se recibió un mensaje desconocido con identificador: {0}" @@ -10957,7 +11244,7 @@ msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" "Mensaje desconocido con id:{0} recibido del jugador:{1} ¡Expulsando jugador!" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Ilimitado" @@ -10973,13 +11260,28 @@ msgstr "Desbloquear cursor" msgid "Unpacking" msgstr "Descomprimiendo" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "Sin signo de 16 bits" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "Sin signo de 32 bits" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "Sin signo de 8 bits" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "Entero sin signo" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10988,7 +11290,7 @@ msgstr "Arriba" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Actualizar" @@ -11045,29 +11347,29 @@ msgstr "Cambiar de/a vertical" msgid "Upright Wii Remote" msgstr "Mando de Wii en vertical" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" -msgstr "Ajustes de envíos estadísticos" +msgstr "Ajustes de envío de estadísticas de uso" #: Source/Core/DolphinQt/Settings/InterfacePane.cpp:143 msgid "Use Built-In Database of Game Names" -msgstr "Utilizar base de datos de nombres de juegos propia" +msgstr "Utilizar base de datos interna de nombres de juegos" #: Source/Core/DolphinQt/Settings/InterfacePane.cpp:144 msgid "Use Custom User Style" -msgstr "Usar estilo de usuario personalizado" +msgstr "Usar estilo personalizado por el usuario" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:104 msgid "Use Lossless Codec (FFV1)" msgstr "Usar códec sin pérdida (FFV1)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "Usar modo PAL60 (EuRGB60)" #: Source/Core/DolphinQt/Settings/InterfacePane.cpp:168 msgid "Use Panic Handlers" -msgstr "Notificar errores y advertencias" +msgstr "Notificar de errores y advertencias" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:287 msgid "" @@ -11088,7 +11390,7 @@ msgstr "" "concretas, principalmente, la aparición de líneas verticales en los vídeos " "FMV. Además, al activar el muestreo manual de texturas, se podrán emular " "correctamente ciertos casos especiales de aplicación de texturas (con una " -"resolución interna de 1x o cuando la opción Copia de EFB a escala esté " +"resolución interna de 1x o cuando la opción Copia del EFB a escala esté " "desactivada y sin utilizar texturas personalizadas) y se emularán mejor los " "cálculos del nivel de detalle.

Esto puede empeorar el rendimiento, " "sobre todo con resoluciones internas elevadas; por otro lado, el filtrado " @@ -11102,18 +11404,61 @@ msgstr "" "Utilizar un único búfer de profundidad para ambos ojos. Necesario para " "algunos juegos." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "Utilizar la configuración del asignador de memoria en la búsqueda" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "Usar direcciones físicas" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "Usar direcciones virtuales cuando sea posible" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" +"Se utiliza para encontrar funciones según el momento en el que funcionen.\n" +"Es similar al Ultimap de Cheat Engine.\n" +"Es necesario cargar un mapa de símbolos antes de usarlo.\n" +"Las listas de inclusión/exclusión persistirán al acabar o empezar la " +"emulación.\n" +"Estas listas no persistirán tras cerrar Dolphin.\n" +"\n" +"«Comenzar grabación»: hace un seguimiento de las funciones que se ejecuten.\n" +"«Detener grabación»: elimina la grabación actual sin modificar las listas.\n" +"«El código no ha sido ejecutado»: haz clic aquí durante una grabación para " +"añadir las funciones grabadas a una lista de exclusión y reiniciar después " +"la lista de grabación.\n" +"«El código ha sido ejecutado»: haz clic aquí durante una grabación para " +"añadir las funciones grabadas a una lista de inclusión y reiniciar después " +"la lista de grabación.\n" +"\n" +"Una vez hayas utilizado las listas de exclusión e inclusión una vez, se " +"restará la lista de exclusión a la de inclusión y se mostrará cualquier " +"función incluida que quede.\n" +"Puedes seguir usando los botones «El código no ha sido ejecutado»/«El código " +"ha sido ejecutado» para reducir más los resultados." + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "Configuración del usuario" @@ -11126,11 +11471,11 @@ msgstr "Interfaz de usuario" msgid "User Style:" msgstr "Estilo de usuario:" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "Variables del usuario" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" @@ -11141,7 +11486,7 @@ msgstr "" "Puedes utilizarlas para guardar o acceder a valores que se encuentren entre " "las entradas y salidas del mismo controlador maestro." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -11160,8 +11505,8 @@ msgid "" "will be created instead.

If unsure, leave this " "unchecked." msgstr "" -"Usa la pantalla completa para renderizar.

Si se desactiva se creará " -"una ventana de renderizado independiente en su lugar." +"Usa la pantalla completa para renderizar.

Si desactivas esta opción, " +"se utilizará en su lugar una ventana de renderizado." "

Si tienes dudas, deja esta opción desactivada." @@ -11172,30 +11517,30 @@ msgid "" "dolphin_emphasis>" msgstr "" "Usa la ventana principal de Dolphin para renderizar en vez de hacerlo en una " -"ventana independiente.

En caso de duda, no actives " -"esta opción." +"ventana independiente.

Si tienes dudas, deja esta " +"opción desactivada." #: Source/Core/DolphinQt/AboutDialog.cpp:57 msgid "Using Qt %1" msgstr "Usando Qt %1" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "Habitualmente usado para las luces de los objetos" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "Habitualmente usado para matrices normales" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "habitualmente usado para las matrices de posición" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "Habitualmente usado para las matrices de coordenadas de texturas" @@ -11208,7 +11553,7 @@ msgstr "Opciones útiles para el desarrollo" msgid "V-Sync" msgstr "Sincronización vertical" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Valor" @@ -11241,8 +11586,8 @@ msgstr "Verificar certificados" msgid "Verifying" msgstr "Verificando" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "Versión" @@ -11258,7 +11603,7 @@ msgstr "FOV vertical" #. i18n: Refers to a positional offset applied to an emulated wiimote. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:39 msgid "Vertical Offset" -msgstr "Desplazamiento Vertical" +msgstr "Desplazamiento vertical" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:214 msgid "Video" @@ -11278,7 +11623,7 @@ msgstr "Ver &memoria" msgid "Virtual Notches" msgstr "Muescas virtuales" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "Espacio de la dirección virtual" @@ -11305,7 +11650,7 @@ msgstr "Subir volumen" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "Archivos WAD (*.wad)" @@ -11370,16 +11715,16 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "WASAPI (modo exclusivo)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" -msgstr "Ruta WFS:" +msgstr "Ruta del WFS:" #: Source/Core/DolphinQt/ConvertDialog.cpp:350 msgid "WIA GC/Wii images (*.wia)" msgstr "Archivos WIA GC/Wii (*.wia)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "Esperando a un primer escaneo..." @@ -11414,7 +11759,7 @@ msgstr "" "

Si tienes dudas, deja esta opción desactivada." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -11423,20 +11768,20 @@ msgid "" "

If unsure, leave this checked." msgstr "" "Espera hasta que el juego se sincronice con la GPU emulada antes de escribir " -"el contenido de las copias EFB en la RAM.

Reduce la sobrecarga de " -"las copias EFB RAM, proporcionando un aumento de rendimiento en muchos " -"juegos, a riesgo de romper aquellas que no se sincronizan de forma segura " -"con la GPU emulada.

Si tienes dudas, deja esta " -"opción activada." +"el contenido de las copias del EFB en la RAM.

Reduce la sobrecarga " +"de las copias del EFB a la RAM, lo que aumentará el rendimiento en muchos " +"juegos, pero con el riesgo de romper aquellos que no se sincronicen de forma " +"segura con la GPU emulada.

Si tienes dudas, deja " +"esta opción activada." #: Source/Core/Common/MsgHandler.cpp:61 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Advertencia" @@ -11457,7 +11802,7 @@ msgstr "" "Advertencia: el número de bloques indicados por el BAT ({0}) no coincide con " "el del encabezado de archivo cargado ({1})" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " @@ -11468,7 +11813,7 @@ msgstr "" "cargar otra partida antes de continuar o cargar esta sin el modo de solo " "lectura activo." -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " @@ -11478,7 +11823,7 @@ msgstr "" "del fotograma actual de la partida. (byte {0} < {1}) (fotograma {2} > {3}). " "Deberías cargar otra partida guardada antes de continuar." -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" @@ -11489,7 +11834,7 @@ msgstr "" "o cargar esta partida en el modo de solo lectura. De lo contrario, es muy " "probable que se desincronice." -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -11531,9 +11876,9 @@ msgstr "" #. It's not related to timekeeping devices. #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:29 msgid "Watch" -msgstr "&Ver" +msgstr "Vigilar" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "Página web" @@ -11556,7 +11901,7 @@ msgstr "" "Vuelca las texturas base del juego en User/Dump/Textures/<game_id>/. " "Si la opción «Detección arbitraria de mipmap» del apartado de mejoras está " "activada, también se incluirán las texturas con mipmaps arbitrarios." -"
En caso de duda, no actives esta opción.Si tienes dudas, deja esta opción activada." #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:221 @@ -11569,16 +11914,16 @@ msgstr "" "Vuelca las texturas mipmap del juego en User/Dump/Textures/<" "game_id>/. Si la opción «Detección arbitraria de mipmap» del apartado de " "mejoras está activada, también se incluirán las texturas con mipmaps " -"arbitrarios.
En caso de duda, no actives esta opción." +"arbitrarios.
Si tienes dudas, deja esta opción activada." +"" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" -msgstr "Dispositivos USB permitidos en la cesión de Bluetooth" +msgstr "Dispositivos USB permitidos para acceso directo a Bluetooth" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" -msgstr "Hack de pantalla panorámica" +msgstr "Arreglo para pantallas panorámicas" #: Source/Core/Core/HotkeyManager.cpp:335 #: Source/Core/DolphinQt/Config/Mapping/HotkeyWii.cpp:20 @@ -11592,11 +11937,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Menú de Wii" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Raíz de la NAND de Wii:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Mando de Wii" @@ -11604,8 +11949,8 @@ msgstr "Mando de Wii" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "Mando de Wii %1" @@ -11618,37 +11963,37 @@ msgstr "Botones del mando de Wii" msgid "Wii Remote Orientation" msgstr "Orientación del mando de Wii" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Ajustes del mando de Wii" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Mandos de Wii" #: Source/Core/DolphinQt/TAS/WiiTASInputWindow.cpp:289 msgid "Wii TAS Input %1 - Classic Controller" -msgstr "Entrada TAS %1 - Mando clásico" +msgstr "Entrada TAS de Wii %1 - Mando clásico" #: Source/Core/DolphinQt/TAS/WiiTASInputWindow.cpp:303 msgid "Wii TAS Input %1 - Wii Remote" -msgstr "Entrada TAS %1 - Mando de Wii" +msgstr "Entrada TAS de Wii %1 - Mando de Wii" #: Source/Core/DolphinQt/TAS/WiiTASInputWindow.cpp:275 msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" -msgstr "Entrada TAS %1 - Mando de Wii y Nunchuk" +msgstr "Entrada TAS de Wii %1 - Mando de Wii y Nunchuk" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "Wii y su mando" #: Source/Core/DiscIO/VolumeVerifier.cpp:102 msgid "Wii data is not public yet" -msgstr "Datos de Wii no son públicos aun" +msgstr "Los datos de Wii todavía no son públicos" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" -msgstr "Archivos de partida Wii (*.bin);;Todos los archivos (*)" +msgstr "Archivos de guardado de Wii (*.bin);;Todos los archivos (*)" #: Source/Core/DolphinQt/MenuBar.cpp:70 msgid "WiiTools Signature MEGA File" @@ -11677,18 +12022,18 @@ msgid "World" msgstr "Mundo" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "Escribir" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "Escribir datos de guardado" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "Solo escritura" @@ -11701,12 +12046,12 @@ msgid "Write to File" msgstr "Escribir en el archivo" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "Escribir en registro" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "Escribir en registro y pausar" @@ -11714,7 +12059,7 @@ msgstr "Escribir en registro y pausar" msgid "Write to Window" msgstr "Escribir en la ventana" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "Versión incorrecta" @@ -11725,7 +12070,7 @@ msgstr "Versión incorrecta" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "Registro XF" @@ -11754,8 +12099,8 @@ msgid "Yellow" msgstr "Amarillo" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "Sí" @@ -11781,8 +12126,9 @@ msgid "" "\n" "Are you sure you want to continue anyway?" msgstr "" -"Estás a punto de ejecutar una imagen de disco NKit. Estas provocan una serie " -"de problemas que no suceden con las imágenes normales, como, por ejemplo:\n" +"Estás a punto de ejecutar una imagen de disco NKit. Las imágenes NKit " +"producen una serie de problemas que no suceden con las imágenes normales, " +"como, por ejemplo:\n" "\n" "• Los tiempos de carga son mayores\n" "• No podrás jugar en red con quienes tengan una imagen normal del juego\n" @@ -11804,12 +12150,13 @@ msgid "" "10.14 (Mojave) or newer. Please do not report any issues encountered unless " "they also occur on 10.14+." msgstr "" -"Estas tratando de usar el motor Vulkan (Metal) en un sistema operativo no " -"soportado. Para toda la funcionalidad tienes que usar macOS 10.14 (Mojave) o " -"superior. Por favor no reportes problemas que encuentres a no ser que " -"también ocurran en 10.14+" +"Estás tratando de usar el motor Vulkan (Metal) en un sistema operativo no " +"compatible. Tienes que utilizar la versión de macOS 10.14 (Mojave) o " +"superior para poder activar todas sus prestaciones. Por favor, no informes " +"de ningún problema que encuentres a no menos que también aparezcan en las " +"versiones 10.14 o posteriores." -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "No hay actualizaciones disponibles en el canal elegido" @@ -11829,8 +12176,8 @@ msgstr "" "Debido a las mejoras en la exactitud de la emulación, esta ROM ya no " "funciona correctamente.\n" "\n" -"Elimina los archivos dsp_rom.bin y dsp_coef.bin de la carpeta GC en la " -"carpeta global del usuario para utilizar la ROM del DSP gratuita o " +"Elimina los archivos dsp_rom.bin y dsp_coef.bin de la carpeta GC, en la " +"carpeta global del usuario, para utilizar la ROM del DSP gratuita o " "sustitúyelos por volcados correctos extraídos de una GameCube o Wii real.\n" "\n" "¿Quieres parar para resolver el problema?\n" @@ -11852,19 +12199,19 @@ msgstr "" msgid "You have to enter a name." msgstr "Tienes que escribir un nombre." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "¡Debe proporcionar un nombre para su sesión!" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" -msgstr "Debes proporcionar una región para tu sesión!" +msgstr "¡Debes proporcionar una región para tu sesión!" #: Source/Core/DolphinQt/Settings/InterfacePane.cpp:310 msgid "You must restart Dolphin in order for the change to take effect." msgstr "Debes reiniciar Dolphin para que el cambio tenga efecto." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "Tienes que elegir un juego para alojar la partida." @@ -11881,9 +12228,9 @@ msgid "" msgstr "" "Tus ROM del DSP tienen hashes incorrectos.\n" "\n" -"Elimina los archivos dsp_rom.bin y dsp_coef.bin de la carpeta GC en el " -"carpeta global del usuario para utilizar la ROM del DSP gratuita o " -"sustitúyelos por volcados correctos extraídos de una GameCube o Wii real.\n" +"Borra los archivos dsp_rom.bin y dsp_coef.bin de la carpeta GC en el carpeta " +"global del usuario para utilizar la ROM del DSP gratuita o sustitúyelos por " +"volcados correctos extraídos de una GameCube o Wii real.\n" "\n" "¿Quieres parar para resolver el problema?\n" "Si seleccionas «No», el audio se oirá con ruidos." @@ -11903,23 +12250,23 @@ msgstr "Todavía no hemos implementado el código «Zero 3»" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "Código «Zero» desconocido para Dolphin: {0:08x}" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "[%1, %2]" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "[%1, %2] y [%3, %4]" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "^ Xor" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "alineado" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "cualquier valor" @@ -11938,13 +12285,13 @@ msgstr "cm" msgid "d3d12.dll could not be loaded." msgstr "d3d12.dll podría no haberse cargado." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "defecto" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "desconectado" @@ -11960,31 +12307,31 @@ msgstr "errno" msgid "fake-completion" msgstr "finalización-falsa" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "es igual que" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "es superior que" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "es superior o igual que" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "es inferior que" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "es inferior o igual que" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "no es igual que" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "último valor" @@ -12009,14 +12356,14 @@ msgstr "nada" #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:178 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:213 msgid "off" -msgstr "off" +msgstr "no" #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:178 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:213 msgid "on" msgstr "sí" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "o elige un dispositivo" @@ -12025,7 +12372,7 @@ msgstr "o elige un dispositivo" msgid "s" msgstr "s" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "este valor:" @@ -12034,7 +12381,7 @@ msgstr "este valor:" msgid "uDraw GameTablet" msgstr "uDraw GameTablet" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "sin alinear" @@ -12053,11 +12400,11 @@ msgstr "{0} (Clásico)" msgid "{0} (NKit)" msgstr "{0} (NKit)" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" -"Se han encontrado {0} IPL en el directorio {1}. El disco podría no ser " -"reconocido" +"Se ha encontrado un IPL {0} en el directorio {1}. Es posible que no " +"reconozca el disco" #: Source/Core/Core/NetPlayServer.cpp:1182 msgid "{0} failed to synchronize codes." @@ -12076,7 +12423,7 @@ msgstr "" "Comprueba tus permisos de escritura o lleva el archivo fuera de Dolphin." #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "{0}bloques de {1}. Ratio de compresión {2}%" @@ -12084,7 +12431,7 @@ msgstr "{0}bloques de {1}. Ratio de compresión {2}%" msgid "{0} was not a directory, moved to *.original" msgstr "{0} no era un directorio, movido a *.original" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "| Or" diff --git a/Languages/po/fa.po b/Languages/po/fa.po index ef14fd71ea01..4b6572a402dd 100644 --- a/Languages/po/fa.po +++ b/Languages/po/fa.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: H.Khakbiz , 2011\n" "Language-Team: Persian (http://www.transifex.com/delroth/dolphin-emu/" "language/fa/)\n" "Language: fa\n" @@ -20,7 +20,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -28,7 +28,7 @@ msgid "" "problems that Dolphin is unable to detect." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -36,7 +36,7 @@ msgid "" "that it hasn't been tampered with." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -52,7 +52,7 @@ msgstr "" msgid " (Disc %1)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "" @@ -60,7 +60,7 @@ msgstr "" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -74,7 +74,7 @@ msgstr "" msgid "%" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -88,17 +88,17 @@ msgstr "" msgid "%1 %" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "" @@ -117,7 +117,7 @@ msgid "%1 (Revision %3)" msgstr "" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -154,7 +154,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "" @@ -165,23 +165,23 @@ msgid "" "Current Frame: %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -190,11 +190,11 @@ msgstr "" msgid "%1 ms" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "" @@ -206,15 +206,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -230,30 +230,30 @@ msgstr "" msgid "%1[%2]: %3/%4 MiB" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "" @@ -273,7 +273,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "" @@ -282,11 +282,11 @@ msgid "&Add Memory Breakpoint" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "" @@ -294,19 +294,19 @@ msgstr "" msgid "&Add..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "" @@ -314,11 +314,11 @@ msgstr "" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&نقاط انفصال" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "" @@ -326,15 +326,15 @@ msgstr "" msgid "&Cancel" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "" @@ -342,7 +342,7 @@ msgstr "" msgid "&Clone..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "" @@ -350,19 +350,20 @@ msgstr "" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "" @@ -374,7 +375,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "" @@ -382,11 +383,11 @@ msgstr "" msgid "&Edit..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&برابرسازی" @@ -398,43 +399,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&فایل" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "&پيشروى فریم" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "تنظیمات &گرافیک" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&کمک" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "تنظیم &شرت کاتها" @@ -446,11 +451,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "" @@ -458,7 +463,7 @@ msgstr "" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&جیت" @@ -466,23 +471,23 @@ msgstr "&جیت" msgid "&Language:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&بارگذاری وضعیت" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&حافظه" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "" @@ -490,7 +495,7 @@ msgstr "" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "" @@ -498,24 +503,24 @@ msgstr "" msgid "&No" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&باز کردن..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&گزینه ها" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "مکث" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&شروع بازی" @@ -523,11 +528,11 @@ msgstr "&شروع بازی" msgid "&Properties" msgstr "خواص" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "ثبت کردن" @@ -536,24 +541,24 @@ msgid "&Remove" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "شروع &دوباره" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "" @@ -561,11 +566,11 @@ msgstr "" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&توقف" @@ -573,11 +578,11 @@ msgstr "&توقف" msgid "&Theme:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&ابزارها" @@ -585,17 +590,17 @@ msgstr "&ابزارها" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&دیدگاه" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "" @@ -607,11 +612,11 @@ msgstr "&ویکی" msgid "&Yes" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" @@ -623,7 +628,7 @@ msgstr "" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(خاموش)" @@ -631,34 +636,34 @@ msgstr "(خاموش)" msgid "(ppc)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" @@ -666,6 +671,10 @@ msgstr "" msgid "128 Mbit (2043 blocks)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "" @@ -674,35 +683,35 @@ msgstr "" msgid "16-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "" @@ -714,25 +723,25 @@ msgstr "" msgid "32-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "" @@ -746,28 +755,32 @@ msgstr "" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "" @@ -775,29 +788,33 @@ msgstr "" msgid "64 Mbit (1019 blocks)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "" @@ -806,25 +823,25 @@ msgstr "" msgid "8-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "" @@ -843,12 +860,12 @@ msgid "" "Notes:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "" @@ -866,17 +883,17 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" @@ -885,7 +902,7 @@ msgstr "" msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -909,8 +926,8 @@ msgstr "" msgid "AR Codes" msgstr "کدهای اکشن ریپلی" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "" @@ -933,7 +950,7 @@ msgstr "" msgid "Accuracy:" msgstr "دقت:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "" @@ -1029,9 +1046,9 @@ msgstr "" msgid "Adapter:" msgstr "آداپتور:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "اضافه کردن" @@ -1039,11 +1056,11 @@ msgstr "اضافه کردن" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "" @@ -1075,46 +1092,49 @@ msgstr "" msgid "Add to &watch" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "اضافه کردن..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1158,39 +1178,43 @@ msgstr "پیشرفته" msgid "Africa" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "" @@ -1199,25 +1223,25 @@ msgstr "" msgid "All players' saves synchronized." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1243,7 +1267,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "" @@ -1261,39 +1285,39 @@ msgstr "زاویه" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "فیلتر ناهمسانگر:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "آنتی آلیاسینگ:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1307,15 +1331,15 @@ msgstr "" msgid "Apply" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "" @@ -1323,11 +1347,11 @@ msgstr "" msgid "Are you sure you want to delete this file?" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "" @@ -1340,11 +1364,11 @@ msgid "Aspect Ratio" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "نسبت طول به عرض تصویر:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "" @@ -1352,7 +1376,7 @@ msgstr "" msgid "Assign Controllers" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1377,7 +1401,7 @@ msgstr "" msgid "Australia" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "" @@ -1389,15 +1413,15 @@ msgstr "" msgid "Auto" msgstr "اتوماتیک" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "اتوماتیک (ضریب ۶۴۰x۵۲۸)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1413,7 +1437,7 @@ msgstr "" msgid "Auto-Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1424,12 +1448,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "" @@ -1444,11 +1468,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "ثبت اشاره گر پایه" @@ -1474,7 +1498,7 @@ msgstr "تنظیمات پشتوانه" msgid "Backend:" msgstr "پشتوانه:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "ورودی پس زمینه" @@ -1485,7 +1509,13 @@ msgstr "ورودی پس زمینه" msgid "Backward" msgstr "به عقب" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1493,19 +1523,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "نشان" @@ -1529,7 +1560,7 @@ msgstr "" msgid "Basic" msgstr "بنیانی" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "تنظیمات بنیانی" @@ -1537,7 +1568,7 @@ msgstr "تنظیمات بنیانی" msgid "Bass" msgstr "بم" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1545,11 +1576,11 @@ msgstr "" msgid "Battery" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1571,7 +1602,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "" @@ -1584,7 +1615,7 @@ msgstr "" msgid "Blocking" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "بلوک ها" @@ -1607,15 +1638,15 @@ msgid "" "Passthrough mode cannot be used." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "" @@ -1623,7 +1654,7 @@ msgstr "" msgid "Borderless Fullscreen" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "پائین" @@ -1637,7 +1668,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "" @@ -1646,7 +1677,7 @@ msgstr "" msgid "Breakpoint" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" @@ -1676,7 +1707,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1684,12 +1715,12 @@ msgstr "" msgid "Buffer Size:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "حافظه موقت:" @@ -1731,11 +1762,11 @@ msgstr "دکمه ها" msgid "C Stick" msgstr "استیک سی" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "" @@ -1766,7 +1797,7 @@ msgstr "" msgid "Calculate" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1786,15 +1817,15 @@ msgstr "" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1804,7 +1835,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1812,16 +1843,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "" @@ -1838,23 +1869,23 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "" @@ -1876,7 +1907,7 @@ msgstr "" msgid "Change &Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "تعویض &دیسک..." @@ -1884,15 +1915,15 @@ msgstr "تعویض &دیسک..." msgid "Change Disc" msgstr "تعویض دیسک" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1912,7 +1943,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "گپ زدن" @@ -1928,11 +1959,11 @@ msgstr "جستجوی کد تقلب" msgid "Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "" @@ -1946,7 +1977,7 @@ msgid "" "whether it's still in use." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "" @@ -1954,16 +1985,16 @@ msgstr "" msgid "China" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "انتخاب فایل برای باز کردن" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -1986,14 +2017,14 @@ msgid "Classic Controller" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "پاک کردن" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "" @@ -2010,28 +2041,47 @@ msgstr "" msgid "Close" msgstr "بستن" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2049,7 +2099,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "" @@ -2062,7 +2112,7 @@ msgstr "" msgid "Compression:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "" @@ -2074,13 +2124,13 @@ msgstr "" msgid "Config" msgstr "پیکربندی" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "پیکربندی" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2088,21 +2138,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "" @@ -2115,26 +2165,26 @@ msgstr "" msgid "Confirm on Stop" msgstr "تائید برای توقف" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "اتصال" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "اتصال کیبورد USB" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "" @@ -2154,11 +2204,11 @@ msgstr "" msgid "Connect Wii Remote 4" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" @@ -2170,15 +2220,19 @@ msgstr "" msgid "Connected" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "" @@ -2191,7 +2245,7 @@ msgstr "" msgid "Control Stick" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "" @@ -2219,7 +2273,7 @@ msgstr "" msgid "Controllers" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2227,7 +2281,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2236,7 +2290,7 @@ msgid "" "Native.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2261,12 +2315,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "" @@ -2303,33 +2357,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "" @@ -2337,11 +2396,15 @@ msgstr "" msgid "Copy failed" msgstr "کپی با شکست مواجه شد" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "" @@ -2356,16 +2419,16 @@ msgstr "هسته" msgid "Cost" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "" @@ -2444,15 +2507,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2479,7 +2542,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "" @@ -2502,11 +2565,11 @@ msgstr "" msgid "Crossfade" msgstr "ضرب دری" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2514,7 +2577,7 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "" @@ -2522,7 +2585,7 @@ msgstr "" msgid "Current thread" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2553,7 +2616,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "" @@ -2581,7 +2644,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2589,11 +2652,11 @@ msgid "" "title=DSU_Client\">refer to this page." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "" @@ -2605,28 +2668,27 @@ msgstr "" msgid "Data Transfer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2644,7 +2706,7 @@ msgid "Debug Only" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "اشکال زدائی کردن" @@ -2686,7 +2748,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "پیش فرز" @@ -2702,7 +2764,7 @@ msgstr "" msgid "Default Font" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "آیزو پیش فرز:" @@ -2727,7 +2789,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2742,11 +2804,11 @@ msgid "Delete Selected Files..." msgstr "" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2754,21 +2816,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "شرح" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "" @@ -2777,11 +2839,11 @@ msgstr "" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "شناسایی" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2789,25 +2851,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "دستگاه" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "تنظیمات دستگاه" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "" @@ -2819,11 +2881,15 @@ msgstr "" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "" @@ -2854,7 +2920,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "" @@ -2866,15 +2932,15 @@ msgstr "" msgid "Disable Emulation Speed Limit" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "از کارانداختن مه" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "" @@ -2882,7 +2948,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2896,7 +2962,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2913,11 +2979,15 @@ msgstr "دیسک" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2935,25 +3005,25 @@ msgstr "" msgid "Distance of travel from neutral position." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "آیا می خواهید برابرسازی فعلی را متوقف کنید؟" @@ -2970,9 +3040,9 @@ msgstr "" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "" @@ -2984,8 +3054,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "فیلم های تاس دلفین (*.dtm)" @@ -3018,21 +3088,21 @@ msgstr "" msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3047,7 +3117,7 @@ msgstr "" msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "" @@ -3060,24 +3130,26 @@ msgid "Done compressing disc image." msgstr "" #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "پائین" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "" @@ -3085,11 +3157,11 @@ msgstr "" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "" @@ -3112,27 +3184,35 @@ msgstr "" msgid "Dual Core" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "مصنوعی" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "نسخه برداری صدا" @@ -3144,7 +3224,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "نسخه برداری مقصد ای اف بی" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "نسخه برداری فریم ها" @@ -3156,7 +3236,7 @@ msgstr "" msgid "Dump Objects" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "" @@ -3253,16 +3333,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "هلندی" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "خ&روج" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3274,7 +3354,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3302,7 +3382,7 @@ msgstr "افکت" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3310,7 +3390,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "" @@ -3322,7 +3402,7 @@ msgstr "" msgid "Embedded Frame Buffer (EFB)" msgstr "" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "" @@ -3330,11 +3410,11 @@ msgstr "" msgid "Emu Thread already running" msgstr "ریسمان شبیه ساز قبلا اجرا شده است" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "" @@ -3350,8 +3430,12 @@ msgstr "" msgid "Emulation Speed" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3367,7 +3451,7 @@ msgstr "" msgid "Enable Audio Stretching" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "فعال کردن کدهای تقلب" @@ -3379,7 +3463,7 @@ msgstr "" msgid "Enable Dual Core" msgstr "فعال کردن پردازنده با دو هسته یا بیشتر" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "فعال کردن پردازنده با دو هسته یا بیشتر (بالا بردن سرعت)" @@ -3405,19 +3489,19 @@ msgid "Enable Progressive Scan" msgstr "فعال کردن پويش تصاعدی (Progressive Scan)" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "فعال کردن اسکیرین سیور" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "" @@ -3443,7 +3527,7 @@ msgid "" "= Compatible, OFF = Fast)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3451,7 +3535,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3481,7 +3565,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3517,7 +3601,7 @@ msgstr "" msgid "Encoding" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3530,12 +3614,12 @@ msgid "Enet Didn't Initialize" msgstr "" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "انگلیسی" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3545,7 +3629,7 @@ msgstr "بهسازی" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "" @@ -3559,11 +3643,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "" @@ -3572,65 +3656,68 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "خطا" @@ -3644,19 +3731,19 @@ msgid "Error loading selected language. Falling back to system default." msgstr "" "بارگذاری زبان انتخاب شده با شکست مواجه شد. برگشت به زبان پیش فرض سیستم." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3676,7 +3763,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3726,11 +3813,11 @@ msgid "" "may not show fonts correctly, or crash." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3739,11 +3826,39 @@ msgstr "" msgid "Euphoria" msgstr "خوشی" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3792,14 +3907,14 @@ msgstr "" msgid "Experimental" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3807,15 +3922,15 @@ msgstr "" msgid "Export Recording" msgstr "صادر کردن ضبط" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "صادر کردن ضبط..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3827,22 +3942,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "پسوند" @@ -3855,7 +3970,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3863,7 +3978,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "" @@ -3901,7 +4016,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "پخش کننده فیفو" @@ -3909,17 +4024,17 @@ msgstr "پخش کننده فیفو" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -3931,7 +4046,7 @@ msgstr "" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -3952,12 +4067,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -3969,19 +4084,19 @@ msgstr "" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "دانلود کدها با شکست مواجه شد." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -3990,7 +4105,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "" @@ -4013,29 +4128,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "" @@ -4051,23 +4166,23 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "" @@ -4079,11 +4194,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "" @@ -4094,7 +4209,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "" @@ -4121,11 +4236,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "" @@ -4134,7 +4249,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4146,7 +4261,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4154,25 +4269,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4187,15 +4302,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4203,23 +4318,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4227,11 +4342,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "نوشتن BT.DINF به SYSCONF با شکست مواجه شد" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4239,22 +4354,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4263,19 +4378,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4288,7 +4403,7 @@ msgstr "سریع" msgid "Fast Depth Calculation" msgstr "" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4305,7 +4420,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "" @@ -4319,18 +4434,18 @@ msgstr "مشخصات فایل" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "" @@ -4338,11 +4453,11 @@ msgstr "" msgid "File Size:" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "فایل شامل کدی نیست." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4356,11 +4471,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4368,15 +4483,15 @@ msgstr "" msgid "Filesystem" msgstr "فایل سیستم" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4384,11 +4499,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "" @@ -4402,18 +4517,22 @@ msgid "" "This can take a while." msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "درست کردن چک سام ها" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4423,13 +4542,14 @@ msgstr "" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "" @@ -4453,7 +4573,7 @@ msgstr "" msgid "Force 16:9" msgstr "۱۶:۹ اجباری" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "" @@ -4461,15 +4581,15 @@ msgstr "" msgid "Force 4:3" msgstr "۴:۳ اجباری" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "فیلتر کردن بافت اشیاء اجباری" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4479,7 +4599,7 @@ msgid "" "
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4498,21 +4618,21 @@ msgstr "" msgid "Forward" msgstr "جلو" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "" @@ -4541,7 +4661,7 @@ msgstr "" msgid "Frame Range" msgstr "محدوده فریم" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4553,19 +4673,19 @@ msgstr "" msgid "France" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4573,7 +4693,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -4981,7 +5101,7 @@ msgstr "سبز چپ" msgid "Green Right" msgstr "سبز راست" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "" @@ -4994,7 +5114,7 @@ msgstr "گیتار" msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "" @@ -5007,12 +5127,29 @@ msgstr "هک" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5024,19 +5161,19 @@ msgstr "" msgid "Hide" msgstr "مخفی" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5054,21 +5191,27 @@ msgstr "" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "میزبان" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5076,7 +5219,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5084,11 +5227,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "" @@ -5100,7 +5243,7 @@ msgstr "" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "" @@ -5151,11 +5294,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "تنظیمات آی پی ال" @@ -5164,7 +5307,7 @@ msgid "IR" msgstr "فروسرخ" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "میزان حساسیت فروسرخ" @@ -5186,22 +5329,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "تندیس" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5248,7 +5391,7 @@ msgstr "تغییرات قالب بندی نادیده گرفته شود" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5256,7 +5399,7 @@ msgid "" "checked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5277,41 +5420,50 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" " Time elapsed: %1s" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5364,8 +5516,8 @@ msgstr "مشخصات" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "مشخصات" @@ -5374,10 +5526,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "ورودی" @@ -5391,16 +5543,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "درج کارت اس دی" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "" @@ -5412,7 +5570,7 @@ msgstr "" msgid "Install Update" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "" @@ -5428,11 +5586,11 @@ msgstr "" msgid "Instruction" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "" @@ -5450,7 +5608,7 @@ msgid "Interface" msgstr "واسط گرافیک" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "خطای داخلی LZO - فشرده سازی با شکست مواجه شد" @@ -5459,27 +5617,27 @@ msgstr "خطای داخلی LZO - فشرده سازی با شکست مواجه msgid "Internal LZO Error - decompression failed" msgstr "" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "خطای داخلی LZO - lzo_init() با شکست مواجه شد" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "وضوح داخلی:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5487,11 +5645,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5499,7 +5657,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5508,15 +5666,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5524,11 +5682,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "" @@ -5541,31 +5699,31 @@ msgstr "" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "فایل ضبط نامعتبر" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "پارامتر های جستجوی نامعتبر (هیچ شیئ انتخاب نشده)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "رشته جستجوی نامعتبر (قادر به تبدیل به عدد نیست)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "رشته جستجوی نامعتبر (فقط رشته های با طول زوج پشتیبانی می شود)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "" @@ -5574,8 +5732,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "ایتالیایی" @@ -5583,11 +5741,11 @@ msgstr "ایتالیایی" msgid "Italy" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "" @@ -5595,47 +5753,47 @@ msgstr "" msgid "JIT Blocks" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5647,11 +5805,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5662,12 +5820,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "ژاپنی" @@ -5687,12 +5845,12 @@ msgstr "" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "" @@ -5705,20 +5863,20 @@ msgstr "" msgid "Keys" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "کره ای" @@ -5746,7 +5904,7 @@ msgstr "" msgid "Label" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5826,15 +5984,15 @@ msgstr "" msgid "License" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "" @@ -5843,17 +6001,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "بارگذاری" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "" @@ -5861,7 +6019,7 @@ msgstr "" msgid "Load Custom Textures" msgstr "بارگذاری بافت اشیاء دلخواه" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "" @@ -5870,7 +6028,7 @@ msgstr "" msgid "Load Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -5963,23 +6121,23 @@ msgstr "بارگذاری وضعیت - شکاف ۸" msgid "Load State Slot 9" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "" @@ -5987,12 +6145,12 @@ msgstr "" msgid "Load from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "" @@ -6000,7 +6158,7 @@ msgstr "" msgid "Load..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "" @@ -6011,7 +6169,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "" @@ -6020,7 +6178,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "ثبت وقایع" @@ -6028,7 +6186,7 @@ msgstr "ثبت وقایع" msgid "Log Configuration" msgstr "پیکر بندی ثبت وقایع" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6055,7 +6213,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "" @@ -6084,7 +6242,7 @@ msgstr "" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6094,7 +6252,7 @@ msgstr "استیک اصلی" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "" @@ -6103,7 +6261,7 @@ msgstr "" msgid "Maker:" msgstr "سازنده" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6111,7 +6269,7 @@ msgid "" "unchecked.
" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "" @@ -6119,7 +6277,7 @@ msgstr "" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6127,15 +6285,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6144,7 +6302,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "" @@ -6153,11 +6311,11 @@ msgstr "" msgid "Medium" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "" @@ -6165,7 +6323,7 @@ msgstr "" msgid "Memory Card" msgstr "کارت حافظه" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "" @@ -6183,7 +6341,7 @@ msgstr "" msgid "Memory Override" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "" @@ -6199,7 +6357,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6207,13 +6365,13 @@ msgid "" "want to continue?" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "" @@ -6221,19 +6379,19 @@ msgstr "" msgid "Misc" msgstr "متفرقه" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "تنظیمات متفرقه" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6256,12 +6414,12 @@ msgid "" "unchecked.
" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6273,11 +6431,11 @@ msgstr "" msgid "Monospaced Font" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6317,10 +6475,10 @@ msgstr "" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "" @@ -6328,26 +6486,26 @@ msgstr "" msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "" @@ -6359,37 +6517,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "اسم:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6397,16 +6555,16 @@ msgstr "" msgid "Netherlands" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "" @@ -6427,11 +6585,11 @@ msgstr "" msgid "New" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "" @@ -6439,7 +6597,7 @@ msgstr "" msgid "New Tag..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "" @@ -6456,7 +6614,7 @@ msgstr "" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6465,17 +6623,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "" @@ -6483,6 +6641,10 @@ msgstr "" msgid "No Adapter Detected" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "" @@ -6493,24 +6655,20 @@ msgstr "" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "تشریحی دردسترس نیست" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6522,15 +6680,15 @@ msgstr "" msgid "No file loaded / recorded." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "" @@ -6538,11 +6696,15 @@ msgstr "" msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6553,7 +6715,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6561,17 +6723,13 @@ msgstr "" msgid "No save data found." msgstr "" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6581,7 +6739,7 @@ msgstr "هیچ" msgid "North America" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "" @@ -6589,11 +6747,11 @@ msgstr "" msgid "Not Set" msgstr "ست نشده است" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6601,7 +6759,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6661,13 +6819,13 @@ msgstr "" msgid "Nunchuk Stick" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6680,11 +6838,11 @@ msgid "Oceania" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "خاموش" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6696,17 +6854,17 @@ msgstr "" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6721,7 +6879,7 @@ msgstr "گشودن" msgid "Open &Containing Folder" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "" @@ -6769,7 +6927,7 @@ msgstr "" msgid "OpenGL ES" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6787,7 +6945,7 @@ msgstr "گزینه ها" msgid "Orange" msgstr "نارنجی" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6795,7 +6953,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "غیره" @@ -6808,11 +6966,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "" @@ -6820,12 +6978,12 @@ msgstr "" msgid "Overlay Information" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "" @@ -6850,7 +7008,7 @@ msgstr "" msgid "PPC Size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6867,7 +7025,7 @@ msgstr "گیم پد ها" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6876,23 +7034,23 @@ msgstr "" msgid "Parsing Error" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "" @@ -6913,7 +7071,7 @@ msgid "Path:" msgstr "" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "مسیرها" @@ -6921,7 +7079,7 @@ msgstr "مسیرها" msgid "Pause" msgstr "مکث" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "" @@ -6944,11 +7102,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "نورپردازی به ازای هر پیکسل" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "" @@ -6958,23 +7116,23 @@ msgstr "" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "" @@ -6987,7 +7145,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "" @@ -7007,16 +7165,16 @@ msgstr "شروع ضبط" msgid "Playback Options" msgstr "گزینه های بازنواخت" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "بازی کنان" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7027,29 +7185,29 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "افکت ها:" @@ -7061,15 +7219,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7106,7 +7264,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7117,15 +7275,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7133,25 +7291,25 @@ msgstr "" msgid "Problem" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "پروفایل" @@ -7165,15 +7323,15 @@ msgstr "" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7185,11 +7343,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "" @@ -7199,12 +7357,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "سوال" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "خارج شدن" @@ -7224,11 +7382,11 @@ msgstr "آر آنالوگ" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7241,44 +7399,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "محدوده" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "" @@ -7286,11 +7444,11 @@ msgstr "" msgid "Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "" @@ -7303,11 +7461,11 @@ msgstr "" msgid "Record" msgstr "ضبط" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7332,7 +7490,7 @@ msgstr "قرمز چپ" msgid "Red Right" msgstr "قرمز راست" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7348,16 +7506,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "به روز کردن" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7365,26 +7523,26 @@ msgstr "" msgid "Refresh Game List" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "" @@ -7404,16 +7562,16 @@ msgstr "" msgid "Remind Me Later" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "پاک کردن" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7436,8 +7594,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "" @@ -7470,29 +7628,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "شروع دوباره" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7500,15 +7666,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7520,11 +7686,11 @@ msgstr "" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "" @@ -7533,7 +7699,7 @@ msgstr "" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7591,11 +7757,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7604,12 +7770,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7619,11 +7786,11 @@ msgstr "" msgid "Rumble" msgstr "شوک" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7631,15 +7798,15 @@ msgstr "" msgid "Russia" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "" @@ -7655,7 +7822,7 @@ msgstr "" msgid "SHA-1:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "" @@ -7669,11 +7836,11 @@ msgstr "" msgid "START" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "ذخ&یره وضعیت" @@ -7683,7 +7850,7 @@ msgid "Safe" msgstr "بی خطر" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7696,7 +7863,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7717,11 +7884,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7733,7 +7900,7 @@ msgstr "" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7783,23 +7950,23 @@ msgstr "ذخیره وضعیت - شکاف ۸" msgid "Save State Slot 9" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "" @@ -7807,7 +7974,7 @@ msgstr "" msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "" @@ -7819,26 +7986,26 @@ msgstr "" msgid "Save as..." msgstr "ذخیره بعنوان..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "" @@ -7846,7 +8013,7 @@ msgstr "" msgid "Save to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "" @@ -7854,23 +8021,23 @@ msgstr "" msgid "Save..." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "کپی ای اف بی تغییر سایز یافته" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7878,36 +8045,36 @@ msgstr "" msgid "ScrShot" msgstr "عکس فوری" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "جستجو" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "جستجوی پوشه های فرعی" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "" @@ -7915,7 +8082,7 @@ msgstr "" msgid "Search games..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "" @@ -7939,28 +8106,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "انتخاب" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -7968,11 +8135,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -7980,7 +8147,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "" @@ -7988,7 +8155,7 @@ msgstr "" msgid "Select State" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "" @@ -8032,41 +8199,45 @@ msgstr "" msgid "Select State Slot 9" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "" @@ -8074,11 +8245,11 @@ msgstr "" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8086,12 +8257,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "انتخاب فایل ذخیره" @@ -8107,15 +8278,15 @@ msgstr "" msgid "Selected Font" msgstr "" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "پروفایل انتخاب شده وجود ندارد" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8139,7 +8310,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8179,11 +8350,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "فرستادن" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "موقعیت سنسور بار:" @@ -8195,63 +8366,71 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" "May not work for all games." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "" @@ -8261,7 +8440,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8296,11 +8475,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "نمایش &ثبت وقایع" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "نمایش نوار &ابزار" @@ -8308,15 +8487,15 @@ msgstr "نمایش نوار &ابزار" msgid "Show Active Title in Window Title" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "" @@ -8324,7 +8503,7 @@ msgstr "" msgid "Show Debugging UI" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "" @@ -8332,43 +8511,43 @@ msgstr "" msgid "Show FPS" msgstr "نمایش فریم بر ثانیه" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "نمایش فرانسه" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "نمایش گیم کیوب" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "نمایش ورودی تصویر" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "نمایش ایتالیا" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "نمایش کره" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "" @@ -8376,7 +8555,7 @@ msgstr "" msgid "Show Language:" msgstr "نمایش زبان:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "نمایش &پیکربندی ثبت وقایع" @@ -8388,7 +8567,7 @@ msgstr "" msgid "Show NetPlay Ping" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "" @@ -8396,7 +8575,7 @@ msgstr "" msgid "Show On-Screen Display Messages" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "نمایش پال" @@ -8405,23 +8584,23 @@ msgstr "نمایش پال" msgid "Show PC" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "نمایش پایگاه ها" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "نمایش مناطق" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "" @@ -8430,46 +8609,50 @@ msgstr "" msgid "Show Statistics" msgstr "نمایش آمار" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "نمایش تایوان" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "نمایش ایالات متحده آمریکا" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "نمایش وی" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8501,7 +8684,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "" @@ -8517,16 +8700,31 @@ msgstr "" msgid "Sideways Wii Remote" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "چینی ساده شده" @@ -8534,7 +8732,7 @@ msgstr "چینی ساده شده" msgid "Simulate DK Bongos" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8561,7 +8759,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "از قلم انداختن دسترسی ای اف بی از پردازنده" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "" @@ -8569,7 +8767,7 @@ msgstr "" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8583,19 +8781,19 @@ msgstr "" msgid "Slider Bar" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "شکاف ای" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "شکاف بی" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "" @@ -8613,7 +8811,7 @@ msgstr "" msgid "Software Renderer" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8630,11 +8828,11 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "" @@ -8647,8 +8845,8 @@ msgid "Spain" msgstr "" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "اسپانیایی" @@ -8656,7 +8854,7 @@ msgstr "اسپانیایی" msgid "Speaker Pan" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "حجم صدای اسپیکر:" @@ -8691,7 +8889,7 @@ msgstr "" msgid "Speed up Disc Transfer Rate" msgstr "بالا بردن نرخ نقل و انتقال دادهای دیسک" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "" @@ -8703,16 +8901,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "کنترولر استاندارد" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "شروع" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "" @@ -8720,11 +8918,13 @@ msgstr "" msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "شروع ضبط" @@ -8740,7 +8940,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "" @@ -8751,7 +8951,7 @@ msgstr "" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "چرخ فرمان" @@ -8779,19 +8979,19 @@ msgstr "" msgid "Step Over" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "" @@ -8800,20 +9000,20 @@ msgstr "" msgid "Stepping" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "" @@ -8834,11 +9034,15 @@ msgstr "استیک" msgid "Stop" msgstr "توقف" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "" @@ -8852,7 +9056,7 @@ msgstr "" msgid "Store XFB Copies to Texture Only" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8861,7 +9065,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8874,7 +9078,7 @@ msgstr "" msgid "Stretch to Window" msgstr "کشیدن تصویر به سایز فعلی پنجره" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "" @@ -8897,16 +9101,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -8916,11 +9120,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -8929,7 +9133,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "" @@ -8941,12 +9145,12 @@ msgstr "" msgid "Successfully extracted system data." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "" @@ -8958,16 +9162,16 @@ msgstr "" msgid "Support" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -8975,11 +9179,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -8991,50 +9195,62 @@ msgstr "" msgid "Swing" msgstr "نوسان" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "" @@ -9048,37 +9264,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "زبان سیستم:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "ورودی تاس" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "" @@ -9096,11 +9312,11 @@ msgstr "" msgid "Taiwan" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "گرفتن عکس فوری" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "آزمودن" @@ -9109,7 +9325,7 @@ msgstr "آزمودن" msgid "Texture Cache" msgstr "حافظه ميانى بافت اشیاء" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9131,7 +9347,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9145,13 +9361,13 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "" @@ -9187,7 +9403,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9201,7 +9417,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9223,19 +9439,19 @@ msgstr "" msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9285,7 +9501,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9296,7 +9512,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9313,7 +9529,7 @@ msgstr "" msgid "The hashes match!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9335,12 +9551,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9355,20 +9571,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "نتیجه کد رمزگشایی شده اکشن ریپلی شامل هیچ خطی نیست." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9389,7 +9605,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9440,7 +9656,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "" @@ -9476,7 +9692,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "" @@ -9496,7 +9712,7 @@ msgstr "" "این شبیه ساز اکشن ریپلی از کدهایی که توسط خود اکشن ریپلی پیراسته شده باشد " "پشتیبانی نمی کند." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "" @@ -9536,7 +9752,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "" @@ -9554,27 +9774,27 @@ msgid "" "or freezes while running this game." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9630,13 +9850,13 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9656,7 +9876,7 @@ msgstr "" msgid "Threshold" msgstr "سرحد" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "" @@ -9673,22 +9893,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "عنوان" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "به" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "" @@ -9713,7 +9933,7 @@ msgid "Toggle Aspect Ratio" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "" @@ -9773,14 +9993,20 @@ msgstr "" msgid "Toolbar" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "بالا" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9815,20 +10041,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "چینی سنتی" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "" @@ -9858,20 +10084,12 @@ msgstr "دکمه ها" msgid "Type" msgstr "نوع" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9888,9 +10106,9 @@ msgstr "" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -9918,10 +10136,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -9938,7 +10160,11 @@ msgid "" "Would you like to ignore this line and continue parsing?" msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -9950,15 +10176,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "خنثی کردن وضعیت بارگذاری" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "" @@ -9972,18 +10198,18 @@ msgid "" "title from the NAND without deleting its save data. Continue?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "ناشناخته" @@ -9991,7 +10217,7 @@ msgstr "ناشناخته" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10001,7 +10227,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10011,15 +10237,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10027,19 +10253,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10047,7 +10273,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "" @@ -10063,13 +10289,28 @@ msgstr "" msgid "Unpacking" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10078,7 +10319,7 @@ msgstr "بالا" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "به روز کردن" @@ -10133,7 +10374,7 @@ msgstr "" msgid "Upright Wii Remote" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "" @@ -10149,7 +10390,7 @@ msgstr "" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "" @@ -10175,18 +10416,40 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "" @@ -10199,18 +10462,18 @@ msgstr "" msgid "User Style:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10236,23 +10499,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10265,7 +10528,7 @@ msgstr "کاربردی" msgid "V-Sync" msgstr "هماهنگ کردن فرکانس عمودی بازی با صفحه نمایش" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "مقدار" @@ -10298,8 +10561,8 @@ msgstr "" msgid "Verifying" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "" @@ -10335,7 +10598,7 @@ msgstr "" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10362,7 +10625,7 @@ msgstr "" msgid "Vulkan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "" @@ -10410,7 +10673,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10418,8 +10681,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10441,7 +10704,7 @@ msgid "" "unsure, leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10454,10 +10717,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "اخطار" @@ -10473,28 +10736,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10520,7 +10783,7 @@ msgstr "" msgid "Watch" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "" @@ -10549,11 +10812,11 @@ msgid "" "unsure, leave this checked.
" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "هک کردن صفحه عریض" @@ -10569,11 +10832,11 @@ msgstr "وی" msgid "Wii Menu" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "ریشه وی نند:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "" @@ -10581,8 +10844,8 @@ msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "" @@ -10595,11 +10858,11 @@ msgstr "" msgid "Wii Remote Orientation" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "" @@ -10615,7 +10878,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "" @@ -10623,7 +10886,7 @@ msgstr "" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "" @@ -10651,18 +10914,18 @@ msgid "World" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "" @@ -10675,12 +10938,12 @@ msgid "Write to File" msgstr "نوشتن به فایل" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "" @@ -10688,7 +10951,7 @@ msgstr "" msgid "Write to Window" msgstr "نوشتن در پنجره" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10699,7 +10962,7 @@ msgstr "" msgid "X" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "" @@ -10728,8 +10991,8 @@ msgid "Yellow" msgstr "زرد" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "" @@ -10764,7 +11027,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10793,11 +11056,11 @@ msgstr "" msgid "You have to enter a name." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10805,7 +11068,7 @@ msgstr "" msgid "You must restart Dolphin in order for the change to take effect." msgstr "برای اعمال تغییرات شما باید دلفین را از نو اجرا کنید." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "" @@ -10836,23 +11099,23 @@ msgstr "کد صفر ۳ پشتیبانی نمی شود" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10871,13 +11134,13 @@ msgstr "" msgid "d3d12.dll could not be loaded." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -10893,31 +11156,31 @@ msgstr "" msgid "fake-completion" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -10947,7 +11210,7 @@ msgstr "" msgid "on" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "" @@ -10956,7 +11219,7 @@ msgstr "" msgid "s" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -10965,7 +11228,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -10984,7 +11247,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -11003,7 +11266,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11011,7 +11274,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Languages/po/fr.po b/Languages/po/fr.po index a2a3168a00b9..e8609e881199 100644 --- a/Languages/po/fr.po +++ b/Languages/po/fr.po @@ -16,9 +16,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-19 22:09+0000\n" -"Last-Translator: Pascal \n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Pascal , 2013-2022\n" "Language-Team: French (http://www.transifex.com/delroth/dolphin-emu/language/" "fr/)\n" "Language: fr\n" @@ -27,7 +27,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -39,7 +39,7 @@ msgstr "" "Comme les images de disques GameCube contiennent peu de données de contrôle, " "il peut y avoir des problèmes que Dolphin ne peut détecter." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -51,7 +51,7 @@ msgstr "" "Comme ce titre n'est pas conçu pour les consoles Wii commercialisées, " "Dolphin ne peut pas vérifier qu'il n'a pas été modifié." -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -76,7 +76,7 @@ msgstr "" msgid " (Disc %1)" msgstr "(Disque %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "! Non" @@ -85,7 +85,7 @@ msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" "\"{0}\" n'est pas un fichier GCM/ISO valide, ou n'est pas une ISO GC/Wii." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "$ Variable Utilisateur" @@ -99,7 +99,7 @@ msgstr "$ Variable Utilisateur" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "% Modulo" @@ -115,17 +115,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "%1 %2" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "%1 %2 %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -144,7 +144,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (Révision %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "%1 (préréglage)" @@ -184,7 +184,7 @@ msgstr "%1 MB (MEM2)" msgid "%1 doesn't support this feature on your system." msgstr "%1 ne prend pas en charge cette fonctionnalité sur votre système." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "%1 ne prend pas en charge cette fonctionnalité." @@ -198,23 +198,23 @@ msgstr "" "%2 objet(s)\n" "Image actuelle : %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "%1 s'est connecté" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "%1 s'est déconnecté" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "%1 n'est pas une ROM valide" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "%1 est en mode golf" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "%1 zones de mémoire" @@ -223,11 +223,11 @@ msgstr "%1 zones de mémoire" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "%1 session trouvée" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "%1 sessions trouvées" @@ -239,15 +239,15 @@ msgstr "%1%" msgid "%1% (%2 MHz)" msgstr "%1% (%2 MHz)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (Vitesse normale)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "%1, %2, %3, %4" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "%1 : %2" @@ -263,30 +263,30 @@ msgstr "%1[%2] : %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2] : %3/%4 Mio" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "%1x la réso. native (%2x%3)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "%n adresse(s) n'ont pu être accédées dans la mémoire émulée." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "%n adresse(s) restante(s)." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "%n adresse(s) ont été retirées." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "& Et" @@ -306,7 +306,7 @@ msgstr "&3x" msgid "&4x" msgstr "&4x" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&À propos" @@ -315,11 +315,11 @@ msgid "&Add Memory Breakpoint" msgstr "&&Ajouter un point d'arrêt mémoire" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "&Ajouter un nouveau code..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "&Ajouter une fonction" @@ -327,19 +327,19 @@ msgstr "&Ajouter une fonction" msgid "&Add..." msgstr "&Ajouter..." -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "Paramètres &audio" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "Mise à jour &automatique :" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "Démarrage &automatique" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "&Démarrer à partir d'un DVD de sauvegarde" @@ -347,11 +347,11 @@ msgstr "&Démarrer à partir d'un DVD de sauvegarde" msgid "&Borderless Window" msgstr "Fenêtre sans &bordures" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Points d'arrêt" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "Suivi des &bugs" @@ -359,15 +359,15 @@ msgstr "Suivi des &bugs" msgid "&Cancel" msgstr "&Annuler" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "Gestionnaire de &cheats" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "Rechercher des &mises à jour..." -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "&Effacer les symboles" @@ -375,7 +375,7 @@ msgstr "&Effacer les symboles" msgid "&Clone..." msgstr "&Cloner..." -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "&Code" @@ -383,19 +383,20 @@ msgstr "&Code" msgid "&Connected" msgstr "&Connecté" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "Paramètres des &manettes" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "&Copier l'adresse" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "&Créer..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "&Supprimer..." @@ -407,7 +408,7 @@ msgstr "&Effacer la surveillance" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "&Modifier le code" @@ -415,11 +416,11 @@ msgstr "&Modifier le code" msgid "&Edit..." msgstr "&Éditer..." -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "&Éjecter le disque" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Émulation" @@ -431,43 +432,47 @@ msgstr "&Exporter la sauvegarde du jeu..." msgid "&Export State..." msgstr "&Exporter l'état..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "&Exporter comme .gci..." -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Fichier" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&Police..." -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "&Avancement d'image" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "Réglages de la &Vue libre" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "&Générer les symboles depuis" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "Dépôt &GitHub" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "&Aller au début de la fonction" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "Paramètres &graphiques" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Aide" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "Paramètres des &Raccouris clavier" @@ -479,11 +484,11 @@ msgstr "&Importer la sauvegarde du jeu..." msgid "&Import State..." msgstr "&Importer l'état..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "&Importer..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "&Insérer blr" @@ -491,7 +496,7 @@ msgstr "&Insérer blr" msgid "&Interframe Blending" msgstr "Fusion &inter-images" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -499,23 +504,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "&Langue :" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&Charger l'état" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "&Charger une Carte de Symboles" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "Verrouiller l'emplacement des &Widgets" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Mémoire" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "Fil&m" @@ -523,7 +528,7 @@ msgstr "Fil&m" msgid "&Mute" msgstr "&Couper le son" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "&Réseau" @@ -531,24 +536,24 @@ msgstr "&Réseau" msgid "&No" msgstr "&Non" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Ouvrir..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Options" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "&Patcher les fonctions HLE" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Pause" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Démarrer" @@ -556,11 +561,11 @@ msgstr "&Démarrer" msgid "&Properties" msgstr "&Propriétés" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "Mode &Lecture seule" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Registres" @@ -569,24 +574,24 @@ msgid "&Remove" msgstr "&Retirer" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "&Retirer le Code" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "&Renommer symbole" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Reset" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "Gestionnaire de Packs de &Ressources" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "&Sauvegarder la carte des symboles" @@ -594,11 +599,11 @@ msgstr "&Sauvegarder la carte des symboles" msgid "&Scan e-Reader Card(s)..." msgstr "&Lire la ou les carte(s) e-Reader..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "&Limite de vitesse :" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Stop" @@ -606,11 +611,11 @@ msgstr "&Stop" msgid "&Theme:" msgstr "&Thème :" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "&Threads" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Outils" @@ -618,17 +623,17 @@ msgstr "&Outils" msgid "&Unload ROM" msgstr "&Décharger la ROM" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Affichage" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&Regarder" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "Site &web" @@ -640,11 +645,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "&Oui" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "'%1' introuvable, aucun nom de symbole généré" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "'%1' introuvable, recherche de fonctions communes à la place" @@ -656,7 +661,7 @@ msgstr "(Aucun)" msgid "(host)" msgstr "(hôte)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(aucun)" @@ -664,34 +669,34 @@ msgstr "(aucun)" msgid "(ppc)" msgstr "(ppc)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "* Multiplier" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "+ Ajouter" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr ", Virgule" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "- Soustraire" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "--> %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "/ Diviser" @@ -699,6 +704,10 @@ msgstr "/ Diviser" msgid "128 Mbit (2043 blocks)" msgstr "128 Mbit (2043 blocs)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "16 Mbit (251 blocs)" @@ -707,35 +716,35 @@ msgstr "16 Mbit (251 blocs)" msgid "16-bit" msgstr "16-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "Entier 16 bits signé" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "Entier 16 bits non signé" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16/9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x la réso. native (1280x1056) pour 720p" @@ -747,25 +756,25 @@ msgstr "32 Mbit (507 blocs)" msgid "32-bit" msgstr "32-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "Flottant 32 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "Entier 32 bits signé" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "Entier 32 bits non signé" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -779,28 +788,32 @@ msgstr "Profondeur 3D" msgid "3x" msgstr "3x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x la réso. native (1920x1584) pour 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Mbit (59 blocs)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4/3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x la réso. native (2560x2112) pour 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x la réso. native (3200x2640)" @@ -808,29 +821,33 @@ msgstr "5x la réso. native (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Mbit (1019 blocs)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "Flottant 64 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "Entier 64 bits signé" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "Entier 64 bits non signé" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x la réso. native (3840x3168) pour 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x la réso. native (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Mbit (123 blocs)" @@ -839,25 +856,25 @@ msgstr "8 Mbit (123 blocs)" msgid "8-bit" msgstr "8-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "Entier 8 bits signé" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "Entier 8 bits non signé" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x la réso. native (5120x4224) pour 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "< Inférieur à" @@ -879,12 +896,12 @@ msgstr "" "disponible au téléchargement. Vous utilisez la version %2.
Voulez-vous " "la mettre à jour ?

Notes de version :

" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "> Supérieur à" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "Une session NetPlay est en cours !" @@ -909,13 +926,13 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "Un disque est déjà sur le point d'être inséré." -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" "Une sauvegarde d'état ne peut être chargée sans avoir spécifié quel jeu " "démarrer." -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -924,7 +941,7 @@ msgstr "" "perdues si vous arrêtez l'émulation avant qu'il ne soit terminé. Forcer " "l'arrêt ?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" "Une synchronisation ne peut être faite que lorsqu'un jeu Wii est entrain de " @@ -935,7 +952,7 @@ msgstr "" msgid "AD16" msgstr "AD16" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -973,8 +990,8 @@ msgstr "Code AR" msgid "AR Codes" msgstr "Codes AR" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -997,7 +1014,7 @@ msgstr "Accéléromètre" msgid "Accuracy:" msgstr "Précision :" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "Action" @@ -1111,9 +1128,9 @@ msgstr "Adaptateur détecté" msgid "Adapter:" msgstr "Carte :" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Ajouter" @@ -1121,11 +1138,11 @@ msgstr "Ajouter" msgid "Add &breakpoint" msgstr "Ajouter un &point d'arrêt" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "Ajouter un nouveau serveur DSU" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "Ajouter un nouveau périphérique USB" @@ -1157,46 +1174,49 @@ msgstr "Ajouter un point d'arrêt mémoire" msgid "Add to &watch" msgstr "Ajouter à la surveillance" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "Ajouter pour observation" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Ajouter..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Adresse" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "Espace d'adresse" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "Espace d'adresse par état de CPU" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "Adresse :" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1258,39 +1278,43 @@ msgstr "Avancé" msgid "Africa" msgstr "Afrique" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "Aligné sur le type de longueur de données" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "Tous les fichiers" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "Tous les fichiers (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "Tous les fichiers GC/Wii" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "Tous les états sauvegardés (*.sav *.s##);; Tous les fichiers (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "Tous les appareils" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "Les codes de tous les joueurs ont été synchronisés." @@ -1299,19 +1323,19 @@ msgstr "Les codes de tous les joueurs ont été synchronisés." msgid "All players' saves synchronized." msgstr "Les sauvegardes de tous les joueurs ont été synchronisées." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "Autoriser des réglages pour région différente" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "Autoriser l'envoi des statistiques d'utilisation" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "Autoriser les écritures sur la carte SD" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." @@ -1319,7 +1343,7 @@ msgstr "" "Permet la manipulation de la caméra du jeu.

Dans le " "doute, décochez cette case." -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1345,7 +1369,7 @@ msgstr "&Toujours au premier plan" msgid "An inserted disc was expected but not found." msgstr "Un disque devrait déjà être inséré mais n'a pas été trouvé." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Anaglyphe" @@ -1363,39 +1387,39 @@ msgstr "Angle" msgid "Angular velocity to ignore and remap." msgstr "Vélocité angulaire à ignorer et remapper." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "Filtrage anisotropique" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Filtrage anisotropique :" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "Anti-Aliasing" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Anti-Aliasing :" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "Toutes régions" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "Ajouter la signature à" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "Ajouter à un fichier de signature &existant..." -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "A&ppliquer un fichier de signature" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1412,15 +1436,15 @@ msgstr "Date de l'Apploader :" msgid "Apply" msgstr "Appliquer" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "Appliquer un fichier de signature" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "Détection de mipmap arbitraire" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "Êtes-vous sûr de vouloir supprimer \"%1\" ?" @@ -1428,11 +1452,11 @@ msgstr "Êtes-vous sûr de vouloir supprimer \"%1\" ?" msgid "Are you sure you want to delete this file?" msgstr "Êtes-vous sûr de vouloir supprimer ce fichier ?" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "Êtes-vous sûr de vouloir supprimer ce pack ?" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "Êtes-vous sûr de vouloir quitter NetPlay ?" @@ -1445,11 +1469,11 @@ msgid "Aspect Ratio" msgstr "Format d'écran" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Format d'écran :" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Attribuer les ports des manettes" @@ -1457,7 +1481,7 @@ msgstr "Attribuer les ports des manettes" msgid "Assign Controllers" msgstr "Attribuer des manettes" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1484,7 +1508,7 @@ msgstr "Paramètres d'étirement audio" msgid "Australia" msgstr "Australie" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "Auteur" @@ -1496,15 +1520,15 @@ msgstr "Auteurs" msgid "Auto" msgstr "Auto" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Auto (Multiple de 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "Paramètres de mise à jour automatique" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1524,7 +1548,7 @@ msgstr "Ajuster auto. la taille de la fenêtre" msgid "Auto-Hide" msgstr "Cacher automatiquement" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "Détecter automatiquement les modules RSO ?" @@ -1538,12 +1562,12 @@ msgstr "" "dolphin_emphasis>" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "Auxiliaire" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "o" @@ -1561,11 +1585,11 @@ msgstr "" "GameCube valide doit être utilisée. Générez une nouvelle adresse MAC " "commençant par 00:09:bf ou 00:17:ab." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "BIOS :" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "Registres BP" @@ -1591,7 +1615,7 @@ msgstr "Paramètres de l'interface audio" msgid "Backend:" msgstr "Moteur :" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Entrée en arrière-plan" @@ -1602,7 +1626,13 @@ msgstr "Entrée en arrière-plan" msgid "Backward" msgstr "Arrière" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "Mauvaise valeur entrée" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "Mauvaise adresse fournie." @@ -1610,19 +1640,20 @@ msgstr "Mauvaise adresse fournie." msgid "Bad dump" msgstr "Mauvais dump" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "Mauvais offset fourni." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "Mauvaise valeur fournie." #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Bannière" @@ -1646,7 +1677,7 @@ msgstr "Priorité de base" msgid "Basic" msgstr "Paramètres généraux" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Paramètres de base" @@ -1654,7 +1685,7 @@ msgstr "Paramètres de base" msgid "Bass" msgstr "Basse" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "Vous devez spécifier un jeu à lancer pour utiliser le mode batch." @@ -1662,11 +1693,11 @@ msgstr "Vous devez spécifier un jeu à lancer pour utiliser le mode batch." msgid "Battery" msgstr "Batterie" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "Beta (mensuelle)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "BetterJoy, DS4Windows, etc" @@ -1688,7 +1719,7 @@ msgstr "Bitrate (kbps) :" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "Taille en blocs" @@ -1701,7 +1732,7 @@ msgstr "Taille en blocs :" msgid "Blocking" msgstr "Blocking" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Blocs" @@ -1726,16 +1757,16 @@ msgstr "" "Le mode pour passer outre le Bluetooth est activé, mais Dolphin a été " "compilé sans libusb. Ce mode ne peut donc pas être utilisé." -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "Démarrer sur Pause" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "" "Fichier de sauvegarde BootMii de la NAND (*.bin);;Tous les fichiers (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "Fichier de clés BootMii (*.bin);;Tous les fichiers (*)" @@ -1743,7 +1774,7 @@ msgstr "Fichier de clés BootMii (*.bin);;Tous les fichiers (*)" msgid "Borderless Fullscreen" msgstr "Plein écran sans bords" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Bas" @@ -1757,7 +1788,7 @@ msgid "Branches" msgstr "Branches" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "Arrêt" @@ -1766,7 +1797,7 @@ msgstr "Arrêt" msgid "Breakpoint" msgstr "Point d'arrêt" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "Point d'arrêt rencontré ! Sortie abandonnée." @@ -1796,7 +1827,7 @@ msgstr "Erreur d'adaptateur réseau" msgid "Broadband Adapter MAC Address" msgstr "Adresse MAC de l'adaptateur réseau" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "Parcourir les sessions &NetPlay..." @@ -1804,12 +1835,12 @@ msgstr "Parcourir les sessions &NetPlay..." msgid "Buffer Size:" msgstr "Taille du tampon :" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "Taille de buffer changée à %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Buffer :" @@ -1854,11 +1885,11 @@ msgstr "Boutons" msgid "C Stick" msgstr "Stick C" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "&Créer un Fichier Signature..." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "Registre CP" @@ -1893,7 +1924,7 @@ msgstr "" msgid "Calculate" msgstr "Calculer" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1918,15 +1949,15 @@ msgstr "Étalonnage" msgid "Calibration Period" msgstr "Durée d'étalonnage" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "Appel de la liste d'affichage à %1 avec pour taille %2" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "Pile d'exécution" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "Caméra 1" @@ -1938,7 +1969,7 @@ msgstr "" "Champ de vue de la caméra (agit sur la sensibilité du pointeur de la " "Wiimote)." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" "Peut générer un code AR pour les valeurs dans la mémoire virtuelle " @@ -1948,18 +1979,18 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "Impossible de trouver la Wiimote par la gestion de connexion {0:02x}" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" "Impossible de démarrer une session NetPlay pendant qu'un jeu est en cours " "d'exécution !" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "Annuler" @@ -1979,25 +2010,25 @@ msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" "Impossible de démarrer ce WAD car il ne peut être installé dans la NAND." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" "Il n'est pas possible de comparer avec la dernière valeur lors d'une " "première recherche." -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "Impossible de trouver l'IPL de GC" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "Impossible de générer un code AR pour cette adresse." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "Impossible de rafraîchir lorsqu'il n'y a pas de résultat." -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "Impossible de démarrer le jeu car l'IPL de GC n'a pas pu être trouvé." @@ -2019,7 +2050,7 @@ msgstr "Centrer et étalonner" msgid "Change &Disc" msgstr "&Changer de disque" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "&Changer de disque..." @@ -2027,15 +2058,15 @@ msgstr "&Changer de disque..." msgid "Change Disc" msgstr "Changer de disque" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "Changer automatiquement les disques" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "Changer le disque par {0}" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -2066,7 +2097,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "Partition de Chaîne (%1)" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Chat" @@ -2082,11 +2113,11 @@ msgstr "Rechercher un cheat" msgid "Cheats Manager" msgstr "Gestionnaire de Cheats" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "Vérifier la NAND..." -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "Rechercher en arrière-plan les changements dans la liste des jeux" @@ -2102,7 +2133,7 @@ msgstr "" "Vérifie si vous avez la permission de supprimer le fichier ou s'il est en " "cours d'utilisation." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "Somme de contrôle" @@ -2110,16 +2141,16 @@ msgstr "Somme de contrôle" msgid "China" msgstr "Chine" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Choisir un fichier à ouvrir" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "Choisir le fichier d'entrée prioritaire." -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "Choisir le fichier d'entrée secondaire." @@ -2142,14 +2173,14 @@ msgid "Classic Controller" msgstr "Manette classique" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Effacer" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "Effacer le cache" @@ -2166,28 +2197,47 @@ msgstr "&Cloner et modifier le Code..." msgid "Close" msgstr "Fermer" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "Co&nfiguration" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Code" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "Outil de différenciation de code" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "Aide de l'outil de différenciation de code" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "Le code n'a pas été exécuté" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "Le code a été exécuté" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Code :" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "Codes reçus !" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "Combiner &deux fichiers de signature..." #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "Tous" @@ -2205,7 +2255,7 @@ msgstr "Compilation des Shaders" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "Compression" @@ -2218,7 +2268,7 @@ msgstr "Niveau de compression :" msgid "Compression:" msgstr "Compression :" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "Condition" @@ -2230,13 +2280,13 @@ msgstr "Conditionnel" msgid "Config" msgstr "Configurer" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Configurer" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "Configurer la manette" @@ -2244,21 +2294,21 @@ msgstr "Configurer la manette" msgid "Configure Dolphin" msgstr "Configurer Dolphin" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "Configurer l'entrée" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "Configurer la sortie" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "Confirmer" @@ -2271,26 +2321,26 @@ msgstr "Confirmez le changement de moteur" msgid "Confirm on Stop" msgstr "Confirmer l'arrêt de l'émulation" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "Confirmation" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Connecter" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Connecter la Balance Board" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Connecter le clavier USB" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "Connecter la Wiimote %1" @@ -2310,11 +2360,11 @@ msgstr "Connecter la Wiimote 3" msgid "Connect Wii Remote 4" msgstr "Connecter la Wiimote 4" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "Connecter les Wiimotes" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "Connecter les Wiimotes en tant que manettes émulées" @@ -2326,15 +2376,19 @@ msgstr "Se connecter à Internet et rechercher une mise à jour ?" msgid "Connected" msgstr "Connecté" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "Connexion en cours" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Type de connexion :" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "Le contenu {0:08x} est corrompu." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Recherche en continu" @@ -2347,7 +2401,7 @@ msgstr "Contrôler le mode Golf de NetPlay" msgid "Control Stick" msgstr "Stick de contrôle" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "Config de manette" @@ -2375,7 +2429,7 @@ msgstr "Paramètres des manettes" msgid "Controllers" msgstr "Manettes" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2387,7 +2441,7 @@ msgstr "" "l'impression que les objets sortent de l'écran, une valeur basse est plus " "confortable." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2402,7 +2456,7 @@ msgstr "" "

Dans le doute, sélectionnez Résolution native " -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2437,12 +2491,12 @@ msgstr "" "Contrôle le fait d'utiliser une émulation de haut ou bas niveau du DSP. Par " "défaut réglé sur True" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "Convergence" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Convergence :" @@ -2484,33 +2538,38 @@ msgstr "" "Conversion...\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Copier" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "Copier la &fonction" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "Copier l'&hex" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "Copier l'adresse" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "Échec de la copie" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "Copier l'Hex" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "Copier la &ligne de code" @@ -2518,11 +2577,15 @@ msgstr "Copier la &ligne de code" msgid "Copy failed" msgstr "Échec de la copie" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "Copier l'adresse &cible" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "Copier vers A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "Copier vers B" @@ -2537,16 +2600,16 @@ msgstr "Core" msgid "Cost" msgstr "Coût" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "Impossible de communiquer avec l'hôte" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "Impossible de créer le client." -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "Impossible de créer le pair." @@ -2657,15 +2720,15 @@ msgstr "" "Dans ce cas, vous devez à nouveau spécifier l'emplacement du fichier de " "sauvegarde dans les options." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "Impossible de trouver le serveur central" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "Impossible d'ouvrir le fichier." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "Impossible de lire le fichier." @@ -2698,7 +2761,7 @@ msgstr "" "dolphin_emphasis>" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "Créateur :" @@ -2724,11 +2787,11 @@ msgstr "" msgid "Crossfade" msgstr "Crossfade" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "Région actuelle" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "Valeur actuelle" @@ -2736,7 +2799,7 @@ msgstr "Valeur actuelle" msgid "Current context" msgstr "Contexte acutel" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "Jeu en cours" @@ -2744,7 +2807,7 @@ msgstr "Jeu en cours" msgid "Current thread" msgstr "Thread actuel" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "Espace d'adresse personnalisé" @@ -2777,7 +2840,7 @@ msgstr "La taille du fichier DFF est de 0 ; fichier incomplet ou corrompu ?" msgid "DJ Turntable" msgstr "Tourne-disque DJ" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "DK Bongos" @@ -2805,7 +2868,7 @@ msgstr "Recompilateur du DSP en LLE (lent)" msgid "DSU Client" msgstr "Client DSU" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2818,11 +2881,11 @@ msgstr "" "\"https://wiki.dolphin-emu.org/index.php?title=DSU_Client\">consultez cette " "page
." -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Tapis de danse" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "Données" @@ -2834,28 +2897,27 @@ msgstr "Partition de données (%1)" msgid "Data Transfer" msgstr "Transfert de données" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "Type de données" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "Il y a des données dans une zone du fichier qui devrait être vierge." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "Données dans un format non reconnu ou corrompues." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "Incohérence de données dans GCMemcardManager, abandon de l'action." -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "Données reçues !" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "Fichiers Datel MaxDrive/Pro" @@ -2873,7 +2935,7 @@ msgid "Debug Only" msgstr "Débogage uniquement" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Débogage" @@ -2915,7 +2977,7 @@ msgstr "Réduire X" msgid "Decrease Y" msgstr "Réduire Y" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Par défaut" @@ -2931,7 +2993,7 @@ msgstr "Appareil par défaut" msgid "Default Font" msgstr "Police par défaut" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "ISO par défaut :" @@ -2962,7 +3024,7 @@ msgstr "" "

Dans le doute, décochez cette case." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2977,11 +3039,11 @@ msgid "Delete Selected Files..." msgstr "Supprimer les fichiers sélectionnées..." #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "Supprimer le fichier '{0}' ?" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "Profondeur" @@ -2989,21 +3051,21 @@ msgstr "Profondeur" msgid "Depth Percentage:" msgstr "Pourcentage de la profondeur :" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Profondeur :" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Description" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Description :" @@ -3012,11 +3074,11 @@ msgstr "Description :" msgid "Detached" msgstr "Détaché" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Détecter" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "Détection des modules RSO" @@ -3024,25 +3086,25 @@ msgstr "Détection des modules RSO" msgid "Deterministic dual core:" msgstr "Double cœur déterministe :" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "Dev (plusieurs fois par jour)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Appareil" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "PID de l'appareil (ex : 0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Paramètres de la console émulée" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "VID de l'appareil (ex : 057e)" @@ -3054,11 +3116,15 @@ msgstr "Appareil" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "%1 non reconnu comme un fichier XML valide de Riivolution." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "Diff" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "Assombrit l'écran après 5 minutes d'inactivité." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "Connexion directe" @@ -3096,7 +3162,7 @@ msgstr "Désactiver" msgid "Disable Bounding Box" msgstr "Désactiver Bounding Box" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "Désactiver le filtre de copie" @@ -3108,15 +3174,15 @@ msgstr "Désactiver les copies EFB dans la VRAM" msgid "Disable Emulation Speed Limit" msgstr "Désactiver la limite de vitesse" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "Désactiver Fastmem" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Désactiver le brouillard" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "Désactiver le cache JIT" @@ -3124,7 +3190,7 @@ msgstr "Désactiver le cache JIT" msgid "Disabled" msgstr "Désactivé" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -3145,7 +3211,7 @@ msgstr "" "la RAM. Empêche tout upscaling.

Dans le doute, " "décochez cette case." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -3168,11 +3234,15 @@ msgstr "Disque" msgid "Discard" msgstr "Fermer" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "Afficher les valeurs en hexadécimal" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -3196,25 +3266,25 @@ msgstr "Distance" msgid "Distance of travel from neutral position." msgstr "Distance parcourue depuis la position neutre." -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "Autorisez-vous Dolphin à envoyer des informations à ses développeurs ?" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "Voulez-vous ajouter \"%1\" à la liste des dossiers de jeux ?" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "Voulez-vous effacer la liste des noms de symboles ?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "Voulez-vous supprimer %n fichier(s) de sauvegarde sélectionné(s) ?" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Voulez-vous arrêter l'émulation en cours ?" @@ -3231,9 +3301,9 @@ msgstr "Journal FIFO de Dolphin (*.dff)" msgid "Dolphin Game Mod Preset" msgstr "Préréglage de mod de jeu pour Dolphin" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "Fichier de carte pour Dolphin (*.map)" @@ -3245,8 +3315,8 @@ msgstr "Fichier CSV de signature de Dolphin" msgid "Dolphin Signature File" msgstr "Fichier de signature de Dolphin" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Films TAS Dolphin (*.dtm)" @@ -3289,11 +3359,11 @@ msgstr "Dolphin n'a pas pu exécuter l'action demandée." msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "Dolphin est un émulateur de GameCube et Wii, libre et open-source." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "Dolphin est trop ancien pour le serveur traversal" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." @@ -3301,11 +3371,11 @@ msgstr "" "Dolphin ne peut vérifier les fichiers TGC typiques, car ce ne sont pas des " "dumps de disques." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "Dolphin ne peut vérifier les disques non licenciés." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3322,7 +3392,7 @@ msgstr "Le système de Dolphin pour les cheats est actuellement désactivé." msgid "Domain" msgstr "Domaine" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "Ne pas mettre à jour" @@ -3335,24 +3405,26 @@ msgid "Done compressing disc image." msgstr "Compression de l'image disque terminée." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "Double" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Bas" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "Télécharger des codes" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "Télécharger des codes de WiiRD" @@ -3362,11 +3434,11 @@ msgstr "" "Télécharger les jaquettes des jeux depuis GameTDB.com pour l'affichage en " "mode Grille" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "Téléchargement terminé" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "%1 codes ont été téléchargés. (%2 ajoutés)" @@ -3389,27 +3461,35 @@ msgstr "Kit de percussions" msgid "Dual Core" msgstr "Double cœur (Dual Core)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Factice" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "Dumper l'&ARAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "Dumper l' &ExRAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "Dumper &FakeVMEM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "Dumper la &MRAM" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Enregistrer le son" @@ -3421,7 +3501,7 @@ msgstr "Copier les textures de base" msgid "Dump EFB Target" msgstr "Copier l'EFB cible" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Enregistrer les images" @@ -3433,7 +3513,7 @@ msgstr "Copier les Mip maps" msgid "Dump Objects" msgstr "Copier les objets" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "Dossier de dump :" @@ -3549,16 +3629,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "Durée de relâchement du bouton Turbo (en images) :" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Néerlandais" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "&Quitter" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "Copie %1 d'EFB" @@ -3574,7 +3654,7 @@ msgstr "" "distribution de Dolphin, un redémarrage est probablement nécessaire pour que " "Windows charge le nouveau pilote." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3606,7 +3686,7 @@ msgstr "Effets" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "Effective" @@ -3614,7 +3694,7 @@ msgstr "Effective" msgid "Effective priority" msgstr "Priorité effective" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "Eio" @@ -3626,7 +3706,7 @@ msgstr "Éjecter le disque" msgid "Embedded Frame Buffer (EFB)" msgstr "Buffer d'image embarqué (Embedded Frame Buffer - EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Vide" @@ -3634,11 +3714,11 @@ msgstr "Vide" msgid "Emu Thread already running" msgstr "Thread d'émulation déjà en cours d'exécution" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "Émuler l'adaptateur Bluetooth de la Wii" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "Wiimote émulée" @@ -3657,8 +3737,12 @@ msgstr "" msgid "Emulation Speed" msgstr "Vitesse de l'émulation" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "L'émulation doit être démarrée pour pouvoir enregistrer." + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3674,7 +3758,7 @@ msgstr "Activer les couches de validation d'API" msgid "Enable Audio Stretching" msgstr "Activer l'étirement du son" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Activer les Cheats" @@ -3686,7 +3770,7 @@ msgstr "Activer l'horloge personnalisée" msgid "Enable Dual Core" msgstr "Activer le double cœur" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Activer le double cœur (plus rapide)" @@ -3712,19 +3796,19 @@ msgid "Enable Progressive Scan" msgstr "Activer le balayage progressif" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "Activer le vibreur" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Activer l'économiseur d'écran" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Activer les données du haut-parleur" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "Activer l'envoi des statistiques d'utilisation" @@ -3757,7 +3841,7 @@ msgstr "" "Active le calcul du résultat du drapeau de la virgule flottante, requis pour " "quelques jeux. (Activé = compatible, Désactivé = rapide)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3769,7 +3853,7 @@ msgstr "" "

Peut provoquer des soucis pour un petit nombre de jeux." "

Dans le doute, sélectionnez 1x." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3819,7 +3903,7 @@ msgid "Enables stretching of the audio to match emulation speed." msgstr "" "Active l'étirement du son pour qu'il corresponde à la vitesse de l'émulation." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3867,7 +3951,7 @@ msgstr "" msgid "Encoding" msgstr "Encodage" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3885,12 +3969,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet ne s'est pas initialisé" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Anglais" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3900,7 +3984,7 @@ msgstr "Améliorations" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "Entrez l'adresse IP de l'appareil exécutant le client XLink Kai :" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "Entrez l'identifiant du périphérique USB" @@ -3914,11 +3998,11 @@ msgstr "Entrez l'adresse à surveiller :" msgid "Enter new Broadband Adapter MAC address:" msgstr "Entrez la nouvelle adresse MAC de l'adaptateur réseau :" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "Entrez le mot de passe" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "Entrer l'adresse du module RSO :" @@ -3927,65 +4011,68 @@ msgstr "Entrer l'adresse du module RSO :" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Erreur" @@ -4000,20 +4087,20 @@ msgstr "" "Erreur lors du chargement de la langue sélectionnée. Retour à la langue par " "défaut du système." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "Erreur lors de l'obtention de la liste des sessions : %1" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" "Une erreur est survenue lors de l'ouverture de certains packs de texture" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "Erreur lors du traitement des codes." -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "Erreur lors du traitement des données." @@ -4033,7 +4120,7 @@ msgstr "Erreur lors de la synchronisation des données !" msgid "Error writing file: {0}" msgstr "Erreur d'écriture du fichier : {0}" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -4091,11 +4178,11 @@ msgstr "" "chargées. Les jeux peuvent ne pas afficher les polices correctement, ou " "planter." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "Des erreurs ont été trouvées dans {0} blocs de la partition n°{1}." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" "Des erreurs ont été trouvées dans {0} blocs inutilisés de la partition n°{1}." @@ -4105,11 +4192,57 @@ msgstr "" msgid "Euphoria" msgstr "Euphorie" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Europe" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" +"Exemple :\n" +"Vous voulez trouver une fonction qui s'exécute lorsque HP est modifié.\n" +"1. Démarrez l'enregistrement et jouez au jeu sans que le HP soit modifié, " +"puis cliquez sur 'Le code n'a pas été exécuté'.\n" +"2. Gagnez ou perdez immédiatement des HP et cliquez sur 'Le code a été " +"exécuté'.\n" +"3. Répétez 1. ou 2. pour affiner les résultats.\n" +"Les inclusions (Le code a été exécuté) devraient être des enregistrements " +"courts pour cibler ce que vous cherchez.\n" +"\n" +"Appuyer deux fois sur 'Le code a été exécuté' ne gardera que les fonctions " +"qui ont été exécutées lors des deux enregistrements. Les concordances se " +"mettront à jour pour refléter le nombre de concordances du dernier " +"enregistrement. Le nombre total de concordances reflétera le nombre total de " +"fois qu'une fonction a été exécutée jusqu'à ce que les listes soient " +"effacées par une Réinitialisation.\n" +"\n" +"Clic droit -> 'Définir blr' placera un blr au début du symbole.\n" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "Exclu : %1" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "Exclu : 0" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "Ubershaders exclusifs" @@ -4158,14 +4291,14 @@ msgstr "Nom de variable attendu." msgid "Experimental" msgstr "Expérimental" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Exporter toutes les sauvegardes Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "L'exportation a échoué" @@ -4173,15 +4306,15 @@ msgstr "L'exportation a échoué" msgid "Export Recording" msgstr "Exporter l'enregistrement..." -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Exporter l'enregistrement..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "Exporter le fichier de sauvegarde" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "Exporter les fichiers de sauvegarde" @@ -4193,22 +4326,22 @@ msgstr "Exporter la sauvegarde Wii" msgid "Export Wii Saves" msgstr "Exporter les sauvegardes Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "Exporter comme .&gcs..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "Exporter comme .&sav..." -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "%n sauvegarde(s) exportée(s)" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Extension" @@ -4221,7 +4354,7 @@ msgstr "Entrée MotionPlus" msgid "Extension Motion Simulation" msgstr "Simulation du MotionPlus" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "Externe" @@ -4229,7 +4362,7 @@ msgstr "Externe" msgid "External Frame Buffer (XFB)" msgstr "Buffer externe d'image (External Frame Buffer - XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "Extraire les certificats de la NAND" @@ -4267,7 +4400,7 @@ msgid "FD" msgstr "FD" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "Lecteur FIFO" @@ -4275,7 +4408,7 @@ msgstr "Lecteur FIFO" msgid "Failed loading XML." msgstr "Impossible de lire le XML." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" @@ -4283,11 +4416,11 @@ msgstr "" "Impossible d'ouvrir la carte mémoire :\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "Impossible d'ajouter cette session à l'index NetPlay : %1" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "Impossible d'ajouter cela au fichier de signature '%1'" @@ -4299,7 +4432,7 @@ msgstr "Impossible de demander l'interface pour passer outre le Bluetooth" msgid "Failed to connect to Redump.org" msgstr "Impossible de se connecter à Redump.org" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "Impossible de se connecter au serveur : %1" @@ -4320,14 +4453,14 @@ msgstr "Impossible de créer les ressources globales pour D3D12" msgid "Failed to create DXGI factory" msgstr "Impossible de créer DXGI factory" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" "Impossible de supprimer le fichier de sauvegarde NetPlay GBA{0}. Vérifiez " "que vous avez les droits d'écriture." -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" "Impossible de créer la carte mémoire pour NetPlay. Vérifier vos permissions " @@ -4341,19 +4474,19 @@ msgstr "Impossible de supprimer le fichier sélectionné." msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "Impossible de détacher le driver du Kernel pour l'adaptateur BT : {0}" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Impossible de télécharger les codes." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "Impossible de dumper %1 : impossible d'ouvrir le fichier" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "Impossible de dumper %1 : impossible d'écrire vers le fichier" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "Échec de l'exportation de %n sur %1 fichier(s) de sauvegarde." @@ -4362,7 +4495,7 @@ msgstr "Échec de l'exportation de %n sur %1 fichier(s) de sauvegarde." msgid "Failed to export the following save files:" msgstr "Échec de l'exportation des fichiers de sauvegarde suivants :" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "Impossible d'extraire les certificats depuis la NAND" @@ -4388,18 +4521,18 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "Impossible de trouver un ou plusieurs symboles D3D" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "Impossible d'importer \"%1\"." -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" "Impossible d'importer le fichier de sauvegarde. Veuillez démarrer le jeu une " "fois, puis réessayez." -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." @@ -4407,7 +4540,7 @@ msgstr "" "Impossible d'importer le fichier de sauvegarde. Le fichier indiqué semble " "corrompu ou n'est pas une sauvegarde valide de Wii." -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " @@ -4418,7 +4551,7 @@ msgstr "" "Essayez de réparer votre NAND (Outils -> Gestion de NAND -> Vérifier la " "NAND...), et importez à nouveau la sauvegarde." -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "Impossible d'initialiser la base" @@ -4437,16 +4570,16 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "Impossible d'initialiser les classes du moteur de rendu" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "Impossible d'installer le pack %1" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "Impossible d'installer ce titre dans la NAND." -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" @@ -4454,8 +4587,8 @@ msgstr "" "Impossible d'écouter le port %1. Est-ce qu'une autre instance de serveur " "Netplay est en exécution ?" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "Impossible de charger le module RSO à %1" @@ -4467,11 +4600,11 @@ msgstr "Impossible de charger d3d11.dll" msgid "Failed to load dxgi.dll" msgstr "Impossible de charger dxgi.dll" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "Impossible d'ouvrir le fichier de carte '%1'" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "Impossible de charger l'exécutable en mémoire." @@ -4484,7 +4617,7 @@ msgstr "" "la mise à jour KB4019990." #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "Impossible d'ouvrir \"%1\"" @@ -4514,11 +4647,11 @@ msgstr "" "Impossible d'ouvrir le fichier dans un éditeur externe.\n" "Vérifiez qu'une application est définie pour ouvrir les fichiers INI." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "Impossible d'ouvrir le fichier." -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "Impossible d'accéder au serveur" @@ -4527,7 +4660,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "Impossible d'ouvrir le fichier source \"%1\"." #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4542,7 +4675,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "Impossible de traiter les données de Redump.org" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "Impossible d'analyser la valeur donnée dans le type de données cible." @@ -4550,27 +4683,27 @@ msgstr "Impossible d'analyser la valeur donnée dans le type de données cible." msgid "Failed to read DFF file." msgstr "Impossible de lire le fichier DFF." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "Impossible de lire le fichier." #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "Impossible de lire depuis le fichier source \"{0}\"." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" "Impossible de lire le(s) fichier(s) de sauvegarde sélectionné(s) depuis la " "carte mémoire." -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "Impossible de lire {0}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "Impossible de supprimer le fichier" @@ -4588,19 +4721,19 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "Impossible de supprimer ce titre de la NAND." -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" "Impossible de réinitialiser le dossier GCI pour NetPlay. Vérifiez vos " "permissions d'écriture." -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" "Impossible de réinitialiser le dossier NAND pour NetPlay. Vérifiez vos " "permissions d'écriture." -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" "Impossible de réinitialiser le dossier de redirection de NetPlay. Vérifiez " @@ -4610,23 +4743,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "Echec de l'enregistrement du journal FIFO." -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "Impossible de sauvegarder la carte du code vers le dossier '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "Impossible de sauvegarder le fichier de signature '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "Impossible de sauvegarder la carte des symboles vers le dossier '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "Impossible de sauvegarder vers le fichier de signature '%1'" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "Impossible de désinstaller le pack %1" @@ -4634,11 +4767,11 @@ msgstr "Impossible de désinstaller le pack %1" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Impossible d'écrire BT.DINF vers SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "Impossible d'écrire les données du Mii." -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "Impossible d'écrire la sauvegarde Wii." @@ -4646,22 +4779,22 @@ msgstr "Impossible d'écrire la sauvegarde Wii." msgid "Failed to write config file!" msgstr "Impossible d'écrire le fichier de configuration !" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "Impossible d'écrire la carte mémoire modifiée sur le disque." -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "Impossible d'écrire la sauvegarde redirigée." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "Impossible d'écrire le fichier de sauvegarde sur le disque." #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4672,19 +4805,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "Échec" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "Délai d'entrée des commandes égalisé" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "Région de remplacement" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "Région de remplacement :" @@ -4697,7 +4830,7 @@ msgstr "Rapide" msgid "Fast Depth Calculation" msgstr "Calcul rapide de la profondeur" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4716,7 +4849,7 @@ msgstr "Détails du fichier" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "Format du fichier" @@ -4730,18 +4863,18 @@ msgstr "Infos du fichier" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Nom du fichier" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "Chemin du fichier" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Taille du fichier" @@ -4749,11 +4882,11 @@ msgstr "Taille du fichier" msgid "File Size:" msgstr "Taille du fichier :" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "Le fichier ne contient pas de code." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "Nom de fichier" @@ -4769,13 +4902,13 @@ msgstr "" "Les fichiers spécifiés dans le fichier M3U \"{0}\" n'ont pas été trouvés :\n" "{1}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" "La taille du fichier ne correspond à aucune taille connue de carte mémoire " "de GameCube." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" "La taille indiquée dans l'entête ne correspond pas à celle de la carte." @@ -4784,15 +4917,15 @@ msgstr "" msgid "Filesystem" msgstr "Système de fichiers" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "Filtrer les symboles" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "Filtres" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4805,11 +4938,11 @@ msgstr "" "

Dans le doute, décochez cette case." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "Chercher le &suivant" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "Chercher le &précédent" @@ -4825,18 +4958,22 @@ msgstr "" "Achèvement de la mise à jour...\n" "Cela peut prendre un moment." -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "Vue à la première personne" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Corriger les sommes de contrôle" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "Échec de la correction des sommes de contrôle" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4846,13 +4983,14 @@ msgstr "Drapeaux" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "Flottant" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "Suivre la &branche" @@ -4882,7 +5020,7 @@ msgstr "" msgid "Force 16:9" msgstr "Forcer 16/9è" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "Forcer les couleurs en 24 bit" @@ -4890,15 +5028,15 @@ msgstr "Forcer les couleurs en 24 bit" msgid "Force 4:3" msgstr "Forcer 4/3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "Forcer l'écoute du port :" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Forcer le filtrage de texture" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4915,7 +5053,7 @@ msgstr "" "

Dans le doute, décochez cette case." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4939,21 +5077,21 @@ msgstr "Format :" msgid "Forward" msgstr "Avant" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Faire suivre le port (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "1% résultats trouvés pour \"%2\"" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "%n adresse(s) trouvée(s)." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "Image %1" @@ -4982,7 +5120,7 @@ msgstr "Capture d'image" msgid "Frame Range" msgstr "Plage d'images :" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "La/Les capture(s) d'image '{0}' existe déjà. Remplacer ?" @@ -4994,19 +5132,19 @@ msgstr "Images à enregistrer :" msgid "France" msgstr "France" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "%1 blocs libres" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "%1 fichiers libres" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "Type de contrôle de la vue libre" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "Manette %1 pour la Vue libre" @@ -5014,7 +5152,7 @@ msgstr "Manette %1 pour la Vue libre" msgid "Free Look Settings" msgstr "Réglages de la Vue libre" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -5466,7 +5604,7 @@ msgstr "Vert Gauche" msgid "Green Right" msgstr "Vert Droite" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "Grille" @@ -5479,7 +5617,7 @@ msgstr "Guitare" msgid "Gyroscope" msgstr "Gyroscope" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5492,13 +5630,30 @@ msgstr "Hacks" msgid "Head" msgstr "Head" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "Aide" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" -msgstr "Valeur hexadécimale" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "Hex" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" +msgstr "Hex Byte String" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 @@ -5509,19 +5664,19 @@ msgstr "Hexadécimal" msgid "Hide" msgstr "Cacher" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "Tout masquer" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "Masquer les sessions en cours" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "Masquer les sessions incompatibles" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "Masquer les GBA distantes" @@ -5539,21 +5694,27 @@ msgstr "La meilleure" msgid "Hit Strength" msgstr "Puissance du coup" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "Concordances" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "Champ de vision horizontal" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Hôte" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "Code de l'hôte :" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "Autorité de l'hôte sur les entrées" @@ -5561,7 +5722,7 @@ msgstr "Autorité de l'hôte sur les entrées" msgid "Host Size" msgstr "Taille de l'hôte" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5574,11 +5735,11 @@ msgstr "" "Convient pour des jeux casual de 3 joueurs et plus, peut-être sur des " "connexions instables ou avec une forte latence." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "Autorité de l'hôte sur les entrées désactivée" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "Autorité de l'hôte sur les entrées activée" @@ -5590,7 +5751,7 @@ msgstr "Hôte avec Netplay" msgid "Hostname" msgstr "Nom de l'hôte" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "Paramètres des Raccouris clavier" @@ -5647,11 +5808,11 @@ msgstr "" "Consultez https://dolphin-emu.org/docs/guides/wii-network-guide/ pour " "obtenir des instructions pour les réglages réseau pour la Wii." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "Adresse IP :" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "Paramètres IPL" @@ -5660,7 +5821,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "Sensibilité de l'IR :" @@ -5698,11 +5859,11 @@ msgstr "" "5.0-12188 et suivants. Il peut compresser efficacement les données inutiles " "et les données Wii cryptées." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Icône" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" @@ -5713,11 +5874,11 @@ msgstr "" "Pratique pour les jeux à tour de rôle qui ont des contrôles demandant de la " "précision, comme le golf." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "Génération d'une identité" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5787,7 +5948,7 @@ msgstr "Ignorer les changements de formats" msgid "Ignore for this session" msgstr "Ignorer pour cette session" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5800,7 +5961,7 @@ msgstr "" "

Dans le doute, cochez cette case." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5832,30 +5993,30 @@ msgstr "" "abaissant légèrement les performances.

Dans le " "doute, décochez cette case." -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "Importer une sauvegarde BootMii de la NAND..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "L'importation a échoué" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "Importer le(s) fichier(s) de sauvegarde" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Importer une sauvegarde Wii..." -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "Importation de la sauvegarde de la NAND..." -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" @@ -5864,11 +6025,20 @@ msgstr "" "Importation de la sauvegarde de la NAND...\n" "Temps écoulé : %1s" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "En cours ?" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "Inclus : %1" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "Inclus : 0" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5927,8 +6097,8 @@ msgstr "Information" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Information" @@ -5937,10 +6107,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "Désactiver l'écran de veille pendant l'émulation" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Entrée" @@ -5954,16 +6124,22 @@ msgstr "Force d'appui requise pour l'activation." msgid "Input strength to ignore and remap." msgstr "Force de l'entrée à ignorer et remapper." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "Insérer &nop" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Insérer une carte SD" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "Inspecté" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "Installer" @@ -5975,7 +6151,7 @@ msgstr "Partition d'installation (%1)" msgid "Install Update" msgstr "Installer la mise à jour" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "Installer un WAD..." @@ -5991,11 +6167,11 @@ msgstr "Instr." msgid "Instruction" msgstr "Instruction" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "Point d'arrêt instruction" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "Instruction :" @@ -6013,7 +6189,7 @@ msgid "Interface" msgstr "Interface" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Erreur interne LZO - échec de la compression" @@ -6022,7 +6198,7 @@ msgstr "Erreur interne LZO - échec de la compression" msgid "Internal LZO Error - decompression failed" msgstr "Erreur LZO interne - échec de la décompression" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" @@ -6030,21 +6206,21 @@ msgstr "" "Erreur interne LZO - échec de la décompression ({0}) ({1}, {2}) \n" "Essayez de charger à nouveau l'état" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Erreur interne LZO - échec de lzo_init()" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "Résolution interne" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Résolution interne :" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "Erreur interne lors de la génération du code AR." @@ -6052,11 +6228,11 @@ msgstr "Erreur interne lors de la génération du code AR." msgid "Interpreter (slowest)" msgstr "Interpréteur (TRÈS lent)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "Interpreter Core" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "Expression non valide." @@ -6064,7 +6240,7 @@ msgstr "Expression non valide." msgid "Invalid Mixed Code" msgstr "Code mixte non valide" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "Pack %1 non valide indiqué : %2" @@ -6073,15 +6249,15 @@ msgstr "Pack %1 non valide indiqué : %2" msgid "Invalid Player ID" msgstr "ID joueur non valide" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "Adresse du module RSO non valide : %1" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "Pile d'exécution non valide" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "Sommes de contrôle non valides." @@ -6089,11 +6265,11 @@ msgstr "Sommes de contrôle non valides." msgid "Invalid game." msgstr "Jeu non valide." -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "Hôte non valide" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "Entrée non valide pour le champ \"%1\"" @@ -6106,33 +6282,33 @@ msgstr "Entrée indiquée non valide" msgid "Invalid literal." msgstr "Expression non valide." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "Paramètres de recherche non valides." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "Mot de passe incorrect." -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Fichier d'enregitrement non valide" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Paramètres de recherche non valide (aucun objet sélectionné)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Texte de recherche non valide (impossible à convertir en nombre)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "" "Texte de recherche non valide (seules les longueurs de chaînes de caractères " "sont prises en charge)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "ID du titre non valide." @@ -6141,8 +6317,8 @@ msgid "Invalid watch address: %1" msgstr "Adresse à surveiller non valide : %1" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Italien" @@ -6150,11 +6326,11 @@ msgstr "Italien" msgid "Italy" msgstr "Italie" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "JIT Block Linking Off" @@ -6162,47 +6338,47 @@ msgstr "JIT Block Linking Off" msgid "JIT Blocks" msgstr "Blocs JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "JIT Branch Off" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "JIT FloatingPoint Off" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "JIT Integer Off" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "JIT LoadStore Floating Off" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "JIT LoadStore Off" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "JIT LoadStore Paired Off" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "JIT LoadStore lXz Off" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "JIT LoadStore lbzx Off" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "JIT LoadStore lwz Off" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "JIT Off (JIT Core)" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "JIT Paired Off" @@ -6214,11 +6390,11 @@ msgstr "Recompilateur JIT pour ARM64 (recommandé)" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "Recompilateur JIT pour x86-64 (recommandé)" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "Cache de registre JIT désactivé" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "JIT SystemRegisters Off" @@ -6232,12 +6408,12 @@ msgstr "" "ne devrait jamais arriver. Veuillez transmettre cet incident au suivi de " "bugs. Dolphin va maintenant quitter." -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Japon" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japonais" @@ -6257,12 +6433,12 @@ msgstr "Toujours au premier plan" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "Garder les adresses dont la valeur en mémoire" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Clavier" @@ -6275,20 +6451,20 @@ msgstr "Clavier" msgid "Keys" msgstr "Touches" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "Kio" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Sortir le joueur" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Corée" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Coréen" @@ -6316,7 +6492,7 @@ msgstr "Sauvegarde LR" msgid "Label" msgstr "Étiquette" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "Dernière valeur" @@ -6402,15 +6578,15 @@ msgstr "" msgid "License" msgstr "Licence" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "Limite de vitesse d'envoi de parcelles de données :" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "Colonnes de la liste" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "Liste" @@ -6419,17 +6595,17 @@ msgid "Listening" msgstr "Écoute" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Charger" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "Charger un fichier de carte de &défauts..." -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "Charger un &Autre fichier de carte..." @@ -6437,7 +6613,7 @@ msgstr "Charger un &Autre fichier de carte..." msgid "Load Custom Textures" msgstr "Charger textures personnalisées" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "Charger le Menu Principal de la GameCube" @@ -6446,7 +6622,7 @@ msgstr "Charger le Menu Principal de la GameCube" msgid "Load Last State" msgstr "Charger le dernier état" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "Charger le dossier :" @@ -6539,23 +6715,23 @@ msgstr "Charger l'état du Slot 8" msgid "Load State Slot 9" msgstr "Charger l'état du Slot 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "Charger un état depuis un fichier" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "Charge l'état depuis l'emplacement sélectionné" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "Charger un état depuis un slot" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "Charger une sauvegarde Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "Charger le Menu Système Wii %1" @@ -6563,12 +6739,12 @@ msgstr "Charger le Menu Système Wii %1" msgid "Load from Selected Slot" msgstr "Charger depuis l'emplacement sélectionné" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "Chargement depuis le Slot %1 - %2" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "Charger un fichier de carte" @@ -6576,7 +6752,7 @@ msgstr "Charger un fichier de carte" msgid "Load..." msgstr "Charger..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "Symboles chargés à partir de '%1'" @@ -6591,7 +6767,7 @@ msgstr "" "

Dans le doute, décochez cette case." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "Local" @@ -6600,7 +6776,7 @@ msgid "Lock Mouse Cursor" msgstr "Verrouiller le curseur de la souris" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Journal" @@ -6608,7 +6784,7 @@ msgstr "Journal" msgid "Log Configuration" msgstr "Configuration de la journalisation" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "Log JIT Instruction Coverage" @@ -6639,7 +6815,7 @@ msgstr "" msgid "Loop" msgstr "Boucle" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "Connexion au serveur NetPlay perdue !" @@ -6668,7 +6844,7 @@ msgstr "MMU" msgid "MORIBUND" msgstr "MORIBUND" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "Fichiers MadCatz Gameshark" @@ -6678,7 +6854,7 @@ msgstr "Stick principal" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Concepteur" @@ -6687,7 +6863,7 @@ msgstr "Concepteur" msgid "Maker:" msgstr "Concepteur :" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6700,7 +6876,7 @@ msgstr "" "

\n" "Dans le doute, décochez cette case." -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "Gestion de NAND" @@ -6708,7 +6884,7 @@ msgstr "Gestion de NAND" msgid "Manual Texture Sampling" msgstr "Échantillonnage manuel de la texture" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "Mappage" @@ -6716,15 +6892,15 @@ msgstr "Mappage" msgid "Mask ROM" msgstr "ROM masque" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "Correspondance trouvée" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "Tampon maxi :" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "Taille maximum du tampon changée à %1" @@ -6733,7 +6909,7 @@ msgstr "Taille maximum du tampon changée à %1" msgid "Maximum tilt angle." msgstr "Angle maximum d'inclinaison." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "Ceci peut ralentir le Menu Wii et quelques jeux." @@ -6742,11 +6918,11 @@ msgstr "Ceci peut ralentir le Menu Wii et quelques jeux." msgid "Medium" msgstr "Moyen" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "Mémoire" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "Point d'arrêt mémoire" @@ -6754,7 +6930,7 @@ msgstr "Point d'arrêt mémoire" msgid "Memory Card" msgstr "Carte mémoire" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "Gestionnaire de cartes mémoires" @@ -6778,7 +6954,7 @@ msgstr "" msgid "Memory Override" msgstr "Modification de la mémoire" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "Options pour le point d'arrêt en mémoire" @@ -6798,7 +6974,7 @@ msgstr "" "MemoryCard : l'écriture a été appelée avec une mauvaise adresse de " "destination ({0:#x})" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6810,13 +6986,13 @@ msgstr "" "irréversible, il est donc recommandé de conserver des sauvegardes de chacune " "des NAND. Êtes-vous sûr de vouloir continuer ?" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "Mio" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Micro" @@ -6824,21 +7000,21 @@ msgstr "Micro" msgid "Misc" msgstr "Divers" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Paramètres divers" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" "Il y a une différence entre le nombre de blocs libres indiqué en entête et " "ceux réellement inutilisés." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "Non concordance entre les structures de données internes." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6872,12 +7048,12 @@ msgstr "" "effet.

Dans le doute, décochez cette case." -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "Modules trouvés : %1" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "Mono" @@ -6889,11 +7065,11 @@ msgstr "Ombres monoscopiques" msgid "Monospaced Font" msgstr "Police mono-espacée." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "Entrée des mouvements" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "Simulation des mouvements" @@ -6936,10 +7112,10 @@ msgstr "Film" msgid "N&o to All" msgstr "Non à &tout" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "Vérification de la NAND" @@ -6947,26 +7123,26 @@ msgstr "Vérification de la NAND" msgid "NKit Warning" msgstr "Avertissement pour NKit" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "NTSC-K" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "Nom" @@ -6978,37 +7154,37 @@ msgstr "Nom du nouveau tag :" msgid "Name of the tag to remove:" msgstr "Nom du tag à retirer :" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "Le nom de votre session qui est affichée dans le navigateur de serveur" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Nom :" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Résolution native (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "Fichier GCI natif" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "NetPlay" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "Navigateur de sessions NetPlay" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "Configuration de NetPlay" @@ -7016,16 +7192,16 @@ msgstr "Configuration de NetPlay" msgid "Netherlands" msgstr "Pays-bas" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "Netplay s'est désynchronisé dans NetPlay_GetButtonPress()" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "NetPlay est désynchronisé. Il n'y a aucun moyen d'y remédier." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "Réseau" @@ -7046,11 +7222,11 @@ msgstr "Ne jamais mettre à jour" msgid "New" msgstr "Nouveau" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "Nouveau point d'arrêt" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "Nouvelle recherche" @@ -7058,7 +7234,7 @@ msgstr "Nouvelle recherche" msgid "New Tag..." msgstr "Nouveau tag..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "Nouvelle identité générée." @@ -7075,7 +7251,7 @@ msgstr "Nouveau tag" msgid "Next Game Profile" msgstr "Profil de jeu suivant" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "Rechercher le suivant" @@ -7084,17 +7260,17 @@ msgstr "Rechercher le suivant" msgid "Next Profile" msgstr "Profil suivant" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "Le pseudo est trop long." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Pseudo :" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "Non" @@ -7102,6 +7278,10 @@ msgstr "Non" msgid "No Adapter Detected" msgstr "Aucun adaptateur détecté" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "Pas de sortie audio" @@ -7112,24 +7292,20 @@ msgstr "Pas de sortie audio" msgid "No Compression" msgstr "Aucune compression" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "Aucune correspondance trouvée" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "Aucune valeur donnée" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Aucune description disponible" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "Pas d'erreur." @@ -7141,15 +7317,15 @@ msgstr "Aucune extension sélectionnée" msgid "No file loaded / recorded." msgstr "Aucun fichier chargé / enregistré" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "Aucun jeu en fonctionnement." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "Aucun jeu en fonctionnement." -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "Aucun souci n'a été détecté" @@ -7157,11 +7333,15 @@ msgstr "Aucun souci n'a été détecté" msgid "No paths found in the M3U file \"{0}\"" msgstr "Aucun chemin trouvé dans le fichier M3U \"{0}\"" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "Aucune fonction restante possible. Réinitialiser." + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "Aucun problème n'a été trouvé." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -7176,7 +7356,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "Aucun profil trouvé pour les réglages du jeu '{0}'" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "Aucun enregistrement chargé." @@ -7184,19 +7364,15 @@ msgstr "Aucun enregistrement chargé." msgid "No save data found." msgstr "Aucune donnée de sauvegarde trouvée" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" "Pas de fichier undo.dtm trouvé, abandon de l'annulation de chargement d'état " "pour empêcher une désynchronisation du film" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "Aucune valeur fournie." - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -7206,7 +7382,7 @@ msgstr "Aucune" msgid "North America" msgstr "Amérique du Nord" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "Introuvable" @@ -7214,12 +7390,12 @@ msgstr "Introuvable" msgid "Not Set" msgstr "Non défini" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "" "Tous les joueurs ne possèdent pas ce jeu. Voulez-vous quand même démarrer ?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -7229,7 +7405,7 @@ msgstr "" "Pas assez de blocs libres sur la carte mémoire cible. Au moins %n bloc(s) " "libre(s) requis." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -7293,13 +7469,13 @@ msgstr "Orientation du Nunchuck" msgid "Nunchuk Stick" msgstr "Stick du Nunchuk" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "OK" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "Objet %1" @@ -7312,11 +7488,11 @@ msgid "Oceania" msgstr "Océanie" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Arrêt" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "Offset" @@ -7328,11 +7504,11 @@ msgstr "Marche" msgid "On Movement" msgstr "Si mouvement" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "&Documentation en ligne" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" @@ -7340,7 +7516,7 @@ msgstr "" "Uniquement ajouter les symboles avec le préfixe :\n" "(Vide pour tous les symboles) " -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -7357,7 +7533,7 @@ msgstr "Ouvrir" msgid "Open &Containing Folder" msgstr "Ouvrir l'emplacement du fichier" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "Ouvrir le dossier..." @@ -7405,7 +7581,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "Opérateurs" @@ -7423,7 +7599,7 @@ msgstr "Options" msgid "Orange" msgstr "Orange" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "Orbite" @@ -7431,7 +7607,7 @@ msgstr "Orbite" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Autres" @@ -7444,11 +7620,11 @@ msgstr "Autre partition (%1)" msgid "Other State Hotkeys" msgstr "Autres raccourcis clavier" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "Autres manipulations des états" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "Autres jeux..." @@ -7456,12 +7632,12 @@ msgstr "Autres jeux..." msgid "Overlay Information" msgstr "Information sur la surcouche" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "&Jouer l'enregistrement..." -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -7486,7 +7662,7 @@ msgstr "Fichier d'image PNG (*.png);; Tous le fichiers (*)" msgid "PPC Size" msgstr "Taille PPC" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "PPC vs Hôte" @@ -7503,7 +7679,7 @@ msgstr "Manettes" msgid "Parameters" msgstr "Paramètres" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "Traiter comme hexadécimal" @@ -7512,23 +7688,23 @@ msgstr "Traiter comme hexadécimal" msgid "Parsing Error" msgstr "Traitement de l'erreur" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "Passive" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "Utiliser un adaptateur Bluetooth tiers" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "Mot de passe" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "Mot de passe pour se joindre à votre jeu (laisser vide pour aucun)" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "Mot de passe ?" @@ -7549,7 +7725,7 @@ msgid "Path:" msgstr "Chemin :" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Dossiers" @@ -7557,7 +7733,7 @@ msgstr "Dossiers" msgid "Pause" msgstr "Pause" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "Pause à la fin du Film" @@ -7580,11 +7756,11 @@ msgstr "Vitesse maximale des mouvements vers la position neutre." msgid "Peak velocity of outward swing movements." msgstr "Vitesse maximale des mouvements de va-et-vient." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Eclairage par pixel" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "Effectuer une mise à jour en ligne" @@ -7594,23 +7770,23 @@ msgstr "Exécuter une mise à jour du Système" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "Physique" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "Espace d'adresse physique" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "Pio" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "Choisissez une police pour le débogage" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "Ping" @@ -7623,7 +7799,7 @@ msgid "Pitch Up" msgstr "Monter" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Plateforme" @@ -7643,16 +7819,16 @@ msgstr "Jouer l'enregistrement..." msgid "Playback Options" msgstr "Options de lecture" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "Joueur" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Joueurs" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7665,31 +7841,31 @@ msgstr "" msgid "Point" msgstr "Pointer" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "Port %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "ROM sur Port %1 :" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "Port :" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" "Possible désynchronisation détectée : %1 peut s'être désynchronisé à l'image " "%2" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "Effet de Post-processing" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Effet de Post-processing :" @@ -7701,15 +7877,15 @@ msgstr "Configuration du post-traitement des Shaders" msgid "Prefetch Custom Textures" msgstr "Précharger textures personnalisées" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "Fin de film prématurée dans PlayController. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "Fin de film prématurée dans PlayWiimote. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "Fin de film prématurée dans PlayWiimote. {0} > {1}" @@ -7753,7 +7929,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "Profil de jeu précédent" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "Rechercher le précédent" @@ -7764,15 +7940,15 @@ msgstr "Profil précédent" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "Primitive %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "Privée" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "Privée et publique" @@ -7780,7 +7956,7 @@ msgstr "Privée et publique" msgid "Problem" msgstr "Problème" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." @@ -7788,7 +7964,7 @@ msgstr "" "Des problèmes d'une haute importance ont été trouvés. Le jeu ne fonctionnera " "probablement pas." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." @@ -7796,7 +7972,7 @@ msgstr "" "Des problèmes de faible importance ont été trouvés. Ils n'empêcheront " "probablement pas le jeu de fonctionner." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." @@ -7804,7 +7980,7 @@ msgstr "" "Des problèmes d'une importance moyenne ont été trouvés. Tout ou partie du " "jeu peuvent ne pas fonctionner correctement." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Profil" @@ -7818,15 +7994,15 @@ msgstr "Program Counter" msgid "Progress" msgstr "Progression" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "Publique" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "Purger le cache de la liste de jeu" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "Placez les ROM d'IPL dans User/GC/." @@ -7838,11 +8014,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "LTR" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "La Qualité de Service (QoS) n'a pas pu être activée." -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "La Qualité de Service (QoS) a été activée avec succès." @@ -7854,12 +8030,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Question" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Quitter" @@ -7879,11 +8055,11 @@ msgstr "R Analog." msgid "READY" msgstr "PRÊT" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "Modules RSO" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "Détection automatique du RSO" @@ -7896,44 +8072,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "Images GC/Wii en RVZ (*.rvz)" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Etendue" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "Fin de zone :" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "Début de zone :" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "Rem&placer l'instruction" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "Lire" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "Lu et écrit" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "Uniquement lu" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "Lu ou écrit" @@ -7941,11 +8117,11 @@ msgstr "Lu ou écrit" msgid "Read-Only Mode" msgstr "Mode Lecture seule" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Balance Board physique" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "Wiimote physique" @@ -7958,11 +8134,11 @@ msgstr "Recentrer" msgid "Record" msgstr "Enregistrer" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "Enregistrer les entrées" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "Enregistrement" @@ -7987,7 +8163,7 @@ msgstr "Rouge Gauche" msgid "Red Right" msgstr "Rouge Droite" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -8010,16 +8186,16 @@ msgstr "État de Redump.org :" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Rafraîchir" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "Rafraîchir les valeurs actuelles" @@ -8027,28 +8203,28 @@ msgstr "Rafraîchir les valeurs actuelles" msgid "Refresh Game List" msgstr "Rafraîchir la liste des jeux" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" "Impossible de rafraîchir. Exécutez le jeu pendant un moment et essayez à " "nouveau." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "Valeurs actuelles actualisées." #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "Actualisation..." #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Région" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "Région :" @@ -8068,16 +8244,16 @@ msgstr "Maintien de l'entrée relative" msgid "Remind Me Later" msgstr "Me rappeler plus tard" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Retirer" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "La suppression a échoué" @@ -8103,8 +8279,8 @@ msgstr "" "l'espace lors de la conversion en ISO (sauf si vous compressez ensuite le " "fichier ISO en ZIP par exemple). Voulez-vous tout de même continuer ?" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "Renommer le symbole" @@ -8139,29 +8315,37 @@ msgstr "Quelqu'un demande à rejoindre votre partie" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Reset" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "Tout réinitialiser" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "Réinitialiser Ignorer le gestionnaire de panique" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "Réinitialiser les résultats" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "Réinitialiser le serveur Traversal" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "Réinitialiser le serveur Traversal à %1:%2" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "Réinitialiser les paramètres traversal" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "Réinitialiser les valeurs" @@ -8169,15 +8353,15 @@ msgstr "Réinitialiser les valeurs" msgid "Reset View" msgstr "Réinitialiser la vue" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "Réinitialiser tous les jumelages sauvegardés des Wiimotes" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "Gestionnaire de Packs de Ressources" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "Dossier du Pack de Ressources :" @@ -8189,11 +8373,11 @@ msgstr "Redémarrage requis" msgid "Restore Defaults" msgstr "Restaurer les valeurs par défaut" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "Restaurer l'instruction" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Réessayer" @@ -8202,7 +8386,7 @@ msgstr "Réessayer" msgid "Return Speed" msgstr "Vitesse du retour" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "Révision" @@ -8260,11 +8444,11 @@ msgstr "Enrouler vers la gauche" msgid "Roll Right" msgstr "Enrouler vers la droite" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "ID Room" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "Rotation" @@ -8273,18 +8457,19 @@ msgstr "Rotation" msgid "Rotation applied at extremities of swing." msgstr "Rotation appliquée aux extrémités du balancement" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." -msgstr "" -"Arrondir les sommets 2D en pixels pleins.

Corrige certains jeux avec " -"l'utilisation de résolutions internes plus élevées. Ce réglage n'a aucun " -"effet si vous utilisez la résolution interne native." -"

Dans le doute, décochez cette case.
Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." +msgstr "" +"Arrondir les sommets 2D en pixels pleins et arrondit la taille de viewport à " +"un nombre entier.

Corrige certains jeux avec l'utilisation de " +"résolutions internes plus élevées. Ce réglage n'a aucun effet si vous " +"utilisez la résolution interne native.

Dans le " +"doute, décochez cette case." #: Source/Core/Core/HW/GCPadEmu.cpp:79 #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:254 @@ -8293,11 +8478,11 @@ msgstr "" msgid "Rumble" msgstr "Vibreur" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "Exécu&ter jusqu'ici" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "Exécuter les cœurs de GBA sur des threads dédiés" @@ -8305,15 +8490,15 @@ msgstr "Exécuter les cœurs de GBA sur des threads dédiés" msgid "Russia" msgstr "Russie" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "Carte SD" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "Image de carte SD (*.raw);;Tous les fichiers (*)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "Carte SD :" @@ -8329,7 +8514,7 @@ msgstr "SELECT" msgid "SHA-1:" msgstr "SHA-1 :" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "SP1 :" @@ -8343,11 +8528,11 @@ msgstr "Contexte SSL" msgid "START" msgstr "START" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "Sau&vegarder le code" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "Sau&vegarder l'état" @@ -8357,7 +8542,7 @@ msgid "Safe" msgstr "Sûr " #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -8370,7 +8555,7 @@ msgstr "Tout enregistrer" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "Exportation de la sauvegarde" @@ -8391,11 +8576,11 @@ msgstr "Sauvegarde du jeu" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "Fichiers de sauvegarde de jeu (*.sav);;Tous les fichiers (*)" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "Importation de la sauvegarde" @@ -8407,7 +8592,7 @@ msgstr "Sauvegarder l'ancien état" msgid "Save Preset" msgstr "Enregistrer le préréglage" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "Sauvegarder le fichier d'enregistrement sous" @@ -8457,23 +8642,23 @@ msgstr "Sauvegarder l'état vers le Slot 8" msgid "Save State Slot 9" msgstr "Sauvegarder l'état vers le Slot 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "Sauvegarder l'état dans un fichier" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "Sauvegarder l'état dans le slot le plus ancien" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "Sauvegarder l'état dans l'emplacement sélectionné" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "Sauvegarder l'état dans le slot" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "Sauvegarder la carte des symboles &sous..." @@ -8481,7 +8666,7 @@ msgstr "Sauvegarder la carte des symboles &sous..." msgid "Save Texture Cache to State" msgstr "Enreg. le cache de texture dans la sauveg. de l'état" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "Sauvegarder et Charger un état" @@ -8493,11 +8678,11 @@ msgstr "Enregistrer sous le préréglage..." msgid "Save as..." msgstr "Enregistrer sous..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "Sauvegarder le fichier de sortie combinée sous" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" @@ -8507,15 +8692,15 @@ msgstr "" "sauvegarde avant de les écraser.\n" "Écraser maintenant ?" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "Placer la sauvegarde dans le même dossier que la ROM" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "Sauvegarder le fichier de carte" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "Sauvegarder le fichier de signature" @@ -8523,7 +8708,7 @@ msgstr "Sauvegarder le fichier de signature" msgid "Save to Selected Slot" msgstr "Sauvegarder vers l'emplacement sélectionné" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "Sauvegarder dans le slot %1 - %2" @@ -8531,27 +8716,27 @@ msgstr "Sauvegarder dans le slot %1 - %2" msgid "Save..." msgstr "Sauvegarder..." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" "La réinitialisation des sauvegardes du jumelage des Wiimotes ne peut être " "fait que lorsqu'un jeu est en cours d'émulation." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "Sauvegardes :" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" "Le film de sauvegarde d'état {0} est corrompu, arrêt de l'enregistrement du " "film..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Copie à l'échelle de l'EFB" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "Recherche terminée." @@ -8559,30 +8744,30 @@ msgstr "Recherche terminée." msgid "ScrShot" msgstr "Capt écran" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Rechercher" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "Rechercher l'adresse" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "Chercher l'objet actuel" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Chercher dans les sous-dossiers" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "Rechercher et Filtrer" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." @@ -8590,7 +8775,7 @@ msgstr "" "La recherche n'est pour l'instant pas possible dans l'espace d'adresse " "virtuelle. Exécutez le jeu pendant un moment et essayez à nouveau." -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "Rechercher une instruction" @@ -8598,7 +8783,7 @@ msgstr "Rechercher une instruction" msgid "Search games..." msgstr "Rechercher des jeux..." -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "Rechercher une instruction" @@ -8623,28 +8808,28 @@ msgstr "" msgid "Security options" msgstr "Options de sécurité" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Sélectionner" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "Sélectionner le dossier pour le dump :" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "Sélectionner le dossier d'exportation" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "Sélectionner le BIOS de la GBA" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "Sélectionner la ROM GBA" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "Sélectionner le dossier des sauvegardes GBA" @@ -8652,11 +8837,11 @@ msgstr "Sélectionner le dossier des sauvegardes GBA" msgid "Select Last State" msgstr "Sélectionner le dernier état" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "Sélectionner le dossier à charger" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "Sélectionner le dossier des Packs de Ressources" @@ -8664,7 +8849,7 @@ msgstr "Sélectionner le dossier des Packs de Ressources" msgid "Select Riivolution XML file" msgstr "Sélectionner le fichier XML Riivolution" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "Sélectionner le slot %1 - %2" @@ -8672,7 +8857,7 @@ msgstr "Sélectionner le slot %1 - %2" msgid "Select State" msgstr "Sélectionner l'état" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Sélectionner l'emplacement de l'état" @@ -8716,41 +8901,45 @@ msgstr "Emplacement 8" msgid "Select State Slot 9" msgstr "Emplacement 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "Sélectionner le chemin de WFS" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "Sélectionner le dossier racine de la NAND Wii" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "Sélectionner un dossier" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "Sélectionner un fichier" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "Sélectionner un Jeu" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "Sélectionner une image de carte SD" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "Sélectionner un jeu" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "Sélectionner un titre à installer dans la NAND" @@ -8758,11 +8947,11 @@ msgstr "Sélectionner un titre à installer dans la NAND" msgid "Select e-Reader Cards" msgstr "Sélectionner les cartes e-Reader" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "Sélectionner l'adresse du module RSO :" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "Sélectionnez le fichier d'enregistrement à lire" @@ -8770,12 +8959,12 @@ msgstr "Sélectionnez le fichier d'enregistrement à lire" msgid "Select the Virtual SD Card Root" msgstr "Sélectionner le dossier racine de la carte SD virtuelle" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "Sélectionner le fichier des clés (dump OTP/SEEPROM)" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Sélectionner le fichier à enregistrer" @@ -8791,15 +8980,15 @@ msgstr "Sélectionner le dossier où seront enregistrées les images converties" msgid "Selected Font" msgstr "Police sélectionnée" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "Le profil de contrôleur sélectionné n'existe pas" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "Le jeu sélectionné ne figure pas dans la liste des jeux !" @@ -8827,7 +9016,7 @@ msgstr "" "Sélectionne la carte graphique à utiliser.

Dans le " "doute, sélectionnez la première." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8895,11 +9084,11 @@ msgstr "" "convient le mieux.

Dans le doute, sélectionnez " "OpenGL." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Envoyer" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Position de la Sensor Bar :" @@ -8915,56 +9104,64 @@ msgstr "" "téléchargement.\n" "Exemple : {2}" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "Adresse IP du serveur" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "Port du serveur" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "Le serveur a rejeté la tentative traversal" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "Définir &Valeur" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "Définir &blr" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "Définir PC" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "Définir comme l'ISO par &défaut" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "Sélectionner un fichier de carte mémoire pour le Slot A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "Sélectionner un fichier de carte mémoire pour le Slot B" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "Définir l'adresse de &fin du symbole" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "Définir la taille du &symbole" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "Définir l'adresse de fin du symbole" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "Entrer la taille du symbole (%1) :" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8974,7 +9171,7 @@ msgstr "" "pour les jeux.\n" "Peut ne pas fonctionner pour tous les jeux." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Définit la langue du système de la Wii." @@ -8986,7 +9183,7 @@ msgstr "" "Définit la latence en millisecondes. Des valeurs élevées peuvent réduire le " "craquement du son. Pour certains moteurs uniquement." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -9027,11 +9224,11 @@ msgstr "" "Peut avoir des effets négatifs sur la performance. Réglé par défaut sur " "False" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Afficher le &journal" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Afficher la barre d'&outils" @@ -9039,15 +9236,15 @@ msgstr "Afficher la barre d'&outils" msgid "Show Active Title in Window Title" msgstr "Affiche le titre en cours dans le nom de la fenêtre" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "Tout afficher" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Afficher Australie" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "Afficher le jeu en cours sur Discord" @@ -9055,7 +9252,7 @@ msgstr "Afficher le jeu en cours sur Discord" msgid "Show Debugging UI" msgstr "Afficher l'interface de débogage" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "Afficher les ELF/DOL" @@ -9063,43 +9260,43 @@ msgstr "Afficher les ELF/DOL" msgid "Show FPS" msgstr "Afficher le nombre de FPS" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Afficher le compteur d'images" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Afficher France" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "Afficher GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Afficher Allemagne" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "Afficher le Mode golf en surimpression" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Afficher les entrées du contrôleur" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Afficher Italie" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "Afficher JPN" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Afficher Corée" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Afficher le compteur de lags" @@ -9107,7 +9304,7 @@ msgstr "Afficher le compteur de lags" msgid "Show Language:" msgstr "Afficher en :" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Afficher la config. de journalisation" @@ -9119,7 +9316,7 @@ msgstr "Afficher les messages NetPlay" msgid "Show NetPlay Ping" msgstr "Afficher le ping du NetPlay" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Afficher Pays-bas" @@ -9127,7 +9324,7 @@ msgstr "Afficher Pays-bas" msgid "Show On-Screen Display Messages" msgstr "Afficher les messages informatifs" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Afficher PAL" @@ -9136,23 +9333,23 @@ msgstr "Afficher PAL" msgid "Show PC" msgstr "Afficher PC" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Afficher les plateformes" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Afficher les régions" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "Afficher le compteur de réenregistrements" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Afficher Russie" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "Afficher Espagne" @@ -9161,46 +9358,50 @@ msgstr "Afficher Espagne" msgid "Show Statistics" msgstr "Afficher les statistiques" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "Afficher l'heure du système" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Afficher Taïwan" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Afficher USA" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Afficher les inconnus" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "Afficher les WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Afficher Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Afficher Monde" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "Afficher dans la &mémoire" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "Afficher dans le &code" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "Afficher dans le navigateur de serveurs" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "Afficher la &mémoire cible" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -9246,7 +9447,7 @@ msgstr "" "Affiche diverses statistiques de rendu.

Dans le " "doute, décochez cette case." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Côte-à-côte" @@ -9262,16 +9463,31 @@ msgstr "Utiliser à l'horizontale" msgid "Sideways Wii Remote" msgstr "Wiimote à l'horizontale" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "Base de données de Signatures" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "Signé 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "Signé 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "Signé 8" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "Entier signé" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Chinois simplifié" @@ -9279,7 +9495,7 @@ msgstr "Chinois simplifié" msgid "Simulate DK Bongos" msgstr "Simuler les Bongos DK" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "Six axes" @@ -9308,7 +9524,7 @@ msgstr "Saute le dessin" msgid "Skip EFB Access from CPU" msgstr "Ignorer l'accès à l'EFB depuis le CPU" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "Passer le Menu Principal" @@ -9316,7 +9532,7 @@ msgstr "Passer le Menu Principal" msgid "Skip Presenting Duplicate Frames" msgstr "Ne pas afficher d'images en doublon" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -9337,19 +9553,19 @@ msgstr "" msgid "Slider Bar" msgstr "Slider Bar" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Slot A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "Slot A :" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Slot B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "Slot B :" @@ -9368,7 +9584,7 @@ msgstr "Table des sockets" msgid "Software Renderer" msgstr "Rendu logiciel" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "Des données n'ont pu être lues." @@ -9389,11 +9605,11 @@ msgstr "" "Veuillez vérifier les valeurs en surbrillance." #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "Trier par ordre alphabétique" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "Son :" @@ -9406,8 +9622,8 @@ msgid "Spain" msgstr "Espagne" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Espagnol" @@ -9415,7 +9631,7 @@ msgstr "Espagnol" msgid "Speaker Pan" msgstr "Volume du haut-parleur" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Volume du haut-parleur :" @@ -9461,7 +9677,7 @@ msgstr "Vitesse" msgid "Speed up Disc Transfer Rate" msgstr "Accélerer le taux de transfert du disque" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "Stable (annuelle)" @@ -9473,16 +9689,16 @@ msgstr "Fin de pile" msgid "Stack start" msgstr "Début de pile" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Contrôleur standard" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Start" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "Démarrer &NetPlay..." @@ -9490,11 +9706,13 @@ msgstr "Démarrer &NetPlay..." msgid "Start New Cheat Search" msgstr "Démarrer une nouvelle recherche de cheat" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "&Démarrer l'enregistrement de l'entrée" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Commencer l'enregistrement" @@ -9510,7 +9728,7 @@ msgstr "Démarrer avec les patchs Riivolution" msgid "Start with Riivolution Patches..." msgstr "Démarrer avec les patchs Riivolution..." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "Jeu démarré" @@ -9521,7 +9739,7 @@ msgstr "Jeu démarré" msgid "State" msgstr "État" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Volant" @@ -9549,19 +9767,19 @@ msgstr "Step Out" msgid "Step Over" msgstr "Step Over" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "Sortie avec succès !" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "Temps écoulé pour la sortie !" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "Saut en cours..." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "Pas à pas réussi !" @@ -9570,20 +9788,20 @@ msgstr "Pas à pas réussi !" msgid "Stepping" msgstr "Pas à pas" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "Stéréo" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "Mode de stéréoscopie 3D" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Mode de stéréoscopie 3D :" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Stéréoscopie" @@ -9604,11 +9822,15 @@ msgstr "Stick" msgid "Stop" msgstr "Arrêter" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "Arrêter de jouer/enregistrer l'entrée" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "Arrêter l'enregistrement" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "Jeu arrêté" @@ -9622,7 +9844,7 @@ msgstr "Enregistrer les copies EFB vers texture uniquemt" msgid "Store XFB Copies to Texture Only" msgstr "Enregistrer les copies de l'XFB vers la texture uniquement" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -9636,7 +9858,7 @@ msgstr "" "RAM (et Texture)

Dans le doute, cochez cette case." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -9654,7 +9876,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Étirer à la fenêtre" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "Synchronisation stricte des paramètres" @@ -9677,16 +9899,16 @@ msgstr "Style" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "Succès !" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "Ajouté avec succès à l'index de NetPlay" @@ -9696,11 +9918,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "%n image(s) convertie(s) avec succès." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "Suppression réussie de \"%1\"." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "Exportation avec succès de %n sur %1 fichier(s) de sauvegarde." @@ -9709,7 +9931,7 @@ msgstr "Exportation avec succès de %n sur %1 fichier(s) de sauvegarde." msgid "Successfully exported save files" msgstr "Fichiers de sauvegarde exportés avec succès." -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "Certificats extraits avec succès depuis la NAND" @@ -9721,12 +9943,12 @@ msgstr "Fichier extrait avec succès." msgid "Successfully extracted system data." msgstr "Extraction avec succès des données du système." -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "Fichier de sauvegarde importé avec succès." #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "Ce titre a été installé avec succès dans la NAND." @@ -9738,17 +9960,17 @@ msgstr "Ce titre a été supprimé avec succès de la NAND." msgid "Support" msgstr "Aide" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "Formats de fichiers pris en charge" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" "Prend en charge les cartes SD et SDHC. La taille par défaut est de 128 Mo." #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "Surround" @@ -9756,11 +9978,11 @@ msgstr "Surround" msgid "Suspended" msgstr "Suspendu" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Inverser les yeux" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9775,50 +9997,67 @@ msgstr "" msgid "Swing" msgstr "Balancement" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "Basculer vers A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "Basculer vers B" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "Symbole" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "Adresse de fin du symbole (%1) :" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" +"Carte des symboles introuvable.\n" +"\n" +"S'il n'en existe pas, vous pouvez en générer une depuis la barre de Menu :\n" +"Symboles -> Générer les Symboles depuis ->\n" +"\tAdresse | Base de donnée de Signatures | Modules RSO" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "Nom du symbole :" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "Symboles" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "Synchroniser" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "Synchronise les codes AR/Gecko" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "Synchroniser toutes les sauvegardes Wii" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "Synchronisation des sauvegardes" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "Synchroniser les Wiimotes physiques et les jumeler" @@ -9834,37 +10073,37 @@ msgstr "" "Synchronise les tâches entre le GPU et le CPU pour éviter des blocages " "aléatoires en mode Dual Core. (Coché = Compatible, Décoché = Rapide)" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "Synchronisation des codes AR..." -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "Synchronisation des codes Gecko..." -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "Synchronisation des données de sauvegarde..." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Langue du système :" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "Entrée TAS" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "Outils TAS" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "Tags" @@ -9882,11 +10121,11 @@ msgstr "Tail" msgid "Taiwan" msgstr "Taïwan" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Capture d'écran" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Test" @@ -9895,7 +10134,7 @@ msgstr "Test" msgid "Texture Cache" msgstr "Cache de texture" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "Précision du cache de texture" @@ -9919,7 +10158,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "Le table de hash H3 pour la partition {0} n'est pas correcte." -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "Le fichier IPL n'est pas connu comme un dump correct. (CRC32 : {0:x})" @@ -9933,7 +10172,7 @@ msgstr "Le fichier IPL n'est pas connu comme un dump correct. (CRC32 : {0:x})" msgid "The Masterpiece partitions are missing." msgstr "La partition des Chefs-d'œuvre est manquante." -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." @@ -9941,7 +10180,7 @@ msgstr "" "Impossible de réparer la NAND. Il est recommandé de sauvegarder vos données " "actuelles et de recommencer avec une nouvelle NAND." -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "La NAND a été réparée." @@ -9987,7 +10226,7 @@ msgstr "" "Les clés de déchiffrage doivent être ajoutées au fichier de sauvegarde de la " "NAND." -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -10004,7 +10243,7 @@ msgstr "Le disque ne peut être lu (à {0:#x} - {1:#x})." msgid "The disc that was about to be inserted couldn't be found." msgstr "Le disque qui allait être inséré n'a pas été trouvé." -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -10028,19 +10267,19 @@ msgstr "La console Wii émulée est déjà à jour." msgid "The entered MAC address is invalid." msgstr "L'adresse MAC entrée n'est pas valide." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "Le PID entré n'est pas valide." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "Le VID entré n'est pas valide." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "L'expression contient une erreur de syntaxe." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -10099,7 +10338,7 @@ msgstr "L'ID du jeu est {0} au lieu de {1}" msgid "The game disc does not contain any usable update information." msgstr "Le disque ne contient aucune information de mise à jour utilisable." -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "Le jeu est déjà en cours d'émulation." @@ -10113,7 +10352,7 @@ msgstr "" "soucis avec le Menu Système, il n'est pas possible de mettre à jour la " "console émulée avec ce disque." -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -10135,7 +10374,7 @@ msgstr "Les hashs ne correspondent pas !" msgid "The hashes match!" msgstr "Les hashs correspondent !" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -10165,12 +10404,12 @@ msgstr "" "Les patchs dans %1 ne sont pas conçus pour le jeu sélectionné ou cette " "révision du jeu." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "Le profil \"%1\" n'existe pas." -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" "Le jeu enregistré ({0}) n'est pas le même que le jeu sélectionné ({1})" @@ -10190,22 +10429,22 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "Le code AR décrypté ne contient aucune ligne." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" "Un même fichier ne peut être utilisé sur plusieurs emplacements, il est déjà " "utilisé sur le slot %1." -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "Les versions serveur et client de NetPlay ne sont pas compatibles." -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "Le serveur est plein." -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "Le serveur a envoyé un message d'erreur inconnu" @@ -10231,7 +10470,7 @@ msgstr "L'index de la clé commune spécifiée est {0} au lieu de {1}." msgid "The specified file \"{0}\" does not exist" msgstr "Le fichier spécifié \"{0}\" n'existe pas" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "La carte mémoire cible contient déjà un fichier nommé \"%1\"." @@ -10285,7 +10524,7 @@ msgstr "La partition n°{0} n'est pas correctement alignée." msgid "There are too many partitions in the first partition table." msgstr "Il y a trop de partitions dans la première table de partitions." -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "Il n'y a rien à annuler !" @@ -10328,7 +10567,7 @@ msgstr "" "utilisé sur les consoles coréennes. Cela va vraisemblablement mener au " "message ERROR #002." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "Ce périphérique USB est déjà sur liste blanche." @@ -10348,7 +10587,7 @@ msgstr "" "Ce simulateur d'Action Replay ne prend pas en charge les codes qui modifient " "l'Action Replay lui-même." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "Ceci est irréversible !" @@ -10402,7 +10641,11 @@ msgstr "" "probablement du fait que ce disque soit un double-couche et qu'il a été " "dumpé comme un simple couche." -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "Ce fichier ne contient pas de système de fichiers Wii valide." + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "Ce fichier ne ressemble pas à une sauvegarde BootMii de la NAND." @@ -10428,11 +10671,11 @@ msgstr "" "en charge. Par conséquent, vous pourrez rencontrer des bugs ou blocages " "pendant l'émulation de ce jeu." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "Ceci est un dump incorrect." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." @@ -10440,7 +10683,7 @@ msgstr "" "C'est un mauvais dump. Cela ne veut pas forcément dire que le jeu ne va pas " "fonctionner." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." @@ -10448,11 +10691,11 @@ msgstr "" "C'est un bon dump, d'après le site Redump.org ; mais Dolphin a repéré des " "problèmes. Ceci peut être un bug dans Dolphin." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "Ceci est un dump correct." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "Cette session requiert un mot de passe :" @@ -10526,7 +10769,7 @@ msgstr "" "Cette valeur est multipliée par la profondeur définie dans la configuration " "des graphiques." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." @@ -10534,7 +10777,7 @@ msgstr "" "Ceci va limiter la vitesse d'envoi de parcelles de données par client, qui " "est utilisée pour synchroniser la sauvegarde." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -10559,7 +10802,7 @@ msgstr "Flux" msgid "Threshold" msgstr "Seuil" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "Tio" @@ -10578,22 +10821,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Titre" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "À" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "jusqu'à :" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "Activer le &plein écran" @@ -10618,7 +10861,7 @@ msgid "Toggle Aspect Ratio" msgstr "Activer le ratio hauteur/largeur" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "Activer Point d'arrêt" @@ -10678,14 +10921,20 @@ msgstr "Échec du jetonnage." msgid "Toolbar" msgstr "Barre d'outils" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Haut" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Dessus-dessous" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "Nombre de concordances" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -10720,20 +10969,20 @@ msgid "Touch" msgstr "Toucher" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Chinois traditionnel" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "Erreur de Traversal" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "Traversal Server" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "Le serveur traveral n'a pas répondu lors de la connexion à l'hôte" @@ -10765,22 +11014,14 @@ msgstr "Déclencheurs" msgid "Type" msgstr "Type" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 msgid "Typical GameCube/Wii Address Space" msgstr "Adresse de mémoire GameCube/Wii typique" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" -msgstr "U&16" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "U&32" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" -msgstr "U&8" - #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 msgid "UNKNOWN" msgstr "INCONNU" @@ -10795,9 +11036,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "Erreur dans la liste blanche des USB" @@ -10841,10 +11082,14 @@ msgstr "" "impact minimal sur les performances, mais cela dépend du comportement du " "driver de la carte graphique." -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "Impossible de détecter automatiquement le module RSO" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10869,7 +11114,11 @@ msgstr "" "\n" "Voulez-vous ignorer cette ligne et continuer le traitement ?" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "Impossible d'écrire vers le fichier {0}" @@ -10881,15 +11130,15 @@ msgstr "Unbound" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "Images GC/Wii non compressées (*.iso *.gcm)" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "&Annuler le lancement d'état" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Annuler la sauvegarde de l'état" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "Désinstaller" @@ -10905,18 +11154,18 @@ msgstr "" "Désinstaller le WAD va supprimer la version actuellement installée de ce " "titre dans la NAND sans supprimer ses données de sauvegarde. Continuer ?" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "États-Unis" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Inconnu" @@ -10924,7 +11173,7 @@ msgstr "Inconnu" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "Commande DVD inconnue {0:08x} - erreur fatale" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "Message SYNC_CODES inconnu reçu avec l'id : {0}" @@ -10936,7 +11185,7 @@ msgstr "" "Message SYNC_GECKO_CODES inconnu avec comme ID : {0}, reçu du joueur {1} . " "Exclusion du joueur !" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "Message SYNC_SAVE_DATA inconnu reçu avec l'ID : {0}" @@ -10948,15 +11197,15 @@ msgstr "" "Message SYNC_SAVE_DATA inconnu avec l'ID : {0} reçu du joueur : {1}. Sortie " "du joueur !" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "Espace d'adresse inconnu" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "Auteur inconnu" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "Type de données inconnu" @@ -10964,19 +11213,19 @@ msgstr "Type de données inconnu" msgid "Unknown disc" msgstr "Disque inconnu" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "Une erreur inconnue est survenue." -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "Erreur inconnue {0:x}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "Erreur inconnue." -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "Reception d'un message inconnu avec l'ID : {0}" @@ -10985,7 +11234,7 @@ msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" "Message inconnu avec l'ID {0} reçu du joueur {1}. Exclusion du joueur !" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Illimitée" @@ -11001,13 +11250,28 @@ msgstr "Débloquer le curseur" msgid "Unpacking" msgstr "Décompression" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "Non signé 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "Non signé 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "Non signé 8" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "Entier non signé" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -11016,7 +11280,7 @@ msgstr "Haut" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Mettre à jour" @@ -11073,7 +11337,7 @@ msgstr "Utiliser à la verticale" msgid "Upright Wii Remote" msgstr "Wiimote debout" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "Paramètres de l'envoi des données statistiques" @@ -11089,7 +11353,7 @@ msgstr "Utiliser un style personnalisé par l'utilisateur" msgid "Use Lossless Codec (FFV1)" msgstr "Utiliser un codec sans perte (FFV1)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "Utiliser le mode PAL60 (EuRGB60)" @@ -11128,19 +11392,65 @@ msgstr "" "Utiliser un buffer de simple profondeur pour les deux yeux. Requis pour " "quelques jeux." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" "Utiliser la configuration de mappeur de mémoire au moment de la recherche." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "Utiliser les adresses physiques" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "Utiliser les adresses virtuelles lorsque c'est possible" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" +"Utilisé pour trouver les fonctions en se basant sur le moment où elles " +"devraient être exécutées.\n" +"Semblable au Cheat Engine Ultimap.\n" +"Une carte des symboles doit être chargée avant utilisation.\n" +"Les listes d'inclusion/exclusion persisteront après un arrêt ou redémarrage " +"de l'émulation.\n" +"Ces listes ne persisteront pas lorsque Dolphin sera quitté.\n" +"\n" +"'Démarrer l'enregistrement' : garde la trace de ce que les fonctions " +"exécutent.\n" +"'Arrêter l'enregistrement' : efface l'enregistrement en cours sans effectuer " +"de changement dans les listes.\n" +"'Le code n'a pas été exécuté' : cliquez pendant l'enregistrement, cela " +"ajoutera les fonctions enregistrées à la liste d'exclusion, puis " +"réinitialisera la liste d'enregistrement.\n" +"'Le code a été exécuté' : cliquez pendant l'enregistrement, ajoutera la " +"fonction enregistrée à la liste d'inclusion, puis réinitialisera la liste " +"d'enregistrement.\n" +"\n" +"Une fois que vous aurez utilisé une fois l'inclusion et l'exclusion, la " +"liste d'exclusion sera soustraite à celle de l'inclusion et les inclusions " +"restantes seront affichées.\n" +"Vous pouvez continuer à utiliser 'Le code n'a pas été exécuté'/'Le code a " +"été exécuté' pour affiner les résultats." + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "Configuration personnalisée" @@ -11153,11 +11463,11 @@ msgstr "Interface utilisateur" msgid "User Style:" msgstr "Style utilisateur :" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "Variables utilisateur" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" @@ -11168,7 +11478,7 @@ msgstr "" "Vous pouvez les utiliser pour enregistrer ou récupérer des valeurs\n" "entre les entrées et les sorties de la manette parente." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -11206,23 +11516,23 @@ msgstr "" msgid "Using Qt %1" msgstr "Utilisation de Qt %1" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "Utilisé habituellement pour les objets lumineux" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "Utilisé habituellement pour les matrices normales" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "Utilisé habituellement pour la matrices de position" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "Utilisé habituellement pour les matrices de coordonnées de textures" @@ -11235,7 +11545,7 @@ msgstr "Utilitaires" msgid "V-Sync" msgstr "Synchro verticale" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Valeur" @@ -11268,8 +11578,8 @@ msgstr "Vérifier les certificats" msgid "Verifying" msgstr "Vérification..." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "Version" @@ -11305,7 +11615,7 @@ msgstr "Voir &mémoire" msgid "Virtual Notches" msgstr "Coins virtuels" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "Espace d'adresse virtuelle" @@ -11332,7 +11642,7 @@ msgstr "Augmenter" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "Fichiers WAD (*.wad)" @@ -11398,7 +11708,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "WASAPI (Mode exclusif)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "Dossier WFS :" @@ -11406,8 +11716,8 @@ msgstr "Dossier WFS :" msgid "WIA GC/Wii images (*.wia)" msgstr "Images GC/Wii en WIA (*.wia)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "En attente de la première recherche..." @@ -11440,7 +11750,7 @@ msgstr "" "100%.

Dans le doute, décochez cette case." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -11459,10 +11769,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Avertissement" @@ -11483,7 +11793,7 @@ msgstr "" "Attention, le nombre de blocs indiqués par le BAT ({0}) ne correspond pas à " "l'entête de fichier chargée ({1})" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " @@ -11494,7 +11804,7 @@ msgstr "" "autre sauvegarde avant de continuer, ou charger cette sauvegarde en " "désactivant le mode Lecture seule." -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " @@ -11504,7 +11814,7 @@ msgstr "" "actuelle dans la sauvegarde (octet {0} < {1}) (image {2} < {3}). Vous " "devriez charger une autre sauvegarde avant de continuer." -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" @@ -11515,7 +11825,7 @@ msgstr "" "ou charger cet état en désactivant le mode Lecture seule. Dans le cas " "contraire, il y aura probablement une désynchronisation." -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -11558,7 +11868,7 @@ msgstr "" msgid "Watch" msgstr "Surveiller" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "Site web" @@ -11597,11 +11907,11 @@ msgstr "" "

Dans le doute, cochez cette case." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "Périphériques USB autorisés pour une connexion directe à la Wii émulée" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Hack écran large (16/9è)" @@ -11617,11 +11927,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Menu Wii" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Racine de la NAND (Wii) :" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Wiimote" @@ -11629,8 +11939,8 @@ msgstr "Wiimote" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "Wiimote %1" @@ -11643,11 +11953,11 @@ msgstr "Boutons de la Wiimote" msgid "Wii Remote Orientation" msgstr "Orientation de la Wiimote" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Paramètres de la Wiimote" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Wiimotes" @@ -11663,7 +11973,7 @@ msgstr "Entrée TAS %1 pour Wii - Wiimote" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "Entrée TAS %1 pour Wii - Wiimote + Nunchuk" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "Wii et Wiimote" @@ -11671,7 +11981,7 @@ msgstr "Wii et Wiimote" msgid "Wii data is not public yet" msgstr "Données Wii pas encore publiques" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "Fichiers de sauvegarde de Wii (*.bin);;Tous les fichiers (*)" @@ -11701,18 +12011,18 @@ msgid "World" msgstr "Monde" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "Écrire" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "Écrire données de sauvegarde" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "Uniquement écrit" @@ -11725,12 +12035,12 @@ msgid "Write to File" msgstr "Écrire dans le fichier" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "Écrire dans le journal" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "Ecrire dans le journal, puis pause" @@ -11738,7 +12048,7 @@ msgstr "Ecrire dans le journal, puis pause" msgid "Write to Window" msgstr "Écrire dans la fenêtre" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "Mauvaise version" @@ -11749,7 +12059,7 @@ msgstr "Mauvaise version" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "Registre XF" @@ -11778,8 +12088,8 @@ msgid "Yellow" msgstr "Jaune" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "Oui" @@ -11836,7 +12146,7 @@ msgstr "" "Veuillez ne pas nous envoyer de rapport d'erreur sauf si elles se produisent " "également sur 10.14 et plus." -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "Vous utilisez la dernière version disponible pour cette branche." @@ -11852,8 +12162,7 @@ msgid "" "Would you like to stop now to fix the problem?\n" "If you select \"No\", audio might be garbled." msgstr "" -"Vous utilisez une ancienne ROM de DSP gratuite créée par l'équipe de " -"Dolphin.\n" +"Vous utilisez une ancienne ROM de DSP libre créée par l'équipe de Dolphin.\n" "L'amélioration de la précision de l'émulation fait que cette ROM ne " "fonctionne plus correctement.\n" "\n" @@ -11882,11 +12191,11 @@ msgstr "" msgid "You have to enter a name." msgstr "Vous devez entrer un nom." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "Vous devez entrer un nom pour votre session !" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "Vous devez entrer une région pour votre session !" @@ -11894,7 +12203,7 @@ msgstr "Vous devez entrer une région pour votre session !" msgid "You must restart Dolphin in order for the change to take effect." msgstr "Vous devez redémarrer Dolphin pour que ce changement prenne effet." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "Vous devez sélectionner un jeu à héberger !" @@ -11933,23 +12242,23 @@ msgstr "Code Zero 3 non pris en charge" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "Code Zero inconnu pour Dolphin : {0:08x}" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "[%1, %2]" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "[%1, %2] et [%3, %4]" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "^ Xor" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "aligné" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "toute valeur" @@ -11968,13 +12277,13 @@ msgstr "cm" msgid "d3d12.dll could not be loaded." msgstr "Impossible de charger d3d12.dll" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "par défaut" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "déconnecté" @@ -11990,31 +12299,31 @@ msgstr "errno" msgid "fake-completion" msgstr "Faux achèvement" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "est égale à" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "est supérieure à" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "est supérieure ou égale à" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "est inférieure à" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "est inférieure ou égale à" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "n'est pas égale à" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "la dernière valeur" @@ -12046,7 +12355,7 @@ msgstr "Désactivé" msgid "on" msgstr "à" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "ou sélectionnez un de ces périphériques" @@ -12055,7 +12364,7 @@ msgstr "ou sélectionnez un de ces périphériques" msgid "s" msgstr "s" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "cette valeur :" @@ -12064,7 +12373,7 @@ msgstr "cette valeur :" msgid "uDraw GameTablet" msgstr "Tablette de jeu uDraw" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "non aligné" @@ -12083,7 +12392,7 @@ msgstr "{0} (Chefs-d'œuvre)" msgid "{0} (NKit)" msgstr "{0} (NKit)" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "IPL {0} trouvé dans le dossier {1}. Le disque peut ne pas être reconnu" @@ -12104,7 +12413,7 @@ msgstr "" "Vérifiez vos droits d'écriture ou déplacez le fichier hors de Dolphin" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "{0} blocs sur {1}. Ratio de compression : {2}%" @@ -12112,7 +12421,7 @@ msgstr "{0} blocs sur {1}. Ratio de compression : {2}%" msgid "{0} was not a directory, moved to *.original" msgstr "{0} n'était pas un dossier, déplacé vers *.original" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "| Or" diff --git a/Languages/po/hr.po b/Languages/po/hr.po index 3893b33c319b..084907b6ff31 100644 --- a/Languages/po/hr.po +++ b/Languages/po/hr.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Alberto Poljak , 2013-2014\n" "Language-Team: Croatian (http://www.transifex.com/delroth/dolphin-emu/" "language/hr/)\n" "Language: hr\n" @@ -20,7 +20,7 @@ msgstr "" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -28,7 +28,7 @@ msgid "" "problems that Dolphin is unable to detect." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -36,7 +36,7 @@ msgid "" "that it hasn't been tampered with." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -52,7 +52,7 @@ msgstr "" msgid " (Disc %1)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "" @@ -60,7 +60,7 @@ msgstr "" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -74,7 +74,7 @@ msgstr "" msgid "%" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -88,17 +88,17 @@ msgstr "" msgid "%1 %" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "" @@ -117,7 +117,7 @@ msgid "%1 (Revision %3)" msgstr "" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -154,7 +154,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "" @@ -165,23 +165,23 @@ msgid "" "Current Frame: %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -190,11 +190,11 @@ msgstr "" msgid "%1 ms" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "" @@ -206,15 +206,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -230,30 +230,30 @@ msgstr "" msgid "%1[%2]: %3/%4 MiB" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "" @@ -273,7 +273,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "" @@ -282,11 +282,11 @@ msgid "&Add Memory Breakpoint" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "" @@ -294,19 +294,19 @@ msgstr "" msgid "&Add..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "" @@ -314,11 +314,11 @@ msgstr "" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Pauze" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "" @@ -326,15 +326,15 @@ msgstr "" msgid "&Cancel" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "" @@ -342,7 +342,7 @@ msgstr "" msgid "&Clone..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "" @@ -350,19 +350,20 @@ msgstr "" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "" @@ -374,7 +375,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "" @@ -382,11 +383,11 @@ msgstr "" msgid "&Edit..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulacija" @@ -398,43 +399,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Datoteka" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "&Upravljač sličica po sekundi" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "&Postavke Grafike" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Pomoć" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "&Postavke prečica na tipkovnici" @@ -446,11 +451,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "" @@ -458,7 +463,7 @@ msgstr "" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -466,23 +471,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&Učitaj stanje igre" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Memorija" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "" @@ -490,7 +495,7 @@ msgstr "" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "" @@ -498,24 +503,24 @@ msgstr "" msgid "&No" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Otvori..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Opcije" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Pauza" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Pokreni igru" @@ -523,11 +528,11 @@ msgstr "&Pokreni igru" msgid "&Properties" msgstr "&Svojstva" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Registri" @@ -536,24 +541,24 @@ msgid "&Remove" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Resetiraj" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "" @@ -561,11 +566,11 @@ msgstr "" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Zaustavi igru" @@ -573,11 +578,11 @@ msgstr "&Zaustavi igru" msgid "&Theme:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Alati" @@ -585,17 +590,17 @@ msgstr "&Alati" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Pogled" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "" @@ -607,11 +612,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" @@ -623,7 +628,7 @@ msgstr "" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(isključeno)" @@ -631,34 +636,34 @@ msgstr "(isključeno)" msgid "(ppc)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" @@ -666,6 +671,10 @@ msgstr "" msgid "128 Mbit (2043 blocks)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "" @@ -674,35 +683,35 @@ msgstr "" msgid "16-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "" @@ -714,25 +723,25 @@ msgstr "" msgid "32-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "" @@ -746,28 +755,32 @@ msgstr "" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "" @@ -775,29 +788,33 @@ msgstr "" msgid "64 Mbit (1019 blocks)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "" @@ -806,25 +823,25 @@ msgstr "" msgid "8-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "" @@ -843,12 +860,12 @@ msgid "" "Notes:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "" @@ -866,17 +883,17 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" @@ -885,7 +902,7 @@ msgstr "" msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -909,8 +926,8 @@ msgstr "" msgid "AR Codes" msgstr "AR Kodovi" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "" @@ -933,7 +950,7 @@ msgstr "" msgid "Accuracy:" msgstr "Kvaliteta:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "" @@ -1029,9 +1046,9 @@ msgstr "" msgid "Adapter:" msgstr "Adapter:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Dodaj" @@ -1039,11 +1056,11 @@ msgstr "Dodaj" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "" @@ -1075,46 +1092,49 @@ msgstr "" msgid "Add to &watch" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Dodaj..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1158,39 +1178,43 @@ msgstr "Napredno" msgid "Africa" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "" @@ -1199,25 +1223,25 @@ msgstr "" msgid "All players' saves synchronized." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1243,7 +1267,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "" @@ -1261,39 +1285,39 @@ msgstr "Kut" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Anizotropno Filtriranje" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Anti-Aliasing:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1307,15 +1331,15 @@ msgstr "" msgid "Apply" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "" @@ -1323,11 +1347,11 @@ msgstr "" msgid "Are you sure you want to delete this file?" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "" @@ -1340,11 +1364,11 @@ msgid "Aspect Ratio" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Omjer Slike:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "" @@ -1352,7 +1376,7 @@ msgstr "" msgid "Assign Controllers" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1377,7 +1401,7 @@ msgstr "" msgid "Australia" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "" @@ -1389,15 +1413,15 @@ msgstr "" msgid "Auto" msgstr "Automatski" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Automatski (Višestruko od 640*528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1413,7 +1437,7 @@ msgstr "" msgid "Auto-Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1424,12 +1448,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "" @@ -1444,11 +1468,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "BP registar" @@ -1474,7 +1498,7 @@ msgstr "Upravljač zvuka- Postavke" msgid "Backend:" msgstr "Upravljač:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Prati unos podataka i u pozadini" @@ -1485,7 +1509,13 @@ msgstr "Prati unos podataka i u pozadini" msgid "Backward" msgstr "Natrag" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1493,19 +1523,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Transparent" @@ -1529,7 +1560,7 @@ msgstr "" msgid "Basic" msgstr "Osnovno" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Osnovne postavke" @@ -1537,7 +1568,7 @@ msgstr "Osnovne postavke" msgid "Bass" msgstr "Bas" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1545,11 +1576,11 @@ msgstr "" msgid "Battery" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1571,7 +1602,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "" @@ -1584,7 +1615,7 @@ msgstr "" msgid "Blocking" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Blokovi" @@ -1607,15 +1638,15 @@ msgid "" "Passthrough mode cannot be used." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "" @@ -1623,7 +1654,7 @@ msgstr "" msgid "Borderless Fullscreen" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Dno" @@ -1637,7 +1668,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "" @@ -1646,7 +1677,7 @@ msgstr "" msgid "Breakpoint" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" @@ -1676,7 +1707,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1684,12 +1715,12 @@ msgstr "" msgid "Buffer Size:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Međuspremnik:" @@ -1731,11 +1762,11 @@ msgstr "Tipke" msgid "C Stick" msgstr "C Gljiva" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "" @@ -1766,7 +1797,7 @@ msgstr "" msgid "Calculate" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1786,15 +1817,15 @@ msgstr "" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1804,7 +1835,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1812,16 +1843,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "" @@ -1838,23 +1869,23 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "" @@ -1876,7 +1907,7 @@ msgstr "" msgid "Change &Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Promjeni &Disk..." @@ -1884,15 +1915,15 @@ msgstr "Promjeni &Disk..." msgid "Change Disc" msgstr "Promjeni disk" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1912,7 +1943,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Čavrljanje" @@ -1928,11 +1959,11 @@ msgstr "Tražilica" msgid "Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "" @@ -1946,7 +1977,7 @@ msgid "" "whether it's still in use." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "" @@ -1954,16 +1985,16 @@ msgstr "" msgid "China" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Odaberite datoteku za otvaranje" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -1986,14 +2017,14 @@ msgid "Classic Controller" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Očisti" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "" @@ -2010,28 +2041,47 @@ msgstr "" msgid "Close" msgstr "Zatvori" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2049,7 +2099,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "" @@ -2062,7 +2112,7 @@ msgstr "" msgid "Compression:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "" @@ -2074,13 +2124,13 @@ msgstr "" msgid "Config" msgstr "Konfiguracja" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Podesi" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2088,21 +2138,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "" @@ -2115,26 +2165,26 @@ msgstr "" msgid "Confirm on Stop" msgstr "Potvrdite zaustavljanje igre" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Spoji" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Priključite USB tipkovnicu" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "" @@ -2154,11 +2204,11 @@ msgstr "" msgid "Connect Wii Remote 4" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" @@ -2170,15 +2220,19 @@ msgstr "" msgid "Connected" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Neprekidno Skeniranje" @@ -2191,7 +2245,7 @@ msgstr "" msgid "Control Stick" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "" @@ -2219,7 +2273,7 @@ msgstr "" msgid "Controllers" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2227,7 +2281,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2236,7 +2290,7 @@ msgid "" "Native.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2261,12 +2315,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "" @@ -2303,33 +2357,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "" @@ -2337,11 +2396,15 @@ msgstr "" msgid "Copy failed" msgstr "Kopiranje nije uspjelo" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "" @@ -2356,16 +2419,16 @@ msgstr "Jezgra" msgid "Cost" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "" @@ -2444,15 +2507,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2479,7 +2542,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "" @@ -2502,11 +2565,11 @@ msgstr "" msgid "Crossfade" msgstr "Prijelaz" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2514,7 +2577,7 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "" @@ -2522,7 +2585,7 @@ msgstr "" msgid "Current thread" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2553,7 +2616,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "" @@ -2581,7 +2644,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2589,11 +2652,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "" @@ -2605,28 +2668,27 @@ msgstr "" msgid "Data Transfer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2644,7 +2706,7 @@ msgid "Debug Only" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Traženje/ispravljanje pogrešaka" @@ -2686,7 +2748,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Standardne vrijednosti" @@ -2702,7 +2764,7 @@ msgstr "" msgid "Default Font" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "Uobičajeni ISO:" @@ -2727,7 +2789,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2742,11 +2804,11 @@ msgid "Delete Selected Files..." msgstr "" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2754,21 +2816,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Opis" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "" @@ -2777,11 +2839,11 @@ msgstr "" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Otkrij" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2789,25 +2851,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Uređaj" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Postavke Uređaja" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "" @@ -2819,11 +2881,15 @@ msgstr "" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "" @@ -2854,7 +2920,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "" @@ -2866,15 +2932,15 @@ msgstr "" msgid "Disable Emulation Speed Limit" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Onemogući maglu" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "" @@ -2882,7 +2948,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2896,7 +2962,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2913,11 +2979,15 @@ msgstr "Disk" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2935,25 +3005,25 @@ msgstr "" msgid "Distance of travel from neutral position." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Želite li zaustaviti emulaciju?" @@ -2970,9 +3040,9 @@ msgstr "" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "" @@ -2984,8 +3054,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Dolphin TAS Filmovi (*.dtm)" @@ -3018,21 +3088,21 @@ msgstr "" msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3047,7 +3117,7 @@ msgstr "" msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "" @@ -3060,24 +3130,26 @@ msgid "Done compressing disc image." msgstr "" #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Dolje" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "" @@ -3085,11 +3157,11 @@ msgstr "" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "" @@ -3112,27 +3184,35 @@ msgstr "" msgid "Dual Core" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Imitacija" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Dumpiraj Zvuk" @@ -3144,7 +3224,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "Dumpiraj odabranu EFB metu" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Dumpiraj Slike" @@ -3156,7 +3236,7 @@ msgstr "" msgid "Dump Objects" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "" @@ -3253,16 +3333,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Nizozemski" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "I&zlaz" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3274,7 +3354,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3302,7 +3382,7 @@ msgstr "Efekt" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3310,7 +3390,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "" @@ -3322,7 +3402,7 @@ msgstr "" msgid "Embedded Frame Buffer (EFB)" msgstr "" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "" @@ -3330,11 +3410,11 @@ msgstr "" msgid "Emu Thread already running" msgstr "Emu Thread je već pokrenut" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "" @@ -3350,8 +3430,12 @@ msgstr "" msgid "Emulation Speed" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3367,7 +3451,7 @@ msgstr "" msgid "Enable Audio Stretching" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Omogućite kodove za varanje" @@ -3379,7 +3463,7 @@ msgstr "" msgid "Enable Dual Core" msgstr "Omogućite korištenje dvije jezgre" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Omogućite korištenje dvije jezgre (ubrzanje)" @@ -3405,19 +3489,19 @@ msgid "Enable Progressive Scan" msgstr "Omogućite Progresivno Skeniranje" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Omogućite Čuvar Zaslona" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Omogući Zvučne Podatke" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "" @@ -3443,7 +3527,7 @@ msgid "" "= Compatible, OFF = Fast)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3451,7 +3535,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3481,7 +3565,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3517,7 +3601,7 @@ msgstr "" msgid "Encoding" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3530,12 +3614,12 @@ msgid "Enet Didn't Initialize" msgstr "" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Engleski" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3545,7 +3629,7 @@ msgstr "Poboljšanja" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "" @@ -3559,11 +3643,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "" @@ -3572,65 +3656,68 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Pogreška" @@ -3644,19 +3731,19 @@ msgid "Error loading selected language. Falling back to system default." msgstr "" "Pogreška u čitanju odabranoga jezika. Vraćam na standardne vrijednosti." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3676,7 +3763,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3726,11 +3813,11 @@ msgid "" "may not show fonts correctly, or crash." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3739,11 +3826,39 @@ msgstr "" msgid "Euphoria" msgstr "Euforija" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3792,14 +3907,14 @@ msgstr "" msgid "Experimental" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3807,15 +3922,15 @@ msgstr "" msgid "Export Recording" msgstr "Izvedi Snimku Videa" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Izvedi Snimku Videa..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3827,22 +3942,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Produžetak" @@ -3855,7 +3970,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3863,7 +3978,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "" @@ -3901,7 +4016,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "FIFO Pokretač Datoteka" @@ -3909,17 +4024,17 @@ msgstr "FIFO Pokretač Datoteka" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -3931,7 +4046,7 @@ msgstr "" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -3952,12 +4067,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -3969,19 +4084,19 @@ msgstr "" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Neuspjeh u preuzimanju kodova." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -3990,7 +4105,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "" @@ -4013,29 +4128,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "" @@ -4051,23 +4166,23 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "" @@ -4079,11 +4194,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "" @@ -4094,7 +4209,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "" @@ -4121,11 +4236,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "" @@ -4134,7 +4249,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4146,7 +4261,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4154,25 +4269,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4187,15 +4302,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4203,23 +4318,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4227,11 +4342,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Neuspjeh u pisanju BT.DINF u SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4239,22 +4354,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4263,19 +4378,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4288,7 +4403,7 @@ msgstr "Brzo" msgid "Fast Depth Calculation" msgstr "" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4305,7 +4420,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "" @@ -4319,18 +4434,18 @@ msgstr "Informacije o Datoteci" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "" @@ -4338,11 +4453,11 @@ msgstr "" msgid "File Size:" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "Datoteka ne sadržava ni jedan kod." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4356,11 +4471,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4368,15 +4483,15 @@ msgstr "" msgid "Filesystem" msgstr "Datotečni sustav" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4384,11 +4499,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "" @@ -4402,18 +4517,22 @@ msgid "" "This can take a while." msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Popravi Checksum" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4423,13 +4542,14 @@ msgstr "" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "" @@ -4453,7 +4573,7 @@ msgstr "" msgid "Force 16:9" msgstr "Prisili 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "" @@ -4461,15 +4581,15 @@ msgstr "" msgid "Force 4:3" msgstr "Prisili 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Prisili Filtriranje Tekstura" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4479,7 +4599,7 @@ msgid "" "
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4498,21 +4618,21 @@ msgstr "" msgid "Forward" msgstr "Naprijed" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "" @@ -4541,7 +4661,7 @@ msgstr "" msgid "Frame Range" msgstr "Domet Slike" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4553,19 +4673,19 @@ msgstr "" msgid "France" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4573,7 +4693,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -4981,7 +5101,7 @@ msgstr "Zelena Lijevo" msgid "Green Right" msgstr "Zelena Desno" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "" @@ -4994,7 +5114,7 @@ msgstr "Gitara" msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "" @@ -5007,12 +5127,29 @@ msgstr "Hacks" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5024,19 +5161,19 @@ msgstr "" msgid "Hide" msgstr "Sakrij" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5054,21 +5191,27 @@ msgstr "" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Domaćin" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5076,7 +5219,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5084,11 +5227,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "" @@ -5100,7 +5243,7 @@ msgstr "" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "" @@ -5151,11 +5294,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "IPL Postavke" @@ -5164,7 +5307,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "IR Osjetljivost:" @@ -5186,22 +5329,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Ikona" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5248,7 +5391,7 @@ msgstr "Ignoriraj Promjene Formata" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5256,7 +5399,7 @@ msgid "" "checked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5277,41 +5420,50 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" " Time elapsed: %1s" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5364,8 +5516,8 @@ msgstr "Info" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Informacije" @@ -5374,10 +5526,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Unos" @@ -5391,16 +5543,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Umetni SD karticu" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "" @@ -5412,7 +5570,7 @@ msgstr "" msgid "Install Update" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "" @@ -5428,11 +5586,11 @@ msgstr "" msgid "Instruction" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "" @@ -5450,7 +5608,7 @@ msgid "Interface" msgstr "Sučelje" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Interna LZO pogreška - komprimiranje nije uspjelo" @@ -5459,27 +5617,27 @@ msgstr "Interna LZO pogreška - komprimiranje nije uspjelo" msgid "Internal LZO Error - decompression failed" msgstr "" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Interni LZO Error - lzo_init() neuspjeh" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Interna Rezolucija:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5487,11 +5645,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5499,7 +5657,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5508,15 +5666,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5524,11 +5682,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "" @@ -5541,31 +5699,31 @@ msgstr "" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Nevažeći video snimak" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Nevažeći parametri potrage (objekt nije odabran)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "" @@ -5574,8 +5732,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Talijanski" @@ -5583,11 +5741,11 @@ msgstr "Talijanski" msgid "Italy" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "" @@ -5595,47 +5753,47 @@ msgstr "" msgid "JIT Blocks" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5647,11 +5805,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5662,12 +5820,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japanski" @@ -5687,12 +5845,12 @@ msgstr "" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "" @@ -5705,20 +5863,20 @@ msgstr "" msgid "Keys" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Korejski" @@ -5746,7 +5904,7 @@ msgstr "" msgid "Label" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5826,15 +5984,15 @@ msgstr "" msgid "License" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "" @@ -5843,17 +6001,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Učitaj" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "" @@ -5861,7 +6019,7 @@ msgstr "" msgid "Load Custom Textures" msgstr "Učitaj Posebne Teksture" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "" @@ -5870,7 +6028,7 @@ msgstr "" msgid "Load Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -5963,23 +6121,23 @@ msgstr "Učitaj Stanje Igre 8" msgid "Load State Slot 9" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "" @@ -5987,12 +6145,12 @@ msgstr "" msgid "Load from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "" @@ -6000,7 +6158,7 @@ msgstr "" msgid "Load..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "" @@ -6011,7 +6169,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "" @@ -6020,7 +6178,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Zapis" @@ -6028,7 +6186,7 @@ msgstr "Zapis" msgid "Log Configuration" msgstr "Konfiguracija Zapisa" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6055,7 +6213,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "" @@ -6084,7 +6242,7 @@ msgstr "" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6094,7 +6252,7 @@ msgstr "Glavna Gljiva" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "" @@ -6103,7 +6261,7 @@ msgstr "" msgid "Maker:" msgstr "Tvorac:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6111,7 +6269,7 @@ msgid "" "unchecked.
" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "" @@ -6119,7 +6277,7 @@ msgstr "" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6127,15 +6285,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6144,7 +6302,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "" @@ -6153,11 +6311,11 @@ msgstr "" msgid "Medium" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "" @@ -6165,7 +6323,7 @@ msgstr "" msgid "Memory Card" msgstr "Memorijska Kartica" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "" @@ -6183,7 +6341,7 @@ msgstr "" msgid "Memory Override" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "" @@ -6199,7 +6357,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6207,13 +6365,13 @@ msgid "" "want to continue?" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "" @@ -6221,19 +6379,19 @@ msgstr "" msgid "Misc" msgstr "Razno" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Razne Postavke" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6256,12 +6414,12 @@ msgid "" "unchecked.
" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6273,11 +6431,11 @@ msgstr "" msgid "Monospaced Font" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6317,10 +6475,10 @@ msgstr "" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "" @@ -6328,26 +6486,26 @@ msgstr "" msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "" @@ -6359,37 +6517,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Ime:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6397,16 +6555,16 @@ msgstr "" msgid "Netherlands" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "" @@ -6427,11 +6585,11 @@ msgstr "" msgid "New" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "" @@ -6439,7 +6597,7 @@ msgstr "" msgid "New Tag..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "" @@ -6456,7 +6614,7 @@ msgstr "" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6465,17 +6623,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "" @@ -6483,6 +6641,10 @@ msgstr "" msgid "No Adapter Detected" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "" @@ -6493,24 +6655,20 @@ msgstr "" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Opis nije dostupan" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6522,15 +6680,15 @@ msgstr "" msgid "No file loaded / recorded." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "" @@ -6538,11 +6696,15 @@ msgstr "" msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6553,7 +6715,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6561,17 +6723,13 @@ msgstr "" msgid "No save data found." msgstr "" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6581,7 +6739,7 @@ msgstr "Ništa" msgid "North America" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "" @@ -6589,11 +6747,11 @@ msgstr "" msgid "Not Set" msgstr "Nije Postavljeno" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6601,7 +6759,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6661,13 +6819,13 @@ msgstr "" msgid "Nunchuk Stick" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6680,11 +6838,11 @@ msgid "Oceania" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Isključeno" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6696,17 +6854,17 @@ msgstr "" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6721,7 +6879,7 @@ msgstr "Otvori" msgid "Open &Containing Folder" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "" @@ -6769,7 +6927,7 @@ msgstr "" msgid "OpenGL ES" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6787,7 +6945,7 @@ msgstr "Opcije" msgid "Orange" msgstr "Narančasti" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6795,7 +6953,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Drugo" @@ -6808,11 +6966,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "" @@ -6820,12 +6978,12 @@ msgstr "" msgid "Overlay Information" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "" @@ -6850,7 +7008,7 @@ msgstr "" msgid "PPC Size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6867,7 +7025,7 @@ msgstr "Pad-ovi" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6876,23 +7034,23 @@ msgstr "" msgid "Parsing Error" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "" @@ -6913,7 +7071,7 @@ msgid "Path:" msgstr "" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Mape" @@ -6921,7 +7079,7 @@ msgstr "Mape" msgid "Pause" msgstr "Pauza" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "" @@ -6944,11 +7102,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Osvjetljenje po pikselu" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "" @@ -6958,23 +7116,23 @@ msgstr "" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "" @@ -6987,7 +7145,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "" @@ -7007,16 +7165,16 @@ msgstr "Pokreni Video Snimak" msgid "Playback Options" msgstr "Postavke Reprodukcije" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Igrači" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7027,29 +7185,29 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Post-Processing Efekt:" @@ -7061,15 +7219,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7106,7 +7264,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7117,15 +7275,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7133,25 +7291,25 @@ msgstr "" msgid "Problem" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Profil" @@ -7165,15 +7323,15 @@ msgstr "" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7185,11 +7343,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "" @@ -7199,12 +7357,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Pitanje" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Izlaz" @@ -7224,11 +7382,11 @@ msgstr "R-Analogan" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7241,44 +7399,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Domet" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "" @@ -7286,11 +7444,11 @@ msgstr "" msgid "Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "" @@ -7303,11 +7461,11 @@ msgstr "" msgid "Record" msgstr "Snimi Video" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7332,7 +7490,7 @@ msgstr "Crvena Lijevo" msgid "Red Right" msgstr "Crvena Desno" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7348,16 +7506,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Osvježi" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7365,26 +7523,26 @@ msgstr "" msgid "Refresh Game List" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "" @@ -7404,16 +7562,16 @@ msgstr "" msgid "Remind Me Later" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Ukloni" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7436,8 +7594,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "" @@ -7470,29 +7628,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Resetiraj" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7500,15 +7666,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7520,11 +7686,11 @@ msgstr "" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "" @@ -7533,7 +7699,7 @@ msgstr "" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7591,11 +7757,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7604,12 +7770,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7619,11 +7786,11 @@ msgstr "" msgid "Rumble" msgstr "Rumble" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7631,15 +7798,15 @@ msgstr "" msgid "Russia" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "" @@ -7655,7 +7822,7 @@ msgstr "" msgid "SHA-1:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "" @@ -7669,11 +7836,11 @@ msgstr "" msgid "START" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "Sn&imi stanje igre" @@ -7683,7 +7850,7 @@ msgid "Safe" msgstr "Sigurno" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7696,7 +7863,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7717,11 +7884,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7733,7 +7900,7 @@ msgstr "" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7783,23 +7950,23 @@ msgstr "Snimi Stanje Igre 8" msgid "Save State Slot 9" msgstr "Mjesto za Stanje Snimanja 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "" @@ -7807,7 +7974,7 @@ msgstr "" msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "" @@ -7819,26 +7986,26 @@ msgstr "" msgid "Save as..." msgstr "Snimi kao..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "" @@ -7846,7 +8013,7 @@ msgstr "" msgid "Save to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "" @@ -7854,23 +8021,23 @@ msgstr "" msgid "Save..." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Umanjena EFB kopija" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7878,36 +8045,36 @@ msgstr "" msgid "ScrShot" msgstr "UslikajZaslon" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Traži" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Pretraži Podmape" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "" @@ -7915,7 +8082,7 @@ msgstr "" msgid "Search games..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "" @@ -7939,28 +8106,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Odaberi" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -7968,11 +8135,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -7980,7 +8147,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "" @@ -7988,7 +8155,7 @@ msgstr "" msgid "Select State" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "" @@ -8032,41 +8199,45 @@ msgstr "" msgid "Select State Slot 9" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "" @@ -8074,11 +8245,11 @@ msgstr "" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8086,12 +8257,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Odaberite snimak igre" @@ -8107,15 +8278,15 @@ msgstr "" msgid "Selected Font" msgstr "" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "Odabrani profil kontrolera ne postoji." #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8139,7 +8310,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8179,11 +8350,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Poslati" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Pozicija Senzora:" @@ -8195,63 +8366,71 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" "May not work for all games." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "" @@ -8261,7 +8440,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8296,11 +8475,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Pokaži &Zapis" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Pokaži &Alatnu Traku" @@ -8308,15 +8487,15 @@ msgstr "Pokaži &Alatnu Traku" msgid "Show Active Title in Window Title" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "" @@ -8324,7 +8503,7 @@ msgstr "" msgid "Show Debugging UI" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "" @@ -8332,43 +8511,43 @@ msgstr "" msgid "Show FPS" msgstr "Pokaži FPS" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Pokaži Francusku" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "Pokaži GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Pokaži Unos Tipki" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Pokaži Italiju" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Pokaži Koreju" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "" @@ -8376,7 +8555,7 @@ msgstr "" msgid "Show Language:" msgstr "Pokaži Jezik:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Pokaži Konfiguraciju za &Zapis" @@ -8388,7 +8567,7 @@ msgstr "" msgid "Show NetPlay Ping" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "" @@ -8396,7 +8575,7 @@ msgstr "" msgid "Show On-Screen Display Messages" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Pokaži PAL" @@ -8405,23 +8584,23 @@ msgstr "Pokaži PAL" msgid "Show PC" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Pokaži Platforme" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Pokaži Regije" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "" @@ -8430,46 +8609,50 @@ msgstr "" msgid "Show Statistics" msgstr "Pokaži Statistike" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Pokaži Taivan" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Pokaži SAD" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Pokaži Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8501,7 +8684,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "" @@ -8517,16 +8700,31 @@ msgstr "" msgid "Sideways Wii Remote" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Pojednostavljeni Kineski" @@ -8534,7 +8732,7 @@ msgstr "Pojednostavljeni Kineski" msgid "Simulate DK Bongos" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8561,7 +8759,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "Ignoriraj EFB zahtjev procesora" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "" @@ -8569,7 +8767,7 @@ msgstr "" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8583,19 +8781,19 @@ msgstr "" msgid "Slider Bar" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Utor A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Utor B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "" @@ -8613,7 +8811,7 @@ msgstr "" msgid "Software Renderer" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8630,11 +8828,11 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "" @@ -8647,8 +8845,8 @@ msgid "Spain" msgstr "" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Španjolski" @@ -8656,7 +8854,7 @@ msgstr "Španjolski" msgid "Speaker Pan" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Glasnoća Zvučnika:" @@ -8691,7 +8889,7 @@ msgstr "" msgid "Speed up Disc Transfer Rate" msgstr "Ubrzati Transfer sa Diska" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "" @@ -8703,16 +8901,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Standardni Kontroler" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Start" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "" @@ -8720,11 +8918,13 @@ msgstr "" msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Počni Snimati Video" @@ -8740,7 +8940,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "" @@ -8751,7 +8951,7 @@ msgstr "" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Volan" @@ -8779,19 +8979,19 @@ msgstr "" msgid "Step Over" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "" @@ -8800,20 +9000,20 @@ msgstr "" msgid "Stepping" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "" @@ -8834,11 +9034,15 @@ msgstr "Gljiva" msgid "Stop" msgstr "Zaustavi" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "" @@ -8852,7 +9056,7 @@ msgstr "" msgid "Store XFB Copies to Texture Only" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8861,7 +9065,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8874,7 +9078,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Rastegni do Prozora" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "" @@ -8897,16 +9101,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -8916,11 +9120,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -8929,7 +9133,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "" @@ -8941,12 +9145,12 @@ msgstr "" msgid "Successfully extracted system data." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "" @@ -8958,16 +9162,16 @@ msgstr "" msgid "Support" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -8975,11 +9179,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -8991,50 +9195,62 @@ msgstr "" msgid "Swing" msgstr "Zamah" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "" @@ -9048,37 +9264,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Jezik Sustava:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "TAS Unos" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "" @@ -9096,11 +9312,11 @@ msgstr "" msgid "Taiwan" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Uslikaj Ekran" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Testirati" @@ -9109,7 +9325,7 @@ msgstr "Testirati" msgid "Texture Cache" msgstr "Predmemorija za Teksture" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9131,7 +9347,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9145,13 +9361,13 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "" @@ -9187,7 +9403,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9201,7 +9417,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9223,19 +9439,19 @@ msgstr "" msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9285,7 +9501,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9296,7 +9512,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9313,7 +9529,7 @@ msgstr "" msgid "The hashes match!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9335,12 +9551,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9355,20 +9571,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "Rezultirajući de-šifrirani AR kod ne sadrži niti jedan redak." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9389,7 +9605,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9440,7 +9656,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "" @@ -9474,7 +9690,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "" @@ -9492,7 +9708,7 @@ msgid "" "Replay itself." msgstr "AR simulator ne podržava kodove koje utječu na njega samog." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "" @@ -9532,7 +9748,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "" @@ -9550,27 +9770,27 @@ msgid "" "or freezes while running this game." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9626,13 +9846,13 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9652,7 +9872,7 @@ msgstr "" msgid "Threshold" msgstr "Prag" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "" @@ -9669,22 +9889,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Naslov" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "Do" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "" @@ -9709,7 +9929,7 @@ msgid "Toggle Aspect Ratio" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "" @@ -9769,14 +9989,20 @@ msgstr "" msgid "Toolbar" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Vrh" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9811,20 +10037,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Tradicionalni Kineski" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "" @@ -9854,20 +10080,12 @@ msgstr "Okidači" msgid "Type" msgstr "Tip" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9884,9 +10102,9 @@ msgstr "" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -9914,10 +10132,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -9934,7 +10156,11 @@ msgid "" "Would you like to ignore this line and continue parsing?" msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -9946,15 +10172,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Poništi Posljednje Učitavanje" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "" @@ -9968,18 +10194,18 @@ msgid "" "title from the NAND without deleting its save data. Continue?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Nepoznato" @@ -9987,7 +10213,7 @@ msgstr "Nepoznato" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -9997,7 +10223,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10007,15 +10233,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10023,19 +10249,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10043,7 +10269,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "" @@ -10059,13 +10285,28 @@ msgstr "" msgid "Unpacking" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10074,7 +10315,7 @@ msgstr "Gore" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Ažuriraj" @@ -10129,7 +10370,7 @@ msgstr "" msgid "Upright Wii Remote" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "" @@ -10145,7 +10386,7 @@ msgstr "" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "" @@ -10171,18 +10412,40 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "" @@ -10195,18 +10458,18 @@ msgstr "" msgid "User Style:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10232,23 +10495,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10261,7 +10524,7 @@ msgstr "Uslužni program" msgid "V-Sync" msgstr "V-Sinkro" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Vrijednost" @@ -10294,8 +10557,8 @@ msgstr "" msgid "Verifying" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "" @@ -10331,7 +10594,7 @@ msgstr "" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10358,7 +10621,7 @@ msgstr "" msgid "Vulkan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "" @@ -10406,7 +10669,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10414,8 +10677,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10437,7 +10700,7 @@ msgid "" "unsure, leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10450,10 +10713,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Upozorenje" @@ -10469,28 +10732,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10516,7 +10779,7 @@ msgstr "" msgid "Watch" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "" @@ -10545,11 +10808,11 @@ msgid "" "unsure, leave this checked.
" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Prisili Široki Ekran " @@ -10565,11 +10828,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Wii NAND Korijen:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "" @@ -10577,8 +10840,8 @@ msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "" @@ -10591,11 +10854,11 @@ msgstr "" msgid "Wii Remote Orientation" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "" @@ -10611,7 +10874,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "" @@ -10619,7 +10882,7 @@ msgstr "" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "" @@ -10647,18 +10910,18 @@ msgid "World" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "" @@ -10671,12 +10934,12 @@ msgid "Write to File" msgstr "Piši u Datoteku" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "" @@ -10684,7 +10947,7 @@ msgstr "" msgid "Write to Window" msgstr "Pisati na Prozor" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10695,7 +10958,7 @@ msgstr "" msgid "X" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "" @@ -10724,8 +10987,8 @@ msgid "Yellow" msgstr "Žuti" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "" @@ -10760,7 +11023,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10789,11 +11052,11 @@ msgstr "" msgid "You have to enter a name." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10801,7 +11064,7 @@ msgstr "" msgid "You must restart Dolphin in order for the change to take effect." msgstr "Morate ponovno pokrenuti Dolphin da bi promjene imale efekta." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "" @@ -10832,23 +11095,23 @@ msgstr "Zero 3 kod nije podržan" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10867,13 +11130,13 @@ msgstr "" msgid "d3d12.dll could not be loaded." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -10889,31 +11152,31 @@ msgstr "" msgid "fake-completion" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -10943,7 +11206,7 @@ msgstr "" msgid "on" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "" @@ -10952,7 +11215,7 @@ msgstr "" msgid "s" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -10961,7 +11224,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -10980,7 +11243,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -10999,7 +11262,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11007,7 +11270,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Languages/po/hu.po b/Languages/po/hu.po index 350e4f12d8a9..b3d757a3f7e6 100644 --- a/Languages/po/hu.po +++ b/Languages/po/hu.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Evin, 2016\n" "Language-Team: Hungarian (http://www.transifex.com/delroth/dolphin-emu/" "language/hu/)\n" "Language: hu\n" @@ -21,7 +21,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -29,7 +29,7 @@ msgid "" "problems that Dolphin is unable to detect." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -37,7 +37,7 @@ msgid "" "that it hasn't been tampered with." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -53,7 +53,7 @@ msgstr "" msgid " (Disc %1)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "" @@ -61,7 +61,7 @@ msgstr "" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -75,7 +75,7 @@ msgstr "" msgid "%" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -89,17 +89,17 @@ msgstr "" msgid "%1 %" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "" @@ -118,7 +118,7 @@ msgid "%1 (Revision %3)" msgstr "" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -155,7 +155,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "" @@ -166,23 +166,23 @@ msgid "" "Current Frame: %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -191,11 +191,11 @@ msgstr "" msgid "%1 ms" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "" @@ -207,15 +207,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -231,30 +231,30 @@ msgstr "" msgid "%1[%2]: %3/%4 MiB" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "" @@ -274,7 +274,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&Névjegy" @@ -283,11 +283,11 @@ msgid "&Add Memory Breakpoint" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "" @@ -295,19 +295,19 @@ msgstr "" msgid "&Add..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "&Audió beállítások" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "&Bootolás DVD mentésből" @@ -315,11 +315,11 @@ msgstr "&Bootolás DVD mentésből" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Töréspontok" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "" @@ -327,15 +327,15 @@ msgstr "" msgid "&Cancel" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "" @@ -343,7 +343,7 @@ msgstr "" msgid "&Clone..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "" @@ -351,19 +351,20 @@ msgstr "" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "&Vezérlő beállítások" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "" @@ -375,7 +376,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "" @@ -383,11 +384,11 @@ msgstr "" msgid "&Edit..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emuláció" @@ -399,43 +400,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Fájl" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "Képkocka léptetése" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "&GitHub tárház" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "&Grafikai beállítások" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Súgó" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "&Gyorsbillentyű beállítások" @@ -447,11 +452,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "" @@ -459,7 +464,7 @@ msgstr "" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -467,23 +472,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&Állapot betöltése" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Memória" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "&Film" @@ -491,7 +496,7 @@ msgstr "&Film" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "" @@ -499,24 +504,24 @@ msgstr "" msgid "&No" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Megnyitás..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Beállítások" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Szünet" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Indítás" @@ -524,11 +529,11 @@ msgstr "&Indítás" msgid "&Properties" msgstr "&Tulajdonságok" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "&Írásvédett mód" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Regiszterek" @@ -537,24 +542,24 @@ msgid "&Remove" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Alapbeállítások" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "" @@ -562,11 +567,11 @@ msgstr "" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Stop" @@ -574,11 +579,11 @@ msgstr "&Stop" msgid "&Theme:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Eszközök" @@ -586,17 +591,17 @@ msgstr "&Eszközök" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Nézet" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&Figyelés" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Weboldal" @@ -608,11 +613,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" @@ -624,7 +629,7 @@ msgstr "" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(ki)" @@ -632,34 +637,34 @@ msgstr "(ki)" msgid "(ppc)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" @@ -667,6 +672,10 @@ msgstr "" msgid "128 Mbit (2043 blocks)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "" @@ -675,35 +684,35 @@ msgstr "" msgid "16-bit" msgstr "16-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x eredeti (1280x1056) 720p-hez" @@ -715,25 +724,25 @@ msgstr "" msgid "32-bit" msgstr "32-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "" @@ -747,28 +756,32 @@ msgstr "" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x eredeti (1920x1584) 1080p-hez" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x eredeti (2560x2112) 1440p-hez" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x eredeti (3200x2640)" @@ -776,29 +789,33 @@ msgstr "5x eredeti (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x eredeti (3840x3168) 4K-hoz" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x eredeti (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "" @@ -807,25 +824,25 @@ msgstr "" msgid "8-bit" msgstr "8-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x eredeti (5120x4224) 5K-hoz" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "" @@ -844,12 +861,12 @@ msgid "" "Notes:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "" @@ -867,17 +884,17 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "Egy lemez már behelyezés alatt." -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" @@ -886,7 +903,7 @@ msgstr "" msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -910,8 +927,8 @@ msgstr "" msgid "AR Codes" msgstr "AR kódok" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "" @@ -934,7 +951,7 @@ msgstr "" msgid "Accuracy:" msgstr "Pontosság:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "" @@ -1030,9 +1047,9 @@ msgstr "Adapter érzékelve" msgid "Adapter:" msgstr "Adapter:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Hozzáadás" @@ -1040,11 +1057,11 @@ msgstr "Hozzáadás" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "" @@ -1076,46 +1093,49 @@ msgstr "" msgid "Add to &watch" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Hozzáadás" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Cím" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1159,39 +1179,43 @@ msgstr "Haladó" msgid "Africa" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "" @@ -1200,25 +1224,25 @@ msgstr "" msgid "All players' saves synchronized." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1244,7 +1268,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "A behelyezni próbált lemez nem található." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Anaglif" @@ -1262,39 +1286,39 @@ msgstr "Szög" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Anizotróp szűrés:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Élsimítás:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1308,15 +1332,15 @@ msgstr "Betöltőprogram dátuma:" msgid "Apply" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "" @@ -1324,11 +1348,11 @@ msgstr "" msgid "Are you sure you want to delete this file?" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "" @@ -1341,11 +1365,11 @@ msgid "Aspect Ratio" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Képarány:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Vezérlő portjainak társítása" @@ -1353,7 +1377,7 @@ msgstr "Vezérlő portjainak társítása" msgid "Assign Controllers" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1378,7 +1402,7 @@ msgstr "" msgid "Australia" msgstr "Ausztrália" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "" @@ -1390,15 +1414,15 @@ msgstr "Készítők" msgid "Auto" msgstr "Automatikus" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Automatikus (640x528 többszöröse)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1414,7 +1438,7 @@ msgstr "" msgid "Auto-Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1425,12 +1449,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "" @@ -1445,11 +1469,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "BP regiszter " @@ -1475,7 +1499,7 @@ msgstr "Háttéralkalmazás beállításai" msgid "Backend:" msgstr "Háttéralkalmazás:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Háttér bemenet" @@ -1486,7 +1510,13 @@ msgstr "Háttér bemenet" msgid "Backward" msgstr "Hátra" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1494,19 +1524,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Banner" @@ -1530,7 +1561,7 @@ msgstr "" msgid "Basic" msgstr "Alap" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Alapok beállítása" @@ -1538,7 +1569,7 @@ msgstr "Alapok beállítása" msgid "Bass" msgstr "Basszus" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1546,11 +1577,11 @@ msgstr "" msgid "Battery" msgstr "Akkumulátor" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1572,7 +1603,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "" @@ -1585,7 +1616,7 @@ msgstr "" msgid "Blocking" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Blokk" @@ -1608,15 +1639,15 @@ msgid "" "Passthrough mode cannot be used." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "" @@ -1624,7 +1655,7 @@ msgstr "" msgid "Borderless Fullscreen" msgstr "Szegély nélküli teljes képernyő" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Lent" @@ -1638,7 +1669,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "" @@ -1647,7 +1678,7 @@ msgstr "" msgid "Breakpoint" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" @@ -1677,7 +1708,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1685,12 +1716,12 @@ msgstr "" msgid "Buffer Size:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Puffer:" @@ -1732,11 +1763,11 @@ msgstr "Gombok" msgid "C Stick" msgstr "C kar" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "CP regiszter " @@ -1767,7 +1798,7 @@ msgstr "" msgid "Calculate" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1787,15 +1818,15 @@ msgstr "" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1805,7 +1836,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1813,16 +1844,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "" @@ -1840,23 +1871,23 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "" @@ -1878,7 +1909,7 @@ msgstr "" msgid "Change &Disc" msgstr "Lemez&váltás" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Lemez&váltás..." @@ -1886,15 +1917,15 @@ msgstr "Lemez&váltás..." msgid "Change Disc" msgstr "Lemezváltás" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1914,7 +1945,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Chat" @@ -1930,11 +1961,11 @@ msgstr "Csalás keresése" msgid "Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "" @@ -1948,7 +1979,7 @@ msgid "" "whether it's still in use." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "" @@ -1956,16 +1987,16 @@ msgstr "" msgid "China" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Válassz megnyitandó fájlt" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -1988,14 +2019,14 @@ msgid "Classic Controller" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Törlés" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "" @@ -2012,28 +2043,47 @@ msgstr "" msgid "Close" msgstr "Bezárás" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Kód:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2051,7 +2101,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "" @@ -2064,7 +2114,7 @@ msgstr "" msgid "Compression:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "" @@ -2076,13 +2126,13 @@ msgstr "" msgid "Config" msgstr "Beállítás" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Beállítások" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2090,21 +2140,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "" @@ -2117,26 +2167,26 @@ msgstr "" msgid "Confirm on Stop" msgstr "Megerősítés leállításkor" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Csatlakozás" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Balance Board csatlakoztatása" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "USB billentyűzet csatlakoztatása" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "" @@ -2156,11 +2206,11 @@ msgstr "" msgid "Connect Wii Remote 4" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" @@ -2172,15 +2222,19 @@ msgstr "" msgid "Connected" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Csatlakozás típusa:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Folyamatos szkennelés" @@ -2193,7 +2247,7 @@ msgstr "" msgid "Control Stick" msgstr "Vezérlő kar" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "" @@ -2221,7 +2275,7 @@ msgstr "" msgid "Controllers" msgstr "Vezérlők" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2229,7 +2283,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2238,7 +2292,7 @@ msgid "" "Native.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2263,12 +2317,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Konvergencia:" @@ -2305,33 +2359,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Másolás" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "" @@ -2339,11 +2398,15 @@ msgstr "" msgid "Copy failed" msgstr "Sikertelen másolás" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "" @@ -2358,16 +2421,16 @@ msgstr "Mag" msgid "Cost" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "" @@ -2446,15 +2509,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "A központi szerver nem található" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2481,7 +2544,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "" @@ -2504,11 +2567,11 @@ msgstr "" msgid "Crossfade" msgstr "Átúsztatás" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2516,7 +2579,7 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "" @@ -2524,7 +2587,7 @@ msgstr "" msgid "Current thread" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2555,7 +2618,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "DK Bongos" @@ -2583,7 +2646,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2591,11 +2654,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Dance Mat" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "" @@ -2607,28 +2670,27 @@ msgstr "" msgid "Data Transfer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2646,7 +2708,7 @@ msgid "Debug Only" msgstr "Csak hibakeresés" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Hibakeresés" @@ -2688,7 +2750,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Alapértelmezett" @@ -2704,7 +2766,7 @@ msgstr "" msgid "Default Font" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "Alapértelmezett ISO:" @@ -2729,7 +2791,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2744,11 +2806,11 @@ msgid "Delete Selected Files..." msgstr "" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2756,21 +2818,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Mélység:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Leírás" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Leírás:" @@ -2779,11 +2841,11 @@ msgstr "Leírás:" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Észlelés" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2791,25 +2853,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Eszköz" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Eszköz beállítások" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "" @@ -2821,11 +2883,15 @@ msgstr "" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "Képernyő sötétítése öt perc inaktivitás után." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "Közvetlen kapcsolat" @@ -2856,7 +2922,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "Határolókeret kikapcsolása" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "" @@ -2868,15 +2934,15 @@ msgstr "" msgid "Disable Emulation Speed Limit" msgstr "Emulációs sebességkorlát kikapcsolása" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Köd kikapcsolása" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "" @@ -2884,7 +2950,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2898,7 +2964,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2915,11 +2981,15 @@ msgstr "Lemez" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2937,25 +3007,25 @@ msgstr "" msgid "Distance of travel from neutral position." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Biztos leállítod az aktuális emulációt?" @@ -2972,9 +3042,9 @@ msgstr "" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "" @@ -2986,8 +3056,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Dolphin TAS videók (*.dtm)" @@ -3020,21 +3090,21 @@ msgstr "" msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "A Dolphin túl régi az átjárási szerverhez" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3049,7 +3119,7 @@ msgstr "" msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "" @@ -3062,24 +3132,26 @@ msgid "Done compressing disc image." msgstr "Lemezkép tömörítése kész." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Le" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "" @@ -3087,11 +3159,11 @@ msgstr "" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "" @@ -3114,27 +3186,35 @@ msgstr "" msgid "Dual Core" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Dummy" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Hang kimentése" @@ -3146,7 +3226,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "EFB cél kimentése" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Képkockák kimentése" @@ -3158,7 +3238,7 @@ msgstr "" msgid "Dump Objects" msgstr "Objektumok kimentése" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "Kimentési út:" @@ -3255,16 +3335,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Holland" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "K&ilépés" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3276,7 +3356,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3304,7 +3384,7 @@ msgstr "Effekt" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3312,7 +3392,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "" @@ -3324,7 +3404,7 @@ msgstr "" msgid "Embedded Frame Buffer (EFB)" msgstr "Beágyazott képkocka puffer (EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Üres" @@ -3332,11 +3412,11 @@ msgstr "Üres" msgid "Emu Thread already running" msgstr "Az emulációs szál már fut" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "" @@ -3352,8 +3432,12 @@ msgstr "" msgid "Emulation Speed" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3369,7 +3453,7 @@ msgstr "API-érvényesítési rétegek használata" msgid "Enable Audio Stretching" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Csalások használata" @@ -3381,7 +3465,7 @@ msgstr "Egyéni RTC használata" msgid "Enable Dual Core" msgstr "Kétmagos mód használata" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Kétmagos mód használata (gyorsítás)" @@ -3407,19 +3491,19 @@ msgid "Enable Progressive Scan" msgstr "Progresszív pásztázás használata" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Képernyővédő használata" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Hangszóró adatok bekapcsolása" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "Használati statisztika jelentése" @@ -3449,7 +3533,7 @@ msgstr "" "Bekapcsolja a lebegőpontos eredményjelzős számolást (Floating Point Result " "Flag), mely kevés játékhoz szükséges. (BE = Kompatibilis, KI = Gyors)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3457,7 +3541,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3487,7 +3571,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3523,7 +3607,7 @@ msgstr "" msgid "Encoding" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3536,12 +3620,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet nincs inicializálva" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Angol" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3551,7 +3635,7 @@ msgstr "Képjavítások" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "" @@ -3565,11 +3649,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "" @@ -3578,65 +3662,68 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Hiba" @@ -3651,19 +3738,19 @@ msgstr "" "Hiba a kiválasztott nyelv betöltésekor. Rendszer alapértelmezett " "visszaállítva." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3683,7 +3770,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3733,11 +3820,11 @@ msgid "" "may not show fonts correctly, or crash." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3746,11 +3833,39 @@ msgstr "" msgid "Euphoria" msgstr "Eufória" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Európa" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3799,14 +3914,14 @@ msgstr "" msgid "Experimental" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Minden Wii mentés exportálása" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3814,15 +3929,15 @@ msgstr "" msgid "Export Recording" msgstr "Felvétel exportálása" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Felvétel exportálása..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3834,22 +3949,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Kiegészítő" @@ -3862,7 +3977,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3870,7 +3985,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "Küldő képkockapuffer (XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "" @@ -3908,7 +4023,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "FIFO lejátszó" @@ -3916,17 +4031,17 @@ msgstr "FIFO lejátszó" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -3938,7 +4053,7 @@ msgstr "" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -3959,12 +4074,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -3976,19 +4091,19 @@ msgstr "" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Kódok letöltése sikertelen." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -3997,7 +4112,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "" @@ -4020,29 +4135,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "" @@ -4058,23 +4173,23 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "" @@ -4086,11 +4201,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "" @@ -4101,7 +4216,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "" @@ -4128,11 +4243,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "" @@ -4141,7 +4256,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4153,7 +4268,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4161,25 +4276,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4194,15 +4309,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4210,23 +4325,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4234,11 +4349,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "A BT.DINF írása a SYSCONF fájlba sikertelen" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4246,22 +4361,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4270,19 +4385,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4295,7 +4410,7 @@ msgstr "Gyors" msgid "Fast Depth Calculation" msgstr "Gyors mélységszámolás" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4312,7 +4427,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "" @@ -4326,18 +4441,18 @@ msgstr "Fájl információ" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Fájlnév" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Fájlméret" @@ -4345,11 +4460,11 @@ msgstr "Fájlméret" msgid "File Size:" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "A fájl nem tartalmazott kódokat." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4363,11 +4478,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4375,15 +4490,15 @@ msgstr "" msgid "Filesystem" msgstr "Fájlrendszer" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4391,11 +4506,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "" @@ -4409,18 +4524,22 @@ msgid "" "This can take a while." msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Ellenőrzőösszeg javítása" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4430,13 +4549,14 @@ msgstr "" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "" @@ -4460,7 +4580,7 @@ msgstr "" msgid "Force 16:9" msgstr "16:9 kényszerítése" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "" @@ -4468,15 +4588,15 @@ msgstr "" msgid "Force 4:3" msgstr "4:3 kényszerítése" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Textúraszűrés kényszerítése" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4486,7 +4606,7 @@ msgid "" "
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4505,21 +4625,21 @@ msgstr "" msgid "Forward" msgstr "Előre" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Port forward (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "" @@ -4548,7 +4668,7 @@ msgstr "" msgid "Frame Range" msgstr "Képkocka hatókör" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4560,19 +4680,19 @@ msgstr "" msgid "France" msgstr "Francia" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4580,7 +4700,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -4988,7 +5108,7 @@ msgstr "Zöld balra" msgid "Green Right" msgstr "Zöld jobbra" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "" @@ -5001,7 +5121,7 @@ msgstr "Gitár" msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "" @@ -5014,12 +5134,29 @@ msgstr "Hangolások" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5031,19 +5168,19 @@ msgstr "" msgid "Hide" msgstr "Elrejtés" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5061,21 +5198,27 @@ msgstr "" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Gazda" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5083,7 +5226,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5091,11 +5234,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "" @@ -5107,7 +5250,7 @@ msgstr "" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "" @@ -5158,11 +5301,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "IPL beállítások" @@ -5171,7 +5314,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "IR érzékenysége:" @@ -5193,22 +5336,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Ikon" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5255,7 +5398,7 @@ msgstr "Formátumváltozások kihagyása" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5263,7 +5406,7 @@ msgid "" "checked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5284,41 +5427,50 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Wii mentés importálása..." -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" " Time elapsed: %1s" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5371,8 +5523,8 @@ msgstr "Infó" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Információk" @@ -5381,10 +5533,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Bemenet" @@ -5398,16 +5550,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "SD kártya behelyezése" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "" @@ -5419,7 +5577,7 @@ msgstr "" msgid "Install Update" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "WAD telepítése..." @@ -5435,11 +5593,11 @@ msgstr "" msgid "Instruction" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "" @@ -5457,7 +5615,7 @@ msgid "Interface" msgstr "Felhasználói felület" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Belső LZO hiba - sikertelen tömörítés" @@ -5466,27 +5624,27 @@ msgstr "Belső LZO hiba - sikertelen tömörítés" msgid "Internal LZO Error - decompression failed" msgstr "" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Belső LZO hiba - sikertelen lzo_init()" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Belső felbontás:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5494,11 +5652,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "Értelmező (leglassabb)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5506,7 +5664,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5515,15 +5673,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5531,11 +5689,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "Érvénytelen gazda" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "" @@ -5548,32 +5706,32 @@ msgstr "" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Érvénytelen rögzített fájl" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Érvénytelen keresési paraméterek (nincs kiválasztott elem)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Érvénytelen keresési karakterlánc (nem alakítható számmá)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "" "Érvénytelen keresési karakterlánc (csak azonos karakterlánchossz támogatott)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "" @@ -5582,8 +5740,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Olasz" @@ -5591,11 +5749,11 @@ msgstr "Olasz" msgid "Italy" msgstr "Olaszország" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "" @@ -5603,47 +5761,47 @@ msgstr "" msgid "JIT Blocks" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5655,11 +5813,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5670,12 +5828,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Japán" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japán" @@ -5695,12 +5853,12 @@ msgstr "Ablak mindig felül" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Billentyűzet" @@ -5713,20 +5871,20 @@ msgstr "Billentyűzet" msgid "Keys" msgstr "Gombok" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Játékos kirúgása" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Korea" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Korea" @@ -5754,7 +5912,7 @@ msgstr "" msgid "Label" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5834,15 +5992,15 @@ msgstr "" msgid "License" msgstr "Licence" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "" @@ -5851,17 +6009,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Betöltés" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "" @@ -5869,7 +6027,7 @@ msgstr "" msgid "Load Custom Textures" msgstr "Egyedi textúrák betöltése" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "" @@ -5878,7 +6036,7 @@ msgstr "" msgid "Load Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -5971,23 +6129,23 @@ msgstr "Állapot betöltése, foglalat 8" msgid "Load State Slot 9" msgstr "Állapot betöltése, foglalat 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "Állapot betöltése a választott foglalatból" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "" @@ -5995,12 +6153,12 @@ msgstr "" msgid "Load from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "" @@ -6008,7 +6166,7 @@ msgstr "" msgid "Load..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "" @@ -6019,7 +6177,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "" @@ -6028,7 +6186,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Napló" @@ -6036,7 +6194,7 @@ msgstr "Napló" msgid "Log Configuration" msgstr "Napló beállítások" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6063,7 +6221,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "" @@ -6092,7 +6250,7 @@ msgstr "" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6102,7 +6260,7 @@ msgstr "Főkar" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Készítő" @@ -6111,7 +6269,7 @@ msgstr "Készítő" msgid "Maker:" msgstr "Készítő:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6119,7 +6277,7 @@ msgid "" "unchecked.
" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "" @@ -6127,7 +6285,7 @@ msgstr "" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6135,15 +6293,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6152,7 +6310,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "Talán lassulást okoz a Wii menüben és néhány játéknál." @@ -6161,11 +6319,11 @@ msgstr "Talán lassulást okoz a Wii menüben és néhány játéknál." msgid "Medium" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "" @@ -6173,7 +6331,7 @@ msgstr "" msgid "Memory Card" msgstr "Memóriakártya" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "" @@ -6191,7 +6349,7 @@ msgstr "" msgid "Memory Override" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "" @@ -6207,7 +6365,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6215,13 +6373,13 @@ msgid "" "want to continue?" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Mikrofon" @@ -6229,19 +6387,19 @@ msgstr "Mikrofon" msgid "Misc" msgstr "Egyebek" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Egyéb beállítások" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6264,12 +6422,12 @@ msgid "" "unchecked.
" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6281,11 +6439,11 @@ msgstr "Monoszkóp árnyékok" msgid "Monospaced Font" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6325,10 +6483,10 @@ msgstr "" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "" @@ -6336,26 +6494,26 @@ msgstr "" msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "" @@ -6367,37 +6525,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Név:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Natív (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6405,16 +6563,16 @@ msgstr "" msgid "Netherlands" msgstr "Hollandia" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "Netplay szinkront veszített. Innen már nem lehet visszaállni." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "" @@ -6435,11 +6593,11 @@ msgstr "" msgid "New" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "" @@ -6447,7 +6605,7 @@ msgstr "" msgid "New Tag..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "Új azonosító generálva." @@ -6464,7 +6622,7 @@ msgstr "" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6473,17 +6631,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Becenév:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "" @@ -6491,6 +6649,10 @@ msgstr "" msgid "No Adapter Detected" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "" @@ -6501,24 +6663,20 @@ msgstr "" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Nincs elérhető leírás" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6530,15 +6688,15 @@ msgstr "" msgid "No file loaded / recorded." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "" @@ -6546,11 +6704,15 @@ msgstr "" msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6561,7 +6723,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6569,19 +6731,15 @@ msgstr "" msgid "No save data found." msgstr "" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" "Nem található undo.dtm, állás betöltésének megszakítása a videó " "szinkronvesztésének elkerüléséhez" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6591,7 +6749,7 @@ msgstr "Nincs" msgid "North America" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "" @@ -6599,11 +6757,11 @@ msgstr "" msgid "Not Set" msgstr "Nincs megadva" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "Nem minden játékos rendelkezik a játékkal. Biztos elindítod?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6611,7 +6769,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6671,13 +6829,13 @@ msgstr "" msgid "Nunchuk Stick" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6690,11 +6848,11 @@ msgid "Oceania" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Ki" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6706,17 +6864,17 @@ msgstr "" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "Online &dokumentáció" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6731,7 +6889,7 @@ msgstr "Megnyitás" msgid "Open &Containing Folder" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "" @@ -6779,7 +6937,7 @@ msgstr "" msgid "OpenGL ES" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6797,7 +6955,7 @@ msgstr "Beállítások" msgid "Orange" msgstr "Narancs" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6805,7 +6963,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Egyéb" @@ -6818,11 +6976,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "" @@ -6830,12 +6988,12 @@ msgstr "" msgid "Overlay Information" msgstr "Fedő információk" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "Bemeneti fe&lvétel lejátszása..." -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "" @@ -6860,7 +7018,7 @@ msgstr "" msgid "PPC Size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6877,7 +7035,7 @@ msgstr "Irányítók" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6886,23 +7044,23 @@ msgstr "" msgid "Parsing Error" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "" @@ -6923,7 +7081,7 @@ msgid "Path:" msgstr "" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Elérési utak" @@ -6931,7 +7089,7 @@ msgstr "Elérési utak" msgid "Pause" msgstr "Szünet" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "Szünet a videó végén" @@ -6954,11 +7112,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Képpont alapú megvilágítás" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "" @@ -6968,23 +7126,23 @@ msgstr "" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "" @@ -6997,7 +7155,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Platform" @@ -7017,16 +7175,16 @@ msgstr "Felvétel lejátszása" msgid "Playback Options" msgstr "Visszajátszási beállítások" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Játékosok" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7037,29 +7195,29 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Utófeldolgozási effektus:" @@ -7071,15 +7229,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "Egyedi textúrák előzetes lehívása" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7116,7 +7274,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7127,15 +7285,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7143,25 +7301,25 @@ msgstr "" msgid "Problem" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Profil" @@ -7175,15 +7333,15 @@ msgstr "" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7195,11 +7353,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "" @@ -7209,12 +7367,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Kérdés" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Kilépés" @@ -7234,11 +7392,11 @@ msgstr "Jobb analóg" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7251,44 +7409,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Tartomány" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "" @@ -7296,11 +7454,11 @@ msgstr "" msgid "Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Valódi Balance Board" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "" @@ -7313,11 +7471,11 @@ msgstr "" msgid "Record" msgstr "Rögzítés" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7342,7 +7500,7 @@ msgstr "Vörös balra" msgid "Red Right" msgstr "Vörös jobbra" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7358,16 +7516,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Frissítés" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7375,26 +7533,26 @@ msgstr "" msgid "Refresh Game List" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Régió" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "" @@ -7414,16 +7572,16 @@ msgstr "" msgid "Remind Me Later" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Törlés" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7446,8 +7604,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "" @@ -7480,29 +7638,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Alapbeállítások" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "Átjárási beállítások visszaállítása" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7510,15 +7676,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7530,11 +7696,11 @@ msgstr "" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Újra" @@ -7543,7 +7709,7 @@ msgstr "Újra" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7601,11 +7767,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7614,12 +7780,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7629,11 +7796,11 @@ msgstr "" msgid "Rumble" msgstr "Rumble" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7641,15 +7808,15 @@ msgstr "" msgid "Russia" msgstr "Oroszország" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "SD kártya elérési út:" @@ -7665,7 +7832,7 @@ msgstr "" msgid "SHA-1:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "" @@ -7679,11 +7846,11 @@ msgstr "" msgid "START" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "Á&llapot mentése" @@ -7693,7 +7860,7 @@ msgid "Safe" msgstr "Biztonságos" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7706,7 +7873,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7727,11 +7894,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7743,7 +7910,7 @@ msgstr "Legrégebbi állapot mentése" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7793,23 +7960,23 @@ msgstr "Állapot mentése, foglalat 8" msgid "Save State Slot 9" msgstr "Állapot mentése, foglalat 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "Állapot mentése a választott foglalatba" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "" @@ -7817,7 +7984,7 @@ msgstr "" msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "" @@ -7829,26 +7996,26 @@ msgstr "" msgid "Save as..." msgstr "Mentés másként..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "" @@ -7856,7 +8023,7 @@ msgstr "" msgid "Save to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "" @@ -7864,23 +8031,23 @@ msgstr "" msgid "Save..." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Méretezett EFB másolat" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7888,36 +8055,36 @@ msgstr "" msgid "ScrShot" msgstr "Pillanatkép" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Keresés" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Keresés az almappákban" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "" @@ -7925,7 +8092,7 @@ msgstr "" msgid "Search games..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "" @@ -7949,28 +8116,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Kiválaszt" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -7978,11 +8145,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -7990,7 +8157,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "" @@ -7998,7 +8165,7 @@ msgstr "" msgid "Select State" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Állapot kiválasztása, foglalat" @@ -8042,41 +8209,45 @@ msgstr "Állapot kiválasztása, foglalat 8" msgid "Select State Slot 9" msgstr "Állapot kiválasztása, foglalat 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "" @@ -8084,11 +8255,11 @@ msgstr "" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8096,12 +8267,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Válassz mentési fájlt" @@ -8117,15 +8288,15 @@ msgstr "" msgid "Selected Font" msgstr "" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "A megadott vezérlő profil nem létezik" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8149,7 +8320,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8189,11 +8360,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Küldés" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Érzékelősáv helyzete:" @@ -8205,56 +8376,64 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "A szerver elutasította az átjárási kérelmet" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8264,7 +8443,7 @@ msgstr "" "helyett.\n" "Nem biztos, hogy minden játékkal működik." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "A Wii rendszer nyelve." @@ -8274,7 +8453,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8309,11 +8488,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Nap&ló megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Eszközt&ár megjelenítése" @@ -8321,15 +8500,15 @@ msgstr "Eszközt&ár megjelenítése" msgid "Show Active Title in Window Title" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Ausztrália megjelenítése" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "" @@ -8337,7 +8516,7 @@ msgstr "" msgid "Show Debugging UI" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "ELF/DOL megjelenítése" @@ -8345,43 +8524,43 @@ msgstr "ELF/DOL megjelenítése" msgid "Show FPS" msgstr "FPS megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Képkockaszámoló megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Franciaország megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "GameCube megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Németország megjelenítése" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Bemeneti kijelző megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Olaszország megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Korea megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Eltérési szám megjelenítése" @@ -8389,7 +8568,7 @@ msgstr "Eltérési szám megjelenítése" msgid "Show Language:" msgstr "Nyelv megjelenítése:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Naplózási &beállítások megjelenítése" @@ -8401,7 +8580,7 @@ msgstr "NetPlay üzenetek mgejelenítése" msgid "Show NetPlay Ping" msgstr "NetPlay ping mgejelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Hollandia megjelenítése" @@ -8409,7 +8588,7 @@ msgstr "Hollandia megjelenítése" msgid "Show On-Screen Display Messages" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "PAL megjelenítése" @@ -8418,23 +8597,23 @@ msgstr "PAL megjelenítése" msgid "Show PC" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Platformok megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Régiók megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Oroszország megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "Spanyolország megjelenítése" @@ -8443,46 +8622,50 @@ msgstr "Spanyolország megjelenítése" msgid "Show Statistics" msgstr "Statisztikák megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "Rendszeróra megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Tajvan megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "USA megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Ismeretlen megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "WAD megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Wii megjelenítése" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Világ megjelenítése" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8514,7 +8697,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Egymás mellett" @@ -8530,16 +8713,31 @@ msgstr "Oldalra tartás kapcsoló" msgid "Sideways Wii Remote" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Egyszerűsített kínai" @@ -8547,7 +8745,7 @@ msgstr "Egyszerűsített kínai" msgid "Simulate DK Bongos" msgstr "DK Bongos szimulálása" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8574,7 +8772,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "Az EFB processzor hozzáférésének átugrása" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "" @@ -8582,7 +8780,7 @@ msgstr "" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8596,19 +8794,19 @@ msgstr "" msgid "Slider Bar" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Foglalat A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Foglalat B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "" @@ -8626,7 +8824,7 @@ msgstr "" msgid "Software Renderer" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8643,11 +8841,11 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "" @@ -8660,8 +8858,8 @@ msgid "Spain" msgstr "Spanyolország" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Spanyol" @@ -8669,7 +8867,7 @@ msgstr "Spanyol" msgid "Speaker Pan" msgstr "Hangszóró pásztázás" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Hangszóró hangerő:" @@ -8704,7 +8902,7 @@ msgstr "" msgid "Speed up Disc Transfer Rate" msgstr "A lemez adatátviteli arányának gyorsítása" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "" @@ -8716,16 +8914,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Szabványos vezérlő" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Start" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "&NetPlay indítása..." @@ -8733,11 +8931,13 @@ msgstr "&NetPlay indítása..." msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "&Bemenet rögzítésének indítása" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Felvétel indítása" @@ -8753,7 +8953,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "" @@ -8764,7 +8964,7 @@ msgstr "" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Kormánykerék" @@ -8792,19 +8992,19 @@ msgstr "" msgid "Step Over" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "" @@ -8813,20 +9013,20 @@ msgstr "" msgid "Stepping" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Sztereoszkópikus 3D mód:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Sztereoszkóp" @@ -8847,11 +9047,15 @@ msgstr "Kar" msgid "Stop" msgstr "Stop" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "" @@ -8865,7 +9069,7 @@ msgstr "EFB másolatok tárolása csak textúrának" msgid "Store XFB Copies to Texture Only" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8874,7 +9078,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8887,7 +9091,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Ablakméretűvé nyújtás" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "" @@ -8910,16 +9114,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -8929,11 +9133,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -8942,7 +9146,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "" @@ -8954,12 +9158,12 @@ msgstr "" msgid "Successfully extracted system data." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "" @@ -8971,16 +9175,16 @@ msgstr "" msgid "Support" msgstr "Támogatás" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -8988,11 +9192,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Szemcsere" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9004,50 +9208,62 @@ msgstr "" msgid "Swing" msgstr "Lengetés" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "" @@ -9061,37 +9277,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Rendszer nyelve:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "TAS bemenet" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "" @@ -9109,11 +9325,11 @@ msgstr "" msgid "Taiwan" msgstr "Tajvan" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Pillanatkép készítése" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Teszt" @@ -9122,7 +9338,7 @@ msgstr "Teszt" msgid "Texture Cache" msgstr "Textúra gyorsítótár" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9144,7 +9360,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9158,13 +9374,13 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "" @@ -9200,7 +9416,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9214,7 +9430,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "A behelyezni próbált lemez nem található." -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9236,19 +9452,19 @@ msgstr "" msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9298,7 +9514,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9309,7 +9525,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9326,7 +9542,7 @@ msgstr "" msgid "The hashes match!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9348,12 +9564,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9368,20 +9584,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "A kapott dekódolt AR kód nem tartalmaz sorokat." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9402,7 +9618,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9453,7 +9669,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "Nincs mit visszavonni!" @@ -9489,7 +9705,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "" @@ -9509,7 +9725,7 @@ msgstr "" "Az action replay szimulátor nem támogat olyan kódokat, amelyek magát az " "Action Replayt módosítják." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "" @@ -9549,7 +9765,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "" @@ -9567,27 +9787,27 @@ msgid "" "or freezes while running this game." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9647,13 +9867,13 @@ msgstr "" "Ez az érték összeszorzódik a grafikai beállításokban megadott mélység " "értékkel." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9673,7 +9893,7 @@ msgstr "" msgid "Threshold" msgstr "Küszöbérték" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "" @@ -9690,22 +9910,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Cím" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "Eddig:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "" @@ -9730,7 +9950,7 @@ msgid "Toggle Aspect Ratio" msgstr "Képarány kapcsoló" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "" @@ -9790,14 +10010,20 @@ msgstr "" msgid "Toolbar" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Fent" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Egymás alatt" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9832,20 +10058,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Hagyományos kínai" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "Átjárási szerver" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "Időtúllépés az átjárási szerver és a gazda csatlakozásakor" @@ -9875,20 +10101,12 @@ msgstr "Ravaszok" msgid "Type" msgstr "Típus" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9905,9 +10123,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -9935,10 +10153,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -9955,7 +10177,11 @@ msgid "" "Would you like to ignore this line and continue parsing?" msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -9967,15 +10193,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Állapot betöltésének visszavonása" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Állapot mentésének visszavonása" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "" @@ -9989,18 +10215,18 @@ msgid "" "title from the NAND without deleting its save data. Continue?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Ismeretlen" @@ -10008,7 +10234,7 @@ msgstr "Ismeretlen" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10018,7 +10244,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10028,15 +10254,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10044,19 +10270,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10064,7 +10290,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Végtelen" @@ -10080,13 +10306,28 @@ msgstr "" msgid "Unpacking" msgstr "Kicsomagolása" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10095,7 +10336,7 @@ msgstr "Fel" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Frissítés" @@ -10150,7 +10391,7 @@ msgstr "Függőleges kapcsoló" msgid "Upright Wii Remote" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "Használati statisztika-jelentés beállítások" @@ -10166,7 +10407,7 @@ msgstr "" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "PAL60 mód használata (EuRGB60)" @@ -10193,18 +10434,40 @@ msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" "Egyetlen mélységpuffert használ mindkét szemhez. Néhány játékhoz szükséges." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "" @@ -10217,18 +10480,18 @@ msgstr "" msgid "User Style:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10254,23 +10517,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10283,7 +10546,7 @@ msgstr "Segédprogram" msgid "V-Sync" msgstr "V-Sync" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Érték" @@ -10316,8 +10579,8 @@ msgstr "" msgid "Verifying" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "" @@ -10353,7 +10616,7 @@ msgstr "" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10380,7 +10643,7 @@ msgstr "Hangerő fel" msgid "Vulkan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "" @@ -10428,7 +10691,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10436,8 +10699,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10459,7 +10722,7 @@ msgid "" "unsure, leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10472,10 +10735,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Figyelem" @@ -10491,28 +10754,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10538,7 +10801,7 @@ msgstr "" msgid "Watch" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "" @@ -10567,11 +10830,11 @@ msgid "" "unsure, leave this checked.
" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Szélesvásznú hangolás" @@ -10587,11 +10850,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Wii NAND gyökér:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "" @@ -10599,8 +10862,8 @@ msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "" @@ -10613,11 +10876,11 @@ msgstr "" msgid "Wii Remote Orientation" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "" @@ -10633,7 +10896,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "" @@ -10641,7 +10904,7 @@ msgstr "" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "" @@ -10669,18 +10932,18 @@ msgid "World" msgstr "Világ" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "" @@ -10693,12 +10956,12 @@ msgid "Write to File" msgstr "Fájlba írás" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "" @@ -10706,7 +10969,7 @@ msgstr "" msgid "Write to Window" msgstr "Ablakba írás" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10717,7 +10980,7 @@ msgstr "" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "XF regiszter " @@ -10746,8 +11009,8 @@ msgid "Yellow" msgstr "Sárga" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "" @@ -10782,7 +11045,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10811,11 +11074,11 @@ msgstr "" msgid "You have to enter a name." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10824,7 +11087,7 @@ msgid "You must restart Dolphin in order for the change to take effect." msgstr "" "Újra kell indítanod a Dolphin emulátort a változtatások érvényesítéséhez." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "" @@ -10855,23 +11118,23 @@ msgstr "Zero 3 kód nem támogatott" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10890,13 +11153,13 @@ msgstr "" msgid "d3d12.dll could not be loaded." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -10912,31 +11175,31 @@ msgstr "" msgid "fake-completion" msgstr "fake-completion" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -10966,7 +11229,7 @@ msgstr "" msgid "on" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "" @@ -10975,7 +11238,7 @@ msgstr "" msgid "s" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -10984,7 +11247,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -11003,7 +11266,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -11022,7 +11285,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11030,7 +11293,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Languages/po/it.po b/Languages/po/it.po index 8b8cdbf3f9a3..f7865efd99de 100644 --- a/Languages/po/it.po +++ b/Languages/po/it.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-20 13:54+0000\n" -"Last-Translator: Mewster \n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Mewster , 2013-2022\n" "Language-Team: Italian (http://www.transifex.com/delroth/dolphin-emu/" "language/it/)\n" "Language: it\n" @@ -20,7 +20,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -32,7 +32,7 @@ msgstr "" "Poiché le immagini disco GameCube contengono pochi dati di controllo, " "potrebbero esserci problemi che Dolphin non è in grado di rilevare." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -44,7 +44,7 @@ msgstr "" "Poiché questo titolo non è per le console Wii originali, Dolphin non è in " "grado di verificarne la consistenza." -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -68,7 +68,7 @@ msgstr "" msgid " (Disc %1)" msgstr " (Disco %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "! Not" @@ -76,7 +76,7 @@ msgstr "! Not" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "\"{0}\" è un file GCM/ISO non valido, oppure non è un ISO GC/Wii." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "$ Variabile Utente" @@ -90,7 +90,7 @@ msgstr "$ Variabile Utente" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "% Modulo" @@ -106,17 +106,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "%1 %2" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "%1 %2 %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -135,7 +135,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (Revisione %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "%1 (Prefefinito)" @@ -175,7 +175,7 @@ msgstr "%1 MB (MEM2)" msgid "%1 doesn't support this feature on your system." msgstr "%1 non supporta questa funzionalità sul tuo sistema." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "%1 non supporta questa funzionalità." @@ -189,23 +189,23 @@ msgstr "" "%2 oggetti\n" "Frame Corrente: %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "%1 è entrato" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "%1 è uscito" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "%1 non è una ROM valida" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "%1 è in modalità golf" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "%1 range di memoria" @@ -214,11 +214,11 @@ msgstr "%1 range di memoria" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "Trovata %1 sessione" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "Trovate %1 sessioni" @@ -230,15 +230,15 @@ msgstr "%1%" msgid "%1% (%2 MHz)" msgstr "%1% (%2 MHz)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (Velocità Normale)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "%1, %2, %3, %4" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "%1: %2" @@ -254,30 +254,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2]: %3/%4 MiB" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "%1x Nativo (%2x%3)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "Non è stato possibile accede a %n indirizzo/i nella memoria emulata." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "Indirizzi rimanenti: %n" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "Indirizzi rimossi: %n" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "& And" @@ -297,7 +297,7 @@ msgstr "&3x" msgid "&4x" msgstr "&4x" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&A proposito di..." @@ -306,11 +306,11 @@ msgid "&Add Memory Breakpoint" msgstr "&Aggiungi Punto di Interruzione dei Dati" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "&Aggiungi Nuovo Codice..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "&Aggiungi Funzione" @@ -318,19 +318,19 @@ msgstr "&Aggiungi Funzione" msgid "&Add..." msgstr "&Aggiungi..." -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "Impostazioni &Audio" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "&Aggiornamento Automatico:" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "&Avvio Automatico" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "Avvia da &Backup DVD" @@ -338,11 +338,11 @@ msgstr "Avvia da &Backup DVD" msgid "&Borderless Window" msgstr "&Finestra Senza Bordi" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Punti di interruzione" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "&Bug Tracker" @@ -350,15 +350,15 @@ msgstr "&Bug Tracker" msgid "&Cancel" msgstr "&Annulla" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "&Gestore Trucchi" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "&Controlla la Presenza di Aggiornamenti..." -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "Pulis&ci Simboli" @@ -366,7 +366,7 @@ msgstr "Pulis&ci Simboli" msgid "&Clone..." msgstr "&Clona..." -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "&Codice" @@ -374,19 +374,20 @@ msgstr "&Codice" msgid "&Connected" msgstr "&Connesso" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "Impostazioni &Controller" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "&Copia indirizzo" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "&Nuovo..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "&Elimina" @@ -398,7 +399,7 @@ msgstr "&Elimina Espressione di Controllo" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "&Modifica Codice..." @@ -406,11 +407,11 @@ msgstr "&Modifica Codice..." msgid "&Edit..." msgstr "&Modifica..." -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "&Espelli Disco" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulazione" @@ -422,43 +423,47 @@ msgstr "&Esporta Salvataggio di Gioco..." msgid "&Export State..." msgstr "&Esporta Stato..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "&Esporta come .gci..." -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&File" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&Font..." -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "&Fotogramma per Fotogramma" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "Impostazioni &Camera Libera" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "&Genera Simboli Da" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "Repository &GitHub" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "&Vai all'inizio della funzione" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "Impostazioni &Video" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Aiuto" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "Impostazioni &Tasti di Scelta Rapida" @@ -470,11 +475,11 @@ msgstr "&Importa Salvataggio di Gioco..." msgid "&Import State..." msgstr "&Importa Stato..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "&Importa..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "&Inserisci blr" @@ -482,7 +487,7 @@ msgstr "&Inserisci blr" msgid "&Interframe Blending" msgstr "&Blending Interframe" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -490,23 +495,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "&Lingua:" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&Carica Stato di Gioco" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "Carica Mappa dei Simbo&li" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "&Blocca Widget" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Memoria" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "&Filmato" @@ -514,7 +519,7 @@ msgstr "&Filmato" msgid "&Mute" msgstr "&Muto" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "&Network" @@ -522,24 +527,24 @@ msgstr "&Network" msgid "&No" msgstr "&No" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Apri..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Opzioni" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "&Patch Funzioni HLE" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Pausa" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Gioca" @@ -547,11 +552,11 @@ msgstr "&Gioca" msgid "&Properties" msgstr "&Proprietà" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "Modalità &Sola-lettura" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Registri" @@ -560,24 +565,24 @@ msgid "&Remove" msgstr "&Rimuovi" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "&Rimuovi Codice" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "&Rinomina simbolo" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Resetta" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "&Resource Pack Manager" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "&Salva Mappa dei Simboli" @@ -585,11 +590,11 @@ msgstr "&Salva Mappa dei Simboli" msgid "&Scan e-Reader Card(s)..." msgstr "&Scansiona Carte e-Reader" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "&Limite Velocità" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Arresta" @@ -597,11 +602,11 @@ msgstr "&Arresta" msgid "&Theme:" msgstr "&Tema:" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "&Thread" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Strumenti" @@ -609,17 +614,17 @@ msgstr "&Strumenti" msgid "&Unload ROM" msgstr "&Rimuovi ROM" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Visualizza" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "(&W) Espressione di controllo" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Website" @@ -631,11 +636,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "&Sì" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "'%1' non trovato, non sono stati generati nomi dei simboli" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "'%1' non trovato, ora cercherò nomi di funzioni comuni" @@ -647,7 +652,7 @@ msgstr "(Nulla)" msgid "(host)" msgstr "(host)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(nessuno)" @@ -655,34 +660,34 @@ msgstr "(nessuno)" msgid "(ppc)" msgstr "(ppc)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "* Moltiplica" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "+ Aggiungi" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr ", Virgola" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "- Sottrai" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "--> %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "/ Dividi" @@ -690,6 +695,10 @@ msgstr "/ Dividi" msgid "128 Mbit (2043 blocks)" msgstr "128 Mbit (2043 blocchi)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "16 Bytes" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "16 Mbit (251 blocchi)" @@ -698,35 +707,35 @@ msgstr "16 Mbit (251 blocchi)" msgid "16-bit" msgstr "16-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "Signed Integer 16-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "Unsigned Integer 16-bit" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x Nativo (1280x1056) per 720p" @@ -738,25 +747,25 @@ msgstr "32 Mbit (507 blocchi)" msgid "32-bit" msgstr "32-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "Float 32-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "Signed Integer 32-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "Unsigned Integer 32-bit" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -770,28 +779,32 @@ msgstr "Profondità 3D" msgid "3x" msgstr "3x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x Nativo (1920x1584) per 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "4 Bytes" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Mbit (59 blocchi)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x Nativo (2560x2112) per 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x Nativo (3200x2640)" @@ -799,29 +812,33 @@ msgstr "5x Nativo (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Mbit (1019 blocchi)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "Float 64-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "Signed Integer 64-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "Unsigned Integer 64-bit" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x Nativo (3840x3168) per 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x Nativo (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "8 Bytes" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Mbit (123 blocchi)" @@ -830,25 +847,25 @@ msgstr "8 Mbit (123 blocchi)" msgid "8-bit" msgstr "8-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "Signed Integer 8-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "Unsigned Integer 8-bit" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x Nativo (5120x4224) per 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "< Minore-di" @@ -870,12 +887,12 @@ msgstr "" "Dolphin %1. La tua versione è %2.
Vuoi avviare l'aggiornamento?" "

Note di Rilascio:

" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "> Maggiore-di" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "Una sessione NetPlay è già in corso!" @@ -900,12 +917,12 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "Un disco è già in inserimento." -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" "Uno stato salvato non può essere caricato senza indicare quale gioco avviare." -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -913,7 +930,7 @@ msgstr "" "È già in corso uno spegnimento. I dati non salvati potrebbero venire persi " "se interrompi l'emulazione prima che termini. Forzare lo spegnimento?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" "La sincronizzazione è possibile soltanto durante l'esecuzione di un gioco " @@ -924,7 +941,7 @@ msgstr "" msgid "AD16" msgstr "AD16" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -962,8 +979,8 @@ msgstr "AR Code" msgid "AR Codes" msgstr "Codici AR" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -986,7 +1003,7 @@ msgstr "Accelerometro" msgid "Accuracy:" msgstr "Precisione:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "Action" @@ -1100,9 +1117,9 @@ msgstr "Rilevato adattatore" msgid "Adapter:" msgstr "Adattatore:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Aggiungi" @@ -1110,11 +1127,11 @@ msgstr "Aggiungi" msgid "Add &breakpoint" msgstr "Aggiungi &punto di interruzione" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "Aggiungi Nuovo Server DSU" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "Aggiungi un nuovo Dispositivo USB" @@ -1146,46 +1163,49 @@ msgstr "Aggiungi punto di interruzione dei dati" msgid "Add to &watch" msgstr "Aggiungi &espressione di controllo" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "Aggiungi espressione di controllo" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Aggiungi..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Indirizzo" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "Spazio degli Indirizzi" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "Spazio di indirizzo per stato CPU" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "Indirizzo:" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1250,39 +1270,43 @@ msgstr "Avanzate" msgid "Africa" msgstr "Africa" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "Allineato alla dimensione del tipo di dato" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "Tutti i File" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "Tutti i File (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "Tutti i file GC/Wii" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "Tutti i Salvataggi di Stati di Gioco (*.sav *.s##);; Tutti i File (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "Tutti i dispositivi" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "Tutti i file (*)" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "Tutti i codici dei giocatori sono sincronizzati." @@ -1291,19 +1315,19 @@ msgstr "Tutti i codici dei giocatori sono sincronizzati." msgid "All players' saves synchronized." msgstr "Tutti i salvataggi dei giocatori sono sincronizzati." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "Permetti Impostazioni Regione Discordanti" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "Permetti Report Statistiche d'Uso" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "Permetti Scrittura su Scheda SD" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." @@ -1311,7 +1335,7 @@ msgstr "" "Permette di manipolare la camera di gioco.

Nel " "dubbio, lascia deselezionato." -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1337,7 +1361,7 @@ msgstr "Sempre in &Cima" msgid "An inserted disc was expected but not found." msgstr "Impossibile trovare il disco di cui si era in attesa." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Anaglifo" @@ -1355,39 +1379,39 @@ msgstr "Angolo" msgid "Angular velocity to ignore and remap." msgstr "Velocità angolare da ignorare e rimappare." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "Filtro Anisotropico" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Filtraggio Anisotropico:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "Anti-Aliasing" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Anti-Aliasing:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "Qualunque Regione" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "Accoda signature a" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "Accoda ad un Fil&e di Signature Preesistente..." -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "A&pplica File Signature..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1403,15 +1427,15 @@ msgstr "Data dell'Apploader" msgid "Apply" msgstr "Applica" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "Applica file di signature" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "Mipmap Detection Arbitraria" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "Sei sicuro di voler eliminare '%1'?" @@ -1419,11 +1443,11 @@ msgstr "Sei sicuro di voler eliminare '%1'?" msgid "Are you sure you want to delete this file?" msgstr "Sei sicuro di voler eliminare questo file?" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "Sei sicuro di voler disinstallare questo pack?" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "Sei sicuro di voler chiudere NetPlay?" @@ -1436,11 +1460,11 @@ msgid "Aspect Ratio" msgstr "Rapporto d'aspetto" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Rapporto d'Aspetto:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Assegna Porte Controller" @@ -1448,7 +1472,7 @@ msgstr "Assegna Porte Controller" msgid "Assign Controllers" msgstr "Assegna Controller" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1474,7 +1498,7 @@ msgstr "Impostazioni Audio Stretching" msgid "Australia" msgstr "Australia" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "Autore" @@ -1486,15 +1510,15 @@ msgstr "Autori" msgid "Auto" msgstr "Auto" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Auto (Multiplo di 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "Impostazioni Aggiornamento Automatico" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1514,7 +1538,7 @@ msgstr "Ridimensiona Automaticamente la Finestra" msgid "Auto-Hide" msgstr "Nascondi Automaticamente" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "Individua automaticamente i moduli RSO?" @@ -1528,12 +1552,12 @@ msgstr "" "dolphin_emphasis>" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "Ausiliario" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "B" @@ -1551,11 +1575,11 @@ msgstr "" "un indirizzo MAC Nintendo GameCube valido. Genera un nuovo indirizzo MAC che " "cominci con 00:09:bf oppure 00:17:ab." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "BIOS:" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "Registro BP" @@ -1581,7 +1605,7 @@ msgstr "Impostazioni Motore" msgid "Backend:" msgstr "Motore:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Input in Background" @@ -1592,7 +1616,13 @@ msgstr "Input in Background" msgid "Backward" msgstr "all'Indietro" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "Inserito Valore non Valido" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "Indirizzo non valido." @@ -1600,19 +1630,20 @@ msgstr "Indirizzo non valido." msgid "Bad dump" msgstr "Dump invalido" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "Offset non valido." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "Valore non valido." #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Banner" @@ -1636,7 +1667,7 @@ msgstr "Priorità base" msgid "Basic" msgstr "Impostazioni di Base" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Impostazioni di Base" @@ -1644,7 +1675,7 @@ msgstr "Impostazioni di Base" msgid "Bass" msgstr "Basso" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" "La modalità batch non può essere usata senza indicare che gioco avviare." @@ -1653,11 +1684,11 @@ msgstr "" msgid "Battery" msgstr "Batteria" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "Beta (una volta al mese)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "BetterJoy, DS4Windows, ecc" @@ -1679,7 +1710,7 @@ msgstr "Bitrate (kbps):" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "Dimensione Blocco" @@ -1692,7 +1723,7 @@ msgstr "Dimensione Blocco:" msgid "Blocking" msgstr "Blocking" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Blocchi" @@ -1717,15 +1748,15 @@ msgstr "" "La modalità ponte Bluetooth è abilitata, ma Dolphin è stato compilato senza " "libusb. La modalità ponte non può essere utilizzata." -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "Avvia in Pausa" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "File di backup NAND BootMII (*.bin);;Tutti i File (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "File chiavi BootMii (*.bin);;Tutti i File (*)" @@ -1733,7 +1764,7 @@ msgstr "File chiavi BootMii (*.bin);;Tutti i File (*)" msgid "Borderless Fullscreen" msgstr "Schermo Intero senza bordi" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Sotto" @@ -1747,7 +1778,7 @@ msgid "Branches" msgstr "Branch" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "Interrompi" @@ -1756,7 +1787,7 @@ msgstr "Interrompi" msgid "Breakpoint" msgstr "Punto di interruzione" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" "Raggiunto punto di interruzione! Comando di uscita dall'istruzione annullato." @@ -1787,7 +1818,7 @@ msgstr "Errore Broadband Adapter" msgid "Broadband Adapter MAC Address" msgstr "Indirizzo MAC Adattatore Broadband" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "Sfoglia Sessioni %NetPlay..." @@ -1795,12 +1826,12 @@ msgstr "Sfoglia Sessioni %NetPlay..." msgid "Buffer Size:" msgstr "Dimensione Buffer:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "Dimensione del buffer cambiata a %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Buffer:" @@ -1845,11 +1876,11 @@ msgstr "Pulsanti" msgid "C Stick" msgstr "C Stick" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "C&rea File di Signature..." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "Registro CP" @@ -1884,7 +1915,7 @@ msgstr "" msgid "Calculate" msgstr "Calcola" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1909,15 +1940,15 @@ msgstr "Calibrazione" msgid "Calibration Period" msgstr "Tempo di calibrazione" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "Chiamata display list a %1 con dimensione %2" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "Stack di chiamate" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "Camera 1" @@ -1929,7 +1960,7 @@ msgstr "" "Campo di visione della telecamera (influisce sulla sensibilità del " "puntamento)." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "È possibile generare codici AR solo per valori nella memoria virtuale" @@ -1937,17 +1968,17 @@ msgstr "È possibile generare codici AR solo per valori nella memoria virtuale" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "Impossibile trovare Wii Remote con handle di connessione {0:02x}" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" "Non è possibile avviare una sessione NetPlay se un gioco è in esecuzione!" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "Annulla" @@ -1966,23 +1997,23 @@ msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" "Impossibile avviare questo WAD, non è stato possibile installarlo nella NAND." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "Non è possibile confrontare con l'ultimo valore della prima ricerca." -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "Impossibile trovare l'IPL GC" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "Non è possibile generare un codice AR per questo indirizzo." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "Non è possibile aggiornare senza risultati." -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "Impossibile avviare il gioco, l'IPL GC non è stato trovato" @@ -2004,7 +2035,7 @@ msgstr "Centra e Calibra" msgid "Change &Disc" msgstr "Cambia &Disco" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Cambia &Disco..." @@ -2012,15 +2043,15 @@ msgstr "Cambia &Disco..." msgid "Change Disc" msgstr "Cambia Disco" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "Cambia Automaticamente Disco" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "Inserire il disco {0}" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -2049,7 +2080,7 @@ msgstr "Cambiare i trucchi avrà effetto soltanto dopo aver riavviato il gioco." msgid "Channel Partition (%1)" msgstr "Partizione Canale (%1)" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Chat" @@ -2065,11 +2096,11 @@ msgstr "Cerca Codice" msgid "Cheats Manager" msgstr "Gestione Codici" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "Controlla NAND..." -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "Controlla cambiamenti nella Lista dei Giochi in Background" @@ -2085,7 +2116,7 @@ msgstr "" "Controlla di avere i permessi per eliminare il file o se il file è " "attualmente in uso." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "Checksum" @@ -2093,16 +2124,16 @@ msgstr "Checksum" msgid "China" msgstr "Cina" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Scegli un file da aprire" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "Scegli file di input prioritario" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "Scegli file di input secondario" @@ -2125,14 +2156,14 @@ msgid "Classic Controller" msgstr "Controller Classico" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Pulisci" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "Pulisci Cache" @@ -2149,28 +2180,47 @@ msgstr "&Clona e Modifica Codice" msgid "Close" msgstr "Chiudi" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "Co&nfigurazione" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Codice" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "Tool per Diff Codice" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "Aiuto Tool per Diff Codice" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "Il codice non è stato eseguito" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "Il codice è stato eseguito" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Codice:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "Codici ricevuti!" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "Combina &Due File Signature..." #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "Condiviso" @@ -2188,7 +2238,7 @@ msgstr "Compilazione degli Shader" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "Compressione" @@ -2201,7 +2251,7 @@ msgstr "Livello di Compressione:" msgid "Compression:" msgstr "Compressione:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "Condizione" @@ -2213,13 +2263,13 @@ msgstr "Condizionale" msgid "Config" msgstr "Configurazione" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Configura" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "Configura Controller" @@ -2227,21 +2277,21 @@ msgstr "Configura Controller" msgid "Configure Dolphin" msgstr "Configura Dolphin" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "Configura Input" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "Configura Output" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "Conferma" @@ -2254,26 +2304,26 @@ msgstr "Conferma cambio backend" msgid "Confirm on Stop" msgstr "Arresto su Conferma" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "Conferma" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Collega" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Collega Balance Board" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Collega Tastiera USB" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "Collega Wii Remote %1" @@ -2293,11 +2343,11 @@ msgstr "Collega Wii Remote 3" msgid "Connect Wii Remote 4" msgstr "Collega Wii Remote 4" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "Connetti Wii Remote" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "Connetti i Telecomandi Wii per i Controller Simulati" @@ -2309,15 +2359,19 @@ msgstr "Connettersi a internet per avviare l'aggiornamento online di sistema?" msgid "Connected" msgstr "Connesso" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "Connessione" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Tipo di Connessione" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "Il contenuto {0:08x} è corrotto." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Scansione Continua" @@ -2330,7 +2384,7 @@ msgstr "Controlla Modalità Golf NetPlay" msgid "Control Stick" msgstr "Control Stick" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "Profilo Controller" @@ -2358,7 +2412,7 @@ msgstr "Impostazioni Controller" msgid "Controllers" msgstr "Controller" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2370,7 +2424,7 @@ msgstr "" "valore alto crea un maggiore effetto di fuori-dallo-schermo, mentre un " "valore più basso potrebbe risultare meno fastidioso." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2384,7 +2438,7 @@ msgstr "" "risoluzione interna, migliori saranno le prestazioni." "

Nel dubbio, seleziona Nativo." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2418,12 +2472,12 @@ msgstr "" "Controlla se usare l'emulazione DSP di alto o basso livello. Il default è " "Attivo" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "Convergenza" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Convergenza:" @@ -2465,33 +2519,38 @@ msgstr "" "Conversione in corso...\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Copia" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "Copia &funzione" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "Copia &esadecimale" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "Copia Indirizzo" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "Copia non Riuscita" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "Copia Esadecimale" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "(&l) Copia riga di codice" @@ -2499,11 +2558,15 @@ msgstr "(&l) Copia riga di codice" msgid "Copy failed" msgstr "Copia non riuscita" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "Copia indirizzo tar&get" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "Copia su A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "Copia su B" @@ -2518,16 +2581,16 @@ msgstr "Core" msgid "Cost" msgstr "Costo" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "Impossibile comunicare con l'host." -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "Impossibile creare il client." -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "Impossibile creare il peer." @@ -2639,15 +2702,15 @@ msgstr "" "Se è così, allora potresti dover reimpostare la posizione della memory card " "nelle opzioni." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "Impossibile raggiungere il server centrale" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "Impossibile aprire il file." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "Impossibile leggere il file." @@ -2679,7 +2742,7 @@ msgstr "" "lascia deselezionato.
" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "Autore: " @@ -2705,11 +2768,11 @@ msgstr "" msgid "Crossfade" msgstr "Crossfade" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "Regione Corrente" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "Valore Attuale" @@ -2717,7 +2780,7 @@ msgstr "Valore Attuale" msgid "Current context" msgstr "Contesto corrente" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "Gioco corrente" @@ -2725,7 +2788,7 @@ msgstr "Gioco corrente" msgid "Current thread" msgstr "Thread corrente" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "Spazio degli Indirizzi Personalizzato" @@ -2759,7 +2822,7 @@ msgstr "" msgid "DJ Turntable" msgstr "Console DJ" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "Bongo DK" @@ -2787,7 +2850,7 @@ msgstr "Ricompilatore DSP LLE (lento)" msgid "DSU Client" msgstr "Client DSU" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2799,11 +2862,11 @@ msgstr "" "

Per istruzioni sulla configurazione,
consulta questa pagina." -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Dance Mat" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "Dati" @@ -2815,28 +2878,27 @@ msgstr "Partizione Dati (%1)" msgid "Data Transfer" msgstr "Trasferimento Dati" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "Tipo Dati" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "Dati nell'area del file che dovrebbero rimanere inutilizzati." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "Dati in un formato non riconosciuto o corrotti." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "Inconsistenza nei dati in GCMemcardManager, azione annullata." -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "Dati ricevuti!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "File Datel MaxDrive/Pro" @@ -2854,7 +2916,7 @@ msgid "Debug Only" msgstr "Solo Debug" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Debugging" @@ -2896,7 +2958,7 @@ msgstr "Riduci X" msgid "Decrease Y" msgstr "Riduci Y" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Default" @@ -2912,7 +2974,7 @@ msgstr "Dispositivo Predefinito" msgid "Default Font" msgstr "Font Predefinito" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "ISO Predefinita:" @@ -2943,7 +3005,7 @@ msgstr "" "stabilità.

Nel dubbio, lascia disabilitato." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2958,11 +3020,11 @@ msgid "Delete Selected Files..." msgstr "Elimina i File Selezionati..." #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "Eliminare il file esistente '{0}'?" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "Profondità" @@ -2970,21 +3032,21 @@ msgstr "Profondità" msgid "Depth Percentage:" msgstr "Percentuale Profondità:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Profondità:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Descrizione" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Descrizione:" @@ -2993,11 +3055,11 @@ msgstr "Descrizione:" msgid "Detached" msgstr "Scollegato" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Rileva" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "Individuazione Moduli RSO" @@ -3005,25 +3067,25 @@ msgstr "Individuazione Moduli RSO" msgid "Deterministic dual core:" msgstr "Dual core deterministico:" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "Dev (più volte al giorno)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Periferica" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "Device PID (es. 0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Impostazioni Periferica" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "Device VID (es. 057e)" @@ -3036,11 +3098,15 @@ msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" "Non è stato possibile riconoscere %1 come un file Riivolution XML valido." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "Diff" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "Oscura lo schermo dopo cinque minuti di inattività." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "Connessione Diretta" @@ -3077,7 +3143,7 @@ msgstr "Disabilita" msgid "Disable Bounding Box" msgstr "Disabilita Bounding Box" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "Disabilita Copia Filtro" @@ -3089,15 +3155,15 @@ msgstr "Disattiva Copie EFB VRAM" msgid "Disable Emulation Speed Limit" msgstr "Disabilita Limite Velocità di Emulazione" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "Disabilita Fastmem" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Disabilita Nebbia" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "Disabilita Cache JIT" @@ -3105,7 +3171,7 @@ msgstr "Disabilita Cache JIT" msgid "Disabled" msgstr "Disabilitato" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -3126,7 +3192,7 @@ msgstr "" "Blocca l'upscaling.

Nel dubbio, lascia " "deselezionato." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -3148,11 +3214,15 @@ msgstr "Disco" msgid "Discard" msgstr "Annulla" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "Tipo Display" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "Mostra valori in Hex" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -3175,25 +3245,25 @@ msgstr "Distanza" msgid "Distance of travel from neutral position." msgstr "Distanza di movimento dalla posizione neutrale." -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "Autorizzi Dolphin a inviare informazioni agli sviluppatori di Dolphin?" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "Vuoi aggiungere \"%1\" alla lista dei Percorsi di Gioco?" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "Vuoi cancellare la lista dei nomi dei simboli?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "Vuoi eliminare i %n file di salvataggio selezionati?" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Vuoi interrompere l'emulazione in corso?" @@ -3210,9 +3280,9 @@ msgstr "Log FIFO Dolphin (*.dff)" msgid "Dolphin Game Mod Preset" msgstr "Preset Dolphin Game Mod" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "File Mappa Dolphin (*.map)" @@ -3224,8 +3294,8 @@ msgstr "File Signature CSV Dolphin" msgid "Dolphin Signature File" msgstr "File Signature Dolphin" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Filmati TAS Dolphin (*.dtm)" @@ -3268,11 +3338,11 @@ msgstr "Dolphin non è riuscito a completare l'azione richiesta." msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "Dolphin è un emulatore di GameCube e Wii gratuito e open-source." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "Dolphin è troppo vecchio per il server traversal" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." @@ -3280,11 +3350,11 @@ msgstr "" "Dolphin non è in grado di verificare correttamente i file TGC, in quanto non " "sono dump di dischi effettivi." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "Dolphin non è in grado di verificare dischi senza licenza." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3301,7 +3371,7 @@ msgstr "Il sistema codici di Dolphin è attualmente disabilitato." msgid "Domain" msgstr "Dominio" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "Non aggiornare" @@ -3314,24 +3384,26 @@ msgid "Done compressing disc image." msgstr "Ho finito di comprimere l'immagine disco" #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "Double" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Giù" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "Scarica Codici" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "Scarica Codici dal Database WiiRD" @@ -3339,11 +3411,11 @@ msgstr "Scarica Codici dal Database WiiRD" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "Scarica le Copertine dei Giochi da GameTDB.com per la Modalità Griglia" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "Download completato" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "Scaricati %1 codici. (aggiunti %2)" @@ -3366,27 +3438,35 @@ msgstr "Tamburi" msgid "Dual Core" msgstr "Dual Core" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "Doppia Visuale" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Fittizio" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "Dump" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "Dump &ARAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "Dump &ExRAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "Dump &FakeVMEM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "Dump &MRAM" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Dump Audio" @@ -3398,7 +3478,7 @@ msgstr "Dump Texture Base" msgid "Dump EFB Target" msgstr "Dump del Target EFB" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Dump dei Frame" @@ -3410,7 +3490,7 @@ msgstr "Dump Mip Map" msgid "Dump Objects" msgstr "Dump degli Oggetti" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "Percorso Dump:" @@ -3526,16 +3606,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "Durata Rilascio Pulsante Turbo (in frame):" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Olandese" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "&Esci" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "Copia EFB %1" @@ -3551,7 +3631,7 @@ msgstr "" "potrebbe essere necessario un riavvio per permettere a Windows di " "riconoscere il nuovo driver." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3583,7 +3663,7 @@ msgstr "Effetto" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "Effettivo" @@ -3591,7 +3671,7 @@ msgstr "Effettivo" msgid "Effective priority" msgstr "Priorità effettiva" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "EiB" @@ -3603,7 +3683,7 @@ msgstr "Espelli Disco" msgid "Embedded Frame Buffer (EFB)" msgstr "Embedded Frame Buffer (EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Vuoto" @@ -3611,11 +3691,11 @@ msgstr "Vuoto" msgid "Emu Thread already running" msgstr "Thread dell'Emulatore già in esecuzione" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "Emula l'adattatore Bluetooth del Wii" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "Wii Remote Emulato" @@ -3634,8 +3714,12 @@ msgstr "" msgid "Emulation Speed" msgstr "Velocità di Emulazione" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "L'emulazione deve essere iniziata per poter registrare" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3651,7 +3735,7 @@ msgstr "Abilita Layer di Validazione API" msgid "Enable Audio Stretching" msgstr "Abilita Audio Stretching" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Abilita Trucchi" @@ -3663,7 +3747,7 @@ msgstr "Abilita RTC Custom" msgid "Enable Dual Core" msgstr "Abilita Dual Core" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Abilita Dual Core (aumenta la velocità)" @@ -3689,19 +3773,19 @@ msgid "Enable Progressive Scan" msgstr "Abilita Scansione Progressiva" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "Abilita Vibrazione" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Abilita Screen Saver" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Abilita Dati Altoparlante" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "Abilita Report Statistiche d'Uso" @@ -3733,7 +3817,7 @@ msgstr "" "Abilita il calcolo rapido delle unità a virgola mobile, necessario per " "alcuni giochi. (ON = Compatibilità, OFF = Velocità)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3745,7 +3829,7 @@ msgstr "" "problemi in una minoranza di titoli.

Nel dubbio, " "seleziona 1x." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3792,7 +3876,7 @@ msgstr "" "Attiva lo stretching dell'audio affinché corrisponda alla velocità " "d'emulazione" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3838,7 +3922,7 @@ msgstr "" msgid "Encoding" msgstr "Codifica" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3856,12 +3940,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet non è stato inizializzato" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Inglese" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3873,7 +3957,7 @@ msgstr "" "Inserisci l'indirizzo IP del dispositivo con il Client XLink Kai in " "esecuzione:" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "Inserisci ID del dispositivo USB" @@ -3887,11 +3971,11 @@ msgstr "Inserisci indirizzo da controllare:" msgid "Enter new Broadband Adapter MAC address:" msgstr "Inserisci il nuovo indirizzo MAC dell'Adattatore Broadband:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "Inserisci la password" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "Inserisci l'indirizzo del modulo RSO:" @@ -3900,65 +3984,68 @@ msgstr "Inserisci l'indirizzo del modulo RSO:" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Errore" @@ -3973,19 +4060,19 @@ msgstr "" "Errore nel caricamento della lingua selezionata. Ritorno alla lingua di " "sistema." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "Errore durante l'ottenimento della lista delle sessioni: %1" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "Si è verificato un errore durante il caricamento dei texture pack" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "Errore processando i codici." -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "Errore processando i dati." @@ -4005,7 +4092,7 @@ msgstr "Errore sincronizzando i dati di salvataggio!" msgid "Error writing file: {0}" msgstr "Errore durante la scrittura del file: {0}" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -4062,11 +4149,11 @@ msgstr "" "caricati. I giochi potrebbero non mostrare correttamente i caratteri, o " "crashare." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "Sono stati trovati errori in {0} blocchi nella partizione {1}." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" "Sono stati trovati errori in {0} blocchi inutilizzati nella partizione {1}." @@ -4076,11 +4163,55 @@ msgstr "" msgid "Euphoria" msgstr "Euforia" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Europa" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" +"Esempio:\n" +"Vuoi trovare la funzione eseguita al cambio dei PV.\n" +"1. Avvia la registrazione e gioca evitando la modifica dei PB, quindi premi " +"'Il codice non è stato eseguito'.\n" +"2. Perdi o acquisisci PV, quindi premi 'Il codice è stato eseguito'.\n" +"3. Ripeti i passi 1 o 2 per filtrare ulteriormente i risultati.\n" +"La lista di inclusioni (Il codice è stato eseguito) dovrebbe avere " +"registrazioni brevi basate su quello che vuoi.\n" +"\n" +"Premere 'Il codice è stato eseguito' due volte manterrà le funzioni che sono " +"state eseguite in entrambe le registrazioni. Il numero di esecuzioni verrà " +"aggiornato includendo le esecuzioni accadute nell'ultima registrazione. Le " +"esecuzioni totali riporteranno il numero totale di esecuzioni finché le " +"liste non verranno ripulite con Reset.\n" +"\n" +"Tasto destro -> 'Imposta blr' porrà un blr in cima al simbolo.\n" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "Escluso: %1" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "Escluso: 0" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "Ubershader Esclusivi" @@ -4129,14 +4260,14 @@ msgstr "Prevista nome variabile." msgid "Experimental" msgstr "Sperimentale" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Esporta tutti i Salvataggi Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "Esportazione non Riuscita" @@ -4144,15 +4275,15 @@ msgstr "Esportazione non Riuscita" msgid "Export Recording" msgstr "Esporta Registrazione" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Esporta Registrazione..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "Esporta File di Salvataggio" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "Esporta File di Salvataggio" @@ -4164,22 +4295,22 @@ msgstr "Esporta Salvataggio Wii" msgid "Export Wii Saves" msgstr "Esporta Salvataggi Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "Esporta come .&gcs..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "Esporta come .&sav..." -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "Esportato/i %n salvataggio/i" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Estensione" @@ -4192,7 +4323,7 @@ msgstr "Estensione Input di Movimento" msgid "Extension Motion Simulation" msgstr "Estensione Simulazione di Movimento" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "Esterno" @@ -4200,7 +4331,7 @@ msgstr "Esterno" msgid "External Frame Buffer (XFB)" msgstr "External Frame Buffer (XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "Estrai Certificati da NAND" @@ -4238,7 +4369,7 @@ msgid "FD" msgstr "FD" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "Lettore FIFO" @@ -4246,7 +4377,7 @@ msgstr "Lettore FIFO" msgid "Failed loading XML." msgstr "Impossibile caricare l'XML." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" @@ -4254,11 +4385,11 @@ msgstr "" "Fallita apertura della memory card:\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "Fallito l'inserimento di questa sessione all'indice NetPlay: %1" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "Impossibile aggiungere il file di signature '%1'" @@ -4270,7 +4401,7 @@ msgstr "Impossibile richiedere l'interfaccia per il ponte BT" msgid "Failed to connect to Redump.org" msgstr "Impossibile connettersi a Redump.org" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "Impossibile connettersi al server: %1" @@ -4291,14 +4422,14 @@ msgstr "Impossibile creare le risorse globali D3D12" msgid "Failed to create DXGI factory" msgstr "Impossibile creare la factory DXGI" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" "Impossibile eliminare il file di salvataggio NetPlay GBA{0}. Controlla di " "avere i corretti permessi di scrittura." -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" "Impossibile eliminare la memory card NetPlay. Controlla di avere i corretti " @@ -4312,19 +4443,19 @@ msgstr "Fallita la rimozione del file selezionato." msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "Impossibile disconnettere il driver kernel per il ponte BT: {0}" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Download dei codici non riuscito." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "Fallito il dump %1: Impossibile aprire il file" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "Fallito il dump %1: Impossibile scrivere il file" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "Fallita l'esportazione di %n su %1 file di salvataggio." @@ -4333,7 +4464,7 @@ msgstr "Fallita l'esportazione di %n su %1 file di salvataggio." msgid "Failed to export the following save files:" msgstr "Fallita l'esportazione dei seguenti file di salvataggio:" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "Fallita estrazione dei certificati dalla NAND" @@ -4359,18 +4490,18 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "Impossibile trovare uno o più simboli D3D" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "Importazione di \"%1\" non riuscita." -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" "Fallita l'importazione del salvataggio. Avvia il gioco una volta, poi " "riprova." -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." @@ -4378,7 +4509,7 @@ msgstr "" "Fallita l'importazione del salvataggio. Il file sembra corrotto o non è un " "file di salvataggio Wii valido." -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " @@ -4389,7 +4520,7 @@ msgstr "" "ripararla (Strumenti -> Gestisci NAND -> Controlla NAND...), quindi importa " "di nuovo il salvataggio." -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "Inizializzazione fallita" @@ -4408,16 +4539,16 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "Impossibile inizializzare le classi del renderer" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "Fallita installazione del pack: %1" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "Fallita installazione del titolo nella NAND." -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" @@ -4425,8 +4556,8 @@ msgstr "" "Fallito l'ascolto sulla porta %1. C'è già un'altra istanza di un server " "NetPlay in esecuzione?" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "Fallito caricamento del modulo RSO a %1" @@ -4438,11 +4569,11 @@ msgstr "Caricamento d3d11.dll non riuscito" msgid "Failed to load dxgi.dll" msgstr "Caricamento dxgi.dll non riuscito" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "Fallita l'apertura del file mappa '%1'" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "Impossibile caricare l'eseguibile in memoria." @@ -4455,7 +4586,7 @@ msgstr "" "l'aggiornamento KB4019990." #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "Fallita l'apertura di '%1'" @@ -4486,11 +4617,11 @@ msgstr "" "Impossibile aprire il file con un editor esterno.\n" "Assicurati di avere un'applicazione di default per l'apertura dei file INI." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "Impossibile aprire il file." -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "Impossibile avviare il server" @@ -4499,7 +4630,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "Fallita l'apertura del file di input \"%1\"." #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4514,7 +4645,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "Fallito parsing dei dati di Redump.org" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "Non è stato possibile convertire il valore in input nel tipo indicato." @@ -4522,26 +4653,26 @@ msgstr "Non è stato possibile convertire il valore in input nel tipo indicato." msgid "Failed to read DFF file." msgstr "Lettura del file DFF non riuscita." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "Accesso non riuscito al file." #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "Fallita la lettura dal file di input \"{0}\"." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" "Impossibile leggere i file di salvataggio selezionati dalla memory card." -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "Fallita lettura di {0}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "Rimozione del file non riuscita." @@ -4559,19 +4690,19 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "Fallita rimozione del titolo dalla NAND" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" "Impossibile resettare la cartella NetPlay GCI. Controlla di avere i corretti " "permessi di scrittura." -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" "Impossibile resettare la cartella NetPlay NAND. Controlla di avere i " "corretti permessi di scrittura." -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" "Impossibile resettare la cartella di reindirizzamento NetPlay. Controlla di " @@ -4581,23 +4712,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "Fallito il salvataggio del log FIFO." -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "Impossibile salvare la mappa del codice nel percorso '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "Impossibile salvare il file di signature '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "Impossibile salvare la mappa dei simboli nel percorso '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "Impossibile salvare nel file di signature '%1'" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "Fallista disinstallazione del pack: %1" @@ -4605,11 +4736,11 @@ msgstr "Fallista disinstallazione del pack: %1" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Scrittura di BT.DINF su SYSCONF non riuscita" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "Fallita scrittura dei dati Mii." -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "Fallita scrittura del salvataggio Wii." @@ -4617,22 +4748,22 @@ msgstr "Fallita scrittura del salvataggio Wii." msgid "Failed to write config file!" msgstr "Fallita la scrittura del file di configurazione!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "Impossibile scrivere la memory card modificata sul disco." -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "Fallita scrittura del salvataggio redirezionato." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "Impossibile scrivere il salvataggio su disco." #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4643,19 +4774,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "Errore" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "Ritardo Input Imparziale" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "Regione di Fallback" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "Regione di Fallback:" @@ -4668,7 +4799,7 @@ msgstr "Rapida" msgid "Fast Depth Calculation" msgstr "Calcolo Rapido della Profondità" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4687,7 +4818,7 @@ msgstr "Dettagli del File" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "Formato del File" @@ -4701,18 +4832,18 @@ msgstr "Info File" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Nome File" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "Percorso:" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Dimensioni del File" @@ -4720,11 +4851,11 @@ msgstr "Dimensioni del File" msgid "File Size:" msgstr "Dimensione del File:" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "Il file non contiene codici." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "Nome file" @@ -4740,12 +4871,12 @@ msgstr "" "I file specificati nel flie M3U \"{0}\" non esistono:\n" "{1}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" "Le dimensioni non corrispondono a nessuna Memory Card GameCube conosciuta." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" "La dimensione nell'intestazione non corrisponde alla dimensione effettiva " @@ -4755,15 +4886,15 @@ msgstr "" msgid "Filesystem" msgstr "Filesystem" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "Filtra Simboli" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "Filtri" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4776,11 +4907,11 @@ msgstr "" "

Nel dubbio, lascia deselezionato." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "Trova &Successivo" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "Trova &Precedente" @@ -4796,18 +4927,22 @@ msgstr "" "Completando l'aggiornamento...\n" "Potrebbe volerci un po'." -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "Prima Persona" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Ripara Checksum" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "Ripara Checksum Falliti" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "Allineamento Fisso" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4817,13 +4952,14 @@ msgstr "Flag" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "Float" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "(b) Segui flusso" @@ -4853,7 +4989,7 @@ msgstr "" msgid "Force 16:9" msgstr "Forza 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "Forza Colore 24-Bit" @@ -4861,15 +4997,15 @@ msgstr "Forza Colore 24-Bit" msgid "Force 4:3" msgstr "Forza 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "Forza Ascolto su Porta:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Forza Filtraggio Texture" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4886,7 +5022,7 @@ msgstr "" "

Nel dubbio, lascia deselezionato." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4909,21 +5045,21 @@ msgstr "Formato:" msgid "Forward" msgstr "in Avanti" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Inoltra porta (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "Trovati %1 risultati per \"%2\"" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "Indirizzi trovatI: %n" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "Frame %1" @@ -4952,7 +5088,7 @@ msgstr "Dumping dei Frame" msgid "Frame Range" msgstr "Intervallo Fotogramma" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "L'immagine del/dei frame '{0}' esiste già. Vuoi Sovrascrivere?" @@ -4964,19 +5100,19 @@ msgstr "Fotogrammi da Registrare:" msgid "France" msgstr "Francia" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "Blocchi Liberi: %1" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "Blocchi Liberi: %1" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "Tipo Controlli Camera Libera" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "Controller Camera Libera %1" @@ -4984,7 +5120,7 @@ msgstr "Controller Camera Libera %1" msgid "Free Look Settings" msgstr "Impostazioni Camera Libera" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -5432,7 +5568,7 @@ msgstr "Verde Sinistro" msgid "Green Right" msgstr "Verde Destro" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "Vista a Griglia" @@ -5445,7 +5581,7 @@ msgstr "Chitarra" msgid "Gyroscope" msgstr "Giroscopio" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5458,13 +5594,30 @@ msgstr "Hacks" msgid "Head" msgstr "Testa" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "Aiuto" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" -msgstr "Stringa Hex" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "Hex" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "Hex 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "Hex 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "Hex 8" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" +msgstr "Hex Byte String" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 @@ -5475,19 +5628,19 @@ msgstr "Esadecimale" msgid "Hide" msgstr "Nascondi" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "Nascondi Tutto" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "Nascondi Sessioni In-Game" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "Nascondi Sessioni Incompatibili" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "Nascondi GBA Remoti" @@ -5505,21 +5658,27 @@ msgstr "Più alta" msgid "Hit Strength" msgstr "Forza" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "Passaggi" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "FOV Orizzontale" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Host" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "Codice Host:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "Autorità Input Host" @@ -5527,7 +5686,7 @@ msgstr "Autorità Input Host" msgid "Host Size" msgstr "Dimensione Host" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5539,11 +5698,11 @@ msgstr "" "Adatto a giochi casual con più di 3 giocatori, ma potenzialmente instabile " "su connessioni ad alta latenza." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "Autorità input host disattivata" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "Autorità input host attivata" @@ -5555,7 +5714,7 @@ msgstr "Host con NetPlay" msgid "Hostname" msgstr "Hostname" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "Impostazioni Tasti di Scelta Rapida" @@ -5612,11 +5771,11 @@ msgstr "" "di consultare https://dolphin-emu.org/docs/guides/wii-network-guide/ per " "istruzioni su come impostare le connettività Wii" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "Indirizzo IP:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "Impostazioni IPL" @@ -5625,7 +5784,7 @@ msgid "IR" msgstr "Puntamento IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "Sensibilità IR:" @@ -5662,11 +5821,11 @@ msgstr "" "successivi. Può comprimere efficientemente sia i dati inutilizzati sia i " "dati criptati Wii." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Icona" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" @@ -5677,11 +5836,11 @@ msgstr "" "Adatto a giochi a turni dipendenti dalle tempistiche dei controlli, come il " "golf." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "Generazione Identità" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5749,7 +5908,7 @@ msgstr "Ignora Cambiamenti di Formato" msgid "Ignore for this session" msgstr "Ignora per questa sessione" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5761,7 +5920,7 @@ msgstr "" "in un ristretto numero di titoli.

Nel dubbio, " "lascia selezionato." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5793,30 +5952,30 @@ msgstr "" "

Nel dubbio, lascia deselezionato." -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "Importa Backup NAND BootMII..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "Importazione non Riuscita" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "Importa File di Salvataggio" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Importa Salvataggio Wii..." -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "Importazione di backup NAND in corso" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" @@ -5825,11 +5984,20 @@ msgstr "" "Importazione del backup NAND in corso\n" " Tempo trascorso: %1s" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "In gioco?" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "Incluso: %1" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "Incluso: 0" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5887,8 +6055,8 @@ msgstr "Info" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Informazioni" @@ -5897,10 +6065,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "Disabilita lo Screensaver durante l'Emulazione" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Input" @@ -5914,16 +6082,22 @@ msgstr "Forza richiesta per l'attivazione" msgid "Input strength to ignore and remap." msgstr "Forza da ignorare e rimappare." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "Inserisci &nop" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Inserisci SD Card" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "Ispezionato" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "Installa" @@ -5935,7 +6109,7 @@ msgstr "Partizione di Installazione (%1)" msgid "Install Update" msgstr "Installa Aggiornamento" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "Installa WAD..." @@ -5951,11 +6125,11 @@ msgstr "Istr." msgid "Instruction" msgstr "Istruzione" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "Punto di Interruzione" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "Istruzione:" @@ -5973,7 +6147,7 @@ msgid "Interface" msgstr "Interfaccia" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Errore Interno LZO - compressione non riuscita" @@ -5982,7 +6156,7 @@ msgstr "Errore Interno LZO - compressione non riuscita" msgid "Internal LZO Error - decompression failed" msgstr "Errore Interno LZO - decompressione non riuscita" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" @@ -5990,21 +6164,21 @@ msgstr "" "Errore Interno LZO - decompressione non riuscita ({0}) ({1}, {2})\n" "Prova a caricare di nuovo lo stato di salvataggio" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Errore Interno LZO - lzo_init() fallito" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "Risoluzione Interna" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Risoluzione Interna:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "Errore interno durante la generazione del codice AR." @@ -6012,11 +6186,11 @@ msgstr "Errore interno durante la generazione del codice AR." msgid "Interpreter (slowest)" msgstr "Interpreter (il più lento)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "Interpreter Core" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "Espressione non Valida" @@ -6024,7 +6198,7 @@ msgstr "Espressione non Valida" msgid "Invalid Mixed Code" msgstr "Codice Misto Invalido" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "Pack non valido %1 fornito: %2" @@ -6033,15 +6207,15 @@ msgstr "Pack non valido %1 fornito: %2" msgid "Invalid Player ID" msgstr "ID Giocatore non valido" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "Indirizzo del modulo RSO non valido: %1" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "Stack di chiamate non valido" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "Checksum invalidi." @@ -6049,11 +6223,11 @@ msgstr "Checksum invalidi." msgid "Invalid game." msgstr "Gioco non valido." -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "Host non valido" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "Input non valido nel campo \"%1\"" @@ -6066,33 +6240,33 @@ msgstr "Input non valido" msgid "Invalid literal." msgstr "Letterale non valido." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "Non sono stati forniti parametri validi alla ricerca." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "Inserita password non valida." -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "File di registrazione non valido" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Parametri di ricerca non validi (nessun oggetto selezionato)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Stringa di ricerca non valida (impossibile convertire in numero)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "" "Stringa di ricerca non valida (solo stringhe di lunghezza pari sono " "supportate)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "Title ID non valido." @@ -6101,8 +6275,8 @@ msgid "Invalid watch address: %1" msgstr "Indirizzo di controllo non valido: %1" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Italiano" @@ -6110,11 +6284,11 @@ msgstr "Italiano" msgid "Italy" msgstr "Italia" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "Disattiva Linking dei Blocchi JIT" @@ -6122,47 +6296,47 @@ msgstr "Disattiva Linking dei Blocchi JIT" msgid "JIT Blocks" msgstr "Blocchi JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "JIT Branch Off" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "JIT FloatingPoint Off" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "JIT Integer Off" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "JIT LoadStore Floating Off" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "JIT LoadStore Off" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "JIT LoadStore Paired Off" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "JIT LoadStore lXz Off" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "JIT LoadStore lbzx Off" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "JIT LoadStore lwz Off" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "JIT Off (JIT Core)" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "JIT Paired Off" @@ -6174,11 +6348,11 @@ msgstr "Ricompilatore JIT per ARM64 (consigliato)" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "Ricompilatore JIT per x86-64 (consigliato)" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "Registro Cache JIT Off" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "JIT SystemRegisters Off" @@ -6192,12 +6366,12 @@ msgstr "" "cache. Questo non dovrebbe mai accadere. Per cortesia segnala questo " "problema nel bug tracker. Dolphin ora terminerà." -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Giappone" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Giapponese" @@ -6217,12 +6391,12 @@ msgstr "Finestra sempre in cima" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "Mantieni gli indirizzi il cui valore in memoria" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Tastiera" @@ -6235,20 +6409,20 @@ msgstr "Tastiera" msgid "Keys" msgstr "Tasti" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "KiB" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Kicka Giocatore" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Corea" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Coreano" @@ -6276,7 +6450,7 @@ msgstr "Salva LR" msgid "Label" msgstr "Etichetta" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "Ultimo Valore" @@ -6362,15 +6536,15 @@ msgstr "" msgid "License" msgstr "Licenza" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "Limite Velocità di Chunked Upload:" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "Lista Colonne" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "Vista a Lista" @@ -6379,17 +6553,17 @@ msgid "Listening" msgstr "Ascolto" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Carica" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "(&B) Carica Mappa Invalida..." -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "(&O) Carica Altra Mappa..." @@ -6397,7 +6571,7 @@ msgstr "(&O) Carica Altra Mappa..." msgid "Load Custom Textures" msgstr "Carica Texture Personalizzate" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "Carica Main Menu GameCube" @@ -6406,7 +6580,7 @@ msgstr "Carica Main Menu GameCube" msgid "Load Last State" msgstr "Carica Ultimo Stato di Gioco" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "Carica Percorso:" @@ -6499,23 +6673,23 @@ msgstr "Carica Stato di Gioco da Slot 8" msgid "Load State Slot 9" msgstr "Carica Stato di Gioco da Slot 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "Carica Stato da File" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "Carica Stato dallo Slot Selezionato" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "Carica Stato da Slot" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "Carica Salvataggio Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "Carica Menu di Sistema Wii %1" @@ -6523,12 +6697,12 @@ msgstr "Carica Menu di Sistema Wii %1" msgid "Load from Selected Slot" msgstr "Carica dallo Slot Selezionato" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "Carica da Slot %1 - %2" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "Carica mappa" @@ -6536,7 +6710,7 @@ msgstr "Carica mappa" msgid "Load..." msgstr "Carica..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "Caricati simboli da '%1'" @@ -6550,7 +6724,7 @@ msgstr "" "User/Load/DynamicInputTextures/<game_id>/.

Nel " "dubbio, lascia deselezionato." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "Locale" @@ -6559,7 +6733,7 @@ msgid "Lock Mouse Cursor" msgstr "Blocca il Cursore del Mouse" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Log" @@ -6567,7 +6741,7 @@ msgstr "Log" msgid "Log Configuration" msgstr "Configurazione Log" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "Log della Copertura delle Istruzioni JIT" @@ -6598,7 +6772,7 @@ msgstr "" msgid "Loop" msgstr "Loop" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "Persa la connessione al server NetPlay..." @@ -6627,7 +6801,7 @@ msgstr "MMU" msgid "MORIBUND" msgstr "MORIBUND" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "File Gameshark MadCatz" @@ -6637,7 +6811,7 @@ msgstr "Levetta Principale" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Produttore" @@ -6646,7 +6820,7 @@ msgstr "Produttore" msgid "Maker:" msgstr "Produttore:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6659,7 +6833,7 @@ msgstr "" "

Nel dubbio, lascia deselezionato." -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "Gestisci NAND" @@ -6667,7 +6841,7 @@ msgstr "Gestisci NAND" msgid "Manual Texture Sampling" msgstr "Texture Sampling Manuale" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "Mappatura" @@ -6675,15 +6849,15 @@ msgstr "Mappatura" msgid "Mask ROM" msgstr "Maschera ROM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "Trovata Corrispondenza" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "Buffer Massimo:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "Dimensione massima del buffer cambiata a %1" @@ -6692,7 +6866,7 @@ msgstr "Dimensione massima del buffer cambiata a %1" msgid "Maximum tilt angle." msgstr "Massimo angolo di inclinazione" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "" "Potrebbe causare rallentamenti all'interno del Menu Wii e in alcuni giochi." @@ -6702,11 +6876,11 @@ msgstr "" msgid "Medium" msgstr "Medio" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "Memoria" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "Punto di Interruzione dei Dati" @@ -6714,7 +6888,7 @@ msgstr "Punto di Interruzione dei Dati" msgid "Memory Card" msgstr "Memory Card" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "Memory Card Manager" @@ -6738,7 +6912,7 @@ msgstr "" msgid "Memory Override" msgstr "Override Memoria" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "Opzioni punti di interruzione" @@ -6755,7 +6929,7 @@ msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" "MemoryCard: Write chiamata su indirizzo di destinazione non valido ({0:#x})" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6767,13 +6941,13 @@ msgstr "" "consiglia di mantenere un backup di entrambe le NAND. Sei sicuro di voler " "continuare?" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "MiB" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Microfono" @@ -6781,21 +6955,21 @@ msgstr "Microfono" msgid "Misc" msgstr "Varie" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Impostazioni Varie" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" "Discordanza tra il conto dei blocchi liberi nell'intestazione e i blocchi " "effettivamente liberi." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "Discordanza tra le strutture dati interne." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6829,12 +7003,12 @@ msgstr "" "

Nel dubbio, lascia deselezionato." -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "Moduli trovati: %1" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "Mono" @@ -6846,11 +7020,11 @@ msgstr "Ombre Monoscopiche" msgid "Monospaced Font" msgstr "Carattere a spaziatura fissa" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "Input di Movimento" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "Simulazione di Movimento" @@ -6894,10 +7068,10 @@ msgstr "Filmato" msgid "N&o to All" msgstr "N&o a Tutto" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "Controllo NAND" @@ -6905,26 +7079,26 @@ msgstr "Controllo NAND" msgid "NKit Warning" msgstr "Attenzione NKit" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "NTSC-K" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "Nome" @@ -6936,37 +7110,37 @@ msgstr "Nome del nuovo tag:" msgid "Name of the tag to remove:" msgstr "Nome del tag da rimuovere:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "Nome della sessione da visualizzare nel server browser" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Nome:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Nativo (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "File GCI Nativo" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "NetPlay" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "Browser Sessioni NetPlay" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "Impostazioni NetPlay" @@ -6974,18 +7148,18 @@ msgstr "Impostazioni NetPlay" msgid "Netherlands" msgstr "Olanda" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "Netplay desincronizzato su NetPlay_GetButtonPress()" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" "Il NetPlay è stato desincronizzato. Non è possibile ripristinare la " "situazione." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "Network" @@ -7006,11 +7180,11 @@ msgstr "Disabilita Aggiornamento Automatico" msgid "New" msgstr "Nuovo" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "Nuovo Punto di Interruzione" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "Nuova Ricerca" @@ -7018,7 +7192,7 @@ msgstr "Nuova Ricerca" msgid "New Tag..." msgstr "Nuovo Tag..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "Generata Nuova Identità" @@ -7035,7 +7209,7 @@ msgstr "Nuovo Tag" msgid "Next Game Profile" msgstr "Profilo di Gioco Successivo" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "Corrispondenza Successiva" @@ -7044,17 +7218,17 @@ msgstr "Corrispondenza Successiva" msgid "Next Profile" msgstr "Profilo Successivo" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "Il nickname è troppo lungo." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Nickname:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "No" @@ -7062,6 +7236,10 @@ msgstr "No" msgid "No Adapter Detected" msgstr "Nessun Adattatore Rilevato" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "Nessun Allineamento" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "Nessun Output Audio" @@ -7072,24 +7250,20 @@ msgstr "Nessun Output Audio" msgid "No Compression" msgstr "Nessuna Compressione" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "Nessuna Corrispondenza" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "Nessun Valore Inserito" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Non è disponibile una descrizione" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "Nessun errore." @@ -7101,15 +7275,15 @@ msgstr "Nessuna estensione selezionata." msgid "No file loaded / recorded." msgstr "Nessun file caricato / registrato." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "Nessun gioco è in esecuzione." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "Nessun gioco in esecuzione." -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "Non sono stati rilevati problemi." @@ -7117,11 +7291,15 @@ msgstr "Non sono stati rilevati problemi." msgid "No paths found in the M3U file \"{0}\"" msgstr "Non sono stati trovati percorsi nel file M3U \"{0}\"" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "Non sono rimaste funzioni valide. Reset." + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "Non sono stati rilevati problemi." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -7136,7 +7314,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "Nessun profilo trovato per l'impostazione di gioco '{0}'" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "Nessuna registrazione caricata." @@ -7144,20 +7322,16 @@ msgstr "Nessuna registrazione caricata." msgid "No save data found." msgstr "Non sono stati trovati dati di salvataggio." -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" "Non è stato possibile trovare il file undo.dtm, l'annullamento del " "caricamento dello stato verrà interrotto per evitare la desincronizzazione " "del filmato." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "Nessun valore fornito." - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -7167,7 +7341,7 @@ msgstr "Nessuno" msgid "North America" msgstr "Nord America" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "Non Trovato" @@ -7175,11 +7349,11 @@ msgstr "Non Trovato" msgid "Not Set" msgstr "Non Impostato" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "Non tutti i giocatori hanno il gioco. Vuoi davvero continuare?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -7189,7 +7363,7 @@ msgstr "" "Non ci sono abbastanza blocchi liberi nella memory card di destinazione. Ne " "sono necessari almeno %n." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -7253,13 +7427,13 @@ msgstr "Orientamento Nunchuk" msgid "Nunchuk Stick" msgstr "Levetta Nunchuk" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "OK" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "Oggetto %1" @@ -7272,11 +7446,11 @@ msgid "Oceania" msgstr "Oceania" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Off" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "Offset" @@ -7288,11 +7462,11 @@ msgstr "On" msgid "On Movement" msgstr "Al Movimento" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "&Documentazione Online" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" @@ -7300,7 +7474,7 @@ msgstr "" "Inserisci solo simboli con prefisso:\n" "(Vuoto per tutti i simboli)" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -7317,7 +7491,7 @@ msgstr "Apri" msgid "Open &Containing Folder" msgstr "Apri &Percorso File" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "Apri Directory..." @@ -7365,7 +7539,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "Operatori" @@ -7383,7 +7557,7 @@ msgstr "Opzioni" msgid "Orange" msgstr "Arancione" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "Orbita" @@ -7391,7 +7565,7 @@ msgstr "Orbita" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Altro" @@ -7404,11 +7578,11 @@ msgstr "Altra Partizione (%1)" msgid "Other State Hotkeys" msgstr "Altri Tasti Rapidi" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "Gestione Altri Stati di Gioco" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "Altro gioco..." @@ -7416,12 +7590,12 @@ msgstr "Altro gioco..." msgid "Overlay Information" msgstr "Informazioni in sovraimpressione" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "&Riproduci Registrazione Input..." -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -7446,7 +7620,7 @@ msgstr "File immagine PNG (*.png);; Tutti i File (*)" msgid "PPC Size" msgstr "Dimensione PPC" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "PPC vs Host" @@ -7463,7 +7637,7 @@ msgstr "Pad" msgid "Parameters" msgstr "Parametri" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "Leggi come Esadecimale" @@ -7472,23 +7646,23 @@ msgstr "Leggi come Esadecimale" msgid "Parsing Error" msgstr "Analisi dell'Errore" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "Passivo" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "Usa Adattatore Bluetooth Ponte" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "Password" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "Password per entrare nella tua partita (lascia vuoto se non la vuoi)" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "Password?" @@ -7509,7 +7683,7 @@ msgid "Path:" msgstr "Percorso:" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Percorsi" @@ -7517,7 +7691,7 @@ msgstr "Percorsi" msgid "Pause" msgstr "Pausa" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "Pausa al Termine del Filmato" @@ -7540,11 +7714,11 @@ msgstr "Velocità massima per raggiungere la posizione neutrale" msgid "Peak velocity of outward swing movements." msgstr "Velocità massima per oscillare verso l'esterno" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Illuminazione Per-Pixel" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "Avviare Aggiornamento di Sistema Online" @@ -7554,23 +7728,23 @@ msgstr "Avvia l'Aggiornamento di Sistema" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "Fisico" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "Spazio dell'indirizzo fisico" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "PiB" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "Scegli un font di debug" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "Ping" @@ -7583,7 +7757,7 @@ msgid "Pitch Up" msgstr "Inclinazione in Alto" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Piattaforma" @@ -7603,16 +7777,16 @@ msgstr "Riproduci Registrazione" msgid "Playback Options" msgstr "Opzioni di Riproduzione" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "Giocatore" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Giocatori" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7624,29 +7798,29 @@ msgstr "" msgid "Point" msgstr "Puntamento" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "Porta %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "ROM Porta %1:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "Porta:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "Rilevato possibile desync: %1 potrebbe aver desyncato al frame %2" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "Effetto di Post-Processing" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Effetto di Post-Processing:" @@ -7658,15 +7832,15 @@ msgstr "Configura Shader di Post-Processing" msgid "Prefetch Custom Textures" msgstr "Precarica Texture Personalizzate" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "Termine prematuro del filmato in PlayController. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "Termine prematuro del filmato in PlayWiimote. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "Termine prematuro del filmato in PlayWiimote. {0} > {1}" @@ -7710,7 +7884,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "Profilo di Gioco Precedente" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "Corrispondenza Precedente" @@ -7721,15 +7895,15 @@ msgstr "Profilo Precedente" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "Primitiva %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "Privato" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "Privato e Pubblico" @@ -7737,7 +7911,7 @@ msgstr "Privato e Pubblico" msgid "Problem" msgstr "Problema" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." @@ -7745,7 +7919,7 @@ msgstr "" "Sono stati rilevati problemi di alta severità. Il gioco molto probabilmente " "non funzionerà." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." @@ -7753,7 +7927,7 @@ msgstr "" "Sono stati rilevati problemi di bassa severità. Probabilmente non " "influenzeranno il gioco." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." @@ -7761,7 +7935,7 @@ msgstr "" "Sono stati rilevati problemi di media severità. Il gioco o alcune sue parti " "potrebbero non funzionare correttamente." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Profilo" @@ -7775,15 +7949,15 @@ msgstr "Program Counter" msgid "Progress" msgstr "Avanzamento" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "Pubblica" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "Pulisci Cache Lista Giochi" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "Posiziona le ROM IPL in User/GC/." @@ -7795,11 +7969,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "LTR" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "Impossibile abilitare Quality of Service (QoS)." -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "Quality of Service (QoS) abilitato con successo." @@ -7809,12 +7983,12 @@ msgstr "Qualità del decoder DPLII. La latenza audio aumenta con la qualità." #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Conferma" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Esci" @@ -7834,11 +8008,11 @@ msgstr "R-Analogico" msgid "READY" msgstr "PRONTO" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "Moduli RSO" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "Auto-rilevamento RSO" @@ -7851,44 +8025,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "Immagini RVZ GC/Wii (*.rvz)" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Intensità" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "Fine Intervallo:" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "Inizio Intervallo:" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "(&p) Sostituisci istruzione" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "Lettura" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "Lettura e Scrittura" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "Sola lettura" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "Lettura o Scrittura" @@ -7896,11 +8070,11 @@ msgstr "Lettura o Scrittura" msgid "Read-Only Mode" msgstr "Modalità Sola-lettura" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Balance Board Reale" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "Wii Remote Reale" @@ -7913,11 +8087,11 @@ msgstr "Centra" msgid "Record" msgstr "Registra" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "Registra Input" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "Registrazione" @@ -7942,7 +8116,7 @@ msgstr "Rosso Sinistro" msgid "Red Right" msgstr "Rosso Destro" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7964,16 +8138,16 @@ msgstr "Stato di Redump.org:" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Aggiorna" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "Aggiorna Valori Attuali" @@ -7981,26 +8155,26 @@ msgstr "Aggiorna Valori Attuali" msgid "Refresh Game List" msgstr "Aggiorna l'Elenco dei Giochi" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "Aggiornamento fallito. Esegui il gioco per un po', quindi riprova." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "Valori Attuali Aggiornati." #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "Aggiornamento..." #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Regione" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "Regione:" @@ -8020,16 +8194,16 @@ msgstr "Pressione Relativa Input" msgid "Remind Me Later" msgstr "Ricorda Più Tardi" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Rimuovi" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "Rimozione non Riuscita" @@ -8055,8 +8229,8 @@ msgstr "" "in ISO (a meno che poi tu non comprima il file ISO in un file ad esempio " "ZIP). Vuoi proseguire lo stesso?" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "Rinomina simbolo" @@ -8091,29 +8265,37 @@ msgstr "Invita al tuo party" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Resetta" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "Resetta Tutto" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "Resetta Ignora Avvisi di Errore" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "Azzera Risultati" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "Reset Server Traversal" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "Server Traversal resettato a %1:%2" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "Reset Impostazioni Traversal" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "Reimposta Valori" @@ -8121,15 +8303,15 @@ msgstr "Reimposta Valori" msgid "Reset View" msgstr "Ripristina Visuale" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "Resetta tutti gli abbinamenti salvati con i Wii Remote" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "Resource Pack Manager" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "Percorso Resource Pack:" @@ -8141,11 +8323,11 @@ msgstr "Riavvio Necessario" msgid "Restore Defaults" msgstr "Ripristina Predefiniti" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "Ripristina istruzione" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Riprova" @@ -8154,7 +8336,7 @@ msgstr "Riprova" msgid "Return Speed" msgstr "Velocità di Ritorno" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "Revisione" @@ -8212,11 +8394,11 @@ msgstr "Rotazione a Sinistra" msgid "Roll Right" msgstr "Rotazione a Destra" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "ID Stanza" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "Rotazione" @@ -8225,18 +8407,19 @@ msgstr "Rotazione" msgid "Rotation applied at extremities of swing." msgstr "Rotazione applicata agli estremi dell'oscillazione" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." -msgstr "" -"Arrotonda i vertici 2D al pixel più vicino.

Corregge difetti grafici " -"su alcuni giochi a maggiori risoluzioni interne. Questa opzione non ha " -"effetto quando viene utilizzata la risoluzione interna nativa." -"

Nel dubbio, lascia deselezionato.
Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." +msgstr "" +"Arrotonda i vertici 2D a pixel interi e approssima la dimensione del " +"viewport a un numero intero.

Corregge difetti grafici in alcuni " +"giochi a risoluzioni interne elevate. Questa opzione non ha alcun effetto se " +"viene usata la risoluzione interna nativa.

Nel " +"dubbio, lascia deselezionato." #: Source/Core/Core/HW/GCPadEmu.cpp:79 #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:254 @@ -8245,11 +8428,11 @@ msgstr "" msgid "Rumble" msgstr "Vibrazione" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "(&T) Esegui Fino al Cursore" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "Avvia i Core GBA in Thread Dedicati" @@ -8257,15 +8440,15 @@ msgstr "Avvia i Core GBA in Thread Dedicati" msgid "Russia" msgstr "Russia" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "Scheda SD" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "Immagine Scheda SD (*.raw);;Tutti i File (*)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "Percorso SD Card:" @@ -8281,7 +8464,7 @@ msgstr "SELECT" msgid "SHA-1:" msgstr "SHA-1:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "SP1:" @@ -8295,11 +8478,11 @@ msgstr "Contesto SSL" msgid "START" msgstr "START" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "Sal&va Codice" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "Sal&va Stato di Gioco" @@ -8309,7 +8492,7 @@ msgid "Safe" msgstr "Sicura" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -8322,7 +8505,7 @@ msgstr "Salva Tutto" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "Esporta Salvataggio" @@ -8343,11 +8526,11 @@ msgstr "Salvataggio di Gioco" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "File di Salvataggio di Gioco (*.sav);;Tutti i File (*)" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "Importa Salvataggio" @@ -8359,7 +8542,7 @@ msgstr "Salva sul più vecchio Stato di Gioco" msgid "Save Preset" msgstr "Salva Preset" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "Salva File Registrazione Come" @@ -8409,23 +8592,23 @@ msgstr "Salva Stato di Gioco nello Slot 8" msgid "Save State Slot 9" msgstr "Salva Stato di Gioco nello Slot 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "Salva Stato su File" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "Salva Stato su Slot più Vecchio" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "Salva Stato nello Slot Selezionato" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "Salva Stato su Slot" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "Salva Mappa dei Simboli &Come..." @@ -8433,7 +8616,7 @@ msgstr "Salva Mappa dei Simboli &Come..." msgid "Save Texture Cache to State" msgstr "Salva Cache Texture su Stato" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "Salva e Carica Stato di Gioco" @@ -8445,11 +8628,11 @@ msgstr "Salva come Preset..." msgid "Save as..." msgstr "Salva come..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "Salva file combinato in output come" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" @@ -8459,15 +8642,15 @@ msgstr "" "conviene fare un backup dei dati attuali prima di sovrascriverli.\n" "Vuoi proseguire?" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "Salva nella Stessa Directory della ROM" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "Salva file mappa" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "Salva file di signature" @@ -8475,7 +8658,7 @@ msgstr "Salva file di signature" msgid "Save to Selected Slot" msgstr "Salva nello Slot Selezionato" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "Salva su Slot %1 - %2" @@ -8483,25 +8666,25 @@ msgstr "Salva su Slot %1 - %2" msgid "Save..." msgstr "Salva..." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" "Gli abbinamenti salvati con i Wii Remote possono essere resettati soltanto " "durante l'esecuzione di un gioco Wii." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "Salvataggi:" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "Il salvataggio del filmato {0} è corrotto, arresto registrazione..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Copia EFB in scala" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "Ricerca completata." @@ -8509,30 +8692,30 @@ msgstr "Ricerca completata." msgid "ScrShot" msgstr "Screenshot" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Cerca" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "Cerca Indirizzo" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "Cerca Oggetto Corrente" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Cerca nelle Sottocartelle" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "Cerca e Filtra" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." @@ -8540,7 +8723,7 @@ msgstr "" "La ricerca non è attualmente possibile nello spazio di indirizzo virtuale. " "Esegui il gioco per un po', quindi riprova." -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "Cerca un'Istruzione" @@ -8548,7 +8731,7 @@ msgstr "Cerca un'Istruzione" msgid "Search games..." msgstr "Cerca giochi..." -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "Ricerca istruzione" @@ -8573,28 +8756,28 @@ msgstr "" msgid "Security options" msgstr "Opzioni di sicurezza" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Seleziona" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "Seleziona Percorso Dump" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "Seleziona Directory di Estrazione" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "Seleziona BIOS GBA" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "Seleziona ROM GBA" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "Seleziona Percorso dei Salvataggi GBA" @@ -8602,11 +8785,11 @@ msgstr "Seleziona Percorso dei Salvataggi GBA" msgid "Select Last State" msgstr "Seleziona Ultimo Stato" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "Seleziona Percorso da Caricare" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "Seleziona Percorso Resource Pack" @@ -8614,7 +8797,7 @@ msgstr "Seleziona Percorso Resource Pack" msgid "Select Riivolution XML file" msgstr "Seleziona file Riivolution XML" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "Seleziona Slot %1 - %2" @@ -8622,7 +8805,7 @@ msgstr "Seleziona Slot %1 - %2" msgid "Select State" msgstr "Seleziona Stato di Gioco" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Seleziona Slot di Stato" @@ -8666,41 +8849,45 @@ msgstr "Seleziona Slot di Stato 8" msgid "Select State Slot 9" msgstr "Seleziona Slot di Stato 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "Seleziona Percorso WFS" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "Seleziona Root NAND Wii" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "Seleziona una Directory" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "Seleziona un File" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "Seleziona un Gioco" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "Seleziona un'Immagine Scheda SD" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "Seleziona un file" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "Seleziona un gioco" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "Seleziona un titolo da installare su NAND" @@ -8708,11 +8895,11 @@ msgstr "Seleziona un titolo da installare su NAND" msgid "Select e-Reader Cards" msgstr "Seleziona Carte e-Reader" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "Scegli l'indirizzo del modulo RSO:" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "Seleziona la Registrazione da Eseguire" @@ -8720,12 +8907,12 @@ msgstr "Seleziona la Registrazione da Eseguire" msgid "Select the Virtual SD Card Root" msgstr "Seleziona la directory principale per la Scheda SD Virtuale" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "Seleziona il file contenente le chiavi (dump OTP/SEEPROM)" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Seleziona il file di salvataggio" @@ -8741,15 +8928,15 @@ msgstr "Seleziona dove vuoi salvare le immagini convertite" msgid "Selected Font" msgstr "Font Selezionato" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "Il profilo controller selezionato non esiste" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "Il gioco selezionato non esiste nella lista dei giochi!" @@ -8777,7 +8964,7 @@ msgstr "" "Seleziona l'adattatore hardware da utilizzare.

Nel " "dubbio, seleziona il primo." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8845,11 +9032,11 @@ msgstr "" "più compatibile.

Nel dubbio, seleziona OpenGL." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Invia" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Posizione della Sensor Bar: " @@ -8865,57 +9052,65 @@ msgstr "" "durante lo scaricamento\n" "Esempio: {2}" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "Indirizzo IP del Server" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "Porta del Server" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "" "Il server ha rifiutato il tentativo di connessione in modalità traversal" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "Imposta &Valore" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "Imposta &blr" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "Imposta PC" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "Imposta Valore Da File" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "Imposta come ISO &Predefinita" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "Seleziona file per la memory card dello Slot A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "Seleziona file per la memory card dello Slot B" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "Imposta indirizzo di t&ermine del simbolo" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "Imposta dimensione del &simbolo" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "Imposta indirizzo di termine del simbolo" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "Imposta dimensione del simbolo (%1):" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8925,7 +9120,7 @@ msgstr "" "(576i) per i giochi PAL.\n" "Potrebbe non funzionare su tutti i giochi." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Imposta la lingua di sistema del Wii" @@ -8937,7 +9132,7 @@ msgstr "" "Imposta la latenza (in millisecondi). Valori maggiori possono correggere un " "audio gracchiante. Solo per alcuni backend." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8976,11 +9171,11 @@ msgstr "" "Riduce i tempi di caricamento ma potrebbe corrompere alcuni giochi. Potrebbe " "avere effetti negativi sulle performance. Il default è Inattivo" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Mostra Finestra di &Log" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Mostra Barra degli St&rumenti" @@ -8988,15 +9183,15 @@ msgstr "Mostra Barra degli St&rumenti" msgid "Show Active Title in Window Title" msgstr "Mostra Gioco Corrente nella Barra del Titolo" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "Mostra Tutto" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Mostra Australia" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "Mostra Gioco Corrente su Discord" @@ -9004,7 +9199,7 @@ msgstr "Mostra Gioco Corrente su Discord" msgid "Show Debugging UI" msgstr "Mostra UI Debugging" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "Mostra ELF/DOL" @@ -9012,43 +9207,43 @@ msgstr "Mostra ELF/DOL" msgid "Show FPS" msgstr "Mostra FPS" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Mostra Contatore Frame" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Mostra Francia" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "Mostra GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Mostra Germania" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "Mostra Overlay Modalità Golf" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Mostra Tasti di Input" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Mostra Italia" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "Mostra JPN" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Mostra Corea" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Mostra Contatore Lag" @@ -9056,7 +9251,7 @@ msgstr "Mostra Contatore Lag" msgid "Show Language:" msgstr "Mostra Lingua:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Mostra &Configurazione Log" @@ -9068,7 +9263,7 @@ msgstr "Mostra Messaggi NetPlay" msgid "Show NetPlay Ping" msgstr "Mostra Ping NetPlay" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Mostra Olanda" @@ -9076,7 +9271,7 @@ msgstr "Mostra Olanda" msgid "Show On-Screen Display Messages" msgstr "Mostra Messaggi su Schermo" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Mostra PAL" @@ -9085,23 +9280,23 @@ msgstr "Mostra PAL" msgid "Show PC" msgstr "Mostra PC" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Mostra Piattaforme" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Mostra Regioni" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "Mostra Contatore Re-registrazioni" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Mostra Russia" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "Mostra Spagna" @@ -9110,46 +9305,50 @@ msgstr "Mostra Spagna" msgid "Show Statistics" msgstr "Mostra Informazioni" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "Mostra Orologio di Sistema" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Mostra Taiwan" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Mostra USA" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Mostra Sconosciuto" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "Mostra WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Mostra Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Mostra Mondo" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "Mostra in &memoria" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "Mostra nel codice" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "Mostra nel server browser" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "&Mostra target in memoria" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -9194,7 +9393,7 @@ msgstr "" "Mostra diverse informazioni di rendering.

Nel " "dubbio, lascia deselezionato." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Fianco-a-Fianco" @@ -9210,16 +9409,31 @@ msgstr "Attiva/Disattiva posizione di traverso" msgid "Sideways Wii Remote" msgstr "Wii Remote in posizione di traverso" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" -msgstr "Database delle Signature" +msgstr "Database Firme" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "Signed 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "Signed 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "Signed 8" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "Signed Integer" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Cinese Semplificato" @@ -9227,7 +9441,7 @@ msgstr "Cinese Semplificato" msgid "Simulate DK Bongos" msgstr "Simula i Bongo DK" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "Six Axis" @@ -9256,7 +9470,7 @@ msgstr "Salta Disegno" msgid "Skip EFB Access from CPU" msgstr "Salta Accesso della CPU all'EFB" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "Salta Main Menu" @@ -9264,7 +9478,7 @@ msgstr "Salta Main Menu" msgid "Skip Presenting Duplicate Frames" msgstr "Salta Frame Duplicati" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -9283,19 +9497,19 @@ msgstr "" msgid "Slider Bar" msgstr "Slider Bar" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Ingresso A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "Slot A:" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Ingresso B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "Slot B:" @@ -9313,7 +9527,7 @@ msgstr "Tabella Socket" msgid "Software Renderer" msgstr "Software Renderer" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "Non è stato possibile leggere alcuni dati." @@ -9334,11 +9548,11 @@ msgstr "" "Controlla i valori evidenziati." #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "Ordine Alfabetico" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "Suono:" @@ -9351,8 +9565,8 @@ msgid "Spain" msgstr "Spagna" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Spagnolo" @@ -9360,7 +9574,7 @@ msgstr "Spagnolo" msgid "Speaker Pan" msgstr "Panning Altoparlante" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Volume Altoparlante:" @@ -9404,7 +9618,7 @@ msgstr "Velocità" msgid "Speed up Disc Transfer Rate" msgstr "Aumenta la velocità di trasferimento dal Disco" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "Stabile (una volta all'anno)" @@ -9416,16 +9630,16 @@ msgstr "Fine stack" msgid "Stack start" msgstr "Inizio stack" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Controller Standard" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Start" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "Avvia &NetPlay" @@ -9433,11 +9647,13 @@ msgstr "Avvia &NetPlay" msgid "Start New Cheat Search" msgstr "Inizia Nuova Ricerca Cheat" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "Avvia Re&gistrazione Input" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Avvia Registrazione" @@ -9453,7 +9669,7 @@ msgstr "Avvia con le Patch Riivolution" msgid "Start with Riivolution Patches..." msgstr "Avvia con le Patch Riivolution..." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "Gioco avviato" @@ -9464,7 +9680,7 @@ msgstr "Gioco avviato" msgid "State" msgstr "Stato" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Volante" @@ -9492,19 +9708,19 @@ msgstr "Esci dall'Istruzione" msgid "Step Over" msgstr "Esegui Istruzione" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "Uscito con successo dall'istruzione!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "Scaduto tempo di uscita dall'istruzione!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "Esecuzione dell'istruzione in corso..." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "Istruzione eseguita con successo!" @@ -9513,20 +9729,20 @@ msgstr "Istruzione eseguita con successo!" msgid "Stepping" msgstr "Entrando" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "Stereo" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "Modalità Stereoscopia 3D" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Modalità Stereoscopia 3D" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Stereoscopia" @@ -9547,11 +9763,15 @@ msgstr "Levetta" msgid "Stop" msgstr "Arresta" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "Interrompi Riproduzione/Registrazione Input" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "Ferma Registrazione" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "Gioco fermato" @@ -9565,7 +9785,7 @@ msgstr "Salva le copie dell'EFB solo su texture" msgid "Store XFB Copies to Texture Only" msgstr "Salva le copie dell'XFB solo su texture" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -9579,7 +9799,7 @@ msgstr "" "RAM (e su texture)

Nel dubbio, lascia selezionato." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -9597,7 +9817,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Adatta a Finestra" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "Sincronizzazione Esatta Impostazioni" @@ -9620,16 +9840,16 @@ msgstr "Stilo" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "Completato" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "Inserito con successo nell'indice NetPlay" @@ -9639,11 +9859,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "Convertiti con successo %n immagini." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "'%1' eliminato con successo." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "Esportati con successo %n file di salvataggio su %1." @@ -9652,7 +9872,7 @@ msgstr "Esportati con successo %n file di salvataggio su %1." msgid "Successfully exported save files" msgstr "File di salvataggio esportati con successo" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "I certificati sono stati estratti con successo dalla NAND" @@ -9664,12 +9884,12 @@ msgstr "File estratto con successo." msgid "Successfully extracted system data." msgstr "Dati di sistema estratti con successo." -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "Salvataggio importato con successo." #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "Il titolo è stato installato con successo su NAND." @@ -9681,16 +9901,16 @@ msgstr "Il titolo è stato rimosso con successo dalla NAND." msgid "Support" msgstr "Supporto" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "Formato file supportati" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "Supporta SD e SDHC. La dimensione standard è 128 MB." #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "Surround" @@ -9698,11 +9918,11 @@ msgstr "Surround" msgid "Suspended" msgstr "Sospeso" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Inverti Occhi" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9717,50 +9937,67 @@ msgstr "" msgid "Swing" msgstr "Ruota/Oscilla" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "Scambia ad A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "Scambia a B" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "Simbolo" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "Indirizzo di termine del simbolo (%1):" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" +"Mappa dei simboli non trovata.\n" +"\n" +"Se non esiste, puoi generarla dal Menu:\n" +"Simboli -> Genera Simboli Da ->\n" +"\tIndirizzo | Database Firme | Moduli RSO" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "Nome del simbolo:" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "Simboli" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "Sincronizza" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "Sincronizza Codici AR/Gecko" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "Sincronizza Tutti i Salvataggi Wii" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "Sincronizza Salvataggi" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "Sincronizza e abbina Wii Remote reali" @@ -9776,37 +10013,37 @@ msgstr "" "Sincronizza i thread della GPU e della CPU per prevenire alcuni blocchi " "casuali in modalità Dual Core. (ON = Compatibilità, OFF = Velocità)" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "Sincronizzazione codici AR..." -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "Sincronizzazione codici Gecko..." -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "Sincronizzazione dei dati di salvataggio in corso..." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Lingua di Sistema:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "TAS Input" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "Strumenti TAS" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "Tag" @@ -9824,11 +10061,11 @@ msgstr "Coda" msgid "Taiwan" msgstr "Taiwan" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Cattura uno Screenshot" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Prova" @@ -9837,7 +10074,7 @@ msgstr "Prova" msgid "Texture Cache" msgstr "Cache Texture" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "Accuratezza Cache Texture" @@ -9861,7 +10098,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "L'hash table H3 della partizione {0} non è corretta." -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "Il file IPL non è un dump conosciuto ben formato. (CRC32: {0:x})" @@ -9875,7 +10112,7 @@ msgstr "Il file IPL non è un dump conosciuto ben formato. (CRC32: {0:x})" msgid "The Masterpiece partitions are missing." msgstr "Le partizioni Capolavori sono assenti." -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." @@ -9883,7 +10120,7 @@ msgstr "" "Non è stato possibile riparare la NAND. Si consiglia di fare un backup dei " "dati attualmente presenti e ricominciare con una NAND pulita." -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "La NAND è stata riparata." @@ -9929,7 +10166,7 @@ msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" "Le chiavi di decrittazione devono essere inserite nel file di backup NAND." -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9945,7 +10182,7 @@ msgstr "Impossibile leggere il disco (a {0:#x} - {1:#x})." msgid "The disc that was about to be inserted couldn't be found." msgstr "Impossibile trovare il disco che stava per essere inserito." -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9971,19 +10208,19 @@ msgstr "La console Wii emulata è già aggiornata." msgid "The entered MAC address is invalid." msgstr "L'indirizzo MAC inserito non è valido." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "Il PID inserito non è valido." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "Il VID inserito non è valido." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "L'espressione contiene un errore di sintassi." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -10043,7 +10280,7 @@ msgstr "L'ID del gioco è {0} ma dovrebbe essere {1}." msgid "The game disc does not contain any usable update information." msgstr "Questo disco di gioco non contiene alcun aggiornamento utilizzabile." -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "Il gioco è attualmente avviato." @@ -10057,7 +10294,7 @@ msgstr "" "problemi col menu di sistema, non è possibile aggiornare la console emulata " "con questo disco." -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -10079,7 +10316,7 @@ msgstr "Gli hash non coincidono!" msgid "The hashes match!" msgstr "Gli hash coincidono!" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -10108,12 +10345,12 @@ msgid "The patches in %1 are not for the selected game or game revision." msgstr "" "Le patch in %1 non sono per il gioco o per la sua versione selezionata." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "Il profilo '%1' non esiste" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "Il gioco registrato ({0}) non coincide con il gioco selezionato ({1})" @@ -10132,20 +10369,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "Il codice AR decriptato risultante non contiene alcuna riga." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "Lo stesso file non può essere usato su più slot; è già usato da %1." -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "Le versioni di NetPlay del server e del client non sono compatibili." -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "Il server è pieno." -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "Il server ha inviato un messaggio d'errore sconosciuto." @@ -10171,7 +10408,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "il file specificato \"{0}\" non esiste" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "La memory card di destinazione contiene già un file \"%1\"." @@ -10226,7 +10463,7 @@ msgstr "La partizione {0} non è correttamente allineata." msgid "There are too many partitions in the first partition table." msgstr "Ci sono troppe partizioni nella prima tabella delle partizioni." -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "Non c'è nulla da annullare!" @@ -10269,7 +10506,7 @@ msgstr "" "tipicamente in uso sulle console coreane. Probabilmente verrà visualizzato " "un ERROR #002" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "Questo dispositivo USB è già stato accettato." @@ -10288,7 +10525,7 @@ msgid "" msgstr "" "Questo simulatore di action replay non supporta codici automodificanti." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "Impossibile annullare l'operazione!" @@ -10342,7 +10579,11 @@ msgstr "" "Questa immagine disco è troppo piccola e manca di alcuni dati. Probabilmente " "si tratta di un disco dual-layer estratto come disco single-layer." -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "Questo file non contiene un filesystem Wii valido." + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "Questo file non sembra un backup NAND BootMii." @@ -10367,11 +10608,11 @@ msgstr "" "giocato correttamente, ma la tua scheda grafica o i tuoi driver non la " "supportano, per cui riscontrerai dei bug giocando." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "Questo dump è invalido." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." @@ -10379,7 +10620,7 @@ msgstr "" "Questo è un dump invalido. Non vuol dire che il gioco non funzionerà " "correttamente." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." @@ -10387,11 +10628,11 @@ msgstr "" "Questo è un buon dump secondo Redump.org, ma Dolphin ha riscontrato dei " "problemi. Potrebbe essere un bug in Dolphin stesso." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "Questo è un buon dump." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "Questa sessione richiede una password:" @@ -10465,7 +10706,7 @@ msgstr "" "Questo valore viene moltiplicato per la profondità impostata nelle " "configurazioni grafiche." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." @@ -10473,7 +10714,7 @@ msgstr "" "Serve a limitare la velocità di chunked upload per ogni client, utilizzato " "per la sincronizzazione dei salvataggi." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -10497,7 +10738,7 @@ msgstr "Thread" msgid "Threshold" msgstr "Sensibilità" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "TiB" @@ -10516,22 +10757,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Titolo" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "a" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "Da:" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "Attiva/Disattiva &Schermo intero" @@ -10556,7 +10797,7 @@ msgid "Toggle Aspect Ratio" msgstr "Attiva/Disattiva Aspetto" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "Imposta/rimuovi Punto di Interruzione" @@ -10616,14 +10857,20 @@ msgstr "Tokenizzazione fallita." msgid "Toolbar" msgstr "Barra degli Strumenti" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Sopra" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Sopra-e-Sotto" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "Numero di Passaggi" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -10658,20 +10905,20 @@ msgid "Touch" msgstr "Tocco" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Cinese Tradizionale" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "Errore Traversal" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "Traversal Server" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "" "Il traversal server è andato in time out durante la connessione con l'host." @@ -10704,22 +10951,14 @@ msgstr "Grilletti" msgid "Type" msgstr "Tipo" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" +msgstr "Allineamento per Tipo" + +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 msgid "Typical GameCube/Wii Address Space" msgstr "Spazio di Indirizzi GameCube/Wii Standard" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" -msgstr "U&16" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "U&32" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" -msgstr "U&8" - #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 msgid "UNKNOWN" msgstr "SCONOSCIUTO" @@ -10734,9 +10973,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "Errore USB Whitelist" @@ -10778,10 +11017,14 @@ msgstr "" "durante la compilazione degli shader con un minore impatto sulle " "performance, ma il risultato dipende dai driver della scheda grafica." -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "Impossibile individuare automaticamente il modulo RSO" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "Impossibile aprire il file." + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10806,7 +11049,11 @@ msgstr "" "\n" "Vuoi ignorare questa riga e continuare l'analisi?" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "Impossibile leggere il file." + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "Impossibile scrivere su file {0}" @@ -10818,15 +11065,15 @@ msgstr "Non assegnato" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "Immagini GC/Wii non compresse (*.iso *.gcm)" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Annulla Caricamento Stato di Gioco" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Annulla Salvataggio dello Stato di Gioco" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "Disinstalla" @@ -10843,18 +11090,18 @@ msgstr "" "attualmente installata su NAND senza cancellarne i file di salvataggio. " "Continuare?" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "Stati Uniti" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Sconosciuto" @@ -10862,7 +11109,7 @@ msgstr "Sconosciuto" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "Comando DVD {0:08x} sconosciuto - errore fatale" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "Messaggio SYNC_CODES sconosciuto ricevuto con id: {0}" @@ -10874,7 +11121,7 @@ msgstr "" "Ricevuto messaggio SYNC_GECKO_CODES sconosciuto con id:{0} dal giocatore:{1} " "Giocatore espulso!" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "Messaggio SYNC_SAVE_DATA sconosciuto ricevuto con id: {0}" @@ -10886,15 +11133,15 @@ msgstr "" "Ricevuto messaggio SYNC_SAVE_DATA sconosciuto con id:{0} dal giocatore:{1} " "Giocatore espulso!" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "Spazio dell'indirizzo sconosciuto" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "Autore sconosciuto" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "Tipo di dato sconosciuto" @@ -10902,19 +11149,19 @@ msgstr "Tipo di dato sconosciuto" msgid "Unknown disc" msgstr "Disco sconosciuto" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "Si è verificato un errore sconosciuto." -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "Errore sconosciuto {0:x}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "Errore sconosciuto." -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "Ricevuto messaggio sconosciuto con id : {0}" @@ -10924,7 +11171,7 @@ msgstr "" "Ricevuto messaggio sconosciuto con id:{0} ricevuto dal giocatore:{1} " "Giocatore espulso!" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Illimitato" @@ -10940,13 +11187,28 @@ msgstr "Sblocca il Cursore" msgid "Unpacking" msgstr "Apertura" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "Unsigned 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "Unsigned 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "Unsigned 8" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "Unsigned Integer" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10955,7 +11217,7 @@ msgstr "Su" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Aggiorna" @@ -11012,7 +11274,7 @@ msgstr "Attiva/Disattiva posizione verticale" msgid "Upright Wii Remote" msgstr "Wii Remote in posizione verticale" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "Impostazioni Report Statistiche d'Uso" @@ -11028,7 +11290,7 @@ msgstr "Usa Stile Utente Personalizzato" msgid "Use Lossless Codec (FFV1)" msgstr "Usa Codec Lossless (FFV1)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "Usa Modalità PAL60 (EuRGB60)" @@ -11067,18 +11329,62 @@ msgstr "" "Utilizza un singolo buffer di profondità per entrambi gli occhi. Necessario " "per alcuni giochi." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "Usa la configurazione della mappatura di memoria durante la scansione" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "Usa indirizzi fisici" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "Usa gli indirizzi virtuali quando possibile" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" +"Usato per trovare funzioni in base a quando dovrebbero venire eseguite.\n" +"Simile a Cheat Engine Ultimap.\n" +"Una mappa dei simboli deve essere caricata prima dell'utilizzo.\n" +"Le liste di inclusione/esclusione persistono al termine/riavvio " +"dell'emulazione.\n" +"Queste liste non persisteranno alla chiusura di Dolphin.\n" +"\n" +"'Avvia Registrazione': tiene traccia di quali funzioni vengono eseguite.\n" +"'Termina Registrazione': elimina la registrazione corrente senza cambiare le " +"liste.\n" +"'Il codice non è stato eseguito': clicca durante una registrazione per " +"aggiungere le funzioni registrate in una lista di esclusione, per poi " +"resettare la lista in registrazione.\n" +"'Il codice è stato eseguito': clicca durante una registrazione per " +"aggiungere le funzioni registrate in una lista di inclusione, per poi " +"resettare la lista in registrazione.\n" +"\n" +"Dopo aver usato sia l'inclusione sia l'esclusione, la lista di esclusione " +"verrà sottratta dalla lista di inclusione, e verranno mostrate tutte le " +"inclusioni rimaste.\n" +"Puoi continuare ad usare 'Il codice è stato eseguito'/'Il codice non è stato " +"eseguito' per filtrare ulteriormente i risultati." + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "Configurazione Utente" @@ -11091,11 +11397,11 @@ msgstr "Interfaccia Utente" msgid "User Style:" msgstr "Stile Utente:" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "Variabili Utente" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" @@ -11105,7 +11411,7 @@ msgstr "" "Puoi usarle per salvare o recuperare valori tra gli\n" "input e gli output dello stesso controller padre." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -11142,23 +11448,23 @@ msgstr "" msgid "Using Qt %1" msgstr "Qt %1 in uso" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "Solitamente usato per oggetti luminosi" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "Solitamente usato per matrici di normali" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "Solitamente usato per matrici di posizione" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "Solitamente usato per matrici di coordinate di texture" @@ -11171,7 +11477,7 @@ msgstr "Utilità" msgid "V-Sync" msgstr "V-Sync" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Valore" @@ -11204,8 +11510,8 @@ msgstr "Verifica certificati" msgid "Verifying" msgstr "Verifica in corso" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "Versione" @@ -11241,7 +11547,7 @@ msgstr "Visualizza &memoria" msgid "Virtual Notches" msgstr "Tacche Virtuali" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "Spazio dell'indirizzo virtuale" @@ -11268,7 +11574,7 @@ msgstr "Alza il Volume" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "File WAD (*.wad)" @@ -11331,7 +11637,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "WASAPI (Modalità Esclusiva)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "Percorso WFS:" @@ -11339,8 +11645,8 @@ msgstr "Percorso WFS:" msgid "WIA GC/Wii images (*.wia)" msgstr "Immagini WIA GC/Wii (*.wia)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "In attesa della prima scansione..." @@ -11373,7 +11679,7 @@ msgstr "" "100%.

Nel dubbio, lascia deselezionato." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -11391,10 +11697,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Attenzione" @@ -11414,7 +11720,7 @@ msgstr "" "Attenzione: Il numero di blocchi indcati dal BAT ({0}) non coincide con il " "file di intestazione caricato ({1})" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " @@ -11425,7 +11731,7 @@ msgstr "" "salvataggio prima di continuare, o caricare questo stesso stato con modalità " "sola-lettura off." -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " @@ -11435,7 +11741,7 @@ msgstr "" "l'attuale frame nel salvataggio (byte {0} < {1}) (frame {2} < {3}). Dovresti " "caricare un altro salvataggio prima di andare oltre." -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" @@ -11446,7 +11752,7 @@ msgstr "" "caricare questo stato in modalità sola-lettura off. Altrimenti probabilmente " "riscontrerai una desincronizzazione." -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -11489,7 +11795,7 @@ msgstr "" msgid "Watch" msgstr "Espressione di controllo" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "Website" @@ -11526,11 +11832,11 @@ msgstr "" "Detection Arbitraria' è abilitato in Miglioramenti." "

Nel dubbio, lascia selezionato." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "Dispositivi USB Ponte Accettati" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Hack Widescreen" @@ -11546,11 +11852,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Menu Wii" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Root NAND Wii:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Wii Remote" @@ -11558,8 +11864,8 @@ msgstr "Wii Remote" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "Wii Remote %1" @@ -11572,11 +11878,11 @@ msgstr "Pulsanti Wii Remote" msgid "Wii Remote Orientation" msgstr "Orientamento Wii Remote" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Impostazioni Wii Remote" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Wii Remote" @@ -11592,7 +11898,7 @@ msgstr "Wii TAS Input %1 - Wii Remote" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "Wii TAS Input %1 - Wii Remote + Nunchuk" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "Wii e Wii Remote" @@ -11600,7 +11906,7 @@ msgstr "Wii e Wii Remote" msgid "Wii data is not public yet" msgstr "Dati Wii non ancora pubblici" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "File di salvataggio Wii (*.bin);;Tutti i File (*)" @@ -11630,18 +11936,18 @@ msgid "World" msgstr "Mondo" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "Scrittura" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "Scrivi Dati di Salvataggio" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "Sola scrittura" @@ -11654,12 +11960,12 @@ msgid "Write to File" msgstr "Scrivi su File" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "Scrivi su Log" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "Scrivi su Log e Interrompi" @@ -11667,7 +11973,7 @@ msgstr "Scrivi su Log e Interrompi" msgid "Write to Window" msgstr "Scrivi in Finestra" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "Versione Errata" @@ -11678,7 +11984,7 @@ msgstr "Versione Errata" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "Registro XF" @@ -11707,8 +12013,8 @@ msgid "Yellow" msgstr "Giallo" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "Sì" @@ -11763,7 +12069,7 @@ msgstr "" "(Mojave) o successivo. Per favore non riferire alcun problema che potresti " "riscontrare a meno che non accada anche con versione 10.14 o successiva." -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" "Stai eseguendo l'ultima versione disponibile dello stream di sviluppo scelto." @@ -11807,11 +12113,11 @@ msgstr "" msgid "You have to enter a name." msgstr "Devi inserire un nome." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "Devi inserire un nome per la tua sessione!" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "Devi indicare una regione per la tua sessione!" @@ -11819,7 +12125,7 @@ msgstr "Devi indicare una regione per la tua sessione!" msgid "You must restart Dolphin in order for the change to take effect." msgstr "È necessario riavviare Dolphin affinché le modifiche abbiano effetto." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "Devi scegliere un gioco da avviare!" @@ -11858,23 +12164,23 @@ msgstr "Zero 3 codice non supportato" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "Codice Zero sconosciuto a Dolphin: {0:08x}" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "[%1, %2]" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "[%1, %2] e [%3, %4]" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "^ Xor" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "allineato" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "qualunque valore" @@ -11893,13 +12199,13 @@ msgstr "cm" msgid "d3d12.dll could not be loaded." msgstr "Impossibile caricare d3d12.dll." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "default" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "disconnesso" @@ -11915,31 +12221,31 @@ msgstr "errno" msgid "fake-completion" msgstr "esecuzione finta" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "uguale a" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "maggiore di" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "maggiore o uguale a" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "minore di" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "minore o uguale a" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "diverso da" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "ultimo valore" @@ -11971,7 +12277,7 @@ msgstr "off" msgid "on" msgstr "su" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "o seleziona un dispositivo" @@ -11980,7 +12286,7 @@ msgstr "o seleziona un dispositivo" msgid "s" msgstr "s" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "questo valore:" @@ -11989,7 +12295,7 @@ msgstr "questo valore:" msgid "uDraw GameTablet" msgstr "uDraw GameTablet" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "disallineato" @@ -12008,7 +12314,7 @@ msgstr "{0} (Capolavori)" msgid "{0} (NKit)" msgstr "{0} (NKit)" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" "{0} IPL trovato nella directory {1}. Il disco potrebbe non venire " @@ -12032,7 +12338,7 @@ msgstr "" "fuori di Dolphin" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "{0} blocchi su {1}. Rapporto di compressione {2}%" @@ -12040,7 +12346,7 @@ msgstr "{0} blocchi su {1}. Rapporto di compressione {2}%" msgid "{0} was not a directory, moved to *.original" msgstr "{0} non è una directory, spostato in *.original" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "| Or" diff --git a/Languages/po/ja.po b/Languages/po/ja.po index 2dadcdd73283..fde9a7b3d2c5 100644 --- a/Languages/po/ja.po +++ b/Languages/po/ja.po @@ -18,9 +18,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: DanbSky , 2015-2021\n" "Language-Team: Japanese (http://www.transifex.com/delroth/dolphin-emu/" "language/ja/)\n" "Language: ja\n" @@ -29,7 +29,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -41,7 +41,7 @@ msgstr "" "ゲームキューブ用ゲームデータには整合性チェックのためのデータがほとんど含まれ" "ていないため、Dolphinでは検出できない問題があるかもしれません。" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -53,7 +53,7 @@ msgstr "" "このタイトルは販売物ではないため、Dolphinはゲームデータが改竄されていないこと" "を証明できません。" -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -77,7 +77,7 @@ msgstr "" msgid " (Disc %1)" msgstr "(ディスク %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "! Not(否定)" @@ -86,7 +86,7 @@ msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" "\"{0}\" は無効なファイル、またはゲームキューブ/Wii のISOではありません" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -100,7 +100,7 @@ msgstr "" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "% Modulo(剰余)" @@ -116,17 +116,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -145,7 +145,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (リビジョン %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -185,7 +185,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "%1 はあなたのシステム上でこの機能をサポートしていません" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "%1 はこの機能をサポートしていません" @@ -199,23 +199,23 @@ msgstr "" "%2 オブジェクト\n" "現在のフレーム: %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "%1 が入室しました" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "%1 が退室しました" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "%1 がゴルフ中" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -224,11 +224,11 @@ msgstr "" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "%1 個のセッションを発見" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "%1 個のセッションを発見" @@ -240,15 +240,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (標準)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -264,30 +264,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2]: %3/%4 MiB" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "%1x Native (%2x%3)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "& And(論理積)" @@ -307,7 +307,7 @@ msgstr "&3x" msgid "&4x" msgstr "&4x" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "Dolphinについて(&A)" @@ -316,11 +316,11 @@ msgid "&Add Memory Breakpoint" msgstr "&Add Memory Breakpoint" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "コードを追加...(&A)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "&Add function" @@ -328,19 +328,19 @@ msgstr "&Add function" msgid "&Add..." msgstr "追加...(&A)" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "サウンド設定(&A)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "自動更新(&A)" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "&Automatic Start" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "DVDバックアップから起動(&B)" @@ -348,11 +348,11 @@ msgstr "DVDバックアップから起動(&B)" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Breakpoints" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "バグトラッカー(&B)" @@ -360,15 +360,15 @@ msgstr "バグトラッカー(&B)" msgid "&Cancel" msgstr "キャンセル(&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "チートマネージャ(&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "Dolphinのアップデート(&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "&Clear Symbols" @@ -376,7 +376,7 @@ msgstr "&Clear Symbols" msgid "&Clone..." msgstr "クローン(&C)..." -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "&Code" @@ -384,19 +384,20 @@ msgstr "&Code" msgid "&Connected" msgstr "接続(&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "コントローラ設定(&C)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "&Copy address" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "作成(&C)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "削除(&D)" @@ -408,7 +409,7 @@ msgstr "&Delete Watch" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "コードを編集...(&E)" @@ -416,11 +417,11 @@ msgstr "コードを編集...(&E)" msgid "&Edit..." msgstr "編集...(&E)" -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "ディスクの取り出し(&E)" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "エミュレーション(&E)" @@ -432,43 +433,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "GCI形式でエクスポート..." -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "ファイル(&F)" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&Font..." -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "Frame Advance(&F)" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "フリールックの設定(&F)" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "&Generate Symbols From" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "GitHub リポジトリ(&G)" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "グラフィック設定(&G)" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "ヘルプ(&H)" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "ホットキーのカスタマイズ(&H)" @@ -480,11 +485,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "インポート...(&I)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "&Insert blr" @@ -492,7 +497,7 @@ msgstr "&Insert blr" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -500,23 +505,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "UIの言語(&L):" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "ステートロード(&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "&Load Symbol Map" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "ツールバーの位置を固定(&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Memory" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "記録(&M)" @@ -524,7 +529,7 @@ msgstr "記録(&M)" msgid "&Mute" msgstr "ミュート(&M)" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "&Network" @@ -532,24 +537,24 @@ msgstr "&Network" msgid "&No" msgstr "いいえ(&N)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "開く(&O)" -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "設定(&O)" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "&Patch HLE Functions" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "一時停止(&P)" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "開始(&P)" @@ -557,11 +562,11 @@ msgstr "開始(&P)" msgid "&Properties" msgstr "プロパティ(&P)" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "読み込み専用(&R)" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Registers" @@ -570,24 +575,24 @@ msgid "&Remove" msgstr "削除(&R)" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "コードを削除(&R)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "&Rename symbol" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "リセット(&R)" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "リソースパックマネージャー(&R)" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "&Save Symbol Map" @@ -595,11 +600,11 @@ msgstr "&Save Symbol Map" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "速度制限(&S):" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "停止(&S)" @@ -607,11 +612,11 @@ msgstr "停止(&S)" msgid "&Theme:" msgstr "テーマ(&T):" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "&Threads" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "ツール(&T)" @@ -619,17 +624,17 @@ msgstr "ツール(&T)" msgid "&Unload ROM" msgstr "ROMを取り外してリセット(&U)" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "表示(&V)" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&Watch" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "公式Webサイト(&W)" @@ -641,11 +646,11 @@ msgstr "公式Wiki(英語)で動作状況を確認(&W)" msgid "&Yes" msgstr "はい(&Y)" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "'%1' not found, no symbol names generated" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "'%1' not found, scanning for common functions instead" @@ -657,7 +662,7 @@ msgstr "なし" msgid "(host)" msgstr "(host)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "オフ" @@ -665,34 +670,34 @@ msgstr "オフ" msgid "(ppc)" msgstr "(ppc)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "* Multiply(乗算)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "+ Add(加算)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "- Subtract(減算)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "--> %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "/ Divide(除算)" @@ -700,6 +705,10 @@ msgstr "/ Divide(除算)" msgid "128 Mbit (2043 blocks)" msgstr "128 Mbit (2043 ブロック)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "16 Mbit (251 ブロック)" @@ -708,35 +717,35 @@ msgstr "16 Mbit (251 ブロック)" msgid "16-bit" msgstr "16 ビット" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x Native (1280x1056) for 720p" @@ -748,25 +757,25 @@ msgstr "32 Mbit (507 ブロック)" msgid "32-bit" msgstr "32 ビット" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -780,28 +789,32 @@ msgstr "3D深度" msgid "3x" msgstr "3x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x Native (1920x1584) for 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Mbit (59 ブロック)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x Native (2560x2112) for 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x Native (3200x2640)" @@ -809,29 +822,33 @@ msgstr "5x Native (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Mbit (1019 ブロック)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x Native (3840x3168) for 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x Native (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Mbit (123 ブロック)" @@ -840,25 +857,25 @@ msgstr "8 Mbit (123 ブロック)" msgid "8-bit" msgstr "8 ビット" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x Native (5120x4224) for 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "< Less-than(より小さい)" @@ -879,12 +896,12 @@ msgstr "" "

Dolphinの最新版が公開されています!

Dolphin %1 がダウンロード可能で" "す。現在のバージョン ( %2 )
更新を行いますか?

更新履歴:

" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "> Greater-than(より大きい)" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "ネットプレイのセッションは既に進行中です!" @@ -908,11 +925,11 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "ディスクは既に挿入されています。" -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "起動するタイトルを指定せずにステートセーブをロードすることはできません" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -920,7 +937,7 @@ msgstr "" "終了処理の実行中です。 この処理が完了する前にエミュレーションの強制終了をする" "とデータが失われる場合があります。それでも強制終了しますか?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "WiiリモコンとのSyncはWiiのゲームを実行中にのみ行なえます" @@ -929,7 +946,7 @@ msgstr "WiiリモコンとのSyncはWiiのゲームを実行中にのみ行な msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -963,8 +980,8 @@ msgstr "アクションリプレイコード" msgid "AR Codes" msgstr "アクションリプレイコード" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -987,7 +1004,7 @@ msgstr "加速度" msgid "Accuracy:" msgstr "精度:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "Action" @@ -1099,9 +1116,9 @@ msgstr "タップが接続されています" msgid "Adapter:" msgstr "ビデオカード:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "追加" @@ -1109,11 +1126,11 @@ msgstr "追加" msgid "Add &breakpoint" msgstr "Add &breakpoint" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "DSU Serverの追加" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "USBデバイスを追加" @@ -1145,46 +1162,49 @@ msgstr "Add memory breakpoint" msgid "Add to &watch" msgstr "Add to &watch" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "Add to watch" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "追加" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "アドレス" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "Address Space" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "Address:" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1249,39 +1269,43 @@ msgstr "高度な設定" msgid "Africa" msgstr "アフリカ" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "すべてのファイル" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "すべてのファイル (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "全てのステートセーブファイル (*.sav *.s##);; 全てのファイル (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "すべてのデバイス" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "すべてのプレイヤーのチートコードは同期されました" @@ -1290,19 +1314,19 @@ msgstr "すべてのプレイヤーのチートコードは同期されました msgid "All players' saves synchronized." msgstr "すべてのプレイヤーのセーブデータは同期されました" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "コンソール上の言語設定の不一致を許可" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "利用統計レポートを許可" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "SDカードへの書込を許可" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." @@ -1310,7 +1334,7 @@ msgstr "" "ゲーム内カメラの操作を許可します。

よく分からなけれ" "ば、チェックを入れないでください。" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1336,7 +1360,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "An inserted disc was expected but not found." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Anaglyph" @@ -1354,39 +1378,39 @@ msgstr "角度" msgid "Angular velocity to ignore and remap." msgstr "ここで指定した角度以下の入力を無視します" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "異方性フィルタリング" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "異方性フィルタリング:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "アンチエイリアス" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "アンチエイリアス:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "すべて" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "Append signature to" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "Append to &Existing Signature File..." -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "Appl&y Signature File..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1403,15 +1427,15 @@ msgstr "Apploaderの日付" msgid "Apply" msgstr "適用" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "Apply signature file" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "Arbitrary Mipmap Detection" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "次のプロファイルを削除しますか? '%1'" @@ -1419,11 +1443,11 @@ msgstr "次のプロファイルを削除しますか? '%1'" msgid "Are you sure you want to delete this file?" msgstr "このタイトルの実体ファイルを削除しますか?" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "このリソースパックを削除しますか?" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "ネットプレイを終了しますか?" @@ -1436,11 +1460,11 @@ msgid "Aspect Ratio" msgstr "アスペクト比" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "アスペクト比:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "コントローラ割り当て設定" @@ -1448,7 +1472,7 @@ msgstr "コントローラ割り当て設定" msgid "Assign Controllers" msgstr "コントローラ割り当て設定" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1475,7 +1499,7 @@ msgstr "タイムストレッチの設定" msgid "Australia" msgstr "オーストラリア" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "作者" @@ -1487,15 +1511,15 @@ msgstr "開発チーム" msgid "Auto" msgstr "自動" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "自動 (ゲーム解像度の倍数)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "Dolphinの自動更新に関する設定" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1515,7 +1539,7 @@ msgstr "ウィンドウサイズを自動調整" msgid "Auto-Hide" msgstr "未操作時に隠す" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "Auto-detect RSO modules?" @@ -1529,12 +1553,12 @@ msgstr "" "
" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "Auxiliary" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "B" @@ -1549,11 +1573,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "BIOS:" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "BP register " @@ -1579,7 +1603,7 @@ msgstr "出力設定" msgid "Backend:" msgstr "ビデオAPI:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "バックグラウンド操作を許可" @@ -1590,7 +1614,13 @@ msgstr "バックグラウンド操作を許可" msgid "Backward" msgstr "後方" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "Bad address provided." @@ -1598,19 +1628,20 @@ msgstr "Bad address provided." msgid "Bad dump" msgstr "Bad dump" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "Bad offset provided." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "Bad value provided." #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "バナー" @@ -1634,7 +1665,7 @@ msgstr "Base priority" msgid "Basic" msgstr "基本設定" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "基本設定" @@ -1642,7 +1673,7 @@ msgstr "基本設定" msgid "Bass" msgstr "バスドラム" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "バッチモードの使用にはタイトルの指定が必須です" @@ -1650,11 +1681,11 @@ msgstr "バッチモードの使用にはタイトルの指定が必須です" msgid "Battery" msgstr "バッテリー残量" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "ベータ版 (ひと月に一度)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "BetterJoy, DS4Windows, その他" @@ -1676,7 +1707,7 @@ msgstr "ビットレート (kbps):" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "ブロックサイズ" @@ -1689,7 +1720,7 @@ msgstr "ブロックサイズ:" msgid "Blocking" msgstr "Blocking" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "ブロック数" @@ -1715,15 +1746,15 @@ msgstr "" "ドされました。\n" "パススルーの機能は使えません。" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "Boot to Pause" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "BootMii NAND バックアップファイル (*.bin);;すべてのファイル (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "BootMii キー ファイル (*.bin);;すべてのファイル (*)" @@ -1731,7 +1762,7 @@ msgstr "BootMii キー ファイル (*.bin);;すべてのファイル (*)" msgid "Borderless Fullscreen" msgstr "ボーダレス フルスクリーン" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "下" @@ -1745,7 +1776,7 @@ msgid "Branches" msgstr "Branches" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "Break" @@ -1754,7 +1785,7 @@ msgstr "Break" msgid "Breakpoint" msgstr "Breakpoint" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "Breakpoint encountered! Step out aborted." @@ -1784,7 +1815,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "ネットプレイセッションブラウザ(&N)" @@ -1792,12 +1823,12 @@ msgstr "ネットプレイセッションブラウザ(&N)" msgid "Buffer Size:" msgstr "バッファサイズ" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "バッファサイズが変更されました: %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "バッファ:" @@ -1839,11 +1870,11 @@ msgstr "ボタン" msgid "C Stick" msgstr "Cスティック" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "C&reate Signature File..." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "CP register " @@ -1878,7 +1909,7 @@ msgstr "" msgid "Calculate" msgstr "計算する" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1902,15 +1933,15 @@ msgstr "キャリブレーション" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "Callstack" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "カメラ 1" @@ -1920,7 +1951,7 @@ msgstr "カメラ 1" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1928,16 +1959,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "ゲーム実行中はネットプレイセッションを開始できません!" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "キャンセル" @@ -1955,23 +1986,23 @@ msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" "NANDへのインストールができなかったため、このWADファイルを起動できません" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "GC IPLが見つかりません" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "GC IPLが見つからないため、ゲームを開始できませんでした。" @@ -1993,7 +2024,7 @@ msgstr "センタリングとキャリブレーション" msgid "Change &Disc" msgstr "ディスクの入れ替え(&D)" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "ディスクの入れ替え(&D)" @@ -2001,15 +2032,15 @@ msgstr "ディスクの入れ替え(&D)" msgid "Change Disc" msgstr "ディスクの入れ替え" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "ディスク交換を自動化" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "次のディスクに変更:{0}" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -2034,7 +2065,7 @@ msgstr "変更されたチート内容は次回のゲーム開始時に反映さ msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "チャット欄" @@ -2050,11 +2081,11 @@ msgstr "コードサーチ" msgid "Cheats Manager" msgstr "チートマネージャ" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "NANDの整合性チェックを実行" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "ゲームリストの状態を監視" @@ -2069,7 +2100,7 @@ msgid "" msgstr "" "ファイルを削除する権限があるかどうか、他で使用中でないかを確認してください。" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "チェックサム" @@ -2077,16 +2108,16 @@ msgstr "チェックサム" msgid "China" msgstr "中国" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "メモリーカードを選択" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "Choose priority input file" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "Choose secondary input file" @@ -2109,14 +2140,14 @@ msgid "Classic Controller" msgstr "クラシックコントローラ" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "全消去" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "Clear Cache" @@ -2133,28 +2164,47 @@ msgstr "コピーして編集...(&E)" msgid "Close" msgstr "閉じる" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "Dolphinの設定(&N)" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Code" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "コード:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "コードを受け取りました!" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "Combine &Two Signature Files..." #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "全般" @@ -2172,7 +2222,7 @@ msgstr "シェーダをコンパイル中..." #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "圧縮形式" @@ -2185,7 +2235,7 @@ msgstr "圧縮レベル:" msgid "Compression:" msgstr "圧縮形式:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "Condition" @@ -2197,13 +2247,13 @@ msgstr "" msgid "Config" msgstr "設定" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "設定" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "操作設定" @@ -2211,21 +2261,21 @@ msgstr "操作設定" msgid "Configure Dolphin" msgstr "Dolphinの設定" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "入力設定" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "出力設定" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "確認" @@ -2238,26 +2288,26 @@ msgstr "ビデオAPI変更の確認" msgid "Confirm on Stop" msgstr "動作停止時に確認" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "確認" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "ホストに接続" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "バランスWii ボードを接続" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "USBキーボードの接続をエミュレート" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "%1 のWiiリモコンを接続" @@ -2277,11 +2327,11 @@ msgstr "3PのWiiリモコンを接続" msgid "Connect Wii Remote 4" msgstr "4PのWiiリモコンを接続" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "Wiiリモコンの接続" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "実機Wiiリモコンをエミュレートされたコントローラとして扱う" @@ -2293,15 +2343,19 @@ msgstr "インターネットに接続してWiiのシステム更新を行いま msgid "Connected" msgstr "Connected" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "接続方式:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "Content {0:08x} is corrupt." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "接続状況を常に監視" @@ -2314,7 +2368,7 @@ msgstr "" msgid "Control Stick" msgstr "コントロールスティック" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "入力設定" @@ -2342,7 +2396,7 @@ msgstr "Dolphin コントローラ設定" msgid "Controllers" msgstr "コントローラ" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2353,7 +2407,7 @@ msgstr "" "距離を設定できます。

値を高くすると効果が強くなり、低くすると目の負担" "が軽減されます。" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2367,7 +2421,7 @@ msgstr "" "

よく分からなければ、【Native】を選択してください。" "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2396,12 +2450,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "収束点" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "収束点 (Convergence):" @@ -2442,33 +2496,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "コピー" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "Copy &function" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "Copy &hex" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "Copy Address" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "Copy Hex" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "Copy code &line" @@ -2476,11 +2535,15 @@ msgstr "Copy code &line" msgid "Copy failed" msgstr "コピーに失敗" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "Aへコピー" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "Bへコピー" @@ -2495,16 +2558,16 @@ msgstr "コア" msgid "Cost" msgstr "Cost" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "ホストと通信できませんでした" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "クライアントを作成できませんでした" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "ピアを作成できませんでした" @@ -2591,15 +2654,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "Couldn't look up central server" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2626,7 +2689,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "制作者: " @@ -2652,11 +2715,11 @@ msgstr "" msgid "Crossfade" msgstr "クロスフェーダー" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "現在の地域" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2664,7 +2727,7 @@ msgstr "" msgid "Current context" msgstr "Current context" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "選択中のタイトル" @@ -2672,7 +2735,7 @@ msgstr "選択中のタイトル" msgid "Current thread" msgstr "Current thread" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2703,7 +2766,7 @@ msgstr "" msgid "DJ Turntable" msgstr "ターンテーブル" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "タルコンガ" @@ -2731,7 +2794,7 @@ msgstr "DSP LLE Recompiler(低速)" msgid "DSU Client" msgstr "DSU Client" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2743,11 +2806,11 @@ msgstr "" "アップ方法については
こちらのページを参照してください" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "マットコントローラ" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "データ関係" @@ -2759,28 +2822,27 @@ msgstr "" msgid "Data Transfer" msgstr "データ転送" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "Data Type" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "Data in area of file that should be unused." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "Data in unrecognized format or corrupted." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "データが受信されました!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "Datel MaxDrive/Pro 形式" @@ -2798,7 +2860,7 @@ msgid "Debug Only" msgstr "デバッグ用" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "デバッグ用" @@ -2840,7 +2902,7 @@ msgstr "X方向 減少" msgid "Decrease Y" msgstr "Y方向 減少" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "既定" @@ -2856,7 +2918,7 @@ msgstr "既定のデバイス" msgid "Default Font" msgstr "既定のフォント" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "デフォルトISO" @@ -2881,7 +2943,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2896,11 +2958,11 @@ msgid "Delete Selected Files..." msgstr "選択中のタイトルの実体を削除" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "既存のファイル '{0}' を削除しますか?" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "深度" @@ -2908,21 +2970,21 @@ msgstr "深度" msgid "Depth Percentage:" msgstr "深度 比率変更:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "深度 (Depth):" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "説明" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "説明" @@ -2931,11 +2993,11 @@ msgstr "説明" msgid "Detached" msgstr "Detached" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "検出" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "Detecting RSO Modules" @@ -2943,25 +3005,25 @@ msgstr "Detecting RSO Modules" msgid "Deterministic dual core:" msgstr "Deterministic dual core: " -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "開発者向け (起動する度に確認)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "デバイス" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "デバイス PID (例:0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "デバイス設定" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "デバイス PID (例:057e)" @@ -2973,11 +3035,15 @@ msgstr "デバイス:" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "5分間操作がない状態が続くと、画面を暗くするようにします" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "直接接続 (Direct)" @@ -3014,7 +3080,7 @@ msgstr "Disable" msgid "Disable Bounding Box" msgstr "Disable Bounding Box" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "Disable Copy Filter" @@ -3026,15 +3092,15 @@ msgstr "Disable EFB VRAM Copies" msgid "Disable Emulation Speed Limit" msgstr "エミュレーション速度 無効化" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "Disable Fastmem" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Disable Fog" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "Disable JIT Cache" @@ -3042,7 +3108,7 @@ msgstr "Disable JIT Cache" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -3059,7 +3125,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -3082,11 +3148,15 @@ msgstr "ディスク" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -3109,25 +3179,25 @@ msgstr "距離" msgid "Distance of travel from neutral position." msgstr "振りの強さをニュートラルポジションからの距離で指定" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "Dolphinの開発者への情報提供にご協力いただけますか?" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "\"%1\" をゲームパスリストに追加しますか?" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "Do you want to clear the list of symbol names?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "選択中の %n 個のセーブファイルを削除しますか?" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "動作中のゲームを停止しますか?" @@ -3144,9 +3214,9 @@ msgstr "Dolphin FIFO ログファイル (*.dff)" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "Dolphin Map File (*.map)" @@ -3158,8 +3228,8 @@ msgstr "Dolphin Signature CSV File" msgid "Dolphin Signature File" msgstr "Dolphin Signature File" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Dolphin TAS ムービー (*.dtm)" @@ -3194,11 +3264,11 @@ msgstr "要求された操作を完了することができませんでした。 msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "Dolphin is a free and open-source GameCube and Wii emulator." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "Dolphinのバージョンが古すぎます" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." @@ -3206,11 +3276,11 @@ msgstr "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "Dolphin is unable to verify unlicensed discs." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3225,7 +3295,7 @@ msgstr "チートは現在、無効化されています" msgid "Domain" msgstr "Domain" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "自動更新しない" @@ -3238,24 +3308,26 @@ msgid "Done compressing disc image." msgstr "ディスクイメージの圧縮に成功しました" #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "Double" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "下" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "Webからコードを入手" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "Webからコードを入手 (WiiRD Database)" @@ -3263,11 +3335,11 @@ msgstr "Webからコードを入手 (WiiRD Database)" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "グリッド表示でパッケージ画像を使用 ( GameTDB.comより取得 )" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "ダウンロード完了" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "%1 個のコードが見つかりました。( 新規追加: %2 個 )" @@ -3290,27 +3362,35 @@ msgstr "ドラムコントローラ" msgid "Dual Core" msgstr "デュアルコア動作" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "ダミーデバイス" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "Dump &ARAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "Dump &ExRAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "Dump &FakeVMEM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "Dump &MRAM" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "サウンドのダンプを行う(WAV形式)" @@ -3322,7 +3402,7 @@ msgstr "Dump Base Textures" msgid "Dump EFB Target" msgstr "EFBターゲットをダンプ" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "フレームのダンプを行う(AVI形式)" @@ -3334,7 +3414,7 @@ msgstr "Dump Mip Maps" msgid "Dump Objects" msgstr "Dump Objects" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "ダンプ先" @@ -3443,16 +3523,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "オランダ語" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "終了" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3467,7 +3547,7 @@ msgstr "" "近Dolphinのバージョンを更新した場合は、ドライバを認識させるためにWindowsの再" "起動が必要になるかもしれません。" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3497,7 +3577,7 @@ msgstr "エフェクト" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "Effective" @@ -3505,7 +3585,7 @@ msgstr "Effective" msgid "Effective priority" msgstr "Effective priority" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "EiB" @@ -3517,7 +3597,7 @@ msgstr "ディスクの取り出し" msgid "Embedded Frame Buffer (EFB)" msgstr "Embedded Frame Buffer (内蔵フレームバッファ)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "空き" @@ -3525,11 +3605,11 @@ msgstr "空き" msgid "Emu Thread already running" msgstr "エミュレーションスレッドはすでに稼働中です" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "WiiのBluetoothアダプタをエミュレート" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "Wiiリモコンをエミュレート" @@ -3548,8 +3628,12 @@ msgstr "" msgid "Emulation Speed" msgstr "エミュレーション速度" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3565,7 +3649,7 @@ msgstr "Enable API Validation Layers" msgid "Enable Audio Stretching" msgstr "タイムストレッチを有効にする (Audio Stretching)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "チートコードを有効化" @@ -3577,7 +3661,7 @@ msgstr "Custom RTC を使用する" msgid "Enable Dual Core" msgstr "デュアルコア動作を行う" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "デュアルコア動作を行う (速度向上)" @@ -3603,19 +3687,19 @@ msgid "Enable Progressive Scan" msgstr "プログレッシブ表示を有効化" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "振動を有効にする" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "スクリーンセーバーを有効化" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Wiiリモコンのスピーカーを有効化" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "統計レポートの収集に協力する" @@ -3648,7 +3732,7 @@ msgstr "" "浮動小数点演算結果フラグを有効にします。必要なゲームはわずかです [有効=互換" "性重視/無効=速度向上]" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3660,7 +3744,7 @@ msgstr "" "

よく分からなければ、【1x】を選択してください。" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3700,7 +3784,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "有効にすると音声をエミュレーション速度に合わせて伸長させます" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3742,7 +3826,7 @@ msgstr "" msgid "Encoding" msgstr "エンコード" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3759,12 +3843,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet Didn't Initialize" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "英語" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3774,7 +3858,7 @@ msgstr "画質向上の設定" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "デバイス(ハードウェア)IDを入力" @@ -3788,11 +3872,11 @@ msgstr "Enter address to watch:" msgid "Enter new Broadband Adapter MAC address:" msgstr "ブロードバンドアダプタのMACアドレスを入力" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "ここにパスワードを入力" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "Enter the RSO module address:" @@ -3801,65 +3885,68 @@ msgstr "Enter the RSO module address:" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "エラー" @@ -3873,19 +3960,19 @@ msgid "Error loading selected language. Falling back to system default." msgstr "" "選択した言語の読み込みに失敗しました。<システムの言語>に設定を戻します" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "セッションリストの取得エラー: %1" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "データ処理中にエラーが発生しました" @@ -3905,7 +3992,7 @@ msgstr "セーブデータ同期中にエラー発生!" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3959,11 +4046,11 @@ msgstr "" "エラー: Windows-1252フォントにアクセスを試みましたが読み込めませんでした。" "ゲームはフォントを正しく表示できないか、クラッシュするでしょう" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "Errors were found in {0} blocks in the {1} partition." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "Errors were found in {0} unused blocks in the {1} partition." @@ -3972,11 +4059,39 @@ msgstr "Errors were found in {0} unused blocks in the {1} partition." msgid "Euphoria" msgstr "Euphoria" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "ヨーロッパ" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "Exclusive Ubershaders" @@ -4025,14 +4140,14 @@ msgstr "" msgid "Experimental" msgstr "実験的" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "全てのWiiセーブデータをエクスポート" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "エクスポート失敗" @@ -4040,15 +4155,15 @@ msgstr "エクスポート失敗" msgid "Export Recording" msgstr "録画ファイルのエクスポート" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "録画ファイルのエクスポート" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "セーブファイルをエクスポート" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "複数のセーブファイルをエクスポート" @@ -4060,22 +4175,22 @@ msgstr "セーブデータをエクスポート" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "GCS形式でエクスポート..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "SAV形式でエクスポート..." -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "%n個のファイルをエクスポートしました" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "拡張コントローラ" @@ -4088,7 +4203,7 @@ msgstr "拡張コントローラ モーション(外部入力)" msgid "Extension Motion Simulation" msgstr "拡張コントローラ モーション" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "External" @@ -4096,7 +4211,7 @@ msgstr "External" msgid "External Frame Buffer (XFB)" msgstr "External Frame Buffer (外部フレームバッファ)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "証明書ファイルをNANDから取り出す" @@ -4134,7 +4249,7 @@ msgid "FD" msgstr "FD" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "FIFO プレーヤー" @@ -4142,7 +4257,7 @@ msgstr "FIFO プレーヤー" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" @@ -4150,11 +4265,11 @@ msgstr "" "メモリカードを開くことに失敗\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "Failed to append to signature file '%1'" @@ -4166,7 +4281,7 @@ msgstr "Failed to claim interface for BT passthrough" msgid "Failed to connect to Redump.org" msgstr "Redump.org に接続できませんでした" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "サーバー %1 に接続できませんでした" @@ -4187,12 +4302,12 @@ msgstr "Failed to create D3D12 global resources" msgid "Failed to create DXGI factory" msgstr "Failed to create DXGI factory" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" "ネットプレイ メモリカードの削除に失敗しました。書き込み権限を確認してください" @@ -4205,19 +4320,19 @@ msgstr "選択したファイルの削除に失敗しました" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "コードの取得に失敗しました" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "Failed to dump %1: Can't open file" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "Failed to dump %1: Failed to write to file" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -4226,7 +4341,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "次のセーブファイルをエクスポートできませんでした:" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "証明書ファイルの取り出しに失敗" @@ -4249,29 +4364,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "Failed to find one or more D3D symbols" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "\"%1\" をインポートできませんでした" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "Failed to init core" @@ -4287,16 +4402,16 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "リソースパック %1 をインストールできませんでした" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "タイトルのインストールに失敗" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" @@ -4304,8 +4419,8 @@ msgstr "" "ポート番号 %1 で待ち受けできませんでした。別のネットプレイサーバーが実行中に" "なっていませんか?" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "Failed to load RSO module at %1" @@ -4317,11 +4432,11 @@ msgstr "Failed to load d3d11.dll" msgid "Failed to load dxgi.dll" msgstr "Failed to load dxgi.dll" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "Failed to load map file '%1'" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "実行ファイルをメモリに読み込めませんでした。" @@ -4332,7 +4447,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "'%1' のオープンに失敗しました" @@ -4361,11 +4476,11 @@ msgstr "" "外部エディタでファイルを開くことができませんでした\n" "INIファイルに関連付けされているソフトを確認してください" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "ファイルを" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "サーバーを開けませんでした" @@ -4374,7 +4489,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4386,7 +4501,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "Failed to parse Redump.org data" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4394,25 +4509,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4427,19 +4542,19 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "タイトルの消去に失敗" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" "ネットプレイ GCIフォルダのリセットに失敗しました。書き込み権限を確認してくだ" "さい" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" "ネットプレイ NANDフォルダのリセットに失敗しました。書き込み権限を確認してくだ" "さい" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4447,23 +4562,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "FIFOログの保存に失敗しました" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "Failed to save code map to path '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "Failed to save signature file '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "Failed to save symbol map to path '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "Failed to save to signature file '%1'" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "リソースパック %1 のアンインストールに失敗しました" @@ -4471,11 +4586,11 @@ msgstr "リソースパック %1 のアンインストールに失敗しまし msgid "Failed to write BT.DINF to SYSCONF" msgstr "Failed to write BT.DINF to SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "Wii セーブデータの書き込みに失敗しました" @@ -4483,22 +4598,22 @@ msgstr "Wii セーブデータの書き込みに失敗しました" msgid "Failed to write config file!" msgstr "設定ファイルの書き込みに失敗!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "セーブファイルのディスクへの書き込みに失敗" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4507,19 +4622,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "失敗" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "Fair Input Delay" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "Fallback Region" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "Fallback Region:" @@ -4532,7 +4647,7 @@ msgstr "Fast" msgid "Fast Depth Calculation" msgstr "Fast Depth Calculation" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4549,7 +4664,7 @@ msgstr "ファイル情報" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "ファイル形式" @@ -4563,18 +4678,18 @@ msgstr "ファイル情報" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "ファイル名" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "ファイルサイズ" @@ -4582,11 +4697,11 @@ msgstr "ファイルサイズ" msgid "File Size:" msgstr "ファイルサイズ:" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "コードを含まないファイルです" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "ファイル名" @@ -4600,12 +4715,12 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" "ファイルサイズがどの種類のゲームキューブメモリカードにも適合しなかったため" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "Filesize in header mismatches actual card size." @@ -4613,15 +4728,15 @@ msgstr "Filesize in header mismatches actual card size." msgid "Filesystem" msgstr "構造" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "Filter Symbols" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "フィルタ" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4633,11 +4748,11 @@ msgstr "" "題が発生する可能性もあります。

よく分からなければ、" "チェックを外さないでください。" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "Find &Next" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "Find &Previous" @@ -4653,18 +4768,22 @@ msgstr "" "更新の最終処理中...\n" "しばらくお待ちください" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "First Person" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "チェックサムを修正" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "チェックサムの修正に失敗" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4674,13 +4793,14 @@ msgstr "Flags" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "Float" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "Follow &branch" @@ -4704,7 +4824,7 @@ msgstr "" msgid "Force 16:9" msgstr "強制的に 16:9 にする" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "強制24bitカラー化" @@ -4712,15 +4832,15 @@ msgstr "強制24bitカラー化" msgid "Force 4:3" msgstr "強制的に 4:3 にする" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "接続待ちポートを次の番号で固定:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Force Texture Filtering" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4736,7 +4856,7 @@ msgstr "" "い。

よく分からなければ、チェックを入れないでくださ" "い。" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4759,21 +4879,21 @@ msgstr "ファイル形式:" msgid "Forward" msgstr "前方" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "ポート開放を自動で設定 (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "\"%2\" の検索結果 %1 件" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "フレーム %1" @@ -4802,7 +4922,7 @@ msgstr "Frame Dumping" msgid "Frame Range" msgstr "フレームの範囲" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4814,19 +4934,19 @@ msgstr "記録するフレーム数" msgid "France" msgstr "フランス" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "空きブロック数:%1" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "追加可能なファイル数:%1" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "フリールックカメラの操作タイプ" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "フリールック コントローラ設定 %1" @@ -4834,7 +4954,7 @@ msgstr "フリールック コントローラ設定 %1" msgid "Free Look Settings" msgstr "フリールックの設定" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -5269,7 +5389,7 @@ msgstr "緑 - 左" msgid "Green Right" msgstr "緑 - 右" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "グリッド表示" @@ -5282,7 +5402,7 @@ msgstr "ギターコントローラ" msgid "Gyroscope" msgstr "ジャイロスコープ" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5295,12 +5415,29 @@ msgstr "高速化(Hacks)" msgid "Head" msgstr "Head" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "ヘルプ" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5312,19 +5449,19 @@ msgstr "Hexadecimal" msgid "Hide" msgstr "隠す" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "すべて非表示" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "プレイ中のセッションを隠す" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "互換性のないセッションを隠す" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "リモート先のGBAを隠す" @@ -5342,21 +5479,27 @@ msgstr "高" msgid "Hit Strength" msgstr "叩く強さ" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "ホストになる" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "ホストコード:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "Host Input Authority" @@ -5364,7 +5507,7 @@ msgstr "Host Input Authority" msgid "Host Size" msgstr "Host Size" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5376,11 +5519,11 @@ msgstr "" "す\n" "3人以上の環境で、通信が不安定な場合やレイテンシが大きい場合に効果的です" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "Host Input Authority が無効になりました" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "Host Input Authority が有効になりました" @@ -5392,7 +5535,7 @@ msgstr "ネットプレイを開始(ホスト)" msgid "Hostname" msgstr "Hostname" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "ホットキーのカスタマイズ" @@ -5443,11 +5586,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "IPアドレス:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "IPL設定" @@ -5456,7 +5599,7 @@ msgid "IR" msgstr "ポインタ" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "Wiiリモコンの感度" @@ -5495,11 +5638,11 @@ msgstr "" "高度な圧縮形式で、不要データと暗号化されたWiiディスクデータの両方を効率的に圧" "縮できます。" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "アイコン" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" @@ -5509,11 +5652,11 @@ msgstr "" "いつでもホスト(レイテンシが0になる人)を切り替えられるのが特徴です\n" "ゴルフのような、タイミングにシビアなターン制ゲームに最適です" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "IDの作成" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5569,7 +5712,7 @@ msgstr "Ignore Format Changes" msgid "Ignore for this session" msgstr "このセッションでは無視" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5581,7 +5724,7 @@ msgstr "" "になります。

よく分からなければ、チェックを外さない" "でください。" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5611,30 +5754,30 @@ msgstr "" "

よく分からなければ、チェックを入れないでください。" "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "BootMii NAND バックアップをインポート" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "インポートに失敗" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "セーブファイルのインポート" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Wii セーブデータのインポート" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "NAND バックアップをインポート" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" @@ -5643,11 +5786,20 @@ msgstr "" "NAND バックアップをインポート中...\n" "経過時間: %1s" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "プレイ中?" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5704,8 +5856,8 @@ msgstr "情報" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "情報" @@ -5714,10 +5866,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "エミュレーション中はスクリーンセーバーを起動させない" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "入力" @@ -5731,16 +5883,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "Insert &nop" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "SDカードの挿入をエミュレート" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "インストール" @@ -5752,7 +5910,7 @@ msgstr "" msgid "Install Update" msgstr "自動更新" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "WiiメニューにWADファイルを追加" @@ -5768,11 +5926,11 @@ msgstr "Instr." msgid "Instruction" msgstr "Instruction" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "Instruction Breakpoint" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "Instruction:" @@ -5790,7 +5948,7 @@ msgid "Interface" msgstr "表示" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Internal LZO Error - compression failed" @@ -5799,7 +5957,7 @@ msgstr "Internal LZO Error - compression failed" msgid "Internal LZO Error - decompression failed" msgstr "Internal LZO Error - compression failed" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" @@ -5807,21 +5965,21 @@ msgstr "" "Internal LZO Error - decompression failed ({0}) ({1}, {2})\n" "もう一度ステートロードを試してください" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Internal LZO Error - lzo_init() failed" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "レンダリング解像度" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "レンダリング解像度の変更:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5829,11 +5987,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "Interpreter (非常に低速)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "Interpreter Core" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5841,7 +5999,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "Invalid Mixed Code" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "無効なリソースパック %1 が与えられました:%2" @@ -5850,15 +6008,15 @@ msgstr "無効なリソースパック %1 が与えられました:%2" msgid "Invalid Player ID" msgstr "無効なプレイヤーID" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "Invalid RSO module address: %1" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "Invalid callstack" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5866,11 +6024,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "このホストコードは無効です" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "Invalid input for the field \"%1\"" @@ -5883,31 +6041,31 @@ msgstr "Invalid input provided" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "不正な録画ファイル" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "エラー:オブジェクトを選択してください" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "無効な検索文字列。 数値に検索文字列を変換できませんでした。" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "無効な検索文字列。偶数の長さの検索文字列のみがサポートされています。" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "無効なタイトルID" @@ -5916,8 +6074,8 @@ msgid "Invalid watch address: %1" msgstr "Invalid watch address: %1" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "イタリア語" @@ -5925,11 +6083,11 @@ msgstr "イタリア語" msgid "Italy" msgstr "イタリア" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "JIT Block Linking Off" @@ -5937,47 +6095,47 @@ msgstr "JIT Block Linking Off" msgid "JIT Blocks" msgstr "JIT Blocks" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "JIT Branch Off" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "JIT FloatingPoint Off" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "JIT Integer Off" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "JIT LoadStore Floating Off" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "JIT LoadStore Off" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "JIT LoadStore Paired Off" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "JIT LoadStore lXz Off" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "JIT LoadStore lbzx Off" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "JIT LoadStore lwz Off" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "JIT Off (JIT Core)" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "JIT Paired Off" @@ -5989,11 +6147,11 @@ msgstr "JIT Recompiler for ARM64 (推奨)" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "JIT Recompiler for x86-64 (推奨)" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "JIT Register Cache Off" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "JIT SystemRegisters Off" @@ -6007,12 +6165,12 @@ msgstr "" "このエラーは起こらないはずです。この状況をバグトラッカーへ報告してください。" "Dolphinを終了します。" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "日本" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "日本語" @@ -6032,12 +6190,12 @@ msgstr "最前面に表示" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "キーボード" @@ -6050,20 +6208,20 @@ msgstr "キーボード" msgid "Keys" msgstr "キー" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "KiB" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "選択したプレイヤーをキック" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "韓国" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "韓国語" @@ -6091,7 +6249,7 @@ msgstr "LR Save" msgid "Label" msgstr "Label" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -6177,15 +6335,15 @@ msgstr "" msgid "License" msgstr "ライセンス" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "Limit Chunked Upload Speed:" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "ゲームリストカラムの表示" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "リスト表示" @@ -6194,17 +6352,17 @@ msgid "Listening" msgstr "Listening" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "読込" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "Load &Bad Map File..." -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "Load &Other Map File..." @@ -6212,7 +6370,7 @@ msgstr "Load &Other Map File..." msgid "Load Custom Textures" msgstr "カスタムテクスチャを読み込む" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "ゲームキューブ メインメニューを起動" @@ -6221,7 +6379,7 @@ msgstr "ゲームキューブ メインメニューを起動" msgid "Load Last State" msgstr "以前のステートをロード" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -6314,23 +6472,23 @@ msgstr "ステートロード - スロット 8" msgid "Load State Slot 9" msgstr "ステートロード - スロット 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "ファイルからロード" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "選択したスロットから読込" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "次のスロットからロード" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "Wiiのセーブデータを読込む" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "Wiiメニューを起動 %1" @@ -6338,12 +6496,12 @@ msgstr "Wiiメニューを起動 %1" msgid "Load from Selected Slot" msgstr "選択したスロットから読込" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "スロット %1 - %2" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "Load map file" @@ -6351,7 +6509,7 @@ msgstr "Load map file" msgid "Load..." msgstr "読込" -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "Loaded symbols from '%1'" @@ -6366,7 +6524,7 @@ msgstr "" "User/Load/DynamicInputTextures/<game_id>/

よく" "分からなければ、チェックを入れないでください。" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "IPアドレスと使用ポート番号" @@ -6375,7 +6533,7 @@ msgid "Lock Mouse Cursor" msgstr "マウスカーソルをロック" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "ログ" @@ -6383,7 +6541,7 @@ msgstr "ログ" msgid "Log Configuration" msgstr "ログの設定" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "Log JIT Instruction Coverage" @@ -6414,7 +6572,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "ネットプレイサーバーへの接続が失われました..." @@ -6443,7 +6601,7 @@ msgstr "MMU" msgid "MORIBUND" msgstr "MORIBUND" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "MadCatz Gameshark 形式" @@ -6453,7 +6611,7 @@ msgstr "コントロールスティック" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "メーカー" @@ -6462,7 +6620,7 @@ msgstr "メーカー" msgid "Maker:" msgstr "メーカー" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6474,7 +6632,7 @@ msgstr "" "ません。

よく分からなければ、チェックを入れないでく" "ださい。" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "Wii NANDの管理" @@ -6482,7 +6640,7 @@ msgstr "Wii NANDの管理" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "コントローラ割当位置" @@ -6490,15 +6648,15 @@ msgstr "コントローラ割当位置" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "Match Found" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "最大バッファサイズ:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "最大バッファサイズが変更されました: %1" @@ -6507,7 +6665,7 @@ msgstr "最大バッファサイズが変更されました: %1" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "" "有効にしているとWiiメニューやいくつかのタイトルで動作速度が低下する場合があり" @@ -6518,11 +6676,11 @@ msgstr "" msgid "Medium" msgstr "中" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "Memory" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "Memory Breakpoint" @@ -6530,7 +6688,7 @@ msgstr "Memory Breakpoint" msgid "Memory Card" msgstr "メモリーカード" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "GCメモリーカードマネージャ" @@ -6548,7 +6706,7 @@ msgstr "" msgid "Memory Override" msgstr "Memory Override" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "Memory breakpoint options" @@ -6564,7 +6722,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6578,13 +6736,13 @@ msgstr "" "\n" "続行しますか?" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "MiB" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "マイク" @@ -6592,20 +6750,20 @@ msgstr "マイク" msgid "Misc" msgstr "その他" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "その他の設定" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" "Mismatch between free block count in header and actually unused blocks." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "Mismatch between internal data structures." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6631,12 +6789,12 @@ msgstr "" "機能を使用するにはゲームの再起動が必要です。

よく分" "からなければ、チェックを入れないでください。" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "Modules found: %1" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "モノラル" @@ -6648,11 +6806,11 @@ msgstr "Monoscopic Shadows" msgid "Monospaced Font" msgstr "等幅フォント" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "モーション(外部入力)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "モーション" @@ -6692,10 +6850,10 @@ msgstr "記録" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "NAND 整合性チェック" @@ -6703,26 +6861,26 @@ msgstr "NAND 整合性チェック" msgid "NKit Warning" msgstr "NKit Warning" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "NTSC-K" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "名前" @@ -6734,37 +6892,37 @@ msgstr "新しいタグに名前を付ける:" msgid "Name of the tag to remove:" msgstr "削除するタグ名を入力" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "セッションブラウザに表示するルーム名を入力" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "名前" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Native (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "ネイティブGCI 形式" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "ネットプレイ" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "ネットプレイセッションブラウザ" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "ネットプレイ《セットアップ》" @@ -6772,16 +6930,16 @@ msgstr "ネットプレイ《セットアップ》" msgid "Netherlands" msgstr "オランダ" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "Netplay has desynced in NetPlay_GetButtonPress()" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "ネットプレイはdesyncしました。これを回復する方法はありません。" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "ネットワーク関係" @@ -6802,11 +6960,11 @@ msgstr "自動更新を止める" msgid "New" msgstr "New" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "New Breakpoint" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "新しい検索" @@ -6814,7 +6972,7 @@ msgstr "新しい検索" msgid "New Tag..." msgstr "新しいタグ" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "新しいIDが作成されました。" @@ -6831,7 +6989,7 @@ msgstr "新しいタグ" msgid "Next Game Profile" msgstr "次のゲームプロファイル" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "次を検索" @@ -6840,17 +6998,17 @@ msgstr "次を検索" msgid "Next Profile" msgstr "次のプロファイル" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "ニックネームが長すぎます" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "ニックネーム:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "いいえ" @@ -6858,6 +7016,10 @@ msgstr "いいえ" msgid "No Adapter Detected" msgstr "タップは未接続です" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "出力しない" @@ -6868,24 +7030,20 @@ msgstr "出力しない" msgid "No Compression" msgstr "無圧縮" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "No Match" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "No Value Given" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "説明なし" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6897,15 +7055,15 @@ msgstr "拡張コントローラが選択されていません" msgid "No file loaded / recorded." msgstr "読み込み/記録ファイルなし" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "問題は見つかりませんでした" @@ -6913,11 +7071,15 @@ msgstr "問題は見つかりませんでした" msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "問題は見つかりませんでした" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6931,7 +7093,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "記録ファイルが読み込まれていません" @@ -6939,19 +7101,15 @@ msgstr "記録ファイルが読み込まれていません" msgid "No save data found." msgstr "セーブデータが見つかりませんでした" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" "undo.dtm ファイルが見つかりません。desync を防止するためステートロードの取消" "を中止します" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "No value provided." - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6961,7 +7119,7 @@ msgstr "なし" msgid "North America" msgstr "北アメリカ" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "" @@ -6969,11 +7127,11 @@ msgstr "" msgid "Not Set" msgstr "未定義" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "このタイトルを持っていないプレイヤーがいます。続けますか?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6983,7 +7141,7 @@ msgstr "" "インポート先のメモリーカードの空きブロック数が不足しています。最低でも %n ブ" "ロックの空きが必要です" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -7045,13 +7203,13 @@ msgstr "ヌンチャク モーションセンサー" msgid "Nunchuk Stick" msgstr "ヌンチャクスティック" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "OK" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "Object %1" @@ -7064,11 +7222,11 @@ msgid "Oceania" msgstr "オセアニア" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "オフ" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "Offset" @@ -7080,11 +7238,11 @@ msgstr "有効" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "オンラインガイドを表示(&D)" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" @@ -7092,7 +7250,7 @@ msgstr "" "Only append symbols with prefix:\n" "(Blank for all symbols)" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -7109,7 +7267,7 @@ msgstr "開く" msgid "Open &Containing Folder" msgstr "実体ファイルのあるフォルダを開く(&C)" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "フォルダを開く..." @@ -7157,7 +7315,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "演算子" @@ -7175,7 +7333,7 @@ msgstr "設定" msgid "Orange" msgstr "オレンジ" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "Orbital" @@ -7183,7 +7341,7 @@ msgstr "Orbital" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "その他" @@ -7196,11 +7354,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "その他" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "その他ステート関係" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "他のタイトル" @@ -7208,12 +7366,12 @@ msgstr "他のタイトル" msgid "Overlay Information" msgstr "Overlay Information" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "録画ファイルを再生(&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -7238,7 +7396,7 @@ msgstr "PNG画像ファイル (*.png);; すべてのファイル (*)" msgid "PPC Size" msgstr "PPC Size" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "PPC vs Host" @@ -7255,7 +7413,7 @@ msgstr "パッド" msgid "Parameters" msgstr "Parameters" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -7264,23 +7422,23 @@ msgstr "" msgid "Parsing Error" msgstr "解析エラー" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "Passive" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "PC上のBluetoothアダプタでパススルー" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "パスワード" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "参加するために必要なパスワードを入力(空欄でパスワードなし)" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "パスワードあり" @@ -7301,7 +7459,7 @@ msgid "Path:" msgstr "ファイルの場所:" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "フォルダ" @@ -7309,7 +7467,7 @@ msgstr "フォルダ" msgid "Pause" msgstr "一時停止" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "再生終了時に一時停止" @@ -7332,11 +7490,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Per-Pixel Lighting" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "Wii システムアップデート" @@ -7346,23 +7504,23 @@ msgstr "Wii システムアップデート" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "Physical" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "PiB" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "Pick a debug font" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "Ping" @@ -7375,7 +7533,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "機種" @@ -7395,16 +7553,16 @@ msgstr "録画ファイルを再生" msgid "Playback Options" msgstr "再生に関する設定" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "プレイヤー名" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "プレイヤー数" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7415,29 +7573,29 @@ msgstr "" msgid "Point" msgstr "ポインタ" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "ポート %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "Port %1 のROM:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "ポート:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "ポストプロセス" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "ポストプロセス:" @@ -7449,15 +7607,15 @@ msgstr "ポストプロセスシェーダーの設定" msgid "Prefetch Custom Textures" msgstr "カスタムテクスチャの事前読込" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7500,7 +7658,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "前のゲームプロファイル" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "前を検索" @@ -7511,15 +7669,15 @@ msgstr "前のプロファイル" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "パスワードあり" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "すべて" @@ -7527,21 +7685,21 @@ msgstr "すべて" msgid "Problem" msgstr "問題点" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" "影響度「大」の問題が見つかりました。おそらくこのゲームは上手く動作しません" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" "影響度「小」の問題が見つかりました。おそらくゲームプレイに支障はないでしょう" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." @@ -7549,7 +7707,7 @@ msgstr "" "影響度「中」の問題が見つかりました。ゲーム全体または特定の機能が動作しない可" "能性があります" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "プロファイル" @@ -7563,15 +7721,15 @@ msgstr "Program Counter" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "誰でも" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "ゲームリストのキャッシュを消去" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7583,11 +7741,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "Quality of Service (QoS) は有効になりませんでした" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "Quality of Service (QoS) が有効になっています" @@ -7599,12 +7757,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "確認" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "終了" @@ -7624,11 +7782,11 @@ msgstr "R (アナログ)" msgid "READY" msgstr "READY" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "RSO Modules" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "RSO auto-detection" @@ -7641,44 +7799,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "RVZ GC/Wii ISOファイル (*.rvz)" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "範囲/強さ" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "Re&place instruction" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "Read" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "Read and write" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "Read only" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "Read or Write" @@ -7686,11 +7844,11 @@ msgstr "Read or Write" msgid "Read-Only Mode" msgstr "読み込み専用" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "実機バランスWii ボードを接続" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "実機Wiiリモコンを接続" @@ -7703,11 +7861,11 @@ msgstr "リセット" msgid "Record" msgstr "録画" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "コントローラ操作を記録" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7732,7 +7890,7 @@ msgstr "赤 - 左" msgid "Red Right" msgstr "赤 - 右" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7754,16 +7912,16 @@ msgstr "Redump.orgのステータス:" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "再更新" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7771,26 +7929,26 @@ msgstr "" msgid "Refresh Game List" msgstr "ゲームリストを再更新" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "セッションリストを更新中..." #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "地域" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "地域" @@ -7810,16 +7968,16 @@ msgstr "" msgid "Remind Me Later" msgstr "また今度" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "削除" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7846,8 +8004,8 @@ msgstr "" "\n" "変換処理を続行しますか?" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "Rename symbol" @@ -7882,29 +8040,37 @@ msgstr "参加要請" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "初期化" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "中継サーバーをリセット" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "中継サーバーを次にリセットしました:%1:%2" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "中継サーバーをリセット" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7912,15 +8078,15 @@ msgstr "" msgid "Reset View" msgstr "位置をリセット" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "全てのペアリングを初期化する" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "リソースパックマネージャ" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "リソースパックの場所" @@ -7932,11 +8098,11 @@ msgstr "再起動が必要" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "Restore instruction" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "再試行" @@ -7945,7 +8111,7 @@ msgstr "再試行" msgid "Return Speed" msgstr "戻りの速度" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "使用バージョンとOS" @@ -8003,11 +8169,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "ルームID" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "回転操作" @@ -8016,17 +8182,14 @@ msgstr "回転操作" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" -"Rounds 2D vertices to whole pixels.

内部解像度を高めた際にいくつかの" -"ゲームで生じる不具合が解消されます。 内部解像度がNative(1x)の場合、この設定は" -"無視されます。

よく分からなければ、チェックを入れな" -"いでください。" #: Source/Core/Core/HW/GCPadEmu.cpp:79 #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:254 @@ -8035,11 +8198,11 @@ msgstr "" msgid "Rumble" msgstr "振動" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "Run &To Here" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "Run GBA Cores in Dedicated Threads" @@ -8047,15 +8210,15 @@ msgstr "Run GBA Cores in Dedicated Threads" msgid "Russia" msgstr "ロシア" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "SDカード" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "SDカードファイル (*.raw);; すべてのファイル (*)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "SDカード" @@ -8071,7 +8234,7 @@ msgstr "SELECT" msgid "SHA-1:" msgstr "SHA-1:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "シリアルポート1" @@ -8085,11 +8248,11 @@ msgstr "SSL context" msgid "START" msgstr "START" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "Sa&ve Code" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "ステートセーブ(&V)" @@ -8099,7 +8262,7 @@ msgid "Safe" msgstr "Safe" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -8112,7 +8275,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -8133,11 +8296,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -8149,7 +8312,7 @@ msgstr "最古のステートに上書き保存" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -8199,23 +8362,23 @@ msgstr "ステートセーブ - スロット 8" msgid "Save State Slot 9" msgstr "ステートセーブ - スロット 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "ファイルとして保存" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "最古のステートに上書き保存" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "選択したスロットに保存" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "次のスロットに保存" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "Save Symbol Map &As..." @@ -8223,7 +8386,7 @@ msgstr "Save Symbol Map &As..." msgid "Save Texture Cache to State" msgstr "Save Texture Cache to State" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "ステートセーブ/ロード" @@ -8235,11 +8398,11 @@ msgstr "" msgid "Save as..." msgstr "ファイルとして保存" -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "Save combined output file as" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" @@ -8249,15 +8412,15 @@ msgstr "" "在のセーブデータのバックアップを行って下さい。\n" "セーブデータの上書きを続行しますか?" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "ROMと同じフォルダにセーブファイルを保存する" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "Save map file" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "Save signature file" @@ -8265,7 +8428,7 @@ msgstr "Save signature file" msgid "Save to Selected Slot" msgstr "選択したスロットに保存" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "スロット %1 - %2" @@ -8273,23 +8436,23 @@ msgstr "スロット %1 - %2" msgid "Save..." msgstr "保存" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "ペアリングの初期化はWiiのゲームを実行中にのみ行なえます" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "セーブ保存先" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Scaled EFB Copy" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -8297,36 +8460,36 @@ msgstr "" msgid "ScrShot" msgstr "画面撮影" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "検索" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "Search Address" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "現在のオブジェクトを検索" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "サブフォルダも検索" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "Search for an Instruction" @@ -8334,7 +8497,7 @@ msgstr "Search for an Instruction" msgid "Search games..." msgstr "ゲームタイトルを検索" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "Search instruction" @@ -8358,28 +8521,28 @@ msgstr "" msgid "Security options" msgstr "Security options" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "選択" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "ダンプ先を選択" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "エクスポート先フォルダを選択" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "GBAのBIOSファイルを選択" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "GBAのROMファイルを選択" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "GBAセーブファイルの保存先を選択" @@ -8387,11 +8550,11 @@ msgstr "GBAセーブファイルの保存先を選択" msgid "Select Last State" msgstr "ステートスロットの選択" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "リソースパックの読込元フォルダを選択" @@ -8399,7 +8562,7 @@ msgstr "リソースパックの読込元フォルダを選択" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "スロット %1 - %2" @@ -8407,7 +8570,7 @@ msgstr "スロット %1 - %2" msgid "Select State" msgstr "スロットの選択" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "スロットの選択" @@ -8451,41 +8614,45 @@ msgstr "ステートスロット 8" msgid "Select State Slot 9" msgstr "ステートスロット 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "Wii NANDルート" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "フォルダを選択" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "ファイルを選択" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "ディスクチャンネルに表示するタイトルを選択" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "SDカードファイルを選択" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "タイトルを選択" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "NANDにインストールするタイトルを選択" @@ -8493,11 +8660,11 @@ msgstr "NANDにインストールするタイトルを選択" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "Select the RSO module address:" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8505,12 +8672,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "キーファイル (OTP/SEEPROM ダンプ)を選択" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "セーブファイルを選択" @@ -8526,15 +8693,15 @@ msgstr "圧縮されたイメージの保存先を選択" msgid "Selected Font" msgstr "選択したフォント" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "選択されたプロファイルは存在しません" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "選択されたゲームがゲームリストに存在しません!" @@ -8562,7 +8729,7 @@ msgstr "" "描画に使用するビデオカードを選択します。

よく分から" "なければ、一番上のものを選択してください。" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8627,11 +8794,11 @@ msgstr "" "うまく動作するものを選んでください

よく分からなけれ" "ば、【OpenGL】を選択してください" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "送信" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "センサーバーの位置" @@ -8643,56 +8810,64 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "サーバーのIPアドレス" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "サーバーのポート" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "サーバーが中継処理を拒否しました" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "Set &Value" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "Set PC" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "Wiiメニュー(ディスクチャンネル)に表示(&D)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "スロットAに読み込むメモリーカードファイルを選択" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "スロットBに読み込むメモリーカードファイルを選択" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "Set symbol &end address" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "Set symbol &size" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "Set symbol end address" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "Set symbol size (%1):" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8702,7 +8877,7 @@ msgstr "" "変更します\n" "すべてのタイトルで上手く動作するとは限りません" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Wiiのシステム言語を変更できます" @@ -8712,7 +8887,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8747,11 +8922,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "ログを表示(&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "ツールバー(&T)" @@ -8759,15 +8934,15 @@ msgstr "ツールバー(&T)" msgid "Show Active Title in Window Title" msgstr "タイトルバーに起動中のゲーム名を表示" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "すべて表示" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "オーストラリア" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "Discordにプレイ中のゲームを表示" @@ -8775,7 +8950,7 @@ msgstr "Discordにプレイ中のゲームを表示" msgid "Show Debugging UI" msgstr "デバッグモード" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "ELF/DOL" @@ -8783,43 +8958,43 @@ msgstr "ELF/DOL" msgid "Show FPS" msgstr "FPSを表示" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "フレームカウンタを表示" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "フランス" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "ゲームキューブ" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "ドイツ" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "Show Golf Mode Overlay" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "入力された操作を表示" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "イタリア" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "韓国" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "ラグカウンタを表示" @@ -8827,7 +9002,7 @@ msgstr "ラグカウンタを表示" msgid "Show Language:" msgstr "次の言語で表示" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "ログの設定を表示(&C)" @@ -8839,7 +9014,7 @@ msgstr "ネットプレイ:OSD表示" msgid "Show NetPlay Ping" msgstr "ネットプレイ:Ping表示" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "オランダ" @@ -8847,7 +9022,7 @@ msgstr "オランダ" msgid "Show On-Screen Display Messages" msgstr "オンスクリーンメッセージを表示" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "PAL規格" @@ -8856,23 +9031,23 @@ msgstr "PAL規格" msgid "Show PC" msgstr "Show PC" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "特定機種のソフトだけを表示" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "次の地域のソフトだけを表示" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "ロシア" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "スペイン" @@ -8881,46 +9056,50 @@ msgstr "スペイン" msgid "Show Statistics" msgstr "統計情報を表示" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "システム時間を表示" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "台湾" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "アメリカ合衆国" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "不明" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "WAD(Wiiウェア/VC/Wiiチャンネル)" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "地域なし" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "Show in &memory" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "Show in code" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "セッションブラウザに表示" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8965,7 +9144,7 @@ msgstr "" "Shows various rendering statistics.

If unsure, " "leave this unchecked." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Side-by-Side" @@ -8981,16 +9160,31 @@ msgstr "横持ち 切替" msgid "Sideways Wii Remote" msgstr "横持ち(Sideways)で使用" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "Signature Database" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "Signed Integer" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "簡体字中国語" @@ -8998,7 +9192,7 @@ msgstr "簡体字中国語" msgid "Simulate DK Bongos" msgstr "タルコンガのシミュレート" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "Six Axis" @@ -9027,7 +9221,7 @@ msgstr "Skip Drawing" msgid "Skip EFB Access from CPU" msgstr "Skip EFB Access from CPU" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "メインメニューをスキップ" @@ -9035,7 +9229,7 @@ msgstr "メインメニューをスキップ" msgid "Skip Presenting Duplicate Frames" msgstr "Skip Presenting Duplicate Frames" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -9054,19 +9248,19 @@ msgstr "" msgid "Slider Bar" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "スロットA" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "スロットA" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "スロットB" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "スロットB" @@ -9084,7 +9278,7 @@ msgstr "Socket table" msgid "Software Renderer" msgstr "Software Renderer" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "Some of the data could not be read." @@ -9105,11 +9299,11 @@ msgstr "" "強調された値を修正してください。" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "アルファベット順で並べ替え" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "サウンドの設定:" @@ -9122,8 +9316,8 @@ msgid "Spain" msgstr "スペイン" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "スペイン語" @@ -9131,7 +9325,7 @@ msgstr "スペイン語" msgid "Speaker Pan" msgstr "スピーカー パン調整" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "リモコンスピーカー音量" @@ -9166,7 +9360,7 @@ msgstr "速度調整" msgid "Speed up Disc Transfer Rate" msgstr "Speed up Disc Transfer Rate" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "安定版 (年に一度のみ)" @@ -9178,16 +9372,16 @@ msgstr "Stack end" msgid "Stack start" msgstr "Stack start" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "標準コントローラ" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "スタート" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "ネットプレイを開始(&N)" @@ -9195,11 +9389,13 @@ msgstr "ネットプレイを開始(&N)" msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "操作の記録を開始(&C)" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "操作の記録を開始" @@ -9215,7 +9411,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "ゲームを開始" @@ -9226,7 +9422,7 @@ msgstr "ゲームを開始" msgid "State" msgstr "State" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "SPEED FORCE" @@ -9254,19 +9450,19 @@ msgstr "Step Out" msgid "Step Over" msgstr "Step Over" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "Step out successful!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "Step out timed out!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "Step over in progress..." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "Step successful!" @@ -9275,20 +9471,20 @@ msgstr "Step successful!" msgid "Stepping" msgstr "Stepping" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "ステレオ" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "表示方式" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "表示方式" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "立体視" @@ -9309,11 +9505,15 @@ msgstr "スティック" msgid "Stop" msgstr "停止" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "操作の再生/記録を停止" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "ゲームを終了" @@ -9327,7 +9527,7 @@ msgstr "Store EFB Copies to Texture Only" msgid "Store XFB Copies to Texture Only" msgstr "Store XFB Copies to Texture Only" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -9341,7 +9541,7 @@ msgstr "" "Texture)

よく分からなければ、チェックを外さないでく" "ださい。" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -9359,7 +9559,7 @@ msgstr "" msgid "Stretch to Window" msgstr "ウィンドウに合わせる" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "設定の同期を厳密にする(Strict Settings Sync)" @@ -9382,16 +9582,16 @@ msgstr "スタイラス" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "完了" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -9401,11 +9601,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr " '%1' の削除に成功しました" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -9414,7 +9614,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "セーブファイルのエクスポートに成功しました" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "証明書ファイルの取り出しに成功しました" @@ -9426,12 +9626,12 @@ msgstr "ファイルの取り出しに成功しました" msgid "Successfully extracted system data." msgstr "システムデータの取り出しに成功しました" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "タイトルのインストールに成功しました" @@ -9443,16 +9643,16 @@ msgstr "タイトルの消去に成功しました" msgid "Support" msgstr "サポート" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "サポートしているすべての形式" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "SD および SDHC 仕様のみサポート。デフォルト容量は 128 MB です" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "サラウンド" @@ -9460,11 +9660,11 @@ msgstr "サラウンド" msgid "Suspended" msgstr "Suspended" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "視点を入れ替える" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9479,50 +9679,62 @@ msgstr "" msgid "Swing" msgstr "動き" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "スロットAを操作" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "スロットBを操作" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "Symbol" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "Symbol (%1) end address:" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "Symbol name:" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "Symbols" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "Sync" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "AR/Gecko コードを同期する" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "すべてのWiiセーブデータを同期する" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "セーブデータを同期する" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "実機Wiiリモコンとのペアリングを行う" @@ -9538,37 +9750,37 @@ msgstr "" "CPU/GPUスレッドを同期させることでデュアルコア動作時のフリーズを抑制します " "[有効=互換性重視/無効=速度向上]" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "アクションリプレイコードの同期中..." -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "Geckoコードの同期中..." -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "セーブデータの同期中..." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "システムの言語:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "TAS Input" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "TAS関係" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "タグを表示" @@ -9586,11 +9798,11 @@ msgstr "Tail" msgid "Taiwan" msgstr "台湾" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "画面撮影" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "テスト" @@ -9599,7 +9811,7 @@ msgstr "テスト" msgid "Texture Cache" msgstr "Texture Cache" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "テクスチャキャッシュの精度" @@ -9621,7 +9833,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "The H3 hash table for the {0} partition is not correct." -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9635,7 +9847,7 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "The Masterpiece partitions are missing." -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." @@ -9643,7 +9855,7 @@ msgstr "" "NANDを修復できませんでした。現在のデータをバックアップして、NANDのダンプから" "やり直すことをオススメします" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "NANDの修復に成功しました" @@ -9681,7 +9893,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9695,7 +9907,7 @@ msgstr "The disc could not be read (at {0:#x} - {1:#x})." msgid "The disc that was about to be inserted couldn't be found." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9721,19 +9933,19 @@ msgstr "このWiiシステムは既に最新版になっています" msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "入力されたデバイス PIDは無効です。" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "入力されたデバイス VIDは無効です。" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9785,7 +9997,7 @@ msgstr "The game ID is {0} but should be {1}." msgid "The game disc does not contain any usable update information." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "ゲームは現在実行中です" @@ -9796,7 +10008,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9813,7 +10025,7 @@ msgstr "ハッシュは一致しませんでした" msgid "The hashes match!" msgstr "全てのハッシュが一致!" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9837,12 +10049,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "選択されたプロファイル '%1' は存在しません" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9857,20 +10069,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "復号化しましたが、このコードにはひとつも行が含まれていません。" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "サーバー側とクライアント側のバージョンに互換性がありません" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "このサーバーは満員です" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "The server sent an unknown error message." @@ -9894,7 +10106,7 @@ msgstr "The specified common key index is {0} but should be {1}." msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" "インポート先のメモリーカードには既にこのファイルのデータが存在します%n\"%1\"" @@ -9948,7 +10160,7 @@ msgstr "The {0} partition is not properly aligned." msgid "There are too many partitions in the first partition table." msgstr "There are too many partitions in the first partition table." -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "取り消すものがありません!" @@ -9987,7 +10199,7 @@ msgstr "" "This Korean title is set to use an IOS that typically isn't used on Korean " "consoles. This is likely to lead to ERROR #002." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "このデバイスは既に登録済みです。" @@ -10007,7 +10219,7 @@ msgstr "" "このアクションリプレイシミュレータは、アクションリプレイそのものを変更する" "コードはサポートしていません。" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "元に戻すことはできません!" @@ -10047,7 +10259,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "このファイルはBootMii NANDバックアップではないようです" @@ -10068,11 +10284,11 @@ msgstr "" "ドもしくはドライバでは対応していないようです。そのためプレイ中にバグやフリー" "ズと遭遇する可能性があります。" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "This is a bad dump." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." @@ -10080,7 +10296,7 @@ msgstr "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." @@ -10088,11 +10304,11 @@ msgstr "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "This is a good dump." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "参加にはパスワードが必要です:" @@ -10160,13 +10376,13 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "ここで設定した値は、グラフィック設定でセットした収束距離に乗算されます" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -10186,7 +10402,7 @@ msgstr "Threads" msgid "Threshold" msgstr "しきい値" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "TiB" @@ -10203,22 +10419,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "タイトル" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "終了" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "終了" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "全画面表示 切り替え(&F)" @@ -10243,7 +10459,7 @@ msgid "Toggle Aspect Ratio" msgstr "アスペクト比 設定切替" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "Toggle Breakpoint" @@ -10303,14 +10519,20 @@ msgstr "" msgid "Toolbar" msgstr "ツールバー" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "上" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Top-and-Bottom" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -10345,20 +10567,20 @@ msgid "Touch" msgstr "タッチボード" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "繁体字中国語" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "中継サーバー (Traversal)" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "中継サーバーからホストへの接続がタイムアウト" @@ -10388,21 +10610,13 @@ msgstr "トリガー" msgid "Type" msgstr "形式" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" -msgstr "U&16" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "U&32" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" -msgstr "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" +msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 msgid "UNKNOWN" @@ -10418,9 +10632,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -10460,10 +10674,14 @@ msgstr "" "パフォーマンスへの影響を最小限に抑えつつカクつきが解消されるはずですが、実際" "どのような結果になるかは使用中のビデオドライバに依存します。" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "Unable to auto-detect RSO module" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10488,7 +10706,11 @@ msgstr "" "\n" "この行を無視して解析を続けますか?" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -10500,15 +10722,15 @@ msgstr "Unbound" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "未圧縮のGC/Wii ISOファイル (*.iso *.gcm)" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "直前のステートロードを取消" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "直前のステートセーブの取消" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "アンインストール" @@ -10523,18 +10745,18 @@ msgid "" msgstr "" "セーブデータを残してNAND内からこのタイトルを削除します。よろしいですか?" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "米国" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "フィルタ無し" @@ -10542,7 +10764,7 @@ msgstr "フィルタ無し" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10552,7 +10774,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10562,15 +10784,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10578,19 +10800,19 @@ msgstr "" msgid "Unknown disc" msgstr "Unknown disc" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "Unknown error." -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10598,7 +10820,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "制限なし" @@ -10614,13 +10836,28 @@ msgstr "マウスカーソルをロック 解除" msgid "Unpacking" msgstr "復元処理を行っています..." +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "Unsigned Integer" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10629,7 +10866,7 @@ msgstr "上" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "再取得" @@ -10686,7 +10923,7 @@ msgstr "直立状態 切替" msgid "Upright Wii Remote" msgstr "直立状態(Upright)で使用" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "統計レポートの設定" @@ -10702,7 +10939,7 @@ msgstr "カスタムテーマを使用 (Custom User Style)" msgid "Use Lossless Codec (FFV1)" msgstr "Use Lossless Codec (FFV1)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "PAL60 (EuRGB60) モードを使用" @@ -10729,18 +10966,40 @@ msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" "両方の目に単一のデプスバッファを使用します。必要となるタイトルはわずかです。" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "ユーザー設定" @@ -10753,18 +11012,18 @@ msgstr "Dolphinの表示に関する設定" msgid "User Style:" msgstr "カスタムテーマ:" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10800,23 +11059,23 @@ msgstr "" msgid "Using Qt %1" msgstr "Using Qt %1" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10829,7 +11088,7 @@ msgstr "ユーティリティ" msgid "V-Sync" msgstr "垂直同期 (V-Sync)" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "値" @@ -10862,8 +11121,8 @@ msgstr "Verify certificates" msgid "Verifying" msgstr "整合性チェック中..." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "バージョン" @@ -10899,7 +11158,7 @@ msgstr "View &memory" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10926,7 +11185,7 @@ msgstr "音量を上げる" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "WADファイル (*.wad)" @@ -10978,7 +11237,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "WASAPI (Exclusive Mode)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10986,8 +11245,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "WIA GC/Wii ISOファイル (*.wia)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -11018,7 +11277,7 @@ msgstr "" "

よく分からなければ、チェックを入れないでください。" "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -11031,10 +11290,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "警告" @@ -11050,28 +11309,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -11097,7 +11356,7 @@ msgstr "" msgid "Watch" msgstr "Watch" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "Webサイト" @@ -11126,11 +11385,11 @@ msgid "" "unsure, leave this checked.
" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "常にパススルーを行うUSBデバイスリスト" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "疑似ワイドスクリーン化" @@ -11146,11 +11405,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Wiiメニュー" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Wii NANDルート" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Wiiリモコン" @@ -11158,8 +11417,8 @@ msgstr "Wiiリモコン" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "Wiiリモコン %1" @@ -11172,11 +11431,11 @@ msgstr "Wiiリモコン ボタン" msgid "Wii Remote Orientation" msgstr "Wiiリモコン モーションセンサー" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Wiiリモコンの設定" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Wiiリモコン" @@ -11192,7 +11451,7 @@ msgstr "Wii TAS Input - Wiiリモコン %1" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "Wii TAS Input %1 - Wiiリモコン + ヌンチャク" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "WiiとWiiリモコン" @@ -11200,7 +11459,7 @@ msgstr "WiiとWiiリモコン" msgid "Wii data is not public yet" msgstr "Wii data is not public yet" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "Wii セーブファイル (*.bin);;すべてのファイル (*)" @@ -11230,18 +11489,18 @@ msgid "World" msgstr "地域なし" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "Write" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "Write only" @@ -11254,12 +11513,12 @@ msgid "Write to File" msgstr "ファイルに出力" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "Write to Log" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "Write to Log and Break" @@ -11267,7 +11526,7 @@ msgstr "Write to Log and Break" msgid "Write to Window" msgstr "ウィンドウに出力" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -11278,7 +11537,7 @@ msgstr "" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "XF register " @@ -11307,8 +11566,8 @@ msgid "Yellow" msgstr "黄" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "はい" @@ -11346,7 +11605,7 @@ msgstr "" "すべての機能を有効化するには macOS 10.14 (Mojave) 以降のOSが必要です。\n" "これより前のOSで問題が発生してもバグ報告はしないでください。" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "最新バージョンを使用しているようです" @@ -11378,11 +11637,11 @@ msgstr "" msgid "You have to enter a name." msgstr "名前が入力されていません" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "セッションに名前を付けてください!" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -11390,7 +11649,7 @@ msgstr "" msgid "You must restart Dolphin in order for the change to take effect." msgstr "この変更を適用するにはDolphinを再起動してください" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "ゲームが選ばれていません!" @@ -11421,23 +11680,23 @@ msgstr "03コードはサポートされていません" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "Zero code unknown to Dolphin: {0:08x}" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "^ Xor(排他的論理和)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -11456,13 +11715,13 @@ msgstr "cm" msgid "d3d12.dll could not be loaded." msgstr "d3d12.dll could not be loaded." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "既定" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -11478,31 +11737,31 @@ msgstr "errno" msgid "fake-completion" msgstr "擬似シングルコア (fake-completion)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -11534,7 +11793,7 @@ msgstr "off" msgid "on" msgstr "on" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "もしくは下の一覧から選択" @@ -11543,7 +11802,7 @@ msgstr "もしくは下の一覧から選択" msgid "s" msgstr "秒" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -11552,7 +11811,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "uDraw GameTablet" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -11571,7 +11830,7 @@ msgstr "{0} (Masterpiece)" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -11590,7 +11849,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11598,7 +11857,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "| Or(論理和)" diff --git a/Languages/po/ko.po b/Languages/po/ko.po index 92578313929a..684e508ae361 100644 --- a/Languages/po/ko.po +++ b/Languages/po/ko.po @@ -3,7 +3,7 @@ # This file is distributed under the same license as the Dolphin Emulator package. # # Translators: -# Siegfried, 2013-2021 +# Siegfried, 2013-2022 # its take , 2016 # its take , 2015 # Siegfried, 2011 @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Siegfried, 2013-2022\n" "Language-Team: Korean (http://www.transifex.com/delroth/dolphin-emu/language/" "ko/)\n" "Language: ko\n" @@ -22,7 +22,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -34,7 +34,7 @@ msgstr "" "게임큐브 디스크 이미지들이 작은 검증 데이터를 담고 있어서, 돌핀이 감지할 수 " "없는 문제들이 있을 수도 있습니다." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -46,7 +46,7 @@ msgstr "" "이 타이틀은 리테일 Wii 콘솔을 위한 것이 아니여서, 돌핀은 그것이 조작되었는지 " "검증할 수 없습니다." -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -70,7 +70,7 @@ msgstr "" msgid " (Disc %1)" msgstr " (디스크 %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "! 아님" @@ -78,7 +78,7 @@ msgstr "! 아님" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "\"{0}\"는 부적합한 GCM/ISO 파일이거나, GC/Wii ISO 파일이 아닙니다." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "$ 사용자 변수" @@ -92,7 +92,7 @@ msgstr "$ 사용자 변수" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "% 나머지" @@ -108,17 +108,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "%1 %2" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "%1 %2 %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -137,7 +137,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (개정 %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "%1 (기본)" @@ -177,7 +177,7 @@ msgstr "%1 MB (MEM2)" msgid "%1 doesn't support this feature on your system." msgstr "%1 는 당신의 시스템에서 이 특성을 지원하지 않습니다." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "%1 는 이 특성을 지원하지 않습니다" @@ -191,23 +191,23 @@ msgstr "" "%2 오브젝트(들)\n" "현재 프레임: %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "%1 가 참가했습니다" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "%1 가 떠났습니다" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "%1 는 적합한 롬이 아닙니다" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "%1 은 지금 골프중입니다" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "%1 메모리 영역" @@ -216,11 +216,11 @@ msgstr "%1 메모리 영역" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "%1 세션이 발견되었습니다" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "%1 세션들이 발견되었습니다" @@ -232,15 +232,15 @@ msgstr "%1%" msgid "%1% (%2 MHz)" msgstr "%1% (%2 MHz)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (보통 속도)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "%1, %2, %3, %4" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "%1: %2" @@ -256,30 +256,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2]: %3/%4 MiB" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "%1x 원본 (%2x%3)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "%n 주소(들)은 에뮬된 메모리에서 엑세스할 수 없습니다." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "%n 주소(들)이 남았습니다." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "%n 주소(들)이 지워졌습니다." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "& 그리고" @@ -299,7 +299,7 @@ msgstr "&3x" msgid "&4x" msgstr "&4x" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "돌핀 정보(&A)" @@ -308,11 +308,11 @@ msgid "&Add Memory Breakpoint" msgstr "메모리 중단점 추가 (&A)" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "새로운 코드 추가... (&A)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "함수 추가 (&A)" @@ -320,19 +320,19 @@ msgstr "함수 추가 (&A)" msgid "&Add..." msgstr "추가... (&A)" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "오디오 설정(&A)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "자동 업데이트(&A):" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "자동 시작 (&A)" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "DVD 백업에서 부트(&B)" @@ -340,11 +340,11 @@ msgstr "DVD 백업에서 부트(&B)" msgid "&Borderless Window" msgstr "틀 없는 창(&B)" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "중단점 (&B)" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "버그 추적자(&B)" @@ -352,15 +352,15 @@ msgstr "버그 추적자(&B)" msgid "&Cancel" msgstr "취소(&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "치트 매니저(&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "업데이트 확인(&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "부호 지우기 (& C)" @@ -368,7 +368,7 @@ msgstr "부호 지우기 (& C)" msgid "&Clone..." msgstr "복제... (&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "코드 (&C)" @@ -376,19 +376,20 @@ msgstr "코드 (&C)" msgid "&Connected" msgstr "연결된(&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "컨트롤러 설정(&C)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "주소 복사 (&C)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "생성...(&C)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "삭제 (&)" @@ -400,7 +401,7 @@ msgstr "관찰 삭제 (&D)" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "코드 수정... (&E)" @@ -408,11 +409,11 @@ msgstr "코드 수정... (&E)" msgid "&Edit..." msgstr "편집... (&E)" -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "디스크 꺼내기(&E)" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "에뮬레이션(&E)" @@ -424,43 +425,47 @@ msgstr "게임 저장 내보내기...(&E)" msgid "&Export State..." msgstr "상태 내보내기...(&E)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr ".gci 로 내보내기... (&E)" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "파일(&F)" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "폰트 (&F)" -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "프레임 진행(&F)" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "자유 보기 설정(&F)" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "부호 생성 (&G)" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "GitHub 저장소(&G)" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "그래픽 설정(&G)" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "도움말(&H)" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "단축키 설정(&H)" @@ -472,11 +477,11 @@ msgstr "게임 저장 가져오기...(&I)" msgid "&Import State..." msgstr "상태 가져오기...(&I)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "가져오기... (&I)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "blr 삽입 (&I)" @@ -484,7 +489,7 @@ msgstr "blr 삽입 (&I)" msgid "&Interframe Blending" msgstr "프레임간 혼합(&I)" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "JIT(&J)" @@ -492,23 +497,23 @@ msgstr "JIT(&J)" msgid "&Language:" msgstr "언어(&L):" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "상태 로드(&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "로드 부호 맵 (&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "위젯 고정(&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "메모리(&M)" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "무비(&M)" @@ -516,7 +521,7 @@ msgstr "무비(&M)" msgid "&Mute" msgstr "음소거(&M)" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "네트워크(&N)" @@ -524,24 +529,24 @@ msgstr "네트워크(&N)" msgid "&No" msgstr "아니요(&N)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "열기...(&O)" -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "옵션(&O)" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "HLE 함수 패치 (&P)" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "일시정지(&P)" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "실행(&P)" @@ -549,11 +554,11 @@ msgstr "실행(&P)" msgid "&Properties" msgstr "속성(&P)" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "읽기 전용 모드(&R)" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "레지스터 (&R)" @@ -562,24 +567,24 @@ msgid "&Remove" msgstr "제거 (&R)" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "코드 제거 (&R)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "부호 이름 바꾸기 (&R)" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "리셋(&R)" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "리소스 팩 매니저(&R)" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "부호 맵 저장 (&S)" @@ -587,11 +592,11 @@ msgstr "부호 맵 저장 (&S)" msgid "&Scan e-Reader Card(s)..." msgstr "e-Reader 카드 스캔...(&S)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "속도 제한(&S):" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "중지(&S)" @@ -599,11 +604,11 @@ msgstr "중지(&S)" msgid "&Theme:" msgstr "테마(&T):" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "쓰레드(&T)" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "도구(&T)" @@ -611,17 +616,17 @@ msgstr "도구(&T)" msgid "&Unload ROM" msgstr "롬 언로드(&U)" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "보기(&V)" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "관찰(&W)" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "웹사이트(&W)" @@ -633,11 +638,11 @@ msgstr "위키(&W)" msgid "&Yes" msgstr "예(&Y)" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "'%1' 이 발견되지 않았습니다, 생성된 부호 이름이 없습니다." -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "'%1' 이 발견되지 않았습니다, 공통 함수들을 대신 스캔합니다" @@ -649,7 +654,7 @@ msgstr "(없음)" msgid "(host)" msgstr "(호스트)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(꺼짐)" @@ -657,34 +662,34 @@ msgstr "(꺼짐)" msgid "(ppc)" msgstr "(ppc)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "* 곱하기" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "+ 더하기" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr ", 쉼표" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "- 빼기" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "--> %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "/ 나누기" @@ -692,6 +697,10 @@ msgstr "/ 나누기" msgid "128 Mbit (2043 blocks)" msgstr "128 Mbit (2043 블락)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "16 Mbit (251 블락)" @@ -700,35 +709,35 @@ msgstr "16 Mbit (251 블락)" msgid "16-bit" msgstr "16-비트" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "16-비트 부호화 정수" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "16-비트 비부호화 정수" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x 원본 (1280x1056) 720p용" @@ -740,25 +749,25 @@ msgstr "32 Mbit (507 블락)" msgid "32-bit" msgstr "32-비트" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "32-비트 실수" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "32-비트 부호화 정수" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "32-비트 비부호화 정수" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -772,28 +781,32 @@ msgstr "3D 깊이" msgid "3x" msgstr "3x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x 원본 (1920x1584) 1080p용" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Mbit (59 블락)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x 원본 (2560x2112) 1440p용" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x 원본 (3200x2640)" @@ -801,29 +814,33 @@ msgstr "5x 원본 (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Mbit (1019 블락)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "64-비트 실수" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "64-비트 부호화 정수" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "64-비트 비부호화 정수" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x 원본 (3840x3168) 4K용" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x 원본 (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Mbit (123 블락)" @@ -832,25 +849,25 @@ msgstr "8 Mbit (123 블락)" msgid "8-bit" msgstr "8-비트" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "8-비트 부호화 정수" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "8-비트 비부호화 정수" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x 원본 (5120x4224) 5K용" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "< 보다-적은" @@ -872,12 +889,12 @@ msgstr "" "신은 %2 를 구동하고 있습니다.
업데이트하고 싶습니까?

릴리즈 노트:" "

" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "> 보다-큰" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "넷플레이 세션이 이미 진행 중입니다!" @@ -901,11 +918,11 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "디스크가 이미 삽입되려는 중입니다." -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "저장 상태는 시작할 게임 명시 없이는 로드될 수 없습니다." -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -913,16 +930,16 @@ msgstr "" "종료가 이미 진행 중입니다. 저장되지 않은 데이터는 완료되기 전에 현재 에뮬레이" "션을 중단하면 잃을 수도 있습니다. 중지시키겠습니까?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "Wii 게임이 구동 중일 때만 동기화가 발동될 수 있습니다." #. i18n: A mysterious debugging/diagnostics peripheral for the GameCube. #: Source/Core/Core/HW/EXI/EXI_Device.h:89 msgid "AD16" -msgstr "" +msgstr "AD16" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -958,8 +975,8 @@ msgstr "AR 코드" msgid "AR Codes" msgstr "AR 코드" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "애스키" @@ -982,7 +999,7 @@ msgstr "가속도계" msgid "Accuracy:" msgstr "정확성:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "액션" @@ -1094,9 +1111,9 @@ msgstr "어댑터가 감지되었습니다" msgid "Adapter:" msgstr "어댑터:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "추가" @@ -1104,11 +1121,11 @@ msgstr "추가" msgid "Add &breakpoint" msgstr "중단점 추가(&b)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "새로운 DSU 서버 추가" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "새로운 USB 장치 추가" @@ -1140,46 +1157,49 @@ msgstr "메모리 중단점 추가" msgid "Add to &watch" msgstr "관찰에 추가 (&w)" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "관찰에 추가" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "추가..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "주소" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "주소 공간" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "CPU 상태에 의한 주소 공간" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "주소:" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1241,39 +1261,43 @@ msgstr "고급" msgid "Africa" msgstr "아프리카" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "데이터 타입 길이로 정렬됨" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "모든 파일" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "모든 파일 (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "모든 GC/Wii 파일들" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "모든 저장 상태 (*.sav *.s##);; 모든 파일 (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "모든 장치" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "모든 플레이어의 코드가 동기화되었습니다." @@ -1282,19 +1306,19 @@ msgstr "모든 플레이어의 코드가 동기화되었습니다." msgid "All players' saves synchronized." msgstr "모든 플레이어의 저장이 동기화되었습니다." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "맞지 않는 지역 설정 허락" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "사용 통계 보고 허용" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "SD 카드에 쓰기 허용" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." @@ -1302,7 +1326,7 @@ msgstr "" "인-게임 카메라 조종을 허용합니다.

잘 모르겠으면, 체" "크 해제해 두세요." -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1328,7 +1352,7 @@ msgstr "항상 위에(&T)" msgid "An inserted disc was expected but not found." msgstr "삽입된 디스크가 예상되었지만 찾지 못했습니다." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "입체" @@ -1346,39 +1370,39 @@ msgstr "각도" msgid "Angular velocity to ignore and remap." msgstr "무시하고 리맵핑할 각 속도" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "비등방성 필터링" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "비등방성 필터링:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "안티-앨리어싱" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "안티-앨리어싱:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "아무 지역" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "서명 덧붙이기" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "존재하는 서명 파일에 덧붙이기... (&E)" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "서명 파일 적용... (&y)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1394,15 +1418,15 @@ msgstr "앱로더 날짜:" msgid "Apply" msgstr "적용" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "서명 파일 적용" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "독단적 밉맵 감지" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "'%1' 를 정말로 지우고 싶습니까?" @@ -1410,11 +1434,11 @@ msgstr "'%1' 를 정말로 지우고 싶습니까?" msgid "Are you sure you want to delete this file?" msgstr "이 파일을 정말로 삭제하시겠습니까?" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "이 팩을 정말로 삭제하시겠습니까?" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "정말로 넷플레이를 종료하고 싶습니까?" @@ -1427,11 +1451,11 @@ msgid "Aspect Ratio" msgstr "종횡비" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "종횡비:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "컨트롤러 포트 할당" @@ -1439,7 +1463,7 @@ msgstr "컨트롤러 포트 할당" msgid "Assign Controllers" msgstr "컨트롤러 할당" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "선택된 저장 파일중에 적어도 2개가 같은 내부 파일명입니다." @@ -1464,7 +1488,7 @@ msgstr "오디오 늘림 설정" msgid "Australia" msgstr "오스트레일리아" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "작성자" @@ -1476,15 +1500,15 @@ msgstr "제작자" msgid "Auto" msgstr "자동" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "자동 (640x528의 배수)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "설정 자동 업데이트" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1504,7 +1528,7 @@ msgstr "창 크기 자동 조정" msgid "Auto-Hide" msgstr "자동-숨기기" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "RSO 모듈을 자동-감지할까요?" @@ -1517,12 +1541,12 @@ msgstr "" "면, 체크 해제해 두세요.
" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "보조" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "B" @@ -1540,11 +1564,11 @@ msgstr "" "가 사용되어야만 합니다. 00:09:bf 나 00:17:ab 로 시작하는 새로운 MAC 주소를 생" "성하세요." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "바이오스:" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "BP 레지스터" @@ -1570,7 +1594,7 @@ msgstr "백엔드 설정" msgid "Backend:" msgstr "백엔드:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "백그라운드 입력" @@ -1581,7 +1605,13 @@ msgstr "백그라운드 입력" msgid "Backward" msgstr "뒤로" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "안 좋은 주소가 제공되었습니다." @@ -1589,19 +1619,20 @@ msgstr "안 좋은 주소가 제공되었습니다." msgid "Bad dump" msgstr "안 좋은 덤프" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "안 좋은 오프셋이 제공되었습니다." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "안 좋은 값이 제공되었습니다." #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "배너" @@ -1625,7 +1656,7 @@ msgstr "기본 우선순위" msgid "Basic" msgstr "기본" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "기본 설정" @@ -1633,7 +1664,7 @@ msgstr "기본 설정" msgid "Bass" msgstr "베이스" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "배치 모드는 시작할 게임 명시 없이는 사용될 수 없습니다." @@ -1641,11 +1672,11 @@ msgstr "배치 모드는 시작할 게임 명시 없이는 사용될 수 없습 msgid "Battery" msgstr "배터리" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "베타 (한 달에 한 번)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "BetterJoy, DS4Windows, 등등" @@ -1667,7 +1698,7 @@ msgstr "비트레이트 (kbps):" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "블락 크기" @@ -1680,7 +1711,7 @@ msgstr "블락 크기:" msgid "Blocking" msgstr "블락킹" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "블록들" @@ -1705,15 +1736,15 @@ msgstr "" "블루투스 패스쓰루 모드가 켜졌습니다, 하지만 돌핀이 libusb 없이 빌드되었습니" "다. 패스쓰루 모드를 사용할 수 없습니다." -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "부팅하고 멈추기" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "BootMii NAND 백업 파일 (*.bin);;모든 파일 (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "BootMii 키 파일 (*.bin);;모든 파일 (*)" @@ -1721,7 +1752,7 @@ msgstr "BootMii 키 파일 (*.bin);;모든 파일 (*)" msgid "Borderless Fullscreen" msgstr "틀 없는 전체화면" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "아래" @@ -1735,7 +1766,7 @@ msgid "Branches" msgstr "분기들" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "중단" @@ -1744,7 +1775,7 @@ msgstr "중단" msgid "Breakpoint" msgstr "중단점" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "중단점을 만났습니다! 스텝 나가기가 중단되었습니다." @@ -1774,7 +1805,7 @@ msgstr "광대역 어댑터 에러" msgid "Broadband Adapter MAC Address" msgstr "광대역 어댑터 맥 어드레스" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "넷플레이 세션들 둘러보기...(&N)" @@ -1782,12 +1813,12 @@ msgstr "넷플레이 세션들 둘러보기...(&N)" msgid "Buffer Size:" msgstr "버퍼 크기:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "버퍼 크기가 %1 로 변경되었습니다" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "버퍼:" @@ -1831,11 +1862,11 @@ msgstr "버튼" msgid "C Stick" msgstr "C 스틱" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "서명 파일 생성... (&C)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "CP 레지스터" @@ -1870,7 +1901,7 @@ msgstr "" msgid "Calculate" msgstr "계산" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1894,15 +1925,15 @@ msgstr "측정" msgid "Calibration Period" msgstr "측정 기간" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" -msgstr "" +msgstr "%1 에 %2 크기로 디스플레이 목록 불러오기" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "콜스텍" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "카메라 1" @@ -1912,7 +1943,7 @@ msgstr "카메라 1" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "카메라 시야 ( 포인팅 민감도에 영향을 줍니다)." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "가상 메모리 값용 AR 코드만 생성할 수 있습니다." @@ -1920,16 +1951,16 @@ msgstr "가상 메모리 값용 AR 코드만 생성할 수 있습니다." msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "{0:02x} 연결 핸들로 Wii 리모트를 찾을 수 없음" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "게임이 여전히 구동되는 동안에 넷플레이 세션을 시작할 수 없습니다!" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "취소" @@ -1946,23 +1977,23 @@ msgstr "FIFO 를 단일단계로 처리할 수 없습니다. 프레임 진행을 msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "NAND 에 설치될 수 없기 때문에 이 WAD 를 부팅할 수 없습니다." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "첫 검색의 마지막 값과 비교할 수 없습니다." -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "GC IPL 을 찾을 수 없습니다." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "이 주소에 대한 AR 코드를 생성할 수 없습니다." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "결과 없이 새로할 수 없습니다." -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "GC IPL 을 찾을 수 없어서, 게임을 시작할 수 없습니다." @@ -1984,7 +2015,7 @@ msgstr "중앙과 측정" msgid "Change &Disc" msgstr "디스크 변경(&D)" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "디스크 변경...(&D)" @@ -1992,15 +2023,15 @@ msgstr "디스크 변경...(&D)" msgid "Change Disc" msgstr "디스크 변경" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "디스크 자동 교환" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "{0} 로 디스크를 변경합니다." -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -2028,7 +2059,7 @@ msgstr "치트 변경은 게임을 재시작해야만 효과가 반영될 것입 msgid "Channel Partition (%1)" msgstr "채널 파티션 (%1)" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "대화" @@ -2044,11 +2075,11 @@ msgstr "치트 찾기" msgid "Cheats Manager" msgstr "치트 관리자" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "NAND 체크..." -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "게임 목록 변경을 백그라운드로 체크" @@ -2064,7 +2095,7 @@ msgstr "" "파일 삭제에 필요한 권한이 있는지 아니면 파일이 여전히 사용중에 있는지 확인하" "세요." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "체크섬" @@ -2072,16 +2103,16 @@ msgstr "체크섬" msgid "China" msgstr "중국" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "열 파일 선택하기" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "우선 입력 파일 선택" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "차선 입력 파일 선택" @@ -2104,14 +2135,14 @@ msgid "Classic Controller" msgstr "클래식 컨트롤러" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "지움" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "캐시 청소" @@ -2128,28 +2159,47 @@ msgstr "복제하고 코드 수정... (&E)" msgid "Close" msgstr "닫기" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "환경설정(&n)" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "코드" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "코드:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "코드들을 받았습니다!" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "두 서명 파일을 합치기... (&T)" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "공통" @@ -2167,7 +2217,7 @@ msgstr "쉐이더들 컴파일하기" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "압축" @@ -2180,7 +2230,7 @@ msgstr "압축 레블:" msgid "Compression:" msgstr "압축:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "상태" @@ -2192,13 +2242,13 @@ msgstr "조건" msgid "Config" msgstr " 환경설정" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "설정" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "컨트롤러 설정" @@ -2206,21 +2256,21 @@ msgstr "컨트롤러 설정" msgid "Configure Dolphin" msgstr "돌핀 환경설정" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "입력 설정" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "출력 설정" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "확정" @@ -2233,26 +2283,26 @@ msgstr "백엔드 변경 확정" msgid "Confirm on Stop" msgstr "멈출 때 확인" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "확정" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "연결" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "밸런스 보드 연결" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "USB 키보드 연결" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "Wii 리모트 %1 연결" @@ -2272,11 +2322,11 @@ msgstr "Wii 리모트 3 연결" msgid "Connect Wii Remote 4" msgstr "Wii 리모트 4 연결" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "Wii 리모트 연결" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "에뮬된 컨트롤러에 대한 Wii 리모트 연결" @@ -2288,15 +2338,19 @@ msgstr "인터넷에 연결하여 온라인 시스템 업데이트를 하시겠 msgid "Connected" msgstr "연결되었습니다" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "연결중" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "연결 종류:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "내용 {0:08x} 은 오류입니다." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "지속적인 스캐닝" @@ -2309,7 +2363,7 @@ msgstr "넷플레이 골프 모드 컨트롤" msgid "Control Stick" msgstr "컨트롤 스틱" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "컨트롤러 프로파일" @@ -2337,7 +2391,7 @@ msgstr "컨트롤러 설정" msgid "Controllers" msgstr "컨트롤러" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2348,7 +2402,7 @@ msgstr "" "입니다.

높은 수치는 더 강한 화면-밖 효과를 만듭니다 반면 낮은 수치는 " "좀 더 편안합니다." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2362,7 +2416,7 @@ msgstr "" "올 것입니다.

모르겠으면, 원본을 선택하세요." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2394,12 +2448,12 @@ msgid "" msgstr "" "높은 혹은 낮은-레벨 DSP 에뮬레이션을 사용할지 정합니다. 기본값은 켜기" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "수렴" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "수렴:" @@ -2440,33 +2494,38 @@ msgstr "" "변환중...\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "복사" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "함수 복사 (&f)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "헥스 복사 (&h)" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "주소 복사" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "복사가 실패했습니다" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "헥스 복사" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "코드 줄 복사 (&l)" @@ -2474,11 +2533,15 @@ msgstr "코드 줄 복사 (&l)" msgid "Copy failed" msgstr "복사에 실패했습니다." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "A로 복사" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "B로 복사" @@ -2493,16 +2556,16 @@ msgstr "코어" msgid "Cost" msgstr "비용" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "호스트와 통신할 수 없었습니다." -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "클라이언트를 생성할 수 없었습니다." -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "피어를 생성할 수 없었습니다." @@ -2610,15 +2673,15 @@ msgstr "" "에뮬레이터 디렉토리를 이동한 후에 이 메시지를 받고 있나요?\n" "그렇다면, 옵션에서 메모리카드 위치를 재지정해야 합니다." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "중앙 서버를 찾을 수 없습니다" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "파일을 열 수 없습니다." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "파일을 읽을 수 없습니다." @@ -2650,7 +2713,7 @@ msgstr "" "dolphin_emphasis>" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "만든이:" @@ -2675,11 +2738,11 @@ msgstr "" msgid "Crossfade" msgstr "크로스페이드" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "현재 지역" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "현재 값" @@ -2687,7 +2750,7 @@ msgstr "현재 값" msgid "Current context" msgstr "현재 맥락" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "현재 게임" @@ -2695,7 +2758,7 @@ msgstr "현재 게임" msgid "Current thread" msgstr "현재 쓰레드" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "커스텀 주소 공간" @@ -2726,7 +2789,7 @@ msgstr "DFF 파일 크기가 0; 변질된/미완성 파일?" msgid "DJ Turntable" msgstr "디제이 턴테이블" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "DK 봉고" @@ -2754,7 +2817,7 @@ msgstr "DSP LLE 리컴파일러 (느림)" msgid "DSU Client" msgstr "DSU 클라이언트" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2766,11 +2829,11 @@ msgstr "" "href=\"https://wiki.dolphin-emu.org/index.php?title=DSU_Client\">는 이 페이" "지
를 참조합니다." -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "댄스 매트" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "데이터" @@ -2782,28 +2845,27 @@ msgstr "데이터 파티션 (%1)" msgid "Data Transfer" msgstr "데이터 전송" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "데이터 타입" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "사용되면 안되는 파일의 구역에 있는 데이터" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "데이터가 인식불가 형식이거나 오염되었습니다." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "GC메모리메니저에서 데이터 비일관성, 액션을 중단함." -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "데이터를 받았습니다!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "Datel MaxDrive/Pro 파일" @@ -2821,7 +2883,7 @@ msgid "Debug Only" msgstr "디버그 전용" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "디버깅" @@ -2863,7 +2925,7 @@ msgstr "X 감소" msgid "Decrease Y" msgstr "Y 감소" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "기본" @@ -2879,7 +2941,7 @@ msgstr "기본 장치" msgid "Default Font" msgstr "기본 폰트" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "기본 ISO:" @@ -2909,7 +2971,7 @@ msgstr "" "다.

잘 모르겠으면, 체크 해제해 두세요." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2924,11 +2986,11 @@ msgid "Delete Selected Files..." msgstr "선택된 파일들 삭제..." #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "존재하는 파일 '{0}' 를 삭제합니까?" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "깊이" @@ -2936,21 +2998,21 @@ msgstr "깊이" msgid "Depth Percentage:" msgstr "깊이 퍼센트:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "깊이:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "설명" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "설명:" @@ -2959,11 +3021,11 @@ msgstr "설명:" msgid "Detached" msgstr "떨어진" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "감지" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "RSO 모듈 감지하기" @@ -2971,25 +3033,25 @@ msgstr "RSO 모듈 감지하기" msgid "Deterministic dual core:" msgstr "결정론적 듀얼 코어:" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "개발 (하루에 여러 번)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "장치" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "장치 PID (예, 0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "장치 설정" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "장치 VID (예, 057e)" @@ -3001,11 +3063,15 @@ msgstr "장치:" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "%1 을 적합한 Riivolution XML 파일로 인식하지 못했습니다." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "활동이 없을 경우 5분후에 화면을 어둡게 합니다." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "직접 연결" @@ -3042,7 +3108,7 @@ msgstr "비활성화" msgid "Disable Bounding Box" msgstr "바운딩 박스 끄기" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "복사 필터 비활성" @@ -3054,15 +3120,15 @@ msgstr "EFB 비디오램 복사 비활성" msgid "Disable Emulation Speed Limit" msgstr "에뮬레이션 속도 제한 끄기" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "Fastmem 비활성" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "안개 끄기" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "JIT 캐시 비활성" @@ -3070,7 +3136,7 @@ msgstr "JIT 캐시 비활성" msgid "Disabled" msgstr "비활성화됨" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -3090,7 +3156,7 @@ msgstr "" "링을 막습니다.

잘 모르겠으면, 체크 해제해 두세요." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -3112,11 +3178,15 @@ msgstr "디스크" msgid "Discard" msgstr "폐기" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "값들을 Hex 로 보여주기" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -3139,25 +3209,25 @@ msgstr "거리" msgid "Distance of travel from neutral position." msgstr "중립 위치에서 이동 거리" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "돌핀이 정보를 돌핀 개발자들에게 보고하도록 허가하시겠습니까?" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "\"%1\" 를 게임 경로들의 목록에 추가하고 싶습니까?" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "부호 이름 목록을 청소할까요?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "선택된 저장 파일 %n 을 삭제하고 싶습니까?" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "에뮬레이션을 중단하고 싶습니까?" @@ -3174,9 +3244,9 @@ msgstr "돌핀 FIFO 로그 (*.dff)" msgid "Dolphin Game Mod Preset" msgstr "돌핀 게임 모드 프리셋" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "돌핀 맵 파일 (*.map)" @@ -3188,8 +3258,8 @@ msgstr "돌핀 서명 CSV 파일" msgid "Dolphin Signature File" msgstr "돌핀 서명 파일" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "돌핀 TAS 무비 (*.dtm)" @@ -3231,11 +3301,11 @@ msgstr "돌핀이 요청된 액션 완수에 실패했습니다." msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "돌핀은 무료이고 오픈-소스 게임큐브 및 Wii 에뮬레이터입니다." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "횡단 서버에 비해 돌핀이 너무 구 버전입니다." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." @@ -3243,11 +3313,11 @@ msgstr "" "실제 디스크의 덤프들이 아니기 때문에, 돌핀은 일반 TGC 파일들을 올바르게 검증" "할 수 없습니다." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "돌핀은 라이슨스되지 않은 디스크들을 검증할 수 없습니다." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3263,7 +3333,7 @@ msgstr "돌핀의 치트 시스템이 현재 꺼졌습니다." msgid "Domain" msgstr "도메인" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "업데이트 안함" @@ -3276,24 +3346,26 @@ msgid "Done compressing disc image." msgstr "디스크 이미지 압축이 완료되었습니다." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "더블" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "아래쪽" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "코드 다운로드" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "WiiRD 데이터베이스에서 코드를 다운로드" @@ -3301,11 +3373,11 @@ msgstr "WiiRD 데이터베이스에서 코드를 다운로드" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "GameTDB.com 에서 그리드 모드에 사용할 게임커버를 다운로드" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "다운로드 완료" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "%1 코드들이 다운로드됨. (%2 추가됨)" @@ -3328,27 +3400,35 @@ msgstr "드럼 키트" msgid "Dual Core" msgstr "듀얼 코어" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "더미" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "ARAM 덤프(&A)" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "확장램 덤프(&E)" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "가짜가상메모리 덤프(&F)" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "MRAM 덤프(&M)" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "오디오 덤프" @@ -3360,7 +3440,7 @@ msgstr "기반 텍스처 덤프" msgid "Dump EFB Target" msgstr "EFB 타겟 덤프" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "프레임들 덤프" @@ -3372,7 +3452,7 @@ msgstr "밉맵 덤프" msgid "Dump Objects" msgstr "오브젝트 덤프" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "덤프 경로:" @@ -3485,18 +3565,18 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "터보 버튼 떼기의 기간 (프레임)" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "네덜란드어" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "종료(&x)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" -msgstr "" +msgstr "EFB 복사 %1" #: Source/Core/Core/HW/EXI/BBA/TAP_Win32.cpp:216 msgid "" @@ -3509,7 +3589,7 @@ msgstr "" "-- 최근에 돌핀 배포를 업그레이드했다면, 윈도우가 새로운 드라이버를 인식하기 " "위해 재부팅이 필요합니다." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3540,7 +3620,7 @@ msgstr "효과" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "효과적인" @@ -3548,7 +3628,7 @@ msgstr "효과적인" msgid "Effective priority" msgstr "효율 우선순위" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "EiB" @@ -3560,7 +3640,7 @@ msgstr "디스크 꺼내기" msgid "Embedded Frame Buffer (EFB)" msgstr "내장형 프레임 버퍼 (EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "비어있음" @@ -3568,11 +3648,11 @@ msgstr "비어있음" msgid "Emu Thread already running" msgstr "에뮬 쓰레드가 이미 구동중임" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "Wii 의 블루투스 어댑터를 에뮬" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "에뮬된 Wii 리모트" @@ -3591,8 +3671,12 @@ msgstr "" msgid "Emulation Speed" msgstr "에뮬레이션 속도" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3608,7 +3692,7 @@ msgstr "API 검증 레이어 활성화" msgid "Enable Audio Stretching" msgstr "오디오 늘림 활성" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "치트 활성화" @@ -3620,7 +3704,7 @@ msgstr "사용자 지정 RTC 켜기" msgid "Enable Dual Core" msgstr "듀얼 코어 활성화" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "듀얼 코어 활성화 (속도 상승)" @@ -3646,19 +3730,19 @@ msgid "Enable Progressive Scan" msgstr "프로그레시브 스캔 활성화" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "진동 활성화" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "화면 보호기 활성화" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "스피커 데이터 활성화" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "사용 통계 보고 활성화" @@ -3690,7 +3774,7 @@ msgstr "" "부동 소수점 결과 플래그 계산을 켭니다, 소수의 게임들에서 필요합니다. (켬 = 호" "환성, 끔 = 빠름)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3701,7 +3785,7 @@ msgstr "" "향상시킵니다.

소수 게임에서 이슈들을 일으킬지도 모릅니다." "

잘 모르겠으면, 1x를 선택하세요." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3744,7 +3828,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "에뮬레이션 스피드와 맞도록 오디오 늘리기를 활성화합니다." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3790,7 +3874,7 @@ msgstr "" msgid "Encoding" msgstr "인코딩" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3807,12 +3891,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet이 초기화되지 않았습니다." #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "영어" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3822,7 +3906,7 @@ msgstr "향상" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "XLink Kai 클라이언트를 구동할 장치의 IP 주소 입력 :" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "USB 장치 ID 를 입력하세요" @@ -3836,11 +3920,11 @@ msgstr "관찰할 주소 입력:" msgid "Enter new Broadband Adapter MAC address:" msgstr "새로운 광대역 어댑터 맥 어드레스 입력:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "패스워드 입력" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "RSO 모듈 주소를 입력:" @@ -3849,65 +3933,68 @@ msgstr "RSO 모듈 주소를 입력:" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "오류" @@ -3921,19 +4008,19 @@ msgid "Error loading selected language. Falling back to system default." msgstr "" "선택된 언어 가져오는 데 오류가 발생했습니다. 기본 시스템 언어로 돌아갑니다." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "에러가 있는 세션 목록: %1" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "일부 텍스처 팩을 로딩하는 중에 에러가 발생했습니다" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "코드들 처리 에러." -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "데이터 처리 에러." @@ -3953,7 +4040,7 @@ msgstr "저장 데이터 동기화 에러!" msgid "Error writing file: {0}" msgstr "파일 쓰기 에러: {0}" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -4009,11 +4096,11 @@ msgstr "" "오류: Windows-1252 폰트들 접근을 시도하였으나 로드되지 않았습니다. 게임들이 " "제대로 폰트들을 보여주지 않거나 깨짐이 발생할 수 있습니다." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "{1} 파티션에 {0} 블락들에서 에러들이 발견되었습니다." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "{1} 파티션에 {0} 사용되지 않은 블락들에서 에러들이 발견되었습니다." @@ -4022,11 +4109,39 @@ msgstr "{1} 파티션에 {0} 사용되지 않은 블락들에서 에러들이 msgid "Euphoria" msgstr "유포리아" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "유럽" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "전용 우버쉐이더" @@ -4075,14 +4190,14 @@ msgstr "변수 이름을 예상했습니다." msgid "Experimental" msgstr "실험적" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "모든 Wii 저장을 내보내기" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "내보내기를 실패했습니다" @@ -4090,15 +4205,15 @@ msgstr "내보내기를 실패했습니다" msgid "Export Recording" msgstr "입력 기록 내보내기" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "입력 기록 내보내기..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "저장 파일 내보내기" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "저장 파일들 내보내기" @@ -4110,22 +4225,22 @@ msgstr "Wii 저장 내보내기" msgid "Export Wii Saves" msgstr "Wii 저장들 내보내기" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr ".gcs 로 내보내기... (&g)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr ".sav 로 내보내기... (&s)" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "%n 저장(들)을 내보냈습니다" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "확장" @@ -4138,7 +4253,7 @@ msgstr "확장 모션 입력" msgid "Extension Motion Simulation" msgstr "확장 모션 시뮬레이션" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "외부의" @@ -4146,7 +4261,7 @@ msgstr "외부의" msgid "External Frame Buffer (XFB)" msgstr "외부 프레임 버퍼 (XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "NAND 에서 증명서 추출" @@ -4184,7 +4299,7 @@ msgid "FD" msgstr "FD" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "FIFO 플레이어" @@ -4192,7 +4307,7 @@ msgstr "FIFO 플레이어" msgid "Failed loading XML." msgstr "XML 로딩에 실패했습니다." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" @@ -4200,11 +4315,11 @@ msgstr "" "메모리 카드 열기에 실패했습니다:\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "넷플레이 목록 : %1 에 이 세션을 추가하는데에 실패했습니다" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "서명 파일 '%1' 에 덧붙이기에 실패했습니다." @@ -4216,7 +4331,7 @@ msgstr "블투 패스쓰루용 인터페이스 요청에 실패했습니다" msgid "Failed to connect to Redump.org" msgstr "Redump.org 연결에 실패했습니다" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "서버 연결에 실패했습니다: %1" @@ -4237,12 +4352,12 @@ msgstr "D3D12 글로벌 리소스 생성에 실패했습니다" msgid "Failed to create DXGI factory" msgstr "DXGI 팩토리 생성에 실패했습니다" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "넷플레이 GBA{0} 저장 파일 삭제에 실패했습니다. 쓰기 권한을 검증하세요." -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "넷플레이 메모리 카드를 삭제에 실패했습니다. 쓰기 권한을 검증하세요." @@ -4254,19 +4369,19 @@ msgstr "선택된 파일 삭제에 실패했습니다." msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "블투 패스쓰루용 커널 드라이버를 분리하는데에 실패했습니다: {0}" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "코드 다운로드에 실패했습니다." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "덤프에 실패했습니다 %1: 파일을 열 수 없습니다" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "덤프에 실패했습니다 %1: 파일에 쓰기를 실패했습니다" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "%1 저장 파일(들)로부터 %n 를 내보내기에 실패했습니다 ." @@ -4275,7 +4390,7 @@ msgstr "%1 저장 파일(들)로부터 %n 를 내보내기에 실패했습니다 msgid "Failed to export the following save files:" msgstr "다음 저장 파일들을 내보내기에 실패했습니다:" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "NAND 에서 증명서 추출에 실패했습니다" @@ -4301,18 +4416,18 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "하나 이상의 D3D 부호 찾기에 실패했습니다" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "\"%1\" 가져오기에 실패했습니다." -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" "저장 파일을 가져오기에 실패했습니다. 해당 게임을 한번 띄워주세요, 그리고 다" "시 시도하세요." -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." @@ -4320,7 +4435,7 @@ msgstr "" "저장 파일 가져오기에 실패했습니다. 주어진 파일은 오염되었거나 적합한 Wii 저장" "이 아닙니다." -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " @@ -4330,7 +4445,7 @@ msgstr "" "것이 그 안에 파일들에 액세스를 막고 있습니다. NAND (도구 -> NAND 관리 -> " "NAND 체크...) 를 고쳐 보세요, 그런 후 저장을 다시 가져오세요." -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "코어 인식에 실패했습니다" @@ -4340,22 +4455,25 @@ msgid "" "Make sure your video card supports at least D3D 10.0\n" "{0}" msgstr "" +"Direct3D 초기화에 실패했습니다.\n" +"비디오 카드가 적어도 D3D 10.0 지원하는지 확인하세요\n" +"{0}" #: Source/Core/VideoBackends/D3D12/VideoBackend.cpp:142 #: Source/Core/VideoBackends/OGL/OGLMain.cpp:197 msgid "Failed to initialize renderer classes" msgstr "렌더러 클래스 초기화에 실패했습니다" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "팩 설치에 실패했습니다: %1" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "NAND 에 이 타이틀 설치에 실패했습니다." -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" @@ -4363,8 +4481,8 @@ msgstr "" "포트 %1 듣기에 실패했습니다. 구동 중인 다른 넷플레이 서버 인스턴스가 있습니" "까?" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "%1 에서 RSO 모듈 로드에 실패했습니다" @@ -4376,11 +4494,11 @@ msgstr "d3d11.dll 로드에 실패했습니다" msgid "Failed to load dxgi.dll" msgstr "dxgi.dll 로드에 실패했습니다" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "맵 파일 '%1' 을 로드에 실패했습니다." -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "실행 가능한 것을 메모리에 로드하는데 실패했습니다." @@ -4393,7 +4511,7 @@ msgstr "" "설치해보세요." #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "'%1' 를 열기에 실패했습니다" @@ -4422,11 +4540,11 @@ msgstr "" "외부 에디터로 파일 열기에 실패했습니다.\n" "INI 파일들을 여는데 할당된 애플러케이션이 있는지 확인하세요." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "파일 열기에 실패했습니다." -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "서버 열기에 실패했습니다" @@ -4435,7 +4553,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "입력 파일 \"%1\" 열기에 실패했습니다." #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4450,7 +4568,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "Redump.org 데이터 문법분석에 실패했습니다" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "주어진 값을 대상 데어터 타입으로 파싱하는데에 실패했습니다." @@ -4458,25 +4576,25 @@ msgstr "주어진 값을 대상 데어터 타입으로 파싱하는데에 실패 msgid "Failed to read DFF file." msgstr "DFF 파일 읽기에 실패했습니다." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "파일에서 읽기에 실패했습니다." #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "입력 파일 \"{0}\" 로 부터 읽기에 실패했습니다." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "메모리 카드에서 선택된 저장파일(들)을 읽기에 실패했습니다." -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "{0} 을 읽을 수 없습니다." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "파일 삭제에 실패했습니다." @@ -4494,15 +4612,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "NAND 에서 이 타이틀 제거에 실패했습니다." -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "넷플레이 GCI 폴더 재설정에 실패했습니다. 쓰기 권한을 검증하세요." -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "넷플레이 NAND 폴더 재설정에 실패했습니다. 쓰기 권한을 검증하세요." -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" "넷플레이 리다이렉트 폴더 재설정에 실패했습니다. 쓰기 권한을 검증하세요." @@ -4511,23 +4629,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "FIFO 로그 저장에 실패했습니다." -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "경로 '%1' 에 코드 맵 저장을 실패했습니다" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "서명 파일 '%1' 을 저장에 실패했습니다." -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "경로 '%1' 에 심볼 맵 저장을 실패했습니다." -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "서명 파일 '%1' 에 저장에 실패했습니다." -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "팩 언인스톨에 실패했습니다: %1" @@ -4535,11 +4653,11 @@ msgstr "팩 언인스톨에 실패했습니다: %1" msgid "Failed to write BT.DINF to SYSCONF" msgstr "BT.DINF를 SYSCONF로 쓰지 못했습니다." -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "Mii 데이터 쓰기에 실패했습니다." -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "Wii 저장 쓰기에 실패했습니다." @@ -4547,22 +4665,22 @@ msgstr "Wii 저장 쓰기에 실패했습니다." msgid "Failed to write config file!" msgstr "환경 파일 쓰기에 실패했습니다!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "수정된 메모리 카드를 디스크에 쓰기를 실패했습니다." -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "리다이렉트된 저장 쓰기에 실패했습니다." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "저장파일을 디스크에 쓰기를 실패했습니다. " #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4573,19 +4691,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "실패" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "공정한 입력 지연" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "대비책 지역" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "대비책 지역:" @@ -4598,7 +4716,7 @@ msgstr "빠름" msgid "Fast Depth Calculation" msgstr "빠른 깊이 계산" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4617,7 +4735,7 @@ msgstr "파일 세부사항" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "파일 형식" @@ -4631,18 +4749,18 @@ msgstr "파일 정보" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "파일 이름" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "파일 경로" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "파일 크기" @@ -4650,11 +4768,11 @@ msgstr "파일 크기" msgid "File Size:" msgstr "파일 크기:" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "파일에 코드가 없습니다." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "파일명" @@ -4670,11 +4788,11 @@ msgstr "" "M3U 파일 \"{0}\" 에 기술된 파일들은 발견되지 않음:\n" "{1}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "파일크기가 어떤 알려진 게임큐브 메모리 카트 크기와도 맞지 않습니다." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "헤더안 파일크기가 실제 카드 크기와 맞지 않습니다." @@ -4682,15 +4800,15 @@ msgstr "헤더안 파일크기가 실제 카드 크기와 맞지 않습니다." msgid "Filesystem" msgstr "파일 시스템" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "부호들 필터" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "필터들" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4702,11 +4820,11 @@ msgstr "" "게임에서 이슈를 일으킬 것입니다.

잘 모르겠으면, 체" "크 해제해 두세요." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "다음 찾기(&N)" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "이전 찾기(&P)" @@ -4722,18 +4840,22 @@ msgstr "" "업데이트를 완료중입니다...\n" "시간이 잠시 걸릴 수 있습니다." -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "일인칭" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "체크섬을 고치기" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "실패한 체크섬 고치기" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4743,13 +4865,14 @@ msgstr "플래그" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "플로우트" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "분기 따라가기 (&b)" @@ -4778,7 +4901,7 @@ msgstr "" msgid "Force 16:9" msgstr "강제 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "강제 24-비트 컬러" @@ -4786,15 +4909,15 @@ msgstr "강제 24-비트 컬러" msgid "Force 4:3" msgstr "강제 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "강제 듣기 포트: " -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "강제 텍스처 필터링" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4810,7 +4933,7 @@ msgstr "" "

잘 모르겠으면, 체크 해제해 두세요." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4832,21 +4955,21 @@ msgstr "포맷:" msgid "Forward" msgstr "앞으로" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "포트 열기 (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "%1 결과들을 찾았음 \"%2\" 에 대한 것임" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "%n 주소(들)을 발견했습니다." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "프레임 %1" @@ -4875,7 +4998,7 @@ msgstr "프레임 덤핑" msgid "Frame Range" msgstr "프레임 범위" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "프레임 덤프 이미지(들) '{0}' 가 이미 존재합니다. 덮어쓰시겠습니까?" @@ -4887,19 +5010,19 @@ msgstr "녹화할 프레임:" msgid "France" msgstr "프랑스" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "빈 블록: %1" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "빈 파일: %1" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "자유 보기 컨트롤 타입" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "자유 보기 컨트롤러 %1" @@ -4907,7 +5030,7 @@ msgstr "자유 보기 컨트롤러 %1" msgid "Free Look Settings" msgstr "자유 보기 설정" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -5342,7 +5474,7 @@ msgstr "초록 왼쪽" msgid "Green Right" msgstr "초록 오른쪽" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "격자 보기" @@ -5355,7 +5487,7 @@ msgstr "기타" msgid "Gyroscope" msgstr "자이로스" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5368,13 +5500,30 @@ msgstr "핵" msgid "Head" msgstr "헤드" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "도움" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" -msgstr "헥스 스트링" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" +msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 @@ -5385,19 +5534,19 @@ msgstr "16진수" msgid "Hide" msgstr "숨기기" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "모두 숨기기" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "인-게임 세션 숨기기" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "비호환 세션들 숨기기" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "원격 GBA 숨기기" @@ -5415,21 +5564,27 @@ msgstr "최고" msgid "Hit Strength" msgstr "치기 힘" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "수평 시야" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "호스트" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "호스트 코드:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "호스트 입력 권한" @@ -5437,7 +5592,7 @@ msgstr "호스트 입력 권한" msgid "Host Size" msgstr "호스트 크기" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5449,11 +5604,11 @@ msgstr "" "3+ 플레이어들과 함께하는 캐주얼 게임에 알맞음, 아마도 불안정하거나 높은 지연 " "연결상에서." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "호스트 입력 권한 꺼짐" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "호스트 입력 권한 켜짐" @@ -5465,7 +5620,7 @@ msgstr "넷플레이로 호스트" msgid "Hostname" msgstr "호스트명" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "단축키 설정" @@ -5522,11 +5677,11 @@ msgstr "" "설정상의 설명은 https://dolphin-emu.org/docs/guides/wii-network-guide/ 를 참" "고하세요." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "IP 주소:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "IPL 설정" @@ -5535,7 +5690,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "IR 감도:" @@ -5570,11 +5725,11 @@ msgstr "" "RVZ: 돌핀 5.0-12188 이상과 호환되는 진보된 압축 포맷. 정크 데이터와 암호화된 " "Wii 데이터 둘다 효과적으로 압축할 수 있습니다." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "아이콘" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" @@ -5585,11 +5740,11 @@ msgstr "" "\n" "타이밍-민감한 컨트롤을 지진 턴-기반 게임에 알맞음, 골프 같은." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "식별자 생성" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5626,6 +5781,10 @@ msgid "" "

Causes issues with many fifologs, but can be useful for testing." "

If unsure, leave this unchecked." msgstr "" +"활성화되면, 모든 메모리 업데이트가 첫 프레임 전에 한번에 일어납니다.

" +"많은 fifologs 와 문제들을 유발합니다, 하지만 테스트에 유용할 수 있습니다." +"

잘 모르겠으면, 체크 해제해 두세요." #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:208 msgid "" @@ -5633,6 +5792,9 @@ msgid "" "

This is generally only useful when a frame-dumping option is enabled." "

If unsure, leave this checked." msgstr "" +"체크되지 않으면, fifolog 의 재생이 마지막 프레임 후에 멈춥니다.

이것" +"은 일반적으로 프레임-덤핑 옵션이 활성화되었을 때만 유용합니다." +"

잘 모르겠으면, 체크해 두세요." #: Source/Core/DolphinQt/DiscordJoinRequestDialog.cpp:55 #: qtbase/src/gui/kernel/qplatformtheme.cpp:728 @@ -5647,7 +5809,7 @@ msgstr "포맷 변경들을 무시" msgid "Ignore for this session" msgstr "이 세션을 무시" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5658,7 +5820,7 @@ msgstr "" "서 성능을 향상시킵니다. 소수 다른 게임들에서 그래픽 결함을 유발합니다." "

잘 모르겠으면, 체크해 두세요." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5688,30 +5850,30 @@ msgstr "" "

잘 모르겠으면, 체크 해제해 두세요." -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "BootMii NAND 백업 가져오기..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "가져오기를 실패했습니다" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "저장 파일(들)을 가져오기" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Wii 저장 가져오기" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "NAND 백업 가져오기" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" @@ -5720,11 +5882,20 @@ msgstr "" "NAND 백업 가져오기\n" " 경과 시간: %1s" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "인-게임?" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5781,8 +5952,8 @@ msgstr "정보" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "정보" @@ -5791,10 +5962,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "에뮬하는 동안 화면보호기를 감춥니다" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "입력" @@ -5808,16 +5979,22 @@ msgstr "활성에 필요한 힘을 입력하세요." msgid "Input strength to ignore and remap." msgstr "무시하고 리매핑할 힘을 입력하세요." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "nop 삽입 (&n)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "SD 카드 삽입" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "설치" @@ -5829,7 +6006,7 @@ msgstr "파티션 (%1) 설치" msgid "Install Update" msgstr "업데이트 설치" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "WAD 설치..." @@ -5845,11 +6022,11 @@ msgstr "명령." msgid "Instruction" msgstr "명령" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "명령 중단점" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "명령:" @@ -5867,7 +6044,7 @@ msgid "Interface" msgstr "인터페이스" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "내부 LZO 오류 - 압축 실패했습니다" @@ -5876,7 +6053,7 @@ msgstr "내부 LZO 오류 - 압축 실패했습니다" msgid "Internal LZO Error - decompression failed" msgstr "내부 LZO 오류 - 압축해제를 실패했습니다" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" @@ -5884,21 +6061,21 @@ msgstr "" "내부 LZO 오류 - 압축풀기 실패했습니다({0}) ({1}, {2}) \n" "상태 로딩을 다시 해보세요" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "내부 LZO 오류 - lzo_init() 실패했습니다" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "내부 해상도" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "내부 해상도:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "AR 코드를 생성하는 동안 내부 에러." @@ -5906,11 +6083,11 @@ msgstr "AR 코드를 생성하는 동안 내부 에러." msgid "Interpreter (slowest)" msgstr "인터프리터 (가장 느림)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "인터프리터 코어" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "부적합 표현." @@ -5918,7 +6095,7 @@ msgstr "부적합 표현." msgid "Invalid Mixed Code" msgstr "부적합 복합 코드" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "부적합한 %1 이 제공됨: %2" @@ -5927,15 +6104,15 @@ msgstr "부적합한 %1 이 제공됨: %2" msgid "Invalid Player ID" msgstr "부적합한 플레이어 아이디" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "부적합 RSO 모듈 주소: %1" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "부적합한 스텍호출" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "부적합 체크섬" @@ -5943,11 +6120,11 @@ msgstr "부적합 체크섬" msgid "Invalid game." msgstr "부적합한 게임." -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "부적합 호스트" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "필드 \"%1\" 에 부적합한 입력" @@ -5960,31 +6137,31 @@ msgstr "부적합한 입력이 제공됨" msgid "Invalid literal." msgstr "부적합한 문자." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "검색에 부적합 인자들." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "부적합한 패스워드가 제공되었습니다." -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "부적합 기록 파일" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "부적합한 찾기 파라미터 (선택된 오브젝트 없음)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "부적합한 찾기 스트링 (숫자로 변환될 수 없었습니다)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "부적합한 찾기 스트링 (짝수 길이 스트링만 지원됩니다)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "부적합한 타이틀 ID." @@ -5993,8 +6170,8 @@ msgid "Invalid watch address: %1" msgstr "부적합한 관찰 주소: %1" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "이탈리아어" @@ -6002,11 +6179,11 @@ msgstr "이탈리아어" msgid "Italy" msgstr "이탈리아" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "JIT 블록 연결 끄기" @@ -6014,47 +6191,47 @@ msgstr "JIT 블록 연결 끄기" msgid "JIT Blocks" msgstr "JIT 블록들" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "JIT 분기 끄기" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "JIT 소수점 끄기" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "JIT 정수 끄기" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "JIT 로드스토어 부동 끄기" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "JIT 로드스토어 끄기" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "JIT 로드스토어 짝짓기 끄기" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "JIT 로드스토어 lXz 끄기" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "JIT 로드스토어 lbzx 끄기" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "JIT 로드스토어 lwz 끄기" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "JIT 끄기 (JIT 코어)" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "JIT 짝짓기 끄기" @@ -6066,11 +6243,11 @@ msgstr "ARM64 용 JIT 리컴파일러 (권장)" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "x86-64 용 JIT 리컴파일러 (권장)" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "JIT 레지스터 캐시 끄기" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "JIT 시스템레지스터 끄기" @@ -6083,12 +6260,12 @@ msgstr "" "JIT 이 캐시 청소후에 코드 공간 찾기에 실패했습니다. 이것은 절대 일어나서는 안" "됩니다. 버그 트랙커에 이 사고를 보고해주세요. 돌핀은 지금 나갈 것입니다." -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "일본" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "일본어" @@ -6108,12 +6285,12 @@ msgstr "창을 맨위로 유지" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "메모리에 값이 있는 주소를 유지" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "키보드" @@ -6126,20 +6303,20 @@ msgstr "키보드" msgid "Keys" msgstr "키" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "KiB" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "플레이어 차기" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "한국" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "한국어" @@ -6167,7 +6344,7 @@ msgstr "LR 세이브" msgid "Label" msgstr "레이블" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "마지막 값" @@ -6253,15 +6430,15 @@ msgstr "" msgid "License" msgstr "라이슨스" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "덩어리된 업로드 스피드 제한:" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "목록 세로줄" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "목록 보기" @@ -6270,17 +6447,17 @@ msgid "Listening" msgstr "듣기" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "로드" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "배드 맵 파일 로드... (&B)" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "다른 맵 파일 로드... (&O)" @@ -6288,7 +6465,7 @@ msgstr "다른 맵 파일 로드... (&O)" msgid "Load Custom Textures" msgstr "커스텀 텍스처 로드" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "게임큐브 메인 메뉴 로드" @@ -6297,7 +6474,7 @@ msgstr "게임큐브 메인 메뉴 로드" msgid "Load Last State" msgstr "마지막 상태 로드" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "경로 로드:" @@ -6390,23 +6567,23 @@ msgstr "슬롯 8 상태 로드" msgid "Load State Slot 9" msgstr "슬롯 9 상태 로드" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "파일에서 상태 로드" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "선택된 슬롯에서 상태를 로드합니다" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "슬롯에서 상태 로드" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "Wii 저장 로드" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "Wii 시스템 메뉴 %1 로드" @@ -6414,12 +6591,12 @@ msgstr "Wii 시스템 메뉴 %1 로드" msgid "Load from Selected Slot" msgstr "선택된 슬롯에서 로드" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "슬롯 %1 - %2 로부터 로드" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "맵 파일 로드" @@ -6427,7 +6604,7 @@ msgstr "맵 파일 로드" msgid "Load..." msgstr "로드..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "'%1' 에서 부호들이 로드되었습니다" @@ -6441,7 +6618,7 @@ msgstr "" "game_id>/ 에서 커스텀 텍스처를 로드합니다.

잘 모" "르겠으면, 체크 해제해 두세요." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "지역" @@ -6450,7 +6627,7 @@ msgid "Lock Mouse Cursor" msgstr "마우스 커서 가두기" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "로그" @@ -6458,7 +6635,7 @@ msgstr "로그" msgid "Log Configuration" msgstr "로그 환경설정" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "JIT 명령 커버리지 로그" @@ -6486,9 +6663,9 @@ msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:123 msgid "Loop" -msgstr "" +msgstr "루프" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "넷플레이 서버 연결을 잃었습니다..." @@ -6517,7 +6694,7 @@ msgstr "MMU" msgid "MORIBUND" msgstr "빈사" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "MadCatz Gameshark 파일" @@ -6527,7 +6704,7 @@ msgstr "메인 스틱" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "제작사" @@ -6536,7 +6713,7 @@ msgstr "제작사" msgid "Maker:" msgstr "제작사:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6548,7 +6725,7 @@ msgstr "" "게임들을 망가뜨릴 것입니다.

잘 모르겠으면, 이것을 체" "크 해제해 두세요." -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "NAND 관리" @@ -6556,23 +6733,23 @@ msgstr "NAND 관리" msgid "Manual Texture Sampling" msgstr "수동 텍스처 샘플링" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "매핑" #: Source/Core/Core/HW/EXI/EXI_Device.h:87 msgid "Mask ROM" -msgstr "" +msgstr "마스크 롬" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "일치 발견" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "최대 버퍼:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "최대 버퍼 크기가 %1 로 변경되었습니다" @@ -6581,7 +6758,7 @@ msgstr "최대 버퍼 크기가 %1 로 변경되었습니다" msgid "Maximum tilt angle." msgstr "최대 틸트 각도." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "Wii 메뉴와 일부 게임에서 느려짐을 유발할지도 모릅니다." @@ -6590,11 +6767,11 @@ msgstr "Wii 메뉴와 일부 게임에서 느려짐을 유발할지도 모릅니 msgid "Medium" msgstr "중간" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "메모리" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "메모리 중단점" @@ -6602,7 +6779,7 @@ msgstr "메모리 중단점" msgid "Memory Card" msgstr "메모리 카드" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "메모리 카드 관리자" @@ -6627,7 +6804,7 @@ msgstr "" msgid "Memory Override" msgstr "메모리 오버라이드" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "메모리 중단점 옵션" @@ -6643,7 +6820,7 @@ msgstr "메모리카드: 부적합 소스 주소로 호출된 읽기 ({0:#x})" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "메모리카드: 부적합 목적지 주소로 호출된 쓰기 ({0:#x})" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6654,13 +6831,13 @@ msgstr "" "장들을 덮어쓰게 됩니다. 이 처리는 되돌릴 수 없습니다, 따라서 두 NAND 를 계속 " "백업할 것을 권장합니다. 정말 계속합니까?" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "MiB" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "마이크" @@ -6668,19 +6845,19 @@ msgstr "마이크" msgid "Misc" msgstr "기타" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "기타 설정" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "헤더안 빈 블락 숫자와 실제 사용되지 않은 블락수가 맞지 않습니다." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "내부 데이터 구조들끼리 맞지 않습니다." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6713,12 +6890,12 @@ msgstr "" "션 리셋이 필요할 수도 있습니다.

잘 모르겠으면, 체크 " "해제해 두세요." -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "발견된 모듈: %1" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "단일" @@ -6730,11 +6907,11 @@ msgstr "모노스코픽 그림자" msgid "Monospaced Font" msgstr "단일띄어쓰기 폰트" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "모션 입력" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "모션 시뮬레이션" @@ -6774,10 +6951,10 @@ msgstr "무비" msgid "N&o to All" msgstr "모두 아니오(&o)" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "NAND 체크" @@ -6785,26 +6962,26 @@ msgstr "NAND 체크" msgid "NKit Warning" msgstr "NKit 경고" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "NTSC-K" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "이름" @@ -6816,37 +6993,37 @@ msgstr "새로운 태그 이름:" msgid "Name of the tag to remove:" msgstr "제거할 태그의 이름:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "서버 브라우저에서 보여지는 당신의 세션 이름" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "이름:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "원본 (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "원본 GCI 파일" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "넷플레이" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "넷플레이 세션 브라우저" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "넷플레이 설정" @@ -6854,16 +7031,16 @@ msgstr "넷플레이 설정" msgid "Netherlands" msgstr "네덜란드" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "넷플레이가 NetPlay_GetButtonPress() 에서 비동기화되었습니다" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "넷플레이가 갈렸습니다. 이것으로부터 복구할 방법이 없습니다." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "네트워크" @@ -6884,11 +7061,11 @@ msgstr "자동-업데이트 절대 안함" msgid "New" msgstr "새로운" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "새로운 중단점" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "새로운 찾기" @@ -6896,7 +7073,7 @@ msgstr "새로운 찾기" msgid "New Tag..." msgstr "새로운 태그..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "새로운 식별자가 생성되었습니다." @@ -6913,7 +7090,7 @@ msgstr "새로운 태그" msgid "Next Game Profile" msgstr "다음 게임 프로파일" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "다음 일치" @@ -6922,17 +7099,17 @@ msgstr "다음 일치" msgid "Next Profile" msgstr "다음 프로파일" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "별명이 너무 깁니다." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "별명:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "아니요" @@ -6940,6 +7117,10 @@ msgstr "아니요" msgid "No Adapter Detected" msgstr "감지된 어댑터가 없습니다" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "오디오 출력 없음" @@ -6950,24 +7131,20 @@ msgstr "오디오 출력 없음" msgid "No Compression" msgstr "압축하지 않음" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "일치 없음" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "주어진 값 없음" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "적합한 상세 설명 없음" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "에러가 없습니다." @@ -6979,15 +7156,15 @@ msgstr "선택된 확장이 없습니다." msgid "No file loaded / recorded." msgstr "로드된 / 녹화된 파일이 없음." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "구동중인 게임이 없습니다." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "구동중인 게임이 없습니다." -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "이슈가 감지되지 않았습니다." @@ -6995,11 +7172,15 @@ msgstr "이슈가 감지되지 않았습니다." msgid "No paths found in the M3U file \"{0}\"" msgstr "M3U 파일 \"{0}\" 에 경로가 없습니다" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "문제들이 발견되지 않았습니다." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -7013,7 +7194,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "게임 설정 '{0}' 에 대한 프로파일이 없음" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "로드된 녹화가 없습니다." @@ -7021,18 +7202,14 @@ msgstr "로드된 녹화가 없습니다." msgid "No save data found." msgstr "발견된 저장 데이터가 없습니다." -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" "undo.dtm 이 없습니다, 무비 갈림을 막기위해서 상태로드 되돌리기를 취소합니다" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "제공된 값이 없습니다." - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -7042,7 +7219,7 @@ msgstr "없음" msgid "North America" msgstr "북 아메리카" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "발견되지 않음" @@ -7050,12 +7227,12 @@ msgstr "발견되지 않음" msgid "Not Set" msgstr "설정 안됨" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "" "모든 플레이어가 그 게임을 가지고 있지는 않습니다. 정말 시작하고 싶습니까?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -7065,7 +7242,7 @@ msgstr "" "해당 메모리 카드상에 빈 블록들이 충분하지 않습니다. 적어도 %n 빈 블록(들)이 " "요구됩니다." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -7127,13 +7304,13 @@ msgstr "눈챠쿠 방향" msgid "Nunchuk Stick" msgstr "눈챠쿠 스틱" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "확인" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "오브젝트 %1" @@ -7146,11 +7323,11 @@ msgid "Oceania" msgstr "오시애니아" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "끄기" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "오프셋" @@ -7162,11 +7339,11 @@ msgstr "켜기" msgid "On Movement" msgstr "움직일 때" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "온라인 문서(&D)" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" @@ -7174,7 +7351,7 @@ msgstr "" "접두사를 가진 부호들만 덧붙입니다:\n" "(모든 부호들은 빈칸)" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -7191,7 +7368,7 @@ msgstr "열기" msgid "Open &Containing Folder" msgstr "담고 있는 폴더 열기(&C)" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "디렉토리 열기..." @@ -7239,7 +7416,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "연산자들" @@ -7257,7 +7434,7 @@ msgstr "옵션" msgid "Orange" msgstr "주황" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "궤도" @@ -7265,7 +7442,7 @@ msgstr "궤도" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "다른 것들" @@ -7278,11 +7455,11 @@ msgstr "다른 파티션 (%1)" msgid "Other State Hotkeys" msgstr "다른 상태 단축키" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "다른 상태 관리" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "다른 게임..." @@ -7290,12 +7467,12 @@ msgstr "다른 게임..." msgid "Overlay Information" msgstr "오버레이 정보" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "입력 기록 플레이...(&l)" -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -7320,7 +7497,7 @@ msgstr "PNG 이미지 파일 (*.png);; 모든 파일 (*)" msgid "PPC Size" msgstr "PPC 크기" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "PPC 대 호스트" @@ -7337,7 +7514,7 @@ msgstr "패드" msgid "Parameters" msgstr "매개변수들" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "헥스로 파싱" @@ -7346,23 +7523,23 @@ msgstr "헥스로 파싱" msgid "Parsing Error" msgstr "분석 에러" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "패씨브" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "블루투스 어댑터를 패스쓰루" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "패스워드" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "당신의 게임에 참가할 패스워드 (없으면 비우세요)" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "패스워드?" @@ -7383,7 +7560,7 @@ msgid "Path:" msgstr "경로:" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "경로" @@ -7391,7 +7568,7 @@ msgstr "경로" msgid "Pause" msgstr "일시정지" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "무비의 끝에서 일시정지" @@ -7414,11 +7591,11 @@ msgstr "중립 위치로 이동의 피크 가속도." msgid "Peak velocity of outward swing movements." msgstr "바깥쪽 스윙 이동의 피크 가속도" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "픽셀단위 광원" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "온라인 시스템 업데이트 하기" @@ -7428,23 +7605,23 @@ msgstr "시스텝 업데이트 하기" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "피지컬" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "물리적 주소 공간" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "PiB" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "디버그 폰트 고르기" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "핑" @@ -7457,7 +7634,7 @@ msgid "Pitch Up" msgstr "피치 올리기" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "플랫폼" @@ -7477,16 +7654,16 @@ msgstr "(입력) 기록 재생" msgid "Playback Options" msgstr "재생 옵션" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "플레이어" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "플레이어" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "표준 메모리 영역으로 찾기 시작하기 전에 게임을 시작하세요." @@ -7497,29 +7674,29 @@ msgstr "표준 메모리 영역으로 찾기 시작하기 전에 게임을 시 msgid "Point" msgstr "포인트" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "포트 %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "포트 %1 롬:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "포트:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "가능한 비동기 감지됨: %1 가 프레임 %2 에서 비동기화된 듯 합니다" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "후-처리 효과" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "후-처리 효과:" @@ -7531,15 +7708,15 @@ msgstr "후-처리 쉐이더 환경설정" msgid "Prefetch Custom Textures" msgstr "커스텀 텍스처 프리패치" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "PlayController에 무비 마무리가 미완성되었습니다. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "PlayWiimote에 무비 마무리가 미완성되었습니다. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "PlayWiimote에 무비 마무리가 미완성되었습니다. {0} > {1}" @@ -7582,7 +7759,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "이전 게임 프로파일" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "이전 일치" @@ -7593,15 +7770,15 @@ msgstr "이전 프로파일" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "프리머티브 %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "사설" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "사설과 공공" @@ -7609,7 +7786,7 @@ msgstr "사설과 공공" msgid "Problem" msgstr "문제" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." @@ -7617,7 +7794,7 @@ msgstr "" "높은 심각성을 지닌 문제들이 발견되었습니다. 게임이 전혀 작동하지 않을 가능성" "이 높습니다." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." @@ -7625,7 +7802,7 @@ msgstr "" "낮은 심각성을 지닌 문제들이 발견되었습니다. 게임 구동을 방해할 가능성은 적습" "니다." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." @@ -7633,7 +7810,7 @@ msgstr "" "중간 심각성을 지닌 문제들이 발견되었습니다. 게임 전체나 특정 부분들이 올바르" "게 작동하지 않을 수도 있습니다." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "프로파일" @@ -7647,15 +7824,15 @@ msgstr "프로그램 카운터" msgid "Progress" msgstr "진행" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "공공" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "게임 목록 캐시 제거" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "IPL 롬을 in User/GC/ 에 두세요." @@ -7667,11 +7844,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "QT_레이아웃_방향" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "서비스의 품질 (QoS) 이 활성화될 수 없었습니다." -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "서비스의 품질 (QoS) 이 성공적으로 활성화되었습니다." @@ -7681,12 +7858,12 @@ msgstr "DPLII 디코더의 품질. 오디오 지연이 품질로 증가합니다 #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "질문" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "종료" @@ -7706,11 +7883,11 @@ msgstr "R-아날로그" msgid "READY" msgstr "준비" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "RSO 모듈" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "RSO 자동-감지" @@ -7723,44 +7900,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "RVZ GC/Wii 이미지들 (*.rvz)" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "범위" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "범위 끝: " -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "범위 시작: " -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "명령 바꾸기 (&p)" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "읽기" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "읽고 쓰기" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "읽기 전용" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "읽거나 쓰기" @@ -7768,11 +7945,11 @@ msgstr "읽거나 쓰기" msgid "Read-Only Mode" msgstr "읽기-전용 모드" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "실제 밸런스 보드" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "실제 Wii 리모트" @@ -7785,11 +7962,11 @@ msgstr "리센터" msgid "Record" msgstr "녹화" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "입력 녹화" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "녹화" @@ -7814,7 +7991,7 @@ msgstr "빨강 왼쪽" msgid "Red Right" msgstr "빨강 오른쪽" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7836,16 +8013,16 @@ msgstr "Redump.org 상태:" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "새로고침" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "현재 값들을 새로하기" @@ -7853,26 +8030,26 @@ msgstr "현재 값들을 새로하기" msgid "Refresh Game List" msgstr "게임 목록 새로고침" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "새로하기를 실패했습니다. 게임을 잠시 구동하신 후에 다시 시도하세요." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "현재 값들을 새로했습니다." #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "새로고침..." #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "지역" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "지역:" @@ -7892,16 +8069,16 @@ msgstr "연관 입력 유지" msgid "Remind Me Later" msgstr "나중에 다시 알려주기" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "제거" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "실패들 삭제" @@ -7927,8 +8104,8 @@ msgstr "" "으로 담지 않는다면) 압축공간을 조금도 절약하지 않습니다. 아무튼 계속 하시겠습" "니까?" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "부호 이름 바꾸기" @@ -7963,29 +8140,37 @@ msgstr "당신의 파티로 참여 요청" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "리셋" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "패닉 핸들러 무시를 리셋" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "결과들 리셋" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "횡단 서버를 리셋합니다" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "횡단 서버를 %1:%2 로 리셋합니다" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "횡단 설정 리셋" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "값 리셋" @@ -7993,15 +8178,15 @@ msgstr "값 리셋" msgid "Reset View" msgstr "보기 리셋" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "저장된 모든 Wii 리모트 페어링 재설정" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "리소스 팩 매니저" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "리소스 팩 경로:" @@ -8013,11 +8198,11 @@ msgstr "재시작이 요구됩니다" msgid "Restore Defaults" msgstr "기본값 복원" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "명령 복구" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "재시도" @@ -8026,7 +8211,7 @@ msgstr "재시도" msgid "Return Speed" msgstr "돌아오기 속도" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "개정" @@ -8084,11 +8269,11 @@ msgstr "왼쪽 구르기" msgid "Roll Right" msgstr "오른쪽 구르기" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "룸 ID" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "회전" @@ -8097,16 +8282,14 @@ msgstr "회전" msgid "Rotation applied at extremities of swing." msgstr "손발 스윙에 적용된 회전." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" -"2D 버텍스들을 전체 픽셀들로 반올림합니다.

더 높은 내부 해상도일 때 일" -"부 게임에서 생기는 그래픽 문제를 해결합니다.

잘 모르" -"겠으면, 체크 해제해 두세요." #: Source/Core/Core/HW/GCPadEmu.cpp:79 #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:254 @@ -8115,11 +8298,11 @@ msgstr "" msgid "Rumble" msgstr "진동" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "여기까지 실행 (&T)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "GBA 코어들을 전용 쓰레드로 구동합니다" @@ -8127,15 +8310,15 @@ msgstr "GBA 코어들을 전용 쓰레드로 구동합니다" msgid "Russia" msgstr "러시아" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "SD 카드" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "SD 카드 이미지 (*.raw);;모든 파일 (*)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "SD 카드 경로:" @@ -8151,7 +8334,7 @@ msgstr "선택" msgid "SHA-1:" msgstr "SHA-1:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "SP1:" @@ -8165,11 +8348,11 @@ msgstr "SSL 맥락" msgid "START" msgstr "시작" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "코드 저장 (&v)" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "상태 저장(&v) " @@ -8179,7 +8362,7 @@ msgid "Safe" msgstr "안전" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -8192,7 +8375,7 @@ msgstr "모두 저장" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "저장 내보내기" @@ -8213,11 +8396,11 @@ msgstr "게임 저장" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "게임 저장 파일들 (*.sav);;모든 파일들 (*)" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "저장 가져오기" @@ -8229,7 +8412,7 @@ msgstr "가장 오래된 상태 저장" msgid "Save Preset" msgstr "프리셋 저장" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "녹화 파일을 다른 이름으로 저장" @@ -8279,23 +8462,23 @@ msgstr "슬롯 8 상태 저장" msgid "Save State Slot 9" msgstr "슬롯 9 상태 저장" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "파일에 상태 저장" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "가장 오래된 슬롯에 상태 저장" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "선택된 슬롯에 상태를 저장합니다" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "슬롯에 상태 저장" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "심볼 맵 다른 이름으로 저장... (&A)" @@ -8303,7 +8486,7 @@ msgstr "심볼 맵 다른 이름으로 저장... (&A)" msgid "Save Texture Cache to State" msgstr "텍스처 캐시를 상태로 저장" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "상태 저장과 로드" @@ -8315,11 +8498,11 @@ msgstr "프리셋 다른 이름으로 저장..." msgid "Save as..." msgstr "다른 이름으로 저장..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "합쳐진 출력 파일 다른 이름으로 저장" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" @@ -8329,15 +8512,15 @@ msgstr "" "이터 백업을 고려하세요.\n" "지금 덮어쓰시겠습니까?" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "롬과 같은 디렉토리에 저장" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "맵 파일 저장" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "서명 파일 저장" @@ -8345,7 +8528,7 @@ msgstr "서명 파일 저장" msgid "Save to Selected Slot" msgstr "선택된 슬롯에 저장" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "슬롯 %1 - %2 에 저장" @@ -8353,23 +8536,23 @@ msgstr "슬롯 %1 - %2 에 저장" msgid "Save..." msgstr "저장..." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "저장된 Wii 리모트 페어링은 게임이 구동 중일 때만 재설정될 수 있습니다." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "저장들:" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "상태저장 무비 {0} 가 손상되었습니다, 무비 기록 중지 중..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "스케일된 EFB 복사" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "스캔을 성공했습니다." @@ -8377,30 +8560,30 @@ msgstr "스캔을 성공했습니다." msgid "ScrShot" msgstr "스크린샷" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "찾기" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "주소 검색" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "최근 오브젝트 찾기" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "하위폴더 찾기" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "검색과 필터" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." @@ -8408,7 +8591,7 @@ msgstr "" "가상 주소 공간에서는 현재 검색할 수 없습니다. 게임을 잠시 구동하신 후에 다시 " "시도하세요." -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "명령에 대한 찾기" @@ -8416,7 +8599,7 @@ msgstr "명령에 대한 찾기" msgid "Search games..." msgstr "게임들 검색..." -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "명령 찾기" @@ -8440,28 +8623,28 @@ msgstr "대부분의 CPU 와 하드웨어 관련된 설정들을 포함하는 msgid "Security options" msgstr "보안 옵션" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "선택" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "덤프 경로 선택" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "내보내기 디렉토리 선택" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "GBA 바이오스 선택" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "GBA 롬 선택" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "GBA 저장 경로 선택" @@ -8469,11 +8652,11 @@ msgstr "GBA 저장 경로 선택" msgid "Select Last State" msgstr "마지막 상태 선택" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "로드 경로 선택" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "리소스 팩 경로 선택" @@ -8481,7 +8664,7 @@ msgstr "리소스 팩 경로 선택" msgid "Select Riivolution XML file" msgstr "Riivolution XML 파일 선택" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "슬롯 %1 - %2 선택" @@ -8489,7 +8672,7 @@ msgstr "슬롯 %1 - %2 선택" msgid "Select State" msgstr "상태 선택" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "상태 슬롯 선택" @@ -8533,41 +8716,45 @@ msgstr "상태 슬롯 8 선택" msgid "Select State Slot 9" msgstr "상태 슬롯 9 선택" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" -msgstr "" +msgstr "WFS 경로 선택" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "Wii NAND 루트 선택" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "디렉토리 선택" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "파일 선택" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "게임 선택" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "SD 카드 이미지 선택" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "게임 선택" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "NAND 에 설치할 타이틀 선택" @@ -8575,11 +8762,11 @@ msgstr "NAND 에 설치할 타이틀 선택" msgid "Select e-Reader Cards" msgstr "e-Reader 카드 선택" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "RSO 모듈 주소 선택:" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "플레이할 녹화 파일 선택" @@ -8587,12 +8774,12 @@ msgstr "플레이할 녹화 파일 선택" msgid "Select the Virtual SD Card Root" msgstr "가상 SD 카드 루트 선택" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "키 파일 선택 (OTP/SEEPROM 덤프)" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "저장 파일을 선택" @@ -8608,15 +8795,15 @@ msgstr "변환된 이미지들을 저장하고 싶은 곳을 선택하세요" msgid "Selected Font" msgstr "선택된 폰트" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "선택된 컨트롤러 프로파일이 존재하지 않습니다" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "선택된 게임은 게임 목록에 존재하지 않습니다!" @@ -8644,7 +8831,7 @@ msgstr "" "사용할 하드웨어 어댑터를 선택하세요.

잘 모르겠으면, " "처음 것을 선택하세요." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8708,11 +8895,11 @@ msgstr "" "가 가장 적은 것을 고르세요.

잘 모르겠으면, OpenGL을 " "선택하세요." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "보내기" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "센서 바 위치:" @@ -8727,56 +8914,64 @@ msgstr "" "다운로딩할 때 \"{1}\" (따옴표 없이) 를 datfile URL 에 첨부해 주세요\n" "예: {2}" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "서버 IP 주소" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "서버 포트" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "서버가 횡단 시도를 거절했습니다" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "값 설정(&V)" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "PC 설정" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "기본 ISO로 설정(&D)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "슬롯 A 용 메모리 카드 파일 설정" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "슬롯 B 용 메모리 카드 파일 설정" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "부호 끝 주소 설정 (&e)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "부호 크기 설정 (&s)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "부호 끝 주소 설정" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "부호 크기 (%1) 설정:" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8786,7 +8981,7 @@ msgstr "" "니다.\n" "모든 게임에서 작동하지는 않을 것입니다." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Wii 시스템 언어를 설정합니다." @@ -8798,7 +8993,7 @@ msgstr "" "지연을 밀리세컨즈로 설정합니다. 값이 높을수록 오디오 튐을 줄일지도 모릅니다. " "특정 백엔드 전용." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8837,11 +9032,11 @@ msgstr "" "로딩 시간을 줄여주지만 일부 게임은 깨질지도 모릅니다. 성능상에 역효과가 있을 " "수 있습니다. 기본값은 끄기" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "로그 보기(&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "툴바 표시(&T)" @@ -8849,15 +9044,15 @@ msgstr "툴바 표시(&T)" msgid "Show Active Title in Window Title" msgstr "창 제목에 활성 타이틀 보여주기" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "모두 보여주기" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "오스트레일리아" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "디스코드에 현재 게임을 보여주기" @@ -8865,7 +9060,7 @@ msgstr "디스코드에 현재 게임을 보여주기" msgid "Show Debugging UI" msgstr "UI 디버깅 표시" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "ELF/DOL" @@ -8873,43 +9068,43 @@ msgstr "ELF/DOL" msgid "Show FPS" msgstr "FPS 보기" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "프레임 카운터 보기" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "프랑스" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "게임큐브" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "독일" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "골프 모드 오버레이 보기" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "입력 표시 보기" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "이탈리아" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" -msgstr "" +msgstr "일본 보기" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "한국" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "랙 카운터 보기" @@ -8917,7 +9112,7 @@ msgstr "랙 카운터 보기" msgid "Show Language:" msgstr "언어 보기:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "로그 환경설정(&C)" @@ -8929,7 +9124,7 @@ msgstr "넷플레이 메시지 보기" msgid "Show NetPlay Ping" msgstr "넷플레이 핑 보기" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "네덜란드" @@ -8937,7 +9132,7 @@ msgstr "네덜란드" msgid "Show On-Screen Display Messages" msgstr "온-스크린 메시지 보여주기" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "PAL (유럽 방식)" @@ -8946,23 +9141,23 @@ msgstr "PAL (유럽 방식)" msgid "Show PC" msgstr "PC 보기" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "플랫폼 표시" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "지역 표시" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "재녹화 횟수 보이기" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "러시아" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "스페인" @@ -8971,46 +9166,50 @@ msgstr "스페인" msgid "Show Statistics" msgstr "통계 보기" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "시스템 클럭 보기" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "타이완" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "USA (미국 방식)" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "알려지지 않음" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "세계" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "메모리로 보기 (&m)" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "코드로 보기" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "서버 브라우저에서 보기" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -9055,7 +9254,7 @@ msgstr "" "다양한 렌더링 통계를 보여줍니다.

잘 모르겠으면, 체" "크 해제해 두세요." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "나란히" @@ -9071,16 +9270,31 @@ msgstr "옆방향 토글" msgid "Sideways Wii Remote" msgstr "Wii 리모트 옆으로" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "서명 데이터베이스" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "부호 정수" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "간소화 중국어" @@ -9088,7 +9302,7 @@ msgstr "간소화 중국어" msgid "Simulate DK Bongos" msgstr "DK 봉고 시뮬" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "6 축" @@ -9117,7 +9331,7 @@ msgstr "그리기 스킵" msgid "Skip EFB Access from CPU" msgstr "CPU로부터 EFB 엑세스 스킵" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "메인 메뉴 스킵" @@ -9125,7 +9339,7 @@ msgstr "메인 메뉴 스킵" msgid "Skip Presenting Duplicate Frames" msgstr "반복 프레임들 제출 스킵" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -9144,19 +9358,19 @@ msgstr "" msgid "Slider Bar" msgstr "슬라이더 바" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "슬롯 A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "슬롯 A:" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "슬롯 B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "슬롯 B:" @@ -9174,7 +9388,7 @@ msgstr "소켓 테이블" msgid "Software Renderer" msgstr "소프트웨어 렌더러" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "데이터의 일부가 읽혀지지 않았습니다." @@ -9195,11 +9409,11 @@ msgstr "" "밝게표시된 값들을 확인하세요." #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "알파벳순으로 정렬" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "사운드:" @@ -9212,8 +9426,8 @@ msgid "Spain" msgstr "스페인" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "스페인어" @@ -9221,7 +9435,7 @@ msgstr "스페인어" msgid "Speaker Pan" msgstr "스피커 팬" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "스피커 볼륨:" @@ -9263,7 +9477,7 @@ msgstr "속도" msgid "Speed up Disc Transfer Rate" msgstr "디스크 전송율 속도 상승" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "안정적 (일년에 한 번)" @@ -9275,16 +9489,16 @@ msgstr "스택 끝" msgid "Stack start" msgstr "스택 시작" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "표준 컨트롤러" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "시작" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "넷플레이 시작(&N)" @@ -9292,11 +9506,13 @@ msgstr "넷플레이 시작(&N)" msgid "Start New Cheat Search" msgstr "새로운 치트 검색 시작" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "입력 기록 시작(&c)" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "(입력) 기록 시작" @@ -9312,7 +9528,7 @@ msgstr "Riivolution 패치들로 시작" msgid "Start with Riivolution Patches..." msgstr "Riivolution 패치들로 시작..." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "시작된 게임" @@ -9323,7 +9539,7 @@ msgstr "시작된 게임" msgid "State" msgstr "상태" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "운전대" @@ -9351,19 +9567,19 @@ msgstr "스텝 나가기" msgid "Step Over" msgstr "스텝 넘어가기" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "스텝 나가기 성공!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "스텝 나가기 시간 초과!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "스텝 넘어가기 진행 중..." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "스텝 성공!" @@ -9372,20 +9588,20 @@ msgstr "스텝 성공!" msgid "Stepping" msgstr "스텝핑" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "스테레오" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "입체 3D 모드" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "입체 3D 모드:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "입체 영상" @@ -9406,11 +9622,15 @@ msgstr "스틱" msgid "Stop" msgstr "중지" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "입력 재생/기록 중지" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "멈춰진 게임" @@ -9424,7 +9644,7 @@ msgstr "EFB 복사를 텍스처에만 담기" msgid "Store XFB Copies to Texture Only" msgstr "XFB 복사를 텍스처에만 담기" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -9437,7 +9657,7 @@ msgstr "" "EFB 복사를 램(과 텍스처)에

잘 모르겠으면, 체크해 두" "세요." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -9454,7 +9674,7 @@ msgstr "" msgid "Stretch to Window" msgstr "창으로 늘림" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "엄격한 설정 동기화" @@ -9477,16 +9697,16 @@ msgstr "스타일러스" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "성공" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "넷플레이 목록에 성공적으로 추가되었습니다" @@ -9496,11 +9716,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "%n 이미지를 성공적으로 변환했습니다." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "'%1' 를 성공적으로 삭제했습니다." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "%1 저장 파일(들)로부터 %n 를 성공적으로 내보냈습니다." @@ -9509,7 +9729,7 @@ msgstr "%1 저장 파일(들)로부터 %n 를 성공적으로 내보냈습니다 msgid "Successfully exported save files" msgstr "저장 파일들을 성공적으로 내보냈습니다" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "NAND 에서 증명서를 성공적으로 추출했습니다" @@ -9521,12 +9741,12 @@ msgstr "성공적으로 파일 압축을 풀었습니다." msgid "Successfully extracted system data." msgstr "성공적으로 시스템 데이터 압축을 풀었습니다." -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "저장 파일을 성공적으로 내보냈습니다." #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "NAND 에 이 타이틀을 성공적으로 설치했습니다." @@ -9538,16 +9758,16 @@ msgstr "NAND 에서 이 타이틀을 성공적으로 제거했습니다." msgid "Support" msgstr "지원" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "지원하는 파일 포멧" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "SD 와 SDHC 를 지원합니다. 기본 크기는 128 MB 입니다." #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "서라운드" @@ -9555,11 +9775,11 @@ msgstr "서라운드" msgid "Suspended" msgstr "연기된" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "눈 교차" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9574,50 +9794,62 @@ msgstr "" msgid "Swing" msgstr "스윙" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "A로 스위치" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "B로 스위치" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "부호" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "부호 (%1) 끝 주소:" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "부호 이름:" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "부호들" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "동기화" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "AR/Gecko 코드들 동기화" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "모든 Wii 저장 동기화" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "저장들 동기화" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "실제 Wii 리모트를 동기화하고 페어링" @@ -9633,37 +9865,37 @@ msgstr "" "듀얼 코어 모드에서 랜덤 프리징을 막을 수 있도록 GPU와 CPU 쓰레드들을 동기화합" "니다. (켬 = 호환성, 끔 = 빠름)" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "AR 코드들을 동기화합니다..." -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "Gecko 코드들을 동기화합니다..." -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "저장 데이터를 동기화합니다..." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "시스템 언어:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "TAS 입력" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "TAS 도구" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "태그" @@ -9681,11 +9913,11 @@ msgstr "꼬리" msgid "Taiwan" msgstr "타이완" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "스크린샷 찍기" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "테스트" @@ -9694,7 +9926,7 @@ msgstr "테스트" msgid "Texture Cache" msgstr "텍스처 캐시" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "텍스처 캐시 정확도" @@ -9717,7 +9949,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "{0} 파티션에 대한 H3 해쉬 테이블이 올바르지 않습니다." -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "IPL 파일이 알려진 좋은 덤프가 아닙니다. (CRC32: {0:x})" @@ -9731,7 +9963,7 @@ msgstr "IPL 파일이 알려진 좋은 덤프가 아닙니다. (CRC32: {0:x})" msgid "The Masterpiece partitions are missing." msgstr "명작 파티션들이 빠져있습니다." -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." @@ -9739,7 +9971,7 @@ msgstr "" "NAND 는 고쳐질 수 없었습니다. 현재 데이터 백업이 권장됩니다 그리고 생생한 " "NAND 로 다시 시작하세요." -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "NAND 가 고쳐졌습니다." @@ -9783,7 +10015,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "해독 키들은 NAND 백업 파일에 첨부될 필요가 있습니다." -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9799,7 +10031,7 @@ msgstr "디스크가 읽혀질 수 없었습니다 (위치 {0:#x} - {1:#x})." msgid "The disc that was about to be inserted couldn't be found." msgstr "삽입되려 했던 디스크를 찾을 수 없습니다." -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9825,19 +10057,19 @@ msgstr "에뮬된 Wii 콘솔이 이미 최신입니다." msgid "The entered MAC address is invalid." msgstr "입력된 맥 어드레스가 부적합합니다." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "입력된 PID 가 부적합합니다." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "입력된 VID 가 부적합합니다." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "표현식에 문법 에러가 있습니다." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9896,7 +10128,7 @@ msgstr "게임 ID 가 {0} 이지만 {1} 이어야 합니다." msgid "The game disc does not contain any usable update information." msgstr "게임 디스크가 사용가능한 업데이트 정보를 가지고 있지 않습니다." -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "게임이 현재 구동중입니다." @@ -9909,7 +10141,7 @@ msgstr "" "게임의 지역이 당신의 콘솔 지역과 맞지 않습니다. 시스템 메뉴로 이슈들을 피하려" "고, 이 디스크를 사용한 에뮬된 콘솔을 업데이트하는 것은 불가능합니다." -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9931,7 +10163,7 @@ msgstr "해쉬가 일치하지 않습니다!" msgid "The hashes match!" msgstr "해쉬가 일치합니다!" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9950,17 +10182,20 @@ msgid "" "sync properly, please change the selected device to Memory Card or GCI " "Folder." msgstr "" +"무비는 메모리 카드가 {0:n} 에 삽입되어야 한다고 합니다, 하지만 현재 삽입되어 " +"있지 않습니다(대신, {1} 가 삽입되어 있습니다). 올바른 무비 동기화를 위해, 선" +"택된 디바이스를 메모리 카드나 GCI 폴더로 바꿔주세요." #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:141 msgid "The patches in %1 are not for the selected game or game revision." msgstr "%1 에 있는 패치들은 선택된 게임이나 게임 리비전 용이 아닙니다." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "프로파일 '%1' 이 존재하지 않습니다" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "기록된 게임 ({0}) 은 선택된 게임 ({1}) 과 같지 않습니다" @@ -9978,20 +10213,21 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "해독된 AR 코드 결과가 없습니다." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" +"같은 파일이 여러 슬롯에 사용될 수 없습니다; %1 에서 이미 사용되고 있습니다." -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "서버와 클리이언트의 넷플레이 버전이 호환되지 않습니다." -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "서버가 가득 찼습니다." -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "서버가 알려지지 않은 오류 메시지를 보냈습니다." @@ -10017,7 +10253,7 @@ msgstr "명시된 공통 키 인덱스는 {0} 입니다 하지만 {1} 이어야 msgid "The specified file \"{0}\" does not exist" msgstr "기술된 \"{0}\" 파일은 존재하지 않습니다" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "대상 메모리 카드가 이미 파일 \"%1\" 을 가지고 있습니다." @@ -10070,7 +10306,7 @@ msgstr "{0} 파티션은 올바르게 정렬되어 있지 않습니다." msgid "There are too many partitions in the first partition table." msgstr "첫 파티션 테이블에 너무 많은 파티션들이 있습니다." -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "되돌릴 것이 없습니다!" @@ -10112,7 +10348,7 @@ msgstr "" "이 한국 타이틀은 보통 한국 콘솔에서 사용되지 않은 IOS 를 사용하게 세팅되어 있" "습니다. 이것은 ERROR #002 로 이어질 가능성이 있습니다." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "이 USB 장치는 이미 와이트리스트되어 있습니다." @@ -10132,7 +10368,7 @@ msgstr "" "이 액션 리플레이 시뮬레이터는 액션 리플레이 스스로 수정한 코드를 지원하지 않" "습니다." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "이것은 되돌릴 수 없습니다!" @@ -10183,7 +10419,11 @@ msgstr "" "이 디스크 이미지는 너무 작고 일부 데이터가 부족합니다. 싱글-레이어 디스크처" "럼 덤프된 듀얼-레이어 디스크인 문제일 공산이 큽니다." -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "이 파일은 적합한 Wii 파일시스템을 지니고 있지 않습니다" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "이 파일은 BootMii NAND 백업처럼 보이지 않습니다." @@ -10207,11 +10447,11 @@ msgstr "" "픽 카드나 드라이버가 그것을 지원하지 않습니다. 결과적으로 이 게임을 구동하는 " "동안 버그나 프리징을 겪을 것입니다." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "이것은 안 좋은 덤프입니다." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." @@ -10219,7 +10459,7 @@ msgstr "" "이것은 안 좋은 덤프입니다. 이것이 필연적으로 게임이 올바르게 구동되지 않을 것" "이라는 것을 의미하지는 않습니다." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." @@ -10227,11 +10467,11 @@ msgstr "" "Redump.org 에 따르면 이것은 좋은 덤프입니다, 하지만 돌핀이 문제를 발견했습니" "다. 이것은 돌핀쪽 버그 일지도 모릅니다." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "이것은 좋은 덤프입니다." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "이 세션은 패스워드가 필요합니다:" @@ -10300,7 +10540,7 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "이 값은 그래픽 환경설정에서 설정된 깊이와 곱해집니다." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." @@ -10308,7 +10548,7 @@ msgstr "" "이것은 클라이언트마다 덩어리된 업로드하기의 속도를 제한할 것입니다, 저장 동기" "화에 쓰입니다." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -10332,7 +10572,7 @@ msgstr "쓰레드" msgid "Threshold" msgstr "한계점" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "TiB" @@ -10349,22 +10589,22 @@ msgstr "측정을 작동시키기 위한 안정적 입력 기간. (제로는 비 #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "타이틀" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "To" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "까지:" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "전체화면 토글(&F)" @@ -10389,7 +10629,7 @@ msgid "Toggle Aspect Ratio" msgstr "종횡비 토글" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "중단점 토글" @@ -10449,14 +10689,20 @@ msgstr "토큰화를 실패했습니다." msgid "Toolbar" msgstr "툴바" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "위" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "위 아래로" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -10491,20 +10737,20 @@ msgid "Touch" msgstr "터치" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "전통 중국어" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "횡단 에러" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "횡단 서버" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "횡단 서버가 호스트에 연결중 시간이 초과되었습니다." @@ -10518,7 +10764,7 @@ msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:92 msgid "Triforce AM Baseboard" -msgstr "" +msgstr "트라이포스 AM 베이스보드" #: Source/Core/Core/HW/GCPadEmu.cpp:72 #: Source/Core/Core/HW/WiimoteEmu/Extension/Classic.cpp:94 @@ -10536,22 +10782,14 @@ msgstr "트리거" msgid "Type" msgstr "타입" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 msgid "Typical GameCube/Wii Address Space" msgstr "전형적 게임큐브/Wii 주소 공간" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" -msgstr "U&16" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "U&32" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" -msgstr "U&8" - #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 msgid "UNKNOWN" msgstr "알려지지 않음" @@ -10566,9 +10804,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "USB 와이트리스트 에러" @@ -10608,10 +10846,14 @@ msgstr "" "의 경우 미약한 성능 타격을 얻는 반면 쉐이더 컴파일 버벅임을 완전제거합니다, " "하지만 결과는 비디오 드라이버 행동에 달려있습니다." -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "RSO 모듈을 자동-감지할 수 없습니다" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10636,7 +10878,11 @@ msgstr "" "\n" "이 라인을 무시하고 분석을 계속합니까?" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "{0} 파일에 쓸 수 없습니다" @@ -10648,15 +10894,15 @@ msgstr "풀림" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "압축풀린 GC/Wii 이미지들 (*.iso *.gcm)" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "상태 로드 되돌리기" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "상태 저장 되돌리기" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "언인스톨" @@ -10672,18 +10918,18 @@ msgstr "" "WAD 를 언인스톨하면 NAND 에서 현재 설치된 이 타이틀 버전을 저장 데이터를 지우" "지 않고 제거하게 됩니다." -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "미국" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "알려지지 않음" @@ -10691,7 +10937,7 @@ msgstr "알려지지 않음" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "알려지지 않은 DVD 명령 {0:08x} - 치명적 오류" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "알려지지 않은 SYNC_CODES 메시지를 받았습니다 id: {0}" @@ -10703,7 +10949,7 @@ msgstr "" "알려지지 않은 SYNC_GECKO_CODES 메시지 id:{0} 를 플레이어:{1} 로 부터 받았습니" "다 플레이어 퇴장시키기!" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "알려지지 않은 SYNC_SAVE_DATA 메시지를 받았습니다 id: {0}" @@ -10715,15 +10961,15 @@ msgstr "" "알려지지 않은 SYNC_SAVE_DATA 메시지 id:{0} 를 플레이어:{1} 로 부터 받았습니" "다 플레이어 퇴장시키기!" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "알려지지 않은 주소 공간" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "알려지지 않은 저자" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "알려지지 않은 데이터 타입" @@ -10731,19 +10977,19 @@ msgstr "알려지지 않은 데이터 타입" msgid "Unknown disc" msgstr "알려지지 않은 디스크" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "알려지지 않은 에러가 발생했습니다." -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "알려지지 않은 오류 {0:x}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "알려지지 않은 오류." -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "id : {0} 의 알려지지 않은 메시지를 받았습니다" @@ -10752,7 +10998,7 @@ msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" "알려지지 않은 메시지 id:{0} 를 플레이어:{1} 로부터 받았습니다 플레이어 강퇴!" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "무제한" @@ -10768,13 +11014,28 @@ msgstr "마우스 커서 풀기" msgid "Unpacking" msgstr "풀기" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "부호 없는 정수" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10783,7 +11044,7 @@ msgstr "위쪽" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "업데이트" @@ -10840,7 +11101,7 @@ msgstr "똑바로 토글" msgid "Upright Wii Remote" msgstr "Wii 리모트 똑바로" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "사용 통계 보고 설정" @@ -10856,7 +11117,7 @@ msgstr "맞춤형 사용자 스타일 사용" msgid "Use Lossless Codec (FFV1)" msgstr "비손실 코덱 (FFV1) 사용" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "PAL60 모드 (EuRGB60) 사용" @@ -10892,18 +11153,40 @@ msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" "양쪽 눈에 대해 하나의 깊이 버퍼를 사용합니다. 소수 게임들을 위해 필요합니다." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "스캔 시에 메모리 매퍼를 사용" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "물리적 주소를 사용" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "가능하면 가상 주소를 사용" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "사용자 환경" @@ -10916,11 +11199,11 @@ msgstr "사용자 인터페이스" msgid "User Style:" msgstr "사용자 스타일:" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "사용자 변수들" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" @@ -10930,7 +11213,7 @@ msgstr "" "같은 부모 컨트롤러의 입력들과 출력들 사이에서\n" "저장하거나 값들을 찾기위해 사용할 수 있습니다." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10966,23 +11249,23 @@ msgstr "" msgid "Using Qt %1" msgstr "Qt %1 를 사용하기" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "보통 광 오브젝트들에 쓰입니다" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "보통 일반 메이트릭스들에 쓰입니다" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "위치 메이트릭스들에 쓰입니다" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "보통 텍스처 좌표 메이트릭스들에 쓰입니다" @@ -10995,7 +11278,7 @@ msgstr "유틸리티" msgid "V-Sync" msgstr "수직-동기화" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "값" @@ -11028,8 +11311,8 @@ msgstr "증명서 검증" msgid "Verifying" msgstr "검증하기" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "버전" @@ -11065,7 +11348,7 @@ msgstr "메모리 보기 (&m)" msgid "Virtual Notches" msgstr "가상 노치" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "가상 주소 공간" @@ -11092,7 +11375,7 @@ msgstr "볼륨 증가" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "WAD 파일 (*.wad)" @@ -11148,16 +11431,16 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "WASAPI (전용 모드)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" -msgstr "" +msgstr "WFS 경로:" #: Source/Core/DolphinQt/ConvertDialog.cpp:350 msgid "WIA GC/Wii images (*.wia)" msgstr "WIA GC/Wii 이미지들 (*.wia)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "첫 스캔을 기다립니다..." @@ -11188,7 +11471,7 @@ msgstr "" "하라면 성능을 저하시킵니다.

잘 모르겠으면, 체크 해제" "해 두세요." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -11206,10 +11489,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "경고" @@ -11229,7 +11512,7 @@ msgstr "" "경고: BAT ({0}) 에 의해 나타난 블록수가 파일 헤더 ({1}) 의 수와 일치하지 않습" "니다" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " @@ -11239,7 +11522,7 @@ msgstr "" "(입력 {2} > {3}). 계속하기전에 다른 저장을 로드해야합니다, 그렇지 않으면 읽" "기-전용 모드가 꺼진 상태로 이것을 로드합니다." -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " @@ -11248,7 +11531,7 @@ msgstr "" "경고: 저장 (바이트 {0} < {1}) (프레임 {2} < {3})에서 현재 프레임 전에 무비가 " "끝나는 저장을 로드했습니다. 계속하기 전에 다른 저장을 로드해야합니다." -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" @@ -11258,7 +11541,7 @@ msgstr "" "전에 다른 저장을 로드해야 합니다, 혹은 읽기-전용 모드를 끄고 로드하세요. 그렇" "지 않으면 아마도 싱크 문제가 생길겁니다." -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -11300,7 +11583,7 @@ msgstr "" msgid "Watch" msgstr "관찰" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "웹사이트" @@ -11337,11 +11620,11 @@ msgstr "" "를 포함합니다.

잘 모르겠으면, 체크해 두세요." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "와이트리스트된 USB 패스쓰루 장치들" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "와이드스크린 핵" @@ -11357,11 +11640,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Wii 메뉴" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Wii NAND 루트:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Wii 리모트" @@ -11369,8 +11652,8 @@ msgstr "Wii 리모트" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "Wii 리모트 %1" @@ -11383,11 +11666,11 @@ msgstr "Wii 리모트 버튼" msgid "Wii Remote Orientation" msgstr "Wii 리모트 방향" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Wii 리모트 설정" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Wii 리모트" @@ -11403,7 +11686,7 @@ msgstr "Wii TAS 입력 %1 - Wii 리모트" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "Wii TAS 입력 %1 - Wii 리모트 + 눈챠쿠" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "Wii 와 Wii 리모트" @@ -11411,7 +11694,7 @@ msgstr "Wii 와 Wii 리모트" msgid "Wii data is not public yet" msgstr "Wii 데이터는 아직 공개가 아닙니다" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "Wii 저장 파일 (*.bin);;모든 파일 (*)" @@ -11441,18 +11724,18 @@ msgid "World" msgstr "세계" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "쓰기" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "저장 데이터 쓰기" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "쓰기 전용" @@ -11465,12 +11748,12 @@ msgid "Write to File" msgstr "파일에 쓰기" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "로그에 쓰기" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "로그에 쓰고 중단" @@ -11478,7 +11761,7 @@ msgstr "로그에 쓰고 중단" msgid "Write to Window" msgstr "창에 쓰기" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "잘못된 버전" @@ -11489,7 +11772,7 @@ msgstr "잘못된 버전" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "XF 레지스터" @@ -11518,8 +11801,8 @@ msgid "Yellow" msgstr "노랑" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "예" @@ -11571,7 +11854,7 @@ msgstr "" "다. 모든 기능이 활성화 되려면, macOS 10.14 (Mojave) 이상을 사용해야만 합니" "다. 10.14+ 에서도 발생하는 것이 아니라면 어느 이슈도 리포트하지 말아주세요." -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" "당신은 이 업데이트 트랙에서 사용할 수 있는 최신 버전을 구동하고 있습니다." @@ -11613,11 +11896,11 @@ msgstr "" msgid "You have to enter a name." msgstr "이름을 넣어야 합니다." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "당신의 세션을 위한 이름을 제공해야만 합니다!" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "당신의 세션을 위한 지역을 제공해야만 합니다!" @@ -11625,7 +11908,7 @@ msgstr "당신의 세션을 위한 지역을 제공해야만 합니다!" msgid "You must restart Dolphin in order for the change to take effect." msgstr "변경이 적용되려면 돌핀을 재시작 해야 합니다." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "호스트할 게임을 선택해야 합니다!" @@ -11664,23 +11947,23 @@ msgstr "Zero 3 코드는 지원되지 않습니다" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "돌핀에 알려지지 않은 Zero 코드: {0:08x}" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "[%1, %2]" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "[%1, %2] 와 [%3, %4]" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "^ Xor" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "정렬됨" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "아무 값" @@ -11699,13 +11982,13 @@ msgstr "cm" msgid "d3d12.dll could not be loaded." msgstr "d3d12.dll 는 로드될 수 없었습니다." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "기본값" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "연결이 끊겼습니다" @@ -11721,31 +12004,31 @@ msgstr "errno" msgid "fake-completion" msgstr "가짜-완료" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "는 다음과 같다" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "는 다음보다 크다" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "는 다음보다 크거나 같다" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "는 다음보다 적다" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "는 다음보다 적거나 같다" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "는 다음과 같지 않다" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "마지막 값" @@ -11777,7 +12060,7 @@ msgstr "끄기" msgid "on" msgstr "켜기" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "또는 장치를 선택하세요" @@ -11786,7 +12069,7 @@ msgstr "또는 장치를 선택하세요" msgid "s" msgstr "s" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "이 값:" @@ -11795,7 +12078,7 @@ msgstr "이 값:" msgid "uDraw GameTablet" msgstr "유드로 게임태블릿" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "정렬되지 않음" @@ -11814,7 +12097,7 @@ msgstr "{0} (명작)" msgid "{0} (NKit)" msgstr "{0} (NKit)" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" "{1} 디렉토리에서 {0} IPL이 발견되었습니다. 디스크가 인식되지 않은 것 같습니다" @@ -11836,7 +12119,7 @@ msgstr "" "쓰기 권한을 검사하거나 파일을 돌핀 밖으로 옮기세요." #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "{1} 블락들의 {0}. 압축 비율 {2}%" @@ -11844,7 +12127,7 @@ msgstr "{1} 블락들의 {0}. 압축 비율 {2}%" msgid "{0} was not a directory, moved to *.original" msgstr "{0} 는 디렉토리가 아닙니다, *.original 로 이동되었습니다." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "| 또는" diff --git a/Languages/po/ms.po b/Languages/po/ms.po index c6f9bbeedd29..2e1ad6a48380 100644 --- a/Languages/po/ms.po +++ b/Languages/po/ms.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: abuyop , 2018\n" "Language-Team: Malay (http://www.transifex.com/delroth/dolphin-emu/language/" "ms/)\n" "Language: ms\n" @@ -19,7 +19,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -27,7 +27,7 @@ msgid "" "problems that Dolphin is unable to detect." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -35,7 +35,7 @@ msgid "" "that it hasn't been tampered with." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -59,7 +59,7 @@ msgstr "" msgid " (Disc %1)" msgstr "(Cakera %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "" @@ -67,7 +67,7 @@ msgstr "" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -81,7 +81,7 @@ msgstr "" msgid "%" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -97,17 +97,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "" @@ -126,7 +126,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (Revisi %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -166,7 +166,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "%1 tidak menyokong fitur ini." @@ -180,23 +180,23 @@ msgstr "" "%2 objek(s)\n" "Bingkai Semasa: %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -205,11 +205,11 @@ msgstr "" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "" @@ -221,15 +221,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (Kelajuan Biasa)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -245,30 +245,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2]: %3/%4 MiB" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "" @@ -288,7 +288,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "Perih&al" @@ -297,11 +297,11 @@ msgid "&Add Memory Breakpoint" msgstr "&Tambah Titik Henti Ingatan" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "T&ambah Kod Baharu..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "&Tambah fungsi" @@ -309,19 +309,19 @@ msgstr "&Tambah fungsi" msgid "&Add..." msgstr "T&ambah" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "Tetapan &Audio" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "&Auto Kemaskini:" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "&Mula Automatik" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "&But dari Sandar DVD" @@ -329,11 +329,11 @@ msgstr "&But dari Sandar DVD" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Titik Henti" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "" @@ -341,15 +341,15 @@ msgstr "" msgid "&Cancel" msgstr "&Batal" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "&Pengurus Menipu" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "&Kosongkan Simbol" @@ -357,7 +357,7 @@ msgstr "&Kosongkan Simbol" msgid "&Clone..." msgstr "&Klon..." -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "K&od" @@ -365,19 +365,20 @@ msgstr "K&od" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "Tetapan Ka&walan" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "&Salin alamat" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "Pa&dam" @@ -389,7 +390,7 @@ msgstr "Pa&dam Pantauan" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "&Sunting Kod..." @@ -397,11 +398,11 @@ msgstr "&Sunting Kod..." msgid "&Edit..." msgstr "&Sunting..." -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulasi" @@ -413,43 +414,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Fail" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&Fon..." -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "B&ingkai Lanjutan" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "&Jana Simbol Dari" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "Repositori &GitHub" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "Tetapan &Grafik" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Bantuan" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "Tetapan Kekunci Pa&nas" @@ -461,11 +466,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "&Import..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "&Sisip blr" @@ -473,7 +478,7 @@ msgstr "&Sisip blr" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -481,23 +486,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "&Bahasa:" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&Muat Keadaan" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "&Muat Peta Simbol" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Ingatan" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "Ce&reka" @@ -505,7 +510,7 @@ msgstr "Ce&reka" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "" @@ -513,24 +518,24 @@ msgstr "" msgid "&No" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "B&uka..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "Pi&lihan" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "&Tampal Fungsi HLE" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Jeda" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Main" @@ -538,11 +543,11 @@ msgstr "&Main" msgid "&Properties" msgstr "Si&fat" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "Mod Ba&ca-Sahaja" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Daftar" @@ -551,24 +556,24 @@ msgid "&Remove" msgstr "&Buang" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "B&uang Kod" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "&Nama semula simbol" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "T&etap Semula" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "&Simpan Peta Simbol" @@ -576,11 +581,11 @@ msgstr "&Simpan Peta Simbol" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "&Had Kelajuan:" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Henti" @@ -588,11 +593,11 @@ msgstr "&Henti" msgid "&Theme:" msgstr "&Tema:" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "Ala&tan" @@ -600,17 +605,17 @@ msgstr "Ala&tan" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Lihat" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&Tonton" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Laman Sesawang" @@ -622,11 +627,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "'%1' tidak ditemui, tiada nama simbol dijana" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "'%1' tidak ditemui, mengimbas fungsi umum sebagai ganti" @@ -638,7 +643,7 @@ msgstr "" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(mati)" @@ -646,34 +651,34 @@ msgstr "(mati)" msgid "(ppc)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "--> %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" @@ -681,6 +686,10 @@ msgstr "" msgid "128 Mbit (2043 blocks)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "" @@ -689,35 +698,35 @@ msgstr "" msgid "16-bit" msgstr "16-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x Natif (1280x1056) untuk 720p" @@ -729,25 +738,25 @@ msgstr "" msgid "32-bit" msgstr "32-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -761,28 +770,32 @@ msgstr "Kedalaman 3D" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x Natif (1920x1584) untuk 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x Natif (2560x2112) untuk 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x Natif (3200x2640)" @@ -790,29 +803,33 @@ msgstr "5x Natif (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x Natif (3840x3168) untuk 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x Natif (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "" @@ -821,25 +838,25 @@ msgstr "" msgid "8-bit" msgstr "8-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x Natif (5120x4224) for 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "" @@ -858,12 +875,12 @@ msgid "" "Notes:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "Satu Sesi NetPlay sedang berlangsung!" @@ -881,11 +898,11 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "Cakera A sedia dimasukkan." -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -893,7 +910,7 @@ msgstr "" "Proses matikan sedang berlangsung. Mana-mana data belum disimpan akan hilang " "jika anda hentikan emulasi semasa sebelum ia dimatikan. Paksa henti?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "Segerak hanya boleh dipicu bila permainan Wii berjalan." @@ -902,7 +919,7 @@ msgstr "Segerak hanya boleh dipicu bila permainan Wii berjalan." msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -926,8 +943,8 @@ msgstr "" msgid "AR Codes" msgstr "Kod AR" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "" @@ -950,7 +967,7 @@ msgstr "" msgid "Accuracy:" msgstr "Ketepatan:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "Tindakan" @@ -1046,9 +1063,9 @@ msgstr "Penyesuai Dikesan" msgid "Adapter:" msgstr "Penyesuai" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Tambah" @@ -1056,11 +1073,11 @@ msgstr "Tambah" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "Tambah Peranti USB Baharu" @@ -1092,46 +1109,49 @@ msgstr "" msgid "Add to &watch" msgstr "Tambah untuk &dipantau" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Tambah..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Alamat" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "Alamat:" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1185,39 +1205,43 @@ msgstr "Lanjutan" msgid "Africa" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "Semua Keadaan Simpan (*.sav *.s##);; Semua Fail (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "" @@ -1226,25 +1250,25 @@ msgstr "" msgid "All players' saves synchronized." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1270,7 +1294,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "Sebuah cakera tersisip dijangka tetapi tidak ditemui." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Anaglif" @@ -1288,39 +1312,39 @@ msgstr "Sudut" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Penapisan Anisotrofik:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Anti-Alias:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1334,15 +1358,15 @@ msgstr "Tarikh Pemuatapl:" msgid "Apply" msgstr "Laksana" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "Anda pasti mahu memadam '%1'?" @@ -1350,11 +1374,11 @@ msgstr "Anda pasti mahu memadam '%1'?" msgid "Are you sure you want to delete this file?" msgstr "Anda pasti ingin memadam fail ini?" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "Anda pasti ingin keluar dari NetPlay?" @@ -1367,11 +1391,11 @@ msgid "Aspect Ratio" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Nisbah Bidang:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Umpuk Port Kawalan" @@ -1379,7 +1403,7 @@ msgstr "Umpuk Port Kawalan" msgid "Assign Controllers" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1404,7 +1428,7 @@ msgstr "Tetapan Peregangan Audio" msgid "Australia" msgstr "Australia" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "" @@ -1416,15 +1440,15 @@ msgstr "Pengarang" msgid "Auto" msgstr "Auto" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Auto (640x528 berbilang)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1440,7 +1464,7 @@ msgstr "Auto-Laras Saiz Tetingkap" msgid "Auto-Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1451,12 +1475,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "B" @@ -1471,11 +1495,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "Daftar BP" @@ -1501,7 +1525,7 @@ msgstr "Tetapan Bahagian Belakang" msgid "Backend:" msgstr "Bahagian Belakang:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Input Latar Belakang" @@ -1512,7 +1536,13 @@ msgstr "Input Latar Belakang" msgid "Backward" msgstr "Undur" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1520,19 +1550,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Sepanduk" @@ -1556,7 +1587,7 @@ msgstr "" msgid "Basic" msgstr "Asas" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Tetapan Asas" @@ -1564,7 +1595,7 @@ msgstr "Tetapan Asas" msgid "Bass" msgstr "Bass" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1572,11 +1603,11 @@ msgstr "" msgid "Battery" msgstr "Bateri" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1598,7 +1629,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "" @@ -1611,7 +1642,7 @@ msgstr "" msgid "Blocking" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Blok" @@ -1636,15 +1667,15 @@ msgstr "" "Mod passthrough Bluetooth dibenarkan, tetapi Dolphin dibina tanpa libusb. " "Mod passthrough tidak dapat digunakan." -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "But untuk Dijeda" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "Fail sandar NAND BootMii (*.bin);;Semua Fail (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "Fail kunci BootMii (*.bin);;Semua Fail (*)" @@ -1652,7 +1683,7 @@ msgstr "Fail kunci BootMii (*.bin);;Semua Fail (*)" msgid "Borderless Fullscreen" msgstr "Skrin Penuh Tanpa Sempadan" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Bawah" @@ -1666,7 +1697,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "Henti" @@ -1675,7 +1706,7 @@ msgstr "Henti" msgid "Breakpoint" msgstr "Titik Henti" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "Titik henti dihadapi! Langkah keluar dihenti paksa." @@ -1705,7 +1736,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1713,12 +1744,12 @@ msgstr "" msgid "Buffer Size:" msgstr "Saiz Penimbal:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "Saiz penimbal berubah ke %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Penimbal:" @@ -1760,11 +1791,11 @@ msgstr "Butang" msgid "C Stick" msgstr "Batang C" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "Daftar CP" @@ -1795,7 +1826,7 @@ msgstr "" msgid "Calculate" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1815,15 +1846,15 @@ msgstr "" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "Tindanan Panggilan" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1833,7 +1864,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1841,16 +1872,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "Tidak dapat memulakan Sesi NetPlay ketika permainan masih berlangsung!" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "Batal" @@ -1868,23 +1899,23 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "Tidak dapat membut WAD ini kerana ia tidak dipasang dengan NAND." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "Tidak dapat cari IPL GC." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "Tidak dapat memulakan permainan, kerana IPL GC tidak ditemui." @@ -1906,7 +1937,7 @@ msgstr "" msgid "Change &Disc" msgstr "Ubah &Cakera" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Ubah &Cakera..." @@ -1914,15 +1945,15 @@ msgstr "Ubah &Cakera..." msgid "Change Disc" msgstr "Ubah Cakera" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1942,7 +1973,7 @@ msgstr "Pengubahanan tipu hanya berkesan bila permainan dimulakan semula." msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Sembang" @@ -1958,11 +1989,11 @@ msgstr "Gelitar Menipu" msgid "Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "Periksa NAND..." -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "" @@ -1978,7 +2009,7 @@ msgstr "" "Periksa sama ada anda telah mendapat keizinan yang diperlukan untuk memadam " "fail atau sama ada ia masih digunakan." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "" @@ -1986,16 +2017,16 @@ msgstr "" msgid "China" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Pilih satu fail untuk dibuka" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -2018,14 +2049,14 @@ msgid "Classic Controller" msgstr "Pengawal Klasik" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Kosongkan" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "" @@ -2042,28 +2073,47 @@ msgstr "Klon dan &Sunting Kod..." msgid "Close" msgstr "Tutup" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "Ko&nfigurasi" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Kod" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Kod:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2081,7 +2131,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "" @@ -2094,7 +2144,7 @@ msgstr "" msgid "Compression:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "Keadaan:" @@ -2106,13 +2156,13 @@ msgstr "" msgid "Config" msgstr "Konfig" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Konfigur" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2120,21 +2170,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "Konfigur Dolphin" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "Konfigur Input" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "Konfigur Output" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "Sahkan" @@ -2147,26 +2197,26 @@ msgstr "" msgid "Confirm on Stop" msgstr "Sahkan bil Berhenti" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "Pengesahan" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Sambung" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Sambung Papan Imbang" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Sambung Papan Kekunci USB" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "Sambung Wii Remote %1" @@ -2186,11 +2236,11 @@ msgstr "Sambung Wii Remote 3" msgid "Connect Wii Remote 4" msgstr "Sambung Wii Remote 4" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "Sambung Wii Remote" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" @@ -2202,15 +2252,19 @@ msgstr "Sambung ke Internet dan lakukan kemaskini sistem atas-talian?" msgid "Connected" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Jenis Sambungan:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Pengimbasan Berterusan" @@ -2223,7 +2277,7 @@ msgstr "" msgid "Control Stick" msgstr "Bidak Kawalan" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "" @@ -2251,7 +2305,7 @@ msgstr "Tetapan Pengawal" msgid "Controllers" msgstr "Kawalan" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2259,7 +2313,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2268,7 +2322,7 @@ msgid "" "Native.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2293,12 +2347,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Ketumpuan:" @@ -2335,33 +2389,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Salin" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "Salin &fungsi" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "Salin &heks" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "Salin &baris kod" @@ -2369,11 +2428,15 @@ msgstr "Salin &baris kod" msgid "Copy failed" msgstr "Salin gagal" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "" @@ -2388,16 +2451,16 @@ msgstr "Teras" msgid "Cost" msgstr "Kos" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "" @@ -2484,15 +2547,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "Tidak dapat cari pelayan pusat" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2519,7 +2582,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "Pencipta:" @@ -2542,11 +2605,11 @@ msgstr "" msgid "Crossfade" msgstr "Resap Silang" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "Wilayah Semasa" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2554,7 +2617,7 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "" @@ -2562,7 +2625,7 @@ msgstr "" msgid "Current thread" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2593,7 +2656,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "DK Bongos" @@ -2621,7 +2684,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2629,11 +2692,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Tikar Menari" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "" @@ -2645,28 +2708,27 @@ msgstr "" msgid "Data Transfer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "Jenis Data" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2684,7 +2746,7 @@ msgid "Debug Only" msgstr "Nyahpepijat Sahaja" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Menyahpepijat" @@ -2726,7 +2788,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Lalai" @@ -2742,7 +2804,7 @@ msgstr "" msgid "Default Font" msgstr "Fon Lalai" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "ISO Lalai:" @@ -2767,7 +2829,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2782,11 +2844,11 @@ msgid "Delete Selected Files..." msgstr "" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2794,21 +2856,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "Peratus Kedalaman:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Kedalaman:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Keterangan" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Keterangan:" @@ -2817,11 +2879,11 @@ msgstr "Keterangan:" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Kesan" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2829,25 +2891,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "Dwi-teras berketentuan:" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Peranti" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "PID Peranti (iaitu, 0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Tetapan Peranti" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "VID Peranti (iaitu, 057e)" @@ -2859,11 +2921,15 @@ msgstr "" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "Malapkan skrin selepas lima minit ketidakaktifan." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "Sambungan Terus" @@ -2894,7 +2960,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "Lumpuhkan Kotak Pembatas" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "" @@ -2906,15 +2972,15 @@ msgstr "" msgid "Disable Emulation Speed Limit" msgstr "Lumpuhkan Had Kelajuan Emulasi" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Lumpuhkan Kabus" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "" @@ -2922,7 +2988,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2936,7 +3002,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2953,11 +3019,15 @@ msgstr "Cakera" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2975,26 +3045,26 @@ msgstr "" msgid "Distance of travel from neutral position." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" "Adakah anda izinkan Dolphin melaporkan maklumat kepada pembangun Dolphin?" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "Anda mahu tambah \"%1\" ke dalam senarai Laluan Permainan?" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "Anda mahu kosongkan senarai nama simbol?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Anda hendak hentikan emulasi semasa?" @@ -3011,9 +3081,9 @@ msgstr "Log FIFO Dolphin (*.dff)" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "Fail Peta Dolphin (*.map)" @@ -3025,8 +3095,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Cereka TAS Dolphin (*.dtm)" @@ -3061,21 +3131,21 @@ msgstr "Dolphin gagal menyelesaikan tindakan yang dipinta." msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "Dolphin ialah emulator GameCube dan Wii bebas dan bersumber-terbuka." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "Dolphin terlalu tua untuk pelayan traversal" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3090,7 +3160,7 @@ msgstr "Sistem tipuan Dolphin buat masa ini dilumpuhkan." msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "" @@ -3103,24 +3173,26 @@ msgid "Done compressing disc image." msgstr "Selesai memampatkan imej cakera." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "Dubel" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Turun" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "Muat Turun Kod" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "Muat turun Kod dar Pangkalan Data WiiRD" @@ -3128,11 +3200,11 @@ msgstr "Muat turun Kod dar Pangkalan Data WiiRD" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "Muat turun selesai" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "%1 kod dimuat turun. (%2 ditambah)" @@ -3155,27 +3227,35 @@ msgstr "" msgid "Dual Core" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Semu" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Longgok Audio" @@ -3187,7 +3267,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "Longgok Sasaran EFB" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Longgok Bingkai" @@ -3199,7 +3279,7 @@ msgstr "" msgid "Dump Objects" msgstr "Longgok Objek" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "Laluan Longgok:" @@ -3296,16 +3376,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Bahasa Belanda" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "Ke&luar" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3317,7 +3397,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3345,7 +3425,7 @@ msgstr "Kesan" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3353,7 +3433,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "EiB" @@ -3365,7 +3445,7 @@ msgstr "Lenting Cakera" msgid "Embedded Frame Buffer (EFB)" msgstr "Penimbal Bingkai Terbenam (EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Kosong" @@ -3373,11 +3453,11 @@ msgstr "Kosong" msgid "Emu Thread already running" msgstr "Bebenang Emu sudah berjalan" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "Emulasikan penyuai Bluetooth Wii" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "Wii Remote Teremulasi" @@ -3393,8 +3473,12 @@ msgstr "" msgid "Emulation Speed" msgstr "Kelajuan Emulasi" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3410,7 +3494,7 @@ msgstr "Benarkan Lapisan Pengesahan API" msgid "Enable Audio Stretching" msgstr "Benarkan Peregangan Audio" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Benarkan Menipu" @@ -3422,7 +3506,7 @@ msgstr "Benarkan RTC Suai" msgid "Enable Dual Core" msgstr "Benarkan Dwi-Teras" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Benarkan Dwi-Teras (lajukan)" @@ -3448,19 +3532,19 @@ msgid "Enable Progressive Scan" msgstr "Benarkan Imbas Progresif" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "Benarkan Rumble" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Benarkan Penyelamat Skrin" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Benarkan Data Pembesar Suara" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "Benarkan Pelaporan Statistik Penggunaan" @@ -3492,7 +3576,7 @@ msgstr "" "Benarkan Pengiraan Bendera Keputusan Titik Apung, diperlukan oleh sesetengah " "permainan. (HIDUP = Serasi, MATI = Pantas)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3500,7 +3584,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3530,7 +3614,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "Benarkan peregangan audio untuk dipadankan dengan kelajuan emulasi." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3566,7 +3650,7 @@ msgstr "" msgid "Encoding" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3579,12 +3663,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet Tidak Diawalkan" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Bahasa Inggeris" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3594,7 +3678,7 @@ msgstr "Penambahbaikan" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "Masukkan ID peranti USB" @@ -3608,11 +3692,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "Masukkan alamat modul RSO:" @@ -3621,65 +3705,68 @@ msgstr "Masukkan alamat modul RSO:" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Ralat" @@ -3692,19 +3779,19 @@ msgstr "" msgid "Error loading selected language. Falling back to system default." msgstr "Ralat memuatkan bahasa pilihan. Jatuh balik ke lalai sistem." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3724,7 +3811,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3778,11 +3865,11 @@ msgstr "" "Ralat: Ketika cuba mencapai fon Windows-1252 tetapi ia tidak dimuatkan. " "Permainan mungkin tidak menunjukkan fon yang betul, atau mengalami kerosakan." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3791,11 +3878,39 @@ msgstr "" msgid "Euphoria" msgstr "Euforia" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Eropah" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3844,14 +3959,14 @@ msgstr "" msgid "Experimental" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Eskport Semua Simpan Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3859,15 +3974,15 @@ msgstr "" msgid "Export Recording" msgstr "Eksport Rakaman" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Eksport Rakaman..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "Eksport Fail Simpan" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3879,22 +3994,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Sambungan" @@ -3907,7 +4022,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3915,7 +4030,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "Penimbal Bingkai Luaran (XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "Ekstrak Sijil dari NAND" @@ -3953,7 +4068,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "Pemain FIFO" @@ -3961,17 +4076,17 @@ msgstr "Pemain FIFO" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -3983,7 +4098,7 @@ msgstr "Gagal menuntut antaramuka untuk passthrough BT" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -4004,12 +4119,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -4021,19 +4136,19 @@ msgstr "Gagal memadam fail terpilih." msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Gagal muat turun kod." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -4042,7 +4157,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "Gagal mengekstrak sijil dari NAND" @@ -4065,29 +4180,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "Gagal ke teras init" @@ -4103,16 +4218,16 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "Gagal memasang tajuk ini ke NAND." -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" @@ -4120,8 +4235,8 @@ msgstr "" "Gagal mendengar pada port %1. Adakah kejadian lain pelayan NetPlay masih " "berjalan?" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "Gagal memuatkan modul RSO pada %1" @@ -4133,11 +4248,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "Gagal memuatkan bolehlaku ke dalam ingatan." @@ -4148,7 +4263,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "Gagal membuka '%1'" @@ -4175,11 +4290,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "Gagal membuka pelayan" @@ -4188,7 +4303,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4200,7 +4315,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4208,25 +4323,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4241,15 +4356,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "Gagal membuang tajuk ini dari NAND." -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4257,23 +4372,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "Gagal menyimpan log FIFO." -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4281,11 +4396,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Gagal menulis BT.DINF ke SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4293,22 +4408,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4317,19 +4432,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4342,7 +4457,7 @@ msgstr "Pantas" msgid "Fast Depth Calculation" msgstr "Pengiraan Kedalaman Pantas" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4359,7 +4474,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "" @@ -4373,18 +4488,18 @@ msgstr "Maklumat Fail" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Nama Fail" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Saiz Fail" @@ -4392,11 +4507,11 @@ msgstr "Saiz Fail" msgid "File Size:" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "Fail tidak mengandungi kod." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4410,11 +4525,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4422,15 +4537,15 @@ msgstr "" msgid "Filesystem" msgstr "Sistem Fail" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "Tapis Simbol" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4438,11 +4553,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "" @@ -4458,18 +4573,22 @@ msgstr "" "Menyelesaikan kemaskini...\n" "Ia mengambil sedikit masa." -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Baiki Hasil Tambah Semak" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4479,13 +4598,14 @@ msgstr "Bendera" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "Apung" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "Ikut &cabang" @@ -4509,7 +4629,7 @@ msgstr "" msgid "Force 16:9" msgstr "Paksa 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "Paksa warna 24-Bit" @@ -4517,15 +4637,15 @@ msgstr "Paksa warna 24-Bit" msgid "Force 4:3" msgstr "Paksa 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "Paksa Port Dengar:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Paksa Penapisan Tesktur" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4535,7 +4655,7 @@ msgid "" "
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4554,21 +4674,21 @@ msgstr "" msgid "Forward" msgstr "Maju" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Port maju (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "" @@ -4597,7 +4717,7 @@ msgstr "" msgid "Frame Range" msgstr "Julat Bingkai" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4609,19 +4729,19 @@ msgstr "Bingkai untuk Dirakam:" msgid "France" msgstr "Perancis" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4629,7 +4749,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -5037,7 +5157,7 @@ msgstr "Hijau Kiri" msgid "Green Right" msgstr "Hijau Kanan" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "Paparan Grid" @@ -5050,7 +5170,7 @@ msgstr "Gitar" msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5063,12 +5183,29 @@ msgstr "Godam" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5080,19 +5217,19 @@ msgstr "Heksadesimal" msgid "Hide" msgstr "Sembunyi" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5110,21 +5247,27 @@ msgstr "" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Hos" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "Kod Hos:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5132,7 +5275,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5140,11 +5283,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "" @@ -5156,7 +5299,7 @@ msgstr "Hos dengan NetPlay" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "Tetapan Kekunci Panas" @@ -5207,11 +5350,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "Alamat IP:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "Tetapan IPL" @@ -5220,7 +5363,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "Kepekaan IR:" @@ -5242,22 +5385,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Ikon" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "Penjanaan Identiti" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5314,7 +5457,7 @@ msgstr "Abai Perubahan Format" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5322,7 +5465,7 @@ msgid "" "checked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5343,30 +5486,30 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "Import Sandar NAND BootMii..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Import Simpan Wii..." -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "Mengimport sandar NAND" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" @@ -5375,11 +5518,20 @@ msgstr "" "Mengimport sandar NAND\n" "Masa berlalu: %1s" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5432,8 +5584,8 @@ msgstr "Maklumat" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Maklumat" @@ -5442,10 +5594,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Input" @@ -5459,16 +5611,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "Sisip &nop" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Sisip Kad SD" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "" @@ -5480,7 +5638,7 @@ msgstr "" msgid "Install Update" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "Pasang WAD..." @@ -5496,11 +5654,11 @@ msgstr "" msgid "Instruction" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "Titik Henti Arahan" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "" @@ -5518,7 +5676,7 @@ msgid "Interface" msgstr "Antaramuka" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Ralat LZO Dalaman - pemampatan gagal" @@ -5527,27 +5685,27 @@ msgstr "Ralat LZO Dalaman - pemampatan gagal" msgid "Internal LZO Error - decompression failed" msgstr "" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Ralat LZO Dalaman - lzo_init() gagal" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "Resolusi Dalaman" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Resolusi Dalaman:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5555,11 +5713,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "Pentafsir (paling perlahan)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5567,7 +5725,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "Kod Bercampur Tidak Sah" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5576,15 +5734,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "ID Pemain Tidak Sah" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "Alamat modul RSO tidak sah: %1" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "Tindanan panggilan tidak sah" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5592,11 +5750,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "Hos tidak sah" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "Input tidak sah untuk medan \"%1\"" @@ -5609,31 +5767,31 @@ msgstr "Input tidak sah disediakan" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Fail rakaman tidak sah" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Parameter gelintar tidak sah (tiada objek dipilih)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Parameter gelintar tidak sah (tidak dapat tukar ke nombor)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "Parameter gelintar tidak sah (hanya panjang rentetan disokong)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "ID tajuk tidak sah." @@ -5642,8 +5800,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Itali" @@ -5651,11 +5809,11 @@ msgstr "Itali" msgid "Italy" msgstr "Itali" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "" @@ -5663,47 +5821,47 @@ msgstr "" msgid "JIT Blocks" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5715,11 +5873,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5730,12 +5888,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Jepun" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Jepun" @@ -5755,12 +5913,12 @@ msgstr "Kekalkan Tetingkap berada Diatas" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Papan Kekunci" @@ -5773,20 +5931,20 @@ msgstr "Papan Kekunci" msgid "Keys" msgstr "Kekunci" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "KiB" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Tendang Pemain" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Korea" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Korea" @@ -5814,7 +5972,7 @@ msgstr "" msgid "Label" msgstr "Label" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5894,15 +6052,15 @@ msgstr "" msgid "License" msgstr "Lesen" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "Lajur Senarai" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "Paparan Senarai" @@ -5911,17 +6069,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Muat" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "Muat Fail Peta &Lain..." @@ -5929,7 +6087,7 @@ msgstr "Muat Fail Peta &Lain..." msgid "Load Custom Textures" msgstr "Muat Tekstur Suai" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "Muat Menu Utama GameCube" @@ -5938,7 +6096,7 @@ msgstr "Muat Menu Utama GameCube" msgid "Load Last State" msgstr "Muat Keadaan Terakhir" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -6031,23 +6189,23 @@ msgstr "Muat Slot Keadaan 8" msgid "Load State Slot 9" msgstr "Muat Slot Keadaan 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "Muat Keadaan dari Fail" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "Muat Keadaan dari Slot Terpilih" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "Muat Keadaan dari Slot" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "Muat Simpan Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "Muat Menu Sistem Wii %1" @@ -6055,12 +6213,12 @@ msgstr "Muat Menu Sistem Wii %1" msgid "Load from Selected Slot" msgstr "Muat dari Slot Terpilih" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "Muat dari Slot %1 - %2" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "Muat fail peta" @@ -6068,7 +6226,7 @@ msgstr "Muat fail peta" msgid "Load..." msgstr "Muat..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "Simbol dimuatkan dari '%1'" @@ -6079,7 +6237,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "" @@ -6088,7 +6246,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Log" @@ -6096,7 +6254,7 @@ msgstr "Log" msgid "Log Configuration" msgstr "Log Konfigurasi" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6123,7 +6281,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "Sambung dengan pelayan NetPlay terputus..." @@ -6152,7 +6310,7 @@ msgstr "" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6162,7 +6320,7 @@ msgstr "Bidak Utama" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Pembuat:" @@ -6171,7 +6329,7 @@ msgstr "Pembuat:" msgid "Maker:" msgstr "Pembuat:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6179,7 +6337,7 @@ msgid "" "unchecked.
" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "" @@ -6187,7 +6345,7 @@ msgstr "" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6195,15 +6353,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "Padanan Ditemui" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6212,7 +6370,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "Ia menyebabkan kelembapan dalam menu Wii dan sesetengah permainan." @@ -6221,11 +6379,11 @@ msgstr "Ia menyebabkan kelembapan dalam menu Wii dan sesetengah permainan." msgid "Medium" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "Ingatan" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "Titik Henti Ingatan" @@ -6233,7 +6391,7 @@ msgstr "Titik Henti Ingatan" msgid "Memory Card" msgstr "Kad Ingatan" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "" @@ -6251,7 +6409,7 @@ msgstr "" msgid "Memory Override" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "Pilihan titik henti ingatan" @@ -6267,7 +6425,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6279,13 +6437,13 @@ msgstr "" "tidak boleh dikembalikan, oleh itu disarankan anda sandar kedua-dua NAND. " "Anda pasti mahu teruskan?" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "MiB" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Mikrofon" @@ -6293,19 +6451,19 @@ msgstr "Mikrofon" msgid "Misc" msgstr "Pelbagai" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Tetapan Pelbagai" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6328,12 +6486,12 @@ msgid "" "unchecked.
" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6345,11 +6503,11 @@ msgstr "Bayang Monoskopik" msgid "Monospaced Font" msgstr "Fon Monospace" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6389,10 +6547,10 @@ msgstr "Cereka" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "Semak NAND" @@ -6400,26 +6558,26 @@ msgstr "Semak NAND" msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "" @@ -6431,37 +6589,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Nama:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Natif (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6469,16 +6627,16 @@ msgstr "" msgid "Netherlands" msgstr "Belanda" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "Netplay telah dinyahsegerak dalam NetPlay_GetButtonPress()" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "Netplay telah dinyahsegerakkan. Tiada lagi cara untuk memulihkannya." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "" @@ -6499,11 +6657,11 @@ msgstr "" msgid "New" msgstr "Baharu" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "Titik Henti Baharu" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "" @@ -6511,7 +6669,7 @@ msgstr "" msgid "New Tag..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "Identiti baharu dijanakan." @@ -6528,7 +6686,7 @@ msgstr "" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6537,17 +6695,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Gelaran:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "" @@ -6555,6 +6713,10 @@ msgstr "" msgid "No Adapter Detected" msgstr "Tiada Penyesuai Dikesan" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "Tiada Output Audio" @@ -6565,24 +6727,20 @@ msgstr "Tiada Output Audio" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "Tiada Padanan" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "Tiada Nilai Diberi" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Tiada keterangan tersedia" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6594,15 +6752,15 @@ msgstr "Tiada sambungan dipilih" msgid "No file loaded / recorded." msgstr "Tiada fail dimuatkan / dirakam." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "Tiada isu dikesan." @@ -6610,11 +6768,15 @@ msgstr "Tiada isu dikesan." msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6625,7 +6787,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6633,19 +6795,15 @@ msgstr "" msgid "No save data found." msgstr "" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" "Tiada undo.dtm ditemui, menghenti paksa buat asal keadaan muat untuk " "menghindari nyahsegerak cereka" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6655,7 +6813,7 @@ msgstr "Tiada" msgid "North America" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "" @@ -6663,11 +6821,11 @@ msgstr "" msgid "Not Set" msgstr "Tidak Ditetapkan" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "Bukan semua pemain memilik permainan. Anda pasti mahu mulakannya?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6675,7 +6833,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6735,13 +6893,13 @@ msgstr "Orientasi Nunchuk" msgid "Nunchuk Stick" msgstr "Bidak Nunchuk" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6754,11 +6912,11 @@ msgid "Oceania" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Mati" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6770,17 +6928,17 @@ msgstr "" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "&Dokumentasi Atas Talian" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6797,7 +6955,7 @@ msgstr "Buka" msgid "Open &Containing Folder" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "" @@ -6845,7 +7003,7 @@ msgstr "" msgid "OpenGL ES" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6863,7 +7021,7 @@ msgstr "Pilihan" msgid "Orange" msgstr "Oren" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6871,7 +7029,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Lain-lain" @@ -6884,11 +7042,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "Kekunci Panas Keadaan Lain" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "Lain-lain Pengurusan Keadaan" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "" @@ -6896,12 +7054,12 @@ msgstr "" msgid "Overlay Information" msgstr "Maklumat Tindihan Atas" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "Ma&in Rakaman Input..." -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -6926,7 +7084,7 @@ msgstr "Fail imej PNG (*.png);; Semua Fail (*)" msgid "PPC Size" msgstr "Saiz PPC" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6943,7 +7101,7 @@ msgstr "Pad" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6952,23 +7110,23 @@ msgstr "" msgid "Parsing Error" msgstr "Ralat menghurai" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "Passthrough penyesuai Bluetooth" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "" @@ -6989,7 +7147,7 @@ msgid "Path:" msgstr "" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Laluan" @@ -6997,7 +7155,7 @@ msgstr "Laluan" msgid "Pause" msgstr "Jeda" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "Jeda Dipenghujung Cereka" @@ -7020,11 +7178,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Pencahayaan Per-Piksel" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "Lakukan Kemaskini Sistem Atas-Talian" @@ -7034,23 +7192,23 @@ msgstr "Lakukan Kemaskini Sistem" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "PiB" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "Ambil satu fon nyahpepijat" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "" @@ -7063,7 +7221,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Platform" @@ -7083,16 +7241,16 @@ msgstr "Main Rakaman" msgid "Playback Options" msgstr "Pilihan Main Balik" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Pemain" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7103,31 +7261,31 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "Port %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "Port:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" "Nyahsegerak berkemungkinan dikesan: %1 mungkin telah dinyahsegerak pada " "bingkai %2" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Kesan Pasca-Pemprosesan:" @@ -7139,15 +7297,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "Dapatkan Tekstur Suai" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7186,7 +7344,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7197,15 +7355,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7213,25 +7371,25 @@ msgstr "" msgid "Problem" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Profil" @@ -7245,15 +7403,15 @@ msgstr "Kiraan Program" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7265,11 +7423,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "" @@ -7279,12 +7437,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Soalan" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Keluar" @@ -7304,11 +7462,11 @@ msgstr "Analog-R" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "Modul RSO" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7321,44 +7479,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Julat" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "&Ganti arahan" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "Baca" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "Baca dan tulis" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "Baca sahaja" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "Baca atau Tulis" @@ -7366,11 +7524,11 @@ msgstr "Baca atau Tulis" msgid "Read-Only Mode" msgstr "Mod Baca-Sahaja" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Papan Imbang Sebenar" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "Wii Remote Sebenar" @@ -7383,11 +7541,11 @@ msgstr "Tengahkan semula" msgid "Record" msgstr "Rakam" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7412,7 +7570,7 @@ msgstr "Merah Kiri" msgid "Red Right" msgstr "Merah Kanan" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7428,16 +7586,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Segar Semula" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7445,26 +7603,26 @@ msgstr "" msgid "Refresh Game List" msgstr "Segar Semula Senarai Permainan" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Wilayah" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "" @@ -7484,16 +7642,16 @@ msgstr "" msgid "Remind Me Later" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Buang" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7516,8 +7674,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "Nama semula simbol" @@ -7550,29 +7708,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Tetap Semula" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "Tetap Semula Pelayan Traversal" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "Tetap Semula Pelayan Traversal ke %1:%2" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "Tetap Semula Tetapan Traversal" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7580,15 +7746,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "Tetap semula semua perpasangan Wii Remote tersimpan" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7600,11 +7766,11 @@ msgstr "Mula Semula Diperlukan" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Cuba Lagi" @@ -7613,7 +7779,7 @@ msgstr "Cuba Lagi" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7671,11 +7837,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "ID Bilik" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7684,12 +7850,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7699,11 +7866,11 @@ msgstr "" msgid "Rumble" msgstr "Rumble" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "&Jalankan Di Sini" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7711,15 +7878,15 @@ msgstr "" msgid "Russia" msgstr "Rusia" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "Laluan Kad SD:" @@ -7735,7 +7902,7 @@ msgstr "" msgid "SHA-1:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "SP1:" @@ -7749,11 +7916,11 @@ msgstr "" msgid "START" msgstr "MULA" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "Keadaan S&impan" @@ -7763,7 +7930,7 @@ msgid "Safe" msgstr "Selamat" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7776,7 +7943,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7797,11 +7964,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7813,7 +7980,7 @@ msgstr "Simpan Keadaan Terlama" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7863,23 +8030,23 @@ msgstr "Simpan Slot Keadaan 8" msgid "Save State Slot 9" msgstr "Simpan Slot Keadaan 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "Simpan Keadaan ke Fail" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "Simpan Keadaan ke Slot Terlama" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "Simpan Keadaan ke Slot Terpilih" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "Simpan Keadaan ke Slot" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "Simpan Peta Simbol Sebag&ai..." @@ -7887,7 +8054,7 @@ msgstr "Simpan Peta Simbol Sebag&ai..." msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "Simpan dan Muat Keadaan" @@ -7899,26 +8066,26 @@ msgstr "" msgid "Save as..." msgstr "Simpan sebagai..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "Simpan fail peta" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "Simpan fail tandatangan" @@ -7926,7 +8093,7 @@ msgstr "Simpan fail tandatangan" msgid "Save to Selected Slot" msgstr "Simpan ke Slot Terpilih" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "Simpan ke Slot %1 - %2" @@ -7934,25 +8101,25 @@ msgstr "Simpan ke Slot %1 - %2" msgid "Save..." msgstr "Simpan..." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" "Perpasangan Wii Remote tersimpan hanya boleh ditetapkan semula bila " "permainan Wii berjalan." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "salin EFB Terskala" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7960,36 +8127,36 @@ msgstr "" msgid "ScrShot" msgstr "CkpSkrin" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Gelintar" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "Gelintar Alamat" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "Gelintar Objek Semasa" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Gelintar Subfolder" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "" @@ -7997,7 +8164,7 @@ msgstr "" msgid "Search games..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "" @@ -8021,28 +8188,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Pilih" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -8050,11 +8217,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -8062,7 +8229,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "Pilih Slot %1 - %2" @@ -8070,7 +8237,7 @@ msgstr "Pilih Slot %1 - %2" msgid "Select State" msgstr "Pilih Keadaan" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Pilih Slot Keadaan" @@ -8114,41 +8281,45 @@ msgstr "Pilih Slot Keadaan 8" msgid "Select State Slot 9" msgstr "Pilih Slot Keadaan 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "Pilih Root NAND Wii" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "Pilih satu Direktori" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "Pilih satu Fail" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "Pilih satu Permainan" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "Pilih satu tajuk untuk dipasang ke dalam NAND" @@ -8156,11 +8327,11 @@ msgstr "Pilih satu tajuk untuk dipasang ke dalam NAND" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8168,12 +8339,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "Pilih fail kunci (longgok OTP/SEEPROM)" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Pilih fail simpan" @@ -8189,15 +8360,15 @@ msgstr "" msgid "Selected Font" msgstr "Fon Terpilih" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "Profil pengawal terpilih tidak wujud" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8221,7 +8392,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8261,11 +8432,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Hantar" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Kedudukan Palang Penderia:" @@ -8277,56 +8448,64 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "Pelayan menolak percubaan travesal" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "Tetapkan PC" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "Tetapkan fail kad ingatan untuk Slot A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "Tetapkan fail kad ingatan untuk Slot B" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "Tetapkan alamat &akhir simbol" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "Tetapkan &saiz simbol" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "Tetapkan alamat akhir simbol" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "Tetapkan saiz simbol (%1):" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8336,7 +8515,7 @@ msgstr "" "permainan PAL.\n" "Mungkin tidak berfungsi untk semua permainan." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Tetapkan bahasa sistem Wii." @@ -8346,7 +8525,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8381,11 +8560,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Tunjuk &Log" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Tunjuk Palang Ala&t" @@ -8393,15 +8572,15 @@ msgstr "Tunjuk Palang Ala&t" msgid "Show Active Title in Window Title" msgstr "Tunjuk Tajuk Aktif dalam Tajuk Tetingkap" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Tunjuk Australia" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "" @@ -8409,7 +8588,7 @@ msgstr "" msgid "Show Debugging UI" msgstr "Tunjuk UI Penyahpepijatan" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "Tunjuk ELF/DOL" @@ -8417,43 +8596,43 @@ msgstr "Tunjuk ELF/DOL" msgid "Show FPS" msgstr "Tunjuk FPS" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Tunjuk Kiraan Bingkai" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Tunjuk Perancis" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "Tunjuk GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Tunjuk Jerman" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Tunjuk Paparan Input" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Tunjuk Itali" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Tunjuk Korea" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Tunjuk Kiraan Lengah" @@ -8461,7 +8640,7 @@ msgstr "Tunjuk Kiraan Lengah" msgid "Show Language:" msgstr "Tunjuk Bahasa:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Tunjuk K&onfigurasi Log" @@ -8473,7 +8652,7 @@ msgstr "Tunjuk Mesej NetPlay" msgid "Show NetPlay Ping" msgstr "Tunjuk Ping NetPlay" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Tunjuk Belanda" @@ -8481,7 +8660,7 @@ msgstr "Tunjuk Belanda" msgid "Show On-Screen Display Messages" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Tunjuk PAL" @@ -8490,23 +8669,23 @@ msgstr "Tunjuk PAL" msgid "Show PC" msgstr "Tunjuk PC" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Tunjuk Platform" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Tunjuk Wilayah" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Tunjuk Rusia" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "Tunjuk Sepanyol" @@ -8515,46 +8694,50 @@ msgstr "Tunjuk Sepanyol" msgid "Show Statistics" msgstr "Tunjuk Statistik" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "Tunjuk Jam Sistem" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Tunjuk Taiwan" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Tunjuk USA" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Tunjuk Tidak Diketahui" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "Tunjuk WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Tunjuk Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Tunjuk Dunia" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8586,7 +8769,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Sebelah-Menyebelah" @@ -8602,16 +8785,31 @@ msgstr "Togol Sisi" msgid "Sideways Wii Remote" msgstr "Wii Remote Sisi" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "Pangkalan Data Tandatangan" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "Integer Bertanda" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Cina Ringkas" @@ -8619,7 +8817,7 @@ msgstr "Cina Ringkas" msgid "Simulate DK Bongos" msgstr "Simulasikan DK Bongos" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8648,7 +8846,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "Langkau Capaian EFB dari CPU" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "Langkau Menu Utama" @@ -8656,7 +8854,7 @@ msgstr "Langkau Menu Utama" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8670,19 +8868,19 @@ msgstr "" msgid "Slider Bar" msgstr "Palang Pelungsur" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "SLot A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "Slot A:" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Slot B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "Slot B:" @@ -8700,7 +8898,7 @@ msgstr "" msgid "Software Renderer" msgstr "Penerap Perisian" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8717,11 +8915,11 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "" @@ -8734,8 +8932,8 @@ msgid "Spain" msgstr "Sepanyol" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Sepanyol" @@ -8743,7 +8941,7 @@ msgstr "Sepanyol" msgid "Speaker Pan" msgstr "Lata Pembesar Suara" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Volum Pembesar Suara:" @@ -8778,7 +8976,7 @@ msgstr "" msgid "Speed up Disc Transfer Rate" msgstr "Lajukan Kadar Pemindahan Cakera" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "" @@ -8790,16 +8988,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Pengawal Piawai" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Mula" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "Mula &NetPlay..." @@ -8807,11 +9005,13 @@ msgstr "Mula &NetPlay..." msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "Mula Me&rakam Input" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Mula Rakaman" @@ -8827,7 +9027,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "Permainan bermula" @@ -8838,7 +9038,7 @@ msgstr "Permainan bermula" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Roda Pacu" @@ -8866,19 +9066,19 @@ msgstr "Langkah Keluar" msgid "Step Over" msgstr "Langkah Melalui" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "Langkah keluar berjaya!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "Langkah keluar tamat masa!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "Langkah atas masih berjalan..." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "Langkah berjaya!" @@ -8887,20 +9087,20 @@ msgstr "Langkah berjaya!" msgid "Stepping" msgstr "Melangkah" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Mod Stereoskopik 3D:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Stereoskopi" @@ -8921,11 +9121,15 @@ msgstr "Bidak" msgid "Stop" msgstr "Henti" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "Henti Memainkan/Merakam Input" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "Permainan berhenti" @@ -8939,7 +9143,7 @@ msgstr "Simpan Salinan EFB ke Tekstur Sahaja" msgid "Store XFB Copies to Texture Only" msgstr "Simpan Salinan XFB ke Tekstur Sahaja" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8948,7 +9152,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8961,7 +9165,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Regang ke Tetingkap" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "" @@ -8984,16 +9188,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "Berjaya" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -9003,11 +9207,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "Berjaya memadam '%1'." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -9016,7 +9220,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "Berjaya mengimport fail simpan" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "Berjaya mengekstrak sijil dari NAND" @@ -9028,12 +9232,12 @@ msgstr "Berjaya mengekstrak fail." msgid "Successfully extracted system data." msgstr "Berjaya mengekstrak data sistem." -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "Berjaya memasang tajuk ini ke NAND." @@ -9045,16 +9249,16 @@ msgstr "Berjaya membuang tajuk ini dari NAND." msgid "Support" msgstr "Sokongan" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -9062,11 +9266,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Silih Mata" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9078,50 +9282,62 @@ msgstr "" msgid "Swing" msgstr "Ayun" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "Simbol" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "Nama simbol:" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "Simbol" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "Segerak" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "Segerak Wii Remotes sebenar dan pasangankannya" @@ -9135,37 +9351,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Bahasa Sistem:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "Input TAS" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "Alatan TAS" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "" @@ -9183,11 +9399,11 @@ msgstr "" msgid "Taiwan" msgstr "Taiwan" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Ambil Cekupan Skrin" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Uji" @@ -9196,7 +9412,7 @@ msgstr "Uji" msgid "Texture Cache" msgstr "Tekstur Cache" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9218,7 +9434,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9232,7 +9448,7 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." @@ -9240,7 +9456,7 @@ msgstr "" "NAND tidak dapat dibaiki. Adalah disarankan menyandar data semasa anda dan " "mula kembali dengan NAND yang baharu." -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "NAND telah dibaiki." @@ -9276,7 +9492,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9290,7 +9506,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "Cakera yang hendak dimasukkan tidak ditemui." -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9316,19 +9532,19 @@ msgstr "Konsol Wii teremulasi telah dikemaskinikan." msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "PID yang dimasukkan tidak sah." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "VID yang dimasukkan tidak sah." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9379,7 +9595,7 @@ msgid "The game disc does not contain any usable update information." msgstr "" "Cakera permainan tidak mengandungi apa-apa maklumat kemaskini yang berguna." -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9393,7 +9609,7 @@ msgstr "" "masalah dengan menu sistem. Adalah mustahil mengemaskini konsol teremulasi " "dengan cakera ini." -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9410,7 +9626,7 @@ msgstr "Cincangan tidak sepadan!" msgid "The hashes match!" msgstr "Cincangan sepadan!" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9432,12 +9648,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "Profil '%1' tidak wujud" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9452,20 +9668,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "Kod AR dinyahsulit yang terhasil tidak mengandungi sebarang baris." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9486,7 +9702,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9539,7 +9755,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "Tiada apa hendak dibuat asal!" @@ -9579,7 +9795,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "Peranti USB sudah berada dalam senarai putih." @@ -9599,7 +9815,7 @@ msgstr "" "Simulatro action replay ini tidak menyokong kod yang mana Action Replay yang " "sendiri mengubahsuai." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "Ia tidak boleh dikembalikan!" @@ -9639,7 +9855,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "Fail ini tidak kelihatan seperti sandar NAND BootMii." @@ -9660,27 +9880,27 @@ msgstr "" "tetapi kad grafik anda atau pemacunya tidak menyokong ia. Hasilnya anda akan " "menghadapi pepijat atau menjadi kaku ketika menjalankan permainan ini." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9741,13 +9961,13 @@ msgid "" msgstr "" "Nilai ini digandakan dengan kedalaman ditetapkan dalam konfigurasi grafik." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9767,7 +9987,7 @@ msgstr "" msgid "Threshold" msgstr "Ambang" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "TiB" @@ -9784,22 +10004,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Tajuk" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "Ke" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "Ke:" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "Togol &Skrin Penuh" @@ -9824,7 +10044,7 @@ msgid "Toggle Aspect Ratio" msgstr "Togol Nisbah Bidang" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "Togol Titik Henti" @@ -9884,14 +10104,20 @@ msgstr "" msgid "Toolbar" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Atas" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Atas-dan-Bawah" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9926,20 +10152,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Cina Tradisional" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "Ralat Traversal" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "Pelayan Traversal" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "Pelayan travesal tamat masa ketika menyambung ke hos" @@ -9969,20 +10195,12 @@ msgstr "Pemicu" msgid "Type" msgstr "Jenis" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9999,9 +10217,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -10029,10 +10247,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10053,7 +10275,11 @@ msgid "" "Would you like to ignore this line and continue parsing?" msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -10065,15 +10291,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "Imej GC/Wii Tak Mampat (*.iso *.gcm)" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Buat Asal Muat Keadaan" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Buat Asal Keadaan Simpan" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "" @@ -10089,18 +10315,18 @@ msgstr "" "Menyahpasang WAD akan membuang versi terpasang semasa bagi tajuk ini dari " "NAND tanpa memadam data simpannya. Mahu teruskan?" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "Amerika Syarikat" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Tidak diketahui" @@ -10108,7 +10334,7 @@ msgstr "Tidak diketahui" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10118,7 +10344,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10128,15 +10354,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10144,19 +10370,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10164,7 +10390,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Tanpa had" @@ -10180,13 +10406,28 @@ msgstr "" msgid "Unpacking" msgstr "Nyahpek" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "Integer Tidak Bertanda" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10195,7 +10436,7 @@ msgstr "Naik" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Kemaskini" @@ -10252,7 +10493,7 @@ msgstr "Togol Tegak" msgid "Upright Wii Remote" msgstr "Wii Remote Tegak" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "Tetapan Pelaporan Statistik Penggunaan" @@ -10268,7 +10509,7 @@ msgstr "" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "Guna Mod PAL60 (EuRGB60)" @@ -10296,18 +10537,40 @@ msgstr "" "Guna penimbal kedalaman tunggal untuk kedua-dua belah mata. Diperlukan untuk " "beberapa jenis permainan." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "" @@ -10320,18 +10583,18 @@ msgstr "Antaramuka Pengguna" msgid "User Style:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10357,23 +10620,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10386,7 +10649,7 @@ msgstr "Utiliti" msgid "V-Sync" msgstr "Segerak-V" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Nilai" @@ -10419,8 +10682,8 @@ msgstr "" msgid "Verifying" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "" @@ -10456,7 +10719,7 @@ msgstr "Lihat &ingatan" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10483,7 +10746,7 @@ msgstr "Volum Naik" msgid "Vulkan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "Fail WAD (*.wad)" @@ -10531,7 +10794,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10539,8 +10802,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10562,7 +10825,7 @@ msgid "" "unsure, leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10575,10 +10838,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Amaran" @@ -10594,28 +10857,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10641,7 +10904,7 @@ msgstr "" msgid "Watch" msgstr "Pantau" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "" @@ -10670,11 +10933,11 @@ msgid "" "unsure, leave this checked.
" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "Peranti Menerusi USB Senarai Putih" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Skrin Lebar Godam" @@ -10690,11 +10953,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Menu Wii" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Root NAND Wii:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Wii Remote" @@ -10702,8 +10965,8 @@ msgstr "Wii Remote" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "Jauh Wii %1" @@ -10716,11 +10979,11 @@ msgstr "" msgid "Wii Remote Orientation" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Tetapan Kawalan Jauh Wii" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Wii Remotes" @@ -10736,7 +10999,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "Wii dan Wii Remote" @@ -10744,7 +11007,7 @@ msgstr "Wii dan Wii Remote" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "Fail simpan Wii (*.bin);;Semua Fail (*)" @@ -10772,18 +11035,18 @@ msgid "World" msgstr "Dunia" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "Tulis" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "Tulis sahaja" @@ -10796,12 +11059,12 @@ msgid "Write to File" msgstr "Tulis ke Fail" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "Tulis ke Log" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "Tulis ke Log dan Henti" @@ -10809,7 +11072,7 @@ msgstr "Tulis ke Log dan Henti" msgid "Write to Window" msgstr "Tulis ke Tetingkap" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10820,7 +11083,7 @@ msgstr "" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "Daftar XF" @@ -10849,8 +11112,8 @@ msgid "Yellow" msgstr "Kuning" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "" @@ -10885,7 +11148,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10918,11 +11181,11 @@ msgstr "" msgid "You have to enter a name." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10930,7 +11193,7 @@ msgstr "" msgid "You must restart Dolphin in order for the change to take effect." msgstr "Anda mesti mulakan semula Dolphin supaya perubahan berkesan." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "Anda mesti pilih satu permainan untuk dihoskan!" @@ -10961,23 +11224,23 @@ msgstr "Kod Zero 3 tidak disokong" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10996,13 +11259,13 @@ msgstr "" msgid "d3d12.dll could not be loaded." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -11018,31 +11281,31 @@ msgstr "" msgid "fake-completion" msgstr "pelengkapan-palsu" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -11072,7 +11335,7 @@ msgstr "" msgid "on" msgstr "hidup" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "atau pilih satu peranti" @@ -11081,7 +11344,7 @@ msgstr "atau pilih satu peranti" msgid "s" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -11090,7 +11353,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -11109,7 +11372,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -11128,7 +11391,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11136,7 +11399,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Languages/po/nb.po b/Languages/po/nb.po index ec1a4b306b14..4c0624e888e5 100644 --- a/Languages/po/nb.po +++ b/Languages/po/nb.po @@ -18,9 +18,10 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: d1fcc80a35d5442129c384ac221ef98f_d2a8fa7 " +", 2015\n" "Language-Team: Norwegian Bokmål (http://www.transifex.com/delroth/dolphin-" "emu/language/nb/)\n" "Language: nb\n" @@ -29,7 +30,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -41,7 +42,7 @@ msgstr "" "Fordi GameCube-diskbilledfiler inneholder lite verifikasjonsdata, kan det " "være problemer som Dolphin ikke kan oppdage." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -53,7 +54,7 @@ msgstr "" "Fordi denne tittelen ikke er for kommersielle Wii-konsoller, kan ikke " "Dolphin verifisere at den ikke har blitt tuklet med." -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -77,7 +78,7 @@ msgstr "" msgid " (Disc %1)" msgstr " (Disk %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "! Ikke" @@ -85,7 +86,7 @@ msgstr "! Ikke" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -99,7 +100,7 @@ msgstr "" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -115,17 +116,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -144,7 +145,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (Revisjon %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -184,7 +185,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "%1 støtter ikke denne funksjonen på ditt system." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "%1 støtter ikke denne funksjonen." @@ -198,23 +199,23 @@ msgstr "" "%2 objekt(er)\n" "Nåværende bilderute: %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "%1 ble med" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "%1 har forlatt" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "%1 golfer nå" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -223,11 +224,11 @@ msgstr "" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "%1 økt funnet" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "%1 økter funnet" @@ -239,15 +240,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (Normal hastighet)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -263,30 +264,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2]: %3/%4 MiB" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "& Og" @@ -306,7 +307,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&Om" @@ -315,11 +316,11 @@ msgid "&Add Memory Breakpoint" msgstr "&Legg til minnestoppunkt" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "&Legg til ny kode…" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "&Legg til funksjon" @@ -327,19 +328,19 @@ msgstr "&Legg til funksjon" msgid "&Add..." msgstr "&Legg til..." -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "&Lyd-innstillinger" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "&Autooppdater:" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "&Automatisk start" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "&Start opp fra DVD-sikkerhetskopi" @@ -347,11 +348,11 @@ msgstr "&Start opp fra DVD-sikkerhetskopi" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Brytepunkter" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "&Feilsporer" @@ -359,15 +360,15 @@ msgstr "&Feilsporer" msgid "&Cancel" msgstr "&Avbryt" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "&Juksekodebehandler" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "&Se etter oppdateringer..." -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "&Tøm symboler" @@ -375,7 +376,7 @@ msgstr "&Tøm symboler" msgid "&Clone..." msgstr "&Dupliser..." -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "&Kode" @@ -383,19 +384,20 @@ msgstr "&Kode" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "&Kontroller-innstillinger" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "&Kopier adresse" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "&Opprett …" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "&Slett" @@ -407,7 +409,7 @@ msgstr "&Slett Overvåker" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "&Rediger kode…" @@ -415,11 +417,11 @@ msgstr "&Rediger kode…" msgid "&Edit..." msgstr "&Rediger..." -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "&Løs ut disk" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulering" @@ -431,43 +433,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Fil" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&Skrift…" -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "&Bilde for bilde" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "%Generer symboler fra" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "&GitHub-pakkebrønn" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "&Grafikkinnstillinger" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Hjelp" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "Innstillinger for &hurtigtaster" @@ -479,11 +485,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "&Importer..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "&Sett inn blr" @@ -491,7 +497,7 @@ msgstr "&Sett inn blr" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -499,23 +505,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "&Språk:" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "Åpne hurtiglagring" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "&Last symbolkart" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "&Lås fast moduler" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Minne" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "&Film" @@ -523,7 +529,7 @@ msgstr "&Film" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "&Nettverk" @@ -531,24 +537,24 @@ msgstr "&Nettverk" msgid "&No" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Åpne…" -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Innstillinger" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "&Patch HLE-funksjoner" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Pause" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Spill" @@ -556,11 +562,11 @@ msgstr "&Spill" msgid "&Properties" msgstr "&Egenskaper" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "&Skrivebeskyttet modus" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Registere" @@ -569,24 +575,24 @@ msgid "&Remove" msgstr "&Fjern" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "&Fjern kode" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "&Gi symbol nytt navn" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Tilbakestill" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "&Ressurspakke-behandler" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "&Lagre symbolkart" @@ -594,11 +600,11 @@ msgstr "&Lagre symbolkart" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "&Fartsgrense:" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "S&topp" @@ -606,11 +612,11 @@ msgstr "S&topp" msgid "&Theme:" msgstr "&Drakt:" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "&Tråder" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Verktøy" @@ -618,17 +624,17 @@ msgstr "&Verktøy" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "Vi&s" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&Se" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Nettside" @@ -640,11 +646,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "'%1' ikke funnet, ingen symbolnavn generert" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "'%1' ikke funnet, scanner for vanlige funksjoner istedet" @@ -656,7 +662,7 @@ msgstr "(Ingen)" msgid "(host)" msgstr "(vert)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(av)" @@ -664,34 +670,34 @@ msgstr "(av)" msgid "(ppc)" msgstr "(ppc)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "* Multipliser" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "+ Legg til" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr ", Komma" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "- Trekk fra" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "→ %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "…" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "/ Del" @@ -699,6 +705,10 @@ msgstr "/ Del" msgid "128 Mbit (2043 blocks)" msgstr "128 Mbit (2043 blokker)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "16 Mbit (251 blokker)" @@ -707,35 +717,35 @@ msgstr "16 Mbit (251 blokker)" msgid "16-bit" msgstr "16-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x opprinnelig størrelse (1280x1056) for 720p" @@ -747,25 +757,25 @@ msgstr "32 Mbit (507 blokker)" msgid "32-bit" msgstr "32-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -779,28 +789,32 @@ msgstr "3D-dybde" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x opprinnelig størrelse (1920x1584) for 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Mbit (59 blokker)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x opprinnelig størrelse (2560x2112) for 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x opprinnelig størrelse (3200x2640)" @@ -808,29 +822,33 @@ msgstr "5x opprinnelig størrelse (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Mbit (1019 blokker)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x opprinnelig størrelse (3840x3168) for 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x opprinnelig størrelse (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Mbit (123 blokker)" @@ -839,25 +857,25 @@ msgstr "8 Mbit (123 blokker)" msgid "8-bit" msgstr "8-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x opprinnelig størrelse (5120x4224) for 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "< Mindre enn" @@ -879,12 +897,12 @@ msgstr "" "for nedlasting. Du bruker %2.
Ønsker du å oppgradere?" "

Versjonsnotater:

" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "> Større enn" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "En NetPlay-økt finnes allerede!" @@ -902,11 +920,11 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "En plate er i ferd med å bli satt inn." -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -914,7 +932,7 @@ msgstr "" "Avstenging allerede underveis. Ulagret data kan gå tapt hvis du stopper " "nåværende emulering før den fullfører. Tving avslutning?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "Synkronisering kan bare utløses når et Wii-spill kjører." @@ -923,7 +941,7 @@ msgstr "Synkronisering kan bare utløses når et Wii-spill kjører." msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -958,8 +976,8 @@ msgstr "AR-kode" msgid "AR Codes" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -982,7 +1000,7 @@ msgstr "Akselerometer" msgid "Accuracy:" msgstr "Nøyaktighet:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "Handling" @@ -1078,9 +1096,9 @@ msgstr "Adapter oppdaget" msgid "Adapter:" msgstr "Adapter:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Legg til" @@ -1088,11 +1106,11 @@ msgstr "Legg til" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "Legg til en ny DSU-tjener" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "Legg til ny USB-enhet" @@ -1124,46 +1142,49 @@ msgstr "" msgid "Add to &watch" msgstr "Legg til i &overvåkingslisten" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Legg til…" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Adresse" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "Adresserom" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "Adresse:" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1216,39 +1237,43 @@ msgstr "Avansert" msgid "Africa" msgstr "Afrika" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "Alle filer (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "Alle lagringsstadier (*.sav *.s##);; Alle filer (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "Alle enheter" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "Alle spilleres koder er synkronisert." @@ -1257,25 +1282,25 @@ msgstr "Alle spilleres koder er synkronisert." msgid "All players' saves synchronized." msgstr "Alle spilleres lagringsfiler er synkronisert." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "Tillat rapportering av brukerstatistikk" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "Tillat lagringer til SD-kort" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1301,7 +1326,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "En innsatt plate var forventet, men ble ikke funnet." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Anaglyph" @@ -1319,39 +1344,39 @@ msgstr "Vinkel" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Anisotropisk filtrering:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Kantutjevning:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "Alle regioner" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "Legg signatur til" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "Føy på til &eksisterende signaturfil..." -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "Legg p&å Singaturfil..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1365,15 +1390,15 @@ msgstr "Programinnlaster-dato:" msgid "Apply" msgstr "Bruk" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "Bruk signaturfil" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "Arbitrær Mipmap Oppdagelse" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "Er du sikker på at du vil slette \"%1\"?" @@ -1381,11 +1406,11 @@ msgstr "Er du sikker på at du vil slette \"%1\"?" msgid "Are you sure you want to delete this file?" msgstr "Er du sikker på at du vil slette denne filen?" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "Er du sikker på at du vil slette denne pakken?" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "Er du sikker på at du vil avslutte NetPlay?" @@ -1398,11 +1423,11 @@ msgid "Aspect Ratio" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Billedforhold:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Velg kontrollerporter" @@ -1410,7 +1435,7 @@ msgstr "Velg kontrollerporter" msgid "Assign Controllers" msgstr "Tildel kontrollere" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1435,7 +1460,7 @@ msgstr "Innstillinger for lydstrekking" msgid "Australia" msgstr "Australien" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "Forfatter" @@ -1447,15 +1472,15 @@ msgstr "Forfattere" msgid "Auto" msgstr "Auto" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Auto (Multiplum av 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "Auto-oppdater innstillinger" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1475,7 +1500,7 @@ msgstr "Automatisk justering av vindusstørrelse" msgid "Auto-Hide" msgstr "Gjem automatisk" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "Vil du auto-oppdage RSO-moduler?" @@ -1486,12 +1511,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "Støtte" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "B" @@ -1506,11 +1531,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "BP-register " @@ -1536,7 +1561,7 @@ msgstr "Bakende-innstillinger" msgid "Backend:" msgstr "Motor:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Bakgrunnsinndata" @@ -1547,7 +1572,13 @@ msgstr "Bakgrunnsinndata" msgid "Backward" msgstr "Bakover" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "Dårlig adresse oppgitt." @@ -1555,19 +1586,20 @@ msgstr "Dårlig adresse oppgitt." msgid "Bad dump" msgstr "Dårlig dump" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "Dårlig verdi angitt." #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Banner" @@ -1591,7 +1623,7 @@ msgstr "Grunnprioritet" msgid "Basic" msgstr "Grunnleggende" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Grunnleggende innstillinger" @@ -1599,7 +1631,7 @@ msgstr "Grunnleggende innstillinger" msgid "Bass" msgstr "Bass" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1607,11 +1639,11 @@ msgstr "" msgid "Battery" msgstr "Batteri" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "Beta (en gang i måneden)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "BetterJoy, DS4Windows, osv." @@ -1633,7 +1665,7 @@ msgstr "Bitfrekvens (kbps):" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "Blokkstørrelse" @@ -1646,7 +1678,7 @@ msgstr "Blokkstørrelse:" msgid "Blocking" msgstr "Blokkering" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Blokk" @@ -1671,15 +1703,15 @@ msgstr "" "Blåtann gjennomstrømningsmodus er aktivert, men Dolphin ble bygd uten " "Libusdb. Gjennomstrømmingsmodus kan ikke benyttes." -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "Start opp i pausemodus" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "BootMii NAND sikkerhetskopifil (*.bin);;Alle filer (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "BootMii nøkkelfil (*.bin);;Alle filer (*)" @@ -1687,7 +1719,7 @@ msgstr "BootMii nøkkelfil (*.bin);;Alle filer (*)" msgid "Borderless Fullscreen" msgstr "Rammefri fullskjermsvisning" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Nede" @@ -1701,7 +1733,7 @@ msgid "Branches" msgstr "Grener" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "Stopp" @@ -1710,7 +1742,7 @@ msgstr "Stopp" msgid "Breakpoint" msgstr "Stoppunkt" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "Stoppunkt nådd! Utstepping avbrutt." @@ -1740,7 +1772,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "Utforsk &NetPlay-sesjoner..." @@ -1748,12 +1780,12 @@ msgstr "Utforsk &NetPlay-sesjoner..." msgid "Buffer Size:" msgstr "Hurtiglagerstørrelse:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "Bufferstørrelse endret til %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Mellomlager:" @@ -1795,11 +1827,11 @@ msgstr "Knapper" msgid "C Stick" msgstr "C-joystick" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "Lag Signatu&rfil..." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "CP-register " @@ -1830,7 +1862,7 @@ msgstr "" msgid "Calculate" msgstr "Kalkuler" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1850,15 +1882,15 @@ msgstr "Kalibrering" msgid "Calibration Period" msgstr "Kalibreringsperiode" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "Kallstakk" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1868,7 +1900,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1876,16 +1908,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "Kan ikke starte en NetPlay-økt mens et spill er aktivt!" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "Avbryt" @@ -1903,23 +1935,23 @@ msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" "Kan ikke starte denne WAD-filen, fordi den ikke kan installeres til NAND." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "Finner ikke GC IPL." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "Kan ikke starte spillet, fordi GC IPL ikke ble funnet." @@ -1941,7 +1973,7 @@ msgstr "Sentrer og kalibrer" msgid "Change &Disc" msgstr "Endre &disk" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Endre &disk…" @@ -1949,15 +1981,15 @@ msgstr "Endre &disk…" msgid "Change Disc" msgstr "Endre disk" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "Endre disk automatisk" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1978,7 +2010,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Chat" @@ -1994,11 +2026,11 @@ msgstr "Juksekodesøk" msgid "Cheats Manager" msgstr "Juksekodebehandler" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "Sjekk NAND..." -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "Sjekk for endringer i spillisten i bakgrunnen" @@ -2014,7 +2046,7 @@ msgstr "" "Sjekk om du har tillatelsene påkrevd for å slette denne filen, eller om " "filen fortsatt er i bruk." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "Sjekksum" @@ -2022,16 +2054,16 @@ msgstr "Sjekksum" msgid "China" msgstr "Kina" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Velg en fil å åpne" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "Velg prioritetsinputfil" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "Velg andre input fil" @@ -2054,14 +2086,14 @@ msgid "Classic Controller" msgstr "Klassisk kontroller" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Nullstill" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "Tøm mellomlager" @@ -2078,28 +2110,47 @@ msgstr "Klon og &rediger kode..." msgid "Close" msgstr "Lukk" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "&Oppsett" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Kode" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Kode:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "Koder mottatt!" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "Kombiner &to signaturfiler..." #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "Felles" @@ -2117,7 +2168,7 @@ msgstr "Komplierer skygger" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "Kompresjon" @@ -2130,7 +2181,7 @@ msgstr "Kompresjonsnivå:" msgid "Compression:" msgstr "Komprimering:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "Betingelse" @@ -2142,13 +2193,13 @@ msgstr "" msgid "Config" msgstr "Oppsett" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Sett opp" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2156,21 +2207,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "Sett opp Dolphin" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "Sett opp inndata" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "Sett opp utdata" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "Bekreft" @@ -2183,26 +2234,26 @@ msgstr "Bekreft endring av backend" msgid "Confirm on Stop" msgstr "Bekreft ved stans" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "Bekreftelse" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Koble til" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Koble til balansebrett" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Koble til USB-tastatur" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "Koble til Wii Remote %1" @@ -2222,11 +2273,11 @@ msgstr "Koble til Wii Remote 3" msgid "Connect Wii Remote 4" msgstr "Koble til Wii Remote 4" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "Koble til Wii Remote-er" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "Koble til Wii Remoter for emulerte kontrollere" @@ -2238,15 +2289,19 @@ msgstr "Koble til Internett og utfør nettbasert systemoppdatering?" msgid "Connected" msgstr "Tilkoblet" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Tilkoblingstype:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Kontinuerlig skanning" @@ -2259,7 +2314,7 @@ msgstr "Kontroller NetPlay-golfmodus" msgid "Control Stick" msgstr "Sirkel-joystick" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "Kontrollerprofil" @@ -2287,7 +2342,7 @@ msgstr "Kontroller-innstillinger" msgid "Controllers" msgstr "Kontrollere" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2295,7 +2350,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2304,7 +2359,7 @@ msgid "" "Native.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2335,12 +2390,12 @@ msgstr "" "Kontrollerer om høy-nivå eller lav-nivå DSP-emulering skal benyttes. " "Standard er Sant" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Konvergens:" @@ -2377,33 +2432,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Kopier" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "Kopier &funksjon" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "Kopier &heksadesimal" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "Kopier adresse" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "Kopier heksadesimal" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "Kopier kode&linje" @@ -2411,11 +2471,15 @@ msgstr "Kopier kode&linje" msgid "Copy failed" msgstr "Kopiering mislyktes" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "Kopier til A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "Kopier til B" @@ -2430,16 +2494,16 @@ msgstr "Kjerne" msgid "Cost" msgstr "Kostnad" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "Kunne ikke kommunisere med vert." -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "Kunne Ikke opprette klient." -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "Kunne Ikke opprette likemann." @@ -2526,15 +2590,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "Kunne ikke finne sentral tjener" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "Kunne ikke åpne fil." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "Kunne ikke lese fil." @@ -2561,7 +2625,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "Skaper:" @@ -2584,11 +2648,11 @@ msgstr "" msgid "Crossfade" msgstr "Kryssutfasing" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "Nåværende region" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2596,7 +2660,7 @@ msgstr "" msgid "Current context" msgstr "Nåværende sammenheng" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "Nåværende spill" @@ -2604,7 +2668,7 @@ msgstr "Nåværende spill" msgid "Current thread" msgstr "Nåværende tråd" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2635,7 +2699,7 @@ msgstr "" msgid "DJ Turntable" msgstr "DJ dreiebord" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "DK-bongotrommer" @@ -2663,7 +2727,7 @@ msgstr "" msgid "DSU Client" msgstr "DSU-klient" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2671,11 +2735,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Dansematte" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "Data" @@ -2687,28 +2751,27 @@ msgstr "" msgid "Data Transfer" msgstr "Dataoverføring" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "Datatype" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "Data mottatt!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2726,7 +2789,7 @@ msgid "Debug Only" msgstr "Kun feilretting" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Feilretting" @@ -2768,7 +2831,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Standard" @@ -2784,7 +2847,7 @@ msgstr "Standard enhet" msgid "Default Font" msgstr "Forvalgt skrift" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "Forvalgt ISO-fil:" @@ -2809,7 +2872,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2824,11 +2887,11 @@ msgid "Delete Selected Files..." msgstr "Slett valgte filer..." #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2836,21 +2899,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "Dybdeprosent:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Dybde:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Beskrivelse" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Beskrivelse:" @@ -2859,11 +2922,11 @@ msgstr "Beskrivelse:" msgid "Detached" msgstr "Frakoblet" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Finn automatisk" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2871,25 +2934,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "Deterministisk dobbelkjerne:" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "Utviklingsutgave (flere ganger daglig)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Enhet" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "Enhets-PID (f.eks. 0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Enhetsinnstillinger" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "Enhets-VID (f.eks 057e)" @@ -2901,11 +2964,15 @@ msgstr "Enhet:" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "Demp skjermbelysning etter fem minutters inaktivitet." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "Direkte tilkobling" @@ -2936,7 +3003,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "Skru av bounding-box-kalkulasjoner" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "Slå av Kopieringsfilter" @@ -2948,15 +3015,15 @@ msgstr "Slå av EFB VRAM Kopier" msgid "Disable Emulation Speed Limit" msgstr "Skru av hastighetsbegrensning av emulering" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Skru av tåke" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "Deaktiver JIT-lager" @@ -2964,7 +3031,7 @@ msgstr "Deaktiver JIT-lager" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2978,7 +3045,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2995,11 +3062,15 @@ msgstr "Plate" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -3017,25 +3088,25 @@ msgstr "Avstand" msgid "Distance of travel from neutral position." msgstr "Reiseavstand fra nøytral posisjon." -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "Tillater du at Dolphin samler inn informasjon til Dolphins utviklere?" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "Vil du legge til «%1» i listen over spillfilbaner?" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "Vil du tømme listen over symbolnavn?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Vil du stoppe pågående emulering?" @@ -3052,9 +3123,9 @@ msgstr "Dolphin FIFO-Logg (*.dff)" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "Dolphin Map Fil (*.map)" @@ -3066,8 +3137,8 @@ msgstr "Dolphin-signatur-CSV-fil" msgid "Dolphin Signature File" msgstr "Dolphin-signaturfil" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Dolphin TAS-Filmer (*.dtm)" @@ -3102,11 +3173,11 @@ msgstr "Dolphin kunne ikke fullføre den forespurte handligen." msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "Dolphin er en fri og åpen kildekode-basert GameCube og Wii-emulator." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "Dolphin er for gammel for traverseringsserveren" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." @@ -3114,11 +3185,11 @@ msgstr "" "Dolphin kan ikke verifisere typiske TGC-filer ordentlig, siden de ikke er " "ripper av faktiske disker." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "Dolphin kan ikke verifisere ulisensierte disker." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3133,7 +3204,7 @@ msgstr "Dolphins juksesystem er for øyeblikket deaktivert." msgid "Domain" msgstr "Domene" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "Ikke oppdater" @@ -3146,24 +3217,26 @@ msgid "Done compressing disc image." msgstr "Ferdig med å komprimere disk-avbildningsfil." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "Dobbel" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Ned" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "Last ned koder" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "Last ned koder fra WiiRD-databasen" @@ -3171,11 +3244,11 @@ msgstr "Last ned koder fra WiiRD-databasen" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "Last ned spillcovere fra GameTDB.com for bruk i portrettmodus" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "Nedlasting fullført" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "Lastet %1 koder. (Lagt til %2)" @@ -3198,27 +3271,35 @@ msgstr "Trommesett" msgid "Dual Core" msgstr "Dobbelkjerne" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Juksedukke" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "Dump &ARAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "Dump &ExRAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "Dump &FakeVMEM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "Dump &MRAM" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Dump lyd" @@ -3230,7 +3311,7 @@ msgstr "Dump grunnteksturer" msgid "Dump EFB Target" msgstr "Dump EFB-mål" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Dumping av bilder" @@ -3242,7 +3323,7 @@ msgstr "" msgid "Dump Objects" msgstr "Dump objekter" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "Dump sti:" @@ -3339,16 +3420,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Nederlandsk" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "&Avslutt" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3360,7 +3441,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3388,7 +3469,7 @@ msgstr "Effekt" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "Effektiv" @@ -3396,7 +3477,7 @@ msgstr "Effektiv" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "EiB" @@ -3408,7 +3489,7 @@ msgstr "Løs ut disk" msgid "Embedded Frame Buffer (EFB)" msgstr "Eksternt bildemellomlager (EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Tom" @@ -3416,11 +3497,11 @@ msgstr "Tom" msgid "Emu Thread already running" msgstr "Emulator-CPU-tråden kjører allerede" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "Emuler Wii-ens Blåtannsadapter" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "Emulert Wii Remote" @@ -3436,8 +3517,12 @@ msgstr "" msgid "Emulation Speed" msgstr "Emuleringshastighet" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3453,7 +3538,7 @@ msgstr "Slå på API-valideringslag" msgid "Enable Audio Stretching" msgstr "Tillat lydstrekking" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Aktiver juksekoder" @@ -3465,7 +3550,7 @@ msgstr "Aktiver egendefinert RTC (klokke)" msgid "Enable Dual Core" msgstr "Aktiver bruk av dobbelkjerne" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Aktiver bruk av dobbelkjerne (for bedre ytelse)" @@ -3491,19 +3576,19 @@ msgid "Enable Progressive Scan" msgstr "Aktiver progressiv skanning" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "Aktiver vibrering" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Aktiver skjermbeskytter" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Tillat høyttalerdata" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "Skru på bruks- og statistikkrapportering" @@ -3535,7 +3620,7 @@ msgstr "" "Aktiverer flyttallskalkulering av punkt for resulterende flagg, som trengs " "for noen få spill. (PÅ = Kompatibelt, AV = Raskt)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3543,7 +3628,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3573,7 +3658,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "Tillater strekking av lyden for å matche emuleringshastigheten." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3609,7 +3694,7 @@ msgstr "" msgid "Encoding" msgstr "Tegnkoding" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3622,12 +3707,12 @@ msgid "Enet Didn't Initialize" msgstr "Enhet ble ikke igangsatt" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Engelsk" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3637,7 +3722,7 @@ msgstr "Forbedringer" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "Skriv inn ID for USB-enhet" @@ -3651,11 +3736,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "Skriv inn en ny Bredbåndsadapter MAC-adresse:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "Oppgi passord" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "Skriv inn RSO-moduladresse:" @@ -3664,65 +3749,68 @@ msgstr "Skriv inn RSO-moduladresse:" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Feil" @@ -3736,19 +3824,19 @@ msgid "Error loading selected language. Falling back to system default." msgstr "" "Feil ved innlasting av valgt språk. Faller tilbake til systemstandarden." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "Feil ved henting av sesjonsliste: %1" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "Feil ved synkronisering av juksekoder." -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "Feil ved bearbeidelse av data." @@ -3768,7 +3856,7 @@ msgstr "Feil ved synkronisering av lagringsdata!" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3822,11 +3910,11 @@ msgstr "" "Feil: Prøver å slå opp Windows-1252 skrifttyper, men de er ikke lastet. " "Spill kan potensielt ikke vise skrifttyper riktig, eller krasje." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3835,11 +3923,39 @@ msgstr "" msgid "Euphoria" msgstr "Euforia" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Europa" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3888,14 +4004,14 @@ msgstr "" msgid "Experimental" msgstr "Eksperimentell" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Eksporter alle Wii-lagringsfiler" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3903,15 +4019,15 @@ msgstr "" msgid "Export Recording" msgstr "Eksporter opptak" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Eksporter opptak…" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "Eksporter lagringsfil" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3923,22 +4039,22 @@ msgstr "Eksporter Wii-lagrefil" msgid "Export Wii Saves" msgstr "Eksporter Wii-lagrefiler" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "Eksporterte %n lagringsfil(er)." #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Utvidelse" @@ -3951,7 +4067,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "Ekstern" @@ -3959,7 +4075,7 @@ msgstr "Ekstern" msgid "External Frame Buffer (XFB)" msgstr "Eksternt bildebuffer (EFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "Pakk ut sertifikater fra NAND" @@ -3997,7 +4113,7 @@ msgid "FD" msgstr "FD" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "FIFO-spiller" @@ -4005,7 +4121,7 @@ msgstr "FIFO-spiller" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" @@ -4013,11 +4129,11 @@ msgstr "" "Kunne ikke åpne minnekort:\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "Kunne ikke legge til denne sesjonen i NetPlay-indeksen: %1" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "Kunne ikke legge til på signaturfil '%1'" @@ -4029,7 +4145,7 @@ msgstr "Kunne ikke gjøre krav på grensesnitt for BT-gjennompass" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "Kunne ikke koble til server: %1" @@ -4050,12 +4166,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "Kunne ikke lage DXGI factory" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "Kunne ikke slette NetPlay-minnekort. Verifiser dine skrivetillatelser." @@ -4067,19 +4183,19 @@ msgstr "Klarte ikke å slette valgt fil." msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Nedlasting av koder mislyktes." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "Kunne ikke dumpe %1: Kan ikke åpne fil" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "Kunne ikke dumpe %1: Kan ikke skrive til fil" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -4088,7 +4204,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "Kunne ikke eksportere følgende lagringsfiler:" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "Klarte ikke å pakke ut sertifikater fra NAND" @@ -4111,29 +4227,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "Kunne ikke finne en eller flere D3D-symboler" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "Kunne ikke importere \"%1\"." -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "Klarte ikke å igangsette kjerne" @@ -4149,16 +4265,16 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "Kunne ikke installere pakke: %1" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "Klarte ikke å installere denne tittelen til NAND." -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" @@ -4166,8 +4282,8 @@ msgstr "" "Klarte ikke å lytte til port %1. Kjøres det en annen instans av NetPlay-" "tjeneren?" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "Kunne ikke laste RSO-modul ved %1" @@ -4179,11 +4295,11 @@ msgstr "Kunne ikke laste d3d11.dll" msgid "Failed to load dxgi.dll" msgstr "Kunne ikke laste dxgi.dll" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "Kunne ikke laste map-fil '%1'" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "Klarte ikke å laste kjørbar fil til minne." @@ -4194,7 +4310,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "Klarte ikke å åpne \"%1\"" @@ -4223,11 +4339,11 @@ msgstr "" "Kunne ikke åpne ekstern editor.\n" "Pass på at det er en applikasjon valgt til å åpne INI-filer." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "Klarte ikke å åpne tjener" @@ -4236,7 +4352,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "Mislyktes i å åpne inndatafilen «%1»." #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4248,7 +4364,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4256,25 +4372,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4289,18 +4405,18 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "Kunne ikke fjerne denne tittelen fra NAND." -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" "Kunne ikke tilbakestille NetPlay GCI-mappe. Verifiser dine skrivetillatelser." -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" "Kunne ikke tilbakestille NetPlay NAND-mappe. Verifiser dine " "skrivetillatelser." -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4308,23 +4424,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "Lagring av FIFO-logg mislyktes." -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "Kunne ikke lagre kodemapping til sti '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "Kunne ikke lagre signaturfil '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "Kunne ikke lagre symbolkart til sti '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "Kunne ikke lagre til signaturfil '%1'" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "Kunne ikke avinstallere pakke: %1" @@ -4332,11 +4448,11 @@ msgstr "Kunne ikke avinstallere pakke: %1" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Kunne ikke skrive BT.DINF til SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "Skriving av Mii-data mislyktes." -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "Skriving til Wii-lagringsfil mislyktes." @@ -4344,22 +4460,22 @@ msgstr "Skriving til Wii-lagringsfil mislyktes." msgid "Failed to write config file!" msgstr "Kunne ikke skrive til konfigurasjonsfilen!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4368,19 +4484,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "Feil" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4393,7 +4509,7 @@ msgstr "Rask" msgid "Fast Depth Calculation" msgstr "Rask dybdekalkulering" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4410,7 +4526,7 @@ msgstr "Fildetaljer" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "Filformat" @@ -4424,18 +4540,18 @@ msgstr "Fil-informasjon" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Filnavn" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "Filbane" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Filstørrelse" @@ -4443,11 +4559,11 @@ msgstr "Filstørrelse" msgid "File Size:" msgstr "Filstørrelse:" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "Filen inneholdt ingen koder." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4461,12 +4577,12 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" "Filstørrelsen samsvarer ikke med noen kjente Gamecube-minnekortstørrelser." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4474,15 +4590,15 @@ msgstr "" msgid "Filesystem" msgstr "Filsystem" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "Filtrer symboler" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "Filtre" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4490,11 +4606,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "Finn &neste" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "Finn &forrige" @@ -4510,18 +4626,22 @@ msgstr "" "Ferdigstiller oppdateringen...\n" "Dette kan ta litt tid." -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "Førsteperson" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Fiks sjekksummer" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4531,13 +4651,14 @@ msgstr "Flagg" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "Flyttall" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "Følg &avgrening" @@ -4563,7 +4684,7 @@ msgstr "" msgid "Force 16:9" msgstr "Tving 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "Tving 24-biters farge" @@ -4571,15 +4692,15 @@ msgstr "Tving 24-biters farge" msgid "Force 4:3" msgstr "Tving 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "Tving lytteport:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Tving teksturfiltrering" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4589,7 +4710,7 @@ msgid "" "
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4608,21 +4729,21 @@ msgstr "Format:" msgid "Forward" msgstr "Fremover" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Videresendingsport (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "Fant %1 resultater for \"%2\"" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "Bilde %1" @@ -4651,7 +4772,7 @@ msgstr "" msgid "Frame Range" msgstr "Bildespennvidde" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4663,19 +4784,19 @@ msgstr "Bilder å ta opp:" msgid "France" msgstr "Frankrike" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4683,7 +4804,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -5091,7 +5212,7 @@ msgstr "Grønn venstre" msgid "Green Right" msgstr "Grønn høyre" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "Rutenettvisning" @@ -5104,7 +5225,7 @@ msgstr "Gitar" msgid "Gyroscope" msgstr "Gyroskop" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5117,12 +5238,29 @@ msgstr "Hacks" msgid "Head" msgstr "Head" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5134,19 +5272,19 @@ msgstr "Heksadesimal" msgid "Hide" msgstr "Gjem" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "Gjem ikke-kompatible sesjoner" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5164,21 +5302,27 @@ msgstr "Høyest" msgid "Hit Strength" msgstr "Treffsyrke" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Vert" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "Vertskode:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "Host Input-autoritet" @@ -5186,7 +5330,7 @@ msgstr "Host Input-autoritet" msgid "Host Size" msgstr "Vertstørrelse" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5194,11 +5338,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "Vertsinndataautoritet deaktivert" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "Vertsinndataautoritet aktivert" @@ -5210,7 +5354,7 @@ msgstr "Vær vertskap med NetPlay" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "Tastesnarveis-innstillinger" @@ -5261,11 +5405,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "IP-adresse:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "Innstillinger for IPL" @@ -5274,7 +5418,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "IR-sensitivitet:" @@ -5296,22 +5440,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Ikon" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "Identitetsgenerering" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5367,7 +5511,7 @@ msgstr "Ignorer formatendringer" msgid "Ignore for this session" msgstr "Ignorer for denne sesjonen" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5375,7 +5519,7 @@ msgid "" "checked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5396,30 +5540,30 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "Importer BootMii NAND sikkerhetskopi..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Importer Wii-lagringsfil …" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "Importing NAND sikkerhetskopi" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" @@ -5428,11 +5572,20 @@ msgstr "" "Importerer NAND sikkerhetskopi\n" "Tid passert: %1s" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "I spillet?" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5485,8 +5638,8 @@ msgstr "Info" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Informasjon" @@ -5495,10 +5648,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Inngang" @@ -5512,16 +5665,22 @@ msgstr "Inndata styrke kreves for aktivering." msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "Sett inn &nop" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Sett inn SD-kort" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "Installer" @@ -5533,7 +5692,7 @@ msgstr "" msgid "Install Update" msgstr "Installer oppdatering" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "Installer WAD…" @@ -5549,11 +5708,11 @@ msgstr "" msgid "Instruction" msgstr "Instruksjon" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "Instruksjonsstoppunkt" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "Instruksjon:" @@ -5571,7 +5730,7 @@ msgid "Interface" msgstr "Grensesnitt" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Intern LZO-feil - komprimering mislyktes" @@ -5580,27 +5739,27 @@ msgstr "Intern LZO-feil - komprimering mislyktes" msgid "Internal LZO Error - decompression failed" msgstr "Intern LZO-feil - dekomprimering mislyktes" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Intern LZO-feil - lzo_init() mislyktes" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "Intern oppløsning" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Intern bildeoppløsning:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5608,11 +5767,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "Fortolker (tregest)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "Fortolkerkjerne" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5620,7 +5779,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "Ugyldig mikset kode" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "Ugyldig Pakke %1 oppgitt: %2" @@ -5629,15 +5788,15 @@ msgstr "Ugyldig Pakke %1 oppgitt: %2" msgid "Invalid Player ID" msgstr "Ugyldig spiller-ID" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "Ugyldig RSO-moduladresse: %1" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "Ugyldig kallstakk" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "Ugyldige sjekksummer." @@ -5645,11 +5804,11 @@ msgstr "Ugyldige sjekksummer." msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "Ugyldig vert" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "Ugyldig inndata for feltet \"%1\"" @@ -5662,31 +5821,31 @@ msgstr "Ugyldig inndata oppgitt" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "Ugyldig passord oppgitt." -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Ugyldig opptaksfil" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Ugyldige søkeparametre (inget objekt valgt)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Ugyldig søkestring (kunne ikke konverte til tall)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "Ugyldig søkestreng (bare strenger av partallslengde støttes)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "Ugyldig tittel-ID." @@ -5695,8 +5854,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Italiensk" @@ -5704,11 +5863,11 @@ msgstr "Italiensk" msgid "Italy" msgstr "Italia" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "JIT Blokklinking Av" @@ -5716,47 +5875,47 @@ msgstr "JIT Blokklinking Av" msgid "JIT Blocks" msgstr "JIT-blokker" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "JIT Branching Av" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "JIT FlytTall Av" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "JIT Heltall Av" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "JIT LastLagre Flyt Av" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "JIT LastLagre Av" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "JIT LastLagre Parret Av" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "JIT LastLagre lXz Av" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "JIT Ibzx Av" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "JIT LastLagre Iwz Av" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "JIT Av (JIT Kjerne)" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "JIT Parret Av" @@ -5768,11 +5927,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "JIT Systemregistre Av" @@ -5783,12 +5942,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Japan" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japansk" @@ -5808,12 +5967,12 @@ msgstr "Behold vindu øverst" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Tastatur" @@ -5826,20 +5985,20 @@ msgstr "Tastatur" msgid "Keys" msgstr "Nøkler" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "KiB" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Spark spiller" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Korea" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Koreansk" @@ -5867,7 +6026,7 @@ msgstr "" msgid "Label" msgstr "Etikett" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5951,15 +6110,15 @@ msgstr "" msgid "License" msgstr "Lisens" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "Begrens Klump-opplastningshastighet:" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "Listekolonner" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "Listevisning" @@ -5968,17 +6127,17 @@ msgid "Listening" msgstr "Lytter" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Last" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "Last &Dårlig kartfil..." -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "Last &Annen kartfil..." @@ -5986,7 +6145,7 @@ msgstr "Last &Annen kartfil..." msgid "Load Custom Textures" msgstr "Last inn brukerlagde teksturer" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "Last inn GameCube-hovedmeny" @@ -5995,7 +6154,7 @@ msgstr "Last inn GameCube-hovedmeny" msgid "Load Last State" msgstr "Last inn nyeste hurtiglagring" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "Innlastingsfilbane:" @@ -6088,23 +6247,23 @@ msgstr "Åpne hurtiglagringsplass nr. 8" msgid "Load State Slot 9" msgstr "Åpne hurtiglagringsplass nr. 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "Last inn tilstand fra fil" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "Last inn tilstand fra valgt kortplass" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "Last inn tilstand fra kortplass" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "Last inn Wii-lagringsfil" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "Last inn Wii-systemmeny %1" @@ -6112,12 +6271,12 @@ msgstr "Last inn Wii-systemmeny %1" msgid "Load from Selected Slot" msgstr "Last fra valgt kortplass" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "Last inn fra kortplass %1 - %2" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "Last kartfil" @@ -6125,7 +6284,7 @@ msgstr "Last kartfil" msgid "Load..." msgstr "Last..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "Lastet symboler fra '%1'" @@ -6136,7 +6295,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "Lokal" @@ -6145,7 +6304,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Logg" @@ -6153,7 +6312,7 @@ msgstr "Logg" msgid "Log Configuration" msgstr "Logg-innstillinger" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "Jit-logg Instruksjonsdekning" @@ -6180,7 +6339,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "Mistet tilkobling til NetPlay-tjener…" @@ -6209,7 +6368,7 @@ msgstr "MMU" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6219,7 +6378,7 @@ msgstr "Hoved-joystick" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Skaper" @@ -6228,7 +6387,7 @@ msgstr "Skaper" msgid "Maker:" msgstr "Skaper:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6236,7 +6395,7 @@ msgid "" "unchecked.
" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "Administrer NAND" @@ -6244,7 +6403,7 @@ msgstr "Administrer NAND" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "Mapping" @@ -6252,15 +6411,15 @@ msgstr "Mapping" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "Treff funnet" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "Maksimal Buffer:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "Maksimum bufferstørrelse endret til %1" @@ -6269,7 +6428,7 @@ msgstr "Maksimum bufferstørrelse endret til %1" msgid "Maximum tilt angle." msgstr "Maksimal tilt-vinkel." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "Kan senke ytelse i Wii-menyen og noen spill." @@ -6278,11 +6437,11 @@ msgstr "Kan senke ytelse i Wii-menyen og noen spill." msgid "Medium" msgstr "Middels" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "Minne" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "Minne Stoppunkt" @@ -6290,7 +6449,7 @@ msgstr "Minne Stoppunkt" msgid "Memory Card" msgstr "Minnekort" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "Minnekortbehandler" @@ -6308,7 +6467,7 @@ msgstr "" msgid "Memory Override" msgstr "Minneoverstyring" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "Minne-stoppunktinnstillinger" @@ -6324,7 +6483,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6336,13 +6495,13 @@ msgstr "" "det er anbefalt at du bevarer sikkerhetskopier av begge NAND-filer. Er du " "sikker på at du vil fortsette?" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "MiB" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Mikrofon" @@ -6350,19 +6509,19 @@ msgstr "Mikrofon" msgid "Misc" msgstr "Diverse" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Diverse innstillinger" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6385,12 +6544,12 @@ msgid "" "unchecked.
" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "Mono" @@ -6402,11 +6561,11 @@ msgstr "Monoskopiske skygger" msgid "Monospaced Font" msgstr "Fastbreddeskrift" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "Bevegelsesinndata" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "Bevegelsessimulering" @@ -6446,10 +6605,10 @@ msgstr "Film" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "NAND-sjekk" @@ -6457,26 +6616,26 @@ msgstr "NAND-sjekk" msgid "NKit Warning" msgstr "NKit-advarsel" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "Navn" @@ -6488,37 +6647,37 @@ msgstr "Navn for en ny merkelapp:" msgid "Name of the tag to remove:" msgstr "Navn for tagg til å fjerne:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "Navnet på din sesjon som vises i tjenerutforskeren" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Navn:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Opprinnelig størrelse (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "NetPlay" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "NetPlay Sesjonsutforsker" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "NetPlay-innstillinger" @@ -6526,18 +6685,18 @@ msgstr "NetPlay-innstillinger" msgid "Netherlands" msgstr "Nederland" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "NetPlay har desynkronisert i NetPlay_GetButtonPress()" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" "NetPlay har desynkronisert. Det er ikke mulig å hente seg inn igjen fra " "dette." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "Nettverk" @@ -6558,11 +6717,11 @@ msgstr "Aldri autooppdater" msgid "New" msgstr "Nye" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "Nytt stoppunkt" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "Nytt søk" @@ -6570,7 +6729,7 @@ msgstr "Nytt søk" msgid "New Tag..." msgstr "Ny merkelapp..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "Ny identietet opprettet." @@ -6587,7 +6746,7 @@ msgstr "Ny etikett" msgid "Next Game Profile" msgstr "Neste spillprofil" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "Neste treff" @@ -6596,17 +6755,17 @@ msgstr "Neste treff" msgid "Next Profile" msgstr "Neste profil" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "Kallenavnet er for langt." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Brukernavn:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "Nei" @@ -6614,6 +6773,10 @@ msgstr "Nei" msgid "No Adapter Detected" msgstr "Ingen adapter oppdaget" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "Ingen lydavspilling" @@ -6624,24 +6787,20 @@ msgstr "Ingen lydavspilling" msgid "No Compression" msgstr "Ingen komprimering" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "Ingen treff" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "Ingen verdi angitt" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Ingen beskrivelse tilgjengelig" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "Ingen feil." @@ -6653,15 +6812,15 @@ msgstr "Ingen utvidelse valgt." msgid "No file loaded / recorded." msgstr "Ingen filer lastet / tatt opp." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "Ingen feil har blitt oppdaget." @@ -6669,11 +6828,15 @@ msgstr "Ingen feil har blitt oppdaget." msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "Ingen problemer ble funnet." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6687,7 +6850,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "Ingen opptak lastet." @@ -6695,19 +6858,15 @@ msgstr "Ingen opptak lastet." msgid "No save data found." msgstr "Ingen lagringsfiler funnet." -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" "Ingen undo.dtm funnet, avbryter angring av lasting av lagringsstadie for å " "unngå film-desynkronisering" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "Ingen verdi angitt." - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6717,7 +6876,7 @@ msgstr "Ingen" msgid "North America" msgstr "Nord-Amerika" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "Ikke funnet" @@ -6725,11 +6884,11 @@ msgstr "Ikke funnet" msgid "Not Set" msgstr "Ikke satt" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "Ikke alle spillere har spillet. Vil du virkelig starte?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6737,7 +6896,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6797,13 +6956,13 @@ msgstr "Nunchuk-orientering" msgid "Nunchuk Stick" msgstr "Nunchuck-Joystick" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "OK" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "Objekt %1" @@ -6816,11 +6975,11 @@ msgid "Oceania" msgstr "Oseania" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Av" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6832,11 +6991,11 @@ msgstr "På" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "Nettbasert &dokumentasjon" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" @@ -6844,7 +7003,7 @@ msgstr "" "Legg til kun symboler med prefiks:\n" "(Blank for alle symboler)" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6861,7 +7020,7 @@ msgstr "Åpne" msgid "Open &Containing Folder" msgstr "Åpne &inneholdende mappe" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "Åpne mappe..." @@ -6909,7 +7068,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "Operatører" @@ -6927,7 +7086,7 @@ msgstr "Innstillinger" msgid "Orange" msgstr "Orange" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6935,7 +7094,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Andre" @@ -6948,11 +7107,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "Andre Status-hurtigtaster" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "Annen Statusadministrering" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "Andre spill..." @@ -6960,12 +7119,12 @@ msgstr "Andre spill..." msgid "Overlay Information" msgstr "Overleggs-informasjon" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "Spi&ll av inndataopptak…" -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -6990,7 +7149,7 @@ msgstr "PNG-bildefil (*.png);; Alle filer (*)" msgid "PPC Size" msgstr "PPC-størrelse" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "PPC vs Host" @@ -7007,7 +7166,7 @@ msgstr "Kontrollere" msgid "Parameters" msgstr "Parametere" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -7016,24 +7175,24 @@ msgstr "" msgid "Parsing Error" msgstr "Tolkningsfeil" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "Passiv" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "Gjennomstrøm en Blåtann-adapter" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "Passord" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" "Passord for å bli med i ditt spill (la stå tom for å ikke bruke passord)" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "Passord?" @@ -7054,7 +7213,7 @@ msgid "Path:" msgstr "Filbane:" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Baner" @@ -7062,7 +7221,7 @@ msgstr "Baner" msgid "Pause" msgstr "Pause" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "Pause på slutten av filmen" @@ -7085,11 +7244,11 @@ msgstr "Høyeste bevegelsesfart til nøytral posisjon." msgid "Peak velocity of outward swing movements." msgstr "Høyeste fart for utgående svingbevegelser." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Belysning per piksel" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "Utfør pålogget systemoppdatering" @@ -7099,23 +7258,23 @@ msgstr "Utfør systemoppdatering" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "Fysisk" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "PiB" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "Velg en debug-font" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "Ping" @@ -7128,7 +7287,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Plattform" @@ -7148,16 +7307,16 @@ msgstr "Spill av opptak" msgid "Playback Options" msgstr "Avspillingsalterntiver" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "Spiller" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Spillere" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7168,30 +7327,30 @@ msgstr "" msgid "Point" msgstr "Punkt" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "Port %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "Port:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" "Potensiell desynkronisering oppdaget: %1 kan ha desynkroniser i bilde %2" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Postbehandlingseffekt:" @@ -7203,15 +7362,15 @@ msgstr "Oppsett av Etterbehandlings-skyggelegging" msgid "Prefetch Custom Textures" msgstr "Forhåndsinnlasting av egendefinerte teksturer" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7250,7 +7409,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "Forrige spillprofil" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "Forrige spill" @@ -7261,15 +7420,15 @@ msgstr "Forrige profil" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "Privat" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "Privat og offentlig" @@ -7277,7 +7436,7 @@ msgstr "Privat og offentlig" msgid "Problem" msgstr "Problem" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." @@ -7285,7 +7444,7 @@ msgstr "" "Problem med høy alvorlighetsgrad funnet. Spillet vil sannsynligvis ikke " "fungere i det hele tatt." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." @@ -7293,7 +7452,7 @@ msgstr "" "Problem med lav alvorlighetsgrad funnet. Dette vil mest sannsynlig ikke " "hindre spillet fra å kjøre." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." @@ -7301,7 +7460,7 @@ msgstr "" "Problemer med medium alvorlighetsgrad funnet. Hele eller deler av spillet " "vil sannsynligvis ikke fungere riktig." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Profil" @@ -7315,15 +7474,15 @@ msgstr "Programteller" msgid "Progress" msgstr "Fremdrift" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "Offentlig" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "Tøm spillistehurtiglager" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7335,11 +7494,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "Quality of Service (QoS) kunne ikke aktiveres." -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "Quality of Service (QoS) ble aktivert." @@ -7349,12 +7508,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Spørsmål" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Avslutt" @@ -7374,11 +7533,11 @@ msgstr "Høyre-analog" msgid "READY" msgstr "KLAR" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "RSO-moduler" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "RSO-autooppdaging" @@ -7391,44 +7550,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "RVZ GC/Wii-avbildninger (*.rvz)" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Område" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "B&ytt instruksjon" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "Les" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "Skriv og les" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "Kun skrivebeskyttet" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "Les eller skriv" @@ -7436,11 +7595,11 @@ msgstr "Les eller skriv" msgid "Read-Only Mode" msgstr "Skrivebeskyttet modus" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Ekte balansebrett" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "Ekte Wii Remote" @@ -7453,11 +7612,11 @@ msgstr "Sentrer igjen" msgid "Record" msgstr "Opptak" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "Ta opp inndata" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "Tar opp" @@ -7482,7 +7641,7 @@ msgstr "Rød venstre" msgid "Red Right" msgstr "Rød høyre" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7498,16 +7657,16 @@ msgstr "'Redump.org-'status:" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Oppdater" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7515,26 +7674,26 @@ msgstr "" msgid "Refresh Game List" msgstr "Oppdater spilliste" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "Gjennoppfrisker..." #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Region" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "Region:" @@ -7554,16 +7713,16 @@ msgstr "" msgid "Remind Me Later" msgstr "Minn Meg Senere" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Fjern" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7586,8 +7745,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "&Gi symbol nytt navn" @@ -7620,29 +7779,37 @@ msgstr "Forespørsel om å bli med i din gruppe" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Nullstill" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "Tilbakestill Traverseringsserver" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "Tilbakestill Traverseringsserver til %1:%2" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "Tilbakestill traverseringsinnstillinger" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7650,15 +7817,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "Tilbakestill alle Wii-kontroll parringer" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "Ressurspakkebehandler" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7670,11 +7837,11 @@ msgstr "Omstart påkrevd" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "Tilbakestill instruksjon" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Forsøk igjen" @@ -7683,7 +7850,7 @@ msgstr "Forsøk igjen" msgid "Return Speed" msgstr "Returhastighet" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "Revisjon" @@ -7741,11 +7908,11 @@ msgstr "Rull mot venstre" msgid "Roll Right" msgstr "Rull mot høyre" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "Rom-ID" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7754,12 +7921,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "Rotasjon brukt ved utslaget av sving." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7769,11 +7937,11 @@ msgstr "" msgid "Rumble" msgstr "Rumble" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "Kjør &Til Hit" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7781,15 +7949,15 @@ msgstr "" msgid "Russia" msgstr "Russland" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "SD-kort" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "SD-kortbilde (*.raw);;Alle filer (*)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "SD-kort-sti:" @@ -7805,7 +7973,7 @@ msgstr "" msgid "SHA-1:" msgstr "SHA-1:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "SP1:" @@ -7819,11 +7987,11 @@ msgstr "SSL-sammenheng" msgid "START" msgstr "START" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "Lag&ringskode" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "Lagre &stadie" @@ -7833,7 +8001,7 @@ msgid "Safe" msgstr "Sikker" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7846,7 +8014,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "Lagringsfil Eksport" @@ -7867,11 +8035,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "Lagre import" @@ -7883,7 +8051,7 @@ msgstr "Lagre eldste hurtiglagring" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7933,23 +8101,23 @@ msgstr "Hurtiglagringsplass nr. 8" msgid "Save State Slot 9" msgstr "Hurtiglagringsplass nr. 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "Lagre tilstand til fil" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "Lagre tilstand til eldste kortplass" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "Lagre tilstand til valgt kortplass" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "Lagre tilstand til kortplass" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "&Lagre symbolkart som..." @@ -7957,7 +8125,7 @@ msgstr "&Lagre symbolkart som..." msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "Lagre og last inn tilstand" @@ -7969,11 +8137,11 @@ msgstr "" msgid "Save as..." msgstr "Lagre som …" -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "Lagre kombinert utdatafil som" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" @@ -7983,15 +8151,15 @@ msgstr "" "sikkerhetskopiere nåværende data før du overskriver.\n" "Overskriv nå?" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "Lagre kartfil" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "Lagre signaturfil" @@ -7999,7 +8167,7 @@ msgstr "Lagre signaturfil" msgid "Save to Selected Slot" msgstr "Lagre til valgt kortplass" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "Lagre til kortplass %1 - %2" @@ -8007,24 +8175,24 @@ msgstr "Lagre til kortplass %1 - %2" msgid "Save..." msgstr "Lagre …" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" "Lagret Wii-kontroll parring kan ikke tilbakestilles når et Wii-spill kjører." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Skalert EFB-kopi" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -8032,36 +8200,36 @@ msgstr "" msgid "ScrShot" msgstr "SkjDump" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Søk" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "Søkeadresse" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "Søk i nåværende objekt" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Søk i undermapper" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "Søk etter en instruks" @@ -8069,7 +8237,7 @@ msgstr "Søk etter en instruks" msgid "Search games..." msgstr "Søk spill..." -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "Søk instruksjon" @@ -8094,28 +8262,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Velg" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "Velg dumpens filbane" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "Velg eksportmappe" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -8123,11 +8291,11 @@ msgstr "" msgid "Select Last State" msgstr "Velg nyeste hurtiglagring" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "Velg innlastingsfilbane" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -8135,7 +8303,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "Velg inngang %1 - %2" @@ -8143,7 +8311,7 @@ msgstr "Velg inngang %1 - %2" msgid "Select State" msgstr "Velg tilstand" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Velg kortplass for lagringsstadie" @@ -8187,41 +8355,45 @@ msgstr "Velg lagringsstadieplass 8" msgid "Select State Slot 9" msgstr "Velg lagringsstadieplass 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "Velg Wii NAND-Rot" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "Velg mappe" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "Velg en fil" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "Velg et spill" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "Velg en SD-kortbilledfil" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "Velg et spill" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "Velg en tittel å installere til NAND" @@ -8229,11 +8401,11 @@ msgstr "Velg en tittel å installere til NAND" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "Velg RSO-moduladressen:" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8241,12 +8413,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "Velg nøkkelfil (OTP/SEEPROM dump)" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Velg lagringsfil" @@ -8262,15 +8434,15 @@ msgstr "" msgid "Selected Font" msgstr "Valgt skrifttype" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "Valgt kontrolprofil finnes ikke" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "Valgt spill eksisterer ikke i spillisten!" @@ -8294,7 +8466,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8334,11 +8506,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Send" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Sensorbjelkeposisjon:" @@ -8350,56 +8522,64 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "IP-adresse for server" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "Serverport" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "Tjeneren avslo traverseringsforsøk" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "Sett &verdi" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "Sett programteller" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "Sett som &forvalgt ISO" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "Angi minnekortfil for inngang A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "Angi minnekortfil for inngang B" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "Sett symbol-&sluttadresse" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "Angi symbol&størrelse" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "Sett symbol-sluttadresse" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "Angi symbolstørrelse (%1):" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8409,7 +8589,7 @@ msgstr "" "spill.\n" "Fungerer kanskje ikke i alle spill." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Sett Wii-systemspråket." @@ -8419,7 +8599,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8456,11 +8636,11 @@ msgstr "" "Senker lastetiden, men kan ødelegge noen spill. Kan ha negativ effekt på " "ytelse. Standard er False" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Vis &logg" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Vis &verktøylinje" @@ -8468,15 +8648,15 @@ msgstr "Vis &verktøylinje" msgid "Show Active Title in Window Title" msgstr "Vis aktiv tittel i vindustittel" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Vis Australia" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "Vis nåværende spill på Discord" @@ -8484,7 +8664,7 @@ msgstr "Vis nåværende spill på Discord" msgid "Show Debugging UI" msgstr "Vis utviklingsgrensesnitt" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "Vis ELF/DOL" @@ -8492,43 +8672,43 @@ msgstr "Vis ELF/DOL" msgid "Show FPS" msgstr "Vis bildefrekvens (FPS)" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Vis bildeteller" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Vis Frankrike" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "Vis GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Vis Tyskland" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "Vis golfmodusoverlegg" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Vis inndataskjerm" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Vis Italia" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Vis Korea" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Vis lagteller" @@ -8536,7 +8716,7 @@ msgstr "Vis lagteller" msgid "Show Language:" msgstr "Vis språk:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Vis logg&oppsett" @@ -8548,7 +8728,7 @@ msgstr "Vis NetPlay-meldinger" msgid "Show NetPlay Ping" msgstr "Vis NetPlay-ping" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Vis Nederland" @@ -8556,7 +8736,7 @@ msgstr "Vis Nederland" msgid "Show On-Screen Display Messages" msgstr "Vis Skjerm-meldinger" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Vis PAL" @@ -8565,23 +8745,23 @@ msgstr "Vis PAL" msgid "Show PC" msgstr "Vis PC" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Vis plattformer" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Vis regioner" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Vis Russland" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "Vis Spania" @@ -8590,46 +8770,50 @@ msgstr "Vis Spania" msgid "Show Statistics" msgstr "Vis statistikker" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "Vis systemklokke" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Vis Taiwan" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Vis USA" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Vis ukjent" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "Vis WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Vis Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Vis verden" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "Vis i &minne" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "Vis i kode" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "Vis i vertsliste" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8661,7 +8845,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Side-ved-side" @@ -8677,16 +8861,31 @@ msgstr "Sideveisveksling" msgid "Sideways Wii Remote" msgstr "Sideveis Wii Remote" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "Signaturdatabase" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "Signert heltall" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Forenklet kinesisk" @@ -8694,7 +8893,7 @@ msgstr "Forenklet kinesisk" msgid "Simulate DK Bongos" msgstr "Simuler DK-bongotrommer" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8723,7 +8922,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "Dropp EFB Access fra CPU" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "Hopp over hovedmeny" @@ -8731,7 +8930,7 @@ msgstr "Hopp over hovedmeny" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8745,19 +8944,19 @@ msgstr "" msgid "Slider Bar" msgstr "Glidebryter" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Kortplass A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "Kortplass A:" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Kortplass B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "Kortplass B:" @@ -8775,7 +8974,7 @@ msgstr "" msgid "Software Renderer" msgstr "Programvarerendrer" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8794,11 +8993,11 @@ msgstr "" "Vennligst sjekk de markerte verdiene." #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "Sorter alfabetisk" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "Lyd:" @@ -8811,8 +9010,8 @@ msgid "Spain" msgstr "Spania" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Spansk" @@ -8820,7 +9019,7 @@ msgstr "Spansk" msgid "Speaker Pan" msgstr "Høytaler-lydforskyvelse" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Lydstyrke:" @@ -8855,7 +9054,7 @@ msgstr "Hastighet" msgid "Speed up Disc Transfer Rate" msgstr "Øk diskoverføringshastighet" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "Stabil (årlig)" @@ -8867,16 +9066,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Forvalgt kontroller" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Start" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "Start &NetPlay…" @@ -8884,11 +9083,13 @@ msgstr "Start &NetPlay…" msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "Start inn&dataopptak" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Start opptak" @@ -8904,7 +9105,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "Startet spill" @@ -8915,7 +9116,7 @@ msgstr "Startet spill" msgid "State" msgstr "Tilstand" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Ratt" @@ -8943,19 +9144,19 @@ msgstr "Stepp ut" msgid "Step Over" msgstr "Stepp over" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "Utstepping vellykket!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "Utstepping tidsutløp!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "Stepper over..." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "Stepp vellykket!" @@ -8964,20 +9165,20 @@ msgstr "Stepp vellykket!" msgid "Stepping" msgstr "Stepper" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "Stereo" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Stereoskopisk 3D-modus:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Stereoskopi" @@ -8998,11 +9199,15 @@ msgstr "Joystick" msgid "Stop" msgstr "Stopp" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "Stopp avspilling/opptak av inndata" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "Stoppet spill" @@ -9016,7 +9221,7 @@ msgstr "Lagre EFB-kopier kun til tekstur" msgid "Store XFB Copies to Texture Only" msgstr "Lagre EFB-kopier kun til tekstur" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -9025,7 +9230,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -9038,7 +9243,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Strekk til Vindu" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "Streng innstillingssynkronisering" @@ -9061,16 +9266,16 @@ msgstr "Penn" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "Vellykket" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "Lagt til i NetPlay-indeksen" @@ -9080,11 +9285,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "Slettet '%1'." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -9093,7 +9298,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "Eksportering av lagringsfiler var vellykket" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "Ekstrahering av sertifikat fra NAND vellykket" @@ -9105,12 +9310,12 @@ msgstr "Ekstrahering av fil vellykket." msgid "Successfully extracted system data." msgstr "Ekstrahering av systemdata vellykket." -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "Installering av tittelen til NAND var vellykket." @@ -9122,16 +9327,16 @@ msgstr "Fjerning av tittelen fra NAND var vellykket." msgid "Support" msgstr "Støtte" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "Støtter SD og SDHC. Standardstørrelsen er 128 MB." #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "Surround" @@ -9139,11 +9344,11 @@ msgstr "Surround" msgid "Suspended" msgstr "Suspendert" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Bytt øyne" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9155,50 +9360,62 @@ msgstr "" msgid "Swing" msgstr "Sving" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "Bytt til A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "Bytt til B" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "Symbol" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "Symbol (%1) endeadresse:" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "Symbolnavn:" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "Symboler" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "Synkroniser" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "Synkroniser AR/Gecko-koder" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "Synkroniser all Wii-lagringsfiler" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "Synkroniser lagringsfiler" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "Synkroniser virkelige Wii-kontrollere og koble dem til" @@ -9214,37 +9431,37 @@ msgstr "" "Synkroniserer GPU- og CPU-trådene for å hindre tilfeldige frys i " "dobbelkjernemodus. (PÅ = kompatibel, AV = raskt)" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "Synkroniserer AR-koder..." -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "Synkroniserer Gecko-koder..." -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "Synkroniserer lagringsdata..." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Systemspråk:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "TAS-inndata" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "TAS-verktøy" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "Etiketter" @@ -9262,11 +9479,11 @@ msgstr "Hale" msgid "Taiwan" msgstr "Taiwan" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Ta skjermbilde" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Test" @@ -9275,7 +9492,7 @@ msgstr "Test" msgid "Texture Cache" msgstr "Tekstur-hurtiglager" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9297,7 +9514,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9311,7 +9528,7 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "Mesterverk-partisjonene mangler." -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." @@ -9319,7 +9536,7 @@ msgstr "" "NAND kunne ikke repareres. Det er anbefalt å sikkerhetskopiere dine " "nåværende data for deretter å starte med en blank NAND." -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "NAND er blitt reparert." @@ -9355,7 +9572,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9369,7 +9586,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "Disken som skulle settes inn ble ikke funnet." -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9395,19 +9612,19 @@ msgstr "Den emulerte Wii-konsollen er allerede oppdatert." msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "Innskrevet PID er ugyldig." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "Innskrevet VID er ugyldig." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "RegEx-uttrykket inneholder en syntaksfeil." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9460,7 +9677,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "Spillplata inneholder ikke noen brukbar oppdateringsinformasjon." -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "Spillet kjøres for øyeblikket." @@ -9474,7 +9691,7 @@ msgstr "" "systemmenyen er det ikke mulig å oppdatere den emulerte konsollen ved bruk " "av denne platen." -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9491,7 +9708,7 @@ msgstr "Sjekksummene samsvarer ikke!" msgid "The hashes match!" msgstr "Sjekksummene samsvarer!" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9515,12 +9732,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "Profilen \"%1\" finnes ikke" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9538,20 +9755,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "Den dekrypterte AR-koden inneholder ingen linjer." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "Serverens og klientens NetPlay-versjoner er ikke kompatible." -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "Tjeneren er full." -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "Tjeneren sendte en ukjent feilmelding." @@ -9576,7 +9793,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9631,7 +9848,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "Det er for mange partisjoner i den første partisjonstabellen." -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "Det er ingenting å angre!" @@ -9673,7 +9890,7 @@ msgstr "" "Denne koreanske tittelen er satt til å bruke en IOS som ikke typisk brukes " "på koreanske konsoller. Dette vil sannsynligvis føre til ERROR #002." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "USB-enheten er allerede hvitelistet." @@ -9693,7 +9910,7 @@ msgstr "" "Denne Action Replay-simulatoren støtter ikke koder som modifiserer selve " "Action Replay." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "Dette kan ikke omgjøres!" @@ -9744,7 +9961,11 @@ msgstr "" "sannsynlig at dette er en dobbeltlags disk, som har blitt kopiert som " "enkeltlags disk." -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "Denne filen virker ikke som en BootMii NAND-sikkerhetskopi." @@ -9769,27 +9990,27 @@ msgstr "" "grafikkort eller dets drivere støtter ikke dette. Derfor vil du oppleve feil " "eller bildefrys mens du kjører spillet." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "Dette er en dårlig dump." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "Dette er en god dump." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "Denne økten er passordbeskyttet:" @@ -9853,7 +10074,7 @@ msgid "" msgstr "" "Denne verdien er multiplisert med dybden som er valgt i grafikkoppsettet." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." @@ -9861,7 +10082,7 @@ msgstr "" "Dette vil begrense hastigheten til klump-opplasting per klient, som brukes " "til lagrefilssynkronisering." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9881,7 +10102,7 @@ msgstr "Tråder" msgid "Threshold" msgstr "Terskel" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "TiB" @@ -9898,22 +10119,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Tittel" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "Til" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "Til:" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "Bruk &fullskjerm" @@ -9938,7 +10159,7 @@ msgid "Toggle Aspect Ratio" msgstr "Skift bildestørrelse" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "Slå av/på stoppunkt" @@ -9998,14 +10219,20 @@ msgstr "" msgid "Toolbar" msgstr "Verktøylinje" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Oppe" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Topp-og-bunn" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -10040,20 +10267,20 @@ msgid "Touch" msgstr "Berør" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Tradisjonell kinesisk" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "Traverseringsfeil" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "Traverserings-tjener" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "Tidsavbrudd for traverseringstjener under tilkobling til vert" @@ -10085,21 +10312,13 @@ msgstr "Triggere" msgid "Type" msgstr "Type" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" -msgstr "U&16" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "U&32" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" -msgstr "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" +msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 msgid "UNKNOWN" @@ -10115,9 +10334,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "USB hviteliste-feil" @@ -10145,10 +10364,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10173,7 +10396,11 @@ msgstr "" "\n" "Ønsker du å ignorere denne linjen å fortsette fortolkning?" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -10185,15 +10412,15 @@ msgstr "Ikke bundet" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "Ukomprimerte GC/Wii bildefiler (*.iso *.gcm)" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Angre åpning av hurtiglagring" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Angre hurtiglagring" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "Avinstaller" @@ -10209,18 +10436,18 @@ msgstr "" "Å avinstallere WAD-filen vil fjerne den nåværende installerte versjonen av " "denne tittelen fra NAND, uten å slette dens lagringsdata. Fortsett?" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "USA" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Ukjent" @@ -10228,7 +10455,7 @@ msgstr "Ukjent" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10238,7 +10465,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10248,15 +10475,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10264,19 +10491,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10284,7 +10511,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Ubegrenset" @@ -10300,13 +10527,28 @@ msgstr "" msgid "Unpacking" msgstr "Utpakning" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "Usignert heltall" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10315,7 +10557,7 @@ msgstr "Opp" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Oppdater" @@ -10372,7 +10614,7 @@ msgstr "Oppreisningsveksling" msgid "Upright Wii Remote" msgstr "Oppreist Wii-kontroll" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "Innstillinger for rapportering av bruksstatistikk" @@ -10388,7 +10630,7 @@ msgstr "Bruk egendefinert brukerstil" msgid "Use Lossless Codec (FFV1)" msgstr "Bruk tapsfri kodek (FFV1)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "Bruk PAL60-modus (EuRGB60)" @@ -10414,18 +10656,40 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "Bruk kun én dybdebuffer for begge øyne. Trengs for noen få spill." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "Brukeroppsett" @@ -10438,18 +10702,18 @@ msgstr "Brukergrensesnitt" msgid "User Style:" msgstr "Brukertema:" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10475,23 +10739,23 @@ msgstr "" msgid "Using Qt %1" msgstr "Benytter Qt %1" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10504,7 +10768,7 @@ msgstr "Verktøyet" msgid "V-Sync" msgstr "Vertikal synkronisering" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Verdi" @@ -10537,8 +10801,8 @@ msgstr "Verifiser sertifikater" msgid "Verifying" msgstr "Verifiserer" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "Versjon" @@ -10574,7 +10838,7 @@ msgstr "Vis &minne" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10601,7 +10865,7 @@ msgstr "Volum opp" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "WAD-filer (*.wad)" @@ -10649,7 +10913,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "WASAPI (eksklusiv modus)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10657,8 +10921,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10680,7 +10944,7 @@ msgid "" "unsure, leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10693,10 +10957,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Advarsel" @@ -10714,28 +10978,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10761,7 +11025,7 @@ msgstr "" msgid "Watch" msgstr "Overvåk" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "Nettsted" @@ -10790,11 +11054,11 @@ msgid "" "unsure, leave this checked.
" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "Hvitelistede USB-gjennomstrømmingsenheter" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Bredskjermshack" @@ -10810,11 +11074,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Wii-meny" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Wii NAND-rot:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Wii Remote" @@ -10822,8 +11086,8 @@ msgstr "Wii Remote" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "Wii Remote %1" @@ -10836,11 +11100,11 @@ msgstr "Wii-kontrollerknapper" msgid "Wii Remote Orientation" msgstr "Wii-kontrollerorientering" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Innstillinger for Wii Remote" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Wii Remoter" @@ -10856,7 +11120,7 @@ msgstr "Wii TAS-inndata %1 - Wii-kontroll" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "Wii TAS-inndata %1 - Wii-kontroll + Nunchuck" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "Wii og Wii-kontroll" @@ -10864,7 +11128,7 @@ msgstr "Wii og Wii-kontroll" msgid "Wii data is not public yet" msgstr "Wii-data er ikke offentlige enda" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "Wii-lagringsfiler (*.bin);;Alle filer (*)" @@ -10892,18 +11156,18 @@ msgid "World" msgstr "Verden" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "Skriv" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "Bare skriv" @@ -10916,12 +11180,12 @@ msgid "Write to File" msgstr "Skriv til fil" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "Skriv til logg" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "Skriv til logg og stop" @@ -10929,7 +11193,7 @@ msgstr "Skriv til logg og stop" msgid "Write to Window" msgstr "Skriv til vindu" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "Feil versjon" @@ -10940,7 +11204,7 @@ msgstr "Feil versjon" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "XF-register " @@ -10969,8 +11233,8 @@ msgid "Yellow" msgstr "Gul" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "Ja" @@ -11005,7 +11269,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" "Du bruker den nyeste versjonen som er tilgjengelig gjennom denne " @@ -11040,11 +11304,11 @@ msgstr "" msgid "You have to enter a name." msgstr "Du må skrive inn et navn." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "Du må angi et navn for din økt!" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -11052,7 +11316,7 @@ msgstr "" msgid "You must restart Dolphin in order for the change to take effect." msgstr "Du må restarte Dolphin for at endringen skal tre i kraft." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "Du må velge et spill å tjene som vertskap for!" @@ -11083,23 +11347,23 @@ msgstr "Zero 3-kode støttes ikke" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -11118,13 +11382,13 @@ msgstr "cm" msgid "d3d12.dll could not be loaded." msgstr "d3d12.dll kunne ikke lastes." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "frakoblet" @@ -11140,31 +11404,31 @@ msgstr "" msgid "fake-completion" msgstr "falsk-utførrelse" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -11194,7 +11458,7 @@ msgstr "" msgid "on" msgstr "på" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "eller velg en enhet" @@ -11203,7 +11467,7 @@ msgstr "eller velg en enhet" msgid "s" msgstr "sek" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -11212,7 +11476,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "uDraw-spilltegnebrett" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -11231,7 +11495,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -11250,7 +11514,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11258,7 +11522,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "| Eller" diff --git a/Languages/po/nl.po b/Languages/po/nl.po index 115b29f7bf32..a49fad36d060 100644 --- a/Languages/po/nl.po +++ b/Languages/po/nl.po @@ -12,11 +12,13 @@ # Jos van Mourik, 2018-2019,2021 # MADCreations , 2011 # Marinus Schot , 2013 +# Martin Dierikx, 2022 # Mike van der Kuijl , 2019-2020 # Mike van der Kuijl , 2020-2022 # Mike van der Kuijl , 2021 # Mourits Pvllen , 2014 # Pierre Bourdon , 2014 +# Simon Mariën, 2022 # Tijmen Wildervanck , 2015-2016 # Tijmen Wildervanck , 2016,2020 # Wafoe Wafoe, 2021 @@ -24,9 +26,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-19 13:21+0000\n" -"Last-Translator: Mike van der Kuijl \n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Mike van der Kuijl , 2020-2022\n" "Language-Team: Dutch (http://www.transifex.com/delroth/dolphin-emu/language/" "nl/)\n" "Language: nl\n" @@ -35,7 +37,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -47,7 +49,7 @@ msgstr "" "Omdat GameCube schijfafbeeldingen weinig verificatiedata bevatten kunnen er " "problemen zijn die Dolphin niet kan detecteren." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -59,7 +61,7 @@ msgstr "" "Omdat deze titel niet voor retail Wii consoles is kan Dolphin het niet " "verifiëren." -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -83,7 +85,7 @@ msgstr "" msgid " (Disc %1)" msgstr " (Schijf %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "! Niet" @@ -91,9 +93,9 @@ msgstr "! Niet" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "\"{0}\" is een ongeldig GCM/ISO-bestand." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" -msgstr "$ Gebruiker Variabel" +msgstr "$ Gebruiker Variabele" #. i18n: The symbol for percent. #. i18n: The percent symbol. @@ -105,7 +107,7 @@ msgstr "$ Gebruiker Variabel" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "% Modulo" @@ -121,17 +123,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "%1 %2" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "%1 %2 %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -150,7 +152,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (Revisie %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "%1 (Standaard)" @@ -190,7 +192,7 @@ msgstr "%1 MB (MEM2)" msgid "%1 doesn't support this feature on your system." msgstr "%1 ondersteunt deze functie niet op uw systeem." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "%1 ondersteunt deze functie niet." @@ -204,23 +206,23 @@ msgstr "" "%2 object(en)\n" "Huidige Frame: %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "%1 doet nu mee" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "%1 is vertrokken" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "%1 is geen geldige ROM" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "%1 is nu aan het golfen" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "%1 geheugen reeksen" @@ -229,11 +231,11 @@ msgstr "%1 geheugen reeksen" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "%1 sessie gevonden" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "%1 sessies gevonden" @@ -245,15 +247,15 @@ msgstr "%1%" msgid "%1% (%2 MHz)" msgstr "%1% (%2 MHz)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (Normale Snelheid)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "%1, %2, %3, %4" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "%1: %2" @@ -269,30 +271,31 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2]: %3/%4 MiB" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "%1x Native (%2x%3)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." -msgstr "%n adres(sen) konden niet worden benaderd in het geëmuleerde geheugen." +msgstr "" +"%n adres(sen) kon(den) niet worden benaderd in het geëmuleerde geheugen." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." -msgstr "%n adressen blijven over." +msgstr "%n adres(sen) blijft/blijven over." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." -msgstr "%n adressen zijn verwijderd." +msgstr "%n adres(sen) is/zijn verwijderd." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "& En" @@ -312,7 +315,7 @@ msgstr "&3x" msgid "&4x" msgstr "&4x" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&Over" @@ -321,11 +324,11 @@ msgid "&Add Memory Breakpoint" msgstr "&Voeg Geheugen Breakpoint Toe" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "&Nieuwe Code Toevoegen..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "&Functie toevoegen" @@ -333,19 +336,19 @@ msgstr "&Functie toevoegen" msgid "&Add..." msgstr "&Toevoegen..." -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "&Geluids Instellingen" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "&Automatisch Bijwerken:" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "&Automatische Start" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "&Opstarten vanaf DVD Backup" @@ -353,11 +356,11 @@ msgstr "&Opstarten vanaf DVD Backup" msgid "&Borderless Window" msgstr "&Randloos Venster" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Breakpoints" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "&Bug Tracker" @@ -365,15 +368,15 @@ msgstr "&Bug Tracker" msgid "&Cancel" msgstr "&Annuleren" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "&Cheatsbeheer" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "&Controleer op updates..." -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "&Wis Symbolen" @@ -381,7 +384,7 @@ msgstr "&Wis Symbolen" msgid "&Clone..." msgstr "&Clone..." -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "&Code" @@ -389,19 +392,20 @@ msgstr "&Code" msgid "&Connected" msgstr "&Verbonden" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "&Controller Instellingen" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "&Kopieer adres" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "&Maak..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "&Verwijderen" @@ -413,7 +417,7 @@ msgstr "&Verwijder Watchvenster" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "&Wijzig Code..." @@ -421,11 +425,11 @@ msgstr "&Wijzig Code..." msgid "&Edit..." msgstr "&Bewerken..." -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "&Schijf Uitwerpen" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulatie" @@ -437,43 +441,47 @@ msgstr "&Exporteer Spel Save" msgid "&Export State..." msgstr "&Exporteer State..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "&Exporteer als .gci..." -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Bestand" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&Lettertype..." -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "&Frame Voorwaarts" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "&Vrije-Kijk Instellingen" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "&Genereer Symbolen Van" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "&GitHub Repository" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "&Ga naar het begin van de functie" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "&Grafische Instellingen" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Help" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "&Sneltoets Instellingen" @@ -485,11 +493,11 @@ msgstr "&Importeer Spel Save" msgid "&Import State..." msgstr "&Importeer State..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "&Importeer..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "&Voeg blr toe" @@ -497,7 +505,7 @@ msgstr "&Voeg blr toe" msgid "&Interframe Blending" msgstr "&Interframe Menging" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -505,23 +513,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "&Taal:" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&Laad State" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "&Laad Symbol Map" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "&Vergrendel Widgets op hun Plaats" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Geheugen" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "&Opname" @@ -529,7 +537,7 @@ msgstr "&Opname" msgid "&Mute" msgstr "&Dempen" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "&Netwerk" @@ -537,24 +545,24 @@ msgstr "&Netwerk" msgid "&No" msgstr "&Nee" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Open..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Opties" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "&Patch HLE Functies" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Pauze" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Speel" @@ -562,11 +570,11 @@ msgstr "&Speel" msgid "&Properties" msgstr "&Eigenschappen" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "&Alleen-Lezen Modus" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Registers" @@ -575,24 +583,24 @@ msgid "&Remove" msgstr "&Verwijder" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "&Verwijder Code" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "&Symbool hernoemen" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Reset" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "&Resourcepakket Beheer" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "&Sla Symbol Map op" @@ -600,11 +608,11 @@ msgstr "&Sla Symbol Map op" msgid "&Scan e-Reader Card(s)..." msgstr "&Scan e-Reader Kaart(en)..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "&Snelheidslimiet:" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Stop" @@ -612,11 +620,11 @@ msgstr "&Stop" msgid "&Theme:" msgstr "&Thema:" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "&Threads" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Tools" @@ -624,17 +632,17 @@ msgstr "&Tools" msgid "&Unload ROM" msgstr "&Leeg ROM" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Weergave" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&Watchvenster" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Website" @@ -646,11 +654,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "&Ja" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "'%1' niet gevonden, geen symboolnamen gegenereerd" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "'%1' niet gevonden, in plaats daarvan zoeken naar algemene functies" @@ -662,7 +670,7 @@ msgstr "(Geen)" msgid "(host)" msgstr "(host)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(uit)" @@ -670,34 +678,34 @@ msgstr "(uit)" msgid "(ppc)" msgstr "(ppc)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "* Vermenigvuldig" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "+ Optellen" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr ", Komma" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "- Aftrekken" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "--> %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "/ Delen" @@ -705,6 +713,10 @@ msgstr "/ Delen" msgid "128 Mbit (2043 blocks)" msgstr "128 Mbit (2043 blokken)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "16 Bytes" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "16 Mbit (251 blokken)" @@ -713,35 +725,35 @@ msgstr "16 Mbit (251 blokken)" msgid "16-bit" msgstr "16-bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "16-bit Signed Integer" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "16-bit Unsigned Integer" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x Native (1280x1056) voor 720p" @@ -753,25 +765,25 @@ msgstr "32 Mbit (507 blokken)" msgid "32-bit" msgstr "32-bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "32-bit Float" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "32-bit Signed Integer" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "32-bit Unsigned Integer" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -785,28 +797,32 @@ msgstr "3D diepte" msgid "3x" msgstr "3x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x Native (1920x1584) voor 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "4 Bytes" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Mbit (59 blokken)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x Native (2560x2112) voor 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x Naive (3200x2640)" @@ -814,29 +830,33 @@ msgstr "5x Naive (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Mbit (1019 blokken)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "64-bit Float" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "64-bit Signed Integer" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "64-bit Unsigned Integer" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x Native (3840x3168) voor 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x Native (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "8 Bytes" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Mbit (123 blokken)" @@ -845,25 +865,25 @@ msgstr "8 Mbit (123 blokken)" msgid "8-bit" msgstr "8-bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "8-bit Signed Integer" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "8-bit Unsigned Integer" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x Native (5120x4224) voor 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "< Minder dan" @@ -885,12 +905,12 @@ msgstr "" "beschikbaar om te downloaden. U gebruikt %2.
Wilt u updaten?" "

Releaseopmerkingen:

" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "> Meer dan" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "Er is al een NetPlay sesie bezig!" @@ -914,12 +934,12 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "Er ligt al een schijf in de lade." -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" "Een save state kan niet worden gebruikt zonder een spel te specificeren. " -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -927,7 +947,7 @@ msgstr "" "Er wordt al afgesloten. Niet opgeslagen data kan verloren gaan wanneer u de " "huidige emulatie stopzet voordat het afsluiten voltooid wordt. Stop forceren?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" "Een synchronisatie kan alleen worden geactiveerd wanneer er een Wii spel " @@ -938,7 +958,7 @@ msgstr "" msgid "AD16" msgstr "AD16" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -961,11 +981,11 @@ msgstr "" "spelers.\n" "Wanneer een spel vastloopt bij opstarten, ondersteunt deze mogelijk geen " "Dual-core Netplay. Schakel Dual-core uit.\n" -"Wanneer ueen directe verbinding maakt, moet de host de gekozen UDP poort " +"Wanneer u een directe verbinding maakt, moet de host de gekozen UDP poort " "open hebben gezet!\n" "\n" "Wii-Afstandbediening ondersteuning in netplay is experimenteel en " -"functioneert mogelijk niet optimaal. Gebruik op eigen risico\n" +"functioneert mogelijk niet optimaal. Gebruik op eigen risico.\n" #: Source/Core/DolphinQt/CheatsManager.cpp:90 msgid "AR Code" @@ -975,8 +995,8 @@ msgstr "AR Code" msgid "AR Codes" msgstr "AR Codes" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -999,7 +1019,7 @@ msgstr "Versnellingsmeter" msgid "Accuracy:" msgstr "Nauwkeurigheid:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "Actie" @@ -1112,9 +1132,9 @@ msgstr "Adapter Gedetecteerd" msgid "Adapter:" msgstr "Adapter:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Toevoegen" @@ -1122,11 +1142,11 @@ msgstr "Toevoegen" msgid "Add &breakpoint" msgstr "Plaats &breakpoint" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "Voeg Nieuwe DSU Server toe" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "Nieuw USB Apparaat Toevoegen" @@ -1158,46 +1178,49 @@ msgstr "Plaats geheugen breakpoint" msgid "Add to &watch" msgstr "Toevoegen aan &watchvenster" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "Voeg toe aan watch" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Toevoegen..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Adres" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "Adres Ruimte" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" -msgstr "Adresruimte per CPU staat" +msgstr "Adresruimte per CPU state" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "Adres:" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1260,39 +1283,43 @@ msgstr "Geavanceerd" msgid "Africa" msgstr "Afrika" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "Uitgelijnd naar data type lengte" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "Alle Bestanden" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "Alle Bestanden (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "Alle GC/Wii bestanden" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "Alle Save States (*.sav *.s##);; Alle Bestanden (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "Alle apparaten" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "Alle Bestanden (*)" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "Codes van alle spelers gesynchroniseerd." @@ -1301,19 +1328,19 @@ msgstr "Codes van alle spelers gesynchroniseerd." msgid "All players' saves synchronized." msgstr "Saves van alle spelers gesynchroniseerd." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "Sta Niet-Overeenkomende-Regio Instellingen toe" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "Gebruiksstatistiekrapportage Toestaan" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "Sta Schrijven naar SD-Kaart toe" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." @@ -1321,7 +1348,7 @@ msgstr "" "Maakt manipulatie van de in-game camera mogelijk." "

In geval van twijfel leeg laten." -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1347,7 +1374,7 @@ msgstr "Altijd &Bovenop" msgid "An inserted disc was expected but not found." msgstr "Een geplaatste schijf werd verwacht maar is niet gevonden." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Anaglyph" @@ -1365,39 +1392,39 @@ msgstr "Hoek" msgid "Angular velocity to ignore and remap." msgstr "Hoeksnelheid om te negeren en te remappen." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "Anisotrope Filtering" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Anisotrope Filtering:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "Anti-Aliasing" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Anti-Aliasing:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "Elke Regio" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "Handtekening toevoegen aan" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "Toevoegen aan &Bestaand handtekeningsbestand..." -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "Handtekeningsbestan&d Toepassen..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1413,15 +1440,15 @@ msgstr "Apploader Datum:" msgid "Apply" msgstr "Toepassen" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "Handtekeningsbestand toepassen..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "Arbitraire Mipmapdetectie" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "Weet u zeker dat u '%1' wilt verwijderen?" @@ -1429,11 +1456,11 @@ msgstr "Weet u zeker dat u '%1' wilt verwijderen?" msgid "Are you sure you want to delete this file?" msgstr "Weet u zeker dat u dit bestand wilt verwijderen?" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "Weet u zeker dat u dit pakket wilt verwijderen?" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "Weet u zeker dat u NetPlay wilt afsluiten?" @@ -1446,11 +1473,11 @@ msgid "Aspect Ratio" msgstr "Beeldverhouding" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Beeldverhouding:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Controllerpoorten Toewijzen" @@ -1458,7 +1485,7 @@ msgstr "Controllerpoorten Toewijzen" msgid "Assign Controllers" msgstr "Controllers Toewijzen" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1485,7 +1512,7 @@ msgstr "Audio Uitrek Instellingen" msgid "Australia" msgstr "Australië" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "Auteur" @@ -1497,15 +1524,15 @@ msgstr "Auteurs" msgid "Auto" msgstr "Auto" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Auto (Veelvoud van 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "Instellingen voor automatisch bijwerken" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1525,7 +1552,7 @@ msgstr "Pas Venstergrootte Automatisch aan" msgid "Auto-Hide" msgstr "Automatisch Verbergen" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "Auto-detect RSO module?" @@ -1538,12 +1565,12 @@ msgstr "" "

In geval van twijfel leeg laten." #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "Auxiliary" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "B" @@ -1561,11 +1588,11 @@ msgstr "" "MAC adres moet worden gebruikt. Genereer een MAC adres dat start met 00:09:" "bf of 00:17:ab." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "BIOS:" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "BP register " @@ -1591,7 +1618,7 @@ msgstr "Backend Instellingen" msgid "Backend:" msgstr "Backend:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Achtergrondinvoer" @@ -1602,7 +1629,13 @@ msgstr "Achtergrondinvoer" msgid "Backward" msgstr "Achteruit" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "Slechte Waarde Gegeven" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "Verkeerd adres opgegeven." @@ -1610,19 +1643,20 @@ msgstr "Verkeerd adres opgegeven." msgid "Bad dump" msgstr "Slechte dump" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "Slechte offset gegeven." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "Verkeerde waarde opgegeven." #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Banner" @@ -1646,7 +1680,7 @@ msgstr "Base prioriteit" msgid "Basic" msgstr "Basis" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Basis Instellingen" @@ -1654,7 +1688,7 @@ msgstr "Basis Instellingen" msgid "Bass" msgstr "Bass" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "Batch modus kan niet worden gebruikt zonder een spel te specificeren. " @@ -1662,11 +1696,11 @@ msgstr "Batch modus kan niet worden gebruikt zonder een spel te specificeren. " msgid "Battery" msgstr "Batterij" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "Bèta (één keer per maand)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "BetterJoy, DS4Windows, etc." @@ -1688,7 +1722,7 @@ msgstr "Bitrate (kbps):" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "Blokgrootte" @@ -1701,7 +1735,7 @@ msgstr "Blokgrootte:" msgid "Blocking" msgstr "Blokkeren" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Blokken" @@ -1726,15 +1760,15 @@ msgstr "" "Bluetooth passthrough modus staat aan, maar Dolphin is gecompileerd zonder " "libusb. Passthrough mode kan niet gebruikt worden." -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "Opstarten naar Pauze" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "BootMii NAND backup bestanden (*.bin);;Alle bestanden (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "BootMii sleutelbestand (*.bin);;Alle Bestanden (*)" @@ -1742,7 +1776,7 @@ msgstr "BootMii sleutelbestand (*.bin);;Alle Bestanden (*)" msgid "Borderless Fullscreen" msgstr "Randloos Fullscreen" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Beneden" @@ -1756,7 +1790,7 @@ msgid "Branches" msgstr "Branches" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "Afbreken" @@ -1765,7 +1799,7 @@ msgstr "Afbreken" msgid "Breakpoint" msgstr "Breakpoint" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "Breekpunt tegengekomen! Uitstappen afgebroken." @@ -1795,7 +1829,7 @@ msgstr "Broadband Adapter Fout" msgid "Broadband Adapter MAC Address" msgstr "Broadband Adapter MAC Adres" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "Blader &NetPlay Sessies...." @@ -1803,12 +1837,12 @@ msgstr "Blader &NetPlay Sessies...." msgid "Buffer Size:" msgstr "Buffergrootte:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "Buffergrootte gewijzigd naar %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Buffer:" @@ -1853,11 +1887,11 @@ msgstr "Knoppen" msgid "C Stick" msgstr "C Stick" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "Handtekeningsbestand Aanmaken..." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "CP register " @@ -1892,7 +1926,7 @@ msgstr "" msgid "Calculate" msgstr "Bereken" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1917,15 +1951,15 @@ msgstr "Kalibratie" msgid "Calibration Period" msgstr "Kalibratieperiode" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "Roep weergave lijst op bij %1 met grootte %2" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "Callstack" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "Camera 1" @@ -1935,7 +1969,7 @@ msgstr "Camera 1" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "Camera gezichtsveld (beïnvloedt gevoeligheid van het wijzen)." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "Kan alleen AR code genereren voor waarden in virtueel geheugen." @@ -1943,16 +1977,16 @@ msgstr "Kan alleen AR code genereren voor waarden in virtueel geheugen." msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "Kan Wii-afstandsbediening niet vinden via verbindingshendel {0:02x}" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "Kan geen NetPlay-sessie starten als spel nog draait!" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "Annuleren" @@ -1971,23 +2005,23 @@ msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" "Kan deze WAD niet starten omdat het niet op de NAND kon worden geïnstalleerd." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "Kan niet vergelijken met de laatste waarde bij de eerste zoekactie." -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "Kan de GC IPL niet vinden." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "Kan geen AR code genereren voor dit adres." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "Kan niet verversen zonder resultaten." -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "Kan het spel niet starten, omdat de GC IPL niet kon worden gevonden." @@ -2009,7 +2043,7 @@ msgstr "Centreer en Kalibreer" msgid "Change &Disc" msgstr "Schijf &Veranderen" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Schijf &Veranderen..." @@ -2017,15 +2051,15 @@ msgstr "Schijf &Veranderen..." msgid "Change Disc" msgstr "Schijf Veranderen" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "Verwisselen Schijfen Automatisch" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "Verander de schijf naar {0}" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -2056,7 +2090,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "Kanaal Partitie (%1)" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Chat" @@ -2072,11 +2106,11 @@ msgstr "Cheat Zoeken" msgid "Cheats Manager" msgstr "Cheatsbeheer" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "Controleer NAND..." -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "Controleer op de achtergrond op spellijstwijzigingen" @@ -2092,7 +2126,7 @@ msgstr "" "Controleer of u de vereiste machtigingen heeft om het bestand te " "verwijderen, of dat het nog in gebruik is." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "Controlesom" @@ -2100,16 +2134,16 @@ msgstr "Controlesom" msgid "China" msgstr "China" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Kies een bestand om te openen" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "Kies een invoerbestand met prioriteit" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "Kies een secundair invoerbestand" @@ -2132,14 +2166,14 @@ msgid "Classic Controller" msgstr "Klassieke Controller" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Legen" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "Wis Cache" @@ -2156,28 +2190,47 @@ msgstr "Clone en &Wijzig Code..." msgid "Close" msgstr "Sluiten" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "Co&nfiguratie" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Code" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "Code Verschil Hulpmiddel" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "Code Verschil Hulpmiddel Hulp" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "Code is niet uitgevoerd" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "Code is uitgevoerd" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Code:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "Codes ontvangen!" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "Twee &Handtekeningsbestanden Combineren..." #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "Algemeen" @@ -2195,7 +2248,7 @@ msgstr "Shaders Compileren" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "Compressie" @@ -2208,7 +2261,7 @@ msgstr "Compressieniveau:" msgid "Compression:" msgstr "Compressie:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "Conditie" @@ -2220,13 +2273,13 @@ msgstr "Voorwaarde" msgid "Config" msgstr "Config" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Configureer" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "Configureer Controller" @@ -2234,21 +2287,21 @@ msgstr "Configureer Controller" msgid "Configure Dolphin" msgstr "Dolphin Configureren" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "Configureer Invoer" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "Configureer Uitvoer" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "Bevestigen" @@ -2261,26 +2314,26 @@ msgstr "Bevestig backend verandering" msgid "Confirm on Stop" msgstr "Bevestiging bij Stop" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "Bevestiging" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Verbind" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Verbind Balance Board" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Verbind USB Toetsenbord" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "Verbind Wii-afstandsbediening %1" @@ -2300,11 +2353,11 @@ msgstr "Verbind Wii-afstandsbediening 3" msgid "Connect Wii Remote 4" msgstr "Verbind Wii-afstandsbediening 4" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "Verbind Wii-afstandsbedieningen" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "Verbind Wii-afstandbediening voor Geëmuleerde Controllers" @@ -2316,15 +2369,19 @@ msgstr "Verbinding maken met internet en een online systeemupdate uitvoeren?" msgid "Connected" msgstr "Verbonden" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "Verbinden" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Verbindingstype:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "Inhoud {0:08x} is beschadigd." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Continu Scannen" @@ -2337,7 +2394,7 @@ msgstr "Bedien NetPlay Golf Modus" msgid "Control Stick" msgstr "Control Stick" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "Controllerprofiel" @@ -2365,7 +2422,7 @@ msgstr "Controllerinstellingen" msgid "Controllers" msgstr "Controllers" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2376,7 +2433,7 @@ msgstr "" "virtuele objecten op de voorgrond van een scherm moeten worden getoond." "

Een hogere waarde zorgt voor een sterker 'uit het scherm' effect." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2391,7 +2448,7 @@ msgstr "" "

In geval van twijfel Native selecteren." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2424,12 +2481,12 @@ msgstr "" "Bepaalt of high of low-level DSP-emulatie moet worden gebruikt. Standaard " "ingesteld op Waar" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "Convergentie" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Convergentie:" @@ -2471,33 +2528,38 @@ msgstr "" "Converteren...\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Kopieer" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "Kopieer &functie" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "Kopieer &hex" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "Kopieer Adres" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "Kopie mislukt" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "Kopieer Hex" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "Kopieer code &lijn" @@ -2505,11 +2567,15 @@ msgstr "Kopieer code &lijn" msgid "Copy failed" msgstr "Kopiëren mislukt" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "Kopieer &doeladres" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "Kopiëren naar A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "Kopiëren naar B" @@ -2524,16 +2590,16 @@ msgstr "Core" msgid "Cost" msgstr "Zwaarte" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "Kon niet communiceren met de host." -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "Kon geen client maken." -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "Kon geen peer maken." @@ -2643,15 +2709,15 @@ msgstr "" "In dat geval moet u uw geheugenkaartlocatie opnieuw aangeven in de " "configuratie." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "Kon de centrale server niet vinden" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "Kon bestand niet openen." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "Kon bestand niet lezen." @@ -2676,14 +2742,14 @@ msgid "" "horizontally to preserve the vertical resolution." "

If unsure, leave this unchecked." msgstr "" -"Maakt framedumps en screenshots met de interne resolutie van de renderer, in " -"plaats van de grootte van het venster waarin het wordt weergegeven." -"

Als de beeldverhouding breedbeeld is, wordt de afbeelding " -"horizontaal geschaald om de verticale resolutie te behouden." +"Maakt framedumps en schermafbeeldingen met de interne resolutie van de " +"renderer, in plaats van de grootte van het venster waarin het wordt " +"weergegeven.

Als de beeldverhouding breedbeeld is, wordt de " +"afbeelding horizontaal geschaald om de verticale resolutie te behouden." "

In geval van twijfel leeg laten." #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "Maker:" @@ -2709,11 +2775,11 @@ msgstr "" msgid "Crossfade" msgstr "Crossfade" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "Huidige Regio" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "Huidige Waarde" @@ -2721,7 +2787,7 @@ msgstr "Huidige Waarde" msgid "Current context" msgstr "Huidige context" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "Huidig spel" @@ -2729,7 +2795,7 @@ msgstr "Huidig spel" msgid "Current thread" msgstr "Huidige thread" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "Aangepaste Adresruimte" @@ -2750,7 +2816,8 @@ msgstr "D-Pad" #: Source/Core/Core/FifoPlayer/FifoDataFile.cpp:229 msgid "DFF file magic number is incorrect: got {0:08x}, expected {1:08x}" msgstr "" -"DFF bestand magisch nummer is incorrect: kreeg {0:08x}, verwacht {1:08x}" +"Magisch nummer van DFF bestand is incorrect: kreeg {0:08x}, verwachtte " +"{1:08x}" #: Source/Core/Core/FifoPlayer/FifoDataFile.cpp:219 msgid "DFF file size is 0; corrupt/incomplete file?" @@ -2761,7 +2828,7 @@ msgstr "DFF bestandsgrootte is 0; corrupt/incompleet bestand?" msgid "DJ Turntable" msgstr "DJ Draaitafel" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "DK Bongos" @@ -2789,7 +2856,7 @@ msgstr "DSP LLE Recompiler (langzaam)" msgid "DSU Client" msgstr "DSU Client" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2802,11 +2869,11 @@ msgstr "" "php?title=DSU_Client\">Raadpleeg deze pagina voor installatie-instructies." -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Dansmat" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "Data" @@ -2818,28 +2885,27 @@ msgstr "Data Partitie (%1)" msgid "Data Transfer" msgstr "Data Overdracht" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "Data Type" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "Data in bestandsgedeelte dat ongebruikt zou moeten zijn." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "Data in onherkenbaar formaat of corrupt." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "Data inconsistent in GCMemcardManager, actie afbreken." -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "Data ontvangen!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "Datel MaxDrive/Pro bestanden" @@ -2857,7 +2923,7 @@ msgid "Debug Only" msgstr "Alleen debug" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Debugging" @@ -2899,7 +2965,7 @@ msgstr "Verlaag X" msgid "Decrease Y" msgstr "Verlaag Y" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Standaard" @@ -2915,7 +2981,7 @@ msgstr "Standaardapparaat" msgid "Default Font" msgstr "Standaardlettertype" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "Standaard ISO:" @@ -2946,7 +3012,7 @@ msgstr "" "stabiliteit.

In geval van twijfel leeg laten." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2961,11 +3027,11 @@ msgid "Delete Selected Files..." msgstr "Verwijder Geselecteerde Bestanden..." #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "Verwijder het bestaande bestand '{0}'?" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "Diepte" @@ -2973,21 +3039,21 @@ msgstr "Diepte" msgid "Depth Percentage:" msgstr "Dieptepercentage:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Diepte:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Beschrijving" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Beschrijving:" @@ -2996,11 +3062,11 @@ msgstr "Beschrijving:" msgid "Detached" msgstr "Ontkoppeld" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Detecteer" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "RSO Module Detecteren" @@ -3008,25 +3074,25 @@ msgstr "RSO Module Detecteren" msgid "Deterministic dual core:" msgstr "Deterministische dual-core:" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "Dev (meerdere keren per dag)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Apparaat" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "Apparaat PID (bijv., 0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Apparaatinstellingen" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "Apparaat VID (bijv., 057e)" @@ -3038,11 +3104,15 @@ msgstr "Apparaat:" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "%1 werd niet herkend als een geldig Riivolution XML bestand." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "Verschil" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "Dimt het scherm na vijf minuten inactiviteit." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "Rechtstreekse Verbinding" @@ -3079,7 +3149,7 @@ msgstr "Uitschakelen" msgid "Disable Bounding Box" msgstr "Schakel Bounding Box uit" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "Schakel Kopieerfilter uit" @@ -3091,15 +3161,15 @@ msgstr "Schakel EFB VRAM Kopieën uit" msgid "Disable Emulation Speed Limit" msgstr "Schakel Emulatie Snelheidslimit uit" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "Schakel Fastmem uit" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Schakel Mist uit" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "JIT Cache uitschakelen" @@ -3107,7 +3177,7 @@ msgstr "JIT Cache uitschakelen" msgid "Disabled" msgstr "Uitgeschakeld" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -3127,7 +3197,7 @@ msgstr "" "afgedwongen. Blokkeert alle opschaling.

In geval " "van twijfel leeg laten." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -3150,11 +3220,15 @@ msgstr "Schijf" msgid "Discard" msgstr "Verwerpen" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "Weergavetype" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" -msgstr "Geef waarde weer in Hex" +msgstr "Geef waardes weer in Hex" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -3177,27 +3251,27 @@ msgstr "Afstand" msgid "Distance of travel from neutral position." msgstr "Reisafstand vanaf neutrale positie." -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" "Machtigt u Dolphin om informatie te rapporteren aan de ontwikkelaars van " "Dolphin?" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "Wilt u \"%1\" toevoegen aan de lijst met Spelpaden?" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "Wilt u de lijst met symboolnamen wissen?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "Wilt u de %n geselecteerde save bestand(en) verwijderen?" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Wilt u de emulatie stoppen?" @@ -3212,11 +3286,11 @@ msgstr "Dolphin FIFO Log (*.dff)" #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:327 msgid "Dolphin Game Mod Preset" -msgstr "Dolphin spel modificatie voorinstelling " +msgstr "Dolphin Spel Modificatie Voorinstelling " -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "Dolphin Mapbestand (*.map)" @@ -3228,8 +3302,8 @@ msgstr "Dolphin Signatuur CSV Bestand" msgid "Dolphin Signature File" msgstr "Dolphin Signatuur Bestand" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Dolphin TAS Opname (*.dtm)" @@ -3273,11 +3347,11 @@ msgstr "Dolphin kon de gevraagde actie niet voltooien." msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "Dolphin is een vrije en open-source GameCub- en Wii-emulator." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "Dolphin is te oud voor de traversal server" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." @@ -3285,11 +3359,11 @@ msgstr "" "Dolphin kan TGC bestanden niet verifiëren, omdat het geen dumps zijn van " "werkelijke schijven." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "Dolphin kan ongelicenseerde schijven niet verifiëren." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3306,7 +3380,7 @@ msgstr "Dolphin's cheatsysteem is momenteel uitgeschakeld." msgid "Domain" msgstr "Domein" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "Niet Updaten" @@ -3319,24 +3393,26 @@ msgid "Done compressing disc image." msgstr "Comprimeren van schijfafbeelding voltooid." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "Double" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Omlaag" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "Download Codes" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "Download Codes van de WiiRD-Database" @@ -3344,11 +3420,11 @@ msgstr "Download Codes van de WiiRD-Database" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "Download Game Covers van GameTDB.com voor gebruik in Grid-modus" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "Download voltooid" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "%1 codes gedownload. (%2 toegevoegd)" @@ -3371,27 +3447,35 @@ msgstr "Drumstel" msgid "Dual Core" msgstr "Dual-Core" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "Dubbele Weergave" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Dummy" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "Dump" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "Dump &ARAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "Dump &ExRAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "Dump &FakeVMEM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "Dump &MRAM" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Dump Audio" @@ -3403,7 +3487,7 @@ msgstr "Dump Basis Textures" msgid "Dump EFB Target" msgstr "Dump EFB Doel" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Dump Frames" @@ -3415,7 +3499,7 @@ msgstr "Dump Mip Maps" msgid "Dump Objects" msgstr "Dump Objecten" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "Dump Pad:" @@ -3460,9 +3544,8 @@ msgid "" "Dump decoded game textures to User/Dump/Textures/<game_id>/." "

If unsure, leave this unchecked." msgstr "" -"Dump de gedecodeerde spel textures naar Gebruiker/Dump/Textures/<" -"game_id>/.

In geval van twijfel leeg laten." +"Dump de gedecodeerde spel textures naar User/Dump/Textures/<game_id>/." +"

In geval van twijfel leeg laten." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:350 msgid "Dump decrypted SSL reads" @@ -3499,9 +3582,9 @@ msgid "" "<game_id>/.

If unsure, leave this unchecked." msgstr "" -"Dumpt gedecodeerde spel textures gebaseerd op de andere opties naar " -"Gebruiker/Dump/Textures/<game_id>/.

In geval " -"van twijfel leeg laten." +"Dumpt gedecodeerde spel textures gebaseerd op de andere opties naar User/" +"Dump/Textures/<game_id>/.

In geval van " +"twijfel leeg laten." #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:239 msgid "" @@ -3528,16 +3611,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "Duur van Tubo-knop los Laten (frames):" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Nederlands" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "Sl&uiten" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "EFB kopie %1" @@ -3552,7 +3635,7 @@ msgstr "" "versie {0}.{1} -- Als u Dolphin recentelijk heeft geüpdatet is het mogelijk " "dat Windows eerst moet herstarten voordat de driver herkend wordt." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3584,7 +3667,7 @@ msgstr "Effect" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "Effectief" @@ -3592,7 +3675,7 @@ msgstr "Effectief" msgid "Effective priority" msgstr "Effectieve prioriteit" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "EiB" @@ -3604,7 +3687,7 @@ msgstr "Schijf Uitwerpen" msgid "Embedded Frame Buffer (EFB)" msgstr "Embedded Frame Buffer (EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Leeg" @@ -3612,11 +3695,11 @@ msgstr "Leeg" msgid "Emu Thread already running" msgstr "Emu Thread draait al" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "Emuleer de Wii's Bluetooth adapter" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "Geëmuleerde Wii-afstandsbediening" @@ -3635,8 +3718,12 @@ msgstr "" msgid "Emulation Speed" msgstr "Emulatiesnelheid" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "Emulatie moet gestart zijn om op te nemen." + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3652,7 +3739,7 @@ msgstr "Activeer API Validatielagen" msgid "Enable Audio Stretching" msgstr "Activeer Audio Uitrekking" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Activeer Cheats" @@ -3664,7 +3751,7 @@ msgstr "Activeer Aangepaste RTC" msgid "Enable Dual Core" msgstr "Activeer Dual-Core" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Activeer Dual-Core (snelheidsverhoging)" @@ -3690,19 +3777,19 @@ msgid "Enable Progressive Scan" msgstr "Activeer Progressieve Scan" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "Activeer Trillen" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Activeer Schermbeveiliger" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Activeer Speaker Data" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "Activeer Gebruiksstatistieken Rapportage" @@ -3734,7 +3821,7 @@ msgstr "" "Activeer Floating Point Result Flag berekening, nodig voor enkele spellen. " "(AAN = Compatibel, UIT = Snel)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3742,12 +3829,12 @@ msgid "" "dolphin_emphasis>" msgstr "" "Schakelt anisotropische filtering in.\n" -"Verbetert de visuele kwaliteit van texturen die op de schuine kijkhoek." +"Verbetert de visuele kwaliteit van texturen op de schuine kijkhoek." "

Kan in enkele gevallen problemen opleveren met bepaalde spellen." "

In geval van twijfel 1x selecteren." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3796,7 +3883,7 @@ msgstr "" "Maakt uitrekking van audio mogelijk, zodat de audio gelijk blijft aan de " "emulatiesnelheid." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3824,7 +3911,7 @@ msgid "" "enables debug symbols for the compiled shaders.

If " "unsure, leave this unchecked." msgstr "" -"Maakt validatie van API-aanroepen door de video-backend mogelijk, dit kan " +"Maakt validatie van API-aanroepen door de video-backend mogelijk, wat kan " "helpen bij het debuggen van grafische problemen. Met Vulkan en D3D backends, " "schakelt dit ook debug symbolen in voor de gecompileerde shaders." "

In geval van twijfel leeg laten." @@ -3842,7 +3929,7 @@ msgstr "" msgid "Encoding" msgstr "Encoding" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3859,12 +3946,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet niet geïnitialiseerd" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Engels" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3874,7 +3961,7 @@ msgstr "Verbeteringen" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "Voer IP-adres in van het apparaat waarop de XLink Kai Client draait:" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "Voer USB apparaat ID in" @@ -3888,11 +3975,11 @@ msgstr "Voer adres in voor watch:" msgid "Enter new Broadband Adapter MAC address:" msgstr "Voer een nieuw MAC-adres voor de breedbandadapter in:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "Voer wachtwoord in" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "Voer adres van de RSO-module in:" @@ -3901,65 +3988,68 @@ msgstr "Voer adres van de RSO-module in:" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Error (Fout)" @@ -3974,19 +4064,19 @@ msgstr "" "Fout bij het laden van de geselecteerde taal. Dolphin zal terugvallen op de " "systeemtaal." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "Fout in het verkrijgen van sessie lijst: %1" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "Fout opgetreden bij het laden van sommige texture packs" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "Fout bij verwerking van codes." -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "Fout bij het verwerken van gegevens." @@ -4006,7 +4096,7 @@ msgstr "Fout bij synchroniseren van save data!" msgid "Error writing file: {0}" msgstr "Fout bij het schrijven van bestand: {0}" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -4028,7 +4118,7 @@ msgstr "Fout: GBA{0} ROM in {1} laden mislukt" #: Source/Core/Core/HW/GBACore.cpp:366 msgid "Error: GBA{0} failed to load the save in {1}" -msgstr "Fout: GBA{0} Save in {1} laden mislukt" +msgstr "Fout: GBA{0} save in {1} laden mislukt" #: Source/Core/Core/HW/GBACore.cpp:341 msgid "Error: GBA{0} failed to open the BIOS in {1}" @@ -4040,7 +4130,7 @@ msgstr "Fout: GBA{0} ROM in {1} openen mislukt" #: Source/Core/Core/HW/GBACore.cpp:360 msgid "Error: GBA{0} failed to open the save in {1}" -msgstr "Fout: GBA{0} Save in {1} openen mislukt" +msgstr "Fout: GBA{0} save in {1} openen mislukt" #: Source/Core/Core/HW/SI/SI_Device.cpp:198 msgid "Error: This build does not support emulated GBA controllers" @@ -4064,11 +4154,11 @@ msgstr "" "maar deze zijn niet geladen. Spellen kunnen wellicht lettertypes niet juist " "weergeven, of crashen." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "Er zijn fouten gevonden in {0} blokken in de {1} partitie." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "Er zijn fouten gevonden in {0} ongebruikte blokken in de {1} partitie." @@ -4077,11 +4167,53 @@ msgstr "Er zijn fouten gevonden in {0} ongebruikte blokken in de {1} partitie." msgid "Euphoria" msgstr "Euforie" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Europa" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" +"Voorbeeld:\n" +"U wilt een functie vinden die wordt uitgevoerd wanneer HP verandert.\n" +"1. Start de opname en speel het spel zonder HP te laten veranderen, druk dan " +"op 'Code is niet uitgevoerd'.\n" +"2. Krijg/verlies onmiddellijk HP en druk op 'Code is uitgevoerd'.\n" +"3. Herhaal 1 of 2 om de hoeveelheid resultaten te verminderen.\n" +"\n" +"Twee keer op 'Code is uitgevoerd' drukken zal alleen de functies behouden " +"die voor beide opnames zijn uitgevoerd. Hits zal het aantal hits van de " +"laatste opname weergeven. Het totaal aantal hits zal het totaal aantal keren " +"weergeven dat een functie is uitgevoerd totdat de lijsten worden gewist met " +"Reset.\n" +"\n" +"Rechts klik -> 'Zet blr' zal een blr bovenaan het symbool plaatsen.\n" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "Uitgesloten: %1" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "Uitgesloten: 0" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "Exclusieve Ubershaders" @@ -4100,7 +4232,7 @@ msgstr "Verwachte argumenten:" #: Source/Core/InputCommon/ControlReference/ExpressionParser.cpp:903 msgid "Expected closing paren." -msgstr "Verwachte haakje dicht." +msgstr "Verwachtte haakje sluiten." #: Source/Core/InputCommon/ControlReference/ExpressionParser.cpp:759 msgid "Expected comma." @@ -4108,7 +4240,7 @@ msgstr "Verwachte comma." #: Source/Core/InputCommon/ControlReference/ExpressionParser.cpp:691 msgid "Expected end of expression." -msgstr "Verwachte eind van uitdrukking." +msgstr "Verwachtte eind van uitdrukking." #: Source/Core/InputCommon/ControlReference/ExpressionParser.cpp:922 msgid "Expected name of input." @@ -4116,7 +4248,7 @@ msgstr "Verwachte naam van invoer." #: Source/Core/InputCommon/ControlReference/ExpressionParser.cpp:913 msgid "Expected opening paren." -msgstr "Haakje openen verwacht." +msgstr "Verwachte haakje openen." #: Source/Core/InputCommon/ControlReference/ExpressionParser.cpp:833 msgid "Expected start of expression." @@ -4124,20 +4256,20 @@ msgstr "Verwachte start van de uitdrukking." #: Source/Core/InputCommon/ControlReference/ExpressionParser.cpp:813 msgid "Expected variable name." -msgstr "Verwachte naam van variabel." +msgstr "Verwachtte naam van variabele." #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:139 msgid "Experimental" msgstr "Experimenteel" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Exporteer alle Wii Saves" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "Exporteren Mislukt" @@ -4145,15 +4277,15 @@ msgstr "Exporteren Mislukt" msgid "Export Recording" msgstr "Exporteer Opname" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Exporteer Opname..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "Exporteer Save Bestand" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "Exporteer Save Bestanden" @@ -4165,22 +4297,22 @@ msgstr "Exporteer Wii Save" msgid "Export Wii Saves" msgstr "Exporteer Wii Saves" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "Exporteer als .&gcs..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "Exporteer als .&sav..." -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "%n save(s) geëxporteerd" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Extensie" @@ -4193,7 +4325,7 @@ msgstr "Extensie Bewegings-invoer" msgid "Extension Motion Simulation" msgstr "Extensie Bewegings-simulatie" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "Extern" @@ -4201,7 +4333,7 @@ msgstr "Extern" msgid "External Frame Buffer (XFB)" msgstr "Externe Frame Buffer (XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "Certificaten uitpakken van NAND" @@ -4239,7 +4371,7 @@ msgid "FD" msgstr "FD" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "FIFO Speler" @@ -4247,7 +4379,7 @@ msgstr "FIFO Speler" msgid "Failed loading XML." msgstr "XML laden mislukt." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" @@ -4255,12 +4387,12 @@ msgstr "" "Openen van geheugenkaart mislukt:\n" "% 1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" "Het is niet gelukt om deze sessie aan de NetPlay index toe te voegen: %1" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "Kon handtekeningsbestand niet toevoegen aan bestand '%1'" @@ -4272,7 +4404,7 @@ msgstr "Kon geen toegang krijgen tot de interface voor BT passthrough" msgid "Failed to connect to Redump.org" msgstr "Verbinden met Redump.org mislukt" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "Kon geen verbinding maken met server: %1" @@ -4293,14 +4425,14 @@ msgstr "Creëren van D3D12 global resources mislukt" msgid "Failed to create DXGI factory" msgstr "Kon DXGI factory niet maken" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" "NetPlay GBA{0} save bestand verwijderen mislukt. Controleer uw " "schrijfrechten." -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" "Kon de NetPlay-geheugenkaart niet verwijderen. Controleer uw schrijfrechten." @@ -4313,19 +4445,19 @@ msgstr "Kon het geselecteerde bestand niet verwijderen." msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "Kon kernel driver voor BT passthrough niet ontkoppelen: {0}" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Kon codes niet downloaden." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "Kon %1 niet dumpen: Kon het bestand niet openen" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "Kon %1 niet dumpen: Kon niet naar het bestand schrijven" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "Exporteren van %n van de %1 save bestand(en) is mislukt." @@ -4334,7 +4466,7 @@ msgstr "Exporteren van %n van de %1 save bestand(en) is mislukt." msgid "Failed to export the following save files:" msgstr "Kon de volgende save bestanden niet exporteren:" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "Kon geen certificaten uitpakken van NAND" @@ -4360,26 +4492,26 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "Kon één of meerdere D3D symbolen niet vinden" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "Kon \"%1\" niet importeren." -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" "Save bestand importeren mislukt. Start het spel eerst en probeer het dan " "opnieuw." -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -"Save bestand importeren mislukt. Start het spel eerst en probeer het dan " -"opnieuw. Het bestand lijkt beschadigd te zijn of is geen geldige Wii-save." +"Save bestand importeren mislukt. Het bestand lijkt beschadigd te zijn of is " +"geen geldige Wii-save." -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " @@ -4389,7 +4521,7 @@ msgstr "" "verhindert de toegang tot bestanden erin. Probeer uw NAND te repareren " "(Tools -> Beheer NAND -> Controleer NAND...) en importeer de save opnieuw." -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "Kon core niet initiëren" @@ -4408,16 +4540,16 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "Initialiseren renderer classes mislukt" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "Het is niet gelukt om het pakket te installeren: %1" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "Kon deze titel niet installeren op de NAND." -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" @@ -4425,8 +4557,8 @@ msgstr "" "Luisteren naar poort %1 mislukt. Is er nog een exemplaar van de NetPlay-" "server actief?" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "Kon RSO-module op %1 niet laden" @@ -4438,11 +4570,11 @@ msgstr "Kon d3d11.dll niet laden" msgid "Failed to load dxgi.dll" msgstr "Kon dxgi.dll niet laden" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "Kon mapbestand'%1' niet laden" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "Kon het uitvoerbare bestand niet in het geheugen laden." @@ -4451,11 +4583,11 @@ msgid "" "Failed to load {0}. If you are using Windows 7, try installing the KB4019990 " "update package." msgstr "" -"Laden van {0} mislukt. Als u Windows 7 gebruikt, probeer de KB4019990 update " -"pakket te installeren." +"Laden van {0} mislukt. Als u Windows 7 gebruikt, probeer dan het KB4019990 " +"update pakket te installeren." #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "Kon '%1' niet openen" @@ -4484,11 +4616,11 @@ msgstr "" "Openen van bestand in externe editor mislukt.\n" "Zorg ervoor dat er een toepassing is toegewezen om INI-bestanden te openen." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "Openen bestand mislukt." -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "Kon server niet openen" @@ -4497,7 +4629,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "Kan het invoerbestand \"% 1\" niet openen." #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4512,7 +4644,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "Ontleden van Redump.org gegevens mislukt" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "Kan de gegeven waarde niet verwerken tot het beoogde data type." @@ -4520,25 +4652,25 @@ msgstr "Kan de gegeven waarde niet verwerken tot het beoogde data type." msgid "Failed to read DFF file." msgstr "Lezen DFF bestand mislukt." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "Lezen bestand mislukt." #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "Lezen van het invoerbestand \"{0}\" is mislukt." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "Lezen van geselecteerde save bestand(en) van geheugenkaart mislukt." -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "Lezen van {0} is mislukt" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "Verwijderen bestand mislukt." @@ -4550,46 +4682,45 @@ msgid "" msgstr "" "Kan junk data niet verwijderen uit bestand \"% 1\".\n" "\n" -"Wilt u het converteren zonder ongewenste gegevens te verwijderen?" +"Wilt u het converteren zonder deze ongewenste gegevens te verwijderen?" #: Source/Core/DolphinQt/GameList/GameList.cpp:603 msgid "Failed to remove this title from the NAND." msgstr "Kon deze titel niet van de NAND verwijderen." -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "Kon NetPlay CGI-map niet resetten. Controleer uw schrijfrechten." -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "Kon NetPlay NAND-map niet resetten. Controleer uw schrijfrechten." -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." -msgstr "" -"Kon omgeleide map van NetPlay niet resetten. Controleer uw schrijfrechten." +msgstr "Kon NetPlay omleid map niet resetten. Controleer uw schrijfrechten." #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 msgid "Failed to save FIFO log." msgstr "Kon FIFO log niet opslaan." -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "Kon code map niet opslaan naar pad '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "Kon handtekeningbestand '%1' niet opslaan" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "Kon symbool map niet opslaan naar pad '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "Kon niet opslaan naar handtekeningsbestand '%1'" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "Het is niet gelukt om het pakket te deïnstalleren: %1" @@ -4597,11 +4728,11 @@ msgstr "Het is niet gelukt om het pakket te deïnstalleren: %1" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Het schrijven van BT.DINF naar SYSCONF is mislukt" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "Kon Mii data niet schrijven." -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "Kon Wii-save niet schrijven." @@ -4609,22 +4740,22 @@ msgstr "Kon Wii-save niet schrijven." msgid "Failed to write config file!" msgstr "Kon configuratiebestand niet schrijven!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "Schrijven van gewijzigde geheugenkaart naar schijf mislukt." -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "Schrijven van omgeleide save mislukt." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." -msgstr "Schrijven van save bestand naar disk mislukt." +msgstr "Schrijven van save bestand naar schijf mislukt." #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4635,19 +4766,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "Gefaald" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "Redelijke Invoer Vertraging" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "Terugval Regio" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "Terugval Regio:" @@ -4660,7 +4791,7 @@ msgstr "Snel" msgid "Fast Depth Calculation" msgstr "Snelle Diepteberekening" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4679,13 +4810,13 @@ msgstr "Bestand Details" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" -msgstr "Bestand Formaat" +msgstr "Bestandsformaat" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:65 msgid "File Format:" -msgstr "Bestand Formaat:" +msgstr "Bestandsformaat:" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:80 msgid "File Info" @@ -4693,32 +4824,32 @@ msgstr "Bestandsinfo" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Bestandsnaam" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "Bestandspad" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Bestandsgrootte" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:58 msgid "File Size:" -msgstr "Bestandgrootte:" +msgstr "Bestandsgrootte:" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "Bestand bevat geen codes." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" -msgstr "Bestandnaam" +msgstr "Bestandsnaam" #: Source/Core/DiscIO/CompressedBlob.cpp:289 msgid "Files opened, ready to compress." @@ -4732,13 +4863,13 @@ msgstr "" "Bestanden gespecificeerd in het M3U-bestand \"{0}\" werden niet gevonden:\n" "{1}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" "Bestandsgrootte komt niet overeen met een bekende GameCube geheugenkaart " "grootte." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" "Bestandsgrootte in header komt niet overeen met de werkelijke kaartgrootte." @@ -4747,15 +4878,15 @@ msgstr "" msgid "Filesystem" msgstr "Bestandssysteem" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "Filter Symbolen" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "Filters" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4767,11 +4898,11 @@ msgstr "" "veroorzaakt glitches in andere games.

In geval van " "twijfel leeg laten." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "Zoek &Volgende" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "Zoek &Vorige" @@ -4787,18 +4918,22 @@ msgstr "" "De update voltooien...\n" "Dit kan even duren." -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "First Person" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Herstel Controlesommen" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "Herstel Controlesom Mislukt" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "Vaste Uitlijning" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4808,13 +4943,14 @@ msgstr "Flags" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "Kommagetal" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "Volg &branch" @@ -4844,7 +4980,7 @@ msgstr "" msgid "Force 16:9" msgstr "Forceer 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "Forceer 24-Bits Kleur" @@ -4852,15 +4988,15 @@ msgstr "Forceer 24-Bits Kleur" msgid "Force 4:3" msgstr "Forceer 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "Forceer Luisterpoort:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Forceer Texture Filtering" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4877,7 +5013,7 @@ msgstr "" "breedbeeld patches.

In geval van twijfel leeg laten." "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4901,21 +5037,21 @@ msgstr "Formaat:" msgid "Forward" msgstr "Vooruit" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Poort forwarden (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "%1 resultaten gevonden voor \"%2\"" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "%n adres(sen) gevonden." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "Frame %1" @@ -4944,7 +5080,7 @@ msgstr "Frame Dumping" msgid "Frame Range" msgstr "Framebereik" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "Frame Dump-afbeelding(en) '{0}' bestaan al. Overschrijven?" @@ -4956,19 +5092,19 @@ msgstr "Frames om Op te Nemen:" msgid "France" msgstr "Frankrijk" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "Vrije Blokken: %1" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "Vrije Bestanden: %1" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "Vrije-Kijk Bestuur Methode" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "Vrije-Kijk Controller %1" @@ -4976,7 +5112,7 @@ msgstr "Vrije-Kijk Controller %1" msgid "Free Look Settings" msgstr "Vrije-Kijk Instellingen" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,

Slightly increases GPU load and causes relatively few " @@ -5423,7 +5559,7 @@ msgstr "Groen Links" msgid "Green Right" msgstr "Groen Rechts" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "Rasterweergave" @@ -5436,7 +5572,7 @@ msgstr "Gitaar" msgid "Gyroscope" msgstr "Gyroscoop" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5449,13 +5585,30 @@ msgstr "Hacks" msgid "Head" msgstr "Hoofd" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "Help" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" -msgstr "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "Hex" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "Hex 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "Hex 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "Hex 8" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" +msgstr "Hex Byte String" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 @@ -5466,19 +5619,19 @@ msgstr "Hexadecimaal" msgid "Hide" msgstr "Verberg" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "Verberg Alles" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "Verberg In-Game Sessies" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "Verberg Incompatibele Sessies" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "Verberg Externe GBAs" @@ -5496,21 +5649,27 @@ msgstr "Hoogste" msgid "Hit Strength" msgstr "Sla Sterkte " +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "Hits" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "Horiztontale FOV" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Host" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "Host Code:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "Host Invoer Autoriteit" @@ -5518,7 +5677,7 @@ msgstr "Host Invoer Autoriteit" msgid "Host Size" msgstr "Hostgrootte" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5530,11 +5689,11 @@ msgstr "" "maar de latentie voor anderen groter wordt. Geschikt voor casual spellen met " "3+ spelers, mogelijk op onstabiele of hoge latency-verbindingen." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "Host Invoer Autoriteit Uitgeschakeld" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "Host Invoer Autoriteit Ingeschakeld" @@ -5546,7 +5705,7 @@ msgstr "Host met NetPlay" msgid "Hostname" msgstr "Hostnaam" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "Sneltoets Instellingen" @@ -5603,11 +5762,11 @@ msgstr "" "https://dolphin-emu.org/docs/guides/wii-network-guide/ voor instructies over " "het instellen van Wii-netwerken." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "IP Adres:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "IPL Instellingen" @@ -5616,7 +5775,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "IR Gevoeligheid:" @@ -5653,11 +5812,11 @@ msgstr "" "5.0-12188 en latere versies. Het kan versleuteld Wii data en junk data " "efficiënt comprimeren." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Icoon" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" @@ -5667,11 +5826,11 @@ msgstr "" "vertraging heeft) op elk moment gewisseld kan worden.\n" "Geschikt voor turn-based spellen met timing gevoelige bediening, zoals golf." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "Genereer Identiteit" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5740,7 +5899,7 @@ msgstr "Negeer Formaat Veranderingen" msgid "Ignore for this session" msgstr "Negeer voor deze sessie" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5752,7 +5911,7 @@ msgstr "" "zorgen in een aantal spellen.

In geval van twijfel " "geselecteerd laten." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5782,30 +5941,30 @@ msgstr "" "verminderd prestaties enigzins.

In geval van " "twijfel leeg laten." -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "Importeer BootMii NAND Backup..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "Importeren Mislukt" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "Importeer Save Bestand(en)" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Importeer Wii Save..." -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "NAND backup Importeren" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" @@ -5814,11 +5973,20 @@ msgstr "" "NAND backup Importeren\n" " Verstreken tijd: %1s" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "In het spel?" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "Omvat: %1" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "Omvat: 0" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5876,8 +6044,8 @@ msgstr "Info" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Informatie" @@ -5886,10 +6054,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "Blokkeer Screensaver Tijdens Emulatie" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Invoer" @@ -5903,16 +6071,22 @@ msgstr "Input drempelwaarde." msgid "Input strength to ignore and remap." msgstr "Input om te negeren en te remappen." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "Toevoegen &nop" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Plaats SD-kaart" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "Geïnspecteerd" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "Installeren" @@ -5924,7 +6098,7 @@ msgstr "Installatie Partitie (%1)" msgid "Install Update" msgstr "Installeer Update" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "Installeer WAD..." @@ -5940,11 +6114,11 @@ msgstr "Instr." msgid "Instruction" msgstr "Instructie" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "Instructie Breakpoint" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "Instructie:" @@ -5962,7 +6136,7 @@ msgid "Interface" msgstr "Interface" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Interne LZO fout - compressie is mislukt" @@ -5971,7 +6145,7 @@ msgstr "Interne LZO fout - compressie is mislukt" msgid "Internal LZO Error - decompression failed" msgstr "Interne LZO fout - decompressie is mislukt" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" @@ -5979,21 +6153,21 @@ msgstr "" "Interne LZO fout - decompressie is mislukt ({0}) ({1}, {2}) \n" "Probeer de state opnieuw te laden" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Interne LZO fout - lzo_init() is mislukt" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "Interne Resolutie" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Interne Resolutie:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "Interne fout bij het genereren van AR code." @@ -6001,11 +6175,11 @@ msgstr "Interne fout bij het genereren van AR code." msgid "Interpreter (slowest)" msgstr "Interpreter (traagst)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "Interpreter Core" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "Ongeldige Uitdrukking." @@ -6013,7 +6187,7 @@ msgstr "Ongeldige Uitdrukking." msgid "Invalid Mixed Code" msgstr "Ongeldige Gemengde Code" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "Ongeldige Pakket %1 ingevoerd: %2" @@ -6022,15 +6196,15 @@ msgstr "Ongeldige Pakket %1 ingevoerd: %2" msgid "Invalid Player ID" msgstr "Ongeldige Speler-ID" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "Ongeldig RSO-moduleadres: %1" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "Ongeldige callstack" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "Invalide controlesom." @@ -6038,11 +6212,11 @@ msgstr "Invalide controlesom." msgid "Invalid game." msgstr "Ongeldig spel." -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "Ongeldige host" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "Ongeldige invoer voor het veld \"%1\"" @@ -6055,32 +6229,32 @@ msgstr "Ongeldige invoer opgegeven" msgid "Invalid literal." msgstr "Ongeldige tekst." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "Ongeldige parameters gegeven om te zoeken." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "Ongeldig wachtwoord ingevoerd." -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Onjuist opnamebestand" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Ongeldige zoekparameters (geen object geselecteerd)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Ongeldige zoekopdracht (niet in staat naar nummers te converteren)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "" "Ongeldige zoekopdracht (alleen gelijke string lengtes zijn ondersteund)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "Ongeldige titel-ID." @@ -6089,8 +6263,8 @@ msgid "Invalid watch address: %1" msgstr "Ongeldig watch adres: 1%" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Italiaans" @@ -6098,11 +6272,11 @@ msgstr "Italiaans" msgid "Italy" msgstr "Italië" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "JIT Block Linking Uit" @@ -6110,47 +6284,47 @@ msgstr "JIT Block Linking Uit" msgid "JIT Blocks" msgstr "JIT Blokken" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "Jit Branch Uit" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "JIT FloatingPoint Uit" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "JIT Integer Uit" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "JIT LoadStore Floating Uit" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "JIT LoadStore Uit" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "JIT LoadStore Paired Uit" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "JIT LoadStore lXz Uit" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "JIT LoadStore lbzx Uit" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "JIT LoadStore lwz Uit" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "JIT Uit (JIT Core)" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "JIT Paired Uit" @@ -6162,11 +6336,11 @@ msgstr "JIT Recompiler voor ARM64 (aanbevolen)" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "JIT Recompiler voor x86-64 (aanbevolen)" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "JIT Register Cache Uit" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "JIT SysteemRegisters Uit" @@ -6180,12 +6354,12 @@ msgstr "" "nooit moeten gebeuren. Meld dit incident alstublieft via de bugtracker. " "Dolphin zal nu afsluiten." -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Japan" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japans" @@ -6205,12 +6379,12 @@ msgstr "Houd Venster Bovenop" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "Bewaar adressen waar de waarde in het geheugen" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Toetsenbord" @@ -6223,20 +6397,20 @@ msgstr "Toetsenbord" msgid "Keys" msgstr "Toetsen" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "KiB" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Speler kicken" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Korea" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Koreaans" @@ -6264,7 +6438,7 @@ msgstr "LR Save" msgid "Label" msgstr "Label" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "Laatste Waarde" @@ -6350,15 +6524,15 @@ msgstr "" msgid "License" msgstr "Licentie" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "Beperk chunked-uploadsnelheid:" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "Lijstkolommen" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "Lijstweergave" @@ -6367,17 +6541,17 @@ msgid "Listening" msgstr "Luisteren" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Laad" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "Laad &Slechte Mapbestand..." -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "Laad &Ander Mapbestand..." @@ -6385,7 +6559,7 @@ msgstr "Laad &Ander Mapbestand..." msgid "Load Custom Textures" msgstr "Laad Aangepaste Textures" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "Laad GameCube Hoofdmenu" @@ -6394,7 +6568,7 @@ msgstr "Laad GameCube Hoofdmenu" msgid "Load Last State" msgstr "Laad Laatste State" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "Laad pad:" @@ -6487,23 +6661,23 @@ msgstr "Laad State Slot 8" msgid "Load State Slot 9" msgstr "Laad State Slot 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "Laad State van Bestand" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "Laad State van Geselecteerde Slot" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "Laad State van Slot" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "Laad Wii Save" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "Laad Wii Hoofdmenu %1" @@ -6511,12 +6685,12 @@ msgstr "Laad Wii Hoofdmenu %1" msgid "Load from Selected Slot" msgstr "Laden van Geselecteerde Slot" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "Laad van Slot Slot %1 - %2" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "Laad mapbestand" @@ -6524,7 +6698,7 @@ msgstr "Laad mapbestand" msgid "Load..." msgstr "Laden..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "Symbolen geladen van '%1'" @@ -6538,7 +6712,7 @@ msgstr "" "DynamicInputTextures//.

In geval van " "twijfel leeg laten." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "Lokaal" @@ -6547,7 +6721,7 @@ msgid "Lock Mouse Cursor" msgstr "Vergrendel Muiscursor" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Logboek" @@ -6555,7 +6729,7 @@ msgstr "Logboek" msgid "Log Configuration" msgstr "Logboek Configuratie" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "Log JIT-instructiedekking" @@ -6585,7 +6759,7 @@ msgstr "" msgid "Loop" msgstr "Loop" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "Verbinding met NetPlay-server verloren..." @@ -6614,7 +6788,7 @@ msgstr "MMU" msgid "MORIBUND" msgstr "MORIBUND" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "MadCatz Gameshark bestanden" @@ -6624,7 +6798,7 @@ msgstr "Hoofd Knuppel" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Maker" @@ -6633,7 +6807,7 @@ msgstr "Maker" msgid "Maker:" msgstr "Maker:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6645,7 +6819,7 @@ msgstr "" "mist emulatie rekent.

In geval van twijfel leeg " "laten." -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "Beheer NAND" @@ -6653,7 +6827,7 @@ msgstr "Beheer NAND" msgid "Manual Texture Sampling" msgstr "Handmatige Texture Sampling" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "Mapping" @@ -6661,15 +6835,15 @@ msgstr "Mapping" msgid "Mask ROM" msgstr "Mask ROM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "Overeenkomst Gevonden" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "Max Buffer:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "Max buffergrootte gewijzigd naar %1" @@ -6678,7 +6852,7 @@ msgstr "Max buffergrootte gewijzigd naar %1" msgid "Maximum tilt angle." msgstr "Maximale kantel hoek." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "Kan leiden tot vertraging van het Wii-menu en een aantal spellen." @@ -6687,11 +6861,11 @@ msgstr "Kan leiden tot vertraging van het Wii-menu en een aantal spellen." msgid "Medium" msgstr "Medium" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "Geheugen" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "Geheugen Breakpoint" @@ -6699,7 +6873,7 @@ msgstr "Geheugen Breakpoint" msgid "Memory Card" msgstr "Geheugenkaart" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "Geheugenkaart Beheer" @@ -6723,7 +6897,7 @@ msgstr "" msgid "Memory Override" msgstr "Geheugen Overschrijven" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "Geheugen breakpoint opties" @@ -6739,7 +6913,7 @@ msgstr "MemoryCard: Read opgeroepen met onjuiste bron adres ({0:#x})" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "MemoryCard: Write opgeroepen met ongeldige bestemming adres ({0:#x})" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6751,13 +6925,13 @@ msgstr "" "omkeerbaar, dus het is raadzaam om back-ups van beide NAND's maken. Weet u " "zeker dat u wilt doorgaan?" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "MiB" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Microfoon" @@ -6765,21 +6939,21 @@ msgstr "Microfoon" msgid "Misc" msgstr "Overig" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Overige Instellingen" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" "Verschil tussen het aantal vrije blokken in de header en de werkelijke " "ongebruikte blokken." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "Verschil tussen interne data structuren." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6812,12 +6986,12 @@ msgstr "" "

Vereist in de meeste gevallen een emulatie reset." "

In geval van twijfel leeg laten." -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "Module gevonden: %1" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "Mono" @@ -6829,11 +7003,11 @@ msgstr "Monoscopische Schaduwen" msgid "Monospaced Font" msgstr "Niet-proportionele (monospace) Lettertype" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "Bewegings-invoer" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "Bewegings-simulatie" @@ -6875,10 +7049,10 @@ msgstr "Opname" msgid "N&o to All" msgstr "N&ee op Alles" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "NAND Check" @@ -6886,26 +7060,26 @@ msgstr "NAND Check" msgid "NKit Warning" msgstr "NKit Waarschuwing" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "NTSC-K" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "Naam" @@ -6917,37 +7091,37 @@ msgstr "Naam voor deze nieuwe tag:" msgid "Name of the tag to remove:" msgstr "Naam van de te verwijderen tag:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "Naam van uw sessie zoals weergegeven in de server browser" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Naam:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Native (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "Native GCI bestand" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "NetPlay" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "NetPlay Sessie Browser" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "Netplay Instellingen" @@ -6955,18 +7129,18 @@ msgstr "Netplay Instellingen" msgid "Netherlands" msgstr "Nederland" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "Netplay heeft zich desynced in NetPlay_GetButtonPress()" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" "NetPlay is niet meer gesynchroniseerd. Er is geen manier om dit te " "herstellen." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "Netwerk" @@ -6987,11 +7161,11 @@ msgstr "Nooit Automatisch Bijwerken" msgid "New" msgstr "Nieuw" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "Nieuwe Breakpoint" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "Nieuwe Zoekopdracht" @@ -6999,7 +7173,7 @@ msgstr "Nieuwe Zoekopdracht" msgid "New Tag..." msgstr "Nieuwe Tag..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "Nieuwe identiteit gegenereerd." @@ -7016,7 +7190,7 @@ msgstr "Nieuwe tag" msgid "Next Game Profile" msgstr "Volgend Spel Profiel" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "Volgende Overeenkomst" @@ -7025,17 +7199,17 @@ msgstr "Volgende Overeenkomst" msgid "Next Profile" msgstr "Volgend Profiel" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "Nickname is te lang" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Bijnaam:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "Nee" @@ -7043,6 +7217,10 @@ msgstr "Nee" msgid "No Adapter Detected" msgstr "Geen Adapter Gedetecteerd" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "Geen Uitlijning" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "Geen Audio-uitvoer" @@ -7053,24 +7231,20 @@ msgstr "Geen Audio-uitvoer" msgid "No Compression" msgstr "Geen Compressie" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "Geen Overeenkomst" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "Geen Waarde Gegeven" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Geen omschrijving beschikbaar" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "Geen fouten." @@ -7082,15 +7256,15 @@ msgstr "Geen extensie geselecteerd." msgid "No file loaded / recorded." msgstr "Geen bestand geladen / opgenomen." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "Er draait geen spel." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "Er draait geen spel." -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "Er zijn geen problemen gedetecteerd." @@ -7098,11 +7272,15 @@ msgstr "Er zijn geen problemen gedetecteerd." msgid "No paths found in the M3U file \"{0}\"" msgstr "Geen mappen gevonden in het M3U-bestand \"{0}\"" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "Geen mogelijke functies meer. Reset." + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "Er zijn geen problemen gevonden" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -7116,7 +7294,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "Geen profielen gevonden voor de spel-instelling '{0}'" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "Geen opname geladen." @@ -7124,19 +7302,15 @@ msgstr "Geen opname geladen." msgid "No save data found." msgstr "Geen save data gevonden." -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" "Geen undo.dtm gevonden, het ongedaan maken van de state laden wordt " "afgebroken om opname desynchonisatie te voorkomen" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "Geen waarde opgegeven." - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -7146,7 +7320,7 @@ msgstr "Geen" msgid "North America" msgstr "Noord-Amerika" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "Niet Gevonden" @@ -7154,11 +7328,11 @@ msgstr "Niet Gevonden" msgid "Not Set" msgstr "Niet ingesteld" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "Niet alle spelers hebben het spel. Weet u zeker dat u wilt doorgaan?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -7168,7 +7342,7 @@ msgstr "" "Niet genoeg vrije blokken op de doelgeheugenkaart. Ten minste %n vrij(e) " "blok(ken) vereist." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -7232,13 +7406,13 @@ msgstr "Nunchuck Oriëntatie" msgid "Nunchuk Stick" msgstr "Nunchuck Stick" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "OK" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "Object %1" @@ -7251,11 +7425,11 @@ msgid "Oceania" msgstr "Oceanië" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Uit" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "Offset" @@ -7267,11 +7441,11 @@ msgstr "Aan" msgid "On Movement" msgstr "Op Beweging" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "Online &Documentatie" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" @@ -7279,7 +7453,7 @@ msgstr "" "Alleen symbolen toevoegen die beginnen met:\n" "(Leeg voor alle symbolen)" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -7296,7 +7470,7 @@ msgstr "Open" msgid "Open &Containing Folder" msgstr "Open &Bijbehorende Map" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "Map Openen..." @@ -7344,7 +7518,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "Operators" @@ -7362,7 +7536,7 @@ msgstr "Opties" msgid "Orange" msgstr "Oranje" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "Orbitaal" @@ -7370,7 +7544,7 @@ msgstr "Orbitaal" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Overige" @@ -7383,11 +7557,11 @@ msgstr "Andere Partitie (%1)" msgid "Other State Hotkeys" msgstr "Overige State Sneltoetsen" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "Overige State Beheer" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "Ander spel..." @@ -7395,12 +7569,12 @@ msgstr "Ander spel..." msgid "Overlay Information" msgstr "Overlay Informatie" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "O&pname Invoer Afspelen..." -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -7425,7 +7599,7 @@ msgstr "PNG afbeeldingsbestand (*.png);; Alle bestanden (*)" msgid "PPC Size" msgstr "PPC Grootte" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "PPC vs Host" @@ -7442,7 +7616,7 @@ msgstr "Pads" msgid "Parameters" msgstr "Parameters" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "Parseer als Hex" @@ -7451,23 +7625,23 @@ msgstr "Parseer als Hex" msgid "Parsing Error" msgstr "Parseerfout" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "Passief" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "Passthrough een Bluetooth adapter" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "Wachtwoord" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "Wachtwoord voor deelname aan uw spel (laat leeg voor geen)" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "Wachtwoord?" @@ -7488,7 +7662,7 @@ msgid "Path:" msgstr "Pad:" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Pad" @@ -7496,7 +7670,7 @@ msgstr "Pad" msgid "Pause" msgstr "Pauze" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "Pauzeer aan het Einde van de Opname" @@ -7519,11 +7693,11 @@ msgstr "Top snelheid van beweging naar neutrale positie." msgid "Peak velocity of outward swing movements." msgstr "Top snelheid van buitenwaartse zwaai beweging." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Per-Pixel Belichting" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "Voer Online Systeemupdate Uit" @@ -7533,23 +7707,23 @@ msgstr "Voer Systeemupdate Uit" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "Fysieke" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "Fysieke adresruimte" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "PiB" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "Kies een debug-lettertype" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "Ping" @@ -7562,7 +7736,7 @@ msgid "Pitch Up" msgstr "Stamp Omhoog" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Platform" @@ -7582,16 +7756,16 @@ msgstr "Speel Opname" msgid "Playback Options" msgstr "Terugspeel Opties" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "Speler" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Spelers" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7604,30 +7778,30 @@ msgstr "" msgid "Point" msgstr "Wijzen" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "Poort %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "Port %1 ROM:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "Poort:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" "Mogelijke desync gedetecteerd: %1 heeft mogelijk sync verloren in frame %2" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "Post-Processing Effect" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Post-Processing Effect:" @@ -7639,15 +7813,15 @@ msgstr "Post-Processing Shader Configuratie" msgid "Prefetch Custom Textures" msgstr "Prefetch Aangepaste Textures" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "Vroegtijdig opname einde in PlayController. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "Vroegtijdig opname einde in PlayWiimote. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "Vroegtijdig opname einde in PlayWiimote. {0} > {1}" @@ -7691,7 +7865,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "Vorig Spel Profiel" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "Vorige Overeenkomst" @@ -7702,15 +7876,15 @@ msgstr "Vorig Profiel" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "Primitief %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "Privé" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "Privé en Openbaar" @@ -7718,7 +7892,7 @@ msgstr "Privé en Openbaar" msgid "Problem" msgstr "Probleem" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." @@ -7726,7 +7900,7 @@ msgstr "" "Er zijn zeer ernstige problemen gevonden. Het spel zal waarschijnlijk niet " "werken." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." @@ -7734,7 +7908,7 @@ msgstr "" "Er zijn problemen met lage ernst gevonden. Het spel zal waarschijnlijk goed " "werken." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." @@ -7742,7 +7916,7 @@ msgstr "" "Er zijn problemen met middelmatig ernst gevonden. Het spel of bepaalde delen " "van het spel zullen misschien niet goed werken." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Profiel" @@ -7756,15 +7930,15 @@ msgstr "Programmateller" msgid "Progress" msgstr "Voortgang" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "Openbaar" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "Wis Spellijst Cache" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "Zet IPL ROMs in Gebruiker/GC/." @@ -7776,11 +7950,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "LTR" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "Quality of Service (QoS) kan niet worden geactiveerd." -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "Quality of Service (QoS) is succesvol geactiveerd." @@ -7791,12 +7965,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Vraag" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Stoppen" @@ -7816,11 +7990,11 @@ msgstr "R-Analoog" msgid "READY" msgstr "GEREED" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "RSO Modules" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "RSO autodetectie" @@ -7833,44 +8007,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "RVZ GC/Wii schijfafbeeldingen (*.rvz)" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Afstand" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "Bereik Einde:" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "Bereik Start:" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "Ver&vang instructie" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "Lezen" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "Lezen en schrijven" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "Alleen lezen" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "Lezen of Schrijven" @@ -7878,11 +8052,11 @@ msgstr "Lezen of Schrijven" msgid "Read-Only Mode" msgstr "Alleen-Lezen Modus" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Echte Balance Board" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "Echte Wii-afstandsbediening" @@ -7895,11 +8069,11 @@ msgstr "Hercentreren" msgid "Record" msgstr "Opnemen" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "Invoer Opnemen" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "Opnemen" @@ -7924,7 +8098,7 @@ msgstr "Rood Links" msgid "Red Right" msgstr "Rood Rechts" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7947,16 +8121,16 @@ msgstr "Redump.org Status:" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Ververs" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "Ververs Huidige Waarden" @@ -7964,27 +8138,27 @@ msgstr "Ververs Huidige Waarden" msgid "Refresh Game List" msgstr "Spellijst Verversen" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" "Verversen mislukt. Laat het spel een tijdje draaien en probeer het opnieuw." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "Huidige waarden ververst." #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "Verversen..." #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Regio" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "Regio:" @@ -8004,16 +8178,16 @@ msgstr "Relatieve Invoer Houden" msgid "Remind Me Later" msgstr "Herinner Me Later" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Verwijder" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "Verwijderen Mislukt" @@ -8039,8 +8213,8 @@ msgstr "" "ISO (tenzij u het ISO-bestand verpakt in een gecomprimeerd bestandsformaat " "zoals ZIP achteraf). Wilt u toch doorgaan?" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "Hernoem symbool" @@ -8075,29 +8249,37 @@ msgstr "Verzoek om Lid te Worden van Uw Partij" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Reset" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "Reset Alles" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "Reset Negeer Panic Handler" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "Reset Resultaat" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "Reset Traversal Server" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "Reset Traversal Server naar %1:%2" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "Reset Traversal Instellingen" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "Reset Waarde" @@ -8105,15 +8287,15 @@ msgstr "Reset Waarde" msgid "Reset View" msgstr "Reset Weergave" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "Reset alle opgeslagen Wii-afstandsbediening koppelingen" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "Resourcepakketbeheer" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "Resourcepakket Pad:" @@ -8125,11 +8307,11 @@ msgstr "Herstarten Vereist" msgid "Restore Defaults" msgstr "Herstel Standaardinstellingen" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "Herstel instructie" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Opnieuw" @@ -8138,7 +8320,7 @@ msgstr "Opnieuw" msgid "Return Speed" msgstr "Terugkeer Snelheid" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "Revisie" @@ -8196,11 +8378,11 @@ msgstr "Rol Links" msgid "Roll Right" msgstr "Rol Rechts" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "Kamer ID" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "Rotatie" @@ -8209,17 +8391,19 @@ msgstr "Rotatie" msgid "Rotation applied at extremities of swing." msgstr "Rotatie toegepast aan de uiteinden van de zwaai." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" -"Rondt 2D-hoekpunten af op hele pixels.

Lost grafische problemen bij " -"hogere interne resoluties op voor sommige spellen. Deze instelling heeft " -"geen effect wanneer native interne resolutie wordt gebruikt." -"

In geval van twijfel leeg laten." +"Rondt 2D-hoekpunten af op hele pixels en rond de viewport grootte naar een " +"geheel getal.

Lost grafische problemen bij hogere interne resoluties " +"op voor sommige spellen. Deze instelling heeft geen effect wanneer natieve " +"interne resolutie wordt gebruikt.

In geval van " +"twijfel leeg laten." #: Source/Core/Core/HW/GCPadEmu.cpp:79 #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:254 @@ -8228,11 +8412,11 @@ msgstr "" msgid "Rumble" msgstr "Rumble" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "Loop &Tot Hier" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "Voer GBA Emulatie uit in Specifieke threads" @@ -8240,15 +8424,15 @@ msgstr "Voer GBA Emulatie uit in Specifieke threads" msgid "Russia" msgstr "Rusland" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "SD-kaart" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "SD-kaartafbeedling (*.raw);;Alle Bestanden(*)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "SD-kaart Pad:" @@ -8264,7 +8448,7 @@ msgstr "SELECT" msgid "SHA-1:" msgstr "SHA-1:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "SP1:" @@ -8278,11 +8462,11 @@ msgstr "SSL context" msgid "START" msgstr "START" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "Code Op&slaan" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "S&la State Op" @@ -8292,7 +8476,7 @@ msgid "Safe" msgstr "Veilig" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -8305,7 +8489,7 @@ msgstr "Sla Alles op" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "Export Opslaan" @@ -8326,11 +8510,11 @@ msgstr "Spel Opslag" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "Spel Save Bestanden (*.sav);;All Files (*)" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "Import Opslaan" @@ -8342,7 +8526,7 @@ msgstr "Sla Oudste State op" msgid "Save Preset" msgstr "Voorinstelling opslaan" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "Sla Opnamebestand op Als" @@ -8392,23 +8576,23 @@ msgstr "Save State Slot 8" msgid "Save State Slot 9" msgstr "Save State Slot 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "Save State naar Bestand" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "Save State naar Oudste Slot" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "Save State naar Geselecteerde Slot" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "Save State naar Slot" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "Sla Symbol Map Op &Als..." @@ -8416,7 +8600,7 @@ msgstr "Sla Symbol Map Op &Als..." msgid "Save Texture Cache to State" msgstr "Sla Texture Cache in Save State op" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "Save en Laad State" @@ -8428,11 +8612,11 @@ msgstr "Opslaan als voorinstelling..." msgid "Save as..." msgstr "Opslaan als..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "Gecombineerde uitvoerbestand opslaan als" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" @@ -8442,15 +8626,15 @@ msgstr "" "maken van de huidige data voordat u het overschrijft.\n" "Nu overschrijven?" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "Save in de Zelfde Map als de ROM" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "Sla mapbestand op" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "Sla handtekeningbestand op" @@ -8458,7 +8642,7 @@ msgstr "Sla handtekeningbestand op" msgid "Save to Selected Slot" msgstr "Opslaan naar Geselecteerde Slot" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "Opslaan naar Slot %1 - %2" @@ -8466,25 +8650,25 @@ msgstr "Opslaan naar Slot %1 - %2" msgid "Save..." msgstr "Opslaan..." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" "Opgeslagen Wii-afstandsbediening koppelingen kunnen alleen gerest worden " "wanneer er een Wii spel draait." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "Saves:" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "Savestate opname {0} is corrupt, opname wordt gestopt..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Geschaalde EFB Kopie" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "Scan gelukt." @@ -8492,30 +8676,30 @@ msgstr "Scan gelukt." msgid "ScrShot" msgstr "ScrShot" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Zoeken" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "Zoek Adres" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "Zoek Huidig Object" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Zoeken in submappen" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "Zoek en Filter" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." @@ -8523,7 +8707,7 @@ msgstr "" "Zoeken is momenteel niet mogelijk in de virtuele adresruimte. Laat het spel " "een tijdje draaien en probeer het opnieuw." -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "Zoek naar Instructie" @@ -8531,7 +8715,7 @@ msgstr "Zoek naar Instructie" msgid "Search games..." msgstr "Zoek Spellen..." -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "Zoek instructie" @@ -8555,28 +8739,28 @@ msgstr "Sectie die alle CPU en Hardware gerelateerde instellingen bevat." msgid "Security options" msgstr "Veiligheidsopties" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Selecteer" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "Selecteer Dump Pad" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "Selecteer Export Map" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "Selecteer GBA BIOS" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "Selecteer GBA ROM" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "Selecteer GBA Saves Pad" @@ -8584,11 +8768,11 @@ msgstr "Selecteer GBA Saves Pad" msgid "Select Last State" msgstr "Selecteer Laatste State" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "Selecteer Laad Pad" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "Selecteer Resourcepakket Pad" @@ -8596,7 +8780,7 @@ msgstr "Selecteer Resourcepakket Pad" msgid "Select Riivolution XML file" msgstr "Selecteer Riivolution XML bestand" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "Selecteer Slot %1 - %2" @@ -8604,7 +8788,7 @@ msgstr "Selecteer Slot %1 - %2" msgid "Select State" msgstr "Selecteer State" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Selecteer State Slot" @@ -8648,41 +8832,45 @@ msgstr "Selecteer State Slot 8" msgid "Select State Slot 9" msgstr "Selecteer State Slot 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "Selecteer WFS Pad" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "Selecteer Wii NAND Basismap" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "Selecteer een Map" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "Selecteer een Bestand" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "Selecteer een Spel" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "Selecteer een SD-kaartafbeelding" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "Selecteer een bestand" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "Selecteer een Spel" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "Selecteer een titel om te installeren op de NAND" @@ -8690,11 +8878,11 @@ msgstr "Selecteer een titel om te installeren op de NAND" msgid "Select e-Reader Cards" msgstr "Selecteer e-Reader Kaarten" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "Selecteer het RSO module adres:" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "Selecteer Opnamebestand om Af te Spelen" @@ -8702,12 +8890,12 @@ msgstr "Selecteer Opnamebestand om Af te Spelen" msgid "Select the Virtual SD Card Root" msgstr "Selecteer de Virtuele SD Kaart Root" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "Selecteer het sleutelbestand (OTP/SEEPROM dump)" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Selecteer het save bestand" @@ -8723,15 +8911,15 @@ msgstr "Selecteer waar u de geconverteerde afbeeldingen wilt opslaan" msgid "Selected Font" msgstr "Selecteer Font" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "Geselecteerde controller profiel bestaat niet" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "Het geselecteerde spel bestaat niet in de spellijst!" @@ -8759,7 +8947,7 @@ msgstr "" "Selecteert een hardware-adapter om te gebruiken.

In " "geval van twijfel de eerste selecteren." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8826,11 +9014,11 @@ msgstr "" "selecteren die het minst problematisch is.

In geval " "van twijfel OpenGL selecteren." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Verzend" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Sensor Bar Positie:" @@ -8847,56 +9035,64 @@ msgstr "" "Voorbeeld: {2}\n" " " -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "Server IP-adres" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "Server Poort" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "Server heeft traversal poging geweigerd" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "Stel &Waarde In" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "Stel &blr in" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "Stel PC In" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "Stel Waarde in Vanuit Bestand" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "Stel in als &Standaard ISO" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "Stel geheugenkaartbestand in voor Slot A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "Stel geheugenkaartbestand in voor Slot B" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "Stel symbool in &eindadres" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "Stel symbool in &grootte" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "Stel symbool eindadres in" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "Stel symboolgrootte (%1) in:" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8906,7 +9102,7 @@ msgstr "" "PAL spellen.\n" "Werkt mogelijk niet voor alle spellen." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Stelt de Wii systeemtaal in." @@ -8918,7 +9114,7 @@ msgstr "" "Stelt de vertraging in milliseconden in. Hogere waarden kunnen audio gekraak " "verminderen. Alleen voor bepaalde backends." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8958,11 +9154,11 @@ msgstr "" "Verkort de laadtijden, maar werkt niet met sommige spellen. Kan negatieve " "effecten hebben op de prestaties. Standaard ingesteld op Uit" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Toon &Log" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Toon &Toolbar" @@ -8970,15 +9166,15 @@ msgstr "Toon &Toolbar" msgid "Show Active Title in Window Title" msgstr "Toon Actieve Titel in Venstertitel" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "Toon Alles" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Toon Australië" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "Toon Huidig Spel op Discord" @@ -8986,7 +9182,7 @@ msgstr "Toon Huidig Spel op Discord" msgid "Show Debugging UI" msgstr "Toon Debugging UI" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "Toon ELF/DOL" @@ -8994,43 +9190,43 @@ msgstr "Toon ELF/DOL" msgid "Show FPS" msgstr "Toon FPS" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Toon Frameteller" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Toon Frankrijk" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "Toon GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Toon Duitsland" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "Toon Golf Modus Overlay" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Toon Invoervenster" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Toon Italië" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "Toon JPN" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Toon Korea" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Toon Vertragingsteller" @@ -9038,7 +9234,7 @@ msgstr "Toon Vertragingsteller" msgid "Show Language:" msgstr "Toon Taal:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Toon Log &Configuratie" @@ -9050,7 +9246,7 @@ msgstr "Toon NetPlay Berichten" msgid "Show NetPlay Ping" msgstr "Toon NetPlay Ping" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Toon Nederland" @@ -9058,7 +9254,7 @@ msgstr "Toon Nederland" msgid "Show On-Screen Display Messages" msgstr "Toon On-Screen Berichtgevingen" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Toon PAL" @@ -9067,23 +9263,23 @@ msgstr "Toon PAL" msgid "Show PC" msgstr "PC weergeven" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Toon Platformen" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Toon Regio" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "Toon Her-recordsteller" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Toon Rusland" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "Toon Spanje" @@ -9092,46 +9288,50 @@ msgstr "Toon Spanje" msgid "Show Statistics" msgstr "Toon Statistieken" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "Toon Systeemklok" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Toon Taiwan" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Toon VS" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Toon Onbekend" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "Toon WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Toon Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Toon Wereld" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "In &geheugen weergeven" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "In code tonen" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "Weergeef in server browser" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "Toon doel in &geheugen" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -9175,7 +9375,7 @@ msgstr "" "Toont diverse rendering statistieken.

In geval van " "twijfel leeg laten." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Naast Elkaar" @@ -9191,16 +9391,31 @@ msgstr " Schakel Zijwaarts" msgid "Sideways Wii Remote" msgstr "Wii-afstandsbediening Zijwaarts" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "Handtekeningdatabase" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "Signed 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "Signed 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "Signed 8" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "Signed Integer" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Vereenvoudigd Chinees" @@ -9208,7 +9423,7 @@ msgstr "Vereenvoudigd Chinees" msgid "Simulate DK Bongos" msgstr "Simuleer DK Bongos" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "Zes Assen" @@ -9237,7 +9452,7 @@ msgstr "Tekenen Overslaan" msgid "Skip EFB Access from CPU" msgstr "Sla EFB toegang van de CPU over" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "Hoofdmenu Overslaan" @@ -9245,7 +9460,7 @@ msgstr "Hoofdmenu Overslaan" msgid "Skip Presenting Duplicate Frames" msgstr "Sla Weergave Dubbele Frames Over" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -9264,19 +9479,19 @@ msgstr "" msgid "Slider Bar" msgstr "Schuifbalk" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Slot A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "Slot A:" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Slot B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "Slot B:" @@ -9294,7 +9509,7 @@ msgstr "Socket table" msgid "Software Renderer" msgstr "Software Renderer" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "Een deel van de data kon niet worden gelezen." @@ -9315,11 +9530,11 @@ msgstr "" "Controleer de gemarkeerde waarden." #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "Sorteer Alfabetisch" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "Geluid:" @@ -9332,8 +9547,8 @@ msgid "Spain" msgstr "Spanje" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Spaans" @@ -9341,7 +9556,7 @@ msgstr "Spaans" msgid "Speaker Pan" msgstr "Speaker Pan" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Speaker Volume:" @@ -9386,7 +9601,7 @@ msgstr "Snelheid" msgid "Speed up Disc Transfer Rate" msgstr "Versnel Disc Transfer Rate" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "Stabiel (één keer per jaar)" @@ -9398,16 +9613,16 @@ msgstr "Stack eind" msgid "Stack start" msgstr "Stack begin" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Standaard Controller" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Start" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "Start &NetPlay..." @@ -9415,11 +9630,13 @@ msgstr "Start &NetPlay..." msgid "Start New Cheat Search" msgstr "Start Nieuwe Cheat Zoekopdracht" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "Start Invoer Op&name" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Start Opname" @@ -9435,7 +9652,7 @@ msgstr "Start met Riivolution Patches" msgid "Start with Riivolution Patches..." msgstr "Start met Riivolution Patches..." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "Gestart spel" @@ -9446,7 +9663,7 @@ msgstr "Gestart spel" msgid "State" msgstr "Staat" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Stuurwiel" @@ -9474,19 +9691,19 @@ msgstr "Stap Uit" msgid "Step Over" msgstr "Stap Over" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "Uitstappen succesvol!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "Uitstappen timed out!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "Overstappen in voortgang..." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "Stap succesvol!" @@ -9495,20 +9712,20 @@ msgstr "Stap succesvol!" msgid "Stepping" msgstr "Stappen" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "Stereo" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "Stereoscopische 3D Modus" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Stereoscopische 3D Modus:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Stereoscopie" @@ -9529,11 +9746,15 @@ msgstr "Knuppel" msgid "Stop" msgstr "Stop" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "Stop Afspelen/Opnemen van Invoer" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "Stop Opname" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "Gestopt spel" @@ -9547,7 +9768,7 @@ msgstr "Bewaar EFB Kopieën alleen in Textures" msgid "Store XFB Copies to Texture Only" msgstr "Bewaar XFB Kopieën alleen in Textures" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -9561,7 +9782,7 @@ msgstr "" "Texture)

In geval van twijfel geselecteerd laten." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -9579,7 +9800,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Uitrekken naar Venster" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "Strikte Instellingensynchronisatie" @@ -9602,16 +9823,16 @@ msgstr "Stylus" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "Geslaagd" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "Succesvol aan NetPlay index toegevoegd" @@ -9621,11 +9842,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "Succesvol %n afbeelding(en) geconverteerd." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "'%1' is succesvol verwijderd." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "Exporteren van %n van de %1 save bestand(en) gelukt." @@ -9634,7 +9855,7 @@ msgstr "Exporteren van %n van de %1 save bestand(en) gelukt." msgid "Successfully exported save files" msgstr "Save bestanden succesvol geëxporteerd" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "Certificaten succesvol uitgepakt van NAND" @@ -9646,12 +9867,12 @@ msgstr "Bestand succesvol uitgepakt." msgid "Successfully extracted system data." msgstr "Systeemdata succesvol uitgepakt." -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "Save bestand succesvol geïmporteerd." #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "Titel succesvol geïnstalleerd op de NAND." @@ -9663,16 +9884,16 @@ msgstr "Titel succesvol verwijderd van de NAND." msgid "Support" msgstr "Ondersteuning" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "Ondersteunde bestandsformaten" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "Ondersteunt SD en SDHC. De standaardgrootte is 128 MB." #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "Surround" @@ -9680,11 +9901,11 @@ msgstr "Surround" msgid "Suspended" msgstr "Onderbroken" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Wissel Ogen" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9699,50 +9920,67 @@ msgstr "" msgid "Swing" msgstr "Zwaaien" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "Overschakelen naar A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "Overschakelen naar B" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "Symbool" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "Symbool (%1) eindadres:" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" +"Symbol map niet gevonden.\n" +"\n" +"Als er geen bestaat, kunt u er een genereren vanuit de Menubalk:\n" +"Symbolen -> Genereer Symbolen Van ->\n" +"Adres | Handtekeningdatabase | RSO Modules" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "Symboolnaam:" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "Symbolen" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "Sync" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "AR/Gecko Codes Synchroniseren" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "Synchroniseer Alle Wii Saves" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "Synchroniseer Saves" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "Sync echte Wii-afstandsbedieningen en paar ze" @@ -9758,37 +9996,37 @@ msgstr "" "Synchroniseert de GPU- en CPU-threads om willekeurige vastlopers te " "voorkomen in Dual-core modus. (Aan = Compatibel, Uit = Snel)" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "AR Codes aan het Synchroniseren..." -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "Gecko Codes aan het Synchroniseren..." -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "Synchroniseren van save data..." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Systeemtaal:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "TAS Invoer" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "TAS-Tools" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "Tags" @@ -9806,11 +10044,11 @@ msgstr "Staart" msgid "Taiwan" msgstr "Taiwan" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Maak Screenshot" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Test" @@ -9819,7 +10057,7 @@ msgstr "Test" msgid "Texture Cache" msgstr "Texture Cache" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "Texture Cache Nauwkeurigheid" @@ -9843,7 +10081,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "De H3 hashtabel voor de {0} partitie is onjuist." -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "Het IPL bestand is geen bekende goede dump. (CRC32: {0:x})" @@ -9857,7 +10095,7 @@ msgstr "Het IPL bestand is geen bekende goede dump. (CRC32: {0:x})" msgid "The Masterpiece partitions are missing." msgstr "De Masterpiece partities ontbreken." -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." @@ -9865,7 +10103,7 @@ msgstr "" "De NAND kon niet worden gerepareerd. Het wordt aanbevolen om een back-up te " "maken van uw huidige gegevens en opnieuw te beginnen met een nieuwe NAND." -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "De NAND is gerepareerd." @@ -9910,7 +10148,7 @@ msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" "De decryptie sleutels moeten bijgevoegd worden aan het NAND backupbestand." -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9928,7 +10166,7 @@ msgstr "" "De schijf die op het punt stond geplaatst te worden, kon niet worden " "gevonden." -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9952,21 +10190,21 @@ msgstr "De geëmuleerde Wii-console is al up-to-date." #. interface (physical) like a serial number. "MAC" should be kept in translations. #: Source/Core/DolphinQt/Settings/BroadbandAdapterSettingsDialog.cpp:100 msgid "The entered MAC address is invalid." -msgstr "De ingevoerde MAC adres is ongeldig." +msgstr "Het ingevoerde MAC adres is ongeldig." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "De ingevoerde PID is ongeldig." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "De ingevoerde VID is ongeldig." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "De uitdrukken bevat een syntax error." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -10028,7 +10266,7 @@ msgstr "Het spel ID is {0} maar zou {1} moeten zijn." msgid "The game disc does not contain any usable update information." msgstr "De spelschijf bevat geen bruikbare update informatie." -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "Het spel wordt momenteel uitgevoerd." @@ -10042,7 +10280,7 @@ msgstr "" "met het systeemmenu te voorkomen, is het niet mogelijk om de geëmuleerde " "console met deze schijf bij te werken." -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -10064,7 +10302,7 @@ msgstr "De hashes komen niet overeen!" msgid "The hashes match!" msgstr "De hashes komen overeen!" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -10093,12 +10331,12 @@ msgid "The patches in %1 are not for the selected game or game revision." msgstr "" "De patches in %1 zijn niet voor het geselecteerde spel or spel revisie." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "Het profiel '%1' bestaat niet" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" "Het opgenomen spel ({0}) is niet hetzelfde als het geselecteerde spel ({1})" @@ -10118,22 +10356,22 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "De gedecodeerde AR code bevat geen regels." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" "Hetzelfde bestand kan niet in meerdere slots worden gebruikt; het wordt al " "gebruikt door %1." -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "De NetPlay versie van de server en client zijn incompatibel." -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "De server is vol." -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "De server verstuurde een onbekende foutmelding." @@ -10160,14 +10398,14 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "Het opgegeven bestand \"{0}\" bestaat niet" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "De doelgeheugenkaart bevat al een bestand \"% 1\"." #. i18n: "Ticket" here is a kind of digital authorization to use a certain title (e.g. a game) #: Source/Core/DiscIO/VolumeVerifier.cpp:969 msgid "The ticket is not correctly signed." -msgstr "De ticket is niet correct ondertekend." +msgstr "Het ticket is niet correct ondertekend." #: Source/Core/DiscIO/VolumeVerifier.cpp:504 msgid "The type of a partition could not be read." @@ -10213,7 +10451,7 @@ msgstr "De {0} partitie is niet goed uitgelijnd." msgid "There are too many partitions in the first partition table." msgstr "Er zijn te veel partities in de eerste partitietabel." -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "Er is niks om ongedaan te maken!" @@ -10257,7 +10495,7 @@ msgstr "" "Deze Koreaanse titel gebruikt een IOS die meestal niet wordt gebruikt op " "Koreaanse consoles. Dit leidt waarschijnlijk tot ERROR #002." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "Dit USB apparaat staat al op de witte lijst." @@ -10277,7 +10515,7 @@ msgstr "" "Deze action replay simulator ondersteund geen codes die de Action Replay " "zelf aanpassen." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "Dit kan niet ongedaan gemaakt worden!" @@ -10285,7 +10523,7 @@ msgstr "Dit kan niet ongedaan gemaakt worden!" #: Source/Core/DiscIO/VolumeVerifier.cpp:803 msgid "This debug disc image has the size of a retail disc image." msgstr "" -"Deze debug schijfafbeelding heeft de grote van een retail schijfafbeelding." +"Deze debug schijfafbeelding heeft de grootte van een retail schijfafbeelding." #: Source/Core/DiscIO/VolumeVerifier.cpp:826 msgid "This disc image has an unusual size." @@ -10331,7 +10569,11 @@ msgstr "" "hoogstwaarschijnlijk veroorzaakt doordat dit een dubbellaagse schijf is die " "als een enkellaagse schijf is gedumpt." -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "Dit bestand bevat geen geldig Wii bestandssysteem." + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "Dit bestand lijkt niet op een BootMii NAND-back-up." @@ -10356,11 +10598,11 @@ msgstr "" "grafische kaart of stuurprogramma's ondersteunen dit niet. Als gevolg " "hiervan zult u bugs of vastlopers ervaren tijdens het uitvoeren van dit spel." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "Dit is een slechte dump." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." @@ -10368,7 +10610,7 @@ msgstr "" "Dit is een slechte dump. Dit betekend niet per se dat het spel niet goed " "werkt." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." @@ -10376,11 +10618,11 @@ msgstr "" "Dit is een goede dump volgens Redump.org, maar Dolphin heeft problemen " "gevonden. Dit is misschien een fout in Dolphin." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "Dit is een goede dump." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "Deze sessie heeft een wachtwoord nodig:" @@ -10454,7 +10696,7 @@ msgstr "" "Deze waarde wordt vermenigvuldigd met de gekozen diepte waarde in de " "grafische instellingen." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." @@ -10462,7 +10704,7 @@ msgstr "" "Dit zal de snelheid van het chunked uploaden per client beperken, wat wordt " "gebruikt om saves te synchroniseren." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -10486,7 +10728,7 @@ msgstr "Threads" msgid "Threshold" msgstr "Drempelwaarde" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "TiB" @@ -10505,22 +10747,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Titel" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "Naar" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "Naar:" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "Schakel &Fullscreen Om" @@ -10545,7 +10787,7 @@ msgid "Toggle Aspect Ratio" msgstr "Schakel Beeldverhouding Om" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "Schakel Breakpoint Om" @@ -10605,14 +10847,20 @@ msgstr "Tokeniseren is mislukt." msgid "Toolbar" msgstr "Toolbar" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Boven" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Boven en Beneden" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "Totale Hits" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -10647,20 +10895,20 @@ msgid "Touch" msgstr "Aanraking" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Chinees (Traditioneel)" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "Traversalfout" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "Traversal Server" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "Traversal server time-out tijdens het verbinden met de host" @@ -10692,22 +10940,14 @@ msgstr "Trekkers" msgid "Type" msgstr "Type" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" +msgstr "Type gebaseerde Uitlijning" + +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 msgid "Typical GameCube/Wii Address Space" msgstr "Typische GameCube/Wii Adresruimte" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" -msgstr "U&16" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "U&32" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" -msgstr "U&8" - #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 msgid "UNKNOWN" msgstr "ONBEKEND" @@ -10722,9 +10962,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "USB Witte Lijst Fout" @@ -10765,10 +11005,14 @@ msgstr "" "het shadercompilatie met minimale impact op de prestaties, maar de " "resultaten zijn afhankelijk van het gedrag van video-stuurprogramma's." -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "Kan RSO-module niet automatisch detecteren" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "Niet in staat bestand te openen." + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10794,7 +11038,11 @@ msgstr "" "\n" "Wilt u deze regel negeren en verder gaan met verwerken?" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "Niet in staat bestand te lezen." + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "Kon niet naar bestand {0} schrijven" @@ -10806,15 +11054,15 @@ msgstr "Unbound" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "Ongecomprimeerde GC/Wii-afbeeldingen (*.iso *.gcm)" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Laad State Ongedaan Maken" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Save State Ongedaan Maken" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "Deïnstalleren" @@ -10831,18 +11079,18 @@ msgstr "" "van deze titel uit de NAND, zonder dat zijn save data wordt verwijderd. " "Doorgaan?" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "Verenigde Staten" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Onbekend" @@ -10850,7 +11098,7 @@ msgstr "Onbekend" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "Onbekend DVD commando {0:08x} - fatale fout" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "Onbekend SYNC_CODES bericht ontvangen met id: {0}" @@ -10862,7 +11110,7 @@ msgstr "" "Onbekend SYNC_GECKO_CODES bericht met ID:{0} ontvangen van speler:{1} Speler " "wordt gekickt!" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "Onbekend SYNC_SAVE_DATA-bericht ontvangen met id: {0}" @@ -10874,15 +11122,15 @@ msgstr "" "Onbekend SYNC_SAVE_DATA-bericht met id:{0} ontvangen van speler:{1} Speler " "wordt gekickt!" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "Onbekende adresruimte" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "Onbekende auteur" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "Onbekend data type" @@ -10890,19 +11138,19 @@ msgstr "Onbekend data type" msgid "Unknown disc" msgstr "Onbekende disc" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "Onbekende fout opgetreden." -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "Onbekende fout {0:x}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "Onbekende fout." -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "Onbekend bericht ontvangen met id : {0}" @@ -10912,7 +11160,7 @@ msgstr "" "Onbekend bericht ontvangen met id: {0} ontvangen van speler: {1} Speler " "wordt gekickt!" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Onbeperkt" @@ -10928,13 +11176,28 @@ msgstr "Ontgrendel Cursor" msgid "Unpacking" msgstr "Uitpakken" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "Unsigned 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "Unsigned 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "Unsigned 8" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "Unsigned Integer" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10943,7 +11206,7 @@ msgstr "Omhoog" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Update" @@ -11000,7 +11263,7 @@ msgstr "Schakel Rechtop" msgid "Upright Wii Remote" msgstr "Wii-afstandsbediening Rechtop" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "Gebruiksstatistieken Rapportageinstellingen" @@ -11016,7 +11279,7 @@ msgstr "Gebruik Aangepaste Gebruikersstijl" msgid "Use Lossless Codec (FFV1)" msgstr "Gebruik Lossless Codec (FFV1)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "Gebruik PAL60 Modus (EuRGB60)" @@ -11053,18 +11316,61 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "Gebruik één dieptebuffer voor beide ogen. Nodig voor een paar spellen." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "Gebruik geheugen mapper configuratie tijdens scan" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "Gebruik fysiek adres" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "Gebruik virtuele adressen waar mogelijk" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" +"Wordt gebruikt om functies te vinden gebaseerd op wanneer ze zouden moeten " +"werken.\n" +"Vergelijkbaar met Cheat Engine Ultimap.\n" +"Een symbol map moet worden geladen voor gebruik.\n" +"Omvat/Uitgesloten lijsten blijven bestaan bij het beëindigen/herstarten van " +"de emulatie.\n" +"Deze lijsten zullen niet blijven bestaan bij het sluiten van Dolphin.\n" +"\n" +"'Start Opname': houdt bij welke functies worden uitgevoerd.\n" +"'Stop Opname': wist de huidige opname zonder enige verandering aan de " +"lijsten.\n" +"'Code is niet uitgevoerd': klik tijdens het opnemen, zal opgenomen functies " +"toevoegen aan een uitgeslotenlijst, en vervolgens de opnamelijst resetten.\n" +"'Code is uitgevoerd': klik tijdens opname, voegt opgenomen functie toe aan " +"een omvatlijst en reset vervolgens de opnamelijst.\n" +"\n" +"Nadat u zowel uitgesloten als omvat één keer hebt gebruikt, wordt de " +"uitgeslotenlijst afgetrokken van de omvatlijst en worden alle overgebleven " +"code in omvat getoond.\n" +"U kunt gebruik blijven maken van 'Code is niet uitgevoerd'/ 'Code is " +"uitgevoerd' om de resultaten te beperken." + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "Gebruikersconfiguratie" @@ -11077,11 +11383,11 @@ msgstr "Gebruikersinterface" msgid "User Style:" msgstr "Gebruikersstijl:" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "Gebruiker Variabelen" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" @@ -11091,7 +11397,7 @@ msgstr "" "besturingsuitdrukking. U kunt ze gebruiken om waarden op te slaan of te " "verkrijgen tussen inputs en outputs van dezelfde controller." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -11128,23 +11434,23 @@ msgstr "" msgid "Using Qt %1" msgstr "Gebruikt Qt %1" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "Meestal gebruikt voor licht objecten" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "Meestal gebruikt voor normaal-matrices" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "Meestal gebruikt voor positiematrices" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "Meestal gebruikt voor texture-coördinatenmatrices" @@ -11157,7 +11463,7 @@ msgstr "Hulpprogramma" msgid "V-Sync" msgstr "V-Sync" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Waarde" @@ -11190,8 +11496,8 @@ msgstr "Controleer certificaten" msgid "Verifying" msgstr "Verifiëren" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "Versie" @@ -11227,7 +11533,7 @@ msgstr "Bekijk &geheugen" msgid "Virtual Notches" msgstr "Virtuele Inkepingen" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "Virtuele adresruimte" @@ -11254,7 +11560,7 @@ msgstr "Volume Omhoog" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "WAD bestanden (*.wad)" @@ -11313,7 +11619,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "WASAPI (Exclusieve Modus)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "WFS Pad:" @@ -11321,8 +11627,8 @@ msgstr "WFS Pad:" msgid "WIA GC/Wii images (*.wia)" msgstr "WIA GC/Wii schijfafbeeldingen (*.wia)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "Wachten op de eerste scan.." @@ -11354,7 +11660,7 @@ msgstr "" "prestaties als de emulatiesnelheid onder de 100% is." "

In geval van twijfel leeg laten." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -11373,10 +11679,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Waarschuwing" @@ -11397,7 +11703,7 @@ msgstr "" "Waarschuwing: Het aantal blokken aangegeven door BAT ({0}) komt niet overeen " "met de geladen bestandsheader ({1})" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " @@ -11407,7 +11713,7 @@ msgstr "" "opname bevindt. (byte {0} > {1}) (input {2} > {3}). U moet een andere save " "laden voordat u verdergaat, of deze state laden in alleen-lezen modus." -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " @@ -11417,7 +11723,7 @@ msgstr "" "het huidige beeld in de save (byte {0} < {1}) (frame {2} < {3}). U moet een " "andere save laden voordat u verder gaat." -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" @@ -11428,7 +11734,7 @@ msgstr "" "of deze staat laden met alleen-lezen uitgeschakeld. Anders zullen er " "waarschijnlijk synchronisatieproblemen optreden. " -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -11471,7 +11777,7 @@ msgstr "" msgid "Watch" msgstr "Watch" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "Website" @@ -11508,11 +11814,11 @@ msgstr "" "Mipmapdetectie' is ingeschakeld in Verbeteringen." "

In geval van twijfel leeg laten." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "Witte lijst van USB Passthrough Apparaten" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Breedbeeld Hack" @@ -11528,11 +11834,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Wii Menu" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Wii NAND Basismap:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Wii-afstandsbediening" @@ -11540,8 +11846,8 @@ msgstr "Wii-afstandsbediening" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "Wii-afstandsbediening %1" @@ -11554,11 +11860,11 @@ msgstr "Wii-afstandbedieningsknoppen" msgid "Wii Remote Orientation" msgstr "Wii-afstandsbediening Oriëntatie" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Wii-afstandsbediening Instellingen" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Wii-afstandsbedieningen" @@ -11574,7 +11880,7 @@ msgstr "Wii TAS-Invoer %1 - Wii-afstandsbediening" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "Wii TAS-Invoer %1 - Wii-afstandsbediening + Nunchuck" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "Wii en Wii-afstandsbediening" @@ -11582,7 +11888,7 @@ msgstr "Wii en Wii-afstandsbediening" msgid "Wii data is not public yet" msgstr "Wii data is nog niet publiek" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "Wii save bestanden (*.bin);;All Files (*)" @@ -11612,18 +11918,18 @@ msgid "World" msgstr "Wereld" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "Schrijven" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "Schrijf Save Data" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "Alleen schrijven" @@ -11636,12 +11942,12 @@ msgid "Write to File" msgstr "Schrijf naar Bestand" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "Schrijf naar Log" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "Schrijf naar Log en Breek af" @@ -11649,7 +11955,7 @@ msgstr "Schrijf naar Log en Breek af" msgid "Write to Window" msgstr "Schrijf naar Venster" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "Verkeerde Versie" @@ -11660,7 +11966,7 @@ msgstr "Verkeerde Versie" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "XF register " @@ -11689,8 +11995,8 @@ msgid "Yellow" msgstr "Geel" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "Ja" @@ -11744,7 +12050,7 @@ msgstr "" "moet u macOS 10.14 (Mojave) of nieuwer gebruiken. Meld de problemen die u " "tegenkomt niet, tenzij ze ook op 10.14+ voorkomen." -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "U gebruikt de nieuwste versie die beschikbaar is op deze update-track." @@ -11788,11 +12094,11 @@ msgstr "" msgid "You have to enter a name." msgstr "U moet een naam opgeven." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "U moet een naam voor uw sessie opgeven!" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "U moet een regio voor uw sessie opgeven!" @@ -11800,7 +12106,7 @@ msgstr "U moet een regio voor uw sessie opgeven!" msgid "You must restart Dolphin in order for the change to take effect." msgstr "U moet Dolphin herstarten voordat deze optie effect zal hebben." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "U moet een spel selecteren om te hosten!" @@ -11839,23 +12145,23 @@ msgstr "Zero 3 code niet ondersteund" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "Zero code onbekend voor Dolphin: {0:08x}" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "[%1, %2]" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "[%1, %2] en [%3, %4]" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "^ Exclusieve Of" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "uitgelijnd" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "elke waarde" @@ -11874,13 +12180,13 @@ msgstr "cm" msgid "d3d12.dll could not be loaded." msgstr "d3d12.dll kan niet worden geladen." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "standaard" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "verbinding verbroken" @@ -11896,31 +12202,31 @@ msgstr "errno" msgid "fake-completion" msgstr "fake-completion" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "is gelijk aan" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "is meer dan" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "is meer dan of gelijk aan" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "is minder dan" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "is minder dan of gelijk aan" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "is niet gelijk aan" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "laatste waarde" @@ -11952,7 +12258,7 @@ msgstr "uit" msgid "on" msgstr "aan" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "of selecteer een apparaat" @@ -11961,7 +12267,7 @@ msgstr "of selecteer een apparaat" msgid "s" msgstr "s" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "deze waarde:" @@ -11970,7 +12276,7 @@ msgstr "deze waarde:" msgid "uDraw GameTablet" msgstr "uDraw GameTablet" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "niet-uitgelijnd" @@ -11989,7 +12295,7 @@ msgstr "{0} (Masterpiece)" msgid "{0} (NKit)" msgstr "{0} (NKit)" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" "{0} IPL gevonden in {1} map. Het is mogelijk dat de schijf niet herkend wordt" @@ -12012,7 +12318,7 @@ msgstr "" "buiten Dolphin" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "{0} van {1} blokken. Compressieverhouding {2}%" @@ -12020,7 +12326,7 @@ msgstr "{0} van {1} blokken. Compressieverhouding {2}%" msgid "{0} was not a directory, moved to *.original" msgstr "{0} was geen map, verplaatst naar *.original" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "| Of" diff --git a/Languages/po/pl.po b/Languages/po/pl.po index dc02f18ba4ea..e07b0335551c 100644 --- a/Languages/po/pl.po +++ b/Languages/po/pl.po @@ -22,9 +22,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Piotr Kolasiński Kolenda, 2021\n" "Language-Team: Polish (http://www.transifex.com/delroth/dolphin-emu/language/" "pl/)\n" "Language: pl\n" @@ -35,7 +35,7 @@ msgstr "" "%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n" "%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -47,7 +47,7 @@ msgstr "" "Ponieważ obrazy dysków GameCube'a zawierają niewiele danych do weryfikacji, " "mogą nastąpić problemy, których Dolphin nie jest w stanie wykryć." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -59,7 +59,7 @@ msgstr "" "Ponieważ ten tytuł nie jest przeznaczony na detaliczne wersje Wii, Dolphin " "nie może zweryfikować, czy był on manipulowany." -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -83,7 +83,7 @@ msgstr "" msgid " (Disc %1)" msgstr " (Dysk %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "" @@ -91,7 +91,7 @@ msgstr "" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -105,7 +105,7 @@ msgstr "" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -121,17 +121,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -150,7 +150,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (Rewizja %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -187,7 +187,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "%1 nie wspiera tej funkcji na twoim systemie." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "%1 nie wspiera tej funkcji." @@ -201,23 +201,23 @@ msgstr "" "%2 obiekt(ów)\n" "Aktualna klatka: %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "%1 dołączył(a)" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "%1 wyszedł" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -226,11 +226,11 @@ msgstr "" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "Znaleziono %1 sesję" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "Znaleziono %1 sesji" @@ -242,15 +242,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (Normalna szybkość)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "%1: %2" @@ -266,30 +266,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2]: %3/%4 MiB" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "" @@ -309,7 +309,7 @@ msgstr "&3x" msgid "&4x" msgstr "&4x" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&O programie" @@ -318,11 +318,11 @@ msgid "&Add Memory Breakpoint" msgstr "&Dodaj punkt przerwania pamięci" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "&Dodaj nowy kod..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "&Dodaj funkcję" @@ -330,19 +330,19 @@ msgstr "&Dodaj funkcję" msgid "&Add..." msgstr "&Dodaj..." -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "Ustawienia &audio" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "&Automatyczna aktualizacja:" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "&Automatyczny Start" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "&Uruchom z kopii zapasowej DVD" @@ -350,11 +350,11 @@ msgstr "&Uruchom z kopii zapasowej DVD" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Punkty przerwania" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "" @@ -362,15 +362,15 @@ msgstr "" msgid "&Cancel" msgstr "&Anuluj" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "Wy&czyść Symbole" @@ -378,7 +378,7 @@ msgstr "Wy&czyść Symbole" msgid "&Clone..." msgstr "&Klonuj..." -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "" @@ -386,19 +386,20 @@ msgstr "" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "Ustawienia &kontrolerów" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "&Kopiuj adres" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "&Usuń" @@ -410,7 +411,7 @@ msgstr "&Usuń obejrzenie" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "&Edytuj kod..." @@ -418,11 +419,11 @@ msgstr "&Edytuj kod..." msgid "&Edit..." msgstr "&Edytuj..." -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulacja" @@ -434,43 +435,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Plik" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&Czcionka..." -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "Wyprzedzanie &klatek" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "&Generuj Symbole Z" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "&Repozytorium GitHub" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "Ustawienia &graficzne" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "Po&moc" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "Ustawienia &skrótów klawiaturowych" @@ -482,11 +487,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "&Importuj..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "" @@ -494,7 +499,7 @@ msgstr "" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -502,23 +507,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "&Język:" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&Wczytaj stan" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "Pa&mięć" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "&Film" @@ -526,7 +531,7 @@ msgstr "&Film" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "" @@ -534,24 +539,24 @@ msgstr "" msgid "&No" msgstr "&Nie" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Otwórz..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Opcje" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "W&strzymaj" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Graj" @@ -559,11 +564,11 @@ msgstr "&Graj" msgid "&Properties" msgstr "&Właściwości" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "&Tryb tylko do odczytu" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Rejestry" @@ -572,24 +577,24 @@ msgid "&Remove" msgstr "&Usuń" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "&Usuń kod" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "Z&resetuj" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "" @@ -597,11 +602,11 @@ msgstr "" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "Limit &szybkości:" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Zatrzymaj" @@ -609,11 +614,11 @@ msgstr "&Zatrzymaj" msgid "&Theme:" msgstr "&Motyw:" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Narzędzia" @@ -621,17 +626,17 @@ msgstr "&Narzędzia" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Widok" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&Obejrz" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Strona internetowa" @@ -643,11 +648,11 @@ msgstr "Wi&ki" msgid "&Yes" msgstr "&Tak" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" @@ -659,7 +664,7 @@ msgstr "(Brak)" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(wyłączony)" @@ -667,34 +672,34 @@ msgstr "(wyłączony)" msgid "(ppc)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" @@ -702,6 +707,10 @@ msgstr "" msgid "128 Mbit (2043 blocks)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "" @@ -710,35 +719,35 @@ msgstr "" msgid "16-bit" msgstr "16-bitowa" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x Natywna (1280x1056) dla 720p" @@ -750,25 +759,25 @@ msgstr "" msgid "32-bit" msgstr "32-bitowa" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -782,28 +791,32 @@ msgstr "Głębia 3D" msgid "3x" msgstr "3x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x Natywna (1920x1584) dla 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x Natywna (2560x2112) dla 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x Natywna (3200x2640)" @@ -811,29 +824,33 @@ msgstr "5x Natywna (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x Natywna (3840x3168) dla 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x Natywna (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "" @@ -842,25 +859,25 @@ msgstr "" msgid "8-bit" msgstr "8-bitowa" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x Natywna (5120x4224) dla 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "" @@ -879,12 +896,12 @@ msgid "" "Notes:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "Sesja NetPlay jest już rozpoczęta!" @@ -902,11 +919,11 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "Dysk już jest gotowy do włożenia." -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -914,7 +931,7 @@ msgstr "" "Wyłączanie już się odbywa. Niezapisane dane mogą zostać utracone, jeśli " "zatrzymasz aktualną emulację, zanim się ukończy. Wymusić zatrzymanie?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "Synchronizacja może być uruchomiona, tylko gdy działa gra Wii." @@ -923,7 +940,7 @@ msgstr "Synchronizacja może być uruchomiona, tylko gdy działa gra Wii." msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -947,8 +964,8 @@ msgstr "" msgid "AR Codes" msgstr "Kody AR" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -971,7 +988,7 @@ msgstr "" msgid "Accuracy:" msgstr "Dokładność:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "Akcja" @@ -1067,9 +1084,9 @@ msgstr "Adapter wykryty" msgid "Adapter:" msgstr "Adapter:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Dodaj" @@ -1077,11 +1094,11 @@ msgstr "Dodaj" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "Dodaj nowe urządzenie USB" @@ -1113,46 +1130,49 @@ msgstr "" msgid "Add to &watch" msgstr "Dodaj do &oglądania" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Dodaj..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Adres" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1207,39 +1227,43 @@ msgstr "Zaawansowane" msgid "Africa" msgstr "Afryka" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "Wszystkie stany zapisu (*.sav *.s##);; wszystkie pliki (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "Kody wszystkich graczy zsynchronizowane." @@ -1248,25 +1272,25 @@ msgstr "Kody wszystkich graczy zsynchronizowane." msgid "All players' saves synchronized." msgstr "Zapisy wszystkich graczy zsynchronizowane." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "Zezwalaj na niedopasowane ustawienia regionalne" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1292,7 +1316,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "Oczekiwano włożonego dysku ale go nie wykryto." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Anaglifowy" @@ -1310,39 +1334,39 @@ msgstr "Kąt" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Filtrowanie anizotropowe:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Antyaliasing:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "Jakikolwiek region" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1356,15 +1380,15 @@ msgstr "Data Apploadera:" msgid "Apply" msgstr "Zastosuj" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "Czy jesteś pewien, że chcesz usunąć '%1'?" @@ -1372,11 +1396,11 @@ msgstr "Czy jesteś pewien, że chcesz usunąć '%1'?" msgid "Are you sure you want to delete this file?" msgstr "Czy jesteś pewien, że chcesz usunąć ten plik?" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "Czy jesteś pewien, że chcesz zamknąć NetPlay?" @@ -1389,11 +1413,11 @@ msgid "Aspect Ratio" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Proporcje obrazu:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Przypisz porty kontrolerów" @@ -1401,7 +1425,7 @@ msgstr "Przypisz porty kontrolerów" msgid "Assign Controllers" msgstr "Przypisz kontrolery" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1426,7 +1450,7 @@ msgstr "Ustawienia rozciągania dźwięku" msgid "Australia" msgstr "Australia" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "" @@ -1438,15 +1462,15 @@ msgstr "Autorzy" msgid "Auto" msgstr "Automatyczne" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Automatyczna (wielokrotność 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "Ustawienia automatycznej aktualizacji" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1462,7 +1486,7 @@ msgstr "Automatycznie dopasuj rozmiar okna" msgid "Auto-Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1473,12 +1497,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "Pomocnicza" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "B" @@ -1493,11 +1517,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "Rejestr BP" @@ -1523,7 +1547,7 @@ msgstr "Ustawienia silnika" msgid "Backend:" msgstr "Silnik:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Wejście w tle" @@ -1534,7 +1558,13 @@ msgstr "Wejście w tle" msgid "Backward" msgstr "W tył" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1542,19 +1572,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Baner" @@ -1578,7 +1609,7 @@ msgstr "" msgid "Basic" msgstr "Podstawowe" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Ustawienia podstawowe" @@ -1586,7 +1617,7 @@ msgstr "Ustawienia podstawowe" msgid "Bass" msgstr "Bas" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1594,11 +1625,11 @@ msgstr "" msgid "Battery" msgstr "Bateria" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "Beta (raz w miesiącu)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1620,7 +1651,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "" @@ -1633,7 +1664,7 @@ msgstr "" msgid "Blocking" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Bloki" @@ -1656,15 +1687,15 @@ msgid "" "Passthrough mode cannot be used." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "" @@ -1672,7 +1703,7 @@ msgstr "" msgid "Borderless Fullscreen" msgstr "Pełny ekran bez ramek" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Dół" @@ -1686,7 +1717,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "Przerwij" @@ -1695,7 +1726,7 @@ msgstr "Przerwij" msgid "Breakpoint" msgstr "Punkt przerwania" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "Napotkano punkt przerwania! Wyjście anulowane." @@ -1725,7 +1756,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1733,12 +1764,12 @@ msgstr "" msgid "Buffer Size:" msgstr "Rozmiar bufora:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "Rozmiar bufora zmieniono na %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Bufor:" @@ -1780,11 +1811,11 @@ msgstr "Przyciski" msgid "C Stick" msgstr "C Gałka" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "Rejestr CP" @@ -1815,7 +1846,7 @@ msgstr "" msgid "Calculate" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1835,15 +1866,15 @@ msgstr "" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1853,7 +1884,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1861,17 +1892,17 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" "Nie można uruchomić Sesji NetPlay, podczas gdy gra wciąż jest uruchomiona!" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "Anuluj" @@ -1888,23 +1919,23 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "" @@ -1926,7 +1957,7 @@ msgstr "" msgid "Change &Disc" msgstr "Zmień &dysk" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Zmień &dysk..." @@ -1934,15 +1965,15 @@ msgstr "Zmień &dysk..." msgid "Change Disc" msgstr "Zmień dysk" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "Zmieniaj dyski automatycznie" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1964,7 +1995,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Rozmówki" @@ -1980,11 +2011,11 @@ msgstr "Szukaj cheatów" msgid "Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "" @@ -1998,7 +2029,7 @@ msgid "" "whether it's still in use." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "" @@ -2006,16 +2037,16 @@ msgstr "" msgid "China" msgstr "Chiny" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Wybierz plik do otwarcia" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -2038,14 +2069,14 @@ msgid "Classic Controller" msgstr "Kontroler Klasyczny" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Wyczyść" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "" @@ -2062,28 +2093,47 @@ msgstr "Sklonuj i &edytuj kod..." msgid "Close" msgstr "Zamknij" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "Ko&nfiguracja" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Kod" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Kod:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2101,7 +2151,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "" @@ -2114,7 +2164,7 @@ msgstr "" msgid "Compression:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "" @@ -2126,13 +2176,13 @@ msgstr "" msgid "Config" msgstr "Konfiguracja" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Konfiguruj" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2140,21 +2190,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "Konfiguruj Dolphin" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "Skonfiguruj wejście" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "Skonfiguruj wyjście" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "Potwierdź" @@ -2167,26 +2217,26 @@ msgstr "" msgid "Confirm on Stop" msgstr "Potwierdź przy zatrzymaniu" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "Potwierdzenie" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Połącz" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Podłącz Balance Board" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Podłącz klawiaturę USB" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "" @@ -2206,11 +2256,11 @@ msgstr "Połącz Wiilot 3" msgid "Connect Wii Remote 4" msgstr "Połącz Wiilot 4" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "Połącz Wiiloty" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" @@ -2222,15 +2272,19 @@ msgstr "Połączyć z Internetem i przeprowadzić aktualizację systemu?" msgid "Connected" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Typ połączenia:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Skanowanie ciągłe" @@ -2243,7 +2297,7 @@ msgstr "" msgid "Control Stick" msgstr "Gałka sterująca" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "Profil kontrolera" @@ -2271,7 +2325,7 @@ msgstr "Ustawienia kontrolera" msgid "Controllers" msgstr "Kontrolery" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2279,7 +2333,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2288,7 +2342,7 @@ msgid "" "Native.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2313,12 +2367,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Konwergencja:" @@ -2355,33 +2409,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Kopiuj" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "Kopiuj &funkcję" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "Kopiuj &hex" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "" @@ -2389,11 +2448,15 @@ msgstr "" msgid "Copy failed" msgstr "Kopiowanie nie powiodło się" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "" @@ -2408,16 +2471,16 @@ msgstr "Rdzeń" msgid "Cost" msgstr "Koszt" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "" @@ -2500,15 +2563,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2535,7 +2598,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "Twórca:" @@ -2558,11 +2621,11 @@ msgstr "" msgid "Crossfade" msgstr "Suwak" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "Aktualny region" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2570,7 +2633,7 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "" @@ -2578,7 +2641,7 @@ msgstr "" msgid "Current thread" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2609,7 +2672,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "Bongosy DK" @@ -2637,7 +2700,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2645,11 +2708,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Mata do tańczenia" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "" @@ -2661,28 +2724,27 @@ msgstr "" msgid "Data Transfer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "Typ danych" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2700,7 +2762,7 @@ msgid "Debug Only" msgstr "Tylko debugowanie" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Debugowanie" @@ -2742,7 +2804,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Domyślne" @@ -2758,7 +2820,7 @@ msgstr "" msgid "Default Font" msgstr "Domyślna czcionka" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "Domyślne ISO:" @@ -2783,7 +2845,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2798,11 +2860,11 @@ msgid "Delete Selected Files..." msgstr "" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2810,21 +2872,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Głębia:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Opis" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Opis:" @@ -2833,11 +2895,11 @@ msgstr "Opis:" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Wykryj" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2845,25 +2907,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "Deterministyczna dwurdzeniowość:" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "Deweloperska (wiele razy w ciągu dnia)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Urządzenie" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "PID urządzenia (np. 0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Ustawienia urządzenia" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "VID urządzenia (np. 057e)" @@ -2875,11 +2937,15 @@ msgstr "" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "Ekran wygasa po 5 minutach braku aktywności." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "Bezpośrednie połączenie" @@ -2910,7 +2976,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "Wyłącz prostokąt ograniczający" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "" @@ -2922,15 +2988,15 @@ msgstr "" msgid "Disable Emulation Speed Limit" msgstr "Wyłącz limit szybkości emulacji" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Wyłącz mgłę" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "" @@ -2938,7 +3004,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2952,7 +3018,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2969,11 +3035,15 @@ msgstr "Dysk" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2991,26 +3061,26 @@ msgstr "" msgid "Distance of travel from neutral position." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" "Czy zezwalasz programowi Dolphin na wysyłanie informacji do jego producentów?" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "Czy chcesz wyczyścić listę nazw symboli?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Zatrzymać aktualną emulację?" @@ -3027,9 +3097,9 @@ msgstr "" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "" @@ -3041,8 +3111,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Filmy TAS (*.dtm)" @@ -3077,21 +3147,21 @@ msgstr "Nie udało się wykonać wymaganego zadania." msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "Dolphin jest wolnym i otwartoźródłowym emulatorem GameCube'a oraz Wii." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3106,7 +3176,7 @@ msgstr "System cheatów programu Dolphin jest aktualnie wyłączony." msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "Nie aktualizuj" @@ -3119,24 +3189,26 @@ msgid "Done compressing disc image." msgstr "Zakończono kompresję obrazu płyty." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Dół" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "Pobierz kody" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "Pobierz kody z bazy danych WiiRD" @@ -3144,11 +3216,11 @@ msgstr "Pobierz kody z bazy danych WiiRD" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "Pobieranie zakończone" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "Pobrano %1 kodów. (dodano %2)" @@ -3171,27 +3243,35 @@ msgstr "" msgid "Dual Core" msgstr "Dwa rdzenie" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Atrapa" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Zrzucaj audio" @@ -3203,7 +3283,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "Zrzucaj docelowy EFB" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Zrzucaj klatki" @@ -3215,7 +3295,7 @@ msgstr "" msgid "Dump Objects" msgstr "Zrzucaj obiekty" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "Ścieżka zrzutu:" @@ -3312,16 +3392,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Holenderski" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "&Wyjście" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3333,7 +3413,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3361,7 +3441,7 @@ msgstr "Efekt" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3369,7 +3449,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "" @@ -3381,7 +3461,7 @@ msgstr "Wysuń dysk" msgid "Embedded Frame Buffer (EFB)" msgstr "Wbudowany bufor klatki (Embedded Frame Buffer - EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Pusty" @@ -3389,11 +3469,11 @@ msgstr "Pusty" msgid "Emu Thread already running" msgstr "Wątek emulacji jest już uruchomiony" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "Emuluj adapter Bluetooth Wii" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "Emulowany Wiilot" @@ -3409,8 +3489,12 @@ msgstr "" msgid "Emulation Speed" msgstr "Szybkość emulacji" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3426,7 +3510,7 @@ msgstr "Włącz weryfikację warstw API" msgid "Enable Audio Stretching" msgstr "Włącz rozciąganie dźwięku" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Włącz cheaty" @@ -3438,7 +3522,7 @@ msgstr "Włącz dostosowany RTC" msgid "Enable Dual Core" msgstr "Włącz dwa rdzenie" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Włącz dwa rdzenie (przyspieszenie)" @@ -3464,19 +3548,19 @@ msgid "Enable Progressive Scan" msgstr "Włącz skanowanie progresywne" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Włącz wygaszacz ekranu" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Włącz dane głosu" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "Włącz raportowanie statystyk użytkowania" @@ -3508,7 +3592,7 @@ msgstr "" "Włącza obliczanie flagi wyniku liczby zmiennoprzecinkowej, wymagane dla " "niektórych gier. (włączone = kompatybilne, wyłączone = szybkie)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3516,7 +3600,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3546,7 +3630,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3582,7 +3666,7 @@ msgstr "" msgid "Encoding" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3595,12 +3679,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet nie zainicjował się" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Angielski" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3610,7 +3694,7 @@ msgstr "Ulepszenia" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "Wprowadź ID urządzenia USB" @@ -3624,11 +3708,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "" @@ -3637,65 +3721,68 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Błąd" @@ -3709,19 +3796,19 @@ msgid "Error loading selected language. Falling back to system default." msgstr "" "Błąd wczytywania wybranego języka. Zmienianie spowrotem na domyślny systemu." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3741,7 +3828,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3795,11 +3882,11 @@ msgstr "" "Błąd: Próba uzyskania dostępu do czcionek Windows-1252, choć nie są one " "wczytane. Gry mogą nie pokazywać czcionek poprawnie lub zawieszać się." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3808,11 +3895,39 @@ msgstr "" msgid "Euphoria" msgstr "Euforia" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Europa" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3861,14 +3976,14 @@ msgstr "" msgid "Experimental" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Eksportuj wszystkie zapisy Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3876,15 +3991,15 @@ msgstr "" msgid "Export Recording" msgstr "Eksportuj nagranie" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Eksportuj nagranie..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3896,22 +4011,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Rozszerzenie" @@ -3924,7 +4039,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3932,7 +4047,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "Zewnętrzny bufor klatki (External Frame Buffer - XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "Wypakuj certyfikaty z NAND" @@ -3970,7 +4085,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "Odtwarzacz FIFO" @@ -3978,17 +4093,17 @@ msgstr "Odtwarzacz FIFO" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -4000,7 +4115,7 @@ msgstr "" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -4021,12 +4136,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -4038,19 +4153,19 @@ msgstr "Nie udało się usunąć wybranego pliku." msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Nie udało się pobrać kodów." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -4059,7 +4174,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "" @@ -4082,29 +4197,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "" @@ -4120,16 +4235,16 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" @@ -4137,8 +4252,8 @@ msgstr "" "Nasłuch na porcie %1 zakończony niepowodzeniem. Czy jest uruchomiony jakiś " "inny serwer NetPlay?" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "" @@ -4150,11 +4265,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "" @@ -4165,7 +4280,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "Nie udało się otworzyć '%1'" @@ -4192,11 +4307,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "" @@ -4205,7 +4320,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4217,7 +4332,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4225,25 +4340,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4258,15 +4373,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4274,23 +4389,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "Nie udało się zapisać log FIFO." -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4298,11 +4413,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Nie udało się zapisać BT.DINF do SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4310,22 +4425,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "Nie udało się zapisać pliku konfiguracyjnego!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4334,19 +4449,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4359,7 +4474,7 @@ msgstr "Szybki" msgid "Fast Depth Calculation" msgstr "Szybkie obliczanie głębi" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4376,7 +4491,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "" @@ -4390,18 +4505,18 @@ msgstr "Informacje o pliku" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Nazwa pliku" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Rozmiar pliku" @@ -4409,11 +4524,11 @@ msgstr "Rozmiar pliku" msgid "File Size:" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "Plik nie zawierał kodów." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4427,11 +4542,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4439,15 +4554,15 @@ msgstr "" msgid "Filesystem" msgstr "System plików" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "Filtruj symbole" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4455,11 +4570,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "" @@ -4473,18 +4588,22 @@ msgid "" "This can take a while." msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Napraw sumy kontrolne" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4494,13 +4613,14 @@ msgstr "Flagi" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "" @@ -4524,7 +4644,7 @@ msgstr "" msgid "Force 16:9" msgstr "Wymuszaj 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "Wymuszaj 24-bitowy kolor" @@ -4532,15 +4652,15 @@ msgstr "Wymuszaj 24-bitowy kolor" msgid "Force 4:3" msgstr "Wymuszaj 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "Wymuszaj nasłuch na porcie:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Wymuszaj filtrowanie tekstur" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4550,7 +4670,7 @@ msgid "" "
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4569,21 +4689,21 @@ msgstr "" msgid "Forward" msgstr "W przód" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Przekieruj port (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "" @@ -4612,7 +4732,7 @@ msgstr "Zrzucanie klatek" msgid "Frame Range" msgstr "Zasięg klatki" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4624,19 +4744,19 @@ msgstr "" msgid "France" msgstr "Francja" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4644,7 +4764,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -5052,7 +5172,7 @@ msgstr "Zielony lewo" msgid "Green Right" msgstr "Zielony prawo" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "Widok kafelków" @@ -5065,7 +5185,7 @@ msgstr "Gitara" msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "" @@ -5078,12 +5198,29 @@ msgstr "Hacki" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5095,19 +5232,19 @@ msgstr "Heksadecymalne" msgid "Hide" msgstr "Ukryj" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5125,21 +5262,27 @@ msgstr "" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Hostuj" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5147,7 +5290,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5155,11 +5298,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "" @@ -5171,7 +5314,7 @@ msgstr "" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "Ustawienia skrótów klawiaturowych" @@ -5222,11 +5365,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "Adres IP:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "Ustawienia IPL" @@ -5235,7 +5378,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "Czułość IR" @@ -5257,22 +5400,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Ikona" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "Generacja tożsamości" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5328,7 +5471,7 @@ msgstr "Ignoruj zmiany formatu" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5336,7 +5479,7 @@ msgid "" "checked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5357,41 +5500,50 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Importuj zapis Wii..." -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" " Time elapsed: %1s" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5444,8 +5596,8 @@ msgstr "Informacje" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Informacja" @@ -5454,10 +5606,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Wejście" @@ -5471,16 +5623,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Włóż kartę SD" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "" @@ -5492,7 +5650,7 @@ msgstr "" msgid "Install Update" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "Zainstaluj WAD..." @@ -5508,11 +5666,11 @@ msgstr "" msgid "Instruction" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "" @@ -5530,7 +5688,7 @@ msgid "Interface" msgstr "Interfejs" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Wewnętrzny błąd LZO - kompresja nie powiodła się" @@ -5539,27 +5697,27 @@ msgstr "Wewnętrzny błąd LZO - kompresja nie powiodła się" msgid "Internal LZO Error - decompression failed" msgstr "" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Wewnętrzny błąd LZO - lzo_init() nie powiodło się" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "Rozdzielczość wewnętrzna" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Rozdzielczość wewnętrzna:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5567,11 +5725,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "Interpreter (najwolniejszy)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5579,7 +5737,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5588,15 +5746,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5604,11 +5762,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "" @@ -5621,33 +5779,33 @@ msgstr "" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Newłaściwy plik nagrania" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Niewłaściwy parametr przeszukiwania (nie wybrano obiektu)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Niewłaściwy łańcuch przeszukiwania (nie udało się zamienić na liczbę)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "" "Niewłaściwy łańcuch przeszukiwania (wspierane są tylko równe długości " "łańcucha)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "" @@ -5656,8 +5814,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Włoski" @@ -5665,11 +5823,11 @@ msgstr "Włoski" msgid "Italy" msgstr "Włochy" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "" @@ -5677,47 +5835,47 @@ msgstr "" msgid "JIT Blocks" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5729,11 +5887,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5744,12 +5902,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Japonia" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japoński" @@ -5769,12 +5927,12 @@ msgstr "Trzymaj okno zawsze na wierzchu" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Klawiatura" @@ -5787,20 +5945,20 @@ msgstr "Klawiatura" msgid "Keys" msgstr "Klawisze" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Wyrzuć gracza" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Korea" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Koreański" @@ -5828,7 +5986,7 @@ msgstr "" msgid "Label" msgstr "Etykieta" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5908,15 +6066,15 @@ msgstr "" msgid "License" msgstr "Licencja" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "Pokaż kolumny" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "Widok listy" @@ -5925,17 +6083,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Wczytaj" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "" @@ -5943,7 +6101,7 @@ msgstr "" msgid "Load Custom Textures" msgstr "Wczytuj dostosowane tekstury" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "" @@ -5952,7 +6110,7 @@ msgstr "" msgid "Load Last State" msgstr "Wczytaj ostatni stan" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -6045,23 +6203,23 @@ msgstr "Wczytaj stan Slot 8" msgid "Load State Slot 9" msgstr "Wczytaj stan Slot 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "Wczytaj stan z pliku" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "Wczytaj stan z wybranego slotu" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "Wczytaj stan ze slotu" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "Wczytaj zapis Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "" @@ -6069,12 +6227,12 @@ msgstr "" msgid "Load from Selected Slot" msgstr "Wczytaj z wybranego slotu" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "Wczytaj ze slotu Slot %1 - %2" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "Wczytaj plik map" @@ -6082,7 +6240,7 @@ msgstr "Wczytaj plik map" msgid "Load..." msgstr "Wczytaj..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "" @@ -6093,7 +6251,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "" @@ -6102,7 +6260,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Log" @@ -6110,7 +6268,7 @@ msgstr "Log" msgid "Log Configuration" msgstr "Konfiguracja logu" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6137,7 +6295,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "" @@ -6166,7 +6324,7 @@ msgstr "MMU" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6176,7 +6334,7 @@ msgstr "Główna gałka" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Producent" @@ -6185,7 +6343,7 @@ msgstr "Producent" msgid "Maker:" msgstr "Producent:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6193,7 +6351,7 @@ msgid "" "unchecked.
" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "" @@ -6201,7 +6359,7 @@ msgstr "" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6209,15 +6367,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "Trafienie znalezione" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6226,7 +6384,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "Może powodować spowolnienie w Wii Menu i niektórych grach." @@ -6235,11 +6393,11 @@ msgstr "Może powodować spowolnienie w Wii Menu i niektórych grach." msgid "Medium" msgstr "Umiarkowany" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "Pamięć" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "" @@ -6247,7 +6405,7 @@ msgstr "" msgid "Memory Card" msgstr "Karta pamięci" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "" @@ -6265,7 +6423,7 @@ msgstr "" msgid "Memory Override" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "" @@ -6281,7 +6439,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6289,13 +6447,13 @@ msgid "" "want to continue?" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Mikrofon" @@ -6303,19 +6461,19 @@ msgstr "Mikrofon" msgid "Misc" msgstr "Różne" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Ustawienia różne" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6338,12 +6496,12 @@ msgid "" "unchecked.
" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6355,11 +6513,11 @@ msgstr "Monoskopowe cienie" msgid "Monospaced Font" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6399,10 +6557,10 @@ msgstr "Film" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "" @@ -6410,26 +6568,26 @@ msgstr "" msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "" @@ -6441,37 +6599,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Nazwa:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Natywna (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6479,16 +6637,16 @@ msgstr "" msgid "Netherlands" msgstr "Holandia" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "NetPlay zdesynchronizował się. Nie ma sposobu na powrócenie z tego." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "" @@ -6509,11 +6667,11 @@ msgstr "" msgid "New" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "" @@ -6521,7 +6679,7 @@ msgstr "" msgid "New Tag..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "Nowa tożsamość została wygenerowana." @@ -6538,7 +6696,7 @@ msgstr "" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6547,17 +6705,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Pseudonim:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "Nie" @@ -6565,6 +6723,10 @@ msgstr "Nie" msgid "No Adapter Detected" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "Bez wyjścia audio" @@ -6575,24 +6737,20 @@ msgstr "Bez wyjścia audio" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "Brak trafień" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "Nie podano wartości" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Brak opisu" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6604,15 +6762,15 @@ msgstr "" msgid "No file loaded / recorded." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "Nie wykryto żadnych problemów" @@ -6620,11 +6778,15 @@ msgstr "Nie wykryto żadnych problemów" msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "Nie znaleziono żadnych problemów." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6635,7 +6797,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6643,17 +6805,13 @@ msgstr "" msgid "No save data found." msgstr "" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6663,7 +6821,7 @@ msgstr "Brak" msgid "North America" msgstr "Ameryka Północna" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "" @@ -6671,11 +6829,11 @@ msgstr "" msgid "Not Set" msgstr "Nieokreślona" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "Nie wszyscy gracze mają tę grę. Czy na pewno chcesz rozpocząć?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6683,7 +6841,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6743,13 +6901,13 @@ msgstr "" msgid "Nunchuk Stick" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6762,11 +6920,11 @@ msgid "Oceania" msgstr "Oceania" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Wyłączone" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6778,17 +6936,17 @@ msgstr "Włączone" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "&Dokumentacja online" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6805,7 +6963,7 @@ msgstr "Otwórz" msgid "Open &Containing Folder" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "" @@ -6853,7 +7011,7 @@ msgstr "" msgid "OpenGL ES" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6871,7 +7029,7 @@ msgstr "Opcje" msgid "Orange" msgstr "Pomarańczowy" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6879,7 +7037,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Pozostałe" @@ -6892,11 +7050,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "Inne skróty klawiaturowe stanów" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "Inne zarządzanie stanami" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "" @@ -6904,12 +7062,12 @@ msgstr "" msgid "Overlay Information" msgstr "Nakładane informacje" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "&Odtwórz nagranie wejścia..." -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -6934,7 +7092,7 @@ msgstr "Plik graficzny PNG (*.png);; All Files (*)" msgid "PPC Size" msgstr "Rozmiar PPC" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6951,7 +7109,7 @@ msgstr "Pady" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6960,23 +7118,23 @@ msgstr "" msgid "Parsing Error" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "" @@ -6997,7 +7155,7 @@ msgid "Path:" msgstr "" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Ścieżki" @@ -7005,7 +7163,7 @@ msgstr "Ścieżki" msgid "Pause" msgstr "Wstrzymaj" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "Wstrzymaj na końcu filmu" @@ -7028,11 +7186,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Oświetlenie na piksel" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "" @@ -7042,23 +7200,23 @@ msgstr "" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "" @@ -7071,7 +7229,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Platforma" @@ -7091,16 +7249,16 @@ msgstr "Odtwórz nagranie" msgid "Playback Options" msgstr "Opcje odtwarzania" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Gracze" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7111,29 +7269,29 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "Port %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "Port:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Efekt przetwarzania końcowego:" @@ -7145,15 +7303,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "Wstępnie pobieraj dostosowane tekstury" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7192,7 +7350,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7203,15 +7361,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7219,25 +7377,25 @@ msgstr "" msgid "Problem" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Profil" @@ -7251,15 +7409,15 @@ msgstr "Licznik programu" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7271,11 +7429,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "" @@ -7285,12 +7443,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Pytanie" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Zamknij" @@ -7310,11 +7468,11 @@ msgstr "R-Analog" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7327,44 +7485,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Zasięg" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "Odczyt i zapis" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "" @@ -7372,11 +7530,11 @@ msgstr "" msgid "Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Prawdziwy Balance Board" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "Prawdziwy Wiilot" @@ -7389,11 +7547,11 @@ msgstr "Wyśrodkuj" msgid "Record" msgstr "Nagranie" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7418,7 +7576,7 @@ msgstr "Czerwony lewo" msgid "Red Right" msgstr "Czerwony prawo" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7434,16 +7592,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Odśwież" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7451,26 +7609,26 @@ msgstr "" msgid "Refresh Game List" msgstr "Odśwież listę gier" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Region" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "Region:" @@ -7490,16 +7648,16 @@ msgstr "" msgid "Remind Me Later" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Usuń" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7522,8 +7680,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "" @@ -7556,29 +7714,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Zresetuj" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7586,15 +7752,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "Zresetuj wszystkie zapisane sparowania Wiilotów" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7606,11 +7772,11 @@ msgstr "Wymagane ponowne uruchomienie" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Ponów" @@ -7619,7 +7785,7 @@ msgstr "Ponów" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7677,11 +7843,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "ID pokoju" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7690,12 +7856,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7705,11 +7872,11 @@ msgstr "" msgid "Rumble" msgstr "Wibracje" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7717,15 +7884,15 @@ msgstr "" msgid "Russia" msgstr "Rosja" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "Ścieżka karty SD:" @@ -7741,7 +7908,7 @@ msgstr "" msgid "SHA-1:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "" @@ -7755,11 +7922,11 @@ msgstr "" msgid "START" msgstr "START" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "Z&apisz stan" @@ -7769,7 +7936,7 @@ msgid "Safe" msgstr "Bezpieczny" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7782,7 +7949,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7803,11 +7970,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7819,7 +7986,7 @@ msgstr "Zapisz najstarszy stan" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7869,23 +8036,23 @@ msgstr "Zapisz stan Slot 8" msgid "Save State Slot 9" msgstr "Zapisz stan Slot 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "Zapisz stan do pliku" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "Zapisz stan w najstarszym slocie" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "Zapisz stan we wybranym slocie" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "Zapisz stan w slocie" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "" @@ -7893,7 +8060,7 @@ msgstr "" msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "Zapisz i wczytaj stan" @@ -7905,26 +8072,26 @@ msgstr "" msgid "Save as..." msgstr "Zapisz jako..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "" @@ -7932,7 +8099,7 @@ msgstr "" msgid "Save to Selected Slot" msgstr "Zapisz we wybranym slocie" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "Zapisz w slocie %1 - %2" @@ -7940,23 +8107,23 @@ msgstr "Zapisz w slocie %1 - %2" msgid "Save..." msgstr "Zapisz..." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Skalowana kopia EFB" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7964,36 +8131,36 @@ msgstr "" msgid "ScrShot" msgstr "Zrzut ekranu" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Szukaj" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "Szukaj adresu" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "Przeszukaj aktualny obiekt" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Przeszukuj podfoldery" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "" @@ -8001,7 +8168,7 @@ msgstr "" msgid "Search games..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "" @@ -8025,28 +8192,28 @@ msgstr "Sekcja zawierająca większość ustawień dotyczących procesora i sprz msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Wybierz" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "Wybierz ścieżkę zrzutu" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -8054,11 +8221,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -8066,7 +8233,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "Wybierz slot %1 - %2" @@ -8074,7 +8241,7 @@ msgstr "Wybierz slot %1 - %2" msgid "Select State" msgstr "Wybierz stan" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Wybierz slot stanu" @@ -8118,41 +8285,45 @@ msgstr "Wybierz slot stanu 8" msgid "Select State Slot 9" msgstr "Wybierz slot stanu 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "Wybierz ścieżkę" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "Wybierz plik" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "Wybierz grę" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "" @@ -8160,11 +8331,11 @@ msgstr "" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8172,12 +8343,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Wybierz plik do zapisu" @@ -8193,15 +8364,15 @@ msgstr "" msgid "Selected Font" msgstr "Wybierz czcionkę" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "Wybrany profil kontrolera nie istnieje" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8225,7 +8396,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8265,11 +8436,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Wyślij" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Pozycja Sensor Baru:" @@ -8281,56 +8452,64 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "Ustaw PC" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8340,7 +8519,7 @@ msgstr "" "gier PAL.\n" "Może nie działać z niektórymi grami." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Ustawia język systemu Wii." @@ -8350,7 +8529,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8387,11 +8566,11 @@ msgstr "" "Skraca czas ładowania, ale może zepsuć niektóre gry. Może mieć negatywny " "wpływ na wydajność. Domyślnie Fałsz" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Pokaż &log" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Pokaż pasek &narzędzi" @@ -8399,15 +8578,15 @@ msgstr "Pokaż pasek &narzędzi" msgid "Show Active Title in Window Title" msgstr "Pokazuj aktywny tytuł w tytule okna" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Pokaż Australię" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "Pokazuj aktualną grę w programie Discord" @@ -8415,7 +8594,7 @@ msgstr "Pokazuj aktualną grę w programie Discord" msgid "Show Debugging UI" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "Pokaż ELF/DOL" @@ -8423,43 +8602,43 @@ msgstr "Pokaż ELF/DOL" msgid "Show FPS" msgstr "Pokazuj kl./s" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Pokazuj licznik klatek" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Pokaż Francję" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "Pokaż GameCube'a" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Pokaż Niemcy" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Pokaż wejścia ekranu" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Pokaż Włochy" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Pokaż Koreę" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Pokaż licznik lagów" @@ -8467,7 +8646,7 @@ msgstr "Pokaż licznik lagów" msgid "Show Language:" msgstr "Pokaż język:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Pokaż &konfigurację logu" @@ -8479,7 +8658,7 @@ msgstr "Pokazuj wiadomości NetPlay" msgid "Show NetPlay Ping" msgstr "Pokazuj ping NetPlay" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Pokaż Holandię" @@ -8487,7 +8666,7 @@ msgstr "Pokaż Holandię" msgid "Show On-Screen Display Messages" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Pokaż PAL" @@ -8496,23 +8675,23 @@ msgstr "Pokaż PAL" msgid "Show PC" msgstr "Pokaż PC" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Pokaż platformy" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Pokaż regiony" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Pokaż Rosję" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "Pokaż Hiszpanię" @@ -8521,46 +8700,50 @@ msgstr "Pokaż Hiszpanię" msgid "Show Statistics" msgstr "Pokazuj statystyki" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "Pokaż zegar systemowy" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Pokaż Tajwan" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Pokaż USA" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Pokaż nieznane" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "Pokaż WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Pokaż Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Pokaż świat" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8592,7 +8775,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Obok siebie" @@ -8608,16 +8791,31 @@ msgstr "" msgid "Sideways Wii Remote" msgstr "Wiilot trzymany poziomo" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Chiński uproszczony" @@ -8625,7 +8823,7 @@ msgstr "Chiński uproszczony" msgid "Simulate DK Bongos" msgstr "Symuluj Bongosy DK" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8652,7 +8850,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "Pomijaj dostęp EFB z CPU" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "Pomijaj menu główne" @@ -8660,7 +8858,7 @@ msgstr "Pomijaj menu główne" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8674,19 +8872,19 @@ msgstr "" msgid "Slider Bar" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Slot A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Slot B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "" @@ -8704,7 +8902,7 @@ msgstr "" msgid "Software Renderer" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8723,11 +8921,11 @@ msgstr "" "Sprawdź proszę zaznaczone wartości." #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "" @@ -8740,8 +8938,8 @@ msgid "Spain" msgstr "Hiszpania" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Hiszpański" @@ -8749,7 +8947,7 @@ msgstr "Hiszpański" msgid "Speaker Pan" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Poziom głośnika:" @@ -8784,7 +8982,7 @@ msgstr "" msgid "Speed up Disc Transfer Rate" msgstr "Przyspiesz szybkość transmisji dysku" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "Stabilna (raz w roku)" @@ -8796,16 +8994,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Standardowy kontroler" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Start" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "Uruchom &NetPlay..." @@ -8813,11 +9011,13 @@ msgstr "Uruchom &NetPlay..." msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "&Rozpocznij nagrywanie wejścia" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Rozpocznij nagrywanie" @@ -8833,7 +9033,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "" @@ -8844,7 +9044,7 @@ msgstr "" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Kierownica" @@ -8872,19 +9072,19 @@ msgstr "" msgid "Step Over" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "Wyjście udane!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "Wyjście przekroczyło czas oczekiwania!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "Przekraczanie w toku..." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "Krok wykonany!" @@ -8893,20 +9093,20 @@ msgstr "Krok wykonany!" msgid "Stepping" msgstr "Kroki" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Tryb 3D stereoskopii:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Stereoskopia" @@ -8927,11 +9127,15 @@ msgstr "Gałka" msgid "Stop" msgstr "Zatrzymaj" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "Zatrzymana gra" @@ -8945,7 +9149,7 @@ msgstr "Przechowuj wyłącznie kopie EFB do tekstury" msgid "Store XFB Copies to Texture Only" msgstr "Przechowuj wyłącznie kopie XFB do tekstury" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8954,7 +9158,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8967,7 +9171,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Rozciągnij do okna" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "Ścisła synchronizacja ustawień" @@ -8990,16 +9194,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "Powodzenie" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -9009,11 +9213,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "Pomyślnie usunięto '%1'." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -9022,7 +9226,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "Pliki zapisów zostały pomyślnie wyeksportowane" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "Certyfikaty z NAND zostały pomyślnie wyodrębnione" @@ -9034,12 +9238,12 @@ msgstr "Plik został pomyślnie wyodrębniony." msgid "Successfully extracted system data." msgstr "Dane systemowe zostały pomyślnie wyodrębnione." -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "Ten tytuł został pomyślnie zainstalowany do NAND." @@ -9051,16 +9255,16 @@ msgstr "Usunięcie tego tytułu z NAND zakończono pomyślnie." msgid "Support" msgstr "Wsparcie" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -9068,11 +9272,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Zamień oczy" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9084,50 +9288,62 @@ msgstr "" msgid "Swing" msgstr "Zamach" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "Symbol" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "Symbole" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "Zsynchronizuj prawdziwe Wiiloty i je sparuj" @@ -9141,37 +9357,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Język systemu:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "Wejście TAS" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "Narzędzia TAS" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "" @@ -9189,11 +9405,11 @@ msgstr "" msgid "Taiwan" msgstr "Tajwan" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Zrób zrzut ekranu" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Testuj" @@ -9202,7 +9418,7 @@ msgstr "Testuj" msgid "Texture Cache" msgstr "Bufor tekstur" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9224,7 +9440,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9238,13 +9454,13 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "NAND został naprawiony." @@ -9280,7 +9496,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9294,7 +9510,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "Dysk, który miał być włożony nie mógł zostać odnaleziony." -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9316,19 +9532,19 @@ msgstr "" msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "Wprowadzony PID jest nieprawidłowy." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "Wprowadzony VID jest nieprawidłowy." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9378,7 +9594,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "Dysk gry nie zawiera żadnych użytecznych informacji." -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9389,7 +9605,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9406,7 +9622,7 @@ msgstr "" msgid "The hashes match!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9428,12 +9644,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "Profil '%1' nie istnieje." -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9448,20 +9664,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "Wynikowy odszyfrowany kod AR nie zawiera żadnych linii." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9482,7 +9698,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9533,7 +9749,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "Nie ma nic do cofnięcia!" @@ -9569,7 +9785,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "To urządzenie USB jest już na białej liście." @@ -9589,7 +9805,7 @@ msgstr "" "Ten symulator action replay nie obsługuje kodów, które modyfikują Action " "Replay sam w sobie." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "To nie może być cofnięte!" @@ -9629,7 +9845,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "" @@ -9647,27 +9867,27 @@ msgid "" "or freezes while running this game." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9732,13 +9952,13 @@ msgid "" msgstr "" "Ta wartość zwielokrotnia się z głębią ustawioną w konfiguracji graficznej." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9758,7 +9978,7 @@ msgstr "" msgid "Threshold" msgstr "Próg nacisku" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "" @@ -9775,22 +9995,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Tytuł" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "Do" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "Do:" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "Przełącz pełny &ekran" @@ -9815,7 +10035,7 @@ msgid "Toggle Aspect Ratio" msgstr "Przełącz proporcje obrazu" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "Przełącz punkt przerwania" @@ -9875,14 +10095,20 @@ msgstr "" msgid "Toolbar" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Góra" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Góra-i-dół" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9917,20 +10143,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Chiński tradycyjny" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "Serwer przejściowy" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "" @@ -9960,20 +10186,12 @@ msgstr "Spusty" msgid "Type" msgstr "Typ" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9990,9 +10208,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -10020,10 +10238,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10040,7 +10262,11 @@ msgid "" "Would you like to ignore this line and continue parsing?" msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -10052,15 +10278,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "Nieskompresowane obrazy gier GC/Wii (*.iso *.gcm)" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Cofnij wczytywanie stanu" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Cofnij zapisywanie stanu" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "" @@ -10074,18 +10300,18 @@ msgid "" "title from the NAND without deleting its save data. Continue?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "Stany Zjednoczone" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Nieznany" @@ -10093,7 +10319,7 @@ msgstr "Nieznany" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10103,7 +10329,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10113,15 +10339,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10129,19 +10355,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10149,7 +10375,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Nieograniczona szybkość" @@ -10165,13 +10391,28 @@ msgstr "" msgid "Unpacking" msgstr "Rozpakowywanie" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10180,7 +10421,7 @@ msgstr "Góra" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Aktualizuj" @@ -10235,7 +10476,7 @@ msgstr "" msgid "Upright Wii Remote" msgstr "Wiilot trzymany pionowo" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "Ustawienia raportowania statystyk użytkowania" @@ -10251,7 +10492,7 @@ msgstr "Używaj dostosowanego stylu użytkownika" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "Użyj trybu PAL60 (EuRGB60)" @@ -10277,18 +10518,40 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "Użyj jednego buforu głębi dla obu oczu. Wymagane dla niektórych gier." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "" @@ -10301,18 +10564,18 @@ msgstr "Interfejs użytkownika" msgid "User Style:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10338,23 +10601,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10367,7 +10630,7 @@ msgstr "Narzędzia" msgid "V-Sync" msgstr "Synchronizacja pionowa" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Wartość" @@ -10400,8 +10663,8 @@ msgstr "" msgid "Verifying" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "" @@ -10437,7 +10700,7 @@ msgstr "Wyświetl &pamięć" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10464,7 +10727,7 @@ msgstr "Zwiększ głośność" msgid "Vulkan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "Pliki WAD (*.wad)" @@ -10512,7 +10775,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10520,8 +10783,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10543,7 +10806,7 @@ msgid "" "unsure, leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10556,10 +10819,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Ostrzeżenie" @@ -10575,28 +10838,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10622,7 +10885,7 @@ msgstr "" msgid "Watch" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "" @@ -10651,11 +10914,11 @@ msgid "" "unsure, leave this checked.
" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "Zezwolone urządzenia przejściowe USB" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Hak szerokiego ekranu" @@ -10671,11 +10934,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Menu Wii" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Źródło Wii NAND:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Wiilot" @@ -10683,8 +10946,8 @@ msgstr "Wiilot" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "Wii Pilot %1" @@ -10697,11 +10960,11 @@ msgstr "" msgid "Wii Remote Orientation" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Ustawienia Wii Pilota" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Wiiloty" @@ -10717,7 +10980,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "Wii i Wiilot" @@ -10725,7 +10988,7 @@ msgstr "Wii i Wiilot" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "Pliki zapisu Wii (*.bin);Wszystkie pliki (*)" @@ -10753,18 +11016,18 @@ msgid "World" msgstr "Świat" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "" @@ -10777,12 +11040,12 @@ msgid "Write to File" msgstr "Zapisz do pliku" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "" @@ -10790,7 +11053,7 @@ msgstr "" msgid "Write to Window" msgstr "Wpisz do okna" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10801,7 +11064,7 @@ msgstr "" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "Rejestr XF" @@ -10830,8 +11093,8 @@ msgid "Yellow" msgstr "Żółty" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "Tak" @@ -10866,7 +11129,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10895,11 +11158,11 @@ msgstr "" msgid "You have to enter a name." msgstr "Musisz wprowadzić nazwę." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10907,7 +11170,7 @@ msgstr "" msgid "You must restart Dolphin in order for the change to take effect." msgstr "Musisz ponownie uruchomić program Dolphin, aby zastosować zmianę." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "Musisz wybrać grę do hostowania!" @@ -10938,23 +11201,23 @@ msgstr "Kod 3 zero niewspierany" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10973,13 +11236,13 @@ msgstr "" msgid "d3d12.dll could not be loaded." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -10995,31 +11258,31 @@ msgstr "" msgid "fake-completion" msgstr "fałszywe-ukończenie‭‭" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -11049,7 +11312,7 @@ msgstr "" msgid "on" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "lub wybierz urządzenie" @@ -11058,7 +11321,7 @@ msgstr "lub wybierz urządzenie" msgid "s" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "ta wartość:" @@ -11067,7 +11330,7 @@ msgstr "ta wartość:" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -11086,7 +11349,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -11105,7 +11368,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11113,7 +11376,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Languages/po/pt.po b/Languages/po/pt.po index 10dd05e6d049..948d15a1e1b7 100644 --- a/Languages/po/pt.po +++ b/Languages/po/pt.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Zilaan , 2011\n" "Language-Team: Portuguese (http://www.transifex.com/delroth/dolphin-emu/" "language/pt/)\n" "Language: pt\n" @@ -20,7 +20,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -28,7 +28,7 @@ msgid "" "problems that Dolphin is unable to detect." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -36,7 +36,7 @@ msgid "" "that it hasn't been tampered with." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -52,7 +52,7 @@ msgstr "" msgid " (Disc %1)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "" @@ -60,7 +60,7 @@ msgstr "" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -74,7 +74,7 @@ msgstr "" msgid "%" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -88,17 +88,17 @@ msgstr "" msgid "%1 %" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "" @@ -117,7 +117,7 @@ msgid "%1 (Revision %3)" msgstr "" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -154,7 +154,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "" @@ -165,23 +165,23 @@ msgid "" "Current Frame: %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -190,11 +190,11 @@ msgstr "" msgid "%1 ms" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "" @@ -206,15 +206,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -230,30 +230,30 @@ msgstr "" msgid "%1[%2]: %3/%4 MiB" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "" @@ -273,7 +273,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "" @@ -282,11 +282,11 @@ msgid "&Add Memory Breakpoint" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "" @@ -294,19 +294,19 @@ msgstr "" msgid "&Add..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "" @@ -314,11 +314,11 @@ msgstr "" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Pontos de partida" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "" @@ -326,15 +326,15 @@ msgstr "" msgid "&Cancel" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "" @@ -342,7 +342,7 @@ msgstr "" msgid "&Clone..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "" @@ -350,19 +350,20 @@ msgstr "" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "" @@ -374,7 +375,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "" @@ -382,11 +383,11 @@ msgstr "" msgid "&Edit..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulação" @@ -398,43 +399,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Ficheiro" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "&Avançar Quadro" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "&Definições Gráficas" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Ajuda" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "&Definições de Teclas de Atalho" @@ -446,11 +451,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "" @@ -458,7 +463,7 @@ msgstr "" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -466,23 +471,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&Carregar Estado" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Memória" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "" @@ -490,7 +495,7 @@ msgstr "" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "" @@ -498,24 +503,24 @@ msgstr "" msgid "&No" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Abrir..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Opções" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Pausa" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Começar" @@ -523,11 +528,11 @@ msgstr "&Começar" msgid "&Properties" msgstr "&Propriedades" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Registos" @@ -536,24 +541,24 @@ msgid "&Remove" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Reset" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "" @@ -561,11 +566,11 @@ msgstr "" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Parar" @@ -573,11 +578,11 @@ msgstr "&Parar" msgid "&Theme:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Ferramentas" @@ -585,17 +590,17 @@ msgstr "&Ferramentas" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Ver" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "" @@ -607,11 +612,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" @@ -623,7 +628,7 @@ msgstr "" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(desligado)" @@ -631,34 +636,34 @@ msgstr "(desligado)" msgid "(ppc)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" @@ -666,6 +671,10 @@ msgstr "" msgid "128 Mbit (2043 blocks)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "" @@ -674,35 +683,35 @@ msgstr "" msgid "16-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "" @@ -714,25 +723,25 @@ msgstr "" msgid "32-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "" @@ -746,28 +755,32 @@ msgstr "" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "" @@ -775,29 +788,33 @@ msgstr "" msgid "64 Mbit (1019 blocks)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "" @@ -806,25 +823,25 @@ msgstr "" msgid "8-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "" @@ -843,12 +860,12 @@ msgid "" "Notes:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "" @@ -866,17 +883,17 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" @@ -885,7 +902,7 @@ msgstr "" msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -909,8 +926,8 @@ msgstr "" msgid "AR Codes" msgstr "Códigos AR" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "" @@ -933,7 +950,7 @@ msgstr "" msgid "Accuracy:" msgstr "Precisão:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "" @@ -1029,9 +1046,9 @@ msgstr "" msgid "Adapter:" msgstr "Adaptador:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Adicionar" @@ -1039,11 +1056,11 @@ msgstr "Adicionar" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "" @@ -1075,46 +1092,49 @@ msgstr "" msgid "Add to &watch" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Adicionar..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1158,39 +1178,43 @@ msgstr "Avançadas" msgid "Africa" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "" @@ -1199,25 +1223,25 @@ msgstr "" msgid "All players' saves synchronized." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1243,7 +1267,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "" @@ -1261,39 +1285,39 @@ msgstr "Ângulo" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Filtro Anisotrópico" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Anti-Serrilhamento" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1307,15 +1331,15 @@ msgstr "" msgid "Apply" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "" @@ -1323,11 +1347,11 @@ msgstr "" msgid "Are you sure you want to delete this file?" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "" @@ -1340,11 +1364,11 @@ msgid "Aspect Ratio" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Proporção de ecrã:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "" @@ -1352,7 +1376,7 @@ msgstr "" msgid "Assign Controllers" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1377,7 +1401,7 @@ msgstr "" msgid "Australia" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "" @@ -1389,15 +1413,15 @@ msgstr "" msgid "Auto" msgstr "Automático" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Automático (Multiplo de 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1413,7 +1437,7 @@ msgstr "" msgid "Auto-Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1424,12 +1448,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "" @@ -1444,11 +1468,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "" @@ -1474,7 +1498,7 @@ msgstr "Definições Backend" msgid "Backend:" msgstr "Backend:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Introdução em segundo plano" @@ -1485,7 +1509,13 @@ msgstr "Introdução em segundo plano" msgid "Backward" msgstr "Retroceder" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1493,19 +1523,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Banner" @@ -1529,7 +1560,7 @@ msgstr "" msgid "Basic" msgstr "Básico" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Definições Básicas" @@ -1537,7 +1568,7 @@ msgstr "Definições Básicas" msgid "Bass" msgstr "Baixo" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1545,11 +1576,11 @@ msgstr "" msgid "Battery" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1571,7 +1602,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "" @@ -1584,7 +1615,7 @@ msgstr "" msgid "Blocking" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Blocos" @@ -1607,15 +1638,15 @@ msgid "" "Passthrough mode cannot be used." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "" @@ -1623,7 +1654,7 @@ msgstr "" msgid "Borderless Fullscreen" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Inferior" @@ -1637,7 +1668,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "" @@ -1646,7 +1677,7 @@ msgstr "" msgid "Breakpoint" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" @@ -1676,7 +1707,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1684,12 +1715,12 @@ msgstr "" msgid "Buffer Size:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Buffer:" @@ -1731,11 +1762,11 @@ msgstr "Botões" msgid "C Stick" msgstr "C Stick" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "" @@ -1766,7 +1797,7 @@ msgstr "" msgid "Calculate" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1786,15 +1817,15 @@ msgstr "" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1804,7 +1835,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1812,16 +1843,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "" @@ -1838,23 +1869,23 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "" @@ -1876,7 +1907,7 @@ msgstr "" msgid "Change &Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Mudar &Disco..." @@ -1884,15 +1915,15 @@ msgstr "Mudar &Disco..." msgid "Change Disc" msgstr "Mudar Disco" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1912,7 +1943,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Conversa" @@ -1928,11 +1959,11 @@ msgstr "Procura de Cheats" msgid "Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "" @@ -1946,7 +1977,7 @@ msgid "" "whether it's still in use." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "" @@ -1954,16 +1985,16 @@ msgstr "" msgid "China" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Escolha um ficheiro para abrir" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -1986,14 +2017,14 @@ msgid "Classic Controller" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Limpar" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "" @@ -2010,28 +2041,47 @@ msgstr "" msgid "Close" msgstr "Fechar" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2049,7 +2099,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "" @@ -2062,7 +2112,7 @@ msgstr "" msgid "Compression:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "" @@ -2074,13 +2124,13 @@ msgstr "" msgid "Config" msgstr "Configurar" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Configuração" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2088,21 +2138,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "" @@ -2115,26 +2165,26 @@ msgstr "" msgid "Confirm on Stop" msgstr "Confirmar Ao Parar" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Conectar" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Conectar Teclado USB" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "" @@ -2154,11 +2204,11 @@ msgstr "" msgid "Connect Wii Remote 4" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" @@ -2170,15 +2220,19 @@ msgstr "" msgid "Connected" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "" @@ -2191,7 +2245,7 @@ msgstr "" msgid "Control Stick" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "" @@ -2219,7 +2273,7 @@ msgstr "" msgid "Controllers" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2227,7 +2281,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2236,7 +2290,7 @@ msgid "" "Native.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2261,12 +2315,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "" @@ -2303,33 +2357,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "" @@ -2337,11 +2396,15 @@ msgstr "" msgid "Copy failed" msgstr "Cópia Falhou" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "" @@ -2356,16 +2419,16 @@ msgstr "Core" msgid "Cost" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "" @@ -2444,15 +2507,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2479,7 +2542,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "" @@ -2502,11 +2565,11 @@ msgstr "" msgid "Crossfade" msgstr "Desvanecimento cruzado" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2514,7 +2577,7 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "" @@ -2522,7 +2585,7 @@ msgstr "" msgid "Current thread" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2553,7 +2616,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "" @@ -2581,7 +2644,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2589,11 +2652,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "" @@ -2605,28 +2668,27 @@ msgstr "" msgid "Data Transfer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2644,7 +2706,7 @@ msgid "Debug Only" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Depuração" @@ -2686,7 +2748,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Padrão" @@ -2702,7 +2764,7 @@ msgstr "" msgid "Default Font" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "ISO Padrão:" @@ -2727,7 +2789,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2742,11 +2804,11 @@ msgid "Delete Selected Files..." msgstr "" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2754,21 +2816,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Descrição" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "" @@ -2777,11 +2839,11 @@ msgstr "" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Detectar" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2789,25 +2851,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Dispositivo" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Definições de Dispositivo" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "" @@ -2819,11 +2881,15 @@ msgstr "" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "" @@ -2854,7 +2920,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "" @@ -2866,15 +2932,15 @@ msgstr "" msgid "Disable Emulation Speed Limit" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Desactivar Nevoeiro" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "" @@ -2882,7 +2948,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2896,7 +2962,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2913,11 +2979,15 @@ msgstr "Disco" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2935,25 +3005,25 @@ msgstr "" msgid "Distance of travel from neutral position." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Deseja parar a emulação actual?" @@ -2970,9 +3040,9 @@ msgstr "" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "" @@ -2984,8 +3054,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Dolphin TAS filmes (*.dtm)" @@ -3018,21 +3088,21 @@ msgstr "" msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3047,7 +3117,7 @@ msgstr "" msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "" @@ -3060,24 +3130,26 @@ msgid "Done compressing disc image." msgstr "" #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Baixo" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "" @@ -3085,11 +3157,11 @@ msgstr "" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "" @@ -3112,27 +3184,35 @@ msgstr "" msgid "Dual Core" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Dummy" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Depositar Áudio" @@ -3144,7 +3224,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "Depositar Alvo EFB" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Depositar Quadros" @@ -3156,7 +3236,7 @@ msgstr "" msgid "Dump Objects" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "" @@ -3253,16 +3333,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Holandês" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "S&air" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3274,7 +3354,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3302,7 +3382,7 @@ msgstr "Efeito" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3310,7 +3390,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "" @@ -3322,7 +3402,7 @@ msgstr "" msgid "Embedded Frame Buffer (EFB)" msgstr "" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "" @@ -3330,11 +3410,11 @@ msgstr "" msgid "Emu Thread already running" msgstr "Thread de Emulador já em execução" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "" @@ -3350,8 +3430,12 @@ msgstr "" msgid "Emulation Speed" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3367,7 +3451,7 @@ msgstr "" msgid "Enable Audio Stretching" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Activar Cheats" @@ -3379,7 +3463,7 @@ msgstr "" msgid "Enable Dual Core" msgstr "Activar Dual Core" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Activar Dual Core (aumento de desempenho)" @@ -3405,19 +3489,19 @@ msgid "Enable Progressive Scan" msgstr "Activar Progressive Scan" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Activar Protector de Ecrã" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "" @@ -3443,7 +3527,7 @@ msgid "" "= Compatible, OFF = Fast)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3451,7 +3535,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3481,7 +3565,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3517,7 +3601,7 @@ msgstr "" msgid "Encoding" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3530,12 +3614,12 @@ msgid "Enet Didn't Initialize" msgstr "" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Inglês" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3545,7 +3629,7 @@ msgstr "Melhorias" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "" @@ -3559,11 +3643,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "" @@ -3572,65 +3656,68 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Erro" @@ -3645,19 +3732,19 @@ msgstr "" "Erro ao carregar o idioma seleccionado. Será revertido para o idioma padrão " "do sistema." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3677,7 +3764,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3727,11 +3814,11 @@ msgid "" "may not show fonts correctly, or crash." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3740,11 +3827,39 @@ msgstr "" msgid "Euphoria" msgstr "Euphoria" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3793,14 +3908,14 @@ msgstr "" msgid "Experimental" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Exportar Todos os Jogos Guardados Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3808,15 +3923,15 @@ msgstr "" msgid "Export Recording" msgstr "Exportar Gravação" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Exportar Gravação..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3828,22 +3943,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Extensão" @@ -3856,7 +3971,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3864,7 +3979,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "" @@ -3902,7 +4017,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "Reprodutor FIFO" @@ -3910,17 +4025,17 @@ msgstr "Reprodutor FIFO" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -3932,7 +4047,7 @@ msgstr "" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -3953,12 +4068,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -3970,19 +4085,19 @@ msgstr "" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Falha ao descarregar códigos" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -3991,7 +4106,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "" @@ -4014,29 +4129,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "" @@ -4052,23 +4167,23 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "" @@ -4080,11 +4195,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "" @@ -4095,7 +4210,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "" @@ -4122,11 +4237,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "" @@ -4135,7 +4250,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4147,7 +4262,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4155,25 +4270,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4188,15 +4303,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4204,23 +4319,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4228,11 +4343,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Falha ao escrever BT.DINF para SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4240,22 +4355,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4264,19 +4379,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4289,7 +4404,7 @@ msgstr "Rápido" msgid "Fast Depth Calculation" msgstr "" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4306,7 +4421,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "" @@ -4320,18 +4435,18 @@ msgstr "Informação de Ficheiro" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "" @@ -4339,11 +4454,11 @@ msgstr "" msgid "File Size:" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "O ficheiro não continha códigos." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4357,11 +4472,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4369,15 +4484,15 @@ msgstr "" msgid "Filesystem" msgstr "Sistema de ficheiros" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4385,11 +4500,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "" @@ -4403,18 +4518,22 @@ msgid "" "This can take a while." msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Corrigir Checksums" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4424,13 +4543,14 @@ msgstr "" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "" @@ -4454,7 +4574,7 @@ msgstr "" msgid "Force 16:9" msgstr "Forçar 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "" @@ -4462,15 +4582,15 @@ msgstr "" msgid "Force 4:3" msgstr "Forçar 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Forçar Filtro de Textura" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4480,7 +4600,7 @@ msgid "" "
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4499,21 +4619,21 @@ msgstr "" msgid "Forward" msgstr "Frente" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "" @@ -4542,7 +4662,7 @@ msgstr "" msgid "Frame Range" msgstr "Alcance de Quadros" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4554,19 +4674,19 @@ msgstr "" msgid "France" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4574,7 +4694,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -4982,7 +5102,7 @@ msgstr "Verde Esquerda" msgid "Green Right" msgstr "Verde Direita" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "" @@ -4995,7 +5115,7 @@ msgstr "Guitarra" msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "" @@ -5008,12 +5128,29 @@ msgstr "Hacks" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5025,19 +5162,19 @@ msgstr "" msgid "Hide" msgstr "Esconder" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5055,21 +5192,27 @@ msgstr "" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Host" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5077,7 +5220,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5085,11 +5228,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "" @@ -5101,7 +5244,7 @@ msgstr "" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "" @@ -5152,11 +5295,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "Definições IPL" @@ -5165,7 +5308,7 @@ msgid "IR" msgstr "IV" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "Sensibilidade de Infra Vermelhos" @@ -5187,22 +5330,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Ícone" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5249,7 +5392,7 @@ msgstr "Ignorar Mudanças de Formato" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5257,7 +5400,7 @@ msgid "" "checked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5278,41 +5421,50 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" " Time elapsed: %1s" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5365,8 +5517,8 @@ msgstr "Informação" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Informação" @@ -5375,10 +5527,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Entrada" @@ -5392,16 +5544,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Inserir Cartão SD" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "" @@ -5413,7 +5571,7 @@ msgstr "" msgid "Install Update" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "" @@ -5429,11 +5587,11 @@ msgstr "" msgid "Instruction" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "" @@ -5451,7 +5609,7 @@ msgid "Interface" msgstr "Iinterface" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Erro interno de LZO - compressão falhou" @@ -5460,27 +5618,27 @@ msgstr "Erro interno de LZO - compressão falhou" msgid "Internal LZO Error - decompression failed" msgstr "" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Erro interno de LZO - lzo_init() falhou" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Resolução Interna:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5488,11 +5646,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5500,7 +5658,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5509,15 +5667,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5525,11 +5683,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "" @@ -5542,31 +5700,31 @@ msgstr "" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Ficheiro de Gravação inválido" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "" @@ -5575,8 +5733,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Italiano" @@ -5584,11 +5742,11 @@ msgstr "Italiano" msgid "Italy" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "" @@ -5596,47 +5754,47 @@ msgstr "" msgid "JIT Blocks" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5648,11 +5806,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5663,12 +5821,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japonês" @@ -5688,12 +5846,12 @@ msgstr "" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "" @@ -5706,20 +5864,20 @@ msgstr "" msgid "Keys" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Coreano" @@ -5747,7 +5905,7 @@ msgstr "" msgid "Label" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5827,15 +5985,15 @@ msgstr "" msgid "License" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "" @@ -5844,17 +6002,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Carregar" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "" @@ -5862,7 +6020,7 @@ msgstr "" msgid "Load Custom Textures" msgstr "Carregar Texturas Personalizadas" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "" @@ -5871,7 +6029,7 @@ msgstr "" msgid "Load Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -5964,23 +6122,23 @@ msgstr "Carregar Estado Slot 8" msgid "Load State Slot 9" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "" @@ -5988,12 +6146,12 @@ msgstr "" msgid "Load from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "" @@ -6001,7 +6159,7 @@ msgstr "" msgid "Load..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "" @@ -6012,7 +6170,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "" @@ -6021,7 +6179,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Relatório" @@ -6029,7 +6187,7 @@ msgstr "Relatório" msgid "Log Configuration" msgstr "Configuração de Relatório" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6056,7 +6214,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "" @@ -6085,7 +6243,7 @@ msgstr "" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6095,7 +6253,7 @@ msgstr "Stick Principal" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "" @@ -6104,7 +6262,7 @@ msgstr "" msgid "Maker:" msgstr "Fabricante:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6112,7 +6270,7 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "" @@ -6120,7 +6278,7 @@ msgstr "" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6128,15 +6286,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6145,7 +6303,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "" @@ -6154,11 +6312,11 @@ msgstr "" msgid "Medium" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "" @@ -6166,7 +6324,7 @@ msgstr "" msgid "Memory Card" msgstr "Cartão de memória" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "" @@ -6184,7 +6342,7 @@ msgstr "" msgid "Memory Override" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "" @@ -6200,7 +6358,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6208,13 +6366,13 @@ msgid "" "want to continue?" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "" @@ -6222,19 +6380,19 @@ msgstr "" msgid "Misc" msgstr "Diversos" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Configurações Diversas" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6257,12 +6415,12 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6274,11 +6432,11 @@ msgstr "" msgid "Monospaced Font" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6318,10 +6476,10 @@ msgstr "" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "" @@ -6329,26 +6487,26 @@ msgstr "" msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "" @@ -6360,37 +6518,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Nome:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6398,16 +6556,16 @@ msgstr "" msgid "Netherlands" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "" @@ -6428,11 +6586,11 @@ msgstr "" msgid "New" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "" @@ -6440,7 +6598,7 @@ msgstr "" msgid "New Tag..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "" @@ -6457,7 +6615,7 @@ msgstr "" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6466,17 +6624,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "" @@ -6484,6 +6642,10 @@ msgstr "" msgid "No Adapter Detected" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "" @@ -6494,24 +6656,20 @@ msgstr "" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Nenhuma descrição disponível" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6523,15 +6681,15 @@ msgstr "" msgid "No file loaded / recorded." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "" @@ -6539,11 +6697,15 @@ msgstr "" msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6554,7 +6716,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6562,17 +6724,13 @@ msgstr "" msgid "No save data found." msgstr "" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6582,7 +6740,7 @@ msgstr "Nenhum" msgid "North America" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "" @@ -6590,11 +6748,11 @@ msgstr "" msgid "Not Set" msgstr "Não definido" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6602,7 +6760,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6662,13 +6820,13 @@ msgstr "" msgid "Nunchuk Stick" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6681,11 +6839,11 @@ msgid "Oceania" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Desligado" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6697,17 +6855,17 @@ msgstr "" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "Online e documentação" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6722,7 +6880,7 @@ msgstr "Abrir" msgid "Open &Containing Folder" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "" @@ -6770,7 +6928,7 @@ msgstr "" msgid "OpenGL ES" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6788,7 +6946,7 @@ msgstr "Opções" msgid "Orange" msgstr "Laranja" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6796,7 +6954,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Outro" @@ -6809,11 +6967,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "" @@ -6821,12 +6979,12 @@ msgstr "" msgid "Overlay Information" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "" @@ -6851,7 +7009,7 @@ msgstr "" msgid "PPC Size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6868,7 +7026,7 @@ msgstr "Comandos" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6877,23 +7035,23 @@ msgstr "" msgid "Parsing Error" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "" @@ -6914,7 +7072,7 @@ msgid "Path:" msgstr "" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Caminhos" @@ -6922,7 +7080,7 @@ msgstr "Caminhos" msgid "Pause" msgstr "Pausa" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "" @@ -6945,11 +7103,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Iluminação por Pixel" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "" @@ -6959,23 +7117,23 @@ msgstr "" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "" @@ -6988,7 +7146,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "" @@ -7008,16 +7166,16 @@ msgstr "Tocar Gravação" msgid "Playback Options" msgstr "Opções de Reprodução" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Jogadores" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7028,29 +7186,29 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Efeito de Pós-Processamento" @@ -7062,15 +7220,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7107,7 +7265,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7118,15 +7276,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7134,25 +7292,25 @@ msgstr "" msgid "Problem" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Perfil" @@ -7166,15 +7324,15 @@ msgstr "" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7186,11 +7344,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "" @@ -7200,12 +7358,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Questão" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Sair" @@ -7225,11 +7383,11 @@ msgstr "R-Analógico" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7242,44 +7400,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Alcance" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "" @@ -7287,11 +7445,11 @@ msgstr "" msgid "Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "" @@ -7304,11 +7462,11 @@ msgstr "" msgid "Record" msgstr "Gravar" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7333,7 +7491,7 @@ msgstr "Vermelho Esquerda" msgid "Red Right" msgstr "Vermelho Direita" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7349,16 +7507,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Actualizar" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7366,26 +7524,26 @@ msgstr "" msgid "Refresh Game List" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "" @@ -7405,16 +7563,16 @@ msgstr "" msgid "Remind Me Later" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Remover" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7437,8 +7595,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "" @@ -7471,29 +7629,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Reset" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7501,15 +7667,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7521,11 +7687,11 @@ msgstr "" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "" @@ -7534,7 +7700,7 @@ msgstr "" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7592,11 +7758,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7605,12 +7771,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7620,11 +7787,11 @@ msgstr "" msgid "Rumble" msgstr "Vibração" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7632,15 +7799,15 @@ msgstr "" msgid "Russia" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "" @@ -7656,7 +7823,7 @@ msgstr "" msgid "SHA-1:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "" @@ -7670,11 +7837,11 @@ msgstr "" msgid "START" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "Gua&rdar Estado" @@ -7684,7 +7851,7 @@ msgid "Safe" msgstr "Seguro" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7697,7 +7864,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7718,11 +7885,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7734,7 +7901,7 @@ msgstr "" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7784,23 +7951,23 @@ msgstr "Guardar Estado Slot 8" msgid "Save State Slot 9" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "" @@ -7808,7 +7975,7 @@ msgstr "" msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "" @@ -7820,26 +7987,26 @@ msgstr "" msgid "Save as..." msgstr "Guardar como..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "" @@ -7847,7 +8014,7 @@ msgstr "" msgid "Save to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "" @@ -7855,23 +8022,23 @@ msgstr "" msgid "Save..." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Cópia EFB Escalada" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7879,36 +8046,36 @@ msgstr "" msgid "ScrShot" msgstr "ScrShot" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Procurar em Sub-Pastas" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "" @@ -7916,7 +8083,7 @@ msgstr "" msgid "Search games..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "" @@ -7940,28 +8107,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Seleccionar" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -7969,11 +8136,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -7981,7 +8148,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "" @@ -7989,7 +8156,7 @@ msgstr "" msgid "Select State" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "" @@ -8033,41 +8200,45 @@ msgstr "" msgid "Select State Slot 9" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "" @@ -8075,11 +8246,11 @@ msgstr "" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8087,12 +8258,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Seleccione o ficheiro de jogo guardado" @@ -8108,15 +8279,15 @@ msgstr "" msgid "Selected Font" msgstr "" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8140,7 +8311,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8180,11 +8351,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Enviar" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Posição da Barra de Sensor:" @@ -8196,63 +8367,71 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" "May not work for all games." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "" @@ -8262,7 +8441,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8297,11 +8476,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Mostrar &Relatório" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Mostrar Barra de Ferramen&tas" @@ -8309,15 +8488,15 @@ msgstr "Mostrar Barra de Ferramen&tas" msgid "Show Active Title in Window Title" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "" @@ -8325,7 +8504,7 @@ msgstr "" msgid "Show Debugging UI" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "" @@ -8333,43 +8512,43 @@ msgstr "" msgid "Show FPS" msgstr "Mostrar FPS" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Mostrar França" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "Mostrar GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Mostrar visualização de Entradas" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Mostrar Itália" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Mostrar Coreia" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "" @@ -8377,7 +8556,7 @@ msgstr "" msgid "Show Language:" msgstr "Mostrar Idioma:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Mostrar &Configuração de Relatório" @@ -8389,7 +8568,7 @@ msgstr "" msgid "Show NetPlay Ping" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "" @@ -8397,7 +8576,7 @@ msgstr "" msgid "Show On-Screen Display Messages" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Mostrar Pal" @@ -8406,23 +8585,23 @@ msgstr "Mostrar Pal" msgid "Show PC" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Mostrar Plataformas" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Mostrar Regiões" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "" @@ -8431,46 +8610,50 @@ msgstr "" msgid "Show Statistics" msgstr "Mostrar Estatísticas" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Mostrar Taiwan" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Mostrar EUA" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Mostrar Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8502,7 +8685,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "" @@ -8518,16 +8701,31 @@ msgstr "" msgid "Sideways Wii Remote" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Chinês Simplificado" @@ -8535,7 +8733,7 @@ msgstr "Chinês Simplificado" msgid "Simulate DK Bongos" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8562,7 +8760,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "Ignorar o acesso do EFB a partir do CPU" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "" @@ -8570,7 +8768,7 @@ msgstr "" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8584,19 +8782,19 @@ msgstr "" msgid "Slider Bar" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Slot A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Slot B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "" @@ -8614,7 +8812,7 @@ msgstr "" msgid "Software Renderer" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8631,11 +8829,11 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "" @@ -8648,8 +8846,8 @@ msgid "Spain" msgstr "" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Espanhol" @@ -8657,7 +8855,7 @@ msgstr "Espanhol" msgid "Speaker Pan" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Volume do Altifalante:" @@ -8692,7 +8890,7 @@ msgstr "" msgid "Speed up Disc Transfer Rate" msgstr "Aumente a taxa de transferência do disco" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "" @@ -8704,16 +8902,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Comando padrão" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Começar" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "" @@ -8721,11 +8919,13 @@ msgstr "" msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Começar Gravação" @@ -8741,7 +8941,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "" @@ -8752,7 +8952,7 @@ msgstr "" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "" @@ -8780,19 +8980,19 @@ msgstr "" msgid "Step Over" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "" @@ -8801,20 +9001,20 @@ msgstr "" msgid "Stepping" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "" @@ -8835,11 +9035,15 @@ msgstr "Stick" msgid "Stop" msgstr "Parar" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "" @@ -8853,7 +9057,7 @@ msgstr "" msgid "Store XFB Copies to Texture Only" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8862,7 +9066,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8875,7 +9079,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Ajustar à janela" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "" @@ -8898,16 +9102,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -8917,11 +9121,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -8930,7 +9134,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "" @@ -8942,12 +9146,12 @@ msgstr "" msgid "Successfully extracted system data." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "" @@ -8959,16 +9163,16 @@ msgstr "" msgid "Support" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -8976,11 +9180,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -8992,50 +9196,62 @@ msgstr "" msgid "Swing" msgstr "Balanço" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "" @@ -9049,37 +9265,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Idioma do sistema:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "Entrada TAS" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "" @@ -9097,11 +9313,11 @@ msgstr "" msgid "Taiwan" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Tirar Screenshot" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Teste" @@ -9110,7 +9326,7 @@ msgstr "Teste" msgid "Texture Cache" msgstr "Cache de Textura" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9132,7 +9348,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9146,13 +9362,13 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "" @@ -9188,7 +9404,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9202,7 +9418,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9224,19 +9440,19 @@ msgstr "" msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9286,7 +9502,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9297,7 +9513,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9314,7 +9530,7 @@ msgstr "" msgid "The hashes match!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9336,12 +9552,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9356,20 +9572,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "O resultado do código AR desencriptado não contém quaisquer linhas." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9390,7 +9606,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9441,7 +9657,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "" @@ -9477,7 +9693,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "" @@ -9497,7 +9713,7 @@ msgstr "" "Este simulador de Action Replay não suporta códigos que modifiquem o próprio " "Action Replay" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "" @@ -9537,7 +9753,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "" @@ -9555,27 +9775,27 @@ msgid "" "or freezes while running this game." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9631,13 +9851,13 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9657,7 +9877,7 @@ msgstr "" msgid "Threshold" msgstr "Limite" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "" @@ -9674,22 +9894,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Título" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "Para" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "" @@ -9714,7 +9934,7 @@ msgid "Toggle Aspect Ratio" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "" @@ -9774,14 +9994,20 @@ msgstr "" msgid "Toolbar" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Topo" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9816,20 +10042,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Chinês Tradicional" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "" @@ -9859,20 +10085,12 @@ msgstr "Gatilhos" msgid "Type" msgstr "Tipo" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9889,9 +10107,9 @@ msgstr "" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -9919,10 +10137,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -9939,7 +10161,11 @@ msgid "" "Would you like to ignore this line and continue parsing?" msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -9951,15 +10177,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Retroceder Carregamento de Estado" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "" @@ -9973,18 +10199,18 @@ msgid "" "title from the NAND without deleting its save data. Continue?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Desconhecido" @@ -9992,7 +10218,7 @@ msgstr "Desconhecido" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10002,7 +10228,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10012,15 +10238,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10028,19 +10254,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10048,7 +10274,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "" @@ -10064,13 +10290,28 @@ msgstr "" msgid "Unpacking" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10079,7 +10320,7 @@ msgstr "Cima" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Actualizar" @@ -10134,7 +10375,7 @@ msgstr "" msgid "Upright Wii Remote" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "" @@ -10150,7 +10391,7 @@ msgstr "" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "" @@ -10176,18 +10417,40 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "" @@ -10200,18 +10463,18 @@ msgstr "" msgid "User Style:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10237,23 +10500,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10266,7 +10529,7 @@ msgstr "Utilidade" msgid "V-Sync" msgstr "V-Sync" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Valor" @@ -10299,8 +10562,8 @@ msgstr "" msgid "Verifying" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "" @@ -10336,7 +10599,7 @@ msgstr "" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10363,7 +10626,7 @@ msgstr "" msgid "Vulkan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "" @@ -10411,7 +10674,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10419,8 +10682,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10442,7 +10705,7 @@ msgid "" "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10455,10 +10718,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Aviso" @@ -10474,28 +10737,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10521,7 +10784,7 @@ msgstr "" msgid "Watch" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "" @@ -10550,11 +10813,11 @@ msgid "" "unsure, leave this checked." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Hack de Ecrã Panorâmico" @@ -10570,11 +10833,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Raiz de NAND Wii:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "" @@ -10582,8 +10845,8 @@ msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "" @@ -10596,11 +10859,11 @@ msgstr "" msgid "Wii Remote Orientation" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "" @@ -10616,7 +10879,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "" @@ -10624,7 +10887,7 @@ msgstr "" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "" @@ -10652,18 +10915,18 @@ msgid "World" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "" @@ -10676,12 +10939,12 @@ msgid "Write to File" msgstr "Escrever para Ficheiro" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "" @@ -10689,7 +10952,7 @@ msgstr "" msgid "Write to Window" msgstr "Escrever para a Janela" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10700,7 +10963,7 @@ msgstr "" msgid "X" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "" @@ -10729,8 +10992,8 @@ msgid "Yellow" msgstr "Amarelo" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "" @@ -10765,7 +11028,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10794,11 +11057,11 @@ msgstr "" msgid "You have to enter a name." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10806,7 +11069,7 @@ msgstr "" msgid "You must restart Dolphin in order for the change to take effect." msgstr "Tem que reiniciar o Dolphin para que as alterações sejam efectuadas" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "" @@ -10837,23 +11100,23 @@ msgstr "Código Zero 3 não é suportado" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10872,13 +11135,13 @@ msgstr "" msgid "d3d12.dll could not be loaded." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -10894,31 +11157,31 @@ msgstr "" msgid "fake-completion" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -10948,7 +11211,7 @@ msgstr "" msgid "on" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "" @@ -10957,7 +11220,7 @@ msgstr "" msgid "s" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -10966,7 +11229,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -10985,7 +11248,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -11004,7 +11267,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11012,7 +11275,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Languages/po/pt_BR.po b/Languages/po/pt_BR.po index 39f237976b36..080f0c22697a 100644 --- a/Languages/po/pt_BR.po +++ b/Languages/po/pt_BR.po @@ -24,7 +24,7 @@ # Guilherme Dias, 2017-2018 # Guilherme Dias, 2018-2021 # Runo , 2013 -# Igor Rückert, 2020-2021 +# Igor Rückert, 2020-2022 # Igor Rückert, 2015-2020 # JohnCorsi , 2018 # João Almeida , 2020 @@ -46,9 +46,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-19 02:32+0000\n" -"Last-Translator: Mateus B. Cassiano \n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Runo , 2013\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/delroth/dolphin-" "emu/language/pt_BR/)\n" "Language: pt_BR\n" @@ -57,7 +57,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -69,7 +69,7 @@ msgstr "" "Como as imagens de disco do GameCube contém poucos dados de verificação, " "podem existir problemas que o Dolphin não consegue detectar." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -81,7 +81,7 @@ msgstr "" "Como esse software do Wii não é destinado a consoles vendidos no varejo, o " "Dolphin não pode verificar se ele não foi adulterado." -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -105,7 +105,7 @@ msgstr "" msgid " (Disc %1)" msgstr " (Disco %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "! Não" @@ -113,7 +113,7 @@ msgstr "! Não" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "\"{0}\" é um arquivo GCM/ISO inválido ou não é uma ISO de GC/Wii." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "$ Variável do Usuário" @@ -127,7 +127,7 @@ msgstr "$ Variável do Usuário" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "% Módulo" @@ -143,17 +143,17 @@ msgstr "" msgid "%1 %" msgstr "%1%" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "%1 %2" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "%1 %2 %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -172,7 +172,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (Revisão %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "%1 (Padrão)" @@ -212,7 +212,7 @@ msgstr "%1 MB (MEM2)" msgid "%1 doesn't support this feature on your system." msgstr "O backend %1 não é compatível com esse recurso no seu sistema." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "O backend %1 não é compatível com esse recurso." @@ -226,23 +226,23 @@ msgstr "" "%2 objeto(s)\n" "Quadro Atual: %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "%1 entrou" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "%1 saiu" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "%1 não é uma ROM válida" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "%1 assumiu controle do golfe" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "%1 alcances da memória" @@ -251,11 +251,11 @@ msgstr "%1 alcances da memória" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "%1 sessão encontrada" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "%1 sessões encontradas" @@ -267,15 +267,15 @@ msgstr "%1%" msgid "%1% (%2 MHz)" msgstr "%1% (%2 MHz)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (Velocidade Normal)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "%1, %2, %3, %4" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "%1: %2" @@ -291,30 +291,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2]: %3/%4 MiB" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "%1x Nativa (%2x%3)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "%n endereço(s) não puderam ser acessados na memória emulada." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "%n endereço(s) restante(s)." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "%n endereço(s) removido(s)." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "& E" @@ -334,7 +334,7 @@ msgstr "&3x" msgid "&4x" msgstr "&4x" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&Sobre" @@ -343,11 +343,11 @@ msgid "&Add Memory Breakpoint" msgstr "&Adicionar Ponto de Interrupção" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "&Adicionar Novo Código..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "&Adicionar função" @@ -355,31 +355,31 @@ msgstr "&Adicionar função" msgid "&Add..." msgstr "&Adicionar..." -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "Configurações de &Som" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "C&anal:" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "&Início Automático" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "Iniciar de um &Disco de Backup" #: Source/Core/DolphinQt/GBAWidget.cpp:437 msgid "&Borderless Window" -msgstr "&Janela sem Borda" +msgstr "Janela Sem &Bordas" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Pontos de Interrupção" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "&Bug Tracker" @@ -387,23 +387,23 @@ msgstr "&Bug Tracker" msgid "&Cancel" msgstr "&Cancelar" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "Gerenciador de &Cheats" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "Verificar &Atualizações..." -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "&Limpar Símbolos" #: Source/Core/DolphinQt/Config/PatchesWidget.cpp:161 msgid "&Clone..." -msgstr "&Clonar..." +msgstr "&Duplicar..." -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "&Código" @@ -411,21 +411,22 @@ msgstr "&Código" msgid "&Connected" msgstr "&Conectado" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "Configurações de &Controles" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "&Copiar endereço" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "&Criar..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" -msgstr "&Apagar" +msgstr "E&xcluir" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. @@ -435,7 +436,7 @@ msgstr "&Apagar Observação" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "&Editar Código..." @@ -443,11 +444,11 @@ msgstr "&Editar Código..." msgid "&Edit..." msgstr "&Editar..." -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "&Ejetar Disco" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulação" @@ -457,45 +458,49 @@ msgstr "&Exportar Jogo Salvo..." #: Source/Core/DolphinQt/GBAWidget.cpp:417 msgid "&Export State..." -msgstr "&Exportar o State..." +msgstr "&Exportar Estado Salvo..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "&Exportar como .gci..." -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Arquivo" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&Fonte..." -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "A&vançar Quadro" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "&Configurações do Olhar Livre" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "&Gerar Símbolos De" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "Repositório no &GitHub" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "&Ir pro início da função" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "Configurações de &Gráficos" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "Aj&uda" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "Configurações das &Teclas de Atalho" @@ -505,13 +510,13 @@ msgstr "&Importar Jogo Salvo..." #: Source/Core/DolphinQt/GBAWidget.cpp:414 msgid "&Import State..." -msgstr "&Estado da Importação..." +msgstr "&Importar Estado Salvo..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "&Importar..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "&Inserir blr" @@ -519,7 +524,7 @@ msgstr "&Inserir blr" msgid "&Interframe Blending" msgstr "&Mistura do Interframe" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -527,23 +532,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "&Idioma:" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "Carregar Estado Salvo" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "&Carregar o Mapa dos Símbolos" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "B&loquear Widgets" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Memória" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "&Gravação" @@ -551,7 +556,7 @@ msgstr "&Gravação" msgid "&Mute" msgstr "Ativar &Mudo" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "&Rede" @@ -559,24 +564,24 @@ msgstr "&Rede" msgid "&No" msgstr "&Não" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "A&brir..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Opções" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "&Funções HLE do Patch" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "P&ausar" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "Inici&ar" @@ -584,11 +589,11 @@ msgstr "Inici&ar" msgid "&Properties" msgstr "&Propriedades" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "Modo &Somente Leitura" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Registradores" @@ -597,24 +602,24 @@ msgid "&Remove" msgstr "&Remover" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "&Remover Código" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "&Renomear Símbolo" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Reiniciar" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "Gerenciador de Pacotes de &Recursos" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "&Salvar Mapa dos Símbolos" @@ -622,11 +627,11 @@ msgstr "&Salvar Mapa dos Símbolos" msgid "&Scan e-Reader Card(s)..." msgstr "&Escanear Cartões do e-Reader..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "&Limite de Velocidade:" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Parar" @@ -634,29 +639,29 @@ msgstr "&Parar" msgid "&Theme:" msgstr "&Tema:" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "&Threads" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Ferramentas" #: Source/Core/DolphinQt/GBAWidget.cpp:392 msgid "&Unload ROM" -msgstr "&Descarregar a ROM" +msgstr "&Fechar ROM" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Visualizar" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "A&ssistir" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Website" @@ -668,11 +673,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "&Sim" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "'%1\" não foi encontrado, nenhum nome de símbolo foi gerado" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "'%1' não foi encontrado, ao invés disto escaneando por funções comuns" @@ -684,7 +689,7 @@ msgstr "(Nenhum)" msgid "(host)" msgstr "(host)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(desligado)" @@ -692,34 +697,34 @@ msgstr "(desligado)" msgid "(ppc)" msgstr "(ppc)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "* Multiplicar" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "+ Adicionar" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr ", Vírgula" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "- Subtrair" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "--> %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "/ Dividir" @@ -727,6 +732,10 @@ msgstr "/ Dividir" msgid "128 Mbit (2043 blocks)" msgstr "128 Mbits (2043 blocos)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "16 Bytes" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "16 Mbits (251 blocos)" @@ -735,35 +744,35 @@ msgstr "16 Mbits (251 blocos)" msgid "16-bit" msgstr "16-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "Inteiro de 16 bits (Com Sinal)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "Inteiro de 16 bits (Sem Sinal)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x Nativa (1280x1056) para 720p" @@ -775,25 +784,25 @@ msgstr "32 Mbits (507 blocos)" msgid "32-bit" msgstr "32-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "Float de 32 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "Inteiro de 32 bits (Com Sinal)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "Inteiro de 32 bits (Sem Sinal)" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -807,28 +816,32 @@ msgstr "Profundidade 3D" msgid "3x" msgstr "3x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x Nativa (1920x1584) para 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "4 Bytes" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Mbits (59 blocos)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x Nativa (2560x2112) para 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x Nativa (3200x2640)" @@ -836,29 +849,33 @@ msgstr "5x Nativa (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Mbits (1019 blocos)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "Float de 64 bits" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "Inteiro de 64 bits (Com Sinal)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "Inteiro de 64 bits (Sem Sinal)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x Nativa (3840x3168) para 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x Nativa (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "8 Bytes" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Mbits (123 blocos)" @@ -867,25 +884,25 @@ msgstr "8 Mbits (123 blocos)" msgid "8-bit" msgstr "8-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "Inteiro de 8 bits (Com Sinal)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "Inteiro de 8 bits (Sem Sinal)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x Nativa (5120x4224) para 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "< Menor que" @@ -907,12 +924,12 @@ msgstr "" "disponível para download. Você está executando a versão %2.
Gostaria de " "atualizar?

Notas de Lançamento:

" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "> Maior que" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "Uma sessão do NetPlay já está em progresso!" @@ -936,13 +953,13 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "Um disco já está prestes a ser inserido." -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" "Não é possível carregar um estado salvo sem especificar um jogo para " "executar." -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -950,7 +967,7 @@ msgstr "" "Um desligamento está em andamento. Dados não salvos poderão ser perdidos se " "você parar a emulação atual antes dela ser concluída. Forçar encerramento?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" "Uma sincronização só pode ser acionada quando um jogo de Wii está em " @@ -961,7 +978,7 @@ msgstr "" msgid "AD16" msgstr "AD16" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -996,8 +1013,8 @@ msgstr "Códigos AR" msgid "AR Codes" msgstr "Códigos AR" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -1020,7 +1037,7 @@ msgstr "Acelerômetro" msgid "Accuracy:" msgstr "Precisão:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "Ação" @@ -1118,7 +1135,7 @@ msgstr "Ativo" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:160 msgid "Active thread queue" -msgstr "Fila do thread ativa" +msgstr "Fila do thread ativo" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:175 msgid "Active threads" @@ -1136,9 +1153,9 @@ msgstr "Adaptador Detectado" msgid "Adapter:" msgstr "Adaptador:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Adicionar" @@ -1146,11 +1163,11 @@ msgstr "Adicionar" msgid "Add &breakpoint" msgstr "Adicionar &ponto de interrupção" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "Adicionar Novo Servidor DSU" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "Adicionar Novo Dispositivo USB" @@ -1182,46 +1199,49 @@ msgstr "Adicionar ponto de interrupção da memória" msgid "Add to &watch" msgstr "Adicionar a &observação" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "Adicionar a observação" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Adicionar..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Endereço" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "Espaço do Endereço" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "Espaço do endereço pelo state da CPU" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "Endereço:" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1285,39 +1305,43 @@ msgstr "Avançado" msgid "Africa" msgstr "África" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "Alinhado ao comprimento do tipo de dados" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "Todos os arquivos" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "Todos os arquivos (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "Todos os arquivos do GC/Wii" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "Todos os Estados Salvos (*.sav *.s##);;Todos os arquivos (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "Todos os dispositivos" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "Todos os arquivos (*)" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "Todos os códigos dos jogadores sincronizados." @@ -1326,19 +1350,19 @@ msgstr "Todos os códigos dos jogadores sincronizados." msgid "All players' saves synchronized." msgstr "Todos os saves dos jogadores sincronizados." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "Permitir Configurações de Região Incompatíveis" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "Permitir Envio de Estatísticas de Uso" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "Permitir Gravações no Cartão SD" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." @@ -1346,7 +1370,7 @@ msgstr "" "Permite a manipulação da câmera dentro do jogo.

Se " "não tiver certeza deixe isto desmarcado." -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1366,13 +1390,13 @@ msgstr "Sempre Conectado" #: Source/Core/DolphinQt/GBAWidget.cpp:442 msgid "Always on &Top" -msgstr "Sempre no &Topo" +msgstr "Sempre &Visível" #: Source/Core/Core/HW/DVD/DVDThread.cpp:160 msgid "An inserted disc was expected but not found." msgstr "Era esperado um disco inserido mas não foi achado." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Anáglifo" @@ -1390,39 +1414,39 @@ msgstr "Ângulo" msgid "Angular velocity to ignore and remap." msgstr "Velocidade angular a ignorar e remapear." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "Filtragem Anisotrópica" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Filtragem Anisotrópica:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "Anti-Aliasing" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Anti-Aliasing:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "Qualquer Região" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "Anexar assinatura a" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "Anexar ao &Arquivo de Assinatura Existente..." -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "Apl&icar Arquivo de Assinatura..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1438,15 +1462,15 @@ msgstr "Data do Apploader:" msgid "Apply" msgstr "Aplicar" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "Aplicar arquivo de assinatura" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "Detecção de Mipmaps Arbitrários" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "Tem certeza de que deseja excluir o perfil \"%1\"?" @@ -1454,11 +1478,11 @@ msgstr "Tem certeza de que deseja excluir o perfil \"%1\"?" msgid "Are you sure you want to delete this file?" msgstr "Tem certeza de que deseja excluir este arquivo?" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "Tem certeza de que deseja excluir esse pacote?" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "Você tem certeza que você quer sair do NetPlay?" @@ -1471,11 +1495,11 @@ msgid "Aspect Ratio" msgstr "Proporção de Tela" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Proporção de Tela:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Definir Porta dos Controles" @@ -1483,7 +1507,7 @@ msgstr "Definir Porta dos Controles" msgid "Assign Controllers" msgstr "Designar Controles" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1510,7 +1534,7 @@ msgstr "Configurações do Alongamento de Áudio" msgid "Australia" msgstr "Austrália" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "Autor" @@ -1522,15 +1546,15 @@ msgstr "Autores" msgid "Auto" msgstr "Automática" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Automática (Múltipla de 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "Configurações de Atualização Automática" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1550,7 +1574,7 @@ msgstr "Auto-Ajustar o Tamanho da Janela" msgid "Auto-Hide" msgstr "Ocultar Automaticamente" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "Auto-detectar os módulos do RSO?" @@ -1564,12 +1588,12 @@ msgstr "" "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "Auxiliar" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "B" @@ -1587,11 +1611,11 @@ msgstr "" "válido do Nintendo GameCube deve ser usado. Gere um novo endereço MAC " "iniciando com 00:09:bf ou 00:17:ab." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "BIOS:" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "Registrador BP" @@ -1617,7 +1641,7 @@ msgstr "Configurações do Backend" msgid "Backend:" msgstr "Backend:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Entrada de Dados em Segundo Plano" @@ -1628,7 +1652,13 @@ msgstr "Entrada de Dados em Segundo Plano" msgid "Backward" msgstr "Para trás" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "Valor Ruim Dado" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "Endereço ruim fornecido." @@ -1636,19 +1666,20 @@ msgstr "Endereço ruim fornecido." msgid "Bad dump" msgstr "Cópia com erros" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "Deslocamento ruim fornecido." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "Valor ruim fornecido." #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Banner" @@ -1672,7 +1703,7 @@ msgstr "Prioridade base" msgid "Basic" msgstr "Básico" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Configurações Básicas" @@ -1680,7 +1711,7 @@ msgstr "Configurações Básicas" msgid "Bass" msgstr "Baixo" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" "O modo linha de comando não pode ser usado sem especificar um jogo para " @@ -1690,11 +1721,11 @@ msgstr "" msgid "Battery" msgstr "Bateria" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "Beta (mensalmente)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "BetterJoy, DS4Windows, etc." @@ -1716,7 +1747,7 @@ msgstr "Taxa de Bits (kbps):" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "Tamanho do Bloco" @@ -1729,7 +1760,7 @@ msgstr "Tamanho do Bloco:" msgid "Blocking" msgstr "Bloqueio" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Blocos" @@ -1755,15 +1786,15 @@ msgstr "" "foi compilada sem o libusb. O modo de redirecionamento não pode ser " "utilizado." -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "Do Início até a Pausa" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "Arquivo de backup da NAND do BootMii (*.bin);;Todos os arquivos (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "Arquivo de chaves do BootMii (*.bin);;Todos os arquivos (*)" @@ -1771,7 +1802,7 @@ msgstr "Arquivo de chaves do BootMii (*.bin);;Todos os arquivos (*)" msgid "Borderless Fullscreen" msgstr "Tela Cheia Sem Bordas" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Embaixo" @@ -1785,7 +1816,7 @@ msgid "Branches" msgstr "Vertentes" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "Interrupção" @@ -1794,7 +1825,7 @@ msgstr "Interrupção" msgid "Breakpoint" msgstr "Pontos de Interrupção" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "Ponto de interrupção encontrado! Saída abortada." @@ -1824,7 +1855,7 @@ msgstr "Erro no Adaptador de Banda Larga" msgid "Broadband Adapter MAC Address" msgstr "Endereço MAC do Adaptador de Banda Larga" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "Navegar pelas &Sessões do NetPlay..." @@ -1832,12 +1863,12 @@ msgstr "Navegar pelas &Sessões do NetPlay..." msgid "Buffer Size:" msgstr "Tamanho do Buffer:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "Tamanho do buffer alterado para %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Buffer:" @@ -1882,11 +1913,11 @@ msgstr "Botões" msgid "C Stick" msgstr "Eixo C" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "C&riar Arquivo de Assinatura..." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "Registrador CP" @@ -1921,7 +1952,7 @@ msgstr "" msgid "Calculate" msgstr "Calcular" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1946,15 +1977,15 @@ msgstr "Calibração" msgid "Calibration Period" msgstr "Período de Calibração" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "Lista de exibição de chamadas em %1 com tamanho %2" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "Callstack" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "Câmera 1" @@ -1964,26 +1995,27 @@ msgstr "Câmera 1" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "Campo de visão da câmera (afeta a sensibilidade da pontaria)." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "Só é possível gerar códigos AR para valores na memória virtual." #: Source/Core/Core/IOS/USB/Bluetooth/BTEmu.cpp:1772 msgid "Can't find Wii Remote by connection handle {0:02x}" -msgstr "Não consegue achar o Wii Remote pela manipulação da conexão {0:02x}" +msgstr "" +"Não foi possível encontrar o Wii Remote pelo identificador de conexão {0:02x}" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" -"Não pode iniciar uma Sessão do NetPlay enquanto um jogo ainda está em " +"Não é possível iniciar uma sessão do NetPlay enquanto um jogo está em " "execução!" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "Cancelar" @@ -2002,26 +2034,26 @@ msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" "Não foi possível iniciar esse WAD porque ele não pôde ser instalado na NAND." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "Não consegue comparar com o último valor na primeira busca." -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "Não foi possível encontrar o IPL do GameCube." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "Não é possível gerar um código AR para este endereço." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "Não pode atualizar sem resultados." -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "" -"Não consegue iniciar o jogo porque o IPL do GC não pôde ser encontrado." +"Não foi possível iniciar o jogo porque o IPL do GameCube não foi encontrado." #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:41 msgid "Card Size" @@ -2041,7 +2073,7 @@ msgstr "Centralizar e Calibrar" msgid "Change &Disc" msgstr "Trocar &Disco" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "&Trocar Disco..." @@ -2049,15 +2081,15 @@ msgstr "&Trocar Disco..." msgid "Change Disc" msgstr "Trocar Disco" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "Trocar Discos Automaticamente" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" -msgstr "Trocar o disco pro {0}" +msgstr "Trocar o disco para {0}" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -2086,13 +2118,13 @@ msgstr "Mudar as trapaças só terá efeito quando o jogo for reiniciado." msgid "Channel Partition (%1)" msgstr "Partição do Canal (%1)" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Chat" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:25 msgid "Cheat Code Editor" -msgstr "Editor dos Códigos de Trapaça" +msgstr "Editor de Código de Cheat" #: Source/Core/DolphinQt/CheatsManager.cpp:119 msgid "Cheat Search" @@ -2102,11 +2134,11 @@ msgstr "Pesquisa de Cheats" msgid "Cheats Manager" msgstr "Gerenciador de Cheats" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "Verificar NAND..." -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "Monitorar Alterações na Lista de Jogos em Segundo Plano" @@ -2122,7 +2154,7 @@ msgstr "" "Verifique se você tem as permissões necessárias para excluir o arquivo ou se " "ele ainda está em uso." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "Checksum" @@ -2130,16 +2162,16 @@ msgstr "Checksum" msgid "China" msgstr "China" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Abrir" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "Escolha a prioridade do arquivo de entrada dos dados" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "Escolha o arquivo secundário de entrada dos dados" @@ -2162,14 +2194,14 @@ msgid "Classic Controller" msgstr "Classic Controller" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Limpar" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "Limpar o Cache" @@ -2186,28 +2218,47 @@ msgstr "Duplicar e &Editar Código..." msgid "Close" msgstr "Fechar" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "Co&nfigurações" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Código" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "Ferramenta de Diferenciação do Código" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "Ajuda da Ferramenta de Diferenciação do Código" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "O código não foi executado." + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "O código foi executado" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Código:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "Códigos recebidos!" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "Combinar &Dois Arquivos de Assinatura..." #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "Comum" @@ -2225,7 +2276,7 @@ msgstr "Compilando Shaders" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "Compressão" @@ -2238,7 +2289,7 @@ msgstr "Nível da Compressão:" msgid "Compression:" msgstr "Compressão:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "Condição" @@ -2250,35 +2301,35 @@ msgstr "Condicional" msgid "Config" msgstr "Configurar" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Configurar" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "Configurar" #: Source/Core/DolphinQt/Config/CheatWarningWidget.cpp:43 msgid "Configure Dolphin" -msgstr "Configurar o Dolphin" +msgstr "Abrir Configurações" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "Configurar a Entrada dos Dados" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "Configurar a Saída dos Dados" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "Confirmar" @@ -2291,26 +2342,26 @@ msgstr "Confirmar mudança de backend" msgid "Confirm on Stop" msgstr "Confirmar ao Parar" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "Confirmação" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Conectar" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Conectar/Desconectar Balance Board" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Conectar Teclado USB" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "Wii Remote %1" @@ -2330,11 +2381,11 @@ msgstr "Conectar/Desconectar Wii Remote 3" msgid "Connect Wii Remote 4" msgstr "Conectar/Desconectar Wii Remote 4" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "Conectar Wii Remotes" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "Conectar Wii Remotes aos Controles Emulados" @@ -2346,15 +2397,19 @@ msgstr "Conectar a internet e realizar uma atualização online do sistema?" msgid "Connected" msgstr "Conectado" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "Conectando" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Tipo de Conexão:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "O conteúdo {0:08x} está corrompido." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Escaneamento Contínuo" @@ -2367,7 +2422,7 @@ msgstr "Controlar Modo Golfe do NetPlay" msgid "Control Stick" msgstr "Eixo Principal" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "Perfil do Controle" @@ -2395,7 +2450,7 @@ msgstr "Configuração dos Controles" msgid "Controllers" msgstr "Controles" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2407,7 +2462,7 @@ msgstr "" "alto cria efeitos fora da tela mais fortes enquanto um valor mais baixo é " "mais confortável." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2421,7 +2476,7 @@ msgstr "" "resolução interna, melhor será o desempenho.

Na " "dúvida, selecione \"Nativa (640x528)\"." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2455,12 +2510,12 @@ msgstr "" "Controla se deve usar emulação do DSP de alto ou baixo nível. O padrão é " "True" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "Convergência" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Convergência:" @@ -2502,33 +2557,38 @@ msgstr "" "Convertendo...\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Copiar" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "Copiar &função" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "Copiar &hex" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "Copiar Endereço" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "Falha ao Copiar" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "Copiar Hex" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "Copiar linha de &código" @@ -2536,11 +2596,15 @@ msgstr "Copiar linha de &código" msgid "Copy failed" msgstr "Falha ao copiar" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "Copiar o end&ereço do alvo" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "Copiar para A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "Copiar para B" @@ -2555,16 +2619,16 @@ msgstr "Core" msgid "Cost" msgstr "Custo" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "Não foi possível comunicar-se com o host." -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "Não foi possível criar o cliente." -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "Não foi possível criar o peer." @@ -2679,15 +2743,15 @@ msgstr "" "Se sim, então você pode precisar reespecificar o local do seu arquivo de " "Memory Card nas configurações." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "Não foi possível encontrar o servidor central" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "Não foi possível abrir o arquivo." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "Não foi possível ler o arquivo." @@ -2720,7 +2784,7 @@ msgstr "" "dolphin_emphasis>" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "Autor:" @@ -2746,11 +2810,11 @@ msgstr "" msgid "Crossfade" msgstr "Crossfade" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "Região Atual" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "Valor atual" @@ -2758,7 +2822,7 @@ msgstr "Valor atual" msgid "Current context" msgstr "Contexto atual" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "Jogo atual" @@ -2766,7 +2830,7 @@ msgstr "Jogo atual" msgid "Current thread" msgstr "Thread atual" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "Espaço do Endereço Personalizado" @@ -2799,7 +2863,7 @@ msgstr "O tamanho do arquivo é 0; arquivo corrompido/incompleto?" msgid "DJ Turntable" msgstr "Mesa de DJ" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "DK Bongos" @@ -2827,7 +2891,7 @@ msgstr "Recompilador DSP LLE (lento)" msgid "DSU Client" msgstr "Cliente DSU" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2839,11 +2903,11 @@ msgstr "" "

Para instruções de configuração,
consulte essa página." -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Tapete de Dança" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "Dados" @@ -2855,28 +2919,27 @@ msgstr "Partição de Dados (%1)" msgid "Data Transfer" msgstr "Sincronizando Dados" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "Tipo dos Dados" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "Os dados na área do arquivo que não deveriam ser usados." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "Dados em formato não reconhecido ou corrompido." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "Inconsistência dos dados no GCMemcardManager, abortando ação." -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "Dados recebidos!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "Arquivos do Datel MaxDrive/Pro" @@ -2894,7 +2957,7 @@ msgid "Debug Only" msgstr "Apenas Depuração" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Depuração" @@ -2936,13 +2999,13 @@ msgstr "Diminuir X" msgid "Decrease Y" msgstr "Diminuir Y" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Padrão" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:171 msgid "Default Config (Read Only)" -msgstr "Configuração Padrão (Somente-Leitura)" +msgstr "Configuração Padrão (Somente Leitura)" #: Source/Core/DolphinQt/Settings/AudioPane.cpp:365 msgid "Default Device" @@ -2952,7 +3015,7 @@ msgstr "Dispositivo Padrão" msgid "Default Font" msgstr "Fonte Padrão" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "ISO padrão:" @@ -2983,7 +3046,7 @@ msgstr "" "estabilidade.

Na dúvida, mantenha essa opção " "desativada." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2998,11 +3061,11 @@ msgid "Delete Selected Files..." msgstr "Excluir Arquivos Selecionados..." #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "Excluir o arquivo existente '{0}'?" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "Profundidade" @@ -3010,21 +3073,21 @@ msgstr "Profundidade" msgid "Depth Percentage:" msgstr "Porcentagem da Profundidade:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Profundidade:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Descrição" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Descrição:" @@ -3033,11 +3096,11 @@ msgstr "Descrição:" msgid "Detached" msgstr "Separado" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Detectar" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "Detectando os Módulos do RSO" @@ -3045,25 +3108,25 @@ msgstr "Detectando os Módulos do RSO" msgid "Deterministic dual core:" msgstr "Dual core determinístico:" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "Dev (todos os dias)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Dispositivo" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "PID do Dispositivo (ex.: 0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Configurações do Dispositivo" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "VID do Dispositivo (ex.: 057e)" @@ -3075,13 +3138,17 @@ msgstr "Dispositivo:" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "Não reconheceu %1 como um arquivo XML válido do Riivolution." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "Diferença" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "" "Escurece a tela após 5 minutos de inatividade durante a emulação de " "softwares do Wii." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "Conexão Direta" @@ -3119,7 +3186,7 @@ msgstr "Desativar" msgid "Disable Bounding Box" msgstr "Desativar Bounding Box" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "Desativar Filtro de Cópia" @@ -3131,15 +3198,15 @@ msgstr "Desativar Cópias VRAM do EFB" msgid "Disable Emulation Speed Limit" msgstr "Desativar Limite de Velocidade" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "Desativar Fastmem" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Desativar Névoa" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "Desativar o Cache do JIT" @@ -3147,7 +3214,7 @@ msgstr "Desativar o Cache do JIT" msgid "Disabled" msgstr "Desativado" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -3169,7 +3236,7 @@ msgstr "" "

Na dúvida, mantenha essa opção desativada." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -3191,11 +3258,15 @@ msgstr "Disco" msgid "Discard" msgstr "Descartar" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "Tipo de Exibição" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "Mostrar valores em base hexadecimal" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -3218,27 +3289,27 @@ msgstr "Distância" msgid "Distance of travel from neutral position." msgstr "Distância de viagem da posição neutra." -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" "Você autoriza o Dolphin a reportar informações pros desenvolvedores do " "Dolphin?" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "Você quer adicionar '%1' a lista de caminhos dos jogos?" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "Você quer limpar a lista dos nomes do símbolos?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "Você quer apagar o(s) %n arquivo(s) do(s) save(s) selecionado(s)?" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Deseja parar a emulação atual?" @@ -3255,22 +3326,22 @@ msgstr "Registro do FIFO no Dolphin (*.dff)" msgid "Dolphin Game Mod Preset" msgstr "Pré-definição do Mod do Jogo no Dolphin" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "Arquivo do Mapa do Dolphin (*.map)" #: Source/Core/DolphinQt/MenuBar.cpp:69 msgid "Dolphin Signature CSV File" -msgstr "Arquivo CSV da Assinatura do Dolphin" +msgstr "Arquivo CSV de Assinatura do Dolphin" #: Source/Core/DolphinQt/MenuBar.cpp:69 msgid "Dolphin Signature File" -msgstr "Arquivo da Assinatura do Dolphin" +msgstr "Arquivo de Assinatura do Dolphin" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Gravações TAS do Dolphin (*.dtm)" @@ -3314,11 +3385,11 @@ msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "" "O Dolphin é um emulador de GameCube e Wii grátis e de código fonte aberto." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "Versão do Dolphin é muito antiga para o servidor traversal" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." @@ -3326,11 +3397,11 @@ msgstr "" "O Dolphin não consegue verificar imagens TGC corretamente, pois elas não são " "cópias de discos reais." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "O Dolphin não pode verificar imagens de discos não licenciados." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3347,37 +3418,39 @@ msgstr "O sistema de cheats do Dolphin está desativado no momento." msgid "Domain" msgstr "Domínio" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "Desativar Atualizações" #: Source/Core/DolphinQt/NKitWarningDialog.cpp:53 msgid "Don't show this again" -msgstr "Não mostrar isto de novo" +msgstr "Não mostrar novamente" #: Source/Core/DiscIO/CompressedBlob.cpp:369 msgid "Done compressing disc image." msgstr "Compressão de imagem do disco concluída." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "Dobro" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Para Baixo" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "Baixar Códigos" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "Baixar Códigos da Base de Dados do WiiRD" @@ -3385,13 +3458,13 @@ msgstr "Baixar Códigos da Base de Dados do WiiRD" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "Mostrar Capas de Jogos Baixadas do GameTDB.com no Modo Grade" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "Download completo" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" -msgstr "Baixou %1 códigos. (adicionou %2)" +msgstr "%1 códigos baixados (%2 adicionados)" #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:88 msgid "Drawn Object Range" @@ -3412,27 +3485,35 @@ msgstr "Bateria" msgid "Dual Core" msgstr "Dual Core" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "Visualização Dupla" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Dummy" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "Dumpar" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "Extrair &ARAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "Extrair &ExRAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "Extrair &FakeVMEM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "Extrair &MRAM" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Exportar Áudio" @@ -3444,7 +3525,7 @@ msgstr "Exportar Texturas de Base" msgid "Dump EFB Target" msgstr "Exportar Alvo EFB" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Exportar Quadros" @@ -3456,7 +3537,7 @@ msgstr "Exportar Mip Maps" msgid "Dump Objects" msgstr "Exportar Objetos" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "Exportação:" @@ -3573,16 +3654,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "Duração do Soltar do Botão Turbo (frames):" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Holandês" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "S&air" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "Cópia do EFB %1" @@ -3598,7 +3679,7 @@ msgstr "" "provavelmente será necessário reiniciar o computador para que o Windows " "utilize o novo driver." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3630,7 +3711,7 @@ msgstr "Efeito" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "Efetivo" @@ -3638,7 +3719,7 @@ msgstr "Efetivo" msgid "Effective priority" msgstr "Prioridade efetiva" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "EiB" @@ -3650,7 +3731,7 @@ msgstr "Ejetar Disco" msgid "Embedded Frame Buffer (EFB)" msgstr "Frame Buffer Embutido (EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Vazio" @@ -3658,11 +3739,11 @@ msgstr "Vazio" msgid "Emu Thread already running" msgstr "Thread de Emulação já está em execução" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "Emular o adaptador Bluetooth do Wii" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "Wii Remote Emulado" @@ -3681,8 +3762,12 @@ msgstr "" msgid "Emulation Speed" msgstr "Velocidade de Emulação" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "A emulação deve ser iniciada pra gravar." + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3698,7 +3783,7 @@ msgstr "Ativar Camadas de Validação da API" msgid "Enable Audio Stretching" msgstr "Ativar Alongamento de Áudio" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Ativar Cheats" @@ -3710,7 +3795,7 @@ msgstr "Ativar RTC Personalizado" msgid "Enable Dual Core" msgstr "Ativar Dual Core" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Ativar Dual Core (aumento na velocidade)" @@ -3736,19 +3821,19 @@ msgid "Enable Progressive Scan" msgstr "Ativar Varredura Progressiva" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "Ativar Vibração" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Ativar Proteção de Tela" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Ativar Dados do Auto-Falante" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "Ativar Envio de Estatísticas de Uso" @@ -3780,7 +3865,7 @@ msgstr "" "Ativa o cálculo da Flag de Resultado com Ponto Flutuante, necessária em " "alguns jogos. (ON = Compatível, OFF = Rápido)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3792,7 +3877,7 @@ msgstr "" "em um pequeno número de jogos.

Na dúvida, selecione " "\"1x\"." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3841,7 +3926,7 @@ msgstr "" "Previne picotamentos no áudio causados por variações na velocidade de " "emulação." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3888,7 +3973,7 @@ msgstr "" msgid "Encoding" msgstr "Codificação" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3905,12 +3990,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet Não Inicializou" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Inglês" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3920,7 +4005,7 @@ msgstr "Melhorias" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "Informe o endereço IP do dispositivo executando o cliente XLink Kai:" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "Informe a ID do dispositivo USB" @@ -3934,11 +4019,11 @@ msgstr "Insira o endereço a observar:" msgid "Enter new Broadband Adapter MAC address:" msgstr "Informe o endereço MAC do Adaptador de Banda Larga:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "Inserir senha" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "Insira o endereço do módulo do RSO:" @@ -3947,65 +4032,68 @@ msgstr "Insira o endereço do módulo do RSO:" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Erro" @@ -4018,19 +4106,19 @@ msgstr "Erro ao Abrir o Adaptador: %1" msgid "Error loading selected language. Falling back to system default." msgstr "Erro ao carregar o idioma selecionado. Voltando ao padrão do sistema." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "Erro ao obter a lista da sessão: %1" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "Um erro ocorreu enquanto carregava alguns pacotes de texturas" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "Erro ao processar os códigos." -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "Erro ao processar os dados." @@ -4050,7 +4138,7 @@ msgstr "Erro ao sincronizar os dados do save!" msgid "Error writing file: {0}" msgstr "Erro ao gravar o arquivo: {0}" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -4106,11 +4194,11 @@ msgstr "" "Erro: Tentando acessar as fontes Windows-1252 mas elas não estão carregadas. " "Os jogos podem não mostrar as fontes corretamente ou sofrer um crash." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "Erros foram encontrados em {0} blocos da partição {1}." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "Erros foram encontrados em {0} blocos não utilizados da partição {1}." @@ -4119,11 +4207,56 @@ msgstr "Erros foram encontrados em {0} blocos não utilizados da partição {1}. msgid "Euphoria" msgstr "Euforia" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Europa" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" +"Exemplo:\n" +"Você quer achar uma função que execute quando o HP é modificado.\n" +"1. Comece a gravar e reproduza o jogo sem deixar que o HP ser modificado, " +"então pressione 'O código não foi executado'.\n" +"2. Ganhe/perca imediatamente o HP e pressione 'O código foi executado'.\n" +"3. Repita o 1 ou 2 pra reduzir os resultados.\n" +"Inclui (O código foi executado) deve ter gravações curtas focando no que " +"você quer.\n" +"\n" +"Pressionar 'O código foi executado' duas vezes só manterá as funções que " +"executaram em ambas as gravações. Os acertos serão atualizados pra refletir " +"o número de acertos da última gravação. O total de acertos refletirá o " +"número total de vezes que uma função foi executada até que as listas sejam " +"limpas com o Reset.\n" +"\n" +"Clicar com o botão direito em-> 'Definir blr' colocará um blr no topo do " +"símbolo.\n" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "Excluído: %1" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "Excluído: 0" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "Ubershaders Exclusivos" @@ -4172,14 +4305,14 @@ msgstr "Nome esperado da variável." msgid "Experimental" msgstr "Experimental" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Exportar Todos os Dados Salvos do Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "Falha ao Exportar" @@ -4187,15 +4320,15 @@ msgstr "Falha ao Exportar" msgid "Export Recording" msgstr "Exportar Gravação" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Exportar Gravação..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "Exportar Arquivo de Jogo Salvo" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "Exportar Arquivos de Jogos Salvos" @@ -4207,22 +4340,22 @@ msgstr "Exportar Dados Salvos" msgid "Export Wii Saves" msgstr "Exportar Dados Salvos" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "Exportar como .&gcs..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "Exportar como .&sav..." -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "%n dado(s) salvo(s) exportado(s)" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Acessório" @@ -4235,7 +4368,7 @@ msgstr "Dados de Movimento do Acessório" msgid "Extension Motion Simulation" msgstr "Simulação de Movimentos do Acessório" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "IP Externo" @@ -4243,7 +4376,7 @@ msgstr "IP Externo" msgid "External Frame Buffer (XFB)" msgstr "Frame Buffer Externo (XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "Extrair Certificados da NAND" @@ -4281,7 +4414,7 @@ msgid "FD" msgstr "FD" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "FIFO Player" @@ -4289,7 +4422,7 @@ msgstr "FIFO Player" msgid "Failed loading XML." msgstr "Falha ao carregar o XML." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" @@ -4297,11 +4430,11 @@ msgstr "" "Falha ao abrir o Memory Card:\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "Falha ao adicionar essa sessão ao indexador do NetPlay: %1" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "Falhou em anexar ao arquivo de assinatura '%1'" @@ -4314,7 +4447,7 @@ msgstr "" msgid "Failed to connect to Redump.org" msgstr "Falha na conexão com Redump.org" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "Falha na conexão com o servidor: %1" @@ -4335,14 +4468,14 @@ msgstr "Falha ao criar recursos globais do Direct3D 12" msgid "Failed to create DXGI factory" msgstr "Falha ao criar fábrica DXGI" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" "Falha ao excluir arquivo de jogo salvo do GBA{0} do NetPlay. Verifique suas " "permissões de gravação." -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" "Falha ao excluir Memory Card do NetPlay. Verifique suas permissões de " @@ -4358,19 +4491,19 @@ msgstr "" "Falha ao descarregar o driver do kernel para o redirecionamento Bluetooth: " "{0}" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Falha ao baixar os códigos." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "Falha no despejo de %1: Não foi possível abrir o arquivo" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "Falha no despejo de %1: Falha ao escrever no arquivo" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "Falha ao exportar %n de %1 arquivo(s) de jogo(s) salvo(s)." @@ -4379,7 +4512,7 @@ msgstr "Falha ao exportar %n de %1 arquivo(s) de jogo(s) salvo(s)." msgid "Failed to export the following save files:" msgstr "Falha ao exportar os seguintes dados salvos:" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "Falha ao extrair os certificados da NAND" @@ -4405,18 +4538,18 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "Falha ao localizar um ou mais símbolos do Direct3D" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "Falha ao importar \"%1\"." -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" "Falha ao importar o arquivo de dados salvos. Por favor, inicie o jogo " "correspondente pelo menos uma vez, depois tente novamente." -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." @@ -4424,7 +4557,7 @@ msgstr "" "Falha ao importar o arquivo de dados salvos. O arquivo fornecido pode estar " "corrompido ou não contém dados salvos válidos do Wii." -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " @@ -4435,7 +4568,7 @@ msgstr "" "NAND (Ferramentas -> Gerenciar NAND -> Verificar NAND...) , então importe os " "dados salvos novamente." -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "Falha ao inicializar o núcleo" @@ -4454,16 +4587,16 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "Falha ao inicializar as classes do renderizador" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "Falha ao instalar pacote: %1" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "Falha ao instalar esse software na NAND." -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" @@ -4471,8 +4604,8 @@ msgstr "" "Falha ao acessar a porta %1. Existe outra instância do servidor NetPlay em " "execução?" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "Falhou em carregar o módulo do RSO no %1" @@ -4484,11 +4617,11 @@ msgstr "Falha ao carregar d3d11.dll" msgid "Failed to load dxgi.dll" msgstr "Falha ao carregar dxgi.dll" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "Falhou em carregar o arquivo do mapa '%1'" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "Falha ao carregar o executável para a memória." @@ -4501,7 +4634,7 @@ msgstr "" "pacote de atualização KB4019990." #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "Falha ao abrir '%1'" @@ -4531,11 +4664,11 @@ msgstr "" "Falha ao abrir arquivo em um editor externo.\n" "Verifique se há um aplicativo registrado para abrir arquivos INI." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "Falha ao abrir o arquivo." -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "Falha ao abrir o servidor" @@ -4544,7 +4677,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "Falha ao abrir o arquivo de entrada \"%1\"." #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4559,35 +4692,35 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "Falha ao processar dados do Redump.org" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "Falhou em analisar o valor dado no tipo de dado alvo." #: Source/Core/Core/FifoPlayer/FifoDataFile.cpp:213 msgid "Failed to read DFF file." -msgstr "Falhou em ler o arquivo DFF." +msgstr "Falha na leitura do arquivo DFF." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "Falha ao ler do arquivo." #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." -msgstr "Falhou em ler o arquivo da entrada de dados \"{0}\"." +msgstr "Falha na leitura do arquivo de entrada \"{0}\"." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" "Falha ao ler o(s) arquivo(s) de jogo(s) salvo(s) selecionado(s) do Memory " "Card." -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "Falha ao ler {0}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "Falha ao excluir arquivo." @@ -4605,19 +4738,19 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "Falha ao remover esse software da NAND." -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" "Falha ao redefinir a pasta GCI do NetPlay. Verifique suas permissões de " "gravação." -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" "Falha ao redefinir a pasta NAND do NetPlay. Verifique suas permissões de " "gravação." -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" "Falha ao redefinir a pasta de redirecionamento do NetPlay. Verifique as " @@ -4627,23 +4760,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "Falha ao salvar o log FIFO." -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "Falhou em salvar o mapa dos códigos no caminho '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "Falhou em salvar o arquivo da assinatura '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "Falhou em salvar o mapa dos símbolos no caminho '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "Falhou em salvar o arquivo da assinatura '%1'" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "Falha ao desinstalar pacote: %1" @@ -4651,11 +4784,11 @@ msgstr "Falha ao desinstalar pacote: %1" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Falha ao gravar o BT.DINF no SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "Falha ao salvar dados dos Miis." -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "Falha ao salvar dados salvos do Wii." @@ -4663,22 +4796,22 @@ msgstr "Falha ao salvar dados salvos do Wii." msgid "Failed to write config file!" msgstr "Falha ao salvar o arquivo de configuração!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "Falha ao salvar o Memory Card modificado no disco." -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "Falha ao gravar os dados salvos redirecionados." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "Falha ao salvar arquivo de jogo salvo no disco." #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4689,19 +4822,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "Falha" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "Host Imparcial" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "Configurações de Região" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "Região Padrão:" @@ -4714,7 +4847,7 @@ msgstr "Rápido" msgid "Fast Depth Calculation" msgstr "Cálculo Rápido de Profundidade" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4733,7 +4866,7 @@ msgstr "Detalhes do Arquivo" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "Formato" @@ -4747,18 +4880,18 @@ msgstr "Informações do Arquivo" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Nome do Arquivo" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "Local" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Tamanho" @@ -4766,11 +4899,11 @@ msgstr "Tamanho" msgid "File Size:" msgstr "Tamanho do Arquivo:" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "O arquivo não continha códigos." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "Nome do arquivo" @@ -4786,13 +4919,13 @@ msgstr "" "Os arquivos especificados no arquivo M3U \"{0}\" não foram encontrados:\n" "{1}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" "O tamanho do arquivo não combina com qualquer tamanho conhecido do Memory " "Card do GameCube." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" "O tamanho de arquivo no cabeçalho não corresponde com o tamanho real do " @@ -4802,15 +4935,15 @@ msgstr "" msgid "Filesystem" msgstr "Sistema de Arquivos" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "Filtrar Símbolos" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "Filtros" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4823,17 +4956,17 @@ msgstr "" "

Na dúvida, mantenha essa opção desativada." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "Achar o &Próximo" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "Achar o &Anterior" #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:922 msgid "Finish Calibration" -msgstr "Concluir a Calibração" +msgstr "Concluir Calibração" #: Source/Core/DolphinQt/WiiUpdate.cpp:105 msgid "" @@ -4843,18 +4976,22 @@ msgstr "" "Finalizando atualização...\n" "Isso pode demorar um pouco." -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "Primeira Pessoa" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Corrigir checksums" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "Falhou em Consertar os Checksums" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "Alinhamento Fixo" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4864,13 +5001,14 @@ msgstr "Bandeiras" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "Flutuação" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "Seguir &vertente" @@ -4900,7 +5038,7 @@ msgstr "" msgid "Force 16:9" msgstr "Forçar 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "Forçar Cores de 24 Bits" @@ -4908,15 +5046,15 @@ msgstr "Forçar Cores de 24 Bits" msgid "Force 4:3" msgstr "Forçar 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "Forçar Porta de Escuta:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Forçar Filtragem de Texturas" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4934,7 +5072,7 @@ msgstr "" "Gecko.

Na dúvida, mantenha essa opção desativada." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4958,21 +5096,21 @@ msgstr "Formato:" msgid "Forward" msgstr "Para frente" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Abrir porta (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "%1 resultados encontrados para \"%2\"" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "%n endereço(s) encontrado(s)." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "Quadro %1" @@ -5001,31 +5139,31 @@ msgstr "Exportação de Quadros" msgid "Frame Range" msgstr "Intervalo de Quadros" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "A(s) imagem(ns) do dump do frame '{0}' já existe(m). Sobrescrever?" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:135 msgid "Frames to Record:" -msgstr "Frames a Gravar:" +msgstr "Quadros a Gravar:" #: Source/Core/DiscIO/Enums.cpp:36 msgid "France" msgstr "França" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "Blocos Livres: %1" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "Arquivos Livres: %1" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "Tipo de Controle do Olhar Livre" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "Controle de Olhar Livre %1" @@ -5033,7 +5171,7 @@ msgstr "Controle de Olhar Livre %1" msgid "Free Look Settings" msgstr "Configurações do Olhar Livre" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -5482,7 +5620,7 @@ msgstr "Verde Esquerdo" msgid "Green Right" msgstr "Verde Direito" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "Exibição em Grade" @@ -5495,7 +5633,7 @@ msgstr "Guitarra" msgid "Gyroscope" msgstr "Giroscópio" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5508,13 +5646,30 @@ msgstr "Hacks" msgid "Head" msgstr "Cabeça" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "Ajuda" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" -msgstr "String hexadecimal" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "Hex" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "Hex 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "Hex 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "Hex 8" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" +msgstr "String do Byte Hexadecimal" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 @@ -5525,19 +5680,19 @@ msgstr "Hexadecimal" msgid "Hide" msgstr "Ocultar" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "Ocultar Tudo" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "Esconder Sessões Dentro-do-Jogo" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "Esconder Sessões Incompatíveis" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "Ocultar GBAs Remotos" @@ -5548,28 +5703,34 @@ msgstr "Alto" #: Source/Core/DolphinQt/Settings/AudioPane.cpp:423 msgid "Highest" -msgstr "Mais Alto" +msgstr "Muito Alto" #. i18n: Refers to how hard emulated drum pads are struck. #: Source/Core/Core/HW/WiimoteEmu/Extension/Drums.cpp:65 msgid "Hit Strength" msgstr "Força do Golpe" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "Acertos" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "Campo de Visão Horizontal" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Hospedar" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "Código da Sala:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "Host Autoritário" @@ -5577,7 +5738,7 @@ msgstr "Host Autoritário" msgid "Host Size" msgstr "Tamanho do Hospedeiro" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5590,11 +5751,11 @@ msgstr "" "Adequado para jogos casuais com mais de 3 jogadores, possivelmente em " "conexões instáveis ou de alta latência." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "Host autoritário desativado" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "Host autoritário ativado" @@ -5606,7 +5767,7 @@ msgstr "Hospedar no NetPlay" msgid "Hostname" msgstr "Nome do Hospedeiro" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "Configurações das Teclas de Atalho" @@ -5663,11 +5824,11 @@ msgstr "" "({0}). Por favor, consulte https://dolphin-emu.org/docs/guides/wii-network-" "guide/ para obter instruções sobre como configurar a rede do Wii." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "Endereço IP:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "Configurações do IPL" @@ -5676,7 +5837,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "Sensibilidade do Ponteiro:" @@ -5714,11 +5875,11 @@ msgstr "" "mais recente. Comprime com eficiência tanto dados não utilizados quanto " "dados criptografados em discos do Wii." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Ícone" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" @@ -5729,11 +5890,11 @@ msgstr "" "Adequado para jogos baseados em turnos com controles sensíveis ao tempo, " "como golfe." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "ID de Estatísticas" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5802,7 +5963,7 @@ msgstr "Ignorar Mudanças de Formato" msgid "Ignore for this session" msgstr "Ignorar nesta sessão" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5815,7 +5976,7 @@ msgstr "" "

Na dúvida, mantenha essa opção ativada." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5846,30 +6007,30 @@ msgstr "" "levemente o desempenho.

Na dúvida, mantenha essa " "opção desativada." -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "Importar Backup da NAND do BootMii..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" -msgstr "Falhou em Importar" +msgstr "Falha ao Importar" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "Importar Arquivo(s) do(s) Save(s)" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Importar Dados Salvos do Wii..." -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "Importando backup da NAND" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" @@ -5878,11 +6039,20 @@ msgstr "" "Importando backup da NAND\n" " Tempo decorrido: %1s" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "Dentro do Jogo?" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "Incluído: %1" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "Incluído: 0" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5940,8 +6110,8 @@ msgstr "Informações" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Informação" @@ -5950,10 +6120,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "Desativar Proteção de Tela Durante a Emulação" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Entrada de Dados" @@ -5967,16 +6137,22 @@ msgstr "Força de entrada requerida pra ativação." msgid "Input strength to ignore and remap." msgstr "Força da entrada pra ignorar e remapear." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "Inserir &nop" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Inserir Cartão SD" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "Inspecionado" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "Instalar" @@ -5988,7 +6164,7 @@ msgstr "Partição de Instalação (%1)" msgid "Install Update" msgstr "Instalar Atualização" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "Instalar WAD..." @@ -6004,11 +6180,11 @@ msgstr "Instruções." msgid "Instruction" msgstr "Instrução" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "Ponto de Interrupção da Instrução" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "Instrução:" @@ -6026,7 +6202,7 @@ msgid "Interface" msgstr "Interface" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Erro Interno do LZO - a compressão falhou" @@ -6035,7 +6211,7 @@ msgstr "Erro Interno do LZO - a compressão falhou" msgid "Internal LZO Error - decompression failed" msgstr "Erro Interno do LZO - a descompressão falhou" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" @@ -6043,21 +6219,21 @@ msgstr "" "Erro Interno do LZO - a descompressão falhou ({0}) ({1}, {2}) \n" "Tente carregar o state de novo" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Erro Interno do LZO - lzo_init() falhou" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "Resolução Interna" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Resolução Interna:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "Erro interno enquanto gera o código AR." @@ -6065,11 +6241,11 @@ msgstr "Erro interno enquanto gera o código AR." msgid "Interpreter (slowest)" msgstr "Interpretador (muito lento)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "Núcleo do Interpretador" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "Expressão Inválida." @@ -6077,7 +6253,7 @@ msgstr "Expressão Inválida." msgid "Invalid Mixed Code" msgstr "Código Misturado Inválido" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "O pacote %1 fornecido é inválido: %2" @@ -6086,15 +6262,15 @@ msgstr "O pacote %1 fornecido é inválido: %2" msgid "Invalid Player ID" msgstr "ID de Jogador Inválida" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "Endereço do módulo do RSO inválido: %1" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "Callstack inválido" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "Checksum inválido." @@ -6102,11 +6278,11 @@ msgstr "Checksum inválido." msgid "Invalid game." msgstr "Jogo inválido." -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "Host inválido" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "Entrada inválida para o campo \"%1\"" @@ -6119,33 +6295,33 @@ msgstr "Entrada de dados inválida fornecida" msgid "Invalid literal." msgstr "Literal inválido." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "Parâmetros inválidos dados pra procurar." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "Senha inválida fornecida." -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Arquivo de gravação inválido" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Parâmetros de pesquisa inválidos (nenhum objeto selecionado)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "String de pesquisa inválida (não foi possível converter para número)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "" "String de pesquisa inválida (apenas comprimentos correspondentes de string " "são suportados)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "ID do título inválida." @@ -6154,8 +6330,8 @@ msgid "Invalid watch address: %1" msgstr "Endereço da observação inválido: %1" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Italiano" @@ -6163,11 +6339,11 @@ msgstr "Italiano" msgid "Italy" msgstr "Itália" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "Ligação dos Blocos do JIT Desligado" @@ -6175,47 +6351,47 @@ msgstr "Ligação dos Blocos do JIT Desligado" msgid "JIT Blocks" msgstr "Blocos do JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "Vertente do JIT Desligado" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "Ponto Flutuante do JIT Desligado" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "Inteiro do JIT Desligado" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "LoadStore Flutuante do JIT Desligado" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "LoadStore do JIT Desligado" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "LoadStore Emparelhado do JIT Desligado" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "LoadStore lXz do JIT Desligado" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "LoadStore lbzx do JIT Desligado" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "LoadStore lwz do JIT Desligado" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "JIT Desligado (Núcleo do JIT)" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "Emparelhamento do JIT Desligado" @@ -6227,11 +6403,11 @@ msgstr "Recompilador JIT ARM64 (recomendado)" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "Recompilador JIT x86-64 (recomendado)" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "Registro do Cache do JIT Desligado" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "Registros do Sistema do JIT Desligado" @@ -6245,12 +6421,12 @@ msgstr "" "nunca deveria acontecer. Por favor relate este incidente no bug tracker. O " "Dolphin fechará agora." -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Japão" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japonês" @@ -6270,12 +6446,12 @@ msgstr "Manter Janela no Topo" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "Manter os endereços aonde o valor esta na memória" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Teclado" @@ -6288,20 +6464,20 @@ msgstr "Teclado" msgid "Keys" msgstr "Teclas" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "KiB" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Remover Jogador" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Coréia" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Coreano" @@ -6313,7 +6489,7 @@ msgstr "L" #: Source/Core/DolphinQt/GBAWidget.cpp:388 msgid "L&oad ROM..." -msgstr "C&arregar ROM..." +msgstr "Abrir R&OM..." #. i18n: The left trigger button (labeled L on real controllers) used as an analog input #: Source/Core/Core/HW/GCPadEmu.cpp:47 @@ -6329,7 +6505,7 @@ msgstr "Save do LR" msgid "Label" msgstr "Rótulo" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "Último Valor" @@ -6415,15 +6591,15 @@ msgstr "" msgid "License" msgstr "Licença" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "Limitar Velocidade de Envio de Fragmentos:" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "Selecionar Colunas" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "Exibição em Lista" @@ -6432,17 +6608,17 @@ msgid "Listening" msgstr "Escutando" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Carregar" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "Carregar o &Arquivo do Mapa Ruim..." -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "Carregar o &Outro Arquivo do Mapa..." @@ -6450,7 +6626,7 @@ msgstr "Carregar o &Outro Arquivo do Mapa..." msgid "Load Custom Textures" msgstr "Carregar Texturas Personalizadas" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "Carregar Menu Principal do GameCube" @@ -6459,13 +6635,13 @@ msgstr "Carregar Menu Principal do GameCube" msgid "Load Last State" msgstr "Carregar Anterior" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "Carregamento:" #: Source/Core/Core/HotkeyManager.cpp:182 msgid "Load ROM" -msgstr "Carregar ROM" +msgstr "Abrir ROM" #: Source/Core/Core/HotkeyManager.cpp:180 #: Source/Core/Core/HotkeyManager.cpp:347 @@ -6552,23 +6728,23 @@ msgstr "Carregar do Slot 8" msgid "Load State Slot 9" msgstr "Carregar do Slot 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "Carregar do Arquivo..." -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "Carregar do Slot Selecionado" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "Carregar do Slot" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "Carregar o Save do Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "Carregar Wii System Menu %1" @@ -6576,12 +6752,12 @@ msgstr "Carregar Wii System Menu %1" msgid "Load from Selected Slot" msgstr "Carregar do Slot Selecionado" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "Slot %1 - %2" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "Carregar o arquivo do mapa" @@ -6589,7 +6765,7 @@ msgstr "Carregar o arquivo do mapa" msgid "Load..." msgstr "Carregar..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "Símbolos carregados do '%1'" @@ -6604,7 +6780,7 @@ msgstr "" "

Na dúvida, mantenha essa opção desativada." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "IP Local" @@ -6613,7 +6789,7 @@ msgid "Lock Mouse Cursor" msgstr "Travar Cursor do Mouse" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Log" @@ -6621,7 +6797,7 @@ msgstr "Log" msgid "Log Configuration" msgstr "Configurações" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "Registrar Cobertura das Instruções do JIT" @@ -6652,7 +6828,7 @@ msgstr "" msgid "Loop" msgstr "Reprodução contínua" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "Perdeu a conexão com o servidor do NetPlay..." @@ -6663,7 +6839,7 @@ msgstr "Baixo" #: Source/Core/DolphinQt/Settings/AudioPane.cpp:419 msgid "Lowest" -msgstr "Mais baixo" +msgstr "Muito baixo" #: Source/Core/DolphinQt/NetPlay/MD5Dialog.cpp:43 msgid "MD5 Checksum" @@ -6681,9 +6857,9 @@ msgstr "MMU" msgid "MORIBUND" msgstr "MORIBUNDO" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" -msgstr "Arquivos do GameShark da MadCatz" +msgstr "Arquivos de GameShark da Mad Catz" #: Source/Core/DolphinQt/TAS/GCTASInputWindow.cpp:24 msgid "Main Stick" @@ -6691,7 +6867,7 @@ msgstr "Eixo Principal" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Fabricante" @@ -6700,7 +6876,7 @@ msgstr "Fabricante" msgid "Maker:" msgstr "Fabricante:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6713,7 +6889,7 @@ msgstr "" "

Na dúvida, mantenha essa opção desativada." -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "Gerenciar NAND" @@ -6721,7 +6897,7 @@ msgstr "Gerenciar NAND" msgid "Manual Texture Sampling" msgstr "Amostragem Manual de Texturas" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "Mapeamento" @@ -6729,15 +6905,15 @@ msgstr "Mapeamento" msgid "Mask ROM" msgstr "Mask ROM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "Combinação Achada" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "Buffer Máximo:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "Tamanho máximo do buffer alterado para %1" @@ -6746,7 +6922,7 @@ msgstr "Tamanho máximo do buffer alterado para %1" msgid "Maximum tilt angle." msgstr "Ângulo máximo de inclinação." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "Pode causar lentidão no Wii Menu e em alguns jogos." @@ -6755,11 +6931,11 @@ msgstr "Pode causar lentidão no Wii Menu e em alguns jogos." msgid "Medium" msgstr "Médio" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "Memória" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "Pontos de Interrupção da Memória" @@ -6767,7 +6943,7 @@ msgstr "Pontos de Interrupção da Memória" msgid "Memory Card" msgstr "Memory Card" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "Gerenciador de Memory Cards" @@ -6791,7 +6967,7 @@ msgstr "" msgid "Memory Override" msgstr "Alocação de Memória" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "Opções do ponto de interrupção da memória" @@ -6807,7 +6983,7 @@ msgstr "MemoryCard: Leitura chamada com endereço inválido da fonte ({0:#x})" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "MemoryCard: Gravação chamada com endereço de destino inválido ({0:#x})" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6819,13 +6995,13 @@ msgstr "" "recomendado manter um backup de ambas as NANDs. Tem certeza de que deseja " "continuar?" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "MiB" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Microfone" @@ -6833,21 +7009,21 @@ msgstr "Microfone" msgid "Misc" msgstr "Diversos" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Configurações Diversas" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" "Há uma discrepância entre o número de blocos livres no cabeçalho e o número " "real de blocos livres." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "Incompatibilidade entre as estruturas internas dos dados." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6881,12 +7057,12 @@ msgstr "" "efeito.

Na dúvida, mantenha essa opção desativada." -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "Módulos achados: %1" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "Mono" @@ -6898,11 +7074,11 @@ msgstr "Sombras Monoscópicas" msgid "Monospaced Font" msgstr "Fonte de Largura Fixa" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "Dados de Movimento" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "Simulação de Movimentos" @@ -6946,10 +7122,10 @@ msgstr "Gravação" msgid "N&o to All" msgstr "Não para T&odos" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "Verificação da NAND" @@ -6957,26 +7133,26 @@ msgstr "Verificação da NAND" msgid "NKit Warning" msgstr "Aviso sobre o NKit" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "NTSC-K" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "Nome" @@ -6988,37 +7164,37 @@ msgstr "Nome da nova etiqueta:" msgid "Name of the tag to remove:" msgstr "Nome da etiqueta a remover:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "Nome da sua sessão mostrada no navegador do servidor" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Nome:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Nativa (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "Arquivo GCI Nativo" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "NetPlay" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "Navegador de Sessões do NetPlay" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "Configuração do NetPlay" @@ -7026,16 +7202,16 @@ msgstr "Configuração do NetPlay" msgid "Netherlands" msgstr "Holanda" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "O NetPlay dessincronizou em NetPlay_GetButtonPress()" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "O Netplay perdeu a sincronia. Não é possível se recuperar desse erro." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "Rede" @@ -7056,19 +7232,19 @@ msgstr "Desativar Atualizações" msgid "New" msgstr "Novo" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "Novo Ponto de Interrupção" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" -msgstr "Nova Busca" +msgstr "Nova Pesquisa" #: Source/Core/DolphinQt/GameList/GameList.cpp:472 msgid "New Tag..." msgstr "Nova Etiqueta..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "Uma nova ID foi gerada." @@ -7085,7 +7261,7 @@ msgstr "Nova etiqueta" msgid "Next Game Profile" msgstr "Próximo Perfil de Jogo" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "Combinação Seguinte" @@ -7094,17 +7270,17 @@ msgstr "Combinação Seguinte" msgid "Next Profile" msgstr "Próximo Perfil" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "O apelido é muito longo." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Apelido:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "Não" @@ -7112,6 +7288,10 @@ msgstr "Não" msgid "No Adapter Detected" msgstr "Nenhum Adaptador Detectado" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "Sem Alinhamento" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "Desativar Saída de Áudio" @@ -7122,24 +7302,20 @@ msgstr "Desativar Saída de Áudio" msgid "No Compression" msgstr "Sem Compressão" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "Sem Combinação" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "Nenhum Valor Dado" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Nenhuma descrição disponível" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "Não há erros." @@ -7151,15 +7327,15 @@ msgstr "Nenhum acessório selecionado." msgid "No file loaded / recorded." msgstr "Nenhum arquivo carregado / gravado." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "Nenhum jogo está em execução." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "Nenhum jogo em execução" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "Não foram detectados problemas." @@ -7167,11 +7343,15 @@ msgstr "Não foram detectados problemas." msgid "No paths found in the M3U file \"{0}\"" msgstr "Nenhum caminho encontrado no arquivo M3U \"{0}\"" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "Não restam funções possíveis. Resetar." + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "Nenhum problema encontrado." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -7185,7 +7365,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "Nenhum perfil encontrado pra configuração do jogo '{0}'" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "Nenhuma gravação carregada." @@ -7193,19 +7373,15 @@ msgstr "Nenhuma gravação carregada." msgid "No save data found." msgstr "Não foram achados dados dos saves." -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" "Arquivo undo.dtm não encontrado, cancelando reversão do carregamento de " "estado para evitar perda de sincronia com a gravação" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "Nenhum valor fornecido." - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -7215,7 +7391,7 @@ msgstr "Nenhum" msgid "North America" msgstr "América do Norte" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "Não Encontrado" @@ -7223,11 +7399,11 @@ msgstr "Não Encontrado" msgid "Not Set" msgstr "Desconhecido" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "Nem todos os jogadores possuem o jogo. Iniciar assim mesmo?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -7237,7 +7413,7 @@ msgstr "" "Não há blocos livres o bastante no memory card alvo. Pelo menos %n bloco(s) " "livre(s) requerido(s)." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -7301,13 +7477,13 @@ msgstr "Orientação do Nunchuk" msgid "Nunchuk Stick" msgstr "Eixo do Nunchuk" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "OK" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "Objeto %1" @@ -7317,14 +7493,14 @@ msgstr "Intervalo de Objetos" #: Source/Core/UICommon/NetPlayIndex.cpp:250 msgid "Oceania" -msgstr "Oceania" +msgstr "Oceânia" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Desligado" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "Deslocamento" @@ -7336,11 +7512,11 @@ msgstr "Ligado" msgid "On Movement" msgstr "Ao Mover" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "&Documentação Online" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" @@ -7348,7 +7524,7 @@ msgstr "" "Só anexar símbolos com o prefixo:\n" "(Em branco pra todos os símbolos)" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -7365,7 +7541,7 @@ msgstr "Abrir" msgid "Open &Containing Folder" msgstr "Abrir &Local do Arquivo" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "Abrir Diretório..." @@ -7395,7 +7571,7 @@ msgstr "Abrir num Editor Externo" #: Source/Core/AudioCommon/OpenALStream.cpp:117 msgid "OpenAL: can't create context for device {0}" -msgstr "OpenAL: não pôde criar o contexto pro dispositivo {0}" +msgstr "OpenAL: não foi possível criar contexto para o dispositivo {0}" #: Source/Core/AudioCommon/OpenALStream.cpp:99 msgid "OpenAL: can't find sound devices" @@ -7403,7 +7579,7 @@ msgstr "OpenAL: não foi possível encontrar dispositivos de som" #: Source/Core/AudioCommon/OpenALStream.cpp:109 msgid "OpenAL: can't open device {0}" -msgstr "OpenAL: não pôde abrir o dispositivo {0}" +msgstr "OpenAL: não foi possível abrir o dispositivo {0}" #: Source/Core/VideoBackends/OGL/OGLMain.cpp:72 msgid "OpenGL" @@ -7413,7 +7589,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "Operadores" @@ -7431,7 +7607,7 @@ msgstr "Opções" msgid "Orange" msgstr "Laranja" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "Orbital" @@ -7439,7 +7615,7 @@ msgstr "Orbital" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Outros" @@ -7452,11 +7628,11 @@ msgstr "Outra Partição (%1)" msgid "Other State Hotkeys" msgstr "Outros" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "Gerenciamento de Estados Salvos" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "Outro jogo..." @@ -7464,12 +7640,12 @@ msgstr "Outro jogo..." msgid "Overlay Information" msgstr "Depuração" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "&Reproduzir Gravação de Replay..." -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -7494,7 +7670,7 @@ msgstr "Arquivo de imagem PNG (*.png);;Todos os arquivos (*)" msgid "PPC Size" msgstr "Tamanho do PPC" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "PPC vs Hospedeiro" @@ -7511,7 +7687,7 @@ msgstr "Pads" msgid "Parameters" msgstr "Parâmetros" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "Analisar como Hex" @@ -7520,23 +7696,23 @@ msgstr "Analisar como Hex" msgid "Parsing Error" msgstr "Erro de Análise" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "Passivo" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "Redirecionar um adaptador Bluetooth" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "Senha" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "Senha pra entrar no seu jogo (deixe vazio pra nenhuma)" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "Senha?" @@ -7557,7 +7733,7 @@ msgid "Path:" msgstr "Caminho:" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Locais" @@ -7565,7 +7741,7 @@ msgstr "Locais" msgid "Pause" msgstr "Pausar" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "&Pausar no Fim do Replay" @@ -7588,37 +7764,37 @@ msgstr "Velocidade pico dos movimentos pra posição neutra." msgid "Peak velocity of outward swing movements." msgstr "Velocidade pico dos movimentos de balanço externos." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Iluminação Por Pixel" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" -msgstr "Executar a Atualização do Sistema Online" +msgstr "Executar Atualização do Sistema Online" #: Source/Core/DolphinQt/GameList/GameList.cpp:388 msgid "Perform System Update" -msgstr "Executar a Atualização do Sistema" +msgstr "Executar Atualização do Sistema" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "Físico" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "Espaço do endereço físico" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "PiBs" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "Escolha uma fonte de debug" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "Ping" @@ -7631,7 +7807,7 @@ msgid "Pitch Up" msgstr "Pra cima" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Plataforma" @@ -7651,16 +7827,16 @@ msgstr "Reproduzir Gravação" msgid "Playback Options" msgstr "Opções de Reprodução" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "Jogador" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Jogadores" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7673,30 +7849,30 @@ msgstr "" msgid "Point" msgstr "Apontar" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "Porta %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "ROM da Porta %1:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "Porta:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" "Possível dessincronia detectada: %1 poderia ter dessincronizado no frame %2" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "Efeito de Pós-Processamento" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Efeito de Pós-Processamento:" @@ -7708,15 +7884,15 @@ msgstr "Configurações do Shader de Pós-Processamento" msgid "Prefetch Custom Textures" msgstr "Pré-carregar Texturas Personalizadas" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "Fim prematuro da gravação no PlayController. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "Fim prematuro do filme no PlayWiimote. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "Fim prematuro da gravação no PlayWiimote. {0} > {1}" @@ -7730,7 +7906,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:89 msgid "Presets" -msgstr "Pré-definidos" +msgstr "Predefinições" #: Source/Core/Core/HotkeyManager.cpp:79 msgid "Press Sync Button" @@ -7760,7 +7936,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "Perfil de Jogo Anterior" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "Combinação Anterior" @@ -7771,23 +7947,23 @@ msgstr "Perfil Anterior" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "Primitivo %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" -msgstr "Privado" +msgstr "Privada" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" -msgstr "Privado e Público" +msgstr "Privada e Pública" #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:62 msgid "Problem" msgstr "Problema" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." @@ -7795,7 +7971,7 @@ msgstr "" "Problemas de alta gravidade foram encontrados. O jogo provavelmente não " "funcionará." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." @@ -7803,7 +7979,7 @@ msgstr "" "Problemas de baixa gravidade foram encontrados. Eles provavelmente não " "impedirão a execução do jogo." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." @@ -7811,7 +7987,7 @@ msgstr "" "Problemas de gravidade média foram encontrados. O jogo inteiro ou certas " "partes dele podem não funcionar corretamente." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Perfil" @@ -7825,15 +8001,15 @@ msgstr "Contador do Programa" msgid "Progress" msgstr "Progresso" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "Público" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "Limpar Cache da Lista de Jogos" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "Coloque as ROMs do IPL na pasta User/GC//." @@ -7845,11 +8021,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "LTR" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "A Qualidade do Serviço (QoS) não pôde ser ativada." -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "Qualidade do Serviço (QoS) ativado com sucesso." @@ -7861,12 +8037,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Pergunta" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Sair" @@ -7886,11 +8062,11 @@ msgstr "R (analógico)" msgid "READY" msgstr "PRONTO" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "Módulos do RSO" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "Auto-detecção do RSO" @@ -7903,44 +8079,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "Imagens RVZ do GC/Wii (*.rvz)" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Sensibilidade" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "Final do Alcance: " -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "Início do Alcance: " -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "Su&bstituir instrução" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "Ler" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "Ler e gravar" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "Somente-leitura" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "Ler ou Gravar" @@ -7948,11 +8124,11 @@ msgstr "Ler ou Gravar" msgid "Read-Only Mode" msgstr "Modo Somente Leitura" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Balance Board Real" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "Wii Remote Real" @@ -7965,11 +8141,11 @@ msgstr "Re-centralizar" msgid "Record" msgstr "Gravar" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "Gravar a Entrada dos Dados" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "Gravação" @@ -7979,7 +8155,7 @@ msgstr "Opções da Gravação" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:325 msgid "Recording..." -msgstr "Gravação..." +msgstr "Gravando..." #: Source/Core/Core/HW/WiimoteEmu/Extension/Drums.cpp:32 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:48 @@ -7994,7 +8170,7 @@ msgstr "Vermelho Esquerdo" msgid "Red Right" msgstr "Vermelho Direito" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -8013,20 +8189,20 @@ msgstr "" #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:81 msgid "Redump.org Status:" -msgstr "Status do redump.org:" +msgstr "Status no Redump.org:" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Atualizar" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "Atualizar Valores Atuais" @@ -8034,27 +8210,27 @@ msgstr "Atualizar Valores Atuais" msgid "Refresh Game List" msgstr "Atualizar Lista de Jogos" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" "A atualização falhou. Por favor execute o jogo um pouco e tente de novo." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "Valores atuais atualizados." #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "Atualizando..." #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Região" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "Região:" @@ -8074,18 +8250,18 @@ msgstr "Manter a Entrada Relativa dos Dados" msgid "Remind Me Later" msgstr "Me Lembrar Mais Tarde" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Remover" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" -msgstr "Falhou em Remover" +msgstr "Falha ao Remover" #: Source/Core/DolphinQt/ConvertDialog.cpp:73 msgid "Remove Junk Data (Irreversible):" @@ -8109,8 +8285,8 @@ msgstr "" "(a menos que você comprima o arquivo ISO em um formato como ZIP " "posteriormente). Deseja continuar mesmo assim?" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "Renomear Símbolo" @@ -8145,29 +8321,37 @@ msgstr "Pedido pra se Juntar ao seu Grupo" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Redefinir" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "Resetar Tudo" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "Redefinir Ignorar Gerenciadores de Pânico" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "Resetar Resultados" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "Redefinir Servidor Traversal" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "Servidor Traversal redefinido para %1:%2" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "Redefinir Servidor Traversal" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "Redefinir Valores" @@ -8175,15 +8359,15 @@ msgstr "Redefinir Valores" msgid "Reset View" msgstr "Redefinir Câmera" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "Redefinir pareamento de todos os Wii Remotes salvos" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "Gerenciador de Pacotes de Recursos" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "Pacotes de Recursos:" @@ -8195,11 +8379,11 @@ msgstr "Reinicialização Necessária" msgid "Restore Defaults" msgstr "Restaurar Padrões" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "Restaurar instrução" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Repetir" @@ -8208,7 +8392,7 @@ msgstr "Repetir" msgid "Return Speed" msgstr "Velocidade de Retorno" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "Revisão" @@ -8266,11 +8450,11 @@ msgstr "Rolar pra Esquerda" msgid "Roll Right" msgstr "Rolar pra Direita" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "Código da Sala" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "Rotação" @@ -8279,18 +8463,19 @@ msgstr "Rotação" msgid "Rotation applied at extremities of swing." msgstr "Rotação aplicada nas extremidades do balanço." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." -msgstr "" -"Arredonda vértices 2D para pixels inteiros.

Corrige problemas " -"gráficos ao emular alguns jogos em resoluções internas mais altas. Essa " -"opção é ignorada ao usar a resolução interna nativa." -"

Na dúvida, mantenha essa opção desativada.
Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." +msgstr "" +"Arredonda vértices 2D para pixels inteiros e o tamanho da janela de exibição " +"para um número inteiro.

Corrige problemas gráficos ao emular alguns " +"jogos em resoluções internas mais altas. Essa opção é ignorada ao usar a " +"resolução interna nativa.

Na dúvida, mantenha essa " +"opção desativada." #: Source/Core/Core/HW/GCPadEmu.cpp:79 #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:254 @@ -8299,11 +8484,11 @@ msgstr "" msgid "Rumble" msgstr "Vibração" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "Correr &Até Aqui" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "Executar Instâncias do GBA em Processos Dedicados" @@ -8311,15 +8496,15 @@ msgstr "Executar Instâncias do GBA em Processos Dedicados" msgid "Russia" msgstr "Rússia" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "Cartão SD" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "Imagem do Cartão SD (*.raw);;Todos os arquivos (*)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "Cartão SD:" @@ -8335,7 +8520,7 @@ msgstr "SELECT" msgid "SHA-1:" msgstr "SHA-1:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "SP1:" @@ -8349,11 +8534,11 @@ msgstr "Contexto do SSL" msgid "START" msgstr "START" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "Sa&lvar Código" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "Salvar Estado Salvo" @@ -8363,7 +8548,7 @@ msgid "Safe" msgstr "Seguro" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -8372,11 +8557,11 @@ msgstr "Salvar" #: qtbase/src/gui/kernel/qplatformtheme.cpp:712 msgid "Save All" -msgstr "Salvar Tudo" +msgstr "Salvar Todos" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "Exportar Dados Salvos" @@ -8397,11 +8582,11 @@ msgstr "Jogo Salvo" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "Arquivo de jogo salvo (*.sav);;Todos os arquivos (*)" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "Importar Dados Salvos" @@ -8413,7 +8598,7 @@ msgstr "Salvar Estado Mais Antigo" msgid "Save Preset" msgstr "Salvar Predefinição" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "Salvar o Arquivo da Gravação Como" @@ -8463,23 +8648,23 @@ msgstr "Salvar no Slot 8" msgid "Save State Slot 9" msgstr "Salvar no Slot 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "Salvar no Arquivo..." -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "Salvar no Slot Mais Antigo" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "Salvar no Slot Selecionado" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "Salvar no Slot" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "Salvar o Mapa dos Símbolos &Como..." @@ -8487,7 +8672,7 @@ msgstr "Salvar o Mapa dos Símbolos &Como..." msgid "Save Texture Cache to State" msgstr "Armazenar Cache de Texturas no Estado Salvo" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "Salvar e Carregar Estados Salvos" @@ -8499,11 +8684,11 @@ msgstr "Salvar como Predefinição..." msgid "Save as..." msgstr "Salvar como..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "Salvar o arquivo de saída combinada dos dados como" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" @@ -8513,15 +8698,15 @@ msgstr "" "dos dados atuais antes de substituí-los.\n" "Substituir os dados existentes?" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "Salvar na Mesma Pasta da ROM" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "Salvar o arquivo do mapa" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "Salvar o arquivo de assinatura" @@ -8529,7 +8714,7 @@ msgstr "Salvar o arquivo de assinatura" msgid "Save to Selected Slot" msgstr "Salvar no Slot Selecionado" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "Slot %1 - %2" @@ -8537,25 +8722,25 @@ msgstr "Slot %1 - %2" msgid "Save..." msgstr "Salvar..." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" "O pareamento dos Wii Remotes salvos só pode ser redefinido durante a " "execução de um jogo do Wii." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "Dados Salvos:" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "O estado salvo da gravação {0} está corrompido, parando a gravação..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Cópia em Escala do EFB" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "Scan bem-sucedido." @@ -8563,30 +8748,30 @@ msgstr "Scan bem-sucedido." msgid "ScrShot" msgstr "Screenshot" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Pesquisar" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "Procurar Endereço" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "Procurar o Objeto Atual" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Procurar nas Subpastas" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "Procurar e Filtrar" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." @@ -8594,15 +8779,15 @@ msgstr "" "A busca atualmente não é possível no espaço do endereço virtual. Por favor " "execute o jogo um pouco e tente de novo." -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "Procurar uma Instrução" #: Source/Core/DolphinQt/SearchBar.cpp:29 msgid "Search games..." -msgstr "Procurar jogos..." +msgstr "Pesquisar jogos..." -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "Procurar instrução" @@ -8628,28 +8813,28 @@ msgstr "" msgid "Security options" msgstr "Opções de segurança" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Selecionar" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "Selecione o Caminho do Dump" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "Selecione o Diretório de Exportação" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "Selecionar a BIOS do GBA" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "Selecionar a ROM do GBA" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "Selecione o Caminho dos Saves do GBA" @@ -8657,11 +8842,11 @@ msgstr "Selecione o Caminho dos Saves do GBA" msgid "Select Last State" msgstr "Selecionar" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "Selecione o Caminho Pra Carregar" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "Selecione o Caminho do Pacote de Recursos" @@ -8669,7 +8854,7 @@ msgstr "Selecione o Caminho do Pacote de Recursos" msgid "Select Riivolution XML file" msgstr "Selecione o arquivo XML do Riivolution" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "Slot %1 - %2" @@ -8677,7 +8862,7 @@ msgstr "Slot %1 - %2" msgid "Select State" msgstr "Selecionar" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Slot de Estado Salvo" @@ -8721,41 +8906,45 @@ msgstr "Selecionar Slot 8" msgid "Select State Slot 9" msgstr "Selecionar Slot 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "Selecione o Caminho do WFS" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "Selecione a Raiz NAND do Wii" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "Selecione um Diretório" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "Selecione um Arquivo" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "Selecione um Jogo" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "Selecione uma Imagem do Cartão SD" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "Selecione um arquivo" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "Selecione um jogo" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "Selecione um título pra instalar no NAND" @@ -8763,11 +8952,11 @@ msgstr "Selecione um título pra instalar no NAND" msgid "Select e-Reader Cards" msgstr "Selecione os Cartões do e-Reader" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "Selecione o endereço do módulo do RSO:" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "Selecione o Arquivo da Gravação a Executar" @@ -8775,12 +8964,12 @@ msgstr "Selecione o Arquivo da Gravação a Executar" msgid "Select the Virtual SD Card Root" msgstr "Selecione a Raiz do Cartão SD Virtual" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "Selecione o arquivo das chaves (dump do OTP/SEEPROM)" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Importar" @@ -8796,15 +8985,15 @@ msgstr "Selecione aonde você quer salvar as imagens convertidas" msgid "Selected Font" msgstr "Fonte Selecionada" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "O perfil de controle selecionado não existe" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "O jogo selecionado não existe na lista de jogos!" @@ -8832,7 +9021,7 @@ msgstr "" "Seleciona o adaptador de vídeo a ser utilizado.

Na " "dúvida, selecione o primeiro da lista." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8901,11 +9090,11 @@ msgstr "" "é recomendado testar cada um e selecionar o backend menos problemático." "

Na dúvida, selecione \"OpenGL\"." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Enviar" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Posição da Sensor Bar:" @@ -8921,56 +9110,64 @@ msgstr "" "download.\n" "Exemplo: {2}" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "Endereço IP do Servidor" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "Porta do Servidor" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "O servidor rejeitou a tentativa traversal" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "Definir &Valor" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "Definir &blr" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "Definir PC" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "Definir o Valor do Arquivo" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "Definir como &ISO padrão" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "Definir arquivo do memory card pro Slot A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "Definir arquivo do memory card pro Slot B" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "Definir final do &endereço do símbolo" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "Definir tamanho do &símbolo" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "Definir final do endereço do símbolo" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "Definir tamanho do símbolo (%1):" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8980,7 +9177,7 @@ msgstr "" "jogos PAL.\n" "Pode não funcionar em todos os jogos." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Define o idioma do sistema do Wii." @@ -8992,7 +9189,7 @@ msgstr "" "Define a latência em milissegundos. Valores mais altos podem reduzir " "picotamentos no áudio. Disponível somente em alguns backends." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -9031,11 +9228,11 @@ msgstr "" "Diminui os tempos de carregamento mas pode causar problemas em alguns jogos. " "Pode ter efeitos negativos na performance. O padrão é False" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Mostrar &Log" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Mostrar Barra de &Ferramentas" @@ -9043,15 +9240,15 @@ msgstr "Mostrar Barra de &Ferramentas" msgid "Show Active Title in Window Title" msgstr "Mostrar Software em Execução no Título da Janela" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "Mostrar Tudo" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Austrália" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "Mostrar Jogo em Execução no Discord" @@ -9059,7 +9256,7 @@ msgstr "Mostrar Jogo em Execução no Discord" msgid "Show Debugging UI" msgstr "Mostrar Interface de Depuração" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "ELF/DOL" @@ -9067,43 +9264,43 @@ msgstr "ELF/DOL" msgid "Show FPS" msgstr "Mostrar FPS" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Mostrar Contador de Quadros" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "França" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Alemanha" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "Mostrar a Sobreposição do Modo Golfe" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Mostrar Entrada de Dados" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Itália" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "Japão" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Coréia" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Mostrar Contador de Lag" @@ -9111,7 +9308,7 @@ msgstr "Mostrar Contador de Lag" msgid "Show Language:" msgstr "Idioma:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Mostrar &Configurações do Log" @@ -9123,7 +9320,7 @@ msgstr "Mostrar Mensagens do NetPlay" msgid "Show NetPlay Ping" msgstr "Mostrar Ping do NetPlay" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Holanda" @@ -9131,7 +9328,7 @@ msgstr "Holanda" msgid "Show On-Screen Display Messages" msgstr "Mostrar Mensagens na Tela" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Europa" @@ -9140,23 +9337,23 @@ msgstr "Europa" msgid "Show PC" msgstr "Mostrar PC" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Mostrar Plataformas" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Mostrar Regiões" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "Mostrar Contador de Regravações" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Rússia" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "Espanha" @@ -9165,46 +9362,50 @@ msgstr "Espanha" msgid "Show Statistics" msgstr "Exibir Estatísticas" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "Mostrar Relógio do Sistema" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Taiwan" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Estados Unidos" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Desconhecido" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Global" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "Mostrar na &memória" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "Mostrar no código" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "Mostrar no navegador do servidor" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "Mostrar o alvo na &memória" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -9249,7 +9450,7 @@ msgstr "" "Mostra várias estatísticas de renderização.

Na " "dúvida, mantenha essa opção desativada." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Lado a Lado" @@ -9265,16 +9466,31 @@ msgstr "Alternar Horizontal" msgid "Sideways Wii Remote" msgstr "Wii Remote na Horizontal" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "Base de Dados da Assinatura" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "Assinado 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "Assinado 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "Assinou 8" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "Inteiro Assinada" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Chinês Simplificado" @@ -9282,7 +9498,7 @@ msgstr "Chinês Simplificado" msgid "Simulate DK Bongos" msgstr "Simular DK Bongos" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "Seis Eixos" @@ -9311,7 +9527,7 @@ msgstr "Ignorar Desenho" msgid "Skip EFB Access from CPU" msgstr "Ignorar Acesso EFB da CPU" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "Ignorar Menu Principal" @@ -9319,7 +9535,7 @@ msgstr "Ignorar Menu Principal" msgid "Skip Presenting Duplicate Frames" msgstr "Ignorar Exibição de Quadros Duplicados" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -9338,19 +9554,19 @@ msgstr "" msgid "Slider Bar" msgstr "Barra do Slider" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Slot A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "Slot A:" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Slot B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "Slot B:" @@ -9368,7 +9584,7 @@ msgstr "Tabela do soquete" msgid "Software Renderer" msgstr "Renderizador por Software" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "Alguns dos dados não puderam ser lidos." @@ -9389,11 +9605,11 @@ msgstr "" "Por favor verifique os valores destacados." #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "Classificar por Nome" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "Modo de Som:" @@ -9406,8 +9622,8 @@ msgid "Spain" msgstr "Espanha" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Espanhol" @@ -9415,7 +9631,7 @@ msgstr "Espanhol" msgid "Speaker Pan" msgstr "Balanço do Speaker" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Volume do Auto-Falante:" @@ -9460,7 +9676,7 @@ msgstr "Velocidade" msgid "Speed up Disc Transfer Rate" msgstr "Acelerar Taxa de Transferência do Disco" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "Estável (anualmente)" @@ -9472,16 +9688,16 @@ msgstr "Fim das pilhas" msgid "Stack start" msgstr "Início das pilhas" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Controle Padrão" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Start" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "Iniciar &NetPlay..." @@ -9489,11 +9705,13 @@ msgstr "Iniciar &NetPlay..." msgid "Start New Cheat Search" msgstr "Iniciar Nova Pesquisa" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "&Iniciar Gravação de Replay" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Iniciar Gravação" @@ -9509,7 +9727,7 @@ msgstr "Iniciar com Patches do Riivolution" msgid "Start with Riivolution Patches..." msgstr "Iniciar com Patches do Riivolution..." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "Jogo iniciado" @@ -9520,7 +9738,7 @@ msgstr "Jogo iniciado" msgid "State" msgstr "State" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Volante" @@ -9548,19 +9766,19 @@ msgstr "Saída" msgid "Step Over" msgstr "Passagem" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "Saída bem-sucedida!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "O tempo pra sair esgotou!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "Passagem em progresso..." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "Passo bem-sucedido!" @@ -9569,20 +9787,20 @@ msgstr "Passo bem-sucedido!" msgid "Stepping" msgstr "Passando" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "Estéreo" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "Modo de Estereoscopia 3D:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Modo de Estereoscopia 3D:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Estereoscopia" @@ -9603,11 +9821,15 @@ msgstr "Eixo" msgid "Stop" msgstr "Parar" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "Parar a Reprodução/Gravação de Replay" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "Parar a Gravação" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "Jogo parado" @@ -9621,7 +9843,7 @@ msgstr "Armazenar Cópias EFB Somente na Textura" msgid "Store XFB Copies to Texture Only" msgstr "Armazenar Cópias XFB Somente na Textura" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -9635,7 +9857,7 @@ msgstr "" "Cópias do EFB na RAM (e na Textura)

Na dúvida, " "mantenha essa opção ativada." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -9653,7 +9875,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Esticar para a Janela" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "Sincronização Rigorosa das Configurações" @@ -9676,16 +9898,16 @@ msgstr "Stylus" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "Sucesso" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "Adicionou com sucesso ao índice do NetPlay" @@ -9695,11 +9917,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "%n imagem(ns) convertida(s) com sucesso." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "Perfil \"%1\" excluído com sucesso." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "Exportou com sucesso %n de %1 arquivo(s) do(s) save(s)." @@ -9708,7 +9930,7 @@ msgstr "Exportou com sucesso %n de %1 arquivo(s) do(s) save(s)." msgid "Successfully exported save files" msgstr "Arquivos dos saves exportados com sucesso" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "Certificados da NAND extraídos com sucesso" @@ -9720,12 +9942,12 @@ msgstr "Arquivo extraído com sucesso." msgid "Successfully extracted system data." msgstr "Dados extraídos do sistema com sucesso." -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "Arquivo de dados salvos importado com sucesso." #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "Software instalado na NAND com sucesso." @@ -9737,16 +9959,16 @@ msgstr "Software removido da NAND com sucesso." msgid "Support" msgstr "Suporte" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "Formatos de arquivo suportados" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "Suporta SD e SDHC. O tamanho padrão é 128 MB." #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "Surround" @@ -9754,11 +9976,11 @@ msgstr "Surround" msgid "Suspended" msgstr "Suspenso" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Inverter Olhos" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9773,50 +9995,67 @@ msgstr "" msgid "Swing" msgstr "Balançar" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "Alternar para A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "Alternar para B" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "Símbolo" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "Fim do endereço do Símbolo (%1)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" +"O mapa do símbolo não foi achado.\n" +"\n" +"Se ele não existe você pode gerar um na barra do menu:\n" +"Símbolos -> Gerar Símbolos Do ->\n" +"\t| Endereço | Do Banco de Dados da Assinatura | Módulos do RSO" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "Nome do símbolo:" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "Símbolos" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "Sincronizar" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "Sincronizar Códigos AR/Gecko" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "Sincronizar Todos os Saves do Wii" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "Sincronizar Saves" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "Sincronizar os Wii Remotes reais e emparelhá-los" @@ -9832,37 +10071,37 @@ msgstr "" "Sincroniza os threads da GPU e da CPU pra ajudar a impedir os congelamentos " "aleatórios no modo Dual Core. (ON = Compatível, OFF = Rápido)" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "Sincronizando códigos AR..." -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "Sincronizando códigos Gecko..." -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "Sincronizando os dados dos saves..." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Idioma do Sistema:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "Entrada de Dados TAS" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "Ferramentas de TAS" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "Etiquetas" @@ -9880,11 +10119,11 @@ msgstr "Cauda" msgid "Taiwan" msgstr "Taiwan" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Capturar Tela" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Testar" @@ -9893,7 +10132,7 @@ msgstr "Testar" msgid "Texture Cache" msgstr "Cache de Texturas" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "Precisão do Cache de Texturas" @@ -9917,7 +10156,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "A tabela de hash H3 para a partição {0} não está correta." -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "O arquivo IPL não é um bom dump conhecido. (CRC32: {0:x})" @@ -9931,7 +10170,7 @@ msgstr "O arquivo IPL não é um bom dump conhecido. (CRC32: {0:x})" msgid "The Masterpiece partitions are missing." msgstr "As partições das Masterpieces estão ausentes." -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." @@ -9939,7 +10178,7 @@ msgstr "" "A NAND não pôde ser reparada. É recomendável fazer backup dos dados salvos " "atuais e recomeçar do zero com uma NAND limpa." -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "A NAND foi reparada." @@ -9986,7 +10225,7 @@ msgstr "" "As chaves criptográficas precisam estar anexadas ao arquivo de backup da " "NAND." -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -10000,9 +10239,9 @@ msgstr "O disco não pôde ser lido (em {0:#x} - {1:#x})." #: Source/Core/Core/HW/DVD/DVDInterface.cpp:514 msgid "The disc that was about to be inserted couldn't be found." -msgstr "O disco que estava pra ser inserido não pôde ser achado." +msgstr "O disco que estava prestes a ser inserido não foi encontrado." -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -10020,7 +10259,7 @@ msgstr "O console Wii emulado foi atualizado." #: Source/Core/DolphinQt/WiiUpdate.cpp:37 msgid "The emulated Wii console is already up-to-date." -msgstr "O console emulado do Wii já está atualizado." +msgstr "O console Wii emulado já está atualizado." #. i18n: MAC stands for Media Access Control. A MAC address uniquely identifies a network #. interface (physical) like a serial number. "MAC" should be kept in translations. @@ -10028,19 +10267,19 @@ msgstr "O console emulado do Wii já está atualizado." msgid "The entered MAC address is invalid." msgstr "O endereço MAC inserido não é válido." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "O PID inserido não é válido." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "O VID inserido não é válido." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "A expressão contém um erro de sintaxe." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -10103,7 +10342,7 @@ msgstr "" "O disco do jogo selecionado não contém uma partição de atualização " "utilizável." -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "Um jogo está atualmente em execução." @@ -10117,7 +10356,7 @@ msgstr "" "evitar problemas com o Wii System Menu, não é possível atualizar o console " "emulado usando este disco." -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -10139,7 +10378,7 @@ msgstr "Os hashes não combinam!" msgid "The hashes match!" msgstr "Os hashes combinam!" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -10167,12 +10406,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "Os patches no %1 não são pro jogo selecionado ou revisão do jogo." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "O perfil \"%1\" não existe" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "O jogo gravado ({0}) não é o mesmo do jogo selecionado ({1})" @@ -10191,21 +10430,21 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "O código AR descriptografado não contém nenhuma linha." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" "O mesmo arquivo não pode ser usado em múltiplos slots; já é usado pelo %1." -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "As versões do servidor e do cliente NetPlay são incompatíveis." -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "O servidor está cheio." -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "O servidor enviou uma mensagem de erro desconhecida." @@ -10231,7 +10470,7 @@ msgstr "O índice de chave comum especificado é {0}, mas deveria ser {1}." msgid "The specified file \"{0}\" does not exist" msgstr "O arquivo especificado \"{0}\" não existe" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "O memory card alvo já contém um arquivo: \"%1\"." @@ -10284,7 +10523,7 @@ msgstr "A partição {0} não está alinhada corretamente." msgid "There are too many partitions in the first partition table." msgstr "Existem muitas partições na primeira tabela de partições." -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "Nào há nada para desfazer!" @@ -10326,7 +10565,7 @@ msgstr "" "Esse jogo coreano está configurado para utilizar um IOS que normalmente não " "está presente em consoles coreanos. É provável que isso cause o ERROR #002." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "O dispositivo USB informado já está na lista de redirecionamento." @@ -10346,7 +10585,7 @@ msgstr "" "Este simulador de Action Replay não suporta códigos que modifiquem o próprio " "Action Replay." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "Isto não pode ser desfeito!" @@ -10402,7 +10641,11 @@ msgstr "" "trata de um disco de camada dupla que foi extraído como um disco de camada " "única." -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "Este arquivo não contém um sistema de arquivos do Wii válido." + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "Este arquivo não parece um backup NAND do BootMii." @@ -10428,11 +10671,11 @@ msgstr "" "dessa limitação o jogo apresentará problemas ou travamentos durante a " "execução." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "Essa cópia contém erros." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." @@ -10440,7 +10683,7 @@ msgstr "" "Essa cópia contém erros. Isso não significa necessariamente que o jogo não " "irá funcionar corretamente." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." @@ -10448,11 +10691,11 @@ msgstr "" "Essa é uma cópia válida do disco de acordo com Redump.org, no entanto o " "Dolphin encontrou problemas. Isso pode ser um bug no Dolphin." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "Essa cópia é válida." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "Esta sessão requer uma senha:" @@ -10526,7 +10769,7 @@ msgstr "" "Esse valor é multiplicado com a profundidade definida nas configurações " "gráficas." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." @@ -10534,7 +10777,7 @@ msgstr "" "Isto limitará a velocidade do upload fragmentado por cliente, a qual é usada " "pra sincronizar os saves." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -10558,7 +10801,7 @@ msgstr "Threads" msgid "Threshold" msgstr "Limite" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "TiB" @@ -10577,22 +10820,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Título" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "Até" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "Até:" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "Alternar &Tela Cheia" @@ -10617,7 +10860,7 @@ msgid "Toggle Aspect Ratio" msgstr "Alternar Proporção de Tela" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "Ativar/Desativar Pontos de Interrupção" @@ -10677,14 +10920,20 @@ msgstr "Falhou em tokenizing." msgid "Toolbar" msgstr "Barra de Ferramentas" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Em cima" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Sobreposto" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "Total de Acertos" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -10719,20 +10968,20 @@ msgid "Touch" msgstr "Toque" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Chinês Tradicional" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "Erro da Travessia" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "Servidor Traversal" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "Servidor traversal não respondeu enquanto conectava-se ao host." @@ -10764,22 +11013,14 @@ msgstr "Gatilhos" msgid "Type" msgstr "Tipo" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" +msgstr "Alinhamento baseado no tipo" + +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 msgid "Typical GameCube/Wii Address Space" msgstr "Espaço de endereço típico do GameCube/Wii" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" -msgstr "U&16" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "U&32" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" -msgstr "U&8" - #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 msgid "UNKNOWN" msgstr "DESCONHECIDO" @@ -10794,9 +11035,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "Erro no Redirecionamento USB" @@ -10838,10 +11079,14 @@ msgstr "" "compilação de shaders com um impacto mínimo no desempenho, mas os resultados " "dependem do comportamento do driver de vídeo." -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "Incapaz de auto-detectar o módulo do RSO" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "Não foi possível abrir o arquivo." + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10867,7 +11112,11 @@ msgstr "" "\n" "Você gostaria de ignorar esta linha e continuar a analisar?" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "Não foi possível ler o arquivo." + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "Incapaz de gravar no arquivo {0}" @@ -10879,15 +11128,15 @@ msgstr "Sem Limites" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "Imagens do GC/Wii sem compressão (*.iso *.gcm)" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Desfazer Carregamento" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Desfazer Estado Salvo" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "Desinstalar" @@ -10903,18 +11152,18 @@ msgstr "" "Desinstalar o WAD removerá a versão atualmente instalada desse software da " "NAND, sem excluir seus dados salvos. Continuar?" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "Estados Unidos" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Desconhecido" @@ -10922,7 +11171,7 @@ msgstr "Desconhecido" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "Comando desconhecido do DVD {0:08x} - erro fatal" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "Mensagem SYNC_CODES desconhecida recebida com a ID: {0}" @@ -10934,7 +11183,7 @@ msgstr "" "Mensagem SYNC_GECKO_CODES desconhecida com ID:{0} recebida do Jogador:{1} " "Expulsando jogador!" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "Mensagem desconhecida do SYNC_GECKO_DATA recebida com a id: {0}" @@ -10946,15 +11195,15 @@ msgstr "" "Mensagem SYNC_SAVE_DATA desconhecida com ID:{0} recebida do Jogador:{1} " "Expulsando jogador!" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "Espaço do endereço desconhecido" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "Autor desconhecido" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "Tipo de dado desconhecido" @@ -10962,19 +11211,19 @@ msgstr "Tipo de dado desconhecido" msgid "Unknown disc" msgstr "Disco desconhecido" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "Um erro desconhecido ocorreu." -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "Erro desconhecido {0:x}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "Erro desconhecido." -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "Mensagem desconhecida recebida com a id: {0}" @@ -10983,7 +11232,7 @@ msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" "Mensagem desconhecida com ID:{0} recebida do Jogador:{1} Expulsando jogador!" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Ilimitado" @@ -10999,13 +11248,28 @@ msgstr "Destravar Cursor" msgid "Unpacking" msgstr "Descomprimindo" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "Não Assinou 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "Não Assinou 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "Não Assinou 8" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "Inteiro Não Assinada" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -11014,7 +11278,7 @@ msgstr "Para cima" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Atualizar" @@ -11071,7 +11335,7 @@ msgstr "Alternar Vertical" msgid "Upright Wii Remote" msgstr "Wii Remote na Vertical" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "Configurações de Estatísticas de Uso" @@ -11087,7 +11351,7 @@ msgstr "Usar Estilo de Usuário Personalizado" msgid "Use Lossless Codec (FFV1)" msgstr "Usar Codec Sem Perdas (FFV1)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "Usar Modo PAL60 (EuRGB60)" @@ -11128,18 +11392,59 @@ msgstr "" "Usar um único buffer de profundidade para os dois olhos. Necessário em " "alguns jogos." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "Use a configuração do mapeador de memória no tempo do scan" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "Use endereços físicos" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "Use endereços virtuais quando possível" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" +"Usado pra achar funções baseadas em quando elas deveriam estar em execução.\n" +"Similar ao Cheat Engine Ultimap.\n" +"Um mapa dos símbolos deve ser carregado antes do uso.\n" +"As listas de Inclusão/Exclusão persistirão em encerrar/reiniciar a " +"emulação.\n" +"Estas listas não persistirão quando o Dolphin fechar.\n" +"\n" +"'Iniciar Gravação': mantém rastro de quais funções executam.\n" +"'Parar a Gravação': apaga a gravação atual sem qualquer mudança nas listas.\n" +"'O código não foi executado': clicar enquanto grava adicionará as funções " +"gravadas a uma lista de exclusão então reseta a lista de gravação.\n" +"'O código foi executado': clicar enquanto grava adicionará a função gravada " +"a uma lista de inclusão então reseta a lista de gravação.\n" +"\n" +"Após você usar ambos exclusão e inclusão uma vez, a lista de exclusão será " +"subtraída da lista de inclusão e quaisquer incluisões restantes serão " +"exibidas.\n" +"Você pode continuar a usar 'O código não foi executado'/'O código foi " +"executado' pra reduzir os resultados." + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "Configuração do Usuário" @@ -11152,11 +11457,11 @@ msgstr "Interface do Usuário" msgid "User Style:" msgstr "Estilo de Usuário:" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "Variáveis do Usuário" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" @@ -11166,7 +11471,7 @@ msgstr "" "Você pode usá-las pra salvar ou recuperar os valores entre\n" "as entradas e saídas do mesmo controle principal." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -11203,23 +11508,23 @@ msgstr "" msgid "Using Qt %1" msgstr "Usando o Qt %1" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "Geralmente usado pra iluminar objetos" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "Geralmente usado pra matrizes normais" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "Geralmente usado pras matrizes da posição" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "Geralmente usado pras matrizes da coordenação das texturas" @@ -11232,7 +11537,7 @@ msgstr "Utilidades" msgid "V-Sync" msgstr "V-Sync" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Valor" @@ -11265,8 +11570,8 @@ msgstr "Verificar certificados" msgid "Verifying" msgstr "Verificando" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "Versão" @@ -11302,7 +11607,7 @@ msgstr "Visualizar &memória" msgid "Virtual Notches" msgstr "Níveis Virtuais" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "Espaço do endereço virtual" @@ -11329,7 +11634,7 @@ msgstr "Aumentar Volume" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "Arquivos WAD (*.wad)" @@ -11388,7 +11693,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "WASAPI (Modo Exclusivo)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "WFS:" @@ -11396,8 +11701,8 @@ msgstr "WFS:" msgid "WIA GC/Wii images (*.wia)" msgstr "Imagens WIA do GC/Wii (*.wia)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "Esperando pelo primeiro scan..." @@ -11430,7 +11735,7 @@ msgstr "" "emulação estiver abaixo de 100%.

Na dúvida, " "mantenha essa opção desativada." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -11449,10 +11754,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Aviso" @@ -11473,7 +11778,7 @@ msgstr "" "AVISO: O número de blocos indicados pelo BAT ({0}) não corresponde com o " "cabeçalho do arquivo carregado ({1})" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " @@ -11483,7 +11788,7 @@ msgstr "" "{1}) (entrada dos dados {2} > {3}). Você deveria carregar outro save antes " "de continuar ou carregar este state com o modo somente-leitura desligado." -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " @@ -11493,7 +11798,7 @@ msgstr "" "atual no estado (byte {0} < {1}) (quadro {2} < {3}). Você deve carregar " "outro estado salvo antes de continuar." -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" @@ -11504,7 +11809,7 @@ msgstr "" "com o modo somente-leitura desligado. De outro modo você provavelmente terá " "uma dessincronização." -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -11547,7 +11852,7 @@ msgstr "" msgid "Watch" msgstr "Observar" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "Website" @@ -11586,11 +11891,11 @@ msgstr "" "

Na dúvida, mantenha essa opção ativada." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "Dispositivos Permitidos no Redirecionamento USB" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Hack de Widescreen" @@ -11606,11 +11911,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Wii Menu" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "NAND do Wii:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Wii Remote" @@ -11618,8 +11923,8 @@ msgstr "Wii Remote" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "Wii Remote %1" @@ -11632,11 +11937,11 @@ msgstr "Botões do Wii Remote" msgid "Wii Remote Orientation" msgstr "Orientação do Wii Remote" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Configurações do Wii Remote" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Wii Remotes" @@ -11652,7 +11957,7 @@ msgstr "Entrada de Dados TAS - Wii Remote %1" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "Entrada de Dados TAS - Wii Remote + Nunchuk %1" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "Wii e Wii Remote" @@ -11660,7 +11965,7 @@ msgstr "Wii e Wii Remote" msgid "Wii data is not public yet" msgstr "Dados do Wii ainda não são públicos" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "Arquivo de dados salvos do Wii (*.bin);;Todos os arquivos (*)" @@ -11691,18 +11996,18 @@ msgid "World" msgstr "Global" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "Gravação" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "Gravar Dados do Save" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "Só Gravação" @@ -11715,12 +12020,12 @@ msgid "Write to File" msgstr "Gravar no Arquivo" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "Gravar no Log" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "Gravar no Log e Dividir" @@ -11728,9 +12033,9 @@ msgstr "Gravar no Log e Dividir" msgid "Write to Window" msgstr "Gravar na Janela" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" -msgstr "Versão Errada" +msgstr "Versão Incorreta" #. i18n: Refers to a 3D axis (used when mapping motion controls) #: Source/Core/DolphinQt/TAS/WiiTASInputWindow.cpp:109 @@ -11739,7 +12044,7 @@ msgstr "Versão Errada" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "Registrador XF" @@ -11768,8 +12073,8 @@ msgid "Yellow" msgstr "Amarelo" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "Sim" @@ -11826,7 +12131,7 @@ msgstr "" "quaisquer problemas encontrados, a menos que eles também ocorram no macOS " "10.14+." -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" "Você já está executando a versão mais recente disponível neste canal de " @@ -11873,11 +12178,11 @@ msgstr "" msgid "You have to enter a name." msgstr "Você tem que inserir um nome." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "Você deve fornecer um nome para sua sessão!" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "Você deve fornecer uma região para sua sessão!" @@ -11885,7 +12190,7 @@ msgstr "Você deve fornecer uma região para sua sessão!" msgid "You must restart Dolphin in order for the change to take effect." msgstr "Você precisa reiniciar o Dolphin para que as alterações tenham efeito." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "Você precisa selecionar um jogo para hospedar!" @@ -11924,23 +12229,23 @@ msgstr "Código Zero 3 não é suportado" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "Código zero desconhecido pelo Dolphin: {0:08x}" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "[%1, %2]" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "[%1, %2] e [%3, %4]" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "^ Xou" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "alinhado" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "qualquer valor" @@ -11959,13 +12264,13 @@ msgstr "cm" msgid "d3d12.dll could not be loaded." msgstr "d3d12.dll não pôde ser carregado." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "padrão" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "desconectado" @@ -11975,37 +12280,37 @@ msgstr "Cartões do e-Reader (*.raw);;Todos os arquivos (*)" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:186 msgid "errno" -msgstr "err não" +msgstr "errno" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:95 msgid "fake-completion" msgstr "Falsa conclusão" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "é Igual a" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "é maior do que" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "é maior do que ou igual a" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "é menor do que" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "é menor ou igual a" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "não é igual a" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "último valor" @@ -12037,7 +12342,7 @@ msgstr "desligado" msgid "on" msgstr "ligado" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "ou selecione um dispositivo da lista" @@ -12046,7 +12351,7 @@ msgstr "ou selecione um dispositivo da lista" msgid "s" msgstr "s" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "este valor:" @@ -12055,7 +12360,7 @@ msgstr "este valor:" msgid "uDraw GameTablet" msgstr "Tablet uDraw" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "desalinhado" @@ -12074,7 +12379,7 @@ msgstr "{0} (Masterpiece)" msgid "{0} (NKit)" msgstr "{0} (NKit)" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "{0} IPL achado no diretório {1}. O disco poderia não ser reconhecido" @@ -12095,15 +12400,15 @@ msgstr "" " Verifique suas permissões de gravação ou mova o arquivo pra fora do Dolphin" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" -msgstr "{0} de {1} blocos. Proporção da compressão {2}%" +msgstr "{0} de {1} blocos. Taxa de compressão: {2}%" #: Source/Core/Core/HW/EXI/EXI_DeviceMemoryCard.cpp:199 msgid "{0} was not a directory, moved to *.original" msgstr "{0} não era um diretório, movido pro *.original" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "| Ou" diff --git a/Languages/po/ro.po b/Languages/po/ro.po index c61bd4c93743..0d4b76064bd8 100644 --- a/Languages/po/ro.po +++ b/Languages/po/ro.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Arian - Cazare Muncitori , 2014\n" "Language-Team: Romanian (http://www.transifex.com/delroth/dolphin-emu/" "language/ro/)\n" "Language: ro\n" @@ -20,7 +20,7 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" "2:1));\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -28,7 +28,7 @@ msgid "" "problems that Dolphin is unable to detect." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -36,7 +36,7 @@ msgid "" "that it hasn't been tampered with." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -52,7 +52,7 @@ msgstr "" msgid " (Disc %1)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "" @@ -60,7 +60,7 @@ msgstr "" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -74,7 +74,7 @@ msgstr "" msgid "%" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -88,17 +88,17 @@ msgstr "" msgid "%1 %" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "" @@ -117,7 +117,7 @@ msgid "%1 (Revision %3)" msgstr "" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -154,7 +154,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "" @@ -165,23 +165,23 @@ msgid "" "Current Frame: %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -190,11 +190,11 @@ msgstr "" msgid "%1 ms" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "" @@ -206,15 +206,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -230,30 +230,30 @@ msgstr "" msgid "%1[%2]: %3/%4 MiB" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "" @@ -273,7 +273,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "" @@ -282,11 +282,11 @@ msgid "&Add Memory Breakpoint" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "" @@ -294,19 +294,19 @@ msgstr "" msgid "&Add..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "" @@ -314,11 +314,11 @@ msgstr "" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Puncte de întrerupere" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "" @@ -326,15 +326,15 @@ msgstr "" msgid "&Cancel" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "" @@ -342,7 +342,7 @@ msgstr "" msgid "&Clone..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "" @@ -350,19 +350,20 @@ msgstr "" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "" @@ -374,7 +375,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "" @@ -382,11 +383,11 @@ msgstr "" msgid "&Edit..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulare" @@ -398,43 +399,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Fișier" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "&Avans Cadru" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "&Configurări Grafică" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Ajutor" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "&Configurări Tastă Rapidă" @@ -446,11 +451,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "" @@ -458,7 +463,7 @@ msgstr "" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -466,23 +471,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "&Status de Încărcare" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Memorie" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "" @@ -490,7 +495,7 @@ msgstr "" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "" @@ -498,24 +503,24 @@ msgstr "" msgid "&No" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Deschide..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Opțiuni" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Pauză" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Redare" @@ -523,11 +528,11 @@ msgstr "&Redare" msgid "&Properties" msgstr "&Proprietăți" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Înregistrări" @@ -536,24 +541,24 @@ msgid "&Remove" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Resetează" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "" @@ -561,11 +566,11 @@ msgstr "" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Stop" @@ -573,11 +578,11 @@ msgstr "&Stop" msgid "&Theme:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Instrumente" @@ -585,17 +590,17 @@ msgstr "&Instrumente" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Vizualizează" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "" @@ -607,11 +612,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" @@ -623,7 +628,7 @@ msgstr "" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(oprit)" @@ -631,34 +636,34 @@ msgstr "(oprit)" msgid "(ppc)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" @@ -666,6 +671,10 @@ msgstr "" msgid "128 Mbit (2043 blocks)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "" @@ -674,35 +683,35 @@ msgstr "" msgid "16-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "" @@ -714,25 +723,25 @@ msgstr "" msgid "32-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "" @@ -746,28 +755,32 @@ msgstr "" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "" @@ -775,29 +788,33 @@ msgstr "" msgid "64 Mbit (1019 blocks)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "" @@ -806,25 +823,25 @@ msgstr "" msgid "8-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "" @@ -843,12 +860,12 @@ msgid "" "Notes:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "" @@ -866,17 +883,17 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" @@ -885,7 +902,7 @@ msgstr "" msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -909,8 +926,8 @@ msgstr "" msgid "AR Codes" msgstr "Coduri AR" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "" @@ -933,7 +950,7 @@ msgstr "" msgid "Accuracy:" msgstr "Precizie:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "" @@ -1029,9 +1046,9 @@ msgstr "" msgid "Adapter:" msgstr "Adaptor:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Adaugă" @@ -1039,11 +1056,11 @@ msgstr "Adaugă" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "" @@ -1075,46 +1092,49 @@ msgstr "" msgid "Add to &watch" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Adaugă..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1158,39 +1178,43 @@ msgstr "Avansat" msgid "Africa" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "" @@ -1199,25 +1223,25 @@ msgstr "" msgid "All players' saves synchronized." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1243,7 +1267,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "" @@ -1261,39 +1285,39 @@ msgstr "Unghi" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Filtrare Anizotropă:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Antialias:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1307,15 +1331,15 @@ msgstr "" msgid "Apply" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "" @@ -1323,11 +1347,11 @@ msgstr "" msgid "Are you sure you want to delete this file?" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "" @@ -1340,11 +1364,11 @@ msgid "Aspect Ratio" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Raport Aspect:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "" @@ -1352,7 +1376,7 @@ msgstr "" msgid "Assign Controllers" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1377,7 +1401,7 @@ msgstr "" msgid "Australia" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "" @@ -1389,15 +1413,15 @@ msgstr "" msgid "Auto" msgstr "Auto" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Auto (Multiple de 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1413,7 +1437,7 @@ msgstr "" msgid "Auto-Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1424,12 +1448,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "" @@ -1444,11 +1468,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "Înregistrare BP" @@ -1474,7 +1498,7 @@ msgstr "Configurări Backend" msgid "Backend:" msgstr "Backend:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Intrare Fundal" @@ -1485,7 +1509,13 @@ msgstr "Intrare Fundal" msgid "Backward" msgstr "Înapoi" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1493,19 +1523,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Banner" @@ -1529,7 +1560,7 @@ msgstr "" msgid "Basic" msgstr "Principal" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Configurări Principale" @@ -1537,7 +1568,7 @@ msgstr "Configurări Principale" msgid "Bass" msgstr "Bass" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1545,11 +1576,11 @@ msgstr "" msgid "Battery" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1571,7 +1602,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "" @@ -1584,7 +1615,7 @@ msgstr "" msgid "Blocking" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Blocuri" @@ -1607,15 +1638,15 @@ msgid "" "Passthrough mode cannot be used." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "" @@ -1623,7 +1654,7 @@ msgstr "" msgid "Borderless Fullscreen" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Jos" @@ -1637,7 +1668,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "" @@ -1646,7 +1677,7 @@ msgstr "" msgid "Breakpoint" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" @@ -1676,7 +1707,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1684,12 +1715,12 @@ msgstr "" msgid "Buffer Size:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Tampon:" @@ -1731,11 +1762,11 @@ msgstr "Butoane" msgid "C Stick" msgstr "C Stick" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "" @@ -1766,7 +1797,7 @@ msgstr "" msgid "Calculate" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1786,15 +1817,15 @@ msgstr "" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1804,7 +1835,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1812,16 +1843,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "" @@ -1838,23 +1869,23 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "" @@ -1876,7 +1907,7 @@ msgstr "" msgid "Change &Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Schimbă &Discul..." @@ -1884,15 +1915,15 @@ msgstr "Schimbă &Discul..." msgid "Change Disc" msgstr "Schimbă Discul" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1912,7 +1943,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Chat" @@ -1928,11 +1959,11 @@ msgstr "Căutare Trișări" msgid "Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "" @@ -1946,7 +1977,7 @@ msgid "" "whether it's still in use." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "" @@ -1954,16 +1985,16 @@ msgstr "" msgid "China" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Alege un fișier pentru a-l deschide" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -1986,14 +2017,14 @@ msgid "Classic Controller" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Curăță" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "" @@ -2010,28 +2041,47 @@ msgstr "" msgid "Close" msgstr "Închide" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2049,7 +2099,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "" @@ -2062,7 +2112,7 @@ msgstr "" msgid "Compression:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "" @@ -2074,13 +2124,13 @@ msgstr "" msgid "Config" msgstr "Configurare" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Configurare" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2088,21 +2138,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "" @@ -2115,26 +2165,26 @@ msgstr "" msgid "Confirm on Stop" msgstr "Confirmă la Oprire" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Conectare" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Conectează Placa de Echilibru" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Conectează Tastatura USB" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "" @@ -2154,11 +2204,11 @@ msgstr "" msgid "Connect Wii Remote 4" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" @@ -2170,15 +2220,19 @@ msgstr "" msgid "Connected" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Scanare Continuă" @@ -2191,7 +2245,7 @@ msgstr "" msgid "Control Stick" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "" @@ -2219,7 +2273,7 @@ msgstr "" msgid "Controllers" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2227,7 +2281,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2236,7 +2290,7 @@ msgid "" "Native.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2261,12 +2315,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "" @@ -2303,33 +2357,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "" @@ -2337,11 +2396,15 @@ msgstr "" msgid "Copy failed" msgstr "Copiere eșuată" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "" @@ -2356,16 +2419,16 @@ msgstr "Nucleu" msgid "Cost" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "" @@ -2444,15 +2507,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2479,7 +2542,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "" @@ -2502,11 +2565,11 @@ msgstr "" msgid "Crossfade" msgstr "Estompare Intercalată" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2514,7 +2577,7 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "" @@ -2522,7 +2585,7 @@ msgstr "" msgid "Current thread" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2553,7 +2616,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "" @@ -2581,7 +2644,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2589,11 +2652,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Saltea de Dans" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "" @@ -2605,28 +2668,27 @@ msgstr "" msgid "Data Transfer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2644,7 +2706,7 @@ msgid "Debug Only" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Depanare" @@ -2686,7 +2748,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Implicit" @@ -2702,7 +2764,7 @@ msgstr "" msgid "Default Font" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "ISO implicit:" @@ -2727,7 +2789,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2742,11 +2804,11 @@ msgid "Delete Selected Files..." msgstr "" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2754,21 +2816,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Descriere" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "" @@ -2777,11 +2839,11 @@ msgstr "" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Detectare" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2789,25 +2851,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Dispozitiv" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Configurări Dispozitiv" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "" @@ -2819,11 +2881,15 @@ msgstr "" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "" @@ -2854,7 +2920,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "" @@ -2866,15 +2932,15 @@ msgstr "" msgid "Disable Emulation Speed Limit" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Dezactivează Ceața" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "" @@ -2882,7 +2948,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2896,7 +2962,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2913,11 +2979,15 @@ msgstr "Disc" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2935,25 +3005,25 @@ msgstr "" msgid "Distance of travel from neutral position." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Vrei să oprești emularea curentă?" @@ -2970,9 +3040,9 @@ msgstr "" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "" @@ -2984,8 +3054,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr " Filme TAS Dolphin (*.dtm)" @@ -3018,21 +3088,21 @@ msgstr "" msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3047,7 +3117,7 @@ msgstr "" msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "" @@ -3060,24 +3130,26 @@ msgid "Done compressing disc image." msgstr "" #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Jos" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "" @@ -3085,11 +3157,11 @@ msgstr "" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "" @@ -3112,27 +3184,35 @@ msgstr "" msgid "Dual Core" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Dummy" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Dump Audio" @@ -3144,7 +3224,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "Dump Destinație EFB" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Dump Cadre" @@ -3156,7 +3236,7 @@ msgstr "" msgid "Dump Objects" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "" @@ -3253,16 +3333,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Olandeză" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "I&sire" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3274,7 +3354,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3302,7 +3382,7 @@ msgstr "Efect" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3310,7 +3390,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "" @@ -3322,7 +3402,7 @@ msgstr "" msgid "Embedded Frame Buffer (EFB)" msgstr "" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "" @@ -3330,11 +3410,11 @@ msgstr "" msgid "Emu Thread already running" msgstr "Firul Emu rulează deja" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "" @@ -3350,8 +3430,12 @@ msgstr "" msgid "Emulation Speed" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3367,7 +3451,7 @@ msgstr "" msgid "Enable Audio Stretching" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Activare Trucuri" @@ -3379,7 +3463,7 @@ msgstr "" msgid "Enable Dual Core" msgstr "Activare Nucleu Dublu" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Activare Nucleu Dublu (accelerare)" @@ -3405,19 +3489,19 @@ msgid "Enable Progressive Scan" msgstr "Activare Scanare Progresivă" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Activare Economizor Ecran" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Activare Date Vorbitor" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "" @@ -3443,7 +3527,7 @@ msgid "" "= Compatible, OFF = Fast)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3451,7 +3535,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3481,7 +3565,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3517,7 +3601,7 @@ msgstr "" msgid "Encoding" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3530,12 +3614,12 @@ msgid "Enet Didn't Initialize" msgstr "" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Engleză" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3545,7 +3629,7 @@ msgstr "Îmbunătățiri" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "" @@ -3559,11 +3643,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "" @@ -3572,65 +3656,68 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Eroare" @@ -3645,19 +3732,19 @@ msgstr "" "Eroare la încărcarea limbii selectate. Se revine la configurările implicite " "de sistem. " -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3677,7 +3764,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3727,11 +3814,11 @@ msgid "" "may not show fonts correctly, or crash." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3740,11 +3827,39 @@ msgstr "" msgid "Euphoria" msgstr "Euforia" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3793,14 +3908,14 @@ msgstr "" msgid "Experimental" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Exportă Toate Salvările Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3808,15 +3923,15 @@ msgstr "" msgid "Export Recording" msgstr "Export Înregistrare" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Export Înregistrare..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3828,22 +3943,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Extensie" @@ -3856,7 +3971,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3864,7 +3979,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "" @@ -3902,7 +4017,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "Jucător FIFO" @@ -3910,17 +4025,17 @@ msgstr "Jucător FIFO" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -3932,7 +4047,7 @@ msgstr "" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -3953,12 +4068,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -3970,19 +4085,19 @@ msgstr "" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Descărcarea codurilor a eșuat." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -3991,7 +4106,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "" @@ -4014,29 +4129,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "" @@ -4052,23 +4167,23 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "" @@ -4080,11 +4195,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "" @@ -4095,7 +4210,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "" @@ -4122,11 +4237,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "" @@ -4135,7 +4250,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4147,7 +4262,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4155,25 +4270,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4188,15 +4303,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4204,23 +4319,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4228,11 +4343,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Eșec la scrierea BT.DINF în SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4240,22 +4355,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4264,19 +4379,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4289,7 +4404,7 @@ msgstr "Rapid" msgid "Fast Depth Calculation" msgstr "" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4306,7 +4421,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "" @@ -4320,18 +4435,18 @@ msgstr "Info Fişier " #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "" @@ -4339,11 +4454,11 @@ msgstr "" msgid "File Size:" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "Fișierul nu a conținut coduri." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4357,11 +4472,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4369,15 +4484,15 @@ msgstr "" msgid "Filesystem" msgstr "Sistem de fișiere" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4385,11 +4500,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "" @@ -4403,18 +4518,22 @@ msgid "" "This can take a while." msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Remediere Sume de verificare" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4424,13 +4543,14 @@ msgstr "" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "" @@ -4454,7 +4574,7 @@ msgstr "" msgid "Force 16:9" msgstr "Forțare 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "" @@ -4462,15 +4582,15 @@ msgstr "" msgid "Force 4:3" msgstr "Forțare 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Forțare Filtrare Textură" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4480,7 +4600,7 @@ msgid "" "
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4499,21 +4619,21 @@ msgstr "" msgid "Forward" msgstr "Înainte" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Redirecționare port (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "" @@ -4542,7 +4662,7 @@ msgstr "" msgid "Frame Range" msgstr "Interval Cadru" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4554,19 +4674,19 @@ msgstr "" msgid "France" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4574,7 +4694,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -4982,7 +5102,7 @@ msgstr "Verde Stânga" msgid "Green Right" msgstr "Verde Dreapta" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "" @@ -4995,7 +5115,7 @@ msgstr "Chitară" msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "" @@ -5008,12 +5128,29 @@ msgstr "Soluții" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5025,19 +5162,19 @@ msgstr "" msgid "Hide" msgstr "Ascunde" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5055,21 +5192,27 @@ msgstr "" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Gazdă" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5077,7 +5220,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5085,11 +5228,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "" @@ -5101,7 +5244,7 @@ msgstr "" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "" @@ -5152,11 +5295,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "Configurări IPL" @@ -5165,7 +5308,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "Sensibilitate IR:" @@ -5187,22 +5330,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Pictogramă" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5249,7 +5392,7 @@ msgstr "Ignoră Modificările de Format" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5257,7 +5400,7 @@ msgid "" "checked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5278,41 +5421,50 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" " Time elapsed: %1s" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5365,8 +5517,8 @@ msgstr "Info" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Informații" @@ -5375,10 +5527,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Intrare" @@ -5392,16 +5544,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Introdu Card SD" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "" @@ -5413,7 +5571,7 @@ msgstr "" msgid "Install Update" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "" @@ -5429,11 +5587,11 @@ msgstr "" msgid "Instruction" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "" @@ -5451,7 +5609,7 @@ msgid "Interface" msgstr "Interfață" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Eroare internă LZO - compresia a eșuat" @@ -5460,27 +5618,27 @@ msgstr "Eroare internă LZO - compresia a eșuat" msgid "Internal LZO Error - decompression failed" msgstr "" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Eroare internă LZO - lzo_init() a eșuat" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Rezoluția Internă:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5488,11 +5646,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5500,7 +5658,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5509,15 +5667,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5525,11 +5683,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "" @@ -5542,33 +5700,33 @@ msgstr "" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Fișier de înregistrare invalid" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Parametrii de căutare invalizi (nici un obiect selectat)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Expresie de căutare invalidă (nu se poate converti în număr)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "" "Expresie de căutare invalidă (numai lungimile de siruri de caractere sunt " "suportate)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "" @@ -5577,8 +5735,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Italiană" @@ -5586,11 +5744,11 @@ msgstr "Italiană" msgid "Italy" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "" @@ -5598,47 +5756,47 @@ msgstr "" msgid "JIT Blocks" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5650,11 +5808,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5665,12 +5823,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japoneză" @@ -5690,12 +5848,12 @@ msgstr "" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "" @@ -5708,20 +5866,20 @@ msgstr "" msgid "Keys" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Coreeană" @@ -5749,7 +5907,7 @@ msgstr "" msgid "Label" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5829,15 +5987,15 @@ msgstr "" msgid "License" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "" @@ -5846,17 +6004,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Încarcă" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "" @@ -5864,7 +6022,7 @@ msgstr "" msgid "Load Custom Textures" msgstr "Încarcă Texturi Personalizate" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "" @@ -5873,7 +6031,7 @@ msgstr "" msgid "Load Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -5966,23 +6124,23 @@ msgstr "Încarcă Status din Slotul 8" msgid "Load State Slot 9" msgstr "Încarcă Status din Slotul 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "" @@ -5990,12 +6148,12 @@ msgstr "" msgid "Load from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "" @@ -6003,7 +6161,7 @@ msgstr "" msgid "Load..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "" @@ -6014,7 +6172,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "" @@ -6023,7 +6181,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Jurnal" @@ -6031,7 +6189,7 @@ msgstr "Jurnal" msgid "Log Configuration" msgstr "Configurare Jurnal" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6058,7 +6216,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "" @@ -6087,7 +6245,7 @@ msgstr "" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6097,7 +6255,7 @@ msgstr "Stick Principal" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "" @@ -6106,7 +6264,7 @@ msgstr "" msgid "Maker:" msgstr "Marcaj:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6114,7 +6272,7 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "" @@ -6122,7 +6280,7 @@ msgstr "" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6130,15 +6288,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6147,7 +6305,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "" @@ -6156,11 +6314,11 @@ msgstr "" msgid "Medium" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "" @@ -6168,7 +6326,7 @@ msgstr "" msgid "Memory Card" msgstr "Card de memorie" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "" @@ -6186,7 +6344,7 @@ msgstr "" msgid "Memory Override" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "" @@ -6202,7 +6360,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6210,13 +6368,13 @@ msgid "" "want to continue?" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "" @@ -6224,19 +6382,19 @@ msgstr "" msgid "Misc" msgstr "Diverse" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Configurări Diverse" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6259,12 +6417,12 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6276,11 +6434,11 @@ msgstr "" msgid "Monospaced Font" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6320,10 +6478,10 @@ msgstr "" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "" @@ -6331,26 +6489,26 @@ msgstr "" msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "" @@ -6362,37 +6520,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Nume:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6400,16 +6558,16 @@ msgstr "" msgid "Netherlands" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "" @@ -6430,11 +6588,11 @@ msgstr "" msgid "New" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "" @@ -6442,7 +6600,7 @@ msgstr "" msgid "New Tag..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "" @@ -6459,7 +6617,7 @@ msgstr "" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6468,17 +6626,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "" @@ -6486,6 +6644,10 @@ msgstr "" msgid "No Adapter Detected" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "" @@ -6496,24 +6658,20 @@ msgstr "" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Nu există o descriere disponibilă" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6525,15 +6683,15 @@ msgstr "" msgid "No file loaded / recorded." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "" @@ -6541,11 +6699,15 @@ msgstr "" msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6556,7 +6718,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6564,17 +6726,13 @@ msgstr "" msgid "No save data found." msgstr "" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6584,7 +6742,7 @@ msgstr "Nimic" msgid "North America" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "" @@ -6592,11 +6750,11 @@ msgstr "" msgid "Not Set" msgstr "Nestabilit" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6604,7 +6762,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6664,13 +6822,13 @@ msgstr "" msgid "Nunchuk Stick" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6683,11 +6841,11 @@ msgid "Oceania" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Oprit" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6699,17 +6857,17 @@ msgstr "" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "&Documentație Online" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6724,7 +6882,7 @@ msgstr "Deschide" msgid "Open &Containing Folder" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "" @@ -6772,7 +6930,7 @@ msgstr "" msgid "OpenGL ES" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6790,7 +6948,7 @@ msgstr "Opțiuni" msgid "Orange" msgstr "Portocaliu" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6798,7 +6956,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Altele" @@ -6811,11 +6969,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "" @@ -6823,12 +6981,12 @@ msgstr "" msgid "Overlay Information" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "" @@ -6853,7 +7011,7 @@ msgstr "" msgid "PPC Size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6870,7 +7028,7 @@ msgstr "Paduri" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6879,23 +7037,23 @@ msgstr "" msgid "Parsing Error" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "" @@ -6916,7 +7074,7 @@ msgid "Path:" msgstr "" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Căi" @@ -6924,7 +7082,7 @@ msgstr "Căi" msgid "Pause" msgstr "Pauză" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "" @@ -6947,11 +7105,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Iluminare Per-Pixel" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "" @@ -6961,23 +7119,23 @@ msgstr "" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "" @@ -6990,7 +7148,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "" @@ -7010,16 +7168,16 @@ msgstr "Rulează Înregistrarea" msgid "Playback Options" msgstr "Opțiuni de Rulare" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Playere" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7030,29 +7188,29 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Efect Post-Procesare:" @@ -7064,15 +7222,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7109,7 +7267,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7120,15 +7278,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7136,25 +7294,25 @@ msgstr "" msgid "Problem" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Profil" @@ -7168,15 +7326,15 @@ msgstr "" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7188,11 +7346,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "" @@ -7202,12 +7360,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Întrebare" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Renunță" @@ -7227,11 +7385,11 @@ msgstr "R-Analog" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7244,44 +7402,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Interval" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "" @@ -7289,11 +7447,11 @@ msgstr "" msgid "Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Placa de Echilibru Reală" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "" @@ -7306,11 +7464,11 @@ msgstr "" msgid "Record" msgstr "Înregistrare" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7335,7 +7493,7 @@ msgstr "Roșu Stânga" msgid "Red Right" msgstr "Roșu Dreapta" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7351,16 +7509,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Reîmprospătare" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7368,26 +7526,26 @@ msgstr "" msgid "Refresh Game List" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "" @@ -7407,16 +7565,16 @@ msgstr "" msgid "Remind Me Later" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Elimină" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7439,8 +7597,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "" @@ -7473,29 +7631,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Resetare" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7503,15 +7669,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7523,11 +7689,11 @@ msgstr "" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "" @@ -7536,7 +7702,7 @@ msgstr "" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7594,11 +7760,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7607,12 +7773,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7622,11 +7789,11 @@ msgstr "" msgid "Rumble" msgstr "Vibrație" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7634,15 +7801,15 @@ msgstr "" msgid "Russia" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "" @@ -7658,7 +7825,7 @@ msgstr "" msgid "SHA-1:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "" @@ -7672,11 +7839,11 @@ msgstr "" msgid "START" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "Sal&vează Status" @@ -7686,7 +7853,7 @@ msgid "Safe" msgstr "Sigur" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7699,7 +7866,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7720,11 +7887,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7736,7 +7903,7 @@ msgstr "Salvează cel mai Vechi Status" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7786,23 +7953,23 @@ msgstr "Salvează Status din Slotul 8" msgid "Save State Slot 9" msgstr "Salvează Status din Slotul 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "" @@ -7810,7 +7977,7 @@ msgstr "" msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "" @@ -7822,26 +7989,26 @@ msgstr "" msgid "Save as..." msgstr "Salvează ca..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "" @@ -7849,7 +8016,7 @@ msgstr "" msgid "Save to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "" @@ -7857,23 +8024,23 @@ msgstr "" msgid "Save..." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Copie EFB Scalată" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7881,36 +8048,36 @@ msgstr "" msgid "ScrShot" msgstr "ScrShot" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Căutare" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Căutare Subdosare" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "" @@ -7918,7 +8085,7 @@ msgstr "" msgid "Search games..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "" @@ -7942,28 +8109,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Selectează" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -7971,11 +8138,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -7983,7 +8150,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "" @@ -7991,7 +8158,7 @@ msgstr "" msgid "Select State" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "" @@ -8035,41 +8202,45 @@ msgstr "" msgid "Select State Slot 9" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "" @@ -8077,11 +8248,11 @@ msgstr "" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8089,12 +8260,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Selectează fișierul salvat" @@ -8110,15 +8281,15 @@ msgstr "" msgid "Selected Font" msgstr "" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "Profilul controlerului selectat, nu există" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8142,7 +8313,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8182,11 +8353,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Trimite" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Poziția barei de senzor:" @@ -8198,63 +8369,71 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" "May not work for all games." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "" @@ -8264,7 +8443,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8299,11 +8478,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Afișare &Jurnal" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Afișare &Bară de Instrumente" @@ -8311,15 +8490,15 @@ msgstr "Afișare &Bară de Instrumente" msgid "Show Active Title in Window Title" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "" @@ -8327,7 +8506,7 @@ msgstr "" msgid "Show Debugging UI" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "" @@ -8335,43 +8514,43 @@ msgstr "" msgid "Show FPS" msgstr "Afișare FPS" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Afișare Franța" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "Afișare GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Afișare Ecran Conectat" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Afișare Italia" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Afișare Coreea" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "" @@ -8379,7 +8558,7 @@ msgstr "" msgid "Show Language:" msgstr "Afișare Limbă:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Afișare Jurnal &Configurare" @@ -8391,7 +8570,7 @@ msgstr "" msgid "Show NetPlay Ping" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "" @@ -8399,7 +8578,7 @@ msgstr "" msgid "Show On-Screen Display Messages" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Afișare PAL" @@ -8408,23 +8587,23 @@ msgstr "Afișare PAL" msgid "Show PC" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Afișare Platforme" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Afișare Regiuni" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "" @@ -8433,46 +8612,50 @@ msgstr "" msgid "Show Statistics" msgstr "Afișare Statistici" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Afișare Taiwan" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Afișare SUA" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Afișare Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8504,7 +8687,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "" @@ -8520,16 +8703,31 @@ msgstr "" msgid "Sideways Wii Remote" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Chineză simplificată" @@ -8537,7 +8735,7 @@ msgstr "Chineză simplificată" msgid "Simulate DK Bongos" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8564,7 +8762,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "Omite Acces EFB de la CPU" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "" @@ -8572,7 +8770,7 @@ msgstr "" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8586,19 +8784,19 @@ msgstr "" msgid "Slider Bar" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Slot A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Slot B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "" @@ -8616,7 +8814,7 @@ msgstr "" msgid "Software Renderer" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8633,11 +8831,11 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "" @@ -8650,8 +8848,8 @@ msgid "Spain" msgstr "" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Spaniolă" @@ -8659,7 +8857,7 @@ msgstr "Spaniolă" msgid "Speaker Pan" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Volum Difuzor:" @@ -8694,7 +8892,7 @@ msgstr "" msgid "Speed up Disc Transfer Rate" msgstr "Accelerează Frecvența de Transfer pe Disc" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "" @@ -8706,16 +8904,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Controler Standard" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Start" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "" @@ -8723,11 +8921,13 @@ msgstr "" msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Pornește Înregistrarea" @@ -8743,7 +8943,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "" @@ -8754,7 +8954,7 @@ msgstr "" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Volan" @@ -8782,19 +8982,19 @@ msgstr "" msgid "Step Over" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "" @@ -8803,20 +9003,20 @@ msgstr "" msgid "Stepping" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "" @@ -8837,11 +9037,15 @@ msgstr "Joystick" msgid "Stop" msgstr "Stop" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "" @@ -8855,7 +9059,7 @@ msgstr "" msgid "Store XFB Copies to Texture Only" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8864,7 +9068,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8877,7 +9081,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Potrivește la Fereastră" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "" @@ -8900,16 +9104,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -8919,11 +9123,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -8932,7 +9136,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "" @@ -8944,12 +9148,12 @@ msgstr "" msgid "Successfully extracted system data." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "" @@ -8961,16 +9165,16 @@ msgstr "" msgid "Support" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -8978,11 +9182,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -8994,50 +9198,62 @@ msgstr "" msgid "Swing" msgstr "Balans" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "" @@ -9051,37 +9267,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Limbă Sistem" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "Intrare TAS" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "" @@ -9099,11 +9315,11 @@ msgstr "" msgid "Taiwan" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Realizează CapturăEcran" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Test" @@ -9112,7 +9328,7 @@ msgstr "Test" msgid "Texture Cache" msgstr "Cache Textură" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9134,7 +9350,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9148,13 +9364,13 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "" @@ -9190,7 +9406,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9204,7 +9420,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9226,19 +9442,19 @@ msgstr "" msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9288,7 +9504,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9299,7 +9515,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9316,7 +9532,7 @@ msgstr "" msgid "The hashes match!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9338,12 +9554,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9358,20 +9574,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "Rezultatul codului AR decriptat nu conține nici o linie." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9392,7 +9608,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9443,7 +9659,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "" @@ -9479,7 +9695,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "" @@ -9499,7 +9715,7 @@ msgstr "" "Acest simulator de redare a acțiunii nu acceptă coduri ce modifică înseși " "Redarea Acțiunii." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "" @@ -9539,7 +9755,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "" @@ -9557,27 +9777,27 @@ msgid "" "or freezes while running this game." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9633,13 +9853,13 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9659,7 +9879,7 @@ msgstr "" msgid "Threshold" msgstr "Prag:" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "" @@ -9676,22 +9896,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Titlu" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "Către" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "" @@ -9716,7 +9936,7 @@ msgid "Toggle Aspect Ratio" msgstr "Comută Raportul de Aspect" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "" @@ -9776,14 +9996,20 @@ msgstr "" msgid "Toolbar" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Sus" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9818,20 +10044,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Chineză tradițională" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "" @@ -9861,20 +10087,12 @@ msgstr "Declanșatori" msgid "Type" msgstr "Tip:" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9891,9 +10109,9 @@ msgstr "" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -9921,10 +10139,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -9941,7 +10163,11 @@ msgid "" "Would you like to ignore this line and continue parsing?" msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -9953,15 +10179,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Anulare Status Încărcare" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Anulare Status Salvare" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "" @@ -9975,18 +10201,18 @@ msgid "" "title from the NAND without deleting its save data. Continue?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Necunoscut" @@ -9994,7 +10220,7 @@ msgstr "Necunoscut" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10004,7 +10230,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10014,15 +10240,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10030,19 +10256,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10050,7 +10276,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "" @@ -10066,13 +10292,28 @@ msgstr "" msgid "Unpacking" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10081,7 +10322,7 @@ msgstr "Sus" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Actualizare" @@ -10136,7 +10377,7 @@ msgstr "" msgid "Upright Wii Remote" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "" @@ -10152,7 +10393,7 @@ msgstr "" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "" @@ -10178,18 +10419,40 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "" @@ -10202,18 +10465,18 @@ msgstr "" msgid "User Style:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10239,23 +10502,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10268,7 +10531,7 @@ msgstr "Utilitar" msgid "V-Sync" msgstr "V-Sync" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Valoare" @@ -10301,8 +10564,8 @@ msgstr "" msgid "Verifying" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "" @@ -10338,7 +10601,7 @@ msgstr "" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10365,7 +10628,7 @@ msgstr "" msgid "Vulkan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "" @@ -10413,7 +10676,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10421,8 +10684,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10444,7 +10707,7 @@ msgid "" "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10457,10 +10720,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Atenție" @@ -10476,28 +10739,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10523,7 +10786,7 @@ msgstr "" msgid "Watch" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "" @@ -10552,11 +10815,11 @@ msgid "" "unsure, leave this checked." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Soluție Ecran Lat" @@ -10572,11 +10835,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Rădăcină NAND Wii:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "" @@ -10584,8 +10847,8 @@ msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "" @@ -10598,11 +10861,11 @@ msgstr "" msgid "Wii Remote Orientation" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "" @@ -10618,7 +10881,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "" @@ -10626,7 +10889,7 @@ msgstr "" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "" @@ -10654,18 +10917,18 @@ msgid "World" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "" @@ -10678,12 +10941,12 @@ msgid "Write to File" msgstr "Scrie în Fișier" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "" @@ -10691,7 +10954,7 @@ msgstr "" msgid "Write to Window" msgstr "Scrie în Fereastră" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10702,7 +10965,7 @@ msgstr "" msgid "X" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "" @@ -10731,8 +10994,8 @@ msgid "Yellow" msgstr "Galben" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "" @@ -10767,7 +11030,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10796,11 +11059,11 @@ msgstr "" msgid "You have to enter a name." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10808,7 +11071,7 @@ msgstr "" msgid "You must restart Dolphin in order for the change to take effect." msgstr "Trebuie să repornești Dolphin pentru ca modificările să aibă efect." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "" @@ -10839,23 +11102,23 @@ msgstr "Codul Zero 3 nu este acceptat" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10874,13 +11137,13 @@ msgstr "" msgid "d3d12.dll could not be loaded." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -10896,31 +11159,31 @@ msgstr "" msgid "fake-completion" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -10950,7 +11213,7 @@ msgstr "" msgid "on" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "" @@ -10959,7 +11222,7 @@ msgstr "" msgid "s" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -10968,7 +11231,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -10987,7 +11250,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -11006,7 +11269,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11014,7 +11277,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Languages/po/ru.po b/Languages/po/ru.po index 5e00a84013a6..c3248be16aba 100644 --- a/Languages/po/ru.po +++ b/Languages/po/ru.po @@ -13,15 +13,15 @@ # Irina Fedulova , 2020 # Kein , 2011 # P@S@f , 2015-2016 -# Sukharev Andrey , 2015-2021 +# Sukharev Andrey , 2015-2022 # Илья Гредасов , 2021 msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Sukharev Andrey , 2015-2022\n" "Language-Team: Russian (http://www.transifex.com/delroth/dolphin-emu/" "language/ru/)\n" "Language: ru\n" @@ -32,7 +32,7 @@ msgstr "" "%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" "%100>=11 && n%100<=14)? 2 : 3);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -44,7 +44,7 @@ msgstr "" "Dolphin может обнаружить не все проблемы, т.к. в образах дисков GameCube " "содержится мало проверочных данных." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -56,7 +56,7 @@ msgstr "" "Dolphin не может убедиться, что с продуктом всё в порядке, т.к. он не " "предназначен для розничных консолей Wii." -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -80,7 +80,7 @@ msgstr "" msgid " (Disc %1)" msgstr " (Диск %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "! Не" @@ -89,7 +89,7 @@ msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" "\"{0}\" является некорректным файлом GCM/ISO, или не является образом GC/Wii." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "$ Польз. переменная" @@ -103,7 +103,7 @@ msgstr "$ Польз. переменная" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "% По модулю" @@ -119,17 +119,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "%1 %2" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "%1 %2 %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -148,7 +148,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (Ревизия %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "%1 (из коробки)" @@ -188,7 +188,7 @@ msgstr "%1 MB (MEM2)" msgid "%1 doesn't support this feature on your system." msgstr "%1 не поддерживает данный функционал на вашей системе." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "%1 не поддерживает данный функционал." @@ -202,23 +202,23 @@ msgstr "" "%2 объект(ов)\n" "Текущий кадр: %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "%1 присоединился" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "%1 вышел" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "%1 — не корректный образ игры" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "%1 теперь играет в гольф" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "%1 байт памяти" @@ -227,11 +227,11 @@ msgstr "%1 байт памяти" msgid "%1 ms" msgstr "%1 мс" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "Найдено сессий: %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "Найдено сессий: %1" @@ -243,15 +243,15 @@ msgstr "%1%" msgid "%1% (%2 MHz)" msgstr "%1% (%2 MHz)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (обычная скорость)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "%1, %2, %3, %4" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "%1: %2" @@ -267,30 +267,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2]: %3/%4 МиБ" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "Родное %1x (%2x%3)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." -msgstr "" +msgstr "Осталось адресов: %n." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." -msgstr "" +msgstr "Удалено адресов: %n." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "& И" @@ -310,7 +310,7 @@ msgstr "&3x" msgid "&4x" msgstr "&4x" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&Об эмуляторе" @@ -319,11 +319,11 @@ msgid "&Add Memory Breakpoint" msgstr "&Добавить точку останова в памяти" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "&Добавить код..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "&Добавить функцию" @@ -331,19 +331,19 @@ msgstr "&Добавить функцию" msgid "&Add..." msgstr "&Добавить..." -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "Настройки &звука" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "&Автообновление:" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "&Автоматический запуск" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "&Запустить игру с DVD-бэкапа" @@ -351,11 +351,11 @@ msgstr "&Запустить игру с DVD-бэкапа" msgid "&Borderless Window" msgstr "&Окно без рамок" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Точки останова" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "&Баг-трекер" @@ -363,15 +363,15 @@ msgstr "&Баг-трекер" msgid "&Cancel" msgstr "&Отмена" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "&Менеджер читов" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "&Проверить обновления..." -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "&Очистить символы" @@ -379,7 +379,7 @@ msgstr "&Очистить символы" msgid "&Clone..." msgstr "&Клонировать..." -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "&Код" @@ -387,19 +387,20 @@ msgstr "&Код" msgid "&Connected" msgstr "&Подключен" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "Настройки &управления" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "&Скопировать адрес" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "&Создать..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "&Удалить" @@ -411,7 +412,7 @@ msgstr "&Удалить из наблюдения" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "&Изменить код..." @@ -419,11 +420,11 @@ msgstr "&Изменить код..." msgid "&Edit..." msgstr "&Изменить..." -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "&Извлечь диск" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Эмуляция" @@ -435,43 +436,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "&Экспорт в .gci..." -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Файл" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&Шрифт..." -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "Перемотка &кадров" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "Настройки &свободного обзора" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "&Создать символы из" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "Репозиторий на &GitHub" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "Настройки &графики" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Помощь" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "Горячие &клавиши" @@ -483,11 +488,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "&Импортировать..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "&Вставить blr" @@ -495,7 +500,7 @@ msgstr "&Вставить blr" msgid "&Interframe Blending" msgstr "&Межкадровый блендинг" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -503,23 +508,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "&Язык:" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "Быстрая &загрузка" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "&Загрузить карту символов" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "&Зафиксировать виджеты" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Память" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "&Запись" @@ -527,7 +532,7 @@ msgstr "&Запись" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "&Сеть" @@ -535,24 +540,24 @@ msgstr "&Сеть" msgid "&No" msgstr "&Нет" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Открыть..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Опции" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "&Патчить HLE-функции" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Пауза" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Запустить" @@ -560,11 +565,11 @@ msgstr "&Запустить" msgid "&Properties" msgstr "&Свойства" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "Режим \"Только для &чтения\"" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Регистры" @@ -573,24 +578,24 @@ msgid "&Remove" msgstr "&Удалить" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "&Удалить код" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "&Переименовать символ" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Сбросить" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "&Менеджер наборов ресурсов" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "&Сохранить карту символов" @@ -598,11 +603,11 @@ msgstr "&Сохранить карту символов" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "&Ограничение скорости:" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Остановить" @@ -610,11 +615,11 @@ msgstr "&Остановить" msgid "&Theme:" msgstr "&Тема:" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "&Потоки" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Инструменты" @@ -622,17 +627,17 @@ msgstr "&Инструменты" msgid "&Unload ROM" msgstr "&Выгрузить образ игры" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Вид" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&Наблюдение" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Сайт" @@ -644,11 +649,11 @@ msgstr "&Вики" msgid "&Yes" msgstr "&Да" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "'%1' не найден, имена символов не созданы" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "'%1' не найден, ищем на замену распространенные функции" @@ -660,7 +665,7 @@ msgstr "(Отсутствует)" msgid "(host)" msgstr "(хост)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(отключено)" @@ -668,34 +673,34 @@ msgstr "(отключено)" msgid "(ppc)" msgstr "(ppc)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "* Умножить" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "+ Добавить" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr ", Запятая" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "- Вычесть" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "--> %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "/ Разделить" @@ -703,6 +708,10 @@ msgstr "/ Разделить" msgid "128 Mbit (2043 blocks)" msgstr "128 Мбит (2043 блока)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "16 Мбит (251 блок)" @@ -711,35 +720,35 @@ msgstr "16 Мбит (251 блок)" msgid "16-bit" msgstr "16-бит" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "Родное 2x (1280x1056) для 720p" @@ -751,25 +760,25 @@ msgstr "32 Мбит (507 блоков)" msgid "32-bit" msgstr "32-бита" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -783,28 +792,32 @@ msgstr "Глубина 3D" msgid "3x" msgstr "3x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "Родное 3x (1920x1584) для 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Мбит (59 блоков)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "Родное 4x (2560x2112) для 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "Родное 5x (3200x2640)" @@ -812,29 +825,33 @@ msgstr "Родное 5x (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Мбит (1019 блоков)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "Родное 6x (3840x3168) для 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "Родное 7x (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Мбит (123 блока)" @@ -843,25 +860,25 @@ msgstr "8 Мбит (123 блока)" msgid "8-bit" msgstr "8-бит" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "Родное 8x (5120x4224) для 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "< Меньше чем" @@ -883,12 +900,12 @@ msgstr "" "вас запущена версия %2.
Хотите начать обновление?

Список " "изменений:

" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "> Больше чем" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "Сессия сетевой игры уже создана!" @@ -912,11 +929,11 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "Диск уже должен быть вставлен." -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "Чтобы загрузить быстрое сохранение, нужно указать игру." -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -924,7 +941,7 @@ msgstr "" "Завершение работы уже запущено. Если остановить эмуляцию, несохранённые " "данные могут быть утеряны. Остановить принудительно?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "Синхронизация возможна только при запущенной игре для Wii." @@ -933,7 +950,7 @@ msgstr "Синхронизация возможна только при запу msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -969,8 +986,8 @@ msgstr "AR-код" msgid "AR Codes" msgstr "AR-коды" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -993,7 +1010,7 @@ msgstr "Акселерометр" msgid "Accuracy:" msgstr "Точность:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "Действие" @@ -1104,9 +1121,9 @@ msgstr "Адаптер обнаружен" msgid "Adapter:" msgstr "Адаптер:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Добавить" @@ -1114,11 +1131,11 @@ msgstr "Добавить" msgid "Add &breakpoint" msgstr "Добавить &точку останова" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "Добавить новый сервер DSU" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "Добавление нового USB-устройства" @@ -1150,46 +1167,49 @@ msgstr "Добавить точку останова в памяти" msgid "Add to &watch" msgstr "Добавить в &наблюдение" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Добавить..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Адрес" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" -msgstr "Адр. пространство" +msgstr "Адресное пространство" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "Адрес:" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1252,39 +1272,43 @@ msgstr "Расширенные" msgid "Africa" msgstr "Африка" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "Все файлы" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "Все файлы (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" -msgstr "" +msgstr "Все файлы GC/Wii" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "Файлы быстрых сохранений (*.sav, *.s##);; Все файлы (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "Все устройства" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "Коды всех игроков синхронизированы." @@ -1293,19 +1317,19 @@ msgstr "Коды всех игроков синхронизированы." msgid "All players' saves synchronized." msgstr "Сохранения всех игроков синхронизированы." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "Разрешить несовпадение настроек региона" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "Разрешить отправку статистики об использовании" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "Разрешить запись на SD-карту" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." @@ -1313,7 +1337,7 @@ msgstr "" "Разрешает управление внутриигровой камерой.

Если не " "уверены – оставьте выключенным." -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1323,7 +1347,7 @@ msgstr "Другие источники ввода" #: Source/Core/DolphinQt/Settings/InterfacePane.cpp:183 msgid "Always" -msgstr "" +msgstr "Всегда" #. i18n: Treat a controller as always being connected regardless of what #. devices the user actually has plugged in @@ -1339,7 +1363,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "Ожидалась вставка диска, но он не был обнаружен." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Анаглиф" @@ -1357,39 +1381,39 @@ msgstr "Угол" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "Анизотропная фильтрация" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Анизотропная фильтрация:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "Сглаживание" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Сглаживание:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "Любой регион" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "Добавить сигнатуру к" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "Добавить к &имеющемуся файлу с сигнатурами..." -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "Примени&ть файл с сигнатурами..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1405,15 +1429,15 @@ msgstr "Дата загрузчика:" msgid "Apply" msgstr "Применить" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "Применить файл с сигнатурами" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "Обнаружение произвольных MIP-текстур" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "Вы действительно хотите удалить '%1'?" @@ -1421,11 +1445,11 @@ msgstr "Вы действительно хотите удалить '%1'?" msgid "Are you sure you want to delete this file?" msgstr "Вы действительно хотите удалить этот файл?" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "Вы уверены, что хотите удалить этот набор?" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "Вы уверены, что хотите выйти из сетевой игры?" @@ -1438,11 +1462,11 @@ msgid "Aspect Ratio" msgstr "Соотношение сторон" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Соотношение сторон:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Назначить порты контроллеров" @@ -1450,7 +1474,7 @@ msgstr "Назначить порты контроллеров" msgid "Assign Controllers" msgstr "Назначить контроллеры" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1477,7 +1501,7 @@ msgstr "Настройки растяжения звука" msgid "Australia" msgstr "Австралия" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "Автор" @@ -1489,15 +1513,15 @@ msgstr "Авторы" msgid "Auto" msgstr "Автоматически" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Автоматически (Кратное 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "Настройки автообновления" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1517,7 +1541,7 @@ msgstr "Автонастройка размера окна" msgid "Auto-Hide" msgstr "Автоскрытие" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "Обнаруживать RSO автоматически?" @@ -1531,12 +1555,12 @@ msgstr "" "dolphin_emphasis>" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "Вспомогательное" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "Б" @@ -1554,11 +1578,11 @@ msgstr "" "действительный MAC-адрес Nintendo GameCube. Сгенерируйте новый MAC-адрес, " "начиная с 00:09:bf или 00:17:ab." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "BIOS:" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "Регистр в ТО " @@ -1584,7 +1608,7 @@ msgstr "Настройки бэкенда" msgid "Backend:" msgstr "Бэкенд:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Ввод в фоне" @@ -1595,7 +1619,13 @@ msgstr "Ввод в фоне" msgid "Backward" msgstr "Назад" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "Указан некорректный адрес." @@ -1603,19 +1633,20 @@ msgstr "Указан некорректный адрес." msgid "Bad dump" msgstr "Плохой дамп" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "Указано неверное смещение." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "Указано некорректное значение." #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Логотип" @@ -1639,7 +1670,7 @@ msgstr "Базовый приоритет" msgid "Basic" msgstr "Основные" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Основные настройки" @@ -1647,7 +1678,7 @@ msgstr "Основные настройки" msgid "Bass" msgstr "Басы" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "Пакетный режим не может использоваться без указания запускаемой игры." @@ -1655,11 +1686,11 @@ msgstr "Пакетный режим не может использоваться msgid "Battery" msgstr "Батарея" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "Бета (раз в месяц)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "BetterJoy, DS4Windows и т.д." @@ -1681,7 +1712,7 @@ msgstr "Битрейт (кбит/с):" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "Размер блока" @@ -1694,7 +1725,7 @@ msgstr "Размер блока:" msgid "Blocking" msgstr "Блокирующий" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Блоков" @@ -1719,15 +1750,15 @@ msgstr "" "Включён режим проброса Bluetooth, но Dolphin собран без поддержки libusb. " "Невозможно использовать режим проброса." -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "Пауза после запуска" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "Файл бэкапа NAND BootMii (*.bin);;Все файлы (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "Файл с ключами BootMii (*.bin);;Все файлы (*)" @@ -1735,7 +1766,7 @@ msgstr "Файл с ключами BootMii (*.bin);;Все файлы (*)" msgid "Borderless Fullscreen" msgstr "Полноэкранный режим без рамок" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "снизу" @@ -1749,7 +1780,7 @@ msgid "Branches" msgstr "Ветви" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "Останов" @@ -1758,7 +1789,7 @@ msgstr "Останов" msgid "Breakpoint" msgstr "Точка останова" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "Попадание в точку останова! Шаг с выходом отменён." @@ -1780,15 +1811,15 @@ msgstr "Широкополосный адаптер (tapserver)" #: Source/Core/DolphinQt/Settings/BroadbandAdapterSettingsDialog.cpp:97 msgid "Broadband Adapter Error" -msgstr "" +msgstr "Ошибка широкополосного адаптера" #. i18n: MAC stands for Media Access Control. A MAC address uniquely identifies a network #. interface (physical) like a serial number. "MAC" should be kept in translations. #: Source/Core/DolphinQt/Settings/BroadbandAdapterSettingsDialog.cpp:48 msgid "Broadband Adapter MAC Address" -msgstr "" +msgstr "MAC-адрес широкополосного адаптера" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "Просмотр &сессий сетевой игры..." @@ -1796,12 +1827,12 @@ msgstr "Просмотр &сессий сетевой игры..." msgid "Buffer Size:" msgstr "Размер буфера:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "Размер буфера изменён на %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Буфер:" @@ -1845,11 +1876,11 @@ msgstr "Кнопки" msgid "C Stick" msgstr "C Stick" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "С&оздать файл с сигнатурами..." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "CP-регистр " @@ -1884,7 +1915,7 @@ msgstr "" msgid "Calculate" msgstr "Вычислить" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1909,15 +1940,15 @@ msgstr "Калибровка" msgid "Calibration Period" msgstr "Период калибровки" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "Стэк вызова" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "Камера 1" @@ -1927,7 +1958,7 @@ msgstr "Камера 1" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "Поле зрения камеры (влияет на точность наведения)." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1935,16 +1966,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "Не удаётся найти Wii Remote по дескриптору {0:02x}" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "Невозможно создать сессию сетевой игры, пока игра всё ещё запущена!" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "Отмена" @@ -1963,23 +1994,23 @@ msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" "Не удалось загрузить данный WAD, потому что его нельзя установить в NAND." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "Не удалось найти IPL GC." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "Не удалось запустить игру, потому что IPL GC не был найден." @@ -2001,7 +2032,7 @@ msgstr "Центрировать и откалибровать" msgid "Change &Disc" msgstr "Сменить &диск" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Сменить &диск..." @@ -2009,15 +2040,15 @@ msgstr "Сменить &диск..." msgid "Change Disc" msgstr "Сменить диск" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "Автоматически сменять диски" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "Сменить диск на {0}" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -2047,7 +2078,7 @@ msgstr "Изменения в читах вступят в силу после msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Чат" @@ -2063,11 +2094,11 @@ msgstr "Поиск чит-кодов" msgid "Cheats Manager" msgstr "Менеджер читов" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "Проверить NAND..." -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "Автоматически проверять список игр на наличие изменений" @@ -2083,7 +2114,7 @@ msgstr "" "Проверьте, достаточно ли у вас прав для удаления этого файла, и используется " "ли он приложением." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "Контр. сумма" @@ -2091,16 +2122,16 @@ msgstr "Контр. сумма" msgid "China" msgstr "Китай" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Выберите открываемый файл" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "Выберите основной входной файл" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "Выберите вторичный входной файл" @@ -2123,14 +2154,14 @@ msgid "Classic Controller" msgstr "Контроллер Classic" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Очистить" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "Очистить кэш" @@ -2147,28 +2178,47 @@ msgstr "Скопировать и &изменить код..." msgid "Close" msgstr "Закрыть" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "&Настройка" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Код" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Код:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "Коды получены!" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "Объединить &два файла с сигнатурами..." #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "Общее" @@ -2186,7 +2236,7 @@ msgstr "Компиляция шейдеров" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "Сжатие" @@ -2199,7 +2249,7 @@ msgstr "Уровень сжатия:" msgid "Compression:" msgstr "Сжатие:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "Условие" @@ -2211,13 +2261,13 @@ msgstr "Условие" msgid "Config" msgstr "Настройки" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Настройка" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "Настроить контроллер" @@ -2225,21 +2275,21 @@ msgstr "Настроить контроллер" msgid "Configure Dolphin" msgstr "Настройка Dolphin" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "Настройка ввода" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "Настройка вывода" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "Подтвердить" @@ -2252,26 +2302,26 @@ msgstr "Подтвердите смену бэкенда" msgid "Confirm on Stop" msgstr "Подтверждать остановку" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "Подтверждение" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Подключиться" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Подключить Balance Board" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Подключить USB-клавиатуру" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "Подключить Wii Remote %1" @@ -2291,11 +2341,11 @@ msgstr "Подключить Wii Remote 3" msgid "Connect Wii Remote 4" msgstr "Подключить Wii Remote 4" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "Подключить Wii Remote" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "Подключение Wii Remote для эмулируемых контроллеров" @@ -2307,15 +2357,19 @@ msgstr "Подключиться к интернету и выполнить о msgid "Connected" msgstr "Подключен" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Тип подключения:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "Содержимое {0:08x} повреждено." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Непрерывное сканирование" @@ -2328,7 +2382,7 @@ msgstr "Управление режимом гольфа сетевой игры msgid "Control Stick" msgstr "Control Stick" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "Профиль контроллера" @@ -2356,7 +2410,7 @@ msgstr "Настройки управления" msgid "Controllers" msgstr "Управление" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2368,7 +2422,7 @@ msgstr "" "находиться перед экраном.

Высокие значения создают более сильную " "видимость \"выпячивания\" обьектов из экрана, низкие – более комфортны." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2382,7 +2436,7 @@ msgstr "" "производительность.

Если не уверены – выберите " "Родное." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2415,12 +2469,12 @@ msgstr "" "Управляет тем, использовать высокоуровневую или низкоуровневую эмуляцию DSP. " "По умолчанию Да" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "Сведение" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Сведение:" @@ -2459,34 +2513,41 @@ msgid "" "Converting...\n" "%1" msgstr "" +"Идёт конвертация...\n" +"%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Копировать" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "Скопировать &функцию" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "Скопировать &hex-значение" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "Скопировать адрес" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "Копирование не удалось" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "Скопировать hex-значение" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "Скопировать код &строки" @@ -2494,11 +2555,15 @@ msgstr "Скопировать код &строки" msgid "Copy failed" msgstr "Копирование не удалось" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "Скопировать на A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "Скопировать на B" @@ -2513,16 +2578,16 @@ msgstr "Ядро" msgid "Cost" msgstr "Стоимость" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "Не удалось соединиться с хостом." -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "Не удалось войти в режим клиента." -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "Не удалось создать точку подключения." @@ -2632,15 +2697,15 @@ msgstr "" "папку, то, возможно, потребуется заново указать расположение вашей карты " "памяти в настройках." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "Не удалось обнаружить центральный сервер" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "Не удалось открыть файл." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "Не удалось прочесть файл." @@ -2672,7 +2737,7 @@ msgstr "" "dolphin_emphasis>" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "Создатель:" @@ -2698,19 +2763,19 @@ msgstr "" msgid "Crossfade" msgstr "Кроссфейдер" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "Текущий регион" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" -msgstr "" +msgstr "Тек. значение" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:145 msgid "Current context" msgstr "Текущий контекст" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "Текущей игры" @@ -2718,7 +2783,7 @@ msgstr "Текущей игры" msgid "Current thread" msgstr "Текущий поток" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2751,7 +2816,7 @@ msgstr "Размер DFF-файла — 0; испорченный/незакон msgid "DJ Turntable" msgstr "DJ пульт" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "Бонго DK" @@ -2779,7 +2844,7 @@ msgstr "Рекомпилятор DSP LLE (медленно)" msgid "DSU Client" msgstr "Клиент DSU" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2791,11 +2856,11 @@ msgstr "" "

Инструкцию по установке можно найти
на этой странице." -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Танцевальный коврик" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "Данные" @@ -2807,28 +2872,27 @@ msgstr "" msgid "Data Transfer" msgstr "Перенос данных" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "Тип данных" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "Данные в области файла, которые не должны использоваться." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "Данные находятся в нераспознанном формате или повреждены." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "Неконсистентность данных в GCMemcardManager, отмена действия." -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "Данные получены!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "Файлы Datel MaxDrive/Pro" @@ -2846,7 +2910,7 @@ msgid "Debug Only" msgstr "Только для отладки" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Отладка" @@ -2888,7 +2952,7 @@ msgstr "Уменьшить по X" msgid "Decrease Y" msgstr "Уменьшить по Y" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "По умолчанию" @@ -2904,7 +2968,7 @@ msgstr "Устройство по умолчанию" msgid "Default Font" msgstr "Шрифт по умолчанию" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "Образ по умолчанию:" @@ -2935,7 +2999,7 @@ msgstr "" "через ЦП.

Если не уверены – оставьте выключенным." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2950,11 +3014,11 @@ msgid "Delete Selected Files..." msgstr "Удалить выбранные файлы..." #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "Удалить существующий файл '{0}'?" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "Глубина" @@ -2962,21 +3026,21 @@ msgstr "Глубина" msgid "Depth Percentage:" msgstr "Процент глубины:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Глубина:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Описание" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Описание:" @@ -2985,11 +3049,11 @@ msgstr "Описание:" msgid "Detached" msgstr "Отсоединён" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Считать" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "Обнаружение модулей RSO" @@ -2997,25 +3061,25 @@ msgstr "Обнаружение модулей RSO" msgid "Deterministic dual core:" msgstr "Детерминированная двухядерность:" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "Разрабатываемая (несколько раз в день)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Устройство" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "PID устройства (напр., 0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Настройки устройства" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "VID устройства (напр., 057e)" @@ -3027,11 +3091,15 @@ msgstr "Устройство:" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "Затемняет экран после пяти минут бездействия." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "Прямое подключение" @@ -3069,7 +3137,7 @@ msgstr "Отключить" msgid "Disable Bounding Box" msgstr "Отключить эмуляцию bounding box" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "Отключить фильтр копирования" @@ -3081,15 +3149,15 @@ msgstr "Отключить копии EFB в VRAM" msgid "Disable Emulation Speed Limit" msgstr "Отключить огр. скорости эмуляции" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "Отключить быструю память" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Отключить туман" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "Отключить кэш JIT" @@ -3097,7 +3165,7 @@ msgstr "Отключить кэш JIT" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -3118,7 +3186,7 @@ msgstr "" "в ОЗУ. Подавляет масштабирование.

Если не уверены – " "оставьте выключенным." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -3141,11 +3209,15 @@ msgstr "Диск" msgid "Discard" msgstr "Отменить" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -3168,25 +3240,25 @@ msgstr "Расстояние" msgid "Distance of travel from neutral position." msgstr "Проходимое расстояние из исходной позиции." -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "Вы разрешаете отправку данной информации разработчикам Dolphin?" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "Вы хотите добавить \"%1\" в список путей к играм?" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "Вы хотите очистить список имён символов?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "Вы хотите удалить выбранные файлы сохранений (%n шт.)?" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Вы хотите остановить текущую эмуляцию?" @@ -3203,9 +3275,9 @@ msgstr "Лог Dolphin FIFO (*.dff)" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "Файл карты Dolphin (*.map)" @@ -3217,8 +3289,8 @@ msgstr "CSV-файл с сигнатурами Dolphin" msgid "Dolphin Signature File" msgstr "Файл с сигнатурами Dolphin" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "TAS-ролики (*.dtm)" @@ -3254,11 +3326,11 @@ msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "" "Dolphin – бесплатный эмулятор GameCube и Wii с открытым исходным кодом." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "Слишком старая версия Dolphin для подключения к промежуточному серверу" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." @@ -3266,11 +3338,11 @@ msgstr "" "Dolphin не может корректно проверить обычные файлы TGC, потому что они не " "являются дампами настоящих дисков." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "Dolphin не может проверить нелицензионные диски." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3287,7 +3359,7 @@ msgstr "На данный момент поддержка читов в Dolphin msgid "Domain" msgstr "Домен" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "Не обновлять" @@ -3300,24 +3372,26 @@ msgid "Done compressing disc image." msgstr "Сжатие образа диска завершено." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "Double" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Вниз" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "Скачать коды" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "Скачать коды из базы данных WiiRD" @@ -3325,11 +3399,11 @@ msgstr "Скачать коды из базы данных WiiRD" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "Загружать обложки игр с GameTDB.com для показа в виде сетки" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "Загрузка завершена" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "Скачано %1 кодов. (добавлено %2)" @@ -3352,27 +3426,35 @@ msgstr "Ударная установка" msgid "Dual Core" msgstr "Двухъядерный режим" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Заглушка" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "Дампить &ARAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "Дампить &ExRAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "Дампить &FakeVMEM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "Дампить &MRAM" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Дампить звук" @@ -3384,7 +3466,7 @@ msgstr "Дампить основные текстуры" msgid "Dump EFB Target" msgstr "Дампить конечный EFB" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Дампить кадры" @@ -3396,7 +3478,7 @@ msgstr "Дампить Mip-текстуры" msgid "Dump Objects" msgstr "Дампить объекты" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "Путь к дампам:" @@ -3511,16 +3593,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "Длительность отпускания турбо-кнопки (в кадрах):" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Голландский" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "&Закрыть" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3535,7 +3617,7 @@ msgstr "" "{1} -- Если вы недавно обновили Dolphin, то, скорее всего, необходимо " "перезагрузить компьютер, чтобы Windows обнаружил новый драйвер." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3567,7 +3649,7 @@ msgstr "Эффект" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "Эффективное" @@ -3575,7 +3657,7 @@ msgstr "Эффективное" msgid "Effective priority" msgstr "Эффективный приоритет" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "ЭиБ" @@ -3587,7 +3669,7 @@ msgstr "Извлечь диск" msgid "Embedded Frame Buffer (EFB)" msgstr "Встроенный буфер кадров (EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Пусто" @@ -3595,11 +3677,11 @@ msgstr "Пусто" msgid "Emu Thread already running" msgstr "Процесс эмулятора уже запущен" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "Эмулировать Bluetooth-адаптер Wii" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "Эмулируемый Wii Remote" @@ -3618,8 +3700,12 @@ msgstr "" msgid "Emulation Speed" msgstr "Скорость эмуляции" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3635,7 +3721,7 @@ msgstr "Включить слои проверки API" msgid "Enable Audio Stretching" msgstr "Включить растяжение звука" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Включить чит-коды" @@ -3647,7 +3733,7 @@ msgstr "Включить переопределение времени" msgid "Enable Dual Core" msgstr "Включить двухядерный режим" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Включить двухядерный режим (ускорение)" @@ -3673,19 +3759,19 @@ msgid "Enable Progressive Scan" msgstr "Включить прогрессивную развёртку" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "Включить вибрацию" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Включить скринсейвер" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Включить данные динамика" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "Включить отправку статистики об использовании" @@ -3718,7 +3804,7 @@ msgstr "" "result flag), необходимого для небольшого количества игр. (ВКЛ = лучше " "совместимость, ВЫКЛ = выше скорость)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3730,7 +3816,7 @@ msgstr "" "проблемы.

Если не уверены , выберите 1х." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3777,7 +3863,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "Включает растяжение звука для соответствия скорости эмуляции." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3826,7 +3912,7 @@ msgstr "" msgid "Encoding" msgstr "Кодировка" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3843,12 +3929,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet не был инициализирован" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Английский" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3858,7 +3944,7 @@ msgstr "Улучшения" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "Введите ID USB-устройства" @@ -3872,11 +3958,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "Введите новый MAC-адрес широкополосного адаптера:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "Введите пароль" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "Введите адрес модуля RSO:" @@ -3885,65 +3971,68 @@ msgstr "Введите адрес модуля RSO:" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Ошибка" @@ -3957,19 +4046,19 @@ msgid "Error loading selected language. Falling back to system default." msgstr "" "Ошибка загрузки выбранного языка. Возврат к языку системы по умолчанию." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "Ошибка при получении списка сессий: %1" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "Ошибка обработки кодов." -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "Ошибка обработки данных." @@ -3989,7 +4078,7 @@ msgstr "Ошибка синхронизации сохранений!" msgid "Error writing file: {0}" msgstr "Ошибка записи в файл: {0}" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -4045,11 +4134,11 @@ msgstr "" "Ошибка: попытка получить доступ к шрифтам Windows-1252, когда они не " "загружены. Игры могут показывать шрифты некорректно или падать." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "В {0} блоках раздела {1} найдены ошибки." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "В {0} неиспользуемых блоках раздела {1} найдены ошибки." @@ -4058,11 +4147,39 @@ msgstr "В {0} неиспользуемых блоках раздела {1} на msgid "Euphoria" msgstr "Эйфория" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Европа" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "Только убершейдеры" @@ -4111,14 +4228,14 @@ msgstr "Ожидалось название переменной." msgid "Experimental" msgstr "Экспериментальные" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Экспортировать все сохранения Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "Не удалось экспортировать" @@ -4126,15 +4243,15 @@ msgstr "Не удалось экспортировать" msgid "Export Recording" msgstr "Экспорт записи" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Экспорт записи..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "Экспортировать файл сохранения" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "Экспорт файлов сохранений" @@ -4146,22 +4263,22 @@ msgstr "Экспортировать сохранение Wii" msgid "Export Wii Saves" msgstr "Экспортировать сохранения Wii" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "Экспорт в .&gcs..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "Экспорт в .&sav..." -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "Экспортировано сохранений: %n" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Расширение" @@ -4174,7 +4291,7 @@ msgstr "Данные движения расширения" msgid "Extension Motion Simulation" msgstr "Симуляция движения расширения" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "Внешний адрес" @@ -4182,7 +4299,7 @@ msgstr "Внешний адрес" msgid "External Frame Buffer (XFB)" msgstr "Внешний буфер кадров (XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "Извлечь сертификаты из NAND" @@ -4220,15 +4337,15 @@ msgid "FD" msgstr "ФД" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "Проигрыватель FIFO" #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:132 msgid "Failed loading XML." -msgstr "" +msgstr "Не удалось загрузить XML." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" @@ -4236,11 +4353,11 @@ msgstr "" "Не удалось открыть карту памяти:\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "Не удалось добавить сессию в индекс сетевой игры: %1" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "Не удалось добавить данные в файл с сигнатурами '%1'" @@ -4252,7 +4369,7 @@ msgstr "Не удалось запросить интерфейс для про msgid "Failed to connect to Redump.org" msgstr "Не удалось подключиться к Redump.org" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "Не удалось подключиться к серверу: %1" @@ -4273,12 +4390,12 @@ msgstr "Не удалось создать глобальные ресурсы D msgid "Failed to create DXGI factory" msgstr "Не удалось создать фабрику DXGI" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" "Не удалось удалить карту памяти сетевой игры. Проверьте, что у вас есть " @@ -4292,19 +4409,19 @@ msgstr "Не удалось удалить выбранный файл." msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "Не удалось отключить драйвер ядра для проброса BT: {0}" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Не удалось скачать коды." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "Не удалось сдампить %1: невозможно открыть файл" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "Не удалось сдампить %1: ошибка записи в файл" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "Не удалось экспортировать %n из %1 сохранений." @@ -4313,7 +4430,7 @@ msgstr "Не удалось экспортировать %n из %1 сохран msgid "Failed to export the following save files:" msgstr "Не удалось экспортировать следующие файлы сохранений:" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "Не удалось извлечь сертификаты из NAND" @@ -4339,18 +4456,18 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "Не удалось найти один или более символ D3D" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "Не удалось импортировать \"%1\"." -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" "Не удалось импортировать файл сохранения. Пожалуйста, запустите игру, а " "потом попробуйте ещё раз." -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." @@ -4358,7 +4475,7 @@ msgstr "" "Не удалось импортировать файл сохранения. Похоже, что данный файл повреждён " "или не является корректным сохранением Wii." -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " @@ -4369,7 +4486,7 @@ msgstr "" "ваш NAND (Инструменты -> Управлять NAND -> Проверить NAND...), затем " "импортируйте файл сохранения ещё раз." -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "Не удалось инициализировать ядро" @@ -4385,16 +4502,16 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "Не удалось инициализировать классы рендеринга" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "Не удалось установить набор: %1" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "Не удалось установить этот продукт в NAND." -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" @@ -4402,8 +4519,8 @@ msgstr "" "Не удалось инициализировать прослушивание порта %1. У вас запущен ещё один " "сервер сетевой игры?" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "Не удалось загрузить модуль RSO на %1" @@ -4415,11 +4532,11 @@ msgstr "Не удалось загрузить d3d11.dll" msgid "Failed to load dxgi.dll" msgstr "Не удалось загрузить dxgi.dll" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "Не удалось загрузить файл с картой '%1'" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "Не удалось загрузить исполняемый файл в память." @@ -4432,7 +4549,7 @@ msgstr "" "установить пакет обновления KB4019990." #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "Не удалось открыть '%1'" @@ -4463,11 +4580,11 @@ msgstr "" "Убедитесь, что у вас есть приложение, на которое назначено открытие INI-" "файлов." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "Не удалось открыть файл." -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "Не удалось открыть сервер" @@ -4476,7 +4593,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "Не удалось открыть входной файл \"%1\"." #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4491,7 +4608,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "Не удалось обработать данные с Redump.org" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4499,25 +4616,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "Не удалось прочесть DFF-файл." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "Не удалось прочитать данные из файла." #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "Не удалось прочесть входной файл \"{0}\"." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "Не удалось прочитать выбранные файлы сохранений с карты памяти." -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "Не удалось прочесть {0}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "Не удалось удалить файл." @@ -4535,19 +4652,19 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "Не удалось удалить этот продукт из NAND." -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" "Не удалось сбросить папку сетевой игры GCI. Проверьте, что у вас есть права " "на запись." -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" "Не удалось сбросить папку сетевой игры NAND. Проверьте, что у вас есть права " "на запись." -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4555,23 +4672,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "Не удалось сохранить лог FIFO." -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "Не удалось сохранить карту кода по пути '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "Не удалось сохранить файл сигнатуры '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "Не удалось сохранить карту символов по пути '%1'" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "Не удалось сохранить файл с сигнатурами '%1'" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "Не удалось деактивировать набор: %1" @@ -4579,11 +4696,11 @@ msgstr "Не удалось деактивировать набор: %1" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Не удалось записать BT.DINF в SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "Не удалось записать данные Mii." -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "Не удалось записать сохранение Wii." @@ -4591,22 +4708,22 @@ msgstr "Не удалось записать сохранение Wii." msgid "Failed to write config file!" msgstr "Не удалось записать файл с конфигурацией!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "Не удалось записать изменённую карту памяти на диск." -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "Не удалось записать файл сохранения на диск." #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4617,19 +4734,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "Ошибка" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "Честная задержка ввода" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "Резервный регион" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "Резервный регион:" @@ -4642,7 +4759,7 @@ msgstr "Быстрое" msgid "Fast Depth Calculation" msgstr "Быстрое вычисление глубины" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4661,7 +4778,7 @@ msgstr "Информация о файле" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "Формат файла" @@ -4675,18 +4792,18 @@ msgstr "Информация о файле" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Имя файла" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "Путь к файлу" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Размер файла" @@ -4694,11 +4811,11 @@ msgstr "Размер файла" msgid "File Size:" msgstr "Размер файла:" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "Файл не содержит кодов." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "Имя файла" @@ -4714,13 +4831,13 @@ msgstr "" "Не найдены следующие файлы, указанные в M3U-файле \"{0}\":\n" "{1}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" "Размер файла не совпадает с размером ни одной известной карты памяти " "GameCube." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "Размер файла в заголовке не совпадает с настоящим размером карты." @@ -4728,15 +4845,15 @@ msgstr "Размер файла в заголовке не совпадает с msgid "Filesystem" msgstr "Файловая система" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "Фильтр символов" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "Фильтры" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4748,11 +4865,11 @@ msgstr "" "вызвать проблемы в других.

Если не уверены – " "оставьте выключенным." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "Искать &далее" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "Искать &ранее" @@ -4768,18 +4885,22 @@ msgstr "" "Завершение обновления...\n" "Это может занять некоторое время." -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "От первого лица" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Исправить контр. суммы" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "Не удалось исправить контрольные суммы" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4789,13 +4910,14 @@ msgstr "Флаги" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "Float" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "Перейти к &ветке" @@ -4821,7 +4943,7 @@ msgstr "" msgid "Force 16:9" msgstr "Принудительно 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "Принудительная 24-битная палитра" @@ -4829,15 +4951,15 @@ msgstr "Принудительная 24-битная палитра" msgid "Force 4:3" msgstr "Принудительно 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "Принудительно слушать порт:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Принудительная фильтрация текстур" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4854,7 +4976,7 @@ msgstr "" "

Если не уверены – оставьте выключенным." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4878,21 +5000,21 @@ msgstr "Формат:" msgid "Forward" msgstr "Вперед" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Пробросить порт (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "Найдено %1 результатов для \"%2\"" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." -msgstr "" +msgstr "Найдено адресов: %n." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "Кадр %1" @@ -4921,7 +5043,7 @@ msgstr "Дамп кадров" msgid "Frame Range" msgstr "Диапазон кадров" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "Изображения с дампами кадра(ов) '{0}' уже существуют. Перезаписать?" @@ -4933,19 +5055,19 @@ msgstr "Кадров для записи:" msgid "France" msgstr "Франция" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "Свободных блоков: %1" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "Свободных файлов: %1" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "Тип управления свободным обзором" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "Контроллер свободного обзора %1" @@ -4953,7 +5075,7 @@ msgstr "Контроллер свободного обзора %1" msgid "Free Look Settings" msgstr "Настройки свободного обзора" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -5393,7 +5515,7 @@ msgstr "Зеленая слева" msgid "Green Right" msgstr "Зеленая справа" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "В виде сетки" @@ -5406,7 +5528,7 @@ msgstr "Гитара" msgid "Gyroscope" msgstr "Гироскоп" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5419,12 +5541,29 @@ msgstr "Хаки" msgid "Head" msgstr "Голова" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "Помощь" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5436,19 +5575,19 @@ msgstr "Шестнадцатеричный" msgid "Hide" msgstr "Спрятать" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "Скрыть все" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "Скрыть сессии \"В игре\"" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "Скрыть несовместимые сессии" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "Скрыть сетевые GBA" @@ -5466,21 +5605,27 @@ msgstr "Самое высокое" msgid "Hit Strength" msgstr "Сила удара" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "Гориз. угол обзора" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Создать" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "Код хоста:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "Хост управляет вводом" @@ -5488,7 +5633,7 @@ msgstr "Хост управляет вводом" msgid "Host Size" msgstr "Размер хоста" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5501,11 +5646,11 @@ msgstr "" "Подходит для казуальных игр с 3 и более игроками, возможно, при нестабильных " "соединениях или соединениях с высокой задержкой." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "Хост не управляет вводом" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "Хост управляет вводом" @@ -5517,7 +5662,7 @@ msgstr "Создать сетевую игру" msgid "Hostname" msgstr "Имя хоста" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "Горячие клавиши" @@ -5574,11 +5719,11 @@ msgstr "" "Пожалуйста, обратитесь к инструкции по настройки сети Wii: https://dolphin-" "emu.org/docs/guides/wii-network-guide/" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "IP-адрес:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "Настройки IPL" @@ -5587,7 +5732,7 @@ msgid "IR" msgstr "ИК" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "Чувствительность ИК:" @@ -5624,11 +5769,11 @@ msgstr "" "поздними версиями. Может эффективно сжимать данные-пустышки и зашифрованные " "данные Wii." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Иконка" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" @@ -5639,11 +5784,11 @@ msgstr "" "Подходит для пошаговых игр с элементами управления, чувствительными ко " "времени, такими как гольф." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "Генерация ID" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5702,7 +5847,7 @@ msgstr "Игнорировать изменение формата" msgid "Ignore for this session" msgstr "Игнорировать для данной сессии" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5714,7 +5859,7 @@ msgstr "" "графикой в небольшом количестве других игр.

Если не " "уверены – оставьте включенным." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5745,30 +5890,30 @@ msgstr "" "

Если не уверены – оставьте выключенным." -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "Импортировать бэкап BootMii NAND..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "Не удалось импортировать" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "Импорт файлов сохранений" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Импортировать сохранение Wii..." -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "Импортирование бэкапа NAND" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" @@ -5777,11 +5922,20 @@ msgstr "" "Импортирование бэкапа NAND\n" " Прошло времени: %1s" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "В игре?" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5839,8 +5993,8 @@ msgstr "Информация" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Информация" @@ -5849,10 +6003,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "Запретить скринсейвер во время эмуляции" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Ввод" @@ -5866,16 +6020,22 @@ msgstr "Сила ввода, требуемая для активации." msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "Вставить &nop" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Вставить SD-карту" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "Установить" @@ -5887,7 +6047,7 @@ msgstr "Установить раздел (%1)" msgid "Install Update" msgstr "Установить обновление" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "Установить WAD..." @@ -5903,11 +6063,11 @@ msgstr "Инстр." msgid "Instruction" msgstr "Инструкция" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "Точка останова инструкции" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "Инструкция:" @@ -5925,7 +6085,7 @@ msgid "Interface" msgstr "Интерфейс" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Внутренняя ошибка LZO - ошибка сжатия" @@ -5934,7 +6094,7 @@ msgstr "Внутренняя ошибка LZO - ошибка сжатия" msgid "Internal LZO Error - decompression failed" msgstr "Внутренняя ошибка LZO - распаковка не удалась" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" @@ -5942,21 +6102,21 @@ msgstr "" "Внутренняя ошибка LZO - ошибка распаковки ({0}) ({1}, {2}) \n" "Попробуйте загрузить сохранение повторно" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Внутренняя ошибка LZO - ошибка в lzo_init()" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "Внутреннее разрешение" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Внутреннее разрешение:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5964,11 +6124,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "Интерпретатор (самый медленный)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "Ядро интерпретатора" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "Некорректное выражение." @@ -5976,7 +6136,7 @@ msgstr "Некорректное выражение." msgid "Invalid Mixed Code" msgstr "Неверный смешанный код" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "Некорректный набор %1 указан: %2" @@ -5985,15 +6145,15 @@ msgstr "Некорректный набор %1 указан: %2" msgid "Invalid Player ID" msgstr "Некорректный ID игрока" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "Некорректный адрес модуля RSO: %1" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "Некорректный стэк вызовов" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "Некорректные контрольные суммы." @@ -6001,11 +6161,11 @@ msgstr "Некорректные контрольные суммы." msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "Неверный хост-сервер" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "Неверные входные данные для поля \"%1\"" @@ -6018,31 +6178,31 @@ msgstr "Неверные входные данные" msgid "Invalid literal." msgstr "Некорректный литерал." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "Предоставлен неверный пароль." -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Неверный файл записи" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Неверные параметры поиска (не выбран объект)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Неверная строка поиска (невозможно конвертировать в число)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "Неверная строка поиска (поддерживаются только строки чётной длины)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "Неверный ID продукта." @@ -6051,8 +6211,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Итальянский" @@ -6060,11 +6220,11 @@ msgstr "Итальянский" msgid "Italy" msgstr "Италия" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "Отключить линковку блоков JIT" @@ -6072,47 +6232,47 @@ msgstr "Отключить линковку блоков JIT" msgid "JIT Blocks" msgstr "Блоки JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "Отключить JIT Branch" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "Отключить JIT для FloatingPoint" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "Отключить JIT для Integer" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "Отключить JIT LoadStore Floating" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "Отключить JIT LoadStore" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "Отключить JIT LoadStore Paired" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "Отключить JIT LoadStore lXz" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "Отключить JIT LoadStore lbzx" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "Отключить JIT LoadStore lwz" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "Отключить JIT (ядро JIT)" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "Отключить JIT Paired" @@ -6124,11 +6284,11 @@ msgstr "JIT-рекомпилятор для ARM64 (рекомендуется)" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "JIT-рекомпилятор для x86-64 (рекомендуется)" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "Отключить кэш регистров JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "Отключить JIT SystemRegisters" @@ -6142,12 +6302,12 @@ msgstr "" "происходить. Пожалуйста, сообщите об этой ошибке в багтрекере. Dolphin " "завершит работу." -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Япония" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Японский" @@ -6167,12 +6327,12 @@ msgstr "Держать окно поверх остальных" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Клавиатура" @@ -6185,20 +6345,20 @@ msgstr "Клавиатура" msgid "Keys" msgstr "Клавиши" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "КиБ" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Исключить игрока" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Корея" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Корейский" @@ -6226,9 +6386,9 @@ msgstr "Сохр. LR" msgid "Label" msgstr "Название" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" -msgstr "" +msgstr "Посл. значение" #: Source/Core/DolphinQt/Settings/AudioPane.cpp:85 msgid "Latency:" @@ -6312,15 +6472,15 @@ msgstr "" msgid "License" msgstr "Лицензия" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "Ограничить скорость закачки:" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "Столбцы в списке" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "В виде списка" @@ -6329,17 +6489,17 @@ msgid "Listening" msgstr "Прослушивание" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Загр." -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "Загрузить файл с &плохими картами..." -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "Загрузить &другой файл с картой..." @@ -6347,7 +6507,7 @@ msgstr "Загрузить &другой файл с картой..." msgid "Load Custom Textures" msgstr "Загружать свои текстуры" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "Загрузить главное меню GameCube" @@ -6356,7 +6516,7 @@ msgstr "Загрузить главное меню GameCube" msgid "Load Last State" msgstr "Загрузить последнее сохранение" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "Путь к загрузке:" @@ -6449,23 +6609,23 @@ msgstr "Быстрая загрузка 8" msgid "Load State Slot 9" msgstr "Быстрая загрузка 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "Быстрая загрузка из файла" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "Быстрая загрузка из выбранного слота" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "Быстрая загрузка из слота" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "Загружать сохранения Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "Загрузить системное меню Wii %1" @@ -6473,12 +6633,12 @@ msgstr "Загрузить системное меню Wii %1" msgid "Load from Selected Slot" msgstr "Загрузить из выбранного слота" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "Быстрая загрузка из слота %1 - %2" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "Загрузить файл с картой" @@ -6486,7 +6646,7 @@ msgstr "Загрузить файл с картой" msgid "Load..." msgstr "Загрузить..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "Загружены символы из '%1'" @@ -6500,7 +6660,7 @@ msgstr "" "DynamicInputTextures/<game_id>/.

Если не " "уверены – оставьте выключенным." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "Локальный адрес" @@ -6509,7 +6669,7 @@ msgid "Lock Mouse Cursor" msgstr "Захватывать курсор мыши" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Лог" @@ -6517,7 +6677,7 @@ msgstr "Лог" msgid "Log Configuration" msgstr "Настройка логирования" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "Логировать покрытие инструкций JIT" @@ -6548,7 +6708,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "Соединение с сервером сетевой игры потеряно..." @@ -6577,7 +6737,7 @@ msgstr "MMU" msgid "MORIBUND" msgstr "УМИРАЕТ" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "Файлы Gameshark MadCatz" @@ -6587,7 +6747,7 @@ msgstr "Основной стик" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Создатель" @@ -6596,7 +6756,7 @@ msgstr "Создатель" msgid "Maker:" msgstr "Создатель:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6609,7 +6769,7 @@ msgstr "" "

Если не уверены – оставьте выключенным." -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "Управлять NAND" @@ -6617,7 +6777,7 @@ msgstr "Управлять NAND" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "Порты" @@ -6625,15 +6785,15 @@ msgstr "Порты" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "Найдено совпадение" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "Максимальный буфер:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "Максимальный размер буфера изменён на %1" @@ -6642,7 +6802,7 @@ msgstr "Максимальный размер буфера изменён на % msgid "Maximum tilt angle." msgstr "Максимальный угол наклона." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "Может привести к замедлению в меню Wii и некоторых играх." @@ -6651,11 +6811,11 @@ msgstr "Может привести к замедлению в меню Wii и msgid "Medium" msgstr "Среднее" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "Память" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "Точка останова в памяти" @@ -6663,7 +6823,7 @@ msgstr "Точка останова в памяти" msgid "Memory Card" msgstr "Карта памяти" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "Менеджер карт памяти" @@ -6687,7 +6847,7 @@ msgstr "" msgid "Memory Override" msgstr "Переопределение памяти" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "Опции точек останова в памяти" @@ -6703,7 +6863,7 @@ msgstr "MemoryCard: вызвано чтение некорректного уч msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "MemoryCard: вызвана запись в некорректный участок памяти ({0:#x})" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6714,13 +6874,13 @@ msgstr "" "сохранения. Этот процесс необратим, поэтому рекомендуется иметь бэкапы обоих " "NAND. Вы уверены, что хотите продолжить?" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "МиБ" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Микрофон" @@ -6728,21 +6888,21 @@ msgstr "Микрофон" msgid "Misc" msgstr "Разное" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Разное" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" "Расхождение между количеством свободных блоков в заголовке и количеством " "неиспользованных блоков." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "Расхождение во внутренних структурах данных." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6776,12 +6936,12 @@ msgstr "" "

Если не уверены – оставьте выключенным." -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "Найдено модулей: %1" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "Моно" @@ -6793,11 +6953,11 @@ msgstr "Моноскопические тени" msgid "Monospaced Font" msgstr "Моноширный шрифт" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "Данные движения" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "Симуляция движения" @@ -6837,10 +6997,10 @@ msgstr "Ролик" msgid "N&o to All" msgstr "&Нет для всех" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "Проверка NAND" @@ -6848,26 +7008,26 @@ msgstr "Проверка NAND" msgid "NKit Warning" msgstr "Предупреждение NKit" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "NTSC-K" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "Имя" @@ -6879,37 +7039,37 @@ msgstr "Название новой метки:" msgid "Name of the tag to remove:" msgstr "Название удаляемой метки:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "Имя вашей сессии для отображения в списке серверов" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Имя:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Родное (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "Стандартный файл GCI" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "Сетевая игра" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "Просмотр сессий сетевой игры" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "Настройка сетевой игры" @@ -6917,18 +7077,18 @@ msgstr "Настройка сетевой игры" msgid "Netherlands" msgstr "Нидерландский" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "Рассинхронизация сетевой игры в NetPlay_GetButtonPress()" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" "Произошла рассинхронизация при сетевой игре. Из этого состояния возобновить " "игру невозможно." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "Сеть" @@ -6938,7 +7098,7 @@ msgstr "Формат дампа сети:" #: Source/Core/DolphinQt/Settings/InterfacePane.cpp:180 msgid "Never" -msgstr "" +msgstr "Никогда" #: Source/Core/DolphinQt/Updater.cpp:74 msgid "Never Auto-Update" @@ -6949,11 +7109,11 @@ msgstr "Запретить автообновление" msgid "New" msgstr "Новая" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "Новая точка останова" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "Новый поиск" @@ -6961,7 +7121,7 @@ msgstr "Новый поиск" msgid "New Tag..." msgstr "Новая метка..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "Новый ID сгенерирован." @@ -6978,7 +7138,7 @@ msgstr "Новая метка" msgid "Next Game Profile" msgstr "Следующий игровой профиль" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "Следующее совпадение" @@ -6987,17 +7147,17 @@ msgstr "Следующее совпадение" msgid "Next Profile" msgstr "Следующий профиль" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "Ник очень длинный." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Ник:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "Нет" @@ -7005,6 +7165,10 @@ msgstr "Нет" msgid "No Adapter Detected" msgstr "Адаптеров не обнаружено" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "Нет вывода звука" @@ -7015,24 +7179,20 @@ msgstr "Нет вывода звука" msgid "No Compression" msgstr "Без сжатия" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "Нет совпадений" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "Не задано значение" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Нет описания" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "Ошибок нет." @@ -7044,15 +7204,15 @@ msgstr "Не выбрано расширение." msgid "No file loaded / recorded." msgstr "Файл не загружен / записан." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "Проблем не обнаружено." @@ -7060,11 +7220,15 @@ msgstr "Проблем не обнаружено." msgid "No paths found in the M3U file \"{0}\"" msgstr "В файле M3U \"{0}\" не найдены пути" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "Проблем не обнаружено." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -7079,7 +7243,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "Профили для игровой настройки '{0}' не найдены" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "Запись не загружена." @@ -7087,19 +7251,15 @@ msgstr "Запись не загружена." msgid "No save data found." msgstr "Данные сохранений не найдены." -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" "Не найден undo.dtm, выполнено прерывание отмены загрузки быстрого сохранения " "для предотвращения рассинхронизации ролика" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "Значение не указано." - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -7109,7 +7269,7 @@ msgstr "Отсутствует" msgid "North America" msgstr "Северная Америка" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "Не найдено" @@ -7117,11 +7277,11 @@ msgstr "Не найдено" msgid "Not Set" msgstr "Не установлено" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "Не у всех игроков есть игра. Вы действительно хотите начать?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -7131,7 +7291,7 @@ msgstr "" "Недостаточно свободных блоков на выбранной карте памяти. Требуется свободных " "блоков: не менее %n." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -7195,13 +7355,13 @@ msgstr "Ориентация нунчака" msgid "Nunchuk Stick" msgstr "Стик нунчака" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "OK" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "Объект %1" @@ -7214,11 +7374,11 @@ msgid "Oceania" msgstr "Океания" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Выкл" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "Смещение" @@ -7230,11 +7390,11 @@ msgstr "Вкл" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "Онлайн-&документация" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" @@ -7242,7 +7402,7 @@ msgstr "" "Добавлять только символы с префиксом:\n" "(Пусто - все символы)" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -7259,7 +7419,7 @@ msgstr "Открыть" msgid "Open &Containing Folder" msgstr "Открыть &папку с образом" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "Открыть папку..." @@ -7273,7 +7433,7 @@ msgstr "Открыть папку с &сохранениями GameCube" #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:60 msgid "Open Riivolution XML..." -msgstr "" +msgstr "Открыть XML Riivolution..." #: Source/Core/DolphinQt/GameList/GameList.cpp:427 msgid "Open Wii &Save Folder" @@ -7307,7 +7467,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "Операторы" @@ -7325,7 +7485,7 @@ msgstr "Опции" msgid "Orange" msgstr "Оранжевая" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "По орбите" @@ -7333,7 +7493,7 @@ msgstr "По орбите" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Прочие" @@ -7346,11 +7506,11 @@ msgstr "Другой раздел (%1)" msgid "Other State Hotkeys" msgstr "Другие горячие клавиши" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "Другое управление сохранениями" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "Другой игры..." @@ -7358,12 +7518,12 @@ msgstr "Другой игры..." msgid "Overlay Information" msgstr "Наэкранная информация" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "&Проиграть записанный ввод..." -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -7374,11 +7534,11 @@ msgstr "PCAP" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:115 msgid "PNG Compression Level" -msgstr "" +msgstr "Уровень сжатия PNG" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:114 msgid "PNG Compression Level:" -msgstr "" +msgstr "Уровень сжатия PNG:" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:195 msgid "PNG image file (*.png);; All Files (*)" @@ -7388,7 +7548,7 @@ msgstr "Файл изображения PNG (*.png);; Все файлы (*)" msgid "PPC Size" msgstr "Размер PPC" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "PPC и Хост" @@ -7405,7 +7565,7 @@ msgstr "Мембраны" msgid "Parameters" msgstr "Параметры" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -7414,23 +7574,23 @@ msgstr "" msgid "Parsing Error" msgstr "Ошибка разбора" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "Пассивный" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "Пробрасывать Bluetooth-адаптер" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "Пароль" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "Пароль для присоединения к вашей игре (можно оставить пустым)" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "Пароль?" @@ -7451,7 +7611,7 @@ msgid "Path:" msgstr "Путь:" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Пути" @@ -7459,7 +7619,7 @@ msgstr "Пути" msgid "Pause" msgstr "Пауза" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "Пауза в конце ролика" @@ -7482,11 +7642,11 @@ msgstr "Пиковая скорость движения в исходную п msgid "Peak velocity of outward swing movements." msgstr "Пиковая скорость взмаха." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Попискельное освещение" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "Обновить систему через интернет" @@ -7496,23 +7656,23 @@ msgstr "Выполнить обновление системы" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "Физическое" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "ПиБ" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "Выбрать шрифт для отладки" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "Пинг" @@ -7525,7 +7685,7 @@ msgid "Pitch Up" msgstr "Тангаж вверх" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Платформа" @@ -7545,16 +7705,16 @@ msgstr "Проиграть записанное" msgid "Playback Options" msgstr "Параметры просмотра" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "Игрок" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Игроки" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7565,31 +7725,31 @@ msgstr "" msgid "Point" msgstr "Направление" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "Порт %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "Порт:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" "Обнаружена возможная рассинхронизация: %1, вероятно, рассинхронизовался на " "кадре %2" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "Эффект пост-обработки" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Эффект пост-обработки:" @@ -7601,15 +7761,15 @@ msgstr "Конфигурация шейдеров пост-обработки" msgid "Prefetch Custom Textures" msgstr "Предзагружать свои текстуры" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "Преждевременный конец ролика в PlayController. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "Преждевременный конец ролика в PlayWiimote. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "Преждевременный конец ролика в PlayWiimote. {0} > {1}" @@ -7653,7 +7813,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "Предыдущий игровой профиль" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "Предыдущее совпадение" @@ -7664,15 +7824,15 @@ msgstr "Предыдущий профиль" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "Примитив %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "Частные" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "Частные и открытые" @@ -7680,7 +7840,7 @@ msgstr "Частные и открытые" msgid "Problem" msgstr "Проблема" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." @@ -7688,7 +7848,7 @@ msgstr "" "Обнаружены проблемы с высокой критичностью. Скорее всего, игра вообще не " "будет работать." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." @@ -7696,7 +7856,7 @@ msgstr "" "Обнаружены проблемы с низкой критичностью. Вероятно, они не помешают запуску " "игры." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." @@ -7704,7 +7864,7 @@ msgstr "" "Обнаружены проблемы со средней критичностью. Вся игра или её фрагменты могут " "работать некорректно." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Профиль" @@ -7718,15 +7878,15 @@ msgstr "Счётчик команд" msgid "Progress" msgstr "Ход выполнения" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "Открытые" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "Очистить кэш списка игр" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7738,11 +7898,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "LTR" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "Не удаётся включить Quality of Service (QoS)." -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "Quality of Service (QoS) успешно включен." @@ -7753,12 +7913,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Вопрос" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Выход" @@ -7778,11 +7938,11 @@ msgstr "R-аналог" msgid "READY" msgstr "ГОТОВ" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "Модули RSO" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "Автообнаружение RSO" @@ -7795,44 +7955,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "RVZ образы GC/Wii (*.rvz)" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Диапазон" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " -msgstr "" +msgstr "Конец диапазона: " -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " -msgstr "" +msgstr "Начало диапазона: " -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "За&менить инструкцию" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "Чтение" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "Чтение и запись" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "Только для чтения" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "Чтение или запись" @@ -7840,11 +8000,11 @@ msgstr "Чтение или запись" msgid "Read-Only Mode" msgstr "Режим \"Только для чтения\"" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Настоящая Balance Board" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "Настоящий Wii Remote" @@ -7857,11 +8017,11 @@ msgstr "Центровка" msgid "Record" msgstr "Запись" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "Записывать ввод" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "Запись" @@ -7886,7 +8046,7 @@ msgstr "Красная слева" msgid "Red Right" msgstr "Красная справа" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7909,43 +8069,45 @@ msgstr "Статус на Redump.org:" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Обновить" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" -msgstr "" +msgstr "Обновить значения" #: Source/Core/Core/HotkeyManager.cpp:30 msgid "Refresh Game List" msgstr "Обновить список игр" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" +"Обновление не удалось. Пожалуйста, запустите игру на некоторое время и " +"попробуйте снова." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." -msgstr "" +msgstr "Текущие значения обновлены." #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "Обновление..." #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Регион" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "Регион:" @@ -7965,16 +8127,16 @@ msgstr "Удерж. относ. ввод" msgid "Remind Me Later" msgstr "Напомнить позже" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Удалить" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "Не удалось удалить" @@ -8000,8 +8162,8 @@ msgstr "" "конечно, вы впоследствии не запакуете данный образ в архив вроде ZIP). Вы " "всё равно хотите продолжить?" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "Переименовать символ" @@ -8036,29 +8198,37 @@ msgstr "Запрос на присоединение к вашей группе" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Сбросить" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 -msgid "Reset Results" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 +msgid "Reset Results" +msgstr "Сброс результатов" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "Сбросить промежуточный сервер" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "Сбросить промежуточный сервер на %1:%2" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "Сбросить настройки обхода" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "Сбросить значения" @@ -8066,15 +8236,15 @@ msgstr "Сбросить значения" msgid "Reset View" msgstr "Сбросить поле" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "Сбросить все сопряжения Wii Remote" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "Менеджер наборов ресурсов" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "Путь к наборам ресурсов:" @@ -8086,11 +8256,11 @@ msgstr "Требуется перезапуск" msgid "Restore Defaults" msgstr "По умолчанию" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "Восстановить инструкцию" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Повтор" @@ -8099,7 +8269,7 @@ msgstr "Повтор" msgid "Return Speed" msgstr "Скорость возврата" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "Ревизия" @@ -8157,11 +8327,11 @@ msgstr "Крен влево" msgid "Roll Right" msgstr "Крен вправо" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "ID комнаты" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "Поворот" @@ -8170,18 +8340,14 @@ msgstr "Поворот" msgid "Rotation applied at extremities of swing." msgstr "Вращение, применяемое на краях взмаха." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." -msgstr "" -"Округляет 2D вершины до целых пикселей.

Исправляет проблемы с " -"графикой в некоторых играх при использовании повышенного разрешения. Данная " -"настройка никак не влияет на игры в родном разрешении." -"

Если не уверены – оставьте выключенным.
Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." +msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:254 @@ -8190,11 +8356,11 @@ msgstr "" msgid "Rumble" msgstr "Вибрация" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "Запуск &до сюда" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "Запускать ядра GBA в выделенных потоках" @@ -8202,15 +8368,15 @@ msgstr "Запускать ядра GBA в выделенных потоках" msgid "Russia" msgstr "Россия" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "SD-карты" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "Образ SD-карты (*.raw);;Все файлы (*)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "Путь к SD-карте:" @@ -8226,7 +8392,7 @@ msgstr "SELECT" msgid "SHA-1:" msgstr "SHA-1:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "SP1:" @@ -8240,11 +8406,11 @@ msgstr "Контекст SSL" msgid "START" msgstr "START" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "Со&хранить код" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "Быстрое &сохранение" @@ -8254,7 +8420,7 @@ msgid "Safe" msgstr "Безопасное" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -8267,7 +8433,7 @@ msgstr "Сохранить все" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "Экспортировать сохранение" @@ -8288,11 +8454,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "Импортировать сохранение" @@ -8304,7 +8470,7 @@ msgstr "Сохранить самое старое сохранение" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -8354,23 +8520,23 @@ msgstr "Быстрое сохранение 8" msgid "Save State Slot 9" msgstr "Быстрое сохранение 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "Быстрое сохранение в файл" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "Быстрое сохранение в старый слот" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "Быстрое сохранение в выбранный слот" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "Быстрое сохранение в слот" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "Сохранить карту символов &как..." @@ -8378,7 +8544,7 @@ msgstr "Сохранить карту символов &как..." msgid "Save Texture Cache to State" msgstr "Хранить кэш текстур в сохранении" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "Быстрые сохранение и загрузка" @@ -8390,11 +8556,11 @@ msgstr "" msgid "Save as..." msgstr "Сохранить как..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "Сохранить объединённый файл как" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" @@ -8405,15 +8571,15 @@ msgstr "" "перезаписаны.\n" "Перезаписать сейчас?" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "Сохранение в той же папке, где и образ" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "Сохранить файл с картой" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "Сохранить файл сигнатуры" @@ -8421,7 +8587,7 @@ msgstr "Сохранить файл сигнатуры" msgid "Save to Selected Slot" msgstr "Сохранить в выбранный слот" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "Сохранить в слот %1 - %2" @@ -8429,62 +8595,64 @@ msgstr "Сохранить в слот %1 - %2" msgid "Save..." msgstr "Сохранить..." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" "Сохранённые сопряжения Wii Remote могут быть сброшены только при запущенной " "игре для Wii." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "Сохранения:" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "Быстрое сохранение ролика {0} повреждено, остановка записи ролика..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Увеличенная копия EFB" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." -msgstr "" +msgstr "Сканирование успешно завершено." #: Source/Core/DolphinQt/ToolBar.cpp:126 msgid "ScrShot" msgstr "Скриншот" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Поиск" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "Найти адрес" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "Искать текущий объект" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Искать в подпапках" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" -msgstr "" +msgstr "Поиск и фильтрация" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" +"Поиск в виртуальном адресном пространстве пока невозможен. Пожалуйста, " +"запустите игру на некоторое время и попробуйте снова." -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "Найти инструкцию" @@ -8492,7 +8660,7 @@ msgstr "Найти инструкцию" msgid "Search games..." msgstr "Искать игры..." -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "Поиск инструкции" @@ -8518,28 +8686,28 @@ msgstr "" msgid "Security options" msgstr "Настройки безопасности" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Выбрать" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "Выберите путь к дампам" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "Выберите папку для экспорта" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "Выбрать BIOS GBA" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "Выбрать образ игры GBA" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "Выберите путь к файлам сохранений GBA" @@ -8547,11 +8715,11 @@ msgstr "Выберите путь к файлам сохранений GBA" msgid "Select Last State" msgstr "Выбрать последнее сохранение" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "Выберите путь к загрузке" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "Выберите путь к наборам ресурсов" @@ -8559,7 +8727,7 @@ msgstr "Выберите путь к наборам ресурсов" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "Выбрать слот %1 - %2" @@ -8567,7 +8735,7 @@ msgstr "Выбрать слот %1 - %2" msgid "Select State" msgstr "Выбор сохранения" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Выбрать слот сохранения" @@ -8611,41 +8779,45 @@ msgstr "Выбрать слот сохранения 8" msgid "Select State Slot 9" msgstr "Выбрать слот сохранения 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "Выберите корень NAND Wii" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "Выберите папку" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "Выберите файл" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "Выберите игру" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "Выберите образ SD-карты" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "Выберите игру" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "Выберите продукт для установки в NAND" @@ -8653,11 +8825,11 @@ msgstr "Выберите продукт для установки в NAND" msgid "Select e-Reader Cards" msgstr "Выбрать e-карточки" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "Выберите адрес модуля RSO:" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8665,12 +8837,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "Выберите файл с ключами (дамп OTP/SEEPROM)" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Выберите файл сохранения" @@ -8686,15 +8858,15 @@ msgstr "Выберите, куда вы хотите сохранить скон msgid "Selected Font" msgstr "Выбранный шрифт" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "Выбранный профиль контроллера не существует" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "Выбранной игры нету в списке игр!" @@ -8722,7 +8894,7 @@ msgstr "" "Выбирает используемый аппаратный адаптер.

Если не " "уверены – выберите первый." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8789,11 +8961,11 @@ msgstr "" "

Если не уверены – выберите OpenGL." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Отправить" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Месторасположение сенсора:" @@ -8809,56 +8981,64 @@ msgstr "" "скачивании.\n" "Пример: {2}" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "IP-адрес сервера" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "Порт сервера" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "Сервер отверг попытку обхода" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "Присвоить &значение" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "Изменить СК" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "Сделать &образом по умолчанию" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "Назначить файл карты памяти для слота A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "Назначить файл карты памяти для слота B" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "Назначить адрес &конца символа" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "Назначить &размер символа" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "Назначить адрес конца символа" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "Назначить размер символа (%1):" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8868,7 +9048,7 @@ msgstr "" "игр.\n" "Может не работать для некоторых игр." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Устанавливает язык системы для Wii." @@ -8878,7 +9058,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8915,11 +9095,11 @@ msgstr "" "Уменьшает время загрузки игр, но может вызвать сбои в некоторых из них. " "Может отрицательно повлиять на производительность. По умолчанию Нет" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Показать &лог" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Отображать панель &инструментов" @@ -8927,15 +9107,15 @@ msgstr "Отображать панель &инструментов" msgid "Show Active Title in Window Title" msgstr "Показывать название запущенной игры в заголовке окна" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "Показать все" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Австралия" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "Показывать текущую игру в Discord" @@ -8943,7 +9123,7 @@ msgstr "Показывать текущую игру в Discord" msgid "Show Debugging UI" msgstr "Показывать интерфейс отладки" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "ELF/DOL-файлы" @@ -8951,43 +9131,43 @@ msgstr "ELF/DOL-файлы" msgid "Show FPS" msgstr "Показывать FPS" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Показывать счётчик кадров" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Франция" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Германия" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "Показывать оверлей режима гольфа" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Показывать ввод экрана" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Италия" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Корея" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Показывать счётчик лагов" @@ -8995,7 +9175,7 @@ msgstr "Показывать счётчик лагов" msgid "Show Language:" msgstr "Язык отображения:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Показать &настройки логирования" @@ -9007,7 +9187,7 @@ msgstr "Показывать сообщения в сетевой игре" msgid "Show NetPlay Ping" msgstr "Показывать пинг в сетевой игре" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Голландия" @@ -9015,7 +9195,7 @@ msgstr "Голландия" msgid "Show On-Screen Display Messages" msgstr "Показывать наэкранные сообщения" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "PAL" @@ -9024,23 +9204,23 @@ msgstr "PAL" msgid "Show PC" msgstr "Показать СК" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Отображать игры платформ" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Отображать игры регионов" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Россия" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "Испания" @@ -9049,46 +9229,50 @@ msgstr "Испания" msgid "Show Statistics" msgstr "Показывать статистику" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "Показывать системное время" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Тайвань" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "USA" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Неизвестный" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "WAD-файлы" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Мир" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "Показать в &памяти" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "Показать в коде" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "Показывать в списке серверов" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -9133,7 +9317,7 @@ msgstr "" "Показывает различные статистики отрисовки.

Если не " "уверены – оставьте выключенным." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Горизонтальная стереопара" @@ -9149,16 +9333,31 @@ msgstr "Положить на бок" msgid "Sideways Wii Remote" msgstr "Wii Remote на боку" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "База данных сигнатур" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "Знаковое целое" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Упрощ. китайский" @@ -9166,7 +9365,7 @@ msgstr "Упрощ. китайский" msgid "Simulate DK Bongos" msgstr "Симуляция бонго DK" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "По шести осям" @@ -9195,7 +9394,7 @@ msgstr "Пропуск отрисовки" msgid "Skip EFB Access from CPU" msgstr "Пропустить доступ к EFB из ЦП" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "Пропускать главное меню" @@ -9203,7 +9402,7 @@ msgstr "Пропускать главное меню" msgid "Skip Presenting Duplicate Frames" msgstr "Не отображать дублирующиеся кадры" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -9223,19 +9422,19 @@ msgstr "" msgid "Slider Bar" msgstr "Ползунок" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Слот A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "Слот A:" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Слот B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "Слот B:" @@ -9253,7 +9452,7 @@ msgstr "Таблица сокетов" msgid "Software Renderer" msgstr "Программный рендеринг" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "Не удалось считать часть данных." @@ -9274,11 +9473,11 @@ msgstr "" "Пожалуйста, проверьте подсвеченные значения." #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "Сортировать по алфавиту" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "Звук:" @@ -9291,8 +9490,8 @@ msgid "Spain" msgstr "Испания" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Испанский" @@ -9300,7 +9499,7 @@ msgstr "Испанский" msgid "Speaker Pan" msgstr "Баланс звука" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Громкость динамика:" @@ -9335,7 +9534,7 @@ msgstr "Скорость" msgid "Speed up Disc Transfer Rate" msgstr "Ускорить чтение с диска" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "Стабильная (раз в год)" @@ -9347,28 +9546,30 @@ msgstr "Конец стэка" msgid "Stack start" msgstr "Начало стэка" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Стандартный контроллер" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Старт" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "Начать &сетевую игру..." #: Source/Core/DolphinQt/CheatsManager.cpp:106 msgid "Start New Cheat Search" -msgstr "" +msgstr "Новый поиск читов" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "&Начать запись ввода" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Начать запись" @@ -9384,7 +9585,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "Игра начата" @@ -9395,7 +9596,7 @@ msgstr "Игра начата" msgid "State" msgstr "Состояние" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Рулевое колесо" @@ -9423,19 +9624,19 @@ msgstr "Шаг с выходом" msgid "Step Over" msgstr "Шаг с обходом" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "Шаг с выходом выполнен успешно!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "Истекло время ожидания шага с выходом!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "Выполняется шаг с обходом..." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "Шаг выполнен успешно!" @@ -9444,20 +9645,20 @@ msgstr "Шаг выполнен успешно!" msgid "Stepping" msgstr "Шаги" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "Стерео" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "Стереоскопический 3D-режим" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Стереоскопический 3D-режим:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Стереоизображение" @@ -9478,11 +9679,15 @@ msgstr "Стик" msgid "Stop" msgstr "Стоп" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "Остановить проигр./запись ввода" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "Игра остановлена" @@ -9496,7 +9701,7 @@ msgstr "Хранить копии EFB только в текстуре" msgid "Store XFB Copies to Texture Only" msgstr "Хранить копии XFB только в текстуре" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -9510,7 +9715,7 @@ msgstr "" "текстуре)

Если не уверены – оставьте включенным." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -9528,7 +9733,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Растянуть по окну" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "Строгая синхронизация настроек" @@ -9551,16 +9756,16 @@ msgstr "Стилус" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "Успешно" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "Успешно добавлена в индекс сетевой игры" @@ -9570,11 +9775,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "Успешно сконвертировано образов: %n." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "'%1' успешно удалён." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "Файлы сохранений (%n из %1 шт.) успешно экспортированы." @@ -9583,7 +9788,7 @@ msgstr "Файлы сохранений (%n из %1 шт.) успешно экс msgid "Successfully exported save files" msgstr "Файлы сохранений успешно экспортированы" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "Сертификаты успешно извлечены из NAND" @@ -9595,12 +9800,12 @@ msgstr "Файл успешно извлечён." msgid "Successfully extracted system data." msgstr "Системные данные успешно извлечены." -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "Файл сохранения успешно импортирован." #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "Данный продукт успешно установлен в NAND." @@ -9612,16 +9817,16 @@ msgstr "Данный продукт успешно удалён из NAND." msgid "Support" msgstr "Поддержка" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "Поддерживаемые форматы файлов" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "Поддерживаются SD и SDHC. Размер по умолчанию: 128 Мбайт." #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "Объёмный" @@ -9629,11 +9834,11 @@ msgstr "Объёмный" msgid "Suspended" msgstr "Приостановлен" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Поменять ракурсы местами" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9649,50 +9854,62 @@ msgstr "" msgid "Swing" msgstr "Взмах" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "Переключиться на A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "Переключиться на B" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "Символ" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "Адрес конца символа (%1):" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "Имя символа:" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "Символы" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "Синхронизация" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "Синхронизировать коды AR/Gecko" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "Синхронизировать сохранения Wii" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "Синхронизировать сохранения" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "Синхронизировать и спарить Wii Remote" @@ -9708,37 +9925,37 @@ msgstr "" "Синхронизировать потоки ГП и ЦП для исправления случайных зависаний в " "двухядерном режиме. (ВКЛ = Совместимость, ВЫКЛ = Скорость)" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "Синхронизация AR-кодов..." -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "Синхронизация Gecko-кодов..." -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "Синхронизация сохранений..." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Язык системы:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "Ввод TAS" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "Управление TAS" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "Метки" @@ -9756,11 +9973,11 @@ msgstr "Хвост" msgid "Taiwan" msgstr "Тайвань" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Сделать скриншот" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Проверить" @@ -9769,7 +9986,7 @@ msgstr "Проверить" msgid "Texture Cache" msgstr "Кэширование текстур" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "Точность кэширования текстур" @@ -9793,7 +10010,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "Хэш-таблица H3 для раздела {0} некорректна." -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "IPL-файла нет в списке известных корректных дампов. (CRC32: {0:x})" @@ -9807,7 +10024,7 @@ msgstr "IPL-файла нет в списке известных коррект msgid "The Masterpiece partitions are missing." msgstr "Отсутствуют разделы Masterpiece." -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." @@ -9815,7 +10032,7 @@ msgstr "" "Не получается исправить NAND. Рекомендуется создать резервную копию текущих " "данных и поставить NAND с нуля." -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "NAND успешно исправлен." @@ -9854,7 +10071,7 @@ msgstr "Размер данных для раздела {0} не делится msgid "The decryption keys need to be appended to the NAND backup file." msgstr "Требуется добавить ключи дешифрования к файлу бэкапа NAND." -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9870,7 +10087,7 @@ msgstr "Не удалось прочесть диск (в диапазоне {0: msgid "The disc that was about to be inserted couldn't be found." msgstr "Ожидаемый диск не был найден." -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9896,19 +10113,19 @@ msgstr "Эмулируемой консоли Wii не требуется обн msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "Введён неверный PID." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "Введён неверный VID." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "В выражении содержится синтаксическая ошибка." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9967,7 +10184,7 @@ msgstr "ID игры — {0}, но должен быть {1}." msgid "The game disc does not contain any usable update information." msgstr "На данном диске не содержится полезной информации про обновление." -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "Игра уже запущена." @@ -9980,7 +10197,7 @@ msgstr "" "Регионы игры и консоли не совпадают. Обновление эмулируемой консоли при " "помощи данного диска невозможно, т.к. это приведёт к ошибкам системного меню." -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -10001,7 +10218,7 @@ msgstr "Хэши не совпадают!" msgid "The hashes match!" msgstr "Хэши совпадают!" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -10025,12 +10242,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "Профиль '%1' не существует" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "Записанная игра ({0}) не совпадает с выбранной игрой ({1})" @@ -10048,20 +10265,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "Полученный расшифрованный AR-код не содержит строк." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "Версии \"сетевой игры\" сервера и клиента несовместимы." -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "На сервере нет мест." -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "Сервер прислал неизвестное сообщение об ошибке." @@ -10087,7 +10304,7 @@ msgstr "Указанный общий ключевой индекс: {0}, а д msgid "The specified file \"{0}\" does not exist" msgstr "Указанный файл \"{0}\" не существует" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "Выбранная карта памяти уже содержит файл \"%1\"." @@ -10141,7 +10358,7 @@ msgstr "Раздел {0} некорректно выровнен." msgid "There are too many partitions in the first partition table." msgstr "В первой таблице разделов содержится слишком много разделов." -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "Нет действий для отмены!" @@ -10183,7 +10400,7 @@ msgstr "" "Этот корейский продукт настроен на использование IOS, которая обычно " "отсутствует на корейских консолях. Скорее всего это приведёт к ERROR #002." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "Это USB-устройства уже в белом списке." @@ -10203,7 +10420,7 @@ msgstr "" "Симулятор action replay не поддерживает коды, которые меняют сам Action " "Replay." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "Это нельзя отменить!" @@ -10257,7 +10474,11 @@ msgstr "" "Образ диска слишком мал, и в нём не хватает данных. Возможно, проблема в " "том, что исходный диск был двухслойным, а в дампе только один слой." -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "Файл не является бэкапом BootMii NAND." @@ -10282,11 +10503,11 @@ msgstr "" "не поддерживается вашей видеокартой или её драйвером. Во время игры могут " "возникать ошибки и зависания." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "Данный дамп — плохой." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." @@ -10294,7 +10515,7 @@ msgstr "" "Данный дамп — плохой. Но это ещё не означает, что игра будет работать " "некорректно." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." @@ -10302,11 +10523,11 @@ msgstr "" "Согласно Redump.org, данный дамп — хороший, но Dolphin обнаружил в нём " "проблемы. Возможно, это баг Dolphin." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "Данный дамп — хороший." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "Для данной сессии требуется пароль:" @@ -10379,7 +10600,7 @@ msgid "" msgstr "" "Данное значение умножается на глубину, указанную в графических настройках." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." @@ -10387,7 +10608,7 @@ msgstr "" "Ограничит скорость закачки данных для каждого клиента. Используется для " "синхронизации сохранений." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -10411,7 +10632,7 @@ msgstr "Потоки" msgid "Threshold" msgstr "Порог" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "ТиБ" @@ -10429,22 +10650,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Название" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "до" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "До:" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "&Полноэкранный режим" @@ -10469,7 +10690,7 @@ msgid "Toggle Aspect Ratio" msgstr "Изменить соотношение сторон" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "Точка останова" @@ -10529,14 +10750,20 @@ msgstr "Ошибка токенизации." msgid "Toolbar" msgstr "Панель инструментов" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "сверху" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Вертикальная стереопара" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -10571,20 +10798,20 @@ msgid "Touch" msgstr "Тач-панель" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Традиц. китайский" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "Ошибка промежуточного сервера" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "Промежуточный сервер" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "Истекло время ожидания подключения обходного сервера к хосту" @@ -10616,21 +10843,13 @@ msgstr "Рычажки" msgid "Type" msgstr "Тип" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" -msgstr "U&16" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "U&32" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" -msgstr "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" +msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 msgid "UNKNOWN" @@ -10646,9 +10865,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "Ошибка белого списка USB" @@ -10690,10 +10909,14 @@ msgstr "" "подтормаживания при компиляции шейдеров с минимальным влиянием на " "производительность, но конечный результат зависит от поведения драйвера ГП." -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "Не удалось автоматически обнаружить модуль RSO" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10718,7 +10941,11 @@ msgstr "" "\n" "Вы хотите игнорировать данную строку и продолжить чтение?" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "Запись в файл {0} не удалась" @@ -10730,15 +10957,15 @@ msgstr "Несвязанный" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "Несжатые образы GC/Wii (*.iso *.gcm)" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Отменить быструю загрузку" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Отменить быстрое сохранение" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "Деактивировать" @@ -10754,18 +10981,18 @@ msgstr "" "Удаление WAD приведет к удалению текущей версии этого продукта из NAND без " "удаления его сохраненных данных. Продолжить?" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "США" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Неизвестно" @@ -10773,7 +11000,7 @@ msgstr "Неизвестно" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "Неизвестная команда DVD {0:08x} - критическая ошибка" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10785,7 +11012,7 @@ msgstr "" "Получено неизвестное сообщение SYNC_GECKO_CODES с id:{0} от игрока:{1} Игрок " "выкинут!" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "Получено неизвестное сообщение SYNC_SAVE_DATA с id: {0}" @@ -10797,15 +11024,15 @@ msgstr "" "Получено неизвестное сообщение SYNC_SAVE_DATA с id:{0} от игрока:{1} Игрок " "выкинут!" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10813,19 +11040,19 @@ msgstr "" msgid "Unknown disc" msgstr "Неизвестный диск" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." -msgstr "" +msgstr "Произошла неизвестная ошибка." -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "Неизвестная ошибка {0:x}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "Неизвестная ошибка." -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "Получено неизвестное сообщение с id : {0}" @@ -10833,7 +11060,7 @@ msgstr "Получено неизвестное сообщение с id : {0}" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "Получено неизвестное сообщение с id: {0} от игрока: {1} Игрок выкинут!" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Без ограничения" @@ -10849,13 +11076,28 @@ msgstr "Разблок. курсор" msgid "Unpacking" msgstr "Распаковка" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "Беззнаковое целое" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10864,7 +11106,7 @@ msgstr "Вверх" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Обновление" @@ -10921,7 +11163,7 @@ msgstr "Поставить вертикально" msgid "Upright Wii Remote" msgstr "Wii Remote вертикально" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "Настройки отправки статистики об использовании" @@ -10937,7 +11179,7 @@ msgstr "Использовать свой стиль" msgid "Use Lossless Codec (FFV1)" msgstr "Использовать кодек без потерь (FFV1)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "Режим PAL60 (EuRGB60)" @@ -10965,16 +11207,38 @@ msgstr "" "Использовать один буфер глубины для обоих глаз. Необходимо для нескольких " "игр." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" -msgstr "" +msgstr "На время сканирования использовать маппинг памяти" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" -msgstr "" +msgstr "Использовать физические адреса" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" +msgstr "По возможности использовать виртуальные адреса" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 @@ -10989,18 +11253,18 @@ msgstr "Интерфейс пользователя" msgid "User Style:" msgstr "Свой стиль:" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "Польз. переменные" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -11036,23 +11300,23 @@ msgstr "" msgid "Using Qt %1" msgstr "Используется Qt %1" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "Обычно используется для объектов света" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "Обычно используется для матриц нормалей" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "Обычно используется для матриц позиций" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "Обычно используется для матриц координат текстур" @@ -11065,7 +11329,7 @@ msgstr "Полезные" msgid "V-Sync" msgstr "Вертикальная синхронизация" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Значение" @@ -11098,8 +11362,8 @@ msgstr "Проверять сертификаты" msgid "Verifying" msgstr "Выполняется проверка" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "Версия" @@ -11135,9 +11399,9 @@ msgstr "Показать &память" msgid "Virtual Notches" msgstr "Вирт. надсечки" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" -msgstr "" +msgstr "Вирт. адр. пространство" #: Source/Core/Core/HotkeyManager.cpp:328 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGBA.cpp:23 @@ -11162,7 +11426,7 @@ msgstr "Увеличить громкость" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "WAD-файлы (*.wad)" @@ -11221,7 +11485,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "WASAPI (Эксклюзивный режим)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -11229,10 +11493,10 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "WIA образы GC/Wii (*.wia)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." -msgstr "" +msgstr "Ожидание первичного сканирования..." #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:263 msgid "" @@ -11262,7 +11526,7 @@ msgstr "" "

Если не уверены – оставьте выключенным." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -11281,10 +11545,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Предупреждение" @@ -11305,7 +11569,7 @@ msgstr "" "Предупреждение: количество блоков, указанное в BAT ({0}), не совпадает с " "указанным в заголовке загруженного файла ({1})" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " @@ -11315,7 +11579,7 @@ msgstr "" "ролика. (байт {0} > {1}) (ввод {2} > {3}). Перед продолжением загрузите " "другое сохранение или загрузите это сохранение с правами на запись." -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " @@ -11325,7 +11589,7 @@ msgstr "" "текущим кадром в сохранении (байт {0} < {1}) (кадр {2} < {3}). Перед " "продолжением загрузите другое сохранение." -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" @@ -11335,7 +11599,7 @@ msgstr "" "({1:#x}). Перед продолжением загрузите другое сохранение или загрузите это " "сохранение с правами на запись. Иначе весьма вероятна рассинхронизация." -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -11377,7 +11641,7 @@ msgstr "" msgid "Watch" msgstr "Наблюдение" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "Веб-сайт" @@ -11416,11 +11680,11 @@ msgstr "" "

Если не уверены – оставьте включенным." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "Белый список пробрасываемых USB-устройств" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Широкоформатный хак" @@ -11436,11 +11700,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Меню Wii" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Корень NAND Wii:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Wii Remote" @@ -11448,8 +11712,8 @@ msgstr "Wii Remote" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "Wii Remote %1" @@ -11462,11 +11726,11 @@ msgstr "Кнопки Wii Remote" msgid "Wii Remote Orientation" msgstr "Ориентация Wii Remote" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Настройки контроллера Wii" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Контроллеры Wii" @@ -11482,7 +11746,7 @@ msgstr "Ввод Wii TAS %1 - Wii Remote" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "Ввод Wii TAS %1 - Wii Remote + Нунчак" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "Wii и Wii Remote" @@ -11490,7 +11754,7 @@ msgstr "Wii и Wii Remote" msgid "Wii data is not public yet" msgstr "Данные Wii ещё не опубликованы" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "Файлы сохранений Wii (*.bin);;Все файлы (*)" @@ -11518,18 +11782,18 @@ msgid "World" msgstr "Мир" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "Запись" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "Только для записи" @@ -11542,12 +11806,12 @@ msgid "Write to File" msgstr "Сохранять в файл" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "Записать в лог" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "Записать в лог и остановиться" @@ -11555,7 +11819,7 @@ msgstr "Записать в лог и остановиться" msgid "Write to Window" msgstr "Записать в окно" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "Неправильная версия" @@ -11566,7 +11830,7 @@ msgstr "Неправильная версия" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "XF-регистр " @@ -11595,8 +11859,8 @@ msgid "Yellow" msgstr "Жёлтая" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "Да" @@ -11650,7 +11914,7 @@ msgstr "" "macOS версии 10.14 (Mojave) и новее. Пожалуйста, сообщайте только о тех " "проблемах, которые также возникают в версиях 10.14+." -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" "Вы используете последнюю версию, доступную\n" @@ -11685,11 +11949,11 @@ msgstr "" msgid "You have to enter a name." msgstr "Введите название." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "Вы должны ввести имя вашей сессии!" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "Вы должны указать регион для вашей сессии!" @@ -11697,7 +11961,7 @@ msgstr "Вы должны указать регион для вашей сесс msgid "You must restart Dolphin in order for the change to take effect." msgstr "Необходимо перезапустить Dolphin, чтобы изменения вступили в силу." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "Для создания вы должны выбрать игру!" @@ -11728,25 +11992,25 @@ msgstr "Zero 3 code не поддерживается" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "Zero code неизвестен Dolphin: {0:08x}" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" -msgstr "" +msgstr "[%1, %2]" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" -msgstr "" +msgstr "[%1, %2] и [%3, %4]" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "^ Искл. или" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" -msgstr "" +msgstr "любое значение" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:95 msgid "auto" @@ -11763,13 +12027,13 @@ msgstr "см" msgid "d3d12.dll could not be loaded." msgstr "не удалось загрузить d3d12.dll." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "по умолчанию" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "не подключено" @@ -11785,33 +12049,33 @@ msgstr "номер ошибки" msgid "fake-completion" msgstr "ложное дополнение" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" -msgstr "" +msgstr "равно" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" -msgstr "" +msgstr "больше, чем" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" -msgstr "" +msgstr "больше или равно" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" -msgstr "" +msgstr "меньше" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" -msgstr "" +msgstr "меньше или равно" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" -msgstr "" +msgstr "не равно" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" -msgstr "" +msgstr "послед. значение" #. i18n: The symbol/abbreviation for meters per second. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:44 @@ -11841,7 +12105,7 @@ msgstr "выкл." msgid "on" msgstr "на" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "или выберите устройство" @@ -11850,16 +12114,16 @@ msgstr "или выберите устройство" msgid "s" msgstr "с" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" -msgstr "" +msgstr "это значение:" #: Source/Core/Core/HW/WiimoteEmu/Extension/UDrawTablet.cpp:33 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtension.cpp:183 msgid "uDraw GameTablet" msgstr "Планшет uDraw GameTablet" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -11878,7 +12142,7 @@ msgstr "{0} (Masterpiece)" msgid "{0} (NKit)" msgstr "{0} (NKit)" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "{0} IPL найдено в папке {1}. Не удаётся опознать диск" @@ -11900,7 +12164,7 @@ msgstr "" "папку" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "{0} из {1} блоков. Процент сжатия: {2}%" @@ -11908,7 +12172,7 @@ msgstr "{0} из {1} блоков. Процент сжатия: {2}%" msgid "{0} was not a directory, moved to *.original" msgstr "{0} - не папка, перемещено в *.original" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "| Или" diff --git a/Languages/po/sr.po b/Languages/po/sr.po index 975a1630d561..b110b66807f3 100644 --- a/Languages/po/sr.po +++ b/Languages/po/sr.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: nikolassj, 2011\n" "Language-Team: Serbian (http://www.transifex.com/delroth/dolphin-emu/" "language/sr/)\n" "Language: sr\n" @@ -20,7 +20,7 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -28,7 +28,7 @@ msgid "" "problems that Dolphin is unable to detect." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -36,7 +36,7 @@ msgid "" "that it hasn't been tampered with." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -52,7 +52,7 @@ msgstr "" msgid " (Disc %1)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "" @@ -60,7 +60,7 @@ msgstr "" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -74,7 +74,7 @@ msgstr "" msgid "%" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -88,17 +88,17 @@ msgstr "" msgid "%1 %" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "" @@ -117,7 +117,7 @@ msgid "%1 (Revision %3)" msgstr "" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -154,7 +154,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "" @@ -165,23 +165,23 @@ msgid "" "Current Frame: %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -190,11 +190,11 @@ msgstr "" msgid "%1 ms" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "" @@ -206,15 +206,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -230,30 +230,30 @@ msgstr "" msgid "%1[%2]: %3/%4 MiB" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "" @@ -273,7 +273,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "" @@ -282,11 +282,11 @@ msgid "&Add Memory Breakpoint" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "" @@ -294,19 +294,19 @@ msgstr "" msgid "&Add..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "" @@ -314,11 +314,11 @@ msgstr "" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "" @@ -326,15 +326,15 @@ msgstr "" msgid "&Cancel" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "" @@ -342,7 +342,7 @@ msgstr "" msgid "&Clone..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "" @@ -350,19 +350,20 @@ msgstr "" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "" @@ -374,7 +375,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "" @@ -382,11 +383,11 @@ msgstr "" msgid "&Edit..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulacija" @@ -398,43 +399,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Fajl" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "&Graficke Opcije" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Pomoc" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "&Hotkey Opcije" @@ -446,11 +451,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "" @@ -458,7 +463,7 @@ msgstr "" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -466,23 +471,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "Loaduj Savestate" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Memorija" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "" @@ -490,7 +495,7 @@ msgstr "" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "" @@ -498,24 +503,24 @@ msgstr "" msgid "&No" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Otvori..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Opcije" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Pauza" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Pokreni" @@ -523,11 +528,11 @@ msgstr "&Pokreni" msgid "&Properties" msgstr "&Pribor/Opcije" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Registri" @@ -536,24 +541,24 @@ msgid "&Remove" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Reset" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "" @@ -561,11 +566,11 @@ msgstr "" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Stop" @@ -573,11 +578,11 @@ msgstr "&Stop" msgid "&Theme:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Alat" @@ -585,17 +590,17 @@ msgstr "&Alat" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Pogledaj" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "" @@ -607,11 +612,11 @@ msgstr "" msgid "&Yes" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" @@ -623,7 +628,7 @@ msgstr "" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(iskljucen/o)" @@ -631,34 +636,34 @@ msgstr "(iskljucen/o)" msgid "(ppc)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" @@ -666,6 +671,10 @@ msgstr "" msgid "128 Mbit (2043 blocks)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "" @@ -674,35 +683,35 @@ msgstr "" msgid "16-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "" @@ -714,25 +723,25 @@ msgstr "" msgid "32-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "" @@ -746,28 +755,32 @@ msgstr "" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "" @@ -775,29 +788,33 @@ msgstr "" msgid "64 Mbit (1019 blocks)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "" @@ -806,25 +823,25 @@ msgstr "" msgid "8-bit" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "" @@ -843,12 +860,12 @@ msgid "" "Notes:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "" @@ -866,17 +883,17 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" @@ -885,7 +902,7 @@ msgstr "" msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -909,8 +926,8 @@ msgstr "" msgid "AR Codes" msgstr "AR Kodovi" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "" @@ -933,7 +950,7 @@ msgstr "" msgid "Accuracy:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "" @@ -1029,9 +1046,9 @@ msgstr "" msgid "Adapter:" msgstr "Adapter" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Dodaj" @@ -1039,11 +1056,11 @@ msgstr "Dodaj" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "" @@ -1075,46 +1092,49 @@ msgstr "" msgid "Add to &watch" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Dodaj..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1158,39 +1178,43 @@ msgstr "" msgid "Africa" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "" @@ -1199,25 +1223,25 @@ msgstr "" msgid "All players' saves synchronized." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1243,7 +1267,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "" @@ -1261,39 +1285,39 @@ msgstr "" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1307,15 +1331,15 @@ msgstr "" msgid "Apply" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "" @@ -1323,11 +1347,11 @@ msgstr "" msgid "Are you sure you want to delete this file?" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "" @@ -1340,11 +1364,11 @@ msgid "Aspect Ratio" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "" @@ -1352,7 +1376,7 @@ msgstr "" msgid "Assign Controllers" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1377,7 +1401,7 @@ msgstr "" msgid "Australia" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "" @@ -1389,15 +1413,15 @@ msgstr "" msgid "Auto" msgstr "Auto" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1413,7 +1437,7 @@ msgstr "" msgid "Auto-Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1424,12 +1448,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "" @@ -1444,11 +1468,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "" @@ -1474,7 +1498,7 @@ msgstr "" msgid "Backend:" msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "" @@ -1485,7 +1509,13 @@ msgstr "" msgid "Backward" msgstr "U nazad" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1493,19 +1523,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Baner" @@ -1529,7 +1560,7 @@ msgstr "" msgid "Basic" msgstr "Osnovno/ni/ne" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Osnovne opcije" @@ -1537,7 +1568,7 @@ msgstr "Osnovne opcije" msgid "Bass" msgstr "Bas" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1545,11 +1576,11 @@ msgstr "" msgid "Battery" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1571,7 +1602,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "" @@ -1584,7 +1615,7 @@ msgstr "" msgid "Blocking" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "" @@ -1607,15 +1638,15 @@ msgid "" "Passthrough mode cannot be used." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "" @@ -1623,7 +1654,7 @@ msgstr "" msgid "Borderless Fullscreen" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Donji deo/dno" @@ -1637,7 +1668,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "" @@ -1646,7 +1677,7 @@ msgstr "" msgid "Breakpoint" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" @@ -1676,7 +1707,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1684,12 +1715,12 @@ msgstr "" msgid "Buffer Size:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "" @@ -1731,11 +1762,11 @@ msgstr "Tasteri" msgid "C Stick" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "" @@ -1766,7 +1797,7 @@ msgstr "" msgid "Calculate" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1786,15 +1817,15 @@ msgstr "" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1804,7 +1835,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1812,16 +1843,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "" @@ -1838,23 +1869,23 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "" @@ -1876,7 +1907,7 @@ msgstr "" msgid "Change &Disc" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Promeni &Disk..." @@ -1884,15 +1915,15 @@ msgstr "Promeni &Disk..." msgid "Change Disc" msgstr "Promeni Disk" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1912,7 +1943,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Chat/Caskanje" @@ -1928,11 +1959,11 @@ msgstr "Trazi Chit" msgid "Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "" @@ -1946,7 +1977,7 @@ msgid "" "whether it's still in use." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "" @@ -1954,16 +1985,16 @@ msgstr "" msgid "China" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Biraj fajl da otvoris " -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -1986,14 +2017,14 @@ msgid "Classic Controller" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Ocisti" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "" @@ -2010,28 +2041,47 @@ msgstr "" msgid "Close" msgstr "Zatvori" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2049,7 +2099,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "" @@ -2062,7 +2112,7 @@ msgstr "" msgid "Compression:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "" @@ -2074,13 +2124,13 @@ msgstr "" msgid "Config" msgstr "Podesi" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2088,21 +2138,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "" @@ -2115,26 +2165,26 @@ msgstr "" msgid "Confirm on Stop" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "" @@ -2154,11 +2204,11 @@ msgstr "" msgid "Connect Wii Remote 4" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" @@ -2170,15 +2220,19 @@ msgstr "" msgid "Connected" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "" @@ -2191,7 +2245,7 @@ msgstr "" msgid "Control Stick" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "" @@ -2219,7 +2273,7 @@ msgstr "" msgid "Controllers" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2227,7 +2281,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2236,7 +2290,7 @@ msgid "" "Native.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2261,12 +2315,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "" @@ -2303,33 +2357,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "" @@ -2337,11 +2396,15 @@ msgstr "" msgid "Copy failed" msgstr "Kopiranje neuspesno " -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "" @@ -2356,16 +2419,16 @@ msgstr "" msgid "Cost" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "" @@ -2444,15 +2507,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2479,7 +2542,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "" @@ -2502,11 +2565,11 @@ msgstr "" msgid "Crossfade" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2514,7 +2577,7 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "" @@ -2522,7 +2585,7 @@ msgstr "" msgid "Current thread" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2553,7 +2616,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "" @@ -2581,7 +2644,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2589,11 +2652,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "" @@ -2605,28 +2668,27 @@ msgstr "" msgid "Data Transfer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2644,7 +2706,7 @@ msgid "Debug Only" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "" @@ -2686,7 +2748,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "" @@ -2702,7 +2764,7 @@ msgstr "" msgid "Default Font" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "" @@ -2727,7 +2789,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2742,11 +2804,11 @@ msgid "Delete Selected Files..." msgstr "" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2754,21 +2816,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "" @@ -2777,11 +2839,11 @@ msgstr "" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Detekuj" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2789,25 +2851,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Uredjaj " #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Opcije Uredjaja " #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "" @@ -2819,11 +2881,15 @@ msgstr "" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "" @@ -2854,7 +2920,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "" @@ -2866,15 +2932,15 @@ msgstr "" msgid "Disable Emulation Speed Limit" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Onemoguci \"Fog\"" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "" @@ -2882,7 +2948,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2896,7 +2962,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2913,11 +2979,15 @@ msgstr "Disk" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2935,25 +3005,25 @@ msgstr "" msgid "Distance of travel from neutral position." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "" @@ -2970,9 +3040,9 @@ msgstr "" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "" @@ -2984,8 +3054,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "" @@ -3018,21 +3088,21 @@ msgstr "" msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3047,7 +3117,7 @@ msgstr "" msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "" @@ -3060,24 +3130,26 @@ msgid "Done compressing disc image." msgstr "" #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "" @@ -3085,11 +3157,11 @@ msgstr "" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "" @@ -3112,27 +3184,35 @@ msgstr "" msgid "Dual Core" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "" @@ -3144,7 +3224,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "" @@ -3156,7 +3236,7 @@ msgstr "" msgid "Dump Objects" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "" @@ -3253,16 +3333,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3274,7 +3354,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3302,7 +3382,7 @@ msgstr "" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3310,7 +3390,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "" @@ -3322,7 +3402,7 @@ msgstr "" msgid "Embedded Frame Buffer (EFB)" msgstr "" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "" @@ -3330,11 +3410,11 @@ msgstr "" msgid "Emu Thread already running" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "" @@ -3350,8 +3430,12 @@ msgstr "" msgid "Emulation Speed" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3367,7 +3451,7 @@ msgstr "" msgid "Enable Audio Stretching" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "" @@ -3379,7 +3463,7 @@ msgstr "" msgid "Enable Dual Core" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "" @@ -3405,19 +3489,19 @@ msgid "Enable Progressive Scan" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "" @@ -3443,7 +3527,7 @@ msgid "" "= Compatible, OFF = Fast)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3451,7 +3535,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3481,7 +3565,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3515,7 +3599,7 @@ msgstr "" msgid "Encoding" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3528,12 +3612,12 @@ msgid "Enet Didn't Initialize" msgstr "" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3543,7 +3627,7 @@ msgstr "" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "" @@ -3557,11 +3641,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "" @@ -3570,65 +3654,68 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Error" @@ -3641,19 +3728,19 @@ msgstr "" msgid "Error loading selected language. Falling back to system default." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3673,7 +3760,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3723,11 +3810,11 @@ msgid "" "may not show fonts correctly, or crash." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3736,11 +3823,39 @@ msgstr "" msgid "Euphoria" msgstr "" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3789,14 +3904,14 @@ msgstr "" msgid "Experimental" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3804,15 +3919,15 @@ msgstr "" msgid "Export Recording" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3824,22 +3939,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "" @@ -3852,7 +3967,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3860,7 +3975,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "" @@ -3898,7 +4013,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "" @@ -3906,17 +4021,17 @@ msgstr "" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -3928,7 +4043,7 @@ msgstr "" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -3949,12 +4064,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -3966,19 +4081,19 @@ msgstr "" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -3987,7 +4102,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "" @@ -4010,29 +4125,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "" @@ -4048,23 +4163,23 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "" @@ -4076,11 +4191,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "" @@ -4091,7 +4206,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "" @@ -4118,11 +4233,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "" @@ -4131,7 +4246,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4143,7 +4258,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4151,25 +4266,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4184,15 +4299,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4200,23 +4315,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4224,11 +4339,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4236,22 +4351,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4260,19 +4375,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4285,7 +4400,7 @@ msgstr "Brzo " msgid "Fast Depth Calculation" msgstr "" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4302,7 +4417,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "" @@ -4316,18 +4431,18 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "" @@ -4335,11 +4450,11 @@ msgstr "" msgid "File Size:" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4353,11 +4468,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4365,15 +4480,15 @@ msgstr "" msgid "Filesystem" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4381,11 +4496,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "" @@ -4399,18 +4514,22 @@ msgid "" "This can take a while." msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4420,13 +4539,14 @@ msgstr "" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "" @@ -4450,7 +4570,7 @@ msgstr "" msgid "Force 16:9" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "" @@ -4458,15 +4578,15 @@ msgstr "" msgid "Force 4:3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4476,7 +4596,7 @@ msgid "" "
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4495,21 +4615,21 @@ msgstr "" msgid "Forward" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "" @@ -4538,7 +4658,7 @@ msgstr "" msgid "Frame Range" msgstr "" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4550,19 +4670,19 @@ msgstr "" msgid "France" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4570,7 +4690,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -4978,7 +5098,7 @@ msgstr "" msgid "Green Right" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "" @@ -4991,7 +5111,7 @@ msgstr "Gitara " msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "" @@ -5004,12 +5124,29 @@ msgstr "" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5021,19 +5158,19 @@ msgstr "" msgid "Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5051,21 +5188,27 @@ msgstr "" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5073,7 +5216,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5081,11 +5224,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "" @@ -5097,7 +5240,7 @@ msgstr "" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "" @@ -5148,11 +5291,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "" @@ -5161,7 +5304,7 @@ msgid "IR" msgstr "" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "" @@ -5183,22 +5326,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5245,7 +5388,7 @@ msgstr "" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5253,7 +5396,7 @@ msgid "" "checked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5274,41 +5417,50 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" " Time elapsed: %1s" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5361,8 +5513,8 @@ msgstr "Info " #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Informacija " @@ -5371,10 +5523,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "" @@ -5388,16 +5540,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "" @@ -5409,7 +5567,7 @@ msgstr "" msgid "Install Update" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "" @@ -5425,11 +5583,11 @@ msgstr "" msgid "Instruction" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "" @@ -5447,7 +5605,7 @@ msgid "Interface" msgstr "" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "" @@ -5456,27 +5614,27 @@ msgstr "" msgid "Internal LZO Error - decompression failed" msgstr "" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5484,11 +5642,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5496,7 +5654,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5505,15 +5663,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5521,11 +5679,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "" @@ -5538,31 +5696,31 @@ msgstr "" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "" @@ -5571,8 +5729,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Italianski " @@ -5580,11 +5738,11 @@ msgstr "Italianski " msgid "Italy" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "" @@ -5592,47 +5750,47 @@ msgstr "" msgid "JIT Blocks" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5644,11 +5802,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5659,12 +5817,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japanski " @@ -5684,12 +5842,12 @@ msgstr "" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "" @@ -5702,20 +5860,20 @@ msgstr "" msgid "Keys" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Korejski " @@ -5743,7 +5901,7 @@ msgstr "" msgid "Label" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5820,15 +5978,15 @@ msgstr "" msgid "License" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "" @@ -5837,17 +5995,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Ucitaj " -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "" @@ -5855,7 +6013,7 @@ msgstr "" msgid "Load Custom Textures" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "" @@ -5864,7 +6022,7 @@ msgstr "" msgid "Load Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -5957,23 +6115,23 @@ msgstr "Ucitaj State Slot 8" msgid "Load State Slot 9" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "" @@ -5981,12 +6139,12 @@ msgstr "" msgid "Load from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "" @@ -5994,7 +6152,7 @@ msgstr "" msgid "Load..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "" @@ -6005,7 +6163,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "" @@ -6014,7 +6172,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "" @@ -6022,7 +6180,7 @@ msgstr "" msgid "Log Configuration" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6049,7 +6207,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "" @@ -6078,7 +6236,7 @@ msgstr "" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6088,7 +6246,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "" @@ -6097,7 +6255,7 @@ msgstr "" msgid "Maker:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6105,7 +6263,7 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "" @@ -6113,7 +6271,7 @@ msgstr "" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6121,15 +6279,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6138,7 +6296,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "" @@ -6147,11 +6305,11 @@ msgstr "" msgid "Medium" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "" @@ -6159,7 +6317,7 @@ msgstr "" msgid "Memory Card" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "" @@ -6177,7 +6335,7 @@ msgstr "" msgid "Memory Override" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "" @@ -6193,7 +6351,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6201,13 +6359,13 @@ msgid "" "want to continue?" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "" @@ -6215,19 +6373,19 @@ msgstr "" msgid "Misc" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6250,12 +6408,12 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6267,11 +6425,11 @@ msgstr "" msgid "Monospaced Font" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6311,10 +6469,10 @@ msgstr "" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "" @@ -6322,26 +6480,26 @@ msgstr "" msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "" @@ -6353,37 +6511,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6391,16 +6549,16 @@ msgstr "" msgid "Netherlands" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "" @@ -6421,11 +6579,11 @@ msgstr "" msgid "New" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "" @@ -6433,7 +6591,7 @@ msgstr "" msgid "New Tag..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "" @@ -6450,7 +6608,7 @@ msgstr "" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6459,17 +6617,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "" @@ -6477,6 +6635,10 @@ msgstr "" msgid "No Adapter Detected" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "" @@ -6487,24 +6649,20 @@ msgstr "" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6516,15 +6674,15 @@ msgstr "" msgid "No file loaded / recorded." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "" @@ -6532,11 +6690,15 @@ msgstr "" msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6547,7 +6709,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6555,17 +6717,13 @@ msgstr "" msgid "No save data found." msgstr "" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6575,7 +6733,7 @@ msgstr "" msgid "North America" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "" @@ -6583,11 +6741,11 @@ msgstr "" msgid "Not Set" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6595,7 +6753,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6655,13 +6813,13 @@ msgstr "" msgid "Nunchuk Stick" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6674,11 +6832,11 @@ msgid "Oceania" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Izskljucen/o" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6690,17 +6848,17 @@ msgstr "" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6715,7 +6873,7 @@ msgstr "Otvori " msgid "Open &Containing Folder" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "" @@ -6763,7 +6921,7 @@ msgstr "" msgid "OpenGL ES" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6781,7 +6939,7 @@ msgstr "Opcije " msgid "Orange" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6789,7 +6947,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "" @@ -6802,11 +6960,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "" @@ -6814,12 +6972,12 @@ msgstr "" msgid "Overlay Information" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "" @@ -6844,7 +7002,7 @@ msgstr "" msgid "PPC Size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6861,7 +7019,7 @@ msgstr "" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6870,23 +7028,23 @@ msgstr "" msgid "Parsing Error" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "" @@ -6907,7 +7065,7 @@ msgid "Path:" msgstr "" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "" @@ -6915,7 +7073,7 @@ msgstr "" msgid "Pause" msgstr "Pauza " -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "" @@ -6938,11 +7096,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "" @@ -6952,23 +7110,23 @@ msgstr "" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "" @@ -6981,7 +7139,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "" @@ -7001,16 +7159,16 @@ msgstr "Pokreni snimanje " msgid "Playback Options" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7021,29 +7179,29 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "" @@ -7055,15 +7213,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7100,7 +7258,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7111,15 +7269,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7127,25 +7285,25 @@ msgstr "" msgid "Problem" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Profil" @@ -7159,15 +7317,15 @@ msgstr "" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7179,11 +7337,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "" @@ -7193,12 +7351,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Pitanje " -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Izadji " @@ -7218,11 +7376,11 @@ msgstr "" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7235,44 +7393,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "" @@ -7280,11 +7438,11 @@ msgstr "" msgid "Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "" @@ -7297,11 +7455,11 @@ msgstr "" msgid "Record" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7326,7 +7484,7 @@ msgstr "" msgid "Red Right" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7342,16 +7500,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7359,26 +7517,26 @@ msgstr "" msgid "Refresh Game List" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "" @@ -7398,16 +7556,16 @@ msgstr "" msgid "Remind Me Later" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7430,8 +7588,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "" @@ -7464,29 +7622,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Reset/Restart " -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7494,15 +7660,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7514,11 +7680,11 @@ msgstr "" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "" @@ -7527,7 +7693,7 @@ msgstr "" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7585,11 +7751,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7598,12 +7764,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7613,11 +7780,11 @@ msgstr "" msgid "Rumble" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7625,15 +7792,15 @@ msgstr "" msgid "Russia" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "" @@ -7649,7 +7816,7 @@ msgstr "" msgid "SHA-1:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "" @@ -7663,11 +7830,11 @@ msgstr "" msgid "START" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "" @@ -7677,7 +7844,7 @@ msgid "Safe" msgstr "Siguran " #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7690,7 +7857,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7711,11 +7878,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7727,7 +7894,7 @@ msgstr "" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7777,23 +7944,23 @@ msgstr "Snimaj State Slot 8" msgid "Save State Slot 9" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "" @@ -7801,7 +7968,7 @@ msgstr "" msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "" @@ -7813,26 +7980,26 @@ msgstr "" msgid "Save as..." msgstr "Snimaj kao..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "" @@ -7840,7 +8007,7 @@ msgstr "" msgid "Save to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "" @@ -7848,23 +8015,23 @@ msgstr "" msgid "Save..." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7872,36 +8039,36 @@ msgstr "" msgid "ScrShot" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Trazi Subfoldere " -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "" @@ -7909,7 +8076,7 @@ msgstr "" msgid "Search games..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "" @@ -7933,28 +8100,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Izaberi " -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -7962,11 +8129,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -7974,7 +8141,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "" @@ -7982,7 +8149,7 @@ msgstr "" msgid "Select State" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "" @@ -8026,41 +8193,45 @@ msgstr "" msgid "Select State Slot 9" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "" @@ -8068,11 +8239,11 @@ msgstr "" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8080,12 +8251,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Izaberi \"snimani fajl/the save state\"" @@ -8101,15 +8272,15 @@ msgstr "" msgid "Selected Font" msgstr "" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8133,7 +8304,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8173,11 +8344,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Isprati" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "" @@ -8189,63 +8360,71 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" "May not work for all games." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "" @@ -8255,7 +8434,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8290,11 +8469,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "" @@ -8302,15 +8481,15 @@ msgstr "" msgid "Show Active Title in Window Title" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "" @@ -8318,7 +8497,7 @@ msgstr "" msgid "Show Debugging UI" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "" @@ -8326,43 +8505,43 @@ msgstr "" msgid "Show FPS" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "" @@ -8370,7 +8549,7 @@ msgstr "" msgid "Show Language:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "" @@ -8382,7 +8561,7 @@ msgstr "" msgid "Show NetPlay Ping" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "" @@ -8390,7 +8569,7 @@ msgstr "" msgid "Show On-Screen Display Messages" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "" @@ -8399,23 +8578,23 @@ msgstr "" msgid "Show PC" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "" @@ -8424,46 +8603,50 @@ msgstr "" msgid "Show Statistics" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8495,7 +8678,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "" @@ -8511,16 +8694,31 @@ msgstr "" msgid "Sideways Wii Remote" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "" @@ -8528,7 +8726,7 @@ msgstr "" msgid "Simulate DK Bongos" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8555,7 +8753,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "" @@ -8563,7 +8761,7 @@ msgstr "" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8577,19 +8775,19 @@ msgstr "" msgid "Slider Bar" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "" @@ -8607,7 +8805,7 @@ msgstr "" msgid "Software Renderer" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8624,11 +8822,11 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "" @@ -8641,8 +8839,8 @@ msgid "Spain" msgstr "" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "" @@ -8650,7 +8848,7 @@ msgstr "" msgid "Speaker Pan" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "" @@ -8685,7 +8883,7 @@ msgstr "" msgid "Speed up Disc Transfer Rate" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "" @@ -8697,16 +8895,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Pokreni " -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "" @@ -8714,11 +8912,13 @@ msgstr "" msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Pokreni Snimanje" @@ -8734,7 +8934,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "" @@ -8745,7 +8945,7 @@ msgstr "" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "" @@ -8773,19 +8973,19 @@ msgstr "" msgid "Step Over" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "" @@ -8794,20 +8994,20 @@ msgstr "" msgid "Stepping" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "" @@ -8828,11 +9028,15 @@ msgstr "" msgid "Stop" msgstr " Zaustavi" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "" @@ -8846,7 +9050,7 @@ msgstr "" msgid "Store XFB Copies to Texture Only" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8855,7 +9059,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8868,7 +9072,7 @@ msgstr "" msgid "Stretch to Window" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "" @@ -8891,16 +9095,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -8910,11 +9114,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -8923,7 +9127,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "" @@ -8935,12 +9139,12 @@ msgstr "" msgid "Successfully extracted system data." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "" @@ -8952,16 +9156,16 @@ msgstr "" msgid "Support" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -8969,11 +9173,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -8985,50 +9189,62 @@ msgstr "" msgid "Swing" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "" @@ -9042,37 +9258,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "" @@ -9090,11 +9306,11 @@ msgstr "" msgid "Taiwan" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "" @@ -9103,7 +9319,7 @@ msgstr "" msgid "Texture Cache" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9125,7 +9341,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9139,13 +9355,13 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "" @@ -9181,7 +9397,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9195,7 +9411,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9217,19 +9433,19 @@ msgstr "" msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9279,7 +9495,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9290,7 +9506,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9307,7 +9523,7 @@ msgstr "" msgid "The hashes match!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9329,12 +9545,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9349,20 +9565,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9383,7 +9599,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9434,7 +9650,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "" @@ -9468,7 +9684,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "" @@ -9486,7 +9702,7 @@ msgid "" "Replay itself." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "" @@ -9526,7 +9742,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "" @@ -9544,27 +9764,27 @@ msgid "" "or freezes while running this game." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9620,13 +9840,13 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9646,7 +9866,7 @@ msgstr "" msgid "Threshold" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "" @@ -9663,22 +9883,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "" @@ -9703,7 +9923,7 @@ msgid "Toggle Aspect Ratio" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "" @@ -9763,14 +9983,20 @@ msgstr "" msgid "Toolbar" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9805,20 +10031,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "" @@ -9848,20 +10074,12 @@ msgstr "" msgid "Type" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9878,9 +10096,9 @@ msgstr "" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -9908,10 +10126,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -9928,7 +10150,11 @@ msgid "" "Would you like to ignore this line and continue parsing?" msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -9940,15 +10166,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "" @@ -9962,18 +10188,18 @@ msgid "" "title from the NAND without deleting its save data. Continue?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Nepoznat/o" @@ -9981,7 +10207,7 @@ msgstr "Nepoznat/o" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -9991,7 +10217,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10001,15 +10227,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10017,19 +10243,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10037,7 +10263,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "" @@ -10053,13 +10279,28 @@ msgstr "" msgid "Unpacking" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10068,7 +10309,7 @@ msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Updejt " @@ -10123,7 +10364,7 @@ msgstr "" msgid "Upright Wii Remote" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "" @@ -10139,7 +10380,7 @@ msgstr "" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "" @@ -10165,18 +10406,40 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "" @@ -10189,18 +10452,18 @@ msgstr "" msgid "User Style:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10226,23 +10489,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10255,7 +10518,7 @@ msgstr "" msgid "V-Sync" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "" @@ -10288,8 +10551,8 @@ msgstr "" msgid "Verifying" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "" @@ -10325,7 +10588,7 @@ msgstr "" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10352,7 +10615,7 @@ msgstr "" msgid "Vulkan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "" @@ -10400,7 +10663,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10408,8 +10671,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10431,7 +10694,7 @@ msgid "" "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10444,10 +10707,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Upozorenje " @@ -10463,28 +10726,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10510,7 +10773,7 @@ msgstr "" msgid "Watch" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "" @@ -10539,11 +10802,11 @@ msgid "" "unsure, leave this checked." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "" @@ -10559,11 +10822,11 @@ msgstr "" msgid "Wii Menu" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "" @@ -10571,8 +10834,8 @@ msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "" @@ -10585,11 +10848,11 @@ msgstr "" msgid "Wii Remote Orientation" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "" @@ -10605,7 +10868,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "" @@ -10613,7 +10876,7 @@ msgstr "" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "" @@ -10641,18 +10904,18 @@ msgid "World" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "" @@ -10665,12 +10928,12 @@ msgid "Write to File" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "" @@ -10678,7 +10941,7 @@ msgstr "" msgid "Write to Window" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10689,7 +10952,7 @@ msgstr "" msgid "X" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "" @@ -10718,8 +10981,8 @@ msgid "Yellow" msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "" @@ -10754,7 +11017,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10783,11 +11046,11 @@ msgstr "" msgid "You have to enter a name." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10795,7 +11058,7 @@ msgstr "" msgid "You must restart Dolphin in order for the change to take effect." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "" @@ -10826,23 +11089,23 @@ msgstr "" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10861,13 +11124,13 @@ msgstr "" msgid "d3d12.dll could not be loaded." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -10883,31 +11146,31 @@ msgstr "" msgid "fake-completion" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -10937,7 +11200,7 @@ msgstr "" msgid "on" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "" @@ -10946,7 +11209,7 @@ msgstr "" msgid "s" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -10955,7 +11218,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -10974,7 +11237,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -10993,7 +11256,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11001,7 +11264,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Languages/po/sv.po b/Languages/po/sv.po index 21ea17250fba..f31d20f30942 100644 --- a/Languages/po/sv.po +++ b/Languages/po/sv.po @@ -8,16 +8,16 @@ # A. Regnander , 2014-2015 # A. Regnander , 2013,2015 # A. Regnander , 2015-2016,2018-2020 -# Arve Eriksson <031299870@telia.com>, 2017,2019-2021 +# Arve Eriksson <031299870@telia.com>, 2017,2019-2022 # JosJuice, 2015-2022 # Mat Mat , 2019 msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:33+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: JosJuice, 2015-2022\n" "Language-Team: Swedish (http://www.transifex.com/delroth/dolphin-emu/" "language/sv/)\n" "Language: sv\n" @@ -26,7 +26,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -38,7 +38,7 @@ msgstr "" "Eftersom GameCube-skivavbildningar inte innehåller mycket verifieringsdata " "kan det finnas problem som Dolphin inte kan upptäcka." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -50,7 +50,7 @@ msgstr "" "På grund av att detta är en utvecklarversion av en titel kan Dolphin inte " "verifiera att den inte har mixtrats med." -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -74,7 +74,7 @@ msgstr "" msgid " (Disc %1)" msgstr " (skiva %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "! Icke" @@ -82,7 +82,7 @@ msgstr "! Icke" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "\"{0}\" är en ogiltig GCM/ISO-fil eller är inte en GC/Wii-fil." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "$ Användarvariabel" @@ -96,7 +96,7 @@ msgstr "$ Användarvariabel" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "% Modulo" @@ -112,17 +112,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "%1 %2" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "%1 %2 %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -141,7 +141,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (revision %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "%1 (inbyggd)" @@ -181,7 +181,7 @@ msgstr "%1 MB (MEM2)" msgid "%1 doesn't support this feature on your system." msgstr "%1 stöder inte den här funktionen på ditt system." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "%1 stöder inte den här funktionen." @@ -195,23 +195,23 @@ msgstr "" "%2 objekt\n" "Nuvarande bildruta: %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "%1 har gått med" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "%1 har gått ut" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "%1 är inte en giltig ROM" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "%1 golfar nu" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "%1 minnesintervall" @@ -220,11 +220,11 @@ msgstr "%1 minnesintervall" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "%1 session hittades" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "%1 sessioner hittades" @@ -236,15 +236,15 @@ msgstr "%1%" msgid "%1% (%2 MHz)" msgstr "%1% (%2 MHz)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (normal hastighet)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "%1, %2, %3, %4" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "%1: %2" @@ -260,30 +260,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2]: %3/%4 MiB" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "%1x ursprunglig (%2x%3)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "%n adress(er) gick inte att komma åt i det emulerade minnet." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "%n adress(er) kvar." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "%n adress(er) togs bort." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "& Och" @@ -303,7 +303,7 @@ msgstr "&3x" msgid "&4x" msgstr "&4x" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&Om" @@ -312,11 +312,11 @@ msgid "&Add Memory Breakpoint" msgstr "&Lägg till minnesbrytpunkt" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "&Lägg till ny kod…" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "&Lägg till funktion" @@ -324,19 +324,19 @@ msgstr "&Lägg till funktion" msgid "&Add..." msgstr "&Lägg till..." -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "&Ljudinställningar" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "&Uppdatera automatiskt:" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "&Automatisk start" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "&Starta från bränd DVD" @@ -344,11 +344,11 @@ msgstr "&Starta från bränd DVD" msgid "&Borderless Window" msgstr "&Kantlöst fönster" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Brytpunkter" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "&Bugghanterare" @@ -356,15 +356,15 @@ msgstr "&Bugghanterare" msgid "&Cancel" msgstr "&Avbryt" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "&Fuskhanterare" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "&Leta efter uppdateringar..." -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "&Rensa symboler" @@ -372,7 +372,7 @@ msgstr "&Rensa symboler" msgid "&Clone..." msgstr "&Klona..." -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "&Kod" @@ -380,19 +380,20 @@ msgstr "&Kod" msgid "&Connected" msgstr "&Inkopplad" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "&Kontrollinställningar" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "&Kopiera adress" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "&Skapa..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "&Radera" @@ -404,7 +405,7 @@ msgstr "&Ta bort bevakning" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "&Redigera kod…" @@ -412,11 +413,11 @@ msgstr "&Redigera kod…" msgid "&Edit..." msgstr "&Redigera..." -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "&Mata ut skiva" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emulering" @@ -428,43 +429,47 @@ msgstr "&Exportera sparfil..." msgid "&Export State..." msgstr "&Exportera snabbsparning..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "&Exportera som .gci..." -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Arkiv" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&Teckensnitt…" -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "Gå fram en &bildruta" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "&Fri vy-inställningar" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "&Generera symboler från" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "Källkoden på &GitHub" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "G&rafikinställningar" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Hjälp" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "&Kortkommandoinställningar" @@ -476,11 +481,11 @@ msgstr "&Importera sparfil..." msgid "&Import State..." msgstr "&Importera snabbsparning..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "&Importera..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "&Infoga blr" @@ -488,7 +493,7 @@ msgstr "&Infoga blr" msgid "&Interframe Blending" msgstr "Tidsut&jämning" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -496,23 +501,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "&Språk:" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "L&äs in snabbsparning" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "&Ladda symbol-map" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "&Lås fast gränssnittselement" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Minne" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "&Inspelning" @@ -520,7 +525,7 @@ msgstr "&Inspelning" msgid "&Mute" msgstr "&Tyst" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "&Nätverk" @@ -528,24 +533,24 @@ msgstr "&Nätverk" msgid "&No" msgstr "&Nej" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Öppna..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "A<ernativ" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "&Patcha HLE-funktioner" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Pausa" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Spela" @@ -553,11 +558,11 @@ msgstr "&Spela" msgid "&Properties" msgstr "&Egenskaper" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "S&krivskyddat läge" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Register" @@ -566,24 +571,24 @@ msgid "&Remove" msgstr "&Ta bort" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "&Ta bort kod" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "&Byt namn på symbol" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Återställ" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "&Resurspaketshanterare" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "&Spara symbol-map" @@ -591,11 +596,11 @@ msgstr "&Spara symbol-map" msgid "&Scan e-Reader Card(s)..." msgstr "&Skanna e-Readerkort..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "&Hastighetsbegränsning:" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "S&toppa" @@ -603,11 +608,11 @@ msgstr "S&toppa" msgid "&Theme:" msgstr "&Tema:" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "&Trådar" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Verktyg" @@ -615,17 +620,17 @@ msgstr "&Verktyg" msgid "&Unload ROM" msgstr "Ladda &ur ROM" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Visa" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&Bevakning" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Webbplats" @@ -637,11 +642,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "&Ja" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "'%1' hittades inte, inga symbolnamn genererade" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "'%1' hittades inte, skannar efter vanliga funktioner istället" @@ -653,7 +658,7 @@ msgstr "(Ingen)" msgid "(host)" msgstr "(värd)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(av)" @@ -661,34 +666,34 @@ msgstr "(av)" msgid "(ppc)" msgstr "(ppc)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "* Multiplicera" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "+ Addera" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr ", Komma" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "- Subtrahera" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "--> %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "/ Dividera" @@ -696,6 +701,10 @@ msgstr "/ Dividera" msgid "128 Mbit (2043 blocks)" msgstr "128 Mbit (2043 block)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "16 byte" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "16 Mbit (251 block)" @@ -704,35 +713,35 @@ msgstr "16 Mbit (251 block)" msgid "16-bit" msgstr "16 bitar" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "16-bitars signerat heltal" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "16-bitars osignerat heltal" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x ursprunglig (1280x1056) för 720p" @@ -744,25 +753,25 @@ msgstr "32 Mbit (507 block)" msgid "32-bit" msgstr "32 bitar" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "32-bitars flyttal" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "32-bitars signerat heltal" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "32-bitars osignerat heltal" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -776,28 +785,32 @@ msgstr "3D-djup" msgid "3x" msgstr "3x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x ursprunglig (1920x1584) för 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "4 byte" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Mbit (59 block)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x ursprunglig (2560x2112) för 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x ursprunglig (3200x2640)" @@ -805,29 +818,33 @@ msgstr "5x ursprunglig (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Mbit (1019 block)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "64-bitars flyttal" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "64-bitars signerat heltal" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "64-bitars osignerat heltal" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x ursprunglig (3840x3168) för 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x ursprunglig (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "8 byte" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Mbit (123 block)" @@ -836,25 +853,25 @@ msgstr "8 Mbit (123 block)" msgid "8-bit" msgstr "8 bitar" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "8-bitars signerat heltal" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "8-bitars osignerat heltal" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x ursprunglig (5120x4224) för 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "< Mindre än" @@ -876,12 +893,12 @@ msgstr "" "för nedladdning. Du använder %2.
Vill du uppdatera?" "

Uppdateringsbeskrivning:

" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "> Större än" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "En nätspelssession pågår redan!" @@ -906,11 +923,11 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "En skiva håller redan på att sättas in." -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "En snabbsparning kan inte laddas utan att ange ett spel att starta." -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -919,7 +936,7 @@ msgstr "" "avslutar emuleringen innan den slutförs. Vill du tvinga emuleringen att " "avslutas?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "Det går bara att synka när ett Wii-spel körs." @@ -928,7 +945,7 @@ msgstr "Det går bara att synka när ett Wii-spel körs." msgid "AD16" msgstr "AD16" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -965,8 +982,8 @@ msgstr "AR-kod" msgid "AR Codes" msgstr "AR-koder" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -989,7 +1006,7 @@ msgstr "Accelerometer" msgid "Accuracy:" msgstr "Precision:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "Handling" @@ -1101,9 +1118,9 @@ msgstr "Adapter upptäcktes" msgid "Adapter:" msgstr "Adapter:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Lägg till" @@ -1111,11 +1128,11 @@ msgstr "Lägg till" msgid "Add &breakpoint" msgstr "Lägg till &brytpunkt" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "Lägg till ny DSU-server" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "Lägg till ny USB-enhet" @@ -1147,46 +1164,49 @@ msgstr "Lägg till minnesbrytpunkt" msgid "Add to &watch" msgstr "Lägg till &bevakning" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "Lägg till bevakning" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Lägg till..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Adress" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "Adressutrymme" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "Adressutrymme enligt CPU:ns tillstånd" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "Adress:" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1249,39 +1269,43 @@ msgstr "Avancerat" msgid "Africa" msgstr "Afrika" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "Justerat till datatypens längd" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "Alla filer" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "Alla filer (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "Alla GC/Wii-filer" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "Alla snabbsparningar (*.sav *.s##);; Alla filer (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "Alla enheter" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "Alla filer (*)" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "Alla spelares koder har synkroniserats." @@ -1290,19 +1314,19 @@ msgstr "Alla spelares koder har synkroniserats." msgid "All players' saves synchronized." msgstr "Alla spelares sparfiler har synkroniserats." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "Tillåt regionsinställningar som inte matchar" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "Tillåt rapportering av användningsstatistik" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "Tillåt ändringar på SD-kort" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." @@ -1310,7 +1334,7 @@ msgstr "" "Tillåter manipulering av spelets kamera.

Om du är " "osäker, lämna detta okryssat." -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1336,7 +1360,7 @@ msgstr "&Alltid längst upp" msgid "An inserted disc was expected but not found." msgstr "En inmatad skiva förväntades men hittades inte." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Anaglyf" @@ -1354,39 +1378,39 @@ msgstr "Vinkel" msgid "Angular velocity to ignore and remap." msgstr "Vinkelhastighet att ignorera samt skala med." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "Anisotropisk filtrering" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Anisotropisk filtrering:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "Kantutjämning" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Kantutjämning:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "Valfri region" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "Lägg till signatur i" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "Lägg till i &existerande signaturfil..." -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "Appli&cera signaturfil..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1402,15 +1426,15 @@ msgstr "Apploader-datum:" msgid "Apply" msgstr "Verkställ" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "Applicera signaturfil" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "Upptäck godtyckliga mipmaps" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "Vill du verkligen radera '%1'?" @@ -1418,11 +1442,11 @@ msgstr "Vill du verkligen radera '%1'?" msgid "Are you sure you want to delete this file?" msgstr "Vill du verkligen radera den här filen?" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "Är du säker på att du vill radera det här paketet?" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "Är du säker på att du vill avsluta nätspelssessionen?" @@ -1435,11 +1459,11 @@ msgid "Aspect Ratio" msgstr "Bildförhållande" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "Bildförhållande:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Tilldela kontrolluttag" @@ -1447,7 +1471,7 @@ msgstr "Tilldela kontrolluttag" msgid "Assign Controllers" msgstr "Tilldela kontroller" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "Åtminstone två av de markerade sparfilerna har samma interna filnamn." @@ -1472,7 +1496,7 @@ msgstr "Ljudsträckningsinställningar" msgid "Australia" msgstr "Australien" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "Skapare" @@ -1484,15 +1508,15 @@ msgstr "Författare" msgid "Auto" msgstr "Auto" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Auto (multipel av 640x528)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "Automatiska uppdateringar" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1513,7 +1537,7 @@ msgstr "Autojustera fönsterstorlek" msgid "Auto-Hide" msgstr "Dölj automatiskt" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "Upptäck RSO-moduler automatiskt?" @@ -1527,12 +1551,12 @@ msgstr "" "dolphin_emphasis>" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "ARAM" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "B" @@ -1550,11 +1574,11 @@ msgstr "" "MAC-adress måste användas. Generera en ny MAC-adress som börjar med 00:09:bf " "eller 00:17:ab." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "BIOS:" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "BP-register" @@ -1580,7 +1604,7 @@ msgstr "Backendinställningar" msgid "Backend:" msgstr "Backend:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Bakgrundsindata" @@ -1591,7 +1615,13 @@ msgstr "Bakgrundsindata" msgid "Backward" msgstr "Tillbaka" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "Ogiltig adress angiven." @@ -1599,19 +1629,20 @@ msgstr "Ogiltig adress angiven." msgid "Bad dump" msgstr "Inkorrekt kopia" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "Dålig förskjutning angavs." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "Ogiltigt värde angivet." #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Banner" @@ -1635,7 +1666,7 @@ msgstr "Basprioritet" msgid "Basic" msgstr "Grundläggande" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Grundläggande inställningar" @@ -1643,7 +1674,7 @@ msgstr "Grundläggande inställningar" msgid "Bass" msgstr "Bas" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "Batchläget kan inte användas utan att ange ett spel att starta." @@ -1651,11 +1682,11 @@ msgstr "Batchläget kan inte användas utan att ange ett spel att starta." msgid "Battery" msgstr "Batteri" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "Beta (en gång i månaden)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "BetterJoy, DS4Windows, etc" @@ -1677,7 +1708,7 @@ msgstr "Bithastighet (kbps):" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "Blockstorlek" @@ -1690,7 +1721,7 @@ msgstr "Blockstorlek:" msgid "Blocking" msgstr "Blockning" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Block" @@ -1715,15 +1746,15 @@ msgstr "" "Bluetooth-genomsläppningsläge är påslaget, men Dolphin byggdes utan libusb. " "Genomsläppningsläge kan inte användas." -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "Pausa vid start" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "BootMii-NAND-kopia (*bin);;Alla filer (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "BootMii-nyckelfil (*bin);;Alla filer (*)" @@ -1731,7 +1762,7 @@ msgstr "BootMii-nyckelfil (*bin);;Alla filer (*)" msgid "Borderless Fullscreen" msgstr "Kantlös helskärm" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Under" @@ -1745,7 +1776,7 @@ msgid "Branches" msgstr "Grenar" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "Bryt" @@ -1754,7 +1785,7 @@ msgstr "Bryt" msgid "Breakpoint" msgstr "Brytpunkt" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "Brytpunkt påträffades! Urstegning avbruten." @@ -1784,7 +1815,7 @@ msgstr "Fel i bredbandsadapter" msgid "Broadband Adapter MAC Address" msgstr "Bredbandsadapterns MAC-adress" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "Bläddra bland &nätspelssessioner..." @@ -1792,12 +1823,12 @@ msgstr "Bläddra bland &nätspelssessioner..." msgid "Buffer Size:" msgstr "Buffertstorlek:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "Buffertstorleken ändrades till %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Buffert:" @@ -1842,11 +1873,11 @@ msgstr "Knappar" msgid "C Stick" msgstr "C-spak" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "S&kapa signaturfil..." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "CP-register" @@ -1881,7 +1912,7 @@ msgstr "" msgid "Calculate" msgstr "Beräkna" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1906,15 +1937,15 @@ msgstr "Kalibrering" msgid "Calibration Period" msgstr "Kalibreringstid" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" -msgstr "" +msgstr "Anropa visningslista på adress %1 med storlek %2" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "Anropsstack" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "Kamera 1" @@ -1924,7 +1955,7 @@ msgstr "Kamera 1" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "Kamerans synfält (påverkar pekarens känslighet)." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "Det går bara att generera AR-koder för värden i virtuellt minne." @@ -1932,17 +1963,17 @@ msgstr "Det går bara att generera AR-koder för värden i virtuellt minne." msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "Kan inte hitta Wii-fjärrkontrollen med anslutnings-handle {0:02x}" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" "Det går inte att starta en nätspelssession medan ett spel fortfarande körs!" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "Avbryt" @@ -1963,24 +1994,24 @@ msgstr "" "Denna WAD kan inte startas för att det inte gick att installera den till " "NAND-minnet." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" "Det går inte att jämföra med föregående värde under den första sökningen." -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "Kan inte hitta GC-IPL-filen." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "Det går inte att generera en AR-kod för den här adressen." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "Det går inte att uppdatera utan resultat." -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "Kunde inte starta spelet för att GC-IPL-filen inte kunde hittas." @@ -2002,7 +2033,7 @@ msgstr "Centrera och kalibrera" msgid "Change &Disc" msgstr "Byt &skiva" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "Byt s&kiva..." @@ -2010,15 +2041,15 @@ msgstr "Byt s&kiva..." msgid "Change Disc" msgstr "Byt skiva" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "Byt skivor automatiskt" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "Byt skiva till {0}" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -2046,7 +2077,7 @@ msgstr "Fuskändringar kommer inte börja gälla förrän spelet startas om." msgid "Channel Partition (%1)" msgstr "Kanalpartition (%1)" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Chatt" @@ -2062,11 +2093,11 @@ msgstr "Sök efter fusk" msgid "Cheats Manager" msgstr "Fuskhanterare" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "Kontrollera NAND-minne..." -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "Leta efter ändringar i spellistan i bakgrunden" @@ -2082,7 +2113,7 @@ msgstr "" "Kontrollera om du har rättigheterna som krävs för att radera filen eller om " "filen fortfarande används." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "Kontrollsumma" @@ -2090,16 +2121,16 @@ msgstr "Kontrollsumma" msgid "China" msgstr "Kina" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Välj en fil att öppna" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "Välj primär indatafil" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "Välj sekundär indatafil" @@ -2122,14 +2153,14 @@ msgid "Classic Controller" msgstr "Classic Controller" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Rensa" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "Rensa cache" @@ -2146,28 +2177,47 @@ msgstr "Klona och &redigera kod…" msgid "Close" msgstr "Stäng" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "Ko&nfiguration" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Kod" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Kod:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "Koder mottagna!" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "Kombinera &två signaturfiler..." #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "Gemensamt" @@ -2185,7 +2235,7 @@ msgstr "Kompilerar shaders" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "Komprimering" @@ -2198,7 +2248,7 @@ msgstr "Komprimeringsnivå:" msgid "Compression:" msgstr "Komprimering:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "Villkor" @@ -2210,13 +2260,13 @@ msgstr "Villkor" msgid "Config" msgstr "Konfig." -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Konfigurera" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "Anpassa kontroll" @@ -2224,21 +2274,21 @@ msgstr "Anpassa kontroll" msgid "Configure Dolphin" msgstr "Konfigurera Dolphin" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "Konfigurera inmatning" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "Konfigurera utmatning" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "Bekräfta" @@ -2251,26 +2301,26 @@ msgstr "Bekräfta byte av backend" msgid "Confirm on Stop" msgstr "Bekräfta vid stopp" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "Bekräftelse" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Anslut" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Anslut balansbräda" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "Anslut USB-tangentbord" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "Anslut Wii-fjärrkontroll %1" @@ -2290,11 +2340,11 @@ msgstr "Anslut Wii-fjärrkontroll 3" msgid "Connect Wii Remote 4" msgstr "Anslut Wii-fjärrkontroll 4" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "Anslut Wii-fjärrkontroller" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "Anslut Wii-fjärrkontroller för emulerade kontroller" @@ -2306,15 +2356,19 @@ msgstr "Vill du ansluta till internet och uppdatera Wii-systemmjukvaran?" msgid "Connected" msgstr "Ansluten" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "Ansluter" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Anslutningstyp:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "Innehåll {0:08x} är korrupt." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Kontinuerlig skanning" @@ -2327,7 +2381,7 @@ msgstr "Kontrollera nätspelsgolfläge" msgid "Control Stick" msgstr "Kontrollspak" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "Kontrollprofil" @@ -2355,7 +2409,7 @@ msgstr "Kontrollinställningar" msgid "Controllers" msgstr "Kontroller" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2367,7 +2421,7 @@ msgstr "" "skapar starkare utanför-skärmen-effekter medan ett lägre värde är mer " "bekvämt." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2382,7 +2436,7 @@ msgstr "" "

Om du är osäker kan du välja Ursprunglig." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2415,12 +2469,12 @@ msgstr "" "Styr vilken DSP-emulering som ska användas; hög eller låg nivå. Förval är " "Sant" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "Konvergens" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Konvergens:" @@ -2462,33 +2516,38 @@ msgstr "" "Konverterar...\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Kopiera" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "Kopiera &funktion" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "Kopiera &hex" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "Kopiera adress" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "Kopiering misslyckades" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "Kopiera hex" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "Kopiera kod&rad" @@ -2496,11 +2555,15 @@ msgstr "Kopiera kod&rad" msgid "Copy failed" msgstr "Kopiering misslyckades" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "Kopiera till A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "Kopiera till B" @@ -2515,16 +2578,16 @@ msgstr "Kärna" msgid "Cost" msgstr "Kostnad" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "Kunde inte kommunicera med värden." -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "Kunde inte skapa klient." -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "Kunde inte skapa en peer." @@ -2636,15 +2699,15 @@ msgstr "" "I så fall kan du behöva ställa in dina minneskortsplatser i inställningarna " "igen." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "Kunde inte slå upp centralserver" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "Kunde inte öppna filen." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "Kunde inte läsa in filen." @@ -2677,7 +2740,7 @@ msgstr "" "dolphin_emphasis>" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "Skapare:" @@ -2703,11 +2766,11 @@ msgstr "" msgid "Crossfade" msgstr "Överbländning" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "Nuvarande region" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "Nuvarande värde" @@ -2715,7 +2778,7 @@ msgstr "Nuvarande värde" msgid "Current context" msgstr "Aktuell kontext" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "Nuvarande spel" @@ -2723,7 +2786,7 @@ msgstr "Nuvarande spel" msgid "Current thread" msgstr "Aktuell tråd" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "Anpassat adressutrymme" @@ -2754,7 +2817,7 @@ msgstr "DFF-filens storlek är 0; skadad/ofullständig fil?" msgid "DJ Turntable" msgstr "DJ-skivspelare" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "DK Bongos" @@ -2782,7 +2845,7 @@ msgstr "DSP LLE-omkompilator (långsam)" msgid "DSU Client" msgstr "DSU-klient" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2794,11 +2857,11 @@ msgstr "" "installationsinstruktioner ,
se denna sida." -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Dansmatta" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "Data" @@ -2810,28 +2873,27 @@ msgstr "Datapartition (%1)" msgid "Data Transfer" msgstr "Dataöverföring" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "Datatyp" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "Det finns data i ett område av filen som borde vara oanvänt." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "Data i okänt format eller trasig." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "Datainkonsekvens i GCMemcardManager, avbryter åtgärd." -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "Data mottagen!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "Datel MaxDrive/Pro-filer" @@ -2849,7 +2911,7 @@ msgid "Debug Only" msgstr "Endast felsökning" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Felsökning" @@ -2891,7 +2953,7 @@ msgstr "Minska X" msgid "Decrease Y" msgstr "Minska Y" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Standard" @@ -2907,7 +2969,7 @@ msgstr "Standardenhet" msgid "Default Font" msgstr "Standardteckensnitt" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "Standard-ISO:" @@ -2938,7 +3000,7 @@ msgstr "" "

Om du är osäker kan du lämna detta omarkerat." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2953,11 +3015,11 @@ msgid "Delete Selected Files..." msgstr "Radera valda filer..." #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "Radera den existerande filen '{0}'?" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "Djup" @@ -2965,21 +3027,21 @@ msgstr "Djup" msgid "Depth Percentage:" msgstr "Djupandel:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Djup:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Beskrivning" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Beskrivning:" @@ -2988,11 +3050,11 @@ msgstr "Beskrivning:" msgid "Detached" msgstr "Frikopplad" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Sök" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "Upptäcker RSO-moduler" @@ -3000,25 +3062,25 @@ msgstr "Upptäcker RSO-moduler" msgid "Deterministic dual core:" msgstr "Deterministiska dubbla kärnor:" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "Utveckling (flera gånger om dagen)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Enhet" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "Enhetens PID (t.ex. 0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Enhetsinställningar" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "Enhetens VID (t.ex. 057e)" @@ -3030,11 +3092,15 @@ msgstr "Enhet:" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "%1 verkar inte vara en giltig Riivolution-XML-fil." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "Gör skärmen mörkare efter fem minuters inaktivitet." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "Direkt anslutning" @@ -3071,7 +3137,7 @@ msgstr "Avaktivera" msgid "Disable Bounding Box" msgstr "Inaktivera Bounding Box" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "Inaktivera kopieringsfilter" @@ -3083,15 +3149,15 @@ msgstr "Inaktivera EFB-VRAM-kopior" msgid "Disable Emulation Speed Limit" msgstr "Inaktivera emuleringshastighetsgräns" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "Inaktivera fastmem" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Inaktivera dimma" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "Inaktivera JIT-cache" @@ -3099,7 +3165,7 @@ msgstr "Inaktivera JIT-cache" msgid "Disabled" msgstr "Avstängd" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -3120,7 +3186,7 @@ msgstr "" "istället. Förhindrar all uppskalning.

Om du är " "osäker kan du lämna detta omarkerat." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -3142,11 +3208,15 @@ msgstr "Skiva" msgid "Discard" msgstr "Kasta" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "Visa värden hexadecimalt" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -3168,26 +3238,26 @@ msgstr "Avstånd" msgid "Distance of travel from neutral position." msgstr "Förflyttningsavstånd från neutral position." -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" "Godkänner du att Dolphin rapporterar information till Dolphins utvecklare?" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "Vill du lägga till \"%1\" i listan av spelsökvägar?" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "Vill du tömma symbolnamnlistan?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "Vill du radera denna/dessa %n markerade sparfil(er)?" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Vill du stoppa den aktuella emuleringen?" @@ -3202,11 +3272,11 @@ msgstr "Dolphin-FIFO-logg (*.dff)" #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:327 msgid "Dolphin Game Mod Preset" -msgstr "" +msgstr "Förinställd Dolphin-spelmod" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "Dolphin-map-fil (*.map)" @@ -3218,8 +3288,8 @@ msgstr "Dolphin-signatur-CSV-fil" msgid "Dolphin Signature File" msgstr "Dolphin-signaturfil" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Dolphin-TAS-filmer (*.dtm)" @@ -3263,11 +3333,11 @@ msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "" "Dolphin är en GameCube- och Wii-emulator som är open source och fri mjukvara." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "Dolphin är för gammal för traverseringsservern" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." @@ -3275,11 +3345,11 @@ msgstr "" "Dolphin kan inte verifiera typiska TGC-filer korrekt eftersom de inte är " "kopior av faktiska skivor." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "Dolphin kan inte verifiera olicensierade skivor." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3295,7 +3365,7 @@ msgstr "Dolphins fusksystem är avstängt just nu." msgid "Domain" msgstr "Domän" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "Uppdatera inte" @@ -3308,24 +3378,26 @@ msgid "Done compressing disc image." msgstr "Skivavbildningen har komprimerats." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "Double" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Ner" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "Ladda ner koder" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "Ladda ner koder från WiiRD-databasen" @@ -3333,11 +3405,11 @@ msgstr "Ladda ner koder från WiiRD-databasen" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "Ladda ned spelomslag från GameTDB.com att använda i rutnätsläget" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "Nedladdning slutförd" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "Laddade ner %1 koder. (Lade till %2)" @@ -3360,27 +3432,35 @@ msgstr "Trumset" msgid "Dual Core" msgstr "Dual Core" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Dummy" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "Dumpa &ARAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "Dumpa &ExRAM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "Dumpa &FakeVMEM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "Dumpa &MRAM" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Dumpa ljud" @@ -3392,7 +3472,7 @@ msgstr "Dumpa bastexturer" msgid "Dump EFB Target" msgstr "Dumpa EFB-mål" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Dumpa bildrutor" @@ -3404,7 +3484,7 @@ msgstr "Dumpa mipmaps" msgid "Dump Objects" msgstr "Dumpa objekt" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "Dump-sökväg:" @@ -3519,18 +3599,18 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "Varaktighet för turboknappsläppning (bildrutor):" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Nederländska" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "A&vsluta" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" -msgstr "" +msgstr "EFB-kopia %1" #: Source/Core/Core/HW/EXI/BBA/TAP_Win32.cpp:216 msgid "" @@ -3544,7 +3624,7 @@ msgstr "" "krävs förmodligen en omstart nu för att få Windows att hitta den nya " "drivrutinen." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3576,7 +3656,7 @@ msgstr "Effekt" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "Effektiv" @@ -3584,7 +3664,7 @@ msgstr "Effektiv" msgid "Effective priority" msgstr "Faktisk prioritet" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "EiB" @@ -3596,7 +3676,7 @@ msgstr "Mata ut skiva" msgid "Embedded Frame Buffer (EFB)" msgstr "Inbäddad bildrutebuffert (EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Tom" @@ -3604,11 +3684,11 @@ msgstr "Tom" msgid "Emu Thread already running" msgstr "Emuleringstråd körs redan" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "Emulera Wii-Bluetooth-adapter" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "Emulerad Wii-fjärrkontroll" @@ -3627,8 +3707,12 @@ msgstr "" msgid "Emulation Speed" msgstr "Emuleringshastighet" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "Emulering måste ha startats för att spela in." + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3644,7 +3728,7 @@ msgstr "Aktivera API-valideringslager" msgid "Enable Audio Stretching" msgstr "Aktivera ljudsträckning" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Aktivera fusk" @@ -3656,7 +3740,7 @@ msgstr "Aktivera egen realtidsklocka" msgid "Enable Dual Core" msgstr "Aktivera dubbla kärnor" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Aktivera dubbla kärnor (höjer prestandan)" @@ -3682,19 +3766,19 @@ msgid "Enable Progressive Scan" msgstr "Aktivera Progressive scan" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "Vibration" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Aktivera skärmsläckare" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Aktivera högtalardata" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "Aktivera statistikrapportering" @@ -3726,7 +3810,7 @@ msgstr "" "Aktiverar beräkning av Floating Point Result Flag. Behövs för vissa spel. " "(PÅ = kompatibel, AV = snabb)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3738,7 +3822,7 @@ msgstr "" "fåtal spel.

Om du är osäker kan du välja 1x." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3784,7 +3868,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "Sträcker ut ljudet så att det matchar emulationshastigheten." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3831,7 +3915,7 @@ msgstr "" msgid "Encoding" msgstr "Teckenkodning" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3848,12 +3932,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet initialiserades inte" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "Engelska" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3863,7 +3947,7 @@ msgstr "Förbättringar" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "Ange IP-adress för enheten som kör XLink Kai-klienten:" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "Ange ID för en USB-enhet" @@ -3877,11 +3961,11 @@ msgstr "Ange adress att bevaka:" msgid "Enter new Broadband Adapter MAC address:" msgstr "Ange ny MAC-adress för bredbandsadaptern:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "Ange lösenord" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "Ange RSO-moduladressen:" @@ -3890,65 +3974,68 @@ msgstr "Ange RSO-moduladressen:" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Fel" @@ -3963,19 +4050,19 @@ msgstr "" "Fel uppstod när valt språk skulle läsas in. Byter tillbaka till " "systemstandard." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "Ett fel uppstod när sessionslistan skulle hämtas: %1" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "Ett fel uppstod när vissa texturpaket laddades" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "Fel uppstod när koder behandlades." -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "Fel uppstod när data behandlades." @@ -3995,7 +4082,7 @@ msgstr "Fel uppstod när spardata synkroniserades!" msgid "Error writing file: {0}" msgstr "Fel uppstod när fil skrevs: {0}" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -4051,11 +4138,11 @@ msgstr "" "Fel: Försöker att komma åt Windows-1252-teckensnitt men de är inte inlästa. " "Spel kanske inte visar typsnitt korrekt, eller kraschar." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "Fel hittades i {0} block i {1}-partitionen." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "Fel hittades i {0} oanvända block i {1}-partitionen." @@ -4064,11 +4151,39 @@ msgstr "Fel hittades i {0} oanvända block i {1}-partitionen." msgid "Euphoria" msgstr "Euphoria" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Europa" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "Exklusiva übershaders" @@ -4117,14 +4232,14 @@ msgstr "Variabelnamn förväntades." msgid "Experimental" msgstr "Experimentell" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Exportera alla Wii-sparningar" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "Exportering misslyckades" @@ -4132,15 +4247,15 @@ msgstr "Exportering misslyckades" msgid "Export Recording" msgstr "Exportera inspelning" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Exportera inspelning..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "Exportera sparfil" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "Exportera sparfiler" @@ -4152,22 +4267,22 @@ msgstr "Exportera Wii-sparning" msgid "Export Wii Saves" msgstr "Exportera Wii-sparningar" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "Exportera som .&gcs..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "Exportera som .&sav..." -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "Exporterade %n sparfil(er)" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Extern kontroll" @@ -4180,7 +4295,7 @@ msgstr "Rörelseinmatning för extern kontroll" msgid "Extension Motion Simulation" msgstr "Rörelsesimulering för extern kontroll" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "Extern" @@ -4188,7 +4303,7 @@ msgstr "Extern" msgid "External Frame Buffer (XFB)" msgstr "Extern bildrutebuffert (XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "Extrahera certifikat från NAND-minne" @@ -4226,7 +4341,7 @@ msgid "FD" msgstr "FD" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "FIFO-spelare" @@ -4234,7 +4349,7 @@ msgstr "FIFO-spelare" msgid "Failed loading XML." msgstr "Misslyckades att ladda XML." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" @@ -4242,11 +4357,11 @@ msgstr "" "Misslyckades att öppna minneskortet:\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "Misslyckades att lägga till denna session i nätspelsindex: %1" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "Misslyckades att lägga till i signaturfilen \"%1\"" @@ -4258,7 +4373,7 @@ msgstr "Kunde inte ta gränssnitt för BT-genomsläpp" msgid "Failed to connect to Redump.org" msgstr "Misslyckades att ansluta till Redump.org" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "Misslyckades att ansluta till server: %1" @@ -4279,14 +4394,14 @@ msgstr "Misslyckades att skapa globala resurser för D3D12" msgid "Failed to create DXGI factory" msgstr "Misslyckades att skapa DXGI-fabrik" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" "Misslyckades att radera nätspelssparfil för GBA{0}. Kontrollera " "skrivrättigheterna." -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" "Misslyckades att radera minneskort för nätspel. Bekräfta dina " @@ -4300,19 +4415,19 @@ msgstr "Misslyckades att radera den valda filen." msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "Misslyckades att koppla loss kärnans drivrutin för BT-genomsläpp: {0}" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Misslyckades att ladda ner koder." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "Misslyckades att dumpa %1: Kan inte öppna filen" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "Misslyckades att dumpa %1: Kunde inte skriva till filen" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "Misslyckades med att exportera %n av %1 sparfil(er)." @@ -4321,7 +4436,7 @@ msgstr "Misslyckades med att exportera %n av %1 sparfil(er)." msgid "Failed to export the following save files:" msgstr "Misslyckades att exportera följande sparfiler:" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "Misslyckades att extrahera certifikat från NAND-minnet" @@ -4347,18 +4462,18 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "Misslyckades att hitta en eller flera D3D-symboler" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "Misslyckades att importera \"%1\"." -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" "Misslyckades att importera sparfil. Starta spelet en gång och prova sedan " "igen." -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." @@ -4366,7 +4481,7 @@ msgstr "" "Misslyckades att importera sparfil. Den givna filen verkar vara skadad eller " "är inte en giltig Wii-sparfil." -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " @@ -4377,7 +4492,7 @@ msgstr "" "minnet (Verktyg -> Hantera NAND -> Kontrollera NAND-minne...) och importera " "sedan sparfilen igen." -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "Misslyckades att initialisera kärnan" @@ -4387,29 +4502,32 @@ msgid "" "Make sure your video card supports at least D3D 10.0\n" "{0}" msgstr "" +"Kunde inte initiera Direct3D.\n" +"Kontrollera att ditt grafikkort stödjer minst D3D 10.0\n" +"{0}" #: Source/Core/VideoBackends/D3D12/VideoBackend.cpp:142 #: Source/Core/VideoBackends/OGL/OGLMain.cpp:197 msgid "Failed to initialize renderer classes" msgstr "Misslyckades att initialisera renderarklasser" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "Misslyckades att installera paket: %1" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "Misslyckades att installera denna titel till NAND-minnet." -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "Misslyckades att lyssna på port %1. Körs nätspelsservern redan?" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "Misslyckades att ladda RSO-model vid %1" @@ -4421,11 +4539,11 @@ msgstr "Misslyckades att ladda d3d11.dll" msgid "Failed to load dxgi.dll" msgstr "Misslyckades att ladda dxgi.dll" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "Misslyckades att läsa map-filen \"%1\"" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "Kunde inte läsa in den exekverbara filen till minnet." @@ -4438,7 +4556,7 @@ msgstr "" "uppdateringspaketet KB4019990." #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "Misslyckades att öppna '%1'" @@ -4467,11 +4585,11 @@ msgstr "" "Misslyckades att öppna filen i en extern editor.\n" "Se till att det finns en applikation inställd för att öppna INI-filer." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "Kunde inte öppna fil." -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "Misslyckades att öppna servern" @@ -4480,7 +4598,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "Misslyckades att öppna indatafilen \"%1\"." #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4495,7 +4613,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "Misslyckades att tolka data från Redump.org" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "Misslyckades att tolka angivet värde som måldatatypen." @@ -4503,25 +4621,25 @@ msgstr "Misslyckades att tolka angivet värde som måldatatypen." msgid "Failed to read DFF file." msgstr "Misslyckades att läsa DFF-fil." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "Kunde inte läsa från fil." #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "Misslyckades att läsa från indatafilen \"{0}\"." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "Kunde inte läsa vald(a) sparfil(er) från minneskort." -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "Misslyckades att läsa {0}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "Kunde inte ta bort fil." @@ -4539,19 +4657,19 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "Kunde inte ta bort denna titel från NAND-minnet." -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" "Misslyckades att nollställa nätspels-GCI-mappen. Kontrollera " "skrivrättigheterna." -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" "Misslyckades att nollställa nätspels-NAND-mappen. Kontrollera " "skrivrättigheterna." -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" "Misslyckades att nollställa nätspelsomdirigeringsmappen. Kontrollera " @@ -4561,23 +4679,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "Misslyckades att spara FIFO-logg." -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "Misslyckades att spara kod-map till sökvägen \"%1\"" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "Misslyckades att spara signaturfilen \"%1\"" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "Misslyckades att spara symbol-map till sökvägen \"%1\"" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "Misslyckades att spara till signaturfilen \"%1\"" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "Misslyckades att avinstallera paket: %1" @@ -4585,11 +4703,11 @@ msgstr "Misslyckades att avinstallera paket: %1" msgid "Failed to write BT.DINF to SYSCONF" msgstr "Misslyckades att skriva BT.DINF till SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "Misslyckades att skriva Mii-data." -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "Misslyckades att skriva Wii-sparning." @@ -4597,22 +4715,22 @@ msgstr "Misslyckades att skriva Wii-sparning." msgid "Failed to write config file!" msgstr "Kunde inte skriva inställningsfil!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "Kunde inte skriva ändrat minneskort till disk." -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "Misslyckades att skriva omdirigerad sparning." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "Kunde inte skriva sparfil till disk." #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4623,19 +4741,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "Misslyckades" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "Rättvis latens" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "Region" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "Region:" @@ -4648,7 +4766,7 @@ msgstr "Snabb" msgid "Fast Depth Calculation" msgstr "Snabb djupberäkning" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4667,7 +4785,7 @@ msgstr "Fildetaljer" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "Filformat" @@ -4681,18 +4799,18 @@ msgstr "Filinformation" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Filnamn" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "Sökväg" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Filstorlek" @@ -4700,11 +4818,11 @@ msgstr "Filstorlek" msgid "File Size:" msgstr "Filstorlek:" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "Filen innehöll inga koder." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "Filnamn" @@ -4720,11 +4838,11 @@ msgstr "" "Filer angivna i M3U-filen \"{0}\" hittades inte:\n" "{1}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "Filstorleken matchar inte någon känd storlek för GameCube-minneskort." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "Filstorleken i headern matchar inte minneskortets faktiska storlek." @@ -4732,15 +4850,15 @@ msgstr "Filstorleken i headern matchar inte minneskortets faktiska storlek." msgid "Filesystem" msgstr "Filsystem" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "Filtrera symboler" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "Filter" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4752,11 +4870,11 @@ msgstr "" "spel, men orsakar problem i andra.

Om du är osäker " "kan du lämna detta omarkerat." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "Hitta &nästa" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "Hitta &föregående" @@ -4772,18 +4890,22 @@ msgstr "" "Färdigställer uppdateringen...\n" "Detta kan ta ett tag." -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "Första person" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Fixa kontrollsummor" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "Kunde inte laga kontrollsummor" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4793,13 +4915,14 @@ msgstr "Flaggor" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "Float" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "Följ &gren" @@ -4827,7 +4950,7 @@ msgstr "" msgid "Force 16:9" msgstr "Tvinga 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "24-bitars färg" @@ -4835,15 +4958,15 @@ msgstr "24-bitars färg" msgid "Force 4:3" msgstr "Tvinga 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "Lyssna på port:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Tvinga texturfiltrering" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4859,7 +4982,7 @@ msgstr "" "någon AR/Gecko-kod för bredbildsformat används.

Om " "du är osäker kan du lämna detta omarkerat." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4882,21 +5005,21 @@ msgstr "Format:" msgid "Forward" msgstr "Framåt" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "Vidaresänd port (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "Hittade %1 resultat för \"%2\"" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "Hittade %n adress(er)." -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "Bildruta %1" @@ -4925,7 +5048,7 @@ msgstr "Bildrutedumpning" msgid "Frame Range" msgstr "Räckvidd för bildrutor" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "Bildrutedumpfilen \"{0}\" finns redan. Vill du skriva över?" @@ -4937,19 +5060,19 @@ msgstr "Bildrutor att spela in:" msgid "France" msgstr "Frankrike" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "Lediga block: %1" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "Lediga filer: %1" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "Fri vy-kontrolltyp" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "Fri vy-kontroll %1" @@ -4957,7 +5080,7 @@ msgstr "Fri vy-kontroll %1" msgid "Free Look Settings" msgstr "Fri vy-inställningar" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -5395,7 +5528,7 @@ msgstr "Grön vänster" msgid "Green Right" msgstr "Grön höger" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "Rutnätsvy" @@ -5408,7 +5541,7 @@ msgstr "Gitarr" msgid "Gyroscope" msgstr "Gyroskop" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI-3D" @@ -5421,13 +5554,30 @@ msgstr "Hack" msgid "Head" msgstr "Huvud" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "Hjälp" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" -msgstr "Hexsträng" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "Hex 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "Hex 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "Hex 8" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" +msgstr "Hexbytesträng" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 @@ -5438,19 +5588,19 @@ msgstr "Hexadecimal" msgid "Hide" msgstr "Göm" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "Dölj alla" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "Dölj sessioner som har startat" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "Dölj inkompatibla sessioner" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "Dölj andras GBA-fönster" @@ -5468,21 +5618,27 @@ msgstr "Högsta" msgid "Hit Strength" msgstr "Slagstyrka" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "Träffar" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "Horisontellt vyfält" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Värd" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "Värdkod:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "Värdauktoritet för indata" @@ -5490,7 +5646,7 @@ msgstr "Värdauktoritet för indata" msgid "Host Size" msgstr "Värdstorlek" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5503,11 +5659,11 @@ msgstr "" "Lämplig för casual spel med 3+ spelare, eventuellt på instabila eller höga " "latensanslutningar." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "Värdauktoritet för indata avstängt" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "Värdauktoritet för indata påslaget" @@ -5519,7 +5675,7 @@ msgstr "Starta nätspel som värd" msgid "Hostname" msgstr "Värdnamn" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "Kortkommandoinställningar" @@ -5576,11 +5732,11 @@ msgstr "" "dolphin-emu.org/docs/guides/wii-network-guide/ för instruktioner gällande " "konfiguration av Wii-nätverk." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "IP-adress:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "IPL-inställningar" @@ -5589,7 +5745,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "IR-känslighet:" @@ -5626,11 +5782,11 @@ msgstr "" "5.0-12188 och senare. Det kan komprimera både skräpdata och krypterad Wii-" "data effektivt." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Ikon" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" @@ -5640,11 +5796,11 @@ msgstr "" "latens) kan ändras när som helst.\n" "Lämplig för turbaserade spel med tidskänsliga kontroller, till exempel golf." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "Identitetsgenerering" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5685,6 +5841,10 @@ msgid "" "

Causes issues with many fifologs, but can be useful for testing." "

If unsure, leave this unchecked." msgstr "" +"Om detta aktiveras kommer alla minnesuppdateringar ske samtidigt innan den " +"första bildrutan.

Orsakar problem med många fifo-loggar, men kan " +"hjälpa vid tester.

Om du är osäker kan du lämna " +"detta omarkerat." #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:208 msgid "" @@ -5692,6 +5852,10 @@ msgid "" "

This is generally only useful when a frame-dumping option is enabled." "

If unsure, leave this checked." msgstr "" +"Om detta är avaktiverat kommer uppspelning av fifo-loggen stoppas efter den " +"sista bildrutan.

Detta är i allmänhet bara användbart när ett " +"bildrutedumpningsalternativ har aktiverats.

Om du " +"är osäker kan du lämna detta markerat." #: Source/Core/DolphinQt/DiscordJoinRequestDialog.cpp:55 #: qtbase/src/gui/kernel/qplatformtheme.cpp:728 @@ -5706,19 +5870,19 @@ msgstr "Ignorera formatändringar" msgid "Ignore for this session" msgstr "Ignorera för den här sessionen" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " "number of other games.

If unsure, leave this " "checked." msgstr "" -"Ignorera alla ändringar av EFB-format.

Förbättrar prestanda i många " +"Ignorerar alla ändringar av EFB-format.

Förbättrar prestanda i många " "spel utan några negativa effekter. Orsakar dock felaktigheter i grafiken i " "ett litet antal andra spel.

Om du är osäker kan du " "lämna detta markerat." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5750,30 +5914,30 @@ msgstr "" "

Om du är osäker kan du lämna detta omarkerat." -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "Importera BootMii-NAND-kopia..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "Importering misslyckades" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "Importera sparfil(er)" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Importera Wii-sparning…" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "Importerar NAND-kopia" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" @@ -5782,11 +5946,20 @@ msgstr "" "Importerar NAND-kopia\n" " Förfluten tid: %1s" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "Spelar?" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "Inkluderade: %1" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "Inkluderade: 0" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5844,8 +6017,8 @@ msgstr "Info" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Information" @@ -5854,10 +6027,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "Blockera skärmsläckare under emulering" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Indata" @@ -5871,16 +6044,22 @@ msgstr "Inmatningsstyrka som krävs för att aktiveras." msgid "Input strength to ignore and remap." msgstr "Inmatningsstyrka att ignorera samt skala med." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "Sätt in &nop" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "Sätt in SD-kort" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "Installera" @@ -5892,7 +6071,7 @@ msgstr "Installationspartition (%1)" msgid "Install Update" msgstr "Installera uppdatering" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "Installera WAD…" @@ -5908,11 +6087,11 @@ msgstr "Instr." msgid "Instruction" msgstr "Instruktion" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "Instruktionsbrytpunkt" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "Instruktion:" @@ -5930,7 +6109,7 @@ msgid "Interface" msgstr "Gränssnitt" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "Internt LZO-fel - komprimering misslyckades" @@ -5939,7 +6118,7 @@ msgstr "Internt LZO-fel - komprimering misslyckades" msgid "Internal LZO Error - decompression failed" msgstr "Internt LZO-fel - dekomprimering misslyckades" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" @@ -5947,21 +6126,21 @@ msgstr "" "Internt LZO-fel - avkomprimering misslyckades ({0}) ({1}, {2}) \n" "Försök att läsa in snabbsparningen igen" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "Internt LZO-fel - lzo_init() misslyckades" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "Intern upplösning" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Intern upplösning:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "Ett internt fel uppstod när AR-kod skulle genereras." @@ -5969,11 +6148,11 @@ msgstr "Ett internt fel uppstod när AR-kod skulle genereras." msgid "Interpreter (slowest)" msgstr "Interpreterare (långsammast)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "Interpreterarkärna" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "Ogiltigt uttryck." @@ -5981,7 +6160,7 @@ msgstr "Ogiltigt uttryck." msgid "Invalid Mixed Code" msgstr "Ogiltig blandad kod" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "Ogiltigt paket %1: %2" @@ -5990,15 +6169,15 @@ msgstr "Ogiltigt paket %1: %2" msgid "Invalid Player ID" msgstr "Ogiltigt spelar-ID" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "Ogiltig RSO-moduladress: %1" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "Ogiltig callstack" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "Ogiltiga kontrollsummor." @@ -6006,11 +6185,11 @@ msgstr "Ogiltiga kontrollsummor." msgid "Invalid game." msgstr "Ogiltigt spel." -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "Ogiltig värd" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "Ogiltig indata för fältet \"%1\"" @@ -6023,31 +6202,31 @@ msgstr "Ogiltig indata" msgid "Invalid literal." msgstr "Ogiltig literal." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "Ogiltiga sökparametrar." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "Ogiltigt lösenord angivet." -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Ogiltig inspelningsfil" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Ogiltiga sökparametrar (inget objekt markerat)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Ogiltig söksträng (kunde inte konvertera till siffror)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "Ogiltig söksträng (endast jämna stränglängder stöds)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "Ogiltigt titel-ID." @@ -6056,8 +6235,8 @@ msgid "Invalid watch address: %1" msgstr "Ogiltig bevakningsadress: %1" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Italienska" @@ -6065,11 +6244,11 @@ msgstr "Italienska" msgid "Italy" msgstr "Italien" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "JIT-blocklänkning av" @@ -6077,47 +6256,47 @@ msgstr "JIT-blocklänkning av" msgid "JIT Blocks" msgstr "JIT-block" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "JIT Branch av" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "JIT FloatingPoint av" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "JIT Integer av" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "JIT LoadStore Floating av" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "JIT LoadStore av" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "JIT LoadStore Paired av" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "JIT LoadStore lXz av" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "JIT LoadStore lbzx av" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "JIT LoadStore lwz av" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "JIT av (JIT-kärna)" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "JIT Paired av" @@ -6129,11 +6308,11 @@ msgstr "JIT-omkompilerare för ARM64 (rekommenderas)" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "JIT-omkompilerare för x86-64 (rekommenderas)" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "JIT Register Cache av" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "JIT SystemRegisters av" @@ -6147,12 +6326,12 @@ msgstr "" "aldrig hända. Rapportera gärna detta till utvecklarna. Dolphin kommer nu " "avslutas." -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Japan" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japanska" @@ -6172,12 +6351,12 @@ msgstr "Visa alltid fönster överst" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "Behåll adresser där värdet i minnet" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Tangentbord" @@ -6190,20 +6369,20 @@ msgstr "Tangentbord" msgid "Keys" msgstr "Tangenter" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "KiB" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Sparka ut spelare" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Korea" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Koreanska" @@ -6231,7 +6410,7 @@ msgstr "LR Save" msgid "Label" msgstr "Etikett" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "Föregående värde" @@ -6317,15 +6496,15 @@ msgstr "" msgid "License" msgstr "Licens" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "Begränsa segmentuppladdningshastighet:" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "Listkolumner" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "Listvy" @@ -6334,17 +6513,17 @@ msgid "Listening" msgstr "Lyssnar" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Läs in" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "Ladda &felaktig map-fil..." -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "Ladda &annan map-fil..." @@ -6352,7 +6531,7 @@ msgstr "Ladda &annan map-fil..." msgid "Load Custom Textures" msgstr "Läs in anpassade texturer" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "Ladda GameCube-huvudmeny" @@ -6361,7 +6540,7 @@ msgstr "Ladda GameCube-huvudmeny" msgid "Load Last State" msgstr "Läs in senaste snabbsparning" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "Laddningssökväg:" @@ -6454,23 +6633,23 @@ msgstr "Läs in snabbsparningsplats 8" msgid "Load State Slot 9" msgstr "Läs in snabbsparningsplats 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "Läs in snabbsparning från fil" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "Läs in snabbsparning från vald plats" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "Läs in snabbsparning från plats" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "Ladda Wii-spardata" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "Starta Wii-systemmeny %1" @@ -6478,12 +6657,12 @@ msgstr "Starta Wii-systemmeny %1" msgid "Load from Selected Slot" msgstr "Ladda från vald plats" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "Läs in från plats %1 - %2" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "Ladda map-fil" @@ -6491,7 +6670,7 @@ msgstr "Ladda map-fil" msgid "Load..." msgstr "Ladda..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "Laddade symboler från '%1'" @@ -6505,7 +6684,7 @@ msgstr "" "User/Load/DynamicInputTextures/<spel-id>/.

Om " "du är osäker kan du lämna detta omarkerat." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "Lokalt" @@ -6514,7 +6693,7 @@ msgid "Lock Mouse Cursor" msgstr "Lås muspekare" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Logg" @@ -6522,7 +6701,7 @@ msgstr "Logg" msgid "Log Configuration" msgstr "Loggkonfiguration" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "Logga JIT-instruktionstäckning" @@ -6551,9 +6730,9 @@ msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:123 msgid "Loop" -msgstr "" +msgstr "Slinga" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "Tappade anslutningen till nätspelsservern..." @@ -6582,7 +6761,7 @@ msgstr "MHE" msgid "MORIBUND" msgstr "MORIBUND" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "MadCatz Gameshark-filer" @@ -6592,7 +6771,7 @@ msgstr "Huvudspak" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "Skapare" @@ -6601,7 +6780,7 @@ msgstr "Skapare" msgid "Maker:" msgstr "Skapare:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6614,7 +6793,7 @@ msgstr "" "

Om du är osäker kan du lämna detta omarkerat." -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "Hantera NAND" @@ -6622,7 +6801,7 @@ msgstr "Hantera NAND" msgid "Manual Texture Sampling" msgstr "Manuell textursampling" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "Mappning" @@ -6630,15 +6809,15 @@ msgstr "Mappning" msgid "Mask ROM" msgstr "Mask-ROM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "Sökträff hittades" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "Maxbuffert:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "Buffertstorleken ändrades till %1" @@ -6647,7 +6826,7 @@ msgstr "Buffertstorleken ändrades till %1" msgid "Maximum tilt angle." msgstr "Maximal lutningsvinkel." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "Kan leda till prestandaproblem i Wii-menyn och vissa spel." @@ -6656,11 +6835,11 @@ msgstr "Kan leda till prestandaproblem i Wii-menyn och vissa spel." msgid "Medium" msgstr "Medium" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "Minne" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "Minnesbrytpunkt" @@ -6668,7 +6847,7 @@ msgstr "Minnesbrytpunkt" msgid "Memory Card" msgstr "Minneskort" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "Minneskorthanterare" @@ -6692,7 +6871,7 @@ msgstr "" msgid "Memory Override" msgstr "Minnesåsidosättning" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "Minnesbrytpunktsalternativ" @@ -6708,7 +6887,7 @@ msgstr "MemoryCard: Read anropades med ogiltig källadress ({0:#x})" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "MemoryCard: Write anropades med ogiltig destinationsadress ({0:#x})" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6720,13 +6899,13 @@ msgstr "" "rekommenderas att du har säkerhetskopior av båda NAND-minnena. Är du säker " "på att du vill fortsätta?" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "MiB" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Mikrofon" @@ -6734,20 +6913,20 @@ msgstr "Mikrofon" msgid "Misc" msgstr "Övrigt" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Övriga inställningar" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" "Antalet fria block i headern matchar inte det faktiska antalet fria block." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "De interna datastrukturerna matchar inte." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6781,12 +6960,12 @@ msgstr "" "

Om du är osäker kan du lämna detta omarkerat." -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "Moduler hittade: %1" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "Mono" @@ -6798,11 +6977,11 @@ msgstr "Monoskopiska skuggor" msgid "Monospaced Font" msgstr "Teckensnitt med fast teckenbredd" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "Rörelseinmatning" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "Rörelsesimulering" @@ -6842,10 +7021,10 @@ msgstr "Inspelning" msgid "N&o to All" msgstr "N&ej till alla" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "NAND-minneskontroll" @@ -6853,26 +7032,26 @@ msgstr "NAND-minneskontroll" msgid "NKit Warning" msgstr "NKit-varning" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "NTSC-K" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "Namn" @@ -6884,37 +7063,37 @@ msgstr "Namn för ny etikett:" msgid "Name of the tag to remove:" msgstr "Namn på etiketten att ta bort:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "Namnet på din session som visas i serverlistan" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "Namn:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Ursprunglig (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "Vanlig GCI-fil" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "Nätspel" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "Nätspelssessionlista" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "Nätspelsinställningar" @@ -6922,16 +7101,16 @@ msgstr "Nätspelsinställningar" msgid "Netherlands" msgstr "Nederländerna" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "Nätspel har desynkroniserats i NetPlay_GetButtonPress()" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "Nätspelet har desynkroniserats. Det går inte att göra något åt detta." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "Nätverk" @@ -6952,11 +7131,11 @@ msgstr "Uppdatera aldrig automatiskt" msgid "New" msgstr "Ny" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "Ny brytpunkt" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "Ny sökning" @@ -6964,7 +7143,7 @@ msgstr "Ny sökning" msgid "New Tag..." msgstr "Ny etikett..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "En ny identitet har genererats." @@ -6981,7 +7160,7 @@ msgstr "Ny etikett" msgid "Next Game Profile" msgstr "Nästa spelprofil" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "Nästa matchning" @@ -6990,17 +7169,17 @@ msgstr "Nästa matchning" msgid "Next Profile" msgstr "Nästa profil" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "Smeknamnet är för långt." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Smeknamn:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "Nej" @@ -7008,6 +7187,10 @@ msgstr "Nej" msgid "No Adapter Detected" msgstr "Ingen adapter upptäcktes" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "Ingen ljuduppspelning" @@ -7018,24 +7201,20 @@ msgstr "Ingen ljuduppspelning" msgid "No Compression" msgstr "Ingen komprimering" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "Ingen sökträff" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "Inget Värde Angivet" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Ingen beskrivning tillgänglig" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "Inga fel." @@ -7047,15 +7226,15 @@ msgstr "Ingen extern kontroll har valts." msgid "No file loaded / recorded." msgstr "Ingen fil inläst/inspelad." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "Inget spel körs." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "Inget spel körs." -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "Inga problem upptäcktes." @@ -7063,11 +7242,15 @@ msgstr "Inga problem upptäcktes." msgid "No paths found in the M3U file \"{0}\"" msgstr "Inga sökvägar hittades i M3U-filen \"{0}\"" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "Inga problem hittades." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -7081,7 +7264,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "Inga profiler hittades för spelinställningen \"{0}\"" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "Ingen inspelning laddad." @@ -7089,19 +7272,15 @@ msgstr "Ingen inspelning laddad." msgid "No save data found." msgstr "Ingen spardata hittades." -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" "Ingen undo.dtm hittades, avbryter ångring av snabbsparningsinläsning för att " "förhindra att inspelningen desynkroniseras" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "Inget värde angivet." - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -7111,7 +7290,7 @@ msgstr "Ingen" msgid "North America" msgstr "Nordamerika" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "Hittades inte" @@ -7119,11 +7298,11 @@ msgstr "Hittades inte" msgid "Not Set" msgstr "Inte angiven" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "Vissa spelare har inte detta spel. Vill du verkligen starta?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -7132,7 +7311,7 @@ msgid "" msgstr "" "För få lediga block på destinationsminneskortet. Minst %n lediga block krävs." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -7196,13 +7375,13 @@ msgstr "Nunchuk-orientering" msgid "Nunchuk Stick" msgstr "Nunchuk-spak" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "OK" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "Objekt %1" @@ -7215,11 +7394,11 @@ msgid "Oceania" msgstr "Oceanien" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Av" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "Förskjutning" @@ -7231,11 +7410,11 @@ msgstr "På" msgid "On Movement" msgstr "Vid rörelse" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "&Dokumentation online " -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" @@ -7243,7 +7422,7 @@ msgstr "" "Lägg endast till symboler med prefix:\n" "(Lämna tomt för att exportera alla symboler)" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -7260,7 +7439,7 @@ msgstr "Öppna" msgid "Open &Containing Folder" msgstr "Öppna &innehållande mapp" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "Öppna mapp..." @@ -7308,7 +7487,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "Operatörer" @@ -7326,7 +7505,7 @@ msgstr "Alternativ" msgid "Orange" msgstr "Orange" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "Omloppsbana" @@ -7334,7 +7513,7 @@ msgstr "Omloppsbana" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Övrigt" @@ -7347,11 +7526,11 @@ msgstr "Annan partition (%1)" msgid "Other State Hotkeys" msgstr "Andra snabbsparningskortkommandon" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "Annan snabbsparningshantering" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "Annat spel..." @@ -7359,12 +7538,12 @@ msgstr "Annat spel..." msgid "Overlay Information" msgstr "Pålagd informationstext" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "Spe&la upp inspelning..." -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -7389,7 +7568,7 @@ msgstr "PNG-bildfil (*.png);; Alla filer (*)" msgid "PPC Size" msgstr "PPC-storlek" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "PPC mot värd" @@ -7406,7 +7585,7 @@ msgstr "Kontroller" msgid "Parameters" msgstr "Parametrar" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "Tolka som hexadecimalt" @@ -7415,23 +7594,23 @@ msgstr "Tolka som hexadecimalt" msgid "Parsing Error" msgstr "Tolkningsfel" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "Passiv" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "Bluetooth-adaptergenomsläppning" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "Lösenord" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "Lösenord för att ansluta till ditt spel (lämna tomt för inget)" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "Lösenord?" @@ -7452,7 +7631,7 @@ msgid "Path:" msgstr "Sökväg:" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Sökvägar" @@ -7460,7 +7639,7 @@ msgstr "Sökvägar" msgid "Pause" msgstr "Pausa" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "Pausa vid slutet av inspelningar" @@ -7483,11 +7662,11 @@ msgstr "Topphastigheten för rörelser mot neutral position." msgid "Peak velocity of outward swing movements." msgstr "Topphastigheten för svingande utåt." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Ljus per bildpunkt" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "Uppdatera systemmjukvaran via internet" @@ -7497,23 +7676,23 @@ msgstr "Uppdatera systemmjukvaran" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "Fysisk" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "Fysiskt adressutrymme" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "PiB" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "Välj ett teckensnitt för felsökning" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "Ping" @@ -7526,7 +7705,7 @@ msgid "Pitch Up" msgstr "Luta uppåt" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Plattform" @@ -7546,16 +7725,16 @@ msgstr "Spela upp inspelning" msgid "Playback Options" msgstr "Uppspelningsalternativ" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "Spelare" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Spelare" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7568,31 +7747,31 @@ msgstr "" msgid "Point" msgstr "Pekning" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "Uttag %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "ROM i uttag %1:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "Port:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" "Möjlig desynkronisation upptäcktes: %1 kan ha desynkroniserat under bildruta " "%2" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "Efterbehandlingseffekt" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Efterbehandlingseffekt:" @@ -7604,15 +7783,15 @@ msgstr "Efterbehandlingsshaderkonfiguration" msgid "Prefetch Custom Textures" msgstr "Läs in anpassade texturer i förhand" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "Tidigt inspelningsslut i PlayController. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "Tidigt inspelningsslut i PlayWiimote. {0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "Tidigt inspelningsslut i PlayWiimote. {0} > {1}" @@ -7656,7 +7835,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "Föregående spelprofil" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "Föregående matchning" @@ -7667,15 +7846,15 @@ msgstr "Föregående profil" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "Primitiv %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "Privat" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "Privat och offentlig" @@ -7683,7 +7862,7 @@ msgstr "Privat och offentlig" msgid "Problem" msgstr "Problem" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." @@ -7691,7 +7870,7 @@ msgstr "" "Mycket allvarliga problem har påträffats. Spelet kommer mycket troligt inte " "fungera alls." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." @@ -7699,7 +7878,7 @@ msgstr "" "Smärre problem har påträffats. De kommer förmodligen inte förhindra spelet " "från att köras." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." @@ -7707,7 +7886,7 @@ msgstr "" "Någorlunda allvarliga problem har påträffats. Hela spelet eller vissa delar " "av spelet kommer kanske inte fungera riktigt." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Profil" @@ -7721,15 +7900,15 @@ msgstr "Program Counter" msgid "Progress" msgstr "Förlopp" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "Offentlig" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "Töm cache för spellista" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "Lägg IPL-ROM-filer i User/GC/." @@ -7741,11 +7920,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "LTR" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "Det gick inte att sätta på Quality of Service (QoS)." -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "Quality of Service (QoS) har satts på." @@ -7756,12 +7935,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Fråga" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Avsluta" @@ -7781,11 +7960,11 @@ msgstr "R-analog" msgid "READY" msgstr "KLAR" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "RSO-moduler" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "RSO auto-upptäckt" @@ -7798,44 +7977,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "RVZ-GC/Wii-skivavbildningar (*.rvz)" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Räckvidd" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "Intervall slut:" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "Intervall start:" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "Byt &ut instruktion" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "Läs" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "Läs och skriv" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "Endast läs" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "Läs eller skriv" @@ -7843,11 +8022,11 @@ msgstr "Läs eller skriv" msgid "Read-Only Mode" msgstr "Skrivskyddat läge" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Riktig balansbräda" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "Riktig Wii-fjärrkontroll" @@ -7860,11 +8039,11 @@ msgstr "Återställ" msgid "Record" msgstr "Spela in" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "Spela in inmatningar" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "Inspelning" @@ -7889,7 +8068,7 @@ msgstr "Röd vänster" msgid "Red Right" msgstr "Röd höger" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7911,16 +8090,16 @@ msgstr "Redump.org-status:" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Uppdatera" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "Uppdatera nuvarande värden" @@ -7928,26 +8107,26 @@ msgstr "Uppdatera nuvarande värden" msgid "Refresh Game List" msgstr "Uppdatera spellista" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "Uppdatering misslyckades. Kör spelet ett kort tag och prova igen." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "Uppdaterade nuvarande värden." #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "Uppdaterar..." #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Region" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "Region:" @@ -7967,16 +8146,16 @@ msgstr "Relativ Inmatning Håll" msgid "Remind Me Later" msgstr "Påminn mig senare" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Ta bort" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "Borttagning misslyckades" @@ -8002,8 +8181,8 @@ msgstr "" "inte sedan packar in ISO-filen i ett komprimerat filformat såsom ZIP). Vill " "du fortsätta ändå?" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "Byt namn på symbol" @@ -8038,29 +8217,37 @@ msgstr "Förfrågan att vara med i din grupp" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Återställ" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "Nollställ ignorera panikhanterare" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "Återställ resultat" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "Återställ traverseringsserver" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "Återställ traverseringsserver till %1:%2" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "Återställ traverseringsinställningar" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "Återställ värden" @@ -8068,15 +8255,15 @@ msgstr "Återställ värden" msgid "Reset View" msgstr "Återställ vy" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "Nollställ alla sparade Wii-fjärrkontrollparningar" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "Resurspaketshanterare" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "Resurspaketssökväg:" @@ -8088,11 +8275,11 @@ msgstr "Omstart krävs" msgid "Restore Defaults" msgstr "Återställ förval" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "Återställ instruktion" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Försök igen" @@ -8101,7 +8288,7 @@ msgstr "Försök igen" msgid "Return Speed" msgstr "Returhastighet" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "Revision" @@ -8159,11 +8346,11 @@ msgstr "Rulla vänster" msgid "Roll Right" msgstr "Rulla höger" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "Rum-ID" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "Rotation" @@ -8172,18 +8359,14 @@ msgstr "Rotation" msgid "Rotation applied at extremities of swing." msgstr "Mängden rotation vid svängningens ändpunkter." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" -"Avrundar 2D-vertexer till hela pixlar.

Fixar grafiska problem som " -"uppstår i vissa spel när högre interna upplösningar används. Den här " -"inställningen har ingen effekt när den ursprungliga interna upplösningen " -"används.

Om du är osäker kan du lämna detta " -"omarkerat." #: Source/Core/Core/HW/GCPadEmu.cpp:79 #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:254 @@ -8192,11 +8375,11 @@ msgstr "" msgid "Rumble" msgstr "Vibration" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "Kör &hit" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "Kör GBA-kärnor i dedikerade trådar" @@ -8204,15 +8387,15 @@ msgstr "Kör GBA-kärnor i dedikerade trådar" msgid "Russia" msgstr "Ryssland" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "SD-kort" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "SD-kortsavbildning (*.raw);;Alla filer (*)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "SD-kortssökväg:" @@ -8228,7 +8411,7 @@ msgstr "SELECT" msgid "SHA-1:" msgstr "SHA-1:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "SP1:" @@ -8242,11 +8425,11 @@ msgstr "SSL-kontext" msgid "START" msgstr "START" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "&Spara kod" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "Spa&ra snabbsparning" @@ -8256,7 +8439,7 @@ msgid "Safe" msgstr "Säker" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -8269,7 +8452,7 @@ msgstr "Spara alla" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "Sparfilsexportering" @@ -8290,11 +8473,11 @@ msgstr "Sparfil" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "Sparfiler (*.sav);;Alla filer (*)" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "Sparfilsimportering" @@ -8304,9 +8487,9 @@ msgstr "Spara äldsta snabbsparning" #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:325 msgid "Save Preset" -msgstr "" +msgstr "Spara förinställningar" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "Spara inspelning som" @@ -8356,23 +8539,23 @@ msgstr "Spara snabbsparningsplats 8" msgid "Save State Slot 9" msgstr "Spara snabbsparningsplats 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "Spara snabbsparning till fil" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "Spara snabbsparning på äldsta platsen" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "Snabbspara på vald plats" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "Spara snabbsparning på plats" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "Spara symbol-map so&m..." @@ -8380,23 +8563,23 @@ msgstr "Spara symbol-map so&m..." msgid "Save Texture Cache to State" msgstr "Spara texturcache i snabbsparningar" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "Spara och läs in snabbsparning" #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:63 msgid "Save as Preset..." -msgstr "" +msgstr "Spara som förinställningar..." #: Source/Core/DolphinQt/Config/InfoWidget.cpp:183 msgid "Save as..." msgstr "Spara som..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "Spara kombinerad utdatafil som" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" @@ -8406,15 +8589,15 @@ msgstr "" "en säkerhetskopia på de nuvarande sparfilerna före du skriver över.\n" "Vill du skriva över nu?" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "Spara i samma katalog som ROM-filen" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "Spara map-fil" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "Spara signaturfil" @@ -8422,7 +8605,7 @@ msgstr "Spara signaturfil" msgid "Save to Selected Slot" msgstr "Spara på vald plats" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "Spara på plats %1 - %2" @@ -8430,25 +8613,25 @@ msgstr "Spara på plats %1 - %2" msgid "Save..." msgstr "Spara..." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" "Sparade Wii-fjärrkontrollparningar kan bara nollställas när ett Wii-spel " "körs." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "Sparfiler:" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "Snabbsparningsinspelningen {0} är korrupt. Inspelningen stoppas..." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Skalad EFB-kopia" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "Skanning lyckades." @@ -8456,30 +8639,30 @@ msgstr "Skanning lyckades." msgid "ScrShot" msgstr "Skärmdump" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Sök" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "Sök adress" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "Sök aktuellt objekt" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Sök undermappar" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "Sök och filtrera" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." @@ -8487,7 +8670,7 @@ msgstr "" "Sökning är inte möjligt i virtuellt adressutrymme just nu. Kör spelet ett " "kort tag och prova igen." -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "Sök efter en instruktion" @@ -8495,7 +8678,7 @@ msgstr "Sök efter en instruktion" msgid "Search games..." msgstr "Sök efter spel..." -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "Sök efter en instruktion" @@ -8519,28 +8702,28 @@ msgstr "Avsnitt som innehåller de flesta CPU- och hårdvaruinställningarna." msgid "Security options" msgstr "Säkerhetsalternativ" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Välj" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "Välj dump-sökväg:" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "Välj exporteringskatalog" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "Välj GBA-BIOS" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "Välj GBA-ROM" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "Välj GBA-sparfilssökväg" @@ -8548,11 +8731,11 @@ msgstr "Välj GBA-sparfilssökväg" msgid "Select Last State" msgstr "Välj senaste snabbsparning" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "Välj laddningssökväg" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "Välj resurspaketssökväg" @@ -8560,7 +8743,7 @@ msgstr "Välj resurspaketssökväg" msgid "Select Riivolution XML file" msgstr "Välj Riivolution-XML-fil" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "Välj plats %1 - %2" @@ -8568,7 +8751,7 @@ msgstr "Välj plats %1 - %2" msgid "Select State" msgstr "Välj snabbsparning" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Välj snabbsparningsplats" @@ -8612,41 +8795,45 @@ msgstr "Välj snabbsparningsplats 8" msgid "Select State Slot 9" msgstr "Välj snabbsparningsplats 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" -msgstr "" +msgstr "Välj WFS-sökväg" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "Välj Wii-NAND-rot" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "Välj en mapp" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "Välj en fil" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "Välj ett spel" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "Välj en SD-kortsavbildning" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "Välj en fil" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "Välj ett spel" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "Välj en titel att installera till NAND-minnet" @@ -8654,11 +8841,11 @@ msgstr "Välj en titel att installera till NAND-minnet" msgid "Select e-Reader Cards" msgstr "Välj e-Readerkort" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "Välj RSO-modulens adress:" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "Välj inspelning att spela upp" @@ -8666,12 +8853,12 @@ msgstr "Välj inspelning att spela upp" msgid "Select the Virtual SD Card Root" msgstr "Välj rot för virtuellt SD-kort" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "Välj nyckelfil (OTP/SEEPROM-kopia)" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Välj sparningsfilen" @@ -8687,15 +8874,15 @@ msgstr "Välj var du vill spara de konverterade skivavbildningarna" msgid "Selected Font" msgstr "Valt teckensnitt" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "Den valda kontrollprofilen finns inte" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "Det valda spelet finns inte i spellistan!" @@ -8723,7 +8910,7 @@ msgstr "" "Väljer en hårdvaruadapter att använda.

Om du är " "osäker kan du välja den första." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8791,11 +8978,11 @@ msgstr "" "

Om du är osäker kan du välja OpenGL." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Skicka" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Position för Sensor Bar:" @@ -8811,56 +8998,64 @@ msgstr "" "dat-filen\n" "Exempel: {2}" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "Serverns IP-adress" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "Serverns port" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "Servern avvisade traverseringsförsök" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "Sätt &värde" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "Sätt PC" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "Sätt värde från fil" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "Ange som &standard-ISO" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "Välj minneskortsfil för plats A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "Välj minneskortsfil för plats B" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "Ställ in slut&adress för symbol" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "Ställ in &storlek för symbol" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "Ställ in slutadress för symbol" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "Ange storlek för symbol (%1):" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8869,7 +9064,7 @@ msgstr "" "Sätter Wii-bildläget till 60Hz (480i) istället för 50Hz (576i) för PAL-spel. " "Vissa spel stöder inte detta." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Ställer in Wii-systemspråk." @@ -8881,7 +9076,7 @@ msgstr "" "Anger latens i millisekunder. Högre värden kan minska ljudknaster. Endast " "för vissa backends." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8921,11 +9116,11 @@ msgstr "" "Minskar laddningstider, men kan orsaka problem i vissa spel. Kan ha negativ " "påverkan på prestanda. Förval är Falskt" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "Visa &logg" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Visa &verktygsfält" @@ -8933,15 +9128,15 @@ msgstr "Visa &verktygsfält" msgid "Show Active Title in Window Title" msgstr "Visa aktiv titel i fönstertitel" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "Visa alla" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Visa Australien" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "Visa nuvarande spel på Discord" @@ -8949,7 +9144,7 @@ msgstr "Visa nuvarande spel på Discord" msgid "Show Debugging UI" msgstr "Visa felsökningsgränssnitt" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "Visa ELF/DOL" @@ -8957,43 +9152,43 @@ msgstr "Visa ELF/DOL" msgid "Show FPS" msgstr "Visa bildfrekvens" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Visa bildruteräknare" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Visa Frankrike" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "Visa GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Visa Tyskland" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "Visa överlägg för golfläge" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Visa indata" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "Visa Italien" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "Visa JPN" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Visa Korea" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Visa laggräknare" @@ -9001,7 +9196,7 @@ msgstr "Visa laggräknare" msgid "Show Language:" msgstr "Visa språk:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Visa logg&konfiguration" @@ -9013,7 +9208,7 @@ msgstr "Visa nätspelsmeddelanden" msgid "Show NetPlay Ping" msgstr "Visa nätspelsping" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Visa Nederländerna" @@ -9021,7 +9216,7 @@ msgstr "Visa Nederländerna" msgid "Show On-Screen Display Messages" msgstr "Visa meddelanden på skärmen" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "Visa PAL" @@ -9030,23 +9225,23 @@ msgstr "Visa PAL" msgid "Show PC" msgstr "Visa PC" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Visa plattformar" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Visa regioner" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" -msgstr "" +msgstr "Visa ominspelningsräknare" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Visa Ryssland" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "Visa Spanien" @@ -9055,46 +9250,50 @@ msgstr "Visa Spanien" msgid "Show Statistics" msgstr "Visa statistik" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "Visa systemklocka" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Visa Taiwan" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Visa USA" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Visa okänd" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "Visa WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Visa Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Visa världen" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "Visa i &minne" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "Visa i kod" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "Visa i serverlistan" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -9138,7 +9337,7 @@ msgstr "" "Visar diverse renderingsstatistik.

Om du är osäker " "kan du lämna detta omarkerat." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "Sida-vid-sida" @@ -9154,16 +9353,31 @@ msgstr "Tryck för liggande läge" msgid "Sideways Wii Remote" msgstr "Liggande Wii-fjärrkontroll" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "Signaturdatabas" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "Signed int" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Förenklad kinesiska" @@ -9171,7 +9385,7 @@ msgstr "Förenklad kinesiska" msgid "Simulate DK Bongos" msgstr "Simulera DK Bongos" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "Sex axlar" @@ -9200,7 +9414,7 @@ msgstr "Hoppa över att rita" msgid "Skip EFB Access from CPU" msgstr "Hoppa över tillgång till EFB från processorn" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "Hoppa över huvudmeny" @@ -9208,7 +9422,7 @@ msgstr "Hoppa över huvudmeny" msgid "Skip Presenting Duplicate Frames" msgstr "Hoppa över dubblettbildrutor" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -9228,19 +9442,19 @@ msgstr "" msgid "Slider Bar" msgstr "Slider Bar" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Plats A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "Plats A:" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Plats B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "Plats B:" @@ -9258,7 +9472,7 @@ msgstr "Sockettabell" msgid "Software Renderer" msgstr "Programvarurenderare" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "Viss data kunde inte läsas." @@ -9279,11 +9493,11 @@ msgstr "" "Kontrollera de markerade värdena." #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "Sortera alfabetiskt" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "Ljud:" @@ -9296,8 +9510,8 @@ msgid "Spain" msgstr "Spanien" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Spanska" @@ -9305,7 +9519,7 @@ msgstr "Spanska" msgid "Speaker Pan" msgstr "Högtalarpanorering" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Högtalarvolym:" @@ -9329,6 +9543,15 @@ msgid "" "less time.

If unsure, leave this at 6." msgstr "" +"Anger vilken zlib-komprimeringsnivå som ska användas när PNG-bilder sparas " +"(både för skärmbilder och bildrutedumpar).

Eftersom PNG använder " +"förlustfri komprimering kommer detta inte att påverka bildkvaliteten; det är " +"istället en avvägning mellan filstorlek och komprimeringstid.

Värdet " +"0 använder ingen komprimering. 1 använder väldigt lite komprimering, medan " +"det maximala värdet 9 använder mycket komprimering. För PNG-filer är nivåer " +"mellan 3 och 6 i regel ungefär lika bra som nivå 9, men slutförs betydligt " +"snabbare.

Om du är osäker kan du använda nivå 6." #: Source/Core/Core/FreeLookManager.cpp:89 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:24 @@ -9340,7 +9563,7 @@ msgstr "Hastighet" msgid "Speed up Disc Transfer Rate" msgstr "Snabba upp disköverförningshastigheten" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "Stabil (en gång om året)" @@ -9352,16 +9575,16 @@ msgstr "Stackslut" msgid "Stack start" msgstr "Stackstart" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Standardkontroll" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Start" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "Starta &nätspel..." @@ -9369,11 +9592,13 @@ msgstr "Starta &nätspel..." msgid "Start New Cheat Search" msgstr "Starta ny fusksökning" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "Starta &inspelning" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Starta inspelning" @@ -9389,7 +9614,7 @@ msgstr "Starta med Riivolution-moddar" msgid "Start with Riivolution Patches..." msgstr "Starta med Riivolution-moddar..." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "Startade spelet" @@ -9400,7 +9625,7 @@ msgstr "Startade spelet" msgid "State" msgstr "Tillstånd" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Ratt" @@ -9428,19 +9653,19 @@ msgstr "Stega ut" msgid "Step Over" msgstr "Stega över" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "Urstegningen lyckades!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "Urstegningen gjorde timeout!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "Överstegning pågår..." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "Stegning lyckades!" @@ -9449,20 +9674,20 @@ msgstr "Stegning lyckades!" msgid "Stepping" msgstr "Stega" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "Stereo" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "Läge för stereoskopisk 3D" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Läge för stereoskopisk 3D:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Stereoskopi" @@ -9483,11 +9708,15 @@ msgstr "Spak" msgid "Stop" msgstr "Stoppa" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "Avbryt uppspelning/inspelning" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "Stoppade spelet" @@ -9501,7 +9730,7 @@ msgstr "Lagra EFB-kopior endast i texturer" msgid "Store XFB Copies to Texture Only" msgstr "Lagra XFB-kopior endast i texturer" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -9515,7 +9744,7 @@ msgstr "" "texturer)

Om du är osäker kan du lämna detta " "markerat." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -9533,7 +9762,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Sträck ut till fönster" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "Strikt inställningssynkronisering" @@ -9556,16 +9785,16 @@ msgstr "Penna" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "Klar" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "Lades till i nätspelindex" @@ -9575,11 +9804,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "%n skivavbildning(ar) har konverterats." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "Borttagningen av '%1' lyckades." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "Exporterade %n av %1 sparfil(er)." @@ -9588,7 +9817,7 @@ msgstr "Exporterade %n av %1 sparfil(er)." msgid "Successfully exported save files" msgstr "Exporteringen av sparfiler lyckades" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "Certifikaten har extraherats från NAND-minnet" @@ -9600,12 +9829,12 @@ msgstr "Extraheringen av filen lyckades." msgid "Successfully extracted system data." msgstr "Extraheringen av systemdata lyckades." -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "Importeringen av sparfilen lyckades." #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "Titeln har installerats i NAND-minnet." @@ -9617,16 +9846,16 @@ msgstr "Titeln har tagits bort från NAND-minnet." msgid "Support" msgstr "Support" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "Filformat som stöds" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "Stöder SD och SDHC. Standardstorleken är 128 MB." #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "Surround" @@ -9634,11 +9863,11 @@ msgstr "Surround" msgid "Suspended" msgstr "Vilande" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "Byt plats på ögon" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9653,50 +9882,62 @@ msgstr "" msgid "Swing" msgstr "Svängning " -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "Byt till A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "Byt till B" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "Symbol" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "Slutadress för symbol (%1):" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "Symbolnamn" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "Symboler" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "Synka" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "Synka AR/Gecko-koder" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "Synka alla Wii-sparningar" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "Synka sparningar" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "Synka riktiga Wii-fjärrkontroller och para dem" @@ -9713,37 +9954,37 @@ msgstr "" "slumpartade frysningar när läget \"Dubbla kärnor\" används. (PÅ = " "kompatibel, AV = snabb)" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "Synkroniserar AR-koder..." -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "Synkroniserar Gecko-koder..." -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "Synkroniserar spardata..." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Systemspråk:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "TAS-inmatning" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "TAS-verktyg" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "Etiketter" @@ -9761,11 +10002,11 @@ msgstr "Svans" msgid "Taiwan" msgstr "Taiwan" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Ta en skärmdump" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Test" @@ -9774,7 +10015,7 @@ msgstr "Test" msgid "Texture Cache" msgstr "Texturcache" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "Texturcachenoggrannhet" @@ -9798,7 +10039,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "H3-hashtabellen för {0}-partitionen är inte korrekt." -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "IPL-filen är inte en känd korrekt version. (CRC32: {0:x})" @@ -9812,7 +10053,7 @@ msgstr "IPL-filen är inte en känd korrekt version. (CRC32: {0:x})" msgid "The Masterpiece partitions are missing." msgstr "Masterpiecepartitionerna saknas." -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." @@ -9821,7 +10062,7 @@ msgstr "" "säkerhetskopia av ditt nuvarande NAND-minne och sedan börjar om med ett " "nyskapat NAND-minne." -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "NAND-minnet har reparerats." @@ -9864,7 +10105,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "Avkrypteringsnycklarna måste bifogas till NAND-säkerhetskopian." -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9880,7 +10121,7 @@ msgstr "Skivan kunde inte läsas (vid {0:#} - {1:#x})." msgid "The disc that was about to be inserted couldn't be found." msgstr "Skivan som skulle sättas in hittades inte." -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9906,19 +10147,19 @@ msgstr "Den emulerade Wii-konsolen har redan den nyaste systemmjukvaran." msgid "The entered MAC address is invalid." msgstr "Den angivna MAC-adressen är ogiltig." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "Det angivna PID:t är ogiltigt." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "Det angivna VID:t är ogiltigt." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "Uttrycket innehåller ett syntaxfel." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9979,7 +10220,7 @@ msgid "The game disc does not contain any usable update information." msgstr "" "Spelskivan innehåller inte någon uppdateringsinformation som går att använda." -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "Spelet körs för tillfället." @@ -9993,7 +10234,7 @@ msgstr "" "systemmenyn kommer du inte kunna uppdatera den emulerade konsolen med den " "här skivan." -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -10014,7 +10255,7 @@ msgstr "Kontrollsummorna stämmer inte!" msgid "The hashes match!" msgstr "Kontrollsummorna stämmer!" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -10033,18 +10274,21 @@ msgid "" "sync properly, please change the selected device to Memory Card or GCI " "Folder." msgstr "" +"Filmfilen indikerar att ett minneskort bör vara inmatat i {0:n}, men det " +"finns inget minneskort där just nu (istället är {1} inmatat). För att " +"filmen ska synka korrekt, ändra vald enhet till Minneskort eller GCI-mapp." #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:141 msgid "The patches in %1 are not for the selected game or game revision." msgstr "" "Moddarna i %1 är inte för det valda spelet eller den valda spelrevisionen." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "Profilen '%1' finns inte" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "Det inspelade spelet ({0}) är inte samma som det valda spelet ({1})" @@ -10062,20 +10306,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "Den resulterande dekrypterade AR-koden innehåller inga rader." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." -msgstr "" +msgstr "Samma fil för inte användas på flera platser; den används redan av %1." -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "Serverns och klientens nätspelsversioner är inkompatibla." -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "Servern är full." -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "Servern skickade ett okänt felmeddelande." @@ -10102,7 +10346,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "Den angivna filen \"{0}\" finns inte" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "Destinationsminneskortet innehåller redan en fil med namnet \"%1\"." @@ -10157,7 +10401,7 @@ msgstr "{0}-partitionen ligger inte på en giltig position." msgid "There are too many partitions in the first partition table." msgstr "Det finns för många partitioner i den första partitionstabellen." -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "Det finns inget att ångra!" @@ -10199,7 +10443,7 @@ msgstr "" "Denna koreanska speltitel är inställd på att använda en IOS som vanligtvis " "inte används i koreanska konsoler. Detta kommer troligtvis orsaka ERROR #002." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "Den här enheten används redan med USB-genomsläppning." @@ -10219,7 +10463,7 @@ msgstr "" "Denna Action Replay-simulator stöder inte koder som förändrar själva Action " "Replay." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "Det går inte att ångra detta!" @@ -10276,7 +10520,11 @@ msgstr "" "troligtvis att detta är en skiva med dubbla lager som har dumpats som en " "skiva med ett lager." -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "Den här filen innehåller inte ett giltigt Wii-filsystem." + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "Filen verkar inte vara en BootMii-NAND-kopia." @@ -10301,11 +10549,11 @@ msgstr "" "grafikkort eller dess drivrutiner stöder inte det. På grund av detta kommer " "spelet vara buggigt eller frysa." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "Detta är en inkorrekt kopia." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." @@ -10313,7 +10561,7 @@ msgstr "" "Detta är en inkorrekt kopia. Det betyder inte nödvändigtvis att spelet inte " "kommer fungera rätt." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." @@ -10321,11 +10569,11 @@ msgstr "" "Detta är en korrekt kopia enligt Redump.org, men Dolphin har hittat problem. " "Detta skulle kunna vara en bugg i Dolphin." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "Detta är en korrekt kopia." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "Den här sessionen kräver ett lösenord:" @@ -10398,7 +10646,7 @@ msgstr "" "Det här värdet multipliceras med djupet som har ställts in i " "grafikkonfigurationen." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." @@ -10406,7 +10654,7 @@ msgstr "" "Detta begränsar hastigheten av uppladdning i segment per klient, vilket " "används för sparningssynkronisering." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -10430,7 +10678,7 @@ msgstr "Trådar" msgid "Threshold" msgstr "Tröskel" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "TiB" @@ -10449,22 +10697,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Titel" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "till" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "Till:" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "&Helskärm" @@ -10489,7 +10737,7 @@ msgid "Toggle Aspect Ratio" msgstr "Växla bildförhållande" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "Slå på/av brytpunkt" @@ -10549,14 +10797,20 @@ msgstr "Tokenisering misslyckades." msgid "Toolbar" msgstr "Verktygsfält" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Ovan" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Topp-och-botten" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -10591,20 +10845,20 @@ msgid "Touch" msgstr "Beröring" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Traditionell kinesiska" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "Traverseringsfel" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "Traverseringsserver" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "Traverseringsserver gjorde en timeout vid anslutning till värden" @@ -10618,7 +10872,7 @@ msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:92 msgid "Triforce AM Baseboard" -msgstr "" +msgstr "Triforce AM Baseboard" #: Source/Core/Core/HW/GCPadEmu.cpp:72 #: Source/Core/Core/HW/WiimoteEmu/Extension/Classic.cpp:94 @@ -10636,22 +10890,14 @@ msgstr "Avtryckare" msgid "Type" msgstr "Typ" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 msgid "Typical GameCube/Wii Address Space" msgstr "Typiskt GameCube/Wii-adressutrymme" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" -msgstr "U&16" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "U&32" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" -msgstr "U&8" - #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 msgid "UNKNOWN" msgstr "OKÄND" @@ -10666,9 +10912,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "Ogiltig USB-enhet" @@ -10709,10 +10955,14 @@ msgstr "" "prestandapåverkan, men resultaten varierar beroende på grafikdrivrutinernas " "beteende." -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "Kunde inte upptäcka RSO-modul automatiskt" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "Misslyckades att öppna fil." + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10737,7 +10987,11 @@ msgstr "" "\n" "Vill du ignorera denna rad och fortsätta tolka resten?" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "Misslyckades att läsa fil." + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "Kunde inte skriva till filen {0}" @@ -10749,15 +11003,15 @@ msgstr "Obunden" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "Okomprimerade GC/Wii-skivavbildningar (*.iso *.gcm)" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Ångra inläsning av snabbsparning" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Ångra snabbsparning" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "Avinstallera" @@ -10774,18 +11028,18 @@ msgstr "" "av denna titel tas bort från NAND-minnet utan att dess spardata tas bort. " "Vill du fortsätta?" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "USA" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Okänd" @@ -10793,7 +11047,7 @@ msgstr "Okänd" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "Okänt DVD-kommando {0:08x} - katastrofalt fel" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "Tog emot ett okänt SYNC_CODES-meddelande med id: {0}" @@ -10805,7 +11059,7 @@ msgstr "" "Tog emot ett okänt SYNC_GECKO_CODES-meddelande med id:{0} från spelare:{1} " "Spelaren sparkas ut!" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "Tog emot ett okänt SYNC_SAVE_DATA-meddelande med id: {0}" @@ -10817,15 +11071,15 @@ msgstr "" "Tog emot ett okänt SYNC_SAVE_DATA-meddelande med id:{0} från spelare:{1} " "Spelaren sparkas ut!" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "Okänt adressutrymme" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "Okänd författare" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "Okänd datatyp" @@ -10833,19 +11087,19 @@ msgstr "Okänd datatyp" msgid "Unknown disc" msgstr "Okänd skiva" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "Okänt fel inträffade." -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "Okänt fel {0:x}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "Okänt fel." -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "Tog emot ett okänt meddelande med id: {0}" @@ -10855,7 +11109,7 @@ msgstr "" "Tog emot ett okänt meddelande med id:{0} från spelare:{1} Spelaren sparkas " "ut!" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Obegränsad" @@ -10871,13 +11125,28 @@ msgstr "Lås upp muspekare" msgid "Unpacking" msgstr "Packar upp" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "Unsigned int" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10886,7 +11155,7 @@ msgstr "Upp" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Uppdatera" @@ -10943,7 +11212,7 @@ msgstr "Tryck för stående läge" msgid "Upright Wii Remote" msgstr "Stående Wii-fjärrkontroll" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "Statistikrapporteringsinställningar" @@ -10959,7 +11228,7 @@ msgstr "Använd anpassad användarstil" msgid "Use Lossless Codec (FFV1)" msgstr "Använd förlustfritt kodek (FFV1)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "Använd PAL60-läge (EuRGB60)" @@ -10980,25 +11249,59 @@ msgid "" "Anisotropic Filtering is currently incompatible with Manual Texture Sampling." "

If unsure, leave this unchecked." msgstr "" +"Använder en manuell implementering av textursampling istället för " +"grafikbackendens inbyggda funktionalitet.

Den här inställningen kan " +"åtgärda grafikproblem i vissa spel på vissa grafikkort, i vanliga fall " +"vertikala linjer i FMV:er. Utöver detta kommer aktivering av Manuell " +"textursampling att tillåta korrekt emulering av texturomslutning vid " +"specialfall (vid 1x intern upplösning eller när skalad EFB är avaktiverat, " +"och med anpassade texturer avaktiverade) och ger en bättre emulering av " +"Level of Detail-beräkningar.

Detta kostar en del prestanda, särskilt " +"vid högre interna upplösningar; dessutom är anisotrop filtrering för " +"närvarande inkompatibelt med Manuell textursampling." +"

Om du är osäker kan du lämna detta omarkerat." #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:137 msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" "Gör så att båda ögon använder samma djupbuffert. Vissa spel kräver detta." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" "Använd den minnesmappningskonfiguration som är inställd vid skanntillfället" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "Använd fysiska adresser" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "Använd virtuella adresser när det är möjligt" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "Användarinställningar" @@ -11011,11 +11314,11 @@ msgstr "Användargränssnitt" msgid "User Style:" msgstr "Användarstil:" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "Användarvariabler" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" @@ -11025,7 +11328,7 @@ msgstr "" "Du kan använda dem för att spara eller hämta värden mellan\n" "inmatningar och utmatningar på samma föräldrakontroller." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -11061,23 +11364,23 @@ msgstr "" msgid "Using Qt %1" msgstr "Använder Qt %1" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "Används i vanliga fall för ljusobjekt" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "Används i vanliga fall för normalmatriser" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "Används i vanliga fall för positionsmatriser" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "Används i vanliga fall för texturkoordinatmatriser" @@ -11090,7 +11393,7 @@ msgstr "Hjälpprogram" msgid "V-Sync" msgstr "V-synk" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Värde" @@ -11123,8 +11426,8 @@ msgstr "Verifiera certifikat" msgid "Verifying" msgstr "Verifierar" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "Version" @@ -11160,7 +11463,7 @@ msgstr "Visa &minne" msgid "Virtual Notches" msgstr "Virtuella jack" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "Virtuellt adressutrymme" @@ -11187,7 +11490,7 @@ msgstr "Volym upp" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "WAD-filer (*.wad)" @@ -11244,16 +11547,16 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "WASAPI (exklusivt läge)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" -msgstr "" +msgstr "WFS-sökväg:" #: Source/Core/DolphinQt/ConvertDialog.cpp:350 msgid "WIA GC/Wii images (*.wia)" msgstr "WIA-GC/Wii-skivavbildningar (*.wia)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "Väntar på första skanning..." @@ -11286,7 +11589,7 @@ msgstr "" "

Om du är osäker kan du lämna detta omarkerat." -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -11304,10 +11607,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Varning" @@ -11327,7 +11630,7 @@ msgstr "" "Varning: Antalet block indikerade i BAT ({0}) matchar inte den laddade " "filheadern ({1})" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " @@ -11338,7 +11641,7 @@ msgstr "" "sparning innan du fortsätter, eller läsa in denna snabbsparning med " "skrivskyddat läge inaktiverat." -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " @@ -11349,7 +11652,7 @@ msgstr "" "{1}) (bildruta {2} < {3}). Du bör läsa in en annan sparning innan du " "fortsätter." -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" @@ -11360,7 +11663,7 @@ msgstr "" "in denna snabbsparning med skrivskyddat läge inaktiverat. Annars kan du få " "en desynkronisering." -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -11403,7 +11706,7 @@ msgstr "" msgid "Watch" msgstr "Bevakning" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "Webbplats" @@ -11441,11 +11744,11 @@ msgstr "" "

Om du är osäker kan du lämna detta markerat." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "Enheter som används med USB-genomsläppning" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Bredbildshack" @@ -11461,11 +11764,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Wii Menu" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Wii-NAND-rot:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Wii-fjärrkontroll" @@ -11473,8 +11776,8 @@ msgstr "Wii-fjärrkontroll" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "Wii-fjärrkontroll %1" @@ -11487,11 +11790,11 @@ msgstr "Wii-fjärrkontrollknappar" msgid "Wii Remote Orientation" msgstr "Wii-fjärrkontrollorientering" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Wii-fjärrkontrollinställningar" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Wii-fjärrkontroller" @@ -11507,7 +11810,7 @@ msgstr "Wii-TAS-inmatning %1 - Wii-fjärrkontroll" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "Wii-TAS-inmatning %1 - Wii-fjärrkontroll + Nunchuk" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "Wii och Wii-fjärrkontroller" @@ -11515,7 +11818,7 @@ msgstr "Wii och Wii-fjärrkontroller" msgid "Wii data is not public yet" msgstr "Wii-data är inte offentlig än" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "Wii-sparfiler (*.bin);;Alla filer (*)" @@ -11545,18 +11848,18 @@ msgid "World" msgstr "Världen" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "Skriv" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "Skriv spardata" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "Endast skriv" @@ -11569,12 +11872,12 @@ msgid "Write to File" msgstr "Skriv till fil" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "Skriv till logg" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "Skriv till logg och bryt" @@ -11582,7 +11885,7 @@ msgstr "Skriv till logg och bryt" msgid "Write to Window" msgstr "Skriv till fönster" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "Fel version" @@ -11593,7 +11896,7 @@ msgstr "Fel version" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "XF-register " @@ -11622,8 +11925,8 @@ msgid "Yellow" msgstr "Gul" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "Ja" @@ -11679,7 +11982,7 @@ msgstr "" "macOS 10.14 (Mojave) eller nyare. Rapportera inte några problem som " "förekommer om de inte också förekommer på 10.14+." -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" "Du använder den senaste versionen som är tillgänglig på det här " @@ -11697,6 +12000,15 @@ msgid "" "Would you like to stop now to fix the problem?\n" "If you select \"No\", audio might be garbled." msgstr "" +"Du använder en gammal fri DSP-ROM som skapats av Dolphins utvecklare.\n" +"På grund av förbättrad emulering fungerar denna ROM inte längre korrekt.\n" +"\n" +"Radera filerna dsp_rom.bin och dsp_coef.bin i GC-mappen i User-mappen för " +"att använda den senaste fria DSP-ROM:en, eller byt ut dem mot omodifierade " +"kopior från en riktig GameCube/Wii.\n" +"\n" +"Vill du avbryta nu för att åtgärda problemet?\n" +"Om du väljer \"Nej\" kan det uppstå problem med ljudet." #: Source/Core/Core/IOS/ES/ES.cpp:308 msgid "" @@ -11713,11 +12025,11 @@ msgstr "" msgid "You have to enter a name." msgstr "Du måste ange ett namn." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "Du måste ange ett namn för din session!" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "Du måste ange en region för din session!" @@ -11725,7 +12037,7 @@ msgstr "Du måste ange en region för din session!" msgid "You must restart Dolphin in order for the change to take effect." msgstr "Du måste starta om Dolphin för att ändringarna ska börja gälla." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "Du måste välja ett spel!" @@ -11740,6 +12052,14 @@ msgid "" "Would you like to stop now to fix the problem?\n" "If you select \"No\", audio might be garbled." msgstr "" +"Dina DSP-ROM-filer har felaktiga kontrollsummor.\n" +"\n" +"Radera filerna dsp_rom.bin och dsp_coef.bin i GC-mappen i User-mappen för " +"att använda en fri DSP-ROM, eller byt ut dem mot omodifierade kopior från en " +"riktig GameCube/Wii.\n" +"\n" +"Vill du avbryta nu för att åtgärda problemet?\n" +"Om du väljer \"Nej\" kan det uppstå problem med ljudet." #. i18n: Refers to a 3D axis (used when mapping motion controls) #: Source/Core/DolphinQt/TAS/WiiTASInputWindow.cpp:117 @@ -11756,23 +12076,23 @@ msgstr "Zero 3-kod stöds inte" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "Nollkod som är okänd för Dolphin: {0:08x}" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "[%1, %2]" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "[%1, %2] och [%3, %4]" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "^ Exklusiv eller" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "justerat" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "valfritt värde" @@ -11791,13 +12111,13 @@ msgstr "cm" msgid "d3d12.dll could not be loaded." msgstr "d3d12.dll kunde inte läsas in." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "förval" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "frånkopplad" @@ -11813,31 +12133,31 @@ msgstr "errno" msgid "fake-completion" msgstr "fake-completion" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "är lika med" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "är större än" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "är större än eller lika med" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "är mindre än" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "är mindre än eller lika med" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "inte är lika med" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "föregående värde" @@ -11869,7 +12189,7 @@ msgstr "av" msgid "on" msgstr "på" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "eller välj en enhet" @@ -11878,7 +12198,7 @@ msgstr "eller välj en enhet" msgid "s" msgstr "s" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "följande värde:" @@ -11887,7 +12207,7 @@ msgstr "följande värde:" msgid "uDraw GameTablet" msgstr "uDraw GameTablet" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "ej justerat" @@ -11906,7 +12226,7 @@ msgstr "{0} (Masterpiece)" msgid "{0} (NKit)" msgstr "{0} (NKit)" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" "{0}-IPL hittades i {1}-mappen. Det kan hända att skivan inte kommer kunna " @@ -11929,7 +12249,7 @@ msgstr "" "Kontrollera skrivrättigheterna eller flytta filen utanför Dolphin." #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "{0} av {1} block. Komprimeringsgrad {2}%" @@ -11937,7 +12257,7 @@ msgstr "{0} av {1} block. Komprimeringsgrad {2}%" msgid "{0} was not a directory, moved to *.original" msgstr "{0} var inte en mapp. Den har flyttats till *.original" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "| Eller" diff --git a/Languages/po/tr.po b/Languages/po/tr.po index f66eb3709f03..088c947fda21 100644 --- a/Languages/po/tr.po +++ b/Languages/po/tr.po @@ -16,9 +16,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Serdar Sağlam , 2020\n" "Language-Team: Turkish (http://www.transifex.com/delroth/dolphin-emu/" "language/tr/)\n" "Language: tr\n" @@ -27,7 +27,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -39,7 +39,7 @@ msgstr "" "GameCube disk kalıpları çok az doğrulama verisi içerdiğinden, Dolphin'in " "tespit edemediği sorunlar olabilir." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -51,7 +51,7 @@ msgstr "" "Bu başlık perakende Wii konsolları için olmadığından, Dolphin üzerinde " "oynanmadığını doğrulayamaz." -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -75,7 +75,7 @@ msgstr "" msgid " (Disc %1)" msgstr " (Disk %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "" @@ -83,7 +83,7 @@ msgstr "" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -97,7 +97,7 @@ msgstr "" msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -113,17 +113,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -142,7 +142,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (Revizyon %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "%1 (Standart)" @@ -179,7 +179,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "%1, sisteminizde bu özellik desteklemiyor." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "%1 bu özelliği desteklemiyor." @@ -190,23 +190,23 @@ msgid "" "Current Frame: %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -215,11 +215,11 @@ msgstr "" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "%1 oturum bulundu" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "%1 oturum bulundu" @@ -231,15 +231,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1% (Normal Hız)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -255,30 +255,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "%1x Doğal (%2x%3)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "& Ve" @@ -298,7 +298,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "&Hakkında" @@ -307,11 +307,11 @@ msgid "&Add Memory Breakpoint" msgstr "&Bellek Kesme Noktası Ekle" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "&Yeni Kod Ekle..." -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "&Fonksiyon Ekle" @@ -319,19 +319,19 @@ msgstr "&Fonksiyon Ekle" msgid "&Add..." msgstr "&Ekle..." -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "&Ses Ayarları" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "&Otomatik Güncelle:" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "&Otomatik Başlangıç" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "&Yedek DVD Diskinden Önyükleme Başlat" @@ -339,11 +339,11 @@ msgstr "&Yedek DVD Diskinden Önyükleme Başlat" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "&Kesme Noktaları" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "&Hata İzleyici" @@ -351,15 +351,15 @@ msgstr "&Hata İzleyici" msgid "&Cancel" msgstr "&İptal" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "&Hile Yöneticisi" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "&Güncellemeleri Denetle..." -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "&Sembolleri Temizle" @@ -367,7 +367,7 @@ msgstr "&Sembolleri Temizle" msgid "&Clone..." msgstr "&Çoğalt..." -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "&Kod" @@ -375,19 +375,20 @@ msgstr "&Kod" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "&Denetleyici Ayarları" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "&Adresi kopyala" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "&Oluştur..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "&Sil" @@ -399,7 +400,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "&Kodu Düzenle..." @@ -407,11 +408,11 @@ msgstr "&Kodu Düzenle..." msgid "&Edit..." msgstr "&Düzenle..." -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "&Diski Çıkart" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "&Emülasyon" @@ -423,43 +424,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "&Dosya" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "&Yazı Tipi..." -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "&Kare İlerletme" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "&Sembolleri Şuradan Getir" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "&GitHub Repo'su" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "&Grafik Ayarları" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "&Yardım" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "&Kısayol Ayarları" @@ -471,11 +476,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "&BLR yerleştir" @@ -483,7 +488,7 @@ msgstr "&BLR yerleştir" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -491,23 +496,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "&Dil:" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "Durumu &Yükle" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "&Sembol Haritasını Yükle" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "&Gereçleri Yerinde Kilitle" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "&Hafıza" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "&Film" @@ -515,7 +520,7 @@ msgstr "&Film" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "&Ağ" @@ -523,24 +528,24 @@ msgstr "&Ağ" msgid "&No" msgstr "&Hayır" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "&Aç..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "&Seçenekler" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "&HLE Fonksiyonlarını Yamala" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "&Duraklat" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "&Oynat" @@ -548,11 +553,11 @@ msgstr "&Oynat" msgid "&Properties" msgstr "&Özellikler" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "&Salt-Okunur Mod" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "&Kayıtlar" @@ -561,24 +566,24 @@ msgid "&Remove" msgstr "&Kaldır" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "&Kodu Sil" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "&Sembolü yeniden adlandır" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "&Sıfırla" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "&Kaynak Paketi Yöneticisi" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "&Sembol Haritasını Kaydet" @@ -586,11 +591,11 @@ msgstr "&Sembol Haritasını Kaydet" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "&Hız Limiti:" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "&Durdur" @@ -598,11 +603,11 @@ msgstr "&Durdur" msgid "&Theme:" msgstr "&Tema:" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "&Araçlar" @@ -610,17 +615,17 @@ msgstr "&Araçlar" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "&Görünüm" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "&İzle" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "&Website" @@ -632,11 +637,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "&Evet" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" @@ -648,7 +653,7 @@ msgstr "(Yok)" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(kapalı)" @@ -656,34 +661,34 @@ msgstr "(kapalı)" msgid "(ppc)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "+ Ekle" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" @@ -691,6 +696,10 @@ msgstr "" msgid "128 Mbit (2043 blocks)" msgstr "128 Mbit (2043 blok)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "16 Mbit (251 blok)" @@ -699,35 +708,35 @@ msgstr "16 Mbit (251 blok)" msgid "16-bit" msgstr "16-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "Orijinalin 2 katı (1280x1056) - 720p" @@ -739,25 +748,25 @@ msgstr "32 Mbit (507 blok)" msgid "32-bit" msgstr "32-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -771,28 +780,32 @@ msgstr "3D Derinlik" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "Orijinalin 3 katı (1920x1584) - 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Mbit (59 blok)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "Orijinalin 4 katı (2560x2112) - 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "Orijinalin 5 katı (3200x2640)" @@ -800,29 +813,33 @@ msgstr "Orijinalin 5 katı (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Mbit (1019 blok)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "Orijinalin 6 katı (3840x3168) - 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "Orijinalin 7 katı (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Mbit (123 blok)" @@ -831,25 +848,25 @@ msgstr "8 Mbit (123 blok)" msgid "8-bit" msgstr "8-bit" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "Orijinalin 8 katı (5120x4224) - 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "< Daha az" @@ -868,12 +885,12 @@ msgid "" "Notes:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "" @@ -891,11 +908,11 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "Zaten bir diskin yerleştirilme işlemi sürüyor." -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -903,7 +920,7 @@ msgstr "" "Kapanma işlemi sürüyor. Eğer mevcut emülasyonu, kapanma işlemi tamamlanmadan " "durdurursanız kaydedilmemiş bazı veriler kaybolabilir. Durdurulsun mu?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "Senkronizasyon, ancak bir Wii oyunu çalışırken yapılabilir." @@ -912,7 +929,7 @@ msgstr "Senkronizasyon, ancak bir Wii oyunu çalışırken yapılabilir." msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -936,8 +953,8 @@ msgstr "AR Kodu" msgid "AR Codes" msgstr "AR Kodları" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -960,7 +977,7 @@ msgstr "İvmeölçer" msgid "Accuracy:" msgstr "Doğruluk:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "Eylem" @@ -1056,9 +1073,9 @@ msgstr "Adaptör Algılandı" msgid "Adapter:" msgstr "Ekran Kartı:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "Ekle" @@ -1066,11 +1083,11 @@ msgstr "Ekle" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "Yeni USB Aygıtı Ekle" @@ -1102,46 +1119,49 @@ msgstr "" msgid "Add to &watch" msgstr "Ekle &izlemeye" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "Ekle..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "Adres" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1185,39 +1205,43 @@ msgstr "Gelişmiş" msgid "Africa" msgstr "Afrika" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "Tüm Dosyalar (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "Tüm cihazlar" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "" @@ -1226,25 +1250,25 @@ msgstr "" msgid "All players' saves synchronized." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "Uyumsuz Bölge Ayarlarına İzin Ver" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "Kullanım İstatistikleri Raporlamasına İzin Ver" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "SD Karta Yazmaya İzin Ver" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1270,7 +1294,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "Bir diskin yerleştirilmesi bekleniyordu ancak disk bulunamadı." -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "Anaglif" @@ -1288,39 +1312,39 @@ msgstr "Açı" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "Anizotropik Filtre:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "Kenar Yumuşatma:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "Herhangi Bir Bölge" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1334,15 +1358,15 @@ msgstr "Apploader Tarihi:" msgid "Apply" msgstr "Uygula" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "Küçük Haritaları algıla" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "" @@ -1350,11 +1374,11 @@ msgstr "" msgid "Are you sure you want to delete this file?" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "" @@ -1367,11 +1391,11 @@ msgid "Aspect Ratio" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "En-Boy Oranı:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "Denetleyici Noktalarını Ata" @@ -1379,7 +1403,7 @@ msgstr "Denetleyici Noktalarını Ata" msgid "Assign Controllers" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1404,7 +1428,7 @@ msgstr "Ses Geciktirme Ayarları" msgid "Australia" msgstr "Avustralya" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "Yazar" @@ -1416,15 +1440,15 @@ msgstr "Yazarlar" msgid "Auto" msgstr "Otomatik" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "Otomatik (640x528'in katları)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "Otomatik Güncelleme Ayarları" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1440,7 +1464,7 @@ msgstr "Pencere Boyutunu Otomatik Ayarla" msgid "Auto-Hide" msgstr "Otomatik Gizle" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1451,12 +1475,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "" @@ -1471,11 +1495,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "BP kaydı " @@ -1501,7 +1525,7 @@ msgstr "Çözücü Ayarları" msgid "Backend:" msgstr "Çözücü:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "Arkaplan Girişi" @@ -1512,7 +1536,13 @@ msgstr "Arkaplan Girişi" msgid "Backward" msgstr "Geri" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1520,19 +1550,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "Afiş" @@ -1556,7 +1587,7 @@ msgstr "" msgid "Basic" msgstr "Temel" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "Temel Ayarlar" @@ -1564,7 +1595,7 @@ msgstr "Temel Ayarlar" msgid "Bass" msgstr "Bass" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1572,11 +1603,11 @@ msgstr "" msgid "Battery" msgstr "Batarya" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1598,7 +1629,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "" @@ -1611,7 +1642,7 @@ msgstr "" msgid "Blocking" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "Bloklar" @@ -1636,15 +1667,15 @@ msgstr "" "Bluetooth Geçişi Modu etkin, ancak Dolphin libusb olmadan oluşturuldu. Geçiş " "modu kullanılamaz." -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "" @@ -1652,7 +1683,7 @@ msgstr "" msgid "Borderless Fullscreen" msgstr "Çerçevesiz Tam Ekran" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "Alt" @@ -1666,7 +1697,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "" @@ -1675,7 +1706,7 @@ msgstr "" msgid "Breakpoint" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" @@ -1705,7 +1736,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1713,12 +1744,12 @@ msgstr "" msgid "Buffer Size:" msgstr "Arabellek Boyutu:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "Arabellek:" @@ -1760,11 +1791,11 @@ msgstr "Düğmeler" msgid "C Stick" msgstr "C Çubuğu" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "CP kaydı " @@ -1795,7 +1826,7 @@ msgstr "" msgid "Calculate" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1815,15 +1846,15 @@ msgstr "" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1833,7 +1864,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1841,16 +1872,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "İptal" @@ -1868,23 +1899,23 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "GC IPL bulunamadı." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "GC IPL bulunamadığı için oyun başlatılamıyor." @@ -1906,7 +1937,7 @@ msgstr "" msgid "Change &Disc" msgstr "&Diski Değiştir" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "&Diski Değiştir..." @@ -1914,15 +1945,15 @@ msgstr "&Diski Değiştir..." msgid "Change Disc" msgstr "Diski Değiştir" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "Diskleri Otomatik Değiştir" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1942,7 +1973,7 @@ msgstr "Değiştirilen hileler oyunu yeniden başlattığınızda etkili olacakt msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "Sohbet" @@ -1958,11 +1989,11 @@ msgstr "Hile Arama" msgid "Cheats Manager" msgstr "Hile Yöneticisi" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "" @@ -1976,7 +2007,7 @@ msgid "" "whether it's still in use." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "" @@ -1984,16 +2015,16 @@ msgstr "" msgid "China" msgstr "Çin" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "Açmak için bir dosya seçin" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -2016,14 +2047,14 @@ msgid "Classic Controller" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "Temizle" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "Önbelleği Temizle" @@ -2040,28 +2071,47 @@ msgstr "" msgid "Close" msgstr "Kapat" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "Ya&pılandırma" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "Kod" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "Code:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2079,7 +2129,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "" @@ -2092,7 +2142,7 @@ msgstr "" msgid "Compression:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "" @@ -2104,13 +2154,13 @@ msgstr "" msgid "Config" msgstr "Yapılandırma" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "Yapılandır" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2118,21 +2168,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "Dolphin'i Yapılandır" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "" @@ -2145,26 +2195,26 @@ msgstr "" msgid "Confirm on Stop" msgstr "Durdurmayı Onayla" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "Bağlan" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "Balance Board Bağla" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "USB Klavye Bağla" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "" @@ -2184,11 +2234,11 @@ msgstr "3. Wii Remote'u Bağla" msgid "Connect Wii Remote 4" msgstr "4. Wii Remote'u Bağla" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "Wii Remote Bağla" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" @@ -2202,15 +2252,19 @@ msgstr "" msgid "Connected" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "Bağlantı Tipi:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "Devamlı Arama" @@ -2223,7 +2277,7 @@ msgstr "" msgid "Control Stick" msgstr "Kontrol Çubuğu" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "" @@ -2251,7 +2305,7 @@ msgstr "" msgid "Controllers" msgstr "Denetleyiciler" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2259,7 +2313,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2268,7 +2322,7 @@ msgid "" "Native.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2293,12 +2347,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "Yakınsama:" @@ -2335,33 +2389,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "Kopyala" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "Kopyala &Fonksiyon" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "Kopyala &Hex" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "" @@ -2369,11 +2428,15 @@ msgstr "" msgid "Copy failed" msgstr "Kopyalama başarısız" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "" @@ -2388,16 +2451,16 @@ msgstr "Çekirdek" msgid "Cost" msgstr "Performans Maliyeti" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "" @@ -2484,15 +2547,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2519,7 +2582,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "" @@ -2542,11 +2605,11 @@ msgstr "" msgid "Crossfade" msgstr "Geçişli" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "Mevcut Bölge" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2554,7 +2617,7 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "Mevcut oyun" @@ -2562,7 +2625,7 @@ msgstr "Mevcut oyun" msgid "Current thread" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2593,7 +2656,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "DK Bongos Kontr." @@ -2621,7 +2684,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2629,11 +2692,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "Dance Mat" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "Veri" @@ -2645,28 +2708,27 @@ msgstr "" msgid "Data Transfer" msgstr "Veri Aktarımı" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "Veri Tipi" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "Kullanılmaması gereken dosya alanındaki veriler." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2684,7 +2746,7 @@ msgid "Debug Only" msgstr "Yalnızca Hata Ayıklama" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "Hata ayıklama" @@ -2726,7 +2788,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "Varsayılan" @@ -2742,7 +2804,7 @@ msgstr "Varsayılan Cihaz" msgid "Default Font" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "Varsayılan ISO:" @@ -2767,7 +2829,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2782,11 +2844,11 @@ msgid "Delete Selected Files..." msgstr "" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2794,21 +2856,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "Derinlik:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "Açıklama" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "Açıklama:" @@ -2817,11 +2879,11 @@ msgstr "Açıklama:" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "Belirle" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2829,25 +2891,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "Cihaz" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "Cihaz PID (örn. 0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "Cihaz Ayarları" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "Cihaz VID (örn. 057e)" @@ -2859,11 +2921,15 @@ msgstr "Cihaz:" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "Beş dakika boyunca hareketsiz kalınırsa ekranı karartır." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "Doğrudan Bağlantı" @@ -2894,7 +2960,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "Sınırlayıcı Kutusunu Devre Dışı Bırak" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "Kopyalama Filtresini Devre Dışı Bırak" @@ -2906,15 +2972,15 @@ msgstr "" msgid "Disable Emulation Speed Limit" msgstr "Emülasyon Hızı Limitini Kapat" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "Sisi Devre Dışı Bırak" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "" @@ -2922,7 +2988,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2936,7 +3002,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2953,11 +3019,15 @@ msgstr "Disk" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2975,25 +3045,25 @@ msgstr "" msgid "Distance of travel from neutral position." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "Emülasyonu durdurmak istiyor musunuz?" @@ -3010,9 +3080,9 @@ msgstr "" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "Dolphin Harita Dosyası (*.map)" @@ -3024,8 +3094,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Dolphin TAS Filmleri (*.dtm)" @@ -3060,21 +3130,21 @@ msgstr "" msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "Dolphin geçiş sunucusu için çok eski" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3089,7 +3159,7 @@ msgstr "Dolphin'in hile sistemi şu anda devre dışı." msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "" @@ -3102,24 +3172,26 @@ msgid "Done compressing disc image." msgstr "Disk imajı sıkıştırılma işlemi tamamlandı." #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "Aşağı" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "" @@ -3127,11 +3199,11 @@ msgstr "" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "" @@ -3154,27 +3226,35 @@ msgstr "" msgid "Dual Core" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "Kukla" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "Sesi Dök" @@ -3186,7 +3266,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "EFB Hedef Dökümü" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "Kareleri Dök" @@ -3198,7 +3278,7 @@ msgstr "" msgid "Dump Objects" msgstr "Nesneleri Dök" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "Döküm Dizini:" @@ -3295,16 +3375,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Flemenkçe" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "&Çıkış" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3316,7 +3396,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3344,7 +3424,7 @@ msgstr "Efekt" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3352,7 +3432,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "" @@ -3364,7 +3444,7 @@ msgstr "" msgid "Embedded Frame Buffer (EFB)" msgstr "Yerleşik Çerçeve Arabellği (EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "Boş" @@ -3372,11 +3452,11 @@ msgstr "Boş" msgid "Emu Thread already running" msgstr "Emülasyon işlemi zaten çalışıyor" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "Wii'nin Bluetooth adaptörünü taklit et" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "Taklit Wii Remote" @@ -3392,8 +3472,12 @@ msgstr "" msgid "Emulation Speed" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3409,7 +3493,7 @@ msgstr "API Doğrulama Katmanlarını Etkinleştir" msgid "Enable Audio Stretching" msgstr "Ses Geciktirmeyi Etkinleştir" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "Hilelere İzin Ver" @@ -3421,7 +3505,7 @@ msgstr "Özel RTC'yi Etkinleştir" msgid "Enable Dual Core" msgstr "Çift Çekirdeğe İzin Ver" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "Çift Çekirdeğe İzin Ver (Hızı Artırır)" @@ -3447,19 +3531,19 @@ msgid "Enable Progressive Scan" msgstr "Progresif Taramaya İzin Ver" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "Ekran Koruyucusuna İzin Ver" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "Hoparlör verisine izin ver" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "İstatistik Raporlamayı Etkinleştir" @@ -3491,7 +3575,7 @@ msgstr "" "Birkaç oyun için gerekli olan Kayar Nokta Sonuç Bayrağı hesaplamasını " "etkinleştirir. (AÇIK = Uyumlu, Kapalı = Hızlı)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3499,7 +3583,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3529,7 +3613,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3565,7 +3649,7 @@ msgstr "" msgid "Encoding" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3578,12 +3662,12 @@ msgid "Enet Didn't Initialize" msgstr "" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "İngilizce" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3593,7 +3677,7 @@ msgstr "Geliştirmeler" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "USB aygıt ID'sini girin" @@ -3607,11 +3691,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "RSO modül adresini girin:" @@ -3620,65 +3704,68 @@ msgstr "RSO modül adresini girin:" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "Hata" @@ -3691,19 +3778,19 @@ msgstr "" msgid "Error loading selected language. Falling back to system default." msgstr "Seçili dili yüklerken hata. Sistem varsayılanlarına geri dönülüyor." -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3723,7 +3810,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3773,11 +3860,11 @@ msgid "" "may not show fonts correctly, or crash." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3786,11 +3873,39 @@ msgstr "" msgid "Euphoria" msgstr "Euphoria" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "Avrupa" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3839,14 +3954,14 @@ msgstr "" msgid "Experimental" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "Tüm Wii Kayıtlarını Ver" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3854,15 +3969,15 @@ msgstr "" msgid "Export Recording" msgstr "Çekimi Ver" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "Çekimi Ver..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3874,22 +3989,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "Uzantı" @@ -3902,7 +4017,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3910,7 +4025,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "Harici Çerçeve Arabelleği (XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "" @@ -3948,7 +4063,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "FIFO Oynatıcısı" @@ -3956,17 +4071,17 @@ msgstr "FIFO Oynatıcısı" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -3978,7 +4093,7 @@ msgstr "BT geçişi için arayüz talebi başarısız oldu" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -3999,12 +4114,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -4016,19 +4131,19 @@ msgstr "" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "Kod indirme başarısız." -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -4037,7 +4152,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "" @@ -4060,29 +4175,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "" @@ -4098,23 +4213,23 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "" @@ -4126,11 +4241,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "" @@ -4141,7 +4256,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "" @@ -4168,11 +4283,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "" @@ -4181,7 +4296,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4193,7 +4308,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4201,25 +4316,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4234,15 +4349,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4250,23 +4365,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4274,11 +4389,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "BT.DINF 'den SYSCONF 'a yazma başarısız" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4286,22 +4401,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4310,19 +4425,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4335,7 +4450,7 @@ msgstr "Hızlı" msgid "Fast Depth Calculation" msgstr "Hızlı Derinlik Hesaplaması" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4352,7 +4467,7 @@ msgstr "Dosya Ayrıntıları" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "Dosya Biçimi" @@ -4366,18 +4481,18 @@ msgstr "Dosya Bilgisi" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "Dosya Adı" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "Dosya Yolu" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "Dosya Boyutu" @@ -4385,11 +4500,11 @@ msgstr "Dosya Boyutu" msgid "File Size:" msgstr "Dosya Boyutu:" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "Dosya kod içermemektedir." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4403,11 +4518,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4415,15 +4530,15 @@ msgstr "" msgid "Filesystem" msgstr "Dosya sistemi" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "Sembolleri Filtrele" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4431,11 +4546,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "Bul &Sonraki" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "Bul &Önceki" @@ -4449,18 +4564,22 @@ msgid "" "This can take a while." msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "Sağlamayı Düzelt" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4470,13 +4589,14 @@ msgstr "Bayraklar" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "" @@ -4500,7 +4620,7 @@ msgstr "" msgid "Force 16:9" msgstr "16:9'a Zorla" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "24-Bit Renge Zorla" @@ -4508,15 +4628,15 @@ msgstr "24-Bit Renge Zorla" msgid "Force 4:3" msgstr "4:3'e Zorla" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "Doku Filtrelemesine Zorla" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4526,7 +4646,7 @@ msgid "" "
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4545,21 +4665,21 @@ msgstr "Biçim:" msgid "Forward" msgstr "İleri" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "İletme portu (UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "" @@ -4588,7 +4708,7 @@ msgstr "" msgid "Frame Range" msgstr "Çerçeve Aralığı" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4600,19 +4720,19 @@ msgstr "" msgid "France" msgstr "Fransa" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4620,7 +4740,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -5028,7 +5148,7 @@ msgstr "Yeşil Sol" msgid "Green Right" msgstr "Yeşil Sağ" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "Sütun Görünümü" @@ -5041,7 +5161,7 @@ msgstr "Gitar" msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5054,12 +5174,29 @@ msgstr "Hileler" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "Yardım" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5071,19 +5208,19 @@ msgstr "Hexadecimal" msgid "Hide" msgstr "Gizle" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5101,21 +5238,27 @@ msgstr "" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "Barındırma" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5123,7 +5266,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5131,11 +5274,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "" @@ -5147,7 +5290,7 @@ msgstr "" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "Kısayol Tuşu Ayarları" @@ -5198,11 +5341,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "IP Adresi:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "IPL Ayarları" @@ -5211,7 +5354,7 @@ msgid "IR" msgstr "Kızılötesi" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "Kızılötesi Hassasiyeti:" @@ -5233,22 +5376,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "Simge" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5295,7 +5438,7 @@ msgstr "Birim Değişimini Yoksay" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5303,7 +5446,7 @@ msgid "" "checked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5324,41 +5467,50 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "Wii Kayıtlarını Al..." -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" " Time elapsed: %1s" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "Oyunda?" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5411,8 +5563,8 @@ msgstr "Bilgi" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "Bilgilendirme" @@ -5421,10 +5573,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "Giriş" @@ -5438,16 +5590,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "Yerleştir &nop" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "SD Kart Ekle" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "Kur" @@ -5459,7 +5617,7 @@ msgstr "" msgid "Install Update" msgstr "Güncellemeyi Kur" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "WAD Kur..." @@ -5475,11 +5633,11 @@ msgstr "" msgid "Instruction" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "" @@ -5497,7 +5655,7 @@ msgid "Interface" msgstr "Arayüz" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "İç LZO Hatası - Sıkıştırma başarısız." @@ -5506,27 +5664,27 @@ msgstr "İç LZO Hatası - Sıkıştırma başarısız." msgid "Internal LZO Error - decompression failed" msgstr "Dahili LZO Hatası - genişletme başarısız" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "İç LZO Hatası - lzo_init() başarısız." #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "Dahili Çözünürlük" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "Dahili Çözünürlük:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5534,11 +5692,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "Yorumlayıcı (çok yavaş)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5546,7 +5704,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "Geçersiz Karma Kod" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5555,15 +5713,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5571,11 +5729,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "Geçersiz host" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "" @@ -5588,31 +5746,31 @@ msgstr "" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "Hatalı çekim dosyası" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "Geçersiz arama parametreleri (nesne seçilmedi)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "Geçersiz arama dizesi (sayıya dönüştürülemedi)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "Geçersiz arama dizesi (sadece düz dize uzunluğu destekleniyor)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "" @@ -5621,8 +5779,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "İtalyanca" @@ -5630,11 +5788,11 @@ msgstr "İtalyanca" msgid "Italy" msgstr "İtalya" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "" @@ -5642,47 +5800,47 @@ msgstr "" msgid "JIT Blocks" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5694,11 +5852,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5709,12 +5867,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "Japonya" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japonca" @@ -5734,12 +5892,12 @@ msgstr "Pencereyi Önde Tut" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "Klavye" @@ -5752,20 +5910,20 @@ msgstr "Klavye" msgid "Keys" msgstr "Tuşlar" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "Oyuncuyu At" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "Kore" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Korece" @@ -5793,7 +5951,7 @@ msgstr "" msgid "Label" msgstr "Etiket" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5873,15 +6031,15 @@ msgstr "" msgid "License" msgstr "Lisans" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "Liste Görünümü" @@ -5890,17 +6048,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "Yükle" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "" @@ -5908,7 +6066,7 @@ msgstr "" msgid "Load Custom Textures" msgstr "Özel Dokuları Yükle" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "GameCube Ana Menüsü'nü Yükle" @@ -5917,7 +6075,7 @@ msgstr "GameCube Ana Menüsü'nü Yükle" msgid "Load Last State" msgstr "Son Durumu Yükle" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "Yükleme Yolu:" @@ -6010,23 +6168,23 @@ msgstr "8. Durumu Yükle" msgid "Load State Slot 9" msgstr "9. Durumu Yükle" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "Dosyadan Durum Yükle" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "Seçili Yuvadan Durum Yükle" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "Yuvadan Durum Yükle" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "Wii Kaydını Yükle" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "Wii Sistem Menüsünü Yükle %1" @@ -6034,12 +6192,12 @@ msgstr "Wii Sistem Menüsünü Yükle %1" msgid "Load from Selected Slot" msgstr "Seçili Yuvadan Yükle" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "" @@ -6047,7 +6205,7 @@ msgstr "" msgid "Load..." msgstr "Yükle..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "" @@ -6058,7 +6216,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "Yerel" @@ -6067,7 +6225,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "Günlük" @@ -6075,7 +6233,7 @@ msgstr "Günlük" msgid "Log Configuration" msgstr "Günlük Yapılandırması" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6102,7 +6260,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "" @@ -6131,7 +6289,7 @@ msgstr "" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6141,7 +6299,7 @@ msgstr "Ana Çubuk" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "" @@ -6150,7 +6308,7 @@ msgstr "" msgid "Maker:" msgstr "Yapımcı:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6158,7 +6316,7 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "" @@ -6166,7 +6324,7 @@ msgstr "" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6174,15 +6332,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6191,7 +6349,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "Bu Wii Menüsünde ve bazı oyunlarda yavaşlamaya neden olabilir." @@ -6200,11 +6358,11 @@ msgstr "Bu Wii Menüsünde ve bazı oyunlarda yavaşlamaya neden olabilir." msgid "Medium" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "Hafıza" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "" @@ -6212,7 +6370,7 @@ msgstr "" msgid "Memory Card" msgstr "Hafıza Kartı" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "" @@ -6230,7 +6388,7 @@ msgstr "" msgid "Memory Override" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "" @@ -6246,7 +6404,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6254,13 +6412,13 @@ msgid "" "want to continue?" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "Mikrofon" @@ -6268,19 +6426,19 @@ msgstr "Mikrofon" msgid "Misc" msgstr "Çeşitli" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "Çeşitli Ayarlar" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6303,12 +6461,12 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6320,11 +6478,11 @@ msgstr "Monoskopik Gölgeler" msgid "Monospaced Font" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6364,10 +6522,10 @@ msgstr "Film" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "" @@ -6375,26 +6533,26 @@ msgstr "" msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "" @@ -6406,37 +6564,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "İsim:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "Orijinal (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6444,16 +6602,16 @@ msgstr "" msgid "Netherlands" msgstr "Hollanda" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "Netplay desenkronize oldu. Bundan kurtulmanın bir yolu yok." #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "Ağ" @@ -6474,11 +6632,11 @@ msgstr "" msgid "New" msgstr "Yeni" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "" @@ -6486,7 +6644,7 @@ msgstr "" msgid "New Tag..." msgstr "Yeni Etiket..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "Yeni kimlik oluşturuldu." @@ -6503,7 +6661,7 @@ msgstr "Yeni etiket" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6512,17 +6670,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "Kullanıcı Adı:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "" @@ -6530,6 +6688,10 @@ msgstr "" msgid "No Adapter Detected" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "" @@ -6540,24 +6702,20 @@ msgstr "" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "Eşleşme Yok" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "Bir Değer Verilmedi" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "Açıklama yok" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6569,15 +6727,15 @@ msgstr "" msgid "No file loaded / recorded." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "" @@ -6585,11 +6743,15 @@ msgstr "" msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6600,7 +6762,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6608,17 +6770,13 @@ msgstr "" msgid "No save data found." msgstr "" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6628,7 +6786,7 @@ msgstr "Hiçbiri" msgid "North America" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "" @@ -6636,11 +6794,11 @@ msgstr "" msgid "Not Set" msgstr "Ayarlanmamış" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6648,7 +6806,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6708,13 +6866,13 @@ msgstr "" msgid "Nunchuk Stick" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6727,11 +6885,11 @@ msgid "Oceania" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "Kapalı" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6743,17 +6901,17 @@ msgstr "" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "Çevrimiçi &Belgeler" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6768,7 +6926,7 @@ msgstr "Aç" msgid "Open &Containing Folder" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "Dizin Aç..." @@ -6816,7 +6974,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6834,7 +6992,7 @@ msgstr "Seçenekler" msgid "Orange" msgstr "Turuncu" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6842,7 +7000,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "Diğer" @@ -6855,11 +7013,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "Diğer oyun..." @@ -6867,12 +7025,12 @@ msgstr "Diğer oyun..." msgid "Overlay Information" msgstr "Kaplama Bilgisi" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -6897,7 +7055,7 @@ msgstr "" msgid "PPC Size" msgstr "PPC Boyutu" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6914,7 +7072,7 @@ msgstr "Kollar" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6923,23 +7081,23 @@ msgstr "" msgid "Parsing Error" msgstr "Ayrıştırma Hatası" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "Parola" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "Parola?" @@ -6960,7 +7118,7 @@ msgid "Path:" msgstr "Yol:" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "Yollar" @@ -6968,7 +7126,7 @@ msgstr "Yollar" msgid "Pause" msgstr "Duraklat" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "Filmin Sonunda Duraklat" @@ -6991,11 +7149,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "Piksel Aydınlatması" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "İnternet Üzerinden Sistem Güncellemesi Yap" @@ -7005,23 +7163,23 @@ msgstr "" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "" @@ -7034,7 +7192,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "Platform" @@ -7054,16 +7212,16 @@ msgstr "Çekimi Oynat" msgid "Playback Options" msgstr "Oynatma Seçenekleri" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "Oyuncular" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7074,29 +7232,29 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "Port:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "Post-Processing Efekti:" @@ -7108,15 +7266,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7155,7 +7313,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7166,15 +7324,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7182,25 +7340,25 @@ msgstr "" msgid "Problem" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "Profil" @@ -7214,15 +7372,15 @@ msgstr "" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7234,11 +7392,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "" @@ -7248,12 +7406,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "Soru" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "Çık" @@ -7273,11 +7431,11 @@ msgstr "R-Analog" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7290,44 +7448,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "Aralık" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "Oku ve yaz" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "Salt okunur" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "" @@ -7335,11 +7493,11 @@ msgstr "" msgid "Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "Gerçek Balance Board" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "Gerçek Wii Remote" @@ -7352,11 +7510,11 @@ msgstr "" msgid "Record" msgstr "Çek" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7381,7 +7539,7 @@ msgstr "Kırmızı Sol" msgid "Red Right" msgstr "Kırmızı Sağ" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7397,16 +7555,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "Yenile" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7414,26 +7572,26 @@ msgstr "" msgid "Refresh Game List" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "Bölge" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "" @@ -7453,16 +7611,16 @@ msgstr "" msgid "Remind Me Later" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "Kaldır" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7485,8 +7643,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "" @@ -7519,29 +7677,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "Sıfırla" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7549,15 +7715,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "Kaydedilen tüm Wii Remote eşleştirmelerini sıfırla" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7569,11 +7735,11 @@ msgstr "Yeniden Başlatma Gerekli" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "Tekrar Dene" @@ -7582,7 +7748,7 @@ msgstr "Tekrar Dene" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7640,11 +7806,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7653,12 +7819,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7668,11 +7835,11 @@ msgstr "" msgid "Rumble" msgstr "Gümbürtü" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7680,15 +7847,15 @@ msgstr "" msgid "Russia" msgstr "Rusya" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "SD Kart Yolu:" @@ -7704,7 +7871,7 @@ msgstr "" msgid "SHA-1:" msgstr "SHA-1:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "" @@ -7718,11 +7885,11 @@ msgstr "" msgid "START" msgstr "START TUŞU" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "&Durumu Kaydet" @@ -7732,7 +7899,7 @@ msgid "Safe" msgstr "Güvenli" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7745,7 +7912,7 @@ msgstr "Tümünü Kaydet" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7766,11 +7933,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7782,7 +7949,7 @@ msgstr "En Eski Durumu kaydet" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7832,23 +7999,23 @@ msgstr "8. Duruma Kaydet" msgid "Save State Slot 9" msgstr "9. Duruma Kaydet" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "Durumu Seçili Slot'a Kaydet" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "" @@ -7856,7 +8023,7 @@ msgstr "" msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "" @@ -7868,26 +8035,26 @@ msgstr "" msgid "Save as..." msgstr "Farklı kaydet..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "" @@ -7895,7 +8062,7 @@ msgstr "" msgid "Save to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "" @@ -7903,25 +8070,25 @@ msgstr "" msgid "Save..." msgstr "Kaydet..." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" "Kaydedilmiş Wii Remote eşleştirmeleri, yalnızca bir Wii oyunu açıkken " "sıfırlanabilir." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "Boyutlandırılmış EFB Kopyası" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7929,36 +8096,36 @@ msgstr "" msgid "ScrShot" msgstr "Ekran Görüntüsü" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "Ara" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "Adres Ara" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "Şu Anki Nesneyi Ara" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "Alt Klasörleri Ara" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "Bir talimat ara" @@ -7966,7 +8133,7 @@ msgstr "Bir talimat ara" msgid "Search games..." msgstr "Oyun ara..." -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "" @@ -7990,28 +8157,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "Seç" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -8019,11 +8186,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -8031,7 +8198,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "" @@ -8039,7 +8206,7 @@ msgstr "" msgid "Select State" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "Durum Yuvası Seç" @@ -8083,41 +8250,45 @@ msgstr "Durum Yuvası 8 Seç" msgid "Select State Slot 9" msgstr "Durum Yuvası 9 Seç" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "Wii NAND Kök Seç" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "Bir Dizin Seç" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "Bir Dosya Seç" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "Bir Oyun Seç" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "Bir SD Kart Kalıbı Seç" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "Bir oyun seç" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "" @@ -8125,11 +8296,11 @@ msgstr "" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8137,12 +8308,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "Kayıt dosyasını seçin" @@ -8158,15 +8329,15 @@ msgstr "" msgid "Selected Font" msgstr "" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "Seçilmiş kontrolcü profili yok" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8190,7 +8361,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8230,11 +8401,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "Gönder" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "Sensör Çubuğu Konumu:" @@ -8246,56 +8417,64 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "&Değeri Ayarla" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "PC'yi Ayarla" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8305,7 +8484,7 @@ msgstr "" "olarak ayarlar.\n" "Tüm oyunlarda çalışmayabilir." -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "Wii sistem dilini ayarlar." @@ -8315,7 +8494,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8350,11 +8529,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "&Günlüğü Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "Araç Çubuğunu Gös&ter" @@ -8362,15 +8541,15 @@ msgstr "Araç Çubuğunu Gös&ter" msgid "Show Active Title in Window Title" msgstr "Etkin Başlığı Pencere Başlığında Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "Avusturalya'yı Göster" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "Discord'da Mevcut Oyunu Göster" @@ -8378,7 +8557,7 @@ msgstr "Discord'da Mevcut Oyunu Göster" msgid "Show Debugging UI" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "ELF/DOL'u Göster" @@ -8386,43 +8565,43 @@ msgstr "ELF/DOL'u Göster" msgid "Show FPS" msgstr "FPS'yi Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "Kare Sayacını Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "Fransızları Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "GameCube'leri Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "Almanları göster" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "Görüntü Girişini Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "İtalyanları Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "Korelileri Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "Takılma Sayacını Göster" @@ -8430,7 +8609,7 @@ msgstr "Takılma Sayacını Göster" msgid "Show Language:" msgstr "Dili Göster:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "Geçmiş &Yapılandırmasını Göster" @@ -8442,7 +8621,7 @@ msgstr "NetPlay Mesajlarını Göster" msgid "Show NetPlay Ping" msgstr "NetPlay Ping'ini Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "Hollanda'yı Göster" @@ -8450,7 +8629,7 @@ msgstr "Hollanda'yı Göster" msgid "Show On-Screen Display Messages" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "PAL'ları Göster" @@ -8459,23 +8638,23 @@ msgstr "PAL'ları Göster" msgid "Show PC" msgstr "PC'yi Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "Platformları Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "Bölgeleri Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "Rusya'yı Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "İspanya'yı Göster" @@ -8484,46 +8663,50 @@ msgstr "İspanya'yı Göster" msgid "Show Statistics" msgstr "İstatistikleri Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "Sistem Saatini Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "Tayvanlıları Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "Amerikanları Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "Bilinmeyenleri Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "WAD'ları Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "Wii'leri Göster" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "Dünyayı Göster" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8555,7 +8738,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "" @@ -8571,16 +8754,31 @@ msgstr "" msgid "Sideways Wii Remote" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Basitleştirilmiş Çince" @@ -8588,7 +8786,7 @@ msgstr "Basitleştirilmiş Çince" msgid "Simulate DK Bongos" msgstr "DK Bongos'u Taklit Et" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8617,7 +8815,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "CPU'dan EFB'ye erişimi atla" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "Ana Menü'yü Atla" @@ -8625,7 +8823,7 @@ msgstr "Ana Menü'yü Atla" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8639,19 +8837,19 @@ msgstr "" msgid "Slider Bar" msgstr "Kaydırma Çubuğu" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "Slot A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "Yuva A:" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "Slot B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "Yuva B:" @@ -8669,7 +8867,7 @@ msgstr "" msgid "Software Renderer" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8686,11 +8884,11 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "Alfabetik Sırala" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "Ses:" @@ -8703,8 +8901,8 @@ msgid "Spain" msgstr "İspanya" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "İspanyolca" @@ -8712,7 +8910,7 @@ msgstr "İspanyolca" msgid "Speaker Pan" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "Hoparlör Ses Seviyesi:" @@ -8747,7 +8945,7 @@ msgstr "Hız" msgid "Speed up Disc Transfer Rate" msgstr "Disk Aktarım Oranını hızlandır" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "" @@ -8759,16 +8957,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "Standart Denetleyici" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Başlat" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "&Netplay'i Başlat..." @@ -8776,11 +8974,13 @@ msgstr "&Netplay'i Başlat..." msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "Çekimi Başlat" @@ -8796,7 +8996,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "" @@ -8807,7 +9007,7 @@ msgstr "" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "Direksiyon" @@ -8835,19 +9035,19 @@ msgstr "" msgid "Step Over" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "" @@ -8856,20 +9056,20 @@ msgstr "" msgid "Stepping" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "Stereoskopik 3D Modu:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "Stereoskopi" @@ -8890,11 +9090,15 @@ msgstr "Çubuk" msgid "Stop" msgstr "Durdur" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "" @@ -8908,7 +9112,7 @@ msgstr "EFB Kopyalarını Sadece Dokuya Kaydet" msgid "Store XFB Copies to Texture Only" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8917,7 +9121,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8930,7 +9134,7 @@ msgstr "" msgid "Stretch to Window" msgstr "Pencereye Göre Ayarla" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "" @@ -8953,16 +9157,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -8972,11 +9176,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -8985,7 +9189,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "" @@ -8997,12 +9201,12 @@ msgstr "" msgid "Successfully extracted system data." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "" @@ -9014,16 +9218,16 @@ msgstr "" msgid "Support" msgstr "Destek" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -9031,11 +9235,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9047,50 +9251,62 @@ msgstr "" msgid "Swing" msgstr "Hareket" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "Sembol" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "Semboller" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "Senkronize Et" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "Gerçek Wii Remote'ları senkronize edin ve onları eşleştirin" @@ -9104,37 +9320,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "Sistem Dili:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "TAS Girişi" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "TAS Araçları" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "Etiketler" @@ -9152,11 +9368,11 @@ msgstr "" msgid "Taiwan" msgstr "Tayvan" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "Ekran Görüntüsü Al" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "Sınama" @@ -9165,7 +9381,7 @@ msgstr "Sınama" msgid "Texture Cache" msgstr "Doku Önbelleği" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9187,7 +9403,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9201,13 +9417,13 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "" @@ -9243,7 +9459,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9257,7 +9473,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "Takılacak olan disk bulunamadı." -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9279,19 +9495,19 @@ msgstr "Sanal Wii konsolu zaten güncel." msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "Girilen PID geçersiz." -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "Girilen VID geçersiz." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9341,7 +9557,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9352,7 +9568,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9369,7 +9585,7 @@ msgstr "" msgid "The hashes match!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9391,12 +9607,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9411,20 +9627,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "Ortaya çıkan şifresi çözülmüş AR kodu herhangi bir satır içermiyor." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9445,7 +9661,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9498,7 +9714,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "Geri alacak hiçbirşey yok!" @@ -9538,7 +9754,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "Bu USB aygıtı zaten beyaz listeye eklenmiş." @@ -9557,7 +9773,7 @@ msgid "" msgstr "" "Bu Action Replay simülatörü, kodların kendisini düzenlemesini desteklemiyor." -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "" @@ -9597,7 +9813,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "" @@ -9618,27 +9838,27 @@ msgstr "" "grafik kartınız veya sürücünüz bunu desteklemiyor. Sonuç olarak, oyunu " "oynarken hata ve donma sorunları ile karşılaşacaksınız." -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9695,13 +9915,13 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "Bu değer, grafik yapılandırmasında ayarlanan derinlik ile çarpılır." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9721,7 +9941,7 @@ msgstr "" msgid "Threshold" msgstr "Eşik" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "" @@ -9738,22 +9958,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "Başlık" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "Buraya" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "&Tam Ekran Moduna Geç" @@ -9778,7 +9998,7 @@ msgid "Toggle Aspect Ratio" msgstr "En-boy Oranını Aç/Kapat" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "Kesim Noktasını Aç/Kapat" @@ -9838,14 +10058,20 @@ msgstr "" msgid "Toolbar" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "Üst" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "Üst-ve-Alt" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9880,20 +10106,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Geleneksel Çince" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "Geçiş Sunucusu" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "Geçiş sunucusunun ana bilgisayar bağlantısı zaman aşımına uğradı" @@ -9923,20 +10149,12 @@ msgstr "Tetikler" msgid "Type" msgstr "Tür" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9953,9 +10171,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -9983,10 +10201,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10003,7 +10225,11 @@ msgid "" "Would you like to ignore this line and continue parsing?" msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -10015,15 +10241,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "Durum Yüklemeyi Geri Al" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "Durum Kaydetmeyi Geri Al" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "Kaldır" @@ -10039,18 +10265,18 @@ msgstr "" "Yüklü olan WAD dosyası, herhangi bir kayıt verisi silinmeden NAND'dan " "kaldırılacaktır. Devam edilsin mi?" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "ABD" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "Bilinmeyen" @@ -10058,7 +10284,7 @@ msgstr "Bilinmeyen" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10068,7 +10294,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10078,15 +10304,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10094,19 +10320,19 @@ msgstr "" msgid "Unknown disc" msgstr "Bilinmeyen disk" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10114,7 +10340,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "Sınırsız" @@ -10130,13 +10356,28 @@ msgstr "" msgid "Unpacking" msgstr "Açma" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10145,7 +10386,7 @@ msgstr "Yukarı" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "Güncelle" @@ -10200,7 +10441,7 @@ msgstr "" msgid "Upright Wii Remote" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "İstatistik Raporlama Ayarları" @@ -10216,7 +10457,7 @@ msgstr "" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "PAL60 Modunu Kullan (EuRGB60)" @@ -10243,18 +10484,40 @@ msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" "İki göz için tek bir derinlik aralığı kullanır. Bazı oyunlar için gereklidir." -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "Kullanıcı Yapılandırması" @@ -10267,18 +10530,18 @@ msgstr "Kullanıcı Arayüzü" msgid "User Style:" msgstr "Kullanıcı Stili:" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10304,23 +10567,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10333,7 +10596,7 @@ msgstr "Gereçler" msgid "V-Sync" msgstr "Dikey Eşitleme" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "Değer" @@ -10366,8 +10629,8 @@ msgstr "" msgid "Verifying" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "Sürüm" @@ -10403,7 +10666,7 @@ msgstr "&Hafızayı görüntüle" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10430,7 +10693,7 @@ msgstr "Sesi Yükselt" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "WAD dosyaları (*.wad)" @@ -10480,7 +10743,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10488,8 +10751,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10511,7 +10774,7 @@ msgid "" "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10524,10 +10787,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "Uyarı" @@ -10543,28 +10806,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10590,7 +10853,7 @@ msgstr "" msgid "Watch" msgstr "İzle" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "" @@ -10619,11 +10882,11 @@ msgid "" "unsure, leave this checked." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "Beyaz Listeye Alınmış USB Geçiş Aygıtları" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "Geniş Ekran Hilesi" @@ -10639,11 +10902,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Wii Menüsü" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Wii NAND Kök Dizini:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Wii Remote" @@ -10651,8 +10914,8 @@ msgstr "Wii Remote" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "" @@ -10665,11 +10928,11 @@ msgstr "" msgid "Wii Remote Orientation" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Wii Remote Ayarları" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Wii Remote Kontrolcüleri" @@ -10685,7 +10948,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "Wii ve Wii Remote" @@ -10693,7 +10956,7 @@ msgstr "Wii ve Wii Remote" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "" @@ -10721,18 +10984,18 @@ msgid "World" msgstr "Dünya" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "Sadece yazma" @@ -10745,12 +11008,12 @@ msgid "Write to File" msgstr "Dosyaya Yaz" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "" @@ -10758,7 +11021,7 @@ msgstr "" msgid "Write to Window" msgstr "Pencereye Yaz" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10769,7 +11032,7 @@ msgstr "" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "XF kaydı " @@ -10798,8 +11061,8 @@ msgid "Yellow" msgstr "Sarı" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "" @@ -10834,7 +11097,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10867,11 +11130,11 @@ msgstr "" msgid "You have to enter a name." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10879,7 +11142,7 @@ msgstr "" msgid "You must restart Dolphin in order for the change to take effect." msgstr "Değişikliğin etkili olması için Dolphin'i yeniden başlatmalısınız." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "" @@ -10910,23 +11173,23 @@ msgstr "Sıfır 3 kodu desteklenmemektedir" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10945,13 +11208,13 @@ msgstr "" msgid "d3d12.dll could not be loaded." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -10967,31 +11230,31 @@ msgstr "" msgid "fake-completion" msgstr "sahte-tamamlama" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -11021,7 +11284,7 @@ msgstr "" msgid "on" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "ya da bir aygıt seçin" @@ -11030,7 +11293,7 @@ msgstr "ya da bir aygıt seçin" msgid "s" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -11039,7 +11302,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -11058,7 +11321,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -11077,7 +11340,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11085,7 +11348,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Languages/po/zh_CN.po b/Languages/po/zh_CN.po index ec7e2c7f8532..dad96acd582e 100644 --- a/Languages/po/zh_CN.po +++ b/Languages/po/zh_CN.po @@ -20,9 +20,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-22 03:04+0000\n" -"Last-Translator: 天绝星 \n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: 天绝星 , 2015-2022\n" "Language-Team: Chinese (China) (http://www.transifex.com/delroth/dolphin-emu/" "language/zh_CN/)\n" "Language: zh_CN\n" @@ -31,7 +31,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -43,7 +43,7 @@ msgstr "" "由于 GameCube 光盘镜像包含很少的验证数据,因此可能存在 Dolphin 无法检测到的问" "题。" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -54,7 +54,7 @@ msgstr "" "\n" "由于此游戏不适用于 Wii 零售版主机,因此 Dolphin 无法验证其是否未被篡改。" -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -77,7 +77,7 @@ msgstr "" msgid " (Disc %1)" msgstr " (光盘 %1)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "! 非" @@ -85,7 +85,7 @@ msgstr "! 非" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "“{0}” 不是一个有效的 GCM/ISO 文件,或者不是一个 GC/Wii 镜像。" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "$ 用户变量 " @@ -99,7 +99,7 @@ msgstr "$ 用户变量 " msgid "%" msgstr "%" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "% 模除" @@ -115,17 +115,17 @@ msgstr "" msgid "%1 %" msgstr "%1 %" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "%1 %2" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "%1 %2 %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "%1 (%2)" @@ -144,7 +144,7 @@ msgid "%1 (Revision %3)" msgstr "%1 (修订版 %3)" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "%1 (库)" @@ -184,7 +184,7 @@ msgstr "%1 MB (内存2)" msgid "%1 doesn't support this feature on your system." msgstr "%1 在你的系统上不支持此特性。" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "%1 不支持此特性。" @@ -198,23 +198,23 @@ msgstr "" "%2 对象\n" "当前帧: %3" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "%1 已加入" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "%1 已离开" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "%1 不是有效的 ROM" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "%1 控制中" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "%1 内存范围" @@ -223,11 +223,11 @@ msgstr "%1 内存范围" msgid "%1 ms" msgstr "%1 毫秒" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "已找到 %1 个会话" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "已找到 %1 个会话" @@ -239,15 +239,15 @@ msgstr "%1%" msgid "%1% (%2 MHz)" msgstr "%1% (%2 MHz)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "%1%(正常速度)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "%1, %2, %3, %4" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "%1: %2" @@ -263,30 +263,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "%1[%2]: %3/%4 MiB" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "%1x 原生 (%2x%3)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "%n 个地址无法在模拟内存中访问。" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "%n 个地址保留。" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "%n 个地址已移除。" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "& 与" @@ -306,7 +306,7 @@ msgstr "&3x" msgid "&4x" msgstr "&4x" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "关于(&A)" @@ -315,11 +315,11 @@ msgid "&Add Memory Breakpoint" msgstr "添加内存断点(&A)" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "添加新代码...(&A)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "添加函数(&A)" @@ -327,19 +327,19 @@ msgstr "添加函数(&A)" msgid "&Add..." msgstr "添加...(&A)" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "音频设置(&A)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "自动更新(&A):" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "自动开始游戏(&A)" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "从 DVD 备份中启动(&B)" @@ -347,11 +347,11 @@ msgstr "从 DVD 备份中启动(&B)" msgid "&Borderless Window" msgstr "无边框窗口(&B)" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "断点(&B)" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "错误跟踪器(&B)" @@ -359,15 +359,15 @@ msgstr "错误跟踪器(&B)" msgid "&Cancel" msgstr "取消(&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "金手指管理器(&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "检查更新...(&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "清除符号(&C)" @@ -375,7 +375,7 @@ msgstr "清除符号(&C)" msgid "&Clone..." msgstr "克隆...(&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "代码(&C)" @@ -383,19 +383,20 @@ msgstr "代码(&C)" msgid "&Connected" msgstr "连接(&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "控制器设置(&C)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "复制地址(&C)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "创建...(&C)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "删除(&D)" @@ -407,7 +408,7 @@ msgstr "删除监视(&D)" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "编辑代码...(&E)" @@ -415,11 +416,11 @@ msgstr "编辑代码...(&E)" msgid "&Edit..." msgstr "编辑...(&E)" -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "弹出光盘(&E)" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "模拟(&E)" @@ -431,43 +432,47 @@ msgstr "导出游戏存档...(&E)" msgid "&Export State..." msgstr "导出状态...(&E)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "导出为 .gci...(&E)" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "文件(&F)" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "字体...(&F)" -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "逐帧播放(&F)" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "自由视点设置(&F)" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "生成符号来自(&G)" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "GitHub 资源库(&G)" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "转到函数起始位置(&G)" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "图形设置(&G)" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "帮助(&H)" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "热键设置(&H)" @@ -479,11 +484,11 @@ msgstr "导入游戏存档...(&I)" msgid "&Import State..." msgstr "导入状态...(&I)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "导入...(&I)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "插入 blr (&I)" @@ -491,7 +496,7 @@ msgstr "插入 blr (&I)" msgid "&Interframe Blending" msgstr "帧间混合(&I)" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "即时编译器(&J)" @@ -499,23 +504,23 @@ msgstr "即时编译器(&J)" msgid "&Language:" msgstr "语言(&L):" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "载入状态(&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "载入符号映射(&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "锁定部件位置(&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "内存(&M)" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "影片(&M)" @@ -523,7 +528,7 @@ msgstr "影片(&M)" msgid "&Mute" msgstr "静音(&M)" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "网络(&N)" @@ -531,24 +536,24 @@ msgstr "网络(&N)" msgid "&No" msgstr "否(&N)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "打开...(&O)" -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "选项(&O)" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "修补 HLE 功能函数(&P)" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "暂停游戏(&P)" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "开始游戏(&P)" @@ -556,11 +561,11 @@ msgstr "开始游戏(&P)" msgid "&Properties" msgstr "属性(&P)" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "只读模式(&R)" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "寄存器(&R)" @@ -569,24 +574,24 @@ msgid "&Remove" msgstr "移除(&R)" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "移除代码(&R)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "重命名符号(&R)" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "重置游戏(&R)" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "资源包管理器(&R)" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "保存符号映射(&S)" @@ -594,11 +599,11 @@ msgstr "保存符号映射(&S)" msgid "&Scan e-Reader Card(s)..." msgstr "扫描 e-Reader 卡...(&S)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "速度限制(&S):" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "停止游戏(&S)" @@ -606,11 +611,11 @@ msgstr "停止游戏(&S)" msgid "&Theme:" msgstr "主题(&T):" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "线程(&T)" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "工具(&T)" @@ -618,17 +623,17 @@ msgstr "工具(&T)" msgid "&Unload ROM" msgstr "卸载 ROM (&U)" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "视图(&V)" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "监视(&W)" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "网站(&W)" @@ -640,11 +645,11 @@ msgstr "百科(&W)" msgid "&Yes" msgstr "是(&Y)" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "找不到 '%1',未生成符号名" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "找不到 '%1',改为扫描常用函数" @@ -656,7 +661,7 @@ msgstr "(无)" msgid "(host)" msgstr "(主机)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(关)" @@ -664,34 +669,34 @@ msgstr "(关)" msgid "(ppc)" msgstr "(ppc)" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "* 乘" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "+ 加" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr ", 逗号" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "- 减" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "--> %1" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "..." -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "/ 除" @@ -699,6 +704,10 @@ msgstr "/ 除" msgid "128 Mbit (2043 blocks)" msgstr "128 Mbit (2043 区块)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "16 Mbit (251 区块)" @@ -707,35 +716,35 @@ msgstr "16 Mbit (251 区块)" msgid "16-bit" msgstr "16位" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "16 位有符号整数" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "16 位无符号整数" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "16x" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "1x" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "2x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "2x 原生 (1280x1056) 适合 720p" @@ -747,25 +756,25 @@ msgstr "32 Mbit (507 区块)" msgid "32-bit" msgstr "32位" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "32 位浮点数" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "32 位有符号整数" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "32 位无符号整数" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "3D" @@ -779,28 +788,32 @@ msgstr "3D 深度" msgid "3x" msgstr "3x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "3x 原生 (1920x1584) 适合 1080p" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "4 Mbit (59 区块)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "4:3" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "4x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "4x 原生 (2560x2112) 适合 1440p" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "5x 原生 (3200x2640)" @@ -808,29 +821,33 @@ msgstr "5x 原生 (3200x2640)" msgid "64 Mbit (1019 blocks)" msgstr "64 Mbit (1019 区块)" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "64 位浮点数" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "64 位有符号整数" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "64 位无符号整数" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "6x 原生 (3840x3168) 适合 4K" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "7x 原生 (4480x3696)" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "8 Mbit (123 区块)" @@ -839,25 +856,25 @@ msgstr "8 Mbit (123 区块)" msgid "8-bit" msgstr "8位" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "8 位有符号整数" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "8 位无符号整数" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "8x" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "8x 原生 (5120x4224) 适合 5K" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "< 小于" @@ -878,12 +895,12 @@ msgstr "" "

有新版的 Dolphin 可用

现在可以下载 Dolphin %1。你正在运行 %2。
是" "否更新?

发布说明:

" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "> 大于" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "已经有一个联机会话正在进行!" @@ -907,11 +924,11 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "光盘已可插入。" -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "载入保存状态必须指定要启动的游戏" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" @@ -919,7 +936,7 @@ msgstr "" "关闭命令已在进行中。如果在程序完成前停止当前模拟则未保存的数据会丢失。强制停" "止?" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "只有在 Wii 游戏运行时同步才能触发。" @@ -928,7 +945,7 @@ msgstr "只有在 Wii 游戏运行时同步才能触发。" msgid "AD16" msgstr "AD16" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -962,8 +979,8 @@ msgstr "AR 代码" msgid "AR Codes" msgstr "AR 代码" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "ASCII" @@ -986,7 +1003,7 @@ msgstr "加速度计" msgid "Accuracy:" msgstr "精确度:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "操作" @@ -1094,9 +1111,9 @@ msgstr "检测到适配器" msgid "Adapter:" msgstr "适配器:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "添加" @@ -1104,11 +1121,11 @@ msgstr "添加" msgid "Add &breakpoint" msgstr "添加断点(&B)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "添加新的 DSU 服务器" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "添加新的 USB 设备" @@ -1140,46 +1157,49 @@ msgstr "添加内存断点" msgid "Add to &watch" msgstr "添加到监视(&W)" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "添加到监视" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "添加..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "地址" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "地址空间" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "按 CPU 状态划分的地址空间" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "地址:" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1237,39 +1257,43 @@ msgstr "高级" msgid "Africa" msgstr "非洲" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "与数据类型长度对齐" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "所有文件" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "所有文件 (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "所有 GC/Wii 文件" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "所有状态存档 (*.sav *.s##);; 所有文件 (*)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "所有设备" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "所有玩家代码已同步。" @@ -1278,19 +1302,19 @@ msgstr "所有玩家代码已同步。" msgid "All players' saves synchronized." msgstr "所有玩家存档已同步。" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "允许不匹配的区域设置" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "允许使用情况统计报告" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "允许写入 SD 卡" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." @@ -1298,7 +1322,7 @@ msgstr "" "允许操纵游戏中的镜头。

如果不确定,请不要勾选此项。" "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1324,7 +1348,7 @@ msgstr "总在最前(&T)" msgid "An inserted disc was expected but not found." msgstr "光盘预计已插入但无法找到。" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "色差" @@ -1342,39 +1366,39 @@ msgstr "角度" msgid "Angular velocity to ignore and remap." msgstr "要忽略并重新映射的角速度。" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "各向异性过滤" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "各向异性过滤:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "抗锯齿" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "抗锯齿:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "任意区域" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "附加签名到" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "附加到现有签名文件...(&E)" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "应用签名文件...(&Y)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1390,15 +1414,15 @@ msgstr "应用载入器时间:" msgid "Apply" msgstr "应用" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "应用签名文件" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "特殊多级纹理检测" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "确定要删除 '%1' 吗?" @@ -1406,11 +1430,11 @@ msgstr "确定要删除 '%1' 吗?" msgid "Are you sure you want to delete this file?" msgstr "确定要删除该文件吗?" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "确定要删除这个包吗?" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "确定要退出联机吗?" @@ -1423,11 +1447,11 @@ msgid "Aspect Ratio" msgstr "长宽比" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "长宽比:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "指定控制器端口" @@ -1435,7 +1459,7 @@ msgstr "指定控制器端口" msgid "Assign Controllers" msgstr "指定控制器" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "至少有两个选定的存档文件具有相同的内部文件名。" @@ -1460,7 +1484,7 @@ msgstr "音频伸缩设置" msgid "Australia" msgstr "澳大利亚" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "作者" @@ -1472,15 +1496,15 @@ msgstr "作者" msgid "Auto" msgstr "自动" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "自动(640x528 的倍数)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "自动更新设置" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1499,7 +1523,7 @@ msgstr "自动调整窗口大小" msgid "Auto-Hide" msgstr "自动隐藏" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "自动检测 RSO 模块?" @@ -1512,12 +1536,12 @@ msgstr "" "勾选此项。" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "副内存" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "B" @@ -1534,11 +1558,11 @@ msgstr "" "BBA MAC 地址 {0} 对于 XLink Kai 无效。必须使用有效的任天堂 GameCube MAC 地" "址。 生成一个以 00:09:bf 或 00:17:ab 开头的新 MAC 地址。" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "BIOS:" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "BP 寄存器" @@ -1564,7 +1588,7 @@ msgstr "后端设置" msgid "Backend:" msgstr "后端:" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "后台输入" @@ -1575,7 +1599,13 @@ msgstr "后台输入" msgid "Backward" msgstr "后" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "给定值错误" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "地址格式不正确。" @@ -1583,19 +1613,20 @@ msgstr "地址格式不正确。" msgid "Bad dump" msgstr "错误的转储" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "提交的偏移量不正确。" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "值格式不正确。" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "标图" @@ -1619,7 +1650,7 @@ msgstr "基本优先级" msgid "Basic" msgstr "基本" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "基本设置" @@ -1627,7 +1658,7 @@ msgstr "基本设置" msgid "Bass" msgstr "低音" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "使用批处理模式必须指定要启动的游戏" @@ -1635,11 +1666,11 @@ msgstr "使用批处理模式必须指定要启动的游戏" msgid "Battery" msgstr "电池" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "体验版(每月一次)" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "BetterJoy,DS4Windows,等" @@ -1661,7 +1692,7 @@ msgstr "比特率 (kbps):" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "区块大小" @@ -1674,7 +1705,7 @@ msgstr "区块大小:" msgid "Blocking" msgstr "屏蔽" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "区块" @@ -1698,15 +1729,15 @@ msgid "" msgstr "" "蓝牙直通模式已启用,但 Dolphin 构建没有加入 libusb 驱动。无法使用直通模式。" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "引导后暂停" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "BootMii NAND 备份文件 (*.bin);; 所有文件 (*)" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "BootMii 密钥文件 (*.bin);; 所有文件 (*)" @@ -1714,7 +1745,7 @@ msgstr "BootMii 密钥文件 (*.bin);; 所有文件 (*)" msgid "Borderless Fullscreen" msgstr "无边框全屏" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "底部" @@ -1728,7 +1759,7 @@ msgid "Branches" msgstr "分支" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "中断" @@ -1737,7 +1768,7 @@ msgstr "中断" msgid "Breakpoint" msgstr "断点" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "遇到断点!跳出已中止。" @@ -1767,7 +1798,7 @@ msgstr "宽带适配器错误" msgid "Broadband Adapter MAC Address" msgstr "宽带适配器 MAC 地址" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "浏览联机会话...(&N)" @@ -1775,12 +1806,12 @@ msgstr "浏览联机会话...(&N)" msgid "Buffer Size:" msgstr "缓冲区大小:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "缓冲区大小更改为 %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "缓冲区:" @@ -1824,11 +1855,11 @@ msgstr "按键" msgid "C Stick" msgstr "C 摇杆" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "创建签名文件...(&R)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "CP 寄存器" @@ -1862,7 +1893,7 @@ msgstr "" msgid "Calculate" msgstr "计算" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1885,15 +1916,15 @@ msgstr "校准" msgid "Calibration Period" msgstr "校准周期" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "调用位于 %1 大小为 %2 的显示列表" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "调用堆栈" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "镜头 1" @@ -1903,7 +1934,7 @@ msgstr "镜头 1" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "镜头视野(影响指向的灵敏度)。" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "只能为虚拟内存中的数值生成 AR 代码。" @@ -1911,16 +1942,16 @@ msgstr "只能为虚拟内存中的数值生成 AR 代码。" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "不能按照连接句柄 {0:02x} 找到 Wii 遥控器" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "游戏运行时无法启动联机会话!" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "取消" @@ -1937,23 +1968,23 @@ msgstr "无法单步执行 FIFO,使用帧步进代替。" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "无法启动此 WAD,因为无法将其安装到 NAND 中。" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "无法与首次搜索的上个值进行比较。" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "找不到 GC IPL。" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "无法为此地址生成 AR 代码。" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "没有结果下无法刷新。" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "找不到 GC IPL,无法启动游戏。" @@ -1975,7 +2006,7 @@ msgstr "中心和校准" msgid "Change &Disc" msgstr "切换光盘(&D)" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "切换光盘...(&D)" @@ -1983,15 +2014,15 @@ msgstr "切换光盘...(&D)" msgid "Change Disc" msgstr "切换光盘" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "自动切换光盘" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "切换光盘至 {0}" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -2016,7 +2047,7 @@ msgstr "游戏重启后更改的金手指才会生效。" msgid "Channel Partition (%1)" msgstr "通道分区 (%1)" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "聊天" @@ -2032,11 +2063,11 @@ msgstr "金手指搜索" msgid "Cheats Manager" msgstr "金手指管理器" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "校验 NAND..." -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "在后台检查游戏列表变更" @@ -2050,7 +2081,7 @@ msgid "" "whether it's still in use." msgstr "请检查您是否有删除该文件的权限以及其是否仍在使用。" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "校验" @@ -2058,16 +2089,16 @@ msgstr "校验" msgid "China" msgstr "中国" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "选择要打开的文件" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "选择优先输入文件" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "选择次要输入文件" @@ -2090,14 +2121,14 @@ msgid "Classic Controller" msgstr "传统控制器" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "清除" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "清除缓存" @@ -2114,28 +2145,47 @@ msgstr "复制并编辑代码...(&E)" msgid "Close" msgstr "关闭" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "程序设置(&N)" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "代码" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "代码差异工具" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "代码差异工具帮助" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "代码未执行" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "代码已执行" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "代码:" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "代码已接收!" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "合并两个签名文件...(&T)" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "通用" @@ -2153,7 +2203,7 @@ msgstr "正在编译着色器" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "压缩" @@ -2166,7 +2216,7 @@ msgstr "压缩级别:" msgid "Compression:" msgstr "压缩:" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "条件" @@ -2178,13 +2228,13 @@ msgstr "条件" msgid "Config" msgstr "设置" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "配置" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "配置控制器" @@ -2192,21 +2242,21 @@ msgstr "配置控制器" msgid "Configure Dolphin" msgstr "Dolphin 配置" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "配置输入" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "配置输出" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "确定" @@ -2219,26 +2269,26 @@ msgstr "确认改变后端" msgid "Confirm on Stop" msgstr "停止游戏时确认" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "确认" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "连接" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "连接平衡板" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "连接 USB 键盘" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "连接 Wii 遥控器 %1" @@ -2258,11 +2308,11 @@ msgstr "连接 Wii 遥控器 3" msgid "Connect Wii Remote 4" msgstr "连接 Wii 遥控器 4" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "连接 Wii 遥控器" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "连接用于模拟控制器的 Wii 遥控器" @@ -2274,15 +2324,19 @@ msgstr "是否连接到互联网并执行在线系统更新?" msgid "Connected" msgstr "已连接" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "正在连接" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "连接类型:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "内容 {0:08x} 已损坏。" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "持续扫描" @@ -2295,7 +2349,7 @@ msgstr "控制联机高尔夫模式" msgid "Control Stick" msgstr "控制摇杆" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "控制器预设" @@ -2323,7 +2377,7 @@ msgstr "控制器设置" msgid "Controllers" msgstr "控制器" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2333,7 +2387,7 @@ msgstr "" "控制会聚平面的距离。即虚拟物体看起来出现在屏幕前方的距离。

数值越高凸" "出屏幕效果越强,而数值越低观感会越舒适。" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2345,7 +2399,7 @@ msgstr "" "GPU 负荷且可能在一些游戏中引起故障。一般而言,内部分辨率越低,性能将越高。" "

如果不确定,请选择“原生”。" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2373,12 +2427,12 @@ msgid "" "True" msgstr "控制使用高级还是低级 DSP 模拟。默认值为 True" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "会聚" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "会聚:" @@ -2419,33 +2473,38 @@ msgstr "" "正在转换...\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "复制" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "复制函数(&F)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "复制十六进制(&H)" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "复制地址" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "复制失败" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "复制十六进制" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "复制代码行(&L)" @@ -2453,11 +2512,15 @@ msgstr "复制代码行(&L)" msgid "Copy failed" msgstr "复制失败" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "复制目标地址(&G)" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "复制到 A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "复制到 B" @@ -2472,16 +2535,16 @@ msgstr "核心" msgid "Cost" msgstr "开销" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "无法与主机通信。" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "无法创建客户端。" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "无法创建对等点。" @@ -2582,15 +2645,15 @@ msgstr "" "您是否是在移动模拟器目录后收到这个消息?\n" "如果是这样,您可能需要在选项中重新指定您的存储卡位置。" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "无法查找中心服务器" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "无法打开文件。" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "无法读取文件。" @@ -2620,7 +2683,7 @@ msgstr "" "

如果不确定,请不要勾选此项。" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "创建者:" @@ -2645,11 +2708,11 @@ msgstr "" msgid "Crossfade" msgstr "混音" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "当前区域" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "当前值" @@ -2657,7 +2720,7 @@ msgstr "当前值" msgid "Current context" msgstr "当前上下文" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "当前游戏" @@ -2665,7 +2728,7 @@ msgstr "当前游戏" msgid "Current thread" msgstr "当前线程" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "自定义地址空间" @@ -2696,7 +2759,7 @@ msgstr "DFF 文件大小为 0;损坏或不完整的文件?" msgid "DJ Turntable" msgstr "打碟机" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "DK 小对鼓" @@ -2724,7 +2787,7 @@ msgstr "音频 LLE 重编译器(较慢)" msgid "DSU Client" msgstr "DSU 客户端" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2735,11 +2798,11 @@ msgstr "" "器的输入与体感数据。

配置方法
参见此页。" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "跳舞毯" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "数据" @@ -2751,28 +2814,27 @@ msgstr "数据分区 (%1)" msgid "Data Transfer" msgstr "数据传输" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "数据类型" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "文件中本应未被使用的区域存在数据。" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "数据格式无法识别或损坏。" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "GC 存储卡管理器中的数据不一致,正在中止操作。" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "数据已接收!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "Datel MaxDrive/Pro 文件" @@ -2790,7 +2852,7 @@ msgid "Debug Only" msgstr "调试专用" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "调试" @@ -2832,7 +2894,7 @@ msgstr "减小 X" msgid "Decrease Y" msgstr "减小 Y" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "默认" @@ -2848,7 +2910,7 @@ msgstr "默认设备" msgid "Default Font" msgstr "默认字体" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "默认镜像:" @@ -2876,7 +2938,7 @@ msgstr "" "存失效。

可能提高一些依靠 CPU EFB 访问游戏的性能,但会牺牲稳定性。" "

如果不确定,请不要勾选此项。" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2891,11 +2953,11 @@ msgid "Delete Selected Files..." msgstr "删除所选文件..." #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "删除已经存在的文件 ‘{0}’ 吗?" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "深度" @@ -2903,21 +2965,21 @@ msgstr "深度" msgid "Depth Percentage:" msgstr "深度百分比:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "深度:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "说明" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "说明:" @@ -2926,11 +2988,11 @@ msgstr "说明:" msgid "Detached" msgstr "分离的" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "检测" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "正在检测 RSO 模块" @@ -2938,25 +3000,25 @@ msgstr "正在检测 RSO 模块" msgid "Deterministic dual core:" msgstr "确定性双核:" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "开发版(一天多次)" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "设备" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "设备 PID (例如: 0305)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "设备设置" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "设备 VID (例如: 057e)" @@ -2968,11 +3030,15 @@ msgstr "设备:" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "无法将 %1 识别为有效的 Riivolution XML 文件。" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "差异" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "五分钟非活动状态后变暗屏幕。" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "直接连接" @@ -3007,7 +3073,7 @@ msgstr "禁用" msgid "Disable Bounding Box" msgstr "禁用边界框" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "禁用复制过滤" @@ -3019,15 +3085,15 @@ msgstr "禁用 EFB VRAM 副本" msgid "Disable Emulation Speed Limit" msgstr "禁用模拟速度限制" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "禁用快速内存" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "禁用雾化" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "禁用 JIT 缓存" @@ -3035,7 +3101,7 @@ msgstr "禁用 JIT 缓存" msgid "Disabled" msgstr "禁用" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -3053,7 +3119,7 @@ msgstr "" "禁用 VRAM 中的 EFB 副本,而强制从 RAM 中读取。所有放大将不可用。" "

如果不确定,请不要勾选此项。" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -3073,11 +3139,15 @@ msgstr "光盘" msgid "Discard" msgstr "丢弃" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "以十六进制显示值" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -3098,25 +3168,25 @@ msgstr "距离" msgid "Distance of travel from neutral position." msgstr "从中间位置移动的距离。" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "是否授权 Dolphin 向开发者报告信息?" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "是否要添加 \"%1\" 到游戏路径列表?" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "你是否要清除符号名称列表?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "是否要删除 %n 已选定的存档文件?" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "您确定是否停止当前模拟?" @@ -3133,9 +3203,9 @@ msgstr "Dolphin FIFO 日志 (*.dff)" msgid "Dolphin Game Mod Preset" msgstr "Dolphin 游戏模组预设" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "Dolphin 映射文件 (*.map)" @@ -3147,8 +3217,8 @@ msgstr "Dolphin 签名 CSV 文件" msgid "Dolphin Signature File" msgstr "Dolphin 签名文件" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Dolphin TAS 电影 (*.dtm)" @@ -3190,21 +3260,21 @@ msgstr "Dolphin 未能完成请求的操作。" msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "Dolphin 是一个免费开源的 GameCube/Wii 模拟器。" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "Dolphin 版本太旧,穿透服务器不支持" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "Dolphin 无法正确验证典型的 TGC 文件,因为其不是真实光盘的转储。" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "Dolphin 无法验证未经授权的光盘。" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3219,7 +3289,7 @@ msgstr "Dolphin 的金手指系统当前已禁用。" msgid "Domain" msgstr "域名" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "不要更新" @@ -3232,24 +3302,26 @@ msgid "Done compressing disc image." msgstr "光盘镜像已压缩完成。" #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "双精度" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "下" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "下载代码" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "从 WiiRD 数据库中下载代码" @@ -3257,11 +3329,11 @@ msgstr "从 WiiRD 数据库中下载代码" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "从 GameTDB.com 下载游戏封面以便在网格模式下使用" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "下载完成" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "已下载 %1 代码。(已添加 %2)" @@ -3284,27 +3356,35 @@ msgstr "架子鼓" msgid "Dual Core" msgstr "双核" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "虚设" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "转储副内存(&A)" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "转储扩展内存(&E)" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "转储伪显存(&F)" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "转储主内存(&M)" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "转储音频" @@ -3316,7 +3396,7 @@ msgstr "转储基本纹理" msgid "Dump EFB Target" msgstr "转储 EFB 目标" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "转储帧" @@ -3328,7 +3408,7 @@ msgstr "转储 Mip 映射" msgid "Dump Objects" msgstr "转储对象" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "转储路径:" @@ -3439,16 +3519,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "连发按键的松开持续时间(帧):" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "荷兰语" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "退出模拟(&X)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "EFB 复制 %1" @@ -3462,7 +3542,7 @@ msgstr "" "错误:此版本的 Dolphin 需要 {0}.{1} 或更高版本的 TAP-Win32 驱动——如果您最近升" "级您的 Dolphin 发行版,可能现在需要重新启动计算机以使 Windows 识别新驱动。" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3492,7 +3572,7 @@ msgstr "效果" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "有效" @@ -3500,7 +3580,7 @@ msgstr "有效" msgid "Effective priority" msgstr "有效优先级" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "EiB" @@ -3512,7 +3592,7 @@ msgstr "弹出光盘" msgid "Embedded Frame Buffer (EFB)" msgstr "内置帧缓冲 (EFB)" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "空" @@ -3520,11 +3600,11 @@ msgstr "空" msgid "Emu Thread already running" msgstr "模拟线程已经在运行" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "模拟 Wii 的蓝牙适配器" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "模拟 Wii 遥控器" @@ -3543,8 +3623,12 @@ msgstr "" msgid "Emulation Speed" msgstr "模拟速度" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "必须要开始模拟才能录制。" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3560,7 +3644,7 @@ msgstr "启用 API 验证层" msgid "Enable Audio Stretching" msgstr "启用音频伸缩" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "启用金手指" @@ -3572,7 +3656,7 @@ msgstr "启用自定义 RTC" msgid "Enable Dual Core" msgstr "启用双核心" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "启用双核心(加速)" @@ -3598,19 +3682,19 @@ msgid "Enable Progressive Scan" msgstr "启用逐行扫描" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "启用震动" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "允许屏幕保护程序" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "启用扬声器" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "启用使用情况统计报告" @@ -3638,7 +3722,7 @@ msgid "" "= Compatible, OFF = Fast)" msgstr "启用浮点结果标记运算,一些游戏需要。(开 = 兼容,关 = 快速)" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3649,7 +3733,7 @@ msgstr "" "造成问题。

如果不确定,请选择“1x”。" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3689,7 +3773,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "对音频进行伸缩以匹配模拟速度" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3731,7 +3815,7 @@ msgstr "" msgid "Encoding" msgstr "编码" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3748,12 +3832,12 @@ msgid "Enet Didn't Initialize" msgstr "Enet 没有初始化" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "英语" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3763,7 +3847,7 @@ msgstr "增强" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "输入正在运行 XLink Kai 客户端的设备 IP 地址:" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "输入 USB 设备 ID" @@ -3777,11 +3861,11 @@ msgstr "输入要监视的地址:" msgid "Enter new Broadband Adapter MAC address:" msgstr "输入新宽带适配器 MAC 地址:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "输入密码" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "请输入 RSO 模块地址:" @@ -3790,65 +3874,68 @@ msgstr "请输入 RSO 模块地址:" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "错误" @@ -3861,19 +3948,19 @@ msgstr "打开适配器时出错: %1" msgid "Error loading selected language. Falling back to system default." msgstr "加载选定语言错误。正在退回系统默认。" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "获取会话列表时出错: %1" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "加载一些纹理包时发生错误" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "处理代码时出错。" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "处理数据时出错。" @@ -3893,7 +3980,7 @@ msgstr "同步存档数据时出错!" msgid "Error writing file: {0}" msgstr "写入文件时出错:{0}" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3949,11 +4036,11 @@ msgstr "" "错误: 正在试图访问 Windows-1252 字体,但它们没有加载。游戏可能无法正确显示字" "体,或者崩溃。" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "在 {1} 分区的 {0} 区块中发现错误。" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "在 {1} 分区未使用的 {0} 区块中发现错误。" @@ -3962,11 +4049,51 @@ msgstr "在 {1} 分区未使用的 {0} 区块中发现错误。" msgid "Euphoria" msgstr "Euphoria" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "欧洲" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" +"例子:\n" +"你想找到一个在修改 HP 时运行的函数。\n" +"1. 在不修改 HP 的情况下开始录制并运行游戏,然后点“代码未执行”。\n" +"2. 立即增加或减少 HP 并点“代码已执行”。\n" +"3. 重复 1 或 2 以缩小结果范围。\n" +"应该会(代码已执行后)出现较短的录制,这里面有你想要的。\n" +"\n" +"如点两次“代码已执行”将仅保留对两个录制运行的函数。命中数将更新以反映最后一个" +"录制的命中数量。总命中数将反映一个函数执行的总次数,直到使用重置命令清除列" +"表。\n" +"\n" +"右键单击 -> “设置 blr” 将在符号顶部放置一个 blr。\n" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "已排除: %1" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "已排除: 0" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "专用超着色器" @@ -4015,14 +4142,14 @@ msgstr "建议使用的变量名称。" msgid "Experimental" msgstr "实验性" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "导出所有 Wii 存档" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "导出失败" @@ -4030,15 +4157,15 @@ msgstr "导出失败" msgid "Export Recording" msgstr "导出录制" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "导出录制..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "导出存档文件" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "导出存档文件" @@ -4050,22 +4177,22 @@ msgstr "导出 Wii 存档" msgid "Export Wii Saves" msgstr "导出 Wii 存档" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "导出为 .gcs...(&G)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "导出为 .sav...(&S)" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "已导出 %n 个存档" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "扩展" @@ -4078,7 +4205,7 @@ msgstr "扩展体感输入" msgid "Extension Motion Simulation" msgstr "扩展体感模拟" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "外部" @@ -4086,7 +4213,7 @@ msgstr "外部" msgid "External Frame Buffer (XFB)" msgstr "外部帧缓冲 (XFB)" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "从 NAND 中提取证书" @@ -4124,7 +4251,7 @@ msgid "FD" msgstr "文件描述符" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "FIFO 回放器" @@ -4132,7 +4259,7 @@ msgstr "FIFO 回放器" msgid "Failed loading XML." msgstr "加载 XML 文件失败。" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" @@ -4140,11 +4267,11 @@ msgstr "" "打开存储卡失败:\n" "%1" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "无法将此会话添加到联机索引: %1" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "附加到签名文件 '%1' 失败" @@ -4156,7 +4283,7 @@ msgstr "索取蓝牙直通接口失败" msgid "Failed to connect to Redump.org" msgstr "连接 Redump.org 失败" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "连接服务器失败: %1" @@ -4177,12 +4304,12 @@ msgstr "创建 D3D12 全局资源失败" msgid "Failed to create DXGI factory" msgstr "创建 DXGI 工厂失败" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "删除联机 GBA{0} 存档文件失败。请验证你的写入权限。" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "删除联机存储卡失败。请验证你的写入权限。" @@ -4194,19 +4321,19 @@ msgstr "无法删除所选文件。" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "分离蓝牙直通内核驱动失败: {0}" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "下载代码失败。" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "转储 %1 失败:无法打开文件" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "转储 %1 失败:无法写入文件" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "在 %1 个存档文件中 %n 个导出失败。" @@ -4215,7 +4342,7 @@ msgstr "在 %1 个存档文件中 %n 个导出失败。" msgid "Failed to export the following save files:" msgstr "导出以下存档文件失败:" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "从 NAND 中提取证书失败" @@ -4241,22 +4368,22 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "无法找到一个或多个 D3D 符号" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "导入 \"%1\" 失败。" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "导入存档文件失败。请运行一次游戏,然后重试。" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "导入存档文件失败。给定的文件似乎已损坏或不是有效的 Wii 存档。" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " @@ -4265,7 +4392,7 @@ msgstr "" "导入存档文件失败。您的 NAND 可能已损坏,或某些因素阻止访问里面的文件。请尝试" "修复 NAND(工具 -> 管理 NAND -> 校验 NAND...),然后再次导入存档。" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "初始化核心失败" @@ -4284,23 +4411,23 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "初始化渲染器类失败" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "安装包失败: %1" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "无法将该游戏安装到 NAND。" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "监听端口 %1 失败。是否有另一个联机服务器的实例正在运行?" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "无法在 %1 处加载 RSO 模块" @@ -4312,11 +4439,11 @@ msgstr "载入 d3d11.dll 失败" msgid "Failed to load dxgi.dll" msgstr "载入 dxgi.dll 失败" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "载入映射文件 '%1' 失败" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "加载可执行文件到内存失败。" @@ -4327,7 +4454,7 @@ msgid "" msgstr "加载 {0} 失败。如果你使用的是 Windows 7,请尝试安装 KB4019990 更新包。" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "无法打开 '%1'" @@ -4356,11 +4483,11 @@ msgstr "" "无法在外部编辑器中打开文件。\n" "请确保已关联了应用程序来打开 INI 文件。" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "打开文件失败。" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "打开服务器失败" @@ -4369,7 +4496,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "打开输入文件 \"%1\" 失败。" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4383,7 +4510,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "解析 Redump.org 数据失败" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "将给定值解析为目标数据类型失败。" @@ -4391,25 +4518,25 @@ msgstr "将给定值解析为目标数据类型失败。" msgid "Failed to read DFF file." msgstr "读取 DFF 文件失败。" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "从文件读取失败。" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "从输入文件 “{0}” 读取失败。" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "从存储卡读取所选的存档文件失败。" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "读取 {0} 失败" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "移除文件失败。" @@ -4427,15 +4554,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "将该游戏从 NAND 中移除失败。" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "重置联机 GCI 文件夹失败。请验证你的写入权限。" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "重置联机 NAND 文件夹失败。请验证你的写入权限。" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "重置联机重定向文件夹失败。请验证你的写入权限。" @@ -4443,23 +4570,23 @@ msgstr "重置联机重定向文件夹失败。请验证你的写入权限。" msgid "Failed to save FIFO log." msgstr "保存 FIFO 日志失败。" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "保存代码映射到路径 '%1' 失败" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "保存签名文件 '%1' 失败" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "保存符号映射到路径 '%1' 失败" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "保存到签名文件 '%1' 失败" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "卸载包失败: %1" @@ -4467,11 +4594,11 @@ msgstr "卸载包失败: %1" msgid "Failed to write BT.DINF to SYSCONF" msgstr "无法将 BT.DINF 写入 SYSCONF" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "写入 Mii 数据失败。" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "写入 Wii 存档失败。" @@ -4479,22 +4606,22 @@ msgstr "写入 Wii 存档失败。" msgid "Failed to write config file!" msgstr "写入配置文件失败!" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "修改过的存储卡写入磁盘失败。" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "写入重定向存档失败。" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "存档文件写入磁盘失败。" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4505,19 +4632,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "失败" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "公平输入延迟" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "备用区域" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "备用区域:" @@ -4530,7 +4657,7 @@ msgstr "快速" msgid "Fast Depth Calculation" msgstr "快速深度计算" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4548,7 +4675,7 @@ msgstr "文件详细信息" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "文件格式" @@ -4562,18 +4689,18 @@ msgstr "文件信息" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "文件名" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "文件路径" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "文件大小" @@ -4581,11 +4708,11 @@ msgstr "文件大小" msgid "File Size:" msgstr "文件大小:" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "文件未包含代码。" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "文件名" @@ -4601,11 +4728,11 @@ msgstr "" "找不到 M3U 文件 “{0}” 中指定的下列文件:\n" "{1}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "文件大小与任何已知的 GameCube 存储卡大小都不匹配。" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "标头中的文件大小与实际卡大小不匹配。" @@ -4613,15 +4740,15 @@ msgstr "标头中的文件大小与实际卡大小不匹配。" msgid "Filesystem" msgstr "文件系统" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "过滤符号" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "过滤" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4632,11 +4759,11 @@ msgstr "" "理质量,但会导致另一些游戏出现问题。

如果不确定,请" "不要勾选此项。" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "查找下一个(&N)" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "查找上一个(&P)" @@ -4652,18 +4779,22 @@ msgstr "" "正在完成更新...\n" "这可能需要一段时间。" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "第一人称" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "修正校验和" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "修正校验和失败" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4673,13 +4804,14 @@ msgstr "标记" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "浮点" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "跟随分支(&B)" @@ -4707,7 +4839,7 @@ msgstr "" msgid "Force 16:9" msgstr "强制 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "强制 24 位色" @@ -4715,15 +4847,15 @@ msgstr "强制 24 位色" msgid "Force 4:3" msgstr "强制 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "强制监听端口:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "强制纹理过滤" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4737,7 +4869,7 @@ msgstr "" "戏界面。如果使用任何 AR/Gecko 宽屏补丁代码则不应勾选此项。" "

如果不确定,请不要勾选此项。" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4759,21 +4891,21 @@ msgstr "格式:" msgid "Forward" msgstr "前" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "转发端口(UPnP)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "已找到 \"%2\" 的 %1 个结果 " -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "找到 %n 个地址。" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "帧 %1" @@ -4802,7 +4934,7 @@ msgstr "转储帧" msgid "Frame Range" msgstr "帧范围" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "帧转储图像 ‘{0}’ 已经存在。是否覆盖?" @@ -4814,19 +4946,19 @@ msgstr "录制帧数:" msgid "France" msgstr "法国" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "空闲区块数: %1" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "空闲文件数: %1" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "自由视点控制类型" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "自由视点控制器 %1" @@ -4834,7 +4966,7 @@ msgstr "自由视点控制器 %1" msgid "Free Look Settings" msgstr "自由视点设置" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -5276,7 +5408,7 @@ msgstr "绿 左" msgid "Green Right" msgstr "绿 右" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "网格视图" @@ -5289,7 +5421,7 @@ msgstr "吉他" msgid "Gyroscope" msgstr "陀螺仪" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "HDMI 3D" @@ -5302,13 +5434,30 @@ msgstr "修正" msgid "Head" msgstr "头" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "帮助" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" -msgstr "十六进制字符串" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "十六进制" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" +msgstr "十六进制字节字符串" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 @@ -5319,19 +5468,19 @@ msgstr "十六进制" msgid "Hide" msgstr "隐藏" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "隐藏全部" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "隐藏正在游戏的会话" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "隐藏不兼容的会话" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "隐藏远程 GBA" @@ -5349,21 +5498,27 @@ msgstr "最高" msgid "Hit Strength" msgstr "敲击力度" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "命中数" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "水平视野" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "主机" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "主机代码 :" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "主机输入优先权" @@ -5371,7 +5526,7 @@ msgstr "主机输入优先权" msgid "Host Size" msgstr "主机大小" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5382,11 +5537,11 @@ msgstr "" "增加其他人的延迟。\n" "适合 3 人以上的休闲游戏,在连接不稳定或高延迟下或许也能运作。" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "主机输入优先权已禁用" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "主机输入优先权已启用" @@ -5398,7 +5553,7 @@ msgstr "建主机联网" msgid "Hostname" msgstr "主机名" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "热键设置" @@ -5453,11 +5608,11 @@ msgstr "" "IOS: 无法读取 SSL 服务所必需的一个文件 ({0})。请参阅 https://dolphin-emu.org/" "docs/guides/wii-network-guide/ 了解如何设置 Wii 联网。" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "IP 地址 :" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "IPL 设置" @@ -5466,7 +5621,7 @@ msgid "IR" msgstr "红外线" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "红外灵敏度:" @@ -5499,11 +5654,11 @@ msgstr "" "RVZ:一种高级压缩格式,与 Dolphin 5.0-12188 及更高版本兼容。可以有效地压缩垃" "圾数据和加密的 Wii 数据。" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "图标" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" @@ -5512,11 +5667,11 @@ msgstr "" "与主机输入权限相同,除“主机”(零延迟)之外,其他可以随时切换。\n" "适用于需要时间敏感控制的回合制游戏,如高尔夫球。" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "身份标识生成" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5579,7 +5734,7 @@ msgstr "忽略格式变化" msgid "Ignore for this session" msgstr "本次会话期间忽略" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5590,7 +5745,7 @@ msgstr "" "一小部分游戏中也会导致图像瑕疵。

如果不确定,请勾选" "此项。" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5618,30 +5773,30 @@ msgstr "" "能也会略微降低。

如果不确定,请不要勾选此项。" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "导入 BootMii NAND 备份..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "导入失败" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "导入存档文件" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "导入 Wii 存档..." -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "正在导入 NAND 备份" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" @@ -5650,11 +5805,20 @@ msgstr "" "正在导入 NAND 备份\n" " 已用时间: %1s" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "游戏中?" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "已包含: %1" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "已包含: 0" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5710,8 +5874,8 @@ msgstr "信息" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "信息" @@ -5720,10 +5884,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "在模拟过程中禁止屏幕保护程序" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "输入" @@ -5737,16 +5901,22 @@ msgstr "激活所需要的输入力度。" msgid "Input strength to ignore and remap." msgstr "要忽略并重新映射的输入力度。" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "插入 nop (&N)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "插入 SD 卡" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "已检查" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "安装" @@ -5758,7 +5928,7 @@ msgstr "安装分区 (%1)" msgid "Install Update" msgstr "安装更新" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "安装 WAD..." @@ -5774,11 +5944,11 @@ msgstr "指令。" msgid "Instruction" msgstr "指令" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "指令断点" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "指令:" @@ -5796,7 +5966,7 @@ msgid "Interface" msgstr "界面" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "内部 LZO 错误 - 压缩失败" @@ -5805,7 +5975,7 @@ msgstr "内部 LZO 错误 - 压缩失败" msgid "Internal LZO Error - decompression failed" msgstr "内部 LZO 错误 - 解压失败" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" @@ -5813,21 +5983,21 @@ msgstr "" "内部 LZO 错误 - 解压失败 ({0}) ({1}, {2})\n" "请尝试重新加载状态" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "内部 LZO 错误 - lzo_init() 失败" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "内部分辨率" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "内部分辨率:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "生成 AR 代码时出现内部错误。" @@ -5835,11 +6005,11 @@ msgstr "生成 AR 代码时出现内部错误。" msgid "Interpreter (slowest)" msgstr "解释器(最慢)" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "解释器核心" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "无效表达式。" @@ -5847,7 +6017,7 @@ msgstr "无效表达式。" msgid "Invalid Mixed Code" msgstr "无效混合代码" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "包 %1 无效: %2" @@ -5856,15 +6026,15 @@ msgstr "包 %1 无效: %2" msgid "Invalid Player ID" msgstr "无效玩家 ID" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "无效 RSO 模块地址: %1" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "无效调用堆栈" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "无效校验和。" @@ -5872,11 +6042,11 @@ msgstr "无效校验和。" msgid "Invalid game." msgstr "无效游戏。" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "无效主机" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "字段 \"%1\" 的输入无效" @@ -5889,31 +6059,31 @@ msgstr "提供的输入无效" msgid "Invalid literal." msgstr "无效字面。" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "提供的搜索参数无效。" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "提交的密码无效。" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "无效录制文件" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "无效的搜索参数(没有选择对象)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "无效的搜索字符串(无法转换成数字)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "无效的搜索字符串(仅支持相等长度的字符串)" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "无效游戏 ID" @@ -5922,8 +6092,8 @@ msgid "Invalid watch address: %1" msgstr "无效监视地址: %1" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "意大利语" @@ -5931,11 +6101,11 @@ msgstr "意大利语" msgid "Italy" msgstr "意大利" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "JIT" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "关闭 JIT 区块链接" @@ -5943,47 +6113,47 @@ msgstr "关闭 JIT 区块链接" msgid "JIT Blocks" msgstr "JIT 区块" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "关闭 JIT 分支" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "关闭 JIT 浮点" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "关闭 JIT 整数" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "关闭 JIT 加载存储浮动" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "关闭 JIT 加载存储" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "关闭 JIT 加载存储配对" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "关闭 JIT 加载存储 IXz" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "关闭 JIT 加载存储 Ibzx" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "关闭 JIT 加载存储 Iwz" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "关闭 JIT (JIT 核心)" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "关闭 JIT 配对" @@ -5995,11 +6165,11 @@ msgstr "适用于 ARM64 的 JIT 重编译器(推荐)" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "适用于 x86-64 的 JIT 重编译器(推荐)" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "关闭 JIT 寄存器缓存" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "关闭 JIT 系统寄存器" @@ -6012,12 +6182,12 @@ msgstr "" "清除缓存后,JIT 无法找到代码空间。这应该从不会出现。请在错误跟踪器中上报此事" "件。 Dolphin 即将退出。" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "日本" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "日语" @@ -6037,12 +6207,12 @@ msgstr "窗口置顶" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "在内存中值的保留地址" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "键盘" @@ -6055,20 +6225,20 @@ msgstr "键盘" msgid "Keys" msgstr "按键" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "KiB" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "踢除玩家" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "韩国" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "韩语" @@ -6096,7 +6266,7 @@ msgstr "LR 保存" msgid "Label" msgstr "标签" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "上个值" @@ -6182,15 +6352,15 @@ msgstr "" msgid "License" msgstr "许可" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "限制数据块上传速度:" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "表单列" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "列表视图" @@ -6199,17 +6369,17 @@ msgid "Listening" msgstr "正在监听" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "载入" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "载入损坏映射文件(&B)..." -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "载入其他映射文件(&O)..." @@ -6217,7 +6387,7 @@ msgstr "载入其他映射文件(&O)..." msgid "Load Custom Textures" msgstr "加载自定义纹理" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "载入 GameCube 主菜单" @@ -6226,7 +6396,7 @@ msgstr "载入 GameCube 主菜单" msgid "Load Last State" msgstr "载入最近状态" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "加载路径:" @@ -6319,23 +6489,23 @@ msgstr "载入状态 8" msgid "Load State Slot 9" msgstr "载入状态 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "从文件中载入状态" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "从选择的插槽中加载状态" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "从插槽中载入状态" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "载入 Wii 存档" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "加载 Wii 系统菜单 %1" @@ -6343,12 +6513,12 @@ msgstr "加载 Wii 系统菜单 %1" msgid "Load from Selected Slot" msgstr "从选择的插槽中加载" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "从插槽 %1 - %2 载入" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "载入映射文件" @@ -6356,7 +6526,7 @@ msgstr "载入映射文件" msgid "Load..." msgstr "载入..." -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "已从 '%1' 中加载符号" @@ -6370,7 +6540,7 @@ msgstr "" "<game_id>/ 目录中的自定义纹理。

如果不确定,请" "不要勾选此项。" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "本地" @@ -6379,7 +6549,7 @@ msgid "Lock Mouse Cursor" msgstr "锁定鼠标光标" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "日志" @@ -6387,7 +6557,7 @@ msgstr "日志" msgid "Log Configuration" msgstr "日志设置" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "记录 JIT 指令范围" @@ -6417,7 +6587,7 @@ msgstr "" msgid "Loop" msgstr "循环" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "丢失联机服务器连接..." @@ -6446,7 +6616,7 @@ msgstr "MMU" msgid "MORIBUND" msgstr "即将结束" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "MadCatz Gameshark 文件" @@ -6456,7 +6626,7 @@ msgstr "主摇杆" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "制作者" @@ -6465,7 +6635,7 @@ msgstr "制作者" msgid "Maker:" msgstr "制作者:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6476,7 +6646,7 @@ msgstr "" "雾模拟,禁用雾将破坏其游戏性。

如果不确定,请不要勾" "选此项。" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "管理 NAND" @@ -6484,7 +6654,7 @@ msgstr "管理 NAND" msgid "Manual Texture Sampling" msgstr "手动纹理采样" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "映射" @@ -6492,15 +6662,15 @@ msgstr "映射" msgid "Mask ROM" msgstr "伪装 ROM" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "找到匹配" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "最大缓冲区:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "最大缓冲区大小更改为 %1" @@ -6509,7 +6679,7 @@ msgstr "最大缓冲区大小更改为 %1" msgid "Maximum tilt angle." msgstr "最大倾斜角度。" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "这会导致 Wii 菜单和一些游戏减速。" @@ -6518,11 +6688,11 @@ msgstr "这会导致 Wii 菜单和一些游戏减速。" msgid "Medium" msgstr "中等" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "内存" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "内存断点" @@ -6530,7 +6700,7 @@ msgstr "内存断点" msgid "Memory Card" msgstr "存储卡" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "存储卡管理器" @@ -6554,7 +6724,7 @@ msgstr "" msgid "Memory Override" msgstr "内存覆盖" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "内存断点选项" @@ -6570,7 +6740,7 @@ msgstr "MemoryCard: 在无效源地址 ({0:#x}) 中读取调用" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "MemoryCard: 在无效目标地址 ({0:#x}) 中写入调用" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6580,13 +6750,13 @@ msgstr "" "将新 NAND 合并入当前 NAND 将会覆盖所有现有的频道与存档。此过程不可逆,建议您" "对两份 NAND 都进行备份。确定继续?" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "MiB" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "麦克风" @@ -6594,19 +6764,19 @@ msgstr "麦克风" msgid "Misc" msgstr "其它" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "其它设置" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "标头中的空闲区块数与实际未使用的区块不匹配。" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "内部数据结构不匹配。" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6638,12 +6808,12 @@ msgstr "" "修改纹理以显示以其编码格式。

可能需要重置模拟才能生效。" "

如果不确定,请不要勾选此项。" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "已找到模块: %1" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "单声道" @@ -6655,11 +6825,11 @@ msgstr "单视场阴影" msgid "Monospaced Font" msgstr "等宽字体" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "体感输入" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "体感模拟" @@ -6699,10 +6869,10 @@ msgstr "影片" msgid "N&o to All" msgstr "全部选否(&O)" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "NAND 校验" @@ -6710,26 +6880,26 @@ msgstr "NAND 校验" msgid "NKit Warning" msgstr "NKit 警告" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "NTSC-J" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "NTSC-K" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "NTSC-U" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "名称" @@ -6741,37 +6911,37 @@ msgstr "命名一个新标签:" msgid "Name of the tag to remove:" msgstr "要移除的标签名:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "在服务器浏览器中所显示的会话名称" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "名称:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "原生 (640x528)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "内部 GCI 文件" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "联机" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "联机会话浏览器" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "联机设定" @@ -6779,16 +6949,16 @@ msgstr "联机设定" msgid "Netherlands" msgstr "荷兰" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "联机在 NetPlay_GetButtonPress() 中不同步" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "联机发生不同步,已无法恢复。" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "网络" @@ -6809,11 +6979,11 @@ msgstr "不要自动更新" msgid "New" msgstr "新" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "新断点" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "新建搜索" @@ -6821,7 +6991,7 @@ msgstr "新建搜索" msgid "New Tag..." msgstr "新标签..." -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "已生成新的标识。" @@ -6838,7 +7008,7 @@ msgstr "新标签" msgid "Next Game Profile" msgstr "下一个游戏预设" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "匹配下一个" @@ -6847,17 +7017,17 @@ msgstr "匹配下一个" msgid "Next Profile" msgstr "下一个预设" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "昵称太长。" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "昵称:" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "否" @@ -6865,6 +7035,10 @@ msgstr "否" msgid "No Adapter Detected" msgstr "未检测到适配器" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "无音频输出" @@ -6875,24 +7049,20 @@ msgstr "无音频输出" msgid "No Compression" msgstr "不压缩" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "无匹配" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "无给定值" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "没有可用的说明" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "没有错误。" @@ -6904,15 +7074,15 @@ msgstr "未选择扩展。" msgid "No file loaded / recorded." msgstr "文件未加载 / 录制" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "没有游戏在运行。" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "没有游戏运行。" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "没有发现问题。" @@ -6920,11 +7090,15 @@ msgstr "没有发现问题。" msgid "No paths found in the M3U file \"{0}\"" msgstr "在 M3U 文件 “{0}” 中找不到路径" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "未发现可能的函数,重置。" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "未发现任何问题。" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6937,7 +7111,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "没有找到游戏设置 ‘{0}’ 的预设" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "没有录制被载入。" @@ -6945,17 +7119,13 @@ msgstr "没有录制被载入。" msgid "No save data found." msgstr "没有找到存档数据。" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "未找到 undo.dtm 文件,为防止影片出现不同步撤销载入状态操作被取消。" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "无给出的值。" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6965,7 +7135,7 @@ msgstr "无" msgid "North America" msgstr "北美" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "未找到" @@ -6973,11 +7143,11 @@ msgstr "未找到" msgid "Not Set" msgstr "未设置" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "并不是所有玩家都有该游戏。你真的要开始吗?" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6985,7 +7155,7 @@ msgid "" "required." msgstr "目标存储卡上没有足够的空闲区块。至少需要 %n 个区块。 " -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -7045,13 +7215,13 @@ msgstr "双节棍控制器方向" msgid "Nunchuk Stick" msgstr "双节棍控制器" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "确定" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "对象 %1" @@ -7064,11 +7234,11 @@ msgid "Oceania" msgstr "大洋洲" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "关" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "偏移量" @@ -7080,11 +7250,11 @@ msgstr "开" msgid "On Movement" msgstr "活动时" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "在线文档(&D)" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" @@ -7092,7 +7262,7 @@ msgstr "" "仅附加有此前缀的符号:\n" "(留空表示全部)" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -7109,7 +7279,7 @@ msgstr "打开" msgid "Open &Containing Folder" msgstr "打开所在目录(&C)" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "打开目录..." @@ -7157,7 +7327,7 @@ msgstr "OpenGL" msgid "OpenGL ES" msgstr "OpenGL ES" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "运算符" @@ -7175,7 +7345,7 @@ msgstr "选项" msgid "Orange" msgstr "橙" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "轨道式" @@ -7183,7 +7353,7 @@ msgstr "轨道式" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "其他" @@ -7196,11 +7366,11 @@ msgstr "其他分区 (%1)" msgid "Other State Hotkeys" msgstr "其他状态热键" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "其他状态管理" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "其他游戏..." @@ -7208,12 +7378,12 @@ msgstr "其他游戏..." msgid "Overlay Information" msgstr "屏显信息" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "播放录制...(&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "PAL" @@ -7238,7 +7408,7 @@ msgstr "PNG 图像文件 (*.png);; 所有文件 (*)" msgid "PPC Size" msgstr "PPC 大小" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "PPC 对 Host" @@ -7255,7 +7425,7 @@ msgstr "鼓垫" msgid "Parameters" msgstr "参数" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "解析为十六进制" @@ -7264,23 +7434,23 @@ msgstr "解析为十六进制" msgid "Parsing Error" msgstr "解析错误" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "被动" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "直通蓝牙适配器" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "密码" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "加入你游戏需要的密码(留空则无密码)" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "密码?" @@ -7301,7 +7471,7 @@ msgid "Path:" msgstr "路径:" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "路径" @@ -7309,7 +7479,7 @@ msgstr "路径" msgid "Pause" msgstr "暂停" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "在影片末尾暂停" @@ -7332,11 +7502,11 @@ msgstr "移动到中间位置的峰值速度。" msgid "Peak velocity of outward swing movements." msgstr "向外挥舞的峰值速度。" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "逐像素光照" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "执行在线系统更新" @@ -7346,23 +7516,23 @@ msgstr "执行系统更新" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "物理" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "物理地址空间" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "PiB" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "选择调试字体" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "延迟" @@ -7375,7 +7545,7 @@ msgid "Pitch Up" msgstr "上仰" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "平台" @@ -7395,16 +7565,16 @@ msgstr "播放录制" msgid "Playback Options" msgstr "回放选项" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "玩家" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "玩家" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "在以标准内存区域开始搜索前,请先运行游戏。" @@ -7415,29 +7585,29 @@ msgstr "在以标准内存区域开始搜索前,请先运行游戏。" msgid "Point" msgstr "指向" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "端口 %1" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "端口 %1 ROM:" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "端口 :" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "检测到可能的非同步异常: %1 或许已在帧 %2 处不同步 " -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "后处理效果" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "后处理效果:" @@ -7449,15 +7619,15 @@ msgstr "后处理着色器配置" msgid "Prefetch Custom Textures" msgstr "预读取自定义纹理" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "在 PlayController 中提前结束影片。{0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "在 PlayWiimote 中提前结束影片。{0} + {1} > {2}" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "在PlayWiimote 中提前结束影片。{0} > {1}" @@ -7499,7 +7669,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "上一个游戏预设" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "匹配上一个" @@ -7510,15 +7680,15 @@ msgstr "上一个预设" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "图元 %1" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "私密" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "私密和公开" @@ -7526,25 +7696,25 @@ msgstr "私密和公开" msgid "Problem" msgstr "问题" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "发现高严重性问题。游戏很可能根本无法运作。" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "发现低严重性问题。这些问题很可能不会影响游戏运行。" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "发现中等严重性问题。游戏整体或特定部分可能无法正确运行。" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "预设" @@ -7558,15 +7728,15 @@ msgstr "程序计数器" msgid "Progress" msgstr "进度" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "公开" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "清除游戏列表缓存" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "将 IPL ROM 放至 User/GC/。" @@ -7578,11 +7748,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "LTR" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "无法启用服务质量 (QoS)。" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "已成功启用服务质量 (QoS)。" @@ -7592,12 +7762,12 @@ msgstr "DPLII 解码器的质量。质量越高音频延迟越大。" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "询问" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "退出" @@ -7617,11 +7787,11 @@ msgstr "R-模拟" msgid "READY" msgstr "就绪" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "RSO 模块" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "RSO 自动检测" @@ -7634,44 +7804,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "RVZ GC/Wii 镜像 (*.rvz)" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "范围" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "结束范围:" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "开始范围:" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "替换指令(&P)" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "读取" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "读取和写入" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "只读" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "读取或写入" @@ -7679,11 +7849,11 @@ msgstr "读取或写入" msgid "Read-Only Mode" msgstr "只读模式" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "真实平衡板" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "真实 Wii 遥控器" @@ -7696,11 +7866,11 @@ msgstr "回到中心" msgid "Record" msgstr "录制" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "录制输入" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "正在录制" @@ -7725,7 +7895,7 @@ msgstr "红 左" msgid "Red Right" msgstr "红 右" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7745,16 +7915,16 @@ msgstr "Redump.org 状态:" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "刷新" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "刷新当前值" @@ -7762,26 +7932,26 @@ msgstr "刷新当前值" msgid "Refresh Game List" msgstr "刷新游戏列表" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "刷新失败。请运行一会儿游戏,然后重试。" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "已刷新当前值。" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "正在刷新..." #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "地区" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "地区:" @@ -7801,16 +7971,16 @@ msgstr "保持相对输入" msgid "Remind Me Later" msgstr "以后提醒我" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "移除" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "移除失败" @@ -7835,8 +8005,8 @@ msgstr "" "转换为 ISO 格式时,移除垃圾数据不会节省任何空间(除非以后将 ISO 文件打包为压" "缩文件格式,例如 ZIP 文件)。是否仍要继续?" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "重命名符号" @@ -7871,29 +8041,37 @@ msgstr "请求加入你的派对" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "重置" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "全部重置" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "重置忽略警告程序" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "重置结果" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "重置穿透服务器" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "重置穿透服务器到 %1:%2" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "重置穿透设置" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "重置值" @@ -7901,15 +8079,15 @@ msgstr "重置值" msgid "Reset View" msgstr "重置视图" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "重置所有保存的 Wii 遥控器配对" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "资源包管理器" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "资源包路径:" @@ -7921,11 +8099,11 @@ msgstr "需要重启" msgid "Restore Defaults" msgstr "恢复默认值" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "恢复指令" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "重试" @@ -7934,7 +8112,7 @@ msgstr "重试" msgid "Return Speed" msgstr "返回速度" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "修订版" @@ -7992,11 +8170,11 @@ msgstr "左倾" msgid "Roll Right" msgstr "右倾" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "房间 ID" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "旋转" @@ -8005,16 +8183,17 @@ msgstr "旋转" msgid "Rotation applied at extremities of swing." msgstr "挥舞到极限时的旋转角度。" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" -"将 2D 顶点舍入为整数像素。

修正部分游戏在较高内部分辨率下的图像问题。" -"该选项在使用原生内部分辨率时没有效果。

如果不确定," -"请不要勾选此项。" +"将 2D 顶点舍入为整数像素并将视口大小舍入为整数。

修正部分游戏在较高内" +"部分辨率下的图像问题。该选项在使用原生内部分辨率时没有效果。" +"

如果不确定,请不要勾选此项。" #: Source/Core/Core/HW/GCPadEmu.cpp:79 #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:254 @@ -8023,11 +8202,11 @@ msgstr "" msgid "Rumble" msgstr "震动" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "运行到此处(&T)" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "在独占线程中运行 GBA 内核" @@ -8035,15 +8214,15 @@ msgstr "在独占线程中运行 GBA 内核" msgid "Russia" msgstr "俄罗斯" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "SD 卡" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "SD 卡镜像 (*.raw);;所有文件 (*)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "SD 卡路径:" @@ -8059,7 +8238,7 @@ msgstr "选择" msgid "SHA-1:" msgstr "SHA-1:" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "SP1:" @@ -8073,11 +8252,11 @@ msgstr "SSL 上下文" msgid "START" msgstr "START" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "保存代码(&V)" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "保存状态(&V)" @@ -8087,7 +8266,7 @@ msgid "Safe" msgstr "安全" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -8100,7 +8279,7 @@ msgstr "保存全部" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "存档导出" @@ -8121,11 +8300,11 @@ msgstr "游戏存档" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "游戏存档文件 (*.sav);;所有文件 (*)" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "存档导入" @@ -8137,7 +8316,7 @@ msgstr "保存到最早状态存档" msgid "Save Preset" msgstr "保存预设" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "录制文件另存为" @@ -8187,23 +8366,23 @@ msgstr "保存状态 8" msgid "Save State Slot 9" msgstr "保存状态 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "保存状态到文件" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "保存状态到最早的插槽" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "向选中的插槽保存状态" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "保存状态到插槽" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "保存符号映射为...(&A)" @@ -8211,7 +8390,7 @@ msgstr "保存符号映射为...(&A)" msgid "Save Texture Cache to State" msgstr "保存纹理缓存到状态" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "保存和载入状态" @@ -8223,11 +8402,11 @@ msgstr "另存为预设..." msgid "Save as..." msgstr "另存为..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "将组合输出文件另存为" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" @@ -8236,15 +8415,15 @@ msgstr "" "此游戏的存档数据已存在于 NAND 中。 建议在覆盖之前备份当前数据。\n" "是否现在覆盖? " -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "保存在与 ROM 相同的目录中" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "保存映射文件" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "保存签名文件" @@ -8252,7 +8431,7 @@ msgstr "保存签名文件" msgid "Save to Selected Slot" msgstr "保存至所选插槽" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "保存到插槽 %1 - %2" @@ -8260,23 +8439,23 @@ msgstr "保存到插槽 %1 - %2" msgid "Save..." msgstr "保存..." -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "只有在 Wii 游戏运行时保存的 Wii 遥控器配对才能重置。" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "存档:" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "即时存档影片 {0} 被破坏,影片录制停止……" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "缩放 EFB 副本" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "扫描成功。" @@ -8284,36 +8463,36 @@ msgstr "扫描成功。" msgid "ScrShot" msgstr "截图" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "搜索" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "搜索地址" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "搜索当前对象" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "搜索子目录" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "搜索与过滤" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "当前无法在虚拟地址空间中进行搜索。请运行一会儿游戏,然后重试。" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "搜索一个指令" @@ -8321,7 +8500,7 @@ msgstr "搜索一个指令" msgid "Search games..." msgstr "搜索游戏..." -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "搜索指令" @@ -8345,28 +8524,28 @@ msgstr "包含大部分 CPU 与硬件相关设置的部分。" msgid "Security options" msgstr "安全选项" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "选择" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "选择转储路径" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "选择导出目录" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "选择 GBA BIOS" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "选择 GBA ROM" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "选择 GBA 存档路径" @@ -8374,11 +8553,11 @@ msgstr "选择 GBA 存档路径" msgid "Select Last State" msgstr "选择最近状态" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "选择加载路径" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "选择资源包路径" @@ -8386,7 +8565,7 @@ msgstr "选择资源包路径" msgid "Select Riivolution XML file" msgstr "选择 Riivolutione XML 文件" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "选择插槽 %1 - %2" @@ -8394,7 +8573,7 @@ msgstr "选择插槽 %1 - %2" msgid "Select State" msgstr "选择状态" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "选择状态插槽" @@ -8438,41 +8617,45 @@ msgstr "选择状态 8" msgid "Select State Slot 9" msgstr "选择状态 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "选择 WFS 路径" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "选择 Wii NAND 根目录" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "选择目录" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "选择文件" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "选择游戏" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "选择 SD 卡镜像" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "选择游戏" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "选择要安装到 NAND 的软件" @@ -8480,11 +8663,11 @@ msgstr "选择要安装到 NAND 的软件" msgid "Select e-Reader Cards" msgstr "选择 e-Reader 卡" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "选择 RSO 模块地址:" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "选择要播放的录制文件" @@ -8492,12 +8675,12 @@ msgstr "选择要播放的录制文件" msgid "Select the Virtual SD Card Root" msgstr "选择虚拟 SD 卡根目录" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "选择密钥文件 (OTP/SEEPROM 转储)" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "选择一个存档文件" @@ -8513,15 +8696,15 @@ msgstr "选择要保存多个转换镜像的位置" msgid "Selected Font" msgstr "所选字体" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "所选控制器预设不存在" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "所选游戏在游戏列表中不存在!" @@ -8549,7 +8732,7 @@ msgstr "" "选择要使用的硬件适配器。

如果不确定,请选择第一个。" "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8606,11 +8789,11 @@ msgstr "" "的一个以达到最好的模拟效果。

如果不确定,请选" "择“OpenGL”。" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "发送" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "感应条位置:" @@ -8625,56 +8808,64 @@ msgstr "" "下载时请在 dat 文件网址后附加 “{0}”(不带引号)\n" "例如:{2}" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "服务器 IP 地址" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "服务器端口" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "穿透尝试被服务器拒绝" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "设置值(&V)" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "设置 blr (&B)" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "设置 PC" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "设置为默认镜像(&D)" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "给插槽 A 设置存储卡文件" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "给插槽 B 设置存储卡文件" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "设置符号终止地址(&E)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "设置符号大小(&S)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "设置符号终止地址" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "设置符号大小 (%1):" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" @@ -8683,7 +8874,7 @@ msgstr "" "将 PAL 制式 Wii 游戏的显示模式由 50Hz (576i) 改为 60Hz (480i)。\n" "可能并不适用于所有游戏。" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "设置 Wii 的系统语言。" @@ -8693,7 +8884,7 @@ msgid "" "Certain backends only." msgstr "以毫秒为单位设置延迟。较高的值可能会减少音频噪声。仅限某些后端。" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8732,11 +8923,11 @@ msgstr "" "缩短加载时间但可能导致一些游戏异常。可能对性能有负面影响。默认值为 False" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "显示日志(&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "显示工具栏(&T)" @@ -8744,15 +8935,15 @@ msgstr "显示工具栏(&T)" msgid "Show Active Title in Window Title" msgstr "在标题栏显示当前游戏名" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "显示全部" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "显示澳大利亚" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "在 Discord 软件中显示当前游戏" @@ -8760,7 +8951,7 @@ msgstr "在 Discord 软件中显示当前游戏" msgid "Show Debugging UI" msgstr "显示调试界面" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "显示 ELF/DOL" @@ -8768,43 +8959,43 @@ msgstr "显示 ELF/DOL" msgid "Show FPS" msgstr "显示 FPS" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "显示帧计数器" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "显示法国" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "显示 GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "显示德国" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "叠加显示高尔夫模式" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "显示输入回显" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "显示意大利" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "显示日本" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "显示韩国" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "显示延迟计数器" @@ -8812,7 +9003,7 @@ msgstr "显示延迟计数器" msgid "Show Language:" msgstr "显示语言:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "显示日志设置(&C)" @@ -8824,7 +9015,7 @@ msgstr "显示联机信息" msgid "Show NetPlay Ping" msgstr "显示联机延迟" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "显示荷兰" @@ -8832,7 +9023,7 @@ msgstr "显示荷兰" msgid "Show On-Screen Display Messages" msgstr "显示屏显消息" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "显示 PAL" @@ -8841,23 +9032,23 @@ msgstr "显示 PAL" msgid "Show PC" msgstr "显示 PC" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "显示平台" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "显示地区" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "显示重录计数器" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "显示俄罗斯" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "显示西班牙" @@ -8866,46 +9057,50 @@ msgstr "显示西班牙" msgid "Show Statistics" msgstr "显示统计数据" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "显示系统频率" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "显示台湾" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "显示美国" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "显示未知" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "显示 WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "显示 Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "显示全球" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "在内存中显示(&M)" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "在代码中显示" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "在服务器浏览器中显示" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "在内存中显示目标(&Y)" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8947,7 +9142,7 @@ msgstr "" "显示各种渲染统计数据。

如果不确定,请不要勾选此项。" "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "左右" @@ -8963,16 +9158,31 @@ msgstr "切换横握" msgid "Sideways Wii Remote" msgstr "横握 Wii 遥控器" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "签名数据库" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "有符号 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "有符号 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "有符号 8" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "有符号整数" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "简体中文" @@ -8980,7 +9190,7 @@ msgstr "简体中文" msgid "Simulate DK Bongos" msgstr "模仿 DK 小对鼓" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "六轴" @@ -9007,7 +9217,7 @@ msgstr "跳过绘制" msgid "Skip EFB Access from CPU" msgstr "跳过 CPU 对 EFB 访问" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "跳过主菜单" @@ -9015,7 +9225,7 @@ msgstr "跳过主菜单" msgid "Skip Presenting Duplicate Frames" msgstr "跳过重复出现的帧" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -9033,19 +9243,19 @@ msgstr "" msgid "Slider Bar" msgstr "滑品板" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "插槽 A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "插槽 A:" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "插槽 B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "插槽 B:" @@ -9063,7 +9273,7 @@ msgstr "套接字表" msgid "Software Renderer" msgstr "软件渲染器" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "一些数据无法读取。" @@ -9082,11 +9292,11 @@ msgstr "" "请检查高亮显示的值。" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "按字母排序" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "声音:" @@ -9099,8 +9309,8 @@ msgid "Spain" msgstr "西班牙" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "西班牙语" @@ -9108,7 +9318,7 @@ msgstr "西班牙语" msgid "Speaker Pan" msgstr "扬声器声像" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "扬声器音量:" @@ -9149,7 +9359,7 @@ msgstr "速度" msgid "Speed up Disc Transfer Rate" msgstr "提升光盘传输率" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "稳定版(每年一次)" @@ -9161,16 +9371,16 @@ msgstr "堆栈结束" msgid "Stack start" msgstr "堆栈开始" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "标准控制器" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "开始" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "开始联机...(&N)" @@ -9178,11 +9388,13 @@ msgstr "开始联机...(&N)" msgid "Start New Cheat Search" msgstr "开始新的金手指搜索" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "开始录制输入(&C)" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "开始录制" @@ -9198,7 +9410,7 @@ msgstr "启动时附加 Riivolution 补丁" msgid "Start with Riivolution Patches..." msgstr "启动时附加 Riivolution 补丁..." -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "游戏已启动" @@ -9209,7 +9421,7 @@ msgstr "游戏已启动" msgid "State" msgstr "状态" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "方向盘" @@ -9237,19 +9449,19 @@ msgstr "单步跳出" msgid "Step Over" msgstr "单步跳过" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "跳出成功!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "跳出超时!" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "跳过正在处理..." -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "单步成功!" @@ -9258,20 +9470,20 @@ msgstr "单步成功!" msgid "Stepping" msgstr "步进" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "立体声" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "立体 3D 模式" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "立体 3D 模式:" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "立体 3D" @@ -9292,11 +9504,15 @@ msgstr "摇杆" msgid "Stop" msgstr "停止" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "停止播放/录制输入" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "停止录制" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "游戏已停止" @@ -9310,7 +9526,7 @@ msgstr "仅存储 EFB 副本为纹理" msgid "Store XFB Copies to Texture Only" msgstr "仅存储 XFB 副本为纹理" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -9322,7 +9538,7 @@ msgstr "" "开启 = EFB 副本为纹理
关闭 = EFB 副本为内存(和纹理)" "

如果不确定,请勾选此项。" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -9338,7 +9554,7 @@ msgstr "" msgid "Stretch to Window" msgstr "拉伸到窗口大小" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "严格设置同步" @@ -9361,16 +9577,16 @@ msgstr "手写笔" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "成功" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "已成功加入联机索引" @@ -9380,11 +9596,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "成功转换 %n 个镜像。" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "成功删除 '%1'。" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "在 %1 个存档文件中 %n 个导出成功。" @@ -9393,7 +9609,7 @@ msgstr "在 %1 个存档文件中 %n 个导出成功。" msgid "Successfully exported save files" msgstr "成功导出存档文件" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "已成功从 NAND 中提取证书" @@ -9405,12 +9621,12 @@ msgstr "提取文件成功。" msgid "Successfully extracted system data." msgstr "提取系统数据成功。" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "导入存档文件成功。" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "成功将此软件安装到 NAND。" @@ -9422,16 +9638,16 @@ msgstr "成功将此软件从 NAND 中移除。" msgid "Support" msgstr "支持" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "支持的文件格式" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "支持 SD 和 SDHC 格式。默认大小为 128 MB。" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "环绕" @@ -9439,11 +9655,11 @@ msgstr "环绕" msgid "Suspended" msgstr "已暂停" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "交换双眼" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -9457,50 +9673,67 @@ msgstr "" msgid "Swing" msgstr "挥舞" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "转换到 A" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "转换到 B" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "符号" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "符号 (%1) 终止地址:" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" +"未找到符号映射。\n" +"\n" +"如果不存在,你可以从菜单栏生成一个:\n" +"符号 -> 生成符号自 ->\n" +"\t地址 | 签名数据库 | RSO 模块" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "符号名:" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "符号" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "同步" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "同步 AR/Gecko 代码" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "同步所有 Wii 存档" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "同步存档" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "同步并配对真实 Wii 遥控器" @@ -9515,37 +9748,37 @@ msgid "" msgstr "" "同步 GPU 与 CPU 线程以帮助防止双核模式下的随机卡死。(开=兼容,关=快速)" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "正在同步 AR 代码..." -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "正在同步 Gecko 代码..." -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "正在同步存档数据..." -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "系统语言:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "TAS 输入" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "TAS 工具" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "标签" @@ -9563,11 +9796,11 @@ msgstr "尾" msgid "Taiwan" msgstr "台湾" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "屏幕截图" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "测试" @@ -9576,7 +9809,7 @@ msgstr "测试" msgid "Texture Cache" msgstr "纹理缓存" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "纹理缓存精度" @@ -9598,7 +9831,7 @@ msgstr "DFF 的最低加载程序版本 ({0}) 超过此 FIFO 播放器的版本 msgid "The H3 hash table for the {0} partition is not correct." msgstr "分区 {0} 的 H3 哈希表不正确。" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "此 IPL 文件不是已知的正确转储。(CRC32: {0:x})" @@ -9612,13 +9845,13 @@ msgstr "此 IPL 文件不是已知的正确转储。(CRC32: {0:x})" msgid "The Masterpiece partitions are missing." msgstr "缺少杰作分区。" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "该 NAND 无法修复。建议备份您当前的数据并使用新的 NAND 启动。" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "NAND 已修复。" @@ -9658,7 +9891,7 @@ msgstr "分区 {0} 的数据大小无法用区块大小平均分配。" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "解密密钥需要附加到 NAND 备份文件中。" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9674,7 +9907,7 @@ msgstr "无法读取此光盘 (at {0:#x} - {1:#x})。" msgid "The disc that was about to be inserted couldn't be found." msgstr "无法找到已可插入的光盘。" -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9699,19 +9932,19 @@ msgstr "模拟的 Wii 主机已经是最新的。" msgid "The entered MAC address is invalid." msgstr "输入的 MAC 地址无效。" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "输入的 PID 无效。" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "输入的 VID 无效。" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "此表达式含有语法错误。" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9767,7 +10000,7 @@ msgstr "游戏 ID 是 {0} ,但应该为 {1} 。" msgid "The game disc does not contain any usable update information." msgstr "此游戏光盘未包含任何可用的更新信息。" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "游戏当前正在运行。" @@ -9780,7 +10013,7 @@ msgstr "" "该游戏区域与你的主机不匹配。为避免系统菜单出现问题,现无法使用此光盘更新模拟" "主机。" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9801,7 +10034,7 @@ msgstr "哈希值不匹配!" msgid "The hashes match!" msgstr "哈希值匹配!" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9827,12 +10060,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "此 %1 中的补丁不适用于选定的游戏或游戏修订版。" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "配置文件 '%1' 不存在" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "被录制的游戏 ({0}) 与所选游戏 ({1}) 不一致" @@ -9849,20 +10082,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "产生的已解密 AR 代码不包含任何行。" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "同一文件不能在多个插槽中使用;其已被 %1 占用。" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "服务器与客户端的联机版本不兼容。" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "服务器已满。" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "服务器发送了一个未知错误消息。" @@ -9886,7 +10119,7 @@ msgstr "指定的公用密钥索引是 {0} ,但应该为 {1} 。" msgid "The specified file \"{0}\" does not exist" msgstr "指定的文件 “{0}” 不存在" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "目标存储卡已包含文件 “%1”。" @@ -9937,7 +10170,7 @@ msgstr "分区 {0} 未正确对齐。" msgid "There are too many partitions in the first partition table." msgstr "第一个分区表中的分区太多。" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "没有需要撤销的操作。" @@ -9977,7 +10210,7 @@ msgid "" msgstr "" "此韩语游戏设置为使用通常不在韩版主机上用到的 IOS。 这很可能导致错误 #002。" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "此 USB 设备已列入白名单。" @@ -9995,7 +10228,7 @@ msgid "" "Replay itself." msgstr "此Action Replay模拟器不支持修改Action Replay本身的代码。" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "不能被撤销!" @@ -10043,7 +10276,11 @@ msgstr "" "此光盘镜像太小并且缺少一些数据。问题原因很可能这是一个双层光盘但被转储为单层" "光盘。" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "此文件未包含有效的 Wii 文件系统。" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "此文件似乎不是一个 BootMii NAND 备份。" @@ -10065,17 +10302,17 @@ msgstr "" "这个游戏需要边框模拟才能正常运行,但你的显卡或其驱动程序不支持。 因此在运行此" "游戏时将会发生错误或画面冻结。" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "这是一个错误的转储。" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "这是一个错误的转储。但并不一定表示游戏无法正常运行。" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." @@ -10083,11 +10320,11 @@ msgstr "" "依据 Redump.org,这是一个正确的转储,但 Dolphin 发现了问题。这可能是 Dolphin " "中的错误。" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "这是一个正确的转储。" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "此会话需要密码:" @@ -10152,13 +10389,13 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "该数值将与图像设置中设定的深度值相乘。" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "这将限制每个客户端用于存档同步的数据块上传速度。" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -10181,7 +10418,7 @@ msgstr "线程" msgid "Threshold" msgstr "阈值" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "TiB" @@ -10198,22 +10435,22 @@ msgstr "触发校准的稳定输入时间段。(0 为禁用)" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "标题" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "至" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "至:" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "切换全屏(&F)" @@ -10238,7 +10475,7 @@ msgid "Toggle Aspect Ratio" msgstr "切换长宽比" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "切换断点" @@ -10298,14 +10535,20 @@ msgstr "标记化失败。" msgid "Toolbar" msgstr "工具栏" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "顶部" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "上下" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "总命中数" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -10340,20 +10583,20 @@ msgid "Touch" msgstr "接触" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "繁体中文" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "穿透错误" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "穿透服务器" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "穿透服务器与主机连接超时" @@ -10383,22 +10626,14 @@ msgstr "扳机" msgid "Type" msgstr "类型" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 msgid "Typical GameCube/Wii Address Space" msgstr "典型 GameCube/Wii 地址空间" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" -msgstr "U&16" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "U&32" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" -msgstr "U&8" - #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 msgid "UNKNOWN" msgstr "未知" @@ -10413,9 +10648,9 @@ msgstr "USB Gecko" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "USB 白名单错误" @@ -10452,10 +10687,14 @@ msgstr "" "

在理想情况下将在消除着色器编译卡顿的同时尽可能减小性能影响,但效果因" "视频驱动的行为而异。" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "无法自动检测 RSO 模块" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -10479,7 +10718,11 @@ msgstr "" "\n" "是否要忽略此行继续分析?" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "无法写入文件 {0}" @@ -10491,15 +10734,15 @@ msgstr "未绑定" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "未压缩的 GC/Wii 镜像 (*.iso *.gcm)" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "撤销载入状态" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "撤销保存状态" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "卸载" @@ -10515,18 +10758,18 @@ msgstr "" "卸载 WAD 会将该游戏的当前已安装版本从 NAND 中移除,而不会删除其存档。是否继" "续?" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "美国" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "未知" @@ -10534,7 +10777,7 @@ msgstr "未知" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "未知 DVD 命令 {0:08x} - 致命错误" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "收到未知的 同步_代码 消息,ID:{0}" @@ -10544,7 +10787,7 @@ msgid "" "Kicking player!" msgstr "收到未知的 同步_GECKO_代码 消息,ID:{0} 来自玩家:{1} 剔除玩家!" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "收到未知的 同步_存档_数据 消息,ID:{0}" @@ -10554,15 +10797,15 @@ msgid "" "player!" msgstr "收到未知的 同步_存档_数据 消息,ID:{0} 来自玩家:{1} 剔除玩家!" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "未知地址空间" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "未知作者" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "未知数据类型" @@ -10570,19 +10813,19 @@ msgstr "未知数据类型" msgid "Unknown disc" msgstr "未知光盘" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "发生未知错误。" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "未知错误 {0:x}" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "未知错误。" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "收到未知的消息,ID:{0}" @@ -10590,7 +10833,7 @@ msgstr "收到未知的消息,ID:{0}" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "收到未知的消息,ID:{0} 来自玩家:{1} 剔除玩家!" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "无限制" @@ -10606,13 +10849,28 @@ msgstr "解锁光标" msgid "Unpacking" msgstr "正在解包" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "无符号 16" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "无符号 32" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "无符号 8" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "无符号整数" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10621,7 +10879,7 @@ msgstr "上" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "更新" @@ -10678,7 +10936,7 @@ msgstr "切换竖握" msgid "Upright Wii Remote" msgstr "竖握 Wii 遥控器" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "使用情况统计报告设置" @@ -10694,7 +10952,7 @@ msgstr "使用自定义用户风格" msgid "Use Lossless Codec (FFV1)" msgstr "使用无损编解码器 (FFV1)" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "使用 PAL60 模式 (EuRGB60)" @@ -10726,18 +10984,53 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "双眼使用同一个深度缓冲,部分游戏需要。" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "在扫描时使用内存映射器配置" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "使用物理地址" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "如可能则使用虚拟地址" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" +"用于根据应该运行的时间来查找函数。\n" +"类似于 Cheat Engine 终极映射。\n" +"使用前必须加载符号映射。\n" +"包含/排除列表将在结束/重启模拟时持续存在。\n" +"这些列表在 Dolphin 关闭时不会保留。\n" +"\n" +"“开始录制”:跟踪运行的函数。\n" +"“停止录制”:擦除当前录制内容但不更改到列表。\n" +"“代码未执行”:录制时点击,则将录制的函数添加到排除列表,然后重置录制列表。\n" +"“代码已执行”:录制时点击,则将录制的函数添加到包含列表,然后重置录制列表。\n" +"\n" +"在你同时使用排除和包含一次后,将从包含列表中减去排除列表,并显示任意剩余的包" +"含数。你可以继续使用“代码未执行”/“代码已执行”来缩小结果范围。" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "用户配置" @@ -10750,11 +11043,11 @@ msgstr "用户界面" msgid "User Style:" msgstr "用户风格:" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "用户变量" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" @@ -10764,7 +11057,7 @@ msgstr "" "你可以使用其来保存或检索同一个\n" "父控制器输入和输出之间的值。" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10797,23 +11090,23 @@ msgstr "" msgid "Using Qt %1" msgstr "使用 Qt %1" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "通常用于轻量对象" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "通常用于法线矩阵" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "通常用于位置矩阵" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "通常用于纹理坐标矩阵" @@ -10826,7 +11119,7 @@ msgstr "实用功能" msgid "V-Sync" msgstr "垂直同步" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "值" @@ -10859,8 +11152,8 @@ msgstr "验证证书" msgid "Verifying" msgstr "正在验证" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "版本" @@ -10896,7 +11189,7 @@ msgstr "查看内存(&M)" msgid "Virtual Notches" msgstr "虚拟接口" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "虚拟地址空间" @@ -10923,7 +11216,7 @@ msgstr "增大音量" msgid "Vulkan" msgstr "Vulkan" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "WAD 文件 (*.wad)" @@ -10975,7 +11268,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "WASAPI (独占模式)" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "WFS 路径:" @@ -10983,8 +11276,8 @@ msgstr "WFS 路径:" msgid "WIA GC/Wii images (*.wia)" msgstr "WIA GC/Wii 镜像 (*.wia)" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "等待第一次扫描..." @@ -11012,7 +11305,7 @@ msgstr "" "等待场消隐期以防止撕裂。

模拟速度低于 100% 时会降低性能。" "

如果不确定,请不要勾选此项。" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -11029,10 +11322,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "警告" @@ -11050,7 +11343,7 @@ msgid "" "the loaded file header ({1})" msgstr "警告:BAT 所标示的区块数 ({0}) 与已载入文件头中的 ({1}) 不匹配" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " @@ -11059,7 +11352,7 @@ msgstr "" "警告:您读取的存档在当前影片结束之后。(字节 {0} > {1}) (输入 {2} > {3}) 。您" "需要读取另一个存档方可继续,或关闭只读模式再读取此状态存档。" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " @@ -11068,7 +11361,7 @@ msgstr "" "警告:您读取的存档影片已结束在存档的当前帧之前 (字节 {0} < {1}) (帧 {2} < " "{3})。您需要读取另一个存档方可继续。" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" @@ -11077,7 +11370,7 @@ msgstr "" "警告:您读取的存档在 {0} ({1:#x}) 字节处与影片不匹配。您需要读取另一个存档方" "可继续,或关闭只读模式再读取此状态存档。否则将可能发生不同步。" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -11117,7 +11410,7 @@ msgstr "" msgid "Watch" msgstr "监视" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "网站" @@ -11152,11 +11445,11 @@ msgstr "" "强选项卡中启用了“特殊多级纹理检测”,则特殊多级纹理也会被转储。" "

如果不确定,请勾选此项。" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "USB 直通设备白名单" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "宽屏修正" @@ -11172,11 +11465,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "Wii 菜单" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "Wii NAND 根目录:" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "Wii 遥控器" @@ -11184,8 +11477,8 @@ msgstr "Wii 遥控器" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "Wii 遥控器 %1" @@ -11198,11 +11491,11 @@ msgstr "Wii 遥控器按键" msgid "Wii Remote Orientation" msgstr "Wii 遥控器方向" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "Wii 遥控器设置" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "Wii 遥控器" @@ -11218,7 +11511,7 @@ msgstr "Wii TAS 输入 %1 - Wii 遥控器" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "Wii TAS 输入 %1 - Wii 遥控器 + 双节棍" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "Wii 和 Wii 遥控器" @@ -11226,7 +11519,7 @@ msgstr "Wii 和 Wii 遥控器" msgid "Wii data is not public yet" msgstr "Wii 数据尚未公开" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "Wii 存档文件 (*.bin);; 所有文件 (*)" @@ -11254,18 +11547,18 @@ msgid "World" msgstr "全球" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "写入" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "写入存档数据" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "只写" @@ -11278,12 +11571,12 @@ msgid "Write to File" msgstr "写入到文件" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "写入到日志" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "写入到日志并中断" @@ -11291,7 +11584,7 @@ msgstr "写入到日志并中断" msgid "Write to Window" msgstr "写入到窗口" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "错误版本" @@ -11302,7 +11595,7 @@ msgstr "错误版本" msgid "X" msgstr "X" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "XF 寄存器" @@ -11331,8 +11624,8 @@ msgid "Yellow" msgstr "黄" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "是" @@ -11381,7 +11674,7 @@ msgstr "" "使用 macOS 10.14 (Mojave) 或更高版本。请不要报告遇到的任何问题,除非在 " "10.14+ 上也出现了。" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "您正在运行此更新通道上提供的最新版本。" @@ -11421,11 +11714,11 @@ msgstr "" msgid "You have to enter a name." msgstr "您必须输入一个名称。" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "你必须为会话提供一个名称!" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "你必须为会话提供一个区域!" @@ -11433,7 +11726,7 @@ msgstr "你必须为会话提供一个区域!" msgid "You must restart Dolphin in order for the change to take effect." msgstr "您必须重新启动 Dolphin 以使改动生效。" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "你必须选择一个游戏来建主机!" @@ -11471,23 +11764,23 @@ msgstr "Zero 3 代码不支持" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "Dophin 未知的零代码:{0:08x}" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "[%1, %2]" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "[%1, %2] 和 [%3, %4]" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "^ 异或" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "已对齐" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "任意值" @@ -11506,13 +11799,13 @@ msgstr "厘米" msgid "d3d12.dll could not be loaded." msgstr "无法加载 d3d12.dll。" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "默认" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "连接已断开" @@ -11528,31 +11821,31 @@ msgstr "errno" msgid "fake-completion" msgstr "伪完成" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "等于" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "大于" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "大于或等于" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "小于" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "小于或等于" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "不等于" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "上个值" @@ -11584,7 +11877,7 @@ msgstr "关" msgid "on" msgstr "开" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "或选择一个设备" @@ -11593,7 +11886,7 @@ msgstr "或选择一个设备" msgid "s" msgstr "秒" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "这个值:" @@ -11602,7 +11895,7 @@ msgstr "这个值:" msgid "uDraw GameTablet" msgstr "uDraw 绘图板" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "未对齐" @@ -11621,7 +11914,7 @@ msgstr "{0} (Masterpiece)" msgid "{0} (NKit)" msgstr "{0} (NKit)" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "{0} IPL 位于 {1} 目录中。光盘可能无法识别" @@ -11642,7 +11935,7 @@ msgstr "" "请验证你的写入权限或者将文件移动至 Dolphin 之外" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "区块 {0} ,共 {1} 。压缩率 {2}%" @@ -11650,7 +11943,7 @@ msgstr "区块 {0} ,共 {1} 。压缩率 {2}%" msgid "{0} was not a directory, moved to *.original" msgstr "{0} 不是一个目录,已移动至 *.original" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "| 或" diff --git a/Languages/po/zh_TW.po b/Languages/po/zh_TW.po index 5b5fda5261bf..e62d57a49afb 100644 --- a/Languages/po/zh_TW.po +++ b/Languages/po/zh_TW.po @@ -14,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: Dolphin Emulator\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 23:50+0100\n" -"PO-Revision-Date: 2022-01-18 22:27+0000\n" -"Last-Translator: JosJuice\n" +"POT-Creation-Date: 2022-04-30 23:46+0200\n" +"PO-Revision-Date: 2013-01-23 13:48+0000\n" +"Last-Translator: Narusawa Yui , 2016,2018\n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/delroth/dolphin-" "emu/language/zh_TW/)\n" "Language: zh_TW\n" @@ -25,7 +25,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1401 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1402 msgid "" "\n" "\n" @@ -33,7 +33,7 @@ msgid "" "problems that Dolphin is unable to detect." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1407 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1408 msgid "" "\n" "\n" @@ -41,7 +41,7 @@ msgid "" "that it hasn't been tampered with." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1154 +#: Source/Core/DolphinQt/MenuBar.cpp:1164 msgid "" "\n" "\n" @@ -57,7 +57,7 @@ msgstr "" msgid " (Disc %1)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:266 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 msgid "! Not" msgstr "" @@ -65,7 +65,7 @@ msgstr "" msgid "\"{0}\" is an invalid GCM/ISO file, or is not a GC/Wii ISO." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:279 msgid "$ User Variable" msgstr "" @@ -79,7 +79,7 @@ msgstr "" msgid "%" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 msgid "% Modulo" msgstr "" @@ -93,17 +93,17 @@ msgstr "" msgid "%1 %" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:282 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:308 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:331 msgid "%1 %2" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:291 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:314 msgid "%1 %2 %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:79 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:166 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:80 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:167 msgid "%1 (%2)" msgstr "" @@ -122,7 +122,7 @@ msgid "%1 (Revision %3)" msgstr "" #. i18n: "Stock" refers to input profiles included with Dolphin -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:499 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:500 msgid "%1 (Stock)" msgstr "" @@ -159,7 +159,7 @@ msgstr "" msgid "%1 doesn't support this feature on your system." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:200 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:201 msgid "%1 doesn't support this feature." msgstr "" @@ -170,23 +170,23 @@ msgid "" "Current Frame: %3" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:832 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:871 msgid "%1 has joined" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:837 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:876 msgid "%1 has left" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 msgid "%1 is not a valid ROM" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:959 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:998 msgid "%1 is now golfing" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:111 msgid "%1 memory ranges" msgstr "" @@ -195,11 +195,11 @@ msgstr "" msgid "%1 ms" msgstr "%1 ms" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 session found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:264 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:265 msgid "%1 sessions found" msgstr "" @@ -211,15 +211,15 @@ msgstr "" msgid "%1% (%2 MHz)" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:167 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 msgid "%1% (Normal Speed)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:158 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 msgid "%1, %2, %3, %4" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:603 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:604 msgid "%1: %2" msgstr "" @@ -235,30 +235,30 @@ msgstr "%1[%2]: %3 %" msgid "%1[%2]: %3/%4 MiB" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:65 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:66 msgid "%1x Native (%2x%3)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:287 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:305 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:310 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:328 #, c-format msgctxt "" msgid "%n address(es) could not be accessed in emulated memory." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:278 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:301 #, c-format msgctxt "" msgid "%n address(es) remain." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:277 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:300 #, c-format msgctxt "" msgid "%n address(es) were removed." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 msgid "& And" msgstr "" @@ -278,7 +278,7 @@ msgstr "" msgid "&4x" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:594 +#: Source/Core/DolphinQt/MenuBar.cpp:604 msgid "&About" msgstr "關於(&A)" @@ -287,11 +287,11 @@ msgid "&Add Memory Breakpoint" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:56 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:80 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 msgid "&Add New Code..." msgstr "新增代碼 (&A)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:546 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:558 msgid "&Add function" msgstr "新增功能 (&A)" @@ -299,19 +299,19 @@ msgstr "新增功能 (&A)" msgid "&Add..." msgstr "新增... (&A)" -#: Source/Core/DolphinQt/MenuBar.cpp:523 +#: Source/Core/DolphinQt/MenuBar.cpp:524 msgid "&Audio Settings" msgstr "聲音設定 (&A)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:187 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:192 msgid "&Auto Update:" msgstr "自動更新 (&A)" -#: Source/Core/DolphinQt/MenuBar.cpp:539 +#: Source/Core/DolphinQt/MenuBar.cpp:540 msgid "&Automatic Start" msgstr "自動啟動 (&A)" -#: Source/Core/DolphinQt/MenuBar.cpp:194 +#: Source/Core/DolphinQt/MenuBar.cpp:195 msgid "&Boot from DVD Backup" msgstr "從 DVD 備份開機 (&B)" @@ -319,11 +319,11 @@ msgstr "從 DVD 備份開機 (&B)" msgid "&Borderless Window" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:464 +#: Source/Core/DolphinQt/MenuBar.cpp:465 msgid "&Breakpoints" msgstr "中斷點(&B)" -#: Source/Core/DolphinQt/MenuBar.cpp:577 +#: Source/Core/DolphinQt/MenuBar.cpp:587 msgid "&Bug Tracker" msgstr "" @@ -331,15 +331,15 @@ msgstr "" msgid "&Cancel" msgstr "取消 (&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:230 +#: Source/Core/DolphinQt/MenuBar.cpp:231 msgid "&Cheats Manager" msgstr "作弊碼管理器 (&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:587 +#: Source/Core/DolphinQt/MenuBar.cpp:597 msgid "&Check for Updates..." msgstr "檢查更新 (&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:959 +#: Source/Core/DolphinQt/MenuBar.cpp:969 msgid "&Clear Symbols" msgstr "" @@ -347,7 +347,7 @@ msgstr "" msgid "&Clone..." msgstr "相容版 (&C)" -#: Source/Core/DolphinQt/MenuBar.cpp:429 +#: Source/Core/DolphinQt/MenuBar.cpp:430 msgid "&Code" msgstr "代碼 (&C)" @@ -355,19 +355,20 @@ msgstr "代碼 (&C)" msgid "&Connected" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:525 +#: Source/Core/DolphinQt/MenuBar.cpp:526 msgid "&Controller Settings" msgstr "控制器設定(&C)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:525 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:534 msgid "&Copy address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:136 msgid "&Create..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:111 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:444 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:112 msgid "&Delete" msgstr "刪除 (&D)" @@ -379,7 +380,7 @@ msgstr "刪除監視 (&D)" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:57 #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:155 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:81 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 msgid "&Edit Code..." msgstr "編輯代碼 (&E)" @@ -387,11 +388,11 @@ msgstr "編輯代碼 (&E)" msgid "&Edit..." msgstr "編輯 (&E)" -#: Source/Core/DolphinQt/MenuBar.cpp:213 +#: Source/Core/DolphinQt/MenuBar.cpp:214 msgid "&Eject Disc" msgstr "退出碟片 (&E)" -#: Source/Core/DolphinQt/MenuBar.cpp:307 +#: Source/Core/DolphinQt/MenuBar.cpp:308 msgid "&Emulation" msgstr "模擬 (&E)" @@ -403,43 +404,47 @@ msgstr "" msgid "&Export State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:115 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 msgid "&Export as .gci..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:207 +#: Source/Core/DolphinQt/MenuBar.cpp:208 msgid "&File" msgstr "檔案 (&F)" -#: Source/Core/DolphinQt/MenuBar.cpp:546 +#: Source/Core/DolphinQt/MenuBar.cpp:554 msgid "&Font..." msgstr "字體... (&F)" -#: Source/Core/DolphinQt/MenuBar.cpp:313 +#: Source/Core/DolphinQt/MenuBar.cpp:314 msgid "&Frame Advance" msgstr "畫格步進(&F)" -#: Source/Core/DolphinQt/MenuBar.cpp:527 +#: Source/Core/DolphinQt/MenuBar.cpp:528 msgid "&Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:961 +#: Source/Core/DolphinQt/MenuBar.cpp:971 msgid "&Generate Symbols From" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:573 +#: Source/Core/DolphinQt/MenuBar.cpp:583 msgid "&GitHub Repository" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:522 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:442 +msgid "&Go to start of function" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:523 msgid "&Graphics Settings" msgstr "影像設定(&G)" -#: Source/Core/DolphinQt/MenuBar.cpp:564 +#: Source/Core/DolphinQt/MenuBar.cpp:574 msgid "&Help" msgstr "說明(&H)" -#: Source/Core/DolphinQt/MenuBar.cpp:526 +#: Source/Core/DolphinQt/MenuBar.cpp:527 msgid "&Hotkey Settings" msgstr "快捷鍵設定(&D)" @@ -451,11 +456,11 @@ msgstr "" msgid "&Import State..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:125 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 msgid "&Import..." msgstr "匯入... (&I)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:548 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:560 msgid "&Insert blr" msgstr "" @@ -463,7 +468,7 @@ msgstr "" msgid "&Interframe Blending" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:489 +#: Source/Core/DolphinQt/MenuBar.cpp:490 msgid "&JIT" msgstr "&JIT" @@ -471,23 +476,23 @@ msgstr "&JIT" msgid "&Language:" msgstr "語言 (&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:330 +#: Source/Core/DolphinQt/MenuBar.cpp:331 msgid "&Load State" msgstr "讀取進度(&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:967 +#: Source/Core/DolphinQt/MenuBar.cpp:977 msgid "&Load Symbol Map" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:421 +#: Source/Core/DolphinQt/MenuBar.cpp:422 msgid "&Lock Widgets In Place" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:473 +#: Source/Core/DolphinQt/MenuBar.cpp:474 msgid "&Memory" msgstr "記憶卡(&M)" -#: Source/Core/DolphinQt/MenuBar.cpp:723 +#: Source/Core/DolphinQt/MenuBar.cpp:733 msgid "&Movie" msgstr "影片(&M)" @@ -495,7 +500,7 @@ msgstr "影片(&M)" msgid "&Mute" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:481 +#: Source/Core/DolphinQt/MenuBar.cpp:482 msgid "&Network" msgstr "" @@ -503,24 +508,24 @@ msgstr "" msgid "&No" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:134 -#: Source/Core/DolphinQt/MenuBar.cpp:208 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:135 +#: Source/Core/DolphinQt/MenuBar.cpp:209 msgid "&Open..." msgstr "開啟(&O)..." -#: Source/Core/DolphinQt/MenuBar.cpp:518 +#: Source/Core/DolphinQt/MenuBar.cpp:519 msgid "&Options" msgstr "選項(&O)" -#: Source/Core/DolphinQt/MenuBar.cpp:987 +#: Source/Core/DolphinQt/MenuBar.cpp:997 msgid "&Patch HLE Functions" msgstr "修正 HLE 功能 (&P)" -#: Source/Core/DolphinQt/MenuBar.cpp:309 +#: Source/Core/DolphinQt/MenuBar.cpp:310 msgid "&Pause" msgstr "暫停(&P)" -#: Source/Core/DolphinQt/MenuBar.cpp:308 +#: Source/Core/DolphinQt/MenuBar.cpp:309 msgid "&Play" msgstr "執行(&P)" @@ -528,11 +533,11 @@ msgstr "執行(&P)" msgid "&Properties" msgstr "屬性(&P)" -#: Source/Core/DolphinQt/MenuBar.cpp:738 +#: Source/Core/DolphinQt/MenuBar.cpp:748 msgid "&Read-Only Mode" msgstr "唯讀模式(&R)" -#: Source/Core/DolphinQt/MenuBar.cpp:437 +#: Source/Core/DolphinQt/MenuBar.cpp:438 msgid "&Registers" msgstr "寄存器(&R)" @@ -541,24 +546,24 @@ msgid "&Remove" msgstr "移除 (&R)" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:58 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:82 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 msgid "&Remove Code" msgstr "移除代碼 (&R)" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:537 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 msgid "&Rename symbol" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:400 -#: Source/Core/DolphinQt/MenuBar.cpp:311 +#: Source/Core/DolphinQt/MenuBar.cpp:312 msgid "&Reset" msgstr "重新啟動(&R)" -#: Source/Core/DolphinQt/MenuBar.cpp:227 +#: Source/Core/DolphinQt/MenuBar.cpp:228 msgid "&Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:968 +#: Source/Core/DolphinQt/MenuBar.cpp:978 msgid "&Save Symbol Map" msgstr "" @@ -566,11 +571,11 @@ msgstr "" msgid "&Scan e-Reader Card(s)..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:172 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 msgid "&Speed Limit:" msgstr "限制速度 (&S)" -#: Source/Core/DolphinQt/MenuBar.cpp:310 +#: Source/Core/DolphinQt/MenuBar.cpp:311 msgid "&Stop" msgstr "停止(&S)" @@ -578,11 +583,11 @@ msgstr "停止(&S)" msgid "&Theme:" msgstr "主題 (&T)" -#: Source/Core/DolphinQt/MenuBar.cpp:446 +#: Source/Core/DolphinQt/MenuBar.cpp:447 msgid "&Threads" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:225 +#: Source/Core/DolphinQt/MenuBar.cpp:226 msgid "&Tools" msgstr "工具(&T)" @@ -590,17 +595,17 @@ msgstr "工具(&T)" msgid "&Unload ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:395 +#: Source/Core/DolphinQt/MenuBar.cpp:396 msgid "&View" msgstr "檢視(&V)" #. i18n: This kind of "watch" is used for watching emulated memory. #. It's not related to timekeeping devices. -#: Source/Core/DolphinQt/MenuBar.cpp:456 +#: Source/Core/DolphinQt/MenuBar.cpp:457 msgid "&Watch" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:566 +#: Source/Core/DolphinQt/MenuBar.cpp:576 msgid "&Website" msgstr "網站(&W)" @@ -612,11 +617,11 @@ msgstr "&Wiki" msgid "&Yes" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1256 +#: Source/Core/DolphinQt/MenuBar.cpp:1266 msgid "'%1' not found, no symbol names generated" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1462 +#: Source/Core/DolphinQt/MenuBar.cpp:1472 msgid "'%1' not found, scanning for common functions instead" msgstr "" @@ -628,7 +633,7 @@ msgstr "(無)" msgid "(host)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:174 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:175 msgid "(off)" msgstr "(關閉)" @@ -636,34 +641,34 @@ msgstr "(關閉)" msgid "(ppc)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:267 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 msgid "* Multiply" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:270 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 msgid "+ Add" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:282 msgid ", Comma" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:271 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 msgid "- Subtract" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:331 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:340 msgid "--> %1" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:225 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:631 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:675 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:167 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:97 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:98 msgid "..." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:269 msgid "/ Divide" msgstr "" @@ -671,6 +676,10 @@ msgstr "" msgid "128 Mbit (2043 blocks)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:216 +msgid "16 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:28 msgid "16 Mbit (251 blocks)" msgstr "" @@ -679,35 +688,35 @@ msgstr "" msgid "16-bit" msgstr "16位元" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:102 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:103 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 msgid "16-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:94 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:127 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:95 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:139 msgid "16-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:118 msgid "16:9" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "16x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:190 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "1x" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:191 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "2x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "2x Native (1280x1056) for 720p" msgstr "" @@ -719,25 +728,25 @@ msgstr "" msgid "32-bit" msgstr "32位元" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:108 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:160 msgid "32-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:104 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:105 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 msgid "32-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:96 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:130 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:97 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:142 msgid "32-bit Unsigned Integer" msgstr "" #. i18n: Stereoscopic 3D #: Source/Core/Core/HotkeyManager.cpp:344 #: Source/Core/DolphinQt/Config/Mapping/Hotkey3D.cpp:22 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:446 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 msgid "3D" msgstr "" @@ -751,28 +760,32 @@ msgstr "" msgid "3x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 msgid "3x Native (1920x1584) for 1080p" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:214 +msgid "4 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:26 msgid "4 Mbit (59 blocks)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:116 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:117 msgid "4:3" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:193 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "4x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "4x Native (2560x2112) for 1440p" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:54 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 msgid "5x Native (3200x2640)" msgstr "" @@ -780,29 +793,33 @@ msgstr "" msgid "64 Mbit (1019 blocks)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:109 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:151 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:163 msgid "64-bit Float" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:106 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 msgid "64-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:98 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:133 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:99 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:145 msgid "64-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "6x Native (3840x3168) for 4K" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:55 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 msgid "7x Native (4480x3696)" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:215 +msgid "8 Bytes" +msgstr "" + #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:27 msgid "8 Mbit (123 blocks)" msgstr "" @@ -811,25 +828,25 @@ msgstr "" msgid "8-bit" msgstr "8位元" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:100 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:101 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:148 msgid "8-bit Signed Integer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:92 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:124 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:93 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:136 msgid "8-bit Unsigned Integer" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:75 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:76 msgid "8x" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:56 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:57 msgid "8x Native (5120x4224) for 5K" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:274 msgid "< Less-than" msgstr "" @@ -848,12 +865,12 @@ msgid "" "Notes:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:272 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:273 msgid "> Greater-than" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1422 -#: Source/Core/DolphinQt/MainWindow.cpp:1489 +#: Source/Core/DolphinQt/MainWindow.cpp:1425 +#: Source/Core/DolphinQt/MainWindow.cpp:1492 msgid "A NetPlay Session is already in progress!" msgstr "" @@ -871,17 +888,17 @@ msgstr "" msgid "A disc is already about to be inserted." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:231 +#: Source/Core/DolphinQt/Main.cpp:221 msgid "A save state cannot be loaded without specifying a game to launch." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:891 +#: Source/Core/DolphinQt/MainWindow.cpp:894 msgid "" "A shutdown is already in progress. Unsaved data may be lost if you stop the " "current emulation before it completes. Force stop?" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:258 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:262 msgid "A sync can only be triggered when a Wii game is running." msgstr "" @@ -890,7 +907,7 @@ msgstr "" msgid "AD16" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:114 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:115 msgid "" "ALERT:\n" "\n" @@ -914,8 +931,8 @@ msgstr "" msgid "AR Codes" msgstr "AR 代碼" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:155 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:131 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:204 msgid "ASCII" msgstr "" @@ -938,7 +955,7 @@ msgstr "" msgid "Accuracy:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:89 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:96 msgid "Action" msgstr "" @@ -1034,9 +1051,9 @@ msgstr "" msgid "Adapter:" msgstr "配接器:" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:56 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:74 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:49 msgid "Add" msgstr "新增" @@ -1044,11 +1061,11 @@ msgstr "新增" msgid "Add &breakpoint" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:32 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:31 msgid "Add New DSU Server" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:46 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:45 msgid "Add New USB Device" msgstr "" @@ -1080,46 +1097,49 @@ msgstr "" msgid "Add to &watch" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:404 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:619 msgid "Add to watch" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:35 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:158 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:167 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:36 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 msgid "Add..." msgstr "新增..." -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:80 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:49 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:166 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:178 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:173 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:185 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:180 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:155 -#: Source/Core/DolphinQt/MenuBar.cpp:962 +#: Source/Core/DolphinQt/MenuBar.cpp:972 msgid "Address" msgstr "位址" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:43 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:129 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:44 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:170 msgid "Address Space" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:107 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:119 msgid "Address space by CPU state" msgstr "" #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:155 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:43 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:137 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:46 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 msgid "Address:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:234 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:237 msgid "" "Adjusts the accuracy at which the GPU receives texture updates from RAM." "

The \"Safe\" setting eliminates the likelihood of the GPU missing " @@ -1163,39 +1183,43 @@ msgstr "進階" msgid "Africa" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:114 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:115 msgid "Aligned to data type length" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:360 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:437 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:588 -#: Source/Core/DolphinQt/MainWindow.cpp:739 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:361 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:438 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:589 +#: Source/Core/DolphinQt/MainWindow.cpp:742 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:121 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:328 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:51 msgid "All Files" msgstr "" #: Source/Core/DolphinQt/GCMemcardCreateNewDialog.cpp:75 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:401 msgid "All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:738 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:49 +#: Source/Core/DolphinQt/MainWindow.cpp:741 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:50 msgid "All GC/Wii files" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1307 -#: Source/Core/DolphinQt/MainWindow.cpp:1315 +#: Source/Core/DolphinQt/MainWindow.cpp:1310 +#: Source/Core/DolphinQt/MainWindow.cpp:1318 msgid "All Save States (*.sav *.s##);; All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:380 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:381 msgid "All devices" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:738 +msgid "All files (*)" +msgstr "" + #: Source/Core/Core/NetPlayServer.cpp:1170 msgid "All players' codes synchronized." msgstr "" @@ -1204,25 +1228,25 @@ msgstr "" msgid "All players' saves synchronized." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:142 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:147 msgid "Allow Mismatched Region Settings" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:264 +#: Source/Core/DolphinQt/Main.cpp:254 msgid "Allow Usage Statistics Reporting" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 msgid "Allow Writes to SD Card" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:35 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:36 msgid "" "Allows manipulation of the in-game camera.

If " "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:31 #: Source/Core/DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.cpp:19 #: Source/Core/DolphinQt/Config/Mapping/FreeLookRotation.cpp:29 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuExtensionMotionInput.cpp:38 @@ -1248,7 +1272,7 @@ msgstr "" msgid "An inserted disc was expected but not found." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Anaglyph" msgstr "" @@ -1266,39 +1290,39 @@ msgstr "" msgid "Angular velocity to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:380 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:381 msgid "Anisotropic Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:98 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:99 msgid "Anisotropic Filtering:" msgstr "各向異性過濾:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:377 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:378 msgid "Anti-Aliasing" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:96 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:97 msgid "Anti-Aliasing:" msgstr "邊緣抗鋸齒:" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:75 msgid "Any Region" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1601 +#: Source/Core/DolphinQt/MenuBar.cpp:1611 msgid "Append signature to" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:980 +#: Source/Core/DolphinQt/MenuBar.cpp:990 msgid "Append to &Existing Signature File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:984 +#: Source/Core/DolphinQt/MenuBar.cpp:994 msgid "Appl&y Signature File..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:307 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:308 msgid "" "Applies a post-processing effect after rendering a frame.

If unsure, select (off)." @@ -1312,15 +1336,15 @@ msgstr "" msgid "Apply" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1634 msgid "Apply signature file" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:92 msgid "Arbitrary Mipmap Detection" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 msgid "Are you sure that you want to delete '%1'?" msgstr "" @@ -1328,11 +1352,11 @@ msgstr "" msgid "Are you sure you want to delete this file?" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:240 msgid "Are you sure you want to delete this pack?" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:450 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:475 msgid "Are you sure you want to quit NetPlay?" msgstr "" @@ -1345,11 +1369,11 @@ msgid "Aspect Ratio" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:79 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:114 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:115 msgid "Aspect Ratio:" msgstr "畫面比例:" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:243 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:268 msgid "Assign Controller Ports" msgstr "" @@ -1357,7 +1381,7 @@ msgstr "" msgid "Assign Controllers" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:533 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:534 msgid "" "At least two of the selected save files have the same internal filename." msgstr "" @@ -1382,7 +1406,7 @@ msgstr "" msgid "Australia" msgstr "澳洲" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Author" msgstr "" @@ -1394,15 +1418,15 @@ msgstr "" msgid "Auto" msgstr "自動" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Auto (Multiple of 640x528)" msgstr "自動 (640x528 的倍數)" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:177 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:182 msgid "Auto Update Settings" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:456 msgid "" "Auto internal resolution is not allowed in strict sync mode, as it depends " "on window size.\n" @@ -1418,7 +1442,7 @@ msgstr "" msgid "Auto-Hide" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "Auto-detect RSO modules?" msgstr "" @@ -1429,12 +1453,12 @@ msgid "" msgstr "" #. i18n: The "Auxiliary" address space is the address space of ARAM (Auxiliary RAM). -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:178 msgid "Auxiliary" msgstr "" #. i18n: The symbol for the unit "bytes" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "B" msgstr "" @@ -1449,11 +1473,11 @@ msgid "" "00:17:ab." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:150 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:151 msgid "BIOS:" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:531 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:532 msgid "BP register " msgstr "" @@ -1479,7 +1503,7 @@ msgstr "裝置設定" msgid "Backend:" msgstr "" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:28 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:29 msgid "Background Input" msgstr "背景輸入" @@ -1490,7 +1514,13 @@ msgstr "背景輸入" msgid "Backward" msgstr "向後" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:864 +msgid "Bad Value Given" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:850 msgid "Bad address provided." msgstr "" @@ -1498,19 +1528,20 @@ msgstr "" msgid "Bad dump" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:856 msgid "Bad offset provided." msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:614 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 msgid "Bad value provided." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:935 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:217 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:150 -#: Source/Core/DolphinQt/MenuBar.cpp:621 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:151 +#: Source/Core/DolphinQt/MenuBar.cpp:631 msgid "Banner" msgstr "橫幅" @@ -1534,7 +1565,7 @@ msgstr "" msgid "Basic" msgstr "基本" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:131 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 msgid "Basic Settings" msgstr "基本設定" @@ -1542,7 +1573,7 @@ msgstr "基本設定" msgid "Bass" msgstr "Bass" -#: Source/Core/DolphinQt/Main.cpp:238 +#: Source/Core/DolphinQt/Main.cpp:228 msgid "Batch mode cannot be used without specifying a game to launch." msgstr "" @@ -1550,11 +1581,11 @@ msgstr "" msgid "Battery" msgstr "電池" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Beta (once a month)" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:37 msgid "BetterJoy, DS4Windows, etc" msgstr "" @@ -1576,7 +1607,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:945 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:231 -#: Source/Core/DolphinQt/MenuBar.cpp:631 +#: Source/Core/DolphinQt/MenuBar.cpp:641 msgid "Block Size" msgstr "" @@ -1589,7 +1620,7 @@ msgstr "" msgid "Blocking" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:156 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:157 msgid "Blocks" msgstr "區塊" @@ -1612,15 +1643,15 @@ msgid "" "Passthrough mode cannot be used." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:532 +#: Source/Core/DolphinQt/MenuBar.cpp:533 msgid "Boot to Pause" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1645 +#: Source/Core/DolphinQt/MainWindow.cpp:1648 msgid "BootMii NAND backup file (*.bin);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1671 +#: Source/Core/DolphinQt/MainWindow.cpp:1674 msgid "BootMii keys file (*.bin);;All Files (*)" msgstr "" @@ -1628,7 +1659,7 @@ msgstr "" msgid "Borderless Fullscreen" msgstr "無框全螢幕" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:188 msgid "Bottom" msgstr "下方" @@ -1642,7 +1673,7 @@ msgid "Branches" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:74 msgid "Break" msgstr "" @@ -1651,7 +1682,7 @@ msgstr "" msgid "Breakpoint" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:484 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:498 msgid "Breakpoint encountered! Step out aborted." msgstr "" @@ -1681,7 +1712,7 @@ msgstr "" msgid "Broadband Adapter MAC Address" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:237 +#: Source/Core/DolphinQt/MenuBar.cpp:238 msgid "Browse &NetPlay Sessions...." msgstr "" @@ -1689,12 +1720,12 @@ msgstr "" msgid "Buffer Size:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:847 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:886 msgid "Buffer size changed to %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:108 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:133 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Buffer:" msgstr "緩衝:" @@ -1736,11 +1767,11 @@ msgstr "按鈕" msgid "C Stick" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:979 +#: Source/Core/DolphinQt/MenuBar.cpp:989 msgid "C&reate Signature File..." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:548 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:549 msgid "CP register " msgstr "" @@ -1771,7 +1802,7 @@ msgstr "" msgid "Calculate" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:315 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:316 msgid "" "Calculates lighting of 3D objects per-pixel rather than per-vertex, " "smoothing out the appearance of lit polygons and making individual triangles " @@ -1791,15 +1822,15 @@ msgstr "" msgid "Calibration Period" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:290 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:291 msgid "Call display list at %1 with size %2" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:104 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:106 msgid "Callstack" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:64 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:65 msgid "Camera 1" msgstr "" @@ -1809,7 +1840,7 @@ msgstr "" msgid "Camera field of view (affects sensitivity of pointing)." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:473 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:496 msgid "Can only generate AR code for values in virtual memory." msgstr "" @@ -1817,16 +1848,16 @@ msgstr "" msgid "Can't find Wii Remote by connection handle {0:02x}" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1415 -#: Source/Core/DolphinQt/MainWindow.cpp:1482 +#: Source/Core/DolphinQt/MainWindow.cpp:1418 +#: Source/Core/DolphinQt/MainWindow.cpp:1485 msgid "Can't start a NetPlay Session while a game is still running!" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:58 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:57 #: Source/Core/DolphinQt/Config/VerifyWidget.cpp:151 -#: Source/Core/DolphinQt/MenuBar.cpp:1296 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:59 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:51 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:50 #: qtbase/src/gui/kernel/qplatformtheme.cpp:732 msgid "Cancel" msgstr "取消" @@ -1843,23 +1874,23 @@ msgstr "" msgid "Cannot boot this WAD because it could not be installed to the NAND." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:252 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 msgid "Cannot compare against last value on first search." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:610 +#: Source/Core/Core/Boot/Boot.cpp:603 msgid "Cannot find the GC IPL." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:476 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:499 msgid "Cannot generate AR code for this address." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:351 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:374 msgid "Cannot refresh without results." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:608 +#: Source/Core/Core/Boot/Boot.cpp:601 msgid "Cannot start the game, because the GC IPL could not be found." msgstr "" @@ -1881,7 +1912,7 @@ msgstr "" msgid "Change &Disc" msgstr "更換光碟(&D)" -#: Source/Core/DolphinQt/MenuBar.cpp:212 +#: Source/Core/DolphinQt/MenuBar.cpp:213 msgid "Change &Disc..." msgstr "更換光碟(&D)..." @@ -1889,15 +1920,15 @@ msgstr "更換光碟(&D)..." msgid "Change Disc" msgstr "更換光碟" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:145 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:150 msgid "Change Discs Automatically" msgstr "" -#: Source/Core/Core/Movie.cpp:1250 +#: Source/Core/Core/Movie.cpp:1259 msgid "Change the disc to {0}" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:43 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:44 msgid "" "Changes the in-game camera type during Free Look.

Six Axis: Offers " "full camera control on all axes, akin to moving a spacecraft in zero " @@ -1917,7 +1948,7 @@ msgstr "" msgid "Channel Partition (%1)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:214 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:239 msgid "Chat" msgstr "聊天" @@ -1933,11 +1964,11 @@ msgstr "尋找作弊代碼" msgid "Cheats Manager" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:260 +#: Source/Core/DolphinQt/MenuBar.cpp:261 msgid "Check NAND..." msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:166 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:167 msgid "Check for Game List Changes in the Background" msgstr "" @@ -1951,7 +1982,7 @@ msgid "" "whether it's still in use." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:185 msgid "Checksum" msgstr "" @@ -1959,16 +1990,16 @@ msgstr "" msgid "China" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:305 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:372 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:306 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:373 msgid "Choose a file to open" msgstr "選擇一個要開啟的檔案" -#: Source/Core/DolphinQt/MenuBar.cpp:1642 +#: Source/Core/DolphinQt/MenuBar.cpp:1652 msgid "Choose priority input file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1657 msgid "Choose secondary input file" msgstr "" @@ -1991,14 +2022,14 @@ msgid "Classic Controller" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:136 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:247 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:248 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:108 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:90 msgid "Clear" msgstr "清除" -#: Source/Core/DolphinQt/MenuBar.cpp:838 +#: Source/Core/DolphinQt/MenuBar.cpp:848 msgid "Clear Cache" msgstr "" @@ -2015,28 +2046,47 @@ msgstr "" msgid "Close" msgstr "關閉" -#: Source/Core/DolphinQt/MenuBar.cpp:519 +#: Source/Core/DolphinQt/MenuBar.cpp:520 msgid "Co&nfiguration" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:29 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:30 msgid "Code" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:34 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:168 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:178 +msgid "Code Diff Tool" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:401 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:420 +msgid "Code Diff Tool Help" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:52 +msgid "Code did not get executed" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:53 +msgid "Code has been executed" +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:93 msgid "Code:" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1813 +#: Source/Core/Core/NetPlayClient.cpp:1820 msgid "Codes received!" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:982 +#: Source/Core/DolphinQt/MenuBar.cpp:992 msgid "Combine &Two Signature Files..." msgstr "" #. i18n: This is "common" as in "shared", not the opposite of "uncommon" -#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:26 +#: Source/Core/DolphinQt/Config/CommonControllersWidget.cpp:27 msgid "Common" msgstr "" @@ -2054,7 +2104,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:946 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:233 -#: Source/Core/DolphinQt/MenuBar.cpp:632 +#: Source/Core/DolphinQt/MenuBar.cpp:642 msgid "Compression" msgstr "" @@ -2067,7 +2117,7 @@ msgstr "" msgid "Compression:" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:80 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:87 msgid "Condition" msgstr "" @@ -2079,13 +2129,13 @@ msgstr "" msgid "Config" msgstr "設定" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:79 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:79 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:123 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:127 msgid "Configure" msgstr "設定" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:37 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:38 msgid "Configure Controller" msgstr "" @@ -2093,21 +2143,21 @@ msgstr "" msgid "Configure Dolphin" msgstr "設定 Dolphin" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Input" msgstr "設定輸入" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:224 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:225 msgid "Configure Output" msgstr "設定輸出" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:250 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:251 #: Source/Core/DolphinQt/ConvertDialog.cpp:281 #: Source/Core/DolphinQt/ConvertDialog.cpp:402 #: Source/Core/DolphinQt/GameList/GameList.cpp:588 #: Source/Core/DolphinQt/GameList/GameList.cpp:771 -#: Source/Core/DolphinQt/MainWindow.cpp:890 -#: Source/Core/DolphinQt/MainWindow.cpp:1611 +#: Source/Core/DolphinQt/MainWindow.cpp:893 +#: Source/Core/DolphinQt/MainWindow.cpp:1614 #: Source/Core/DolphinQt/WiiUpdate.cpp:136 msgid "Confirm" msgstr "確認" @@ -2120,26 +2170,26 @@ msgstr "" msgid "Confirm on Stop" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1221 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:449 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:238 +#: Source/Core/DolphinQt/MenuBar.cpp:1231 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:474 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:239 msgid "Confirmation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:200 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 msgid "Connect" msgstr "連接" -#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:301 +#: Source/Core/Core/HotkeyManager.cpp:84 Source/Core/DolphinQt/MenuBar.cpp:302 msgid "Connect Balance Board" msgstr "連接平衡板" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:112 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:113 msgid "Connect USB Keyboard" msgstr "連接 USB 鍵盤" -#: Source/Core/DolphinQt/MenuBar.cpp:293 +#: Source/Core/DolphinQt/MenuBar.cpp:294 msgid "Connect Wii Remote %1" msgstr "連接 Wii Remote %1" @@ -2159,11 +2209,11 @@ msgstr "連接 Wii Remote 3" msgid "Connect Wii Remote 4" msgstr "連接 Wii Remote 4" -#: Source/Core/DolphinQt/MenuBar.cpp:286 +#: Source/Core/DolphinQt/MenuBar.cpp:287 msgid "Connect Wii Remotes" msgstr "連接 Wii Remote" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:102 msgid "Connect Wii Remotes for Emulated Controllers" msgstr "" @@ -2175,15 +2225,19 @@ msgstr "連接至網路並執行線上的系統更新?" msgid "Connected" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:191 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:673 +msgid "Connecting" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:192 msgid "Connection Type:" msgstr "連線類型:" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1199 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1200 msgid "Content {0:08x} is corrupt." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:99 msgid "Continuous Scanning" msgstr "" @@ -2196,7 +2250,7 @@ msgstr "" msgid "Control Stick" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:444 msgid "Controller Profile" msgstr "控制器設定檔" @@ -2224,7 +2278,7 @@ msgstr "控制器設定" msgid "Controllers" msgstr "控制器" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:343 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:344 msgid "" "Controls the distance of the convergence plane. This is the distance at " "which virtual objects will appear to be in front of the screen.

A " @@ -2232,7 +2286,7 @@ msgid "" "more comfortable." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:290 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:291 msgid "" "Controls the rendering resolution.

A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " @@ -2241,7 +2295,7 @@ msgid "" "Native.
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:340 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:341 msgid "" "Controls the separation distance between the virtual cameras.

A " "higher value creates a stronger feeling of depth while a lower value is more " @@ -2266,12 +2320,12 @@ msgid "" "True" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:408 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:409 msgid "Convergence" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:141 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:131 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:132 msgid "Convergence:" msgstr "" @@ -2308,33 +2362,38 @@ msgid "" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:240 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:640 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:676 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:265 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:693 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:721 msgid "Copy" msgstr "複製" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:527 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:536 msgid "Copy &function" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 msgid "Copy &hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:390 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:597 msgid "Copy Address" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:638 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 msgid "Copy Failed" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:392 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:599 msgid "Copy Hex" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:529 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:605 +msgid "Copy Value" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:538 msgid "Copy code &line" msgstr "" @@ -2342,11 +2401,15 @@ msgstr "" msgid "Copy failed" msgstr "複製失敗" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:545 +msgid "Copy tar&get address" +msgstr "" + +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:242 msgid "Copy to B" msgstr "" @@ -2361,16 +2424,16 @@ msgstr "核心" msgid "Cost" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:169 -#: Source/Core/Core/NetPlayClient.cpp:225 +#: Source/Core/Core/NetPlayClient.cpp:170 +#: Source/Core/Core/NetPlayClient.cpp:230 msgid "Could not communicate with host." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:138 +#: Source/Core/Core/NetPlayClient.cpp:139 msgid "Could not create client." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:150 +#: Source/Core/Core/NetPlayClient.cpp:151 msgid "Could not create peer." msgstr "" @@ -2449,15 +2512,15 @@ msgid "" "options." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 msgid "Couldn't look up central server" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:825 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:826 msgid "Couldn't open file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:828 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:829 msgid "Couldn't read file." msgstr "" @@ -2484,7 +2547,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:82 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 msgid "Creator:" msgstr "" @@ -2507,11 +2570,11 @@ msgstr "" msgid "Crossfade" msgstr "Crossfade" -#: Source/Core/DolphinQt/MenuBar.cpp:270 +#: Source/Core/DolphinQt/MenuBar.cpp:271 msgid "Current Region" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Current Value" msgstr "" @@ -2519,7 +2582,7 @@ msgstr "" msgid "Current context" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:186 msgid "Current game" msgstr "" @@ -2527,7 +2590,7 @@ msgstr "" msgid "Current thread" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:49 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:50 msgid "Custom Address Space" msgstr "" @@ -2558,7 +2621,7 @@ msgstr "" msgid "DJ Turntable" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:35 msgid "DK Bongos" msgstr "" @@ -2586,7 +2649,7 @@ msgstr "" msgid "DSU Client" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:49 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:50 msgid "" "DSU protocol enables the use of input and motion data from compatible " "sources, like PlayStation, Nintendo Switch and Steam controllers.

For " @@ -2594,11 +2657,11 @@ msgid "" "title=DSU_Client\">refer to this page
." msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:34 msgid "Dance Mat" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:113 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:138 msgid "Data" msgstr "" @@ -2610,28 +2673,27 @@ msgstr "" msgid "Data Transfer" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:87 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:88 msgid "Data Type" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:846 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:847 msgid "Data in area of file that should be unused." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:863 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:864 msgid "Data in unrecognized format or corrupted." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:376 msgid "Data inconsistency in GCMemcardManager, aborting action." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1771 +#: Source/Core/Core/NetPlayClient.cpp:1778 msgid "Data received!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:400 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:401 msgid "Datel MaxDrive/Pro files" msgstr "" @@ -2649,7 +2711,7 @@ msgid "Debug Only" msgstr "" #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:47 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:440 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:441 msgid "Debugging" msgstr "" @@ -2691,7 +2753,7 @@ msgstr "" msgid "Decrease Y" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:137 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:138 msgid "Default" msgstr "預設值" @@ -2707,7 +2769,7 @@ msgstr "" msgid "Default Font" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:202 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:203 msgid "Default ISO:" msgstr "預設的 ISO:" @@ -2732,7 +2794,7 @@ msgid "" "leave this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:116 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:107 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:89 msgid "Delete" @@ -2747,11 +2809,11 @@ msgid "Delete Selected Files..." msgstr "" #: Source/Core/AudioCommon/WaveFile.cpp:35 -#: Source/Core/VideoCommon/FrameDump.cpp:98 +#: Source/Core/VideoCommon/FrameDump.cpp:125 msgid "Delete the existing file '{0}'?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:405 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:406 msgid "Depth" msgstr "" @@ -2759,21 +2821,21 @@ msgstr "" msgid "Depth Percentage:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:129 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:130 msgid "Depth:" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:49 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:48 #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:232 #: Source/Core/DolphinQt/GameList/GameList.cpp:937 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:219 -#: Source/Core/DolphinQt/MenuBar.cpp:623 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Description" msgstr "描述" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:107 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:108 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:158 msgid "Description:" msgstr "" @@ -2782,11 +2844,11 @@ msgstr "" msgid "Detached" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 msgid "Detect" msgstr "檢測" -#: Source/Core/DolphinQt/MenuBar.cpp:1297 +#: Source/Core/DolphinQt/MenuBar.cpp:1307 msgid "Detecting RSO Modules" msgstr "" @@ -2794,25 +2856,25 @@ msgstr "" msgid "Deterministic dual core:" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:190 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:195 msgid "Dev (multiple times a day)" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:95 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:96 msgid "Device" msgstr "裝置" #. i18n: PID means Product ID (in the context of a USB device), not Process ID -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:103 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:102 msgid "Device PID (e.g., 0305)" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:89 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:90 msgid "Device Settings" msgstr "裝置設定" #. i18n: VID means Vendor ID (in the context of a USB device) -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:101 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:100 msgid "Device VID (e.g., 057e)" msgstr "" @@ -2824,11 +2886,15 @@ msgstr "" msgid "Did not recognize %1 as a valid Riivolution XML file." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:141 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:99 +msgid "Diff" +msgstr "" + +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 msgid "Dims the screen after five minutes of inactivity." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:188 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 msgid "Direct Connection" msgstr "" @@ -2859,7 +2925,7 @@ msgstr "" msgid "Disable Bounding Box" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:91 msgid "Disable Copy Filter" msgstr "" @@ -2871,15 +2937,15 @@ msgstr "" msgid "Disable Emulation Speed Limit" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:830 +#: Source/Core/DolphinQt/MenuBar.cpp:840 msgid "Disable Fastmem" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:87 msgid "Disable Fog" msgstr "關閉霧化" -#: Source/Core/DolphinQt/MenuBar.cpp:822 +#: Source/Core/DolphinQt/MenuBar.cpp:832 msgid "Disable JIT Cache" msgstr "" @@ -2887,7 +2953,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:266 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:269 msgid "" "Disables bounding box emulation.

This may improve GPU performance " "significantly, but some games will break.

If " @@ -2901,7 +2967,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:360 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:361 msgid "" "Disables the blending of adjacent rows when copying the EFB. This is known " "in some games as \"deflickering\" or \"smoothing\".

Disabling the " @@ -2918,11 +2984,15 @@ msgstr "光碟" msgid "Discard" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:213 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:189 +msgid "Display Type" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:231 msgid "Display values in Hex" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:245 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:248 msgid "" "Displays XFB copies as soon as they are created, instead of waiting for " "scanout.

Can cause graphical defects in some games if the game " @@ -2940,25 +3010,25 @@ msgstr "" msgid "Distance of travel from neutral position." msgstr "" -#: Source/Core/DolphinQt/Main.cpp:266 +#: Source/Core/DolphinQt/Main.cpp:256 msgid "Do you authorize Dolphin to report information to Dolphin's developers?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1612 +#: Source/Core/DolphinQt/MainWindow.cpp:1615 msgid "Do you want to add \"%1\" to the list of Game Paths?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1222 +#: Source/Core/DolphinQt/MenuBar.cpp:1232 msgid "Do you want to clear the list of symbol names?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:656 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:657 #, c-format msgctxt "" msgid "Do you want to delete the %n selected save file(s)?" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:894 +#: Source/Core/DolphinQt/MainWindow.cpp:897 msgid "Do you want to stop the current emulation?" msgstr "您要停止目前的模擬嗎?" @@ -2975,9 +3045,9 @@ msgstr "" msgid "Dolphin Game Mod Preset" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1492 -#: Source/Core/DolphinQt/MenuBar.cpp:1508 -#: Source/Core/DolphinQt/MenuBar.cpp:1526 +#: Source/Core/DolphinQt/MenuBar.cpp:1502 +#: Source/Core/DolphinQt/MenuBar.cpp:1518 +#: Source/Core/DolphinQt/MenuBar.cpp:1536 msgid "Dolphin Map File (*.map)" msgstr "" @@ -2989,8 +3059,8 @@ msgstr "" msgid "Dolphin Signature File" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Dolphin TAS Movies (*.dtm)" msgstr "Dolphin TAS 影片 (*.dtm)" @@ -3023,21 +3093,21 @@ msgstr "" msgid "Dolphin is a free and open-source GameCube and Wii emulator." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:918 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:957 msgid "Dolphin is too old for traversal server" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1348 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1349 msgid "" "Dolphin is unable to verify typical TGC files properly, since they are not " "dumps of actual discs." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1341 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1342 msgid "Dolphin is unable to verify unlicensed discs." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:213 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:218 msgid "" "Dolphin will use this for titles whose region cannot be determined " "automatically." @@ -3052,7 +3122,7 @@ msgstr "" msgid "Domain" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Don't Update" msgstr "" @@ -3065,24 +3135,26 @@ msgid "Done compressing disc image." msgstr "" #. i18n: A double precision floating point number +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:133 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:206 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:150 msgid "Double" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:83 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:76 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:43 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:21 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:19 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 msgid "Down" msgstr "下" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:83 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:84 msgid "Download Codes" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:85 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:86 msgid "Download Codes from the WiiRD Database" msgstr "" @@ -3090,11 +3162,11 @@ msgstr "" msgid "Download Game Covers from GameTDB.com for Use in Grid Mode" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:345 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 msgid "Download complete" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:346 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:347 msgid "Downloaded %1 codes. (added %2)" msgstr "" @@ -3117,27 +3189,35 @@ msgstr "" msgid "Dual Core" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:219 +msgid "Dual View" +msgstr "" + #: Source/Core/Core/HW/EXI/EXI_Device.h:85 msgid "Dummy" msgstr "空" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:109 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:142 +msgid "Dump" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:147 msgid "Dump &ARAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:108 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:146 msgid "Dump &ExRAM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:110 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:148 msgid "Dump &FakeVMEM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:107 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:145 msgid "Dump &MRAM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:792 +#: Source/Core/DolphinQt/MenuBar.cpp:802 msgid "Dump Audio" msgstr "轉儲聲音" @@ -3149,7 +3229,7 @@ msgstr "" msgid "Dump EFB Target" msgstr "轉儲 EFB 目標" -#: Source/Core/DolphinQt/MenuBar.cpp:786 +#: Source/Core/DolphinQt/MenuBar.cpp:796 msgid "Dump Frames" msgstr "轉儲畫格" @@ -3161,7 +3241,7 @@ msgstr "" msgid "Dump Objects" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:219 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:220 msgid "Dump Path:" msgstr "" @@ -3258,16 +3338,16 @@ msgid "Duration of Turbo Button Release (frames):" msgstr "" #: Source/Core/DiscIO/Enums.cpp:95 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 msgid "Dutch" msgstr "Dutch" -#: Source/Core/DolphinQt/MenuBar.cpp:219 +#: Source/Core/DolphinQt/MenuBar.cpp:220 msgid "E&xit" msgstr "離開(&X)" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:177 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:178 msgid "EFB copy %1" msgstr "" @@ -3279,7 +3359,7 @@ msgid "" "driver." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:161 msgid "" "Each player sends their own inputs to the game, with equal buffer size for " "all players, configured by the host.\n" @@ -3307,7 +3387,7 @@ msgstr "效果" #. i18n: "Effective" addresses are the addresses used directly by the CPU and may be subject to #. translation via the MMU to physical addresses. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:176 msgid "Effective" msgstr "" @@ -3315,7 +3395,7 @@ msgstr "" msgid "Effective priority" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "EiB" msgstr "" @@ -3327,7 +3407,7 @@ msgstr "" msgid "Embedded Frame Buffer (EFB)" msgstr "" -#: Source/Core/Core/State.cpp:464 +#: Source/Core/Core/State.cpp:468 msgid "Empty" msgstr "" @@ -3335,11 +3415,11 @@ msgstr "" msgid "Emu Thread already running" msgstr "模擬器線程已經執行中" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:98 msgid "Emulate the Wii's Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Emulated Wii Remote" msgstr "" @@ -3355,8 +3435,12 @@ msgstr "" msgid "Emulation Speed" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:28 -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:32 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:169 +msgid "Emulation must be started to record." +msgstr "" + +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:29 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:33 #: Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp:88 #: Source/Core/DolphinQt/Config/Mapping/MappingWidget.cpp:158 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:358 @@ -3372,7 +3456,7 @@ msgstr "" msgid "Enable Audio Stretching" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:139 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:144 msgid "Enable Cheats" msgstr "開啟作弊" @@ -3384,7 +3468,7 @@ msgstr "" msgid "Enable Dual Core" msgstr "開啟雙核心" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:136 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:141 msgid "Enable Dual Core (speedup)" msgstr "開啟雙核心 (加速)" @@ -3410,19 +3494,19 @@ msgid "Enable Progressive Scan" msgstr "開啟逐行掃瞄" #: Source/Core/DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.cpp:39 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:182 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:183 msgid "Enable Rumble" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 msgid "Enable Screen Saver" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:101 msgid "Enable Speaker Data" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:232 msgid "Enable Usage Statistics Reporting" msgstr "" @@ -3448,7 +3532,7 @@ msgid "" "= Compatible, OFF = Fast)" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:303 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:304 msgid "" "Enables anisotropic filtering, which enhances the visual quality of textures " "that are at oblique viewing angles.

Might cause issues in a small " @@ -3456,7 +3540,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:366 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:367 msgid "" "Enables detection of arbitrary mipmaps, which some games use for special " "distance-based effects.

May have false positives that result in " @@ -3486,7 +3570,7 @@ msgstr "" msgid "Enables stretching of the audio to match emulation speed." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:257 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:260 msgid "" "Enables texture decoding using the GPU instead of the CPU.

This may " "result in performance gains in some scenarios, or on systems where the CPU " @@ -3520,7 +3604,7 @@ msgstr "" msgid "Encoding" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:614 msgid "" "Encountered the following errors while opening save files:\n" "%1\n" @@ -3533,12 +3617,12 @@ msgid "Enet Didn't Initialize" msgstr "" #: Source/Core/DiscIO/Enums.cpp:80 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:81 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:123 msgid "English" msgstr "English" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:46 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:47 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:70 #: Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp:99 msgid "Enhancements" @@ -3548,7 +3632,7 @@ msgstr "增強" msgid "Enter IP address of device running the XLink Kai Client:" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:60 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:59 msgid "Enter USB device ID" msgstr "" @@ -3562,11 +3646,11 @@ msgstr "" msgid "Enter new Broadband Adapter MAC address:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:300 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 msgid "Enter password" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1271 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 msgid "Enter the RSO module address:" msgstr "" @@ -3575,65 +3659,68 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:260 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:383 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:265 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:46 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:241 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:280 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:232 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:259 #: Source/Core/DolphinQt/ConvertDialog.cpp:452 #: Source/Core/DolphinQt/ConvertDialog.cpp:506 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:505 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:511 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:523 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:546 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:553 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:143 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:691 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:697 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:706 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:727 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:733 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:778 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:785 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:150 #: Source/Core/DolphinQt/Debugger/RegisterColumn.cpp:86 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:261 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:377 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:241 #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:344 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:374 -#: Source/Core/DolphinQt/Main.cpp:214 Source/Core/DolphinQt/Main.cpp:230 -#: Source/Core/DolphinQt/Main.cpp:237 Source/Core/DolphinQt/MainWindow.cpp:271 -#: Source/Core/DolphinQt/MainWindow.cpp:279 -#: Source/Core/DolphinQt/MainWindow.cpp:1068 -#: Source/Core/DolphinQt/MainWindow.cpp:1414 -#: Source/Core/DolphinQt/MainWindow.cpp:1421 -#: Source/Core/DolphinQt/MainWindow.cpp:1481 -#: Source/Core/DolphinQt/MainWindow.cpp:1488 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 -#: Source/Core/DolphinQt/MenuBar.cpp:1185 -#: Source/Core/DolphinQt/MenuBar.cpp:1255 -#: Source/Core/DolphinQt/MenuBar.cpp:1278 -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1321 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 -#: Source/Core/DolphinQt/MenuBar.cpp:1545 -#: Source/Core/DolphinQt/MenuBar.cpp:1554 -#: Source/Core/DolphinQt/MenuBar.cpp:1566 -#: Source/Core/DolphinQt/MenuBar.cpp:1588 -#: Source/Core/DolphinQt/MenuBar.cpp:1614 -#: Source/Core/DolphinQt/MenuBar.cpp:1664 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:430 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:645 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:902 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1020 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1030 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:346 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:375 +#: Source/Core/DolphinQt/Main.cpp:204 Source/Core/DolphinQt/Main.cpp:220 +#: Source/Core/DolphinQt/Main.cpp:227 Source/Core/DolphinQt/MainWindow.cpp:273 +#: Source/Core/DolphinQt/MainWindow.cpp:281 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 +#: Source/Core/DolphinQt/MainWindow.cpp:1417 +#: Source/Core/DolphinQt/MainWindow.cpp:1424 +#: Source/Core/DolphinQt/MainWindow.cpp:1484 +#: Source/Core/DolphinQt/MainWindow.cpp:1491 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 +#: Source/Core/DolphinQt/MenuBar.cpp:1265 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 +#: Source/Core/DolphinQt/MenuBar.cpp:1555 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 +#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1624 +#: Source/Core/DolphinQt/MenuBar.cpp:1674 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:455 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:698 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:941 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1059 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1069 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 #: Source/Core/DolphinQt/RenderWidget.cpp:124 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:202 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:223 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:321 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:345 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 #: Source/Core/DolphinQt/Translation.cpp:320 msgid "Error" msgstr "錯誤" @@ -3646,19 +3733,19 @@ msgstr "" msgid "Error loading selected language. Falling back to system default." msgstr "讀取選擇的語系出錯。返回使用系統預設值。" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:209 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:210 msgid "Error obtaining session list: %1" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:272 +#: Source/Core/DolphinQt/MainWindow.cpp:274 msgid "Error occurred while loading some texture packs" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1800 +#: Source/Core/Core/NetPlayClient.cpp:1807 msgid "Error processing codes." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1772 +#: Source/Core/Core/NetPlayClient.cpp:1779 msgid "Error processing data." msgstr "" @@ -3678,7 +3765,7 @@ msgstr "" msgid "Error writing file: {0}" msgstr "" -#: Source/Core/Common/ChunkFile.h:284 +#: Source/Core/Common/ChunkFile.h:295 msgid "" "Error: After \"{0}\", found {1} ({2:#x}) instead of save marker {3} ({4:" "#x}). Aborting savestate load..." @@ -3728,11 +3815,11 @@ msgid "" "may not show fonts correctly, or crash." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1297 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1298 msgid "Errors were found in {0} blocks in the {1} partition." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1308 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1309 msgid "Errors were found in {0} unused blocks in the {1} partition." msgstr "" @@ -3741,11 +3828,39 @@ msgstr "" msgid "Euphoria" msgstr "Euphoria" -#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:272 +#: Source/Core/DiscIO/Enums.cpp:24 Source/Core/DolphinQt/MenuBar.cpp:273 #: Source/Core/UICommon/NetPlayIndex.cpp:249 msgid "Europe" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:421 +msgid "" +"Example:\n" +"You want to find a function that runs when HP is modified.\n" +"1. Start recording and play the game without letting HP be modified, then " +"press 'Code did not get executed'.\n" +"2. Immediately gain/lose HP and press 'Code has been executed'.\n" +"3. Repeat 1 or 2 to narrow down the results.\n" +"Includes (Code has been executed) should have short recordings focusing on " +"what you want.\n" +"\n" +"Pressing 'Code has been executed' twice will only keep functions that ran " +"for both recordings. Hits will update to reflect the last recording's number " +"of Hits. Total Hits will reflect the total number of times a function has " +"been executed until the lists are cleared with Reset.\n" +"\n" +"Right click -> 'Set blr' will place a blr at the top of the symbol.\n" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:134 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:390 +msgid "Excluded: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:68 +msgid "Excluded: 0" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:116 msgid "Exclusive Ubershaders" msgstr "" @@ -3794,14 +3909,14 @@ msgstr "" msgid "Experimental" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:284 +#: Source/Core/DolphinQt/MenuBar.cpp:285 msgid "Export All Wii Saves" msgstr "匯出全部 Wii 存檔" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:420 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:490 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:497 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:491 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:498 msgid "Export Failed" msgstr "" @@ -3809,15 +3924,15 @@ msgstr "" msgid "Export Recording" msgstr "匯出錄像" -#: Source/Core/DolphinQt/MenuBar.cpp:731 +#: Source/Core/DolphinQt/MenuBar.cpp:741 msgid "Export Recording..." msgstr "匯出錄像..." -#: Source/Core/DolphinQt/GCMemcardManager.cpp:435 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:436 msgid "Export Save File" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:452 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:453 msgid "Export Save Files" msgstr "" @@ -3829,22 +3944,22 @@ msgstr "" msgid "Export Wii Saves" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:116 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 msgid "Export as .&gcs..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:117 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:118 msgid "Export as .&sav..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1109 +#: Source/Core/DolphinQt/MenuBar.cpp:1119 #, c-format msgctxt "" msgid "Exported %n save(s)" msgstr "" #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:240 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:424 #: Source/Core/DolphinQt/Config/Mapping/WiimoteEmuGeneral.cpp:47 msgid "Extension" msgstr "擴充" @@ -3857,7 +3972,7 @@ msgstr "" msgid "Extension Motion Simulation" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:473 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:498 msgid "External" msgstr "" @@ -3865,7 +3980,7 @@ msgstr "" msgid "External Frame Buffer (XFB)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:262 msgid "Extract Certificates from NAND" msgstr "" @@ -3903,7 +4018,7 @@ msgid "FD" msgstr "" #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:37 -#: Source/Core/DolphinQt/MenuBar.cpp:232 +#: Source/Core/DolphinQt/MenuBar.cpp:233 msgid "FIFO Player" msgstr "" @@ -3911,17 +4026,17 @@ msgstr "" msgid "Failed loading XML." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:345 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:346 msgid "" "Failed opening memory card:\n" "%1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:407 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:432 msgid "Failed to add this session to the NetPlay index: %1" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1615 +#: Source/Core/DolphinQt/MenuBar.cpp:1625 msgid "Failed to append to signature file '%1'" msgstr "" @@ -3933,7 +4048,7 @@ msgstr "" msgid "Failed to connect to Redump.org" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:903 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:942 msgid "Failed to connect to server: %1" msgstr "" @@ -3954,12 +4069,12 @@ msgstr "" msgid "Failed to create DXGI factory" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1232 +#: Source/Core/Core/NetPlayClient.cpp:1237 msgid "" "Failed to delete NetPlay GBA{0} save file. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1042 +#: Source/Core/Core/NetPlayClient.cpp:1047 msgid "Failed to delete NetPlay memory card. Verify your write permissions." msgstr "" @@ -3971,19 +4086,19 @@ msgstr "" msgid "Failed to detach kernel driver for BT passthrough: {0}" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:318 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:319 msgid "Failed to download codes." msgstr "下載代碼失敗。" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:779 msgid "Failed to dump %1: Can't open file" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:554 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:786 msgid "Failed to dump %1: Failed to write to file" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:486 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:487 msgctxt "" msgid "Failed to export %n out of %1 save file(s)." msgstr "" @@ -3992,7 +4107,7 @@ msgstr "" msgid "Failed to export the following save files:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1185 +#: Source/Core/DolphinQt/MenuBar.cpp:1195 msgid "Failed to extract certificates from NAND" msgstr "" @@ -4015,29 +4130,29 @@ msgstr "" msgid "Failed to find one or more D3D symbols" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:564 msgid "Failed to import \"%1\"." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1095 msgid "" "Failed to import save file. Please launch the game once, then try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1079 +#: Source/Core/DolphinQt/MenuBar.cpp:1089 msgid "" "Failed to import save file. The given file appears to be corrupted or is not " "a valid Wii save." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1092 +#: Source/Core/DolphinQt/MenuBar.cpp:1102 msgid "" "Failed to import save file. Your NAND may be corrupt, or something is " "preventing access to files within it. Try repairing your NAND (Tools -> " "Manage NAND -> Check NAND...), then import the save again." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1068 +#: Source/Core/DolphinQt/MainWindow.cpp:1071 msgid "Failed to init core" msgstr "" @@ -4053,23 +4168,23 @@ msgstr "" msgid "Failed to initialize renderer classes" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:203 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:204 msgid "Failed to install pack: %1" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:575 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failed to install this title to the NAND." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1514 +#: Source/Core/DolphinQt/MainWindow.cpp:1517 msgid "" "Failed to listen on port %1. Is another instance of the NetPlay server " "running?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1290 -#: Source/Core/DolphinQt/MenuBar.cpp:1342 +#: Source/Core/DolphinQt/MenuBar.cpp:1300 +#: Source/Core/DolphinQt/MenuBar.cpp:1352 msgid "Failed to load RSO module at %1" msgstr "" @@ -4081,11 +4196,11 @@ msgstr "" msgid "Failed to load dxgi.dll" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1554 +#: Source/Core/DolphinQt/MenuBar.cpp:1564 msgid "Failed to load map file '%1'" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:541 +#: Source/Core/Core/Boot/Boot.cpp:534 msgid "Failed to load the executable to memory." msgstr "" @@ -4096,7 +4211,7 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/GBAWidget.cpp:571 -#: Source/Core/DolphinQt/MainWindow.cpp:1590 +#: Source/Core/DolphinQt/MainWindow.cpp:1593 #: Source/Core/DolphinQt/RenderWidget.cpp:124 msgid "Failed to open '%1'" msgstr "" @@ -4123,11 +4238,11 @@ msgid "" "Make sure there's an application assigned to open INI files." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:859 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:860 msgid "Failed to open file." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1513 +#: Source/Core/DolphinQt/MainWindow.cpp:1516 msgid "Failed to open server" msgstr "" @@ -4136,7 +4251,7 @@ msgid "Failed to open the input file \"%1\"." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:282 Source/Core/DiscIO/FileBlob.cpp:53 -#: Source/Core/DiscIO/WIABlob.cpp:2041 +#: Source/Core/DiscIO/WIABlob.cpp:2045 msgid "" "Failed to open the output file \"{0}\".\n" "Check that you have permissions to write the target folder and that the " @@ -4148,7 +4263,7 @@ msgstr "" msgid "Failed to parse Redump.org data" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:262 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:285 msgid "Failed to parse given value into target data type." msgstr "" @@ -4156,25 +4271,25 @@ msgstr "" msgid "Failed to read DFF file." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:861 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:862 msgid "Failed to read from file." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:373 Source/Core/DiscIO/FileBlob.cpp:93 -#: Source/Core/DiscIO/WIABlob.cpp:2056 +#: Source/Core/DiscIO/WIABlob.cpp:2060 msgid "Failed to read from the input file \"{0}\"." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:421 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:639 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:422 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:640 msgid "Failed to read selected savefile(s) from memory card." msgstr "" -#: Source/Core/Core/Movie.cpp:1006 +#: Source/Core/Core/Movie.cpp:1015 msgid "Failed to read {0}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 msgid "Failed to remove file." msgstr "" @@ -4189,15 +4304,15 @@ msgstr "" msgid "Failed to remove this title from the NAND." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1063 +#: Source/Core/Core/NetPlayClient.cpp:1068 msgid "Failed to reset NetPlay GCI folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1091 +#: Source/Core/Core/NetPlayClient.cpp:1096 msgid "Failed to reset NetPlay NAND folder. Verify your write permissions." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1097 +#: Source/Core/Core/NetPlayClient.cpp:1102 msgid "Failed to reset NetPlay redirect folder. Verify your write permissions." msgstr "" @@ -4205,23 +4320,23 @@ msgstr "" msgid "Failed to save FIFO log." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1546 +#: Source/Core/DolphinQt/MenuBar.cpp:1556 msgid "Failed to save code map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1588 +#: Source/Core/DolphinQt/MenuBar.cpp:1598 msgid "Failed to save signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1567 +#: Source/Core/DolphinQt/MenuBar.cpp:1577 msgid "Failed to save symbol map to path '%1'" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1665 +#: Source/Core/DolphinQt/MenuBar.cpp:1675 msgid "Failed to save to signature file '%1'" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:224 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:225 msgid "Failed to uninstall pack: %1" msgstr "" @@ -4229,11 +4344,11 @@ msgstr "" msgid "Failed to write BT.DINF to SYSCONF" msgstr "寫入 BT.DINF 至 SYSCONF 失敗" -#: Source/Core/Core/NetPlayClient.cpp:1125 +#: Source/Core/Core/NetPlayClient.cpp:1130 msgid "Failed to write Mii data." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1201 +#: Source/Core/Core/NetPlayClient.cpp:1206 msgid "Failed to write Wii save." msgstr "" @@ -4241,22 +4356,22 @@ msgstr "" msgid "Failed to write config file!" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:572 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:675 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:690 msgid "Failed to write modified memory card to disk." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1213 +#: Source/Core/Core/NetPlayClient.cpp:1218 msgid "Failed to write redirected save." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:445 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:446 msgid "Failed to write savefile to disk." msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:377 Source/Core/DiscIO/FileBlob.cpp:99 -#: Source/Core/DiscIO/WIABlob.cpp:2060 +#: Source/Core/DiscIO/WIABlob.cpp:2064 msgid "" "Failed to write the output file \"{0}\".\n" "Check that you have enough space available on the target drive." @@ -4265,19 +4380,19 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 #: Source/Core/DolphinQt/GameList/GameList.cpp:795 -#: Source/Core/DolphinQt/MenuBar.cpp:1050 +#: Source/Core/DolphinQt/MenuBar.cpp:1060 msgid "Failure" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:159 msgid "Fair Input Delay" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:196 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:201 msgid "Fallback Region" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:207 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:212 msgid "Fallback Region:" msgstr "" @@ -4290,7 +4405,7 @@ msgstr "快速" msgid "Fast Depth Calculation" msgstr "" -#: Source/Core/Core/Movie.cpp:1283 +#: Source/Core/Core/Movie.cpp:1292 msgid "" "Fatal desync. Aborting playback. (Error in PlayWiimote: {0} != {1}, byte " "{2}.){3}" @@ -4307,7 +4422,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:944 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:229 -#: Source/Core/DolphinQt/MenuBar.cpp:630 +#: Source/Core/DolphinQt/MenuBar.cpp:640 msgid "File Format" msgstr "" @@ -4321,18 +4436,18 @@ msgstr "檔案資訊" #: Source/Core/DolphinQt/GameList/GameList.cpp:939 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:223 -#: Source/Core/DolphinQt/MenuBar.cpp:625 +#: Source/Core/DolphinQt/MenuBar.cpp:635 msgid "File Name" msgstr "檔案名稱" #: Source/Core/DolphinQt/GameList/GameList.cpp:940 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:225 -#: Source/Core/DolphinQt/MenuBar.cpp:626 +#: Source/Core/DolphinQt/MenuBar.cpp:636 msgid "File Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:943 -#: Source/Core/DolphinQt/MenuBar.cpp:629 +#: Source/Core/DolphinQt/MenuBar.cpp:639 msgid "File Size" msgstr "檔案大小" @@ -4340,11 +4455,11 @@ msgstr "檔案大小" msgid "File Size:" msgstr "" -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:324 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:325 msgid "File contained no codes." msgstr "檔案未含有代碼。" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:148 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:149 msgid "Filename" msgstr "" @@ -4358,11 +4473,11 @@ msgid "" "{1}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:831 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:832 msgid "Filesize does not match any known GameCube Memory Card size." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:834 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:835 msgid "Filesize in header mismatches actual card size." msgstr "" @@ -4370,15 +4485,15 @@ msgstr "" msgid "Filesystem" msgstr "檔案系統" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:101 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:103 msgid "Filter Symbols" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:101 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:102 msgid "Filters" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:355 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:356 msgid "" "Filters all textures, including any that the game explicitly set as " "unfiltered.

May improve quality of certain textures in some games, " @@ -4386,11 +4501,11 @@ msgid "" "this unchecked.
" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:117 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:160 msgid "Find &Next" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:118 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:161 msgid "Find &Previous" msgstr "" @@ -4404,18 +4519,22 @@ msgid "" "This can take a while." msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "First Person" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:126 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:127 msgid "Fix Checksums" msgstr "修正校驗" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:688 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:689 msgid "Fix Checksums Failed" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:209 +msgid "Fixed Alignment" +msgstr "" + #. i18n: These are the kinds of flags that a CPU uses (e.g. carry), #. not the kinds of flags that represent e.g. countries #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:162 @@ -4425,13 +4544,14 @@ msgstr "" #. i18n: A floating point number #. i18n: Floating-point (non-integer) number -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:132 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:205 #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:148 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:161 msgid "Float" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:521 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:530 msgid "Follow &branch" msgstr "" @@ -4455,7 +4575,7 @@ msgstr "" msgid "Force 16:9" msgstr "強制 16:9" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:88 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:89 msgid "Force 24-Bit Color" msgstr "" @@ -4463,15 +4583,15 @@ msgstr "" msgid "Force 4:3" msgstr "強制 4:3" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:134 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:135 msgid "Force Listen Port:" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:84 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 msgid "Force Texture Filtering" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:321 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:322 msgid "" "Forces the game to output graphics for any aspect ratio. Use with \"Aspect " "Ratio\" set to \"Force 16:9\" to force 4:3-only games to run at 16:9." @@ -4481,7 +4601,7 @@ msgid "" "
" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:350 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:351 msgid "" "Forces the game to render the RGB color channels in 24-bit, thereby " "increasing quality by reducing color banding.

Has no impact on " @@ -4500,21 +4620,21 @@ msgstr "" msgid "Forward" msgstr "向前" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:144 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:145 msgid "Forward port (UPnP)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:464 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:465 msgid "Found %1 results for \"%2\"" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:296 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:319 #, c-format msgctxt "" msgid "Found %n address(es)." msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:157 msgid "Frame %1" msgstr "" @@ -4543,7 +4663,7 @@ msgstr "" msgid "Frame Range" msgstr "" -#: Source/Core/VideoCommon/RenderBase.cpp:1756 +#: Source/Core/VideoCommon/RenderBase.cpp:1766 msgid "Frame dump image(s) '{0}' already exists. Overwrite?" msgstr "" @@ -4555,19 +4675,19 @@ msgstr "" msgid "France" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:309 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 msgid "Free Blocks: %1" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:310 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:311 msgid "Free Files: %1" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:41 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:42 msgid "Free Look Control Type" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:459 msgid "Free Look Controller %1" msgstr "" @@ -4575,7 +4695,7 @@ msgstr "" msgid "Free Look Settings" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:53 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:54 msgid "" "Free Look allows for manipulation of the in-game camera. Different camera " "types are available from the dropdown.

For detailed instructions,
Slightly increases GPU load and causes relatively few " @@ -4983,7 +5103,7 @@ msgstr "綠 左" msgid "Green Right" msgstr "綠 右" -#: Source/Core/DolphinQt/MenuBar.cpp:602 +#: Source/Core/DolphinQt/MenuBar.cpp:612 msgid "Grid View" msgstr "" @@ -4996,7 +5116,7 @@ msgstr "Guitar" msgid "Gyroscope" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "HDMI 3D" msgstr "" @@ -5009,12 +5129,29 @@ msgstr "" msgid "Head" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:89 #: qtbase/src/gui/kernel/qplatformtheme.cpp:736 msgid "Help" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:120 -msgid "Hex string" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 +msgid "Hex" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:196 +msgid "Hex 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:197 +msgid "Hex 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:195 +msgid "Hex 8" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:130 +msgid "Hex Byte String" msgstr "" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:144 @@ -5026,19 +5163,19 @@ msgstr "" msgid "Hide" msgstr "隱藏" -#: Source/Core/DolphinQt/MenuBar.cpp:697 +#: Source/Core/DolphinQt/MenuBar.cpp:707 msgid "Hide All" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:92 msgid "Hide In-Game Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:91 msgid "Hide Incompatible Sessions" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:181 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:206 msgid "Hide Remote GBAs" msgstr "" @@ -5056,21 +5193,27 @@ msgstr "" msgid "Hit Strength" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Hits" +msgstr "" + #. i18n: FOV stands for "Field of view". #: Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp:223 msgid "Horizontal FOV" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:147 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:201 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:202 msgid "Host" msgstr "主機" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "Host Code:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:165 msgid "Host Input Authority" msgstr "" @@ -5078,7 +5221,7 @@ msgstr "" msgid "Host Size" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:167 msgid "" "Host has control of sending all inputs to the game, as received from other " "players, giving the host zero latency but increasing latency for others.\n" @@ -5086,11 +5229,11 @@ msgid "" "latency connections." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority disabled" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:856 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:895 msgid "Host input authority enabled" msgstr "" @@ -5102,7 +5245,7 @@ msgstr "" msgid "Hostname" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:450 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:451 msgid "Hotkey Settings" msgstr "" @@ -5153,11 +5296,11 @@ msgid "" "setting up Wii networking." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:308 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:309 msgid "IP Address:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:64 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:65 msgid "IPL Settings" msgstr "IPL 設定" @@ -5166,7 +5309,7 @@ msgid "IR" msgstr "IR" #. i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:191 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:192 msgid "IR Sensitivity:" msgstr "IR 靈敏度:" @@ -5188,22 +5331,22 @@ msgid "" "encrypted Wii data." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:154 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:155 msgid "Icon" msgstr "圖示" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:173 msgid "" "Identical to Host Input Authority, except the \"Host\" (who has zero " "latency) can be switched at any time.\n" "Suitable for turn-based games with timing-sensitive controls, such as golf." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:370 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:375 msgid "Identity Generation" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:268 +#: Source/Core/DolphinQt/Main.cpp:258 msgid "" "If authorized, Dolphin can collect data on its performance, feature usage, " "and configuration, as well as data on your system's hardware and operating " @@ -5250,7 +5393,7 @@ msgstr "" msgid "Ignore for this session" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:216 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:219 msgid "" "Ignores any changes to the EFB format.

Improves performance in many " "games without any negative effect. Causes graphical defects in a small " @@ -5258,7 +5401,7 @@ msgid "" "checked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:211 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:214 msgid "" "Ignores any requests from the CPU to read from or write to the EFB. " "

Improves performance in some games, but will disable all EFB-based " @@ -5279,41 +5422,50 @@ msgid "" "

If unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:258 +#: Source/Core/DolphinQt/MenuBar.cpp:259 msgid "Import BootMii NAND Backup..." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:548 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:562 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:570 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:612 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:549 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:563 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:571 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:613 msgid "Import Failed" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:584 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:585 msgid "Import Save File(s)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:283 +#: Source/Core/DolphinQt/MenuBar.cpp:284 msgid "Import Wii Save..." msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1654 +#: Source/Core/DolphinQt/MainWindow.cpp:1657 msgid "Importing NAND backup" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1664 +#: Source/Core/DolphinQt/MainWindow.cpp:1667 #, c-format msgid "" "Importing NAND backup\n" " Time elapsed: %1s" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 msgid "In-Game?" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:270 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:135 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:391 +msgid "Included: %1" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:69 +msgid "Included: 0" +msgstr "" + +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:273 msgid "" "Includes the contents of the embedded frame buffer (EFB) and upscaled EFB " "copies in save states. Fixes missing and/or non-upscaled textures/objects " @@ -5366,8 +5518,8 @@ msgstr "訊息" #: Source/Core/Common/MsgHandler.cpp:59 #: Source/Core/DolphinQt/GameList/GameList.cpp:717 -#: Source/Core/DolphinQt/MenuBar.cpp:1248 -#: Source/Core/DolphinQt/MenuBar.cpp:1472 +#: Source/Core/DolphinQt/MenuBar.cpp:1258 +#: Source/Core/DolphinQt/MenuBar.cpp:1482 msgid "Information" msgstr "訊息" @@ -5376,10 +5528,10 @@ msgid "Inhibit Screensaver During Emulation" msgstr "" #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:254 -#: Source/Core/DolphinQt/MenuBar.cpp:1271 -#: Source/Core/DolphinQt/MenuBar.cpp:1327 -#: Source/Core/DolphinQt/MenuBar.cpp:1573 -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1281 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "Input" msgstr "輸入" @@ -5393,16 +5545,22 @@ msgstr "" msgid "Input strength to ignore and remap." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:549 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:561 msgid "Insert &nop" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:110 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:111 msgid "Insert SD Card" msgstr "插入 SD 卡" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Inspected" +msgstr "" + +#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:319 msgid "Install" msgstr "" @@ -5414,7 +5572,7 @@ msgstr "" msgid "Install Update" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:256 +#: Source/Core/DolphinQt/MenuBar.cpp:257 msgid "Install WAD..." msgstr "" @@ -5430,11 +5588,11 @@ msgstr "" msgid "Instruction" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:36 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:38 msgid "Instruction Breakpoint" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Instruction:" msgstr "" @@ -5452,7 +5610,7 @@ msgid "Interface" msgstr "界面" #: Source/Core/Core/NetPlayCommon.cpp:67 Source/Core/Core/NetPlayCommon.cpp:151 -#: Source/Core/Core/State.cpp:383 +#: Source/Core/Core/State.cpp:384 msgid "Internal LZO Error - compression failed" msgstr "內部 LZO 錯誤 - 壓縮失敗" @@ -5461,27 +5619,27 @@ msgstr "內部 LZO 錯誤 - 壓縮失敗" msgid "Internal LZO Error - decompression failed" msgstr "" -#: Source/Core/Core/State.cpp:526 +#: Source/Core/Core/State.cpp:530 msgid "" "Internal LZO Error - decompression failed ({0}) ({1}, {2}) \n" "Try loading the state again" msgstr "" -#: Source/Core/Core/State.cpp:632 +#: Source/Core/Core/State.cpp:635 msgid "Internal LZO Error - lzo_init() failed" msgstr "內部 LZO 錯誤 - lzo_init() 失敗" #: Source/Core/Core/HotkeyManager.cpp:341 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:374 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:375 #: Source/Core/DolphinQt/Config/Mapping/HotkeyGraphics.cpp:27 msgid "Internal Resolution" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:94 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:95 msgid "Internal Resolution:" msgstr "内部解析度:" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:479 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:502 msgid "Internal error while generating AR code." msgstr "" @@ -5489,11 +5647,11 @@ msgstr "" msgid "Interpreter (slowest)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:803 +#: Source/Core/DolphinQt/MenuBar.cpp:813 msgid "Interpreter Core" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:685 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:687 msgid "Invalid Expression." msgstr "" @@ -5501,7 +5659,7 @@ msgstr "" msgid "Invalid Mixed Code" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:280 +#: Source/Core/DolphinQt/MainWindow.cpp:282 msgid "Invalid Pack %1 provided: %2" msgstr "" @@ -5510,15 +5668,15 @@ msgstr "" msgid "Invalid Player ID" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1278 +#: Source/Core/DolphinQt/MenuBar.cpp:1288 msgid "Invalid RSO module address: %1" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:303 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:317 msgid "Invalid callstack" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:837 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:838 msgid "Invalid checksums." msgstr "" @@ -5526,11 +5684,11 @@ msgstr "" msgid "Invalid game." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1931 +#: Source/Core/Core/NetPlayClient.cpp:1938 msgid "Invalid host" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:144 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:151 msgid "Invalid input for the field \"%1\"" msgstr "" @@ -5543,31 +5701,31 @@ msgstr "" msgid "Invalid literal." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:332 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:355 msgid "Invalid parameters given to search." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:314 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:315 msgid "Invalid password provided." msgstr "" -#: Source/Core/Core/Movie.cpp:949 +#: Source/Core/Core/Movie.cpp:958 msgid "Invalid recording file" msgstr "無效的錄像檔" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:391 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:392 msgid "Invalid search parameters (no object selected)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:418 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:419 msgid "Invalid search string (couldn't convert to number)" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:401 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:402 msgid "Invalid search string (only even string lengths supported)" msgstr "" -#: Source/Core/DolphinQt/Main.cpp:214 +#: Source/Core/DolphinQt/Main.cpp:204 msgid "Invalid title ID." msgstr "" @@ -5576,8 +5734,8 @@ msgid "Invalid watch address: %1" msgstr "" #: Source/Core/DiscIO/Enums.cpp:92 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:84 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:127 msgid "Italian" msgstr "Italian" @@ -5585,11 +5743,11 @@ msgstr "Italian" msgid "Italy" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:801 +#: Source/Core/DolphinQt/MenuBar.cpp:811 msgid "JIT" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:814 +#: Source/Core/DolphinQt/MenuBar.cpp:824 msgid "JIT Block Linking Off" msgstr "" @@ -5597,47 +5755,47 @@ msgstr "" msgid "JIT Blocks" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:938 +#: Source/Core/DolphinQt/MenuBar.cpp:948 msgid "JIT Branch Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:906 +#: Source/Core/DolphinQt/MenuBar.cpp:916 msgid "JIT FloatingPoint Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:914 +#: Source/Core/DolphinQt/MenuBar.cpp:924 msgid "JIT Integer Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:889 +#: Source/Core/DolphinQt/MenuBar.cpp:899 msgid "JIT LoadStore Floating Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:857 +#: Source/Core/DolphinQt/MenuBar.cpp:867 msgid "JIT LoadStore Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:898 +#: Source/Core/DolphinQt/MenuBar.cpp:908 msgid "JIT LoadStore Paired Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:873 +#: Source/Core/DolphinQt/MenuBar.cpp:883 msgid "JIT LoadStore lXz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:865 +#: Source/Core/DolphinQt/MenuBar.cpp:875 msgid "JIT LoadStore lbzx Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:881 +#: Source/Core/DolphinQt/MenuBar.cpp:891 msgid "JIT LoadStore lwz Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:849 +#: Source/Core/DolphinQt/MenuBar.cpp:859 msgid "JIT Off (JIT Core)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:922 +#: Source/Core/DolphinQt/MenuBar.cpp:932 msgid "JIT Paired Off" msgstr "" @@ -5649,11 +5807,11 @@ msgstr "" msgid "JIT Recompiler for x86-64 (recommended)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:946 +#: Source/Core/DolphinQt/MenuBar.cpp:956 msgid "JIT Register Cache Off" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:930 +#: Source/Core/DolphinQt/MenuBar.cpp:940 msgid "JIT SystemRegisters Off" msgstr "" @@ -5664,12 +5822,12 @@ msgid "" "Please report this incident on the bug tracker. Dolphin will now exit." msgstr "" -#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:274 +#: Source/Core/DiscIO/Enums.cpp:27 Source/Core/DolphinQt/MenuBar.cpp:275 msgid "Japan" msgstr "" #: Source/Core/DiscIO/Enums.cpp:77 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:121 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:122 msgid "Japanese" msgstr "Japanese" @@ -5689,12 +5847,12 @@ msgstr "" #. value", "last value", or "this value:". These three UI elements are intended to form a sentence #. together. Because the UI elements can't be reordered by a translation, you may have to give #. up on the idea of having them form a sentence depending on the grammar of your target language. -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 msgid "Keep addresses where value in memory" msgstr "" #: Source/Core/Core/HW/GCKeyboard.cpp:20 -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:39 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:40 msgid "Keyboard" msgstr "" @@ -5707,20 +5865,20 @@ msgstr "" msgid "Keys" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "KiB" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:267 msgid "Kick Player" msgstr "" -#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:276 +#: Source/Core/DiscIO/Enums.cpp:45 Source/Core/DolphinQt/MenuBar.cpp:277 msgid "Korea" msgstr "" #: Source/Core/DiscIO/Enums.cpp:104 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:131 msgid "Korean" msgstr "Korean" @@ -5748,7 +5906,7 @@ msgstr "" msgid "Label" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:492 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:515 msgid "Last Value" msgstr "" @@ -5828,15 +5986,15 @@ msgstr "" msgid "License" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:136 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:137 msgid "Limit Chunked Upload Speed:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:636 +#: Source/Core/DolphinQt/MenuBar.cpp:646 msgid "List Columns" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:599 +#: Source/Core/DolphinQt/MenuBar.cpp:609 msgid "List View" msgstr "" @@ -5845,17 +6003,17 @@ msgid "Listening" msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:23 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:113 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:110 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:91 msgid "Load" msgstr "讀取" -#: Source/Core/DolphinQt/MenuBar.cpp:972 +#: Source/Core/DolphinQt/MenuBar.cpp:982 msgid "Load &Bad Map File..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:971 +#: Source/Core/DolphinQt/MenuBar.cpp:981 msgid "Load &Other Map File..." msgstr "" @@ -5863,7 +6021,7 @@ msgstr "" msgid "Load Custom Textures" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:241 +#: Source/Core/DolphinQt/MenuBar.cpp:242 msgid "Load GameCube Main Menu" msgstr "" @@ -5872,7 +6030,7 @@ msgstr "" msgid "Load Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:228 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:229 msgid "Load Path:" msgstr "" @@ -5965,23 +6123,23 @@ msgstr "讀取儲存格 8" msgid "Load State Slot 9" msgstr "讀取儲存格 9" -#: Source/Core/DolphinQt/MenuBar.cpp:331 +#: Source/Core/DolphinQt/MenuBar.cpp:332 msgid "Load State from File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:332 +#: Source/Core/DolphinQt/MenuBar.cpp:333 msgid "Load State from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:333 +#: Source/Core/DolphinQt/MenuBar.cpp:334 msgid "Load State from Slot" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:117 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:142 msgid "Load Wii Save" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1012 +#: Source/Core/DolphinQt/MenuBar.cpp:1022 msgid "Load Wii System Menu %1" msgstr "" @@ -5989,12 +6147,12 @@ msgstr "" msgid "Load from Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:387 +#: Source/Core/DolphinQt/MenuBar.cpp:388 msgid "Load from Slot %1 - %2" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1491 -#: Source/Core/DolphinQt/MenuBar.cpp:1507 +#: Source/Core/DolphinQt/MenuBar.cpp:1501 +#: Source/Core/DolphinQt/MenuBar.cpp:1517 msgid "Load map file" msgstr "" @@ -6002,7 +6160,7 @@ msgstr "" msgid "Load..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1473 +#: Source/Core/DolphinQt/MenuBar.cpp:1483 msgid "Loaded symbols from '%1'" msgstr "" @@ -6013,7 +6171,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:478 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:503 msgid "Local" msgstr "" @@ -6022,7 +6180,7 @@ msgid "Lock Mouse Cursor" msgstr "" #: Source/Core/DolphinQt/Config/LogWidget.cpp:34 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:182 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:243 msgid "Log" msgstr "記錄" @@ -6030,7 +6188,7 @@ msgstr "記錄" msgid "Log Configuration" msgstr "記錄設定" -#: Source/Core/DolphinQt/MenuBar.cpp:843 +#: Source/Core/DolphinQt/MenuBar.cpp:853 msgid "Log JIT Instruction Coverage" msgstr "" @@ -6057,7 +6215,7 @@ msgstr "" msgid "Loop" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:896 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:935 msgid "Lost connection to NetPlay server..." msgstr "" @@ -6086,7 +6244,7 @@ msgstr "" msgid "MORIBUND" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:398 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:399 msgid "MadCatz Gameshark files" msgstr "" @@ -6096,7 +6254,7 @@ msgstr "主搖桿" #: Source/Core/DolphinQt/GameList/GameList.cpp:938 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:221 -#: Source/Core/DolphinQt/MenuBar.cpp:624 +#: Source/Core/DolphinQt/MenuBar.cpp:634 msgid "Maker" msgstr "" @@ -6105,7 +6263,7 @@ msgstr "" msgid "Maker:" msgstr "廠商:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:328 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:329 msgid "" "Makes distant objects more visible by removing fog, thus increasing the " "overall detail.

Disabling fog will break some games which rely on " @@ -6113,7 +6271,7 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:257 +#: Source/Core/DolphinQt/MenuBar.cpp:258 msgid "Manage NAND" msgstr "" @@ -6121,7 +6279,7 @@ msgstr "" msgid "Manual Texture Sampling" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Mapping" msgstr "" @@ -6129,15 +6287,15 @@ msgstr "" msgid "Mask ROM" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:641 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:882 msgid "Match Found" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:878 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 msgid "Max Buffer:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:846 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:885 msgid "Max buffer size changed to %1" msgstr "" @@ -6146,7 +6304,7 @@ msgstr "" msgid "Maximum tilt angle." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:145 msgid "May cause slow down in Wii Menu and some games." msgstr "" @@ -6155,11 +6313,11 @@ msgstr "" msgid "Medium" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:35 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:41 msgid "Memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:47 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:50 msgid "Memory Breakpoint" msgstr "" @@ -6167,7 +6325,7 @@ msgstr "" msgid "Memory Card" msgstr "記憶卡" -#: Source/Core/DolphinQt/MenuBar.cpp:250 +#: Source/Core/DolphinQt/MenuBar.cpp:251 msgid "Memory Card Manager" msgstr "" @@ -6185,7 +6343,7 @@ msgstr "" msgid "Memory Override" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:166 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:227 msgid "Memory breakpoint options" msgstr "" @@ -6201,7 +6359,7 @@ msgstr "" msgid "MemoryCard: Write called with invalid destination address ({0:#x})" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1635 +#: Source/Core/DolphinQt/MainWindow.cpp:1638 msgid "" "Merging a new NAND over your currently selected NAND will overwrite any " "channels and savegames that already exist. This process is not reversible, " @@ -6209,13 +6367,13 @@ msgid "" "want to continue?" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:443 +#: Source/Core/UICommon/UICommon.cpp:420 msgid "MiB" msgstr "" #: Source/Core/Core/HW/EXI/EXI_Device.h:90 Source/Core/Core/HW/GCPadEmu.cpp:83 #: Source/Core/DolphinQt/Config/Mapping/GCMicrophone.cpp:26 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:411 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:412 msgid "Microphone" msgstr "" @@ -6223,19 +6381,19 @@ msgstr "" msgid "Misc" msgstr "雜項" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:104 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:105 msgid "Misc Settings" msgstr "其它設定" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:840 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:841 msgid "Mismatch between free block count in header and actually unused blocks." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:843 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:844 msgid "Mismatch between internal data structures." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1022 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:1061 msgid "" "Mismatched ROMs\n" "Selected: {0}\n" @@ -6258,12 +6416,12 @@ msgid "" "unchecked." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1296 -#: Source/Core/DolphinQt/MenuBar.cpp:1440 +#: Source/Core/DolphinQt/MenuBar.cpp:1306 +#: Source/Core/DolphinQt/MenuBar.cpp:1450 msgid "Modules found: %1" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:134 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 msgid "Mono" msgstr "" @@ -6275,11 +6433,11 @@ msgstr "" msgid "Monospaced Font" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:423 msgid "Motion Input" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:421 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:422 msgid "Motion Simulation" msgstr "" @@ -6319,10 +6477,10 @@ msgstr "" msgid "N&o to All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 -#: Source/Core/DolphinQt/MenuBar.cpp:1162 -#: Source/Core/DolphinQt/MenuBar.cpp:1167 -#: Source/Core/DolphinQt/MenuBar.cpp:1171 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 +#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 +#: Source/Core/DolphinQt/MenuBar.cpp:1181 msgid "NAND Check" msgstr "" @@ -6330,26 +6488,26 @@ msgstr "" msgid "NKit Warning" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:243 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:244 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-J" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-K" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:245 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:246 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "NTSC-U" msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:60 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:305 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:327 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Name" msgstr "" @@ -6361,37 +6519,37 @@ msgstr "" msgid "Name of the tag to remove:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:158 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:159 msgid "Name of your session shown in the server browser" msgstr "" #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:87 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:105 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:106 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:121 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:156 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:163 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:107 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:108 msgid "Name:" msgstr "名稱:" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:52 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:53 msgid "Native (640x528)" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:396 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:403 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:397 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:404 msgid "Native GCI File" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:74 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:99 msgid "NetPlay" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:32 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:33 msgid "NetPlay Session Browser" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:33 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:34 msgid "NetPlay Setup" msgstr "" @@ -6399,16 +6557,16 @@ msgstr "" msgid "Netherlands" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2767 +#: Source/Core/Core/NetPlayClient.cpp:2774 msgid "Netplay has desynced in NetPlay_GetButtonPress()" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:2149 +#: Source/Core/Core/NetPlayClient.cpp:2156 msgid "Netplay has desynced. There is no way to recover from this." msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:146 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:157 msgid "Network" msgstr "" @@ -6429,11 +6587,11 @@ msgstr "" msgid "New" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:23 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:24 msgid "New Breakpoint" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:121 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:122 msgid "New Search" msgstr "" @@ -6441,7 +6599,7 @@ msgstr "" msgid "New Tag..." msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:371 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:376 msgid "New identity generated." msgstr "" @@ -6458,7 +6616,7 @@ msgstr "" msgid "Next Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 msgid "Next Match" msgstr "" @@ -6467,17 +6625,17 @@ msgstr "" msgid "Next Profile" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:270 +#: Source/Core/Core/NetPlayClient.cpp:275 msgid "Nickname is too long." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:194 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:195 msgid "Nickname:" msgstr "" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "No" msgstr "" @@ -6485,6 +6643,10 @@ msgstr "" msgid "No Adapter Detected" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:211 +msgid "No Alignment" +msgstr "" + #: Source/Core/Core/Config/MainSettings.h:16 msgid "No Audio Output" msgstr "" @@ -6495,24 +6657,20 @@ msgstr "" msgid "No Compression" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:653 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:894 msgid "No Match" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:622 -msgid "No Value Given" -msgstr "" - -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:536 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:553 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:568 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:719 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:537 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:554 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:569 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:722 #: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:725 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:728 msgid "No description available" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:849 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:850 msgid "No errors." msgstr "" @@ -6524,15 +6682,15 @@ msgstr "" msgid "No file loaded / recorded." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:329 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:352 msgid "No game is running." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:161 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 msgid "No game running." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1118 +#: Source/Core/DolphinQt/MenuBar.cpp:1128 msgid "No issues have been detected." msgstr "" @@ -6540,11 +6698,15 @@ msgstr "" msgid "No paths found in the M3U file \"{0}\"" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1378 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:387 +msgid "No possible functions left. Reset." +msgstr "" + +#: Source/Core/DiscIO/VolumeVerifier.cpp:1379 msgid "No problems were found." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1372 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1373 msgid "" "No problems were found. This does not guarantee that this is a good dump, " "but since Wii titles contain a lot of verification data, it does mean that " @@ -6555,7 +6717,7 @@ msgstr "" msgid "No profiles found for game setting '{0}'" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:142 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:143 msgid "No recording loaded." msgstr "" @@ -6563,17 +6725,13 @@ msgstr "" msgid "No save data found." msgstr "" -#: Source/Core/Core/State.cpp:721 +#: Source/Core/Core/State.cpp:726 msgid "No undo.dtm found, aborting undo load state to prevent movie desyncs" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:517 -msgid "No value provided." -msgstr "" - -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:29 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:225 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:226 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:396 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:82 msgid "None" @@ -6583,7 +6741,7 @@ msgstr "無" msgid "North America" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:592 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:617 msgid "Not Found" msgstr "" @@ -6591,11 +6749,11 @@ msgstr "" msgid "Not Set" msgstr "未設定" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:423 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:448 msgid "Not all players have the game. Do you really want to start?" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:526 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:527 #, c-format msgctxt "" msgid "" @@ -6603,7 +6761,7 @@ msgid "" "required." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:519 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:520 #, c-format msgctxt "" msgid "" @@ -6663,13 +6821,13 @@ msgstr "" msgid "Nunchuk Stick" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:590 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:615 #: Source/Core/DolphinQt/NKitWarningDialog.cpp:57 #: qtbase/src/gui/kernel/qplatformtheme.cpp:708 msgid "OK" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:175 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:176 msgid "Object %1" msgstr "" @@ -6682,11 +6840,11 @@ msgid "Oceania" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:157 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Off" msgstr "關閉" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:97 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:103 msgid "Offset" msgstr "" @@ -6698,17 +6856,17 @@ msgstr "" msgid "On Movement" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:569 +#: Source/Core/DolphinQt/MenuBar.cpp:579 msgid "Online &Documentation" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1598 +#: Source/Core/DolphinQt/MenuBar.cpp:1608 msgid "" "Only append symbols with prefix:\n" "(Blank for all symbols)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1573 +#: Source/Core/DolphinQt/MenuBar.cpp:1583 msgid "" "Only export symbols with prefix:\n" "(Blank for all symbols)" @@ -6723,7 +6881,7 @@ msgstr "開啟" msgid "Open &Containing Folder" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:37 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:38 msgid "Open Directory..." msgstr "" @@ -6771,7 +6929,7 @@ msgstr "" msgid "OpenGL ES" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:262 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:263 msgid "Operators" msgstr "" @@ -6789,7 +6947,7 @@ msgstr "選項" msgid "Orange" msgstr "橘" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Orbital" msgstr "" @@ -6797,7 +6955,7 @@ msgstr "" #: Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp:86 #: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:98 #: Source/Core/DolphinQt/Config/Mapping/FreeLookGeneral.cpp:29 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:176 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:201 msgid "Other" msgstr "" @@ -6810,11 +6968,11 @@ msgstr "" msgid "Other State Hotkeys" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:449 msgid "Other State Management" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:164 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:189 msgid "Other game..." msgstr "" @@ -6822,12 +6980,12 @@ msgstr "" msgid "Overlay Information" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:727 +#: Source/Core/DolphinQt/MenuBar.cpp:737 msgid "P&lay Input Recording..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:248 -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:209 +#: Source/Core/DolphinQt/MenuBar.cpp:249 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:214 msgid "PAL" msgstr "" @@ -6852,7 +7010,7 @@ msgstr "" msgid "PPC Size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:547 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:559 msgid "PPC vs Host" msgstr "" @@ -6869,7 +7027,7 @@ msgstr "控制器" msgid "Parameters" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:196 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:209 msgid "Parse as Hex" msgstr "" @@ -6878,23 +7036,23 @@ msgstr "" msgid "Parsing Error" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:121 msgid "Passive" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:88 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 msgid "Passthrough a Bluetooth adapter" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:162 msgid "Password" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:160 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:161 msgid "Password for joining your game (leave empty for none)" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Password?" msgstr "" @@ -6915,7 +7073,7 @@ msgid "Path:" msgstr "" #: Source/Core/DolphinQt/Config/SettingsWindow.cpp:40 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:26 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:27 msgid "Paths" msgstr "路徑" @@ -6923,7 +7081,7 @@ msgstr "路徑" msgid "Pause" msgstr "暫停" -#: Source/Core/DolphinQt/MenuBar.cpp:747 +#: Source/Core/DolphinQt/MenuBar.cpp:757 msgid "Pause at End of Movie" msgstr "" @@ -6946,11 +7104,11 @@ msgstr "" msgid "Peak velocity of outward swing movements." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:82 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:83 msgid "Per-Pixel Lighting" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:268 +#: Source/Core/DolphinQt/MenuBar.cpp:269 msgid "Perform Online System Update" msgstr "" @@ -6960,23 +7118,23 @@ msgstr "" #. i18n: The "Physical" address space is the address space that reflects how devices (e.g. RAM) is #. physically wired up. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:140 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 msgid "Physical" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:110 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:122 msgid "Physical address space" msgstr "" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "PiB" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1213 +#: Source/Core/DolphinQt/MenuBar.cpp:1223 msgid "Pick a debug font" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Ping" msgstr "" @@ -6989,7 +7147,7 @@ msgid "Pitch Up" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:934 -#: Source/Core/DolphinQt/MenuBar.cpp:620 +#: Source/Core/DolphinQt/MenuBar.cpp:630 msgid "Platform" msgstr "" @@ -7009,16 +7167,16 @@ msgstr "播放錄像" msgid "Playback Options" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Player" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:237 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:262 msgid "Players" msgstr "玩家" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:162 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:163 msgid "" "Please start a game before starting a search with standard memory regions." msgstr "" @@ -7029,29 +7187,29 @@ msgstr "" msgid "Point" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:77 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:62 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:78 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:63 msgid "Port %1" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:159 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:160 msgid "Port %1 ROM:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:102 -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:132 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:103 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:133 msgid "Port:" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:889 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:928 msgid "Possible desync detected: %1 might have desynced at frame %2" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:383 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:384 msgid "Post-Processing Effect" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:101 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:102 msgid "Post-Processing Effect:" msgstr "" @@ -7063,15 +7221,15 @@ msgstr "" msgid "Prefetch Custom Textures" msgstr "" -#: Source/Core/Core/Movie.cpp:1185 +#: Source/Core/Core/Movie.cpp:1194 msgid "Premature movie end in PlayController. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1297 +#: Source/Core/Core/Movie.cpp:1306 msgid "Premature movie end in PlayWiimote. {0} + {1} > {2}" msgstr "" -#: Source/Core/Core/Movie.cpp:1271 +#: Source/Core/Core/Movie.cpp:1280 msgid "Premature movie end in PlayWiimote. {0} > {1}" msgstr "" @@ -7108,7 +7266,7 @@ msgstr "" msgid "Previous Game Profile" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:87 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:88 msgid "Previous Match" msgstr "" @@ -7119,15 +7277,15 @@ msgstr "" #. i18n: In this context, a primitive means a point, line, triangle or rectangle. #. Do not translate the word primitive as if it was an adjective. -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:611 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:612 msgid "Primitive %1" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 msgid "Private" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:95 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:96 msgid "Private and Public" msgstr "" @@ -7135,25 +7293,25 @@ msgstr "" msgid "Problem" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1393 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1394 msgid "" "Problems with high severity were found. The game will most likely not work " "at all." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1383 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1384 msgid "" "Problems with low severity were found. They will most likely not prevent the " "game from running." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1388 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1389 msgid "" "Problems with medium severity were found. The whole game or certain parts of " "the game might not work correctly." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:111 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:112 msgid "Profile" msgstr "設定檔" @@ -7167,15 +7325,15 @@ msgstr "" msgid "Progress" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:97 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:98 msgid "Public" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:506 +#: Source/Core/DolphinQt/MenuBar.cpp:507 msgid "Purge Game List Cache" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:458 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:459 msgid "Put IPL ROMs in User/GC/." msgstr "" @@ -7187,11 +7345,11 @@ msgctxt "" msgid "QT_LAYOUT_DIRECTION" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1538 +#: Source/Core/Core/NetPlayClient.cpp:1543 msgid "Quality of Service (QoS) couldn't be enabled." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1534 +#: Source/Core/Core/NetPlayClient.cpp:1539 msgid "Quality of Service (QoS) was successfully enabled." msgstr "" @@ -7201,12 +7359,12 @@ msgstr "" #: Source/Core/Common/MsgHandler.cpp:60 #: Source/Core/DolphinQt/ConvertDialog.cpp:433 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:658 -#: Source/Core/DolphinQt/MainWindow.cpp:1634 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:659 +#: Source/Core/DolphinQt/MainWindow.cpp:1637 msgid "Question" msgstr "問題" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:109 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:134 msgid "Quit" msgstr "離開" @@ -7226,11 +7384,11 @@ msgstr "R-類比" msgid "READY" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:964 +#: Source/Core/DolphinQt/MenuBar.cpp:974 msgid "RSO Modules" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1266 +#: Source/Core/DolphinQt/MenuBar.cpp:1276 msgid "RSO auto-detection" msgstr "" @@ -7243,44 +7401,44 @@ msgid "RVZ GC/Wii images (*.rvz)" msgstr "" #. i18n: A range of memory addresses -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:323 -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:52 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:324 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 msgid "Range" msgstr "範圍" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:73 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:74 msgid "Range End: " msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:71 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:72 msgid "Range Start: " msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:563 msgid "Re&place instruction" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:58 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 msgid "Read" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation or write operation occurs. #. The string is not a command to read and write something or to allow reading and writing. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:173 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:234 msgid "Read and write" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a read operation occurs. #. The string does not mean "read-only" in the sense that something cannot be written to. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:177 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:238 msgid "Read only" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:62 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 msgid "Read or Write" msgstr "" @@ -7288,11 +7446,11 @@ msgstr "" msgid "Read-Only Mode" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:100 msgid "Real Balance Board" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:129 msgid "Real Wii Remote" msgstr "" @@ -7305,11 +7463,11 @@ msgstr "" msgid "Record" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:177 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:202 msgid "Record Inputs" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:146 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:147 msgid "Recording" msgstr "" @@ -7334,7 +7492,7 @@ msgstr "紅 左" msgid "Red Right" msgstr "紅 右" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:296 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:297 msgid "" "Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting " "in smoother edges on objects. Increases GPU load and sometimes causes " @@ -7350,16 +7508,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:202 #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:80 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:97 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:91 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:98 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:95 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:97 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:87 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:88 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 #: Source/Core/DolphinQt/ToolBar.cpp:117 msgid "Refresh" msgstr "更新" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:202 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:220 msgid "Refresh Current Values" msgstr "" @@ -7367,26 +7525,26 @@ msgstr "" msgid "Refresh Game List" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:373 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:396 msgid "Refresh failed. Please run the game for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:387 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:410 msgid "Refreshed current values." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:245 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:197 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:198 msgid "Refreshing..." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:942 -#: Source/Core/DolphinQt/MenuBar.cpp:628 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:222 +#: Source/Core/DolphinQt/MenuBar.cpp:638 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:223 msgid "Region" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:105 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:106 msgid "Region:" msgstr "" @@ -7406,16 +7564,16 @@ msgstr "" msgid "Remind Me Later" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:38 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp:39 #: Source/Core/DolphinQt/Config/NewPatchDialog.cpp:129 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:39 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:159 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:168 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:40 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:160 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:169 msgid "Remove" msgstr "移除" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:666 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:673 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:667 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:674 msgid "Remove Failed" msgstr "" @@ -7438,8 +7596,8 @@ msgid "" "afterwards). Do you want to continue anyway?" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:717 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:771 msgid "Rename symbol" msgstr "" @@ -7472,29 +7630,37 @@ msgstr "" #: Source/Core/Core/FreeLookManager.cpp:93 #: Source/Core/Core/HotkeyManager.cpp:33 Source/Core/Core/HotkeyManager.cpp:184 #: Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp:899 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:135 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:90 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:136 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:94 #: qtbase/src/gui/kernel/qplatformtheme.cpp:740 msgid "Reset" msgstr "重置" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:204 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:87 +msgid "Reset All" +msgstr "" + +#: Source/Core/DolphinQt/MenuBar.cpp:547 +msgid "Reset Ignore Panic Handler" +msgstr "" + +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:222 msgid "Reset Results" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:388 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 msgid "Reset Traversal Server" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:389 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:390 msgid "Reset Traversal Server to %1:%2" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:91 msgid "Reset Traversal Settings" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:315 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:316 msgid "Reset Values" msgstr "" @@ -7502,15 +7668,15 @@ msgstr "" msgid "Reset View" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:97 msgid "Reset all saved Wii Remote pairings" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:24 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:25 msgid "Resource Pack Manager" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:239 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:240 msgid "Resource Pack Path:" msgstr "" @@ -7522,11 +7688,11 @@ msgstr "" msgid "Restore Defaults" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:565 msgid "Restore instruction" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:646 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:699 #: qtbase/src/gui/kernel/qplatformtheme.cpp:726 msgid "Retry" msgstr "" @@ -7535,7 +7701,7 @@ msgstr "" msgid "Return Speed" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:586 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:611 msgid "Revision" msgstr "" @@ -7593,11 +7759,11 @@ msgstr "" msgid "Roll Right" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:472 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:497 msgid "Room ID" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:457 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:458 msgid "Rotation" msgstr "" @@ -7606,12 +7772,13 @@ msgstr "" msgid "Rotation applied at extremities of swing." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:275 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:278 msgid "" -"Rounds 2D vertices to whole pixels.

Fixes graphical problems in some " -"games at higher internal resolutions. This setting has no effect when native " -"internal resolution is used.

If unsure, leave this " -"unchecked." +"Rounds 2D vertices to whole pixels and rounds the viewport size to a whole " +"number.

Fixes graphical problems in some games at higher internal " +"resolutions. This setting has no effect when native internal resolution is " +"used.

If unsure, leave this unchecked." msgstr "" #: Source/Core/Core/HW/GCPadEmu.cpp:79 @@ -7621,11 +7788,11 @@ msgstr "" msgid "Rumble" msgstr "震動" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:544 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:556 msgid "Run &To Here" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:144 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:145 msgid "Run GBA Cores in Dedicated Threads" msgstr "" @@ -7633,15 +7800,15 @@ msgstr "" msgid "Russia" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:171 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:196 msgid "SD Card" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:106 msgid "SD Card Image (*.raw);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:247 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:248 msgid "SD Card Path:" msgstr "" @@ -7657,7 +7824,7 @@ msgstr "" msgid "SHA-1:" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:133 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:134 msgid "SP1:" msgstr "" @@ -7671,11 +7838,11 @@ msgstr "" msgid "START" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:976 +#: Source/Core/DolphinQt/MenuBar.cpp:986 msgid "Sa&ve Code" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:346 +#: Source/Core/DolphinQt/MenuBar.cpp:347 msgid "Sa&ve State" msgstr "儲存進度(&V)" @@ -7685,7 +7852,7 @@ msgid "Safe" msgstr "安全" #: Source/Core/DolphinQt/Config/Mapping/HotkeyStates.cpp:21 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:114 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:115 #: Source/Core/DolphinQt/Debugger/BreakpointWidget.cpp:111 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:92 #: qtbase/src/gui/kernel/qplatformtheme.cpp:710 @@ -7698,7 +7865,7 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:531 #: Source/Core/DolphinQt/GameList/GameList.cpp:536 -#: Source/Core/DolphinQt/MenuBar.cpp:1108 +#: Source/Core/DolphinQt/MenuBar.cpp:1118 msgid "Save Export" msgstr "" @@ -7719,11 +7886,11 @@ msgstr "" msgid "Save Game Files (*.sav);;All Files (*)" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1066 -#: Source/Core/DolphinQt/MenuBar.cpp:1075 -#: Source/Core/DolphinQt/MenuBar.cpp:1078 -#: Source/Core/DolphinQt/MenuBar.cpp:1084 -#: Source/Core/DolphinQt/MenuBar.cpp:1091 +#: Source/Core/DolphinQt/MenuBar.cpp:1076 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 +#: Source/Core/DolphinQt/MenuBar.cpp:1088 +#: Source/Core/DolphinQt/MenuBar.cpp:1094 +#: Source/Core/DolphinQt/MenuBar.cpp:1101 msgid "Save Import" msgstr "" @@ -7735,7 +7902,7 @@ msgstr "" msgid "Save Preset" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1763 +#: Source/Core/DolphinQt/MainWindow.cpp:1766 msgid "Save Recording File As" msgstr "" @@ -7785,23 +7952,23 @@ msgstr "儲存至儲存格 8" msgid "Save State Slot 9" msgstr "儲存至儲存格 9" -#: Source/Core/DolphinQt/MenuBar.cpp:347 +#: Source/Core/DolphinQt/MenuBar.cpp:348 msgid "Save State to File" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:349 +#: Source/Core/DolphinQt/MenuBar.cpp:350 msgid "Save State to Oldest Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:348 +#: Source/Core/DolphinQt/MenuBar.cpp:349 msgid "Save State to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:350 +#: Source/Core/DolphinQt/MenuBar.cpp:351 msgid "Save State to Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:973 +#: Source/Core/DolphinQt/MenuBar.cpp:983 msgid "Save Symbol Map &As..." msgstr "" @@ -7809,7 +7976,7 @@ msgstr "" msgid "Save Texture Cache to State" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:447 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:448 msgid "Save and Load State" msgstr "" @@ -7821,26 +7988,26 @@ msgstr "" msgid "Save as..." msgstr "另存為..." -#: Source/Core/DolphinQt/MenuBar.cpp:1652 +#: Source/Core/DolphinQt/MenuBar.cpp:1662 msgid "Save combined output file as" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1067 +#: Source/Core/DolphinQt/MenuBar.cpp:1077 msgid "" "Save data for this title already exists in the NAND. Consider backing up the " "current data before overwriting.\n" "Overwrite now?" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:165 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:166 msgid "Save in Same Directory as the ROM" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1524 +#: Source/Core/DolphinQt/MenuBar.cpp:1534 msgid "Save map file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1576 +#: Source/Core/DolphinQt/MenuBar.cpp:1586 msgid "Save signature file" msgstr "" @@ -7848,7 +8015,7 @@ msgstr "" msgid "Save to Selected Slot" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:388 +#: Source/Core/DolphinQt/MenuBar.cpp:389 msgid "Save to Slot %1 - %2" msgstr "" @@ -7856,23 +8023,23 @@ msgstr "" msgid "Save..." msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:242 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:246 msgid "Saved Wii Remote pairings can only be reset when a Wii game is running." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:171 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:172 msgid "Saves:" msgstr "" -#: Source/Core/Core/Movie.cpp:1015 +#: Source/Core/Core/Movie.cpp:1024 msgid "Savestate movie {0} is corrupted, movie recording stopping..." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:80 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:81 msgid "Scaled EFB Copy" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:272 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:295 msgid "Scan succeeded." msgstr "" @@ -7880,36 +8047,36 @@ msgstr "" msgid "ScrShot" msgstr "截圖" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:113 -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:85 -#: Source/Core/DolphinQt/MenuBar.cpp:513 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:156 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:86 +#: Source/Core/DolphinQt/MenuBar.cpp:514 msgid "Search" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:100 -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:96 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:102 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:102 msgid "Search Address" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:83 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:84 msgid "Search Current Object" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:163 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:164 msgid "Search Subfolders" msgstr "搜尋子資料夾" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:218 msgid "Search and Filter" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:336 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:359 msgid "" "Search currently not possible in virtual address space. Please run the game " "for a bit and try again." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:845 +#: Source/Core/DolphinQt/MenuBar.cpp:855 msgid "Search for an Instruction" msgstr "" @@ -7917,7 +8084,7 @@ msgstr "" msgid "Search games..." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1691 +#: Source/Core/DolphinQt/MenuBar.cpp:1701 msgid "Search instruction" msgstr "" @@ -7941,28 +8108,28 @@ msgstr "" msgid "Security options" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:244 msgid "Select" msgstr "選擇" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:70 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:71 msgid "Select Dump Path" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:511 -#: Source/Core/DolphinQt/MenuBar.cpp:1102 +#: Source/Core/DolphinQt/MenuBar.cpp:1112 msgid "Select Export Directory" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:399 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:400 msgid "Select GBA BIOS" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:533 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:534 msgid "Select GBA ROM" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:428 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:429 msgid "Select GBA Saves Path" msgstr "" @@ -7970,11 +8137,11 @@ msgstr "" msgid "Select Last State" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:81 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:82 msgid "Select Load Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:92 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:93 msgid "Select Resource Pack Path" msgstr "" @@ -7982,7 +8149,7 @@ msgstr "" msgid "Select Riivolution XML file" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:389 +#: Source/Core/DolphinQt/MenuBar.cpp:390 msgid "Select Slot %1 - %2" msgstr "" @@ -7990,7 +8157,7 @@ msgstr "" msgid "Select State" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:363 +#: Source/Core/DolphinQt/MenuBar.cpp:364 msgid "Select State Slot" msgstr "選擇儲存格" @@ -8034,41 +8201,45 @@ msgstr "選擇儲存格 8" msgid "Select State Slot 9" msgstr "選擇儲存格 9" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:117 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:118 msgid "Select WFS Path" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:59 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:60 msgid "Select Wii NAND Root" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:258 -#: Source/Core/DolphinQt/Settings/PathPane.cpp:38 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:39 msgid "Select a Directory" msgstr "" #: Source/Core/DolphinQt/Config/InfoWidget.cpp:194 #: Source/Core/DolphinQt/GBAWidget.cpp:210 #: Source/Core/DolphinQt/GBAWidget.cpp:241 -#: Source/Core/DolphinQt/MainWindow.cpp:734 -#: Source/Core/DolphinQt/MainWindow.cpp:1306 -#: Source/Core/DolphinQt/MainWindow.cpp:1314 +#: Source/Core/DolphinQt/MainWindow.cpp:737 +#: Source/Core/DolphinQt/MainWindow.cpp:1309 +#: Source/Core/DolphinQt/MainWindow.cpp:1317 msgid "Select a File" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:46 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:47 msgid "Select a Game" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:104 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:105 msgid "Select a SD Card Image" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:737 +msgid "Select a file" +msgstr "" + #: Source/Core/DolphinQt/NetPlay/GameListDialog.cpp:18 msgid "Select a game" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "Select a title to install to NAND" msgstr "" @@ -8076,11 +8247,11 @@ msgstr "" msgid "Select e-Reader Cards" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1327 +#: Source/Core/DolphinQt/MenuBar.cpp:1337 msgid "Select the RSO module address:" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1692 +#: Source/Core/DolphinQt/MainWindow.cpp:1695 msgid "Select the Recording File to Play" msgstr "" @@ -8088,12 +8259,12 @@ msgstr "" msgid "Select the Virtual SD Card Root" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1670 +#: Source/Core/DolphinQt/MainWindow.cpp:1673 msgid "Select the keys file (OTP/SEEPROM dump)" msgstr "" -#: Source/Core/DolphinQt/MainWindow.cpp:1644 -#: Source/Core/DolphinQt/MenuBar.cpp:1057 +#: Source/Core/DolphinQt/MainWindow.cpp:1647 +#: Source/Core/DolphinQt/MenuBar.cpp:1067 msgid "Select the save file" msgstr "選擇存檔" @@ -8109,15 +8280,15 @@ msgstr "" msgid "Selected Font" msgstr "" -#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:226 +#: Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp:232 msgid "Selected controller profile does not exist" msgstr "" #: Source/Core/Core/NetPlayServer.cpp:1282 #: Source/Core/Core/NetPlayServer.cpp:1625 #: Source/Core/Core/NetPlayServer.cpp:1907 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:439 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:810 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:464 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:849 msgid "Selected game doesn't exist in game list!" msgstr "" @@ -8141,7 +8312,7 @@ msgid "" "select the first one." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:333 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:334 msgid "" "Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling of " "depth if the necessary hardware is present. Heavily decreases emulation " @@ -8181,11 +8352,11 @@ msgid "" "

If unsure, select OpenGL." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:217 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:242 msgid "Send" msgstr "傳送" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:184 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:185 msgid "Sensor Bar Position:" msgstr "傳感器位置:" @@ -8197,63 +8368,71 @@ msgid "" "Example: {2}" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:51 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:50 msgid "Server IP Address" msgstr "" -#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:53 +#: Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp:52 msgid "Server Port" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1928 +#: Source/Core/Core/NetPlayClient.cpp:1935 msgid "Server rejected traversal attempt" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:94 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:114 msgid "Set &Value" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:443 +msgid "Set &blr" +msgstr "" + #. i18n: Here, PC is an acronym for program counter, not personal computer. #: Source/Core/Core/HotkeyManager.cpp:73 Source/Core/DolphinQt/ToolBar.cpp:114 msgid "Set PC" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:115 +msgid "Set Value From File" +msgstr "" + #: Source/Core/DolphinQt/GameList/GameList.cpp:372 msgid "Set as &Default ISO" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:356 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 msgid "Set memory card file for Slot A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:357 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:358 msgid "Set memory card file for Slot B" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:553 msgid "Set symbol &end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:539 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:551 msgid "Set symbol &size" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:740 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:794 msgid "Set symbol end address" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:718 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:772 msgid "Set symbol size (%1):" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:139 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:140 msgid "" "Sets the Wii display mode to 60Hz (480i) instead of 50Hz (576i) for PAL " "games.\n" "May not work for all games." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:142 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 msgid "Sets the Wii system language." msgstr "" @@ -8263,7 +8442,7 @@ msgid "" "Certain backends only." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:52 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:53 msgid "" "Sets up the search using standard MEM1 and (on Wii) MEM2 mappings in virtual " "address space. This will work for the vast majority of games." @@ -8298,11 +8477,11 @@ msgid "" "on performance. Defaults to False" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:396 +#: Source/Core/DolphinQt/MenuBar.cpp:397 msgid "Show &Log" msgstr "顯示日誌視窗(&L)" -#: Source/Core/DolphinQt/MenuBar.cpp:409 +#: Source/Core/DolphinQt/MenuBar.cpp:410 msgid "Show &Toolbar" msgstr "顯示工具列(&T)" @@ -8310,15 +8489,15 @@ msgstr "顯示工具列(&T)" msgid "Show Active Title in Window Title" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:696 +#: Source/Core/DolphinQt/MenuBar.cpp:706 msgid "Show All" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:683 +#: Source/Core/DolphinQt/MenuBar.cpp:693 msgid "Show Australia" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:149 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:154 msgid "Show Current Game on Discord" msgstr "" @@ -8326,7 +8505,7 @@ msgstr "" msgid "Show Debugging UI" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:658 +#: Source/Core/DolphinQt/MenuBar.cpp:668 msgid "Show ELF/DOL" msgstr "" @@ -8334,43 +8513,43 @@ msgstr "" msgid "Show FPS" msgstr "顯示 FPS" -#: Source/Core/DolphinQt/MenuBar.cpp:765 +#: Source/Core/DolphinQt/MenuBar.cpp:775 msgid "Show Frame Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:684 +#: Source/Core/DolphinQt/MenuBar.cpp:694 msgid "Show France" msgstr "顯示 France" -#: Source/Core/DolphinQt/MenuBar.cpp:656 +#: Source/Core/DolphinQt/MenuBar.cpp:666 msgid "Show GameCube" msgstr "顯示 GameCube" -#: Source/Core/DolphinQt/MenuBar.cpp:685 +#: Source/Core/DolphinQt/MenuBar.cpp:695 msgid "Show Germany" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:179 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:204 msgid "Show Golf Mode Overlay" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:771 +#: Source/Core/DolphinQt/MenuBar.cpp:781 msgid "Show Input Display" msgstr "輸入顯示" -#: Source/Core/DolphinQt/MenuBar.cpp:686 +#: Source/Core/DolphinQt/MenuBar.cpp:696 msgid "Show Italy" msgstr "顯示 Italy" -#: Source/Core/DolphinQt/MenuBar.cpp:680 +#: Source/Core/DolphinQt/MenuBar.cpp:690 msgid "Show JPN" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:687 +#: Source/Core/DolphinQt/MenuBar.cpp:697 msgid "Show Korea" msgstr "顯示 Korea" -#: Source/Core/DolphinQt/MenuBar.cpp:759 +#: Source/Core/DolphinQt/MenuBar.cpp:769 msgid "Show Lag Counter" msgstr "" @@ -8378,7 +8557,7 @@ msgstr "" msgid "Show Language:" msgstr "顯示語系:" -#: Source/Core/DolphinQt/MenuBar.cpp:402 +#: Source/Core/DolphinQt/MenuBar.cpp:403 msgid "Show Log &Configuration" msgstr "日誌記錄設定(&C)" @@ -8390,7 +8569,7 @@ msgstr "" msgid "Show NetPlay Ping" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:688 +#: Source/Core/DolphinQt/MenuBar.cpp:698 msgid "Show Netherlands" msgstr "" @@ -8398,7 +8577,7 @@ msgstr "" msgid "Show On-Screen Display Messages" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:681 +#: Source/Core/DolphinQt/MenuBar.cpp:691 msgid "Show PAL" msgstr "顯示 PAL" @@ -8407,23 +8586,23 @@ msgstr "顯示 PAL" msgid "Show PC" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:661 +#: Source/Core/DolphinQt/MenuBar.cpp:671 msgid "Show Platforms" msgstr "顯示平台" -#: Source/Core/DolphinQt/MenuBar.cpp:695 +#: Source/Core/DolphinQt/MenuBar.cpp:705 msgid "Show Regions" msgstr "顯示區域" -#: Source/Core/DolphinQt/MenuBar.cpp:753 +#: Source/Core/DolphinQt/MenuBar.cpp:763 msgid "Show Rerecord Counter" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:689 +#: Source/Core/DolphinQt/MenuBar.cpp:699 msgid "Show Russia" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:690 +#: Source/Core/DolphinQt/MenuBar.cpp:700 msgid "Show Spain" msgstr "" @@ -8432,46 +8611,50 @@ msgstr "" msgid "Show Statistics" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:778 +#: Source/Core/DolphinQt/MenuBar.cpp:788 msgid "Show System Clock" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:691 +#: Source/Core/DolphinQt/MenuBar.cpp:701 msgid "Show Taiwan" msgstr "顯示 Taiwan" -#: Source/Core/DolphinQt/MenuBar.cpp:682 +#: Source/Core/DolphinQt/MenuBar.cpp:692 msgid "Show USA" msgstr "顯示 USA" -#: Source/Core/DolphinQt/MenuBar.cpp:693 +#: Source/Core/DolphinQt/MenuBar.cpp:703 msgid "Show Unknown" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:657 +#: Source/Core/DolphinQt/MenuBar.cpp:667 msgid "Show WAD" msgstr "顯示 WAD" -#: Source/Core/DolphinQt/MenuBar.cpp:655 +#: Source/Core/DolphinQt/MenuBar.cpp:665 msgid "Show Wii" msgstr "顯示 Wii" -#: Source/Core/DolphinQt/MenuBar.cpp:692 +#: Source/Core/DolphinQt/MenuBar.cpp:702 msgid "Show World" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:532 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:541 msgid "Show in &memory" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:400 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:615 msgid "Show in code" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:138 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:139 msgid "Show in server browser" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:543 +msgid "Show target in memor&y" +msgstr "" + #: Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp:165 msgid "" "Show various rendering statistics.

If unsure, leave " @@ -8503,7 +8686,7 @@ msgid "" "leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Side-by-Side" msgstr "" @@ -8519,16 +8702,31 @@ msgstr "" msgid "Sideways Wii Remote" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:963 +#: Source/Core/DolphinQt/MenuBar.cpp:973 msgid "Signature Database" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:138 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:202 +msgid "Signed 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:139 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:203 +msgid "Signed 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:137 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:201 +msgid "Signed 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:145 msgid "Signed Integer" msgstr "" #: Source/Core/DiscIO/Enums.cpp:98 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:128 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 msgid "Simplified Chinese" msgstr "Simplified Chinese" @@ -8536,7 +8734,7 @@ msgstr "Simplified Chinese" msgid "Simulate DK Bongos" msgstr "" -#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:39 +#: Source/Core/DolphinQt/Config/FreeLookWidget.cpp:40 msgid "Six Axis" msgstr "" @@ -8563,7 +8761,7 @@ msgstr "" msgid "Skip EFB Access from CPU" msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:68 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:69 msgid "Skip Main Menu" msgstr "" @@ -8571,7 +8769,7 @@ msgstr "" msgid "Skip Presenting Duplicate Frames" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:250 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:253 msgid "" "Skips presentation of duplicate frames (XFB copies) in 25fps/30fps games. " "This may improve performance on low-end devices, while making frame pacing " @@ -8585,19 +8783,19 @@ msgstr "" msgid "Slider Bar" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot A" msgstr "插槽 A" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:127 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:128 msgid "Slot A:" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:132 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:133 msgid "Slot B" msgstr "插槽 B" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:130 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:131 msgid "Slot B:" msgstr "" @@ -8615,7 +8813,7 @@ msgstr "" msgid "Software Renderer" msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1287 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1288 msgid "Some of the data could not be read." msgstr "" @@ -8632,11 +8830,11 @@ msgid "" msgstr "" #: Source/Core/DolphinQt/Config/ARCodeWidget.cpp:114 -#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:257 +#: Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp:258 msgid "Sort Alphabetically" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:132 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:133 msgid "Sound:" msgstr "" @@ -8649,8 +8847,8 @@ msgid "Spain" msgstr "" #: Source/Core/DiscIO/Enums.cpp:89 -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:82 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:125 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:83 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:126 msgid "Spanish" msgstr "Spanish" @@ -8658,7 +8856,7 @@ msgstr "Spanish" msgid "Speaker Pan" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:198 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:199 msgid "Speaker Volume:" msgstr "揚聲器音量:" @@ -8693,7 +8891,7 @@ msgstr "" msgid "Speed up Disc Transfer Rate" msgstr "加速光碟傳輸率" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:189 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:194 msgid "Stable (once a year)" msgstr "" @@ -8705,16 +8903,16 @@ msgstr "" msgid "Stack start" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:30 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:31 msgid "Standard Controller" msgstr "標準控制器" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:106 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:131 #: Source/Core/DolphinQt/RiivolutionBootWidget.cpp:61 msgid "Start" msgstr "Start" -#: Source/Core/DolphinQt/MenuBar.cpp:236 +#: Source/Core/DolphinQt/MenuBar.cpp:237 msgid "Start &NetPlay..." msgstr "" @@ -8722,11 +8920,13 @@ msgstr "" msgid "Start New Cheat Search" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:725 +#: Source/Core/DolphinQt/MenuBar.cpp:735 msgid "Start Re&cording Input" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:54 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:200 msgid "Start Recording" msgstr "開始錄製" @@ -8742,7 +8942,7 @@ msgstr "" msgid "Start with Riivolution Patches..." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:791 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:830 msgid "Started game" msgstr "" @@ -8753,7 +8953,7 @@ msgstr "" msgid "State" msgstr "" -#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:32 +#: Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp:33 msgid "Steering Wheel" msgstr "" @@ -8781,19 +8981,19 @@ msgstr "" msgid "Step Over" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:488 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:502 msgid "Step out successful!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:486 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:500 msgid "Step out timed out!" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:413 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:427 msgid "Step over in progress..." msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:398 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:412 msgid "Step successful!" msgstr "" @@ -8802,20 +9002,20 @@ msgstr "" msgid "Stepping" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:135 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:136 msgid "Stereo" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:402 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:403 msgid "Stereoscopic 3D Mode" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:127 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:128 msgid "Stereoscopic 3D Mode:" msgstr "" #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:118 -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:115 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:116 msgid "Stereoscopy" msgstr "" @@ -8836,11 +9036,15 @@ msgstr "搖桿" msgid "Stop" msgstr "停止" -#: Source/Core/DolphinQt/MenuBar.cpp:728 +#: Source/Core/DolphinQt/MenuBar.cpp:738 msgid "Stop Playing/Recording Input" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:356 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:192 +msgid "Stop Recording" +msgstr "" + +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:381 msgid "Stopped game" msgstr "" @@ -8854,7 +9058,7 @@ msgstr "" msgid "Store XFB Copies to Texture Only" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:221 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:224 msgid "" "Stores EFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = EFB Copies to " @@ -8863,7 +9067,7 @@ msgid "" "dolphin_emphasis>" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:240 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:243 msgid "" "Stores XFB copies exclusively on the GPU, bypassing system memory. Causes " "graphical defects in a small number of games.

Enabled = XFB Copies to " @@ -8876,7 +9080,7 @@ msgstr "" msgid "Stretch to Window" msgstr "拉伸至視窗" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:125 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:150 msgid "Strict Settings Sync" msgstr "" @@ -8899,16 +9103,16 @@ msgstr "" #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:257 #: Source/Core/DolphinQt/Config/FilesystemWidget.cpp:381 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:268 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 #: Source/Core/DolphinQt/ConvertDialog.cpp:513 #: Source/Core/DolphinQt/GameList/GameList.cpp:573 #: Source/Core/DolphinQt/GameList/GameList.cpp:601 -#: Source/Core/DolphinQt/MenuBar.cpp:1045 -#: Source/Core/DolphinQt/MenuBar.cpp:1180 +#: Source/Core/DolphinQt/MenuBar.cpp:1055 +#: Source/Core/DolphinQt/MenuBar.cpp:1190 msgid "Success" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:406 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:431 msgid "Successfully added to the NetPlay index" msgstr "" @@ -8918,11 +9122,11 @@ msgctxt "" msgid "Successfully converted %n image(s)." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:269 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:270 msgid "Successfully deleted '%1'." msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:494 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:495 msgctxt "" msgid "Successfully exported %n out of %1 save file(s)." msgstr "" @@ -8931,7 +9135,7 @@ msgstr "" msgid "Successfully exported save files" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1181 +#: Source/Core/DolphinQt/MenuBar.cpp:1191 msgid "Successfully extracted certificates from NAND" msgstr "" @@ -8943,12 +9147,12 @@ msgstr "" msgid "Successfully extracted system data." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1075 +#: Source/Core/DolphinQt/MenuBar.cpp:1085 msgid "Successfully imported save file." msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:574 -#: Source/Core/DolphinQt/MenuBar.cpp:1046 +#: Source/Core/DolphinQt/MenuBar.cpp:1056 msgid "Successfully installed this title to the NAND." msgstr "" @@ -8960,16 +9164,16 @@ msgstr "" msgid "Support" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:586 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:587 msgid "Supported file formats" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:143 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:144 msgid "Supports SD and SDHC. Default size is 128 MB." msgstr "" #. i18n: Surround audio (Dolby Pro Logic II) -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:137 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:138 msgid "Surround" msgstr "" @@ -8977,11 +9181,11 @@ msgstr "" msgid "Suspended" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:125 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:126 msgid "Swap Eyes" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:347 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:348 msgid "" "Swaps the left and right eye. Most useful in side-by-side stereoscopy mode." "

If unsure, leave this unchecked." @@ -8993,50 +9197,62 @@ msgstr "" msgid "Swing" msgstr "揮舞" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to A" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:240 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:241 msgid "Switch to B" msgstr "" #. i18n: The symbolic name of a code block +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 #: Source/Core/DolphinQt/Debugger/JITWidget.cpp:82 msgid "Symbol" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:741 +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:795 msgid "Symbol (%1) end address:" msgstr "" -#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:682 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:179 +msgid "" +"Symbol map not found.\n" +"\n" +"If one does not exist, you can generate one from the Menu bar:\n" +"Symbols -> Generate Symbols From ->\n" +"\tAddress | Signature Database | RSO Modules" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:736 msgid "Symbol name:" msgstr "" #: Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp:151 -#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:112 -#: Source/Core/DolphinQt/MenuBar.cpp:957 +#: Source/Core/DolphinQt/Debugger/CodeWidget.cpp:114 +#: Source/Core/DolphinQt/MenuBar.cpp:967 msgid "Symbols" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:93 msgid "Sync" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:121 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:146 msgid "Sync AR/Gecko Codes" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:123 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:148 msgid "Sync All Wii Saves" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:119 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:144 msgid "Sync Saves" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:92 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:96 msgid "Sync real Wii Remotes and pair them" msgstr "" @@ -9050,37 +9266,37 @@ msgid "" "core mode. (ON = Compatible, OFF = Fast)" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1372 +#: Source/Core/Core/NetPlayClient.cpp:1377 msgid "Synchronizing AR codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1305 +#: Source/Core/Core/NetPlayClient.cpp:1310 msgid "Synchronizing Gecko codes..." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1014 +#: Source/Core/Core/NetPlayClient.cpp:1019 msgid "Synchronizing save data..." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:78 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:119 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:79 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:120 msgid "System Language:" msgstr "系統語系:" -#: Source/Core/DolphinQt/MenuBar.cpp:743 +#: Source/Core/DolphinQt/MenuBar.cpp:753 msgid "TAS Input" msgstr "" #. i18n: TAS is short for tool-assisted speedrun. Read http://tasvideos.org/ for details. #. Frame advance is an example of a typical TAS tool. -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:438 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:439 msgid "TAS Tools" msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:452 #: Source/Core/DolphinQt/GameList/GameList.cpp:947 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:235 -#: Source/Core/DolphinQt/MenuBar.cpp:633 +#: Source/Core/DolphinQt/MenuBar.cpp:643 msgid "Tags" msgstr "" @@ -9098,11 +9314,11 @@ msgstr "" msgid "Taiwan" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:315 +#: Source/Core/Core/HotkeyManager.cpp:35 Source/Core/DolphinQt/MenuBar.cpp:316 msgid "Take Screenshot" msgstr "截取畫面" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:245 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:246 msgid "Test" msgstr "測試" @@ -9111,7 +9327,7 @@ msgstr "測試" msgid "Texture Cache" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:284 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:287 msgid "Texture Cache Accuracy" msgstr "" @@ -9133,7 +9349,7 @@ msgstr "" msgid "The H3 hash table for the {0} partition is not correct." msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:436 +#: Source/Core/Core/Boot/Boot.cpp:429 msgid "The IPL file is not a known good dump. (CRC32: {0:x})" msgstr "" @@ -9147,13 +9363,13 @@ msgstr "" msgid "The Masterpiece partitions are missing." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1172 +#: Source/Core/DolphinQt/MenuBar.cpp:1182 msgid "" "The NAND could not be repaired. It is recommended to back up your current " "data and start over with a fresh NAND." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1167 +#: Source/Core/DolphinQt/MenuBar.cpp:1177 msgid "The NAND has been repaired." msgstr "" @@ -9189,7 +9405,7 @@ msgstr "" msgid "The decryption keys need to be appended to the NAND backup file." msgstr "" -#: Source/Core/Core/Movie.cpp:393 +#: Source/Core/Core/Movie.cpp:401 msgid "" "The disc change to \"{0}\" could not be saved in the .dtm file.\n" "The filename of the disc image must not be longer than 40 characters." @@ -9203,7 +9419,7 @@ msgstr "" msgid "The disc that was about to be inserted couldn't be found." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1122 +#: Source/Core/DolphinQt/MenuBar.cpp:1132 msgid "" "The emulated NAND is damaged. System titles such as the Wii Menu and the Wii " "Shop Channel may not work correctly.\n" @@ -9225,19 +9441,19 @@ msgstr "" msgid "The entered MAC address is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 msgid "The entered PID is invalid." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 msgid "The entered VID is invalid." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:515 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:517 msgid "The expression contains a syntax error." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:322 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:323 msgid "" "The file\n" "%1\n" @@ -9287,7 +9503,7 @@ msgstr "" msgid "The game disc does not contain any usable update information." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:267 +#: Source/Core/Core/NetPlayClient.cpp:272 msgid "The game is currently running." msgstr "" @@ -9298,7 +9514,7 @@ msgid "" "disc." msgstr "" -#: Source/Core/VideoBackends/OGL/OGLRender.cpp:723 +#: Source/Core/VideoBackends/OGL/OGLRender.cpp:725 msgid "" "The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need " "to turn this off in the graphics driver's settings in order for Dolphin to " @@ -9315,7 +9531,7 @@ msgstr "" msgid "The hashes match!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:177 +#: Source/Core/Core/NetPlayClient.cpp:178 msgid "" "The host code is too long.\n" "Please recheck that you have the correct code." @@ -9337,12 +9553,12 @@ msgstr "" msgid "The patches in %1 are not for the selected game or game revision." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:242 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:281 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:243 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:282 msgid "The profile '%1' does not exist" msgstr "" -#: Source/Core/Core/Movie.cpp:252 +#: Source/Core/Core/Movie.cpp:260 msgid "The recorded game ({0}) is not the same as the selected game ({1})" msgstr "" @@ -9357,20 +9573,20 @@ msgstr "" msgid "The resulting decrypted AR code doesn't contain any lines." msgstr "" -#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:346 +#: Source/Core/DolphinQt/Settings/GameCubePane.cpp:347 msgid "" "The same file can't be used in multiple slots; it is already used by %1." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:264 +#: Source/Core/Core/NetPlayClient.cpp:269 msgid "The server and client's NetPlay versions are incompatible." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:260 +#: Source/Core/Core/NetPlayClient.cpp:265 msgid "The server is full." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:273 +#: Source/Core/Core/NetPlayClient.cpp:278 msgid "The server sent an unknown error message." msgstr "" @@ -9391,7 +9607,7 @@ msgstr "" msgid "The specified file \"{0}\" does not exist" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:541 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:542 msgid "The target memory card already contains a file \"%1\"." msgstr "" @@ -9442,7 +9658,7 @@ msgstr "" msgid "There are too many partitions in the first partition table." msgstr "" -#: Source/Core/Core/State.cpp:726 +#: Source/Core/Core/State.cpp:731 msgid "There is nothing to undo!" msgstr "" @@ -9478,7 +9694,7 @@ msgid "" "consoles. This is likely to lead to ERROR #002." msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:151 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 msgid "This USB device is already whitelisted." msgstr "" @@ -9496,7 +9712,7 @@ msgid "" "Replay itself." msgstr "Action replay 模擬器不支援被 Action Replay 自身修改的代碼。" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:252 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:253 #: Source/Core/DolphinQt/GameList/GameList.cpp:773 msgid "This cannot be undone!" msgstr "" @@ -9536,7 +9752,11 @@ msgid "" "that this is a dual-layer disc that has been dumped as a single-layer disc." msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:60 +#: Source/Core/DiscIO/NANDImporter.cpp:116 +msgid "This file does not contain a valid Wii filesystem." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:55 msgid "This file does not look like a BootMii NAND backup." msgstr "" @@ -9554,27 +9774,27 @@ msgid "" "or freezes while running this game." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1363 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1364 msgid "This is a bad dump." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1357 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1358 msgid "" "This is a bad dump. This doesn't necessarily mean that the game won't run " "correctly." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1333 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1334 msgid "" "This is a good dump according to Redump.org, but Dolphin has found problems. " "This might be a bug in Dolphin." msgstr "" -#: Source/Core/DiscIO/VolumeVerifier.cpp:1328 +#: Source/Core/DiscIO/VolumeVerifier.cpp:1329 msgid "This is a good dump." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:301 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:302 msgid "This session requires a password:" msgstr "" @@ -9630,13 +9850,13 @@ msgid "" "This value is multiplied with the depth set in the graphics configuration." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:156 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:157 msgid "" "This will limit the speed of chunked uploading per client, which is used for " "save sync." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:127 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:152 msgid "" "This will sync additional graphics settings, and force everyone to the same " "internal resolution.\n" @@ -9656,7 +9876,7 @@ msgstr "" msgid "Threshold" msgstr "閾值" -#: Source/Core/UICommon/UICommon.cpp:444 +#: Source/Core/UICommon/UICommon.cpp:421 msgid "TiB" msgstr "" @@ -9673,22 +9893,22 @@ msgstr "" #: Source/Core/DolphinQt/GameList/GameList.cpp:936 #: Source/Core/DolphinQt/GameList/GameListModel.cpp:213 -#: Source/Core/DolphinQt/GCMemcardManager.cpp:152 -#: Source/Core/DolphinQt/MenuBar.cpp:622 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:153 +#: Source/Core/DolphinQt/MenuBar.cpp:632 msgid "Title" msgstr "標題" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:187 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:194 msgid "To" msgstr "" -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:56 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:63 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:96 #: Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp:111 msgid "To:" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:312 +#: Source/Core/DolphinQt/MenuBar.cpp:313 msgid "Toggle &Fullscreen" msgstr "" @@ -9713,7 +9933,7 @@ msgid "Toggle Aspect Ratio" msgstr "" #: Source/Core/Core/HotkeyManager.cpp:75 -#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:409 +#: Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp:624 msgid "Toggle Breakpoint" msgstr "" @@ -9773,14 +9993,20 @@ msgstr "" msgid "Toolbar" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:186 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:187 msgid "Top" msgstr "上方" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:119 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:120 msgid "Top-and-Bottom" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:77 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:132 +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:362 +msgid "Total Hits" +msgstr "" + #. i18n: Refers to an amount of rotational movement about the "pitch" axis. #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp:55 msgid "Total Pitch" @@ -9815,20 +10041,20 @@ msgid "Touch" msgstr "" #: Source/Core/DiscIO/Enums.cpp:101 -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:129 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:130 msgid "Traditional Chinese" msgstr "Traditional Chinese" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:913 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:917 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:952 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:956 msgid "Traversal Error" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:189 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:190 msgid "Traversal Server" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1925 +#: Source/Core/Core/NetPlayClient.cpp:1932 msgid "Traversal server timed out connecting to the host" msgstr "" @@ -9858,20 +10084,12 @@ msgstr "扳機" msgid "Type" msgstr "類型" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:47 -msgid "Typical GameCube/Wii Address Space" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:153 -msgid "U&16" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:210 +msgid "Type-based Alignment" msgstr "" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:154 -msgid "U&32" -msgstr "" - -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:152 -msgid "U&8" +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:48 +msgid "Typical GameCube/Wii Address Space" msgstr "" #: Source/Core/DolphinQt/Debugger/ThreadWidget.cpp:288 @@ -9888,9 +10106,9 @@ msgstr "" #. i18n: Here, VID means Vendor ID (for a USB device). #. i18n: Here, PID means Product ID (for a USB device). -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:133 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:139 -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:150 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:132 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:138 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:149 msgid "USB Whitelist Error" msgstr "" @@ -9918,10 +10136,14 @@ msgid "" "behavior." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1321 +#: Source/Core/DolphinQt/MenuBar.cpp:1331 msgid "Unable to auto-detect RSO module" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:748 +msgid "Unable to open file." +msgstr "" + #: Source/Core/DolphinQt/Config/CheatCodeEditor.cpp:150 msgid "" "Unable to parse line %1 of the entered AR code as a valid encrypted or " @@ -9938,7 +10160,11 @@ msgid "" "Would you like to ignore this line and continue parsing?" msgstr "" -#: Source/Core/DiscIO/NANDImporter.cpp:275 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:756 +msgid "Unable to read file." +msgstr "" + +#: Source/Core/DiscIO/NANDImporter.cpp:268 msgid "Unable to write to file {0}" msgstr "" @@ -9950,15 +10176,15 @@ msgstr "" msgid "Uncompressed GC/Wii images (*.iso *.gcm)" msgstr "" -#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:334 +#: Source/Core/Core/HotkeyManager.cpp:177 Source/Core/DolphinQt/MenuBar.cpp:335 msgid "Undo Load State" msgstr "取消讀取進度" -#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:351 +#: Source/Core/Core/HotkeyManager.cpp:178 Source/Core/DolphinQt/MenuBar.cpp:352 msgid "Undo Save State" msgstr "取消儲存進度" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:317 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:318 msgid "Uninstall" msgstr "" @@ -9972,18 +10198,18 @@ msgid "" "title from the NAND without deleting its save data. Continue?" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:278 +#: Source/Core/DolphinQt/MenuBar.cpp:279 msgid "United States" msgstr "" -#: Source/Core/Core/State.cpp:468 Source/Core/DiscIO/Enums.cpp:63 +#: Source/Core/Core/State.cpp:472 Source/Core/DiscIO/Enums.cpp:63 #: Source/Core/DiscIO/Enums.cpp:107 #: Source/Core/DolphinQt/Config/InfoWidget.cpp:85 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:43 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:66 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:125 #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:129 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:665 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:717 msgid "Unknown" msgstr "未知" @@ -9991,7 +10217,7 @@ msgstr "未知" msgid "Unknown DVD command {0:08x} - fatal error" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1272 +#: Source/Core/Core/NetPlayClient.cpp:1277 msgid "Unknown SYNC_CODES message received with id: {0}" msgstr "" @@ -10001,7 +10227,7 @@ msgid "" "Kicking player!" msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1001 +#: Source/Core/Core/NetPlayClient.cpp:1006 msgid "Unknown SYNC_SAVE_DATA message received with id: {0}" msgstr "" @@ -10011,15 +10237,15 @@ msgid "" "player!" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:116 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:128 msgid "Unknown address space" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:118 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:119 msgid "Unknown author" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:154 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:166 msgid "Unknown data type" msgstr "" @@ -10027,19 +10253,19 @@ msgstr "" msgid "Unknown disc" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:340 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:363 msgid "Unknown error occurred." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:1934 +#: Source/Core/Core/NetPlayClient.cpp:1941 msgid "Unknown error {0:x}" msgstr "" -#: Source/Core/DolphinQt/GCMemcardManager.cpp:865 +#: Source/Core/DolphinQt/GCMemcardManager.cpp:866 msgid "Unknown error." msgstr "" -#: Source/Core/Core/NetPlayClient.cpp:461 +#: Source/Core/Core/NetPlayClient.cpp:466 msgid "Unknown message received with id : {0}" msgstr "" @@ -10047,7 +10273,7 @@ msgstr "" msgid "Unknown message with id:{0} received from player:{1} Kicking player!" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:160 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:165 msgid "Unlimited" msgstr "無限制" @@ -10063,13 +10289,28 @@ msgstr "" msgid "Unpacking" msgstr "" +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:135 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:199 +msgid "Unsigned 16" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:136 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:200 +msgid "Unsigned 32" +msgstr "" + +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:134 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:198 +msgid "Unsigned 8" +msgstr "" + #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:146 msgid "Unsigned Integer" msgstr "" #: Source/Core/Core/FreeLookManager.cpp:82 #: Source/Core/Core/HW/WiimoteEmu/Extension/Guitar.cpp:75 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:41 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:42 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp:20 #: Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp:18 #: Source/Core/InputCommon/ControllerEmu/ControllerEmu.h:22 @@ -10078,7 +10319,7 @@ msgstr "上" #: Source/Core/DolphinQt/Debugger/RegisterWidget.cpp:227 #: Source/Core/DolphinQt/Debugger/WatchWidget.cpp:324 -#: Source/Core/DolphinQt/MenuBar.cpp:557 +#: Source/Core/DolphinQt/MenuBar.cpp:567 msgid "Update" msgstr "更新" @@ -10133,7 +10374,7 @@ msgstr "" msgid "Upright Wii Remote" msgstr "" -#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:222 +#: Source/Core/DolphinQt/Settings/GeneralPane.cpp:227 msgid "Usage Statistics Reporting Settings" msgstr "" @@ -10149,7 +10390,7 @@ msgstr "" msgid "Use Lossless Codec (FFV1)" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:108 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:109 msgid "Use PAL60 Mode (EuRGB60)" msgstr "" @@ -10175,18 +10416,40 @@ msgstr "" msgid "Use a single depth buffer for both eyes. Needed for a few games." msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:63 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:64 msgid "Use memory mapper configuration at time of scan" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:61 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:62 msgid "Use physical addresses" msgstr "" -#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:59 +#: Source/Core/DolphinQt/CheatSearchFactoryWidget.cpp:60 msgid "Use virtual addresses when possible" msgstr "" +#: Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp:402 +msgid "" +"Used to find functions based on when they should be running.\n" +"Similar to Cheat Engine Ultimap.\n" +"A symbol map must be loaded prior to use.\n" +"Include/Exclude lists will persist on ending/restarting emulation.\n" +"These lists will not persist on Dolphin close.\n" +"\n" +"'Start Recording': keeps track of what functions run.\n" +"'Stop Recording': erases current recording without any change to the lists.\n" +"'Code did not get executed': click while recording, will add recorded " +"functions to an exclude list, then reset the recording list.\n" +"'Code has been executed': click while recording, will add recorded function " +"to an include list, then reset the recording list.\n" +"\n" +"After you use both exclude and include once, the exclude list will be " +"subtracted from the include list and any includes left over will be " +"displayed.\n" +"You can continue to use 'Code did not get executed'/'Code has been executed' " +"to narrow down the results." +msgstr "" + #: Source/Core/DolphinQt/Config/GameConfigWidget.cpp:178 msgid "User Config" msgstr "" @@ -10199,18 +10462,18 @@ msgstr "" msgid "User Style:" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:310 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:311 msgid "User Variables" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:312 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:313 msgid "" "User defined variables usable in the control expression.\n" "You can use them to save or retrieve values between\n" "inputs and outputs of the same parent controller." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:262 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:265 msgid "" "Uses a less accurate algorithm to calculate depth values.

Causes " "issues in a few games, but can result in a decent speed increase depending " @@ -10236,23 +10499,23 @@ msgstr "" msgid "Using Qt %1" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:595 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:596 msgid "Usually used for light objects" msgstr "" #. i18n: A normal matrix is a matrix used for transforming normal vectors. The word "normal" #. does not have its usual meaning here, but rather the meaning of "perpendicular to a #. surface". -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:588 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:589 msgid "Usually used for normal matrices" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:582 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:583 msgid "Usually used for position matrices" msgstr "" #. i18n: Tex coord is short for texture coordinate -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:592 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:593 msgid "Usually used for tex coord matrices" msgstr "" @@ -10265,7 +10528,7 @@ msgstr "工具" msgid "V-Sync" msgstr "垂直同步" -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:98 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:119 msgid "Value" msgstr "數值" @@ -10298,8 +10561,8 @@ msgstr "" msgid "Verifying" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:224 -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:225 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Version" msgstr "" @@ -10335,7 +10598,7 @@ msgstr "" msgid "Virtual Notches" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:113 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:125 msgid "Virtual address space" msgstr "" @@ -10362,7 +10625,7 @@ msgstr "提高音量" msgid "Vulkan" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1037 +#: Source/Core/DolphinQt/MenuBar.cpp:1047 msgid "WAD files (*.wad)" msgstr "" @@ -10410,7 +10673,7 @@ msgstr "" msgid "WASAPI (Exclusive Mode)" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:256 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:257 msgid "WFS Path:" msgstr "" @@ -10418,8 +10681,8 @@ msgstr "" msgid "WIA GC/Wii images (*.wia)" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:210 -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:402 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:228 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:425 msgid "Waiting for first scan..." msgstr "" @@ -10441,7 +10704,7 @@ msgid "" "unsure, leave this unchecked." msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:227 +#: Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp:230 msgid "" "Waits until the game synchronizes with the emulated GPU before writing the " "contents of EFB copies to RAM.

Reduces the overhead of EFB RAM " @@ -10454,10 +10717,10 @@ msgstr "" #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:124 #: Source/Core/DolphinQt/Config/GameConfigEdit.cpp:131 #: Source/Core/DolphinQt/Config/LogConfigWidget.cpp:47 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:241 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:257 -#: Source/Core/DolphinQt/MenuBar.cpp:1461 -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:422 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:245 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:261 +#: Source/Core/DolphinQt/MenuBar.cpp:1471 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:447 msgid "Warning" msgstr "警告" @@ -10473,28 +10736,28 @@ msgid "" "the loaded file header ({1})" msgstr "" -#: Source/Core/Core/Movie.cpp:1064 +#: Source/Core/Core/Movie.cpp:1073 msgid "" "Warning: You loaded a save that's after the end of the current movie. (byte " "{0} > {1}) (input {2} > {3}). You should load another save before " "continuing, or load this state with read-only mode off." msgstr "" -#: Source/Core/Core/Movie.cpp:1039 +#: Source/Core/Core/Movie.cpp:1048 msgid "" "Warning: You loaded a save whose movie ends before the current frame in the " "save (byte {0} < {1}) (frame {2} < {3}). You should load another save before " "continuing." msgstr "" -#: Source/Core/Core/Movie.cpp:1089 +#: Source/Core/Core/Movie.cpp:1098 msgid "" "Warning: You loaded a save whose movie mismatches on byte {0} ({1:#x}). You " "should load another save before continuing, or load this state with read-" "only mode off. Otherwise you'll probably get a desync." msgstr "" -#: Source/Core/Core/Movie.cpp:1105 +#: Source/Core/Core/Movie.cpp:1114 msgid "" "Warning: You loaded a save whose movie mismatches on frame {0}. You should " "load another save before continuing, or load this state with read-only mode " @@ -10520,7 +10783,7 @@ msgstr "" msgid "Watch" msgstr "" -#: Source/Core/DolphinQt/ResourcePackManager.cpp:90 +#: Source/Core/DolphinQt/ResourcePackManager.cpp:91 msgid "Website" msgstr "" @@ -10549,11 +10812,11 @@ msgid "" "unsure, leave this checked." msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:162 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:163 msgid "Whitelisted USB Passthrough Devices" msgstr "" -#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:85 +#: Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp:86 msgid "Widescreen Hack" msgstr "寬螢幕修正" @@ -10569,11 +10832,11 @@ msgstr "Wii" msgid "Wii Menu" msgstr "" -#: Source/Core/DolphinQt/Settings/PathPane.cpp:210 +#: Source/Core/DolphinQt/Settings/PathPane.cpp:211 msgid "Wii NAND Root:" msgstr "" -#: Source/Core/Core/HW/Wiimote.cpp:84 +#: Source/Core/Core/HW/Wiimote.cpp:99 msgid "Wii Remote" msgstr "" @@ -10581,8 +10844,8 @@ msgstr "" #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:26 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:31 #: Source/Core/DolphinQt/Config/Mapping/HotkeyControllerProfile.cpp:36 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:419 -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:121 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:420 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:125 #: Source/Core/DolphinQt/NetPlay/PadMappingDialog.cpp:43 msgid "Wii Remote %1" msgstr "" @@ -10595,11 +10858,11 @@ msgstr "" msgid "Wii Remote Orientation" msgstr "" -#: Source/Core/DolphinQt/Settings/WiiPane.cpp:178 +#: Source/Core/DolphinQt/Settings/WiiPane.cpp:179 msgid "Wii Remote Settings" msgstr "" -#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:85 +#: Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp:89 msgid "Wii Remotes" msgstr "" @@ -10615,7 +10878,7 @@ msgstr "" msgid "Wii TAS Input %1 - Wii Remote + Nunchuk" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:442 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:443 msgid "Wii and Wii Remote" msgstr "" @@ -10623,7 +10886,7 @@ msgstr "" msgid "Wii data is not public yet" msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:1058 +#: Source/Core/DolphinQt/MenuBar.cpp:1068 msgid "Wii save files (*.bin);;All Files (*)" msgstr "" @@ -10651,18 +10914,18 @@ msgid "World" msgstr "" #. i18n: This is a selectable condition when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:60 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:67 msgid "Write" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:115 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:140 msgid "Write Save Data" msgstr "" #. i18n: This string is used for a radio button that represents the type of #. memory breakpoint that gets triggered when a write operation occurs. #. The string does not mean "write-only" in the sense that something cannot be read from. -#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:181 +#: Source/Core/DolphinQt/Debugger/MemoryWidget.cpp:242 msgid "Write only" msgstr "" @@ -10675,12 +10938,12 @@ msgid "Write to File" msgstr "寫入至檔案" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:65 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:72 msgid "Write to Log" msgstr "" #. i18n: This is a selectable action when adding a breakpoint -#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:69 +#: Source/Core/DolphinQt/Debugger/NewBreakpointDialog.cpp:76 msgid "Write to Log and Break" msgstr "" @@ -10688,7 +10951,7 @@ msgstr "" msgid "Write to Window" msgstr "寫入至視窗" -#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:591 +#: Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp:616 msgid "Wrong Version" msgstr "" @@ -10699,7 +10962,7 @@ msgstr "" msgid "X" msgstr "" -#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:563 +#: Source/Core/DolphinQt/FIFO/FIFOAnalyzer.cpp:564 msgid "XF register " msgstr "" @@ -10728,8 +10991,8 @@ msgid "Yellow" msgstr "黃" #: Source/Core/DolphinQt/Debugger/NetworkWidget.cpp:104 -#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:243 #: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:244 +#: Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp:245 msgid "Yes" msgstr "" @@ -10764,7 +11027,7 @@ msgid "" "they also occur on 10.14+." msgstr "" -#: Source/Core/DolphinQt/MenuBar.cpp:558 +#: Source/Core/DolphinQt/MenuBar.cpp:568 msgid "You are running the latest version available on this update track." msgstr "" @@ -10793,11 +11056,11 @@ msgstr "" msgid "You have to enter a name." msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:339 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:340 msgid "You must provide a name for your session!" msgstr "" -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:347 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:348 msgid "You must provide a region for your session!" msgstr "" @@ -10805,7 +11068,7 @@ msgstr "" msgid "You must restart Dolphin in order for the change to take effect." msgstr "You must restart Dolphin in order for the change to take effect." -#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:333 +#: Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp:334 msgid "You must select a game to host!" msgstr "" @@ -10836,23 +11099,23 @@ msgstr "不支援 Zero 3 代碼" msgid "Zero code unknown to Dolphin: {0:08x}" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:81 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:93 msgid "[%1, %2]" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:91 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:103 msgid "[%1, %2] and [%3, %4]" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:275 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:276 msgid "^ Xor" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "aligned" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:189 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:201 msgid "any value" msgstr "" @@ -10871,13 +11134,13 @@ msgstr "" msgid "d3d12.dll could not be loaded." msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:613 -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:633 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:615 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 msgid "default" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:635 -#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:374 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:637 +#: Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp:375 msgid "disconnected" msgstr "" @@ -10893,31 +11156,31 @@ msgstr "" msgid "fake-completion" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:170 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:182 msgid "is equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:178 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:190 msgid "is greater than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:180 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:192 msgid "is greater than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:174 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 msgid "is less than" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:176 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 msgid "is less than or equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:172 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:184 msgid "is not equal to" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:188 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:200 msgid "last value" msgstr "" @@ -10947,7 +11210,7 @@ msgstr "" msgid "on" msgstr "" -#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:82 +#: Source/Core/DolphinQt/Settings/USBDeviceAddToWhitelistDialog.cpp:81 msgid "or select a device" msgstr "" @@ -10956,7 +11219,7 @@ msgstr "" msgid "s" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:186 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:198 msgid "this value:" msgstr "" @@ -10965,7 +11228,7 @@ msgstr "" msgid "uDraw GameTablet" msgstr "" -#: Source/Core/DolphinQt/CheatSearchWidget.cpp:157 +#: Source/Core/DolphinQt/CheatSearchWidget.cpp:169 msgid "unaligned" msgstr "" @@ -10984,7 +11247,7 @@ msgstr "" msgid "{0} (NKit)" msgstr "" -#: Source/Core/Core/Boot/Boot.cpp:443 +#: Source/Core/Core/Boot/Boot.cpp:436 msgid "{0} IPL found in {1} directory. The disc might not be recognized" msgstr "" @@ -11003,7 +11266,7 @@ msgid "" msgstr "" #: Source/Core/DiscIO/CompressedBlob.cpp:260 -#: Source/Core/DiscIO/WIABlob.cpp:1700 +#: Source/Core/DiscIO/WIABlob.cpp:1703 msgid "{0} of {1} blocks. Compression ratio {2}%" msgstr "" @@ -11011,7 +11274,7 @@ msgstr "" msgid "{0} was not a directory, moved to *.original" msgstr "" -#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:277 +#: Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp:278 msgid "| Or" msgstr "" diff --git a/Readme.md b/Readme.md index becff4f9b0b8..4adab8980749 100644 --- a/Readme.md +++ b/Readme.md @@ -216,7 +216,6 @@ These folders are installed read-only and should not be changed: * `GameSettings`: per-game default settings database * `GC`: DSP and font dumps -* `Maps`: symbol tables (dev only) * `Shaders`: post-processing shaders * `Themes`: icon themes for GUI * `Resources`: icons that are theme-agnostic diff --git a/Source/Android/app/build.gradle b/Source/Android/app/build.gradle index e589b1a91d09..e2675fcc5a35 100644 --- a/Source/Android/app/build.gradle +++ b/Source/Android/app/build.gradle @@ -1,7 +1,7 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 31 + compileSdkVersion 32 ndkVersion "23.0.7599858" compileOptions { @@ -12,7 +12,7 @@ android { targetCompatibility JavaVersion.VERSION_1_8 } - lintOptions { + lint { // This is important as it will run lint but not abort on error // Lint has some overly obnoxious "errors" that should really be warnings abortOnError false @@ -26,7 +26,7 @@ android { // TODO If this is ever modified, change application_id in strings.xml applicationId "org.dolphinemu.dolphinemu" minSdkVersion 21 - targetSdkVersion 31 + targetSdkVersion 32 versionCode(getBuildVersionCode()) @@ -91,15 +91,15 @@ android { dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5' - implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'androidx.exifinterface:exifinterface:1.3.3' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.recyclerview:recyclerview:1.2.1' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' - implementation 'androidx.lifecycle:lifecycle-viewmodel:2.4.0' - implementation 'androidx.fragment:fragment:1.4.0' - implementation 'androidx.slidingpanelayout:slidingpanelayout:1.2.0-rc01' - implementation 'com.google.android.material:material:1.4.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' + implementation 'androidx.lifecycle:lifecycle-viewmodel:2.4.1' + implementation 'androidx.fragment:fragment:1.4.1' + implementation 'androidx.slidingpanelayout:slidingpanelayout:1.2.0' + implementation 'com.google.android.material:material:1.5.0' // Android TV UI libraries. implementation 'androidx.leanback:leanback:1.0.0' diff --git a/Source/Android/app/src/main/AndroidManifest.xml b/Source/Android/app/src/main/AndroidManifest.xml index 284a00684c87..35fd924eea2c 100644 --- a/Source/Android/app/src/main/AndroidManifest.xml +++ b/Source/Android/app/src/main/AndroidManifest.xml @@ -32,7 +32,7 @@ = Build.VERSION_CODES.P) + { + WindowManager.LayoutParams attributes = getWindow().getAttributes(); + + attributes.layoutInDisplayCutoutMode = + BooleanSetting.MAIN_EXPAND_TO_CUTOUT_AREA.getBoolean(mSettings) ? + WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES : + WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER; + + getWindow().setAttributes(attributes); + } + updateOrientation(); if (NativeLibrary.IsGameMetadataValid()) @@ -864,13 +879,18 @@ public void chooseDoubleTapButton() int buttonList = currentController == InputOverlay.OVERLAY_WIIMOTE_CLASSIC ? R.array.doubleTapWithClassic : R.array.doubleTap; - if (currentController != InputOverlay.OVERLAY_WIIMOTE_CLASSIC && - currentValue == InputOverlay.OVERLAY_WIIMOTE_CLASSIC) + int checkedItem = -1; + int itemCount = getResources().getStringArray(buttonList).length; + for (int i = 0; i < itemCount; i++) { - currentValue = InputOverlay.OVERLAY_WIIMOTE; + if (InputOverlayPointer.DOUBLE_TAP_OPTIONS.get(i) == currentValue) + { + checkedItem = i; + break; + } } - builder.setSingleChoiceItems(buttonList, currentValue, + builder.setSingleChoiceItems(buttonList, checkedItem, (DialogInterface dialog, int which) -> IntSetting.MAIN_DOUBLE_TAP_BUTTON .setInt(mSettings, InputOverlayPointer.DOUBLE_TAP_OPTIONS.get(which))); diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/AlertMessage.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/AlertMessage.java index 4ca0cf293720..870d244033a1 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/AlertMessage.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/AlertMessage.java @@ -5,14 +5,14 @@ import android.app.Dialog; import android.os.Bundle; -import org.dolphinemu.dolphinemu.NativeLibrary; -import org.dolphinemu.dolphinemu.R; -import org.dolphinemu.dolphinemu.activities.EmulationActivity; - import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.DialogFragment; +import org.dolphinemu.dolphinemu.NativeLibrary; +import org.dolphinemu.dolphinemu.R; +import org.dolphinemu.dolphinemu.activities.EmulationActivity; + public final class AlertMessage extends DialogFragment { private static boolean sAlertResult = false; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java index 0bdccda2142a..00d98643b84c 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java @@ -21,6 +21,7 @@ import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag; import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity; import org.dolphinemu.dolphinemu.model.GameFile; +import org.dolphinemu.dolphinemu.ui.main.MainPresenter; import org.dolphinemu.dolphinemu.ui.platform.Platform; import org.dolphinemu.dolphinemu.utils.AlertDialogItemsBuilder; import org.dolphinemu.dolphinemu.utils.DirectoryInitialization; @@ -101,6 +102,12 @@ public Dialog onCreateDialog(Bundle savedInstanceState) ConvertActivity.launch(getContext(), path)); } + if (isDisc && isWii) + { + itemsBuilder.add(R.string.properties_system_update, (dialog, i) -> + MainPresenter.launchDiscUpdate(path, requireActivity())); + } + itemsBuilder.add(R.string.properties_edit_game_settings, (dialog, i) -> SettingsActivity.launch(getContext(), MenuTag.SETTINGS, gameId, revision, isWii)); diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatDetailsFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatDetailsFragment.java index 2ab6bb31b09c..de147c35b7cf 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatDetailsFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatDetailsFragment.java @@ -15,7 +15,6 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; -import androidx.lifecycle.LiveData; import androidx.lifecycle.ViewModelProvider; import org.dolphinemu.dolphinemu.R; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatItemViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatItemViewHolder.java index b4e38f4c1b55..681f3ae78546 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatItemViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatItemViewHolder.java @@ -7,8 +7,6 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import org.dolphinemu.dolphinemu.features.cheats.model.CheatsViewModel; - public abstract class CheatItemViewHolder extends RecyclerView.ViewHolder { public CheatItemViewHolder(@NonNull View itemView) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatViewHolder.java index 58e391fb0171..a37abd145aa3 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatViewHolder.java @@ -9,7 +9,6 @@ import androidx.annotation.NonNull; import androidx.lifecycle.ViewModelProvider; -import androidx.recyclerview.widget.RecyclerView.ViewHolder; import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.features.cheats.model.Cheat; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatsAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatsAdapter.java index 5994feab2a33..ec256cf6e2a6 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatsAdapter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatsAdapter.java @@ -7,7 +7,6 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; -import androidx.lifecycle.LifecycleOwner; import androidx.recyclerview.widget.RecyclerView; import org.dolphinemu.dolphinemu.R; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/HeaderViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/HeaderViewHolder.java index 57c0edebb0da..c48ec500ff5d 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/HeaderViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/HeaderViewHolder.java @@ -8,7 +8,6 @@ import androidx.annotation.NonNull; import org.dolphinemu.dolphinemu.R; -import org.dolphinemu.dolphinemu.features.cheats.model.CheatsViewModel; public class HeaderViewHolder extends CheatItemViewHolder { diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionBootActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionBootActivity.java index 26016a800fa1..7509aaf37ad7 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionBootActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionBootActivity.java @@ -8,7 +8,6 @@ import android.widget.Button; import android.widget.TextView; -import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -16,7 +15,7 @@ import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.activities.EmulationActivity; import org.dolphinemu.dolphinemu.features.riivolution.model.RiivolutionPatches; -import org.dolphinemu.dolphinemu.ui.DividerItemDecoration; +import org.dolphinemu.dolphinemu.features.settings.model.StringSetting; import org.dolphinemu.dolphinemu.utils.DirectoryInitialization; public class RiivolutionBootActivity extends AppCompatActivity @@ -53,9 +52,12 @@ protected void onCreate(Bundle savedInstanceState) int revision = intent.getIntExtra(ARG_REVISION, -1); int discNumber = intent.getIntExtra(ARG_DISC_NUMBER, -1); + String loadPath = StringSetting.MAIN_LOAD_PATH.getStringGlobal(); + if (loadPath.isEmpty()) + loadPath = DirectoryInitialization.getUserDirectory() + "/Load"; + TextView textSdRoot = findViewById(R.id.text_sd_root); - String riivolutionPath = DirectoryInitialization.getUserDirectory() + "/Load/Riivolution"; - textSdRoot.setText(getString(R.string.riivolution_sd_root, riivolutionPath)); + textSdRoot.setText(getString(R.string.riivolution_sd_root, loadPath + "/Riivolution")); Button buttonStart = findViewById(R.id.button_start); buttonStart.setOnClickListener((v) -> diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionViewHolder.java index e51a575262d1..a24f6c991dd4 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/riivolution/ui/RiivolutionViewHolder.java @@ -10,7 +10,6 @@ import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; import org.dolphinemu.dolphinemu.R; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java index a7c47a03ada2..b6e63895a3e4 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java @@ -18,6 +18,14 @@ public enum BooleanSetting implements AbstractBooleanSetting MAIN_OVERRIDE_REGION_SETTINGS(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "OverrideRegionSettings", false), MAIN_AUDIO_STRETCH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "AudioStretch", false), + MAIN_ADAPTER_RUMBLE_0(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "AdapterRumble0", true), + MAIN_ADAPTER_RUMBLE_1(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "AdapterRumble1", true), + MAIN_ADAPTER_RUMBLE_2(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "AdapterRumble2", true), + MAIN_ADAPTER_RUMBLE_3(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "AdapterRumble3", true), + MAIN_SIMULATE_KONGA_0(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SimulateKonga0", false), + MAIN_SIMULATE_KONGA_1(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SimulateKonga1", false), + MAIN_SIMULATE_KONGA_2(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SimulateKonga2", false), + MAIN_SIMULATE_KONGA_3(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SimulateKonga3", false), MAIN_WII_SD_CARD(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "WiiSDCard", true), MAIN_WIIMOTE_CONTINUOUS_SCANNING(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "WiimoteContinuousScanning", false), @@ -34,6 +42,8 @@ public enum BooleanSetting implements AbstractBooleanSetting MAIN_DSP_JIT(Settings.FILE_DOLPHIN, Settings.SECTION_INI_DSP, "EnableJIT", true), + MAIN_EXPAND_TO_CUTOUT_AREA(Settings.FILE_DOLPHIN, Settings.SECTION_INI_INTERFACE, + "ExpandToCutoutArea", false), MAIN_USE_PANIC_HANDLERS(Settings.FILE_DOLPHIN, Settings.SECTION_INI_INTERFACE, "UsePanicHandlers", true), MAIN_OSD_MESSAGES(Settings.FILE_DOLPHIN, Settings.SECTION_INI_INTERFACE, @@ -217,7 +227,7 @@ public enum BooleanSetting implements AbstractBooleanSetting GFX_HACK_COPY_EFB_SCALED(Settings.FILE_GFX, Settings.SECTION_GFX_HACKS, "EFBScaledCopy", true), GFX_HACK_EFB_EMULATE_FORMAT_CHANGES(Settings.FILE_GFX, Settings.SECTION_GFX_HACKS, "EFBEmulateFormatChanges", false), - GFX_HACK_VERTEX_ROUDING(Settings.FILE_GFX, Settings.SECTION_GFX_HACKS, "VertexRounding", false), + GFX_HACK_VERTEX_ROUNDING(Settings.FILE_GFX, Settings.SECTION_GFX_HACKS, "VertexRounding", false), GFX_HACK_FAST_TEXTURE_SAMPLING(Settings.FILE_GFX, Settings.SECTION_GFX_HACKS, "FastTextureSampling", true), @@ -228,7 +238,6 @@ public enum BooleanSetting implements AbstractBooleanSetting MAIN_CPU_THREAD, MAIN_ENABLE_CHEATS, MAIN_OVERRIDE_REGION_SETTINGS, - MAIN_WII_SD_CARD, // Can actually be changed, but specialized code is required MAIN_MMU, MAIN_DSP_JIT, }; @@ -322,4 +331,16 @@ public void setBooleanGlobal(int layer, boolean newValue) { NativeConfig.setBoolean(layer, mFile, mSection, mKey, newValue); } + + public static BooleanSetting getSettingForAdapterRumble(int channel) + { + return new BooleanSetting[]{MAIN_ADAPTER_RUMBLE_0, MAIN_ADAPTER_RUMBLE_1, MAIN_ADAPTER_RUMBLE_2, + MAIN_ADAPTER_RUMBLE_3}[channel]; + } + + public static BooleanSetting getSettingForSimulateKonga(int channel) + { + return new BooleanSetting[]{MAIN_SIMULATE_KONGA_0, MAIN_SIMULATE_KONGA_1, MAIN_SIMULATE_KONGA_2, + MAIN_SIMULATE_KONGA_3}[channel]; + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java index d28603cbef79..98601a174134 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java @@ -21,6 +21,10 @@ public enum IntSetting implements AbstractIntSetting MAIN_SLOT_A(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SlotA", 8), MAIN_SLOT_B(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SlotB", 255), MAIN_FALLBACK_REGION(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "FallbackRegion", 2), + MAIN_SI_DEVICE_0(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SIDevice0", 6), + MAIN_SI_DEVICE_1(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SIDevice1", 0), + MAIN_SI_DEVICE_2(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SIDevice2", 0), + MAIN_SI_DEVICE_3(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SIDevice3", 0), MAIN_AUDIO_VOLUME(Settings.FILE_DOLPHIN, Settings.SECTION_INI_DSP, "Volume", 100), @@ -60,13 +64,24 @@ public enum IntSetting implements AbstractIntSetting GFX_STEREO_CONVERGENCE_PERCENTAGE(Settings.FILE_GFX, Settings.SECTION_STEREOSCOPY, "StereoConvergencePercentage", 100), - LOGGER_VERBOSITY(Settings.FILE_LOGGER, Settings.SECTION_LOGGER_OPTIONS, "Verbosity", 1); + LOGGER_VERBOSITY(Settings.FILE_LOGGER, Settings.SECTION_LOGGER_OPTIONS, "Verbosity", 1), + + WIIMOTE_1_SOURCE(Settings.FILE_WIIMOTE, "Wiimote1", "Source", 1), + WIIMOTE_2_SOURCE(Settings.FILE_WIIMOTE, "Wiimote2", "Source", 0), + WIIMOTE_3_SOURCE(Settings.FILE_WIIMOTE, "Wiimote3", "Source", 0), + WIIMOTE_4_SOURCE(Settings.FILE_WIIMOTE, "Wiimote4", "Source", 0), + WIIMOTE_BB_SOURCE(Settings.FILE_WIIMOTE, "BalanceBoard", "Source", 0); private static final IntSetting[] NOT_RUNTIME_EDITABLE_ARRAY = new IntSetting[]{ MAIN_CPU_CORE, MAIN_GC_LANGUAGE, MAIN_SLOT_A, // Can actually be changed, but specific code is required MAIN_SLOT_B, // Can actually be changed, but specific code is required + MAIN_FALLBACK_REGION, + MAIN_SI_DEVICE_0, // Can actually be changed, but specific code is required + MAIN_SI_DEVICE_1, // Can actually be changed, but specific code is required + MAIN_SI_DEVICE_2, // Can actually be changed, but specific code is required + MAIN_SI_DEVICE_3, // Can actually be changed, but specific code is required }; private static final Set NOT_RUNTIME_EDITABLE = diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/LegacyBooleanSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/LegacyBooleanSetting.java deleted file mode 100644 index d754871445f4..000000000000 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/LegacyBooleanSetting.java +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later - -package org.dolphinemu.dolphinemu.features.settings.model; - -public class LegacyBooleanSetting extends AbstractLegacySetting implements AbstractBooleanSetting -{ - private final boolean mDefaultValue; - - public LegacyBooleanSetting(String file, String section, String key, boolean defaultValue) - { - super(file, section, key); - mDefaultValue = defaultValue; - } - - @Override - public boolean getBoolean(Settings settings) - { - return settings.getSection(mFile, mSection).getBoolean(mKey, mDefaultValue); - } - - @Override - public void setBoolean(Settings settings, boolean newValue) - { - settings.getSection(mFile, mSection).setBoolean(mKey, newValue); - } -} diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/LegacyIntSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/LegacyIntSetting.java deleted file mode 100644 index 0413f9a9a9dd..000000000000 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/LegacyIntSetting.java +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later - -package org.dolphinemu.dolphinemu.features.settings.model; - -public class LegacyIntSetting extends AbstractLegacySetting implements AbstractIntSetting -{ - private final int mDefaultValue; - - public LegacyIntSetting(String file, String section, String key, int defaultValue) - { - super(file, section, key); - mDefaultValue = defaultValue; - } - - @Override - public int getInt(Settings settings) - { - return settings.getSection(mFile, mSection).getInt(mKey, mDefaultValue); - } - - @Override - public void setInt(Settings settings, int newValue) - { - settings.getSection(mFile, mSection).setInt(mKey, newValue); - } -} diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/FilePicker.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/FilePicker.java index 619345580320..d5d195158749 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/FilePicker.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/FilePicker.java @@ -4,12 +4,12 @@ import android.content.Context; +import androidx.annotation.Nullable; + import org.dolphinemu.dolphinemu.features.settings.model.AbstractSetting; import org.dolphinemu.dolphinemu.features.settings.model.AbstractStringSetting; import org.dolphinemu.dolphinemu.features.settings.model.Settings; -import androidx.annotation.Nullable; - public final class FilePicker extends SettingsItem { private AbstractStringSetting mSetting; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/LogCheckBoxSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/LogCheckBoxSetting.java index bd7341336d64..ca47a92a48f9 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/LogCheckBoxSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/LogCheckBoxSetting.java @@ -2,8 +2,6 @@ package org.dolphinemu.dolphinemu.features.settings.model.view; -import android.content.Context; - import org.dolphinemu.dolphinemu.features.settings.model.AdHocBooleanSetting; import org.dolphinemu.dolphinemu.features.settings.model.Settings; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java index 47d54043ad35..fade63e26d26 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java @@ -4,7 +4,6 @@ import android.content.Context; -import org.dolphinemu.dolphinemu.DolphinApplication; import org.dolphinemu.dolphinemu.NativeLibrary; import org.dolphinemu.dolphinemu.features.settings.model.AbstractSetting; import org.dolphinemu.dolphinemu.features.settings.model.Settings; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java index 43a920c01982..3cc3e2f9107a 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java @@ -10,7 +10,6 @@ import android.provider.Settings; import android.view.Menu; import android.view.MenuInflater; -import android.view.MenuItem; import android.widget.Toast; import androidx.annotation.NonNull; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java index ac667e23f072..61f3098f0a49 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java @@ -4,10 +4,10 @@ import android.content.Context; import android.content.pm.PackageManager; +import android.os.Build; import android.os.Bundle; import android.text.TextUtils; -import org.dolphinemu.dolphinemu.DolphinApplication; import org.dolphinemu.dolphinemu.NativeLibrary; import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.activities.UserDataActivity; @@ -17,8 +17,6 @@ import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting; import org.dolphinemu.dolphinemu.features.settings.model.FloatSetting; import org.dolphinemu.dolphinemu.features.settings.model.IntSetting; -import org.dolphinemu.dolphinemu.features.settings.model.LegacyBooleanSetting; -import org.dolphinemu.dolphinemu.features.settings.model.LegacyIntSetting; import org.dolphinemu.dolphinemu.features.settings.model.LegacyStringSetting; import org.dolphinemu.dolphinemu.features.settings.model.PostProcessing; import org.dolphinemu.dolphinemu.features.settings.model.Settings; @@ -41,11 +39,8 @@ import org.dolphinemu.dolphinemu.features.settings.model.view.SubmenuSetting; import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile; import org.dolphinemu.dolphinemu.ui.main.MainPresenter; -import org.dolphinemu.dolphinemu.utils.DirectoryInitialization; import org.dolphinemu.dolphinemu.utils.EGLHelper; -import org.dolphinemu.dolphinemu.utils.Log; -import java.io.File; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.Map; @@ -298,6 +293,13 @@ private void addInterfaceSettings(ArrayList sl) R.array.orientationValues)); } + // Only android 9+ supports this feature. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) + { + sl.add(new CheckBoxSetting(mContext, BooleanSetting.MAIN_EXPAND_TO_CUTOUT_AREA, + R.string.expand_to_cutout_area, R.string.expand_to_cutout_area_description)); + } + sl.add(new CheckBoxSetting(mContext, BooleanSetting.MAIN_USE_PANIC_HANDLERS, R.string.panic_handlers, R.string.panic_handlers_description)); sl.add(new CheckBoxSetting(mContext, BooleanSetting.MAIN_OSD_MESSAGES, R.string.osd_messages, @@ -559,51 +561,26 @@ else if (defaultCpuCore == 4) // AArch64 private void addGcPadSettings(ArrayList sl) { - for (int i = 0; i < 4; i++) - { - // GameCube controller 1 is set to Emulated by default, all others disabled - int defaultValue = i == 0 ? 6 : 0; - - LegacyIntSetting gcPadSetting; - if (mGameID.equals("")) - { - gcPadSetting = new LegacyIntSetting(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, - SettingsFile.KEY_GCPAD_TYPE + i, defaultValue); - } - else - { - gcPadSetting = new LegacyIntSetting(Settings.GAME_SETTINGS_PLACEHOLDER_FILE_NAME, - Settings.SECTION_CONTROLS, SettingsFile.KEY_GCPAD_G_TYPE + i, defaultValue); - } - // TODO: This controller_0 + i business is quite the hack. It should work, but only if the definitions are kept together and in order. - sl.add(new SingleChoiceSetting(mContext, gcPadSetting, R.string.controller_0 + i, 0, - R.array.gcpadTypeEntries, R.array.gcpadTypeValues, MenuTag.getGCPadMenuTag(i))); - } + sl.add(new SingleChoiceSetting(mContext, IntSetting.MAIN_SI_DEVICE_0, R.string.controller_0, 0, + R.array.gcpadTypeEntries, R.array.gcpadTypeValues, MenuTag.getGCPadMenuTag(0))); + sl.add(new SingleChoiceSetting(mContext, IntSetting.MAIN_SI_DEVICE_1, R.string.controller_1, 0, + R.array.gcpadTypeEntries, R.array.gcpadTypeValues, MenuTag.getGCPadMenuTag(1))); + sl.add(new SingleChoiceSetting(mContext, IntSetting.MAIN_SI_DEVICE_2, R.string.controller_2, 0, + R.array.gcpadTypeEntries, R.array.gcpadTypeValues, MenuTag.getGCPadMenuTag(2))); + sl.add(new SingleChoiceSetting(mContext, IntSetting.MAIN_SI_DEVICE_3, R.string.controller_3, 0, + R.array.gcpadTypeEntries, R.array.gcpadTypeValues, MenuTag.getGCPadMenuTag(3))); } private void addWiimoteSettings(ArrayList sl) { - for (int i = 0; i < 4; i++) - { - // Wii Remote 1 is set to Emulated by default, all others disabled - int defaultValue = i == 0 ? 1 : 0; - - LegacyIntSetting wiimoteSetting; - if (mGameID.equals("")) - { - wiimoteSetting = new LegacyIntSetting(Settings.FILE_WIIMOTE, - Settings.SECTION_WIIMOTE + (i + 1), SettingsFile.KEY_WIIMOTE_TYPE, defaultValue); - } - else - { - wiimoteSetting = new LegacyIntSetting(Settings.GAME_SETTINGS_PLACEHOLDER_FILE_NAME, - Settings.SECTION_CONTROLS, SettingsFile.KEY_WIIMOTE_G_TYPE + i, defaultValue); - } - // TODO: This wiimote_0 + i business is quite the hack. It should work, but only if the definitions are kept together and in order. - sl.add(new SingleChoiceSetting(mContext, wiimoteSetting, R.string.wiimote_4 + i, 0, - R.array.wiimoteTypeEntries, R.array.wiimoteTypeValues, - MenuTag.getWiimoteMenuTag(i + 4))); - } + sl.add(new SingleChoiceSetting(mContext, IntSetting.WIIMOTE_1_SOURCE, R.string.wiimote_4, 0, + R.array.wiimoteTypeEntries, R.array.wiimoteTypeValues, MenuTag.getWiimoteMenuTag(4))); + sl.add(new SingleChoiceSetting(mContext, IntSetting.WIIMOTE_2_SOURCE, R.string.wiimote_5, 0, + R.array.wiimoteTypeEntries, R.array.wiimoteTypeValues, MenuTag.getWiimoteMenuTag(5))); + sl.add(new SingleChoiceSetting(mContext, IntSetting.WIIMOTE_3_SOURCE, R.string.wiimote_6, 0, + R.array.wiimoteTypeEntries, R.array.wiimoteTypeValues, MenuTag.getWiimoteMenuTag(6))); + sl.add(new SingleChoiceSetting(mContext, IntSetting.WIIMOTE_4_SOURCE, R.string.wiimote_7, 0, + R.array.wiimoteTypeEntries, R.array.wiimoteTypeValues, MenuTag.getWiimoteMenuTag(7))); } private void addGraphicsSettings(ArrayList sl) @@ -719,7 +696,7 @@ private void addHackSettings(ArrayList sl) R.string.fast_depth_calculation, R.string.fast_depth_calculation_description)); sl.add(new InvertedCheckBoxSetting(mContext, BooleanSetting.GFX_HACK_BBOX_ENABLE, R.string.disable_bbox, R.string.disable_bbox_description)); - sl.add(new CheckBoxSetting(mContext, BooleanSetting.GFX_HACK_VERTEX_ROUDING, + sl.add(new CheckBoxSetting(mContext, BooleanSetting.GFX_HACK_VERTEX_ROUNDING, R.string.vertex_rounding, R.string.vertex_rounding_description)); sl.add(new CheckBoxSetting(mContext, BooleanSetting.GFX_SAVE_TEXTURE_CACHE_TO_STATE, R.string.texture_cache_to_state, R.string.texture_cache_to_state_description)); @@ -895,15 +872,10 @@ private void addGcPadSubSettings(ArrayList sl, int gcPadNumber, in } else if (gcPadType == 12) // Adapter { - LegacyBooleanSetting rumble = new LegacyBooleanSetting(Settings.FILE_DOLPHIN, - Settings.SECTION_INI_CORE, SettingsFile.KEY_GCADAPTER_RUMBLE + gcPadNumber, false); - LegacyBooleanSetting bongo = new LegacyBooleanSetting(Settings.FILE_DOLPHIN, - Settings.SECTION_INI_CORE, SettingsFile.KEY_GCADAPTER_BONGOS + gcPadNumber, false); - - sl.add(new CheckBoxSetting(mContext, rumble, R.string.gc_adapter_rumble, - R.string.gc_adapter_rumble_description)); - sl.add(new CheckBoxSetting(mContext, bongo, R.string.gc_adapter_bongos, - R.string.gc_adapter_bongos_description)); + sl.add(new CheckBoxSetting(mContext, BooleanSetting.getSettingForAdapterRumble(gcPadNumber), + R.string.gc_adapter_rumble, R.string.gc_adapter_rumble_description)); + sl.add(new CheckBoxSetting(mContext, BooleanSetting.getSettingForSimulateKonga(gcPadNumber), + R.string.gc_adapter_bongos, R.string.gc_adapter_bongos_description)); } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java index 6327569ceaf7..b4e9b15ea841 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java @@ -2,7 +2,6 @@ package org.dolphinemu.dolphinemu.features.settings.ui.viewholder; -import android.text.TextUtils; import android.view.View; import android.widget.CheckBox; import android.widget.TextView; @@ -11,10 +10,8 @@ import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.features.settings.model.view.CheckBoxSetting; -import org.dolphinemu.dolphinemu.features.settings.model.view.LogCheckBoxSetting; import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem; import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter; -import org.dolphinemu.dolphinemu.features.settings.ui.SettingsFragmentPresenter; public final class CheckBoxSettingViewHolder extends SettingViewHolder { diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java index 29db905bac3f..87f58b4d02e1 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java @@ -4,7 +4,6 @@ import androidx.annotation.NonNull; -import org.dolphinemu.dolphinemu.features.settings.model.Settings; import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivityView; import org.dolphinemu.dolphinemu.utils.BiMap; import org.dolphinemu.dolphinemu.utils.DirectoryInitialization; @@ -21,9 +20,7 @@ public final class SettingsFile public static final String KEY_ISO_PATH_BASE = "ISOPath"; public static final String KEY_ISO_PATHS = "ISOPaths"; - public static final String KEY_GCPAD_TYPE = "SIDevice"; public static final String KEY_GCPAD_PLAYER_1 = "SIDevice0"; - public static final String KEY_GCPAD_G_TYPE = "PadType"; public static final String KEY_GCBIND_A = "InputA_"; public static final String KEY_GCBIND_B = "InputB_"; @@ -46,16 +43,11 @@ public final class SettingsFile public static final String KEY_GCBIND_DPAD_LEFT = "DPadLeft_"; public static final String KEY_GCBIND_DPAD_RIGHT = "DPadRight_"; - public static final String KEY_GCADAPTER_RUMBLE = "AdapterRumble"; - public static final String KEY_GCADAPTER_BONGOS = "SimulateKonga"; - public static final String KEY_EMU_RUMBLE = "EmuRumble"; - public static final String KEY_WIIMOTE_TYPE = "Source"; public static final String KEY_WIIMOTE_EXTENSION = "Extension"; // Controller keys for game specific settings - public static final String KEY_WIIMOTE_G_TYPE = "WiimoteSource"; public static final String KEY_WIIMOTE_PROFILE = "WiimoteProfile"; public static final String KEY_WIIBIND_A = "WiimoteA_"; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/OnlineUpdateRegionSelectDialogFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/OnlineUpdateRegionSelectDialogFragment.java index fc915e5422b5..dddcd204f820 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/OnlineUpdateRegionSelectDialogFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/OnlineUpdateRegionSelectDialogFragment.java @@ -31,8 +31,8 @@ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) new ViewModelProvider(requireActivity()).get(SystemUpdateViewModel.class); viewModel.setRegion(which); - OnlineUpdateProgressBarDialogFragment progressBarFragment = - new OnlineUpdateProgressBarDialogFragment(); + SystemUpdateProgressBarDialogFragment progressBarFragment = + new SystemUpdateProgressBarDialogFragment(); progressBarFragment .show(getParentFragmentManager(), "OnlineUpdateProgressBarDialogFragment"); progressBarFragment.setCancelable(false); diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/OnlineUpdateProgressBarDialogFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/SystemUpdateProgressBarDialogFragment.java similarity index 82% rename from Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/OnlineUpdateProgressBarDialogFragment.java rename to Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/SystemUpdateProgressBarDialogFragment.java index adcdc8a41959..2cb520552a0c 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/OnlineUpdateProgressBarDialogFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/SystemUpdateProgressBarDialogFragment.java @@ -14,7 +14,7 @@ import org.dolphinemu.dolphinemu.R; -public class OnlineUpdateProgressBarDialogFragment extends DialogFragment +public class SystemUpdateProgressBarDialogFragment extends DialogFragment { @NonNull @Override @@ -74,7 +74,7 @@ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) return; } - OnlineUpdateResultFragment progressBarFragment = new OnlineUpdateResultFragment(); + SystemUpdateResultFragment progressBarFragment = new SystemUpdateResultFragment(); progressBarFragment.show(getParentFragmentManager(), "OnlineUpdateResultFragment"); getActivity().setRequestedOrientation(orientation); @@ -84,28 +84,7 @@ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) if (savedInstanceState == null) { - final String region; - int selectedItem = viewModel.getRegion(); - - switch (selectedItem) - { - case 0: - region = "EUR"; - break; - case 1: - region = "JPN"; - break; - case 2: - region = "KOR"; - break; - case 3: - region = "USA"; - break; - default: - region = ""; - break; - } - viewModel.startUpdate(region); + viewModel.startUpdate(); } return progressDialog; } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/OnlineUpdateResultFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/SystemUpdateResultFragment.java similarity index 98% rename from Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/OnlineUpdateResultFragment.java rename to Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/SystemUpdateResultFragment.java index 15a546a276df..298b4ac0ed60 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/OnlineUpdateResultFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/SystemUpdateResultFragment.java @@ -13,7 +13,7 @@ import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.utils.WiiUtils; -public class OnlineUpdateResultFragment extends DialogFragment +public class SystemUpdateResultFragment extends DialogFragment { private int mResult; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/SystemUpdateViewModel.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/SystemUpdateViewModel.java index 3c9b13fbc779..a249b01ee79e 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/SystemUpdateViewModel.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/sysupdate/ui/SystemUpdateViewModel.java @@ -5,6 +5,7 @@ import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.dolphinemu.dolphinemu.utils.WiiUpdateCallback; import org.dolphinemu.dolphinemu.utils.WiiUtils; import java.util.concurrent.ExecutorService; @@ -21,6 +22,7 @@ public class SystemUpdateViewModel extends ViewModel private boolean mCanceled = false; private int mRegion; + private String mDiscPath; public SystemUpdateViewModel() { @@ -37,6 +39,16 @@ public int getRegion() return mRegion; } + public void setDiscPath(String discPath) + { + mDiscPath = discPath; + } + + public String getDiscPath() + { + return mDiscPath; + } + public MutableLiveData getProgressData() { return mProgressData; @@ -62,21 +74,55 @@ public void setCanceled() mCanceled = true; } - public void startUpdate(String region) + public void startUpdate() + { + if (!mDiscPath.isEmpty()) + { + startDiscUpdate(mDiscPath); + } + else + { + final String region; + switch (mRegion) + { + case 0: + region = "EUR"; + break; + case 1: + region = "JPN"; + break; + case 2: + region = "KOR"; + break; + case 3: + region = "USA"; + break; + default: + region = ""; + break; + } + startOnlineUpdate(region); + } + } + + public void startOnlineUpdate(String region) { mCanceled = false; executor.execute(() -> { - int result = WiiUtils.doOnlineUpdate(region, ((processed, total, titleId) -> - { - mProgressData.postValue(processed); - mTotalData.postValue(total); - mTitleIdData.postValue(titleId); + int result = WiiUtils.doOnlineUpdate(region, constructCallback()); + mResultData.postValue(result); + }); + } - return !mCanceled; - })); + public void startDiscUpdate(String path) + { + mCanceled = false; + executor.execute(() -> + { + int result = WiiUtils.doDiscUpdate(path, constructCallback()); mResultData.postValue(result); }); } @@ -88,5 +134,19 @@ public void clear() mTitleIdData.setValue(0l); mResultData.setValue(-1); mCanceled = false; + mRegion = -1; + mDiscPath = ""; + } + + private WiiUpdateCallback constructCallback() + { + return (processed, total, titleId) -> + { + mProgressData.postValue(processed); + mTotalData.postValue(total); + mTitleIdData.postValue(titleId); + + return !mCanceled; + }; } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/ConvertFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/ConvertFragment.java index d283a390259f..180e100c42c5 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/ConvertFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/ConvertFragment.java @@ -17,6 +17,11 @@ import android.widget.CheckBox; import android.widget.Spinner; +import androidx.annotation.NonNull; +import androidx.annotation.StringRes; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.Fragment; + import org.dolphinemu.dolphinemu.NativeLibrary; import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.model.GameFile; @@ -26,11 +31,6 @@ import java.io.File; import java.util.ArrayList; -import androidx.annotation.NonNull; -import androidx.annotation.StringRes; -import androidx.appcompat.app.AlertDialog; -import androidx.fragment.app.Fragment; - public class ConvertFragment extends Fragment implements View.OnClickListener { private static class SpinnerValue implements AdapterView.OnItemSelectedListener diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.java index c627603900f4..a614f21a645c 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.java @@ -198,14 +198,17 @@ public boolean onTouch(View v, MotionEvent event) return onTouchWhileEditing(event); } - int pointerIndex = event.getActionIndex(); + int action = event.getActionMasked(); + boolean firstPointer = action != MotionEvent.ACTION_POINTER_DOWN && + action != MotionEvent.ACTION_POINTER_UP; + int pointerIndex = firstPointer ? 0 : event.getActionIndex(); // Tracks if any button/joystick is pressed down boolean pressed = false; for (InputOverlayDrawableButton button : overlayButtons) { // Determine the button state to apply based on the MotionEvent action flag. - switch (event.getAction() & MotionEvent.ACTION_MASK) + switch (action) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_POINTER_DOWN: diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableButton.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableButton.java index 94c2633c5d42..83e97cc31a51 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableButton.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableButton.java @@ -71,22 +71,19 @@ public int getTrackId() public void onConfigureTouch(MotionEvent event) { - int pointerIndex = event.getActionIndex(); - int fingerPositionX = (int) event.getX(pointerIndex); - int fingerPositionY = (int) event.getY(pointerIndex); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: - mPreviousTouchX = fingerPositionX; - mPreviousTouchY = fingerPositionY; + mPreviousTouchX = (int) event.getX(); + mPreviousTouchY = (int) event.getY(); break; case MotionEvent.ACTION_MOVE: - mControlPositionX += fingerPositionX - mPreviousTouchX; - mControlPositionY += fingerPositionY - mPreviousTouchY; + mControlPositionX += (int) event.getX() - mPreviousTouchX; + mControlPositionY += (int) event.getY() - mPreviousTouchY; setBounds(mControlPositionX, mControlPositionY, getWidth() + mControlPositionX, getHeight() + mControlPositionY); - mPreviousTouchX = fingerPositionX; - mPreviousTouchY = fingerPositionY; + mPreviousTouchX = (int) event.getX(); + mPreviousTouchY = (int) event.getY(); break; } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableDpad.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableDpad.java index ddc7ffd503be..755ed7e2ff9e 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableDpad.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableDpad.java @@ -149,22 +149,19 @@ public int getTrackId() public void onConfigureTouch(MotionEvent event) { - int pointerIndex = event.getActionIndex(); - int fingerPositionX = (int) event.getX(pointerIndex); - int fingerPositionY = (int) event.getY(pointerIndex); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: - mPreviousTouchX = fingerPositionX; - mPreviousTouchY = fingerPositionY; + mPreviousTouchX = (int) event.getX(); + mPreviousTouchY = (int) event.getY(); break; case MotionEvent.ACTION_MOVE: - mControlPositionX += fingerPositionX - mPreviousTouchX; - mControlPositionY += fingerPositionY - mPreviousTouchY; + mControlPositionX += (int) event.getX() - mPreviousTouchX; + mControlPositionY += (int) event.getY() - mPreviousTouchY; setBounds(mControlPositionX, mControlPositionY, getWidth() + mControlPositionX, getHeight() + mControlPositionY); - mPreviousTouchX = fingerPositionX; - mPreviousTouchY = fingerPositionY; + mPreviousTouchX = (int) event.getX(); + mPreviousTouchY = (int) event.getY(); break; } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableJoystick.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableJoystick.java index b4b933f99157..0e4e1f33f5bf 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableJoystick.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableJoystick.java @@ -95,10 +95,13 @@ public void draw(Canvas canvas) public boolean TrackEvent(MotionEvent event) { boolean reCenter = BooleanSetting.MAIN_JOYSTICK_REL_CENTER.getBooleanGlobal(); - int pointerIndex = event.getActionIndex(); + int action = event.getActionMasked(); + boolean firstPointer = action != MotionEvent.ACTION_POINTER_DOWN && + action != MotionEvent.ACTION_POINTER_UP; + int pointerIndex = firstPointer ? 0 : event.getActionIndex(); boolean pressed = false; - switch (event.getAction() & MotionEvent.ACTION_MASK) + switch (action) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_POINTER_DOWN: @@ -163,18 +166,15 @@ public boolean TrackEvent(MotionEvent event) public void onConfigureTouch(MotionEvent event) { - int pointerIndex = event.getActionIndex(); - int fingerPositionX = (int) event.getX(pointerIndex); - int fingerPositionY = (int) event.getY(pointerIndex); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: - mPreviousTouchX = fingerPositionX; - mPreviousTouchY = fingerPositionY; + mPreviousTouchX = (int) event.getX(); + mPreviousTouchY = (int) event.getY(); break; case MotionEvent.ACTION_MOVE: - int deltaX = fingerPositionX - mPreviousTouchX; - int deltaY = fingerPositionY - mPreviousTouchY; + int deltaX = (int) event.getX() - mPreviousTouchX; + int deltaY = (int) event.getY() - mPreviousTouchY; mControlPositionX += deltaX; mControlPositionY += deltaY; setBounds(new Rect(mControlPositionX, mControlPositionY, @@ -187,8 +187,8 @@ public void onConfigureTouch(MotionEvent event) setOrigBounds(new Rect(new Rect(mControlPositionX, mControlPositionY, mOuterBitmap.getIntrinsicWidth() + mControlPositionX, mOuterBitmap.getIntrinsicHeight() + mControlPositionY))); - mPreviousTouchX = fingerPositionX; - mPreviousTouchY = fingerPositionY; + mPreviousTouchX = (int) event.getX(); + mPreviousTouchY = (int) event.getY(); break; } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayPointer.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayPointer.java index c592dbfcd0b9..67f8d23419ec 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayPointer.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayPointer.java @@ -82,9 +82,12 @@ public InputOverlayPointer(Rect surfacePosition, int button, int mode, boolean r public void onTouch(MotionEvent event) { - int pointerIndex = event.getActionIndex(); + int action = event.getActionMasked(); + boolean firstPointer = action != MotionEvent.ACTION_POINTER_DOWN && + action != MotionEvent.ACTION_POINTER_UP; + int pointerIndex = firstPointer ? 0 : event.getActionIndex(); - switch (event.getAction() & MotionEvent.ACTION_MASK) + switch (action) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_POINTER_DOWN: diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/SyncChannelJobService.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/SyncChannelJobService.java index 5e33a852a2c0..48af4e4f4d66 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/SyncChannelJobService.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/SyncChannelJobService.java @@ -129,7 +129,7 @@ private long createChannel(HomeScreenChannel subscription) builder.build().toContentValues()); channelId = ContentUris.parseId(channelUrl); - Bitmap bitmap = TvUtil.convertToBitmap(context, R.drawable.ic_launcher); + Bitmap bitmap = TvUtil.convertToBitmap(context, R.drawable.ic_dolphin); ChannelLogoUtils.storeChannelLogo(context, channelId, bitmap); return channelId; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java index 711f7d36def3..1224fa0397d4 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java @@ -14,7 +14,6 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; -import androidx.lifecycle.ViewModelProvider; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import androidx.viewpager.widget.ViewPager; @@ -28,9 +27,6 @@ import org.dolphinemu.dolphinemu.features.settings.model.NativeConfig; import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag; import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity; -import org.dolphinemu.dolphinemu.features.sysupdate.ui.OnlineUpdateProgressBarDialogFragment; -import org.dolphinemu.dolphinemu.features.sysupdate.ui.SystemMenuNotInstalledDialogFragment; -import org.dolphinemu.dolphinemu.features.sysupdate.ui.SystemUpdateViewModel; import org.dolphinemu.dolphinemu.services.GameFileCacheManager; import org.dolphinemu.dolphinemu.ui.platform.Platform; import org.dolphinemu.dolphinemu.ui.platform.PlatformGamesView; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java index 1923927af802..52423c3da4cc 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java @@ -6,8 +6,8 @@ import android.content.Intent; import android.net.Uri; -import androidx.appcompat.app.AlertDialog; import androidx.activity.ComponentActivity; +import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentActivity; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; @@ -17,7 +17,7 @@ import org.dolphinemu.dolphinemu.activities.EmulationActivity; import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting; import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag; -import org.dolphinemu.dolphinemu.features.sysupdate.ui.OnlineUpdateProgressBarDialogFragment; +import org.dolphinemu.dolphinemu.features.sysupdate.ui.SystemUpdateProgressBarDialogFragment; import org.dolphinemu.dolphinemu.features.sysupdate.ui.SystemMenuNotInstalledDialogFragment; import org.dolphinemu.dolphinemu.features.sysupdate.ui.SystemUpdateViewModel; import org.dolphinemu.dolphinemu.model.GameFileCache; @@ -26,13 +26,13 @@ import org.dolphinemu.dolphinemu.utils.BooleanSupplier; import org.dolphinemu.dolphinemu.utils.CompletableFuture; import org.dolphinemu.dolphinemu.utils.ContentHandler; +import org.dolphinemu.dolphinemu.utils.DirectoryInitialization; import org.dolphinemu.dolphinemu.utils.FileBrowserHelper; import org.dolphinemu.dolphinemu.utils.ThreadUtil; import org.dolphinemu.dolphinemu.utils.WiiUtils; import java.util.Arrays; import java.util.concurrent.ExecutionException; -import java.util.function.Supplier; public final class MainPresenter { @@ -93,7 +93,8 @@ public boolean handleOptionSelection(int itemId, ComponentActivity activity) return true; case R.id.button_add_directory: - mView.launchFileListActivity(); + new AfterDirectoryInitializationRunner().runWithLifecycle(activity, true, + mView::launchFileListActivity); return true; case R.id.menu_open_file: @@ -105,7 +106,8 @@ public boolean handleOptionSelection(int itemId, ComponentActivity activity) return true; case R.id.menu_online_system_update: - launchOnlineUpdate(); + new AfterDirectoryInitializationRunner().runWithLifecycle(activity, true, + this::launchOnlineUpdate); return true; case R.id.menu_install_wad: @@ -281,11 +283,7 @@ private void launchOnlineUpdate() SystemUpdateViewModel viewModel = new ViewModelProvider(mActivity).get(SystemUpdateViewModel.class); viewModel.setRegion(-1); - OnlineUpdateProgressBarDialogFragment progressBarFragment = - new OnlineUpdateProgressBarDialogFragment(); - progressBarFragment - .show(mActivity.getSupportFragmentManager(), "OnlineUpdateProgressBarDialogFragment"); - progressBarFragment.setCancelable(false); + launchUpdateProgressBarFragment(mActivity); } else { @@ -296,20 +294,39 @@ private void launchOnlineUpdate() } } - private void launchWiiSystemMenu() + public static void launchDiscUpdate(String path, FragmentActivity activity) + { + SystemUpdateViewModel viewModel = + new ViewModelProvider(activity).get(SystemUpdateViewModel.class); + viewModel.setDiscPath(path); + launchUpdateProgressBarFragment(activity); + } + + private static void launchUpdateProgressBarFragment(FragmentActivity activity) { - WiiUtils.isSystemMenuInstalled(); + SystemUpdateProgressBarDialogFragment progressBarFragment = + new SystemUpdateProgressBarDialogFragment(); + progressBarFragment + .show(activity.getSupportFragmentManager(), "SystemUpdateProgressBarDialogFragment"); + progressBarFragment.setCancelable(false); + } + private void launchWiiSystemMenu() + { if (WiiUtils.isSystemMenuInstalled()) { EmulationActivity.launchSystemMenu(mActivity); } else { - SystemMenuNotInstalledDialogFragment dialogFragment = - new SystemMenuNotInstalledDialogFragment(); - dialogFragment - .show(mActivity.getSupportFragmentManager(), "SystemMenuNotInstalledDialogFragment"); + new AfterDirectoryInitializationRunner().runWithLifecycle(mActivity, true, () -> + { + SystemMenuNotInstalledDialogFragment dialogFragment = + new SystemMenuNotInstalledDialogFragment(); + dialogFragment + .show(mActivity.getSupportFragmentManager(), + "SystemMenuNotInstalledDialogFragment"); + }); } } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java index 31bb5834718e..d486533c550e 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java @@ -359,7 +359,7 @@ private ListRow buildSettingsRow() ArrayObjectAdapter rowItems = new ArrayObjectAdapter(new SettingsRowPresenter()); rowItems.add(new TvSettingsItem(R.id.menu_settings, - R.drawable.ic_settings_tv, + R.drawable.ic_settings, R.string.grid_menu_settings)); rowItems.add(new TvSettingsItem(R.id.button_add_directory, @@ -367,7 +367,7 @@ private ListRow buildSettingsRow() R.string.add_directory_title)); rowItems.add(new TvSettingsItem(R.id.menu_refresh, - R.drawable.ic_refresh_tv, + R.drawable.ic_refresh, R.string.grid_menu_refresh)); rowItems.add(new TvSettingsItem(R.id.menu_open_file, diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/PlatformGamesView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/PlatformGamesView.java index 803e680615d1..a728408d7039 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/PlatformGamesView.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/PlatformGamesView.java @@ -2,9 +2,6 @@ package org.dolphinemu.dolphinemu.ui.platform; -import androidx.annotation.Nullable; -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; - /** * Abstraction for a screen representing a single platform's games. */ diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AlertDialogItemsBuilder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AlertDialogItemsBuilder.java index 54282d896304..8a357ff7a258 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AlertDialogItemsBuilder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AlertDialogItemsBuilder.java @@ -2,11 +2,11 @@ package org.dolphinemu.dolphinemu.utils; -import androidx.appcompat.app.AlertDialog; - import android.content.Context; import android.content.DialogInterface.OnClickListener; +import androidx.appcompat.app.AlertDialog; + import java.util.ArrayList; public class AlertDialogItemsBuilder diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ContentHandler.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ContentHandler.java index e903dc8ef6dd..c90c26696380 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ContentHandler.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ContentHandler.java @@ -8,11 +8,10 @@ import android.provider.DocumentsContract; import android.provider.DocumentsContract.Document; +import androidx.annotation.Keep; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.Keep; - import org.dolphinemu.dolphinemu.DolphinApplication; import java.io.FileNotFoundException; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java index 02352fdb4f1d..56ade14623d6 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java @@ -55,8 +55,7 @@ public static void start(Context context) directoryState.setValue(DirectoryInitializationState.INITIALIZING); // Can take a few seconds to run, so don't block UI thread. - //noinspection TrivialFunctionalExpressionUsage - ((Runnable) () -> init(context)).run(); + new Thread(() -> init(context)).start(); } private static void init(Context context) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/NetworkHelper.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/NetworkHelper.java index a9641937034b..380abc949e14 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/NetworkHelper.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/NetworkHelper.java @@ -19,7 +19,6 @@ import java.net.Inet4Address; import java.net.InetAddress; import java.net.UnknownHostException; -import java.util.List; public class NetworkHelper { diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/WiiUtils.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/WiiUtils.java index 42e11a67c01d..44103f7483d6 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/WiiUtils.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/WiiUtils.java @@ -28,6 +28,8 @@ public final class WiiUtils public static native int doOnlineUpdate(String region, WiiUpdateCallback callback); + public static native int doDiscUpdate(String path, WiiUpdateCallback callback); + public static native boolean isSystemMenuInstalled(); public static native String getSystemMenuVersion(); diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_add.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_add.png deleted file mode 100644 index 4006b497cace..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-hdpi/ic_add.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_launcher.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_dolphin.png similarity index 100% rename from Source/Android/app/src/main/res/drawable-hdpi/ic_launcher.png rename to Source/Android/app/src/main/res/drawable-hdpi/ic_dolphin.png diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_folder.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_folder.png deleted file mode 100644 index f7f540e22b6c..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-hdpi/ic_folder.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_gamecube.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_gamecube.png deleted file mode 100644 index a22978c4d9af..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-hdpi/ic_gamecube.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_play.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_play.png deleted file mode 100644 index eaf8e908da44..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-hdpi/ic_play.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_quickload.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_quickload.png deleted file mode 100644 index ffac12458466..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-hdpi/ic_quickload.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_quicksave.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_quicksave.png deleted file mode 100644 index 71f99767c306..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-hdpi/ic_quicksave.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_refresh.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_refresh.png deleted file mode 100644 index ffac12458466..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-hdpi/ic_refresh.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_screenshot.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_screenshot.png deleted file mode 100644 index f93c09e4ccee..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-hdpi/ic_screenshot.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_settings.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_settings.png deleted file mode 100644 index 9059e0021a81..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-hdpi/ic_settings.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_wii.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_wii.png deleted file mode 100644 index caf49dbbf37a..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-hdpi/ic_wii.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-mdpi/ic_quickload.png b/Source/Android/app/src/main/res/drawable-mdpi/ic_quickload.png deleted file mode 100644 index f2bf47306ace..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-mdpi/ic_quickload.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-mdpi/ic_quicksave.png b/Source/Android/app/src/main/res/drawable-mdpi/ic_quicksave.png deleted file mode 100644 index 2481f79f0032..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-mdpi/ic_quicksave.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-mdpi/ic_screenshot.png b/Source/Android/app/src/main/res/drawable-mdpi/ic_screenshot.png deleted file mode 100644 index f929d012c5f7..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-mdpi/ic_screenshot.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xhdpi/ic_add.png b/Source/Android/app/src/main/res/drawable-xhdpi/ic_add.png deleted file mode 100644 index eb6e9be684c6..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xhdpi/ic_add.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xhdpi/ic_launcher.png b/Source/Android/app/src/main/res/drawable-xhdpi/ic_dolphin.png similarity index 100% rename from Source/Android/app/src/main/res/drawable-xhdpi/ic_launcher.png rename to Source/Android/app/src/main/res/drawable-xhdpi/ic_dolphin.png diff --git a/Source/Android/app/src/main/res/drawable-xhdpi/ic_folder.png b/Source/Android/app/src/main/res/drawable-xhdpi/ic_folder.png deleted file mode 100644 index 1dfae07fdaf1..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xhdpi/ic_folder.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xhdpi/ic_gamecube.png b/Source/Android/app/src/main/res/drawable-xhdpi/ic_gamecube.png deleted file mode 100644 index bedd22534ae2..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xhdpi/ic_gamecube.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xhdpi/ic_play.png b/Source/Android/app/src/main/res/drawable-xhdpi/ic_play.png deleted file mode 100644 index 4a3a6a8cfcaa..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xhdpi/ic_play.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xhdpi/ic_quickload.png b/Source/Android/app/src/main/res/drawable-xhdpi/ic_quickload.png deleted file mode 100644 index 8f8b3743f665..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xhdpi/ic_quickload.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xhdpi/ic_quicksave.png b/Source/Android/app/src/main/res/drawable-xhdpi/ic_quicksave.png deleted file mode 100644 index 230428c36783..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xhdpi/ic_quicksave.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xhdpi/ic_refresh.png b/Source/Android/app/src/main/res/drawable-xhdpi/ic_refresh.png deleted file mode 100644 index 8f8b3743f665..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xhdpi/ic_refresh.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xhdpi/ic_screenshot.png b/Source/Android/app/src/main/res/drawable-xhdpi/ic_screenshot.png deleted file mode 100644 index ae19dd411219..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xhdpi/ic_screenshot.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xhdpi/ic_settings.png b/Source/Android/app/src/main/res/drawable-xhdpi/ic_settings.png deleted file mode 100644 index 307389f32097..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xhdpi/ic_settings.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xhdpi/ic_wii.png b/Source/Android/app/src/main/res/drawable-xhdpi/ic_wii.png deleted file mode 100644 index 3776ff52fe4c..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xhdpi/ic_wii.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_add.png b/Source/Android/app/src/main/res/drawable-xxhdpi/ic_add.png deleted file mode 100644 index a82ed8194061..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_add.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_launcher.png b/Source/Android/app/src/main/res/drawable-xxhdpi/ic_dolphin.png similarity index 100% rename from Source/Android/app/src/main/res/drawable-xxhdpi/ic_launcher.png rename to Source/Android/app/src/main/res/drawable-xxhdpi/ic_dolphin.png diff --git a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_folder.png b/Source/Android/app/src/main/res/drawable-xxhdpi/ic_folder.png deleted file mode 100644 index 309864a2a103..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_folder.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_gamecube.png b/Source/Android/app/src/main/res/drawable-xxhdpi/ic_gamecube.png deleted file mode 100644 index e0313db13674..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_gamecube.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_play.png b/Source/Android/app/src/main/res/drawable-xxhdpi/ic_play.png deleted file mode 100644 index 5131eea839c0..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_play.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_quickload.png b/Source/Android/app/src/main/res/drawable-xxhdpi/ic_quickload.png deleted file mode 100644 index 0ec259b83536..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_quickload.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_quicksave.png b/Source/Android/app/src/main/res/drawable-xxhdpi/ic_quicksave.png deleted file mode 100644 index d60937caafaa..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_quicksave.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_refresh.png b/Source/Android/app/src/main/res/drawable-xxhdpi/ic_refresh.png deleted file mode 100644 index 0ec259b83536..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_refresh.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_screenshot.png b/Source/Android/app/src/main/res/drawable-xxhdpi/ic_screenshot.png deleted file mode 100644 index 1fe0b70f1fe0..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_screenshot.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_settings.png b/Source/Android/app/src/main/res/drawable-xxhdpi/ic_settings.png deleted file mode 100644 index 45d855b496b4..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_settings.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_wii.png b/Source/Android/app/src/main/res/drawable-xxhdpi/ic_wii.png deleted file mode 100644 index 7a8dfe007ef1..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_wii.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_add.png b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_add.png deleted file mode 100644 index 21e9f6e09fbe..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_add.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_folder.png b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_folder.png deleted file mode 100644 index df3fb04514c3..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_folder.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_gamecube.png b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_gamecube.png deleted file mode 100644 index 3ed299e0a77b..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_gamecube.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_play.png b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_play.png deleted file mode 100644 index 18b7ebc7d950..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_play.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_quickload.png b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_quickload.png deleted file mode 100644 index af689bf9eaf0..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_quickload.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_quicksave.png b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_quicksave.png deleted file mode 100644 index 5c71725d9e1d..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_quicksave.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_refresh.png b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_refresh.png deleted file mode 100644 index af689bf9eaf0..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_refresh.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_screenshot.png b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_screenshot.png deleted file mode 100644 index f9eaa0d2e4e7..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_screenshot.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_settings.png b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_settings.png deleted file mode 100644 index 46180dd6f35b..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_settings.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_wii.png b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_wii.png deleted file mode 100644 index 996cecf6563d..000000000000 Binary files a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_wii.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable/ic_add.xml b/Source/Android/app/src/main/res/drawable/ic_add.xml new file mode 100644 index 000000000000..bdd99f48d5ef --- /dev/null +++ b/Source/Android/app/src/main/res/drawable/ic_add.xml @@ -0,0 +1,9 @@ + + + diff --git a/Source/Android/app/src/main/res/drawable/ic_add_tv.png b/Source/Android/app/src/main/res/drawable/ic_add_tv.png deleted file mode 100644 index 77f0b3aeec3a..000000000000 Binary files a/Source/Android/app/src/main/res/drawable/ic_add_tv.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable/ic_add_tv.xml b/Source/Android/app/src/main/res/drawable/ic_add_tv.xml new file mode 100644 index 000000000000..76b80f814cb0 --- /dev/null +++ b/Source/Android/app/src/main/res/drawable/ic_add_tv.xml @@ -0,0 +1,9 @@ + + + diff --git a/Source/Android/app/src/main/res/drawable/ic_back.xml b/Source/Android/app/src/main/res/drawable/ic_back.xml new file mode 100644 index 000000000000..45a504f2275d --- /dev/null +++ b/Source/Android/app/src/main/res/drawable/ic_back.xml @@ -0,0 +1,9 @@ + + + diff --git a/Source/Android/app/src/main/res/drawable/ic_folder.xml b/Source/Android/app/src/main/res/drawable/ic_folder.xml new file mode 100644 index 000000000000..c66a174f4b2c --- /dev/null +++ b/Source/Android/app/src/main/res/drawable/ic_folder.xml @@ -0,0 +1,9 @@ + + + diff --git a/Source/Android/app/src/main/res/drawable/ic_gamecube.xml b/Source/Android/app/src/main/res/drawable/ic_gamecube.xml new file mode 100644 index 000000000000..48f7d23a9521 --- /dev/null +++ b/Source/Android/app/src/main/res/drawable/ic_gamecube.xml @@ -0,0 +1,16 @@ + + + + + + + diff --git a/Source/Android/app/src/main/res/drawable/ic_play.xml b/Source/Android/app/src/main/res/drawable/ic_play.xml new file mode 100644 index 000000000000..8986c1d045fe --- /dev/null +++ b/Source/Android/app/src/main/res/drawable/ic_play.xml @@ -0,0 +1,9 @@ + + + diff --git a/Source/Android/app/src/main/res/drawable/ic_quicksave.xml b/Source/Android/app/src/main/res/drawable/ic_quicksave.xml new file mode 100644 index 000000000000..aa71b08c0064 --- /dev/null +++ b/Source/Android/app/src/main/res/drawable/ic_quicksave.xml @@ -0,0 +1,9 @@ + + + diff --git a/Source/Android/app/src/main/res/drawable/ic_refresh.xml b/Source/Android/app/src/main/res/drawable/ic_refresh.xml new file mode 100644 index 000000000000..5ab492cabebf --- /dev/null +++ b/Source/Android/app/src/main/res/drawable/ic_refresh.xml @@ -0,0 +1,9 @@ + + + diff --git a/Source/Android/app/src/main/res/drawable/ic_refresh_tv.png b/Source/Android/app/src/main/res/drawable/ic_refresh_tv.png deleted file mode 100644 index d9a7b69a08b9..000000000000 Binary files a/Source/Android/app/src/main/res/drawable/ic_refresh_tv.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable/ic_screenshot.xml b/Source/Android/app/src/main/res/drawable/ic_screenshot.xml new file mode 100644 index 000000000000..5b075cd027e3 --- /dev/null +++ b/Source/Android/app/src/main/res/drawable/ic_screenshot.xml @@ -0,0 +1,12 @@ + + + + diff --git a/Source/Android/app/src/main/res/drawable/ic_settings.xml b/Source/Android/app/src/main/res/drawable/ic_settings.xml new file mode 100644 index 000000000000..b86b554dff80 --- /dev/null +++ b/Source/Android/app/src/main/res/drawable/ic_settings.xml @@ -0,0 +1,9 @@ + + + diff --git a/Source/Android/app/src/main/res/drawable/ic_settings_tv.png b/Source/Android/app/src/main/res/drawable/ic_settings_tv.png deleted file mode 100644 index 46180dd6f35b..000000000000 Binary files a/Source/Android/app/src/main/res/drawable/ic_settings_tv.png and /dev/null differ diff --git a/Source/Android/app/src/main/res/drawable/ic_wii.xml b/Source/Android/app/src/main/res/drawable/ic_wii.xml new file mode 100644 index 000000000000..3efe3227dbce --- /dev/null +++ b/Source/Android/app/src/main/res/drawable/ic_wii.xml @@ -0,0 +1,17 @@ + + + + + + + diff --git a/Source/Android/app/src/main/res/layout/card_game.xml b/Source/Android/app/src/main/res/layout/card_game.xml index 777a597e0c7b..fe807f2af181 100644 --- a/Source/Android/app/src/main/res/layout/card_game.xml +++ b/Source/Android/app/src/main/res/layout/card_game.xml @@ -1,55 +1,61 @@ - + - + android:layout_height="159dp" + android:layout_gravity="center" + app:cardCornerRadius="4dp" + tools:layout_width="140dp"> + tools:scaleType="centerCrop" + tools:src="@drawable/placeholder_screenshot" /> + - + - - - - - + + diff --git a/Source/Android/app/src/main/res/layout/fragment_grid.xml b/Source/Android/app/src/main/res/layout/fragment_grid.xml index adedbed4c071..5c44cbcb5ed9 100644 --- a/Source/Android/app/src/main/res/layout/fragment_grid.xml +++ b/Source/Android/app/src/main/res/layout/fragment_grid.xml @@ -15,7 +15,10 @@ android:id="@+id/grid_games" android:layout_width="match_parent" android:layout_height="match_parent" - tools:listitem="@layout/card_game"/> + tools:listitem="@layout/card_game" + android:clipToPadding="false" + android:paddingTop="8dp" + android:paddingBottom="8dp"/> diff --git a/Source/Android/app/src/main/res/layout/fragment_ingame_menu.xml b/Source/Android/app/src/main/res/layout/fragment_ingame_menu.xml index 04e996bfda79..898adf617980 100644 --- a/Source/Android/app/src/main/res/layout/fragment_ingame_menu.xml +++ b/Source/Android/app/src/main/res/layout/fragment_ingame_menu.xml @@ -27,7 +27,8 @@ android:layout_height="0dp" android:layout_weight="1" android:scrollbarSize="8dp" - android:fadeScrollbars="false"> + android:fadeScrollbars="false" + android:theme="@style/InGameScrollView">